Built motion from commit 456a2f57.|2.6.10
authorsupport <support@xcally.com>
Thu, 19 May 2022 14:14:02 +0000 (14:14 +0000)
committersupport <support@xcally.com>
Thu, 19 May 2022 14:14:02 +0000 (14:14 +0000)
1226 files changed:
apidoc/api_project.js
apidoc/api_project.json
public/app/errors/404/i18n/et.json
public/app/errors/500/i18n/et.json
public/app/footer/i18n/et.json
public/app/forgot/i18n/et.json
public/app/header/i18n/et.json
public/app/login/i18n/et.json
public/app/main/apps/analytics/i18n/et.json
public/app/main/apps/callysquare/i18n/et.json
public/app/main/apps/chat/i18n/et.json
public/app/main/apps/contactmanager/i18n/et.json
public/app/main/apps/dashboards/i18n/et.json
public/app/main/apps/fax/i18n/et.json
public/app/main/apps/help/i18n/et.json
public/app/main/apps/integrations/i18n/et.json
public/app/main/apps/jscripty/i18n/et.json
public/app/main/apps/mail/i18n/et.json
public/app/main/apps/marketplace/i18n/et.json
public/app/main/apps/motiondialer/i18n/et.json
public/app/main/apps/openchannel/i18n/et.json
public/app/main/apps/plugins/i18n/et.json
public/app/main/apps/settings/i18n/et.json
public/app/main/apps/sms/i18n/et.json
public/app/main/apps/staff/i18n/et.json
public/app/main/apps/tools/i18n/et.json
public/app/main/apps/video/i18n/et.json
public/app/main/apps/voice/i18n/et.json
public/app/main/apps/whatsapp/i18n/et.json
public/app/quick-panel/i18n/et.json
public/app/reset/i18n/et.json
public/index.html
public/scripts/app.eda3ad8b.js [moved from public/scripts/app.d44c05b7.js with 54% 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/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/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/action.js
server/services/ami/dialer/agentComplete.js
server/services/ami/dialer/final.js
server/services/ami/dialer/hangup.js
server/services/ami/dialer/history.js
server/services/ami/dialer/index.js
server/services/ami/dialer/queueCallerAbandon.js
server/services/ami/fax/action.js
server/services/ami/fax/index.js
server/services/ami/fax/rpcDb.js
server/services/ami/fax/util/gs.js
server/services/ami/fax/util/util.js
server/services/ami/index.js
server/services/ami/model/agent.js
server/services/ami/model/campaign.js
server/services/ami/model/channel.js
server/services/ami/model/deskAccount.js
server/services/ami/model/dynamics365Account.js
server/services/ami/model/faxAccount.js
server/services/ami/model/freshdeskAccount.js
server/services/ami/model/freshsalesAccount.js
server/services/ami/model/queueReport.js
server/services/ami/model/salesforceAccount.js
server/services/ami/model/servicenowAccount.js
server/services/ami/model/sugarcrmAccount.js
server/services/ami/model/telephone.js
server/services/ami/model/template.js
server/services/ami/model/trigger.js
server/services/ami/model/trunk.js
server/services/ami/model/voiceExtension.js
server/services/ami/model/voiceQueue.js
server/services/ami/model/vtigerAccount.js
server/services/ami/model/zendeskAccount.js
server/services/ami/model/zohoAccount.js
server/services/ami/preview/action.js
server/services/ami/preview/index.js
server/services/ami/preview/rpcDb.js
server/services/ami/preview/util/util.js
server/services/ami/properties.js
server/services/ami/realtime/index.js
server/services/ami/report/index.js
server/services/ami/report/userReport.js
server/services/ami/report/voiceAgentReport.js
server/services/ami/report/voiceCallReport.js
server/services/ami/report/voiceDialReport.js
server/services/ami/report/voiceQueueReport.js
server/services/ami/rpc/agentReportPreview.js
server/services/ami/rpc/attachment.js
server/services/ami/rpc/campaign.js
server/services/ami/rpc/cmContact.js
server/services/ami/rpc/cmHopper.js
server/services/ami/rpc/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/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/loggers.js
server/utils/mask-sensitive-data.js
server/utils/safe-template.js

index 37f3e7e..aa9e254 100644 (file)
@@ -17,7 +17,7 @@ define({
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2022-05-19T08:21:25.717Z",
+    "time": "2022-05-19T14:06:14.645Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 4f8facf..3d06f04 100644 (file)
@@ -17,7 +17,7 @@
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2022-05-19T08:21:25.717Z",
+    "time": "2022-05-19T14:06:14.645Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index b061703..729f936 100644 (file)
@@ -1,8 +1,8 @@
 {
   "ERROR404": {
     "CODE": "404",
-    "MESSAGE": "Sorry but we couldn’t find the page you are looking for",
-    "SEARCH": "Search for anything",
-    "GO_BACK": "Go back to dashboard"
+    "MESSAGE": "Vabandame, otsitud lehekülge ei leitud",
+    "SEARCH": "Otsi mida tahes",
+    "GO_BACK": "Mine tagasi töölauale"
   }
 }
index b218b70..eb1d0e2 100644 (file)
@@ -1,11 +1,11 @@
 {
   "ERROR500": {
     "CODE": "500",
-    "MESSAGE": "Well, you broke the internet!",
-    "SUBMESSAGE": "Just kidding, looks like we have an internal issue, please try again in couple minutes",
-    "REPORT": "Report this problem",
-    "JIRA_MESSAGE": "Your request has been received and will be processed shortly.",
-    "JIRA_SUBMESSAGE": "Sorry for the inconvenience. If you have any questions or concerns, please do not hesitate to contact us.",
-    "GO_BACK": "Go back to dashboard"
+    "MESSAGE": "Nonii, oled interneti katki teinud!",
+    "SUBMESSAGE": "Teeme lihtsalt nalja, tundub, et meil on sisemine tõrge, palun proovi paari minuti pärast uuesti",
+    "REPORT": "Teata sellest probleemist",
+    "JIRA_MESSAGE": "Sinu päring on kohale toimetatud ja sellega tegeletakse peagi.",
+    "JIRA_SUBMESSAGE": "Vabandame ebamugavuste pärast. Küsimuste korral palun võta meiega kontakti.",
+    "GO_BACK": "Mine tagasi töölauale"
   }
 }
index 8a47415..ee6d003 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
-    "COOKIE_LAW": "We use cookies to give you the best experience. Read our <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\">cookie policy</a>.",
+    "COOKIE_LAW": "Kasutame küpsiseid, et pakkuda Sulle parimat kogemust. Loe meie <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\">cookie policy</a>.",
     "ERRORS": {}
   }
 }
index be7b81a..dc70b81 100644 (file)
@@ -1,15 +1,15 @@
 {
   "FORGOTPASSWORD": {
-    "TITLE": "Recover your password",
-    "EMAIL_ADRESS": "Email address",
-    "SEND_RESET_LINK": "SEND RESET LINK",
-    "GO_BACK": "Go back to login",
-    "LINK_SENT": "Link Sent",
-    "LINNK_SENT_MESSAGE": "An email containing a link to reset your password has been sent to your address!",
-    "PASSWORD_RESET_ERROR": "Password Reset Error",
+    "TITLE": "Taasta oma parool",
+    "EMAIL_ADRESS": "E-posti aadress",
+    "SEND_RESET_LINK": "SAADA LÄHTESTAMISE LINK",
+    "GO_BACK": "Mine tagasi sisse logima",
+    "LINK_SENT": "Link saadetud",
+    "LINNK_SENT_MESSAGE": "Sulle on saadetud e-kiri, mis sisaldab Sinu parooli lähtestamise linki!",
+    "PASSWORD_RESET_ERROR": "Parooli Lähtestamise Viga",
     "ERRORS": {
-      "EMAIL_REQUIRED": "Mandatory field",
-      "EMAIL_MUST_VALID": "Wrong format"
+      "EMAIL_REQUIRED": "Kohustuslik väli",
+      "EMAIL_MUST_VALID": "Vale formaat"
     }
   }
 }
index f78785b..1f1d597 100644 (file)
@@ -1,6 +1,6 @@
 {
   "HEADER": {
-    "NEWS": "Please visit our <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV\" class=\"blue-100-fg\">Wiki</a> to discover the new cool features available on XCALLY.",
+    "NEWS": "Palun külasta meie <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV\" class=\"blue-100-fg\">Wiki</a>, et avastada uusi ägedaid funktsioone, mida pakub XCALLY.",
     "ERRORS": {}
   }
 }
index e371b06..4eb3084 100644 (file)
@@ -1,26 +1,26 @@
 {
   "LOGIN": {
-    "TELEPHONES": "Telephones",
-    "SELECT": "Select",
-    "CANCEL": "Cancel",
-    "TITLE": "Log in to your account",
-    "EMAIL": "Email",
-    "USERNAME": "Username",
-    "PASSWORD": "Password",
-    "REMEMBER_ME": "Remember Me",
-    "FORGOT_PASSWORD": "Forgot Password?",
-    "LOG_IN": "LOG IN",
-    "OR": "OR",
-    "WITH_GOOGLE": "Log in with Google",
-    "WITH_FACEBOOK": "Log in with Facebook",
-    "DONT_HAVE_ACCOUNT": "No account?",
-    "CREATE_ACCOUNT": "Create an account",
+    "TELEPHONES": "Telefonid",
+    "SELECT": "Vali",
+    "CANCEL": "Tühista",
+    "TITLE": "Logi sisse oma kontole",
+    "EMAIL": "E-post",
+    "USERNAME": "Kasutajanimi",
+    "PASSWORD": "Parool",
+    "REMEMBER_ME": "Pea mind meeles",
+    "FORGOT_PASSWORD": "Unustasid Parooli?",
+    "LOG_IN": "LOGI SISSE",
+    "OR": "VÕI",
+    "WITH_GOOGLE": "Logi sisse Google kontoga",
+    "WITH_FACEBOOK": "Logi sisse Facebooki kontoga",
+    "DONT_HAVE_ACCOUNT": "Konto puudub?",
+    "CREATE_ACCOUNT": "Loo konto",
     "ERRORS": {
-      "EMAIL_REQUIRED": "Mandatory field",
-      "EMAIL_MUST_VALID": "Wrong format",
-      "PASSWORD_REQUIRED": "Mandatory field",
-      "USERNAME_REQUIRED": "Mandatory field"
+      "EMAIL_REQUIRED": "Kohustuslik väli",
+      "EMAIL_MUST_VALID": "Vale formaat",
+      "PASSWORD_REQUIRED": "Kohustuslik väli",
+      "USERNAME_REQUIRED": "Kohustuslik väli"
     },
-    "WITH_AD": "Logige sisse Active Directoryga"
+    "WITH_AD": "Logi sisse Active Directory kontoga"
   }
 }
index 6d01d84..8d3f3e2 100644 (file)
@@ -1,88 +1,88 @@
 {
   "ANALYTICS": {
-    "SEND_IF_EMPTY": "Send if empty",
-    "REPORTNAME": "Report Name",
-    "DELETE": "Delete",
-    "NAME": "Name",
-    "ANALYTICS": "Analytics",
-    "METRICS": "Metrics",
-    "ID": "Id",
-    "TABLE": "Table",
-    "DESCRIPTION": "Description",
-    "SEARCH_FOR_ANYONE": "Search",
-    "METRIC": "Metric",
+    "SEND_IF_EMPTY": "Saada tühjana",
+    "REPORTNAME": "Aruande Nimi",
+    "DELETE": "Kustuta",
+    "NAME": "Nimi",
+    "ANALYTICS": "Analüüs",
+    "METRICS": "Mõõdik",
+    "ID": "ID",
+    "TABLE": "Tabel",
+    "DESCRIPTION": "Kirjeldus",
+    "SEARCH_FOR_ANYONE": "Otsi",
+    "METRIC": "Mõõdik",
     "ERRORS": {
-      "NAME_REQUIRED": "Mandatory field",
-      "METRIC_REQUIRED": "Mandatory field",
-      "COLUMN_REQUIRED": "Mandatory field",
-      "VALUE_REQUIRED": "Mandatory field",
-      "CUSTOM_METRIC_REQUIRED": "Mandatory field",
-      "ALIAS_REQUIRED": "Mandatory field"
+      "NAME_REQUIRED": "Kohustuslik väli",
+      "METRIC_REQUIRED": "Kohustuslik väli",
+      "COLUMN_REQUIRED": "Kohustuslik väli",
+      "VALUE_REQUIRED": "Kohustuslik väli",
+      "CUSTOM_METRIC_REQUIRED": "Kohustuslik väli",
+      "ALIAS_REQUIRED": "Kohustuslik väli"
     },
-    "NEW_METRIC": "New Metric",
-    "ADD_METRIC": "Add Metric",
-    "EDIT_METRIC": "Edit Metric",
-    "DELETE_METRIC": "Delete Metric",
-    "SAVE": "Save",
-    "BACK": "Back",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "TYPE": "Type",
-    "EXTRACTEDREPORTS": "Extracted Reports",
-    "DATE_RANGE_FROM": "Date Range From",
-    "DATE_RANGE_TO": "Date Range To",
-    "GENERATED_AT": "Generated At",
-    "STATUS": "Status",
-    "OUTPUT": "Output",
-    "REPORTS": "Reports",
-    "SEARCH_FOR_FOLDER": "Search for folder",
-    "CREATED_AT": "Created At",
-    "NEW_REPORT": "New Report",
-    "ADD_REPORT": "Add Report",
-    "COPY_REPORT": "Copy Report",
-    "PREVIEW_REPORT": "Preview Report",
-    "RUN_REPORT": "Run Report",
-    "DOWNLOAD_JSON_REPORT": "Export Report JSON",
-    "EDIT_REPORT": "Edit Report",
-    "DELETE_REPORT": "Delete Report",
-    "CREATE": "Create Folder",
-    "RENAME": "Rename Folder",
-    "REMOVE": "Remove Folder",
-    "SELECT_NODE": "Select Folder",
-    "ERROR": "Error",
-    "QUERY_ERROR": "Query Error",
-    "MESSAGE": "Message",
-    "CLOSE": "Close",
-    "FORMAT": "Format",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
-    "FIELDS": "Fields",
-    "CONDITION": "Condition",
-    "OPERATOR": "Operator",
-    "GROUP": "Group",
-    "COLUMN": "Column",
-    "VALUE": "Value",
-    "PREVIEW": "Preview",
-    "LIMITED_RESULT": "*Limited Results",
-    "NO_DATA": "No data results",
-    "CONDITIONS": "Conditions",
-    "ALIAS": "Alias",
-    "FUNCTION": "Function",
-    "GROUP_BY": "Group By",
-    "ORDER_BY": "Order By",
-    "ADD_REPORTFIELD": "Add Field",
-    "EDIT_REPORTFIELD": "Edit Field",
-    "DELETE_REPORTFIELD": "Delete Field",
-    "METRIC_NAME": "Metric",
-    "NO_METRIC_FOUND": "No metric found",
-    "NO_AVAILABLE_INFO": "No available info",
-    "CUSTOM_METRIC": "Custom Metric",
-    "DELETE_EXTRACTEDREPORT": "Delete Extracted Report",
-    "EDIT_EXTRACTEDREPORT": "Edit Extracted Report",
-    "DOWNLOAD_EXTRACTEDREPORT": "Download Extracted Report",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "NEW_METRIC": "Uus Mõõdik",
+    "ADD_METRIC": "Lisa Mõõdik",
+    "EDIT_METRIC": "Redigeeri Mõõdikut",
+    "DELETE_METRIC": "Kustuta Mõõdik",
+    "SAVE": "Salvesta",
+    "BACK": "Tagasi",
+    "SELECTED": "Valitud",
+    "SELECT_ALL": "Vali Kõik",
+    "SELECT_NONE": "Ära vali Midagi",
+    "TYPE": "Tüüp",
+    "EXTRACTEDREPORTS": "Ekstraktitud Aruanded",
+    "DATE_RANGE_FROM": "Kuupäevavahemik Alates",
+    "DATE_RANGE_TO": "Kuupäevavahemik Kuni",
+    "GENERATED_AT": "Loomisaeg",
+    "STATUS": "Staatus",
+    "OUTPUT": "Väljund",
+    "REPORTS": "Aruanded",
+    "SEARCH_FOR_FOLDER": "Otsi kausta",
+    "CREATED_AT": "Loomisaeg",
+    "NEW_REPORT": "Uus Aruanne",
+    "ADD_REPORT": "Lisa Aruanne",
+    "COPY_REPORT": "Kopeeri Aruanne",
+    "PREVIEW_REPORT": "Kuva Aruande eelvaade",
+    "RUN_REPORT": "Käivita Aruanne",
+    "DOWNLOAD_JSON_REPORT": "Ekspordi Aruanne JSON",
+    "EDIT_REPORT": "Redigeeri Aruannet",
+    "DELETE_REPORT": "Kustuta Aruanne",
+    "CREATE": "Loo Kaust",
+    "RENAME": "Nimeta Kaust ümber",
+    "REMOVE": "Eemalda Kaust",
+    "SELECT_NODE": "Vali Kaust",
+    "ERROR": "Viga",
+    "QUERY_ERROR": "Päringu Tõrge",
+    "MESSAGE": "Sõnum",
+    "CLOSE": "Sule",
+    "FORMAT": "Vorming",
+    "SETTINGS": "Sätted",
+    "GENERAL": "Üldine",
+    "FIELDS": "Väljad",
+    "CONDITION": "Tingimus",
+    "OPERATOR": "Operaator",
+    "GROUP": "Rühm",
+    "COLUMN": "Veerg",
+    "VALUE": "Väärtus",
+    "PREVIEW": "Eelvaade",
+    "LIMITED_RESULT": "*Piiratud Tulemused",
+    "NO_DATA": "Andmete tulemid puuduvad",
+    "CONDITIONS": "Tingimused",
+    "ALIAS": "Pseudonüüm",
+    "FUNCTION": "Funktsioon",
+    "GROUP_BY": "Rühmita Vastavalt",
+    "ORDER_BY": "Telli Vastavalt",
+    "ADD_REPORTFIELD": "Lisa Väli",
+    "EDIT_REPORTFIELD": "Redigeeri Välja",
+    "DELETE_REPORTFIELD": "Kustuta Väli",
+    "METRIC_NAME": "Mõõdik",
+    "NO_METRIC_FOUND": "Mõõdikuid ei leitud",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "CUSTOM_METRIC": "Kohandatud Mõõdik",
+    "DELETE_EXTRACTEDREPORT": "Kustuta Ekstraktitud Aruanne",
+    "EDIT_EXTRACTEDREPORT": "Redigeeri Ekstraktitud Aruannet",
+    "DOWNLOAD_EXTRACTEDREPORT": "Laadi alla Ekstraktitud Aruanne",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "OF": "of",
     "WEB_REPORT": "Veebiaruanne"
   }
index 8b74f11..2389db1 100644 (file)
 {
   "CALLYSQUARE": {
-    "ACCOUNT_ID": "Account",
-    "ADDUSER_PROJECTS": "Add Users to Project",
-    "ADD_ODBC": "Add ODBC",
-    "ADD_PROJECT": "Add Project",
-    "ADD_VARIABLE": "Add Variable",
-    "AGENTS": "Agents",
+    "ACCOUNT_ID": "Konto",
+    "ADDUSER_PROJECTS": "Lisa Kasutajad Projekti",
+    "ADD_ODBC": "Lisa ODBC",
+    "ADD_PROJECT": "Lisa Projekt",
+    "ADD_VARIABLE": "Lisa Muutuja",
+    "AGENTS": "Agendid",
     "AGI": "AGI",
-    "ALL_USERS": "All Users",
-    "ANSWER": "Answer",
-    "APIKEY": "ApiKey",
-    "APPID": "App ID",
-    "APPLICATION": "Application",
-    "APPSECRET": "App Secret",
-    "ARGS": "Arguments",
-    "ATTACHMENT_NAME": "Attachment Name",
-    "ATTACHMENT_PATH": "Attachment Path",
-    "ATTACHMENT_TYPE": "Attachment Type",
+    "ALL_USERS": "Kõik Kasutajad",
+    "ANSWER": "Vastus",
+    "APIKEY": "API võti",
+    "APPID": "Rakenduse ID",
+    "Rakendus": "Avaldus",
+    "APPSECRET": "Rakenduse Saladus",
+    "ARGS": "Argumendid",
+    "ATTACHMENT_NAME": "Manuse Nimi",
+    "ATTACHMENT_PATH": "Manuse Tee",
+    "ATTACHMENT_TYPE": "Manuse Tüüp",
     "AUDIO": "Audio",
     "AUDIOENCODING": "Heli kodeerimine",
     "AWSLEX": "Amazon Lex",
-    "AWSPOLLY": "AWS Polly",
-    "AWS_ACCESS_KEY_ID": "Access Key ID",
-    "AWS_BOT_NAME": "Bot name",
-    "AWS_LEX_REGION": "Region",
-    "AWS_POLLY_REGION": "Region",
-    "AWS_POLLY_VOICE": "Voice",
-    "AWS_SECRET_ACCESS_KEY": "Secret Access Key",
-    "AWS_TEXT_TYPE": "Text type",
-    "BACK": "Back",
+    "AWS_ACCESS_KEY_ID": "Pääsuvõtme ID",
+    "AWS_BOT_NAME": "Boti nimi",
+    "AWS_LEX_REGION": "Piirkond",
+    "AWS_POLLY_REGION": "Piirkond",
+    "AWS_POLLY_VOICE": "Hääl",
+    "AWS_SECRET_ACCESS_KEY": "Salajane Pääsuvõti",
+    "AWS_TEXT_TYPE": "Teksti tüüp",
+    "BACK": "Tagasi",
     "BCC": "BCC",
-    "BEEP": "Beep",
+    "BEEP": "Piiks",
     "BODY": "Keha",
-    "CALLBACK": "Callback",
-    "CALLBACK_PRIORITY": "Priority",
+    "CALLBACK": "Tagasihelistamine",
+    "CALLBACK_PRIORITY": "Prioriteet",
     "CALLYSQUARE": "Cally Square",
-    "CC": "CC",
-    "CHOOSE_ATTACHMENT": "Choose Attachment",
-    "CLOSE": "Close",
-    "COMMAND": "Command",
+    "CC": "Koop",
+    "CHOOSE_ATTACHMENT": "Vali Manus",
+    "CLOSE": "Sule",
+    "COMMAND": "Käsk",
     "COMPUTEDVARIABLES": "Arvutatud muutujate skripti tee",
-    "CONDITION": "Condition",
-    "CONTEXT": "Context",
-    "COPY": "Copy",
-    "COPY_PROJECT": "Copy Project",
-    "CREATED_AT": "Created At",
+    "CONDITION": "Tingimus",
+    "CONTEXT": "Kontekst",
+    "COPY": "Koopia",
+    "COPY_PROJECT": "Kopeeri Projekt",
+    "CREATED_AT": "Loomisaeg",
     "CUSTOM_ACTION": "Kohandatud toiming",
     "CUSTOM_ACTION_DATA": "Kohandatud toimingu andmed",
-    "CUSTOM_APP": "Custom Application",
-    "DATABASE": "Database",
-    "DELAY": "delay [min]",
-    "DELETE": "Delete",
-    "DELETE_ODBC": "Delete ODBC",
-    "DELETE_PROJECT": "Delete Project",
-    "DELETE_SQUARERECORDING": "Delete Square Recording",
-    "DESCRIPTION": "Description",
-    "DIAL": "Dial",
-    "DIALOGFLOW": "Dialogflow",
-    "DIALOGFLOW_LANGUAGE": "Language",
-    "DIGIT": "Max Digits",
-    "DIGITS": "Digits",
-    "DOWNLOAD_SQUARERECORDING": "Download Square Recording",
-    "DROP_TO_UPLOAD": "DROP TO UPLOAD",
-    "DROP_TO_UPLOAD_MESSAGE": "You can also drop files here to upload. Only XML - Max. 5MB",
+    "CUSTOM_APP": "Kohandatud Rakendus",
+    "DATABASE": "Andmebaas",
+    "DELAY": "viivitus [min]",
+    "DELETE": "Kustuta",
+    "DELETE_ODBC": "Kustuta ODBC",
+    "DELETE_PROJECT": "Kustuta Projekt",
+    "DELETE_SQUARERECORDING": "Kustuta Ruutformaadis Salvestus",
+    "DESCRIPTION": "Kirjeldus",
+    "DIAL": "Helista",
+    "DIALOGFLOW": "Dialoogivoog",
+    "DIALOGFLOW_LANGUAGE": "Keel",
+    "DIGIT": "Maks. Numbrimärke",
+    "DIGITS": "Number",
+    "DOWNLOAD_SQUARERECORDING": "Laadi alla Ruutformaadis Salvestus",
+    "DROP_TO_UPLOAD": "ÜLESLAADIMISEKS KUKUTA",
+    "DROP_TO_UPLOAD_MESSAGE": "Üleslaadimiseks saad failid samuti siia kukutada. Ainult XML - Maks. 5MB",
     "DSN": "DSN",
-    "EDIT": "Edit",
-    "EDIT_ODBC": "Edit ODBC",
-    "EDIT_PROJECT": "Edit Project",
-    "EDIT_SQUARERECORDING": "Edit Square Recording",
-    "EDIT_XML": "Edit XML",
-    "END": "End",
+    "EDIT": "Redigeeri",
+    "EDIT_ODBC": "Redigeeri ODBC",
+    "EDIT_PROJECT": "Redigeeri Projekti",
+    "EDIT_SQUARERECORDING": "Redigeeri Ruutformaadis Salvestust",
+    "EDIT_XML": "Redigeeri XMLi",
+    "END": "Lõpeta",
     "ERRORS": {
-      "DSN_REQUIRED": "Mandatory field",
-      "FIELD_REQUIRED": "Mandatory field",
-      "NAME_REQUIRED": "Mandatory field",
-      "PROJECT_REQUIRED": "Mandatory field",
+      "DSN_REQUIRED": "Kohustuslik väli",
+      "FIELD_REQUIRED": "Kohustuslik väli",
+      "NAME_REQUIRED": "Kohustuslik väli",
+      "PROJECT_REQUIRED": "Kohustuslik väli",
       "URL_REQUIRED": "Kohustuslik väli"
     },
-    "ESCAPE_DIGITS": "Escape Digits",
+
+    "ESCAPE_DIGITS": "Väldi numbrimärke",
     "EXTEN": "Exten",
-    "EXTENSION": "Extension",
-    "EXT_DIAL": "External Dial",
-    "FILE": "Filename",
-    "FILENAME": "Filename",
+    "EXTENSION": "Laiendus",
+    "EXT_DIAL": "Väline Helistamine",
+    "FILE": "Faili nimi",
+    "FILENAME": "Faili nimi",
     "FILE_ID": "Audio",
     "FINALLY": "Finally",
-    "FINDBY": "Find By",
-    "GETDIGITS": "Get Digits",
-    "GETSECRETDIGITS": "Get Secret Digits",
-    "GOAL": "Goal",
-    "GOALNAME": "Goal Name",
+    "FINDBY": "Otsitav",
+    "GETDIGITS": "Hangi Numbrimärgid",
+    "GETSECRETDIGITS": "Hangi Salanumbrid",
+    "GOAL": "Eesmärk",
+    "GOALNAME": "Eesmärgi Nimi",
     "GOOGLEASR": "GoogleASR",
-    "GOOGLE_ASR_LANGUAGE": "Language",
+    "GOOGLE_ASR_LANGUAGE": "Keel",
     "GOOGLE_CLOUD_TTS": "Google Cloud TTS",
     "GOOGLE_CLOUD_TTS_TEXT_TYPE": "Teksti tüüp",
-    "GOOGLE_TTS_LANGUAGE": "Language",
+    "GOOGLE_TTS_LANGUAGE": "Keel",
     "GOSUB": "GoSub",
     "GOTOC": "GoTo",
     "GOTOIF": "GoToIf",
     "GOTOIFTIME": "GoToIfTime",
-    "GO_TO_PROJECTS": "Go to projects",
-    "GRAMMAR": "Grammar",
-    "HANGUP": "Hangup",
+    "GO_TO_PROJECTS": "Mine projektide juurde",
+    "GRAMMAR": "Grammatika",
+    "HANGUP": "Lõpeta kõne",
     "HEADERS": "Päised",
     "HELP": {
-      "BCC": "You can add multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
-      "CC": "You can add multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
-      "DSN": "Example: DRIVER=MySQL;SERVER=127.0.0.1;UID=xcall;PWD=password;DATABASE=motion",
+      "BCC": "Saad lisada mitu aadressi komadega eraldatult (näiteks john.doe@xcally.com, jane.miller@xcally.com)",
+      "CC": "Saad lisada mitu aadressi komadega eraldatult (näiteks john.doe@xcally.com, jane.miller@xcally.com)",
+      "DSN": "Näidis: DRIVER=MySQL;SERVER=127.0.0.1;UID=xcall;PWD=password;DATABASE=motion",
       "MAILBOX": "mailbox@context",
       "MAX_TEXT_TTS": "Toetatavate tähemärkide maksimaalne arv on 200",
-      "TO": "You can add multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)"
+      "TO": "Saad lisada mitu aadressi komadega eraldatult (näiteks john.doe@xcally.com, jane.miller@xcally.com)"
     },
-    "HIDDENDIGITSNUM": "Hiddden Digits Number",
-    "HIDDENDIGITSPOS": "hidden Digits Position",
-    "ID": "Id",
-    "IMPORT": "Import",
-    "IMPORT_XML": "Import XML",
-    "INTERVAL_ID": "Interval",
-    "INTKEY": "Interrupt Key",
+    "HIDDENDIGITSNUM": "Peidetud Numbrimärkide Arv",
+    "HIDDENDIGITSPOS": "Peidetud Numbrimärkide Asukoht",
+    "ID": "ID",
+    "IMPORT": "Impordi",
+    "IMPORT_XML": "Impordi XML",
+    "INTERVAL_ID": "Intervall",
+    "INTKEY": "Katkestusklahv",
     "ISPEECHASR": "iSpeech ASR",
     "ISPEECHTTS": "iSpeech Text-To-Speech",
-    "ISPEECH_ASR_LANGUAGE": "Language",
-    "ISPEECH_TTS_LANGUAGE": "Language",
-    "KEY": "Key",
-    "LABEL": "Label",
+    "ISPEECH_ASR_LANGUAGE": "Keel",
+    "ISPEECH_TTS_LANGUAGE": "Keel",
+    "KEY": "Võti",
+    "LABEL": "Sedel",
     "LANGUAGECODE": "Keelekood",
-    "LASTNAME": "Last Name",
-    "LIST_ID": "List",
-    "LOGIN": "Login",
-    "LOGOUT": "Logout",
+    "LASTNAME": "Perekonnanimi",
+    "LIST_ID": "Loend",
+    "LOGIN": "Logi sissse",
+    "LOGOUT": "Logi välja",
     "LUMENVOXASR": "Lumenvox ASR",
     "LUMENVOXTTS": "Lumenvox Text-To-Speech",
-    "MACRO": "Macro",
-    "MAILBOX": "Mailbox",
-    "MATH": "Math",
-    "MAXDIGIT": "Maximum Digits",
-    "MENU": "Menu",
+    "MACRO": "Makro",
+    "MAILBOX": "Postkast",
+    "MATH": "Matemaatika",
+    "MAXDIGIT": "Maks. numbrimärke",
+    "MENU": "Manüü",
     "METHOD": "Meetod",
-    "MINDIGIT": "Minimum Digits",
-    "MODEL": "Model",
+    "MINDIGIT": "Min. numbrimärke",
+    "MODEL": "Mudel",
     "MRCPRECOG": "MRCPRecog",
-    "MRCPSYNTH": "MRCPSünth",
-    "NAME": "Name",
+    "MRCPSYNTH": "MRCPSynth",
+    "NAME": "Nimi",
     "NDAACTIVITY_TYPE": "Tegevuse tüüp",
     "NDAGENERATE_AUDIO": "Loo helifail",
-    "NDASSISTANT_URL": "NDASSISTANT URL",
+    "NDASSISTANT_URL": "NDASSISTANTi URL",
     "NDAUTH_URL": "NDAUTHi URL",
-    "NEW": "New",
-    "NEW_ODBC": "New ODBC connection",
-    "NEW_PROJECT": "New Project",
-    "NEW_VARIABLE": "New Variable",
+    "NEW": "Uus",
+    "NEW_ODBC": "Uus ODBC ühendus",
+    "NEW_PROJECT": "Uus Projekt",
+    "NEW_VARIABLE": "Uus Muutuja",
     "NOOP": "NoOp",
-    "NOTES": "Notes",
-    "NO_AVAILABLE_INFO": "No available info",
+    "NOTES": "Märkmed",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
     "NUMBER": "Number",
     "ODBC": "ODBC",
-    "ODBC_ID": "ODBC Connection",
+    "ODBC_ID": "ODBC Ühendus",
     "OF": "of",
-    "OPEN": "Open",
-    "OPEN_NEW_WINDOW": "Open in a new window",
-    "OPEN_PROJECT": "Open Project",
-    "OPERATION": "Operation",
-    "OPTIONS": "Options",
-    "OPTS": "Options",
-    "OUTPUT": "Output",
-    "PAGE": "Page",
+    "OPEN": "Ava",
+    "OPEN_NEW_WINDOW": "Ava uues aknas",
+    "OPEN_PROJECT": "Ava Projekt",
+    "OPERATION": "Toiming",
+    "OPTIONS": "Suvandid",
+    "OPTS": "Suvandid",
+    "OUTPUT": "Väljund",
+    "PAGE": "Lehekülg",
     "PASSWORD": "Parool",
-    "PAUSE": "Pause",
-    "PAUSE_ID": "Pause type",
-    "PERMISSIONADD_PROJECTS": "Add Users to Project",
-    "PHONE": "Phone",
-    "PLAYBACK": "Playback",
-    "POSITION": "Position",
-    "PRIORITY": "Priority",
-    "PROJECT": "Project",
-    "PROJECTS": "Projects",
-    "PROJECT_ID": "Project",
-    "QUERY": "Query",
-    "QUEUE": "Queue",
-    "QUEUE_ID": "Queue",
+    "PAUSE": "Paus",
+    "PAUSE_ID": "Pausi tüüp",
+    "PERMISSIONADD_PROJECTS": "Lisa Kasutajad projekti",
+    "PHONE": "Telefon",
+    "PLAYBACK": "Taasesita",
+    "POSITION": "Positsioon",
+    "PRIORITY": "Prioriteet",
+    "PROJECT": "Projekt",
+    "PROJECTS": "Projektid",
+    "PROJECT_ID": "Projekt",
+    "QUERY": "Päring",
+    "QUEUE": "Järjekord",
+    "QUEUE_ID": "Järjekord",
     "RAWBODY": "Keha",
     "RAWHEADERS": "Päised",
-    "RECORD": "Record",
-    "RECORDINGFORMAT": "Recording Format",
-    "RESPONSE": "Response Timeout",
+    "RECORD": "Salvestamine",
+    "RECORDINGFORMAT": "Salvestuse formaat",
+    "RESPONSE": "Reaktsiooniaja Aegumine",
     "RESTAPI": "Puhkuse API",
-    "RETRY": "Retries",
-    "ROWSPERPAGE": "Rows per page",
-    "SAVE": "Save",
-    "SAYDIGITS": "Say Digits",
-    "SAYNUMBER": "Say number",
-    "SAYPHONETIC": "Say Phonetics",
-    "SEARCH_FOR_ANYONE": "Search",
-    "SELECTED": "Selected",
-    "SELECTED_USERS": "Selected Users",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "SENDFAX": "Send Fax",
-    "SENDMAIL": "Send Email",
-    "SENDSMS": "Send SMS",
+    "RETRY": "Korduskatsed",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "SAVE": "Salvesta",
+    "SAYDIGITS": "Ütle Numbrimärgid",
+    "SAYNUMBER": "Ütle Number",
+    "SAYPHONETIC": "Ütle Häälikud",
+    "SEARCH_FOR_ANYONE": "Otsi",
+    "SELECTED": "Valitud",
+    "SELECTED_USERS": "Valitud Kasutajad",
+    "SELECT_ALL": "Vali Kõik",
+    "SELECT_NONE": "Ära vali Midagi",
+    "SENDFAX": "Saada Faks",
+    "SENDMAIL": "Saada E-kiri",
+    "SENDSMS": "Saada Sõnum",
     "SESTEKASR": "Sestek ASR",
     "SESTEKNDA": "Sestek NDA",
     "SESTEKTTS": "Sestek TTS",
-    "SET": "Set",
+    "SET": "Hulk",
     "SIP_ID": "SIP",
-    "SMS_ACCOUNT_ID": "Account",
-    "SMS_TEXT": "Text",
-    "SPEED": "Speed",
-    "SQUARERECORDINGS": "Recordings",
+    "SMS_ACCOUNT_ID": "Konto",
+    "SMS_TEXT": "Tekst",
+    "SPEED": "Kiirus",
+    "SQUARERECORDINGS": "Salvestused",
     "SSMLGENDER": "Sugu",
     "START": "Start",
-    "SUBJECT": "Subject",
-    "SUBPROJECT": "Sub Project",
-    "SYSTEM": "System",
-    "TELEPHONES": "Telephones",
-    "TEMPLATE_ID": "Template",
+    "SUBJECT": "Subjekt",
+    "SUBPROJECT": "Alamprojekt",
+    "SYSTEM": "Süsteem",
+    "TELEPHONES": "Telefonid",
+    "TEMPLATE_ID": "Mall",
     "TEST_ODBC": "Test ODBC",
-    "TEXT": "Text",
+    "TEXT": "Tekst",
     "TILDEASR": "Tilde ASR",
-    "TIMEOUT": "Timeout",
-    "TO": "To",
-    "TRUNK_NAME": "Trunk",
+    "TIMEOUT": "Aegumine",
+    "TO": "Kellele",
+    "TRUNK_NAME": "Magistraal",
     "TTS": "Google Text-To-Speech",
-    "UNIQUEID": "Unique ID",
-    "UNPAUSE": "End Pause",
-    "UPDATE_DESCRIPTION": "Update Description",
-    "UPDATE_INFO": "Update Info",
+    "UNIQUEID": "Unikaalne ID",
+    "UNPAUSE": "Lõpeta Paus",
+    "UPDATE_DESCRIPTION": "Uuenda Kirjeldust",
+    "UPDATE_INFO": "Uuenda Infot",
     "URI": "URI",
     "URL": "URL",
     "USERNAME": "Kasutajanimi",
-    "USERS": "Users",
-    "VARIABLE_ID": "Variable",
-    "VARIABLE_VALUE": "Value",
-    "VOICEMAIL": "Voicemail",
-    "VSWITCH": "Variable Switch",
+    "USERS": "Kasutajad",
+    "VARIABLE_ID": "Muutuja",
+    "VARIABLE_VALUE": "Väärtus",
+    "VOICEMAIL": "Kõnepost",
+    "VSWITCH": "Muutuja Vahetus",
     "CLIENT_EMAIL": "Kliendi e-post",
-    "DIALOGFLOWV2": "DialoogivoogV2",
+    "DIALOGFLOWV2": "Dialoogivoog V2",
     "DIALOGFLOWV2_LANGUAGE": "Keel",
     "DIALOGFLOWV2_PROJECT_ID": "Projekti ID",
     "PRIVATE_KEY": "Privaatne võti",
index 2f3b48e..5dc84d3 100644 (file)
 {
   "CHAT": {
-    "EDIT_AMAZONLEX": "Edit Amazon Lex",
+    "EDIT_AMAZONLEX": "Redigeeri Amazon Lexi",
     "AMAZONLEX": "Amazon Lex",
-    "ACCESSKEYID": "Access Key ID",
-    "SECRETACCESSKEY": "Secret Access Key",
-    "LEXREGION": "Region",
-    "BOTNAME": "Bot Name",
-    "LOGIN_TIME": "Login time",
-    "PAUSE_TIME": "Pause time",
-    "DOWNLOAD_INTERACTION": "Download",
-    "ENABLECUSTOMERCHECKMARKS": "Enable customer delivered/read notifications",
-    "TRANSFER": "Transfer",
-    "QUEUETRANSFER": "Queue Transfer",
-    "QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
-    "AGENTTRANSFER": "Agent Transfer",
-    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
-    "SYSTEMAVATAR": "System Avatar",
-    "SYSTEMALIAS": "System Alias",
-    "WELCOMEMESSAGE": "Welcome Message",
-    "LANGUAGE": "Language",
-    "EDIT_DIALOGFLOW": "Edit Dialogflow",
-    "DIALOGFLOW": "Dialogflow",
-    "BACKGROUNDCOLOR": "Background Color",
-    "MESSAGEFONTSIZE": "Message Font Size",
-    "TAG": "Tag",
-    "EDIT_TAG": "Edit Tag",
-    "CUSTOMERALIAS": "Customer Alias",
-    "SNIPPETSWIPEOUT": "Snippet swipe out",
-    "CUSTOMERAVATAR": "Customer Avatar",
-    "SHOWCUSTOMERAVATAR": "Show customer avatar",
-    "DEFAULTTITLE": "Default Title",
-    "MESSAGESALIGNMENT": "Messages Alignment",
-    "ALTERNATE": "Alternate",
-    "CENTERED": "Centered",
-    "POSITION": "Position",
-    "VERTICALPOSITION": "Vertical position",
-    "ALIGNMENT": "Alignment",
-    "VERTICALALIGNMENT": "Vertical alignment",
-    "BOTTOM_RIGHT": "Bottom right",
-    "RIGHT": "Right",
-    "LEFT": "Left",
-    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
-    "AGENTIDENTIFIER": "Identifier",
-    "WEBSITEALIAS": "Website Alias",
-    "AGENTALIAS": "Agent Alias",
-    "AGENTFULLNAME": "Agent Fullname",
-    "INSERT_MESSAGE_HERE": "Insert your text message here",
-    "HIDEWHENOFFLINE": "Hide",
-    "NOTIFICATION": "Notification",
-    "NOTIFICATIONSOUND": "Sound",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONTEMPLATE": "Template",
-    "SYSTEM": "System",
-    "EDIT_SYSTEM": "Edit System",
-    "COMMAND": "Command",
-    "TEXTCOLOR": "Text Color",
-    "FONTSIZE": "Font Size",
-    "WEBSCRIPT": "Web Script",
-    "CANNEDANSWERS": "Canned Answers",
-    "CHATCANNEDANSWERS": "Canned Answers",
-    "NO_CHATCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
-    "NEW_CHATCANNEDANSWER": "New Canned Answer",
-    "ADD_CHATCANNEDANSWER": "Add Canned Answer",
-    "EDIT_CHATCANNEDANSWER": "Edit",
-    "DELETE_CHATCANNEDANSWER": "Delete",
-    "OFFLINEMESSAGESUBJECT": "Message subject",
-    "OFFLINEMESSAGEBODY": "Message body",
-    "FORMSUBMITSUCCESSMESSAGE": "Form submit success message",
-    "FORMSUBMITFAILUREMESSAGE": "Form submit failure message",
-    "PLACEHOLDERMESSAGE": "Message placeholder",
-    "NOTETITLE": "Note's title",
-    "CLOSINGQUESTION": "Closing question",
-    "TAGS": "Tags",
-    "SHOWAGENTAVATAR": "Show personal agent avatar",
-    "AGENTAVATAR": "Agent Avatar",
-    "SPYINTERACTION": "Spy",
-    "NO_AGENT_ONLINE": "No Agent Online",
-    "GOTOREALTIME_CHATQUEUE": "Go To Realtime Chat Queue",
-    "PARTIALPAUSE": "Partial Pause",
-    "BUSY": "Busy",
-    "TIMER": "Timer",
-    "IDLE": "Idle",
-    "CAPACITY": "Capacity",
-    "AGENTSADD_QUEUE": "Add Agent to Chat Queue",
-    "QUEUES": "Queues",
-    "LOGGED_IN": "Logged in",
-    "PAUSED": "Paused",
-    "READY": "Ready",
-    "WAITING": "Waiting",
-    "WRITING": "Writing",
-    "CHAT": "Chat",
-    "MAIL": "Email",
-    "SMS": "SMS",
-    "OPENCHANNEL": "Openchannel",
-    "FAX": "Fax",
-    "PAUSE": "Pause",
-    "REALTIME": "Realtime",
-    "AGENTS": "Agents",
-    "FULLNAME": "Full Name",
-    "INTERNAL": "Internal",
-    "PHONE_STATE": "Phone State",
-    "PHONE_STATUS": "Phone Status",
-    "LOGOUT": "Logout",
-    "UNPAUSE": "End Pause",
-    "AGENTADD_QUEUE": "Add Agent to Chat Queue",
-    "TEXT": "Text",
-    "TIMES": "Number of times per interaction",
-    "EDIT_AUTOREPLY": "Edit Auto Reply",
-    "AUTOREPLY": "Auto Reply",
-    "NEW_CHATDISPOSITION": "New Chat Disposition",
-    "ENABLECUSTOMERATTACHMENT": "Enable Customer Attachments",
-    "OFFLINE_CHAT_BUTTON": "'Offline Chat' Button",
-    "OFFLINESTATUS": "Offline Status",
-    "NAME": "Name",
-    "CHATQUEUES": "Chat Queues",
-    "SEARCH_FOR_ANYONE": "Search",
-    "STRATEGY": "Strategy",
-    "AGENT_TIMEOUT": "Agent Timeout",
-    "DESCRIPTION": "Description",
-    "KEY": "Key",
+    "ACCESSKEYID": "Pääsuvõtme ID",
+    "SECRETACCESSKEY": "Salajane Pääsuvõti",
+    "LEXREGION": "Piirkond",
+    "BOTNAME": "Boti Nimi",
+    "LOGIN_TIME": "Sisselogimise aeg",
+    "PAUSE_TIME": "Pausi aeg",
+    "DOWNLOAD_INTERACTION": "Allalaadimine",
+    "ENABLECUSTOMERCHECKMARKS": "Luba kliendi edastatud/loetud teated",
+    "TRANSFER": "Edasta",
+    "QUEUETRANSFER": "Ooteaja Edastamine",
+    "QUEUETRANSFERTIMEOUT": "Ooteaja Edastamise lõpp",
+    "AGENTTRANSFER": "Agendi Edastamine",
+    "AGENTTRANSFERTIMEOUT": "Agendi Edastamise lõpp",
+    "SYSTEMAVATAR": "Süsteemi Avatar",
+    "SYSTEMALIAS": "Süsteemi Alias",
+    "WELCOMEMESSAGE": "Tervitussõnum",
+    "LANGUAGE": "Keel",
+    "EDIT_DIALOGFLOW": "Redigeeri Dialoogivoogu",
+    "DIALOGFLOW": "Dialoogivoog",
+    "BACKGROUNDCOLOR": "Taustavärv",
+    "MESSAGEFONTSIZE": "Sõnumi Fondi Suurus",
+    "TAG": "Silt",
+    "EDIT_TAG": "Redigeeri Silti",
+    "CUSTOMERALIAS": "Kliendi Alias",
+    "SNIPPETSWIPEOUT": "Väljavõtte nipsamine",
+    "CUSTOMERAVATAR": "Kleindi Avatar",
+    "SHOWCUSTOMERAVATAR": "Näita kliendi avatari",
+    "DEFAULTTITLE": "Vaiketiitel",
+    "MESSAGESALIGNMENT": "Sõnumite Joondus",
+    "ALTERNATE": "Alternatiiv",
+    "CENTERED": "Keskele",
+    "POSITION": "Paigutus",
+    "VERTICALPOSITION": "Vertikaalne Paigutus",
+    "ALIGNMENT": "Joondus",
+    "VERTICALALIGNMENT": "Vertikaalne Joondus",
+    "BOTTOM_RIGHT": "All paremal",
+    "RIGHT": "Paremal",
+    "LEFT": "Vasakul",
+    "WAITFORTHEASSIGNEDAGENT": "Oota määratud agenti",
+    "AGENTIDENTIFIER": "Identifikaator",
+    "WEBSITEALIAS": "Veebileehe alias",
+    "AGENTALIAS": "Agendi Alias",
+    "AGENTFULLNAME": "Agendi Täisnimi",
+    "INSERT_MESSAGE_HERE": "Sisesta oma tekstisõnum siia",
+    "HIDEWHENOFFLINE": "Peida",
+    "NOTIFICATION": "Teatis",
+    "NOTIFICATIONSOUND": "Heli",
+    "NOTIFICATIONSHAKE": "Raputus",
+    "NOTIFICATIONTEMPLATE": "Mall",
+    "SYSTEM": "Süsteem",
+    "EDIT_SYSTEM": "Redigeeri Süsteemi",
+    "COMMAND": "Käsk",
+    "TEXTCOLOR": "Teksti Värv",
+    "FONTSIZE": "Fondi Suurus",
+    "WEBSCRIPT": "Veebi skript",
+    "CANNEDANSWERS": "Salvestatud Vastused",
+    "CHATCANNEDANSWERS": "Salvestatud Vastused",
+    "NO_CHATCANNEDANSWER_AVAILABLE": "Salvestatud Vastuseid pole Saadaval",
+    "NEW_CHATCANNEDANSWER": "Uus Salvestatud Vastus",
+    "ADD_CHATCANNEDANSWER": "Lisa Salvestatud Vastus",
+    "EDIT_CHATCANNEDANSWER": "Redigeeri",
+    "DELETE_CHATCANNEDANSWER": "Kustuta",
+    "OFFLINEMESSAGESUBJECT": "Sõnumi teema",
+    "OFFLINEMESSAGEBODY": "Sõnumi sisu",
+    "FORMSUBMITSUCCESSMESSAGE": "Vormi edastamise õnnestumisteade",
+    "FORMSUBMITFAILUREMESSAGE": "Vormi edastamise ebaõnnestumisteade",
+    "PLACEHOLDERMESSAGE": "Sõnumi kohatäide",
+    "NOTETITLE": "Märkme pealkiri",
+    "CLOSINGQUESTION": "Lõpetav küsimus",
+    "TAGS": "Sildid",
+    "SHOWAGENTAVATAR": "Näita isiklikku agendi avatari",
+    "AGENTAVATAR": "Agendi Avatar",
+    "SPYINTERACTION": "Spioon",
+    "NO_AGENT_ONLINE": "Ühtegi Agenti pole Võrgus",
+    "GOTOREALTIME_CHATQUEUE": "Mine Reaalajavestluse Järjekorda",
+    "PARTIALPAUSE": "Osaline Paus",
+    "BUSY": "Hõivatud",
+    "TIMER": "Taimer",
+    "IDLE": "Jõude",
+    "CAPACITY": "Võimsus",
+    "AGENTSADD_QUEUE": "Lisa Agent Vestluse Järjekorda",
+    "QUEUES": "Järjekorrad",
+    "LOGGED_IN": "Sisse logitud",
+    "PAUSED": "Pausil",
+    "READY": "Valmis",
+    "WAITING": "Ootel",
+    "WRITING": "Ootel",
+    "CHAT": "Vestlus",
+    "MAIL": "E-kiri",
+    "SMS": "Sõnum",
+    "OPENCHANNEL": "Avatud kanal",
+    "FAX": "Faks",
+    "PAUSE": "Ootele",
+    "REALTIME": "Reaalaeg",
+    "AGENTS": "Agendid",
+    "FULLNAME": "Täisnimi",
+    "INTERNAL": "Sisemine",
+    "PHONE_STATE": "Telefoni Olek",
+    "PHONE_STATUS": "Telefoni Olek",
+    "LOGOUT": "Logi välja",
+    "UNPAUSE": "Lõpeta Paus",
+    "AGENTADD_QUEUE": "Lisa Agent Vestluse Järjekorda",
+    "TEXT": "Tekst",
+    "TIMES": "Kordade arv suhtluse kohta",
+    "EDIT_AUTOREPLY": "Redigeeri automaatvastust",
+    "AUTOREPLY": "Automaatvastus",
+    "NEW_CHATDISPOSITION": "Uue Vestluse Kasutaminene",
+    "ENABLECUSTOMERATTACHMENT": "Luba Kliendi Manused",
+    "OFFLINE_CHAT_BUTTON": "'Võrguühenduseta Vestluse' Nupp",
+    "OFFLINESTATUS": "Võrgust väljas staatus",
+    "NAME": "Nimi",
+    "CHATQUEUES": "Vestluse Järjekorrad",
+    "SEARCH_FOR_ANYONE": "Otsi",
+    "STRATEGY": "Strateegia",
+    "AGENT_TIMEOUT": "Agendi Ajalõpp",
+    "DESCRIPTION": "Kirjeldus",
+    "KEY": "Võti",
     "ALIAS": "Alias",
-    "VARIABLE": "Variable",
-    "INTERVAL": "Interval",
-    "EDIT_CLOSE": "Edit Close",
-    "TIMEZONE": "Timezone",
-    "MESSAGE": "Message",
-    "ADVANCED": "Advanced",
-    "FORWARDTRANSCRIPT": "Forward Transcript",
-    "FORWARDTRANSCRIPTMESSAGE": "Forward Transcript Message",
-    "SKIPMESSAGEBUTTON": "Skip Message Button",
-    "EDIT_MESSAGE": "Edit Message",
-    "CONDITION_AGREEMENT": "Condition Agreement",
-    "NONE": "None",
-    "PRIORITY": "Priority",
-    "ONLINESTATUS": "Online Status",
-    "UNMANAGEDSTATUS": "Unmanaged Status",
-    "AUTOCLOSE": "Enable Autoclose",
-    "ENABLEUNMANAGEDNOTE": "Enable Unmanaged Message",
-    "UNMANAGEDMESSAGE": "Message",
-    "SKIPUNMANAGED": "Skip Message",
-    "SENDUNMANAGED": "Send Message",
-    "WEBSITESCRIPT": "Website Script",
-    "DELETE_OFFLINEMESSAGE": "Delete",
-    "OFFLINEMESSAGES": "Offline Messages",
-    "FORWARD_OFFLINE": "Forward Offline",
-    "SHOW_OFFLINEMESSAGE": "Show",
-    "FORWARD_OFFLINE_ADDRESS": "Forward Offline Address",
-    "CLOSINGFORM": "Closing Form",
-    "ENABLERATING": "Enable Rating",
-    "ENABLECUSTOMERWRITING": "Allow customer writing before agent accepting",
-    "ENABLEFEEDBACK": "Enable Feedback",
-    "RATINGTYPE": "Rating Type",
-    "CLOSINGMESSAGE": "Closing Message",
-    "CLOSINGMESSAGEBUTTON": "Closing Message Button",
-    "RATINGSTARSNUMBER": "Rating Stars Number",
-    "EDIT_GOTOIF": "Edit GotoIf",
-    "CONDITION": "Condition",
-    "TRUEPRIORITY": "True Priority",
-    "FALSEPRIORITY": "False Priority",
-    "VALUE": "Value",
+    "VARIABLE": "Muutuja",
+    "INTERVAL": "Intervall",
+    "EDIT_CLOSE": "Redigeeri Sulgemist",
+    "TIMEZONE": "Ajavöönd",
+    "MESSAGE": "Sõnum",
+    "ADVANCED": "Täpsem",
+    "FORWARDTRANSCRIPT": "Edasta Transkriptsioon",
+    "FORWARDTRANSCRIPTMESSAGE": "Edasta Transkriptsiooni Teade",
+    "SKIPMESSAGEBUTTON": "Eira Sõnumi Nuppu",
+    "EDIT_MESSAGE": "Redigeeri Sõnumit",
+    "CONDITION_AGREEMENT": "Tingimusleping",
+    "NONE": "Pole",
+    "PRIORITY": "Prioriteet",
+    "ONLINESTATUS": "Võrgusolek",
+    "UNMANAGEDSTATUS": "Haldamata Olek",
+    "AUTOCLOSE": "Luba Automaatne Sulgemine",
+    "ENABLEUNMANAGEDNOTE": "Luba Haldamata Sõnum",
+    "UNMANAGEDMESSAGE": "Sõnum",
+    "SKIPUNMANAGED": "Jäta vahele Sõnum",
+    "SENDUNMANAGED": "Saada Sõnum",
+    "WEBSITESCRIPT": "Veebilehe Skript",
+    "DELETE_OFFLINEMESSAGE": "Kustuta",
+    "OFFLINEMESSAGES": "Võrguühenduseta Sõnumid",
+    "FORWARD_OFFLINE": "Saada edasi Võrguühenduseta",
+    "SHOW_OFFLINEMESSAGE": "Näita",
+    "FORWARD_OFFLINE_ADDRESS": "Saada edasi Võrguühenduseta Aadress",
+    "CLOSINGFORM": "Sulgemise Vorm",
+    "ENABLERATING": "Luba Hindamine",
+    "ENABLECUSTOMERWRITING": "Luba kliendil kirjutamine enne agendi aktsepteerimist",
+    "ENABLEFEEDBACK": "Luba Tagasiside",
+    "RATINGTYPE": "Hinnangu Tüüp",
+    "CLOSINGMESSAGE": "Sulgemise Vorm",
+    "CLOSINGMESSAGEBUTTON": "Sulgemise Sõnumi Nupp",
+    "RATINGSTARSNUMBER": "Hinnangu Tähtede Arv",
+    "EDIT_GOTOIF": "Redigeeri GotoIfi",
+    "CONDITION": "Tingimus",
+    "TRUEPRIORITY": "Õige Prioriteet",
+    "FALSEPRIORITY": "Vale Prioriteet",
+    "VALUE": "Väärtus",
     "ERRORS": {
-      "BOTNAME_REQUIRED": "Mandatory Field",
-      "SECRETACCESSKEY_REQUIRED": "Mandatory Field",
-      "ACCESSKEYID_REQUIRED": "Mandatory Field",
-      "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",
-      "CUSTOMERALIAS_REQUIRED": "Mandatory Field",
-      "AGENTALIAS_REQUIRED": "Mandatory Field",
-      "SYSTEMALIAS_REQUIRED": "Mandatory Field",
-      "MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MESSAGEFONTSIZE_REQUIRED": "Mandatory Field",
-      "TAG_REQUIRED": "Mandatory Field",
-      "VERTICALPOSITION_REQUIRED": "Mandatory Field",
-      "VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "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",
-      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FONTSIZE_REQUIRED": "Mandatory Field",
-      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "VALUE_REQUIRED": "Mandatory Field",
-      "CUSTOMERALIAS_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "SYSTEMALIAS_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "OFFLINEMESSAGESUBJECT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "OFFLINEMESSAGEBODY_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "PLACEHOLDERMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "NOTETITLE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "FORMSUBMITFAILUREMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "CLOSINGQUESTION_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "HEADER_OFFLINE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "OFFLINE_CHAT_BUTTON_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "TEXT_REQUIRED": "Mandatory Field",
-      "SENDUNMANAGED_REQUIRED": "Mandatory Field",
-      "SENDUNMANAGED_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "SKIPUNMANAGED_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "UNMANAGEDMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "WEBSITEALIAS_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "AGENT_REQUIRED": "Mandatory Field",
-      "QUEUE_REQUIRED": "Mandatory Field",
-      "CONDITION_REQUIRED": "Mandatory Field",
-      "PRIORITY_REQUIRED": "Mandatory Field",
-      "TRUEPRIORITY_REQUIRED": "Mandatory Field",
-      "FALSEPRIORITY_REQUIRED": "Mandatory Field",
-      "NAME_REQUIRED": "Mandatory Field",
-      "LIST_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
-      "MOTIONADDRESS_REQUIRED": "Mandatory Field",
-      "DISPOSITION_REQUIRED": "Mandatory Field",
+      "BOTNAME_REQUIRED": "Kohustuslik Väli",
+      "SECRETACCESSKEY_REQUIRED": "Kohustuslik Väli",
+      "ACCESSKEYID_REQUIRED": "Kohustuslik väli",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Kohustuslik väli",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Kohustuslik väli",
+      "CUSTOMERALIAS_REQUIRED": "Kohustuslik väli",
+      "AGENTALIAS_REQUIRED": "Kohustuslik väli",
+      "SYSTEMALIAS_REQUIRED": "Kohustuslik väli",
+      "MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "MESSAGEFONTSIZE_REQUIRED": "Kohustuslik väli",
+      "TAG_REQUIRED": "Kohustuslik väli",
+      "VERTICALPOSITION_REQUIRED": "Kohustuslik väli",
+      "VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Kohustuslik väli",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "NAME_MUST_VALID_PATTERN": "Vale formaat",
+      "COMMAND_REQUIRED": "Kohustuslik väli",
+      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "FONTSIZE_REQUIRED": "Kohustuslik väli",
+      "TEXT_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema {{max}}",
+      "VALUE_REQUIRED": "Kohustuslik väli",
+      "CUSTOMERALIAS_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "SYSTEMALIAS_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "OFFLINEMESSAGESUBJECT_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "OFFLINEMESSAGEBODY_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "PLACEHOLDERMESSAGE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "NOTETITLE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "FORMSUBMITFAILUREMESSAGE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "CLOSINGQUESTION_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "HEADER_OFFLINE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "OFFLINE_CHAT_BUTTON_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "TEXT_REQUIRED": "Kohustuslik väli",
+      "SENDUNMANAGED_REQUIRED": "Kohustuslik väli",
+      "SENDUNMANAGED_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "SKIPUNMANAGED_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "UNMANAGEDMESSAGE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "WEBSITEALIAS_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "AGENT_REQUIRED": "Kohustuslik Väli",
+      "QUEUE_REQUIRED": "Kohustuslik Väli",
+      "CONDITION_REQUIRED": "Kohustuslik Väli",
+      "PRIORITY_REQUIRED": "Kohustuslik Väli",
+      "TRUEPRIORITY_REQUIRED": "Kohustuslik Väli",
+      "FALSEPRIORITY_REQUIRED": "Kohustuslik Väli",
+      "NAME_REQUIRED": "Kohustuslik Väli",
+      "LIST_REQUIRED": "Kohustuslik Väli",
+      "AGENT_TIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "MOTIONADDRESS_REQUIRED": "Kohustuslik Väli",
+      "DISPOSITION_REQUIRED": "Kohustuslik Väli",
       "MOTIONADDRESS_MUST_VALID_URL": "Wrong format",
-      "EMAIL_MUST_BE_VALID": "Wrong format",
-      "ADDRESS_REQUIRED": "Mandatory Field",
-      "ADDRESS_MUST_VALID_URL": "Wrong format",
-      "ENQUIRY_FORWARDING_ADDRESS_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",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " The value must be greater than or equal to",
-      "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",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " The value must be greater than or equal to",
-      "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " The value must be greater than or equal to",
-      "WAITINGMESSAGE_REQUIRED": "Mandatory Field",
-      "WAITINGTITLE_REQUIRED": "Mandatory Field",
-      "KEY_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "KEY_REQUIRED": "Mandatory Field",
-      "WAITINGMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "WAITINGTITLE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "EMAIL_MUST_BE_VALID": "Vale formaat",
+      "ADDRESS_REQUIRED": "Kohustuslik Väli",
+      "ADDRESS_MUST_VALID_URL": "Vale formaat",
+      "ENQUIRY_FORWARDING_ADDRESS_REQUIRED": "Kohustuslik Väli",
+      "ACCEPTURL_MUST_VALID_URL": "Vale formaat",
+      "TIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "REJECTURL_MUST_VALID_URL": "Vale formaat",
+      "CLOSEURL_MUST_VALID_URL": "Vale formaat",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " Väärtus peab olema suurem või võrdne",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " Väärtus peab olema suurem või võrdne",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " Väärtus peab olema suurem või võrdne",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " Väärtus peab olema suurem või võrdne",
+      "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " Väärtus peab olema suurem või võrdne",
+      "WAITINGMESSAGE_REQUIRED": "Kohustuslik väli",
+      "WAITINGTITLE_REQUIRED": "Kohustuslik väli",
+      "KEY_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "KEY_REQUIRED": "Kohustuslik väli",
+      "WAITINGMESSAGE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "WAITINGTITLE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Kohustuslik väli",
       "VIDAOOAPIKEY_REQUIRED": "Kohustuslik väli",
       "CLIENTEMAIL_REQUIRED": "Kohustuslik väli",
       "VIDAOOTOPIC_REQUIRED": "Kohustuslik väli",
       "EMAIL_ACCOUNT_REQUIRED": "Kohustuslik väli"
     },
-    "CM_FIELD": "Contact Manager Field",
-    "CHATPROACTIVEACTIONS": "Proactive Actions",
-    "NEW_CHATPROACTIVEACTION": "New Proactive Action",
-    "EDIT_CHATPROACTIVEACTION": "Edit Proactive Action",
-    "DELETE_CHATPROACTIVEACTION": "Delete Proactive Action",
-    "ADD_CHATPROACTIVEACTION": "Add Proactive Action",
-    "NO_CHATPROACTIVEACTION_AVAILABLE": "No Proactive Actions Available",
-    "NO_OFFLINEMESSAGE_AVAILABLE": "No Offline Messages Available",
-    "MOUSEOVER": "Mouse Over",
-    "TIMEOUT": "Timeout",
-    "TYPE": "Type",
-    "SELECTOR": "Selector",
+    "CM_FIELD": "Kontakteeru Esindajaga väli",
+    "CHATPROACTIVEACTIONS": "Ennetavad Tegevused",
+    "NEW_CHATPROACTIVEACTION": "Uus Ennetav Tegevus",
+    "EDIT_CHATPROACTIVEACTION": "Redigeeri Ennetavat Tegevust",
+    "DELETE_CHATPROACTIVEACTION": "Kustuta Ennetav Tegevus",
+    "ADD_CHATPROACTIVEACTION": "Lisa Ennetav Tegevus",
+    "NO_CHATPROACTIVEACTION_AVAILABLE": "Ennetavaid Tegevusi pole Saadaval",
+    "NO_OFFLINEMESSAGE_AVAILABLE": "Võrguväliseid Sõnumeid pole Saadaval",
+    "MOUSEOVER": "Kursor Peal",
+    "TIMEOUT": "Aegumine",
+    "TYPE": "Tüüp",
+    "SELECTOR": "Selektor",
     "AGENT": "Agent",
     "GOTO": "Goto",
     "GOTOIF": "GotoIf",
     "NOOP": "Noop",
-    "QUEUE": "Queue",
-    "BUILDER": "Builder",
-    "PREVIEW": "Preview",
-    "EDIT_AGENT": "Edit Agent",
-    "EDIT_QUEUE": "Edit Queue",
-    "EDIT_GOTO": "Edit Goto",
-    "EDIT_GOTOIf": "Edit GotoIf",
-    "EDIT_NOOP": "Edit Noop",
-    "ADD_CHATQUEUE": "Add Chat Queue",
-    "EDIT_CHATQUEUE": "Edit Chat Queue",
-    "DELETE_CHATQUEUE": "Delete Chat Queue",
-    "SETTINGS": "Settings",
-    "SAVE": "Save",
-    "SCRIPT": "Script",
-    "TOKEN": "Token",
-    "CREATED_AT": "Created At",
-    "CHATWEBSITES": "Chat Websites",
-    "MOTIONADDRESS": "Website Domain",
-    "MOTIONPROXY": "Proxy Or Motion Domain",
-    "ADD_CHATWEBSITE": "Add Chat Website",
-    "EDIT_CHATWEBSITE": "Edit Chat Website",
-    "DELETE_CHATWEBSITE": "Delete Chat Website",
-    "LIST": "List",
-    "SNIPPET": "Snippet",
-    "FORMS": "Forms",
-    "UP": "Up",
-    "DOWN": "Down",
-    "COLLAPSE": "Collapse",
-    "PROACTIVEACTIONS": "Proactive Actions",
-    "DISPOSITIONS": "Dispositions",
-    "WEBHOOKS": "WebHooks",
-    "ACTIONS": "Actions",
-    "FIDELITY": "Fidelity",
-    "APPEARANCE": "Appearance",
-    "MAINCOLOR": "Main Color",
-    "FOCUSCOLOR": "Focus Color",
-    "BUTTONCOLOR": "Button Color",
-    "HEADERSHAPE": "Header Shape",
-    "ANIMATION": "Animation",
-    "DEFAULT": "Default",
-    "WHITELABEL": "White Label",
+    "QUEUE": "Järjekord Queue",
+    "BUILDER": "Koostur",
+    "PREVIEW": "Eelvaade",
+    "EDIT_AGENT": "Redigeeri Agenti",
+    "EDIT_QUEUE": "Redigeeri Järjekorda",
+    "EDIT_GOTO": "Redigeeri Goto",
+    "EDIT_GOTOIf": "Redigeeri GotoIf",
+    "EDIT_NOOP": "Redigeeri Noop",
+    "ADD_CHATQUEUE": "Lisa Vestluse Järjekord",
+    "EDIT_CHATQUEUE": "Redigeeri Vestluse Järjekorda",
+    "DELETE_CHATQUEUE": "Kustuta Vestluse Järjekord",
+    "SETTINGS": "Sätted",
+    "SAVE": "Salvesta",
+    "SCRIPT": "Skript",
+    "TOKEN": "Luba",
+    "CREATED_AT": "Loodud",
+    "CHATWEBSITES": "Vestluse Veebisaidid",
+    "MOTIONADDRESS": "Veebisaididomeen",
+    "MOTIONPROXY": "Puhvri või Liikumise domeen",
+    "ADD_CHATWEBSITE": "Lisa Vestluse Veebisait",
+    "EDIT_CHATWEBSITE": "Redigeeri Vestluse Veebisaiti",
+    "DELETE_CHATWEBSITE": "Kustuta Vestluse Veebisait",
+    "LIST": "Loend",
+    "SNIPPET": "Lõigend",
+    "FORMS": "Vormid",
+    "UP": "Üles",
+    "DOWN": "Alla",
+    "COLLAPSE": "Ahenda",
+    "PROACTIVEACTIONS": "Ennetavad Tegevused",
+    "DISPOSITIONS": "kasutaminesed",
+    "WEBHOOKS": "Veebihaagid",
+    "ACTIONS": "Tegevused",
+    "FIDELITY": "Kvaliteet",
+    "APPEARANCE": "Välimus",
+    "MAINCOLOR": "Põhivärv",
+    "FOCUSCOLOR": "Fookuse Värv",
+    "BUTTONCOLOR": "Nupu Värv",
+    "HEADERSHAPE": "Päise Kujund",
+    "ANIMATION": "Animatsioon",
+    "DEFAULT": "Vaikimisi",
+    "WHITELABEL": "Valge sedel",
     "LOGO": "Logo",
-    "DOWNLOADTRANSCRIPT": "Download Transcript",
-    "ENQUIRY_ENABLE": "Enquiry Enable",
-    "ENQUIRY_FORWARDING": "Enquiry Forwarding",
-    "ENQUIRY_FORWARDING_ADDRESS": "Enquiry Forwarding Address",
-    "LABELS": "Labels",
-    "HEADER_ONLINE": "Online Header",
-    "ONLINE_MESSAGE": "Online Message",
-    "NAME_TITLE": "Name Input Label",
-    "USERNAME_PLACEHOLDER": "Username Input Placeholder",
-    "EMAIL_TITLE": "Email Input Label",
-    "EMAIL_PLACEHOLDER": "Email Input Placeholder",
-    "START_CHAT_BUTTON": "'Start Chat' Button",
-    "AGENTS_BUSY": "Busy Agents Message",
-    "HEADER_OFFLINE": "Offline Header",
-    "OFFLINE_MESSAGE": "Offline Message",
-    "MESSAGE_TITLE": "Message Label",
-    "ENQUIRY_MESSAGE_PLACEHOLDER": "Enquiry Message Input Placeholder",
-    "ENQUIRY_BUTTON": "Enquiry Button Text",
-    "RATING_MESSAGE": "Rating Message",
-    "RATING_SEND": "Rating Send Button Text",
-    "RATING_SKIP": "Rating Skip Button Text",
-    "ONLINE": "Online",
-    "OFFLINE": "Offline",
-    "PROACTIVE": "Proactive",
-    "ACCEPT": "Accept",
-    "ACCEPTMETHOD": "Accept Method",
-    "ACCEPTURL": "Accept URL",
-    "REJECT": "Reject",
-    "REJECTMETHOD": "Reject Method",
-    "REJECTURL": "Reject URL",
-    "CLOSE": "Close",
-    "CLOSEMETHOD": "Close Method",
-    "CLOSEURL": "Close URL",
-    "EMBEDDING": "Embedding",
-    "GENERAL": "General",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "BACK": "Back",
+    "DOWNLOADTRANSCRIPT": "Laadi alla Transkriptsioon",
+    "ENQUIRY_ENABLE": "Päringu Lubamine",
+    "ENQUIRY_FORWARDING": "Päringu Edastamine",
+    "ENQUIRY_FORWARDING_ADDRESS": "Päringu Edastamise Aadress",
+    "LABELS": "Sildid",
+    "HEADER_ONLINE": "Võrguühendusega Päis",
+    "ONLINE_MESSAGE": "Võrguühendusega Sõnum",
+    "NAME_TITLE": "Nime Sisendi Sedel",
+    "USERNAME_PLACEHOLDER": "Kasutajanime Sisendi Kohatäide",
+    "EMAIL_TITLE": "E-kirja Sisendi Sedel",
+    "EMAIL_PLACEHOLDER": "E-kirja Sisendi Kohatäide",
+    "START_CHAT_BUTTON": "'Alusta Vestlust' Nupp",
+    "AGENTS_BUSY": "Hõivatud Agendi Sõnum",
+    "HEADER_OFFLINE": "Võrguühenduseta Päis",
+    "OFFLINE_MESSAGE": "Võrguühenduseta Sõnum",
+    "MESSAGE_TITLE": "Sõnumi Sedel",
+    "ENQUIRY_MESSAGE_PLACEHOLDER": "Päringu Sõnumi Sisendi Kohatäide",
+    "ENQUIRY_BUTTON": "Päringu Nupu Tekst",
+    "RATING_MESSAGE": "Hinnangu Sõnum",
+    "RATING_SEND": "Hinnangu Saada Nupu Tekst",
+    "RATING_SKIP": "Hinnangu Jäta vahele Nupu Tekst",
+    "ONLINE": "Võrguühendusega",
+    "OFFLINE": "Võrguühenduseta",
+    "PROACTIVE": "Ennetav",
+    "ACCEPT": "Aktsepteeri",
+    "ACCEPTMETHOD": "Aktsepteeri Meetod",
+    "ACCEPTURL": "Aktsepteeri URL",
+    "REJECT": "Lükka Tagasi",
+    "REJECTMETHOD": "Lükka Tagasi Meetod",
+    "REJECTURL": "Lükka Tagasi URL",
+    "CLOSE": "Sule",
+    "CLOSEMETHOD": "Sule Meetod",
+    "CLOSEURL": "Sule URL",
+    "EMBEDDING": "Manustamine",
+    "GENERAL": "Üldine",
+    "SELECTED": "Valitud",
+    "SELECT_ALL": "Vali Kõik",
+    "SELECT_NONE": "Ära Vali Midagi",
+    "BACK": "Tagasi",
     "HELP": {
-      "VERTICALPOSITION": "Represents the distance in percentage from top",
-      "AGENTIDENTIFIER": "Represents the agent identifier within the chat session in the snippet",
-      "HIDEWHENOFFLINE": "Hides snippet when offline",
-      "KEY": "Website short name (5 char) shown on the Agent Tab",
-      "TOKEN": "Automatically generated token used in the Script",
-      "INTEVAL": "To be selected from the list of the available intervals",
-      "TIMEZONE": "Select one from the list (default=local timezone)",
-      "ENABLERATING": "Enable it if you want the web visitor can rate the interaction at the end",
-      "ENABLEFEEDBACK": "Enable it if you want the web visitor can send a feedback (up to 150 char) at the end",
-      "FORWARDTRANSCRIPT": "Enable it if you want the web visitor is asked to receive a chat transcript via email",
-      "AUTOCLOSE": "Enable it if you want chat sessions to be closed as Unmanaged if no agent is available. Learn more about it at: https://wiki.xcallymotion.com/display/XMV/Chat+Websites#ChatWebsites-Snippet",
-      "ENABLEUNMANAGEDNOTE": "Enable it if you want the visitor is shown a message when all the agents are busy and the chat gets unmanaged",
-      "WEBSITEALIAS": "A prefix used to compose the agent name (prefix+Agent Id) shown to the web visitor during the chat session",
-      "ENABLECUSTOMERWRITING": " Enable it if you want the chat starts without waiting for an available agent (pay attention: if you enable it, your chats will never get unmanaged). Learn more at: https://wiki.xcallymotion.com/display/XMV/Chat+Websites#ChatWebsites-Snippet",
-      "MAPKEY": "The following Motion Contact Manager field:",
-      "FROMKEY": "Will be mapped in your Motion Chat Snippet as:",
-      "COPYSCRIPTTOCLIPBOARD": "Copy and paste the script text into your website",
-      "FORWARD_OFFLINE": "You can add multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
-      "MOTIONADDRESS": "The field must have the following format: <protocol>://<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
-      "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",
-      "INTERVAL": "Select one from the list",
-      "WELCOMEMESSAGE": "Leave empty if you don't want to send any welcome message",
-      "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
-      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud"
+      "VERTICALPOSITION": "Tähistab kaugust ülevalt protsentides",
+      "AGENTIDENTIFIER": "Tähistab agendi identifikaatorit vestluse sessiooni piires lõigendis",
+      "HIDEWHENOFFLINE": "Peidab lõigendi võrguühenduseta olekus",
+      "KEY": "Veebisaidi lühinimi (5 tähemärki), mida kuvatakse agendi vahelehel",
+      "TOKEN": "Automaatselt genereeritud luba, mida kasutatakse skriptis",
+      "INTEVAL": "Valitav saadaolevate intervallide loendist",
+      "TIMEZONE": "Vali loendist üks (vaikimisi=kohalik ajavöönd)",
+      "ENABLERATING": "Aktiveeri see, kui soovid, et veebi külastaja saaks suhtlust hinnata lõpus",
+      "ENABLEFEEDBACK": "Aktiveeri see, kui soovid, et veebi külastaja saaks tagasisidet saata (kuni 150 tähemärki) lõpus",
+      "FORWARDTRANSCRIPT": "Aktiveeri see, kui soovid, et veebi külastajale pakutakse vestluse transkriptsiooni saamist e-kirja teel",
+      "AUTOCLOSE": "Aktiveeri see, kui soovid vestluse sessioonide sulgemist haldamata, kui ühtegi agenti pole saadaval. Uuri selle kohta täpsemalt siin: https://wiki.xcallymotion.com/display/XMV/Chat+Websites#ChatWebsites-Snippet",
+      "ENABLEUNMANAGEDNOTE": "Aktiveeri see, kui soovid, et külastajale kuvatakse teadet, et kõik agendid on hõivatud ja vestlust ei hallata",
+      "WEBSITEALIAS": "Agendi nime koostamiseks kasutatav eesliide (eesliide+agent ID), mis kuvatakse veebi külastajale vestluse sessiooni jooksul",
+      "ENABLECUSTOMERWRITING": "Aktiveeri see, kui soovid, et vestlus algaks vaba agenti ootamata (pane tähele: kui aktiveerid selle, ei ole sinu vestlused enam kunagi haldamata). Uuri täpsemalt: https://wiki.xcallymotion.com/display/XMV/Chat+Websites#ChatWebsites-Snippet",
+      "MAPKEY": "Järgmine liikumise kontakti halduri väli:",
+      "FROMKEY": "Vastendatakse sinu liikumise vestluse lõigendis kui:",
+      "COPYSCRIPTTOCLIPBOARD": "Kopeeri ja kleebi skripti tekst oma veebisaidile",
+      "FORWARD_OFFLINE": "saad lisada mitu aadressi komaga eraldatult (näiteks john.doe@xcally.com, jane.miller@xcally.com)",
+      "MOTIONADDRESS": "Väljal peab olema järgmine formaat: <protocol>://<ipaddress>[:<port>]. Näide: https://X.Y.Z.W",
+      "MOTIONPROXY": "Väljal peab olema järgmine formaat: <protocol>://<ipaddress>[:<port>]. Näide: https://X.Y.Z.W",
+      "NAME": "Ainult numbrid, tähed ja kindlad märgid (._) on toetatud",
+      "LIST": "Kontakti halduri loend, mida kasutatakse kontaktide seostamiseks",
+      "INTERVAL": "Vali loendist üks",
+      "WELCOMEMESSAGE": "Jäta tühjaks, kui sa ei soovi saata tervitussõnumit",
+      "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud"
     },
-    "ADDRESS": "Address",
-    "ONLINESTATE": "Online Status",
-    "OFFLINESTATE": "Offline Status",
-    "RATINGSTATE": "Rating State",
-    "ENQUIRY": "Enquiry",
-    "OFFLINETEMPLATE": "Offline Template",
-    "CHATDISPOSITIONS": "Chat Dispositions",
-    "NO_CHATDISPOSITION_AVAILABLE": "No Chat Dispositions available",
-    "ADD_CHATDISPOSITION": "Add Chat Disposition",
-    "DELETE": "Delete",
-    "EDIT_CHATDISPOSITION": "Edit Chat Disposition",
-    "DELETE_CHATDISPOSITION": "Delete Chat Disposition",
-    "ID": "Id",
-    "NEW_CHATQUEUE": "New Chat Queue",
-    "NEW_CHATWEBSITE": "New Chat Website",
-    "ROUNDED": "Rounded",
-    "SQUARED": "Squared",
-    "NO_AVAILABLE_INFO": "No available info",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "ADDRESS": "Aadress",
+    "ONLINESTATE": "Võrguühendusega Olek",
+    "OFFLINESTATE": "Võrguühenduseta Olek",
+    "RATINGSTATE": "Hindamise Staatus",
+    "ENQUIRY": "Päring",
+    "OFFLINETEMPLATE": "Võrguühenduseta Mall",
+    "CHATDISPOSITIONS": "Vestluse Kasutused",
+    "NO_CHATDISPOSITION_AVAILABLE": "Vestluse Kasutamised Pole Saadaval",
+    "ADD_CHATDISPOSITION": "Lisa Vestluse Kasutamine",
+    "DELETE": "Kustuta",
+    "EDIT_CHATDISPOSITION": "Redigeeri Vestluse Kasutamist",
+    "DELETE_CHATDISPOSITION": "Kustuta Vestluse Kasutamine",
+    "ID": "ID",
+    "NEW_CHATQUEUE": "Uus Vestluse Järjekord",
+    "NEW_CHATWEBSITE": "Uus Vestluse Veebisait",
+    "ROUNDED": "Ümargune",
+    "SQUARED": "Ruudukujuline",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "ALL_TEAMS": "Kõik Tiimid",
+    "SELECTED_TEAMS": "Valitud Tiimid",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "OF": "of",
-    "CONTACT": "Contact",
-    "STARTEDAT": "Started At",
-    "STATUS": "Status",
-    "CLOSED": "Closed",
-    "OPENED": "Open",
-    "OPEN": "Open",
-    "ACCOUNT": "Account",
-    "INTERACTION": "Interaction",
-    "INTERACTIONS": "Interactions",
-    "WEBSITE": "Website",
-    "ALL": "All",
-    "SELECT_STATUS": "Select a status",
+    "CONTACT": "Kontakt",
+    "STARTEDAT": "Alustamise aeg",
+    "STATUS": "Staatus",
+    "CLOSED": "Suletud",
+    "OPENED": "Avatud",
+    "OPEN": "Avatud",
+    "ACCOUNT": "Konto",
+    "INTERACTION": "Suhtlus",
+    "INTERACTIONS": "Suhtlused",
+    "WEBSITE": "Veebisait",
+    "ALL": "Kõik",
+    "SELECT_STATUS": "Vali Staatus",
     "FILTER": "Filter",
-    "FILTERS": "Filters",
-    "TEAMADD_CHATQUEUE": "Add Team to Chat Queue",
-    "AGENTADD_CHATQUEUE": "Add Agent to Chat Queue",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
-    "CLOSEDAT": "Closed At",
-    "DISPOSITION": "Disposition",
-    "CREATEDAT": "Created At",
-    "NOTES": "Notes",
-    "NO_INTERACTION_AVAILABLE": "No interactions available",
-    "SELECTED_WEBSITE": "Select a website",
+    "FILTERS": "Filtrid",
+    "TEAMADD_CHATQUEUE": "Lisa Tiim Vestluse Järjekorda",
+    "AGENTADD_CHATQUEUE": "Lisa agent Vestluse Järjekorda",
+    "ALL_AGENTS": "Kõik Agendid",
+    "SELECTED_AGENTS": "Valitud Agendid",
+    "CLOSEDAT": "Sulgemise aeg",
+    "DISPOSITION": "Kasutamine",
+    "CREATEDAT": "Loomise aeg",
+    "NOTES": "Märkmed",
+    "NO_INTERACTION_AVAILABLE": "Suhlusi pole saadaval",
+    "SELECTED_WEBSITE": "Vali veebisait",
     "GOTOP": "Gotop",
-    "EDIT_GOTOP": "Edit Gotop",
-    "SELECT_WEBSITE": "Select a website",
-    "INFO": "Info",
-    "OFFLINEMESSAGES_CHATWEBSITE": "Go to Offline Messages",
-    "WAITINGTITLE": "Waiting Title",
-    "WAITINGMESSAGE": "Waiting Message",
-    "RATING": "Rating",
-    "NO_RATINGVALUE": "No Rating",
-    "DEFAULT_PAUSE": "Default pause",
-    "UNKNOWN": "Unknown",
-    "UNREGISTERED": "Unregistered",
-    "UNAVAILABLE": "Unavailable",
-    "NOT_INUSE": "Not in use",
-    "REACHABLE": "Reachable",
-    "IN_USE": "In use",
-    "VOICE": "Voice",
-    "INTERACTIONS_CHATWEBSITE": "Go to Interactions",
-    "REFRESH_INTERACTIONS": "Refresh Interactions",
-    "DELETE_INTERACTION": "Delete Interaction",
-    "AGENTADD_CHATWEBSITE": "Add Agent to Chat Website",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadige alla ilma manusteta",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Laadige alla koos manustega",
+    "EDIT_GOTOP": "Redigeeri Gotop",
+    "SELECT_WEBSITE": "Vali veebisait",
+    "INFO": "Teave",
+    "OFFLINEMESSAGES_CHATWEBSITE": "Mine Võrguühenduseta Sõnumitesse",
+    "WAITINGTITLE": "Ootamise Pealkiri",
+    "WAITINGMESSAGE": "Ootamise Sõnum",
+    "RATING": "Hindamine",
+    "NO_RATINGVALUE": "Hindamine puudub",
+    "DEFAULT_PAUSE": "Vaikimisi paus",
+    "UNKNOWN": "Tundmatu",
+    "UNREGISTERED": "Registreerimata",
+    "UNAVAILABLE": "Pole saadaval",
+    "NOT_INUSE": "Pole kasutusel",
+    "REACHABLE": "Kättesaadav",
+    "IN_USE": "Kasutuses",
+    "VOICE": "Hääl",
+    "INTERACTIONS_CHATWEBSITE": "Mine Suhtlustesse",
+    "REFRESH_INTERACTIONS": "Uuenda Suhtlusi",
+    "DELETE_INTERACTION": "Kustuta Suhtlus",
+    "AGENTADD_CHATWEBSITE": "Lisa Agent Vestluse Veebisaidile",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadi alla ilma manusteta",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Laadi alla koos manustega",
     "ENABLESENDBUTTON": "Luba nupp Saada",
     "FEEDBACKTITLE": "Tagasiside pealkiri",
     "LASTMESSAGE": "Viimane teade",
-    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
-    "TEAMS_ASSOCIATION": "Võistkondade liit",
+    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
+    "TEAMS_ASSOCIATION": "Tiimide liit",
     "TOOLTIP_SCREENRECORDING_ON": "Ekraanisalvestus pooleli",
     "VIDAOO": "Vidaoo",
     "VIDAOOAPIKEY": "Vidaoo Api võti",
     "OPEN_NEW_INTERACTION": "Avage uus suhtlus",
     "SUBJECT": "Teema",
     "ADD_NOTE": "Lisada märkus",
-    "CANNED_ANSWER_NOT_FOUND": "Konserveeritud vastuseid ei leitud",
-    "NOTE": "Märge",
+    "CANNED_ANSWER_NOT_FOUND": "Salvestatud vastuseid ei leitud",
+    "NOTE": "Märkus",
     "VIDAOOMETADATA": "Vidaoo metaandmed",
     "VIDAOONOTE": "Vidaoo märkus",
     "VIDAOOTOPIC": "Vidaoo teema",
     "CHANNELID": "Kanali ID",
-    "EDIT_TVOX": "Muutke TVoxi",
+    "EDIT_TVOX": "Muuda TVoxi",
     "MOTIONTITLE": "Liikumise pealkiri",
     "MOTIONURL": "Liikumise URL",
     "MOTIONURLONANSWER": "Liikumise URL vastuses",
     "SERVICEID": "Teenuse ID",
     "SERVICENAME": "Teenuse nimi",
     "TVOX": "TVox",
-    "TVOXIP": "TVoxi IP -aadress",
+    "TVOXIP": "TVoxi IP-aadress",
     "TVOXLOGINURL": "TVox Logi sisse REST Url",
     "TVOXPASSWD": "TVoxi parool",
     "TVOXSESSIONURL": "TVoxi seansi REST Url",
-    "TVOXURL": "TVoxi IP -aadress",
+    "TVOXURL": "TVoxi IP-aadress",
     "TVOXUSERNAME": "TVoxi kasutajanimi",
     "LABELTEXT": "Sildi tekst",
     "TEXT_BUTTON_COLOR": "Teksti nupu värv"
index 2592ba3..494d629 100644 (file)
 {
   "CONTACTMANAGER": {
-    "SELECT_TAG": "Select tags",
-    "CUSTOMER_JOURNEY": "Customer Journey",
-    "USERID": "Recall Agent ID",
-    "PRIORITY": "Priority",
-    "MOTIONDIALER": "Motion Bull",
-    "IMPORT_CONTACTS": "Import Contacts",
-    "PREFIX": "Dial Prefix",
-    "VOICEQUEUEID": "VoiceQueue ID",
-    "CAMPAIGNID": "Campaign ID",
-    "STATE": "State",
-    "NAME": "Name",
-    "LISTS": "Lists",
-    "UNIQUEID": "Unique Id",
-    "STATUS": "Status",
-    "STARTTIME": "Start Time",
-    "ENDTIME": "End Time",
-    "MOTION_BULL": "Motion Bull",
+    "SELECT_TAG": "Vali sildid",
+    "CUSTOMER_JOURNEY": "Klienditeekond",
+    "USERID": "Kutsu tagasi Agendi ID",
+    "PRIORITY": "Prioriteet",
+    "MOTIONDIALER": "Liikumise Pull",
+    "IMPORT_CONTACTS": "Impordi Kontaktid",
+    "PREFIX": "Helistamise Eesliide",
+    "VOICEQUEUEID": "Hääljärjekorra ID",
+    "CAMPAIGNID": "Kampaania ID",
+    "STATE": "Olek",
+    "NAME": "Nimi",
+    "LISTS": "Loendid",
+    "UNIQUEID": "Unikaalne ID",
+    "STATUS": "Staatus",
+    "STARTTIME": "Algusaeg",
+    "ENDTIME": "Lõpuaeg",
+    "MOTION_BULL": "Liikumise Pull",
     "HOPPER": "Hopper",
-    "FINAL": "Hopper Final",
-    "HISTORY": "Hopper History",
-    "SCHEDULEDAT": "Scheduled At",
-    "SEARCH_FOR_ANYONE": "Search",
-    "EDIT_LIST": "Edit List",
-    "EDIT_HOPPER": "Edit Hopper",
-    "DELETE_LIST": "Delete List",
-    "DELETE_HOPPER": "Delete Hopper",
-    "RELOAD": "Reload",
-    "NO_COMPANIES": "No Company",
-    "NO_AVAILABLE_ITEMS": "No Available Items",
-    "ADD": "Add",
+    "FINAL": "Hopperi Finaal",
+    "HISTORY": "Hopperi Ajalugu",
+    "SCHEDULEDAT": "Ajastatud",
+    "SEARCH_FOR_ANYONE": "Otsi",
+    "EDIT_LIST": "Redigeeri loendit",
+    "EDIT_HOPPER": "Redigeeri Hopperit",
+    "DELETE_LIST": "Kustuta Loend",
+    "DELETE_HOPPER": "Kustuta Hopper",
+    "RELOAD": "Laadi uuesti",
+    "NO_COMPANIES": "Ettevõte puudub",
+    "NO_AVAILABLE_ITEMS": "Üksusi ei ole Saadaval",
+    "ADD": "Lisa",
     "ERRORS": {
-      "NAME_REQUIRED": "Mandatory field",
-      "FIRSTNAME_REQUIRED": "Mandatory field",
-      "PHONE_REQUIRED": "Mandatory field",
-      "ALIAS_REQUIRED": "Mandatory field",
-      "VALUE_REQUIRED": "Mandatory field",
-      "EMAIL_MUST_VALID": "Wrong format",
-      "PHONEBAR_API": "Check the MotionBar is running and the remote control switch for the agent is turned on",
+      "NAME_REQUIRED": "Kohustuslik väli",
+      "FIRSTNAME_REQUIRED": "Kohustuslik väli",
+      "PHONE_REQUIRED": "Kohustuslik väli",
+      "ALIAS_REQUIRED": "Kohustuslik väli",
+      "VALUE_REQUIRED": "Kohustuslik väli",
+      "EMAIL_MUST_VALID": "Vale formaat",
+      "PHONEBAR_API": "Kontrolli, et Liikumisriba töötaks ja kaugjuhtimislüliti agendi jaoks oleks sees",
       "ACTIONTYPE_REQUIRED": "Kohustuslik väli",
       "CLICKTOACTION_REQUIRED": "Kohustuslik väli"
     },
-    "DESCRIPTION": "Description",
-    "DISPOSITION": "Disposition",
-    "DISPOSITIONS": "Dispositions",
-    "VOICEDISPOSITIONS": "Voice Dispositions",
-    "NEW_VOICEDISPOSITION": "New Voice Disposition",
-    "CUSTOM_FIELDS": "Custom Fields",
-    "ADD_LIST": "Add List",
-    "BACK": "Back",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "COMPANIES": "Companies",
-    "EDIT_COMPANY": "Edit Company",
-    "DELETE_COMPANY": "Delete Company",
-    "PHONE": "Phone",
-    "EMAIL": "Email",
-    "ADD_COMPANY": "Add Company",
-    "CONTACTS": "Contacts",
-    "NEW_LIST": "New List",
-    "FIRSTNAME": "First Name",
-    "LASTNAME": "Last Name",
-    "LIST": "List",
-    "COMPANY": "Company",
-    "ADD_CONTACT": "Add Contact",
-    "EDIT_CONTACT": "Edit Contact",
-    "MERGE_CONTACT": "Merge Contact",
-    "DUPLICATE_CONTACT": "Duplicate Contact",
-    "DELETE_CONTACT": "Delete Contact",
-    "CREATED_AT": "Created At",
-    "SAVE": "Save",
-    "DETAIL": "Detail",
-    "PERSONAL_INFO": "Personal Info",
-    "MOBILE": "Mobile",
-    "FAX": "Fax",
-    "TAGS": "Tags",
-    "SHOW_ALL_FIELDS": "Show all fields",
-    "FEWER_FIELDS": "Show less fields",
-    "COUNTRY": "Country",
-    "CITY": "City",
-    "STREET": "Street",
-    "POSTALCODE": "Postal Code",
-    "DELETE": "Delete",
-    "DELETE_ALL": "Delete All",
-    "CONTACTMANAGER": "Contacts Manager",
-    "ID": "Id",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
-    "CUSTOMFIELDS": "Custom Fields",
-    "NO_CUSTOMFIELD_AVAILABLE": "No Custom Fields available",
-    "ADD_TAG": "Add Tag",
-    "NO_TAG": "No Tags",
+    "DESCRIPTION": "Kirjeldus",
+    "DISPOSITION": "Kasutus",
+    "DISPOSITIONS": "Kasutused",
+    "VOICEDISPOSITIONS": "Hääle Kasutused",
+    "NEW_VOICEDISPOSITION": "Uus Hääle Kasutus",
+    "CUSTOM_FIELDS": "Kohandatud Väljad",
+    "ADD_LIST": "Lisa Loendid",
+    "BACK": "Tagasi",
+    "SELECTED": "Valitud",
+    "SELECT_ALL": "Vali Kõik",
+    "SELECT_NONE": "Ära Vali Midagi",
+    "COMPANIES": "Ettevõtted",
+    "EDIT_COMPANY": "Redigeeri Ettevõtet",
+    "DELETE_COMPANY": "Kustuta Ettevõtted",
+    "PHONE": "Telefon",
+    "EMAIL": "E-post",
+    "ADD_COMPANY": "Lisa Ettevõte",
+    "CONTACTS": "Kontaktid",
+    "NEW_LIST": "Uus loend",
+    "FIRSTNAME": "Eesnimi",
+    "LASTNAME": "Perekonnanimi",
+    "LIST": "Loend",
+    "COMPANY": "Ettevõte",
+    "ADD_CONTACT": "Lisa Kontakt",
+    "EDIT_CONTACT": "Muuda Kontakti",
+    "MERGE_CONTACT": "Koosta Kontakt",
+    "DUPLICATE_CONTACT": "Dubleeri Kontakti",
+    "DELETE_CONTACT": "Kustuta Kontakt",
+    "CREATED_AT": "Loomisaeg",
+    "SAVE": "Salvesta",
+    "DETAIL": "Üksikasi",
+    "PERSONAL_INFO": "Isiklik teave",
+    "MOBILE": "Mobiil",
+    "FAX": "Faks",
+    "TAGS": "Sildid",
+    "SHOW_ALL_FIELDS": "Näita kõik väljad",
+    "FEWER_FIELDS": "Näita vähem välju",
+    "COUNTRY": "Riik",
+    "CITY": "Linn",
+    "STREET": "Tänav",
+    "POSTALCODE": "Postiindeks",
+    "DELETE": "Kustuta",
+    "DELETE_ALL": "Kustuta Kõik",
+    "CONTACTMANAGER": "Kontaktide Haldur",
+    "ID": "ID",
+    "SETTINGS": "Sätted",
+    "GENERAL": "Üldine",
+    "CUSTOMFIELDS": "Kohandatud Väljad",
+    "NO_CUSTOMFIELD_AVAILABLE": "Kohandatud Väljad pole saadaval",
+    "ADD_TAG": "Lisa Silt",
+    "NO_TAG": "Sildid Puuduvad",
     "ALIAS": "Alias",
-    "TYPE": "Type",
-    "VALUE": "Value",
-    "ADD_CUSTOMFIELD": "Add Custom Field",
-    "EDIT_CUSTOMFIELD": "Edit Custom Field",
-    "DELETE_CUSTOMFIELD": "Delete Custom Field",
-    "NEW_COMPANY": "New Company",
-    "NEW_CONTACT": "New Contact",
-    "NEW_TAG": "New Tag",
-    "UPLOAD_CONTACTS": "Upload Contacts",
-    "FINISH": "Finish",
-    "SUCCESS": "Success",
-    "FAILURE": "Failure",
-    "ALL_CONTACTS": "All Contacts",
-    "NEW_CUSTOMFIELD": "New Custom Field",
-    "NO_VOICEDISPOSITION_AVAILABLE": "No Voice Dispositions available",
-    "ADD_VOICEDISPOSITION": "Add Voice Disposition",
-    "EDIT_VOICEDISPOSITION": "Edit Voice Disposition",
-    "DELETE_VOICEDISPOSITION": "Delete Voice Disposition",
-    "VAT": "VAT",
-    "COMPANYID": "Company ID",
-    "WEBSITE": "Website",
-    "EMAIL_DOMAIN": "Email Domain",
-    "ADDRESS": "Address",
-    "POSTAL_CODE": "Postal Code",
-    "SHIPMENTADDRESS": "Shipment Address",
-    "COPY_CONTACT": "Copy Contact",
-    "GOTOCONTACTS_LIST": "Show Contacts",
-    "GOTOCONTACTS_COMPANY": "Show Contacts",
-    "ADD_AGENT_TO_LIST": "Add Agent to List",
-    "AGENTADD_LIST": "Add Agents to List",
-    "NO_AVAILABLE_INFO": "No available info",
-    "NONE": "None",
-    "FULLNAME": "Full Name",
-    "CHECK_DUPLICATES": "Check Duplicates",
-    "DUPLICATES": "Duplicates",
-    "UPLOAD_CSV": "Upload CSV",
-    "TAG": "Tag",
-    "UPLOAD": "Upload",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
-    "DATE_OF_BIRTH": "Birthdate",
-    "DATEOFBIRTH": "Birthdate",
-    "NOTES": "Notes",
-    "EXPORTCSVCONTACTS_LIST": "Export to CSV",
-    "GOTO_LIST": "Show Contacts",
-    "GOTO_COMPANY": "Show Contacts",
-    "REQUIRED": "Required",
-    "GLOBALCUSTOMFIELDS": "Global Custom Fields",
-    "NEW_GLOBALCUSTOMFIELD": "New Custom Fields",
-    "ADD_GLOBALCUSTOMFIELD": "Add Custom Field",
-    "EDIT_GLOBALCUSTOMFIELD": "Edit Custom Field",
-    "DELETE_GLOBALCUSTOMFIELD": "Delete Custom Field",
+    "TYPE": "Tüüp",
+    "VALUE": "Väärtus",
+    "ADD_CUSTOMFIELD": "Lisa Kohandatud Väli",
+    "EDIT_CUSTOMFIELD": "Redigeeri Kohandatud Välja",
+    "DELETE_CUSTOMFIELD": "Kustuta Kohandatud Väli",
+    "NEW_COMPANY": "Uus Ettevõte",
+    "NEW_CONTACT": "Uus Kontakt",
+    "NEW_TAG": "Uus Silt",
+    "UPLOAD_CONTACTS": "Laadi üles Kontaktid",
+    "FINISH": "Lõpp",
+    "SUCCESS": "Õnnestus",
+    "FAILURE": "Nurjus",
+    "ALL_CONTACTS": "Kõik Kontaktid",
+    "NEW_CUSTOMFIELD": "Uue Kliendi Väli",
+    "NO_VOICEDISPOSITION_AVAILABLE": "Hääle Kasutused pole saadaval",
+    "ADD_VOICEDISPOSITION": "Lisa Hääle Kasutus",
+    "EDIT_VOICEDISPOSITION": "Redigeeri Hääle Kasutust",
+    "DELETE_VOICEDISPOSITION": "Kustuta Hääle Kasutus",
+    "VAT": "KM",
+    "COMPANYID": "Ettevõtte ID",
+    "WEBSITE": "Veebisait",
+    "EMAIL_DOMAIN": "E-posti Domeen",
+    "ADDRESS": "Aadress",
+    "POSTAL_CODE": "Postiindeks",
+    "SHIPMENTADDRESS": "Saadetise Aadress",
+    "COPY_CONTACT": "Kopeeri Kontakt",
+    "GOTOCONTACTS_LIST": "Kuva Kontaktid",
+    "GOTOCONTACTS_COMPANY": "Kuba Kontaktid",
+    "ADD_AGENT_TO_LIST": "Lisa Agent Loendisse",
+    "AGENTADD_LIST": "Lisa Agendid Loendisse",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "NONE": "Ühtegi",
+    "FULLNAME": "Täisnimi",
+    "CHECK_DUPLICATES": "Kontrolli Dublikaate",
+    "DUPLICATES": "Dublikaadid",
+    "UPLOAD_CSV": "Laadi üles CSV",
+    "TAG": "Silt",
+    "UPLOAD": "Laadi üles",
+    "ALL_AGENTS": "Kõik Agendid",
+    "SELECTED_AGENTS": "Valitud Agendid",
+    "DATE_OF_BIRTH": "Sünnikuupäev",
+    "DATEOFBIRTH": "Sünnikuupäev",
+    "NOTES": "Märkmed",
+    "EXPORTCSVCONTACTS_LIST": "Ekspordi CSVsse",
+    "GOTO_LIST": "Kuva Kontaktid",
+    "GOTO_COMPANY": "Kuva Kontaktid",
+    "REQUIRED": "Nõutud",
+    "GLOBALCUSTOMFIELDS": "Üldised Kohandatud Väljad",
+    "NEW_GLOBALCUSTOMFIELD": "Uued Kohandatud Väljad",
+    "ADD_GLOBALCUSTOMFIELD": "Lisa Kohandatud Väli",
+    "EDIT_GLOBALCUSTOMFIELD": "Redigeeri Kohandatud Välja",
+    "DELETE_GLOBALCUSTOMFIELD": "Kustuta Kohandatud Väli",
     "JSCRIPTY": "Jscripty",
-    "SESSIONS": "Sessions",
+    "SESSIONS": "Sessioonid",
     "AGENT": "Agent",
-    "PROJECT": "Project",
-    "SELECT_LIST": "Select a list",
-    "SELECT_COMPANY": "Select a company",
-    "SELECT_TAGS": "Select one or more tags",
+    "PROJECT": "Projekt",
+    "SELECT_LIST": "Vali loend",
+    "SELECT_COMPANY": "Vali ettevõte",
+    "SELECT_TAGS": "Vali üks või enam silte",
     "HELP": {
-      "PHONEBAR_API_MESSAGE": "To enable click-to-call, insert a phone number and check the remote control switch for the Agent is turned on",
-      "PHONEBAR_API": "To enable click-to-call, insert a phone number and check the remote control switch for the Agent is turned on"
+      "PHONEBAR_API_MESSAGE": "Click-to-call aktiveerimiseks sisesta telefoninumber ja kontrolli, kas kaugjuhtimislüliti Agendi jaoks on sees",
+      "PHONEBAR_API": "Click-to-call aktiveerimiseks sisesta telefoninumber ja kontrolli, kas kaugjuhtimislüliti Agendi jaoks on sees"
     },
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu leheküljel",
     "OF": "of",
-    "SOCIAL": "Social",
-    "ROW": "Row",
-    "EXPORT_ERRORS": "Export Errors",
-    "UPLOAD_COMPLETED": "Upload Completed",
-    "STOP": "Stop",
-    "SELECT_FILE": "Select File",
+    "SOCIAL": "Sotsiaalne",
+    "ROW": "Rida",
+    "EXPORT_ERRORS": "Ekspordi Vead",
+    "UPLOAD_COMPLETED": "Üleslaadimine Lõpetatud",
+    "STOP": "Peata",
+    "SELECT_FILE": "Vali Fail",
     "ALL": "Kõik",
     "BILLINGINFORMATION": "Arveldusinfo",
     "COMPANY_FISCAL_TYPE": "Ettevõtte maksutüüp",
     "VATNUMBER_CF": "Codice Fiscale / käibemaks",
     "ACTIONTYPE": "Toimingu tüüp",
     "CLICKTOACTION": "Klõpsake toimimiseks",
-    "ADDITIONAL_PHONES": "Täiendavad telefonid",
-    "UPDATE_EXISTING_CONTACTS": "Värskendage olemasolevaid kontakte",
     "DIALTIMEZONE": "Vali ajavöönd",
-    "TIMEZONE": "Vali ajavöönd",
-    "MOVE_DOWN": "Liigu alla",
-    "MOVE_UP": "Üles liikuma"
+    "TIMEZONE": "Vali ajavöönd"
   }
 }
index 0a5b7eb..739750c 100644 (file)
 {
   "DASHBOARDS": {
-    "DOWNLOAD": "Download",
-    "UNMANAGED_RATE": "Unmanaged Rate",
-    "UNMANAGED_RATE_TEXT": "Interactions Unmanaged Rate",
-    "VOICE_WAITING": "WAITING",
-    "VOICE_WAITING_TEXT": "WAITING QUEUE CALLS",
-    "VOICE_TALKING": "TALKING",
-    "VOICE_TALKING_TEXT": "ACTIVE QUEUE CALLS",
-    "VOICE_ANSWERED": "ANSWERED",
-    "VOICE_ANSWERED_TEXT": "ANSWERED QUEUE CALLS",
-    "VOICE_ABANDONED": "ABANDONED",
-    "VOICE_ABANDONED_TEXT": "ABANDONED QUEUE CALLS",
-    "VOICE_TOTAL_OFFERED": "TOTAL OFFERED",
-    "VOICE_TOTAL_OFFERED_TEXT": "TOTAL QUEUE CALLS",
-    "TODAY_INTERACTIONS_STATS": "Interactions Daily Stats",
-    "VOICE_AVG_HOLD_TIME": "AVERAGE HOLD TIME",
-    "VOICE_AVG_HOLD_TIME_TEXT": "QUEUE CALLS AVG HOLD TIME",
-    "VOICE_AVG_TALK_TIME": "AVERAGE TALK TIME",
-    "VOICE_AVG_TALK_TIME_TEXT": "QUEUE CALLS TALK TIME",
-    "VOICE_ANSWER_RATE": "ANSWER RATE",
-    "VOICE_ANSWER_RATE_TEXT": "QUEUE CALLS ANSWER RATE",
-    "VOICE_ABANDON_RATE": "ABANDON RATE",
-    "VOICE_ABANDON_RATE_TEXT": "QUEUE CALLS ABANDON RATE",
-    "VOICE_UNMANAGED": "UNMANAGED",
-    "VOICE_UNMANAGED_TEXT": "UNMANAGED QUEUE CALLS",
-    "OPENED_TEXT": "Opened Interactions",
-    "MANAGED": "Managed",
-    "MANAGED_TEXT": "Managed Interactions",
-    "ABANDONED": "Abandoned",
-    "ABANDONED_TEXT": "Abandoned Interactions",
-    "ABANDONED_RATE": "Abandoned Rate",
-    "ABANDONED_RATE_TEXT": "Interactions Abandon Rate",
-    "TOTAL_OFFERED": "Total Offered",
-    "TOTAL_OFFERED_TEXT": "Offered Interactions",
-    "AVG_HOLD_TIME_TEXT": "Interactions AVG Hold Time",
-    "MANAGED_RATE": "Managed Rate",
-    "MANAGED_RATE_TEXT": "Interactions Managed Rate ",
-    "AVG_MANAGED_TIME": "AVG Management Time",
-    "AVG_MANAGED_TIME_TEXT": "Interactions AVG Management Time",
-    "NO_DISPOSITION_SET": "No disposition set",
-    "AGENTS": "Agents",
-    "TRANSFER": "Transfer",
-    "NO_DATA_AVAILABLE": "No data available",
-    "CUSTOMER_JOURNEY": "Customer Journey",
-    "ME": "Me",
-    "CURRENTLY_IN_USE_BY": "Currently in use by",
-    "NOTAVAILABLE": "Not available",
-    "CLICKRELOAD": "New abandoned calls! Reload please",
-    "ASSIGNTO": "Assign to",
-    "SELECT_CAMPAIGN": "Select a Queue",
-    "FREE": "Free",
-    "RESERVED": "Reserved",
-    "QUEUECALLEREXITREASON": "Reason",
-    "QUEUECALLEREXITAT": "Dropped",
-    "LASTASSIGNEDTO": "Last Assigned To",
-    "ABANDONEDQUEUECALLS": "Abandoned Queue Calls",
-    "ABANDONAT": "Abandoned",
-    "QUEUE": "Queue",
-    "SELECT_SUBSTATUS": "Select Substatus",
-    "READ": "Read",
-    "UNREAD": "Unread",
-    "SELECT_READ_UNREAD": "Select Read/Unread",
-    "SELECT_AGENT": "Select Agent",
-    "MARK_AS_UNREAD": "Mark as unread",
-    "FILTER_VOICE_QUEUES": "Filter Voice Queues",
-    "CHANNEL_WAITING_TEXT": "Waiting Queue Interactions",
-    "CHANNEL_QUEUE": "Queue",
-    "CHANNEL_FROM": "From",
-    "LOADING_INTERACTION": "We are loading the interaction...",
-    "JANUARY": "January",
-    "FEBRUARY": "February",
-    "MARCH": "March",
-    "APRIL": "April",
-    "MAY": "May",
-    "JUNE": "June",
-    "JULY": "July",
+    "DOWNLOAD": "Allalaadimine",
+    "UNMANAGED_RATE": "Haldamata Määr",
+    "UNMANAGED_RATE_TEXT": "Suhtluse Haldamata Määr",
+    "VOICE_WAITING": "OOTEL",
+    "VOICE_WAITING_TEXT": "OOTEJÄRJEKORRA KÕNED",
+    "VOICE_TALKING": "RÄÄKIMINE",
+    "VOICE_TALKING_TEXT": "AKTIIVSE JÄRJEKORRA KÕNED",
+    "VOICE_ANSWERED": "VASTATUD",
+    "VOICE_ANSWERED_TEXT": "VASTATUD JÄRJEKORRA KÕNED",
+    "VOICE_ABANDONED": "TAGASILÜKATUD",
+    "VOICE_ABANDONED_TEXT": "TAGASILÜKATUD JÄRJEKORRA KÕNED",
+    "VOICE_TOTAL_OFFERED": "KOKKU PAKUTUD",
+    "VOICE_TOTAL_OFFERED_TEXT": "JÄRJEKORRA KÕNED KOKKU",
+    "TODAY_INTERACTIONS_STATS": "Suhtluse Päeva Statistika",
+    "VOICE_AVG_HOLD_TIME": "KESKMINE OOTEAEG",
+    "VOICE_AVG_HOLD_TIME_TEXT": "JÄRJEKORRA KÕNEDE KESKMINE OOTEAEG",
+    "VOICE_AVG_TALK_TIME": "KESKMINE KÕNEAEG",
+    "VOICE_AVG_TALK_TIME_TEXT": "JÄRJEKORRA KÕNEDE RÄÄKIMISE AEG",
+    "VOICE_ANSWER_RATE": "VASTUSE MÄÄR",
+    "VOICE_ANSWER_RATE_TEXT": "JÄRJEKORRA KÕNEDE VASUSE MÄÄR",
+    "VOICE_ABANDON_RATE": "TAGASILÜKATUD MÄÄR",
+    "VOICE_ABANDON_RATE_TEXT": "JÄRJEKORRA KÕNEDE TAGASILÜKATUD MÄÄR",
+    "VOICE_UNMANAGED": "HALDAMATA",
+    "VOICE_UNMANAGED_TEXT": "HALDAMATA JÄRJEKORRA KÕNED",
+    "OPENED_TEXT": "Avatud Suhtlused",
+    "MANAGED": "Hallatud",
+    "MANAGED_TEXT": "Hallatud Suhtlused",
+    "ABANDONED": "Tagasilükatud",
+    "ABANDONED_TEXT": "Tagasilükatud Suhtlused",
+    "ABANDONED_RATE": "Tagasilükatud Määr",
+    "ABANDONED_RATE_TEXT": "Suhtluste Tagasilükatud Määr",
+    "TOTAL_OFFERED": "Kokku Pakutud",
+    "TOTAL_OFFERED_TEXT": "Pakutud Suhtlused",
+    "AVG_HOLD_TIME_TEXT": "Suhtluse AVG Ooteaeg",
+    "MANAGED_RATE": "Hallatud Määr",
+    "MANAGED_RATE_TEXT": "Suhtluste Hallatud Määr",
+    "AVG_MANAGED_TIME": "AVG Haldusaeg",
+    "AVG_MANAGED_TIME_TEXT": "Suhtluste AVG Haldusaeg",
+    "NO_DISPOSITION_SET": "Kasutust pole määratud",
+    "AGENTS": "Agendid",
+    "TRANSFER": "Edastus",
+    "NO_DATA_AVAILABLE": "Andmed pole saadaval",
+    "CUSTOMER_JOURNEY": "Kliendi Teekond",
+    "ME": "Mina",
+    "CURRENTLY_IN_USE_BY": "Praegune kasutaja",
+    "NOTAVAILABLE": "Pole saadaval",
+    "CLICKRELOAD": "Uued tagasilükatud kõned! Palun laadi uuesti",
+    "ASSIGNTO": "Määra",
+    "SELECT_CAMPAIGN": "Vali Järjekord",
+    "FREE": "Vaba",
+    "RESERVED": "Reserveeritud",
+    "QUEUECALLEREXITREASON": "Põhjus",
+    "QUEUECALLEREXITAT": "Katkestatud",
+    "LASTASSIGNEDTO": "Viimati määratud",
+    "ABANDONEDQUEUECALLS": "Tagasilükatud Järjekorra Kõned",
+    "ABANDONAT": "Tagasilükatud",
+    "QUEUE": "Järjekord",
+    "SELECT_SUBSTATUS": "Vali Alamstaatus",
+    "READ": "Loetud",
+    "UNREAD": "Lugemata",
+    "SELECT_READ_UNREAD": "vali Loetud/Lugemata",
+    "SELECT_AGENT": "Vali Agent",
+    "MARK_AS_UNREAD": "Märgi kui lugemata",
+    "FILTER_VOICE_QUEUES": "Filtreeri Hääle Järjekorrad",
+    "CHANNEL_WAITING_TEXT": "Ootel Järjekorra Suhtlused",
+    "CHANNEL_QUEUE": "Järjekord",
+    "CHANNEL_FROM": "Alates",
+    "LOADING_INTERACTION": "Laadime suhtlust...",
+    "JANUARY": "Jaanuar",
+    "FEBRUARY": "Veebruar",
+    "MARCH": "Märts",
+    "APRIL": "Aprill",
+    "MAY": "Mai",
+    "JUNE": "Juuni",
+    "JULY": "Juuli",
     "AUGUST": "August",
     "SEPTEMBER": "September",
-    "OCTOBER": "October",
+    "OCTOBER": "Oktoober",
     "NOVEMBER": "November",
-    "DECEMBER": "December",
-    "MON": "Mon",
-    "TUE": "Tue",
-    "WED": "Wed",
-    "THU": "Thu",
-    "FRI": "Fri",
-    "SAT": "Sat",
-    "SUN": "Sun",
-    "DELETE": "Delete",
-    "LAST_3_DAYS": "Last 3 Day",
-    "LAST_YEAR": "Last Year",
-    "THIS_YEAR": "This Year",
-    "LAST_MONTH": "Last Month",
-    "THIS_MONTH": "This Month",
-    "LAST_WEEK": "Last Week",
-    "THIS_WEEK": "This Week",
-    "YESTERDAY": "Yesterday",
-    "TODAY": "Today",
-    "SELECT_DATE": "Select Start Date",
-    "HOME": "Home",
-    "SET_AS": "Set As",
-    "PENDING": "Pending",
-    "CANNED_ANSWER_NOT_FOUND": "No Canned Answers were found",
-    "CANNED_ANSWER_SEARCH": "Enter a text to search a Canned Answer",
-    "TAGS": "Tags",
-    "SELECT_TAG": "Select Tag",
-    "TYPE": "Type",
-    "SOURCE": "Source",
-    "DESTINATION": "Destination",
-    "CALLERID": "Caller ID",
-    "END_AT": "End At",
-    "DURATION": "Duration",
-    "CHAT": "Chat",
-    "MAIL": "Email",
-    "SMS": "Sms",
-    "OPENCHANNEL": "Open Channel",
-    "FAX": "Fax",
-    "NOT_ASSIGNED": "Not Assigned",
-    "UNKNOWN": "Unknown",
-    "SELECT_USER": "Select User",
-    "LAST_MESSAGE": "Last message",
-    "USER": "User",
-    "RATING": "Rating",
-    "FEEDBACK": "Feedback",
-    "SUBJECT": "Subject",
-    "CUSTOMER_IP": "Customer IP",
-    "REFERER": "Referer",
-    "ACCOUNT": "Account",
-    "WEBSITE": "Website",
+    "DECEMBER": "Detsember",
+    "MON": "E",
+    "TUE": "T",
+    "WED": "K",
+    "THU": "N",
+    "FRI": "R",
+    "SAT": "L",
+    "SUN": "P",
+    "DELETE": "Kustuta",
+    "LAST_3_DAYS": "Viimased 3 Päeva",
+    "LAST_YEAR": "Viimane Aasta",
+    "THIS_YEAR": "See Aasta",
+    "LAST_MONTH": "Viimane Kuu",
+    "THIS_MONTH": "See Kuu",
+    "LAST_WEEK": "Viimane Nädal",
+    "THIS_WEEK": "See Nädal",
+    "YESTERDAY": "Eile",
+    "TODAY": "Täna",
+    "SELECT_DATE": "Vali Alguse Kuupäev",
+    "HOME": "Kodu",
+    "SET_AS": "Määra kui",
+    "PENDING": "Ootel",
+    "CANNED_ANSWER_NOT_FOUND": "Salvestatud Vastuseid ei leitud",
+    "CANNED_ANSWER_SEARCH": "Sisesta Salvestatud Vastuste otsimiseks tekst",
+    "TAGS": "Sildid",
+    "SELECT_TAG": "Vali Silt",
+    "TYPE": "Tüüp",
+    "SOURCE": "Lähtekoht",
+    "DESTINATION": "Sihtpunkt",
+    "CALLERID": "Helistaja ID",
+    "END_AT": "Lõpetamise aeg",
+    "DURATION": "Kestus",
+    "CHAT": "Vestlus",
+    "MAIL": "E-post",
+    "SMS": "Sõnum",
+    "OPENCHANNEL": "Ava Kanal",
+    "FAX": "Faks",
+    "NOT_ASSIGNED": "Pole määratud",
+    "UNKNOWN": "Teadmata",
+    "SELECT_USER": "Vali Kasutaja",
+    "LAST_MESSAGE": "Viimane sõnum",
+    "USER": "Kasutaja",
+    "RATING": "Hinnang",
+    "FEEDBACK": "Tagasiside",
+    "SUBJECT": "Teema",
+    "CUSTOMER_IP": "Kliendi IP",
+    "REFERER": "Viitaja",
+    "ACCOUNT": "Konto",
+    "WEBSITE": "Veebisait",
     "AGENT": "Agent",
-    "CREATED_AT": "Created At",
-    "CLOSED_AT": "Closed At",
-    "DISPOSITION": "Disposition",
-    "CONTACT": "Contact",
-    "INTERACTION": "Interaction",
-    "BROWSER_NAME": "Browser Name",
-    "BROWSER_VERSION": "Browser Version",
-    "OS_NAME": "Operating System Name",
-    "OS_VERSION": "Operating System Version",
-    "DEVICE_MODEL": "Device Model",
-    "DEVICE_VENDOR": "Device Vendor",
-    "DEVICE_TYPE": "Device Type",
-    "RECALLME": "Recall Me",
-    "DROP_RATE": "Drop Rate",
-    "DROPPED": "Dropped",
-    "DROPPED_TEXT": "Dropped Queue Calls",
-    "DETAIL": "Detail",
-    "MOTION_BULL": "Motion Bull",
-    "LIMITED": "Limited",
-    "LIMITED_TEXT": "IVR Campaigns Calls Originated/Limit",
-    "DASHBOARDS": "Dashboards",
-    "RECORDINGS": "Recordings",
-    "TODAY_MOTION_BULL_STATS": "Queue Campaigns Daily Stats",
-    "ORIGINATED": "Originated",
-    "ORIGINATED_TEXT": "Queue Calls Originated",
-    "UPDATE": "Update",
-    "MORE": "More",
-    "MOTIONDIALER": "Motion Bull",
-    "DISPOSE": "Dispose",
-    "QUEUES": "Queues",
-    "DIALER_CALL": "Dialer Call",
-    "ELAPSED_TIME": "Elapsed Time",
-    "EDIT": "Edit",
-    "MERGE": "Merge",
-    "DUPLICATE": "Duplicate",
-    "UNIQUEID": "Uniqueid",
-    "CAMPAIGN": "Campaign",
-    "NONE": "None",
-    "NAME": "Name",
-    "ANSWER_MACHINE": "Answer Machine",
-    "INTERESTED": "Interested",
-    "NOT_INTERESTED": "Not Interested",
-    "PERSONAL_INFO": "Personal Info",
-    "SOLD": "Sold",
-    "SPECIAL": "Special",
-    "BLACKLIST": "Blacklist",
-    "RESCHEDULE": "Reschedule",
-    "FIRSTNAME": "Firstname",
-    "LASTNAME": "Lastname",
-    "MOBILE": "Mobile",
-    "DATE_OF_BIRTH": "Birthdate",
-    "COMPANY": "Company",
-    "TAG": "Tag",
-    "COUNTRY": "Country",
-    "CITY": "City",
-    "STREET": "Street",
-    "POSTALCODE": "Postal Code",
-    "CUSTOM_FIELDS": "Custom Fields",
-    "GENERAL": "General",
-    "VOICE": "Voice",
-    "TODAY_IVR_CAMPAIGNS_STATS": "Daily Ivr Campaigns Stats",
-    "TODAY_INBOUND_STATS": "Inbound Queue Daily Stats",
-    "TODAY_OUTBOUND_STATS": "Outbound Daily Stats",
-    "WAITING": "Waiting",
-    "TALKING": "Talking",
-    "INBOUND_ANSWERED": "Answered",
-    "OUTBOUND_ANSWERED": "Answered",
-    "AVG_HOLD_TIME": "Average Hold Time",
-    "INBOUND_ANSWER_RATE": "Answer Rate",
-    "OUTBOUND_ANSWER_RATE": "Answer Rate",
-    "ABANDON_RATE": "Abandon Rate",
-    "UNMANAGED": "Unmanaged",
-    "TOTAL": "Total",
-    "TOT_DURATION": "Total Duration",
-    "AVG_DURATION": "Average Duration",
+    "CREATED_AT": "Loomisaeg",
+    "CLOSED_AT": "Sulgemise aeg",
+    "DISPOSITION": "Kasutus",
+    "CONTACT": "Kontakt",
+    "INTERACTION": "Suhtlus",
+    "BROWSER_NAME": "Brauseri Nimi",
+    "BROWSER_VERSION": "Brauseri Versioon",
+    "OS_NAME": "Operatsioonisüsteemi Nimi",
+    "OS_VERSION": "Operatsioonisüsteemi Versioon",
+    "DEVICE_MODEL": "Seadme Mudel",
+    "DEVICE_VENDOR": "Seadme Tarnija",
+    "DEVICE_TYPE": "Seadme Tüüp",
+    "RECALLME": "Kutsu Mind tagasi",
+    "DROP_RATE": "Katkesta Määr",
+    "DROPPED": "Katkestatud",
+    "DROPPED_TEXT": "Katkestatud Järjekorra Kõned",
+    "DETAIL": "Üksikasi",
+    "MOTION_BULL": "Liikumise Pull",
+    "LIMITED": "Piiratud",
+    "LIMITED_TEXT": "IVR Kampaania Kõnede Päritolu/Piirang",
+    "DASHBOARDS": "Töölauad",
+    "RECORDINGS": "Salvestused",
+    "TODAY_MOTION_BULL_STATS": "Järjekorra Kampaania Päevane Stat.",
+    "ORIGINATED": "Päritolu",
+    "ORIGINATED_TEXT": "Järjekorra Kõnede Päritolu",
+    "UPDATE": "Värskendamine",
+    "MORE": "Rohkem",
+    "MOTIONDIALER": "Liikumise Pull",
+    "DISPOSE": "Likvideeri",
+    "QUEUES": "Järjekorrad",
+    "DIALER_CALL": "Numbrivalija Kõne",
+    "ELAPSED_TIME": "Kulunud Aeg",
+    "EDIT": "Redigeeri",
+    "MERGE": "Ühenda",
+    "DUPLICATE": "Dubleeri",
+    "UNIQUEID": "Kordumatu ID",
+    "CAMPAIGN": "Kampaania",
+    "NONE": "Ühtegi",
+    "NAME": "Nimi",
+    "ANSWER_MACHINE": "Automaatvastaja",
+    "INTERESTED": "Huvitatud",
+    "NOT_INTERESTED": "Pole Huvitatud",
+    "PERSONAL_INFO": "Isiklik Teave",
+    "SOLD": "Müüdud",
+    "SPECIAL": "Muud",
+    "BLACKLIST": "Must nimekiri",
+    "RESCHEDULE": "Planeeri uuesti",
+    "FIRSTNAME": "Eesnimi",
+    "LASTNAME": "Perekonnanimi",
+    "MOBILE": "Mobiil",
+    "DATE_OF_BIRTH": "Sünnikuupäev",
+    "COMPANY": "Ettevõte",
+    "TAG": "Silt",
+    "COUNTRY": "Riik",
+    "CITY": "Linn",
+    "STREET": "Tänav",
+    "POSTALCODE": "Postiindeks",
+    "CUSTOM_FIELDS": "Kohandatud Väljad",
+    "GENERAL": "Üldine",
+    "VOICE": "Hääl",
+    "TODAY_IVR_CAMPAIGNS_STATS": "Igapäevane IVR Kampaania Stat.",
+    "TODAY_INBOUND_STATS": "Siseneva Järjekorra Igapäevane Stat.",
+    "TODAY_OUTBOUND_STATS": "Väljuva Igapäevane Stat.",
+    "WAITING": "Ootamine",
+    "TALKING": "Rääkimine",
+    "INBOUND_ANSWERED": "Vastatud",
+    "OUTBOUND_ANSWERED": "Vastatud",
+    "AVG_HOLD_TIME": "Keskmine Ooteaeg",
+    "INBOUND_ANSWER_RATE": "Vastuse Määr",
+    "OUTBOUND_ANSWER_RATE": "Vastuse Määr",
+    "ABANDON_RATE": "Tagasilükkamise Määr",
+    "UNMANAGED": "Haldamata",
+    "TOTAL": "Kokku",
+    "TOT_DURATION": "Kestus Kokku",
+    "AVG_DURATION": "Keskmine Kestus",
     "HELP": {
-      "UNMANAGED_RATE": "The Unmanaged Rate of all the Interactions",
-      "WAITING": "The total number of Waiting Interactions",
-      "OPENED": "The total number of Active Interactions",
-      "MANAGED": "The total number of Completed Interactions",
-      "ABANDONED": "The total number of Abandoned Interactions",
-      "TOTAL_OFFERED": "The total number of Interactions (completed + abandoned)",
-      "AVG_HOLD_TIME": "The Average Interaction Hold Time, namely the average time spent waiting for an agent to answer, for all the existing Interactions",
-      "AVG_MANAGED_TIME": "The Average Interaction Managed Time, namely the average time spent during conversation",
-      "MANAGED_RATE": "The Managed Rate of all the Interactions",
-      "ABANDONED_RATE": "The Abandon Rate of all the Interactions",
-      "UNMANAGED": "The total number of Unmanaged Interactions",
-      "VOICE_WAITING": "The total number of Waiting Queue Calls, for all the existing Queues",
-      "VOICE_TALKING": "The total number of Active Queue Calls, for all the existing Queues",
-      "VOICE_ANSWERED": "The total number of Completed Queue Calls, for all the existing Queues",
-      "VOICE_ABANDONED": "The total number of Abandoned Queue Calls, considering all the existing Queues. Note that the calls which are abandoned for timeout and joinempty will not be considered",
-      "VOICE_TOTAL_OFFERED": "The total number of Queue Calls (completed + abandoned). Note that the calls which enter in an IVR and not in a queue, will not be considered",
-      "VOICE_AVG_TALK_TIME": "The Average Queue Talk Time, namely the average time spent during conversation, for all the existing Queues",
-      "VOICE_AVG_HOLD_TIME": "The Average Queue Hold Time, namely the average time spent waiting for an agent to answer, for all the existing Queues",
-      "VOICE_ANSWER_RATE": "The Answer Rate of all the Queue Calls",
-      "VOICE_UNMANAGED": "The total number of Unmanaged Queue Calls, for all the existing Queues. It includes the calls which are abandoned for timeout, joinempty, leavewhenempty and exitwithkey (cfr. asterisk doc for more information)",
-      "ORIGINATED": "Total number of calls dialed in the queue campaigns",
-      "ORIGINATEDLIMITED": "IVR Campaigns Calls Originated/Limit",
-      "DROPPED": "The total number of Dropped Queue Calls, for all the existing Queues",
-      "DROP_RATE": "The Drop Rate of all the Queue Calls",
-      "OUTBOUND_ANSWERED": "The total number of Completed Outbound Calls",
-      "OUTBOUND_ANSWER_RATE": "The Answer Rate of all the Outbound Calls",
-      "ABANDON_RATE": "The Abandon Rate of all the Queue Calls",
-      "TOTAL": "The total number of Outbound Calls",
-      "TOT_DURATION": "The total duration of all the Outbound Calls",
-      "AVG_DURATION": "The average duration of all the Completed Outbound Calls",
+      "UNMANAGED_RATE": "Haldamata Määr kõikidest Suhtlustest",
+      "WAITING": "Ootel Suhtluste koguarv",
+      "OPENED": "Aktiivsete Suhtluste koguarv",
+      "MANAGED": "Lõpetatud Suhtluste koguarv",
+      "ABANDONED": "Tagasilükatud Suhtluste koguarv",
+      "TOTAL_OFFERED": "Suhtluste (lõpetatud + tagasilükatud) koguarv",
+      "AVG_HOLD_TIME": "Keskmine Suhtluse Ooteaeg, nimelt keskmine aeg, mis on kulunud agendi vastuse ootamisele, kõikide olemasolevate Suhtluste kohta",
+      "AVG_MANAGED_TIME": "Keskmine Hallatud Suhtluse Aeg, nimelt keskmine vestlusele kulunud aeg",
+      "MANAGED_RATE": "Haldamise Määr Kõikide Suhtluste kohta ",
+      "ABANDONED_RATE": "Tagasilükkamise Määr kõikide Suhtluste kohta",
+      "UNMANAGED": "Haldamata Suhtluste koguarv",
+      "VOICE_WAITING": "Ootejärjekorra Kõnede koguarv kõikide olemasolevate Järjekordade kohta",
+      "VOICE_TALKING": "Aktiivsete Järjekorra Kõnede koguarv kõikide olemasolevate Järjekordade kohta",
+      "VOICE_ANSWERED": "Lõpetatud Järjekorra Kõnede koguarv kõikide olemasolevate Järjekordade kohta",
+      "VOICE_ABANDONED": "Tagasilükatud Järjekorra Kõnede koguarv kõikide olemasolevate Järjekordade kohta. Pange tähele, et kõned mis on tagasi lükatud seoses vaheaja ja tühjalt liitumisega ei lähe arvesse",
+      "VOICE_TOTAL_OFFERED": "Järjekorra Kõnede (lõpetatud + tagasilükatud) koguarv. Pange tähele, et kõned, mis sisenevad IVRis, mitte järjekorras, ei lähe arvesse",
+      "VOICE_AVG_TALK_TIME": "Keskmine Järjekorra Kõneaeg, nimelt keskmine vestlustele kulunud aeg kõikide olemasolevate Järjekordade kohta",
+      "VOICE_AVG_HOLD_TIME": "Keskmine Järjekorra Ooteaeg, nimelt keskmine aeg, mis on kulunud agendi vastuse ootamisele, kõikide olemasolevate Järjekordade kohta",
+      "VOICE_ANSWER_RATE": "Vastamise Määr kõikide Järjekorra Kõnede kohta",
+      "VOICE_UNMANAGED": "Haldamata Järjekorra Kõnede koguarv kõikide olemasolevate Järjekordade kohta. See sisaldab kõnesid, mida on tagasi lükatud seoses vaheaja, tühjalt liitumise, tühja korral lahkumise ja võtmega väljumisega (vt. täpsemalt asterisk doc)",
+      "ORIGINATED": "Kõnede koguarv, mis on valitud järjekorra kampaaniates",
+      "ORIGINATEDLIMITED": "IVR Kampaaniate Kõnede Päritolu/Piir",
+      "DROPPED": "Katkestatud Järjekorra Kõnede koguarv kõikide olemasolevate Järjekordade kohta",
+      "DROP_RATE": "Katkestuste Määr kõikide Järjekorra Kõnede kohta",
+      "OUTBOUND_ANSWERED": "Lõpetatud Väljuvate Kõnede koguarv",
+      "OUTBOUND_ANSWER_RATE": "Kõikide Väljuvate Kõnede Vastamise Määr",
+      "ABANDON_RATE": "Järjekorra Kõnede Tagasilükkamise Määr",
+      "TOTAL": "Väljuvate Kõnede koguarv",
+      "TOT_DURATION": "Väljuvate Kõnede kogukestus",
+      "AVG_DURATION": "Lõpetatud Väljuvate Kõnede keskmine kestus",
       "EXACT_MATCH_FILTER": "Täpse vaste otsimine",
       "LIKE_FILTER": "Otsige määratud mustrit",
-      "MANDATORY_DISPOSITION_ENABLED": "Selle konto jaoks on kohustuslik dispositsioon lubatud"
+      "MANDATORY_DISPOSITION_ENABLED": "Selle konto jaoks on kohustuslik suhtlus lubatud"
     },
     "ERRORS": {
-      "FIRSTNAME_REQUIRED": "Mandatory field",
-      "PHONE_REQUIRED": "Mandatory field",
-      "DISPOSITION_REQUIRED": "Mandatory field",
-      "AGENT_REQUIRED": "Mandatory field",
-      "QUEUE_REQUIRED": "Mandatory field",
+      "FIRSTNAME_REQUIRED": "Kohustuslik väli",
+      "PHONE_REQUIRED": "Kohustuslik väli",
+      "DISPOSITION_REQUIRED": "Kohustuslik väli",
+      "AGENT_REQUIRED": "Kohustuslik väli",
+      "QUEUE_REQUIRED": "Kohustuslik väli",
       "CAMPAIGN_REQUIRED": "Kohustuslik väli",
       "FAILED_INITIALIZATION": "Viga lähtestamisel"
     },
-    "NO_AVAILABLE_INFO": "No available info",
-    "WELCOME_TO_MOTION": "Welcome to Motion",
-    "WELCOME_MESSAGE": "Use the left sidebar to navigate through available sections",
-    "ADD": "Add",
-    "CONTACTMANAGER": "Contact Manager",
-    "DASHBOARD": "Dashboard",
-    "EDIT_CONTACT": "Edit contact",
-    "EMAIL": "Email",
-    "FULLNAME": "Fullname",
-    "LIST": "List",
-    "NEW_CONTACT": "New Contact",
-    "PHONE": "Phone",
-    "SAVE": "Save",
-    "INBOUND_WAITING_CALLS": "Inbound Waiting Calls",
-    "CONTACTS": "Contacts",
-    "MYCONTACTS": "My Contacts",
-    "ADD_CONTACT": "Add Contact",
-    "RELOAD": "Reload",
-    "WAITING_TEXT": "Waiting Interactions",
-    "TALKING_TEXT": "Active Queue Calls",
-    "INBOUND_ANSWERED_TEXT": "Answered Queue Calls",
-    "DROP_RATE_TEXT": "Queue Calls Drop Rate",
-    "AVG_TALK_TIME_TEXT": "Queue Calls Talk Time",
-    "INBOUND_ANSWER_RATE_TEXT": "Queue Calls Answer Rate",
-    "UNMANAGED_TEXT": "Unmanaged Interactions",
-    "TOTAL_TEXT": "Total Outbound Calls",
-    "OUTBOUND_ANSWERED_TEXT": "Outbound Answered Calls",
-    "TOT_DURATION_TEXT": "Outbound Calls Total Duration",
-    "AVG_DURATION_TEXT": "Outbound Calls Average Duration",
-    "OUTBOUND_ANSWER_RATE_TEXT": "Outbound calls Answer Rate",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "WELCOME_TO_MOTION": "Tere tulemust Liikumisse",
+    "WELCOME_MESSAGE": "Kasuta vasakut külgriba navigeerimiseks vabades sektsioonides",
+    "ADD": "Lisa",
+    "CONTACTMANAGER": "Kontakti Haldur",
+    "DASHBOARD": "Töölaud",
+    "EDIT_CONTACT": "Redigeeri kontakti",
+    "EMAIL": "E-post",
+    "FULLNAME": "Täisnimi",
+    "LIST": "Loend",
+    "NEW_CONTACT": "Uus Kontakt",
+    "PHONE": "Telefon",
+    "SAVE": "Salvesta",
+    "INBOUND_WAITING_CALLS": "Sisenevad Ootel Kõned",
+    "CONTACTS": "Kontaktid",
+    "MYCONTACTS": "Minu Kontaktid",
+    "ADD_CONTACT": "Lisa Kontakt",
+    "RELOAD": "Laadi uuesti",
+    "WAITING_TEXT": "Ootel Suhtlused",
+    "TALKING_TEXT": "Aktiivsed Järjekorra Kõned",
+    "INBOUND_ANSWERED_TEXT": "Vastatud Järjekorra Kõned",
+    "DROP_RATE_TEXT": "Järjekorra Kõnede Katkestamise Määr",
+    "AVG_TALK_TIME_TEXT": "Järjekorra Kõnede Kõneaeg",
+    "INBOUND_ANSWER_RATE_TEXT": "Järjekorra Kõnede Vastamise Määr",
+    "UNMANAGED_TEXT": "Haldamata Suhtlused",
+    "TOTAL_TEXT": "Väljuvad Kõned kokku",
+    "OUTBOUND_ANSWERED_TEXT": "Väljuvad Vastatud Kõned",
+    "TOT_DURATION_TEXT": "Väljuvate Kõnede Kogukestus",
+    "AVG_DURATION_TEXT": "Väljuvate Kõnede Keskmine Kestus",
+    "OUTBOUND_ANSWER_RATE_TEXT": "Väljuvate Kõnedee Vastamise Määr",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridy lehekülje kohta",
     "OF": "of",
-    "REPLY_PLACEHOLDER": "Type and hit enter to send a message",
-    "CONTACT_INFO": "Contact Info",
-    "CLOSE_AND_DISPOSE": "Close and dispose",
-    "DISPOSITIONS": "Dispositions",
-    "CLOSE_WITHOUT_DISPOSE": "Close without dispose",
-    "ACCEPT": "Accept",
-    "REJECT": "Reject",
-    "CLOSED": "Closed",
-    "INFO": "Info",
-    "NOTE": "Note",
-    "ACCEPT_ELSEWHERE": "Accepted elsewhere",
-    "ATTENTION": "Attention",
-    "SOCIAL": "Social",
-    "NO_JSCRIPTY_PROJECTS_AVAILABLE": "No Jscripty Projects available",
-    "OPENED": "Opened",
-    "FILTER": "Filter",
-    "SELECT_STATUS": "Select Status",
-    "SELECT_ACCOUNT": "Select Account",
-    "SELECT_WEBSITE": "Select Website",
-    "ALL": "All",
-    "INTERACTIONS": "Interactions",
-    "STARTEDAT": "Started At",
-    "STATUS": "Status",
-    "OPEN": "Open",
-    "SHOW": "Show",
-    "SHOW_DETAILS": "Show Details",
-    "HIDE_DETAILS": "Hide Details",
-    "EXTERNAL_URL": "External Link",
-    "NO_MAIL_ACCOUNTS_AVAILABLE": "No Email Accounts available",
-    "NO_FAX_ACCOUNTS_AVAILABLE": "No Fax Accounts available",
-    "NO_SMS_ACCOUNTS_AVAILABLE": "No SMS Accounts available",
-    "SELECT_DATE_RANGE": "Select Date Range",
-    "CLEAR": "Clear",
-    "CALL_NUMBER": "Call",
-    "TRANSFER_NUMBER": "Transfer",
-    "CALL_SAVED": "Call properly saved",
-    "CALL_DISPOSED": "Call properly disposed",
+    "REPLY_PLACEHOLDER": "Tipi ja vajuta enter sõnumi saatmiseks",
+    "CONTACT_INFO": "Kontakti Teave",
+    "CLOSE_AND_DISPOSE": "Sule ja eemalda",
+    "DISPOSITIONS": "Kasutused",
+    "CLOSE_WITHOUT_DISPOSE": "Sule ilma eemaldamiseta",
+    "ACCEPT": "Aktsepteeri",
+    "REJECT": "Hülga",
+    "CLOSED": "Suletud",
+    "INFO": "Teave",
+    "NOTE": "Märge",
+    "ACCEPT_ELSEWHERE": "Aktsepteeritud mujal",
+    "ATTENTION": "Tähelepanu",
+    "SOCIAL": "Sotsiaalne",
+    "NO_JSCRIPTY_PROJECTS_AVAILABLE": "Jscripty Projekte pole saadaval",
+    "OPENED": "Avatud",
+    "FILTER": "Filtreerimine",
+    "SELECT_STATUS": "Vali Staatus",
+    "SELECT_ACCOUNT": "Vali Konto",
+    "SELECT_WEBSITE": "Vali Veebisait",
+    "ALL": "Kõik",
+    "INTERACTIONS": "Suhtlused",
+    "STARTEDAT": "Algusaeg",
+    "STATUS": "Staatus",
+    "OPEN": "Ava",
+    "SHOW": "Kuba",
+    "SHOW_DETAILS": "Kuva Üksikasjad",
+    "HIDE_DETAILS": "Peida Üksikasjad",
+    "EXTERNAL_URL": "Väline Link",
+    "NO_MAIL_ACCOUNTS_AVAILABLE": "E-posti Kontosid pole saadaval",
+    "NO_FAX_ACCOUNTS_AVAILABLE": "Faksi Kontosid pole saadaval",
+    "NO_SMS_ACCOUNTS_AVAILABLE": "Sõnumi Kontosid pole saadaval",
+    "SELECT_DATE_RANGE": "Vali Kuupäevavahemik",
+    "CLEAR": "Tühjenda",
+    "CALL_NUMBER": "Helista",
+    "TRANSFER_NUMBER": "Edasta",
+    "CALL_SAVED": "Kõne õigesti salvestatud",
+    "CALL_DISPOSED": "Kõne õigesti eemaldatud",
     "ACCOUNTINGDOC": "Raamatupidamine",
     "ADD_PRODUCTPRICELIST": "LISA TOODE",
     "ADVANCED_SEARCH": "Täpsem otsing",
     "BALANCE": "TASAKAAL",
     "BY": "Kõrval",
     "CANCEL": "Tühista",
-    "CHAT_INTERACTIONS": "Vestluse interaktsioonid",
+    "CHAT_INTERACTIONS": "Vestluse suhtlused",
     "CHOOSE": "Valige",
     "CLONEPROFORMA": "Kloon",
     "COMPANIES": "Ettevõtted",
     "DOSSIERNOTES": "Märge",
     "DOSSIERS": "Toimikud",
     "DOSSIER_INFO": "Teave",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadige alla ilma manusteta",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Laadige alla koos manustega",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadi alla ilma manusteta",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Laadi alla koos manustega",
     "DRAFT": "Mustand",
-    "DRAFT_SAVE_WARNING_MESSAGE": "Selle interaktsiooni jaoks on juba mustand salvestatud. Kas soovite selle kindlasti üle kirjutada?",
+    "DRAFT_SAVE_WARNING_MESSAGE": "Selle suhtluse jaoks on juba mustand salvestatud. Kas soovid selle kindlasti üle kirjutada?",
     "DRAFT_SAVE_WARNING_TITLE": "Kas kirjutada olemasolev mustand üle?",
     "ENABLED": "Lubatud",
     "ENDDATE": "Kehtivusaeg",
     "ENDING_VALUE": "Lõppväärtus",
     "ENDS_WITH": "Lõpeb koos",
     "EQUALS": "Võrdub",
-    "FAX_INTERACTIONS": "Faksi interaktsioonid",
+    "FAX_INTERACTIONS": "Faksi suhtlused",
     "FROM": "Alates",
     "GRAPHINVOICES": "Arve heitkoguste tabel",
-    "ID": "Id",
+    "ID": "ID",
     "INASSET": "Vara",
-    "INTERACTION_CLOSED": "Koostoime on korralikult suletud",
-    "INTERACTION_CLOSED_DISPOSED": "Koostoime on korralikult suletud ja hävitatud",
-    "INTERACTION_DISPOSED": "Koostoime on korralikult paigutatud",
+    "INTERACTION_CLOSED": "Suhtlus on korralikult suletud",
+    "INTERACTION_CLOSED_DISPOSED": "Suhtlus on korralikult suletud ja eemaldatud",
+    "INTERACTION_DISPOSED": "Suhtlus on korralikult eemaldatud",
     "INVOICE": "ARV",
     "INVOICEDETAILS": "ARVETE ÜKSIKASJAD",
     "INVOICEDISCOUNT": "Soodustus",
-    "INVOICEEMITED": "Välja antud",
+    "INVOICEEMITED": "Väljastatud",
     "INVOICEID": "Arve",
     "INVOICENAME": "Arve nimi",
     "INVOICENOPRODUCTAMOUNT": "Summa",
     "IS_BETWEEN": "On vahel",
     "IS_GREATER_THAN": "On suurem kui",
     "IS_GREATER_THAN_OR_EQUAL_TO": "On suurem või võrdne",
-    "IS_LESS_THAN": "On vähem kui",
+    "IS_LESS_THAN": "On väiksem kui",
     "IS_LESS_THAN_OR_EQUAL_TO": "On väiksem või võrdne",
     "IS_NOT_AMONG": "Ei kuulu",
     "IS_NOT_EQUAL": "Ei võrdu",
-    "MAIL_INTERACTIONS": "E-posti interaktsioonid",
+    "MAIL_INTERACTIONS": "E-posti suhtlused",
     "MANAGESALES": "Tellimused",
-    "MEET_ALL_CONDITIONS": "Täitke kõik tingimused",
-    "MEET_ANY_CONDITIONS": "Täitke vähemalt üks tingimus",
+    "MEET_ALL_CONDITIONS": "Täida kõik tingimused",
+    "MEET_ANY_CONDITIONS": "Täida vähemalt üks tingimus",
     "MOVEASSET": "VARA",
-    "MOVECREDITNOTE": "VÕI KREDIIDI MÄRKUS",
+    "MOVECREDITNOTE": "TEISALDA KREDIIDI MÄRKUS",
     "NETPRICE": "Hind",
     "NEW_COMPANY": "Uus",
     "NEW_CONDITION": "Uus tingimus",
     "NEW_DOSSIER": "Uus toimik",
     "NEXTINVOICE": "Järgmine arve",
     "NOTES": "Märge",
-    "NO_AVAILABLE_INTERACTION": "Pole saadaval interaktsiooni",
+    "NO_AVAILABLE_INTERACTION": "Suhtlus pole saadaval",
     "NO_PRODUCTINVOICE_AVAILABLE": "Pole toodet",
     "NO_PRODUCTPRICELIST_AVAILABLE": "Andmed puuduvad",
     "NO_PRODUCTPROFORMA_AVAILABLE": "Andmed puuduvad",
     "NUMBER": "Arv",
-    "OPENCHANNEL_INTERACTIONS": "Avage kanalite interaktsioonid",
+    "OPENCHANNEL_INTERACTIONS": "Avage kanalite suhtlused",
     "OPENDATE": "Avamiskuupäev",
     "ORDER": "Telli",
     "ORDERCLIENTCODE": "Kliendikood",
     "ORDERNOTES": "Märge",
     "ORDERSTATUS": "Osariik",
     "ORDER_INFO": "Telli",
-    "OVERWRITE": "Üle kirjutada",
+    "OVERWRITE": "Kirjuta üle",
     "PAIDANDEXPIRED": "Makse",
     "PAYED_AY": "Maksti edasi",
     "PAYMENT": "Makse",
     "QUOTATIONINVOICEID": "Arve ID",
     "QUOTATIONNAME": "Tsitaadi nimi",
     "QUOTATIONNOTES": "Hinnapakkumised",
-    "QUOTATIONPRODUCTNOTE": "Toote märkus",
+    "QUOTATIONPRODUCTNOTE": "Toote mƤrkus",
     "QUOTATIONPRODUCTTYPE": "Tüüp",
     "QUOTATIONPROFORMAID": "Proforma ID",
     "QUOTATIONQTY": "Kogus",
     "SAVE_AS_DRAFT": "Salvesta mustandina",
     "SCHEDULED_CALLS": "Ajastatud kõned",
     "SELECT_ALL": "Vali kõik",
-    "SELECT_COMPANY": "Valige ettevõte",
-    "SELECT_FIELD": "Valige väli",
+    "SELECT_COMPANY": "Vali ettevõte",
+    "SELECT_FIELD": "Vali väli",
     "SELECT_OPERATOR": "Valige operaator",
-    "SELECT_PERIOD": "Valige vahemik",
-    "SELECT_PERIOD_CREATION": "Valige loomise kuupäev",
-    "SELECT_PERIOD_EXPIRE": "Valige aegumiskuupäev",
-    "SELECT_PERIOD_START": "Valige kuupäev",
-    "SELECT_PRODUCT": "Valige toode",
-    "SELECT_PRODUCTTYPE": "Valige tüüp",
-    "SELECT_QUEUE": "Valige järjekord",
-    "SELECT_WORKFLOW": "Valige Töövoog",
-    "SELECT_WORKFLOWSTEPS": "Valige Töövoo olek",
-    "SMS_INTERACTIONS": "SMS-i interaktsioonid",
+    "SELECT_PERIOD": "Vali vahemik",
+    "SELECT_PERIOD_CREATION": "Vali loomise kuupäev",
+    "SELECT_PERIOD_EXPIRE": "Vali aegumiskuupäev",
+    "SELECT_PERIOD_START": "Vali kuupäev",
+    "SELECT_PRODUCT": "Vali toode",
+    "SELECT_PRODUCTTYPE": "Vali tüüp",
+    "SELECT_QUEUE": "Vali järjekord",
+    "SELECT_WORKFLOW": "Vali Töövoog",
+    "SELECT_WORKFLOWSTEPS": "Vali Töövoo olek",
+    "SMS_INTERACTIONS": "Sõnumi suhtlused",
     "STARTDATE": "Arve kuupäev",
     "STARTING_DATE": "Alguskuupäev",
     "STARTING_VALUE": "Algväärtus",
     "VALUE_RANGE_CHECK": "Väärtus peab olema suurem kui",
     "VIDAOOSESSION": "Alusta videokõnet",
     "VISIBILITY": "Nähtavus",
-    "WHATSAPP": "WhatsApp-pistik",
-    "WHATSAPP_INTERACTIONS": "WhatsApi pistikühendused",
+    "WHATSAPP": "WhatsApp-ühendus",
+    "WHATSAPP_INTERACTIONS": "WhatsAppi suhtlused",
     "WORKFLOW": "Valige Töövoog",
-    "YEARS": "Aastaid",
+    "YEARS": "Aastad",
     "LAST_UPDATED": "Viimati uuendatud",
     "MATCHING_FIELD": "Vastav väli",
     "MULTIPLE_CONTACTS_FOUND": "Numbri jaoks leiti mitu kontakti",
-    "SELECT": "Valige",
-    "SELECT_CONTACT": "Valige kontakt",
-    "WHICH_ONE_TO_USE": "Kumba soovite kasutada?",
-    "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "Whatsappi konto pole saadaval",
+    "SELECT": "Vali",
+    "SELECT_CONTACT": "Vali kontakt",
+    "WHICH_ONE_TO_USE": "Kumba soovid kasutada?",
+    "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "WhatsAppi konto pole saadaval",
     "SECOND_LEVEL_DISPOSITION": "Teise taseme korraldus",
     "THIRD_LEVEL_DISPOSITION": "Kolmanda taseme korraldus",
-    "LICENSE_EXPIRE_REMAINING_DAYS": "Teie litsents on aegumas! Võtke ühendust oma administraatoriga",
+    "LICENSE_EXPIRE_REMAINING_DAYS": "Sinu litsents on aegumas! Võta ühendust oma administraatoriga",
     "CREATEDAT": "Loodud aadressil",
     "ELAPSED_ANSWERED": "Kulunud aeg kõne alustamisest",
     "ELAPSED_DISPOSED": "Kulunud aeg kõne lõppemisest",
-    "LOST_CONNECTION": "Võrguühendusprobleemide kogemine. Palun kontrollige oma Interneti-ühendust.",
+    "LOST_CONNECTION": "Võrguühendusprobleemide ilmnemine. Palun kontrolli oma internetiühendust.",
     "NO_RESULTS_AVAILABLE": "Tulemusi pole saadaval",
-    "AUTOCLOSE": "Pärast utiliseerimist sulgege kontaktikaart automaatselt",
+    "AUTOCLOSE": "Pärast eemaldamist sulgege kontaktikaart automaatselt",
     "AGENT_PRESENCE": "Agendi kohalolek",
-    "SELECT_TEAM": "Valige Meeskond",
+    "SELECT_TEAM": "Valige Tiim",
     "AVAILABLE": "Saadaval",
-    "CONFIRM": "Kinnitage",
+    "CONFIRM": "Kinnita",
     "FILTERS": "Filtrid",
     "FILTER_CHAT_WEBSITES": "Filtreeri vestluse veebisaite",
-    "FILTER_FAX_ACCOUNTS": "Faksikontode filtreerimine",
-    "FILTER_MAIL_ACCOUNTS": "Filtreerige meilikontosid",
-    "FILTER_OPENCHANNEL_ACCOUNTS": "Filtreerige avatud kanalite kontod",
-    "FILTER_SMS_ACCOUNTS": "Sms -kontode filtreerimine",
-    "FILTER_WHATSAPP_ACCOUNTS": "Filtreerige Whatsappi kontosid",
-    "SETFILTERS": "Määrake filtrid",
+    "FILTER_FAX_ACCOUNTS": "Filtreeri Faksikontod",
+    "FILTER_MAIL_ACCOUNTS": "Filtreeri meilikontod",
+    "FILTER_OPENCHANNEL_ACCOUNTS": "Filtreeri avatud kanalite kontod",
+    "FILTER_SMS_ACCOUNTS": "Filtreeri Sõnumikontod",
+    "FILTER_WHATSAPP_ACCOUNTS": "Filtreeri Whatsappi kontod",
+    "SETFILTERS": "Määra filtrid",
     "DIAL_TIMEZONE": "Vali ajavöönd",
     "LIMIT_TABS_REACHED": "Avatud vahelehtede maksimaalne arv on täis",
     "LIST_NAME": "Loendi nimi",
     "PREVIEW_CALL": "Kõne eelvaade",
-    "SYSTEM_TIME": "Süsteemi aeg",
-    "CONTACT_NAME": "kontaktisiku nimi",
-    "CONTACT_PHONE": "Kontakt Telefon",
-    "RECALLME_CALL_REMINDER": "Helista mulle meeldetuletus",
-    "SCHEDULED_TIME": "Planeeritud aeg",
-    "UPCOMING_RECALLME_CALL": "Tulevane Recall Me kõne"
+    "PREVIEW_CALL_FOR": "Tulevane eelvaatekutse",
+    "SCHEDULED_AT": "kavas kl",
+    "SYSTEM_TIME": "Süsteemi aeg"
   }
 }
index 7e03440..fd6d9b8 100644 (file)
 {
   "FAX": {
-    "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",
-    "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",
-    "CANNEDANSWERS": "Canned Answers",
-    "FAXCANNEDANSWERS": "Canned Answers",
-    "NO_FAXCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
-    "NEW_FAXCANNEDANSWER": "New Canned Answer",
-    "ADD_FAXCANNEDANSWER": "Add Canned Answer",
-    "EDIT_CHATCANNEDANSWER": "Edit Canned Answer",
-    "DELETE_CHATCANNEDANSWER": "Delete Canned Answer",
-    "SPYINTERACTION": "Spy",
-    "TAGS": "Tags",
-    "REPLY": "Reply",
-    "SEND": "Send",
-    "TO": "To",
-    "FROM": "From",
-    "NO_AGENT_ONLINE": "No Agent Online",
-    "GOTOREALTIME_FAXQUEUE": "Go To Realtime Fax Queue",
-    "EDIT_TRUNK": "Edit Trunk",
-    "REGISTERED": "Registered",
-    "UNREGISTERED": "Unregistered",
-    "EDIT_ACCOUNT": "Edit Fax Account",
-    "PARTIALPAUSE": "Partial Pause",
-    "BUSY": "Busy",
-    "TIMER": "Timer",
-    "IDLE": "Idle",
-    "CAPACITY": "Capacity",
-    "GOTO_FAXACCOUNT": "Go To Realtime Fax",
-    "ACCOUNTS": "Accounts",
-    "GOTOREALTIME_FAXACCOUNT": "Go To Realtime Fax",
-    "TRUNK_STATUS": "Trunk Status",
-    "TRUNKS": "Trunks",
-    "REGISTRY": "Registry",
-    "NO_REGISTRY": "No Registry",
-    "PAUSE": "Pause",
-    "INFO": "Info",
-    "FULLNAME": "Fullname",
-    "INTERNAL": "Internal",
-    "PHONE_STATE": "Phone State",
-    "PHONE_STATUS": "Phone Status",
-    "LOGOUT": "Logout",
-    "DEFAULT_PAUSE": "Default pause",
-    "AGENTADD_QUEUE": "Add Agent to Fax queue",
-    "AGENTSADD_QUEUE": "Add Agents to Fax queue",
-    "UNPAUSE": "End Pause",
-    "AGENTS": "Agents",
-    "QUEUES": "Queues",
-    "LOGGED_IN": "Logged in",
-    "PAUSED": "Paused",
-    "READY": "Ready",
-    "WAITING": "Waiting",
-    "PRIORITY": "Priority",
-    "CONDITION": "Condition",
-    "TRUEPRIORITY": "True Priority",
-    "FALSEPRIORITY": "False Priority",
-    "VALUE": "Value",
-    "EDIT_FAXQUEUE": "Edit Fax Queue",
-    "EDIT_AGENT": "Edit Agent",
-    "EDIT_GOTO": "Edit Goto",
-    "EDIT_NOOP": "Edit Noop",
-    "EDIT_GOTOP": "Edit GotoP",
-    "EDIT_GOTOIF": "Edit GotoIf",
-    "EDIT_QUEUE": "Edit Fax Queue",
-    "EDIT_CLOSE": "Edit Close",
-    "QUEUE": "Queue",
+    "LOGIN_TIME": "Sisselogimise Aeg",
+    "PAUSE_TIME": "Pausi aeg",
+    "DOWNLOAD_INTERACTION": "Allalaadimine",
+    "TRANSFER": "Edastamine",
+    "QUEUETRANSFER": "Järjekorra Edastamine",
+    "QUEUETRANSFERTIMEOUT": "Järjekorra Edastamise Aegumine",
+    "AGENTTRANSFER": "Agendi Edastamine",
+    "AGENTTRANSFERTIMEOUT": "Agendi Edastamise Aegumine",
+    "TAG": "Silt",
+    "EDIT_TAG": "Redigeeri Silti",
+    "WAITFORTHEASSIGNEDAGENT": "Oota määratud agenti",
+    "NOTIFICATION": "Teatis",
+    "NOTIFICATIONSOUND": "Hääl",
+    "NOTIFICATIONSHAKE": "Raputus",
+    "NOTIFICATIONTEMPLATE": "Mall",
+    "SYSTEM": "Süsteem",
+    "EDIT_SYSTEM": "Redigeeri Süsteemi",
+    "COMMAND": "Käsk",
+    "VARIABLE": "Muutuja",
+    "CANNEDANSWERS": "Salvestatud Vastused",
+    "FAXCANNEDANSWERS": "Salvestatud Vastused",
+    "NO_FAXCANNEDANSWER_AVAILABLE": "Salvestatud Vastuseid pole saadaval",
+    "NEW_FAXCANNEDANSWER": "Uus Salvestatud Vastus",
+    "ADD_FAXCANNEDANSWER": "Lisa Salvestatud Vastus",
+    "EDIT_CHATCANNEDANSWER": "Redigeeri Salvestatud Vastust",
+    "DELETE_CHATCANNEDANSWER": "Kustuta Salvestatud Vastus",
+    "SPYINTERACTION": "Spioon",
+    "TAGS": "Sildid",
+    "REPLY": "Vasta",
+    "SEND": "Saada",
+    "TO": "Kellele",
+    "FROM": "Kellelt",
+    "NO_AGENT_ONLINE": "Ühtegi Agenti pole Võrgus",
+    "GOTOREALTIME_FAXQUEUE": "Mine Reaalaja Faksi Järjekorda",
+    "EDIT_TRUNK": "Redigeeri Magistraali",
+    "REGISTERED": "Registreeritud",
+    "UNREGISTERED": "Registreerimata",
+    "EDIT_ACCOUNT": "Redigeeri Faksi Kontot",
+    "PARTIALPAUSE": "Osaline Paus",
+    "BUSY": "Hõivatud",
+    "TIMER": "Taimer",
+    "IDLE": "Jõude",
+    "CAPACITY": "Võimsus",
+    "GOTO_FAXACCOUNT": "Mine Reaalaja Faksi juurde",
+    "ACCOUNTS": "Kontod",
+    "GOTOREALTIME_FAXACCOUNT": "Mine Reaalaja Faksi juurde",
+    "TRUNK_STATUS": "Magistraali Staatus",
+    "TRUNKS": "Magistraalid",
+    "REGISTRY": "Register",
+    "NO_REGISTRY": "Register puudub",
+    "PAUSE": "Paus",
+    "INFO": "Teave",
+    "FULLNAME": "Täisnimi",
+    "INTERNAL": "Sisemine",
+    "PHONE_STATE": "Telefoni Olek",
+    "PHONE_STATUS": "Telefoni Staatus",
+    "LOGOUT": "Logi välja",
+    "DEFAULT_PAUSE": "Vaikimisi paus",
+    "AGENTADD_QUEUE": "Lisa Agent Faksi järjekorda",
+    "AGENTSADD_QUEUE": "Lisa Agendid Faksi järjekorda",
+    "UNPAUSE": "Lõpeta Paus",
+    "AGENTS": "Agendid",
+    "QUEUES": "Järjekorrad",
+    "LOGGED_IN": "Sisse logitud",
+    "PAUSED": "Pausil",
+    "READY": "Valmis",
+    "WAITING": "Ootel",
+    "PRIORITY": "Prioriteet",
+    "CONDITION": "Tingimus",
+    "TRUEPRIORITY": "Õige Prioriteet",
+    "FALSEPRIORITY": "Vale Prioriteet",
+    "VALUE": "Väärtus",
+    "EDIT_FAXQUEUE": "Redigeeri Faksi Järjekorda",
+    "EDIT_AGENT": "Redigeeri Agenti",
+    "EDIT_GOTO": "Redigeeri Goto",
+    "EDIT_NOOP": "Redigeeri Noop",
+    "EDIT_GOTOP": "Redigeeri GotoP",
+    "EDIT_GOTOIF": "Redigeeri GotoIf",
+    "EDIT_QUEUE": "Redigeeri Faksi Järjekorda",
+    "EDIT_CLOSE": "Redigeeri Sule",
+    "QUEUE": "Järjekord",
     "GOTOIF": "GotoIf",
     "GOTOP": "GotoP",
     "NOOP": "Noop",
     "AGENT": "Agent",
-    "NOTES": "Notes",
-    "CLOSEDAT": "Closed At",
-    "DISPOSITION": "Disposition",
-    "REALTIME": "Realtime",
-    "TEAMADD_FAXQUEUE": "Add Team to Fax Queue",
-    "AGENTADD_FAXQUEUE": "Add Agent to Fax Queue",
-    "NAME": "Name",
-    "FAXQUEUES": "Fax Queues",
-    "SEARCH_FOR_ANYONE": "Search",
+    "NOTES": "Märkmed",
+    "CLOSEDAT": "Sulgemisaeg",
+    "DISPOSITION": "Kasutamine",
+    "REALTIME": "Reaalaeg",
+    "TEAMADD_FAXQUEUE": "Lisa Tiim Faksi Järjekorda",
+    "AGENTADD_FAXQUEUE": "Lisa Agent Faksi Järjekorda",
+    "NAME": "Nimi",
+    "FAXQUEUES": "Faksi Järjekorrad",
+    "SEARCH_FOR_ANYONE": "Otsi",
     "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",
-      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "TEXT_REQUIRED": "Mandatory Field",
-      "VALUE_REQUIRED": "Mandatory Field",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "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",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENT_REQUIRED": "Mandatory Field",
-      "QUEUE_REQUIRED": "Mandatory Field",
-      "TRUEPRIORITY_REQUIRED": "Mandatory Field",
-      "FALSEPRIORITY_REQUIRED": "Mandatory Field",
-      "CONDITION_REQUIRED": "Mandatory Field",
-      "PRIORITY_REQUIRED": "Mandatory Field",
-      "DISPOSITION_REQUIRED": "Mandatory Field",
-      "NAME_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
-      "MOTIONADDRESS_REQUIRED": "Mandatory Field",
-      "MOTIONADDRESS_MUST_VALID_URL": "Wrong format",
-      "LOCALSTATIONID_REQUIRED": "Mandatory Field",
-      "MODEM_REQUIRED": "Mandatory Field",
-      "GATEWAY_REQUIRED": "Mandatory Field",
-      "FAXDETECT_REQUIRED": "Mandatory Field",
-      "T38TIMEOUT_REQUIRED": "Mandatory Field",
-      "TIMEOUT_REQUIRED": "Mandatory Field",
-      "HEADERINFO_REQUIRED": "Mandatory Field",
-      "TRUNK_REQUIRED": "Mandatory Field",
-      "LIST_REQUIRED": "Mandatory Field",
-      "KEY_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "KEY_REQUIRED": "Mandatory Field",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Peaksite pausi oleku määrama, kui see on kohustuslik"
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "TAG_REQUIRED": "Kohustuslik Väli",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Kohustuslik Väli",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "NAME_MUST_VALID_PATTERN": "Vale formaat",
+      "COMMAND_REQUIRED": "Kohustuslik Väli",
+      "TEXT_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema võrdne {{maks}}",
+      "TEXT_REQUIRED": "Kohustuslik Väli",
+      "VALUE_REQUIRED": "Kohustuslik Väli",
+      "PRIORITY_MUST_BE_GREATER": "Väärtus peab olema suurem või võrdne",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "AGENT_REQUIRED": "Kohustuslik Väli",
+      "QUEUE_REQUIRED": "Kohustuslik Väli",
+      "TRUEPRIORITY_REQUIRED": "Kohustuslik Väli",
+      "FALSEPRIORITY_REQUIRED": "Kohustuslik Väli",
+      "CONDITION_REQUIRED": "Kohustuslik Väli",
+      "PRIORITY_REQUIRED": "Kohustuslik Väli",
+      "DISPOSITION_REQUIRED": "Kohustuslik Väli",
+      "NAME_REQUIRED": "Kohustuslik Väli",
+      "AGENT_TIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "MOTIONADDRESS_REQUIRED": "Kohustuslik Väli",
+      "MOTIONADDRESS_MUST_VALID_URL": "Vale Formaat",
+      "LOCALSTATIONID_REQUIRED": "Kohustuslik Väli",
+      "MODEM_REQUIRED": "Kohustuslik Väli",
+      "GATEWAY_REQUIRED": "Kohustuslik Väli",
+      "FAXDETECT_REQUIRED": "Kohustuslik Väli",
+      "T38TIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "TIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "HEADERINFO_REQUIRED": "Kohustuslik Väli",
+      "TRUNK_REQUIRED": "Kohustuslik Väli",
+      "LIST_REQUIRED": "Kohustuslik Väli",
+      "KEY_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema võrdne {{maks}}",
+      "KEY_REQUIRED": "Kohustuslik Väli",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pead pausi oleku määrama, kui see on kohustuslik"
     },
-    "STRATEGY": "Strategy",
-    "AGENT_TIMEOUT": "Agent Timeout",
-    "DESCRIPTION": "Description",
-    "ADD_FAXQUEUE": "Add Fax Queue",
-    "DELETE_FAXQUEUE": "Delete Fax Queue",
-    "CREATED_AT": "Created At",
-    "SAVE": "Save",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
-    "FAXACCOUNTS": "Fax Accounts",
-    "MOTIONADDRESS": "Motion Address",
-    "ADD_FAXACCOUNT": "Add Fax Account",
-    "EDIT_FAXACCOUNT": "Edit Fax Account",
-    "DELETE_FAXACCOUNT": "Delete Fax Account",
-    "DISPOSITIONS": "Dispositions",
-    "WEBHOOKS": "WebHooks",
-    "ACTIONS": "Actions",
-    "LIST": "List",
-    "FIDELITY": "Fidelity",
-    "ACCEPT": "Accept",
-    "ACCEPTMETHOD": "Accept Method",
-    "ACCEPTURL": "Accept URL",
-    "REJECT": "Reject",
-    "REJECTMETHOD": "Reject Method",
-    "REJECTURL": "Reject URL",
-    "CLOSE": "Close",
-    "CLOSEMETHOD": "Close Method",
-    "CLOSEURL": "Close URL",
-    "TRUNK": "Trunk",
-    "LOCALSTATIONID": "Local Station Identifier",
+    "STRATEGY": "Strateegia",
+    "AGENT_TIMEOUT": "Agendi Aegumine",
+    "DESCRIPTION": "Kirjeldus",
+    "ADD_FAXQUEUE": "Lisa Faksi Järjekord",
+    "DELETE_FAXQUEUE": "Kustuta Faksi Järjekord",
+    "CREATED_AT": "Loomisaeg",
+    "SAVE": "Salvesta",
+    "SETTINGS": "Sätted",
+    "GENERAL": "Üldine",
+    "FAXACCOUNTS": "Faksi Kontod",
+    "MOTIONADDRESS": "Liikumise Aadress",
+    "ADD_FAXACCOUNT": "Lisa Faksi Konto",
+    "EDIT_FAXACCOUNT": "Redigeeri Faksi Kontot",
+    "DELETE_FAXACCOUNT": "Kustuta Faksi Konto",
+    "DISPOSITIONS": "Kasutused",
+    "WEBHOOKS": "VeebiHaagid",
+    "ACTIONS": "Tegevused",
+    "LIST": "Loend",
+    "FIDELITY": "Kvaliteet",
+    "ACCEPT": "Aktsepteeri",
+    "ACCEPTMETHOD": "Aktsepteeri Meetod",
+    "ACCEPTURL": "Aktsepteeri URL",
+    "REJECT": "Hülga",
+    "REJECTMETHOD": "Hülga Meetod",
+    "REJECTURL": "Hülga URL",
+    "CLOSE": "Sule",
+    "CLOSEMETHOD": "Sule Meetod",
+    "CLOSEURL": "Sule URL",
+    "TRUNK": "Magistraal",
+    "LOCALSTATIONID": "Kohaliku Jaama ID",
     "HELP": {
-      "LOCALSTATIONID": "Local Station Identifier (telephone number)",
-      "HEADERINFO": "Outbound Fax Header information",
-      "MODEM": "Modem Type (v17/v27/v29)",
-      "GATEWAY": "T.38 Fax Gateway, with optional fax activity timeout in seconds (yes/no/[timeout])",
-      "FAXDETECT": "Enable Fax Detect with optional timeout in seconds (yes/t38/cng/[timeout]/no)",
-      "T38TIMEOUT": "The timeout used for T.38 negotiation (minimum value=1000)",
-      "ECM": "Error Connection Mode (ECM)",
-      "MINRATE": "Minimum transfer rate set before transmission",
-      "MAXRATE": "Maximum transfer rate set before transmission",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
-      "MANDATORYDISPOSITIONPAUSEID": "Peata kohustusliku dispositsiooni olek"
+      "LOCALSTATIONID": "Kohaliku Jaama ID (telefoninumber)",
+      "HEADERINFO": "Väljuva Faksi Päise teave",
+      "MODEM": "Modemi Tüüp (v17/v27/v29)",
+      "GATEWAY": "T.38 Faksi Portaal, valikulise faksi tegevuse aegumisega sekundite jooksul (jah/ei/[aegumine])",
+      "FAXDETECT": "Luba Faksi Tuvastamine valikulise aegumisega sekundite jooksul (jah/t38/cng/[aegumine]/ei)",
+      "T38TIMEOUT": "T.38 läbirääkimise jaoks kasutatud aegumine (miinimumväärtus=1000)",
+      "ECM": "Ühenduse Režiimi Viga (ECM)",
+      "MINRATE": "Minimaalne edastuse määr, mis on määratud enne edastamist",
+      "MAXRATE": "Maksimaalne edastuse määr, mis on määratud enne edastamist",
+      "NAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
+      "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+      "MANDATORYDISPOSITIONPAUSEID": "Peata kohustusliku kasutamise olek"
     },
-    "ADVANCED": "Advanced",
+    "ADVANCED": "Täpsem",
     "ECM": "ECM",
-    "MINRATE": "Min Rate",
-    "MAXRATE": "Max Rate",
+    "MINRATE": "Min Määr",
+    "MAXRATE": "Maks Määr",
     "MODEM": "Modem",
-    "GATEWAY": "Gateway",
-    "FAXDETECT": "Fax Detect",
-    "T38TIMEOUT": "T.38 Timeout",
-    "SIP": "Technology",
-    "HEADERINFO": "Header Info",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "BACK": "Back",
-    "FAX": "Fax",
-    "ID": "Id",
-    "TIMEOUT": "Timeout",
-    "FAXDISPOSITIONS": "Fax Dispositions",
-    "NO_FAXDISPOSITION_AVAILABLE": "No Fax Dispositions available",
-    "NEW_FAXDISPOSITION": "New Fax Disposition",
-    "ADD_FAXDISPOSITION": "Add Fax Disposition",
-    "EDIT_FAXDISPOSITION": "Edit Fax Disposition",
-    "DELETE_FAXDISPOSITION": "Delete Fax Disposition",
-    "NEW_FAXQUEUE": "New Fax Queue",
-    "NEW_FAXACCOUNT": "New Fax Account",
-    "NO_AVAILABLE_INFO": "No available info",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "GATEWAY": "Portaal",
+    "FAXDETECT": "Faksi Tuvastus",
+    "T38TIMEOUT": "T.38 Aegumine",
+    "SIP": "Tehnoloogia",
+    "HEADERINFO": "Päise Teave",
+    "SELECTED": "Valitud",
+    "SELECT_ALL": "Vali Kõik",
+    "SELECT_NONE": "Ära vali Midagi",
+    "BACK": "Tagasi",
+    "FAX": "Faks",
+    "ID": "ID",
+    "TIMEOUT": "Aegumine",
+    "FAXDISPOSITIONS": "Faksi Kasutus",
+    "NO_FAXDISPOSITION_AVAILABLE": "Faksi Kasutused pole saadaval",
+    "NEW_FAXDISPOSITION": "Uus Faksi Kasutus",
+    "ADD_FAXDISPOSITION": "Lisa Faksi Kasutus",
+    "EDIT_FAXDISPOSITION": "Redigeeri Faksi Kasutus",
+    "DELETE_FAXDISPOSITION": "Kustuta Faksi Kasutus",
+    "NEW_FAXQUEUE": "Uus Faksi Järjekord",
+    "NEW_FAXACCOUNT": "Uus Faksi Konto",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "ALL_TEAMS": "Kõik Tiimid",
+    "SELECTED_TEAMS": "Valitud Tiimid",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "OF": "of",
-    "DELETE": "Delete",
-    "KEY": "Key",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
-    "FILTER": "Filter",
-    "SELECT_STATUS": "Select Status",
-    "ALL": "All",
-    "CLOSED": "Closed",
-    "OPENED": "Opened",
-    "SELECT_ACCOUNT": "Select Account",
-    "INTERACTIONS": "Interactions",
-    "CONTACT": "Contact",
-    "STARTEDAT": "Started At",
-    "STATUS": "Status",
-    "ACCOUNT": "Account",
-    "UNKNOWN": "Unknown",
-    "UNAVAILABLE": "Unavailable",
-    "NOT_INUSE": "Not in use",
-    "REACHABLE": "Reachable",
-    "IN_USE": "In use",
-    "VOICE": "Voice",
-    "CHAT": "Chat",
-    "MAIL": "Email",
-    "SMS": "SMS",
-    "OPENCHANNEL": "Open Channel",
-    "TOTAL": "Total",
-    "IN": "In",
-    "OUT": "Out",
-    "NO_INTERACTION_AVAILABLE": "No interactions available",
-    "INTERACTIONS_FAXACCOUNT": "Go to Interactions",
-    "REFRESH_INTERACTIONS": "Refresh Interactions",
-    "DELETE_INTERACTION": "Delete Interaction",
-    "AGENTADD_FAXACCOUNT": "Add Agent to Fax Account",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadige alla ilma manusteta",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Laadige alla koos manustega",
+    "DELETE": "Kustuta",
+    "KEY": "Võti",
+    "ALL_AGENTS": "Kõik Agendid",
+    "SELECTED_AGENTS": "Valitud Agendid",
+    "FILTER": "Filtreerimine",
+    "SELECT_STATUS": "Vali Staatus",
+    "ALL": "Kõik",
+    "CLOSED": "Suletud",
+    "OPENED": "Avatud",
+    "SELECT_ACCOUNT": "Vali Konto",
+    "INTERACTIONS": "Suhtlused",
+    "CONTACT": "Kontact",
+    "STARTEDAT": "Algusaeg",
+    "STATUS": "Staatus",
+    "ACCOUNT": "Konto",
+    "UNKNOWN": "Teadmata",
+    "UNAVAILABLE": "Pole saadaval",
+    "NOT_INUSE": "Pole kasutuses",
+    "REACHABLE": "Kättesaadav",
+    "IN_USE": "Kasutuses",
+    "VOICE": "Hääl",
+    "CHAT": "Vestlus",
+    "MAIL": "E-post",
+    "SMS": "Sõnum",
+    "OPENCHANNEL": "Ava Kanal",
+    "TOTAL": "Kokku",
+    "IN": "Sees",
+    "OUT": "Väljas",
+    "NO_INTERACTION_AVAILABLE": "Suhtlused pole saadaval",
+    "INTERACTIONS_FAXACCOUNT": "Mine Suhtlustesse",
+    "REFRESH_INTERACTIONS": "Värskenda Suhtlusi",
+    "DELETE_INTERACTION": "Kustuta Suhtlus",
+    "AGENTADD_FAXACCOUNT": "Lisa Agent Faksi Kontole",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadi alla ilma manusteta",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Laadi alla koos manustega",
     "LASTMESSAGE": "Viimane teade",
-    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Peatage olek kohustusliku dispositsiooni korral",
-    "TEAMS_ASSOCIATION": "Võistkondade liit",
+    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Peatage olek kohustusliku kasutamise korral",
+    "TEAMS_ASSOCIATION": "Tiimide liit",
     "TOOLTIP_SCREENRECORDING_OFF": "Ekraanisalvestus on saadaval",
     "TOOLTIP_SCREENRECORDING_ON": "Ekraanisalvestus pooleli"
   }
index 4c1be43..b43fb9a 100644 (file)
@@ -1,8 +1,8 @@
 {
   "HELP": {
-    "ABOUT": "About",
-    "CONTACT_US": "Contact us",
-    "HELP": "Help",
-    "USEFUL_LINKS": "Useful links"
+    "ABOUT": "Kohta",
+    "CONTACT_US": "Võta meiega ühendust",
+    "HELP": "Abi",
+    "USEFUL_LINKS": "Kasulikud lingid"
   }
 }
index 0a98fe6..7444e6b 100644 (file)
@@ -1,54 +1,54 @@
 {
   "INTEGRATIONS": {
-    "ADVANCED": "Advanced",
-    "MODULE_SEARCH": "Module Search",
-    "MODULE_CREATE": "Module Create",
-    "INTEGRATIONS": "Integrations",
-    "ZENDESKACCOUNTS": "Zendesk Accounts",
-    "ID": "Id",
-    "NAME": "Name",
-    "USERNAME": "Username",
+    "ADVANCED": "Täpsem",
+    "MODULE_SEARCH": "Mooduli Otsing",
+    "MODULE_CREATE": "Mooduli Loomine",
+    "INTEGRATIONS": "Integreerimised",
+    "ZENDESKACCOUNTS": "Zendesk Kontod",
+    "ID": "ID",
+    "NAME": "Nimi",
+    "USERNAME": "Kasutajanimi",
     "URI": "URL",
-    "BACK": "Back",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "EDIT_ZENDESKACCOUNT": "Edit Zendesk Account",
-    "DELETE_ZENDESKACCOUNT": "Delete Zendesk Account",
-    "NEW_ZENDESKACCOUNT": "New Zendesk Account",
-    "AUTHTYPE": "Authentication Type",
-    "PASSWORD": "Password",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "TOKEN": "Token",
-    "MOTIONPROXYADDRESS": "Motion or Proxy IP Address",
-    "DESCRIPTION": "Description",
-    "ADD_ZENDESKACCOUNT": "Add Zendesk Account",
+    "BACK": "Tagasi",
+    "SELECTED": "Valitud",
+    "SELECT_ALL": "Vali Kõik",
+    "SELECT_NONE": "Ära vali Midagi",
+    "EDIT_ZENDESKACCOUNT": "Redigeeri Zendesk Kontot",
+    "DELETE_ZENDESKACCOUNT": "Kustuta Zendesk Konto",
+    "NEW_ZENDESKACCOUNT": "Uus Zendesk Konto",
+    "AUTHTYPE": "Autentimise Tüüp",
+    "PASSWORD": "Parool",
+    "CONFIRM_PASSWORD": "Kinnita Parool",
+    "TOKEN": "Luba",
+    "MOTIONPROXYADDRESS": "Liikuv või Puhvri IP-aadress",
+    "DESCRIPTION": "Kirjeldus",
+    "ADD_ZENDESKACCOUNT": "Lisa Zendesk Konto",
     "ERRORS": {
-      "NAME_REQUIRED": "Mandatory field",
-      "USERNAME_REQUIRED": "Mandatory field",
-      "URI_REQUIRED": "Mandatory field",
-      "URI_MUST_VALID_URL": "Wrong format",
-      "PASSWORD_REQUIRED": "Mandatory field",
-      "CONFIRM_NOT_MATCH": "The passwords don't match",
-      "TOKEN_REQUIRED": "Mandatory field",
-      "MOTIONPROXYADDRESS_MUST_VALID_URL": "Wrong format",
-      "CLIENTID_REQUIRED": "Mandatory field",
-      "CLIENTSECRET_REQUIRED": "Mandatory field",
-      "SECURITYTOKEN_REQUIRED": "Mandatory field",
-      "APIKEY_REQUIRED": "Mandatory field",
-      "CONTENT_REQUIRED": "Mandatory field",
-      "VARIABLENAME_REQUIRED": "Mandatory field",
-      "KEY_REQUIRED": "Mandatory field",
-      "TYPE_REQUIRED": "Mandatory field",
-      "VALUE_REQUIRED": "Mandatory field",
-      "FIELD_REQUIRED": "Mandatory field",
-      "CONSUMERKEY_REQUIRED": "Mandatory field",
-      "CONSUMERSECRET_REQUIRED": "Mandatory field",
-      "TOKENSECRET_REQUIRED": "Mandatory field",
-      "HOST_REQUIRED": "Mandatory field",
-      "AUTHTOKEN_REQUIRED": "Mandatory field",
-      "VTIGER_USER_NAME_REQUIRED": "Mandatory field",
-      "ACCESS_KEY_REQUIRED": "Mandatory field",
+      "NAME_REQUIRED": "Kohustuslik väli",
+      "USERNAME_REQUIRED": "Kohustuslik väli",
+      "URI_REQUIRED": "Kohustuslik väli",
+      "URI_MUST_VALID_URL": "Vale formaat",
+      "PASSWORD_REQUIRED": "Kohustuslik väli",
+      "CONFIRM_NOT_MATCH": "Paroolid ei ühti",
+      "TOKEN_REQUIRED": "Kohustuslik väli",
+      "MOTIONPROXYADDRESS_MUST_VALID_URL": "Vale formaat",
+      "CLIENTID_REQUIRED": "Kohustuslik väli",
+      "CLIENTSECRET_REQUIRED": "Kohustuslik väli",
+      "SECURITYTOKEN_REQUIRED": "Kohustuslik väli",
+      "APIKEY_REQUIRED": "Kohustuslik väli",
+      "CONTENT_REQUIRED": "Kohustuslik väli",
+      "VARIABLENAME_REQUIRED": "Kohustuslik väli",
+      "KEY_REQUIRED": "Kohustuslik väli",
+      "TYPE_REQUIRED": "Kohustuslik väli",
+      "VALUE_REQUIRED": "Kohustuslik väli",
+      "FIELD_REQUIRED": "Kohustuslik väli",
+      "CONSUMERKEY_REQUIRED": "Kohustuslik väli",
+      "CONSUMERSECRET_REQUIRED": "Kohustuslik väli",
+      "TOKENSECRET_REQUIRED": "Kohustuslik väli",
+      "HOST_REQUIRED": "Kohustuslik väli",
+      "AUTHTOKEN_REQUIRED": "Kohustuslik väli",
+      "VTIGER_USER_NAME_REQUIRED": "Kohustuslik väli",
+      "ACCESS_KEY_REQUIRED": "Kohustuslik väli",
       "CODE_REQUIRED": "Kohustuslik väli",
       "EMAIL_REQUIRED": "Kohustuslik väli",
       "TENANTID_REQUIRED": "Kohustuslik väli",
       "MODULECREATE_REQUIRED": "Kohustuslik väli"
     },
     "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",
+      "MOTIONPROXYADDRESS": "Liikuv (Puhvri) Address: see on nõutav, kui soovid täita pileti sisu Salvestuse URLiga. Sisesta aadress järgmises formaadis: <protocol> : //<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
       "CLIENTID": "Teie rakenduse konkreetne kliendi ID",
       "CLIENTSECRET": "Teie rakenduse konkreetne CLientSecret",
       "CODE": "Arendajakonsooli kaudu genereeritud konkreetne kood",
       "REFRESHTOKEN": "Automaatselt genereeritav värskendamisluba, mida kasutatakse aegunud juurdepääsumärkide värskendamiseks. Samuti genereeritakse pääsuluba automaatselt iga kord, kui api käivitatakse.",
       "TICKETTYPE": "Pileti tüüp",
-      "ZONE": "Valige domeenipõhiste Zoho-kontode aktiveerimiseks oma geograafiline tsoon (USA, AU, EL, IN, CN)",
+      "ZONE": "Vali domeenipõhiste Zoho-kontode aktiveerimiseks oma geograafiline tsoon (USA, AU, EL, IN, CN)",
       "ADDITIONALSEARCHACCOUNT": "Täiendav välja nimi, mida kasutatakse kontol kliendi telefoninumbri otsimiseks",
       "ADDITIONALSEARCHCONTACT": "Täiendav välja nimi, mida kasutatakse kliendi telefoninumbri otsimiseks menüüst Kontaktid",
       "ADDITIONALSEARCHLEAD": "Potentsiaalsete klientide telefoninumbri otsimiseks kasutatav täiendav välja nimi",
-      "LEADID": "Välja ja juhtumi objektide linkimiseks kasutatav välja nimi",
-      "MODERN_AUTHENTICATION": "Lülitage sisse, et lubada kaasaegne autentimine"
+      "LEADID": "Välja ja juhtumi objektide linkimiseks kasutatav välja nimi"
     },
-    "ACCOUNT": "Account",
-    "ZENDESKCONFIGURATIONS": "Zendesk Configurations",
-    "SALESFORCECONFIGURATIONS": "Salesforce Configurations",
-    "SUGARCRMCONFIGURATIONS": "SugarCRM Configurations",
-    "FRESHDESKCONFIGURATIONS": "Freshdesk Configurations",
-    "GENERAL": "General",
-    "CREATED_AT": "Created At",
-    "SAVE": "Save",
-    "NO_ZENDESKCONFIGURATION_AVAILABLE": "No Zendesk Configurations available",
-    "NEW_ZENDESKCONFIGURATION": "New Zendesk Configuration",
-    "ADD_ZENDESKCONFIGURATION": "Add Zendesk Configuration",
-    "EDIT_ZENDESKCONFIGURATION": "Edit Zendesk Configuration",
-    "DELETE_ZENDESKCONFIGURATION": "Delete Zendesk Configuration",
-    "NO_SALESFORCECONFIGURATION_AVAILABLE": "No Salesforce Configurations available",
-    "NEW_SALESFORCECONFIGURATION": "New Salesforce Configuration",
-    "ADD_SALESFORCECONFIGURATION": "Add Salesforce Configuration",
-    "EDIT_SALESFORCECONFIGURATION": "Edit Salesforce Configuration",
-    "DELETE_SALESFORCECONFIGURATION": "Delete Salesforce Configuration",
-    "NO_SUGARCRMCONFIGURATION_AVAILABLE": "No SugarCRM Configurations available",
-    "NEW_SUGARCRMCONFIGURATION": "New SugarCRM Configuration",
-    "ADD_SUGARCRMCONFIGURATION": "Add SugarCRM Configuration",
-    "EDIT_SUGARCRMCONFIGURATION": "Edit SugarCRM Configuration",
-    "DELETE_SUGARCRMCONFIGURATION": "Delete SugarCRM Configuration",
-    "NO_FRESHDESKCONFIGURATION_AVAILABLE": "No Freshdesk Configurations available",
-    "NEW_FRESHDESKCONFIGURATION": "New Freshdesk Configuration",
-    "ADD_FRESHDESKCONFIGURATION": "Add Freshdesk Configuration",
-    "EDIT_FRESHDESKCONFIGURATION": "Edit Freshdesk Configuration",
-    "DELETE_FRESHDESKCONFIGURATION": "Delete Freshdesk Configuration",
-    "SALESFORCEACCOUNTS": "Salesforce Accounts",
-    "EDIT_SALESFORCEACCOUNT": "Edit Salesforce Account",
-    "DELETE_SALESFORCEACCOUNT": "Delete Salesforce Account",
-    "NEW_SALESFORCEACCOUNT": "New Salesforce Account",
-    "ADD_SALESFORCEACCOUNT": "Add Salesforce Account",
-    "CLIENTID": "Client ID",
-    "CLIENTSECRET": "Client Secret",
-    "SECURITYTOKEN": "Security Token",
-    "SEARCH_FOR_ANYONE": "Search",
-    "APIKEY": "Api Key",
-    "FRESHDESKACCOUNTS": "Freshdesk Accounts",
-    "EDIT_FRESHDESKACCOUNT": "Edit Freshdesk Account",
-    "DELETE_FRESHDESKACCOUNT": "Delete Freshdesk Account",
-    "NEW_FRESHDESKACCOUNT": "New Freshdesk Account",
-    "ADD_FRESHDESKACCOUNT": "Add Freshdesk Account",
-    "SUGARCRMACCOUNTS": "SugarCRM Accounts",
-    "EDIT_SUGARCRMACCOUNT": "Edit SugarCRM Account",
-    "DELETE_SUGARCRMACCOUNT": "Delete SugarCRM Account",
-    "NEW_SUGARCRMACCOUNT": "New SugarCRM Account",
-    "ADD_SUGARCRMACCOUNT": "Add SugarCRM Account",
-    "CONFIGURATIONS": "Configurations",
-    "NO_CONFIGURATION_AVAILABLE": "No Configurations available",
-    "NEW_CONFIGURATION": "New Configuration",
-    "ADD_CONFIGURATION": "Add Configuration",
-    "EDIT_CONFIGURATION": "Edit Configuration",
-    "DELETE_CONFIGURATION": "Delete Configuration",
-    "SUBJECTS": "Subjects",
-    "DESCRIPTIONS": "Descriptions",
-    "FIELDS": "Fields",
-    "TAGS": "Tags",
-    "TYPE": "Type",
-    "CONTENT": "Content",
-    "EDIT_SUBJECT": "Edit Subject",
-    "DELETE_SUBJECT": "Delete Subject",
-    "NEW_SUBJECT": "New Subject",
-    "ADD_SUBJECT": "Add Subject",
-    "EDIT_DESCRIPTION": "Edit Description",
-    "DELETE_DESCRIPTION": "Delete Description",
-    "NEW_DESCRIPTION": "New Description",
-    "ADD_DESCRIPTION": "Add Description",
-    "EDIT_FIELD": "Edit Field",
-    "DELETE_FIELD": "Delete Field",
-    "NEW_FIELD": "New Field",
-    "ADD_FIELD": "Add Field",
-    "ADD": "Add",
-    "VOICE": "Voice",
-    "MAIL": "Email",
-    "CHAT": "Chat",
-    "SMS": "SMS",
-    "OPENCHANNEL": "Open Channel",
-    "INBOUND_IN_QUEUE": "Inbound in Queue",
-    "OUTBOUND_CALL": "Outbound Call",
-    "VALUE": "Value",
-    "FIELD": "Field",
-    "KEY": "Key",
-    "CHANNEL": "Channel",
-    "DELETE": "Delete",
-    "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 Accounts",
-    "EDIT_DESKACCOUNT": "Edit Desk Account",
-    "TEST_DESKACCOUNT": "Test Desk Account",
-    "DELETE_DESKACCOUNT": "Delete Desk Account",
-    "CONSUMERKEY": "Consumer Key",
-    "CONSUMERSECRET": "Consumer Secret",
-    "TOKENSECRET": "Token Secret",
-    "ADD_DESKACCOUNT": "Add Desk Account",
-    "NEW_DESKACCOUNT": "New Desk Account",
-    "ADD_DESKCONFIGURATION": "Add Desk Configuration",
-    "NEW_DESKCONFIGURATION": "New Desk Configuration",
-    "DELETE_DESKCONFIGURATION": "Delete Desk Configuration",
-    "ZOHOACCOUNTS": "Zoho Accounts",
-    "EDIT_ZOHOACCOUNT": "Edit Zoho Account",
-    "TEST_ZOHOACCOUNT": "Test Zoho Account",
-    "DELETE_ZOHOACCOUNT": "Delete Zoho Account",
-    "ADD_ZOHOACCOUNT": "Add Zoho Account",
-    "NEW_ZOHOACCOUNT": "New Zoho Account",
-    "ADD_ZOHOCONFIGURATION": "Add Zoho Configuration",
-    "NEW_ZOHOCONFIGURATION": "New Zoho Configuration",
-    "AUTHTOKEN": "Authorization Token",
+    "ACCOUNT": "Konto",
+    "ZENDESKCONFIGURATIONS": "Zendesk Konfiguratsioonid",
+    "SALESFORCECONFIGURATIONS": "Salesforce Konfiguratsioonid",
+    "SUGARCRMCONFIGURATIONS": "SugarCRM Konfiguratsioonid",
+    "FRESHDESKCONFIGURATIONS": "Freshdesk Konfiguratsioonid",
+    "GENERAL": "Üldine",
+    "CREATED_AT": "Loomisaeg",
+    "SAVE": "Salvesta",
+    "NO_ZENDESKCONFIGURATION_AVAILABLE": "Zendesk Konfiguratsioonid pole saadaval",
+    "NEW_ZENDESKCONFIGURATION": "Uus Zendesk Konfiguratsioon",
+    "ADD_ZENDESKCONFIGURATION": "Lisa Zendesk Konfiguratsioon",
+    "EDIT_ZENDESKCONFIGURATION": "Redigeeri Zendesk Konfiguratsiooni",
+    "DELETE_ZENDESKCONFIGURATION": "Kustuta Zendesk Konfiguratsioon",
+    "NO_SALESFORCECONFIGURATION_AVAILABLE": "Salesforce Konfiguratsioonid pole saadaval",
+    "NEW_SALESFORCECONFIGURATION": "Uus Salesforce Konfiguratsioon",
+    "ADD_SALESFORCECONFIGURATION": "Lisa Salesforce Konfiguratsioon",
+    "EDIT_SALESFORCECONFIGURATION": "Redigeeri Salesforce Konfiguratsiooni",
+    "DELETE_SALESFORCECONFIGURATION": "Kustuta Salesforce Konfiguratsioon",
+    "NO_SUGARCRMCONFIGURATION_AVAILABLE": "SugarCRM Konfiguratsioonid pole saadaval",
+    "NEW_SUGARCRMCONFIGURATION": "Uus SugarCRM Konfiguratsioon",
+    "ADD_SUGARCRMCONFIGURATION": "Lisa SugarCRM Konfiguratsioon",
+    "EDIT_SUGARCRMCONFIGURATION": "Redigeeri SugarCRM Konfiguratsiooni",
+    "DELETE_SUGARCRMCONFIGURATION": "Kustuta SugarCRM Konfiguratsioon",
+    "NO_FRESHDESKCONFIGURATION_AVAILABLE": "Freshdesk Konfiguratsioonid pole saadaval",
+    "NEW_FRESHDESKCONFIGURATION": "Uus Freshdesk Konfiguratsioon",
+    "ADD_FRESHDESKCONFIGURATION": "Lisa Freshdesk Konfiguratsioon",
+    "EDIT_FRESHDESKCONFIGURATION": "Redigeeri Freshdesk Konfiguratsiooni",
+    "DELETE_FRESHDESKCONFIGURATION": "Kustuta Freshdesk Konfiguratsioon",
+    "SALESFORCEACCOUNTS": "Salesforce Kontod",
+    "EDIT_SALESFORCEACCOUNT": "Redigeeri Salesforce Kontot",
+    "DELETE_SALESFORCEACCOUNT": "Kustuta Salesforce Konto",
+    "NEW_SALESFORCEACCOUNT": "Uus Salesforce Konto",
+    "ADD_SALESFORCEACCOUNT": "Lisa Salesforce Konto",
+    "CLIENTID": "Kliendi ID",
+    "CLIENTSECRET": "Kliendi Saladus",
+    "SECURITYTOKEN": "Turvalisuse Luba",
+    "SEARCH_FOR_ANYONE": "Otsi",
+    "APIKEY": "Api Võti",
+    "FRESHDESKACCOUNTS": "Freshdesk Kontod",
+    "EDIT_FRESHDESKACCOUNT": "Redigeeri Freshdesk Kontot",
+    "DELETE_FRESHDESKACCOUNT": "Kustuta Freshdesk Konto",
+    "NEW_FRESHDESKACCOUNT": "Uus Freshdesk Konto",
+    "ADD_FRESHDESKACCOUNT": "Lisa Freshdesk Konto",
+    "SUGARCRMACCOUNTS": "SugarCRM Kontod",
+    "EDIT_SUGARCRMACCOUNT": "Redigeeri SugarCRM Kontot",
+    "DELETE_SUGARCRMACCOUNT": "Kustuta SugarCRM Konto",
+    "NEW_SUGARCRMACCOUNT": "Uus SugarCRM Konto",
+    "ADD_SUGARCRMACCOUNT": "Lisa SugarCRM Konto",
+    "CONFIGURATIONS": "Konfiguratsioonid",
+    "NO_CONFIGURATION_AVAILABLE": "Konfiguratsioonid pole saadaval",
+    "NEW_CONFIGURATION": "Uus Konfiguratsioon",
+    "ADD_CONFIGURATION": "Lisa Konfiguratsioon",
+    "EDIT_CONFIGURATION": "Redigeeri Konfiguratsiooni",
+    "DELETE_CONFIGURATION": "Kustuta Konfiguratsioon",
+    "SUBJECTS": "Teemad",
+    "DESCRIPTIONS": "Kirjeldused",
+    "FIELDS": "Väljad",
+    "TAGS": "Sildid",
+    "TYPE": "Tüüp",
+    "CONTENT": "Sisu",
+    "EDIT_SUBJECT": "Redigeeri Teemat",
+    "DELETE_SUBJECT": "Kustuta Teema",
+    "NEW_SUBJECT": "Uus Teema",
+    "ADD_SUBJECT": "Lisa Teema",
+    "EDIT_DESCRIPTION": "Redigeeri Kirjeldust",
+    "DELETE_DESCRIPTION": "Kustuta Kirjeldus",
+    "NEW_DESCRIPTION": "Uus Kirjeldus",
+    "ADD_DESCRIPTION": "Lisa Kirjeldus",
+    "EDIT_FIELD": "Redigeeri Väli",
+    "DELETE_FIELD": "Kustuta Väli",
+    "NEW_FIELD": "Uus Väli",
+    "ADD_FIELD": "Lisa Väli",
+    "ADD": "Lisa",
+    "VOICE": "Hääl",
+    "MAIL": "E-post",
+    "CHAT": "Vestlus",
+    "SMS": "Sõnum",
+    "OPENCHANNEL": "Ava Kanal",
+    "INBOUND_IN_QUEUE": "Sisenevad Järjekorras",
+    "OUTBOUND_CALL": "Väljuv Kõne",
+    "VALUE": "Väärtus",
+    "FIELD": "Väli",
+    "KEY": "Võti",
+    "CHANNEL": "Kanal",
+    "DELETE": "Kustuta",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "TEST_ZENDESKACCOUNT": "Testi Zendesk Kontot",
+    "TEST_FRESHDESKACCOUNT": "Testi Freshdesk Kontot",
+    "TEST_SUGARCRMACCOUNT": "Testi SugerCRM Kontot",
+    "TEST_SALESFORCEACCOUNT": "Testi Salesforce Kontot",
+    "INTEGRATION_TAB": "Integratsiooni Vahekaart",
+    "NEW_TAB": "Uus Vahekaart",
+    "DESKACCOUNTS": "Desk Kontod",
+    "EDIT_DESKACCOUNT": "Redigeeri Desk Kontot",
+    "TEST_DESKACCOUNT": "Testi Desk Kontot",
+    "DELETE_DESKACCOUNT": "Kustuta Desk Konto",
+    "CONSUMERKEY": "Tarbija Võti",
+    "CONSUMERSECRET": "Tarbija Saladus",
+    "TOKENSECRET": "Loa Saladus",
+    "ADD_DESKACCOUNT": "Lisa Desk Konto",
+    "NEW_DESKACCOUNT": "Uus Desk Konto",
+    "ADD_DESKCONFIGURATION": "Lisa Desk Konfiguratsioon",
+    "NEW_DESKCONFIGURATION": "Uus Desk Konfiguratsioon",
+    "DELETE_DESKCONFIGURATION": "Kustuta Desk Konfiguratsioon",
+    "ZOHOACCOUNTS": "Zoho Kontod",
+    "EDIT_ZOHOACCOUNT": "Redigeeri Zoho Kontot",
+    "TEST_ZOHOACCOUNT": "Testi Zoho Kontot",
+    "DELETE_ZOHOACCOUNT": "Kustuta Zoho Konto",
+    "ADD_ZOHOACCOUNT": "Lisa Zoho Konto",
+    "NEW_ZOHOACCOUNT": "Uus Zoho Konto",
+    "ADD_ZOHOCONFIGURATION": "Lisa Zoho Konfiguratsioon",
+    "NEW_ZOHOCONFIGURATION": "Uus Zoho Konfiguratsioon",
+    "AUTHTOKEN": "Autoriseerimise Luba",
     "HOST": "Host",
-    "DELETE_ZOHOCONFIGURATION": "Delete Zoho Configuration",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "DELETE_ZOHOCONFIGURATION": "Kustuta Zoho Konfiguratsioon",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "OF": "of",
-    "VTIGERACCOUNTS": "vTiger Accounts",
-    "VTIGER_USER_NAME": "vTiger User Name",
-    "MODULE_NAME": "vTiger Module Name",
-    "ACCESS_KEY": "vTiger Access Key",
-    "ADD_VTIGERACCOUNT": "Add new vTiger Account",
-    "EDIT_VTIGERACCOUNT": "Edit vTiger Account",
-    "TEST_VTIGERACCOUNT": "Test vTiger Account",
-    "DELETE_VTIGERACCOUNT": "Delete vTiger Account",
-    "NEW_VTIGERACCOUNT": "New vTiger Account",
-    "NEW_VTIGERCONFIGURATION": "Create vTiger Configuration",
-    "DELETE_VTIGERCONFIGURATION": "Delete vTiger Configuration",
-    "ADD_VTIGERCONFIGURATION": "Add vTiger Configuration",
-    "ADD_DYNAMICS365ACCOUNT": "Lisage uus Dynamics365 konto",
-    "ADD_DYNAMICS365CONFIGURATION": "Lisage Dynamics365 konfiguratsioon",
-    "ADD_FRESHSALESACCOUNT": "Lisage värskenduste konto",
-    "ADD_FRESHSALESCONFIGURATION": "Lisage värskenduste konfiguratsioon",
-    "ADD_SERVICENOWACCOUNT": "Lisage uus ServiceNow konto",
-    "ADD_SERVICENOWCONFIGURATION": "Lisage teenuseNow konfiguratsioon",
+    "VTIGERACCOUNTS": "vTiger Kontod",
+    "VTIGER_USER_NAME": "vTiger Kasutajanimi",
+    "MODULE_NAME": "vTiger Mooduli Nimi",
+    "ACCESS_KEY": "vTiger Pääsuvõti",
+    "ADD_VTIGERACCOUNT": "Lisa Uus vTiger Konto",
+    "EDIT_VTIGERACCOUNT": "Redigeeri vTiger Kontot",
+    "TEST_VTIGERACCOUNT": "Testi vTiger Kontot",
+    "DELETE_VTIGERACCOUNT": "Kustuta vTiger Konto",
+    "NEW_VTIGERACCOUNT": "Uus vTiger Konto",
+    "NEW_VTIGERCONFIGURATION": "Loo vTiger Konfiguratsioon",
+    "DELETE_VTIGERCONFIGURATION": "Kustuta vTiger Konfiguratsioon",
+    "ADD_VTIGERCONFIGURATION": "Lisa vTiger Konfiguratsioon",
+    "ADD_DYNAMICS365ACCOUNT": "Lisa uus Dynamics365 konto",
+    "ADD_DYNAMICS365CONFIGURATION": "Lisa Dynamics365 konfiguratsioon",
+    "ADD_FRESHSALESACCOUNT": "Lisa värskenduste konto",
+    "ADD_FRESHSALESCONFIGURATION": "Lisa värskenduste konfiguratsioon",
+    "ADD_SERVICENOWACCOUNT": "Lisa uus ServiceNow konto",
+    "ADD_SERVICENOWCONFIGURATION": "Lisa teenuse Now konfiguratsioon",
     "CASE": "Juhtum",
     "CODE": "Arendaja konsooli kood",
-    "CONTACTS": "Võtke ühendust",
-    "DELETE_DYNAMICS365ACCOUNT": "Kustutage Dynamics365 konto",
-    "DELETE_DYNAMICS365CONFIGURATION": "Kustutage Dynamics365 konfiguratsioon",
+    "CONTACTS": "Võta ühendust",
+    "DELETE_DYNAMICS365ACCOUNT": "Kustuta Dynamics365 konto",
+    "DELETE_DYNAMICS365CONFIGURATION": "Kustuta Dynamics365 konfiguratsioon",
     "DELETE_FRESHSALESACCOUNT": "Kustuta värskenduste konto",
-    "DELETE_FRESHSALESCONFIGURATION": "Kustutage värskenduste konfiguratsioon",
+    "DELETE_FRESHSALESCONFIGURATION": "Kustuta värskenduste konfiguratsioon",
     "DELETE_SERVICENOWACCOUNT": "Kustuta ServiceNow konto",
-    "DELETE_SERVICENOWCONFIGURATION": "Kustutage teenuseNow konfiguratsioon",
+    "DELETE_SERVICENOWCONFIGURATION": "Kustuta ServiceNow konfiguratsioon",
     "DYNAMICS365ACCOUNTS": "Dynamics365 kontod",
-    "EDIT_DYNAMICS365ACCOUNT": "Muutke rakenduse Dynamics365 kontot",
-    "EDIT_FRESHSALESACCOUNT": "Redigeeri värskenduste kontot",
-    "EDIT_FRESHSALESCONFIGURATION": "Redigeeri värskenduste konfiguratsiooni",
-    "EDIT_SERVICENOWACCOUNT": "Teenuse ServiceNow konto muutmine",
+    "EDIT_DYNAMICS365ACCOUNT": "Muuda rakenduse Dynamics365 kontot",
+    "EDIT_FRESHSALESACCOUNT": "Redigeeri Freshsales kontot",
+    "EDIT_FRESHSALESCONFIGURATION": "Redigeeri Freshsales konfiguratsiooni",
+    "EDIT_SERVICENOWACCOUNT": "Redigeeri ServiceNow kontot",
     "EMAIL": "E-post",
-    "FRESHSALESACCOUNTS": "Värske müügi kontod",
-    "LEADS": "Plii",
+    "FRESHSALESACCOUNTS": "Freshsales kontod",
+    "LEADS": "Vihjed",
     "MODULECREATE": "Mooduli loomine",
     "NEW_DYNAMICS365ACCOUNT": "Uus Dynamics365 konto",
-    "NEW_DYNAMICS365CONFIGURATION": "Looge Dynamics365 konfiguratsioon",
-    "NEW_FRESHSALESACCOUNT": "Uus värskete müügi konto",
-    "NEW_FRESHSALESCONFIGURATION": "Uus värskenduste konfiguratsioon",
+    "NEW_DYNAMICS365CONFIGURATION": "Loo Dynamics365 konfiguratsioon",
+    "NEW_FRESHSALESACCOUNT": "Uus Freshsales konto",
+    "NEW_FRESHSALESCONFIGURATION": "Uus Freshsales konfiguratsioon",
     "NEW_SERVICENOWACCOUNT": "Uus ServiceNow konto",
-    "NEW_SERVICENOWCONFIGURATION": "Looge teenuseNow konfiguratsioon",
-    "NO_FRESHSALESCONFIGURATION_AVAILABLE": "Värske müügi konfiguratsioone pole saadaval",
+    "NEW_SERVICENOWCONFIGURATION": "Loo ServiceNow konfiguratsioon",
+    "NO_FRESHSALESCONFIGURATION_AVAILABLE": "Freshsales konfiguratsioonid pole saadaval",
     "PHONECALL": "Telefonikõne",
-    "REFRESHTOKEN": "Värskenda luba (loodud)",
+    "REFRESHTOKEN": "Värskenda luba",
     "SERVICENOWACCOUNTS": "ServiceNow kontod",
     "TASK": "Ülesanne",
-    "TENANTID": "Üürniku ID",
-    "TEST_DYNAMICS365ACCOUNT": "Testige Dynamics365 kontot",
-    "TEST_FRESHSALESACCOUNT": "Testige värskenduste kontot",
-    "TEST_SERVICENOWACCOUNT": "Test ServiceNow konto testimine",
+    "TENANTID": "Rentniku ID",
+    "TEST_DYNAMICS365ACCOUNT": "Testi Dynamics365 kontot",
+    "TEST_FRESHSALESACCOUNT": "Testi Freshsales kontot",
+    "TEST_SERVICENOWACCOUNT": "Testi ServiceNow kontot",
     "TICKETTYPE": "Pileti tüüp",
     "ZONE": "Tsoon",
     "ADDITIONALSEARCHACCOUNT": "Täiendav otsingukonto",
     "ADDITIONALSEARCHCONTACT": "Täiendav otsingu kontakt",
-    "ADDITIONALSEARCHLEAD": "Täiendav otsingujuht",
-    "LEADID": "Plii ID",
-    "DYNAMIC365CONTACT": "Võtke ühendust",
-    "DYNAMIC365NOTHING": "Mitte midagi",
-    "MODERN_AUTHENTICATION": "Kaasaegne autentimine",
-    "OPENNEWTAB": "Ava uus vaheleht"
+    "ADDITIONALSEARCHLEAD": "Täiendav otsinguvihje",
+    "LEADID": "Vihje ID"
   }
 }
index 054f558..0aa355b 100644 (file)
 {
   "JSCRIPTY": {
-    "CLONE_PROJECT": "Clone Project",
-    "NAME": "Name",
-    "SEARCH_FOR_ANYONE": "Search",
-    "BACK": "Back",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "DESCRIPTION": "Description",
+    "CLONE_PROJECT": "Klooni Projekti",
+    "NAME": "Nimi",
+    "SEARCH_FOR_ANYONE": "Otsi",
+    "BACK": "Tagasi",
+    "SELECTED": "Valitud",
+    "SELECT_ALL": "Vali Kõik",
+    "SELECT_NONE": "Ära Vali Midagi",
+    "DESCRIPTION": "Kirjeldus",
     "ERRORS": {
-      "NAME_REQUIRED": "Mandatory field",
-      "PROJECT_REQUIRED": "Mandatory field",
-      "FIELD_REQUIRED": "Mandatory field",
-      "NAME_MUST_VALID_PATTERN": "Wrong format"
+      "NAME_REQUIRED": "Kohustuslik väli",
+      "PROJECT_REQUIRED": "Kohustuslik väli",
+      "FIELD_REQUIRED": "Kohustuslik väli",
+      "NAME_MUST_VALID_PATTERN": "Vale formaat"
     },
-    "SAVE": "Save",
-    "PROJECTS": "Projects",
-    "ADD_PROJECT": "Add Project",
-    "EDIT_PROJECT": "Edit Project",
-    "DELETE_PROJECT": "Delete Project",
+    "SAVE": "Salvesta",
+    "PROJECTS": "Projektid",
+    "ADD_PROJECT": "Lisa Projekt",
+    "EDIT_PROJECT": "Redigeeri Projekti",
+    "DELETE_PROJECT": "Kustuta Projekt",
     "JSCRIPTY": "Jscripty",
-    "ID": "Id",
-    "PROJECT": "Project",
-    "CREATED_AT": "Created At",
-    "NEW_PROJECT": "New Project",
-    "EDIT": "Edit",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
-    "BUILDER": "Builder",
-    "PREVIEW": "Preview",
-    "OPEN_CONTACT": "Open Contact",
+    "ID": "ID",
+    "PROJECT": "Projekt",
+    "CREATED_AT": "Loomisaeg",
+    "NEW_PROJECT": "Uus Projekt",
+    "EDIT": "Redigeeri",
+    "SETTINGS": "Sätted",
+    "GENERAL": "Üldine",
+    "BUILDER": "Koostur",
+    "PREVIEW": "Eelvaade",
+    "OPEN_CONTACT": "Ava Kontakt",
     "HELP": {
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "ENABLEUNCOMPLETESAVE": "Allow to save the agent session even if the survey is not complete",
-      "SENDUNPAUSEONSUBMIT": "Uuringu lõpus peatage agendi paus automaatselt"
+      "NAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
+      "ENABLEUNCOMPLETESAVE": "Luba salvestada agendi sessiooni isegi siis, kui uuring pole lõpetatud",
+      "SENDUNPAUSEONSUBMIT": "Uuringu lõpus katkesta agendi paus automaatselt"
     },
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "OF": "of",
-    "JSCRIPTYSESSIONS": "Project Sessions",
-    "SESSIONS": "Sessions",
-    "STARTTIME": "Start Time",
-    "ENDTIME": "End Time",
-    "MEMBERNAME": "Member Name",
-    "CALLERIDNUM": "Caller Number",
-    "NO_SESSION_AVAILABLE": "No Sessions available",
-    "SESSION_RESULTS": "Session Results",
-    "SHOW_QUESTIONS_SESSION": "Show Session Results",
-    "ANSWERS": "Answers",
-    "NO_RESULTS_AVAILABLE": "No results available",
-    "TOTAL": "Total",
-    "ANSWER": "Answer",
-    "EXPORT_TO_CSV": "Export to CSV",
-    "NO_ANSWERS_AVAILABLE": "No answers available",
-    "DELETE_SESSION": "Delete Session",
-    "RESET_SESSION": "Reset Session",
-    "YES": "Yes",
-    "NO": "No",
-    "DO_YOU_WANT_TO_RESET_SESSION": "Do you want to reset the session?",
-    "ALL_SURVEY_DATA_WILL_BE_LOST": "All survey answers will be lost!",
-    "ENABLEUNCOMPLETESAVE": "Enable incomplete save",
-    "SUBMIT": "Submit",
-    "PROJECT_NOT_AVAILABLE": "Project is not available. Please contact the administrator",
-    "COMPLETE": "Complete",
-    "SESSIONS_PROJECT": "Go to Sessions",
-    "SENDUNPAUSEONSUBMIT": "Peata esindaja saatmisel"
+    "JSCRIPTYSESSIONS": "Projekti Sessioonid",
+    "SESSIONS": "Sessioonid",
+    "STARTTIME": "Alguse Aeg",
+    "ENDTIME": "Lõpetamise Aeg",
+    "MEMBERNAME": "Liikme Nimi",
+    "CALLERIDNUM": "Helistaja Number",
+    "NO_SESSION_AVAILABLE": "Sessioonid pole saadaval",
+    "SESSION_RESULTS": "Sessiooni Tulemused",
+    "SHOW_QUESTIONS_SESSION": "Kuva Sessiooni Tulemusi",
+    "ANSWERS": "Vastused",
+    "NO_RESULTS_AVAILABLE": "Tulemused pole saadaval",
+    "TOTAL": "Kokku",
+    "ANSWER": "Vastus",
+    "EXPORT_TO_CSV": "Ekspordi CSVsse",
+    "NO_ANSWERS_AVAILABLE": "Vastused pole saadaval",
+    "DELETE_SESSION": "Kustuta Sessioon",
+    "RESET_SESSION": "Lähtesta Sessioon",
+    "YES": "Jah",
+    "NO": "Ei",
+    "DO_YOU_WANT_TO_RESET_SESSION": "Kas soovid sessiooni lähtestada?",
+    "ALL_SURVEY_DATA_WILL_BE_LOST": "Kõik uuringu vastused lähevad kaotsi!",
+    "ENABLEUNCOMPLETESAVE": "Luba pooleliolev salvestamine",
+    "SUBMIT": "Esita",
+    "PROJECT_NOT_AVAILABLE": "Projekt pole saadaval. Palun võta ühendust administraatoriga",
+    "COMPLETE": "Vii lõpule",
+    "SESSIONS_PROJECT": "Mine Sessioonidesse",
+    "SENDUNPAUSEONSUBMIT": "Saada Käivita esitamisel"
   },
   "mwForm": {
     "form": {
-      "name": "Title",
-      "name.placeholder": "Form title",
-      "description": "Description"
+      "name": "Pealkiri",
+      "name.placeholder": "Vormi pealkiri",
+      "description": "Kirjeldus"
     },
     "buttons": {
-      "addPage": "Add page",
-      "moveDown": "Move down",
-      "moveUp": "Move up",
-      "removePage": "Remove page",
-      "remove": "Remove",
-      "addElement": "Add element",
-      "questionReady": "Ready",
-      "next": "Next",
-      "back": "Back",
-      "submit": "Submit",
-      "begin": "Begin",
-      "fold": "Fold",
-      "unfold": "Unfold",
-      "edit": "Edit",
-      "clone": "Clone",
-      "view": "View"
+      "addPage": "Lisa lehekülg",
+      "moveDown": "Liigu alla",
+      "moveUp": "Liigu üles",
+      "removePage": "Eemalda lehekülg",
+      "remove": "Eemalda",
+      "addElement": "Lisa element",
+      "questionReady": "Valmis",
+      "next": "Järgmine",
+      "back": "Tagasi",
+      "submit": "Esita",
+      "begin": "Alusta",
+      "fold": "Voldi",
+      "unfold": "Voldi lahti",
+      "edit": "Redigeeri",
+      "clone": "Klooni",
+      "view": "Vaata"
     },
     "page": {
       "tab": {
-        "heading": "Page {{page}} of {{allPages}}"
+        "heading": "Lehekülg {{lehekülg}} {{kõikidest Lehekülgedest}}"
       },
       "elements": {
-        "empty": "Empty page"
+        "empty": "Tühi lehekülg"
       },
-      "pageWithNameCheckbox": "named",
-      "name": "Page name"
+      "pageWithNameCheckbox": "nimetatud",
+      "name": "Lehekülje nimi"
     },
     "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": "Pärast lehekülge {{lehekülg}}:",
+      "afterQuestionAnswer": "Mine vastusel põhinevale leheküljele",
+      "goToPage": "Mine leheküljele {{lehekülje number}}",
+      "goToNextPage": "Jätke järgmisel leheküljel",
+      "submitForm": "Esita vorm"
     },
     "elements": {
-      "question": "Question",
-      "image": "Image",
-      "paragraph": "Paragraph"
+      "question": "Küsimus",
+      "image": "Pilt",
+      "paragraph": "Lõik"
     },
     "question": {
       "types": {
         "text": {
-          "name": "Short text"
+          "name": "Lühike tekst"
         },
         "textarea": {
-          "name": "Long text"
+          "name": "Pikk tekst"
         },
         "radio": {
-          "name": "Radio"
+          "name": "Raadio"
         },
         "select": {
-          "name": "Select"
+          "name": "Vali"
         },
         "checkbox": {
-          "name": "Checkboxes"
+          "name": "Märkeruudud"
         },
         "grid": {
-          "name": "Grid"
+          "name": "Ruudustik"
         },
         "priority": {
-          "name": "Priority"
+          "name": "Prioriteet"
         },
         "division": {
-          "name": "Division"
+          "name": "Jaotus"
         },
         "number": {
           "name": "Number"
         },
         "date": {
-          "name": "Date"
+          "name": "Kuupäev"
         },
         "datetime": {
-          "name": "Datetime"
+          "name": "Kuupäev ja kellaaeg"
         },
         "time": {
-          "name": "Time"
+          "name": "Kellaaeg"
         },
         "email": {
-          "name": "Email"
+          "name": "E-post"
         },
         "range": {
-          "name": "Range"
+          "name": "Vahemik"
         },
         "url": {
           "name": "URL"
         }
       },
-      "text": "Question text",
-      "type": "Question type",
-      "required": "Required",
+      "text": "Küsimuse tekst",
+      "type": "Küsimuse tüüp",
+      "required": "Nõutud",
       "preview": {
-        "text": "Short answer text",
-        "textarea": "Long answer text",
-        "otherAnswer": "Other"
+        "text": "Lühivastuse tekst",
+        "textarea": "Pika vastuse tekst",
+        "otherAnswer": "Muu"
       },
       "division": {
-        "quantity": "Quantity",
-        "unit": "Unit label",
-        "assignedSumLabel": "Assigned",
-        "fromRequiredLabel": "from required"
+        "quantity": "Kogus",
+        "unit": "Ühiku sedel",
+        "assignedSumLabel": "Määratud",
+        "fromRequiredLabel": "alates nõutavast"
       },
       "priority": {
-        "sorted": "Sorted",
-        "available": "Available",
-        "clickToAddItem": "Click to add item"
+        "sorted": "Sorditud",
+        "available": "Saadaval",
+        "clickToAddItem": "Kliki üksuse lisamiseks"
       },
       "grid": {
-        "cellInputType": "Cell input type",
+        "cellInputType": "Lahtri sisendi tüüp",
         "cellInputTypes": {
-          "radio": "Radio",
-          "checkbox": "Checkbox",
-          "text": "Text",
+          "radio": "Raadio",
+          "checkbox": "Märkeruut",
+          "text": "Tekst",
           "number": "Number",
-          "date": "Date",
-          "time": "Time"
+          "date": "Kuupäev",
+          "time": "Kellaaeg"
         },
-        "rowLabel": "Row {{row}}",
-        "clickToAddRow": "Click to add row",
-        "columnLabel": "Column {{col}}",
-        "clickToAddColumn": "Click to add column"
+        "rowLabel": "Rida {{rida}}",
+        "clickToAddRow": "Kliki rea lisamiseks",
+        "columnLabel": "Veerg {{veerg}}",
+        "clickToAddColumn": "Kliki veeru lisamiseks"
       },
       "range": {
-        "from": "Range from",
-        "to": "to"
+        "from": "Vahemik alates",
+        "to": "kuni"
       },
       "number": {
         "min": "Min",
-        "max": "Max"
+        "max": "Maks"
       },
-      "orLabel": "or ",
-      "otherLabel": "Other: ",
-      "userAnswer": "User answer",
+      "orLabel": "või ",
+      "otherLabel": "Muu: ",
+      "userAnswer": "Kasutaja vastus",
       "buttons": {
-        "addOption": "Click to add option",
-        "addOther": "Add 'Other'"
+        "addOption": "Kliki valiku lisamiseks",
+        "addOther": "Lisa 'Muu'"
       }
     },
     "image": {
-      "selectImageButton": "Select image",
-      "caption": "Image caption"
+      "selectImageButton": "Vali pilt",
+      "caption": "Pildi pealdis"
     },
     "paragraph": {
-      "placeholder": "Enter paragraph text"
+      "placeholder": "Sisesta lõigu tekst"
     },
     "confirmationPage": {
-      "title": "Confirmation page",
-      "customMessage": "Custom confirmation message",
-      "defaultMessage": "Your response has been saved",
-      "errorMessage": "Error! Your response has not been saved",
-      "pendingMessage": "Your response is being saved"
+      "title": "Kinnituse lehekülg",
+      "customMessage": "Kohandatud kinnitussõnum",
+      "defaultMessage": "Sinu vastus on salvestatud",
+      "errorMessage": "Viga! Sinu vastust ei salvestatud",
+      "pendingMessage": "Sinu vastust salvestatakse"
     }
   }
 }
index 6a860d9..9c16790 100644 (file)
 {
   "MAIL": {
-    "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",
-    "ACCEPTED": "Accepted",
-    "CANNEDANSWERS": "Canned Answers",
-    "MAILCANNEDANSWERS": "Canned Answers",
-    "NO_MAILCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
-    "NEW_MAILCANNEDANSWER": "New Canned Answer",
-    "ADD_MAILCANNEDANSWER": "Add Canned Answer",
-    "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",
-    "ADD_NOTE": "Add note",
-    "NOTE": "Note",
-    "TAGS": "Tags",
-    "NO_AGENT_ONLINE": "No Agent Online",
-    "GOTOREALTIME_MAILQUEUE": "Go To Realtime Mail Queue",
-    "PARTIALPAUSE": "Parital Pause",
-    "BUSY": "Busy",
-    "TIMER": "Timer",
-    "IDLE": "Idle",
-    "CAPACITY": "Capacity",
-    "UNPAUSE": "End Pause",
-    "DEFAULT_PAUSE": "Default pause",
-    "LOGOUT": "Logout",
-    "AGENTADD_QUEUE": "Add agent to Email queue",
-    "VOICE": "Voice",
-    "CHAT": "Chat",
-    "SMS": "Sms",
-    "OPENCHANNEL": "Open channel",
-    "FAX": "Fax",
-    "REALTIME": "Realtime",
-    "AGENTS": "Agents",
-    "QUEUES": "Queues",
-    "ACCOUNTS": "Accounts",
-    "FULLNAME": "Full Name",
-    "INTERNAL": "Internal",
-    "PHONE_STATE": "Phone State",
-    "PHONE_STATUS": "Phone Status",
-    "PAUSE": "Pause",
-    "LOGGED_IN": "Logged In",
-    "PAUSED": "Paused",
-    "READY": "Ready",
-    "WAITING": "Waiting",
-    "TOTAL": "Total",
-    "IN": "In",
-    "OUT": "Out",
-    "IMAP_STATUS": "IMAP Status",
-    "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",
-    "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",
-    "CC": "Cc",
-    "REPLY": "Reply",
-    "REPLY_ALL": "Reply All",
-    "FORWARD": "Forward",
-    "SUBJECT": "Subject",
-    "BCC": "Bcc",
-    "SEND": "Send",
-    "ATTACHMENT": "Attachment",
-    "ATTACHMENTS": "Attachments",
-    "NAME": "Name",
-    "MAILQUEUES": "Email Queues",
-    "SEARCH_FOR_ANYONE": "Search",
-    "STRATEGY": "Strategy",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Laadi alla koos manustega",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadi aklla manusteta",
+    "DOWNLOAD": "Laadi alla",
+    "LOGIN_TIME": "Sisselogimise aeg",
+    "PAUSE_TIME": "Pausi aeg",
+    "DOWNLOAD_INTERACTION": "Laadi alla",
+    "YOU_ARE_REGISTERED_AS_A": "Oled registreeritud kui",
+    "TRANSFER": "Edastamine",
+    "QUEUETRANSFER": "Järjekorra Edastamine",
+    "QUEUETRANSFERTIMEOUT": "Järjekorra Edastamise Aegumine",
+    "AGENTTRANSFER": "Agendi Edastamine",
+    "AGENTTRANSFERTIMEOUT": "Agendi Edastamise Aegumine",
+    "TAG": "Silt",
+    "EDIT_TAG": "Redigeeri Silti",
+    "WAITFORTHEASSIGNEDAGENT": "Oota määratud agenti",
+    "NOTIFICATION": "Teatis",
+    "NOTIFICATIONSOUND": "Hääl",
+    "NOTIFICATIONSHAKE": "Raputus",
+    "NOTIFICATIONTEMPLATE": "Mall",
+    "SYSTEM": "Süsteem",
+    "EDIT_SYSTEM": "Redigeeri Süsteemi",
+    "COMMAND": "Käsk",
+    "VARIABLE": "Muutuja",
+    "SEND_AS": "Saada kui",
+    "NEW_MAILSUBSTATUS": "Uus Alamolek",
+    "ADD_MAILSUBSTATUS": "Lisa Alamolek",
+    "MAILSUBSTATUSES": "E-posti Alamolekud",
+    "EDIT_MAILSUBSTATUS": "Redigeeri",
+    "DELETE_MAILSUBSTATUS": "Kustuta",
+    "FONT_FAMILY": "Fondipere",
+    "FONT_SIZE": "Fondi Suurus",
+    "MARK_AS_UNREAD": "Märgi kui lugemata",
+    "ACCEPTED": "Aktsepteeritud",
+    "CANNEDANSWERS": "Salvestatud Vastused",
+    "MAILCANNEDANSWERS": "Salvestatud Vastused",
+    "NO_MAILCANNEDANSWER_AVAILABLE": "Salvestatud Vastused pole saadaval",
+    "NEW_MAILCANNEDANSWER": "Uus Salvestatud Vastus",
+    "ADD_MAILCANNEDANSWER": "Lisa Salvestatud Vastus",
+    "EDIT_MAILCANNEDANSWER": "Redigeeri Salvestatud Vastust",
+    "DELETE_MAILCANNEDANSWER": "Kustuta Salvestatud Vastus",
+    "SHOW_ORIGINAL_MESSAGE": "Kuva originaalsõnum",
+    "PENDING": "Ootel",
+    "SEND_AS_PENDING": "Saada Ootel olekus",
+    "SEND_AND_CLOSE": "Saada ja Sule",
+    "CANNED_ANSWER_NOT_FOUND": "Salvestatud Vastuseid ei leitud",
+    "CANNED_ANSWER_SEARCH": "Sisesta tekst Salvestatud Vastuse otsimiseks",
+    "SPYINTERACTION": "Spioon",
+    "ADD_NOTE": "Lisa märge",
+    "NOTE": "Märge",
+    "TAGS": "Sildid",
+    "NO_AGENT_ONLINE": "Ühtegi Agenti pole võrgus",
+    "GOTOREALTIME_MAILQUEUE": "Mine Reaalaja Meili Järjekorda",
+    "PARTIALPAUSE": "Osaline Paus",
+    "BUSY": "Hõivatud",
+    "TIMER": "Taimer",
+    "IDLE": "Jõude",
+    "CAPACITY": "Võimsus",
+    "UNPAUSE": "Lõpeta Paus",
+    "DEFAULT_PAUSE": "Vaikimisi paus",
+    "LOGOUT": "Logi välja",
+    "AGENTADD_QUEUE": "Lisa agent E-maili järjekorda",
+    "VOICE": "Hääl",
+    "CHAT": "Vestlus",
+    "SMS": "Sõnum",
+    "OPENCHANNEL": "Ava kanal",
+    "FAX": "Faks",
+    "REALTIME": "Reaalaeg",
+    "AGENTS": "Agendid",
+    "QUEUES": "Järjekorrad",
+    "ACCOUNTS": "Kontod",
+    "FULLNAME": "Täisnimi",
+    "INTERNAL": "Sisemine",
+    "PHONE_STATE": "Telefoni Olek",
+    "PHONE_STATUS": "Telefoni Staatus",
+    "PAUSE": "Paus",
+    "LOGGED_IN": "Sisse Logitud",
+    "PAUSED": "Pausil",
+    "READY": "Valmis",
+    "WAITING": "Ootel",
+    "TOTAL": "Kokku",
+    "IN": "Sees",
+    "OUT": "Väljas",
+    "IMAP_STATUS": "IMAP Staatus",
+    "SMTP_STATUS": "SMTP Staatus",
+    "DISABLED": "Mitteaktiivne",
+    "CONNECTED": "Ühendatud",
+    "NEVER_VERIFIED": "Pole kunagi Kinnitatud",
+    "ERROR": "Viga",
+    "EDIT_ACCOUNT": "Redigeeri Kontot",
+    "VERIFY_SMTP": "Kinnita SMTP",
+    "VERIFIED": "Kinnitatud",
+    "VERIFYSMTP_MAILACCOUNT": "Kinnita SMTP",
+    "GOTOREALTIME_MAILACCOUNT": "Mine Reaalaja E-maili Kontole",
+    "GOTO_MAILACCOUNT": "Mine Reaalaja E-maili Kontole",
+    "TEXT": "Tekst",
+    "TIMES": "Kordade arv suhtluse kohta",
+    "EDIT_AUTOREPLY": "Redigeeri Automaatvastus",
+    "AUTOREPLY": "Automaatvastus",
+    "SHOW_AUTOREPLY": "Kuva Automaatvastus",
+    "SHOW_DETAILS": "Kuva üksikasjad",
+    "HIDE_DETAILS": "Varja üksikasjad",
+    "TO": "Kellele",
+    "FROM": "Kellelt",
+    "DATE": "Kuupäev",
+    "CC": "Koopia",
+    "REPLY": "Vasta",
+    "REPLY_ALL": "Vasta Kõigile",
+    "FORWARD": "Saada edasi",
+    "SUBJECT": "Teema",
+    "BCC": "Salakoopia",
+    "SEND": "Saada",
+    "ATTACHMENT": "Manus",
+    "ATTACHMENTS": "Manused",
+    "NAME": "Nimi",
+    "MAILQUEUES": "E-maili Järjekorrad",
+    "SEARCH_FOR_ANYONE": "Otsi",
+    "STRATEGY": "Strateegia",
     "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",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "TAG_REQUIRED": "Kohustuslik Väli",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Kohustuslik Väli",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "NAME_MUST_VALID_PATTERN": "Vale formaat",
+      "COMMAND_REQUIRED": "Kohustuslik Väli",
+      "FONT_SIZE_REQUIRED": "Kohustuslik Väli",
+      "FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "TEXT_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab võrduma {{maks}}",
+      "VALUE_REQUIRED": "Kohustuslik Väli",
+      "TEXT_REQUIRED": "Kohustuslik Väli",
+      "NAME_REQUIRED": "Kohustuslik Väli",
+      "AGENT_TIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "EMAIL_ADDRESS_REQUIRED": "Kohustuslik Väli",
+      "EMAIL_ADDRESS_MUST_VALID": "Vale formaat",
+      "HOST_REQUIRED": "Kohustuslik Väli",
+      "USERNAME_REQUIRED": "Kohustuslik Väli",
+      "PORT_REQUIRED": "Kohustuslik Väli",
+      "CONNTIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "AUTHTIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "ACCEPTURL_MUST_VALID_URL": "Vale formaat",
+      "TIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "REJECTURL_MUST_VALID_URL": "Vale formaat",
+      "CLOSEURL_MUST_VALID_URL": "Vale formaat",
+      "AGENT_REQUIRED": "Kohustuslik Väli",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "DISPOSITION_REQUIRED": "Kohustuslik Väli",
+      "CONDITION_REQUIRED": "Kohustuslik Väli",
+      "TRUEPRIORITY_REQUIRED": "Kohustuslik Väli",
+      "FALSEPRIORITY_REQUIRED": "Kohustuslik Väli",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "PRIORITY_REQUIRED": "Kohustuslik Väli",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "QUEUE_REQUIRED": "Kohustuslik Väli",
+      "LIST_REQUIRED": "Kohustuslik Väli",
+      "PASSWORD_REQUIRED": "Kohustuslik Väli",
+      "SERVICE_REQUIRED": "Kohustuslik Väli",
+      "IMAP_HOST_REQUIRED": "Kohustuslik Väli",
+      "IMAP_PORT_REQUIRED": "Kohustuslik Väli",
+      "SMTP_HOST_REQUIRED": "Kohustuslik Väli",
+      "SMTP_PORT_REQUIRED": "Kohustuslik Väli",
+      "CONFIRM_NOT_MATCH": "Sisestatud parool ei ühti",
+      "KEY_MAX_LENGTH": "Võtme maksimaalne pikkus peab võrduma {{maks}}",
+      "KEY_REQUIRED": "Kohustuslik Väli",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Kohustuslik väli",
       "REPLY_TYPE_REQUIRED": "Kohustuslik väli",
       "FIELD_REQUIRED": "Kohustuslik väli"
     },
-    "AGENT_TIMEOUT": "Agent Timeout",
-    "DESCRIPTION": "Description",
-    "ADD_MAILQUEUE": "Add Email Queue",
-    "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": "Add Email Account",
-    "EDIT_MAILACCOUNT": "Edit Email Account",
-    "DELETE_MAILACCOUNT": "Delete Email Accounts",
-    "DISPOSITIONS": "Dispositions",
-    "WEBHOOKS": "WebHooks",
-    "ACTIONS": "Actions",
-    "OTHERS": "Others",
-    "LIST": "List",
-    "TEMPLATE": "Template",
-    "FIDELITY": "Fidelity",
-    "SERVICE": "Service",
-    "CREATED_AT": "Created At",
-    "ACCEPT": "Accept",
-    "ACCEPTMETHOD": "Accept Method",
-    "ACCEPTURL": "Accept URL",
-    "REJECT": "Reject",
-    "REJECTMETHOD": "Reject Method",
-    "REJECTURL": "Reject URL",
-    "CLOSE": "Close",
-    "CLOSEMETHOD": "Close Method",
-    "CLOSEURL": "Close URL",
-    "WHITELABEL": "White Label",
-    "SIGNATURE": "Signature",
+    "AGENT_TIMEOUT": "Agendi Aegumine",
+    "DESCRIPTION": "Kirjeldus",
+    "ADD_MAILQUEUE": "Lisa E-maili Järjekord",
+    "EDIT_MAILQUEUE": "Redigeeri E-maili Järjekorda",
+    "DELETE_MAILQUEUE": "Kustuta E-maili Järjekord",
+    "SETTINGS": "Sätted",
+    "GENERAL": "Üldine",
+    "SAVE": "Salvesta",
+    "MAILACCOUNTS": "E-maili Kontod",
+    "EMAIL_ADDRESS": "E-maili Aadress",
+    "ADD_MAILACCOUNT": "Lisa E-maili Konto",
+    "EDIT_MAILACCOUNT": "Redigeeri E-maili Konto",
+    "DELETE_MAILACCOUNT": "Kustuta E-maili Kontod",
+    "DISPOSITIONS": "Kasutused",
+    "WEBHOOKS": "Veebihaak",
+    "ACTIONS": "Tegevused",
+    "OTHERS": "Teised",
+    "LIST": "Loend",
+    "TEMPLATE": "Mall",
+    "FIDELITY": "Kvaliteet",
+    "SERVICE": "Teenus",
+    "CREATED_AT": "Loomisaeg",
+    "ACCEPT": "Aktsepteeri",
+    "ACCEPTMETHOD": "Aktsepteeri Meetud",
+    "ACCEPTURL": "Aktsepteeri URL",
+    "REJECT": "Hülga",
+    "REJECTMETHOD": "Hülga Meetod",
+    "REJECTURL": "Hülga URL",
+    "CLOSE": "Sule",
+    "CLOSEMETHOD": "Sule Meetod",
+    "CLOSEURL": "Sule URL",
+    "WHITELABEL": "Valge Sedel",
+    "SIGNATURE": "Allkiri",
     "IMAP": "IMAP",
     "HOST": "Host",
-    "USERNAME": "Username",
+    "USERNAME": "Kasutajanimi",
     "PORT": "Port",
-    "MAILBOX": "Mailbox",
-    "FILTER": "Filter",
-    "CONNTIMEOUT": "Connection Timeout [sec]",
-    "AUTHTIMEOUT": "Authentication Timeout [sec]",
-    "DELETE": "Delete Email From Server",
+    "MAILBOX": "Postkast",
+    "FILTER": "Filtreerimine",
+    "CONNTIMEOUT": "Ühenduse Aegumine [sec]",
+    "AUTHTIMEOUT": "Autentimise Aegumine [sec]",
+    "DELETE": "Kustuta E-mail Serverist",
     "SSL": "SSL",
     "KEEPALIVE": "Keepalive",
-    "POLLING": "Polling",
+    "POLLING": "Küsitlemine",
     "SMTP": "SMTP",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "BACK": "Back",
-    "MAIL": "Email",
-    "ID": "Id",
-    "TIMEOUT": "Timeout",
-    "PASSWORD": "Password",
-    "NO_MAILDISPOSITION_AVAILABLE": "No Email Dispositions available",
-    "ADD_MAILDISPOSITION": "Add Email Disposition",
-    "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",
+    "SELECTED": "Valitud",
+    "SELECT_ALL": "Vali Kõik",
+    "SELECT_NONE": "Ära Vali Ühtegi",
+    "BACK": "Tagasi",
+    "MAIL": "E-mail",
+    "ID": "ID",
+    "TIMEOUT": "Aegumine",
+    "PASSWORD": "Parool",
+    "NO_MAILDISPOSITION_AVAILABLE": "E-maili Kasutusi pole saadaval",
+    "ADD_MAILDISPOSITION": "Lisa E-maili Kasutus",
+    "NEW_MAILDISPOSITION": "Uus E-maili Kasutus",
+    "EDIT_MAILDISPOSITION": "Redigeeri E-maili Kasutust",
+    "DELETE_MAILDISPOSITION": "Kustuta E-maili Kasutus",
+    "MAILDISPOSITIONS": "E-maili Kasutused",
+    "NEW_MAILQUEUE": "Uus E-maili Järjekord",
+    "NEW_MAILACCOUNT": "Uus E-maili Konto",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "ALL_TEAMS": "Kõik Tiimid",
+    "SELECTED_TEAMS": "Valitud Tiimid",
     "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": "Kohustuslik käsutamine",
-      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
+      "FONT_FAMILY": "Vaikimisi Fondipere",
+      "FONT_SIZE": "Vaikimisi Fondi Suurus",
+      "NAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
+      "USERNAME": "Kasutajanimi autentimise jaoks",
+      "PASSWORD": "Parool autentimise jaoks",
+      "SECURE": "Kui tõene, kasutab ühendus TLSi serveriga ühendamisel",
+      "MARK_AS_UNREAD": "Luba/Keela agendil märkida suhtluse viimane lause kui lugemata",
+      "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
       "CLOUD_PROVIDER": "Autentimiseks kasutatakse pilvepakkujat"
     },
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "OF": "of",
-    "TEAMADD_MAILQUEUE": "Add Team to Email Queue",
-    "AGENTADD_MAILQUEUE": "Add Agent to Email Queue",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
+    "TEAMADD_MAILQUEUE": "Lisa Tiim E-maili Järjekorda",
+    "AGENTADD_MAILQUEUE": "Lisa Tiim E-maili Järjekorda",
+    "ALL_AGENTS": "Kõik Agendid",
+    "SELECTED_AGENTS": "Valitud Agendid",
     "AGENT": "Agent",
-    "EDIT_AGENT": "Edit Agent",
-    "EDIT_CLOSE": "Edit Close",
-    "DISPOSITION": "Disposition",
+    "EDIT_AGENT": "Redigeeri Agenti",
+    "EDIT_CLOSE": "Redigeeri Sulgemist",
+    "DISPOSITION": "Kasutamine",
     "GOTOIF": "GotoIf",
-    "EDIT_GOTOIF": "Edit GotoIf",
-    "CONDITION": "Condition",
-    "TRUEPRIORITY": "True Priority",
-    "FALSEPRIORITY": "False Priority",
+    "EDIT_GOTOIF": "Redigeeri GotoIf",
+    "CONDITION": "Tingimus",
+    "TRUEPRIORITY": "Tõene Prioriteet",
+    "FALSEPRIORITY": "Vale Prioriteet",
     "GOTOP": "GotoP",
-    "EDIT_GOTOP": "Edit GotoP",
-    "PRIORITY": "Priority",
+    "EDIT_GOTOP": "Redigeeri GotoP",
+    "PRIORITY": "Prioriteet",
     "NOOP": "Noop",
-    "EDIT_NOOP": "Edit Noop",
-    "VALUE": "Value",
-    "QUEUE": "Queue",
-    "EDIT_QUEUE": "Edit Queue",
-    "INTERACTIONS": "Interactions",
-    "STARTEDAT": "Started At",
-    "CONTACT": "Contact",
-    "CLOSEDAT": "Closed At",
-    "NOTES": "Notes",
-    "NO_INTERACTION_AVAILABLE": "No interactions available",
-    "ACTIVE": "Active",
-    "SECURE": "Secure",
-    "AUTHENTICATION": "Authentication",
+    "EDIT_NOOP": "Redigeeri Noop",
+    "VALUE": "Väärtus",
+    "QUEUE": "Järjekord",
+    "EDIT_QUEUE": "Redigeeri Järjekorda",
+    "INTERACTIONS": "Suhtlused",
+    "STARTEDAT": "Algusaeg",
+    "CONTACT": "Kontakt",
+    "CLOSEDAT": "Sulgemisaeg",
+    "NOTES": "Märkmed",
+    "NO_INTERACTION_AVAILABLE": "Suhtlused pole saadaval",
+    "ACTIVE": "Aktiivne",
+    "SECURE": "Turvaline",
+    "AUTHENTICATION": "Autentimine",
     "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",
-    "ACCOUNT": "Account",
-    "OPEN": "Open",
-    "KEY": "Key",
-    "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": "Add Agent to Email Account",
-    "ADVANCED": "Täpsemad",
-    "DOWNLOAD_WITHOUT_ATTACHMENT": "Laadige alla ilma manuseta",
-    "DOWNLOAD_WITH_ATTACHMENT": "Laadige alla koos manusega",
+    "CONFIRM_PASSWORD": "Kinnita Parool",
+    "SELECT_STATUS": "Vali Staatus",
+    "OPENED": "Avatud",
+    "CLOSED": "Suletud",
+    "ALL": "Kõik",
+    "SELECT_ACCOUNT": "Vali Konto",
+    "STATUS": "Staatus",
+    "ACCOUNT": "Konto",
+    "OPEN": "Ava",
+    "KEY": "Võti",
+    "SMTPSERVICE": "SMTP Teenus",
+    "UNKNOWN": "Teadmata",
+    "UNREGISTERED": "Registreerimata",
+    "UNAVAILABLE": "Pole saadaval",
+    "NOT_INUSE": "Pole kasutusel",
+    "REACHABLE": "Kättesaadav",
+    "IN_USE": "Kasutusel",
+    "AGENTSADD_QUEUE": "Lisa agendid E-maili Järjekorda",
+    "INFO": "Teave",
+    "INTERACTIONS_MAILACCOUNT": "Mine Suhtlustesse",
+    "REFRESH_INTERACTIONS": "Värskenda Suhtlusi",
+    "DELETE_INTERACTION": "Kustuta Suhtlus",
+    "AGENTADD_MAILACCOUNT": "Lisa Agent E-maili Järjekorda",
+    "ADVANCED": "Täpsem",
+    "DOWNLOAD_WITHOUT_ATTACHMENT": "Laadi alla ilma manuseta",
+    "DOWNLOAD_WITH_ATTACHMENT": "Laadi alla koos manusega",
     "LASTMESSAGE": "Viimane teade",
-    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
-    "TEAMS_ASSOCIATION": "Võistkondade liit",
+    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
+    "TEAMS_ASSOCIATION": "Tiimide liit",
     "TOOLTIP_SCREENRECORDING_OFF": "Ekraanisalvestus on saadaval",
     "TOOLTIP_SCREENRECORDING_ON": "Ekraanisalvestus pooleli",
-    "REPLY_TYPE": "Vasta tüüp",
+    "REPLY_TYPE": "Vastamise tüüp",
     "CLOUD_PROVIDER": "Pilvepakkuja",
     "CREDENTIALS": "Mandaat",
-    "CUSTOM": "Kohandatud",
-    "MODERN_AUTHENTICATION": "Kaasaegne autentimine"
+    "CUSTOM": "Kohandatud"
   }
 }
index e80fbe2..779913f 100644 (file)
@@ -1,51 +1,51 @@
 {
   "MARKETPLACE": {
-    "MARKETPLACE": "App Zone",
-    "PLUGINS": "Plugins",
-    "BACK": "Back",
-    "SEARCH_FOR_ANYONE": "Search",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select all",
-    "SELECT_NONE": "Select none",
-    "NAME": "Name",
-    "DESCRIPTION": "Description",
-    "ACTIVE": "Active",
-    "TYPE": "Type",
-    "ICON": "Icon",
-    "ADMINURL": "Admin url",
-    "AGENTURL": "Agent url",
-    "SCRIPTNAME": "Script name",
-    "SCRIPTPATH": "Script path",
-    "SIDEBAR": "Sidebar",
-    "VERSION": "Version",
-    "NO_AVAILABLE_INFO": "No available info",
-    "MORE": "More",
-    "INSTALL_PLUGIN": "Install plugin",
-    "EDIT_PLUGIN": "Edit plugin",
-    "STOP_PLUGIN": "Stop plugin",
-    "RESTART_PLUGIN": "Restart plugin",
-    "DOWNLOAD_PLUGIN": "Download plugin",
-    "UNINSTALL_PLUGIN": "Uninstall plugin",
-    "DELETE_PLUGIN": "Remove plugin",
-    "CANCEL": "Cancel",
-    "FINISH": "Finish",
-    "DELETE": "Delete",
-    "SAVE": "Save",
-    "INSTALLING": "Installing",
-    "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
-    "UPLOAD_PLUGIN": "Upload plugin",
-    "UPLOADING": "Uploading",
-    "CREATED_AT": "Created at",
-    "GENERAL": "General",
-    "SETTINGS": "Settings",
-    "EDITOR": "Editor",
+    "MARKETPLACE": "Rakenduse Tsoon",
+    "PLUGINS": "Lisandmoodulid",
+    "BACK": "Tagasi",
+    "SEARCH_FOR_ANYONE": "Otsi",
+    "SELECTED": "Valitud",
+    "SELECT_ALL": "Vali kõik",
+    "SELECT_NONE": "Ära vali midagi",
+    "NAME": "Nimi",
+    "DESCRIPTION": "Kirjeldus",
+    "ACTIVE": "Aktiivne",
+    "TYPE": "Tüüp",
+    "ICON": "Ikoon",
+    "ADMINURL": "Admini url",
+    "AGENTURL": "Agendi url",
+    "SCRIPTNAME": "Skripti nimi",
+    "SCRIPTPATH": "Skripti tee",
+    "SIDEBAR": "Küljeriba",
+    "VERSION": "Versioon",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "MORE": "Rohkem",
+    "INSTALL_PLUGIN": "Installi lisandmoodul",
+    "EDIT_PLUGIN": "Redigeeri lisandmoodulit",
+    "STOP_PLUGIN": "Peata lisandmoodul",
+    "RESTART_PLUGIN": "Taaskäivita lisandmoodul",
+    "DOWNLOAD_PLUGIN": "Laadi alla lisandmoodul",
+    "UNINSTALL_PLUGIN": "Desinstalli lisandmoodul",
+    "DELETE_PLUGIN": "Eemalda lisandmoodul",
+    "CANCEL": "Tühista",
+    "FINISH": "Lõpeta",
+    "DELETE": "Kustuta",
+    "SAVE": "Salvesta",
+    "INSTALLING": "Installimine",
+    "DROP_TO_UPLOAD": "Kukuta Üleslaadimiseks",
+    "DROP_TO_UPLOAD_MESSAGE": "Kukuta oma fail üleslaadimiseks. Ainult ZIP - Maks. 2MB",
+    "UPLOAD_PLUGIN": "Laadi üles lisandmoodul",
+    "UPLOADING": "Üleslaadimine",
+    "CREATED_AT": "Loomisaeg",
+    "GENERAL": "Üldine",
+    "SETTINGS": "Sätted",
+    "EDITOR": "Redaktor",
     "ERRORS": {
-      "URL_REQUIRED": "Mandatory field"
+      "URL_REQUIRED": "Kohustuslik väli"
     },
     "HELP": {},
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "OF": "of"
   }
 }
index 96861de..db6abd5 100644 (file)
 {
   "MOTIONDIALER": {
-    "LOGIN_TIME": "Login time",
-    "PAUSE_TIME": "Pause time",
-    "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",
-    "DIALORDERBYSCHEDULEDAT": "Order By scheduledat",
+    "LOGIN_TIME": "Sisselogimise aeg",
+    "PAUSE_TIME": "Pausi aeg",
+    "CUTDIGIT": "Lõika Numbrid",
+    "RANDOMLASTDIGITCALLERIDNUMBER": "Juhuslik Väljuva Helistaja ID Number",
+    "CLONE_IVRCAMPAIGN": "Klooni Kampaaniat",
+    "CLONE_QUEUECAMPAIGN": "Klooni Järjekorra Kampaaniat",
+    "ABANDONEDCALLS": "Tagasi lükatud Järjekorra Kõned",
+    "HOPPERWIDGET": "Kokkuvõte",
+    "RESETLIST_IVRCAMPAIGN": "Lähtesta Loendid",
+    "RESETLIST_QUEUECAMPAIGN": "Lähtesta Loendid",
+    "RESET": "Lähtesta",
+    "RESETLIST": "Lähtesta Loendid",
+    "SELECTALL": "Vali Kõik",
+    "UNSELECTALL": "Ära Vali Kõiki",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "TIMEOUT": "Aegumine",
+    "CALLYSQUAREPROJECTPREVIEW": "Cally Square Projekti Eelvaade",
+    "CALLYSQUAREPROJECTPREVIEW2": "Cally Square Projekt Pärast Eelvaadet",
+    "RUNIFHANGUPAGENT": "Käivita Square Projekt Pärast, isegi kui agent katkestab kõne",
+    "CALLYSQUAREPROJECT2": "Cally Square Projekt Pärast Järjekorda",
+    "NO_AGENT_ONLINE": "Ühtegi Agenti pole Võrgus",
+    "PARTIALPAUSE": "Osaline Paus",
+    "ALL": "Kõik",
+    "IDLE": "Jõude",
+    "TIMER": "Taimer",
+    "MOVE_HOPPERFINAL": "Taasta kontakt",
+    "RESTORECONTACTS": "Taasta Kontaktid",
+    "NO_SUCH_NUMBER": "Sellist numbrit pole olemas",
+    "DIALORDERBYSCHEDULEDAT": "Telli Planeeritud aja alusel",
     "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": "Kutsu tagasi Agent",
+    "DIALRECALLINQUEUE": "Kutsu tagasi Järjekorda",
+    "DIALRECALLMETIMEOUT": "Kutsu tagasi Minu Aegumine [min]",
+    "RECALLME": "Kutsu tagasi Mind",
+    "RECALLFAILEDTIMEOUT": "Tagasikutsumine Nurjus",
+    "PREVIEW_CAMPAIGN": "Kuva Kampaania Eelvaade",
+    "PREVIEW_CAMPAIGNS": "Kuva Kampaaniate Eelvaade",
+    "AMD": "Asterisk Automaatvastaja Tuvastamine (AMD)",
+    "AMDTOTALANALYSISTIME": "Analüüsi Aeg Kokku",
     "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": "Esialgne Vaikus",
+    "AMDGREETING": "Tervitus",
+    "AMDAFTERGREETINGSILENCE": "Vaikus pärast Tervitust",
+    "AMDSILENCETHRESHOLD": "Vaikuse Lävi",
+    "AMDMINWORDLENGTH": "Min Sõna Pikkus",
+    "AMDBETWEENWORDSSILENCE": "Vaikus Sõnade Vahel",
+    "AMDMAXIMUMWORDLENGTH": "Maksimaalne Sõna Pikkus",
+    "AMDMAXIMUMNUMBEROFWORDS": "Maksimaalne Sõnade Arv",
+    "GOTO_QUEUECAMPAIGN": "Mine Reaalaja Järjekorra Kampaaniatesse",
+    "GOTOREALTIME_QUEUECAMPAIGN": "Mine Reaalaja Järjekorra Kampaaniatesse",
+    "GOTO_IVRCAMPAIGN": "Mine Reaalaja IVR Kampaaniatesse",
+    "GOTOREALTIME_IVRCAMPAIGN": "Mine Reaalaja IVR Kampaaniatesse",
+    "LOGOUT": "Logi välja",
+    "EDIT_CAMPAIGN": "Redigeeri Kampaaniat",
+    "LIMITED": "Piiratud",
+    "IVR_CAMPAIGNS": "IVR Kampaaniad",
     "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",
-    "NO_HOPPERBLACK_AVAILABLE": "No items available",
-    "HOPPERFINALS": "Hopper Final",
-    "NO_HOPPERFINAL_AVAILABLE": "No items available",
-    "HOPPERHISTORIES": "Call history",
-    "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",
+    "QUEUECAMPAIGNS": "Järjekorra Kampaaniad",
+    "IVRCAMPAIGNS": "IVR Kampaaniad",
+    "MANAGED": "Hallatud",
+    "AVAILABLE_CONTACTS_FINISHED": "Vabad kontaktid lõpetatud",
+    "HISTORY": "Ajalugu",
+    "SCHEDULEDAT": "Planeeritud ajaks",
+    "HOPPERBLACKS": "Hopperi Must nimekiri",
+    "NO_HOPPERBLACK_AVAILABLE": "Üksused pole saadaval",
+    "HOPPERFINALS": "Hopperi Finaal",
+    "NO_HOPPERFINAL_AVAILABLE": "Üksused pole saadaval",
+    "HOPPERHISTORIES": "Kõneajalugu",
+    "NO_HOPPERHISTORY_AVAILABLE": "Üksused pole saadaval",
+    "DELETE_HOPPERHISTORY": "Kustuta",
+    "DELETE_HOPPERFINAL": "Kustuta",
+    "CONTACTID": "Kontakti ID",
+    "STARTTIME": "Algusaeg",
+    "RESPONSETIME": "Vastamise Aeg",
+    "ENDTIME": "Lõpetamise Aeg",
+    "STATUS": "Staatus",
     "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",
+    "NO_HOPPER_AVAILABLE": "Üksused pole saadaval",
+    "EDIT_HOPPER": "Redigeeri Hopper",
+    "DELETE_HOPPER": "Kustuta Hopper",
+    "FINAL": "Finaal",
+    "BLACKLIST": "Must nimekiri",
+    "NAME": "Nimi",
+    "VOICEQUEUES": "Hääle Järjekorrad",
+    "SEARCH_FOR_ANYONE": "Otsi",
+    "BACK": "Tagasi",
+    "SELECTED": "Valitud",
+    "SELECT_ALL": "Vali Kõik",
+    "SELECT_NONE": "Ära Vali Ühtegi",
+    "DELETE_VOICEDISPOSITION": "Kustuta Hääle Kasutus",
+    "EDIT_VOICEDISPOSITION": "Redigeeri Hääle Kasutust",
+    "EDIT_VOICEQUEUE": "Redigeeri Hääle Järjekorda",
+    "DELETE_VOICEQUEUE": "Kustuta Hääle Järjekord",
     "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",
-    "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]",
-    "QUEUE_PARAMS": "Queue Parameters",
-    "ORIGINATED": "Originated",
-    "MESSAGE": "Message",
-    "DROPPED": "Dropped",
-    "CREATED_AT": "Created At",
+    "STRATEGY": "Strateegia",
+    "DESCRIPTION": "Kirjeldus",
+    "INTERVAL": "Aja Intervall",
+    "ADD_VOICEQUEUE": "Lisa Hääle Järjekord",
+    "NEW_QUEUECAMPAIGN": "UUs Järjekorra Kampaania",
+    "ACTIVE": "Aktiivne",
+    "METHOD": "Meetod",
+    "POWERLEVEL": "Võimsuse Tase",
+    "DROPRATE": "Kukuta Määr",
+    "AGENTBUSYFACTOR": "Agendi Hõivatuse Faktor",
+    "PREDICTIVEOPTIMIZATION": "Ennustatav Optimeerimine",
+    "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Ennustatava Optimeerimise Protsent",
+    "PREDICTIVEINTERVAL": "Ennustatav Intervall",
+    "ADD_QUEUECAMPAIGN": "Lisa Järjekorra Kampaania",
+    "CAMPAIGN": "Kampaania",
+    "MAXCONCURRENTCALLS": "Maks Samaaegsed Kõned",
+    "CONCURRENTCALLS": "Maks Samaaegsed Kõned",
+    "ORIGINATE": "Päritolu",
+    "ORIGINATECALLERIDNAME": "Helistaja ID Number",
+    "ORIGINATECALLERIDNUMBER": "Helistaja ID Number",
+    "ORIGINATETIMEOUT": "Päritolu Aegumine",
+    "QUEUEOPTIONS": "Järjekorra Valikud",
+    "QUEUETIMEOUT": "Järjekorra Aegumine",
+    "CALLYSQUAREPROJECT": "Cally Square Projekt",
+    "RETRYANDFREQUENCY": "Katseta uuesti Sätteid",
+    "GLOBAL": "Üldine",
+    "GLOBALMAXRETRY": "Maks Uusi Katseid",
+    "CONGESTION": "Ummik",
+    "CONGESTIONMAXRETRY": "Maks Uusi Katseid",
+    "CONGESTIONRETRYTIME": "Uue Katse Aeg [min]",
+    "BUSYMAXRETRY": "Maks Uusi Katseid",
+    "BUSYRETRYTIME": "Uue Katse Aeg [min]",
+    "NOANSWER": "Vastus puudub",
+    "NOANSWERMAXRETRY": "Maks Uusi Katseid",
+    "NOANSWERRETRYTIME": "Uue Katse Aeg [min]",
+    "QUEUE_PARAMS": "Järjekorra Parameetrid",
+    "ORIGINATED": "Päritolu",
+    "MESSAGE": "Sõnum",
+    "DROPPED": "Kukutatud",
+    "CREATED_AT": "Loomisaeg",
     "LEGEND": {
-      "CUSTOM_APPLICATION": "(*) - Custom application."
+      "CUSTOM_APPLICATION": "(*) - Kohandatud Avaldus."
     },
     "ERRORS": {
-      "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",
-      "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",
-      "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",
-      "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "CUTDIGIT_REQUIRED": "Kohustuslik väli",
+      "CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED": "Kohustuslik väli",
+      "RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "AGENTTIMEOUT_REQUIRED": "Kohustuslik väli",
+      "INTERVAL_REQUIRED": "Kohustuslik väli",
+      "EMAIL_REQUIRED": "Kohustuslik väli",
+      "DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "DIALRECALLMETIMEOUT_REQUIRED": "Kohustuslik väli",
+      "NAME_MUST_VALID_PATTERN": "Vale formaat",
+      "PREFIX_MUST_VALID_PATTERN": "Vale formaat",
+      "NAME_REQUIRED": "Kohustuslik väli",
+      "TIMEOUT_REQUIRED": "Kohustuslik väli",
+      "PHONENUMBER_REQUIRED": "Kohustuslik väli",
+      "CONTEXT_REQUIRED": "Kohustuslik väli",
+      "DESTINATIONPATTERN_REQUIRED": "Kohustuslik väli",
+      "FULLNAME_REQUIRED": "Kohustuslik väli",
+      "EMAIL_REQUUIRED": "Kohustuslik väli",
+      "EMAIL_MUST_VALID": "Vale formaat",
+      "MAILBOX_REQUIRED": "Kohustuslik väli",
+      "PASSWORD_REQUIRED": "Kohustuslik väli",
+      "CONFIRM_NOT_MATCH": "Parool ei ühti",
+      "TIMEZONE_REQUIRED": "Kohustuslik väli",
+      "PREFIX_REQUIRED": "Kohustuslik väli",
+      "OPTIONS_REQUIRED": "Kohustuslik väli",
+      "AFTERCALLWORKDURATION_REQUIRED": "Kohustuslik väli",
+      "TECHNOLOGY/RESOURCE_REQUIRED": "Kohustuslik väli",
+      "PHONE_REQUIRED": "Kohustuslik väli",
+      "VALUE_REQUIRED": "Kohustuslik väli",
+      "EXTENSION_REQUIRED": "Kohustuslik väli",
+      "PRIORITY_REQUIRED": "Kohustuslik väli",
+      "GLOBALMAXRETRY_REQUIRED": "Kohustuslik väli",
+      "CONGESTIONMAXRETRY_REQUIRED": "Kohustuslik väli",
+      "CONGESTIONRETRYTIME_REQUIRED": "Kohustuslik väli",
+      "BUSYMAXRETRY_REQUIRED": "Kohustuslik väli",
+      "BUSYRETRYTIME_REQUIRED": "Kohustuslik väli",
+      "NOANSWERMAXRETRY_REQUIRED": "Kohustuslik väli",
+      "NOANSWERRETRYTIME_REQUIRED": "Kohustuslik väli",
+      "QUEUETIMEOUT_REQUIRED": "Kohustuslik väli",
+      "ORIGINATETIMEOUT_REQUIRED": "Kohustuslik väli",
+      "GLOBALINTERVAL_REQUIRED": "Kohustuslik väli",
+      "MAXCONCURRENTCALLS_REQUIRED": "Kohustuslik väli",
+      "CONCURRENTCALLS_REQUIRED": "Kohustuslik väli",
+      "POWERLEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "PREDICTIVEINTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "POWERLEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "PREDICTIVEINTERVAL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
       "AGENT_REQUIRED": "Kohustuslik väli",
       "CALLYSQUAREPROJECT_REQUIRED": "Kohustuslik väli",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Kohustuslik väli",
       "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
       "NOSUCHNUMBERMAXRETRY_REQUIRED": "Kohustuslik väli",
       "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "NOSUCHNUMBERRETRYTIME_REQUIRED": "Kohustuslik väli",
-      "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Helista lisa.telefon pärast min. peaks olema suurem või võrdne",
-      "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Kohustuslik väli"
+      "NOSUCHNUMBERRETRYTIME_REQUIRED": "Kohustuslik väli"
     },
-    "GENERAL": "General",
-    "AGENTTIMEOUT": "Agent Timeout",
-    "MAXLENGTH": "Maximum Length",
-    "RETRY": "Retry",
-    "WRAPUPTIME": "Wrapup Time",
-    "WEIGHT": "Weight",
-    "JOINWHENEMPTY": "Join when empty",
-    "LEAVEWHENEMPTY": "Leave when empty",
+    "GENERAL": "Üldine",
+    "AGENTTIMEOUT": "Agendi Aegumine",
+    "MAXLENGTH": "Maksimaalne Pikkus",
+    "RETRY": "Uus Katse",
+    "WRAPUPTIME": "Lõpetamise Aeg",
+    "WEIGHT": "Kaal",
+    "JOINWHENEMPTY": "Ühine, kui on tühi",
+    "LEAVEWHENEMPTY": "Lahku, kui on tühi",
     "HELP": {
-      "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",
-      "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",
-      "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",
+      "RANDOMLASTDIGITCALLERIDNUMBER": "Kui on suurem kui 0, genereerib see juhuslikult Väljuva Helistaja ID numbri vastavad viimased numbrimärgid",
+      "TIMEOUT": "Sekundite arv agendile järjekorras helistamiseks",
+      "CALLYSQUAREPROJECTPREVIEW": "Valides IVR projekti suunab helistaja kõne IVRi, kui agent vastab (IVR suunatakse agendile)",
+      "CALLYSQUAREPROJECTPREVIEW2": "Valides IVR projekti suunab helistaja kõne IVRi, kui klient katkestab kõne või pole kättesaadav (IVR suunatakse agendile)",
+      "RUNIFHANGUPAGENT": "Käivita Cally Square Projekt Pärast, isegi kui Agent katkestab kõne",
+      "CALLYSQUAREPROJECT2": "Valides IVR projekti suunab helistaja kõne IVRi pärast Järjekorda (kui Järjekord lõppeb aegumisega)",
+      "DIALORDERBYSCHEDULEDAT": "Hangi kontaktid hopperist (kasvav või kahanev).",
+      "DIALRECALLINQUEUE": "Ajasta kõne uuesti agentide jaoks Järjekorras",
+      "DIALRECALLMETIMEOUT": "Ajaintervall (minutites) Minu kehtivuse perioodi Tagasi kutsumiseks",
+      "PRIORITY": "Prioriteet loendis",
+      "AMDMAXIMUMWORDLENGTH": "Ühe häälütluse maksimaalne lubatud kestus",
+      "AMDMINWORDLENGTH": "Minimaalne Hääle kestus, mida arvestatakse sõnana",
+      "AMDSILENCETHRESHOLD": "Kui keskmine müratase näidises ei saavuta seda väärtust, skaalal 0 kuni 32767, siis loeme seda vaikuseks",
+      "AMDTOTALANALYSISTIME": "Maksimaalne algoritmile lubatud aeg otsustamaks, kas heli kuulub INIMESELE või MASINALE",
+      "AMDAFTERGREETINGSILENCE": "Vaikus pärast tervituse tuvastamist. Kui on ületatud, siis tulemuseks on INIMESE tuvastamine",
+      "AMDGREETING": "Maksimaalne tervituse pikkus.  Kui on ületatud, siis tulemuseks on MASINA tuvastamine",
+      "AMDINITIALSILENCE": "Makimaalne vaikuse kestus enne tervitust. Kui on ületatud, siis tulemuseks on MASINA tuvastamine",
+      "AMDACTIVE": "Aktiveeri või desaktiveeri automaatvastaja tuvastuskatsed",
+      "AMDBETWEENWORDSSILENCE": "Minimaalne vaikuse kestus  pärast sõna, et hinnata heli, mis järgneb uue sõnana",
+      "AMDMAXIMUMNUMBEROFWORDS": "Maksimaalne sõnade arv tervituses. Kui on SAAVUTATUD, siis tuvastatakse kui MASIN",
+      "CALLYSQUAREPROJECT": "Valides IVR projekti suunab helistaja kõne IVRi enne Järjekorda",
+      "PREFIX": "Telefoni eesliide",
+      "ACTIVE": "Aktiivne",
+      "AGENTTIMEOUT": "Kui kaua (sekundites), et helistada agendi seadmele",
+      "MAXLENGTH": "Maksimaalne helistajate arv, kes on Järjekorras ootele lubatud(0=piiramatu)",
+      "RETRY": "Kui kaua (sekundites) oodata enne helistamist järgmisele agendile Järjekorras, kui agendi ajalõpp on läbi saanud",
+      "WRAPUPTIME": "Kui kaua (sekundites) hoida agenti hõivatuna Järjekorras pärast kõne lõpetamist",
+      "WEIGHT": "Kasutatakse prioriteedi määramiseks, kui agent on seotud enam kui ühe järjekorraga",
+      "JOINWHENEMPTY": "Kui helistaja lisatakse järjekorda, kui ühtegi agenti pole saadaval",
+      "LEAVEWHENEMPTY": "Kui helistaja eemaldatakse järjekorrast, kui ühtegi agenti pole saadaval",
+      "ANNOUNCEFREQUENCY": "Kui sageli teatada helistaja positsiooni ja/või ooteaega järjekorras (0=keela)",
+      "MINANNOUNCEFREQUENCY": "Minimaalne teavituse sagedus (sobib, kui helistaja positsioon muutub sageli)",
+      "PERIODICANNOUNCEFREQUENCY": "Perioodiliste helistajale edastatavate teavituste sagedus",
+      "ANNOUNCEPOSITIONLIMIT": "Kasutatakse, kui oled määranud teavituspositsiooniks 'limiit' või 'rohkem'",
+      "AFTERCALLWORKDURATION": "Pausi pikkus, mille käivitab Pärast Kõnet Töö Suvand ",
+      "MEMBERDELAY": "Sisestab viivituse enne helistaja ja agendi ühendamist Järjekorras",
+      "MUSICONHOLD": "Määrab muusika klassi konkreetses järjekorras kasutamiseks",
+      "ANNOUNCETOAGENT": "Mängib ette teatise kõnele vastavale agendile (näiteks, et teda teavitada, millisest Järjekorrast helistaja tuleb)",
+      "RANDOMPERIODICANNOUNCE": "Kui jah, siis mängib ette perioodilised teatised juhuslikus järjekorras",
+      "ANNOUNCEHOLDTIME": "Mängib ette hinnangulise ooteaja koos perioodiliste teatistega (Jah/Ei/Üks kord)",
+      "ANNOUNCECALLERPOSITION": "Kasutatakse määramaks, kas tuleb teatada helistaja Järjekorra positsioonist: Ei=mitte kungi; Jah=alati; Piirang=ainult siis, kui see jääb teate-positsiooni-piirangu poolt määratud piirangu raamesse",
+      "REPORTHOLDTIMEAGENT": "Lubab helistaja ooteaja teatamist agendile Järjekorras enne ühendamist",
+      "PERIODICANNOUNCE": "Ette mängitavate perioodiliste teavituste komplekt (järjestatud)",
+      "HOLDTIMEANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi ooteaeg. Määramata=teavitust pole",
+      "YOUARENEXTANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=\9cOlete nüüd järjekorras esimene. Määramata=teavitust pole",
+      "THEREAREANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=areā€¯. Määramata=teavitust pole",
+      "WAITINGCALLSANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=kõnede ootamine. Määramata=teavitust pole",
+      "ESTIMATEDHOLDTIMEANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=Jooksev hinnanguline ooteaeg on. Määramata=teavitust pole",
+      "MINUTESANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=minutit. Määramata=teavitust pole",
+      "MINUTEANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=minutit. Määramata=teavitust pole",
+      "SECONDSANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=sekundit. Määramata=teavitust pole",
+      "THANKYOUANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=Täname Teid kannatlikkuse eest. Määramata=teavitust pole",
+      "AFTERCALLWORK": "Kui lubatud, pannakse agent pausile pärast kõne lõpetamist",
+      "AUTOPAUSE": "Lubab/keelab automaatse pausi agentidele, kellel ei õnnestu kõnele vastata. Kui lubatud, põhjustab agendi pausile panemist kõikides järjekordades, kuhu ta kuulub",
+      "RINGINUSE": "Kasutusel staatusega liikmetele kõnede saatmise vältimiseks/lubamiseks",
+      "TIMEOUTRESTART": "Kui jah, lähtestab see agendi jaoks vastamise lõpuaja, kui HÕIVATUD või UMMIKUS staatus saadakse kanalist",
+      "MONITORFORMAT": "Täpsustab faili formaadi salvestamisel kasutamiseks. Kui monitori formaat pole aktiivne, kõnesid ei salvestata",
+      "CONTEXT": "Lubab helistajal järjekorrast lahkuda vajutades üks kord DTMF numbrumärki. Kui kontekst on täpsustatud ja helistaja sisestab numbri, püüab see numbrimärk sobituda täpsustatud konteksti, ja valimisplaani täitmine jätkub seal",
+      "SETINTERFACEVARIABLES": "Kui on seadistatud jah peale, seadistatakse mõned muutujad just enne helistaja ühendamist Järjekorra agendiga (täpsema info saamiseks vaata wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
+      "SETQUEUEVARIABLES": "Kui on seadistatud jah peale, seadistatakse mõned muutujad just enne helistaja ühendamist Järjekorra agendiga ja järjekorrast lahkumist  (täpsema info saamiseks vaata wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
+      "SETQUEUEENTRYVARIABLES": "Kui on seadistatud jah peale, seadistatakse mõned muutujad just enne helistaja ühendamist Järjekorra agendiga (täpsema info saamiseks vaata wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
+      "RECORDING": "Luba kõne salvestamine",
+      "VOICEMAIL_CONTEXT": "Suhtelise laienduse kontekst",
+      "METHOD": "Väljuva valija meetod",
+      "POWERLEVEL": "Kontaktide arv helistamiseks mistahes vaba agendi jaoks",
+      "PREDICTIVEOPTIMIZATION": "Tegur optimeerimiseks ennustavas algoritmis",
+      "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Protsendimäär, mis põhineb valitud ennustaval optimeerimise teguril",
+      "PREDICTIVEINTERVAL": "Aja intervall (minutites), mida ennustav algoritm kasutab arvutamakkõnede kogust tulemuse genereerimiseks ja optimeerimiseks",
+      "MAXCONCURRENTCALLS": "Maksimaalne samaaegsete kõnede arv, mis lähtuvad väljuvalt valijalt selle Kampaania jaoks (0=piiramatu)",
+      "CONCURRENTCALLS": "Maksimaalne samaaegsete kõnede arv, mis lähtuvad väljuvalt valijalt selle Kampaania jaoks ",
+      "ORIGINATECALLERIDNAME": "Väljuva Helistaja ID Nimi",
+      "ORIGINATECALLERIDNUMBER": "Väljuva Helistaja ID Nimi",
+      "ORIGINATETIMEOUT": "Aeg (sekundites) väljuva kõne jaoks ühenduse saamiseks, vastasel juhul määratakse staatuseks Vastamata",
+      "QUEUETIMEOUT": "Aeg (sekundites), mille jooksul kõne ootab järjekorras enne katkestamist (Min 1 and Maks 999)",
+      "GLOBALMAXRETRY": "Maksimaalne kontaktile helistamise kordade arv enne kui see loetakse suletuks",
+      "CONGESTIONMAXRETRY": "Maksimaalne kontaktile helistamise kordade arv enne kui see loetakse suletuks, kui kõne nurjus ummiku tõttu",
+      "CONGESTIONRETRYTIME": "Aeg minutites enne katset helistada uuesti ummiku tõttu nurjunud kontaktile",
+      "BUSYMAXRETRY": "Maksimaalne kontaktile helistamise kordade arv enne kui see loetakse suletuks, kui kõne nurjus hõivatuse tõttu",
+      "BUSYRETRYTIME": "Aeg minutites enne katset helistada uuesti hõivatuse tõttu nurjunud kontaktile",
+      "NOANSWERMAXRETRY": "Maksimaalne kontaktile helistamise kordade arv enne kui see loetakse suletuks, kui kõne nurjus vastamata kõne tõttu",
+      "NOANSWERRETRYTIME": "Aeg minutites enne katset helistada uuesti vastamata kõne tõttu nurjunud kontaktile",
+      "GLOBALINTERVAL": "Üldine aja intervall, mille jooksul on valijal lubatud kontaktidele helistada. Me keeldume vastutusest: ole selle faili muutmisel tähelepanelik, kuna võid sattuda vastuollu automaatvalijaga seotud valdkonna riiklike seaduste ja määrustega",
+      "NAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
       "MANDATORYDISPOSITIONPAUSEID": "Peata olek, et seadistada kohustusliku dispositsiooni ajal",
       "PREDICTIVEMAXTHRESHOLD": "Kui ajaaknas saadaolevate agensite protsent ületab ennustamise ajal saadaolevate agendite protsent konfigureeritud maksimaalset piiri, arvutab ennustaja ennustuse uuesti.",
       "PREDICTIVEMINTHRESHOLD": "Kui ajaaknas saadaolevate esindajate protsent ületab ennustamise ajal saadaolevate agendite protsenti konfigureeritud miinimumpiirist, arvutab ennustaja ennustuse uuesti.",
-      "ABANDONEDMAXRETRY": "Maksimaalne kordade arv, mil kontaktile helistatakse enne selle lõpetatuks lugemist, kui kõne ei õnnestunud loobuda",
-      "ABANDONEDRETRYTIME": "Aeg minutites, enne kui proovite uuesti helistada ebaõnnestunud kontaktile loobumise tõttu",
+      "ABANDONEDMAXRETRY": "Maksimaalne kordade arv, mil kontaktile helistatakse enne selle lõpetatuks lugemist, kui kƵne ei Ćµnnestunud loobuda",
+      "ABANDONEDRETRYTIME": "Aeg minutites, enne kui proovite uuesti helistada ebaƵnnestunud kontaktile loobumise tõttu",
       "AGENTREJECTMAXRETRY": "Maksimaalne kordade arv kontaktile enne sulgemise pidamist, kui kõne nurjus agendi tagasilükkamise korral",
       "AGENTREJECTRETRYTIME": "Aeg minutites, enne kui proovite uuesti helistada ebaõnnestunud kontaktile agendi tagasilükkamise tõttu",
       "DROPMAXRETRY": "Maksimaalne kordade arv, mil kontaktile helistatakse enne selle lõpetatuks lugemist, kui kõne katkestamine ebaõnnestus",
-      "DROPRETRYTIME": "Aeg minutites, enne kui proovite uuesti helistada nurjumise tõttu ebaõnnestunud kontaktile",
+      "DROPRETRYTIME": "Aeg minutites, enne kui proovite uuesti helistada nurjumise tõttu ebaõµnnestunud kontaktile",
       "MACHINEMAXRETRY": "Maksimaalne kordade arv kontaktile enne sulgemise pidamist, kui kõne masinale nurjus",
       "MACHINERETRYTIME": "Aeg minutites, enne kui proovite uuesti helistada nurjunud kontaktile masina tõttu",
       "NOSUCHNUMBERMAXRETRY": "Maksimaalne kordade arv, millal kontaktile helistati enne selle lõpetatuks lugemist, kui kõne nurjus sellise numbri puudumisel",
       "PREVIEW_RECALL_ME_REMINDER": "Kui see on lubatud, saadab süsteem agentile n minutit teatise (vastavalt üldseadetes määratud ajaintervallile) enne minu tagasikutsumise loomist",
       "TIMEZONE": "Määrake ajavöönd"
     },
-    "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": "Muusika Ootel",
+    "ANNOUNCETOAGENT": "Teavitus Agendile",
+    "ANNOUNCEMENTS": "Teavitused",
+    "ADVANCEDPREVIEW": "Täpsem",
+    "ADVANCED": "Täpsem",
+    "ADVANCE": "Täpsem",
+    "ANNOUNCEFREQUENCY": "Teavituse Sagedus",
+    "MINANNOUNCEFREQUENCY": "Minimaalne Teavituse Sagedus",
+    "PERIODICANNOUNCEFREQUENCY": "Perioodiline Teavituse Sadegdus",
+    "RANDOMPERIODICANNOUNCE": "Juhuslik Perioodiline Teavitus",
+    "ANNOUNCEHOLDTIME": "Teavituse Ooteaeg",
+    "ANNOUNCECALLERPOSITION": "Teavituse Helistaja Positsioon",
+    "ANNOUNCEPOSITIONLIMIT": "Teavita Positsiooni Limiit",
+    "REPORTHOLDTIMEAGENT": "Teata Agendi Ooteaeg",
+    "PERIODICANNOUNCE": "Perioodiline Teavitus",
+    "HOLDTIMEANNOUNCE": "Ooteaja Teavitus",
+    "YOUARENEXTANNOUNCE": "'Oled järgmine' Teavitus",
+    "THEREAREANNOUNCE": "'There are' Teavitus",
+    "WAITINGCALLSANNOUNCE": "Ootel Kõnede Teavitus",
+    "ESTIMATEDHOLDTIMEANNOUNCE": "Hinnangulise Ooteaja Teavitus",
+    "MINUTESANNOUNCE": "Minutite Teavitus",
+    "MINUTEANNOUNCE": "Minutite Teavitus",
+    "SECONDSANNOUNCE": "Sekundite Teavitus",
+    "THANKYOUANNOUNCE": "'Täname Teid' Teavitus",
+    "AUTOPAUSE": "Automaatne Paus",
+    "AFTERCALLWORK": "Kõnejärgne Töö",
+    "AFTERCALLWORKDURATION": "Kõnejärgse Töö Kestus",
+    "RINGINUSE": "Kasutusel Helin",
+    "MEMBERDELAY": "Liikme Viivitus",
+    "TIMEOUTRESTART": "Lõpuaja Lähtestamine",
+    "MONITORFORMAT": "Salvestuse Formaat",
+    "SETINTERFACEVARIABLES": "Seadista Liidese Muutujaid",
+    "SETQUEUEVARIABLES": "Seadista Järjekorra Muutujad",
+    "SETQUEUEENTRYVARIABLES": "Seadista Järjekorra Kirje Muutujad",
+    "CONTEXT": "Kontekst",
+    "SAVE": "Salvesta",
+    "SETTINGS": "Sätted",
+    "INBOUNDROUTES": "Sisenevad Protsessid",
+    "PHONENUMBER": "Telefoninumber",
+    "ADD_INBOUNDROUTE": "Lisa Sisenev Protsess",
+    "EDIT_INBOUNDROUTE": "Redigeeri Sisenevat Protsessi",
+    "DELETE_INBOUNDROUTE": "Kustuta Sisenev Protsess",
+    "ACTIONS": "Tegevused",
+    "OUTBOUNDROUTES": "Väljuvad Protsessid",
+    "DESTINATIONPATTERN": "Sihtkoha Muster",
+    "ADD_OUTBOUNDROUTE": "Lisa Väljuv Protsess",
+    "EDIT_OUTBOUNDROUTE": "Redigeeri Väljuvat Protsessi",
+    "DELETE_OUTBOUNDROUTE": "Kustuta Väljuv Protsess",
+    "CUTDIGITS": "Lõika Numbrimärke",
+    "RECORDING": "Salvestamine",
+    "RECORDINGFORMAT": "Salvestamise formaat",
+    "INTERNALROUTES": "Sisemised Protsessid",
+    "ADD_INTERNALROUTE": "Lisa Sisemine Protsess",
+    "EDIT_INTERNALROUTE": "Redigeeri Sisemist Protsessi",
+    "DELETE_INTERNALROUTE": "Kustuta Sisemine Protsess",
+    "CONTEXTS": "Kontekstid",
+    "ADD_CONTEXT": "Lisa Kontekst",
+    "EDIT_CONTEXT": "Redigeeri Konteksti",
+    "DELETE_CONTEXT": "Kustuta Kontekst",
+    "VOICEMAILS": "Kõnepost",
+    "ADD_VOICEMAIL": "Lisa Kõnepost",
+    "EDIT_VOICEMAIL": "Redigeeri Kõneposti",
+    "DELETE_VOICEMAIL": "Kustuta Kõnepost",
+    "FULLNAME": "Täisnimi",
+    "EMAIL": "E-post",
+    "MAILBOX": "Postkast",
+    "PASSWORD": "Parool",
+    "CONFIRM_PASSWORD": "Kinnita Parool",
+    "TIMEZONE": "Ajavöönd",
+    "ATTACH": "Manusta",
+    "ENVELOPE": "Ümbrik",
+    "DELETE": "Kustuta",
+    "EMAILBODY": "E-kirja Sisu",
+    "EMAILSUBJECT": "E-kirja Teema",
+    "MAXSECONDS": "Maks Sekundeid",
+    "MAXMESSAGES": "Maks Sõnumeid",
+    "MESSAGES": "Sõnumid",
+    "SORT": "Sordi",
+    "ADD_MUSICONHOLD": "Lisa Ootemuusika",
+    "MUSICONHOLDS": "Ootemuusika",
+    "EDIT_MUSICONHOLD": "Redigeeri Ootemuusikat",
+    "DELETE_MUSICONHOLD": "Kustuta Ootemuusika",
+    "DIRECTORY": "Kaust",
+    "AUDIOFILES": "Audiofailid",
+    "RECORDINGS": "Salvestused",
     "CHANSPY": "ChanSpy",
-    "PREFIX": "Prefix",
-    "OPTIONS": "Options",
+    "PREFIX": "Eesliide",
+    "OPTIONS": "Suvandid",
     "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": "Lisa ChanSpy",
+    "EDIT_CHANSPY": "Redigeeri ChanSpy",
+    "DELETE_CHANSPY": "Kustuta ChanSpy",
+    "AGENTS": "Agendid",
+    "TELEPHONES": "Telefonis",
+    "QUEUES": "Järjekorrad",
+    "QUEUE_CALLS": "Järjekorra Kõned",
+    "QUEUE_PARAMETERS": "Järjekorra Parameetrid",
+    "ABANDONED_CALLS": "Tagasilükatud Kõned",
+    "OUTBOUND_CALLS": "Väljuvad Kõned",
     "AGI": "AGI",
-    "DIAL": "Dial",
-    "INTERNALDIAL": "Internal Dial",
-    "EXTERNALDIAL": "External Dial",
-    "RINGGROUP": "Ring Group",
-    "PLAYBACK": "Playback",
-    "QUEUE": "Queue",
-    "SET": "Set",
-    "VOICEMAIL": "Voicemail",
+    "DIAL": "Valimine",
+    "INTERNALDIAL": "Sisemine Valimine",
+    "EXTERNALDIAL": "Väline Valimine",
+    "RINGGROUP": "Helista Grupile",
+    "PLAYBACK": "Taasesitus",
+    "QUEUE": "Järjekord",
+    "SET": "Määra",
+    "VOICEMAIL": "Kõnepost",
     "GOTO": "GoTo",
-    "HANGUP": "Hangup",
-    "CUSTOM": "Custom",
-    "PROJECT": "Cally-Square Project",
-    "TECHNOLOGY/RESOURCE": "Technology/Resource",
+    "HANGUP": "Lõpeta kõne",
+    "CUSTOM": "Kohandatus",
+    "PROJECT": "Cally-Square Projekt",
+    "TECHNOLOGY/RESOURCE": "Tehnoloogia/Resurss",
     "URL": "URL",
-    "EDIT_APP": "Edit Application",
-    "EDIT_INTERVAL": "Edit Interval",
-    "DELETE_APP": "Delete Application",
-    "INTERVALS": "Intervals",
-    "USER": "User",
-    "TRUNK": "Trunk",
-    "PHONE": "Phone",
-    "AUDIO_FILES": "Audio Files",
-    "ANNOUNCE_OVERRIDES": "Announce Overrides",
-    "MACRO": "Macro",
+    "EDIT_APP": "Redigeeri Rakendust",
+    "EDIT_INTERVAL": "Redigeeri Intervalli",
+    "DELETE_APP": "Kustuta Rakendus",
+    "INTERVALS": "Intervallid",
+    "USER": "Kasutaja",
+    "TRUNK": "Magistraal",
+    "PHONE": "Telefon",
+    "AUDIO_FILES": "Audiofailid",
+    "ANNOUNCE_OVERRIDES": "Teavita Tühistustest",
+    "MACRO": "Makro",
     "GOSUB": "GoSub",
-    "RULE": "Rule",
-    "POSITION": "Position",
-    "ANSWER": "Answer",
-    "VALUE": "Value",
-    "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",
+    "RULE": "Reegel",
+    "POSITION": "Positsioon",
+    "ANSWER": "Vastus",
+    "VALUE": "Väärtus",
+    "MAILBOX@CONTEXT": "Postkast@Kontekst",
+    "EXTENSION": "Laiendus",
+    "PRIORITY": "Prioriteet",
+    "HANGUP_CAUSE": "Katkestamise Põhjus",
+    "OUTBOUNDDIAL": "Väljuv Valimine",
+    "CALLER_ID": "Helistaja ID",
+    "NO_MESSAGE_AVAILABLE": "Sõnumeid pole saadaval",
+    "NO_SOUND_AVAILABLE": "Helisid pole saadaval",
+    "VOICERECORDINGS": "Häälsalvestused",
     "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",
+    "VOICE": "Hääl",
+    "REALTIME": "Reaalaeg",
+    "ID": "ID",
+    "VOICEMAIL_CONTEXT": "Kontekst",
+    "NO_MOHSOUND_AVAILABLE": "Ootemuusika pole saadaval",
+    "FILE": "Fail",
+    "ADD_MOHSOUND": "Lisa Ootemuusika heli",
+    "DOWNLOAD_MOHSOUND": "Laadi alla Ootemuusika heli",
+    "DELETE_MOHSOUND": "Kustuta Ootemuusika heli",
+    "UNIQUEID": "Unikaalne ID",
     "AGENT": "Agent",
-    "TYPE": "Type",
-    "RATING": "Rating",
+    "TYPE": "Tüüp",
+    "RATING": "Hinnang",
     "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",
+    "DATE": "Kuupäev",
+    "NEW_VOICEQUEUE": "Uus Hääle Järjekord",
+    "NEW_INBOUNDROUTE": "Uus Sisenev Protsess",
+    "NEW_OUTBOUNDROUTE": "Uus Väljuv Protsess",
+    "NEW_INTERNALROUTE": "Uus Sisenev Protsess",
+    "NEW_CONTEXT": "Uus Kontekst",
+    "NEW_VOICEMAIL": "Uus Kõnepost",
+    "NEW_MUSICONHOLD": "Uus Ootemuusika",
+    "NEW_CHANSPY": "Uus ChanSpy",
+    "PENALTY": "Trahv",
+    "ADD_TEAM_TO_VOICEQUEUE": "Lisa Tiim Hääle Järjekorda",
+    "ADD_AGENT_TO_VOICEQUEUE": "Lisa Agent Hääle Järjekorda",
+    "EDIT_DIAL": "Redigeeri Valimist",
+    "EDIT_AGI": "Redigeeri AGI",
+    "EDIT_INTERNALDIAL": "Redigeeri Sisemist Valimist",
+    "EDIT_EXTERNALDIAL": "Redigeeri Välist Valimist",
+    "EDIT_RINGGROUP": "Redigeeri Helistamise Gruppi",
+    "EDIT_PLAYBACK": "Redigeeri Taasesitust",
+    "EDIT_QUEUE": "Redigeeri Järjekorda",
+    "EDIT_SET": "Redigeeri Häälestamist",
+    "EDIT_GOTO": "Redigeeri GoTo",
+    "EDIT_HANGUP": "Redigeeri Hangup",
+    "EDIT_CUSTOM": "Redigeeri Kohandatud",
+    "DURATION": "Kestus",
+    "RECEIVED_AT": "Kättesaamise Aeg",
+    "YES": "Jah",
+    "NO": "Ei",
+    "HANGUPCAUSE_1": "1 = Määramata number",
+    "HANGUPCAUSE_16": "16 = Normaalne kõne puhastamine",
+    "HANGUPCAUSE_17": "17 = Kasutaja hõivatud",
+    "HANGUPCAUSE_18": "18 = Kasutaja ei vasta (telefoniseade pole ühenduses)",
+    "HANGUPCAUSE_21": "21 = Kõne tagasilükatud",
+    "HANGUPCAUSE_22": "22 = Number muutunud",
+    "HANGUPCAUSE_27": "27 = Sihtkoht vale",
+    "HANGUPCAUSE_38": "38 = Võrk vale",
+    "HANGUPCAUSE_41": "41 = Ajutine nurjumine",
+    "RANDOM": "Juhuslik",
+    "ALPHABETICAL": "Tähestikuline",
+    "NO_APPS_AVAILABLE": "Rakendused pole saadaval",
+    "DOWNLOAD_VOICERECORDING": "Laadi alla Häälsalvestus",
+    "DELETE_VOICERECORDING": "Kustuta Häälsalvestus",
+    "INTERNAL": "Sisemine",
+    "PHONE_STATE": "Telefoni Olek",
+    "PHONE_STATUS": "Telefoni Staatus",
+    "REGISTERED": "Registreeritud",
+    "UNREGISTERED": "Registreerimata",
+    "LAGGED": "Viivitatud",
+    "REACHABLE": "Kättesaadav",
+    "UNREACHABLE": "Kättesaamatu",
+    "UNKNOWN": "Teadmata",
+    "NOT_INUSE": "Pole kasutusel",
+    "INUSE": "Kasutusel",
+    "BUSY": "Hõivatud",
+    "INVALID": "Kehtetu",
+    "UNAVAILABLE": "Kättesaamatu",
+    "RINGING": "Heliseb",
+    "ONHOLD": "Ootel",
+    "RING": "Heliseb",
+    "UP": "Üles",
     "INFO": "Info",
-    "TRUNKS": "Trunks",
-    "REGISTRY": "Registry",
-    "NO_REGISTRY": "No registry",
-    "LOGGED_IN": "Logged in (SIP connected)",
-    "PAUSED": "Paused",
-    "DISPOSITION": "Disposition",
-    "WAITING": "Waiting",
-    "TALKING": "Talking",
+    "TRUNKS": "Magistraalid",
+    "REGISTRY": "Register",
+    "NO_REGISTRY": "Register puudub",
+    "LOGGED_IN": "Sisse logitud (SIP ühendusega)",
+    "PAUSED": "Pausil",
+    "DISPOSITION": "Kasutamine",
+    "WAITING": "Ootamine",
+    "TALKING": "Rääkimine",
     "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",
+    "CALLER": "Helistaja",
+    "TOTAL": "Kokku",
+    "ANSWERED": "Vastatud",
+    "ABANDONED": "Katkestatud",
+    "UNMANAGED": "Haldamata",
+    "REDIRECT_TO_NUMBER": "Suuna numbrile",
+    "REDIRECT_TO_AGENT": "Suuna agendile",
+    "CLOSING": "Sulgemine",
+    "AVG_HOLD_TIME": "Avg Ooteage",
+    "AVG_DURATION": "Avg Kestus",
+    "AVG_BILLABLE": "Avg Arveldatav",
+    "SOURCE": "Allikas",
+    "DESTINATION": "Sihtkoht",
+    "REJECTED": "Tagasi lükatud",
+    "FAILED": "Nurjunud",
+    "CALLED": "Helistatud",
+    "CONNECTED": "Ühendatud",
+    "NO_RATING": "Hinnang puudub",
+    "EDIT_VOICERECORDING": "Redigeeri Häälsalvestust",
+    "APPLICATION_NAME": "Rakenduse Nimi",
+    "ARGUMENTS": "Argumendid",
+    "EDIT_QUEUECAMPAIGN": "Redigeeri Kampaaniat",
+    "LISTADD_QUEUECAMPAIGN": "Lisa Loend",
+    "BLACKLISTADD_QUEUECAMPAIGN": "Lisa Must nimekiri",
+    "TEAMADD_QUEUECAMPAIGN": "Lisa Tiim",
+    "AGENTADD_QUEUECAMPAIGN": "Lisa Agent",
+    "DELETE_QUEUECAMPAIGN": "Kustuta Kampaania",
+    "DELETE_IVRCAMPAIGN": "Kustuta Kampaania",
+    "EDIT_IVRCAMPAIGN": "Redigeeri Kampaaniat",
+    "NEW_IVRCAMPAIGN": "Uus IVR Kampaania",
+    "ADD_IVRCAMPAIGN": "Lisa IVR Kampaania",
+    "LISTADD_IVRCAMPAIGN": "Lisa Loend",
+    "BLACKLISTADD_IVRCAMPAIGN": "Lisa Must nimekiri",
+    "ENABLED": "Lubatud",
+    "READY": "Valmis",
+    "PAUSE": "Paus",
+    "UNPAUSE": "Lõpeta Paus",
+    "DEFAULT_PAUSE": "Vaikimisi Paus",
+    "AGENTADD_QUEUE": "Lisa Agent Järjekorra Kampaaniasse",
+    "AGENTSADD_QUEUE": "Lisa Agendid Järjekorra Kampaaniasse",
+    "ALL_TEAMS": "Kõik Tiimid",
+    "SELECTED_TEAMS": "Valitud Tiimid",
+    "ALL_LISTS": "Kõik Nimekirjad",
+    "SELECTED_LISTS": "Valitud Nimekirjad",
+    "ALL_AGENTS": "Kõik Agendid",
+    "SELECTED_AGENTS": "Valitud Agendid",
+    "WAITING_FOR_AGENT": "Agendi Ootamine",
+    "TOTAL_OFFERED": "Kokku Pakutud",
+    "RUNNING": "Jookseb",
+    "TRUNK_IS_NOT_REACHABLE": "Magistraal pole Kättesaadav",
+    "AGENTS_NOT_LOGGED": "Agent pole logitud",
+    "NOT_ACTIVE": "Pole Aktiivne",
+    "IS_DISACTIVED": "Deaktiveeritud",
+    "BACKUPTRUNK": "Varumagistraal",
+    "GLOBALINTERVAL": "Üldine Intervall",
+    "RESCHEDULED_CONTACTS": "Uuesti ajastatud kontaktid",
+    "INTERVAL_IS_OVERTIME": "Intervallist väljas",
+    "GLOBAL_INTERVAL_IS_OVERTIME": "Intervallist väljas (Üldine)",
+    "INTERVAL_IS_NULL": "Intervall on Null",
+    "TIMEZONE_UNKNOW": "Ajavöönd Teadmata",
+    "INTERVAL_IS_EMPTY": "Intervall on Tühi",
+    "TOTAL_MANAGED": "Kokku Hallatud",
+    "OPEN": "Avatud",
+    "FRESH": "Värske",
+    "CLOSED": "Suletud",
+    "ALWAYS": "Alati",
+    "NEVER": "Mitte kunagi",
+    "ONLY_IF_OPEN": "Ainult kui Avatud",
+    "CHECKDUPLICATE": "Kontrolli Duplikaati",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "OF": "of",
-    "CHAT": "Chat",
-    "MAIL": "Email",
-    "SMS": "SMS",
-    "OPENCHANNEL": "Open Channel",
-    "FAX": "Fax",
+    "CHAT": "Vestlus",
+    "MAIL": "E-mail",
+    "SMS": "SÕnum",
+    "OPENCHANNEL": "Avatud Kanal",
+    "FAX": "Faks",
     "ANSWERED_CALLS": "Vastatud kõnedele",
     "ANSWERING_MACHINE": "Automaatvastaja",
     "AVG_TALK_TIME": "Keskmine kõneaeg",
     "CURRENT_INTERVAL": "Praegune intervall",
     "DATA_COLLECTION_IN_PROGRESSIVE": "Andmete kogumine progressiivne",
-    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
+    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
     "MANDATORYDISPOSITIONPAUSEID": "Kohustusliku dispositsiooni pausi olek",
     "ONE_CALL_EVERY": "Üks kõne iga kord",
     "PREDICTIVEMAXTHRESHOLD": "Prognoositav maksimaalne lävi [%]",
     "PREDICTIVE_IS_RUNNING": "Ennustaja töötab",
     "PREVIOUS_INTERVAL": "Eelmine intervall",
     "RECALLINQUEUE": "Tagasikutsumine järjekorras",
-    "REFRESH_SCHEDULED_CALLS": "Ajastatud kõnede värskendamine",
+    "REFRESH_SCHEDULED_CALLS": "Ajastatud kõµnede värskendamine",
     "SCHEDULED_CALLS": "Ajastatud kõned",
-    "SELECT_CAMPAIGN": "Valige kampaania",
-    "SELECT_DATE": "Valige kuupäev",
-    "SELECT_TYPE": "Valige Tüüp",
+    "SELECT_CAMPAIGN": "Vali kampaania",
+    "SELECT_DATE": "Vali kuupäev",
+    "SELECT_TYPE": "Vali Tüüp",
     "SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO": "Kuva ennustavat teavet",
-    "TEAMS_ASSOCIATION": "Võistkondade liit",
+    "TEAMS_ASSOCIATION": "Tiimide liit",
     "THRESHOLDS": "Künnised",
     "TOOLTIP_SCREENRECORDING_OFF": "Ekraanisalvestus on saadaval",
     "TOOLTIP_SCREENRECORDING_ON": "Ekraanisalvestus pooleli",
     "TOTAL_CALLS": "Kõnesid kokku",
-    "ABANDONEDMAXRETRY": "Max proovib uuesti",
+    "ABANDONEDMAXRETRY": "Maks uued katsed",
     "ABANDONEDRETRYTIME": "Uuesti proovimise aeg [min]",
-    "AGENTREJECT": "Agent Keeldu",
-    "AGENTREJECTMAXRETRY": "Max proovib uuesti",
+    "AGENTREJECT": "Agendi Keeldumine",
+    "AGENTREJECTMAXRETRY": "Maks uued katsed",
     "AGENTREJECTRETRYTIME": "Uuesti proovimise aeg [min]",
-    "DROP": "Tilk",
-    "DROPMAXRETRY": "Max proovib uuesti",
+    "DROP": "Katkestamine",
+    "DROPMAXRETRY": "Maks uued katsed",
     "DROPRETRYTIME": "Uuesti proovimise aeg [min]",
-    "MACHINE": "Masin",
-    "MACHINEMAXRETRY": "Max proovib uuesti",
+    "MACHINE": "Seade",
+    "MACHINEMAXRETRY": "Maks uued katsed",
     "MACHINERETRYTIME": "Uuesti proovimise aeg [min]",
     "NOSUCHNUMBER": "Sellist numbrit pole",
-    "NOSUCHNUMBERMAXRETRY": "Max proovib uuesti",
+    "NOSUCHNUMBERMAXRETRY": "Maks uued katsed",
     "NOSUCHNUMBERRETRYTIME": "Uuesti proovimise aeg [min]",
-    "SECOND_LEVEL_DISPOSITION": "Teise taseme korraldus",
-    "THIRD_LEVEL_DISPOSITION": "Kolmanda taseme korraldus",
-    "ADDITIONALPHONES": "Täiendavad telefonid",
-    "CALLADDITIONALPHONEAFTERMIN": "Helistage täiendavale telefonile pärast [min]",
+    "SECOND_LEVEL_DISPOSITION": "Teise taseme kasutamine",
+    "THIRD_LEVEL_DISPOSITION": "Kolmanda taseme kasutamine",
     "PREVIEW_AUTO_RECALL_ME": "Automatiseerige Call Me kõned",
     "PREVIEW_RECALL_ME_REMINDER": "Tuleta mulle meelde"
   }
index 23ab65b..c07979f 100644 (file)
@@ -1,97 +1,97 @@
 {
   "OPENCHANNEL": {
-    "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",
-    "TAG": "Tag",
-    "EDIT_TAG": "Edit Tag",
-    "ADVANCED": "Advanced",
-    "PROXY": "Proxy",
-    "TOKEN": "Token",
-    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
-    "INSERT_MESSAGE_HERE": "Insert your text message here",
-    "NOTIFICATION": "Notification",
-    "NOTIFICATIONSOUND": "Sound",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONTEMPLATE": "Template",
-    "SYSTEM": "System",
-    "EDIT_SYSTEM": "Edit System",
-    "COMMAND": "Command",
-    "VARIABLE": "Variable",
-    "DELETE": "Delete",
-    "CANNEDANSWERS": "Canned Answers",
-    "OPENCHANNELCANNEDANSWERS": "Canned Answers",
-    "NO_OPENCHANNELCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
-    "NEW_OPENCHANNELCANNEDANSWER": "New Canned Answer",
-    "ADD_OPENCHANNELCANNEDANSWER": "Add Canned Answer",
-    "EDIT_OPENCHANNELCANNEDANSWER": "Edit",
-    "DELETE_OPENCHANNELCANNEDANSWER": "Delete",
-    "DELIVERYREPORTURL": "Delivery Report URL",
-    "TAGS": "Tags",
-    "SPYINTERACTION": "Spy",
-    "NO_AGENT_ONLINE": "No Agent Online",
-    "GOTOREALTIME_OPENCHANNELQUEUE": "Go To Realtime Open Channel Queue",
-    "PARTIALPAUSE": "Parital Pause",
-    "BUSY": "Busy",
-    "TIMER": "Timer",
-    "IDLE": "Idle",
-    "CAPACITY": "Capacity",
-    "REALTIME": "Realtime",
-    "TEXT": "Text",
-    "TIMES": "Number of times per interaction",
-    "EDIT_AUTOREPLY": "Edit Auto Reply",
-    "AUTOREPLY": "Auto Reply",
-    "NAME": "Name",
-    "OPENCHANNELQUEUES": "Open Channel Queues",
-    "SEARCH_FOR_ANYONE": "Search",
+    "LOGIN_TIME": "Sisselogimise aeg",
+    "PAUSE_TIME": "Pausi aeg",
+    "DOWNLOAD_INTERACTION": "Allalaadimine",
+    "TRANSFER": "Edastamine",
+    "QUEUETRANSFER": "Järjekorra Edastamine",
+    "QUEUETRANSFERTIMEOUT": "Järjekorra Edastamise Aegumine",
+    "AGENTTRANSFER": "Agendi Edastamine",
+    "AGENTTRANSFERTIMEOUT": "Agendi Edastamise Aegumine",
+    "TAG": "Silt",
+    "EDIT_TAG": "Redigeeri Silti",
+    "ADVANCED": "Täpsem",
+    "PROXY": "Puhver",
+    "TOKEN": "Luba",
+    "WAITFORTHEASSIGNEDAGENT": "Oota määratud agenti",
+    "INSERT_MESSAGE_HERE": "Sisesta oma tekstisõnum siia",
+    "NOTIFICATION": "Teatis",
+    "NOTIFICATIONSOUND": "Heli",
+    "NOTIFICATIONSHAKE": "Raputus",
+    "NOTIFICATIONTEMPLATE": "Mall",
+    "SYSTEM": "Süsteem",
+    "EDIT_SYSTEM": "Redigeeri Süsteemi",
+    "COMMAND": "Käsk",
+    "VARIABLE": "Muutuja",
+    "DELETE": "Kustuta",
+    "CANNEDANSWERS": "Salvestatud Vastused",
+    "OPENCHANNELCANNEDANSWERS": "Salvestatud Vastused",
+    "NO_OPENCHANNELCANNEDANSWER_AVAILABLE": "Salvestatud Vastused Puuduvad",
+    "NEW_OPENCHANNELCANNEDANSWER": "Uus Salvestatud Vastus",
+    "ADD_OPENCHANNELCANNEDANSWER": "Lisa Salvestatud Vastus",
+    "EDIT_OPENCHANNELCANNEDANSWER": "Redigeeri",
+    "DELETE_OPENCHANNELCANNEDANSWER": "Kustuta",
+    "DELIVERYREPORTURL": "Kohaletoimetamise Raport URL",
+    "TAGS": "Sildid",
+    "SPYINTERACTION": "Spioon",
+    "NO_AGENT_ONLINE": "Agente pole Võrgus",
+    "GOTOREALTIME_OPENCHANNELQUEUE": "Mine Reaalaja Avatud Kanali Järjekorda",
+    "PARTIALPAUSE": "Osaline Paus",
+    "BUSY": "Hõivatud",
+    "TIMER": "Taimer",
+    "IDLE": "Jõude",
+    "CAPACITY": "Võimsus",
+    "REALTIME": "Reaalaeg",
+    "TEXT": "Tekst",
+    "TIMES": "Kordade arv suhtluse kohta",
+    "EDIT_AUTOREPLY": "Redigeeri Automaatvastust",
+    "AUTOREPLY": "Automaatvastus",
+    "NAME": "Nimi",
+    "OPENCHANNELQUEUES": "Avatud Kanali Järjekorrad",
+    "SEARCH_FOR_ANYONE": "Otsing",
     "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",
-      "KEY_REQUIRED": "Mandatory Field",
-      "LIST_REQUIRED": "Mandatory Field",
-      "COMMAND_REQUIRED": "Mandatory Field",
-      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "VALUE_REQUIRED": "Mandatory Field",
-      "TEXT_REQUIRED": "The field text is required",
-      "NAME_REQUIRED": "Mandatory field",
-      "AGENT_TIMEOUT_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",
-      "REPLYURI_REQUIRED": "Mandatory field",
-      "REPLYURI_MUST_VALID_URL": "Wrong format",
-      "PRIORITY_REQUIRED": "Mandatory field",
-      "CONDITION_REQUIRED": "Mandatory field",
-      "TRUEPRIORITY_REQUIRED": "Mandatory field",
-      "FALSEPRIORITY_REQUIRED": "Mandatory field",
-      "AGENT_REQUIRED": "Mandatory field",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "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",
-      "DISPOSITION_REQUIRED": "Mandatory field",
-      "QUEUE_REQUIRED": "Mandatory field",
-      "KEY_MAX_LENGTH": "Key must have a maximum length equal to {{max}}",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "TAG_REQUIRED": "Kohustuslik Väli",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Kohustuslik Väli",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "NAME_MUST_VALID_PATTERN": "Vale formaat",
+      "KEY_REQUIRED": "Kohustuslik Väli",
+      "LIST_REQUIRED": "Kohustuslik Väli",
+      "COMMAND_REQUIRED": "Kohustuslik Väli",
+      "TEXT_MAX_LENGTH": "Väärtus peab olema maksimaalse pikkusega, mis võrdub {{maks}}",
+      "VALUE_REQUIRED": "Kohustuslik Väli",
+      "TEXT_REQUIRED": "Välja tekst on kohustuslik",
+      "NAME_REQUIRED": "Kohustuslik Väli",
+      "AGENT_TIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "MOTIONADDRESS_REQUIRED": "Kohustuslik Väli",
+      "MOTIONADDRESS_MUST_VALID_URL": "Vale formaat",
+      "ACCEPTURL_MUST_VALID_URL": "Vale formaat",
+      "TIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "REJECTURL_MUST_VALID_URL": "Vale formaat",
+      "CLOSEURL_MUST_VALID_URL": "Vale formaat",
+      "REPLYURI_REQUIRED": "Kohustuslik Väli",
+      "REPLYURI_MUST_VALID_URL": "Vale formaat",
+      "PRIORITY_REQUIRED": "Kohustuslik Väli",
+      "CONDITION_REQUIRED": "Kohustuslik Väli",
+      "TRUEPRIORITY_REQUIRED": "Kohustuslik Väli",
+      "FALSEPRIORITY_REQUIRED": "Kohustuslik Väli",
+      "AGENT_REQUIRED": "Kohustuslik Väli",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "DISPOSITION_REQUIRED": "Kohustuslik Väli",
+      "QUEUE_REQUIRED": "Kohustuslik Väli",
+      "KEY_MAX_LENGTH": "Võti peab olema maksimaalse pikkusega, mis võrdub {{maks}}",
       "ACCESSKEYID_REQUIRED": "Juurdepääsukoodi ID on vajalik",
       "BOTNAME_REQUIRED": "Boti nimi on kohustuslik",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Kohustuslik väli",
       "PRIVATEKEY_REQUIRED": "Kohustuslik väli",
       "PROJECTID_REQUIRED": "Kohustuslik väli"
     },
-    "STRATEGY": "Strategy",
+    "STRATEGY": "Strateegia",
     "AGENT": "Agent",
     "GOTO": "Goto",
     "GOTOIF": "Gotoif",
     "NOOP": "Noop",
-    "QUEUE": "Queue",
-    "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",
-    "VALUE": "Value",
-    "PRIORITY": "Priority",
-    "AGENT_TIMEOUT": "Agent Timeout",
-    "DESCRIPTION": "Description",
-    "ADD_OPENCHANNELQUEUE": "Add Open Channel Queue",
-    "EDIT_OPENCHANNELQUEUE": "Edit Open Channel Queue",
-    "DELETE_OPENCHANNELQUEUE": "Delete Open Channel Queue",
-    "PENALTY": "Penalty",
-    "TEAMADD_OPENCHANNELQUEUE": "Add Team To Open Channel Queue",
-    "AGENTADD_OPENCHANNELQUEUE": "Add Agent To Open Channel Queue",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
-    "CREATED_AT": "Created At",
-    "SAVE": "Save",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
-    "OPENCHANNELACCOUNTS": "Open Channel Accounts",
-    "MOTIONADDRESS": "Motion Address",
-    "ADD_OPENCHANNELACCOUNT": "Add Open Channel Account",
-    "EDIT_OPENCHANNELACCOUNT": "Edit Open Channel Account",
-    "DELETE_OPENCHANNELACCOUNT": "Delete Open Channel Account",
+    "QUEUE": "Järjekord",
+    "EDIT_AGENT": "Redigeeri Agenti",
+    "EDIT_GOTO": "Redigeeri Goto",
+    "EDIT_NOOP": "Redigeeri Noop",
+    "EDIT_GOTOIF": "Redigeeri Gotoif",
+    "EDIT_QUEUE": "Redigeeri Järjekorda",
+    "CONDITION": "Tingimus",
+    "TRUEPRIORITY": "Õige Prioriteet",
+    "FALSEPRIORITY": "Vale Prioriteet",
+    "VALUE": "Väärtus",
+    "PRIORITY": "Prioriteet",
+    "AGENT_TIMEOUT": "Agendi Aegumine",
+    "DESCRIPTION": "Kirjeldus",
+    "ADD_OPENCHANNELQUEUE": "Lisa Avatud Kanali Järjekord",
+    "EDIT_OPENCHANNELQUEUE": "Redigeeri Avatud Kanali Järjekorda",
+    "DELETE_OPENCHANNELQUEUE": "Kustuta Avatud Kanali Järjekord",
+    "PENALTY": "Trahv",
+    "TEAMADD_OPENCHANNELQUEUE": "Lisa Tiim Avatud Kanali Järjekorrale",
+    "AGENTADD_OPENCHANNELQUEUE": "Lisa Agent Avatud Kanali Järjekorrale",
+    "ALL_AGENTS": "Kõik Agendid",
+    "SELECTED_AGENTS": "Valitud Agendid",
+    "CREATED_AT": "Loomisaeg",
+    "SAVE": "lvesta",
+    "SETTINGS": "Sätted",
+    "GENERAL": "Üldine",
+    "OPENCHANNELACCOUNTS": "Avatud Kanali Kontod",
+    "MOTIONADDRESS": "Liikuv Aadress",
+    "ADD_OPENCHANNELACCOUNT": "Lisa Avatud Kanali Konto",
+    "EDIT_OPENCHANNELACCOUNT": "Redigeeri Avatud Kanali Kontot",
+    "DELETE_OPENCHANNELACCOUNT": "Kustuta Avatud Kanali Konto",
     "API": "API",
-    "DISPOSITIONS": "Dispositions",
-    "WEBHOOKS": "WebHooks",
-    "ACTIONS": "Actions",
-    "LIST": "List",
-    "FIDELITY": "Fidelity",
-    "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",
-    "OPENCHANNEL": "Open Channel",
-    "ID": "Id",
-    "TIMEOUT": "Timeout",
-    "OPENCHANNELDISPOSITIONS": "Open Channel Dispositions",
-    "NO_OPENCHANNELDISPOSITION_AVAILABLE": "No Open Channel Dispositions available",
-    "NEW_OPENCHANNELDISPOSITION": "New Open Channel Disposition",
-    "ADD_OPENCHANNELDISPOSITION": "Add Open Channel Disposition",
-    "EDIT_OPENCHANNELDISPOSITION": "Edit Open Channel Disposition",
-    "DELETE_OPENCHANNELDISPOSITION": "Delete Open Channel Disposition",
-    "NEW_OPENCHANNELQUEUE": "New Open channel Queue",
-    "NEW_OPENCHANNELACCOUNT": "New Open channel Account",
-    "NO_AVAILABLE_INFO": "No available info",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
-    "REPLYURI": "Reply URL",
-    "RECEIVEURI": "Receive URL",
+    "DISPOSITIONS": "Kasutused",
+    "WEBHOOKS": "Veebihaagid",
+    "ACTIONS": "Tegevused",
+    "LIST": "Loend",
+    "FIDELITY": "Kvaliteet",
+    "ACCEPT": "Aktsepteeri",
+    "ACCEPTMETHOD": "Aktsepteeri Meetod",
+    "ACCEPTURL": "Aktsepteeri URL",
+    "REJECT": "Lükka tagasi",
+    "REJECTMETHOD": "Lükka tagasi Meetod",
+    "REJECTURL": "Lükka tagasi URL",
+    "CLOSE": "Sule",
+    "CLOSEMETHOD": "Sule Meetod",
+    "CLOSEURL": "Sule URL",
+    "SELECTED": "Valitud",
+    "SELECT_ALL": "Vali Kõik",
+    "SELECT_NONE": "Ära vali Midagi",
+    "BACK": "Tagasi",
+    "OPENCHANNEL": "Ava Kanal",
+    "ID": "ID",
+    "TIMEOUT": "Aegumine",
+    "OPENCHANNELDISPOSITIONS": "Avatud Kanali Kasutused",
+    "NO_OPENCHANNELDISPOSITION_AVAILABLE": "Avatud Kanali Kasutused pole saadaval",
+    "NEW_OPENCHANNELDISPOSITION": "Uus Avatud Kanali Kasutus",
+    "ADD_OPENCHANNELDISPOSITION": "Lisa Avatud Kanali Kasutus",
+    "EDIT_OPENCHANNELDISPOSITION": "Redigeeri Avatud Kanali Kasutust",
+    "DELETE_OPENCHANNELDISPOSITION": "Kustuta Avatud Kanali Kasutus",
+    "NEW_OPENCHANNELQUEUE": "Uus Avatud Kanali Järjekord",
+    "NEW_OPENCHANNELACCOUNT": "Uus Avatud Kanali Konto",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "ALL_TEAMS": "Kõik Tiimid",
+    "SELECTED_TEAMS": "Valitud Tiimid",
+    "REPLYURI": "Vastuse URL",
+    "RECEIVEURI": "Vastuvõtu URL",
     "HELP": {
-      "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": "Kohustuslik käsutamine",
-      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
-      "WELCOMEMESSAGE": "See on esimene vastussõnum, mis saadetakse uutele interaktsioonidele."
+      "TOKEN": "Lisa see atribuut päringustringina oma Veebiteenuse URLi. Täpsemalt vaata doc <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">here</a>",
+      "RECEIVEURI": "Automaatselt genereeritud API string, mida kasutatakse sõnumite saamiseks Teie avatud kanalis välise rakenduse poolt (kasutades POST meetodit). Kliki Click the lõikelaua nuppu selle kopeerimiseks ",
+      "REPLYURI": "URL, kuhu avatud kanal helistab sõnumit saates või vastates sellele. Täpsemalt vaata doc <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">here</a>",
+      "NAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
+      "LIST": "Kontakti Halduri Loend, mida kasutatakse kontaktide seostamiseks",
+      "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
+      "WELCOMEMESSAGE": "See on esimene vastussõnum, mis saadetakse uutele suhtlustele."
     },
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "OF": "of",
-    "CONTACT": "Contact",
-    "STARTEDAT": "Started At",
-    "STATUS": "Status",
-    "CLOSED": "Closed",
-    "OPENED": "Open",
-    "OPEN": "Open",
-    "ACCOUNT": "Account",
-    "INTERACTION": "Interaction",
-    "INTERACTIONS": "Interactions",
-    "ALL": "All",
-    "SELECT_STATUS": "Select a status",
+    "CONTACT": "Kontakt",
+    "STARTEDAT": "Algusaeg",
+    "STATUS": "Staatus",
+    "CLOSED": "Suletud",
+    "OPENED": "Avatud",
+    "OPEN": "Ava",
+    "ACCOUNT": "Konto",
+    "INTERACTION": "Suhtlus",
+    "INTERACTIONS": "Suhtlused",
+    "ALL": "Kõik",
+    "SELECT_STATUS": "Vali staatus",
     "FILTER": "Filter",
-    "FILTERS": "Filters",
-    "CLOSEDAT": "Closed At",
-    "DISPOSITION": "Disposition",
-    "NOTES": "Notes",
-    "NO_INTERACTION_AVAILABLE": "No interactions available",
-    "SELECT_ACCOUNT": "Select an account",
+    "FILTERS": "Filtrid",
+    "CLOSEDAT": "Sulgemisaeg",
+    "DISPOSITION": "Kasutus",
+    "NOTES": "Märkmed",
+    "NO_INTERACTION_AVAILABLE": "Suhtlused pole saadaval",
+    "SELECT_ACCOUNT": "Vali konto",
     "GOTOP": "Gotop",
-    "EDIT_GOTOP": "Edit Gotop",
-    "EDIT_CLOSE": "Edit Close",
+    "EDIT_GOTOP": "Redigeeri Gotop",
+    "EDIT_CLOSE": "Redigeeri Sule",
     "INFO": "Info",
-    "KEY": "Key",
-    "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 Open Channel queue",
-    "UNPAUSE": "End Pause",
-    "DEFAULT_PAUSE": "Default pause",
-    "LOGGED_IN": "Logged in",
-    "PAUSED": "Paused",
-    "READY": "Ready",
-    "WAITING": "Waiting",
-    "VOICE": "Voice",
-    "CHAT": "Chat",
-    "MAIL": "Email",
-    "SMS": "SMS",
-    "FAX": "Fax",
-    "AGENTSADD_QUEUE": "Add agents to Open Channel queue",
-    "INTERACTIONS_OPENCHANNELACCOUNT": "Go to Interactions",
-    "REFRESH_INTERACTIONS": "Refresh Interactions",
-    "DELETE_INTERACTION": "Delete Interaction",
-    "AGENTADD_OPENCHANNELACCOUNT": "Add Agent to Openchannel Account",
-    "CANNED_ANSWER_SEARCH": "Enter a text to seach a Canned Answer",
-    "CANNED_ANSWER_NOT_FOUND": "No Canned Answer were found",
-    "SEND": "Send",
-    "TO": "To",
-    "MAPKEY": "Map Key",
+    "KEY": "Võti",
+    "UNKNOWN": "Teadmata",
+    "UNREGISTERED": "Registreerimata",
+    "UNAVAILABLE": "Kättesaamatu",
+    "NOT_INUSE": "Pole kasutusel",
+    "REACHABLE": "Kättesaadav",
+    "IN_USE": "Kasutusel",
+    "AGENTS": "Agendid",
+    "QUEUES": "Järjekorrad",
+    "FULLNAME": "Täisnimi",
+    "INTERNAL": "Sisemine",
+    "PHONE_STATE": "Telefoni Olek",
+    "PHONE_STATUS": "Telefoni Staatus",
+    "PAUSE": "Pausile",
+    "LOGOUT": "Logi välja",
+    "AGENTADD_QUEUE": "Lisa agent Avatud Kanali järjekorda",
+    "UNPAUSE": "Lõpeta Paus",
+    "DEFAULT_PAUSE": "Vaikimisi paus",
+    "LOGGED_IN": "Sisse logitud",
+    "PAUSED": "Pausil",
+    "READY": "Valmis",
+    "WAITING": "Ootel",
+    "VOICE": "Hääl",
+    "CHAT": "Vestlus",
+    "MAIL": "E-mail",
+    "SMS": "Sõnum",
+    "FAX": "Faks",
+    "AGENTSADD_QUEUE": "Lisa agendid Avatud Kanali järjekorda",
+    "INTERACTIONS_OPENCHANNELACCOUNT": "Mine Suhtlustesse",
+    "REFRESH_INTERACTIONS": "Värskenda Suhtlusi",
+    "DELETE_INTERACTION": "Kustuta Suhtlus",
+    "AGENTADD_OPENCHANNELACCOUNT": "Lisa Agent Avatud Kanali Kontole",
+    "CANNED_ANSWER_SEARCH": "Sisesta tekst, et otsida Salvestatud Vastust",
+    "CANNED_ANSWER_NOT_FOUND": "Salvestatud Vastuseid ei leitud",
+    "SEND": "Saada",
+    "TO": "Kellele",
+    "MAPKEY": "Kaardi Võti",
     "ACCESSKEYID": "Juurdepääsukoodi ID",
     "AMAZONLEX": "AmazonLex",
     "BOTNAME": "Boti nimi",
     "DIALOGFLOW": "Dialoogivoog",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadige alla ilma manusteta",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Laadige alla koos manustega",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadi alla ilma manusteta",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Laadi alla koos manustega",
     "EDIT_AMAZONLEX": "Redigeeri Lexi konfiguratsiooni",
     "EDIT_DIALOGFLOW": "Redigeeri Dialogflow konfiguratsiooni",
     "LANGUAGE": "Keel",
     "LASTMESSAGE": "Viimane teade",
     "LEXREGION": "Piirkond",
-    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
+    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
     "SECRETACCESSKEY": "Juurdepääsu võtme saladus",
     "TEAMS_ASSOCIATION": "Võistkondade liit",
     "TOOLTIP_SCREENRECORDING_OFF": "Ekraanisalvestus on saadaval",
index be8be0f..90c89fb 100644 (file)
@@ -1,6 +1,6 @@
 {
   "PLUGINS": {
-    "PLUGINS": "Plugins",
+    "PLUGINS": "Lisandmoodul",
     "ERRORS": {},
     "HELP": {}
   }
index 054b0d7..3fc4dff 100644 (file)
 {
   "SETTINGS": {
-    "MOTIONBARREMEMBERME": "Remember Me",
-    "CHATTIMEOUT": "Chat closing interaction timeout",
-    "VIRTUAL": "Chat",
-    "VOICE": "Voice",
-    "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",
+    "MOTIONBARREMEMBERME": "Pea mind meeles",
+    "CHATTIMEOUT": "Vestluse sulgemine suhtluse aegumine",
+    "VIRTUAL": "Vestlus",
+    "VOICE": "Hääl",
+    "SESSIONS": "Sessioonid",
+    "ADDONS": "Lisandmoodul",
+    "REPORT": "Raport",
+    "SPLIT": "Poolita raportit",
+    "SPLITSIZECSV": "Poolita raporti suurust [CSV kirjed]",
+    "SPLITSIZEPDF": "Poolita raporti suurust [PDF kirjed]",
+    "SPLITSIZEXLSX": "Poolita raporti suurust [XLSX kirjed]",
+    "ENABLEEMAILPREVIEW": "Luba E-maili Eelvaade",
     "JAWS": "Jaws",
-    "MOTIONBAR": "Motionbar",
-    "MOTIONBARAUTOUPDATER": "Auto Updater",
-    "MOTIONBARAUTOUPDATERURL": "Auto Updater URL",
+    "MOTIONBAR": "Liikumisriba",
+    "MOTIONBARAUTOUPDATER": "Automaatne Värskendaja",
+    "MOTIONBARAUTOUPDATERURL": "Automaatse Värskendaja 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": "Häälsalvestuse Krüptimine",
+    "TURNADDR": "TURN Aadress",
+    "TURN_USERNAME": "TURN Kasutajanimi",
+    "TURN_PASSWORD": "TURN Parool",
     "WEBRTC": "WebRTC",
     "CALLYSQUARE": "Cally Square",
-    "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",
-    "MOUNT_POINT": "Mount",
+    "ENABLED": "Lubatud",
+    "DISABLED": "Keelatud",
+    "UNLIMITED_CHANNELS": "Piiramatud Kanalid",
+    "RELOAD": "Laadi uuesti",
+    "VERIFY": "Kinnita",
+    "INTERFACE": "Liides",
+    "UPDATING": "Värskendamine",
+    "REMOTE_VERSION": "Kaugversioon",
+    "NO_NEW_VERSION_AVAILABLE": "Uut versiooni pole saadaval",
+    "TOP_N_PROCESSES": "Tipp {{väärtus}} protsess",
+    "SYSTEM": "Süsteem",
+    "FILE_SYSTEM": "Faili Süsteem",
+    "PROCESSES": "Protsess",
+    "MOUNT_POINT": "Ühenda",
     "AVG_LOAD": "AVG Load",
-    "TOTAL": "Total",
-    "USED": "Used",
-    "FREE": "Free",
-    "NAME": "Name",
-    "STATE": "State",
-    "CHAT": "Chat",
-    "MAIL": "Email",
-    "MESSAGING": "Sms",
-    "FAX": "Fax",
-    "OPENCHANNEL": "Open Channel",
-    "AGENTS": "Agents",
-    "USERS": "Users",
-    "TELEPHONES": "Telephones",
-    "STAFF": "Staff",
-    "CHANNELS": "Channels",
-    "MODULES": "Modules",
-    "CM": "Contacts Manager",
-    "DIALER": "Dialer",
+    "TOTAL": "Totaalne",
+    "USED": "Kasutatud",
+    "FREE": "Vaba",
+    "NAME": "Nimi",
+    "STATE": "Olek",
+    "CHAT": "Vestlus",
+    "MAIL": "E-mail",
+    "MESSAGING": "Sõnum",
+    "FAX": "Faks",
+    "OPENCHANNEL": "Avatud Kanal",
+    "AGENTS": "Agendid",
+    "USERS": "Kasutajad",
+    "TELEPHONES": "Telefonid",
+    "STAFF": "Personal",
+    "CHANNELS": "Kanalis",
+    "MODULES": "Moodulid",
+    "CM": "Kontaktide Haldur",
+    "DIALER": "Valija",
     "JSCRIPTY": "Jscripty",
-    "CUSTOM": "Customization",
-    "UPDATE": "Update",
-    "OTHERS": "Others",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
+    "CUSTOM": "Kohandamine",
+    "UPDATE": "Värskenda",
+    "OTHERS": "Teised",
+    "SETTINGS": "Sätted",
+    "GENERAL": "Üldine",
     "SMTP": "SMTP",
-    "NETWORKS": "Networks",
-    "UPDATES": "Updates",
-    "LICENSE": "License",
-    "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",
+    "NETWORKS": "Võrgud",
+    "UPDATES": "Värskendused",
+    "LICENSE": "Litsents",
+    "ID": "ID",
+    "MIN_INTERNAL": "Minm Sisemine",
+    "MIN_MAILBOX": "Min Postkast",
+    "INSTALLED_AT": "Installimise aeg",
+    "SEARCH_FOR_ANYONE": "Otsi",
+    "EDIT_GENERAL": "Redigeeri Üldine",
+    "SECURE_PASSWORD": "Kindlusta Parool",
     "LOGO": "Logo",
-    "DEFAULT_LOGO": "Default Logo",
-    "DEFAULT_LOGIN_LOGO": "Default Login Logo",
-    "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_LOGO": "Vaikimisi Logo",
+    "DEFAULT_LOGIN_LOGO": "Vaikimisi Logini Logo",
+    "WHITELABEL": "Valge Sedel",
+    "DEFAULT_HEADER_WHITELABEL": "Vaikimisi Päis Valge Silt",
+    "HEADER_WHITELABEL": "Päis Valge Silt",
+    "CREATED_AT": "Loomisaeg",
+    "SAVE": "Salvesta",
+    "SMTP_SERVICE": "Teenus",
     "SMTP_HOST": "Host",
-    "SMTP_USERNAME": "Username",
-    "DESCRIPTION": "Description",
-    "SMTP_PASSWORD": "Password",
+    "SMTP_USERNAME": "Kasutajanimi",
+    "DESCRIPTION": "Kirjeldus",
+    "SMTP_PASSWORD": "Parool",
     "SMTP_PORT": "Port",
-    "SMTP_SECURE": "Secure",
-    "TYPE": "Type",
-    "ADDRESS": "Address",
-    "NEW_NETWORK": "New Network",
-    "ADD_NETWORK": "Add Network",
+    "SMTP_SECURE": "Turvaline",
+    "TYPE": "Tüüp",
+    "ADDRESS": "Aadress",
+    "NEW_NETWORK": "Uus Võrk",
+    "ADD_NETWORK": "Lisa Võrk",
     "HELP": {
-      "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",
-      "DEFAULTSCREENRECORDINGPATH": "Sisestage Agent-arvutis ekraanisalvestusfailide salvestamise tee (jätke videokausta vaikeseade jaoks tühjaks)",
-      "LOGINMAILFREQUENCY": "Ärge unustage EMAIL-teenust taaskäivitada iga kord, kui seda parameetrit muudetakse",
+      "ADDRESS": "Väline (avalik) IP-aadress",
+      "LOCALNETADDRESS": "Kohalik IP-aadress/alamvõrk",
+      "SMTP_SECURE": "Kui tõene, siis serveriga ühendus kasutab TLSi",
+      "SMTP_USERNAME": "Autentimiseks kasutatav Kasutajanimi",
+      "SMTP_PASSWORD": "Autentimiseks kasutatav Parool",
+      "EMAILADDRESS": "Sõnumi päritolu E-maili aadress (kellelt)",
+      "SECURITY_SUITE": "Lubab turvalist parooli formaati, kohustuslik parooli uuendamine pärast esimest sisselogimist ja parooli aegumist 90 päeva pärast",
+      "MOTIONBARREMEMBERME": "Luba/Keela Pea Mind Meeles funktsioon Motion Phonebar sees",
+      "DEFAULTSCREENRECORDINGPATH": "Sisesta Agent-arvutis ekraanisalvestusfailide salvestamise tee (jätke videokausta vaikeseade jaoks tühjaks)",
+      "LOGINMAILFREQUENCY": "Ära unustage EMAIL-teenust taaskäivitada iga kord, kui seda parameetrit muudetakse",
       "RTLSUPPORT": "Lubab araabia, pärsia ja heebrea keelte RTL-i toe",
       "PASSWORD": "Parool",
       "USERNAME": "Kasutajanimi",
       "ENFORCE_PASSWORD_HISTORY": "Lubab valideerimise varem kasutatud paroolidega",
       "PASSWORD_HISTORY_LIMIT": "Viimati kontrollimiseks kasutatud unikaalsete paroolide arv",
       "SEARCH_ON_ENTER_KEY": "Alustage otsimist alles pärast seda, kui agent vajutab sisestusklahvi",
-      "INTERACTIONS_RELOAD_TIMEOUT": "Ajavahemik sekundites, mille järel interaktsioonid laaditakse uuesti (0 = reaalajas värskendus)",
+      "INTERACTIONS_RELOAD_TIMEOUT": "Ajavahemik sekundites, mille järel interaktsioonid laaditakse uuesti (0 = reaalajas väskendus)",
       "PRIVACY_POLICY": "Tärniga asendatavate märkide arv (*) (0 = kõik märgid)",
       "CLIENT_SECRET": "Pärast konfiguratsiooni salvestamist pole saladus enam nähtav. Hoidke seda ohutult, kui soovite seda mujal kasutada.",
       "LIMIT_TABS": "Avatud on maksimaalne arv võimalikke interaktsioonikaarte",
       "PREVIEW_RECALLME_REMINDER_INTERVAL": "Ajavahemik minutites, enne kui agendile saadetakse teatis, mis teavitab teda eelvaate tagasikutsumise tegemisest"
     },
     "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",
-      "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",
+      "CHATTIMEOUT_REQUIRED": "Kohustuslik väli",
+      "CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "MOTIONBARAUTOUPDATERURL_MUST_VALID_URL": "Vale formaat",
+      "MOTIONBARAUTOUPDATERURL_REQUIRED": "Kohustuslik väli",
+      "ADDRESS_REQUIRED": "Kohustuslik väli",
+      "MIN_INTERNAL_REQUIRED": "Kohustuslik väli",
+      "MIN_MAILBOX_REQUIRED": "Kohustuslik väli",
+      "NAME_REQUIRED": "Kohustuslik väli",
+      "HEADER_WHITELABEL_REQUIRED": "Kohustuslik väli",
+      "LOCALNETADDRESS_REQUIRED": "Kohustuslik väli",
+      "LOCALNETADDRESS_MUST_VALID_PATTERN": "Vale formaat",
+      "ADDRESS_MUST_VALID_PATTERN": "Vale formaat",
+      "ACCOUNTNAME_REQUIRED": "Kohustuslik väli",
+      "EMAIL_MUST_VALID": "Vale formaat",
+      "SMTP_USERNAME_REQUIRED": "Kohustuslik väli",
+      "PASSWORD_REQUIRED": "Kohustuslik väli",
+      "SMTP_HOST_REQUIRED": "Kohustuslik väli",
+      "SMTP_PORT_REQUIRED": "Kohustuslik väli",
+      "MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "PAGE_TITLE_REQUIRED": "Kohustuslik väli",
+      "EMAIL_REQUIRED": "Kohustuslik väli",
+      "PLAN_REQUIRED": "Kohustuslik väli",
+      "LICENSE_REQUIRED": "Kohustuslik väli",
       "ACCESSKEY_REQUIRED": "Kohustuslik väli",
       "ALLOWEDLOGINATTEMPTS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
       "ALLOWEDLOGINATTEMPTS_REQUIRED": "Kohustuslik väli",
       "USERNAME_REQUIRED": "Kohustuslik väli",
       "FIELD_REQUIRED": "Kohustuslik väli",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Kohustuslik väli",
-      "WRONG_FORMAT": "Vale formaat",
-      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne sellega"
+      "WRONG_FORMAT": "Vale formaat"
     },
-    "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",
-    "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",
-    "STUNADDR": "STUN Address",
+    "EDIT_NETWORK": "Redigeeri Võrku",
+    "DELETE_NETWORK": "Kustuta Võrk",
+    "BACK": "Tagasi",
+    "SELECTED": "Valitud",
+    "SELECT_ALL": "Vali Kõik",
+    "SELECT_NONE": "Ära vali Ühtegi",
+    "EXPIRATION_DATE": "Aegumiskuupäev",
+    "REQUEST_LICENSE": "Päri Litsentsi",
+    "EMAIL": "E-mail",
+    "SEND": "Saada",
+    "PLAN": "Plaan",
+    "MONTH_TO_MONTH": "Kuust kuusse",
+    "MOTION_PROCESS_MANAGEMENT": "Liikumise Protsessi Haldus",
+    "USEFUL_COMMANDS": "Kasulikud Käsud",
+    "COMMAND": "Käsk",
+    "PM2_LIST": "Loenda kõik protsessid",
+    "PM2_START": "Alusta protsessi ID või nime järgi",
+    "PM2_STOP": "Lõpeta protsess ID või nime järgi või sisesta 'kõik', et peatada kõik aktiivsed protsessid",
+    "PM2_RESTART": "Värskenda protsessi ID või nime järgi",
+    "PM2_LOGS": "Voogesita kõik protsessid logifailid, kui ei ole esitatud kindlat ID-d või nime",
+    "PASSWORD": "Parool",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "STUNADDR": "STUN Aadress",
     "CHANGELOG": "Changelog",
-    "CURRENT_VERSION": "Current version",
-    "CUSTOMIZATIONS": "Customizations",
-    "LOCALNETADDRESS": "Localnet Address",
-    "NEW_VERSION": "New Version",
-    "TRIAL_VERSION": "Trial Version",
-    "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",
+    "CURRENT_VERSION": "Jooksev versioon",
+    "CUSTOMIZATIONS": "Kohandamised",
+    "LOCALNETADDRESS": "Kohaliku võrgu Aadress",
+    "NEW_VERSION": "Uus Versioon",
+    "TRIAL_VERSION": "Prooviversioon",
+    "TOKEN": "Luba",
+    "NEW_TOKEN_DETECTED": "Uus Luba Tuvastatud",
+    "EXPIRATION_GRAY_PERIOD": "Halli Perioodi Aegumine",
+    "NEW_TOKEN": "Uus Luba",
+    "PRICES": "Hinnad",
+    "UPDATE_LICENSE": "Värskenda Litsentsid",
+    "LOGOLOGIN": "Logini Logo",
+    "EXPIRATION_REASON": "Aegumise Põhjus",
+    "GLOBAL": "Üldine",
+    "SMTP_AUTHENTICATION": "Autentimine",
+    "LICENSE_REQUEST_SENT": "Täname! Litsentsimise Tiim kontrollib Teie kontot asap Teie päringu kinnitamiseks: saate e-kirja, kui muutused jõustuvad. Palun pöörduge edasise info saamiseks aadressile license@xcally.com.",
+    "ACCOUNTNAME": "Konto Nimi",
+    "EMAILADDRESS": "E-posti Aadress",
+    "EXPIRATION_REASON_MESSAGE_DISABLED": "Teie litsents on kehtetu.",
+    "EXPIRATION_REASON_MESSAGE_CHANGED": "Teie Seadme unikaalne ID on uuendatud seoses Teie süsteemi muudatustega.",
+    "EXPIRATION_CHANGED_ADVISE": "Võtke ühendust xCALLY Liikumise Litsentsimise Tiimiga, saates nii Teie vana kui ka uue UUID.",
+    "OLD_TOKEN": "Vana Luba",
+    "SEND_EMAIL_TO": "Saada E-kiri kellele",
+    "JIRA_ERROR_MESSAGE": "Viga litsentsi päringu jooksul. Palun võtke oma päringu osas ühendust meie litsentsimise tiimiga aadressil license@xcally.com",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "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?",
+    "PAGE_TITLE": "Lehekülje Pealkiri",
+    "DEFAULT_PAGE_TITLE": "Vaikimisi Lehekülje Pealkiri",
+    "PERPETUAL": "Lõpmatu",
+    "SECURITY_SUITE": "Turvapakett",
+    "ANNUALLY": "Iga-aastaselt",
+    "AGENTOMNIDESKTOPINTERFACE": "Agendi Omni Töölaua Liides",
+    "MESSAGESALIGNMENT": "Sõnumi Joondus",
+    "ENTER_LICENSE": "Sisesta oma litsents",
+    "UPDATE_LICENSE_MANUALLY": "Kas soovid oma litsentsi käsitsi uuendada?",
     "ACCESSKEY": "Juurdepääsukoodi ID",
     "ADD_CLOUDPROVIDER": "Lisada konto",
     "AI": "A.I. Tööriistad",
     "ALLOWEDLOGINATTEMPTS": "Enne kasutaja / esindaja lukustamist lubatakse sisselogimiskatsed",
     "APPZONE": "Rakendustsoon",
     "BLOCKDURATION": "Enne automaatse avamise ootamist on vaja minutit",
-    "BUCKET": "Ämber",
+    "BUCKET": "Salv",
     "DEFAULTSCREENRECORDINGPATH": "Ekraani salvestustee",
     "DEFAULT_FAVICON": "Vaikimisi Favicon",
     "DEFAULT_PREFERRED": "Eelistatud vaikimisi logo",
     "TRANSCRIBEREGION": "Transkribeeritav piirkond",
     "USERNAME": "Kasutajanimi",
     "VIDEO": "Video",
-    "WHATSAPP": "WhatsApp-pistik",
-    "ENFORCE_PASSWORD_HISTORY": "Jõusta parooliajalugu",
-    "PASSWORD_HISTORY_LIMIT": "Parooliajaloo limiit",
-    "SEARCH_ON_ENTER_KEY": "Otsige sisestusklahvi",
-    "CHAT_INTERACTIONS_RELOAD_TIMEOUT": "Vestluse interaktsioonide uuesti laadimise ajalõpp",
-    "MAIL_INTERACTIONS_RELOAD_TIMEOUT": "E-posti interaktsioonide uuesti laadimise ajalõpp",
-    "OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT": "Avatud kanali interaktsioonide uuesti laadimise ajalõpp",
-    "SMS_INTERACTIONS_RELOAD_TIMEOUT": "SMS-interaktsioonide uuesti laadimise ajalõpp",
-    "WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT": "WhatsApp Connectori interaktsioonide uuesti laadimise ajalõpp",
+    "WHATSAPP": "WhatsApp ühendus",
+    "ENFORCE_PASSWORD_HISTORY": "Jõusta parooli ajalugu",
+    "PASSWORD_HISTORY_LIMIT": "Parooli ajaloo limiit",
+    "SEARCH_ON_ENTER_KEY": "Otsi sisestusklahvi",
+    "CHAT_INTERACTIONS_RELOAD_TIMEOUT": "Vestluse suhtluste uuesti laadimise ajalõpp",
+    "MAIL_INTERACTIONS_RELOAD_TIMEOUT": "E-posti suhtluste uuesti laadimise ajalõpp",
+    "OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT": "Avatud kanali suhtluste uuesti laadimise ajalõpp",
+    "SMS_INTERACTIONS_RELOAD_TIMEOUT": "SMS-suhtluste uuesti laadimise ajalõpp",
+    "WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT": "WhatsApp Connectori suhtluste uuesti laadimise ajalõpp",
     "PRIVACY_POLICY_EMAIL": "E-posti aadresside privaatsuseeskirjad",
     "PRIVACY_POLICY_NAME": "Nimede privaatsuseeskirjad",
     "PRIVACY_POLICY_NUMBER": "Numbrite privaatsuseeskirjad",
-    "STOP_RECORDING_ON_VOICE_CALL_TRANSFER": "Lõpeta häälkõne ülekande salvestamine",
+    "STOP_RECORDING_ON_VOICE_CALL_TRANSFER": "Lõpeta häälkõne edastamise salvestamine",
     "AD_SSO_ENABLED": "Active Directory SSO lubatud",
     "APPLICATION_ID": "Rakenduse ID",
     "AUTHENTICATE": "Autentimine",
index 9d0b322..2645fe3 100644 (file)
 {
   "SMS": {
-    "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",
-    "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",
-    "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",
-    "IDLE": "Idle",
-    "CAPACITY": "Capacity",
-    "PROXY": "Proxy",
-    "ADVANCED": "Advanced",
-    "MOTIONPROXY": "Proxy Or Motion Domain",
-    "REALTIME": "Realtime",
-    "KEY": "Key",
-    "NAME": "Name",
-    "SMSQUEUES": "SMS Queues",
-    "SEARCH_FOR_ANYONE": "Search",
-    "STRATEGY": "Strategy",
+    "LOGIN_TIME": "Sisselogimise aeg",
+    "PAUSE_TIME": "Pausi aeg",
+    "DOWNLOAD_INTERACTION": "Allalaadimine",
+    "TRANSFER": "Edastamine",
+    "QUEUETRANSFER": "Järjekorra Edastamine",
+    "QUEUETRANSFERTIMEOUT": "Järjekorra Edastamise Aegumine",
+    "AGENTTRANSFER": "Agendi Edastamine",
+    "AGENTTRANSFERTIMEOUT": "Agendi Edastamise Aegumine",
+    "TAG": "Silt",
+    "EDIT_TAG": "Redigeeri Silti",
+    "WAITFORTHEASSIGNEDAGENT": "Oota määratud agenti",
+    "NOTIFICATION": "Teatis",
+    "NOTIFICATIONSOUND": "Heli",
+    "NOTIFICATIONSHAKE": "Raputus",
+    "NOTIFICATIONTEMPLATE": "Mall",
+    "SYSTEM": "Süsteem",
+    "EDIT_SYSTEM": "Redigeeri Süsteemi",
+    "COMMAND": "Käsk",
+    "VARIABLE": "Muutuja",
+    "AUTHID": "Autentimise ID",
+    "NO_SMSDISPOSITIONS_AVAILABLE": "SMS Kasutusi pole Saadaval",
+    "CANNEDANSWERS": "Salvestatud Vastused",
+    "SMSCANNEDANSWERS": "Salvestatud Vastused",
+    "NO_SMSCANNEDANSWER_AVAILABLE": "Salvestatud Vastused Puuduvad",
+    "NEW_SMSCANNEDANSWER": "Uus Salvestatud Vastus",
+    "ADD_SMSCANNEDANSWER": "Lisa Salvestatud Vastus",
+    "EDIT_SMSCANNEDANSWER": "Redigeeri",
+    "DELETE_SMSCANNEDANSWER": "Kustuta",
+    "DELIVERYREPORTURL": "Kohaletoimetamise Raporti URL",
+    "DELETE": "Kustuta",
+    "SENDERSTRING": "Saatja String",
+    "DELIVERYREPORT": "Kohaletoimetamise Raport",
+    "METHOD": "Meetod",
+    "ADD_NOTE": "Lisa märge",
+    "NOTE": "Märge",
+    "SPYINTERACTION": "Spioon",
+    "AUTOREPLY": "Automaatvastus",
+    "EDIT_AUTOREPLY": "Redigeeri Automaatvastus",
+    "TIMES": "Kordade arv suhtluse korda",
+    "TEXT": "Tekst",
+    "INSERT_MESSAGE_HERE": "Sisesta oma tekstisõnum siia",
+    "CANNED_ANSWER_NOT_FOUND": "Salvestatud Vastuseid ei leitud",
+    "CANNED_ANSWER_SEARCH": "Sisesta tekst, et otsida Salvestatud Vastust",
+    "SEND": "Saada",
+    "TO": "Kellele",
+    "MESSAGE": "Sõnum",
+    "TAGS": "Sildid",
+    "NO_AGENT_ONLINE": "Agente pole Võrgus",
+    "GOTOREALTIME_SMSQUEUE": "Mine Reaalaja SMS Järjekorda",
+    "PARTIALPAUSE": "Osaline Paus",
+    "BUSY": "Hõivatud",
+    "TIMER": "Taimer",
+    "IDLE": "Jõude",
+    "CAPACITY": "Võimsus",
+    "PROXY": "Puhver",
+    "ADVANCED": "Täpsem",
+    "MOTIONPROXY": "Puhver või Liikumise Domeen",
+    "REALTIME": "Reaalaeg",
+    "KEY": "Võti",
+    "NAME": "Nimi",
+    "SMSQUEUES": "SMS Järjekorrad",
+    "SEARCH_FOR_ANYONE": "Otsi",
+    "STRATEGY": "Strateegia",
     "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",
-      "AUTHID_REQUIRED": "Mandatory Field",
-      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "TEXT_REQUIRED": "Mandatory Field",
-      "VALUE_REQUIRED": "Mandatory Field",
-      "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",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "TAG_REQUIRED": "Kohustuslik Väli",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Kohustuslik Väli",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "NAME_MUST_VALID_PATTERN": "Vale formaat",
+      "COMMAND_REQUIRED": "Kohustuslik Väli",
+      "AUTHID_REQUIRED": "Kohustuslik Väli",
+      "TEXT_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab võrduma {{maks}}",
+      "TEXT_REQUIRED": "Kohustuslik Väli",
+      "VALUE_REQUIRED": "Kohustuslik Väli",
+      "SENDERSTRING_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab võrduma {{maks}}",
+      "SENDERSTRING_MUST_VALID_PATTERN": "Vale formaat",
+      "METHOD_REQUIRED": "Kohustuslik Väli",
+      "MOTIONPROXY_REQUIRED": "Kohustuslik Väli",
+      "MOTIONPROXY_MUST_VALID_URL": "Vale formaat",
+      "KEY_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab võrduma {{maks}}",
+      "KEY_REQUIRED": "Kohustuslik Väli",
+      "NAME_REQUIRED": "Kohustuslik Väli",
+      "AGENT_TIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "PHONE_REQUIRED": "Kohustuslik Väli",
+      "SID_REQUIRED": "Kohustuslik Väli",
+      "TOKEN_REQUIRED": "Kohustuslik Väli",
+      "USERNAME_REQUIRED": "Kohustuslik Väli",
+      "PASSWORD_REQUIRED": "Kohustuslik Väli",
+      "MOTIONADDRESS_REQUIRED": "Kohustuslik Väli",
+      "MOTIONADDRESS_MUST_VALID_URL": "Vale formaat",
+      "ACCEPTURL_MUST_VALID_URL": "Vale formaat",
+      "TIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "REJECTURL_MUST_VALID_URL": "Vale formaat",
+      "CLOSEURL_MUST_VALID_URL": "Vale formaat",
+      "TYPE_REQUIRED": "Kohustuslik Väli",
+      "LIST_REQUIRED": "Kohustuslik Väli",
+      "PRIORITY_REQUIRED": "Kohustuslik Väli",
+      "CONDITION_REQUIRED": "Kohustuslik Väli",
+      "TRUEPRIORITY_REQUIRED": "Kohustuslik Väli",
+      "FALSEPRIORITY_REQUIRED": "Kohustuslik Väli",
+      "AGENT_REQUIRED": "Kohustuslik Väli",
+      "QUEUE_REQUIRED": "Kohustuslik Väli",
+      "DISPOSITION_REQUIRED": "Kohustuslik Väli",
+      "ACCOUNTSID_REQUIRED": "Kohustuslik Väli",
+      "AUTHTOKEN_REQUIRED": "Kohustuslik Väli",
       "ACCESSKEYID_REQUIRED": "Juurdepääsukoodi ID on vajalik",
       "APIKEY_REQUIRED": "Kohustuslik väli",
       "BASEURL_REQUIRED": "Kohustuslik väli",
       "ACCOUNTID_REQUIRED": "Kohustuslik väli",
       "APPLICATIONID_REQUIRED": "Kohustuslik väli"
     },
-    "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": "Agendi Aegumine",
+    "DESCRIPTION": "Kirjeldus",
+    "ADD_SMSQUEUE": "Lisa SMS Järjekord",
+    "EDIT_SMSQUEUE": "Redigeeri SMS Järjekorda",
+    "DELETE_SMSQUEUE": "Kustuta SMS Järjekord",
+    "SETTINGS": "Sätted",
+    "GENERAL": "Üldine",
+    "CREATED_AT": "Loomisaeg",
+    "SAVE": "Salvesta",
+    "SMSACCOUNTS": "SMS Kontod",
+    "TYPE": "Tüüp",
+    "PHONE": "Telefon",
     "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",
-    "FIDELITY": "Fidelity",
+    "TOKEN": "Luba",
+    "SMSTYPE": "SMS Tüüp",
+    "USERNAME": "Kasutajanimi",
+    "PASSWORD": "Parool",
+    "MOTIONADDRESS": "Liikumise Aadress",
+    "ADD_SMSACCOUNT": "Lisa SMS Konto",
+    "EDIT_SMSACCOUNT": "Redigeeri SMS Kontot",
+    "DELETE_SMSACCOUNT": "Kustuta SMS Konto",
+    "LIST": "Loend",
+    "FIDELITY": "Kvaliteet",
     "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": "Kasutused",
+    "WEBHOOKS": "VeebiHaagid",
+    "ACTIONS": "Tegevused",
+    "ACCEPT": "Aktsepteeri",
+    "ACCEPTMETHOD": "Aktsepteeri Meetod",
+    "ACCEPTURL": "Aktsepteeri URL",
+    "REJECT": "Hülga",
+    "REJECTMETHOD": "Hülga Meetod",
+    "REJECTURL": "Hülga URL",
+    "CLOSE": "Sule",
+    "CLOSEMETHOD": "Sule Method",
+    "CLOSEURL": "Sule URL",
+    "SELECTED": "Valitud",
+    "SELECT_ALL": "Vali Kõik",
+    "SELECT_NONE": "Ära Vali Midagi",
+    "BACK": "Tagasi",
     "SMS": "SMS",
-    "ID": "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",
+    "ID": "ID",
+    "CONFIRM_PASSWORD": "Kinnita Parool",
+    "SMSDISPOSITIONS": "SMS Kasutused",
+    "NO_SMSDISPOSITION_AVAILABLE": "SMS Kasutused pole saadaval",
+    "NEW_SMSDISPOSITION": "Uus SMS Kasutus",
+    "ADD_SMSDISPOSITION": "Lisa SMS Kasutus",
+    "EDIT_SMSDISPOSITION": "Redigeeri SMS Kasutus",
+    "DELETE_SMSDISPOSITION": "Kustuta SMS Kasutus",
+    "NEW_SMSQUEUE": "Uus SMS Järjekord",
+    "NEW_SMSACCOUNT": "Uus SMS Konto",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "ALL_TEAMS": "Kõik Tiimid",
+    "SELECTED_TEAMS": "Valitud Tiimid",
     "HELP": {
-      "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",
+      "MOTIONPROXY": "Väljal peab olema järgmine formaat: <protocol>://<ipaddress>[:<port>]. Näidis: https://X.Y.Z.W",
+      "NAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
+      "LIST": "Kontakti Halduri loend, mida kasutatakse kontaktide seostamiseks",
+      "RECEIVEURL": "See on automaatselt genereeritud API string, mida kasutatakse sõnumite vastuvõtmiseks sinu Konto sees sinu SMS pakkujalt (kasutada tuleb POST meetodit): kliki lõikelaua nuppu selle kopeerimiseks",
       "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": "Kohustuslik käsutamine",
-      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
-      "WELCOMEMESSAGE": "See on esimene vastussõnum, mis saadetakse uutele interaktsioonidele"
+      "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
+      "WELCOMEMESSAGE": "See on esimene vastussõnum, mis saadetakse uutele sihtlustele"
     },
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu Lehekülje kohta",
     "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",
+    "TEAMADD_SMSQUEUE": "Lisa Tiim SMS Järjekorda",
+    "AGENTADD_SMSQUEUE": "Lisa Agent SMS Järjekorda",
+    "ALL_AGENTS": "Kõik Agendid",
+    "SELECTED_AGENTS": "Valitud Agendid",
+    "RECEIVEURL": "URL vastuvõtmine",
+    "INTERACTION": "Suhtlus",
+    "INTERACTIONS": "Suhtlused",
+    "NO_INTERACTION_AVAILABLE": "Suhtlused pole saadaval",
+    "CONTACT": "Kontakt",
+    "STARTEDAT": "Algusaeg",
     "AGENT": "Agent",
-    "CLOSEDAT": "Closed At",
-    "DISPOSITION": "Disposition",
-    "NOTES": "Notes",
+    "CLOSEDAT": "Sulgemisaeg",
+    "DISPOSITION": "Kasutus",
+    "NOTES": "Märkmed",
     "GOTO": "Goto",
     "GOTOIF": "Gotoif",
     "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",
+    "QUEUE": "Järjekord",
+    "TIMEOUT": "Aegumine",
+    "VALUE": "Väärtus",
+    "EDIT_AGENT": "Redigeeri Agenti",
+    "EDIT_GOTO": "Redigeeri Goto",
+    "EDIT_NOOP": "Redigeeri Noop",
+    "EDIT_GOTOIF": "Redigeeri Gotoif",
+    "EDIT_QUEUE": "Redigeeri Järjekorda",
+    "CONDITION": "Tingimus",
+    "TRUEPRIORITY": "Õige Prioriteet",
+    "FALSEPRIORITY": "Vale Prioriteet",
+    "PRIORITY": "Prioriteet",
     "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",
-    "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",
+    "EDIT_GOTOP": "Redigeeri Gotop",
+    "EDIT_CLOSE": "Redigeeri Sulgemist",
+    "FILTER": "Filtreerimine",
+    "SELECT_STATUS": "Vali staatus",
+    "ALL": "Kõik",
+    "SELECT_ACCOUNT": "Vali Konto",
+    "OPENED": "Avatud",
+    "CLOSED": "Suletud",
+    "STATUS": "Staatus",
+    "ACCOUNT": "Konto",
+    "OPEN": "Ava",
+    "INFO": "Teave",
+    "ACCOUNTSID": "Konto SID",
+    "AUTHTOKEN": "Autentimisluba",
+    "UNKNOWN": "Teadmata",
+    "UNREGISTERED": "Registreerimata",
+    "UNAVAILABLE": "Kättesaamatu",
+    "NOT_INUSE": "Pole kasutusel",
+    "REACHABLE": "Kättesaadav",
+    "IN_USE": "Kasutusel",
+    "AGENTS": "Agentdid",
+    "QUEUES": "Järjekorrad",
+    "FULLNAME": "Täisnimi",
+    "INTERNAL": "Sisemine",
+    "PHONE_STATE": "Telefoni Olek",
+    "PHONE_STATUS": "Telefoni Staatus",
+    "PAUSE": "Paus",
+    "LOGOUT": "Logi välja",
+    "AGENTADD_QUEUE": "Lisa agent SMS Järjekorda",
+    "UNPAUSE": "Lõpeta Paus",
+    "DEFAULT_PAUSE": "Vaikimisi paus",
+    "LOGGED_IN": "Sisse logitud",
+    "PAUSED": "Pausil",
+    "READY": "Valmis",
+    "WAITING": "Ootel",
+    "VOICE": "Hääl",
+    "CHAT": "Vestlus",
+    "MAIL": "E-mail",
+    "OPENCHANNEL": "Ava kanal",
+    "FAX": "Faks",
+    "AGENTSADD_QUEUE": "Lisa agendid SMS Järjekorda",
+    "INTERACTIONS_SMSACCOUNT": "Mine Suhtlustesse",
+    "REFRESH_INTERACTIONS": "Värskenda Suhtlusi",
+    "DELETE_INTERACTION": "Kustuta Suhtlus",
+    "AGENTADD_SMSACCOUNT": "Lisa Agent SMS Kontole",
     "ACCESSKEYID": "Juurdepääsukoodi ID",
     "AMAZONLEX": "AmazonLex",
     "APIKEY": "ApiKey",
     "BASEURL": "Baas-URL",
     "BOTNAME": "Boti nimi",
     "DIALOGFLOW": "DialogFlow",
-    "DOWNLOAD_WITHOUT_ATTACHMENT": "Laadige alla ilma manuseta",
-    "DOWNLOAD_WITH_ATTACHMENT": "Laadige alla koos manusega",
+    "DOWNLOAD_WITHOUT_ATTACHMENT": "Laadi alla ilma manuseta",
+    "DOWNLOAD_WITH_ATTACHMENT": "Laadi alla koos manusega",
     "EDIT_AMAZONLEX": "Redigeeri Lexi konfiguratsiooni",
     "EDIT_DIALOGFLOW": "Redigeeri DialogFlow konfiguratsiooni",
     "LANGUAGE": "Keel",
     "LASTMESSAGE": "Viimane teade",
     "LEXREGION": "Piirkond",
-    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
+    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
     "SECRETACCESSKEY": "Juurdepääsu võtme saladus",
     "TEAMS_ASSOCIATION": "Võistkondade liit",
     "WELCOMEMESSAGE": "Tervitussõnum",
index 0d93402..75fb8d9 100644 (file)
 {
   "STAFF": {
-    "HOTDESK": "Hot desk",
-    "ENABLEVIDEORECORDING": "Enable Video Recording",
-    "OLD_PASSWORD": "Old Password",
-    "ENABLEJAWSINTEGRATION": "Enable Jaws Integration",
+    "HOTDESK": "Hostseade",
+    "ENABLEVIDEORECORDING": "Luba Videosalvestus",
+    "OLD_PASSWORD": "Vana Parool",
+    "ENABLEJAWSINTEGRATION": "Luba Jaws Integreerimine",
     "ALIAS": "Alias",
-    "NO_PASSWORD_CHANGE": "No Password Change",
-    "SECURITY_SUITE": "Security Suite",
-    "LAST_PASSWORD_RESET_AT": "Last Password Reset At",
+    "NO_PASSWORD_CHANGE": "Parooli Muutmine puudub",
+    "SECURITY_SUITE": "Turvapakett",
+    "LAST_PASSWORD_RESET_AT": "Viimase Parooli Lähtestamise aeg",
     "SIP_WEBRTC": "Sip",
-    "SETTINGS_WEBRTC": "Settings",
+    "SETTINGS_WEBRTC": "Sätted",
     "WEBRTC": "WebRTC",
-    "DTLSCERTFILE": "TLS certificate",
-    "DTLSPRIVATEKEY": "TLS certificate's private key",
-    "CONTEXT": "Context",
-    "RINGINUSE": "Ring In Use",
-    "USERS": "Users",
-    "AGENTS": "Agents",
-    "TOGGLE_SIDENAV": "Toggle sidenav",
-    "SEARCH_FOR_ANYONE": "Search",
-    "BACK": "Back",
-    "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",
-    "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",
+    "DTLSCERTFILE": "TLS sertifikaat",
+    "DTLSPRIVATEKEY": "TLS sertifikaatide privaatvõti",
+    "CONTEXT": "Kontekst",
+    "RINGINUSE": "Helistamine Kasutusel",
+    "USERS": "Kasutajad",
+    "AGENTS": "Agendid",
+    "TOGGLE_SIDENAV": "Ümberlüliti sidenav",
+    "SEARCH_FOR_ANYONE": "Otsi",
+    "BACK": "Tagasi",
+    "MULTI_SELECT_TOGGLE": "mitme valikuga ümberlüliti",
+    "SELECT_ALL": "Vali Kõik",
+    "SELECT_NONE": "Ära Vali Ühtegi",
+    "SELECTED": "Valitud",
+    "DELETE_SELECTED": "Kustuta valitud",
+    "EXPORT_SELECTED": "Ekspordi valitud",
+    "ALL_USERS": "Kõik kasutajad",
+    "ALL_AGENTS": "Kõik agendid",
+    "SORT": "sordi",
+    "NAME": "Nimi",
+    "FULLNAME": "Täisnimi",
+    "A_TO_Z": "(A-st Z-ni)",
+    "Z_TO_A": "(Z-st to A-ni)",
+    "MORE": "Rohkem",
+    "DELETE_USER": "Kustuta Kasutaja",
+    "EDIT_USER": "Redigeeri Kasutajat",
+    "DELETE_AGENT": "Kustuta Agent",
+    "EDIT_AGENT": "Redigeeri Agenti",
+    "DELETE": "KUSTUTA",
+    "SAVE": "SALVESTA",
+    "ADD_USER": "LISA KASUTAJA",
+    "ADD_AGENT": "LISA AGENT",
+    "NO_RESULTS": "Tulemused puuduvad..",
+    "CLOSE_DIALOG": "Sule dialoog",
+    "NAME_REQUIRED": "Nimi (nõutav)",
+    "USERNAME": "Kasutajanimi",
+    "SHOW_ALL_FIELDS": "Näita Kõik Väljad",
+    "PHONE_NUMBER": "Telefoninumber",
+    "EMAIL": "E-mail",
+    "PASSWORD": "Parool",
     "ERRORS": {
-      "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",
-      "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 ~!?*@#$%^&-_=+[{]}.",
+      "ALLOWCODECS_REQUIRED": "Kohustuslik väli",
+      "ENCRYPTION": "SRTP (Turvaline Reaalaja Protokoll) Krüptimine",
+      "DTLSCERTFILE_REQUIRED": "Kohustuslik väli",
+      "DTLSPRIVATEKEY_REQUIRED": "Kohustuslik väli",
+      "FULLNAME_REQUIRED": "Kohustuslik väli",
+      "USERNAME_REQUIRED": "Kohustuslik väli",
+      "EMAIL_REQUIRED": "Kohustuslik väli",
+      "PASSWORD_REQUIRED": "Kohustuslik väli",
+      "CONFIRM_NOT_MATCH": "Paroolid ei ühti",
+      "EMAIL_MUST_VALID": "Vale formaat",
+      "ACCOUNTNAME_REQUIRED": "Kohustuslik väli",
+      "NAME_REQUIRED": "Kohustuslik väli",
+      "HOST_REQUIRED": "Kohustuslik väli",
+      "CHATCAPACITY_REQUIRED": "Kohustuslik väli",
+      "MAILCAPACITY_REQUIRED": "Kohustuslik väli",
+      "FAXCAPACITY_REQUIRED": "Kohustuslik väli",
+      "SMSCAPACITY_REQUIRED": "Kohustuslik väli",
+      "OPENCHANNELCAPACITY_REQUIRED": "Kohustuslik väli",
+      "SIPEXPIRES_REQUIRED": "Kohustuslik väli",
+      "SIPPORT_REQUIRED": "Kohustuslik väli",
+      "UNCONDITIONALNUMBER_REQUIRED": "Kohustuslik väli",
+      "NOREPLYNUMBER_REQUIRED": "Kohustuslik väli",
+      "BUSYNUMBER_REQUIRED": "Kohustuslik väli",
+      "USERNAME_MUST_VALID_PATTERN": "Vale formaat {{regex}}",
+      "REMOTECONTROLPORT_REQUIRED": "Kohustuslik väli",
+      "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "AUTOANSWERDELAY_REQUIRED": "Kohustuslik väli",
+      "MONITOREXTENSION_REQUIRED": "Kohustuslik väli",
+      "SECURE_PASSWORD_PATTERN": "Parool peab koosnema vähemalt 8 tähemärgist ja sisaldama 1 väikest tähemärki, 1 suurt tähemärki, 1 numbrit ja 1 erimärki ~!?*@#$%^&-_=+[{]}.",
       "CONFIRM_REQUIRED": "Kohustuslik väli",
       "CRUDPERMISSIONS_REQUIRED": "Kohustuslik väli",
       "PASSWORD_OLDPASSWORD_MATCH": "Uus parool peab erinema eelmisest",
       "USERPROFILE_REQUIRED": "Kohustuslik väli",
       "WHATSAPPCAPACITY_REQUIRED": "Kohustuslik väli"
     },
-    "ACCOUNT": "Account",
-    "VOICE": "Voice",
-    "CREATED_AT": "Created At",
-    "ROLE": "Role",
-    "PERSONAL_INFO": "Personal Info",
-    "DESCRIPTION": "Description",
-    "CHANGE_AVATAR": "Change Avatar",
-    "GENERAL": "General",
-    "INTERNAL": "Internal",
+    "ACCOUNT": "Konto",
+    "VOICE": "Hääl",
+    "CREATED_AT": "Loomisaeg",
+    "ROLE": "Roll",
+    "PERSONAL_INFO": "Isiklik Teave",
+    "DESCRIPTION": "Kirjeldus",
+    "CHANGE_AVATAR": "Muuda Avatari",
+    "GENERAL": "Üldine",
+    "INTERNAL": "Sisemine",
     "TRANSPORT": "Transport",
-    "ALLOWCODECS": "Allowed Codecs",
+    "ALLOWCODECS": "Lubatud Koodeks",
     "HELP": {
-      "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: 5060",
-      "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)",
-      "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",
-      "APIKEY": "Selle võtme haldamiseks kasutage tööriistaribal nuppu „API võtmehaldur”",
+      "LAST_PASSWORD_RESET_AT": "Parooli muutmise viimane kuupäev ja kellaaeg. Kui Turvapaketti Üldine Säte on lubatud, aegub parool 90 päeva pärast.",
+      "DTLSCERTFILE": "Link kehtivale TLS sertifikaadile(.crt file). Vaikimisi väärtus: '/etc/pki/tls/certs/motion.crt'.",
+      "DTLSPRIVATEKEY": "Link sertifikaadi privaatvõtmele(.key file). Vaikimisi väärtus: '/etc/pki/tls/private/motion.key'.",
+      "ALLOWCODECS": "Lubatud Koodeks eelistusjärjekorras",
+      "TRANSPORT": "Seadista vaikimisi transport eelistusjärjekorras",
+      "HOST": "Kuidas leida klienti - IP või hosti nimi. Kui soovid, et telefon registreeriks ennast, kasuta võtmesõna dünaamikat Host IP asemel",
+      "NAT": "Muudab Asteriski käitumist kliendi jaokstilemüüri taga. Kui mõni komaga eraldatud valikutest on 'ei', Asterisk ignoreerib teisi sätteid ja seadistab nat=no",
+      "SIPEXPIRES": "Vaikimisi: 160",
+      "SIPPORT": "Vaikimisi: 5060",
+      "TYPE": "Määratleb SIP rolli asteriskis. Kasutaja: kasutatakse sissetuleva autentimiseks - Partner: väljuvate kõnede jaoks - Sõbrad: katab mõlemad ülaltoodud tunnused",
+      "CHATCAPACITY": "Maksimaalne samaaegsete kanali suhtluste arv agendi kohta (0=piiramatu)",
+      "MAILCAPACITY": "Maksimaalne samaaegsete kanali suhtluste arv agendi kohta(0=piiramatu)",
+      "FAXCAPACITY": "Maksimaalne samaaegsete kanali suhtluste arv agendi kohta(0=piiramatu)",
+      "SMSCAPACITY": "Maksimaalne samaaegsete kanali suhtluste arv agendi kohta(0=piiramatu)",
+      "OPENCHANNELCAPACITY": "Maksimaalne samaaegsete kanali suhtluste arv agendi kohta(0=piiramatu)",
+      "CALLGROUP": "Agendi kõnegrupp",
+      "PICKUPGROUP": "Grupp, milles agent saab kõnedele vastata",
+      "USERNAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
+      "ENCRYPTION": "SRTP (Turvaline Reaalaja Protokoll) krüptimine",
+      "APIKEY": "Selle võtme haldamiseks kasutage tööriistaribal nuppu ā€˛API võtmehaldurā€¯",
       "BLOCKED": "Juurdepääsu lukustamine / avamine",
       "CUSTOM_DASHBOARDS_PERMISSIONS": "Kohandatud juhtpaneelide õigusi hallatakse moodulis Tööriistad",
-      "DISABLED": "valige uuesti deaktiveerimiseks deaktiveerimine / tühistamine",
+      "DISABLED": "Vali uuesti deaktiveerimiseks deaktiveerimine / tühistamine",
       "ENABLEAUTOMATICSCREENRECORDING": "Funktsioon on saadaval ainult häälkanalite jaoks",
       "SAVE_PERMISSIONS": "Kõik sektsioonid, mis sisaldavad ootel muudatusi, salvestatakse",
       "WHATSAPPCAPACITY": "Maksimaalne samaaegsete kanalite interaktsioonide arv agendi kohta (0 = piiramatu)",
       "WSS_PORT": "Vaikimisi: 8089",
       "AD_SSO_ENABLED": "Logige sisse oma Active Directory mandaatidega"
     },
-    "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": "Uus Parool",
+    "CONFIRM_PASSWORD": "Kinnita Parool",
+    "CHANGE_PASSWORD": "Muuda Parooli",
+    "CHANGEPASSWORD_AGENT": "Muuda Parooli",
+    "CHANGEPASSWORD_USER": "Muuda Parooli",
+    "CHANGEPASSWORD_TELEPHONE": "Muuda Parooli",
+    "LOGININPAUSE": "Sisselogimine Pausis",
     "HOST": "Host",
     "NAT": "NAT",
     "CHANSPY": "ChanSpy",
-    "OTHER_CHANNELS": "Other Channels",
-    "CHATCAPACITY": "Chat Capacity",
-    "MAILCAPACITY": "Email Capacity",
-    "FAXCAPACITY": "Fax Capacity",
-    "SMSCAPACITY": "Sms Capacity",
-    "OPENCHANNELCAPACITY": "Open Channel Capacity",
-    "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",
+    "OTHER_CHANNELS": "Teised Kanalid",
+    "CHATCAPACITY": "Vestluse Võimsus",
+    "MAILCAPACITY": "E-posti Maht",
+    "FAXCAPACITY": "Faksi Maht",
+    "SMSCAPACITY": "SMSi Maht",
+    "OPENCHANNELCAPACITY": "Avatud Kanali Maht",
+    "MOTIONBAR": "Liikumisriba",
+    "SETTINGS": "Sätted",
+    "AUTOANSWER": "Automaatvastus",
+    "ENABLESETTINGS": "Luba Sätted",
+    "CALL_FORWARDING": "Kõne Suunamine",
+    "UNCONDITIONAL": "Tingimusteta",
+    "UNCONDITIONALNUMBER": "Tingimusteta Number",
+    "NOREPLY": "Vastamine puudub",
+    "NOREPLYNUMBER": "Number, millele ei saa vastata",
+    "BUSY": "Hõivatud",
+    "BUSYNUMBER": "Hõivatud Number",
+    "REMOTE_CONTROL": "Kaugjuhtimine",
+    "REMOTECONTROL": "Kaugjuhtimine",
+    "REMOTECONTROLPORT": "Kaugjuhtimise Port",
     "SIP": "SIP",
-    "SIPEXPIRES": "SIP Expires [sec]",
+    "SIPEXPIRES": "SIP aegub [sek]",
     "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_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_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_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",
-    "SHOWWEBCONTROL": "Typology",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "PENALTY": "Trahv",
+    "ACCOUNTNAME": "Konto Nimi",
+    "ADD_TELEPHONE": "Lisa Telefon",
+    "EDIT_TELEPHONE": "Redigeeri Telefoni",
+    "DELETE_TELEPHONE": "Kustuta Telefon",
+    "TEAMS": "Tiimid",
+    "DELETE_TEAM": "Kustuta Tiim",
+    "AGENTADD_TEAM": "Lisa Agendid Tiimile",
+    "EDIT_TEAM": "Redigeeri Tiimi",
+    "TYPE": "Tüüp",
+    "TELEPHONES": "Telefonid",
+    "CALLERID": "Helistaja ID",
+    "ENABLERECORDING": "Luba Salvestamine",
+    "STAFF": "Personal",
+    "ID": "ID",
+    "NEW_USER": "Uus Kasutaja",
+    "NEW_AGENT": "Uus Agent",
+    "NEW_TELEPHONE": "Uus Telefon",
+    "NEW_TEAM": "Uus Tiim",
+    "ADD_TEAM": "Lisa Tiim",
+    "JOIN_QUEUE": "Liitu Järjekorraga",
+    "CAPACITY": "Maht",
+    "AUTOINTERNAL": "Genereeri automaatselt sisemine number",
+    "ADD_AGENT_TO_TEAM": "Lisa Agent Tiimi",
+    "TEAMADD_AGENT": "Lisa Agent Tiimi",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "PERMISSIONS": "Load",
+    "ADD_AGENT_TO_QUEUE": "Lisa Agent Järjekorda",
+    "ALL_MODULES_AVAILABLE": "Kõik moodulid on saadaval",
+    "CALLGROUP": "Helistamise Grupp",
+    "PICKUPGROUP": "Vastuvõtu Grupp",
+    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Lisa Agent Järjekorra Kampaaniasse",
+    "QUEUEADD_AGENT_VOICE_INBOUND": "Lisa Agent Hääle Järjekordadesse",
+    "QUEUEADD_AGENT_CHAT_INBOUND": "Lisa Agent Vestluse Järjekordadesse",
+    "QUEUEADD_AGENT_MAIL_INBOUND": "Lisa Agent E-maili Järjekordadesse",
+    "QUEUEADD_AGENT_SMS_INBOUND": "Lisa Agent SMSi Järjekordadesse",
+    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Lisa Agent Avatud Kanali Järjekordadesse",
+    "QUEUEADD_AGENT_FAX_INBOUND": "Lisa Agent Faksi Järjekordadesse",
+    "QUEUEADD_USER_VOICE_INBOUND": "Lisa Kasutaja Hääle Järjekordadesse",
+    "QUEUEADD_USER_CHAT_INBOUND": "Lisa Kasutaja Vestluse Järjekordadesse",
+    "QUEUEADD_USER_MAIL_INBOUND": "Lisa Kasutaja E-maili Järjekordadesse",
+    "QUEUEADD_USER_SMS_INBOUND": "Lisa Kasutaja SMSi Järjekordadesse",
+    "QUEUEADD_USER_OPENCHANNEL_INBOUND": "Lisa Kasutaja Avatud Kanali Järjekordadesse",
+    "QUEUEADD_USER_FAX_INBOUND": "Lisa Kasutaja Faksi Järjekordadesse",
+    "ALL_TEAMS": "Kõik Tiimid",
+    "SELECTED_TEAMS": "Valitud Tiimid",
+    "SELECTED_AGENTS": "Valitud Agendid",
+    "ALL_QUEUES_VOICE_OUTBOUND": "Kõik Järjekorra Kampaaniad",
+    "SELECTED_QUEUES_VOICE_OUTBOUND": "Valitud Järjekorra Kampaaniad",
+    "ALL_QUEUES_VOICE_INBOUND": "Kõik Hääle Järjekorrad",
+    "SELECTED_QUEUES_VOICE_INBOUND": "Valitud Hääle Järjekorrad",
+    "ALL_QUEUES_CHAT_INBOUND": "Kõik Vestluse  Järjekorrad",
+    "SELECTED_QUEUES_CHAT_INBOUND": "Valitud Vestluse Järjekorrad",
+    "ALL_QUEUES_MAIL_INBOUND": "Kõik E-maili Järjekorrad",
+    "SELECTED_QUEUES_MAIL_INBOUND": "Valitud E-maili Järjekorrad",
+    "ALL_QUEUES_SMS_INBOUND": "Kõik SMSi Järjekorrad",
+    "SELECTED_QUEUES_SMS_INBOUND": "Valitud SMSi Järjekorrad",
+    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Kõik Avatud Kanali Järjekorrad",
+    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "vatud Kanali Järjekorrad",
+    "ALL_QUEUES_FAX_INBOUND": "Kõik Faksi Järjekorrad",
+    "SELECTED_QUEUES_FAX_INBOUND": "Valitud Faksi Järjekorrad",
+    "VOICEMAIL": "Kõnepost",
+    "SHOWWEBCONTROL": "Tüpoloogia",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "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",
-    "OPENCHANNEL": "Open Channel",
-    "FAX": "Fax",
-    "QUEUEADD_USER_VOICE_OUTBOUND": "Add User to Queue Campaigns",
-    "MONITOREXTENSION": "Record calls to user extension",
-    "EDITPERMISSIONS": "Editing Permissions",
-    "READANDEDIT": "Read, Edit",
-    "READANDEDITANDDELETE": "Read, Edit, Delete",
-    "GENERAL_PERMISSIONS": "General",
-    "ENABLEMESSENGER": "Enable Internal Messenger",
-    "OUTBOUNDPROXY": "Oubound Proxy",
-    "PHONE": "Phone",
-    "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_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_OPENCHANNELACCOUNTS": "Add Open Channel Account to User",
-    "ALL_OPENCHANNELACCOUNTS": "All Open Channel Accounts",
-    "SELECTED_OPENCHANNELACCOUNTS": "Selected Open Channel Accounts",
-    "ADD_USERPROFILE": "Lisage kasutaja profiil",
-    "ALL_WHATSAPP_QUEUES": "Kõik WhatsApi järjekorrad",
+    "CALLFORWARDING": "Kõne Suunamine",
+    "DND": "Ära tülita pausi jooksul",
+    "UNANSWEREDCALLBADGE": "Kuva vastamata kõnede märki",
+    "ENABLEDTMFTONE": "Luba Dtmf toonid",
+    "AUTOANSWERDELAY": "Automaatvastuse Viivitus [s]",
+    "ENCRYPTION": "Krüptimine",
+    "CHANNELS": "Kanalid",
+    "CHAT": "Vestlus",
+    "SMS": "SMS",
+    "OPENCHANNEL": "Avatud Kanal",
+    "FAX": "Faks",
+    "QUEUEADD_USER_VOICE_OUTBOUND": "Lisa Kasutaja Järjekorra Kampaaniasse",
+    "MONITOREXTENSION": "Sakvesta kõne Kasutaja laiendusse",
+    "EDITPERMISSIONS": "Redigeerimise Luba",
+    "READANDEDIT": "Loe, Redigeeri",
+    "READANDEDITANDDELETE": "Loe, Redigeeri, Kustuta",
+    "GENERAL_PERMISSIONS": "Üldine",
+    "ENABLEMESSENGER": "Luba Sisemine Messenger",
+    "OUTBOUNDPROXY": "Väljuv Puhver",
+    "PHONE": "Telefon",
+    "MOBILE": "Mobiil",
+    "PREFIXREQUIRED": "Eesliide Nõutav",
+    "MANAGE_PERMISSIONS": "Halda Lubasid",
+    "USERADD_VOICEQUEUES": "Lisa Hääle Järjekord Kasutajale",
+    "ALL_VOICEQUEUES": "Kõik Hääle Järjekorrad",
+    "SELECTED_VOICEQUEUES": "Valitud Hääle Järjekorrad",
+    "USERADD_CHATQUEUES": "Lisa Vestluse Järjekord Kasutajale",
+    "ALL_CHATQUEUES": "Kõik Vestluse Järjekorrad",
+    "SELECTED_CHATQUEUES": "Valitud E-maili Järjekorrad",
+    "USERADD_MAILQUEUES": "Lisa E-maili Järjekord Kasutajale",
+    "ALL_MAILQUEUES": "Kõik E-maili Järjekorrad",
+    "SELECTED_MAILQUEUES": "Valitud Vestluse Järjekorrad",
+    "USERADD_SMSQUEUES": "Lisa SMS Järjekord Kasutajale",
+    "ALL_SMSQUEUES": "Kõik SMS Järjekorrad",
+    "SELECTED_SMSQUEUES": "Valitud SMS Järjekorrad",
+    "USERADD_FAXQUEUES": "Lisa Faksi Järjekord Kasutajale",
+    "ALL_FAXQUEUES": "Kõik Faksi Järjekorrad",
+    "SELECTED_FAXQUEUES": "Valitud Faksi Järjekorrad",
+    "USERADD_OPENCHANNELQUEUES": "Lisa Avatud Kanali Järjekord Kasutajale",
+    "ALL_OPENCHANNELQUEUES": "Kõik Avatud Kanali Järjekorrad",
+    "SELECTED_OPENCHANNELQUEUES": "Valitud Avatud Kanali Järjekorrad",
+    "USERADD_PROJECTS": "Lisa Cally Square Projekt Kasutajale",
+    "ALL_PROJECTS": "Kõik Cally Square Projektid",
+    "SELECTED_PROJECTS": "Valitud Cally Square Projektid",
+    "USERADD_CHATWEBSITES": "Lisa Vestluse Veebisait Kasutajale",
+    "ALL_CHATWEBSITES": "Kõik Vestluse Veebisaidid",
+    "SELECTED_CHATWEBSITES": "Valitud Vestluse Veebisaidid",
+    "USERADD_QUEUECAMPAIGNS": "Lisa Järjekorra Kampaania Kasutajale",
+    "ALL_QUEUECAMPAIGNS": "Kõik Järjekorra Kampaaniad",
+    "SELECTED_QUEUECAMPAIGNS": "Valitud Järjekorra Kampaaniad",
+    "USERADD_MAILACCOUNTS": "Lisa E-maili Konto Kasutajale",
+    "ALL_MAILACCOUNTS": "Kõik E-maili Kontod",
+    "SELECTED_MAILACCOUNTS": "Valitud E-maili Kontod",
+    "USERADD_FAXACCOUNTS": "Lisa Faksi Kontod Kasutajale",
+    "ALL_FAXACCOUNTS": "Kõik Faksi Kontod",
+    "SELECTED_FAXACCOUNTS": "Valitud Faksi Kontod",
+    "USERADD_SMSACCOUNTS": "Lisa SMS Konto Kasutajale",
+    "ALL_SMSACCOUNTS": "Kõik SMS Kontod",
+    "SELECTED_SMSACCOUNTS": "Valitud SMS Kontod",
+    "USERADD_OPENCHANNELACCOUNTS": "Lisa Avatud Kanali Konto Kasutajale",
+    "ALL_OPENCHANNELACCOUNTS": "Kõik Avatud Kanali Kontod",
+    "SELECTED_OPENCHANNELACCOUNTS": "Valitud Avatud Kanali Kontod",
+    "ADD_USERPROFILE": "Lisa kasutaja profiil",
+    "ALL_QUEUES_WHATSAPP_INBOUND": "Kõik WhatsApi järjekorrad",
     "ALL_WHATSAPPACCOUNTS": "Kõik WhatsApi kontod",
-    "ALL_WHATSAPPQUEUES": "Kõik Whataspi järjekorrad",
+    "ALL_WHATSAPPQUEUES": "Kõik Whataspi jäjekorrad",
     "APIKEY": "API-võti",
     "APIKEYMANAGER_USER": "API võtmehaldur",
     "BLOCKED": "Lukustatud",
     "CANCEL": "Tühista",
     "CLONE_USERPROFILE": "Kloonide kasutaja profiil",
-    "CLOSE": "Sulge",
-    "CONFIRM": "Kinnitage",
+    "CLOSE": "Sule",
+    "CONFIRM": "Kinnita",
     "CRUDPERMISSIONS": "Loa tüüp",
     "DELETE_PERMISSION": "Kustuta",
     "DELETE_USERPROFILE": "Kustuta kasutaja profiil",
     "ENABLEAUTOMATICSCREENRECORDING": "Luba automaatne ekraanil salvestamine",
     "ENABLESCREENRECORDINGBYAGENT": "Ekraani salvestamise lubamine agendi poolt",
     "ENABLEVIDEOECORDING": "Luba videosalvestus",
-    "GENERATE": "Genereerima",
+    "GENERATE": "Genereeri",
     "MANAGE_API_KEY": "API võtmehaldur",
     "MODULES": "Moodulid",
     "NEW_USERPROFILE": "Uus kasutajaprofiil",
     "PERMISSIONS_SECTION_SHOW": "Kuva jaotis kasutajale",
     "PERMISSIONS_SECTION_TITLE": "{{sectionName}} õigused",
     "PERMISSIONS_SELECTED_RESOURCES": "Valitud ressursid",
-    "PERMISSIONS_SELECT_REPORT_TYPE": "Valige aruande tüüp",
-    "PERMISSIONS_SELECT_SECTION": "Valige jaotis",
-    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Teil pole lubatud ressurssi luua",
-    "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "Teil pole lubatud valitud sektsiooni juurde pääseda",
+    "PERMISSIONS_SELECT_REPORT_TYPE": "Vali aruande tüüp",
+    "PERMISSIONS_SELECT_SECTION": "Vali jaotis",
+    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Pole lubatud ressurssi luua",
+    "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "Pole lubatud valitud sektsiooni juurde pääseda",
     "PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE": "Volitamata tegevus",
     "PERMISSIONS_WARNING_CLOSE": "Teil on salvestamata muudatusi. Kas soovite kindlasti väljuda salvestamata?",
     "PERMISSIONS_WARNING_ENABLE_ALL": "Kõik {{sectionName}} alajaotised ja nende ressursid lubatakse. Kas soovite kindlasti jätkata?",
-    "ADD_AGENT_TO_WHATSAPP_QUEUES": "Lisage agent WhatsApp'i järjekorda",
-    "QUEUEADD_USER_WHATSAPP_INBOUND": "Lisage kasutaja WhatsApp'i järjekorda",
+    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Lisage agent WhatsAppi järjekorda",
+    "QUEUEADD_USER_WHATSAPP_INBOUND": "Lisage kasutaja WhatsAppi järjekorda",
     "QUEUES_ASSOCIATION": "{{channel}} Järjekordade liit",
     "READ_PERMISSION": "Loe",
-    "REGENERATE": "Regenereerige",
+    "REGENERATE": "Regenereeri",
     "REMOVE": "Eemalda",
     "REPORT_TYPE": "Aruande tüüp",
     "SECTIONS": "Sektsioonid",
-    "SELECTED_WHATSAPP_QUEUES": "Valitud WhatsApi järjekorrad",
+    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Valitud WhatsApi järjekorrad",
     "SELECTED_WHATSAPPACCOUNTS": "Valitud WhatsApi kontod",
     "SELECTED_WHATSAPPQUEUES": "Valitud WhatsApi järjekorrad",
     "SUMMARY": "Kokkuvõte",
-    "TEAMS_ASSOCIATION": "Võistkondade liit",
-    "USERADD_WHATSAPPACCOUNTS": "Lisage kasutajale WhatsApi konto",
-    "USERADD_WHATSAPPQUEUES": "Lisage kasutajale Whataspp Queue",
+    "TEAMS_ASSOCIATION": "Tiimidee liit",
+    "USERADD_WHATSAPPACCOUNTS": "Lisa kasutajale WhatsApi konto",
+    "USERADD_WHATSAPPQUEUES": "Lisa kasutajale WhatasApi Järjekord",
     "USERPROFILE": "Kasutajaprofiil",
     "USERPROFILES": "Kasutajaprofiilid",
     "VIDEOSUPPORT": "Video tugi",
-    "WHATSAPP": "WhatsApp-pistik",
-    "WHATSAPPCAPACITY": "WhatsApp-pistiku maht",
-    "MASK_SENSITIVE_DATA": "Maski tundlikud andmed",
+    "WHATSAPP": "WhatsApp ühendus",
+    "WHATSAPPCAPACITY": "WhatsApp ühenduse maht",
+    "MASK_SENSITIVE_DATA": "Maskeeri tundlikud andmed",
     "WSS_PORT": "WSS-port",
     "ATTACHMENTS": "Manused",
     "CALLYSQUARE_RECORDINGS": "Cally Square salvestused",
-    "CONTACT_MANAGER_LISTS": "Kontaktihalduri loendid",
+    "CONTACT_MANAGER_LISTS": "Kontakti Halduri loendid",
     "DOWNLOADS": "Allalaadimised",
     "DOWNLOAD_PERMISSIONS": "Allalaadimisõigused",
     "JSCRIPTY_SESSIONS": "Jscripty seansid",
-    "OMNICHANNEL_INTERACTIONS": "Omikanalilised koostoimed",
+    "OMNICHANNEL_INTERACTIONS": "Mitme kanaliga suhtlused",
     "SCREEN_RECORDINGS": "Ekraanisalvestused",
     "VOICE_RECORDINGS": "Helisalvestised",
     "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "Eelvaatekõnede puhul ignoreerige agendi katkestuse olekut",
     "SELECT_RECALLME_CAMPAIGN": "Valige Meenuta mind kampaania",
-    "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_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_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",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "Kõik WhatsApi järjekorrad",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Lisage agent WhatsApp'i järjekorda",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Valitud WhatsApi järjekorrad",
     "AD_SSO_ENABLED": "Active Directory SSO",
     "AUTHENTICATION": "Autentimine",
     "CLIENT_LOGS": "Kliendi logid",
     "CLIENT_LOGS_LOGLEVEL": "Logitase: {{logLevel}}",
     "CLIENT_LOGS_LOGLEVEL_SELECT": "Valige minimaalne logimise tase (raskusaste)",
     "CLIENT_LOGS_DISABLED_MSG": "Kliendilogid on teie kasutaja jaoks keelatud",
-    "CLIENT_LOGS_ENABLED_MSG": "Teie kasutaja jaoks on kliendilogid lubatud",
-    "AUTO_ANSWER": "Automaatne vastus",
-    "CHAT_AUTOANSWER": "Vestluse automaatne vastus",
-    "CHAT_AUTOANSWERDELAY": "Vestluse automaatse vastuse viivitus [s]",
-    "EMAIL_AUTOANSWER": "Meili automaatne vastus",
-    "EMAIL_AUTOANSWERDELAY": "Meili automaatse vastuse viivitus [s]",
-    "FAX_AUTOANSWER": "Faksi automaatne vastus",
-    "FAX_AUTOANSWERDELAY": "Faksi automaatvastuse viivitus [s]",
-    "OPENCHANNEL_AUTOANSWER": "Openchanneli automaatne vastus",
-    "OPENCHANNEL_AUTOANSWERDELAY": "Avatud kanali automaatvastuse viivitus [s]",
-    "SMS_AUTOANSWER": "Automaatne SMS-vastus",
-    "SMS_AUTOANSWERDELAY": "SMS-i automaatvastuse viivitus [s]",
-    "WHATSAPP_AUTOANSWER": "Whatsapp automaatne vastus",
-    "WHATSAPP_AUTOANSWERDELAY": "Whatsapi automaatvastuse viivitus [s]"
+    "CLIENT_LOGS_ENABLED_MSG": "Teie kasutaja jaoks on kliendilogid lubatud"
   }
 }
index 48b85d3..e2ccdbf 100644 (file)
 {
   "TOOLS": {
-    "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",
-    "CLONE_CUSTOMDASHBOARD": "Clone Custom Dashboard",
+    "BOT": "Häälbot",
+    "CLONE_TRUNK": "Magistraali Kloonimine",
+    "DISPOSITIONS": "Kasutused",
+    "NEW_DISPOSITION": "Uud Kasutus",
+    "ADD_DISPOSITION": "Lisa Kasutus",
+    "EDIT_DISPOSITION": "Redigeeri Kasutust",
+    "DELETE_DISPOSITION": "Kustuta Kasutus",
+    "RUN_SCHEDULE": "Käivita graafik",
+    "SENDIFEMPTY": "Saada, kui on tühi",
+    "NEXTCONTACT": "Järgmine",
+    "OUTBOUND_ROUTE": "Väljuv Teekond",
+    "EDIT_DASHBOARDITEM": "Redigeeri Töölaua Vidinat",
+    "FONTSIZE": "Fonsi Suurus",
+    "CLONE_CUSTOMDASHBOARD": "Klooni Kohandatud Töölud",
     "LINK": "Link [https://]",
-    "BACKGROUND": "Background",
-    "FOREGROUND": "Foreground",
-    "NONE": "None",
-    "TOTAL": "Total",
-    "ABANDONED": "Abandoned",
-    "WAITING": "Waiting",
-    "TALKING": "Talking",
-    "ANSWERED": "Answered",
-    "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",
-    "PATH": "Absolute Path",
-    "ALL_USERS": "All Users",
-    "SELECTED_USERS": "Selected Users",
-    "ADD_WIDGET": "Add Widget",
-    "COLOR": "Color",
-    "FAX": "Fax",
-    "INTERACTION": "Interaction",
-    "MESSAGE": "Message",
+    "BACKGROUND": "Taust",
+    "FOREGROUND": "Esiplaan",
+    "NONE": "Pole ühtegi",
+    "TOTAL": "Kokku",
+    "ABANDONED": "Tagasilükatud",
+    "WAITING": "Ootel",
+    "TALKING": "Rääkimine",
+    "ANSWERED": "Vastatud",
+    "UNMANAGED": "Haldamata",
+    "CUSTOMTYPE": "Kohandatud [tee]",
+    "WEBREPORT": "Veebi Raport",
+    "PIECHART": "Sektordiagramm",
+    "MULTIBARCHART": "Tulpdiagramm",
+    "MOVE_WIDGET": "Liiguta Vidinat",
+    "USERADD_CUSTOMDASHBOARD": "Lisa Kasutaja Õigused",
+    "GOTODASHBOARD_CUSTOMDASHBOARD": "Mine eelvaate töölauale",
+    "GOTO_CUSTOMDASHBOARD": "Mine eelvaate töölauale",
+    "METRIC": "Mõõdik",
+    "FILTERVOICEQUEUES": "Filtreeri Hääle Järjekorrad",
+    "SERIE1": "Seeria 1",
+    "SERIE2": "Seeria 2",
+    "SERIE3": "Seeria 3",
+    "REFRESH": "Värskenda [s]",
+    "FORMAT": "Formaat",
+    "PATH": "Absoluutne tee",
+    "ALL_USERS": "Kõik Kasutajad",
+    "SELECTED_USERS": "Valitud Kasutajad",
+    "ADD_WIDGET": "Lisa Vidin",
+    "COLOR": "Värv",
+    "FAX": "Faks",
+    "INTERACTION": "Suhtlus",
+    "MESSAGE": "Sõnum",
     "T38PT_UDPTL": "T38pt Udptl",
-    "CALL": "Call",
-    "NAME": "Name",
-    "TRUNKS": "Trunks",
-    "SEARCH_FOR_ANYONE": "Search",
+    "CALL": "Kõne",
+    "NAME": "Nimi",
+    "TRUNKS": "Magistraalid",
+    "SEARCH_FOR_ANYONE": "Otsi",
     "ERRORS": {
-      "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",
-      "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",
-      "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",
+      "NAME_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab võrduma {{maks}}",
+      "TITLE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab võrduma {{maks}}",
+      "REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "REFRESH_REQUIRED": "Kohustuslik väli",
+      "FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "FONTSIZE_REQUIRED": "Kohustuslik väli",
+      "PATH_REQUIRED": "Kohustuslik väli",
+      "FORMAT_REQUIRED": "Kohustuslik väli",
+      "REPORT_REQUIRED": "Kohustuslik väli",
+      "TYPE_REQUIRED": "Kohustuslik väli",
+      "VALUE_REQUIRED": "Kohustuslik väli",
+      "ACCOUNT_REQUIRED": "Kohustuslik väli",
+      "FIELD_REQUIRED": "Kohustuslik väli",
+      "NAME_REQUIRED": "Kohustuslik väli",
+      "HOST_REQUIRED": "Kohustuslik väli",
+      "DEFAULTUSER_REQUIRED": "Kohustuslik väli",
+      "CALLERID_REQUIRED": "Kohustuslik väli",
+      "KEY_REQUIRED": "Kohustuslik väli",
+      "CONFIRM_NOT_MATCH": "Paroolid ei ühti",
+      "VALIDITYSTART_REQUIRED": "Kohustuslik väli",
+      "VALIDITYEND_REQUIRED": "Kohustuslik väli",
+      "MONTHDAY_REQUIRED": "Kohustuslik väli",
+      "HOUR_REQUIRED": "Kohustuslik väli",
+      "CONTENT_REQUIRED": "Kohustuslik väli",
+      "URL_REQUIRED": "Kohustuslik väli",
+      "URL_MUST_VALID_URL": "Vale formaat",
+      "APPLICATION_REQUIRED": "Kohustuslik väli",
+      "ARGUMENTS_REQUIRED": "Kohustuslik väli",
+      "NAME_MUST_VALID_PATTERN": "Vale formaat",
+      "POLLING_INTERVAL_REQUIRED": "Kohustuslik väli",
+      "TITLE_REQUIRED": "Kohustuslik väli",
+      "EMAILADDRESS_REQUIRED": "Kohustuslik väli",
+      "EVENTVARIABLES_REQUIRED": "Kohustuslik väli",
+      "INTEGRATION_REQUIRED": "Kohustuslik väli",
+      "LIST_REQUIRED": "Kohustuslik väli",
+      "TEMPLATE_REQUIRED": "Kohustuslik väli",
+      "AUTOCREATECONTACT_REQUIRED": "Kohustuslik väli",
+      "OUTBOUNDROUTE_REQUIRED": "Kohustuslik väli",
+      "QUEUE_REQUIRED": "Kohustuslik väli",
+      "TIME_RANGE_TO_REQUIRED": "Kohustuslik väli",
+      "WEEK_DAYS_TO_REQUIRED": "Kohustuslik väli",
+      "MONTH_DAYS_TO_REQUIRED": "Kohustuslik väli",
+      "MONTH_TO_REQUIRED": "Kohustuslik väli",
+      "TIME_RANGE_FROM_INVALID": "Vale formaat",
+      "TIME_RANGE_TO_INVALID": "Vale formaat",
+      "ACTION_REQUIRED": "Kohustuslik väli",
+      "CONFIGURATION_REQUIRED": "Kohustuslik väli",
+      "PROJECT_REQUIRED": "Kohustuslik väli",
+      "LOCATION_REQUIRED": "Kohustuslik väli",
+      "OUTPUT_REQUIRED": "Kohustuslik väli",
+      "REPORTTYPE_REQUIRED": "Kohustuslik väli",
+      "REPORTFOLDER_REQUIRED": "Kohustuslik väli",
+      "REPORTSUBFOLDER_REQUIRED": "Kohustuslik väli",
       "AGENT_REQUIRED": "Kohustuslik väli",
       "INFO_REQUIRED": "Kohustuslik väli",
       "SCRIPT_REQUIRED": "Kohustuslik väli",
       "IGNOREDIALERCONTACTID_REQUIRED": "Ignoreeri helistaja kontakti ID väli on kohustuslik"
     },
     "HOST": "Host",
-    "SECRET": "Secret",
-    "DEFAULTUSER": "Default User",
-    "DESCRIPTION": "Description",
-    "ADD_TRUNK": "Add Trunk",
+    "SECRET": "Saladus",
+    "DEFAULTUSER": "Vaikimisi Kasutaja",
+    "DESCRIPTION": "Kirjeldus",
+    "ADD_TRUNK": "Lisa Magistraal",
     "HELP": {
-      "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) ",
-      "BODY": "If not filled out, the default value will be sent",
+      "T38PT_UDPTL": "Es: jah,liiasus,maxdatagram=400",
+      "SECRET": "Autentimise parool",
+      "HOST": "Domeen või hosti nimi",
+      "DEFAULTUSER": "Autentimise kasutajanimi",
+      "CALLERID": "Helistaja ID, formaadis \"nimi\" <number>",
+      "REGISTRY": "Registri string, kui on teenusepakkuja poolt nõutav, reeglina vaikimisi kasutaja:secret@host",
+      "FROMDOMAIN": "Vaikimisi seatud Kellelt:domeen SIP sõnumites, tegutsedes kui SIP ua (klient). Mõned sihtkohad nõuavad kohustuslikku identiteedinime ainuüksi IP-aadressi asemel",
+      "FROMUSER": "Mille järgi sinu teenusepakkuja sind ära tunneb. How your provider knows you. See tähendab, millist kasutajat sisestada helistaja ID asemel kõnede paigutamisel partnerile (teine SIP puhver). Kehtib ainult tüüp=partner korral.",
+      "OUTBOUNDPROXY": "IP-address või DNS SRV nimi (välja arvatud _sip._udp prefix): SRV nimi, hostinimi, või väljuva SIP puhvri IP-aadress. Saada väljuv signaliseerimine sellele puhvrile, mitte otse seadmetele. Kehtib ainult tüüp=partner korral.",
+      "PORT": "SIP pordi number",
+      "CONTEXT": "Kontekst magistraali jaoks",
+      "TYPE": "Määra SIPi roll asteriskis. Kasutaja: kasutatakse sisenevate autentimiseks - Partner: väljuvatele kõnedele - Sõber: katab mõlemad plaltoodud tunnused.",
+      "DTMFMODE": "Kuidas DTMF (Multisageduslik kakstoonvalimine) saadetakse. RFC2833: vaikimisi režiim, DTMF saadetakse koos RTP-ga, kuid väljaspool helivoogu. INBAND: DTMF saadetakse jooksva vestluse helivoos, mis on kuuldav kõlaritest. Eeldab kõrget CPU laetuse taset. INFO: Ehkki tegemist on väga usaldusväärse meetodiga, ei ole see toetatud kõikide PBX seadmete poolt ja paljude SIP Magistraalide poolt.",
+      "NAT": "Muudab Asteriski käitumise kliendi jaoks tulemüüri taga. Kui mõni komadega eraldatud valikutest on 'ei', Asterisk ignoreerib mistahes muid sätteid ja seadistab nat=no.",
+      "QUALIFY": "Tuvasta, millal on SIP saavutatav",
+      "ALLOWCODECS": "Lubatud koodeks eelistusjärjekorras",
+      "INSECURE": "Täpsusta, kuidas käsitleda ühendusi partneritega, lubades ebaturvalisi sätteid",
+      "CALL_LIMIT": "Sissetulevate ja väljaminevate samaaegsete kõnede piitnumber",
+      "DIRECTMEDIA": "Asterisk proovib vaikimisi ümber suunata RTP meedium voo liikumist otse kutsujalt kutsutavale. Mõned seadmed seda ei toeta (eriti kui üks neist on NATi taga). Vaikimisi seadistus on JAH. Kui sul on kõik kliendid NATi taga, või soovid Asteriski püsimist audio teel mõnel muul põhjusel, siis on soovituslik see välja lülitada.",
+      "CALLCOUNTER": "Aktiveeri seadmetel kõnede loendur",
+      "ADD_PHONE_TO_URI": "Määra, kui teenusepakkuja nõuab ';kasutaja=telefon' URLil",
+      "TRUST_REMOTE_PARTY_ID": "Määra, kui Kaugosaleja ID-d peaks usaldama",
+      "SEND_REMOTE_PARTY_ID_HEADER": "Määra, kui Kaugosaleja ID tuleb saata (vaikimisi on EI)",
+      "ENCRYPTION": "Kas pakkuda SRTP krüpteeritud meediumi (ja üksnes SRTP krüpteeritud meedium) väljuvatele kõnedele partneri jaoks. Kõned nurjuvad HANGUPCAUSE=58, kui partner ei toeta SRTP-d.  Vaikimisi väärtus on Ei",
+      "TRANSPORT": "Seadista vaikimisi transpordid, eelistusjärjekorras",
+      "OTHERFIELDS": "Muud väljad magistraali konf failides lisamiseks. Järgi vaikimisi asteriski formaati (võti=väärtus), iga väli eraldi real",
+      "EMAILADDRESS": "Lisa üks või mitu aadressi komadega eraldatult (näiteks john.doe@xcally.com, jane.miller@xcally.com)",
+      "EMAILCCADDRESS": "Lisa üks või mitu aadressi komadega eraldatult (näiteks john.doe@xcally.com, jane.miller@xcally.com)",
+      "EMAILBCCADDRESS": "Lisa üks või mitu aadressi komadega eraldatult (näiteks john.doe@xcally.com, jane.miller@xcally.com)",
+      "NAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
+      "EVENTVARIABLES": "Kui aktiveeritud, lisab see kõik sündmuse muutujad URL-le (soovituslik väärtus=Ei. Määra Jah üksnes hindamise eesmärgil) ",
+      "BODY": "Kui ei ole täidetud, saadetakse vaikeväärtus",
       "HEADERS": "Märkus. Päiste jaotis peab olema RAW JSON-vormingus {\"võti\": \"väärtus\"}\nMärkus: kui seda ei täideta, saadetakse vaikeväärtus",
-      "INFO": "Sisestage pealkiri",
-      "SCRIPT": "Sisestage skript",
-      "SCRIPT_INFO": "Sisestage skripti kirjeldus",
-      "SCRIPT_TYPE": "Sisestage skripti tüpoloogia (nt curl, bash ...)",
-      "TIMEOUT": "Taotle sekundit sekundit. Väärtus peab olema vahemikus 1–10 ja vaikeväärtus 5.",
+      "INFO": "Sisesta pealkiri",
+      "SCRIPT": "Sisesta skript",
+      "SCRIPT_INFO": "Sisesta skripti kirjeldus",
+      "SCRIPT_TYPE": "Sisesta skripti tüpoloogia (nt curl, bash ...)",
+      "TIMEOUT": "Taotle sekundit. Väärtus peab olema vahemikus 1ā€“10 ja vaikeväärtus 5.",
       "MANAGED": "Lõpetatud interaktsioonide koguarv",
       "OPENED": "Aktiivsete interaktsioonide koguarv"
     },
-    "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",
-    "DTMFMODE": "DTMF Mode",
+    "EDIT_TRUNK": "Muuda Magistraali",
+    "DELETE_TRUNK": "Kustuta Magistraal",
+    "CREATED_AT": "Loomisaeg",
+    "SETTINGS": "Sätted",
+    "ADVANCED": "Täpsem",
+    "OTHER": "Muu",
+    "ACTIVE": "Aktiivne",
+    "CONTEXT": "Kontekst",
+    "CALLERID": "Helistaja ID",
+    "TYPE": "Tüüp",
+    "DTMFMODE": "DTMF Režiim",
     "NAT": "NAT",
-    "QUALIFY": "Qualify",
-    "ALLOWCODECS": "Allowed Codecs",
-    "INSECURE": "Insecure",
-    "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",
+    "QUALIFY": "Kvalifitseerima",
+    "ALLOWCODECS": "Lubatud Koodeks",
+    "INSECURE": "Ebaturvaline",
+    "REGISTRY": "Register",
+    "DIRECTMEDIA": "Otsene Meedium",
+    "CALLCOUNTER": "Kõnede Loendur",
+    "FROMDOMAIN": "Domeenilt",
+    "FROMUSER": "Kasutajalt",
+    "OUTBOUNDPROXY": "Väljaminev Puhver",
+    "ADD_PHONE_TO_URI": "Lisa Telefon URLi",
+    "TRUST_REMOTE_PARTY_ID": "Usalda Kaugosaleja ID-d",
+    "SEND_REMOTE_PARTY_ID_HEADER": "Saada Kaugosalejale ID  Päis",
+    "ENCRYPTION": "Krüpteerimine",
     "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",
+    "SAVE": "Salvesta",
+    "VARIABLES": "Muutujad",
+    "ADD_VARIABLE": "Lisa Muutuja",
+    "EDIT_VARIABLE": "Redigeeri Muutuja",
+    "DELETE_VARIABLE": "Kustuta Muutuja",
+    "SELECTED": "Valitud",
+    "SELECT_ALL": "Vali Kõik",
+    "SELECT_NONE": "Ära Vali Ühtegi",
+    "TAGS": "Sildid",
+    "ADD_TAG": "Lisa Silt",
+    "EDIT_TAG": "Redigeeri Silti",
+    "DELETE_TAG": "Kustuta Silt",
+    "PAUSES": "Pausile",
+    "ADD_PAUSE": "Lisa Paus",
+    "EDIT_PAUSE": "Redigeeri Pausi",
+    "DELETE_PAUSE": "Kustuta Paus",
+    "CANNEDANSWERS": "Salvestatud Vastused",
+    "ADD_CANNEDANSWER": "Lisa Salvestatud Vastus",
+    "EDIT_CANNEDANSWER": "Redigeeri Salvestatud Vastus",
+    "DELETE_CANNEDANSWER": "Kustuta Salvestatud Vastus",
+    "KEY": "Võti",
+    "VALUE": "Väärtus",
+    "SOUNDS": "Helid",
+    "EDIT_SOUND": "Redigeeri Heli",
+    "DELETE_SOUND": "Kustuta Heli",
+    "CANCEL": "Tühista",
+    "FINISH": "Lõpeta",
+    "DROP_TO_UPLOAD": "Kukuta Üleslaadimiseks",
+    "UPLOADING": "Üleslaadimine",
+    "TRIGGERS": "Käivitamised",
+    "EDIT_TRIGGER": "Redigeeri Käivitust",
+    "DELETE_TRIGGER": "Kustuta Käivitus",
+    "ADD_TRIGGER": "Lisa Käivitus",
+    "DELETE": "Kustuta",
+    "AUTOMATIONS": "Automaatika",
+    "EDIT_AUTOMATION": "Redigeeri Automaatikat",
+    "DELETE_AUTOMATION": "Kustuta Automaatika",
+    "ADD_AUTOMATION": "Lisa Automaatika",
+    "INTERVALS": "Intervallid",
+    "EDIT_INTERVAL": "Redigeeri Intervalli",
+    "DELETE_INTERVAL": "Kustuta Intervall",
+    "ADD_INTERVAL": "Lisa Intervall",
+    "TOOLS": "Tööriistad",
+    "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",
-    "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",
+    "DOWNLOAD_SOUND": "Laadi alla Heli",
+    "UPLOAD_SOUND": "Tööriistad",
+    "CHANNEL": "Kanal",
+    "NEW_TRIGGER": "Uus Käivitus",
+    "GENERAL": "Üldine",
+    "STATUS": "Staatus",
+    "CONDITIONS&ACTIONS": "Tingimused ja Tegevused",
+    "ALLCONDITIONS": "Täida kõik need tingimused:",
+    "ANYCONDITIONS": "Täida mistahes milline neist tingimustest:",
+    "ACTIONS": "Tegevused:",
+    "NEW_AUTOMATION": "Uus Automaatika",
+    "TIMEOUT": "Aegumine",
+    "PEERSTATUS": "Partneri Staatus",
+    "CALL_LIMIT": "Kõnede Limiit",
+    "OTHERFIELDS": "Muud Väljad",
+    "NEW_VARIABLE": "Uus Muutuja",
+    "NEW_TAG": "Uus Silt",
+    "NEW_PAUSE": "Uus Paus",
+    "NEW_CANNEDANSWER": "Uus Salvestatud Vastus",
+    "CONFIRM_PASSWORD": "Kinnita Parool",
+    "NEW_TRUNK": "Uus Magistraal",
+    "FROM": "Kellelt",
+    "TO": "Kellele",
+    "WEEKDAY": "Nädalapäev",
+    "MONTHDAY": "Kuupäev",
+    "MONTH": "Kuu",
+    "ALWAYS": "Alati",
+    "MON": "Esmaspäev",
+    "TUE": "Teisipäev",
+    "WED": "Kolmapäev",
+    "THU": "Neljapäev",
+    "FRI": "Reede",
+    "SAT": "Laupäev",
+    "SUN": "Pühapäev",
+    "JAN": "Jaanuar",
+    "FEB": "Veebruar",
+    "MAR": "Märts",
+    "APR": "Aprill",
+    "MAY": "Mai",
+    "JUN": "Juuni",
+    "JUL": "Juuli",
     "AUG": "August",
     "SEP": "September",
-    "OCT": "October",
+    "OCT": "Oktober",
     "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",
-    "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",
+    "DEC": "Detsember",
+    "PASSWORD": "Parool",
+    "CUSTOMDASHBOARDS": "Kohandatud Töölaud",
+    "NEW_CUSTOMDASHBOARD": "Uus Kohandatud Töölaud",
+    "ADD_CUSTOMDASHBOARD": "Lisa Kohandatud Töölaud",
+    "EDIT_CUSTOMDASHBOARD": "Redigeeri Kohandatud Töölauda",
+    "DELETE_CUSTOMDASHBOARD": "Kustuta Kohandatud Töölaud",
+    "SCHEDULER": "Plaanija",
+    "NEW_SCHEDULE": "Uus Plaanija",
+    "ADD_SCHEDULE": "Lisa Plaanija",
+    "EDIT_SCHEDULE": "Redigeeri Plaanijat",
+    "DELETE_SCHEDULE": "Kustuta Plaanija",
+    "SENDMAIL": "Saada E-mail",
+    "CONFIGURATION": "Konfiguratsioon",
+    "MAIL": "E-mail",
+    "REPORTTYPE": "Rapordi Tüüp",
+    "REPORT": "Raport",
+    "OUTPUT": "Väljund",
+    "EXECUTEON": "Käivita",
+    "REPORTRANGE": "Rapordi Vahemik",
+    "VALIDITYSTART": "Alguse Aeg",
+    "VALIDITYEND": "Lõpu Aeg",
+    "EXECUTEEVERY": "Täida iga",
+    "ACCOUNT": "Konto",
+    "EMAILADDRESS": "E-maili aadress",
+    "EMAILCCADDRESS": "Koopia",
+    "EMAILBCCADDRESS": "Salakoopia",
+    "CURRENTDAY": "Jooksev Päev",
+    "DAILY": "Igapäevane",
+    "WEEKLY": "Iganädalane",
+    "MONTHLY": "Igakuine",
+    "PREVIOUS_DAY": "Eemine päev",
+    "LAST_SEVEN_DAYS": "Viimased Seitse Päev",
+    "LAST_THIRTY_DAYS": "Viimased Kolmkümmend Päeva",
+    "LAST_MONTH": "Viimane Kuu",
+    "WEEKDAYS": "Nädalapäevad",
+    "HOUR": "Tund",
+    "DEFAULT": "Vaikimisi",
     "CSV": "CSV",
     "PDF": "PDF",
-    "15MIN": "15 minutes",
-    "30MIN": "30 minutes",
-    "1H": "1 hour",
-    "VOICE": "Voice",
-    "CHAT": "Chat",
+    "15MIN": "15 minutit",
+    "30MIN": "30 minutit",
+    "1H": "1 tund",
+    "VOICE": "Hääl",
+    "CHAT": "Vestlus",
     "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",
-    "EQUALS": "Equals",
-    "NOT_EQUALS": "Not Equals",
-    "CONTACT_MANAGER": "Contacts Manager",
-    "INTEGRATIONS": "Integrations",
-    "MOTIONBAR": "Motion Bar",
+    "OPENCHANNEL": "Ava Kanal",
+    "TEMPLATES": "Mallid",
+    "EDIT_TEMPLATE": "Redigeeri Malli",
+    "DELETE_TEMPLATE": "Kustuta Mall",
+    "NEW_TEMPLATE": "Uus Mall",
+    "ADD_TEMPLATE": "Lisa Mall",
+    "CONTENT": "Sisu",
+    "FIELD": "Väli",
+    "NO_ANYCONDITION_AVAILABLE": "Tingimusi pole saadaval",
+    "NO_ALLCONDITION_AVAILABLE": "Tingimusi pole saadaval",
+    "NO_ACTION_AVAILABLE": "Tegevusi pole saadaval",
+    "ACTION": "Tegevus",
+    "EDIT_ANYCONDITION": "Redigeeri Tingimust",
+    "DELETE_ANYCONDITION": "Kustuta Tingimus",
+    "NEW_ANYCONDITION": "Uus Tingimus",
+    "ADD_ANYCONDITION": "Lisa Tingimus",
+    "EDIT_ALLCONDITION": "Redigeeri Tingimust",
+    "DELETE_ALLCONDITION": "Kustuta Tingimus",
+    "NEW_ALLCONDITION": "Uus Tingimus",
+    "ADD_ALLCONDITION": "Lisa Tingimus",
+    "EDIT_ACTION": "Redigeeri Tegevust",
+    "DELETE_ACTION": "Kustuta Tegevus",
+    "NEW_ACTION": "Uus Tegevus",
+    "ADD_ACTION": "Lisa Tegevus",
+    "QUEUE": "Järjekord",
+    "CALL_STATUS": "Kõne Staatus",
+    "OUTBOUNDROUTE": "Väljaminev Tee",
+    "EQUALS": "Võrduvad",
+    "NOT_EQUALS": "Ei Võrdu",
+    "CONTACT_MANAGER": "Kontaktide Haldur",
+    "INTEGRATIONS": "Integratsioonid",
+    "MOTIONBAR": "Liikumisriba",
     "JSCRIPTY": "Jscripty",
-    "URL_FORWARD": "URL Forward",
-    "WEB_POPUP": "Web Popup",
-    "LIST": "List",
-    "INTEGRATION": "Integration",
-    "TEMPLATE": "Template",
+    "URL_FORWARD": "URL Edastamine",
+    "WEB_POPUP": "Veebi Hüpik",
+    "LIST": "Loend",
+    "INTEGRATION": "Integratsioon",
+    "TEMPLATE": "Mall",
     "URL": "URL",
-    "APPLICATION": "Application",
+    "APPLICATION": "Rakendus",
     "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",
+    "NO_APPS_AVAILABLE": "Rakendusi pole saadaval",
+    "NEW_INTERVAL": "Uus Intervall",
+    "OPERATOR": "Operaator",
+    "NO_INTERVALS_AVAILABLE": "Intervallid pole saadaval",
+    "YES": "Jah",
+    "NO": "Ei",
+    "SUBJECT": "Teema",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "BROWSER": "Brauser",
+    "INTERVAL": "Intervall",
     "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",
+    "TIME_RANGE": "Ajavahemik",
+    "WEEK_DAYS": "Nädalapäevad",
+    "MONTH_DAYS": "Kuupäevad",
+    "MONTHS": "Kuud",
+    "DROP_TO_UPLOAD_MESSAGE": "Kukuta audiofailid siia üleslaadimiseks. Ainulty MP3, WAV, GSM - Maks. 15MB",
+    "POLLING_INTERVAL": "Küsitlemise Intervall (sekundid)",
+    "DASHBOARD": "Töölaud",
+    "NEW_DASHBOARDITEM": "Uus Töölaua Vidin",
+    "COUNTER": "Loendur",
     "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": "Kell",
+    "ADD_DASHBOARDITEM": "Lisa Töölaua Vidin",
+    "EDIT_WIDGET": "Redigeeri Vidinat",
+    "DELETE_WIDGET": "Kustuta Vidin",
+    "FLIP_WIDGET": "Pööra Vidinat",
+    "TITLE": "Pealkiri",
+    "UPDATE": "Uuenda",
+    "LAYOUT": "Paigutus",
+    "BACKGROUND_COLOR": "Taustavärv",
+    "FOREGROUND_COLOR": "Esiplaani Värv",
+    "FOREGROUND_TITLE_COLOR": "Esiplaani Pealkirja Värv",
+    "THEME": "Teema",
+    "LIGHT": "Hele",
+    "DARK": "Tume",
+    "TIMEZONE": "Ajavöönd",
+    "DIGITAL_FORMAT": "Numbriline Kuupäeva Formaat",
+    "TOOLS_QUERY": "Päring",
+    "SELECT": "Vali",
+    "WHERE": "Kus",
+    "BACK": "Tagasi",
+    "PROJECT": "Projekt",
+    "GOTOREALTIME_TRUNK": "Mine Reaalaja Magistraali",
+    "GOTO_TRUNK": "Mine Magistraali",
     "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",
+    "MINUTES": "Minutid",
+    "HOURLY": "Igatunnine",
+    "YEARLY": "Iga-aastane",
+    "EVERY": "Iga",
+    "MINUTE": "Minut",
+    "ON_SECOND": "Teisel",
+    "HOUR_ON_MINUTE": "Tund minutil",
+    "AND_SECOND": "Ja teine",
     "DAY_AT": "Day at",
-    "START_TIME": "Start Time",
+    "START_TIME": "Algusaeg",
     "ON_THE": "On the",
     "OF_EVERY": "Of every",
     "MONTH_AT": "Month at",
     "AT": "At",
-    "LAST": "Last",
-    "LASTUNIT": "Unit",
-    "MAILACCOUNT": "Email Account",
+    "LAST": "Eelmine",
+    "LASTUNIT": "Üksus",
+    "MAILACCOUNT": "E-maili Konto",
     "OF": "of",
-    "PAST_THE_HOUR": "Past the hour",
-    "DAY": "Day",
-    "WEEK": "Week",
-    "YEAR": "Year",
+    "PAST_THE_HOUR": "Üle täistunni",
+    "DAY": "Päev",
+    "WEEK": "Nädal",
+    "YEAR": "Aasta",
     "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",
-    "WINDOWWIDTH": "Window Width(px)",
-    "WINDOWHEIGHT": "Window Height(px)",
-    "BODY": "Body",
-    "REPORTFOLDER": "Report Folder",
-    "REPORTSUBFOLDER": "Report Subfolder",
+    "PAI": "P-Tõendatud-Identiteet",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "EVENTVARIABLES": "Sündmuse Muutujad",
+    "AUTOCREATECONTACT": "Loo kontakt automaatselt",
+    "LOCATION": "Asukoht",
+    "NEW_TAB": "Uus Vahekaart",
+    "NEW_WINDOW": "Uus Aken",
+    "WINDOWWIDTH": "Akna Laius(px)",
+    "WINDOWHEIGHT": "kna Kõrgus(px)",
+    "BODY": "Sisu",
+    "REPORTFOLDER": "Rapordi Kaust",
+    "REPORTSUBFOLDER": "Rapordi Alamkaust",
     "AGENT": "Agent",
     "HEADERS": "Päised",
     "MOTION_TAB": "Uus esindaja juhtpaneeli vahekaart",
     "SCRIPT_INFO": "Info",
     "SCRIPT_TYPE": "Tüüp",
     "VIDEOSUPPORT": "Video tugi",
-    "WHATSAPP": "WhatsApp-pistik",
+    "WHATSAPP": "WhatsApp-ühendus",
     "AUTOCREATE_FIELD": "Automaatne välja loomine",
-    "GLOBALS": "Globaalid",
+    "GLOBALS": "Üldised",
     "SEARCH_FIELDS": "Otsinguväljad",
     "STANDARD": "Standard",
-    "MOTION_BAR": "Motion Bar",
+    "MOTION_BAR": "Liikumisriba",
     "ALL": "Kõik",
-    "ALL_DISPOSITIONS": "Kõik dispositsioonid",
-    "FIRST_LEVEL_DISPOSITION": "Esimese taseme käsutus",
+    "ALL_DISPOSITIONS": "Kõik kasutused",
+    "FIRST_LEVEL_DISPOSITION": "Esimese taseme kasutus",
     "LEVEL": "Tase",
     "SECOND_LEVEL_DISPOSITION": "Teise taseme korraldus",
     "SELECT_LEVEL": "Valige tase",
     "TITLEFONTSIZE": "Fondi pealkirja suurus",
-    "ADD_CONTACTITEMTYPE": "Lisama",
-    "CONTACTITEMTYPE": "Kontaktüksuste tüübid",
-    "NEW_CONTACTITEMTYPE": "Uus kontaktüksuse tüüp",
-    "ORDER_BY": "Telli",
-    "RGBBACKGROUNDCOLOR": "RGB taustavärv",
     "EMAIL": "E -post",
     "FILTERCHATWEBSITES": "Filtreeri vestluse veebisaite",
     "FILTEREMAILACCOUNTS": "E -posti kontode filtreerimine",
     "OPENED_TEXT": "Avatud interaktsioonid",
     "IGNOREDIALERCONTACTID": "Ignoreeri helistaja kontakti ID",
     "MAIL_SUBSTATUS": "Meili alamolek",
-    "OFFLINE_MESSAGE": "Võrguühenduseta sõnum",
-    "DELETE_CONTACTITEMTYPE": "Kustuta kontaktiüksuse tüüp",
-    "EDIT_CONTACTITEMTYPE": "Redigeerige kontaktiüksuse tüüpi",
-    "ORDER_BY_NUMERIC": "Järjestus välja järgi peab olema numbriline!"
+    "OFFLINE_MESSAGE": "Võrguühenduseta sõnum"
   }
 }
index 116fbad..3b220a5 100644 (file)
     "CLOSEDAT": "Salvestage lõpuaeg",
     "CREATEDAT": "Loodud kell",
     "DELETE": "Kustuta",
-    "DELETE_SCREENRECORDING": "Kustutage ekraanisalvestus",
-    "DOWNLOAD_SCREENRECORDING": "Laadige alla ekraanisalvestus",
+    "DELETE_SCREENRECORDING": "Kustuta ekraanisalvestus",
+    "DOWNLOAD_SCREENRECORDING": "Laadi alla ekraanisalvestus",
     "DURATION": "Kestus",
     "EDIT_SCREENRECORDING": "Hinda ekraani salvestust",
     "FILE_NOT_FOUND": "Faili ei leitud",
     "FORMAT": "Vorming",
-    "ID": "Id",
-    "INTERACTIONID": "Koostoime ID",
-    "NO_AVAILABLE_INFO": "Pole saadaval teavet",
+    "ID": "ID",
+    "INTERACTIONID": "Suhtluse ID",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
     "NO_RATING": "Hinnang puudub",
-    "OF": "kohta",
-    "PAGE": "Leht",
+    "OF": "of",
+    "PAGE": "Lehekülg",
     "PLAY_SCREENRECORDING": "Esita ekraanisalvestus",
-    "PROPERTIES": "Omadused",
+    "PROPERTIES": "Atribuudid",
     "RATING": "Hinnang",
-    "RECORDENDTIME": "Salvestage lõpuaeg",
-    "RECORDSTARTTIME": "Salvestage algusaeg",
-    "ROWSPERPAGE": "Ridasid lehel",
+    "RECORDENDTIME": "Salvesta lõpuaeg",
+    "RECORDSTARTTIME": "Salvesta algusaeg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "SAVE": "Salvesta",
     "SCREENRECORDINGS": "Ekraanisalvestused",
     "SEARCH_FOR_ANYONE": "Otsing",
-    "STARTEDAT": "Salvestage algusaeg",
+    "STARTEDAT": "Salvesta algusaeg",
     "UPDATEDAT": "Viimane uuendus",
     "VIDEO": "Video",
     "WRONG_EXTENSION": "Failis on vale laiend"
index e8fc04a..fe28adb 100644 (file)
 {
   "VOICE": {
-    "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",
-    "ALL": "All",
-    "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",
+    "LOGIN_TIME": "Sisselogimise aeg",
+    "PAUSE_TIME": "Pausi aeg",
+    "ABANDONEDCALLS": "Tagasilükatud Järjekorra Kõned",
+    "WAITING_FOR_AGENTS": "Agendi ootel",
+    "ACTIVE": "Aktiivne",
+    "NO_AGENT_ONLINE": "Agente pole võrgus",
+    "PARTIALPAUSE": "Osaline Paus",
+    "STATUS": "Staatus",
+    "TIMER": "Taimer",
+    "ALL": "Kõik",
+    "IDLE": "Jõude",
+    "EDIT_TRUNK": "Redigeeri Magistraal",
+    "GOTO_VOICEQUEUE": "Mine Reaalaja Hääle Järjekorda",
+    "GOTOREALTIME_VOICEQUEUE": "Mine Reaalaja Hääle Järjekordadesse",
+    "NAME": "Nimi",
+    "LOGOUT": "Logi välja",
+    "VOICEQUEUES": "Hääle Järjekorrad",
+    "SEARCH_FOR_ANYONE": "Otsi",
+    "BACK": "Tagasi",
+    "SELECTED": "Valitud",
+    "SELECT_ALL": "Vali Kõik",
+    "SELECT_NONE": "Ära Vali Ühtegi",
+    "DELETE_VOICEDISPOSITION": "Kustuta Hääle Kasutus",
+    "EDIT_VOICEDISPOSITION": "Redigeeri Hääle Kasutust",
+    "EDIT_VOICEQUEUE": "Redigeeri Hääle Järjekorda",
+    "DELETE_VOICEQUEUE": "Kustuta Hääle Järjekord",
+    "MOHSOUNDS": "Moh Helid",
+    "STRATEGY": "Strateegia",
+    "DESCRIPTION": "Kirjeldus",
+    "ADD_VOICEQUEUE": "Lisa Hääle Järjekord",
+    "CREATED_AT": "Loomisaeg",
+    "CANT_PLAY_GSM_AUDIO_FILES": "Ei saa esitada gsm või wav49 audiofaile",
+    "APPLICATIONS_LIST": "Rakenduste Loend",
     "LEGEND": {
-      "CUSTOM_APPLICATION": "(*) - Custom application"
+      "CUSTOM_APPLICATION": "(*) - Kohandatud rakendus"
     },
     "ERRORS": {
-      "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",
+      "TRUNK_REQUIRED": "Kohustuslik väli",
+      "VARIABLE_REQUIRED": "Kohustuslik väli",
+      "NAME_REQUIRED": "Kohustuslik väli",
+      "APPLICATION_NAME_REQUIRED": "Kohustuslik väli",
+      "TIMEOUT_REQUIRED": "Kohustuslik väli",
+      "PHONENUMBER_REQUIRED": "Kohustuslik väli",
+      "CONTEXT_REQUIRED": "Kohustuslik väli",
+      "DESTINATIONPATTERN_REQUIRED": "Kohustuslik väli",
+      "FULLNAME_REQUIRED": "Kohustuslik väli",
+      "EMAIL_REQUIRED": "Kohustuslik väli",
+      "EMAIL_MUST_VALID": "Vale formaat",
+      "MAILBOX_REQUIRED": "Kohustuslik väli",
+      "PASSWORD_REQUIRED": "Kohustuslik väli",
       "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",
-      "CALLER_ID_MUST_VALID_PATTERN": "Wrong format",
+      "TIMEZONE_REQUIRED": "Kohustuslik väli",
+      "PREFIX_REQUIRED": "Kohustuslik väli",
+      "OPTIONS_REQUIRED": "Kohustuslik väli",
+      "AFTERCALLWORKDURATION_REQUIRED": "Kohustuslik väli",
+      "TECHNOLOGY/RESOURCE_REQUIRED": "Kohustuslik väli",
+      "PHONE_REQUIRED": "Kohustuslik väli",
+      "VALUE_REQUIRED": "Kohustuslik väli",
+      "EXTENSION_REQUIRED": "Kohustuslik väli",
+      "PRIORITY_REQUIRED": "Kohustuslik väli",
+      "APPLICATION_REQUIRED": "Kohustuslik väli",
+      "OUTBOUNDROUTE_REQUIRED": "Kohustuslik väli",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "NAME_MUST_VALID_PATTERN": "Vale formaat",
+      "CALLERIDALL_MUST_VALID_PATTERN": "Vale formaat",
+      "CALLER_ID_MUST_VALID_PATTERN": "Vale formaat",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Kohustuslik väli",
       "PROJECT_REQUIRED": "Kohustuslik väli",
-      "PENALTY_REQUIRED": "Peate määrama karistuse väärtuse"
+      "PENALTY_REQUIRED": "Tuleb määrata karistuse väärtus"
     },
-    "GENERAL": "General",
-    "TIMEOUT": "Timeout",
-    "MAXLENGTH": "Maximum Length",
-    "RETRY": "Retry",
-    "WRAPUPTIME": "Wrapup Time",
-    "WEIGHT": "Weight",
-    "JOINWHENEMPTY": "Join when empty",
-    "LEAVEWHENEMPTY": "Leave when empty",
+    "GENERAL": "Üldine",
+    "TIMEOUT": "Aegumine",
+    "MAXLENGTH": "Maksimaalne Pikkus",
+    "RETRY": "Proovi uuesti",
+    "WRAPUPTIME": "Lõpetamise Aeg",
+    "WEIGHT": "Kaal",
+    "JOINWHENEMPTY": "Ühine, kui on tühi",
+    "LEAVEWHENEMPTY": "Lahku, kui on tühi",
     "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",
-      "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": "Peata olek, et seadistada kohustusliku dispositsiooni ajal",
+      "TIMEOUT": "Mitu sekundit seadmele helistamiseks",
+      "MAXLENGTH": "Järjekorras ootamiseks lubatud maksimaalne helistajate arv: null tähendab piiramatu",
+      "RETRY": "Aeg sekundites ootamiseks, enne teisele agendile helistamist järjekorras, kui vaheaeg on läbi saanud",
+      "WRAPUPTIME": "Aeg sekundites, et hoida järjekorra osaline kättesaamatuna pärast kõne lõpetamist",
+      "WEIGHT": "Järjekorra kaal, et määrata prioriteet, kui liikmed on seotud mitmete järjekordadega",
+      "JOINWHENEMPTY": "Kasutatakse, et kontrollida, kas helistaja on edastatud järjekorda, kui kättesaadavaid liikmeid pole",
+      "LEAVEWHENEMPTY": "Kasutatakse, et kontrollida, kas helistajad on suunatud järjekorrast lahkuma, kui kõnele vastamiseks kättesaadavaid liikmeid pole",
+      "ANNOUNCEFREQUENCY": "Kui sageli teavitada helistaja positsiooni ja/või hinnangulist ooteaega järjekorras(null blokeerimiseks)",
+      "MINANNOUNCEFREQUENCY": "Minimaalne teavituste sagedus (kasulik, kui helistaja positsioon muutub sageli)",
+      "PERIODICANNOUNCEFREQUENCY": "Helistaja perioodiliste teavituste sagedus",
+      "ANNOUNCEPOSITIONLIMIT": "Kasutatakse, kui teavituse positsiooni on määratud, kui 'piir' või 'rohkem'",
+      "AFTERCALLWORKDURATION": "Pausi pikkus, mida käivitab Kõnele Järgnev Töö valik",
+      "MEMBERDELAY": "Sisestab viivituse enne kui helistaja ja agent ühendust saavad järjekorras",
+      "MUSICONHOLD": "Seadistab muusika klassi kindla järjekorra puhul kasutamiseks",
+      "ANNOUNCETOAGENT": "Esita teavitus agendile, kes vastab kõnele (reeglina, et teavitada teda, millisest järjekorrast helistaja tuleb)",
+      "RANDOMPERIODICANNOUNCE": "Kui jah, siis esitatakse määratud perioodilised teavitused juhuslikult",
+      "ANNOUNCEHOLDTIME": "Esitab hinnangulise ooteaja koos perioodiliste teavitustega (Jah/Ei/Üks kord)",
+      "ANNOUNCECALLERPOSITION": "Kasutatakse, et määrata, kas helistaja positsioonist järjekorras tuleb teada anda: Ei=mitte kunagi; Jah=alati; Piir=ainult kui see on piiri raames, mis on määratud teavituse-positsiooni-piiriga; Rohkem= ainult kui see on väljaspool väärtust, mis on määratud teavituse-positsiooni-piiriga",
+      "REPORTHOLDTIMEAGENT": "Lubab helistaja ooteaja teavitamist agendile järjekorras enne ühendamist",
+      "PERIODICANNOUNCE": "Perioodiliste teavituste kompleks esitamiseks (järjekorras)",
+      "HOLDTIMEANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9cOoteaegā€¯. Määramata=teavitust pole",
+      "YOUARENEXTANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9cOled nüüd järjekorras esimeneā€¯. Määramata=teavitust pole.",
+      "THEREAREANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9cThere areā€¯. Määramata=teavitust pole",
+      "WAITINGCALLSANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9ckõneootelā€¯. Määramata=teavitust pole",
+      "ESTIMATEDHOLDTIMEANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9cJooksev hinnanguline ooteaeg onā€¯. Määramata=teavitust pole",
+      "MINUTESANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9cminutitā€¯. Määramata=teavitust pole",
+      "MINUTEANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9cminutitā€¯. Määramata=teavitust pole",
+      "SECONDSANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9csekunditā€¯. Määramata=teavitust pole",
+      "THANKYOUANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9cTäname Teid kannatlikkuse eestā€¯. Määramata=teavitust pole",
+      "AFTERCALLWORK": "Kui lubatud, määratakse agent Pausile pärast kõne lõpetamist",
+      "AUTOPAUSE": "Lubab/keelab automaatse pausi agentidele, kelle kõnele vastamine nurjub. Kui lubatud, siis pannakse agent pausile kõikides järjekordades, kuhu ta kuulub.",
+      "RINGINUSE": "Vältimaks/lubamaks kõnede saatmist liikmetele, kelle staatus on Kasutusel",
+      "TIMEOUTRESTART": "Kui jah, lähtestab agendi vastamise augumist, kui HÕIVATUD või UMMIKU staatus kanalist saadakse",
+      "CONTEXT": "Lubab helistajal väljuda järjekorrast vajutades üks kord DTMF numbrimärki. Kui kontekst on täpsustatud ja helistaja sisestab numbri, püütakse seda numbrit sobitada täpsustatud kontekstiga, ning valimisplaani täitmine jätkub sealt",
+      "SETINTERFACEVARIABLES": "Kui on seadistatud jah, seadistatakse mõned muutujad just enne helistaja ühendamist järjekorra agendiga (täpsema info saamiseks vata wiki docs)",
+      "SETQUEUEVARIABLES": "Kui on seadistatud jah, seadistatakse mõned muutujad just enne helistaja ühendamist järjekorra agendiga ja järjekorrast lahkumist (täpsema info saamiseks vata wiki docs",
+      "SETQUEUEENTRYVARIABLES": "Kui on seadistatud jah, seadistatakse mõned muutujad just enne helistaja ühendamist järjekorra agendiga (täpsema info saamiseks vata wiki docs",
+      "RECORDING": "Luba kõne salvestamine",
+      "VOICEMAIL_CONTEXT": "Seotud laienduse kontekst",
+      "NAME": "ja erimärgid (._) on toetatud",
+      "CALLERIDALL": "Toetatud formaat: \"HelistajaID\" &lt;number&gt;",
+      "CALLER_ID": "Toetatud formaat: \"HelistajaID\" &lt;number&gt;",
+      "MANDATORYDISPOSITIONPAUSEID": "Pausil olek, et seadistada kohustusliku kasutuse aega",
       "SERVICELEVEL": "Teised teenustaseme seaded (vaikeväärtus = 0, SL puudub). Kasutatakse teenustaseme statistika jaoks (kõnedele vastatakse teenustaseme ajalises raamistikus)",
       "MONITORFORMAT": "Määrab salvestusfaili vormingu. Kui see on seatud passiivseks, siis kõnesid ei salvestata",
       "SAVE_ROUTES": "Marsruuti on muudetud. Ärge unustage salvestada, kui te ei soovi oma muudatusi kaotada."
     },
-    "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",
+    "MUSICONHOLD": "Muusika Ooteajal",
+    "ANNOUNCETOAGENT": "Teavita Agenti",
+    "ANNOUNCEMENTS": "Teavitused",
+    "ADVANCED": "Täpsem",
+    "ANNOUNCEFREQUENCY": "Teavituse Sagedus",
+    "MINANNOUNCEFREQUENCY": "Minimaalne Teavituse Sagedus",
+    "PERIODICANNOUNCEFREQUENCY": "Perioodiline Teavitamise Sagedus",
+    "RANDOMPERIODICANNOUNCE": "Juhuslik Perioodiline Teavitus",
+    "ANNOUNCEHOLDTIME": "Teavita Ooteaeg",
+    "ANNOUNCECALLERPOSITION": "Teavita Helistaja Positsioon",
+    "ANNOUNCEPOSITIONLIMIT": "Teavita Positsiooni Piir",
+    "REPORTHOLDTIMEAGENT": "Anna teada Agendi Ooteaeg",
+    "PERIODICANNOUNCE": "Perioodiline Teavitus",
+    "HOLDTIMEANNOUNCE": "Ooteaja Teavitus",
+    "YOUARENEXTANNOUNCE": "'Olete järgmine' Teavitus",
+    "THEREAREANNOUNCE": "'Seal on' Teavitus",
+    "WAITINGCALLSANNOUNCE": "Ootel Kõnede Teavitus",
+    "ESTIMATEDHOLDTIMEANNOUNCE": "Hinnangulise OOteaja Teavitus",
+    "MINUTESANNOUNCE": "Minutite Teavitus",
+    "MINUTEANNOUNCE": "Minuti Teavitus",
+    "SECONDSANNOUNCE": "Sekundite Teavitus",
+    "THANKYOUANNOUNCE": "'Täname Teid' Teavitus",
+    "AUTOPAUSE": "Automaatne Paus",
+    "AFTERCALLWORK": "Tööjärgne Kõne",
+    "AFTERCALLWORKDURATION": "Tööjärgse Kõne Kestus",
+    "RINGINUSE": "Helin Kasutusel",
+    "MEMBERDELAY": "Osalise Viivitus",
+    "TIMEOUTRESTART": "Aegumise Lähtestamine",
+    "MONITORFORMAT": "Salvestamise Formaat",
+    "SETINTERFACEVARIABLES": "Seadista Liidese Muutujad",
+    "SETQUEUEVARIABLES": "Seadista Järjekorra Muutujad",
+    "SETQUEUEENTRYVARIABLES": "Seadista Järjekorra Kirje Muutujad",
+    "VARIABLE": "Muutuja",
+    "CONTEXT": "Kontekst",
+    "SAVE": "Salvesta",
+    "SETTINGS": "Sätted",
+    "INBOUNDROUTES": "Sissetulevad Teed",
+    "PHONENUMBER": "Telefoninumber",
+    "ADD_INBOUNDROUTE": "Lisa Sissetulev Tee",
+    "EDIT_INBOUNDROUTE": "Redigeeri Sissetulev Tee",
+    "DELETE_INBOUNDROUTE": "Kustuta Sissetulev Tee",
+    "ACTIONS": "Tegevused",
+    "OUTBOUNDROUTES": "Väljaminevad Teed",
+    "DESTINATIONPATTERN": "Sihtkoha Muster",
+    "ADD_OUTBOUNDROUTE": "Lisa Väljaminev Tee",
+    "EDIT_OUTBOUNDROUTE": "Redigeeri Väljaminev Tee",
+    "DELETE_OUTBOUNDROUTE": "Kustuta Väljaminev Tee",
+    "CUTDIGITS": "Eemalda Numbrid",
+    "RECORDING": "Salvestamine",
+    "RECORDINGFORMAT": "Salvestamise formaat",
+    "INTERNALROUTES": "Sisemised Teed",
+    "ADD_INTERNALROUTE": "Lisa Sisemine Tee",
+    "EDIT_INTERNALROUTE": "Redigeeri Sisemine Tee",
+    "DELETE_INTERNALROUTE": "Kustuta Sisemine Tee",
+    "CONTEXTS": "Kontekstid",
+    "ADD_CONTEXT": "Lisa Kontekst",
+    "EDIT_CONTEXT": "Redigeeri Konteksti",
+    "DELETE_CONTEXT": "Kustuta Kontekst",
+    "VOICEMAILS": "Kõnepostid",
+    "ADD_VOICEMAIL": "Lisa Kõnepost",
+    "EDIT_VOICEMAIL": "Redigeeri Kõneposti",
+    "DELETE_VOICEMAIL": "Kustuta Kõnepost",
+    "FULLNAME": "Täisnimi",
+    "EMAIL": "E-mail",
+    "MAILBOX": "Postkast",
+    "PASSWORD": "Parool",
+    "CONFIRM_PASSWORD": "Kinnita Parool",
+    "TIMEZONE": "Ajavöönd",
+    "ATTACH": "Lisa",
+    "ENVELOPE": "Ümbrik",
+    "DELETE": "Kustuta",
+    "EMAILBODY": "E-maili Sisu",
+    "EMAILSUBJECT": "E-maili Teema",
+    "MAXSECONDS": "Maks Sekundeid",
+    "MAXMESSAGES": "Maks Sõnumeid",
+    "MESSAGES": "Sõnumid",
+    "SORT": "Sordi",
+    "ADD_MUSICONHOLD": "Lisa Ootemuusika",
+    "MUSICONHOLDS": "Ootemuusika",
+    "EDIT_MUSICONHOLD": "Redigeeri Ootemuusikat",
+    "DELETE_MUSICONHOLD": "Kustuta Ootemuusika",
+    "DIRECTORY": "Kataloog",
+    "AUDIOFILES": "Audiofailid",
+    "RECORDINGS": "Salvestused",
     "CHANSPY": "ChanSpy",
-    "PREFIX": "Prefix",
-    "OPTIONS": "Options",
-    "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",
+    "PREFIX": "Eesliide",
+    "OPTIONS": "Valikud",
+    "AUTH": "Autentimine",
+    "ADD_CHANSPY": "Lisa ChanSpy",
+    "EDIT_CHANSPY": "Redigeeri ChanSpy",
+    "DELETE_CHANSPY": "Kustuta ChanSpy",
+    "AGENTS": "Agendid",
+    "TELEPHONES": "Telefonid",
+    "QUEUES": "Järjekorrad",
+    "QUEUE_CALLS": "Järjekorra Kõned",
+    "QUEUE_PARAMETERS": "Järjekorra Parameetrid",
+    "ABANDONED_CALLS": "Tagasilükatud Kõned",
+    "OUTBOUND_CALLS": "Väljuvad Kõned",
     "AGI": "Agi",
-    "DIAL": "Dial",
+    "DIAL": "Valimine",
     "CALLYSQUARE": "CallySquare",
-    "INTERNALDIAL": "Internal Dial",
-    "EXTERNALDIAL": "External Dial",
-    "RINGGROUP": "Ring Group",
-    "PLAYBACK": "Playback",
-    "QUEUE": "Queue",
-    "SET": "Set",
-    "VOICEMAIL": "Voicemail",
+    "INTERNALDIAL": "Sisemine Valimine",
+    "EXTERNALDIAL": "Välimine Valimine",
+    "RINGGROUP": "Helistamise Grupp",
+    "PLAYBACK": "Taasesitus",
+    "QUEUE": "Järjekord",
+    "SET": "Määra",
+    "VOICEMAIL": "Häälkõne",
     "GOTO": "GoTo",
-    "HANGUP": "Hangup",
-    "CUSTOM": "Custom",
-    "PROJECT": "Cally-Square Project",
-    "TECHNOLOGY/RESOURCE": "Technology/Resource",
+    "HANGUP": "Katkestamine",
+    "CUSTOM": "Kohandatud",
+    "PROJECT": "Cally-Square Projekt",
+    "TECHNOLOGY/RESOURCE": "Tehnoloogia/Ressurss",
     "URL": "URL",
-    "EDIT_APP": "Edit Application",
-    "EDIT_INTERVAL": "Edit Interval",
-    "DELETE_APP": "Delete Application",
-    "INTERVALS": "Intervals",
-    "USER": "User",
-    "TRUNK": "Trunk",
-    "PHONE": "Phone",
-    "AUDIO_FILES": "Audio Files",
-    "ANNOUNCE_OVERRIDES": "Announce Overrides",
-    "MACRO": "Macro",
+    "EDIT_APP": "Redigeeri Rakendust",
+    "EDIT_INTERVAL": "Redigeeri Intervalli",
+    "DELETE_APP": "Kustuta Rakendus",
+    "INTERVALS": "Intervallid",
+    "USER": "Kasutaja",
+    "TRUNK": "Magistraal",
+    "PHONE": "Telefon",
+    "AUDIO_FILES": "Audiofailid",
+    "ANNOUNCE_OVERRIDES": "Teavituse Tühistamine",
+    "MACRO": "Makro",
     "GOSUB": "GoSub",
-    "RULE": "Rule",
-    "POSITION": "Position",
-    "ANSWER": "Answer",
-    "VALUE": "Value",
-    "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",
+    "RULE": "Reegel",
+    "POSITION": "Positsioon",
+    "ANSWER": "Vastus",
+    "VALUE": "Väärtus",
+    "MAILBOX@CONTEXT": "Postkast ja Kontekst",
+    "EXTENSION": "Laiendus",
+    "PRIORITY": "Prioriteet",
+    "HANGUP_CAUSE": "Katkestamise Põhjus",
+    "OUTBOUNDDIAL": "Väljaminev Valimine",
+    "CALLER_ID": "Helistaja ID",
+    "NO_MESSAGE_AVAILABLE": "Sõnumeid pole saadaval",
+    "NO_SOUND_AVAILABLE": "Helisid pole saadaval",
+    "VOICERECORDINGS": "Häälsalvestused",
     "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",
+    "VOICE": "Hääl",
+    "REALTIME": "Reaalaeg",
+    "ID": "ID",
+    "VOICEMAIL_CONTEXT": "Kontekst",
+    "NO_MOHSOUND_AVAILABLE": "Ooteaja Muusika pole saadaval",
+    "FILE": "Fail",
+    "ADD_MOHSOUND": "Lisa Ootemuusika heli",
+    "DOWNLOAD_MOHSOUND": "Laadi alla Ootemuusika heli",
+    "DELETE_MOHSOUND": "Kustuta Ootemuusika heli",
+    "UNIQUEID": "Unikaalne ID",
     "AGENT": "Agent",
-    "TYPE": "Type",
-    "RATING": "Rating",
+    "TYPE": "Tüüp",
+    "RATING": "Hinnang",
     "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",
-    "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",
+    "DATE": "Kuupäev",
+    "NEW_VOICEQUEUE": "Uus Hääle Järjekord",
+    "NEW_INBOUNDROUTE": "Uus Sissetulev Tee",
+    "NEW_OUTBOUNDROUTE": "Uus Väljaminev Tee",
+    "NEW_INTERNALROUTE": "Uus Sisemine Tee",
+    "NEW_CONTEXT": "Uus Kontekst",
+    "NEW_VOICEMAIL": "Uus Kõnepost",
+    "NEW_MUSICONHOLD": "Uus Ootemuusika",
+    "NEW_CHANSPY": "Uus ChanSpy",
+    "PENALTY": "Trahv",
+    "ADD_TEAM_TO_VOICEQUEUE": "Lisa Tiim Hääle Järjekorda",
+    "ADD_AGENT_TO_VOICEQUEUE": "Lisa Agent Hääle Järjekorda",
+    "EDIT_DIAL": "Redigeeri Valimist",
+    "EDIT_AGI": "Redigeeri AGI",
+    "EDIT_INTERNALDIAL": "Redigeeri Sisemist Valimist",
+    "EDIT_EXTERNALDIAL": "Redigeeri Välimist Valimist",
+    "EDIT_RINGGROUP": "Redigeeri Helistamise Gruppi",
+    "EDIT_PLAYBACK": "Redigeeri Taasesitust",
+    "EDIT_QUEUE": "Redigeeri Järjekorda",
+    "EDIT_SET": "Redigeeri Määramist",
+    "EDIT_GOTO": "Redigeeri GoTo",
+    "EDIT_HANGUP": "Redigeeri Katkestamist",
+    "EDIT_CUSTOM": "Redigeeri Kohandatud",
+    "DURATION": "Kestus",
+    "RECEIVED_AT": "Kättesaamise aeg",
+    "YES": "Jah",
+    "NO": "Ei",
+    "HANGUPCAUSE_1": "1 = Määramata number",
+    "HANGUPCAUSE_16": "16 = Normaalne kõne puhastamine",
+    "HANGUPCAUSE_17": "17 = Kasutaja hõivatud",
+    "HANGUPCAUSE_18": "18 = Kasutaja ei vasta (telefoniseade pole ühendatud)",
+    "HANGUPCAUSE_21": "21 = Kõne tagasilükatud",
+    "HANGUPCAUSE_22": "22 = Number muudetud",
+    "HANGUPCAUSE_27": "27 = Sihtkoht ei toimi",
+    "HANGUPCAUSE_38": "38 = Võrk ei toimi",
+    "HANGUPCAUSE_41": "41 = Ajutine nurjumine",
+    "RANDOM": "Juhuslik",
+    "ALPHABETICAL": "Tähestikuline",
+    "NO_APPS_AVAILABLE": "Rakendusi pole saadaval",
+    "DOWNLOAD_VOICERECORDING": "Laadi alla Häälsalvestus",
+    "DELETE_VOICERECORDING": "Kustuta Häälsalvestus",
+    "INTERNAL": "Sisemine",
+    "PHONE_STATE": "Telefoni Olek",
+    "PHONE_STATUS": "Telefoni Staatus",
+    "TRUNK_STATUS": "Magistraali Staatus",
+    "REGISTERED": "Registreeritud",
+    "UNREGISTERED": "Registreerimata",
+    "LAGGED": "Viivitatud",
+    "REACHABLE": "Kättesaadav",
+    "UNREACHABLE": "Pole kättesaadav",
+    "UNKNOWN": "Teadmata",
+    "NOT_INUSE": "Pole Kasutusel",
+    "INUSE": "Kasutusel",
+    "BUSY": "Hõivatud",
+    "INVALID": "Kehtetu",
+    "UNAVAILABLE": "Pole kättesaadav",
+    "RINGING": "Heliseb",
+    "ONHOLD": "Ootel",
+    "RING": "Helista",
+    "UP": "Üles",
     "INFO": "Info",
-    "TRUNKS": "Trunks",
-    "REGISTRY": "Registry",
-    "NO_REGISTRY": "No Registry",
-    "LOGGED_IN": "Logged In (SIP Connected)",
-    "PAUSED": "Paused",
-    "WAITING": "Waiting",
-    "TALKING": "Talking",
+    "TRUNKS": "Magistraalid",
+    "REGISTRY": "Register",
+    "NO_REGISTRY": "Register puudub",
+    "LOGGED_IN": "Sisse logitud (SIP Ühendusega)",
+    "PAUSED": "Pausil",
+    "WAITING": "OOtel",
+    "TALKING": "Rääkimine",
     "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",
+    "CALLER": "Helistaja",
+    "TOTAL": "Kokku",
+    "ANSWERED": "Vastatud",
+    "ABANDONED": "Tagasi lükatud",
+    "UNMANAGED": "Haldamata",
+    "AVG_HOLD_TIME": "Avg Ooteaeg",
+    "AVG_DURATION": "Avg Kestus",
+    "AVG_BILLABLE": "Avg Arveldatav",
+    "SOURCE": "Allikas",
+    "DESTINATION": "Sihtkoht",
+    "REJECTED": "Katkestatud",
+    "FAILED": "Nurjunud",
+    "CALLED": "Helistatud",
+    "CONNECTED": "Ühendatud",
+    "NO_RATING": "Hinnang puudub",
+    "EDIT_VOICERECORDING": "Redigeeri Häälsalvestust",
+    "APPLICATION_NAME": "Rakenduse nimi",
+    "ARGUMENTS": "Argumendid",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "ADD_AGENT_TO_QUEUE": "Lisa Agent Järjekorda",
+    "DEFAULT_PAUSE": "VAIKIMISI PAUS",
+    "PAUSE": "Pausile",
+    "UNPAUSE": "Lõpeta Paus",
+    "REDIRECT_TO_NUMBER": "Suuna ümber Numbrile",
+    "REDIRECT_TO_AGENT": "Suuna ümber Agendile",
+    "AGENTADD_VOICEQUEUE": "Lisa Agent Hääle Järjekorda",
+    "APPLICATION": "Rakendus",
+    "FILES": "Failid",
+    "FORMAT": "Formaat",
+    "MODE": "Režiim",
+    "RECORD": "Kirje",
+    "TEAMADD_VOICEQUEUE": "Lisa Tiim Hääle Järjekorda",
+    "NEW_MOHSOUND": "Uus Ootemuusika heli",
+    "DOWNLOAD_MESSAGE": "Allalaadimine",
+    "DELETE_MESSAGE": "Kustuta",
+    "QUEUE_PARAMS": "Järjekorra Parameetrid",
+    "TOTAL_OFFERED": "Kokku Pakutud",
+    "READY": "Valmis",
+    "AGENTADD_QUEUE": "Lisa Agent Hääle Järjekorda",
+    "AGENTSADD_QUEUE": "Lisa Agents Hääle Järjekorda",
+    "ALL_TEAMS": "Kõik Tiimid",
+    "SELECTED_TEAMS": "Valitud Tiimid",
+    "ALL_AGENTS": "Kõik Agendid",
+    "SELECTED_AGENTS": "Valitud Agendid",
+    "CLOSING": "Sulgemine",
+    "TAGS": "Sildid",
+    "WAITING_FOR_AGENT": "Agentide Ootamine",
+    "EDIT_OUTBOUNDDIAL": "Redigeeri Väljuvat Valimist",
+    "ACCOUNTNAME": "Konto Nimi",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "OF": "of",
-    "DISPOSITION": "Disposition",
-    "CHAT": "Chat",
-    "MAIL": "Email",
+    "DISPOSITION": "Kasutus",
+    "CHAT": "Vestlus",
+    "MAIL": "E-mail",
     "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",
-    "DELETE_VOICEPREFIX": "Delete Prefix",
-    "OUTBOUNDROUTE": "Outbound Route",
-    "CALLERIDALL": "Caller Id",
+    "OPENCHANNEL": "Avatud Kanal",
+    "FAX": "Faks",
+    "CLEAR": "Puhasta",
+    "CALLS": "Kõned",
+    "STARTEDAT": "Algusaeg",
+    "ENDEDAT": "Lõpu aeg",
+    "TAG": "Silt",
+    "DETAILS": "Üksikasjad",
+    "BILLABLESECONDS": "Tasustatavad sekundid",
+    "ANSWEREDAT": "Vastamise aeg",
+    "NOTE": "Märge",
+    "CLOSE": "Sule",
+    "SELECT_DATE": "Vali Alguse Kuupäev",
+    "SELECT_TYPE": "Vali Tüüp",
+    "VOICEPREFIXES": "Välised Eesliited",
+    "NEW_VOICEPREFIX": "Uus Eesliide",
+    "ADD_VOICEPREFIX": "Lisa Eesliide",
+    "EDIT_VOICEPREFIX": "Redigeeri Eesliidet",
+    "AGENTADD_VOICEPREFIX": "Lisa Agent Eesliitele",
+    "DELETE_VOICEPREFIX": "Kustuta Eesliidet",
+    "OUTBOUNDROUTE": "Väljuv Tee",
+    "CALLERIDALL": "Helistaja ID",
     "CANT_DOWNLOAD_THIS_FILE": "Seda faili ei saa alla laadida",
     "DIALER": "Helistaja",
-    "DOWNLOADTRANSCRIBE_VOICERECORDING": "Laadige ärakiri alla",
+    "DOWNLOADTRANSCRIBE_VOICERECORDING": "Laadi alla transkriptsiooni häälsalvestus",
     "FAILUREREASON": "Rikke põhjus",
     "FILE_NOT_FOUND": "Faili ei leitud",
     "INBOUND": "Sissetulev",
-    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Kohustusliku dispositsiooni pausi olek",
+    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Kohustusliku kasutamise pausi olek",
     "OUTBOUND": "Väljaminev",
-    "RUNSENTIMENT_VOICERECORDING": "Run Sentiment",
-    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Käivitage transkriptsioon ja meeleolu",
-    "RUNTRANSCRIBE_VOICERECORDING": "Käivitage transkriptsioon",
+    "RUNSENTIMENT_VOICERECORDING": "Käivita Arvamus",
+    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Käivita transkriptsioon ja häälsalvestus",
+    "RUNTRANSCRIBE_VOICERECORDING": "Käivita transkriptsioon",
     "SCREENRECORDING": "Halda ekraanisalvestust",
-    "SENTIMENT": "Tunne",
-    "SENTIMENTANALYSIS": "Sentimentide analüüs",
-    "SENTIMENT_MIXED": "Segatud",
+    "SENTIMENT": "Arvamus",
+    "SENTIMENTANALYSIS": "Arvamuste analüüs",
+    "SENTIMENT_MIXED": "Kombineeritud",
     "SENTIMENT_NEGATIVE": "Negatiivne",
     "SENTIMENT_NEUTRAL": "Neutraalne",
     "SENTIMENT_POSITIVE": "Positiivne",
     "START_SCREENRECORDING": "Alusta ekraani salvestamist",
     "STOP_SCREENRECORDING": "Peata ekraanil salvestamine",
-    "TEAMS_ASSOCIATION": "Võistkondade liit",
+    "TEAMS_ASSOCIATION": "iimide liit",
     "TEXT": "Tekst",
     "TOOLTIP_SCREENRECORDING_OFF": "Ekraanisalvestus on saadaval",
     "TOOLTIP_SCREENRECORDING_ON": "Ekraanisalvestus pooleli",
-    "TRANSCRIBE": "Transkribeerida",
+    "TRANSCRIBE": "Transkribeeri",
     "TRANSCRIBESTATUS_COMPLETED": "Lõpetatud",
-    "TRANSCRIBESTATUS_FAILED": "Ebaõnnestus",
+    "TRANSCRIBESTATUS_FAILED": "Nurjunud",
     "TRANSCRIBESTATUS_IN_PROGRESS": "Pooleli",
     "TRANSCRIBESTATUS_NEW": "Uus",
-    "TRANSCRIPT": "Ärakiri",
-    "TRANSCRIPTANALYSIS": "Ärakiri ja analüüs",
+    "TRANSCRIPT": "Transkriptsioon",
+    "TRANSCRIPTANALYSIS": "Transkriptsioon ja analüüs",
     "WRONG_EXTENSION": "Failis on vale laiend",
     "SERVICELEVEL": "Teenuse tase",
     "SECOND_LEVEL_DISPOSITION": "Teise taseme korraldus",
     "THIRD_LEVEL_DISPOSITION": "Kolmanda taseme korraldus",
     "TEAMADD_VOICEPREFIX": "Lisa meeskond eesliidesse",
-    "ALIAS": "Teise nimega",
-    "MAXCAPACITY": "Maksimaalne mahutavus",
-    "WORKING": "Töötab"
+    "ALIAS": "Teise nimega"
   }
 }
index 7c8316a..e8c6282 100644 (file)
@@ -3,8 +3,8 @@
     "ERRORS": {
       "ACCESSKEYID_REQUIRED": "Kohustuslik väli",
       "ACCOUNTSID_REQUIRED": "Kohustuslik väli",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne kui",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne kui",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
       "AGENTTRANSFERTIMEOUT_REQUIRED": "Kohustuslik väli",
       "AGENT_REQUIRED": "Kohustuslik väli",
       "AGENT_TIMEOUT_REQUIRED": "Kohustuslik väli",
@@ -14,9 +14,9 @@
       "CONDITION_REQUIRED": "Kohustuslik väli",
       "DESCRIPTION_REQUIRED": "Kohustuslik väli",
       "DISPOSITION_REQUIRED": "Kohustuslik väli",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne kui",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
       "FALSEPRIORITY_REQUIRED": "Kohustuslik väli",
-      "KEY_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema võrdne {{max}}",
+      "KEY_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema võrdne {{maks}}",
       "KEY_REQUIRED": "Kohustuslik väli",
       "LANGUAGE_REQUIRED": "Kohustuslik väli",
       "LEXREGION_REQUIRED": "Kohustuslik väli",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Kohustuslik väli",
       "NAME_REQUIRED": "Kohustuslik väli",
       "PHONE_REQUIRED": "Kohustuslik väli",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne kui",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
       "PRIORITY_REQUIRED": "Kohustuslik väli",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne kui",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne kui",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
       "QUEUETRANSFERTIMEOUT_REQUIRED": "Kohustuslik väli",
       "QUEUE_REQUIRED": "Kohustuslik väli",
       "SECRETACCESSKEY_REQUIRED": "Kohustuslik väli",
       "TAG_REQUIRED": "Kohustuslik väli",
       "TEXT_REQUIRED": "Kohustuslik väli",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne kui",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne kui",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
       "TIMEOUT_REQUIRED": "Kohustuslik väli",
       "TIMES_REQUIRED": "Kohustuslik väli",
       "TOKEN_REQUIRED": "Kohustuslik väli",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne kui",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
       "TRUEPRIORITY_REQUIRED": "Kohustuslik väli",
       "TYPE_REQUIRED": "Kohustuslik väli",
       "VALUE_REQUIRED": "Kohustuslik väli",
       "VARIABLE_REQUIRED": "Kohustuslik väli",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne kui",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne kui",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Kohustuslik väli",
-      "WELCOMEMESSAGE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema võrdne {{max}}",
+      "WELCOMEMESSAGE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema võrdne {{maks}}",
       "WELCOMEMESSAGE_REQUIRED": "Kohustuslik väli",
       "CLIENTEMAIL_REQUIRED": "Kohustuslik väli",
       "PRIVATEKEY_REQUIRED": "Kohustuslik väli",
-      "PROJECTID_REQUIRED": "Kohustuslik väli",
-      "BASEURL_REQUIRED": "Kohustuslik väli"
+      "PROJECTID_REQUIRED": "Kohustuslik väli"
     },
     "HELP": {
       "LIST": "Kontaktide halduri loend, mida kasutatakse kontaktide seostamiseks",
-      "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
-      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
-      "MOTIONPROXY": "Välja peab olema järgmine vorming: <protokoll>: // <aadressiaadress> [: <port>]. Näide: https: //X.Y.Z.W",
-      "NAME": "Toetatud on ainult numbrid, tähed ja kindlad märgid (._)",
-      "RECEIVEURL": "See on automaatselt loodud API string, mida peate kasutama oma kontol olevate sõnumite vastuvõtmiseks oma WhatsApp Connectori pakkujalt (tuleb kasutada POST-meetodit): selle kopeerimiseks klõpsake lõikelaua nuppu",
-      "WELCOMEMESSAGE": "See on esimene vastussõnum, mis saadetakse uutele interaktsioonidele"
+      "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
+      "MOTIONPROXY": "Väljal peab olema järgmine vorming: <protokoll>: // <aadressiaadress> [: <port>]. Näide: https: //X.Y.Z.W",
+      "NAME": "Toetatud on ainult numbrid, tähed ja erimärgid (._)",
+      "RECEIVEURL": "See on automaatselt loodud API string, mida peab kasutama oma kontol olevate sõnumite vastuvõtmiseks oma WhatsApp Konnektori pakkujalt (tuleb kasutada POST-meetodit): selle kopeerimiseks klõpsake lõikelaua nuppu",
+      "WELCOMEMESSAGE": "See on esimene vastussõnum, mis saadetakse uutele suhtlustele"
     },
     "ACCESSKEYID": "Juurdepääsukoodi ID",
     "ACCOUNTSID": "Konto SID",
     "ACTIONS": "Tegevused",
-    "ADD_NOTE": "Lisada märkus",
-    "ADD_WHATSAPPACCOUNT": "Lisama",
-    "ADD_WHATSAPPCANNEDANSWER": "Lisage konserveeritud vastus",
-    "ADD_WHATSAPPDISPOSITION": "Lisage WhatsApp Disposition",
-    "ADD_WHATSAPPQUEUE": "Lisage järjekord WhatsApp",
+    "ADD_NOTE": "Lisa märkus",
+    "ADD_WHATSAPPACCOUNT": "Lisa",
+    "ADD_WHATSAPPCANNEDANSWER": "Lisa salvestatud vastus",
+    "ADD_WHATSAPPDISPOSITION": "Lisa WhatsAppi Kasutus",
+    "ADD_WHATSAPPQUEUE": "Lisa WhatsAppi järjekord",
     "ADVANCED": "Täpsemad",
     "AGENT": "Agent",
-    "AGENTADD_QUEUE": "Lisage agent WhatsApp'i järjekorda",
-    "AGENTADD_WHATSAPPACCOUNT": "Lisage agent WhatsApi kontole",
-    "AGENTADD_WHATSAPPQUEUE": "Lisage agent WhatsApp'i järjekorda",
-    "AGENTS": "Agentid",
-    "AGENTSADD_QUEUE": "Lisage esindajad WhatsApi järjekorda",
-    "AGENTTRANSFER": "Agent Transfer",
-    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
-    "AGENT_TIMEOUT": "Agent aegumine",
+    "AGENTADD_QUEUE": "Lisa agent WhatsAppi järjekorda",
+    "AGENTADD_WHATSAPPACCOUNT": "Lisa agent WhatsAppi kontole",
+    "AGENTADD_WHATSAPPQUEUE": "Lisa agent WhatsAppi järjekorda",
+    "AGENTS": "Agendid",
+    "AGENTSADD_QUEUE": "Lisa esindajad WhatsAppi järjekorda",
+    "AGENTTRANSFER": "Agendi Edastamine",
+    "AGENTTRANSFERTIMEOUT": "Agendi Edastamise Aegumine",
+    "AGENT_TIMEOUT": "Agendi aegumine",
     "ALL": "Kõik",
     "ALL_AGENTS": "Kõik esindajad",
-    "ALL_TEAMS": "Kõik võistkonnad",
+    "ALL_TEAMS": "Kõik tiimid",
     "AMAZONLEX": "AmazonLex",
-    "AUTHTOKEN": "Autentimismärk",
+    "AUTHTOKEN": "Autentimisluba",
     "AUTOREPLY": "Automaatne vastus",
     "BACK": "tagasi",
     "BOTNAME": "Boti nimi",
     "BUSY": "Hõivatud",
-    "CANNEDANSWERS": "Konserveeritud vastused",
-    "CANNED_ANSWER_NOT_FOUND": "Konserveeritud vastuseid ei leitud",
-    "CANNED_ANSWER_SEARCH": "Sisestage tekst konserveeritud vastusest otsimiseks",
+    "CANNEDANSWERS": "Salvestatud vastused",
+    "CANNED_ANSWER_NOT_FOUND": "Salvestatud vastuseid ei leitud",
+    "CANNED_ANSWER_SEARCH": "Sisesta tekst salvestatud vastusest otsimiseks",
     "CAPACITY": "Maht",
-    "CLOSE": "Sulge",
+    "CLOSE": "Sule",
     "CLOSED": "Suletud",
     "CLOSEMETHOD": "Sule meetod",
-    "CLOSEURL": "Sulge URL",
+    "CLOSEURL": "Suge URL",
     "COMMAND": "Käsk",
     "CONDITION": "Seisund",
     "CONTACT": "Võtke ühendust",
-    "CREATED_AT": "Loodud kell",
+    "CREATED_AT": "Loomisaeg",
     "DEFAULT_PAUSE": "Vaikimisi paus",
     "DELETE": "Kustuta",
-    "DELETE_INTERACTION": "Kustuta interaktsioon",
+    "DELETE_INTERACTION": "Kustuta suhtlus",
     "DELETE_SELECTED": "Kustuta valitud",
-    "DELETE_WHATSAPPACCOUNT": "Kustutage WhatsApi konto",
+    "DELETE_WHATSAPPACCOUNT": "Kustuta WhatsAppi konto",
     "DELETE_WHATSAPPCANNEDANSWER": "Kustutatud",
-    "DELETE_WHATSAPPDISPOSITION": "Kustutage WhatsApp Disposition",
-    "DELETE_WHATSAPPQUEUE": "Kustutage WhatsApp Queue",
+    "DELETE_WHATSAPPDISPOSITION": "Kustuta WhatsAppi Kasutus",
+    "DELETE_WHATSAPPQUEUE": "Kustuta WhatsAppi Järjekord",
     "DESCRIPTION": "Kirjeldus",
-    "DIALOGFLOW": "DialogFlow",
-    "DISPOSITION": "Dispositsioon",
-    "DISPOSITIONS": "Dispositsioonid",
-    "DOWNLOAD_INTERACTION": "Lae alla",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadige alla ilma manusteta",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Laadige alla koos manustega",
-    "EDIT_AGENT": "Redigeeri esindajat",
+    "DIALOGFLOW": "Dialoogivoog",
+    "DISPOSITION": "Kasutused",
+    "DISPOSITIONS": "Kasutused",
+    "DOWNLOAD_INTERACTION": "Laadi alla",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadi alla ilma manusteta",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Laadi alla koos manustega",
+    "EDIT_AGENT": "Redigeeri agenti",
     "EDIT_AMAZONLEX": "Redigeeri Lexi konfiguratsiooni",
     "EDIT_AUTOREPLY": "Redigeeri automaatvastust",
-    "EDIT_CLOSE": "Redigeerimine Sulge",
-    "EDIT_DIALOGFLOW": "Redigeeri DialogFlow konfiguratsiooni",
-    "EDIT_GOTOIF": "Redigeeri Gotoifi",
+    "EDIT_CLOSE": "Redigeerimine Sulgemine",
+    "EDIT_DIALOGFLOW": "Redigeeri Dialoogivoo konfiguratsiooni",
+    "EDIT_GOTOIF": "Redigeeri Gotoif",
     "EDIT_GOTOP": "Redigeeri Gotopit",
-    "EDIT_NOOP": "Redigeeri Noopi",
+    "EDIT_NOOP": "Redigeeri Noop",
     "EDIT_QUEUE": "Redigeeri järjekorda",
     "EDIT_SYSTEM": "Redigeeri süsteemi",
     "EDIT_TAG": "Redigeeri silti",
-    "EDIT_WHATSAPPACCOUNT": "Muutke WhatsApi kontot",
+    "EDIT_WHATSAPPACCOUNT": "Muuda WhatsAppi kontot",
     "EDIT_WHATSAPPCANNEDANSWER": "Redigeeri",
-    "EDIT_WHATSAPPDISPOSITION": "Muutke WhatsApi dispositsiooni",
-    "EDIT_WHATSAPPQUEUE": "Redigeeri WhatsApi järjekorda",
+    "EDIT_WHATSAPPDISPOSITION": "Muuda WhatsAppi kasutust",
+    "EDIT_WHATSAPPQUEUE": "Redigeeri WhatsAppi järjekorda",
     "FALSEPRIORITY": "Vale prioriteet",
     "GENERAL": "Kindral",
     "GOTOIF": "Gotoif",
     "GOTOP": "Gotop",
-    "GOTOREALTIME_WHATSAPPQUEUE": "Minge reaalajas WhatsApi järjekorda",
-    "GO_TO_WHATSAPPACCOUNTS": "Minge kontole",
-    "ID": "Id",
-    "IDLE": "Tühikäik",
-    "INSERT_MESSAGE_HERE": "Sisestage sõnum siia",
-    "INTERACTIONS": "Koostoimed",
-    "INTERACTIONS_WHATSAPPACCOUNT": "Minge jaotisse Interaktsioonid",
+    "GOTOREALTIME_WHATSAPPQUEUE": "Mine reaalajas WhatsAppi järjekorda",
+    "GO_TO_WHATSAPPACCOUNTS": "Mine kontole",
+    "ID": "ID",
+    "IDLE": "Jõude",
+    "INSERT_MESSAGE_HERE": "Sisesta sõnum siia",
+    "INTERACTIONS": "Suhtlused",
+    "INTERACTIONS_WHATSAPPACCOUNT": "Mine jaotisse Suhtlused",
     "KEY": "Võti",
     "LANGUAGE": "Keel",
     "LASTMESSAGE": "Viimane sõnum",
     "LOGGED_IN": "Sisse logitud (SIP ühendatud)",
     "LOGIN_TIME": "Sisselogimise aeg",
     "LOGOUT": "Logi välja",
-    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
+    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
     "MORE": "Veel",
     "MOTIONPROXY": "Puhverserver või liikumisdomeen",
     "MULTI_SELECT_TOGGLE": "Mitme valiku lülitamine",
     "NAME": "Nimi",
-    "NEW_WHATSAPPACCOUNT": "Uus WhatsApi konto",
-    "NEW_WHATSAPPCANNEDANSWER": "Uus vastus WhatsAppile",
-    "NEW_WHATSAPPDISPOSITION": "Uus seade WhatsApp",
-    "NEW_WHATSAPPQUEUE": "Uus WhatsApi järjekord",
+    "NEW_WHATSAPPACCOUNT": "Uus WhatsAppi konto",
+    "NEW_WHATSAPPCANNEDANSWER": "Uus WhatsAppi salvestatud vastus",
+    "NEW_WHATSAPPDISPOSITION": "Uus WhatsAppi kasutus",
+    "NEW_WHATSAPPQUEUE": "Uus WhatsAppi järjekord",
     "NOOP": "Noop",
     "NOTE": "Märge",
     "NOTIFICATION": "Teatamine",
-    "NOTIFICATIONSHAKE": "Raputama",
+    "NOTIFICATIONSHAKE": "Raputus",
     "NOTIFICATIONSOUND": "Heli",
     "NOTIFICATIONTEMPLATE": "Mall",
-    "NO_AGENT_ONLINE": "Pole esindajat võrgus",
-    "NO_AVAILABLE_INFO": "Pole saadaval teavet",
-    "NO_INTERACTION_AVAILABLE": "Ühtegi interaktsiooni pole saadaval",
-    "NO_WHATSAPPCANNEDANSWER_AVAILABLE": "WhatsApi konserveeritud vastuseid pole saadaval",
-    "NO_WHATSAPPDISPOSITION_AVAILABLE": "WhatsApi dispositsioonid pole saadaval",
-    "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "WhatsApi kontosid pole saadaval",
-    "OF": "kohta",
+    "NO_AGENT_ONLINE": "Agente pole võrgus",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "NO_INTERACTION_AVAILABLE": "Ühtegi suhtlust pole saadaval",
+    "NO_WHATSAPPCANNEDANSWER_AVAILABLE": "WhatsAppi salvestatud vastuseid pole saadaval",
+    "NO_WHATSAPPDISPOSITION_AVAILABLE": "WhatsAppi kasutused pole saadaval",
+    "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "WhatsAppi kontosid pole saadaval",
+    "OF": "of",
     "OPENED": "Avatud",
     "PAGE": "Leht",
     "PARTIALPAUSE": "Osaline paus",
     "PROXY": "Puhverserver",
     "QUEUE": "Järjekord",
     "QUEUES": "Järjekorrad",
-    "QUEUETRANSFER": "Järjekorra ülekandmine",
-    "QUEUETRANSFERTIMEOUT": "Järjekorra ülekandmise ajalõpp",
+    "QUEUETRANSFER": "Järjekorra edastamine",
+    "QUEUETRANSFERTIMEOUT": "Järjekorra edastamise aegumine",
     "READY": "Valmis",
     "REALTIME": "Reaalajas",
-    "RECEIVEURL": "Saate URL-i",
-    "REFRESH_INTERACTIONS": "Värskenda interaktsioone",
-    "REMOTE": "Kaugjuhtimispult",
-    "ROWSPERPAGE": "Ridasid lehel",
+    "RECEIVEURL": "URL-i vastuvõtmine",
+    "REFRESH_INTERACTIONS": "Värskenda suhtlusi",
+    "REMOTE": "Kaugjuhtimine",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "SAVE": "Salvesta",
     "SCREENRECORDING": "Halda ekraanisalvestust",
     "SEARCH_FOR_ANYONE": "Otsing",
     "SECRETACCESSKEY": "Juurdepääsu võtme saladus",
     "SELECTED": "Valitud",
-    "SELECTED_AGENTS": "Valitud esindajad",
-    "SELECTED_TEAMS": "Valitud meeskonnad",
+    "SELECTED_AGENTS": "Valitud agendid",
+    "SELECTED_TEAMS": "Valitud tiimid",
     "SELECT_ALL": "Vali kõik",
-    "SELECT_NONE": "Valige ükski",
+    "SELECT_NONE": "Ärge valige ühtegi",
     "SEND": "Saada",
-    "SETTINGS": "Seadistused",
-    "SPYINTERACTION": "Spioonide interaktsioon",
-    "STARTEDAT": "Alustati kell",
+    "SETTINGS": "Sätted",
+    "SPYINTERACTION": "Spiooni suhtlus",
+    "STARTEDAT": "Alustatud kell",
     "START_SCREENRECORDING": "Alusta ekraani salvestamist",
     "STATUS": "Olek",
     "STOP_SCREENRECORDING": "Peata ekraanil salvestamine",
     "SYSTEM": "Süsteem",
     "TAG": "Silt",
     "TAGS": "Sildid",
-    "TEAMADD_WHATSAPPQUEUE": "Lisage meeskond WhatsApp'i järjekorda",
-    "TEAMS_ASSOCIATION": "Võistkondade liit",
+    "TEAMADD_WHATSAPPQUEUE": "Lisage meeskond WhatsAppi järjekorda",
+    "TEAMS_ASSOCIATION": "Tiimide liit",
     "TEXT": "Tekst",
     "TIMEOUT": "Aeg maha",
     "TIMER": "Taimer",
     "TIMES": "Ajad",
-    "TO": "Et",
+    "TO": "Kellele",
     "TOKEN": "Märk",
     "TOOLTIP_SCREENRECORDING_OFF": "Ekraanisalvestus on saadaval",
     "TOOLTIP_SCREENRECORDING_ON": "Ekraanisalvestus pooleli",
     "TRANSFER": "Ülekanne",
-    "TRUEPRIORITY": "Tõeline prioriteet",
+    "TRUEPRIORITY": "Tõene prioriteet",
     "TYPE": "Tüüp",
     "UNPAUSE": "Lõpeta paus",
     "VALUE": "Väärtus",
-    "VARIABLE": "Muutuv",
-    "WAITFORTHEASSIGNEDAGENT": "Oodake määratud esindajat",
-    "WAITING": "Ootan",
-    "WELCOMEMESSAGE": "Tervitussõnum",
-    "WHATSAPP": "WhatsApp-pistik",
-    "WHATSAPPACCOUNTS": "WhatsApi kontod",
-    "WHATSAPPCANNEDANSWERS": "WhatsApi konserveeritud vastused",
-    "WHATSAPPDISPOSITIONS": "WhatsApi dispositsioonid",
-    "WHATSAPPQUEUES": "WhatsApi järjekorrad",
-    "CLIENTEMAIL": "Kliendi e-post",
+    "VARIABLE": "Muutuja",
+    "WAITFORTHEASSIGNEDAGENT": "Oodake määratud agenti",
+    "WAITING": "Ootamine",
+    "WELCOMEMESSAGE": "Tervitussõµnum",
+    "WHATSAPP": "WhatsApp-ühendus",
+    "WHATSAPPACCOUNTS": "WhatsAppi kontod",
+    "WHATSAPPCANNEDANSWERS": "WhatsAppi salvestatud vastused",
+    "WHATSAPPDISPOSITIONS": "WhatsAppi kasutused",
+    "WHATSAPPQUEUES": "WhatsAppi järjekorrad",
+    "CLIENTEMAIL": "Kliendi e-mail",
     "DIALOGFLOWV2": "Dialoogivoog V2",
     "EDIT_DIALOGFLOWV2": "Redigeerimise dialoogivoog V2",
     "PRIVATEKEY": "Privaatne võti",
-    "PROJECTID": "Projekti ID",
-    "BASEURL": "Baas-URL",
-    "DELIVERYREPORTURL": "Edastamisaruande URL"
+    "PROJECTID": "Projekti ID"
   }
 }
index fd2a755..f98da63 100644 (file)
@@ -1,73 +1,73 @@
 {
   "QUICKPANEL": {
-    "EXPIRATION_GRAY_PERIOD": "Expiration Gray Period",
-    "NO_AVAILABLE_GROUPS": "No Available Groups",
-    "SAVE": "Save",
+    "EXPIRATION_GRAY_PERIOD": "Halli Perioodi Aegumine",
+    "NO_AVAILABLE_GROUPS": "Vabu Gruppe pole",
+    "SAVE": "Salvesta",
     "INFO": "Info",
-    "NEW_CHATGROUP": "New Group",
-    "NAME": "Name",
-    "MEMBERS": "Members",
-    "ENABLE_WRITING": "Enable Writing",
-    "GROUPS": "Groups",
-    "YOU": "You + {{participants}}",
-    "NEW_INTERNAL_MESSAGE": "New internal message",
-    "DELETE": "Delete",
-    "SEARCH": "Search",
-    "USERS": "Users",
-    "TODAY": "TODAY",
-    "MONDAY": "Monday",
-    "TUESDAY": "Tuesday",
-    "WEDNESDAY": "Wednesday",
-    "THURSDAY": "Thursday",
-    "FRIDAY": "Friday",
-    "SATURDAY": "Saturday",
-    "SUNDAY": "Sunday",
-    "JANUARY": "January",
-    "FEBRUARY": "February",
-    "MARCH": "March",
-    "APRIL": "April",
-    "MAY": "May",
-    "JUNE": "June",
-    "JULY": "July",
+    "NEW_CHATGROUP": "Uus Grupp",
+    "NAME": "Nimi",
+    "MEMBERS": "Liikmed",
+    "ENABLE_WRITING": "Luba Kirjutamine",
+    "GROUPS": "Gruppid",
+    "YOU": "Teie + {{osalejad}}",
+    "NEW_INTERNAL_MESSAGE": "Uus sisemine sõnum",
+    "DELETE": "Kustuta",
+    "SEARCH": "Otsi",
+    "USERS": "Kasutajad",
+    "TODAY": "TÄNA",
+    "MONDAY": "Esmaspäev",
+    "TUESDAY": "Teisipäev",
+    "WEDNESDAY": "Kolmapäev",
+    "THURSDAY": "Neljapäev",
+    "FRIDAY": "Reede",
+    "SATURDAY": "Laupäev",
+    "SUNDAY": "Pühapäev",
+    "JANUARY": "Jaanuar",
+    "FEBRUARY": "Veebruar",
+    "MARCH": "Märts",
+    "APRIL": "Aprill",
+    "MAY": "Mai",
+    "JUNE": "Juuni",
+    "JULY": "Juuli",
     "AUGUST": "August",
     "SEPTEMBER": "September",
-    "OCTOBER": "October",
+    "OCTOBER": "Oktoober",
     "NOVEMBER": "November",
-    "DECEMBER": "December",
-    "CHAT": "CHAT",
-    "ACTIVITY": "ACTIVITY",
-    "FRIENDS": "Friends",
-    "APP_SERVERS": "Application Servers",
-    "USER_STATS": "User Stats",
-    "EVENTS": "Events",
-    "NOTES": "Notes",
-    "QUICK_SETTINGS": "Quick Settings",
-    "NOTIFICATIONS": "Notifications",
-    "CLOUD_SYNC": "Cloud Sync",
+    "DECEMBER": "Detsember",
+    "CHAT": "VESTLUS",
+    "ACTIVITY": "TEGEVUS",
+    "FRIENDS": "Sõbrad",
+    "APP_SERVERS": "Rakenduse Serverid",
+    "USER_STATS": "Kasutaja Stat",
+    "EVENTS": "Sündmused",
+    "NOTES": "Märkmed",
+    "QUICK_SETTINGS": "Kiirsätted",
+    "NOTIFICATIONS": "Teatised",
+    "CLOUD_SYNC": "Pilve Sünk",
     "RETRO_THRUSTERS": "Retro Thrusters",
-    "RECENT": "Recent",
-    "START_NEW_CHAT": "Start New Chat",
-    "BACK": "Back",
-    "CALL": "Call",
-    "MORE": "More",
-    "SEND_MESSAGE": "Send message",
-    "REPLY_PLACEHOLDER": "Type and hit enter to send message",
-    "CONTACT_XCALLY_MOTION_SUPPORT": "Contact xCALLY Motion Support",
-    "EXPIRATION_DATE": "Expiration Date",
-    "EXPIRATION_REASON": "Expiration Reason",
-    "LICENSE": "License",
-    "NEW_TOKEN": "New Token",
-    "OLD_TOKEN": "Old Token",
-    "SEND_EMAIL_TO": "Send Email To",
-    "TOKEN": "Token",
-    "EXPIRATION_REASON_MESSAGE": "Your license has expired or your machine unique id has been updated due to a change to your system. Contact xCALLY Motion Support Team sending both your old and your new uuid.",
-    "GRAY_PERIOD_EXPIRATION": "Gray Period Expiration",
-    "EXPIRATION_REASON_MESSAGE_GRAY": "Your license has expired or has been disabled. Contact xCALLY Motion Support Team.",
-    "EXPIRATION_REASON_MESSAGE_CHANGED": "Your machine unique id has been updated due to a change to your system. Contact xCALLY Motion Support Team sending both your old and your new uuid.",
-    "MESSENGER_DISABLED": "The internal messaging is disabled for this agent!",
-    "WARNING": "Warning",
+    "RECENT": "Hiljutine",
+    "START_NEW_CHAT": "Alusta Uut Vestlust",
+    "BACK": "Tagasi",
+    "CALL": "Helista",
+    "MORE": "Rohkem",
+    "SEND_MESSAGE": "Saada sõnum",
+    "REPLY_PLACEHOLDER": "Tipi ja vajuata enter sõnumi saatmiseks",
+    "CONTACT_XCALLY_MOTION_SUPPORT": "Võta ühendust xCALLY Liikumise Toega",
+    "EXPIRATION_DATE": "Aegumiskuupäev",
+    "EXPIRATION_REASON": "Aegumise Põhjus",
+    "LICENSE": "Litsents",
+    "NEW_TOKEN": "Uus Luba",
+    "OLD_TOKEN": "Vana Luba",
+    "SEND_EMAIL_TO": "Saada E-mail Kellele",
+    "TOKEN": "Luba",
+    "EXPIRATION_REASON_MESSAGE": "Sinu litsents on aegunud või sinu seadme unikaalne ID on värskendatud sinu süsteemi muudatuse tõttu. Võta ühendust xCALLY Liikumise Toe Tiimiga, saates nii oma uue kui vana UUID.",
+    "GRAY_PERIOD_EXPIRATION": "Halli Perioodi Aegumine",
+    "EXPIRATION_REASON_MESSAGE_GRAY": "Sinu litsents on aegunud või on desaktiveeritud. Võta ühendust xCALLY Liikumise Toe Tiimiga.",
+    "EXPIRATION_REASON_MESSAGE_CHANGED": "Sinu seadme unikaalne ID on värskendatud sinu süsteemi muudatuse tõttu. Võta ühendust xCALLY Liikumise Toe Tiimiga, saates nii oma uue kui vana UUID.",
+    "MESSENGER_DISABLED": "Sisemine sõnumi saatmine on selle agendi jaoks desaktiveeritud!",
+    "WARNING": "Hoiatus",
     "ERRORS": {
-      "NAME_REQUIRED": "Mandatory Field"
+      "NAME_REQUIRED": "Kohustuslik Väli"
     }
   }
 }
index c3cf8da..c0ce982 100644 (file)
@@ -1,20 +1,20 @@
 {
   "RESETPASSWORD": {
-    "TITLE": "Reset your password",
-    "EMAIL_ADRESS": "Email address",
-    "PASSWORD": "Password",
-    "PASSWORD_CONFIRM": "Password (Confirm)",
-    "UPDATE_PASSWORD": "RESET MY PASSWORD",
-    "GO_BACK": "Go back to login",
-    "PASSWORD_RESET": "Password Reset",
-    "PASSWORD_RESET_MESSAGE": "Your password has been correctly reset, you can now login!",
-    "PASSWORD_RESET_ERROR": "Password Reset Error",
+    "TITLE": "Uuendage oma parooli",
+    "EMAIL_ADRESS": "E-posti aadress",
+    "PASSWORD": "Parool",
+    "PASSWORD_CONFIRM": "Parool (Kinnita)",
+    "UPDATE_PASSWORD": "UUENDA MINU PAROOLI",
+    "GO_BACK": "Mine tagasi sisselogimise lehele",
+    "PASSWORD_RESET": "Parooli Uuendamine",
+    "PASSWORD_RESET_MESSAGE": "Sinu parool on nõuetekohaselt uuendatud, saad nüüd sisse logida!",
+    "PASSWORD_RESET_ERROR": "Parooli Uuendamise Viga",
     "ERRORS": {
-      "EMAIL_REQUIRED": "Email field is required",
-      "EMAIL_MUST_VALID": "Email must be a valid e-mail address",
-      "PASSWORD_REQUIRED": "Password field is required",
-      "CONFIRM_NOT_MATCH": "The passwords don't match",
-      "SECURE_PASSWORD_PATTERN": "Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}."
+      "EMAIL_REQUIRED": "E-posti väli on kohustuslik",
+      "EMAIL_MUST_VALID": "E-posti aadress peab olema kehtiv",
+      "PASSWORD_REQUIRED": "Parooli väli on kohustuslik",
+      "CONFIRM_NOT_MATCH": "Paroolid ei ühti",
+      "SECURE_PASSWORD_PATTERN": "Peab sisaldama vähemalt 8 tähemärki, millest vähemalt 1 väike täht, 1 suur täht, 1 numbrimärk ja 1 erimärk ~!?*@#$%^&-_=+[{]}."
     }
   }
 }
index d04a4ab..6163d63 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.d44c05b7.js"></script>
+  <script src="scripts/app.eda3ad8b.js"></script>
 
   <!-- CKEDITOR -->
   <script src="assets/plugins/ckeditor/ckeditor.js"></script>
similarity index 54%
rename from public/scripts/app.d44c05b7.js
rename to public/scripts/app.eda3ad8b.js
index 6089086..060f94b 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,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",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",controller:"QueuesChatRealtimeController as vm",templateUrl:"app/main/apps/chat/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:510})}e.$inject=["$stateProvider"],angular.module("app.chat.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.contactmanager",{abstract:!0,url:"/contactmanager"}).state("app.contactmanager.lists",{url:"/lists",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/lists.html",controller:"ListsController as vm"}},resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadContactManagerLists",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.lists.edit",{url:"/:id?tab",params:{list:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/edit/view.html",controller:"ListController as vm"}},resolve:{list:["apiResolver","$stateParams",function(e,n){return e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.companies",{url:"/companies",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/companies.html",controller:"CompaniesController as vm"}},resolve:{companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.companies.edit",{url:"/:id?tab",params:{company:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/edit/view.html",controller:"CompanyController as vm"}},resolve:{company:["apiResolver","$stateParams",function(e,n){return e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.globalCustomFields",{url:"/globalCustomFields",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",controller:"GlobalCustomFieldsController as vm"}},resolve:{globalCustomFields:["apiResolver","Auth",function(e,n){return e.resolve("cmCustomField@get",{fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:304})}]},authenticate:!0,permissionId:304,bodyClass:"contactmanager"}),n.addPart("app/main/apps/contactmanager")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.contactmanager",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.contactmanager.contacts"]).config(e)}(),function(){"use strict";function e(e){e.state("app.contactmanager.contacts",{url:"/contacts?ListId&CompanyId",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/contacts.html",controller:"ContactsController as vm"}},resolve:{contacts:["apiResolver","Auth","$stateParams",function(e,n,t){return n.hasRole("admin")?e.resolve("cmContact@get",_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t)):e.resolve("userProfile@getResources",_.merge({id:n.getCurrentUser().userProfileId,section:"Contacts",includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t))}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],listsMap:["lists",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"id,name",sort:"name",nolimit:!0})}],companiesMap:["companies",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"id,name",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"}).state("app.contactmanager.contacts.edit",{url:"/:id?tab",params:{crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/edit/view.html",controller:"ContactController as vm"}},resolve:{contact:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@get",{id:n.id}).then(function(e){return e.dateOfBirth&&(e.dateOfBirth=new Date(e.dateOfBirth)),e}).catch(function(e){console.error(e)})}],hoppers:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHoppers",{id:n.id,fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,offset:0})}],finals:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperFinals",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-updatedAt",limit:10,offset:0})}],histories:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperHistories",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,offset:0})}],jscriptySessions:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getJscriptySessions",{id:n.id,fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,offset:0})}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get"):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies"})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],customFields:["apiResolver","contact",function(e,n){return n.ListId?e.resolve("cmList@getCustomFields",{id:n.ListId}):null}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{sort:"name"}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"})}e.$inject=["$stateProvider"],angular.module("app.contactmanager.contacts",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.dashboards",{abstract:!0,url:"/dashboards"}),n.addPart("app/main/apps/dashboards")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.dashboards",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.dashboards.general","app.dashboards.custom"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.custom",{url:"/custom/:id",views:{"content@app":{templateUrl:"app/main/apps/dashboards/views/custom/custom.html",controller:"DashboardCustomController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(n,e){var 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:100})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.custom",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general",{url:"/general",views:{"content@app":{templateProvider:["$stateParams","$templateFactory","Auth","$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,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",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",controller:"QueuesFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.accounts",{url:"/accounts",controller:"FaxAccountsRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/accounts/view.html",resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}],rpcFaxAccounts:["apiResolver",function(e){return e.resolve("rpc@getFaxAccounts")}]},authenticate:!0,permissionId:910})}e.$inject=["$stateProvider"],angular.module("app.fax.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.help",{abstract:!0,url:"/help"}),n.addPart("app/main/apps/help")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.help",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.help.about"]).config(e)}(),function(){"use strict";function e(e){e.state("app.help.about",{url:"/about",views:{"content@app":{templateUrl:"app/main/apps/help/views/about/about.html",controller:"AboutController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1600,bodyClass:"help"})}e.$inject=["$stateProvider"],angular.module("app.help.about",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.integrations",{abstract:!0,url:"/integrations"}).state("app.integrations.zendeskAccounts",{url:"/zendeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",controller:"ZendeskAccountsController as vm"}},resolve:{zendeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZendeskAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.zendeskAccounts.edit",{url:"/:id?tab",params:{zendeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/view.html",controller:"ZendeskAccountController as vm"}},resolve:{zendeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts",{url:"/salesforceAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",controller:"SalesforceAccountsController as vm"}},resolve:{salesforceAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SalesforceAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts.edit",{url:"/:id?tab",params:{salesforceAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/view.html",controller:"SalesforceAccountController as vm"}},resolve:{salesforceAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts",{url:"/freshdeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",controller:"FreshdeskAccountsController as vm"}},resolve:{freshdeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshdeskAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts.edit",{url:"/:id?tab",params:{freshdeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",controller:"FreshdeskAccountController as vm"}},resolve:{freshdeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts",{url:"/sugarcrmAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",controller:"SugarcrmAccountsController as vm"}},resolve:{sugarcrmAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SugarcrmAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts.edit",{url:"/:id?tab",params:{sugarcrmAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",controller:"SugarcrmAccountController as vm"}},resolve:{sugarcrmAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.deskAccounts",{url:"/deskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/deskAccounts.html",controller:"DeskAccountsController as vm"}},resolve:{deskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"DeskAccounts",fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.deskAccounts.edit",{url:"/:id?tab",params:{deskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/view.html",controller:"DeskAccountController as vm"}},resolve:{deskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.zohoAccounts",{url:"/zohoAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",controller:"ZohoAccountsController as vm"}},resolve:{zohoAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZohoAccounts",fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.zohoAccounts.edit",{url:"/:id?tab",params:{zohoAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/view.html",controller:"ZohoAccountController as vm"}},resolve:{zohoAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts",{url:"/vtigerAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",controller:"VtigerAccountsController as vm"}},resolve:{vtigerAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VtigerAccounts",fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts.edit",{url:"/:id?tab",params:{vtigerAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/view.html",controller:"VtigerAccountController as vm"}},resolve:{vtigerAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts",{url:"/dynamics365Accounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",controller:"Dynamics365AccountsController as vm"}},resolve:{dynamics365Accounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,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,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",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",controller:"QueuesMailRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.accounts",{url:"/accounts",controller:"MailAccountsRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/accounts/view.html",resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}],rpcMailAccounts:["apiResolver",function(e){return e.resolve("rpc@getMailAccounts")}]},authenticate:!0,permissionId:610})}e.$inject=["$stateProvider"],angular.module("app.mail.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.marketplace",{abstract:!0,url:"/marketplace"}).state("app.marketplace.plugins",{url:"/plugins",views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/plugins.html",controller:"MarketplacePluginsController as vm"}},resolve:{plugins:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Plugins",fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}).state("app.marketplace.plugins.edit",{url:"/:id?tab",params:{plugin:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/edit/view.html",controller:"MarketplacePluginController as vm"}},resolve:{plugin:["apiResolver","$stateParams",function(e,n){return e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}),n.addPart("app/main/apps/marketplace")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.marketplace",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.motiondialer",{abstract:!0,url:"/motiondialer"}).state("app.motiondialer.queueCampaigns",{url:"/queueCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",controller:"QueueCampaignsController as vm"}},resolve:{queueCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,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,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",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",controller:"QueuesMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name,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,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",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",controller:"QueuesOpenchannelRealtimeController as vm",templateUrl:"app/main/apps/openchannel/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:810})}e.$inject=["$stateProvider"],angular.module("app.openchannel.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.plugins",{abstract:!0,url:"/plugins"}),n.addPart("app/main/apps/plugins")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.plugins",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.plugins.plugin"]).config(e)}(),function(){"use strict";function e(e){e.state("app.plugins.plugin",{url:"/plugin/:id",views:{"content@app":{templateUrl:"app/main/apps/plugins/views/plugin/plugin.html",controller:"PluginController as vm"}},resolve:{},authenticate:!0,bodyClass:"plugins"})}e.$inject=["$stateProvider"],angular.module("app.plugins.plugin",[]).config(e)}(),function(){"use strict";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,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",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",controller:"QueuesSmsRealtimeController as vm",templateUrl:"app/main/apps/sms/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:710})}e.$inject=["$stateProvider"],angular.module("app.sms.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){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,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",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",controller:"QueuesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name,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,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",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",controller:"QueuesWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2110})}e.$inject=["$stateProvider"],angular.module("app.whatsapp.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.whatsapp",{abstract:!0,url:"/whatsapp"}).state("app.whatsapp.whatsappQueues",{url:"/whatsappQueues",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",controller:"WhatsappQueuesController as vm"}},resolve:{whatsappQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappQueues.edit",{url:"/:id?tab",params:{whatsappQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",controller:"WhatsappQueueController as vm"}},resolve:{whatsappQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts",{url:"/whatsappAccounts",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",controller:"WhatsappAccountsController as vm"}},resolve:{whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts.edit",{url:"/:id?tab",params:{whatsappAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",controller:"WhatsappAccountController as vm"}},resolve:{whatsappAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}),n.addPart("app/main/apps/whatsapp")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.whatsapp",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.whatsapp.realtime"]).config(e)}(),function(){"use strict";angular.module("app.navigation",[]).config(function(){})}(),function(){"use strict";function e(e,n){e.addPart("app/quick-panel")}e.$inject=["$translatePartialLoaderProvider","msApiProvider"],angular.module("app.quick-panel",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.reset",{url:"/reset/:token",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.reset":{templateUrl:"app/reset/reset.html",controller:"ResetPasswordController as vm"}},bodyClass:"reset"}),n.addPart("app/reset")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.reset",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/toolbar")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.toolbar",[]).config(e)}(),function(){"use strict";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(e,n,t,a,i){var s;return{request:function(e){var n=t.get("motion.token");return e.headers=e.headers||{},i.isSameOrigin(e.url)&&n&&(e.headers.Authorization="Bearer "+n),e},responseError:function(e){switch(e.status){case 401:t.remove("motion.token"),(s||(s=a.get("$state"))).go("app.login")}return n.reject(e)}}}e.$inject=["$rootScope","$q","$cookies","$injector","Util"],angular.module("app.auth").factory("authInterceptor",e)}(),function(){"use strict";function e(n){var t={safeCb:function(e){return angular.isFunction(e)?e:angular.noop},urlParse:function(e){var n=document.createElement("a");return n.href=e,""===n.host&&(n.href=n.href),n},isSameOrigin:function(i,e){return i=t.urlParse(i),(e=(e=e&&[].concat(e)||[]).map(t.urlParse)).push(n.location),1<=(e=e.filter(function(e){var n=i.hostname===e.hostname,t=i.protocol===e.protocol,a=i.port===e.port||""===e.port&&("80"===i.port||"443"===i.port);return n&&t&&a})).length}};return t}e.$inject=["$window"],angular.module("app.auth").factory("Util",e)}(),function(){"use strict";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")})}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 s=this;s.filter=[],s.filtered=!1,s.fontSize=20,s.label="",s.getCount=function(a){var i=0;if(a){s.fontSize=a.attrs[2]&&a.attrs[2].value?parseInt(a.attrs[2].value)-parseInt(a.attrs[2].value)%2:20;var e=a.attrs.find(function(e){return"attrChannel"===e.name});e||a.attrs.push({name:"attrChannel",value:"voice"}),a.attrs.forEach(function(e,n){if("voice"!==a.attrs[3].value?"talking"===a.attrs[0].value?s.label="Opened":"answered"===a.attrs[0].value?s.label="Managed":s.label=a.attrs[0].value:s.label=a.attrs[0].value,!_.isEmpty(e.value))if(e.name.toLowerCase().includes("voice")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.voiceQueuesSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.voiceQueuesSelected);for(var t=0;t<a.voiceQueues.rows.length;t+=1)_.includes(s.filter,a.voiceQueues.rows[t].id)&&(i+=a.voiceQueues.rows[t][a.attrs[0].value]?parseInt(a.voiceQueues.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("chat")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.chatWebsitesSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.chatWebsitesSelected);for(var t=0;t<a.chatWebsites.rows.length;t+=1)_.includes(s.filter,a.chatWebsites.rows[t].id)&&(i+=a.chatWebsites.rows[t][a.attrs[0].value]?parseInt(a.chatWebsites.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("fax")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.faxAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.faxAccountsSelected);for(var t=0;t<a.faxAccounts.rows.length;t+=1)_.includes(s.filter,a.faxAccounts.rows[t].id)&&(i+=a.faxAccounts.rows[t][a.attrs[0].value]?parseInt(a.faxAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("mail")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.mailAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.mailAccountsSelected);for(var t=0;t<a.mailAccounts.rows.length;t+=1)_.includes(s.filter,a.mailAccounts.rows[t].id)&&(i+=a.mailAccounts.rows[t][a.attrs[0].value]?parseInt(a.mailAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("openchannel")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.openchannelAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.openchannelAccountsSelected);for(var t=0;t<a.openchannelAccounts.rows.length;t+=1)_.includes(s.filter,a.openchannelAccounts.rows[t].id)&&(i+=a.openchannelAccounts.rows[t][a.attrs[0].value]?parseInt(a.openchannelAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("whatsapp")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.whatsappAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.whatsappAccountsSelected);for(var t=0;t<a.whatsappAccounts.rows.length;t+=1)_.includes(s.filter,a.whatsappAccounts.rows[t].id)&&(i+=a.whatsappAccounts.rows[t][a.attrs[0].value]?parseInt(a.whatsappAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("sms")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.smsAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.smsAccountsSelected);for(var t=0;t<a.smsAccounts.rows.length;t+=1)_.includes(s.filter,a.smsAccounts.rows[t].id)&&(i+=a.smsAccounts.rows[t][a.attrs[0].value]?parseInt(a.smsAccounts.rows[t][a.attrs[0].value]):0)}})}return i}})}(),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,n,i,s){var o={},r={},l={},d={};function c(){r=i.getCurrentUser();var e=n.localStorage.getItem("motion2.home:"+r.id);if(l=e?JSON.parse(e).currentSidebarTab:"dashboard",d=n.localStorage.getItem("motion2.home."+l+":"+r.id)){var a=JSON.parse(d);a.drafts?r.privacyEnabled&&Object.keys(a.drafts).forEach(function(e){var n=a.drafts[e].title,t=n.split(/-(.+)/)[1].trim();a.drafts[e].title=n.replace(t,s.mask(t))}):a.drafts={},d=a}else d={drafts:{}};return d.drafts}function m(){_.isEmpty(o.drafts)?delete d.drafts:d.drafts=o.drafts,n.localStorage.setItem("motion2.home."+l+":"+r.id,JSON.stringify(d))}return o.init=function(){o.drafts=c()},o.getByInteraction=function(n){return o.drafts=c(),_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n})},o.removeByInteraction=function(n){o.drafts=c();var e=_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n});e&&(delete o.drafts[e.id],m())},o.add=function(e){o.drafts=c();var n=a.instant("DASHBOARDS.UNTITLED");e.contact?n=e.contact.firstName||e.contact.email:_.isEmpty(e.message.subject)||(n=e.message.subject);var t={type:"draft",title:e.account.key+" - "+n,channel:e.channel,content:e.message,account:e.account,interaction:e.interaction,id:_.random(1e10),openedAt:new Date,saved:!1};o.drafts[t.id]=t,m()},o.update=function(e){o.drafts=c();var n=o.drafts[e.id];n&&(n.content=e.message,o.drafts[e.id]=n,m())},o.open=function(e){o.drafts=c();var n=o.drafts[e];n&&t.$broadcast("open"+_.startCase(l)+"Draft",n)},o.remove=function(e){o.drafts=c(),o.drafts[e]&&(delete o.drafts[e],m())},o}e.$inject=["$rootScope","$translate","$window","Auth","privacyManager"],angular.module("app.core").factory("draftManager",e)}(),function(){"use strict";function e(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 n={checkEveryChannelPauseStatus:function(n){e.getChannels().forEach(function(e){n[e+"Pause"]&&"idle"===n[e+"Status"]&&(n[e+"Status"]="pause")})},getAgentStatus:function(e){var n="unknown";n=o(e)?"pause":o(e,!0)?"*pause":function(e){if("idle"!==e.voiceStatus&&e.voicePause)return!(e.voiceStatus="pause");return _.every([e.chatStatus,e.faxStatus,e.mailStatus,e.openchannelStatus,e.smsStatus,e.voiceStatus,e.whatsappStatus],r)}(e)?"idle":"busy";return n},getAgentStatusDisplayValue:function(e){var n=e.globalStatus;"pause"===e.globalStatus?n=e.pauseType||t.instant("VOICE.DEFAULT_PAUSE"):"*pause"===e.globalStatus&&(n="*"+(e.pauseType||t.instant("VOICE.DEFAULT_PAUSE")));return n},getUserUpdateEventOrigin:function(e){var n="call";e.lastLoginAt?n="login":!1===e.online?n="logout":e.pauseType&&(n="pause");return 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})},updateBusyCounter:s,updateQueue:function(e,n,t,a){var i=t.paused;!1===e.online?(t.online=!1,n.loggedInDb-=1,t.paused?(t.paused=!1,n.paused-=1):n.available-=1):t.online?!e[a+"Pause"]||t.paused||o(e,!0)?!e[a+"Pause"]&&t.paused?(t.paused=!1,t.talking||t.busy||(n.paused-=1,n.available+=1)):e[a+"Pause"]&&t.paused&&(t.talking||t.busy||(n.busy-=1,i||(n.paused+=1))):(t.paused=!0,t.talking||t.busy||(i||(n.paused+=1),0<n.available&&(n.available-=1))):(t.online=!0,n.loggedInDb+=1,n.available+=1);s(n)},updateVoiceQueue:function(e,n){e.loggedIn===e.available&&0<e.waiting&&(e.available-=e.waiting);var t=e.loggedIn-e.available-e.talking-e.waiting-n.paused;t<0?(n.paused-=Math.abs(t),n.waitingOrTalking=!0):0<t&&n.waitingOrTalking&&(n.paused+=1,delete n.waitingOrTalking);_.merge(n,_.pick(e,"inbound"===n.type?a:i)),"outbound"===n.type&&_.isNil(e.startPredictive)&&(n.startPredictive=void 0);s(n)}},a=["loggedIn","available","waiting","talking","paused"],i=["loggedIn","available","waiting","talking","pTalking","originated","message","dialActive","dialMethod","Trunk","paused","startPredictive","startProgressive","erlangCalls","erlangCallToSecond","erlangAbandonmentRate","erlangBusyFactor","dialPredictiveInterval","dialPredictiveIntervalMaxThreshold","dialPredictiveIntervalMinThreshold","predictiveIntervalAvailable","predictiveIntervalTotalCalls","predictiveIntervalAnsweredCalls","predictiveIntervalDroppedCallsTimeout","predictiveIntervalDroppedCallsCallersExit","predictiveIntervalAvgHoldtime","predictiveIntervalAvgTalktime"];function s(e){var n=_.filter(e.agents,["busy",!0]).length,t=e.loggedInDb-e.available-e.paused-e.talking-e.waiting;t<0&&(t=0),e.busy=t<n?n:t}function o(e,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 r(e){if(_.isNil(e))return!0;return _.includes(["idle","unknown","unavailable","ringing"],e)}return n}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.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,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatQueue=y,f.exportSelectedChatQueues=function(){var e=angular.copy(f.selectedChatQueues);return f.selectedChatQueues=[],e},f.deleteSelectedChatQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatQueues?").htmlContent("<b>"+f.selectedChatQueues.length+" selected</b> will be deleted.").ariaLabel("delete ChatQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatQueues.forEach(function(e){y(e)}),f.selectedChatQueues=[]})},f.deselectChatQueues=function(){f.selectedChatQueues=[]},f.selectAllChatQueues=function(){f.selectedChatQueues=f.chatQueues.rows};var b=!0,A=1;function E(e){f.chatQueues=e||{count:0,rows:[]}}function y(e){m.chatQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.chatQueues.rows,{id:e.id}),f.chatQueues.count-=1,f.chatQueues.rows.length||f.getChatQueues(),p.success({title:_.startCase("ChatQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATQUEUE",g.chatQueue=angular.copy(l),g.chatQueues=r,g.newChatQueue=!1,g.chatQueue||(g.chatQueue={strategy:"beepall",timeout:10},g.title="CHAT.NEW_CHATQUEUE",g.newChatQueue=!0),g.addNewChatQueue=function(){g.errors=[],d.chatQueue.save(g.chatQueue).$promise.then(function(e){g.chatQueues.unshift(e.toJSON()),o.success({title:"ChatQueue properly created",msg:g.chatQueue.name?g.chatQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatQueue=function(){g.errors=[],d.chatQueue.update({id:g.chatQueue.id},g.chatQueue).$promise.then(function(e){var n=_.find(g.chatQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatQueue properly saved!",msg:g.chatQueue.name?g.chatQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatQueue.delete({id:g.chatQueue.id}).$promise.then(function(){_.remove(g.chatQueues,{id:g.chatQueue.id}),o.success({title:"ChatQueue properly deleted!",msg:(g.chatQueue.name||"chatQueue")+" has been deleted!"}),v(g.chatQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatQueues","chatQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getAgents({id:c.chatQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatQueue?"penalty "+e.UserChatQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","chatQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getTeams({id:l.chatQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.chatQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("CHAT.ALL_TEAMS"),labelSelected:t.instant("CHAT.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.chatQueue=c||e.params.chatQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoChatQueues=function(){e.go("app.chat.chatQueues",{},{reload:"app.chat.chatQueues"})},u.saveChatQueue=function(){r.chatQueue.update({id:u.chatQueue.id},u.chatQueue).$promise.then(function(){l.success({title:"ChatQueue updated!",msg:u.chatQueue.name?u.chatQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatQueue","userProfileSection"],angular.module("app.chat").controller("ChatQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatWebsites=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatWebsites",f.listOrder="",f.listOrderAsc=null,f.selectedChatWebsites=[],f.query={fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,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,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("CHAT.CHATQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("chat_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userChatQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.ChatQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userChatQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.ChatQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"chat")})}),e.$on("$destroy",function(){r.removeAllListeners("chat_queue:save"),r.removeAllListeners("userChatQueue:remove"),r.removeAllListeners("userChatQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.chat").controller("QueuesChatRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.chat.realtime.agents":this.selectedTab=0;break;case"app.chat.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.chat.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.chat.realtime.agents");break;case 1:t.go("app.chat.realtime.queues");break;default:t.go("app.chat.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.chat").controller("ChatRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.companies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="companies",f.listOrder="",f.listOrderAsc=null,f.selectedCompanies=[],f.query={fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.companies.edit",{id:e.id,company:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("company")+"?").htmlContent("<b>"+(e.name||"company")+"</b> will be deleted.").ariaLabel("delete company").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCompanies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCompany.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Companies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCompany=function(e,n){i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{company:n,companies:f.companies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCompany=y,f.exportSelectedCompanies=function(){var e=angular.copy(f.selectedCompanies);return f.selectedCompanies=[],e},f.deleteSelectedCompanies=function(e){var n=i.confirm().title("Are you sure want to delete the selected companies?").htmlContent("<b>"+f.selectedCompanies.length+" selected</b> will be deleted.").ariaLabel("delete Companys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCompanies.forEach(function(e){y(e)}),f.selectedCompanies=[]})},f.deselectCompanies=function(){f.selectedCompanies=[]},f.selectAllCompanies=function(){f.selectedCompanies=f.companies.rows};var b=!0,A=1;function E(e){f.companies=e||{count:0,rows:[]}}function y(e){m.cmCompany.delete({id:e.id}).$promise.then(function(){_.remove(f.companies.rows,{id:e.id}),f.companies.count-=1,f.companies.rows.length||f.getCompanies(),p.success({title:_.startCase("Company")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCompany"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCompany",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCompanies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","companies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("CompaniesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_COMPANY",g.company=angular.copy(l),g.companies=r,g.newCompany=!1,g.company||(g.company={},g.title="CONTACTMANAGER.NEW_COMPANY",g.newCompany=!0),g.addNewCompany=function(){g.errors=[],d.cmCompany.save(g.company).$promise.then(function(e){g.companies.unshift(e.toJSON()),o.success({title:"Company properly created",msg:g.company.name?g.company.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCompany=function(){g.errors=[],d.cmCompany.update({id:g.company.id},g.company).$promise.then(function(e){var n=_.find(g.companies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Company properly saved!",msg:g.company.name?g.company.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCompany=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The company will be deleted.").ariaLabel("Delete Company").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmCompany.delete({id:g.company.id}).$promise.then(function(){_.remove(g.companies,{id:g.company.id}),o.success({title:"Company properly deleted!",msg:(g.company.name||"company")+" has been deleted!"}),v(g.company)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","companies","company","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCompanyDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.company=c||a.params.company||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):l.info({title:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},u.alert=l.info,u.gotoCompanies=function(){a.go("app.contactmanager.companies",{},{reload:"app.contactmanager.companies"})},u.saveCompany=function(){r.cmCompany.update({id:u.company.id},u.company).$promise.then(function(){l.success({title:"Company updated!",msg:u.company.name?u.company.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmCompany",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","company","userProfileSection"],angular.module("app.contactmanager").controller("CompanyController",e)}(),function(){"use strict";function e(n,i,t,a,e,s,o,r,l,d,c,m,u,p,g,v,h,f,b){var A=this;A.currentUser=f.getCurrentUser(),A.license=b,A.userProfile=r,A.userProfileSection=l&&1==l.count?l.rows[0]:null,A.crudPermissions=f.parseCrudPermissions(A.userProfileSection?A.userProfileSection.crudPermissions:null);var E=60,y=1024*E*1024;A.ngFlowOptions={target:"api/cm/contacts/upload",singleFile:!0,maxChunkRetries:1,chunkSize:y,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},A.contacts=c||{count:0,rows:[]},A.options={hidden:!1,hover:!1,isOpen:!1},A.table="cm_contacts",A.selectedContacts=[],A.lists=m||{rows:[],count:0},A.companies=p||{rows:[],count:0},A.tags=v||{rows:[],count:0},A.listsMap=u,A.companiesMap=g,A.selectedTags=[],A.selectedList=null,A.selectedCompany=null,A.query=_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0,page:1},e),A.editdialog=function(e,n){a.go("app.contactmanager.contacts.edit",{id:e.id,crudPermissions:A.crudPermissions})},A.deleteconfirm=function(e,n){var t=s.confirm().title("Are you sure want to delete the contact?").htmlContent("<b>"+(e.firstName||e.email||e.phone||"Contact")+"</b> will be deleted.").ariaLabel("delete contact").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){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,e,t){var a=this;function i(e,n){switch(e){case"first":a.selectedDisposition=a.firstLevelDisposition,a.anySecondLevelDisposition=_.some(a.dispositions,["ParentId",a.firstLevelDisposition.id]),a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.anyThirdLevelDisposition=!1;break;case"second":a.selectedDisposition=a.secondLevelDisposition,a.anyThirdLevelDisposition=_.some(a.dispositions,["ParentId",a.secondLevelDisposition.id]);break;case"third":a.selectedDisposition=a.thirdLevelDisposition}n&&function(e){switch(e){case"first":a.call.secondDisposition&&(a.secondLevelDisposition=_.find(a.dispositions,function(e){return e.name===a.call.secondDisposition}),a.secondLevelDisposition&&i("second",!0));break;case"second":a.call.thirdDisposition&&(a.thirdLevelDisposition=_.find(a.dispositions,function(e){return e.name===a.call.thirdDisposition}),a.thirdLevelDisposition&&i("third",!0))}}(e)}a.dispositions=e,a.call=t,a.note=a.call.note||void 0,a.onDispositionChange=i,a.clearDispositionSelection=function(e){"second"===e?(a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.selectedDisposition=a.firstLevelDisposition):"third"===e&&(a.thirdLevelDisposition=void 0,a.selectedDisposition=a.secondLevelDisposition)},a.saveDisposition=function(){a.call.note=a.note;var e={firstLevel:a.firstLevelDisposition?a.firstLevelDisposition.name:void 0,secondLevel:a.secondLevelDisposition?a.secondLevelDisposition.name:void 0,thirdLevel:a.thirdLevelDisposition?a.thirdLevelDisposition.name:void 0,note:a.note?a.note:void 0};n.hide(e)},a.closeDialog=function(){n.cancel()},a.call.disposition&&(a.firstLevelDisposition=_.find(a.dispositions,function(e){return e.name===a.call.disposition}),a.firstLevelDisposition&&i("first",!0))}e.$inject=["$mdDialog","dispositions","call"],angular.module("app.dashboards").controller("DisposeAbandonedCallDialogController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition,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,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"inbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"inbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.user.getQueues(c.query).$promise.then(function(e){return c.myQueues=e,o.rpc.getVoiceQueues().$promise}).then(function(e){for(var n=e.rows,t=_.keyBy(n,"id"),a=0;a<c.myQueues.count;a++){var i=c.myQueues.rows[a];c.rpcVoiceQueues[i.id]=t[i.id]}return o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,function(e){return!("inbound"!==e.type||e.queuecallerleaveAt||!_.find(c.myQueues.rows,{name:e.queue}))}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardVoiceController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcWhatsappQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.whatsappQueuesTotal=e.count?e.count:0,c.whatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.whatsappQueues,function(e,n){c.rpcWhatsappQueues[n]&&(c.whatsappQueues[n].waiting=c.rpcWhatsappQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.whatsappQueues={},c.whatsappQueuesTotal=0,c.rpcWhatsappQueues={},c.paginatedInteractions=[],c.deleteWhatsappQueuesWaitingInteractions=[],c.rpcWhatsappQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"whatsapp",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getWhatsappQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.whatsappQueues[e.id]&&c.rpcWhatsappQueues[e.id]&&(_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onSaveWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]=_.pick(e,m))},c.onUpdateWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]&&_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),c.whatsappQueues[e.id]&&_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onRemoveWhatsappQueue=function(e){_.isNil(e)||(delete c.rpcWhatsappQueues[e.id],delete c.whatsappQueues[e.id])},c.onSaveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onRemoveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onSaveWhatsappQueueChannel=function(e){c.whatsappQueues[e.queue_id]&&(c.rpcWhatsappQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveWhatsappQueueChannel=function(e){delete c.rpcWhatsappQueuesWaitingInteractions[e.id],u&&c.deleteWhatsappQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("whatsapp_queue:save",c.onSaveQueue),l.onWithoutApply("whatsappQueue:save",c.onSaveWhatsappQueue),l.onWithoutApply("whatsappQueue:update",c.onUpdateWhatsappQueue),l.onWithoutApply("whatsappQueue:remove",c.onRemoveWhatsappQueue),l.onWithoutApply("userWhatsappQueue:save",c.onSaveUserWhatsappQueue),l.onWithoutApply("userWhatsappQueue:remove",c.onRemoveUserWhatsappQueue),l.onWithoutApply("whatsapp_queue_waiting_interaction:save",c.onSaveWhatsappQueueChannel),l.onWithoutApply("whatsapp_queue_waiting_interaction:remove",c.onRemoveWhatsappQueueChannel),o.rpc.getWhatsappQueues().$promise.then(function(e){c.rpcWhatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"whatsapp"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getWhatsappQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcWhatsappQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteWhatsappQueuesWaitingInteractions.length;e+=1)delete c.rpcWhatsappQueuesWaitingInteractions[c.deleteWhatsappQueuesWaitingInteractions[e]];u=!1,c.deleteWhatsappQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getWhatsappQueues())}),e.$on("$destroy",function(){l.removeAllListeners("whatsapp_queue:save"),l.removeAllListeners("whatsappQueue:save"),l.removeAllListeners("whatsappQueue:update"),l.removeAllListeners("whatsappQueue:remove"),l.removeAllListeners("userWhatsappQueue:save"),l.removeAllListeners("userWhatsappQueue:remove"),l.removeAllListeners("whatsapp_queue_waiting_interaction:save"),l.removeAllListeners("whatsapp_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelWhatsappController",e)}(),function(){"use strict";function e(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(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXQUEUE",g.faxQueue=angular.copy(l),g.faxQueues=r,g.newFaxQueue=!1,g.faxQueue||(g.faxQueue={strategy:"beepall",timeout:10},g.title="FAX.NEW_FAXQUEUE",g.newFaxQueue=!0),g.addNewFaxQueue=function(){g.errors=[],d.faxQueue.save(g.faxQueue).$promise.then(function(e){g.faxQueues.unshift(e.toJSON()),o.success({title:"FaxQueue properly created",msg:g.faxQueue.name?g.faxQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxQueue=function(){g.errors=[],d.faxQueue.update({id:g.faxQueue.id},g.faxQueue).$promise.then(function(e){var n=_.find(g.faxQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FaxQueue properly saved!",msg:g.faxQueue.name?g.faxQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxQueue will be deleted.").ariaLabel("Delete FaxQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxQueue.delete({id:g.faxQueue.id}).$promise.then(function(){_.remove(g.faxQueues,{id:g.faxQueue.id}),o.success({title:"FaxQueue properly deleted!",msg:(g.faxQueue.name||"faxQueue")+" has been deleted!"}),v(g.faxQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxQueues","faxQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getAgents({id:c.faxQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxQueue?"penalty "+e.UserFaxQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","faxQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getTeams({id:l.faxQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.faxQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("FAX.ALL_TEAMS"),labelSelected:t.instant("FAX.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.faxQueue=c||e.params.faxQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoFaxQueues=function(){e.go("app.fax.faxQueues",{},{reload:"app.fax.faxQueues"})},u.saveFaxQueue=function(){r.faxQueue.update({id:u.faxQueue.id},u.faxQueue).$promise.then(function(){l.success({title:"FaxQueue updated!",msg:u.faxQueue.name?u.faxQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxQueue","userProfileSection"],angular.module("app.fax").controller("FaxQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxQueues",f.listOrder="",f.listOrderAsc=null,f.selectedFaxQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxQueues.edit",{id:e.id,faxQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxQueue")+"?").htmlContent("<b>"+(e.name||"faxQueue")+"</b> will be deleted.").ariaLabel("delete faxQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.queues",{})}},f.success=E,f.getFaxQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxQueue=function(e,n){i.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:f.faxQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxQueue=y,f.exportSelectedFaxQueues=function(){var e=angular.copy(f.selectedFaxQueues);return f.selectedFaxQueues=[],e},f.deleteSelectedFaxQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxQueues?").htmlContent("<b>"+f.selectedFaxQueues.length+" selected</b> will be deleted.").ariaLabel("delete FaxQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxQueues.forEach(function(e){y(e)}),f.selectedFaxQueues=[]})},f.deselectFaxQueues=function(){f.selectedFaxQueues=[]},f.selectAllFaxQueues=function(){f.selectedFaxQueues=f.faxQueues.rows};var b=!0,A=1;function E(e){f.faxQueues=e||{count:0,rows:[]}}function y(e){m.faxQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.faxQueues.rows,{id:e.id}),f.faxQueues.count-=1,f.faxQueues.rows.length||f.getFaxQueues(),p.success({title:_.startCase("FaxQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxQueuesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.faxAccounts,function(e,n){p.rpcFaxAccounts[n]&&_.merge(e,p.rpcFaxAccounts[n])}),_.forIn(p.faxAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.faxAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.faxAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.faxAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcFaxAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getFaxAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.faxAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="FaxAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.faxAccounts[e.id]&&_.merge(p.faxAccounts[e.id],e)},p.onFaxMessageSave=function(e){p.faxAccounts[e.FaxAccountId]&&("in"==e.direction?(p.faxAccounts[e.FaxAccountId].in+=1,p.faxAccounts[e.FaxAccountId].lastIn=e.createdAt):(p.faxAccounts[e.FaxAccountId].out+=1,p.faxAccounts[e.FaxAccountId].lastOut=e.createdAt))},p.goToFaxAccount=function(e,n){i.go("app.fax.faxAccounts.edit",{id:n.id,faxAccount:n})},p.order=[],_.forIn(p.faxAccounts,function(e,n){p.order.push(e.id)}),o.on("faxAccount:save",p.onSave),o.on("faxAccount:update",p.onSave),o.on("faxMessage:save",p.onFaxMessageSave);var v=!0,h=1;function f(e){if(p.faxAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getFaxAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("faxAccount:save"),o.removeAllListeners("faxAccount:update"),o.removeAllListeners("faxMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","faxAccounts","rpcFaxAccounts","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("FaxAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("FAX.FAXQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("fax_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userFaxQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.FaxQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userFaxQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.FaxQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"fax")})}),e.$on("$destroy",function(){r.removeAllListeners("fax_queue:save"),r.removeAllListeners("userFaxQueue:remove"),r.removeAllListeners("userFaxQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.fax").controller("QueuesFaxRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.fax.realtime.agents":this.selectedTab=0;break;case"app.fax.realtime.trunks":this.selectedTab=1;break;case"app.fax.realtime.queues":this.selectedTab=2;break;case"app.fax.realtime.accounts":this.selectedTab=3;break;default:this.selectedTab=0,t.go("app.fax.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.fax.realtime.agents");break;case 1:t.go("app.fax.realtime.trunks");break;case 2:t.go("app.fax.realtime.queues");break;case 3:t.go("app.fax.realtime.accounts");break;default:t.go("app.fax.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.fax").controller("FaxRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("TrunksFaxRealtimeController",e)}(),function(){"use strict";function e(e,n){this.info=e,this.license=n}e.$inject=["info","license"],angular.module("app.help.about").controller("AboutController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKACCOUNT",g.deskAccount=angular.copy(l),g.deskAccounts=r,g.newDeskAccount=!1,g.deskAccount||(g.deskAccount={type:"integrationTab",authType:"basic",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DESKACCOUNT",g.newDeskAccount=!0),g.addNewDeskAccount=function(){g.errors=[],d.intDeskAccount.save(g.deskAccount).$promise.then(function(e){g.deskAccounts.unshift(e.toJSON()),o.success({title:"DeskAccount properly created",msg:g.deskAccount.name?g.deskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskAccount=function(){g.errors=[],d.intDeskAccount.update({id:g.deskAccount.id},g.deskAccount).$promise.then(function(e){var n=_.find(g.deskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskAccount properly saved!",msg:g.deskAccount.name?g.deskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskAccount will be deleted.").ariaLabel("Delete DeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskAccount.delete({id:g.deskAccount.id}).$promise.then(function(){_.remove(g.deskAccounts,{id:g.deskAccount.id}),o.success({title:"DeskAccount properly deleted!",msg:(g.deskAccount.name||"deskAccount")+" has been deleted!"}),v(g.deskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","deskAccounts","deskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.deskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="deskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedDeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Basic",value:"'basic'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.deskAccounts.edit",{id:e.id,deskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"DeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"DeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("deskAccount")+"?").htmlContent("<b>"+(e.name||"deskAccount")+"</b> will be deleted.").ariaLabel("delete deskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="DeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDeskAccount=function(e,n){i.show({controller:"CreateOrEditDeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskAccount:n,deskAccounts:f.deskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDeskAccount=y,f.exportSelectedDeskAccounts=function(){var e=angular.copy(f.selectedDeskAccounts);return f.selectedDeskAccounts=[],e},f.deleteSelectedDeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected deskAccounts?").htmlContent("<b>"+f.selectedDeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete DeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDeskAccounts.forEach(function(e){y(e)}),f.selectedDeskAccounts=[]})},f.deselectDeskAccounts=function(){f.selectedDeskAccounts=[]},f.selectAllDeskAccounts=function(){f.selectedDeskAccounts=f.deskAccounts.rows};var b=!0,A=1;function E(e){f.deskAccounts=e||{count:0,rows:[]}}function y(e){m.intDeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.deskAccounts.rows,{id:e.id}),f.deskAccounts.count-=1,f.deskAccounts.rows.length||f.getDeskAccounts(),p.success({title:_.startCase("DeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","deskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("DeskAccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.deskAccount={},o.deskConfiguration={},o.configurations=[],o.selectedDeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.deskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDeskAccount.getConfigurations({id:o.deskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDeskConfiguration=function(e){o.deskConfiguration=o.configurations[e],o.selectedDeskConfiguration=e,i.intDeskConfiguration.getSubjects({id:o.deskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDeskConfiguration.getDescriptions({id:o.deskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDeskConfiguration.getFields({id:o.deskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intDeskConfiguration.getTags({id:o.deskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDeskConfiguration=function(e,n){a.show({controller:"CreateOrEditDeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDeskConfiguration(0)})},o.deleteDeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the deskConfiguration?").htmlContent("<b>"+(n.name||"deskConfiguration")+"</b> will be deleted.").ariaLabel("delete deskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"DeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intDeskConfiguration.setTags({id:o.deskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("DeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKCONFIGURATION",g.deskConfiguration=angular.copy(l),g.configurations=r,g.newDeskConfiguration=!1,g.deskConfiguration||(g.deskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_DESKCONFIGURATION",g.newDeskConfiguration=!0),g.addNewDeskConfiguration=function(){g.errors=[],d.intDeskAccount.addConfiguration({id:n.params.id},g.deskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"DeskConfiguration properly created",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskConfiguration=function(){g.errors=[],d.intDeskConfiguration.update({id:g.deskConfiguration.id},g.deskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskConfiguration properly saved!",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskConfiguration will be deleted.").ariaLabel("Delete DeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskConfiguration.delete({id:g.deskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.deskConfiguration.id}),o.success({title:"DeskConfiguration properly deleted!",msg:(g.deskConfiguration.name||"deskConfiguration")+" has been deleted!"}),v(g.deskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","deskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.deskAccount=c||e.params.deskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDeskAccounts=function(){e.go("app.integrations.deskAccounts",{},{reload:"app.integrations.deskAccounts"})},u.saveDeskAccount=function(){r.intDeskAccount.update({id:u.deskAccount.id},u.deskAccount).$promise.then(function(){l.success({title:"DeskAccount updated!",msg:u.deskAccount.name?u.deskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","deskAccount","userProfileSection"],angular.module("app.integrations").controller("DeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,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(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILQUEUE",g.mailQueue=angular.copy(l),g.mailQueues=r,g.newMailQueue=!1,g.mailQueue||(g.mailQueue={strategy:"beepall",timeout:10},g.title="MAIL.NEW_MAILQUEUE",g.newMailQueue=!0),g.addNewMailQueue=function(){g.errors=[],d.mailQueue.save(g.mailQueue).$promise.then(function(e){g.mailQueues.unshift(e.toJSON()),o.success({title:"MailQueue properly created",msg:g.mailQueue.name?g.mailQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailQueue=function(){g.errors=[],d.mailQueue.update({id:g.mailQueue.id},g.mailQueue).$promise.then(function(e){var n=_.find(g.mailQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailQueue properly saved!",msg:g.mailQueue.name?g.mailQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailQueue will be deleted.").ariaLabel("Delete MailQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailQueue.delete({id:g.mailQueue.id}).$promise.then(function(){_.remove(g.mailQueues,{id:g.mailQueue.id}),o.success({title:"MailQueue properly deleted!",msg:(g.mailQueue.name||"mailQueue")+" has been deleted!"}),v(g.mailQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailQueues","mailQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getAgents({id:c.mailQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailQueue?"penalty "+e.UserMailQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","mailQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getTeams({id:l.mailQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.mailQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MAIL.ALL_TEAMS"),labelSelected:t.instant("MAIL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.mailQueue=c||e.params.mailQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoMailQueues=function(){e.go("app.mail.mailQueues",{},{reload:"app.mail.mailQueues"})},u.saveMailQueue=function(){r.mailQueue.update({id:u.mailQueue.id},u.mailQueue).$promise.then(function(){l.success({title:"MailQueue updated!",msg:u.mailQueue.name?u.mailQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailQueue","userProfileSection"],angular.module("app.mail").controller("MailQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailQueues",f.listOrder="",f.listOrderAsc=null,f.selectedMailQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailQueues.edit",{id:e.id,mailQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailQueue")+"?").htmlContent("<b>"+(e.name||"mailQueue")+"</b> will be deleted.").ariaLabel("delete mailQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.queues",{})}},f.success=E,f.getMailQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailQueue=function(e,n){i.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:f.mailQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailQueue=y,f.exportSelectedMailQueues=function(){var e=angular.copy(f.selectedMailQueues);return f.selectedMailQueues=[],e},f.deleteSelectedMailQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailQueues?").htmlContent("<b>"+f.selectedMailQueues.length+" selected</b> will be deleted.").ariaLabel("delete MailQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailQueues.forEach(function(e){y(e)}),f.selectedMailQueues=[]})},f.deselectMailQueues=function(){f.selectedMailQueues=[]},f.selectAllMailQueues=function(){f.selectedMailQueues=f.mailQueues.rows};var b=!0,A=1;function E(e){f.mailQueues=e||{count:0,rows:[]}}function y(e){m.mailQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.mailQueues.rows,{id:e.id}),f.mailQueues.count-=1,f.mailQueues.rows.length||f.getMailQueues(),p.success({title:_.startCase("MailQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILSUBSTATUS",g.mailSubstatus=angular.copy(l),g.mailSubtatuses=r,g.newMailSubstatus=!1,g.mailSubstatus||(g.mailSubstatus={},g.title="MAIL.NEW_MAILSUBSTATUS",g.newMailSubstatus=!0),g.addNewMailSubstatus=function(){g.errors=[],d.mailSubstatus.save(g.mailSubstatus).$promise.then(function(e){g.mailSubtatuses.unshift(e.toJSON()),o.success({title:"MailSubstatus properly created",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailSubstatus=function(){g.errors=[],d.mailSubstatus.update({id:g.mailSubstatus.id},g.mailSubstatus).$promise.then(function(e){var n=_.find(g.mailSubtatuses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailSubstatus properly saved!",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailSubstatus=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailSubstatus will be deleted.").ariaLabel("Delete MailSubstatus").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailSubstatus.delete({id:g.mailSubstatus.id}).$promise.then(function(){_.remove(g.mailSubtatuses,{id:g.mailSubstatus.id}),o.success({title:"MailSubstatus properly deleted!",msg:(g.mailSubstatus.name||"mailSubstatus")+" has been deleted!"}),v(g.mailSubstatus)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailSubtatuses","mailSubstatus","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailSubstatusDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailSubtatuses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailSubtatuses",f.listOrder="",f.listOrderAsc=null,f.selectedMailSubstatuses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailSubstatus:e,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailSubstatus")+"?").htmlContent("<b>"+(e.name||"mailSubstatus")+"</b> will be deleted.").ariaLabel("delete mailSubstatus").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailSubstatuses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailSubstatus.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailSubstatuses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailSubstatus=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailSubstatus:n,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailSubstatus=y,f.exportSelectedMailSubstatuses=function(){var e=angular.copy(f.selectedMailSubstatuses);return f.selectedMailSubstatuses=[],e},f.deleteSelectedMailSubstatuses=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailSubtatuses?").htmlContent("<b>"+f.selectedMailSubstatuses.length+" selected</b> will be deleted.").ariaLabel("delete MailSubstatuss").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailSubstatuses.forEach(function(e){y(e)}),f.selectedMailSubstatuses=[]})},f.deselectMailSubstatuses=function(){f.selectedMailSubstatuses=[]},f.selectAllMailSubstatuses=function(){f.selectedMailSubstatuses=f.mailSubtatuses.rows};var b=!0,A=1;function E(e){f.mailSubtatuses=e||{count:0,rows:[]}}function y(e){m.mailSubstatus.delete({id:e.id}).$promise.then(function(){_.remove(f.mailSubtatuses.rows,{id:e.id}),f.mailSubtatuses.count-=1,f.mailSubtatuses.rows.length||f.getMailSubstatuses(),p.success({title:_.startCase("MailSubstatus")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailSubstatus"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailSubstatus",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailSubstatuses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailSubtatuses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailSubstatusesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.mailAccounts,function(e,n){p.rpcMailAccounts[n]&&_.merge(e,p.rpcMailAccounts[n])}),_.forIn(p.mailAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.mailAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.mailAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.mailAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcMailAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getMailAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.mailAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="MailAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.mailAccounts[e.id]&&_.merge(p.mailAccounts[e.id],e)},p.onMailMessageSave=function(e){p.mailAccounts[e.MailAccountId]&&("in"==e.direction?(p.mailAccounts[e.MailAccountId].in+=1,p.mailAccounts[e.MailAccountId].lastIn=e.createdAt):(p.mailAccounts[e.MailAccountId].out+=1,p.mailAccounts[e.MailAccountId].lastOut=e.createdAt))},p.goToMailAccount=function(e,n){i.go("app.mail.mailAccounts.edit",{id:n.id,mailAccount:n})},p.verifySmtp=function(e,n){{if(n&&n.id)return s.mailAccount.verifySmtp({id:n.id}).$promise.then(function(){r.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){r.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});r.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},p.order=[],_.forIn(p.mailAccounts,function(e,n){p.order.push(e.id)}),o.on("mailAccount:save",p.onSave),o.on("mailAccount:update",p.onSave),o.on("mailMessage:save",p.onMailMessageSave);var v=!0,h=1;function f(e){if(p.mailAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getMailAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("mailAccount:save"),o.removeAllListeners("mailAccount:update"),o.removeAllListeners("mailMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","mailAccounts","rpcMailAccounts","userProfile","userProfileSection","Auth"],angular.module("app.mail").controller("MailAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("MAIL.MAILQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("mail_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userMailQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.MailQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userMailQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.MailQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"mail")})}),e.$on("$destroy",function(){r.removeAllListeners("mail_queue:save"),r.removeAllListeners("userMailQueue:remove"),r.removeAllListeners("userMailQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.mail").controller("QueuesMailRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.mail.realtime.agents":this.selectedTab=0;break;case"app.mail.realtime.queues":this.selectedTab=1;break;case"app.mail.realtime.accounts":this.selectedTab=2;break;default:this.selectedTab=0,t.go("app.mail.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.mail.realtime.agents");break;case 1:t.go("app.mail.realtime.queues");break;case 2:t.go("app.mail.realtime.accounts");break;default:t.go("app.mail.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.mail").controller("MailRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MARKETPLACE.EDIT_PLUGIN",g.plugin=angular.copy(l),g.plugins=r,g.newPlugin=!1,g.plugin||(g.plugin={},g.title="MARKETPLACE.NEW_PLUGIN",g.newPlugin=!0),g.addNewPlugin=function(){g.errors=[],d.plugin.save(g.plugin).$promise.then(function(e){g.plugins.unshift(e.toJSON()),o.success({title:"Plugin properly created",msg:g.plugin.name?g.plugin.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePlugin=function(){g.errors=[],d.plugin.update({id:g.plugin.id},g.plugin).$promise.then(function(e){var n=_.find(g.plugins,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Plugin properly saved!",msg:g.plugin.name?g.plugin.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePlugin=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The plugin will be deleted.").ariaLabel("Delete Plugin").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.plugin.delete({id:g.plugin.id}).$promise.then(function(){_.remove(g.plugins,{id:g.plugin.id}),o.success({title:"Plugin properly deleted!",msg:(g.plugin.name||"plugin")+" has been deleted!"}),v(g.plugin)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","plugins","plugin","api","Auth","license","setting","crudPermissions"],angular.module("app.marketplace").controller("CreateOrEditPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.plugin=c||e.params.plugin||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoPlugins=function(){e.go("app.marketplace.plugins",{},{reload:"app.marketplace.plugins"})},u.savePlugin=function(){r.plugin.update({id:u.plugin.id},u.plugin).$promise.then(function(){l.success({title:"Plugin updated!",msg:u.plugin.name?u.plugin.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETplugin",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","plugin","userProfileSection"],angular.module("app.marketplace").controller("MarketplacePluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.plugins=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="plugins",f.listOrder="",f.listOrderAsc=null,f.selectedPlugins=[],f.query={fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,page:1},f.installing=!1,f.arraysidebar=_.keyBy([{option:"Always",value:"'always'"},{option:"Admin Only",value:"'adminOnly'"},{option:"Agent Only",value:"'agentOnly'"},{option:"Never",value:"'never'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.installplugin=function(e){{if("script"!==e.type)return e.active=!0,m.plugin.update({id:e.id},e).$promise.then(function(){p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});f.installing=!0,m.pm2.save({name:e.scriptName,script:e.path+"/"+e.scriptPath}).$promise.then(function(){return e.active=!0,m.plugin.update({id:e.id},e).$promise}).then(function(){f.installing=!1,p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.save"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.save",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}},f.editstate=function(e,n){t.go("app.marketplace.plugins.edit",{id:e.id,plugin:e,crudPermissions:f.crudPermissions})},f.stopplugin=function(e,n){var t=i.confirm().title("Are you sure want to stop the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be stoppped.").ariaLabel("stop plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"stopped"}).$promise.then(function(){p.success({title:"Process stopped!",msg:"Attached pm2 process successfully stopped"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.restartplugin=function(e,n){var t=i.confirm().title("Are you sure want to restart the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be restarted.").ariaLabel("restart plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"online"}).$promise.then(function(){p.success({title:"Process restarted!",msg:"Attached pm2 process successfully restarted"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.downloadfile2=function(s,e){return m.plugin.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.name.replace(" ","_").toLowerCase()+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.uninstallplugin=function(e,n){var t=i.confirm().title("Are you sure want to uninstall the plugin?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be uninstalled.").ariaLabel("uninstall plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){!function(t){"script"===t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});t.active=!1,m.plugin.update({id:t.id},t).$promise.then(function(){p.success({title:"Plugin uninstalled!",msg:t.name?t.name+" has been uninstalled!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}(e)},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("plugin")+"?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be deleted.").ariaLabel("delete plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPlugins=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.plugin.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Plugins",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPlugin=function(e,n){i.show({controller:"CreateOrEditPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugin:n,plugins:f.plugins.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePlugin=y,f.exportSelectedPlugins=function(){var e=angular.copy(f.selectedPlugins);return f.selectedPlugins=[],e},f.deleteSelectedPlugins=function(e){var n=i.confirm().title("Are you sure want to delete the selected plugins?").htmlContent("<b>"+f.selectedPlugins.length+" selected</b> will be deleted.").ariaLabel("delete Plugins").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPlugins.forEach(function(e){y(e)}),f.selectedPlugins=[]})},f.deselectPlugins=function(){f.selectedPlugins=[]},f.selectAllPlugins=function(){f.selectedPlugins=f.plugins.rows},f.uploadPlugin=function(e){i.show({controller:"UploadPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugins:f.plugins.rows}})};var b=!0,A=1;function E(e){f.plugins=e||{count:0,rows:[]}}function y(t){t.active&&"script"==t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)return p.error({title:"Plugin not deleted!",msg:"Failed to retrieve pm2 processes"});var n=_.find(e.rows,{name:t.scriptName});n?m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise:console.log("No '%s' process found",t.scriptName)}).catch(function(e){return p.error({title:"PM2 process not found!",msg:"Failed to delete the attached pm2 process"})}),m.plugin.delete({id:t.id}).$promise.then(function(){_.remove(f.plugins.rows,{id:t.id}),f.plugins.count-=1,f.plugins.rows.length||f.getPlugins(),p.success({title:_.startCase("Plugin")+" deleted!",msg:t.name?t.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEplugin"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEplugin",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPlugins())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","plugins","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.marketplace").controller("MarketplacePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=4,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="MARKETPLACE.UPLOAD_PLUGIN",o.plugins=a,o.uploadPlugins=[],o.uploadState="none",o.plugin={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/plugins"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["zip"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.plugin={id:e.uniqueIdentifier,file:e},o.uploadPlugins.unshift(o.plugin),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.plugins.unshift(JSON.parse(e)),angular.forEach(o.uploadPlugins,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the plugin"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.plugin.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","plugins","api","Auth"],angular.module("app.marketplace").controller("UploadPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,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,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"outbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"outbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","sumHoldTime","sumDuration","sumBillable","outboundNoAnswerCallsDay","outboundBusyCallsDay","outboundCongestionCallsDay","outboundNoSuchCallsDay","outboundUnknownCallsDay","outboundDropCallsDayTimeout","outboundDropCallsDayCallersExit","outboundBlacklistCallsDay","outboundOriginateFailureCallsDay","outboundAnswerAgiCallsDay","outboundReCallsDay","outboundRejectCallsDay"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="QueueCampaigns",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueParamsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("VOICE.VOICEQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:u.queues.rows,realtime:!0,crudPermissions:u.crudPermissions}})},u.showPredictiveQueueCampaignInfo=function(e,n){t.show({controller:"PredictiveQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n}})},r.onWithoutApply("voice_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&m.updateVoiceQueue(e,n)}),r.on("userVoiceQueueRt:save",function(e){var n=_.find(u.queues.rows,["id",e.MotionDialerQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("user:agentconnect",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);if(n){if(!t.agentconnected)return;t.queue?n.talking=!0:n.busy=!0,m.updateBusyCounter(e)}})}),r.on("user:agentcomplete",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(n.talking?n.talking=!1:n.busy&&(n.busy=!1),m.updateBusyCounter(e))})}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"voice")})}),e.$on("$destroy",function(){r.removeAllListeners("voice_queue:save"),r.removeAllListeners("userVoiceQueueRt:save"),r.removeAllListeners("user:agentconnect"),r.removeAllListeners("user:agentcomplete"),r.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.motiondialer").controller("QueuesMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t){this.queueCampaign=t,this.addMinutes=function(e,n){return moment(e).add("m",n).format("HH:mm:ss")},this.setFormatTime=function(e){return moment(e).format("HH:mm:ss")},this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$interval","queueCampaign"],angular.module("app.motiondialer").controller("PredictiveQueueCampaignDialogController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.motiondialer.realtime.agents":this.selectedTab=0;break;case"app.motiondialer.realtime.queues":this.selectedTab=1;break;case"app.motiondialer.realtime.queue_calls":this.selectedTab=2;break;case"app.motiondialer.realtime.abandonedcalls":this.selectedTab=3;break;case"app.motiondialer.realtime.queue_params":this.selectedTab=4;break;case"app.motiondialer.realtime.ivr_campaigns":this.selectedTab=5;break;default:this.selectedTab=0,t.go("app.motiondialer.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.motiondialer.realtime.agents");break;case 1:t.go("app.motiondialer.realtime.queues");break;case 2:t.go("app.motiondialer.realtime.queue_calls");break;case 3:t.go("app.motiondialer.realtime.abandonedcalls");break;case 4:t.go("app.motiondialer.realtime.queue_params");break;case 5:t.go("app.motiondialer.realtime.ivr_campaigns");break;default:t.go("app.motiondialer.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.motiondialer").controller("MotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT",g.openchannelAccount=angular.copy(l),g.openchannelAccounts=r,g.newOpenchannelAccount=!1,g.openchannelAccount||(g.openchannelAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="OPENCHANNEL.NEW_OPENCHANNELACCOUNT",g.newOpenchannelAccount=!0),n.params.id&&(g.openchannelAccount.OpenchannelAccountId=n.params.id),g.addNewOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.save(g.openchannelAccount).$promise.then(function(e){g.openchannelAccounts.unshift(e.toJSON()),o.success({title:"OpenchannelAccount properly created",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.update({id:g.openchannelAccount.id},g.openchannelAccount).$promise.then(function(e){var n=_.find(g.openchannelAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelAccount properly saved!",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelAccount will be deleted.").ariaLabel("Delete OpenchannelAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelAccount.delete({id:g.openchannelAccount.id}).$promise.then(function(){_.remove(g.openchannelAccounts,{id:g.openchannelAccount.id}),o.success({title:"OpenchannelAccount properly deleted!",msg:(g.openchannelAccount.name||"openchannelAccount")+" has been deleted!"}),v(g.openchannelAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.openchannelAccount&&(t=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.openchannelAccount&&(a=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelAccounts","openchannelAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccountApp:t,openchannelAccount:r.openchannelAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.openchannelAccountApps.rows[n]=e:r.openchannelAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.openchannelAccountApps.rows.length;t++,0){var a=r.openchannelAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.openchannelAccount.context,a.exten=r.openchannelAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.openchannelAccount.addApplications({id:r.openchannelAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.openchannelAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.openchannelAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.openchannelAccount={},r.openchannelAccountApps={count:0,rows:[]},r.selectedOpenchannelAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]},{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"OpenchannelQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"openchannelQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:801}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.openchannelAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getOpenchannelAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.openchannelAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getOpenchannelAccountApps=function(){r.promise=o.openchannelAccount.getApplications(r.query,t).$promise},r.editOpenchannelAccountApp=n,r.editInterval=function(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteOpenchannelAccountApp=function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedOpenchannelAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedOpenchannelAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedOpenchannelAccountApps.forEach(function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id})}),r.selectedOpenchannelAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelAccount.getAgents({id:c.openchannelAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelAccount?"penalty "+e.UserOpenchannelAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.removeAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.addAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelAccount","openchannelAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditOpenchannelAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("openChannel")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:801}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){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(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELQUEUE",g.openchannelQueue=angular.copy(l),g.openchannelQueues=r,g.newOpenchannelQueue=!1,g.openchannelQueue||(g.openchannelQueue={strategy:"beepall",timeout:10},g.title="OPENCHANNEL.NEW_OPENCHANNELQUEUE",g.newOpenchannelQueue=!0),g.addNewOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.save(g.openchannelQueue).$promise.then(function(e){g.openchannelQueues.unshift(e.toJSON()),o.success({title:"OpenchannelQueue properly created",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.update({id:g.openchannelQueue.id},g.openchannelQueue).$promise.then(function(e){var n=_.find(g.openchannelQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelQueue properly saved!",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelQueue will be deleted.").ariaLabel("Delete OpenchannelQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelQueue.delete({id:g.openchannelQueue.id}).$promise.then(function(){_.remove(g.openchannelQueues,{id:g.openchannelQueue.id}),o.success({title:"OpenchannelQueue properly deleted!",msg:(g.openchannelQueue.name||"openchannelQueue")+" has been deleted!"}),v(g.openchannelQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelQueues","openchannelQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getAgents({id:c.openchannelQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelQueue?"penalty "+e.UserOpenchannelQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","openchannelQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getTeams({id:l.openchannelQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.openchannelQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("OPENCHANNEL.ALL_TEAMS"),labelSelected:t.instant("OPENCHANNEL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.openchannelQueue=c||e.params.openchannelQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoOpenchannelQueues=function(){e.go("app.openchannel.openchannelQueues",{},{reload:"app.openchannel.openchannelQueues"})},u.saveOpenchannelQueue=function(){r.openchannelQueue.update({id:u.openchannelQueue.id},u.openchannelQueue).$promise.then(function(){l.success({title:"OpenchannelQueue updated!",msg:u.openchannelQueue.name?u.openchannelQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelQueue","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelQueues",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.openchannel.openchannelQueues.edit",{id:e.id,openchannelQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelQueue")+"?").htmlContent("<b>"+(e.name||"openchannelQueue")+"</b> will be deleted.").ariaLabel("delete openchannelQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:810}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.openchannel.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.openchannel.realtime.queues",{})}},f.success=E,f.getOpenchannelQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelQueue=function(e,n){i.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:f.openchannelQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelQueue=y,f.exportSelectedOpenchannelQueues=function(){var e=angular.copy(f.selectedOpenchannelQueues);return f.selectedOpenchannelQueues=[],e},f.deleteSelectedOpenchannelQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelQueues?").htmlContent("<b>"+f.selectedOpenchannelQueues.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelQueues.forEach(function(e){y(e)}),f.selectedOpenchannelQueues=[]})},f.deselectOpenchannelQueues=function(){f.selectedOpenchannelQueues=[]},f.selectAllOpenchannelQueues=function(){f.selectedOpenchannelQueues=f.openchannelQueues.rows};var b=!0,A=1;function E(e){f.openchannelQueues=e||{count:0,rows:[]}}function y(e){m.openchannelQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelQueues.rows,{id:e.id}),f.openchannelQueues.count-=1,f.openchannelQueues.rows.length||f.getOpenchannelQueues(),p.success({title:_.startCase("OpenchannelQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelQueuesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("OPENCHANNEL.OPENCHANNELQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("openchannel_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userOpenchannelQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.OpenchannelQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userOpenchannelQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.OpenchannelQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"openchannel")})}),e.$on("$destroy",function(){r.removeAllListeners("openchannel_queue:save"),r.removeAllListeners("userOpenchannelQueue:remove"),r.removeAllListeners("userOpenchannelQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.openchannel").controller("QueuesOpenchannelRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.openchannel.realtime.agents":this.selectedTab=0;break;case"app.openchannel.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.openchannel.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.openchannel.realtime.agents");break;case 1:t.go("app.openchannel.realtime.queues");break;default:t.go("app.openchannel.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.openchannel").controller("OpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.currentUser=s.getCurrentUser(),o.plugin={},o.getTrustedURL=function(){return t.trustAsResourceUrl(o.plugin.adminUrl)},a.plugin.get({id:e.params.id}).$promise.then(function(e){if(e)return o.plugin=e,a.plugin.get({id:o.plugin.id}).$promise}).catch(function(e){o.plugin=void 0})}e.$inject=["$state","$scope","$sce","api","socket","Auth"],angular.module("app.plugins.plugin").controller("PluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this,b=t(function(){},999);function A(){f.agents.rows.forEach(function(e){e.globalStatusDisplayValue=v.getAgentStatusDisplayValue(e)})}function E(){return f.query.offset=(f.query.page-1)*f.query.limit,d.realtime.getAgents(f.query).$promise.then(function(e){f.agents=e,A()}).catch(function(e){m.error({title:o.instant("VOICE.AGENTS"),msg:e.status?JSON.stringify(e.data):e.toString()})})}function y(e,n){if(n)return f.agents.count>f.agents.rows.length?E():(a=n,i=_.remove(f.agents.rows,["id",a]),void(f.agents.count-=i.length));if(f.query.sort.includes("globalStatus")&&(!f.query.globalStatusFilter||"busy"===f.query.globalStatusFilter)){var t="-"===f.query.sort[0]?"DESC":"ASC";if(!1===e)return E();if(!0===e)f.agents.rows=v.sortAgentsByStatus(f.agents.rows,t);else{if(f.agents.count>f.agents.rows.length)return E();f.agents.rows=v.sortAgentsByStatus(f.agents.rows,t)}}var a,i}function S(e){if(0!==f.query.globalQueueFilter.length){var n=e[_.capitalize(f.channel)+"QueueId"];f.query.globalQueueFilter.includes(n)&&E()}}function T(e){if(0!==f.query.globalQueueFilter.length){var n=e[_.capitalize(f.channel)+"QueueId"];f.query.globalQueueFilter.includes(n)&&y(!1,e.UserId)}}f.currentUser=p.getCurrentUser(),f.channel=n.params.channel,f.queueType=n.params.direction,f.agents=r,f.pauses=l||{count:0,rows:[]},f.license=g,f.userProfileSection=u&&1==u.count?u.rows[0]:null,f.crudPermissions=p.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.utcOffset=h,f.query={fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",limit:10,page:1,sort:"fullname",globalStatusFilter:null,pauseTypeFilter:null,globalQueueFilter:[],channel:f.channel},f.getAgents=E,f.logout=function(e){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.LOGOUT"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.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:f.channel,direction:f.queueType,crudPermissions:f.crudPermissions}})},f.pause=function(e,n){return d.user.pause({id:e.id,type:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.PAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.unpause=function(e){return d.user.unpause({id:e.id}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.UNPAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.manageScreenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.SCREENRECORDING"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.clearQueuesSelection=function(){f.query.globalQueueFilter=[]},f.selectAllQueues=function(){f.query.globalQueueFilter=f.queues.rows.map(function(e){return e.id})},f.getQueuesByChannel=function(){if(f.queues&&0<f.queues.count)return;var e={type:f.queueType||"inbound",fields:"id,name",sort:"name",nolimit:"true"},n=f.channel+"Queue";return d.getResourcesByRole(f.currentUser,n,e,null).then(function(e){f.queues=e}).catch(function(e){m.error({title:o.instant("VOICE.QUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},c.on("user:save",function(e){var n=_.find(f.agents.rows,["id",e.id]);n&&(_.merge(n,e),n.globalStatus=v.getAgentStatus(n),v.checkEveryChannelPauseStatus(n),n.globalStatusDisplayValue=v.getAgentStatusDisplayValue(n))}),c.on("user:update",function(e){var n=v.getUserUpdateEventOrigin(e);try{switch(n){case"login":!function(e){var n=!1;f.query.globalStatusFilter?e.loginInPause&&"pause"===f.query.globalStatusFilter?n=!0:e.loginInPause||"idle"!==f.query.globalStatusFilter||(n=!0):n=!0;if(n)E()}(e);break;case"logout":!function(e){if(0===f.agents.count)return;var n=_.find(f.agents.rows,["id",e.id]);{if(!n)return E();y(!1,n.id)}}(e);break;case"pause":t=e,(a=_.find(f.agents.rows,["id",t.id]))?(_.merge(a,t),a.globalStatus=v.getAgentStatus(a),v.checkEveryChannelPauseStatus(a),f.query.globalStatusFilter&&a.globalStatus!==f.query.globalStatusFilter?y(!1,a.id):a.globalStatusDisplayValue=v.getAgentStatusDisplayValue(a)):E()}}catch(e){m.error({title:o.instant("VOICE.AGENTS"),msg:e.toString()})}var t,a}),c.on("user:agentconnect",function(e){try{var n=_.find(f.agents.rows,["id",e.id]);y(!0),e.agentconnected?n?(_.merge(n,_.pick(e,["queue","destconnectedlinenum","routealias"])),y()):y(!1):"busy"!==f.query.globalStatusFilter||n||E()}catch(e){m.error({title:o.instant("VOICE.AGENTS"),msg:e.toString()})}}),c.on("user:agentcomplete",function(e){if("ATTENDED"===e.transfer)return;var n=_.find(f.agents.rows,["id",e.id]);n&&(delete n.queue,delete n.destconnectedlinenum,delete n.routealias,"busy"===f.query.globalStatusFilter?y(!1,e.id):y())}),c.on("userVoiceQueue:save",S),c.on("userVoiceQueue:remove",T),c.on("userChatQueue:save",S),c.on("userChatQueue:remove",T),c.on("userSmsQueue:save",S),c.on("userSmsQueue:remove",T),c.on("userMailQueue:save",S),c.on("userMailQueue:remove",T),c.on("userFaxQueue:save",S),c.on("userFaxQueue:remove",T),c.on("userOpenchannelQueue:save",S),c.on("userOpenchannelQueue:remove",T),c.on("userWhatsappQueue:save",S),c.on("userWhatsappQueue:remove",T),A(),e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),c.removeAllListeners("userVoiceQueue:save"),c.removeAllListeners("userVoiceQueue:remove"),c.removeAllListeners("userChatQueue:save"),c.removeAllListeners("userChatQueue:remove"),c.removeAllListeners("userSmsQueue:save"),c.removeAllListeners("userSmsQueue:remove"),c.removeAllListeners("userMailQueue:save"),c.removeAllListeners("userMailQueue:remove"),c.removeAllListeners("userFaxQueue:save"),c.removeAllListeners("userFaxQueue:remove"),c.removeAllListeners("userOpenchannelQueue:save"),c.removeAllListeners("userOpenchannelQueue:remove"),c.removeAllListeners("userWhatsappQueue:save"),c.removeAllListeners("userWhatsappQueue:remove"),b&&t.cancel(b)})}e.$inject=["$scope","$state","$interval","$mdDialog","$document","$q","$translate","agents","pauses","api","socket","toasty","userProfileSection","Auth","license","realtimeManager","utcOffset"],angular.module("app.realtime").controller("AgentsRealtimeController",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,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("SMS.SMSQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("sms_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userSmsQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.SmsQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userSmsQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.SmsQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"sms")})}),e.$on("$destroy",function(){r.removeAllListeners("sms_queue:save"),r.removeAllListeners("userSmsQueue:remove"),r.removeAllListeners("userSmsQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.sms").controller("QueuesSmsRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.sms.realtime.agents":this.selectedTab=0;break;case"app.sms.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.sms.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.sms.realtime.agents");break;case 1:t.go("app.sms.realtime.queues");break;default:t.go("app.sms.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.sms").controller("SmsRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSACCOUNT",g.smsAccount=angular.copy(l),g.smsAccounts=r,g.newSmsAccount=!1,g.smsAccount||(g.smsAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="SMS.NEW_SMSACCOUNT",g.newSmsAccount=!0),n.params.id&&(g.smsAccount.SmsAccountId=n.params.id),g.addNewSmsAccount=function(){g.errors=[],d.smsAccount.save(g.smsAccount).$promise.then(function(e){g.smsAccounts.unshift(e.toJSON()),o.success({title:"SmsAccount properly created",msg:g.smsAccount.name?g.smsAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsAccount=function(){g.errors=[],d.smsAccount.update({id:g.smsAccount.id},g.smsAccount).$promise.then(function(e){var n=_.find(g.smsAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsAccount properly saved!",msg:g.smsAccount.name?g.smsAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsAccount will be deleted.").ariaLabel("Delete SmsAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsAccount.delete({id:g.smsAccount.id}).$promise.then(function(){_.remove(g.smsAccounts,{id:g.smsAccount.id}),o.success({title:"SmsAccount properly deleted!",msg:(g.smsAccount.name||"smsAccount")+" has been deleted!"}),v(g.smsAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.smsAccount&&(t=_.find(g.lists,{id:Number(g.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.smsAccount&&(a=_.find(g.lists,{id:Number(g.smsAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsAccounts","smsAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccountApp:t,smsAccount:r.smsAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.smsAccountApps.rows[n]=e:r.smsAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.smsAccountApps.rows.length;t++,0){var a=r.smsAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.smsAccount.context,a.exten=r.smsAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.smsAccount.addApplications({id:r.smsAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.smsAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.smsAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.smsAccount={},r.smsAccountApps={count:0,rows:[]},r.selectedSmsAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"SmsQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"smsQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:701}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.smsAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getSmsAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.smsAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getSmsAccountApps=function(){r.promise=o.smsAccount.getApplications(r.query,t).$promise},r.editSmsAccountApp=n,r.editInterval=function(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteSmsAccountApp=function(e){_.remove(r.smsAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedSmsAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedSmsAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedSmsAccountApps.forEach(function(e){_.remove(r.smsAccountApps.rows,{id:e.id})}),r.selectedSmsAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.sms").controller("SmsAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsAccount.getAgents({id:c.smsAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsAccount?"penalty "+e.UserSmsAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.removeAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.addAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsAccount","smsAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditSmsAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("sms")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){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(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSQUEUE",g.smsQueue=angular.copy(l),g.smsQueues=r,g.newSmsQueue=!1,g.smsQueue||(g.smsQueue={strategy:"beepall",timeout:10},g.title="SMS.NEW_SMSQUEUE",g.newSmsQueue=!0),g.addNewSmsQueue=function(){g.errors=[],d.smsQueue.save(g.smsQueue).$promise.then(function(e){g.smsQueues.unshift(e.toJSON()),o.success({title:"SmsQueue properly created",msg:g.smsQueue.name?g.smsQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsQueue=function(){g.errors=[],d.smsQueue.update({id:g.smsQueue.id},g.smsQueue).$promise.then(function(e){var n=_.find(g.smsQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsQueue properly saved!",msg:g.smsQueue.name?g.smsQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsQueue will be deleted.").ariaLabel("Delete SmsQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsQueue.delete({id:g.smsQueue.id}).$promise.then(function(){_.remove(g.smsQueues,{id:g.smsQueue.id}),o.success({title:"SmsQueue properly deleted!",msg:(g.smsQueue.name||"smsQueue")+" has been deleted!"}),v(g.smsQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsQueues","smsQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getAgents({id:c.smsQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsQueue?"penalty "+e.UserSmsQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","smsQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getTeams({id:l.smsQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.smsQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("SMS.ALL_TEAMS"),labelSelected:t.instant("SMS.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.smsQueue=c||e.params.smsQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoSmsQueues=function(){e.go("app.sms.smsQueues",{},{reload:"app.sms.smsQueues"})},u.saveSmsQueue=function(){r.smsQueue.update({id:u.smsQueue.id},u.smsQueue).$promise.then(function(){l.success({title:"SmsQueue updated!",msg:u.smsQueue.name?u.smsQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsQueue","userProfileSection"],angular.module("app.sms").controller("SmsQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsQueues",f.listOrder="",f.listOrderAsc=null,f.selectedSmsQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsQueues.edit",{id:e.id,smsQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsQueue")+"?").htmlContent("<b>"+(e.name||"smsQueue")+"</b> will be deleted.").ariaLabel("delete smsQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:710}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.sms.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.sms.realtime.queues",{})}},f.success=E,f.getSmsQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsQueue=function(e,n){i.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:f.smsQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsQueue=y,f.exportSelectedSmsQueues=function(){var e=angular.copy(f.selectedSmsQueues);return f.selectedSmsQueues=[],e},f.deleteSelectedSmsQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsQueues?").htmlContent("<b>"+f.selectedSmsQueues.length+" selected</b> will be deleted.").ariaLabel("delete SmsQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsQueues.forEach(function(e){y(e)}),f.selectedSmsQueues=[]})},f.deselectSmsQueues=function(){f.selectedSmsQueues=[]},f.selectAllSmsQueues=function(){f.selectedSmsQueues=f.smsQueues.rows};var b=!0,A=1;function E(e){f.smsQueues=e||{count:0,rows:[]}}function y(e){m.smsQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.smsQueues.rows,{id:e.id}),f.smsQueues.count-=1,f.smsQueues.rows.length||f.getSmsQueues(),p.success({title:_.startCase("SmsQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsQueuesController",e)}(),function(){"use strict";function e(e,n,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;function l(e,n,t){return o.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}r.customDashboard={},r.init=function(e,n){r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.customDashboard=e,r.customDashboard.draggable={enabled:!0,handle:".draggable",stop:l},r.customDashboard.resizable={enabled:!0,handle:".resizable",stop:l},r.customDashboard.widgets=[];var t=_.map(["chat","fax","mail","openchannel","sms","voice","whatsapp"],function(e){return"voice"===e?o.rpc.getVoiceQueues({fields:"id,name"}).$promise.then(function(e){r.voiceQueues=e}):(a=(t="chat"===(n=e)?n+"Website":n+"Account")+"s",o[t].get({fields:"id,name"}).$promise.then(function(e){r[a]=e||{count:0,rows:[]}}));var n,t,a});return i.all(t).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.channelStatusOut,o.onSave=function(e){var n=_.find(o.calls.rows,{channel:e.channel});e.channelstatedesc=e.dialstatus?"up":"ring",n?_.merge(n,e):e.channel&&o.calls.rows.push(e)},o.onRemove=function(e){var n=_.findIndex(o.calls.rows,{channel:e.channel});0<=n&&(o.calls.rows[n].status="hangup");t(function(){o.calls.rows.splice(n,1)},5e3)},a.on("voice_outbound_channel:save",o.onSave),a.on("voice_outbound_channel:remove",o.onRemove),e.$on("$destroy",function(){a.removeAllListeners("voice_outbound_channel:save"),a.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$timeout","api","socket","rpcCalls","helperClasses"],angular.module("app.voice").controller("OutboundCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"inbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"inbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","unmanaged","abandoned","sumHoldTime","sumDuration","sumBillable"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="VoiceQueues",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueParamsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("VOICE.VOICEQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:u.queues.rows,realtime:!0,crudPermissions:u.crudPermissions}})},r.onWithoutApply("voice_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&m.updateVoiceQueue(e,n)}),r.on("userVoiceQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.VoiceQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userVoiceQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.VoiceQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:agentconnect",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);if(n){if(!t.agentconnected)return;t.queue?n.talking=!0:n.busy=!0,m.updateBusyCounter(e)}})}),r.on("user:agentcomplete",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(n.talking?n.talking=!1:n.busy&&(n.busy=!1),m.updateBusyCounter(e))})}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"voice")})}),e.$on("$destroy",function(){r.removeAllListeners("voice_queue:save"),r.removeAllListeners("userVoiceQueue:remove"),r.removeAllListeners("userVoiceQueue:save"),r.removeAllListeners("user:agentconnect"),r.removeAllListeners("user:agentcomplete"),r.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.voice").controller("QueuesVoiceRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){var a=this;switch(a.selectedTab=0,t.current.name){case"app.voice.realtime.agents":a.selectedTab=0;break;case"app.voice.realtime.telephones":a.selectedTab=1;break;case"app.voice.realtime.trunks":a.selectedTab=2;break;case"app.voice.realtime.queues":a.selectedTab=3;break;case"app.voice.realtime.queue_calls":a.selectedTab=4;break;case"app.voice.realtime.abandonedcalls":a.selectedTab=5;break;case"app.voice.realtime.queue_params":a.selectedTab=6;break;case"app.voice.realtime.outbound_calls":a.selectedTab=7;break;default:a.selectedTab=0,t.go("app.voice.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.voice.realtime.agents");break;case 1:t.go("app.voice.realtime.telephones");break;case 2:t.go("app.voice.realtime.trunks");break;case 3:t.go("app.voice.realtime.queues");break;case 4:t.go("app.voice.realtime.queue_calls");break;case 5:t.go("app.voice.realtime.abandonedcalls");break;case 6:t.go("app.voice.realtime.queue_params");break;case 7:t.go("app.voice.realtime.outbound_calls");break;default:t.go("app.voice.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.voice").controller("VoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c){var m=this,u=["fullname","internal","state","status"];function p(){_.forIn(m.telephones,function(e,n){m.rpcTelephones[n]&&_.merge(e,_.pick(m.rpcTelephones[n],u))})}m.count=a.count,m.attributes=["fullname","internal","state","status","address"],m.telephones=a?_.keyBy(a.rows?a.rows:[],"id"):{},m.rpcTelephones=i?_.keyBy(i.rows?i.rows:[],"id"):{},m.userProfile=l,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={fields:"id,fullname,internal",role:"telephone",sort:"-updatedAt",limit:10,page:1},m.statusClass=r.status,m.stateClass=r.state,m.success=h,m.$onInit=p,m.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},m.getTelephones=function(){m.query.offset=(m.query.page-1)*m.query.limit,c.hasRole("admin")?m.promise=s.user.get(m.query,h).$promise:(m.query.id=m.userProfile.id,m.query.section="Telephones",m.promise=s.userProfile.getResources(m.query,h).$promise)},m.onSave=function(e){m.telephones[e.id]&&_.merge(m.telephones[e.id],_.pick(e,u))},o.on("telephone:save",m.onSave);var g=!0,v=1;function h(e){m.telephones=e?_.keyBy(e.rows?e.rows:[],"id"):{},p()}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=v),m.getTelephones())}),e.$on("$destroy",function(){o.removeAllListeners("telephone:save")})}e.$inject=["$scope","$timeout","$mdDialog","telephones","rpcTelephones","api","socket","helperClasses","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TelephonesVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TrunksVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEMAIL",g.voicemail=angular.copy(l),g.voicemails=r,g.newVoicemail=!1,g.voicemail||(g.voicemail={attach:"no"},g.title="VOICE.NEW_VOICEMAIL",g.newVoicemail=!0),g.addNewVoicemail=function(){g.errors=[],d.voiceMail.save(g.voicemail).$promise.then(function(e){g.voicemails.unshift(e.toJSON()),o.success({title:"Voicemail properly created",msg:g.voicemail.name?g.voicemail.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoicemail=function(){g.errors=[],d.voiceMail.update({id:g.voicemail.id},g.voicemail).$promise.then(function(e){var n=_.find(g.voicemails,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Voicemail properly saved!",msg:g.voicemail.name?g.voicemail.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoicemail=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicemail will be deleted.").ariaLabel("Delete Voicemail").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMail.delete({id:g.voicemail.id}).$promise.then(function(){_.remove(g.voicemails,{id:g.voicemail.id}),o.success({title:"Voicemail properly deleted!",msg:(g.voicemail.name||"voicemail")+" has been deleted!"}),v(g.voicemail)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicemails","voicemail","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoicemailDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.voicemailMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMail.getMessages(m.query,u).$promise}function g(e){d.voiceMailMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.voicemailMessages.rows,{id:e.id}),m.voicemailMessages.count-=1,m.voicemailMessages.rows.length||p(),l.success({title:"Message deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.voicemail={},m.voicemailMessages={count:0,rows:[]},m.selectedVoicemailMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,callerid,duration,audio,stamp,msg_id",sort:"-stamp",limit:10,page:1},m.init=function(e,n){m.voicemail=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.id=m.voicemail.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the message?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("message #")+e.id||"message")+"</b> will be deleted.").ariaLabel("delete message").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMailMessageDownload=function(s,e,n){return d.voiceMailMessage.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="message"+s.id,a=new Blob(n,{type:e.type});t=s.msg_id+".wav";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getVoicemailMessages=p,m.createOrEditVoicemailMessage=function(e,n){o.show({controller:"CreateOrEditMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/edit/messages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:m.voicemail,message:n,messages:m.voicemailMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedVoicemailMessages=function(){var e=angular.copy(m.selectedVoicemailMessages);return m.selectedVoicemailMessages=[],e},m.deleteVoicemailMessage=g,m.deleteSelectedVoicemailMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected messages?").htmlContent("<b>"+m.selectedVoicemailMessages.length+" selected</b> will be deleted.").ariaLabel("delete messages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedVoicemailMessages.forEach(function(e){g(e)}),m.selectedVoicemailMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("VoicemailMessagesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voicemail=c||e.params.voicemail||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoicemails=function(){e.go("app.voice.voicemails",{},{reload:"app.voice.voicemails"})},u.saveVoicemail=function(){r.voiceMail.update({id:u.voicemail.id},u.voicemail).$promise.then(function(){l.success({title:"Voicemail updated!",msg:u.voicemail.name?u.voicemail.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.voicemail&&(t=_.find(u.contexts,{name:u.voicemail.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voicemail","userProfileSection"],angular.module("app.voice").controller("VoicemailController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicemails=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicemails",f.listOrder="",f.listOrderAsc=null,f.selectedVoicemails=[],f.query={fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,page:1},f.arrayattach=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayenvelope=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydelete=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voicemails.edit",{id:e.id,voicemail:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicemail")+"?").htmlContent("<b>"+(e.name||"voicemail")+"</b> will be deleted.").ariaLabel("delete voicemail").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicemails=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMail.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Voicemails",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoicemail=function(e,n){i.show({controller:"CreateOrEditVoicemailDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:n,voicemails:f.voicemails.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoicemail=y,f.exportSelectedVoicemails=function(){var e=angular.copy(f.selectedVoicemails);return f.selectedVoicemails=[],e},f.deleteSelectedVoicemails=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicemails?").htmlContent("<b>"+f.selectedVoicemails.length+" selected</b> will be deleted.").ariaLabel("delete Voicemails").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicemails.forEach(function(e){y(e)}),f.selectedVoicemails=[]})},f.deselectVoicemails=function(){f.selectedVoicemails=[]},f.selectAllVoicemails=function(){f.selectedVoicemails=f.voicemails.rows};var b=!0,A=1;function E(e){f.voicemails=e||{count:0,rows:[]}}function y(e){m.voiceMail.delete({id:e.id}).$promise.then(function(){_.remove(f.voicemails.rows,{id:e.id}),f.voicemails.count-=1,f.voicemails.rows.length||f.getVoicemails(),p.success({title:_.startCase("Voicemail")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicemails())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicemails","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicemailsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEPREFIX",g.voicePrefix=angular.copy(l),g.voicePrefixes=r,g.newvoicePrefix=!1,g.voicePrefix||(g.voicePrefix={},g.title="VOICE.NEW_VOICEPREFIX",g.newvoicePrefix=!0),g.addNewvoicePrefix=function(){g.errors=[],d.voicePrefix.save(g.voicePrefix).$promise.then(function(e){g.voicePrefixes.unshift(e.toJSON()),o.success({title:"voicePrefix properly created",msg:g.voicePrefix.name?g.voicePrefix.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savevoicePrefix=function(){g.errors=[],d.voicePrefix.update({id:g.voicePrefix.id},g.voicePrefix).$promise.then(function(e){var n=_.find(g.voicePrefixes,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"voicePrefix properly saved!",msg:g.voicePrefix.name?g.voicePrefix.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletevoicePrefix=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicePrefix will be deleted.").ariaLabel("Delete voicePrefix").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voicePrefix.delete({id:g.voicePrefix.id}).$promise.then(function(){_.remove(g.voicePrefixes,{id:g.voicePrefix.id}),o.success({title:"voicePrefix properly deleted!",msg:(g.voicePrefix.name||"voicePrefix")+" has been deleted!"}),v(g.voicePrefix)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.outboundRoutes,{id:e.resourceId})}),t=null;if(g.voicePrefix&&(t=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}g.outboundRoutes=n})}else{var t=[],a=null;g.voicePrefix&&(a=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)}));for(var i=0;i<g.outboundRoutes.length;i++)a&&g.outboundRoutes[i].id===a.id&&(g.outboundRoutes[i].canSelect=!1,t.push(g.outboundRoutes[i]));g.outboundRoutes=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicePrefixes","voicePrefix","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditvoicePrefixDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getAgents({id:c.voicePrefix.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UservoicePrefix?"penalty "+e.UservoicePrefix.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.voicePrefix=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("VOICE.ALL_AGENTS"),labelSelected:r.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","voicePrefixes","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getTeams({id:l.voicePrefix.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voicePrefix=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicePrefixes=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicePrefixes",f.listOrder="",f.listOrderAsc=null,f.selectedVoicePrefixes=[],f.query={fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"voicePrefixagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.teamadddialog=function(e,n){i.show({controller:"voicePrefixteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicePrefix")+"?").htmlContent("<b>"+(e.name||"voicePrefix")+"</b> will be deleted.").ariaLabel("delete voicePrefix").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicePrefixes=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voicePrefix.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoicePrefixes",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditvoicePrefix=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicePrefix:n,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletevoicePrefix=y,f.exportSelectedVoicePrefixes=function(){var e=angular.copy(f.selectedVoicePrefixes);return f.selectedVoicePrefixes=[],e},f.deleteSelectedVoicePrefixes=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicePrefixes?").htmlContent("<b>"+f.selectedVoicePrefixes.length+" selected</b> will be deleted.").ariaLabel("delete voicePrefixs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicePrefixes.forEach(function(e){y(e)}),f.selectedVoicePrefixes=[]})},f.deselectVoicePrefixes=function(){f.selectedVoicePrefixes=[]},f.selectAllVoicePrefixes=function(){f.selectedVoicePrefixes=f.voicePrefixes.rows},g.hasRole("admin")?m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.outboundRoutes,{id:e.resourceId})}),t=null;if(f.voicePrefix&&(t=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}f.outboundRoutes=n})}else{var t=[],a=null;f.voicePrefix&&(a=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)}));for(var i=0;i<f.outboundRoutes.length;i++)a&&f.outboundRoutes[i].id===a.id&&(f.outboundRoutes[i].canSelect=!1,t.push(f.outboundRoutes[i]));f.outboundRoutes=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.voicePrefixes=e||{count:0,rows:[]}}function y(e){m.voicePrefix.delete({id:e.id}).$promise.then(function(){_.remove(f.voicePrefixes.rows,{id:e.id}),f.voicePrefixes.count-=1,f.voicePrefixes.rows.length||f.getVoicePrefixes(),p.success({title:_.startCase("voicePrefix")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoicePrefix"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoicePrefix",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicePrefixes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicePrefixes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicePrefixesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEQUEUE",g.voiceQueue=angular.copy(l),g.voiceQueues=r,g.newVoiceQueue=!1,g.voiceQueue||(g.voiceQueue={type:"inbound",strategy:"ringall",timeout:15,retry:2,random_periodic_announce:"no",announce_holdtime:"no",announce_position:"no",reportholdtime:"no",autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no"},g.title="VOICE.NEW_VOICEQUEUE",g.newVoiceQueue=!0),g.addNewVoiceQueue=function(){g.errors=[],d.voiceQueue.save(g.voiceQueue).$promise.then(function(e){g.voiceQueues.unshift(e.toJSON()),o.success({title:"VoiceQueue properly created",msg:g.voiceQueue.name?g.voiceQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceQueue=function(){g.errors=[],d.voiceQueue.update({id:g.voiceQueue.id},g.voiceQueue).$promise.then(function(e){var n=_.find(g.voiceQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceQueue properly saved!",msg:g.voiceQueue.name?g.voiceQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceQueue will be deleted.").ariaLabel("Delete VoiceQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.voiceQueue.id}).$promise.then(function(){_.remove(g.voiceQueues,{id:g.voiceQueue.id}),o.success({title:"VoiceQueue properly deleted!",msg:(g.voiceQueue.name||"voiceQueue")+" has been deleted!"}),v(g.voiceQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceQueues","voiceQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceQueueDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.voiceQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.voiceQueue=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.voiceQueue.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("VOICE.ALL_AGENTS"),labelSelected:s.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","voiceQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueagentaddController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.voiceQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voiceQueue=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.voiceQueue.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueteamaddController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.voiceQueue=c||t.params.voiceQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.teamadddialog=function(e,n){a.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){a.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},u.alert=l.info,u.gotoVoiceQueues=function(){t.go("app.voice.voiceQueues",{},{reload:"app.voice.voiceQueues"})},u.saveVoiceQueue=function(){r.voiceQueue.update({id:u.voiceQueue.id},u.voiceQueue).$promise.then(function(){l.success({title:"VoiceQueue updated!",msg:u.voiceQueue.name?u.voiceQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.voiceQueue&&(t=_.find(u.musiconholds,{name:u.voiceQueue.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.sounds,{id:e.resourceId})});u.sounds.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.sounds=n})}else u.sounds=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceQueue","userProfileSection"],angular.module("app.voice").controller("VoiceQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceQueues",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceQueues=[],f.query={fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Ringall",value:"'ringall'"},{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Least Recent",value:"'leastrecent'"},{option:"Fewest Calls",value:"'fewestcalls'"},{option:"Random",value:"'random'"},{option:"Linear",value:"'linear'"},{option:"Weight Random",value:"'wrandom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayjoinempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayleavewhenempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrandom_periodic_announce=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_holdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Once",value:"'once'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_position=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Limit",value:"'limit'"},{option:"More",value:"'more'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayreportholdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voiceQueues.edit",{id:e.id,voiceQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceQueue")+"?").htmlContent("<b>"+(e.name||"voiceQueue")+"</b> will be deleted.").ariaLabel("delete voiceQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},f.success=E,f.getVoiceQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoiceQueue=function(e,n){i.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:f.voiceQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceQueue=y,f.exportSelectedVoiceQueues=function(){var e=angular.copy(f.selectedVoiceQueues);return f.selectedVoiceQueues=[],e},f.deleteSelectedVoiceQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceQueues?").htmlContent("<b>"+f.selectedVoiceQueues.length+" selected</b> will be deleted.").ariaLabel("delete VoiceQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceQueues.forEach(function(e){y(e)}),f.selectedVoiceQueues=[]})},f.deselectVoiceQueues=function(){f.selectedVoiceQueues=[]},f.selectAllVoiceQueues=function(){f.selectedVoiceQueues=f.voiceQueues.rows};var b=!0,A=1;function E(e){f.voiceQueues=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceQueues.rows,{id:e.id}),f.voiceQueues.count-=1,f.voiceQueues.rows.length||f.getVoiceQueues(),p.success({title:_.startCase("VoiceQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoiceQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICERECORDING",g.voiceRecording=angular.copy(l),g.voiceRecordings=r,g.newVoiceRecording=!1,g.voiceRecording||(g.voiceRecording={},g.title="VOICE.NEW_VOICERECORDING",g.newVoiceRecording=!0),g.addNewVoiceRecording=function(){g.errors=[],d.voiceRecording.save(g.voiceRecording).$promise.then(function(e){g.voiceRecordings.unshift(e.toJSON()),o.success({title:"VoiceRecording properly created",msg:g.voiceRecording.name?g.voiceRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceRecording=function(){g.errors=[],d.voiceRecording.update({id:g.voiceRecording.id},g.voiceRecording).$promise.then(function(e){var n=_.find(g.voiceRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceRecording properly saved!",msg:g.voiceRecording.name?g.voiceRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceRecording will be deleted.").ariaLabel("Delete VoiceRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceRecording.delete({id:g.voiceRecording.id}).$promise.then(function(){_.remove(g.voiceRecordings,{id:g.voiceRecording.id}),o.success({title:"VoiceRecording properly deleted!",msg:(g.voiceRecording.name||"voiceRecording")+" has been deleted!"}),v(g.voiceRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceRecordings","voiceRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceRecordingDialogController",e)}(),function(){"use strict";function e(e,n){var t=this;t.voiceRecording={},t.init=function(e){t.voiceRecording=e}}e.$inject=["api","toasty"],angular.module("app.voice").controller("VoiceRecordingSentimentStatisticsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,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,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("WHATSAPP.WHATSAPPQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("whatsapp_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userWhatsappQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.WhatsappQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userWhatsappQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.WhatsappQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"whatsapp")})}),e.$on("$destroy",function(){r.removeAllListeners("whatsapp_queue:save"),r.removeAllListeners("userWhatsappQueue:remove"),r.removeAllListeners("userWhatsappQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.whatsapp").controller("QueuesWhatsappRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.whatsapp.realtime.agents":this.selectedTab=0;break;case"app.whatsapp.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.whatsapp.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.whatsapp.realtime.agents");break;case 1:t.go("app.whatsapp.realtime.queues");break;default:t.go("app.whatsapp.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.whatsapp").controller("WhatsappRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){"twilio"===g.whatsappAccount.type&&(g.whatsappAccount.baseUrl=null)}function h(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPACCOUNT",g.whatsappAccount=angular.copy(l),g.whatsappAccounts=r,g.newWhatsappAccount=!1,g.whatsappAccount||(g.whatsappAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",notificationSound:!0,queueTransferTimeout:300,waitForTheAssignedAgent:10,agentTransferTimeout:300},g.title="WHATSAPP.NEW_WHATSAPPACCOUNT",g.newWhatsappAccount=!0),n.params.id&&(g.whatsappAccount.WhatsappAccountId=n.params.id),g.addNewWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.save(g.whatsappAccount).$promise.then(function(e){g.whatsappAccounts.unshift(e.toJSON()),o.success({title:"WhatsappAccount properly created",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.update({id:g.whatsappAccount.id},g.whatsappAccount).$promise.then(function(e){var n=_.find(g.whatsappAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappAccount properly saved!",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappAccount will be deleted.").ariaLabel("Delete WhatsappAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappAccount.delete({id:g.whatsappAccount.id}).$promise.then(function(){_.remove(g.whatsappAccounts,{id:g.whatsappAccount.id}),o.success({title:"WhatsappAccount properly deleted!",msg:(g.whatsappAccount.name||"whatsappAccount")+" has been deleted!"}),h(g.whatsappAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=h,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.whatsappAccount&&(t=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.whatsappAccount&&(a=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.pauses,{id:e.resourceId})});g.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.pauses=n})}else g.pauses=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappAccounts","whatsappAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccountApp:t,whatsappAccount:r.whatsappAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.whatsappAccountApps.rows[n]=e:r.whatsappAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.whatsappAccountApps.rows.length;t++,0){var a=r.whatsappAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.whatsappAccount.context,a.exten=r.whatsappAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.whatsappAccount.addApplications({id:r.whatsappAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.whatsappAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.whatsappAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.whatsappAccount={},r.whatsappAccountApps={count:0,rows:[]},r.selectedWhatsappAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"WhatsappQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"whatsappQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:2102}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.whatsappAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getWhatsappAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.whatsappAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getWhatsappAccountApps=function(){r.promise=o.whatsappAccount.getApplications(r.query,t).$promise},r.editWhatsappAccountApp=n,r.editInterval=function(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteWhatsappAccountApp=function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedWhatsappAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedWhatsappAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedWhatsappAccountApps.forEach(function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id})}),r.selectedWhatsappAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappAccount.getAgents({id:c.whatsappAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappAccount?"penalty "+e.UserWhatsappAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.removeAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.addAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappAccount","whatsappAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditWhatsappAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("whatsapp")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){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(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPQUEUE",g.whatsappQueue=angular.copy(l),g.whatsappQueues=r,g.newWhatsappQueue=!1,g.whatsappQueue||(g.whatsappQueue={strategy:"beepall",timeout:10},g.title="WHATSAPP.NEW_WHATSAPPQUEUE",g.newWhatsappQueue=!0),g.addNewWhatsappQueue=function(){g.errors=[],d.whatsappQueue.save(g.whatsappQueue).$promise.then(function(e){g.whatsappQueues.unshift(e.toJSON()),o.success({title:"WhatsappQueue properly created",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappQueue=function(){g.errors=[],d.whatsappQueue.update({id:g.whatsappQueue.id},g.whatsappQueue).$promise.then(function(e){var n=_.find(g.whatsappQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappQueue properly saved!",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappQueue will be deleted.").ariaLabel("Delete WhatsappQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappQueue.delete({id:g.whatsappQueue.id}).$promise.then(function(){_.remove(g.whatsappQueues,{id:g.whatsappQueue.id}),o.success({title:"WhatsappQueue properly deleted!",msg:(g.whatsappQueue.name||"whatsappQueue")+" has been deleted!"}),v(g.whatsappQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappQueues","whatsappQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getAgents({id:c.whatsappQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappQueue?"penalty "+e.UserWhatsappQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","whatsappQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getTeams({id:l.whatsappQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.whatsappQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("WHATSAPP.ALL_TEAMS"),labelSelected:t.instant("WHATSAPP.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.whatsappQueue=c||e.params.whatsappQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoWhatsappQueues=function(){e.go("app.whatsapp.whatsappQueues",{},{reload:"app.whatsapp.whatsappQueues"})},u.saveWhatsappQueue=function(){r.whatsappQueue.update({id:u.whatsappQueue.id},u.whatsappQueue).$promise.then(function(){l.success({title:"WhatsappQueue updated!",msg:u.whatsappQueue.name?u.whatsappQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappQueue","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappQueues",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappQueues.edit",{id:e.id,whatsappQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappQueue")+"?").htmlContent("<b>"+(e.name||"whatsappQueue")+"</b> will be deleted.").ariaLabel("delete whatsappQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:2110}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.whatsapp.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.whatsapp.realtime.queues",{})}},f.success=E,f.getWhatsappQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappQueue=function(e,n){i.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:f.whatsappQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappQueue=y,f.exportSelectedWhatsappQueues=function(){var e=angular.copy(f.selectedWhatsappQueues);return f.selectedWhatsappQueues=[],e},f.deleteSelectedWhatsappQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappQueues?").htmlContent("<b>"+f.selectedWhatsappQueues.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappQueues.forEach(function(e){y(e)}),f.selectedWhatsappQueues=[]})},f.deselectWhatsappQueues=function(){f.selectedWhatsappQueues=[]},f.selectAllWhatsappQueues=function(){f.selectedWhatsappQueues=f.whatsappQueues.rows};var b=!0,A=1;function E(e){f.whatsappQueues=e||{count:0,rows:[]}}function y(e){m.whatsappQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappQueues.rows,{id:e.id}),f.whatsappQueues.count-=1,f.whatsappQueues.rows.length||f.getWhatsappQueues(),p.success({title:_.startCase("WhatsappQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappQueuesController",e)}(),function(){"use strict";function e(n,t,e,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.query={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0},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"},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"},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(){h.connect(),h.on("user:update",I.onUserUpdate),h.on("user:called",I.onUserCalled),h.on("chatInternalMessage:save",I.onInternalMessageSave),h.on("chatInternalMessage:update",I.onInternalMessageUpdate),h.on("userVoiceQueue:save",I.onUserVoiceQueue),h.on("voiceQueue:save",I.onVoiceQueue),h.on("userVoiceQueue:remove",I.onUserVoiceQueue),h.on("voiceQueue:remove",I.onVoiceQueue),h.on("voiceQueue:update",I.onVoiceQueue),h.on("user:forcelogout",M),h.on("userNotification:send",U),h.on("userNotification:recalc:"+I.user.id,F)}function R(){h.disconnect("logout")}function x(e){I.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}function N(){I.promise=f.user.getQueues(I.query,x).$promise}function D(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 P(){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 L(e){return R(),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 k(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 M(e){if(C.debug("onForceLogout -> data",e),e.user.id===I.user.id&&0!==I.user.showWebBar)return R(),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 U(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 F(e){f.user.get({id:I.currentUser.id}).$promise.then(function(e){I.currentUser.permissions=e.permissions,I.autoanswerIconColor=P()?"green-700-fg":"gray-700-fg"})}I.toggleSidenav=function(e){i(e).toggle()},I.logout=L,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=k,I.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},I.onUserUpdate=function(e){if(e.id===I.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==I.user.showWebBar){var n;R();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(){w(),_.merge(I.user,e),v.setCurrentUser(I.user)})}).catch(function(){clearTimeout(n),L(!0)})}else L(!0);else _.merge(I.user,e),v.setCurrentUser(I.user)},I.onUserCalled=function(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})}},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"}):D(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){if(P()){I.autoanswerNotifications;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}})}else 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.onInternalMessageSave=function(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++},I.onInternalMessageUpdate=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--},I.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&N()},I.onVoiceQueue=function(){N()},I.hasPermission=function(e){return _.includes(I.currentUser.permissions,e)},function(){I.user=v.getCurrentUser(),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)?k(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 k(null,!0);F()}(),N(),w(),I.openPreviewDialog=D,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("userAutoanswerNotification:send"),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/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="CHAT.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n        <th md-column>{{ \'CHAT.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'CHAT.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'CHAT.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="CHAT.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="CHAT.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/chat/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/companies.html",'<div id="companies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.COMPANIES">Companies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCompanies.length > 0" class="selected-bar header 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\'" ng-click="vm.originateCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.transferCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.agentsQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.agentsQuery.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.QUEUES"></span>\n      <ms-search-bar on-search="vm.getVoiceQueues()" query="vm.queuesQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.queuesQuery.sort" md-on-reorder="vm.getVoiceQueues">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'VOICE.CALLS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceQueues.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="queue in vm.voiceQueues.rows">\n          <td md-cell>{{queue.id}}</td>\n          <td md-cell>{{queue.name}}</td>\n          <td md-cell>{{queue.calls.length || 0}}</td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-click="vm.originateCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-click="vm.transferCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.queuesQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queuesQuery.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header indigo-A100-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.RECORDINGS">Recordings</span>\n      <ms-search-bar on-search="vm.getVoiceRecordings()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n        <tr md-row>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n          <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n          <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n          <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n          <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n          <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n          <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n          <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n          <th md-column width="10px" ng-if="vm.currentUser.downloadVoiceRecordings"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n          <td md-cell colspan="{{ vm.currentUser.downloadVoiceRecordings ? 10 : 9}}">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n          <td md-cell class="type">{{voiceRecording.type}}</td>\n          <td md-cell class="uniqueid">{{voiceRecording.uniqueid}}</td>\n          <td md-cell class="calleridnum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.calleridnum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="exten">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.exten" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="connectedlinenum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.connectedlinenum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="queue">{{voiceRecording.queue}}</td>\n          <td md-cell class="rating">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n          </td>\n          <td md-cell class="audio" ng-switch="voiceRecording.format">\n            \x3c!-- audio recording directive --\x3e\n            <ms-recording ng-switch-when=".wav" id="voiceRecording.id"></ms-recording>\n            \x3c!-- / audio recording directive --\x3e\n            <span ng-switch-when=".gsm">\n              <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n            </span>\n          </td>\n          <td md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n          <td md-cell class="actions" ng-if="vm.currentUser.downloadVoiceRecordings">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.downloadfile(voiceRecording, $event)" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                    Download VoiceRecording\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\'">\n                  <md-button ng-click="vm.downloadtranscribe(voiceRecording, $event)" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                    Download Transcribe\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-grey-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScheduledCalls()">\n      </ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm.getScheduledCalls()" aria-label="Refresh scheduled calls" translate translate-attr-label="MOTIONDIALER.REFRESH_SCHEDULED_CALLS">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'MOTIONDIALER.REFRESH_SCHEDULED_CALLS\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduledCalls">\n        <tr md-row>\n          <th md-column>{{\'MOTIONDIALER.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{ \'MOTIONDIALER.PHONE\' | translate }}</th>\n          <th md-column md-order-by="scheduledat">{{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n          <th md-column md-order-by="recallme">{{ \'MOTIONDIALER.RECALLME\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.CAMPAIGN\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.scheduledCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="scheduledCall in vm.scheduledCalls.rows">\n          <td md-cell privacy ng-cloak>{{scheduledCall.Contact.firstName}} {{scheduledCall.Contact.lastName}}</td>\n          <td md-cell>\n            <ms-click-to-call target="scheduledCall.phone" license="vm_home.license"></ms-click-to-call>\n          </td>\n          <td md-colors="{color: {{ vm.isDateBeforeToday(scheduledCall.scheduledat) ? \'\\\'red\\\'\' : \'\\\'green\\\'\' }}}" md-cell>{{ scheduledCall.scheduledat | date:\'medium\' }}</td>\n          <td md-cell>{{ vm.priorities[scheduledCall.priority] }}</td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.recallme && scheduledCall.UserId == vm.currentUser.id ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ scheduledCall.recallme  && scheduledCall.UserId == vm.currentUser.id ? \'icon-check\' : \'icon-close\' }}">\n            </md-icon>\n          </td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.Queue.dialActive? \'\\\'green\\\'\' : \'\\\'red\\\'\' }}}" md-font-icon="icon-checkbox-blank-circle"></md-icon> {{scheduledCall.Queue.name}}\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.createOrEditQueueCampaignHopper($event, scheduledCall)" translate="MOTIONDIALER.EDIT_HOPPER">\n                    Edit Hopper\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.deleteConfirm(scheduledCall, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                    Delete Hopper\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.scheduledCalls.count}}" md-on-paginate="vm.getScheduledCalls" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.SMS_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getSmsInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getSmsInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getSmsInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.smsAccounts.rows && vm.smsAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="smsAccount in vm.smsAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeSmsInteraction($event, smsAccount)">\n              {{ smsAccount.name }} ({{ smsAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.smsInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.smsInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="smsAccount">\n            {{ vm.getSmsAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showSmsInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadSmsInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsInteractions.count}}" md-on-paginate="vm.getSmsInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.CALLS">Calls</span>\n      <ms-search-bar on-search="vm.getVoiceCalls()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceCalls()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'VOICE.ID\' | translate}}</th>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="source">{{ \'VOICE.SOURCE\' | translate }}</th>\n          <th md-column md-order-by="destination">{{ \'VOICE.DESTINATION\' | translate }}</th>\n          <th md-column md-order-by="starttime">{{ \'VOICE.STARTEDAT\' | translate }}</th>\n          <th md-column md-order-by="endtime">{{ \'VOICE.ENDEDAT\' | translate }}</th>\n          <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column>{{ \'VOICE.NOTE\' | translate }}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceCall in vm.voiceCalls.rows" ng-click="vm.showDetails(voiceCall, $event)">\n          <td md-cell class="type">{{voiceCall.id}}</td>\n          <td md-cell class="type">{{ \'VOICE.\' + voiceCall.type.toUpperCase() | translate}}</td>\n          <td md-cell class="source">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.source" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="destination">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.destination" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="starttime">{{voiceCall.starttime | date:\'medium\' }}</td>\n          <td md-cell class="endtime">{{voiceCall.endtime | date:\'medium\' }}</td>\n          <td md-cell class="disposition">{{ voiceCall.userDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userSecondDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userThirdDisposition}}</td>\n          <td md-cell class="note">\n            <md-icon ng-if="voiceCall.note" md-font-icon="icon-clipboard-outline"></md-icon>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.showDetails(voiceCall, $event)" translate="VOICE.DETAILS">\n                    Show Details\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceCalls.count}}" md-on-paginate="vm.getVoiceCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",'<md-dialog class="details-dialog" aria-label="details">\n  <md-toolbar class="md-background-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span ng-if="!vm.interaction.closed" class="title" translate="VOICE.DETAILS"></span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <md-list flex>\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.UNIQUEID">Uniqueid</p>\n          <h4>{{vm.call.uniqueid}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.TYPE">Type</p>\n          <h4>{{vm.call.type ? vm.call.type : \'no type\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.SOURCE">Source</p>\n          <h4 privacy ng-cloak>{{vm.call.source ? vm.call.source : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DESTINATION">Destination</p>\n          <h4 privacy ng-cloak>{{vm.call.destination ? vm.call.destination : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.STARTEDAT">Started At</p>\n          <h4>{{vm.call.starttime | date:\'medium\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ANSWEREDAT">Answered At</p>\n          <h4>{{vm.call.answertime ? (vm.call.answertime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ENDEDAT">Ended At</p>\n          <h4>{{vm.call.endtime ? (vm.call.endtime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DURATION">Duration</p>\n          <h4>{{vm.call.duration ? vm.call.duration : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.BILLABLESECONDS">Billable Seconds</p>\n          <h4>{{vm.call.billableseconds ? vm.call.billableseconds : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DISPOSITION">Disposition</p>\n          <h4>{{vm.call.userDisposition ? vm.call.userDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n          <h4>{{vm.call.userSecondDisposition ? vm.call.userSecondDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n          <h4>{{vm.call.userThirdDisposition ? vm.call.userThirdDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.NOTE">Note</p>\n          <h4>{{vm.call.note ? vm.call.note : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n    </md-list>\n  </md-dialog-content>\n\n  <md-dialog-actions layout="row" layout-align="space-between center">\n    <md-button type="button" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="DISPOSE" translate="VOICE.CLOSE" translate-attr-aria-label="VOICE.DISPOSE">\n      CLOSE\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.WHATSAPP_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getWhatsappInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getWhatsappInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getWhatsappInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.whatsappAccounts.rows && vm.whatsappAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeWhatsappInteraction($event, whatsappAccount)">\n              {{ whatsappAccount.name }} ({{ whatsappAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.whatsappInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.whatsappInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="whatsappAccount">\n            {{ vm.getWhatsappAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showWhatsappInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadWhatsappInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappInteractions.count}}" md-on-paginate="vm.getWhatsappInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html",'<md-content layout="row" layout-fill>\n\n  <div flex layout="row">\n\n    <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="width: 100%; height: 100%; border:0px;"></iframe>\n\n  </div>\n\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",'<md-dialog id="agent-general-dialog" aria-label="Spy Dialog">\n  <div id="interaction-app" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'"></div>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html\'"></div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n\n    <md-card flex="75" class="interaction">\n\n      <md-content class="interaction-agents" layout="row" layout-align="start center" ng-if="!vm.interaction.closed && vm.interaction.Users.length">\n        <strong layout-margin translate="DASHBOARDS.CURRENTLY_IN_USE_BY">Currently in use by </strong>\n\n        <div ng-repeat="u in vm.interaction.Users">\n          <img class="avatar-small" ng-src="api/users/{{u.id}}/avatar">\n          <md-tooltip> {{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : vm.usersMap[u.id] | translate }}\n          </md-tooltip>\n        </div>\n      </md-content>\n\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html\'">\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex 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/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n        <th md-column>{{ \'FAX.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'FAX.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'FAX.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="FAX.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="FAX.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/fax/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n          <th md-column>{{ \'FAX.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'FAX.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'FAX.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'FAX.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="FAX.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="FAX.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/help/views/about/about.html",'<div id="maintenance" class="flex-scrollable" layout="column">\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/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n        <th md-column>{{ \'MAIL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MAIL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MAIL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MAIL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MAIL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/mail/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/create/dialog.html",'<md-dialog class="plugin-dialog" aria-label="New Plugin">\n  <form name="pluginForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'MOTIONDIALER.DID\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.CALLER\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.AGENT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'MOTIONDIALER.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="MOTIONDIALER.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="MOTIONDIALER.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="MOTIONDIALER.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                                MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.MANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.DROPPED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(queue.answered + queue.outboundNoAnswerCallsDay + queue.outboundBusyCallsDay + queue.outboundCongestionCallsDay + queue.outboundNoSuchCallsDay + queue.outboundUnknownCallsDay + queue.outboundDropCallsDayTimeout + queue.outboundDropCallsDayCallersExit + queue.outboundBlacklistCallsDay + queue.outboundOriginateFailureCallsDay + queue.outboundAnswerAgiCallsDay + queue.outboundReCallsDay + queue.outboundRejectCallsDay )|| 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{queue.total || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.answered) ? (100 - (((queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total)) | number:1 ) - (((queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total )) | number:1 )  ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayCallersExit || 0}} ({{(queue.outboundDropCallsDayCallersExit) ? (queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayTimeout || 0}} ({{(queue.outboundDropCallsDayTimeout) ? (queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumHoldTime / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumDuration / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",'<md-dialog class="predictive-dialog" aria-label="New predictive">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.queueCampaign.name }} Info</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="text-center">\n    <ds-widget-clock data-show-digital></ds-widget-clock>\n    <div ng-if="!vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive">\n      <div class="md-title"><span translate="MOTIONDIALER.PREDICTIVE_IS_NOT_RUNNING">Predictive is not running</span></div>\n    </div>\n\n    <div ng-if="vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.DATA_COLLECTION_IN_PROGRESSIVE">Data collection in progressive</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startProgressive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startProgressive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n    </div>\n    <div ng-if="vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.PREDICTIVE_IS_RUNNING">Predictive is runnning</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startPredictive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startPredictive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n      <div class="row">\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">Predictive - {{ \'MOTIONDIALER.PREVIOUS_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.TOTAL_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalTotalCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ANSWERED_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalAnsweredCalls }}</td>\n                </tr>\n                \x3c!-- Temporaneamente non mostrate perchè contengono anche i dati dell\'intervallo corrente --\x3e\n                \x3c!-- <tr md-row>\n                                    <td md-cell>Dropped Calls Timeout</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsTimeout }}</td>\n                                </tr>\n                                <tr md-row>\n                                    <td md-cell>Dropped Calls Caller Exit</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsCallersExit }}\n                                    </td>\n                                </tr> --\x3e\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_HOLD_TIME">AVG Hold Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgHoldtime | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_TALK_TIME">AVG Talk Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgTalktime | number:0 }}s</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">ErlangB - {{ \'MOTIONDIALER.CURRENT_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ONE_CALL_EVERY">One call every</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.erlangCallToSecond | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.DROPRATE">Drop Rate</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangAbandonmentRate * 100 | number:2 }}%</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AGENTBUSYFACTOR">Agent Busy Factor</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangBusyFactor * 100 | number:2 }}%</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n      </div>\n    </div>\n\n\n  </md-dialog-content>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TALKING\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.BUSY\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.WAITING\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.ORIGINATED_TEXT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.MESSAGE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking  + queue.pTalking}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb - queue.available - queue.paused - queue.talking - queue.waiting\n               }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.originated }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.message ? (\'MOTIONDIALER.\'+queue.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.dialMethod || 0 }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.Trunk ? queue.Trunk.name : \'--\' }}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{queue.dialActive ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{queue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MOTIONDIALER.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if="queue.dialMethod == \'predictive\'">\n                <md-button ng-click="vm.showPredictiveQueueCampaignInfo($event, queue)" translate="MOTIONDIALER.SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO">\n                  Show Predictive Info\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MOTIONDIALER.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="OPENCHANNEL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="OPENCHANNEL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="OPENCHANNEL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/openchannel/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/plugins/views/plugin/plugin.html",'<div ng-if="!vm.plugin">\n  <p>Plugin not available...</p>\n</div>\n<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/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/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/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="SMS.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n        <th md-column>{{ \'SMS.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'SMS.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'SMS.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="SMS.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="SMS.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/sms/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/create/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n        <th md-column>{{ \'VOICE.AGENT\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="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="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>\n          <span>{{channel.calleridname}}, {{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>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                        VOICE.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ANSWERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.UNMANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          \x3c!-- <span class="font-size-20 grey-fg">{{queue.total || 0}}</span> --\x3e\n          <span class="font-size-20 grey-fg">{{ (queue.answered || 0) + (queue.abandoned || 0) + (queue.unmanaged || 0) }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.total) ? (queue.answered || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.abandoned || 0}} ({{(queue.total) ? (queue.abandoned || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.unmanaged || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? ((queue.sumHoldTime || 0) / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{(queue.total ? ((queue.sumDuration || 0) / queue.total) : 0) | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n        <th md-column>{{ \'VOICE.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'VOICE.TALKING\' | translate }}</th>\n        <th md-column>{{ \'VOICE.BUSY\' | translate }}</th>\n        <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.busy }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="VOICE.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="VOICE.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TELEPHONES">Telephones</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.OUTBOUND_CALLS">Outbound Calls</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/realtime/telephones/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TELEPHONES">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTelephones()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n      <tr md-row>\n        <th md-column md-order-by="fullname">{{ \'VOICE.ACCOUNTNAME\' | translate }}</th>\n        <th md-column md-order-by="internal">{{ \'VOICE.INTERNAL\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATUS\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.telephones">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="telephone" md-select-id="id" ng-repeat="(id, telephone) in vm.telephones">\n        <td md-cell>{{telephone.fullname}}</td>\n        <td md-cell>{{telephone.internal}}</td>\n        <td md-cell>\n          <i ng-class="vm.stateClass[telephone.state]">\n            <md-tooltip>{{\'VOICE.\' + telephone.state | uppercase | translate}}</md-tooltip>\n          </i>\n        </td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[telephone.status]">\n            <md-tooltip>{{\'VOICE.\' + telephone.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="telephone.status === \'registered\'" class="text-boxed">{{telephone.address}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n          <th md-column>{{ \'VOICE.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'VOICE.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'VOICE.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'VOICE.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="VOICE.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="VOICE.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/voicemails/create/dialog.html",'<md-dialog class="voicemail-dialog" aria-label="New Voicemail">\n  <form name="voicemailForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="WHATSAPP.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="WHATSAPP.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="WHATSAPP.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/whatsapp/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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">{{vm.contacts > 99 ? \'99+\' : vm.contacts}}</div>\n      <md-icon md-font-icon="icon-fire" class="icon red-900-fg"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.PREVIEW">Preview</span></md-tooltip>\n    </md-button>\n\n    <ms-search-bar ng-if="vm.user.role !== \'agent\'" on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300" collapse-on-blur="true"></ms-search-bar>\n\n    <md-menu id="language-menu" md-offset="0 72" md-position-mode="target-right target" layout="column" layout-align="center center">\n      <md-button class="md-icon-button no-margin" ng-click="$mdOpenMenu()" aria-label="Language" md-menu-origin md-menu-align-target>\n        <div layout="row" layout-align="center center">\n          <img class="flag" ng-src="assets/images/flags/{{vm.selectedLanguage.flag}}.png">\n        </div>\n      </md-button>\n\n      <md-menu-content width="3" id="language-menu-content">\n        <md-menu-item ng-repeat="(iso, lang) in vm.languages">\n          <md-button ng-click="vm.changeLanguage(lang)" aria-label="{{lang.title}}" translate translate-attr-aria-label="{{lang.title}}">\n            <span layout="row" layout-align="start center">\n              <img class="flag flag-24" ng-src="assets/images/flags/{{lang.flag}}.png">\n              <span>{{ 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",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",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",controller:"QueuesChatRealtimeController as vm",templateUrl:"app/main/apps/chat/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:510})}e.$inject=["$stateProvider"],angular.module("app.chat.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.contactmanager",{abstract:!0,url:"/contactmanager"}).state("app.contactmanager.lists",{url:"/lists",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/lists.html",controller:"ListsController as vm"}},resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadContactManagerLists",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.lists.edit",{url:"/:id?tab",params:{list:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/edit/view.html",controller:"ListController as vm"}},resolve:{list:["apiResolver","$stateParams",function(e,n){return e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.companies",{url:"/companies",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/companies.html",controller:"CompaniesController as vm"}},resolve:{companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.companies.edit",{url:"/:id?tab",params:{company:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/edit/view.html",controller:"CompanyController as vm"}},resolve:{company:["apiResolver","$stateParams",function(e,n){return e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.globalCustomFields",{url:"/globalCustomFields",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",controller:"GlobalCustomFieldsController as vm"}},resolve:{globalCustomFields:["apiResolver","Auth",function(e,n){return e.resolve("cmCustomField@get",{fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:304})}]},authenticate:!0,permissionId:304,bodyClass:"contactmanager"}),n.addPart("app/main/apps/contactmanager")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.contactmanager",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.contactmanager.contacts"]).config(e)}(),function(){"use strict";function e(e){e.state("app.contactmanager.contacts",{url:"/contacts?ListId&CompanyId",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/contacts.html",controller:"ContactsController as vm"}},resolve:{contacts:["apiResolver","Auth","$stateParams",function(e,n,t){return n.hasRole("admin")?e.resolve("cmContact@get",_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t)):e.resolve("userProfile@getResources",_.merge({id:n.getCurrentUser().userProfileId,section:"Contacts",includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t))}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],listsMap:["lists",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"id,name",sort:"name",nolimit:!0})}],companiesMap:["companies",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"id,name",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"}).state("app.contactmanager.contacts.edit",{url:"/:id?tab",params:{crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/edit/view.html",controller:"ContactController as vm"}},resolve:{contact:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@get",{id:n.id}).then(function(e){return e.dateOfBirth&&(e.dateOfBirth=new Date(e.dateOfBirth)),e}).catch(function(e){console.error(e)})}],hoppers:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHoppers",{id:n.id,fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,offset:0})}],finals:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperFinals",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-updatedAt",limit:10,offset:0})}],histories:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperHistories",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,offset:0})}],jscriptySessions:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getJscriptySessions",{id:n.id,fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,offset:0})}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get"):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies"})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],customFields:["apiResolver","contact",function(e,n){return n.ListId?e.resolve("cmList@getCustomFields",{id:n.ListId}):null}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{sort:"name"}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"})}e.$inject=["$stateProvider"],angular.module("app.contactmanager.contacts",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.dashboards",{abstract:!0,url:"/dashboards"}),n.addPart("app/main/apps/dashboards")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.dashboards",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.dashboards.general","app.dashboards.custom"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.custom",{url:"/custom/:id",views:{"content@app":{templateUrl:"app/main/apps/dashboards/views/custom/custom.html",controller:"DashboardCustomController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(n,e){var 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:100})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.custom",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general",{url:"/general",views:{"content@app":{templateProvider:["$stateParams","$templateFactory","Auth","$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,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",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",controller:"QueuesFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.accounts",{url:"/accounts",controller:"FaxAccountsRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/accounts/view.html",resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}],rpcFaxAccounts:["apiResolver",function(e){return e.resolve("rpc@getFaxAccounts")}]},authenticate:!0,permissionId:910})}e.$inject=["$stateProvider"],angular.module("app.fax.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.help",{abstract:!0,url:"/help"}),n.addPart("app/main/apps/help")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.help",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.help.about"]).config(e)}(),function(){"use strict";function e(e){e.state("app.help.about",{url:"/about",views:{"content@app":{templateUrl:"app/main/apps/help/views/about/about.html",controller:"AboutController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1600,bodyClass:"help"})}e.$inject=["$stateProvider"],angular.module("app.help.about",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.integrations",{abstract:!0,url:"/integrations"}).state("app.integrations.zendeskAccounts",{url:"/zendeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",controller:"ZendeskAccountsController as vm"}},resolve:{zendeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZendeskAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.zendeskAccounts.edit",{url:"/:id?tab",params:{zendeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/view.html",controller:"ZendeskAccountController as vm"}},resolve:{zendeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts",{url:"/salesforceAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",controller:"SalesforceAccountsController as vm"}},resolve:{salesforceAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SalesforceAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts.edit",{url:"/:id?tab",params:{salesforceAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/view.html",controller:"SalesforceAccountController as vm"}},resolve:{salesforceAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts",{url:"/freshdeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",controller:"FreshdeskAccountsController as vm"}},resolve:{freshdeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshdeskAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts.edit",{url:"/:id?tab",params:{freshdeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",controller:"FreshdeskAccountController as vm"}},resolve:{freshdeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts",{url:"/sugarcrmAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",controller:"SugarcrmAccountsController as vm"}},resolve:{sugarcrmAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SugarcrmAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts.edit",{url:"/:id?tab",params:{sugarcrmAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",controller:"SugarcrmAccountController as vm"}},resolve:{sugarcrmAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.deskAccounts",{url:"/deskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/deskAccounts.html",controller:"DeskAccountsController as vm"}},resolve:{deskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"DeskAccounts",fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.deskAccounts.edit",{url:"/:id?tab",params:{deskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/view.html",controller:"DeskAccountController as vm"}},resolve:{deskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.zohoAccounts",{url:"/zohoAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",controller:"ZohoAccountsController as vm"}},resolve:{zohoAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZohoAccounts",fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.zohoAccounts.edit",{url:"/:id?tab",params:{zohoAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/view.html",controller:"ZohoAccountController as vm"}},resolve:{zohoAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts",{url:"/vtigerAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",controller:"VtigerAccountsController as vm"}},resolve:{vtigerAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VtigerAccounts",fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts.edit",{url:"/:id?tab",params:{vtigerAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/view.html",controller:"VtigerAccountController as vm"}},resolve:{vtigerAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts",{url:"/dynamics365Accounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",controller:"Dynamics365AccountsController as vm"}},resolve:{dynamics365Accounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,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,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",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",controller:"QueuesMailRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.accounts",{url:"/accounts",controller:"MailAccountsRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/accounts/view.html",resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}],rpcMailAccounts:["apiResolver",function(e){return e.resolve("rpc@getMailAccounts")}]},authenticate:!0,permissionId:610})}e.$inject=["$stateProvider"],angular.module("app.mail.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.marketplace",{abstract:!0,url:"/marketplace"}).state("app.marketplace.plugins",{url:"/plugins",views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/plugins.html",controller:"MarketplacePluginsController as vm"}},resolve:{plugins:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Plugins",fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}).state("app.marketplace.plugins.edit",{url:"/:id?tab",params:{plugin:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/edit/view.html",controller:"MarketplacePluginController as vm"}},resolve:{plugin:["apiResolver","$stateParams",function(e,n){return e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}),n.addPart("app/main/apps/marketplace")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.marketplace",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.motiondialer",{abstract:!0,url:"/motiondialer"}).state("app.motiondialer.queueCampaigns",{url:"/queueCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",controller:"QueueCampaignsController as vm"}},resolve:{queueCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,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,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",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",controller:"QueuesMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name,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,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",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",controller:"QueuesOpenchannelRealtimeController as vm",templateUrl:"app/main/apps/openchannel/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:810})}e.$inject=["$stateProvider"],angular.module("app.openchannel.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.plugins",{abstract:!0,url:"/plugins"}),n.addPart("app/main/apps/plugins")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.plugins",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.plugins.plugin"]).config(e)}(),function(){"use strict";function e(e){e.state("app.plugins.plugin",{url:"/plugin/:id",views:{"content@app":{templateUrl:"app/main/apps/plugins/views/plugin/plugin.html",controller:"PluginController as vm"}},resolve:{},authenticate:!0,bodyClass:"plugins"})}e.$inject=["$stateProvider"],angular.module("app.plugins.plugin",[]).config(e)}(),function(){"use strict";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,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",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",controller:"QueuesSmsRealtimeController as vm",templateUrl:"app/main/apps/sms/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:710})}e.$inject=["$stateProvider"],angular.module("app.sms.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){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,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",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",controller:"QueuesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name,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,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",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",controller:"QueuesWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2110})}e.$inject=["$stateProvider"],angular.module("app.whatsapp.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.whatsapp",{abstract:!0,url:"/whatsapp"}).state("app.whatsapp.whatsappQueues",{url:"/whatsappQueues",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",controller:"WhatsappQueuesController as vm"}},resolve:{whatsappQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappQueues.edit",{url:"/:id?tab",params:{whatsappQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",controller:"WhatsappQueueController as vm"}},resolve:{whatsappQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts",{url:"/whatsappAccounts",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",controller:"WhatsappAccountsController as vm"}},resolve:{whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts.edit",{url:"/:id?tab",params:{whatsappAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",controller:"WhatsappAccountController as vm"}},resolve:{whatsappAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}),n.addPart("app/main/apps/whatsapp")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.whatsapp",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.whatsapp.realtime"]).config(e)}(),function(){"use strict";angular.module("app.navigation",[]).config(function(){})}(),function(){"use strict";function e(e,n){e.addPart("app/quick-panel")}e.$inject=["$translatePartialLoaderProvider","msApiProvider"],angular.module("app.quick-panel",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.reset",{url:"/reset/:token",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.reset":{templateUrl:"app/reset/reset.html",controller:"ResetPasswordController as vm"}},bodyClass:"reset"}),n.addPart("app/reset")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.reset",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/toolbar")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.toolbar",[]).config(e)}(),function(){"use strict";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(e,n,t,a,i){var s;return{request:function(e){var n=t.get("motion.token");return e.headers=e.headers||{},i.isSameOrigin(e.url)&&n&&(e.headers.Authorization="Bearer "+n),e},responseError:function(e){switch(e.status){case 401:t.remove("motion.token"),(s||(s=a.get("$state"))).go("app.login")}return n.reject(e)}}}e.$inject=["$rootScope","$q","$cookies","$injector","Util"],angular.module("app.auth").factory("authInterceptor",e)}(),function(){"use strict";function e(n){var t={safeCb:function(e){return angular.isFunction(e)?e:angular.noop},urlParse:function(e){var n=document.createElement("a");return n.href=e,""===n.host&&(n.href=n.href),n},isSameOrigin:function(i,e){return i=t.urlParse(i),(e=(e=e&&[].concat(e)||[]).map(t.urlParse)).push(n.location),1<=(e=e.filter(function(e){var n=i.hostname===e.hostname,t=i.protocol===e.protocol,a=i.port===e.port||""===e.port&&("80"===i.port||"443"===i.port);return n&&t&&a})).length}};return t}e.$inject=["$window"],angular.module("app.auth").factory("Util",e)}(),function(){"use strict";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")})}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,n,i,s){var o={},r={},l={},d={};function c(){r=i.getCurrentUser();var e=n.localStorage.getItem("motion2.home:"+r.id);if(l=e?JSON.parse(e).currentSidebarTab:"dashboard",d=n.localStorage.getItem("motion2.home."+l+":"+r.id)){var a=JSON.parse(d);a.drafts?r.privacyEnabled&&Object.keys(a.drafts).forEach(function(e){var n=a.drafts[e].title,t=n.split(/-(.+)/)[1].trim();a.drafts[e].title=n.replace(t,s.mask(t))}):a.drafts={},d=a}else d={drafts:{}};return d.drafts}function m(){_.isEmpty(o.drafts)?delete d.drafts:d.drafts=o.drafts,n.localStorage.setItem("motion2.home."+l+":"+r.id,JSON.stringify(d))}return o.init=function(){o.drafts=c()},o.getByInteraction=function(n){return o.drafts=c(),_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n})},o.removeByInteraction=function(n){o.drafts=c();var e=_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n});e&&(delete o.drafts[e.id],m())},o.add=function(e){o.drafts=c();var n=a.instant("DASHBOARDS.UNTITLED");e.contact?n=e.contact.firstName||e.contact.email:_.isEmpty(e.message.subject)||(n=e.message.subject);var t={type:"draft",title:e.account.key+" - "+n,channel:e.channel,content:e.message,account:e.account,interaction:e.interaction,id:_.random(1e10),openedAt:new Date,saved:!1};o.drafts[t.id]=t,m()},o.update=function(e){o.drafts=c();var n=o.drafts[e.id];n&&(n.content=e.message,o.drafts[e.id]=n,m())},o.open=function(e){o.drafts=c();var n=o.drafts[e];n&&t.$broadcast("open"+_.startCase(l)+"Draft",n)},o.remove=function(e){o.drafts=c(),o.drafts[e]&&(delete o.drafts[e],m())},o}e.$inject=["$rootScope","$translate","$window","Auth","privacyManager"],angular.module("app.core").factory("draftManager",e)}(),function(){"use strict";function e(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 n={checkEveryChannelPauseStatus:function(n){e.getChannels().forEach(function(e){n[e+"Pause"]&&"idle"===n[e+"Status"]&&(n[e+"Status"]="pause")})},getAgentStatus:function(e){var n="unknown";n=o(e)?"pause":o(e,!0)?"*pause":function(e){if("idle"!==e.voiceStatus&&e.voicePause)return!(e.voiceStatus="pause");return _.every([e.chatStatus,e.faxStatus,e.mailStatus,e.openchannelStatus,e.smsStatus,e.voiceStatus,e.whatsappStatus],r)}(e)?"idle":"busy";return n},getAgentStatusDisplayValue:function(e){var n=e.globalStatus;"pause"===e.globalStatus?n=e.pauseType||t.instant("VOICE.DEFAULT_PAUSE"):"*pause"===e.globalStatus&&(n="*"+(e.pauseType||t.instant("VOICE.DEFAULT_PAUSE")));return n},getUserUpdateEventOrigin:function(e){var n="call";e.lastLoginAt?n="login":!1===e.online?n="logout":e.pauseType&&(n="pause");return 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})},updateBusyCounter:s,updateQueue:function(e,n,t,a){var i=t.paused;!1===e.online?(t.online=!1,n.loggedInDb-=1,t.paused?(t.paused=!1,n.paused-=1):n.available-=1):t.online?!e[a+"Pause"]||t.paused||o(e,!0)?!e[a+"Pause"]&&t.paused?(t.paused=!1,t.talking||t.busy||(n.paused-=1,n.available+=1)):e[a+"Pause"]&&t.paused&&(t.talking||t.busy||(n.busy-=1,i||(n.paused+=1))):(t.paused=!0,t.talking||t.busy||(i||(n.paused+=1),0<n.available&&(n.available-=1))):(t.online=!0,n.loggedInDb+=1,n.available+=1);s(n)},updateVoiceQueue:function(e,n){e.loggedIn===e.available&&0<e.waiting&&(e.available-=e.waiting);var t=e.loggedIn-e.available-e.talking-e.waiting-n.paused;t<0?(n.paused-=Math.abs(t),n.waitingOrTalking=!0):0<t&&n.waitingOrTalking&&(n.paused+=1,delete n.waitingOrTalking);_.merge(n,_.pick(e,"inbound"===n.type?a:i)),"outbound"===n.type&&_.isNil(e.startPredictive)&&(n.startPredictive=void 0);s(n)}},a=["loggedIn","available","waiting","talking","paused"],i=["loggedIn","available","waiting","talking","pTalking","originated","message","dialActive","dialMethod","Trunk","paused","startPredictive","startProgressive","erlangCalls","erlangCallToSecond","erlangAbandonmentRate","erlangBusyFactor","dialPredictiveInterval","dialPredictiveIntervalMaxThreshold","dialPredictiveIntervalMinThreshold","predictiveIntervalAvailable","predictiveIntervalTotalCalls","predictiveIntervalAnsweredCalls","predictiveIntervalDroppedCallsTimeout","predictiveIntervalDroppedCallsCallersExit","predictiveIntervalAvgHoldtime","predictiveIntervalAvgTalktime"];function s(e){var n=_.filter(e.agents,["busy",!0]).length,t=e.loggedInDb-e.available-e.paused-e.talking-e.waiting;t<0&&(t=0),e.busy=t<n?n:t}function o(e,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 r(e){if(_.isNil(e))return!0;return _.includes(["idle","unknown","unavailable","ringing"],e)}return n}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,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatQueue=y,f.exportSelectedChatQueues=function(){var e=angular.copy(f.selectedChatQueues);return f.selectedChatQueues=[],e},f.deleteSelectedChatQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatQueues?").htmlContent("<b>"+f.selectedChatQueues.length+" selected</b> will be deleted.").ariaLabel("delete ChatQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatQueues.forEach(function(e){y(e)}),f.selectedChatQueues=[]})},f.deselectChatQueues=function(){f.selectedChatQueues=[]},f.selectAllChatQueues=function(){f.selectedChatQueues=f.chatQueues.rows};var b=!0,A=1;function E(e){f.chatQueues=e||{count:0,rows:[]}}function y(e){m.chatQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.chatQueues.rows,{id:e.id}),f.chatQueues.count-=1,f.chatQueues.rows.length||f.getChatQueues(),p.success({title:_.startCase("ChatQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATQUEUE",g.chatQueue=angular.copy(l),g.chatQueues=r,g.newChatQueue=!1,g.chatQueue||(g.chatQueue={strategy:"beepall",timeout:10},g.title="CHAT.NEW_CHATQUEUE",g.newChatQueue=!0),g.addNewChatQueue=function(){g.errors=[],d.chatQueue.save(g.chatQueue).$promise.then(function(e){g.chatQueues.unshift(e.toJSON()),o.success({title:"ChatQueue properly created",msg:g.chatQueue.name?g.chatQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatQueue=function(){g.errors=[],d.chatQueue.update({id:g.chatQueue.id},g.chatQueue).$promise.then(function(e){var n=_.find(g.chatQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatQueue properly saved!",msg:g.chatQueue.name?g.chatQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatQueue.delete({id:g.chatQueue.id}).$promise.then(function(){_.remove(g.chatQueues,{id:g.chatQueue.id}),o.success({title:"ChatQueue properly deleted!",msg:(g.chatQueue.name||"chatQueue")+" has been deleted!"}),v(g.chatQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatQueues","chatQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getAgents({id:c.chatQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatQueue?"penalty "+e.UserChatQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","chatQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getTeams({id:l.chatQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.chatQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("CHAT.ALL_TEAMS"),labelSelected:t.instant("CHAT.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.chatQueue=c||e.params.chatQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoChatQueues=function(){e.go("app.chat.chatQueues",{},{reload:"app.chat.chatQueues"})},u.saveChatQueue=function(){r.chatQueue.update({id:u.chatQueue.id},u.chatQueue).$promise.then(function(){l.success({title:"ChatQueue updated!",msg:u.chatQueue.name?u.chatQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatQueue","userProfileSection"],angular.module("app.chat").controller("ChatQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatWebsites=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatWebsites",f.listOrder="",f.listOrderAsc=null,f.selectedChatWebsites=[],f.query={fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,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,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("CHAT.CHATQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("chat_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userChatQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.ChatQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userChatQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.ChatQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"chat")})}),e.$on("$destroy",function(){r.removeAllListeners("chat_queue:save"),r.removeAllListeners("userChatQueue:remove"),r.removeAllListeners("userChatQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.chat").controller("QueuesChatRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.chat.realtime.agents":this.selectedTab=0;break;case"app.chat.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.chat.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.chat.realtime.agents");break;case 1:t.go("app.chat.realtime.queues");break;default:t.go("app.chat.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.chat").controller("ChatRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.companies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="companies",f.listOrder="",f.listOrderAsc=null,f.selectedCompanies=[],f.query={fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.companies.edit",{id:e.id,company:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("company")+"?").htmlContent("<b>"+(e.name||"company")+"</b> will be deleted.").ariaLabel("delete company").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCompanies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCompany.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Companies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCompany=function(e,n){i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{company:n,companies:f.companies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCompany=y,f.exportSelectedCompanies=function(){var e=angular.copy(f.selectedCompanies);return f.selectedCompanies=[],e},f.deleteSelectedCompanies=function(e){var n=i.confirm().title("Are you sure want to delete the selected companies?").htmlContent("<b>"+f.selectedCompanies.length+" selected</b> will be deleted.").ariaLabel("delete Companys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCompanies.forEach(function(e){y(e)}),f.selectedCompanies=[]})},f.deselectCompanies=function(){f.selectedCompanies=[]},f.selectAllCompanies=function(){f.selectedCompanies=f.companies.rows};var b=!0,A=1;function E(e){f.companies=e||{count:0,rows:[]}}function y(e){m.cmCompany.delete({id:e.id}).$promise.then(function(){_.remove(f.companies.rows,{id:e.id}),f.companies.count-=1,f.companies.rows.length||f.getCompanies(),p.success({title:_.startCase("Company")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCompany"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCompany",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCompanies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","companies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("CompaniesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_COMPANY",g.company=angular.copy(l),g.companies=r,g.newCompany=!1,g.company||(g.company={},g.title="CONTACTMANAGER.NEW_COMPANY",g.newCompany=!0),g.addNewCompany=function(){g.errors=[],d.cmCompany.save(g.company).$promise.then(function(e){g.companies.unshift(e.toJSON()),o.success({title:"Company properly created",msg:g.company.name?g.company.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCompany=function(){g.errors=[],d.cmCompany.update({id:g.company.id},g.company).$promise.then(function(e){var n=_.find(g.companies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Company properly saved!",msg:g.company.name?g.company.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCompany=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The company will be deleted.").ariaLabel("Delete Company").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmCompany.delete({id:g.company.id}).$promise.then(function(){_.remove(g.companies,{id:g.company.id}),o.success({title:"Company properly deleted!",msg:(g.company.name||"company")+" has been deleted!"}),v(g.company)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","companies","company","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCompanyDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.company=c||a.params.company||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):l.info({title:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},u.alert=l.info,u.gotoCompanies=function(){a.go("app.contactmanager.companies",{},{reload:"app.contactmanager.companies"})},u.saveCompany=function(){r.cmCompany.update({id:u.company.id},u.company).$promise.then(function(){l.success({title:"Company updated!",msg:u.company.name?u.company.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmCompany",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","company","userProfileSection"],angular.module("app.contactmanager").controller("CompanyController",e)}(),function(){"use strict";function e(n,i,t,a,e,s,o,r,l,d,c,m,u,p,g,v,h,f,b){var A=this;A.currentUser=f.getCurrentUser(),A.license=b,A.userProfile=r,A.userProfileSection=l&&1==l.count?l.rows[0]:null,A.crudPermissions=f.parseCrudPermissions(A.userProfileSection?A.userProfileSection.crudPermissions:null);var E=60,y=1024*E*1024;A.ngFlowOptions={target:"api/cm/contacts/upload",singleFile:!0,maxChunkRetries:1,chunkSize:y,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},A.contacts=c||{count:0,rows:[]},A.options={hidden:!1,hover:!1,isOpen:!1},A.table="cm_contacts",A.selectedContacts=[],A.lists=m||{rows:[],count:0},A.companies=p||{rows:[],count:0},A.tags=v||{rows:[],count:0},A.listsMap=u,A.companiesMap=g,A.selectedTags=[],A.selectedList=null,A.selectedCompany=null,A.query=_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0,page:1},e),A.editdialog=function(e,n){a.go("app.contactmanager.contacts.edit",{id:e.id,crudPermissions:A.crudPermissions})},A.deleteconfirm=function(e,n){var t=s.confirm().title("Are you sure want to delete the contact?").htmlContent("<b>"+(e.firstName||e.email||e.phone||"Contact")+"</b> will be deleted.").ariaLabel("delete contact").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){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",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"outbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedBullController",e)}(),function(){"use strict";function e(n,e,t){var a=this;a.dispositions=e,a.call=t,a.note=a.call.note||void 0,a.onDispositionChange=function(e){switch(e){case"first":a.selectedDisposition=a.firstLevelDisposition,a.anySecondLevelDisposition=_.some(a.dispositions,["ParentId",a.firstLevelDisposition.id]),a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.anyThirdLevelDisposition=!1;break;case"second":a.selectedDisposition=a.secondLevelDisposition,a.anyThirdLevelDisposition=_.some(a.dispositions,["ParentId",a.secondLevelDisposition.id]);break;case"third":a.selectedDisposition=a.thirdLevelDisposition}},a.clearDispositionSelection=function(e){"second"===e?(a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.selectedDisposition=a.firstLevelDisposition):"third"===e&&(a.thirdLevelDisposition=void 0,a.selectedDisposition=a.secondLevelDisposition)},a.saveDisposition=function(){a.call.note=a.note;var e={firstLevel:a.firstLevelDisposition?a.firstLevelDisposition.name:void 0,secondLevel:a.secondLevelDisposition?a.secondLevelDisposition.name:void 0,thirdLevel:a.thirdLevelDisposition?a.thirdLevelDisposition.name:void 0,note:a.note?a.note:void 0};n.hide(e)},a.closeDialog=function(){n.cancel()}}e.$inject=["$mdDialog","dispositions","call"],angular.module("app.dashboards").controller("DisposeAbandonedCallDialogController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null,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,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"inbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"inbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.user.getQueues(c.query).$promise.then(function(e){return c.myQueues=e,o.rpc.getVoiceQueues().$promise}).then(function(e){for(var n=e.rows,t=_.keyBy(n,"id"),a=0;a<c.myQueues.count;a++){var i=c.myQueues.rows[a];c.rpcVoiceQueues[i.id]=t[i.id]}return o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,function(e){return!("inbound"!==e.type||e.queuecallerleaveAt||!_.find(c.myQueues.rows,{name:e.queue}))}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardVoiceController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcWhatsappQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.whatsappQueuesTotal=e.count?e.count:0,c.whatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.whatsappQueues,function(e,n){c.rpcWhatsappQueues[n]&&(c.whatsappQueues[n].waiting=c.rpcWhatsappQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.whatsappQueues={},c.whatsappQueuesTotal=0,c.rpcWhatsappQueues={},c.paginatedInteractions=[],c.deleteWhatsappQueuesWaitingInteractions=[],c.rpcWhatsappQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"whatsapp",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getWhatsappQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.whatsappQueues[e.id]&&c.rpcWhatsappQueues[e.id]&&(_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onSaveWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]=_.pick(e,m))},c.onUpdateWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]&&_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),c.whatsappQueues[e.id]&&_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onRemoveWhatsappQueue=function(e){_.isNil(e)||(delete c.rpcWhatsappQueues[e.id],delete c.whatsappQueues[e.id])},c.onSaveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onRemoveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onSaveWhatsappQueueChannel=function(e){c.whatsappQueues[e.queue_id]&&(c.rpcWhatsappQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveWhatsappQueueChannel=function(e){delete c.rpcWhatsappQueuesWaitingInteractions[e.id],u&&c.deleteWhatsappQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("whatsapp_queue:save",c.onSaveQueue),l.onWithoutApply("whatsappQueue:save",c.onSaveWhatsappQueue),l.onWithoutApply("whatsappQueue:update",c.onUpdateWhatsappQueue),l.onWithoutApply("whatsappQueue:remove",c.onRemoveWhatsappQueue),l.onWithoutApply("userWhatsappQueue:save",c.onSaveUserWhatsappQueue),l.onWithoutApply("userWhatsappQueue:remove",c.onRemoveUserWhatsappQueue),l.onWithoutApply("whatsapp_queue_waiting_interaction:save",c.onSaveWhatsappQueueChannel),l.onWithoutApply("whatsapp_queue_waiting_interaction:remove",c.onRemoveWhatsappQueueChannel),o.rpc.getWhatsappQueues().$promise.then(function(e){c.rpcWhatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"whatsapp"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getWhatsappQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcWhatsappQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteWhatsappQueuesWaitingInteractions.length;e+=1)delete c.rpcWhatsappQueuesWaitingInteractions[c.deleteWhatsappQueuesWaitingInteractions[e]];u=!1,c.deleteWhatsappQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getWhatsappQueues())}),e.$on("$destroy",function(){l.removeAllListeners("whatsapp_queue:save"),l.removeAllListeners("whatsappQueue:save"),l.removeAllListeners("whatsappQueue:update"),l.removeAllListeners("whatsappQueue:remove"),l.removeAllListeners("userWhatsappQueue:save"),l.removeAllListeners("userWhatsappQueue:remove"),l.removeAllListeners("whatsapp_queue_waiting_interaction:save"),l.removeAllListeners("whatsapp_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelWhatsappController",e)}(),function(){"use strict";function e(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(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXQUEUE",g.faxQueue=angular.copy(l),g.faxQueues=r,g.newFaxQueue=!1,g.faxQueue||(g.faxQueue={strategy:"beepall",timeout:10},g.title="FAX.NEW_FAXQUEUE",g.newFaxQueue=!0),g.addNewFaxQueue=function(){g.errors=[],d.faxQueue.save(g.faxQueue).$promise.then(function(e){g.faxQueues.unshift(e.toJSON()),o.success({title:"FaxQueue properly created",msg:g.faxQueue.name?g.faxQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxQueue=function(){g.errors=[],d.faxQueue.update({id:g.faxQueue.id},g.faxQueue).$promise.then(function(e){var n=_.find(g.faxQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FaxQueue properly saved!",msg:g.faxQueue.name?g.faxQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxQueue will be deleted.").ariaLabel("Delete FaxQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxQueue.delete({id:g.faxQueue.id}).$promise.then(function(){_.remove(g.faxQueues,{id:g.faxQueue.id}),o.success({title:"FaxQueue properly deleted!",msg:(g.faxQueue.name||"faxQueue")+" has been deleted!"}),v(g.faxQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxQueues","faxQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getAgents({id:c.faxQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxQueue?"penalty "+e.UserFaxQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","faxQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getTeams({id:l.faxQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.faxQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("FAX.ALL_TEAMS"),labelSelected:t.instant("FAX.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.faxQueue=c||e.params.faxQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoFaxQueues=function(){e.go("app.fax.faxQueues",{},{reload:"app.fax.faxQueues"})},u.saveFaxQueue=function(){r.faxQueue.update({id:u.faxQueue.id},u.faxQueue).$promise.then(function(){l.success({title:"FaxQueue updated!",msg:u.faxQueue.name?u.faxQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxQueue","userProfileSection"],angular.module("app.fax").controller("FaxQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxQueues",f.listOrder="",f.listOrderAsc=null,f.selectedFaxQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxQueues.edit",{id:e.id,faxQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxQueue")+"?").htmlContent("<b>"+(e.name||"faxQueue")+"</b> will be deleted.").ariaLabel("delete faxQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.queues",{})}},f.success=E,f.getFaxQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxQueue=function(e,n){i.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:f.faxQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxQueue=y,f.exportSelectedFaxQueues=function(){var e=angular.copy(f.selectedFaxQueues);return f.selectedFaxQueues=[],e},f.deleteSelectedFaxQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxQueues?").htmlContent("<b>"+f.selectedFaxQueues.length+" selected</b> will be deleted.").ariaLabel("delete FaxQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxQueues.forEach(function(e){y(e)}),f.selectedFaxQueues=[]})},f.deselectFaxQueues=function(){f.selectedFaxQueues=[]},f.selectAllFaxQueues=function(){f.selectedFaxQueues=f.faxQueues.rows};var b=!0,A=1;function E(e){f.faxQueues=e||{count:0,rows:[]}}function y(e){m.faxQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.faxQueues.rows,{id:e.id}),f.faxQueues.count-=1,f.faxQueues.rows.length||f.getFaxQueues(),p.success({title:_.startCase("FaxQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxQueuesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.faxAccounts,function(e,n){p.rpcFaxAccounts[n]&&_.merge(e,p.rpcFaxAccounts[n])}),_.forIn(p.faxAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.faxAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.faxAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.faxAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcFaxAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getFaxAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.faxAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="FaxAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.faxAccounts[e.id]&&_.merge(p.faxAccounts[e.id],e)},p.onFaxMessageSave=function(e){p.faxAccounts[e.FaxAccountId]&&("in"==e.direction?(p.faxAccounts[e.FaxAccountId].in+=1,p.faxAccounts[e.FaxAccountId].lastIn=e.createdAt):(p.faxAccounts[e.FaxAccountId].out+=1,p.faxAccounts[e.FaxAccountId].lastOut=e.createdAt))},p.goToFaxAccount=function(e,n){i.go("app.fax.faxAccounts.edit",{id:n.id,faxAccount:n})},p.order=[],_.forIn(p.faxAccounts,function(e,n){p.order.push(e.id)}),o.on("faxAccount:save",p.onSave),o.on("faxAccount:update",p.onSave),o.on("faxMessage:save",p.onFaxMessageSave);var v=!0,h=1;function f(e){if(p.faxAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getFaxAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("faxAccount:save"),o.removeAllListeners("faxAccount:update"),o.removeAllListeners("faxMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","faxAccounts","rpcFaxAccounts","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("FaxAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("FAX.FAXQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("fax_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userFaxQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.FaxQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userFaxQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.FaxQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"fax")})}),e.$on("$destroy",function(){r.removeAllListeners("fax_queue:save"),r.removeAllListeners("userFaxQueue:remove"),r.removeAllListeners("userFaxQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.fax").controller("QueuesFaxRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.fax.realtime.agents":this.selectedTab=0;break;case"app.fax.realtime.trunks":this.selectedTab=1;break;case"app.fax.realtime.queues":this.selectedTab=2;break;case"app.fax.realtime.accounts":this.selectedTab=3;break;default:this.selectedTab=0,t.go("app.fax.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.fax.realtime.agents");break;case 1:t.go("app.fax.realtime.trunks");break;case 2:t.go("app.fax.realtime.queues");break;case 3:t.go("app.fax.realtime.accounts");break;default:t.go("app.fax.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.fax").controller("FaxRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("TrunksFaxRealtimeController",e)}(),function(){"use strict";function e(e,n){this.info=e,this.license=n}e.$inject=["info","license"],angular.module("app.help.about").controller("AboutController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKACCOUNT",g.deskAccount=angular.copy(l),g.deskAccounts=r,g.newDeskAccount=!1,g.deskAccount||(g.deskAccount={type:"integrationTab",authType:"basic",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DESKACCOUNT",g.newDeskAccount=!0),g.addNewDeskAccount=function(){g.errors=[],d.intDeskAccount.save(g.deskAccount).$promise.then(function(e){g.deskAccounts.unshift(e.toJSON()),o.success({title:"DeskAccount properly created",msg:g.deskAccount.name?g.deskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskAccount=function(){g.errors=[],d.intDeskAccount.update({id:g.deskAccount.id},g.deskAccount).$promise.then(function(e){var n=_.find(g.deskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskAccount properly saved!",msg:g.deskAccount.name?g.deskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskAccount will be deleted.").ariaLabel("Delete DeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskAccount.delete({id:g.deskAccount.id}).$promise.then(function(){_.remove(g.deskAccounts,{id:g.deskAccount.id}),o.success({title:"DeskAccount properly deleted!",msg:(g.deskAccount.name||"deskAccount")+" has been deleted!"}),v(g.deskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","deskAccounts","deskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.deskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="deskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedDeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Basic",value:"'basic'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.deskAccounts.edit",{id:e.id,deskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"DeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"DeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("deskAccount")+"?").htmlContent("<b>"+(e.name||"deskAccount")+"</b> will be deleted.").ariaLabel("delete deskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="DeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDeskAccount=function(e,n){i.show({controller:"CreateOrEditDeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskAccount:n,deskAccounts:f.deskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDeskAccount=y,f.exportSelectedDeskAccounts=function(){var e=angular.copy(f.selectedDeskAccounts);return f.selectedDeskAccounts=[],e},f.deleteSelectedDeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected deskAccounts?").htmlContent("<b>"+f.selectedDeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete DeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDeskAccounts.forEach(function(e){y(e)}),f.selectedDeskAccounts=[]})},f.deselectDeskAccounts=function(){f.selectedDeskAccounts=[]},f.selectAllDeskAccounts=function(){f.selectedDeskAccounts=f.deskAccounts.rows};var b=!0,A=1;function E(e){f.deskAccounts=e||{count:0,rows:[]}}function y(e){m.intDeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.deskAccounts.rows,{id:e.id}),f.deskAccounts.count-=1,f.deskAccounts.rows.length||f.getDeskAccounts(),p.success({title:_.startCase("DeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","deskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("DeskAccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.deskAccount={},o.deskConfiguration={},o.configurations=[],o.selectedDeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.deskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDeskAccount.getConfigurations({id:o.deskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDeskConfiguration=function(e){o.deskConfiguration=o.configurations[e],o.selectedDeskConfiguration=e,i.intDeskConfiguration.getSubjects({id:o.deskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDeskConfiguration.getDescriptions({id:o.deskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDeskConfiguration.getFields({id:o.deskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intDeskConfiguration.getTags({id:o.deskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDeskConfiguration=function(e,n){a.show({controller:"CreateOrEditDeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDeskConfiguration(0)})},o.deleteDeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the deskConfiguration?").htmlContent("<b>"+(n.name||"deskConfiguration")+"</b> will be deleted.").ariaLabel("delete deskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"DeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intDeskConfiguration.setTags({id:o.deskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("DeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKCONFIGURATION",g.deskConfiguration=angular.copy(l),g.configurations=r,g.newDeskConfiguration=!1,g.deskConfiguration||(g.deskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_DESKCONFIGURATION",g.newDeskConfiguration=!0),g.addNewDeskConfiguration=function(){g.errors=[],d.intDeskAccount.addConfiguration({id:n.params.id},g.deskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"DeskConfiguration properly created",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskConfiguration=function(){g.errors=[],d.intDeskConfiguration.update({id:g.deskConfiguration.id},g.deskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskConfiguration properly saved!",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskConfiguration will be deleted.").ariaLabel("Delete DeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskConfiguration.delete({id:g.deskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.deskConfiguration.id}),o.success({title:"DeskConfiguration properly deleted!",msg:(g.deskConfiguration.name||"deskConfiguration")+" has been deleted!"}),v(g.deskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","deskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.deskAccount=c||e.params.deskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDeskAccounts=function(){e.go("app.integrations.deskAccounts",{},{reload:"app.integrations.deskAccounts"})},u.saveDeskAccount=function(){r.intDeskAccount.update({id:u.deskAccount.id},u.deskAccount).$promise.then(function(){l.success({title:"DeskAccount updated!",msg:u.deskAccount.name?u.deskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","deskAccount","userProfileSection"],angular.module("app.integrations").controller("DeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,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(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILQUEUE",g.mailQueue=angular.copy(l),g.mailQueues=r,g.newMailQueue=!1,g.mailQueue||(g.mailQueue={strategy:"beepall",timeout:10},g.title="MAIL.NEW_MAILQUEUE",g.newMailQueue=!0),g.addNewMailQueue=function(){g.errors=[],d.mailQueue.save(g.mailQueue).$promise.then(function(e){g.mailQueues.unshift(e.toJSON()),o.success({title:"MailQueue properly created",msg:g.mailQueue.name?g.mailQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailQueue=function(){g.errors=[],d.mailQueue.update({id:g.mailQueue.id},g.mailQueue).$promise.then(function(e){var n=_.find(g.mailQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailQueue properly saved!",msg:g.mailQueue.name?g.mailQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailQueue will be deleted.").ariaLabel("Delete MailQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailQueue.delete({id:g.mailQueue.id}).$promise.then(function(){_.remove(g.mailQueues,{id:g.mailQueue.id}),o.success({title:"MailQueue properly deleted!",msg:(g.mailQueue.name||"mailQueue")+" has been deleted!"}),v(g.mailQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailQueues","mailQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getAgents({id:c.mailQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailQueue?"penalty "+e.UserMailQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","mailQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getTeams({id:l.mailQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.mailQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MAIL.ALL_TEAMS"),labelSelected:t.instant("MAIL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.mailQueue=c||e.params.mailQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoMailQueues=function(){e.go("app.mail.mailQueues",{},{reload:"app.mail.mailQueues"})},u.saveMailQueue=function(){r.mailQueue.update({id:u.mailQueue.id},u.mailQueue).$promise.then(function(){l.success({title:"MailQueue updated!",msg:u.mailQueue.name?u.mailQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailQueue","userProfileSection"],angular.module("app.mail").controller("MailQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailQueues",f.listOrder="",f.listOrderAsc=null,f.selectedMailQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailQueues.edit",{id:e.id,mailQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailQueue")+"?").htmlContent("<b>"+(e.name||"mailQueue")+"</b> will be deleted.").ariaLabel("delete mailQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.queues",{})}},f.success=E,f.getMailQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailQueue=function(e,n){i.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:f.mailQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailQueue=y,f.exportSelectedMailQueues=function(){var e=angular.copy(f.selectedMailQueues);return f.selectedMailQueues=[],e},f.deleteSelectedMailQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailQueues?").htmlContent("<b>"+f.selectedMailQueues.length+" selected</b> will be deleted.").ariaLabel("delete MailQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailQueues.forEach(function(e){y(e)}),f.selectedMailQueues=[]})},f.deselectMailQueues=function(){f.selectedMailQueues=[]},f.selectAllMailQueues=function(){f.selectedMailQueues=f.mailQueues.rows};var b=!0,A=1;function E(e){f.mailQueues=e||{count:0,rows:[]}}function y(e){m.mailQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.mailQueues.rows,{id:e.id}),f.mailQueues.count-=1,f.mailQueues.rows.length||f.getMailQueues(),p.success({title:_.startCase("MailQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILSUBSTATUS",g.mailSubstatus=angular.copy(l),g.mailSubtatuses=r,g.newMailSubstatus=!1,g.mailSubstatus||(g.mailSubstatus={},g.title="MAIL.NEW_MAILSUBSTATUS",g.newMailSubstatus=!0),g.addNewMailSubstatus=function(){g.errors=[],d.mailSubstatus.save(g.mailSubstatus).$promise.then(function(e){g.mailSubtatuses.unshift(e.toJSON()),o.success({title:"MailSubstatus properly created",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailSubstatus=function(){g.errors=[],d.mailSubstatus.update({id:g.mailSubstatus.id},g.mailSubstatus).$promise.then(function(e){var n=_.find(g.mailSubtatuses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailSubstatus properly saved!",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailSubstatus=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailSubstatus will be deleted.").ariaLabel("Delete MailSubstatus").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailSubstatus.delete({id:g.mailSubstatus.id}).$promise.then(function(){_.remove(g.mailSubtatuses,{id:g.mailSubstatus.id}),o.success({title:"MailSubstatus properly deleted!",msg:(g.mailSubstatus.name||"mailSubstatus")+" has been deleted!"}),v(g.mailSubstatus)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailSubtatuses","mailSubstatus","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailSubstatusDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailSubtatuses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailSubtatuses",f.listOrder="",f.listOrderAsc=null,f.selectedMailSubstatuses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailSubstatus:e,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailSubstatus")+"?").htmlContent("<b>"+(e.name||"mailSubstatus")+"</b> will be deleted.").ariaLabel("delete mailSubstatus").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailSubstatuses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailSubstatus.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailSubstatuses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailSubstatus=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailSubstatus:n,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailSubstatus=y,f.exportSelectedMailSubstatuses=function(){var e=angular.copy(f.selectedMailSubstatuses);return f.selectedMailSubstatuses=[],e},f.deleteSelectedMailSubstatuses=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailSubtatuses?").htmlContent("<b>"+f.selectedMailSubstatuses.length+" selected</b> will be deleted.").ariaLabel("delete MailSubstatuss").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailSubstatuses.forEach(function(e){y(e)}),f.selectedMailSubstatuses=[]})},f.deselectMailSubstatuses=function(){f.selectedMailSubstatuses=[]},f.selectAllMailSubstatuses=function(){f.selectedMailSubstatuses=f.mailSubtatuses.rows};var b=!0,A=1;function E(e){f.mailSubtatuses=e||{count:0,rows:[]}}function y(e){m.mailSubstatus.delete({id:e.id}).$promise.then(function(){_.remove(f.mailSubtatuses.rows,{id:e.id}),f.mailSubtatuses.count-=1,f.mailSubtatuses.rows.length||f.getMailSubstatuses(),p.success({title:_.startCase("MailSubstatus")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailSubstatus"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailSubstatus",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailSubstatuses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailSubtatuses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailSubstatusesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.mailAccounts,function(e,n){p.rpcMailAccounts[n]&&_.merge(e,p.rpcMailAccounts[n])}),_.forIn(p.mailAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.mailAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.mailAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.mailAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcMailAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getMailAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.mailAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="MailAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.mailAccounts[e.id]&&_.merge(p.mailAccounts[e.id],e)},p.onMailMessageSave=function(e){p.mailAccounts[e.MailAccountId]&&("in"==e.direction?(p.mailAccounts[e.MailAccountId].in+=1,p.mailAccounts[e.MailAccountId].lastIn=e.createdAt):(p.mailAccounts[e.MailAccountId].out+=1,p.mailAccounts[e.MailAccountId].lastOut=e.createdAt))},p.goToMailAccount=function(e,n){i.go("app.mail.mailAccounts.edit",{id:n.id,mailAccount:n})},p.verifySmtp=function(e,n){{if(n&&n.id)return s.mailAccount.verifySmtp({id:n.id}).$promise.then(function(){r.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){r.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});r.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},p.order=[],_.forIn(p.mailAccounts,function(e,n){p.order.push(e.id)}),o.on("mailAccount:save",p.onSave),o.on("mailAccount:update",p.onSave),o.on("mailMessage:save",p.onMailMessageSave);var v=!0,h=1;function f(e){if(p.mailAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getMailAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("mailAccount:save"),o.removeAllListeners("mailAccount:update"),o.removeAllListeners("mailMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","mailAccounts","rpcMailAccounts","userProfile","userProfileSection","Auth"],angular.module("app.mail").controller("MailAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("MAIL.MAILQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("mail_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userMailQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.MailQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userMailQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.MailQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"mail")})}),e.$on("$destroy",function(){r.removeAllListeners("mail_queue:save"),r.removeAllListeners("userMailQueue:remove"),r.removeAllListeners("userMailQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.mail").controller("QueuesMailRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.mail.realtime.agents":this.selectedTab=0;break;case"app.mail.realtime.queues":this.selectedTab=1;break;case"app.mail.realtime.accounts":this.selectedTab=2;break;default:this.selectedTab=0,t.go("app.mail.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.mail.realtime.agents");break;case 1:t.go("app.mail.realtime.queues");break;case 2:t.go("app.mail.realtime.accounts");break;default:t.go("app.mail.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.mail").controller("MailRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MARKETPLACE.EDIT_PLUGIN",g.plugin=angular.copy(l),g.plugins=r,g.newPlugin=!1,g.plugin||(g.plugin={},g.title="MARKETPLACE.NEW_PLUGIN",g.newPlugin=!0),g.addNewPlugin=function(){g.errors=[],d.plugin.save(g.plugin).$promise.then(function(e){g.plugins.unshift(e.toJSON()),o.success({title:"Plugin properly created",msg:g.plugin.name?g.plugin.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePlugin=function(){g.errors=[],d.plugin.update({id:g.plugin.id},g.plugin).$promise.then(function(e){var n=_.find(g.plugins,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Plugin properly saved!",msg:g.plugin.name?g.plugin.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePlugin=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The plugin will be deleted.").ariaLabel("Delete Plugin").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.plugin.delete({id:g.plugin.id}).$promise.then(function(){_.remove(g.plugins,{id:g.plugin.id}),o.success({title:"Plugin properly deleted!",msg:(g.plugin.name||"plugin")+" has been deleted!"}),v(g.plugin)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","plugins","plugin","api","Auth","license","setting","crudPermissions"],angular.module("app.marketplace").controller("CreateOrEditPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.plugin=c||e.params.plugin||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoPlugins=function(){e.go("app.marketplace.plugins",{},{reload:"app.marketplace.plugins"})},u.savePlugin=function(){r.plugin.update({id:u.plugin.id},u.plugin).$promise.then(function(){l.success({title:"Plugin updated!",msg:u.plugin.name?u.plugin.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETplugin",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","plugin","userProfileSection"],angular.module("app.marketplace").controller("MarketplacePluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.plugins=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="plugins",f.listOrder="",f.listOrderAsc=null,f.selectedPlugins=[],f.query={fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,page:1},f.installing=!1,f.arraysidebar=_.keyBy([{option:"Always",value:"'always'"},{option:"Admin Only",value:"'adminOnly'"},{option:"Agent Only",value:"'agentOnly'"},{option:"Never",value:"'never'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.installplugin=function(e){{if("script"!==e.type)return e.active=!0,m.plugin.update({id:e.id},e).$promise.then(function(){p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});f.installing=!0,m.pm2.save({name:e.scriptName,script:e.path+"/"+e.scriptPath}).$promise.then(function(){return e.active=!0,m.plugin.update({id:e.id},e).$promise}).then(function(){f.installing=!1,p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.save"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.save",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}},f.editstate=function(e,n){t.go("app.marketplace.plugins.edit",{id:e.id,plugin:e,crudPermissions:f.crudPermissions})},f.stopplugin=function(e,n){var t=i.confirm().title("Are you sure want to stop the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be stoppped.").ariaLabel("stop plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"stopped"}).$promise.then(function(){p.success({title:"Process stopped!",msg:"Attached pm2 process successfully stopped"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.restartplugin=function(e,n){var t=i.confirm().title("Are you sure want to restart the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be restarted.").ariaLabel("restart plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"online"}).$promise.then(function(){p.success({title:"Process restarted!",msg:"Attached pm2 process successfully restarted"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.downloadfile2=function(s,e){return m.plugin.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.name.replace(" ","_").toLowerCase()+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.uninstallplugin=function(e,n){var t=i.confirm().title("Are you sure want to uninstall the plugin?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be uninstalled.").ariaLabel("uninstall plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){!function(t){"script"===t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});t.active=!1,m.plugin.update({id:t.id},t).$promise.then(function(){p.success({title:"Plugin uninstalled!",msg:t.name?t.name+" has been uninstalled!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}(e)},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("plugin")+"?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be deleted.").ariaLabel("delete plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPlugins=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.plugin.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Plugins",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPlugin=function(e,n){i.show({controller:"CreateOrEditPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugin:n,plugins:f.plugins.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePlugin=y,f.exportSelectedPlugins=function(){var e=angular.copy(f.selectedPlugins);return f.selectedPlugins=[],e},f.deleteSelectedPlugins=function(e){var n=i.confirm().title("Are you sure want to delete the selected plugins?").htmlContent("<b>"+f.selectedPlugins.length+" selected</b> will be deleted.").ariaLabel("delete Plugins").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPlugins.forEach(function(e){y(e)}),f.selectedPlugins=[]})},f.deselectPlugins=function(){f.selectedPlugins=[]},f.selectAllPlugins=function(){f.selectedPlugins=f.plugins.rows},f.uploadPlugin=function(e){i.show({controller:"UploadPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugins:f.plugins.rows}})};var b=!0,A=1;function E(e){f.plugins=e||{count:0,rows:[]}}function y(t){t.active&&"script"==t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)return p.error({title:"Plugin not deleted!",msg:"Failed to retrieve pm2 processes"});var n=_.find(e.rows,{name:t.scriptName});n?m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise:console.log("No '%s' process found",t.scriptName)}).catch(function(e){return p.error({title:"PM2 process not found!",msg:"Failed to delete the attached pm2 process"})}),m.plugin.delete({id:t.id}).$promise.then(function(){_.remove(f.plugins.rows,{id:t.id}),f.plugins.count-=1,f.plugins.rows.length||f.getPlugins(),p.success({title:_.startCase("Plugin")+" deleted!",msg:t.name?t.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEplugin"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEplugin",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPlugins())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","plugins","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.marketplace").controller("MarketplacePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=4,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="MARKETPLACE.UPLOAD_PLUGIN",o.plugins=a,o.uploadPlugins=[],o.uploadState="none",o.plugin={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/plugins"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["zip"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.plugin={id:e.uniqueIdentifier,file:e},o.uploadPlugins.unshift(o.plugin),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.plugins.unshift(JSON.parse(e)),angular.forEach(o.uploadPlugins,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the plugin"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.plugin.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","plugins","api","Auth"],angular.module("app.marketplace").controller("UploadPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,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,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"outbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"outbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","sumHoldTime","sumDuration","sumBillable","outboundNoAnswerCallsDay","outboundBusyCallsDay","outboundCongestionCallsDay","outboundNoSuchCallsDay","outboundUnknownCallsDay","outboundDropCallsDayTimeout","outboundDropCallsDayCallersExit","outboundBlacklistCallsDay","outboundOriginateFailureCallsDay","outboundAnswerAgiCallsDay","outboundReCallsDay","outboundRejectCallsDay"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="QueueCampaigns",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueParamsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("VOICE.VOICEQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:u.queues.rows,realtime:!0,crudPermissions:u.crudPermissions}})},u.showPredictiveQueueCampaignInfo=function(e,n){t.show({controller:"PredictiveQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n}})},r.onWithoutApply("voice_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&m.updateVoiceQueue(e,n)}),r.on("userVoiceQueueRt:save",function(e){var n=_.find(u.queues.rows,["id",e.MotionDialerQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("user:agentconnect",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);if(n){if(!t.agentconnected)return;t.queue?n.talking=!0:n.busy=!0,m.updateBusyCounter(e)}})}),r.on("user:agentcomplete",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(n.talking?n.talking=!1:n.busy&&(n.busy=!1),m.updateBusyCounter(e))})}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"voice")})}),e.$on("$destroy",function(){r.removeAllListeners("voice_queue:save"),r.removeAllListeners("userVoiceQueueRt:save"),r.removeAllListeners("user:agentconnect"),r.removeAllListeners("user:agentcomplete"),r.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.motiondialer").controller("QueuesMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t){this.queueCampaign=t,this.addMinutes=function(e,n){return moment(e).add("m",n).format("HH:mm:ss")},this.setFormatTime=function(e){return moment(e).format("HH:mm:ss")},this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$interval","queueCampaign"],angular.module("app.motiondialer").controller("PredictiveQueueCampaignDialogController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.motiondialer.realtime.agents":this.selectedTab=0;break;case"app.motiondialer.realtime.queues":this.selectedTab=1;break;case"app.motiondialer.realtime.queue_calls":this.selectedTab=2;break;case"app.motiondialer.realtime.abandonedcalls":this.selectedTab=3;break;case"app.motiondialer.realtime.queue_params":this.selectedTab=4;break;case"app.motiondialer.realtime.ivr_campaigns":this.selectedTab=5;break;default:this.selectedTab=0,t.go("app.motiondialer.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.motiondialer.realtime.agents");break;case 1:t.go("app.motiondialer.realtime.queues");break;case 2:t.go("app.motiondialer.realtime.queue_calls");break;case 3:t.go("app.motiondialer.realtime.abandonedcalls");break;case 4:t.go("app.motiondialer.realtime.queue_params");break;case 5:t.go("app.motiondialer.realtime.ivr_campaigns");break;default:t.go("app.motiondialer.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.motiondialer").controller("MotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT",g.openchannelAccount=angular.copy(l),g.openchannelAccounts=r,g.newOpenchannelAccount=!1,g.openchannelAccount||(g.openchannelAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="OPENCHANNEL.NEW_OPENCHANNELACCOUNT",g.newOpenchannelAccount=!0),n.params.id&&(g.openchannelAccount.OpenchannelAccountId=n.params.id),g.addNewOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.save(g.openchannelAccount).$promise.then(function(e){g.openchannelAccounts.unshift(e.toJSON()),o.success({title:"OpenchannelAccount properly created",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.update({id:g.openchannelAccount.id},g.openchannelAccount).$promise.then(function(e){var n=_.find(g.openchannelAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelAccount properly saved!",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelAccount will be deleted.").ariaLabel("Delete OpenchannelAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelAccount.delete({id:g.openchannelAccount.id}).$promise.then(function(){_.remove(g.openchannelAccounts,{id:g.openchannelAccount.id}),o.success({title:"OpenchannelAccount properly deleted!",msg:(g.openchannelAccount.name||"openchannelAccount")+" has been deleted!"}),v(g.openchannelAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.openchannelAccount&&(t=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.openchannelAccount&&(a=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelAccounts","openchannelAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccountApp:t,openchannelAccount:r.openchannelAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.openchannelAccountApps.rows[n]=e:r.openchannelAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.openchannelAccountApps.rows.length;t++,0){var a=r.openchannelAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.openchannelAccount.context,a.exten=r.openchannelAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.openchannelAccount.addApplications({id:r.openchannelAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.openchannelAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.openchannelAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.openchannelAccount={},r.openchannelAccountApps={count:0,rows:[]},r.selectedOpenchannelAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]},{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"OpenchannelQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"openchannelQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:801}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.openchannelAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getOpenchannelAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.openchannelAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getOpenchannelAccountApps=function(){r.promise=o.openchannelAccount.getApplications(r.query,t).$promise},r.editOpenchannelAccountApp=n,r.editInterval=function(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteOpenchannelAccountApp=function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedOpenchannelAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedOpenchannelAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedOpenchannelAccountApps.forEach(function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id})}),r.selectedOpenchannelAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelAccount.getAgents({id:c.openchannelAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelAccount?"penalty "+e.UserOpenchannelAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.removeAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.addAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelAccount","openchannelAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditOpenchannelAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("openChannel")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:801}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){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(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELQUEUE",g.openchannelQueue=angular.copy(l),g.openchannelQueues=r,g.newOpenchannelQueue=!1,g.openchannelQueue||(g.openchannelQueue={strategy:"beepall",timeout:10},g.title="OPENCHANNEL.NEW_OPENCHANNELQUEUE",g.newOpenchannelQueue=!0),g.addNewOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.save(g.openchannelQueue).$promise.then(function(e){g.openchannelQueues.unshift(e.toJSON()),o.success({title:"OpenchannelQueue properly created",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.update({id:g.openchannelQueue.id},g.openchannelQueue).$promise.then(function(e){var n=_.find(g.openchannelQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelQueue properly saved!",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelQueue will be deleted.").ariaLabel("Delete OpenchannelQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelQueue.delete({id:g.openchannelQueue.id}).$promise.then(function(){_.remove(g.openchannelQueues,{id:g.openchannelQueue.id}),o.success({title:"OpenchannelQueue properly deleted!",msg:(g.openchannelQueue.name||"openchannelQueue")+" has been deleted!"}),v(g.openchannelQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelQueues","openchannelQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getAgents({id:c.openchannelQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelQueue?"penalty "+e.UserOpenchannelQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","openchannelQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getTeams({id:l.openchannelQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.openchannelQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("OPENCHANNEL.ALL_TEAMS"),labelSelected:t.instant("OPENCHANNEL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.openchannelQueue=c||e.params.openchannelQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoOpenchannelQueues=function(){e.go("app.openchannel.openchannelQueues",{},{reload:"app.openchannel.openchannelQueues"})},u.saveOpenchannelQueue=function(){r.openchannelQueue.update({id:u.openchannelQueue.id},u.openchannelQueue).$promise.then(function(){l.success({title:"OpenchannelQueue updated!",msg:u.openchannelQueue.name?u.openchannelQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelQueue","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelQueues",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.openchannel.openchannelQueues.edit",{id:e.id,openchannelQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelQueue")+"?").htmlContent("<b>"+(e.name||"openchannelQueue")+"</b> will be deleted.").ariaLabel("delete openchannelQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:810}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.openchannel.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.openchannel.realtime.queues",{})}},f.success=E,f.getOpenchannelQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelQueue=function(e,n){i.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:f.openchannelQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelQueue=y,f.exportSelectedOpenchannelQueues=function(){var e=angular.copy(f.selectedOpenchannelQueues);return f.selectedOpenchannelQueues=[],e},f.deleteSelectedOpenchannelQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelQueues?").htmlContent("<b>"+f.selectedOpenchannelQueues.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelQueues.forEach(function(e){y(e)}),f.selectedOpenchannelQueues=[]})},f.deselectOpenchannelQueues=function(){f.selectedOpenchannelQueues=[]},f.selectAllOpenchannelQueues=function(){f.selectedOpenchannelQueues=f.openchannelQueues.rows};var b=!0,A=1;function E(e){f.openchannelQueues=e||{count:0,rows:[]}}function y(e){m.openchannelQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelQueues.rows,{id:e.id}),f.openchannelQueues.count-=1,f.openchannelQueues.rows.length||f.getOpenchannelQueues(),p.success({title:_.startCase("OpenchannelQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelQueuesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("OPENCHANNEL.OPENCHANNELQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("openchannel_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userOpenchannelQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.OpenchannelQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userOpenchannelQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.OpenchannelQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"openchannel")})}),e.$on("$destroy",function(){r.removeAllListeners("openchannel_queue:save"),r.removeAllListeners("userOpenchannelQueue:remove"),r.removeAllListeners("userOpenchannelQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.openchannel").controller("QueuesOpenchannelRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.openchannel.realtime.agents":this.selectedTab=0;break;case"app.openchannel.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.openchannel.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.openchannel.realtime.agents");break;case 1:t.go("app.openchannel.realtime.queues");break;default:t.go("app.openchannel.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.openchannel").controller("OpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.currentUser=s.getCurrentUser(),o.plugin={},o.getTrustedURL=function(){return t.trustAsResourceUrl(o.plugin.adminUrl)},a.plugin.get({id:e.params.id}).$promise.then(function(e){if(e)return o.plugin=e,a.plugin.get({id:o.plugin.id}).$promise}).catch(function(e){o.plugin=void 0})}e.$inject=["$state","$scope","$sce","api","socket","Auth"],angular.module("app.plugins.plugin").controller("PluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this,b=t(function(){},999);function A(){f.agents.rows.forEach(function(e){e.globalStatusDisplayValue=v.getAgentStatusDisplayValue(e)})}function E(){return f.query.offset=(f.query.page-1)*f.query.limit,d.realtime.getAgents(f.query).$promise.then(function(e){f.agents=e,A()}).catch(function(e){m.error({title:o.instant("VOICE.AGENTS"),msg:e.status?JSON.stringify(e.data):e.toString()})})}function y(e,n){if(n)return f.agents.count>f.agents.rows.length?E():(a=n,i=_.remove(f.agents.rows,["id",a]),void(f.agents.count-=i.length));if(f.query.sort.includes("globalStatus")&&(!f.query.globalStatusFilter||"busy"===f.query.globalStatusFilter)){var t="-"===f.query.sort[0]?"DESC":"ASC";if(!1===e)return E();if(!0===e)f.agents.rows=v.sortAgentsByStatus(f.agents.rows,t);else{if(f.agents.count>f.agents.rows.length)return E();f.agents.rows=v.sortAgentsByStatus(f.agents.rows,t)}}var a,i}function S(e){if(0!==f.query.globalQueueFilter.length){var n=e[_.capitalize(f.channel)+"QueueId"];f.query.globalQueueFilter.includes(n)&&E()}}function T(e){if(0!==f.query.globalQueueFilter.length){var n=e[_.capitalize(f.channel)+"QueueId"];f.query.globalQueueFilter.includes(n)&&y(!1,e.UserId)}}f.currentUser=p.getCurrentUser(),f.channel=n.params.channel,f.queueType=n.params.direction,f.agents=r,f.pauses=l||{count:0,rows:[]},f.license=g,f.userProfileSection=u&&1==u.count?u.rows[0]:null,f.crudPermissions=p.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.utcOffset=h,f.query={fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",limit:10,page:1,sort:"fullname",globalStatusFilter:null,pauseTypeFilter:null,globalQueueFilter:[],channel:f.channel},f.getAgents=E,f.logout=function(e){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.LOGOUT"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.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:f.channel,direction:f.queueType,crudPermissions:f.crudPermissions}})},f.pause=function(e,n){return d.user.pause({id:e.id,type:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.PAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.unpause=function(e){return d.user.unpause({id:e.id}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.UNPAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.manageScreenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.SCREENRECORDING"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.clearQueuesSelection=function(){f.query.globalQueueFilter=[]},f.selectAllQueues=function(){f.query.globalQueueFilter=f.queues.rows.map(function(e){return e.id})},f.getQueuesByChannel=function(){if(f.queues&&0<f.queues.count)return;var e={type:f.queueType||"inbound",fields:"id,name",sort:"name",nolimit:"true"},n=f.channel+"Queue";return d.getResourcesByRole(f.currentUser,n,e,null).then(function(e){f.queues=e}).catch(function(e){m.error({title:o.instant("VOICE.QUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},c.on("user:save",function(e){var n=_.find(f.agents.rows,["id",e.id]);n&&(_.merge(n,e),n.globalStatus=v.getAgentStatus(n),v.checkEveryChannelPauseStatus(n),n.globalStatusDisplayValue=v.getAgentStatusDisplayValue(n))}),c.on("user:update",function(e){var n=v.getUserUpdateEventOrigin(e);try{switch(n){case"login":!function(e){var n=!1;f.query.globalStatusFilter?e.loginInPause&&"pause"===f.query.globalStatusFilter?n=!0:e.loginInPause||"idle"!==f.query.globalStatusFilter||(n=!0):n=!0;if(n)E()}(e);break;case"logout":!function(e){if(0===f.agents.count)return;var n=_.find(f.agents.rows,["id",e.id]);{if(!n)return E();y(!1,n.id)}}(e);break;case"pause":t=e,(a=_.find(f.agents.rows,["id",t.id]))?(_.merge(a,t),a.globalStatus=v.getAgentStatus(a),v.checkEveryChannelPauseStatus(a),f.query.globalStatusFilter&&a.globalStatus!==f.query.globalStatusFilter?y(!1,a.id):a.globalStatusDisplayValue=v.getAgentStatusDisplayValue(a)):E()}}catch(e){m.error({title:o.instant("VOICE.AGENTS"),msg:e.toString()})}var t,a}),c.on("user:agentconnect",function(e){try{var n=_.find(f.agents.rows,["id",e.id]);y(!0),e.agentconnected?n?(_.merge(n,_.pick(e,["queue","destconnectedlinenum","routealias"])),y()):y(!1):"busy"!==f.query.globalStatusFilter||n||E()}catch(e){m.error({title:o.instant("VOICE.AGENTS"),msg:e.toString()})}}),c.on("user:agentcomplete",function(e){if("ATTENDED"===e.transfer)return;var n=_.find(f.agents.rows,["id",e.id]);n&&(delete n.queue,delete n.destconnectedlinenum,delete n.routealias,"busy"===f.query.globalStatusFilter?y(!1,e.id):y())}),c.on("userVoiceQueue:save",S),c.on("userVoiceQueue:remove",T),c.on("userChatQueue:save",S),c.on("userChatQueue:remove",T),c.on("userSmsQueue:save",S),c.on("userSmsQueue:remove",T),c.on("userMailQueue:save",S),c.on("userMailQueue:remove",T),c.on("userFaxQueue:save",S),c.on("userFaxQueue:remove",T),c.on("userOpenchannelQueue:save",S),c.on("userOpenchannelQueue:remove",T),c.on("userWhatsappQueue:save",S),c.on("userWhatsappQueue:remove",T),A(),e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),c.removeAllListeners("userVoiceQueue:save"),c.removeAllListeners("userVoiceQueue:remove"),c.removeAllListeners("userChatQueue:save"),c.removeAllListeners("userChatQueue:remove"),c.removeAllListeners("userSmsQueue:save"),c.removeAllListeners("userSmsQueue:remove"),c.removeAllListeners("userMailQueue:save"),c.removeAllListeners("userMailQueue:remove"),c.removeAllListeners("userFaxQueue:save"),c.removeAllListeners("userFaxQueue:remove"),c.removeAllListeners("userOpenchannelQueue:save"),c.removeAllListeners("userOpenchannelQueue:remove"),c.removeAllListeners("userWhatsappQueue:save"),c.removeAllListeners("userWhatsappQueue:remove"),b&&t.cancel(b)})}e.$inject=["$scope","$state","$interval","$mdDialog","$document","$q","$translate","agents","pauses","api","socket","toasty","userProfileSection","Auth","license","realtimeManager","utcOffset"],angular.module("app.realtime").controller("AgentsRealtimeController",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,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("SMS.SMSQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("sms_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userSmsQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.SmsQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userSmsQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.SmsQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"sms")})}),e.$on("$destroy",function(){r.removeAllListeners("sms_queue:save"),r.removeAllListeners("userSmsQueue:remove"),r.removeAllListeners("userSmsQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.sms").controller("QueuesSmsRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.sms.realtime.agents":this.selectedTab=0;break;case"app.sms.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.sms.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.sms.realtime.agents");break;case 1:t.go("app.sms.realtime.queues");break;default:t.go("app.sms.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.sms").controller("SmsRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSACCOUNT",g.smsAccount=angular.copy(l),g.smsAccounts=r,g.newSmsAccount=!1,g.smsAccount||(g.smsAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="SMS.NEW_SMSACCOUNT",g.newSmsAccount=!0),n.params.id&&(g.smsAccount.SmsAccountId=n.params.id),g.addNewSmsAccount=function(){g.errors=[],d.smsAccount.save(g.smsAccount).$promise.then(function(e){g.smsAccounts.unshift(e.toJSON()),o.success({title:"SmsAccount properly created",msg:g.smsAccount.name?g.smsAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsAccount=function(){g.errors=[],d.smsAccount.update({id:g.smsAccount.id},g.smsAccount).$promise.then(function(e){var n=_.find(g.smsAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsAccount properly saved!",msg:g.smsAccount.name?g.smsAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsAccount will be deleted.").ariaLabel("Delete SmsAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsAccount.delete({id:g.smsAccount.id}).$promise.then(function(){_.remove(g.smsAccounts,{id:g.smsAccount.id}),o.success({title:"SmsAccount properly deleted!",msg:(g.smsAccount.name||"smsAccount")+" has been deleted!"}),v(g.smsAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.smsAccount&&(t=_.find(g.lists,{id:Number(g.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.smsAccount&&(a=_.find(g.lists,{id:Number(g.smsAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsAccounts","smsAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccountApp:t,smsAccount:r.smsAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.smsAccountApps.rows[n]=e:r.smsAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.smsAccountApps.rows.length;t++,0){var a=r.smsAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.smsAccount.context,a.exten=r.smsAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.smsAccount.addApplications({id:r.smsAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.smsAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.smsAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.smsAccount={},r.smsAccountApps={count:0,rows:[]},r.selectedSmsAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"SmsQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"smsQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:701}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.smsAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getSmsAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.smsAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getSmsAccountApps=function(){r.promise=o.smsAccount.getApplications(r.query,t).$promise},r.editSmsAccountApp=n,r.editInterval=function(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteSmsAccountApp=function(e){_.remove(r.smsAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedSmsAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedSmsAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedSmsAccountApps.forEach(function(e){_.remove(r.smsAccountApps.rows,{id:e.id})}),r.selectedSmsAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.sms").controller("SmsAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsAccount.getAgents({id:c.smsAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsAccount?"penalty "+e.UserSmsAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.removeAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.addAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsAccount","smsAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditSmsAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("sms")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){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(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSQUEUE",g.smsQueue=angular.copy(l),g.smsQueues=r,g.newSmsQueue=!1,g.smsQueue||(g.smsQueue={strategy:"beepall",timeout:10},g.title="SMS.NEW_SMSQUEUE",g.newSmsQueue=!0),g.addNewSmsQueue=function(){g.errors=[],d.smsQueue.save(g.smsQueue).$promise.then(function(e){g.smsQueues.unshift(e.toJSON()),o.success({title:"SmsQueue properly created",msg:g.smsQueue.name?g.smsQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsQueue=function(){g.errors=[],d.smsQueue.update({id:g.smsQueue.id},g.smsQueue).$promise.then(function(e){var n=_.find(g.smsQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsQueue properly saved!",msg:g.smsQueue.name?g.smsQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsQueue will be deleted.").ariaLabel("Delete SmsQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsQueue.delete({id:g.smsQueue.id}).$promise.then(function(){_.remove(g.smsQueues,{id:g.smsQueue.id}),o.success({title:"SmsQueue properly deleted!",msg:(g.smsQueue.name||"smsQueue")+" has been deleted!"}),v(g.smsQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsQueues","smsQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getAgents({id:c.smsQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsQueue?"penalty "+e.UserSmsQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","smsQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getTeams({id:l.smsQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.smsQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("SMS.ALL_TEAMS"),labelSelected:t.instant("SMS.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.smsQueue=c||e.params.smsQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoSmsQueues=function(){e.go("app.sms.smsQueues",{},{reload:"app.sms.smsQueues"})},u.saveSmsQueue=function(){r.smsQueue.update({id:u.smsQueue.id},u.smsQueue).$promise.then(function(){l.success({title:"SmsQueue updated!",msg:u.smsQueue.name?u.smsQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsQueue","userProfileSection"],angular.module("app.sms").controller("SmsQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsQueues",f.listOrder="",f.listOrderAsc=null,f.selectedSmsQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsQueues.edit",{id:e.id,smsQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsQueue")+"?").htmlContent("<b>"+(e.name||"smsQueue")+"</b> will be deleted.").ariaLabel("delete smsQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:710}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.sms.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.sms.realtime.queues",{})}},f.success=E,f.getSmsQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsQueue=function(e,n){i.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:f.smsQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsQueue=y,f.exportSelectedSmsQueues=function(){var e=angular.copy(f.selectedSmsQueues);return f.selectedSmsQueues=[],e},f.deleteSelectedSmsQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsQueues?").htmlContent("<b>"+f.selectedSmsQueues.length+" selected</b> will be deleted.").ariaLabel("delete SmsQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsQueues.forEach(function(e){y(e)}),f.selectedSmsQueues=[]})},f.deselectSmsQueues=function(){f.selectedSmsQueues=[]},f.selectAllSmsQueues=function(){f.selectedSmsQueues=f.smsQueues.rows};var b=!0,A=1;function E(e){f.smsQueues=e||{count:0,rows:[]}}function y(e){m.smsQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.smsQueues.rows,{id:e.id}),f.smsQueues.count-=1,f.smsQueues.rows.length||f.getSmsQueues(),p.success({title:_.startCase("SmsQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsQueuesController",e)}(),function(){"use strict";function e(e,n,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.channelStatusOut,o.onSave=function(e){var n=_.find(o.calls.rows,{channel:e.channel});e.channelstatedesc=e.dialstatus?"up":"ring",n?_.merge(n,e):e.channel&&o.calls.rows.push(e)},o.onRemove=function(e){var n=_.findIndex(o.calls.rows,{channel:e.channel});0<=n&&(o.calls.rows[n].status="hangup");t(function(){o.calls.rows.splice(n,1)},5e3)},a.on("voice_outbound_channel:save",o.onSave),a.on("voice_outbound_channel:remove",o.onRemove),e.$on("$destroy",function(){a.removeAllListeners("voice_outbound_channel:save"),a.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$timeout","api","socket","rpcCalls","helperClasses"],angular.module("app.voice").controller("OutboundCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"inbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"inbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","unmanaged","abandoned","sumHoldTime","sumDuration","sumBillable"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="VoiceQueues",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueParamsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("VOICE.VOICEQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:u.queues.rows,realtime:!0,crudPermissions:u.crudPermissions}})},r.onWithoutApply("voice_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&m.updateVoiceQueue(e,n)}),r.on("userVoiceQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.VoiceQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userVoiceQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.VoiceQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:agentconnect",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);if(n){if(!t.agentconnected)return;t.queue?n.talking=!0:n.busy=!0,m.updateBusyCounter(e)}})}),r.on("user:agentcomplete",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(n.talking?n.talking=!1:n.busy&&(n.busy=!1),m.updateBusyCounter(e))})}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"voice")})}),e.$on("$destroy",function(){r.removeAllListeners("voice_queue:save"),r.removeAllListeners("userVoiceQueue:remove"),r.removeAllListeners("userVoiceQueue:save"),r.removeAllListeners("user:agentconnect"),r.removeAllListeners("user:agentcomplete"),r.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.voice").controller("QueuesVoiceRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){var a=this;switch(a.selectedTab=0,t.current.name){case"app.voice.realtime.agents":a.selectedTab=0;break;case"app.voice.realtime.telephones":a.selectedTab=1;break;case"app.voice.realtime.trunks":a.selectedTab=2;break;case"app.voice.realtime.queues":a.selectedTab=3;break;case"app.voice.realtime.queue_calls":a.selectedTab=4;break;case"app.voice.realtime.abandonedcalls":a.selectedTab=5;break;case"app.voice.realtime.queue_params":a.selectedTab=6;break;case"app.voice.realtime.outbound_calls":a.selectedTab=7;break;default:a.selectedTab=0,t.go("app.voice.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.voice.realtime.agents");break;case 1:t.go("app.voice.realtime.telephones");break;case 2:t.go("app.voice.realtime.trunks");break;case 3:t.go("app.voice.realtime.queues");break;case 4:t.go("app.voice.realtime.queue_calls");break;case 5:t.go("app.voice.realtime.abandonedcalls");break;case 6:t.go("app.voice.realtime.queue_params");break;case 7:t.go("app.voice.realtime.outbound_calls");break;default:t.go("app.voice.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.voice").controller("VoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c){var m=this,u=["fullname","internal","state","status"];function p(){_.forIn(m.telephones,function(e,n){m.rpcTelephones[n]&&_.merge(e,_.pick(m.rpcTelephones[n],u))})}m.count=a.count,m.attributes=["fullname","internal","state","status","address"],m.telephones=a?_.keyBy(a.rows?a.rows:[],"id"):{},m.rpcTelephones=i?_.keyBy(i.rows?i.rows:[],"id"):{},m.userProfile=l,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={fields:"id,fullname,internal",role:"telephone",sort:"-updatedAt",limit:10,page:1},m.statusClass=r.status,m.stateClass=r.state,m.success=h,m.$onInit=p,m.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},m.getTelephones=function(){m.query.offset=(m.query.page-1)*m.query.limit,c.hasRole("admin")?m.promise=s.user.get(m.query,h).$promise:(m.query.id=m.userProfile.id,m.query.section="Telephones",m.promise=s.userProfile.getResources(m.query,h).$promise)},m.onSave=function(e){m.telephones[e.id]&&_.merge(m.telephones[e.id],_.pick(e,u))},o.on("telephone:save",m.onSave);var g=!0,v=1;function h(e){m.telephones=e?_.keyBy(e.rows?e.rows:[],"id"):{},p()}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=v),m.getTelephones())}),e.$on("$destroy",function(){o.removeAllListeners("telephone:save")})}e.$inject=["$scope","$timeout","$mdDialog","telephones","rpcTelephones","api","socket","helperClasses","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TelephonesVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TrunksVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEMAIL",g.voicemail=angular.copy(l),g.voicemails=r,g.newVoicemail=!1,g.voicemail||(g.voicemail={attach:"no"},g.title="VOICE.NEW_VOICEMAIL",g.newVoicemail=!0),g.addNewVoicemail=function(){g.errors=[],d.voiceMail.save(g.voicemail).$promise.then(function(e){g.voicemails.unshift(e.toJSON()),o.success({title:"Voicemail properly created",msg:g.voicemail.name?g.voicemail.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoicemail=function(){g.errors=[],d.voiceMail.update({id:g.voicemail.id},g.voicemail).$promise.then(function(e){var n=_.find(g.voicemails,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Voicemail properly saved!",msg:g.voicemail.name?g.voicemail.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoicemail=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicemail will be deleted.").ariaLabel("Delete Voicemail").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMail.delete({id:g.voicemail.id}).$promise.then(function(){_.remove(g.voicemails,{id:g.voicemail.id}),o.success({title:"Voicemail properly deleted!",msg:(g.voicemail.name||"voicemail")+" has been deleted!"}),v(g.voicemail)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicemails","voicemail","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoicemailDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.voicemailMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMail.getMessages(m.query,u).$promise}function g(e){d.voiceMailMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.voicemailMessages.rows,{id:e.id}),m.voicemailMessages.count-=1,m.voicemailMessages.rows.length||p(),l.success({title:"Message deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.voicemail={},m.voicemailMessages={count:0,rows:[]},m.selectedVoicemailMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,callerid,duration,audio,stamp,msg_id",sort:"-stamp",limit:10,page:1},m.init=function(e,n){m.voicemail=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.id=m.voicemail.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the message?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("message #")+e.id||"message")+"</b> will be deleted.").ariaLabel("delete message").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMailMessageDownload=function(s,e,n){return d.voiceMailMessage.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="message"+s.id,a=new Blob(n,{type:e.type});t=s.msg_id+".wav";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getVoicemailMessages=p,m.createOrEditVoicemailMessage=function(e,n){o.show({controller:"CreateOrEditMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/edit/messages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:m.voicemail,message:n,messages:m.voicemailMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedVoicemailMessages=function(){var e=angular.copy(m.selectedVoicemailMessages);return m.selectedVoicemailMessages=[],e},m.deleteVoicemailMessage=g,m.deleteSelectedVoicemailMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected messages?").htmlContent("<b>"+m.selectedVoicemailMessages.length+" selected</b> will be deleted.").ariaLabel("delete messages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedVoicemailMessages.forEach(function(e){g(e)}),m.selectedVoicemailMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("VoicemailMessagesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voicemail=c||e.params.voicemail||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoicemails=function(){e.go("app.voice.voicemails",{},{reload:"app.voice.voicemails"})},u.saveVoicemail=function(){r.voiceMail.update({id:u.voicemail.id},u.voicemail).$promise.then(function(){l.success({title:"Voicemail updated!",msg:u.voicemail.name?u.voicemail.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.voicemail&&(t=_.find(u.contexts,{name:u.voicemail.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voicemail","userProfileSection"],angular.module("app.voice").controller("VoicemailController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicemails=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicemails",f.listOrder="",f.listOrderAsc=null,f.selectedVoicemails=[],f.query={fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,page:1},f.arrayattach=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayenvelope=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydelete=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voicemails.edit",{id:e.id,voicemail:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicemail")+"?").htmlContent("<b>"+(e.name||"voicemail")+"</b> will be deleted.").ariaLabel("delete voicemail").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicemails=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMail.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Voicemails",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoicemail=function(e,n){i.show({controller:"CreateOrEditVoicemailDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:n,voicemails:f.voicemails.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoicemail=y,f.exportSelectedVoicemails=function(){var e=angular.copy(f.selectedVoicemails);return f.selectedVoicemails=[],e},f.deleteSelectedVoicemails=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicemails?").htmlContent("<b>"+f.selectedVoicemails.length+" selected</b> will be deleted.").ariaLabel("delete Voicemails").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicemails.forEach(function(e){y(e)}),f.selectedVoicemails=[]})},f.deselectVoicemails=function(){f.selectedVoicemails=[]},f.selectAllVoicemails=function(){f.selectedVoicemails=f.voicemails.rows};var b=!0,A=1;function E(e){f.voicemails=e||{count:0,rows:[]}}function y(e){m.voiceMail.delete({id:e.id}).$promise.then(function(){_.remove(f.voicemails.rows,{id:e.id}),f.voicemails.count-=1,f.voicemails.rows.length||f.getVoicemails(),p.success({title:_.startCase("Voicemail")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicemails())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicemails","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicemailsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEPREFIX",g.voicePrefix=angular.copy(l),g.voicePrefixes=r,g.newvoicePrefix=!1,g.voicePrefix||(g.voicePrefix={},g.title="VOICE.NEW_VOICEPREFIX",g.newvoicePrefix=!0),g.addNewvoicePrefix=function(){g.errors=[],d.voicePrefix.save(g.voicePrefix).$promise.then(function(e){g.voicePrefixes.unshift(e.toJSON()),o.success({title:"voicePrefix properly created",msg:g.voicePrefix.name?g.voicePrefix.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savevoicePrefix=function(){g.errors=[],d.voicePrefix.update({id:g.voicePrefix.id},g.voicePrefix).$promise.then(function(e){var n=_.find(g.voicePrefixes,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"voicePrefix properly saved!",msg:g.voicePrefix.name?g.voicePrefix.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletevoicePrefix=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicePrefix will be deleted.").ariaLabel("Delete voicePrefix").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voicePrefix.delete({id:g.voicePrefix.id}).$promise.then(function(){_.remove(g.voicePrefixes,{id:g.voicePrefix.id}),o.success({title:"voicePrefix properly deleted!",msg:(g.voicePrefix.name||"voicePrefix")+" has been deleted!"}),v(g.voicePrefix)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.outboundRoutes,{id:e.resourceId})}),t=null;if(g.voicePrefix&&(t=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}g.outboundRoutes=n})}else{var t=[],a=null;g.voicePrefix&&(a=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)}));for(var i=0;i<g.outboundRoutes.length;i++)a&&g.outboundRoutes[i].id===a.id&&(g.outboundRoutes[i].canSelect=!1,t.push(g.outboundRoutes[i]));g.outboundRoutes=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicePrefixes","voicePrefix","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditvoicePrefixDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getAgents({id:c.voicePrefix.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UservoicePrefix?"penalty "+e.UservoicePrefix.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.voicePrefix=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("VOICE.ALL_AGENTS"),labelSelected:r.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","voicePrefixes","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getTeams({id:l.voicePrefix.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voicePrefix=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicePrefixes=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicePrefixes",f.listOrder="",f.listOrderAsc=null,f.selectedVoicePrefixes=[],f.query={fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"voicePrefixagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.teamadddialog=function(e,n){i.show({controller:"voicePrefixteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicePrefix")+"?").htmlContent("<b>"+(e.name||"voicePrefix")+"</b> will be deleted.").ariaLabel("delete voicePrefix").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicePrefixes=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voicePrefix.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoicePrefixes",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditvoicePrefix=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicePrefix:n,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletevoicePrefix=y,f.exportSelectedVoicePrefixes=function(){var e=angular.copy(f.selectedVoicePrefixes);return f.selectedVoicePrefixes=[],e},f.deleteSelectedVoicePrefixes=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicePrefixes?").htmlContent("<b>"+f.selectedVoicePrefixes.length+" selected</b> will be deleted.").ariaLabel("delete voicePrefixs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicePrefixes.forEach(function(e){y(e)}),f.selectedVoicePrefixes=[]})},f.deselectVoicePrefixes=function(){f.selectedVoicePrefixes=[]},f.selectAllVoicePrefixes=function(){f.selectedVoicePrefixes=f.voicePrefixes.rows},g.hasRole("admin")?m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.outboundRoutes,{id:e.resourceId})}),t=null;if(f.voicePrefix&&(t=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}f.outboundRoutes=n})}else{var t=[],a=null;f.voicePrefix&&(a=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)}));for(var i=0;i<f.outboundRoutes.length;i++)a&&f.outboundRoutes[i].id===a.id&&(f.outboundRoutes[i].canSelect=!1,t.push(f.outboundRoutes[i]));f.outboundRoutes=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.voicePrefixes=e||{count:0,rows:[]}}function y(e){m.voicePrefix.delete({id:e.id}).$promise.then(function(){_.remove(f.voicePrefixes.rows,{id:e.id}),f.voicePrefixes.count-=1,f.voicePrefixes.rows.length||f.getVoicePrefixes(),p.success({title:_.startCase("voicePrefix")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoicePrefix"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoicePrefix",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicePrefixes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicePrefixes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicePrefixesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEQUEUE",g.voiceQueue=angular.copy(l),g.voiceQueues=r,g.newVoiceQueue=!1,g.voiceQueue||(g.voiceQueue={type:"inbound",strategy:"ringall",timeout:15,retry:2,random_periodic_announce:"no",announce_holdtime:"no",announce_position:"no",reportholdtime:"no",autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no"},g.title="VOICE.NEW_VOICEQUEUE",g.newVoiceQueue=!0),g.addNewVoiceQueue=function(){g.errors=[],d.voiceQueue.save(g.voiceQueue).$promise.then(function(e){g.voiceQueues.unshift(e.toJSON()),o.success({title:"VoiceQueue properly created",msg:g.voiceQueue.name?g.voiceQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceQueue=function(){g.errors=[],d.voiceQueue.update({id:g.voiceQueue.id},g.voiceQueue).$promise.then(function(e){var n=_.find(g.voiceQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceQueue properly saved!",msg:g.voiceQueue.name?g.voiceQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceQueue will be deleted.").ariaLabel("Delete VoiceQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.voiceQueue.id}).$promise.then(function(){_.remove(g.voiceQueues,{id:g.voiceQueue.id}),o.success({title:"VoiceQueue properly deleted!",msg:(g.voiceQueue.name||"voiceQueue")+" has been deleted!"}),v(g.voiceQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceQueues","voiceQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceQueueDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.voiceQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.voiceQueue=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.voiceQueue.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("VOICE.ALL_AGENTS"),labelSelected:s.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","voiceQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueagentaddController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.voiceQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voiceQueue=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.voiceQueue.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueteamaddController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.voiceQueue=c||t.params.voiceQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.teamadddialog=function(e,n){a.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){a.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},u.alert=l.info,u.gotoVoiceQueues=function(){t.go("app.voice.voiceQueues",{},{reload:"app.voice.voiceQueues"})},u.saveVoiceQueue=function(){r.voiceQueue.update({id:u.voiceQueue.id},u.voiceQueue).$promise.then(function(){l.success({title:"VoiceQueue updated!",msg:u.voiceQueue.name?u.voiceQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.voiceQueue&&(t=_.find(u.musiconholds,{name:u.voiceQueue.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.sounds,{id:e.resourceId})});u.sounds.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.sounds=n})}else u.sounds=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceQueue","userProfileSection"],angular.module("app.voice").controller("VoiceQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceQueues",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceQueues=[],f.query={fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Ringall",value:"'ringall'"},{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Least Recent",value:"'leastrecent'"},{option:"Fewest Calls",value:"'fewestcalls'"},{option:"Random",value:"'random'"},{option:"Linear",value:"'linear'"},{option:"Weight Random",value:"'wrandom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayjoinempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayleavewhenempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrandom_periodic_announce=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_holdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Once",value:"'once'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_position=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Limit",value:"'limit'"},{option:"More",value:"'more'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayreportholdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voiceQueues.edit",{id:e.id,voiceQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceQueue")+"?").htmlContent("<b>"+(e.name||"voiceQueue")+"</b> will be deleted.").ariaLabel("delete voiceQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},f.success=E,f.getVoiceQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoiceQueue=function(e,n){i.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:f.voiceQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceQueue=y,f.exportSelectedVoiceQueues=function(){var e=angular.copy(f.selectedVoiceQueues);return f.selectedVoiceQueues=[],e},f.deleteSelectedVoiceQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceQueues?").htmlContent("<b>"+f.selectedVoiceQueues.length+" selected</b> will be deleted.").ariaLabel("delete VoiceQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceQueues.forEach(function(e){y(e)}),f.selectedVoiceQueues=[]})},f.deselectVoiceQueues=function(){f.selectedVoiceQueues=[]},f.selectAllVoiceQueues=function(){f.selectedVoiceQueues=f.voiceQueues.rows};var b=!0,A=1;function E(e){f.voiceQueues=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceQueues.rows,{id:e.id}),f.voiceQueues.count-=1,f.voiceQueues.rows.length||f.getVoiceQueues(),p.success({title:_.startCase("VoiceQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoiceQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICERECORDING",g.voiceRecording=angular.copy(l),g.voiceRecordings=r,g.newVoiceRecording=!1,g.voiceRecording||(g.voiceRecording={},g.title="VOICE.NEW_VOICERECORDING",g.newVoiceRecording=!0),g.addNewVoiceRecording=function(){g.errors=[],d.voiceRecording.save(g.voiceRecording).$promise.then(function(e){g.voiceRecordings.unshift(e.toJSON()),o.success({title:"VoiceRecording properly created",msg:g.voiceRecording.name?g.voiceRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceRecording=function(){g.errors=[],d.voiceRecording.update({id:g.voiceRecording.id},g.voiceRecording).$promise.then(function(e){var n=_.find(g.voiceRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceRecording properly saved!",msg:g.voiceRecording.name?g.voiceRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceRecording will be deleted.").ariaLabel("Delete VoiceRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceRecording.delete({id:g.voiceRecording.id}).$promise.then(function(){_.remove(g.voiceRecordings,{id:g.voiceRecording.id}),o.success({title:"VoiceRecording properly deleted!",msg:(g.voiceRecording.name||"voiceRecording")+" has been deleted!"}),v(g.voiceRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceRecordings","voiceRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceRecordingDialogController",e)}(),function(){"use strict";function e(e,n){var t=this;t.voiceRecording={},t.init=function(e){t.voiceRecording=e}}e.$inject=["api","toasty"],angular.module("app.voice").controller("VoiceRecordingSentimentStatisticsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,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,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("WHATSAPP.WHATSAPPQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("whatsapp_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userWhatsappQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.WhatsappQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userWhatsappQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.WhatsappQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"whatsapp")})}),e.$on("$destroy",function(){r.removeAllListeners("whatsapp_queue:save"),r.removeAllListeners("userWhatsappQueue:remove"),r.removeAllListeners("userWhatsappQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.whatsapp").controller("QueuesWhatsappRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.whatsapp.realtime.agents":this.selectedTab=0;break;case"app.whatsapp.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.whatsapp.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.whatsapp.realtime.agents");break;case 1:t.go("app.whatsapp.realtime.queues");break;default:t.go("app.whatsapp.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.whatsapp").controller("WhatsappRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){"twilio"===g.whatsappAccount.type&&(g.whatsappAccount.baseUrl=null)}function h(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPACCOUNT",g.whatsappAccount=angular.copy(l),g.whatsappAccounts=r,g.newWhatsappAccount=!1,g.whatsappAccount||(g.whatsappAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",notificationSound:!0,queueTransferTimeout:300,waitForTheAssignedAgent:10,agentTransferTimeout:300},g.title="WHATSAPP.NEW_WHATSAPPACCOUNT",g.newWhatsappAccount=!0),n.params.id&&(g.whatsappAccount.WhatsappAccountId=n.params.id),g.addNewWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.save(g.whatsappAccount).$promise.then(function(e){g.whatsappAccounts.unshift(e.toJSON()),o.success({title:"WhatsappAccount properly created",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.update({id:g.whatsappAccount.id},g.whatsappAccount).$promise.then(function(e){var n=_.find(g.whatsappAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappAccount properly saved!",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappAccount will be deleted.").ariaLabel("Delete WhatsappAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappAccount.delete({id:g.whatsappAccount.id}).$promise.then(function(){_.remove(g.whatsappAccounts,{id:g.whatsappAccount.id}),o.success({title:"WhatsappAccount properly deleted!",msg:(g.whatsappAccount.name||"whatsappAccount")+" has been deleted!"}),h(g.whatsappAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=h,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.whatsappAccount&&(t=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.whatsappAccount&&(a=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.pauses,{id:e.resourceId})});g.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.pauses=n})}else g.pauses=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappAccounts","whatsappAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccountApp:t,whatsappAccount:r.whatsappAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.whatsappAccountApps.rows[n]=e:r.whatsappAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.whatsappAccountApps.rows.length;t++,0){var a=r.whatsappAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.whatsappAccount.context,a.exten=r.whatsappAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.whatsappAccount.addApplications({id:r.whatsappAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.whatsappAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.whatsappAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.whatsappAccount={},r.whatsappAccountApps={count:0,rows:[]},r.selectedWhatsappAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"WhatsappQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"whatsappQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:2102}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.whatsappAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getWhatsappAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.whatsappAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getWhatsappAccountApps=function(){r.promise=o.whatsappAccount.getApplications(r.query,t).$promise},r.editWhatsappAccountApp=n,r.editInterval=function(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteWhatsappAccountApp=function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedWhatsappAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedWhatsappAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedWhatsappAccountApps.forEach(function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id})}),r.selectedWhatsappAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappAccount.getAgents({id:c.whatsappAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappAccount?"penalty "+e.UserWhatsappAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.removeAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.addAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappAccount","whatsappAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditWhatsappAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("whatsapp")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){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(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPQUEUE",g.whatsappQueue=angular.copy(l),g.whatsappQueues=r,g.newWhatsappQueue=!1,g.whatsappQueue||(g.whatsappQueue={strategy:"beepall",timeout:10},g.title="WHATSAPP.NEW_WHATSAPPQUEUE",g.newWhatsappQueue=!0),g.addNewWhatsappQueue=function(){g.errors=[],d.whatsappQueue.save(g.whatsappQueue).$promise.then(function(e){g.whatsappQueues.unshift(e.toJSON()),o.success({title:"WhatsappQueue properly created",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappQueue=function(){g.errors=[],d.whatsappQueue.update({id:g.whatsappQueue.id},g.whatsappQueue).$promise.then(function(e){var n=_.find(g.whatsappQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappQueue properly saved!",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappQueue will be deleted.").ariaLabel("Delete WhatsappQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappQueue.delete({id:g.whatsappQueue.id}).$promise.then(function(){_.remove(g.whatsappQueues,{id:g.whatsappQueue.id}),o.success({title:"WhatsappQueue properly deleted!",msg:(g.whatsappQueue.name||"whatsappQueue")+" has been deleted!"}),v(g.whatsappQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappQueues","whatsappQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getAgents({id:c.whatsappQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappQueue?"penalty "+e.UserWhatsappQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","whatsappQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getTeams({id:l.whatsappQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.whatsappQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("WHATSAPP.ALL_TEAMS"),labelSelected:t.instant("WHATSAPP.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.whatsappQueue=c||e.params.whatsappQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoWhatsappQueues=function(){e.go("app.whatsapp.whatsappQueues",{},{reload:"app.whatsapp.whatsappQueues"})},u.saveWhatsappQueue=function(){r.whatsappQueue.update({id:u.whatsappQueue.id},u.whatsappQueue).$promise.then(function(){l.success({title:"WhatsappQueue updated!",msg:u.whatsappQueue.name?u.whatsappQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappQueue","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappQueues",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappQueues.edit",{id:e.id,whatsappQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappQueue")+"?").htmlContent("<b>"+(e.name||"whatsappQueue")+"</b> will be deleted.").ariaLabel("delete whatsappQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:2110}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.whatsapp.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.whatsapp.realtime.queues",{})}},f.success=E,f.getWhatsappQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappQueue=function(e,n){i.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:f.whatsappQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappQueue=y,f.exportSelectedWhatsappQueues=function(){var e=angular.copy(f.selectedWhatsappQueues);return f.selectedWhatsappQueues=[],e},f.deleteSelectedWhatsappQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappQueues?").htmlContent("<b>"+f.selectedWhatsappQueues.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappQueues.forEach(function(e){y(e)}),f.selectedWhatsappQueues=[]})},f.deselectWhatsappQueues=function(){f.selectedWhatsappQueues=[]},f.selectAllWhatsappQueues=function(){f.selectedWhatsappQueues=f.whatsappQueues.rows};var b=!0,A=1;function E(e){f.whatsappQueues=e||{count:0,rows:[]}}function y(e){m.whatsappQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappQueues.rows,{id:e.id}),f.whatsappQueues.count-=1,f.whatsappQueues.rows.length||f.getWhatsappQueues(),p.success({title:_.startCase("WhatsappQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappQueuesController",e)}(),function(){"use strict";function e(n,t,e,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.query={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0},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"},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(){h.connect(),h.on("user:update",I.onUserUpdate),h.on("user:called",I.onUserCalled),h.on("chatInternalMessage:save",I.onInternalMessageSave),h.on("chatInternalMessage:update",I.onInternalMessageUpdate),h.on("userVoiceQueue:save",I.onUserVoiceQueue),h.on("voiceQueue:save",I.onVoiceQueue),h.on("userVoiceQueue:remove",I.onUserVoiceQueue),h.on("voiceQueue:remove",I.onVoiceQueue),h.on("voiceQueue:update",I.onVoiceQueue),h.on("user:forcelogout",M),h.on("userNotification:send",U),h.on("userNotification:recalc:"+I.user.id,$)}function R(){h.disconnect("logout")}function x(e){I.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}function N(){I.promise=f.user.getQueues(I.query,x).$promise}function D(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 P(){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 L(e){return R(),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 k(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 M(e){if(C.debug("onForceLogout -> data",e),e.user.id===I.user.id&&0!==I.user.showWebBar)return R(),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 U(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 F(){I.autoanswerIconColor=P()?"green-700-fg":"gray-700-fg"}function $(e){e&&e.permissions&&(I.currentUser.permissions=e.permissions,F())}I.toggleSidenav=function(e){i(e).toggle()},I.logout=L,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=k,I.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},I.onUserUpdate=function(e){if(e.id===I.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==I.user.showWebBar){var n;R();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(){w(),_.merge(I.user,e),v.setCurrentUser(I.user)})}).catch(function(){clearTimeout(n),L(!0)})}else L(!0);else _.merge(I.user,e),v.setCurrentUser(I.user)},I.onUserCalled=function(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})}},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"}):D(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){P()?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.onInternalMessageSave=function(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++},I.onInternalMessageUpdate=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--},I.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&N()},I.onVoiceQueue=function(){N()},I.hasPermission=function(e){return _.includes(I.currentUser.permissions,e)},function(){I.user=v.getCurrentUser(),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)?k(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 k(null,!0);F()}(),N(),w(),I.openPreviewDialog=D,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/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="CHAT.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n        <th md-column>{{ \'CHAT.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'CHAT.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'CHAT.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="CHAT.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="CHAT.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/chat/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/companies.html",'<div id="companies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.COMPANIES">Companies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCompanies.length > 0" class="selected-bar header 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\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()">\n'+"          {{(vm.selectedDisposition.name ? 'DASHBOARDS.DISPOSE' : 'DASHBOARDS.SAVE') | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>"),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_voice.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_voice.getAbandonedCalls()" query="vm_voice.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_voice.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_voice.quickFilters" query="vm_voice.query" search="vm_voice.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_voice.refresh && vm_voice.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_voice.showTooltip" md-visible="vm_voice.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_voice.promise">\n      <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_voice.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_voice.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_voice.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_voice.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_voice.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_voice.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_voice.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.abandonedCalls.count}}" md-on-paginate="vm_voice.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.html",'<div layout="column" layout-align="start center" class="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\'" ng-click="vm.originateCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.transferCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.agentsQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.agentsQuery.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.QUEUES"></span>\n      <ms-search-bar on-search="vm.getVoiceQueues()" query="vm.queuesQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.queuesQuery.sort" md-on-reorder="vm.getVoiceQueues">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'VOICE.CALLS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceQueues.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="queue in vm.voiceQueues.rows">\n          <td md-cell>{{queue.id}}</td>\n          <td md-cell>{{queue.name}}</td>\n          <td md-cell>{{queue.calls.length || 0}}</td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-click="vm.originateCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-click="vm.transferCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.queuesQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queuesQuery.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header indigo-A100-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.RECORDINGS">Recordings</span>\n      <ms-search-bar on-search="vm.getVoiceRecordings()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n        <tr md-row>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n          <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n          <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n          <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n          <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n          <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n          <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n          <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n          <th md-column width="10px" ng-if="vm.currentUser.downloadVoiceRecordings"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n          <td md-cell colspan="{{ vm.currentUser.downloadVoiceRecordings ? 10 : 9}}">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n          <td md-cell class="type">{{voiceRecording.type}}</td>\n          <td md-cell class="uniqueid">{{voiceRecording.uniqueid}}</td>\n          <td md-cell class="calleridnum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.calleridnum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="exten">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.exten" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="connectedlinenum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.connectedlinenum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="queue">{{voiceRecording.queue}}</td>\n          <td md-cell class="rating">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n          </td>\n          <td md-cell class="audio" ng-switch="voiceRecording.format">\n            \x3c!-- audio recording directive --\x3e\n            <ms-recording ng-switch-when=".wav" id="voiceRecording.id"></ms-recording>\n            \x3c!-- / audio recording directive --\x3e\n            <span ng-switch-when=".gsm">\n              <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n            </span>\n          </td>\n          <td md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n          <td md-cell class="actions" ng-if="vm.currentUser.downloadVoiceRecordings">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.downloadfile(voiceRecording, $event)" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                    Download VoiceRecording\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\'">\n                  <md-button ng-click="vm.downloadtranscribe(voiceRecording, $event)" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                    Download Transcribe\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-grey-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScheduledCalls()">\n      </ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm.getScheduledCalls()" aria-label="Refresh scheduled calls" translate translate-attr-label="MOTIONDIALER.REFRESH_SCHEDULED_CALLS">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'MOTIONDIALER.REFRESH_SCHEDULED_CALLS\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduledCalls">\n        <tr md-row>\n          <th md-column>{{\'MOTIONDIALER.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{ \'MOTIONDIALER.PHONE\' | translate }}</th>\n          <th md-column md-order-by="scheduledat">{{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n          <th md-column md-order-by="recallme">{{ \'MOTIONDIALER.RECALLME\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.CAMPAIGN\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.scheduledCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="scheduledCall in vm.scheduledCalls.rows">\n          <td md-cell privacy ng-cloak>{{scheduledCall.Contact.firstName}} {{scheduledCall.Contact.lastName}}</td>\n          <td md-cell>\n            <ms-click-to-call target="scheduledCall.phone" license="vm_home.license"></ms-click-to-call>\n          </td>\n          <td md-colors="{color: {{ vm.isDateBeforeToday(scheduledCall.scheduledat) ? \'\\\'red\\\'\' : \'\\\'green\\\'\' }}}" md-cell>{{ scheduledCall.scheduledat | date:\'medium\' }}</td>\n          <td md-cell>{{ vm.priorities[scheduledCall.priority] }}</td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.recallme && scheduledCall.UserId == vm.currentUser.id ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ scheduledCall.recallme  && scheduledCall.UserId == vm.currentUser.id ? \'icon-check\' : \'icon-close\' }}">\n            </md-icon>\n          </td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.Queue.dialActive? \'\\\'green\\\'\' : \'\\\'red\\\'\' }}}" md-font-icon="icon-checkbox-blank-circle"></md-icon> {{scheduledCall.Queue.name}}\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.createOrEditQueueCampaignHopper($event, scheduledCall)" translate="MOTIONDIALER.EDIT_HOPPER">\n                    Edit Hopper\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.deleteConfirm(scheduledCall, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                    Delete Hopper\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.scheduledCalls.count}}" md-on-paginate="vm.getScheduledCalls" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.SMS_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getSmsInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getSmsInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getSmsInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.smsAccounts.rows && vm.smsAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="smsAccount in vm.smsAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeSmsInteraction($event, smsAccount)">\n              {{ smsAccount.name }} ({{ smsAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.smsInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.smsInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="smsAccount">\n            {{ vm.getSmsAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showSmsInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadSmsInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsInteractions.count}}" md-on-paginate="vm.getSmsInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.CALLS">Calls</span>\n      <ms-search-bar on-search="vm.getVoiceCalls()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceCalls()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'VOICE.ID\' | translate}}</th>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="source">{{ \'VOICE.SOURCE\' | translate }}</th>\n          <th md-column md-order-by="destination">{{ \'VOICE.DESTINATION\' | translate }}</th>\n          <th md-column md-order-by="starttime">{{ \'VOICE.STARTEDAT\' | translate }}</th>\n          <th md-column md-order-by="endtime">{{ \'VOICE.ENDEDAT\' | translate }}</th>\n          <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column>{{ \'VOICE.NOTE\' | translate }}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceCall in vm.voiceCalls.rows" ng-click="vm.showDetails(voiceCall, $event)">\n          <td md-cell class="type">{{voiceCall.id}}</td>\n          <td md-cell class="type">{{ \'VOICE.\' + voiceCall.type.toUpperCase() | translate}}</td>\n          <td md-cell class="source">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.source" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="destination">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.destination" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="starttime">{{voiceCall.starttime | date:\'medium\' }}</td>\n          <td md-cell class="endtime">{{voiceCall.endtime | date:\'medium\' }}</td>\n          <td md-cell class="disposition">{{ voiceCall.userDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userSecondDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userThirdDisposition}}</td>\n          <td md-cell class="note">\n            <md-icon ng-if="voiceCall.note" md-font-icon="icon-clipboard-outline"></md-icon>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.showDetails(voiceCall, $event)" translate="VOICE.DETAILS">\n                    Show Details\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceCalls.count}}" md-on-paginate="vm.getVoiceCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",'<md-dialog class="details-dialog" aria-label="details">\n  <md-toolbar class="md-background-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span ng-if="!vm.interaction.closed" class="title" translate="VOICE.DETAILS"></span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <md-list flex>\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.UNIQUEID">Uniqueid</p>\n          <h4>{{vm.call.uniqueid}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.TYPE">Type</p>\n          <h4>{{vm.call.type ? vm.call.type : \'no type\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.SOURCE">Source</p>\n          <h4 privacy ng-cloak>{{vm.call.source ? vm.call.source : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DESTINATION">Destination</p>\n          <h4 privacy ng-cloak>{{vm.call.destination ? vm.call.destination : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.STARTEDAT">Started At</p>\n          <h4>{{vm.call.starttime | date:\'medium\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ANSWEREDAT">Answered At</p>\n          <h4>{{vm.call.answertime ? (vm.call.answertime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ENDEDAT">Ended At</p>\n          <h4>{{vm.call.endtime ? (vm.call.endtime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DURATION">Duration</p>\n          <h4>{{vm.call.duration ? vm.call.duration : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.BILLABLESECONDS">Billable Seconds</p>\n          <h4>{{vm.call.billableseconds ? vm.call.billableseconds : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DISPOSITION">Disposition</p>\n          <h4>{{vm.call.userDisposition ? vm.call.userDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n          <h4>{{vm.call.userSecondDisposition ? vm.call.userSecondDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n          <h4>{{vm.call.userThirdDisposition ? vm.call.userThirdDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.NOTE">Note</p>\n          <h4>{{vm.call.note ? vm.call.note : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n    </md-list>\n  </md-dialog-content>\n\n  <md-dialog-actions layout="row" layout-align="space-between center">\n    <md-button type="button" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="DISPOSE" translate="VOICE.CLOSE" translate-attr-aria-label="VOICE.DISPOSE">\n      CLOSE\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.WHATSAPP_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getWhatsappInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getWhatsappInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getWhatsappInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.whatsappAccounts.rows && vm.whatsappAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeWhatsappInteraction($event, whatsappAccount)">\n              {{ whatsappAccount.name }} ({{ whatsappAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.whatsappInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.whatsappInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="whatsappAccount">\n            {{ vm.getWhatsappAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showWhatsappInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadWhatsappInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappInteractions.count}}" md-on-paginate="vm.getWhatsappInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html",'<md-content layout="row" layout-fill>\n\n  <div flex layout="row">\n\n    <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="width: 100%; height: 100%; border:0px;"></iframe>\n\n  </div>\n\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",'<md-dialog id="agent-general-dialog" aria-label="Spy Dialog">\n  <div id="interaction-app" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'"></div>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html\'"></div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n\n    <md-card flex="75" class="interaction">\n\n      <md-content class="interaction-agents" layout="row" layout-align="start center" ng-if="!vm.interaction.closed && vm.interaction.Users.length">\n        <strong layout-margin translate="DASHBOARDS.CURRENTLY_IN_USE_BY">Currently in use by </strong>\n\n        <div ng-repeat="u in vm.interaction.Users">\n          <img class="avatar-small" ng-src="api/users/{{u.id}}/avatar">\n          <md-tooltip> {{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : vm.usersMap[u.id] | translate }}\n          </md-tooltip>\n        </div>\n      </md-content>\n\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html\'">\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex 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/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n        <th md-column>{{ \'FAX.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'FAX.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'FAX.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="FAX.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="FAX.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/fax/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n          <th md-column>{{ \'FAX.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'FAX.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'FAX.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'FAX.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="FAX.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="FAX.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/help/views/about/about.html",'<div id="maintenance" class="flex-scrollable" layout="column">\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/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n        <th md-column>{{ \'MAIL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MAIL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MAIL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MAIL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MAIL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/mail/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/create/dialog.html",'<md-dialog class="plugin-dialog" aria-label="New Plugin">\n  <form name="pluginForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'MOTIONDIALER.DID\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.CALLER\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.AGENT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'MOTIONDIALER.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="MOTIONDIALER.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="MOTIONDIALER.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="MOTIONDIALER.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                                MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.MANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.DROPPED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(queue.answered + queue.outboundNoAnswerCallsDay + queue.outboundBusyCallsDay + queue.outboundCongestionCallsDay + queue.outboundNoSuchCallsDay + queue.outboundUnknownCallsDay + queue.outboundDropCallsDayTimeout + queue.outboundDropCallsDayCallersExit + queue.outboundBlacklistCallsDay + queue.outboundOriginateFailureCallsDay + queue.outboundAnswerAgiCallsDay + queue.outboundReCallsDay + queue.outboundRejectCallsDay )|| 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{queue.total || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.answered) ? (100 - (((queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total)) | number:1 ) - (((queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total )) | number:1 )  ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayCallersExit || 0}} ({{(queue.outboundDropCallsDayCallersExit) ? (queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayTimeout || 0}} ({{(queue.outboundDropCallsDayTimeout) ? (queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumHoldTime / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumDuration / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",'<md-dialog class="predictive-dialog" aria-label="New predictive">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.queueCampaign.name }} Info</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="text-center">\n    <ds-widget-clock data-show-digital></ds-widget-clock>\n    <div ng-if="!vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive">\n      <div class="md-title"><span translate="MOTIONDIALER.PREDICTIVE_IS_NOT_RUNNING">Predictive is not running</span></div>\n    </div>\n\n    <div ng-if="vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.DATA_COLLECTION_IN_PROGRESSIVE">Data collection in progressive</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startProgressive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startProgressive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n    </div>\n    <div ng-if="vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.PREDICTIVE_IS_RUNNING">Predictive is runnning</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startPredictive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startPredictive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n      <div class="row">\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">Predictive - {{ \'MOTIONDIALER.PREVIOUS_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.TOTAL_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalTotalCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ANSWERED_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalAnsweredCalls }}</td>\n                </tr>\n                \x3c!-- Temporaneamente non mostrate perchè contengono anche i dati dell\'intervallo corrente --\x3e\n                \x3c!-- <tr md-row>\n                                    <td md-cell>Dropped Calls Timeout</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsTimeout }}</td>\n                                </tr>\n                                <tr md-row>\n                                    <td md-cell>Dropped Calls Caller Exit</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsCallersExit }}\n                                    </td>\n                                </tr> --\x3e\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_HOLD_TIME">AVG Hold Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgHoldtime | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_TALK_TIME">AVG Talk Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgTalktime | number:0 }}s</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">ErlangB - {{ \'MOTIONDIALER.CURRENT_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ONE_CALL_EVERY">One call every</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.erlangCallToSecond | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.DROPRATE">Drop Rate</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangAbandonmentRate * 100 | number:2 }}%</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AGENTBUSYFACTOR">Agent Busy Factor</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangBusyFactor * 100 | number:2 }}%</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n      </div>\n    </div>\n\n\n  </md-dialog-content>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TALKING\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.BUSY\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.WAITING\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.ORIGINATED_TEXT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.MESSAGE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking  + queue.pTalking}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb - queue.available - queue.paused - queue.talking - queue.waiting\n               }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.originated }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.message ? (\'MOTIONDIALER.\'+queue.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.dialMethod || 0 }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.Trunk ? queue.Trunk.name : \'--\' }}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{queue.dialActive ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{queue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MOTIONDIALER.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if="queue.dialMethod == \'predictive\'">\n                <md-button ng-click="vm.showPredictiveQueueCampaignInfo($event, queue)" translate="MOTIONDIALER.SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO">\n                  Show Predictive Info\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MOTIONDIALER.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="OPENCHANNEL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="OPENCHANNEL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="OPENCHANNEL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/openchannel/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/plugins/views/plugin/plugin.html",'<div ng-if="!vm.plugin">\n  <p>Plugin not available...</p>\n</div>\n<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/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/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/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="SMS.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n        <th md-column>{{ \'SMS.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'SMS.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'SMS.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="SMS.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="SMS.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/sms/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/create/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n        <th md-column>{{ \'VOICE.AGENT\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="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="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>\n          <span>{{channel.calleridname}}, {{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>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                        VOICE.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ANSWERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.UNMANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          \x3c!-- <span class="font-size-20 grey-fg">{{queue.total || 0}}</span> --\x3e\n          <span class="font-size-20 grey-fg">{{ (queue.answered || 0) + (queue.abandoned || 0) + (queue.unmanaged || 0) }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.total) ? (queue.answered || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.abandoned || 0}} ({{(queue.total) ? (queue.abandoned || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.unmanaged || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? ((queue.sumHoldTime || 0) / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{(queue.total ? ((queue.sumDuration || 0) / queue.total) : 0) | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n        <th md-column>{{ \'VOICE.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'VOICE.TALKING\' | translate }}</th>\n        <th md-column>{{ \'VOICE.BUSY\' | translate }}</th>\n        <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.busy }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="VOICE.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="VOICE.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TELEPHONES">Telephones</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.OUTBOUND_CALLS">Outbound Calls</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/realtime/telephones/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TELEPHONES">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTelephones()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n      <tr md-row>\n        <th md-column md-order-by="fullname">{{ \'VOICE.ACCOUNTNAME\' | translate }}</th>\n        <th md-column md-order-by="internal">{{ \'VOICE.INTERNAL\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATUS\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.telephones">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="telephone" md-select-id="id" ng-repeat="(id, telephone) in vm.telephones">\n        <td md-cell>{{telephone.fullname}}</td>\n        <td md-cell>{{telephone.internal}}</td>\n        <td md-cell>\n          <i ng-class="vm.stateClass[telephone.state]">\n            <md-tooltip>{{\'VOICE.\' + telephone.state | uppercase | translate}}</md-tooltip>\n          </i>\n        </td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[telephone.status]">\n            <md-tooltip>{{\'VOICE.\' + telephone.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="telephone.status === \'registered\'" class="text-boxed">{{telephone.address}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n          <th md-column>{{ \'VOICE.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'VOICE.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'VOICE.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'VOICE.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="VOICE.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="VOICE.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/voicemails/create/dialog.html",'<md-dialog class="voicemail-dialog" aria-label="New Voicemail">\n  <form name="voicemailForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="WHATSAPP.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="WHATSAPP.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="WHATSAPP.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/whatsapp/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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">{{vm.contacts > 99 ? \'99+\' : vm.contacts}}</div>\n      <md-icon md-font-icon="icon-fire" class="icon red-900-fg"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.PREVIEW">Preview</span></md-tooltip>\n    </md-button>\n\n    <ms-search-bar ng-if="vm.user.role !== \'agent\'" on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300" collapse-on-blur="true"></ms-search-bar>\n\n    <md-menu id="language-menu" md-offset="0 72" md-position-mode="target-right target" layout="column" layout-align="center center">\n      <md-button class="md-icon-button no-margin" ng-click="$mdOpenMenu()" aria-label="Language" md-menu-origin md-menu-align-target>\n        <div layout="row" layout-align="center center">\n          <img class="flag" ng-src="assets/images/flags/{{vm.selectedLanguage.flag}}.png">\n        </div>\n      </md-button>\n\n      <md-menu-content width="3" id="language-menu-content">\n        <md-menu-item ng-repeat="(iso, lang) in vm.languages">\n          <md-button ng-click="vm.changeLanguage(lang)" aria-label="{{lang.title}}" translate translate-attr-aria-label="{{lang.title}}">\n            <span layout="row" layout-align="start center">\n              <img class="flag flag-24" ng-src="assets/images/flags/{{lang.flag}}.png">\n              <span>{{ 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 f6bd14f..0e5662e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75ca=['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]','exports','VIRTUAL','getDataValue','action','STRING','contactManager','integration','jscripty','browser','bot','script'];(function(_0x4a29a9,_0x58cd04){var _0x386570=function(_0x1d2d09){while(--_0x1d2d09){_0x4a29a9['push'](_0x4a29a9['shift']());}};_0x386570(++_0x58cd04);}(_0x75ca,0xd1));var _0xa75c=function(_0x35d3a8,_0x44406a){_0x35d3a8=_0x35d3a8-0x0;var _0x182378=_0x75ca[_0x35d3a8];return _0x182378;};'use strict';var Sequelize=require('sequelize');module[_0xa75c('0x0')]={'name':{'type':Sequelize[_0xa75c('0x1')],'get':function(_0x5df765){return this[_0xa75c('0x2')](_0xa75c('0x3'));}},'action':{'type':Sequelize[_0xa75c('0x4')],'allowNull':![],'validate':{'isIn':{'args':[[_0xa75c('0x5'),_0xa75c('0x6'),'motionbar',_0xa75c('0x7'),'urlForward',_0xa75c('0x8'),_0xa75c('0x9'),_0xa75c('0xa')]],'msg':'Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script'}},'comment':_0xa75c('0xb')},'data1':{'type':Sequelize[_0xa75c('0x4')](0x1000),'comment':_0xa75c('0xc')},'data2':{'type':Sequelize[_0xa75c('0x4')](0x1000),'comment':_0xa75c('0xd')},'data3':{'type':Sequelize[_0xa75c('0x4')](0x1000),'comment':_0xa75c('0xe')},'data4':{'type':Sequelize['STRING'](0x1000),'comments':_0xa75c('0xf')},'data5':{'type':Sequelize[_0xa75c('0x4')](0x1000),'comments':_0xa75c('0x10')},'data6':{'type':Sequelize[_0xa75c('0x4')],'comments':_0xa75c('0x11')},'data7':{'type':Sequelize[_0xa75c('0x12')],'comments':_0xa75c('0x13')}};
\ No newline at end of file
+var _0xc122=['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]','sequelize','exports','VIRTUAL','getDataValue','action','STRING','integration','motionbar','jscripty','browser','bot'];(function(_0x1774f5,_0x348352){var _0x3d9462=function(_0x39c72a){while(--_0x39c72a){_0x1774f5['push'](_0x1774f5['shift']());}};_0x3d9462(++_0x348352);}(_0xc122,0x149));var _0x2c12=function(_0x3fc803,_0x4fb04a){_0x3fc803=_0x3fc803-0x0;var _0x17cd8c=_0xc122[_0x3fc803];return _0x17cd8c;};'use strict';var Sequelize=require(_0x2c12('0x0'));module[_0x2c12('0x1')]={'name':{'type':Sequelize[_0x2c12('0x2')],'get':function(_0x403c0d){return this[_0x2c12('0x3')](_0x2c12('0x4'));}},'action':{'type':Sequelize[_0x2c12('0x5')],'allowNull':![],'validate':{'isIn':{'args':[['contactManager',_0x2c12('0x6'),_0x2c12('0x7'),_0x2c12('0x8'),'urlForward',_0x2c12('0x9'),_0x2c12('0xa'),'script']],'msg':_0x2c12('0xb')}},'comment':_0x2c12('0xb')},'data1':{'type':Sequelize[_0x2c12('0x5')](0x1000),'comment':_0x2c12('0xc')},'data2':{'type':Sequelize['STRING'](0x1000),'comment':_0x2c12('0xd')},'data3':{'type':Sequelize['STRING'](0x1000),'comment':_0x2c12('0xe')},'data4':{'type':Sequelize[_0x2c12('0x5')](0x1000),'comments':_0x2c12('0xf')},'data5':{'type':Sequelize[_0x2c12('0x5')](0x1000),'comments':_0x2c12('0x10')},'data6':{'type':Sequelize[_0x2c12('0x5')],'comments':_0x2c12('0x11')},'data7':{'type':Sequelize[_0x2c12('0x12')],'comments':_0x2c12('0x13')}};
\ No newline at end of file
index 1228455..4e35996 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd825=['squel','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','body','Action','find','params','catch','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra'];(function(_0x40220a,_0x22feb1){var _0x3903cc=function(_0x33a296){while(--_0x33a296){_0x40220a['push'](_0x40220a['shift']());}};_0x3903cc(++_0x22feb1);}(_0xd825,0x7f));var _0x5d82=function(_0x19c0b9,_0xc64c4a){_0x19c0b9=_0x19c0b9-0x0;var _0xb07c11=_0xd825[_0x19c0b9];return _0xb07c11;};'use strict';var emlformat=require(_0x5d82('0x0'));var rimraf=require(_0x5d82('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5d82('0x2'));var rp=require(_0x5d82('0x3'));var moment=require('moment');var BPromise=require(_0x5d82('0x4'));var Mustache=require(_0x5d82('0x5'));var util=require(_0x5d82('0x6'));var path=require(_0x5d82('0x7'));var sox=require(_0x5d82('0x8'));var csv=require('to-csv');var ejs=require(_0x5d82('0x9'));var fs=require('fs');var fs_extra=require(_0x5d82('0xa'));var _=require('lodash');var squel=require(_0x5d82('0xb'));var crypto=require(_0x5d82('0xc'));var jsforce=require(_0x5d82('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x5d82('0xe'));var Redis=require('ioredis');var authService=require(_0x5d82('0xf'));var qs=require(_0x5d82('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5d82('0x11'));var logger=require(_0x5d82('0x12'))(_0x5d82('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x5d82('0x14'));var db=require(_0x5d82('0x15'))['db'];function respondWithStatusCode(_0x1a1758,_0x136f88){_0x136f88=_0x136f88||0xcc;return function(_0x5939e1){if(_0x5939e1){return _0x1a1758[_0x5d82('0x16')](_0x136f88);}return _0x1a1758[_0x5d82('0x17')](_0x136f88)['end']();};}function respondWithResult(_0x1405bf,_0x32ad04){_0x32ad04=_0x32ad04||0xc8;return function(_0x1e73f6){if(_0x1e73f6){return _0x1405bf[_0x5d82('0x17')](_0x32ad04)[_0x5d82('0x18')](_0x1e73f6);}};}function respondWithFilteredResult(_0x22bdf5,_0x25941f){return function(_0xe73bbf){if(_0xe73bbf){var _0x47dd6d=typeof _0x25941f[_0x5d82('0x19')]===_0x5d82('0x1a')&&typeof _0x25941f[_0x5d82('0x1b')]===_0x5d82('0x1a');var _0x27dfc3=_0xe73bbf[_0x5d82('0x1c')];var _0x5dee15=_0x47dd6d?0x0:_0x25941f[_0x5d82('0x19')];var _0x369deb=_0x47dd6d?_0xe73bbf['count']:_0x25941f[_0x5d82('0x19')]+_0x25941f['limit'];var _0x42ba07;if(_0x369deb>=_0x27dfc3){_0x369deb=_0x27dfc3;_0x42ba07=0xc8;}else{_0x42ba07=0xce;}_0x22bdf5[_0x5d82('0x17')](_0x42ba07);return _0x22bdf5[_0x5d82('0x1d')](_0x5d82('0x1e'),_0x5dee15+'-'+_0x369deb+'/'+_0x27dfc3)[_0x5d82('0x18')](_0xe73bbf);}return null;};}function patchUpdates(_0xc9cd01){return function(_0x5b953c){try{jsonpatch[_0x5d82('0x1f')](_0x5b953c,_0xc9cd01,!![]);}catch(_0x189c1e){return BPromise[_0x5d82('0x20')](_0x189c1e);}return _0x5b953c[_0x5d82('0x21')]();};}function saveUpdates(_0x1a7e7e,_0x527027){return function(_0x439898){if(_0x439898){return _0x439898[_0x5d82('0x22')](_0x1a7e7e)[_0x5d82('0x23')](function(_0x1e76b8){return _0x1e76b8;});}return null;};}function removeEntity(_0x40b1af,_0x541ee0){return function(_0x2cb872){if(_0x2cb872){return _0x2cb872[_0x5d82('0x24')]()[_0x5d82('0x23')](function(){_0x40b1af[_0x5d82('0x17')](0xcc)[_0x5d82('0x25')]();});}};}function handleEntityNotFound(_0x222edb,_0xc36c88){return function(_0x5ed308){if(!_0x5ed308){_0x222edb[_0x5d82('0x16')](0x194);}return _0x5ed308;};}function handleError(_0x18193e,_0x34fa54){_0x34fa54=_0x34fa54||0x1f4;return function(_0xa8c593){logger[_0x5d82('0x26')](_0xa8c593[_0x5d82('0x27')]);if(_0xa8c593[_0x5d82('0x28')]){delete _0xa8c593[_0x5d82('0x28')];}_0x18193e['status'](_0x34fa54)['send'](_0xa8c593);};}exports[_0x5d82('0x22')]=function(_0x3d8df6,_0x23086a){if(_0x3d8df6['body']['id']){delete _0x3d8df6[_0x5d82('0x29')]['id'];}return db[_0x5d82('0x2a')][_0x5d82('0x2b')]({'where':{'id':_0x3d8df6[_0x5d82('0x2c')]['id']}})[_0x5d82('0x23')](handleEntityNotFound(_0x23086a,null))[_0x5d82('0x23')](saveUpdates(_0x3d8df6[_0x5d82('0x29')],null))[_0x5d82('0x23')](respondWithResult(_0x23086a,null))[_0x5d82('0x2d')](handleError(_0x23086a,null));};exports['destroy']=function(_0x28a9f6,_0x207137){return db[_0x5d82('0x2a')][_0x5d82('0x2b')]({'where':{'id':_0x28a9f6[_0x5d82('0x2c')]['id']}})[_0x5d82('0x23')](handleEntityNotFound(_0x207137,null))[_0x5d82('0x23')](removeEntity(_0x207137,null))[_0x5d82('0x2d')](handleError(_0x207137,null));};
\ No newline at end of file
+var _0x856c=['offset','undefined','count','limit','Content-Range','apply','save','update','then','destroy','error','stack','name','send','body','Action','find','catch','eml-format','zip-dir','fast-json-patch','request-promise','util','path','sox','fs-extra','squel','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json'];(function(_0x590f0d,_0x4cd02b){var _0x47a948=function(_0x54a10d){while(--_0x54a10d){_0x590f0d['push'](_0x590f0d['shift']());}};_0x47a948(++_0x4cd02b);}(_0x856c,0x68));var _0xc856=function(_0x548003,_0x40987c){_0x548003=_0x548003-0x0;var _0x3b29a7=_0x856c[_0x548003];return _0x3b29a7;};'use strict';var emlformat=require(_0xc856('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc856('0x1'));var jsonpatch=require(_0xc856('0x2'));var rp=require(_0xc856('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xc856('0x4'));var path=require(_0xc856('0x5'));var sox=require(_0xc856('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc856('0x7'));var _=require('lodash');var squel=require(_0xc856('0x8'));var crypto=require('crypto');var jsforce=require(_0xc856('0x9'));var deskjs=require(_0xc856('0xa'));var toCsv=require(_0xc856('0xb'));var querystring=require(_0xc856('0xc'));var Papa=require('papaparse');var Redis=require(_0xc856('0xd'));var authService=require(_0xc856('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xc856('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc856('0x10'))(_0xc856('0x11'));var utils=require(_0xc856('0x12'));var config=require(_0xc856('0x13'));var licenseUtil=require(_0xc856('0x14'));var db=require(_0xc856('0x15'))['db'];function respondWithStatusCode(_0x441f09,_0x20276f){_0x20276f=_0x20276f||0xcc;return function(_0x3b6c74){if(_0x3b6c74){return _0x441f09['sendStatus'](_0x20276f);}return _0x441f09[_0xc856('0x16')](_0x20276f)[_0xc856('0x17')]();};}function respondWithResult(_0x14325e,_0x323976){_0x323976=_0x323976||0xc8;return function(_0x26da49){if(_0x26da49){return _0x14325e[_0xc856('0x16')](_0x323976)[_0xc856('0x18')](_0x26da49);}};}function respondWithFilteredResult(_0x195bd2,_0xb7a447){return function(_0x4b28cf){if(_0x4b28cf){var _0x382d2f=typeof _0xb7a447[_0xc856('0x19')]===_0xc856('0x1a')&&typeof _0xb7a447['limit']===_0xc856('0x1a');var _0x7d5e96=_0x4b28cf['count'];var _0xb9e1ab=_0x382d2f?0x0:_0xb7a447[_0xc856('0x19')];var _0x1eec01=_0x382d2f?_0x4b28cf[_0xc856('0x1b')]:_0xb7a447[_0xc856('0x19')]+_0xb7a447[_0xc856('0x1c')];var _0x4f7394;if(_0x1eec01>=_0x7d5e96){_0x1eec01=_0x7d5e96;_0x4f7394=0xc8;}else{_0x4f7394=0xce;}_0x195bd2['status'](_0x4f7394);return _0x195bd2['set'](_0xc856('0x1d'),_0xb9e1ab+'-'+_0x1eec01+'/'+_0x7d5e96)[_0xc856('0x18')](_0x4b28cf);}return null;};}function patchUpdates(_0x3a6455){return function(_0x40f369){try{jsonpatch[_0xc856('0x1e')](_0x40f369,_0x3a6455,!![]);}catch(_0x392ce7){return BPromise['reject'](_0x392ce7);}return _0x40f369[_0xc856('0x1f')]();};}function saveUpdates(_0x176f43,_0x4295ce){return function(_0x3f18b8){if(_0x3f18b8){return _0x3f18b8[_0xc856('0x20')](_0x176f43)[_0xc856('0x21')](function(_0x5f0405){return _0x5f0405;});}return null;};}function removeEntity(_0x107445,_0x43f356){return function(_0x57b29b){if(_0x57b29b){return _0x57b29b[_0xc856('0x22')]()[_0xc856('0x21')](function(){_0x107445[_0xc856('0x16')](0xcc)[_0xc856('0x17')]();});}};}function handleEntityNotFound(_0x36d497,_0x4996d5){return function(_0x7fb3c8){if(!_0x7fb3c8){_0x36d497['sendStatus'](0x194);}return _0x7fb3c8;};}function handleError(_0x3c040e,_0xa39a36){_0xa39a36=_0xa39a36||0x1f4;return function(_0x2bc014){logger[_0xc856('0x23')](_0x2bc014[_0xc856('0x24')]);if(_0x2bc014[_0xc856('0x25')]){delete _0x2bc014[_0xc856('0x25')];}_0x3c040e[_0xc856('0x16')](_0xa39a36)[_0xc856('0x26')](_0x2bc014);};}exports[_0xc856('0x20')]=function(_0x553c87,_0x1341c6){if(_0x553c87['body']['id']){delete _0x553c87[_0xc856('0x27')]['id'];}return db[_0xc856('0x28')][_0xc856('0x29')]({'where':{'id':_0x553c87['params']['id']}})[_0xc856('0x21')](handleEntityNotFound(_0x1341c6,null))['then'](saveUpdates(_0x553c87[_0xc856('0x27')],null))[_0xc856('0x21')](respondWithResult(_0x1341c6,null))[_0xc856('0x2a')](handleError(_0x1341c6,null));};exports['destroy']=function(_0x399cd0,_0x4426ab){return db['Action'][_0xc856('0x29')]({'where':{'id':_0x399cd0['params']['id']}})[_0xc856('0x21')](handleEntityNotFound(_0x4426ab,null))['then'](removeEntity(_0x4426ab,null))[_0xc856('0x2a')](handleError(_0x4426ab,null));};
\ No newline at end of file
index eb164e6..1944736 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc260=['request-promise','path','../../config/environment','exports','define','Action','tools_actions','lodash','util','../../config/logger','api','moment'];(function(_0x359bbe,_0x5b7fcc){var _0x1b3353=function(_0x34b41c){while(--_0x34b41c){_0x359bbe['push'](_0x359bbe['shift']());}};_0x1b3353(++_0x5b7fcc);}(_0xc260,0x10f));var _0x0c26=function(_0x5e5008,_0x533770){_0x5e5008=_0x5e5008-0x0;var _0x3782c4=_0xc260[_0x5e5008];return _0x3782c4;};'use strict';var _=require(_0x0c26('0x0'));var util=require(_0x0c26('0x1'));var logger=require(_0x0c26('0x2'))(_0x0c26('0x3'));var moment=require(_0x0c26('0x4'));var BPromise=require('bluebird');var rp=require(_0x0c26('0x5'));var fs=require('fs');var path=require(_0x0c26('0x6'));var rimraf=require('rimraf');var config=require(_0x0c26('0x7'));var attributes=require('./action.attributes');module[_0x0c26('0x8')]=function(_0x5383e2,_0x292992){return _0x5383e2[_0x0c26('0x9')](_0x0c26('0xa'),attributes,{'tableName':_0x0c26('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1903=['define','Action','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./action.attributes'];(function(_0x27da33,_0x3ffbe7){var _0x1f9d9c=function(_0x359c2f){while(--_0x359c2f){_0x27da33['push'](_0x27da33['shift']());}};_0x1f9d9c(++_0x3ffbe7);}(_0x1903,0x7a));var _0x3190=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1903[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x3190('0x0'));var logger=require(_0x3190('0x1'))(_0x3190('0x2'));var moment=require(_0x3190('0x3'));var BPromise=require(_0x3190('0x4'));var rp=require(_0x3190('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x3190('0x6'));var attributes=require(_0x3190('0x7'));module['exports']=function(_0x4ba830,_0x231f63){return _0x4ba830[_0x3190('0x8')](_0x3190('0x9'),attributes,{'tableName':'tools_actions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9cf61ae..ff3eb50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['then','info','Action,\x20%s,\x20%s','request\x20sent','Action,\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(_0xf0cd3c,_0x309795){var _0x5f2125=function(_0x307f82){while(--_0x307f82){_0xf0cd3c['push'](_0xf0cd3c['shift']());}};_0x5f2125(++_0x309795);}(_0x1261,0x144));var _0x1126=function(_0xd8f7bd,_0x45dc8c){_0xd8f7bd=_0xd8f7bd-0x0;var _0x1bd5ee=_0x1261[_0xd8f7bd];return _0x1bd5ee;};'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')]('Action,\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 _0x1cb9=['error','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','Action,\x20%s,\x20%s','request\x20sent','debug','Action,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x1cb9,0x14e));var _0x91cb=function(_0x37436c,_0x2b7cda){_0x37436c=_0x37436c-0x0;var _0x2fed8c=_0x1cb9[_0x37436c];return _0x2fed8c;};'use strict';var _=require(_0x91cb('0x0'));var util=require('util');var moment=require(_0x91cb('0x1'));var BPromise=require(_0x91cb('0x2'));var rs=require(_0x91cb('0x3'));var fs=require('fs');var Redis=require(_0x91cb('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x91cb('0x5'));var logger=require(_0x91cb('0x6'))('rpc');var config=require(_0x91cb('0x7'));var jayson=require(_0x91cb('0x8'));var client=jayson[_0x91cb('0x9')][_0x91cb('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3b9d98,_0x8f8a3b,_0x4c1f56){return new BPromise(function(_0x15c517,_0x5bda2f){return client[_0x91cb('0xb')](_0x3b9d98,_0x4c1f56)['then'](function(_0xa43e7a){logger[_0x91cb('0xc')](_0x91cb('0xd'),_0x8f8a3b,_0x91cb('0xe'));logger[_0x91cb('0xf')](_0x91cb('0x10'),_0x8f8a3b,_0x91cb('0xe'),JSON[_0x91cb('0x11')](_0xa43e7a));if(_0xa43e7a[_0x91cb('0x12')]){if(_0xa43e7a[_0x91cb('0x12')]['code']===0x1f4){logger[_0x91cb('0x12')](_0x91cb('0xd'),_0x8f8a3b,_0xa43e7a['error'][_0x91cb('0x13')]);return _0x5bda2f(_0xa43e7a[_0x91cb('0x12')][_0x91cb('0x13')]);}logger[_0x91cb('0x12')]('Action,\x20%s,\x20%s',_0x8f8a3b,_0xa43e7a['error'][_0x91cb('0x13')]);return _0x15c517(_0xa43e7a[_0x91cb('0x12')]['message']);}else{logger['info'](_0x91cb('0xd'),_0x8f8a3b,_0x91cb('0xe'));_0x15c517(_0xa43e7a[_0x91cb('0x14')]['message']);}})[_0x91cb('0x15')](function(_0x135890){logger['error'](_0x91cb('0xd'),_0x8f8a3b,_0x135890);_0x5bda2f(_0x135890);});});}
\ No newline at end of file
index 4fe4433..324f049 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd18=['path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./action.controller','put','/:id','isAuthenticated','delete','destroy','exports','util'];(function(_0xb7b878,_0x5c3b92){var _0x3c84b9=function(_0x21d5a2){while(--_0x21d5a2){_0xb7b878['push'](_0xb7b878['shift']());}};_0x3c84b9(++_0x5c3b92);}(_0xdd18,0xd1));var _0x8dd1=function(_0x36e248,_0x47ec86){_0x36e248=_0x36e248-0x0;var _0x392b69=_0xdd18[_0x36e248];return _0x392b69;};'use strict';var multer=require('multer');var util=require(_0x8dd1('0x0'));var path=require(_0x8dd1('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x8dd1('0x2')]();var fs_extra=require(_0x8dd1('0x3'));var auth=require(_0x8dd1('0x4'));var interaction=require(_0x8dd1('0x5'));var config=require(_0x8dd1('0x6'));var controller=require(_0x8dd1('0x7'));router[_0x8dd1('0x8')](_0x8dd1('0x9'),auth[_0x8dd1('0xa')](),controller['update']);router[_0x8dd1('0xb')](_0x8dd1('0x9'),auth[_0x8dd1('0xa')](),controller[_0x8dd1('0xc')]);module[_0x8dd1('0xd')]=router;
\ No newline at end of file
+var _0x0e49=['put','/:id','isAuthenticated','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./action.controller'];(function(_0x153dfe,_0x1b55b2){var _0x11fc9b=function(_0x3a1759){while(--_0x3a1759){_0x153dfe['push'](_0x153dfe['shift']());}};_0x11fc9b(++_0x1b55b2);}(_0x0e49,0x166));var _0x90e4=function(_0x3ebff1,_0x1302d6){_0x3ebff1=_0x3ebff1-0x0;var _0x551748=_0x0e49[_0x3ebff1];return _0x551748;};'use strict';var multer=require(_0x90e4('0x0'));var util=require(_0x90e4('0x1'));var path=require(_0x90e4('0x2'));var timeout=require(_0x90e4('0x3'));var express=require(_0x90e4('0x4'));var router=express[_0x90e4('0x5')]();var fs_extra=require(_0x90e4('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x90e4('0x7'));var config=require(_0x90e4('0x8'));var controller=require(_0x90e4('0x9'));router[_0x90e4('0xa')](_0x90e4('0xb'),auth[_0x90e4('0xc')](),controller[_0x90e4('0xd')]);router[_0x90e4('0xe')](_0x90e4('0xb'),auth[_0x90e4('0xc')](),controller[_0x90e4('0xf')]);module['exports']=router;
\ No newline at end of file
index a405806..e26a1de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cb9=['TEXT','sequelize','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1cb9,0x14e));var _0x91cb=function(_0x1ffdbc,_0x93e190){_0x1ffdbc=_0x1ffdbc-0x0;var _0x4b9281=_0x1cb9[_0x1ffdbc];return _0x4b9281;};'use strict';var Sequelize=require(_0x91cb('0x0'));module['exports']={'name':{'type':Sequelize[_0x91cb('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x91cb('0x1')]},'parent':{'type':Sequelize[_0x91cb('0x1')]},'table':{'type':Sequelize[_0x91cb('0x1')]},'conditions':{'type':Sequelize['TEXT']},'joins':{'type':Sequelize[_0x91cb('0x2')]}};
\ No newline at end of file
+var _0x8958=['TEXT','exports'];(function(_0x3b085,_0x250543){var _0x476a57=function(_0x480941){while(--_0x480941){_0x3b085['push'](_0x3b085['shift']());}};_0x476a57(++_0x250543);}(_0x8958,0x93));var _0x8895=function(_0x5b7b33,_0x393697){_0x5b7b33=_0x5b7b33-0x0;var _0x196655=_0x8958[_0x5b7b33];return _0x196655;};'use strict';var Sequelize=require('sequelize');module[_0x8895('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize['STRING']},'parent':{'type':Sequelize['STRING']},'table':{'type':Sequelize['STRING']},'conditions':{'type':Sequelize[_0x8895('0x1')]},'joins':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 34c500e..2705432 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ea5=['parentKey','foreignKey','foreignTable','conditions','clone','Limited\x20Query:','toString','sequelize','SELECT','SUM(%s)','COUNT(DISTINCT\x20%s)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','UNIX_TIMESTAMP(%s)','keyBy','function','%s.%s\x20=\x20%s.%s','fullPath','%s-%s.%s','randomstring','generate','output','csv','AnalyticExtractedReport','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','Run\x20Query:','fork','../../components/export/','countTable','COUNT(*)','QueryTypes','run','runReport','groupBy','debug','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','ejs','fs-extra','squel','crypto','desk.js','to-csv','querystring','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','dbH','sendStatus','status','offset','undefined','limit','set','save','update','then','get','CustomReports','UserProfileResource','destroy','end','stack','name','send','index','AnalyticCustomReport','rawAttributes','fieldName','type','model','map','keys','query','filters','attributes','intersection','fields','hasOwnProperty','nolimit','sort','pick','merge','where','VIRTUAL','filter','options','count','includeAll','include','findAll','catch','show','params','length','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','Reports','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','preview','join','left_join','right_join','cross_join','COUNT(%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)','ROUND(%s)','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','condition','value','getFields','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','select','from','table','MetricId','metric','field','replace','format','orderBy','order','DESC','alias','joins','parse','includes'];(function(_0x139e2d,_0x3efe24){var _0x4a0a40=function(_0xde6697){while(--_0xde6697){_0x139e2d['push'](_0x139e2d['shift']());}};_0x4a0a40(++_0x3efe24);}(_0x4ea5,0xcb));var _0x54ea=function(_0x27dba4,_0x419253){_0x27dba4=_0x27dba4-0x0;var _0x35ec9d=_0x4ea5[_0x27dba4];return _0x35ec9d;};'use strict';var emlformat=require(_0x54ea('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x54ea('0x1'));var jsonpatch=require(_0x54ea('0x2'));var rp=require(_0x54ea('0x3'));var moment=require('moment');var BPromise=require(_0x54ea('0x4'));var Mustache=require(_0x54ea('0x5'));var util=require('util');var path=require(_0x54ea('0x6'));var sox=require(_0x54ea('0x7'));var csv=require('to-csv');var ejs=require(_0x54ea('0x8'));var fs=require('fs');var fs_extra=require(_0x54ea('0x9'));var _=require('lodash');var squel=require(_0x54ea('0xa'));var crypto=require(_0x54ea('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x54ea('0xc'));var toCsv=require(_0x54ea('0xd'));var querystring=require(_0x54ea('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x54ea('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x54ea('0x10'));var logger=require('../../config/logger')(_0x54ea('0x11'));var utils=require(_0x54ea('0x12'));var config=require(_0x54ea('0x13'));var licenseUtil=require(_0x54ea('0x14'));var db=require(_0x54ea('0x15'))['db'];var dbH=require('../../mysqldb')[_0x54ea('0x16')];function respondWithStatusCode(_0x1a2cdd,_0xbc72d2){_0xbc72d2=_0xbc72d2||0xcc;return function(_0x1f5e41){if(_0x1f5e41){return _0x1a2cdd[_0x54ea('0x17')](_0xbc72d2);}return _0x1a2cdd[_0x54ea('0x18')](_0xbc72d2)['end']();};}function respondWithResult(_0x708dc7,_0x337452){_0x337452=_0x337452||0xc8;return function(_0x26fc14){if(_0x26fc14){return _0x708dc7[_0x54ea('0x18')](_0x337452)['json'](_0x26fc14);}};}function respondWithFilteredResult(_0x3e8d12,_0x1de5d0){return function(_0x24007b){if(_0x24007b){var _0x49a374=typeof _0x1de5d0[_0x54ea('0x19')]===_0x54ea('0x1a')&&typeof _0x1de5d0[_0x54ea('0x1b')]==='undefined';var _0x43659a=_0x24007b['count'];var _0x11c986=_0x49a374?0x0:_0x1de5d0[_0x54ea('0x19')];var _0x3c1b29=_0x49a374?_0x24007b['count']:_0x1de5d0[_0x54ea('0x19')]+_0x1de5d0[_0x54ea('0x1b')];var _0x289e29;if(_0x3c1b29>=_0x43659a){_0x3c1b29=_0x43659a;_0x289e29=0xc8;}else{_0x289e29=0xce;}_0x3e8d12[_0x54ea('0x18')](_0x289e29);return _0x3e8d12[_0x54ea('0x1c')]('Content-Range',_0x11c986+'-'+_0x3c1b29+'/'+_0x43659a)['json'](_0x24007b);}return null;};}function patchUpdates(_0xec612f){return function(_0x21a443){try{jsonpatch['apply'](_0x21a443,_0xec612f,!![]);}catch(_0xf0524){return BPromise['reject'](_0xf0524);}return _0x21a443[_0x54ea('0x1d')]();};}function saveUpdates(_0x4b3db5,_0x1eab89){return function(_0x4b9e72){if(_0x4b9e72){return _0x4b9e72[_0x54ea('0x1e')](_0x4b3db5)[_0x54ea('0x1f')](function(_0x1df0ae){return _0x1df0ae;});}return null;};}function removeEntity(_0x210e73,_0x1e4ef8){return function(_0x31d7dd){if(_0x31d7dd){return _0x31d7dd['destroy']()[_0x54ea('0x1f')](function(){var _0x4eba90=_0x31d7dd[_0x54ea('0x20')]({'plain':!![]});var _0x701525=_0x54ea('0x21');return db[_0x54ea('0x22')][_0x54ea('0x23')]({'where':{'type':_0x701525,'resourceId':_0x4eba90['id']}})[_0x54ea('0x1f')](function(){return _0x31d7dd;});})[_0x54ea('0x1f')](function(){_0x210e73[_0x54ea('0x18')](0xcc)[_0x54ea('0x24')]();});}};}function handleEntityNotFound(_0x2813fe,_0x567b9b){return function(_0x26cbc6){if(!_0x26cbc6){_0x2813fe[_0x54ea('0x17')](0x194);}return _0x26cbc6;};}function handleError(_0x5c2056,_0x4eff53){_0x4eff53=_0x4eff53||0x1f4;return function(_0x126c8b){logger['error'](_0x126c8b[_0x54ea('0x25')]);if(_0x126c8b[_0x54ea('0x26')]){delete _0x126c8b['name'];}_0x5c2056[_0x54ea('0x18')](_0x4eff53)[_0x54ea('0x27')](_0x126c8b);};}exports[_0x54ea('0x28')]=function(_0x22a2ec,_0x69f9aa){var _0x27a696={},_0x2de574={},_0x1b8976={'count':0x0,'rows':[]};var _0x30c875=_['map'](db[_0x54ea('0x29')][_0x54ea('0x2a')],function(_0x21784a){return{'name':_0x21784a[_0x54ea('0x2b')],'type':_0x21784a[_0x54ea('0x2c')]['key']};});_0x2de574[_0x54ea('0x2d')]=_[_0x54ea('0x2e')](_0x30c875,_0x54ea('0x26'));_0x2de574['query']=_[_0x54ea('0x2f')](_0x22a2ec[_0x54ea('0x30')]);_0x2de574[_0x54ea('0x31')]=_['intersection'](_0x2de574[_0x54ea('0x2d')],_0x2de574[_0x54ea('0x30')]);_0x27a696[_0x54ea('0x32')]=_[_0x54ea('0x33')](_0x2de574[_0x54ea('0x2d')],qs[_0x54ea('0x34')](_0x22a2ec['query'][_0x54ea('0x34')]));_0x27a696['attributes']=_0x27a696[_0x54ea('0x32')]['length']?_0x27a696[_0x54ea('0x32')]:_0x2de574[_0x54ea('0x2d')];if(!_0x22a2ec[_0x54ea('0x30')][_0x54ea('0x35')](_0x54ea('0x36'))){_0x27a696[_0x54ea('0x1b')]=qs[_0x54ea('0x1b')](_0x22a2ec[_0x54ea('0x30')]['limit']);_0x27a696[_0x54ea('0x19')]=qs['offset'](_0x22a2ec[_0x54ea('0x30')]['offset']);}_0x27a696['order']=qs['sort'](_0x22a2ec['query'][_0x54ea('0x37')]);_0x27a696['where']=qs[_0x54ea('0x31')](_[_0x54ea('0x38')](_0x22a2ec['query'],_0x2de574[_0x54ea('0x31')]),_0x30c875);if(_0x22a2ec[_0x54ea('0x30')]['filter']){_0x27a696['where']=_[_0x54ea('0x39')](_0x27a696[_0x54ea('0x3a')],{'$or':_[_0x54ea('0x2e')](_0x30c875,function(_0x551ff7){if(_0x551ff7['type']!==_0x54ea('0x3b')){var _0x2662e0={};_0x2662e0[_0x551ff7[_0x54ea('0x26')]]={'$like':'%'+_0x22a2ec[_0x54ea('0x30')][_0x54ea('0x3c')]+'%'};return _0x2662e0;}})});}_0x27a696=_[_0x54ea('0x39')]({},_0x27a696,_0x22a2ec[_0x54ea('0x3d')]);var _0x104877={'where':_0x27a696['where']};return db[_0x54ea('0x29')][_0x54ea('0x3e')](_0x104877)['then'](function(_0x2ef80a){_0x1b8976[_0x54ea('0x3e')]=_0x2ef80a;if(_0x22a2ec[_0x54ea('0x30')][_0x54ea('0x3f')]){_0x27a696[_0x54ea('0x40')]=[{'all':!![]}];}return db[_0x54ea('0x29')][_0x54ea('0x41')](_0x27a696);})[_0x54ea('0x1f')](function(_0x1306d0){_0x1b8976['rows']=_0x1306d0;return _0x1b8976;})[_0x54ea('0x1f')](respondWithFilteredResult(_0x69f9aa,_0x27a696))[_0x54ea('0x42')](handleError(_0x69f9aa,null));};exports[_0x54ea('0x43')]=function(_0x5cb31b,_0x3fad13){var _0x22b729={'raw':![],'where':{'id':_0x5cb31b[_0x54ea('0x44')]['id']}},_0x24253c={};_0x24253c[_0x54ea('0x2d')]=_[_0x54ea('0x2f')](db[_0x54ea('0x29')][_0x54ea('0x2a')]);_0x24253c[_0x54ea('0x30')]=_[_0x54ea('0x2f')](_0x5cb31b[_0x54ea('0x30')]);_0x24253c[_0x54ea('0x31')]=_[_0x54ea('0x33')](_0x24253c['model'],_0x24253c[_0x54ea('0x30')]);_0x22b729[_0x54ea('0x32')]=_[_0x54ea('0x33')](_0x24253c['model'],qs[_0x54ea('0x34')](_0x5cb31b[_0x54ea('0x30')]['fields']));_0x22b729[_0x54ea('0x32')]=_0x22b729[_0x54ea('0x32')][_0x54ea('0x45')]?_0x22b729[_0x54ea('0x32')]:_0x24253c[_0x54ea('0x2d')];if(_0x5cb31b[_0x54ea('0x30')][_0x54ea('0x3f')]){_0x22b729[_0x54ea('0x40')]=[{'all':!![]}];}_0x22b729=_['merge']({},_0x22b729,_0x5cb31b[_0x54ea('0x3d')]);return db[_0x54ea('0x29')][_0x54ea('0x46')](_0x22b729)[_0x54ea('0x1f')](handleEntityNotFound(_0x3fad13,null))[_0x54ea('0x1f')](respondWithResult(_0x3fad13,null))[_0x54ea('0x42')](handleError(_0x3fad13,null));};exports['create']=function(_0x123aae,_0x576d8b){return db[_0x54ea('0x29')][_0x54ea('0x47')](_0x123aae['body'],{})[_0x54ea('0x1f')](function(_0x1e1eaa){var _0x457fde=_0x123aae[_0x54ea('0x48')]['get']({'plain':!![]});if(!_0x457fde)throw new Error(_0x54ea('0x49'));if(_0x457fde['role']===_0x54ea('0x48')){var _0x3afe26=_0x1e1eaa[_0x54ea('0x20')]({'plain':!![]});var _0x59a66e=_0x54ea('0x4a');return db[_0x54ea('0x4b')]['find']({'where':{'name':_0x59a66e,'userProfileId':_0x457fde[_0x54ea('0x4c')]},'raw':!![]})[_0x54ea('0x1f')](function(_0x346953){if(_0x346953&&_0x346953[_0x54ea('0x4d')]===0x0){return db['UserProfileResource'][_0x54ea('0x47')]({'name':_0x3afe26['name'],'resourceId':_0x3afe26['id'],'type':_0x54ea('0x21'),'sectionId':_0x346953['id']},{})[_0x54ea('0x1f')](function(){return _0x1e1eaa;});}else{return _0x1e1eaa;}})[_0x54ea('0x42')](function(_0xfc5402){logger[_0x54ea('0x4e')](_0x54ea('0x4f'),_0xfc5402);throw _0xfc5402;});}return _0x1e1eaa;})[_0x54ea('0x1f')](respondWithResult(_0x576d8b,0xc9))[_0x54ea('0x42')](handleError(_0x576d8b,null));};exports['update']=function(_0xc83de,_0x8a6f60){if(_0xc83de['body']['id']){delete _0xc83de[_0x54ea('0x50')]['id'];}return db[_0x54ea('0x29')][_0x54ea('0x46')]({'where':{'id':_0xc83de[_0x54ea('0x44')]['id']}})[_0x54ea('0x1f')](handleEntityNotFound(_0x8a6f60,null))[_0x54ea('0x1f')](saveUpdates(_0xc83de[_0x54ea('0x50')],null))['then'](respondWithResult(_0x8a6f60,null))[_0x54ea('0x42')](handleError(_0x8a6f60,null));};exports[_0x54ea('0x23')]=function(_0x2edfb5,_0x5a5903){return db[_0x54ea('0x29')]['find']({'where':{'id':_0x2edfb5[_0x54ea('0x44')]['id']}})[_0x54ea('0x1f')](handleEntityNotFound(_0x5a5903,null))[_0x54ea('0x1f')](removeEntity(_0x5a5903,null))[_0x54ea('0x42')](handleError(_0x5a5903,null));};exports[_0x54ea('0x51')]=function(_0x38c3a1,_0x592f6c){var _0x2b516a=0xa;var _0x387e18=[_0x54ea('0x52'),_0x54ea('0x53'),_0x54ea('0x54'),_0x54ea('0x55')];var _0x103dca={'SUM':'SUM(%s)','COUNT':_0x54ea('0x56'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x54ea('0x57'),'MIN':_0x54ea('0x58'),'AVG':_0x54ea('0x59'),'GROUP_CONCAT':_0x54ea('0x5a'),'GROUP_CONCAT ASC':_0x54ea('0x5b'),'GROUP_CONCAT DESC':_0x54ea('0x5c')};var _0x2a31ae={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':'DATE(%s)','HOUR':'HOUR(%s)','ROUND':_0x54ea('0x5d'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x1a3d8a=function(_0x6f07cd){return!_['includes']([_0x54ea('0x5e'),_0x54ea('0x5f'),_0x54ea('0x60'),_0x54ea('0x61')],_0x6f07cd);};var _0x1b7016=function(_0x56604b){if(!_0x56604b||!_0x56604b['rules'][_0x54ea('0x45')]){return'';}for(var _0xea7b1d='(',_0x5ded00=0x0;_0x5ded00<_0x56604b[_0x54ea('0x62')][_0x54ea('0x45')];_0x5ded00+=0x1){_0x5ded00>0x0&&(_0xea7b1d+='\x20'+_0x56604b[_0x54ea('0x63')]+'\x20');_0xea7b1d+=_0x56604b[_0x54ea('0x62')][_0x5ded00][_0x54ea('0x64')]?_0x1b7016(_0x56604b['rules'][_0x5ded00][_0x54ea('0x64')]):_0x56604b[_0x54ea('0x62')][_0x5ded00]['field']+'\x20'+_0x56604b[_0x54ea('0x62')][_0x5ded00][_0x54ea('0x65')]+(_0x1a3d8a(_0x56604b[_0x54ea('0x62')][_0x5ded00]['condition'])?'\x20'+_0x56604b[_0x54ea('0x62')][_0x5ded00][_0x54ea('0x66')]:'');}return _0xea7b1d+')';};var _0xc50868={'where':{'id':_0x38c3a1[_0x54ea('0x44')]['id']}},_0x5412c0,_0x546d5a,_0x54ea3d,_0x2a0088,_0x3fac70;_0xc50868=_[_0x54ea('0x39')]({},_0xc50868,_0x38c3a1[_0x54ea('0x3d')]);return db['AnalyticCustomReport']['find'](_0xc50868)['then'](function(_0x2c61d4){if(_0x2c61d4){_0x5412c0=_0x2c61d4;return _0x2c61d4[_0x54ea('0x67')]();}return null;})[_0x54ea('0x1f')](function(_0x42b66f){if(_0x42b66f){if(!_0x42b66f['length']){throw new db[(_0x54ea('0x68'))][(_0x54ea('0x69'))](_0x54ea('0x6a'),0x193);}_0x546d5a=_0x42b66f;return db[_0x54ea('0x6b')]['findAll']({'raw':!![]});}return null;})[_0x54ea('0x1f')](function(_0x5edf6e){if(_0x5edf6e){_0x54ea3d=_['keyBy'](_0x5edf6e,'id');var _0x2601b3;var _0x1e897b=squel[_0x54ea('0x6c')]();_0x1e897b[_0x54ea('0x6d')](_0x5412c0[_0x54ea('0x6e')]);for(var _0x34e878=0x0;_0x34e878<_0x546d5a['length'];_0x34e878+=0x1){_0x2601b3=_0x546d5a[_0x34e878][_0x54ea('0x6f')]?_0x54ea3d[_0x546d5a[_0x34e878]['MetricId']][_0x54ea('0x70')]:_0x546d5a[_0x34e878][_0x54ea('0x71')];_0x2601b3=_0x546d5a[_0x34e878]['function']?_[_0x54ea('0x72')](_0x103dca[_0x546d5a[_0x34e878]['function']],'%s',_0x2601b3):_0x2601b3;_0x2601b3=_0x546d5a[_0x34e878][_0x54ea('0x73')]?_[_0x54ea('0x72')](_0x2a31ae[_0x546d5a[_0x34e878][_0x54ea('0x73')]],'%s',_0x2601b3):_0x2601b3;if(_0x546d5a[_0x34e878]['groupBy']){_0x1e897b[_0x54ea('0x64')](_0x2601b3);}_0x546d5a[_0x34e878][_0x54ea('0x74')]&&_0x1e897b[_0x54ea('0x75')](_0x2601b3,_0x546d5a[_0x34e878][_0x54ea('0x74')]===_0x54ea('0x76')?![]:!![]);_0x1e897b['field'](_0x2601b3,_0x546d5a[_0x34e878][_0x54ea('0x77')]||_0x2601b3);}if(_0x5412c0[_0x54ea('0x78')]){_0x5412c0[_0x54ea('0x78')]=JSON[_0x54ea('0x79')](_0x5412c0[_0x54ea('0x78')]);for(var _0x3f76b4=0x0;_0x3f76b4<_0x5412c0[_0x54ea('0x78')][_0x54ea('0x45')];_0x3f76b4+=0x1){if(_0x5412c0['joins'][_0x3f76b4][_0x54ea('0x2c')]&&_[_0x54ea('0x7a')](_0x387e18,_0x5412c0['joins'][_0x3f76b4][_0x54ea('0x2c')])&&_0x5412c0[_0x54ea('0x78')][_0x3f76b4][_0x54ea('0x7b')]&&_0x5412c0[_0x54ea('0x78')][_0x3f76b4]['foreignTable']&&_0x5412c0[_0x54ea('0x78')][_0x3f76b4][_0x54ea('0x7c')]){_0x1e897b[_0x5412c0[_0x54ea('0x78')][_0x3f76b4][_0x54ea('0x2c')]](_0x5412c0[_0x54ea('0x78')][_0x3f76b4][_0x54ea('0x7d')],null,util[_0x54ea('0x73')]('%s.%s\x20=\x20%s.%s',_0x5412c0['table'],_0x5412c0[_0x54ea('0x78')][_0x3f76b4][_0x54ea('0x7b')],_0x5412c0[_0x54ea('0x78')][_0x3f76b4][_0x54ea('0x7d')],_0x5412c0[_0x54ea('0x78')][_0x3f76b4][_0x54ea('0x7c')]));}}}if(_0x5412c0['conditions']){_0x5412c0[_0x54ea('0x7e')]=JSON[_0x54ea('0x79')](_0x5412c0[_0x54ea('0x7e')]);_0x1e897b[_0x54ea('0x3a')](_0x1b7016(_0x5412c0[_0x54ea('0x7e')][_0x54ea('0x64')]));}_0x3fac70=_0x1e897b[_0x54ea('0x7f')]();_0x1e897b[_0x54ea('0x1b')](_0x2b516a);_0x1e897b['offset'](0x0);logger['debug'](_0x54ea('0x80'),_0x1e897b[_0x54ea('0x81')]());return dbH[_0x54ea('0x82')][_0x54ea('0x30')](_0x1e897b['toString'](),{'type':dbH['sequelize']['QueryTypes'][_0x54ea('0x83')]});}})[_0x54ea('0x1f')](respondWithResult(_0x592f6c,null))[_0x54ea('0x42')](handleError(_0x592f6c,null));};function runReport(_0xf522b4,_0x398705,_0x9360a3){var _0xc43c85=_0x398705[_0x54ea('0x26')];var _0x1d1d6a=0xa;var _0x4026ce=['join','left_join',_0x54ea('0x54'),_0x54ea('0x55')];var _0x21034b={'SUM':_0x54ea('0x84'),'COUNT':_0x54ea('0x56'),'COUNT DISTINCT':_0x54ea('0x85'),'MAX':_0x54ea('0x57'),'MIN':'MIN(%s)','AVG':_0x54ea('0x59'),'GROUP_CONCAT':_0x54ea('0x5a'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x1c9c30={'SEC_TO_TIME':_0x54ea('0x86'),'DATE':_0x54ea('0x87'),'HOUR':_0x54ea('0x88'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x54ea('0x89')};var _0x1b529e=function(_0x3b373d){return!_['includes']([_0x54ea('0x5e'),'IS\x20NOT\x20NULL',_0x54ea('0x60'),_0x54ea('0x61')],_0x3b373d);};var _0x18c625=function(_0x3d522f){if(!_0x3d522f||!_0x3d522f[_0x54ea('0x62')][_0x54ea('0x45')]){return'';}for(var _0xa6620b='(',_0x8bd7e2=0x0;_0x8bd7e2<_0x3d522f['rules']['length'];_0x8bd7e2+=0x1){_0x8bd7e2>0x0&&(_0xa6620b+='\x20'+_0x3d522f[_0x54ea('0x63')]+'\x20');_0xa6620b+=_0x3d522f['rules'][_0x8bd7e2]['group']?_0x18c625(_0x3d522f[_0x54ea('0x62')][_0x8bd7e2][_0x54ea('0x64')]):_0x3d522f[_0x54ea('0x62')][_0x8bd7e2][_0x54ea('0x71')]+'\x20'+_0x3d522f[_0x54ea('0x62')][_0x8bd7e2][_0x54ea('0x65')]+(_0x1b529e(_0x3d522f[_0x54ea('0x62')][_0x8bd7e2][_0x54ea('0x65')])?'\x20'+_0x3d522f[_0x54ea('0x62')][_0x8bd7e2][_0x54ea('0x66')]:'');}return _0xa6620b+')';};var _0x36f967={'where':{'id':_0xf522b4['id']}},_0x266c4b,_0x539873,_0x16f649,_0x5b1b1b,_0x1be1dd;_0x36f967=_[_0x54ea('0x39')]({},_0x36f967,_0x9360a3);return db[_0x54ea('0x29')][_0x54ea('0x46')](_0x36f967)[_0x54ea('0x1f')](function(_0x166373){if(_0x166373){_0x266c4b=_0x166373;return _0x166373[_0x54ea('0x67')]();}return null;})['then'](function(_0x488fa8){if(_0x488fa8){if(!_0x488fa8[_0x54ea('0x45')]){throw new db[(_0x54ea('0x68'))][(_0x54ea('0x69'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x539873=_0x488fa8;return db[_0x54ea('0x6b')][_0x54ea('0x41')]({'raw':!![]});}return null;})[_0x54ea('0x1f')](function(_0x55b180){if(_0x55b180){_0x16f649=_[_0x54ea('0x8a')](_0x55b180,'id');var _0xc37435;var _0x5a0d28=squel[_0x54ea('0x6c')]();_0x5a0d28[_0x54ea('0x6d')](_0x266c4b[_0x54ea('0x6e')]);for(var _0x6f4f2e=0x0;_0x6f4f2e<_0x539873['length'];_0x6f4f2e+=0x1){_0xc37435=_0x539873[_0x6f4f2e][_0x54ea('0x6f')]?_0x16f649[_0x539873[_0x6f4f2e]['MetricId']][_0x54ea('0x70')]:_0x539873[_0x6f4f2e]['field'];_0xc37435=_0x539873[_0x6f4f2e][_0x54ea('0x8b')]?_[_0x54ea('0x72')](_0x21034b[_0x539873[_0x6f4f2e][_0x54ea('0x8b')]],'%s',_0xc37435):_0xc37435;_0xc37435=_0x539873[_0x6f4f2e][_0x54ea('0x73')]?_['replace'](_0x1c9c30[_0x539873[_0x6f4f2e]['format']],'%s',_0xc37435):_0xc37435;if(_0x539873[_0x6f4f2e]['groupBy']){_0x5a0d28[_0x54ea('0x64')](_0xc37435);}_0x539873[_0x6f4f2e][_0x54ea('0x74')]&&_0x5a0d28['order'](_0xc37435,_0x539873[_0x6f4f2e][_0x54ea('0x74')]===_0x54ea('0x76')?![]:!![]);_0x5a0d28[_0x54ea('0x71')](_0xc37435,_0x539873[_0x6f4f2e][_0x54ea('0x77')]||_0xc37435);}if(_0x266c4b[_0x54ea('0x78')]){_0x266c4b[_0x54ea('0x78')]=JSON[_0x54ea('0x79')](_0x266c4b[_0x54ea('0x78')]);for(var _0x5be84a=0x0;_0x5be84a<_0x266c4b['joins']['length'];_0x5be84a+=0x1){if(_0x266c4b[_0x54ea('0x78')][_0x5be84a]['type']&&_[_0x54ea('0x7a')](_0x4026ce,_0x266c4b[_0x54ea('0x78')][_0x5be84a][_0x54ea('0x2c')])&&_0x266c4b['joins'][_0x5be84a][_0x54ea('0x7b')]&&_0x266c4b[_0x54ea('0x78')][_0x5be84a][_0x54ea('0x7d')]&&_0x266c4b['joins'][_0x5be84a][_0x54ea('0x7c')]){_0x5a0d28[_0x266c4b[_0x54ea('0x78')][_0x5be84a][_0x54ea('0x2c')]](_0x266c4b[_0x54ea('0x78')][_0x5be84a][_0x54ea('0x7d')],null,util['format'](_0x54ea('0x8c'),_0x266c4b[_0x54ea('0x6e')],_0x266c4b[_0x54ea('0x78')][_0x5be84a][_0x54ea('0x7b')],_0x266c4b[_0x54ea('0x78')][_0x5be84a][_0x54ea('0x7d')],_0x266c4b[_0x54ea('0x78')][_0x5be84a][_0x54ea('0x7c')]));}}}if(_0x266c4b[_0x54ea('0x7e')]){_0x266c4b['conditions']=JSON[_0x54ea('0x79')](_0x266c4b[_0x54ea('0x7e')]);_0x5a0d28[_0x54ea('0x3a')](_0x18c625(_0x266c4b[_0x54ea('0x7e')][_0x54ea('0x64')]));}_0x1be1dd=_0x5a0d28[_0x54ea('0x7f')]();_0x5a0d28[_0x54ea('0x1b')](_0x1d1d6a);_0x5a0d28[_0x54ea('0x19')](0x0);return;}})[_0x54ea('0x1f')](function(){if(_0x398705['output']==='web'){return null;}var _0xe4a6b0=_[_0x54ea('0x39')](_0x398705,{'name':_0x398705[_0x54ea('0x8d')]||_0x398705[_0x54ea('0x26')]||_0x266c4b[_0x54ea('0x26')],'basename':_0xc43c85,'savename':util['format'](_0x54ea('0x8e'),_0x398705[_0x54ea('0x26')]||_0x266c4b[_0x54ea('0x26')],require(_0x54ea('0x8f'))[_0x54ea('0x90')](0x4),_0x398705[_0x54ea('0x91')]||_0x54ea('0x92')),'reportId':_0x266c4b['id'],'reportType':'custom'});return db[_0x54ea('0x93')][_0x54ea('0x47')](_0xe4a6b0,{'raw':!![]});})[_0x54ea('0x1f')](function(_0x18b4ea){if(_0x266c4b['table']==='cdr'){_0x1be1dd[_0x54ea('0x3a')](_0x266c4b[_0x54ea('0x6e')]+_0x54ea('0x94'),_0x398705[_0x54ea('0x95')],_0x398705[_0x54ea('0x96')]);}else{_0x1be1dd[_0x54ea('0x3a')](_0x266c4b[_0x54ea('0x6e')]+_0x54ea('0x97'),_0x398705['startDate'],_0x398705[_0x54ea('0x96')]);}if(_0x18b4ea){logger[_0x54ea('0x98')](_0x54ea('0x99'),_0x1be1dd[_0x54ea('0x81')]());require('child_process')[_0x54ea('0x9a')](path['join'](__dirname,_0x54ea('0x9b'),_0x18b4ea[_0x54ea('0x91')]),[_0x18b4ea['id'],_0x1be1dd['toString'](),path[_0x54ea('0x52')](__dirname,'../../files/reports',_0x18b4ea['savename']),_0xc43c85]);return _0x18b4ea;}else{var _0x423a43=squel[_0x54ea('0x6c')]();_0x423a43[_0x54ea('0x6d')]('('+_0x1be1dd[_0x54ea('0x81')]()+')',_0x54ea('0x9c'));_0x423a43[_0x54ea('0x71')](_0x54ea('0x9d'),_0x54ea('0x3e'));_0x1be1dd[_0x54ea('0x1b')](_0x398705[_0x54ea('0x1b')]||_0x1d1d6a);_0x1be1dd[_0x54ea('0x19')](_0x398705[_0x54ea('0x19')]||0x0);return dbH['sequelize'][_0x54ea('0x30')](_0x423a43[_0x54ea('0x81')](),{'type':dbH['sequelize'][_0x54ea('0x9e')][_0x54ea('0x83')]})[_0x54ea('0x1f')](function(_0x60e508){if(!_0x60e508[_0x54ea('0x45')]){_0x5b1b1b=0x0;}else{_0x5b1b1b=_0x60e508[0x0][_0x54ea('0x3e')]||0x0;}return dbH[_0x54ea('0x82')][_0x54ea('0x30')](_0x1be1dd[_0x54ea('0x81')](),{'type':dbH[_0x54ea('0x82')]['QueryTypes'][_0x54ea('0x83')]});})[_0x54ea('0x1f')](function(_0x67e27){return{'rows':_0x67e27||[],'count':_0x5b1b1b};});}});}exports[_0x54ea('0x9f')]=function(_0x21b25f,_0x2d8924){return runReport(_0x21b25f[_0x54ea('0x44')],_0x21b25f['query'],_0x21b25f['options'])['then'](respondWithResult(_0x2d8924,null))[_0x54ea('0x42')](handleError(_0x2d8924,null));};exports[_0x54ea('0xa0')]=runReport;exports[_0x54ea('0x30')]=function(_0x39e6e2,_0x26d6ce){var _0x45b5c0=0xa;var _0xde76d0=[_0x54ea('0x52'),_0x54ea('0x53'),'right_join',_0x54ea('0x55')];var _0x31c064={'SUM':_0x54ea('0x84'),'COUNT':_0x54ea('0x56'),'COUNT DISTINCT':_0x54ea('0x85'),'MAX':_0x54ea('0x57'),'MIN':_0x54ea('0x58'),'AVG':_0x54ea('0x59'),'GROUP_CONCAT':_0x54ea('0x5a'),'GROUP_CONCAT ASC':_0x54ea('0x5b'),'GROUP_CONCAT DESC':_0x54ea('0x5c')};var _0x4fdafe={'SEC_TO_TIME':_0x54ea('0x86'),'DATE':_0x54ea('0x87'),'HOUR':_0x54ea('0x88'),'ROUND':_0x54ea('0x5d'),'UNIX_TIMESTAMP':_0x54ea('0x89')};var _0x49591d=function(_0x19f926){return!_['includes']([_0x54ea('0x5e'),_0x54ea('0x5f'),_0x54ea('0x60'),'IS\x20NOT\x20EMPTY'],_0x19f926);};var _0x2d7995=function(_0x469b80){if(!_0x469b80||!_0x469b80[_0x54ea('0x62')][_0x54ea('0x45')]){return'';}for(var _0x16472c='(',_0x4ebfbd=0x0;_0x4ebfbd<_0x469b80['rules'][_0x54ea('0x45')];_0x4ebfbd+=0x1){_0x4ebfbd>0x0&&(_0x16472c+='\x20'+_0x469b80['operator']+'\x20');_0x16472c+=_0x469b80[_0x54ea('0x62')][_0x4ebfbd]['group']?_0x2d7995(_0x469b80['rules'][_0x4ebfbd][_0x54ea('0x64')]):_0x469b80[_0x54ea('0x62')][_0x4ebfbd]['field']+'\x20'+_0x469b80[_0x54ea('0x62')][_0x4ebfbd][_0x54ea('0x65')]+(_0x49591d(_0x469b80[_0x54ea('0x62')][_0x4ebfbd][_0x54ea('0x65')])?'\x20'+_0x469b80[_0x54ea('0x62')][_0x4ebfbd][_0x54ea('0x66')]:'');}return _0x16472c+')';};var _0x5e0458={'where':{'id':_0x39e6e2[_0x54ea('0x44')]['id']}},_0xc5582f,_0x29873a,_0xd70812,_0x52d26a,_0x517f17;_0x5e0458=_['merge']({},_0x5e0458,_0x39e6e2[_0x54ea('0x3d')]);return db['AnalyticCustomReport'][_0x54ea('0x46')](_0x5e0458)[_0x54ea('0x1f')](function(_0x44fb2d){if(_0x44fb2d){_0xc5582f=_0x44fb2d;return _0x44fb2d['getFields']();}return null;})[_0x54ea('0x1f')](function(_0x77e00a){if(_0x77e00a){if(!_0x77e00a[_0x54ea('0x45')]){throw new db[(_0x54ea('0x68'))][(_0x54ea('0x69'))](_0x54ea('0x6a'),0x193);}_0x29873a=_0x77e00a;return db[_0x54ea('0x6b')][_0x54ea('0x41')]({'raw':!![]});}return null;})[_0x54ea('0x1f')](function(_0x46ebd6){if(_0x46ebd6){_0xd70812=_[_0x54ea('0x8a')](_0x46ebd6,'id');var _0x1f6242;var _0x4eaf7e=squel['select']();_0x4eaf7e[_0x54ea('0x6d')](_0xc5582f[_0x54ea('0x6e')]);for(var _0x4c4177=0x0;_0x4c4177<_0x29873a['length'];_0x4c4177+=0x1){_0x1f6242=_0x29873a[_0x4c4177][_0x54ea('0x6f')]?_0xd70812[_0x29873a[_0x4c4177][_0x54ea('0x6f')]][_0x54ea('0x70')]:_0x29873a[_0x4c4177][_0x54ea('0x71')];_0x1f6242=_0x29873a[_0x4c4177]['function']?_['replace'](_0x31c064[_0x29873a[_0x4c4177][_0x54ea('0x8b')]],'%s',_0x1f6242):_0x1f6242;_0x1f6242=_0x29873a[_0x4c4177][_0x54ea('0x73')]?_[_0x54ea('0x72')](_0x4fdafe[_0x29873a[_0x4c4177]['format']],'%s',_0x1f6242):_0x1f6242;if(_0x29873a[_0x4c4177][_0x54ea('0xa1')]){_0x4eaf7e[_0x54ea('0x64')](_0x1f6242);}_0x29873a[_0x4c4177][_0x54ea('0x74')]&&_0x4eaf7e['order'](_0x1f6242,_0x29873a[_0x4c4177][_0x54ea('0x74')]===_0x54ea('0x76')?![]:!![]);_0x4eaf7e['field'](_0x1f6242,_0x29873a[_0x4c4177][_0x54ea('0x77')]||_0x1f6242);}if(_0xc5582f[_0x54ea('0x78')]){_0xc5582f['joins']=JSON[_0x54ea('0x79')](_0xc5582f[_0x54ea('0x78')]);for(var _0x312e46=0x0;_0x312e46<_0xc5582f[_0x54ea('0x78')][_0x54ea('0x45')];_0x312e46+=0x1){if(_0xc5582f[_0x54ea('0x78')][_0x312e46][_0x54ea('0x2c')]&&_[_0x54ea('0x7a')](_0xde76d0,_0xc5582f['joins'][_0x312e46][_0x54ea('0x2c')])&&_0xc5582f[_0x54ea('0x78')][_0x312e46][_0x54ea('0x7b')]&&_0xc5582f['joins'][_0x312e46][_0x54ea('0x7d')]&&_0xc5582f[_0x54ea('0x78')][_0x312e46][_0x54ea('0x7c')]){_0x4eaf7e[_0xc5582f[_0x54ea('0x78')][_0x312e46][_0x54ea('0x2c')]](_0xc5582f['joins'][_0x312e46][_0x54ea('0x7d')],null,util[_0x54ea('0x73')](_0x54ea('0x8c'),_0xc5582f[_0x54ea('0x6e')],_0xc5582f['joins'][_0x312e46][_0x54ea('0x7b')],_0xc5582f[_0x54ea('0x78')][_0x312e46][_0x54ea('0x7d')],_0xc5582f[_0x54ea('0x78')][_0x312e46][_0x54ea('0x7c')]));}}}if(_0xc5582f['conditions']){_0xc5582f[_0x54ea('0x7e')]=JSON[_0x54ea('0x79')](_0xc5582f['conditions']);_0x4eaf7e[_0x54ea('0x3a')](_0x2d7995(_0xc5582f[_0x54ea('0x7e')][_0x54ea('0x64')]));}_0x517f17=_0x4eaf7e[_0x54ea('0x7f')]();_0x4eaf7e['limit'](_0x45b5c0);_0x4eaf7e[_0x54ea('0x19')](0x0);logger[_0x54ea('0xa2')](_0x54ea('0x80'),_0x4eaf7e['toString']());return dbH['sequelize']['query'](_0x4eaf7e[_0x54ea('0x81')](),{'type':dbH[_0x54ea('0x82')][_0x54ea('0x9e')][_0x54ea('0x83')]});}})[_0x54ea('0x1f')](function(){return{'sql':_0x517f17[_0x54ea('0x81')]()};})[_0x54ea('0x1f')](respondWithResult(_0x26d6ce,null))['catch'](handleError(_0x26d6ce,null));};
\ No newline at end of file
+var _0xeae6=['sequelize','SELECT','join','cross_join','COUNT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','DATE(%s)','Sequelize','from','MetricId','output','web','%s-%s.%s','randomstring','generate','AnalyticExtractedReport','cdr','startDate','endDate','info','Run\x20Query:','child_process','fork','../../components/export/','../../files/reports','savename','countTable','COUNT(*)','QueryTypes','run','runReport','ROUND(%s)','keyBy','eml-format','rimraf','zip-dir','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','api','../../config/utils','../../config/license/util','../../mysqldb','dbH','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','CustomReports','sendStatus','error','name','send','index','map','AnalyticCustomReport','rawAttributes','fieldName','key','model','query','keys','intersection','fields','attributes','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','includeAll','include','findAll','rows','catch','show','length','options','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','Reports','find','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','left_join','right_join','SUM(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','HOUR(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','operator','rules','group','field','condition','getFields','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','select','metric','function','replace','format','groupBy','orderBy','DESC','alias','joins','parse','parentKey','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','table','conditions','clone','debug','Limited\x20Query:','toString'];(function(_0xa1e3e3,_0x29fe0e){var _0xc980e9=function(_0x1f5adc){while(--_0x1f5adc){_0xa1e3e3['push'](_0xa1e3e3['shift']());}};_0xc980e9(++_0x29fe0e);}(_0xeae6,0xc3));var _0x6eae=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xeae6[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require(_0x6eae('0x0'));var rimraf=require(_0x6eae('0x1'));var zipdir=require(_0x6eae('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x6eae('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x6eae('0x4'));var util=require(_0x6eae('0x5'));var path=require(_0x6eae('0x6'));var sox=require(_0x6eae('0x7'));var csv=require(_0x6eae('0x8'));var ejs=require(_0x6eae('0x9'));var fs=require('fs');var fs_extra=require(_0x6eae('0xa'));var _=require(_0x6eae('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x6eae('0xc'));var deskjs=require(_0x6eae('0xd'));var toCsv=require('to-csv');var querystring=require(_0x6eae('0xe'));var Papa=require(_0x6eae('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x6eae('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x6eae('0x11'));var utils=require(_0x6eae('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x6eae('0x13'));var db=require(_0x6eae('0x14'))['db'];var dbH=require(_0x6eae('0x14'))[_0x6eae('0x15')];function respondWithStatusCode(_0x118bc0,_0x1d86ac){_0x1d86ac=_0x1d86ac||0xcc;return function(_0x18f2ee){if(_0x18f2ee){return _0x118bc0['sendStatus'](_0x1d86ac);}return _0x118bc0[_0x6eae('0x16')](_0x1d86ac)[_0x6eae('0x17')]();};}function respondWithResult(_0x147b90,_0x275024){_0x275024=_0x275024||0xc8;return function(_0x18c008){if(_0x18c008){return _0x147b90[_0x6eae('0x16')](_0x275024)[_0x6eae('0x18')](_0x18c008);}};}function respondWithFilteredResult(_0x350393,_0x1157c1){return function(_0x18cb2d){if(_0x18cb2d){var _0x36b0fd=typeof _0x1157c1[_0x6eae('0x19')]===_0x6eae('0x1a')&&typeof _0x1157c1[_0x6eae('0x1b')]===_0x6eae('0x1a');var _0x455a62=_0x18cb2d[_0x6eae('0x1c')];var _0x220e49=_0x36b0fd?0x0:_0x1157c1[_0x6eae('0x19')];var _0x227e4d=_0x36b0fd?_0x18cb2d[_0x6eae('0x1c')]:_0x1157c1[_0x6eae('0x19')]+_0x1157c1[_0x6eae('0x1b')];var _0x1834b8;if(_0x227e4d>=_0x455a62){_0x227e4d=_0x455a62;_0x1834b8=0xc8;}else{_0x1834b8=0xce;}_0x350393[_0x6eae('0x16')](_0x1834b8);return _0x350393[_0x6eae('0x1d')](_0x6eae('0x1e'),_0x220e49+'-'+_0x227e4d+'/'+_0x455a62)[_0x6eae('0x18')](_0x18cb2d);}return null;};}function patchUpdates(_0x4ecd58){return function(_0x2ca50c){try{jsonpatch[_0x6eae('0x1f')](_0x2ca50c,_0x4ecd58,!![]);}catch(_0xbf38cc){return BPromise[_0x6eae('0x20')](_0xbf38cc);}return _0x2ca50c[_0x6eae('0x21')]();};}function saveUpdates(_0x1b3061,_0x5a43c1){return function(_0x1d89c4){if(_0x1d89c4){return _0x1d89c4[_0x6eae('0x22')](_0x1b3061)[_0x6eae('0x23')](function(_0x15adf2){return _0x15adf2;});}return null;};}function removeEntity(_0x39e6d0,_0x4468db){return function(_0x4367eb){if(_0x4367eb){return _0x4367eb[_0x6eae('0x24')]()[_0x6eae('0x23')](function(){var _0x34b2b8=_0x4367eb['get']({'plain':!![]});var _0x15628e=_0x6eae('0x25');return db['UserProfileResource'][_0x6eae('0x24')]({'where':{'type':_0x15628e,'resourceId':_0x34b2b8['id']}})['then'](function(){return _0x4367eb;});})[_0x6eae('0x23')](function(){_0x39e6d0['status'](0xcc)[_0x6eae('0x17')]();});}};}function handleEntityNotFound(_0x3242b1,_0x152cb3){return function(_0x399b1e){if(!_0x399b1e){_0x3242b1[_0x6eae('0x26')](0x194);}return _0x399b1e;};}function handleError(_0x18e50b,_0x501143){_0x501143=_0x501143||0x1f4;return function(_0x4d1253){logger[_0x6eae('0x27')](_0x4d1253['stack']);if(_0x4d1253['name']){delete _0x4d1253[_0x6eae('0x28')];}_0x18e50b['status'](_0x501143)[_0x6eae('0x29')](_0x4d1253);};}exports[_0x6eae('0x2a')]=function(_0x4b3bb6,_0x5931fc){var _0x433c13={},_0x510800={},_0x3421a7={'count':0x0,'rows':[]};var _0x32a0ea=_[_0x6eae('0x2b')](db[_0x6eae('0x2c')][_0x6eae('0x2d')],function(_0x33bd3a){return{'name':_0x33bd3a[_0x6eae('0x2e')],'type':_0x33bd3a['type'][_0x6eae('0x2f')]};});_0x510800[_0x6eae('0x30')]=_[_0x6eae('0x2b')](_0x32a0ea,_0x6eae('0x28'));_0x510800[_0x6eae('0x31')]=_[_0x6eae('0x32')](_0x4b3bb6[_0x6eae('0x31')]);_0x510800['filters']=_[_0x6eae('0x33')](_0x510800[_0x6eae('0x30')],_0x510800[_0x6eae('0x31')]);_0x433c13['attributes']=_['intersection'](_0x510800[_0x6eae('0x30')],qs[_0x6eae('0x34')](_0x4b3bb6['query'][_0x6eae('0x34')]));_0x433c13[_0x6eae('0x35')]=_0x433c13[_0x6eae('0x35')]['length']?_0x433c13[_0x6eae('0x35')]:_0x510800[_0x6eae('0x30')];if(!_0x4b3bb6[_0x6eae('0x31')]['hasOwnProperty']('nolimit')){_0x433c13['limit']=qs['limit'](_0x4b3bb6[_0x6eae('0x31')][_0x6eae('0x1b')]);_0x433c13[_0x6eae('0x19')]=qs[_0x6eae('0x19')](_0x4b3bb6[_0x6eae('0x31')][_0x6eae('0x19')]);}_0x433c13[_0x6eae('0x36')]=qs['sort'](_0x4b3bb6[_0x6eae('0x31')][_0x6eae('0x37')]);_0x433c13[_0x6eae('0x38')]=qs[_0x6eae('0x39')](_[_0x6eae('0x3a')](_0x4b3bb6['query'],_0x510800['filters']),_0x32a0ea);if(_0x4b3bb6[_0x6eae('0x31')][_0x6eae('0x3b')]){_0x433c13[_0x6eae('0x38')]=_[_0x6eae('0x3c')](_0x433c13[_0x6eae('0x38')],{'$or':_[_0x6eae('0x2b')](_0x32a0ea,function(_0x17a4a6){if(_0x17a4a6[_0x6eae('0x3d')]!==_0x6eae('0x3e')){var _0x36eb46={};_0x36eb46[_0x17a4a6[_0x6eae('0x28')]]={'$like':'%'+_0x4b3bb6['query'][_0x6eae('0x3b')]+'%'};return _0x36eb46;}})});}_0x433c13=_[_0x6eae('0x3c')]({},_0x433c13,_0x4b3bb6['options']);var _0x38b269={'where':_0x433c13['where']};return db[_0x6eae('0x2c')][_0x6eae('0x1c')](_0x38b269)['then'](function(_0x5b53eb){_0x3421a7[_0x6eae('0x1c')]=_0x5b53eb;if(_0x4b3bb6[_0x6eae('0x31')][_0x6eae('0x3f')]){_0x433c13[_0x6eae('0x40')]=[{'all':!![]}];}return db[_0x6eae('0x2c')][_0x6eae('0x41')](_0x433c13);})[_0x6eae('0x23')](function(_0x579b68){_0x3421a7[_0x6eae('0x42')]=_0x579b68;return _0x3421a7;})[_0x6eae('0x23')](respondWithFilteredResult(_0x5931fc,_0x433c13))[_0x6eae('0x43')](handleError(_0x5931fc,null));};exports[_0x6eae('0x44')]=function(_0xf7c81f,_0x3fa6e6){var _0x4ab749={'raw':![],'where':{'id':_0xf7c81f['params']['id']}},_0x268632={};_0x268632[_0x6eae('0x30')]=_[_0x6eae('0x32')](db[_0x6eae('0x2c')][_0x6eae('0x2d')]);_0x268632[_0x6eae('0x31')]=_['keys'](_0xf7c81f[_0x6eae('0x31')]);_0x268632[_0x6eae('0x39')]=_['intersection'](_0x268632[_0x6eae('0x30')],_0x268632['query']);_0x4ab749[_0x6eae('0x35')]=_['intersection'](_0x268632['model'],qs[_0x6eae('0x34')](_0xf7c81f[_0x6eae('0x31')][_0x6eae('0x34')]));_0x4ab749['attributes']=_0x4ab749[_0x6eae('0x35')][_0x6eae('0x45')]?_0x4ab749['attributes']:_0x268632[_0x6eae('0x30')];if(_0xf7c81f[_0x6eae('0x31')]['includeAll']){_0x4ab749[_0x6eae('0x40')]=[{'all':!![]}];}_0x4ab749=_[_0x6eae('0x3c')]({},_0x4ab749,_0xf7c81f[_0x6eae('0x46')]);return db[_0x6eae('0x2c')]['find'](_0x4ab749)[_0x6eae('0x23')](handleEntityNotFound(_0x3fa6e6,null))[_0x6eae('0x23')](respondWithResult(_0x3fa6e6,null))['catch'](handleError(_0x3fa6e6,null));};exports['create']=function(_0x2ff08e,_0x2adfcd){return db[_0x6eae('0x2c')][_0x6eae('0x47')](_0x2ff08e[_0x6eae('0x48')],{})['then'](function(_0x3644a0){var _0x1fb293=_0x2ff08e[_0x6eae('0x49')][_0x6eae('0x4a')]({'plain':!![]});if(!_0x1fb293)throw new Error(_0x6eae('0x4b'));if(_0x1fb293['role']===_0x6eae('0x49')){var _0xd6d447=_0x3644a0[_0x6eae('0x4a')]({'plain':!![]});var _0x4dfbca=_0x6eae('0x4c');return db['UserProfileSection'][_0x6eae('0x4d')]({'where':{'name':_0x4dfbca,'userProfileId':_0x1fb293[_0x6eae('0x4e')]},'raw':!![]})[_0x6eae('0x23')](function(_0x570ea3){if(_0x570ea3&&_0x570ea3[_0x6eae('0x4f')]===0x0){return db[_0x6eae('0x50')]['create']({'name':_0xd6d447['name'],'resourceId':_0xd6d447['id'],'type':_0x6eae('0x25'),'sectionId':_0x570ea3['id']},{})[_0x6eae('0x23')](function(){return _0x3644a0;});}else{return _0x3644a0;}})[_0x6eae('0x43')](function(_0x22cce2){logger[_0x6eae('0x27')](_0x6eae('0x51'),_0x22cce2);throw _0x22cce2;});}return _0x3644a0;})['then'](respondWithResult(_0x2adfcd,0xc9))['catch'](handleError(_0x2adfcd,null));};exports[_0x6eae('0x22')]=function(_0x3cdc31,_0x4358d7){if(_0x3cdc31[_0x6eae('0x48')]['id']){delete _0x3cdc31[_0x6eae('0x48')]['id'];}return db[_0x6eae('0x2c')][_0x6eae('0x4d')]({'where':{'id':_0x3cdc31[_0x6eae('0x52')]['id']}})[_0x6eae('0x23')](handleEntityNotFound(_0x4358d7,null))[_0x6eae('0x23')](saveUpdates(_0x3cdc31[_0x6eae('0x48')],null))[_0x6eae('0x23')](respondWithResult(_0x4358d7,null))['catch'](handleError(_0x4358d7,null));};exports[_0x6eae('0x24')]=function(_0x45922a,_0x435c89){return db['AnalyticCustomReport'][_0x6eae('0x4d')]({'where':{'id':_0x45922a['params']['id']}})[_0x6eae('0x23')](handleEntityNotFound(_0x435c89,null))[_0x6eae('0x23')](removeEntity(_0x435c89,null))[_0x6eae('0x43')](handleError(_0x435c89,null));};exports['preview']=function(_0x16d57a,_0x315f29){var _0xe312bd=0xa;var _0x45a9e6=['join',_0x6eae('0x53'),_0x6eae('0x54'),'cross_join'];var _0x4fca10={'SUM':_0x6eae('0x55'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0x6eae('0x56'),'MAX':_0x6eae('0x57'),'MIN':_0x6eae('0x58'),'AVG':_0x6eae('0x59'),'GROUP_CONCAT':_0x6eae('0x5a'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x6eae('0x5b')};var _0x4568b4={'SEC_TO_TIME':_0x6eae('0x5c'),'DATE':'DATE(%s)','HOUR':_0x6eae('0x5d'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x6eae('0x5e')};var _0x30a4a=function(_0x3af90c){return!_[_0x6eae('0x5f')]([_0x6eae('0x60'),_0x6eae('0x61'),_0x6eae('0x62'),'IS\x20NOT\x20EMPTY'],_0x3af90c);};var _0xb9f0a1=function(_0x1e97ad){if(!_0x1e97ad||!_0x1e97ad['rules'][_0x6eae('0x45')]){return'';}for(var _0x6af0ba='(',_0x33086e=0x0;_0x33086e<_0x1e97ad['rules'][_0x6eae('0x45')];_0x33086e+=0x1){_0x33086e>0x0&&(_0x6af0ba+='\x20'+_0x1e97ad[_0x6eae('0x63')]+'\x20');_0x6af0ba+=_0x1e97ad[_0x6eae('0x64')][_0x33086e][_0x6eae('0x65')]?_0xb9f0a1(_0x1e97ad[_0x6eae('0x64')][_0x33086e]['group']):_0x1e97ad[_0x6eae('0x64')][_0x33086e][_0x6eae('0x66')]+'\x20'+_0x1e97ad[_0x6eae('0x64')][_0x33086e][_0x6eae('0x67')]+(_0x30a4a(_0x1e97ad[_0x6eae('0x64')][_0x33086e]['condition'])?'\x20'+_0x1e97ad[_0x6eae('0x64')][_0x33086e]['value']:'');}return _0x6af0ba+')';};var _0x27b20d={'where':{'id':_0x16d57a[_0x6eae('0x52')]['id']}},_0x5356ab,_0x532118,_0x285b58,_0x3e8d10,_0xa895f8;_0x27b20d=_[_0x6eae('0x3c')]({},_0x27b20d,_0x16d57a[_0x6eae('0x46')]);return db[_0x6eae('0x2c')][_0x6eae('0x4d')](_0x27b20d)['then'](function(_0x4f94ab){if(_0x4f94ab){_0x5356ab=_0x4f94ab;return _0x4f94ab[_0x6eae('0x68')]();}return null;})[_0x6eae('0x23')](function(_0x4adfaa){if(_0x4adfaa){if(!_0x4adfaa[_0x6eae('0x45')]){throw new db['Sequelize'][(_0x6eae('0x69'))](_0x6eae('0x6a'),0x193);}_0x532118=_0x4adfaa;return db[_0x6eae('0x6b')][_0x6eae('0x41')]({'raw':!![]});}return null;})[_0x6eae('0x23')](function(_0xdb991c){if(_0xdb991c){_0x285b58=_['keyBy'](_0xdb991c,'id');var _0xe741e0;var _0xa42ac7=squel[_0x6eae('0x6c')]();_0xa42ac7['from'](_0x5356ab['table']);for(var _0x422ac1=0x0;_0x422ac1<_0x532118[_0x6eae('0x45')];_0x422ac1+=0x1){_0xe741e0=_0x532118[_0x422ac1]['MetricId']?_0x285b58[_0x532118[_0x422ac1]['MetricId']][_0x6eae('0x6d')]:_0x532118[_0x422ac1][_0x6eae('0x66')];_0xe741e0=_0x532118[_0x422ac1][_0x6eae('0x6e')]?_[_0x6eae('0x6f')](_0x4fca10[_0x532118[_0x422ac1]['function']],'%s',_0xe741e0):_0xe741e0;_0xe741e0=_0x532118[_0x422ac1][_0x6eae('0x70')]?_[_0x6eae('0x6f')](_0x4568b4[_0x532118[_0x422ac1]['format']],'%s',_0xe741e0):_0xe741e0;if(_0x532118[_0x422ac1][_0x6eae('0x71')]){_0xa42ac7[_0x6eae('0x65')](_0xe741e0);}_0x532118[_0x422ac1][_0x6eae('0x72')]&&_0xa42ac7[_0x6eae('0x36')](_0xe741e0,_0x532118[_0x422ac1][_0x6eae('0x72')]===_0x6eae('0x73')?![]:!![]);_0xa42ac7[_0x6eae('0x66')](_0xe741e0,_0x532118[_0x422ac1][_0x6eae('0x74')]||_0xe741e0);}if(_0x5356ab[_0x6eae('0x75')]){_0x5356ab[_0x6eae('0x75')]=JSON[_0x6eae('0x76')](_0x5356ab[_0x6eae('0x75')]);for(var _0x162ae7=0x0;_0x162ae7<_0x5356ab[_0x6eae('0x75')][_0x6eae('0x45')];_0x162ae7+=0x1){if(_0x5356ab[_0x6eae('0x75')][_0x162ae7][_0x6eae('0x3d')]&&_['includes'](_0x45a9e6,_0x5356ab[_0x6eae('0x75')][_0x162ae7]['type'])&&_0x5356ab[_0x6eae('0x75')][_0x162ae7][_0x6eae('0x77')]&&_0x5356ab[_0x6eae('0x75')][_0x162ae7][_0x6eae('0x78')]&&_0x5356ab[_0x6eae('0x75')][_0x162ae7][_0x6eae('0x79')]){_0xa42ac7[_0x5356ab[_0x6eae('0x75')][_0x162ae7][_0x6eae('0x3d')]](_0x5356ab[_0x6eae('0x75')][_0x162ae7][_0x6eae('0x78')],null,util[_0x6eae('0x70')](_0x6eae('0x7a'),_0x5356ab[_0x6eae('0x7b')],_0x5356ab[_0x6eae('0x75')][_0x162ae7]['parentKey'],_0x5356ab[_0x6eae('0x75')][_0x162ae7]['foreignTable'],_0x5356ab[_0x6eae('0x75')][_0x162ae7][_0x6eae('0x79')]));}}}if(_0x5356ab[_0x6eae('0x7c')]){_0x5356ab[_0x6eae('0x7c')]=JSON[_0x6eae('0x76')](_0x5356ab[_0x6eae('0x7c')]);_0xa42ac7[_0x6eae('0x38')](_0xb9f0a1(_0x5356ab[_0x6eae('0x7c')][_0x6eae('0x65')]));}_0xa895f8=_0xa42ac7[_0x6eae('0x7d')]();_0xa42ac7[_0x6eae('0x1b')](_0xe312bd);_0xa42ac7[_0x6eae('0x19')](0x0);logger[_0x6eae('0x7e')](_0x6eae('0x7f'),_0xa42ac7[_0x6eae('0x80')]());return dbH[_0x6eae('0x81')][_0x6eae('0x31')](_0xa42ac7[_0x6eae('0x80')](),{'type':dbH['sequelize']['QueryTypes'][_0x6eae('0x82')]});}})['then'](respondWithResult(_0x315f29,null))[_0x6eae('0x43')](handleError(_0x315f29,null));};function runReport(_0x189e05,_0x486b4c,_0x1b7f76){var _0x2d7bde=_0x486b4c['name'];var _0x4b1992=0xa;var _0x2eeee4=[_0x6eae('0x83'),'left_join',_0x6eae('0x54'),_0x6eae('0x84')];var _0x341ddd={'SUM':_0x6eae('0x55'),'COUNT':_0x6eae('0x85'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x6eae('0x57'),'MIN':_0x6eae('0x58'),'AVG':'AVG(%s)','GROUP_CONCAT':_0x6eae('0x5a'),'GROUP_CONCAT ASC':_0x6eae('0x86'),'GROUP_CONCAT DESC':_0x6eae('0x5b')};var _0x5f3fa6={'SEC_TO_TIME':_0x6eae('0x5c'),'DATE':_0x6eae('0x87'),'HOUR':'HOUR(%s)','ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x6eae('0x5e')};var _0x588184=function(_0x53fac3){return!_[_0x6eae('0x5f')]([_0x6eae('0x60'),_0x6eae('0x61'),_0x6eae('0x62'),'IS\x20NOT\x20EMPTY'],_0x53fac3);};var _0x4323d7=function(_0x5158a2){if(!_0x5158a2||!_0x5158a2[_0x6eae('0x64')][_0x6eae('0x45')]){return'';}for(var _0x335b54='(',_0x527999=0x0;_0x527999<_0x5158a2['rules'][_0x6eae('0x45')];_0x527999+=0x1){_0x527999>0x0&&(_0x335b54+='\x20'+_0x5158a2[_0x6eae('0x63')]+'\x20');_0x335b54+=_0x5158a2[_0x6eae('0x64')][_0x527999]['group']?_0x4323d7(_0x5158a2['rules'][_0x527999][_0x6eae('0x65')]):_0x5158a2[_0x6eae('0x64')][_0x527999][_0x6eae('0x66')]+'\x20'+_0x5158a2[_0x6eae('0x64')][_0x527999][_0x6eae('0x67')]+(_0x588184(_0x5158a2['rules'][_0x527999][_0x6eae('0x67')])?'\x20'+_0x5158a2['rules'][_0x527999]['value']:'');}return _0x335b54+')';};var _0x2689d4={'where':{'id':_0x189e05['id']}},_0x486145,_0x224a01,_0x23eba8,_0x708638,_0x4107f0;_0x2689d4=_[_0x6eae('0x3c')]({},_0x2689d4,_0x1b7f76);return db[_0x6eae('0x2c')]['find'](_0x2689d4)[_0x6eae('0x23')](function(_0x196133){if(_0x196133){_0x486145=_0x196133;return _0x196133[_0x6eae('0x68')]();}return null;})[_0x6eae('0x23')](function(_0x4bc4de){if(_0x4bc4de){if(!_0x4bc4de[_0x6eae('0x45')]){throw new db[(_0x6eae('0x88'))][(_0x6eae('0x69'))](_0x6eae('0x6a'),0x193);}_0x224a01=_0x4bc4de;return db[_0x6eae('0x6b')][_0x6eae('0x41')]({'raw':!![]});}return null;})[_0x6eae('0x23')](function(_0x1568b3){if(_0x1568b3){_0x23eba8=_['keyBy'](_0x1568b3,'id');var _0x1dff82;var _0x5e4ed0=squel[_0x6eae('0x6c')]();_0x5e4ed0[_0x6eae('0x89')](_0x486145[_0x6eae('0x7b')]);for(var _0x525b25=0x0;_0x525b25<_0x224a01[_0x6eae('0x45')];_0x525b25+=0x1){_0x1dff82=_0x224a01[_0x525b25]['MetricId']?_0x23eba8[_0x224a01[_0x525b25][_0x6eae('0x8a')]][_0x6eae('0x6d')]:_0x224a01[_0x525b25][_0x6eae('0x66')];_0x1dff82=_0x224a01[_0x525b25]['function']?_[_0x6eae('0x6f')](_0x341ddd[_0x224a01[_0x525b25]['function']],'%s',_0x1dff82):_0x1dff82;_0x1dff82=_0x224a01[_0x525b25][_0x6eae('0x70')]?_[_0x6eae('0x6f')](_0x5f3fa6[_0x224a01[_0x525b25][_0x6eae('0x70')]],'%s',_0x1dff82):_0x1dff82;if(_0x224a01[_0x525b25][_0x6eae('0x71')]){_0x5e4ed0[_0x6eae('0x65')](_0x1dff82);}_0x224a01[_0x525b25][_0x6eae('0x72')]&&_0x5e4ed0[_0x6eae('0x36')](_0x1dff82,_0x224a01[_0x525b25]['orderBy']===_0x6eae('0x73')?![]:!![]);_0x5e4ed0['field'](_0x1dff82,_0x224a01[_0x525b25][_0x6eae('0x74')]||_0x1dff82);}if(_0x486145['joins']){_0x486145[_0x6eae('0x75')]=JSON['parse'](_0x486145[_0x6eae('0x75')]);for(var _0x507c62=0x0;_0x507c62<_0x486145[_0x6eae('0x75')][_0x6eae('0x45')];_0x507c62+=0x1){if(_0x486145[_0x6eae('0x75')][_0x507c62][_0x6eae('0x3d')]&&_['includes'](_0x2eeee4,_0x486145[_0x6eae('0x75')][_0x507c62][_0x6eae('0x3d')])&&_0x486145[_0x6eae('0x75')][_0x507c62]['parentKey']&&_0x486145[_0x6eae('0x75')][_0x507c62][_0x6eae('0x78')]&&_0x486145[_0x6eae('0x75')][_0x507c62]['foreignKey']){_0x5e4ed0[_0x486145[_0x6eae('0x75')][_0x507c62][_0x6eae('0x3d')]](_0x486145['joins'][_0x507c62][_0x6eae('0x78')],null,util[_0x6eae('0x70')](_0x6eae('0x7a'),_0x486145[_0x6eae('0x7b')],_0x486145['joins'][_0x507c62][_0x6eae('0x77')],_0x486145[_0x6eae('0x75')][_0x507c62][_0x6eae('0x78')],_0x486145[_0x6eae('0x75')][_0x507c62]['foreignKey']));}}}if(_0x486145[_0x6eae('0x7c')]){_0x486145[_0x6eae('0x7c')]=JSON[_0x6eae('0x76')](_0x486145[_0x6eae('0x7c')]);_0x5e4ed0['where'](_0x4323d7(_0x486145[_0x6eae('0x7c')]['group']));}_0x4107f0=_0x5e4ed0[_0x6eae('0x7d')]();_0x5e4ed0['limit'](_0x4b1992);_0x5e4ed0[_0x6eae('0x19')](0x0);return;}})['then'](function(){if(_0x486b4c[_0x6eae('0x8b')]===_0x6eae('0x8c')){return null;}var _0x3d9412=_['merge'](_0x486b4c,{'name':_0x486b4c['fullPath']||_0x486b4c[_0x6eae('0x28')]||_0x486145['name'],'basename':_0x2d7bde,'savename':util[_0x6eae('0x70')](_0x6eae('0x8d'),_0x486b4c['name']||_0x486145['name'],require(_0x6eae('0x8e'))[_0x6eae('0x8f')](0x4),_0x486b4c[_0x6eae('0x8b')]||'csv'),'reportId':_0x486145['id'],'reportType':'custom'});return db[_0x6eae('0x90')][_0x6eae('0x47')](_0x3d9412,{'raw':!![]});})['then'](function(_0x1d639f){if(_0x486145[_0x6eae('0x7b')]===_0x6eae('0x91')){_0x4107f0[_0x6eae('0x38')](_0x486145[_0x6eae('0x7b')]+'.calldate\x20BETWEEN\x20?\x20AND\x20?',_0x486b4c[_0x6eae('0x92')],_0x486b4c[_0x6eae('0x93')]);}else{_0x4107f0[_0x6eae('0x38')](_0x486145[_0x6eae('0x7b')]+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x486b4c[_0x6eae('0x92')],_0x486b4c[_0x6eae('0x93')]);}if(_0x1d639f){logger[_0x6eae('0x94')](_0x6eae('0x95'),_0x4107f0[_0x6eae('0x80')]());require(_0x6eae('0x96'))[_0x6eae('0x97')](path[_0x6eae('0x83')](__dirname,_0x6eae('0x98'),_0x1d639f['output']),[_0x1d639f['id'],_0x4107f0['toString'](),path[_0x6eae('0x83')](__dirname,_0x6eae('0x99'),_0x1d639f[_0x6eae('0x9a')]),_0x2d7bde]);return _0x1d639f;}else{var _0x20c13c=squel[_0x6eae('0x6c')]();_0x20c13c[_0x6eae('0x89')]('('+_0x4107f0[_0x6eae('0x80')]()+')',_0x6eae('0x9b'));_0x20c13c[_0x6eae('0x66')](_0x6eae('0x9c'),_0x6eae('0x1c'));_0x4107f0['limit'](_0x486b4c[_0x6eae('0x1b')]||_0x4b1992);_0x4107f0[_0x6eae('0x19')](_0x486b4c[_0x6eae('0x19')]||0x0);return dbH[_0x6eae('0x81')][_0x6eae('0x31')](_0x20c13c[_0x6eae('0x80')](),{'type':dbH[_0x6eae('0x81')]['QueryTypes'][_0x6eae('0x82')]})[_0x6eae('0x23')](function(_0x5644f9){if(!_0x5644f9[_0x6eae('0x45')]){_0x708638=0x0;}else{_0x708638=_0x5644f9[0x0][_0x6eae('0x1c')]||0x0;}return dbH[_0x6eae('0x81')]['query'](_0x4107f0[_0x6eae('0x80')](),{'type':dbH[_0x6eae('0x81')][_0x6eae('0x9d')]['SELECT']});})[_0x6eae('0x23')](function(_0x136f3){return{'rows':_0x136f3||[],'count':_0x708638};});}});}exports[_0x6eae('0x9e')]=function(_0x101e3d,_0x2f6a0b){return runReport(_0x101e3d[_0x6eae('0x52')],_0x101e3d[_0x6eae('0x31')],_0x101e3d['options'])[_0x6eae('0x23')](respondWithResult(_0x2f6a0b,null))[_0x6eae('0x43')](handleError(_0x2f6a0b,null));};exports[_0x6eae('0x9f')]=runReport;exports['query']=function(_0x11ff36,_0x33e1ae){var _0xd61c4d=0xa;var _0x1c062d=[_0x6eae('0x83'),_0x6eae('0x53'),_0x6eae('0x54'),'cross_join'];var _0x241c69={'SUM':_0x6eae('0x55'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0x6eae('0x56'),'MAX':'MAX(%s)','MIN':'MIN(%s)','AVG':_0x6eae('0x59'),'GROUP_CONCAT':_0x6eae('0x5a'),'GROUP_CONCAT ASC':_0x6eae('0x86'),'GROUP_CONCAT DESC':_0x6eae('0x5b')};var _0x52aea1={'SEC_TO_TIME':_0x6eae('0x5c'),'DATE':_0x6eae('0x87'),'HOUR':'HOUR(%s)','ROUND':_0x6eae('0xa0'),'UNIX_TIMESTAMP':_0x6eae('0x5e')};var _0x5613e1=function(_0x5cd75c){return!_[_0x6eae('0x5f')]([_0x6eae('0x60'),_0x6eae('0x61'),'IS\x20EMPTY','IS\x20NOT\x20EMPTY'],_0x5cd75c);};var _0x2483f8=function(_0x2b62d4){if(!_0x2b62d4||!_0x2b62d4[_0x6eae('0x64')][_0x6eae('0x45')]){return'';}for(var _0x4c3a6e='(',_0xd41514=0x0;_0xd41514<_0x2b62d4[_0x6eae('0x64')][_0x6eae('0x45')];_0xd41514+=0x1){_0xd41514>0x0&&(_0x4c3a6e+='\x20'+_0x2b62d4[_0x6eae('0x63')]+'\x20');_0x4c3a6e+=_0x2b62d4[_0x6eae('0x64')][_0xd41514][_0x6eae('0x65')]?_0x2483f8(_0x2b62d4[_0x6eae('0x64')][_0xd41514][_0x6eae('0x65')]):_0x2b62d4[_0x6eae('0x64')][_0xd41514]['field']+'\x20'+_0x2b62d4[_0x6eae('0x64')][_0xd41514][_0x6eae('0x67')]+(_0x5613e1(_0x2b62d4[_0x6eae('0x64')][_0xd41514]['condition'])?'\x20'+_0x2b62d4[_0x6eae('0x64')][_0xd41514]['value']:'');}return _0x4c3a6e+')';};var _0x536252={'where':{'id':_0x11ff36[_0x6eae('0x52')]['id']}},_0x5216e9,_0x456c00,_0xfb2b5a,_0x5ca9d9,_0x127f08;_0x536252=_[_0x6eae('0x3c')]({},_0x536252,_0x11ff36[_0x6eae('0x46')]);return db[_0x6eae('0x2c')][_0x6eae('0x4d')](_0x536252)[_0x6eae('0x23')](function(_0x1df945){if(_0x1df945){_0x5216e9=_0x1df945;return _0x1df945[_0x6eae('0x68')]();}return null;})[_0x6eae('0x23')](function(_0x19097b){if(_0x19097b){if(!_0x19097b[_0x6eae('0x45')]){throw new db[(_0x6eae('0x88'))][(_0x6eae('0x69'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x456c00=_0x19097b;return db[_0x6eae('0x6b')][_0x6eae('0x41')]({'raw':!![]});}return null;})[_0x6eae('0x23')](function(_0x45fb75){if(_0x45fb75){_0xfb2b5a=_[_0x6eae('0xa1')](_0x45fb75,'id');var _0x55664e;var _0x249e30=squel[_0x6eae('0x6c')]();_0x249e30[_0x6eae('0x89')](_0x5216e9[_0x6eae('0x7b')]);for(var _0x409207=0x0;_0x409207<_0x456c00[_0x6eae('0x45')];_0x409207+=0x1){_0x55664e=_0x456c00[_0x409207][_0x6eae('0x8a')]?_0xfb2b5a[_0x456c00[_0x409207][_0x6eae('0x8a')]][_0x6eae('0x6d')]:_0x456c00[_0x409207][_0x6eae('0x66')];_0x55664e=_0x456c00[_0x409207][_0x6eae('0x6e')]?_[_0x6eae('0x6f')](_0x241c69[_0x456c00[_0x409207]['function']],'%s',_0x55664e):_0x55664e;_0x55664e=_0x456c00[_0x409207][_0x6eae('0x70')]?_[_0x6eae('0x6f')](_0x52aea1[_0x456c00[_0x409207][_0x6eae('0x70')]],'%s',_0x55664e):_0x55664e;if(_0x456c00[_0x409207][_0x6eae('0x71')]){_0x249e30[_0x6eae('0x65')](_0x55664e);}_0x456c00[_0x409207][_0x6eae('0x72')]&&_0x249e30[_0x6eae('0x36')](_0x55664e,_0x456c00[_0x409207][_0x6eae('0x72')]==='DESC'?![]:!![]);_0x249e30[_0x6eae('0x66')](_0x55664e,_0x456c00[_0x409207][_0x6eae('0x74')]||_0x55664e);}if(_0x5216e9['joins']){_0x5216e9['joins']=JSON[_0x6eae('0x76')](_0x5216e9['joins']);for(var _0x3f7919=0x0;_0x3f7919<_0x5216e9['joins']['length'];_0x3f7919+=0x1){if(_0x5216e9[_0x6eae('0x75')][_0x3f7919]['type']&&_[_0x6eae('0x5f')](_0x1c062d,_0x5216e9[_0x6eae('0x75')][_0x3f7919]['type'])&&_0x5216e9['joins'][_0x3f7919][_0x6eae('0x77')]&&_0x5216e9[_0x6eae('0x75')][_0x3f7919][_0x6eae('0x78')]&&_0x5216e9['joins'][_0x3f7919][_0x6eae('0x79')]){_0x249e30[_0x5216e9[_0x6eae('0x75')][_0x3f7919][_0x6eae('0x3d')]](_0x5216e9['joins'][_0x3f7919]['foreignTable'],null,util[_0x6eae('0x70')](_0x6eae('0x7a'),_0x5216e9[_0x6eae('0x7b')],_0x5216e9[_0x6eae('0x75')][_0x3f7919][_0x6eae('0x77')],_0x5216e9[_0x6eae('0x75')][_0x3f7919][_0x6eae('0x78')],_0x5216e9[_0x6eae('0x75')][_0x3f7919][_0x6eae('0x79')]));}}}if(_0x5216e9['conditions']){_0x5216e9[_0x6eae('0x7c')]=JSON[_0x6eae('0x76')](_0x5216e9[_0x6eae('0x7c')]);_0x249e30['where'](_0x2483f8(_0x5216e9[_0x6eae('0x7c')][_0x6eae('0x65')]));}_0x127f08=_0x249e30[_0x6eae('0x7d')]();_0x249e30[_0x6eae('0x1b')](_0xd61c4d);_0x249e30[_0x6eae('0x19')](0x0);logger[_0x6eae('0x7e')](_0x6eae('0x7f'),_0x249e30[_0x6eae('0x80')]());return dbH[_0x6eae('0x81')][_0x6eae('0x31')](_0x249e30['toString'](),{'type':dbH[_0x6eae('0x81')][_0x6eae('0x9d')][_0x6eae('0x82')]});}})['then'](function(){return{'sql':_0x127f08[_0x6eae('0x80')]()};})[_0x6eae('0x23')](respondWithResult(_0x33e1ae,null))[_0x6eae('0x43')](handleError(_0x33e1ae,null));};
\ No newline at end of file
index 3f96bcb..0a40e59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa17a=['moment','request-promise','path','rimraf','../../config/environment','./analyticCustomReport.attributes','define','AnalyticCustomReport','analytics_custom_reports','lodash','util','api'];(function(_0x3660ce,_0x54d3c7){var _0xdae095=function(_0x168d43){while(--_0x168d43){_0x3660ce['push'](_0x3660ce['shift']());}};_0xdae095(++_0x54d3c7);}(_0xa17a,0xf9));var _0xaa17=function(_0x427f38,_0x34f332){_0x427f38=_0x427f38-0x0;var _0x2f39d7=_0xa17a[_0x427f38];return _0x2f39d7;};'use strict';var _=require(_0xaa17('0x0'));var util=require(_0xaa17('0x1'));var logger=require('../../config/logger')(_0xaa17('0x2'));var moment=require(_0xaa17('0x3'));var BPromise=require('bluebird');var rp=require(_0xaa17('0x4'));var fs=require('fs');var path=require(_0xaa17('0x5'));var rimraf=require(_0xaa17('0x6'));var config=require(_0xaa17('0x7'));var attributes=require(_0xaa17('0x8'));module['exports']=function(_0xf285ac,_0x455f03){return _0xf285ac[_0xaa17('0x9')](_0xaa17('0xa'),attributes,{'tableName':_0xaa17('0xb'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe1a7=['define','AnalyticCustomReport','analytics_custom_reports','api','moment','request-promise','path','../../config/environment','./analyticCustomReport.attributes','exports'];(function(_0x452688,_0x198223){var _0x3f796f=function(_0x2c65ff){while(--_0x2c65ff){_0x452688['push'](_0x452688['shift']());}};_0x3f796f(++_0x198223);}(_0xe1a7,0xb7));var _0x7e1a=function(_0x24ac6d,_0x5d7934){_0x24ac6d=_0x24ac6d-0x0;var _0x495d64=_0xe1a7[_0x24ac6d];return _0x495d64;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x7e1a('0x0'));var moment=require(_0x7e1a('0x1'));var BPromise=require('bluebird');var rp=require(_0x7e1a('0x2'));var fs=require('fs');var path=require(_0x7e1a('0x3'));var rimraf=require('rimraf');var config=require(_0x7e1a('0x4'));var attributes=require(_0x7e1a('0x5'));module[_0x7e1a('0x6')]=function(_0x101ffb,_0x2d2f7b){return _0x101ffb[_0x7e1a('0x7')](_0x7e1a('0x8'),attributes,{'tableName':_0x7e1a('0x9'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 68bd79d..569c11e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57b2=['code','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','then','info','AnalyticCustomReport,\x20%s,\x20%s','debug','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','request\x20sent','error'];(function(_0x506c23,_0xb6fdda){var _0x1c0c47=function(_0x422e0b){while(--_0x422e0b){_0x506c23['push'](_0x506c23['shift']());}};_0x1c0c47(++_0xb6fdda);}(_0x57b2,0xd3));var _0x257b=function(_0x5a8cde,_0x533a4c){_0x5a8cde=_0x5a8cde-0x0;var _0x3f99ca=_0x57b2[_0x5a8cde];return _0x3f99ca;};'use strict';var _=require(_0x257b('0x0'));var util=require(_0x257b('0x1'));var moment=require('moment');var BPromise=require(_0x257b('0x2'));var rs=require(_0x257b('0x3'));var fs=require('fs');var Redis=require(_0x257b('0x4'));var db=require(_0x257b('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x257b('0x6'))(_0x257b('0x7'));var config=require('../../config/environment');var jayson=require(_0x257b('0x8'));var client=jayson[_0x257b('0x9')][_0x257b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x56dd98,_0x4ed8f7,_0x4ee80f){return new BPromise(function(_0x565fe4,_0x4a9bac){return client[_0x257b('0xb')](_0x56dd98,_0x4ee80f)[_0x257b('0xc')](function(_0x5609b5){logger[_0x257b('0xd')](_0x257b('0xe'),_0x4ed8f7,'request\x20sent');logger[_0x257b('0xf')](_0x257b('0x10'),_0x4ed8f7,_0x257b('0x11'),JSON['stringify'](_0x5609b5));if(_0x5609b5['error']){if(_0x5609b5[_0x257b('0x12')][_0x257b('0x13')]===0x1f4){logger[_0x257b('0x12')](_0x257b('0xe'),_0x4ed8f7,_0x5609b5[_0x257b('0x12')][_0x257b('0x14')]);return _0x4a9bac(_0x5609b5[_0x257b('0x12')]['message']);}logger[_0x257b('0x12')](_0x257b('0xe'),_0x4ed8f7,_0x5609b5[_0x257b('0x12')]['message']);return _0x565fe4(_0x5609b5[_0x257b('0x12')][_0x257b('0x14')]);}else{logger['info']('AnalyticCustomReport,\x20%s,\x20%s',_0x4ed8f7,'request\x20sent');_0x565fe4(_0x5609b5[_0x257b('0x15')][_0x257b('0x14')]);}})[_0x257b('0x16')](function(_0x10a425){logger[_0x257b('0x12')]('AnalyticCustomReport,\x20%s,\x20%s',_0x4ed8f7,_0x10a425);_0x4a9bac(_0x10a425);});});}
\ No newline at end of file
+var _0x1637=['http','info','AnalyticCustomReport,\x20%s,\x20%s','request\x20sent','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x1637,0x96));var _0x7163=function(_0x243b59,_0x3f9495){_0x243b59=_0x243b59-0x0;var _0x3e1676=_0x1637[_0x243b59];return _0x3e1676;};'use strict';var _=require(_0x7163('0x0'));var util=require(_0x7163('0x1'));var moment=require(_0x7163('0x2'));var BPromise=require(_0x7163('0x3'));var rs=require(_0x7163('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7163('0x5'))['db'];var utils=require(_0x7163('0x6'));var logger=require(_0x7163('0x7'))('rpc');var config=require(_0x7163('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x7163('0x9')][_0x7163('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5822aa,_0x2544f5,_0x2f5146){return new BPromise(function(_0x25acfe,_0x24176e){return client['request'](_0x5822aa,_0x2f5146)['then'](function(_0x1d1046){logger[_0x7163('0xb')](_0x7163('0xc'),_0x2544f5,_0x7163('0xd'));logger['debug'](_0x7163('0xe'),_0x2544f5,_0x7163('0xd'),JSON[_0x7163('0xf')](_0x1d1046));if(_0x1d1046[_0x7163('0x10')]){if(_0x1d1046['error'][_0x7163('0x11')]===0x1f4){logger[_0x7163('0x10')]('AnalyticCustomReport,\x20%s,\x20%s',_0x2544f5,_0x1d1046[_0x7163('0x10')][_0x7163('0x12')]);return _0x24176e(_0x1d1046['error']['message']);}logger[_0x7163('0x10')]('AnalyticCustomReport,\x20%s,\x20%s',_0x2544f5,_0x1d1046[_0x7163('0x10')][_0x7163('0x12')]);return _0x25acfe(_0x1d1046[_0x7163('0x10')][_0x7163('0x12')]);}else{logger[_0x7163('0xb')](_0x7163('0xc'),_0x2544f5,'request\x20sent');_0x25acfe(_0x1d1046[_0x7163('0x13')][_0x7163('0x12')]);}})['catch'](function(_0x3d5ac9){logger[_0x7163('0x10')]('AnalyticCustomReport,\x20%s,\x20%s',_0x2544f5,_0x3d5ac9);_0x24176e(_0x3d5ac9);});});}
\ No newline at end of file
index ac2dd60..0af6053 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5011=['isAuthenticated','index','show','/:id/preview','/:id/run','/:id/query','query','create','/:id','update','delete','destroy','exports','util','path','connect-timeout','express','../../config/environment','./analyticCustomReport.controller','get'];(function(_0x1d6608,_0x163d37){var _0x25b5f9=function(_0x12e924){while(--_0x12e924){_0x1d6608['push'](_0x1d6608['shift']());}};_0x25b5f9(++_0x163d37);}(_0x5011,0x189));var _0x1501=function(_0x1d58b5,_0x1639c5){_0x1d58b5=_0x1d58b5-0x0;var _0x4cf978=_0x5011[_0x1d58b5];return _0x4cf978;};'use strict';var multer=require('multer');var util=require(_0x1501('0x0'));var path=require(_0x1501('0x1'));var timeout=require(_0x1501('0x2'));var express=require(_0x1501('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(_0x1501('0x4'));var controller=require(_0x1501('0x5'));router[_0x1501('0x6')]('/',auth[_0x1501('0x7')](),controller[_0x1501('0x8')]);router[_0x1501('0x6')]('/:id',auth[_0x1501('0x7')](),controller[_0x1501('0x9')]);router[_0x1501('0x6')](_0x1501('0xa'),auth[_0x1501('0x7')](),controller['preview']);router[_0x1501('0x6')](_0x1501('0xb'),auth[_0x1501('0x7')](),controller['run']);router['get'](_0x1501('0xc'),auth['isAuthenticated'](),controller[_0x1501('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0x1501('0xe')]);router['put'](_0x1501('0xf'),auth[_0x1501('0x7')](),controller[_0x1501('0x10')]);router[_0x1501('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x1501('0x12')]);module[_0x1501('0x13')]=router;
\ No newline at end of file
+var _0xae52=['get','isAuthenticated','index','/:id','show','/:id/preview','/:id/run','run','/:id/query','query','create','put','update','destroy','exports','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticCustomReport.controller'];(function(_0x27c201,_0xd947bf){var _0x3cabde=function(_0x4cf697){while(--_0x4cf697){_0x27c201['push'](_0x27c201['shift']());}};_0x3cabde(++_0xd947bf);}(_0xae52,0x117));var _0x2ae5=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0xae52[_0x502c7d];return _0x30b7ed;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x2ae5('0x0'));var express=require('express');var router=express[_0x2ae5('0x1')]();var fs_extra=require(_0x2ae5('0x2'));var auth=require(_0x2ae5('0x3'));var interaction=require(_0x2ae5('0x4'));var config=require(_0x2ae5('0x5'));var controller=require(_0x2ae5('0x6'));router[_0x2ae5('0x7')]('/',auth[_0x2ae5('0x8')](),controller[_0x2ae5('0x9')]);router[_0x2ae5('0x7')](_0x2ae5('0xa'),auth['isAuthenticated'](),controller[_0x2ae5('0xb')]);router[_0x2ae5('0x7')](_0x2ae5('0xc'),auth['isAuthenticated'](),controller['preview']);router[_0x2ae5('0x7')](_0x2ae5('0xd'),auth[_0x2ae5('0x8')](),controller[_0x2ae5('0xe')]);router[_0x2ae5('0x7')](_0x2ae5('0xf'),auth[_0x2ae5('0x8')](),controller[_0x2ae5('0x10')]);router['post']('/',auth[_0x2ae5('0x8')](),controller[_0x2ae5('0x11')]);router[_0x2ae5('0x12')]('/:id',auth[_0x2ae5('0x8')](),controller[_0x2ae5('0x13')]);router['delete'](_0x2ae5('0xa'),auth[_0x2ae5('0x8')](),controller[_0x2ae5('0x14')]);module[_0x2ae5('0x15')]=router;
\ No newline at end of file
index 44848cb..0d274b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafc4=['sequelize','STRING','TEXT'];(function(_0x9df060,_0x253d33){var _0x338dfe=function(_0x17d9a5){while(--_0x17d9a5){_0x9df060['push'](_0x9df060['shift']());}};_0x338dfe(++_0x253d33);}(_0xafc4,0x69));var _0x4afc=function(_0x38fbc2,_0x2ebb94){_0x38fbc2=_0x38fbc2-0x0;var _0x40dd51=_0xafc4[_0x38fbc2];return _0x40dd51;};'use strict';var Sequelize=require(_0x4afc('0x0'));module['exports']={'name':{'type':Sequelize[_0x4afc('0x1')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'parent':{'type':Sequelize[_0x4afc('0x1')]},'table':{'type':Sequelize[_0x4afc('0x1')]},'conditions':{'type':Sequelize[_0x4afc('0x2')]},'joins':{'type':Sequelize[_0x4afc('0x2')]}};
\ No newline at end of file
+var _0xafc4=['sequelize','STRING','TEXT'];(function(_0x3df223,_0x1740fc){var _0x562d11=function(_0x343009){while(--_0x343009){_0x3df223['push'](_0x3df223['shift']());}};_0x562d11(++_0x1740fc);}(_0xafc4,0x69));var _0x4afc=function(_0x1262e2,_0x24963a){_0x1262e2=_0x1262e2-0x0;var _0x15a774=_0xafc4[_0x1262e2];return _0x15a774;};'use strict';var Sequelize=require(_0x4afc('0x0'));module['exports']={'name':{'type':Sequelize[_0x4afc('0x1')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'parent':{'type':Sequelize[_0x4afc('0x1')]},'table':{'type':Sequelize[_0x4afc('0x1')]},'conditions':{'type':Sequelize[_0x4afc('0x2')]},'joins':{'type':Sequelize[_0x4afc('0x2')]}};
\ No newline at end of file
index 6d9da10..2ccace7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','dbH','sendStatus','status','offset','limit','undefined','set','json','apply','reject','save','then','destroy','get','DefaultReports','UserProfileResource','error','name','index','AnalyticDefaultReport','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','nolimit','sort','where','pick','filter','merge','map','VIRTUAL','count','include','findAll','rows','show','length','includeAll','options','find','catch','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','params','preview','join','right_join','cross_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','HOUR(%s)','ROUND(%s)','includes','IS\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','getFields','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','from','table','MetricId','metric','function','replace','format','groupBy','orderBy','DESC','alias','joins','parentKey','foreignTable','foreignKey','conditions','parse','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','left_join','AVG(%s)','DATE(%s)','value','keyBy','select','order','%s.%s\x20=\x20%s.%s','clone','web','fullPath','randomstring','generate','output','csv','default','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','Run\x20Query:','../../components/export/','savename','COUNT(*)','run','runReport','UNIX_TIMESTAMP(%s)','IS\x20NOT\x20NULL','Sequelize','debug'];(function(_0x2003e7,_0x84c23b){var _0x5ccbab=function(_0x230907){while(--_0x230907){_0x2003e7['push'](_0x2003e7['shift']());}};_0x5ccbab(++_0x84c23b);}(_0x1261,0x144));var _0x1126=function(_0x2dd976,_0x1b5dc4){_0x2dd976=_0x2dd976-0x0;var _0x2265fd=_0x1261[_0x2dd976];return _0x2265fd;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1126('0x0'));var zipdir=require(_0x1126('0x1'));var jsonpatch=require(_0x1126('0x2'));var rp=require(_0x1126('0x3'));var moment=require(_0x1126('0x4'));var BPromise=require(_0x1126('0x5'));var Mustache=require(_0x1126('0x6'));var util=require(_0x1126('0x7'));var path=require(_0x1126('0x8'));var sox=require(_0x1126('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1126('0xa'));var _=require(_0x1126('0xb'));var squel=require('squel');var crypto=require(_0x1126('0xc'));var jsforce=require(_0x1126('0xd'));var deskjs=require(_0x1126('0xe'));var toCsv=require(_0x1126('0xf'));var querystring=require(_0x1126('0x10'));var Papa=require('papaparse');var Redis=require(_0x1126('0x11'));var authService=require(_0x1126('0x12'));var qs=require(_0x1126('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1126('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x1126('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x1126('0x16'));var db=require(_0x1126('0x17'))['db'];var dbH=require(_0x1126('0x17'))[_0x1126('0x18')];function respondWithStatusCode(_0xca0355,_0x3f10e9){_0x3f10e9=_0x3f10e9||0xcc;return function(_0xd8ca42){if(_0xd8ca42){return _0xca0355[_0x1126('0x19')](_0x3f10e9);}return _0xca0355[_0x1126('0x1a')](_0x3f10e9)['end']();};}function respondWithResult(_0x5de9a7,_0x1af673){_0x1af673=_0x1af673||0xc8;return function(_0x154e20){if(_0x154e20){return _0x5de9a7[_0x1126('0x1a')](_0x1af673)['json'](_0x154e20);}};}function respondWithFilteredResult(_0x45149c,_0x4794a7){return function(_0x35fe9f){if(_0x35fe9f){var _0x42f379=typeof _0x4794a7[_0x1126('0x1b')]==='undefined'&&typeof _0x4794a7[_0x1126('0x1c')]===_0x1126('0x1d');var _0x4a7b49=_0x35fe9f['count'];var _0x22ae0b=_0x42f379?0x0:_0x4794a7[_0x1126('0x1b')];var _0x58d11a=_0x42f379?_0x35fe9f['count']:_0x4794a7[_0x1126('0x1b')]+_0x4794a7['limit'];var _0x22ed37;if(_0x58d11a>=_0x4a7b49){_0x58d11a=_0x4a7b49;_0x22ed37=0xc8;}else{_0x22ed37=0xce;}_0x45149c[_0x1126('0x1a')](_0x22ed37);return _0x45149c[_0x1126('0x1e')]('Content-Range',_0x22ae0b+'-'+_0x58d11a+'/'+_0x4a7b49)[_0x1126('0x1f')](_0x35fe9f);}return null;};}function patchUpdates(_0x49d209){return function(_0x56efeb){try{jsonpatch[_0x1126('0x20')](_0x56efeb,_0x49d209,!![]);}catch(_0x3a9bed){return BPromise[_0x1126('0x21')](_0x3a9bed);}return _0x56efeb[_0x1126('0x22')]();};}function saveUpdates(_0x526ca1,_0x29ab60){return function(_0x477e6a){if(_0x477e6a){return _0x477e6a['update'](_0x526ca1)[_0x1126('0x23')](function(_0x59cd8e){return _0x59cd8e;});}return null;};}function removeEntity(_0x529dd9,_0x4b57ab){return function(_0x2199d9){if(_0x2199d9){return _0x2199d9[_0x1126('0x24')]()[_0x1126('0x23')](function(){var _0x34bcf1=_0x2199d9[_0x1126('0x25')]({'plain':!![]});var _0x1b07a7=_0x1126('0x26');return db[_0x1126('0x27')]['destroy']({'where':{'type':_0x1b07a7,'resourceId':_0x34bcf1['id']}})[_0x1126('0x23')](function(){return _0x2199d9;});})[_0x1126('0x23')](function(){_0x529dd9[_0x1126('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x541bc9,_0xeb7d89){return function(_0x39bf0e){if(!_0x39bf0e){_0x541bc9['sendStatus'](0x194);}return _0x39bf0e;};}function handleError(_0x2fb797,_0x23d2bc){_0x23d2bc=_0x23d2bc||0x1f4;return function(_0x4a334a){logger[_0x1126('0x28')](_0x4a334a['stack']);if(_0x4a334a[_0x1126('0x29')]){delete _0x4a334a['name'];}_0x2fb797[_0x1126('0x1a')](_0x23d2bc)['send'](_0x4a334a);};}exports[_0x1126('0x2a')]=function(_0x5f2611,_0x5252e0){var _0x4a53ab={},_0x17646e={},_0xa8906d={'count':0x0,'rows':[]};var _0x1cef48=_['map'](db[_0x1126('0x2b')][_0x1126('0x2c')],function(_0x56f7f8){return{'name':_0x56f7f8[_0x1126('0x2d')],'type':_0x56f7f8[_0x1126('0x2e')][_0x1126('0x2f')]};});_0x17646e[_0x1126('0x30')]=_['map'](_0x1cef48,'name');_0x17646e[_0x1126('0x31')]=_[_0x1126('0x32')](_0x5f2611[_0x1126('0x31')]);_0x17646e[_0x1126('0x33')]=_['intersection'](_0x17646e[_0x1126('0x30')],_0x17646e[_0x1126('0x31')]);_0x4a53ab[_0x1126('0x34')]=_[_0x1126('0x35')](_0x17646e[_0x1126('0x30')],qs['fields'](_0x5f2611[_0x1126('0x31')][_0x1126('0x36')]));_0x4a53ab[_0x1126('0x34')]=_0x4a53ab[_0x1126('0x34')]['length']?_0x4a53ab['attributes']:_0x17646e[_0x1126('0x30')];if(!_0x5f2611[_0x1126('0x31')]['hasOwnProperty'](_0x1126('0x37'))){_0x4a53ab[_0x1126('0x1c')]=qs[_0x1126('0x1c')](_0x5f2611['query']['limit']);_0x4a53ab[_0x1126('0x1b')]=qs[_0x1126('0x1b')](_0x5f2611[_0x1126('0x31')][_0x1126('0x1b')]);}_0x4a53ab['order']=qs[_0x1126('0x38')](_0x5f2611['query'][_0x1126('0x38')]);_0x4a53ab[_0x1126('0x39')]=qs[_0x1126('0x33')](_[_0x1126('0x3a')](_0x5f2611[_0x1126('0x31')],_0x17646e['filters']),_0x1cef48);if(_0x5f2611[_0x1126('0x31')][_0x1126('0x3b')]){_0x4a53ab[_0x1126('0x39')]=_[_0x1126('0x3c')](_0x4a53ab[_0x1126('0x39')],{'$or':_[_0x1126('0x3d')](_0x1cef48,function(_0x3052f9){if(_0x3052f9['type']!==_0x1126('0x3e')){var _0x154c28={};_0x154c28[_0x3052f9[_0x1126('0x29')]]={'$like':'%'+_0x5f2611[_0x1126('0x31')][_0x1126('0x3b')]+'%'};return _0x154c28;}})});}_0x4a53ab=_['merge']({},_0x4a53ab,_0x5f2611['options']);var _0x1c4f06={'where':_0x4a53ab[_0x1126('0x39')]};return db[_0x1126('0x2b')][_0x1126('0x3f')](_0x1c4f06)[_0x1126('0x23')](function(_0x276fd5){_0xa8906d['count']=_0x276fd5;if(_0x5f2611['query']['includeAll']){_0x4a53ab[_0x1126('0x40')]=[{'all':!![]}];}return db['AnalyticDefaultReport'][_0x1126('0x41')](_0x4a53ab);})[_0x1126('0x23')](function(_0x3584a3){_0xa8906d[_0x1126('0x42')]=_0x3584a3;return _0xa8906d;})['then'](respondWithFilteredResult(_0x5252e0,_0x4a53ab))['catch'](handleError(_0x5252e0,null));};exports[_0x1126('0x43')]=function(_0xa93167,_0x1d63b9){var _0x5f5d3a={'raw':!![],'where':{'id':_0xa93167['params']['id']}},_0x2f8551={};_0x2f8551[_0x1126('0x30')]=_['keys'](db[_0x1126('0x2b')][_0x1126('0x2c')]);_0x2f8551[_0x1126('0x31')]=_['keys'](_0xa93167[_0x1126('0x31')]);_0x2f8551[_0x1126('0x33')]=_[_0x1126('0x35')](_0x2f8551['model'],_0x2f8551['query']);_0x5f5d3a['attributes']=_[_0x1126('0x35')](_0x2f8551['model'],qs[_0x1126('0x36')](_0xa93167['query'][_0x1126('0x36')]));_0x5f5d3a[_0x1126('0x34')]=_0x5f5d3a[_0x1126('0x34')][_0x1126('0x44')]?_0x5f5d3a[_0x1126('0x34')]:_0x2f8551['model'];if(_0xa93167[_0x1126('0x31')][_0x1126('0x45')]){_0x5f5d3a['include']=[{'all':!![]}];}_0x5f5d3a=_[_0x1126('0x3c')]({},_0x5f5d3a,_0xa93167[_0x1126('0x46')]);return db['AnalyticDefaultReport'][_0x1126('0x47')](_0x5f5d3a)[_0x1126('0x23')](handleEntityNotFound(_0x1d63b9,null))['then'](respondWithResult(_0x1d63b9,null))[_0x1126('0x48')](handleError(_0x1d63b9,null));};exports[_0x1126('0x49')]=function(_0x213a76,_0x59656d){return db[_0x1126('0x2b')][_0x1126('0x49')](_0x213a76[_0x1126('0x4a')],{})[_0x1126('0x23')](function(_0x224456){var _0x2081f2=_0x213a76[_0x1126('0x4b')][_0x1126('0x25')]({'plain':!![]});if(!_0x2081f2)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2081f2[_0x1126('0x4c')]==='user'){var _0x40168e=_0x224456[_0x1126('0x25')]({'plain':!![]});var _0x4a1831='Reports';return db[_0x1126('0x4d')][_0x1126('0x47')]({'where':{'name':_0x4a1831,'userProfileId':_0x2081f2[_0x1126('0x4e')]},'raw':!![]})['then'](function(_0x3cb44c){if(_0x3cb44c&&_0x3cb44c[_0x1126('0x4f')]===0x0){return db[_0x1126('0x27')][_0x1126('0x49')]({'name':_0x40168e['name'],'resourceId':_0x40168e['id'],'type':_0x1126('0x26'),'sectionId':_0x3cb44c['id']},{})[_0x1126('0x23')](function(){return _0x224456;});}else{return _0x224456;}})['catch'](function(_0x4bcc08){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4bcc08);throw _0x4bcc08;});}return _0x224456;})[_0x1126('0x23')](respondWithResult(_0x59656d,0xc9))[_0x1126('0x48')](handleError(_0x59656d,null));};exports['update']=function(_0x16552b,_0x1c7a2b){if(_0x16552b[_0x1126('0x4a')]['id']){delete _0x16552b[_0x1126('0x4a')]['id'];}return db[_0x1126('0x2b')]['find']({'where':{'id':_0x16552b[_0x1126('0x50')]['id']}})[_0x1126('0x23')](handleEntityNotFound(_0x1c7a2b,null))['then'](saveUpdates(_0x16552b[_0x1126('0x4a')],null))[_0x1126('0x23')](respondWithResult(_0x1c7a2b,null))[_0x1126('0x48')](handleError(_0x1c7a2b,null));};exports[_0x1126('0x24')]=function(_0xc8a0f,_0x59c3d0){return db[_0x1126('0x2b')]['find']({'where':{'id':_0xc8a0f[_0x1126('0x50')]['id']}})[_0x1126('0x23')](handleEntityNotFound(_0x59c3d0,null))[_0x1126('0x23')](removeEntity(_0x59c3d0,null))['catch'](handleError(_0x59c3d0,null));};exports[_0x1126('0x51')]=function(_0x2340f8,_0x5763b4){var _0x30812d=0xa;var _0x25038f=[_0x1126('0x52'),'left_join',_0x1126('0x53'),_0x1126('0x54')];var _0x22ab18={'SUM':_0x1126('0x55'),'COUNT':_0x1126('0x56'),'COUNT DISTINCT':_0x1126('0x57'),'MAX':_0x1126('0x58'),'MIN':_0x1126('0x59'),'AVG':'AVG(%s)','GROUP_CONCAT':_0x1126('0x5a'),'GROUP_CONCAT ASC':_0x1126('0x5b'),'GROUP_CONCAT DESC':_0x1126('0x5c')};var _0x2a5422={'SEC_TO_TIME':_0x1126('0x5d'),'DATE':'DATE(%s)','HOUR':_0x1126('0x5e'),'ROUND':_0x1126('0x5f'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x3767e4=function(_0x5246aa){return!_[_0x1126('0x60')]([_0x1126('0x61'),'IS\x20NOT\x20NULL',_0x1126('0x62'),_0x1126('0x63')],_0x5246aa);};var _0x375b76=function(_0x592960){if(!_0x592960||!_0x592960[_0x1126('0x64')]['length']){return'';}for(var _0x558b6e='(',_0xbdc58=0x0;_0xbdc58<_0x592960[_0x1126('0x64')][_0x1126('0x44')];_0xbdc58+=0x1){_0xbdc58>0x0&&(_0x558b6e+='\x20'+_0x592960[_0x1126('0x65')]+'\x20');_0x558b6e+=_0x592960[_0x1126('0x64')][_0xbdc58][_0x1126('0x66')]?_0x375b76(_0x592960[_0x1126('0x64')][_0xbdc58]['group']):_0x592960[_0x1126('0x64')][_0xbdc58][_0x1126('0x67')]+'\x20'+_0x592960[_0x1126('0x64')][_0xbdc58][_0x1126('0x68')]+(_0x3767e4(_0x592960[_0x1126('0x64')][_0xbdc58][_0x1126('0x68')])?'\x20'+_0x592960['rules'][_0xbdc58]['value']:'');}return _0x558b6e+')';};var _0x16a343={'where':{'id':_0x2340f8[_0x1126('0x50')]['id']}},_0x3921c2,_0x4bf2b3,_0x5ee130,_0x5e9260,_0x51a28d;_0x16a343=_[_0x1126('0x3c')]({},_0x16a343,_0x2340f8[_0x1126('0x46')]);return db['AnalyticDefaultReport'][_0x1126('0x47')](_0x16a343)[_0x1126('0x23')](function(_0x170bf0){if(_0x170bf0){_0x3921c2=_0x170bf0;return _0x170bf0[_0x1126('0x69')]();}return null;})[_0x1126('0x23')](function(_0x3f007b){if(_0x3f007b){if(!_0x3f007b[_0x1126('0x44')]){throw new db['Sequelize'][(_0x1126('0x6a'))](_0x1126('0x6b'),0x193);}_0x4bf2b3=_0x3f007b;return db[_0x1126('0x6c')][_0x1126('0x41')]({'raw':!![]});}return null;})[_0x1126('0x23')](function(_0x56c003){if(_0x56c003){_0x5ee130=_['keyBy'](_0x56c003,'id');var _0x15cf3d;var _0x2643d7=squel['select']();_0x2643d7[_0x1126('0x6d')](_0x3921c2[_0x1126('0x6e')]);for(var _0x366675=0x0;_0x366675<_0x4bf2b3[_0x1126('0x44')];_0x366675+=0x1){_0x15cf3d=_0x4bf2b3[_0x366675][_0x1126('0x6f')]?_0x5ee130[_0x4bf2b3[_0x366675][_0x1126('0x6f')]][_0x1126('0x70')]:_0x4bf2b3[_0x366675][_0x1126('0x67')];_0x15cf3d=_0x4bf2b3[_0x366675][_0x1126('0x71')]?_[_0x1126('0x72')](_0x22ab18[_0x4bf2b3[_0x366675][_0x1126('0x71')]],'%s',_0x15cf3d):_0x15cf3d;_0x15cf3d=_0x4bf2b3[_0x366675][_0x1126('0x73')]?_[_0x1126('0x72')](_0x2a5422[_0x4bf2b3[_0x366675]['format']],'%s',_0x15cf3d):_0x15cf3d;if(_0x4bf2b3[_0x366675][_0x1126('0x74')]){_0x2643d7[_0x1126('0x66')](_0x15cf3d);}_0x4bf2b3[_0x366675][_0x1126('0x75')]&&_0x2643d7['order'](_0x15cf3d,_0x4bf2b3[_0x366675]['orderBy']===_0x1126('0x76')?![]:!![]);_0x2643d7[_0x1126('0x67')](_0x15cf3d,_0x4bf2b3[_0x366675][_0x1126('0x77')]||_0x15cf3d);}if(_0x3921c2[_0x1126('0x78')]){_0x3921c2['joins']=JSON['parse'](_0x3921c2['joins']);for(var _0x79afca=0x0;_0x79afca<_0x3921c2[_0x1126('0x78')][_0x1126('0x44')];_0x79afca+=0x1){if(_0x3921c2[_0x1126('0x78')][_0x79afca]['type']&&_[_0x1126('0x60')](_0x25038f,_0x3921c2['joins'][_0x79afca][_0x1126('0x2e')])&&_0x3921c2[_0x1126('0x78')][_0x79afca][_0x1126('0x79')]&&_0x3921c2[_0x1126('0x78')][_0x79afca][_0x1126('0x7a')]&&_0x3921c2[_0x1126('0x78')][_0x79afca][_0x1126('0x7b')]){_0x2643d7[_0x3921c2['joins'][_0x79afca][_0x1126('0x2e')]](_0x3921c2['joins'][_0x79afca][_0x1126('0x7a')],null,util[_0x1126('0x73')]('%s.%s\x20=\x20%s.%s',_0x3921c2[_0x1126('0x6e')],_0x3921c2[_0x1126('0x78')][_0x79afca]['parentKey'],_0x3921c2[_0x1126('0x78')][_0x79afca][_0x1126('0x7a')],_0x3921c2['joins'][_0x79afca]['foreignKey']));}}}if(_0x3921c2[_0x1126('0x7c')]){_0x3921c2[_0x1126('0x7c')]=JSON[_0x1126('0x7d')](_0x3921c2['conditions']);_0x2643d7['where'](_0x375b76(_0x3921c2['conditions'][_0x1126('0x66')]));}_0x51a28d=_0x2643d7['clone']();_0x2643d7['limit'](_0x30812d);_0x2643d7[_0x1126('0x1b')](0x0);logger['debug'](_0x1126('0x7e'),_0x2643d7[_0x1126('0x7f')]());return dbH['sequelize'][_0x1126('0x31')](_0x2643d7[_0x1126('0x7f')](),{'type':dbH[_0x1126('0x80')][_0x1126('0x81')][_0x1126('0x82')]});}})['then'](respondWithResult(_0x5763b4,null))[_0x1126('0x48')](handleError(_0x5763b4,null));};function runReport(_0x426faa,_0x5679ec,_0xd182b1){var _0x2d6fcf=_0x5679ec[_0x1126('0x29')];var _0x2af2d0=0xa;var _0x2598a7=[_0x1126('0x52'),_0x1126('0x83'),_0x1126('0x53'),_0x1126('0x54')];var _0x9a2af0={'SUM':_0x1126('0x55'),'COUNT':_0x1126('0x56'),'COUNT DISTINCT':_0x1126('0x57'),'MAX':_0x1126('0x58'),'MIN':_0x1126('0x59'),'AVG':_0x1126('0x84'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x1126('0x5b'),'GROUP_CONCAT DESC':_0x1126('0x5c')};var _0x33cccf={'SEC_TO_TIME':_0x1126('0x5d'),'DATE':_0x1126('0x85'),'HOUR':'HOUR(%s)','ROUND':_0x1126('0x5f'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x5bdb30=function(_0xb1199b){return!_[_0x1126('0x60')](['IS\x20NULL','IS\x20NOT\x20NULL',_0x1126('0x62'),_0x1126('0x63')],_0xb1199b);};var _0x228552=function(_0x1ee970){if(!_0x1ee970||!_0x1ee970[_0x1126('0x64')][_0x1126('0x44')]){return'';}for(var _0x2d7150='(',_0x35a9a4=0x0;_0x35a9a4<_0x1ee970[_0x1126('0x64')]['length'];_0x35a9a4+=0x1){_0x35a9a4>0x0&&(_0x2d7150+='\x20'+_0x1ee970[_0x1126('0x65')]+'\x20');_0x2d7150+=_0x1ee970[_0x1126('0x64')][_0x35a9a4][_0x1126('0x66')]?_0x228552(_0x1ee970[_0x1126('0x64')][_0x35a9a4][_0x1126('0x66')]):_0x1ee970[_0x1126('0x64')][_0x35a9a4]['field']+'\x20'+_0x1ee970[_0x1126('0x64')][_0x35a9a4][_0x1126('0x68')]+(_0x5bdb30(_0x1ee970[_0x1126('0x64')][_0x35a9a4][_0x1126('0x68')])?'\x20'+_0x1ee970[_0x1126('0x64')][_0x35a9a4][_0x1126('0x86')]:'');}return _0x2d7150+')';};var _0x2418ca={'where':{'id':_0x426faa['id']}},_0x2d2dfc,_0x38eac6,_0xc3503b,_0x5d6edb,_0x50238d;_0x2418ca=_[_0x1126('0x3c')]({},_0x2418ca,_0xd182b1);return db['AnalyticDefaultReport'][_0x1126('0x47')](_0x2418ca)['then'](function(_0x4461ae){if(_0x4461ae){_0x2d2dfc=_0x4461ae;return _0x4461ae['getFields']();}return null;})[_0x1126('0x23')](function(_0x4fbd44){if(_0x4fbd44){if(!_0x4fbd44['length']){throw new db['Sequelize'][(_0x1126('0x6a'))](_0x1126('0x6b'),0x193);}_0x38eac6=_0x4fbd44;return db['AnalyticMetric']['findAll']({'raw':!![]});}return null;})[_0x1126('0x23')](function(_0xe2f82d){if(_0xe2f82d){_0xc3503b=_[_0x1126('0x87')](_0xe2f82d,'id');var _0x5dfb8f;var _0x48f914=squel[_0x1126('0x88')]();_0x48f914['from'](_0x2d2dfc[_0x1126('0x6e')]);for(var _0x39d9a0=0x0;_0x39d9a0<_0x38eac6[_0x1126('0x44')];_0x39d9a0+=0x1){_0x5dfb8f=_0x38eac6[_0x39d9a0][_0x1126('0x6f')]?_0xc3503b[_0x38eac6[_0x39d9a0][_0x1126('0x6f')]]['metric']:_0x38eac6[_0x39d9a0]['field'];_0x5dfb8f=_0x38eac6[_0x39d9a0][_0x1126('0x71')]?_[_0x1126('0x72')](_0x9a2af0[_0x38eac6[_0x39d9a0][_0x1126('0x71')]],'%s',_0x5dfb8f):_0x5dfb8f;_0x5dfb8f=_0x38eac6[_0x39d9a0][_0x1126('0x73')]?_[_0x1126('0x72')](_0x33cccf[_0x38eac6[_0x39d9a0][_0x1126('0x73')]],'%s',_0x5dfb8f):_0x5dfb8f;if(_0x38eac6[_0x39d9a0][_0x1126('0x74')]){_0x48f914[_0x1126('0x66')](_0x5dfb8f);}_0x38eac6[_0x39d9a0][_0x1126('0x75')]&&_0x48f914[_0x1126('0x89')](_0x5dfb8f,_0x38eac6[_0x39d9a0][_0x1126('0x75')]==='DESC'?![]:!![]);_0x48f914[_0x1126('0x67')](_0x5dfb8f,_0x38eac6[_0x39d9a0]['alias']||_0x5dfb8f);}if(_0x2d2dfc[_0x1126('0x78')]){_0x2d2dfc['joins']=JSON[_0x1126('0x7d')](_0x2d2dfc[_0x1126('0x78')]);for(var _0x215d4d=0x0;_0x215d4d<_0x2d2dfc[_0x1126('0x78')]['length'];_0x215d4d+=0x1){if(_0x2d2dfc[_0x1126('0x78')][_0x215d4d][_0x1126('0x2e')]&&_['includes'](_0x2598a7,_0x2d2dfc['joins'][_0x215d4d][_0x1126('0x2e')])&&_0x2d2dfc[_0x1126('0x78')][_0x215d4d][_0x1126('0x79')]&&_0x2d2dfc['joins'][_0x215d4d][_0x1126('0x7a')]&&_0x2d2dfc['joins'][_0x215d4d][_0x1126('0x7b')]){_0x48f914[_0x2d2dfc[_0x1126('0x78')][_0x215d4d]['type']](_0x2d2dfc[_0x1126('0x78')][_0x215d4d][_0x1126('0x7a')],null,util[_0x1126('0x73')](_0x1126('0x8a'),_0x2d2dfc[_0x1126('0x6e')],_0x2d2dfc['joins'][_0x215d4d][_0x1126('0x79')],_0x2d2dfc[_0x1126('0x78')][_0x215d4d][_0x1126('0x7a')],_0x2d2dfc['joins'][_0x215d4d]['foreignKey']));}}}if(_0x2d2dfc['conditions']){_0x2d2dfc[_0x1126('0x7c')]=JSON[_0x1126('0x7d')](_0x2d2dfc[_0x1126('0x7c')]);_0x48f914[_0x1126('0x39')](_0x228552(_0x2d2dfc['conditions'][_0x1126('0x66')]));}_0x50238d=_0x48f914[_0x1126('0x8b')]();_0x48f914[_0x1126('0x1c')](_0x2af2d0);_0x48f914[_0x1126('0x1b')](0x0);return;}})[_0x1126('0x23')](function(){if(_0x5679ec['output']===_0x1126('0x8c')){return null;}var _0x21c487=_['merge'](_0x5679ec,{'name':_0x5679ec[_0x1126('0x8d')]||_0x5679ec['name']||_0x2d2dfc['name'],'basename':_0x2d6fcf,'savename':util[_0x1126('0x73')]('%s-%s.%s',_0x5679ec[_0x1126('0x29')]||_0x2d2dfc[_0x1126('0x29')],require(_0x1126('0x8e'))[_0x1126('0x8f')](0x4),_0x5679ec[_0x1126('0x90')]||_0x1126('0x91')),'reportId':_0x2d2dfc['id'],'reportType':_0x1126('0x92')});return db[_0x1126('0x93')][_0x1126('0x49')](_0x21c487,{'raw':!![]});})['then'](function(_0x2577f5){if(_0x2d2dfc[_0x1126('0x6e')]===_0x1126('0x94')){_0x50238d[_0x1126('0x39')](_0x2d2dfc['table']+_0x1126('0x95'),_0x5679ec[_0x1126('0x96')],_0x5679ec[_0x1126('0x97')]);}else{_0x50238d[_0x1126('0x39')](_0x2d2dfc['table']+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x5679ec['startDate'],_0x5679ec[_0x1126('0x97')]);}if(_0x2577f5){logger['info'](_0x1126('0x98'),_0x50238d[_0x1126('0x7f')]());require('child_process')['fork'](path[_0x1126('0x52')](__dirname,_0x1126('0x99'),_0x2577f5['output']),[_0x2577f5['id'],_0x50238d[_0x1126('0x7f')](),path[_0x1126('0x52')](__dirname,'../../files/reports',_0x2577f5[_0x1126('0x9a')]),_0x2d6fcf]);return _0x2577f5;}else{var _0x4a9941=squel[_0x1126('0x88')]();_0x4a9941[_0x1126('0x6d')]('('+_0x50238d[_0x1126('0x7f')]()+')','countTable');_0x4a9941[_0x1126('0x67')](_0x1126('0x9b'),_0x1126('0x3f'));_0x50238d[_0x1126('0x1c')](_0x5679ec[_0x1126('0x1c')]||_0x2af2d0);_0x50238d[_0x1126('0x1b')](_0x5679ec[_0x1126('0x1b')]||0x0);return dbH[_0x1126('0x80')][_0x1126('0x31')](_0x4a9941[_0x1126('0x7f')](),{'type':dbH[_0x1126('0x80')][_0x1126('0x81')][_0x1126('0x82')]})[_0x1126('0x23')](function(_0x12ffa5){if(!_0x12ffa5[_0x1126('0x44')]){_0x5d6edb=0x0;}else{_0x5d6edb=_0x12ffa5[0x0][_0x1126('0x3f')]||0x0;}return dbH['sequelize'][_0x1126('0x31')](_0x50238d[_0x1126('0x7f')](),{'type':dbH['sequelize']['QueryTypes'][_0x1126('0x82')]});})[_0x1126('0x23')](function(_0x35065c){return{'rows':_0x35065c||[],'count':_0x5d6edb};});}});}exports[_0x1126('0x9c')]=function(_0x5c0215,_0x444f94){return runReport(_0x5c0215[_0x1126('0x50')],_0x5c0215['query'],_0x5c0215[_0x1126('0x46')])['then'](respondWithResult(_0x444f94,null))[_0x1126('0x48')](handleError(_0x444f94,null));};exports[_0x1126('0x9d')]=runReport;exports['query']=function(_0x4d43ad,_0xa02d9e){var _0x548f9e=0xa;var _0x5edb83=[_0x1126('0x52'),_0x1126('0x83'),_0x1126('0x53'),_0x1126('0x54')];var _0x4f29ce={'SUM':'SUM(%s)','COUNT':'COUNT(%s)','COUNT DISTINCT':_0x1126('0x57'),'MAX':_0x1126('0x58'),'MIN':'MIN(%s)','AVG':_0x1126('0x84'),'GROUP_CONCAT':_0x1126('0x5a'),'GROUP_CONCAT ASC':_0x1126('0x5b'),'GROUP_CONCAT DESC':_0x1126('0x5c')};var _0x17b25d={'SEC_TO_TIME':_0x1126('0x5d'),'DATE':_0x1126('0x85'),'HOUR':_0x1126('0x5e'),'ROUND':_0x1126('0x5f'),'UNIX_TIMESTAMP':_0x1126('0x9e')};var _0x3a4a91=function(_0x55145f){return!_[_0x1126('0x60')](['IS\x20NULL',_0x1126('0x9f'),_0x1126('0x62'),_0x1126('0x63')],_0x55145f);};var _0x4c7dc7=function(_0x33a27b){if(!_0x33a27b||!_0x33a27b[_0x1126('0x64')][_0x1126('0x44')]){return'';}for(var _0x578c1b='(',_0x1562b2=0x0;_0x1562b2<_0x33a27b[_0x1126('0x64')][_0x1126('0x44')];_0x1562b2+=0x1){_0x1562b2>0x0&&(_0x578c1b+='\x20'+_0x33a27b[_0x1126('0x65')]+'\x20');_0x578c1b+=_0x33a27b[_0x1126('0x64')][_0x1562b2]['group']?_0x4c7dc7(_0x33a27b['rules'][_0x1562b2][_0x1126('0x66')]):_0x33a27b[_0x1126('0x64')][_0x1562b2][_0x1126('0x67')]+'\x20'+_0x33a27b[_0x1126('0x64')][_0x1562b2][_0x1126('0x68')]+(_0x3a4a91(_0x33a27b[_0x1126('0x64')][_0x1562b2][_0x1126('0x68')])?'\x20'+_0x33a27b[_0x1126('0x64')][_0x1562b2][_0x1126('0x86')]:'');}return _0x578c1b+')';};var _0x2fb228={'where':{'id':_0x4d43ad[_0x1126('0x50')]['id']}},_0x2c95b6,_0x4a4b43,_0x588f4f,_0x5ac4d6,_0x1168a5;_0x2fb228=_['merge']({},_0x2fb228,_0x4d43ad['options']);return db[_0x1126('0x2b')][_0x1126('0x47')](_0x2fb228)[_0x1126('0x23')](function(_0x48b088){if(_0x48b088){_0x2c95b6=_0x48b088;return _0x48b088[_0x1126('0x69')]();}return null;})[_0x1126('0x23')](function(_0x5a28f9){if(_0x5a28f9){if(!_0x5a28f9[_0x1126('0x44')]){throw new db[(_0x1126('0xa0'))][(_0x1126('0x6a'))](_0x1126('0x6b'),0x193);}_0x4a4b43=_0x5a28f9;return db[_0x1126('0x6c')]['findAll']({'raw':!![]});}return null;})[_0x1126('0x23')](function(_0x1140ec){if(_0x1140ec){_0x588f4f=_['keyBy'](_0x1140ec,'id');var _0x578f5c;var _0x559dae=squel[_0x1126('0x88')]();_0x559dae[_0x1126('0x6d')](_0x2c95b6[_0x1126('0x6e')]);for(var _0x9d7819=0x0;_0x9d7819<_0x4a4b43[_0x1126('0x44')];_0x9d7819+=0x1){_0x578f5c=_0x4a4b43[_0x9d7819]['MetricId']?_0x588f4f[_0x4a4b43[_0x9d7819][_0x1126('0x6f')]]['metric']:_0x4a4b43[_0x9d7819][_0x1126('0x67')];_0x578f5c=_0x4a4b43[_0x9d7819][_0x1126('0x71')]?_['replace'](_0x4f29ce[_0x4a4b43[_0x9d7819]['function']],'%s',_0x578f5c):_0x578f5c;_0x578f5c=_0x4a4b43[_0x9d7819][_0x1126('0x73')]?_[_0x1126('0x72')](_0x17b25d[_0x4a4b43[_0x9d7819]['format']],'%s',_0x578f5c):_0x578f5c;if(_0x4a4b43[_0x9d7819]['groupBy']){_0x559dae[_0x1126('0x66')](_0x578f5c);}_0x4a4b43[_0x9d7819][_0x1126('0x75')]&&_0x559dae[_0x1126('0x89')](_0x578f5c,_0x4a4b43[_0x9d7819][_0x1126('0x75')]===_0x1126('0x76')?![]:!![]);_0x559dae[_0x1126('0x67')](_0x578f5c,_0x4a4b43[_0x9d7819][_0x1126('0x77')]||_0x578f5c);}if(_0x2c95b6[_0x1126('0x78')]){_0x2c95b6[_0x1126('0x78')]=JSON[_0x1126('0x7d')](_0x2c95b6['joins']);for(var _0x4d6528=0x0;_0x4d6528<_0x2c95b6[_0x1126('0x78')][_0x1126('0x44')];_0x4d6528+=0x1){if(_0x2c95b6[_0x1126('0x78')][_0x4d6528][_0x1126('0x2e')]&&_[_0x1126('0x60')](_0x5edb83,_0x2c95b6[_0x1126('0x78')][_0x4d6528]['type'])&&_0x2c95b6['joins'][_0x4d6528][_0x1126('0x79')]&&_0x2c95b6['joins'][_0x4d6528]['foreignTable']&&_0x2c95b6[_0x1126('0x78')][_0x4d6528][_0x1126('0x7b')]){_0x559dae[_0x2c95b6['joins'][_0x4d6528][_0x1126('0x2e')]](_0x2c95b6[_0x1126('0x78')][_0x4d6528][_0x1126('0x7a')],null,util[_0x1126('0x73')]('%s.%s\x20=\x20%s.%s',_0x2c95b6[_0x1126('0x6e')],_0x2c95b6[_0x1126('0x78')][_0x4d6528][_0x1126('0x79')],_0x2c95b6[_0x1126('0x78')][_0x4d6528][_0x1126('0x7a')],_0x2c95b6[_0x1126('0x78')][_0x4d6528][_0x1126('0x7b')]));}}}if(_0x2c95b6['conditions']){_0x2c95b6[_0x1126('0x7c')]=JSON[_0x1126('0x7d')](_0x2c95b6[_0x1126('0x7c')]);_0x559dae[_0x1126('0x39')](_0x4c7dc7(_0x2c95b6['conditions'][_0x1126('0x66')]));}_0x1168a5=_0x559dae[_0x1126('0x8b')]();_0x559dae['limit'](_0x548f9e);_0x559dae[_0x1126('0x1b')](0x0);logger[_0x1126('0xa1')](_0x1126('0x7e'),_0x559dae['toString']());return dbH[_0x1126('0x80')][_0x1126('0x31')](_0x559dae[_0x1126('0x7f')](),{'type':dbH[_0x1126('0x80')][_0x1126('0x81')][_0x1126('0x82')]});}})['then'](function(){return{'sql':_0x1168a5[_0x1126('0x7f')]()};})[_0x1126('0x23')](respondWithResult(_0xa02d9e,null))['catch'](handleError(_0xa02d9e,null));};
\ No newline at end of file
+var _0x53ec=['IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','value','getFields','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','findAll','keyBy','select','from','table','MetricId','metric','function','format','replace','orderBy','DESC','alias','joins','parentKey','foreignTable','%s.%s\x20=\x20%s.%s','conditions','parse','clone','debug','Limited\x20Query:','sequelize','toString','QueryTypes','right_join','SUM(%s)','COUNT(DISTINCT\x20%s)','GROUP_CONCAT(%s)','HOUR(%s)','ROUND(%s)','condition','Sequelize','groupBy','foreignKey','output','fullPath','%s-%s.%s','randomstring','generate','csv','default','AnalyticExtractedReport','cdr','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','Run\x20Query:','child_process','fork','../../files/reports','savename','countTable','COUNT(*)','SELECT','runReport','cross_join','COUNT(%s)','MIN(%s)','ValidationErrorItem','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','ejs','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/license/util','../../mysqldb','dbH','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','get','DefaultReports','UserProfileResource','error','stack','name','send','index','map','rawAttributes','key','model','query','keys','filters','attributes','intersection','fields','length','nolimit','order','sort','where','filter','merge','type','include','AnalyticDefaultReport','params','includeAll','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','catch','preview','join','left_join','MAX(%s)','AVG(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','DATE(%s)','UNIX_TIMESTAMP(%s)','includes'];(function(_0x2a3981,_0x21baad){var _0x57184e=function(_0x2ec56b){while(--_0x2ec56b){_0x2a3981['push'](_0x2a3981['shift']());}};_0x57184e(++_0x21baad);}(_0x53ec,0x192));var _0xc53e=function(_0x13fb4f,_0x42f6af){_0x13fb4f=_0x13fb4f-0x0;var _0x298a4e=_0x53ec[_0x13fb4f];return _0x298a4e;};'use strict';var emlformat=require(_0xc53e('0x0'));var rimraf=require(_0xc53e('0x1'));var zipdir=require(_0xc53e('0x2'));var jsonpatch=require(_0xc53e('0x3'));var rp=require(_0xc53e('0x4'));var moment=require(_0xc53e('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xc53e('0x6'));var util=require('util');var path=require(_0xc53e('0x7'));var sox=require(_0xc53e('0x8'));var csv=require('to-csv');var ejs=require(_0xc53e('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc53e('0xa'));var squel=require(_0xc53e('0xb'));var crypto=require('crypto');var jsforce=require(_0xc53e('0xc'));var deskjs=require(_0xc53e('0xd'));var toCsv=require(_0xc53e('0xe'));var querystring=require(_0xc53e('0xf'));var Papa=require(_0xc53e('0x10'));var Redis=require(_0xc53e('0x11'));var authService=require(_0xc53e('0x12'));var qs=require(_0xc53e('0x13'));var as=require(_0xc53e('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xc53e('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xc53e('0x16'));var db=require(_0xc53e('0x17'))['db'];var dbH=require(_0xc53e('0x17'))[_0xc53e('0x18')];function respondWithStatusCode(_0x56f0e5,_0x4e74c9){_0x4e74c9=_0x4e74c9||0xcc;return function(_0x1c06cd){if(_0x1c06cd){return _0x56f0e5[_0xc53e('0x19')](_0x4e74c9);}return _0x56f0e5[_0xc53e('0x1a')](_0x4e74c9)[_0xc53e('0x1b')]();};}function respondWithResult(_0x358ef3,_0x382e87){_0x382e87=_0x382e87||0xc8;return function(_0x3dc2fa){if(_0x3dc2fa){return _0x358ef3[_0xc53e('0x1a')](_0x382e87)[_0xc53e('0x1c')](_0x3dc2fa);}};}function respondWithFilteredResult(_0x2ad6eb,_0x5b0a88){return function(_0x8a522e){if(_0x8a522e){var _0x191567=typeof _0x5b0a88[_0xc53e('0x1d')]===_0xc53e('0x1e')&&typeof _0x5b0a88[_0xc53e('0x1f')]===_0xc53e('0x1e');var _0x164016=_0x8a522e[_0xc53e('0x20')];var _0x3b550e=_0x191567?0x0:_0x5b0a88['offset'];var _0x546fab=_0x191567?_0x8a522e[_0xc53e('0x20')]:_0x5b0a88[_0xc53e('0x1d')]+_0x5b0a88[_0xc53e('0x1f')];var _0x2e85df;if(_0x546fab>=_0x164016){_0x546fab=_0x164016;_0x2e85df=0xc8;}else{_0x2e85df=0xce;}_0x2ad6eb[_0xc53e('0x1a')](_0x2e85df);return _0x2ad6eb[_0xc53e('0x21')](_0xc53e('0x22'),_0x3b550e+'-'+_0x546fab+'/'+_0x164016)[_0xc53e('0x1c')](_0x8a522e);}return null;};}function patchUpdates(_0x364c80){return function(_0x401af6){try{jsonpatch[_0xc53e('0x23')](_0x401af6,_0x364c80,!![]);}catch(_0x44fd93){return BPromise[_0xc53e('0x24')](_0x44fd93);}return _0x401af6['save']();};}function saveUpdates(_0x47cfdd,_0x531ede){return function(_0x4f4304){if(_0x4f4304){return _0x4f4304[_0xc53e('0x25')](_0x47cfdd)[_0xc53e('0x26')](function(_0x4015c8){return _0x4015c8;});}return null;};}function removeEntity(_0x180811,_0x5009e1){return function(_0x5e5377){if(_0x5e5377){return _0x5e5377[_0xc53e('0x27')]()['then'](function(){var _0x1ae55e=_0x5e5377[_0xc53e('0x28')]({'plain':!![]});var _0x443179=_0xc53e('0x29');return db[_0xc53e('0x2a')]['destroy']({'where':{'type':_0x443179,'resourceId':_0x1ae55e['id']}})[_0xc53e('0x26')](function(){return _0x5e5377;});})['then'](function(){_0x180811['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3c5056,_0x57a1f5){return function(_0x28240a){if(!_0x28240a){_0x3c5056['sendStatus'](0x194);}return _0x28240a;};}function handleError(_0x24a77e,_0x5112d2){_0x5112d2=_0x5112d2||0x1f4;return function(_0x5ce216){logger[_0xc53e('0x2b')](_0x5ce216[_0xc53e('0x2c')]);if(_0x5ce216[_0xc53e('0x2d')]){delete _0x5ce216[_0xc53e('0x2d')];}_0x24a77e[_0xc53e('0x1a')](_0x5112d2)[_0xc53e('0x2e')](_0x5ce216);};}exports[_0xc53e('0x2f')]=function(_0x2a2ca9,_0x4ace0b){var _0x437893={},_0x311835={},_0x2d36c0={'count':0x0,'rows':[]};var _0x56206b=_[_0xc53e('0x30')](db['AnalyticDefaultReport'][_0xc53e('0x31')],function(_0x2467f4){return{'name':_0x2467f4['fieldName'],'type':_0x2467f4['type'][_0xc53e('0x32')]};});_0x311835[_0xc53e('0x33')]=_[_0xc53e('0x30')](_0x56206b,_0xc53e('0x2d'));_0x311835[_0xc53e('0x34')]=_[_0xc53e('0x35')](_0x2a2ca9[_0xc53e('0x34')]);_0x311835[_0xc53e('0x36')]=_['intersection'](_0x311835[_0xc53e('0x33')],_0x311835[_0xc53e('0x34')]);_0x437893[_0xc53e('0x37')]=_[_0xc53e('0x38')](_0x311835[_0xc53e('0x33')],qs[_0xc53e('0x39')](_0x2a2ca9[_0xc53e('0x34')][_0xc53e('0x39')]));_0x437893[_0xc53e('0x37')]=_0x437893['attributes'][_0xc53e('0x3a')]?_0x437893['attributes']:_0x311835[_0xc53e('0x33')];if(!_0x2a2ca9[_0xc53e('0x34')]['hasOwnProperty'](_0xc53e('0x3b'))){_0x437893[_0xc53e('0x1f')]=qs[_0xc53e('0x1f')](_0x2a2ca9['query'][_0xc53e('0x1f')]);_0x437893[_0xc53e('0x1d')]=qs[_0xc53e('0x1d')](_0x2a2ca9[_0xc53e('0x34')][_0xc53e('0x1d')]);}_0x437893[_0xc53e('0x3c')]=qs[_0xc53e('0x3d')](_0x2a2ca9['query'][_0xc53e('0x3d')]);_0x437893[_0xc53e('0x3e')]=qs[_0xc53e('0x36')](_['pick'](_0x2a2ca9[_0xc53e('0x34')],_0x311835['filters']),_0x56206b);if(_0x2a2ca9[_0xc53e('0x34')][_0xc53e('0x3f')]){_0x437893[_0xc53e('0x3e')]=_[_0xc53e('0x40')](_0x437893[_0xc53e('0x3e')],{'$or':_['map'](_0x56206b,function(_0x3dda55){if(_0x3dda55[_0xc53e('0x41')]!=='VIRTUAL'){var _0x5b7354={};_0x5b7354[_0x3dda55['name']]={'$like':'%'+_0x2a2ca9['query'][_0xc53e('0x3f')]+'%'};return _0x5b7354;}})});}_0x437893=_[_0xc53e('0x40')]({},_0x437893,_0x2a2ca9['options']);var _0x460ee6={'where':_0x437893['where']};return db['AnalyticDefaultReport']['count'](_0x460ee6)[_0xc53e('0x26')](function(_0x4ba96f){_0x2d36c0['count']=_0x4ba96f;if(_0x2a2ca9[_0xc53e('0x34')]['includeAll']){_0x437893[_0xc53e('0x42')]=[{'all':!![]}];}return db[_0xc53e('0x43')]['findAll'](_0x437893);})[_0xc53e('0x26')](function(_0x3a4ebc){_0x2d36c0['rows']=_0x3a4ebc;return _0x2d36c0;})[_0xc53e('0x26')](respondWithFilteredResult(_0x4ace0b,_0x437893))['catch'](handleError(_0x4ace0b,null));};exports['show']=function(_0x481e6d,_0x4efee5){var _0x887d78={'raw':!![],'where':{'id':_0x481e6d[_0xc53e('0x44')]['id']}},_0x17b586={};_0x17b586['model']=_[_0xc53e('0x35')](db[_0xc53e('0x43')]['rawAttributes']);_0x17b586['query']=_[_0xc53e('0x35')](_0x481e6d[_0xc53e('0x34')]);_0x17b586[_0xc53e('0x36')]=_['intersection'](_0x17b586[_0xc53e('0x33')],_0x17b586[_0xc53e('0x34')]);_0x887d78[_0xc53e('0x37')]=_[_0xc53e('0x38')](_0x17b586[_0xc53e('0x33')],qs[_0xc53e('0x39')](_0x481e6d[_0xc53e('0x34')]['fields']));_0x887d78[_0xc53e('0x37')]=_0x887d78[_0xc53e('0x37')][_0xc53e('0x3a')]?_0x887d78['attributes']:_0x17b586[_0xc53e('0x33')];if(_0x481e6d[_0xc53e('0x34')][_0xc53e('0x45')]){_0x887d78[_0xc53e('0x42')]=[{'all':!![]}];}_0x887d78=_[_0xc53e('0x40')]({},_0x887d78,_0x481e6d[_0xc53e('0x46')]);return db['AnalyticDefaultReport'][_0xc53e('0x47')](_0x887d78)[_0xc53e('0x26')](handleEntityNotFound(_0x4efee5,null))[_0xc53e('0x26')](respondWithResult(_0x4efee5,null))['catch'](handleError(_0x4efee5,null));};exports[_0xc53e('0x48')]=function(_0x1d2491,_0x1eeb65){return db[_0xc53e('0x43')][_0xc53e('0x48')](_0x1d2491[_0xc53e('0x49')],{})[_0xc53e('0x26')](function(_0x2ba2b4){var _0x34de2d=_0x1d2491[_0xc53e('0x4a')]['get']({'plain':!![]});if(!_0x34de2d)throw new Error(_0xc53e('0x4b'));if(_0x34de2d[_0xc53e('0x4c')]===_0xc53e('0x4a')){var _0x3d74ac=_0x2ba2b4[_0xc53e('0x28')]({'plain':!![]});var _0x52dac7='Reports';return db[_0xc53e('0x4d')]['find']({'where':{'name':_0x52dac7,'userProfileId':_0x34de2d[_0xc53e('0x4e')]},'raw':!![]})['then'](function(_0x3a49a4){if(_0x3a49a4&&_0x3a49a4[_0xc53e('0x4f')]===0x0){return db[_0xc53e('0x2a')]['create']({'name':_0x3d74ac[_0xc53e('0x2d')],'resourceId':_0x3d74ac['id'],'type':_0xc53e('0x29'),'sectionId':_0x3a49a4['id']},{})[_0xc53e('0x26')](function(){return _0x2ba2b4;});}else{return _0x2ba2b4;}})['catch'](function(_0x2f7df2){logger['error'](_0xc53e('0x50'),_0x2f7df2);throw _0x2f7df2;});}return _0x2ba2b4;})[_0xc53e('0x26')](respondWithResult(_0x1eeb65,0xc9))['catch'](handleError(_0x1eeb65,null));};exports[_0xc53e('0x25')]=function(_0x1515ea,_0x5bba72){if(_0x1515ea[_0xc53e('0x49')]['id']){delete _0x1515ea[_0xc53e('0x49')]['id'];}return db[_0xc53e('0x43')][_0xc53e('0x47')]({'where':{'id':_0x1515ea[_0xc53e('0x44')]['id']}})[_0xc53e('0x26')](handleEntityNotFound(_0x5bba72,null))[_0xc53e('0x26')](saveUpdates(_0x1515ea[_0xc53e('0x49')],null))[_0xc53e('0x26')](respondWithResult(_0x5bba72,null))[_0xc53e('0x51')](handleError(_0x5bba72,null));};exports[_0xc53e('0x27')]=function(_0x47dd5a,_0x8364f6){return db['AnalyticDefaultReport'][_0xc53e('0x47')]({'where':{'id':_0x47dd5a['params']['id']}})[_0xc53e('0x26')](handleEntityNotFound(_0x8364f6,null))[_0xc53e('0x26')](removeEntity(_0x8364f6,null))['catch'](handleError(_0x8364f6,null));};exports[_0xc53e('0x52')]=function(_0x7f0bc0,_0x9c0112){var _0x432a91=0xa;var _0x53083b=[_0xc53e('0x53'),_0xc53e('0x54'),'right_join','cross_join'];var _0x3c0aa1={'SUM':'SUM(%s)','COUNT':'COUNT(%s)','COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0xc53e('0x55'),'MIN':'MIN(%s)','AVG':_0xc53e('0x56'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0xc53e('0x57'),'GROUP_CONCAT DESC':_0xc53e('0x58')};var _0x5fcd58={'SEC_TO_TIME':_0xc53e('0x59'),'DATE':_0xc53e('0x5a'),'HOUR':'HOUR(%s)','ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0xc53e('0x5b')};var _0x37b091=function(_0x31e22b){return!_[_0xc53e('0x5c')]([_0xc53e('0x5d'),_0xc53e('0x5e'),_0xc53e('0x5f'),_0xc53e('0x60')],_0x31e22b);};var _0x13bf71=function(_0x16d8a1){if(!_0x16d8a1||!_0x16d8a1[_0xc53e('0x61')][_0xc53e('0x3a')]){return'';}for(var _0xdc0e49='(',_0x520738=0x0;_0x520738<_0x16d8a1[_0xc53e('0x61')]['length'];_0x520738+=0x1){_0x520738>0x0&&(_0xdc0e49+='\x20'+_0x16d8a1[_0xc53e('0x62')]+'\x20');_0xdc0e49+=_0x16d8a1[_0xc53e('0x61')][_0x520738][_0xc53e('0x63')]?_0x13bf71(_0x16d8a1[_0xc53e('0x61')][_0x520738][_0xc53e('0x63')]):_0x16d8a1[_0xc53e('0x61')][_0x520738][_0xc53e('0x64')]+'\x20'+_0x16d8a1[_0xc53e('0x61')][_0x520738]['condition']+(_0x37b091(_0x16d8a1['rules'][_0x520738]['condition'])?'\x20'+_0x16d8a1[_0xc53e('0x61')][_0x520738][_0xc53e('0x65')]:'');}return _0xdc0e49+')';};var _0x37ac78={'where':{'id':_0x7f0bc0['params']['id']}},_0x25e4b6,_0x247d99,_0x160ca3,_0x3581ab,_0x5a9596;_0x37ac78=_['merge']({},_0x37ac78,_0x7f0bc0[_0xc53e('0x46')]);return db[_0xc53e('0x43')]['find'](_0x37ac78)[_0xc53e('0x26')](function(_0x235a6b){if(_0x235a6b){_0x25e4b6=_0x235a6b;return _0x235a6b[_0xc53e('0x66')]();}return null;})[_0xc53e('0x26')](function(_0x22829b){if(_0x22829b){if(!_0x22829b[_0xc53e('0x3a')]){throw new db['Sequelize']['ValidationErrorItem'](_0xc53e('0x67'),0x193);}_0x247d99=_0x22829b;return db[_0xc53e('0x68')][_0xc53e('0x69')]({'raw':!![]});}return null;})[_0xc53e('0x26')](function(_0x29ee08){if(_0x29ee08){_0x160ca3=_[_0xc53e('0x6a')](_0x29ee08,'id');var _0x5a1a4b;var _0x2b6734=squel[_0xc53e('0x6b')]();_0x2b6734[_0xc53e('0x6c')](_0x25e4b6[_0xc53e('0x6d')]);for(var _0x4d2609=0x0;_0x4d2609<_0x247d99[_0xc53e('0x3a')];_0x4d2609+=0x1){_0x5a1a4b=_0x247d99[_0x4d2609][_0xc53e('0x6e')]?_0x160ca3[_0x247d99[_0x4d2609][_0xc53e('0x6e')]][_0xc53e('0x6f')]:_0x247d99[_0x4d2609][_0xc53e('0x64')];_0x5a1a4b=_0x247d99[_0x4d2609][_0xc53e('0x70')]?_['replace'](_0x3c0aa1[_0x247d99[_0x4d2609][_0xc53e('0x70')]],'%s',_0x5a1a4b):_0x5a1a4b;_0x5a1a4b=_0x247d99[_0x4d2609][_0xc53e('0x71')]?_[_0xc53e('0x72')](_0x5fcd58[_0x247d99[_0x4d2609][_0xc53e('0x71')]],'%s',_0x5a1a4b):_0x5a1a4b;if(_0x247d99[_0x4d2609]['groupBy']){_0x2b6734['group'](_0x5a1a4b);}_0x247d99[_0x4d2609][_0xc53e('0x73')]&&_0x2b6734[_0xc53e('0x3c')](_0x5a1a4b,_0x247d99[_0x4d2609][_0xc53e('0x73')]===_0xc53e('0x74')?![]:!![]);_0x2b6734['field'](_0x5a1a4b,_0x247d99[_0x4d2609][_0xc53e('0x75')]||_0x5a1a4b);}if(_0x25e4b6['joins']){_0x25e4b6[_0xc53e('0x76')]=JSON['parse'](_0x25e4b6[_0xc53e('0x76')]);for(var _0x4e128a=0x0;_0x4e128a<_0x25e4b6[_0xc53e('0x76')][_0xc53e('0x3a')];_0x4e128a+=0x1){if(_0x25e4b6['joins'][_0x4e128a][_0xc53e('0x41')]&&_[_0xc53e('0x5c')](_0x53083b,_0x25e4b6['joins'][_0x4e128a]['type'])&&_0x25e4b6[_0xc53e('0x76')][_0x4e128a][_0xc53e('0x77')]&&_0x25e4b6['joins'][_0x4e128a]['foreignTable']&&_0x25e4b6[_0xc53e('0x76')][_0x4e128a]['foreignKey']){_0x2b6734[_0x25e4b6[_0xc53e('0x76')][_0x4e128a]['type']](_0x25e4b6[_0xc53e('0x76')][_0x4e128a][_0xc53e('0x78')],null,util[_0xc53e('0x71')](_0xc53e('0x79'),_0x25e4b6[_0xc53e('0x6d')],_0x25e4b6[_0xc53e('0x76')][_0x4e128a][_0xc53e('0x77')],_0x25e4b6[_0xc53e('0x76')][_0x4e128a][_0xc53e('0x78')],_0x25e4b6[_0xc53e('0x76')][_0x4e128a]['foreignKey']));}}}if(_0x25e4b6[_0xc53e('0x7a')]){_0x25e4b6['conditions']=JSON[_0xc53e('0x7b')](_0x25e4b6[_0xc53e('0x7a')]);_0x2b6734[_0xc53e('0x3e')](_0x13bf71(_0x25e4b6[_0xc53e('0x7a')][_0xc53e('0x63')]));}_0x5a9596=_0x2b6734[_0xc53e('0x7c')]();_0x2b6734[_0xc53e('0x1f')](_0x432a91);_0x2b6734[_0xc53e('0x1d')](0x0);logger[_0xc53e('0x7d')](_0xc53e('0x7e'),_0x2b6734['toString']());return dbH[_0xc53e('0x7f')]['query'](_0x2b6734[_0xc53e('0x80')](),{'type':dbH[_0xc53e('0x7f')][_0xc53e('0x81')]['SELECT']});}})[_0xc53e('0x26')](respondWithResult(_0x9c0112,null))[_0xc53e('0x51')](handleError(_0x9c0112,null));};function runReport(_0x381652,_0xec3738,_0x3a84a2){var _0x508671=_0xec3738[_0xc53e('0x2d')];var _0x48e337=0xa;var _0x56c66f=[_0xc53e('0x53'),_0xc53e('0x54'),_0xc53e('0x82'),'cross_join'];var _0x35b6dc={'SUM':_0xc53e('0x83'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0xc53e('0x84'),'MAX':_0xc53e('0x55'),'MIN':'MIN(%s)','AVG':'AVG(%s)','GROUP_CONCAT':_0xc53e('0x85'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xc53e('0x58')};var _0x3d2636={'SEC_TO_TIME':_0xc53e('0x59'),'DATE':'DATE(%s)','HOUR':_0xc53e('0x86'),'ROUND':_0xc53e('0x87'),'UNIX_TIMESTAMP':_0xc53e('0x5b')};var _0x4c8112=function(_0x1a8ae4){return!_[_0xc53e('0x5c')]([_0xc53e('0x5d'),_0xc53e('0x5e'),_0xc53e('0x5f'),'IS\x20NOT\x20EMPTY'],_0x1a8ae4);};var _0x3dac82=function(_0x325287){if(!_0x325287||!_0x325287[_0xc53e('0x61')][_0xc53e('0x3a')]){return'';}for(var _0xe6a976='(',_0x4102bc=0x0;_0x4102bc<_0x325287[_0xc53e('0x61')][_0xc53e('0x3a')];_0x4102bc+=0x1){_0x4102bc>0x0&&(_0xe6a976+='\x20'+_0x325287[_0xc53e('0x62')]+'\x20');_0xe6a976+=_0x325287['rules'][_0x4102bc][_0xc53e('0x63')]?_0x3dac82(_0x325287[_0xc53e('0x61')][_0x4102bc][_0xc53e('0x63')]):_0x325287[_0xc53e('0x61')][_0x4102bc][_0xc53e('0x64')]+'\x20'+_0x325287[_0xc53e('0x61')][_0x4102bc][_0xc53e('0x88')]+(_0x4c8112(_0x325287[_0xc53e('0x61')][_0x4102bc][_0xc53e('0x88')])?'\x20'+_0x325287['rules'][_0x4102bc][_0xc53e('0x65')]:'');}return _0xe6a976+')';};var _0x190509={'where':{'id':_0x381652['id']}},_0x110e32,_0x2135d4,_0x4bbf8a,_0x31b06d,_0x21fc8d;_0x190509=_[_0xc53e('0x40')]({},_0x190509,_0x3a84a2);return db[_0xc53e('0x43')]['find'](_0x190509)[_0xc53e('0x26')](function(_0x138870){if(_0x138870){_0x110e32=_0x138870;return _0x138870[_0xc53e('0x66')]();}return null;})[_0xc53e('0x26')](function(_0x621e78){if(_0x621e78){if(!_0x621e78[_0xc53e('0x3a')]){throw new db[(_0xc53e('0x89'))]['ValidationErrorItem'](_0xc53e('0x67'),0x193);}_0x2135d4=_0x621e78;return db['AnalyticMetric'][_0xc53e('0x69')]({'raw':!![]});}return null;})[_0xc53e('0x26')](function(_0x3fe278){if(_0x3fe278){_0x4bbf8a=_['keyBy'](_0x3fe278,'id');var _0x7c56eb;var _0x36dffe=squel[_0xc53e('0x6b')]();_0x36dffe['from'](_0x110e32[_0xc53e('0x6d')]);for(var _0xedb93a=0x0;_0xedb93a<_0x2135d4[_0xc53e('0x3a')];_0xedb93a+=0x1){_0x7c56eb=_0x2135d4[_0xedb93a]['MetricId']?_0x4bbf8a[_0x2135d4[_0xedb93a][_0xc53e('0x6e')]][_0xc53e('0x6f')]:_0x2135d4[_0xedb93a][_0xc53e('0x64')];_0x7c56eb=_0x2135d4[_0xedb93a][_0xc53e('0x70')]?_[_0xc53e('0x72')](_0x35b6dc[_0x2135d4[_0xedb93a]['function']],'%s',_0x7c56eb):_0x7c56eb;_0x7c56eb=_0x2135d4[_0xedb93a]['format']?_['replace'](_0x3d2636[_0x2135d4[_0xedb93a][_0xc53e('0x71')]],'%s',_0x7c56eb):_0x7c56eb;if(_0x2135d4[_0xedb93a][_0xc53e('0x8a')]){_0x36dffe[_0xc53e('0x63')](_0x7c56eb);}_0x2135d4[_0xedb93a][_0xc53e('0x73')]&&_0x36dffe['order'](_0x7c56eb,_0x2135d4[_0xedb93a][_0xc53e('0x73')]==='DESC'?![]:!![]);_0x36dffe[_0xc53e('0x64')](_0x7c56eb,_0x2135d4[_0xedb93a][_0xc53e('0x75')]||_0x7c56eb);}if(_0x110e32[_0xc53e('0x76')]){_0x110e32[_0xc53e('0x76')]=JSON['parse'](_0x110e32[_0xc53e('0x76')]);for(var _0xc23eef=0x0;_0xc23eef<_0x110e32[_0xc53e('0x76')][_0xc53e('0x3a')];_0xc23eef+=0x1){if(_0x110e32[_0xc53e('0x76')][_0xc23eef][_0xc53e('0x41')]&&_[_0xc53e('0x5c')](_0x56c66f,_0x110e32[_0xc53e('0x76')][_0xc23eef][_0xc53e('0x41')])&&_0x110e32[_0xc53e('0x76')][_0xc23eef][_0xc53e('0x77')]&&_0x110e32[_0xc53e('0x76')][_0xc23eef][_0xc53e('0x78')]&&_0x110e32[_0xc53e('0x76')][_0xc23eef][_0xc53e('0x8b')]){_0x36dffe[_0x110e32[_0xc53e('0x76')][_0xc23eef][_0xc53e('0x41')]](_0x110e32[_0xc53e('0x76')][_0xc23eef][_0xc53e('0x78')],null,util[_0xc53e('0x71')](_0xc53e('0x79'),_0x110e32[_0xc53e('0x6d')],_0x110e32[_0xc53e('0x76')][_0xc23eef][_0xc53e('0x77')],_0x110e32[_0xc53e('0x76')][_0xc23eef]['foreignTable'],_0x110e32[_0xc53e('0x76')][_0xc23eef]['foreignKey']));}}}if(_0x110e32[_0xc53e('0x7a')]){_0x110e32[_0xc53e('0x7a')]=JSON['parse'](_0x110e32[_0xc53e('0x7a')]);_0x36dffe[_0xc53e('0x3e')](_0x3dac82(_0x110e32[_0xc53e('0x7a')][_0xc53e('0x63')]));}_0x21fc8d=_0x36dffe[_0xc53e('0x7c')]();_0x36dffe[_0xc53e('0x1f')](_0x48e337);_0x36dffe[_0xc53e('0x1d')](0x0);return;}})[_0xc53e('0x26')](function(){if(_0xec3738[_0xc53e('0x8c')]==='web'){return null;}var _0x37c8e6=_['merge'](_0xec3738,{'name':_0xec3738[_0xc53e('0x8d')]||_0xec3738[_0xc53e('0x2d')]||_0x110e32[_0xc53e('0x2d')],'basename':_0x508671,'savename':util[_0xc53e('0x71')](_0xc53e('0x8e'),_0xec3738[_0xc53e('0x2d')]||_0x110e32[_0xc53e('0x2d')],require(_0xc53e('0x8f'))[_0xc53e('0x90')](0x4),_0xec3738[_0xc53e('0x8c')]||_0xc53e('0x91')),'reportId':_0x110e32['id'],'reportType':_0xc53e('0x92')});return db[_0xc53e('0x93')]['create'](_0x37c8e6,{'raw':!![]});})[_0xc53e('0x26')](function(_0x575ef5){if(_0x110e32[_0xc53e('0x6d')]===_0xc53e('0x94')){_0x21fc8d[_0xc53e('0x3e')](_0x110e32[_0xc53e('0x6d')]+'.calldate\x20BETWEEN\x20?\x20AND\x20?',_0xec3738['startDate'],_0xec3738[_0xc53e('0x95')]);}else{_0x21fc8d[_0xc53e('0x3e')](_0x110e32[_0xc53e('0x6d')]+_0xc53e('0x96'),_0xec3738['startDate'],_0xec3738['endDate']);}if(_0x575ef5){logger[_0xc53e('0x97')](_0xc53e('0x98'),_0x21fc8d[_0xc53e('0x80')]());require(_0xc53e('0x99'))[_0xc53e('0x9a')](path[_0xc53e('0x53')](__dirname,'../../components/export/',_0x575ef5[_0xc53e('0x8c')]),[_0x575ef5['id'],_0x21fc8d[_0xc53e('0x80')](),path[_0xc53e('0x53')](__dirname,_0xc53e('0x9b'),_0x575ef5[_0xc53e('0x9c')]),_0x508671]);return _0x575ef5;}else{var _0x4f527e=squel[_0xc53e('0x6b')]();_0x4f527e[_0xc53e('0x6c')]('('+_0x21fc8d[_0xc53e('0x80')]()+')',_0xc53e('0x9d'));_0x4f527e[_0xc53e('0x64')](_0xc53e('0x9e'),_0xc53e('0x20'));_0x21fc8d[_0xc53e('0x1f')](_0xec3738[_0xc53e('0x1f')]||_0x48e337);_0x21fc8d[_0xc53e('0x1d')](_0xec3738[_0xc53e('0x1d')]||0x0);return dbH[_0xc53e('0x7f')][_0xc53e('0x34')](_0x4f527e['toString'](),{'type':dbH[_0xc53e('0x7f')][_0xc53e('0x81')]['SELECT']})[_0xc53e('0x26')](function(_0x4ee56b){if(!_0x4ee56b['length']){_0x31b06d=0x0;}else{_0x31b06d=_0x4ee56b[0x0][_0xc53e('0x20')]||0x0;}return dbH['sequelize'][_0xc53e('0x34')](_0x21fc8d['toString'](),{'type':dbH[_0xc53e('0x7f')]['QueryTypes'][_0xc53e('0x9f')]});})[_0xc53e('0x26')](function(_0x10ad32){return{'rows':_0x10ad32||[],'count':_0x31b06d};});}});}exports['run']=function(_0xf3f34a,_0x5dd87e){return runReport(_0xf3f34a[_0xc53e('0x44')],_0xf3f34a[_0xc53e('0x34')],_0xf3f34a[_0xc53e('0x46')])[_0xc53e('0x26')](respondWithResult(_0x5dd87e,null))[_0xc53e('0x51')](handleError(_0x5dd87e,null));};exports[_0xc53e('0xa0')]=runReport;exports[_0xc53e('0x34')]=function(_0x265292,_0x2c776c){var _0x383f22=0xa;var _0x51f2a4=['join',_0xc53e('0x54'),'right_join',_0xc53e('0xa1')];var _0xbc960={'SUM':_0xc53e('0x83'),'COUNT':_0xc53e('0xa2'),'COUNT DISTINCT':_0xc53e('0x84'),'MAX':_0xc53e('0x55'),'MIN':_0xc53e('0xa3'),'AVG':_0xc53e('0x56'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0xc53e('0x57'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x34cb12={'SEC_TO_TIME':_0xc53e('0x59'),'DATE':_0xc53e('0x5a'),'HOUR':_0xc53e('0x86'),'ROUND':_0xc53e('0x87'),'UNIX_TIMESTAMP':_0xc53e('0x5b')};var _0x227e0c=function(_0x4c0802){return!_[_0xc53e('0x5c')]([_0xc53e('0x5d'),_0xc53e('0x5e'),_0xc53e('0x5f'),_0xc53e('0x60')],_0x4c0802);};var _0x590fb6=function(_0x15d269){if(!_0x15d269||!_0x15d269[_0xc53e('0x61')]['length']){return'';}for(var _0x5253b1='(',_0x208c17=0x0;_0x208c17<_0x15d269['rules'][_0xc53e('0x3a')];_0x208c17+=0x1){_0x208c17>0x0&&(_0x5253b1+='\x20'+_0x15d269[_0xc53e('0x62')]+'\x20');_0x5253b1+=_0x15d269['rules'][_0x208c17]['group']?_0x590fb6(_0x15d269[_0xc53e('0x61')][_0x208c17]['group']):_0x15d269[_0xc53e('0x61')][_0x208c17]['field']+'\x20'+_0x15d269[_0xc53e('0x61')][_0x208c17][_0xc53e('0x88')]+(_0x227e0c(_0x15d269[_0xc53e('0x61')][_0x208c17][_0xc53e('0x88')])?'\x20'+_0x15d269[_0xc53e('0x61')][_0x208c17]['value']:'');}return _0x5253b1+')';};var _0x2f5d22={'where':{'id':_0x265292[_0xc53e('0x44')]['id']}},_0x478e57,_0x5e427a,_0x3e666b,_0x365a98,_0x375d8b;_0x2f5d22=_[_0xc53e('0x40')]({},_0x2f5d22,_0x265292[_0xc53e('0x46')]);return db[_0xc53e('0x43')][_0xc53e('0x47')](_0x2f5d22)[_0xc53e('0x26')](function(_0x3b778b){if(_0x3b778b){_0x478e57=_0x3b778b;return _0x3b778b[_0xc53e('0x66')]();}return null;})[_0xc53e('0x26')](function(_0x55581a){if(_0x55581a){if(!_0x55581a[_0xc53e('0x3a')]){throw new db[(_0xc53e('0x89'))][(_0xc53e('0xa4'))](_0xc53e('0x67'),0x193);}_0x5e427a=_0x55581a;return db[_0xc53e('0x68')]['findAll']({'raw':!![]});}return null;})['then'](function(_0x34c717){if(_0x34c717){_0x3e666b=_[_0xc53e('0x6a')](_0x34c717,'id');var _0x2718fe;var _0x15014e=squel[_0xc53e('0x6b')]();_0x15014e[_0xc53e('0x6c')](_0x478e57[_0xc53e('0x6d')]);for(var _0x2d80f5=0x0;_0x2d80f5<_0x5e427a[_0xc53e('0x3a')];_0x2d80f5+=0x1){_0x2718fe=_0x5e427a[_0x2d80f5][_0xc53e('0x6e')]?_0x3e666b[_0x5e427a[_0x2d80f5][_0xc53e('0x6e')]][_0xc53e('0x6f')]:_0x5e427a[_0x2d80f5][_0xc53e('0x64')];_0x2718fe=_0x5e427a[_0x2d80f5]['function']?_[_0xc53e('0x72')](_0xbc960[_0x5e427a[_0x2d80f5][_0xc53e('0x70')]],'%s',_0x2718fe):_0x2718fe;_0x2718fe=_0x5e427a[_0x2d80f5]['format']?_[_0xc53e('0x72')](_0x34cb12[_0x5e427a[_0x2d80f5][_0xc53e('0x71')]],'%s',_0x2718fe):_0x2718fe;if(_0x5e427a[_0x2d80f5][_0xc53e('0x8a')]){_0x15014e['group'](_0x2718fe);}_0x5e427a[_0x2d80f5]['orderBy']&&_0x15014e[_0xc53e('0x3c')](_0x2718fe,_0x5e427a[_0x2d80f5][_0xc53e('0x73')]===_0xc53e('0x74')?![]:!![]);_0x15014e[_0xc53e('0x64')](_0x2718fe,_0x5e427a[_0x2d80f5]['alias']||_0x2718fe);}if(_0x478e57[_0xc53e('0x76')]){_0x478e57[_0xc53e('0x76')]=JSON[_0xc53e('0x7b')](_0x478e57['joins']);for(var _0x48d301=0x0;_0x48d301<_0x478e57[_0xc53e('0x76')][_0xc53e('0x3a')];_0x48d301+=0x1){if(_0x478e57[_0xc53e('0x76')][_0x48d301]['type']&&_[_0xc53e('0x5c')](_0x51f2a4,_0x478e57[_0xc53e('0x76')][_0x48d301]['type'])&&_0x478e57[_0xc53e('0x76')][_0x48d301][_0xc53e('0x77')]&&_0x478e57[_0xc53e('0x76')][_0x48d301][_0xc53e('0x78')]&&_0x478e57[_0xc53e('0x76')][_0x48d301]['foreignKey']){_0x15014e[_0x478e57[_0xc53e('0x76')][_0x48d301][_0xc53e('0x41')]](_0x478e57[_0xc53e('0x76')][_0x48d301]['foreignTable'],null,util['format'](_0xc53e('0x79'),_0x478e57[_0xc53e('0x6d')],_0x478e57[_0xc53e('0x76')][_0x48d301][_0xc53e('0x77')],_0x478e57[_0xc53e('0x76')][_0x48d301]['foreignTable'],_0x478e57[_0xc53e('0x76')][_0x48d301]['foreignKey']));}}}if(_0x478e57[_0xc53e('0x7a')]){_0x478e57[_0xc53e('0x7a')]=JSON[_0xc53e('0x7b')](_0x478e57[_0xc53e('0x7a')]);_0x15014e[_0xc53e('0x3e')](_0x590fb6(_0x478e57[_0xc53e('0x7a')][_0xc53e('0x63')]));}_0x375d8b=_0x15014e[_0xc53e('0x7c')]();_0x15014e[_0xc53e('0x1f')](_0x383f22);_0x15014e['offset'](0x0);logger[_0xc53e('0x7d')](_0xc53e('0x7e'),_0x15014e[_0xc53e('0x80')]());return dbH[_0xc53e('0x7f')][_0xc53e('0x34')](_0x15014e[_0xc53e('0x80')](),{'type':dbH['sequelize'][_0xc53e('0x81')][_0xc53e('0x9f')]});}})[_0xc53e('0x26')](function(){return{'sql':_0x375d8b[_0xc53e('0x80')]()};})[_0xc53e('0x26')](respondWithResult(_0x2c776c,null))[_0xc53e('0x51')](handleError(_0x2c776c,null));};
\ No newline at end of file
index febacac..edbad79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75d5=['request-promise','../../config/environment','./analyticDefaultReport.attributes','define','AnalyticDefaultReport','analytics_default_reports','lodash','util','api'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x75d5,0xf9));var _0x575d=function(_0x7a4b16,_0x3a59d9){_0x7a4b16=_0x7a4b16-0x0;var _0x493760=_0x75d5[_0x7a4b16];return _0x493760;};'use strict';var _=require(_0x575d('0x0'));var util=require(_0x575d('0x1'));var logger=require('../../config/logger')(_0x575d('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x575d('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x575d('0x4'));var attributes=require(_0x575d('0x5'));module['exports']=function(_0x3f3c20,_0x396310){return _0x3f3c20[_0x575d('0x6')](_0x575d('0x7'),attributes,{'tableName':_0x575d('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x38b5=['request-promise','path','rimraf','../../config/environment','./analyticDefaultReport.attributes','define','analytics_default_reports','lodash','util','../../config/logger','moment','bluebird'];(function(_0x4b2a2e,_0x2e318c){var _0x179549=function(_0x926dd3){while(--_0x926dd3){_0x4b2a2e['push'](_0x4b2a2e['shift']());}};_0x179549(++_0x2e318c);}(_0x38b5,0x8b));var _0x538b=function(_0x255d5b,_0x4f6f35){_0x255d5b=_0x255d5b-0x0;var _0x3e141a=_0x38b5[_0x255d5b];return _0x3e141a;};'use strict';var _=require(_0x538b('0x0'));var util=require(_0x538b('0x1'));var logger=require(_0x538b('0x2'))('api');var moment=require(_0x538b('0x3'));var BPromise=require(_0x538b('0x4'));var rp=require(_0x538b('0x5'));var fs=require('fs');var path=require(_0x538b('0x6'));var rimraf=require(_0x538b('0x7'));var config=require(_0x538b('0x8'));var attributes=require(_0x538b('0x9'));module['exports']=function(_0x566598,_0x1f7e73){return _0x566598[_0x538b('0xa')]('AnalyticDefaultReport',attributes,{'tableName':_0x538b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9e4cb29..17f67a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c1a=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash'];(function(_0x5c2d75,_0x4035fc){var _0x48f399=function(_0x576db0){while(--_0x576db0){_0x5c2d75['push'](_0x5c2d75['shift']());}};_0x48f399(++_0x4035fc);}(_0x7c1a,0x12b));var _0xa7c1=function(_0x464829,_0x83eb3f){_0x464829=_0x464829-0x0;var _0x5af5cb=_0x7c1a[_0x464829];return _0x5af5cb;};'use strict';var _=require(_0xa7c1('0x0'));var util=require('util');var moment=require(_0xa7c1('0x1'));var BPromise=require(_0xa7c1('0x2'));var rs=require(_0xa7c1('0x3'));var fs=require('fs');var Redis=require(_0xa7c1('0x4'));var db=require(_0xa7c1('0x5'))['db'];var utils=require(_0xa7c1('0x6'));var logger=require(_0xa7c1('0x7'))(_0xa7c1('0x8'));var config=require(_0xa7c1('0x9'));var jayson=require(_0xa7c1('0xa'));var client=jayson['client'][_0xa7c1('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5ea665,_0x4d336d,_0x38438d){return new BPromise(function(_0x33d6b4,_0x29442a){return client[_0xa7c1('0xc')](_0x5ea665,_0x38438d)[_0xa7c1('0xd')](function(_0x4eaae5){logger[_0xa7c1('0xe')](_0xa7c1('0xf'),_0x4d336d,_0xa7c1('0x10'));logger[_0xa7c1('0x11')](_0xa7c1('0x12'),_0x4d336d,_0xa7c1('0x10'),JSON[_0xa7c1('0x13')](_0x4eaae5));if(_0x4eaae5[_0xa7c1('0x14')]){if(_0x4eaae5[_0xa7c1('0x14')][_0xa7c1('0x15')]===0x1f4){logger[_0xa7c1('0x14')](_0xa7c1('0xf'),_0x4d336d,_0x4eaae5[_0xa7c1('0x14')][_0xa7c1('0x16')]);return _0x29442a(_0x4eaae5[_0xa7c1('0x14')][_0xa7c1('0x16')]);}logger[_0xa7c1('0x14')](_0xa7c1('0xf'),_0x4d336d,_0x4eaae5[_0xa7c1('0x14')][_0xa7c1('0x16')]);return _0x33d6b4(_0x4eaae5['error'][_0xa7c1('0x16')]);}else{logger['info']('AnalyticDefaultReport,\x20%s,\x20%s',_0x4d336d,_0xa7c1('0x10'));_0x33d6b4(_0x4eaae5[_0xa7c1('0x17')][_0xa7c1('0x16')]);}})[_0xa7c1('0x18')](function(_0x539fb3){logger[_0xa7c1('0x14')](_0xa7c1('0xf'),_0x4d336d,_0x539fb3);_0x29442a(_0x539fb3);});});}
\ No newline at end of file
+var _0xacb8=['util','moment','bluebird','randomstring','../../config/utils','rpc','../../config/environment','client','http','then','info','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash'];(function(_0x2da8e2,_0x2a0674){var _0xe40a39=function(_0x1c4021){while(--_0x1c4021){_0x2da8e2['push'](_0x2da8e2['shift']());}};_0xe40a39(++_0x2a0674);}(_0xacb8,0x164));var _0x8acb=function(_0x1b65fa,_0x525365){_0x1b65fa=_0x1b65fa-0x0;var _0x2e3e6b=_0xacb8[_0x1b65fa];return _0x2e3e6b;};'use strict';var _=require(_0x8acb('0x0'));var util=require(_0x8acb('0x1'));var moment=require(_0x8acb('0x2'));var BPromise=require(_0x8acb('0x3'));var rs=require(_0x8acb('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x8acb('0x5'));var logger=require('../../config/logger')(_0x8acb('0x6'));var config=require(_0x8acb('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x8acb('0x8')][_0x8acb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x314466,_0x58a4a2,_0x179602){return new BPromise(function(_0x15ab7b,_0x45c84f){return client['request'](_0x314466,_0x179602)[_0x8acb('0xa')](function(_0x3ad5ea){logger[_0x8acb('0xb')](_0x8acb('0xc'),_0x58a4a2,_0x8acb('0xd'));logger['debug'](_0x8acb('0xe'),_0x58a4a2,_0x8acb('0xd'),JSON[_0x8acb('0xf')](_0x3ad5ea));if(_0x3ad5ea[_0x8acb('0x10')]){if(_0x3ad5ea[_0x8acb('0x10')][_0x8acb('0x11')]===0x1f4){logger[_0x8acb('0x10')](_0x8acb('0xc'),_0x58a4a2,_0x3ad5ea[_0x8acb('0x10')][_0x8acb('0x12')]);return _0x45c84f(_0x3ad5ea[_0x8acb('0x10')]['message']);}logger[_0x8acb('0x10')](_0x8acb('0xc'),_0x58a4a2,_0x3ad5ea[_0x8acb('0x10')][_0x8acb('0x12')]);return _0x15ab7b(_0x3ad5ea[_0x8acb('0x10')]['message']);}else{logger[_0x8acb('0xb')](_0x8acb('0xc'),_0x58a4a2,_0x8acb('0xd'));_0x15ab7b(_0x3ad5ea[_0x8acb('0x13')][_0x8acb('0x12')]);}})[_0x8acb('0x14')](function(_0x575e55){logger['error'](_0x8acb('0xc'),_0x58a4a2,_0x575e55);_0x45c84f(_0x575e55);});});}
\ No newline at end of file
index c603112..10f7085 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c41=['../../components/interaction/service','../../config/environment','./analyticDefaultReport.controller','get','isAuthenticated','/:id','show','/:id/preview','preview','/:id/run','run','/:id/query','query','post','put','update','delete','destroy','exports','multer','path','connect-timeout','express'];(function(_0x17d831,_0x2bacc7){var _0x13250d=function(_0x3fe6c7){while(--_0x3fe6c7){_0x17d831['push'](_0x17d831['shift']());}};_0x13250d(++_0x2bacc7);}(_0x0c41,0xf9));var _0x10c4=function(_0xbc9a72,_0x230dc8){_0xbc9a72=_0xbc9a72-0x0;var _0x959761=_0x0c41[_0xbc9a72];return _0x959761;};'use strict';var multer=require(_0x10c4('0x0'));var util=require('util');var path=require(_0x10c4('0x1'));var timeout=require(_0x10c4('0x2'));var express=require(_0x10c4('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x10c4('0x4'));var config=require(_0x10c4('0x5'));var controller=require(_0x10c4('0x6'));router[_0x10c4('0x7')]('/',auth[_0x10c4('0x8')](),controller['index']);router[_0x10c4('0x7')](_0x10c4('0x9'),auth[_0x10c4('0x8')](),controller[_0x10c4('0xa')]);router[_0x10c4('0x7')](_0x10c4('0xb'),auth[_0x10c4('0x8')](),controller[_0x10c4('0xc')]);router['get'](_0x10c4('0xd'),auth[_0x10c4('0x8')](),controller[_0x10c4('0xe')]);router[_0x10c4('0x7')](_0x10c4('0xf'),auth[_0x10c4('0x8')](),controller[_0x10c4('0x10')]);router[_0x10c4('0x11')]('/',auth[_0x10c4('0x8')](),controller['create']);router[_0x10c4('0x12')](_0x10c4('0x9'),auth[_0x10c4('0x8')](),controller[_0x10c4('0x13')]);router[_0x10c4('0x14')](_0x10c4('0x9'),auth[_0x10c4('0x8')](),controller[_0x10c4('0x15')]);module[_0x10c4('0x16')]=router;
\ No newline at end of file
+var _0xf501=['/:id/run','/:id/query','query','put','update','/:id','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./analyticDefaultReport.controller','get','isAuthenticated','index','show','preview'];(function(_0x4945a7,_0x5e2a23){var _0x25f6ca=function(_0x5db467){while(--_0x5db467){_0x4945a7['push'](_0x4945a7['shift']());}};_0x25f6ca(++_0x5e2a23);}(_0xf501,0xcd));var _0x1f50=function(_0x16b1be,_0x591490){_0x16b1be=_0x16b1be-0x0;var _0x515803=_0xf501[_0x16b1be];return _0x515803;};'use strict';var multer=require(_0x1f50('0x0'));var util=require(_0x1f50('0x1'));var path=require(_0x1f50('0x2'));var timeout=require(_0x1f50('0x3'));var express=require(_0x1f50('0x4'));var router=express[_0x1f50('0x5')]();var fs_extra=require(_0x1f50('0x6'));var auth=require(_0x1f50('0x7'));var interaction=require(_0x1f50('0x8'));var config=require('../../config/environment');var controller=require(_0x1f50('0x9'));router[_0x1f50('0xa')]('/',auth[_0x1f50('0xb')](),controller[_0x1f50('0xc')]);router[_0x1f50('0xa')]('/:id',auth[_0x1f50('0xb')](),controller[_0x1f50('0xd')]);router['get']('/:id/preview',auth[_0x1f50('0xb')](),controller[_0x1f50('0xe')]);router[_0x1f50('0xa')](_0x1f50('0xf'),auth[_0x1f50('0xb')](),controller['run']);router[_0x1f50('0xa')](_0x1f50('0x10'),auth[_0x1f50('0xb')](),controller[_0x1f50('0x11')]);router['post']('/',auth[_0x1f50('0xb')](),controller['create']);router[_0x1f50('0x12')]('/:id',auth[_0x1f50('0xb')](),controller[_0x1f50('0x13')]);router['delete'](_0x1f50('0x14'),auth[_0x1f50('0xb')](),controller['destroy']);module[_0x1f50('0x15')]=router;
\ No newline at end of file
index c05ed3b..be0bee5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3df=['csv','pdf','DATE','Loading','manual','UNSIGNED','sequelize','STRING'];(function(_0x6f3151,_0x406745){var _0x305fb8=function(_0x24e5a8){while(--_0x24e5a8){_0x6f3151['push'](_0x6f3151['shift']());}};_0x305fb8(++_0x406745);}(_0xa3df,0x186));var _0xfa3d=function(_0x38a7ac,_0x45514b){_0x38a7ac=_0x38a7ac-0x0;var _0x53061a=_0xa3df[_0x38a7ac];return _0x53061a;};'use strict';var Sequelize=require(_0xfa3d('0x0'));var moment=require('moment');module['exports']={'name':{'type':Sequelize[_0xfa3d('0x1')],'allowNull':![]},'basename':{'type':Sequelize[_0xfa3d('0x1')],'allowNull':![]},'output':{'type':Sequelize['ENUM'](_0xfa3d('0x2'),_0xfa3d('0x3'),'xlsx'),'allowNull':![],'defaultValue':_0xfa3d('0x2')},'savename':{'type':Sequelize[_0xfa3d('0x1')],'allowNull':![]},'startDate':{'type':Sequelize[_0xfa3d('0x4')]},'endDate':{'type':Sequelize[_0xfa3d('0x4')]},'status':{'type':Sequelize[_0xfa3d('0x1')],'defaultValue':_0xfa3d('0x5')},'type':{'type':Sequelize['ENUM'](_0xfa3d('0x6'),'scheduled'),'allowNull':![],'defaultValue':'manual'},'reportId':{'type':Sequelize['INTEGER'](0xb)[_0xfa3d('0x7')]},'reportType':{'type':Sequelize[_0xfa3d('0x1')]}};
\ No newline at end of file
+var _0x0dc4=['xlsx','DATE','Loading','INTEGER','UNSIGNED','sequelize','moment','exports','STRING','ENUM','csv','pdf'];(function(_0x4387b6,_0x4e6f20){var _0x2184e4=function(_0x5f32d4){while(--_0x5f32d4){_0x4387b6['push'](_0x4387b6['shift']());}};_0x2184e4(++_0x4e6f20);}(_0x0dc4,0x65));var _0x40dc=function(_0x43fdf8,_0x8426b3){_0x43fdf8=_0x43fdf8-0x0;var _0x1160c6=_0x0dc4[_0x43fdf8];return _0x1160c6;};'use strict';var Sequelize=require(_0x40dc('0x0'));var moment=require(_0x40dc('0x1'));module[_0x40dc('0x2')]={'name':{'type':Sequelize[_0x40dc('0x3')],'allowNull':![]},'basename':{'type':Sequelize[_0x40dc('0x3')],'allowNull':![]},'output':{'type':Sequelize[_0x40dc('0x4')](_0x40dc('0x5'),_0x40dc('0x6'),_0x40dc('0x7')),'allowNull':![],'defaultValue':'csv'},'savename':{'type':Sequelize[_0x40dc('0x3')],'allowNull':![]},'startDate':{'type':Sequelize[_0x40dc('0x8')]},'endDate':{'type':Sequelize[_0x40dc('0x8')]},'status':{'type':Sequelize[_0x40dc('0x3')],'defaultValue':_0x40dc('0x9')},'type':{'type':Sequelize[_0x40dc('0x4')]('manual','scheduled'),'allowNull':![],'defaultValue':'manual'},'reportId':{'type':Sequelize[_0x40dc('0xa')](0xb)[_0x40dc('0xb')]},'reportType':{'type':Sequelize[_0x40dc('0x3')]}};
\ No newline at end of file
index 5605148..b9a35cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcde9=['exists','format','%s.%s','toLowerCase','fast-json-patch','request-promise','bluebird','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','sendStatus','status','end','offset','undefined','count','limit','Content-Range','json','apply','reject','save','update','then','destroy','get','ExtractedReports','UserProfileResource','error','name','index','rawAttributes','fieldName','type','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','AnalyticExtractedReport','rows','keys','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','download','basename','savename','output','existsSync','join','root','server/files/reports','Sequelize','ValidationError','Report\x20not\x20found\x20or\x20empty'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xcde9,0x174));var _0x9cde=function(_0xde1fd1,_0x1691fb){_0xde1fd1=_0xde1fd1-0x0;var _0x13e1cc=_0xcde9[_0xde1fd1];return _0x13e1cc;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x9cde('0x0'));var rp=require(_0x9cde('0x1'));var moment=require('moment');var BPromise=require(_0x9cde('0x2'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x9cde('0x3'));var csv=require(_0x9cde('0x4'));var ejs=require(_0x9cde('0x5'));var fs=require('fs');var fs_extra=require(_0x9cde('0x6'));var _=require(_0x9cde('0x7'));var squel=require(_0x9cde('0x8'));var crypto=require('crypto');var jsforce=require(_0x9cde('0x9'));var deskjs=require('desk.js');var toCsv=require(_0x9cde('0x4'));var querystring=require(_0x9cde('0xa'));var Papa=require(_0x9cde('0xb'));var Redis=require(_0x9cde('0xc'));var authService=require('../../components/auth/service');var qs=require(_0x9cde('0xd'));var as=require(_0x9cde('0xe'));var hardwareService=require(_0x9cde('0xf'));var logger=require(_0x9cde('0x10'))('api');var utils=require('../../config/utils');var config=require(_0x9cde('0x11'));var licenseUtil=require(_0x9cde('0x12'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xff67a2,_0x2c10f){_0x2c10f=_0x2c10f||0xcc;return function(_0x553b65){if(_0x553b65){return _0xff67a2[_0x9cde('0x13')](_0x2c10f);}return _0xff67a2[_0x9cde('0x14')](_0x2c10f)[_0x9cde('0x15')]();};}function respondWithResult(_0x17a27e,_0x1ebe2a){_0x1ebe2a=_0x1ebe2a||0xc8;return function(_0x2fd47c){if(_0x2fd47c){return _0x17a27e[_0x9cde('0x14')](_0x1ebe2a)['json'](_0x2fd47c);}};}function respondWithFilteredResult(_0x4a3aaa,_0x17fc5e){return function(_0x25fdd9){if(_0x25fdd9){var _0x4282ee=typeof _0x17fc5e[_0x9cde('0x16')]===_0x9cde('0x17')&&typeof _0x17fc5e['limit']===_0x9cde('0x17');var _0x8ff624=_0x25fdd9[_0x9cde('0x18')];var _0x467750=_0x4282ee?0x0:_0x17fc5e[_0x9cde('0x16')];var _0x1d2d9d=_0x4282ee?_0x25fdd9[_0x9cde('0x18')]:_0x17fc5e[_0x9cde('0x16')]+_0x17fc5e[_0x9cde('0x19')];var _0x41882b;if(_0x1d2d9d>=_0x8ff624){_0x1d2d9d=_0x8ff624;_0x41882b=0xc8;}else{_0x41882b=0xce;}_0x4a3aaa[_0x9cde('0x14')](_0x41882b);return _0x4a3aaa['set'](_0x9cde('0x1a'),_0x467750+'-'+_0x1d2d9d+'/'+_0x8ff624)[_0x9cde('0x1b')](_0x25fdd9);}return null;};}function patchUpdates(_0x533a3c){return function(_0x72bf4a){try{jsonpatch[_0x9cde('0x1c')](_0x72bf4a,_0x533a3c,!![]);}catch(_0x3d19df){return BPromise[_0x9cde('0x1d')](_0x3d19df);}return _0x72bf4a[_0x9cde('0x1e')]();};}function saveUpdates(_0x24930f,_0x5cb8d1){return function(_0x2eb09c){if(_0x2eb09c){return _0x2eb09c[_0x9cde('0x1f')](_0x24930f)[_0x9cde('0x20')](function(_0x20da74){return _0x20da74;});}return null;};}function removeEntity(_0x7168e8,_0x22607d){return function(_0x1dffd2){if(_0x1dffd2){return _0x1dffd2[_0x9cde('0x21')]()[_0x9cde('0x20')](function(){var _0x4e1465=_0x1dffd2[_0x9cde('0x22')]({'plain':!![]});var _0x3f552a=_0x9cde('0x23');return db[_0x9cde('0x24')][_0x9cde('0x21')]({'where':{'type':_0x3f552a,'resourceId':_0x4e1465['id']}})['then'](function(){return _0x1dffd2;});})[_0x9cde('0x20')](function(){_0x7168e8[_0x9cde('0x14')](0xcc)[_0x9cde('0x15')]();});}};}function handleEntityNotFound(_0xf78003,_0x5c0ccd){return function(_0x28b5ad){if(!_0x28b5ad){_0xf78003['sendStatus'](0x194);}return _0x28b5ad;};}function handleError(_0x311945,_0x4c0f86){_0x4c0f86=_0x4c0f86||0x1f4;return function(_0x19bb7b){logger[_0x9cde('0x25')](_0x19bb7b['stack']);if(_0x19bb7b['name']){delete _0x19bb7b[_0x9cde('0x26')];}_0x311945['status'](_0x4c0f86)['send'](_0x19bb7b);};}exports[_0x9cde('0x27')]=function(_0x509557,_0x57782f){var _0x4e63d8={},_0x1fd26e={},_0x34f1f6={'count':0x0,'rows':[]};var _0x4b0d77=_['map'](db['AnalyticExtractedReport'][_0x9cde('0x28')],function(_0x3aff97){return{'name':_0x3aff97[_0x9cde('0x29')],'type':_0x3aff97[_0x9cde('0x2a')]['key']};});_0x1fd26e[_0x9cde('0x2b')]=_[_0x9cde('0x2c')](_0x4b0d77,_0x9cde('0x26'));_0x1fd26e[_0x9cde('0x2d')]=_['keys'](_0x509557[_0x9cde('0x2d')]);_0x1fd26e[_0x9cde('0x2e')]=_[_0x9cde('0x2f')](_0x1fd26e[_0x9cde('0x2b')],_0x1fd26e['query']);_0x4e63d8[_0x9cde('0x30')]=_[_0x9cde('0x2f')](_0x1fd26e[_0x9cde('0x2b')],qs[_0x9cde('0x31')](_0x509557[_0x9cde('0x2d')][_0x9cde('0x31')]));_0x4e63d8[_0x9cde('0x30')]=_0x4e63d8['attributes'][_0x9cde('0x32')]?_0x4e63d8[_0x9cde('0x30')]:_0x1fd26e['model'];if(!_0x509557[_0x9cde('0x2d')][_0x9cde('0x33')](_0x9cde('0x34'))){_0x4e63d8[_0x9cde('0x19')]=qs[_0x9cde('0x19')](_0x509557[_0x9cde('0x2d')][_0x9cde('0x19')]);_0x4e63d8[_0x9cde('0x16')]=qs[_0x9cde('0x16')](_0x509557[_0x9cde('0x2d')][_0x9cde('0x16')]);}_0x4e63d8['order']=qs[_0x9cde('0x35')](_0x509557[_0x9cde('0x2d')][_0x9cde('0x35')]);_0x4e63d8[_0x9cde('0x36')]=qs[_0x9cde('0x2e')](_[_0x9cde('0x37')](_0x509557['query'],_0x1fd26e[_0x9cde('0x2e')]),_0x4b0d77);if(_0x509557[_0x9cde('0x2d')][_0x9cde('0x38')]){_0x4e63d8[_0x9cde('0x36')]=_[_0x9cde('0x39')](_0x4e63d8[_0x9cde('0x36')],{'$or':_['map'](_0x4b0d77,function(_0x307be7){if(_0x307be7['type']!==_0x9cde('0x3a')){var _0x6e441d={};_0x6e441d[_0x307be7[_0x9cde('0x26')]]={'$like':'%'+_0x509557[_0x9cde('0x2d')][_0x9cde('0x38')]+'%'};return _0x6e441d;}})});}_0x4e63d8=_[_0x9cde('0x39')]({},_0x4e63d8,_0x509557[_0x9cde('0x3b')]);var _0x2ffb09={'where':_0x4e63d8[_0x9cde('0x36')]};return db['AnalyticExtractedReport']['count'](_0x2ffb09)[_0x9cde('0x20')](function(_0x3cfdd8){_0x34f1f6[_0x9cde('0x18')]=_0x3cfdd8;if(_0x509557[_0x9cde('0x2d')][_0x9cde('0x3c')]){_0x4e63d8[_0x9cde('0x3d')]=[{'all':!![]}];}return db[_0x9cde('0x3e')]['findAll'](_0x4e63d8);})[_0x9cde('0x20')](function(_0x462973){_0x34f1f6[_0x9cde('0x3f')]=_0x462973;return _0x34f1f6;})['then'](respondWithFilteredResult(_0x57782f,_0x4e63d8))['catch'](handleError(_0x57782f,null));};exports['show']=function(_0x42a722,_0x5ed745){var _0x1febc6={'raw':!![],'where':{'id':_0x42a722['params']['id']}},_0x756789={};_0x756789[_0x9cde('0x2b')]=_['keys'](db[_0x9cde('0x3e')][_0x9cde('0x28')]);_0x756789['query']=_[_0x9cde('0x40')](_0x42a722[_0x9cde('0x2d')]);_0x756789[_0x9cde('0x2e')]=_[_0x9cde('0x2f')](_0x756789[_0x9cde('0x2b')],_0x756789[_0x9cde('0x2d')]);_0x1febc6[_0x9cde('0x30')]=_[_0x9cde('0x2f')](_0x756789[_0x9cde('0x2b')],qs['fields'](_0x42a722[_0x9cde('0x2d')][_0x9cde('0x31')]));_0x1febc6[_0x9cde('0x30')]=_0x1febc6[_0x9cde('0x30')][_0x9cde('0x32')]?_0x1febc6[_0x9cde('0x30')]:_0x756789[_0x9cde('0x2b')];if(_0x42a722['query'][_0x9cde('0x3c')]){_0x1febc6[_0x9cde('0x3d')]=[{'all':!![]}];}_0x1febc6=_[_0x9cde('0x39')]({},_0x1febc6,_0x42a722[_0x9cde('0x3b')]);return db[_0x9cde('0x3e')][_0x9cde('0x41')](_0x1febc6)[_0x9cde('0x20')](handleEntityNotFound(_0x5ed745,null))[_0x9cde('0x20')](respondWithResult(_0x5ed745,null))['catch'](handleError(_0x5ed745,null));};exports[_0x9cde('0x42')]=function(_0x16d9a8,_0x448dcc){return db['AnalyticExtractedReport'][_0x9cde('0x42')](_0x16d9a8[_0x9cde('0x43')],{})[_0x9cde('0x20')](function(_0x507e1d){var _0x524ebd=_0x16d9a8[_0x9cde('0x44')]['get']({'plain':!![]});if(!_0x524ebd)throw new Error(_0x9cde('0x45'));if(_0x524ebd[_0x9cde('0x46')]==='user'){var _0x2aaba1=_0x507e1d[_0x9cde('0x22')]({'plain':!![]});var _0x5604c7=_0x9cde('0x23');return db[_0x9cde('0x47')]['find']({'where':{'name':_0x5604c7,'userProfileId':_0x524ebd[_0x9cde('0x48')]},'raw':!![]})[_0x9cde('0x20')](function(_0xba84a3){if(_0xba84a3&&_0xba84a3[_0x9cde('0x49')]===0x0){return db['UserProfileResource']['create']({'name':_0x2aaba1[_0x9cde('0x26')],'resourceId':_0x2aaba1['id'],'type':_0xba84a3[_0x9cde('0x26')],'sectionId':_0xba84a3['id']},{})[_0x9cde('0x20')](function(){return _0x507e1d;});}else{return _0x507e1d;}})[_0x9cde('0x4a')](function(_0x1b92b9){logger[_0x9cde('0x25')](_0x9cde('0x4b'),_0x1b92b9);throw _0x1b92b9;});}return _0x507e1d;})[_0x9cde('0x20')](respondWithResult(_0x448dcc,0xc9))[_0x9cde('0x4a')](handleError(_0x448dcc,null));};exports[_0x9cde('0x1f')]=function(_0x5275e0,_0x5aba69){if(_0x5275e0[_0x9cde('0x43')]['id']){delete _0x5275e0[_0x9cde('0x43')]['id'];}return db[_0x9cde('0x3e')]['find']({'where':{'id':_0x5275e0['params']['id']}})[_0x9cde('0x20')](handleEntityNotFound(_0x5aba69,null))[_0x9cde('0x20')](saveUpdates(_0x5275e0['body'],null))['then'](respondWithResult(_0x5aba69,null))[_0x9cde('0x4a')](handleError(_0x5aba69,null));};exports[_0x9cde('0x21')]=function(_0x31ae59,_0x3d0fdd){return db[_0x9cde('0x3e')][_0x9cde('0x41')]({'where':{'id':_0x31ae59[_0x9cde('0x4c')]['id']}})[_0x9cde('0x20')](handleEntityNotFound(_0x3d0fdd,null))[_0x9cde('0x20')](removeEntity(_0x3d0fdd,null))[_0x9cde('0x4a')](handleError(_0x3d0fdd,null));};exports[_0x9cde('0x4d')]=function(_0x42b5a5,_0x55e5e2,_0xcbc4c4){return db['AnalyticExtractedReport'][_0x9cde('0x41')]({'where':{'id':_0x42b5a5[_0x9cde('0x4c')]['id']},'attributes':[_0x9cde('0x26'),_0x9cde('0x4e'),_0x9cde('0x4f'),_0x9cde('0x50')],'raw':!![]})[_0x9cde('0x20')](handleEntityNotFound(_0x55e5e2,null))[_0x9cde('0x20')](function(_0x285c57){if(_0x285c57){if(!fs[_0x9cde('0x51')](path[_0x9cde('0x52')](config[_0x9cde('0x53')],_0x9cde('0x54'),_0x285c57['savename']))){throw new db[(_0x9cde('0x55'))][(_0x9cde('0x56'))](_0x9cde('0x57'));}if(_0x42b5a5['query'][_0x9cde('0x58')]){return _0x55e5e2[_0x9cde('0x13')](0xc8);}return _0x55e5e2[_0x9cde('0x4d')](path[_0x9cde('0x52')](config[_0x9cde('0x53')],'server/files/reports',_0x285c57['savename']),util[_0x9cde('0x59')](_0x9cde('0x5a'),_0x285c57[_0x9cde('0x4e')]||_0x285c57[_0x9cde('0x26')],_0x285c57['output'][_0x9cde('0x5b')]()));}})[_0x9cde('0x4a')](handleError(_0x55e5e2,null));};
\ No newline at end of file
+var _0x8280=['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','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','ExtractedReports','end','error','name','send','index','map','AnalyticExtractedReport','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','options','include','findAll','rows','show','params','includeAll','find','create','body','user','get','userProfileId','autoAssociation','UserProfileResource','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','download','basename','savename','output','existsSync','join','root','Sequelize','Report\x20not\x20found\x20or\x20empty','server/files/reports','format','eml-format','zip-dir','moment','util'];(function(_0x2f407d,_0x5f15ec){var _0x3e9c1f=function(_0x1ea395){while(--_0x1ea395){_0x2f407d['push'](_0x2f407d['shift']());}};_0x3e9c1f(++_0x5f15ec);}(_0x8280,0x164));var _0x0828=function(_0x162f05,_0x328e0f){_0x162f05=_0x162f05-0x0;var _0x54f59a=_0x8280[_0x162f05];return _0x54f59a;};'use strict';var emlformat=require(_0x0828('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0828('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0828('0x2'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x0828('0x3'));var path=require('path');var sox=require(_0x0828('0x4'));var csv=require(_0x0828('0x5'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0828('0x6'));var _=require(_0x0828('0x7'));var squel=require(_0x0828('0x8'));var crypto=require(_0x0828('0x9'));var jsforce=require(_0x0828('0xa'));var deskjs=require(_0x0828('0xb'));var toCsv=require(_0x0828('0x5'));var querystring=require(_0x0828('0xc'));var Papa=require(_0x0828('0xd'));var Redis=require(_0x0828('0xe'));var authService=require(_0x0828('0xf'));var qs=require(_0x0828('0x10'));var as=require(_0x0828('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0828('0x12'))('api');var utils=require(_0x0828('0x13'));var config=require(_0x0828('0x14'));var licenseUtil=require(_0x0828('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5bbf1a,_0x5015a1){_0x5015a1=_0x5015a1||0xcc;return function(_0x441637){if(_0x441637){return _0x5bbf1a[_0x0828('0x16')](_0x5015a1);}return _0x5bbf1a[_0x0828('0x17')](_0x5015a1)['end']();};}function respondWithResult(_0x2ebd57,_0x111ce8){_0x111ce8=_0x111ce8||0xc8;return function(_0x2072da){if(_0x2072da){return _0x2ebd57[_0x0828('0x17')](_0x111ce8)[_0x0828('0x18')](_0x2072da);}};}function respondWithFilteredResult(_0x2b902c,_0x5bf637){return function(_0x4e10b8){if(_0x4e10b8){var _0x40baf7=typeof _0x5bf637[_0x0828('0x19')]===_0x0828('0x1a')&&typeof _0x5bf637[_0x0828('0x1b')]==='undefined';var _0x482909=_0x4e10b8[_0x0828('0x1c')];var _0x42b467=_0x40baf7?0x0:_0x5bf637[_0x0828('0x19')];var _0x229e4e=_0x40baf7?_0x4e10b8[_0x0828('0x1c')]:_0x5bf637[_0x0828('0x19')]+_0x5bf637[_0x0828('0x1b')];var _0x2cb978;if(_0x229e4e>=_0x482909){_0x229e4e=_0x482909;_0x2cb978=0xc8;}else{_0x2cb978=0xce;}_0x2b902c[_0x0828('0x17')](_0x2cb978);return _0x2b902c['set'](_0x0828('0x1d'),_0x42b467+'-'+_0x229e4e+'/'+_0x482909)[_0x0828('0x18')](_0x4e10b8);}return null;};}function patchUpdates(_0x4b2221){return function(_0x16d906){try{jsonpatch[_0x0828('0x1e')](_0x16d906,_0x4b2221,!![]);}catch(_0x1c75e9){return BPromise[_0x0828('0x1f')](_0x1c75e9);}return _0x16d906[_0x0828('0x20')]();};}function saveUpdates(_0x54f2c2,_0x48215e){return function(_0x35923b){if(_0x35923b){return _0x35923b[_0x0828('0x21')](_0x54f2c2)[_0x0828('0x22')](function(_0x19aadf){return _0x19aadf;});}return null;};}function removeEntity(_0x263354,_0x2fbef5){return function(_0x3dcefe){if(_0x3dcefe){return _0x3dcefe[_0x0828('0x23')]()[_0x0828('0x22')](function(){var _0x1461c9=_0x3dcefe['get']({'plain':!![]});var _0x254e42=_0x0828('0x24');return db['UserProfileResource']['destroy']({'where':{'type':_0x254e42,'resourceId':_0x1461c9['id']}})[_0x0828('0x22')](function(){return _0x3dcefe;});})['then'](function(){_0x263354[_0x0828('0x17')](0xcc)[_0x0828('0x25')]();});}};}function handleEntityNotFound(_0x45be83,_0x5cab7b){return function(_0x4b064d){if(!_0x4b064d){_0x45be83[_0x0828('0x16')](0x194);}return _0x4b064d;};}function handleError(_0x507382,_0x33362d){_0x33362d=_0x33362d||0x1f4;return function(_0x20babc){logger[_0x0828('0x26')](_0x20babc['stack']);if(_0x20babc[_0x0828('0x27')]){delete _0x20babc['name'];}_0x507382[_0x0828('0x17')](_0x33362d)[_0x0828('0x28')](_0x20babc);};}exports[_0x0828('0x29')]=function(_0xa79a3d,_0x4b3556){var _0x10aa4f={},_0x256df6={},_0x4eb422={'count':0x0,'rows':[]};var _0x33f34f=_[_0x0828('0x2a')](db[_0x0828('0x2b')][_0x0828('0x2c')],function(_0xeb7632){return{'name':_0xeb7632[_0x0828('0x2d')],'type':_0xeb7632[_0x0828('0x2e')]['key']};});_0x256df6[_0x0828('0x2f')]=_[_0x0828('0x2a')](_0x33f34f,_0x0828('0x27'));_0x256df6[_0x0828('0x30')]=_[_0x0828('0x31')](_0xa79a3d['query']);_0x256df6[_0x0828('0x32')]=_[_0x0828('0x33')](_0x256df6[_0x0828('0x2f')],_0x256df6[_0x0828('0x30')]);_0x10aa4f['attributes']=_[_0x0828('0x33')](_0x256df6[_0x0828('0x2f')],qs[_0x0828('0x34')](_0xa79a3d[_0x0828('0x30')][_0x0828('0x34')]));_0x10aa4f['attributes']=_0x10aa4f[_0x0828('0x35')][_0x0828('0x36')]?_0x10aa4f[_0x0828('0x35')]:_0x256df6[_0x0828('0x2f')];if(!_0xa79a3d[_0x0828('0x30')]['hasOwnProperty'](_0x0828('0x37'))){_0x10aa4f[_0x0828('0x1b')]=qs[_0x0828('0x1b')](_0xa79a3d[_0x0828('0x30')][_0x0828('0x1b')]);_0x10aa4f[_0x0828('0x19')]=qs[_0x0828('0x19')](_0xa79a3d[_0x0828('0x30')]['offset']);}_0x10aa4f[_0x0828('0x38')]=qs[_0x0828('0x39')](_0xa79a3d[_0x0828('0x30')][_0x0828('0x39')]);_0x10aa4f[_0x0828('0x3a')]=qs['filters'](_[_0x0828('0x3b')](_0xa79a3d[_0x0828('0x30')],_0x256df6['filters']),_0x33f34f);if(_0xa79a3d['query'][_0x0828('0x3c')]){_0x10aa4f[_0x0828('0x3a')]=_[_0x0828('0x3d')](_0x10aa4f['where'],{'$or':_[_0x0828('0x2a')](_0x33f34f,function(_0x394a89){if(_0x394a89[_0x0828('0x2e')]!=='VIRTUAL'){var _0x16db29={};_0x16db29[_0x394a89[_0x0828('0x27')]]={'$like':'%'+_0xa79a3d['query'][_0x0828('0x3c')]+'%'};return _0x16db29;}})});}_0x10aa4f=_['merge']({},_0x10aa4f,_0xa79a3d[_0x0828('0x3e')]);var _0x5877e2={'where':_0x10aa4f[_0x0828('0x3a')]};return db[_0x0828('0x2b')][_0x0828('0x1c')](_0x5877e2)[_0x0828('0x22')](function(_0x1b93e7){_0x4eb422[_0x0828('0x1c')]=_0x1b93e7;if(_0xa79a3d['query']['includeAll']){_0x10aa4f[_0x0828('0x3f')]=[{'all':!![]}];}return db[_0x0828('0x2b')][_0x0828('0x40')](_0x10aa4f);})[_0x0828('0x22')](function(_0x34c068){_0x4eb422[_0x0828('0x41')]=_0x34c068;return _0x4eb422;})[_0x0828('0x22')](respondWithFilteredResult(_0x4b3556,_0x10aa4f))['catch'](handleError(_0x4b3556,null));};exports[_0x0828('0x42')]=function(_0x34008a,_0x5d30a5){var _0x63009={'raw':!![],'where':{'id':_0x34008a[_0x0828('0x43')]['id']}},_0x4c589e={};_0x4c589e['model']=_[_0x0828('0x31')](db[_0x0828('0x2b')][_0x0828('0x2c')]);_0x4c589e[_0x0828('0x30')]=_[_0x0828('0x31')](_0x34008a[_0x0828('0x30')]);_0x4c589e['filters']=_[_0x0828('0x33')](_0x4c589e[_0x0828('0x2f')],_0x4c589e[_0x0828('0x30')]);_0x63009[_0x0828('0x35')]=_[_0x0828('0x33')](_0x4c589e['model'],qs[_0x0828('0x34')](_0x34008a[_0x0828('0x30')][_0x0828('0x34')]));_0x63009['attributes']=_0x63009['attributes']['length']?_0x63009[_0x0828('0x35')]:_0x4c589e['model'];if(_0x34008a[_0x0828('0x30')][_0x0828('0x44')]){_0x63009[_0x0828('0x3f')]=[{'all':!![]}];}_0x63009=_['merge']({},_0x63009,_0x34008a['options']);return db[_0x0828('0x2b')][_0x0828('0x45')](_0x63009)[_0x0828('0x22')](handleEntityNotFound(_0x5d30a5,null))['then'](respondWithResult(_0x5d30a5,null))['catch'](handleError(_0x5d30a5,null));};exports[_0x0828('0x46')]=function(_0x3a2321,_0x46e6c2){return db[_0x0828('0x2b')][_0x0828('0x46')](_0x3a2321[_0x0828('0x47')],{})[_0x0828('0x22')](function(_0x1f23f2){var _0x3b31d8=_0x3a2321[_0x0828('0x48')][_0x0828('0x49')]({'plain':!![]});if(!_0x3b31d8)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3b31d8['role']===_0x0828('0x48')){var _0x591be6=_0x1f23f2[_0x0828('0x49')]({'plain':!![]});var _0x23dc45=_0x0828('0x24');return db['UserProfileSection']['find']({'where':{'name':_0x23dc45,'userProfileId':_0x3b31d8[_0x0828('0x4a')]},'raw':!![]})[_0x0828('0x22')](function(_0x2bd3ff){if(_0x2bd3ff&&_0x2bd3ff[_0x0828('0x4b')]===0x0){return db[_0x0828('0x4c')][_0x0828('0x46')]({'name':_0x591be6[_0x0828('0x27')],'resourceId':_0x591be6['id'],'type':_0x2bd3ff['name'],'sectionId':_0x2bd3ff['id']},{})[_0x0828('0x22')](function(){return _0x1f23f2;});}else{return _0x1f23f2;}})[_0x0828('0x4d')](function(_0xac526c){logger[_0x0828('0x26')](_0x0828('0x4e'),_0xac526c);throw _0xac526c;});}return _0x1f23f2;})[_0x0828('0x22')](respondWithResult(_0x46e6c2,0xc9))['catch'](handleError(_0x46e6c2,null));};exports['update']=function(_0x193d2c,_0x171776){if(_0x193d2c[_0x0828('0x47')]['id']){delete _0x193d2c[_0x0828('0x47')]['id'];}return db[_0x0828('0x2b')][_0x0828('0x45')]({'where':{'id':_0x193d2c[_0x0828('0x43')]['id']}})[_0x0828('0x22')](handleEntityNotFound(_0x171776,null))[_0x0828('0x22')](saveUpdates(_0x193d2c['body'],null))['then'](respondWithResult(_0x171776,null))[_0x0828('0x4d')](handleError(_0x171776,null));};exports[_0x0828('0x23')]=function(_0x33fec3,_0x553454){return db[_0x0828('0x2b')][_0x0828('0x45')]({'where':{'id':_0x33fec3[_0x0828('0x43')]['id']}})[_0x0828('0x22')](handleEntityNotFound(_0x553454,null))['then'](removeEntity(_0x553454,null))['catch'](handleError(_0x553454,null));};exports[_0x0828('0x4f')]=function(_0x1996c5,_0x1cff1f,_0x592808){return db[_0x0828('0x2b')][_0x0828('0x45')]({'where':{'id':_0x1996c5[_0x0828('0x43')]['id']},'attributes':['name',_0x0828('0x50'),_0x0828('0x51'),_0x0828('0x52')],'raw':!![]})['then'](handleEntityNotFound(_0x1cff1f,null))[_0x0828('0x22')](function(_0x2dd11a){if(_0x2dd11a){if(!fs[_0x0828('0x53')](path[_0x0828('0x54')](config[_0x0828('0x55')],'server/files/reports',_0x2dd11a[_0x0828('0x51')]))){throw new db[(_0x0828('0x56'))]['ValidationError'](_0x0828('0x57'));}if(_0x1996c5[_0x0828('0x30')]['exists']){return _0x1cff1f[_0x0828('0x16')](0xc8);}return _0x1cff1f[_0x0828('0x4f')](path[_0x0828('0x54')](config['root'],_0x0828('0x58'),_0x2dd11a['savename']),util[_0x0828('0x59')]('%s.%s',_0x2dd11a[_0x0828('0x50')]||_0x2dd11a[_0x0828('0x27')],_0x2dd11a[_0x0828('0x52')]['toLowerCase']()));}})[_0x0828('0x4d')](handleError(_0x1cff1f,null));};
\ No newline at end of file
index ccd0a91..e3f15f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5890=['exports','define','analytics_extracted_reports','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./analyticExtractedReport.attributes'];(function(_0xbbc360,_0x4807d1){var _0xb291cc=function(_0x539b8c){while(--_0x539b8c){_0xbbc360['push'](_0xbbc360['shift']());}};_0xb291cc(++_0x4807d1);}(_0x5890,0xc6));var _0x0589=function(_0x2f0928,_0x4dd5ec){_0x2f0928=_0x2f0928-0x0;var _0x21a5bf=_0x5890[_0x2f0928];return _0x21a5bf;};'use strict';var _=require(_0x0589('0x0'));var util=require(_0x0589('0x1'));var logger=require(_0x0589('0x2'))(_0x0589('0x3'));var moment=require(_0x0589('0x4'));var BPromise=require(_0x0589('0x5'));var rp=require(_0x0589('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0589('0x7'));var config=require(_0x0589('0x8'));var attributes=require(_0x0589('0x9'));module[_0x0589('0xa')]=function(_0x53b4ad,_0x296de2){return _0x53b4ad[_0x0589('0xb')]('AnalyticExtractedReport',attributes,{'tableName':_0x0589('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1010=['bluebird','request-promise','../../config/environment','./analyticExtractedReport.attributes','exports','define','AnalyticExtractedReport','lodash','util','../../config/logger','api','moment'];(function(_0x4c315a,_0x187fc3){var _0x2310d8=function(_0x35006d){while(--_0x35006d){_0x4c315a['push'](_0x4c315a['shift']());}};_0x2310d8(++_0x187fc3);}(_0x1010,0x1ab));var _0x0101=function(_0xdd2bfa,_0x5bd304){_0xdd2bfa=_0xdd2bfa-0x0;var _0x55397e=_0x1010[_0xdd2bfa];return _0x55397e;};'use strict';var _=require(_0x0101('0x0'));var util=require(_0x0101('0x1'));var logger=require(_0x0101('0x2'))(_0x0101('0x3'));var moment=require(_0x0101('0x4'));var BPromise=require(_0x0101('0x5'));var rp=require(_0x0101('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x0101('0x7'));var attributes=require(_0x0101('0x8'));module[_0x0101('0x9')]=function(_0x1cdc1c,_0x1b2869){return _0x1cdc1c[_0x0101('0xa')](_0x0101('0xb'),attributes,{'tableName':'analytics_extracted_reports','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 097e556..b0ed0de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc8fe=['message','result','catch','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','info','debug','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','error','code','AnalyticExtractedReport,\x20%s,\x20%s'];(function(_0x1a80f4,_0x1de53b){var _0x55e867=function(_0x4a4933){while(--_0x4a4933){_0x1a80f4['push'](_0x1a80f4['shift']());}};_0x55e867(++_0x1de53b);}(_0xc8fe,0xe7));var _0xec8f=function(_0x17e2fa,_0x24e26d){_0x17e2fa=_0x17e2fa-0x0;var _0x51216e=_0xc8fe[_0x17e2fa];return _0x51216e;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xec8f('0x0'));var BPromise=require(_0xec8f('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xec8f('0x2'))['db'];var utils=require(_0xec8f('0x3'));var logger=require(_0xec8f('0x4'))(_0xec8f('0x5'));var config=require(_0xec8f('0x6'));var jayson=require(_0xec8f('0x7'));var client=jayson[_0xec8f('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1f2764,_0x28f7e8,_0x54af3e){return new BPromise(function(_0x46f33d,_0x56381a){return client['request'](_0x1f2764,_0x54af3e)[_0xec8f('0x9')](function(_0x450f16){logger[_0xec8f('0xa')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x28f7e8,'request\x20sent');logger[_0xec8f('0xb')](_0xec8f('0xc'),_0x28f7e8,'request\x20sent',JSON['stringify'](_0x450f16));if(_0x450f16[_0xec8f('0xd')]){if(_0x450f16[_0xec8f('0xd')][_0xec8f('0xe')]===0x1f4){logger[_0xec8f('0xd')](_0xec8f('0xf'),_0x28f7e8,_0x450f16[_0xec8f('0xd')][_0xec8f('0x10')]);return _0x56381a(_0x450f16[_0xec8f('0xd')][_0xec8f('0x10')]);}logger[_0xec8f('0xd')](_0xec8f('0xf'),_0x28f7e8,_0x450f16['error'][_0xec8f('0x10')]);return _0x46f33d(_0x450f16['error'][_0xec8f('0x10')]);}else{logger[_0xec8f('0xa')](_0xec8f('0xf'),_0x28f7e8,'request\x20sent');_0x46f33d(_0x450f16[_0xec8f('0x11')]['message']);}})[_0xec8f('0x12')](function(_0x5bd1a5){logger[_0xec8f('0xd')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x28f7e8,_0x5bd1a5);_0x56381a(_0x5bd1a5);});});}
\ No newline at end of file
+var _0x86f0=['catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','request\x20sent','stringify','error','AnalyticExtractedReport,\x20%s,\x20%s','message','result'];(function(_0x113876,_0x2d243d){var _0x3da554=function(_0x4df645){while(--_0x4df645){_0x113876['push'](_0x113876['shift']());}};_0x3da554(++_0x2d243d);}(_0x86f0,0x1e4));var _0x086f=function(_0x475ec1,_0x3864df){_0x475ec1=_0x475ec1-0x0;var _0x34a4a1=_0x86f0[_0x475ec1];return _0x34a4a1;};'use strict';var _=require(_0x086f('0x0'));var util=require(_0x086f('0x1'));var moment=require(_0x086f('0x2'));var BPromise=require('bluebird');var rs=require(_0x086f('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x086f('0x4'))['db'];var utils=require(_0x086f('0x5'));var logger=require(_0x086f('0x6'))(_0x086f('0x7'));var config=require(_0x086f('0x8'));var jayson=require(_0x086f('0x9'));var client=jayson[_0x086f('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0xaf39cf,_0x1fd976,_0x571691){return new BPromise(function(_0x1f1b20,_0x117ccf){return client[_0x086f('0xb')](_0xaf39cf,_0x571691)[_0x086f('0xc')](function(_0x546268){logger[_0x086f('0xd')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x1fd976,_0x086f('0xe'));logger['debug']('AnalyticExtractedReport,\x20%s,\x20%s,\x20%s',_0x1fd976,_0x086f('0xe'),JSON[_0x086f('0xf')](_0x546268));if(_0x546268[_0x086f('0x10')]){if(_0x546268[_0x086f('0x10')]['code']===0x1f4){logger['error'](_0x086f('0x11'),_0x1fd976,_0x546268['error'][_0x086f('0x12')]);return _0x117ccf(_0x546268[_0x086f('0x10')][_0x086f('0x12')]);}logger['error']('AnalyticExtractedReport,\x20%s,\x20%s',_0x1fd976,_0x546268[_0x086f('0x10')][_0x086f('0x12')]);return _0x1f1b20(_0x546268['error'][_0x086f('0x12')]);}else{logger[_0x086f('0xd')](_0x086f('0x11'),_0x1fd976,_0x086f('0xe'));_0x1f1b20(_0x546268[_0x086f('0x13')][_0x086f('0x12')]);}})[_0x086f('0x14')](function(_0x1781f8){logger['error']('AnalyticExtractedReport,\x20%s,\x20%s',_0x1fd976,_0x1781f8);_0x117ccf(_0x1781f8);});});}
\ No newline at end of file
index a8c4f1b..da9ed22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e9d=['../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticExtractedReport.controller','get','isAuthenticated','index','/:id','show','/:id/download','download','create','put','delete','destroy','multer','util','path','connect-timeout','express','fs-extra'];(function(_0xccb90c,_0x3b6bf1){var _0x1864ec=function(_0x1a68f9){while(--_0x1a68f9){_0xccb90c['push'](_0xccb90c['shift']());}};_0x1864ec(++_0x3b6bf1);}(_0x6e9d,0xf6));var _0xd6e9=function(_0x472c59,_0x182078){_0x472c59=_0x472c59-0x0;var _0x322b8d=_0x6e9d[_0x472c59];return _0x322b8d;};'use strict';var multer=require(_0xd6e9('0x0'));var util=require(_0xd6e9('0x1'));var path=require(_0xd6e9('0x2'));var timeout=require(_0xd6e9('0x3'));var express=require(_0xd6e9('0x4'));var router=express['Router']();var fs_extra=require(_0xd6e9('0x5'));var auth=require(_0xd6e9('0x6'));var interaction=require(_0xd6e9('0x7'));var config=require(_0xd6e9('0x8'));var controller=require(_0xd6e9('0x9'));router[_0xd6e9('0xa')]('/',auth[_0xd6e9('0xb')](),controller[_0xd6e9('0xc')]);router['get'](_0xd6e9('0xd'),auth[_0xd6e9('0xb')](),controller[_0xd6e9('0xe')]);router[_0xd6e9('0xa')](_0xd6e9('0xf'),auth[_0xd6e9('0xb')](),controller[_0xd6e9('0x10')]);router['post']('/',auth['isAuthenticated'](),controller[_0xd6e9('0x11')]);router[_0xd6e9('0x12')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0xd6e9('0x13')]('/:id',auth[_0xd6e9('0xb')](),controller[_0xd6e9('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x9d0e=['download','create','/:id','update','delete','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticExtractedReport.controller','get','isAuthenticated','show','/:id/download'];(function(_0x563ece,_0x58e062){var _0x10eae3=function(_0x269238){while(--_0x269238){_0x563ece['push'](_0x563ece['shift']());}};_0x10eae3(++_0x58e062);}(_0x9d0e,0x1e7));var _0xe9d0=function(_0xfd7b13,_0x194e4f){_0xfd7b13=_0xfd7b13-0x0;var _0x1d50f4=_0x9d0e[_0xfd7b13];return _0x1d50f4;};'use strict';var multer=require(_0xe9d0('0x0'));var util=require(_0xe9d0('0x1'));var path=require('path');var timeout=require(_0xe9d0('0x2'));var express=require(_0xe9d0('0x3'));var router=express['Router']();var fs_extra=require(_0xe9d0('0x4'));var auth=require(_0xe9d0('0x5'));var interaction=require(_0xe9d0('0x6'));var config=require(_0xe9d0('0x7'));var controller=require(_0xe9d0('0x8'));router[_0xe9d0('0x9')]('/',auth[_0xe9d0('0xa')](),controller['index']);router[_0xe9d0('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xe9d0('0xb')]);router['get'](_0xe9d0('0xc'),auth['isAuthenticated'](),controller[_0xe9d0('0xd')]);router['post']('/',auth[_0xe9d0('0xa')](),controller[_0xe9d0('0xe')]);router['put'](_0xe9d0('0xf'),auth[_0xe9d0('0xa')](),controller[_0xe9d0('0x10')]);router[_0xe9d0('0x11')](_0xe9d0('0xf'),auth[_0xe9d0('0xa')](),controller[_0xe9d0('0x12')]);module[_0xe9d0('0x13')]=router;
\ No newline at end of file
index ecbdd29..ef73a85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde7f=['exports','TEXT','STRING','BOOLEAN','sequelize'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0xde7f,0x86));var _0xfde7=function(_0x40e79a,_0x45b7ae){_0x40e79a=_0x40e79a-0x0;var _0x30538a=_0xde7f[_0x40e79a];return _0x30538a;};'use strict';var Sequelize=require(_0xfde7('0x0'));module[_0xfde7('0x1')]={'field':{'type':Sequelize[_0xfde7('0x2')]},'alias':{'type':Sequelize['STRING']},'function':{'type':Sequelize['STRING']},'format':{'type':Sequelize[_0xfde7('0x3')]},'groupBy':{'type':Sequelize[_0xfde7('0x4')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0xfde7('0x3')]},'custom':{'type':Sequelize[_0xfde7('0x4')],'defaultValue':![]}};
\ No newline at end of file
+var _0xdb45=['STRING','BOOLEAN','sequelize','exports'];(function(_0x1c5851,_0x4e3a74){var _0x4d091a=function(_0xc32972){while(--_0xc32972){_0x1c5851['push'](_0x1c5851['shift']());}};_0x4d091a(++_0x4e3a74);}(_0xdb45,0xaa));var _0x5db4=function(_0x37bab4,_0x40dadf){_0x37bab4=_0x37bab4-0x0;var _0xe2212b=_0xdb45[_0x37bab4];return _0xe2212b;};'use strict';var Sequelize=require(_0x5db4('0x0'));module[_0x5db4('0x1')]={'field':{'type':Sequelize['TEXT']},'alias':{'type':Sequelize['STRING']},'function':{'type':Sequelize['STRING']},'format':{'type':Sequelize[_0x5db4('0x2')]},'groupBy':{'type':Sequelize[_0x5db4('0x3')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0x5db4('0x2')]},'custom':{'type':Sequelize[_0x5db4('0x3')],'defaultValue':![]}};
\ No newline at end of file
index e0ef36a..1e8add5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdedf=['../../mysqldb','status','offset','undefined','limit','count','set','Content-Range','json','apply','update','then','destroy','end','sendStatus','error','stack','name','send','map','AnalyticFieldReport','fieldName','type','query','keys','filters','intersection','model','attributes','fields','length','nolimit','sort','where','filter','VIRTUAL','merge','options','rows','catch','show','rawAttributes','includeAll','find','create','body','bulkCreate','params','bulkDestroy','ids','addFields','sequelize','transaction','CustomReportId','findAll','eml-format','rimraf','fast-json-patch','bluebird','mustache','util','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xdedf,0x82));var _0xfded=function(_0x4fcf0d,_0x1435ec){_0x4fcf0d=_0x4fcf0d-0x0;var _0x5ade91=_0xdedf[_0x4fcf0d];return _0x5ade91;};'use strict';var emlformat=require(_0xfded('0x0'));var rimraf=require(_0xfded('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xfded('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xfded('0x3'));var Mustache=require(_0xfded('0x4'));var util=require(_0xfded('0x5'));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(_0xfded('0x6'));var _=require(_0xfded('0x7'));var squel=require(_0xfded('0x8'));var crypto=require(_0xfded('0x9'));var jsforce=require(_0xfded('0xa'));var deskjs=require('desk.js');var toCsv=require(_0xfded('0xb'));var querystring=require(_0xfded('0xc'));var Papa=require(_0xfded('0xd'));var Redis=require(_0xfded('0xe'));var authService=require(_0xfded('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xfded('0x10'));var hardwareService=require(_0xfded('0x11'));var logger=require('../../config/logger')(_0xfded('0x12'));var utils=require(_0xfded('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xfded('0x14'))['db'];function respondWithStatusCode(_0x23628d,_0x246ddf){_0x246ddf=_0x246ddf||0xcc;return function(_0x179f0b){if(_0x179f0b){return _0x23628d['sendStatus'](_0x246ddf);}return _0x23628d[_0xfded('0x15')](_0x246ddf)['end']();};}function respondWithResult(_0x373b2b,_0x5f0fe4){_0x5f0fe4=_0x5f0fe4||0xc8;return function(_0x425f7a){if(_0x425f7a){return _0x373b2b[_0xfded('0x15')](_0x5f0fe4)['json'](_0x425f7a);}};}function respondWithFilteredResult(_0x2d3a50,_0x359398){return function(_0x3e72b6){if(_0x3e72b6){var _0x2b2d3c=typeof _0x359398[_0xfded('0x16')]===_0xfded('0x17')&&typeof _0x359398[_0xfded('0x18')]===_0xfded('0x17');var _0x3331bf=_0x3e72b6['count'];var _0x4ef21d=_0x2b2d3c?0x0:_0x359398[_0xfded('0x16')];var _0x446809=_0x2b2d3c?_0x3e72b6[_0xfded('0x19')]:_0x359398['offset']+_0x359398[_0xfded('0x18')];var _0x584814;if(_0x446809>=_0x3331bf){_0x446809=_0x3331bf;_0x584814=0xc8;}else{_0x584814=0xce;}_0x2d3a50[_0xfded('0x15')](_0x584814);return _0x2d3a50[_0xfded('0x1a')](_0xfded('0x1b'),_0x4ef21d+'-'+_0x446809+'/'+_0x3331bf)[_0xfded('0x1c')](_0x3e72b6);}return null;};}function patchUpdates(_0x3435a6){return function(_0x2fa36c){try{jsonpatch[_0xfded('0x1d')](_0x2fa36c,_0x3435a6,!![]);}catch(_0x7ce46){return BPromise['reject'](_0x7ce46);}return _0x2fa36c['save']();};}function saveUpdates(_0x40ee0d,_0x44f89c){return function(_0x544faf){if(_0x544faf){return _0x544faf[_0xfded('0x1e')](_0x40ee0d)[_0xfded('0x1f')](function(_0x383c9b){return _0x383c9b;});}return null;};}function removeEntity(_0x3c63a6,_0x552c99){return function(_0x202bfb){if(_0x202bfb){return _0x202bfb[_0xfded('0x20')]()[_0xfded('0x1f')](function(){_0x3c63a6['status'](0xcc)[_0xfded('0x21')]();});}};}function handleEntityNotFound(_0x2993e8,_0xe9d250){return function(_0xa30523){if(!_0xa30523){_0x2993e8[_0xfded('0x22')](0x194);}return _0xa30523;};}function handleError(_0x3f0649,_0x73fed0){_0x73fed0=_0x73fed0||0x1f4;return function(_0x3947b2){logger[_0xfded('0x23')](_0x3947b2[_0xfded('0x24')]);if(_0x3947b2['name']){delete _0x3947b2[_0xfded('0x25')];}_0x3f0649[_0xfded('0x15')](_0x73fed0)[_0xfded('0x26')](_0x3947b2);};}exports['index']=function(_0x1f89ed,_0x267d5e){var _0x42ccf0={},_0x3aac56={},_0xcc9923={'count':0x0,'rows':[]};var _0x5cf152=_[_0xfded('0x27')](db[_0xfded('0x28')]['rawAttributes'],function(_0x209acf){return{'name':_0x209acf[_0xfded('0x29')],'type':_0x209acf[_0xfded('0x2a')]['key']};});_0x3aac56['model']=_[_0xfded('0x27')](_0x5cf152,_0xfded('0x25'));_0x3aac56[_0xfded('0x2b')]=_[_0xfded('0x2c')](_0x1f89ed[_0xfded('0x2b')]);_0x3aac56[_0xfded('0x2d')]=_[_0xfded('0x2e')](_0x3aac56[_0xfded('0x2f')],_0x3aac56[_0xfded('0x2b')]);_0x42ccf0[_0xfded('0x30')]=_[_0xfded('0x2e')](_0x3aac56[_0xfded('0x2f')],qs[_0xfded('0x31')](_0x1f89ed['query']['fields']));_0x42ccf0[_0xfded('0x30')]=_0x42ccf0[_0xfded('0x30')][_0xfded('0x32')]?_0x42ccf0[_0xfded('0x30')]:_0x3aac56[_0xfded('0x2f')];if(!_0x1f89ed[_0xfded('0x2b')]['hasOwnProperty'](_0xfded('0x33'))){_0x42ccf0['limit']=qs[_0xfded('0x18')](_0x1f89ed['query'][_0xfded('0x18')]);_0x42ccf0[_0xfded('0x16')]=qs[_0xfded('0x16')](_0x1f89ed[_0xfded('0x2b')][_0xfded('0x16')]);}_0x42ccf0['order']=qs[_0xfded('0x34')](_0x1f89ed['query'][_0xfded('0x34')]);_0x42ccf0[_0xfded('0x35')]=qs[_0xfded('0x2d')](_['pick'](_0x1f89ed[_0xfded('0x2b')],_0x3aac56[_0xfded('0x2d')]),_0x5cf152);if(_0x1f89ed['query'][_0xfded('0x36')]){_0x42ccf0['where']=_['merge'](_0x42ccf0[_0xfded('0x35')],{'$or':_['map'](_0x5cf152,function(_0x371a5d){if(_0x371a5d[_0xfded('0x2a')]!==_0xfded('0x37')){var _0x165463={};_0x165463[_0x371a5d['name']]={'$like':'%'+_0x1f89ed['query']['filter']+'%'};return _0x165463;}})});}_0x42ccf0=_[_0xfded('0x38')]({},_0x42ccf0,_0x1f89ed[_0xfded('0x39')]);var _0x1c6beb={'where':_0x42ccf0[_0xfded('0x35')]};return db[_0xfded('0x28')]['count'](_0x1c6beb)[_0xfded('0x1f')](function(_0x173b75){_0xcc9923[_0xfded('0x19')]=_0x173b75;if(_0x1f89ed[_0xfded('0x2b')]['includeAll']){_0x42ccf0['include']=[{'all':!![]}];}return db[_0xfded('0x28')]['findAll'](_0x42ccf0);})[_0xfded('0x1f')](function(_0x16064d){_0xcc9923[_0xfded('0x3a')]=_0x16064d;return _0xcc9923;})['then'](respondWithFilteredResult(_0x267d5e,_0x42ccf0))[_0xfded('0x3b')](handleError(_0x267d5e,null));};exports[_0xfded('0x3c')]=function(_0x31d365,_0x1904cc){var _0x1f7f12={'raw':![],'where':{'id':_0x31d365['params']['id']}},_0x354232={};_0x354232[_0xfded('0x2f')]=_[_0xfded('0x2c')](db[_0xfded('0x28')][_0xfded('0x3d')]);_0x354232[_0xfded('0x2b')]=_[_0xfded('0x2c')](_0x31d365['query']);_0x354232[_0xfded('0x2d')]=_[_0xfded('0x2e')](_0x354232[_0xfded('0x2f')],_0x354232[_0xfded('0x2b')]);_0x1f7f12[_0xfded('0x30')]=_[_0xfded('0x2e')](_0x354232[_0xfded('0x2f')],qs['fields'](_0x31d365[_0xfded('0x2b')][_0xfded('0x31')]));_0x1f7f12['attributes']=_0x1f7f12[_0xfded('0x30')][_0xfded('0x32')]?_0x1f7f12['attributes']:_0x354232['model'];if(_0x31d365[_0xfded('0x2b')][_0xfded('0x3e')]){_0x1f7f12['include']=[{'all':!![]}];}_0x1f7f12=_[_0xfded('0x38')]({},_0x1f7f12,_0x31d365['options']);return db[_0xfded('0x28')][_0xfded('0x3f')](_0x1f7f12)[_0xfded('0x1f')](handleEntityNotFound(_0x1904cc,null))['then'](respondWithResult(_0x1904cc,null))[_0xfded('0x3b')](handleError(_0x1904cc,null));};exports[_0xfded('0x40')]=function(_0x2743bb,_0x2218b6){return db[_0xfded('0x28')][_0xfded('0x40')](_0x2743bb[_0xfded('0x41')],{})[_0xfded('0x1f')](respondWithResult(_0x2218b6,0xc9))[_0xfded('0x3b')](handleError(_0x2218b6,null));};exports['bulkCreate']=function(_0x42324a,_0x2518bd){return db[_0xfded('0x28')][_0xfded('0x42')](_0x42324a[_0xfded('0x41')],{'raw':![],'individualHooks':!![]})[_0xfded('0x1f')](respondWithResult(_0x2518bd,0xc9))['catch'](handleError(_0x2518bd,null));};exports['update']=function(_0x2cb882,_0x511a87){if(_0x2cb882[_0xfded('0x41')]['id']){delete _0x2cb882[_0xfded('0x41')]['id'];}return db[_0xfded('0x28')]['find']({'where':{'id':_0x2cb882[_0xfded('0x43')]['id']}})[_0xfded('0x1f')](handleEntityNotFound(_0x511a87,null))[_0xfded('0x1f')](saveUpdates(_0x2cb882['body'],null))['then'](respondWithResult(_0x511a87,null))[_0xfded('0x3b')](handleError(_0x511a87,null));};exports[_0xfded('0x20')]=function(_0x539050,_0x3a664a){return db['AnalyticFieldReport'][_0xfded('0x3f')]({'where':{'id':_0x539050[_0xfded('0x43')]['id']}})[_0xfded('0x1f')](handleEntityNotFound(_0x3a664a,null))[_0xfded('0x1f')](removeEntity(_0x3a664a,null))[_0xfded('0x3b')](handleError(_0x3a664a,null));};exports[_0xfded('0x44')]=function(_0x474179,_0x3629e4){return db[_0xfded('0x28')][_0xfded('0x20')]({'where':{'id':_0x474179['query'][_0xfded('0x45')]||[]},'raw':![],'individualHooks':!![]})['then'](respondWithResult(_0x3629e4,0xcc))[_0xfded('0x3b')](handleError(_0x3629e4,null));};exports[_0xfded('0x46')]=function(_0x2c5f15,_0x53e770,_0xc6d5ff){return db['AnalyticCustomReport']['findOne']({'where':{'id':_0x2c5f15['params']['id']}})['then'](handleEntityNotFound(_0x53e770,null))[_0xfded('0x1f')](function(_0x543698){if(_0x543698){return db[_0xfded('0x47')][_0xfded('0x48')](function(_0x3ce6c4){return db['AnalyticFieldReport'][_0xfded('0x20')]({'where':{'CustomReportId':_0x2c5f15[_0xfded('0x43')]['id']},'transaction':_0x3ce6c4})[_0xfded('0x1f')](function(_0x4d3211){var _0x19d4b7=_[_0xfded('0x27')](_0x2c5f15[_0xfded('0x41')],function(_0x1cfda9){delete _0x1cfda9['id'];_0x1cfda9[_0xfded('0x49')]=_0x2c5f15[_0xfded('0x43')]['id'];return _0x1cfda9;});return db['AnalyticFieldReport'][_0xfded('0x42')](_0x19d4b7,{'transaction':_0x3ce6c4});});})['then'](function(){return db[_0xfded('0x28')][_0xfded('0x4a')]({'where':{'CustomReportId':_0x2c5f15['params']['id']}});});}})['then'](respondWithResult(_0x53e770,null))[_0xfded('0x3b')](handleError(_0x53e770,null));};
\ No newline at end of file
+var _0xe17b=['merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','fields','length','options','find','create','body','bulkDestroy','ids','AnalyticCustomReport','findOne','sequelize','transaction','CustomReportId','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','lodash','squel','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','save','update','destroy','then','error','stack','name','map','AnalyticFieldReport','rawAttributes','type','key','model','query','keys','filters','attributes','intersection','nolimit','order','sort','where','pick','filter'];(function(_0xa9a245,_0x2a0387){var _0x2d0eaa=function(_0x2bba86){while(--_0x2bba86){_0xa9a245['push'](_0xa9a245['shift']());}};_0x2d0eaa(++_0x2a0387);}(_0xe17b,0x146));var _0xbe17=function(_0x334d1e,_0x28a488){_0x334d1e=_0x334d1e-0x0;var _0x3b33ba=_0xe17b[_0x334d1e];return _0x3b33ba;};'use strict';var emlformat=require(_0xbe17('0x0'));var rimraf=require(_0xbe17('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xbe17('0x2'));var rp=require(_0xbe17('0x3'));var moment=require(_0xbe17('0x4'));var BPromise=require(_0xbe17('0x5'));var Mustache=require(_0xbe17('0x6'));var util=require('util');var path=require(_0xbe17('0x7'));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(_0xbe17('0x8'));var squel=require(_0xbe17('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xbe17('0xa'));var toCsv=require(_0xbe17('0xb'));var querystring=require('querystring');var Papa=require(_0xbe17('0xc'));var Redis=require(_0xbe17('0xd'));var authService=require(_0xbe17('0xe'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xbe17('0xf'))(_0xbe17('0x10'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xbe17('0x11'));var db=require(_0xbe17('0x12'))['db'];function respondWithStatusCode(_0x47c9aa,_0x11cc09){_0x11cc09=_0x11cc09||0xcc;return function(_0x3e71be){if(_0x3e71be){return _0x47c9aa[_0xbe17('0x13')](_0x11cc09);}return _0x47c9aa[_0xbe17('0x14')](_0x11cc09)[_0xbe17('0x15')]();};}function respondWithResult(_0x1fc59c,_0x236ad8){_0x236ad8=_0x236ad8||0xc8;return function(_0x491de3){if(_0x491de3){return _0x1fc59c['status'](_0x236ad8)[_0xbe17('0x16')](_0x491de3);}};}function respondWithFilteredResult(_0x26b13f,_0x326d98){return function(_0x2bceae){if(_0x2bceae){var _0xf65444=typeof _0x326d98[_0xbe17('0x17')]==='undefined'&&typeof _0x326d98['limit']===_0xbe17('0x18');var _0x3df24b=_0x2bceae[_0xbe17('0x19')];var _0x584337=_0xf65444?0x0:_0x326d98['offset'];var _0x588a78=_0xf65444?_0x2bceae['count']:_0x326d98['offset']+_0x326d98[_0xbe17('0x1a')];var _0x229e8a;if(_0x588a78>=_0x3df24b){_0x588a78=_0x3df24b;_0x229e8a=0xc8;}else{_0x229e8a=0xce;}_0x26b13f[_0xbe17('0x14')](_0x229e8a);return _0x26b13f[_0xbe17('0x1b')](_0xbe17('0x1c'),_0x584337+'-'+_0x588a78+'/'+_0x3df24b)['json'](_0x2bceae);}return null;};}function patchUpdates(_0x13f651){return function(_0x4f6d1b){try{jsonpatch[_0xbe17('0x1d')](_0x4f6d1b,_0x13f651,!![]);}catch(_0x18b50f){return BPromise['reject'](_0x18b50f);}return _0x4f6d1b[_0xbe17('0x1e')]();};}function saveUpdates(_0x27b719,_0x3e309b){return function(_0xfd0f4c){if(_0xfd0f4c){return _0xfd0f4c[_0xbe17('0x1f')](_0x27b719)['then'](function(_0x5e770c){return _0x5e770c;});}return null;};}function removeEntity(_0x309fa9,_0x578343){return function(_0x3bbcbe){if(_0x3bbcbe){return _0x3bbcbe[_0xbe17('0x20')]()[_0xbe17('0x21')](function(){_0x309fa9[_0xbe17('0x14')](0xcc)[_0xbe17('0x15')]();});}};}function handleEntityNotFound(_0x33fe9e,_0x50a05f){return function(_0x226544){if(!_0x226544){_0x33fe9e[_0xbe17('0x13')](0x194);}return _0x226544;};}function handleError(_0x1c972b,_0x382135){_0x382135=_0x382135||0x1f4;return function(_0x1fcd75){logger[_0xbe17('0x22')](_0x1fcd75[_0xbe17('0x23')]);if(_0x1fcd75['name']){delete _0x1fcd75[_0xbe17('0x24')];}_0x1c972b[_0xbe17('0x14')](_0x382135)['send'](_0x1fcd75);};}exports['index']=function(_0x2d8654,_0x55cd80){var _0x331f7d={},_0x2b9dfa={},_0x13de9b={'count':0x0,'rows':[]};var _0x147e5f=_[_0xbe17('0x25')](db[_0xbe17('0x26')][_0xbe17('0x27')],function(_0x353a14){return{'name':_0x353a14['fieldName'],'type':_0x353a14[_0xbe17('0x28')][_0xbe17('0x29')]};});_0x2b9dfa[_0xbe17('0x2a')]=_['map'](_0x147e5f,'name');_0x2b9dfa[_0xbe17('0x2b')]=_[_0xbe17('0x2c')](_0x2d8654['query']);_0x2b9dfa[_0xbe17('0x2d')]=_['intersection'](_0x2b9dfa[_0xbe17('0x2a')],_0x2b9dfa['query']);_0x331f7d[_0xbe17('0x2e')]=_[_0xbe17('0x2f')](_0x2b9dfa[_0xbe17('0x2a')],qs['fields'](_0x2d8654['query']['fields']));_0x331f7d['attributes']=_0x331f7d[_0xbe17('0x2e')]['length']?_0x331f7d[_0xbe17('0x2e')]:_0x2b9dfa[_0xbe17('0x2a')];if(!_0x2d8654['query']['hasOwnProperty'](_0xbe17('0x30'))){_0x331f7d[_0xbe17('0x1a')]=qs[_0xbe17('0x1a')](_0x2d8654[_0xbe17('0x2b')][_0xbe17('0x1a')]);_0x331f7d[_0xbe17('0x17')]=qs[_0xbe17('0x17')](_0x2d8654[_0xbe17('0x2b')]['offset']);}_0x331f7d[_0xbe17('0x31')]=qs['sort'](_0x2d8654[_0xbe17('0x2b')][_0xbe17('0x32')]);_0x331f7d[_0xbe17('0x33')]=qs[_0xbe17('0x2d')](_[_0xbe17('0x34')](_0x2d8654[_0xbe17('0x2b')],_0x2b9dfa[_0xbe17('0x2d')]),_0x147e5f);if(_0x2d8654[_0xbe17('0x2b')][_0xbe17('0x35')]){_0x331f7d[_0xbe17('0x33')]=_[_0xbe17('0x36')](_0x331f7d['where'],{'$or':_[_0xbe17('0x25')](_0x147e5f,function(_0x56e5e2){if(_0x56e5e2[_0xbe17('0x28')]!==_0xbe17('0x37')){var _0x2d0c26={};_0x2d0c26[_0x56e5e2[_0xbe17('0x24')]]={'$like':'%'+_0x2d8654[_0xbe17('0x2b')][_0xbe17('0x35')]+'%'};return _0x2d0c26;}})});}_0x331f7d=_[_0xbe17('0x36')]({},_0x331f7d,_0x2d8654['options']);var _0x2a515a={'where':_0x331f7d[_0xbe17('0x33')]};return db['AnalyticFieldReport']['count'](_0x2a515a)[_0xbe17('0x21')](function(_0x2cbd21){_0x13de9b[_0xbe17('0x19')]=_0x2cbd21;if(_0x2d8654[_0xbe17('0x2b')][_0xbe17('0x38')]){_0x331f7d[_0xbe17('0x39')]=[{'all':!![]}];}return db[_0xbe17('0x26')][_0xbe17('0x3a')](_0x331f7d);})[_0xbe17('0x21')](function(_0x203edb){_0x13de9b[_0xbe17('0x3b')]=_0x203edb;return _0x13de9b;})[_0xbe17('0x21')](respondWithFilteredResult(_0x55cd80,_0x331f7d))[_0xbe17('0x3c')](handleError(_0x55cd80,null));};exports[_0xbe17('0x3d')]=function(_0x2bc180,_0xf63680){var _0x92b2fe={'raw':![],'where':{'id':_0x2bc180[_0xbe17('0x3e')]['id']}},_0x222276={};_0x222276['model']=_['keys'](db['AnalyticFieldReport'][_0xbe17('0x27')]);_0x222276[_0xbe17('0x2b')]=_[_0xbe17('0x2c')](_0x2bc180[_0xbe17('0x2b')]);_0x222276['filters']=_['intersection'](_0x222276['model'],_0x222276['query']);_0x92b2fe['attributes']=_['intersection'](_0x222276[_0xbe17('0x2a')],qs[_0xbe17('0x3f')](_0x2bc180[_0xbe17('0x2b')][_0xbe17('0x3f')]));_0x92b2fe[_0xbe17('0x2e')]=_0x92b2fe['attributes'][_0xbe17('0x40')]?_0x92b2fe['attributes']:_0x222276[_0xbe17('0x2a')];if(_0x2bc180[_0xbe17('0x2b')][_0xbe17('0x38')]){_0x92b2fe['include']=[{'all':!![]}];}_0x92b2fe=_[_0xbe17('0x36')]({},_0x92b2fe,_0x2bc180[_0xbe17('0x41')]);return db['AnalyticFieldReport'][_0xbe17('0x42')](_0x92b2fe)[_0xbe17('0x21')](handleEntityNotFound(_0xf63680,null))['then'](respondWithResult(_0xf63680,null))['catch'](handleError(_0xf63680,null));};exports[_0xbe17('0x43')]=function(_0x5e648f,_0x55ac8c){return db[_0xbe17('0x26')]['create'](_0x5e648f[_0xbe17('0x44')],{})[_0xbe17('0x21')](respondWithResult(_0x55ac8c,0xc9))['catch'](handleError(_0x55ac8c,null));};exports['bulkCreate']=function(_0x2f3876,_0x4856be){return db[_0xbe17('0x26')]['bulkCreate'](_0x2f3876[_0xbe17('0x44')],{'raw':![],'individualHooks':!![]})['then'](respondWithResult(_0x4856be,0xc9))[_0xbe17('0x3c')](handleError(_0x4856be,null));};exports[_0xbe17('0x1f')]=function(_0x183fb7,_0x2fba7a){if(_0x183fb7['body']['id']){delete _0x183fb7[_0xbe17('0x44')]['id'];}return db['AnalyticFieldReport']['find']({'where':{'id':_0x183fb7['params']['id']}})[_0xbe17('0x21')](handleEntityNotFound(_0x2fba7a,null))[_0xbe17('0x21')](saveUpdates(_0x183fb7[_0xbe17('0x44')],null))[_0xbe17('0x21')](respondWithResult(_0x2fba7a,null))[_0xbe17('0x3c')](handleError(_0x2fba7a,null));};exports['destroy']=function(_0x55e3c1,_0x1b8fea){return db['AnalyticFieldReport'][_0xbe17('0x42')]({'where':{'id':_0x55e3c1[_0xbe17('0x3e')]['id']}})['then'](handleEntityNotFound(_0x1b8fea,null))['then'](removeEntity(_0x1b8fea,null))[_0xbe17('0x3c')](handleError(_0x1b8fea,null));};exports[_0xbe17('0x45')]=function(_0x430c23,_0x5d456c){return db[_0xbe17('0x26')][_0xbe17('0x20')]({'where':{'id':_0x430c23[_0xbe17('0x2b')][_0xbe17('0x46')]||[]},'raw':![],'individualHooks':!![]})[_0xbe17('0x21')](respondWithResult(_0x5d456c,0xcc))[_0xbe17('0x3c')](handleError(_0x5d456c,null));};exports['addFields']=function(_0x48f277,_0x4373ca,_0x5c6019){return db[_0xbe17('0x47')][_0xbe17('0x48')]({'where':{'id':_0x48f277['params']['id']}})['then'](handleEntityNotFound(_0x4373ca,null))['then'](function(_0x364015){if(_0x364015){return db[_0xbe17('0x49')][_0xbe17('0x4a')](function(_0x209ff4){return db[_0xbe17('0x26')]['destroy']({'where':{'CustomReportId':_0x48f277[_0xbe17('0x3e')]['id']},'transaction':_0x209ff4})[_0xbe17('0x21')](function(_0x5c0dc3){var _0x19298b=_[_0xbe17('0x25')](_0x48f277['body'],function(_0x12305e){delete _0x12305e['id'];_0x12305e[_0xbe17('0x4b')]=_0x48f277['params']['id'];return _0x12305e;});return db[_0xbe17('0x26')]['bulkCreate'](_0x19298b,{'transaction':_0x209ff4});});})[_0xbe17('0x21')](function(){return db[_0xbe17('0x26')]['findAll']({'where':{'CustomReportId':_0x48f277[_0xbe17('0x3e')]['id']}});});}})[_0xbe17('0x21')](respondWithResult(_0x4373ca,null))[_0xbe17('0x3c')](handleError(_0x4373ca,null));};
\ No newline at end of file
index 73030cc..b80ff21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72b8=['moment','request-promise','path','rimraf','../../config/environment','./analyticFieldReport.attributes','define','AnalyticFieldReport','analytics_report_fields','lodash','util','api'];(function(_0x110eb3,_0x5b7c94){var _0x69b14e=function(_0x34b5a9){while(--_0x34b5a9){_0x110eb3['push'](_0x110eb3['shift']());}};_0x69b14e(++_0x5b7c94);}(_0x72b8,0x105));var _0x872b=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0x72b8[_0x4b055c];return _0x4b62bb;};'use strict';var _=require(_0x872b('0x0'));var util=require(_0x872b('0x1'));var logger=require('../../config/logger')(_0x872b('0x2'));var moment=require(_0x872b('0x3'));var BPromise=require('bluebird');var rp=require(_0x872b('0x4'));var fs=require('fs');var path=require(_0x872b('0x5'));var rimraf=require(_0x872b('0x6'));var config=require(_0x872b('0x7'));var attributes=require(_0x872b('0x8'));module['exports']=function(_0x1b9bb4,_0x2f775b){return _0x1b9bb4[_0x872b('0x9')](_0x872b('0xa'),attributes,{'tableName':_0x872b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x68a2=['exports','define','AnalyticFieldReport','analytics_report_fields','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf'];(function(_0x49544c,_0x135fda){var _0x28dfb3=function(_0x244fae){while(--_0x244fae){_0x49544c['push'](_0x49544c['shift']());}};_0x28dfb3(++_0x135fda);}(_0x68a2,0x178));var _0x268a=function(_0x4973a3,_0x5d5583){_0x4973a3=_0x4973a3-0x0;var _0x1da2d2=_0x68a2[_0x4973a3];return _0x1da2d2;};'use strict';var _=require(_0x268a('0x0'));var util=require(_0x268a('0x1'));var logger=require(_0x268a('0x2'))(_0x268a('0x3'));var moment=require(_0x268a('0x4'));var BPromise=require(_0x268a('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x268a('0x6'));var rimraf=require(_0x268a('0x7'));var config=require('../../config/environment');var attributes=require('./analyticFieldReport.attributes');module[_0x268a('0x8')]=function(_0x598537,_0x1e033e){return _0x598537[_0x268a('0x9')](_0x268a('0xa'),attributes,{'tableName':_0x268a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bb84b3e..45dc64f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe78a=['http','request','then','info','AnalyticFieldReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe78a,0x185));var _0xae78=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xe78a[_0x57b54c];return _0x59cc19;};'use strict';var _=require(_0xae78('0x0'));var util=require(_0xae78('0x1'));var moment=require(_0xae78('0x2'));var BPromise=require(_0xae78('0x3'));var rs=require(_0xae78('0x4'));var fs=require('fs');var Redis=require(_0xae78('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xae78('0x6'));var logger=require(_0xae78('0x7'))(_0xae78('0x8'));var config=require('../../config/environment');var jayson=require(_0xae78('0x9'));var client=jayson[_0xae78('0xa')][_0xae78('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4a42cc,_0x337e02,_0x1167d6){return new BPromise(function(_0x135fa6,_0x72d36){return client[_0xae78('0xc')](_0x4a42cc,_0x1167d6)[_0xae78('0xd')](function(_0x40c239){logger[_0xae78('0xe')](_0xae78('0xf'),_0x337e02,_0xae78('0x10'));logger[_0xae78('0x11')](_0xae78('0x12'),_0x337e02,'request\x20sent',JSON[_0xae78('0x13')](_0x40c239));if(_0x40c239[_0xae78('0x14')]){if(_0x40c239[_0xae78('0x14')][_0xae78('0x15')]===0x1f4){logger[_0xae78('0x14')](_0xae78('0xf'),_0x337e02,_0x40c239['error']['message']);return _0x72d36(_0x40c239[_0xae78('0x14')][_0xae78('0x16')]);}logger[_0xae78('0x14')](_0xae78('0xf'),_0x337e02,_0x40c239[_0xae78('0x14')][_0xae78('0x16')]);return _0x135fa6(_0x40c239[_0xae78('0x14')][_0xae78('0x16')]);}else{logger['info'](_0xae78('0xf'),_0x337e02,_0xae78('0x10'));_0x135fa6(_0x40c239[_0xae78('0x17')][_0xae78('0x16')]);}})[_0xae78('0x18')](function(_0x493c85){logger[_0xae78('0x14')](_0xae78('0xf'),_0x337e02,_0x493c85);_0x72d36(_0x493c85);});});}
\ No newline at end of file
+var _0x7872=['request','then','AnalyticFieldReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http'];(function(_0xb1e00b,_0x36c405){var _0x1506c8=function(_0x42971b){while(--_0x42971b){_0xb1e00b['push'](_0xb1e00b['shift']());}};_0x1506c8(++_0x36c405);}(_0x7872,0xe3));var _0x2787=function(_0x1ae1c1,_0x1d9209){_0x1ae1c1=_0x1ae1c1-0x0;var _0x4f0c0d=_0x7872[_0x1ae1c1];return _0x4f0c0d;};'use strict';var _=require(_0x2787('0x0'));var util=require(_0x2787('0x1'));var moment=require(_0x2787('0x2'));var BPromise=require(_0x2787('0x3'));var rs=require(_0x2787('0x4'));var fs=require('fs');var Redis=require(_0x2787('0x5'));var db=require(_0x2787('0x6'))['db'];var utils=require(_0x2787('0x7'));var logger=require(_0x2787('0x8'))(_0x2787('0x9'));var config=require(_0x2787('0xa'));var jayson=require('jayson/promise');var client=jayson[_0x2787('0xb')][_0x2787('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x12c280,_0x24794d,_0x31a9eb){return new BPromise(function(_0x6869bf,_0x562720){return client[_0x2787('0xd')](_0x12c280,_0x31a9eb)[_0x2787('0xe')](function(_0x339a9d){logger['info'](_0x2787('0xf'),_0x24794d,_0x2787('0x10'));logger[_0x2787('0x11')](_0x2787('0x12'),_0x24794d,_0x2787('0x10'),JSON['stringify'](_0x339a9d));if(_0x339a9d['error']){if(_0x339a9d[_0x2787('0x13')][_0x2787('0x14')]===0x1f4){logger['error'](_0x2787('0xf'),_0x24794d,_0x339a9d[_0x2787('0x13')][_0x2787('0x15')]);return _0x562720(_0x339a9d[_0x2787('0x13')]['message']);}logger[_0x2787('0x13')](_0x2787('0xf'),_0x24794d,_0x339a9d[_0x2787('0x13')][_0x2787('0x15')]);return _0x6869bf(_0x339a9d[_0x2787('0x13')][_0x2787('0x15')]);}else{logger['info']('AnalyticFieldReport,\x20%s,\x20%s',_0x24794d,'request\x20sent');_0x6869bf(_0x339a9d[_0x2787('0x16')][_0x2787('0x15')]);}})[_0x2787('0x17')](function(_0x5c6550){logger[_0x2787('0x13')](_0x2787('0xf'),_0x24794d,_0x5c6550);_0x562720(_0x5c6550);});});}
\ No newline at end of file
index b1fd1c4..b0cd88e 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(_0x49ebe6,_0x5452bb){var _0xf3908b=function(_0x2df00f){while(--_0x2df00f){_0x49ebe6['push'](_0x49ebe6['shift']());}};_0xf3908b(++_0x5452bb);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2763f2,_0x416af8){_0x2763f2=_0x2763f2-0x0;var _0x3ef471=_0xa9e0[_0x2763f2];return _0x3ef471;};'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(_0x59197b,_0x35ec49){var _0x2c5edf=function(_0x3c7354){while(--_0x3c7354){_0x59197b['push'](_0x59197b['shift']());}};_0x2c5edf(++_0x35ec49);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4c7fb5,_0x2548ef){_0x4c7fb5=_0x4c7fb5-0x0;var _0x2e10ac=_0xa9e0[_0x4c7fb5];return _0x2e10ac;};'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 37f48ff..859b149 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81fa=['TEXT','sequelize','exports','name','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x81fa,0xdd));var _0xa81f=function(_0x49655b,_0x40c634){_0x49655b=_0x49655b-0x0;var _0x1878c9=_0x81fa[_0x49655b];return _0x1878c9;};'use strict';var Sequelize=require(_0xa81f('0x0'));module[_0xa81f('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xa81f('0x2')},'table':{'type':Sequelize[_0xa81f('0x3')]},'metric':{'type':Sequelize[_0xa81f('0x4')]},'description':{'type':Sequelize[_0xa81f('0x3')]}};
\ No newline at end of file
+var _0xc36d=['sequelize','exports','STRING','name','TEXT'];(function(_0x4fe328,_0x5e456d){var _0x11a53b=function(_0x42f8cb){while(--_0x42f8cb){_0x4fe328['push'](_0x4fe328['shift']());}};_0x11a53b(++_0x5e456d);}(_0xc36d,0x7d));var _0xdc36=function(_0x132558,_0x521d93){_0x132558=_0x132558-0x0;var _0x34f138=_0xc36d[_0x132558];return _0x34f138;};'use strict';var Sequelize=require(_0xdc36('0x0'));module[_0xdc36('0x1')]={'name':{'type':Sequelize[_0xdc36('0x2')],'allowNull':![],'unique':_0xdc36('0x3')},'table':{'type':Sequelize[_0xdc36('0x2')]},'metric':{'type':Sequelize[_0xdc36('0x4')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index b6818fa..c88c5df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x425d=['VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','get','Metrics','UserProfileResource','destroy','error','stack','name','send','index','map','AnalyticMetric','rawAttributes','fieldName','type','key','model','query','keys','attributes','intersection','fields','length','nolimit','order','sort','filters','pick','where','merge'];(function(_0x2f5a7f,_0x519e7){var _0x285bf6=function(_0x3aeff4){while(--_0x3aeff4){_0x2f5a7f['push'](_0x2f5a7f['shift']());}};_0x285bf6(++_0x519e7);}(_0x425d,0x1e0));var _0xd425=function(_0x188a2a,_0x368961){_0x188a2a=_0x188a2a-0x0;var _0x38598a=_0x425d[_0x188a2a];return _0x38598a;};'use strict';var emlformat=require(_0xd425('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd425('0x1'));var jsonpatch=require(_0xd425('0x2'));var rp=require(_0xd425('0x3'));var moment=require(_0xd425('0x4'));var BPromise=require(_0xd425('0x5'));var Mustache=require(_0xd425('0x6'));var util=require(_0xd425('0x7'));var path=require('path');var sox=require(_0xd425('0x8'));var csv=require(_0xd425('0x9'));var ejs=require(_0xd425('0xa'));var fs=require('fs');var fs_extra=require(_0xd425('0xb'));var _=require(_0xd425('0xc'));var squel=require(_0xd425('0xd'));var crypto=require('crypto');var jsforce=require(_0xd425('0xe'));var deskjs=require(_0xd425('0xf'));var toCsv=require(_0xd425('0x9'));var querystring=require(_0xd425('0x10'));var Papa=require(_0xd425('0x11'));var Redis=require(_0xd425('0x12'));var authService=require(_0xd425('0x13'));var qs=require(_0xd425('0x14'));var as=require(_0xd425('0x15'));var hardwareService=require(_0xd425('0x16'));var logger=require(_0xd425('0x17'))(_0xd425('0x18'));var utils=require(_0xd425('0x19'));var config=require(_0xd425('0x1a'));var licenseUtil=require(_0xd425('0x1b'));var db=require(_0xd425('0x1c'))['db'];function respondWithStatusCode(_0x9bb611,_0x3cacf7){_0x3cacf7=_0x3cacf7||0xcc;return function(_0x3b5de8){if(_0x3b5de8){return _0x9bb611[_0xd425('0x1d')](_0x3cacf7);}return _0x9bb611['status'](_0x3cacf7)[_0xd425('0x1e')]();};}function respondWithResult(_0x17a498,_0x336dc3){_0x336dc3=_0x336dc3||0xc8;return function(_0x5d3d60){if(_0x5d3d60){return _0x17a498[_0xd425('0x1f')](_0x336dc3)[_0xd425('0x20')](_0x5d3d60);}};}function respondWithFilteredResult(_0x643fd2,_0x41f34d){return function(_0x1fc822){if(_0x1fc822){var _0x538a0a=typeof _0x41f34d[_0xd425('0x21')]===_0xd425('0x22')&&typeof _0x41f34d[_0xd425('0x23')]===_0xd425('0x22');var _0x5d6585=_0x1fc822[_0xd425('0x24')];var _0x434d97=_0x538a0a?0x0:_0x41f34d[_0xd425('0x21')];var _0x1155bc=_0x538a0a?_0x1fc822['count']:_0x41f34d['offset']+_0x41f34d['limit'];var _0x4b293a;if(_0x1155bc>=_0x5d6585){_0x1155bc=_0x5d6585;_0x4b293a=0xc8;}else{_0x4b293a=0xce;}_0x643fd2[_0xd425('0x1f')](_0x4b293a);return _0x643fd2[_0xd425('0x25')](_0xd425('0x26'),_0x434d97+'-'+_0x1155bc+'/'+_0x5d6585)['json'](_0x1fc822);}return null;};}function patchUpdates(_0x355af0){return function(_0x7e982e){try{jsonpatch['apply'](_0x7e982e,_0x355af0,!![]);}catch(_0x2e1ec4){return BPromise[_0xd425('0x27')](_0x2e1ec4);}return _0x7e982e[_0xd425('0x28')]();};}function saveUpdates(_0x1d3fc0,_0x3e93db){return function(_0xb240c4){if(_0xb240c4){return _0xb240c4[_0xd425('0x29')](_0x1d3fc0)[_0xd425('0x2a')](function(_0x314201){return _0x314201;});}return null;};}function removeEntity(_0x2b030b,_0x151ad9){return function(_0x40e84b){if(_0x40e84b){return _0x40e84b['destroy']()[_0xd425('0x2a')](function(){var _0x264b0e=_0x40e84b[_0xd425('0x2b')]({'plain':!![]});var _0x1908a5=_0xd425('0x2c');return db[_0xd425('0x2d')][_0xd425('0x2e')]({'where':{'type':_0x1908a5,'resourceId':_0x264b0e['id']}})['then'](function(){return _0x40e84b;});})[_0xd425('0x2a')](function(){_0x2b030b[_0xd425('0x1f')](0xcc)[_0xd425('0x1e')]();});}};}function handleEntityNotFound(_0x57c950,_0x27ef8a){return function(_0x3ad9bd){if(!_0x3ad9bd){_0x57c950[_0xd425('0x1d')](0x194);}return _0x3ad9bd;};}function handleError(_0x999fb9,_0x27d29a){_0x27d29a=_0x27d29a||0x1f4;return function(_0x185d7e){logger[_0xd425('0x2f')](_0x185d7e[_0xd425('0x30')]);if(_0x185d7e[_0xd425('0x31')]){delete _0x185d7e[_0xd425('0x31')];}_0x999fb9['status'](_0x27d29a)[_0xd425('0x32')](_0x185d7e);};}exports[_0xd425('0x33')]=function(_0x298602,_0x3695dd){var _0x3275b1={},_0x1abf33={},_0x47405f={'count':0x0,'rows':[]};var _0x40c392=_[_0xd425('0x34')](db[_0xd425('0x35')][_0xd425('0x36')],function(_0x5f3dab){return{'name':_0x5f3dab[_0xd425('0x37')],'type':_0x5f3dab[_0xd425('0x38')][_0xd425('0x39')]};});_0x1abf33[_0xd425('0x3a')]=_[_0xd425('0x34')](_0x40c392,'name');_0x1abf33[_0xd425('0x3b')]=_[_0xd425('0x3c')](_0x298602['query']);_0x1abf33['filters']=_['intersection'](_0x1abf33[_0xd425('0x3a')],_0x1abf33[_0xd425('0x3b')]);_0x3275b1[_0xd425('0x3d')]=_[_0xd425('0x3e')](_0x1abf33['model'],qs[_0xd425('0x3f')](_0x298602[_0xd425('0x3b')][_0xd425('0x3f')]));_0x3275b1[_0xd425('0x3d')]=_0x3275b1[_0xd425('0x3d')][_0xd425('0x40')]?_0x3275b1[_0xd425('0x3d')]:_0x1abf33['model'];if(!_0x298602[_0xd425('0x3b')]['hasOwnProperty'](_0xd425('0x41'))){_0x3275b1[_0xd425('0x23')]=qs[_0xd425('0x23')](_0x298602['query'][_0xd425('0x23')]);_0x3275b1[_0xd425('0x21')]=qs[_0xd425('0x21')](_0x298602[_0xd425('0x3b')]['offset']);}_0x3275b1[_0xd425('0x42')]=qs[_0xd425('0x43')](_0x298602['query']['sort']);_0x3275b1['where']=qs[_0xd425('0x44')](_[_0xd425('0x45')](_0x298602[_0xd425('0x3b')],_0x1abf33['filters']),_0x40c392);if(_0x298602['query']['filter']){_0x3275b1[_0xd425('0x46')]=_[_0xd425('0x47')](_0x3275b1[_0xd425('0x46')],{'$or':_[_0xd425('0x34')](_0x40c392,function(_0xa9fd7c){if(_0xa9fd7c[_0xd425('0x38')]!==_0xd425('0x48')){var _0x4b922f={};_0x4b922f[_0xa9fd7c[_0xd425('0x31')]]={'$like':'%'+_0x298602[_0xd425('0x3b')][_0xd425('0x49')]+'%'};return _0x4b922f;}})});}_0x3275b1=_['merge']({},_0x3275b1,_0x298602[_0xd425('0x4a')]);var _0x2dffc7={'where':_0x3275b1[_0xd425('0x46')]};return db['AnalyticMetric'][_0xd425('0x24')](_0x2dffc7)[_0xd425('0x2a')](function(_0x1c5ba6){_0x47405f[_0xd425('0x24')]=_0x1c5ba6;if(_0x298602['query'][_0xd425('0x4b')]){_0x3275b1[_0xd425('0x4c')]=[{'all':!![]}];}return db[_0xd425('0x35')][_0xd425('0x4d')](_0x3275b1);})[_0xd425('0x2a')](function(_0x2f6bf7){_0x47405f[_0xd425('0x4e')]=_0x2f6bf7;return _0x47405f;})['then'](respondWithFilteredResult(_0x3695dd,_0x3275b1))[_0xd425('0x4f')](handleError(_0x3695dd,null));};exports[_0xd425('0x50')]=function(_0x5b65fe,_0x1a44a8){var _0x491c51={'raw':!![],'where':{'id':_0x5b65fe[_0xd425('0x51')]['id']}},_0x5e12bf={};_0x5e12bf['model']=_[_0xd425('0x3c')](db['AnalyticMetric'][_0xd425('0x36')]);_0x5e12bf[_0xd425('0x3b')]=_[_0xd425('0x3c')](_0x5b65fe[_0xd425('0x3b')]);_0x5e12bf[_0xd425('0x44')]=_['intersection'](_0x5e12bf[_0xd425('0x3a')],_0x5e12bf['query']);_0x491c51[_0xd425('0x3d')]=_['intersection'](_0x5e12bf[_0xd425('0x3a')],qs[_0xd425('0x3f')](_0x5b65fe[_0xd425('0x3b')][_0xd425('0x3f')]));_0x491c51[_0xd425('0x3d')]=_0x491c51['attributes'][_0xd425('0x40')]?_0x491c51[_0xd425('0x3d')]:_0x5e12bf[_0xd425('0x3a')];if(_0x5b65fe[_0xd425('0x3b')][_0xd425('0x4b')]){_0x491c51['include']=[{'all':!![]}];}_0x491c51=_[_0xd425('0x47')]({},_0x491c51,_0x5b65fe[_0xd425('0x4a')]);return db[_0xd425('0x35')][_0xd425('0x52')](_0x491c51)[_0xd425('0x2a')](handleEntityNotFound(_0x1a44a8,null))[_0xd425('0x2a')](respondWithResult(_0x1a44a8,null))['catch'](handleError(_0x1a44a8,null));};exports[_0xd425('0x53')]=function(_0x128cb3,_0x5bfac6){return db[_0xd425('0x35')][_0xd425('0x53')](_0x128cb3[_0xd425('0x54')],{})[_0xd425('0x2a')](function(_0x5c0219){var _0x54f1d=_0x128cb3[_0xd425('0x55')][_0xd425('0x2b')]({'plain':!![]});if(!_0x54f1d)throw new Error(_0xd425('0x56'));if(_0x54f1d[_0xd425('0x57')]==='user'){var _0x4be6fa=_0x5c0219[_0xd425('0x2b')]({'plain':!![]});var _0x5496d8=_0xd425('0x2c');return db[_0xd425('0x58')]['find']({'where':{'name':_0x5496d8,'userProfileId':_0x54f1d[_0xd425('0x59')]},'raw':!![]})['then'](function(_0x48d5b8){if(_0x48d5b8&&_0x48d5b8[_0xd425('0x5a')]===0x0){return db[_0xd425('0x2d')][_0xd425('0x53')]({'name':_0x4be6fa[_0xd425('0x31')],'resourceId':_0x4be6fa['id'],'type':_0x48d5b8[_0xd425('0x31')],'sectionId':_0x48d5b8['id']},{})[_0xd425('0x2a')](function(){return _0x5c0219;});}else{return _0x5c0219;}})[_0xd425('0x4f')](function(_0x4118fe){logger['error'](_0xd425('0x5b'),_0x4118fe);throw _0x4118fe;});}return _0x5c0219;})[_0xd425('0x2a')](respondWithResult(_0x5bfac6,0xc9))[_0xd425('0x4f')](handleError(_0x5bfac6,null));};exports[_0xd425('0x29')]=function(_0x7b1080,_0x1c80c2){if(_0x7b1080[_0xd425('0x54')]['id']){delete _0x7b1080[_0xd425('0x54')]['id'];}return db['AnalyticMetric']['find']({'where':{'id':_0x7b1080['params']['id']}})[_0xd425('0x2a')](handleEntityNotFound(_0x1c80c2,null))[_0xd425('0x2a')](saveUpdates(_0x7b1080[_0xd425('0x54')],null))[_0xd425('0x2a')](respondWithResult(_0x1c80c2,null))['catch'](handleError(_0x1c80c2,null));};exports['destroy']=function(_0x499a60,_0x5e1294){return db[_0xd425('0x35')][_0xd425('0x52')]({'where':{'id':_0x499a60['params']['id']}})[_0xd425('0x2a')](handleEntityNotFound(_0x5e1294,null))[_0xd425('0x2a')](removeEntity(_0x5e1294,null))[_0xd425('0x4f')](handleError(_0x5e1294,null));};
\ No newline at end of file
+var _0x00bb=['create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','error','body','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','path','sox','lodash','squel','crypto','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../mysqldb','sendStatus','status','json','undefined','limit','offset','apply','reject','update','destroy','get','Metrics','then','stack','name','send','map','AnalyticMetric','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','count','includeAll','include','findAll','rows','catch','show','params','keys','find'];(function(_0xb5282d,_0x29ebd0){var _0x9cd93b=function(_0x3970ed){while(--_0x3970ed){_0xb5282d['push'](_0xb5282d['shift']());}};_0x9cd93b(++_0x29ebd0);}(_0x00bb,0x1d8));var _0xb00b=function(_0x4e9628,_0x250573){_0x4e9628=_0x4e9628-0x0;var _0x27bc8c=_0x00bb[_0x4e9628];return _0x27bc8c;};'use strict';var emlformat=require(_0xb00b('0x0'));var rimraf=require(_0xb00b('0x1'));var zipdir=require(_0xb00b('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb00b('0x3'));var moment=require('moment');var BPromise=require(_0xb00b('0x4'));var Mustache=require(_0xb00b('0x5'));var util=require('util');var path=require(_0xb00b('0x6'));var sox=require(_0xb00b('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb00b('0x8'));var squel=require(_0xb00b('0x9'));var crypto=require(_0xb00b('0xa'));var jsforce=require(_0xb00b('0xb'));var deskjs=require(_0xb00b('0xc'));var toCsv=require(_0xb00b('0xd'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xb00b('0xe'));var authService=require(_0xb00b('0xf'));var qs=require(_0xb00b('0x10'));var as=require(_0xb00b('0x11'));var hardwareService=require(_0xb00b('0x12'));var logger=require('../../config/logger')(_0xb00b('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xb00b('0x14'))['db'];function respondWithStatusCode(_0x2d8ddf,_0x1be8aa){_0x1be8aa=_0x1be8aa||0xcc;return function(_0x466b9b){if(_0x466b9b){return _0x2d8ddf[_0xb00b('0x15')](_0x1be8aa);}return _0x2d8ddf[_0xb00b('0x16')](_0x1be8aa)['end']();};}function respondWithResult(_0x218de2,_0xb0d42e){_0xb0d42e=_0xb0d42e||0xc8;return function(_0x482fe6){if(_0x482fe6){return _0x218de2[_0xb00b('0x16')](_0xb0d42e)[_0xb00b('0x17')](_0x482fe6);}};}function respondWithFilteredResult(_0x540b79,_0x5da36b){return function(_0x9b471e){if(_0x9b471e){var _0x4dcd45=typeof _0x5da36b['offset']===_0xb00b('0x18')&&typeof _0x5da36b[_0xb00b('0x19')]===_0xb00b('0x18');var _0xbb72fc=_0x9b471e['count'];var _0x2a7231=_0x4dcd45?0x0:_0x5da36b['offset'];var _0x415f91=_0x4dcd45?_0x9b471e['count']:_0x5da36b[_0xb00b('0x1a')]+_0x5da36b['limit'];var _0xb26ebb;if(_0x415f91>=_0xbb72fc){_0x415f91=_0xbb72fc;_0xb26ebb=0xc8;}else{_0xb26ebb=0xce;}_0x540b79[_0xb00b('0x16')](_0xb26ebb);return _0x540b79['set']('Content-Range',_0x2a7231+'-'+_0x415f91+'/'+_0xbb72fc)[_0xb00b('0x17')](_0x9b471e);}return null;};}function patchUpdates(_0x4a334b){return function(_0x1344c4){try{jsonpatch[_0xb00b('0x1b')](_0x1344c4,_0x4a334b,!![]);}catch(_0x2fe48d){return BPromise[_0xb00b('0x1c')](_0x2fe48d);}return _0x1344c4['save']();};}function saveUpdates(_0x362ee0,_0x4df284){return function(_0x25a973){if(_0x25a973){return _0x25a973[_0xb00b('0x1d')](_0x362ee0)['then'](function(_0x231293){return _0x231293;});}return null;};}function removeEntity(_0x2896d1,_0x520444){return function(_0x3ab3cc){if(_0x3ab3cc){return _0x3ab3cc[_0xb00b('0x1e')]()['then'](function(){var _0x44efe5=_0x3ab3cc[_0xb00b('0x1f')]({'plain':!![]});var _0x3c9500=_0xb00b('0x20');return db['UserProfileResource']['destroy']({'where':{'type':_0x3c9500,'resourceId':_0x44efe5['id']}})[_0xb00b('0x21')](function(){return _0x3ab3cc;});})['then'](function(){_0x2896d1['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x16ac55,_0x73b6b0){return function(_0x2592cf){if(!_0x2592cf){_0x16ac55[_0xb00b('0x15')](0x194);}return _0x2592cf;};}function handleError(_0x1f14fa,_0x197379){_0x197379=_0x197379||0x1f4;return function(_0x15d3b9){logger['error'](_0x15d3b9[_0xb00b('0x22')]);if(_0x15d3b9['name']){delete _0x15d3b9[_0xb00b('0x23')];}_0x1f14fa[_0xb00b('0x16')](_0x197379)[_0xb00b('0x24')](_0x15d3b9);};}exports['index']=function(_0x2fc11a,_0x280ed3){var _0x16fbd5={},_0x183233={},_0x303625={'count':0x0,'rows':[]};var _0x2b9824=_[_0xb00b('0x25')](db[_0xb00b('0x26')][_0xb00b('0x27')],function(_0x54e247){return{'name':_0x54e247[_0xb00b('0x28')],'type':_0x54e247[_0xb00b('0x29')]['key']};});_0x183233[_0xb00b('0x2a')]=_[_0xb00b('0x25')](_0x2b9824,'name');_0x183233[_0xb00b('0x2b')]=_['keys'](_0x2fc11a[_0xb00b('0x2b')]);_0x183233[_0xb00b('0x2c')]=_[_0xb00b('0x2d')](_0x183233[_0xb00b('0x2a')],_0x183233[_0xb00b('0x2b')]);_0x16fbd5[_0xb00b('0x2e')]=_[_0xb00b('0x2d')](_0x183233['model'],qs['fields'](_0x2fc11a['query'][_0xb00b('0x2f')]));_0x16fbd5[_0xb00b('0x2e')]=_0x16fbd5[_0xb00b('0x2e')][_0xb00b('0x30')]?_0x16fbd5['attributes']:_0x183233[_0xb00b('0x2a')];if(!_0x2fc11a[_0xb00b('0x2b')][_0xb00b('0x31')](_0xb00b('0x32'))){_0x16fbd5[_0xb00b('0x19')]=qs[_0xb00b('0x19')](_0x2fc11a[_0xb00b('0x2b')][_0xb00b('0x19')]);_0x16fbd5['offset']=qs['offset'](_0x2fc11a[_0xb00b('0x2b')]['offset']);}_0x16fbd5[_0xb00b('0x33')]=qs[_0xb00b('0x34')](_0x2fc11a[_0xb00b('0x2b')][_0xb00b('0x34')]);_0x16fbd5[_0xb00b('0x35')]=qs[_0xb00b('0x2c')](_[_0xb00b('0x36')](_0x2fc11a['query'],_0x183233[_0xb00b('0x2c')]),_0x2b9824);if(_0x2fc11a[_0xb00b('0x2b')][_0xb00b('0x37')]){_0x16fbd5[_0xb00b('0x35')]=_[_0xb00b('0x38')](_0x16fbd5[_0xb00b('0x35')],{'$or':_['map'](_0x2b9824,function(_0x36980a){if(_0x36980a[_0xb00b('0x29')]!=='VIRTUAL'){var _0x17ff34={};_0x17ff34[_0x36980a[_0xb00b('0x23')]]={'$like':'%'+_0x2fc11a[_0xb00b('0x2b')][_0xb00b('0x37')]+'%'};return _0x17ff34;}})});}_0x16fbd5=_[_0xb00b('0x38')]({},_0x16fbd5,_0x2fc11a['options']);var _0x14ff6a={'where':_0x16fbd5[_0xb00b('0x35')]};return db[_0xb00b('0x26')][_0xb00b('0x39')](_0x14ff6a)['then'](function(_0x4867fe){_0x303625[_0xb00b('0x39')]=_0x4867fe;if(_0x2fc11a[_0xb00b('0x2b')][_0xb00b('0x3a')]){_0x16fbd5[_0xb00b('0x3b')]=[{'all':!![]}];}return db[_0xb00b('0x26')][_0xb00b('0x3c')](_0x16fbd5);})[_0xb00b('0x21')](function(_0x493841){_0x303625[_0xb00b('0x3d')]=_0x493841;return _0x303625;})[_0xb00b('0x21')](respondWithFilteredResult(_0x280ed3,_0x16fbd5))[_0xb00b('0x3e')](handleError(_0x280ed3,null));};exports[_0xb00b('0x3f')]=function(_0x302ded,_0x1dc4c5){var _0x2e3d83={'raw':!![],'where':{'id':_0x302ded[_0xb00b('0x40')]['id']}},_0x974a29={};_0x974a29[_0xb00b('0x2a')]=_[_0xb00b('0x41')](db[_0xb00b('0x26')]['rawAttributes']);_0x974a29[_0xb00b('0x2b')]=_[_0xb00b('0x41')](_0x302ded[_0xb00b('0x2b')]);_0x974a29[_0xb00b('0x2c')]=_[_0xb00b('0x2d')](_0x974a29[_0xb00b('0x2a')],_0x974a29[_0xb00b('0x2b')]);_0x2e3d83[_0xb00b('0x2e')]=_[_0xb00b('0x2d')](_0x974a29[_0xb00b('0x2a')],qs[_0xb00b('0x2f')](_0x302ded[_0xb00b('0x2b')]['fields']));_0x2e3d83['attributes']=_0x2e3d83['attributes'][_0xb00b('0x30')]?_0x2e3d83[_0xb00b('0x2e')]:_0x974a29['model'];if(_0x302ded[_0xb00b('0x2b')][_0xb00b('0x3a')]){_0x2e3d83[_0xb00b('0x3b')]=[{'all':!![]}];}_0x2e3d83=_[_0xb00b('0x38')]({},_0x2e3d83,_0x302ded['options']);return db['AnalyticMetric'][_0xb00b('0x42')](_0x2e3d83)[_0xb00b('0x21')](handleEntityNotFound(_0x1dc4c5,null))['then'](respondWithResult(_0x1dc4c5,null))['catch'](handleError(_0x1dc4c5,null));};exports[_0xb00b('0x43')]=function(_0x3a205d,_0x4e0be4){return db[_0xb00b('0x26')]['create'](_0x3a205d['body'],{})['then'](function(_0x465d90){var _0x481515=_0x3a205d[_0xb00b('0x44')][_0xb00b('0x1f')]({'plain':!![]});if(!_0x481515)throw new Error(_0xb00b('0x45'));if(_0x481515[_0xb00b('0x46')]===_0xb00b('0x44')){var _0xda60ca=_0x465d90['get']({'plain':!![]});var _0x5bd40c=_0xb00b('0x20');return db[_0xb00b('0x47')]['find']({'where':{'name':_0x5bd40c,'userProfileId':_0x481515[_0xb00b('0x48')]},'raw':!![]})[_0xb00b('0x21')](function(_0x57f6ab){if(_0x57f6ab&&_0x57f6ab[_0xb00b('0x49')]===0x0){return db[_0xb00b('0x4a')][_0xb00b('0x43')]({'name':_0xda60ca['name'],'resourceId':_0xda60ca['id'],'type':_0x57f6ab['name'],'sectionId':_0x57f6ab['id']},{})[_0xb00b('0x21')](function(){return _0x465d90;});}else{return _0x465d90;}})[_0xb00b('0x3e')](function(_0x12737d){logger[_0xb00b('0x4b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x12737d);throw _0x12737d;});}return _0x465d90;})[_0xb00b('0x21')](respondWithResult(_0x4e0be4,0xc9))[_0xb00b('0x3e')](handleError(_0x4e0be4,null));};exports['update']=function(_0x4cd9fd,_0x160965){if(_0x4cd9fd['body']['id']){delete _0x4cd9fd[_0xb00b('0x4c')]['id'];}return db[_0xb00b('0x26')][_0xb00b('0x42')]({'where':{'id':_0x4cd9fd[_0xb00b('0x40')]['id']}})[_0xb00b('0x21')](handleEntityNotFound(_0x160965,null))[_0xb00b('0x21')](saveUpdates(_0x4cd9fd['body'],null))[_0xb00b('0x21')](respondWithResult(_0x160965,null))['catch'](handleError(_0x160965,null));};exports[_0xb00b('0x1e')]=function(_0x98caa9,_0x4129ba){return db['AnalyticMetric'][_0xb00b('0x42')]({'where':{'id':_0x98caa9[_0xb00b('0x40')]['id']}})[_0xb00b('0x21')](handleEntityNotFound(_0x4129ba,null))['then'](removeEntity(_0x4129ba,null))[_0xb00b('0x3e')](handleError(_0x4129ba,null));};
\ No newline at end of file
index 5f3c4db..13480cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a2a=['analytics_metrics','lodash','util','../../config/logger','api','path','rimraf','./analyticMetric.attributes','exports','define'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0x5a2a,0x1c3));var _0xa5a2=function(_0x1eb8a6,_0x4b531f){_0x1eb8a6=_0x1eb8a6-0x0;var _0x3e0a80=_0x5a2a[_0x1eb8a6];return _0x3e0a80;};'use strict';var _=require(_0xa5a2('0x0'));var util=require(_0xa5a2('0x1'));var logger=require(_0xa5a2('0x2'))(_0xa5a2('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xa5a2('0x4'));var rimraf=require(_0xa5a2('0x5'));var config=require('../../config/environment');var attributes=require(_0xa5a2('0x6'));module[_0xa5a2('0x7')]=function(_0x2e97d3,_0x55728b){return _0x2e97d3[_0xa5a2('0x8')]('AnalyticMetric',attributes,{'tableName':_0xa5a2('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9829=['./analyticMetric.attributes','exports','define','AnalyticMetric','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf'];(function(_0x456a4b,_0x51df8){var _0x42957c=function(_0x431de8){while(--_0x431de8){_0x456a4b['push'](_0x456a4b['shift']());}};_0x42957c(++_0x51df8);}(_0x9829,0xc4));var _0x9982=function(_0x38b14f,_0xd08fa8){_0x38b14f=_0x38b14f-0x0;var _0x22a324=_0x9829[_0x38b14f];return _0x22a324;};'use strict';var _=require(_0x9982('0x0'));var util=require(_0x9982('0x1'));var logger=require(_0x9982('0x2'))(_0x9982('0x3'));var moment=require(_0x9982('0x4'));var BPromise=require('bluebird');var rp=require(_0x9982('0x5'));var fs=require('fs');var path=require(_0x9982('0x6'));var rimraf=require(_0x9982('0x7'));var config=require('../../config/environment');var attributes=require(_0x9982('0x8'));module[_0x9982('0x9')]=function(_0x58f8fe,_0x500dfd){return _0x58f8fe[_0x9982('0xa')](_0x9982('0xb'),attributes,{'tableName':'analytics_metrics','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 797f33a..7ccc7d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x801c=['http','request\x20sent','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify','error','AnalyticMetric,\x20%s,\x20%s','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x801c,0x181));var _0xc801=function(_0x12dd20,_0x110895){_0x12dd20=_0x12dd20-0x0;var _0x1ff3f2=_0x801c[_0x12dd20];return _0x1ff3f2;};'use strict';var _=require(_0xc801('0x0'));var util=require(_0xc801('0x1'));var moment=require(_0xc801('0x2'));var BPromise=require(_0xc801('0x3'));var rs=require(_0xc801('0x4'));var fs=require('fs');var Redis=require(_0xc801('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xc801('0x6'));var logger=require(_0xc801('0x7'))(_0xc801('0x8'));var config=require(_0xc801('0x9'));var jayson=require(_0xc801('0xa'));var client=jayson['client'][_0xc801('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1217dc,_0x2d5533,_0x234cab){return new BPromise(function(_0x1ff9bd,_0x3d6c6c){return client['request'](_0x1217dc,_0x234cab)['then'](function(_0x31b4d5){logger['info']('AnalyticMetric,\x20%s,\x20%s',_0x2d5533,_0xc801('0xc'));logger[_0xc801('0xd')](_0xc801('0xe'),_0x2d5533,_0xc801('0xc'),JSON[_0xc801('0xf')](_0x31b4d5));if(_0x31b4d5[_0xc801('0x10')]){if(_0x31b4d5[_0xc801('0x10')]['code']===0x1f4){logger[_0xc801('0x10')]('AnalyticMetric,\x20%s,\x20%s',_0x2d5533,_0x31b4d5[_0xc801('0x10')]['message']);return _0x3d6c6c(_0x31b4d5['error']['message']);}logger['error'](_0xc801('0x11'),_0x2d5533,_0x31b4d5[_0xc801('0x10')][_0xc801('0x12')]);return _0x1ff9bd(_0x31b4d5['error'][_0xc801('0x12')]);}else{logger[_0xc801('0x13')](_0xc801('0x11'),_0x2d5533,_0xc801('0xc'));_0x1ff9bd(_0x31b4d5[_0xc801('0x14')][_0xc801('0x12')]);}})[_0xc801('0x15')](function(_0x591744){logger[_0xc801('0x10')](_0xc801('0x11'),_0x2d5533,_0x591744);_0x3d6c6c(_0x591744);});});}
\ No newline at end of file
+var _0xf97d=['result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','../../config/environment','client','http','request','info','AnalyticMetric,\x20%s,\x20%s','request\x20sent','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x52b5f5,_0x45adab){var _0x247d67=function(_0x48758e){while(--_0x48758e){_0x52b5f5['push'](_0x52b5f5['shift']());}};_0x247d67(++_0x45adab);}(_0xf97d,0x9c));var _0xdf97=function(_0x213c6,_0x57cda2){_0x213c6=_0x213c6-0x0;var _0x19c241=_0xf97d[_0x213c6];return _0x19c241;};'use strict';var _=require(_0xdf97('0x0'));var util=require(_0xdf97('0x1'));var moment=require(_0xdf97('0x2'));var BPromise=require(_0xdf97('0x3'));var rs=require(_0xdf97('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xdf97('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xdf97('0x6'))('rpc');var config=require(_0xdf97('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xdf97('0x8')][_0xdf97('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3f95e0,_0x106678,_0x47df83){return new BPromise(function(_0x5535c4,_0x273441){return client[_0xdf97('0xa')](_0x3f95e0,_0x47df83)['then'](function(_0x95ad92){logger[_0xdf97('0xb')](_0xdf97('0xc'),_0x106678,_0xdf97('0xd'));logger[_0xdf97('0xe')](_0xdf97('0xf'),_0x106678,_0xdf97('0xd'),JSON[_0xdf97('0x10')](_0x95ad92));if(_0x95ad92[_0xdf97('0x11')]){if(_0x95ad92[_0xdf97('0x11')][_0xdf97('0x12')]===0x1f4){logger[_0xdf97('0x11')](_0xdf97('0xc'),_0x106678,_0x95ad92[_0xdf97('0x11')]['message']);return _0x273441(_0x95ad92[_0xdf97('0x11')][_0xdf97('0x13')]);}logger[_0xdf97('0x11')](_0xdf97('0xc'),_0x106678,_0x95ad92[_0xdf97('0x11')][_0xdf97('0x13')]);return _0x5535c4(_0x95ad92[_0xdf97('0x11')][_0xdf97('0x13')]);}else{logger[_0xdf97('0xb')]('AnalyticMetric,\x20%s,\x20%s',_0x106678,_0xdf97('0xd'));_0x5535c4(_0x95ad92[_0xdf97('0x14')][_0xdf97('0x13')]);}})[_0xdf97('0x15')](function(_0x8c4684){logger[_0xdf97('0x11')](_0xdf97('0xc'),_0x106678,_0x8c4684);_0x273441(_0x8c4684);});});}
\ No newline at end of file
index 3d6572c..fb8e656 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd7b=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticMetric.controller','get','isAuthenticated','index','/:id','show','create','put','update','delete','destroy','exports','util','path','connect-timeout','express'];(function(_0x7e7e8a,_0x333912){var _0x3e4085=function(_0x5ebf0f){while(--_0x5ebf0f){_0x7e7e8a['push'](_0x7e7e8a['shift']());}};_0x3e4085(++_0x333912);}(_0xfd7b,0x1df));var _0xbfd7=function(_0x9aada2,_0xd2d349){_0x9aada2=_0x9aada2-0x0;var _0x196dff=_0xfd7b[_0x9aada2];return _0x196dff;};'use strict';var multer=require('multer');var util=require(_0xbfd7('0x0'));var path=require(_0xbfd7('0x1'));var timeout=require(_0xbfd7('0x2'));var express=require(_0xbfd7('0x3'));var router=express[_0xbfd7('0x4')]();var fs_extra=require(_0xbfd7('0x5'));var auth=require(_0xbfd7('0x6'));var interaction=require(_0xbfd7('0x7'));var config=require(_0xbfd7('0x8'));var controller=require(_0xbfd7('0x9'));router[_0xbfd7('0xa')]('/',auth[_0xbfd7('0xb')](),controller[_0xbfd7('0xc')]);router['get'](_0xbfd7('0xd'),auth['isAuthenticated'](),controller[_0xbfd7('0xe')]);router['post']('/',auth[_0xbfd7('0xb')](),controller[_0xbfd7('0xf')]);router[_0xbfd7('0x10')](_0xbfd7('0xd'),auth['isAuthenticated'](),controller[_0xbfd7('0x11')]);router[_0xbfd7('0x12')]('/:id',auth['isAuthenticated'](),controller[_0xbfd7('0x13')]);module[_0xbfd7('0x14')]=router;
\ No newline at end of file
+var _0xe7de=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticMetric.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','exports','multer','util','path'];(function(_0x2c6c57,_0xcbed48){var _0x386cc7=function(_0x473fbc){while(--_0x473fbc){_0x2c6c57['push'](_0x2c6c57['shift']());}};_0x386cc7(++_0xcbed48);}(_0xe7de,0x165));var _0xee7d=function(_0x1a3f02,_0x16bf8e){_0x1a3f02=_0x1a3f02-0x0;var _0x2f9fea=_0xe7de[_0x1a3f02];return _0x2f9fea;};'use strict';var multer=require(_0xee7d('0x0'));var util=require(_0xee7d('0x1'));var path=require(_0xee7d('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xee7d('0x3')]();var fs_extra=require(_0xee7d('0x4'));var auth=require(_0xee7d('0x5'));var interaction=require(_0xee7d('0x6'));var config=require(_0xee7d('0x7'));var controller=require(_0xee7d('0x8'));router[_0xee7d('0x9')]('/',auth[_0xee7d('0xa')](),controller[_0xee7d('0xb')]);router[_0xee7d('0x9')](_0xee7d('0xc'),auth[_0xee7d('0xa')](),controller[_0xee7d('0xd')]);router[_0xee7d('0xe')]('/',auth['isAuthenticated'](),controller[_0xee7d('0xf')]);router[_0xee7d('0x10')](_0xee7d('0xc'),auth[_0xee7d('0xa')](),controller[_0xee7d('0x11')]);router[_0xee7d('0x12')]('/:id',auth[_0xee7d('0xa')](),controller['destroy']);module[_0xee7d('0x13')]=router;
\ No newline at end of file
index 3b71f8c..b5fb739 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a38=['sequelize','exports','TEXT'];(function(_0x59309f,_0x4feec4){var _0x21f015=function(_0x2091f4){while(--_0x2091f4){_0x59309f['push'](_0x59309f['shift']());}};_0x21f015(++_0x4feec4);}(_0x9a38,0xfc));var _0x89a3=function(_0x350823,_0x2ff503){_0x350823=_0x350823-0x0;var _0x1ba2d0=_0x9a38[_0x350823];return _0x1ba2d0;};'use strict';var Sequelize=require(_0x89a3('0x0'));module[_0x89a3('0x1')]={'tree':{'type':Sequelize[_0x89a3('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0xab62=['exports'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xab62,0x1f2));var _0x2ab6=function(_0x5e5ffa,_0x466e42){_0x5e5ffa=_0x5e5ffa-0x0;var _0x2e08b5=_0xab62[_0x5e5ffa];return _0x2e08b5;};'use strict';var Sequelize=require('sequelize');module[_0x2ab6('0x0')]={'tree':{'type':Sequelize['TEXT'],'allowNull':![]}};
\ No newline at end of file
index f3d76f2..9521ee0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4deb=['update','destroy','stack','name','index','map','AnalyticTreeReport','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','then','includeAll','include','rows','catch','find','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','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/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save'];(function(_0x486f4a,_0x478dc7){var _0x135d99=function(_0x434008){while(--_0x434008){_0x486f4a['push'](_0x486f4a['shift']());}};_0x135d99(++_0x478dc7);}(_0x4deb,0x74));var _0xb4de=function(_0x404cde,_0x27b51c){_0x404cde=_0x404cde-0x0;var _0x139882=_0x4deb[_0x404cde];return _0x139882;};'use strict';var emlformat=require(_0xb4de('0x0'));var rimraf=require(_0xb4de('0x1'));var zipdir=require(_0xb4de('0x2'));var jsonpatch=require(_0xb4de('0x3'));var rp=require('request-promise');var moment=require(_0xb4de('0x4'));var BPromise=require(_0xb4de('0x5'));var Mustache=require('mustache');var util=require(_0xb4de('0x6'));var path=require('path');var sox=require(_0xb4de('0x7'));var csv=require(_0xb4de('0x8'));var ejs=require(_0xb4de('0x9'));var fs=require('fs');var fs_extra=require(_0xb4de('0xa'));var _=require(_0xb4de('0xb'));var squel=require('squel');var crypto=require(_0xb4de('0xc'));var jsforce=require(_0xb4de('0xd'));var deskjs=require(_0xb4de('0xe'));var toCsv=require(_0xb4de('0x8'));var querystring=require('querystring');var Papa=require(_0xb4de('0xf'));var Redis=require(_0xb4de('0x10'));var authService=require(_0xb4de('0x11'));var qs=require(_0xb4de('0x12'));var as=require(_0xb4de('0x13'));var hardwareService=require(_0xb4de('0x14'));var logger=require(_0xb4de('0x15'))(_0xb4de('0x16'));var utils=require(_0xb4de('0x17'));var config=require(_0xb4de('0x18'));var licenseUtil=require(_0xb4de('0x19'));var db=require(_0xb4de('0x1a'))['db'];function respondWithStatusCode(_0xbf27bc,_0x206317){_0x206317=_0x206317||0xcc;return function(_0x3ff2f7){if(_0x3ff2f7){return _0xbf27bc[_0xb4de('0x1b')](_0x206317);}return _0xbf27bc[_0xb4de('0x1c')](_0x206317)[_0xb4de('0x1d')]();};}function respondWithResult(_0x4af619,_0x33f715){_0x33f715=_0x33f715||0xc8;return function(_0xf75e0b){if(_0xf75e0b){return _0x4af619[_0xb4de('0x1c')](_0x33f715)[_0xb4de('0x1e')](_0xf75e0b);}};}function respondWithFilteredResult(_0x219b69,_0x4de05c){return function(_0x475aea){if(_0x475aea){var _0x4df5ec=typeof _0x4de05c[_0xb4de('0x1f')]===_0xb4de('0x20')&&typeof _0x4de05c[_0xb4de('0x21')]===_0xb4de('0x20');var _0x215546=_0x475aea[_0xb4de('0x22')];var _0x41cb90=_0x4df5ec?0x0:_0x4de05c[_0xb4de('0x1f')];var _0x3f831c=_0x4df5ec?_0x475aea['count']:_0x4de05c[_0xb4de('0x1f')]+_0x4de05c[_0xb4de('0x21')];var _0x15265e;if(_0x3f831c>=_0x215546){_0x3f831c=_0x215546;_0x15265e=0xc8;}else{_0x15265e=0xce;}_0x219b69['status'](_0x15265e);return _0x219b69[_0xb4de('0x23')](_0xb4de('0x24'),_0x41cb90+'-'+_0x3f831c+'/'+_0x215546)['json'](_0x475aea);}return null;};}function patchUpdates(_0x245059){return function(_0x35c9d6){try{jsonpatch[_0xb4de('0x25')](_0x35c9d6,_0x245059,!![]);}catch(_0x419db2){return BPromise[_0xb4de('0x26')](_0x419db2);}return _0x35c9d6[_0xb4de('0x27')]();};}function saveUpdates(_0xcdce61,_0x32cd66){return function(_0x4ec95b){if(_0x4ec95b){return _0x4ec95b[_0xb4de('0x28')](_0xcdce61)['then'](function(_0x3e5b52){return _0x3e5b52;});}return null;};}function removeEntity(_0x5218fc,_0x245d8c){return function(_0x2f8113){if(_0x2f8113){return _0x2f8113[_0xb4de('0x29')]()['then'](function(){_0x5218fc['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xaaf1aa,_0x208c59){return function(_0x3541f0){if(!_0x3541f0){_0xaaf1aa[_0xb4de('0x1b')](0x194);}return _0x3541f0;};}function handleError(_0xfd18fb,_0x38efa9){_0x38efa9=_0x38efa9||0x1f4;return function(_0x3fc863){logger['error'](_0x3fc863[_0xb4de('0x2a')]);if(_0x3fc863[_0xb4de('0x2b')]){delete _0x3fc863[_0xb4de('0x2b')];}_0xfd18fb[_0xb4de('0x1c')](_0x38efa9)['send'](_0x3fc863);};}exports[_0xb4de('0x2c')]=function(_0x41bbe8,_0x129ab1){var _0x29d494={},_0x565f33={},_0x138626={'count':0x0,'rows':[]};var _0x1de5fe=_[_0xb4de('0x2d')](db[_0xb4de('0x2e')][_0xb4de('0x2f')],function(_0x16af81){return{'name':_0x16af81[_0xb4de('0x30')],'type':_0x16af81['type'][_0xb4de('0x31')]};});_0x565f33[_0xb4de('0x32')]=_[_0xb4de('0x2d')](_0x1de5fe,_0xb4de('0x2b'));_0x565f33[_0xb4de('0x33')]=_[_0xb4de('0x34')](_0x41bbe8[_0xb4de('0x33')]);_0x565f33[_0xb4de('0x35')]=_[_0xb4de('0x36')](_0x565f33[_0xb4de('0x32')],_0x565f33[_0xb4de('0x33')]);_0x29d494['attributes']=_['intersection'](_0x565f33[_0xb4de('0x32')],qs['fields'](_0x41bbe8['query'][_0xb4de('0x37')]));_0x29d494[_0xb4de('0x38')]=_0x29d494['attributes'][_0xb4de('0x39')]?_0x29d494[_0xb4de('0x38')]:_0x565f33[_0xb4de('0x32')];if(!_0x41bbe8['query'][_0xb4de('0x3a')](_0xb4de('0x3b'))){_0x29d494[_0xb4de('0x21')]=qs[_0xb4de('0x21')](_0x41bbe8[_0xb4de('0x33')]['limit']);_0x29d494[_0xb4de('0x1f')]=qs[_0xb4de('0x1f')](_0x41bbe8['query'][_0xb4de('0x1f')]);}_0x29d494[_0xb4de('0x3c')]=qs['sort'](_0x41bbe8[_0xb4de('0x33')][_0xb4de('0x3d')]);_0x29d494[_0xb4de('0x3e')]=qs[_0xb4de('0x35')](_[_0xb4de('0x3f')](_0x41bbe8['query'],_0x565f33[_0xb4de('0x35')]),_0x1de5fe);if(_0x41bbe8[_0xb4de('0x33')][_0xb4de('0x40')]){_0x29d494[_0xb4de('0x3e')]=_[_0xb4de('0x41')](_0x29d494[_0xb4de('0x3e')],{'$or':_['map'](_0x1de5fe,function(_0x404d15){if(_0x404d15[_0xb4de('0x42')]!==_0xb4de('0x43')){var _0x3467d4={};_0x3467d4[_0x404d15['name']]={'$like':'%'+_0x41bbe8[_0xb4de('0x33')][_0xb4de('0x40')]+'%'};return _0x3467d4;}})});}_0x29d494=_[_0xb4de('0x41')]({},_0x29d494,_0x41bbe8[_0xb4de('0x44')]);var _0x348735={'where':_0x29d494[_0xb4de('0x3e')]};return db[_0xb4de('0x2e')][_0xb4de('0x22')](_0x348735)[_0xb4de('0x45')](function(_0x57d833){_0x138626['count']=_0x57d833;if(_0x41bbe8[_0xb4de('0x33')][_0xb4de('0x46')]){_0x29d494[_0xb4de('0x47')]=[{'all':!![]}];}return db[_0xb4de('0x2e')]['findAll'](_0x29d494);})['then'](function(_0x1bbcd6){_0x138626[_0xb4de('0x48')]=_0x1bbcd6;return _0x138626;})[_0xb4de('0x45')](respondWithFilteredResult(_0x129ab1,_0x29d494))[_0xb4de('0x49')](handleError(_0x129ab1,null));};exports['show']=function(_0x280b6b,_0x58425e){var _0x2066ec={'raw':!![],'where':{'id':_0x280b6b['params']['id']}},_0xe78886={};_0xe78886['model']=_['keys'](db[_0xb4de('0x2e')][_0xb4de('0x2f')]);_0xe78886[_0xb4de('0x33')]=_[_0xb4de('0x34')](_0x280b6b[_0xb4de('0x33')]);_0xe78886['filters']=_['intersection'](_0xe78886[_0xb4de('0x32')],_0xe78886['query']);_0x2066ec[_0xb4de('0x38')]=_[_0xb4de('0x36')](_0xe78886[_0xb4de('0x32')],qs[_0xb4de('0x37')](_0x280b6b[_0xb4de('0x33')][_0xb4de('0x37')]));_0x2066ec[_0xb4de('0x38')]=_0x2066ec[_0xb4de('0x38')][_0xb4de('0x39')]?_0x2066ec[_0xb4de('0x38')]:_0xe78886['model'];if(_0x280b6b[_0xb4de('0x33')][_0xb4de('0x46')]){_0x2066ec['include']=[{'all':!![]}];}_0x2066ec=_[_0xb4de('0x41')]({},_0x2066ec,_0x280b6b[_0xb4de('0x44')]);return db['AnalyticTreeReport'][_0xb4de('0x4a')](_0x2066ec)['then'](handleEntityNotFound(_0x58425e,null))[_0xb4de('0x45')](respondWithResult(_0x58425e,null))[_0xb4de('0x49')](handleError(_0x58425e,null));};exports[_0xb4de('0x4b')]=function(_0x2d480e,_0x3da0bb){return db[_0xb4de('0x2e')][_0xb4de('0x4b')](_0x2d480e[_0xb4de('0x4c')],{})[_0xb4de('0x45')](respondWithResult(_0x3da0bb,0xc9))[_0xb4de('0x49')](handleError(_0x3da0bb,null));};exports['update']=function(_0x44e6b8,_0x2659de){if(_0x44e6b8[_0xb4de('0x4c')]['id']){delete _0x44e6b8[_0xb4de('0x4c')]['id'];}return db[_0xb4de('0x2e')][_0xb4de('0x4a')]({'where':{'id':_0x44e6b8[_0xb4de('0x4d')]['id']}})[_0xb4de('0x45')](handleEntityNotFound(_0x2659de,null))[_0xb4de('0x45')](saveUpdates(_0x44e6b8[_0xb4de('0x4c')],null))['then'](respondWithResult(_0x2659de,null))['catch'](handleError(_0x2659de,null));};exports[_0xb4de('0x29')]=function(_0x107817,_0x1027f6){return db[_0xb4de('0x2e')][_0xb4de('0x4a')]({'where':{'id':_0x107817['params']['id']}})[_0xb4de('0x45')](handleEntityNotFound(_0x1027f6,null))[_0xb4de('0x45')](removeEntity(_0x1027f6,null))[_0xb4de('0x49')](handleError(_0x1027f6,null));};
\ No newline at end of file
+var _0xdbd9=['../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','reject','save','update','then','destroy','error','stack','name','index','map','AnalyticTreeReport','rawAttributes','fieldName','type','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','includeAll','include','findAll','catch','show','options','find','create','body','params','eml-format','rimraf','zip-dir','moment','mustache','util','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x1d11ac,_0x42bde5){var _0x5f14d2=function(_0xaf8e0a){while(--_0xaf8e0a){_0x1d11ac['push'](_0x1d11ac['shift']());}};_0x5f14d2(++_0x42bde5);}(_0xdbd9,0x198));var _0x9dbd=function(_0x51bbc0,_0x3d39fc){_0x51bbc0=_0x51bbc0-0x0;var _0x19c350=_0xdbd9[_0x51bbc0];return _0x19c350;};'use strict';var emlformat=require(_0x9dbd('0x0'));var rimraf=require(_0x9dbd('0x1'));var zipdir=require(_0x9dbd('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x9dbd('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x9dbd('0x4'));var util=require(_0x9dbd('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x9dbd('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9dbd('0x7'));var _=require(_0x9dbd('0x8'));var squel=require(_0x9dbd('0x9'));var crypto=require(_0x9dbd('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x9dbd('0xb'));var toCsv=require(_0x9dbd('0x6'));var querystring=require(_0x9dbd('0xc'));var Papa=require('papaparse');var Redis=require(_0x9dbd('0xd'));var authService=require(_0x9dbd('0xe'));var qs=require(_0x9dbd('0xf'));var as=require(_0x9dbd('0x10'));var hardwareService=require(_0x9dbd('0x11'));var logger=require(_0x9dbd('0x12'))(_0x9dbd('0x13'));var utils=require('../../config/utils');var config=require(_0x9dbd('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x9dbd('0x15'))['db'];function respondWithStatusCode(_0x3ebf84,_0x400908){_0x400908=_0x400908||0xcc;return function(_0x34b11a){if(_0x34b11a){return _0x3ebf84[_0x9dbd('0x16')](_0x400908);}return _0x3ebf84[_0x9dbd('0x17')](_0x400908)[_0x9dbd('0x18')]();};}function respondWithResult(_0x1adf2b,_0x5c57a0){_0x5c57a0=_0x5c57a0||0xc8;return function(_0x3e7ab4){if(_0x3e7ab4){return _0x1adf2b['status'](_0x5c57a0)[_0x9dbd('0x19')](_0x3e7ab4);}};}function respondWithFilteredResult(_0x204dca,_0x44a998){return function(_0x397d52){if(_0x397d52){var _0x4ead92=typeof _0x44a998[_0x9dbd('0x1a')]===_0x9dbd('0x1b')&&typeof _0x44a998[_0x9dbd('0x1c')]===_0x9dbd('0x1b');var _0xc839e3=_0x397d52['count'];var _0x5994a6=_0x4ead92?0x0:_0x44a998[_0x9dbd('0x1a')];var _0x2e059d=_0x4ead92?_0x397d52[_0x9dbd('0x1d')]:_0x44a998[_0x9dbd('0x1a')]+_0x44a998[_0x9dbd('0x1c')];var _0x5429ef;if(_0x2e059d>=_0xc839e3){_0x2e059d=_0xc839e3;_0x5429ef=0xc8;}else{_0x5429ef=0xce;}_0x204dca[_0x9dbd('0x17')](_0x5429ef);return _0x204dca[_0x9dbd('0x1e')]('Content-Range',_0x5994a6+'-'+_0x2e059d+'/'+_0xc839e3)['json'](_0x397d52);}return null;};}function patchUpdates(_0x43ffd8){return function(_0xb071d1){try{jsonpatch['apply'](_0xb071d1,_0x43ffd8,!![]);}catch(_0x4baee8){return BPromise[_0x9dbd('0x1f')](_0x4baee8);}return _0xb071d1[_0x9dbd('0x20')]();};}function saveUpdates(_0x184741,_0x290acc){return function(_0x52b01f){if(_0x52b01f){return _0x52b01f[_0x9dbd('0x21')](_0x184741)[_0x9dbd('0x22')](function(_0x2459b2){return _0x2459b2;});}return null;};}function removeEntity(_0x65d0df,_0x3ccd34){return function(_0x24386a){if(_0x24386a){return _0x24386a[_0x9dbd('0x23')]()[_0x9dbd('0x22')](function(){_0x65d0df[_0x9dbd('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5344ac,_0x219417){return function(_0x4f5ff5){if(!_0x4f5ff5){_0x5344ac['sendStatus'](0x194);}return _0x4f5ff5;};}function handleError(_0x5806cc,_0x3ab316){_0x3ab316=_0x3ab316||0x1f4;return function(_0xc0a767){logger[_0x9dbd('0x24')](_0xc0a767[_0x9dbd('0x25')]);if(_0xc0a767[_0x9dbd('0x26')]){delete _0xc0a767[_0x9dbd('0x26')];}_0x5806cc[_0x9dbd('0x17')](_0x3ab316)['send'](_0xc0a767);};}exports[_0x9dbd('0x27')]=function(_0x954341,_0x2d9518){var _0x488b2b={},_0x4a4d9e={},_0x44a322={'count':0x0,'rows':[]};var _0x1efd8f=_[_0x9dbd('0x28')](db[_0x9dbd('0x29')][_0x9dbd('0x2a')],function(_0xcd7380){return{'name':_0xcd7380[_0x9dbd('0x2b')],'type':_0xcd7380[_0x9dbd('0x2c')]['key']};});_0x4a4d9e[_0x9dbd('0x2d')]=_[_0x9dbd('0x28')](_0x1efd8f,'name');_0x4a4d9e['query']=_[_0x9dbd('0x2e')](_0x954341[_0x9dbd('0x2f')]);_0x4a4d9e[_0x9dbd('0x30')]=_[_0x9dbd('0x31')](_0x4a4d9e['model'],_0x4a4d9e[_0x9dbd('0x2f')]);_0x488b2b[_0x9dbd('0x32')]=_[_0x9dbd('0x31')](_0x4a4d9e['model'],qs[_0x9dbd('0x33')](_0x954341[_0x9dbd('0x2f')][_0x9dbd('0x33')]));_0x488b2b['attributes']=_0x488b2b['attributes'][_0x9dbd('0x34')]?_0x488b2b[_0x9dbd('0x32')]:_0x4a4d9e[_0x9dbd('0x2d')];if(!_0x954341[_0x9dbd('0x2f')][_0x9dbd('0x35')](_0x9dbd('0x36'))){_0x488b2b['limit']=qs[_0x9dbd('0x1c')](_0x954341[_0x9dbd('0x2f')][_0x9dbd('0x1c')]);_0x488b2b[_0x9dbd('0x1a')]=qs[_0x9dbd('0x1a')](_0x954341[_0x9dbd('0x2f')][_0x9dbd('0x1a')]);}_0x488b2b[_0x9dbd('0x37')]=qs[_0x9dbd('0x38')](_0x954341['query'][_0x9dbd('0x38')]);_0x488b2b[_0x9dbd('0x39')]=qs[_0x9dbd('0x30')](_[_0x9dbd('0x3a')](_0x954341[_0x9dbd('0x2f')],_0x4a4d9e['filters']),_0x1efd8f);if(_0x954341['query'][_0x9dbd('0x3b')]){_0x488b2b[_0x9dbd('0x39')]=_['merge'](_0x488b2b['where'],{'$or':_['map'](_0x1efd8f,function(_0xd6363a){if(_0xd6363a['type']!=='VIRTUAL'){var _0x30214d={};_0x30214d[_0xd6363a['name']]={'$like':'%'+_0x954341[_0x9dbd('0x2f')][_0x9dbd('0x3b')]+'%'};return _0x30214d;}})});}_0x488b2b=_[_0x9dbd('0x3c')]({},_0x488b2b,_0x954341['options']);var _0x4b7280={'where':_0x488b2b[_0x9dbd('0x39')]};return db[_0x9dbd('0x29')][_0x9dbd('0x1d')](_0x4b7280)[_0x9dbd('0x22')](function(_0x7a9d23){_0x44a322[_0x9dbd('0x1d')]=_0x7a9d23;if(_0x954341[_0x9dbd('0x2f')][_0x9dbd('0x3d')]){_0x488b2b[_0x9dbd('0x3e')]=[{'all':!![]}];}return db['AnalyticTreeReport'][_0x9dbd('0x3f')](_0x488b2b);})[_0x9dbd('0x22')](function(_0x4da5db){_0x44a322['rows']=_0x4da5db;return _0x44a322;})['then'](respondWithFilteredResult(_0x2d9518,_0x488b2b))[_0x9dbd('0x40')](handleError(_0x2d9518,null));};exports[_0x9dbd('0x41')]=function(_0x49ca34,_0x4f61e3){var _0x1849e7={'raw':!![],'where':{'id':_0x49ca34['params']['id']}},_0x3c66da={};_0x3c66da['model']=_[_0x9dbd('0x2e')](db[_0x9dbd('0x29')][_0x9dbd('0x2a')]);_0x3c66da[_0x9dbd('0x2f')]=_['keys'](_0x49ca34['query']);_0x3c66da[_0x9dbd('0x30')]=_['intersection'](_0x3c66da[_0x9dbd('0x2d')],_0x3c66da['query']);_0x1849e7[_0x9dbd('0x32')]=_[_0x9dbd('0x31')](_0x3c66da[_0x9dbd('0x2d')],qs[_0x9dbd('0x33')](_0x49ca34[_0x9dbd('0x2f')][_0x9dbd('0x33')]));_0x1849e7[_0x9dbd('0x32')]=_0x1849e7[_0x9dbd('0x32')][_0x9dbd('0x34')]?_0x1849e7[_0x9dbd('0x32')]:_0x3c66da[_0x9dbd('0x2d')];if(_0x49ca34[_0x9dbd('0x2f')][_0x9dbd('0x3d')]){_0x1849e7['include']=[{'all':!![]}];}_0x1849e7=_[_0x9dbd('0x3c')]({},_0x1849e7,_0x49ca34[_0x9dbd('0x42')]);return db[_0x9dbd('0x29')][_0x9dbd('0x43')](_0x1849e7)['then'](handleEntityNotFound(_0x4f61e3,null))[_0x9dbd('0x22')](respondWithResult(_0x4f61e3,null))[_0x9dbd('0x40')](handleError(_0x4f61e3,null));};exports[_0x9dbd('0x44')]=function(_0x20361f,_0x5afdb4){return db[_0x9dbd('0x29')][_0x9dbd('0x44')](_0x20361f[_0x9dbd('0x45')],{})[_0x9dbd('0x22')](respondWithResult(_0x5afdb4,0xc9))[_0x9dbd('0x40')](handleError(_0x5afdb4,null));};exports[_0x9dbd('0x21')]=function(_0x166043,_0x4c63ea){if(_0x166043[_0x9dbd('0x45')]['id']){delete _0x166043['body']['id'];}return db['AnalyticTreeReport'][_0x9dbd('0x43')]({'where':{'id':_0x166043[_0x9dbd('0x46')]['id']}})['then'](handleEntityNotFound(_0x4c63ea,null))[_0x9dbd('0x22')](saveUpdates(_0x166043['body'],null))[_0x9dbd('0x22')](respondWithResult(_0x4c63ea,null))[_0x9dbd('0x40')](handleError(_0x4c63ea,null));};exports['destroy']=function(_0x4ddcdd,_0x8faf33){return db[_0x9dbd('0x29')]['find']({'where':{'id':_0x4ddcdd[_0x9dbd('0x46')]['id']}})[_0x9dbd('0x22')](handleEntityNotFound(_0x8faf33,null))[_0x9dbd('0x22')](removeEntity(_0x8faf33,null))[_0x9dbd('0x40')](handleError(_0x8faf33,null));};
\ No newline at end of file
index 0e0a25a..47c6a99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0f9=['rimraf','exports','define','AnalyticTreeReport','analytics_report_trees','util','api','moment','request-promise','path'];(function(_0x1ba9d2,_0x5d8007){var _0x59feaf=function(_0x133d23){while(--_0x133d23){_0x1ba9d2['push'](_0x1ba9d2['shift']());}};_0x59feaf(++_0x5d8007);}(_0xc0f9,0x1e5));var _0x9c0f=function(_0x12833b,_0x26c1d2){_0x12833b=_0x12833b-0x0;var _0x3acad3=_0xc0f9[_0x12833b];return _0x3acad3;};'use strict';var _=require('lodash');var util=require(_0x9c0f('0x0'));var logger=require('../../config/logger')(_0x9c0f('0x1'));var moment=require(_0x9c0f('0x2'));var BPromise=require('bluebird');var rp=require(_0x9c0f('0x3'));var fs=require('fs');var path=require(_0x9c0f('0x4'));var rimraf=require(_0x9c0f('0x5'));var config=require('../../config/environment');var attributes=require('./analyticTreeReport.attributes');module[_0x9c0f('0x6')]=function(_0x3affbe,_0x18b851){return _0x3affbe[_0x9c0f('0x7')](_0x9c0f('0x8'),attributes,{'tableName':_0x9c0f('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xea83=['path','rimraf','./analyticTreeReport.attributes','AnalyticTreeReport','lodash','util','bluebird','request-promise'];(function(_0x33b824,_0x76bb79){var _0x329b59=function(_0x12ec66){while(--_0x12ec66){_0x33b824['push'](_0x33b824['shift']());}};_0x329b59(++_0x76bb79);}(_0xea83,0x1f4));var _0x3ea8=function(_0x51b1a5,_0x285a4f){_0x51b1a5=_0x51b1a5-0x0;var _0x15c738=_0xea83[_0x51b1a5];return _0x15c738;};'use strict';var _=require(_0x3ea8('0x0'));var util=require(_0x3ea8('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x3ea8('0x2'));var rp=require(_0x3ea8('0x3'));var fs=require('fs');var path=require(_0x3ea8('0x4'));var rimraf=require(_0x3ea8('0x5'));var config=require('../../config/environment');var attributes=require(_0x3ea8('0x6'));module['exports']=function(_0x353e9a,_0x31d4f5){return _0x353e9a['define'](_0x3ea8('0x7'),attributes,{'tableName':'analytics_report_trees','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 105b13b..3c13454 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['info','AnalyticTreeReport,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x7a54,0x106));var _0x47a5=function(_0x54fcba,_0x399187){_0x54fcba=_0x54fcba-0x0;var _0x195942=_0x7a54[_0x54fcba];return _0x195942;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('AnalyticTreeReport,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}
\ No newline at end of file
+var _0xadb5=['error','code','message','result','catch','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','AnalyticTreeReport,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0xd4d369,_0x4f6ad2){var _0x293e5d=function(_0xb0e6a4){while(--_0xb0e6a4){_0xd4d369['push'](_0xd4d369['shift']());}};_0x293e5d(++_0x4f6ad2);}(_0xadb5,0xad));var _0x5adb=function(_0x561c87,_0x1e4335){_0x561c87=_0x561c87-0x0;var _0x536a06=_0xadb5[_0x561c87];return _0x536a06;};'use strict';var _=require('lodash');var util=require(_0x5adb('0x0'));var moment=require('moment');var BPromise=require(_0x5adb('0x1'));var rs=require(_0x5adb('0x2'));var fs=require('fs');var Redis=require(_0x5adb('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x5adb('0x4'));var logger=require(_0x5adb('0x5'))(_0x5adb('0x6'));var config=require('../../config/environment');var jayson=require(_0x5adb('0x7'));var client=jayson[_0x5adb('0x8')][_0x5adb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3213e8,_0xdf3776,_0x353885){return new BPromise(function(_0x47228a,_0x6d1b45){return client[_0x5adb('0xa')](_0x3213e8,_0x353885)[_0x5adb('0xb')](function(_0x34f59d){logger[_0x5adb('0xc')](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));logger['debug']('AnalyticTreeReport,\x20%s,\x20%s,\x20%s',_0xdf3776,_0x5adb('0xe'),JSON[_0x5adb('0xf')](_0x34f59d));if(_0x34f59d[_0x5adb('0x10')]){if(_0x34f59d['error'][_0x5adb('0x11')]===0x1f4){logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d['error'][_0x5adb('0x12')]);return _0x6d1b45(_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);}logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);return _0x47228a(_0x34f59d['error'][_0x5adb('0x12')]);}else{logger['info'](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));_0x47228a(_0x34f59d[_0x5adb('0x13')][_0x5adb('0x12')]);}})[_0x5adb('0x14')](function(_0x39d24d){logger[_0x5adb('0x10')](_0x5adb('0xd'),_0xdf3776,_0x39d24d);_0x6d1b45(_0x39d24d);});});}
\ No newline at end of file
index b71972a..d135758 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26aa=['/:id','show','create','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./analyticTreeReport.controller','get','isAuthenticated','index'];(function(_0x569caa,_0x5174ce){var _0x44cb5a=function(_0x456df4){while(--_0x456df4){_0x569caa['push'](_0x569caa['shift']());}};_0x44cb5a(++_0x5174ce);}(_0x26aa,0xeb));var _0xa26a=function(_0x5b3670,_0x41dc7f){_0x5b3670=_0x5b3670-0x0;var _0x2c1f24=_0x26aa[_0x5b3670];return _0x2c1f24;};'use strict';var multer=require(_0xa26a('0x0'));var util=require(_0xa26a('0x1'));var path=require(_0xa26a('0x2'));var timeout=require(_0xa26a('0x3'));var express=require(_0xa26a('0x4'));var router=express[_0xa26a('0x5')]();var fs_extra=require(_0xa26a('0x6'));var auth=require(_0xa26a('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xa26a('0x8'));router[_0xa26a('0x9')]('/',auth[_0xa26a('0xa')](),controller[_0xa26a('0xb')]);router[_0xa26a('0x9')](_0xa26a('0xc'),auth[_0xa26a('0xa')](),controller[_0xa26a('0xd')]);router['post']('/',auth[_0xa26a('0xa')](),controller[_0xa26a('0xe')]);router[_0xa26a('0xf')]('/:id',auth[_0xa26a('0xa')](),controller[_0xa26a('0x10')]);router['delete']('/:id',auth[_0xa26a('0xa')](),controller[_0xa26a('0x11')]);module[_0xa26a('0x12')]=router;
\ No newline at end of file
+var _0xc9ed=['../../config/environment','./analyticTreeReport.controller','get','/:id','post','isAuthenticated','create','put','delete','destroy','multer','path','connect-timeout','express'];(function(_0x173d7e,_0x3242fd){var _0x2220d6=function(_0x462828){while(--_0x462828){_0x173d7e['push'](_0x173d7e['shift']());}};_0x2220d6(++_0x3242fd);}(_0xc9ed,0x6c));var _0xdc9e=function(_0x16ee48,_0x4e660d){_0x16ee48=_0x16ee48-0x0;var _0x23f7bf=_0xc9ed[_0x16ee48];return _0x23f7bf;};'use strict';var multer=require(_0xdc9e('0x0'));var util=require('util');var path=require(_0xdc9e('0x1'));var timeout=require(_0xdc9e('0x2'));var express=require(_0xdc9e('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(_0xdc9e('0x4'));var controller=require(_0xdc9e('0x5'));router[_0xdc9e('0x6')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xdc9e('0x7'),auth['isAuthenticated'](),controller['show']);router[_0xdc9e('0x8')]('/',auth[_0xdc9e('0x9')](),controller[_0xdc9e('0xa')]);router[_0xdc9e('0xb')]('/:id',auth[_0xdc9e('0x9')](),controller['update']);router[_0xdc9e('0xc')]('/:id',auth[_0xdc9e('0x9')](),controller[_0xdc9e('0xd')]);module['exports']=router;
\ No newline at end of file
index f8a1867..06d550b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb31a=['exports','STRING','sequelize'];(function(_0xd0ce,_0x3926d6){var _0x3b72c4=function(_0x47f155){while(--_0x47f155){_0xd0ce['push'](_0xd0ce['shift']());}};_0x3b72c4(++_0x3926d6);}(_0xb31a,0xd4));var _0xab31=function(_0x3c7acb,_0x580f95){_0x3c7acb=_0x3c7acb-0x0;var _0x3cf9d4=_0xb31a[_0x3c7acb];return _0x3cf9d4;};'use strict';var Sequelize=require(_0xab31('0x0'));module[_0xab31('0x1')]={'name':{'type':Sequelize[_0xab31('0x2')]},'basename':{'type':Sequelize[_0xab31('0x2')]},'type':{'type':Sequelize[_0xab31('0x2')]}};
\ No newline at end of file
+var _0x5309=['sequelize','exports','STRING'];(function(_0x590829,_0x26eb75){var _0x71c7f8=function(_0xd1e131){while(--_0xd1e131){_0x590829['push'](_0x590829['shift']());}};_0x71c7f8(++_0x26eb75);}(_0x5309,0x1aa));var _0x9530=function(_0x433a86,_0x175b5c){_0x433a86=_0x433a86-0x0;var _0x23000c=_0x5309[_0x433a86];return _0x23000c;};'use strict';var Sequelize=require(_0x9530('0x0'));module[_0x9530('0x1')]={'name':{'type':Sequelize[_0x9530('0x2')]},'basename':{'type':Sequelize[_0x9530('0x2')]},'type':{'type':Sequelize[_0x9530('0x2')]}};
\ No newline at end of file
index fc832ca..a0db6fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb67f=['to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','json','reject','save','destroy','then','error','stack','name','send','Attachment','rawAttributes','fieldName','type','key','model','map','keys','query','filters','intersection','fields','attributes','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','findAll','catch','show','params','includeAll','include','find','length','get','updatedAt','body','omit','createdAt','create','originalname','file','filename','mimetype','download','ChatOfflineMessageId','join','server/files/attachments/','offline-chat/','basename','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox'];(function(_0x122096,_0x60c295){var _0x3d1966=function(_0x3d569e){while(--_0x3d569e){_0x122096['push'](_0x122096['shift']());}};_0x3d1966(++_0x60c295);}(_0xb67f,0x104));var _0xfb67=function(_0x2b31b3,_0x49e1d8){_0x2b31b3=_0x2b31b3-0x0;var _0x44acd8=_0xb67f[_0x2b31b3];return _0x44acd8;};'use strict';var emlformat=require(_0xfb67('0x0'));var rimraf=require(_0xfb67('0x1'));var zipdir=require(_0xfb67('0x2'));var jsonpatch=require(_0xfb67('0x3'));var rp=require(_0xfb67('0x4'));var moment=require(_0xfb67('0x5'));var BPromise=require(_0xfb67('0x6'));var Mustache=require(_0xfb67('0x7'));var util=require('util');var path=require(_0xfb67('0x8'));var sox=require(_0xfb67('0x9'));var csv=require(_0xfb67('0xa'));var ejs=require(_0xfb67('0xb'));var fs=require('fs');var fs_extra=require(_0xfb67('0xc'));var _=require('lodash');var squel=require(_0xfb67('0xd'));var crypto=require(_0xfb67('0xe'));var jsforce=require(_0xfb67('0xf'));var deskjs=require(_0xfb67('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xfb67('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xfb67('0x12'));var as=require(_0xfb67('0x13'));var hardwareService=require(_0xfb67('0x14'));var logger=require(_0xfb67('0x15'))('api');var utils=require(_0xfb67('0x16'));var config=require(_0xfb67('0x17'));var licenseUtil=require(_0xfb67('0x18'));var db=require(_0xfb67('0x19'))['db'];function respondWithStatusCode(_0x186fa4,_0x986b18){_0x986b18=_0x986b18||0xcc;return function(_0x39c7a3){if(_0x39c7a3){return _0x186fa4[_0xfb67('0x1a')](_0x986b18);}return _0x186fa4[_0xfb67('0x1b')](_0x986b18)[_0xfb67('0x1c')]();};}function respondWithResult(_0x48296e,_0x40c9f7){_0x40c9f7=_0x40c9f7||0xc8;return function(_0x48161e){if(_0x48161e){return _0x48296e[_0xfb67('0x1b')](_0x40c9f7)['json'](_0x48161e);}};}function respondWithFilteredResult(_0x29880,_0x29e727){return function(_0x29ef2e){if(_0x29ef2e){var _0x5c253b=typeof _0x29e727[_0xfb67('0x1d')]===_0xfb67('0x1e')&&typeof _0x29e727['limit']===_0xfb67('0x1e');var _0x433af6=_0x29ef2e[_0xfb67('0x1f')];var _0x78bb9d=_0x5c253b?0x0:_0x29e727[_0xfb67('0x1d')];var _0x189838=_0x5c253b?_0x29ef2e[_0xfb67('0x1f')]:_0x29e727[_0xfb67('0x1d')]+_0x29e727[_0xfb67('0x20')];var _0x51cd12;if(_0x189838>=_0x433af6){_0x189838=_0x433af6;_0x51cd12=0xc8;}else{_0x51cd12=0xce;}_0x29880['status'](_0x51cd12);return _0x29880[_0xfb67('0x21')](_0xfb67('0x22'),_0x78bb9d+'-'+_0x189838+'/'+_0x433af6)[_0xfb67('0x23')](_0x29ef2e);}return null;};}function patchUpdates(_0x1a89d0){return function(_0x4a54bb){try{jsonpatch['apply'](_0x4a54bb,_0x1a89d0,!![]);}catch(_0x33a302){return BPromise[_0xfb67('0x24')](_0x33a302);}return _0x4a54bb[_0xfb67('0x25')]();};}function saveUpdates(_0x447bd9,_0x1d84eb){return function(_0x5e1d17){if(_0x5e1d17){return _0x5e1d17['update'](_0x447bd9)['then'](function(_0x254797){return _0x254797;});}return null;};}function removeEntity(_0x18ab6c,_0xaae98){return function(_0x573ca9){if(_0x573ca9){return _0x573ca9[_0xfb67('0x26')]()[_0xfb67('0x27')](function(){_0x18ab6c[_0xfb67('0x1b')](0xcc)[_0xfb67('0x1c')]();});}};}function handleEntityNotFound(_0x259a68,_0x1c5098){return function(_0x48f17d){if(!_0x48f17d){_0x259a68[_0xfb67('0x1a')](0x194);}return _0x48f17d;};}function handleError(_0x202f16,_0x5c1731){_0x5c1731=_0x5c1731||0x1f4;return function(_0x2b60b1){logger[_0xfb67('0x28')](_0x2b60b1[_0xfb67('0x29')]);if(_0x2b60b1[_0xfb67('0x2a')]){delete _0x2b60b1[_0xfb67('0x2a')];}_0x202f16[_0xfb67('0x1b')](_0x5c1731)[_0xfb67('0x2b')](_0x2b60b1);};}exports['index']=function(_0xc85ae8,_0x1fa666){var _0x16c939={},_0x80df24={},_0x6917cc={'count':0x0,'rows':[]};var _0x32671f=_['map'](db[_0xfb67('0x2c')][_0xfb67('0x2d')],function(_0x3bb244){return{'name':_0x3bb244[_0xfb67('0x2e')],'type':_0x3bb244[_0xfb67('0x2f')][_0xfb67('0x30')]};});_0x80df24[_0xfb67('0x31')]=_[_0xfb67('0x32')](_0x32671f,'name');_0x80df24['query']=_[_0xfb67('0x33')](_0xc85ae8[_0xfb67('0x34')]);_0x80df24[_0xfb67('0x35')]=_[_0xfb67('0x36')](_0x80df24[_0xfb67('0x31')],_0x80df24[_0xfb67('0x34')]);_0x16c939['attributes']=_[_0xfb67('0x36')](_0x80df24[_0xfb67('0x31')],qs['fields'](_0xc85ae8[_0xfb67('0x34')][_0xfb67('0x37')]));_0x16c939[_0xfb67('0x38')]=_0x16c939[_0xfb67('0x38')]['length']?_0x16c939[_0xfb67('0x38')]:_0x80df24[_0xfb67('0x31')];if(!_0xc85ae8[_0xfb67('0x34')][_0xfb67('0x39')]('nolimit')){_0x16c939[_0xfb67('0x20')]=qs['limit'](_0xc85ae8[_0xfb67('0x34')][_0xfb67('0x20')]);_0x16c939['offset']=qs[_0xfb67('0x1d')](_0xc85ae8[_0xfb67('0x34')]['offset']);}_0x16c939[_0xfb67('0x3a')]=qs[_0xfb67('0x3b')](_0xc85ae8[_0xfb67('0x34')]['sort']);_0x16c939[_0xfb67('0x3c')]=qs[_0xfb67('0x35')](_[_0xfb67('0x3d')](_0xc85ae8[_0xfb67('0x34')],_0x80df24[_0xfb67('0x35')]),_0x32671f);if(_0xc85ae8[_0xfb67('0x34')][_0xfb67('0x3e')]){_0x16c939[_0xfb67('0x3c')]=_[_0xfb67('0x3f')](_0x16c939[_0xfb67('0x3c')],{'$or':_[_0xfb67('0x32')](_0x32671f,function(_0x8af521){if(_0x8af521[_0xfb67('0x2f')]!==_0xfb67('0x40')){var _0x265aab={};_0x265aab[_0x8af521[_0xfb67('0x2a')]]={'$like':'%'+_0xc85ae8[_0xfb67('0x34')][_0xfb67('0x3e')]+'%'};return _0x265aab;}})});}_0x16c939=_[_0xfb67('0x3f')]({},_0x16c939,_0xc85ae8[_0xfb67('0x41')]);var _0x2752b1={'where':_0x16c939['where']};return db[_0xfb67('0x2c')][_0xfb67('0x1f')](_0x2752b1)[_0xfb67('0x27')](function(_0x4222e3){_0x6917cc[_0xfb67('0x1f')]=_0x4222e3;if(_0xc85ae8[_0xfb67('0x34')]['includeAll']){_0x16c939['include']=[{'all':!![]}];}return db[_0xfb67('0x2c')][_0xfb67('0x42')](_0x16c939);})[_0xfb67('0x27')](function(_0x459011){_0x6917cc['rows']=_0x459011;return _0x6917cc;})[_0xfb67('0x27')](respondWithFilteredResult(_0x1fa666,_0x16c939))[_0xfb67('0x43')](handleError(_0x1fa666,null));};exports[_0xfb67('0x44')]=function(_0x3e1d5e,_0x1aa9c5){var _0xa42282={'raw':!![],'where':{'id':_0x3e1d5e[_0xfb67('0x45')]['id']}},_0x30afb2={};_0x30afb2[_0xfb67('0x31')]=_[_0xfb67('0x33')](db[_0xfb67('0x2c')][_0xfb67('0x2d')]);_0x30afb2[_0xfb67('0x34')]=_[_0xfb67('0x33')](_0x3e1d5e[_0xfb67('0x34')]);_0x30afb2['filters']=_[_0xfb67('0x36')](_0x30afb2[_0xfb67('0x31')],_0x30afb2['query']);_0xa42282['attributes']=_[_0xfb67('0x36')](_0x30afb2['model'],qs[_0xfb67('0x37')](_0x3e1d5e[_0xfb67('0x34')]['fields']));_0xa42282[_0xfb67('0x38')]=_0xa42282[_0xfb67('0x38')]['length']?_0xa42282['attributes']:_0x30afb2['model'];if(_0x3e1d5e['query'][_0xfb67('0x46')]){_0xa42282[_0xfb67('0x47')]=[{'all':!![]}];}_0xa42282=_[_0xfb67('0x3f')]({},_0xa42282,_0x3e1d5e[_0xfb67('0x41')]);return db[_0xfb67('0x2c')][_0xfb67('0x48')](_0xa42282)['then'](handleEntityNotFound(_0x1aa9c5,null))[_0xfb67('0x27')](respondWithResult(_0x1aa9c5,null))[_0xfb67('0x43')](handleError(_0x1aa9c5,null));};exports['clone']=function(_0x367904,_0x17608e){var _0x1bb6bc={'where':{'id':_0x367904[_0xfb67('0x45')]['id']}},_0x2e3e8e={};_0x2e3e8e[_0xfb67('0x31')]=_[_0xfb67('0x33')](db[_0xfb67('0x2c')][_0xfb67('0x2d')]);_0x1bb6bc[_0xfb67('0x38')]=_[_0xfb67('0x36')](_0x2e3e8e[_0xfb67('0x31')],qs[_0xfb67('0x37')](_0x367904['query'][_0xfb67('0x37')]));_0x1bb6bc[_0xfb67('0x38')]=_0x1bb6bc[_0xfb67('0x38')][_0xfb67('0x49')]?_0x1bb6bc[_0xfb67('0x38')]:_0x2e3e8e[_0xfb67('0x31')];if(_0x367904[_0xfb67('0x34')][_0xfb67('0x46')]){_0x1bb6bc['include']=[{'all':!![]}];}_0x1bb6bc=_[_0xfb67('0x3f')]({},_0x1bb6bc,_0x367904[_0xfb67('0x41')]);return db[_0xfb67('0x2c')]['find'](_0x1bb6bc)[_0xfb67('0x27')](handleEntityNotFound(_0x17608e,null))['then'](function(_0x2460ae){if(_0x2460ae){var _0x5999e3=_0x2460ae[_0xfb67('0x4a')]({'plain':!![]});_0x5999e3=qs['omit'](_0x5999e3,['id','createdAt',_0xfb67('0x4b')]);_0x367904[_0xfb67('0x4c')]=_[_0xfb67('0x4d')](_0x367904[_0xfb67('0x4c')],['id',_0xfb67('0x4e'),'updatedAt']);return db[_0xfb67('0x2c')]['create'](_['merge'](_0x5999e3,_0x367904[_0xfb67('0x4c')]),{'include':_0x367904[_0xfb67('0x34')][_0xfb67('0x46')]?[{'all':!![]}]:undefined});}})['then'](respondWithResult(_0x17608e,0xc9))[_0xfb67('0x43')](handleError(_0x17608e,null));};exports['update']=function(_0x51465c,_0x550e26){if(_0x51465c[_0xfb67('0x4c')]['id']){delete _0x51465c[_0xfb67('0x4c')]['id'];}return db[_0xfb67('0x2c')][_0xfb67('0x48')]({'where':{'id':_0x51465c[_0xfb67('0x45')]['id']}})['then'](handleEntityNotFound(_0x550e26,null))['then'](saveUpdates(_0x51465c['body'],null))['then'](respondWithResult(_0x550e26,null))[_0xfb67('0x43')](handleError(_0x550e26,null));};exports[_0xfb67('0x26')]=function(_0x3b8d8c,_0x13661a){return db[_0xfb67('0x2c')][_0xfb67('0x48')]({'where':{'id':_0x3b8d8c[_0xfb67('0x45')]['id']}})[_0xfb67('0x27')](handleEntityNotFound(_0x13661a,null))[_0xfb67('0x27')](removeEntity(_0x13661a,null))[_0xfb67('0x43')](handleError(_0x13661a,null));};exports[_0xfb67('0x4f')]=function(_0x6f836b,_0x388060,_0x15cf2f){_0x6f836b[_0xfb67('0x4c')]['name']=_0x6f836b['file'][_0xfb67('0x50')];_0x6f836b[_0xfb67('0x4c')]['basename']=_0x6f836b[_0xfb67('0x51')][_0xfb67('0x52')];_0x6f836b['body'][_0xfb67('0x2f')]=_0x6f836b['file'][_0xfb67('0x53')];return db[_0xfb67('0x2c')][_0xfb67('0x4f')](_0x6f836b[_0xfb67('0x4c')])['then'](respondWithResult(_0x388060,0xc9))[_0xfb67('0x43')](handleError(_0x388060,null));};exports[_0xfb67('0x54')]=function(_0xd2fe34,_0x309f78,_0x16c25f){return db['Attachment']['findOne']({'where':{'id':_0xd2fe34[_0xfb67('0x45')]['id']},'raw':!![]})['then'](handleEntityNotFound(_0x309f78,null))['then'](function(_0x592a4b){if(_0x592a4b){var _0x393f55=_0x592a4b[_0xfb67('0x55')]!==null;var _0x5b2e40=path[_0xfb67('0x56')](config['root'],_0xfb67('0x57'));if(_0x393f55){_0x5b2e40=path[_0xfb67('0x56')](_0x5b2e40,_0xfb67('0x58'));}var _0x400512=path[_0xfb67('0x56')](_0x5b2e40,_0x592a4b[_0xfb67('0x59')]);return _0x309f78[_0xfb67('0x54')](_0x400512);}})[_0xfb67('0x43')](handleError(_0x309f78,null));};
\ No newline at end of file
+var _0xf243=['limit','count','offset','set','Content-Range','save','then','destroy','error','name','send','map','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','nolimit','sort','where','pick','filter','merge','VIRTUAL','Attachment','includeAll','include','findAll','params','length','options','find','clone','get','updatedAt','body','omit','createdAt','catch','create','file','basename','filename','mimetype','download','findOne','ChatOfflineMessageId','join','root','server/files/attachments/','offline-chat/','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','to-csv','ejs','lodash','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0xf243,0x1dc));var _0x3f24=function(_0x1cdabe,_0x286194){_0x1cdabe=_0x1cdabe-0x0;var _0x3dcc9c=_0xf243[_0x1cdabe];return _0x3dcc9c;};'use strict';var emlformat=require(_0x3f24('0x0'));var rimraf=require(_0x3f24('0x1'));var zipdir=require(_0x3f24('0x2'));var jsonpatch=require(_0x3f24('0x3'));var rp=require('request-promise');var moment=require(_0x3f24('0x4'));var BPromise=require(_0x3f24('0x5'));var Mustache=require('mustache');var util=require(_0x3f24('0x6'));var path=require(_0x3f24('0x7'));var sox=require('sox');var csv=require(_0x3f24('0x8'));var ejs=require(_0x3f24('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3f24('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x3f24('0xb'));var deskjs=require(_0x3f24('0xc'));var toCsv=require(_0x3f24('0x8'));var querystring=require(_0x3f24('0xd'));var Papa=require(_0x3f24('0xe'));var Redis=require('ioredis');var authService=require(_0x3f24('0xf'));var qs=require(_0x3f24('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3f24('0x11'));var logger=require(_0x3f24('0x12'))(_0x3f24('0x13'));var utils=require('../../config/utils');var config=require(_0x3f24('0x14'));var licenseUtil=require(_0x3f24('0x15'));var db=require(_0x3f24('0x16'))['db'];function respondWithStatusCode(_0x5559f4,_0x248380){_0x248380=_0x248380||0xcc;return function(_0x3432fe){if(_0x3432fe){return _0x5559f4[_0x3f24('0x17')](_0x248380);}return _0x5559f4[_0x3f24('0x18')](_0x248380)[_0x3f24('0x19')]();};}function respondWithResult(_0x15624c,_0x5377cd){_0x5377cd=_0x5377cd||0xc8;return function(_0x405991){if(_0x405991){return _0x15624c[_0x3f24('0x18')](_0x5377cd)[_0x3f24('0x1a')](_0x405991);}};}function respondWithFilteredResult(_0xf00021,_0xe2bbd0){return function(_0x18ff5f){if(_0x18ff5f){var _0x22b24f=typeof _0xe2bbd0['offset']===_0x3f24('0x1b')&&typeof _0xe2bbd0[_0x3f24('0x1c')]===_0x3f24('0x1b');var _0x23524f=_0x18ff5f[_0x3f24('0x1d')];var _0x274986=_0x22b24f?0x0:_0xe2bbd0[_0x3f24('0x1e')];var _0x45c37e=_0x22b24f?_0x18ff5f['count']:_0xe2bbd0[_0x3f24('0x1e')]+_0xe2bbd0[_0x3f24('0x1c')];var _0x4b00ef;if(_0x45c37e>=_0x23524f){_0x45c37e=_0x23524f;_0x4b00ef=0xc8;}else{_0x4b00ef=0xce;}_0xf00021[_0x3f24('0x18')](_0x4b00ef);return _0xf00021[_0x3f24('0x1f')](_0x3f24('0x20'),_0x274986+'-'+_0x45c37e+'/'+_0x23524f)[_0x3f24('0x1a')](_0x18ff5f);}return null;};}function patchUpdates(_0x2860c2){return function(_0x14d0ae){try{jsonpatch['apply'](_0x14d0ae,_0x2860c2,!![]);}catch(_0x5441a2){return BPromise['reject'](_0x5441a2);}return _0x14d0ae[_0x3f24('0x21')]();};}function saveUpdates(_0x431c18,_0x198790){return function(_0x2d3071){if(_0x2d3071){return _0x2d3071['update'](_0x431c18)[_0x3f24('0x22')](function(_0x222dd9){return _0x222dd9;});}return null;};}function removeEntity(_0x1a5dfe,_0x31ac5a){return function(_0x83418c){if(_0x83418c){return _0x83418c[_0x3f24('0x23')]()['then'](function(){_0x1a5dfe['status'](0xcc)[_0x3f24('0x19')]();});}};}function handleEntityNotFound(_0x253258,_0x73bea3){return function(_0x9d6104){if(!_0x9d6104){_0x253258[_0x3f24('0x17')](0x194);}return _0x9d6104;};}function handleError(_0x18b5e5,_0x2f7916){_0x2f7916=_0x2f7916||0x1f4;return function(_0x40029c){logger[_0x3f24('0x24')](_0x40029c['stack']);if(_0x40029c[_0x3f24('0x25')]){delete _0x40029c[_0x3f24('0x25')];}_0x18b5e5[_0x3f24('0x18')](_0x2f7916)[_0x3f24('0x26')](_0x40029c);};}exports['index']=function(_0x59af4f,_0x34b7bd){var _0x2f44e6={},_0x4d1d5f={},_0x39a462={'count':0x0,'rows':[]};var _0x30181b=_[_0x3f24('0x27')](db['Attachment'][_0x3f24('0x28')],function(_0x3ec6eb){return{'name':_0x3ec6eb['fieldName'],'type':_0x3ec6eb[_0x3f24('0x29')][_0x3f24('0x2a')]};});_0x4d1d5f[_0x3f24('0x2b')]=_['map'](_0x30181b,_0x3f24('0x25'));_0x4d1d5f[_0x3f24('0x2c')]=_[_0x3f24('0x2d')](_0x59af4f[_0x3f24('0x2c')]);_0x4d1d5f[_0x3f24('0x2e')]=_[_0x3f24('0x2f')](_0x4d1d5f['model'],_0x4d1d5f[_0x3f24('0x2c')]);_0x2f44e6[_0x3f24('0x30')]=_['intersection'](_0x4d1d5f['model'],qs['fields'](_0x59af4f['query'][_0x3f24('0x31')]));_0x2f44e6[_0x3f24('0x30')]=_0x2f44e6[_0x3f24('0x30')]['length']?_0x2f44e6['attributes']:_0x4d1d5f['model'];if(!_0x59af4f[_0x3f24('0x2c')]['hasOwnProperty'](_0x3f24('0x32'))){_0x2f44e6['limit']=qs[_0x3f24('0x1c')](_0x59af4f[_0x3f24('0x2c')][_0x3f24('0x1c')]);_0x2f44e6[_0x3f24('0x1e')]=qs[_0x3f24('0x1e')](_0x59af4f[_0x3f24('0x2c')][_0x3f24('0x1e')]);}_0x2f44e6['order']=qs[_0x3f24('0x33')](_0x59af4f[_0x3f24('0x2c')]['sort']);_0x2f44e6[_0x3f24('0x34')]=qs[_0x3f24('0x2e')](_[_0x3f24('0x35')](_0x59af4f[_0x3f24('0x2c')],_0x4d1d5f[_0x3f24('0x2e')]),_0x30181b);if(_0x59af4f['query'][_0x3f24('0x36')]){_0x2f44e6[_0x3f24('0x34')]=_[_0x3f24('0x37')](_0x2f44e6[_0x3f24('0x34')],{'$or':_['map'](_0x30181b,function(_0x39b673){if(_0x39b673['type']!==_0x3f24('0x38')){var _0x3e2918={};_0x3e2918[_0x39b673[_0x3f24('0x25')]]={'$like':'%'+_0x59af4f['query'][_0x3f24('0x36')]+'%'};return _0x3e2918;}})});}_0x2f44e6=_['merge']({},_0x2f44e6,_0x59af4f['options']);var _0x156554={'where':_0x2f44e6['where']};return db[_0x3f24('0x39')][_0x3f24('0x1d')](_0x156554)[_0x3f24('0x22')](function(_0x611377){_0x39a462['count']=_0x611377;if(_0x59af4f[_0x3f24('0x2c')][_0x3f24('0x3a')]){_0x2f44e6[_0x3f24('0x3b')]=[{'all':!![]}];}return db[_0x3f24('0x39')][_0x3f24('0x3c')](_0x2f44e6);})[_0x3f24('0x22')](function(_0x2991a3){_0x39a462['rows']=_0x2991a3;return _0x39a462;})[_0x3f24('0x22')](respondWithFilteredResult(_0x34b7bd,_0x2f44e6))['catch'](handleError(_0x34b7bd,null));};exports['show']=function(_0x46657e,_0x594588){var _0xf47366={'raw':!![],'where':{'id':_0x46657e[_0x3f24('0x3d')]['id']}},_0x1f2b54={};_0x1f2b54[_0x3f24('0x2b')]=_[_0x3f24('0x2d')](db[_0x3f24('0x39')][_0x3f24('0x28')]);_0x1f2b54['query']=_[_0x3f24('0x2d')](_0x46657e[_0x3f24('0x2c')]);_0x1f2b54['filters']=_[_0x3f24('0x2f')](_0x1f2b54[_0x3f24('0x2b')],_0x1f2b54[_0x3f24('0x2c')]);_0xf47366[_0x3f24('0x30')]=_['intersection'](_0x1f2b54[_0x3f24('0x2b')],qs[_0x3f24('0x31')](_0x46657e[_0x3f24('0x2c')][_0x3f24('0x31')]));_0xf47366[_0x3f24('0x30')]=_0xf47366[_0x3f24('0x30')][_0x3f24('0x3e')]?_0xf47366[_0x3f24('0x30')]:_0x1f2b54[_0x3f24('0x2b')];if(_0x46657e[_0x3f24('0x2c')]['includeAll']){_0xf47366[_0x3f24('0x3b')]=[{'all':!![]}];}_0xf47366=_[_0x3f24('0x37')]({},_0xf47366,_0x46657e[_0x3f24('0x3f')]);return db[_0x3f24('0x39')][_0x3f24('0x40')](_0xf47366)[_0x3f24('0x22')](handleEntityNotFound(_0x594588,null))[_0x3f24('0x22')](respondWithResult(_0x594588,null))['catch'](handleError(_0x594588,null));};exports[_0x3f24('0x41')]=function(_0x3a3eb4,_0x37c6a3){var _0x2b7724={'where':{'id':_0x3a3eb4[_0x3f24('0x3d')]['id']}},_0x48eee1={};_0x48eee1[_0x3f24('0x2b')]=_[_0x3f24('0x2d')](db[_0x3f24('0x39')]['rawAttributes']);_0x2b7724[_0x3f24('0x30')]=_[_0x3f24('0x2f')](_0x48eee1['model'],qs[_0x3f24('0x31')](_0x3a3eb4['query'][_0x3f24('0x31')]));_0x2b7724[_0x3f24('0x30')]=_0x2b7724[_0x3f24('0x30')][_0x3f24('0x3e')]?_0x2b7724[_0x3f24('0x30')]:_0x48eee1[_0x3f24('0x2b')];if(_0x3a3eb4[_0x3f24('0x2c')][_0x3f24('0x3a')]){_0x2b7724[_0x3f24('0x3b')]=[{'all':!![]}];}_0x2b7724=_[_0x3f24('0x37')]({},_0x2b7724,_0x3a3eb4['options']);return db[_0x3f24('0x39')]['find'](_0x2b7724)[_0x3f24('0x22')](handleEntityNotFound(_0x37c6a3,null))[_0x3f24('0x22')](function(_0x5783a2){if(_0x5783a2){var _0x34e1e6=_0x5783a2[_0x3f24('0x42')]({'plain':!![]});_0x34e1e6=qs['omit'](_0x34e1e6,['id','createdAt',_0x3f24('0x43')]);_0x3a3eb4[_0x3f24('0x44')]=_[_0x3f24('0x45')](_0x3a3eb4[_0x3f24('0x44')],['id',_0x3f24('0x46'),_0x3f24('0x43')]);return db[_0x3f24('0x39')]['create'](_[_0x3f24('0x37')](_0x34e1e6,_0x3a3eb4['body']),{'include':_0x3a3eb4['query']['includeAll']?[{'all':!![]}]:undefined});}})[_0x3f24('0x22')](respondWithResult(_0x37c6a3,0xc9))[_0x3f24('0x47')](handleError(_0x37c6a3,null));};exports['update']=function(_0xf2d0f9,_0x2bb413){if(_0xf2d0f9[_0x3f24('0x44')]['id']){delete _0xf2d0f9[_0x3f24('0x44')]['id'];}return db['Attachment'][_0x3f24('0x40')]({'where':{'id':_0xf2d0f9[_0x3f24('0x3d')]['id']}})['then'](handleEntityNotFound(_0x2bb413,null))[_0x3f24('0x22')](saveUpdates(_0xf2d0f9[_0x3f24('0x44')],null))[_0x3f24('0x22')](respondWithResult(_0x2bb413,null))['catch'](handleError(_0x2bb413,null));};exports[_0x3f24('0x23')]=function(_0x152b88,_0x7dee4c){return db[_0x3f24('0x39')][_0x3f24('0x40')]({'where':{'id':_0x152b88[_0x3f24('0x3d')]['id']}})[_0x3f24('0x22')](handleEntityNotFound(_0x7dee4c,null))[_0x3f24('0x22')](removeEntity(_0x7dee4c,null))[_0x3f24('0x47')](handleError(_0x7dee4c,null));};exports[_0x3f24('0x48')]=function(_0x539f8f,_0x4fe2a6,_0xa08615){_0x539f8f['body'][_0x3f24('0x25')]=_0x539f8f[_0x3f24('0x49')]['originalname'];_0x539f8f[_0x3f24('0x44')][_0x3f24('0x4a')]=_0x539f8f[_0x3f24('0x49')][_0x3f24('0x4b')];_0x539f8f[_0x3f24('0x44')][_0x3f24('0x29')]=_0x539f8f[_0x3f24('0x49')][_0x3f24('0x4c')];return db[_0x3f24('0x39')][_0x3f24('0x48')](_0x539f8f[_0x3f24('0x44')])[_0x3f24('0x22')](respondWithResult(_0x4fe2a6,0xc9))[_0x3f24('0x47')](handleError(_0x4fe2a6,null));};exports[_0x3f24('0x4d')]=function(_0x26edd2,_0x16ba25,_0x16739e){return db[_0x3f24('0x39')][_0x3f24('0x4e')]({'where':{'id':_0x26edd2['params']['id']},'raw':!![]})[_0x3f24('0x22')](handleEntityNotFound(_0x16ba25,null))[_0x3f24('0x22')](function(_0x52f035){if(_0x52f035){var _0x14c770=_0x52f035[_0x3f24('0x4f')]!==null;var _0x35c22b=path[_0x3f24('0x50')](config[_0x3f24('0x51')],_0x3f24('0x52'));if(_0x14c770){_0x35c22b=path['join'](_0x35c22b,_0x3f24('0x53'));}var _0x506c3a=path['join'](_0x35c22b,_0x52f035['basename']);return _0x16ba25['download'](_0x506c3a);}})[_0x3f24('0x47')](handleError(_0x16ba25,null));};
\ No newline at end of file
index 0542133..b535bee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5f0=['request-promise','path','../../config/environment','exports','Attachment','attachments','lodash','../../config/logger','api','moment'];(function(_0x543eac,_0x3a39a1){var _0x16c036=function(_0x446e5d){while(--_0x446e5d){_0x543eac['push'](_0x543eac['shift']());}};_0x16c036(++_0x3a39a1);}(_0xa5f0,0x1e6));var _0x0a5f=function(_0x2080a3,_0x48acfa){_0x2080a3=_0x2080a3-0x0;var _0x8d7d17=_0xa5f0[_0x2080a3];return _0x8d7d17;};'use strict';var _=require(_0x0a5f('0x0'));var util=require('util');var logger=require(_0x0a5f('0x1'))(_0x0a5f('0x2'));var moment=require(_0x0a5f('0x3'));var BPromise=require('bluebird');var rp=require(_0x0a5f('0x4'));var fs=require('fs');var path=require(_0x0a5f('0x5'));var rimraf=require('rimraf');var config=require(_0x0a5f('0x6'));var attributes=require('./attachment.attributes');module[_0x0a5f('0x7')]=function(_0x5511ad,_0x1faa87){return _0x5511ad['define'](_0x0a5f('0x8'),attributes,{'tableName':_0x0a5f('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb943=['rimraf','../../config/environment','./attachment.attributes','define','attachments','util','../../config/logger','api','bluebird','request-promise','path'];(function(_0x4a96ca,_0x13754e){var _0x2aed48=function(_0x361330){while(--_0x361330){_0x4a96ca['push'](_0x4a96ca['shift']());}};_0x2aed48(++_0x13754e);}(_0xb943,0x1b2));var _0x3b94=function(_0x1870a2,_0x1708b1){_0x1870a2=_0x1870a2-0x0;var _0x4a58d1=_0xb943[_0x1870a2];return _0x4a58d1;};'use strict';var _=require('lodash');var util=require(_0x3b94('0x0'));var logger=require(_0x3b94('0x1'))(_0x3b94('0x2'));var moment=require('moment');var BPromise=require(_0x3b94('0x3'));var rp=require(_0x3b94('0x4'));var fs=require('fs');var path=require(_0x3b94('0x5'));var rimraf=require(_0x3b94('0x6'));var config=require(_0x3b94('0x7'));var attributes=require(_0x3b94('0x8'));module['exports']=function(_0x3162c1,_0x5bb1d0){return _0x3162c1[_0x3b94('0x9')]('Attachment',attributes,{'tableName':_0x3b94('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3d2bd68..2079af7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x447b=['catch','CreateAttachment','body','options','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','Attachment,\x20%s,\x20%s','request\x20sent','debug','Attachment,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result'];(function(_0xe28bfb,_0x239603){var _0x323aea=function(_0x29c2a9){while(--_0x29c2a9){_0xe28bfb['push'](_0xe28bfb['shift']());}};_0x323aea(++_0x239603);}(_0x447b,0xe4));var _0xb447=function(_0x217dea,_0x150e9d){_0x217dea=_0x217dea-0x0;var _0x471b5a=_0x447b[_0x217dea];return _0x471b5a;};'use strict';var _=require(_0xb447('0x0'));var util=require(_0xb447('0x1'));var moment=require('moment');var BPromise=require(_0xb447('0x2'));var rs=require(_0xb447('0x3'));var fs=require('fs');var Redis=require(_0xb447('0x4'));var db=require(_0xb447('0x5'))['db'];var utils=require(_0xb447('0x6'));var logger=require(_0xb447('0x7'))(_0xb447('0x8'));var config=require(_0xb447('0x9'));var jayson=require(_0xb447('0xa'));var client=jayson[_0xb447('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4e0f42,_0x2e919c,_0x588700){return new BPromise(function(_0x3ea00b,_0x210bc5){return client[_0xb447('0xc')](_0x4e0f42,_0x588700)[_0xb447('0xd')](function(_0x1972c9){logger['info'](_0xb447('0xe'),_0x2e919c,_0xb447('0xf'));logger[_0xb447('0x10')](_0xb447('0x11'),_0x2e919c,'request\x20sent',JSON[_0xb447('0x12')](_0x1972c9));if(_0x1972c9[_0xb447('0x13')]){if(_0x1972c9[_0xb447('0x13')][_0xb447('0x14')]===0x1f4){logger[_0xb447('0x13')](_0xb447('0xe'),_0x2e919c,_0x1972c9[_0xb447('0x13')][_0xb447('0x15')]);return _0x210bc5(_0x1972c9[_0xb447('0x13')]['message']);}logger['error'](_0xb447('0xe'),_0x2e919c,_0x1972c9[_0xb447('0x13')]['message']);return _0x3ea00b(_0x1972c9[_0xb447('0x13')][_0xb447('0x15')]);}else{logger[_0xb447('0x16')]('Attachment,\x20%s,\x20%s',_0x2e919c,'request\x20sent');_0x3ea00b(_0x1972c9[_0xb447('0x17')]['message']);}})[_0xb447('0x18')](function(_0x5c98a9){logger[_0xb447('0x13')](_0xb447('0xe'),_0x2e919c,_0x5c98a9);_0x210bc5(_0x5c98a9);});});}exports[_0xb447('0x19')]=function(_0x23825c){var _0x1552bd=this;return new Promise(function(_0x3015ab,_0x2a019c){return db['Attachment']['create'](_0x23825c[_0xb447('0x1a')],{'raw':_0x23825c[_0xb447('0x1b')]?_0x23825c[_0xb447('0x1b')]['raw']===undefined?!![]:![]:!![]})[_0xb447('0xd')](function(_0x176366){logger[_0xb447('0x16')](_0xb447('0x19'),_0x23825c);logger[_0xb447('0x10')]('CreateAttachment',_0x23825c,JSON[_0xb447('0x12')](_0x176366));_0x3015ab(_0x176366);})[_0xb447('0x18')](function(_0xcba626){logger[_0xb447('0x13')](_0xb447('0x19'),_0xcba626[_0xb447('0x15')],_0x23825c);_0x2a019c(_0x1552bd['error'](0x1f4,_0xcba626[_0xb447('0x15')]));});});};
\ No newline at end of file
+var _0x1752=['error','message','result','catch','CreateAttachment','Attachment','create','options','raw','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Attachment,\x20%s,\x20%s','request\x20sent'];(function(_0x1bb639,_0x3000d8){var _0x361e15=function(_0x4784d9){while(--_0x4784d9){_0x1bb639['push'](_0x1bb639['shift']());}};_0x361e15(++_0x3000d8);}(_0x1752,0xa5));var _0x2175=function(_0x384738,_0x34697f){_0x384738=_0x384738-0x0;var _0x33c249=_0x1752[_0x384738];return _0x33c249;};'use strict';var _=require('lodash');var util=require(_0x2175('0x0'));var moment=require(_0x2175('0x1'));var BPromise=require(_0x2175('0x2'));var rs=require(_0x2175('0x3'));var fs=require('fs');var Redis=require(_0x2175('0x4'));var db=require(_0x2175('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x2175('0x6'))(_0x2175('0x7'));var config=require(_0x2175('0x8'));var jayson=require(_0x2175('0x9'));var client=jayson[_0x2175('0xa')][_0x2175('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x19ca87,_0x1bd937,_0x339e4d){return new BPromise(function(_0x672ff1,_0x516ccc){return client[_0x2175('0xc')](_0x19ca87,_0x339e4d)[_0x2175('0xd')](function(_0x407a71){logger[_0x2175('0xe')](_0x2175('0xf'),_0x1bd937,'request\x20sent');logger['debug']('Attachment,\x20%s,\x20%s,\x20%s',_0x1bd937,_0x2175('0x10'),JSON['stringify'](_0x407a71));if(_0x407a71['error']){if(_0x407a71['error']['code']===0x1f4){logger[_0x2175('0x11')]('Attachment,\x20%s,\x20%s',_0x1bd937,_0x407a71[_0x2175('0x11')][_0x2175('0x12')]);return _0x516ccc(_0x407a71['error'][_0x2175('0x12')]);}logger[_0x2175('0x11')](_0x2175('0xf'),_0x1bd937,_0x407a71[_0x2175('0x11')][_0x2175('0x12')]);return _0x672ff1(_0x407a71[_0x2175('0x11')][_0x2175('0x12')]);}else{logger[_0x2175('0xe')]('Attachment,\x20%s,\x20%s',_0x1bd937,'request\x20sent');_0x672ff1(_0x407a71[_0x2175('0x13')][_0x2175('0x12')]);}})[_0x2175('0x14')](function(_0x4e7cf1){logger['error']('Attachment,\x20%s,\x20%s',_0x1bd937,_0x4e7cf1);_0x516ccc(_0x4e7cf1);});});}exports[_0x2175('0x15')]=function(_0x377586){var _0x4cb089=this;return new Promise(function(_0x53576c,_0x405fb1){return db[_0x2175('0x16')][_0x2175('0x17')](_0x377586['body'],{'raw':_0x377586[_0x2175('0x18')]?_0x377586['options'][_0x2175('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x37818a){logger['info']('CreateAttachment',_0x377586);logger['debug'](_0x2175('0x15'),_0x377586,JSON['stringify'](_0x37818a));_0x53576c(_0x37818a);})[_0x2175('0x14')](function(_0x46ea57){logger[_0x2175('0x11')](_0x2175('0x15'),_0x46ea57[_0x2175('0x12')],_0x377586);_0x405fb1(_0x4cb089[_0x2175('0x11')](0x1f4,_0x46ea57['message']));});});};
\ No newline at end of file
index ccb23a4..c3c64a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['originalname','replace','single','file','create','put','/:id','update','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./attachment.controller','get','index','isAuthenticated','show','/:id/download','download','post','/:id/clone','diskStorage','join','server/files/attachments/','format','%s-%s'];(function(_0x279cf7,_0x2359d8){var _0x1f7d4c=function(_0x222879){while(--_0x222879){_0x279cf7['push'](_0x279cf7['shift']());}};_0x1f7d4c(++_0x2359d8);}(_0xb10b,0x12a));var _0xbb10=function(_0xc40b9f,_0x17ec1f){_0xc40b9f=_0xc40b9f-0x0;var _0x535b9c=_0xb10b[_0xc40b9f];return _0x535b9c;};'use strict';var multer=require(_0xbb10('0x0'));var util=require('util');var path=require(_0xbb10('0x1'));var timeout=require(_0xbb10('0x2'));var express=require(_0xbb10('0x3'));var router=express['Router']();var fs_extra=require(_0xbb10('0x4'));var auth=require(_0xbb10('0x5'));var interaction=require(_0xbb10('0x6'));var config=require(_0xbb10('0x7'));var controller=require(_0xbb10('0x8'));router[_0xbb10('0x9')]('/',auth['isAuthenticated'](),controller[_0xbb10('0xa')]);router[_0xbb10('0x9')]('/:id',auth[_0xbb10('0xb')](),controller[_0xbb10('0xc')]);router[_0xbb10('0x9')](_0xbb10('0xd'),auth[_0xbb10('0xb')](),controller[_0xbb10('0xe')]);router[_0xbb10('0xf')](_0xbb10('0x10'),auth['isAuthenticated'](),controller['clone']);var upload=multer({'storage':multer[_0xbb10('0x11')]({'destination':function(_0x118a74,_0xce64f3,_0x5e136d){_0x5e136d(null,path[_0xbb10('0x12')](config['root'],_0xbb10('0x13')));},'filename':function(_0x916a32,_0x285009,_0x193a27){_0x193a27(null,util[_0xbb10('0x14')](_0xbb10('0x15'),Date['now'](),_0x285009[_0xbb10('0x16')][_0xbb10('0x17')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xbb10('0xf')]('/',upload[_0xbb10('0x18')](_0xbb10('0x19')),controller[_0xbb10('0x1a')]);router[_0xbb10('0x1b')](_0xbb10('0x1c'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x1d')]);router['delete'](_0xbb10('0x1c'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x1e')]);module[_0xbb10('0x1f')]=router;
\ No newline at end of file
+var _0xadb5=['root','format','%s-%s','originalname','replace','file','put','update','delete','destroy','exports','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/download','download','post','/:id/clone'];(function(_0x4c030a,_0x48a4ac){var _0xdcdebd=function(_0x39f121){while(--_0x39f121){_0x4c030a['push'](_0x4c030a['shift']());}};_0xdcdebd(++_0x48a4ac);}(_0xadb5,0xad));var _0x5adb=function(_0x54bfe7,_0x2c11e9){_0x54bfe7=_0x54bfe7-0x0;var _0xab535a=_0xadb5[_0x54bfe7];return _0xab535a;};'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('./attachment.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')](_0x5adb('0xf'),auth[_0x5adb('0x8')](),controller['clone']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x1a8f66,_0x1ea238,_0x82e67e){_0x82e67e(null,path['join'](config[_0x5adb('0x10')],'server/files/attachments/'));},'filename':function(_0x2a0b70,_0x5433bf,_0x8cfcc6){_0x8cfcc6(null,util[_0x5adb('0x11')](_0x5adb('0x12'),Date['now'](),_0x5433bf[_0x5adb('0x13')][_0x5adb('0x14')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x5adb('0xe')]('/',upload['single'](_0x5adb('0x15')),controller['create']);router[_0x5adb('0x16')](_0x5adb('0xa'),auth[_0x5adb('0x8')](),controller[_0x5adb('0x17')]);router[_0x5adb('0x18')](_0x5adb('0xa'),auth[_0x5adb('0x8')](),controller[_0x5adb('0x19')]);module[_0x5adb('0x1a')]=router;
\ No newline at end of file
index a72c749..1a267e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8fbe=['user','agent','domain','disabled','blocked','blockedAt','add','minutes','clearBlockUser','getLicense','catch','status','message','login','ad-login','Something\x20went\x20wrong,\x20please\x20try\x20again.','json','use','User','passport','passport-local','Strategy','moment','activedirectory2','bluebird','util','../../mysqldb','../../config/utils','activedirectory','baseDN','url','authenticate','error','Error\x20authenticate\x20%s:\x20%s','inspect','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured','Setting','findOne','blockDuration','then','adSsoEnabled','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled','name','password','salt','role','online','admin'];(function(_0x4fe8af,_0x565def){var _0x175f53=function(_0x790076){while(--_0x790076){_0x4fe8af['push'](_0x4fe8af['shift']());}};_0x175f53(++_0x565def);}(_0x8fbe,0xd7));var _0xe8fb=function(_0x1ee1f8,_0x521594){_0x1ee1f8=_0x1ee1f8-0x0;var _0x21e756=_0x8fbe[_0x1ee1f8];return _0x21e756;};'use strict';var passport=require(_0xe8fb('0x0'));var LocalStrategy=require(_0xe8fb('0x1'))[_0xe8fb('0x2')];var moment=require(_0xe8fb('0x3'));var ActiveDirectory=require(_0xe8fb('0x4'));var BPromise=require(_0xe8fb('0x5'));var util=require(_0xe8fb('0x6'));var db=require(_0xe8fb('0x7'))['db'];var authService=require('../../components/auth/service');var utils=require(_0xe8fb('0x8'));var config=require('../../config/environment');var logger=require('../../config/logger')('api');function isActiveDirectoryConfigured(_0x217923){var _0x238d91=![];if(typeof _0x217923[_0xe8fb('0x9')]!=='undefined'){_0x238d91=_0x217923[_0xe8fb('0x9')][_0xe8fb('0xa')]&&_0x217923['activedirectory'][_0xe8fb('0xb')]&&_0x217923[_0xe8fb('0x9')]['domain'];}return _0x238d91;}function adAuthenticate(_0x31a64c,_0x1ef867,_0x2f8d07){return new BPromise(function(_0x243662,_0x573160){try{var _0x375f3d=new ActiveDirectory(_0x31a64c);_0x375f3d[_0xe8fb('0xc')](_0x1ef867,_0x2f8d07,function(_0x57210c,_0x3db029){if(_0x57210c){logger[_0xe8fb('0xd')](_0xe8fb('0xe'),_0x1ef867,util[_0xe8fb('0xf')](_0x57210c,{'showHidden':![],'depth':null}));_0x573160(_0xe8fb('0x10'));}else if(!_0x3db029){logger[_0xe8fb('0xd')]('Error\x20authenticate\x20%s:\x20Wrong\x20credentials',_0x1ef867);_0x573160('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else{_0x243662(_0x3db029);}});}catch(_0x36bdd0){_0x573160(_0x36bdd0);}});}function ActiveDirectoryAuthenticate(_0x2946b0,_0x1ecc50,_0x3341c2,_0x59d0be){var _0x1d266d,_0x5079b1;if(!isActiveDirectoryConfigured(config)){logger['error'](_0xe8fb('0x11'),_0x1ecc50);return _0x59d0be(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}return db[_0xe8fb('0x12')][_0xe8fb('0x13')]({'where':{'id':0x1},'attributes':['adSsoEnabled',_0xe8fb('0x14')],'raw':!![]})[_0xe8fb('0x15')](function(_0x5cfd1d){_0x1d266d=_0x5cfd1d;if(!_0x1d266d[_0xe8fb('0x16')]){logger[_0xe8fb('0xd')](_0xe8fb('0x17'),_0x1ecc50);throw new Error(_0xe8fb('0x10'));}return _0x2946b0[_0xe8fb('0x13')]({'attributes':['id',_0xe8fb('0x18'),_0xe8fb('0x19'),_0xe8fb('0x1a'),_0xe8fb('0x1b'),'disabled','blocked','blockedAt',_0xe8fb('0x1c')],'where':{'name':_0x1ecc50,'role':{'$or':[_0xe8fb('0x1d'),_0xe8fb('0x1e'),_0xe8fb('0x1f')]},'adSsoEnabled':!![]}});})[_0xe8fb('0x15')](function(_0x19fba5){if(!_0x19fba5||_0x19fba5&&_0x19fba5[_0xe8fb('0x18')]!==_0x1ecc50){throw new Error(_0xe8fb('0x10'));}_0x5079b1=_0x19fba5;var _0x17f32f=_0x5079b1['name']+'@'+config[_0xe8fb('0x9')][_0xe8fb('0x20')];return adAuthenticate(config[_0xe8fb('0x9')],_0x17f32f,_0x3341c2);})[_0xe8fb('0x15')](function(_0x48385b){if(_0x5079b1[_0xe8fb('0x21')]){throw new Error(_0xe8fb('0x10'));}if(_0x1d266d[_0xe8fb('0x14')]>0x0){if(_0x5079b1[_0xe8fb('0x22')]){if(moment(_0x5079b1[_0xe8fb('0x23')])[_0xe8fb('0x24')](_0x1d266d[_0xe8fb('0x14')],_0xe8fb('0x25'))>moment()){throw new Error(_0xe8fb('0x10'));}return utils[_0xe8fb('0x26')](_0x5079b1,0x0,![],null)[_0xe8fb('0x15')](function(){return utils[_0xe8fb('0x27')](_0x5079b1);})[_0xe8fb('0x15')](function(){return _0x59d0be(null,_0x5079b1);});}else{return utils[_0xe8fb('0x27')](_0x5079b1)[_0xe8fb('0x15')](function(){return _0x59d0be(null,_0x5079b1);});}}else{return utils['getLicense'](_0x5079b1)[_0xe8fb('0x15')](function(){return _0x59d0be(null,_0x5079b1);});}})[_0xe8fb('0x28')](function(_0xdfefd2){return _0x59d0be(null,![],_0xdfefd2);});}function handleError(_0x45df94,_0x49c7a5,_0x15f51f){return _0x45df94[_0xe8fb('0x29')](_0x49c7a5||0x1f4)['send']({'message':_0x15f51f?_0x15f51f[_0xe8fb('0x2a')]||_0x15f51f:''});}exports[_0xe8fb('0x2b')]=function(_0x3a88dd,_0x3305c1,_0x5238f3){passport[_0xe8fb('0xc')](_0xe8fb('0x2c'),function(_0x5a4069,_0x73e836,_0x1752cd){var _0x20ebcc=_0x5a4069||_0x1752cd;if(_0x20ebcc){return handleError(_0x3305c1,0x191,_0x20ebcc);}if(!_0x73e836){return handleError(_0x3305c1,0x194,{'message':_0xe8fb('0x2d')});}else{var _0x2a24c7={'payload':{'id':_0x73e836['id'],'role':_0x73e836[_0xe8fb('0x1b')]},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x2a24c7)['then'](function(_0x11749c){_0x3305c1[_0xe8fb('0x2e')]({'id':_0x73e836['id'],'token':_0x11749c,'statusCall':'','isAlreadyLogged':_0x73e836[_0xe8fb('0x1c')]});});}})(_0x3a88dd,_0x3305c1,_0x5238f3);};passport[_0xe8fb('0x2f')](_0xe8fb('0x2c'),new LocalStrategy({'usernameField':_0xe8fb('0x18'),'passwordField':_0xe8fb('0x19')},function(_0x35192a,_0x23f1b6,_0x3b441e){return ActiveDirectoryAuthenticate(db[_0xe8fb('0x30')],_0x35192a,_0x23f1b6,_0x3b441e);}));
\ No newline at end of file
+var _0xdee6=['getLicense','catch','status','send','message','login','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','json','use','passport','passport-local','Strategy','activedirectory2','bluebird','util','../../mysqldb','../../config/environment','../../config/logger','api','undefined','activedirectory','url','domain','error','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','blockDuration','then','name','password','salt','role','disabled','blocked','blockedAt','online','admin','agent','add','minutes','clearBlockUser'];(function(_0x29b2a2,_0x4b7224){var _0x836e8c=function(_0xbea41e){while(--_0xbea41e){_0x29b2a2['push'](_0x29b2a2['shift']());}};_0x836e8c(++_0x4b7224);}(_0xdee6,0x9a));var _0x6dee=function(_0x5bbefd,_0x23fc7a){_0x5bbefd=_0x5bbefd-0x0;var _0x3e041c=_0xdee6[_0x5bbefd];return _0x3e041c;};'use strict';var passport=require(_0x6dee('0x0'));var LocalStrategy=require(_0x6dee('0x1'))[_0x6dee('0x2')];var moment=require('moment');var ActiveDirectory=require(_0x6dee('0x3'));var BPromise=require(_0x6dee('0x4'));var util=require(_0x6dee('0x5'));var db=require(_0x6dee('0x6'))['db'];var authService=require('../../components/auth/service');var utils=require('../../config/utils');var config=require(_0x6dee('0x7'));var logger=require(_0x6dee('0x8'))(_0x6dee('0x9'));function isActiveDirectoryConfigured(_0x322a72){var _0x10ad06=![];if(typeof _0x322a72['activedirectory']!==_0x6dee('0xa')){_0x10ad06=_0x322a72['activedirectory']['baseDN']&&_0x322a72[_0x6dee('0xb')][_0x6dee('0xc')]&&_0x322a72[_0x6dee('0xb')][_0x6dee('0xd')];}return _0x10ad06;}function adAuthenticate(_0x34d757,_0x56d636,_0xf6b0b2){return new BPromise(function(_0x4f4ee8,_0x49f95a){try{var _0x1afc39=new ActiveDirectory(_0x34d757);_0x1afc39['authenticate'](_0x56d636,_0xf6b0b2,function(_0xd2bc26,_0x2f8035){if(_0xd2bc26){logger[_0x6dee('0xe')](_0x6dee('0xf'),_0x56d636,util[_0x6dee('0x10')](_0xd2bc26,{'showHidden':![],'depth':null}));_0x49f95a(_0x6dee('0x11'));}else if(!_0x2f8035){logger[_0x6dee('0xe')](_0x6dee('0x12'),_0x56d636);_0x49f95a('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else{_0x4f4ee8(_0x2f8035);}});}catch(_0x4c28a6){_0x49f95a(_0x4c28a6);}});}function ActiveDirectoryAuthenticate(_0x28ce4f,_0x2495b8,_0x48674a,_0x4eccd6){var _0x1d7892,_0x35f109;if(!isActiveDirectoryConfigured(config)){logger[_0x6dee('0xe')](_0x6dee('0x13'),_0x2495b8);return _0x4eccd6(null,![],{'message':_0x6dee('0x11')});}return db[_0x6dee('0x14')][_0x6dee('0x15')]({'where':{'id':0x1},'attributes':[_0x6dee('0x16'),_0x6dee('0x17')],'raw':!![]})[_0x6dee('0x18')](function(_0x162977){_0x1d7892=_0x162977;if(!_0x1d7892[_0x6dee('0x16')]){logger[_0x6dee('0xe')]('Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled',_0x2495b8);throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}return _0x28ce4f['findOne']({'attributes':['id',_0x6dee('0x19'),_0x6dee('0x1a'),_0x6dee('0x1b'),_0x6dee('0x1c'),_0x6dee('0x1d'),_0x6dee('0x1e'),_0x6dee('0x1f'),_0x6dee('0x20')],'where':{'name':_0x2495b8,'role':{'$or':[_0x6dee('0x21'),'user',_0x6dee('0x22')]},'adSsoEnabled':!![]}});})[_0x6dee('0x18')](function(_0x3efb48){if(!_0x3efb48||_0x3efb48&&_0x3efb48[_0x6dee('0x19')]!==_0x2495b8){throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}_0x35f109=_0x3efb48;var _0x4f27ec=_0x35f109[_0x6dee('0x19')]+'@'+config['activedirectory'][_0x6dee('0xd')];return adAuthenticate(config[_0x6dee('0xb')],_0x4f27ec,_0x48674a);})['then'](function(_0x533470){if(_0x35f109[_0x6dee('0x1d')]){throw new Error(_0x6dee('0x11'));}if(_0x1d7892[_0x6dee('0x17')]>0x0){if(_0x35f109[_0x6dee('0x1e')]){if(moment(_0x35f109[_0x6dee('0x1f')])[_0x6dee('0x23')](_0x1d7892[_0x6dee('0x17')],_0x6dee('0x24'))>moment()){throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}return utils[_0x6dee('0x25')](_0x35f109,0x0,![],null)[_0x6dee('0x18')](function(){return utils[_0x6dee('0x26')](_0x35f109);})[_0x6dee('0x18')](function(){return _0x4eccd6(null,_0x35f109);});}else{return utils['getLicense'](_0x35f109)[_0x6dee('0x18')](function(){return _0x4eccd6(null,_0x35f109);});}}else{return utils['getLicense'](_0x35f109)[_0x6dee('0x18')](function(){return _0x4eccd6(null,_0x35f109);});}})[_0x6dee('0x27')](function(_0x38d460){return _0x4eccd6(null,![],_0x38d460);});}function handleError(_0x5050e2,_0x31369c,_0x5c88df){return _0x5050e2[_0x6dee('0x28')](_0x31369c||0x1f4)[_0x6dee('0x29')]({'message':_0x5c88df?_0x5c88df[_0x6dee('0x2a')]||_0x5c88df:''});}exports[_0x6dee('0x2b')]=function(_0x449793,_0x29f596,_0x4a1488){passport['authenticate']('ad-login',function(_0x59ccff,_0x472fa9,_0x26b9d0){var _0x5b7c1b=_0x59ccff||_0x26b9d0;if(_0x5b7c1b){return handleError(_0x29f596,0x191,_0x5b7c1b);}if(!_0x472fa9){return handleError(_0x29f596,0x194,{'message':_0x6dee('0x2c')});}else{var _0x226e6d={'payload':{'id':_0x472fa9['id'],'role':_0x472fa9[_0x6dee('0x1c')]},'options':{'expiresIn':0x15180}};return authService[_0x6dee('0x2d')](_0x226e6d)[_0x6dee('0x18')](function(_0x281c7e){_0x29f596[_0x6dee('0x2e')]({'id':_0x472fa9['id'],'token':_0x281c7e,'statusCall':'','isAlreadyLogged':_0x472fa9[_0x6dee('0x20')]});});}})(_0x449793,_0x29f596,_0x4a1488);};passport[_0x6dee('0x2f')]('ad-login',new LocalStrategy({'usernameField':_0x6dee('0x19'),'passwordField':'password'},function(_0x33ceec,_0x4323fc,_0x2f9583){return ActiveDirectoryAuthenticate(db['User'],_0x33ceec,_0x4323fc,_0x2f9583);}));
\ No newline at end of file
index fffc51d..b181f0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a35=['exports','./authActiveDirectory.controller','post','login'];(function(_0x24a452,_0x326f0a){var _0x586c9e=function(_0x35e9f7){while(--_0x35e9f7){_0x24a452['push'](_0x24a452['shift']());}};_0x586c9e(++_0x326f0a);}(_0x6a35,0x175));var _0x56a3=function(_0x556927,_0x34b53f){_0x556927=_0x556927-0x0;var _0x5f1235=_0x6a35[_0x556927];return _0x5f1235;};'use strict';var express=require('express');var router=express['Router']();var controller=require(_0x56a3('0x0'));router[_0x56a3('0x1')]('/',controller[_0x56a3('0x2')]);module[_0x56a3('0x3')]=router;
\ No newline at end of file
+var _0x91d5=['post','login','exports','express','Router','./authActiveDirectory.controller'];(function(_0x4f915c,_0x176f81){var _0x6b5199=function(_0x2b4483){while(--_0x2b4483){_0x4f915c['push'](_0x4f915c['shift']());}};_0x6b5199(++_0x176f81);}(_0x91d5,0x1ad));var _0x591d=function(_0x7ea9bf,_0x4df698){_0x7ea9bf=_0x7ea9bf-0x0;var _0x54441d=_0x91d5[_0x7ea9bf];return _0x54441d;};'use strict';var express=require(_0x591d('0x0'));var router=express[_0x591d('0x1')]();var controller=require(_0x591d('0x2'));router[_0x591d('0x3')]('/',controller[_0x591d('0x4')]);module[_0x591d('0x5')]=router;
\ No newline at end of file
index 6387d08..2b6f67b 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(_0x24f31b,_0x44b8f3){var _0x488401=function(_0x204caf){while(--_0x204caf){_0x24f31b['push'](_0x24f31b['shift']());}};_0x488401(++_0x44b8f3);}(_0x7a54,0x106));var _0x47a5=function(_0x2bd63a,_0xd19a66){_0x2bd63a=_0x2bd63a-0x0;var _0x41b5ba=_0x7a54[_0x2bd63a];return _0x41b5ba;};'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(_0x4e6ae6,_0x49dba6){var _0x23c108=function(_0x1bc103){while(--_0x1bc103){_0x4e6ae6['push'](_0x4e6ae6['shift']());}};_0x23c108(++_0x49dba6);}(_0x7a54,0x106));var _0x47a5=function(_0x40da9d,_0x487476){_0x40da9d=_0x40da9d-0x0;var _0x46babe=_0x7a54[_0x40da9d];return _0x46babe;};'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 2e6efc0..43adebc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xddf6=['get','callback','login','exports','passport','Router','./authGoogle.controller','../user/user.controller.js','../../components/auth/service'];(function(_0xb582d9,_0x40de97){var _0x3a570e=function(_0x4b3af9){while(--_0x4b3af9){_0xb582d9['push'](_0xb582d9['shift']());}};_0x3a570e(++_0x40de97);}(_0xddf6,0xf7));var _0x6ddf=function(_0x242a3f,_0x276dc3){_0x242a3f=_0x242a3f-0x0;var _0x5854b0=_0xddf6[_0x242a3f];return _0x5854b0;};'use strict';var express=require('express');var passport=require(_0x6ddf('0x0'));var router=express[_0x6ddf('0x1')]();var controller=require(_0x6ddf('0x2'));var userController=require(_0x6ddf('0x3'));var authService=require(_0x6ddf('0x4'));router[_0x6ddf('0x5')]('/',controller['login']);router['get']('/callback',controller[_0x6ddf('0x6')],authService['isMiddleware'],userController[_0x6ddf('0x7')],authService['setTokenCookie']);module[_0x6ddf('0x8')]=router;
\ No newline at end of file
+var _0x68f8=['express','passport','Router','./authGoogle.controller','../user/user.controller.js','get','callback','isMiddleware','setTokenCookie','exports'];(function(_0x7d4937,_0x202f18){var _0x39ca3f=function(_0x4e4769){while(--_0x4e4769){_0x7d4937['push'](_0x7d4937['shift']());}};_0x39ca3f(++_0x202f18);}(_0x68f8,0x154));var _0x868f=function(_0x2a3d84,_0x39166b){_0x2a3d84=_0x2a3d84-0x0;var _0x36b51b=_0x68f8[_0x2a3d84];return _0x36b51b;};'use strict';var express=require(_0x868f('0x0'));var passport=require(_0x868f('0x1'));var router=express[_0x868f('0x2')]();var controller=require(_0x868f('0x3'));var userController=require(_0x868f('0x4'));var authService=require('../../components/auth/service');router[_0x868f('0x5')]('/',controller['login']);router['get']('/callback',controller[_0x868f('0x6')],authService[_0x868f('0x7')],userController['login'],authService[_0x868f('0x8')]);module[_0x868f('0x9')]=router;
\ No newline at end of file
index 4b8d5e0..e8bdb11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8873=['\x22%s\x22\x20<%s>','request','SendMail','error','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','message','stringify','status','send','Something\x20went\x20wrong,\x20please\x20try\x20again.','json','online','forgot','Email\x20parameter\x20is\x20missing','generate','body','trim','findOne','User','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','save','xCally\x20Motion\x20Password\x20Reset','Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a','headers','host','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','Reset\x20Email\x20sent!','reset','params','token','now','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','securePassword','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','previousPasswords','resetPasswordExpires','use','jayson/promise','lodash','randomstring','../../mysqldb','../../components/auth/service','client','Setting','blockDuration','name','password','salt','role','disabled','blocked','blockedAt','user','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','then','authenticate','loginAttempts','allowedLoginAttempts','add','minutes','clearBlockUser','getLicense','catch','MailAccount','find','email','MailServerOut','Smtp','CloudProvider','getSmtpOptions','merge','format'];(function(_0x1afced,_0x5030a7){var _0x2a10a6=function(_0x12c90f){while(--_0x12c90f){_0x1afced['push'](_0x1afced['shift']());}};_0x2a10a6(++_0x5030a7);}(_0x8873,0x114));var _0x3887=function(_0x119b3e,_0x588d50){_0x119b3e=_0x119b3e-0x0;var _0x1169ae=_0x8873[_0x119b3e];return _0x1169ae;};'use strict';var util=require('util');var passport=require('passport');var LocalStrategy=require('passport-local')['Strategy'];var jayson=require(_0x3887('0x0'));var _=require(_0x3887('0x1'));var rs=require(_0x3887('0x2'));var moment=require('moment');var db=require(_0x3887('0x3'))['db'];var authService=require(_0x3887('0x4'));var utils=require('../../config/utils');var client=jayson[_0x3887('0x5')]['http']({'port':0x232b});function localAuthenticate(_0x41d4a8,_0x334f31,_0xd01379,_0x305af9){var _0x4f4517,_0x19253b;return db[_0x3887('0x6')]['findOne']({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0x3887('0x7')],'raw':!![]})['then'](function(_0x2ddead){_0x4f4517=_0x2ddead;return _0x41d4a8['findOne']({'attributes':['id',_0x3887('0x8'),_0x3887('0x9'),_0x3887('0xa'),_0x3887('0xb'),_0x3887('0xc'),_0x3887('0xd'),_0x3887('0xe'),'loginAttempts'],'where':{'name':_0x334f31,'role':{'$or':['admin',_0x3887('0xf'),_0x3887('0x10')]}}});})['then'](function(_0x9e2ca0){if(!_0x9e2ca0||_0x9e2ca0&&_0x9e2ca0[_0x3887('0x8')]!==_0x334f31){throw new Error(_0x3887('0x11'));}else{_0x19253b=_0x9e2ca0;return _0x19253b;}})[_0x3887('0x12')](function(){_0x19253b[_0x3887('0x13')](_0xd01379,function(_0x1c8a61,_0x14a399){var _0x27941d=_0x19253b[_0x3887('0x14')]+0x1;if(_0x1c8a61){return _0x305af9(_0x1c8a61);}else if(!_0x14a399){if(_0x19253b[_0x3887('0xc')]){return _0x305af9(null,![],{'message':_0x3887('0x11')});}else if(_0x4f4517[_0x3887('0x15')]>0x0){if(_0x19253b['blocked']){if(_0x4f4517[_0x3887('0x7')]>0x0){if(moment(_0x19253b['blockedAt'])[_0x3887('0x16')](_0x4f4517[_0x3887('0x7')],_0x3887('0x17'))>moment()){return _0x305af9(null,![],{'message':_0x3887('0x11')});}else{return utils[_0x3887('0x18')](_0x19253b,_0x27941d,![],null)['then'](function(){return _0x305af9(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}}else{return _0x305af9(null,![],{'message':_0x3887('0x11')});}}else{if(_0x27941d>=_0x4f4517[_0x3887('0x15')]){return utils[_0x3887('0x18')](_0x19253b,0x0,!![],moment())[_0x3887('0x12')](function(){return _0x305af9(null,![],{'message':_0x3887('0x11')});});}else{return utils[_0x3887('0x18')](_0x19253b,_0x27941d,![],null)[_0x3887('0x12')](function(){return _0x305af9(null,![],{'message':_0x3887('0x11')});});}}}else{return _0x305af9(null,![],{'message':_0x3887('0x11')});}}else{if(_0x19253b[_0x3887('0xc')]){return _0x305af9(null,![],{'message':_0x3887('0x11')});}else if(_0x4f4517[_0x3887('0x15')]>0x0){if(_0x19253b[_0x3887('0xd')]){if(_0x4f4517[_0x3887('0x7')]>0x0){if(moment(_0x19253b['blockedAt'])[_0x3887('0x16')](_0x4f4517[_0x3887('0x7')],_0x3887('0x17'))>moment()){return _0x305af9(null,![],{'message':_0x3887('0x11')});}else{return utils['clearBlockUser'](_0x19253b,0x0,![],null)[_0x3887('0x12')](function(){return utils[_0x3887('0x19')](_0x19253b);})[_0x3887('0x12')](function(){return _0x305af9(null,_0x19253b);});}}else{return _0x305af9(null,![],{'message':_0x3887('0x11')});}}else{return utils['clearBlockUser'](_0x19253b,0x0,![],null)[_0x3887('0x12')](function(){return utils[_0x3887('0x19')](_0x19253b);})['then'](function(){return _0x305af9(null,_0x19253b);})[_0x3887('0x1a')](function(_0x3fff76){return _0x305af9(null,![],_0x3fff76);});}}else{if(_0x19253b[_0x3887('0xd')]){return _0x305af9(null,![],{'message':_0x3887('0x11')});}else{return utils['getLicense'](_0x19253b)[_0x3887('0x12')](function(){return _0x305af9(null,_0x19253b);});}}}});})[_0x3887('0x1a')](function(_0x1ea237){return _0x305af9(null,![],_0x1ea237);});}function sendServiceMail(_0x2da507){return db[_0x3887('0x1b')][_0x3887('0x1c')]({'where':{'service':!![]},'attributes':['id','name',_0x3887('0x1d')],'include':[{'model':db[_0x3887('0x1e')],'as':_0x3887('0x1f'),'include':[{'model':db[_0x3887('0x20')],'as':_0x3887('0x20')}]}]})['then'](function(_0x52816c){if(!_0x52816c){throw new Error('Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!');}var _0x6dfde1=_0x52816c[_0x3887('0x21')]();var _0xca6a17={'account':_0x6dfde1,'message':_[_0x3887('0x22')]({'from':util[_0x3887('0x23')](_0x3887('0x24'),_0x52816c[_0x3887('0x8')],_0x52816c['email']||_0x52816c[_0x3887('0x1f')]['user'])},_0x2da507)};return client[_0x3887('0x25')](_0x3887('0x26'),_0xca6a17);})[_0x3887('0x12')](function(_0x55e998){if(_0x55e998[_0x3887('0x27')]){throw new Error(util[_0x3887('0x23')](_0x3887('0x28'),_0x55e998[_0x3887('0x27')][_0x3887('0x29')]||JSON[_0x3887('0x2a')](_0x55e998[_0x3887('0x27')])));}return!![];});}function handleError(_0x5e6576,_0x3a09fc,_0x2b3d09){return _0x5e6576[_0x3887('0x2b')](_0x3a09fc||0x1f4)[_0x3887('0x2c')]({'message':_0x2b3d09?_0x2b3d09[_0x3887('0x29')]||_0x2b3d09:''});}exports['login']=function(_0x592b4f,_0x58d29c,_0x65966){passport['authenticate']('local-login',function(_0x4858d7,_0x3729b8,_0xc970e3){var _0x1a19dd=_0x4858d7||_0xc970e3;if(_0x1a19dd){return handleError(_0x58d29c,0x191,_0x1a19dd);}if(!_0x3729b8){return handleError(_0x58d29c,0x194,{'message':_0x3887('0x2d')});}else{var _0x3f48e8={'payload':{'id':_0x3729b8['id'],'role':_0x3729b8[_0x3887('0xb')]},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x3f48e8)[_0x3887('0x12')](function(_0x1e451b){_0x58d29c[_0x3887('0x2e')]({'id':_0x3729b8['id'],'token':_0x1e451b,'statusCall':'','isAlreadyLogged':_0x3729b8[_0x3887('0x2f')]});});}})(_0x592b4f,_0x58d29c,_0x65966);};exports[_0x3887('0x30')]=function(_0xbd285d,_0x280968){if(!_0xbd285d['body'][_0x3887('0x1d')]){return handleError(_0x280968,0x1f4,{'message':_0x3887('0x31')});}var _0x1b6995=rs[_0x3887('0x32')]();_0xbd285d[_0x3887('0x33')][_0x3887('0x1d')]=_0xbd285d['body'][_0x3887('0x1d')][_0x3887('0x34')]()['toLowerCase']();var _0x32b560;return db[_0x3887('0x6')][_0x3887('0x35')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0x3887('0x7')],'raw':!![]})['then'](function(_0x498751){_0x32b560=_0x498751;return db[_0x3887('0x36')][_0x3887('0x1c')]({'where':{'email':_0xbd285d[_0x3887('0x33')][_0x3887('0x1d')]}});})[_0x3887('0x12')](function(_0x26022a){if(!_0x26022a){throw new Error('This\x20email\x20is\x20not\x20registered.');}if(_0x26022a[_0x3887('0xc')]){throw new Error(_0x3887('0x37'));}if(_0x26022a['blocked']){if(moment(_0x26022a[_0x3887('0xe')])[_0x3887('0x16')](_0x32b560[_0x3887('0x7')],'minutes')>moment()){throw new Error(_0x3887('0x38'));}else{_0x26022a[_0x3887('0xd')]=![];_0x26022a['blockedAt']=null;}}_0x26022a[_0x3887('0x39')]=_0x1b6995;_0x26022a['resetPasswordExpires']=Date['now']()+0x36ee80;return _0x26022a[_0x3887('0x3a')]();})[_0x3887('0x12')](function(){return sendServiceMail({'to':_0xbd285d['body']['email'],'subject':_0x3887('0x3b'),'text':'You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a'+_0x3887('0x3c')+'https://'+_0xbd285d[_0x3887('0x3d')][_0x3887('0x3e')]+_0x3887('0x3f')+_0x1b6995+'\x0a\x0a'+_0x3887('0x40')});})[_0x3887('0x12')](function(){_0x280968[_0x3887('0x2b')](0xc8)[_0x3887('0x2c')]({'message':_0x3887('0x41')});})[_0x3887('0x1a')](function(_0x413d91){return handleError(_0x280968,0x1f4,_0x413d91);});};exports[_0x3887('0x42')]=function(_0x34f492,_0x39bf13){return db[_0x3887('0x36')][_0x3887('0x1c')]({'where':{'resetPasswordToken':_0x34f492[_0x3887('0x43')][_0x3887('0x44')],'resetPasswordExpires':{'$gt':Date[_0x3887('0x45')]()}}})['then'](function(_0x17250b){if(!_0x17250b){throw new Error(_0x3887('0x46'));}return db[_0x3887('0x6')][_0x3887('0x35')]({'attributes':['id',_0x3887('0x47'),_0x3887('0x48'),_0x3887('0x49')]})['then'](function(_0x2f61c5){if(_0x2f61c5[_0x3887('0x47')])authService[_0x3887('0x4a')](_0x34f492[_0x3887('0x33')]['password']);if(!_0x2f61c5[_0x3887('0x48')]||!_0x17250b['previousPasswords'])return _0x17250b;authService['validatePasswordHistory'](_0x34f492[_0x3887('0x33')]['password'],_0x17250b[_0x3887('0x4b')],_0x2f61c5['passwordHistoryLimit']);return _0x17250b;})[_0x3887('0x12')](function(){_0x17250b['password']=_0x34f492['body'][_0x3887('0x9')];_0x17250b[_0x3887('0x39')]=null;_0x17250b[_0x3887('0x4c')]=null;return _0x17250b[_0x3887('0x3a')]();});})['then'](function(){_0x39bf13[_0x3887('0x2b')](0xc8)[_0x3887('0x2c')]({'message':'Password\x20reset!'});})[_0x3887('0x1a')](function(_0x22ff55){return handleError(_0x39bf13,0x1f4,_0x22ff55);});};passport[_0x3887('0x4d')]('local-login',new LocalStrategy({'usernameField':_0x3887('0x8'),'passwordField':_0x3887('0x9')},function(_0x21ce2e,_0x452d95,_0xf16bf9){return localAuthenticate(db['User'],_0x21ce2e,_0x452d95,_0xf16bf9);}));
\ No newline at end of file
+var _0x94aa=['login','authenticate','local-login','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','json','online','Email\x20parameter\x20is\x20missing','generate','body','trim','User','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','resetPasswordExpires','save','xCally\x20Motion\x20Password\x20Reset','You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a','Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a','https://','host','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','reset','params','token','now','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','securePassword','enforcePasswordHistory','passwordHistoryLimit','password','validatePasswordHistory','previousPasswords','Password\x20reset!','use','util','passport','Strategy','jayson/promise','lodash','randomstring','moment','../../mysqldb','../../components/auth/service','../../config/utils','client','Setting','allowedLoginAttempts','blockDuration','then','findOne','role','blocked','blockedAt','loginAttempts','admin','user','agent','name','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','disabled','add','minutes','clearBlockUser','getLicense','catch','MailAccount','find','email','CloudProvider','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','getSmtpOptions','merge','format','\x22%s\x22\x20<%s>','request','SendMail','error','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','message','stringify','status','send'];(function(_0x7ee653,_0x3077ee){var _0x7eeae2=function(_0x4d27df){while(--_0x4d27df){_0x7ee653['push'](_0x7ee653['shift']());}};_0x7eeae2(++_0x3077ee);}(_0x94aa,0x1d4));var _0xa94a=function(_0x45ba7b,_0x456908){_0x45ba7b=_0x45ba7b-0x0;var _0x1245ba=_0x94aa[_0x45ba7b];return _0x1245ba;};'use strict';var util=require(_0xa94a('0x0'));var passport=require(_0xa94a('0x1'));var LocalStrategy=require('passport-local')[_0xa94a('0x2')];var jayson=require(_0xa94a('0x3'));var _=require(_0xa94a('0x4'));var rs=require(_0xa94a('0x5'));var moment=require(_0xa94a('0x6'));var db=require(_0xa94a('0x7'))['db'];var authService=require(_0xa94a('0x8'));var utils=require(_0xa94a('0x9'));var client=jayson[_0xa94a('0xa')]['http']({'port':0x232b});function localAuthenticate(_0x37c8ae,_0x189d85,_0x107911,_0x344dff){var _0x119378,_0x572dde;return db[_0xa94a('0xb')]['findOne']({'where':{'id':0x1},'attributes':[_0xa94a('0xc'),_0xa94a('0xd')],'raw':!![]})[_0xa94a('0xe')](function(_0x1e21e7){_0x119378=_0x1e21e7;return _0x37c8ae[_0xa94a('0xf')]({'attributes':['id','name','password','salt',_0xa94a('0x10'),'disabled',_0xa94a('0x11'),_0xa94a('0x12'),_0xa94a('0x13')],'where':{'name':_0x189d85,'role':{'$or':[_0xa94a('0x14'),_0xa94a('0x15'),_0xa94a('0x16')]}}});})['then'](function(_0x4a3b2d){if(!_0x4a3b2d||_0x4a3b2d&&_0x4a3b2d[_0xa94a('0x17')]!==_0x189d85){throw new Error(_0xa94a('0x18'));}else{_0x572dde=_0x4a3b2d;return _0x572dde;}})['then'](function(){_0x572dde['authenticate'](_0x107911,function(_0x37e5de,_0x4272d3){var _0xb0ed09=_0x572dde['loginAttempts']+0x1;if(_0x37e5de){return _0x344dff(_0x37e5de);}else if(!_0x4272d3){if(_0x572dde[_0xa94a('0x19')]){return _0x344dff(null,![],{'message':_0xa94a('0x18')});}else if(_0x119378['allowedLoginAttempts']>0x0){if(_0x572dde[_0xa94a('0x11')]){if(_0x119378[_0xa94a('0xd')]>0x0){if(moment(_0x572dde[_0xa94a('0x12')])[_0xa94a('0x1a')](_0x119378['blockDuration'],_0xa94a('0x1b'))>moment()){return _0x344dff(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0xa94a('0x1c')](_0x572dde,_0xb0ed09,![],null)[_0xa94a('0xe')](function(){return _0x344dff(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}}else{return _0x344dff(null,![],{'message':_0xa94a('0x18')});}}else{if(_0xb0ed09>=_0x119378[_0xa94a('0xc')]){return utils[_0xa94a('0x1c')](_0x572dde,0x0,!![],moment())[_0xa94a('0xe')](function(){return _0x344dff(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}else{return utils['clearBlockUser'](_0x572dde,_0xb0ed09,![],null)[_0xa94a('0xe')](function(){return _0x344dff(null,![],{'message':_0xa94a('0x18')});});}}}else{return _0x344dff(null,![],{'message':_0xa94a('0x18')});}}else{if(_0x572dde[_0xa94a('0x19')]){return _0x344dff(null,![],{'message':_0xa94a('0x18')});}else if(_0x119378['allowedLoginAttempts']>0x0){if(_0x572dde[_0xa94a('0x11')]){if(_0x119378[_0xa94a('0xd')]>0x0){if(moment(_0x572dde[_0xa94a('0x12')])[_0xa94a('0x1a')](_0x119378[_0xa94a('0xd')],_0xa94a('0x1b'))>moment()){return _0x344dff(null,![],{'message':_0xa94a('0x18')});}else{return utils['clearBlockUser'](_0x572dde,0x0,![],null)[_0xa94a('0xe')](function(){return utils['getLicense'](_0x572dde);})[_0xa94a('0xe')](function(){return _0x344dff(null,_0x572dde);});}}else{return _0x344dff(null,![],{'message':_0xa94a('0x18')});}}else{return utils['clearBlockUser'](_0x572dde,0x0,![],null)['then'](function(){return utils[_0xa94a('0x1d')](_0x572dde);})[_0xa94a('0xe')](function(){return _0x344dff(null,_0x572dde);})[_0xa94a('0x1e')](function(_0x68bf0d){return _0x344dff(null,![],_0x68bf0d);});}}else{if(_0x572dde[_0xa94a('0x11')]){return _0x344dff(null,![],{'message':_0xa94a('0x18')});}else{return utils[_0xa94a('0x1d')](_0x572dde)['then'](function(){return _0x344dff(null,_0x572dde);});}}}});})[_0xa94a('0x1e')](function(_0x26e99c){return _0x344dff(null,![],_0x26e99c);});}function sendServiceMail(_0x78f88){return db[_0xa94a('0x1f')][_0xa94a('0x20')]({'where':{'service':!![]},'attributes':['id',_0xa94a('0x17'),_0xa94a('0x21')],'include':[{'model':db['MailServerOut'],'as':'Smtp','include':[{'model':db[_0xa94a('0x22')],'as':_0xa94a('0x22')}]}]})[_0xa94a('0xe')](function(_0x3e4682){if(!_0x3e4682){throw new Error(_0xa94a('0x23'));}var _0x112c87=_0x3e4682[_0xa94a('0x24')]();var _0x50f75d={'account':_0x112c87,'message':_[_0xa94a('0x25')]({'from':util[_0xa94a('0x26')](_0xa94a('0x27'),_0x3e4682[_0xa94a('0x17')],_0x3e4682['email']||_0x3e4682['Smtp'][_0xa94a('0x15')])},_0x78f88)};return client[_0xa94a('0x28')](_0xa94a('0x29'),_0x50f75d);})[_0xa94a('0xe')](function(_0x369115){if(_0x369115[_0xa94a('0x2a')]){throw new Error(util[_0xa94a('0x26')](_0xa94a('0x2b'),_0x369115[_0xa94a('0x2a')][_0xa94a('0x2c')]||JSON[_0xa94a('0x2d')](_0x369115[_0xa94a('0x2a')])));}return!![];});}function handleError(_0x273045,_0x41fa09,_0x584c9d){return _0x273045[_0xa94a('0x2e')](_0x41fa09||0x1f4)[_0xa94a('0x2f')]({'message':_0x584c9d?_0x584c9d[_0xa94a('0x2c')]||_0x584c9d:''});}exports[_0xa94a('0x30')]=function(_0x929bf,_0x30bf09,_0x139c10){passport[_0xa94a('0x31')](_0xa94a('0x32'),function(_0x2fea25,_0x1dd313,_0x3343dd){var _0xde4789=_0x2fea25||_0x3343dd;if(_0xde4789){return handleError(_0x30bf09,0x191,_0xde4789);}if(!_0x1dd313){return handleError(_0x30bf09,0x194,{'message':_0xa94a('0x33')});}else{var _0x3dbd99={'payload':{'id':_0x1dd313['id'],'role':_0x1dd313[_0xa94a('0x10')]},'options':{'expiresIn':0x15180}};return authService[_0xa94a('0x34')](_0x3dbd99)[_0xa94a('0xe')](function(_0x51dbd2){_0x30bf09[_0xa94a('0x35')]({'id':_0x1dd313['id'],'token':_0x51dbd2,'statusCall':'','isAlreadyLogged':_0x1dd313[_0xa94a('0x36')]});});}})(_0x929bf,_0x30bf09,_0x139c10);};exports['forgot']=function(_0x586822,_0x1ea8f5){if(!_0x586822['body']['email']){return handleError(_0x1ea8f5,0x1f4,{'message':_0xa94a('0x37')});}var _0x4cc08f=rs[_0xa94a('0x38')]();_0x586822[_0xa94a('0x39')][_0xa94a('0x21')]=_0x586822[_0xa94a('0x39')]['email'][_0xa94a('0x3a')]()['toLowerCase']();var _0x533540;return db['Setting'][_0xa94a('0xf')]({'where':{'id':0x1},'attributes':[_0xa94a('0xc'),_0xa94a('0xd')],'raw':!![]})[_0xa94a('0xe')](function(_0x40355a){_0x533540=_0x40355a;return db[_0xa94a('0x3b')]['find']({'where':{'email':_0x586822[_0xa94a('0x39')]['email']}});})['then'](function(_0x5684f7){if(!_0x5684f7){throw new Error(_0xa94a('0x3c'));}if(_0x5684f7[_0xa94a('0x19')]){throw new Error(_0xa94a('0x3d'));}if(_0x5684f7[_0xa94a('0x11')]){if(moment(_0x5684f7[_0xa94a('0x12')])[_0xa94a('0x1a')](_0x533540['blockDuration'],'minutes')>moment()){throw new Error(_0xa94a('0x3e'));}else{_0x5684f7[_0xa94a('0x11')]=![];_0x5684f7[_0xa94a('0x12')]=null;}}_0x5684f7[_0xa94a('0x3f')]=_0x4cc08f;_0x5684f7[_0xa94a('0x40')]=Date['now']()+0x36ee80;return _0x5684f7[_0xa94a('0x41')]();})[_0xa94a('0xe')](function(){return sendServiceMail({'to':_0x586822[_0xa94a('0x39')]['email'],'subject':_0xa94a('0x42'),'text':_0xa94a('0x43')+_0xa94a('0x44')+_0xa94a('0x45')+_0x586822['headers'][_0xa94a('0x46')]+_0xa94a('0x47')+_0x4cc08f+'\x0a\x0a'+_0xa94a('0x48')});})[_0xa94a('0xe')](function(){_0x1ea8f5[_0xa94a('0x2e')](0xc8)[_0xa94a('0x2f')]({'message':'Reset\x20Email\x20sent!'});})['catch'](function(_0x41b095){return handleError(_0x1ea8f5,0x1f4,_0x41b095);});};exports[_0xa94a('0x49')]=function(_0x4fb6ec,_0x40853a){return db['User'][_0xa94a('0x20')]({'where':{'resetPasswordToken':_0x4fb6ec[_0xa94a('0x4a')][_0xa94a('0x4b')],'resetPasswordExpires':{'$gt':Date[_0xa94a('0x4c')]()}}})[_0xa94a('0xe')](function(_0x5909f7){if(!_0x5909f7){throw new Error(_0xa94a('0x4d'));}return db[_0xa94a('0xb')][_0xa94a('0xf')]({'attributes':['id',_0xa94a('0x4e'),_0xa94a('0x4f'),_0xa94a('0x50')]})[_0xa94a('0xe')](function(_0x3f9e5e){if(_0x3f9e5e[_0xa94a('0x4e')])authService['validatePasswordPattern'](_0x4fb6ec[_0xa94a('0x39')][_0xa94a('0x51')]);if(!_0x3f9e5e[_0xa94a('0x4f')]||!_0x5909f7['previousPasswords'])return _0x5909f7;authService[_0xa94a('0x52')](_0x4fb6ec['body'][_0xa94a('0x51')],_0x5909f7[_0xa94a('0x53')],_0x3f9e5e[_0xa94a('0x50')]);return _0x5909f7;})[_0xa94a('0xe')](function(){_0x5909f7[_0xa94a('0x51')]=_0x4fb6ec[_0xa94a('0x39')][_0xa94a('0x51')];_0x5909f7[_0xa94a('0x3f')]=null;_0x5909f7['resetPasswordExpires']=null;return _0x5909f7[_0xa94a('0x41')]();});})[_0xa94a('0xe')](function(){_0x40853a[_0xa94a('0x2e')](0xc8)[_0xa94a('0x2f')]({'message':_0xa94a('0x54')});})[_0xa94a('0x1e')](function(_0x342e8e){return handleError(_0x40853a,0x1f4,_0x342e8e);});};passport[_0xa94a('0x55')](_0xa94a('0x32'),new LocalStrategy({'usernameField':_0xa94a('0x17'),'passwordField':_0xa94a('0x51')},function(_0x24814c,_0x4978c6,_0x4b7c8c){return localAuthenticate(db[_0xa94a('0x3b')],_0x24814c,_0x4978c6,_0x4b7c8c);}));
\ No newline at end of file
index 78e3390..b7d1aa9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb342=['post','forgot','/reset/:token','exports','express','Router','./authLocal.controller'];(function(_0x317f76,_0x2ddebf){var _0x2847d7=function(_0x564894){while(--_0x564894){_0x317f76['push'](_0x317f76['shift']());}};_0x2847d7(++_0x2ddebf);}(_0xb342,0x17e));var _0x2b34=function(_0x28d138,_0x21196d){_0x28d138=_0x28d138-0x0;var _0x4beedb=_0xb342[_0x28d138];return _0x4beedb;};'use strict';var express=require(_0x2b34('0x0'));var router=express[_0x2b34('0x1')]();var controller=require(_0x2b34('0x2'));router[_0x2b34('0x3')]('/',controller['login']);router[_0x2b34('0x3')]('/forgot',controller[_0x2b34('0x4')]);router['post'](_0x2b34('0x5'),controller['reset']);module[_0x2b34('0x6')]=router;
\ No newline at end of file
+var _0x8589=['/reset/:token','exports','Router','./authLocal.controller','post','login','forgot'];(function(_0x1d9aa0,_0x272488){var _0x226868=function(_0x17127c){while(--_0x17127c){_0x1d9aa0['push'](_0x1d9aa0['shift']());}};_0x226868(++_0x272488);}(_0x8589,0xcd));var _0x9858=function(_0x44d2ce,_0x3b70e2){_0x44d2ce=_0x44d2ce-0x0;var _0x489d01=_0x8589[_0x44d2ce];return _0x489d01;};'use strict';var express=require('express');var router=express[_0x9858('0x0')]();var controller=require(_0x9858('0x1'));router[_0x9858('0x2')]('/',controller[_0x9858('0x3')]);router['post']('/forgot',controller[_0x9858('0x4')]);router['post'](_0x9858('0x5'),controller['reset']);module[_0x9858('0x6')]=router;
\ No newline at end of file
index 5d53ae8..2f1264c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53c9=['STRING','BOOLEAN','INTEGER'];(function(_0x1f4528,_0x1571f7){var _0x15ec4c=function(_0x360679){while(--_0x360679){_0x1f4528['push'](_0x1f4528['shift']());}};_0x15ec4c(++_0x1571f7);}(_0x53c9,0x1c8));var _0x953c=function(_0x4d79bc,_0x32c905){_0x4d79bc=_0x4d79bc-0x0;var _0x4b4760=_0x53c9[_0x4d79bc];return _0x4b4760;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x953c('0x0')],'allowNull':![]},'channel':{'type':Sequelize[_0x953c('0x0')]},'description':{'type':Sequelize[_0x953c('0x0')]},'status':{'type':Sequelize[_0x953c('0x1')],'defaultValue':![]},'timeout':{'type':Sequelize[_0x953c('0x2')],'defaultValue':0xa}};
\ No newline at end of file
+var _0x8106=['exports','STRING','INTEGER','sequelize'];(function(_0x960a5,_0x4e9959){var _0x5067b4=function(_0x5cf4b2){while(--_0x5cf4b2){_0x960a5['push'](_0x960a5['shift']());}};_0x5067b4(++_0x4e9959);}(_0x8106,0x83));var _0x6810=function(_0x2d5c01,_0x2da7ee){_0x2d5c01=_0x2d5c01-0x0;var _0x3f129a=_0x8106[_0x2d5c01];return _0x3f129a;};'use strict';var Sequelize=require(_0x6810('0x0'));module[_0x6810('0x1')]={'name':{'type':Sequelize[_0x6810('0x2')],'allowNull':![]},'channel':{'type':Sequelize[_0x6810('0x2')]},'description':{'type':Sequelize[_0x6810('0x2')]},'status':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'timeout':{'type':Sequelize[_0x6810('0x3')],'defaultValue':0xa}};
\ No newline at end of file
index ab8fb9c..a00e877 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f7e=['mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','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','count','limit','set','Content-Range','reject','update','then','sendStatus','error','stack','name','send','index','rawAttributes','fieldName','type','model','map','query','keys','filters','attributes','intersection','hasOwnProperty','nolimit','order','sort','where','pick','merge','filter','Automation','include','findAll','rows','params','fields','includeAll','options','find','catch','create','body','destroy','Condition','ids','omit','findOne','length','getConditions','addActions','Action','getActions','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird'];(function(_0x4584f1,_0x566d68){var _0x34fe53=function(_0x19244e){while(--_0x19244e){_0x4584f1['push'](_0x4584f1['shift']());}};_0x34fe53(++_0x566d68);}(_0x1f7e,0xf0));var _0xe1f7=function(_0x3376f4,_0xc1a3ac){_0x3376f4=_0x3376f4-0x0;var _0x14f8be=_0x1f7e[_0x3376f4];return _0x14f8be;};'use strict';var emlformat=require(_0xe1f7('0x0'));var rimraf=require(_0xe1f7('0x1'));var zipdir=require(_0xe1f7('0x2'));var jsonpatch=require(_0xe1f7('0x3'));var rp=require('request-promise');var moment=require(_0xe1f7('0x4'));var BPromise=require(_0xe1f7('0x5'));var Mustache=require(_0xe1f7('0x6'));var util=require(_0xe1f7('0x7'));var path=require('path');var sox=require(_0xe1f7('0x8'));var csv=require(_0xe1f7('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe1f7('0xa'));var _=require(_0xe1f7('0xb'));var squel=require(_0xe1f7('0xc'));var crypto=require(_0xe1f7('0xd'));var jsforce=require(_0xe1f7('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xe1f7('0xf'));var authService=require(_0xe1f7('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xe1f7('0x11'));var hardwareService=require(_0xe1f7('0x12'));var logger=require(_0xe1f7('0x13'))(_0xe1f7('0x14'));var utils=require(_0xe1f7('0x15'));var config=require(_0xe1f7('0x16'));var licenseUtil=require(_0xe1f7('0x17'));var db=require(_0xe1f7('0x18'))['db'];function respondWithStatusCode(_0x249f48,_0x28c79b){_0x28c79b=_0x28c79b||0xcc;return function(_0x2d44a0){if(_0x2d44a0){return _0x249f48['sendStatus'](_0x28c79b);}return _0x249f48[_0xe1f7('0x19')](_0x28c79b)[_0xe1f7('0x1a')]();};}function respondWithResult(_0x473f61,_0x1e3522){_0x1e3522=_0x1e3522||0xc8;return function(_0x18b97f){if(_0x18b97f){return _0x473f61[_0xe1f7('0x19')](_0x1e3522)[_0xe1f7('0x1b')](_0x18b97f);}};}function respondWithFilteredResult(_0x44f07f,_0x313b89){return function(_0x24330d){if(_0x24330d){var _0x1bc606=typeof _0x313b89[_0xe1f7('0x1c')]==='undefined'&&typeof _0x313b89['limit']==='undefined';var _0x4ad7fb=_0x24330d['count'];var _0x9ce1e6=_0x1bc606?0x0:_0x313b89[_0xe1f7('0x1c')];var _0x1bbe23=_0x1bc606?_0x24330d[_0xe1f7('0x1d')]:_0x313b89[_0xe1f7('0x1c')]+_0x313b89[_0xe1f7('0x1e')];var _0x2655c7;if(_0x1bbe23>=_0x4ad7fb){_0x1bbe23=_0x4ad7fb;_0x2655c7=0xc8;}else{_0x2655c7=0xce;}_0x44f07f[_0xe1f7('0x19')](_0x2655c7);return _0x44f07f[_0xe1f7('0x1f')](_0xe1f7('0x20'),_0x9ce1e6+'-'+_0x1bbe23+'/'+_0x4ad7fb)[_0xe1f7('0x1b')](_0x24330d);}return null;};}function patchUpdates(_0xcdfaf2){return function(_0x24bf00){try{jsonpatch['apply'](_0x24bf00,_0xcdfaf2,!![]);}catch(_0x43c878){return BPromise[_0xe1f7('0x21')](_0x43c878);}return _0x24bf00['save']();};}function saveUpdates(_0x195516,_0x4fc577){return function(_0x70e8f1){if(_0x70e8f1){return _0x70e8f1[_0xe1f7('0x22')](_0x195516)[_0xe1f7('0x23')](function(_0xb3df8b){return _0xb3df8b;});}return null;};}function removeEntity(_0x3bbc5d,_0x8ceb0d){return function(_0x1a52a3){if(_0x1a52a3){return _0x1a52a3['destroy']()[_0xe1f7('0x23')](function(){_0x3bbc5d['status'](0xcc)[_0xe1f7('0x1a')]();});}};}function handleEntityNotFound(_0x2efbe2,_0x317905){return function(_0x3cec11){if(!_0x3cec11){_0x2efbe2[_0xe1f7('0x24')](0x194);}return _0x3cec11;};}function handleError(_0x2ad39f,_0x4ffaed){_0x4ffaed=_0x4ffaed||0x1f4;return function(_0x65d2cc){logger[_0xe1f7('0x25')](_0x65d2cc[_0xe1f7('0x26')]);if(_0x65d2cc[_0xe1f7('0x27')]){delete _0x65d2cc[_0xe1f7('0x27')];}_0x2ad39f[_0xe1f7('0x19')](_0x4ffaed)[_0xe1f7('0x28')](_0x65d2cc);};}exports[_0xe1f7('0x29')]=function(_0x3a5e5d,_0x3e14c2){var _0x2e30b8={},_0x39d004={},_0x34b8f5={'count':0x0,'rows':[]};var _0x2b5c12=_['map'](db['Automation'][_0xe1f7('0x2a')],function(_0x53f605){return{'name':_0x53f605[_0xe1f7('0x2b')],'type':_0x53f605[_0xe1f7('0x2c')]['key']};});_0x39d004[_0xe1f7('0x2d')]=_[_0xe1f7('0x2e')](_0x2b5c12,'name');_0x39d004[_0xe1f7('0x2f')]=_[_0xe1f7('0x30')](_0x3a5e5d[_0xe1f7('0x2f')]);_0x39d004[_0xe1f7('0x31')]=_['intersection'](_0x39d004[_0xe1f7('0x2d')],_0x39d004[_0xe1f7('0x2f')]);_0x2e30b8[_0xe1f7('0x32')]=_[_0xe1f7('0x33')](_0x39d004['model'],qs['fields'](_0x3a5e5d[_0xe1f7('0x2f')]['fields']));_0x2e30b8['attributes']=_0x2e30b8[_0xe1f7('0x32')]['length']?_0x2e30b8['attributes']:_0x39d004[_0xe1f7('0x2d')];if(!_0x3a5e5d[_0xe1f7('0x2f')][_0xe1f7('0x34')](_0xe1f7('0x35'))){_0x2e30b8['limit']=qs[_0xe1f7('0x1e')](_0x3a5e5d[_0xe1f7('0x2f')][_0xe1f7('0x1e')]);_0x2e30b8['offset']=qs[_0xe1f7('0x1c')](_0x3a5e5d[_0xe1f7('0x2f')][_0xe1f7('0x1c')]);}_0x2e30b8[_0xe1f7('0x36')]=qs[_0xe1f7('0x37')](_0x3a5e5d[_0xe1f7('0x2f')]['sort']);_0x2e30b8[_0xe1f7('0x38')]=qs['filters'](_[_0xe1f7('0x39')](_0x3a5e5d[_0xe1f7('0x2f')],_0x39d004[_0xe1f7('0x31')]),_0x2b5c12);if(_0x3a5e5d[_0xe1f7('0x2f')]['filter']){_0x2e30b8['where']=_[_0xe1f7('0x3a')](_0x2e30b8[_0xe1f7('0x38')],{'$or':_['map'](_0x2b5c12,function(_0x41aff3){if(_0x41aff3[_0xe1f7('0x2c')]!=='VIRTUAL'){var _0x3b1f0b={};_0x3b1f0b[_0x41aff3[_0xe1f7('0x27')]]={'$like':'%'+_0x3a5e5d[_0xe1f7('0x2f')][_0xe1f7('0x3b')]+'%'};return _0x3b1f0b;}})});}_0x2e30b8=_[_0xe1f7('0x3a')]({},_0x2e30b8,_0x3a5e5d['options']);var _0x168c47={'where':_0x2e30b8['where']};return db[_0xe1f7('0x3c')][_0xe1f7('0x1d')](_0x168c47)['then'](function(_0x21e184){_0x34b8f5[_0xe1f7('0x1d')]=_0x21e184;if(_0x3a5e5d['query']['includeAll']){_0x2e30b8[_0xe1f7('0x3d')]=[{'all':!![]}];}return db[_0xe1f7('0x3c')][_0xe1f7('0x3e')](_0x2e30b8);})['then'](function(_0x405fd1){_0x34b8f5[_0xe1f7('0x3f')]=_0x405fd1;return _0x34b8f5;})[_0xe1f7('0x23')](respondWithFilteredResult(_0x3e14c2,_0x2e30b8))['catch'](handleError(_0x3e14c2,null));};exports['show']=function(_0x531cbc,_0x353351){var _0x3aa408={'raw':![],'where':{'id':_0x531cbc[_0xe1f7('0x40')]['id']}},_0x14350b={};_0x14350b[_0xe1f7('0x2d')]=_[_0xe1f7('0x30')](db[_0xe1f7('0x3c')]['rawAttributes']);_0x14350b['query']=_['keys'](_0x531cbc[_0xe1f7('0x2f')]);_0x14350b[_0xe1f7('0x31')]=_[_0xe1f7('0x33')](_0x14350b[_0xe1f7('0x2d')],_0x14350b['query']);_0x3aa408['attributes']=_[_0xe1f7('0x33')](_0x14350b[_0xe1f7('0x2d')],qs[_0xe1f7('0x41')](_0x531cbc[_0xe1f7('0x2f')][_0xe1f7('0x41')]));_0x3aa408[_0xe1f7('0x32')]=_0x3aa408['attributes']['length']?_0x3aa408['attributes']:_0x14350b[_0xe1f7('0x2d')];if(_0x531cbc[_0xe1f7('0x2f')][_0xe1f7('0x42')]){_0x3aa408[_0xe1f7('0x3d')]=[{'all':!![]}];}_0x3aa408=_[_0xe1f7('0x3a')]({},_0x3aa408,_0x531cbc[_0xe1f7('0x43')]);return db[_0xe1f7('0x3c')][_0xe1f7('0x44')](_0x3aa408)[_0xe1f7('0x23')](handleEntityNotFound(_0x353351,null))[_0xe1f7('0x23')](respondWithResult(_0x353351,null))[_0xe1f7('0x45')](handleError(_0x353351,null));};exports[_0xe1f7('0x46')]=function(_0x4941f4,_0x589bdf){return db[_0xe1f7('0x3c')]['create'](_0x4941f4[_0xe1f7('0x47')],{})[_0xe1f7('0x23')](respondWithResult(_0x589bdf,0xc9))[_0xe1f7('0x45')](handleError(_0x589bdf,null));};exports['update']=function(_0x3893b8,_0x4866ab){if(_0x3893b8[_0xe1f7('0x47')]['id']){delete _0x3893b8['body']['id'];}return db[_0xe1f7('0x3c')][_0xe1f7('0x44')]({'where':{'id':_0x3893b8[_0xe1f7('0x40')]['id']}})['then'](handleEntityNotFound(_0x4866ab,null))[_0xe1f7('0x23')](saveUpdates(_0x3893b8[_0xe1f7('0x47')],null))[_0xe1f7('0x23')](respondWithResult(_0x4866ab,null))[_0xe1f7('0x45')](handleError(_0x4866ab,null));};exports[_0xe1f7('0x48')]=function(_0x24957e,_0x1c00bc){return db[_0xe1f7('0x3c')][_0xe1f7('0x44')]({'where':{'id':_0x24957e[_0xe1f7('0x40')]['id']}})['then'](handleEntityNotFound(_0x1c00bc,null))[_0xe1f7('0x23')](removeEntity(_0x1c00bc,null))[_0xe1f7('0x45')](handleError(_0x1c00bc,null));};exports['addConditions']=function(_0x1b5be1,_0x138419,_0x2bf0a9){return db[_0xe1f7('0x49')][_0xe1f7('0x44')]({'where':{'id':_0x1b5be1[_0xe1f7('0x40')]['id']}})['then'](handleEntityNotFound(_0x138419,null))[_0xe1f7('0x23')](function(_0x167a1b){if(_0x167a1b){return _0x167a1b['addConditions'](_0x1b5be1[_0xe1f7('0x47')][_0xe1f7('0x4a')],_[_0xe1f7('0x4b')](_0x1b5be1[_0xe1f7('0x47')],['ids','id'])||{});}})[_0xe1f7('0x23')](respondWithResult(_0x138419,null))[_0xe1f7('0x45')](handleError(_0x138419,null));};exports['getConditions']=function(_0x8fa95b,_0x2ff2ed,_0x550c54){var _0x37fb63={};var _0x389f4c={};var _0xab8890;var _0x2e583d;return db[_0xe1f7('0x3c')][_0xe1f7('0x4c')]({'where':{'id':_0x8fa95b[_0xe1f7('0x40')]['id']}})['then'](handleEntityNotFound(_0x2ff2ed,null))['then'](function(_0x45c869){if(_0x45c869){_0xab8890=_0x45c869;_0x389f4c[_0xe1f7('0x2d')]=_[_0xe1f7('0x30')](db['Condition']['rawAttributes']);_0x389f4c[_0xe1f7('0x2f')]=_[_0xe1f7('0x30')](_0x8fa95b[_0xe1f7('0x2f')]);_0x389f4c['filters']=_[_0xe1f7('0x33')](_0x389f4c[_0xe1f7('0x2d')],_0x389f4c[_0xe1f7('0x2f')]);_0x37fb63[_0xe1f7('0x32')]=_[_0xe1f7('0x33')](_0x389f4c[_0xe1f7('0x2d')],qs[_0xe1f7('0x41')](_0x8fa95b[_0xe1f7('0x2f')]['fields']));_0x37fb63[_0xe1f7('0x32')]=_0x37fb63[_0xe1f7('0x32')][_0xe1f7('0x4d')]?_0x37fb63[_0xe1f7('0x32')]:_0x389f4c[_0xe1f7('0x2d')];_0x37fb63['order']=qs['sort'](_0x8fa95b[_0xe1f7('0x2f')]['sort']);_0x37fb63[_0xe1f7('0x38')]=qs['filters'](_[_0xe1f7('0x39')](_0x8fa95b[_0xe1f7('0x2f')],_0x389f4c['filters']));if(_0x8fa95b[_0xe1f7('0x2f')]['filter']){_0x37fb63[_0xe1f7('0x38')]=_['merge'](_0x37fb63[_0xe1f7('0x38')],{'$or':_['map'](_0x37fb63['attributes'],function(_0x4094ad){var _0x4bca67={};_0x4bca67[_0x4094ad]={'$like':'%'+_0x8fa95b[_0xe1f7('0x2f')][_0xe1f7('0x3b')]+'%'};return _0x4bca67;})});}_0x37fb63=_[_0xe1f7('0x3a')]({},_0x37fb63,_0x8fa95b[_0xe1f7('0x43')]);return _0xab8890[_0xe1f7('0x4e')](_0x37fb63);}})[_0xe1f7('0x23')](function(_0x56cb97){if(_0x56cb97){_0x2e583d=_0x56cb97[_0xe1f7('0x4d')];if(!_0x8fa95b['query'][_0xe1f7('0x34')](_0xe1f7('0x35'))){_0x37fb63['limit']=qs[_0xe1f7('0x1e')](_0x8fa95b[_0xe1f7('0x2f')][_0xe1f7('0x1e')]);_0x37fb63['offset']=qs[_0xe1f7('0x1c')](_0x8fa95b[_0xe1f7('0x2f')][_0xe1f7('0x1c')]);}return _0xab8890['getConditions'](_0x37fb63);}})[_0xe1f7('0x23')](function(_0x6f3cd6){if(_0x6f3cd6){return _0x6f3cd6?{'count':_0x2e583d,'rows':_0x6f3cd6}:null;}})[_0xe1f7('0x23')](respondWithResult(_0x2ff2ed,null))[_0xe1f7('0x45')](handleError(_0x2ff2ed,null));};exports[_0xe1f7('0x4f')]=function(_0x42e422,_0x49a142,_0x46603b){return db[_0xe1f7('0x50')][_0xe1f7('0x44')]({'where':{'id':_0x42e422['params']['id']}})[_0xe1f7('0x23')](handleEntityNotFound(_0x49a142,null))[_0xe1f7('0x23')](function(_0x13e22d){if(_0x13e22d){return _0x13e22d[_0xe1f7('0x4f')](_0x42e422[_0xe1f7('0x47')][_0xe1f7('0x4a')],_[_0xe1f7('0x4b')](_0x42e422[_0xe1f7('0x47')],[_0xe1f7('0x4a'),'id'])||{});}})[_0xe1f7('0x23')](respondWithResult(_0x49a142,null))[_0xe1f7('0x45')](handleError(_0x49a142,null));};exports[_0xe1f7('0x51')]=function(_0x5721fa,_0x2c1ee5,_0x53e758){var _0x45dbec={};var _0x546e2b={};var _0x2eee05;var _0x5416d4;return db[_0xe1f7('0x3c')][_0xe1f7('0x4c')]({'where':{'id':_0x5721fa[_0xe1f7('0x40')]['id']}})[_0xe1f7('0x23')](handleEntityNotFound(_0x2c1ee5,null))[_0xe1f7('0x23')](function(_0x3edb79){if(_0x3edb79){_0x2eee05=_0x3edb79;_0x546e2b[_0xe1f7('0x2d')]=_['keys'](db[_0xe1f7('0x50')][_0xe1f7('0x2a')]);_0x546e2b[_0xe1f7('0x2f')]=_[_0xe1f7('0x30')](_0x5721fa[_0xe1f7('0x2f')]);_0x546e2b[_0xe1f7('0x31')]=_['intersection'](_0x546e2b[_0xe1f7('0x2d')],_0x546e2b[_0xe1f7('0x2f')]);_0x45dbec[_0xe1f7('0x32')]=_[_0xe1f7('0x33')](_0x546e2b[_0xe1f7('0x2d')],qs['fields'](_0x5721fa['query']['fields']));_0x45dbec['attributes']=_0x45dbec[_0xe1f7('0x32')][_0xe1f7('0x4d')]?_0x45dbec[_0xe1f7('0x32')]:_0x546e2b[_0xe1f7('0x2d')];_0x45dbec[_0xe1f7('0x36')]=qs[_0xe1f7('0x37')](_0x5721fa[_0xe1f7('0x2f')][_0xe1f7('0x37')]);_0x45dbec[_0xe1f7('0x38')]=qs[_0xe1f7('0x31')](_['pick'](_0x5721fa['query'],_0x546e2b[_0xe1f7('0x31')]));if(_0x5721fa['query']['filter']){_0x45dbec[_0xe1f7('0x38')]=_[_0xe1f7('0x3a')](_0x45dbec[_0xe1f7('0x38')],{'$or':_['map'](_0x45dbec[_0xe1f7('0x32')],function(_0x302a65){var _0x185abe={};_0x185abe[_0x302a65]={'$like':'%'+_0x5721fa[_0xe1f7('0x2f')]['filter']+'%'};return _0x185abe;})});}_0x45dbec=_[_0xe1f7('0x3a')]({},_0x45dbec,_0x5721fa[_0xe1f7('0x43')]);return _0x2eee05[_0xe1f7('0x51')](_0x45dbec);}})['then'](function(_0x4e04e9){if(_0x4e04e9){_0x5416d4=_0x4e04e9['length'];if(!_0x5721fa[_0xe1f7('0x2f')]['hasOwnProperty']('nolimit')){_0x45dbec[_0xe1f7('0x1e')]=qs[_0xe1f7('0x1e')](_0x5721fa['query'][_0xe1f7('0x1e')]);_0x45dbec['offset']=qs['offset'](_0x5721fa['query'][_0xe1f7('0x1c')]);}return _0x2eee05[_0xe1f7('0x51')](_0x45dbec);}})[_0xe1f7('0x23')](function(_0x4add32){if(_0x4add32){return _0x4add32?{'count':_0x5416d4,'rows':_0x4add32}:null;}})['then'](respondWithResult(_0x2c1ee5,null))['catch'](handleError(_0x2c1ee5,null));};
\ No newline at end of file
+var _0x0fb5=['rawAttributes','fieldName','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','VIRTUAL','merge','options','include','rows','catch','show','params','includeAll','find','create','body','addConditions','ids','getConditions','findOne','Action','omit','getActions','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','save','update','then','destroy','error','name','send','map','Automation'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0fb5,0x15d));var _0x50fb=function(_0x42cffb,_0x366ab0){_0x42cffb=_0x42cffb-0x0;var _0x2b84ff=_0x0fb5[_0x42cffb];return _0x2b84ff;};'use strict';var emlformat=require(_0x50fb('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x50fb('0x1'));var jsonpatch=require(_0x50fb('0x2'));var rp=require('request-promise');var moment=require(_0x50fb('0x3'));var BPromise=require(_0x50fb('0x4'));var Mustache=require(_0x50fb('0x5'));var util=require(_0x50fb('0x6'));var path=require(_0x50fb('0x7'));var sox=require('sox');var csv=require(_0x50fb('0x8'));var ejs=require(_0x50fb('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x50fb('0xa'));var squel=require(_0x50fb('0xb'));var crypto=require('crypto');var jsforce=require(_0x50fb('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x50fb('0x8'));var querystring=require(_0x50fb('0xd'));var Papa=require(_0x50fb('0xe'));var Redis=require(_0x50fb('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x50fb('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x50fb('0x11'))(_0x50fb('0x12'));var utils=require('../../config/utils');var config=require(_0x50fb('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x50fb('0x14'))['db'];function respondWithStatusCode(_0xc7b741,_0x1d402a){_0x1d402a=_0x1d402a||0xcc;return function(_0x27def8){if(_0x27def8){return _0xc7b741[_0x50fb('0x15')](_0x1d402a);}return _0xc7b741[_0x50fb('0x16')](_0x1d402a)[_0x50fb('0x17')]();};}function respondWithResult(_0x36b8f9,_0x14abbf){_0x14abbf=_0x14abbf||0xc8;return function(_0xcc9bca){if(_0xcc9bca){return _0x36b8f9['status'](_0x14abbf)['json'](_0xcc9bca);}};}function respondWithFilteredResult(_0x319507,_0x33b837){return function(_0x548aa7){if(_0x548aa7){var _0x33f229=typeof _0x33b837[_0x50fb('0x18')]===_0x50fb('0x19')&&typeof _0x33b837[_0x50fb('0x1a')]==='undefined';var _0x825f11=_0x548aa7[_0x50fb('0x1b')];var _0x2cb092=_0x33f229?0x0:_0x33b837[_0x50fb('0x18')];var _0x3be35f=_0x33f229?_0x548aa7[_0x50fb('0x1b')]:_0x33b837[_0x50fb('0x18')]+_0x33b837[_0x50fb('0x1a')];var _0x5e114b;if(_0x3be35f>=_0x825f11){_0x3be35f=_0x825f11;_0x5e114b=0xc8;}else{_0x5e114b=0xce;}_0x319507[_0x50fb('0x16')](_0x5e114b);return _0x319507['set'](_0x50fb('0x1c'),_0x2cb092+'-'+_0x3be35f+'/'+_0x825f11)[_0x50fb('0x1d')](_0x548aa7);}return null;};}function patchUpdates(_0x3df2ff){return function(_0x357073){try{jsonpatch[_0x50fb('0x1e')](_0x357073,_0x3df2ff,!![]);}catch(_0x2f5295){return BPromise[_0x50fb('0x1f')](_0x2f5295);}return _0x357073[_0x50fb('0x20')]();};}function saveUpdates(_0xfce6c1,_0xdd8f9f){return function(_0x4bc025){if(_0x4bc025){return _0x4bc025[_0x50fb('0x21')](_0xfce6c1)[_0x50fb('0x22')](function(_0x4c65e8){return _0x4c65e8;});}return null;};}function removeEntity(_0x2b3aa7,_0xac59de){return function(_0x4ad7a4){if(_0x4ad7a4){return _0x4ad7a4[_0x50fb('0x23')]()[_0x50fb('0x22')](function(){_0x2b3aa7[_0x50fb('0x16')](0xcc)[_0x50fb('0x17')]();});}};}function handleEntityNotFound(_0x4078ce,_0x349fd7){return function(_0x4d0e8f){if(!_0x4d0e8f){_0x4078ce[_0x50fb('0x15')](0x194);}return _0x4d0e8f;};}function handleError(_0x1ce155,_0x4d8ea5){_0x4d8ea5=_0x4d8ea5||0x1f4;return function(_0x5b85ea){logger[_0x50fb('0x24')](_0x5b85ea['stack']);if(_0x5b85ea['name']){delete _0x5b85ea[_0x50fb('0x25')];}_0x1ce155[_0x50fb('0x16')](_0x4d8ea5)[_0x50fb('0x26')](_0x5b85ea);};}exports['index']=function(_0x338011,_0xb8b8a3){var _0x13a30c={},_0x212469={},_0xc5b751={'count':0x0,'rows':[]};var _0x26dcf0=_[_0x50fb('0x27')](db[_0x50fb('0x28')][_0x50fb('0x29')],function(_0x1a577e){return{'name':_0x1a577e[_0x50fb('0x2a')],'type':_0x1a577e['type']['key']};});_0x212469[_0x50fb('0x2b')]=_[_0x50fb('0x27')](_0x26dcf0,_0x50fb('0x25'));_0x212469[_0x50fb('0x2c')]=_[_0x50fb('0x2d')](_0x338011[_0x50fb('0x2c')]);_0x212469[_0x50fb('0x2e')]=_[_0x50fb('0x2f')](_0x212469['model'],_0x212469[_0x50fb('0x2c')]);_0x13a30c[_0x50fb('0x30')]=_['intersection'](_0x212469[_0x50fb('0x2b')],qs['fields'](_0x338011[_0x50fb('0x2c')][_0x50fb('0x31')]));_0x13a30c['attributes']=_0x13a30c[_0x50fb('0x30')][_0x50fb('0x32')]?_0x13a30c['attributes']:_0x212469[_0x50fb('0x2b')];if(!_0x338011[_0x50fb('0x2c')][_0x50fb('0x33')](_0x50fb('0x34'))){_0x13a30c[_0x50fb('0x1a')]=qs['limit'](_0x338011[_0x50fb('0x2c')][_0x50fb('0x1a')]);_0x13a30c[_0x50fb('0x18')]=qs[_0x50fb('0x18')](_0x338011['query']['offset']);}_0x13a30c[_0x50fb('0x35')]=qs[_0x50fb('0x36')](_0x338011['query'][_0x50fb('0x36')]);_0x13a30c[_0x50fb('0x37')]=qs[_0x50fb('0x2e')](_[_0x50fb('0x38')](_0x338011['query'],_0x212469[_0x50fb('0x2e')]),_0x26dcf0);if(_0x338011['query'][_0x50fb('0x39')]){_0x13a30c['where']=_['merge'](_0x13a30c['where'],{'$or':_['map'](_0x26dcf0,function(_0x8d5275){if(_0x8d5275[_0x50fb('0x3a')]!==_0x50fb('0x3b')){var _0x59c8d6={};_0x59c8d6[_0x8d5275['name']]={'$like':'%'+_0x338011['query']['filter']+'%'};return _0x59c8d6;}})});}_0x13a30c=_[_0x50fb('0x3c')]({},_0x13a30c,_0x338011[_0x50fb('0x3d')]);var _0x506865={'where':_0x13a30c[_0x50fb('0x37')]};return db[_0x50fb('0x28')][_0x50fb('0x1b')](_0x506865)['then'](function(_0xae7dcc){_0xc5b751[_0x50fb('0x1b')]=_0xae7dcc;if(_0x338011[_0x50fb('0x2c')]['includeAll']){_0x13a30c[_0x50fb('0x3e')]=[{'all':!![]}];}return db[_0x50fb('0x28')]['findAll'](_0x13a30c);})[_0x50fb('0x22')](function(_0x39034e){_0xc5b751[_0x50fb('0x3f')]=_0x39034e;return _0xc5b751;})[_0x50fb('0x22')](respondWithFilteredResult(_0xb8b8a3,_0x13a30c))[_0x50fb('0x40')](handleError(_0xb8b8a3,null));};exports[_0x50fb('0x41')]=function(_0x4e9a50,_0x2e63c9){var _0xa5fb90={'raw':![],'where':{'id':_0x4e9a50[_0x50fb('0x42')]['id']}},_0x1f4b6b={};_0x1f4b6b[_0x50fb('0x2b')]=_[_0x50fb('0x2d')](db['Automation'][_0x50fb('0x29')]);_0x1f4b6b[_0x50fb('0x2c')]=_[_0x50fb('0x2d')](_0x4e9a50[_0x50fb('0x2c')]);_0x1f4b6b[_0x50fb('0x2e')]=_['intersection'](_0x1f4b6b[_0x50fb('0x2b')],_0x1f4b6b[_0x50fb('0x2c')]);_0xa5fb90[_0x50fb('0x30')]=_[_0x50fb('0x2f')](_0x1f4b6b[_0x50fb('0x2b')],qs[_0x50fb('0x31')](_0x4e9a50[_0x50fb('0x2c')][_0x50fb('0x31')]));_0xa5fb90[_0x50fb('0x30')]=_0xa5fb90[_0x50fb('0x30')][_0x50fb('0x32')]?_0xa5fb90[_0x50fb('0x30')]:_0x1f4b6b[_0x50fb('0x2b')];if(_0x4e9a50['query'][_0x50fb('0x43')]){_0xa5fb90[_0x50fb('0x3e')]=[{'all':!![]}];}_0xa5fb90=_[_0x50fb('0x3c')]({},_0xa5fb90,_0x4e9a50['options']);return db[_0x50fb('0x28')][_0x50fb('0x44')](_0xa5fb90)[_0x50fb('0x22')](handleEntityNotFound(_0x2e63c9,null))[_0x50fb('0x22')](respondWithResult(_0x2e63c9,null))[_0x50fb('0x40')](handleError(_0x2e63c9,null));};exports[_0x50fb('0x45')]=function(_0x1fb5e0,_0x3d9f9f){return db['Automation'][_0x50fb('0x45')](_0x1fb5e0['body'],{})[_0x50fb('0x22')](respondWithResult(_0x3d9f9f,0xc9))[_0x50fb('0x40')](handleError(_0x3d9f9f,null));};exports[_0x50fb('0x21')]=function(_0x303939,_0x2be487){if(_0x303939['body']['id']){delete _0x303939[_0x50fb('0x46')]['id'];}return db[_0x50fb('0x28')][_0x50fb('0x44')]({'where':{'id':_0x303939['params']['id']}})['then'](handleEntityNotFound(_0x2be487,null))[_0x50fb('0x22')](saveUpdates(_0x303939[_0x50fb('0x46')],null))['then'](respondWithResult(_0x2be487,null))[_0x50fb('0x40')](handleError(_0x2be487,null));};exports[_0x50fb('0x23')]=function(_0x158be1,_0x2fae5b){return db[_0x50fb('0x28')][_0x50fb('0x44')]({'where':{'id':_0x158be1['params']['id']}})[_0x50fb('0x22')](handleEntityNotFound(_0x2fae5b,null))['then'](removeEntity(_0x2fae5b,null))[_0x50fb('0x40')](handleError(_0x2fae5b,null));};exports[_0x50fb('0x47')]=function(_0x3090a2,_0x337345,_0x5d04e9){return db['Condition'][_0x50fb('0x44')]({'where':{'id':_0x3090a2['params']['id']}})[_0x50fb('0x22')](handleEntityNotFound(_0x337345,null))[_0x50fb('0x22')](function(_0x1fed2f){if(_0x1fed2f){return _0x1fed2f['addConditions'](_0x3090a2[_0x50fb('0x46')][_0x50fb('0x48')],_['omit'](_0x3090a2['body'],['ids','id'])||{});}})[_0x50fb('0x22')](respondWithResult(_0x337345,null))[_0x50fb('0x40')](handleError(_0x337345,null));};exports[_0x50fb('0x49')]=function(_0x570eb8,_0x4e8b06,_0x382534){var _0x203e8b={};var _0x458839={};var _0x3fbbc8;var _0x22749c;return db[_0x50fb('0x28')][_0x50fb('0x4a')]({'where':{'id':_0x570eb8[_0x50fb('0x42')]['id']}})[_0x50fb('0x22')](handleEntityNotFound(_0x4e8b06,null))[_0x50fb('0x22')](function(_0x39e7f1){if(_0x39e7f1){_0x3fbbc8=_0x39e7f1;_0x458839[_0x50fb('0x2b')]=_[_0x50fb('0x2d')](db['Condition'][_0x50fb('0x29')]);_0x458839[_0x50fb('0x2c')]=_['keys'](_0x570eb8['query']);_0x458839[_0x50fb('0x2e')]=_['intersection'](_0x458839[_0x50fb('0x2b')],_0x458839[_0x50fb('0x2c')]);_0x203e8b['attributes']=_[_0x50fb('0x2f')](_0x458839[_0x50fb('0x2b')],qs[_0x50fb('0x31')](_0x570eb8[_0x50fb('0x2c')][_0x50fb('0x31')]));_0x203e8b['attributes']=_0x203e8b[_0x50fb('0x30')][_0x50fb('0x32')]?_0x203e8b[_0x50fb('0x30')]:_0x458839[_0x50fb('0x2b')];_0x203e8b[_0x50fb('0x35')]=qs[_0x50fb('0x36')](_0x570eb8[_0x50fb('0x2c')]['sort']);_0x203e8b[_0x50fb('0x37')]=qs[_0x50fb('0x2e')](_[_0x50fb('0x38')](_0x570eb8[_0x50fb('0x2c')],_0x458839['filters']));if(_0x570eb8[_0x50fb('0x2c')][_0x50fb('0x39')]){_0x203e8b[_0x50fb('0x37')]=_[_0x50fb('0x3c')](_0x203e8b[_0x50fb('0x37')],{'$or':_[_0x50fb('0x27')](_0x203e8b[_0x50fb('0x30')],function(_0x44b7c8){var _0x504825={};_0x504825[_0x44b7c8]={'$like':'%'+_0x570eb8[_0x50fb('0x2c')][_0x50fb('0x39')]+'%'};return _0x504825;})});}_0x203e8b=_[_0x50fb('0x3c')]({},_0x203e8b,_0x570eb8[_0x50fb('0x3d')]);return _0x3fbbc8[_0x50fb('0x49')](_0x203e8b);}})[_0x50fb('0x22')](function(_0x2b5cec){if(_0x2b5cec){_0x22749c=_0x2b5cec[_0x50fb('0x32')];if(!_0x570eb8[_0x50fb('0x2c')][_0x50fb('0x33')](_0x50fb('0x34'))){_0x203e8b[_0x50fb('0x1a')]=qs[_0x50fb('0x1a')](_0x570eb8[_0x50fb('0x2c')][_0x50fb('0x1a')]);_0x203e8b[_0x50fb('0x18')]=qs[_0x50fb('0x18')](_0x570eb8[_0x50fb('0x2c')][_0x50fb('0x18')]);}return _0x3fbbc8[_0x50fb('0x49')](_0x203e8b);}})[_0x50fb('0x22')](function(_0xf53b5){if(_0xf53b5){return _0xf53b5?{'count':_0x22749c,'rows':_0xf53b5}:null;}})['then'](respondWithResult(_0x4e8b06,null))[_0x50fb('0x40')](handleError(_0x4e8b06,null));};exports['addActions']=function(_0x392e22,_0x2ba454,_0x2326c7){return db[_0x50fb('0x4b')][_0x50fb('0x44')]({'where':{'id':_0x392e22[_0x50fb('0x42')]['id']}})['then'](handleEntityNotFound(_0x2ba454,null))[_0x50fb('0x22')](function(_0x30512c){if(_0x30512c){return _0x30512c['addActions'](_0x392e22[_0x50fb('0x46')][_0x50fb('0x48')],_[_0x50fb('0x4c')](_0x392e22['body'],[_0x50fb('0x48'),'id'])||{});}})[_0x50fb('0x22')](respondWithResult(_0x2ba454,null))['catch'](handleError(_0x2ba454,null));};exports['getActions']=function(_0xd5c2fd,_0x387aa4,_0x5c25a0){var _0x456a1d={};var _0x203f81={};var _0x4a4f00;var _0x42c91b;return db[_0x50fb('0x28')][_0x50fb('0x4a')]({'where':{'id':_0xd5c2fd[_0x50fb('0x42')]['id']}})[_0x50fb('0x22')](handleEntityNotFound(_0x387aa4,null))['then'](function(_0x2e85b7){if(_0x2e85b7){_0x4a4f00=_0x2e85b7;_0x203f81[_0x50fb('0x2b')]=_[_0x50fb('0x2d')](db[_0x50fb('0x4b')][_0x50fb('0x29')]);_0x203f81['query']=_[_0x50fb('0x2d')](_0xd5c2fd[_0x50fb('0x2c')]);_0x203f81[_0x50fb('0x2e')]=_[_0x50fb('0x2f')](_0x203f81['model'],_0x203f81[_0x50fb('0x2c')]);_0x456a1d[_0x50fb('0x30')]=_[_0x50fb('0x2f')](_0x203f81[_0x50fb('0x2b')],qs[_0x50fb('0x31')](_0xd5c2fd[_0x50fb('0x2c')][_0x50fb('0x31')]));_0x456a1d[_0x50fb('0x30')]=_0x456a1d[_0x50fb('0x30')]['length']?_0x456a1d[_0x50fb('0x30')]:_0x203f81['model'];_0x456a1d['order']=qs[_0x50fb('0x36')](_0xd5c2fd[_0x50fb('0x2c')]['sort']);_0x456a1d[_0x50fb('0x37')]=qs[_0x50fb('0x2e')](_[_0x50fb('0x38')](_0xd5c2fd['query'],_0x203f81[_0x50fb('0x2e')]));if(_0xd5c2fd[_0x50fb('0x2c')][_0x50fb('0x39')]){_0x456a1d[_0x50fb('0x37')]=_['merge'](_0x456a1d[_0x50fb('0x37')],{'$or':_[_0x50fb('0x27')](_0x456a1d[_0x50fb('0x30')],function(_0x1ff91e){var _0x340890={};_0x340890[_0x1ff91e]={'$like':'%'+_0xd5c2fd['query'][_0x50fb('0x39')]+'%'};return _0x340890;})});}_0x456a1d=_['merge']({},_0x456a1d,_0xd5c2fd[_0x50fb('0x3d')]);return _0x4a4f00['getActions'](_0x456a1d);}})[_0x50fb('0x22')](function(_0x479a2c){if(_0x479a2c){_0x42c91b=_0x479a2c['length'];if(!_0xd5c2fd['query'][_0x50fb('0x33')](_0x50fb('0x34'))){_0x456a1d['limit']=qs['limit'](_0xd5c2fd[_0x50fb('0x2c')][_0x50fb('0x1a')]);_0x456a1d[_0x50fb('0x18')]=qs[_0x50fb('0x18')](_0xd5c2fd[_0x50fb('0x2c')][_0x50fb('0x18')]);}return _0x4a4f00[_0x50fb('0x4d')](_0x456a1d);}})['then'](function(_0x79fad3){if(_0x79fad3){return _0x79fad3?{'count':_0x42c91b,'rows':_0x79fad3}:null;}})['then'](respondWithResult(_0x387aa4,null))[_0x50fb('0x40')](handleError(_0x387aa4,null));};
\ No newline at end of file
index 16ab586..484c2a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81c9=['./automation.attributes','define','Automation','tools_automations','lodash','api','moment','bluebird','path','rimraf','../../config/environment'];(function(_0x325ba7,_0x68f81){var _0x6e8de5=function(_0x17d957){while(--_0x17d957){_0x325ba7['push'](_0x325ba7['shift']());}};_0x6e8de5(++_0x68f81);}(_0x81c9,0x164));var _0x981c=function(_0x4d8ed9,_0x2ae284){_0x4d8ed9=_0x4d8ed9-0x0;var _0x1e2140=_0x81c9[_0x4d8ed9];return _0x1e2140;};'use strict';var _=require(_0x981c('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x981c('0x1'));var moment=require(_0x981c('0x2'));var BPromise=require(_0x981c('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x981c('0x4'));var rimraf=require(_0x981c('0x5'));var config=require(_0x981c('0x6'));var attributes=require(_0x981c('0x7'));module['exports']=function(_0x4c3239,_0x4b4499){return _0x4c3239[_0x981c('0x8')](_0x981c('0x9'),attributes,{'tableName':_0x981c('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x705f=['request-promise','../../config/environment','./automation.attributes','exports','Automation','lodash','api','moment','bluebird'];(function(_0x5054ae,_0x191b61){var _0x44bcfa=function(_0x1a8e54){while(--_0x1a8e54){_0x5054ae['push'](_0x5054ae['shift']());}};_0x44bcfa(++_0x191b61);}(_0x705f,0x113));var _0xf705=function(_0x34ced0,_0x21907f){_0x34ced0=_0x34ced0-0x0;var _0x3db58d=_0x705f[_0x34ced0];return _0x3db58d;};'use strict';var _=require(_0xf705('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xf705('0x1'));var moment=require(_0xf705('0x2'));var BPromise=require(_0xf705('0x3'));var rp=require(_0xf705('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xf705('0x5'));var attributes=require(_0xf705('0x6'));module[_0xf705('0x7')]=function(_0x542e97,_0x2bd0b2){return _0x542e97['define'](_0xf705('0x8'),attributes,{'tableName':'tools_automations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6ef9980..2cd70a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdacc=['Automation,\x20%s,\x20%s,\x20%s','error','code','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Automation,\x20%s,\x20%s','request\x20sent'];(function(_0x20fc96,_0x181164){var _0x548f8f=function(_0x5c727e){while(--_0x5c727e){_0x20fc96['push'](_0x20fc96['shift']());}};_0x548f8f(++_0x181164);}(_0xdacc,0x14f));var _0xcdac=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xdacc[_0x2dafbe];return _0x58a45a;};'use strict';var _=require('lodash');var util=require(_0xcdac('0x0'));var moment=require(_0xcdac('0x1'));var BPromise=require(_0xcdac('0x2'));var rs=require(_0xcdac('0x3'));var fs=require('fs');var Redis=require(_0xcdac('0x4'));var db=require(_0xcdac('0x5'))['db'];var utils=require(_0xcdac('0x6'));var logger=require('../../config/logger')(_0xcdac('0x7'));var config=require(_0xcdac('0x8'));var jayson=require(_0xcdac('0x9'));var client=jayson[_0xcdac('0xa')][_0xcdac('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2a10a1,_0x20a66e,_0x46ad29){return new BPromise(function(_0xe906b8,_0x213c05){return client[_0xcdac('0xc')](_0x2a10a1,_0x46ad29)[_0xcdac('0xd')](function(_0x33c4af){logger[_0xcdac('0xe')](_0xcdac('0xf'),_0x20a66e,_0xcdac('0x10'));logger['debug'](_0xcdac('0x11'),_0x20a66e,_0xcdac('0x10'),JSON['stringify'](_0x33c4af));if(_0x33c4af[_0xcdac('0x12')]){if(_0x33c4af[_0xcdac('0x12')][_0xcdac('0x13')]===0x1f4){logger[_0xcdac('0x12')](_0xcdac('0xf'),_0x20a66e,_0x33c4af['error']['message']);return _0x213c05(_0x33c4af[_0xcdac('0x12')]['message']);}logger[_0xcdac('0x12')]('Automation,\x20%s,\x20%s',_0x20a66e,_0x33c4af['error'][_0xcdac('0x14')]);return _0xe906b8(_0x33c4af[_0xcdac('0x12')][_0xcdac('0x14')]);}else{logger[_0xcdac('0xe')](_0xcdac('0xf'),_0x20a66e,_0xcdac('0x10'));_0xe906b8(_0x33c4af['result'][_0xcdac('0x14')]);}})[_0xcdac('0x15')](function(_0x542a27){logger[_0xcdac('0x12')](_0xcdac('0xf'),_0x20a66e,_0x542a27);_0x213c05(_0x542a27);});});}
\ No newline at end of file
+var _0xeb3b=['rpc','jayson/promise','client','http','request','then','info','Automation,\x20%s,\x20%s','request\x20sent','Automation,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../config/utils'];(function(_0x419c4a,_0x5c3638){var _0x11a290=function(_0x3b8c57){while(--_0x3b8c57){_0x419c4a['push'](_0x419c4a['shift']());}};_0x11a290(++_0x5c3638);}(_0xeb3b,0x19e));var _0xbeb3=function(_0x55e1d1,_0x3c9376){_0x55e1d1=_0x55e1d1-0x0;var _0x1165db=_0xeb3b[_0x55e1d1];return _0x1165db;};'use strict';var _=require(_0xbeb3('0x0'));var util=require(_0xbeb3('0x1'));var moment=require(_0xbeb3('0x2'));var BPromise=require(_0xbeb3('0x3'));var rs=require(_0xbeb3('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xbeb3('0x5'));var logger=require('../../config/logger')(_0xbeb3('0x6'));var config=require('../../config/environment');var jayson=require(_0xbeb3('0x7'));var client=jayson[_0xbeb3('0x8')][_0xbeb3('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x294cc9,_0x406927,_0x143255){return new BPromise(function(_0x5a6a06,_0x241dbb){return client[_0xbeb3('0xa')](_0x294cc9,_0x143255)[_0xbeb3('0xb')](function(_0x3b61ac){logger[_0xbeb3('0xc')](_0xbeb3('0xd'),_0x406927,_0xbeb3('0xe'));logger['debug'](_0xbeb3('0xf'),_0x406927,_0xbeb3('0xe'),JSON['stringify'](_0x3b61ac));if(_0x3b61ac[_0xbeb3('0x10')]){if(_0x3b61ac[_0xbeb3('0x10')][_0xbeb3('0x11')]===0x1f4){logger[_0xbeb3('0x10')](_0xbeb3('0xd'),_0x406927,_0x3b61ac[_0xbeb3('0x10')]['message']);return _0x241dbb(_0x3b61ac['error'][_0xbeb3('0x12')]);}logger[_0xbeb3('0x10')]('Automation,\x20%s,\x20%s',_0x406927,_0x3b61ac['error'][_0xbeb3('0x12')]);return _0x5a6a06(_0x3b61ac[_0xbeb3('0x10')][_0xbeb3('0x12')]);}else{logger[_0xbeb3('0xc')](_0xbeb3('0xd'),_0x406927,'request\x20sent');_0x5a6a06(_0x3b61ac[_0xbeb3('0x13')]['message']);}})[_0xbeb3('0x14')](function(_0x4e7d99){logger['error']('Automation,\x20%s,\x20%s',_0x406927,_0x4e7d99);_0x241dbb(_0x4e7d99);});});}
\ No newline at end of file
index 9d1250e..0dc09d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac8d=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./automation.controller','get','isAuthenticated','index','/:id','show','/:id/actions','getActions','post','create','/:id/conditions','addConditions','put','update','delete','exports','multer','util','path'];(function(_0x4ad6bc,_0x52025a){var _0x318739=function(_0x3a5b38){while(--_0x3a5b38){_0x4ad6bc['push'](_0x4ad6bc['shift']());}};_0x318739(++_0x52025a);}(_0xac8d,0x1d8));var _0xdac8=function(_0x5f265e,_0x5f29c3){_0x5f265e=_0x5f265e-0x0;var _0x197592=_0xac8d[_0x5f265e];return _0x197592;};'use strict';var multer=require(_0xdac8('0x0'));var util=require(_0xdac8('0x1'));var path=require(_0xdac8('0x2'));var timeout=require(_0xdac8('0x3'));var express=require(_0xdac8('0x4'));var router=express[_0xdac8('0x5')]();var fs_extra=require(_0xdac8('0x6'));var auth=require(_0xdac8('0x7'));var interaction=require(_0xdac8('0x8'));var config=require('../../config/environment');var controller=require(_0xdac8('0x9'));router[_0xdac8('0xa')]('/',auth[_0xdac8('0xb')](),controller[_0xdac8('0xc')]);router[_0xdac8('0xa')](_0xdac8('0xd'),auth[_0xdac8('0xb')](),controller[_0xdac8('0xe')]);router[_0xdac8('0xa')]('/:id/conditions',auth[_0xdac8('0xb')](),controller['getConditions']);router[_0xdac8('0xa')](_0xdac8('0xf'),auth[_0xdac8('0xb')](),controller[_0xdac8('0x10')]);router[_0xdac8('0x11')]('/',auth['isAuthenticated'](),controller[_0xdac8('0x12')]);router['post'](_0xdac8('0x13'),auth[_0xdac8('0xb')](),controller[_0xdac8('0x14')]);router['post'](_0xdac8('0xf'),auth['isAuthenticated'](),controller['addActions']);router[_0xdac8('0x15')]('/:id',auth[_0xdac8('0xb')](),controller[_0xdac8('0x16')]);router[_0xdac8('0x17')](_0xdac8('0xd'),auth[_0xdac8('0xb')](),controller['destroy']);module[_0xdac8('0x18')]=router;
\ No newline at end of file
+var _0x5f96=['update','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./automation.controller','get','index','isAuthenticated','show','/:id/conditions','getConditions','getActions','post','/:id/actions','addActions','put','/:id'];(function(_0x1ccd8e,_0x391fdf){var _0x5a5895=function(_0x370c8e){while(--_0x370c8e){_0x1ccd8e['push'](_0x1ccd8e['shift']());}};_0x5a5895(++_0x391fdf);}(_0x5f96,0x75));var _0x65f9=function(_0x4b2436,_0x452299){_0x4b2436=_0x4b2436-0x0;var _0x4f5ab2=_0x5f96[_0x4b2436];return _0x4f5ab2;};'use strict';var multer=require(_0x65f9('0x0'));var util=require(_0x65f9('0x1'));var path=require(_0x65f9('0x2'));var timeout=require(_0x65f9('0x3'));var express=require(_0x65f9('0x4'));var router=express[_0x65f9('0x5')]();var fs_extra=require(_0x65f9('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x65f9('0x7'));var config=require('../../config/environment');var controller=require(_0x65f9('0x8'));router[_0x65f9('0x9')]('/',auth['isAuthenticated'](),controller[_0x65f9('0xa')]);router[_0x65f9('0x9')]('/:id',auth[_0x65f9('0xb')](),controller[_0x65f9('0xc')]);router[_0x65f9('0x9')](_0x65f9('0xd'),auth[_0x65f9('0xb')](),controller[_0x65f9('0xe')]);router['get']('/:id/actions',auth[_0x65f9('0xb')](),controller[_0x65f9('0xf')]);router[_0x65f9('0x10')]('/',auth[_0x65f9('0xb')](),controller['create']);router[_0x65f9('0x10')]('/:id/conditions',auth[_0x65f9('0xb')](),controller['addConditions']);router[_0x65f9('0x10')](_0x65f9('0x11'),auth['isAuthenticated'](),controller[_0x65f9('0x12')]);router[_0x65f9('0x13')](_0x65f9('0x14'),auth['isAuthenticated'](),controller[_0x65f9('0x15')]);router['delete'](_0x65f9('0x14'),auth[_0x65f9('0xb')](),controller['destroy']);module[_0x65f9('0x16')]=router;
\ No newline at end of file
index 470881c..7db34df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd64b=['Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','DESC','ASC','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Machine\x20Retry\x20(min:1,\x20max:999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','sequelize','exports','STRING','name','ENUM','ivr','BOOLEAN','Active/Disactive\x20Campaign','INTEGER','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','UNSIGNED','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','always'];(function(_0x38a05d,_0x2f59e9){var _0x2b5be8=function(_0x4a2c9f){while(--_0x4a2c9f){_0x38a05d['push'](_0x38a05d['shift']());}};_0x2b5be8(++_0x2f59e9);}(_0xd64b,0x18f));var _0xbd64=function(_0x8957ed,_0x1b1553){_0x8957ed=_0x8957ed-0x0;var _0xcc833a=_0xd64b[_0x8957ed];return _0xcc833a;};'use strict';var Sequelize=require(_0xbd64('0x0'));module[_0xbd64('0x1')]={'name':{'type':Sequelize[_0xbd64('0x2')],'unique':_0xbd64('0x3'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0xbd64('0x4')](_0xbd64('0x5')),'allowNull':![],'defaultValue':'ivr'},'description':{'type':Sequelize['STRING']},'active':{'type':Sequelize[_0xbd64('0x6')],'defaultValue':0x0,'comment':_0xbd64('0x7')},'limitCalls':{'type':Sequelize[_0xbd64('0x8')](0x4)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':'Max\x20200\x20calls.'},'dialOriginateCallerIdName':{'type':Sequelize[_0xbd64('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xbd64('0x2')]},'dialOriginateTimeout':{'type':Sequelize[_0xbd64('0x8')](0x3)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xbd64('0x9')},'dialCongestionMaxRetry':{'type':Sequelize[_0xbd64('0x8')](0x3)[_0xbd64('0xa')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xbd64('0xb')},'dialCongestionRetryFrequency':{'type':Sequelize[_0xbd64('0x8')](0x5)[_0xbd64('0xa')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xbd64('0xc')},'dialBusyMaxRetry':{'type':Sequelize[_0xbd64('0x8')](0x3)[_0xbd64('0xa')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xbd64('0xd')},'dialBusyRetryFrequency':{'type':Sequelize[_0xbd64('0x8')](0x5)[_0xbd64('0xa')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xbd64('0x8')](0x3)[_0xbd64('0xa')],'defaultValue':0x3,'comment':_0xbd64('0xe')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xbd64('0x8')](0x5)[_0xbd64('0xa')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xbd64('0xf')},'dialGlobalMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xbd64('0xa')],'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[_0xbd64('0x2')],'defaultValue':'07:00-22:00,*,*,*'},'dialCheckDuplicateType':{'type':Sequelize[_0xbd64('0x4')](_0xbd64('0x10'),'never','onlyIfOpen'),'defaultValue':'always'},'dialAMDActive':{'type':Sequelize[_0xbd64('0x6')],'defaultValue':0x0,'comment':_0xbd64('0x11')},'dialAMDInitialSilence':{'type':Sequelize[_0xbd64('0x8')](0x9)[_0xbd64('0xa')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xbd64('0x12')},'dialAMDGreeting':{'type':Sequelize[_0xbd64('0x8')](0x9)[_0xbd64('0xa')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':'#AMD\x20Greeting'},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xbd64('0x8')](0x9)[_0xbd64('0xa')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xbd64('0x13')},'dialAMDTotalAnalysisTime':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xbd64('0x14')},'dialAMDMinWordLength':{'type':Sequelize[_0xbd64('0x8')](0x9)[_0xbd64('0xa')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xbd64('0x15')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0xbd64('0x8')](0x9)['UNSIGNED'],'defaultValue':0x32,'validate':{'min':0x0},'comment':'#AMD\x20Between\x20Words\x20Silence'},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0xbd64('0x8')](0x9)[_0xbd64('0xa')],'defaultValue':0x3,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Number\x20Of\x20Words'},'dialAMDSilenceThreshold':{'type':Sequelize[_0xbd64('0x8')](0x5)[_0xbd64('0xa')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xbd64('0x16')},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)[_0xbd64('0xa')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xbd64('0x17')},'dialOrderByScheduledAt':{'type':Sequelize[_0xbd64('0x4')](_0xbd64('0x18'),_0xbd64('0x19')),'defaultValue':'DESC'},'dialPrefix':{'type':Sequelize[_0xbd64('0x2')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xbd64('0x8')](0x3)[_0xbd64('0xa')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Random\x20Last\x20Digit\x20(min:1,\x20max:15)'},'dialCutDigit':{'type':Sequelize[_0xbd64('0x8')](0x3)[_0xbd64('0xa')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Cut\x20Digit\x20(min:1,\x20max:15)'},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0xbd64('0x8')](0x3)[_0xbd64('0xa')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xbd64('0x1a')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xbd64('0xa')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xbd64('0x1b')},'dialDropMaxRetry':{'type':Sequelize[_0xbd64('0x8')](0x3)[_0xbd64('0xa')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Drop\x20Retry\x20(min:1,\x20max:999)'},'dialDropRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xbd64('0x1c')},'dialAbandonedMaxRetry':{'type':Sequelize[_0xbd64('0x8')](0x3)[_0xbd64('0xa')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Abandoned\x20Retry\x20(min:1,\x20max:999)'},'dialAbandonedRetryFrequency':{'type':Sequelize[_0xbd64('0x8')](0x5)[_0xbd64('0xa')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xbd64('0x1d')},'dialMachineMaxRetry':{'type':Sequelize[_0xbd64('0x8')](0x3)[_0xbd64('0xa')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xbd64('0x1e')},'dialMachineRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xbd64('0xa')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xbd64('0x1f')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0xbd64('0x8')](0x3)[_0xbd64('0xa')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#AgentReject\x20Retry\x20(min:1,\x20max:999)'},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xbd64('0x8')](0x5)[_0xbd64('0xa')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'}};
\ No newline at end of file
+var _0x49a2=['onlyIfOpen','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','DESC','ASC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','sequelize','ENUM','ivr','STRING','BOOLEAN','Active/Disactive\x20Campaign','INTEGER','UNSIGNED','Max\x20200\x20calls.','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','#Congestion\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','never'];(function(_0x1ac6ec,_0x1f81fc){var _0x48a489=function(_0xf38b04){while(--_0xf38b04){_0x1ac6ec['push'](_0x1ac6ec['shift']());}};_0x48a489(++_0x1f81fc);}(_0x49a2,0x112));var _0x249a=function(_0x325a08,_0x571fff){_0x325a08=_0x325a08-0x0;var _0x436e01=_0x49a2[_0x325a08];return _0x436e01;};'use strict';var Sequelize=require(_0x249a('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0x249a('0x1')](_0x249a('0x2')),'allowNull':![],'defaultValue':_0x249a('0x2')},'description':{'type':Sequelize[_0x249a('0x3')]},'active':{'type':Sequelize[_0x249a('0x4')],'defaultValue':0x0,'comment':_0x249a('0x5')},'limitCalls':{'type':Sequelize[_0x249a('0x6')](0x4)[_0x249a('0x7')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0x249a('0x8')},'dialOriginateCallerIdName':{'type':Sequelize[_0x249a('0x3')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x249a('0x3')]},'dialOriginateTimeout':{'type':Sequelize[_0x249a('0x6')](0x3)[_0x249a('0x7')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x249a('0x9')},'dialCongestionMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x249a('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x249a('0xa')},'dialCongestionRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x249a('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialBusyMaxRetry':{'type':Sequelize[_0x249a('0x6')](0x3)[_0x249a('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Busy\x20Retry\x20(min:1,\x20max:999)'},'dialBusyRetryFrequency':{'type':Sequelize[_0x249a('0x6')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialNoAnswerMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x249a('0x7')],'defaultValue':0x3,'comment':'#NoAnswer\x20Retry\x20(min:1,\x20max:999)'},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x249a('0x6')](0x5)[_0x249a('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x249a('0xb')},'dialGlobalMaxRetry':{'type':Sequelize[_0x249a('0x6')](0x3)['UNSIGNED'],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x249a('0xc')},'dialTimezone':{'type':Sequelize[_0x249a('0x3')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x249a('0x3')],'defaultValue':'07:00-22:00,*,*,*'},'dialCheckDuplicateType':{'type':Sequelize[_0x249a('0x1')]('always',_0x249a('0xd'),_0x249a('0xe')),'defaultValue':'always'},'dialAMDActive':{'type':Sequelize[_0x249a('0x4')],'defaultValue':0x0,'comment':_0x249a('0xf')},'dialAMDInitialSilence':{'type':Sequelize['INTEGER'](0x9)[_0x249a('0x7')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x249a('0x10')},'dialAMDGreeting':{'type':Sequelize[_0x249a('0x6')](0x9)[_0x249a('0x7')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x249a('0x11')},'dialAMDAfterGreetingSilence':{'type':Sequelize['INTEGER'](0x9)[_0x249a('0x7')],'defaultValue':0x320,'validate':{'min':0x0},'comment':'#AMD\x20After\x20Greeting\x20Silence'},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x249a('0x6')](0x9)[_0x249a('0x7')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Total\x20Analysis\x20Time'},'dialAMDMinWordLength':{'type':Sequelize['INTEGER'](0x9)[_0x249a('0x7')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x249a('0x12')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x249a('0x6')](0x9)['UNSIGNED'],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x249a('0x13')},'dialAMDMaximumNumberOfWords':{'type':Sequelize['INTEGER'](0x9)[_0x249a('0x7')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x249a('0x14')},'dialAMDSilenceThreshold':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':'#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)'},'dialAMDMaximumWordLength':{'type':Sequelize[_0x249a('0x6')](0x9)[_0x249a('0x7')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Word\x20Length'},'dialOrderByScheduledAt':{'type':Sequelize[_0x249a('0x1')](_0x249a('0x15'),_0x249a('0x16')),'defaultValue':'DESC'},'dialPrefix':{'type':Sequelize[_0x249a('0x3')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x249a('0x6')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x249a('0x17')},'dialCutDigit':{'type':Sequelize[_0x249a('0x6')](0x3)[_0x249a('0x7')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Cut\x20Digit\x20(min:1,\x20max:15)'},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x249a('0x6')](0x3)[_0x249a('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x249a('0x18')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x249a('0x6')](0x5)[_0x249a('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x249a('0x19')},'dialDropMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x249a('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x249a('0x1a')},'dialDropRetryFrequency':{'type':Sequelize[_0x249a('0x6')](0x5)[_0x249a('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x249a('0x1b')},'dialAbandonedMaxRetry':{'type':Sequelize[_0x249a('0x6')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x249a('0x1c')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x249a('0x6')](0x5)[_0x249a('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x249a('0x1d')},'dialMachineMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x249a('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Machine\x20Retry\x20(min:1,\x20max:999)'},'dialMachineRetryFrequency':{'type':Sequelize[_0x249a('0x6')](0x5)[_0x249a('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x249a('0x1e')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x249a('0x6')](0x3)[_0x249a('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#AgentReject\x20Retry\x20(min:1,\x20max:999)'},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x249a('0x6')](0x5)[_0x249a('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x249a('0x1f')}};
\ No newline at end of file
index a81a38e..65b8e19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x145d=['CmHopperHistory','nolimit','CmHopperFinal','getHopperBlacks','CmHopperBlack','getLists','CmList','addLists','format','YYYY-MM-DD\x20HH:mm:ss','ids','spread','dialCheckDuplicateType','always','insert','fromQuery','phone','scheduledAt','ListId','select','field','CmListId','toString','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','from','COALESCE(phone,\x27\x27)','cm_hopper','CampaignId\x20=\x20?','onlyIfOpen','into','ContactId','NOW()','cmHopperId','OrderBy','h.id','ci.item','ci.OrderBY','cm_contact_has_items','join','h.ContactId\x20=\x20ci.CmContactId','h.CampaignId=?','push','sequelize','all','removeLists','getBlackLists','addBlackLists','cm_hopper_black','removeBlackLists','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../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','reject','update','destroy','then','get','IvrCampaigns','UserProfileResource','stack','name','send','index','map','rawAttributes','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','Campaign','includeAll','include','findAll','rows','catch','show','options','find','create','user','role','UserProfileSection','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','params','omit','createdAt','updatedAt','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','autoAssociation','getHoppers','findOne','CmHopper','CampaignId','getHopperHistories'];(function(_0x29ce34,_0x13380a){var _0x1abafd=function(_0x336e45){while(--_0x336e45){_0x29ce34['push'](_0x29ce34['shift']());}};_0x1abafd(++_0x13380a);}(_0x145d,0xc9));var _0xd145=function(_0x243117,_0x1ab0d3){_0x243117=_0x243117-0x0;var _0x3b62dc=_0x145d[_0x243117];return _0x3b62dc;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd145('0x0'));var zipdir=require(_0xd145('0x1'));var jsonpatch=require(_0xd145('0x2'));var rp=require(_0xd145('0x3'));var moment=require('moment');var BPromise=require(_0xd145('0x4'));var Mustache=require(_0xd145('0x5'));var util=require(_0xd145('0x6'));var path=require('path');var sox=require(_0xd145('0x7'));var csv=require('to-csv');var ejs=require(_0xd145('0x8'));var fs=require('fs');var fs_extra=require(_0xd145('0x9'));var _=require(_0xd145('0xa'));var squel=require(_0xd145('0xb'));var crypto=require('crypto');var jsforce=require(_0xd145('0xc'));var deskjs=require(_0xd145('0xd'));var toCsv=require(_0xd145('0xe'));var querystring=require(_0xd145('0xf'));var Papa=require(_0xd145('0x10'));var Redis=require(_0xd145('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xd145('0x12'));var hardwareService=require(_0xd145('0x13'));var logger=require(_0xd145('0x14'))('api');var utils=require(_0xd145('0x15'));var config=require(_0xd145('0x16'));var licenseUtil=require(_0xd145('0x17'));var db=require(_0xd145('0x18'))['db'];function respondWithStatusCode(_0x41c68e,_0x297fbf){_0x297fbf=_0x297fbf||0xcc;return function(_0x29a1ab){if(_0x29a1ab){return _0x41c68e[_0xd145('0x19')](_0x297fbf);}return _0x41c68e[_0xd145('0x1a')](_0x297fbf)[_0xd145('0x1b')]();};}function respondWithResult(_0x4c209e,_0x49201b){_0x49201b=_0x49201b||0xc8;return function(_0x4d9d29){if(_0x4d9d29){return _0x4c209e[_0xd145('0x1a')](_0x49201b)[_0xd145('0x1c')](_0x4d9d29);}};}function respondWithFilteredResult(_0x736c5a,_0x3141c8){return function(_0x22d25a){if(_0x22d25a){var _0x558e93=typeof _0x3141c8['offset']===_0xd145('0x1d')&&typeof _0x3141c8[_0xd145('0x1e')]===_0xd145('0x1d');var _0x411280=_0x22d25a['count'];var _0x2e085d=_0x558e93?0x0:_0x3141c8['offset'];var _0x1ffb5d=_0x558e93?_0x22d25a[_0xd145('0x1f')]:_0x3141c8[_0xd145('0x20')]+_0x3141c8[_0xd145('0x1e')];var _0x9a8813;if(_0x1ffb5d>=_0x411280){_0x1ffb5d=_0x411280;_0x9a8813=0xc8;}else{_0x9a8813=0xce;}_0x736c5a[_0xd145('0x1a')](_0x9a8813);return _0x736c5a[_0xd145('0x21')](_0xd145('0x22'),_0x2e085d+'-'+_0x1ffb5d+'/'+_0x411280)['json'](_0x22d25a);}return null;};}function patchUpdates(_0x25b041){return function(_0x18e08e){try{jsonpatch['apply'](_0x18e08e,_0x25b041,!![]);}catch(_0x12c939){return BPromise[_0xd145('0x23')](_0x12c939);}return _0x18e08e['save']();};}function saveUpdates(_0x142983,_0x2dc684){return function(_0x5e57a8){if(_0x5e57a8){return _0x5e57a8[_0xd145('0x24')](_0x142983)['then'](function(_0x491a11){return _0x491a11;});}return null;};}function removeEntity(_0xb0997d,_0x4c0d99){return function(_0x8707c6){if(_0x8707c6){return _0x8707c6[_0xd145('0x25')]()[_0xd145('0x26')](function(){var _0x4a8164=_0x8707c6[_0xd145('0x27')]({'plain':!![]});var _0x41b820=_0xd145('0x28');return db[_0xd145('0x29')]['destroy']({'where':{'type':_0x41b820,'resourceId':_0x4a8164['id']}})[_0xd145('0x26')](function(){return _0x8707c6;});})[_0xd145('0x26')](function(){_0xb0997d['status'](0xcc)[_0xd145('0x1b')]();});}};}function handleEntityNotFound(_0xbdbbfc,_0x14e7b0){return function(_0x3fa391){if(!_0x3fa391){_0xbdbbfc[_0xd145('0x19')](0x194);}return _0x3fa391;};}function handleError(_0x5c7ebe,_0x375846){_0x375846=_0x375846||0x1f4;return function(_0x285665){logger['error'](_0x285665[_0xd145('0x2a')]);if(_0x285665['name']){delete _0x285665[_0xd145('0x2b')];}_0x5c7ebe[_0xd145('0x1a')](_0x375846)[_0xd145('0x2c')](_0x285665);};}exports[_0xd145('0x2d')]=function(_0x407187,_0x1557ca){var _0x4ce391={},_0x2e7815={},_0x10e031={'count':0x0,'rows':[]};var _0x5f0776=_[_0xd145('0x2e')](db['Campaign'][_0xd145('0x2f')],function(_0x1c5576){return{'name':_0x1c5576['fieldName'],'type':_0x1c5576['type']['key']};});_0x2e7815[_0xd145('0x30')]=_['map'](_0x5f0776,_0xd145('0x2b'));_0x2e7815[_0xd145('0x31')]=_[_0xd145('0x32')](_0x407187[_0xd145('0x31')]);_0x2e7815[_0xd145('0x33')]=_[_0xd145('0x34')](_0x2e7815[_0xd145('0x30')],_0x2e7815[_0xd145('0x31')]);_0x4ce391[_0xd145('0x35')]=_[_0xd145('0x34')](_0x2e7815[_0xd145('0x30')],qs[_0xd145('0x36')](_0x407187[_0xd145('0x31')][_0xd145('0x36')]));_0x4ce391[_0xd145('0x35')]=_0x4ce391['attributes'][_0xd145('0x37')]?_0x4ce391[_0xd145('0x35')]:_0x2e7815['model'];if(!_0x407187['query'][_0xd145('0x38')]('nolimit')){_0x4ce391['limit']=qs['limit'](_0x407187['query']['limit']);_0x4ce391['offset']=qs['offset'](_0x407187[_0xd145('0x31')][_0xd145('0x20')]);}_0x4ce391[_0xd145('0x39')]=qs[_0xd145('0x3a')](_0x407187[_0xd145('0x31')][_0xd145('0x3a')]);_0x4ce391[_0xd145('0x3b')]=qs[_0xd145('0x33')](_[_0xd145('0x3c')](_0x407187[_0xd145('0x31')],_0x2e7815['filters']),_0x5f0776);if(_0x407187[_0xd145('0x31')][_0xd145('0x3d')]){_0x4ce391[_0xd145('0x3b')]=_[_0xd145('0x3e')](_0x4ce391[_0xd145('0x3b')],{'$or':_['map'](_0x5f0776,function(_0x5b691d){if(_0x5b691d['type']!==_0xd145('0x3f')){var _0x2f6881={};_0x2f6881[_0x5b691d['name']]={'$like':'%'+_0x407187[_0xd145('0x31')][_0xd145('0x3d')]+'%'};return _0x2f6881;}})});}_0x4ce391=_[_0xd145('0x3e')]({},_0x4ce391,_0x407187['options']);var _0x34482d={'where':_0x4ce391['where']};return db[_0xd145('0x40')][_0xd145('0x1f')](_0x34482d)[_0xd145('0x26')](function(_0x1801c4){_0x10e031[_0xd145('0x1f')]=_0x1801c4;if(_0x407187[_0xd145('0x31')][_0xd145('0x41')]){_0x4ce391[_0xd145('0x42')]=[{'all':!![]}];}return db['Campaign'][_0xd145('0x43')](_0x4ce391);})[_0xd145('0x26')](function(_0x15a7cc){_0x10e031[_0xd145('0x44')]=_0x15a7cc;return _0x10e031;})[_0xd145('0x26')](respondWithFilteredResult(_0x1557ca,_0x4ce391))[_0xd145('0x45')](handleError(_0x1557ca,null));};exports[_0xd145('0x46')]=function(_0x3dfce3,_0x5eb93e){var _0x28e8fb={'raw':![],'where':{'id':_0x3dfce3['params']['id']}},_0x3a01cf={};_0x3a01cf[_0xd145('0x30')]=_['keys'](db['Campaign'][_0xd145('0x2f')]);_0x3a01cf[_0xd145('0x31')]=_[_0xd145('0x32')](_0x3dfce3[_0xd145('0x31')]);_0x3a01cf[_0xd145('0x33')]=_[_0xd145('0x34')](_0x3a01cf[_0xd145('0x30')],_0x3a01cf['query']);_0x28e8fb[_0xd145('0x35')]=_[_0xd145('0x34')](_0x3a01cf[_0xd145('0x30')],qs[_0xd145('0x36')](_0x3dfce3[_0xd145('0x31')][_0xd145('0x36')]));_0x28e8fb[_0xd145('0x35')]=_0x28e8fb[_0xd145('0x35')][_0xd145('0x37')]?_0x28e8fb[_0xd145('0x35')]:_0x3a01cf[_0xd145('0x30')];if(_0x3dfce3['query']['includeAll']){_0x28e8fb[_0xd145('0x42')]=[{'all':!![]}];}_0x28e8fb=_['merge']({},_0x28e8fb,_0x3dfce3[_0xd145('0x47')]);return db['Campaign'][_0xd145('0x48')](_0x28e8fb)[_0xd145('0x26')](handleEntityNotFound(_0x5eb93e,null))[_0xd145('0x26')](respondWithResult(_0x5eb93e,null))['catch'](handleError(_0x5eb93e,null));};exports[_0xd145('0x49')]=function(_0x13d815,_0x31d465){return db[_0xd145('0x40')][_0xd145('0x49')](_0x13d815['body'],{})[_0xd145('0x26')](function(_0x1f527e){var _0x586887=_0x13d815[_0xd145('0x4a')][_0xd145('0x27')]({'plain':!![]});if(!_0x586887)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x586887[_0xd145('0x4b')]===_0xd145('0x4a')){var _0x42559f=_0x1f527e[_0xd145('0x27')]({'plain':!![]});var _0x4bfda5=_0xd145('0x28');return db[_0xd145('0x4c')][_0xd145('0x48')]({'where':{'name':_0x4bfda5,'userProfileId':_0x586887[_0xd145('0x4d')]},'raw':!![]})[_0xd145('0x26')](function(_0x1e003a){if(_0x1e003a&&_0x1e003a['autoAssociation']===0x0){return db[_0xd145('0x29')][_0xd145('0x49')]({'name':_0x42559f[_0xd145('0x2b')],'resourceId':_0x42559f['id'],'type':_0x1e003a['name'],'sectionId':_0x1e003a['id']},{})[_0xd145('0x26')](function(){return _0x1f527e;});}else{return _0x1f527e;}})[_0xd145('0x45')](function(_0x317ec0){logger[_0xd145('0x4e')](_0xd145('0x4f'),_0x317ec0);throw _0x317ec0;});}return _0x1f527e;})[_0xd145('0x26')](respondWithResult(_0x31d465,0xc9))[_0xd145('0x45')](handleError(_0x31d465,null));};exports[_0xd145('0x50')]=function(_0x325639,_0x35a3f9){var _0x3a77c7={'where':{'id':_0x325639[_0xd145('0x51')]['id']}},_0x28c2af={};_0x28c2af[_0xd145('0x30')]=_['keys'](db[_0xd145('0x40')][_0xd145('0x2f')]);_0x3a77c7[_0xd145('0x35')]=_[_0xd145('0x34')](_0x28c2af['model'],qs[_0xd145('0x36')](_0x325639[_0xd145('0x31')][_0xd145('0x36')]));_0x3a77c7[_0xd145('0x35')]=_0x3a77c7[_0xd145('0x35')][_0xd145('0x37')]?_0x3a77c7[_0xd145('0x35')]:_0x28c2af[_0xd145('0x30')];if(_0x325639[_0xd145('0x31')]['includeAll']){_0x3a77c7[_0xd145('0x42')]=[{'all':!![]}];}_0x3a77c7=_['merge']({},_0x3a77c7,_0x325639[_0xd145('0x47')]);return db[_0xd145('0x40')][_0xd145('0x48')](_0x3a77c7)[_0xd145('0x26')](handleEntityNotFound(_0x35a3f9,null))[_0xd145('0x26')](function(_0x31cd1a){if(_0x31cd1a){var _0x3e71c3=_0x31cd1a[_0xd145('0x27')]({'plain':!![]});_0x3e71c3=qs[_0xd145('0x52')](_0x3e71c3,['id',_0xd145('0x53'),_0xd145('0x54')]);_0x325639['body']=_[_0xd145('0x52')](_0x325639[_0xd145('0x55')],['id','createdAt','updatedAt']);return db[_0xd145('0x40')]['create'](_[_0xd145('0x3e')](_0x3e71c3,_0x325639[_0xd145('0x55')]),{'include':_0x325639[_0xd145('0x31')][_0xd145('0x41')]?[{'all':!![]}]:undefined})['then'](function(_0x5d5dc4){var _0xa0f4a5=_0x325639[_0xd145('0x4a')][_0xd145('0x27')]({'plain':!![]});if(!_0xa0f4a5)throw new Error(_0xd145('0x56'));if(_0xa0f4a5[_0xd145('0x4b')]===_0xd145('0x4a')){var _0x42282f=_0x5d5dc4[_0xd145('0x27')]({'plain':!![]});var _0x219f03='IvrCampaigns';return db[_0xd145('0x4c')][_0xd145('0x48')]({'where':{'name':_0x219f03,'userProfileId':_0xa0f4a5[_0xd145('0x4d')]},'raw':!![]})[_0xd145('0x26')](function(_0x13bd89){if(_0x13bd89&&_0x13bd89[_0xd145('0x57')]===0x0){return db[_0xd145('0x29')][_0xd145('0x49')]({'name':_0x42282f['name'],'resourceId':_0x42282f['id'],'type':_0x13bd89[_0xd145('0x2b')],'sectionId':_0x13bd89['id']},{})[_0xd145('0x26')](function(){return _0x5d5dc4;});}else{return _0x5d5dc4;}})[_0xd145('0x45')](function(_0x1704b5){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1704b5);throw _0x1704b5;});}return _0x5d5dc4;});}})[_0xd145('0x26')](respondWithResult(_0x35a3f9,0xc9))[_0xd145('0x45')](handleError(_0x35a3f9,null));};exports[_0xd145('0x24')]=function(_0x196db9,_0x56f46a){if(_0x196db9[_0xd145('0x55')]['id']){delete _0x196db9['body']['id'];}return db[_0xd145('0x40')][_0xd145('0x48')]({'where':{'id':_0x196db9[_0xd145('0x51')]['id']}})[_0xd145('0x26')](handleEntityNotFound(_0x56f46a,null))[_0xd145('0x26')](saveUpdates(_0x196db9[_0xd145('0x55')],null))[_0xd145('0x26')](respondWithResult(_0x56f46a,null))[_0xd145('0x45')](handleError(_0x56f46a,null));};exports['destroy']=function(_0x11abe5,_0x13c385){return db[_0xd145('0x40')][_0xd145('0x48')]({'where':{'id':_0x11abe5['params']['id']}})[_0xd145('0x26')](handleEntityNotFound(_0x13c385,null))['then'](removeEntity(_0x13c385,null))[_0xd145('0x45')](handleError(_0x13c385,null));};exports[_0xd145('0x58')]=function(_0x1f2846,_0x480d4c,_0x2f295e){var _0xe580e9={'raw':!![],'where':{}};var _0x33e58c={};var _0x481b53={'count':0x0,'rows':[]};return db[_0xd145('0x40')][_0xd145('0x59')]({'where':{'id':_0x1f2846[_0xd145('0x51')]['id']}})[_0xd145('0x26')](handleEntityNotFound(_0x480d4c,null))[_0xd145('0x26')](function(_0x5e53a6){if(_0x5e53a6){_0x33e58c['model']=_['keys'](db[_0xd145('0x5a')][_0xd145('0x2f')]);_0x33e58c['query']=_[_0xd145('0x32')](_0x1f2846[_0xd145('0x31')]);_0x33e58c[_0xd145('0x33')]=_['intersection'](_0x33e58c[_0xd145('0x30')],_0x33e58c[_0xd145('0x31')]);_0xe580e9['attributes']=_['intersection'](_0x33e58c[_0xd145('0x30')],qs[_0xd145('0x36')](_0x1f2846[_0xd145('0x31')][_0xd145('0x36')]));_0xe580e9[_0xd145('0x35')]=_0xe580e9[_0xd145('0x35')][_0xd145('0x37')]?_0xe580e9['attributes']:_0x33e58c[_0xd145('0x30')];if(!_0x1f2846[_0xd145('0x31')][_0xd145('0x38')]('nolimit')){_0xe580e9['limit']=qs[_0xd145('0x1e')](_0x1f2846[_0xd145('0x31')][_0xd145('0x1e')]);_0xe580e9[_0xd145('0x20')]=qs[_0xd145('0x20')](_0x1f2846['query'][_0xd145('0x20')]);}_0xe580e9['order']=qs[_0xd145('0x3a')](_0x1f2846[_0xd145('0x31')][_0xd145('0x3a')]);_0xe580e9[_0xd145('0x3b')]=qs[_0xd145('0x33')](_['pick'](_0x1f2846[_0xd145('0x31')],_0x33e58c[_0xd145('0x33')]));_0xe580e9[_0xd145('0x3b')][_0xd145('0x5b')]=_0x5e53a6['id'];if(_0x1f2846[_0xd145('0x31')]['filter']){_0xe580e9[_0xd145('0x3b')]=_['merge'](_0xe580e9[_0xd145('0x3b')],{'$or':_[_0xd145('0x2e')](_0xe580e9[_0xd145('0x35')],function(_0x1f2fa8){var _0x23bc48={};_0x23bc48[_0x1f2fa8]={'$like':'%'+_0x1f2846['query']['filter']+'%'};return _0x23bc48;})});}_0xe580e9=_['merge']({},_0xe580e9,_0x1f2846[_0xd145('0x47')]);return db['CmHopper'][_0xd145('0x1f')]({'where':_0xe580e9[_0xd145('0x3b')]})[_0xd145('0x26')](function(_0x641d12){_0x481b53[_0xd145('0x1f')]=_0x641d12;if(_0x1f2846[_0xd145('0x31')][_0xd145('0x41')]){_0xe580e9[_0xd145('0x42')]=[{'all':!![]}];}return db[_0xd145('0x5a')][_0xd145('0x43')](_0xe580e9);})['then'](function(_0x26f1ac){_0x481b53['rows']=_0x26f1ac;return _0x481b53;});}})[_0xd145('0x26')](respondWithFilteredResult(_0x480d4c,_0xe580e9))['catch'](handleError(_0x480d4c,null));};exports[_0xd145('0x5c')]=function(_0x2e8649,_0x48ee42,_0x188326){var _0x2a3774={'raw':!![],'where':{}};var _0x3049b9={};var _0x194511={'count':0x0,'rows':[]};return db['Campaign'][_0xd145('0x59')]({'where':{'id':_0x2e8649['params']['id']}})[_0xd145('0x26')](handleEntityNotFound(_0x48ee42,null))['then'](function(_0x52fe10){if(_0x52fe10){_0x3049b9['model']=_['keys'](db[_0xd145('0x5d')]['rawAttributes']);_0x3049b9[_0xd145('0x31')]=_[_0xd145('0x32')](_0x2e8649[_0xd145('0x31')]);_0x3049b9[_0xd145('0x33')]=_[_0xd145('0x34')](_0x3049b9[_0xd145('0x30')],_0x3049b9[_0xd145('0x31')]);_0x2a3774[_0xd145('0x35')]=_[_0xd145('0x34')](_0x3049b9[_0xd145('0x30')],qs[_0xd145('0x36')](_0x2e8649['query']['fields']));_0x2a3774[_0xd145('0x35')]=_0x2a3774[_0xd145('0x35')][_0xd145('0x37')]?_0x2a3774[_0xd145('0x35')]:_0x3049b9['model'];if(!_0x2e8649[_0xd145('0x31')][_0xd145('0x38')](_0xd145('0x5e'))){_0x2a3774['limit']=qs['limit'](_0x2e8649[_0xd145('0x31')][_0xd145('0x1e')]);_0x2a3774['offset']=qs['offset'](_0x2e8649[_0xd145('0x31')][_0xd145('0x20')]);}_0x2a3774[_0xd145('0x39')]=qs[_0xd145('0x3a')](_0x2e8649[_0xd145('0x31')][_0xd145('0x3a')]);_0x2a3774[_0xd145('0x3b')]=qs[_0xd145('0x33')](_[_0xd145('0x3c')](_0x2e8649[_0xd145('0x31')],_0x3049b9[_0xd145('0x33')]));_0x2a3774['where'][_0xd145('0x5b')]=_0x52fe10['id'];if(_0x2e8649[_0xd145('0x31')]['filter']){_0x2a3774[_0xd145('0x3b')]=_[_0xd145('0x3e')](_0x2a3774[_0xd145('0x3b')],{'$or':_[_0xd145('0x2e')](_0x2a3774['attributes'],function(_0x94311b){var _0x2e581c={};_0x2e581c[_0x94311b]={'$like':'%'+_0x2e8649[_0xd145('0x31')]['filter']+'%'};return _0x2e581c;})});}_0x2a3774=_[_0xd145('0x3e')]({},_0x2a3774,_0x2e8649[_0xd145('0x47')]);return db[_0xd145('0x5d')]['count']({'where':_0x2a3774[_0xd145('0x3b')]})[_0xd145('0x26')](function(_0x36a25e){_0x194511[_0xd145('0x1f')]=_0x36a25e;if(_0x2e8649[_0xd145('0x31')][_0xd145('0x41')]){_0x2a3774[_0xd145('0x42')]=[{'all':!![]}];}return db[_0xd145('0x5d')]['findAll'](_0x2a3774);})[_0xd145('0x26')](function(_0x30b395){_0x194511['rows']=_0x30b395;return _0x194511;});}})[_0xd145('0x26')](respondWithFilteredResult(_0x48ee42,_0x2a3774))['catch'](handleError(_0x48ee42,null));};exports['getHopperFinals']=function(_0x55b2d6,_0x2ea86d,_0x11b34e){var _0x2d425f={'raw':!![],'where':{}};var _0x31b70c={};var _0xfaa809={'count':0x0,'rows':[]};return db['Campaign'][_0xd145('0x59')]({'where':{'id':_0x55b2d6[_0xd145('0x51')]['id']}})[_0xd145('0x26')](handleEntityNotFound(_0x2ea86d,null))[_0xd145('0x26')](function(_0x24039e){if(_0x24039e){_0x31b70c[_0xd145('0x30')]=_[_0xd145('0x32')](db[_0xd145('0x5f')][_0xd145('0x2f')]);_0x31b70c[_0xd145('0x31')]=_['keys'](_0x55b2d6['query']);_0x31b70c[_0xd145('0x33')]=_[_0xd145('0x34')](_0x31b70c['model'],_0x31b70c[_0xd145('0x31')]);_0x2d425f['attributes']=_[_0xd145('0x34')](_0x31b70c[_0xd145('0x30')],qs[_0xd145('0x36')](_0x55b2d6[_0xd145('0x31')][_0xd145('0x36')]));_0x2d425f['attributes']=_0x2d425f['attributes'][_0xd145('0x37')]?_0x2d425f['attributes']:_0x31b70c[_0xd145('0x30')];if(!_0x55b2d6[_0xd145('0x31')][_0xd145('0x38')]('nolimit')){_0x2d425f[_0xd145('0x1e')]=qs[_0xd145('0x1e')](_0x55b2d6[_0xd145('0x31')][_0xd145('0x1e')]);_0x2d425f['offset']=qs[_0xd145('0x20')](_0x55b2d6[_0xd145('0x31')][_0xd145('0x20')]);}_0x2d425f[_0xd145('0x39')]=qs['sort'](_0x55b2d6[_0xd145('0x31')][_0xd145('0x3a')]);_0x2d425f[_0xd145('0x3b')]=qs[_0xd145('0x33')](_['pick'](_0x55b2d6[_0xd145('0x31')],_0x31b70c[_0xd145('0x33')]));_0x2d425f['where'][_0xd145('0x5b')]=_0x24039e['id'];if(_0x55b2d6['query'][_0xd145('0x3d')]){_0x2d425f[_0xd145('0x3b')]=_[_0xd145('0x3e')](_0x2d425f[_0xd145('0x3b')],{'$or':_[_0xd145('0x2e')](_0x2d425f['attributes'],function(_0x281d48){var _0x4c316a={};_0x4c316a[_0x281d48]={'$like':'%'+_0x55b2d6[_0xd145('0x31')][_0xd145('0x3d')]+'%'};return _0x4c316a;})});}_0x2d425f=_[_0xd145('0x3e')]({},_0x2d425f,_0x55b2d6['options']);return db[_0xd145('0x5f')][_0xd145('0x1f')]({'where':_0x2d425f[_0xd145('0x3b')]})[_0xd145('0x26')](function(_0x16093c){_0xfaa809['count']=_0x16093c;if(_0x55b2d6['query'][_0xd145('0x41')]){_0x2d425f[_0xd145('0x42')]=[{'all':!![]}];}return db['CmHopperFinal'][_0xd145('0x43')](_0x2d425f);})[_0xd145('0x26')](function(_0x58e007){_0xfaa809['rows']=_0x58e007;return _0xfaa809;});}})[_0xd145('0x26')](respondWithFilteredResult(_0x2ea86d,_0x2d425f))[_0xd145('0x45')](handleError(_0x2ea86d,null));};exports[_0xd145('0x60')]=function(_0x530827,_0x5aa0e1,_0x54f6ac){var _0x5243f3={'raw':!![],'where':{}};var _0xfe178f={};var _0xd78b9f={'count':0x0,'rows':[]};return db[_0xd145('0x40')][_0xd145('0x59')]({'where':{'id':_0x530827[_0xd145('0x51')]['id']}})[_0xd145('0x26')](handleEntityNotFound(_0x5aa0e1,null))['then'](function(_0x1e14fd){if(_0x1e14fd){_0xfe178f[_0xd145('0x30')]=_[_0xd145('0x32')](db[_0xd145('0x61')][_0xd145('0x2f')]);_0xfe178f['query']=_['keys'](_0x530827[_0xd145('0x31')]);_0xfe178f[_0xd145('0x33')]=_['intersection'](_0xfe178f[_0xd145('0x30')],_0xfe178f[_0xd145('0x31')]);_0x5243f3[_0xd145('0x35')]=_[_0xd145('0x34')](_0xfe178f['model'],qs[_0xd145('0x36')](_0x530827[_0xd145('0x31')]['fields']));_0x5243f3['attributes']=_0x5243f3['attributes'][_0xd145('0x37')]?_0x5243f3[_0xd145('0x35')]:_0xfe178f[_0xd145('0x30')];if(!_0x530827['query'][_0xd145('0x38')](_0xd145('0x5e'))){_0x5243f3[_0xd145('0x1e')]=qs[_0xd145('0x1e')](_0x530827[_0xd145('0x31')][_0xd145('0x1e')]);_0x5243f3['offset']=qs[_0xd145('0x20')](_0x530827[_0xd145('0x31')]['offset']);}_0x5243f3[_0xd145('0x39')]=qs[_0xd145('0x3a')](_0x530827[_0xd145('0x31')][_0xd145('0x3a')]);_0x5243f3[_0xd145('0x3b')]=qs[_0xd145('0x33')](_[_0xd145('0x3c')](_0x530827[_0xd145('0x31')],_0xfe178f[_0xd145('0x33')]));_0x5243f3[_0xd145('0x3b')][_0xd145('0x5b')]=_0x1e14fd['id'];if(_0x530827[_0xd145('0x31')]['filter']){_0x5243f3[_0xd145('0x3b')]=_[_0xd145('0x3e')](_0x5243f3[_0xd145('0x3b')],{'$or':_['map'](_0x5243f3[_0xd145('0x35')],function(_0x4afec2){var _0x44abe9={};_0x44abe9[_0x4afec2]={'$like':'%'+_0x530827[_0xd145('0x31')][_0xd145('0x3d')]+'%'};return _0x44abe9;})});}_0x5243f3=_[_0xd145('0x3e')]({},_0x5243f3,_0x530827[_0xd145('0x47')]);return db[_0xd145('0x61')][_0xd145('0x1f')]({'where':_0x5243f3[_0xd145('0x3b')]})['then'](function(_0x5de26b){_0xd78b9f[_0xd145('0x1f')]=_0x5de26b;if(_0x530827[_0xd145('0x31')][_0xd145('0x41')]){_0x5243f3[_0xd145('0x42')]=[{'all':!![]}];}return db['CmHopperBlack'][_0xd145('0x43')](_0x5243f3);})[_0xd145('0x26')](function(_0x238ef8){_0xd78b9f[_0xd145('0x44')]=_0x238ef8;return _0xd78b9f;});}})[_0xd145('0x26')](respondWithFilteredResult(_0x5aa0e1,_0x5243f3))['catch'](handleError(_0x5aa0e1,null));};exports[_0xd145('0x62')]=function(_0x2da72e,_0x19fd4c,_0x256664){var _0x1b909b={};var _0x5af9e9={};var _0x172672;var _0x3504ad;return db['Campaign'][_0xd145('0x59')]({'where':{'id':_0x2da72e['params']['id']}})[_0xd145('0x26')](handleEntityNotFound(_0x19fd4c,null))[_0xd145('0x26')](function(_0x47e599){if(_0x47e599){_0x172672=_0x47e599;_0x5af9e9['model']=_[_0xd145('0x32')](db[_0xd145('0x63')][_0xd145('0x2f')]);_0x5af9e9[_0xd145('0x31')]=_[_0xd145('0x32')](_0x2da72e[_0xd145('0x31')]);_0x5af9e9[_0xd145('0x33')]=_['intersection'](_0x5af9e9[_0xd145('0x30')],_0x5af9e9[_0xd145('0x31')]);_0x1b909b[_0xd145('0x35')]=_[_0xd145('0x34')](_0x5af9e9[_0xd145('0x30')],qs[_0xd145('0x36')](_0x2da72e['query'][_0xd145('0x36')]));_0x1b909b[_0xd145('0x35')]=_0x1b909b['attributes'][_0xd145('0x37')]?_0x1b909b[_0xd145('0x35')]:_0x5af9e9['model'];_0x1b909b[_0xd145('0x39')]=qs[_0xd145('0x3a')](_0x2da72e['query'][_0xd145('0x3a')]);_0x1b909b[_0xd145('0x3b')]=qs[_0xd145('0x33')](_[_0xd145('0x3c')](_0x2da72e[_0xd145('0x31')],_0x5af9e9[_0xd145('0x33')]));if(_0x2da72e['query'][_0xd145('0x3d')]){_0x1b909b[_0xd145('0x3b')]=_[_0xd145('0x3e')](_0x1b909b['where'],{'$or':_['map'](_0x1b909b[_0xd145('0x35')],function(_0x3779e5){var _0xeb272b={};_0xeb272b[_0x3779e5]={'$like':'%'+_0x2da72e['query'][_0xd145('0x3d')]+'%'};return _0xeb272b;})});}_0x1b909b=_[_0xd145('0x3e')]({},_0x1b909b,_0x2da72e[_0xd145('0x47')]);return _0x172672[_0xd145('0x62')](_0x1b909b);}})[_0xd145('0x26')](function(_0x4bf6e0){if(_0x4bf6e0){_0x3504ad=_0x4bf6e0[_0xd145('0x37')];if(!_0x2da72e[_0xd145('0x31')][_0xd145('0x38')]('nolimit')){_0x1b909b[_0xd145('0x1e')]=qs[_0xd145('0x1e')](_0x2da72e[_0xd145('0x31')][_0xd145('0x1e')]);_0x1b909b[_0xd145('0x20')]=qs['offset'](_0x2da72e[_0xd145('0x31')][_0xd145('0x20')]);}return _0x172672[_0xd145('0x62')](_0x1b909b);}})[_0xd145('0x26')](function(_0x8e3f8c){if(_0x8e3f8c){return _0x8e3f8c?{'count':_0x3504ad,'rows':_0x8e3f8c}:null;}})[_0xd145('0x26')](respondWithResult(_0x19fd4c,null))[_0xd145('0x45')](handleError(_0x19fd4c,null));};exports[_0xd145('0x64')]=function(_0x344f95,_0x41b4a4,_0x31eb23){var _0x38bb2d,_0x18516e;var _0x228a2e=[];var _0x56e23f=moment()[_0xd145('0x65')](_0xd145('0x66'));return db[_0xd145('0x40')][_0xd145('0x48')]({'where':{'id':_0x344f95['params']['id']}})[_0xd145('0x26')](handleEntityNotFound(_0x41b4a4,null))[_0xd145('0x26')](function(_0x3afc4d){if(_0x3afc4d){_0x18516e=_0x3afc4d;return _0x3afc4d['addLists'](_0x344f95[_0xd145('0x55')]['ids'],_[_0xd145('0x52')](_0x344f95[_0xd145('0x55')],[_0xd145('0x67'),'id'])||{});}return null;})[_0xd145('0x68')](function(_0x8442f0){var _0x2a0b40;var _0x525e5c;_0x38bb2d=_0x8442f0||[];var _0x112603=[];if(_0x8442f0){for(var _0x18cb3a=0x0;_0x18cb3a<_0x8442f0[_0xd145('0x37')];_0x18cb3a+=0x1){var _0x5e80f5=_0x8442f0[_0x18cb3a][_0xd145('0x27')]({'plain':!![]});_0x18516e[_0xd145('0x69')]=_0x344f95[_0xd145('0x55')][_0xd145('0x69')]?_0x344f95[_0xd145('0x55')][_0xd145('0x69')]:_0x18516e['dialCheckDuplicateType'];switch(_0x18516e[_0xd145('0x69')]){case _0xd145('0x6a'):_0x2a0b40=squel[_0xd145('0x6b')]()['into']('cm_hopper')[_0xd145('0x6c')]([_0xd145('0x6d'),_0xd145('0x6e'),'ContactId',_0xd145('0x6f'),'CampaignId',_0xd145('0x53'),_0xd145('0x54')],squel[_0xd145('0x70')]()[_0xd145('0x71')](_0xd145('0x6d'),'phone')['field']('NOW()','scheduledAt')[_0xd145('0x71')]('id','ContactId')['field'](_0x5e80f5[_0xd145('0x72')][_0xd145('0x73')](),'ListId')[_0xd145('0x71')](_0x344f95[_0xd145('0x51')]['id'][_0xd145('0x73')](),_0xd145('0x5b'))[_0xd145('0x71')]('\x27'+_0x56e23f+'\x27',_0xd145('0x53'))[_0xd145('0x71')]('\x27'+_0x56e23f+'\x27',_0xd145('0x54'))['from'](_0xd145('0x74'))[_0xd145('0x3b')](_0xd145('0x75'))[_0xd145('0x3b')](_0xd145('0x76'),_0x5e80f5[_0xd145('0x72')][_0xd145('0x73')]())['where'](_0xd145('0x77'))[_0xd145('0x3b')](_0xd145('0x78'),squel[_0xd145('0x70')]()['field'](_0xd145('0x79'))[_0xd145('0x7a')]('cm_hopper_final')[_0xd145('0x3b')]('CampaignId\x20=\x20?',_0x344f95[_0xd145('0x51')]['id']['toString']()))[_0xd145('0x3b')](_0xd145('0x78'),squel['select']()['field'](_0xd145('0x7b'))[_0xd145('0x7a')](_0xd145('0x7c'))['where'](_0xd145('0x7d'),_0x344f95[_0xd145('0x51')]['id'][_0xd145('0x73')]())))[_0xd145('0x73')]();break;case _0xd145('0x7e'):_0x2a0b40=squel[_0xd145('0x6b')]()[_0xd145('0x7f')](_0xd145('0x7c'))[_0xd145('0x6c')]([_0xd145('0x6d'),_0xd145('0x6e'),_0xd145('0x80'),'ListId',_0xd145('0x5b'),'createdAt','updatedAt'],squel[_0xd145('0x70')]()['field'](_0xd145('0x6d'),'phone')['field'](_0xd145('0x81'),'scheduledAt')[_0xd145('0x71')]('id',_0xd145('0x80'))[_0xd145('0x71')](_0x5e80f5[_0xd145('0x72')][_0xd145('0x73')](),_0xd145('0x6f'))[_0xd145('0x71')](_0x344f95[_0xd145('0x51')]['id'][_0xd145('0x73')](),_0xd145('0x5b'))[_0xd145('0x71')]('\x27'+_0x56e23f+'\x27','createdAt')['field']('\x27'+_0x56e23f+'\x27',_0xd145('0x54'))[_0xd145('0x7a')]('cm_contacts')[_0xd145('0x3b')](_0xd145('0x75'))[_0xd145('0x3b')](_0xd145('0x76'),_0x5e80f5[_0xd145('0x72')][_0xd145('0x73')]())[_0xd145('0x3b')](_0xd145('0x77'))['where'](_0xd145('0x78'),squel['select']()[_0xd145('0x71')](_0xd145('0x7b'))[_0xd145('0x7a')](_0xd145('0x7c'))[_0xd145('0x3b')](_0xd145('0x7d'),_0x344f95['params']['id'][_0xd145('0x73')]())))[_0xd145('0x73')]();break;default:_0x2a0b40=squel[_0xd145('0x6b')]()[_0xd145('0x7f')](_0xd145('0x7c'))['fromQuery']([_0xd145('0x6d'),_0xd145('0x6e'),_0xd145('0x80'),'ListId','CampaignId',_0xd145('0x53'),_0xd145('0x54')],squel[_0xd145('0x70')]()[_0xd145('0x71')](_0xd145('0x6d'),'phone')[_0xd145('0x71')](_0xd145('0x81'),_0xd145('0x6e'))[_0xd145('0x71')]('id',_0xd145('0x80'))[_0xd145('0x71')](_0x5e80f5[_0xd145('0x72')][_0xd145('0x73')](),_0xd145('0x6f'))['field'](_0x344f95['params']['id']['toString'](),'CampaignId')['field']('\x27'+_0x56e23f+'\x27','createdAt')[_0xd145('0x71')]('\x27'+_0x56e23f+'\x27',_0xd145('0x54'))[_0xd145('0x7a')](_0xd145('0x74'))['where'](_0xd145('0x75'))['where']('ListId\x20=\x20?',_0x5e80f5[_0xd145('0x72')][_0xd145('0x73')]())[_0xd145('0x3b')](_0xd145('0x77')))[_0xd145('0x73')]();}_0x525e5c=squel['insert']()[_0xd145('0x7f')]('cm_hopper_additional_phones')[_0xd145('0x6c')]([_0xd145('0x82'),_0xd145('0x6e'),'phone',_0xd145('0x83'),'createdAt','updatedAt'],squel[_0xd145('0x70')]()[_0xd145('0x71')](_0xd145('0x84'),'id')[_0xd145('0x71')](_0xd145('0x81'),'scheduledAt')[_0xd145('0x71')](_0xd145('0x85'),'phone')[_0xd145('0x71')](_0xd145('0x86'),_0xd145('0x83'))['field']('\x27'+_0x56e23f+'\x27','createdAt')[_0xd145('0x71')]('\x27'+_0x56e23f+'\x27',_0xd145('0x54'))[_0xd145('0x7a')](_0xd145('0x87'),'ci')[_0xd145('0x88')](_0xd145('0x7c'),'h',_0xd145('0x89'))[_0xd145('0x3b')]('h.ListId\x20=\x20?',_0x5e80f5[_0xd145('0x72')][_0xd145('0x73')]())[_0xd145('0x3b')](_0xd145('0x8a'),_0x344f95[_0xd145('0x51')]['id'][_0xd145('0x73')]())[_0xd145('0x3b')]('h.createdAt\x20=\x20?',_0x56e23f))[_0xd145('0x73')]();_0x112603[_0xd145('0x8b')](db[_0xd145('0x8c')][_0xd145('0x31')](_0x2a0b40));_0x228a2e[_0xd145('0x8b')](db['sequelize'][_0xd145('0x31')](_0x525e5c));}return BPromise['all'](_0x112603);}})['then'](function(){return BPromise[_0xd145('0x8d')](_0x228a2e);})[_0xd145('0x26')](function(){return _0x38bb2d;})[_0xd145('0x26')](respondWithResult(_0x41b4a4,null))[_0xd145('0x45')](handleError(_0x41b4a4,null));};exports[_0xd145('0x8e')]=function(_0x528b30,_0x414dea,_0x1ca858){return db[_0xd145('0x40')][_0xd145('0x48')]({'where':{'id':_0x528b30[_0xd145('0x51')]['id']}})['then'](handleEntityNotFound(_0x414dea,null))['then'](function(_0x44c69){if(_0x44c69){return _0x44c69[_0xd145('0x8e')](_0x528b30[_0xd145('0x31')][_0xd145('0x67')]);}})['then'](function(_0x34978a){if(_0x34978a){return db[_0xd145('0x5a')][_0xd145('0x25')]({'where':{'ListId':_0x528b30[_0xd145('0x31')][_0xd145('0x67')],'CampaignId':_0x528b30[_0xd145('0x51')]['id']}})[_0xd145('0x26')](function(){return _0x34978a;});}})[_0xd145('0x26')](respondWithStatusCode(_0x414dea,null))['catch'](handleError(_0x414dea,null));};exports['getBlackLists']=function(_0x5df7aa,_0x1446ce,_0x416a9b){var _0x1e1790={};var _0x9a4a9f={};var _0x47d1cc;var _0x3a139e;return db['Campaign'][_0xd145('0x59')]({'where':{'id':_0x5df7aa[_0xd145('0x51')]['id']}})[_0xd145('0x26')](handleEntityNotFound(_0x1446ce,null))[_0xd145('0x26')](function(_0x2ff4c0){if(_0x2ff4c0){_0x47d1cc=_0x2ff4c0;_0x9a4a9f[_0xd145('0x30')]=_[_0xd145('0x32')](db[_0xd145('0x63')][_0xd145('0x2f')]);_0x9a4a9f[_0xd145('0x31')]=_[_0xd145('0x32')](_0x5df7aa[_0xd145('0x31')]);_0x9a4a9f[_0xd145('0x33')]=_['intersection'](_0x9a4a9f[_0xd145('0x30')],_0x9a4a9f['query']);_0x1e1790[_0xd145('0x35')]=_[_0xd145('0x34')](_0x9a4a9f[_0xd145('0x30')],qs[_0xd145('0x36')](_0x5df7aa[_0xd145('0x31')]['fields']));_0x1e1790['attributes']=_0x1e1790['attributes'][_0xd145('0x37')]?_0x1e1790[_0xd145('0x35')]:_0x9a4a9f[_0xd145('0x30')];_0x1e1790[_0xd145('0x39')]=qs[_0xd145('0x3a')](_0x5df7aa['query'][_0xd145('0x3a')]);_0x1e1790[_0xd145('0x3b')]=qs[_0xd145('0x33')](_[_0xd145('0x3c')](_0x5df7aa[_0xd145('0x31')],_0x9a4a9f['filters']));if(_0x5df7aa[_0xd145('0x31')][_0xd145('0x3d')]){_0x1e1790[_0xd145('0x3b')]=_[_0xd145('0x3e')](_0x1e1790[_0xd145('0x3b')],{'$or':_[_0xd145('0x2e')](_0x1e1790[_0xd145('0x35')],function(_0x33b940){var _0x2f59d6={};_0x2f59d6[_0x33b940]={'$like':'%'+_0x5df7aa['query'][_0xd145('0x3d')]+'%'};return _0x2f59d6;})});}_0x1e1790=_[_0xd145('0x3e')]({},_0x1e1790,_0x5df7aa[_0xd145('0x47')]);return _0x47d1cc[_0xd145('0x8f')](_0x1e1790);}})[_0xd145('0x26')](function(_0x5f2fd5){if(_0x5f2fd5){_0x3a139e=_0x5f2fd5[_0xd145('0x37')];if(!_0x5df7aa[_0xd145('0x31')][_0xd145('0x38')]('nolimit')){_0x1e1790[_0xd145('0x1e')]=qs[_0xd145('0x1e')](_0x5df7aa[_0xd145('0x31')][_0xd145('0x1e')]);_0x1e1790[_0xd145('0x20')]=qs[_0xd145('0x20')](_0x5df7aa[_0xd145('0x31')][_0xd145('0x20')]);}return _0x47d1cc[_0xd145('0x8f')](_0x1e1790);}})[_0xd145('0x26')](function(_0x3629e8){if(_0x3629e8){return _0x3629e8?{'count':_0x3a139e,'rows':_0x3629e8}:null;}})[_0xd145('0x26')](respondWithResult(_0x1446ce,null))[_0xd145('0x45')](handleError(_0x1446ce,null));};exports[_0xd145('0x90')]=function(_0x2a86ef,_0x3593e9,_0xfe21a5){var _0x1786ed,_0x171a31;var _0x33f65c=[];var _0x2c60bb=moment()[_0xd145('0x65')]('YYYY-MM-DD\x20HH:mm:ss');return db['Campaign'][_0xd145('0x48')]({'where':{'id':_0x2a86ef[_0xd145('0x51')]['id']}})['then'](handleEntityNotFound(_0x3593e9,null))['then'](function(_0xfd928e){if(_0xfd928e){_0x171a31=_0xfd928e;return _0xfd928e['addBlackLists'](_0x2a86ef[_0xd145('0x55')]['ids'],_[_0xd145('0x52')](_0x2a86ef[_0xd145('0x55')],['ids','id'])||{});}return null;})[_0xd145('0x68')](function(_0x1e0227){var _0x3f011e;var _0x529eb5;_0x1786ed=_0x1e0227||[];var _0x137473=[];if(_0x1e0227){for(var _0x48f6f0=0x0;_0x48f6f0<_0x1e0227[_0xd145('0x37')];_0x48f6f0+=0x1){var _0x577999=_0x1e0227[_0x48f6f0][_0xd145('0x27')]({'plain':!![]});_0x3f011e=squel[_0xd145('0x6b')]()[_0xd145('0x7f')](_0xd145('0x91'))[_0xd145('0x6c')](['phone',_0xd145('0x80'),_0xd145('0x6f'),_0xd145('0x5b'),_0xd145('0x53'),'updatedAt'],squel[_0xd145('0x70')]()[_0xd145('0x71')](_0xd145('0x6d'),_0xd145('0x6d'))[_0xd145('0x71')]('id',_0xd145('0x80'))[_0xd145('0x71')](_0x577999[_0xd145('0x72')][_0xd145('0x73')](),_0xd145('0x6f'))[_0xd145('0x71')](_0x2a86ef[_0xd145('0x51')]['id']['toString'](),_0xd145('0x5b'))['field'](_0xd145('0x81'),'createdAt')[_0xd145('0x71')](_0xd145('0x81'),_0xd145('0x54'))[_0xd145('0x7a')](_0xd145('0x74'))[_0xd145('0x3b')](_0xd145('0x75'))[_0xd145('0x3b')](_0xd145('0x76'),_0x577999[_0xd145('0x72')][_0xd145('0x73')]())['where'](_0xd145('0x77')))[_0xd145('0x73')]();_0x137473['push'](db[_0xd145('0x8c')][_0xd145('0x31')](_0x3f011e));}return BPromise[_0xd145('0x8d')](_0x137473);}})[_0xd145('0x26')](function(){return _0x1786ed;})[_0xd145('0x26')](respondWithResult(_0x3593e9,null))['catch'](handleError(_0x3593e9,null));};exports[_0xd145('0x92')]=function(_0x5b55bc,_0x2ef504,_0x149b4f){return db[_0xd145('0x40')][_0xd145('0x48')]({'where':{'id':_0x5b55bc[_0xd145('0x51')]['id']}})[_0xd145('0x26')](handleEntityNotFound(_0x2ef504,null))[_0xd145('0x26')](function(_0x140004){if(_0x140004){return _0x140004[_0xd145('0x92')](_0x5b55bc[_0xd145('0x31')][_0xd145('0x67')]);}})[_0xd145('0x26')](function(_0x78aa53){if(_0x78aa53){return db[_0xd145('0x61')][_0xd145('0x25')]({'where':{'ListId':_0x5b55bc[_0xd145('0x31')][_0xd145('0x67')],'CampaignId':_0x5b55bc[_0xd145('0x51')]['id']}})['then'](function(){return _0x78aa53;});}})['then'](respondWithStatusCode(_0x2ef504,null))['catch'](handleError(_0x2ef504,null));};
\ No newline at end of file
+var _0xcd4d=['create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','user','getHoppers','findOne','CmHopper','hasOwnProperty','order','sort','findAll','rows','getHopperHistories','CampaignId','CmHopperHistory','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getLists','CmList','ids','spread','dialCheckDuplicateType','always','insert','into','cm_hopper','phone','ContactId','ListId','scheduledAt','field','CmListId','toString','ListId\x20=\x20?','phone\x20NOT\x20IN\x20(?)','select','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','CampaignId\x20=\x20?','COALESCE(phone,\x27\x27)','from','onlyIfOpen','fromQuery','cm_contacts','deletedAt\x20IS\x20NULL','phone\x20IS\x20NOT\x20NULL','NOW()','cm_hopper_additional_phones','cmHopperId','OrderBy','cm_contact_has_items','join','h.ContactId\x20=\x20ci.CmContactId','h.ListId\x20=\x20?','h.CampaignId=?','h.createdAt\x20=\x20?','push','sequelize','all','removeLists','getBlackLists','addBlackLists','format','YYYY-MM-DD\x20HH:mm:ss','removeBlackLists','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','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','get','IvrCampaigns','UserProfileResource','name','send','map','Campaign','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','length','nolimit','where','pick','filter','type','VIRTUAL','merge','options','includeAll','include','catch','show','params','keys','find'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xcd4d,0xe4));var _0xdcd4=function(_0x1caf77,_0x304396){_0x1caf77=_0x1caf77-0x0;var _0x34b1d4=_0xcd4d[_0x1caf77];return _0x34b1d4;};'use strict';var emlformat=require(_0xdcd4('0x0'));var rimraf=require(_0xdcd4('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xdcd4('0x2'));var rp=require(_0xdcd4('0x3'));var moment=require(_0xdcd4('0x4'));var BPromise=require(_0xdcd4('0x5'));var Mustache=require(_0xdcd4('0x6'));var util=require(_0xdcd4('0x7'));var path=require(_0xdcd4('0x8'));var sox=require(_0xdcd4('0x9'));var csv=require(_0xdcd4('0xa'));var ejs=require(_0xdcd4('0xb'));var fs=require('fs');var fs_extra=require(_0xdcd4('0xc'));var _=require(_0xdcd4('0xd'));var squel=require(_0xdcd4('0xe'));var crypto=require(_0xdcd4('0xf'));var jsforce=require(_0xdcd4('0x10'));var deskjs=require(_0xdcd4('0x11'));var toCsv=require('to-csv');var querystring=require(_0xdcd4('0x12'));var Papa=require(_0xdcd4('0x13'));var Redis=require('ioredis');var authService=require(_0xdcd4('0x14'));var qs=require(_0xdcd4('0x15'));var as=require(_0xdcd4('0x16'));var hardwareService=require(_0xdcd4('0x17'));var logger=require(_0xdcd4('0x18'))('api');var utils=require(_0xdcd4('0x19'));var config=require(_0xdcd4('0x1a'));var licenseUtil=require(_0xdcd4('0x1b'));var db=require(_0xdcd4('0x1c'))['db'];function respondWithStatusCode(_0x2bf080,_0x553279){_0x553279=_0x553279||0xcc;return function(_0x12af2b){if(_0x12af2b){return _0x2bf080[_0xdcd4('0x1d')](_0x553279);}return _0x2bf080['status'](_0x553279)[_0xdcd4('0x1e')]();};}function respondWithResult(_0x16f7e5,_0x4aa877){_0x4aa877=_0x4aa877||0xc8;return function(_0x49f85e){if(_0x49f85e){return _0x16f7e5[_0xdcd4('0x1f')](_0x4aa877)[_0xdcd4('0x20')](_0x49f85e);}};}function respondWithFilteredResult(_0x282a21,_0x26b226){return function(_0x280598){if(_0x280598){var _0x3a1d3a=typeof _0x26b226[_0xdcd4('0x21')]===_0xdcd4('0x22')&&typeof _0x26b226[_0xdcd4('0x23')]===_0xdcd4('0x22');var _0xdb8b41=_0x280598['count'];var _0x579125=_0x3a1d3a?0x0:_0x26b226[_0xdcd4('0x21')];var _0x7682f8=_0x3a1d3a?_0x280598[_0xdcd4('0x24')]:_0x26b226[_0xdcd4('0x21')]+_0x26b226[_0xdcd4('0x23')];var _0x2433f0;if(_0x7682f8>=_0xdb8b41){_0x7682f8=_0xdb8b41;_0x2433f0=0xc8;}else{_0x2433f0=0xce;}_0x282a21[_0xdcd4('0x1f')](_0x2433f0);return _0x282a21[_0xdcd4('0x25')](_0xdcd4('0x26'),_0x579125+'-'+_0x7682f8+'/'+_0xdb8b41)[_0xdcd4('0x20')](_0x280598);}return null;};}function patchUpdates(_0x28bec2){return function(_0x2864c9){try{jsonpatch[_0xdcd4('0x27')](_0x2864c9,_0x28bec2,!![]);}catch(_0x196619){return BPromise[_0xdcd4('0x28')](_0x196619);}return _0x2864c9['save']();};}function saveUpdates(_0x21a330,_0xb4414e){return function(_0x520bb7){if(_0x520bb7){return _0x520bb7[_0xdcd4('0x29')](_0x21a330)[_0xdcd4('0x2a')](function(_0x17faa9){return _0x17faa9;});}return null;};}function removeEntity(_0x4d1e32,_0x46768f){return function(_0x427c92){if(_0x427c92){return _0x427c92[_0xdcd4('0x2b')]()['then'](function(){var _0x44dc04=_0x427c92[_0xdcd4('0x2c')]({'plain':!![]});var _0x48b046=_0xdcd4('0x2d');return db[_0xdcd4('0x2e')][_0xdcd4('0x2b')]({'where':{'type':_0x48b046,'resourceId':_0x44dc04['id']}})[_0xdcd4('0x2a')](function(){return _0x427c92;});})[_0xdcd4('0x2a')](function(){_0x4d1e32[_0xdcd4('0x1f')](0xcc)[_0xdcd4('0x1e')]();});}};}function handleEntityNotFound(_0xc9e4d4,_0x48dec1){return function(_0x134c00){if(!_0x134c00){_0xc9e4d4['sendStatus'](0x194);}return _0x134c00;};}function handleError(_0x114e94,_0x3d29d7){_0x3d29d7=_0x3d29d7||0x1f4;return function(_0x5b9f9d){logger['error'](_0x5b9f9d['stack']);if(_0x5b9f9d['name']){delete _0x5b9f9d[_0xdcd4('0x2f')];}_0x114e94[_0xdcd4('0x1f')](_0x3d29d7)[_0xdcd4('0x30')](_0x5b9f9d);};}exports['index']=function(_0x239479,_0x1d0937){var _0x565e9e={},_0x35d1e3={},_0x2e11d6={'count':0x0,'rows':[]};var _0x21aaaf=_[_0xdcd4('0x31')](db[_0xdcd4('0x32')][_0xdcd4('0x33')],function(_0x4a6a1f){return{'name':_0x4a6a1f[_0xdcd4('0x34')],'type':_0x4a6a1f['type'][_0xdcd4('0x35')]};});_0x35d1e3[_0xdcd4('0x36')]=_[_0xdcd4('0x31')](_0x21aaaf,_0xdcd4('0x2f'));_0x35d1e3[_0xdcd4('0x37')]=_['keys'](_0x239479['query']);_0x35d1e3[_0xdcd4('0x38')]=_[_0xdcd4('0x39')](_0x35d1e3[_0xdcd4('0x36')],_0x35d1e3['query']);_0x565e9e[_0xdcd4('0x3a')]=_[_0xdcd4('0x39')](_0x35d1e3['model'],qs['fields'](_0x239479[_0xdcd4('0x37')][_0xdcd4('0x3b')]));_0x565e9e[_0xdcd4('0x3a')]=_0x565e9e[_0xdcd4('0x3a')][_0xdcd4('0x3c')]?_0x565e9e[_0xdcd4('0x3a')]:_0x35d1e3['model'];if(!_0x239479[_0xdcd4('0x37')]['hasOwnProperty'](_0xdcd4('0x3d'))){_0x565e9e[_0xdcd4('0x23')]=qs[_0xdcd4('0x23')](_0x239479['query'][_0xdcd4('0x23')]);_0x565e9e[_0xdcd4('0x21')]=qs[_0xdcd4('0x21')](_0x239479[_0xdcd4('0x37')]['offset']);}_0x565e9e['order']=qs['sort'](_0x239479[_0xdcd4('0x37')]['sort']);_0x565e9e[_0xdcd4('0x3e')]=qs[_0xdcd4('0x38')](_[_0xdcd4('0x3f')](_0x239479[_0xdcd4('0x37')],_0x35d1e3[_0xdcd4('0x38')]),_0x21aaaf);if(_0x239479[_0xdcd4('0x37')][_0xdcd4('0x40')]){_0x565e9e[_0xdcd4('0x3e')]=_['merge'](_0x565e9e[_0xdcd4('0x3e')],{'$or':_['map'](_0x21aaaf,function(_0xf0b2c8){if(_0xf0b2c8[_0xdcd4('0x41')]!==_0xdcd4('0x42')){var _0x595e61={};_0x595e61[_0xf0b2c8[_0xdcd4('0x2f')]]={'$like':'%'+_0x239479[_0xdcd4('0x37')][_0xdcd4('0x40')]+'%'};return _0x595e61;}})});}_0x565e9e=_[_0xdcd4('0x43')]({},_0x565e9e,_0x239479[_0xdcd4('0x44')]);var _0x47717d={'where':_0x565e9e['where']};return db[_0xdcd4('0x32')][_0xdcd4('0x24')](_0x47717d)['then'](function(_0x82cd5e){_0x2e11d6['count']=_0x82cd5e;if(_0x239479[_0xdcd4('0x37')][_0xdcd4('0x45')]){_0x565e9e[_0xdcd4('0x46')]=[{'all':!![]}];}return db[_0xdcd4('0x32')]['findAll'](_0x565e9e);})[_0xdcd4('0x2a')](function(_0x30a725){_0x2e11d6['rows']=_0x30a725;return _0x2e11d6;})[_0xdcd4('0x2a')](respondWithFilteredResult(_0x1d0937,_0x565e9e))[_0xdcd4('0x47')](handleError(_0x1d0937,null));};exports[_0xdcd4('0x48')]=function(_0x392bc3,_0x1e53ec){var _0x35a808={'raw':![],'where':{'id':_0x392bc3[_0xdcd4('0x49')]['id']}},_0x193501={};_0x193501[_0xdcd4('0x36')]=_[_0xdcd4('0x4a')](db[_0xdcd4('0x32')]['rawAttributes']);_0x193501[_0xdcd4('0x37')]=_[_0xdcd4('0x4a')](_0x392bc3[_0xdcd4('0x37')]);_0x193501[_0xdcd4('0x38')]=_[_0xdcd4('0x39')](_0x193501[_0xdcd4('0x36')],_0x193501[_0xdcd4('0x37')]);_0x35a808['attributes']=_['intersection'](_0x193501[_0xdcd4('0x36')],qs['fields'](_0x392bc3['query']['fields']));_0x35a808['attributes']=_0x35a808[_0xdcd4('0x3a')][_0xdcd4('0x3c')]?_0x35a808['attributes']:_0x193501[_0xdcd4('0x36')];if(_0x392bc3[_0xdcd4('0x37')][_0xdcd4('0x45')]){_0x35a808['include']=[{'all':!![]}];}_0x35a808=_[_0xdcd4('0x43')]({},_0x35a808,_0x392bc3[_0xdcd4('0x44')]);return db[_0xdcd4('0x32')][_0xdcd4('0x4b')](_0x35a808)[_0xdcd4('0x2a')](handleEntityNotFound(_0x1e53ec,null))[_0xdcd4('0x2a')](respondWithResult(_0x1e53ec,null))[_0xdcd4('0x47')](handleError(_0x1e53ec,null));};exports[_0xdcd4('0x4c')]=function(_0x942d98,_0xa91417){return db['Campaign'][_0xdcd4('0x4c')](_0x942d98[_0xdcd4('0x4d')],{})[_0xdcd4('0x2a')](function(_0x472827){var _0x535de8=_0x942d98['user'][_0xdcd4('0x2c')]({'plain':!![]});if(!_0x535de8)throw new Error(_0xdcd4('0x4e'));if(_0x535de8['role']==='user'){var _0x5a1695=_0x472827[_0xdcd4('0x2c')]({'plain':!![]});var _0x4b7457=_0xdcd4('0x2d');return db[_0xdcd4('0x4f')][_0xdcd4('0x4b')]({'where':{'name':_0x4b7457,'userProfileId':_0x535de8[_0xdcd4('0x50')]},'raw':!![]})['then'](function(_0x1bc801){if(_0x1bc801&&_0x1bc801[_0xdcd4('0x51')]===0x0){return db['UserProfileResource'][_0xdcd4('0x4c')]({'name':_0x5a1695[_0xdcd4('0x2f')],'resourceId':_0x5a1695['id'],'type':_0x1bc801[_0xdcd4('0x2f')],'sectionId':_0x1bc801['id']},{})[_0xdcd4('0x2a')](function(){return _0x472827;});}else{return _0x472827;}})['catch'](function(_0x4ce6bc){logger[_0xdcd4('0x52')](_0xdcd4('0x53'),_0x4ce6bc);throw _0x4ce6bc;});}return _0x472827;})[_0xdcd4('0x2a')](respondWithResult(_0xa91417,0xc9))[_0xdcd4('0x47')](handleError(_0xa91417,null));};exports[_0xdcd4('0x54')]=function(_0x5ecd77,_0xa1e423){var _0x4a8f5b={'where':{'id':_0x5ecd77[_0xdcd4('0x49')]['id']}},_0x3b133b={};_0x3b133b[_0xdcd4('0x36')]=_[_0xdcd4('0x4a')](db[_0xdcd4('0x32')]['rawAttributes']);_0x4a8f5b['attributes']=_['intersection'](_0x3b133b[_0xdcd4('0x36')],qs[_0xdcd4('0x3b')](_0x5ecd77[_0xdcd4('0x37')][_0xdcd4('0x3b')]));_0x4a8f5b[_0xdcd4('0x3a')]=_0x4a8f5b[_0xdcd4('0x3a')]['length']?_0x4a8f5b[_0xdcd4('0x3a')]:_0x3b133b[_0xdcd4('0x36')];if(_0x5ecd77[_0xdcd4('0x37')][_0xdcd4('0x45')]){_0x4a8f5b[_0xdcd4('0x46')]=[{'all':!![]}];}_0x4a8f5b=_[_0xdcd4('0x43')]({},_0x4a8f5b,_0x5ecd77[_0xdcd4('0x44')]);return db[_0xdcd4('0x32')][_0xdcd4('0x4b')](_0x4a8f5b)[_0xdcd4('0x2a')](handleEntityNotFound(_0xa1e423,null))[_0xdcd4('0x2a')](function(_0x1293f4){if(_0x1293f4){var _0x40ad2a=_0x1293f4['get']({'plain':!![]});_0x40ad2a=qs[_0xdcd4('0x55')](_0x40ad2a,['id',_0xdcd4('0x56'),'updatedAt']);_0x5ecd77[_0xdcd4('0x4d')]=_[_0xdcd4('0x55')](_0x5ecd77['body'],['id',_0xdcd4('0x56'),_0xdcd4('0x57')]);return db[_0xdcd4('0x32')][_0xdcd4('0x4c')](_[_0xdcd4('0x43')](_0x40ad2a,_0x5ecd77[_0xdcd4('0x4d')]),{'include':_0x5ecd77['query'][_0xdcd4('0x45')]?[{'all':!![]}]:undefined})['then'](function(_0x3bef7c){var _0xf41e7b=_0x5ecd77[_0xdcd4('0x58')]['get']({'plain':!![]});if(!_0xf41e7b)throw new Error(_0xdcd4('0x4e'));if(_0xf41e7b['role']==='user'){var _0x37d222=_0x3bef7c['get']({'plain':!![]});var _0x5a3402=_0xdcd4('0x2d');return db[_0xdcd4('0x4f')][_0xdcd4('0x4b')]({'where':{'name':_0x5a3402,'userProfileId':_0xf41e7b[_0xdcd4('0x50')]},'raw':!![]})[_0xdcd4('0x2a')](function(_0xb0bf48){if(_0xb0bf48&&_0xb0bf48[_0xdcd4('0x51')]===0x0){return db[_0xdcd4('0x2e')][_0xdcd4('0x4c')]({'name':_0x37d222[_0xdcd4('0x2f')],'resourceId':_0x37d222['id'],'type':_0xb0bf48[_0xdcd4('0x2f')],'sectionId':_0xb0bf48['id']},{})['then'](function(){return _0x3bef7c;});}else{return _0x3bef7c;}})['catch'](function(_0x3fa3de){logger[_0xdcd4('0x52')](_0xdcd4('0x53'),_0x3fa3de);throw _0x3fa3de;});}return _0x3bef7c;});}})[_0xdcd4('0x2a')](respondWithResult(_0xa1e423,0xc9))[_0xdcd4('0x47')](handleError(_0xa1e423,null));};exports['update']=function(_0x22e94a,_0x4048c9){if(_0x22e94a[_0xdcd4('0x4d')]['id']){delete _0x22e94a['body']['id'];}return db[_0xdcd4('0x32')]['find']({'where':{'id':_0x22e94a[_0xdcd4('0x49')]['id']}})[_0xdcd4('0x2a')](handleEntityNotFound(_0x4048c9,null))[_0xdcd4('0x2a')](saveUpdates(_0x22e94a[_0xdcd4('0x4d')],null))['then'](respondWithResult(_0x4048c9,null))[_0xdcd4('0x47')](handleError(_0x4048c9,null));};exports[_0xdcd4('0x2b')]=function(_0x1c117f,_0x580fca){return db['Campaign'][_0xdcd4('0x4b')]({'where':{'id':_0x1c117f[_0xdcd4('0x49')]['id']}})[_0xdcd4('0x2a')](handleEntityNotFound(_0x580fca,null))[_0xdcd4('0x2a')](removeEntity(_0x580fca,null))['catch'](handleError(_0x580fca,null));};exports[_0xdcd4('0x59')]=function(_0x1ebdc7,_0x1ebcc1,_0x18aaa1){var _0x466a49={'raw':!![],'where':{}};var _0x2c29b2={};var _0x107b2f={'count':0x0,'rows':[]};return db[_0xdcd4('0x32')][_0xdcd4('0x5a')]({'where':{'id':_0x1ebdc7['params']['id']}})['then'](handleEntityNotFound(_0x1ebcc1,null))['then'](function(_0xda61ca){if(_0xda61ca){_0x2c29b2['model']=_[_0xdcd4('0x4a')](db[_0xdcd4('0x5b')][_0xdcd4('0x33')]);_0x2c29b2[_0xdcd4('0x37')]=_[_0xdcd4('0x4a')](_0x1ebdc7['query']);_0x2c29b2[_0xdcd4('0x38')]=_[_0xdcd4('0x39')](_0x2c29b2['model'],_0x2c29b2[_0xdcd4('0x37')]);_0x466a49['attributes']=_[_0xdcd4('0x39')](_0x2c29b2[_0xdcd4('0x36')],qs['fields'](_0x1ebdc7[_0xdcd4('0x37')][_0xdcd4('0x3b')]));_0x466a49[_0xdcd4('0x3a')]=_0x466a49['attributes']['length']?_0x466a49[_0xdcd4('0x3a')]:_0x2c29b2[_0xdcd4('0x36')];if(!_0x1ebdc7['query'][_0xdcd4('0x5c')]('nolimit')){_0x466a49[_0xdcd4('0x23')]=qs[_0xdcd4('0x23')](_0x1ebdc7['query']['limit']);_0x466a49[_0xdcd4('0x21')]=qs[_0xdcd4('0x21')](_0x1ebdc7[_0xdcd4('0x37')][_0xdcd4('0x21')]);}_0x466a49[_0xdcd4('0x5d')]=qs[_0xdcd4('0x5e')](_0x1ebdc7[_0xdcd4('0x37')][_0xdcd4('0x5e')]);_0x466a49['where']=qs[_0xdcd4('0x38')](_[_0xdcd4('0x3f')](_0x1ebdc7['query'],_0x2c29b2['filters']));_0x466a49['where']['CampaignId']=_0xda61ca['id'];if(_0x1ebdc7[_0xdcd4('0x37')][_0xdcd4('0x40')]){_0x466a49['where']=_['merge'](_0x466a49[_0xdcd4('0x3e')],{'$or':_[_0xdcd4('0x31')](_0x466a49[_0xdcd4('0x3a')],function(_0x18a215){var _0x3e8390={};_0x3e8390[_0x18a215]={'$like':'%'+_0x1ebdc7['query']['filter']+'%'};return _0x3e8390;})});}_0x466a49=_[_0xdcd4('0x43')]({},_0x466a49,_0x1ebdc7[_0xdcd4('0x44')]);return db[_0xdcd4('0x5b')][_0xdcd4('0x24')]({'where':_0x466a49[_0xdcd4('0x3e')]})[_0xdcd4('0x2a')](function(_0xf623ed){_0x107b2f[_0xdcd4('0x24')]=_0xf623ed;if(_0x1ebdc7[_0xdcd4('0x37')][_0xdcd4('0x45')]){_0x466a49['include']=[{'all':!![]}];}return db[_0xdcd4('0x5b')][_0xdcd4('0x5f')](_0x466a49);})['then'](function(_0x55d517){_0x107b2f[_0xdcd4('0x60')]=_0x55d517;return _0x107b2f;});}})[_0xdcd4('0x2a')](respondWithFilteredResult(_0x1ebcc1,_0x466a49))[_0xdcd4('0x47')](handleError(_0x1ebcc1,null));};exports[_0xdcd4('0x61')]=function(_0x5a60cb,_0x3e4f01,_0x5d1853){var _0x36eb6d={'raw':!![],'where':{}};var _0x361725={};var _0x11f15d={'count':0x0,'rows':[]};return db[_0xdcd4('0x32')]['findOne']({'where':{'id':_0x5a60cb[_0xdcd4('0x49')]['id']}})['then'](handleEntityNotFound(_0x3e4f01,null))[_0xdcd4('0x2a')](function(_0x22435c){if(_0x22435c){_0x361725[_0xdcd4('0x36')]=_['keys'](db['CmHopperHistory'][_0xdcd4('0x33')]);_0x361725[_0xdcd4('0x37')]=_[_0xdcd4('0x4a')](_0x5a60cb['query']);_0x361725[_0xdcd4('0x38')]=_[_0xdcd4('0x39')](_0x361725['model'],_0x361725[_0xdcd4('0x37')]);_0x36eb6d[_0xdcd4('0x3a')]=_[_0xdcd4('0x39')](_0x361725[_0xdcd4('0x36')],qs[_0xdcd4('0x3b')](_0x5a60cb[_0xdcd4('0x37')]['fields']));_0x36eb6d[_0xdcd4('0x3a')]=_0x36eb6d[_0xdcd4('0x3a')][_0xdcd4('0x3c')]?_0x36eb6d[_0xdcd4('0x3a')]:_0x361725[_0xdcd4('0x36')];if(!_0x5a60cb['query'][_0xdcd4('0x5c')]('nolimit')){_0x36eb6d[_0xdcd4('0x23')]=qs['limit'](_0x5a60cb[_0xdcd4('0x37')][_0xdcd4('0x23')]);_0x36eb6d[_0xdcd4('0x21')]=qs[_0xdcd4('0x21')](_0x5a60cb[_0xdcd4('0x37')]['offset']);}_0x36eb6d[_0xdcd4('0x5d')]=qs['sort'](_0x5a60cb[_0xdcd4('0x37')][_0xdcd4('0x5e')]);_0x36eb6d[_0xdcd4('0x3e')]=qs[_0xdcd4('0x38')](_[_0xdcd4('0x3f')](_0x5a60cb['query'],_0x361725[_0xdcd4('0x38')]));_0x36eb6d[_0xdcd4('0x3e')][_0xdcd4('0x62')]=_0x22435c['id'];if(_0x5a60cb['query'][_0xdcd4('0x40')]){_0x36eb6d[_0xdcd4('0x3e')]=_['merge'](_0x36eb6d['where'],{'$or':_['map'](_0x36eb6d[_0xdcd4('0x3a')],function(_0x5e2085){var _0x5dc68d={};_0x5dc68d[_0x5e2085]={'$like':'%'+_0x5a60cb[_0xdcd4('0x37')]['filter']+'%'};return _0x5dc68d;})});}_0x36eb6d=_[_0xdcd4('0x43')]({},_0x36eb6d,_0x5a60cb['options']);return db['CmHopperHistory'][_0xdcd4('0x24')]({'where':_0x36eb6d[_0xdcd4('0x3e')]})[_0xdcd4('0x2a')](function(_0x4d2b28){_0x11f15d['count']=_0x4d2b28;if(_0x5a60cb[_0xdcd4('0x37')][_0xdcd4('0x45')]){_0x36eb6d[_0xdcd4('0x46')]=[{'all':!![]}];}return db[_0xdcd4('0x63')]['findAll'](_0x36eb6d);})[_0xdcd4('0x2a')](function(_0x4ddc72){_0x11f15d[_0xdcd4('0x60')]=_0x4ddc72;return _0x11f15d;});}})['then'](respondWithFilteredResult(_0x3e4f01,_0x36eb6d))[_0xdcd4('0x47')](handleError(_0x3e4f01,null));};exports[_0xdcd4('0x64')]=function(_0x3060cf,_0xcf4b9c,_0x1691bc){var _0x4b8209={'raw':!![],'where':{}};var _0x1d18c2={};var _0x5b4fa3={'count':0x0,'rows':[]};return db[_0xdcd4('0x32')]['findOne']({'where':{'id':_0x3060cf[_0xdcd4('0x49')]['id']}})[_0xdcd4('0x2a')](handleEntityNotFound(_0xcf4b9c,null))['then'](function(_0xbcb5c1){if(_0xbcb5c1){_0x1d18c2[_0xdcd4('0x36')]=_['keys'](db[_0xdcd4('0x65')][_0xdcd4('0x33')]);_0x1d18c2[_0xdcd4('0x37')]=_['keys'](_0x3060cf[_0xdcd4('0x37')]);_0x1d18c2['filters']=_[_0xdcd4('0x39')](_0x1d18c2[_0xdcd4('0x36')],_0x1d18c2['query']);_0x4b8209[_0xdcd4('0x3a')]=_[_0xdcd4('0x39')](_0x1d18c2[_0xdcd4('0x36')],qs[_0xdcd4('0x3b')](_0x3060cf[_0xdcd4('0x37')][_0xdcd4('0x3b')]));_0x4b8209[_0xdcd4('0x3a')]=_0x4b8209[_0xdcd4('0x3a')][_0xdcd4('0x3c')]?_0x4b8209[_0xdcd4('0x3a')]:_0x1d18c2[_0xdcd4('0x36')];if(!_0x3060cf[_0xdcd4('0x37')][_0xdcd4('0x5c')]('nolimit')){_0x4b8209[_0xdcd4('0x23')]=qs['limit'](_0x3060cf[_0xdcd4('0x37')][_0xdcd4('0x23')]);_0x4b8209[_0xdcd4('0x21')]=qs[_0xdcd4('0x21')](_0x3060cf['query'][_0xdcd4('0x21')]);}_0x4b8209[_0xdcd4('0x5d')]=qs[_0xdcd4('0x5e')](_0x3060cf[_0xdcd4('0x37')][_0xdcd4('0x5e')]);_0x4b8209[_0xdcd4('0x3e')]=qs[_0xdcd4('0x38')](_[_0xdcd4('0x3f')](_0x3060cf[_0xdcd4('0x37')],_0x1d18c2[_0xdcd4('0x38')]));_0x4b8209[_0xdcd4('0x3e')][_0xdcd4('0x62')]=_0xbcb5c1['id'];if(_0x3060cf[_0xdcd4('0x37')][_0xdcd4('0x40')]){_0x4b8209[_0xdcd4('0x3e')]=_[_0xdcd4('0x43')](_0x4b8209['where'],{'$or':_[_0xdcd4('0x31')](_0x4b8209[_0xdcd4('0x3a')],function(_0x48606b){var _0x47acdd={};_0x47acdd[_0x48606b]={'$like':'%'+_0x3060cf['query']['filter']+'%'};return _0x47acdd;})});}_0x4b8209=_[_0xdcd4('0x43')]({},_0x4b8209,_0x3060cf[_0xdcd4('0x44')]);return db['CmHopperFinal'][_0xdcd4('0x24')]({'where':_0x4b8209['where']})[_0xdcd4('0x2a')](function(_0x2f2c6a){_0x5b4fa3[_0xdcd4('0x24')]=_0x2f2c6a;if(_0x3060cf[_0xdcd4('0x37')][_0xdcd4('0x45')]){_0x4b8209[_0xdcd4('0x46')]=[{'all':!![]}];}return db[_0xdcd4('0x65')][_0xdcd4('0x5f')](_0x4b8209);})[_0xdcd4('0x2a')](function(_0x71504a){_0x5b4fa3[_0xdcd4('0x60')]=_0x71504a;return _0x5b4fa3;});}})['then'](respondWithFilteredResult(_0xcf4b9c,_0x4b8209))[_0xdcd4('0x47')](handleError(_0xcf4b9c,null));};exports[_0xdcd4('0x66')]=function(_0x20c3a8,_0xbb14b4,_0xec7fbc){var _0xeae6ca={'raw':!![],'where':{}};var _0x5088ca={};var _0x2b62b2={'count':0x0,'rows':[]};return db[_0xdcd4('0x32')][_0xdcd4('0x5a')]({'where':{'id':_0x20c3a8[_0xdcd4('0x49')]['id']}})['then'](handleEntityNotFound(_0xbb14b4,null))[_0xdcd4('0x2a')](function(_0x50fc66){if(_0x50fc66){_0x5088ca['model']=_['keys'](db[_0xdcd4('0x67')][_0xdcd4('0x33')]);_0x5088ca[_0xdcd4('0x37')]=_['keys'](_0x20c3a8['query']);_0x5088ca[_0xdcd4('0x38')]=_['intersection'](_0x5088ca[_0xdcd4('0x36')],_0x5088ca[_0xdcd4('0x37')]);_0xeae6ca[_0xdcd4('0x3a')]=_[_0xdcd4('0x39')](_0x5088ca[_0xdcd4('0x36')],qs[_0xdcd4('0x3b')](_0x20c3a8['query']['fields']));_0xeae6ca[_0xdcd4('0x3a')]=_0xeae6ca[_0xdcd4('0x3a')][_0xdcd4('0x3c')]?_0xeae6ca[_0xdcd4('0x3a')]:_0x5088ca[_0xdcd4('0x36')];if(!_0x20c3a8['query'][_0xdcd4('0x5c')](_0xdcd4('0x3d'))){_0xeae6ca[_0xdcd4('0x23')]=qs[_0xdcd4('0x23')](_0x20c3a8['query'][_0xdcd4('0x23')]);_0xeae6ca['offset']=qs[_0xdcd4('0x21')](_0x20c3a8['query'][_0xdcd4('0x21')]);}_0xeae6ca[_0xdcd4('0x5d')]=qs[_0xdcd4('0x5e')](_0x20c3a8[_0xdcd4('0x37')][_0xdcd4('0x5e')]);_0xeae6ca[_0xdcd4('0x3e')]=qs[_0xdcd4('0x38')](_[_0xdcd4('0x3f')](_0x20c3a8[_0xdcd4('0x37')],_0x5088ca[_0xdcd4('0x38')]));_0xeae6ca[_0xdcd4('0x3e')][_0xdcd4('0x62')]=_0x50fc66['id'];if(_0x20c3a8['query'][_0xdcd4('0x40')]){_0xeae6ca['where']=_['merge'](_0xeae6ca['where'],{'$or':_[_0xdcd4('0x31')](_0xeae6ca['attributes'],function(_0x490942){var _0x31f8f6={};_0x31f8f6[_0x490942]={'$like':'%'+_0x20c3a8['query'][_0xdcd4('0x40')]+'%'};return _0x31f8f6;})});}_0xeae6ca=_['merge']({},_0xeae6ca,_0x20c3a8[_0xdcd4('0x44')]);return db['CmHopperBlack'][_0xdcd4('0x24')]({'where':_0xeae6ca[_0xdcd4('0x3e')]})['then'](function(_0x5ee617){_0x2b62b2[_0xdcd4('0x24')]=_0x5ee617;if(_0x20c3a8[_0xdcd4('0x37')]['includeAll']){_0xeae6ca[_0xdcd4('0x46')]=[{'all':!![]}];}return db[_0xdcd4('0x67')][_0xdcd4('0x5f')](_0xeae6ca);})[_0xdcd4('0x2a')](function(_0x1c541c){_0x2b62b2[_0xdcd4('0x60')]=_0x1c541c;return _0x2b62b2;});}})[_0xdcd4('0x2a')](respondWithFilteredResult(_0xbb14b4,_0xeae6ca))[_0xdcd4('0x47')](handleError(_0xbb14b4,null));};exports[_0xdcd4('0x68')]=function(_0x21c063,_0x1b7a1c,_0x200a57){var _0x284285={};var _0x24a667={};var _0x90b65f;var _0x4d3413;return db['Campaign'][_0xdcd4('0x5a')]({'where':{'id':_0x21c063['params']['id']}})[_0xdcd4('0x2a')](handleEntityNotFound(_0x1b7a1c,null))[_0xdcd4('0x2a')](function(_0x20b053){if(_0x20b053){_0x90b65f=_0x20b053;_0x24a667[_0xdcd4('0x36')]=_['keys'](db[_0xdcd4('0x69')]['rawAttributes']);_0x24a667[_0xdcd4('0x37')]=_['keys'](_0x21c063[_0xdcd4('0x37')]);_0x24a667[_0xdcd4('0x38')]=_['intersection'](_0x24a667[_0xdcd4('0x36')],_0x24a667[_0xdcd4('0x37')]);_0x284285['attributes']=_[_0xdcd4('0x39')](_0x24a667['model'],qs[_0xdcd4('0x3b')](_0x21c063[_0xdcd4('0x37')][_0xdcd4('0x3b')]));_0x284285[_0xdcd4('0x3a')]=_0x284285[_0xdcd4('0x3a')][_0xdcd4('0x3c')]?_0x284285[_0xdcd4('0x3a')]:_0x24a667[_0xdcd4('0x36')];_0x284285[_0xdcd4('0x5d')]=qs[_0xdcd4('0x5e')](_0x21c063['query'][_0xdcd4('0x5e')]);_0x284285[_0xdcd4('0x3e')]=qs[_0xdcd4('0x38')](_[_0xdcd4('0x3f')](_0x21c063['query'],_0x24a667['filters']));if(_0x21c063['query'][_0xdcd4('0x40')]){_0x284285[_0xdcd4('0x3e')]=_['merge'](_0x284285[_0xdcd4('0x3e')],{'$or':_[_0xdcd4('0x31')](_0x284285[_0xdcd4('0x3a')],function(_0x321767){var _0x489f09={};_0x489f09[_0x321767]={'$like':'%'+_0x21c063['query'][_0xdcd4('0x40')]+'%'};return _0x489f09;})});}_0x284285=_[_0xdcd4('0x43')]({},_0x284285,_0x21c063[_0xdcd4('0x44')]);return _0x90b65f[_0xdcd4('0x68')](_0x284285);}})[_0xdcd4('0x2a')](function(_0x3e21d1){if(_0x3e21d1){_0x4d3413=_0x3e21d1[_0xdcd4('0x3c')];if(!_0x21c063[_0xdcd4('0x37')][_0xdcd4('0x5c')](_0xdcd4('0x3d'))){_0x284285[_0xdcd4('0x23')]=qs[_0xdcd4('0x23')](_0x21c063['query'][_0xdcd4('0x23')]);_0x284285['offset']=qs['offset'](_0x21c063['query']['offset']);}return _0x90b65f['getLists'](_0x284285);}})[_0xdcd4('0x2a')](function(_0x134336){if(_0x134336){return _0x134336?{'count':_0x4d3413,'rows':_0x134336}:null;}})[_0xdcd4('0x2a')](respondWithResult(_0x1b7a1c,null))[_0xdcd4('0x47')](handleError(_0x1b7a1c,null));};exports['addLists']=function(_0x4f9012,_0x32d998,_0x1ed38c){var _0x429a22,_0x38dd8a;var _0x86ab25=[];var _0x41d0fc=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');return db[_0xdcd4('0x32')]['find']({'where':{'id':_0x4f9012[_0xdcd4('0x49')]['id']}})[_0xdcd4('0x2a')](handleEntityNotFound(_0x32d998,null))['then'](function(_0x1ad268){if(_0x1ad268){_0x38dd8a=_0x1ad268;return _0x1ad268['addLists'](_0x4f9012[_0xdcd4('0x4d')][_0xdcd4('0x6a')],_['omit'](_0x4f9012['body'],[_0xdcd4('0x6a'),'id'])||{});}return null;})[_0xdcd4('0x6b')](function(_0x300987){var _0x51d4d1;var _0x1edd28;_0x429a22=_0x300987||[];var _0x4c08c6=[];if(_0x300987){for(var _0x27cc50=0x0;_0x27cc50<_0x300987[_0xdcd4('0x3c')];_0x27cc50+=0x1){var _0x2b012c=_0x300987[_0x27cc50][_0xdcd4('0x2c')]({'plain':!![]});_0x38dd8a[_0xdcd4('0x6c')]=_0x4f9012[_0xdcd4('0x4d')]['dialCheckDuplicateType']?_0x4f9012[_0xdcd4('0x4d')][_0xdcd4('0x6c')]:_0x38dd8a[_0xdcd4('0x6c')];switch(_0x38dd8a[_0xdcd4('0x6c')]){case _0xdcd4('0x6d'):_0x51d4d1=squel[_0xdcd4('0x6e')]()[_0xdcd4('0x6f')](_0xdcd4('0x70'))['fromQuery']([_0xdcd4('0x71'),'scheduledAt',_0xdcd4('0x72'),_0xdcd4('0x73'),_0xdcd4('0x62'),_0xdcd4('0x56'),_0xdcd4('0x57')],squel['select']()['field']('phone',_0xdcd4('0x71'))['field']('NOW()',_0xdcd4('0x74'))[_0xdcd4('0x75')]('id','ContactId')['field'](_0x2b012c[_0xdcd4('0x76')][_0xdcd4('0x77')](),_0xdcd4('0x73'))[_0xdcd4('0x75')](_0x4f9012[_0xdcd4('0x49')]['id'][_0xdcd4('0x77')](),_0xdcd4('0x62'))[_0xdcd4('0x75')]('\x27'+_0x41d0fc+'\x27',_0xdcd4('0x56'))[_0xdcd4('0x75')]('\x27'+_0x41d0fc+'\x27','updatedAt')['from']('cm_contacts')['where']('deletedAt\x20IS\x20NULL')['where'](_0xdcd4('0x78'),_0x2b012c[_0xdcd4('0x76')][_0xdcd4('0x77')]())['where']('phone\x20IS\x20NOT\x20NULL')[_0xdcd4('0x3e')](_0xdcd4('0x79'),squel[_0xdcd4('0x7a')]()[_0xdcd4('0x75')](_0xdcd4('0x7b'))['from'](_0xdcd4('0x7c'))[_0xdcd4('0x3e')](_0xdcd4('0x7d'),_0x4f9012[_0xdcd4('0x49')]['id'][_0xdcd4('0x77')]()))[_0xdcd4('0x3e')](_0xdcd4('0x79'),squel[_0xdcd4('0x7a')]()[_0xdcd4('0x75')](_0xdcd4('0x7e'))[_0xdcd4('0x7f')](_0xdcd4('0x70'))[_0xdcd4('0x3e')](_0xdcd4('0x7d'),_0x4f9012[_0xdcd4('0x49')]['id']['toString']())))[_0xdcd4('0x77')]();break;case _0xdcd4('0x80'):_0x51d4d1=squel[_0xdcd4('0x6e')]()[_0xdcd4('0x6f')](_0xdcd4('0x70'))[_0xdcd4('0x81')]([_0xdcd4('0x71'),'scheduledAt',_0xdcd4('0x72'),'ListId',_0xdcd4('0x62'),_0xdcd4('0x56'),'updatedAt'],squel[_0xdcd4('0x7a')]()['field'](_0xdcd4('0x71'),_0xdcd4('0x71'))[_0xdcd4('0x75')]('NOW()',_0xdcd4('0x74'))[_0xdcd4('0x75')]('id',_0xdcd4('0x72'))[_0xdcd4('0x75')](_0x2b012c[_0xdcd4('0x76')]['toString'](),_0xdcd4('0x73'))[_0xdcd4('0x75')](_0x4f9012[_0xdcd4('0x49')]['id'][_0xdcd4('0x77')](),_0xdcd4('0x62'))[_0xdcd4('0x75')]('\x27'+_0x41d0fc+'\x27',_0xdcd4('0x56'))['field']('\x27'+_0x41d0fc+'\x27',_0xdcd4('0x57'))[_0xdcd4('0x7f')](_0xdcd4('0x82'))[_0xdcd4('0x3e')](_0xdcd4('0x83'))[_0xdcd4('0x3e')](_0xdcd4('0x78'),_0x2b012c['CmListId']['toString']())[_0xdcd4('0x3e')](_0xdcd4('0x84'))['where'](_0xdcd4('0x79'),squel[_0xdcd4('0x7a')]()['field'](_0xdcd4('0x7e'))[_0xdcd4('0x7f')](_0xdcd4('0x70'))['where']('CampaignId\x20=\x20?',_0x4f9012['params']['id'][_0xdcd4('0x77')]())))['toString']();break;default:_0x51d4d1=squel[_0xdcd4('0x6e')]()[_0xdcd4('0x6f')]('cm_hopper')['fromQuery']([_0xdcd4('0x71'),_0xdcd4('0x74'),_0xdcd4('0x72'),_0xdcd4('0x73'),_0xdcd4('0x62'),_0xdcd4('0x56'),_0xdcd4('0x57')],squel[_0xdcd4('0x7a')]()['field'](_0xdcd4('0x71'),_0xdcd4('0x71'))[_0xdcd4('0x75')](_0xdcd4('0x85'),_0xdcd4('0x74'))[_0xdcd4('0x75')]('id',_0xdcd4('0x72'))[_0xdcd4('0x75')](_0x2b012c['CmListId']['toString'](),'ListId')['field'](_0x4f9012[_0xdcd4('0x49')]['id']['toString'](),_0xdcd4('0x62'))[_0xdcd4('0x75')]('\x27'+_0x41d0fc+'\x27',_0xdcd4('0x56'))[_0xdcd4('0x75')]('\x27'+_0x41d0fc+'\x27',_0xdcd4('0x57'))[_0xdcd4('0x7f')]('cm_contacts')[_0xdcd4('0x3e')](_0xdcd4('0x83'))[_0xdcd4('0x3e')](_0xdcd4('0x78'),_0x2b012c[_0xdcd4('0x76')][_0xdcd4('0x77')]())[_0xdcd4('0x3e')](_0xdcd4('0x84')))[_0xdcd4('0x77')]();}_0x1edd28=squel['insert']()[_0xdcd4('0x6f')](_0xdcd4('0x86'))[_0xdcd4('0x81')]([_0xdcd4('0x87'),'scheduledAt',_0xdcd4('0x71'),'OrderBy',_0xdcd4('0x56'),_0xdcd4('0x57')],squel[_0xdcd4('0x7a')]()[_0xdcd4('0x75')]('h.id','id')[_0xdcd4('0x75')](_0xdcd4('0x85'),_0xdcd4('0x74'))['field']('ci.item','phone')[_0xdcd4('0x75')]('ci.OrderBY',_0xdcd4('0x88'))[_0xdcd4('0x75')]('\x27'+_0x41d0fc+'\x27',_0xdcd4('0x56'))[_0xdcd4('0x75')]('\x27'+_0x41d0fc+'\x27',_0xdcd4('0x57'))[_0xdcd4('0x7f')](_0xdcd4('0x89'),'ci')[_0xdcd4('0x8a')](_0xdcd4('0x70'),'h',_0xdcd4('0x8b'))[_0xdcd4('0x3e')](_0xdcd4('0x8c'),_0x2b012c[_0xdcd4('0x76')][_0xdcd4('0x77')]())[_0xdcd4('0x3e')](_0xdcd4('0x8d'),_0x4f9012[_0xdcd4('0x49')]['id'][_0xdcd4('0x77')]())[_0xdcd4('0x3e')](_0xdcd4('0x8e'),_0x41d0fc))['toString']();_0x4c08c6[_0xdcd4('0x8f')](db[_0xdcd4('0x90')]['query'](_0x51d4d1));_0x86ab25[_0xdcd4('0x8f')](db[_0xdcd4('0x90')][_0xdcd4('0x37')](_0x1edd28));}return BPromise[_0xdcd4('0x91')](_0x4c08c6);}})[_0xdcd4('0x2a')](function(){return BPromise['all'](_0x86ab25);})['then'](function(){return _0x429a22;})['then'](respondWithResult(_0x32d998,null))[_0xdcd4('0x47')](handleError(_0x32d998,null));};exports['removeLists']=function(_0xae10e,_0x13a125,_0x2788ce){return db[_0xdcd4('0x32')][_0xdcd4('0x4b')]({'where':{'id':_0xae10e[_0xdcd4('0x49')]['id']}})[_0xdcd4('0x2a')](handleEntityNotFound(_0x13a125,null))[_0xdcd4('0x2a')](function(_0x194306){if(_0x194306){return _0x194306[_0xdcd4('0x92')](_0xae10e[_0xdcd4('0x37')][_0xdcd4('0x6a')]);}})[_0xdcd4('0x2a')](function(_0x343557){if(_0x343557){return db[_0xdcd4('0x5b')][_0xdcd4('0x2b')]({'where':{'ListId':_0xae10e[_0xdcd4('0x37')][_0xdcd4('0x6a')],'CampaignId':_0xae10e[_0xdcd4('0x49')]['id']}})[_0xdcd4('0x2a')](function(){return _0x343557;});}})[_0xdcd4('0x2a')](respondWithStatusCode(_0x13a125,null))[_0xdcd4('0x47')](handleError(_0x13a125,null));};exports[_0xdcd4('0x93')]=function(_0x4b1e67,_0x1ed2c2,_0x4b0223){var _0x425686={};var _0x297ab2={};var _0x56807e;var _0x39489f;return db['Campaign']['findOne']({'where':{'id':_0x4b1e67[_0xdcd4('0x49')]['id']}})[_0xdcd4('0x2a')](handleEntityNotFound(_0x1ed2c2,null))['then'](function(_0x48160d){if(_0x48160d){_0x56807e=_0x48160d;_0x297ab2[_0xdcd4('0x36')]=_['keys'](db['CmList'][_0xdcd4('0x33')]);_0x297ab2[_0xdcd4('0x37')]=_[_0xdcd4('0x4a')](_0x4b1e67[_0xdcd4('0x37')]);_0x297ab2[_0xdcd4('0x38')]=_[_0xdcd4('0x39')](_0x297ab2[_0xdcd4('0x36')],_0x297ab2[_0xdcd4('0x37')]);_0x425686[_0xdcd4('0x3a')]=_[_0xdcd4('0x39')](_0x297ab2['model'],qs[_0xdcd4('0x3b')](_0x4b1e67[_0xdcd4('0x37')][_0xdcd4('0x3b')]));_0x425686[_0xdcd4('0x3a')]=_0x425686[_0xdcd4('0x3a')][_0xdcd4('0x3c')]?_0x425686['attributes']:_0x297ab2['model'];_0x425686['order']=qs[_0xdcd4('0x5e')](_0x4b1e67[_0xdcd4('0x37')][_0xdcd4('0x5e')]);_0x425686[_0xdcd4('0x3e')]=qs[_0xdcd4('0x38')](_['pick'](_0x4b1e67[_0xdcd4('0x37')],_0x297ab2[_0xdcd4('0x38')]));if(_0x4b1e67[_0xdcd4('0x37')][_0xdcd4('0x40')]){_0x425686['where']=_[_0xdcd4('0x43')](_0x425686[_0xdcd4('0x3e')],{'$or':_['map'](_0x425686[_0xdcd4('0x3a')],function(_0x5c9aea){var _0xe69bba={};_0xe69bba[_0x5c9aea]={'$like':'%'+_0x4b1e67[_0xdcd4('0x37')][_0xdcd4('0x40')]+'%'};return _0xe69bba;})});}_0x425686=_[_0xdcd4('0x43')]({},_0x425686,_0x4b1e67[_0xdcd4('0x44')]);return _0x56807e['getBlackLists'](_0x425686);}})['then'](function(_0xb05f58){if(_0xb05f58){_0x39489f=_0xb05f58[_0xdcd4('0x3c')];if(!_0x4b1e67[_0xdcd4('0x37')][_0xdcd4('0x5c')](_0xdcd4('0x3d'))){_0x425686[_0xdcd4('0x23')]=qs[_0xdcd4('0x23')](_0x4b1e67['query'][_0xdcd4('0x23')]);_0x425686[_0xdcd4('0x21')]=qs[_0xdcd4('0x21')](_0x4b1e67[_0xdcd4('0x37')][_0xdcd4('0x21')]);}return _0x56807e[_0xdcd4('0x93')](_0x425686);}})[_0xdcd4('0x2a')](function(_0x5c5701){if(_0x5c5701){return _0x5c5701?{'count':_0x39489f,'rows':_0x5c5701}:null;}})[_0xdcd4('0x2a')](respondWithResult(_0x1ed2c2,null))[_0xdcd4('0x47')](handleError(_0x1ed2c2,null));};exports[_0xdcd4('0x94')]=function(_0x34ac49,_0x254534,_0x39a9f7){var _0x28c9ed,_0x25ad01;var _0x27a265=[];var _0x3cb2b7=moment()[_0xdcd4('0x95')](_0xdcd4('0x96'));return db[_0xdcd4('0x32')][_0xdcd4('0x4b')]({'where':{'id':_0x34ac49[_0xdcd4('0x49')]['id']}})['then'](handleEntityNotFound(_0x254534,null))[_0xdcd4('0x2a')](function(_0x2af907){if(_0x2af907){_0x25ad01=_0x2af907;return _0x2af907['addBlackLists'](_0x34ac49['body'][_0xdcd4('0x6a')],_[_0xdcd4('0x55')](_0x34ac49['body'],[_0xdcd4('0x6a'),'id'])||{});}return null;})['spread'](function(_0x1355c9){var _0x1d2275;var _0x4a71bb;_0x28c9ed=_0x1355c9||[];var _0x949c7a=[];if(_0x1355c9){for(var _0x877f3b=0x0;_0x877f3b<_0x1355c9[_0xdcd4('0x3c')];_0x877f3b+=0x1){var _0x58a1d=_0x1355c9[_0x877f3b][_0xdcd4('0x2c')]({'plain':!![]});_0x1d2275=squel['insert']()[_0xdcd4('0x6f')]('cm_hopper_black')[_0xdcd4('0x81')]([_0xdcd4('0x71'),_0xdcd4('0x72'),_0xdcd4('0x73'),_0xdcd4('0x62'),_0xdcd4('0x56'),_0xdcd4('0x57')],squel[_0xdcd4('0x7a')]()[_0xdcd4('0x75')](_0xdcd4('0x71'),_0xdcd4('0x71'))[_0xdcd4('0x75')]('id',_0xdcd4('0x72'))[_0xdcd4('0x75')](_0x58a1d[_0xdcd4('0x76')][_0xdcd4('0x77')](),_0xdcd4('0x73'))[_0xdcd4('0x75')](_0x34ac49[_0xdcd4('0x49')]['id'][_0xdcd4('0x77')](),_0xdcd4('0x62'))[_0xdcd4('0x75')](_0xdcd4('0x85'),'createdAt')[_0xdcd4('0x75')](_0xdcd4('0x85'),_0xdcd4('0x57'))[_0xdcd4('0x7f')](_0xdcd4('0x82'))['where'](_0xdcd4('0x83'))[_0xdcd4('0x3e')](_0xdcd4('0x78'),_0x58a1d[_0xdcd4('0x76')][_0xdcd4('0x77')]())['where'](_0xdcd4('0x84')))[_0xdcd4('0x77')]();_0x949c7a[_0xdcd4('0x8f')](db['sequelize']['query'](_0x1d2275));}return BPromise['all'](_0x949c7a);}})[_0xdcd4('0x2a')](function(){return _0x28c9ed;})[_0xdcd4('0x2a')](respondWithResult(_0x254534,null))[_0xdcd4('0x47')](handleError(_0x254534,null));};exports[_0xdcd4('0x97')]=function(_0x176a0d,_0xb3a822,_0x320c63){return db[_0xdcd4('0x32')][_0xdcd4('0x4b')]({'where':{'id':_0x176a0d[_0xdcd4('0x49')]['id']}})['then'](handleEntityNotFound(_0xb3a822,null))[_0xdcd4('0x2a')](function(_0x5e6226){if(_0x5e6226){return _0x5e6226[_0xdcd4('0x97')](_0x176a0d['query']['ids']);}})[_0xdcd4('0x2a')](function(_0x3341b7){if(_0x3341b7){return db['CmHopperBlack']['destroy']({'where':{'ListId':_0x176a0d[_0xdcd4('0x37')][_0xdcd4('0x6a')],'CampaignId':_0x176a0d['params']['id']}})[_0xdcd4('0x2a')](function(){return _0x3341b7;});}})[_0xdcd4('0x2a')](respondWithStatusCode(_0xb3a822,null))['catch'](handleError(_0xb3a822,null));};
\ No newline at end of file
index 9f4ef5a..89f5438 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(_0x7590ca,_0x486b4c){var _0x2e5b5f=function(_0x8e51d2){while(--_0x8e51d2){_0x7590ca['push'](_0x7590ca['shift']());}};_0x2e5b5f(++_0x486b4c);}(_0x7a54,0x106));var _0x47a5=function(_0x58356f,_0xf2d973){_0x58356f=_0x58356f-0x0;var _0x27945f=_0x7a54[_0x58356f];return _0x27945f;};'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(_0x40a85a,_0x5393c8){var _0x4c1213=function(_0x540e3c){while(--_0x540e3c){_0x40a85a['push'](_0x40a85a['shift']());}};_0x4c1213(++_0x5393c8);}(_0x7a54,0x106));var _0x47a5=function(_0xb036b,_0x3c60c4){_0xb036b=_0xb036b-0x0;var _0x117785=_0x7a54[_0xb036b];return _0x117785;};'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 191535c..aecec87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81d5=['Campaign','options','raw','where','attributes','limit','include','map','model','then','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','info','Campaign,\x20%s,\x20%s','request\x20sent','debug','Campaign,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetCampaign'];(function(_0x15bc81,_0x4d4f77){var _0x59440e=function(_0x1b60f2){while(--_0x1b60f2){_0x15bc81['push'](_0x15bc81['shift']());}};_0x59440e(++_0x4d4f77);}(_0x81d5,0x1ab));var _0x581d=function(_0x4203b0,_0x2d5664){_0x4203b0=_0x4203b0-0x0;var _0x5bba44=_0x81d5[_0x4203b0];return _0x5bba44;};'use strict';var _=require(_0x581d('0x0'));var util=require(_0x581d('0x1'));var moment=require('moment');var BPromise=require(_0x581d('0x2'));var rs=require(_0x581d('0x3'));var fs=require('fs');var Redis=require(_0x581d('0x4'));var db=require(_0x581d('0x5'))['db'];var utils=require(_0x581d('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x581d('0x7'));var jayson=require(_0x581d('0x8'));var client=jayson[_0x581d('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x16067b,_0x2f32bf,_0x43124c){return new BPromise(function(_0x497368,_0xf1a3b6){return client['request'](_0x16067b,_0x43124c)['then'](function(_0x5d8fa3){logger[_0x581d('0xa')](_0x581d('0xb'),_0x2f32bf,_0x581d('0xc'));logger[_0x581d('0xd')](_0x581d('0xe'),_0x2f32bf,'request\x20sent',JSON[_0x581d('0xf')](_0x5d8fa3));if(_0x5d8fa3[_0x581d('0x10')]){if(_0x5d8fa3[_0x581d('0x10')][_0x581d('0x11')]===0x1f4){logger[_0x581d('0x10')](_0x581d('0xb'),_0x2f32bf,_0x5d8fa3[_0x581d('0x10')][_0x581d('0x12')]);return _0xf1a3b6(_0x5d8fa3[_0x581d('0x10')][_0x581d('0x12')]);}logger['error'](_0x581d('0xb'),_0x2f32bf,_0x5d8fa3[_0x581d('0x10')]['message']);return _0x497368(_0x5d8fa3['error']['message']);}else{logger['info'](_0x581d('0xb'),_0x2f32bf,'request\x20sent');_0x497368(_0x5d8fa3[_0x581d('0x13')][_0x581d('0x12')]);}})['catch'](function(_0x1890d0){logger['error'](_0x581d('0xb'),_0x2f32bf,_0x1890d0);_0xf1a3b6(_0x1890d0);});});}exports[_0x581d('0x14')]=function(_0x1e059d){var _0x42f7db=this;return new Promise(function(_0x1f790f,_0x2cff0d){return db[_0x581d('0x15')]['findAll']({'raw':_0x1e059d[_0x581d('0x16')]?_0x1e059d[_0x581d('0x16')][_0x581d('0x17')]===undefined?!![]:![]:!![],'where':_0x1e059d[_0x581d('0x16')]?_0x1e059d[_0x581d('0x16')][_0x581d('0x18')]||null:null,'attributes':_0x1e059d[_0x581d('0x16')]?_0x1e059d[_0x581d('0x16')][_0x581d('0x19')]||null:null,'limit':_0x1e059d[_0x581d('0x16')]?_0x1e059d[_0x581d('0x16')][_0x581d('0x1a')]||null:null,'include':_0x1e059d['options']?_0x1e059d[_0x581d('0x16')][_0x581d('0x1b')]?_[_0x581d('0x1c')](_0x1e059d[_0x581d('0x16')][_0x581d('0x1b')],function(_0x4f7420){return{'model':db[_0x4f7420[_0x581d('0x1d')]],'as':_0x4f7420['as'],'attributes':_0x4f7420[_0x581d('0x19')],'include':_0x4f7420['include']?_[_0x581d('0x1c')](_0x4f7420[_0x581d('0x1b')],function(_0x2c8fdb){return{'model':db[_0x2c8fdb['model']],'as':_0x2c8fdb['as'],'attributes':_0x2c8fdb[_0x581d('0x19')],'include':_0x2c8fdb[_0x581d('0x1b')]?_[_0x581d('0x1c')](_0x2c8fdb[_0x581d('0x1b')],function(_0x38f213){return{'model':db[_0x38f213[_0x581d('0x1d')]],'as':_0x38f213['as'],'attributes':_0x38f213['attributes']};}):[]};}):[]};}):[]:[]})[_0x581d('0x1e')](function(_0x2b75d8){logger[_0x581d('0xa')]('GetCampaign',_0x1e059d);logger['debug']('GetCampaign',_0x1e059d,JSON['stringify'](_0x2b75d8));_0x1f790f(_0x2b75d8);})[_0x581d('0x1f')](function(_0x266a2b){logger[_0x581d('0x10')](_0x581d('0x14'),_0x266a2b[_0x581d('0x12')],_0x1e059d);_0x2cff0d(_0x42f7db[_0x581d('0x10')](0x1f4,_0x266a2b[_0x581d('0x12')]));});});};
\ No newline at end of file
+var _0xc678=['request\x20sent','debug','Campaign,\x20%s,\x20%s,\x20%s','stringify','error','code','Campaign,\x20%s,\x20%s','message','result','catch','GetCampaign','Campaign','options','raw','where','attributes','limit','include','map','model','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','info'];(function(_0x459423,_0x3416a8){var _0x42ed14=function(_0x1d4f69){while(--_0x1d4f69){_0x459423['push'](_0x459423['shift']());}};_0x42ed14(++_0x3416a8);}(_0xc678,0x1b4));var _0x8c67=function(_0x4b8d0e,_0xc438f3){_0x4b8d0e=_0x4b8d0e-0x0;var _0x27e672=_0xc678[_0x4b8d0e];return _0x27e672;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x8c67('0x0'));var BPromise=require(_0x8c67('0x1'));var rs=require(_0x8c67('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8c67('0x3'))['db'];var utils=require(_0x8c67('0x4'));var logger=require(_0x8c67('0x5'))(_0x8c67('0x6'));var config=require('../../config/environment');var jayson=require(_0x8c67('0x7'));var client=jayson['client'][_0x8c67('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1b4ceb,_0x4c2ffe,_0x207de1){return new BPromise(function(_0x22d7e4,_0x41ac88){return client[_0x8c67('0x9')](_0x1b4ceb,_0x207de1)[_0x8c67('0xa')](function(_0x5bac97){logger[_0x8c67('0xb')]('Campaign,\x20%s,\x20%s',_0x4c2ffe,_0x8c67('0xc'));logger[_0x8c67('0xd')](_0x8c67('0xe'),_0x4c2ffe,'request\x20sent',JSON[_0x8c67('0xf')](_0x5bac97));if(_0x5bac97[_0x8c67('0x10')]){if(_0x5bac97[_0x8c67('0x10')][_0x8c67('0x11')]===0x1f4){logger['error'](_0x8c67('0x12'),_0x4c2ffe,_0x5bac97['error']['message']);return _0x41ac88(_0x5bac97['error']['message']);}logger[_0x8c67('0x10')]('Campaign,\x20%s,\x20%s',_0x4c2ffe,_0x5bac97[_0x8c67('0x10')]['message']);return _0x22d7e4(_0x5bac97[_0x8c67('0x10')][_0x8c67('0x13')]);}else{logger[_0x8c67('0xb')](_0x8c67('0x12'),_0x4c2ffe,'request\x20sent');_0x22d7e4(_0x5bac97[_0x8c67('0x14')][_0x8c67('0x13')]);}})[_0x8c67('0x15')](function(_0x1bae2f){logger['error']('Campaign,\x20%s,\x20%s',_0x4c2ffe,_0x1bae2f);_0x41ac88(_0x1bae2f);});});}exports[_0x8c67('0x16')]=function(_0x3e9ab8){var _0x215d52=this;return new Promise(function(_0x544717,_0xe7f0b6){return db[_0x8c67('0x17')]['findAll']({'raw':_0x3e9ab8[_0x8c67('0x18')]?_0x3e9ab8['options'][_0x8c67('0x19')]===undefined?!![]:![]:!![],'where':_0x3e9ab8[_0x8c67('0x18')]?_0x3e9ab8[_0x8c67('0x18')][_0x8c67('0x1a')]||null:null,'attributes':_0x3e9ab8[_0x8c67('0x18')]?_0x3e9ab8['options'][_0x8c67('0x1b')]||null:null,'limit':_0x3e9ab8[_0x8c67('0x18')]?_0x3e9ab8['options'][_0x8c67('0x1c')]||null:null,'include':_0x3e9ab8['options']?_0x3e9ab8[_0x8c67('0x18')][_0x8c67('0x1d')]?_[_0x8c67('0x1e')](_0x3e9ab8[_0x8c67('0x18')][_0x8c67('0x1d')],function(_0x5dc805){return{'model':db[_0x5dc805[_0x8c67('0x1f')]],'as':_0x5dc805['as'],'attributes':_0x5dc805[_0x8c67('0x1b')],'include':_0x5dc805[_0x8c67('0x1d')]?_[_0x8c67('0x1e')](_0x5dc805[_0x8c67('0x1d')],function(_0xf32c63){return{'model':db[_0xf32c63['model']],'as':_0xf32c63['as'],'attributes':_0xf32c63['attributes'],'include':_0xf32c63[_0x8c67('0x1d')]?_['map'](_0xf32c63['include'],function(_0x2e5d04){return{'model':db[_0x2e5d04[_0x8c67('0x1f')]],'as':_0x2e5d04['as'],'attributes':_0x2e5d04[_0x8c67('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3716e1){logger[_0x8c67('0xb')](_0x8c67('0x16'),_0x3e9ab8);logger[_0x8c67('0xd')]('GetCampaign',_0x3e9ab8,JSON[_0x8c67('0xf')](_0x3716e1));_0x544717(_0x3716e1);})[_0x8c67('0x15')](function(_0x502d2e){logger[_0x8c67('0x10')](_0x8c67('0x16'),_0x502d2e[_0x8c67('0x13')],_0x3e9ab8);_0xe7f0b6(_0x215d52[_0x8c67('0x10')](0x1f4,_0x502d2e['message']));});});};
\ No newline at end of file
index b820168..f9249e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a66=['connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./campaign.controller','/:id','isAuthenticated','get','getHoppers','/:id/hopper_histories','/:id/hopper_finals','getHopperFinals','/:id/hopper_black','/:id/blacklists','getBlackLists','post','create','/:id/clone','clone','/:id/lists','addLists','put','delete','destroy','removeLists','multer','util','path'];(function(_0x1e7739,_0x53c933){var _0x493c5b=function(_0x3b17d3){while(--_0x3b17d3){_0x1e7739['push'](_0x1e7739['shift']());}};_0x493c5b(++_0x53c933);}(_0x1a66,0x102));var _0x61a6=function(_0x224e32,_0x31f1ec){_0x224e32=_0x224e32-0x0;var _0x891ab9=_0x1a66[_0x224e32];return _0x891ab9;};'use strict';var multer=require(_0x61a6('0x0'));var util=require(_0x61a6('0x1'));var path=require(_0x61a6('0x2'));var timeout=require(_0x61a6('0x3'));var express=require(_0x61a6('0x4'));var router=express[_0x61a6('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x61a6('0x6'));var config=require(_0x61a6('0x7'));var controller=require(_0x61a6('0x8'));router['get']('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x61a6('0x9'),auth[_0x61a6('0xa')](),controller['show']);router[_0x61a6('0xb')]('/:id/hoppers',auth[_0x61a6('0xa')](),controller[_0x61a6('0xc')]);router['get'](_0x61a6('0xd'),auth['isAuthenticated'](),controller['getHopperHistories']);router[_0x61a6('0xb')](_0x61a6('0xe'),auth[_0x61a6('0xa')](),controller[_0x61a6('0xf')]);router['get'](_0x61a6('0x10'),auth[_0x61a6('0xa')](),controller['getHopperBlacks']);router[_0x61a6('0xb')]('/:id/lists',auth[_0x61a6('0xa')](),controller['getLists']);router['get'](_0x61a6('0x11'),auth[_0x61a6('0xa')](),controller[_0x61a6('0x12')]);router[_0x61a6('0x13')]('/',auth[_0x61a6('0xa')](),controller[_0x61a6('0x14')]);router[_0x61a6('0x13')](_0x61a6('0x15'),auth['isAuthenticated'](),controller[_0x61a6('0x16')]);router['post'](_0x61a6('0x17'),auth[_0x61a6('0xa')](),controller[_0x61a6('0x18')]);router[_0x61a6('0x13')](_0x61a6('0x11'),auth[_0x61a6('0xa')](),controller['addBlackLists']);router[_0x61a6('0x19')](_0x61a6('0x9'),auth[_0x61a6('0xa')](),controller['update']);router[_0x61a6('0x1a')]('/:id',auth[_0x61a6('0xa')](),controller[_0x61a6('0x1b')]);router[_0x61a6('0x1a')](_0x61a6('0x17'),auth['isAuthenticated'](),controller[_0x61a6('0x1c')]);router[_0x61a6('0x1a')]('/:id/blacklists',auth[_0x61a6('0xa')](),controller['removeBlackLists']);module['exports']=router;
\ No newline at end of file
+var _0x146a=['getBlackLists','post','create','/:id/clone','clone','addLists','put','update','destroy','delete','removeLists','removeBlackLists','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./campaign.controller','get','isAuthenticated','index','/:id','show','/:id/hoppers','getHoppers','getHopperHistories','/:id/hopper_finals','getHopperFinals','getHopperBlacks','/:id/lists','getLists','/:id/blacklists'];(function(_0x577674,_0x4e508d){var _0x1c6b90=function(_0x3e6bde){while(--_0x3e6bde){_0x577674['push'](_0x577674['shift']());}};_0x1c6b90(++_0x4e508d);}(_0x146a,0x9d));var _0xa146=function(_0xcba4b6,_0x1ecf6a){_0xcba4b6=_0xcba4b6-0x0;var _0x2bd8bf=_0x146a[_0xcba4b6];return _0x2bd8bf;};'use strict';var multer=require(_0xa146('0x0'));var util=require(_0xa146('0x1'));var path=require('path');var timeout=require(_0xa146('0x2'));var express=require(_0xa146('0x3'));var router=express[_0xa146('0x4')]();var fs_extra=require(_0xa146('0x5'));var auth=require(_0xa146('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xa146('0x7'));var controller=require(_0xa146('0x8'));router[_0xa146('0x9')]('/',auth[_0xa146('0xa')](),controller[_0xa146('0xb')]);router['get'](_0xa146('0xc'),auth[_0xa146('0xa')](),controller[_0xa146('0xd')]);router[_0xa146('0x9')](_0xa146('0xe'),auth[_0xa146('0xa')](),controller[_0xa146('0xf')]);router[_0xa146('0x9')]('/:id/hopper_histories',auth[_0xa146('0xa')](),controller[_0xa146('0x10')]);router[_0xa146('0x9')](_0xa146('0x11'),auth[_0xa146('0xa')](),controller[_0xa146('0x12')]);router['get']('/:id/hopper_black',auth[_0xa146('0xa')](),controller[_0xa146('0x13')]);router[_0xa146('0x9')](_0xa146('0x14'),auth[_0xa146('0xa')](),controller[_0xa146('0x15')]);router[_0xa146('0x9')](_0xa146('0x16'),auth[_0xa146('0xa')](),controller[_0xa146('0x17')]);router[_0xa146('0x18')]('/',auth['isAuthenticated'](),controller[_0xa146('0x19')]);router['post'](_0xa146('0x1a'),auth[_0xa146('0xa')](),controller[_0xa146('0x1b')]);router[_0xa146('0x18')](_0xa146('0x14'),auth[_0xa146('0xa')](),controller[_0xa146('0x1c')]);router[_0xa146('0x18')](_0xa146('0x16'),auth[_0xa146('0xa')](),controller['addBlackLists']);router[_0xa146('0x1d')](_0xa146('0xc'),auth[_0xa146('0xa')](),controller[_0xa146('0x1e')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xa146('0x1f')]);router[_0xa146('0x20')]('/:id/lists',auth[_0xa146('0xa')](),controller[_0xa146('0x21')]);router[_0xa146('0x20')](_0xa146('0x16'),auth[_0xa146('0xa')](),controller[_0xa146('0x22')]);module[_0xa146('0x23')]=router;
\ No newline at end of file
index d7ccf9b..72e650b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcdc8=['STRING','VIRTUAL','sequelize'];(function(_0x300b8a,_0x44b9eb){var _0x3d9cc0=function(_0x3817ee){while(--_0x3817ee){_0x300b8a['push'](_0x300b8a['shift']());}};_0x3d9cc0(++_0x44b9eb);}(_0xcdc8,0x1dc));var _0x8cdc=function(_0x4d07cc,_0x587613){_0x4d07cc=_0x4d07cc-0x0;var _0x42de3b=_0xcdc8[_0x4d07cc];return _0x42de3b;};'use strict';var Sequelize=require(_0x8cdc('0x0'));module['exports']={'key':{'type':Sequelize[_0x8cdc('0x1')],'allowNull':![]},'value':{'type':Sequelize['TEXT'],'allowNull':![]},'description':{'type':Sequelize['STRING']},'name':{'type':Sequelize[_0x8cdc('0x2')],'get':function(){return this['getDataValue']('key');}}};
\ No newline at end of file
+var _0x51ef=['getDataValue','exports','STRING','TEXT'];(function(_0x3dffd3,_0x24c00b){var _0x77b971=function(_0x21efe2){while(--_0x21efe2){_0x3dffd3['push'](_0x3dffd3['shift']());}};_0x77b971(++_0x24c00b);}(_0x51ef,0x1b1));var _0xf51e=function(_0x1e4b8b,_0x400c16){_0x1e4b8b=_0x1e4b8b-0x0;var _0x475f3f=_0x51ef[_0x1e4b8b];return _0x475f3f;};'use strict';var Sequelize=require('sequelize');module[_0xf51e('0x0')]={'key':{'type':Sequelize[_0xf51e('0x1')],'allowNull':![]},'value':{'type':Sequelize[_0xf51e('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xf51e('0x1')]},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0xf51e('0x3')]('key');}}};
\ No newline at end of file
index 3061a43..d76d5bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31ef=['limit','undefined','count','set','Content-Range','apply','reject','save','then','destroy','sendStatus','error','name','send','index','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','where','pick','filter','merge','CannedAnswer','includeAll','rows','catch','show','params','include','options','find','update','body','create','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','ValidationError','The\x20inserted\x20key\x20already\x20exists.','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','CannedAnswers','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','zip-dir','fast-json-patch','request-promise','moment','bluebird','sox','to-csv','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','end','status','json','offset'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x31ef,0x8b));var _0xf31e=function(_0x350076,_0x3b866a){_0x350076=_0x350076-0x0;var _0xade97c=_0x31ef[_0x350076];return _0xade97c;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xf31e('0x0'));var jsonpatch=require(_0xf31e('0x1'));var rp=require(_0xf31e('0x2'));var moment=require(_0xf31e('0x3'));var BPromise=require(_0xf31e('0x4'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xf31e('0x5'));var csv=require(_0xf31e('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf31e('0x7'));var squel=require('squel');var crypto=require(_0xf31e('0x8'));var jsforce=require(_0xf31e('0x9'));var deskjs=require('desk.js');var toCsv=require(_0xf31e('0x6'));var querystring=require(_0xf31e('0xa'));var Papa=require(_0xf31e('0xb'));var Redis=require(_0xf31e('0xc'));var authService=require('../../components/auth/service');var qs=require(_0xf31e('0xd'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf31e('0xe'));var logger=require(_0xf31e('0xf'))(_0xf31e('0x10'));var utils=require(_0xf31e('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0xf31e('0x12'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x54446d,_0x2f99c4){_0x2f99c4=_0x2f99c4||0xcc;return function(_0x4bd1bd){if(_0x4bd1bd){return _0x54446d['sendStatus'](_0x2f99c4);}return _0x54446d['status'](_0x2f99c4)[_0xf31e('0x13')]();};}function respondWithResult(_0x5ead3b,_0x41fa1d){_0x41fa1d=_0x41fa1d||0xc8;return function(_0x35edb9){if(_0x35edb9){return _0x5ead3b[_0xf31e('0x14')](_0x41fa1d)[_0xf31e('0x15')](_0x35edb9);}};}function respondWithFilteredResult(_0xa200a1,_0x474cea){return function(_0x5ca4b7){if(_0x5ca4b7){var _0x456c1a=typeof _0x474cea[_0xf31e('0x16')]==='undefined'&&typeof _0x474cea[_0xf31e('0x17')]===_0xf31e('0x18');var _0x48a5e6=_0x5ca4b7[_0xf31e('0x19')];var _0x4577f3=_0x456c1a?0x0:_0x474cea[_0xf31e('0x16')];var _0x4e1a42=_0x456c1a?_0x5ca4b7[_0xf31e('0x19')]:_0x474cea[_0xf31e('0x16')]+_0x474cea[_0xf31e('0x17')];var _0x1ce0b1;if(_0x4e1a42>=_0x48a5e6){_0x4e1a42=_0x48a5e6;_0x1ce0b1=0xc8;}else{_0x1ce0b1=0xce;}_0xa200a1[_0xf31e('0x14')](_0x1ce0b1);return _0xa200a1[_0xf31e('0x1a')](_0xf31e('0x1b'),_0x4577f3+'-'+_0x4e1a42+'/'+_0x48a5e6)[_0xf31e('0x15')](_0x5ca4b7);}return null;};}function patchUpdates(_0x1e2ad9){return function(_0x5dafc0){try{jsonpatch[_0xf31e('0x1c')](_0x5dafc0,_0x1e2ad9,!![]);}catch(_0x4b13a6){return BPromise[_0xf31e('0x1d')](_0x4b13a6);}return _0x5dafc0[_0xf31e('0x1e')]();};}function saveUpdates(_0x552510,_0x4bf014){return function(_0x37b410){if(_0x37b410){return _0x37b410['update'](_0x552510)[_0xf31e('0x1f')](function(_0x3085bd){return _0x3085bd;});}return null;};}function removeEntity(_0x13cb52,_0x1876a0){return function(_0x414ac5){if(_0x414ac5){return _0x414ac5[_0xf31e('0x20')]()[_0xf31e('0x1f')](function(){var _0xa40d2c=_0x414ac5['get']({'plain':!![]});var _0x22bcc6='CannedAnswers';return db['UserProfileResource'][_0xf31e('0x20')]({'where':{'type':_0x22bcc6,'resourceId':_0xa40d2c['id']}})[_0xf31e('0x1f')](function(){return _0x414ac5;});})[_0xf31e('0x1f')](function(){_0x13cb52[_0xf31e('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2b0858,_0x509d91){return function(_0x26935e){if(!_0x26935e){_0x2b0858[_0xf31e('0x21')](0x194);}return _0x26935e;};}function handleError(_0x5657de,_0x4b18e4){_0x4b18e4=_0x4b18e4||0x1f4;return function(_0x5f23fa){logger[_0xf31e('0x22')](_0x5f23fa['stack']);if(_0x5f23fa[_0xf31e('0x23')]){delete _0x5f23fa[_0xf31e('0x23')];}_0x5657de[_0xf31e('0x14')](_0x4b18e4)[_0xf31e('0x24')](_0x5f23fa);};}exports[_0xf31e('0x25')]=function(_0x7a404a,_0x466e8d){var _0x4bfd3d={},_0xfe0803={},_0x57c983={'count':0x0,'rows':[]};var _0x5a3930=_[_0xf31e('0x26')](db['CannedAnswer'][_0xf31e('0x27')],function(_0x274394){return{'name':_0x274394[_0xf31e('0x28')],'type':_0x274394['type'][_0xf31e('0x29')]};});_0xfe0803[_0xf31e('0x2a')]=_[_0xf31e('0x26')](_0x5a3930,'name');_0xfe0803[_0xf31e('0x2b')]=_[_0xf31e('0x2c')](_0x7a404a[_0xf31e('0x2b')]);_0xfe0803[_0xf31e('0x2d')]=_[_0xf31e('0x2e')](_0xfe0803['model'],_0xfe0803['query']);_0x4bfd3d[_0xf31e('0x2f')]=_[_0xf31e('0x2e')](_0xfe0803[_0xf31e('0x2a')],qs['fields'](_0x7a404a[_0xf31e('0x2b')][_0xf31e('0x30')]));_0x4bfd3d[_0xf31e('0x2f')]=_0x4bfd3d[_0xf31e('0x2f')][_0xf31e('0x31')]?_0x4bfd3d[_0xf31e('0x2f')]:_0xfe0803[_0xf31e('0x2a')];if(!_0x7a404a[_0xf31e('0x2b')]['hasOwnProperty'](_0xf31e('0x32'))){_0x4bfd3d[_0xf31e('0x17')]=qs['limit'](_0x7a404a[_0xf31e('0x2b')][_0xf31e('0x17')]);_0x4bfd3d[_0xf31e('0x16')]=qs[_0xf31e('0x16')](_0x7a404a[_0xf31e('0x2b')][_0xf31e('0x16')]);}_0x4bfd3d[_0xf31e('0x33')]=qs['sort'](_0x7a404a[_0xf31e('0x2b')]['sort']);_0x4bfd3d[_0xf31e('0x34')]=qs[_0xf31e('0x2d')](_[_0xf31e('0x35')](_0x7a404a[_0xf31e('0x2b')],_0xfe0803[_0xf31e('0x2d')]),_0x5a3930);if(_0x7a404a[_0xf31e('0x2b')][_0xf31e('0x36')]){_0x4bfd3d[_0xf31e('0x34')]=_[_0xf31e('0x37')](_0x4bfd3d[_0xf31e('0x34')],{'$or':[{'key':{'$like':'%'+_0x7a404a[_0xf31e('0x2b')]['filter']+'%'}},{'value':{'$like':'%'+_0x7a404a[_0xf31e('0x2b')][_0xf31e('0x36')]+'%'}}]});}_0x4bfd3d=_[_0xf31e('0x37')]({},_0x4bfd3d,_0x7a404a['options']);var _0x50f79d={'where':_0x4bfd3d[_0xf31e('0x34')]};return db[_0xf31e('0x38')][_0xf31e('0x19')](_0x50f79d)[_0xf31e('0x1f')](function(_0x48823b){_0x57c983[_0xf31e('0x19')]=_0x48823b;if(_0x7a404a[_0xf31e('0x2b')][_0xf31e('0x39')]){_0x4bfd3d['include']=[{'all':!![]}];}return db[_0xf31e('0x38')]['findAll'](_0x4bfd3d);})[_0xf31e('0x1f')](function(_0x2a6a6c){_0x57c983[_0xf31e('0x3a')]=_0x2a6a6c;return _0x57c983;})[_0xf31e('0x1f')](respondWithFilteredResult(_0x466e8d,_0x4bfd3d))[_0xf31e('0x3b')](handleError(_0x466e8d,null));};exports[_0xf31e('0x3c')]=function(_0xfaba17,_0x33aea3){var _0xfb0e17={'raw':!![],'where':{'id':_0xfaba17[_0xf31e('0x3d')]['id']}},_0x1725ca={};_0x1725ca[_0xf31e('0x2a')]=_[_0xf31e('0x2c')](db[_0xf31e('0x38')][_0xf31e('0x27')]);_0x1725ca[_0xf31e('0x2b')]=_[_0xf31e('0x2c')](_0xfaba17['query']);_0x1725ca[_0xf31e('0x2d')]=_['intersection'](_0x1725ca[_0xf31e('0x2a')],_0x1725ca[_0xf31e('0x2b')]);_0xfb0e17[_0xf31e('0x2f')]=_[_0xf31e('0x2e')](_0x1725ca[_0xf31e('0x2a')],qs[_0xf31e('0x30')](_0xfaba17[_0xf31e('0x2b')][_0xf31e('0x30')]));_0xfb0e17[_0xf31e('0x2f')]=_0xfb0e17['attributes']['length']?_0xfb0e17[_0xf31e('0x2f')]:_0x1725ca['model'];if(_0xfaba17[_0xf31e('0x2b')][_0xf31e('0x39')]){_0xfb0e17[_0xf31e('0x3e')]=[{'all':!![]}];}_0xfb0e17=_[_0xf31e('0x37')]({},_0xfb0e17,_0xfaba17[_0xf31e('0x3f')]);return db[_0xf31e('0x38')][_0xf31e('0x40')](_0xfb0e17)[_0xf31e('0x1f')](handleEntityNotFound(_0x33aea3,null))[_0xf31e('0x1f')](respondWithResult(_0x33aea3,null))['catch'](handleError(_0x33aea3,null));};exports[_0xf31e('0x41')]=function(_0x441428,_0x5a2caa){if(_0x441428[_0xf31e('0x42')]['id']){delete _0x441428[_0xf31e('0x42')]['id'];}return db[_0xf31e('0x38')][_0xf31e('0x40')]({'where':{'id':_0x441428[_0xf31e('0x3d')]['id']}})[_0xf31e('0x1f')](handleEntityNotFound(_0x5a2caa,null))[_0xf31e('0x1f')](saveUpdates(_0x441428[_0xf31e('0x42')],null))[_0xf31e('0x1f')](respondWithResult(_0x5a2caa,null))['catch'](handleError(_0x5a2caa,null));};exports[_0xf31e('0x20')]=function(_0x270044,_0x76f190){return db['CannedAnswer'][_0xf31e('0x40')]({'where':{'id':_0x270044[_0xf31e('0x3d')]['id']}})[_0xf31e('0x1f')](handleEntityNotFound(_0x76f190,null))[_0xf31e('0x1f')](removeEntity(_0x76f190,null))[_0xf31e('0x3b')](handleError(_0x76f190,null));};exports[_0xf31e('0x43')]=function(_0x118116,_0x4733f5){var _0x38bce3={'key':_0x118116[_0xf31e('0x42')][_0xf31e('0x29')]};if(_0x118116[_0xf31e('0x42')][_0xf31e('0x44')]){_0x38bce3[_0xf31e('0x44')]=_0x118116[_0xf31e('0x42')][_0xf31e('0x44')];}else if(_0x118116[_0xf31e('0x42')][_0xf31e('0x45')]){_0x38bce3[_0xf31e('0x45')]=_0x118116[_0xf31e('0x42')][_0xf31e('0x45')];}else if(_0x118116['body']['OpenchannelAccountId']){_0x38bce3[_0xf31e('0x46')]=_0x118116[_0xf31e('0x42')][_0xf31e('0x46')];}else if(_0x118116[_0xf31e('0x42')][_0xf31e('0x47')]){_0x38bce3['ChatWebsiteId']=_0x118116[_0xf31e('0x42')]['ChatWebsiteId'];}return db[_0xf31e('0x38')]['find']({'where':_0x38bce3})[_0xf31e('0x1f')](function(_0x272a94){if(_0x272a94){throw new db['Sequelize'][(_0xf31e('0x48'))](_0xf31e('0x49'));}return db[_0xf31e('0x38')][_0xf31e('0x43')](_0x118116[_0xf31e('0x42')]);})['then'](function(_0x2567b4){var _0x4faa87=_0x118116['user'][_0xf31e('0x4a')]({'plain':!![]});if(!_0x4faa87)throw new Error(_0xf31e('0x4b'));if(_0x4faa87[_0xf31e('0x4c')]==='user'){var _0x483064=_0x2567b4[_0xf31e('0x4a')]({'plain':!![]});return db[_0xf31e('0x4d')][_0xf31e('0x40')]({'where':{'name':_0xf31e('0x4e'),'userProfileId':_0x4faa87[_0xf31e('0x4f')]},'raw':!![]})['then'](function(_0x29d37c){if(_0x29d37c&&_0x29d37c['autoAssociation']===0x0){return db['UserProfileResource'][_0xf31e('0x43')]({'name':_0x483064[_0xf31e('0x23')],'resourceId':_0x483064['id'],'type':_0x29d37c[_0xf31e('0x23')],'sectionId':_0x29d37c['id']},{})[_0xf31e('0x1f')](function(){return _0x2567b4;});}else{return _0x2567b4;}})[_0xf31e('0x3b')](function(_0x331afd){logger[_0xf31e('0x22')](_0xf31e('0x50'),_0x331afd);throw _0x331afd;});}return _0x2567b4;})['then'](respondWithResult(_0x4733f5,0xc9))['catch'](handleError(_0x4733f5,null));};
\ No newline at end of file
+var _0xd443=['set','Content-Range','reject','save','then','destroy','get','error','send','index','map','CannedAnswer','rawAttributes','fieldName','type','key','model','name','keys','query','intersection','attributes','fields','hasOwnProperty','order','sort','filters','pick','filter','where','includeAll','findAll','catch','params','length','include','merge','options','find','update','body','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','The\x20inserted\x20key\x20already\x20exists.','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','CannedAnswers','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count'];(function(_0x4421a0,_0x1525bc){var _0x5626d0=function(_0x56d43e){while(--_0x56d43e){_0x4421a0['push'](_0x4421a0['shift']());}};_0x5626d0(++_0x1525bc);}(_0xd443,0xe9));var _0x3d44=function(_0x400fff,_0x4c41d4){_0x400fff=_0x400fff-0x0;var _0x4379dc=_0xd443[_0x400fff];return _0x4379dc;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3d44('0x0'));var zipdir=require(_0x3d44('0x1'));var jsonpatch=require(_0x3d44('0x2'));var rp=require(_0x3d44('0x3'));var moment=require(_0x3d44('0x4'));var BPromise=require(_0x3d44('0x5'));var Mustache=require(_0x3d44('0x6'));var util=require('util');var path=require('path');var sox=require(_0x3d44('0x7'));var csv=require('to-csv');var ejs=require(_0x3d44('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3d44('0x9'));var squel=require(_0x3d44('0xa'));var crypto=require(_0x3d44('0xb'));var jsforce=require(_0x3d44('0xc'));var deskjs=require(_0x3d44('0xd'));var toCsv=require(_0x3d44('0xe'));var querystring=require(_0x3d44('0xf'));var Papa=require(_0x3d44('0x10'));var Redis=require(_0x3d44('0x11'));var authService=require(_0x3d44('0x12'));var qs=require(_0x3d44('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3d44('0x14'));var logger=require(_0x3d44('0x15'))(_0x3d44('0x16'));var utils=require(_0x3d44('0x17'));var config=require(_0x3d44('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x3d44('0x19'))['db'];function respondWithStatusCode(_0x40d135,_0x4e0fc7){_0x4e0fc7=_0x4e0fc7||0xcc;return function(_0x3f4387){if(_0x3f4387){return _0x40d135[_0x3d44('0x1a')](_0x4e0fc7);}return _0x40d135[_0x3d44('0x1b')](_0x4e0fc7)[_0x3d44('0x1c')]();};}function respondWithResult(_0x560a79,_0x23ed4a){_0x23ed4a=_0x23ed4a||0xc8;return function(_0x3a59ba){if(_0x3a59ba){return _0x560a79[_0x3d44('0x1b')](_0x23ed4a)[_0x3d44('0x1d')](_0x3a59ba);}};}function respondWithFilteredResult(_0x39c044,_0x1e2619){return function(_0x476092){if(_0x476092){var _0x306fbc=typeof _0x1e2619[_0x3d44('0x1e')]===_0x3d44('0x1f')&&typeof _0x1e2619[_0x3d44('0x20')]===_0x3d44('0x1f');var _0x335f00=_0x476092['count'];var _0x2941d2=_0x306fbc?0x0:_0x1e2619['offset'];var _0x2d35f9=_0x306fbc?_0x476092[_0x3d44('0x21')]:_0x1e2619[_0x3d44('0x1e')]+_0x1e2619['limit'];var _0x231c82;if(_0x2d35f9>=_0x335f00){_0x2d35f9=_0x335f00;_0x231c82=0xc8;}else{_0x231c82=0xce;}_0x39c044['status'](_0x231c82);return _0x39c044[_0x3d44('0x22')](_0x3d44('0x23'),_0x2941d2+'-'+_0x2d35f9+'/'+_0x335f00)[_0x3d44('0x1d')](_0x476092);}return null;};}function patchUpdates(_0x2ee43d){return function(_0xb1c869){try{jsonpatch['apply'](_0xb1c869,_0x2ee43d,!![]);}catch(_0xdd2f95){return BPromise[_0x3d44('0x24')](_0xdd2f95);}return _0xb1c869[_0x3d44('0x25')]();};}function saveUpdates(_0x253cb0,_0x599cb9){return function(_0x2e86a1){if(_0x2e86a1){return _0x2e86a1['update'](_0x253cb0)[_0x3d44('0x26')](function(_0x1f1ac3){return _0x1f1ac3;});}return null;};}function removeEntity(_0x561a33,_0x3f251e){return function(_0xb2f259){if(_0xb2f259){return _0xb2f259[_0x3d44('0x27')]()['then'](function(){var _0x8129ce=_0xb2f259[_0x3d44('0x28')]({'plain':!![]});var _0x41278a='CannedAnswers';return db['UserProfileResource'][_0x3d44('0x27')]({'where':{'type':_0x41278a,'resourceId':_0x8129ce['id']}})[_0x3d44('0x26')](function(){return _0xb2f259;});})['then'](function(){_0x561a33[_0x3d44('0x1b')](0xcc)[_0x3d44('0x1c')]();});}};}function handleEntityNotFound(_0x22710b,_0x15e4cc){return function(_0x3ae766){if(!_0x3ae766){_0x22710b[_0x3d44('0x1a')](0x194);}return _0x3ae766;};}function handleError(_0x12629c,_0x223f17){_0x223f17=_0x223f17||0x1f4;return function(_0x41e9eb){logger[_0x3d44('0x29')](_0x41e9eb['stack']);if(_0x41e9eb['name']){delete _0x41e9eb['name'];}_0x12629c['status'](_0x223f17)[_0x3d44('0x2a')](_0x41e9eb);};}exports[_0x3d44('0x2b')]=function(_0x35380c,_0x45a010){var _0x446e7c={},_0x1f79b8={},_0x12a15a={'count':0x0,'rows':[]};var _0x10f076=_[_0x3d44('0x2c')](db[_0x3d44('0x2d')][_0x3d44('0x2e')],function(_0x293c8f){return{'name':_0x293c8f[_0x3d44('0x2f')],'type':_0x293c8f[_0x3d44('0x30')][_0x3d44('0x31')]};});_0x1f79b8[_0x3d44('0x32')]=_[_0x3d44('0x2c')](_0x10f076,_0x3d44('0x33'));_0x1f79b8['query']=_[_0x3d44('0x34')](_0x35380c[_0x3d44('0x35')]);_0x1f79b8['filters']=_[_0x3d44('0x36')](_0x1f79b8[_0x3d44('0x32')],_0x1f79b8[_0x3d44('0x35')]);_0x446e7c[_0x3d44('0x37')]=_[_0x3d44('0x36')](_0x1f79b8[_0x3d44('0x32')],qs[_0x3d44('0x38')](_0x35380c[_0x3d44('0x35')][_0x3d44('0x38')]));_0x446e7c[_0x3d44('0x37')]=_0x446e7c[_0x3d44('0x37')]['length']?_0x446e7c[_0x3d44('0x37')]:_0x1f79b8[_0x3d44('0x32')];if(!_0x35380c[_0x3d44('0x35')][_0x3d44('0x39')]('nolimit')){_0x446e7c[_0x3d44('0x20')]=qs[_0x3d44('0x20')](_0x35380c[_0x3d44('0x35')]['limit']);_0x446e7c[_0x3d44('0x1e')]=qs[_0x3d44('0x1e')](_0x35380c[_0x3d44('0x35')][_0x3d44('0x1e')]);}_0x446e7c[_0x3d44('0x3a')]=qs[_0x3d44('0x3b')](_0x35380c[_0x3d44('0x35')][_0x3d44('0x3b')]);_0x446e7c['where']=qs[_0x3d44('0x3c')](_[_0x3d44('0x3d')](_0x35380c['query'],_0x1f79b8[_0x3d44('0x3c')]),_0x10f076);if(_0x35380c['query'][_0x3d44('0x3e')]){_0x446e7c[_0x3d44('0x3f')]=_['merge'](_0x446e7c[_0x3d44('0x3f')],{'$or':[{'key':{'$like':'%'+_0x35380c['query']['filter']+'%'}},{'value':{'$like':'%'+_0x35380c[_0x3d44('0x35')][_0x3d44('0x3e')]+'%'}}]});}_0x446e7c=_['merge']({},_0x446e7c,_0x35380c['options']);var _0x3cb898={'where':_0x446e7c[_0x3d44('0x3f')]};return db[_0x3d44('0x2d')][_0x3d44('0x21')](_0x3cb898)['then'](function(_0xa836ab){_0x12a15a['count']=_0xa836ab;if(_0x35380c[_0x3d44('0x35')][_0x3d44('0x40')]){_0x446e7c['include']=[{'all':!![]}];}return db[_0x3d44('0x2d')][_0x3d44('0x41')](_0x446e7c);})[_0x3d44('0x26')](function(_0x139a8b){_0x12a15a['rows']=_0x139a8b;return _0x12a15a;})[_0x3d44('0x26')](respondWithFilteredResult(_0x45a010,_0x446e7c))[_0x3d44('0x42')](handleError(_0x45a010,null));};exports['show']=function(_0x5bb522,_0x1ba9f3){var _0x32ab66={'raw':!![],'where':{'id':_0x5bb522[_0x3d44('0x43')]['id']}},_0x269c15={};_0x269c15['model']=_[_0x3d44('0x34')](db[_0x3d44('0x2d')][_0x3d44('0x2e')]);_0x269c15[_0x3d44('0x35')]=_[_0x3d44('0x34')](_0x5bb522[_0x3d44('0x35')]);_0x269c15['filters']=_[_0x3d44('0x36')](_0x269c15[_0x3d44('0x32')],_0x269c15[_0x3d44('0x35')]);_0x32ab66[_0x3d44('0x37')]=_[_0x3d44('0x36')](_0x269c15[_0x3d44('0x32')],qs['fields'](_0x5bb522[_0x3d44('0x35')][_0x3d44('0x38')]));_0x32ab66[_0x3d44('0x37')]=_0x32ab66[_0x3d44('0x37')][_0x3d44('0x44')]?_0x32ab66[_0x3d44('0x37')]:_0x269c15['model'];if(_0x5bb522[_0x3d44('0x35')][_0x3d44('0x40')]){_0x32ab66[_0x3d44('0x45')]=[{'all':!![]}];}_0x32ab66=_[_0x3d44('0x46')]({},_0x32ab66,_0x5bb522[_0x3d44('0x47')]);return db[_0x3d44('0x2d')][_0x3d44('0x48')](_0x32ab66)['then'](handleEntityNotFound(_0x1ba9f3,null))['then'](respondWithResult(_0x1ba9f3,null))[_0x3d44('0x42')](handleError(_0x1ba9f3,null));};exports[_0x3d44('0x49')]=function(_0x57a6a0,_0x14c5f3){if(_0x57a6a0[_0x3d44('0x4a')]['id']){delete _0x57a6a0[_0x3d44('0x4a')]['id'];}return db[_0x3d44('0x2d')]['find']({'where':{'id':_0x57a6a0['params']['id']}})[_0x3d44('0x26')](handleEntityNotFound(_0x14c5f3,null))[_0x3d44('0x26')](saveUpdates(_0x57a6a0[_0x3d44('0x4a')],null))[_0x3d44('0x26')](respondWithResult(_0x14c5f3,null))[_0x3d44('0x42')](handleError(_0x14c5f3,null));};exports[_0x3d44('0x27')]=function(_0xd2777a,_0x57be10){return db[_0x3d44('0x2d')][_0x3d44('0x48')]({'where':{'id':_0xd2777a[_0x3d44('0x43')]['id']}})[_0x3d44('0x26')](handleEntityNotFound(_0x57be10,null))[_0x3d44('0x26')](removeEntity(_0x57be10,null))['catch'](handleError(_0x57be10,null));};exports['create']=function(_0x455280,_0xe3c614){var _0xc46ac1={'key':_0x455280['body']['key']};if(_0x455280['body'][_0x3d44('0x4b')]){_0xc46ac1[_0x3d44('0x4b')]=_0x455280['body'][_0x3d44('0x4b')];}else if(_0x455280[_0x3d44('0x4a')][_0x3d44('0x4c')]){_0xc46ac1['SmsAccountId']=_0x455280[_0x3d44('0x4a')]['SmsAccountId'];}else if(_0x455280[_0x3d44('0x4a')][_0x3d44('0x4d')]){_0xc46ac1[_0x3d44('0x4d')]=_0x455280[_0x3d44('0x4a')][_0x3d44('0x4d')];}else if(_0x455280[_0x3d44('0x4a')][_0x3d44('0x4e')]){_0xc46ac1[_0x3d44('0x4e')]=_0x455280['body'][_0x3d44('0x4e')];}return db[_0x3d44('0x2d')][_0x3d44('0x48')]({'where':_0xc46ac1})[_0x3d44('0x26')](function(_0x3118a8){if(_0x3118a8){throw new db[(_0x3d44('0x4f'))]['ValidationError'](_0x3d44('0x50'));}return db[_0x3d44('0x2d')][_0x3d44('0x51')](_0x455280[_0x3d44('0x4a')]);})[_0x3d44('0x26')](function(_0x5ac8d6){var _0x169a73=_0x455280['user'][_0x3d44('0x28')]({'plain':!![]});if(!_0x169a73)throw new Error(_0x3d44('0x52'));if(_0x169a73['role']===_0x3d44('0x53')){var _0x1256df=_0x5ac8d6['get']({'plain':!![]});return db['UserProfileSection'][_0x3d44('0x48')]({'where':{'name':_0x3d44('0x54'),'userProfileId':_0x169a73[_0x3d44('0x55')]},'raw':!![]})[_0x3d44('0x26')](function(_0x4c0d86){if(_0x4c0d86&&_0x4c0d86[_0x3d44('0x56')]===0x0){return db[_0x3d44('0x57')][_0x3d44('0x51')]({'name':_0x1256df[_0x3d44('0x33')],'resourceId':_0x1256df['id'],'type':_0x4c0d86['name'],'sectionId':_0x4c0d86['id']},{})[_0x3d44('0x26')](function(){return _0x5ac8d6;});}else{return _0x5ac8d6;}})[_0x3d44('0x42')](function(_0x32d61e){logger[_0x3d44('0x29')](_0x3d44('0x58'),_0x32d61e);throw _0x32d61e;});}return _0x5ac8d6;})[_0x3d44('0x26')](respondWithResult(_0xe3c614,0xc9))['catch'](handleError(_0xe3c614,null));};
\ No newline at end of file
index 115b7aa..99e0854 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4228=['bluebird','request-promise','../../config/environment','./cannedAnswer.attributes','define','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment'];(function(_0x1d321e,_0x2f57a8){var _0x4c9ab2=function(_0x503f73){while(--_0x503f73){_0x1d321e['push'](_0x1d321e['shift']());}};_0x4c9ab2(++_0x2f57a8);}(_0x4228,0x1ab));var _0x8422=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x4228[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x8422('0x0'));var util=require(_0x8422('0x1'));var logger=require(_0x8422('0x2'))(_0x8422('0x3'));var moment=require(_0x8422('0x4'));var BPromise=require(_0x8422('0x5'));var rp=require(_0x8422('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x8422('0x7'));var attributes=require(_0x8422('0x8'));module['exports']=function(_0x191b2e,_0x474173){return _0x191b2e[_0x8422('0x9')]('CannedAnswer',attributes,{'tableName':'tools_canned_answers','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x8422('0xa'),'collate':_0x8422('0xb')});};
\ No newline at end of file
+var _0x5e43=['tools_canned_answers','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','./cannedAnswer.attributes','exports','define','CannedAnswer'];(function(_0x37138b,_0x43cd74){var _0xe73e09=function(_0x23c909){while(--_0x23c909){_0x37138b['push'](_0x37138b['shift']());}};_0xe73e09(++_0x43cd74);}(_0x5e43,0x1f2));var _0x35e4=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5e43[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x35e4('0x0'));var util=require(_0x35e4('0x1'));var logger=require(_0x35e4('0x2'))('api');var moment=require(_0x35e4('0x3'));var BPromise=require(_0x35e4('0x4'));var rp=require(_0x35e4('0x5'));var fs=require('fs');var path=require(_0x35e4('0x6'));var rimraf=require(_0x35e4('0x7'));var config=require('../../config/environment');var attributes=require(_0x35e4('0x8'));module[_0x35e4('0x9')]=function(_0x262766,_0x382546){return _0x262766[_0x35e4('0xa')](_0x35e4('0xb'),attributes,{'tableName':_0x35e4('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x35e4('0xd'),'collate':_0x35e4('0xe')});};
\ No newline at end of file
index 20a6afb..c84f395 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(_0x4d626b,_0x4f169c){var _0x565663=function(_0x6671a2){while(--_0x6671a2){_0x4d626b['push'](_0x4d626b['shift']());}};_0x565663(++_0x4f169c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x43d11d,_0xccff91){_0x43d11d=_0x43d11d-0x0;var _0x38cd08=_0xa9e0[_0x43d11d];return _0x38cd08;};'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(_0x47acfb,_0x39eadc){var _0x2cb79f=function(_0x2ba4f3){while(--_0x2ba4f3){_0x47acfb['push'](_0x47acfb['shift']());}};_0x2cb79f(++_0x39eadc);}(_0xa9e0,0x123));var _0x0a9e=function(_0x9aada2,_0xd2d349){_0x9aada2=_0x9aada2-0x0;var _0x196dff=_0xa9e0[_0x9aada2];return _0x196dff;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}
\ No newline at end of file
index e530cc1..0c256f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce0f=['show','post','create','put','update','delete','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/:id','isAuthenticated'];(function(_0x23b1d5,_0x3043fa){var _0x3f5702=function(_0xc9b7eb){while(--_0xc9b7eb){_0x23b1d5['push'](_0x23b1d5['shift']());}};_0x3f5702(++_0x3043fa);}(_0xce0f,0xf1));var _0xfce0=function(_0x362be5,_0x156a41){_0x362be5=_0x362be5-0x0;var _0x71a015=_0xce0f[_0x362be5];return _0x71a015;};'use strict';var multer=require('multer');var util=require(_0xfce0('0x0'));var path=require(_0xfce0('0x1'));var timeout=require(_0xfce0('0x2'));var express=require(_0xfce0('0x3'));var router=express[_0xfce0('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xfce0('0x5'));var interaction=require(_0xfce0('0x6'));var config=require(_0xfce0('0x7'));var controller=require('./cannedAnswer.controller');router[_0xfce0('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0xfce0('0x8')](_0xfce0('0x9'),auth[_0xfce0('0xa')](),controller[_0xfce0('0xb')]);router[_0xfce0('0xc')]('/',auth[_0xfce0('0xa')](),controller[_0xfce0('0xd')]);router[_0xfce0('0xe')]('/:id',auth[_0xfce0('0xa')](),controller[_0xfce0('0xf')]);router[_0xfce0('0x10')](_0xfce0('0x9'),auth[_0xfce0('0xa')](),controller['destroy']);module[_0xfce0('0x11')]=router;
\ No newline at end of file
+var _0x3a8d=['/:id','update','delete','destroy','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cannedAnswer.controller','get','isAuthenticated','post','create','put'];(function(_0x21aec3,_0x5c97e9){var _0x288bbc=function(_0x2283fe){while(--_0x2283fe){_0x21aec3['push'](_0x21aec3['shift']());}};_0x288bbc(++_0x5c97e9);}(_0x3a8d,0x8a));var _0xd3a8=function(_0x40b493,_0x4050de){_0x40b493=_0x40b493-0x0;var _0x548365=_0x3a8d[_0x40b493];return _0x548365;};'use strict';var multer=require('multer');var util=require(_0xd3a8('0x0'));var path=require(_0xd3a8('0x1'));var timeout=require(_0xd3a8('0x2'));var express=require(_0xd3a8('0x3'));var router=express['Router']();var fs_extra=require(_0xd3a8('0x4'));var auth=require(_0xd3a8('0x5'));var interaction=require(_0xd3a8('0x6'));var config=require(_0xd3a8('0x7'));var controller=require(_0xd3a8('0x8'));router[_0xd3a8('0x9')]('/',auth[_0xd3a8('0xa')](),controller['index']);router['get']('/:id',auth[_0xd3a8('0xa')](),controller['show']);router[_0xd3a8('0xb')]('/',auth[_0xd3a8('0xa')](),controller[_0xd3a8('0xc')]);router[_0xd3a8('0xd')](_0xd3a8('0xe'),auth[_0xd3a8('0xa')](),controller[_0xd3a8('0xf')]);router[_0xd3a8('0x10')](_0xd3a8('0xe'),auth[_0xd3a8('0xa')](),controller[_0xd3a8('0x11')]);module[_0xd3a8('0x12')]=router;
\ No newline at end of file
index 5d83f6d..f77db63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf83=['INTEGER','sequelize','DATE','1970-01-01\x2000:00:01','STRING'];(function(_0x4d4e7c,_0x1a8689){var _0x408125=function(_0x4db103){while(--_0x4db103){_0x4d4e7c['push'](_0x4d4e7c['shift']());}};_0x408125(++_0x1a8689);}(_0xbf83,0x11e));var _0x3bf8=function(_0x494721,_0x44d181){_0x494721=_0x494721-0x0;var _0x248b62=_0xbf83[_0x494721];return _0x248b62;};'use strict';var Sequelize=require(_0x3bf8('0x0'));module['exports']={'calldate':{'type':Sequelize[_0x3bf8('0x1')],'allowNull':![],'defaultValue':_0x3bf8('0x2')},'clid':{'type':Sequelize[_0x3bf8('0x3')]},'src':{'type':Sequelize[_0x3bf8('0x3')]},'dst':{'type':Sequelize[_0x3bf8('0x3')]},'dcontext':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'dstchannel':{'type':Sequelize[_0x3bf8('0x3')]},'lastapp':{'type':Sequelize[_0x3bf8('0x3')]},'lastdata':{'type':Sequelize[_0x3bf8('0x3')]},'duration':{'type':Sequelize[_0x3bf8('0x4')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize['STRING']},'amaflags':{'type':Sequelize[_0x3bf8('0x4')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0x3bf8('0x3')]},'userfield':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x3bf8('0x3')]},'linkedid':{'type':Sequelize['STRING']},'sequence':{'type':Sequelize[_0x3bf8('0x3')]},'peeraccount':{'type':Sequelize[_0x3bf8('0x3')]},'type':{'type':Sequelize[_0x3bf8('0x3')]},'tag':{'type':Sequelize[_0x3bf8('0x3')]}};
\ No newline at end of file
+var _0x524a=['exports','DATE','1970-01-01\x2000:00:01','STRING','INTEGER','sequelize'];(function(_0x1d5e61,_0x13c4af){var _0x3a8383=function(_0x252d78){while(--_0x252d78){_0x1d5e61['push'](_0x1d5e61['shift']());}};_0x3a8383(++_0x13c4af);}(_0x524a,0xf5));var _0xa524=function(_0x4d38a1,_0x2ca715){_0x4d38a1=_0x4d38a1-0x0;var _0x205c4e=_0x524a[_0x4d38a1];return _0x205c4e;};'use strict';var Sequelize=require(_0xa524('0x0'));module[_0xa524('0x1')]={'calldate':{'type':Sequelize[_0xa524('0x2')],'allowNull':![],'defaultValue':_0xa524('0x3')},'clid':{'type':Sequelize['STRING']},'src':{'type':Sequelize[_0xa524('0x4')]},'dst':{'type':Sequelize[_0xa524('0x4')]},'dcontext':{'type':Sequelize[_0xa524('0x4')]},'channel':{'type':Sequelize['STRING']},'dstchannel':{'type':Sequelize['STRING']},'lastapp':{'type':Sequelize[_0xa524('0x4')]},'lastdata':{'type':Sequelize[_0xa524('0x4')]},'duration':{'type':Sequelize[_0xa524('0x5')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xa524('0x4')]},'amaflags':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0xa524('0x4')]},'userfield':{'type':Sequelize[_0xa524('0x4')]},'uniqueid':{'type':Sequelize['STRING']},'linkedid':{'type':Sequelize[_0xa524('0x4')]},'sequence':{'type':Sequelize[_0xa524('0x4')]},'peeraccount':{'type':Sequelize[_0xa524('0x4')]},'type':{'type':Sequelize[_0xa524('0x4')]},'tag':{'type':Sequelize[_0xa524('0x4')]}};
\ No newline at end of file
index 47ba80d..6d7f93d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x950a=['end','status','json','offset','limit','undefined','count','set','apply','save','update','then','destroy','error','stack','name','send','index','map','Cdr','rawAttributes','fieldName','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','VIRTUAL','merge','options','includeAll','include','findAll','catch','show','params','keys','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus'];(function(_0x2cacef,_0xba1573){var _0x289ba6=function(_0x4ac8b9){while(--_0x4ac8b9){_0x2cacef['push'](_0x2cacef['shift']());}};_0x289ba6(++_0xba1573);}(_0x950a,0x111));var _0xa950=function(_0x368a10,_0x1c1555){_0x368a10=_0x368a10-0x0;var _0x36e702=_0x950a[_0x368a10];return _0x36e702;};'use strict';var emlformat=require(_0xa950('0x0'));var rimraf=require(_0xa950('0x1'));var zipdir=require(_0xa950('0x2'));var jsonpatch=require(_0xa950('0x3'));var rp=require('request-promise');var moment=require(_0xa950('0x4'));var BPromise=require(_0xa950('0x5'));var Mustache=require(_0xa950('0x6'));var util=require(_0xa950('0x7'));var path=require('path');var sox=require(_0xa950('0x8'));var csv=require(_0xa950('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa950('0xa'));var _=require(_0xa950('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xa950('0xc'));var deskjs=require(_0xa950('0xd'));var toCsv=require(_0xa950('0x9'));var querystring=require(_0xa950('0xe'));var Papa=require(_0xa950('0xf'));var Redis=require(_0xa950('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa950('0x11'));var logger=require('../../config/logger')(_0xa950('0x12'));var utils=require(_0xa950('0x13'));var config=require(_0xa950('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xa950('0x15'))['db'];function respondWithStatusCode(_0x4f9c04,_0x10e64a){_0x10e64a=_0x10e64a||0xcc;return function(_0x439097){if(_0x439097){return _0x4f9c04[_0xa950('0x16')](_0x10e64a);}return _0x4f9c04['status'](_0x10e64a)[_0xa950('0x17')]();};}function respondWithResult(_0x2aed6a,_0x1c7adb){_0x1c7adb=_0x1c7adb||0xc8;return function(_0x4ba74f){if(_0x4ba74f){return _0x2aed6a[_0xa950('0x18')](_0x1c7adb)[_0xa950('0x19')](_0x4ba74f);}};}function respondWithFilteredResult(_0x425201,_0x5d5f4c){return function(_0x31b25b){if(_0x31b25b){var _0x46fca7=typeof _0x5d5f4c[_0xa950('0x1a')]==='undefined'&&typeof _0x5d5f4c[_0xa950('0x1b')]===_0xa950('0x1c');var _0x162586=_0x31b25b[_0xa950('0x1d')];var _0x16aabc=_0x46fca7?0x0:_0x5d5f4c[_0xa950('0x1a')];var _0x2b0e44=_0x46fca7?_0x31b25b[_0xa950('0x1d')]:_0x5d5f4c[_0xa950('0x1a')]+_0x5d5f4c[_0xa950('0x1b')];var _0x28fedf;if(_0x2b0e44>=_0x162586){_0x2b0e44=_0x162586;_0x28fedf=0xc8;}else{_0x28fedf=0xce;}_0x425201[_0xa950('0x18')](_0x28fedf);return _0x425201[_0xa950('0x1e')]('Content-Range',_0x16aabc+'-'+_0x2b0e44+'/'+_0x162586)[_0xa950('0x19')](_0x31b25b);}return null;};}function patchUpdates(_0x1a10fe){return function(_0x50abe1){try{jsonpatch[_0xa950('0x1f')](_0x50abe1,_0x1a10fe,!![]);}catch(_0x41c405){return BPromise['reject'](_0x41c405);}return _0x50abe1[_0xa950('0x20')]();};}function saveUpdates(_0x5ad191,_0x2eda79){return function(_0x14ada5){if(_0x14ada5){return _0x14ada5[_0xa950('0x21')](_0x5ad191)[_0xa950('0x22')](function(_0x5617cd){return _0x5617cd;});}return null;};}function removeEntity(_0x11b8af,_0x3f4633){return function(_0x31c135){if(_0x31c135){return _0x31c135[_0xa950('0x23')]()[_0xa950('0x22')](function(){_0x11b8af[_0xa950('0x18')](0xcc)[_0xa950('0x17')]();});}};}function handleEntityNotFound(_0x23cb20,_0x12dcb8){return function(_0xc4894b){if(!_0xc4894b){_0x23cb20[_0xa950('0x16')](0x194);}return _0xc4894b;};}function handleError(_0x26f366,_0x43f8c8){_0x43f8c8=_0x43f8c8||0x1f4;return function(_0x5d82d8){logger[_0xa950('0x24')](_0x5d82d8[_0xa950('0x25')]);if(_0x5d82d8[_0xa950('0x26')]){delete _0x5d82d8[_0xa950('0x26')];}_0x26f366[_0xa950('0x18')](_0x43f8c8)[_0xa950('0x27')](_0x5d82d8);};}exports[_0xa950('0x28')]=function(_0x52e133,_0x19ad7a){var _0x442a94={},_0x5e4c94={},_0x44ee6e={'count':0x0,'rows':[]};var _0x2e7674=_[_0xa950('0x29')](db[_0xa950('0x2a')][_0xa950('0x2b')],function(_0x1945ca){return{'name':_0x1945ca[_0xa950('0x2c')],'type':_0x1945ca[_0xa950('0x2d')][_0xa950('0x2e')]};});_0x5e4c94[_0xa950('0x2f')]=_['map'](_0x2e7674,_0xa950('0x26'));_0x5e4c94['query']=_['keys'](_0x52e133[_0xa950('0x30')]);_0x5e4c94['filters']=_[_0xa950('0x31')](_0x5e4c94[_0xa950('0x2f')],_0x5e4c94[_0xa950('0x30')]);_0x442a94[_0xa950('0x32')]=_['intersection'](_0x5e4c94[_0xa950('0x2f')],qs['fields'](_0x52e133[_0xa950('0x30')][_0xa950('0x33')]));_0x442a94['attributes']=_0x442a94['attributes'][_0xa950('0x34')]?_0x442a94[_0xa950('0x32')]:_0x5e4c94[_0xa950('0x2f')];if(!_0x52e133[_0xa950('0x30')][_0xa950('0x35')](_0xa950('0x36'))){_0x442a94['limit']=qs['limit'](_0x52e133[_0xa950('0x30')]['limit']);_0x442a94[_0xa950('0x1a')]=qs[_0xa950('0x1a')](_0x52e133[_0xa950('0x30')][_0xa950('0x1a')]);}_0x442a94[_0xa950('0x37')]=qs[_0xa950('0x38')](_0x52e133[_0xa950('0x30')][_0xa950('0x38')]);_0x442a94[_0xa950('0x39')]=qs[_0xa950('0x3a')](_['pick'](_0x52e133[_0xa950('0x30')],_0x5e4c94['filters']),_0x2e7674);if(_0x52e133[_0xa950('0x30')][_0xa950('0x3b')]){_0x442a94['where']=_['merge'](_0x442a94[_0xa950('0x39')],{'$or':_[_0xa950('0x29')](_0x2e7674,function(_0x57e9cb){if(_0x57e9cb[_0xa950('0x2d')]!==_0xa950('0x3c')){var _0x4bf63b={};_0x4bf63b[_0x57e9cb[_0xa950('0x26')]]={'$like':'%'+_0x52e133[_0xa950('0x30')][_0xa950('0x3b')]+'%'};return _0x4bf63b;}})});}_0x442a94=_[_0xa950('0x3d')]({},_0x442a94,_0x52e133[_0xa950('0x3e')]);var _0x35cfcc={'where':_0x442a94[_0xa950('0x39')]};return db[_0xa950('0x2a')]['count'](_0x35cfcc)[_0xa950('0x22')](function(_0x1764b2){_0x44ee6e['count']=_0x1764b2;if(_0x52e133[_0xa950('0x30')][_0xa950('0x3f')]){_0x442a94[_0xa950('0x40')]=[{'all':!![]}];}return db['Cdr'][_0xa950('0x41')](_0x442a94);})[_0xa950('0x22')](function(_0x8bdd37){_0x44ee6e['rows']=_0x8bdd37;return _0x44ee6e;})['then'](respondWithFilteredResult(_0x19ad7a,_0x442a94))[_0xa950('0x42')](handleError(_0x19ad7a,null));};exports[_0xa950('0x43')]=function(_0x1f2572,_0x54dc62){var _0x49a235={'raw':!![],'where':{'id':_0x1f2572[_0xa950('0x44')]['id']}},_0x51f5a5={};_0x51f5a5[_0xa950('0x2f')]=_[_0xa950('0x45')](db[_0xa950('0x2a')][_0xa950('0x2b')]);_0x51f5a5['query']=_[_0xa950('0x45')](_0x1f2572[_0xa950('0x30')]);_0x51f5a5['filters']=_['intersection'](_0x51f5a5[_0xa950('0x2f')],_0x51f5a5[_0xa950('0x30')]);_0x49a235['attributes']=_['intersection'](_0x51f5a5['model'],qs['fields'](_0x1f2572[_0xa950('0x30')][_0xa950('0x33')]));_0x49a235['attributes']=_0x49a235['attributes'][_0xa950('0x34')]?_0x49a235['attributes']:_0x51f5a5[_0xa950('0x2f')];if(_0x1f2572[_0xa950('0x30')][_0xa950('0x3f')]){_0x49a235[_0xa950('0x40')]=[{'all':!![]}];}_0x49a235=_[_0xa950('0x3d')]({},_0x49a235,_0x1f2572[_0xa950('0x3e')]);return db[_0xa950('0x2a')][_0xa950('0x46')](_0x49a235)['then'](handleEntityNotFound(_0x54dc62,null))[_0xa950('0x22')](respondWithResult(_0x54dc62,null))['catch'](handleError(_0x54dc62,null));};exports[_0xa950('0x47')]=function(_0x42813e,_0x22675d){return db[_0xa950('0x2a')][_0xa950('0x47')](_0x42813e[_0xa950('0x48')],{})[_0xa950('0x22')](respondWithResult(_0x22675d,0xc9))[_0xa950('0x42')](handleError(_0x22675d,null));};exports[_0xa950('0x21')]=function(_0x4f777a,_0x3cf01c){if(_0x4f777a[_0xa950('0x48')]['id']){delete _0x4f777a[_0xa950('0x48')]['id'];}return db[_0xa950('0x2a')][_0xa950('0x46')]({'where':{'id':_0x4f777a['params']['id']}})[_0xa950('0x22')](handleEntityNotFound(_0x3cf01c,null))[_0xa950('0x22')](saveUpdates(_0x4f777a[_0xa950('0x48')],null))[_0xa950('0x22')](respondWithResult(_0x3cf01c,null))[_0xa950('0x42')](handleError(_0x3cf01c,null));};exports[_0xa950('0x23')]=function(_0x2752e7,_0x5dd6ce){return db[_0xa950('0x2a')][_0xa950('0x46')]({'where':{'id':_0x2752e7[_0xa950('0x44')]['id']}})['then'](handleEntityNotFound(_0x5dd6ce,null))['then'](removeEntity(_0x5dd6ce,null))[_0xa950('0x42')](handleError(_0x5dd6ce,null));};exports[_0xa950('0x49')]=function(_0x38c370,_0x16572e){return db[_0xa950('0x2a')][_0xa950('0x49')]()[_0xa950('0x22')](respondWithResult(_0x16572e,null))[_0xa950('0x42')](handleError(_0x16572e,null));};
\ No newline at end of file
+var _0xae24=['destroy','stack','name','send','index','map','Cdr','fieldName','type','key','model','query','keys','filters','intersection','attributes','hasOwnProperty','order','where','pick','merge','VIRTUAL','filter','options','findAll','catch','params','rawAttributes','fields','length','includeAll','include','find','create','body','describe','eml-format','zip-dir','request-promise','moment','util','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','update','then'];(function(_0x161cf4,_0x5ab5e4){var _0x12c6a5=function(_0x156a3e){while(--_0x156a3e){_0x161cf4['push'](_0x161cf4['shift']());}};_0x12c6a5(++_0x5ab5e4);}(_0xae24,0x182));var _0x4ae2=function(_0x7a02d5,_0x31119e){_0x7a02d5=_0x7a02d5-0x0;var _0x2bded6=_0xae24[_0x7a02d5];return _0x2bded6;};'use strict';var emlformat=require(_0x4ae2('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4ae2('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4ae2('0x2'));var moment=require(_0x4ae2('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x4ae2('0x4'));var path=require('path');var sox=require(_0x4ae2('0x5'));var csv=require(_0x4ae2('0x6'));var ejs=require(_0x4ae2('0x7'));var fs=require('fs');var fs_extra=require(_0x4ae2('0x8'));var _=require(_0x4ae2('0x9'));var squel=require(_0x4ae2('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x4ae2('0xb'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x4ae2('0xc'));var Redis=require(_0x4ae2('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x4ae2('0xe'));var as=require(_0x4ae2('0xf'));var hardwareService=require(_0x4ae2('0x10'));var logger=require(_0x4ae2('0x11'))('api');var utils=require(_0x4ae2('0x12'));var config=require(_0x4ae2('0x13'));var licenseUtil=require(_0x4ae2('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x25d2b4,_0x22ac1e){_0x22ac1e=_0x22ac1e||0xcc;return function(_0x30d6c4){if(_0x30d6c4){return _0x25d2b4[_0x4ae2('0x15')](_0x22ac1e);}return _0x25d2b4[_0x4ae2('0x16')](_0x22ac1e)[_0x4ae2('0x17')]();};}function respondWithResult(_0x145287,_0x3cabc9){_0x3cabc9=_0x3cabc9||0xc8;return function(_0xd527a0){if(_0xd527a0){return _0x145287['status'](_0x3cabc9)['json'](_0xd527a0);}};}function respondWithFilteredResult(_0x4d5cab,_0x2f3936){return function(_0xf834a1){if(_0xf834a1){var _0x5f447a=typeof _0x2f3936[_0x4ae2('0x18')]===_0x4ae2('0x19')&&typeof _0x2f3936[_0x4ae2('0x1a')]===_0x4ae2('0x19');var _0x428d24=_0xf834a1[_0x4ae2('0x1b')];var _0x3d4259=_0x5f447a?0x0:_0x2f3936[_0x4ae2('0x18')];var _0x41b672=_0x5f447a?_0xf834a1[_0x4ae2('0x1b')]:_0x2f3936['offset']+_0x2f3936['limit'];var _0x44a2d3;if(_0x41b672>=_0x428d24){_0x41b672=_0x428d24;_0x44a2d3=0xc8;}else{_0x44a2d3=0xce;}_0x4d5cab[_0x4ae2('0x16')](_0x44a2d3);return _0x4d5cab['set'](_0x4ae2('0x1c'),_0x3d4259+'-'+_0x41b672+'/'+_0x428d24)[_0x4ae2('0x1d')](_0xf834a1);}return null;};}function patchUpdates(_0xccb3b){return function(_0x2ad222){try{jsonpatch[_0x4ae2('0x1e')](_0x2ad222,_0xccb3b,!![]);}catch(_0x497218){return BPromise[_0x4ae2('0x1f')](_0x497218);}return _0x2ad222['save']();};}function saveUpdates(_0x522165,_0x2ceec4){return function(_0x151b70){if(_0x151b70){return _0x151b70[_0x4ae2('0x20')](_0x522165)[_0x4ae2('0x21')](function(_0xca16bf){return _0xca16bf;});}return null;};}function removeEntity(_0x526768,_0x1005e0){return function(_0x4a0ddb){if(_0x4a0ddb){return _0x4a0ddb[_0x4ae2('0x22')]()[_0x4ae2('0x21')](function(){_0x526768[_0x4ae2('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x43f112,_0x6f0cc6){return function(_0x2454b3){if(!_0x2454b3){_0x43f112[_0x4ae2('0x15')](0x194);}return _0x2454b3;};}function handleError(_0x1c2934,_0x255772){_0x255772=_0x255772||0x1f4;return function(_0x5b2e65){logger['error'](_0x5b2e65[_0x4ae2('0x23')]);if(_0x5b2e65[_0x4ae2('0x24')]){delete _0x5b2e65[_0x4ae2('0x24')];}_0x1c2934[_0x4ae2('0x16')](_0x255772)[_0x4ae2('0x25')](_0x5b2e65);};}exports[_0x4ae2('0x26')]=function(_0x57a377,_0x5ec1fd){var _0x3e2666={},_0x4e7741={},_0x554cff={'count':0x0,'rows':[]};var _0x5e9f03=_[_0x4ae2('0x27')](db[_0x4ae2('0x28')]['rawAttributes'],function(_0x883fd5){return{'name':_0x883fd5[_0x4ae2('0x29')],'type':_0x883fd5[_0x4ae2('0x2a')][_0x4ae2('0x2b')]};});_0x4e7741[_0x4ae2('0x2c')]=_[_0x4ae2('0x27')](_0x5e9f03,_0x4ae2('0x24'));_0x4e7741[_0x4ae2('0x2d')]=_[_0x4ae2('0x2e')](_0x57a377[_0x4ae2('0x2d')]);_0x4e7741[_0x4ae2('0x2f')]=_[_0x4ae2('0x30')](_0x4e7741[_0x4ae2('0x2c')],_0x4e7741[_0x4ae2('0x2d')]);_0x3e2666[_0x4ae2('0x31')]=_[_0x4ae2('0x30')](_0x4e7741[_0x4ae2('0x2c')],qs['fields'](_0x57a377[_0x4ae2('0x2d')]['fields']));_0x3e2666[_0x4ae2('0x31')]=_0x3e2666[_0x4ae2('0x31')]['length']?_0x3e2666[_0x4ae2('0x31')]:_0x4e7741[_0x4ae2('0x2c')];if(!_0x57a377[_0x4ae2('0x2d')][_0x4ae2('0x32')]('nolimit')){_0x3e2666[_0x4ae2('0x1a')]=qs[_0x4ae2('0x1a')](_0x57a377[_0x4ae2('0x2d')][_0x4ae2('0x1a')]);_0x3e2666[_0x4ae2('0x18')]=qs[_0x4ae2('0x18')](_0x57a377[_0x4ae2('0x2d')][_0x4ae2('0x18')]);}_0x3e2666[_0x4ae2('0x33')]=qs['sort'](_0x57a377[_0x4ae2('0x2d')]['sort']);_0x3e2666[_0x4ae2('0x34')]=qs[_0x4ae2('0x2f')](_[_0x4ae2('0x35')](_0x57a377[_0x4ae2('0x2d')],_0x4e7741[_0x4ae2('0x2f')]),_0x5e9f03);if(_0x57a377[_0x4ae2('0x2d')]['filter']){_0x3e2666[_0x4ae2('0x34')]=_[_0x4ae2('0x36')](_0x3e2666[_0x4ae2('0x34')],{'$or':_[_0x4ae2('0x27')](_0x5e9f03,function(_0x49baf9){if(_0x49baf9[_0x4ae2('0x2a')]!==_0x4ae2('0x37')){var _0x2f0d83={};_0x2f0d83[_0x49baf9[_0x4ae2('0x24')]]={'$like':'%'+_0x57a377[_0x4ae2('0x2d')][_0x4ae2('0x38')]+'%'};return _0x2f0d83;}})});}_0x3e2666=_[_0x4ae2('0x36')]({},_0x3e2666,_0x57a377[_0x4ae2('0x39')]);var _0x1d5888={'where':_0x3e2666[_0x4ae2('0x34')]};return db[_0x4ae2('0x28')]['count'](_0x1d5888)[_0x4ae2('0x21')](function(_0x3f0b3f){_0x554cff[_0x4ae2('0x1b')]=_0x3f0b3f;if(_0x57a377[_0x4ae2('0x2d')]['includeAll']){_0x3e2666['include']=[{'all':!![]}];}return db[_0x4ae2('0x28')][_0x4ae2('0x3a')](_0x3e2666);})[_0x4ae2('0x21')](function(_0x3cdf23){_0x554cff['rows']=_0x3cdf23;return _0x554cff;})[_0x4ae2('0x21')](respondWithFilteredResult(_0x5ec1fd,_0x3e2666))[_0x4ae2('0x3b')](handleError(_0x5ec1fd,null));};exports['show']=function(_0x230030,_0x2a85eb){var _0x11a5d9={'raw':!![],'where':{'id':_0x230030[_0x4ae2('0x3c')]['id']}},_0x5a9126={};_0x5a9126[_0x4ae2('0x2c')]=_[_0x4ae2('0x2e')](db[_0x4ae2('0x28')][_0x4ae2('0x3d')]);_0x5a9126[_0x4ae2('0x2d')]=_[_0x4ae2('0x2e')](_0x230030[_0x4ae2('0x2d')]);_0x5a9126['filters']=_[_0x4ae2('0x30')](_0x5a9126[_0x4ae2('0x2c')],_0x5a9126['query']);_0x11a5d9[_0x4ae2('0x31')]=_[_0x4ae2('0x30')](_0x5a9126['model'],qs[_0x4ae2('0x3e')](_0x230030[_0x4ae2('0x2d')]['fields']));_0x11a5d9[_0x4ae2('0x31')]=_0x11a5d9[_0x4ae2('0x31')][_0x4ae2('0x3f')]?_0x11a5d9['attributes']:_0x5a9126['model'];if(_0x230030[_0x4ae2('0x2d')][_0x4ae2('0x40')]){_0x11a5d9[_0x4ae2('0x41')]=[{'all':!![]}];}_0x11a5d9=_[_0x4ae2('0x36')]({},_0x11a5d9,_0x230030['options']);return db[_0x4ae2('0x28')][_0x4ae2('0x42')](_0x11a5d9)[_0x4ae2('0x21')](handleEntityNotFound(_0x2a85eb,null))['then'](respondWithResult(_0x2a85eb,null))[_0x4ae2('0x3b')](handleError(_0x2a85eb,null));};exports[_0x4ae2('0x43')]=function(_0x443548,_0x4e9b6e){return db[_0x4ae2('0x28')][_0x4ae2('0x43')](_0x443548[_0x4ae2('0x44')],{})[_0x4ae2('0x21')](respondWithResult(_0x4e9b6e,0xc9))[_0x4ae2('0x3b')](handleError(_0x4e9b6e,null));};exports[_0x4ae2('0x20')]=function(_0x7f288e,_0x2fe532){if(_0x7f288e[_0x4ae2('0x44')]['id']){delete _0x7f288e[_0x4ae2('0x44')]['id'];}return db['Cdr'][_0x4ae2('0x42')]({'where':{'id':_0x7f288e[_0x4ae2('0x3c')]['id']}})[_0x4ae2('0x21')](handleEntityNotFound(_0x2fe532,null))[_0x4ae2('0x21')](saveUpdates(_0x7f288e[_0x4ae2('0x44')],null))[_0x4ae2('0x21')](respondWithResult(_0x2fe532,null))[_0x4ae2('0x3b')](handleError(_0x2fe532,null));};exports[_0x4ae2('0x22')]=function(_0x4ffe8d,_0xe58384){return db[_0x4ae2('0x28')]['find']({'where':{'id':_0x4ffe8d[_0x4ae2('0x3c')]['id']}})[_0x4ae2('0x21')](handleEntityNotFound(_0xe58384,null))['then'](removeEntity(_0xe58384,null))[_0x4ae2('0x3b')](handleError(_0xe58384,null));};exports['describe']=function(_0x426d29,_0x5e1c80){return db[_0x4ae2('0x28')][_0x4ae2('0x45')]()[_0x4ae2('0x21')](respondWithResult(_0x5e1c80,null))[_0x4ae2('0x3b')](handleError(_0x5e1c80,null));};
\ No newline at end of file
index 1a8ea51..71b5baf 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(_0xd8b4f,_0x3fe442){var _0x172698=function(_0x3bf2a9){while(--_0x3bf2a9){_0xd8b4f['push'](_0xd8b4f['shift']());}};_0x172698(++_0x3fe442);}(_0x9957,0x93));var _0x7995=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x9957[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var logger=require(_0x7995('0x2'))(_0x7995('0x3'));var moment=require('moment');var BPromise=require(_0x7995('0x4'));var rp=require(_0x7995('0x5'));var fs=require('fs');var path=require(_0x7995('0x6'));var rimraf=require(_0x7995('0x7'));var config=require('../../config/environment');var attributes=require(_0x7995('0x8'));module[_0x7995('0x9')]=function(_0x137b6b,_0x219534){return _0x137b6b[_0x7995('0xa')](_0x7995('0xb'),attributes,{'tableName':'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 _0x9957=['dst','src','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./cdr.attributes','exports','define','Cdr','accountcode','calldate','disposition'];(function(_0x43e85a,_0x2b2f76){var _0x53e31e=function(_0x5551d7){while(--_0x5551d7){_0x43e85a['push'](_0x43e85a['shift']());}};_0x53e31e(++_0x2b2f76);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var logger=require(_0x7995('0x2'))(_0x7995('0x3'));var moment=require('moment');var BPromise=require(_0x7995('0x4'));var rp=require(_0x7995('0x5'));var fs=require('fs');var path=require(_0x7995('0x6'));var rimraf=require(_0x7995('0x7'));var config=require('../../config/environment');var attributes=require(_0x7995('0x8'));module[_0x7995('0x9')]=function(_0x137b6b,_0x219534){return _0x137b6b[_0x7995('0xa')](_0x7995('0xb'),attributes,{'tableName':'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
index 0770491..4f1d6e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5597=['Cdr,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','info','request\x20sent','debug','Cdr,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x466957,_0x28f578){var _0x5894ce=function(_0x1e4117){while(--_0x1e4117){_0x466957['push'](_0x466957['shift']());}};_0x5894ce(++_0x28f578);}(_0x5597,0x117));var _0x7559=function(_0x353396,_0x265966){_0x353396=_0x353396-0x0;var _0xd5571=_0x5597[_0x353396];return _0xd5571;};'use strict';var _=require(_0x7559('0x0'));var util=require(_0x7559('0x1'));var moment=require(_0x7559('0x2'));var BPromise=require(_0x7559('0x3'));var rs=require(_0x7559('0x4'));var fs=require('fs');var Redis=require(_0x7559('0x5'));var db=require(_0x7559('0x6'))['db'];var utils=require(_0x7559('0x7'));var logger=require(_0x7559('0x8'))(_0x7559('0x9'));var config=require(_0x7559('0xa'));var jayson=require(_0x7559('0xb'));var client=jayson['client'][_0x7559('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x4912ab,_0x510f1f,_0x4baceb){return new BPromise(function(_0x23da93,_0x5ba008){return client['request'](_0x4912ab,_0x4baceb)[_0x7559('0xd')](function(_0xf5dc2f){logger[_0x7559('0xe')]('Cdr,\x20%s,\x20%s',_0x510f1f,_0x7559('0xf'));logger[_0x7559('0x10')](_0x7559('0x11'),_0x510f1f,_0x7559('0xf'),JSON[_0x7559('0x12')](_0xf5dc2f));if(_0xf5dc2f[_0x7559('0x13')]){if(_0xf5dc2f[_0x7559('0x13')][_0x7559('0x14')]===0x1f4){logger['error'](_0x7559('0x15'),_0x510f1f,_0xf5dc2f[_0x7559('0x13')][_0x7559('0x16')]);return _0x5ba008(_0xf5dc2f[_0x7559('0x13')][_0x7559('0x16')]);}logger[_0x7559('0x13')](_0x7559('0x15'),_0x510f1f,_0xf5dc2f[_0x7559('0x13')][_0x7559('0x16')]);return _0x23da93(_0xf5dc2f['error']['message']);}else{logger['info'](_0x7559('0x15'),_0x510f1f,'request\x20sent');_0x23da93(_0xf5dc2f[_0x7559('0x17')]['message']);}})[_0x7559('0x18')](function(_0x2aace4){logger[_0x7559('0x13')](_0x7559('0x15'),_0x510f1f,_0x2aace4);_0x5ba008(_0x2aace4);});});}
\ No newline at end of file
+var _0xc3a2=['request\x20sent','debug','stringify','error','code','message','info','result','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','Cdr,\x20%s,\x20%s'];(function(_0x22701a,_0x364e37){var _0x493240=function(_0x2d098a){while(--_0x2d098a){_0x22701a['push'](_0x22701a['shift']());}};_0x493240(++_0x364e37);}(_0xc3a2,0x125));var _0x2c3a=function(_0x469acc,_0x19f79b){_0x469acc=_0x469acc-0x0;var _0x41e5cd=_0xc3a2[_0x469acc];return _0x41e5cd;};'use strict';var _=require('lodash');var util=require(_0x2c3a('0x0'));var moment=require(_0x2c3a('0x1'));var BPromise=require(_0x2c3a('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2c3a('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x2c3a('0x4'));var logger=require(_0x2c3a('0x5'))('rpc');var config=require(_0x2c3a('0x6'));var jayson=require(_0x2c3a('0x7'));var client=jayson[_0x2c3a('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x442f1b,_0x4ddce4,_0x127d44){return new BPromise(function(_0x43931c,_0x1a1579){return client[_0x2c3a('0x9')](_0x442f1b,_0x127d44)['then'](function(_0x165e6a){logger['info'](_0x2c3a('0xa'),_0x4ddce4,_0x2c3a('0xb'));logger[_0x2c3a('0xc')]('Cdr,\x20%s,\x20%s,\x20%s',_0x4ddce4,_0x2c3a('0xb'),JSON[_0x2c3a('0xd')](_0x165e6a));if(_0x165e6a['error']){if(_0x165e6a[_0x2c3a('0xe')][_0x2c3a('0xf')]===0x1f4){logger[_0x2c3a('0xe')]('Cdr,\x20%s,\x20%s',_0x4ddce4,_0x165e6a[_0x2c3a('0xe')][_0x2c3a('0x10')]);return _0x1a1579(_0x165e6a[_0x2c3a('0xe')]['message']);}logger[_0x2c3a('0xe')](_0x2c3a('0xa'),_0x4ddce4,_0x165e6a[_0x2c3a('0xe')]['message']);return _0x43931c(_0x165e6a['error']['message']);}else{logger[_0x2c3a('0x11')](_0x2c3a('0xa'),_0x4ddce4,_0x2c3a('0xb'));_0x43931c(_0x165e6a[_0x2c3a('0x12')][_0x2c3a('0x10')]);}})['catch'](function(_0x29d999){logger[_0x2c3a('0xe')]('Cdr,\x20%s,\x20%s',_0x4ddce4,_0x29d999);_0x1a1579(_0x29d999);});});}
\ No newline at end of file
index 548bee8..803e891 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(_0x47427f,_0x410bf6){var _0x36f236=function(_0x506227){while(--_0x506227){_0x47427f['push'](_0x47427f['shift']());}};_0x36f236(++_0x410bf6);}(_0xb10b,0x12a));var _0xbb10=function(_0x4717b8,_0x565c94){_0x4717b8=_0x4717b8-0x0;var _0x3daaa8=_0xb10b[_0x4717b8];return _0x3daaa8;};'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 _0xa9e0=['isAuthenticated','create','put','/:id','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cdr.controller','get','index','/describe','show','post'];(function(_0x1d50f2,_0x3c3ec6){var _0x3769b8=function(_0x50926a){while(--_0x50926a){_0x1d50f2['push'](_0x1d50f2['shift']());}};_0x3769b8(++_0x3c3ec6);}(_0xa9e0,0x123));var _0x0a9e=function(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0xa9e0[_0x30ae5e];return _0x1f2e93;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0xc')]('/',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')](_0x0a9e('0x10'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x11')]);module[_0x0a9e('0x12')]=router;
\ No newline at end of file
index d1109c7..29c7f99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d4c=['INTEGER','noop','TEXT','STRING','*,*,*,*','exports'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0x2d4c,0xdd));var _0xc2d4=function(_0x5854dc,_0xf3177a){_0x5854dc=_0x5854dc-0x0;var _0x167b6d=_0x2d4c[_0x5854dc];return _0x167b6d;};'use strict';var Sequelize=require('sequelize');module[_0xc2d4('0x0')]={'priority':{'type':Sequelize[_0xc2d4('0x1')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xc2d4('0x2')},'appdata':{'type':Sequelize[_0xc2d4('0x3')]()},'description':{'type':Sequelize[_0xc2d4('0x4')]},'interval':{'type':Sequelize[_0xc2d4('0x4')],'defaultValue':_0xc2d4('0x5')}};
\ No newline at end of file
+var _0x7741=['TEXT','*,*,*,*','sequelize','exports','INTEGER','STRING','noop'];(function(_0x19025e,_0x122137){var _0x598267=function(_0x5a8f7f){while(--_0x5a8f7f){_0x19025e['push'](_0x19025e['shift']());}};_0x598267(++_0x122137);}(_0x7741,0x1ad));var _0x1774=function(_0x1e3c16,_0x372caa){_0x1e3c16=_0x1e3c16-0x0;var _0x47a0c9=_0x7741[_0x1e3c16];return _0x47a0c9;};'use strict';var Sequelize=require(_0x1774('0x0'));module[_0x1774('0x1')]={'priority':{'type':Sequelize[_0x1774('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x1774('0x3')],'allowNull':![],'defaultValue':_0x1774('0x4')},'appdata':{'type':Sequelize[_0x1774('0x5')]()},'description':{'type':Sequelize[_0x1774('0x3')]},'interval':{'type':Sequelize[_0x1774('0x3')],'defaultValue':_0x1774('0x6')}};
\ No newline at end of file
index 0f6733a..df91c32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9000=['../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','count','limit','set','Content-Range','json','apply','reject','then','destroy','stack','name','show','params','keys','rawAttributes','query','filters','intersection','model','fields','attributes','length','includeAll','merge','options','ChatApplication','find','catch','update','body','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0xd6bcb2,_0x5f5309){var _0x5df1d4=function(_0x4a299e){while(--_0x4a299e){_0xd6bcb2['push'](_0xd6bcb2['shift']());}};_0x5df1d4(++_0x5f5309);}(_0x9000,0x19e));var _0x0900=function(_0x1f0c9b,_0x234e61){_0x1f0c9b=_0x1f0c9b-0x0;var _0x1283e6=_0x9000[_0x1f0c9b];return _0x1283e6;};'use strict';var emlformat=require(_0x0900('0x0'));var rimraf=require(_0x0900('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0900('0x2'));var rp=require(_0x0900('0x3'));var moment=require(_0x0900('0x4'));var BPromise=require(_0x0900('0x5'));var Mustache=require(_0x0900('0x6'));var util=require(_0x0900('0x7'));var path=require(_0x0900('0x8'));var sox=require(_0x0900('0x9'));var csv=require(_0x0900('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0900('0xb'));var _=require('lodash');var squel=require(_0x0900('0xc'));var crypto=require(_0x0900('0xd'));var jsforce=require(_0x0900('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x0900('0xf'));var Papa=require(_0x0900('0x10'));var Redis=require(_0x0900('0x11'));var authService=require(_0x0900('0x12'));var qs=require(_0x0900('0x13'));var as=require(_0x0900('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0900('0x15'))(_0x0900('0x16'));var utils=require(_0x0900('0x17'));var config=require(_0x0900('0x18'));var licenseUtil=require(_0x0900('0x19'));var db=require(_0x0900('0x1a'))['db'];function respondWithStatusCode(_0xe8ae24,_0x11d1b6){_0x11d1b6=_0x11d1b6||0xcc;return function(_0x3a235b){if(_0x3a235b){return _0xe8ae24[_0x0900('0x1b')](_0x11d1b6);}return _0xe8ae24['status'](_0x11d1b6)[_0x0900('0x1c')]();};}function respondWithResult(_0x183ca6,_0x4ea071){_0x4ea071=_0x4ea071||0xc8;return function(_0x52bb65){if(_0x52bb65){return _0x183ca6[_0x0900('0x1d')](_0x4ea071)['json'](_0x52bb65);}};}function respondWithFilteredResult(_0x3d58eb,_0x4f5eee){return function(_0x35dbd6){if(_0x35dbd6){var _0xb184b6=typeof _0x4f5eee[_0x0900('0x1e')]===_0x0900('0x1f')&&typeof _0x4f5eee['limit']==='undefined';var _0x2a6b91=_0x35dbd6[_0x0900('0x20')];var _0x3f09ee=_0xb184b6?0x0:_0x4f5eee[_0x0900('0x1e')];var _0x5bc7ec=_0xb184b6?_0x35dbd6[_0x0900('0x20')]:_0x4f5eee[_0x0900('0x1e')]+_0x4f5eee[_0x0900('0x21')];var _0x34968a;if(_0x5bc7ec>=_0x2a6b91){_0x5bc7ec=_0x2a6b91;_0x34968a=0xc8;}else{_0x34968a=0xce;}_0x3d58eb[_0x0900('0x1d')](_0x34968a);return _0x3d58eb[_0x0900('0x22')](_0x0900('0x23'),_0x3f09ee+'-'+_0x5bc7ec+'/'+_0x2a6b91)[_0x0900('0x24')](_0x35dbd6);}return null;};}function patchUpdates(_0x4de1d3){return function(_0x5ed4e8){try{jsonpatch[_0x0900('0x25')](_0x5ed4e8,_0x4de1d3,!![]);}catch(_0x5c54a9){return BPromise[_0x0900('0x26')](_0x5c54a9);}return _0x5ed4e8['save']();};}function saveUpdates(_0x41b74a,_0x1f3738){return function(_0x3dc6bc){if(_0x3dc6bc){return _0x3dc6bc['update'](_0x41b74a)[_0x0900('0x27')](function(_0x492a51){return _0x492a51;});}return null;};}function removeEntity(_0x2fd307,_0x369f5a){return function(_0xce8f6e){if(_0xce8f6e){return _0xce8f6e[_0x0900('0x28')]()[_0x0900('0x27')](function(){_0x2fd307[_0x0900('0x1d')](0xcc)[_0x0900('0x1c')]();});}};}function handleEntityNotFound(_0x51fe9f,_0x7b6765){return function(_0x34d63f){if(!_0x34d63f){_0x51fe9f[_0x0900('0x1b')](0x194);}return _0x34d63f;};}function handleError(_0x569856,_0x574307){_0x574307=_0x574307||0x1f4;return function(_0x51ee3a){logger['error'](_0x51ee3a[_0x0900('0x29')]);if(_0x51ee3a[_0x0900('0x2a')]){delete _0x51ee3a['name'];}_0x569856[_0x0900('0x1d')](_0x574307)['send'](_0x51ee3a);};}exports[_0x0900('0x2b')]=function(_0x13fa35,_0x2a8a71){var _0x257914={'raw':!![],'where':{'id':_0x13fa35[_0x0900('0x2c')]['id']}},_0x3fbd95={};_0x3fbd95['model']=_[_0x0900('0x2d')](db['ChatApplication'][_0x0900('0x2e')]);_0x3fbd95[_0x0900('0x2f')]=_[_0x0900('0x2d')](_0x13fa35['query']);_0x3fbd95[_0x0900('0x30')]=_[_0x0900('0x31')](_0x3fbd95[_0x0900('0x32')],_0x3fbd95[_0x0900('0x2f')]);_0x257914['attributes']=_[_0x0900('0x31')](_0x3fbd95['model'],qs[_0x0900('0x33')](_0x13fa35[_0x0900('0x2f')][_0x0900('0x33')]));_0x257914[_0x0900('0x34')]=_0x257914[_0x0900('0x34')][_0x0900('0x35')]?_0x257914['attributes']:_0x3fbd95[_0x0900('0x32')];if(_0x13fa35[_0x0900('0x2f')][_0x0900('0x36')]){_0x257914['include']=[{'all':!![]}];}_0x257914=_[_0x0900('0x37')]({},_0x257914,_0x13fa35[_0x0900('0x38')]);return db[_0x0900('0x39')][_0x0900('0x3a')](_0x257914)[_0x0900('0x27')](handleEntityNotFound(_0x2a8a71,null))[_0x0900('0x27')](respondWithResult(_0x2a8a71,null))[_0x0900('0x3b')](handleError(_0x2a8a71,null));};exports[_0x0900('0x3c')]=function(_0x4b06e2,_0x4d67ad){if(_0x4b06e2['body']['id']){delete _0x4b06e2[_0x0900('0x3d')]['id'];}return db[_0x0900('0x39')][_0x0900('0x3a')]({'where':{'id':_0x4b06e2['params']['id']}})['then'](handleEntityNotFound(_0x4d67ad,null))[_0x0900('0x27')](saveUpdates(_0x4b06e2[_0x0900('0x3d')],null))[_0x0900('0x27')](respondWithResult(_0x4d67ad,null))['catch'](handleError(_0x4d67ad,null));};exports[_0x0900('0x28')]=function(_0x2622d1,_0x108d1a){return db[_0x0900('0x39')][_0x0900('0x3a')]({'where':{'id':_0x2622d1[_0x0900('0x2c')]['id']}})[_0x0900('0x27')](handleEntityNotFound(_0x108d1a,null))[_0x0900('0x27')](removeEntity(_0x108d1a,null))[_0x0900('0x3b')](handleError(_0x108d1a,null));};
\ No newline at end of file
+var _0xab3a=['find','catch','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','status','end','undefined','count','offset','limit','Content-Range','json','apply','update','then','destroy','sendStatus','stack','name','show','params','model','keys','ChatApplication','rawAttributes','query','filters','intersection','attributes','fields','includeAll','include'];(function(_0x36436d,_0x20292c){var _0x34615d=function(_0x5447af){while(--_0x5447af){_0x36436d['push'](_0x36436d['shift']());}};_0x34615d(++_0x20292c);}(_0xab3a,0x1d3));var _0xaab3=function(_0x300d0e,_0x4fcd1b){_0x300d0e=_0x300d0e-0x0;var _0x1903cb=_0xab3a[_0x300d0e];return _0x1903cb;};'use strict';var emlformat=require(_0xaab3('0x0'));var rimraf=require(_0xaab3('0x1'));var zipdir=require(_0xaab3('0x2'));var jsonpatch=require(_0xaab3('0x3'));var rp=require(_0xaab3('0x4'));var moment=require(_0xaab3('0x5'));var BPromise=require(_0xaab3('0x6'));var Mustache=require(_0xaab3('0x7'));var util=require(_0xaab3('0x8'));var path=require(_0xaab3('0x9'));var sox=require(_0xaab3('0xa'));var csv=require(_0xaab3('0xb'));var ejs=require(_0xaab3('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xaab3('0xd'));var crypto=require(_0xaab3('0xe'));var jsforce=require(_0xaab3('0xf'));var deskjs=require(_0xaab3('0x10'));var toCsv=require(_0xaab3('0xb'));var querystring=require(_0xaab3('0x11'));var Papa=require(_0xaab3('0x12'));var Redis=require(_0xaab3('0x13'));var authService=require(_0xaab3('0x14'));var qs=require(_0xaab3('0x15'));var as=require(_0xaab3('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xaab3('0x17'));var utils=require(_0xaab3('0x18'));var config=require(_0xaab3('0x19'));var licenseUtil=require(_0xaab3('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2c9bab,_0x536fd2){_0x536fd2=_0x536fd2||0xcc;return function(_0x1be7b2){if(_0x1be7b2){return _0x2c9bab['sendStatus'](_0x536fd2);}return _0x2c9bab[_0xaab3('0x1b')](_0x536fd2)[_0xaab3('0x1c')]();};}function respondWithResult(_0x4ccbf5,_0x553449){_0x553449=_0x553449||0xc8;return function(_0x43ca09){if(_0x43ca09){return _0x4ccbf5[_0xaab3('0x1b')](_0x553449)['json'](_0x43ca09);}};}function respondWithFilteredResult(_0x2d215e,_0xcc28ed){return function(_0x2aea7a){if(_0x2aea7a){var _0x5dbe3e=typeof _0xcc28ed['offset']==='undefined'&&typeof _0xcc28ed['limit']===_0xaab3('0x1d');var _0x3c5d63=_0x2aea7a[_0xaab3('0x1e')];var _0x5a3ecc=_0x5dbe3e?0x0:_0xcc28ed[_0xaab3('0x1f')];var _0x46aefc=_0x5dbe3e?_0x2aea7a[_0xaab3('0x1e')]:_0xcc28ed[_0xaab3('0x1f')]+_0xcc28ed[_0xaab3('0x20')];var _0x4c0d11;if(_0x46aefc>=_0x3c5d63){_0x46aefc=_0x3c5d63;_0x4c0d11=0xc8;}else{_0x4c0d11=0xce;}_0x2d215e[_0xaab3('0x1b')](_0x4c0d11);return _0x2d215e['set'](_0xaab3('0x21'),_0x5a3ecc+'-'+_0x46aefc+'/'+_0x3c5d63)[_0xaab3('0x22')](_0x2aea7a);}return null;};}function patchUpdates(_0x43a8d4){return function(_0x3588a9){try{jsonpatch[_0xaab3('0x23')](_0x3588a9,_0x43a8d4,!![]);}catch(_0x537701){return BPromise['reject'](_0x537701);}return _0x3588a9['save']();};}function saveUpdates(_0x5c5d8b,_0x5d7bf6){return function(_0x1fa934){if(_0x1fa934){return _0x1fa934[_0xaab3('0x24')](_0x5c5d8b)[_0xaab3('0x25')](function(_0x3a3000){return _0x3a3000;});}return null;};}function removeEntity(_0xaebe3e,_0x1816ab){return function(_0x3c552f){if(_0x3c552f){return _0x3c552f[_0xaab3('0x26')]()[_0xaab3('0x25')](function(){_0xaebe3e[_0xaab3('0x1b')](0xcc)[_0xaab3('0x1c')]();});}};}function handleEntityNotFound(_0x3097ec,_0x1199c1){return function(_0x4dd8fe){if(!_0x4dd8fe){_0x3097ec[_0xaab3('0x27')](0x194);}return _0x4dd8fe;};}function handleError(_0x599316,_0x28eaff){_0x28eaff=_0x28eaff||0x1f4;return function(_0x2904f8){logger['error'](_0x2904f8[_0xaab3('0x28')]);if(_0x2904f8[_0xaab3('0x29')]){delete _0x2904f8[_0xaab3('0x29')];}_0x599316['status'](_0x28eaff)['send'](_0x2904f8);};}exports[_0xaab3('0x2a')]=function(_0x205996,_0x2738ea){var _0x4a7558={'raw':!![],'where':{'id':_0x205996[_0xaab3('0x2b')]['id']}},_0x168eb0={};_0x168eb0[_0xaab3('0x2c')]=_[_0xaab3('0x2d')](db[_0xaab3('0x2e')][_0xaab3('0x2f')]);_0x168eb0[_0xaab3('0x30')]=_[_0xaab3('0x2d')](_0x205996[_0xaab3('0x30')]);_0x168eb0[_0xaab3('0x31')]=_[_0xaab3('0x32')](_0x168eb0[_0xaab3('0x2c')],_0x168eb0[_0xaab3('0x30')]);_0x4a7558[_0xaab3('0x33')]=_['intersection'](_0x168eb0[_0xaab3('0x2c')],qs[_0xaab3('0x34')](_0x205996[_0xaab3('0x30')][_0xaab3('0x34')]));_0x4a7558[_0xaab3('0x33')]=_0x4a7558[_0xaab3('0x33')]['length']?_0x4a7558[_0xaab3('0x33')]:_0x168eb0['model'];if(_0x205996['query'][_0xaab3('0x35')]){_0x4a7558[_0xaab3('0x36')]=[{'all':!![]}];}_0x4a7558=_['merge']({},_0x4a7558,_0x205996['options']);return db[_0xaab3('0x2e')][_0xaab3('0x37')](_0x4a7558)[_0xaab3('0x25')](handleEntityNotFound(_0x2738ea,null))['then'](respondWithResult(_0x2738ea,null))[_0xaab3('0x38')](handleError(_0x2738ea,null));};exports[_0xaab3('0x24')]=function(_0x1092b0,_0x5a7f3f){if(_0x1092b0['body']['id']){delete _0x1092b0[_0xaab3('0x39')]['id'];}return db[_0xaab3('0x2e')][_0xaab3('0x37')]({'where':{'id':_0x1092b0[_0xaab3('0x2b')]['id']}})[_0xaab3('0x25')](handleEntityNotFound(_0x5a7f3f,null))[_0xaab3('0x25')](saveUpdates(_0x1092b0['body'],null))[_0xaab3('0x25')](respondWithResult(_0x5a7f3f,null))[_0xaab3('0x38')](handleError(_0x5a7f3f,null));};exports[_0xaab3('0x26')]=function(_0x4f0aa3,_0x2fa351){return db[_0xaab3('0x2e')][_0xaab3('0x37')]({'where':{'id':_0x4f0aa3[_0xaab3('0x2b')]['id']}})[_0xaab3('0x25')](handleEntityNotFound(_0x2fa351,null))[_0xaab3('0x25')](removeEntity(_0x2fa351,null))['catch'](handleError(_0x2fa351,null));};
\ No newline at end of file
index 42281ad..9a87508 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa61f=['bluebird','request-promise','path','../../config/environment','define','ChatApplication','chat_applications','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment'];(function(_0x3b5991,_0x1e02a1){var _0x3cd934=function(_0x23556a){while(--_0x23556a){_0x3b5991['push'](_0x3b5991['shift']());}};_0x3cd934(++_0x1e02a1);}(_0xa61f,0x14d));var _0xfa61=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0xa61f[_0x46698a];return _0x356db0;};'use strict';var _=require(_0xfa61('0x0'));var util=require(_0xfa61('0x1'));var logger=require(_0xfa61('0x2'))(_0xfa61('0x3'));var moment=require(_0xfa61('0x4'));var BPromise=require(_0xfa61('0x5'));var rp=require(_0xfa61('0x6'));var fs=require('fs');var path=require(_0xfa61('0x7'));var rimraf=require('rimraf');var config=require(_0xfa61('0x8'));var attributes=require('./chatApplication.attributes');module['exports']=function(_0x1ba2b0,_0x662720){return _0x1ba2b0[_0xfa61('0x9')](_0xfa61('0xa'),attributes,{'tableName':_0xfa61('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xfa61('0xc')});};
\ No newline at end of file
+var _0x8cb2=['../../config/logger','api','request-promise','path','../../config/environment','define','ChatApplication','chat_applications','utf8mb4_unicode_ci','lodash','util'];(function(_0x4b34c1,_0x4dcff0){var _0xf2544d=function(_0x51214a){while(--_0x51214a){_0x4b34c1['push'](_0x4b34c1['shift']());}};_0xf2544d(++_0x4dcff0);}(_0x8cb2,0xcf));var _0x28cb=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x8cb2[_0x397e5f];return _0x5302b8;};'use strict';var _=require(_0x28cb('0x0'));var util=require(_0x28cb('0x1'));var logger=require(_0x28cb('0x2'))(_0x28cb('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x28cb('0x4'));var fs=require('fs');var path=require(_0x28cb('0x5'));var rimraf=require('rimraf');var config=require(_0x28cb('0x6'));var attributes=require('./chatApplication.attributes');module['exports']=function(_0x51e405,_0x10a281){return _0x51e405[_0x28cb('0x7')](_0x28cb('0x8'),attributes,{'tableName':_0x28cb('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x28cb('0xa')});};
\ No newline at end of file
index 5167e1a..f8feb27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8dee=['result','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','ChatApplication,\x20%s,\x20%s','request\x20sent','ChatApplication,\x20%s,\x20%s,\x20%s','stringify','error','message'];(function(_0x569aed,_0x237f17){var _0xe8992d=function(_0x5f3929){while(--_0x5f3929){_0x569aed['push'](_0x569aed['shift']());}};_0xe8992d(++_0x237f17);}(_0x8dee,0x8d));var _0xe8de=function(_0x4fbce9,_0x372bfc){_0x4fbce9=_0x4fbce9-0x0;var _0x4dca41=_0x8dee[_0x4fbce9];return _0x4dca41;};'use strict';var _=require('lodash');var util=require(_0xe8de('0x0'));var moment=require(_0xe8de('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe8de('0x2'));var db=require(_0xe8de('0x3'))['db'];var utils=require(_0xe8de('0x4'));var logger=require(_0xe8de('0x5'))(_0xe8de('0x6'));var config=require(_0xe8de('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xe8de('0x8')][_0xe8de('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3bf965,_0x49576c,_0x5a60b8){return new BPromise(function(_0x3f47ac,_0x1404e3){return client[_0xe8de('0xa')](_0x3bf965,_0x5a60b8)[_0xe8de('0xb')](function(_0x7747da){logger[_0xe8de('0xc')](_0xe8de('0xd'),_0x49576c,_0xe8de('0xe'));logger['debug'](_0xe8de('0xf'),_0x49576c,_0xe8de('0xe'),JSON[_0xe8de('0x10')](_0x7747da));if(_0x7747da[_0xe8de('0x11')]){if(_0x7747da[_0xe8de('0x11')]['code']===0x1f4){logger[_0xe8de('0x11')](_0xe8de('0xd'),_0x49576c,_0x7747da['error'][_0xe8de('0x12')]);return _0x1404e3(_0x7747da[_0xe8de('0x11')]['message']);}logger[_0xe8de('0x11')](_0xe8de('0xd'),_0x49576c,_0x7747da[_0xe8de('0x11')]['message']);return _0x3f47ac(_0x7747da[_0xe8de('0x11')]['message']);}else{logger[_0xe8de('0xc')](_0xe8de('0xd'),_0x49576c,_0xe8de('0xe'));_0x3f47ac(_0x7747da[_0xe8de('0x13')][_0xe8de('0x12')]);}})['catch'](function(_0x40e611){logger[_0xe8de('0x11')](_0xe8de('0xd'),_0x49576c,_0x40e611);_0x1404e3(_0x40e611);});});}
\ No newline at end of file
+var _0x51b9=['randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','ChatApplication,\x20%s,\x20%s','request\x20sent','debug','ChatApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','moment','bluebird'];(function(_0x513dde,_0x1758d6){var _0x22bc1e=function(_0x4db21c){while(--_0x4db21c){_0x513dde['push'](_0x513dde['shift']());}};_0x22bc1e(++_0x1758d6);}(_0x51b9,0x1c5));var _0x951b=function(_0x38604d,_0x25602a){_0x38604d=_0x38604d-0x0;var _0x1b66b0=_0x51b9[_0x38604d];return _0x1b66b0;};'use strict';var _=require(_0x951b('0x0'));var util=require('util');var moment=require(_0x951b('0x1'));var BPromise=require(_0x951b('0x2'));var rs=require(_0x951b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x951b('0x4'))['db'];var utils=require(_0x951b('0x5'));var logger=require(_0x951b('0x6'))(_0x951b('0x7'));var config=require(_0x951b('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x951b('0x9')][_0x951b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xc18106,_0x5799ee,_0x3f2348){return new BPromise(function(_0xa92c24,_0x51099a){return client[_0x951b('0xb')](_0xc18106,_0x3f2348)[_0x951b('0xc')](function(_0x36553d){logger[_0x951b('0xd')](_0x951b('0xe'),_0x5799ee,_0x951b('0xf'));logger[_0x951b('0x10')](_0x951b('0x11'),_0x5799ee,_0x951b('0xf'),JSON[_0x951b('0x12')](_0x36553d));if(_0x36553d[_0x951b('0x13')]){if(_0x36553d['error'][_0x951b('0x14')]===0x1f4){logger[_0x951b('0x13')](_0x951b('0xe'),_0x5799ee,_0x36553d['error'][_0x951b('0x15')]);return _0x51099a(_0x36553d[_0x951b('0x13')][_0x951b('0x15')]);}logger[_0x951b('0x13')](_0x951b('0xe'),_0x5799ee,_0x36553d[_0x951b('0x13')]['message']);return _0xa92c24(_0x36553d['error']['message']);}else{logger[_0x951b('0xd')]('ChatApplication,\x20%s,\x20%s',_0x5799ee,'request\x20sent');_0xa92c24(_0x36553d[_0x951b('0x16')][_0x951b('0x15')]);}})[_0x951b('0x17')](function(_0x59a88e){logger[_0x951b('0x13')]('ChatApplication,\x20%s,\x20%s',_0x5799ee,_0x59a88e);_0x51099a(_0x59a88e);});});}
\ No newline at end of file
index 35cfcd5..ad8c813 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb30=['exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatApplication.controller','get','/:id','isAuthenticated','show','put','update','delete','destroy'];(function(_0x22e496,_0x4529b3){var _0x4e6c1a=function(_0x3db486){while(--_0x3db486){_0x22e496['push'](_0x22e496['shift']());}};_0x4e6c1a(++_0x4529b3);}(_0xbb30,0x169));var _0x0bb3=function(_0x1d4940,_0x31b9d1){_0x1d4940=_0x1d4940-0x0;var _0x167b1f=_0xbb30[_0x1d4940];return _0x167b1f;};'use strict';var multer=require(_0x0bb3('0x0'));var util=require(_0x0bb3('0x1'));var path=require(_0x0bb3('0x2'));var timeout=require(_0x0bb3('0x3'));var express=require(_0x0bb3('0x4'));var router=express[_0x0bb3('0x5')]();var fs_extra=require(_0x0bb3('0x6'));var auth=require(_0x0bb3('0x7'));var interaction=require(_0x0bb3('0x8'));var config=require(_0x0bb3('0x9'));var controller=require(_0x0bb3('0xa'));router[_0x0bb3('0xb')](_0x0bb3('0xc'),auth[_0x0bb3('0xd')](),controller[_0x0bb3('0xe')]);router[_0x0bb3('0xf')](_0x0bb3('0xc'),auth[_0x0bb3('0xd')](),controller[_0x0bb3('0x10')]);router[_0x0bb3('0x11')](_0x0bb3('0xc'),auth['isAuthenticated'](),controller[_0x0bb3('0x12')]);module[_0x0bb3('0x13')]=router;
\ No newline at end of file
+var _0xc90d=['multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatApplication.controller','get','/:id','isAuthenticated','show','put','update','delete'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xc90d,0xaa));var _0xdc90=function(_0xc6be3a,_0x540e05){_0xc6be3a=_0xc6be3a-0x0;var _0x56a310=_0xc90d[_0xc6be3a];return _0x56a310;};'use strict';var multer=require(_0xdc90('0x0'));var util=require(_0xdc90('0x1'));var path=require(_0xdc90('0x2'));var timeout=require(_0xdc90('0x3'));var express=require(_0xdc90('0x4'));var router=express['Router']();var fs_extra=require(_0xdc90('0x5'));var auth=require(_0xdc90('0x6'));var interaction=require(_0xdc90('0x7'));var config=require(_0xdc90('0x8'));var controller=require(_0xdc90('0x9'));router[_0xdc90('0xa')](_0xdc90('0xb'),auth[_0xdc90('0xc')](),controller[_0xdc90('0xd')]);router[_0xdc90('0xe')](_0xdc90('0xb'),auth[_0xdc90('0xc')](),controller[_0xdc90('0xf')]);router[_0xdc90('0x10')](_0xdc90('0xb'),auth[_0xdc90('0xc')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 714e74f..5239dec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc03=['exports','STRING','BOOLEAN','sequelize'];(function(_0x567fef,_0x30e116){var _0x3a637a=function(_0xf383bb){while(--_0xf383bb){_0x567fef['push'](_0x567fef['shift']());}};_0x3a637a(++_0x30e116);}(_0xfc03,0x103));var _0x3fc0=function(_0x4ae6ef,_0xc2af80){_0x4ae6ef=_0x4ae6ef-0x0;var _0x3cbb4e=_0xfc03[_0x4ae6ef];return _0x3cbb4e;};'use strict';var Sequelize=require(_0x3fc0('0x0'));module[_0x3fc0('0x1')]={'name':{'type':Sequelize[_0x3fc0('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x3fc0('0x2')]},'write':{'type':Sequelize[_0x3fc0('0x3')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x0355=['exports','STRING','sequelize'];(function(_0x125966,_0x4dffd3){var _0x36847a=function(_0x4413a7){while(--_0x4413a7){_0x125966['push'](_0x125966['shift']());}};_0x36847a(++_0x4dffd3);}(_0x0355,0xb6));var _0x5035=function(_0x293fc0,_0x2f6520){_0x293fc0=_0x293fc0-0x0;var _0xbc9d8c=_0x0355[_0x293fc0];return _0xbc9d8c;};'use strict';var Sequelize=require(_0x5035('0x0'));module[_0x5035('0x1')]={'name':{'type':Sequelize[_0x5035('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x5035('0x2')]},'write':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index b8d4bcb..f0d79c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d5f=['name','send','map','ChatGroup','rawAttributes','fieldName','key','query','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','filters','where','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','length','find','create','body','describe','getUnread','ChatInternalMessage','toInteger','addMembers','ids','findOne','User','pick','filter','getMembers','removeMembers','ChatGroupId','getMessages','format','YYYY-MM-DD\x20HH:mm:ss','eml-format','fast-json-patch','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','redis','defaults','socket.io-emitter','./chatGroup.socket','register','status','end','json','undefined','limit','offset','count','set','apply','reject','save','update','then','destroy','sendStatus','error','stack'];(function(_0x58b8c8,_0x310b46){var _0x53b222=function(_0x47d783){while(--_0x47d783){_0x58b8c8['push'](_0x58b8c8['shift']());}};_0x53b222(++_0x310b46);}(_0x6d5f,0x90));var _0xf6d5=function(_0x7f1e57,_0x6e3251){_0x7f1e57=_0x7f1e57-0x0;var _0x4dee17=_0x6d5f[_0x7f1e57];return _0x4dee17;};'use strict';var emlformat=require(_0xf6d5('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xf6d5('0x1'));var rp=require('request-promise');var moment=require(_0xf6d5('0x2'));var BPromise=require(_0xf6d5('0x3'));var Mustache=require(_0xf6d5('0x4'));var util=require('util');var path=require(_0xf6d5('0x5'));var sox=require('sox');var csv=require(_0xf6d5('0x6'));var ejs=require(_0xf6d5('0x7'));var fs=require('fs');var fs_extra=require(_0xf6d5('0x8'));var _=require(_0xf6d5('0x9'));var squel=require('squel');var crypto=require(_0xf6d5('0xa'));var jsforce=require(_0xf6d5('0xb'));var deskjs=require(_0xf6d5('0xc'));var toCsv=require(_0xf6d5('0x6'));var querystring=require(_0xf6d5('0xd'));var Papa=require(_0xf6d5('0xe'));var Redis=require('ioredis');var authService=require(_0xf6d5('0xf'));var qs=require(_0xf6d5('0x10'));var as=require(_0xf6d5('0x11'));var hardwareService=require(_0xf6d5('0x12'));var logger=require('../../config/logger')(_0xf6d5('0x13'));var utils=require(_0xf6d5('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xf6d5('0x15'));var db=require('../../mysqldb')['db'];config[_0xf6d5('0x16')]=_[_0xf6d5('0x17')](config[_0xf6d5('0x16')],{'host':'localhost','port':0x18eb});var socket=require(_0xf6d5('0x18'))(new Redis(config['redis']));require(_0xf6d5('0x19'))[_0xf6d5('0x1a')](socket);function respondWithStatusCode(_0x2fb6de,_0x156cf6){_0x156cf6=_0x156cf6||0xcc;return function(_0x146547){if(_0x146547){return _0x2fb6de['sendStatus'](_0x156cf6);}return _0x2fb6de[_0xf6d5('0x1b')](_0x156cf6)[_0xf6d5('0x1c')]();};}function respondWithResult(_0x14b58c,_0x5340d6){_0x5340d6=_0x5340d6||0xc8;return function(_0xc52501){if(_0xc52501){return _0x14b58c[_0xf6d5('0x1b')](_0x5340d6)[_0xf6d5('0x1d')](_0xc52501);}};}function respondWithFilteredResult(_0x36b13f,_0x579363){return function(_0xfbc928){if(_0xfbc928){var _0x31556c=typeof _0x579363['offset']===_0xf6d5('0x1e')&&typeof _0x579363[_0xf6d5('0x1f')]==='undefined';var _0x17628b=_0xfbc928['count'];var _0x15b7b4=_0x31556c?0x0:_0x579363[_0xf6d5('0x20')];var _0x1cee5a=_0x31556c?_0xfbc928[_0xf6d5('0x21')]:_0x579363[_0xf6d5('0x20')]+_0x579363[_0xf6d5('0x1f')];var _0x182fa1;if(_0x1cee5a>=_0x17628b){_0x1cee5a=_0x17628b;_0x182fa1=0xc8;}else{_0x182fa1=0xce;}_0x36b13f[_0xf6d5('0x1b')](_0x182fa1);return _0x36b13f[_0xf6d5('0x22')]('Content-Range',_0x15b7b4+'-'+_0x1cee5a+'/'+_0x17628b)[_0xf6d5('0x1d')](_0xfbc928);}return null;};}function patchUpdates(_0x362740){return function(_0x3cc015){try{jsonpatch[_0xf6d5('0x23')](_0x3cc015,_0x362740,!![]);}catch(_0x5f2c6d){return BPromise[_0xf6d5('0x24')](_0x5f2c6d);}return _0x3cc015[_0xf6d5('0x25')]();};}function saveUpdates(_0x1fbe2e,_0x97374e){return function(_0x1dd495){if(_0x1dd495){return _0x1dd495[_0xf6d5('0x26')](_0x1fbe2e)[_0xf6d5('0x27')](function(_0x1a817a){return _0x1a817a;});}return null;};}function removeEntity(_0x47dbc6,_0x503720){return function(_0x85033){if(_0x85033){return _0x85033[_0xf6d5('0x28')]()[_0xf6d5('0x27')](function(){_0x47dbc6['status'](0xcc)[_0xf6d5('0x1c')]();});}};}function handleEntityNotFound(_0x14354e,_0x48ffb7){return function(_0x58e1c7){if(!_0x58e1c7){_0x14354e[_0xf6d5('0x29')](0x194);}return _0x58e1c7;};}function handleError(_0x817b9a,_0x2080ad){_0x2080ad=_0x2080ad||0x1f4;return function(_0x3a9ad3){logger[_0xf6d5('0x2a')](_0x3a9ad3[_0xf6d5('0x2b')]);if(_0x3a9ad3[_0xf6d5('0x2c')]){delete _0x3a9ad3[_0xf6d5('0x2c')];}_0x817b9a[_0xf6d5('0x1b')](_0x2080ad)[_0xf6d5('0x2d')](_0x3a9ad3);};}exports['index']=function(_0x1a7b05,_0x25e9cb){var _0x5b5f18={},_0xfc8dee={},_0x52de12={'count':0x0,'rows':[]};var _0x4a9c1c=_[_0xf6d5('0x2e')](db[_0xf6d5('0x2f')][_0xf6d5('0x30')],function(_0x78517d){return{'name':_0x78517d[_0xf6d5('0x31')],'type':_0x78517d['type'][_0xf6d5('0x32')]};});_0xfc8dee['model']=_['map'](_0x4a9c1c,_0xf6d5('0x2c'));_0xfc8dee[_0xf6d5('0x33')]=_['keys'](_0x1a7b05[_0xf6d5('0x33')]);_0xfc8dee['filters']=_[_0xf6d5('0x34')](_0xfc8dee[_0xf6d5('0x35')],_0xfc8dee[_0xf6d5('0x33')]);_0x5b5f18[_0xf6d5('0x36')]=_[_0xf6d5('0x34')](_0xfc8dee[_0xf6d5('0x35')],qs[_0xf6d5('0x37')](_0x1a7b05[_0xf6d5('0x33')][_0xf6d5('0x37')]));_0x5b5f18[_0xf6d5('0x36')]=_0x5b5f18['attributes']['length']?_0x5b5f18[_0xf6d5('0x36')]:_0xfc8dee[_0xf6d5('0x35')];if(!_0x1a7b05['query'][_0xf6d5('0x38')](_0xf6d5('0x39'))){_0x5b5f18[_0xf6d5('0x1f')]=qs[_0xf6d5('0x1f')](_0x1a7b05['query'][_0xf6d5('0x1f')]);_0x5b5f18[_0xf6d5('0x20')]=qs[_0xf6d5('0x20')](_0x1a7b05[_0xf6d5('0x33')][_0xf6d5('0x20')]);}_0x5b5f18[_0xf6d5('0x3a')]=qs['sort'](_0x1a7b05['query'][_0xf6d5('0x3b')]);_0x5b5f18['where']=qs[_0xf6d5('0x3c')](_['pick'](_0x1a7b05[_0xf6d5('0x33')],_0xfc8dee['filters']),_0x4a9c1c);if(_0x1a7b05[_0xf6d5('0x33')]['filter']){_0x5b5f18[_0xf6d5('0x3d')]=_[_0xf6d5('0x3e')](_0x5b5f18[_0xf6d5('0x3d')],{'$or':_[_0xf6d5('0x2e')](_0x4a9c1c,function(_0x10eb99){if(_0x10eb99[_0xf6d5('0x3f')]!==_0xf6d5('0x40')){var _0x57c446={};_0x57c446[_0x10eb99[_0xf6d5('0x2c')]]={'$like':'%'+_0x1a7b05[_0xf6d5('0x33')]['filter']+'%'};return _0x57c446;}})});}_0x5b5f18=_['merge']({},_0x5b5f18,_0x1a7b05[_0xf6d5('0x41')]);var _0x2a7ac4={'where':_0x5b5f18[_0xf6d5('0x3d')]};return db[_0xf6d5('0x2f')][_0xf6d5('0x21')](_0x2a7ac4)['then'](function(_0x35bad5){_0x52de12[_0xf6d5('0x21')]=_0x35bad5;if(_0x1a7b05[_0xf6d5('0x33')][_0xf6d5('0x42')]){_0x5b5f18[_0xf6d5('0x43')]=[{'all':!![]}];}return db[_0xf6d5('0x2f')][_0xf6d5('0x44')](_0x5b5f18);})['then'](function(_0x3d5012){_0x52de12[_0xf6d5('0x45')]=_0x3d5012;return _0x52de12;})['then'](respondWithFilteredResult(_0x25e9cb,_0x5b5f18))[_0xf6d5('0x46')](handleError(_0x25e9cb,null));};exports[_0xf6d5('0x47')]=function(_0x591228,_0x2624fc){var _0x5bcfe8={'raw':!![],'where':{'id':_0x591228[_0xf6d5('0x48')]['id']}},_0x2fb628={};_0x2fb628[_0xf6d5('0x35')]=_[_0xf6d5('0x49')](db['ChatGroup']['rawAttributes']);_0x2fb628['query']=_[_0xf6d5('0x49')](_0x591228[_0xf6d5('0x33')]);_0x2fb628[_0xf6d5('0x3c')]=_['intersection'](_0x2fb628[_0xf6d5('0x35')],_0x2fb628[_0xf6d5('0x33')]);_0x5bcfe8[_0xf6d5('0x36')]=_[_0xf6d5('0x34')](_0x2fb628['model'],qs[_0xf6d5('0x37')](_0x591228[_0xf6d5('0x33')][_0xf6d5('0x37')]));_0x5bcfe8['attributes']=_0x5bcfe8['attributes'][_0xf6d5('0x4a')]?_0x5bcfe8[_0xf6d5('0x36')]:_0x2fb628['model'];if(_0x591228[_0xf6d5('0x33')]['includeAll']){_0x5bcfe8[_0xf6d5('0x43')]=[{'all':!![]}];}_0x5bcfe8=_[_0xf6d5('0x3e')]({},_0x5bcfe8,_0x591228[_0xf6d5('0x41')]);return db[_0xf6d5('0x2f')][_0xf6d5('0x4b')](_0x5bcfe8)[_0xf6d5('0x27')](handleEntityNotFound(_0x2624fc,null))['then'](respondWithResult(_0x2624fc,null))[_0xf6d5('0x46')](handleError(_0x2624fc,null));};exports[_0xf6d5('0x4c')]=function(_0x231fe6,_0x3ff919){return db[_0xf6d5('0x2f')][_0xf6d5('0x4c')](_0x231fe6['body'],{})[_0xf6d5('0x27')](respondWithResult(_0x3ff919,0xc9))[_0xf6d5('0x46')](handleError(_0x3ff919,null));};exports['update']=function(_0x44da9f,_0x3bffab){if(_0x44da9f[_0xf6d5('0x4d')]['id']){delete _0x44da9f['body']['id'];}return db[_0xf6d5('0x2f')]['find']({'where':{'id':_0x44da9f[_0xf6d5('0x48')]['id']}})['then'](handleEntityNotFound(_0x3bffab,null))['then'](saveUpdates(_0x44da9f[_0xf6d5('0x4d')],null))[_0xf6d5('0x27')](respondWithResult(_0x3bffab,null))['catch'](handleError(_0x3bffab,null));};exports[_0xf6d5('0x28')]=function(_0x1b43f5,_0x46b8a3){return db[_0xf6d5('0x2f')][_0xf6d5('0x4b')]({'where':{'id':_0x1b43f5[_0xf6d5('0x48')]['id']}})[_0xf6d5('0x27')](handleEntityNotFound(_0x46b8a3,null))[_0xf6d5('0x27')](removeEntity(_0x46b8a3,null))[_0xf6d5('0x46')](handleError(_0x46b8a3,null));};exports[_0xf6d5('0x4e')]=function(_0x162cff,_0x55d8ef){return db[_0xf6d5('0x2f')][_0xf6d5('0x4e')]()[_0xf6d5('0x27')](respondWithResult(_0x55d8ef,null))['catch'](handleError(_0x55d8ef,null));};exports[_0xf6d5('0x4f')]=function(_0x2c6304,_0x46c946,_0x14f436){return db[_0xf6d5('0x50')][_0xf6d5('0x21')]({'where':{'ChatGroupId':_0x2c6304[_0xf6d5('0x48')]['id'],'ToId':_0x2c6304['user']['id'],'read':![]}})[_0xf6d5('0x27')](function(_0x91a73f){return{'id':_[_0xf6d5('0x51')](_0x2c6304[_0xf6d5('0x48')]['id']),'count':_0x91a73f};})[_0xf6d5('0x27')](respondWithResult(_0x46c946,null))[_0xf6d5('0x46')](handleError(_0x46c946,null));};exports[_0xf6d5('0x52')]=function(_0x25416a,_0x288fed,_0x1546d6){return db[_0xf6d5('0x2f')][_0xf6d5('0x4b')]({'where':{'id':_0x25416a[_0xf6d5('0x48')]['id']}})['then'](handleEntityNotFound(_0x288fed,null))['then'](function(_0xb3a521){if(_0xb3a521){return _0xb3a521[_0xf6d5('0x52')](_0x25416a['body'][_0xf6d5('0x53')],_['omit'](_0x25416a['body'],[_0xf6d5('0x53'),'id'])||{});}})['then'](respondWithResult(_0x288fed,null))[_0xf6d5('0x46')](handleError(_0x288fed,null));};exports['getMembers']=function(_0x399929,_0x13032b,_0x15a105){var _0x6a8842={};var _0x3aface={};var _0x514c0c;var _0x2e9bba;return db[_0xf6d5('0x2f')][_0xf6d5('0x54')]({'where':{'id':_0x399929[_0xf6d5('0x48')]['id']}})['then'](handleEntityNotFound(_0x13032b,null))[_0xf6d5('0x27')](function(_0x3450e1){if(_0x3450e1){_0x514c0c=_0x3450e1;_0x3aface[_0xf6d5('0x35')]=_[_0xf6d5('0x49')](db[_0xf6d5('0x55')][_0xf6d5('0x30')]);_0x3aface[_0xf6d5('0x33')]=_['keys'](_0x399929[_0xf6d5('0x33')]);_0x3aface[_0xf6d5('0x3c')]=_[_0xf6d5('0x34')](_0x3aface[_0xf6d5('0x35')],_0x3aface[_0xf6d5('0x33')]);_0x6a8842[_0xf6d5('0x36')]=_['intersection'](_0x3aface[_0xf6d5('0x35')],qs[_0xf6d5('0x37')](_0x399929[_0xf6d5('0x33')][_0xf6d5('0x37')]));_0x6a8842['attributes']=_0x6a8842['attributes'][_0xf6d5('0x4a')]?_0x6a8842['attributes']:_0x3aface[_0xf6d5('0x35')];_0x6a8842[_0xf6d5('0x3a')]=qs[_0xf6d5('0x3b')](_0x399929[_0xf6d5('0x33')][_0xf6d5('0x3b')]);_0x6a8842['where']=qs[_0xf6d5('0x3c')](_[_0xf6d5('0x56')](_0x399929[_0xf6d5('0x33')],_0x3aface[_0xf6d5('0x3c')]));if(_0x399929[_0xf6d5('0x33')][_0xf6d5('0x57')]){_0x6a8842[_0xf6d5('0x3d')]=_['merge'](_0x6a8842[_0xf6d5('0x3d')],{'$or':_[_0xf6d5('0x2e')](_0x6a8842['attributes'],function(_0xf8ce81){var _0x447a29={};_0x447a29[_0xf8ce81]={'$like':'%'+_0x399929[_0xf6d5('0x33')][_0xf6d5('0x57')]+'%'};return _0x447a29;})});}_0x6a8842=_[_0xf6d5('0x3e')]({},_0x6a8842,_0x399929[_0xf6d5('0x41')]);return _0x514c0c['getMembers'](_0x6a8842);}})[_0xf6d5('0x27')](function(_0x29867a){if(_0x29867a){_0x2e9bba=_0x29867a[_0xf6d5('0x4a')];if(!_0x399929[_0xf6d5('0x33')][_0xf6d5('0x38')]('nolimit')){_0x6a8842[_0xf6d5('0x1f')]=qs[_0xf6d5('0x1f')](_0x399929[_0xf6d5('0x33')][_0xf6d5('0x1f')]);_0x6a8842[_0xf6d5('0x20')]=qs[_0xf6d5('0x20')](_0x399929[_0xf6d5('0x33')][_0xf6d5('0x20')]);}return _0x514c0c[_0xf6d5('0x58')](_0x6a8842);}})[_0xf6d5('0x27')](function(_0x14b6eb){if(_0x14b6eb){return _0x14b6eb?{'count':_0x2e9bba,'rows':_0x14b6eb}:null;}})[_0xf6d5('0x27')](respondWithResult(_0x13032b,null))[_0xf6d5('0x46')](handleError(_0x13032b,null));};exports[_0xf6d5('0x59')]=function(_0x351ead,_0x47957a,_0x391472){return db['ChatGroup']['find']({'where':{'id':_0x351ead['params']['id']}})[_0xf6d5('0x27')](handleEntityNotFound(_0x47957a,null))[_0xf6d5('0x27')](function(_0x53ed7b){if(_0x53ed7b){return _0x53ed7b['removeMembers'](_0x351ead[_0xf6d5('0x33')][_0xf6d5('0x53')]);}})[_0xf6d5('0x27')](respondWithStatusCode(_0x47957a,null))[_0xf6d5('0x46')](handleError(_0x47957a,null));};exports['addMessage']=function(_0xbfbf23,_0x55e4c1,_0x5bf9cb){if(_0xbfbf23[_0xf6d5('0x4d')]['id']){delete _0xbfbf23['body']['id'];}return db[_0xf6d5('0x2f')]['find']({'where':{'id':_0xbfbf23[_0xf6d5('0x48')]['id']}})[_0xf6d5('0x27')](handleEntityNotFound(_0x55e4c1,null))[_0xf6d5('0x27')](function(_0x2162d0){if(_0x2162d0){_0xbfbf23['body'][_0xf6d5('0x5a')]=_0x2162d0['id'];return db[_0xf6d5('0x50')][_0xf6d5('0x4c')](_0xbfbf23[_0xf6d5('0x4d')]);}})[_0xf6d5('0x27')](respondWithResult(_0x55e4c1,null))['catch'](handleError(_0x55e4c1,null));};exports[_0xf6d5('0x5b')]=function(_0x421670,_0x23452a,_0x1beb3b){var _0x4edfa6={};var _0x11dd29={};var _0x36e20d;var _0x155ec9;return db['ChatGroup']['findOne']({'where':{'id':_0x421670['params']['id']}})[_0xf6d5('0x27')](handleEntityNotFound(_0x23452a,null))['then'](function(_0x48339c){if(_0x48339c){_0x36e20d=_0x48339c;_0x11dd29[_0xf6d5('0x35')]=_['keys'](db[_0xf6d5('0x50')][_0xf6d5('0x30')]);_0x11dd29['query']=_[_0xf6d5('0x49')](_0x421670[_0xf6d5('0x33')]);_0x11dd29[_0xf6d5('0x3c')]=_[_0xf6d5('0x34')](_0x11dd29[_0xf6d5('0x35')],_0x11dd29[_0xf6d5('0x33')]);_0x4edfa6[_0xf6d5('0x36')]=_[_0xf6d5('0x34')](_0x11dd29[_0xf6d5('0x35')],qs[_0xf6d5('0x37')](_0x421670[_0xf6d5('0x33')]['fields']));_0x4edfa6[_0xf6d5('0x36')]=_0x4edfa6['attributes'][_0xf6d5('0x4a')]?_0x4edfa6['attributes']:_0x11dd29[_0xf6d5('0x35')];_0x4edfa6['order']=qs[_0xf6d5('0x3b')](_0x421670[_0xf6d5('0x33')][_0xf6d5('0x3b')]);_0x4edfa6[_0xf6d5('0x3d')]=qs['filters'](_[_0xf6d5('0x56')](_0x421670[_0xf6d5('0x33')],_0x11dd29['filters']));if(_0x421670[_0xf6d5('0x33')]['filter']){_0x4edfa6['where']=_['merge'](_0x4edfa6['where'],{'$or':_['map'](_0x4edfa6[_0xf6d5('0x36')],function(_0x2d5f0b){var _0x554ef4={};_0x554ef4[_0x2d5f0b]={'$like':'%'+_0x421670[_0xf6d5('0x33')]['filter']+'%'};return _0x554ef4;})});}if(_0x421670[_0xf6d5('0x33')]['$gte']){var _0x115df2=_0x421670[_0xf6d5('0x33')]['$gte']['split'](',');var _0x4a23c2={};_0x4a23c2[_0x115df2[0x0]]={'$gte':moment(_0x115df2[0x1])[_0xf6d5('0x5c')](_0xf6d5('0x5d'))};_0x4edfa6[_0xf6d5('0x3d')]=_['merge'](_0x4edfa6[_0xf6d5('0x3d')],_0x4a23c2);}_0x4edfa6=_[_0xf6d5('0x3e')]({},_0x4edfa6,_0x421670[_0xf6d5('0x41')]);return _0x36e20d[_0xf6d5('0x5b')](_0x4edfa6);}})[_0xf6d5('0x27')](function(_0x5a5bc4){if(_0x5a5bc4){_0x155ec9=_0x5a5bc4[_0xf6d5('0x4a')];if(!_0x421670[_0xf6d5('0x33')][_0xf6d5('0x38')](_0xf6d5('0x39'))){_0x4edfa6[_0xf6d5('0x1f')]=qs['limit'](_0x421670[_0xf6d5('0x33')][_0xf6d5('0x1f')]);_0x4edfa6[_0xf6d5('0x20')]=qs[_0xf6d5('0x20')](_0x421670['query'][_0xf6d5('0x20')]);}return _0x36e20d['getMessages'](_0x4edfa6);}})[_0xf6d5('0x27')](function(_0x529423){if(_0x529423){return _0x529423?{'count':_0x155ec9,'rows':_0x529423}:null;}})['then'](respondWithResult(_0x23452a,null))['catch'](handleError(_0x23452a,null));};
\ No newline at end of file
+var _0xfa19=['where','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','filters','options','find','create','body','destroy','describe','getUnread','ChatInternalMessage','user','toInteger','addMembers','omit','ids','getMembers','findOne','User','nolimit','removeMembers','addMessage','ChatGroupId','getMessages','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','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','redis','defaults','socket.io-emitter','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','stack','name','send','index','map','ChatGroup','rawAttributes','type','key','model','keys','query','attributes','intersection','fields','length','hasOwnProperty','order','sort','pick','filter'];(function(_0x75ee74,_0x478213){var _0xfefe67=function(_0x331700){while(--_0x331700){_0x75ee74['push'](_0x75ee74['shift']());}};_0xfefe67(++_0x478213);}(_0xfa19,0x150));var _0x9fa1=function(_0x2de1b0,_0x4508d0){_0x2de1b0=_0x2de1b0-0x0;var _0xfd869f=_0xfa19[_0x2de1b0];return _0xfd869f;};'use strict';var emlformat=require(_0x9fa1('0x0'));var rimraf=require(_0x9fa1('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x9fa1('0x2'));var rp=require(_0x9fa1('0x3'));var moment=require(_0x9fa1('0x4'));var BPromise=require(_0x9fa1('0x5'));var Mustache=require(_0x9fa1('0x6'));var util=require(_0x9fa1('0x7'));var path=require(_0x9fa1('0x8'));var sox=require('sox');var csv=require(_0x9fa1('0x9'));var ejs=require(_0x9fa1('0xa'));var fs=require('fs');var fs_extra=require(_0x9fa1('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x9fa1('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x9fa1('0xd'));var toCsv=require(_0x9fa1('0x9'));var querystring=require(_0x9fa1('0xe'));var Papa=require('papaparse');var Redis=require(_0x9fa1('0xf'));var authService=require(_0x9fa1('0x10'));var qs=require(_0x9fa1('0x11'));var as=require(_0x9fa1('0x12'));var hardwareService=require(_0x9fa1('0x13'));var logger=require(_0x9fa1('0x14'))(_0x9fa1('0x15'));var utils=require(_0x9fa1('0x16'));var config=require(_0x9fa1('0x17'));var licenseUtil=require(_0x9fa1('0x18'));var db=require('../../mysqldb')['db'];config[_0x9fa1('0x19')]=_[_0x9fa1('0x1a')](config[_0x9fa1('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0x9fa1('0x1b'))(new Redis(config[_0x9fa1('0x19')]));require('./chatGroup.socket')[_0x9fa1('0x1c')](socket);function respondWithStatusCode(_0x25ec36,_0x75c72e){_0x75c72e=_0x75c72e||0xcc;return function(_0x270f45){if(_0x270f45){return _0x25ec36[_0x9fa1('0x1d')](_0x75c72e);}return _0x25ec36[_0x9fa1('0x1e')](_0x75c72e)[_0x9fa1('0x1f')]();};}function respondWithResult(_0x54d239,_0x143064){_0x143064=_0x143064||0xc8;return function(_0xb028d2){if(_0xb028d2){return _0x54d239['status'](_0x143064)[_0x9fa1('0x20')](_0xb028d2);}};}function respondWithFilteredResult(_0xc4c021,_0x2e5a35){return function(_0xd25e85){if(_0xd25e85){var _0x442754=typeof _0x2e5a35[_0x9fa1('0x21')]===_0x9fa1('0x22')&&typeof _0x2e5a35[_0x9fa1('0x23')]==='undefined';var _0x15e6c5=_0xd25e85['count'];var _0x48b9d0=_0x442754?0x0:_0x2e5a35['offset'];var _0x180890=_0x442754?_0xd25e85[_0x9fa1('0x24')]:_0x2e5a35[_0x9fa1('0x21')]+_0x2e5a35[_0x9fa1('0x23')];var _0x4b801f;if(_0x180890>=_0x15e6c5){_0x180890=_0x15e6c5;_0x4b801f=0xc8;}else{_0x4b801f=0xce;}_0xc4c021[_0x9fa1('0x1e')](_0x4b801f);return _0xc4c021[_0x9fa1('0x25')](_0x9fa1('0x26'),_0x48b9d0+'-'+_0x180890+'/'+_0x15e6c5)[_0x9fa1('0x20')](_0xd25e85);}return null;};}function patchUpdates(_0xd69055){return function(_0x259590){try{jsonpatch[_0x9fa1('0x27')](_0x259590,_0xd69055,!![]);}catch(_0xdfa4f8){return BPromise['reject'](_0xdfa4f8);}return _0x259590[_0x9fa1('0x28')]();};}function saveUpdates(_0x30d345,_0x3bba27){return function(_0x42819d){if(_0x42819d){return _0x42819d[_0x9fa1('0x29')](_0x30d345)['then'](function(_0x1a1bb9){return _0x1a1bb9;});}return null;};}function removeEntity(_0x44127f,_0x21b49d){return function(_0x56fdff){if(_0x56fdff){return _0x56fdff['destroy']()[_0x9fa1('0x2a')](function(){_0x44127f[_0x9fa1('0x1e')](0xcc)[_0x9fa1('0x1f')]();});}};}function handleEntityNotFound(_0x1f11b9,_0x127689){return function(_0x114ad5){if(!_0x114ad5){_0x1f11b9[_0x9fa1('0x1d')](0x194);}return _0x114ad5;};}function handleError(_0x56c450,_0x544bdc){_0x544bdc=_0x544bdc||0x1f4;return function(_0x5112ca){logger['error'](_0x5112ca[_0x9fa1('0x2b')]);if(_0x5112ca[_0x9fa1('0x2c')]){delete _0x5112ca[_0x9fa1('0x2c')];}_0x56c450[_0x9fa1('0x1e')](_0x544bdc)[_0x9fa1('0x2d')](_0x5112ca);};}exports[_0x9fa1('0x2e')]=function(_0x7646b6,_0x29035c){var _0x2834db={},_0x3b858b={},_0x95d720={'count':0x0,'rows':[]};var _0x3eedd5=_[_0x9fa1('0x2f')](db[_0x9fa1('0x30')][_0x9fa1('0x31')],function(_0x5dcbc1){return{'name':_0x5dcbc1['fieldName'],'type':_0x5dcbc1[_0x9fa1('0x32')][_0x9fa1('0x33')]};});_0x3b858b[_0x9fa1('0x34')]=_[_0x9fa1('0x2f')](_0x3eedd5,'name');_0x3b858b['query']=_[_0x9fa1('0x35')](_0x7646b6[_0x9fa1('0x36')]);_0x3b858b['filters']=_['intersection'](_0x3b858b[_0x9fa1('0x34')],_0x3b858b['query']);_0x2834db[_0x9fa1('0x37')]=_[_0x9fa1('0x38')](_0x3b858b[_0x9fa1('0x34')],qs[_0x9fa1('0x39')](_0x7646b6[_0x9fa1('0x36')][_0x9fa1('0x39')]));_0x2834db['attributes']=_0x2834db[_0x9fa1('0x37')][_0x9fa1('0x3a')]?_0x2834db[_0x9fa1('0x37')]:_0x3b858b[_0x9fa1('0x34')];if(!_0x7646b6[_0x9fa1('0x36')][_0x9fa1('0x3b')]('nolimit')){_0x2834db[_0x9fa1('0x23')]=qs['limit'](_0x7646b6[_0x9fa1('0x36')][_0x9fa1('0x23')]);_0x2834db[_0x9fa1('0x21')]=qs['offset'](_0x7646b6[_0x9fa1('0x36')][_0x9fa1('0x21')]);}_0x2834db[_0x9fa1('0x3c')]=qs[_0x9fa1('0x3d')](_0x7646b6[_0x9fa1('0x36')][_0x9fa1('0x3d')]);_0x2834db['where']=qs['filters'](_[_0x9fa1('0x3e')](_0x7646b6['query'],_0x3b858b['filters']),_0x3eedd5);if(_0x7646b6[_0x9fa1('0x36')][_0x9fa1('0x3f')]){_0x2834db[_0x9fa1('0x40')]=_[_0x9fa1('0x41')](_0x2834db['where'],{'$or':_[_0x9fa1('0x2f')](_0x3eedd5,function(_0x4a85b2){if(_0x4a85b2['type']!==_0x9fa1('0x42')){var _0x224919={};_0x224919[_0x4a85b2[_0x9fa1('0x2c')]]={'$like':'%'+_0x7646b6[_0x9fa1('0x36')]['filter']+'%'};return _0x224919;}})});}_0x2834db=_['merge']({},_0x2834db,_0x7646b6['options']);var _0x153861={'where':_0x2834db[_0x9fa1('0x40')]};return db[_0x9fa1('0x30')][_0x9fa1('0x24')](_0x153861)[_0x9fa1('0x2a')](function(_0xc06522){_0x95d720['count']=_0xc06522;if(_0x7646b6[_0x9fa1('0x36')][_0x9fa1('0x43')]){_0x2834db[_0x9fa1('0x44')]=[{'all':!![]}];}return db[_0x9fa1('0x30')][_0x9fa1('0x45')](_0x2834db);})[_0x9fa1('0x2a')](function(_0x3165aa){_0x95d720[_0x9fa1('0x46')]=_0x3165aa;return _0x95d720;})[_0x9fa1('0x2a')](respondWithFilteredResult(_0x29035c,_0x2834db))[_0x9fa1('0x47')](handleError(_0x29035c,null));};exports[_0x9fa1('0x48')]=function(_0x527725,_0x44bc17){var _0x3eecf4={'raw':!![],'where':{'id':_0x527725[_0x9fa1('0x49')]['id']}},_0x3480c1={};_0x3480c1['model']=_[_0x9fa1('0x35')](db[_0x9fa1('0x30')]['rawAttributes']);_0x3480c1[_0x9fa1('0x36')]=_['keys'](_0x527725[_0x9fa1('0x36')]);_0x3480c1[_0x9fa1('0x4a')]=_[_0x9fa1('0x38')](_0x3480c1['model'],_0x3480c1[_0x9fa1('0x36')]);_0x3eecf4['attributes']=_['intersection'](_0x3480c1[_0x9fa1('0x34')],qs['fields'](_0x527725[_0x9fa1('0x36')]['fields']));_0x3eecf4[_0x9fa1('0x37')]=_0x3eecf4[_0x9fa1('0x37')][_0x9fa1('0x3a')]?_0x3eecf4[_0x9fa1('0x37')]:_0x3480c1[_0x9fa1('0x34')];if(_0x527725[_0x9fa1('0x36')][_0x9fa1('0x43')]){_0x3eecf4[_0x9fa1('0x44')]=[{'all':!![]}];}_0x3eecf4=_[_0x9fa1('0x41')]({},_0x3eecf4,_0x527725[_0x9fa1('0x4b')]);return db[_0x9fa1('0x30')][_0x9fa1('0x4c')](_0x3eecf4)[_0x9fa1('0x2a')](handleEntityNotFound(_0x44bc17,null))['then'](respondWithResult(_0x44bc17,null))[_0x9fa1('0x47')](handleError(_0x44bc17,null));};exports[_0x9fa1('0x4d')]=function(_0x359bab,_0x40f909){return db[_0x9fa1('0x30')][_0x9fa1('0x4d')](_0x359bab[_0x9fa1('0x4e')],{})['then'](respondWithResult(_0x40f909,0xc9))[_0x9fa1('0x47')](handleError(_0x40f909,null));};exports['update']=function(_0x11bdf9,_0x5a4832){if(_0x11bdf9[_0x9fa1('0x4e')]['id']){delete _0x11bdf9[_0x9fa1('0x4e')]['id'];}return db[_0x9fa1('0x30')][_0x9fa1('0x4c')]({'where':{'id':_0x11bdf9['params']['id']}})['then'](handleEntityNotFound(_0x5a4832,null))[_0x9fa1('0x2a')](saveUpdates(_0x11bdf9[_0x9fa1('0x4e')],null))[_0x9fa1('0x2a')](respondWithResult(_0x5a4832,null))[_0x9fa1('0x47')](handleError(_0x5a4832,null));};exports[_0x9fa1('0x4f')]=function(_0x3c47c6,_0x5d8816){return db['ChatGroup']['find']({'where':{'id':_0x3c47c6[_0x9fa1('0x49')]['id']}})[_0x9fa1('0x2a')](handleEntityNotFound(_0x5d8816,null))[_0x9fa1('0x2a')](removeEntity(_0x5d8816,null))[_0x9fa1('0x47')](handleError(_0x5d8816,null));};exports[_0x9fa1('0x50')]=function(_0x52579a,_0x463bec){return db[_0x9fa1('0x30')][_0x9fa1('0x50')]()['then'](respondWithResult(_0x463bec,null))[_0x9fa1('0x47')](handleError(_0x463bec,null));};exports[_0x9fa1('0x51')]=function(_0x2ffd65,_0x59ff7b,_0x35b272){return db[_0x9fa1('0x52')][_0x9fa1('0x24')]({'where':{'ChatGroupId':_0x2ffd65['params']['id'],'ToId':_0x2ffd65[_0x9fa1('0x53')]['id'],'read':![]}})[_0x9fa1('0x2a')](function(_0x1618d9){return{'id':_[_0x9fa1('0x54')](_0x2ffd65['params']['id']),'count':_0x1618d9};})[_0x9fa1('0x2a')](respondWithResult(_0x59ff7b,null))[_0x9fa1('0x47')](handleError(_0x59ff7b,null));};exports[_0x9fa1('0x55')]=function(_0x295214,_0x15eacc,_0x2a1a4d){return db[_0x9fa1('0x30')][_0x9fa1('0x4c')]({'where':{'id':_0x295214['params']['id']}})['then'](handleEntityNotFound(_0x15eacc,null))[_0x9fa1('0x2a')](function(_0x203927){if(_0x203927){return _0x203927[_0x9fa1('0x55')](_0x295214[_0x9fa1('0x4e')]['ids'],_[_0x9fa1('0x56')](_0x295214[_0x9fa1('0x4e')],[_0x9fa1('0x57'),'id'])||{});}})[_0x9fa1('0x2a')](respondWithResult(_0x15eacc,null))[_0x9fa1('0x47')](handleError(_0x15eacc,null));};exports[_0x9fa1('0x58')]=function(_0x21446e,_0x4358b1,_0xec1795){var _0x3145ca={};var _0x375103={};var _0x736bea;var _0x51a0ed;return db[_0x9fa1('0x30')][_0x9fa1('0x59')]({'where':{'id':_0x21446e[_0x9fa1('0x49')]['id']}})[_0x9fa1('0x2a')](handleEntityNotFound(_0x4358b1,null))[_0x9fa1('0x2a')](function(_0x2648c2){if(_0x2648c2){_0x736bea=_0x2648c2;_0x375103['model']=_[_0x9fa1('0x35')](db[_0x9fa1('0x5a')][_0x9fa1('0x31')]);_0x375103[_0x9fa1('0x36')]=_[_0x9fa1('0x35')](_0x21446e['query']);_0x375103[_0x9fa1('0x4a')]=_[_0x9fa1('0x38')](_0x375103[_0x9fa1('0x34')],_0x375103[_0x9fa1('0x36')]);_0x3145ca[_0x9fa1('0x37')]=_[_0x9fa1('0x38')](_0x375103[_0x9fa1('0x34')],qs[_0x9fa1('0x39')](_0x21446e['query'][_0x9fa1('0x39')]));_0x3145ca[_0x9fa1('0x37')]=_0x3145ca['attributes']['length']?_0x3145ca[_0x9fa1('0x37')]:_0x375103['model'];_0x3145ca[_0x9fa1('0x3c')]=qs[_0x9fa1('0x3d')](_0x21446e[_0x9fa1('0x36')][_0x9fa1('0x3d')]);_0x3145ca[_0x9fa1('0x40')]=qs[_0x9fa1('0x4a')](_[_0x9fa1('0x3e')](_0x21446e[_0x9fa1('0x36')],_0x375103['filters']));if(_0x21446e[_0x9fa1('0x36')][_0x9fa1('0x3f')]){_0x3145ca[_0x9fa1('0x40')]=_['merge'](_0x3145ca['where'],{'$or':_['map'](_0x3145ca[_0x9fa1('0x37')],function(_0x2ba28a){var _0x4a15fd={};_0x4a15fd[_0x2ba28a]={'$like':'%'+_0x21446e['query'][_0x9fa1('0x3f')]+'%'};return _0x4a15fd;})});}_0x3145ca=_[_0x9fa1('0x41')]({},_0x3145ca,_0x21446e[_0x9fa1('0x4b')]);return _0x736bea[_0x9fa1('0x58')](_0x3145ca);}})['then'](function(_0x14b086){if(_0x14b086){_0x51a0ed=_0x14b086['length'];if(!_0x21446e[_0x9fa1('0x36')][_0x9fa1('0x3b')](_0x9fa1('0x5b'))){_0x3145ca[_0x9fa1('0x23')]=qs[_0x9fa1('0x23')](_0x21446e['query'][_0x9fa1('0x23')]);_0x3145ca[_0x9fa1('0x21')]=qs[_0x9fa1('0x21')](_0x21446e[_0x9fa1('0x36')][_0x9fa1('0x21')]);}return _0x736bea[_0x9fa1('0x58')](_0x3145ca);}})[_0x9fa1('0x2a')](function(_0x4fa905){if(_0x4fa905){return _0x4fa905?{'count':_0x51a0ed,'rows':_0x4fa905}:null;}})[_0x9fa1('0x2a')](respondWithResult(_0x4358b1,null))[_0x9fa1('0x47')](handleError(_0x4358b1,null));};exports[_0x9fa1('0x5c')]=function(_0x3957aa,_0x53dbaa,_0x5ec8f8){return db[_0x9fa1('0x30')]['find']({'where':{'id':_0x3957aa[_0x9fa1('0x49')]['id']}})[_0x9fa1('0x2a')](handleEntityNotFound(_0x53dbaa,null))[_0x9fa1('0x2a')](function(_0x525845){if(_0x525845){return _0x525845['removeMembers'](_0x3957aa[_0x9fa1('0x36')]['ids']);}})['then'](respondWithStatusCode(_0x53dbaa,null))['catch'](handleError(_0x53dbaa,null));};exports[_0x9fa1('0x5d')]=function(_0x7f2133,_0x33ac44,_0x1f5386){if(_0x7f2133[_0x9fa1('0x4e')]['id']){delete _0x7f2133[_0x9fa1('0x4e')]['id'];}return db['ChatGroup'][_0x9fa1('0x4c')]({'where':{'id':_0x7f2133['params']['id']}})['then'](handleEntityNotFound(_0x33ac44,null))['then'](function(_0x3e49da){if(_0x3e49da){_0x7f2133['body'][_0x9fa1('0x5e')]=_0x3e49da['id'];return db[_0x9fa1('0x52')][_0x9fa1('0x4d')](_0x7f2133[_0x9fa1('0x4e')]);}})[_0x9fa1('0x2a')](respondWithResult(_0x33ac44,null))[_0x9fa1('0x47')](handleError(_0x33ac44,null));};exports[_0x9fa1('0x5f')]=function(_0x4f8e18,_0x1ba40a,_0x2af99c){var _0x122226={};var _0xc81af5={};var _0x16836c;var _0x1aec3c;return db[_0x9fa1('0x30')][_0x9fa1('0x59')]({'where':{'id':_0x4f8e18['params']['id']}})[_0x9fa1('0x2a')](handleEntityNotFound(_0x1ba40a,null))[_0x9fa1('0x2a')](function(_0x53356b){if(_0x53356b){_0x16836c=_0x53356b;_0xc81af5[_0x9fa1('0x34')]=_[_0x9fa1('0x35')](db[_0x9fa1('0x52')][_0x9fa1('0x31')]);_0xc81af5[_0x9fa1('0x36')]=_[_0x9fa1('0x35')](_0x4f8e18['query']);_0xc81af5[_0x9fa1('0x4a')]=_['intersection'](_0xc81af5[_0x9fa1('0x34')],_0xc81af5['query']);_0x122226[_0x9fa1('0x37')]=_[_0x9fa1('0x38')](_0xc81af5[_0x9fa1('0x34')],qs['fields'](_0x4f8e18[_0x9fa1('0x36')][_0x9fa1('0x39')]));_0x122226['attributes']=_0x122226[_0x9fa1('0x37')]['length']?_0x122226[_0x9fa1('0x37')]:_0xc81af5[_0x9fa1('0x34')];_0x122226['order']=qs[_0x9fa1('0x3d')](_0x4f8e18['query'][_0x9fa1('0x3d')]);_0x122226[_0x9fa1('0x40')]=qs['filters'](_[_0x9fa1('0x3e')](_0x4f8e18['query'],_0xc81af5[_0x9fa1('0x4a')]));if(_0x4f8e18[_0x9fa1('0x36')]['filter']){_0x122226['where']=_[_0x9fa1('0x41')](_0x122226['where'],{'$or':_[_0x9fa1('0x2f')](_0x122226['attributes'],function(_0x31e271){var _0x2bc8a6={};_0x2bc8a6[_0x31e271]={'$like':'%'+_0x4f8e18[_0x9fa1('0x36')][_0x9fa1('0x3f')]+'%'};return _0x2bc8a6;})});}if(_0x4f8e18[_0x9fa1('0x36')][_0x9fa1('0x60')]){var _0x26d770=_0x4f8e18[_0x9fa1('0x36')]['$gte'][_0x9fa1('0x61')](',');var _0x1b4490={};_0x1b4490[_0x26d770[0x0]]={'$gte':moment(_0x26d770[0x1])[_0x9fa1('0x62')](_0x9fa1('0x63'))};_0x122226[_0x9fa1('0x40')]=_['merge'](_0x122226['where'],_0x1b4490);}_0x122226=_[_0x9fa1('0x41')]({},_0x122226,_0x4f8e18[_0x9fa1('0x4b')]);return _0x16836c[_0x9fa1('0x5f')](_0x122226);}})[_0x9fa1('0x2a')](function(_0x3a59ff){if(_0x3a59ff){_0x1aec3c=_0x3a59ff[_0x9fa1('0x3a')];if(!_0x4f8e18[_0x9fa1('0x36')][_0x9fa1('0x3b')](_0x9fa1('0x5b'))){_0x122226[_0x9fa1('0x23')]=qs[_0x9fa1('0x23')](_0x4f8e18['query'][_0x9fa1('0x23')]);_0x122226[_0x9fa1('0x21')]=qs[_0x9fa1('0x21')](_0x4f8e18[_0x9fa1('0x36')][_0x9fa1('0x21')]);}return _0x16836c['getMessages'](_0x122226);}})[_0x9fa1('0x2a')](function(_0x4b9841){if(_0x4b9841){return _0x4b9841?{'count':_0x1aec3c,'rows':_0x4b9841}:null;}})[_0x9fa1('0x2a')](respondWithResult(_0x1ba40a,null))[_0x9fa1('0x47')](handleError(_0x1ba40a,null));};
\ No newline at end of file
index c521171..c159b57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2d7=['emit','hasOwnProperty','hook','exports','events','ChatGroup','setMaxListeners','save','update','remove'];(function(_0xbb9dbf,_0x5dafa4){var _0x30223c=function(_0xaa9ca){while(--_0xaa9ca){_0xbb9dbf['push'](_0xbb9dbf['shift']());}};_0x30223c(++_0x5dafa4);}(_0xe2d7,0x112));var _0x7e2d=function(_0x841c2d,_0x4f4448){_0x841c2d=_0x841c2d-0x0;var _0x219515=_0xe2d7[_0x841c2d];return _0x219515;};'use strict';var EventEmitter=require(_0x7e2d('0x0'));var ChatGroup=require('../../mysqldb')['db'][_0x7e2d('0x1')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0x7e2d('0x2')](0x0);var events={'afterCreate':_0x7e2d('0x3'),'afterUpdate':_0x7e2d('0x4'),'afterDestroy':_0x7e2d('0x5')};function emitEvent(_0x2bc0c6){return function(_0x1788bb,_0x55bab2,_0x3fad07){ChatGroupEvents[_0x7e2d('0x6')](_0x2bc0c6+':'+_0x1788bb['id'],_0x1788bb);ChatGroupEvents[_0x7e2d('0x6')](_0x2bc0c6,_0x1788bb);_0x3fad07(null);};}for(var e in events){if(events[_0x7e2d('0x7')](e)){var event=events[e];ChatGroup[_0x7e2d('0x8')](e,emitEvent(event));}}module[_0x7e2d('0x9')]=ChatGroupEvents;
\ No newline at end of file
+var _0xe354=['hook','ChatGroup','setMaxListeners','update','emit','hasOwnProperty'];(function(_0x4ab3d9,_0x1ae3b3){var _0x5f26e9=function(_0x432e3d){while(--_0x432e3d){_0x4ab3d9['push'](_0x4ab3d9['shift']());}};_0x5f26e9(++_0x1ae3b3);}(_0xe354,0x187));var _0x4e35=function(_0x2c14fd,_0x543f9b){_0x2c14fd=_0x2c14fd-0x0;var _0x32490d=_0xe354[_0x2c14fd];return _0x32490d;};'use strict';var EventEmitter=require('events');var ChatGroup=require('../../mysqldb')['db'][_0x4e35('0x0')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0x4e35('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x4e35('0x2'),'afterDestroy':'remove'};function emitEvent(_0x9308bb){return function(_0x13573a,_0x178fd0,_0x220401){ChatGroupEvents[_0x4e35('0x3')](_0x9308bb+':'+_0x13573a['id'],_0x13573a);ChatGroupEvents[_0x4e35('0x3')](_0x9308bb,_0x13573a);_0x220401(null);};}for(var e in events){if(events[_0x4e35('0x4')](e)){var event=events[e];ChatGroup[_0x4e35('0x5')](e,emitEvent(event));}}module['exports']=ChatGroupEvents;
\ No newline at end of file
index 29bf2f1..211547a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3164=['util','../../config/logger','api','request-promise','path','../../config/environment','./chatGroup.attributes','exports','define','ChatGroup','chat_groups','lodash'];(function(_0x26462c,_0xd20a35){var _0x509a42=function(_0x1b22c9){while(--_0x1b22c9){_0x26462c['push'](_0x26462c['shift']());}};_0x509a42(++_0xd20a35);}(_0x3164,0xfb));var _0x4316=function(_0x25b430,_0x342119){_0x25b430=_0x25b430-0x0;var _0x32d9e3=_0x3164[_0x25b430];return _0x32d9e3;};'use strict';var _=require(_0x4316('0x0'));var util=require(_0x4316('0x1'));var logger=require(_0x4316('0x2'))(_0x4316('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x4316('0x4'));var fs=require('fs');var path=require(_0x4316('0x5'));var rimraf=require('rimraf');var config=require(_0x4316('0x6'));var attributes=require(_0x4316('0x7'));module[_0x4316('0x8')]=function(_0x5bff3b,_0x2e197b){return _0x5bff3b[_0x4316('0x9')](_0x4316('0xa'),attributes,{'tableName':_0x4316('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x85a1=['chat_groups','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','./chatGroup.attributes','exports','ChatGroup'];(function(_0x4a62c2,_0x48bc92){var _0x273a40=function(_0x49577){while(--_0x49577){_0x4a62c2['push'](_0x4a62c2['shift']());}};_0x273a40(++_0x48bc92);}(_0x85a1,0x11f));var _0x185a=function(_0x4c4d84,_0x194270){_0x4c4d84=_0x4c4d84-0x0;var _0x11e924=_0x85a1[_0x4c4d84];return _0x11e924;};'use strict';var _=require('lodash');var util=require(_0x185a('0x0'));var logger=require('../../config/logger')(_0x185a('0x1'));var moment=require(_0x185a('0x2'));var BPromise=require(_0x185a('0x3'));var rp=require(_0x185a('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x185a('0x5'));var config=require(_0x185a('0x6'));var attributes=require(_0x185a('0x7'));module[_0x185a('0x8')]=function(_0x419286,_0x41265d){return _0x419286['define'](_0x185a('0x9'),attributes,{'tableName':_0x185a('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c73fbd1..44be442 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3efa=['client','redis','defaults','localhost','socket.io-emitter','./chatGroup.socket','register','request','info','request\x20sent','debug','ChatGroup,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatGroup,\x20%s,\x20%s','message','result','catch','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise'];(function(_0xec4e5b,_0x1cbe41){var _0xe7ebc8=function(_0x20de97){while(--_0x20de97){_0xec4e5b['push'](_0xec4e5b['shift']());}};_0xe7ebc8(++_0x1cbe41);}(_0x3efa,0x147));var _0xa3ef=function(_0x4b49f0,_0x2c16e4){_0x4b49f0=_0x4b49f0-0x0;var _0x5c0d5e=_0x3efa[_0x4b49f0];return _0x5c0d5e;};'use strict';var _=require('lodash');var util=require(_0xa3ef('0x0'));var moment=require('moment');var BPromise=require(_0xa3ef('0x1'));var rs=require(_0xa3ef('0x2'));var fs=require('fs');var Redis=require(_0xa3ef('0x3'));var db=require(_0xa3ef('0x4'))['db'];var utils=require(_0xa3ef('0x5'));var logger=require(_0xa3ef('0x6'))('rpc');var config=require(_0xa3ef('0x7'));var jayson=require(_0xa3ef('0x8'));var client=jayson[_0xa3ef('0x9')]['http']({'port':0x232a});config[_0xa3ef('0xa')]=_[_0xa3ef('0xb')](config['redis'],{'host':_0xa3ef('0xc'),'port':0x18eb});var socket=require(_0xa3ef('0xd'))(new Redis(config[_0xa3ef('0xa')]));require(_0xa3ef('0xe'))[_0xa3ef('0xf')](socket);function respondWithRpcPromise(_0x24d215,_0xbfbfd1,_0x595d9e){return new BPromise(function(_0x52f6f6,_0x2c71c2){return client[_0xa3ef('0x10')](_0x24d215,_0x595d9e)['then'](function(_0x252764){logger[_0xa3ef('0x11')]('ChatGroup,\x20%s,\x20%s',_0xbfbfd1,_0xa3ef('0x12'));logger[_0xa3ef('0x13')](_0xa3ef('0x14'),_0xbfbfd1,_0xa3ef('0x12'),JSON[_0xa3ef('0x15')](_0x252764));if(_0x252764[_0xa3ef('0x16')]){if(_0x252764['error'][_0xa3ef('0x17')]===0x1f4){logger['error'](_0xa3ef('0x18'),_0xbfbfd1,_0x252764[_0xa3ef('0x16')]['message']);return _0x2c71c2(_0x252764[_0xa3ef('0x16')][_0xa3ef('0x19')]);}logger[_0xa3ef('0x16')](_0xa3ef('0x18'),_0xbfbfd1,_0x252764[_0xa3ef('0x16')]['message']);return _0x52f6f6(_0x252764[_0xa3ef('0x16')][_0xa3ef('0x19')]);}else{logger[_0xa3ef('0x11')](_0xa3ef('0x18'),_0xbfbfd1,_0xa3ef('0x12'));_0x52f6f6(_0x252764[_0xa3ef('0x1a')]['message']);}})[_0xa3ef('0x1b')](function(_0x201937){logger[_0xa3ef('0x16')](_0xa3ef('0x18'),_0xbfbfd1,_0x201937);_0x2c71c2(_0x201937);});});}
\ No newline at end of file
+var _0x8dfc=['ChatGroup,\x20%s,\x20%s','ChatGroup,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','info','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','redis','defaults','socket.io-emitter','./chatGroup.socket','register'];(function(_0x446a79,_0x5ccaac){var _0x23b8fa=function(_0x34739a){while(--_0x34739a){_0x446a79['push'](_0x446a79['shift']());}};_0x23b8fa(++_0x5ccaac);}(_0x8dfc,0xdf));var _0xc8df=function(_0x1b3a5c,_0x2f9d5f){_0x1b3a5c=_0x1b3a5c-0x0;var _0x2ae8cb=_0x8dfc[_0x1b3a5c];return _0x2ae8cb;};'use strict';var _=require(_0xc8df('0x0'));var util=require(_0xc8df('0x1'));var moment=require(_0xc8df('0x2'));var BPromise=require(_0xc8df('0x3'));var rs=require(_0xc8df('0x4'));var fs=require('fs');var Redis=require(_0xc8df('0x5'));var db=require(_0xc8df('0x6'))['db'];var utils=require(_0xc8df('0x7'));var logger=require(_0xc8df('0x8'))('rpc');var config=require(_0xc8df('0x9'));var jayson=require(_0xc8df('0xa'));var client=jayson['client'][_0xc8df('0xb')]({'port':0x232a});config[_0xc8df('0xc')]=_[_0xc8df('0xd')](config[_0xc8df('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0xc8df('0xe'))(new Redis(config[_0xc8df('0xc')]));require(_0xc8df('0xf'))[_0xc8df('0x10')](socket);function respondWithRpcPromise(_0x4d80c3,_0x1a1589,_0x382d62){return new BPromise(function(_0x7e609a,_0x55bcd7){return client['request'](_0x4d80c3,_0x382d62)['then'](function(_0xdae4f1){logger['info'](_0xc8df('0x11'),_0x1a1589,'request\x20sent');logger['debug'](_0xc8df('0x12'),_0x1a1589,_0xc8df('0x13'),JSON['stringify'](_0xdae4f1));if(_0xdae4f1['error']){if(_0xdae4f1[_0xc8df('0x14')]['code']===0x1f4){logger[_0xc8df('0x14')](_0xc8df('0x11'),_0x1a1589,_0xdae4f1[_0xc8df('0x14')][_0xc8df('0x15')]);return _0x55bcd7(_0xdae4f1[_0xc8df('0x14')][_0xc8df('0x15')]);}logger[_0xc8df('0x14')]('ChatGroup,\x20%s,\x20%s',_0x1a1589,_0xdae4f1[_0xc8df('0x14')][_0xc8df('0x15')]);return _0x7e609a(_0xdae4f1['error'][_0xc8df('0x15')]);}else{logger[_0xc8df('0x16')](_0xc8df('0x11'),_0x1a1589,'request\x20sent');_0x7e609a(_0xdae4f1['result']['message']);}})[_0xc8df('0x17')](function(_0x4b24f7){logger[_0xc8df('0x14')](_0xc8df('0x11'),_0x1a1589,_0x4b24f7);_0x55bcd7(_0x4b24f7);});});}
\ No newline at end of file
index fcdc42e..cbffddd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4a5=['emit','removeListener','register','length','chatGroup:','./chatGroup.events','save','remove','update'];(function(_0x1b64bf,_0x357c3b){var _0x23afb2=function(_0x2b5418){while(--_0x2b5418){_0x1b64bf['push'](_0x1b64bf['shift']());}};_0x23afb2(++_0x357c3b);}(_0xb4a5,0xef));var _0x5b4a=function(_0x279683,_0x293ce9){_0x279683=_0x279683-0x0;var _0x41af94=_0xb4a5[_0x279683];return _0x41af94;};'use strict';var ChatGroupEvents=require(_0x5b4a('0x0'));var events=[_0x5b4a('0x1'),_0x5b4a('0x2'),_0x5b4a('0x3')];function createListener(_0x46e76c,_0x5577d6){return function(_0x505b90){_0x5577d6[_0x5b4a('0x4')](_0x46e76c,_0x505b90);};}function removeListener(_0x3713db,_0x346514){return function(){ChatGroupEvents[_0x5b4a('0x5')](_0x3713db,_0x346514);};}exports[_0x5b4a('0x6')]=function(_0x1d6e65){for(var _0x2a60b5=0x0,_0x49ea9c=events[_0x5b4a('0x7')];_0x2a60b5<_0x49ea9c;_0x2a60b5++){var _0x5c5b86=events[_0x2a60b5];var _0x10f3dd=createListener(_0x5b4a('0x8')+_0x5c5b86,_0x1d6e65);ChatGroupEvents['on'](_0x5c5b86,_0x10f3dd);}};
\ No newline at end of file
+var _0x0f7d=['register','length','chatGroup:','./chatGroup.events','save','remove'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x0f7d,0x135));var _0xd0f7=function(_0xd9ce1,_0x517167){_0xd9ce1=_0xd9ce1-0x0;var _0x54be53=_0x0f7d[_0xd9ce1];return _0x54be53;};'use strict';var ChatGroupEvents=require(_0xd0f7('0x0'));var events=[_0xd0f7('0x1'),_0xd0f7('0x2'),'update'];function createListener(_0x232b29,_0x4bd1d){return function(_0x2a302e){_0x4bd1d['emit'](_0x232b29,_0x2a302e);};}function removeListener(_0x4f09de,_0x22b471){return function(){ChatGroupEvents['removeListener'](_0x4f09de,_0x22b471);};}exports[_0xd0f7('0x3')]=function(_0x3ec9d7){for(var _0x44590a=0x0,_0x1a006a=events[_0xd0f7('0x4')];_0x44590a<_0x1a006a;_0x44590a++){var _0x258c2f=events[_0x44590a];var _0x4e080c=createListener(_0xd0f7('0x5')+_0x258c2f,_0x3ec9d7);ChatGroupEvents['on'](_0x258c2f,_0x4e080c);}};
\ No newline at end of file
index eb23784..56145f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bce=['./chatGroup.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/unread','/:id/members','getMembers','/:id/messages','post','create','addMembers','addMessage','put','update','destroy','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0bce,0x1f0));var _0xe0bc=function(_0x39befc,_0x163fbf){_0x39befc=_0x39befc-0x0;var _0x1edde5=_0x0bce[_0x39befc];return _0x1edde5;};'use strict';var multer=require('multer');var util=require(_0xe0bc('0x0'));var path=require(_0xe0bc('0x1'));var timeout=require(_0xe0bc('0x2'));var express=require(_0xe0bc('0x3'));var router=express['Router']();var fs_extra=require(_0xe0bc('0x4'));var auth=require(_0xe0bc('0x5'));var interaction=require(_0xe0bc('0x6'));var config=require(_0xe0bc('0x7'));var controller=require(_0xe0bc('0x8'));router[_0xe0bc('0x9')]('/',auth[_0xe0bc('0xa')](),controller[_0xe0bc('0xb')]);router['get'](_0xe0bc('0xc'),auth[_0xe0bc('0xa')](),controller[_0xe0bc('0xd')]);router['get'](_0xe0bc('0xe'),auth[_0xe0bc('0xa')](),controller[_0xe0bc('0xf')]);router['get'](_0xe0bc('0x10'),auth['isAuthenticated'](),controller['getUnread']);router[_0xe0bc('0x9')](_0xe0bc('0x11'),auth[_0xe0bc('0xa')](),controller[_0xe0bc('0x12')]);router[_0xe0bc('0x9')](_0xe0bc('0x13'),auth[_0xe0bc('0xa')](),controller['getMessages']);router[_0xe0bc('0x14')]('/',auth[_0xe0bc('0xa')](),controller[_0xe0bc('0x15')]);router[_0xe0bc('0x14')](_0xe0bc('0x11'),auth[_0xe0bc('0xa')](),controller[_0xe0bc('0x16')]);router[_0xe0bc('0x14')]('/:id/messages',auth[_0xe0bc('0xa')](),controller[_0xe0bc('0x17')]);router[_0xe0bc('0x18')](_0xe0bc('0xe'),auth[_0xe0bc('0xa')](),controller[_0xe0bc('0x19')]);router['delete'](_0xe0bc('0xe'),auth['isAuthenticated'](),controller[_0xe0bc('0x1a')]);router['delete']('/:id/members',auth[_0xe0bc('0xa')](),controller['removeMembers']);module[_0xe0bc('0x1b')]=router;
\ No newline at end of file
+var _0x459b=['/describe','describe','/:id','show','/:id/unread','getUnread','/:id/members','getMembers','/:id/messages','post','create','addMembers','addMessage','put','delete','removeMembers','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./chatGroup.controller','get','isAuthenticated'];(function(_0x5330ac,_0x24e3de){var _0x1f13c9=function(_0x2b1183){while(--_0x2b1183){_0x5330ac['push'](_0x5330ac['shift']());}};_0x1f13c9(++_0x24e3de);}(_0x459b,0xd5));var _0xb459=function(_0xbf5df5,_0x3e96cf){_0xbf5df5=_0xbf5df5-0x0;var _0x5b694d=_0x459b[_0xbf5df5];return _0x5b694d;};'use strict';var multer=require(_0xb459('0x0'));var util=require('util');var path=require(_0xb459('0x1'));var timeout=require(_0xb459('0x2'));var express=require(_0xb459('0x3'));var router=express[_0xb459('0x4')]();var fs_extra=require(_0xb459('0x5'));var auth=require(_0xb459('0x6'));var interaction=require(_0xb459('0x7'));var config=require('../../config/environment');var controller=require(_0xb459('0x8'));router[_0xb459('0x9')]('/',auth[_0xb459('0xa')](),controller['index']);router[_0xb459('0x9')](_0xb459('0xb'),auth[_0xb459('0xa')](),controller[_0xb459('0xc')]);router['get'](_0xb459('0xd'),auth['isAuthenticated'](),controller[_0xb459('0xe')]);router[_0xb459('0x9')](_0xb459('0xf'),auth['isAuthenticated'](),controller[_0xb459('0x10')]);router[_0xb459('0x9')](_0xb459('0x11'),auth[_0xb459('0xa')](),controller[_0xb459('0x12')]);router[_0xb459('0x9')](_0xb459('0x13'),auth[_0xb459('0xa')](),controller['getMessages']);router[_0xb459('0x14')]('/',auth[_0xb459('0xa')](),controller[_0xb459('0x15')]);router[_0xb459('0x14')](_0xb459('0x11'),auth['isAuthenticated'](),controller[_0xb459('0x16')]);router[_0xb459('0x14')](_0xb459('0x13'),auth[_0xb459('0xa')](),controller[_0xb459('0x17')]);router[_0xb459('0x18')](_0xb459('0xd'),auth[_0xb459('0xa')](),controller['update']);router[_0xb459('0x19')](_0xb459('0xd'),auth[_0xb459('0xa')](),controller['destroy']);router[_0xb459('0x19')](_0xb459('0x11'),auth['isAuthenticated'](),controller[_0xb459('0x1a')]);module[_0xb459('0x1b')]=router;
\ No newline at end of file
index bdf1970..80f264d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68b7=['thumb','star','TEXT','STRING','DATE','sequelize','BOOLEAN','INTEGER','ENUM'];(function(_0x4dcc2d,_0x422839){var _0x1bbd79=function(_0x173341){while(--_0x173341){_0x4dcc2d['push'](_0x4dcc2d['shift']());}};_0x1bbd79(++_0x422839);}(_0x68b7,0x8c));var _0x768b=function(_0x2a245c,_0x961888){_0x2a245c=_0x2a245c-0x0;var _0xcafb26=_0x68b7[_0x2a245c];return _0xcafb26;};'use strict';var Sequelize=require(_0x768b('0x0'));module['exports']={'closed':{'type':Sequelize[_0x768b('0x1')],'defaultValue':![]},'ratingValue':{'type':Sequelize[_0x768b('0x2')]},'ratingType':{'type':Sequelize[_0x768b('0x3')]('star',_0x768b('0x4')),'defaultValue':_0x768b('0x5')},'ratingMessage':{'type':Sequelize[_0x768b('0x6')]},'pathTranscript':{'type':Sequelize['TEXT']},'mailTranscript':{'type':Sequelize[_0x768b('0x7')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0x768b('0x8')]},'disposition':{'type':Sequelize[_0x768b('0x7')]},'secondDisposition':{'type':Sequelize[_0x768b('0x7')]},'thirdDisposition':{'type':Sequelize[_0x768b('0x7')]},'note':{'type':Sequelize[_0x768b('0x7')]},'browserName':{'type':Sequelize[_0x768b('0x7')]},'browserVersion':{'type':Sequelize['STRING']},'osName':{'type':Sequelize[_0x768b('0x7')]},'osVersion':{'type':Sequelize['STRING']},'deviceModel':{'type':Sequelize[_0x768b('0x7')]},'deviceVendor':{'type':Sequelize[_0x768b('0x7')]},'deviceType':{'type':Sequelize[_0x768b('0x7')]},'referer':{'type':Sequelize[_0x768b('0x6')]},'customerIp':{'type':Sequelize[_0x768b('0x7')]},'formData':{'type':Sequelize[_0x768b('0x6')]('long')},'read1stAt':{'type':Sequelize[_0x768b('0x8')]},'lastMsgAt':{'type':Sequelize[_0x768b('0x8')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0x768b('0x7')]},'customerPort':{'type':Sequelize[_0x768b('0x7')]},'vidaooSessionId':{'type':Sequelize[_0x768b('0x6')]},'autoreplyExecuted':{'type':Sequelize[_0x768b('0x1')],'defaultValue':![]}};
\ No newline at end of file
+var _0xfc75=['TEXT','STRING','DATE','long','out','sequelize','exports','BOOLEAN','INTEGER','ENUM','star'];(function(_0x1f7996,_0x299a14){var _0x584609=function(_0x14c34a){while(--_0x14c34a){_0x1f7996['push'](_0x1f7996['shift']());}};_0x584609(++_0x299a14);}(_0xfc75,0xe1));var _0x5fc7=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0xfc75[_0x2c91e9];return _0x13f0ff;};'use strict';var Sequelize=require(_0x5fc7('0x0'));module[_0x5fc7('0x1')]={'closed':{'type':Sequelize[_0x5fc7('0x2')],'defaultValue':![]},'ratingValue':{'type':Sequelize[_0x5fc7('0x3')]},'ratingType':{'type':Sequelize[_0x5fc7('0x4')]('star','thumb'),'defaultValue':_0x5fc7('0x5')},'ratingMessage':{'type':Sequelize['TEXT']},'pathTranscript':{'type':Sequelize[_0x5fc7('0x6')]},'mailTranscript':{'type':Sequelize[_0x5fc7('0x7')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0x5fc7('0x8')]},'disposition':{'type':Sequelize[_0x5fc7('0x7')]},'secondDisposition':{'type':Sequelize[_0x5fc7('0x7')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x5fc7('0x7')]},'browserName':{'type':Sequelize['STRING']},'browserVersion':{'type':Sequelize[_0x5fc7('0x7')]},'osName':{'type':Sequelize['STRING']},'osVersion':{'type':Sequelize['STRING']},'deviceModel':{'type':Sequelize[_0x5fc7('0x7')]},'deviceVendor':{'type':Sequelize['STRING']},'deviceType':{'type':Sequelize[_0x5fc7('0x7')]},'referer':{'type':Sequelize['TEXT']},'customerIp':{'type':Sequelize[_0x5fc7('0x7')]},'formData':{'type':Sequelize[_0x5fc7('0x6')](_0x5fc7('0x9'))},'read1stAt':{'type':Sequelize['DATE']},'lastMsgAt':{'type':Sequelize[_0x5fc7('0x8')]},'lastMsgDirection':{'type':Sequelize[_0x5fc7('0x4')]('in',_0x5fc7('0xa')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize['STRING']},'customerPort':{'type':Sequelize[_0x5fc7('0x7')]},'vidaooSessionId':{'type':Sequelize[_0x5fc7('0x6')]},'autoreplyExecuted':{'type':Sequelize[_0x5fc7('0x2')],'defaultValue':![]}};
\ No newline at end of file
index 2b473b1..90a743e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a52=['then','info','request\x20sent','stringify','code','error','ChatInteraction,\x20%s,\x20%s','message','result','catch','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','destroy','end','name','render','body','agent','interaction','ChatInteraction','rawAttributes','type','key','chat','query','show','params','model','keys','filters','intersection','fields','attributes','includeAll','include','merge','create','update','createVidaooSession','findOne','vidaooApiKey','vidaooEscalation','vidaooTopic','vidaooNote','vidaooMetadata','user','email','contact','POST','https://api-vidaoo.xcally.com/api/v1/meetings','isNull','metadata','ValidationError','Error\x20in\x20conversion\x20vidaooMetadata','Sequelize','join_url','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','customUpdate','find','CmContact','Contact','abandonInteraction,\x20%s,\x20%s,\x20%s','abandon','Interaction\x20already\x20assigned','AbandonInteraction','attachmentUpload','file','basename','filename','mimetype','Attachment','closed','Unauthorized','attachId','ChatOfflineMessageId','root','server/files/attachments/','join','offline-chat/','download','close','mailTranscript','server/files/chat/upload/','format','transcript-%s.txt','now','pathTranscript','ChatMessage','Messages','User','ChatWebsite','ChatWebsiteId','%s%d','agentAlias','System','customer','ContactId','agentIdentifier','website_alias','UserId','agent_alias','alias','fullname','agent_fullname','[%s]\x20%s:\x20%s\x0a','createdAt','MM/DD/YYYY\x20HH:mm:ss','direction','secret','appendFileSync','MailAccount','MailServerOut','Smtp','CloudProvider','getSmtpOptions','SendMail','sendMail','\x22%s\x22\x20<%s>','Mail\x20Transcript','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','ids','omit','getMessages','length','hasOwnProperty','nolimit','order','sort','where','pick','ChatInteractionId','filter','map','$gte','findAll','rows','options','push','addTags','setTags','spread','color','emit','removeTags','unix','server','files','tmp','attachments','transcript-%d-%s.zip','lastName','read','Account','mkdirSync','Chat','Owner','N.A.','YYYY-MM-DD\x20HH:mm:ss','closedAt','toString','disposition','osName','customerIp','customerPort','tail','existsSync','createReadStream','pipe','out','firstName','value','renderFile','views','downloadInteraction.ejs','transcript-','err','rimraf','request-promise','mustache','util','ejs','lodash','../../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','client','http'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3a52,0xb9));var _0x23a5=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x3a52[_0x321bb2];return _0x9c12ed;};'use strict';var rimraf=require(_0x23a5('0x0'));var zipdir=require('zip-dir');var rp=require(_0x23a5('0x1'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x23a5('0x2'));var util=require(_0x23a5('0x3'));var path=require('path');var ejs=require(_0x23a5('0x4'));var fs=require('fs');var _=require(_0x23a5('0x5'));var Redis=require('ioredis');var interaction=require(_0x23a5('0x6'));var qs=require(_0x23a5('0x7'));var pdf=require(_0x23a5('0x8'));var logger=require(_0x23a5('0x9'))(_0x23a5('0xa'));var config=require(_0x23a5('0xb'));var db=require(_0x23a5('0xc'))['db'];config[_0x23a5('0xd')]=_['defaults'](config[_0x23a5('0xd')],{'host':_0x23a5('0xe'),'port':0x18eb});var socket=require(_0x23a5('0xf'))(new Redis(config['redis']));require(_0x23a5('0x10'))[_0x23a5('0x11')](socket);var jayson=require(_0x23a5('0x12'));var client=jayson[_0x23a5('0x13')][_0x23a5('0x14')]({'port':0x232b});var client9004=jayson['client'][_0x23a5('0x14')]({'port':0x232c});function respondWithRpcPromise(_0x1933a4,_0x110a50,_0x27ab44,_0x1d69e5){return new BPromise(function(_0x5186e7,_0x270494){var _0x2676c3=_0x1d69e5||client;return _0x2676c3['request'](_0x1933a4,_0x27ab44)[_0x23a5('0x15')](function(_0x3fa3f0){logger[_0x23a5('0x16')]('ChatInteraction,\x20%s,\x20%s',_0x110a50,_0x23a5('0x17'));logger['debug']('ChatInteraction,\x20%s,\x20%s,\x20%s',_0x110a50,_0x23a5('0x17'),JSON[_0x23a5('0x18')](_0x3fa3f0));if(_0x3fa3f0['error']){if(_0x3fa3f0['error'][_0x23a5('0x19')]===0x1f4){logger[_0x23a5('0x1a')](_0x23a5('0x1b'),_0x110a50,_0x3fa3f0[_0x23a5('0x1a')][_0x23a5('0x1c')]);return _0x270494(_0x3fa3f0['error'][_0x23a5('0x1c')]);}logger[_0x23a5('0x1a')](_0x23a5('0x1b'),_0x110a50,_0x3fa3f0[_0x23a5('0x1a')][_0x23a5('0x1c')]);return _0x5186e7(_0x3fa3f0[_0x23a5('0x1a')][_0x23a5('0x1c')]);}else{logger[_0x23a5('0x16')]('ChatInteraction,\x20%s,\x20%s',_0x110a50,_0x23a5('0x17'));_0x5186e7(_0x3fa3f0[_0x23a5('0x1d')][_0x23a5('0x1c')]);}})[_0x23a5('0x1e')](function(_0x4e64fe){logger['error'](_0x23a5('0x1b'),_0x110a50,_0x4e64fe);_0x270494(_0x4e64fe);});});}function respondWithStatusCode(_0x2174fd,_0x5519c8){_0x5519c8=_0x5519c8||0xcc;return function(_0xce6ab6){if(_0xce6ab6){return _0x2174fd[_0x23a5('0x1f')](_0x5519c8);}return _0x2174fd[_0x23a5('0x20')](_0x5519c8)['end']();};}function respondWithResult(_0x429419,_0x3faf3f){_0x3faf3f=_0x3faf3f||0xc8;return function(_0x56a1d8){if(_0x56a1d8){return _0x429419[_0x23a5('0x20')](_0x3faf3f)[_0x23a5('0x21')](_0x56a1d8);}};}function respondWithFilteredResult(_0x5eb313,_0x18ef6d){return function(_0x30e2ab){if(_0x30e2ab){var _0x5e3ff1=typeof _0x18ef6d[_0x23a5('0x22')]===_0x23a5('0x23')&&typeof _0x18ef6d[_0x23a5('0x24')]===_0x23a5('0x23');var _0x5d2e0f=_0x30e2ab[_0x23a5('0x25')];var _0x3ba955=_0x5e3ff1?0x0:_0x18ef6d[_0x23a5('0x22')];var _0x575cfc=_0x5e3ff1?_0x30e2ab[_0x23a5('0x25')]:_0x18ef6d[_0x23a5('0x22')]+_0x18ef6d[_0x23a5('0x24')];var _0x248213;if(_0x575cfc>=_0x5d2e0f){_0x575cfc=_0x5d2e0f;_0x248213=0xc8;}else{_0x248213=0xce;}_0x5eb313['status'](_0x248213);return _0x5eb313[_0x23a5('0x26')](_0x23a5('0x27'),_0x3ba955+'-'+_0x575cfc+'/'+_0x5d2e0f)['json'](_0x30e2ab);}return null;};}function saveUpdates(_0x3a0895){return function(_0x2cfd9b){if(_0x2cfd9b){return _0x2cfd9b['update'](_0x3a0895)['then'](function(_0x547a73){return _0x547a73;});}return null;};}function removeEntity(_0x36477a){return function(_0x7172e6){if(_0x7172e6){return _0x7172e6[_0x23a5('0x28')]()['then'](function(){_0x36477a['status'](0xcc)[_0x23a5('0x29')]();});}};}function handleEntityNotFound(_0x41ca13){return function(_0x146c39){if(!_0x146c39){_0x41ca13[_0x23a5('0x1f')](0x194);}return _0x146c39;};}function handleError(_0x5c5386,_0x218b87){_0x218b87=_0x218b87||0x1f4;return function(_0x850579){logger[_0x23a5('0x1a')](_0x850579['stack']);if(_0x850579[_0x23a5('0x2a')]){delete _0x850579[_0x23a5('0x2a')];}_0x5c5386[_0x23a5('0x20')](_0x218b87)['send'](_0x850579);};}function getMustacheRender(_0x5bc441,_0x1ca474){return Mustache[_0x23a5('0x2b')](_0x5bc441,_['merge'](_0x1ca474[_0x23a5('0x2c')],{'contact':_0x1ca474['contact'],'message':_0x1ca474[_0x23a5('0x1c')],'agent':_0x1ca474[_0x23a5('0x2d')],'interaction':_0x1ca474[_0x23a5('0x2e')],'account':_0x1ca474['account']}))||'';}exports['index']=function(_0x518b9c,_0x1c2077){var _0x16745b={};var _0xd1e5d4=_['map'](db[_0x23a5('0x2f')][_0x23a5('0x30')],function(_0x22db14){return{'name':_0x22db14['fieldName'],'type':_0x22db14[_0x23a5('0x31')][_0x23a5('0x32')]};});_0x16745b=qs['getOptions'](_0xd1e5d4,_0x518b9c);return interaction['findAll'](_0x23a5('0x33'),_0x518b9c[_0x23a5('0x34')],_0x518b9c['user'],_0x16745b,_0xd1e5d4)[_0x23a5('0x15')](respondWithFilteredResult(_0x1c2077,_0x16745b))[_0x23a5('0x1e')](handleError(_0x1c2077,null));};exports[_0x23a5('0x35')]=function(_0x3b8fa3,_0x27cc80){var _0x152916={'raw':![],'where':{'id':_0x3b8fa3[_0x23a5('0x36')]['id']}},_0x1a594b={};_0x1a594b[_0x23a5('0x37')]=_[_0x23a5('0x38')](db[_0x23a5('0x2f')][_0x23a5('0x30')]);_0x1a594b['query']=_[_0x23a5('0x38')](_0x3b8fa3[_0x23a5('0x34')]);_0x1a594b[_0x23a5('0x39')]=_[_0x23a5('0x3a')](_0x1a594b[_0x23a5('0x37')],_0x1a594b['query']);_0x152916['attributes']=_[_0x23a5('0x3a')](_0x1a594b[_0x23a5('0x37')],qs[_0x23a5('0x3b')](_0x3b8fa3[_0x23a5('0x34')][_0x23a5('0x3b')]));_0x152916[_0x23a5('0x3c')]=_0x152916['attributes']['length']?_0x152916[_0x23a5('0x3c')]:_0x1a594b['model'];if(_0x3b8fa3['query'][_0x23a5('0x3d')]){_0x152916[_0x23a5('0x3e')]=[{'all':!![]}];}_0x152916=_[_0x23a5('0x3f')]({},_0x152916,_0x3b8fa3['options']);return db[_0x23a5('0x2f')]['find'](_0x152916)[_0x23a5('0x15')](handleEntityNotFound(_0x27cc80,null))['then'](respondWithResult(_0x27cc80,null))[_0x23a5('0x1e')](handleError(_0x27cc80,null));};exports[_0x23a5('0x40')]=function(_0x25e0f3,_0x24c682){return db[_0x23a5('0x2f')][_0x23a5('0x40')](_0x25e0f3[_0x23a5('0x2c')],{})['then'](respondWithResult(_0x24c682,0xc9))[_0x23a5('0x1e')](handleError(_0x24c682,null));};exports[_0x23a5('0x41')]=function(_0x5e8510,_0x510ee1){if(_0x5e8510[_0x23a5('0x2c')]['id']){delete _0x5e8510[_0x23a5('0x2c')]['id'];}return db[_0x23a5('0x2f')]['find']({'where':{'id':_0x5e8510[_0x23a5('0x36')]['id']}})['then'](handleEntityNotFound(_0x510ee1,null))[_0x23a5('0x15')](saveUpdates(_0x5e8510[_0x23a5('0x2c')],null))['then'](respondWithResult(_0x510ee1,null))[_0x23a5('0x1e')](handleError(_0x510ee1,null));};exports[_0x23a5('0x28')]=function(_0x2e3986,_0x1ca5f9){return db[_0x23a5('0x2f')]['find']({'where':{'id':_0x2e3986[_0x23a5('0x36')]['id']}})[_0x23a5('0x15')](handleEntityNotFound(_0x1ca5f9,null))[_0x23a5('0x15')](removeEntity(_0x1ca5f9,null))[_0x23a5('0x1e')](handleError(_0x1ca5f9,null));};exports['describe']=function(_0x75b757,_0x5d8948){return db[_0x23a5('0x2f')]['describe']()[_0x23a5('0x15')](respondWithResult(_0x5d8948,null))[_0x23a5('0x1e')](handleError(_0x5d8948,null));};exports[_0x23a5('0x42')]=function(_0x287cb8,_0x4a96f){var _0x1a9d9e=_0x287cb8[_0x23a5('0x36')]['id'];var _0x14a00e;var _0x56a1bb;var _0x2d0b15;return db[_0x23a5('0x2f')][_0x23a5('0x43')]({'where':{'id':_0x1a9d9e}})[_0x23a5('0x15')](function(_0x59f77e){_0x14a00e=_0x59f77e;return db['ChatWebsite']['findOne']({'where':{'id':_0x59f77e['ChatWebsiteId']},'attributes':['id',_0x23a5('0x44'),_0x23a5('0x45'),_0x23a5('0x46'),_0x23a5('0x47'),_0x23a5('0x48')],'raw':!![]});})[_0x23a5('0x15')](function(_0x25d35d){if(_0x25d35d&&_0x25d35d[_0x23a5('0x44')]&&_0x25d35d['vidaooEscalation']){_0x56a1bb=_0x25d35d;var _0x3bb32e={'interaction':{'id':_0x1a9d9e},'agent':{'id':_0x287cb8[_0x23a5('0x49')]['id'],'name':_0x287cb8[_0x23a5('0x49')][_0x23a5('0x2a')],'fullname':_0x287cb8['user']['fullname'],'email':_0x287cb8['user'][_0x23a5('0x4a')]},'contact':_0x287cb8[_0x23a5('0x2c')][_0x23a5('0x4b')],'account':_0x287cb8['body']['account']};var _0x56742f={'rejectUnauthorized':![],'method':_0x23a5('0x4c'),'url':_0x23a5('0x4d'),'headers':{'X-APIKEY':_0x25d35d[_0x23a5('0x44')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x287cb8['user'][_0x23a5('0x4a')]],'buttons':null,'topic':_0x56a1bb[_0x23a5('0x46')],'note':_[_0x23a5('0x4e')](_0x56a1bb[_0x23a5('0x47')])?null:getMustacheRender(_0x56a1bb[_0x23a5('0x47')],_0x3bb32e),'metadata':null},'redirect':'follow','json':!![]};try{if(!_[_0x23a5('0x4e')](_0x56a1bb[_0x23a5('0x48')])){var _0x41bac4=getMustacheRender(_0x56a1bb[_0x23a5('0x48')],_0x3bb32e);var _0xffcd96=JSON['parse'](_0x41bac4);_0x56742f['body'][_0x23a5('0x4f')]=_0xffcd96;}}catch(_0x4b80e5){throw new db['Sequelize'][(_0x23a5('0x50'))](_0x23a5('0x51'));}return rp(_0x56742f);}else{throw new db[(_0x23a5('0x52'))]['ValidationError']('Error\x20in\x20Vidaoo\x20configuration');}})['then'](function(_0x232a0c){_0x2d0b15=_0x232a0c;if(_0x2d0b15['id']){var _0x4cba9f={'body':_0x2d0b15[_0x23a5('0x53')],'ChatWebsiteId':_0x56a1bb['id'],'ChatInteractionId':_0x14a00e['id'],'direction':'out','UserId':_0x287cb8[_0x23a5('0x49')]['id']};return db['ChatMessage'][_0x23a5('0x40')](_0x4cba9f,{});}else{throw new db[(_0x23a5('0x52'))][(_0x23a5('0x50'))](_0x23a5('0x54'));}})[_0x23a5('0x15')](function(){return _0x14a00e[_0x23a5('0x55')]({'vidaooSessionId':_0x2d0b15['id']});})[_0x23a5('0x15')](respondWithResult(_0x4a96f,null))[_0x23a5('0x1e')](handleError(_0x4a96f,null));};exports[_0x23a5('0x56')]=function(_0x17ffcd,_0x116360){if(_0x17ffcd[_0x23a5('0x2c')]['id']){delete _0x17ffcd[_0x23a5('0x2c')]['id'];}return db[_0x23a5('0x2f')][_0x23a5('0x57')]({'where':{'id':_0x17ffcd['params']['id']},'include':[{'model':db[_0x23a5('0x58')],'as':_0x23a5('0x59')}]})[_0x23a5('0x15')](handleEntityNotFound(_0x116360,null))[_0x23a5('0x15')](saveUpdates(_0x17ffcd[_0x23a5('0x2c')],null))[_0x23a5('0x15')](respondWithResult(_0x116360,null))[_0x23a5('0x1e')](handleError(_0x116360,null));};exports['abandon']=function(_0x5d3b15,_0x572472){if(_0x5d3b15[_0x23a5('0x2c')]['id']){delete _0x5d3b15[_0x23a5('0x2c')]['id'];}return db[_0x23a5('0x2f')][_0x23a5('0x57')]({'where':{'id':_0x5d3b15[_0x23a5('0x36')]['id']}})[_0x23a5('0x15')](function(_0x566c9a){if(!_0x566c9a){logger[_0x23a5('0x1a')](_0x23a5('0x5a'),_0x23a5('0x5b'),0x194,'entity\x20not\x20found');_0x572472['sendStatus'](0x194);}else{if(_0x566c9a['UserId']){throw new db[(_0x23a5('0x52'))]['ValidationError'](_0x23a5('0x5c'));}}return _0x566c9a;})[_0x23a5('0x15')](function(_0x3d9035){if(_0x3d9035){return _0x3d9035['update']({'closed':_0x5d3b15[_0x23a5('0x2c')]['closed'],'disposition':_0x5d3b15[_0x23a5('0x2c')]['disposition']})[_0x23a5('0x15')](function(_0x137c9a){return _0x137c9a;});}})[_0x23a5('0x15')](function(){return respondWithRpcPromise(_0x23a5('0x5d'),'abandon',_0x5d3b15[_0x23a5('0x2c')],client9004);})[_0x23a5('0x15')](respondWithResult(_0x572472,null))[_0x23a5('0x1e')](handleError(_0x572472,null));};exports[_0x23a5('0x5e')]=function(_0x1df071,_0x44659d){_0x1df071[_0x23a5('0x2c')]['name']=_0x1df071[_0x23a5('0x5f')]['originalname'];_0x1df071['body'][_0x23a5('0x60')]=_0x1df071[_0x23a5('0x5f')][_0x23a5('0x61')];_0x1df071[_0x23a5('0x2c')][_0x23a5('0x31')]=_0x1df071['file'][_0x23a5('0x62')];return db[_0x23a5('0x63')]['create'](_0x1df071[_0x23a5('0x2c')])[_0x23a5('0x15')](respondWithResult(_0x44659d,0xc9))[_0x23a5('0x1e')](handleError(_0x44659d,null));};exports['attachmentDownload']=function(_0x3c8632,_0x247c09){return db['ChatInteraction']['findOne']({'where':{'id':_0x3c8632[_0x23a5('0x36')]['id']},'raw':!![]})['then'](handleEntityNotFound(_0x247c09,null))[_0x23a5('0x15')](function(_0x59e7ce){if(_0x59e7ce){if(_0x59e7ce[_0x23a5('0x64')]){return _0x247c09[_0x23a5('0x20')](0x193)[_0x23a5('0x21')]({'status':0x193,'message':_0x23a5('0x65')});}return db[_0x23a5('0x63')][_0x23a5('0x43')]({'where':{'id':_0x3c8632[_0x23a5('0x34')][_0x23a5('0x66')]},'raw':!![]})['then'](handleEntityNotFound(_0x247c09,null));}})[_0x23a5('0x15')](function(_0x116714){if(_0x116714){var _0x25f69b=_0x116714[_0x23a5('0x67')]!==null;var _0x1e9e4b=path['join'](config[_0x23a5('0x68')],_0x23a5('0x69'));if(_0x25f69b){_0x1e9e4b=path[_0x23a5('0x6a')](_0x1e9e4b,_0x23a5('0x6b'));}var _0x695f98=path[_0x23a5('0x6a')](_0x1e9e4b,_0x116714[_0x23a5('0x60')]);return _0x247c09[_0x23a5('0x6c')](_0x695f98);}})[_0x23a5('0x1e')](handleError(_0x247c09,null));};exports[_0x23a5('0x6d')]=function(_0x5d8357,_0x39c92a){var _0x5779be=null;var _0x3ab248=null;var _0x37d855=null;if(_0x5d8357[_0x23a5('0x2c')]['id']){delete _0x5d8357[_0x23a5('0x2c')]['id'];}if(_0x5d8357[_0x23a5('0x2c')][_0x23a5('0x6e')]){_0x37d855=path[_0x23a5('0x6a')](config[_0x23a5('0x68')],_0x23a5('0x6f'),util[_0x23a5('0x70')](_0x23a5('0x71'),Date[_0x23a5('0x72')]()));_0x5d8357[_0x23a5('0x2c')][_0x23a5('0x73')]=_0x37d855;}return db[_0x23a5('0x2f')]['find']({'where':{'id':_0x5d8357[_0x23a5('0x36')]['id']},'include':[{'model':db[_0x23a5('0x74')],'as':_0x23a5('0x75'),'include':[{'model':db[_0x23a5('0x76')],'as':_0x23a5('0x76')}]}]})['then'](handleEntityNotFound(_0x39c92a,null))[_0x23a5('0x15')](saveUpdates(_0x5d8357[_0x23a5('0x2c')],null))[_0x23a5('0x15')](function(_0x396727){if(_0x396727){_0x5779be=_0x396727;return db[_0x23a5('0x77')][_0x23a5('0x57')]({'where':{'id':_0x5779be[_0x23a5('0x78')]}});}})[_0x23a5('0x15')](function(_0x40265){if(_0x40265){_0x3ab248=_0x40265;return db[_0x23a5('0x58')][_0x23a5('0x57')]({'where':{'id':_0x5779be['ContactId']}});}})['then'](function(_0x23fccd){if(_0x23fccd){if(_0x37d855){var _0x50dd12=null;for(var _0x4bba04=0x1;_0x4bba04<_0x5779be[_0x23a5('0x75')]['length'];++_0x4bba04){_0x50dd12=_0x5779be['Messages'][_0x4bba04];var _0x4c3c79=_0x50dd12['UserId']?util['format'](_0x23a5('0x79'),_0x3ab248[_0x23a5('0x7a')],_0x50dd12['UserId']):_0x23a5('0x7b');var _0x9dd962=_0x5d8357[_0x23a5('0x2c')][_0x23a5('0x7c')]||util['format']('%s%d','Visitor',_0x50dd12[_0x23a5('0x7d')]);switch(_0x3ab248[_0x23a5('0x7e')]){case _0x23a5('0x7f'):_0x4c3c79=_0x50dd12[_0x23a5('0x80')]?util[_0x23a5('0x70')]('%s%d',_0x3ab248['agentAlias'],_0x50dd12[_0x23a5('0x80')]):_0x23a5('0x7b');break;case _0x23a5('0x81'):_0x4c3c79=_0x50dd12[_0x23a5('0x80')]?_0x50dd12['User'][_0x23a5('0x82')]||_0x50dd12[_0x23a5('0x76')][_0x23a5('0x83')]:_0x23a5('0x7b');break;case _0x23a5('0x84'):_0x4c3c79=_0x50dd12['UserId']?_0x50dd12['User'][_0x23a5('0x83')]:_0x23a5('0x7b');break;default:_0x4c3c79=_0x50dd12['UserId']?util['format'](_0x23a5('0x79'),_0x3ab248[_0x23a5('0x7a')],_0x50dd12[_0x23a5('0x80')]):_0x23a5('0x7b');}var _0x20fe8d=util[_0x23a5('0x70')](_0x23a5('0x85'),moment(_0x50dd12[_0x23a5('0x86')])[_0x23a5('0x70')](_0x23a5('0x87')),_0x50dd12[_0x23a5('0x88')]==='in'?_0x9dd962:_0x4c3c79,_0x50dd12[_0x23a5('0x2c')]);if(!_0x50dd12[_0x23a5('0x89')]){fs[_0x23a5('0x8a')](_0x37d855,_0x20fe8d);}}return db[_0x23a5('0x8b')][_0x23a5('0x43')]({'where':{'service':!![]},'include':[{'model':db[_0x23a5('0x8c')],'as':_0x23a5('0x8d'),'raw':!![],'include':[{'model':db['CloudProvider'],'as':_0x23a5('0x8e'),'raw':!![]}]}]});}}})[_0x23a5('0x15')](function(_0x5a4981){if(!_0x5a4981||!_0x5a4981[_0x23a5('0x8d')]||!_0x5d8357[_0x23a5('0x2c')])return _0x5779be;var _0x2b9f92=_0x5a4981[_0x23a5('0x8f')]();return respondWithRpcPromise(_0x23a5('0x90'),_0x23a5('0x91'),{'account':_0x2b9f92,'message':{'from':util[_0x23a5('0x70')](_0x23a5('0x92'),_0x5a4981[_0x23a5('0x2a')],_0x5a4981[_0x23a5('0x4a')]||_0x5a4981['Smtp']['user']),'to':_0x5d8357[_0x23a5('0x2c')][_0x23a5('0x6e')],'subject':_0x23a5('0x93'),'text':util[_0x23a5('0x70')](_0x23a5('0x94'),_0x5d8357[_0x23a5('0x2c')][_0x23a5('0x6e')]),'attachments':[{'path':_0x37d855}]}})[_0x23a5('0x15')](function(){return _0x5779be;})['catch'](function(_0x1877ad){logger['error'](_0x1877ad);});})[_0x23a5('0x15')](respondWithStatusCode(_0x39c92a,0xc8))['catch'](handleError(_0x39c92a,null));};exports[_0x23a5('0x95')]=function(_0x5700fc,_0x4f614e){return db['ChatMessage']['find']({'where':{'id':_0x5700fc[_0x23a5('0x36')]['id']}})[_0x23a5('0x15')](handleEntityNotFound(_0x4f614e,null))[_0x23a5('0x15')](function(_0x9e2e55){if(_0x9e2e55){return _0x9e2e55['addMessage'](_0x5700fc['body'][_0x23a5('0x96')],_[_0x23a5('0x97')](_0x5700fc[_0x23a5('0x2c')],['ids','id'])||{});}})[_0x23a5('0x15')](respondWithResult(_0x4f614e,null))[_0x23a5('0x1e')](handleError(_0x4f614e,null));};exports[_0x23a5('0x98')]=function(_0x241325,_0x576408){var _0x4221ba={'raw':![],'where':{}};var _0xaa80c9={};var _0x2e30e7={'count':0x0,'rows':[]};return db['ChatInteraction']['findOne']({'where':{'id':_0x241325['params']['id']}})['then'](handleEntityNotFound(_0x576408,null))[_0x23a5('0x15')](function(_0x6ca3eb){if(_0x6ca3eb){_0xaa80c9[_0x23a5('0x37')]=_[_0x23a5('0x38')](db[_0x23a5('0x74')][_0x23a5('0x30')]);_0xaa80c9[_0x23a5('0x34')]=_[_0x23a5('0x38')](_0x241325[_0x23a5('0x34')]);_0xaa80c9[_0x23a5('0x39')]=_[_0x23a5('0x3a')](_0xaa80c9[_0x23a5('0x37')],_0xaa80c9[_0x23a5('0x34')]);_0x4221ba[_0x23a5('0x3c')]=_[_0x23a5('0x3a')](_0xaa80c9[_0x23a5('0x37')],qs[_0x23a5('0x3b')](_0x241325['query'][_0x23a5('0x3b')]));_0x4221ba[_0x23a5('0x3c')]=_0x4221ba['attributes'][_0x23a5('0x99')]?_0x4221ba[_0x23a5('0x3c')]:_0xaa80c9[_0x23a5('0x37')];if(!_0x241325['query'][_0x23a5('0x9a')](_0x23a5('0x9b'))){_0x4221ba[_0x23a5('0x24')]=qs[_0x23a5('0x24')](_0x241325[_0x23a5('0x34')][_0x23a5('0x24')]);_0x4221ba[_0x23a5('0x22')]=qs[_0x23a5('0x22')](_0x241325[_0x23a5('0x34')][_0x23a5('0x22')]);}_0x4221ba[_0x23a5('0x9c')]=qs[_0x23a5('0x9d')](_0x241325[_0x23a5('0x34')][_0x23a5('0x9d')]);_0x4221ba[_0x23a5('0x9e')]=qs['filters'](_[_0x23a5('0x9f')](_0x241325[_0x23a5('0x34')],_0xaa80c9['filters']));_0x4221ba[_0x23a5('0x9e')][_0x23a5('0xa0')]=_0x6ca3eb['id'];if(_0x241325[_0x23a5('0x34')][_0x23a5('0xa1')]){_0x4221ba['where']=_[_0x23a5('0x3f')](_0x4221ba['where'],{'$or':_[_0x23a5('0xa2')](_0x4221ba[_0x23a5('0x3c')],function(_0x1049b5){var _0x5ae48f={};_0x5ae48f[_0x1049b5]={'$like':'%'+_0x241325['query'][_0x23a5('0xa1')]+'%'};return _0x5ae48f;})});}if(_0x241325['query'][_0x23a5('0xa3')]){var _0x426418=_0x241325['query'][_0x23a5('0xa3')]['split'](',');var _0x419991={};_0x419991[_0x426418[0x0]]={'$gte':moment(_0x426418[0x1])[_0x23a5('0x70')]('YYYY-MM-DD\x20HH:mm:ss')};_0x4221ba[_0x23a5('0x9e')]=_[_0x23a5('0x3f')](_0x4221ba[_0x23a5('0x9e')],_0x419991);}_0x4221ba=_[_0x23a5('0x3f')]({},_0x4221ba,_0x241325['options']);return db[_0x23a5('0x74')][_0x23a5('0x25')]({'where':_0x4221ba[_0x23a5('0x9e')]})['then'](function(_0xd2ccb4){_0x2e30e7['count']=_0xd2ccb4;if(_0x241325[_0x23a5('0x34')]['includeAll']){_0x4221ba[_0x23a5('0x3e')]=[{'all':!![]}];}return db[_0x23a5('0x74')][_0x23a5('0xa4')](_0x4221ba);})[_0x23a5('0x15')](function(_0x243d38){_0x2e30e7[_0x23a5('0xa5')]=_0x243d38;return _0x2e30e7;});}})[_0x23a5('0x15')](respondWithFilteredResult(_0x576408,_0x4221ba))[_0x23a5('0x1e')](handleError(_0x576408,null));};exports['getMyMessages']=function(_0x21774b,_0x1a2a8b){var _0x148bf7={'where':{}},_0x351cb7={},_0x378260={'count':0x0,'rows':[]};return db['ChatInteraction'][_0x23a5('0x43')]({'where':{'id':_0x21774b[_0x23a5('0x36')]['id']}})[_0x23a5('0x15')](handleEntityNotFound(_0x1a2a8b,null))[_0x23a5('0x15')](function(_0xef8323){if(_0xef8323){_0x351cb7[_0x23a5('0x37')]=_[_0x23a5('0x38')](db[_0x23a5('0x74')][_0x23a5('0x30')]);_0x351cb7[_0x23a5('0x34')]=_[_0x23a5('0x38')](_0x21774b['query']);_0x351cb7[_0x23a5('0x39')]=_['intersection'](_0x351cb7[_0x23a5('0x37')],_0x351cb7[_0x23a5('0x34')]);_0x148bf7[_0x23a5('0x3c')]=_[_0x23a5('0x3a')](_0x351cb7['model'],qs['fields'](_0x21774b[_0x23a5('0x34')][_0x23a5('0x3b')]));_0x148bf7['attributes']=_0x148bf7[_0x23a5('0x3c')][_0x23a5('0x99')]?_0x148bf7[_0x23a5('0x3c')]:_0x351cb7[_0x23a5('0x37')];if(!_0x21774b[_0x23a5('0x34')][_0x23a5('0x9a')]('nolimit')){_0x148bf7[_0x23a5('0x24')]=qs[_0x23a5('0x24')](_0x21774b[_0x23a5('0x34')][_0x23a5('0x24')]);_0x148bf7[_0x23a5('0x22')]=qs[_0x23a5('0x22')](_0x21774b[_0x23a5('0x34')][_0x23a5('0x22')]);}_0x148bf7[_0x23a5('0x9c')]=qs[_0x23a5('0x9d')](_0x21774b[_0x23a5('0x34')][_0x23a5('0x9d')]);_0x148bf7[_0x23a5('0x9e')]=qs['filters'](_[_0x23a5('0x9f')](_0x21774b[_0x23a5('0x34')],_0x351cb7[_0x23a5('0x39')]));_0x148bf7[_0x23a5('0x9e')]['ChatInteractionId']=_0xef8323['id'];if(_0x21774b[_0x23a5('0x34')]['filter']){_0x148bf7[_0x23a5('0x9e')]=_['merge'](_0x148bf7['where'],{'$or':_[_0x23a5('0xa2')](_0x148bf7[_0x23a5('0x3c')],function(_0x1b1870){var _0x475241={};_0x475241[_0x1b1870]={'$like':'%'+_0x21774b[_0x23a5('0x34')][_0x23a5('0xa1')]+'%'};return _0x475241;})});}_0x148bf7[_0x23a5('0x9e')]['secret']=![];if(_0x21774b[_0x23a5('0x34')]['id']){_0x148bf7[_0x23a5('0x9e')]['id']={'$gt':_0x21774b[_0x23a5('0x34')]['id']};}_0x148bf7=_[_0x23a5('0x3f')]({},_0x148bf7,_0x21774b[_0x23a5('0xa6')]);return db['ChatMessage'][_0x23a5('0x25')]({'where':_0x148bf7[_0x23a5('0x9e')]})[_0x23a5('0x15')](function(_0x598460){_0x378260[_0x23a5('0x25')]=_0x598460;_0x148bf7[_0x23a5('0x3e')]=[];if(_0x21774b[_0x23a5('0x34')]['includeAgent']){_0x148bf7[_0x23a5('0x3e')][_0x23a5('0xa7')]({'model':db[_0x23a5('0x76')],'as':'User','attributes':['id',_0x23a5('0x83'),'alias']});}if(_0x21774b['query']['includeAll']){_0x148bf7[_0x23a5('0x3e')]=[{'all':!![]}];}return db[_0x23a5('0x74')][_0x23a5('0xa4')](_0x148bf7);})[_0x23a5('0x15')](function(_0x380f70){_0x378260[_0x23a5('0xa5')]=_0x380f70;return _0x378260;});}})[_0x23a5('0x15')](respondWithFilteredResult(_0x1a2a8b,_0x148bf7))[_0x23a5('0x1e')](handleError(_0x1a2a8b,null));};exports[_0x23a5('0xa8')]=function(_0x420440,_0xd01168){return db['ChatInteraction']['find']({'where':{'id':_0x420440[_0x23a5('0x36')]['id']}})['then'](handleEntityNotFound(_0xd01168,null))[_0x23a5('0x15')](function(_0x50ad53){if(_0x50ad53){return _0x50ad53[_0x23a5('0xa9')](_0x420440['body'][_0x23a5('0x96')],_[_0x23a5('0x97')](_0x420440[_0x23a5('0x2c')],[_0x23a5('0x96'),'id'])||{})[_0x23a5('0xaa')](function(){return db['Tag']['findAll']({'attributes':['id','name',_0x23a5('0xab')],'where':{'id':_0x420440['body'][_0x23a5('0x96')]}});})['then'](function(_0x1e197f){socket[_0x23a5('0xac')]('chatInteractionTags:save',{'id':Number(_0x420440['params']['id']),'tags':_0x1e197f||[]});return{'id':Number(_0x420440['params']['id']),'tags':_0x1e197f||[]};});}})[_0x23a5('0x15')](respondWithResult(_0xd01168,null))[_0x23a5('0x1e')](handleError(_0xd01168,null));};exports[_0x23a5('0xad')]=function(_0x3eca0a,_0x1329f1){return db[_0x23a5('0x2f')][_0x23a5('0x57')]({'where':{'id':_0x3eca0a[_0x23a5('0x36')]['id']}})['then'](handleEntityNotFound(_0x1329f1,null))[_0x23a5('0x15')](function(_0x459fd7){if(_0x459fd7){return _0x459fd7['removeTags'](_0x3eca0a[_0x23a5('0x34')]['ids']);}})['then'](respondWithStatusCode(_0x1329f1,null))['catch'](handleError(_0x1329f1,null));};exports[_0x23a5('0x6c')]=function(_0x20e2ef,_0x24aa55){var _0xcb560=moment()[_0x23a5('0xae')]()['toString']();var _0x25bb32=path['join'](config['root'],_0x23a5('0xaf'),_0x23a5('0xb0'),_0x23a5('0xb1'));var _0x33cfef=path[_0x23a5('0x6a')](config['root'],'server','files',_0x23a5('0xb2'));var _0x623047=path[_0x23a5('0x6a')](_0x25bb32,_0xcb560);var _0x47e935=util['format'](_0x23a5('0xb3'),_0x20e2ef[_0x23a5('0x36')]['id'],_0xcb560);var _0x421e7b=path[_0x23a5('0x6a')](_0x25bb32,_0x47e935);var _0x49ca84=[];_0x49ca84['push']({'model':db[_0x23a5('0x76')],'as':'User','attributes':['id',_0x23a5('0x83')],'raw':!![]});_0x49ca84[_0x23a5('0xa7')]({'model':db[_0x23a5('0x58')],'as':'Contact','attributes':['id','firstName',_0x23a5('0xb4')],'raw':!![]});if(_0x20e2ef[_0x23a5('0x34')][_0x23a5('0xb2')]){_0x49ca84['push']({'model':db['Attachment'],'as':_0x23a5('0x63'),'raw':!![]});}var _0xedac92=[{'model':db[_0x23a5('0x74')],'as':_0x23a5('0x75'),'attributes':['id',_0x23a5('0x2c'),_0x23a5('0x86'),_0x23a5('0x88'),'secret',_0x23a5('0xb5')],'include':_0x49ca84}];_0xedac92[_0x23a5('0xa7')]({'model':db['ChatWebsite'],'as':_0x23a5('0xb6'),'attributes':['id',_0x23a5('0x2a')]});_0xedac92['push']({'model':db[_0x23a5('0x76')],'as':'Owner','attributes':['id',_0x23a5('0x83')]});return db[_0x23a5('0x2f')][_0x23a5('0x57')]({'where':{'id':_0x20e2ef[_0x23a5('0x36')]['id']},'include':_0xedac92})[_0x23a5('0x15')](handleEntityNotFound(_0x24aa55,null))['then'](function(_0x988e78){if(_0x988e78){var _0x4c4005=_0x988e78['get']({'plain':!![]});fs[_0x23a5('0xb7')](_0x623047);var _0x1a2397={'channel':_0x23a5('0xb8'),'account':_0x4c4005[_0x23a5('0xb6')]['name'],'agent':_0x4c4005[_0x23a5('0xb9')]?_0x4c4005['Owner'][_0x23a5('0x83')]:_0x23a5('0xba'),'createdAt':moment(_0x4c4005[_0x23a5('0x86')])[_0x23a5('0x70')](_0x23a5('0xbb'))['toString'](),'closedAt':_0x4c4005[_0x23a5('0x64')]?moment(_0x4c4005[_0x23a5('0xbc')])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0x23a5('0xbd')]():'','disposition':_0x4c4005[_0x23a5('0xbe')],'chatInfo':{'browser':_0x4c4005['browserName'],'os':_0x4c4005[_0x23a5('0xbf')],'referer':_0x4c4005['referer'],'customerIp':_0x4c4005[_0x23a5('0xc0')],'customerPort':_0x4c4005['customerPort']?_0x4c4005[_0x23a5('0xc1')]:_0x23a5('0xba')},'messages':_(_0x4c4005['Messages'])[_0x23a5('0xc2')]()[_0x23a5('0xa1')]({'secret':![]})[_0x23a5('0xa2')](function(_0x5cbf45){if(_0x5cbf45[_0x23a5('0x63')]){var _0x4738ce=path[_0x23a5('0x6a')](_0x33cfef,_0x5cbf45[_0x23a5('0x63')][_0x23a5('0x60')]);if(fs[_0x23a5('0xc3')](_0x4738ce)){fs[_0x23a5('0xc4')](_0x4738ce)[_0x23a5('0xc5')](fs['createWriteStream'](path[_0x23a5('0x6a')](_0x623047,_0x5cbf45[_0x23a5('0x63')][_0x23a5('0x60')])));}}return{'date':moment(_0x5cbf45['createdAt'])[_0x23a5('0x70')](_0x23a5('0xbb'))[_0x23a5('0xbd')](),'sender':_0x5cbf45['direction']===_0x23a5('0xc6')?_0x5cbf45[_0x23a5('0x76')]?_0x5cbf45[_0x23a5('0x76')][_0x23a5('0x83')]:'System':_0x5cbf45['Contact'][_0x23a5('0xc7')]+(_0x5cbf45[_0x23a5('0x59')][_0x23a5('0xb4')]?'\x20'+_0x5cbf45[_0x23a5('0x59')][_0x23a5('0xb4')]:''),'body':_0x5cbf45[_0x23a5('0x63')]?_0x5cbf45[_0x23a5('0x63')]['basename']:_0x5cbf45[_0x23a5('0x2c')],'direction':_0x5cbf45[_0x23a5('0x88')]===_0x23a5('0xc6')?'A':'C','secret':_0x5cbf45[_0x23a5('0x89')],'read':_0x5cbf45[_0x23a5('0xb5')],'attachment':_0x5cbf45[_0x23a5('0x63')]};})[_0x23a5('0xc8')]()};return ejs[_0x23a5('0xc9')](path[_0x23a5('0x6a')](config['root'],'server',_0x23a5('0xca'),_0x23a5('0xcb')),{'interaction':_0x1a2397})['then'](function(_0x42426){var _0x860348=path['join'](_0x623047,_0x23a5('0xcc')+_0x4c4005['id']+'-'+_0xcb560+'.pdf');var _0x45c7be={'path':_0x860348,'channel':_0x23a5('0xb8'),'interactionId':_0x4c4005['id']};return pdf['createPdfFromHTML'](_0x42426,_0x45c7be);})['then'](function(){return new Promise(function(_0x5c04fd,_0x2f7797){zipdir(_0x623047,{'saveTo':_0x421e7b},function(_0x54b9cb,_0x2bc442){if(_0x54b9cb)return _0x2f7797(_0x54b9cb);return _0x5c04fd(_0x2bc442);});})[_0x23a5('0x15')](function(){return new BPromise(function(_0x47d2b6,_0x18c056){rimraf(_0x623047,function(_0x35822d){if(_0x35822d)_0x18c056(_0x35822d);return _0x47d2b6();});});})[_0x23a5('0x15')](function(){return _0x24aa55[_0x23a5('0x6c')](_0x421e7b,_0x47e935,function(_0xec0de2){if(_0xec0de2){logger[_0x23a5('0x1a')](_0x23a5('0xcd'),_0xec0de2);}else{fs['unlinkSync'](_0x421e7b);}});});});}else{return _0x24aa55[_0x23a5('0x1f')](0xc8);}})[_0x23a5('0x1e')](handleError(_0x24aa55,null));};
\ No newline at end of file
+var _0xbd68=['setTags','spread','Tag','chatInteractionTags:save','removeTags','download','toString','server','files','tmp','attachments','transcript-%d-%s.zip','firstName','lastName','read','Account','Owner','get','mkdirSync','N.A.','closedAt','osName','referer','customerIp','customerPort','tail','existsSync','createReadStream','Contact','renderFile','views','.pdf','Chat','createPdfFromHTML','err','unlinkSync','zip-dir','request-promise','bluebird','mustache','util','path','ejs','lodash','ioredis','../../components/parsers/qs','../../components/export/pdf','api','../../mysqldb','redis','defaults','socket.io-emitter','./chatInteraction.socket','register','jayson/promise','client','http','request','then','info','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatInteraction,\x20%s,\x20%s','message','result','catch','sendStatus','status','json','offset','limit','undefined','count','set','update','destroy','end','send','render','interaction','index','type','key','getOptions','query','user','show','params','keys','ChatInteraction','rawAttributes','filters','intersection','attributes','model','fields','length','include','merge','find','describe','createVidaooSession','findOne','ChatWebsite','ChatWebsiteId','vidaooApiKey','vidaooEscalation','vidaooTopic','vidaooNote','vidaooMetadata','name','fullname','email','contact','account','https://api-vidaoo.xcally.com/api/v1/meetings','follow','isNull','body','metadata','ValidationError','Error\x20in\x20conversion\x20vidaooMetadata','Sequelize','Error\x20in\x20Vidaoo\x20configuration','join_url','out','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','CmContact','abandon','abandonInteraction,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','UserId','Interaction\x20already\x20assigned','closed','disposition','attachmentUpload','file','originalname','basename','filename','mimetype','Attachment','create','attachmentDownload','Unauthorized','attachId','ChatOfflineMessageId','join','root','server/files/attachments/','offline-chat/','mailTranscript','server/files/chat/upload/','transcript-%s.txt','now','Messages','format','%s%d','agentAlias','customer','Visitor','ContactId','agentIdentifier','website_alias','System','agent_alias','agent_fullname','User','[%s]\x20%s:\x20%s\x0a','createdAt','direction','appendFileSync','Smtp','CloudProvider','getSmtpOptions','SendMail','sendMail','\x22%s\x22\x20<%s>','Mail\x20Transcript','addMessage','ChatMessage','ids','getMessages','hasOwnProperty','order','sort','where','pick','ChatInteractionId','filter','map','$gte','YYYY-MM-DD\x20HH:mm:ss','options','includeAll','findAll','rows','nolimit','secret','includeAgent','push','alias','addTags'];(function(_0x3739ab,_0x2b4613){var _0x5e7f1e=function(_0x315290){while(--_0x315290){_0x3739ab['push'](_0x3739ab['shift']());}};_0x5e7f1e(++_0x2b4613);}(_0xbd68,0x1c4));var _0x8bd6=function(_0x28fb13,_0x7120a0){_0x28fb13=_0x28fb13-0x0;var _0x478332=_0xbd68[_0x28fb13];return _0x478332;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0x8bd6('0x0'));var rp=require(_0x8bd6('0x1'));var moment=require('moment');var BPromise=require(_0x8bd6('0x2'));var Mustache=require(_0x8bd6('0x3'));var util=require(_0x8bd6('0x4'));var path=require(_0x8bd6('0x5'));var ejs=require(_0x8bd6('0x6'));var fs=require('fs');var _=require(_0x8bd6('0x7'));var Redis=require(_0x8bd6('0x8'));var interaction=require('../../components/interaction/service');var qs=require(_0x8bd6('0x9'));var pdf=require(_0x8bd6('0xa'));var logger=require('../../config/logger')(_0x8bd6('0xb'));var config=require('../../config/environment');var db=require(_0x8bd6('0xc'))['db'];config[_0x8bd6('0xd')]=_[_0x8bd6('0xe')](config[_0x8bd6('0xd')],{'host':'localhost','port':0x18eb});var socket=require(_0x8bd6('0xf'))(new Redis(config[_0x8bd6('0xd')]));require(_0x8bd6('0x10'))[_0x8bd6('0x11')](socket);var jayson=require(_0x8bd6('0x12'));var client=jayson[_0x8bd6('0x13')][_0x8bd6('0x14')]({'port':0x232b});var client9004=jayson[_0x8bd6('0x13')][_0x8bd6('0x14')]({'port':0x232c});function respondWithRpcPromise(_0x4ccbbb,_0x463270,_0x123079,_0x3f476a){return new BPromise(function(_0x19f283,_0x3c7860){var _0x43434a=_0x3f476a||client;return _0x43434a[_0x8bd6('0x15')](_0x4ccbbb,_0x123079)[_0x8bd6('0x16')](function(_0x5b4045){logger[_0x8bd6('0x17')]('ChatInteraction,\x20%s,\x20%s',_0x463270,_0x8bd6('0x18'));logger[_0x8bd6('0x19')](_0x8bd6('0x1a'),_0x463270,_0x8bd6('0x18'),JSON[_0x8bd6('0x1b')](_0x5b4045));if(_0x5b4045['error']){if(_0x5b4045[_0x8bd6('0x1c')][_0x8bd6('0x1d')]===0x1f4){logger[_0x8bd6('0x1c')](_0x8bd6('0x1e'),_0x463270,_0x5b4045[_0x8bd6('0x1c')]['message']);return _0x3c7860(_0x5b4045[_0x8bd6('0x1c')][_0x8bd6('0x1f')]);}logger[_0x8bd6('0x1c')](_0x8bd6('0x1e'),_0x463270,_0x5b4045[_0x8bd6('0x1c')]['message']);return _0x19f283(_0x5b4045[_0x8bd6('0x1c')]['message']);}else{logger[_0x8bd6('0x17')]('ChatInteraction,\x20%s,\x20%s',_0x463270,_0x8bd6('0x18'));_0x19f283(_0x5b4045[_0x8bd6('0x20')][_0x8bd6('0x1f')]);}})[_0x8bd6('0x21')](function(_0xe8e6f1){logger[_0x8bd6('0x1c')](_0x8bd6('0x1e'),_0x463270,_0xe8e6f1);_0x3c7860(_0xe8e6f1);});});}function respondWithStatusCode(_0x38de0c,_0x4fa7f1){_0x4fa7f1=_0x4fa7f1||0xcc;return function(_0x35e7fc){if(_0x35e7fc){return _0x38de0c[_0x8bd6('0x22')](_0x4fa7f1);}return _0x38de0c['status'](_0x4fa7f1)['end']();};}function respondWithResult(_0x32dd45,_0x358e25){_0x358e25=_0x358e25||0xc8;return function(_0x3ee766){if(_0x3ee766){return _0x32dd45[_0x8bd6('0x23')](_0x358e25)[_0x8bd6('0x24')](_0x3ee766);}};}function respondWithFilteredResult(_0x1ed5cf,_0x1e24d0){return function(_0x306260){if(_0x306260){var _0x4d528a=typeof _0x1e24d0[_0x8bd6('0x25')]==='undefined'&&typeof _0x1e24d0[_0x8bd6('0x26')]===_0x8bd6('0x27');var _0x127638=_0x306260[_0x8bd6('0x28')];var _0x2b176e=_0x4d528a?0x0:_0x1e24d0[_0x8bd6('0x25')];var _0x51d722=_0x4d528a?_0x306260[_0x8bd6('0x28')]:_0x1e24d0[_0x8bd6('0x25')]+_0x1e24d0['limit'];var _0x3b9a2c;if(_0x51d722>=_0x127638){_0x51d722=_0x127638;_0x3b9a2c=0xc8;}else{_0x3b9a2c=0xce;}_0x1ed5cf[_0x8bd6('0x23')](_0x3b9a2c);return _0x1ed5cf[_0x8bd6('0x29')]('Content-Range',_0x2b176e+'-'+_0x51d722+'/'+_0x127638)[_0x8bd6('0x24')](_0x306260);}return null;};}function saveUpdates(_0x3bbfe6){return function(_0x885e30){if(_0x885e30){return _0x885e30[_0x8bd6('0x2a')](_0x3bbfe6)[_0x8bd6('0x16')](function(_0x2f4045){return _0x2f4045;});}return null;};}function removeEntity(_0x48862e){return function(_0x171c91){if(_0x171c91){return _0x171c91[_0x8bd6('0x2b')]()[_0x8bd6('0x16')](function(){_0x48862e[_0x8bd6('0x23')](0xcc)[_0x8bd6('0x2c')]();});}};}function handleEntityNotFound(_0x47fd0f){return function(_0xf9056b){if(!_0xf9056b){_0x47fd0f[_0x8bd6('0x22')](0x194);}return _0xf9056b;};}function handleError(_0x3b471e,_0x3fce88){_0x3fce88=_0x3fce88||0x1f4;return function(_0x5df730){logger[_0x8bd6('0x1c')](_0x5df730['stack']);if(_0x5df730['name']){delete _0x5df730['name'];}_0x3b471e[_0x8bd6('0x23')](_0x3fce88)[_0x8bd6('0x2d')](_0x5df730);};}function getMustacheRender(_0x4190de,_0x5e3f5f){return Mustache[_0x8bd6('0x2e')](_0x4190de,_['merge'](_0x5e3f5f['body'],{'contact':_0x5e3f5f['contact'],'message':_0x5e3f5f[_0x8bd6('0x1f')],'agent':_0x5e3f5f['agent'],'interaction':_0x5e3f5f[_0x8bd6('0x2f')],'account':_0x5e3f5f['account']}))||'';}exports[_0x8bd6('0x30')]=function(_0x4eee92,_0x580c5a){var _0x52eb8f={};var _0x2dc198=_['map'](db['ChatInteraction']['rawAttributes'],function(_0x4aebeb){return{'name':_0x4aebeb['fieldName'],'type':_0x4aebeb[_0x8bd6('0x31')][_0x8bd6('0x32')]};});_0x52eb8f=qs[_0x8bd6('0x33')](_0x2dc198,_0x4eee92);return interaction['findAll']('chat',_0x4eee92[_0x8bd6('0x34')],_0x4eee92[_0x8bd6('0x35')],_0x52eb8f,_0x2dc198)['then'](respondWithFilteredResult(_0x580c5a,_0x52eb8f))['catch'](handleError(_0x580c5a,null));};exports[_0x8bd6('0x36')]=function(_0x5c7261,_0x8f7e76){var _0x554f8b={'raw':![],'where':{'id':_0x5c7261[_0x8bd6('0x37')]['id']}},_0x3afdc7={};_0x3afdc7['model']=_[_0x8bd6('0x38')](db[_0x8bd6('0x39')][_0x8bd6('0x3a')]);_0x3afdc7[_0x8bd6('0x34')]=_[_0x8bd6('0x38')](_0x5c7261[_0x8bd6('0x34')]);_0x3afdc7[_0x8bd6('0x3b')]=_[_0x8bd6('0x3c')](_0x3afdc7['model'],_0x3afdc7['query']);_0x554f8b[_0x8bd6('0x3d')]=_['intersection'](_0x3afdc7[_0x8bd6('0x3e')],qs[_0x8bd6('0x3f')](_0x5c7261['query'][_0x8bd6('0x3f')]));_0x554f8b[_0x8bd6('0x3d')]=_0x554f8b[_0x8bd6('0x3d')][_0x8bd6('0x40')]?_0x554f8b[_0x8bd6('0x3d')]:_0x3afdc7['model'];if(_0x5c7261[_0x8bd6('0x34')]['includeAll']){_0x554f8b[_0x8bd6('0x41')]=[{'all':!![]}];}_0x554f8b=_[_0x8bd6('0x42')]({},_0x554f8b,_0x5c7261['options']);return db[_0x8bd6('0x39')]['find'](_0x554f8b)[_0x8bd6('0x16')](handleEntityNotFound(_0x8f7e76,null))['then'](respondWithResult(_0x8f7e76,null))['catch'](handleError(_0x8f7e76,null));};exports['create']=function(_0x304852,_0x546d6b){return db[_0x8bd6('0x39')]['create'](_0x304852['body'],{})['then'](respondWithResult(_0x546d6b,0xc9))['catch'](handleError(_0x546d6b,null));};exports[_0x8bd6('0x2a')]=function(_0x19aff4,_0x761187){if(_0x19aff4['body']['id']){delete _0x19aff4['body']['id'];}return db['ChatInteraction'][_0x8bd6('0x43')]({'where':{'id':_0x19aff4[_0x8bd6('0x37')]['id']}})[_0x8bd6('0x16')](handleEntityNotFound(_0x761187,null))['then'](saveUpdates(_0x19aff4['body'],null))[_0x8bd6('0x16')](respondWithResult(_0x761187,null))[_0x8bd6('0x21')](handleError(_0x761187,null));};exports[_0x8bd6('0x2b')]=function(_0x45a1c9,_0x388d98){return db[_0x8bd6('0x39')][_0x8bd6('0x43')]({'where':{'id':_0x45a1c9[_0x8bd6('0x37')]['id']}})[_0x8bd6('0x16')](handleEntityNotFound(_0x388d98,null))[_0x8bd6('0x16')](removeEntity(_0x388d98,null))['catch'](handleError(_0x388d98,null));};exports[_0x8bd6('0x44')]=function(_0x37adeb,_0x20d2aa){return db[_0x8bd6('0x39')]['describe']()['then'](respondWithResult(_0x20d2aa,null))[_0x8bd6('0x21')](handleError(_0x20d2aa,null));};exports[_0x8bd6('0x45')]=function(_0x4c616f,_0x3a3506){var _0x4fa9ba=_0x4c616f[_0x8bd6('0x37')]['id'];var _0x10a39e;var _0x4935db;var _0x4204a6;return db[_0x8bd6('0x39')][_0x8bd6('0x46')]({'where':{'id':_0x4fa9ba}})[_0x8bd6('0x16')](function(_0x52ff7a){_0x10a39e=_0x52ff7a;return db[_0x8bd6('0x47')]['findOne']({'where':{'id':_0x52ff7a[_0x8bd6('0x48')]},'attributes':['id',_0x8bd6('0x49'),_0x8bd6('0x4a'),_0x8bd6('0x4b'),_0x8bd6('0x4c'),_0x8bd6('0x4d')],'raw':!![]});})['then'](function(_0x26d24e){if(_0x26d24e&&_0x26d24e[_0x8bd6('0x49')]&&_0x26d24e[_0x8bd6('0x4a')]){_0x4935db=_0x26d24e;var _0x1c71c4={'interaction':{'id':_0x4fa9ba},'agent':{'id':_0x4c616f['user']['id'],'name':_0x4c616f[_0x8bd6('0x35')][_0x8bd6('0x4e')],'fullname':_0x4c616f[_0x8bd6('0x35')][_0x8bd6('0x4f')],'email':_0x4c616f['user'][_0x8bd6('0x50')]},'contact':_0x4c616f['body'][_0x8bd6('0x51')],'account':_0x4c616f['body'][_0x8bd6('0x52')]};var _0x4ff56e={'rejectUnauthorized':![],'method':'POST','url':_0x8bd6('0x53'),'headers':{'X-APIKEY':_0x26d24e[_0x8bd6('0x49')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x4c616f[_0x8bd6('0x35')][_0x8bd6('0x50')]],'buttons':null,'topic':_0x4935db[_0x8bd6('0x4b')],'note':_['isNull'](_0x4935db[_0x8bd6('0x4c')])?null:getMustacheRender(_0x4935db[_0x8bd6('0x4c')],_0x1c71c4),'metadata':null},'redirect':_0x8bd6('0x54'),'json':!![]};try{if(!_[_0x8bd6('0x55')](_0x4935db['vidaooMetadata'])){var _0x3edc6c=getMustacheRender(_0x4935db[_0x8bd6('0x4d')],_0x1c71c4);var _0x6a29ef=JSON['parse'](_0x3edc6c);_0x4ff56e[_0x8bd6('0x56')][_0x8bd6('0x57')]=_0x6a29ef;}}catch(_0xc16b86){throw new db['Sequelize'][(_0x8bd6('0x58'))](_0x8bd6('0x59'));}return rp(_0x4ff56e);}else{throw new db[(_0x8bd6('0x5a'))][(_0x8bd6('0x58'))](_0x8bd6('0x5b'));}})['then'](function(_0x181a49){_0x4204a6=_0x181a49;if(_0x4204a6['id']){var _0x1d93c2={'body':_0x4204a6[_0x8bd6('0x5c')],'ChatWebsiteId':_0x4935db['id'],'ChatInteractionId':_0x10a39e['id'],'direction':_0x8bd6('0x5d'),'UserId':_0x4c616f['user']['id']};return db['ChatMessage']['create'](_0x1d93c2,{});}else{throw new db[(_0x8bd6('0x5a'))][(_0x8bd6('0x58'))](_0x8bd6('0x5e'));}})['then'](function(){return _0x10a39e[_0x8bd6('0x5f')]({'vidaooSessionId':_0x4204a6['id']});})['then'](respondWithResult(_0x3a3506,null))[_0x8bd6('0x21')](handleError(_0x3a3506,null));};exports['customUpdate']=function(_0x326255,_0x5d578b){if(_0x326255[_0x8bd6('0x56')]['id']){delete _0x326255[_0x8bd6('0x56')]['id'];}return db[_0x8bd6('0x39')][_0x8bd6('0x43')]({'where':{'id':_0x326255[_0x8bd6('0x37')]['id']},'include':[{'model':db[_0x8bd6('0x60')],'as':'Contact'}]})[_0x8bd6('0x16')](handleEntityNotFound(_0x5d578b,null))['then'](saveUpdates(_0x326255[_0x8bd6('0x56')],null))['then'](respondWithResult(_0x5d578b,null))[_0x8bd6('0x21')](handleError(_0x5d578b,null));};exports[_0x8bd6('0x61')]=function(_0x10a38c,_0x276136){if(_0x10a38c[_0x8bd6('0x56')]['id']){delete _0x10a38c[_0x8bd6('0x56')]['id'];}return db[_0x8bd6('0x39')][_0x8bd6('0x43')]({'where':{'id':_0x10a38c['params']['id']}})[_0x8bd6('0x16')](function(_0x3d6700){if(!_0x3d6700){logger[_0x8bd6('0x1c')](_0x8bd6('0x62'),_0x8bd6('0x61'),0x194,_0x8bd6('0x63'));_0x276136[_0x8bd6('0x22')](0x194);}else{if(_0x3d6700[_0x8bd6('0x64')]){throw new db[(_0x8bd6('0x5a'))][(_0x8bd6('0x58'))](_0x8bd6('0x65'));}}return _0x3d6700;})[_0x8bd6('0x16')](function(_0x1419af){if(_0x1419af){return _0x1419af['update']({'closed':_0x10a38c['body'][_0x8bd6('0x66')],'disposition':_0x10a38c[_0x8bd6('0x56')][_0x8bd6('0x67')]})[_0x8bd6('0x16')](function(_0x5e6b3e){return _0x5e6b3e;});}})[_0x8bd6('0x16')](function(){return respondWithRpcPromise('AbandonInteraction',_0x8bd6('0x61'),_0x10a38c[_0x8bd6('0x56')],client9004);})[_0x8bd6('0x16')](respondWithResult(_0x276136,null))[_0x8bd6('0x21')](handleError(_0x276136,null));};exports[_0x8bd6('0x68')]=function(_0x37d344,_0x1a6f6a){_0x37d344[_0x8bd6('0x56')][_0x8bd6('0x4e')]=_0x37d344[_0x8bd6('0x69')][_0x8bd6('0x6a')];_0x37d344[_0x8bd6('0x56')][_0x8bd6('0x6b')]=_0x37d344['file'][_0x8bd6('0x6c')];_0x37d344[_0x8bd6('0x56')][_0x8bd6('0x31')]=_0x37d344['file'][_0x8bd6('0x6d')];return db[_0x8bd6('0x6e')][_0x8bd6('0x6f')](_0x37d344[_0x8bd6('0x56')])['then'](respondWithResult(_0x1a6f6a,0xc9))[_0x8bd6('0x21')](handleError(_0x1a6f6a,null));};exports[_0x8bd6('0x70')]=function(_0x1f9362,_0x1b06e6){return db[_0x8bd6('0x39')][_0x8bd6('0x46')]({'where':{'id':_0x1f9362['params']['id']},'raw':!![]})[_0x8bd6('0x16')](handleEntityNotFound(_0x1b06e6,null))[_0x8bd6('0x16')](function(_0x303f2b){if(_0x303f2b){if(_0x303f2b[_0x8bd6('0x66')]){return _0x1b06e6[_0x8bd6('0x23')](0x193)['json']({'status':0x193,'message':_0x8bd6('0x71')});}return db[_0x8bd6('0x6e')][_0x8bd6('0x46')]({'where':{'id':_0x1f9362[_0x8bd6('0x34')][_0x8bd6('0x72')]},'raw':!![]})['then'](handleEntityNotFound(_0x1b06e6,null));}})[_0x8bd6('0x16')](function(_0x2d112b){if(_0x2d112b){var _0x982695=_0x2d112b[_0x8bd6('0x73')]!==null;var _0x19f5b2=path[_0x8bd6('0x74')](config[_0x8bd6('0x75')],_0x8bd6('0x76'));if(_0x982695){_0x19f5b2=path[_0x8bd6('0x74')](_0x19f5b2,_0x8bd6('0x77'));}var _0x13e2ec=path[_0x8bd6('0x74')](_0x19f5b2,_0x2d112b[_0x8bd6('0x6b')]);return _0x1b06e6['download'](_0x13e2ec);}})['catch'](handleError(_0x1b06e6,null));};exports['close']=function(_0x25527a,_0x1dcc28){var _0x1d70c6=null;var _0x42c5ab=null;var _0xc19d93=null;if(_0x25527a[_0x8bd6('0x56')]['id']){delete _0x25527a[_0x8bd6('0x56')]['id'];}if(_0x25527a[_0x8bd6('0x56')][_0x8bd6('0x78')]){_0xc19d93=path[_0x8bd6('0x74')](config[_0x8bd6('0x75')],_0x8bd6('0x79'),util['format'](_0x8bd6('0x7a'),Date[_0x8bd6('0x7b')]()));_0x25527a['body']['pathTranscript']=_0xc19d93;}return db['ChatInteraction'][_0x8bd6('0x43')]({'where':{'id':_0x25527a[_0x8bd6('0x37')]['id']},'include':[{'model':db['ChatMessage'],'as':'Messages','include':[{'model':db['User'],'as':'User'}]}]})[_0x8bd6('0x16')](handleEntityNotFound(_0x1dcc28,null))['then'](saveUpdates(_0x25527a['body'],null))[_0x8bd6('0x16')](function(_0x528a81){if(_0x528a81){_0x1d70c6=_0x528a81;return db[_0x8bd6('0x47')][_0x8bd6('0x43')]({'where':{'id':_0x1d70c6[_0x8bd6('0x48')]}});}})[_0x8bd6('0x16')](function(_0xfd10a0){if(_0xfd10a0){_0x42c5ab=_0xfd10a0;return db[_0x8bd6('0x60')]['find']({'where':{'id':_0x1d70c6['ContactId']}});}})[_0x8bd6('0x16')](function(_0x17d591){if(_0x17d591){if(_0xc19d93){var _0x442982=null;for(var _0x181525=0x1;_0x181525<_0x1d70c6[_0x8bd6('0x7c')][_0x8bd6('0x40')];++_0x181525){_0x442982=_0x1d70c6[_0x8bd6('0x7c')][_0x181525];var _0x5e350c=_0x442982[_0x8bd6('0x64')]?util[_0x8bd6('0x7d')](_0x8bd6('0x7e'),_0x42c5ab[_0x8bd6('0x7f')],_0x442982[_0x8bd6('0x64')]):'System';var _0x3565b7=_0x25527a[_0x8bd6('0x56')][_0x8bd6('0x80')]||util[_0x8bd6('0x7d')](_0x8bd6('0x7e'),_0x8bd6('0x81'),_0x442982[_0x8bd6('0x82')]);switch(_0x42c5ab[_0x8bd6('0x83')]){case _0x8bd6('0x84'):_0x5e350c=_0x442982[_0x8bd6('0x64')]?util[_0x8bd6('0x7d')](_0x8bd6('0x7e'),_0x42c5ab[_0x8bd6('0x7f')],_0x442982[_0x8bd6('0x64')]):_0x8bd6('0x85');break;case _0x8bd6('0x86'):_0x5e350c=_0x442982[_0x8bd6('0x64')]?_0x442982['User']['alias']||_0x442982['User'][_0x8bd6('0x4f')]:_0x8bd6('0x85');break;case _0x8bd6('0x87'):_0x5e350c=_0x442982[_0x8bd6('0x64')]?_0x442982[_0x8bd6('0x88')][_0x8bd6('0x4f')]:_0x8bd6('0x85');break;default:_0x5e350c=_0x442982[_0x8bd6('0x64')]?util[_0x8bd6('0x7d')](_0x8bd6('0x7e'),_0x42c5ab['agentAlias'],_0x442982[_0x8bd6('0x64')]):'System';}var _0x5339c7=util[_0x8bd6('0x7d')](_0x8bd6('0x89'),moment(_0x442982[_0x8bd6('0x8a')])[_0x8bd6('0x7d')]('MM/DD/YYYY\x20HH:mm:ss'),_0x442982[_0x8bd6('0x8b')]==='in'?_0x3565b7:_0x5e350c,_0x442982[_0x8bd6('0x56')]);if(!_0x442982['secret']){fs[_0x8bd6('0x8c')](_0xc19d93,_0x5339c7);}}return db['MailAccount']['findOne']({'where':{'service':!![]},'include':[{'model':db['MailServerOut'],'as':_0x8bd6('0x8d'),'raw':!![],'include':[{'model':db[_0x8bd6('0x8e')],'as':_0x8bd6('0x8e'),'raw':!![]}]}]});}}})['then'](function(_0x141d02){if(!_0x141d02||!_0x141d02['Smtp']||!_0x25527a[_0x8bd6('0x56')])return _0x1d70c6;var _0x3bbeda=_0x141d02[_0x8bd6('0x8f')]();return respondWithRpcPromise(_0x8bd6('0x90'),_0x8bd6('0x91'),{'account':_0x3bbeda,'message':{'from':util[_0x8bd6('0x7d')](_0x8bd6('0x92'),_0x141d02[_0x8bd6('0x4e')],_0x141d02[_0x8bd6('0x50')]||_0x141d02['Smtp']['user']),'to':_0x25527a['body'][_0x8bd6('0x78')],'subject':_0x8bd6('0x93'),'text':util[_0x8bd6('0x7d')]('Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a',_0x25527a[_0x8bd6('0x56')]['mailTranscript']),'attachments':[{'path':_0xc19d93}]}})[_0x8bd6('0x16')](function(){return _0x1d70c6;})['catch'](function(_0x586a8b){logger[_0x8bd6('0x1c')](_0x586a8b);});})[_0x8bd6('0x16')](respondWithStatusCode(_0x1dcc28,0xc8))[_0x8bd6('0x21')](handleError(_0x1dcc28,null));};exports[_0x8bd6('0x94')]=function(_0x32c4e8,_0x123696){return db[_0x8bd6('0x95')]['find']({'where':{'id':_0x32c4e8[_0x8bd6('0x37')]['id']}})[_0x8bd6('0x16')](handleEntityNotFound(_0x123696,null))[_0x8bd6('0x16')](function(_0x4f8437){if(_0x4f8437){return _0x4f8437[_0x8bd6('0x94')](_0x32c4e8['body'][_0x8bd6('0x96')],_['omit'](_0x32c4e8['body'],[_0x8bd6('0x96'),'id'])||{});}})['then'](respondWithResult(_0x123696,null))[_0x8bd6('0x21')](handleError(_0x123696,null));};exports[_0x8bd6('0x97')]=function(_0x31afa1,_0x3b88c5){var _0x37cc48={'raw':![],'where':{}};var _0xe15cd1={};var _0x11e2e3={'count':0x0,'rows':[]};return db[_0x8bd6('0x39')][_0x8bd6('0x46')]({'where':{'id':_0x31afa1[_0x8bd6('0x37')]['id']}})[_0x8bd6('0x16')](handleEntityNotFound(_0x3b88c5,null))[_0x8bd6('0x16')](function(_0x5abe50){if(_0x5abe50){_0xe15cd1[_0x8bd6('0x3e')]=_[_0x8bd6('0x38')](db[_0x8bd6('0x95')][_0x8bd6('0x3a')]);_0xe15cd1[_0x8bd6('0x34')]=_[_0x8bd6('0x38')](_0x31afa1[_0x8bd6('0x34')]);_0xe15cd1[_0x8bd6('0x3b')]=_['intersection'](_0xe15cd1[_0x8bd6('0x3e')],_0xe15cd1[_0x8bd6('0x34')]);_0x37cc48[_0x8bd6('0x3d')]=_[_0x8bd6('0x3c')](_0xe15cd1[_0x8bd6('0x3e')],qs[_0x8bd6('0x3f')](_0x31afa1['query'][_0x8bd6('0x3f')]));_0x37cc48['attributes']=_0x37cc48[_0x8bd6('0x3d')][_0x8bd6('0x40')]?_0x37cc48[_0x8bd6('0x3d')]:_0xe15cd1[_0x8bd6('0x3e')];if(!_0x31afa1[_0x8bd6('0x34')][_0x8bd6('0x98')]('nolimit')){_0x37cc48['limit']=qs[_0x8bd6('0x26')](_0x31afa1[_0x8bd6('0x34')][_0x8bd6('0x26')]);_0x37cc48[_0x8bd6('0x25')]=qs['offset'](_0x31afa1['query']['offset']);}_0x37cc48[_0x8bd6('0x99')]=qs[_0x8bd6('0x9a')](_0x31afa1[_0x8bd6('0x34')][_0x8bd6('0x9a')]);_0x37cc48[_0x8bd6('0x9b')]=qs[_0x8bd6('0x3b')](_[_0x8bd6('0x9c')](_0x31afa1['query'],_0xe15cd1[_0x8bd6('0x3b')]));_0x37cc48[_0x8bd6('0x9b')][_0x8bd6('0x9d')]=_0x5abe50['id'];if(_0x31afa1[_0x8bd6('0x34')][_0x8bd6('0x9e')]){_0x37cc48['where']=_[_0x8bd6('0x42')](_0x37cc48[_0x8bd6('0x9b')],{'$or':_[_0x8bd6('0x9f')](_0x37cc48[_0x8bd6('0x3d')],function(_0x3fa5cd){var _0x201e40={};_0x201e40[_0x3fa5cd]={'$like':'%'+_0x31afa1[_0x8bd6('0x34')][_0x8bd6('0x9e')]+'%'};return _0x201e40;})});}if(_0x31afa1['query']['$gte']){var _0x171653=_0x31afa1['query'][_0x8bd6('0xa0')]['split'](',');var _0x99f00d={};_0x99f00d[_0x171653[0x0]]={'$gte':moment(_0x171653[0x1])[_0x8bd6('0x7d')](_0x8bd6('0xa1'))};_0x37cc48[_0x8bd6('0x9b')]=_[_0x8bd6('0x42')](_0x37cc48[_0x8bd6('0x9b')],_0x99f00d);}_0x37cc48=_[_0x8bd6('0x42')]({},_0x37cc48,_0x31afa1[_0x8bd6('0xa2')]);return db['ChatMessage'][_0x8bd6('0x28')]({'where':_0x37cc48[_0x8bd6('0x9b')]})[_0x8bd6('0x16')](function(_0x36d294){_0x11e2e3[_0x8bd6('0x28')]=_0x36d294;if(_0x31afa1[_0x8bd6('0x34')][_0x8bd6('0xa3')]){_0x37cc48[_0x8bd6('0x41')]=[{'all':!![]}];}return db['ChatMessage'][_0x8bd6('0xa4')](_0x37cc48);})[_0x8bd6('0x16')](function(_0x19aa94){_0x11e2e3[_0x8bd6('0xa5')]=_0x19aa94;return _0x11e2e3;});}})['then'](respondWithFilteredResult(_0x3b88c5,_0x37cc48))[_0x8bd6('0x21')](handleError(_0x3b88c5,null));};exports['getMyMessages']=function(_0x5b0485,_0x18f57c){var _0xf1c3b0={'where':{}},_0x28ddec={},_0x2b1e7d={'count':0x0,'rows':[]};return db[_0x8bd6('0x39')][_0x8bd6('0x46')]({'where':{'id':_0x5b0485['params']['id']}})[_0x8bd6('0x16')](handleEntityNotFound(_0x18f57c,null))[_0x8bd6('0x16')](function(_0xce0f73){if(_0xce0f73){_0x28ddec[_0x8bd6('0x3e')]=_['keys'](db['ChatMessage'][_0x8bd6('0x3a')]);_0x28ddec['query']=_[_0x8bd6('0x38')](_0x5b0485[_0x8bd6('0x34')]);_0x28ddec[_0x8bd6('0x3b')]=_['intersection'](_0x28ddec[_0x8bd6('0x3e')],_0x28ddec[_0x8bd6('0x34')]);_0xf1c3b0['attributes']=_[_0x8bd6('0x3c')](_0x28ddec[_0x8bd6('0x3e')],qs[_0x8bd6('0x3f')](_0x5b0485[_0x8bd6('0x34')][_0x8bd6('0x3f')]));_0xf1c3b0[_0x8bd6('0x3d')]=_0xf1c3b0['attributes']['length']?_0xf1c3b0['attributes']:_0x28ddec[_0x8bd6('0x3e')];if(!_0x5b0485[_0x8bd6('0x34')][_0x8bd6('0x98')](_0x8bd6('0xa6'))){_0xf1c3b0['limit']=qs[_0x8bd6('0x26')](_0x5b0485[_0x8bd6('0x34')]['limit']);_0xf1c3b0[_0x8bd6('0x25')]=qs[_0x8bd6('0x25')](_0x5b0485[_0x8bd6('0x34')]['offset']);}_0xf1c3b0[_0x8bd6('0x99')]=qs[_0x8bd6('0x9a')](_0x5b0485[_0x8bd6('0x34')][_0x8bd6('0x9a')]);_0xf1c3b0['where']=qs[_0x8bd6('0x3b')](_['pick'](_0x5b0485[_0x8bd6('0x34')],_0x28ddec['filters']));_0xf1c3b0['where'][_0x8bd6('0x9d')]=_0xce0f73['id'];if(_0x5b0485['query'][_0x8bd6('0x9e')]){_0xf1c3b0[_0x8bd6('0x9b')]=_[_0x8bd6('0x42')](_0xf1c3b0[_0x8bd6('0x9b')],{'$or':_[_0x8bd6('0x9f')](_0xf1c3b0['attributes'],function(_0x455fd1){var _0xa564bd={};_0xa564bd[_0x455fd1]={'$like':'%'+_0x5b0485[_0x8bd6('0x34')]['filter']+'%'};return _0xa564bd;})});}_0xf1c3b0[_0x8bd6('0x9b')][_0x8bd6('0xa7')]=![];if(_0x5b0485[_0x8bd6('0x34')]['id']){_0xf1c3b0[_0x8bd6('0x9b')]['id']={'$gt':_0x5b0485[_0x8bd6('0x34')]['id']};}_0xf1c3b0=_[_0x8bd6('0x42')]({},_0xf1c3b0,_0x5b0485['options']);return db['ChatMessage'][_0x8bd6('0x28')]({'where':_0xf1c3b0[_0x8bd6('0x9b')]})[_0x8bd6('0x16')](function(_0x28e1e4){_0x2b1e7d[_0x8bd6('0x28')]=_0x28e1e4;_0xf1c3b0['include']=[];if(_0x5b0485[_0x8bd6('0x34')][_0x8bd6('0xa8')]){_0xf1c3b0[_0x8bd6('0x41')][_0x8bd6('0xa9')]({'model':db['User'],'as':_0x8bd6('0x88'),'attributes':['id',_0x8bd6('0x4f'),_0x8bd6('0xaa')]});}if(_0x5b0485[_0x8bd6('0x34')][_0x8bd6('0xa3')]){_0xf1c3b0['include']=[{'all':!![]}];}return db['ChatMessage'][_0x8bd6('0xa4')](_0xf1c3b0);})[_0x8bd6('0x16')](function(_0x1c87a9){_0x2b1e7d[_0x8bd6('0xa5')]=_0x1c87a9;return _0x2b1e7d;});}})[_0x8bd6('0x16')](respondWithFilteredResult(_0x18f57c,_0xf1c3b0))[_0x8bd6('0x21')](handleError(_0x18f57c,null));};exports[_0x8bd6('0xab')]=function(_0x2ae31d,_0x33363e){return db[_0x8bd6('0x39')][_0x8bd6('0x43')]({'where':{'id':_0x2ae31d[_0x8bd6('0x37')]['id']}})['then'](handleEntityNotFound(_0x33363e,null))['then'](function(_0x1c380f){if(_0x1c380f){return _0x1c380f[_0x8bd6('0xac')](_0x2ae31d['body']['ids'],_['omit'](_0x2ae31d[_0x8bd6('0x56')],[_0x8bd6('0x96'),'id'])||{})[_0x8bd6('0xad')](function(){return db[_0x8bd6('0xae')][_0x8bd6('0xa4')]({'attributes':['id',_0x8bd6('0x4e'),'color'],'where':{'id':_0x2ae31d[_0x8bd6('0x56')][_0x8bd6('0x96')]}});})[_0x8bd6('0x16')](function(_0x18a52d){socket['emit'](_0x8bd6('0xaf'),{'id':Number(_0x2ae31d[_0x8bd6('0x37')]['id']),'tags':_0x18a52d||[]});return{'id':Number(_0x2ae31d[_0x8bd6('0x37')]['id']),'tags':_0x18a52d||[]};});}})[_0x8bd6('0x16')](respondWithResult(_0x33363e,null))[_0x8bd6('0x21')](handleError(_0x33363e,null));};exports[_0x8bd6('0xb0')]=function(_0x5a5309,_0x3d58d6){return db[_0x8bd6('0x39')]['find']({'where':{'id':_0x5a5309[_0x8bd6('0x37')]['id']}})[_0x8bd6('0x16')](handleEntityNotFound(_0x3d58d6,null))[_0x8bd6('0x16')](function(_0x54abc2){if(_0x54abc2){return _0x54abc2[_0x8bd6('0xb0')](_0x5a5309[_0x8bd6('0x34')][_0x8bd6('0x96')]);}})[_0x8bd6('0x16')](respondWithStatusCode(_0x3d58d6,null))[_0x8bd6('0x21')](handleError(_0x3d58d6,null));};exports[_0x8bd6('0xb1')]=function(_0x5107af,_0x2246aa){var _0x297923=moment()['unix']()[_0x8bd6('0xb2')]();var _0x2c5ca7=path[_0x8bd6('0x74')](config[_0x8bd6('0x75')],_0x8bd6('0xb3'),_0x8bd6('0xb4'),_0x8bd6('0xb5'));var _0x27706d=path[_0x8bd6('0x74')](config[_0x8bd6('0x75')],'server',_0x8bd6('0xb4'),_0x8bd6('0xb6'));var _0x4f4f5e=path[_0x8bd6('0x74')](_0x2c5ca7,_0x297923);var _0x4b1e9d=util[_0x8bd6('0x7d')](_0x8bd6('0xb7'),_0x5107af[_0x8bd6('0x37')]['id'],_0x297923);var _0x4c8ba6=path['join'](_0x2c5ca7,_0x4b1e9d);var _0x2af849=[];_0x2af849['push']({'model':db['User'],'as':_0x8bd6('0x88'),'attributes':['id',_0x8bd6('0x4f')],'raw':!![]});_0x2af849[_0x8bd6('0xa9')]({'model':db[_0x8bd6('0x60')],'as':'Contact','attributes':['id',_0x8bd6('0xb8'),_0x8bd6('0xb9')],'raw':!![]});if(_0x5107af[_0x8bd6('0x34')][_0x8bd6('0xb6')]){_0x2af849[_0x8bd6('0xa9')]({'model':db[_0x8bd6('0x6e')],'as':'Attachment','raw':!![]});}var _0x200cc3=[{'model':db[_0x8bd6('0x95')],'as':_0x8bd6('0x7c'),'attributes':['id',_0x8bd6('0x56'),_0x8bd6('0x8a'),_0x8bd6('0x8b'),_0x8bd6('0xa7'),_0x8bd6('0xba')],'include':_0x2af849}];_0x200cc3['push']({'model':db[_0x8bd6('0x47')],'as':_0x8bd6('0xbb'),'attributes':['id',_0x8bd6('0x4e')]});_0x200cc3[_0x8bd6('0xa9')]({'model':db[_0x8bd6('0x88')],'as':_0x8bd6('0xbc'),'attributes':['id',_0x8bd6('0x4f')]});return db[_0x8bd6('0x39')][_0x8bd6('0x43')]({'where':{'id':_0x5107af['params']['id']},'include':_0x200cc3})['then'](handleEntityNotFound(_0x2246aa,null))[_0x8bd6('0x16')](function(_0x149168){if(_0x149168){var _0x2519cb=_0x149168[_0x8bd6('0xbd')]({'plain':!![]});fs[_0x8bd6('0xbe')](_0x4f4f5e);var _0x27456d={'channel':'Chat','account':_0x2519cb[_0x8bd6('0xbb')][_0x8bd6('0x4e')],'agent':_0x2519cb[_0x8bd6('0xbc')]?_0x2519cb[_0x8bd6('0xbc')][_0x8bd6('0x4f')]:_0x8bd6('0xbf'),'createdAt':moment(_0x2519cb['createdAt'])[_0x8bd6('0x7d')](_0x8bd6('0xa1'))[_0x8bd6('0xb2')](),'closedAt':_0x2519cb[_0x8bd6('0x66')]?moment(_0x2519cb[_0x8bd6('0xc0')])[_0x8bd6('0x7d')]('YYYY-MM-DD\x20HH:mm:ss')['toString']():'','disposition':_0x2519cb[_0x8bd6('0x67')],'chatInfo':{'browser':_0x2519cb['browserName'],'os':_0x2519cb[_0x8bd6('0xc1')],'referer':_0x2519cb[_0x8bd6('0xc2')],'customerIp':_0x2519cb[_0x8bd6('0xc3')],'customerPort':_0x2519cb[_0x8bd6('0xc4')]?_0x2519cb[_0x8bd6('0xc4')]:'N.A.'},'messages':_(_0x2519cb[_0x8bd6('0x7c')])[_0x8bd6('0xc5')]()[_0x8bd6('0x9e')]({'secret':![]})['map'](function(_0x2b2a56){if(_0x2b2a56[_0x8bd6('0x6e')]){var _0x34dbf1=path[_0x8bd6('0x74')](_0x27706d,_0x2b2a56[_0x8bd6('0x6e')][_0x8bd6('0x6b')]);if(fs[_0x8bd6('0xc6')](_0x34dbf1)){fs[_0x8bd6('0xc7')](_0x34dbf1)['pipe'](fs['createWriteStream'](path[_0x8bd6('0x74')](_0x4f4f5e,_0x2b2a56[_0x8bd6('0x6e')]['basename'])));}}return{'date':moment(_0x2b2a56[_0x8bd6('0x8a')])[_0x8bd6('0x7d')]('YYYY-MM-DD\x20HH:mm:ss')[_0x8bd6('0xb2')](),'sender':_0x2b2a56[_0x8bd6('0x8b')]===_0x8bd6('0x5d')?_0x2b2a56[_0x8bd6('0x88')]?_0x2b2a56['User']['fullname']:'System':_0x2b2a56[_0x8bd6('0xc8')]['firstName']+(_0x2b2a56[_0x8bd6('0xc8')][_0x8bd6('0xb9')]?'\x20'+_0x2b2a56[_0x8bd6('0xc8')][_0x8bd6('0xb9')]:''),'body':_0x2b2a56[_0x8bd6('0x6e')]?_0x2b2a56[_0x8bd6('0x6e')]['basename']:_0x2b2a56[_0x8bd6('0x56')],'direction':_0x2b2a56[_0x8bd6('0x8b')]===_0x8bd6('0x5d')?'A':'C','secret':_0x2b2a56[_0x8bd6('0xa7')],'read':_0x2b2a56[_0x8bd6('0xba')],'attachment':_0x2b2a56[_0x8bd6('0x6e')]};})['value']()};return ejs[_0x8bd6('0xc9')](path[_0x8bd6('0x74')](config[_0x8bd6('0x75')],_0x8bd6('0xb3'),_0x8bd6('0xca'),'downloadInteraction.ejs'),{'interaction':_0x27456d})['then'](function(_0x423b9d){var _0x517c15=path[_0x8bd6('0x74')](_0x4f4f5e,'transcript-'+_0x2519cb['id']+'-'+_0x297923+_0x8bd6('0xcb'));var _0x330f49={'path':_0x517c15,'channel':_0x8bd6('0xcc'),'interactionId':_0x2519cb['id']};return pdf[_0x8bd6('0xcd')](_0x423b9d,_0x330f49);})[_0x8bd6('0x16')](function(){return new Promise(function(_0x1752e1,_0x2ad5d9){zipdir(_0x4f4f5e,{'saveTo':_0x4c8ba6},function(_0x296ff5,_0x4440ed){if(_0x296ff5)return _0x2ad5d9(_0x296ff5);return _0x1752e1(_0x4440ed);});})[_0x8bd6('0x16')](function(){return new BPromise(function(_0x18c3ad,_0xd5e9d9){rimraf(_0x4f4f5e,function(_0x399922){if(_0x399922)_0xd5e9d9(_0x399922);return _0x18c3ad();});});})[_0x8bd6('0x16')](function(){return _0x2246aa[_0x8bd6('0xb1')](_0x4c8ba6,_0x4b1e9d,function(_0x103b81){if(_0x103b81){logger[_0x8bd6('0x1c')](_0x8bd6('0xce'),_0x103b81);}else{fs[_0x8bd6('0xcf')](_0x4c8ba6);}});});});}else{return _0x2246aa[_0x8bd6('0x22')](0xc8);}})['catch'](handleError(_0x2246aa,null));};
\ No newline at end of file
index 9f8d629..1c8f673 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f8b=['setMaxListeners','save','update','remove','then','setDataValue','Users','map','unreadMessages','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','ChatMessage'];(function(_0xe6be68,_0x5dd847){var _0x448fff=function(_0x12c248){while(--_0x12c248){_0xe6be68['push'](_0xe6be68['shift']());}};_0x448fff(++_0x5dd847);}(_0x7f8b,0x1ea));var _0xb7f8=function(_0x45d3f0,_0x4be53f){_0x45d3f0=_0x45d3f0-0x0;var _0x314b79=_0x7f8b[_0x45d3f0];return _0x314b79;};'use strict';var EventEmitter=require(_0xb7f8('0x0'));var ChatInteraction=require(_0xb7f8('0x1'))['db']['ChatInteraction'];var ChatMessage=require(_0xb7f8('0x1'))['db'][_0xb7f8('0x2')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0xb7f8('0x3')](0x0);var events={'afterCreate':_0xb7f8('0x4'),'afterUpdate':_0xb7f8('0x5'),'afterDestroy':_0xb7f8('0x6')};function emitEvent(_0x2baae1){return function(_0x492d3b,_0x595c92,_0x23ee26){_0x492d3b['getUsers']({'attributes':['id'],'raw':!![]})[_0xb7f8('0x7')](function(_0x35d476){_0x492d3b[_0xb7f8('0x8')](_0xb7f8('0x9'),_0x35d476[_0xb7f8('0xa')](function(_0x591952){return{'id':_0x591952['id']};}));return ChatMessage['findAll']({'where':{'ChatInteractionId':_0x492d3b['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x310add){_0x492d3b[_0xb7f8('0x8')](_0xb7f8('0xb'),_0x310add['length']);ChatInteractionEvents[_0xb7f8('0xc')](_0x2baae1+':'+_0x492d3b['id'],_0x492d3b);ChatInteractionEvents['emit'](_0x2baae1,_0x492d3b);_0x23ee26(null);})[_0xb7f8('0xd')](_0x23ee26(null));};}for(var e in events){if(events[_0xb7f8('0xe')](e)){var event=events[e];ChatInteraction[_0xb7f8('0xf')](e,emitEvent(event));}}module[_0xb7f8('0x10')]=ChatInteractionEvents;
\ No newline at end of file
+var _0x762f=['exports','events','../../mysqldb','ChatMessage','save','update','remove','Users','map','findAll','then','setDataValue','unreadMessages','length','catch','hasOwnProperty','hook'];(function(_0x1f40c1,_0x25ee22){var _0x1fd394=function(_0x13f784){while(--_0x13f784){_0x1f40c1['push'](_0x1f40c1['shift']());}};_0x1fd394(++_0x25ee22);}(_0x762f,0xef));var _0xf762=function(_0x5cddda,_0x1c5e82){_0x5cddda=_0x5cddda-0x0;var _0x503ade=_0x762f[_0x5cddda];return _0x503ade;};'use strict';var EventEmitter=require(_0xf762('0x0'));var ChatInteraction=require(_0xf762('0x1'))['db']['ChatInteraction'];var ChatMessage=require(_0xf762('0x1'))['db'][_0xf762('0x2')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xf762('0x3'),'afterUpdate':_0xf762('0x4'),'afterDestroy':_0xf762('0x5')};function emitEvent(_0x2e9def){return function(_0x47ded2,_0x466568,_0x4ffbfb){_0x47ded2['getUsers']({'attributes':['id'],'raw':!![]})['then'](function(_0x4fcf9f){_0x47ded2['setDataValue'](_0xf762('0x6'),_0x4fcf9f[_0xf762('0x7')](function(_0x215cc8){return{'id':_0x215cc8['id']};}));return ChatMessage[_0xf762('0x8')]({'where':{'ChatInteractionId':_0x47ded2['id'],'direction':'in','read':![]},'raw':!![]});})[_0xf762('0x9')](function(_0x288b3b){_0x47ded2[_0xf762('0xa')](_0xf762('0xb'),_0x288b3b[_0xf762('0xc')]);ChatInteractionEvents['emit'](_0x2e9def+':'+_0x47ded2['id'],_0x47ded2);ChatInteractionEvents['emit'](_0x2e9def,_0x47ded2);_0x4ffbfb(null);})[_0xf762('0xd')](_0x4ffbfb(null));};}for(var e in events){if(events[_0xf762('0xe')](e)){var event=events[e];ChatInteraction[_0xf762('0xf')](e,emitEvent(event));}}module[_0xf762('0x10')]=ChatInteractionEvents;
\ No newline at end of file
index fd94af2..7c4343a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x449c=['chat_interactions','changed','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','exports','define','ChatInteraction'];(function(_0x51496c,_0x2e540a){var _0x1d03d0=function(_0x366894){while(--_0x366894){_0x51496c['push'](_0x51496c['shift']());}};_0x1d03d0(++_0x2e540a);}(_0x449c,0x7c));var _0xc449=function(_0x11918f,_0x4f640b){_0x11918f=_0x11918f-0x0;var _0x1145ab=_0x449c[_0x11918f];return _0x1145ab;};'use strict';var _=require(_0xc449('0x0'));var util=require(_0xc449('0x1'));var logger=require(_0xc449('0x2'))(_0xc449('0x3'));var moment=require(_0xc449('0x4'));var BPromise=require(_0xc449('0x5'));var rp=require(_0xc449('0x6'));var fs=require('fs');var path=require(_0xc449('0x7'));var rimraf=require('rimraf');var config=require(_0xc449('0x8'));var attributes=require('./chatInteraction.attributes');module[_0xc449('0x9')]=function(_0x3aa8a0,_0x20c562){return _0x3aa8a0[_0xc449('0xa')](_0xc449('0xb'),attributes,{'tableName':_0xc449('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x7eaa3a,_0x4e70a6,_0x11944d){if(_0x7eaa3a[_0xc449('0xd')](_0xc449('0xe'))){_0x7eaa3a[_0xc449('0xf')]=moment()['format'](_0xc449('0x10'));}_0x11944d(null,_0x7eaa3a);}},'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xa796=['request-promise','path','rimraf','./chatInteraction.attributes','exports','define','ChatInteraction','chat_interactions','changed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','utf8mb4_unicode_ci','lodash','bluebird'];(function(_0x8664f6,_0x49ea34){var _0x47ac6b=function(_0x333bb3){while(--_0x333bb3){_0x8664f6['push'](_0x8664f6['shift']());}};_0x47ac6b(++_0x49ea34);}(_0xa796,0xa3));var _0x6a79=function(_0x465542,_0x29416f){_0x465542=_0x465542-0x0;var _0x5a63c5=_0xa796[_0x465542];return _0x5a63c5;};'use strict';var _=require(_0x6a79('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x6a79('0x1'));var rp=require(_0x6a79('0x2'));var fs=require('fs');var path=require(_0x6a79('0x3'));var rimraf=require(_0x6a79('0x4'));var config=require('../../config/environment');var attributes=require(_0x6a79('0x5'));module[_0x6a79('0x6')]=function(_0x684c92,_0x1c4106){return _0x684c92[_0x6a79('0x7')](_0x6a79('0x8'),attributes,{'tableName':_0x6a79('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x4b4369,_0x4e12d5,_0x2d1f75){if(_0x4b4369[_0x6a79('0xa')]('closed')){_0x4b4369[_0x6a79('0xb')]=moment()[_0x6a79('0xc')](_0x6a79('0xd'));}_0x2d1f75(null,_0x4b4369);}},'charset':'utf8mb4','collate':_0x6a79('0xe')});};
\ No newline at end of file
index 45e3141..b1ed045 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9783=['where','attributes','limit','AddTagsToChatInteraction','find','body','omit','ids','spread','AddTags','lodash','util','bluebird','randomstring','rpc','client','http','redis','localhost','socket.io-emitter','register','request','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','UpdateChatInteraction','ChatInteraction','update','options','raw'];(function(_0xb617a6,_0x5db959){var _0x56008c=function(_0x16f8ab){while(--_0x16f8ab){_0xb617a6['push'](_0xb617a6['shift']());}};_0x56008c(++_0x5db959);}(_0x9783,0xa2));var _0x3978=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9783[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x3978('0x0'));var util=require(_0x3978('0x1'));var moment=require('moment');var BPromise=require(_0x3978('0x2'));var rs=require(_0x3978('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x3978('0x4'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x3978('0x5')][_0x3978('0x6')]({'port':0x232a});config[_0x3978('0x7')]=_['defaults'](config['redis'],{'host':_0x3978('0x8'),'port':0x18eb});var socket=require(_0x3978('0x9'))(new Redis(config[_0x3978('0x7')]));require('./chatInteraction.socket')[_0x3978('0xa')](socket);function respondWithRpcPromise(_0x1d513c,_0x1f870b,_0x2e3c99){return new BPromise(function(_0x3fc896,_0x1a29e){return client[_0x3978('0xb')](_0x1d513c,_0x2e3c99)[_0x3978('0xc')](function(_0x315149){logger[_0x3978('0xd')](_0x3978('0xe'),_0x1f870b,_0x3978('0xf'));logger[_0x3978('0x10')](_0x3978('0x11'),_0x1f870b,_0x3978('0xf'),JSON[_0x3978('0x12')](_0x315149));if(_0x315149[_0x3978('0x13')]){if(_0x315149[_0x3978('0x13')][_0x3978('0x14')]===0x1f4){logger['error'](_0x3978('0xe'),_0x1f870b,_0x315149[_0x3978('0x13')][_0x3978('0x15')]);return _0x1a29e(_0x315149['error'][_0x3978('0x15')]);}logger[_0x3978('0x13')](_0x3978('0xe'),_0x1f870b,_0x315149['error'][_0x3978('0x15')]);return _0x3fc896(_0x315149['error'][_0x3978('0x15')]);}else{logger['info'](_0x3978('0xe'),_0x1f870b,_0x3978('0xf'));_0x3fc896(_0x315149['result']['message']);}})[_0x3978('0x16')](function(_0x57caba){logger[_0x3978('0x13')]('ChatInteraction,\x20%s,\x20%s',_0x1f870b,_0x57caba);_0x1a29e(_0x57caba);});});}exports[_0x3978('0x17')]=function(_0x3523a2){var _0x4db35c=this;return new Promise(function(_0x371975,_0x254f89){return db[_0x3978('0x18')][_0x3978('0x19')](_0x3523a2['body'],{'raw':_0x3523a2[_0x3978('0x1a')]?_0x3523a2['options'][_0x3978('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3523a2['options']?_0x3523a2[_0x3978('0x1a')][_0x3978('0x1c')]||null:null,'attributes':_0x3523a2[_0x3978('0x1a')]?_0x3523a2[_0x3978('0x1a')][_0x3978('0x1d')]||null:null,'limit':_0x3523a2[_0x3978('0x1a')]?_0x3523a2['options'][_0x3978('0x1e')]||null:null})[_0x3978('0xc')](function(_0x1d6850){logger[_0x3978('0xd')](_0x3978('0x17'),_0x3523a2);logger[_0x3978('0x10')](_0x3978('0x17'),_0x3523a2,JSON[_0x3978('0x12')](_0x1d6850));_0x371975(_0x1d6850);})[_0x3978('0x16')](function(_0xb1d079){logger[_0x3978('0x13')](_0x3978('0x17'),_0xb1d079[_0x3978('0x15')],_0x3523a2);_0x254f89(_0x4db35c[_0x3978('0x13')](0x1f4,_0xb1d079[_0x3978('0x15')]));});});};exports[_0x3978('0x1f')]=function(_0xd36954){return new Promise(function(_0x4ad150,_0x554b26){return db['ChatInteraction'][_0x3978('0x20')]({'where':_0xd36954[_0x3978('0x1a')]?_0xd36954[_0x3978('0x1a')][_0x3978('0x1c')]||null:null})['then'](function(_0x2447f6){if(_0x2447f6){return _0x2447f6['addTags'](_0xd36954[_0x3978('0x21')]['ids'],_[_0x3978('0x22')](_0xd36954['body'],[_0x3978('0x23'),'id'])||{});}})[_0x3978('0x24')](function(_0x10abf1){logger[_0x3978('0xd')](_0x3978('0x25'),_0xd36954);logger[_0x3978('0x10')](_0x3978('0x25'),_0xd36954,JSON[_0x3978('0x12')](_0x10abf1));_0x4ad150(_0x10abf1);})[_0x3978('0x16')](function(_0x341c9a){logger[_0x3978('0x13')]('AddTags',_0x341c9a[_0x3978('0x15')],_0xd36954);_0x554b26(_this[_0x3978('0x13')](0x1f4,_0x341c9a[_0x3978('0x15')]));});});};
\ No newline at end of file
+var _0x5d1a=['../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./chatInteraction.socket','register','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','ChatInteraction,\x20%s,\x20%s,\x20%s','message','error','catch','UpdateChatInteraction','update','body','options','raw','where','attributes','AddTagsToChatInteraction','ChatInteraction','find','ids','spread','AddTags','stringify','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x227427,_0x39a41d){var _0x2f3aef=function(_0x391c69){while(--_0x391c69){_0x227427['push'](_0x227427['shift']());}};_0x2f3aef(++_0x39a41d);}(_0x5d1a,0xea));var _0xa5d1=function(_0x31abee,_0x11ff0c){_0x31abee=_0x31abee-0x0;var _0x3c1761=_0x5d1a[_0x31abee];return _0x3c1761;};'use strict';var _=require(_0xa5d1('0x0'));var util=require(_0xa5d1('0x1'));var moment=require(_0xa5d1('0x2'));var BPromise=require(_0xa5d1('0x3'));var rs=require(_0xa5d1('0x4'));var fs=require('fs');var Redis=require(_0xa5d1('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xa5d1('0x6'));var logger=require(_0xa5d1('0x7'))(_0xa5d1('0x8'));var config=require('../../config/environment');var jayson=require(_0xa5d1('0x9'));var client=jayson[_0xa5d1('0xa')][_0xa5d1('0xb')]({'port':0x232a});config[_0xa5d1('0xc')]=_[_0xa5d1('0xd')](config['redis'],{'host':_0xa5d1('0xe'),'port':0x18eb});var socket=require(_0xa5d1('0xf'))(new Redis(config[_0xa5d1('0xc')]));require(_0xa5d1('0x10'))[_0xa5d1('0x11')](socket);function respondWithRpcPromise(_0x490bb9,_0x258ccd,_0x4442c9){return new BPromise(function(_0x4c6903,_0x118e0c){return client['request'](_0x490bb9,_0x4442c9)[_0xa5d1('0x12')](function(_0x4d86b5){logger[_0xa5d1('0x13')](_0xa5d1('0x14'),_0x258ccd,_0xa5d1('0x15'));logger['debug'](_0xa5d1('0x16'),_0x258ccd,_0xa5d1('0x15'),JSON['stringify'](_0x4d86b5));if(_0x4d86b5['error']){if(_0x4d86b5['error']['code']===0x1f4){logger['error'](_0xa5d1('0x14'),_0x258ccd,_0x4d86b5['error'][_0xa5d1('0x17')]);return _0x118e0c(_0x4d86b5[_0xa5d1('0x18')][_0xa5d1('0x17')]);}logger['error']('ChatInteraction,\x20%s,\x20%s',_0x258ccd,_0x4d86b5[_0xa5d1('0x18')][_0xa5d1('0x17')]);return _0x4c6903(_0x4d86b5[_0xa5d1('0x18')]['message']);}else{logger[_0xa5d1('0x13')]('ChatInteraction,\x20%s,\x20%s',_0x258ccd,_0xa5d1('0x15'));_0x4c6903(_0x4d86b5['result'][_0xa5d1('0x17')]);}})[_0xa5d1('0x19')](function(_0x501fd4){logger[_0xa5d1('0x18')](_0xa5d1('0x14'),_0x258ccd,_0x501fd4);_0x118e0c(_0x501fd4);});});}exports[_0xa5d1('0x1a')]=function(_0x465f70){var _0x614177=this;return new Promise(function(_0x221319,_0x6e6f1c){return db['ChatInteraction'][_0xa5d1('0x1b')](_0x465f70[_0xa5d1('0x1c')],{'raw':_0x465f70[_0xa5d1('0x1d')]?_0x465f70[_0xa5d1('0x1d')][_0xa5d1('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x465f70[_0xa5d1('0x1d')]?_0x465f70[_0xa5d1('0x1d')][_0xa5d1('0x1f')]||null:null,'attributes':_0x465f70[_0xa5d1('0x1d')]?_0x465f70[_0xa5d1('0x1d')][_0xa5d1('0x20')]||null:null,'limit':_0x465f70[_0xa5d1('0x1d')]?_0x465f70[_0xa5d1('0x1d')]['limit']||null:null})[_0xa5d1('0x12')](function(_0x1f910e){logger[_0xa5d1('0x13')](_0xa5d1('0x1a'),_0x465f70);logger['debug']('UpdateChatInteraction',_0x465f70,JSON['stringify'](_0x1f910e));_0x221319(_0x1f910e);})[_0xa5d1('0x19')](function(_0x2d98a5){logger[_0xa5d1('0x18')](_0xa5d1('0x1a'),_0x2d98a5['message'],_0x465f70);_0x6e6f1c(_0x614177[_0xa5d1('0x18')](0x1f4,_0x2d98a5[_0xa5d1('0x17')]));});});};exports[_0xa5d1('0x21')]=function(_0x59e15d){return new Promise(function(_0xf92135,_0x5cb94f){return db[_0xa5d1('0x22')][_0xa5d1('0x23')]({'where':_0x59e15d[_0xa5d1('0x1d')]?_0x59e15d[_0xa5d1('0x1d')][_0xa5d1('0x1f')]||null:null})[_0xa5d1('0x12')](function(_0x365437){if(_0x365437){return _0x365437['addTags'](_0x59e15d['body'][_0xa5d1('0x24')],_['omit'](_0x59e15d[_0xa5d1('0x1c')],[_0xa5d1('0x24'),'id'])||{});}})[_0xa5d1('0x25')](function(_0x3a0087){logger['info'](_0xa5d1('0x26'),_0x59e15d);logger['debug'](_0xa5d1('0x26'),_0x59e15d,JSON[_0xa5d1('0x27')](_0x3a0087));_0xf92135(_0x3a0087);})['catch'](function(_0x1354f8){logger[_0xa5d1('0x18')](_0xa5d1('0x26'),_0x1354f8[_0xa5d1('0x17')],_0x59e15d);_0x5cb94f(_this[_0xa5d1('0x18')](0x1f4,_0x1354f8[_0xa5d1('0x17')]));});});};
\ No newline at end of file
index 8b2670d..bf0c14b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1b3=['removeListener','register','length','chatInteraction:','./chatInteraction.events','save','remove','update'];(function(_0x20cd1a,_0x547422){var _0x15f5ad=function(_0x10fcee){while(--_0x10fcee){_0x20cd1a['push'](_0x20cd1a['shift']());}};_0x15f5ad(++_0x547422);}(_0xd1b3,0xec));var _0x3d1b=function(_0x2e6a05,_0x5277a){_0x2e6a05=_0x2e6a05-0x0;var _0x39d0ed=_0xd1b3[_0x2e6a05];return _0x39d0ed;};'use strict';var ChatInteractionEvents=require(_0x3d1b('0x0'));var events=[_0x3d1b('0x1'),_0x3d1b('0x2'),_0x3d1b('0x3')];function createListener(_0x526bde,_0x4f4999){return function(_0x4bd3c4){_0x4f4999['emit'](_0x526bde,_0x4bd3c4);};}function removeListener(_0x18480d,_0x26034b){return function(){ChatInteractionEvents[_0x3d1b('0x4')](_0x18480d,_0x26034b);};}exports[_0x3d1b('0x5')]=function(_0x1c409e){for(var _0x45bd2b=0x0,_0x67c7d6=events[_0x3d1b('0x6')];_0x45bd2b<_0x67c7d6;_0x45bd2b++){var _0x3d12d8=events[_0x45bd2b];var _0x47614f=createListener(_0x3d1b('0x7')+_0x3d12d8,_0x1c409e);ChatInteractionEvents['on'](_0x3d12d8,_0x47614f);}};
\ No newline at end of file
+var _0xc4a7=['update','emit','removeListener','./chatInteraction.events','remove'];(function(_0xd72054,_0x45f46e){var _0x3832bb=function(_0x42d002){while(--_0x42d002){_0xd72054['push'](_0xd72054['shift']());}};_0x3832bb(++_0x45f46e);}(_0xc4a7,0x1ac));var _0x7c4a=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0xc4a7[_0x4b369d];return _0x571a98;};'use strict';var ChatInteractionEvents=require(_0x7c4a('0x0'));var events=['save',_0x7c4a('0x1'),_0x7c4a('0x2')];function createListener(_0x4f9a90,_0x3c63c0){return function(_0x55e224){_0x3c63c0[_0x7c4a('0x3')](_0x4f9a90,_0x55e224);};}function removeListener(_0x521f5c,_0x396d47){return function(){ChatInteractionEvents[_0x7c4a('0x4')](_0x521f5c,_0x396d47);};}exports['register']=function(_0x4d4f38){for(var _0x11b273=0x0,_0x3b0b97=events['length'];_0x11b273<_0x3b0b97;_0x11b273++){var _0x347403=events[_0x11b273];var _0x4e1692=createListener('chatInteraction:'+_0x347403,_0x4d4f38);ChatInteractionEvents['on'](_0x347403,_0x4e1692);}};
\ No newline at end of file
index 48d7dfd..ac3c7c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b91=['/describe','isAuthenticated','describe','isChatInteractionAuthorized','show','attachmentDownload','/:id/messages','getMessages','/:id/my_messages','getMyMessages','/:id/download','post','createVidaooSession','diskStorage','join','root','server/files/attachments/','format','%s-%s','now','originalname','replace','/:id/attachment_upload','single','file','attachmentUpload','addMessage','/:id/tags','tracked','chat','chatinteraction:addtags','addTags','/:id','update','put','/:id/custom_update','customUpdate','/:id/abandon','/:id/close','close','delete','chatinteraction:destroy','destroy','removeTags','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','get','index'];(function(_0x1c68da,_0x4e5b38){var _0x16a482=function(_0x523767){while(--_0x523767){_0x1c68da['push'](_0x1c68da['shift']());}};_0x16a482(++_0x4e5b38);}(_0x4b91,0x1e5));var _0x14b9=function(_0x7c1a20,_0x24ff49){_0x7c1a20=_0x7c1a20-0x0;var _0xc4f12b=_0x4b91[_0x7c1a20];return _0xc4f12b;};'use strict';var multer=require(_0x14b9('0x0'));var util=require(_0x14b9('0x1'));var path=require(_0x14b9('0x2'));var timeout=require(_0x14b9('0x3'));var express=require(_0x14b9('0x4'));var router=express[_0x14b9('0x5')]();var fs_extra=require(_0x14b9('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x14b9('0x7'));var config=require('../../config/environment');var controller=require('./chatInteraction.controller');router[_0x14b9('0x8')]('/',auth['isAuthenticated'](),controller[_0x14b9('0x9')]);router[_0x14b9('0x8')](_0x14b9('0xa'),auth[_0x14b9('0xb')](),controller[_0x14b9('0xc')]);router[_0x14b9('0x8')]('/:id',auth[_0x14b9('0xd')](),controller[_0x14b9('0xe')]);router[_0x14b9('0x8')]('/:id/attachment_download',auth[_0x14b9('0xd')](),controller[_0x14b9('0xf')]);router[_0x14b9('0x8')](_0x14b9('0x10'),auth[_0x14b9('0xb')](),controller[_0x14b9('0x11')]);router[_0x14b9('0x8')](_0x14b9('0x12'),auth[_0x14b9('0xd')](),controller[_0x14b9('0x13')]);router[_0x14b9('0x8')](_0x14b9('0x14'),auth['isAuthenticated'](),controller['download']);router[_0x14b9('0x15')]('/',auth[_0x14b9('0xb')](),controller['create']);router['post']('/:id/vidaoo',auth[_0x14b9('0xb')](),controller[_0x14b9('0x16')]);var upload=multer({'storage':multer[_0x14b9('0x17')]({'destination':function(_0xa5a51d,_0xafb5d,_0x4c790c){_0x4c790c(null,path[_0x14b9('0x18')](config[_0x14b9('0x19')],_0x14b9('0x1a')));},'filename':function(_0x54379d,_0x48e616,_0xcb978e){_0xcb978e(null,util[_0x14b9('0x1b')](_0x14b9('0x1c'),Date[_0x14b9('0x1d')](),_0x48e616[_0x14b9('0x1e')][_0x14b9('0x1f')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x14b9('0x15')](_0x14b9('0x20'),upload[_0x14b9('0x21')](_0x14b9('0x22')),controller[_0x14b9('0x23')]);router[_0x14b9('0x15')]('/:id/messages',auth[_0x14b9('0xd')](),controller[_0x14b9('0x24')]);router['post'](_0x14b9('0x25'),auth['isAuthenticated'](),interaction[_0x14b9('0x26')](_0x14b9('0x27'),_0x14b9('0x28')),controller[_0x14b9('0x29')]);router['put'](_0x14b9('0x2a'),auth[_0x14b9('0xb')](),interaction[_0x14b9('0x26')](_0x14b9('0x27'),'chatinteraction:update'),controller[_0x14b9('0x2b')]);router[_0x14b9('0x2c')](_0x14b9('0x2d'),controller[_0x14b9('0x2e')]);router[_0x14b9('0x2c')](_0x14b9('0x2f'),auth[_0x14b9('0xd')](),controller['abandon']);router[_0x14b9('0x2c')](_0x14b9('0x30'),controller[_0x14b9('0x31')]);router[_0x14b9('0x32')]('/:id',auth[_0x14b9('0xb')](),interaction['tracked'](_0x14b9('0x27'),_0x14b9('0x33')),controller[_0x14b9('0x34')]);router[_0x14b9('0x32')]('/:id/tags',auth[_0x14b9('0xb')](),controller[_0x14b9('0x35')]);module[_0x14b9('0x36')]=router;
\ No newline at end of file
+var _0x58fb=['multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','get','isAuthenticated','index','describe','/:id','attachmentDownload','/:id/my_messages','isChatInteractionAuthorized','/:id/download','download','post','createVidaooSession','diskStorage','root','server/files/attachments/','%s-%s','now','replace','/:id/attachment_upload','single','addMessage','/:id/tags','tracked','chat','addTags','put','chatinteraction:update','update','/:id/custom_update','customUpdate','abandon','close','delete','chatinteraction:destroy','destroy'];(function(_0x3d5351,_0x27bc80){var _0x1db4db=function(_0x3f572b){while(--_0x3f572b){_0x3d5351['push'](_0x3d5351['shift']());}};_0x1db4db(++_0x27bc80);}(_0x58fb,0xa8));var _0xb58f=function(_0x2f1770,_0x305406){_0x2f1770=_0x2f1770-0x0;var _0x10cebf=_0x58fb[_0x2f1770];return _0x10cebf;};'use strict';var multer=require(_0xb58f('0x0'));var util=require('util');var path=require(_0xb58f('0x1'));var timeout=require(_0xb58f('0x2'));var express=require(_0xb58f('0x3'));var router=express[_0xb58f('0x4')]();var fs_extra=require(_0xb58f('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xb58f('0x6'));var config=require('../../config/environment');var controller=require('./chatInteraction.controller');router[_0xb58f('0x7')]('/',auth[_0xb58f('0x8')](),controller[_0xb58f('0x9')]);router['get']('/describe',auth[_0xb58f('0x8')](),controller[_0xb58f('0xa')]);router['get'](_0xb58f('0xb'),auth['isChatInteractionAuthorized'](),controller['show']);router['get']('/:id/attachment_download',auth['isChatInteractionAuthorized'](),controller[_0xb58f('0xc')]);router[_0xb58f('0x7')]('/:id/messages',auth[_0xb58f('0x8')](),controller['getMessages']);router[_0xb58f('0x7')](_0xb58f('0xd'),auth[_0xb58f('0xe')](),controller['getMyMessages']);router[_0xb58f('0x7')](_0xb58f('0xf'),auth['isAuthenticated'](),controller[_0xb58f('0x10')]);router[_0xb58f('0x11')]('/',auth[_0xb58f('0x8')](),controller['create']);router['post']('/:id/vidaoo',auth[_0xb58f('0x8')](),controller[_0xb58f('0x12')]);var upload=multer({'storage':multer[_0xb58f('0x13')]({'destination':function(_0x551cb5,_0x3cbe03,_0x5a829d){_0x5a829d(null,path['join'](config[_0xb58f('0x14')],_0xb58f('0x15')));},'filename':function(_0x2bd737,_0x2ba924,_0x15b0bb){_0x15b0bb(null,util['format'](_0xb58f('0x16'),Date[_0xb58f('0x17')](),_0x2ba924['originalname'][_0xb58f('0x18')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xb58f('0x11')](_0xb58f('0x19'),upload[_0xb58f('0x1a')]('file'),controller['attachmentUpload']);router[_0xb58f('0x11')]('/:id/messages',auth['isChatInteractionAuthorized'](),controller[_0xb58f('0x1b')]);router[_0xb58f('0x11')](_0xb58f('0x1c'),auth['isAuthenticated'](),interaction[_0xb58f('0x1d')](_0xb58f('0x1e'),'chatinteraction:addtags'),controller[_0xb58f('0x1f')]);router[_0xb58f('0x20')](_0xb58f('0xb'),auth[_0xb58f('0x8')](),interaction[_0xb58f('0x1d')](_0xb58f('0x1e'),_0xb58f('0x21')),controller[_0xb58f('0x22')]);router['put'](_0xb58f('0x23'),controller[_0xb58f('0x24')]);router[_0xb58f('0x20')]('/:id/abandon',auth[_0xb58f('0xe')](),controller[_0xb58f('0x25')]);router[_0xb58f('0x20')]('/:id/close',controller[_0xb58f('0x26')]);router[_0xb58f('0x27')](_0xb58f('0xb'),auth[_0xb58f('0x8')](),interaction[_0xb58f('0x1d')](_0xb58f('0x1e'),_0xb58f('0x28')),controller[_0xb58f('0x29')]);router['delete'](_0xb58f('0x1c'),auth[_0xb58f('0x8')](),controller['removeTags']);module['exports']=router;
\ No newline at end of file
index fa18fc2..510171d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc37e=['TEXT','medium','BOOLEAN','exports'];(function(_0x192ef3,_0x58252d){var _0x170a3d=function(_0x17a7bc){while(--_0x17a7bc){_0x192ef3['push'](_0x192ef3['shift']());}};_0x170a3d(++_0x58252d);}(_0xc37e,0xa7));var _0xec37=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xc37e[_0x42cae2];return _0x5f256f;};'use strict';var Sequelize=require('sequelize');module[_0xec37('0x0')]={'body':{'type':Sequelize[_0xec37('0x1')](_0xec37('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0xec37('0x3')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0xe34b=['exports','medium','BOOLEAN','INTEGER'];(function(_0x1e878f,_0x3a63e7){var _0x442563=function(_0x311f4d){while(--_0x311f4d){_0x1e878f['push'](_0x1e878f['shift']());}};_0x442563(++_0x3a63e7);}(_0xe34b,0x174));var _0xbe34=function(_0x29f80e,_0x9027ff){_0x29f80e=_0x29f80e-0x0;var _0x5c7eaa=_0xe34b[_0x29f80e];return _0x5c7eaa;};'use strict';var Sequelize=require('sequelize');module[_0xbe34('0x0')]={'body':{'type':Sequelize['TEXT'](_0xbe34('0x1')),'allowNull':![]},'read':{'type':Sequelize[_0xbe34('0x2')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0xbe34('0x3')]}};
\ No newline at end of file
index 2680cf4..b1b7574 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc42=['admin','user','fullname','role','userpic','lastLoginAt','-online','VoiceQueue','VoiceQueues','UserProfileSection','Agents','userProfileId','autoAssociation','UserProfileResource','isEmpty','push','ToId','read','all','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./chatInternalMessage.socket','sendStatus','json','offset','undefined','limit','count','status','set','Content-Range','apply','save','then','end','error','stack','name','send','index','map','ChatInternalMessage','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','find','catch','body','update','destroy','describe','get','messages','createdAt','lastMessage','format','YYYY-MM-DD\x20HH:mm:ss','getUsers','User','agent'];(function(_0x5311a1,_0x304912){var _0x2acb9f=function(_0x4803e7){while(--_0x4803e7){_0x5311a1['push'](_0x5311a1['shift']());}};_0x2acb9f(++_0x304912);}(_0xfc42,0xf1));var _0x2fc4=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xfc42[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0x2fc4('0x0'));var rimraf=require(_0x2fc4('0x1'));var zipdir=require(_0x2fc4('0x2'));var jsonpatch=require(_0x2fc4('0x3'));var rp=require(_0x2fc4('0x4'));var moment=require(_0x2fc4('0x5'));var BPromise=require(_0x2fc4('0x6'));var Mustache=require(_0x2fc4('0x7'));var util=require('util');var path=require('path');var sox=require(_0x2fc4('0x8'));var csv=require('to-csv');var ejs=require(_0x2fc4('0x9'));var fs=require('fs');var fs_extra=require(_0x2fc4('0xa'));var _=require(_0x2fc4('0xb'));var squel=require(_0x2fc4('0xc'));var crypto=require(_0x2fc4('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x2fc4('0xe'));var toCsv=require(_0x2fc4('0xf'));var querystring=require(_0x2fc4('0x10'));var Papa=require(_0x2fc4('0x11'));var Redis=require('ioredis');var authService=require(_0x2fc4('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x2fc4('0x13'));var hardwareService=require(_0x2fc4('0x14'));var logger=require(_0x2fc4('0x15'))(_0x2fc4('0x16'));var utils=require(_0x2fc4('0x17'));var config=require(_0x2fc4('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x2fc4('0x19'))['db'];config[_0x2fc4('0x1a')]=_[_0x2fc4('0x1b')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x2fc4('0x1c'))(new Redis(config[_0x2fc4('0x1a')]));require(_0x2fc4('0x1d'))['register'](socket);function respondWithStatusCode(_0x1ae65b,_0x44b970){_0x44b970=_0x44b970||0xcc;return function(_0x2ee8b5){if(_0x2ee8b5){return _0x1ae65b[_0x2fc4('0x1e')](_0x44b970);}return _0x1ae65b['status'](_0x44b970)['end']();};}function respondWithResult(_0x475331,_0x28fce2){_0x28fce2=_0x28fce2||0xc8;return function(_0xb04d1c){if(_0xb04d1c){return _0x475331['status'](_0x28fce2)[_0x2fc4('0x1f')](_0xb04d1c);}};}function respondWithFilteredResult(_0x4c5782,_0xd32081){return function(_0x3bff2b){if(_0x3bff2b){var _0x705d9=typeof _0xd32081[_0x2fc4('0x20')]===_0x2fc4('0x21')&&typeof _0xd32081[_0x2fc4('0x22')]===_0x2fc4('0x21');var _0x47b2d6=_0x3bff2b[_0x2fc4('0x23')];var _0x19199e=_0x705d9?0x0:_0xd32081[_0x2fc4('0x20')];var _0x209564=_0x705d9?_0x3bff2b[_0x2fc4('0x23')]:_0xd32081[_0x2fc4('0x20')]+_0xd32081[_0x2fc4('0x22')];var _0xb32d56;if(_0x209564>=_0x47b2d6){_0x209564=_0x47b2d6;_0xb32d56=0xc8;}else{_0xb32d56=0xce;}_0x4c5782[_0x2fc4('0x24')](_0xb32d56);return _0x4c5782[_0x2fc4('0x25')](_0x2fc4('0x26'),_0x19199e+'-'+_0x209564+'/'+_0x47b2d6)[_0x2fc4('0x1f')](_0x3bff2b);}return null;};}function patchUpdates(_0x789d3){return function(_0x3fb3d1){try{jsonpatch[_0x2fc4('0x27')](_0x3fb3d1,_0x789d3,!![]);}catch(_0x1a02f4){return BPromise['reject'](_0x1a02f4);}return _0x3fb3d1[_0x2fc4('0x28')]();};}function saveUpdates(_0x596a24,_0x239cfa){return function(_0x950438){if(_0x950438){return _0x950438['update'](_0x596a24)[_0x2fc4('0x29')](function(_0x348309){return _0x348309;});}return null;};}function removeEntity(_0x1af6be,_0x397210){return function(_0xbf8967){if(_0xbf8967){return _0xbf8967['destroy']()['then'](function(){_0x1af6be[_0x2fc4('0x24')](0xcc)[_0x2fc4('0x2a')]();});}};}function handleEntityNotFound(_0x30541e,_0x3d2f86){return function(_0x376330){if(!_0x376330){_0x30541e['sendStatus'](0x194);}return _0x376330;};}function handleError(_0x8c7766,_0x17bfeb){_0x17bfeb=_0x17bfeb||0x1f4;return function(_0x3bd24d){logger[_0x2fc4('0x2b')](_0x3bd24d[_0x2fc4('0x2c')]);if(_0x3bd24d[_0x2fc4('0x2d')]){delete _0x3bd24d[_0x2fc4('0x2d')];}_0x8c7766['status'](_0x17bfeb)[_0x2fc4('0x2e')](_0x3bd24d);};}exports[_0x2fc4('0x2f')]=function(_0x460652,_0x5ad26d){var _0x885066={},_0x58b152={},_0x4b5821={'count':0x0,'rows':[]};var _0x4fd4ec=_[_0x2fc4('0x30')](db[_0x2fc4('0x31')][_0x2fc4('0x32')],function(_0x4451ac){return{'name':_0x4451ac[_0x2fc4('0x33')],'type':_0x4451ac[_0x2fc4('0x34')][_0x2fc4('0x35')]};});_0x58b152[_0x2fc4('0x36')]=_['map'](_0x4fd4ec,'name');_0x58b152[_0x2fc4('0x37')]=_[_0x2fc4('0x38')](_0x460652['query']);_0x58b152[_0x2fc4('0x39')]=_['intersection'](_0x58b152[_0x2fc4('0x36')],_0x58b152[_0x2fc4('0x37')]);_0x885066[_0x2fc4('0x3a')]=_[_0x2fc4('0x3b')](_0x58b152[_0x2fc4('0x36')],qs[_0x2fc4('0x3c')](_0x460652['query'][_0x2fc4('0x3c')]));_0x885066[_0x2fc4('0x3a')]=_0x885066[_0x2fc4('0x3a')][_0x2fc4('0x3d')]?_0x885066[_0x2fc4('0x3a')]:_0x58b152[_0x2fc4('0x36')];if(!_0x460652[_0x2fc4('0x37')][_0x2fc4('0x3e')](_0x2fc4('0x3f'))){_0x885066[_0x2fc4('0x22')]=qs[_0x2fc4('0x22')](_0x460652[_0x2fc4('0x37')]['limit']);_0x885066[_0x2fc4('0x20')]=qs['offset'](_0x460652[_0x2fc4('0x37')][_0x2fc4('0x20')]);}_0x885066[_0x2fc4('0x40')]=qs[_0x2fc4('0x41')](_0x460652['query'][_0x2fc4('0x41')]);_0x885066[_0x2fc4('0x42')]=qs[_0x2fc4('0x39')](_[_0x2fc4('0x43')](_0x460652[_0x2fc4('0x37')],_0x58b152[_0x2fc4('0x39')]),_0x4fd4ec);if(_0x460652[_0x2fc4('0x37')]['filter']){_0x885066[_0x2fc4('0x42')]=_[_0x2fc4('0x44')](_0x885066[_0x2fc4('0x42')],{'$or':_[_0x2fc4('0x30')](_0x4fd4ec,function(_0x208e20){if(_0x208e20[_0x2fc4('0x34')]!==_0x2fc4('0x45')){var _0x42e7a8={};_0x42e7a8[_0x208e20[_0x2fc4('0x2d')]]={'$like':'%'+_0x460652[_0x2fc4('0x37')]['filter']+'%'};return _0x42e7a8;}})});}_0x885066=_[_0x2fc4('0x44')]({},_0x885066,_0x460652[_0x2fc4('0x46')]);var _0x22ba72={'where':_0x885066['where']};return db[_0x2fc4('0x31')][_0x2fc4('0x23')](_0x22ba72)[_0x2fc4('0x29')](function(_0x1a4c07){_0x4b5821[_0x2fc4('0x23')]=_0x1a4c07;if(_0x460652['query'][_0x2fc4('0x47')]){_0x885066[_0x2fc4('0x48')]=[{'all':!![]}];}return db[_0x2fc4('0x31')][_0x2fc4('0x49')](_0x885066);})[_0x2fc4('0x29')](function(_0x35e1e2){_0x4b5821[_0x2fc4('0x4a')]=_0x35e1e2;return _0x4b5821;})[_0x2fc4('0x29')](respondWithFilteredResult(_0x5ad26d,_0x885066))['catch'](handleError(_0x5ad26d,null));};exports[_0x2fc4('0x4b')]=function(_0x30e837,_0x2aa13c){var _0x27fa01={'raw':!![],'where':{'id':_0x30e837[_0x2fc4('0x4c')]['id']}},_0x56c6a3={};_0x56c6a3[_0x2fc4('0x36')]=_[_0x2fc4('0x38')](db[_0x2fc4('0x31')][_0x2fc4('0x32')]);_0x56c6a3['query']=_['keys'](_0x30e837[_0x2fc4('0x37')]);_0x56c6a3['filters']=_[_0x2fc4('0x3b')](_0x56c6a3[_0x2fc4('0x36')],_0x56c6a3['query']);_0x27fa01[_0x2fc4('0x3a')]=_['intersection'](_0x56c6a3[_0x2fc4('0x36')],qs[_0x2fc4('0x3c')](_0x30e837[_0x2fc4('0x37')][_0x2fc4('0x3c')]));_0x27fa01[_0x2fc4('0x3a')]=_0x27fa01[_0x2fc4('0x3a')]['length']?_0x27fa01['attributes']:_0x56c6a3[_0x2fc4('0x36')];if(_0x30e837[_0x2fc4('0x37')]['includeAll']){_0x27fa01[_0x2fc4('0x48')]=[{'all':!![]}];}_0x27fa01=_[_0x2fc4('0x44')]({},_0x27fa01,_0x30e837[_0x2fc4('0x46')]);return db[_0x2fc4('0x31')][_0x2fc4('0x4d')](_0x27fa01)[_0x2fc4('0x29')](handleEntityNotFound(_0x2aa13c,null))[_0x2fc4('0x29')](respondWithResult(_0x2aa13c,null))[_0x2fc4('0x4e')](handleError(_0x2aa13c,null));};exports['create']=function(_0x3b829b,_0xee4b20){return db[_0x2fc4('0x31')]['create'](_0x3b829b[_0x2fc4('0x4f')],{})['then'](respondWithResult(_0xee4b20,0xc9))['catch'](handleError(_0xee4b20,null));};exports[_0x2fc4('0x50')]=function(_0x5e7575,_0x3c161b){if(_0x5e7575[_0x2fc4('0x4f')]['id']){delete _0x5e7575['body']['id'];}return db[_0x2fc4('0x31')][_0x2fc4('0x4d')]({'where':{'id':_0x5e7575[_0x2fc4('0x4c')]['id']}})[_0x2fc4('0x29')](handleEntityNotFound(_0x3c161b,null))['then'](saveUpdates(_0x5e7575[_0x2fc4('0x4f')],null))[_0x2fc4('0x29')](respondWithResult(_0x3c161b,null))[_0x2fc4('0x4e')](handleError(_0x3c161b,null));};exports[_0x2fc4('0x51')]=function(_0x1c0169,_0x544752){return db[_0x2fc4('0x31')][_0x2fc4('0x4d')]({'where':{'id':_0x1c0169[_0x2fc4('0x4c')]['id']}})['then'](handleEntityNotFound(_0x544752,null))[_0x2fc4('0x29')](removeEntity(_0x544752,null))[_0x2fc4('0x4e')](handleError(_0x544752,null));};exports[_0x2fc4('0x52')]=function(_0x3c8e91,_0x1486fa){return db['ChatInternalMessage'][_0x2fc4('0x52')]()['then'](respondWithResult(_0x1486fa,null))['catch'](handleError(_0x1486fa,null));};function wrapUser(_0x4e062c){return function(_0x1b5680){var _0x1170f6=_0x4e062c[_0x2fc4('0x53')]({'plain':!![]});_0x1170f6[_0x2fc4('0x54')]=[];if(_0x1b5680){_0x1170f6['lastMessageAt']=_0x1b5680[_0x2fc4('0x55')];_0x1170f6[_0x2fc4('0x56')]=_0x1b5680;}else{_0x1170f6['lastMessageAt']=moment(0x0)[_0x2fc4('0x57')](_0x2fc4('0x58'));_0x1170f6[_0x2fc4('0x56')]={};}return _0x1170f6;};}exports[_0x2fc4('0x59')]=function(_0x7452d3,_0x2647c4,_0x4d579a){var _0x4b6d39=[];return db[_0x2fc4('0x5a')][_0x2fc4('0x49')]({'where':{'role':[_0x2fc4('0x5b'),_0x2fc4('0x5c'),_0x2fc4('0x5d')]},'attributes':['id',_0x2fc4('0x5e'),_0x2fc4('0x2d'),_0x2fc4('0x5f'),_0x2fc4('0x60'),'internal','online',_0x2fc4('0x61'),'allowmessenger','showWebBar'],'order':qs['sort'](_0x2fc4('0x62')),'include':[{'model':db[_0x2fc4('0x63')],'as':_0x2fc4('0x64'),'attributes':['id','name',_0x2fc4('0x34')],'through':{'attributes':[]}}]})['then'](function(_0x550ddf){if(_0x550ddf){var _0x55de21=_0x7452d3[_0x2fc4('0x5d')]['get']({'plain':!![]});if(!_0x55de21)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x55de21[_0x2fc4('0x5f')]===_0x2fc4('0x5d')){return db[_0x2fc4('0x65')]['find']({'where':{'name':_0x2fc4('0x66'),'userProfileId':_0x55de21[_0x2fc4('0x67')]},'raw':!![]})[_0x2fc4('0x29')](function(_0x55e09b){if(_0x55e09b){if(_0x55e09b[_0x2fc4('0x68')]===0x0){return db[_0x2fc4('0x69')]['findAll']({'where':{'sectionId':_0x55e09b['id']},'raw':!![]})['then'](function(_0x52dbbc){var _0x3203c2=[];if(_[_0x2fc4('0x6a')](_0x52dbbc)){_0x3203c2=_['filter'](_0x550ddf,function(_0x2af297){if(_0x2af297['role']!=='agent'){return _0x2af297;}});return _0x3203c2;}else{for(var _0x1a0432=0x0;_0x1a0432<_0x550ddf[_0x2fc4('0x3d')];_0x1a0432++){var _0x544a01=_0x550ddf[_0x1a0432];if(_0x544a01[_0x2fc4('0x5f')]==='agent'){var _0x3ea7af=_[_0x2fc4('0x4d')](_0x52dbbc,function(_0x59245b){return _0x59245b['resourceId']===_0x544a01['id'];});if(_0x3ea7af)_0x3203c2['push'](_0x544a01);}else{_0x3203c2[_0x2fc4('0x6b')](_0x544a01);}}return _0x3203c2;}});}else{return _0x550ddf;}}else{var _0x474ffa=_['filter'](_0x550ddf,function(_0x3b423c){if(_0x3b423c[_0x2fc4('0x5f')]!==_0x2fc4('0x5b')){return _0x3b423c;}});return _0x474ffa;}});}else{return _0x550ddf;}}})[_0x2fc4('0x29')](function(_0x471596){var _0x2273cd=[];if(_0x471596){_0x4b6d39=_0x471596;for(var _0x29ed82=0x0;_0x29ed82<_0x471596[_0x2fc4('0x3d')];_0x29ed82+=0x1){_0x4b6d39[_0x29ed82][_0x2fc4('0x54')]=[];_0x2273cd[_0x2fc4('0x6b')](db[_0x2fc4('0x31')][_0x2fc4('0x4d')]({'where':{'FromId':[_0x7452d3[_0x2fc4('0x5d')]['id'],_0x471596[_0x29ed82]['id']],'ToId':[_0x7452d3[_0x2fc4('0x5d')]['id'],_0x471596[_0x29ed82]['id']],'ChatGroupId':null},'attributes':['id',_0x2fc4('0x55'),'FromId',_0x2fc4('0x6c'),_0x2fc4('0x6d'),_0x2fc4('0x4f')],'order':qs[_0x2fc4('0x41')]('-createdAt'),'limit':0x1,'offset':0x0,'raw':!![]})[_0x2fc4('0x29')](wrapUser(_0x471596[_0x29ed82])));}return BPromise[_0x2fc4('0x6e')](_0x2273cd);}return[];})['then'](function(_0x548298){return{'rows':_0x548298,'count':_0x548298[_0x2fc4('0x3d')]};})[_0x2fc4('0x29')](respondWithResult(_0x2647c4,null))['catch'](handleError(_0x2647c4,null));};
\ No newline at end of file
+var _0x8082=['find','create','body','params','get','messages','lastMessageAt','createdAt','lastMessage','format','YYYY-MM-DD\x20HH:mm:ss','User','agent','admin','role','lastLoginAt','VoiceQueue','user','Agents','userProfileId','UserProfileResource','isEmpty','resourceId','push','FromId','ToId','read','-createdAt','all','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','status','json','count','offset','limit','set','save','update','destroy','end','sendStatus','error','stack','name','send','map','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filters','filter','where','merge','options','ChatInternalMessage','then','include','findAll','rows','catch','show','includeAll'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x8082,0x82));var _0x2808=function(_0x31850b,_0x44b9b3){_0x31850b=_0x31850b-0x0;var _0x3b11fd=_0x8082[_0x31850b];return _0x3b11fd;};'use strict';var emlformat=require(_0x2808('0x0'));var rimraf=require(_0x2808('0x1'));var zipdir=require(_0x2808('0x2'));var jsonpatch=require(_0x2808('0x3'));var rp=require('request-promise');var moment=require(_0x2808('0x4'));var BPromise=require(_0x2808('0x5'));var Mustache=require(_0x2808('0x6'));var util=require('util');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(_0x2808('0x7'));var _=require(_0x2808('0x8'));var squel=require(_0x2808('0x9'));var crypto=require(_0x2808('0xa'));var jsforce=require(_0x2808('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x2808('0xc'));var querystring=require(_0x2808('0xd'));var Papa=require(_0x2808('0xe'));var Redis=require(_0x2808('0xf'));var authService=require(_0x2808('0x10'));var qs=require(_0x2808('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2808('0x12'));var logger=require('../../config/logger')(_0x2808('0x13'));var utils=require(_0x2808('0x14'));var config=require(_0x2808('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x2808('0x16'))['db'];config[_0x2808('0x17')]=_[_0x2808('0x18')](config[_0x2808('0x17')],{'host':_0x2808('0x19'),'port':0x18eb});var socket=require(_0x2808('0x1a'))(new Redis(config['redis']));require('./chatInternalMessage.socket')['register'](socket);function respondWithStatusCode(_0x246c58,_0x59bf42){_0x59bf42=_0x59bf42||0xcc;return function(_0x4ca8b){if(_0x4ca8b){return _0x246c58['sendStatus'](_0x59bf42);}return _0x246c58['status'](_0x59bf42)['end']();};}function respondWithResult(_0x3138d2,_0x1ca0b1){_0x1ca0b1=_0x1ca0b1||0xc8;return function(_0x5d4654){if(_0x5d4654){return _0x3138d2[_0x2808('0x1b')](_0x1ca0b1)[_0x2808('0x1c')](_0x5d4654);}};}function respondWithFilteredResult(_0x349e28,_0x228da1){return function(_0x5b54b0){if(_0x5b54b0){var _0x3c00bb=typeof _0x228da1['offset']==='undefined'&&typeof _0x228da1['limit']==='undefined';var _0x511a9a=_0x5b54b0[_0x2808('0x1d')];var _0x5d217b=_0x3c00bb?0x0:_0x228da1[_0x2808('0x1e')];var _0x1e6e87=_0x3c00bb?_0x5b54b0[_0x2808('0x1d')]:_0x228da1[_0x2808('0x1e')]+_0x228da1[_0x2808('0x1f')];var _0x58c1d3;if(_0x1e6e87>=_0x511a9a){_0x1e6e87=_0x511a9a;_0x58c1d3=0xc8;}else{_0x58c1d3=0xce;}_0x349e28[_0x2808('0x1b')](_0x58c1d3);return _0x349e28[_0x2808('0x20')]('Content-Range',_0x5d217b+'-'+_0x1e6e87+'/'+_0x511a9a)['json'](_0x5b54b0);}return null;};}function patchUpdates(_0x4583cf){return function(_0x13b2ce){try{jsonpatch['apply'](_0x13b2ce,_0x4583cf,!![]);}catch(_0x1f69ce){return BPromise['reject'](_0x1f69ce);}return _0x13b2ce[_0x2808('0x21')]();};}function saveUpdates(_0x8278c3,_0x14e7ce){return function(_0x403843){if(_0x403843){return _0x403843[_0x2808('0x22')](_0x8278c3)['then'](function(_0x107b51){return _0x107b51;});}return null;};}function removeEntity(_0x379c82,_0x4df1c0){return function(_0x4f96a5){if(_0x4f96a5){return _0x4f96a5[_0x2808('0x23')]()['then'](function(){_0x379c82[_0x2808('0x1b')](0xcc)[_0x2808('0x24')]();});}};}function handleEntityNotFound(_0x4fe11c,_0x26d815){return function(_0x3b4b0b){if(!_0x3b4b0b){_0x4fe11c[_0x2808('0x25')](0x194);}return _0x3b4b0b;};}function handleError(_0x261c9a,_0x194e58){_0x194e58=_0x194e58||0x1f4;return function(_0x131ab2){logger[_0x2808('0x26')](_0x131ab2[_0x2808('0x27')]);if(_0x131ab2['name']){delete _0x131ab2[_0x2808('0x28')];}_0x261c9a[_0x2808('0x1b')](_0x194e58)[_0x2808('0x29')](_0x131ab2);};}exports['index']=function(_0x3af98e,_0xf21ee1){var _0x2ddca1={},_0x3b292c={},_0x5c3236={'count':0x0,'rows':[]};var _0x41e77a=_[_0x2808('0x2a')](db['ChatInternalMessage'][_0x2808('0x2b')],function(_0x2989bc){return{'name':_0x2989bc[_0x2808('0x2c')],'type':_0x2989bc[_0x2808('0x2d')][_0x2808('0x2e')]};});_0x3b292c[_0x2808('0x2f')]=_[_0x2808('0x2a')](_0x41e77a,_0x2808('0x28'));_0x3b292c[_0x2808('0x30')]=_[_0x2808('0x31')](_0x3af98e[_0x2808('0x30')]);_0x3b292c['filters']=_[_0x2808('0x32')](_0x3b292c['model'],_0x3b292c['query']);_0x2ddca1[_0x2808('0x33')]=_['intersection'](_0x3b292c['model'],qs[_0x2808('0x34')](_0x3af98e[_0x2808('0x30')][_0x2808('0x34')]));_0x2ddca1[_0x2808('0x33')]=_0x2ddca1[_0x2808('0x33')][_0x2808('0x35')]?_0x2ddca1['attributes']:_0x3b292c[_0x2808('0x2f')];if(!_0x3af98e[_0x2808('0x30')][_0x2808('0x36')](_0x2808('0x37'))){_0x2ddca1[_0x2808('0x1f')]=qs[_0x2808('0x1f')](_0x3af98e[_0x2808('0x30')][_0x2808('0x1f')]);_0x2ddca1['offset']=qs['offset'](_0x3af98e[_0x2808('0x30')][_0x2808('0x1e')]);}_0x2ddca1[_0x2808('0x38')]=qs[_0x2808('0x39')](_0x3af98e['query'][_0x2808('0x39')]);_0x2ddca1['where']=qs['filters'](_[_0x2808('0x3a')](_0x3af98e[_0x2808('0x30')],_0x3b292c[_0x2808('0x3b')]),_0x41e77a);if(_0x3af98e['query'][_0x2808('0x3c')]){_0x2ddca1[_0x2808('0x3d')]=_['merge'](_0x2ddca1[_0x2808('0x3d')],{'$or':_[_0x2808('0x2a')](_0x41e77a,function(_0x344572){if(_0x344572[_0x2808('0x2d')]!=='VIRTUAL'){var _0x43c2e4={};_0x43c2e4[_0x344572[_0x2808('0x28')]]={'$like':'%'+_0x3af98e['query'][_0x2808('0x3c')]+'%'};return _0x43c2e4;}})});}_0x2ddca1=_[_0x2808('0x3e')]({},_0x2ddca1,_0x3af98e[_0x2808('0x3f')]);var _0x20facd={'where':_0x2ddca1[_0x2808('0x3d')]};return db[_0x2808('0x40')][_0x2808('0x1d')](_0x20facd)[_0x2808('0x41')](function(_0x3e42d6){_0x5c3236[_0x2808('0x1d')]=_0x3e42d6;if(_0x3af98e[_0x2808('0x30')]['includeAll']){_0x2ddca1[_0x2808('0x42')]=[{'all':!![]}];}return db['ChatInternalMessage'][_0x2808('0x43')](_0x2ddca1);})[_0x2808('0x41')](function(_0x44d094){_0x5c3236[_0x2808('0x44')]=_0x44d094;return _0x5c3236;})['then'](respondWithFilteredResult(_0xf21ee1,_0x2ddca1))[_0x2808('0x45')](handleError(_0xf21ee1,null));};exports[_0x2808('0x46')]=function(_0x201434,_0x30d490){var _0x5d87af={'raw':!![],'where':{'id':_0x201434['params']['id']}},_0x2e6743={};_0x2e6743['model']=_[_0x2808('0x31')](db[_0x2808('0x40')][_0x2808('0x2b')]);_0x2e6743[_0x2808('0x30')]=_['keys'](_0x201434[_0x2808('0x30')]);_0x2e6743[_0x2808('0x3b')]=_[_0x2808('0x32')](_0x2e6743['model'],_0x2e6743[_0x2808('0x30')]);_0x5d87af[_0x2808('0x33')]=_[_0x2808('0x32')](_0x2e6743[_0x2808('0x2f')],qs[_0x2808('0x34')](_0x201434[_0x2808('0x30')]['fields']));_0x5d87af[_0x2808('0x33')]=_0x5d87af[_0x2808('0x33')][_0x2808('0x35')]?_0x5d87af[_0x2808('0x33')]:_0x2e6743['model'];if(_0x201434[_0x2808('0x30')][_0x2808('0x47')]){_0x5d87af[_0x2808('0x42')]=[{'all':!![]}];}_0x5d87af=_[_0x2808('0x3e')]({},_0x5d87af,_0x201434['options']);return db[_0x2808('0x40')][_0x2808('0x48')](_0x5d87af)[_0x2808('0x41')](handleEntityNotFound(_0x30d490,null))[_0x2808('0x41')](respondWithResult(_0x30d490,null))[_0x2808('0x45')](handleError(_0x30d490,null));};exports[_0x2808('0x49')]=function(_0x190d18,_0x5ca4cc){return db[_0x2808('0x40')][_0x2808('0x49')](_0x190d18['body'],{})[_0x2808('0x41')](respondWithResult(_0x5ca4cc,0xc9))[_0x2808('0x45')](handleError(_0x5ca4cc,null));};exports['update']=function(_0x99e783,_0x178f3b){if(_0x99e783['body']['id']){delete _0x99e783[_0x2808('0x4a')]['id'];}return db[_0x2808('0x40')]['find']({'where':{'id':_0x99e783[_0x2808('0x4b')]['id']}})[_0x2808('0x41')](handleEntityNotFound(_0x178f3b,null))[_0x2808('0x41')](saveUpdates(_0x99e783['body'],null))[_0x2808('0x41')](respondWithResult(_0x178f3b,null))['catch'](handleError(_0x178f3b,null));};exports['destroy']=function(_0x4049e7,_0x3f291a){return db['ChatInternalMessage']['find']({'where':{'id':_0x4049e7['params']['id']}})[_0x2808('0x41')](handleEntityNotFound(_0x3f291a,null))[_0x2808('0x41')](removeEntity(_0x3f291a,null))[_0x2808('0x45')](handleError(_0x3f291a,null));};exports['describe']=function(_0x549978,_0x5a20dc){return db[_0x2808('0x40')]['describe']()[_0x2808('0x41')](respondWithResult(_0x5a20dc,null))['catch'](handleError(_0x5a20dc,null));};function wrapUser(_0x292b83){return function(_0x40cef7){var _0x142d30=_0x292b83[_0x2808('0x4c')]({'plain':!![]});_0x142d30[_0x2808('0x4d')]=[];if(_0x40cef7){_0x142d30[_0x2808('0x4e')]=_0x40cef7[_0x2808('0x4f')];_0x142d30[_0x2808('0x50')]=_0x40cef7;}else{_0x142d30[_0x2808('0x4e')]=moment(0x0)[_0x2808('0x51')](_0x2808('0x52'));_0x142d30[_0x2808('0x50')]={};}return _0x142d30;};}exports['getUsers']=function(_0x189a52,_0x4405de,_0x242522){var _0x158b6b=[];return db[_0x2808('0x53')][_0x2808('0x43')]({'where':{'role':[_0x2808('0x54'),_0x2808('0x55'),'user']},'attributes':['id','fullname','name',_0x2808('0x56'),'userpic','internal','online',_0x2808('0x57'),'allowmessenger','showWebBar'],'order':qs[_0x2808('0x39')]('-online'),'include':[{'model':db[_0x2808('0x58')],'as':'VoiceQueues','attributes':['id',_0x2808('0x28'),_0x2808('0x2d')],'through':{'attributes':[]}}]})[_0x2808('0x41')](function(_0x6d2c8c){if(_0x6d2c8c){var _0x52f9c9=_0x189a52[_0x2808('0x59')][_0x2808('0x4c')]({'plain':!![]});if(!_0x52f9c9)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x52f9c9['role']==='user'){return db['UserProfileSection'][_0x2808('0x48')]({'where':{'name':_0x2808('0x5a'),'userProfileId':_0x52f9c9[_0x2808('0x5b')]},'raw':!![]})[_0x2808('0x41')](function(_0x5555d1){if(_0x5555d1){if(_0x5555d1['autoAssociation']===0x0){return db[_0x2808('0x5c')]['findAll']({'where':{'sectionId':_0x5555d1['id']},'raw':!![]})[_0x2808('0x41')](function(_0x1d1894){var _0x56f819=[];if(_[_0x2808('0x5d')](_0x1d1894)){_0x56f819=_[_0x2808('0x3c')](_0x6d2c8c,function(_0x2e4c40){if(_0x2e4c40[_0x2808('0x56')]!=='agent'){return _0x2e4c40;}});return _0x56f819;}else{for(var _0x5a6d0d=0x0;_0x5a6d0d<_0x6d2c8c[_0x2808('0x35')];_0x5a6d0d++){var _0x31619d=_0x6d2c8c[_0x5a6d0d];if(_0x31619d[_0x2808('0x56')]==='agent'){var _0x5316bc=_[_0x2808('0x48')](_0x1d1894,function(_0x141485){return _0x141485[_0x2808('0x5e')]===_0x31619d['id'];});if(_0x5316bc)_0x56f819['push'](_0x31619d);}else{_0x56f819[_0x2808('0x5f')](_0x31619d);}}return _0x56f819;}});}else{return _0x6d2c8c;}}else{var _0x453d1d=_[_0x2808('0x3c')](_0x6d2c8c,function(_0x271ee6){if(_0x271ee6['role']!=='agent'){return _0x271ee6;}});return _0x453d1d;}});}else{return _0x6d2c8c;}}})[_0x2808('0x41')](function(_0x449e82){var _0x3cbc38=[];if(_0x449e82){_0x158b6b=_0x449e82;for(var _0x2e55f4=0x0;_0x2e55f4<_0x449e82[_0x2808('0x35')];_0x2e55f4+=0x1){_0x158b6b[_0x2e55f4][_0x2808('0x4d')]=[];_0x3cbc38[_0x2808('0x5f')](db['ChatInternalMessage'][_0x2808('0x48')]({'where':{'FromId':[_0x189a52[_0x2808('0x59')]['id'],_0x449e82[_0x2e55f4]['id']],'ToId':[_0x189a52[_0x2808('0x59')]['id'],_0x449e82[_0x2e55f4]['id']],'ChatGroupId':null},'attributes':['id',_0x2808('0x4f'),_0x2808('0x60'),_0x2808('0x61'),_0x2808('0x62'),_0x2808('0x4a')],'order':qs['sort'](_0x2808('0x63')),'limit':0x1,'offset':0x0,'raw':!![]})[_0x2808('0x41')](wrapUser(_0x449e82[_0x2e55f4])));}return BPromise[_0x2808('0x64')](_0x3cbc38);}return[];})['then'](function(_0x534aba){return{'rows':_0x534aba,'count':_0x534aba[_0x2808('0x35')]};})[_0x2808('0x41')](respondWithResult(_0x4405de,null))[_0x2808('0x45')](handleError(_0x4405de,null));};
\ No newline at end of file
index 625c412..672a6f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7be8=['ChatInternalMessage','setMaxListeners','save','update','remove','emit','hook','exports','events','../../mysqldb'];(function(_0x24fe8c,_0x340495){var _0x34665b=function(_0x4eb605){while(--_0x4eb605){_0x24fe8c['push'](_0x24fe8c['shift']());}};_0x34665b(++_0x340495);}(_0x7be8,0x148));var _0x87be=function(_0x12a4c2,_0x23b55f){_0x12a4c2=_0x12a4c2-0x0;var _0x234d4c=_0x7be8[_0x12a4c2];return _0x234d4c;};'use strict';var EventEmitter=require(_0x87be('0x0'));var ChatInternalMessage=require(_0x87be('0x1'))['db'][_0x87be('0x2')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0x87be('0x3')](0x0);var events={'afterCreate':_0x87be('0x4'),'afterUpdate':_0x87be('0x5'),'afterDestroy':_0x87be('0x6')};function emitEvent(_0x5eef54){return function(_0xc1fd1e,_0x2c8b33,_0xec7abc){ChatInternalMessageEvents[_0x87be('0x7')](_0x5eef54+':'+_0xc1fd1e['id'],_0xc1fd1e);ChatInternalMessageEvents[_0x87be('0x7')](_0x5eef54,_0xc1fd1e);_0xec7abc(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatInternalMessage[_0x87be('0x8')](e,emitEvent(event));}}module[_0x87be('0x9')]=ChatInternalMessageEvents;
\ No newline at end of file
+var _0xca28=['exports','events','setMaxListeners','save','update','emit','hasOwnProperty','hook'];(function(_0x36bc7f,_0x1f38ce){var _0x5c09fb=function(_0x228535){while(--_0x228535){_0x36bc7f['push'](_0x36bc7f['shift']());}};_0x5c09fb(++_0x1f38ce);}(_0xca28,0xe9));var _0x8ca2=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0xca28[_0x5f1391];return _0x50ebe3;};'use strict';var EventEmitter=require(_0x8ca2('0x0'));var ChatInternalMessage=require('../../mysqldb')['db']['ChatInternalMessage'];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0x8ca2('0x1')](0x0);var events={'afterCreate':_0x8ca2('0x2'),'afterUpdate':_0x8ca2('0x3'),'afterDestroy':'remove'};function emitEvent(_0x5df90f){return function(_0x43da56,_0xd04f68,_0x95e1ba){ChatInternalMessageEvents[_0x8ca2('0x4')](_0x5df90f+':'+_0x43da56['id'],_0x43da56);ChatInternalMessageEvents['emit'](_0x5df90f,_0x43da56);_0x95e1ba(null);};}for(var e in events){if(events[_0x8ca2('0x5')](e)){var event=events[e];ChatInternalMessage[_0x8ca2('0x6')](e,emitEvent(event));}}module[_0x8ca2('0x7')]=ChatInternalMessageEvents;
\ No newline at end of file
index 4cfd4c0..d3fc758 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x989a=['rimraf','../../config/environment','exports','define','ChatInternalMessage','chat_internal_messages','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','request-promise','path'];(function(_0x406fbe,_0x4e558a){var _0x56c234=function(_0xaaecef){while(--_0xaaecef){_0x406fbe['push'](_0x406fbe['shift']());}};_0x56c234(++_0x4e558a);}(_0x989a,0xa3));var _0xa989=function(_0x4a6fa1,_0x4c2a48){_0x4a6fa1=_0x4a6fa1-0x0;var _0x4cc522=_0x989a[_0x4a6fa1];return _0x4cc522;};'use strict';var _=require(_0xa989('0x0'));var util=require('util');var logger=require(_0xa989('0x1'))(_0xa989('0x2'));var moment=require(_0xa989('0x3'));var BPromise=require('bluebird');var rp=require(_0xa989('0x4'));var fs=require('fs');var path=require(_0xa989('0x5'));var rimraf=require(_0xa989('0x6'));var config=require(_0xa989('0x7'));var attributes=require('./chatInternalMessage.attributes');module[_0xa989('0x8')]=function(_0x2f3a82,_0x2d42e6){return _0x2f3a82[_0xa989('0x9')](_0xa989('0xa'),attributes,{'tableName':_0xa989('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xa989('0xc')});};
\ No newline at end of file
+var _0x0c75=['moment','bluebird','path','rimraf','../../config/environment','./chatInternalMessage.attributes','exports','define','ChatInternalMessage','chat_internal_messages','utf8mb4','lodash','../../config/logger','api'];(function(_0x26211f,_0x3b2244){var _0x3f4d26=function(_0x5aac3f){while(--_0x5aac3f){_0x26211f['push'](_0x26211f['shift']());}};_0x3f4d26(++_0x3b2244);}(_0x0c75,0x7b));var _0x50c7=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x0c75[_0x2641f9];return _0x585741;};'use strict';var _=require(_0x50c7('0x0'));var util=require('util');var logger=require(_0x50c7('0x1'))(_0x50c7('0x2'));var moment=require(_0x50c7('0x3'));var BPromise=require(_0x50c7('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x50c7('0x5'));var rimraf=require(_0x50c7('0x6'));var config=require(_0x50c7('0x7'));var attributes=require(_0x50c7('0x8'));module[_0x50c7('0x9')]=function(_0x5be5df,_0x1ea349){return _0x5be5df[_0x50c7('0xa')](_0x50c7('0xb'),attributes,{'tableName':_0x50c7('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x50c7('0xd'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 894c46c..36995da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x221b=['result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','register','request','then','info','ChatInternalMessage,\x20%s,\x20%s','request\x20sent','debug','ChatInternalMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x13ef0d,_0x4ce8b7){var _0x2a6745=function(_0x37628e){while(--_0x37628e){_0x13ef0d['push'](_0x13ef0d['shift']());}};_0x2a6745(++_0x4ce8b7);}(_0x221b,0xbf));var _0xb221=function(_0x1814ed,_0x532584){_0x1814ed=_0x1814ed-0x0;var _0x20247c=_0x221b[_0x1814ed];return _0x20247c;};'use strict';var _=require(_0xb221('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xb221('0x1'));var rs=require(_0xb221('0x2'));var fs=require('fs');var Redis=require(_0xb221('0x3'));var db=require(_0xb221('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xb221('0x5'))(_0xb221('0x6'));var config=require(_0xb221('0x7'));var jayson=require(_0xb221('0x8'));var client=jayson[_0xb221('0x9')][_0xb221('0xa')]({'port':0x232a});config['redis']=_['defaults'](config[_0xb221('0xb')],{'host':_0xb221('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb221('0xb')]));require('./chatInternalMessage.socket')[_0xb221('0xd')](socket);function respondWithRpcPromise(_0x23983d,_0x610dd6,_0x5e5fa8){return new BPromise(function(_0x3a17d0,_0x12dde2){return client[_0xb221('0xe')](_0x23983d,_0x5e5fa8)[_0xb221('0xf')](function(_0xfe5410){logger[_0xb221('0x10')](_0xb221('0x11'),_0x610dd6,_0xb221('0x12'));logger[_0xb221('0x13')](_0xb221('0x14'),_0x610dd6,_0xb221('0x12'),JSON[_0xb221('0x15')](_0xfe5410));if(_0xfe5410['error']){if(_0xfe5410[_0xb221('0x16')][_0xb221('0x17')]===0x1f4){logger[_0xb221('0x16')]('ChatInternalMessage,\x20%s,\x20%s',_0x610dd6,_0xfe5410[_0xb221('0x16')][_0xb221('0x18')]);return _0x12dde2(_0xfe5410[_0xb221('0x16')][_0xb221('0x18')]);}logger[_0xb221('0x16')](_0xb221('0x11'),_0x610dd6,_0xfe5410[_0xb221('0x16')][_0xb221('0x18')]);return _0x3a17d0(_0xfe5410[_0xb221('0x16')][_0xb221('0x18')]);}else{logger[_0xb221('0x10')](_0xb221('0x11'),_0x610dd6,'request\x20sent');_0x3a17d0(_0xfe5410[_0xb221('0x19')][_0xb221('0x18')]);}})[_0xb221('0x1a')](function(_0x43c530){logger[_0xb221('0x16')](_0xb221('0x11'),_0x610dd6,_0x43c530);_0x12dde2(_0x43c530);});});}
\ No newline at end of file
+var _0x0c6d=['ChatInternalMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','client','http','redis','socket.io-emitter','./chatInternalMessage.socket','register','then','ChatInternalMessage,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x4c00a3,_0x2d23e2){var _0x893854=function(_0x6f552c){while(--_0x6f552c){_0x4c00a3['push'](_0x4c00a3['shift']());}};_0x893854(++_0x2d23e2);}(_0x0c6d,0xf7));var _0xd0c6=function(_0x59feac,_0x338314){_0x59feac=_0x59feac-0x0;var _0x310e39=_0x0c6d[_0x59feac];return _0x310e39;};'use strict';var _=require('lodash');var util=require(_0xd0c6('0x0'));var moment=require(_0xd0c6('0x1'));var BPromise=require(_0xd0c6('0x2'));var rs=require(_0xd0c6('0x3'));var fs=require('fs');var Redis=require(_0xd0c6('0x4'));var db=require(_0xd0c6('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xd0c6('0x6'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xd0c6('0x7')][_0xd0c6('0x8')]({'port':0x232a});config[_0xd0c6('0x9')]=_['defaults'](config[_0xd0c6('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0xd0c6('0xa'))(new Redis(config[_0xd0c6('0x9')]));require(_0xd0c6('0xb'))[_0xd0c6('0xc')](socket);function respondWithRpcPromise(_0x2bfaf4,_0x2a1be,_0xc00380){return new BPromise(function(_0x26e14b,_0x2b39c0){return client['request'](_0x2bfaf4,_0xc00380)[_0xd0c6('0xd')](function(_0x5d1321){logger['info'](_0xd0c6('0xe'),_0x2a1be,_0xd0c6('0xf'));logger[_0xd0c6('0x10')](_0xd0c6('0x11'),_0x2a1be,_0xd0c6('0xf'),JSON[_0xd0c6('0x12')](_0x5d1321));if(_0x5d1321[_0xd0c6('0x13')]){if(_0x5d1321[_0xd0c6('0x13')][_0xd0c6('0x14')]===0x1f4){logger[_0xd0c6('0x13')](_0xd0c6('0xe'),_0x2a1be,_0x5d1321[_0xd0c6('0x13')][_0xd0c6('0x15')]);return _0x2b39c0(_0x5d1321[_0xd0c6('0x13')][_0xd0c6('0x15')]);}logger[_0xd0c6('0x13')](_0xd0c6('0xe'),_0x2a1be,_0x5d1321[_0xd0c6('0x13')][_0xd0c6('0x15')]);return _0x26e14b(_0x5d1321[_0xd0c6('0x13')][_0xd0c6('0x15')]);}else{logger[_0xd0c6('0x16')](_0xd0c6('0xe'),_0x2a1be,_0xd0c6('0xf'));_0x26e14b(_0x5d1321[_0xd0c6('0x17')]['message']);}})['catch'](function(_0x17df3f){logger[_0xd0c6('0x13')]('ChatInternalMessage,\x20%s,\x20%s',_0x2a1be,_0x17df3f);_0x2b39c0(_0x17df3f);});});}
\ No newline at end of file
index bac49a3..c7a34c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa84=['save','update','removeListener','register','length','./chatInternalMessage.events'];(function(_0x915047,_0x52bed9){var _0x12e688=function(_0xb53120){while(--_0xb53120){_0x915047['push'](_0x915047['shift']());}};_0x12e688(++_0x52bed9);}(_0xfa84,0xc5));var _0x4fa8=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0xfa84[_0x3bf83f];return _0x22c4a9;};'use strict';var ChatInternalMessageEvents=require(_0x4fa8('0x0'));var events=[_0x4fa8('0x1'),'remove',_0x4fa8('0x2')];function createListener(_0x9d8a40,_0x2e07fd){return function(_0x3f40b2){_0x2e07fd['emit'](_0x9d8a40,_0x3f40b2);};}function removeListener(_0x3704de,_0x258ee5){return function(){ChatInternalMessageEvents[_0x4fa8('0x3')](_0x3704de,_0x258ee5);};}exports[_0x4fa8('0x4')]=function(_0x117350){for(var _0x1bb801=0x0,_0x369c2e=events[_0x4fa8('0x5')];_0x1bb801<_0x369c2e;_0x1bb801++){var _0x4ef413=events[_0x1bb801];var _0x34ee50=createListener('chatInternalMessage:'+_0x4ef413,_0x117350);ChatInternalMessageEvents['on'](_0x4ef413,_0x34ee50);}};
\ No newline at end of file
+var _0x8a35=['./chatInternalMessage.events','save','emit','removeListener','register'];(function(_0x45416a,_0x50d3ec){var _0x5c24f3=function(_0x902ad4){while(--_0x902ad4){_0x45416a['push'](_0x45416a['shift']());}};_0x5c24f3(++_0x50d3ec);}(_0x8a35,0x16d));var _0x58a3=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0x8a35[_0x160c73];return _0xd9302;};'use strict';var ChatInternalMessageEvents=require(_0x58a3('0x0'));var events=[_0x58a3('0x1'),'remove','update'];function createListener(_0x5991ef,_0x2f1174){return function(_0xf73a86){_0x2f1174[_0x58a3('0x2')](_0x5991ef,_0xf73a86);};}function removeListener(_0x5f39fd,_0x550864){return function(){ChatInternalMessageEvents[_0x58a3('0x3')](_0x5f39fd,_0x550864);};}exports[_0x58a3('0x4')]=function(_0x1e380f){for(var _0x3fa849=0x0,_0x2b27e7=events['length'];_0x3fa849<_0x2b27e7;_0x3fa849++){var _0x5839b5=events[_0x3fa849];var _0x57a678=createListener('chatInternalMessage:'+_0x5839b5,_0x1e380f);ChatInternalMessageEvents['on'](_0x5839b5,_0x57a678);}};
\ No newline at end of file
index acfeb48..80428ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6aaa=['/:id','show','post','create','put','update','destroy','exports','multer','connect-timeout','express','Router','fs-extra','../../config/environment','/describe','isAuthenticated','describe','get','/users','getUsers'];(function(_0x16b1b3,_0x1a2147){var _0x4c5afe=function(_0x380e64){while(--_0x380e64){_0x16b1b3['push'](_0x16b1b3['shift']());}};_0x4c5afe(++_0x1a2147);}(_0x6aaa,0x1e8));var _0xa6aa=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6aaa[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xa6aa('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xa6aa('0x1'));var express=require(_0xa6aa('0x2'));var router=express[_0xa6aa('0x3')]();var fs_extra=require(_0xa6aa('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xa6aa('0x5'));var controller=require('./chatInternalMessage.controller');router['get']('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xa6aa('0x6'),auth[_0xa6aa('0x7')](),controller[_0xa6aa('0x8')]);router[_0xa6aa('0x9')](_0xa6aa('0xa'),auth[_0xa6aa('0x7')](),controller[_0xa6aa('0xb')]);router[_0xa6aa('0x9')](_0xa6aa('0xc'),auth[_0xa6aa('0x7')](),controller[_0xa6aa('0xd')]);router[_0xa6aa('0xe')]('/',auth[_0xa6aa('0x7')](),controller[_0xa6aa('0xf')]);router[_0xa6aa('0x10')](_0xa6aa('0xc'),controller[_0xa6aa('0x11')]);router['delete'](_0xa6aa('0xc'),auth[_0xa6aa('0x7')](),controller[_0xa6aa('0x12')]);module[_0xa6aa('0x13')]=router;
\ No newline at end of file
+var _0x4a2e=['../../components/auth/service','../../components/interaction/service','../../config/environment','./chatInternalMessage.controller','get','isAuthenticated','/describe','/users','/:id','show','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x62c958,_0x2bfdbc){var _0x57ec61=function(_0x5c0094){while(--_0x5c0094){_0x62c958['push'](_0x62c958['shift']());}};_0x57ec61(++_0x2bfdbc);}(_0x4a2e,0x169));var _0xe4a2=function(_0x92c450,_0x41f1e3){_0x92c450=_0x92c450-0x0;var _0x2a9599=_0x4a2e[_0x92c450];return _0x2a9599;};'use strict';var multer=require(_0xe4a2('0x0'));var util=require(_0xe4a2('0x1'));var path=require(_0xe4a2('0x2'));var timeout=require(_0xe4a2('0x3'));var express=require(_0xe4a2('0x4'));var router=express[_0xe4a2('0x5')]();var fs_extra=require(_0xe4a2('0x6'));var auth=require(_0xe4a2('0x7'));var interaction=require(_0xe4a2('0x8'));var config=require(_0xe4a2('0x9'));var controller=require(_0xe4a2('0xa'));router[_0xe4a2('0xb')]('/',auth[_0xe4a2('0xc')](),controller['index']);router[_0xe4a2('0xb')](_0xe4a2('0xd'),auth[_0xe4a2('0xc')](),controller['describe']);router[_0xe4a2('0xb')](_0xe4a2('0xe'),auth[_0xe4a2('0xc')](),controller['getUsers']);router[_0xe4a2('0xb')](_0xe4a2('0xf'),auth[_0xe4a2('0xc')](),controller[_0xe4a2('0x10')]);router[_0xe4a2('0x11')]('/',auth[_0xe4a2('0xc')](),controller[_0xe4a2('0x12')]);router['put'](_0xe4a2('0xf'),controller[_0xe4a2('0x13')]);router[_0xe4a2('0x14')](_0xe4a2('0xf'),auth[_0xe4a2('0xc')](),controller[_0xe4a2('0x15')]);module[_0xe4a2('0x16')]=router;
\ No newline at end of file
index 9e272af..1743c86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa571=['medium','BOOLEAN','ENUM','DATE','sequelize','exports','TEXT'];(function(_0x4edf36,_0x499604){var _0xd08151=function(_0x116777){while(--_0x116777){_0x4edf36['push'](_0x4edf36['shift']());}};_0xd08151(++_0x499604);}(_0xa571,0x107));var _0x1a57=function(_0x3e47a6,_0x38a9af){_0x3e47a6=_0x3e47a6-0x0;var _0x2c40e5=_0xa571[_0x3e47a6];return _0x2c40e5;};'use strict';var Sequelize=require(_0x1a57('0x0'));module[_0x1a57('0x1')]={'body':{'type':Sequelize[_0x1a57('0x2')](_0x1a57('0x3')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize[_0x1a57('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0x1a57('0x5')]('in','out'),'defaultValue':'out','allowNull':![]},'readAt':{'type':Sequelize[_0x1a57('0x6')]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0x1a57('0x2')]}};
\ No newline at end of file
+var _0x3070=['ENUM','out','TEXT','exports','medium','BOOLEAN'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3070,0x75));var _0x0307=function(_0x243b9e,_0x3f797a){_0x243b9e=_0x243b9e-0x0;var _0x364cdf=_0x3070[_0x243b9e];return _0x364cdf;};'use strict';var Sequelize=require('sequelize');module[_0x0307('0x0')]={'body':{'type':Sequelize['TEXT'](_0x0307('0x1')),'allowNull':![]},'read':{'type':Sequelize[_0x0307('0x2')],'defaultValue':![]},'secret':{'type':Sequelize[_0x0307('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0x0307('0x3')]('in',_0x0307('0x4')),'defaultValue':_0x0307('0x4'),'allowNull':![]},'readAt':{'type':Sequelize['DATE']},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0x0307('0x5')]}};
\ No newline at end of file
index 10203e1..121c31e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42ea=['ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatMessage.socket','register','client','http','then','info','ChatMessage,\x20%s,\x20%s','ChatMessage,\x20%s,\x20%s,\x20%s','error','message','request\x20sent','result','catch','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','stack','name','send','map','ChatMessage','fieldName','type','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','show','rawAttributes','find','create','body','params','destroy','describe','chat-interactions','accept','chat','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','ChatInteraction','ChatInteractionId','read1stAt','interaction','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','stringify','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','Sequelize','QueryTypes','SELECT','User','fullname','internal','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','formData','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','rejectMessage','sequelize','email','rejectmessage','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv'];(function(_0x9f8ae1,_0x43147a){var _0x1cdcfe=function(_0x1d0149){while(--_0x1d0149){_0x9f8ae1['push'](_0x9f8ae1['shift']());}};_0x1cdcfe(++_0x43147a);}(_0x42ea,0x79));var _0xa42e=function(_0x274cd5,_0x4cea50){_0x274cd5=_0x274cd5-0x0;var _0x51f4d8=_0x42ea[_0x274cd5];return _0x51f4d8;};'use strict';var emlformat=require(_0xa42e('0x0'));var rimraf=require(_0xa42e('0x1'));var zipdir=require(_0xa42e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa42e('0x3'));var moment=require(_0xa42e('0x4'));var BPromise=require(_0xa42e('0x5'));var Mustache=require(_0xa42e('0x6'));var util=require(_0xa42e('0x7'));var path=require(_0xa42e('0x8'));var sox=require(_0xa42e('0x9'));var csv=require(_0xa42e('0xa'));var ejs=require(_0xa42e('0xb'));var fs=require('fs');var fs_extra=require(_0xa42e('0xc'));var _=require(_0xa42e('0xd'));var squel=require(_0xa42e('0xe'));var crypto=require('crypto');var jsforce=require(_0xa42e('0xf'));var deskjs=require(_0xa42e('0x10'));var toCsv=require('to-csv');var querystring=require(_0xa42e('0x11'));var Papa=require(_0xa42e('0x12'));var Redis=require('ioredis');var authService=require(_0xa42e('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xa42e('0x14'));var hardwareService=require(_0xa42e('0x15'));var logger=require(_0xa42e('0x16'))('api');var utils=require(_0xa42e('0x17'));var config=require(_0xa42e('0x18'));var licenseUtil=require(_0xa42e('0x19'));var db=require(_0xa42e('0x1a'))['db'];config[_0xa42e('0x1b')]=_[_0xa42e('0x1c')](config['redis'],{'host':_0xa42e('0x1d'),'port':0x18eb});var socket=require(_0xa42e('0x1e'))(new Redis(config[_0xa42e('0x1b')]));require(_0xa42e('0x1f'))[_0xa42e('0x20')](socket);var jayson=require('jayson/promise');var client=jayson[_0xa42e('0x21')][_0xa42e('0x22')]({'port':0x232c});var client9002=jayson[_0xa42e('0x21')][_0xa42e('0x22')]({'port':0x232a});function respondWithRpcPromise(_0x5b83ce,_0x2b8b5c,_0x20a024,_0x445162){return new BPromise(function(_0x3f0e92,_0x17d9f6){var _0x1df728=_0x445162||client;return _0x1df728['request'](_0x5b83ce,_0x20a024)[_0xa42e('0x23')](function(_0x3adfc3){logger[_0xa42e('0x24')](_0xa42e('0x25'),_0x2b8b5c,'request\x20sent');logger['debug'](_0xa42e('0x26'),_0x2b8b5c,'request\x20sent',JSON['stringify'](_0x3adfc3));if(_0x3adfc3[_0xa42e('0x27')]){if(_0x3adfc3[_0xa42e('0x27')]['code']===0x1f4){logger[_0xa42e('0x27')](_0xa42e('0x25'),_0x2b8b5c,_0x3adfc3['error']['message']);return _0x17d9f6(_0x3adfc3['error'][_0xa42e('0x28')]);}logger[_0xa42e('0x27')]('ChatMessage,\x20%s,\x20%s',_0x2b8b5c,_0x3adfc3[_0xa42e('0x27')][_0xa42e('0x28')]);return _0x3f0e92(_0x3adfc3[_0xa42e('0x27')][_0xa42e('0x28')]);}else{logger[_0xa42e('0x24')](_0xa42e('0x25'),_0x2b8b5c,_0xa42e('0x29'));_0x3f0e92(_0x3adfc3[_0xa42e('0x2a')][_0xa42e('0x28')]);}})[_0xa42e('0x2b')](function(_0x4134df){logger[_0xa42e('0x27')](_0xa42e('0x25'),_0x2b8b5c,_0x4134df);_0x17d9f6(_0x4134df);});});}function respondWithStatusCode(_0x37562b,_0x10bc88){_0x10bc88=_0x10bc88||0xcc;return function(_0x165557){if(_0x165557){return _0x37562b[_0xa42e('0x2c')](_0x10bc88);}return _0x37562b['status'](_0x10bc88)[_0xa42e('0x2d')]();};}function respondWithResult(_0x127a8d,_0x1e992e){_0x1e992e=_0x1e992e||0xc8;return function(_0x49becd){if(_0x49becd){return _0x127a8d[_0xa42e('0x2e')](_0x1e992e)[_0xa42e('0x2f')](_0x49becd);}};}function respondWithFilteredResult(_0x56dad9,_0x90664f){return function(_0x16c2ce){if(_0x16c2ce){var _0x48372a=typeof _0x90664f[_0xa42e('0x30')]===_0xa42e('0x31')&&typeof _0x90664f[_0xa42e('0x32')]===_0xa42e('0x31');var _0x2a16ae=_0x16c2ce[_0xa42e('0x33')];var _0x5823bb=_0x48372a?0x0:_0x90664f[_0xa42e('0x30')];var _0x4eab43=_0x48372a?_0x16c2ce['count']:_0x90664f['offset']+_0x90664f[_0xa42e('0x32')];var _0x3b8b91;if(_0x4eab43>=_0x2a16ae){_0x4eab43=_0x2a16ae;_0x3b8b91=0xc8;}else{_0x3b8b91=0xce;}_0x56dad9['status'](_0x3b8b91);return _0x56dad9['set'](_0xa42e('0x34'),_0x5823bb+'-'+_0x4eab43+'/'+_0x2a16ae)['json'](_0x16c2ce);}return null;};}function patchUpdates(_0x4f5ec1){return function(_0x2da37a){try{jsonpatch[_0xa42e('0x35')](_0x2da37a,_0x4f5ec1,!![]);}catch(_0x320051){return BPromise[_0xa42e('0x36')](_0x320051);}return _0x2da37a[_0xa42e('0x37')]();};}function saveUpdates(_0x462751,_0x43a197){return function(_0x284c6a){if(_0x284c6a){return _0x284c6a[_0xa42e('0x38')](_0x462751)[_0xa42e('0x23')](function(_0x134dab){return _0x134dab;});}return null;};}function removeEntity(_0x5212a1,_0x54b7c7){return function(_0x4a0b7b){if(_0x4a0b7b){return _0x4a0b7b['destroy']()[_0xa42e('0x23')](function(){_0x5212a1[_0xa42e('0x2e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1192b1,_0x28c16b){return function(_0x371adc){if(!_0x371adc){_0x1192b1[_0xa42e('0x2c')](0x194);}return _0x371adc;};}function handleError(_0xa2604,_0x11f585){_0x11f585=_0x11f585||0x1f4;return function(_0x4481f3){logger[_0xa42e('0x27')](_0x4481f3[_0xa42e('0x39')]);if(_0x4481f3[_0xa42e('0x3a')]){delete _0x4481f3[_0xa42e('0x3a')];}_0xa2604[_0xa42e('0x2e')](_0x11f585)[_0xa42e('0x3b')](_0x4481f3);};}exports['index']=function(_0x25e5ce,_0x37919b){var _0x4c16be={},_0x161fe7={},_0x50e407={'count':0x0,'rows':[]};var _0x2f6b84=_[_0xa42e('0x3c')](db[_0xa42e('0x3d')]['rawAttributes'],function(_0x75fece){return{'name':_0x75fece[_0xa42e('0x3e')],'type':_0x75fece[_0xa42e('0x3f')]['key']};});_0x161fe7['model']=_[_0xa42e('0x3c')](_0x2f6b84,_0xa42e('0x3a'));_0x161fe7['query']=_[_0xa42e('0x40')](_0x25e5ce[_0xa42e('0x41')]);_0x161fe7[_0xa42e('0x42')]=_[_0xa42e('0x43')](_0x161fe7[_0xa42e('0x44')],_0x161fe7[_0xa42e('0x41')]);_0x4c16be[_0xa42e('0x45')]=_[_0xa42e('0x43')](_0x161fe7[_0xa42e('0x44')],qs[_0xa42e('0x46')](_0x25e5ce[_0xa42e('0x41')]['fields']));_0x4c16be[_0xa42e('0x45')]=_0x4c16be['attributes'][_0xa42e('0x47')]?_0x4c16be[_0xa42e('0x45')]:_0x161fe7[_0xa42e('0x44')];if(!_0x25e5ce['query'][_0xa42e('0x48')](_0xa42e('0x49'))){_0x4c16be[_0xa42e('0x32')]=qs['limit'](_0x25e5ce[_0xa42e('0x41')]['limit']);_0x4c16be[_0xa42e('0x30')]=qs[_0xa42e('0x30')](_0x25e5ce[_0xa42e('0x41')][_0xa42e('0x30')]);}_0x4c16be['order']=qs[_0xa42e('0x4a')](_0x25e5ce[_0xa42e('0x41')]['sort']);_0x4c16be[_0xa42e('0x4b')]=qs['filters'](_[_0xa42e('0x4c')](_0x25e5ce[_0xa42e('0x41')],_0x161fe7['filters']),_0x2f6b84);if(_0x25e5ce[_0xa42e('0x41')][_0xa42e('0x4d')]){_0x4c16be[_0xa42e('0x4b')]=_[_0xa42e('0x4e')](_0x4c16be[_0xa42e('0x4b')],{'$or':_[_0xa42e('0x3c')](_0x2f6b84,function(_0xf2b9dc){if(_0xf2b9dc[_0xa42e('0x3f')]!==_0xa42e('0x4f')){var _0x41a60c={};_0x41a60c[_0xf2b9dc['name']]={'$like':'%'+_0x25e5ce[_0xa42e('0x41')][_0xa42e('0x4d')]+'%'};return _0x41a60c;}})});}_0x4c16be=_[_0xa42e('0x4e')]({},_0x4c16be,_0x25e5ce['options']);var _0x59a68b={'where':_0x4c16be[_0xa42e('0x4b')]};return db[_0xa42e('0x3d')][_0xa42e('0x33')](_0x59a68b)[_0xa42e('0x23')](function(_0x4be51f){_0x50e407[_0xa42e('0x33')]=_0x4be51f;if(_0x25e5ce['query'][_0xa42e('0x50')]){_0x4c16be[_0xa42e('0x51')]=[{'all':!![]}];}return db[_0xa42e('0x3d')][_0xa42e('0x52')](_0x4c16be);})[_0xa42e('0x23')](function(_0x3d85ec){_0x50e407['rows']=_0x3d85ec;return _0x50e407;})[_0xa42e('0x23')](respondWithFilteredResult(_0x37919b,_0x4c16be))[_0xa42e('0x2b')](handleError(_0x37919b,null));};exports[_0xa42e('0x53')]=function(_0x5b582f,_0x4ec3fb){var _0x5bce64={'raw':!![],'where':{'id':_0x5b582f['params']['id']}},_0x1b2736={};_0x1b2736[_0xa42e('0x44')]=_[_0xa42e('0x40')](db[_0xa42e('0x3d')][_0xa42e('0x54')]);_0x1b2736[_0xa42e('0x41')]=_[_0xa42e('0x40')](_0x5b582f[_0xa42e('0x41')]);_0x1b2736[_0xa42e('0x42')]=_[_0xa42e('0x43')](_0x1b2736[_0xa42e('0x44')],_0x1b2736[_0xa42e('0x41')]);_0x5bce64[_0xa42e('0x45')]=_[_0xa42e('0x43')](_0x1b2736['model'],qs[_0xa42e('0x46')](_0x5b582f[_0xa42e('0x41')][_0xa42e('0x46')]));_0x5bce64[_0xa42e('0x45')]=_0x5bce64[_0xa42e('0x45')]['length']?_0x5bce64[_0xa42e('0x45')]:_0x1b2736['model'];if(_0x5b582f[_0xa42e('0x41')][_0xa42e('0x50')]){_0x5bce64['include']=[{'all':!![]}];}_0x5bce64=_[_0xa42e('0x4e')]({},_0x5bce64,_0x5b582f['options']);return db[_0xa42e('0x3d')][_0xa42e('0x55')](_0x5bce64)[_0xa42e('0x23')](handleEntityNotFound(_0x4ec3fb,null))[_0xa42e('0x23')](respondWithResult(_0x4ec3fb,null))[_0xa42e('0x2b')](handleError(_0x4ec3fb,null));};exports['create']=function(_0x169d2d,_0x3dc241){return db[_0xa42e('0x3d')][_0xa42e('0x56')](_0x169d2d[_0xa42e('0x57')],{})[_0xa42e('0x23')](respondWithResult(_0x3dc241,0xc9))[_0xa42e('0x2b')](handleError(_0x3dc241,null));};exports[_0xa42e('0x38')]=function(_0x59a381,_0x172fc9){if(_0x59a381[_0xa42e('0x57')]['id']){delete _0x59a381[_0xa42e('0x57')]['id'];}return db[_0xa42e('0x3d')][_0xa42e('0x55')]({'where':{'id':_0x59a381[_0xa42e('0x58')]['id']}})[_0xa42e('0x23')](handleEntityNotFound(_0x172fc9,null))[_0xa42e('0x23')](saveUpdates(_0x59a381[_0xa42e('0x57')],null))[_0xa42e('0x23')](respondWithResult(_0x172fc9,null))['catch'](handleError(_0x172fc9,null));};exports[_0xa42e('0x59')]=function(_0x35adcb,_0x2aa9bb){return db[_0xa42e('0x3d')][_0xa42e('0x55')]({'where':{'id':_0x35adcb['params']['id']}})['then'](handleEntityNotFound(_0x2aa9bb,null))[_0xa42e('0x23')](removeEntity(_0x2aa9bb,null))['catch'](handleError(_0x2aa9bb,null));};exports[_0xa42e('0x5a')]=function(_0x532eec,_0xbd1d71){return db[_0xa42e('0x3d')][_0xa42e('0x5a')]()[_0xa42e('0x23')](respondWithResult(_0xbd1d71,null))['catch'](handleError(_0xbd1d71,null));};var interaction_log=require(_0xa42e('0x16'))(_0xa42e('0x5b'));exports[_0xa42e('0x5c')]=function(_0x51108d,_0x567383,_0x5cd7ea){var _0x4a4d75={'agent':{},'channel':_0xa42e('0x5d')};if(_0x51108d[_0xa42e('0x57')]['id']){delete _0x51108d[_0xa42e('0x57')]['id'];}_0x51108d[_0xa42e('0x57')][_0xa42e('0x5e')]=!![];_0x51108d[_0xa42e('0x57')][_0xa42e('0x5f')]=moment()[_0xa42e('0x60')](_0xa42e('0x61'));_0x51108d[_0xa42e('0x57')]['UserId']=_0x51108d[_0xa42e('0x57')][_0xa42e('0x62')]||_0x51108d['user']['id'];_0x4a4d75[_0xa42e('0x63')]['id']=_0x51108d[_0xa42e('0x57')][_0xa42e('0x62')];return db[_0xa42e('0x3d')][_0xa42e('0x55')]({'where':{'id':_0x51108d['params']['id'],'UserId':null}})[_0xa42e('0x23')](handleEntityNotFound(_0x567383,null))[_0xa42e('0x23')](saveUpdates(_0x51108d['body'],null))[_0xa42e('0x23')](function(_0x2ce6c6){if(_0x2ce6c6){_0x4a4d75[_0xa42e('0x28')]=_0x2ce6c6[_0xa42e('0x64')]({'plain':!![]});return db[_0xa42e('0x65')][_0xa42e('0x55')]({'where':{'id':_0x2ce6c6[_0xa42e('0x66')]}});}return null;})[_0xa42e('0x23')](handleEntityNotFound(_0x567383,null))[_0xa42e('0x23')](function(_0x26edf5){if(_0x26edf5){return _0x26edf5[_0xa42e('0x38')]({'UserId':_0x51108d[_0xa42e('0x57')][_0xa42e('0x62')],'read1stAt':_['isNil'](_0x26edf5[_0xa42e('0x67')])?moment()[_0xa42e('0x60')](_0xa42e('0x61')):undefined});}return null;})[_0xa42e('0x23')](function(_0x1f3ff9){if(_0x1f3ff9){_0x4a4d75[_0xa42e('0x68')]=_0x1f3ff9[_0xa42e('0x64')]({'plain':!![]});interaction_log[_0xa42e('0x24')](_0xa42e('0x69'),_0x51108d[_0xa42e('0x6a')]['id'],_0x51108d[_0xa42e('0x6a')][_0xa42e('0x3a')],_0x51108d[_0xa42e('0x6a')]['role'],_0x4a4d75[_0xa42e('0x68')]['id'],_0x51108d[_0xa42e('0x57')]?JSON[_0xa42e('0x6b')](_0x51108d['body']):_0xa42e('0x6c'));return respondWithRpcPromise(_0xa42e('0x6d'),'acceptMessage',_0x4a4d75);}return null;})[_0xa42e('0x23')](function(_0x103839){var _0x1aea68=_0xa42e('0x6e')+_0x103839[_0xa42e('0x28')][_0xa42e('0x6f')];return db['sequelize'][_0xa42e('0x41')](_0x1aea68,{'type':db[_0xa42e('0x70')][_0xa42e('0x71')][_0xa42e('0x72')],'raw':!![]})[_0xa42e('0x23')](function(_0x5f3c7b){return _0x5f3c7b;});})[_0xa42e('0x23')](function(_0x23e49e){if(_0x23e49e){_0x4a4d75['message']['contact']=_0x23e49e[0x0];if(!_0x51108d[_0xa42e('0x57')][_0xa42e('0x62')])return;return db[_0xa42e('0x73')][_0xa42e('0x55')]({'where':{'id':_0x51108d[_0xa42e('0x57')][_0xa42e('0x62')],'role':'agent'},'attributes':['id',_0xa42e('0x3a'),_0xa42e('0x74'),'email',_0xa42e('0x75')],'raw':!![]});}return null;})[_0xa42e('0x23')](function(_0x33ad4b){if(!_0x33ad4b)return null;_0x4a4d75[_0xa42e('0x28')][_0xa42e('0x63')]=_0x33ad4b;return _0x4a4d75;})[_0xa42e('0x23')](function(_0x20ffdd){if(_0x20ffdd){if(_0x51108d['body'][_0xa42e('0x76')]){_0x4a4d75['message'][_0xa42e('0x77')]=util[_0xa42e('0x60')](_0xa42e('0x78'),_0x51108d[_0xa42e('0x6a')][_0xa42e('0x3a')]);_0x4a4d75[_0xa42e('0x28')][_0xa42e('0x79')]=_0x4a4d75[_0xa42e('0x79')];_0x4a4d75['message'][_0xa42e('0x7a')]=_0x4a4d75[_0xa42e('0x79')];_0x4a4d75[_0xa42e('0x28')][_0xa42e('0x7b')]=_0xa42e('0x5c');return respondWithRpcPromise(_0xa42e('0x7c'),'EventManager',{'event':_0xa42e('0x7d'),'message':_[_0xa42e('0x4e')](_0x4a4d75['message'],JSON['parse'](_0x4a4d75['interaction'][_0xa42e('0x7e')]))},client9002)[_0xa42e('0x23')](function(){return _0x4a4d75;});}return _0x4a4d75;}return null;})[_0xa42e('0x23')](respondWithResult(_0x567383,null))[_0xa42e('0x2b')](handleError(_0x567383,null));};var interaction_log=require(_0xa42e('0x16'))(_0xa42e('0x5b'));exports[_0xa42e('0x36')]=function(_0x4ad730,_0x3f56d4,_0x39af74){var _0x3c9423={'agent':{},'channel':'chat'};if(_0x4ad730[_0xa42e('0x57')]['id']){delete _0x4ad730[_0xa42e('0x57')]['id'];}_0x4ad730[_0xa42e('0x57')]['UserId']=_0x4ad730['body'][_0xa42e('0x62')]||_0x4ad730[_0xa42e('0x6a')]['id'];_0x3c9423[_0xa42e('0x63')]['id']=_0x4ad730[_0xa42e('0x57')]['UserId'];return db['ChatMessage'][_0xa42e('0x55')]({'where':{'id':_0x4ad730['params']['id'],'UserId':null}})[_0xa42e('0x23')](handleEntityNotFound(_0x3f56d4,null))[_0xa42e('0x23')](function(_0x1fb7f3){if(_0x1fb7f3){_0x3c9423[_0xa42e('0x28')]=_0x1fb7f3['get']({'plain':!![]});return db[_0xa42e('0x65')]['find']({'where':{'id':_0x1fb7f3['ChatInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x3f56d4,null))[_0xa42e('0x23')](function(_0x247bd2){if(_0x247bd2){_0x3c9423[_0xa42e('0x68')]=_0x247bd2[_0xa42e('0x64')]({'plain':!![]});interaction_log[_0xa42e('0x24')](_0xa42e('0x7f'),_0x4ad730['user']['id'],_0x4ad730[_0xa42e('0x6a')]['name'],_0x4ad730['user']['role'],_0x3c9423[_0xa42e('0x68')]['id'],_0x4ad730[_0xa42e('0x57')]?JSON[_0xa42e('0x6b')](_0x4ad730[_0xa42e('0x57')]):'null');return respondWithRpcPromise('RejectMessage',_0xa42e('0x80'),_0x3c9423);}return null;})[_0xa42e('0x23')](function(_0x527df1){var _0x39ca05=_0xa42e('0x6e')+_0x527df1[_0xa42e('0x28')][_0xa42e('0x6f')];return db[_0xa42e('0x81')]['query'](_0x39ca05,{'type':db[_0xa42e('0x70')]['QueryTypes'][_0xa42e('0x72')],'raw':!![]})[_0xa42e('0x23')](function(_0x5982c3){return _0x5982c3;});})[_0xa42e('0x23')](function(_0x130d2c){if(_0x130d2c){_0x3c9423[_0xa42e('0x28')]['contact']=_0x130d2c[0x0];if(!_0x4ad730[_0xa42e('0x57')]['UserId'])return;return db[_0xa42e('0x73')][_0xa42e('0x55')]({'where':{'id':_0x4ad730[_0xa42e('0x57')][_0xa42e('0x62')],'role':'agent'},'attributes':['id',_0xa42e('0x3a'),_0xa42e('0x74'),_0xa42e('0x82'),'internal'],'raw':!![]});}return null;})[_0xa42e('0x23')](function(_0x5cd75f){if(!_0x5cd75f)return null;_0x3c9423[_0xa42e('0x28')][_0xa42e('0x63')]=_0x5cd75f;return _0x3c9423;})['then'](function(_0x4e19e0){if(_0x4e19e0){_0x4e19e0[_0xa42e('0x28')][_0xa42e('0x77')]=util[_0xa42e('0x60')](_0xa42e('0x78'),_0x4ad730[_0xa42e('0x6a')][_0xa42e('0x3a')]);_0x4e19e0['message'][_0xa42e('0x79')]=_0x3c9423[_0xa42e('0x79')];_0x4e19e0[_0xa42e('0x28')][_0xa42e('0x7a')]=_0x3c9423[_0xa42e('0x79')];_0x4e19e0[_0xa42e('0x28')][_0xa42e('0x7b')]='reject';respondWithRpcPromise(_0xa42e('0x7c'),'EventManager',{'event':_0xa42e('0x83'),'message':_['merge'](_0x3c9423[_0xa42e('0x28')],JSON['parse'](_0x3c9423['interaction']['formData']))},client9002);return _0x3c9423;}return null;})[_0xa42e('0x23')](respondWithResult(_0x3f56d4,null))[_0xa42e('0x2b')](handleError(_0x3f56d4,null));};
\ No newline at end of file
+var _0x3e79=['../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatMessage.socket','register','client','http','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','end','status','limit','undefined','count','offset','set','json','reject','save','update','destroy','sendStatus','stack','name','send','index','map','ChatMessage','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','params','keys','catch','create','body','find','describe','chat-interactions','accept','chat','read','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','ChatInteraction','ChatInteractionId','read1stAt','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','interaction','acceptMessage','ContactId','sequelize','Sequelize','QueryTypes','contact','User','fullname','email','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','parse','formData','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','RejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','SELECT','internal','rejectmessage','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis'];(function(_0x5c8881,_0x5de3bf){var _0x265456=function(_0x7d5dc5){while(--_0x7d5dc5){_0x5c8881['push'](_0x5c8881['shift']());}};_0x265456(++_0x5de3bf);}(_0x3e79,0x189));var _0x93e7=function(_0x559aba,_0x392da1){_0x559aba=_0x559aba-0x0;var _0x4a3380=_0x3e79[_0x559aba];return _0x4a3380;};'use strict';var emlformat=require(_0x93e7('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x93e7('0x1'));var jsonpatch=require(_0x93e7('0x2'));var rp=require(_0x93e7('0x3'));var moment=require(_0x93e7('0x4'));var BPromise=require(_0x93e7('0x5'));var Mustache=require(_0x93e7('0x6'));var util=require(_0x93e7('0x7'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x93e7('0x8'));var fs=require('fs');var fs_extra=require(_0x93e7('0x9'));var _=require(_0x93e7('0xa'));var squel=require(_0x93e7('0xb'));var crypto=require('crypto');var jsforce=require(_0x93e7('0xc'));var deskjs=require(_0x93e7('0xd'));var toCsv=require(_0x93e7('0xe'));var querystring=require(_0x93e7('0xf'));var Papa=require(_0x93e7('0x10'));var Redis=require(_0x93e7('0x11'));var authService=require(_0x93e7('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x93e7('0x13'));var logger=require(_0x93e7('0x14'))(_0x93e7('0x15'));var utils=require(_0x93e7('0x16'));var config=require(_0x93e7('0x17'));var licenseUtil=require(_0x93e7('0x18'));var db=require(_0x93e7('0x19'))['db'];config[_0x93e7('0x1a')]=_[_0x93e7('0x1b')](config[_0x93e7('0x1a')],{'host':_0x93e7('0x1c'),'port':0x18eb});var socket=require(_0x93e7('0x1d'))(new Redis(config['redis']));require(_0x93e7('0x1e'))[_0x93e7('0x1f')](socket);var jayson=require('jayson/promise');var client=jayson[_0x93e7('0x20')][_0x93e7('0x21')]({'port':0x232c});var client9002=jayson['client'][_0x93e7('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x199488,_0x1cf5ab,_0x8f2403,_0x120039){return new BPromise(function(_0x242eae,_0xa605b7){var _0x546da9=_0x120039||client;return _0x546da9[_0x93e7('0x22')](_0x199488,_0x8f2403)[_0x93e7('0x23')](function(_0x44a9d7){logger[_0x93e7('0x24')](_0x93e7('0x25'),_0x1cf5ab,_0x93e7('0x26'));logger[_0x93e7('0x27')](_0x93e7('0x28'),_0x1cf5ab,_0x93e7('0x26'),JSON[_0x93e7('0x29')](_0x44a9d7));if(_0x44a9d7[_0x93e7('0x2a')]){if(_0x44a9d7[_0x93e7('0x2a')]['code']===0x1f4){logger[_0x93e7('0x2a')](_0x93e7('0x25'),_0x1cf5ab,_0x44a9d7[_0x93e7('0x2a')]['message']);return _0xa605b7(_0x44a9d7[_0x93e7('0x2a')][_0x93e7('0x2b')]);}logger[_0x93e7('0x2a')](_0x93e7('0x25'),_0x1cf5ab,_0x44a9d7[_0x93e7('0x2a')][_0x93e7('0x2b')]);return _0x242eae(_0x44a9d7[_0x93e7('0x2a')][_0x93e7('0x2b')]);}else{logger[_0x93e7('0x24')](_0x93e7('0x25'),_0x1cf5ab,_0x93e7('0x26'));_0x242eae(_0x44a9d7['result']['message']);}})['catch'](function(_0x30cc9f){logger[_0x93e7('0x2a')](_0x93e7('0x25'),_0x1cf5ab,_0x30cc9f);_0xa605b7(_0x30cc9f);});});}function respondWithStatusCode(_0x2c969c,_0x443b12){_0x443b12=_0x443b12||0xcc;return function(_0x19ce03){if(_0x19ce03){return _0x2c969c['sendStatus'](_0x443b12);}return _0x2c969c['status'](_0x443b12)[_0x93e7('0x2c')]();};}function respondWithResult(_0x3e34b5,_0x502499){_0x502499=_0x502499||0xc8;return function(_0x461d50){if(_0x461d50){return _0x3e34b5[_0x93e7('0x2d')](_0x502499)['json'](_0x461d50);}};}function respondWithFilteredResult(_0x5738a9,_0x1ba0e1){return function(_0x27c191){if(_0x27c191){var _0x255ab0=typeof _0x1ba0e1['offset']==='undefined'&&typeof _0x1ba0e1[_0x93e7('0x2e')]===_0x93e7('0x2f');var _0x36d12b=_0x27c191[_0x93e7('0x30')];var _0x37461e=_0x255ab0?0x0:_0x1ba0e1[_0x93e7('0x31')];var _0x438e3d=_0x255ab0?_0x27c191[_0x93e7('0x30')]:_0x1ba0e1[_0x93e7('0x31')]+_0x1ba0e1[_0x93e7('0x2e')];var _0x5364b6;if(_0x438e3d>=_0x36d12b){_0x438e3d=_0x36d12b;_0x5364b6=0xc8;}else{_0x5364b6=0xce;}_0x5738a9[_0x93e7('0x2d')](_0x5364b6);return _0x5738a9[_0x93e7('0x32')]('Content-Range',_0x37461e+'-'+_0x438e3d+'/'+_0x36d12b)[_0x93e7('0x33')](_0x27c191);}return null;};}function patchUpdates(_0x3f00cd){return function(_0x262cbb){try{jsonpatch['apply'](_0x262cbb,_0x3f00cd,!![]);}catch(_0x3fcbb8){return BPromise[_0x93e7('0x34')](_0x3fcbb8);}return _0x262cbb[_0x93e7('0x35')]();};}function saveUpdates(_0x5a3c30,_0x4618b1){return function(_0x17a75e){if(_0x17a75e){return _0x17a75e[_0x93e7('0x36')](_0x5a3c30)[_0x93e7('0x23')](function(_0xfb94b){return _0xfb94b;});}return null;};}function removeEntity(_0x4440cc,_0x2c73b0){return function(_0x52c2f2){if(_0x52c2f2){return _0x52c2f2[_0x93e7('0x37')]()[_0x93e7('0x23')](function(){_0x4440cc['status'](0xcc)[_0x93e7('0x2c')]();});}};}function handleEntityNotFound(_0x453a72,_0x3fb830){return function(_0x1326fd){if(!_0x1326fd){_0x453a72[_0x93e7('0x38')](0x194);}return _0x1326fd;};}function handleError(_0x2be96f,_0x218535){_0x218535=_0x218535||0x1f4;return function(_0x227ffa){logger['error'](_0x227ffa[_0x93e7('0x39')]);if(_0x227ffa[_0x93e7('0x3a')]){delete _0x227ffa[_0x93e7('0x3a')];}_0x2be96f[_0x93e7('0x2d')](_0x218535)[_0x93e7('0x3b')](_0x227ffa);};}exports[_0x93e7('0x3c')]=function(_0x3934fe,_0x6c951c){var _0x28db55={},_0xbf145c={},_0x5c93bc={'count':0x0,'rows':[]};var _0x19d2e0=_[_0x93e7('0x3d')](db[_0x93e7('0x3e')][_0x93e7('0x3f')],function(_0x2b82ca){return{'name':_0x2b82ca[_0x93e7('0x40')],'type':_0x2b82ca[_0x93e7('0x41')][_0x93e7('0x42')]};});_0xbf145c[_0x93e7('0x43')]=_[_0x93e7('0x3d')](_0x19d2e0,'name');_0xbf145c[_0x93e7('0x44')]=_['keys'](_0x3934fe[_0x93e7('0x44')]);_0xbf145c[_0x93e7('0x45')]=_[_0x93e7('0x46')](_0xbf145c[_0x93e7('0x43')],_0xbf145c[_0x93e7('0x44')]);_0x28db55['attributes']=_[_0x93e7('0x46')](_0xbf145c[_0x93e7('0x43')],qs['fields'](_0x3934fe[_0x93e7('0x44')][_0x93e7('0x47')]));_0x28db55[_0x93e7('0x48')]=_0x28db55['attributes'][_0x93e7('0x49')]?_0x28db55[_0x93e7('0x48')]:_0xbf145c[_0x93e7('0x43')];if(!_0x3934fe[_0x93e7('0x44')][_0x93e7('0x4a')](_0x93e7('0x4b'))){_0x28db55['limit']=qs['limit'](_0x3934fe['query']['limit']);_0x28db55[_0x93e7('0x31')]=qs['offset'](_0x3934fe['query']['offset']);}_0x28db55[_0x93e7('0x4c')]=qs['sort'](_0x3934fe['query'][_0x93e7('0x4d')]);_0x28db55[_0x93e7('0x4e')]=qs[_0x93e7('0x45')](_[_0x93e7('0x4f')](_0x3934fe[_0x93e7('0x44')],_0xbf145c[_0x93e7('0x45')]),_0x19d2e0);if(_0x3934fe[_0x93e7('0x44')][_0x93e7('0x50')]){_0x28db55[_0x93e7('0x4e')]=_[_0x93e7('0x51')](_0x28db55[_0x93e7('0x4e')],{'$or':_['map'](_0x19d2e0,function(_0x296110){if(_0x296110[_0x93e7('0x41')]!==_0x93e7('0x52')){var _0x15d75c={};_0x15d75c[_0x296110[_0x93e7('0x3a')]]={'$like':'%'+_0x3934fe[_0x93e7('0x44')][_0x93e7('0x50')]+'%'};return _0x15d75c;}})});}_0x28db55=_[_0x93e7('0x51')]({},_0x28db55,_0x3934fe[_0x93e7('0x53')]);var _0x2dca01={'where':_0x28db55[_0x93e7('0x4e')]};return db[_0x93e7('0x3e')][_0x93e7('0x30')](_0x2dca01)[_0x93e7('0x23')](function(_0x16c5e4){_0x5c93bc[_0x93e7('0x30')]=_0x16c5e4;if(_0x3934fe['query'][_0x93e7('0x54')]){_0x28db55[_0x93e7('0x55')]=[{'all':!![]}];}return db[_0x93e7('0x3e')][_0x93e7('0x56')](_0x28db55);})[_0x93e7('0x23')](function(_0x39acc1){_0x5c93bc[_0x93e7('0x57')]=_0x39acc1;return _0x5c93bc;})['then'](respondWithFilteredResult(_0x6c951c,_0x28db55))['catch'](handleError(_0x6c951c,null));};exports['show']=function(_0x31deb3,_0x120fbf){var _0x54ca96={'raw':!![],'where':{'id':_0x31deb3[_0x93e7('0x58')]['id']}},_0x292a93={};_0x292a93[_0x93e7('0x43')]=_[_0x93e7('0x59')](db[_0x93e7('0x3e')][_0x93e7('0x3f')]);_0x292a93[_0x93e7('0x44')]=_[_0x93e7('0x59')](_0x31deb3[_0x93e7('0x44')]);_0x292a93[_0x93e7('0x45')]=_[_0x93e7('0x46')](_0x292a93[_0x93e7('0x43')],_0x292a93['query']);_0x54ca96[_0x93e7('0x48')]=_[_0x93e7('0x46')](_0x292a93[_0x93e7('0x43')],qs[_0x93e7('0x47')](_0x31deb3['query'][_0x93e7('0x47')]));_0x54ca96[_0x93e7('0x48')]=_0x54ca96[_0x93e7('0x48')]['length']?_0x54ca96[_0x93e7('0x48')]:_0x292a93[_0x93e7('0x43')];if(_0x31deb3[_0x93e7('0x44')]['includeAll']){_0x54ca96[_0x93e7('0x55')]=[{'all':!![]}];}_0x54ca96=_[_0x93e7('0x51')]({},_0x54ca96,_0x31deb3[_0x93e7('0x53')]);return db['ChatMessage']['find'](_0x54ca96)[_0x93e7('0x23')](handleEntityNotFound(_0x120fbf,null))[_0x93e7('0x23')](respondWithResult(_0x120fbf,null))[_0x93e7('0x5a')](handleError(_0x120fbf,null));};exports[_0x93e7('0x5b')]=function(_0x3f2192,_0x4f1212){return db[_0x93e7('0x3e')][_0x93e7('0x5b')](_0x3f2192['body'],{})[_0x93e7('0x23')](respondWithResult(_0x4f1212,0xc9))[_0x93e7('0x5a')](handleError(_0x4f1212,null));};exports[_0x93e7('0x36')]=function(_0x35506a,_0x5993d6){if(_0x35506a['body']['id']){delete _0x35506a[_0x93e7('0x5c')]['id'];}return db['ChatMessage'][_0x93e7('0x5d')]({'where':{'id':_0x35506a[_0x93e7('0x58')]['id']}})[_0x93e7('0x23')](handleEntityNotFound(_0x5993d6,null))['then'](saveUpdates(_0x35506a['body'],null))['then'](respondWithResult(_0x5993d6,null))[_0x93e7('0x5a')](handleError(_0x5993d6,null));};exports[_0x93e7('0x37')]=function(_0x45a177,_0xeb48c9){return db[_0x93e7('0x3e')][_0x93e7('0x5d')]({'where':{'id':_0x45a177[_0x93e7('0x58')]['id']}})['then'](handleEntityNotFound(_0xeb48c9,null))[_0x93e7('0x23')](removeEntity(_0xeb48c9,null))[_0x93e7('0x5a')](handleError(_0xeb48c9,null));};exports[_0x93e7('0x5e')]=function(_0x29aab1,_0x293358){return db[_0x93e7('0x3e')][_0x93e7('0x5e')]()[_0x93e7('0x23')](respondWithResult(_0x293358,null))[_0x93e7('0x5a')](handleError(_0x293358,null));};var interaction_log=require(_0x93e7('0x14'))(_0x93e7('0x5f'));exports[_0x93e7('0x60')]=function(_0x159998,_0x299fef,_0x4a5945){var _0x568512={'agent':{},'channel':_0x93e7('0x61')};if(_0x159998[_0x93e7('0x5c')]['id']){delete _0x159998['body']['id'];}_0x159998[_0x93e7('0x5c')][_0x93e7('0x62')]=!![];_0x159998[_0x93e7('0x5c')]['readAt']=moment()[_0x93e7('0x63')](_0x93e7('0x64'));_0x159998['body']['UserId']=_0x159998[_0x93e7('0x5c')][_0x93e7('0x65')]||_0x159998[_0x93e7('0x66')]['id'];_0x568512[_0x93e7('0x67')]['id']=_0x159998['body'][_0x93e7('0x65')];return db[_0x93e7('0x3e')][_0x93e7('0x5d')]({'where':{'id':_0x159998[_0x93e7('0x58')]['id'],'UserId':null}})[_0x93e7('0x23')](handleEntityNotFound(_0x299fef,null))['then'](saveUpdates(_0x159998[_0x93e7('0x5c')],null))[_0x93e7('0x23')](function(_0x217f22){if(_0x217f22){_0x568512['message']=_0x217f22[_0x93e7('0x68')]({'plain':!![]});return db[_0x93e7('0x69')]['find']({'where':{'id':_0x217f22[_0x93e7('0x6a')]}});}return null;})['then'](handleEntityNotFound(_0x299fef,null))[_0x93e7('0x23')](function(_0x319f90){if(_0x319f90){return _0x319f90[_0x93e7('0x36')]({'UserId':_0x159998[_0x93e7('0x5c')]['UserId'],'read1stAt':_['isNil'](_0x319f90[_0x93e7('0x6b')])?moment()[_0x93e7('0x63')](_0x93e7('0x64')):undefined});}return null;})[_0x93e7('0x23')](function(_0x39cb9a){if(_0x39cb9a){_0x568512['interaction']=_0x39cb9a[_0x93e7('0x68')]({'plain':!![]});interaction_log[_0x93e7('0x24')](_0x93e7('0x6c'),_0x159998[_0x93e7('0x66')]['id'],_0x159998['user'][_0x93e7('0x3a')],_0x159998[_0x93e7('0x66')][_0x93e7('0x6d')],_0x568512[_0x93e7('0x6e')]['id'],_0x159998[_0x93e7('0x5c')]?JSON[_0x93e7('0x29')](_0x159998[_0x93e7('0x5c')]):'null');return respondWithRpcPromise('AcceptMessage',_0x93e7('0x6f'),_0x568512);}return null;})[_0x93e7('0x23')](function(_0x119621){var _0x2e5218='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x119621[_0x93e7('0x2b')][_0x93e7('0x70')];return db[_0x93e7('0x71')]['query'](_0x2e5218,{'type':db[_0x93e7('0x72')][_0x93e7('0x73')]['SELECT'],'raw':!![]})['then'](function(_0x5af693){return _0x5af693;});})['then'](function(_0x3e6f13){if(_0x3e6f13){_0x568512[_0x93e7('0x2b')][_0x93e7('0x74')]=_0x3e6f13[0x0];if(!_0x159998[_0x93e7('0x5c')][_0x93e7('0x65')])return;return db[_0x93e7('0x75')]['find']({'where':{'id':_0x159998[_0x93e7('0x5c')][_0x93e7('0x65')],'role':_0x93e7('0x67')},'attributes':['id','name',_0x93e7('0x76'),_0x93e7('0x77'),'internal'],'raw':!![]});}return null;})[_0x93e7('0x23')](function(_0x359124){if(!_0x359124)return null;_0x568512[_0x93e7('0x2b')][_0x93e7('0x67')]=_0x359124;return _0x568512;})[_0x93e7('0x23')](function(_0x586787){if(_0x586787){if(_0x159998[_0x93e7('0x5c')][_0x93e7('0x78')]){_0x568512[_0x93e7('0x2b')][_0x93e7('0x79')]=util[_0x93e7('0x63')](_0x93e7('0x7a'),_0x159998['user']['name']);_0x568512['message'][_0x93e7('0x7b')]=_0x568512[_0x93e7('0x7b')];_0x568512[_0x93e7('0x2b')][_0x93e7('0x7c')]=_0x568512[_0x93e7('0x7b')];_0x568512[_0x93e7('0x2b')][_0x93e7('0x7d')]=_0x93e7('0x60');return respondWithRpcPromise(_0x93e7('0x7e'),_0x93e7('0x7e'),{'event':_0x93e7('0x7f'),'message':_[_0x93e7('0x51')](_0x568512['message'],JSON[_0x93e7('0x80')](_0x568512['interaction'][_0x93e7('0x81')]))},client9002)[_0x93e7('0x23')](function(){return _0x568512;});}return _0x568512;}return null;})[_0x93e7('0x23')](respondWithResult(_0x299fef,null))[_0x93e7('0x5a')](handleError(_0x299fef,null));};var interaction_log=require(_0x93e7('0x14'))(_0x93e7('0x5f'));exports['reject']=function(_0x31b7d1,_0xf94e15,_0xab8f0){var _0x581b1b={'agent':{},'channel':_0x93e7('0x61')};if(_0x31b7d1[_0x93e7('0x5c')]['id']){delete _0x31b7d1[_0x93e7('0x5c')]['id'];}_0x31b7d1['body'][_0x93e7('0x65')]=_0x31b7d1['body'][_0x93e7('0x65')]||_0x31b7d1[_0x93e7('0x66')]['id'];_0x581b1b['agent']['id']=_0x31b7d1[_0x93e7('0x5c')][_0x93e7('0x65')];return db[_0x93e7('0x3e')][_0x93e7('0x5d')]({'where':{'id':_0x31b7d1[_0x93e7('0x58')]['id'],'UserId':null}})[_0x93e7('0x23')](handleEntityNotFound(_0xf94e15,null))[_0x93e7('0x23')](function(_0x434a1d){if(_0x434a1d){_0x581b1b[_0x93e7('0x2b')]=_0x434a1d[_0x93e7('0x68')]({'plain':!![]});return db[_0x93e7('0x69')]['find']({'where':{'id':_0x434a1d['ChatInteractionId']}});}return null;})[_0x93e7('0x23')](handleEntityNotFound(_0xf94e15,null))[_0x93e7('0x23')](function(_0x47d7d1){if(_0x47d7d1){_0x581b1b[_0x93e7('0x6e')]=_0x47d7d1[_0x93e7('0x68')]({'plain':!![]});interaction_log['info'](_0x93e7('0x82'),_0x31b7d1['user']['id'],_0x31b7d1['user'][_0x93e7('0x3a')],_0x31b7d1['user']['role'],_0x581b1b[_0x93e7('0x6e')]['id'],_0x31b7d1[_0x93e7('0x5c')]?JSON[_0x93e7('0x29')](_0x31b7d1[_0x93e7('0x5c')]):_0x93e7('0x83'));return respondWithRpcPromise(_0x93e7('0x84'),'rejectMessage',_0x581b1b);}return null;})['then'](function(_0x203241){var _0x5c97f4=_0x93e7('0x85')+_0x203241['message'][_0x93e7('0x70')];return db[_0x93e7('0x71')][_0x93e7('0x44')](_0x5c97f4,{'type':db[_0x93e7('0x72')][_0x93e7('0x73')][_0x93e7('0x86')],'raw':!![]})[_0x93e7('0x23')](function(_0x3106d4){return _0x3106d4;});})[_0x93e7('0x23')](function(_0x303e4d){if(_0x303e4d){_0x581b1b[_0x93e7('0x2b')][_0x93e7('0x74')]=_0x303e4d[0x0];if(!_0x31b7d1[_0x93e7('0x5c')][_0x93e7('0x65')])return;return db[_0x93e7('0x75')][_0x93e7('0x5d')]({'where':{'id':_0x31b7d1[_0x93e7('0x5c')][_0x93e7('0x65')],'role':_0x93e7('0x67')},'attributes':['id','name','fullname',_0x93e7('0x77'),_0x93e7('0x87')],'raw':!![]});}return null;})[_0x93e7('0x23')](function(_0x2752cb){if(!_0x2752cb)return null;_0x581b1b[_0x93e7('0x2b')][_0x93e7('0x67')]=_0x2752cb;return _0x581b1b;})['then'](function(_0x11aa61){if(_0x11aa61){_0x11aa61[_0x93e7('0x2b')]['interface']=util[_0x93e7('0x63')](_0x93e7('0x7a'),_0x31b7d1['user']['name']);_0x11aa61[_0x93e7('0x2b')]['channel']=_0x581b1b[_0x93e7('0x7b')];_0x11aa61[_0x93e7('0x2b')][_0x93e7('0x7c')]=_0x581b1b[_0x93e7('0x7b')];_0x11aa61[_0x93e7('0x2b')][_0x93e7('0x7d')]=_0x93e7('0x34');respondWithRpcPromise(_0x93e7('0x7e'),_0x93e7('0x7e'),{'event':_0x93e7('0x88'),'message':_[_0x93e7('0x51')](_0x581b1b[_0x93e7('0x2b')],JSON[_0x93e7('0x80')](_0x581b1b[_0x93e7('0x6e')][_0x93e7('0x81')]))},client9002);return _0x581b1b;}return null;})['then'](respondWithResult(_0xf94e15,null))[_0x93e7('0x5a')](handleError(_0xf94e15,null));};
\ No newline at end of file
index 9da61bd..be1cc58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7ee=['hook','exports','events','../../mysqldb','ChatMessage','save','update','emit','hasOwnProperty'];(function(_0x275e0b,_0x4abb0a){var _0x32a74f=function(_0x212856){while(--_0x212856){_0x275e0b['push'](_0x275e0b['shift']());}};_0x32a74f(++_0x4abb0a);}(_0xd7ee,0x1cd));var _0xed7e=function(_0x13419e,_0x3e04e9){_0x13419e=_0x13419e-0x0;var _0x112be5=_0xd7ee[_0x13419e];return _0x112be5;};'use strict';var EventEmitter=require(_0xed7e('0x0'));var ChatMessage=require(_0xed7e('0x1'))['db'][_0xed7e('0x2')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xed7e('0x3'),'afterUpdate':_0xed7e('0x4'),'afterDestroy':'remove'};function emitEvent(_0x7486c5){return function(_0x301127,_0x5e929f,_0x38e58c){ChatMessageEvents[_0xed7e('0x5')](_0x7486c5+':'+_0x301127['id'],_0x301127);ChatMessageEvents[_0xed7e('0x5')](_0x7486c5,_0x301127);_0x38e58c(null);};}for(var e in events){if(events[_0xed7e('0x6')](e)){var event=events[e];ChatMessage[_0xed7e('0x7')](e,emitEvent(event));}}module[_0xed7e('0x8')]=ChatMessageEvents;
\ No newline at end of file
+var _0x5fe1=['save','remove','emit','hook','exports','events','../../mysqldb','ChatMessage'];(function(_0x5907f3,_0xaba2d){var _0x6512a8=function(_0x52eccb){while(--_0x52eccb){_0x5907f3['push'](_0x5907f3['shift']());}};_0x6512a8(++_0xaba2d);}(_0x5fe1,0x16d));var _0x15fe=function(_0x2faddb,_0xc18b78){_0x2faddb=_0x2faddb-0x0;var _0x273c05=_0x5fe1[_0x2faddb];return _0x273c05;};'use strict';var EventEmitter=require(_0x15fe('0x0'));var ChatMessage=require(_0x15fe('0x1'))['db'][_0x15fe('0x2')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x15fe('0x3'),'afterUpdate':'update','afterDestroy':_0x15fe('0x4')};function emitEvent(_0x63ff21){return function(_0x255767,_0x2da296,_0xb72be2){ChatMessageEvents[_0x15fe('0x5')](_0x63ff21+':'+_0x255767['id'],_0x255767);ChatMessageEvents['emit'](_0x63ff21,_0x255767);_0xb72be2(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatMessage[_0x15fe('0x6')](e,emitEvent(event));}}module[_0x15fe('0x7')]=ChatMessageEvents;
\ No newline at end of file
index fa7db0a..8e9ea48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x809e=['bluebird','request-promise','path','../../config/environment','./chatMessage.attributes','exports','define','ChatMessage','chat_messages','fti_chat_messages','FULLTEXT','get','direction','toLowerCase','isNil','UserId','ChatInteraction','findOne','ChatInteractionId','then','createdAt','catch','error','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment'];(function(_0x441f4c,_0x21b828){var _0x23d9b0=function(_0x2d3ad6){while(--_0x2d3ad6){_0x441f4c['push'](_0x441f4c['shift']());}};_0x23d9b0(++_0x21b828);}(_0x809e,0x1e8));var _0xe809=function(_0x38f9ec,_0xcbb90d){_0x38f9ec=_0x38f9ec-0x0;var _0x36b2e7=_0x809e[_0x38f9ec];return _0x36b2e7;};'use strict';var _=require(_0xe809('0x0'));var util=require(_0xe809('0x1'));var logger=require(_0xe809('0x2'))(_0xe809('0x3'));var moment=require(_0xe809('0x4'));var BPromise=require(_0xe809('0x5'));var rp=require(_0xe809('0x6'));var fs=require('fs');var path=require(_0xe809('0x7'));var rimraf=require('rimraf');var config=require(_0xe809('0x8'));var attributes=require(_0xe809('0x9'));module[_0xe809('0xa')]=function(_0x5578b0,_0x26832e){return _0x5578b0[_0xe809('0xb')](_0xe809('0xc'),attributes,{'tableName':_0xe809('0xd'),'paranoid':![],'indexes':[{'name':_0xe809('0xe'),'fields':['body'],'type':_0xe809('0xf')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x474c98,_0x46514a,_0x3da1b0){var _0x252fd1=_0x5578b0['models'];var _0x10578f=_0x474c98[_0xe809('0x10')]({'plain':!![]});if(_0x10578f[_0xe809('0x11')][_0xe809('0x12')]()==='in'||_0x10578f[_0xe809('0x11')]['toLowerCase']()==='out'&&!_0x10578f['secret']&&!_[_0xe809('0x13')](_0x10578f[_0xe809('0x14')])){_0x252fd1[_0xe809('0x15')][_0xe809('0x16')]({'where':{'id':_0x10578f[_0xe809('0x17')]}})[_0xe809('0x18')](function(_0x2a642f){if(_0x2a642f){_0x2a642f['update']({'lastMsgAt':_0x10578f[_0xe809('0x19')],'lastMsgDirection':_0x10578f['direction']['toLowerCase']()});}})[_0xe809('0x1a')](function(_0x23471b){console[_0xe809('0x1b')](_0x23471b);});}_0x3da1b0();}},'charset':'utf8mb4','collate':_0xe809('0x1c')});};
\ No newline at end of file
+var _0xb64a=['./chatMessage.attributes','define','ChatMessage','chat_messages','fti_chat_messages','body','FULLTEXT','get','direction','toLowerCase','out','isNil','UserId','ChatInteraction','findOne','ChatInteractionId','then','update','createdAt','catch','error','utf8mb4','lodash','util','../../config/logger','api','request-promise','path','rimraf'];(function(_0x34d918,_0x1478d5){var _0x44933d=function(_0x5c3d85){while(--_0x5c3d85){_0x34d918['push'](_0x34d918['shift']());}};_0x44933d(++_0x1478d5);}(_0xb64a,0x6d));var _0xab64=function(_0x4ddf99,_0x63ecf5){_0x4ddf99=_0x4ddf99-0x0;var _0x3eb645=_0xb64a[_0x4ddf99];return _0x3eb645;};'use strict';var _=require(_0xab64('0x0'));var util=require(_0xab64('0x1'));var logger=require(_0xab64('0x2'))(_0xab64('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xab64('0x4'));var fs=require('fs');var path=require(_0xab64('0x5'));var rimraf=require(_0xab64('0x6'));var config=require('../../config/environment');var attributes=require(_0xab64('0x7'));module['exports']=function(_0x4e5e2f,_0xe34e56){return _0x4e5e2f[_0xab64('0x8')](_0xab64('0x9'),attributes,{'tableName':_0xab64('0xa'),'paranoid':![],'indexes':[{'name':_0xab64('0xb'),'fields':[_0xab64('0xc')],'type':_0xab64('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x2c9362,_0x1410b7,_0x12930f){var _0x2c3e9d=_0x4e5e2f['models'];var _0x2b57b0=_0x2c9362[_0xab64('0xe')]({'plain':!![]});if(_0x2b57b0[_0xab64('0xf')][_0xab64('0x10')]()==='in'||_0x2b57b0[_0xab64('0xf')][_0xab64('0x10')]()===_0xab64('0x11')&&!_0x2b57b0['secret']&&!_[_0xab64('0x12')](_0x2b57b0[_0xab64('0x13')])){_0x2c3e9d[_0xab64('0x14')][_0xab64('0x15')]({'where':{'id':_0x2b57b0[_0xab64('0x16')]}})[_0xab64('0x17')](function(_0x45e7df){if(_0x45e7df){_0x45e7df[_0xab64('0x18')]({'lastMsgAt':_0x2b57b0[_0xab64('0x19')],'lastMsgDirection':_0x2b57b0[_0xab64('0xf')][_0xab64('0x10')]()});}})[_0xab64('0x1a')](function(_0x36f150){console[_0xab64('0x1b')](_0x36f150);});}_0x12930f();}},'charset':_0xab64('0x1c'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 28c87bc..d3c72ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6222=['catch','ChatMessage','create','options','CreateChatMessage','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','redis','defaults','socket.io-emitter','register','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x6222,0xb3));var _0x2622=function(_0x5a283d,_0x40f58a){_0x5a283d=_0x5a283d-0x0;var _0x1c5fef=_0x6222[_0x5a283d];return _0x1c5fef;};'use strict';var _=require(_0x2622('0x0'));var util=require(_0x2622('0x1'));var moment=require(_0x2622('0x2'));var BPromise=require('bluebird');var rs=require(_0x2622('0x3'));var fs=require('fs');var Redis=require(_0x2622('0x4'));var db=require(_0x2622('0x5'))['db'];var utils=require(_0x2622('0x6'));var logger=require(_0x2622('0x7'))(_0x2622('0x8'));var config=require('../../config/environment');var jayson=require(_0x2622('0x9'));var client=jayson[_0x2622('0xa')]['http']({'port':0x232a});config[_0x2622('0xb')]=_[_0x2622('0xc')](config[_0x2622('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x2622('0xd'))(new Redis(config[_0x2622('0xb')]));require('./chatMessage.socket')[_0x2622('0xe')](socket);function respondWithRpcPromise(_0x1be18a,_0x305901,_0x305759){return new BPromise(function(_0x57fa85,_0x3d99cd){return client['request'](_0x1be18a,_0x305759)[_0x2622('0xf')](function(_0x44bc8b){logger[_0x2622('0x10')](_0x2622('0x11'),_0x305901,_0x2622('0x12'));logger[_0x2622('0x13')]('ChatMessage,\x20%s,\x20%s,\x20%s',_0x305901,'request\x20sent',JSON[_0x2622('0x14')](_0x44bc8b));if(_0x44bc8b[_0x2622('0x15')]){if(_0x44bc8b['error']['code']===0x1f4){logger[_0x2622('0x15')]('ChatMessage,\x20%s,\x20%s',_0x305901,_0x44bc8b['error'][_0x2622('0x16')]);return _0x3d99cd(_0x44bc8b[_0x2622('0x15')]['message']);}logger[_0x2622('0x15')]('ChatMessage,\x20%s,\x20%s',_0x305901,_0x44bc8b['error'][_0x2622('0x16')]);return _0x57fa85(_0x44bc8b[_0x2622('0x15')][_0x2622('0x16')]);}else{logger[_0x2622('0x10')](_0x2622('0x11'),_0x305901,'request\x20sent');_0x57fa85(_0x44bc8b[_0x2622('0x17')]['message']);}})[_0x2622('0x18')](function(_0x737186){logger['error']('ChatMessage,\x20%s,\x20%s',_0x305901,_0x737186);_0x3d99cd(_0x737186);});});}exports['CreateChatMessage']=function(_0x172c25){var _0x19f32e=this;return new Promise(function(_0x1915e4,_0x21ef00){return db[_0x2622('0x19')][_0x2622('0x1a')](_0x172c25['body'],{'raw':_0x172c25[_0x2622('0x1b')]?_0x172c25[_0x2622('0x1b')]['raw']===undefined?!![]:![]:!![]})[_0x2622('0xf')](function(_0x4ce4ff){logger['info'](_0x2622('0x1c'),_0x172c25);logger['debug'](_0x2622('0x1c'),_0x172c25,JSON[_0x2622('0x14')](_0x4ce4ff));_0x1915e4(_0x4ce4ff);})[_0x2622('0x18')](function(_0x2c8d13){logger[_0x2622('0x15')](_0x2622('0x1c'),_0x2c8d13[_0x2622('0x16')],_0x172c25);_0x21ef00(_0x19f32e[_0x2622('0x15')](0x1f4,_0x2c8d13[_0x2622('0x16')]));});});};
\ No newline at end of file
+var _0x99f3=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','localhost','socket.io-emitter','./chatMessage.socket','register','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','catch','CreateChatMessage','ChatMessage','create','options','raw','util','moment','bluebird'];(function(_0x4656c9,_0x4c690f){var _0x3e71cc=function(_0x12d183){while(--_0x12d183){_0x4656c9['push'](_0x4656c9['shift']());}};_0x3e71cc(++_0x4c690f);}(_0x99f3,0xbd));var _0x399f=function(_0x1aab89,_0x40e92d){_0x1aab89=_0x1aab89-0x0;var _0x192afe=_0x99f3[_0x1aab89];return _0x192afe;};'use strict';var _=require('lodash');var util=require(_0x399f('0x0'));var moment=require(_0x399f('0x1'));var BPromise=require(_0x399f('0x2'));var rs=require(_0x399f('0x3'));var fs=require('fs');var Redis=require(_0x399f('0x4'));var db=require(_0x399f('0x5'))['db'];var utils=require(_0x399f('0x6'));var logger=require(_0x399f('0x7'))(_0x399f('0x8'));var config=require('../../config/environment');var jayson=require(_0x399f('0x9'));var client=jayson[_0x399f('0xa')][_0x399f('0xb')]({'port':0x232a});config[_0x399f('0xc')]=_['defaults'](config[_0x399f('0xc')],{'host':_0x399f('0xd'),'port':0x18eb});var socket=require(_0x399f('0xe'))(new Redis(config[_0x399f('0xc')]));require(_0x399f('0xf'))[_0x399f('0x10')](socket);function respondWithRpcPromise(_0x572e16,_0x5ca12c,_0xf99495){return new BPromise(function(_0x3be85d,_0x120a0a){return client[_0x399f('0x11')](_0x572e16,_0xf99495)[_0x399f('0x12')](function(_0x68931c){logger[_0x399f('0x13')](_0x399f('0x14'),_0x5ca12c,_0x399f('0x15'));logger[_0x399f('0x16')]('ChatMessage,\x20%s,\x20%s,\x20%s',_0x5ca12c,_0x399f('0x15'),JSON[_0x399f('0x17')](_0x68931c));if(_0x68931c['error']){if(_0x68931c[_0x399f('0x18')]['code']===0x1f4){logger['error'](_0x399f('0x14'),_0x5ca12c,_0x68931c[_0x399f('0x18')][_0x399f('0x19')]);return _0x120a0a(_0x68931c[_0x399f('0x18')][_0x399f('0x19')]);}logger['error'](_0x399f('0x14'),_0x5ca12c,_0x68931c[_0x399f('0x18')][_0x399f('0x19')]);return _0x3be85d(_0x68931c[_0x399f('0x18')][_0x399f('0x19')]);}else{logger[_0x399f('0x13')]('ChatMessage,\x20%s,\x20%s',_0x5ca12c,_0x399f('0x15'));_0x3be85d(_0x68931c['result']['message']);}})[_0x399f('0x1a')](function(_0x44e446){logger[_0x399f('0x18')](_0x399f('0x14'),_0x5ca12c,_0x44e446);_0x120a0a(_0x44e446);});});}exports[_0x399f('0x1b')]=function(_0x1fc0f5){var _0x3c8b77=this;return new Promise(function(_0x523d4c,_0x50c537){return db[_0x399f('0x1c')][_0x399f('0x1d')](_0x1fc0f5['body'],{'raw':_0x1fc0f5[_0x399f('0x1e')]?_0x1fc0f5[_0x399f('0x1e')][_0x399f('0x1f')]===undefined?!![]:![]:!![]})[_0x399f('0x12')](function(_0x5e8b5f){logger[_0x399f('0x13')]('CreateChatMessage',_0x1fc0f5);logger[_0x399f('0x16')]('CreateChatMessage',_0x1fc0f5,JSON[_0x399f('0x17')](_0x5e8b5f));_0x523d4c(_0x5e8b5f);})[_0x399f('0x1a')](function(_0x5d9139){logger[_0x399f('0x18')](_0x399f('0x1b'),_0x5d9139[_0x399f('0x19')],_0x1fc0f5);_0x50c537(_0x3c8b77[_0x399f('0x18')](0x1f4,_0x5d9139[_0x399f('0x19')]));});});};
\ No newline at end of file
index 8665e7b..760af80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14f5=['update','emit','removeListener','register','length','chatMessage:','save'];(function(_0x1fcbcc,_0xadd85e){var _0x2f2228=function(_0x480b5e){while(--_0x480b5e){_0x1fcbcc['push'](_0x1fcbcc['shift']());}};_0x2f2228(++_0xadd85e);}(_0x14f5,0xae));var _0x514f=function(_0x45cdce,_0x5529e8){_0x45cdce=_0x45cdce-0x0;var _0x9c4a50=_0x14f5[_0x45cdce];return _0x9c4a50;};'use strict';var ChatMessageEvents=require('./chatMessage.events');var events=[_0x514f('0x0'),'remove',_0x514f('0x1')];function createListener(_0x2e8eb2,_0x12d5e2){return function(_0x5281a3){_0x12d5e2[_0x514f('0x2')](_0x2e8eb2,_0x5281a3);};}function removeListener(_0x2443e8,_0x483c2a){return function(){ChatMessageEvents[_0x514f('0x3')](_0x2443e8,_0x483c2a);};}exports[_0x514f('0x4')]=function(_0xc2ca56){for(var _0x434452=0x0,_0x463985=events[_0x514f('0x5')];_0x434452<_0x463985;_0x434452++){var _0xdb9614=events[_0x434452];var _0x4a5497=createListener(_0x514f('0x6')+_0xdb9614,_0xc2ca56);ChatMessageEvents['on'](_0xdb9614,_0x4a5497);}};
\ No newline at end of file
+var _0x44e8=['update','removeListener','register','length','chatMessage:','./chatMessage.events'];(function(_0x3c3eb7,_0x55343d){var _0x108733=function(_0x5bd6f6){while(--_0x5bd6f6){_0x3c3eb7['push'](_0x3c3eb7['shift']());}};_0x108733(++_0x55343d);}(_0x44e8,0xd7));var _0x844e=function(_0x34be5a,_0x4d8fd5){_0x34be5a=_0x34be5a-0x0;var _0x171608=_0x44e8[_0x34be5a];return _0x171608;};'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
index 280ecb2..ceb9971 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7ce=['Router','fs-extra','../../components/auth/service','../../config/environment','./chatMessage.controller','get','index','/describe','describe','/:id','show','post','tracked','chat','chatmessage:create','create','update','put','/:id/accept','isAuthenticated','reject','delete','exports','util','path','connect-timeout','express'];(function(_0x106210,_0x29f230){var _0xf02bb5=function(_0x53c49a){while(--_0x53c49a){_0x106210['push'](_0x106210['shift']());}};_0xf02bb5(++_0x29f230);}(_0xb7ce,0x15b));var _0xeb7c=function(_0x299f5e,_0x485b97){_0x299f5e=_0x299f5e-0x0;var _0x55fded=_0xb7ce[_0x299f5e];return _0x55fded;};'use strict';var multer=require('multer');var util=require(_0xeb7c('0x0'));var path=require(_0xeb7c('0x1'));var timeout=require(_0xeb7c('0x2'));var express=require(_0xeb7c('0x3'));var router=express[_0xeb7c('0x4')]();var fs_extra=require(_0xeb7c('0x5'));var auth=require(_0xeb7c('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xeb7c('0x7'));var controller=require(_0xeb7c('0x8'));router[_0xeb7c('0x9')]('/',auth['isAuthenticated'](),controller[_0xeb7c('0xa')]);router[_0xeb7c('0x9')](_0xeb7c('0xb'),auth['isAuthenticated'](),controller[_0xeb7c('0xc')]);router[_0xeb7c('0x9')](_0xeb7c('0xd'),auth['isAuthenticated'](),controller[_0xeb7c('0xe')]);router[_0xeb7c('0xf')]('/',auth['isAuthenticated'](),interaction[_0xeb7c('0x10')](_0xeb7c('0x11'),_0xeb7c('0x12')),controller[_0xeb7c('0x13')]);router['put'](_0xeb7c('0xd'),controller[_0xeb7c('0x14')]);router[_0xeb7c('0x15')](_0xeb7c('0x16'),auth['isAuthenticated'](),controller['accept']);router['put']('/:id/reject',auth[_0xeb7c('0x17')](),controller[_0xeb7c('0x18')]);router[_0xeb7c('0x19')](_0xeb7c('0xd'),auth[_0xeb7c('0x17')](),controller['destroy']);module[_0xeb7c('0x1a')]=router;
\ No newline at end of file
+var _0xcce9=['connect-timeout','Router','fs-extra','./chatMessage.controller','isAuthenticated','index','get','/describe','describe','/:id','show','post','tracked','chat','chatmessage:create','create','accept','put','/:id/reject','reject','delete','exports','util','path'];(function(_0x5a776b,_0x46f785){var _0xbbef59=function(_0x38313e){while(--_0x38313e){_0x5a776b['push'](_0x5a776b['shift']());}};_0xbbef59(++_0x46f785);}(_0xcce9,0x166));var _0x9cce=function(_0x2bdf36,_0xbe2d9a){_0x2bdf36=_0x2bdf36-0x0;var _0x3e6c85=_0xcce9[_0x2bdf36];return _0x3e6c85;};'use strict';var multer=require('multer');var util=require(_0x9cce('0x0'));var path=require(_0x9cce('0x1'));var timeout=require(_0x9cce('0x2'));var express=require('express');var router=express[_0x9cce('0x3')]();var fs_extra=require(_0x9cce('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x9cce('0x5'));router['get']('/',auth[_0x9cce('0x6')](),controller[_0x9cce('0x7')]);router[_0x9cce('0x8')](_0x9cce('0x9'),auth[_0x9cce('0x6')](),controller[_0x9cce('0xa')]);router[_0x9cce('0x8')](_0x9cce('0xb'),auth[_0x9cce('0x6')](),controller[_0x9cce('0xc')]);router[_0x9cce('0xd')]('/',auth[_0x9cce('0x6')](),interaction[_0x9cce('0xe')](_0x9cce('0xf'),_0x9cce('0x10')),controller[_0x9cce('0x11')]);router['put'](_0x9cce('0xb'),controller['update']);router['put']('/:id/accept',auth[_0x9cce('0x6')](),controller[_0x9cce('0x12')]);router[_0x9cce('0x13')](_0x9cce('0x14'),auth[_0x9cce('0x6')](),controller[_0x9cce('0x15')]);router[_0x9cce('0x16')](_0x9cce('0xb'),auth[_0x9cce('0x6')](),controller['destroy']);module[_0x9cce('0x17')]=router;
\ No newline at end of file
index 590ecce..81160e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['medium','TEXT','exports'];(function(_0xf1e681,_0x566433){var _0x54bfd7=function(_0x41725c){while(--_0x41725c){_0xf1e681['push'](_0xf1e681['shift']());}};_0x54bfd7(++_0x566433);}(_0x5f66,0x1a0));var _0x65f6=function(_0x164eca,_0x555e28){_0x164eca=_0x164eca-0x0;var _0x2ce562=_0x5f66[_0x164eca];return _0x2ce562;};'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 _0x2032=['medium','exports','TEXT'];(function(_0x3a9468,_0x2b6266){var _0x1d2345=function(_0x499728){while(--_0x499728){_0x3a9468['push'](_0x3a9468['shift']());}};_0x1d2345(++_0x2b6266);}(_0x2032,0xd9));var _0x2203=function(_0x54f35f,_0x2f7bd1){_0x54f35f=_0x54f35f-0x0;var _0x3bf00c=_0x2032[_0x54f35f];return _0x3bf00c;};'use strict';var Sequelize=require('sequelize');module[_0x2203('0x0')]={'body':{'type':Sequelize[_0x2203('0x1')](_0x2203('0x2')),'allowNull':![]},'plainBody':{'type':Sequelize['TEXT'](_0x2203('0x2')),'allowNull':![]}};
\ No newline at end of file
index 273268d..ce9c6e0 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(_0x31e29a,_0x349c9b){var _0x32d892=function(_0x41cc86){while(--_0x41cc86){_0x31e29a['push'](_0x31e29a['shift']());}};_0x32d892(++_0x349c9b);}(_0x7a54,0x106));var _0x47a5=function(_0x25983d,_0x165a82){_0x25983d=_0x25983d-0x0;var _0x16b797=_0x7a54[_0x25983d];return _0x16b797;};'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(_0x5a4fe9,_0x75770e){var _0x3b7e95=function(_0x3e338b){while(--_0x3e338b){_0x5a4fe9['push'](_0x5a4fe9['shift']());}};_0x3b7e95(++_0x75770e);}(_0x9957,0x93));var _0x7995=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x9957[_0x2dafbe];return _0x58a45a;};'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 8a0a762..61ac6f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91c6=['hook','events','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x585b69,_0x110cdf){var _0x2a8c6f=function(_0x82b603){while(--_0x82b603){_0x585b69['push'](_0x585b69['shift']());}};_0x2a8c6f(++_0x110cdf);}(_0x91c6,0xf9));var _0x691c=function(_0x15f876,_0x2e8f05){_0x15f876=_0x15f876-0x0;var _0x255c66=_0x91c6[_0x15f876];return _0x255c66;};'use strict';var EventEmitter=require(_0x691c('0x0'));var ChatOfflineMessage=require('../../mysqldb')['db']['ChatOfflineMessage'];var ChatOfflineMessageEvents=new EventEmitter();ChatOfflineMessageEvents[_0x691c('0x1')](0x0);var events={'afterCreate':_0x691c('0x2'),'afterUpdate':_0x691c('0x3'),'afterDestroy':_0x691c('0x4')};function emitEvent(_0xa7799c){return function(_0x4944ce,_0xa14528,_0x10c5df){ChatOfflineMessageEvents[_0x691c('0x5')](_0xa7799c+':'+_0x4944ce['id'],_0x4944ce);ChatOfflineMessageEvents[_0x691c('0x5')](_0xa7799c,_0x4944ce);_0x10c5df(null);};}for(var e in events){if(events[_0x691c('0x6')](e)){var event=events[e];ChatOfflineMessage[_0x691c('0x7')](e,emitEvent(event));}}module['exports']=ChatOfflineMessageEvents;
\ No newline at end of file
+var _0xbd4a=['exports','events','../../mysqldb','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0xbd4a,0xbf));var _0xabd4=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xbd4a[_0x122ef9];return _0x42fba0;};'use strict';var EventEmitter=require(_0xabd4('0x0'));var ChatOfflineMessage=require(_0xabd4('0x1'))['db']['ChatOfflineMessage'];var ChatOfflineMessageEvents=new EventEmitter();ChatOfflineMessageEvents[_0xabd4('0x2')](0x0);var events={'afterCreate':_0xabd4('0x3'),'afterUpdate':_0xabd4('0x4'),'afterDestroy':_0xabd4('0x5')};function emitEvent(_0x10289f){return function(_0x5624b0,_0xb4b882,_0x2096e1){ChatOfflineMessageEvents[_0xabd4('0x6')](_0x10289f+':'+_0x5624b0['id'],_0x5624b0);ChatOfflineMessageEvents['emit'](_0x10289f,_0x5624b0);_0x2096e1(null);};}for(var e in events){if(events[_0xabd4('0x7')](e)){var event=events[e];ChatOfflineMessage[_0xabd4('0x8')](e,emitEvent(event));}}module[_0xabd4('0x9')]=ChatOfflineMessageEvents;
\ No newline at end of file
index 2d0e116..9db58ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4624=['chat_offline_messages','utf8mb4_unicode_ci','./chatOfflineMessage.attributes','exports','define'];(function(_0x121350,_0x361f4d){var _0x2e21c7=function(_0x3b6d51){while(--_0x3b6d51){_0x121350['push'](_0x121350['shift']());}};_0x2e21c7(++_0x361f4d);}(_0x4624,0x110));var _0x4462=function(_0x51980b,_0x2fed27){_0x51980b=_0x51980b-0x0;var _0x22dbf4=_0x4624[_0x51980b];return _0x22dbf4;};'use strict';var attributes=require(_0x4462('0x0'));module[_0x4462('0x1')]=function(_0x44154d){return _0x44154d[_0x4462('0x2')]('ChatOfflineMessage',attributes,{'tableName':_0x4462('0x3'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x4462('0x4')});};
\ No newline at end of file
+var _0xf92f=['exports','define','ChatOfflineMessage','utf8mb4','utf8mb4_unicode_ci','./chatOfflineMessage.attributes'];(function(_0x14476b,_0xd1a7a4){var _0x24e2e8=function(_0x52ed26){while(--_0x52ed26){_0x14476b['push'](_0x14476b['shift']());}};_0x24e2e8(++_0xd1a7a4);}(_0xf92f,0x113));var _0xff92=function(_0xeae8b8,_0x565a3c){_0xeae8b8=_0xeae8b8-0x0;var _0x440e11=_0xf92f[_0xeae8b8];return _0x440e11;};'use strict';var attributes=require(_0xff92('0x0'));module[_0xff92('0x1')]=function(_0x1192e3){return _0x1192e3[_0xff92('0x2')](_0xff92('0x3'),attributes,{'tableName':'chat_offline_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xff92('0x4'),'collate':_0xff92('0x5')});};
\ No newline at end of file
index 78f7140..d6b4c17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4a7=['code','message','result','lodash','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','info','ChatOfflineMessage,\x20%s,\x20%s','stringify','error'];(function(_0x1a8f3e,_0x5bc3ff){var _0x1c8b1c=function(_0x37c049){while(--_0x37c049){_0x1a8f3e['push'](_0x1a8f3e['shift']());}};_0x1c8b1c(++_0x5bc3ff);}(_0xc4a7,0x1ac));var _0x7c4a=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0xc4a7[_0x4b369d];return _0x571a98;};'use strict';var _=require(_0x7c4a('0x0'));var util=require('util');var moment=require(_0x7c4a('0x1'));var BPromise=require(_0x7c4a('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7c4a('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x7c4a('0x4'));var logger=require(_0x7c4a('0x5'))(_0x7c4a('0x6'));var config=require(_0x7c4a('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x7c4a('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3b0b97,_0x5eb0cd,_0x347403){return new BPromise(function(_0x4e1692,_0x480d7f){return client[_0x7c4a('0x9')](_0x3b0b97,_0x347403)['then'](function(_0x5a23c9){logger[_0x7c4a('0xa')](_0x7c4a('0xb'),_0x5eb0cd,'request\x20sent');logger['debug']('ChatOfflineMessage,\x20%s,\x20%s,\x20%s',_0x5eb0cd,'request\x20sent',JSON[_0x7c4a('0xc')](_0x5a23c9));if(_0x5a23c9['error']){if(_0x5a23c9[_0x7c4a('0xd')][_0x7c4a('0xe')]===0x1f4){logger[_0x7c4a('0xd')](_0x7c4a('0xb'),_0x5eb0cd,_0x5a23c9['error'][_0x7c4a('0xf')]);return _0x480d7f(_0x5a23c9[_0x7c4a('0xd')]['message']);}logger[_0x7c4a('0xd')]('ChatOfflineMessage,\x20%s,\x20%s',_0x5eb0cd,_0x5a23c9[_0x7c4a('0xd')][_0x7c4a('0xf')]);return _0x4e1692(_0x5a23c9[_0x7c4a('0xd')][_0x7c4a('0xf')]);}else{logger[_0x7c4a('0xa')](_0x7c4a('0xb'),_0x5eb0cd,'request\x20sent');_0x4e1692(_0x5a23c9[_0x7c4a('0x10')][_0x7c4a('0xf')]);}})['catch'](function(_0x3cb2df){logger[_0x7c4a('0xd')](_0x7c4a('0xb'),_0x5eb0cd,_0x3cb2df);_0x480d7f(_0x3cb2df);});});}
\ No newline at end of file
+var _0x223c=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','ChatOfflineMessage,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis'];(function(_0x46b3c2,_0x141c53){var _0x3f4d7c=function(_0x2c05a8){while(--_0x2c05a8){_0x46b3c2['push'](_0x46b3c2['shift']());}};_0x3f4d7c(++_0x141c53);}(_0x223c,0x1c9));var _0xc223=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x223c[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0xc223('0x0'));var util=require('util');var moment=require(_0xc223('0x1'));var BPromise=require(_0xc223('0x2'));var rs=require(_0xc223('0x3'));var fs=require('fs');var Redis=require(_0xc223('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xc223('0x5'));var logger=require(_0xc223('0x6'))(_0xc223('0x7'));var config=require(_0xc223('0x8'));var jayson=require(_0xc223('0x9'));var client=jayson[_0xc223('0xa')][_0xc223('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4b13e2,_0x45c2b1,_0x4871c5){return new BPromise(function(_0x422dbe,_0x473f34){return client['request'](_0x4b13e2,_0x4871c5)[_0xc223('0xc')](function(_0x107a5f){logger[_0xc223('0xd')](_0xc223('0xe'),_0x45c2b1,'request\x20sent');logger['debug']('ChatOfflineMessage,\x20%s,\x20%s,\x20%s',_0x45c2b1,_0xc223('0xf'),JSON['stringify'](_0x107a5f));if(_0x107a5f['error']){if(_0x107a5f[_0xc223('0x10')][_0xc223('0x11')]===0x1f4){logger['error'](_0xc223('0xe'),_0x45c2b1,_0x107a5f[_0xc223('0x10')][_0xc223('0x12')]);return _0x473f34(_0x107a5f[_0xc223('0x10')][_0xc223('0x12')]);}logger[_0xc223('0x10')]('ChatOfflineMessage,\x20%s,\x20%s',_0x45c2b1,_0x107a5f[_0xc223('0x10')][_0xc223('0x12')]);return _0x422dbe(_0x107a5f[_0xc223('0x10')][_0xc223('0x12')]);}else{logger['info']('ChatOfflineMessage,\x20%s,\x20%s',_0x45c2b1,_0xc223('0xf'));_0x422dbe(_0x107a5f[_0xc223('0x13')][_0xc223('0x12')]);}})[_0xc223('0x14')](function(_0x34b00e){logger[_0xc223('0x10')](_0xc223('0xe'),_0x45c2b1,_0x34b00e);_0x473f34(_0x34b00e);});});}
\ No newline at end of file
index a660d63..85c3a8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cc7=['delete','destroy','exports','path','connect-timeout','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatOfflineMessage.controller','isAuthenticated','index','get','/describe','describe','/:id','show','post','create','put','update'];(function(_0x9dc9b7,_0x35e059){var _0x22e28e=function(_0x5e0e18){while(--_0x5e0e18){_0x9dc9b7['push'](_0x9dc9b7['shift']());}};_0x22e28e(++_0x35e059);}(_0x2cc7,0xa3));var _0x72cc=function(_0x19a8bd,_0x498641){_0x19a8bd=_0x19a8bd-0x0;var _0x16199b=_0x2cc7[_0x19a8bd];return _0x16199b;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x72cc('0x0'));var timeout=require(_0x72cc('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x72cc('0x2'));var interaction=require(_0x72cc('0x3'));var config=require(_0x72cc('0x4'));var controller=require(_0x72cc('0x5'));router['get']('/',auth[_0x72cc('0x6')](),controller[_0x72cc('0x7')]);router[_0x72cc('0x8')](_0x72cc('0x9'),auth[_0x72cc('0x6')](),controller[_0x72cc('0xa')]);router[_0x72cc('0x8')](_0x72cc('0xb'),auth[_0x72cc('0x6')](),controller[_0x72cc('0xc')]);router[_0x72cc('0xd')]('/',auth['isAuthenticated'](),controller[_0x72cc('0xe')]);router[_0x72cc('0xf')]('/:id',auth[_0x72cc('0x6')](),controller[_0x72cc('0x10')]);router[_0x72cc('0x11')](_0x72cc('0xb'),auth['isAuthenticated'](),controller[_0x72cc('0x12')]);module[_0x72cc('0x13')]=router;
\ No newline at end of file
+var _0x0ddf=['fs-extra','../../components/auth/service','../../components/interaction/service','./chatOfflineMessage.controller','isAuthenticated','get','/describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x44c205,_0x545e76){var _0x31af50=function(_0x4e1656){while(--_0x4e1656){_0x44c205['push'](_0x44c205['shift']());}};_0x31af50(++_0x545e76);}(_0x0ddf,0x102));var _0xf0dd=function(_0xd1bbe3,_0x257565){_0xd1bbe3=_0xd1bbe3-0x0;var _0x4bd8ea=_0x0ddf[_0xd1bbe3];return _0x4bd8ea;};'use strict';var multer=require(_0xf0dd('0x0'));var util=require(_0xf0dd('0x1'));var path=require(_0xf0dd('0x2'));var timeout=require(_0xf0dd('0x3'));var express=require(_0xf0dd('0x4'));var router=express[_0xf0dd('0x5')]();var fs_extra=require(_0xf0dd('0x6'));var auth=require(_0xf0dd('0x7'));var interaction=require(_0xf0dd('0x8'));var config=require('../../config/environment');var controller=require(_0xf0dd('0x9'));router['get']('/',auth[_0xf0dd('0xa')](),controller['index']);router[_0xf0dd('0xb')](_0xf0dd('0xc'),auth[_0xf0dd('0xa')](),controller['describe']);router[_0xf0dd('0xb')](_0xf0dd('0xd'),auth[_0xf0dd('0xa')](),controller[_0xf0dd('0xe')]);router[_0xf0dd('0xf')]('/',auth[_0xf0dd('0xa')](),controller[_0xf0dd('0x10')]);router[_0xf0dd('0x11')](_0xf0dd('0xd'),auth['isAuthenticated'](),controller[_0xf0dd('0x12')]);router[_0xf0dd('0x13')](_0xf0dd('0xd'),auth[_0xf0dd('0xa')](),controller[_0xf0dd('0x14')]);module[_0xf0dd('0x15')]=router;
\ No newline at end of file
index 10bcd3b..e01e783 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0f7=['ENUM','mouseOver','sequelize','STRING'];(function(_0x23e6bb,_0x5c2d69){var _0x1e3b4c=function(_0x1afc46){while(--_0x1afc46){_0x23e6bb['push'](_0x23e6bb['shift']());}};_0x1e3b4c(++_0x5c2d69);}(_0xe0f7,0x142));var _0x7e0f=function(_0x4495f6,_0xaac6bd){_0x4495f6=_0x4495f6-0x0;var _0x3856a8=_0xe0f7[_0x4495f6];return _0x3856a8;};'use strict';var Sequelize=require(_0x7e0f('0x0'));module['exports']={'name':{'type':Sequelize[_0x7e0f('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x7e0f('0x2')](_0x7e0f('0x3'),'timeout'),'defaultValue':_0x7e0f('0x3')},'selector':{'type':Sequelize[_0x7e0f('0x1')]},'timeout':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0xadae=['exports','STRING','ENUM','mouseOver','timeout','INTEGER','sequelize'];(function(_0x249dcd,_0x1ec13d){var _0x2f6020=function(_0x524a53){while(--_0x524a53){_0x249dcd['push'](_0x249dcd['shift']());}};_0x2f6020(++_0x1ec13d);}(_0xadae,0x179));var _0xeada=function(_0x484e36,_0x4482d8){_0x484e36=_0x484e36-0x0;var _0xafc85d=_0xadae[_0x484e36];return _0xafc85d;};'use strict';var Sequelize=require(_0xeada('0x0'));module[_0xeada('0x1')]={'name':{'type':Sequelize[_0xeada('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xeada('0x3')](_0xeada('0x4'),_0xeada('0x5')),'defaultValue':_0xeada('0x4')},'selector':{'type':Sequelize[_0xeada('0x2')]},'timeout':{'type':Sequelize[_0xeada('0x6')]}};
\ No newline at end of file
index d8e7dd0..c6e4e97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85d8=['ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','json','offset','undefined','limit','count','Content-Range','reject','save','update','then','end','stack','name','send','show','params','keys','query','filters','intersection','model','attributes','fields','length','includeAll','include','merge','options','ChatProactiveAction','find','body','catch','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path'];(function(_0x2ee0d6,_0x2562ff){var _0x299d21=function(_0x16cb6c){while(--_0x16cb6c){_0x2ee0d6['push'](_0x2ee0d6['shift']());}};_0x299d21(++_0x2562ff);}(_0x85d8,0x1b0));var _0x885d=function(_0x410140,_0x57d529){_0x410140=_0x410140-0x0;var _0xf0227e=_0x85d8[_0x410140];return _0xf0227e;};'use strict';var emlformat=require(_0x885d('0x0'));var rimraf=require(_0x885d('0x1'));var zipdir=require(_0x885d('0x2'));var jsonpatch=require(_0x885d('0x3'));var rp=require(_0x885d('0x4'));var moment=require('moment');var BPromise=require(_0x885d('0x5'));var Mustache=require(_0x885d('0x6'));var util=require(_0x885d('0x7'));var path=require(_0x885d('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x885d('0x9'));var fs=require('fs');var fs_extra=require(_0x885d('0xa'));var _=require(_0x885d('0xb'));var squel=require(_0x885d('0xc'));var crypto=require(_0x885d('0xd'));var jsforce=require(_0x885d('0xe'));var deskjs=require(_0x885d('0xf'));var toCsv=require(_0x885d('0x10'));var querystring=require(_0x885d('0x11'));var Papa=require(_0x885d('0x12'));var Redis=require(_0x885d('0x13'));var authService=require(_0x885d('0x14'));var qs=require(_0x885d('0x15'));var as=require(_0x885d('0x16'));var hardwareService=require(_0x885d('0x17'));var logger=require(_0x885d('0x18'))(_0x885d('0x19'));var utils=require(_0x885d('0x1a'));var config=require(_0x885d('0x1b'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x28b541,_0x127cd8){_0x127cd8=_0x127cd8||0xcc;return function(_0x495a56){if(_0x495a56){return _0x28b541[_0x885d('0x1c')](_0x127cd8);}return _0x28b541[_0x885d('0x1d')](_0x127cd8)['end']();};}function respondWithResult(_0x527a40,_0x466be5){_0x466be5=_0x466be5||0xc8;return function(_0x3a0ab7){if(_0x3a0ab7){return _0x527a40[_0x885d('0x1d')](_0x466be5)[_0x885d('0x1e')](_0x3a0ab7);}};}function respondWithFilteredResult(_0x2ecb5c,_0x1b837f){return function(_0x5d8bcd){if(_0x5d8bcd){var _0x594a29=typeof _0x1b837f[_0x885d('0x1f')]===_0x885d('0x20')&&typeof _0x1b837f[_0x885d('0x21')]===_0x885d('0x20');var _0x22c285=_0x5d8bcd[_0x885d('0x22')];var _0x1e2a42=_0x594a29?0x0:_0x1b837f[_0x885d('0x1f')];var _0x4b565a=_0x594a29?_0x5d8bcd[_0x885d('0x22')]:_0x1b837f[_0x885d('0x1f')]+_0x1b837f[_0x885d('0x21')];var _0x3cadff;if(_0x4b565a>=_0x22c285){_0x4b565a=_0x22c285;_0x3cadff=0xc8;}else{_0x3cadff=0xce;}_0x2ecb5c[_0x885d('0x1d')](_0x3cadff);return _0x2ecb5c['set'](_0x885d('0x23'),_0x1e2a42+'-'+_0x4b565a+'/'+_0x22c285)[_0x885d('0x1e')](_0x5d8bcd);}return null;};}function patchUpdates(_0x55738d){return function(_0x175e05){try{jsonpatch['apply'](_0x175e05,_0x55738d,!![]);}catch(_0x1bca4b){return BPromise[_0x885d('0x24')](_0x1bca4b);}return _0x175e05[_0x885d('0x25')]();};}function saveUpdates(_0x90589,_0x261c0f){return function(_0x2e76ef){if(_0x2e76ef){return _0x2e76ef[_0x885d('0x26')](_0x90589)[_0x885d('0x27')](function(_0x598b20){return _0x598b20;});}return null;};}function removeEntity(_0x38af62,_0x2b7e32){return function(_0x3032ac){if(_0x3032ac){return _0x3032ac['destroy']()[_0x885d('0x27')](function(){_0x38af62[_0x885d('0x1d')](0xcc)[_0x885d('0x28')]();});}};}function handleEntityNotFound(_0x7dc85b,_0x284faf){return function(_0x3f0955){if(!_0x3f0955){_0x7dc85b[_0x885d('0x1c')](0x194);}return _0x3f0955;};}function handleError(_0x32754e,_0x402440){_0x402440=_0x402440||0x1f4;return function(_0x54e121){logger['error'](_0x54e121[_0x885d('0x29')]);if(_0x54e121['name']){delete _0x54e121[_0x885d('0x2a')];}_0x32754e[_0x885d('0x1d')](_0x402440)[_0x885d('0x2b')](_0x54e121);};}exports[_0x885d('0x2c')]=function(_0x16f4c1,_0x4589ee){var _0x537886={'raw':!![],'where':{'id':_0x16f4c1[_0x885d('0x2d')]['id']}},_0x172d26={};_0x172d26['model']=_[_0x885d('0x2e')](db['ChatProactiveAction']['rawAttributes']);_0x172d26[_0x885d('0x2f')]=_['keys'](_0x16f4c1[_0x885d('0x2f')]);_0x172d26[_0x885d('0x30')]=_[_0x885d('0x31')](_0x172d26[_0x885d('0x32')],_0x172d26[_0x885d('0x2f')]);_0x537886[_0x885d('0x33')]=_['intersection'](_0x172d26[_0x885d('0x32')],qs[_0x885d('0x34')](_0x16f4c1[_0x885d('0x2f')][_0x885d('0x34')]));_0x537886[_0x885d('0x33')]=_0x537886['attributes'][_0x885d('0x35')]?_0x537886[_0x885d('0x33')]:_0x172d26['model'];if(_0x16f4c1[_0x885d('0x2f')][_0x885d('0x36')]){_0x537886[_0x885d('0x37')]=[{'all':!![]}];}_0x537886=_[_0x885d('0x38')]({},_0x537886,_0x16f4c1[_0x885d('0x39')]);return db[_0x885d('0x3a')][_0x885d('0x3b')](_0x537886)[_0x885d('0x27')](handleEntityNotFound(_0x4589ee,null))['then'](respondWithResult(_0x4589ee,null))['catch'](handleError(_0x4589ee,null));};exports['create']=function(_0x488a93,_0x3d6ce7){return db[_0x885d('0x3a')]['create'](_0x488a93[_0x885d('0x3c')],{})['then'](respondWithResult(_0x3d6ce7,0xc9))[_0x885d('0x3d')](handleError(_0x3d6ce7,null));};exports[_0x885d('0x26')]=function(_0x3bc1cc,_0xfc0dbe){if(_0x3bc1cc[_0x885d('0x3c')]['id']){delete _0x3bc1cc[_0x885d('0x3c')]['id'];}return db[_0x885d('0x3a')]['find']({'where':{'id':_0x3bc1cc['params']['id']}})[_0x885d('0x27')](handleEntityNotFound(_0xfc0dbe,null))['then'](saveUpdates(_0x3bc1cc[_0x885d('0x3c')],null))['then'](respondWithResult(_0xfc0dbe,null))['catch'](handleError(_0xfc0dbe,null));};exports[_0x885d('0x3e')]=function(_0x3974d2,_0x112e9a){return db[_0x885d('0x3a')][_0x885d('0x3b')]({'where':{'id':_0x3974d2[_0x885d('0x2d')]['id']}})[_0x885d('0x27')](handleEntityNotFound(_0x112e9a,null))[_0x885d('0x27')](removeEntity(_0x112e9a,null))[_0x885d('0x3d')](handleError(_0x112e9a,null));};
\ No newline at end of file
+var _0x4491=['then','stack','send','keys','rawAttributes','query','filters','intersection','model','attributes','fields','length','includeAll','include','merge','options','ChatProactiveAction','find','create','body','catch','params','destroy','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update'];(function(_0x45927c,_0x26c77f){var _0x11691b=function(_0x419365){while(--_0x419365){_0x45927c['push'](_0x45927c['shift']());}};_0x11691b(++_0x26c77f);}(_0x4491,0x1bb));var _0x1449=function(_0xdb723b,_0x260350){_0xdb723b=_0xdb723b-0x0;var _0xf5d29a=_0x4491[_0xdb723b];return _0xf5d29a;};'use strict';var emlformat=require(_0x1449('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1449('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1449('0x2'));var moment=require(_0x1449('0x3'));var BPromise=require(_0x1449('0x4'));var Mustache=require(_0x1449('0x5'));var util=require(_0x1449('0x6'));var path=require(_0x1449('0x7'));var sox=require('sox');var csv=require(_0x1449('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1449('0x9'));var _=require(_0x1449('0xa'));var squel=require(_0x1449('0xb'));var crypto=require(_0x1449('0xc'));var jsforce=require(_0x1449('0xd'));var deskjs=require(_0x1449('0xe'));var toCsv=require('to-csv');var querystring=require(_0x1449('0xf'));var Papa=require(_0x1449('0x10'));var Redis=require('ioredis');var authService=require(_0x1449('0x11'));var qs=require(_0x1449('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1449('0x13'));var logger=require(_0x1449('0x14'))('api');var utils=require(_0x1449('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x1449('0x16'))['db'];function respondWithStatusCode(_0x3f5424,_0x399815){_0x399815=_0x399815||0xcc;return function(_0x25bce3){if(_0x25bce3){return _0x3f5424[_0x1449('0x17')](_0x399815);}return _0x3f5424[_0x1449('0x18')](_0x399815)[_0x1449('0x19')]();};}function respondWithResult(_0x377c96,_0x267d9a){_0x267d9a=_0x267d9a||0xc8;return function(_0x41b34d){if(_0x41b34d){return _0x377c96[_0x1449('0x18')](_0x267d9a)[_0x1449('0x1a')](_0x41b34d);}};}function respondWithFilteredResult(_0x441344,_0x2cf76c){return function(_0x1ec7e8){if(_0x1ec7e8){var _0x59b128=typeof _0x2cf76c[_0x1449('0x1b')]===_0x1449('0x1c')&&typeof _0x2cf76c['limit']===_0x1449('0x1c');var _0x290b72=_0x1ec7e8[_0x1449('0x1d')];var _0x364878=_0x59b128?0x0:_0x2cf76c[_0x1449('0x1b')];var _0x30a65f=_0x59b128?_0x1ec7e8[_0x1449('0x1d')]:_0x2cf76c[_0x1449('0x1b')]+_0x2cf76c[_0x1449('0x1e')];var _0x2dbae1;if(_0x30a65f>=_0x290b72){_0x30a65f=_0x290b72;_0x2dbae1=0xc8;}else{_0x2dbae1=0xce;}_0x441344[_0x1449('0x18')](_0x2dbae1);return _0x441344[_0x1449('0x1f')](_0x1449('0x20'),_0x364878+'-'+_0x30a65f+'/'+_0x290b72)['json'](_0x1ec7e8);}return null;};}function patchUpdates(_0x108f41){return function(_0x49c4d6){try{jsonpatch[_0x1449('0x21')](_0x49c4d6,_0x108f41,!![]);}catch(_0xaaea1d){return BPromise[_0x1449('0x22')](_0xaaea1d);}return _0x49c4d6[_0x1449('0x23')]();};}function saveUpdates(_0x3a2c85,_0x4dcc1b){return function(_0x4c86b9){if(_0x4c86b9){return _0x4c86b9[_0x1449('0x24')](_0x3a2c85)[_0x1449('0x25')](function(_0x100ac6){return _0x100ac6;});}return null;};}function removeEntity(_0x356d6b,_0x545cee){return function(_0x29e254){if(_0x29e254){return _0x29e254['destroy']()[_0x1449('0x25')](function(){_0x356d6b[_0x1449('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5a8cf0,_0x507a14){return function(_0x1ef1e3){if(!_0x1ef1e3){_0x5a8cf0[_0x1449('0x17')](0x194);}return _0x1ef1e3;};}function handleError(_0x39ad3c,_0x529dae){_0x529dae=_0x529dae||0x1f4;return function(_0x40e7d5){logger['error'](_0x40e7d5[_0x1449('0x26')]);if(_0x40e7d5['name']){delete _0x40e7d5['name'];}_0x39ad3c[_0x1449('0x18')](_0x529dae)[_0x1449('0x27')](_0x40e7d5);};}exports['show']=function(_0xe6900c,_0x5c3fdf){var _0x2836a1={'raw':!![],'where':{'id':_0xe6900c['params']['id']}},_0x36a74a={};_0x36a74a['model']=_[_0x1449('0x28')](db['ChatProactiveAction'][_0x1449('0x29')]);_0x36a74a[_0x1449('0x2a')]=_[_0x1449('0x28')](_0xe6900c[_0x1449('0x2a')]);_0x36a74a[_0x1449('0x2b')]=_[_0x1449('0x2c')](_0x36a74a[_0x1449('0x2d')],_0x36a74a[_0x1449('0x2a')]);_0x2836a1[_0x1449('0x2e')]=_[_0x1449('0x2c')](_0x36a74a[_0x1449('0x2d')],qs[_0x1449('0x2f')](_0xe6900c[_0x1449('0x2a')][_0x1449('0x2f')]));_0x2836a1[_0x1449('0x2e')]=_0x2836a1[_0x1449('0x2e')][_0x1449('0x30')]?_0x2836a1['attributes']:_0x36a74a[_0x1449('0x2d')];if(_0xe6900c['query'][_0x1449('0x31')]){_0x2836a1[_0x1449('0x32')]=[{'all':!![]}];}_0x2836a1=_[_0x1449('0x33')]({},_0x2836a1,_0xe6900c[_0x1449('0x34')]);return db[_0x1449('0x35')][_0x1449('0x36')](_0x2836a1)[_0x1449('0x25')](handleEntityNotFound(_0x5c3fdf,null))[_0x1449('0x25')](respondWithResult(_0x5c3fdf,null))['catch'](handleError(_0x5c3fdf,null));};exports['create']=function(_0x59c075,_0x19610c){return db[_0x1449('0x35')][_0x1449('0x37')](_0x59c075[_0x1449('0x38')],{})[_0x1449('0x25')](respondWithResult(_0x19610c,0xc9))[_0x1449('0x39')](handleError(_0x19610c,null));};exports[_0x1449('0x24')]=function(_0x2b7bd8,_0x5a1f92){if(_0x2b7bd8[_0x1449('0x38')]['id']){delete _0x2b7bd8[_0x1449('0x38')]['id'];}return db[_0x1449('0x35')][_0x1449('0x36')]({'where':{'id':_0x2b7bd8[_0x1449('0x3a')]['id']}})[_0x1449('0x25')](handleEntityNotFound(_0x5a1f92,null))['then'](saveUpdates(_0x2b7bd8[_0x1449('0x38')],null))[_0x1449('0x25')](respondWithResult(_0x5a1f92,null))['catch'](handleError(_0x5a1f92,null));};exports[_0x1449('0x3b')]=function(_0x4c8d2a,_0x2ccb90){return db[_0x1449('0x35')][_0x1449('0x36')]({'where':{'id':_0x4c8d2a[_0x1449('0x3a')]['id']}})['then'](handleEntityNotFound(_0x2ccb90,null))[_0x1449('0x25')](removeEntity(_0x2ccb90,null))[_0x1449('0x39')](handleError(_0x2ccb90,null));};
\ No newline at end of file
index 4f0b95b..0651458 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3594=['ChatProactiveAction','chat_proactive_actions','util','../../config/logger','bluebird','request-promise','path','rimraf','./chatProactiveAction.attributes','exports'];(function(_0x20a817,_0x76533f){var _0x5510ae=function(_0x31b869){while(--_0x31b869){_0x20a817['push'](_0x20a817['shift']());}};_0x5510ae(++_0x76533f);}(_0x3594,0xac));var _0x4359=function(_0x24f2e9,_0x4e08e1){_0x24f2e9=_0x24f2e9-0x0;var _0x59272a=_0x3594[_0x24f2e9];return _0x59272a;};'use strict';var _=require('lodash');var util=require(_0x4359('0x0'));var logger=require(_0x4359('0x1'))('api');var moment=require('moment');var BPromise=require(_0x4359('0x2'));var rp=require(_0x4359('0x3'));var fs=require('fs');var path=require(_0x4359('0x4'));var rimraf=require(_0x4359('0x5'));var config=require('../../config/environment');var attributes=require(_0x4359('0x6'));module[_0x4359('0x7')]=function(_0x4edeec,_0x567cfc){return _0x4edeec['define'](_0x4359('0x8'),attributes,{'tableName':_0x4359('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcdd0=['lodash','util','moment','request-promise','ChatProactiveAction','chat_proactive_actions'];(function(_0x44166f,_0x3e71e2){var _0x5f390a=function(_0x4876fb){while(--_0x4876fb){_0x44166f['push'](_0x44166f['shift']());}};_0x5f390a(++_0x3e71e2);}(_0xcdd0,0x16e));var _0x0cdd=function(_0x28d18d,_0x55896b){_0x28d18d=_0x28d18d-0x0;var _0x470640=_0xcdd0[_0x28d18d];return _0x470640;};'use strict';var _=require(_0x0cdd('0x0'));var util=require(_0x0cdd('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x0cdd('0x2'));var BPromise=require('bluebird');var rp=require(_0x0cdd('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./chatProactiveAction.attributes');module['exports']=function(_0x3d6a39,_0x40e0c8){return _0x3d6a39['define'](_0x0cdd('0x4'),attributes,{'tableName':_0x0cdd('0x5'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d094e01..bd829fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeff6=['request','info','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','debug','ChatProactiveAction,\x20%s,\x20%s,\x20%s','error','message','result','catch','util','moment','bluebird','ioredis','../../config/logger','../../config/environment','jayson/promise','client','http'];(function(_0x49f7c5,_0x28b850){var _0x5df162=function(_0x2ee43d){while(--_0x2ee43d){_0x49f7c5['push'](_0x49f7c5['shift']());}};_0x5df162(++_0x28b850);}(_0xeff6,0x114));var _0x6eff=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xeff6[_0x14add3];return _0x4a174f;};'use strict';var _=require('lodash');var util=require(_0x6eff('0x0'));var moment=require(_0x6eff('0x1'));var BPromise=require(_0x6eff('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6eff('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x6eff('0x4'))('rpc');var config=require(_0x6eff('0x5'));var jayson=require(_0x6eff('0x6'));var client=jayson[_0x6eff('0x7')][_0x6eff('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x436d2,_0x277de,_0x3aa012){return new BPromise(function(_0x3580ac,_0x3e11e1){return client[_0x6eff('0x9')](_0x436d2,_0x3aa012)['then'](function(_0x25111c){logger[_0x6eff('0xa')](_0x6eff('0xb'),_0x277de,_0x6eff('0xc'));logger[_0x6eff('0xd')](_0x6eff('0xe'),_0x277de,'request\x20sent',JSON['stringify'](_0x25111c));if(_0x25111c[_0x6eff('0xf')]){if(_0x25111c['error']['code']===0x1f4){logger[_0x6eff('0xf')](_0x6eff('0xb'),_0x277de,_0x25111c[_0x6eff('0xf')]['message']);return _0x3e11e1(_0x25111c['error'][_0x6eff('0x10')]);}logger[_0x6eff('0xf')](_0x6eff('0xb'),_0x277de,_0x25111c[_0x6eff('0xf')][_0x6eff('0x10')]);return _0x3580ac(_0x25111c[_0x6eff('0xf')][_0x6eff('0x10')]);}else{logger['info'](_0x6eff('0xb'),_0x277de,_0x6eff('0xc'));_0x3580ac(_0x25111c[_0x6eff('0x11')][_0x6eff('0x10')]);}})[_0x6eff('0x12')](function(_0x1e4db4){logger[_0x6eff('0xf')](_0x6eff('0xb'),_0x277de,_0x1e4db4);_0x3e11e1(_0x1e4db4);});});}
\ No newline at end of file
+var _0xe926=['catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','debug','ChatProactiveAction,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x423cac,_0xf5c125){var _0x36fb02=function(_0x662b80){while(--_0x662b80){_0x423cac['push'](_0x423cac['shift']());}};_0x36fb02(++_0xf5c125);}(_0xe926,0x121));var _0x6e92=function(_0x596f6e,_0x3f8857){_0x596f6e=_0x596f6e-0x0;var _0x1e0803=_0xe926[_0x596f6e];return _0x1e0803;};'use strict';var _=require(_0x6e92('0x0'));var util=require(_0x6e92('0x1'));var moment=require('moment');var BPromise=require(_0x6e92('0x2'));var rs=require(_0x6e92('0x3'));var fs=require('fs');var Redis=require(_0x6e92('0x4'));var db=require(_0x6e92('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x6e92('0x6'))(_0x6e92('0x7'));var config=require(_0x6e92('0x8'));var jayson=require(_0x6e92('0x9'));var client=jayson[_0x6e92('0xa')][_0x6e92('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x43e0b8,_0x4a47d2,_0x3dd13e){return new BPromise(function(_0x40629a,_0x58dd14){return client[_0x6e92('0xc')](_0x43e0b8,_0x3dd13e)[_0x6e92('0xd')](function(_0x540ea4){logger[_0x6e92('0xe')](_0x6e92('0xf'),_0x4a47d2,_0x6e92('0x10'));logger[_0x6e92('0x11')](_0x6e92('0x12'),_0x4a47d2,_0x6e92('0x10'),JSON[_0x6e92('0x13')](_0x540ea4));if(_0x540ea4[_0x6e92('0x14')]){if(_0x540ea4['error'][_0x6e92('0x15')]===0x1f4){logger[_0x6e92('0x14')](_0x6e92('0xf'),_0x4a47d2,_0x540ea4[_0x6e92('0x14')][_0x6e92('0x16')]);return _0x58dd14(_0x540ea4[_0x6e92('0x14')]['message']);}logger[_0x6e92('0x14')]('ChatProactiveAction,\x20%s,\x20%s',_0x4a47d2,_0x540ea4['error'][_0x6e92('0x16')]);return _0x40629a(_0x540ea4[_0x6e92('0x14')][_0x6e92('0x16')]);}else{logger['info'](_0x6e92('0xf'),_0x4a47d2,_0x6e92('0x10'));_0x40629a(_0x540ea4['result'][_0x6e92('0x16')]);}})[_0x6e92('0x17')](function(_0x2e6320){logger[_0x6e92('0x14')]('ChatProactiveAction,\x20%s,\x20%s',_0x4a47d2,_0x2e6320);_0x58dd14(_0x2e6320);});});}
\ No newline at end of file
index 87fea9c..1c8d709 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeff8=['isAuthenticated','show','post','create','put','destroy','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatProactiveAction.controller','/:id'];(function(_0x2064e5,_0x4f6fa2){var _0x21a233=function(_0x1b2491){while(--_0x1b2491){_0x2064e5['push'](_0x2064e5['shift']());}};_0x21a233(++_0x4f6fa2);}(_0xeff8,0x186));var _0x8eff=function(_0x342700,_0x569f75){_0x342700=_0x342700-0x0;var _0x53406f=_0xeff8[_0x342700];return _0x53406f;};'use strict';var multer=require(_0x8eff('0x0'));var util=require(_0x8eff('0x1'));var path=require('path');var timeout=require(_0x8eff('0x2'));var express=require(_0x8eff('0x3'));var router=express[_0x8eff('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x8eff('0x5'));var interaction=require(_0x8eff('0x6'));var config=require(_0x8eff('0x7'));var controller=require(_0x8eff('0x8'));router['get'](_0x8eff('0x9'),auth[_0x8eff('0xa')](),controller[_0x8eff('0xb')]);router[_0x8eff('0xc')]('/',auth['isAuthenticated'](),controller[_0x8eff('0xd')]);router[_0x8eff('0xe')](_0x8eff('0x9'),auth[_0x8eff('0xa')](),controller['update']);router['delete'](_0x8eff('0x9'),auth[_0x8eff('0xa')](),controller[_0x8eff('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0x5d58=['/:id','isAuthenticated','show','create','update','delete','Router','fs-extra','../../components/interaction/service','../../config/environment','get'];(function(_0xaf8267,_0x33968b){var _0x20798b=function(_0xaa6732){while(--_0xaa6732){_0xaf8267['push'](_0xaf8267['shift']());}};_0x20798b(++_0x33968b);}(_0x5d58,0x187));var _0x85d5=function(_0x3a405a,_0x2c4c16){_0x3a405a=_0x3a405a-0x0;var _0x5a4627=_0x5d58[_0x3a405a];return _0x5a4627;};'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('./chatProactiveAction.controller');router[_0x85d5('0x4')](_0x85d5('0x5'),auth[_0x85d5('0x6')](),controller[_0x85d5('0x7')]);router['post']('/',auth[_0x85d5('0x6')](),controller[_0x85d5('0x8')]);router['put'](_0x85d5('0x5'),auth['isAuthenticated'](),controller[_0x85d5('0x9')]);router[_0x85d5('0xa')](_0x85d5('0x5'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index d65e414..dc561f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x788d=['beepall','roundrobin','name','STRING','INTEGER','rrmemory'];(function(_0x5c36fe,_0x1a90e3){var _0x18a432=function(_0x14460c){while(--_0x14460c){_0x5c36fe['push'](_0x5c36fe['shift']());}};_0x18a432(++_0x1a90e3);}(_0x788d,0x1d6));var _0xd788=function(_0xa45b07,_0x1c79a8){_0xa45b07=_0xa45b07-0x0;var _0x29980f=_0x788d[_0xa45b07];return _0x29980f;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0xd788('0x0'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xd788('0x1')]},'timeout':{'type':Sequelize[_0xd788('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0xd788('0x3'),_0xd788('0x4'),_0xd788('0x5'))}};
\ No newline at end of file
+var _0x247e=['name','ENUM','rrmemory','beepall','sequelize','exports'];(function(_0x358473,_0x2c6c2e){var _0x1579b9=function(_0x271054){while(--_0x271054){_0x358473['push'](_0x358473['shift']());}};_0x1579b9(++_0x2c6c2e);}(_0x247e,0x172));var _0xe247=function(_0x5a4825,_0x27644a){_0x5a4825=_0x5a4825-0x0;var _0x9f2654=_0x247e[_0x5a4825];return _0x9f2654;};'use strict';var Sequelize=require(_0xe247('0x0'));module[_0xe247('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xe247('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xe247('0x3')](_0xe247('0x4'),_0xe247('0x5'),'roundrobin')}};
\ No newline at end of file
index 100df1b..8e70620 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf481=['UserProfileSection','userProfileId','autoAssociation','catch','body','destroy','describe','UserChatQueue','ChatQueueId','User','findAndCountAll','UserId','agent','chatPause','createdAt','format','%s/%s','SIP','updatedAt','getTeams','addTeams','ids','Team','Agents','online','voicePause','interface','flatMap','sequelize','transaction','each','findOrCreate','forEach','userChatQueue:save','tq.TeamId','from','team_has_chat_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ChatQueueId\x20=\x20?','clone','push','toString','QueryTypes','every','TeamId','includes','all','union','compact','value','removeTeams','isEmpty','emit','addAgents','omit','removeAgents','isArray','userChatQueue:remove','getAgents','findOne','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','defaults','redis','localhost','./chatQueue.socket','jayson/promise','client','http','request','then','info','ChatQueue,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','UserProfileResource','name','send','index','map','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','options','ChatQueue','includeAll','findAll','rows','params','rawAttributes','find','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','ChatQueues'];(function(_0x9c01f4,_0x348e48){var _0x544153=function(_0x3add77){while(--_0x3add77){_0x9c01f4['push'](_0x9c01f4['shift']());}};_0x544153(++_0x348e48);}(_0xf481,0xd9));var _0x1f48=function(_0x12bcf7,_0xc11103){_0x12bcf7=_0x12bcf7-0x0;var _0x2825a=_0xf481[_0x12bcf7];return _0x2825a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1f48('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x1f48('0x1'));var rp=require('request-promise');var moment=require(_0x1f48('0x2'));var BPromise=require(_0x1f48('0x3'));var Mustache=require(_0x1f48('0x4'));var util=require(_0x1f48('0x5'));var path=require(_0x1f48('0x6'));var sox=require(_0x1f48('0x7'));var csv=require(_0x1f48('0x8'));var ejs=require(_0x1f48('0x9'));var fs=require('fs');var fs_extra=require(_0x1f48('0xa'));var _=require(_0x1f48('0xb'));var squel=require(_0x1f48('0xc'));var crypto=require(_0x1f48('0xd'));var jsforce=require(_0x1f48('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x1f48('0x8'));var querystring=require(_0x1f48('0xf'));var Papa=require(_0x1f48('0x10'));var Redis=require(_0x1f48('0x11'));var authService=require(_0x1f48('0x12'));var qs=require(_0x1f48('0x13'));var as=require(_0x1f48('0x14'));var hardwareService=require(_0x1f48('0x15'));var logger=require(_0x1f48('0x16'))('api');var utils=require(_0x1f48('0x17'));var config=require(_0x1f48('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x1f48('0x19'))['db'];config['redis']=_[_0x1f48('0x1a')](config[_0x1f48('0x1b')],{'host':_0x1f48('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x1f48('0x1b')]));require(_0x1f48('0x1d'))['register'](socket);var jayson=require(_0x1f48('0x1e'));var client=jayson[_0x1f48('0x1f')][_0x1f48('0x20')]({'port':0x232a});function respondWithRpcPromise(_0xbb4939,_0x5dfa25,_0x5aa82e,_0x1608a5){return new BPromise(function(_0x59aa7c,_0x246067){var _0x54d9d7=_0x1608a5||client;return _0x54d9d7[_0x1f48('0x21')](_0xbb4939,_0x5aa82e)[_0x1f48('0x22')](function(_0x2c7402){logger[_0x1f48('0x23')](_0x1f48('0x24'),_0x5dfa25,_0x1f48('0x25'));logger['debug']('ChatQueue,\x20%s,\x20%s,\x20%s',_0x5dfa25,'request\x20sent',JSON[_0x1f48('0x26')](_0x2c7402));if(_0x2c7402[_0x1f48('0x27')]){if(_0x2c7402[_0x1f48('0x27')][_0x1f48('0x28')]===0x1f4){logger[_0x1f48('0x27')](_0x1f48('0x24'),_0x5dfa25,_0x2c7402[_0x1f48('0x27')][_0x1f48('0x29')]);return _0x246067(_0x2c7402[_0x1f48('0x27')][_0x1f48('0x29')]);}logger[_0x1f48('0x27')](_0x1f48('0x24'),_0x5dfa25,_0x2c7402['error'][_0x1f48('0x29')]);return _0x59aa7c(_0x2c7402[_0x1f48('0x27')][_0x1f48('0x29')]);}else{logger['info']('ChatQueue,\x20%s,\x20%s',_0x5dfa25,_0x1f48('0x25'));_0x59aa7c(_0x2c7402['result']['message']);}})['catch'](function(_0x46ea56){logger['error'](_0x1f48('0x24'),_0x5dfa25,_0x46ea56);_0x246067(_0x46ea56);});});}function respondWithStatusCode(_0x5cf2e1,_0x5c6215){_0x5c6215=_0x5c6215||0xcc;return function(_0x51f6ae){if(_0x51f6ae){return _0x5cf2e1[_0x1f48('0x2a')](_0x5c6215);}return _0x5cf2e1[_0x1f48('0x2b')](_0x5c6215)[_0x1f48('0x2c')]();};}function respondWithResult(_0x5c4d60,_0x56b31f){_0x56b31f=_0x56b31f||0xc8;return function(_0x96392f){if(_0x96392f){return _0x5c4d60[_0x1f48('0x2b')](_0x56b31f)[_0x1f48('0x2d')](_0x96392f);}};}function respondWithFilteredResult(_0x3794df,_0x368ea5){return function(_0x25b4ed){if(_0x25b4ed){var _0x80aee3=typeof _0x368ea5[_0x1f48('0x2e')]===_0x1f48('0x2f')&&typeof _0x368ea5[_0x1f48('0x30')]===_0x1f48('0x2f');var _0x2705c1=_0x25b4ed['count'];var _0x3d37a1=_0x80aee3?0x0:_0x368ea5[_0x1f48('0x2e')];var _0xcabde8=_0x80aee3?_0x25b4ed[_0x1f48('0x31')]:_0x368ea5[_0x1f48('0x2e')]+_0x368ea5[_0x1f48('0x30')];var _0x2535e4;if(_0xcabde8>=_0x2705c1){_0xcabde8=_0x2705c1;_0x2535e4=0xc8;}else{_0x2535e4=0xce;}_0x3794df[_0x1f48('0x2b')](_0x2535e4);return _0x3794df[_0x1f48('0x32')](_0x1f48('0x33'),_0x3d37a1+'-'+_0xcabde8+'/'+_0x2705c1)[_0x1f48('0x2d')](_0x25b4ed);}return null;};}function patchUpdates(_0x42ee00){return function(_0xe56d76){try{jsonpatch['apply'](_0xe56d76,_0x42ee00,!![]);}catch(_0x179af9){return BPromise[_0x1f48('0x34')](_0x179af9);}return _0xe56d76[_0x1f48('0x35')]();};}function saveUpdates(_0x26b0be,_0x510d65){return function(_0x4f843e){if(_0x4f843e){return _0x4f843e[_0x1f48('0x36')](_0x26b0be)['then'](function(_0x1fe854){return _0x1fe854;});}return null;};}function removeEntity(_0xed9015,_0x46330b){return function(_0x1c7ce2){if(_0x1c7ce2){return _0x1c7ce2['destroy']()[_0x1f48('0x22')](function(){var _0x747d28=_0x1c7ce2['get']({'plain':!![]});var _0x3c674b='ChatQueues';return db[_0x1f48('0x37')]['destroy']({'where':{'type':_0x3c674b,'resourceId':_0x747d28['id']}})[_0x1f48('0x22')](function(){return _0x1c7ce2;});})[_0x1f48('0x22')](function(){_0xed9015[_0x1f48('0x2b')](0xcc)[_0x1f48('0x2c')]();});}};}function handleEntityNotFound(_0x5e19b9,_0x10b77a){return function(_0x32cca9){if(!_0x32cca9){_0x5e19b9['sendStatus'](0x194);}return _0x32cca9;};}function handleError(_0x13d272,_0xf37aeb){_0xf37aeb=_0xf37aeb||0x1f4;return function(_0x571267){logger['error'](_0x571267['stack']);if(_0x571267[_0x1f48('0x38')]){delete _0x571267[_0x1f48('0x38')];}_0x13d272[_0x1f48('0x2b')](_0xf37aeb)[_0x1f48('0x39')](_0x571267);};}exports[_0x1f48('0x3a')]=function(_0x14b66f,_0x979732){var _0x48732e={},_0x1ea847={},_0x23e891={'count':0x0,'rows':[]};var _0x2afb25=_[_0x1f48('0x3b')](db['ChatQueue']['rawAttributes'],function(_0x1d4127){return{'name':_0x1d4127[_0x1f48('0x3c')],'type':_0x1d4127[_0x1f48('0x3d')][_0x1f48('0x3e')]};});_0x1ea847[_0x1f48('0x3f')]=_[_0x1f48('0x3b')](_0x2afb25,_0x1f48('0x38'));_0x1ea847[_0x1f48('0x40')]=_[_0x1f48('0x41')](_0x14b66f['query']);_0x1ea847['filters']=_[_0x1f48('0x42')](_0x1ea847['model'],_0x1ea847[_0x1f48('0x40')]);_0x48732e[_0x1f48('0x43')]=_[_0x1f48('0x42')](_0x1ea847[_0x1f48('0x3f')],qs['fields'](_0x14b66f[_0x1f48('0x40')][_0x1f48('0x44')]));_0x48732e[_0x1f48('0x43')]=_0x48732e['attributes'][_0x1f48('0x45')]?_0x48732e['attributes']:_0x1ea847[_0x1f48('0x3f')];if(!_0x14b66f['query'][_0x1f48('0x46')](_0x1f48('0x47'))){_0x48732e[_0x1f48('0x30')]=qs['limit'](_0x14b66f['query']['limit']);_0x48732e['offset']=qs[_0x1f48('0x2e')](_0x14b66f[_0x1f48('0x40')][_0x1f48('0x2e')]);}_0x48732e[_0x1f48('0x48')]=qs[_0x1f48('0x49')](_0x14b66f[_0x1f48('0x40')]['sort']);_0x48732e[_0x1f48('0x4a')]=qs[_0x1f48('0x4b')](_[_0x1f48('0x4c')](_0x14b66f['query'],_0x1ea847[_0x1f48('0x4b')]),_0x2afb25);if(_0x14b66f[_0x1f48('0x40')][_0x1f48('0x4d')]){_0x48732e[_0x1f48('0x4a')]=_[_0x1f48('0x4e')](_0x48732e[_0x1f48('0x4a')],{'$or':_[_0x1f48('0x3b')](_0x2afb25,function(_0x2e1ce5){if(_0x2e1ce5['type']!=='VIRTUAL'){var _0x3f3ca4={};_0x3f3ca4[_0x2e1ce5['name']]={'$like':'%'+_0x14b66f[_0x1f48('0x40')][_0x1f48('0x4d')]+'%'};return _0x3f3ca4;}})});}_0x48732e=_[_0x1f48('0x4e')]({},_0x48732e,_0x14b66f[_0x1f48('0x4f')]);var _0x37338b={'where':_0x48732e[_0x1f48('0x4a')]};return db[_0x1f48('0x50')][_0x1f48('0x31')](_0x37338b)[_0x1f48('0x22')](function(_0x13500c){_0x23e891[_0x1f48('0x31')]=_0x13500c;if(_0x14b66f['query'][_0x1f48('0x51')]){_0x48732e['include']=[{'all':!![]}];}return db[_0x1f48('0x50')][_0x1f48('0x52')](_0x48732e);})['then'](function(_0x400587){_0x23e891[_0x1f48('0x53')]=_0x400587;return _0x23e891;})[_0x1f48('0x22')](respondWithFilteredResult(_0x979732,_0x48732e))['catch'](handleError(_0x979732,null));};exports['show']=function(_0x184182,_0x2e78ee){var _0x18b4cc={'raw':!![],'where':{'id':_0x184182[_0x1f48('0x54')]['id']}},_0x1ceafe={};_0x1ceafe[_0x1f48('0x3f')]=_[_0x1f48('0x41')](db[_0x1f48('0x50')][_0x1f48('0x55')]);_0x1ceafe[_0x1f48('0x40')]=_[_0x1f48('0x41')](_0x184182[_0x1f48('0x40')]);_0x1ceafe[_0x1f48('0x4b')]=_[_0x1f48('0x42')](_0x1ceafe[_0x1f48('0x3f')],_0x1ceafe[_0x1f48('0x40')]);_0x18b4cc[_0x1f48('0x43')]=_['intersection'](_0x1ceafe[_0x1f48('0x3f')],qs[_0x1f48('0x44')](_0x184182[_0x1f48('0x40')][_0x1f48('0x44')]));_0x18b4cc[_0x1f48('0x43')]=_0x18b4cc['attributes'][_0x1f48('0x45')]?_0x18b4cc[_0x1f48('0x43')]:_0x1ceafe[_0x1f48('0x3f')];if(_0x184182['query'][_0x1f48('0x51')]){_0x18b4cc['include']=[{'all':!![]}];}_0x18b4cc=_[_0x1f48('0x4e')]({},_0x18b4cc,_0x184182['options']);return db[_0x1f48('0x50')][_0x1f48('0x56')](_0x18b4cc)[_0x1f48('0x22')](handleEntityNotFound(_0x2e78ee,null))[_0x1f48('0x22')](respondWithResult(_0x2e78ee,null))['catch'](handleError(_0x2e78ee,null));};exports[_0x1f48('0x57')]=function(_0x49c82c,_0x4b21aa){return db['ChatQueue'][_0x1f48('0x57')](_0x49c82c['body'],{})[_0x1f48('0x22')](function(_0x15a80c){var _0x2b1560=_0x49c82c[_0x1f48('0x58')][_0x1f48('0x59')]({'plain':!![]});if(!_0x2b1560)throw new Error(_0x1f48('0x5a'));if(_0x2b1560[_0x1f48('0x5b')]==='user'){var _0x5ec395=_0x15a80c['get']({'plain':!![]});var _0x5cf6aa=_0x1f48('0x5c');return db[_0x1f48('0x5d')][_0x1f48('0x56')]({'where':{'name':_0x5cf6aa,'userProfileId':_0x2b1560[_0x1f48('0x5e')]},'raw':!![]})['then'](function(_0x5338bd){if(_0x5338bd&&_0x5338bd[_0x1f48('0x5f')]===0x0){return db[_0x1f48('0x37')][_0x1f48('0x57')]({'name':_0x5ec395[_0x1f48('0x38')],'resourceId':_0x5ec395['id'],'type':_0x5338bd[_0x1f48('0x38')],'sectionId':_0x5338bd['id']},{})[_0x1f48('0x22')](function(){return _0x15a80c;});}else{return _0x15a80c;}})['catch'](function(_0x5293c3){logger[_0x1f48('0x27')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5293c3);throw _0x5293c3;});}return _0x15a80c;})['then'](respondWithResult(_0x4b21aa,0xc9))[_0x1f48('0x60')](handleError(_0x4b21aa,null));};exports[_0x1f48('0x36')]=function(_0x21e861,_0x87673a){if(_0x21e861[_0x1f48('0x61')]['id']){delete _0x21e861[_0x1f48('0x61')]['id'];}return db['ChatQueue'][_0x1f48('0x56')]({'where':{'id':_0x21e861['params']['id']}})[_0x1f48('0x22')](handleEntityNotFound(_0x87673a,null))[_0x1f48('0x22')](saveUpdates(_0x21e861[_0x1f48('0x61')],null))[_0x1f48('0x22')](respondWithResult(_0x87673a,null))['catch'](handleError(_0x87673a,null));};exports[_0x1f48('0x62')]=function(_0x323437,_0x3cc886){return db['ChatQueue'][_0x1f48('0x56')]({'where':{'id':_0x323437[_0x1f48('0x54')]['id']}})[_0x1f48('0x22')](handleEntityNotFound(_0x3cc886,null))[_0x1f48('0x22')](removeEntity(_0x3cc886,null))[_0x1f48('0x60')](handleError(_0x3cc886,null));};exports[_0x1f48('0x63')]=function(_0x394ecf,_0x28c37e){return db['ChatQueue'][_0x1f48('0x63')]()[_0x1f48('0x22')](respondWithResult(_0x28c37e,null))['catch'](handleError(_0x28c37e,null));};exports['getMembers']=function(_0x1fb781,_0x448611,_0x3244ed){var _0x2e6cb8={'raw':!![],'where':{}},_0x578133={},_0x173c59;return db['ChatQueue']['findOne']({'where':{'id':_0x1fb781[_0x1f48('0x54')]['id']}})[_0x1f48('0x22')](handleEntityNotFound(_0x448611,null))[_0x1f48('0x22')](function(_0x6db6df){if(_0x6db6df){_0x173c59=_0x6db6df[_0x1f48('0x59')]({'plain':!![]});_0x578133[_0x1f48('0x3f')]=_[_0x1f48('0x41')](db[_0x1f48('0x64')][_0x1f48('0x55')]);_0x578133['query']=_[_0x1f48('0x41')](_0x1fb781[_0x1f48('0x40')]);_0x578133['filters']=_[_0x1f48('0x42')](_0x578133['model'],_0x578133['query']);_0x2e6cb8[_0x1f48('0x43')]=_[_0x1f48('0x42')](_0x578133[_0x1f48('0x3f')],qs[_0x1f48('0x44')](_0x1fb781[_0x1f48('0x40')][_0x1f48('0x44')]));_0x2e6cb8[_0x1f48('0x43')]=_0x2e6cb8['attributes'][_0x1f48('0x45')]?_0x2e6cb8['attributes']:_0x578133[_0x1f48('0x3f')];if(!_0x1fb781[_0x1f48('0x40')]['hasOwnProperty'](_0x1f48('0x47'))){_0x2e6cb8['limit']=qs['limit'](_0x1fb781['query']['limit']);_0x2e6cb8[_0x1f48('0x2e')]=qs[_0x1f48('0x2e')](_0x1fb781[_0x1f48('0x40')][_0x1f48('0x2e')]);}_0x2e6cb8[_0x1f48('0x48')]=qs['sort'](_0x1fb781[_0x1f48('0x40')]['sort']);_0x2e6cb8[_0x1f48('0x4a')]=qs['filters'](_[_0x1f48('0x4c')](_0x1fb781[_0x1f48('0x40')],_0x578133['filters']));_0x2e6cb8[_0x1f48('0x4a')][_0x1f48('0x65')]=_0x6db6df['id'];if(_0x1fb781[_0x1f48('0x40')]['filter']){_0x2e6cb8['where']=_[_0x1f48('0x4e')](_0x2e6cb8[_0x1f48('0x4a')],{'$or':_[_0x1f48('0x3b')](_0x2e6cb8['attributes'],function(_0x53ec53){var _0x2e4b21={};_0x2e4b21[_0x53ec53]={'$like':'%'+_0x1fb781['query']['filter']+'%'};return _0x2e4b21;})});}_0x2e6cb8=_[_0x1f48('0x4e')]({},_0x2e6cb8,_0x1fb781['options']);return db['UserChatQueue'][_0x1f48('0x52')](_0x2e6cb8);}})[_0x1f48('0x22')](function(_0x47c438){if(_0x47c438){return db[_0x1f48('0x66')][_0x1f48('0x67')]({'where':{'id':_[_0x1f48('0x3b')](_0x47c438,_0x1f48('0x68')),'role':_0x1f48('0x69')},'attributes':['id',_0x1f48('0x38'),_0x1f48('0x6a'),'updatedAt',_0x1f48('0x6b')]});}})[_0x1f48('0x22')](function(_0x52cbfa){if(_0x52cbfa){return{'count':_0x52cbfa['count'],'rows':_[_0x1f48('0x3b')](_0x52cbfa[_0x1f48('0x53')],function(_0x3a00fb){return{'membername':_0x3a00fb['name'],'UserId':_0x3a00fb['id'],'queue_name':_0x173c59['name'],'ChatQueueId':_0x173c59['id'],'interface':util[_0x1f48('0x6c')](_0x1f48('0x6d'),_0x1f48('0x6e'),_0x3a00fb['name']),'penalty':0x0,'paused':_0x3a00fb[_0x1f48('0x6a')],'createdAt':_0x3a00fb[_0x1f48('0x6b')],'updatedAt':_0x3a00fb[_0x1f48('0x6f')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x448611,_0x2e6cb8))[_0x1f48('0x60')](handleError(_0x448611,null));};exports[_0x1f48('0x70')]=function(_0x414ae8,_0x260e2b,_0x4452a7){var _0xf07679={};var _0x52a94d={};var _0x467dc5;var _0x23f59f;return db[_0x1f48('0x50')]['findOne']({'where':{'id':_0x414ae8[_0x1f48('0x54')]['id']}})['then'](handleEntityNotFound(_0x260e2b,null))[_0x1f48('0x22')](function(_0x1abed2){if(_0x1abed2){_0x467dc5=_0x1abed2;_0x52a94d[_0x1f48('0x3f')]=_[_0x1f48('0x41')](db['Team']['rawAttributes']);_0x52a94d['query']=_[_0x1f48('0x41')](_0x414ae8['query']);_0x52a94d[_0x1f48('0x4b')]=_[_0x1f48('0x42')](_0x52a94d[_0x1f48('0x3f')],_0x52a94d[_0x1f48('0x40')]);_0xf07679[_0x1f48('0x43')]=_['intersection'](_0x52a94d[_0x1f48('0x3f')],qs['fields'](_0x414ae8[_0x1f48('0x40')][_0x1f48('0x44')]));_0xf07679[_0x1f48('0x43')]=_0xf07679[_0x1f48('0x43')][_0x1f48('0x45')]?_0xf07679[_0x1f48('0x43')]:_0x52a94d[_0x1f48('0x3f')];_0xf07679[_0x1f48('0x48')]=qs[_0x1f48('0x49')](_0x414ae8[_0x1f48('0x40')][_0x1f48('0x49')]);_0xf07679['where']=qs[_0x1f48('0x4b')](_[_0x1f48('0x4c')](_0x414ae8['query'],_0x52a94d[_0x1f48('0x4b')]));if(_0x414ae8[_0x1f48('0x40')][_0x1f48('0x4d')]){_0xf07679['where']=_[_0x1f48('0x4e')](_0xf07679[_0x1f48('0x4a')],{'$or':_[_0x1f48('0x3b')](_0xf07679['attributes'],function(_0x5d9f8c){var _0x1ae10f={};_0x1ae10f[_0x5d9f8c]={'$like':'%'+_0x414ae8[_0x1f48('0x40')][_0x1f48('0x4d')]+'%'};return _0x1ae10f;})});}_0xf07679=_[_0x1f48('0x4e')]({},_0xf07679,_0x414ae8['options']);return _0x467dc5[_0x1f48('0x70')](_0xf07679);}})[_0x1f48('0x22')](function(_0x244d0a){if(_0x244d0a){_0x23f59f=_0x244d0a[_0x1f48('0x45')];if(!_0x414ae8[_0x1f48('0x40')][_0x1f48('0x46')](_0x1f48('0x47'))){_0xf07679[_0x1f48('0x30')]=qs[_0x1f48('0x30')](_0x414ae8['query'][_0x1f48('0x30')]);_0xf07679['offset']=qs[_0x1f48('0x2e')](_0x414ae8['query'][_0x1f48('0x2e')]);}return _0x467dc5[_0x1f48('0x70')](_0xf07679);}})['then'](function(_0x162440){if(_0x162440){return _0x162440?{'count':_0x23f59f,'rows':_0x162440}:null;}})[_0x1f48('0x22')](respondWithResult(_0x260e2b,null))[_0x1f48('0x60')](handleError(_0x260e2b,null));};exports[_0x1f48('0x71')]=function(_0x591979,_0x83cba8,_0x5d2d2a){var _0x5e127c=_0x591979['body'][_0x1f48('0x72')];return db[_0x1f48('0x73')][_0x1f48('0x52')]({'where':{'id':_0x5e127c},'attributes':['id'],'include':[{'model':db[_0x1f48('0x66')],'as':_0x1f48('0x74'),'attributes':['id',_0x1f48('0x38'),_0x1f48('0x75'),_0x1f48('0x76'),_0x1f48('0x77')],'raw':!![]}]})[_0x1f48('0x22')](function(_0x87bf13){if(_0x87bf13){var _0xedd4bc=_[_0x1f48('0x78')](_0x87bf13,function(_0x45e7a5){var _0x523b61=_0x45e7a5[_0x1f48('0x59')]({'plain':!![]});return _0x523b61['Agents'];});return db['ChatQueue'][_0x1f48('0x56')]({'where':{'id':_0x591979[_0x1f48('0x54')]['id']}})[_0x1f48('0x22')](function(_0x560ae6){return db[_0x1f48('0x79')][_0x1f48('0x7a')](function(_0x21bd83){return _0x560ae6[_0x1f48('0x71')](_0x5e127c,{'transaction':_0x21bd83})[_0x1f48('0x22')](function(){return BPromise[_0x1f48('0x7b')](_0xedd4bc,function(_0x25fdf3){return db[_0x1f48('0x64')][_0x1f48('0x7c')]({'where':{'UserId':_0x25fdf3['id'],'ChatQueueId':_0x591979[_0x1f48('0x54')]['id']},'transaction':_0x21bd83});});})['then'](function(){_0xedd4bc[_0x1f48('0x7d')](function(_0x152da7){socket['emit'](_0x1f48('0x7e'),{'UserId':_0x152da7['id'],'ChatQueueId':_0x560ae6['id']});});});});});}})[_0x1f48('0x22')](respondWithStatusCode(_0x83cba8,null))[_0x1f48('0x60')](handleError(_0x83cba8,null));};exports['removeTeams']=function(_0x2978ff,_0x5e3424,_0x25efcc){return db['Team'][_0x1f48('0x52')]({'where':{'id':_0x2978ff[_0x1f48('0x40')][_0x1f48('0x72')]},'attributes':['id'],'include':[{'model':db[_0x1f48('0x66')],'as':_0x1f48('0x74'),'attributes':['id'],'raw':!![]}]})[_0x1f48('0x22')](handleEntityNotFound(_0x5e3424,null))[_0x1f48('0x22')](function(_0x2c313e){var _0xaa57ba=_[_0x1f48('0x3b')](_0x2c313e,'id');var _0x190067=[];var _0x5e207c=[];var _0x221ab4=squel['select']();_0x221ab4['field'](_0x1f48('0x7f'))[_0x1f48('0x80')](_0x1f48('0x81'),'tq')[_0x1f48('0x82')](_0x1f48('0x83'),'ut',_0x1f48('0x84'))[_0x1f48('0x4a')](_0x1f48('0x85'),_0x2978ff[_0x1f48('0x54')]['id']);for(var _0x2e1b42=0x0;_0x2e1b42<_0x2c313e[_0x1f48('0x45')];_0x2e1b42+=0x1){let _0x28375e=_0x2c313e[_0x2e1b42];for(var _0x30b2b5=0x0;_0x30b2b5<_0x28375e[_0x1f48('0x74')][_0x1f48('0x45')];_0x30b2b5+=0x1){let _0x309e77=_0x28375e['Agents'][_0x30b2b5];var _0x473dcf=_0x221ab4[_0x1f48('0x86')]();_0x473dcf['where']('ut.UserId\x20=\x20?',_0x309e77['id']);_0x5e207c[_0x1f48('0x87')](db[_0x1f48('0x79')][_0x1f48('0x40')](_0x473dcf[_0x1f48('0x88')](),{'type':db[_0x1f48('0x79')][_0x1f48('0x89')]['SELECT']})[_0x1f48('0x22')](function(_0x3e85e1){if(_0x3e85e1[_0x1f48('0x45')]===0x1){return _0x309e77['id'];}else{var _0xc0998b=_[_0x1f48('0x8a')](_[_0x1f48('0x3b')](_0x3e85e1,_0x1f48('0x8b')),function(_0x1ddb70){return _[_0x1f48('0x8c')](_0xaa57ba,_0x1ddb70);});if(_0xc0998b){return _0x309e77['id'];}}}));}}return BPromise[_0x1f48('0x8d')](_0x5e207c)[_0x1f48('0x22')](function(_0x5a3d8b){_0x190067=_(_0x190067)[_0x1f48('0x8e')](_0x5a3d8b)[_0x1f48('0x8f')]()[_0x1f48('0x90')]();return db[_0x1f48('0x50')][_0x1f48('0x56')]({'where':{'id':_0x2978ff['params']['id']}})[_0x1f48('0x22')](function(_0x24433a){return db['sequelize'][_0x1f48('0x7a')](function(_0x4f0f64){return _0x24433a[_0x1f48('0x91')](_0x2978ff['query'][_0x1f48('0x72')],{'transaction':_0x4f0f64})['then'](function(){if(!_[_0x1f48('0x92')](_0x190067)){return _0x24433a['removeAgents'](_0x190067,{'transaction':_0x4f0f64});}})['then'](function(){_0x190067['forEach'](function(_0x11bc8b){socket[_0x1f48('0x93')]('userChatQueue:remove',{'UserId':_0x11bc8b,'ChatQueueId':_0x24433a['id']});});});});});});})[_0x1f48('0x22')](respondWithStatusCode(_0x5e3424,null))[_0x1f48('0x60')](handleError(_0x5e3424,null));};exports[_0x1f48('0x94')]=function(_0x16bc1d,_0x2b8a51,_0x2bdd3a){return db[_0x1f48('0x50')][_0x1f48('0x56')]({'where':{'id':_0x16bc1d[_0x1f48('0x54')]['id']}})[_0x1f48('0x22')](handleEntityNotFound(_0x2b8a51,null))[_0x1f48('0x22')](function(_0x425ab0){if(_0x425ab0){return _0x425ab0['addAgents'](_0x16bc1d[_0x1f48('0x61')][_0x1f48('0x72')],_[_0x1f48('0x95')](_0x16bc1d[_0x1f48('0x61')],[_0x1f48('0x72'),'id'])||{})['spread'](function(_0x3fe93d){for(var _0x66606f=0x0;_0x66606f<_0x16bc1d[_0x1f48('0x61')][_0x1f48('0x72')][_0x1f48('0x45')];_0x66606f+=0x1){socket['emit'](_0x1f48('0x7e'),{'UserId':Number(_0x16bc1d[_0x1f48('0x61')][_0x1f48('0x72')][_0x66606f]),'ChatQueueId':Number(_0x16bc1d[_0x1f48('0x54')]['id'])});}return _0x3fe93d;});}})[_0x1f48('0x22')](respondWithResult(_0x2b8a51,null))['catch'](handleError(_0x2b8a51,null));};exports[_0x1f48('0x96')]=function(_0x2fb1c5,_0x5478eb,_0x8fb8cd){return db['ChatQueue'][_0x1f48('0x56')]({'where':{'id':_0x2fb1c5[_0x1f48('0x54')]['id']}})[_0x1f48('0x22')](handleEntityNotFound(_0x5478eb,null))[_0x1f48('0x22')](function(_0x293395){if(_0x293395){return _0x293395['removeAgents'](_0x2fb1c5[_0x1f48('0x40')][_0x1f48('0x72')])['then'](function(){if(_[_0x1f48('0x97')](_0x2fb1c5[_0x1f48('0x40')][_0x1f48('0x72')])){for(var _0x1e4ac0=0x0;_0x1e4ac0<_0x2fb1c5[_0x1f48('0x40')][_0x1f48('0x72')][_0x1f48('0x45')];_0x1e4ac0+=0x1){socket[_0x1f48('0x93')](_0x1f48('0x98'),{'UserId':Number(_0x2fb1c5[_0x1f48('0x40')][_0x1f48('0x72')][_0x1e4ac0]),'ChatQueueId':Number(_0x2fb1c5[_0x1f48('0x54')]['id'])});}}else{socket[_0x1f48('0x93')](_0x1f48('0x98'),{'UserId':Number(_0x2fb1c5['query']['ids']),'ChatQueueId':Number(_0x2fb1c5['params']['id'])});}});}})['then'](respondWithStatusCode(_0x5478eb,null))[_0x1f48('0x60')](handleError(_0x5478eb,null));};exports[_0x1f48('0x99')]=function(_0x4c5dc6,_0x862e31,_0x17ac27){var _0x4f58e5={};var _0x3b2a8d={};var _0x451ddf;var _0x50aefe;return db['ChatQueue'][_0x1f48('0x9a')]({'where':{'id':_0x4c5dc6[_0x1f48('0x54')]['id']}})[_0x1f48('0x22')](handleEntityNotFound(_0x862e31,null))['then'](function(_0x53e0bc){if(_0x53e0bc){_0x451ddf=_0x53e0bc;_0x3b2a8d[_0x1f48('0x3f')]=_[_0x1f48('0x41')](db[_0x1f48('0x66')][_0x1f48('0x55')]);_0x3b2a8d['query']=_['keys'](_0x4c5dc6['query']);_0x3b2a8d[_0x1f48('0x4b')]=_[_0x1f48('0x42')](_0x3b2a8d[_0x1f48('0x3f')],_0x3b2a8d[_0x1f48('0x40')]);_0x4f58e5[_0x1f48('0x43')]=_[_0x1f48('0x42')](_0x3b2a8d[_0x1f48('0x3f')],qs[_0x1f48('0x44')](_0x4c5dc6[_0x1f48('0x40')]['fields']));_0x4f58e5[_0x1f48('0x43')]=_0x4f58e5[_0x1f48('0x43')][_0x1f48('0x45')]?_0x4f58e5[_0x1f48('0x43')]:_0x3b2a8d[_0x1f48('0x3f')];_0x4f58e5[_0x1f48('0x48')]=qs[_0x1f48('0x49')](_0x4c5dc6['query']['sort']);_0x4f58e5[_0x1f48('0x4a')]=qs['filters'](_[_0x1f48('0x4c')](_0x4c5dc6[_0x1f48('0x40')],_0x3b2a8d['filters']));if(_0x4c5dc6[_0x1f48('0x40')][_0x1f48('0x4d')]){_0x4f58e5['where']=_[_0x1f48('0x4e')](_0x4f58e5['where'],{'$or':_[_0x1f48('0x3b')](_0x4f58e5[_0x1f48('0x43')],function(_0x417f97){var _0x36a400={};_0x36a400[_0x417f97]={'$like':'%'+_0x4c5dc6[_0x1f48('0x40')]['filter']+'%'};return _0x36a400;})});}_0x4f58e5=_[_0x1f48('0x4e')]({},_0x4f58e5,_0x4c5dc6[_0x1f48('0x4f')]);return _0x451ddf[_0x1f48('0x99')](_0x4f58e5);}})[_0x1f48('0x22')](function(_0x21b5bd){if(_0x21b5bd){_0x50aefe=_0x21b5bd['length'];if(!_0x4c5dc6['query'][_0x1f48('0x46')](_0x1f48('0x47'))){_0x4f58e5[_0x1f48('0x30')]=qs[_0x1f48('0x30')](_0x4c5dc6[_0x1f48('0x40')]['limit']);_0x4f58e5[_0x1f48('0x2e')]=qs[_0x1f48('0x2e')](_0x4c5dc6['query'][_0x1f48('0x2e')]);}return _0x451ddf[_0x1f48('0x99')](_0x4f58e5);}})[_0x1f48('0x22')](function(_0x34123f){if(_0x34123f){return _0x34123f?{'count':_0x50aefe,'rows':_0x34123f}:null;}})['then'](respondWithResult(_0x862e31,null))[_0x1f48('0x60')](handleError(_0x862e31,null));};
\ No newline at end of file
+var _0x7e3a=['error','code','ChatQueue,\x20%s,\x20%s','message','result','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','ChatQueues','stack','name','send','index','map','ChatQueue','rawAttributes','fieldName','key','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','type','VIRTUAL','filter','options','include','findAll','rows','catch','show','params','length','includeAll','merge','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','getMembers','findOne','UserChatQueue','nolimit','findAndCountAll','UserId','agent','chatPause','updatedAt','createdAt','%s/%s','getTeams','Team','addTeams','ids','User','Agents','online','interface','flatMap','sequelize','transaction','each','findOrCreate','forEach','userChatQueue:save','select','tq.TeamId','from','team_has_chat_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ChatQueueId\x20=\x20?','clone','toString','QueryTypes','SELECT','every','TeamId','includes','all','union','compact','removeAgents','emit','userChatQueue:remove','addAgents','omit','spread','isArray','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./chatQueue.socket','register','jayson/promise','http','request','then','info','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x4244c0,_0x35dec2){var _0x105c30=function(_0x2af351){while(--_0x2af351){_0x4244c0['push'](_0x4244c0['shift']());}};_0x105c30(++_0x35dec2);}(_0x7e3a,0x75));var _0xa7e3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7e3a[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa7e3('0x0'));var zipdir=require(_0xa7e3('0x1'));var jsonpatch=require(_0xa7e3('0x2'));var rp=require(_0xa7e3('0x3'));var moment=require('moment');var BPromise=require(_0xa7e3('0x4'));var Mustache=require(_0xa7e3('0x5'));var util=require('util');var path=require(_0xa7e3('0x6'));var sox=require(_0xa7e3('0x7'));var csv=require(_0xa7e3('0x8'));var ejs=require(_0xa7e3('0x9'));var fs=require('fs');var fs_extra=require(_0xa7e3('0xa'));var _=require(_0xa7e3('0xb'));var squel=require('squel');var crypto=require(_0xa7e3('0xc'));var jsforce=require(_0xa7e3('0xd'));var deskjs=require(_0xa7e3('0xe'));var toCsv=require('to-csv');var querystring=require(_0xa7e3('0xf'));var Papa=require('papaparse');var Redis=require(_0xa7e3('0x10'));var authService=require(_0xa7e3('0x11'));var qs=require(_0xa7e3('0x12'));var as=require(_0xa7e3('0x13'));var hardwareService=require(_0xa7e3('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0xa7e3('0x15'));var config=require(_0xa7e3('0x16'));var licenseUtil=require(_0xa7e3('0x17'));var db=require(_0xa7e3('0x18'))['db'];config[_0xa7e3('0x19')]=_[_0xa7e3('0x1a')](config[_0xa7e3('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0xa7e3('0x1b'))(new Redis(config[_0xa7e3('0x19')]));require(_0xa7e3('0x1c'))[_0xa7e3('0x1d')](socket);var jayson=require(_0xa7e3('0x1e'));var client=jayson['client'][_0xa7e3('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x220a0f,_0x15d823,_0x1f7d0d,_0x2afa6d){return new BPromise(function(_0x4cf8e8,_0x482516){var _0x106207=_0x2afa6d||client;return _0x106207[_0xa7e3('0x20')](_0x220a0f,_0x1f7d0d)[_0xa7e3('0x21')](function(_0x46713f){logger[_0xa7e3('0x22')]('ChatQueue,\x20%s,\x20%s',_0x15d823,_0xa7e3('0x23'));logger[_0xa7e3('0x24')](_0xa7e3('0x25'),_0x15d823,_0xa7e3('0x23'),JSON[_0xa7e3('0x26')](_0x46713f));if(_0x46713f[_0xa7e3('0x27')]){if(_0x46713f[_0xa7e3('0x27')][_0xa7e3('0x28')]===0x1f4){logger[_0xa7e3('0x27')](_0xa7e3('0x29'),_0x15d823,_0x46713f[_0xa7e3('0x27')][_0xa7e3('0x2a')]);return _0x482516(_0x46713f[_0xa7e3('0x27')][_0xa7e3('0x2a')]);}logger['error'](_0xa7e3('0x29'),_0x15d823,_0x46713f['error'][_0xa7e3('0x2a')]);return _0x4cf8e8(_0x46713f[_0xa7e3('0x27')]['message']);}else{logger[_0xa7e3('0x22')](_0xa7e3('0x29'),_0x15d823,_0xa7e3('0x23'));_0x4cf8e8(_0x46713f[_0xa7e3('0x2b')][_0xa7e3('0x2a')]);}})['catch'](function(_0x33f818){logger[_0xa7e3('0x27')](_0xa7e3('0x29'),_0x15d823,_0x33f818);_0x482516(_0x33f818);});});}function respondWithStatusCode(_0x2d8e74,_0x153eb2){_0x153eb2=_0x153eb2||0xcc;return function(_0x54808c){if(_0x54808c){return _0x2d8e74[_0xa7e3('0x2c')](_0x153eb2);}return _0x2d8e74[_0xa7e3('0x2d')](_0x153eb2)[_0xa7e3('0x2e')]();};}function respondWithResult(_0x5a10a1,_0x3462b2){_0x3462b2=_0x3462b2||0xc8;return function(_0x18b8ea){if(_0x18b8ea){return _0x5a10a1[_0xa7e3('0x2d')](_0x3462b2)[_0xa7e3('0x2f')](_0x18b8ea);}};}function respondWithFilteredResult(_0x53585b,_0x48efc8){return function(_0x47c780){if(_0x47c780){var _0x40df18=typeof _0x48efc8[_0xa7e3('0x30')]===_0xa7e3('0x31')&&typeof _0x48efc8[_0xa7e3('0x32')]===_0xa7e3('0x31');var _0x5950be=_0x47c780[_0xa7e3('0x33')];var _0x2d4780=_0x40df18?0x0:_0x48efc8[_0xa7e3('0x30')];var _0x19363e=_0x40df18?_0x47c780[_0xa7e3('0x33')]:_0x48efc8[_0xa7e3('0x30')]+_0x48efc8[_0xa7e3('0x32')];var _0xacf852;if(_0x19363e>=_0x5950be){_0x19363e=_0x5950be;_0xacf852=0xc8;}else{_0xacf852=0xce;}_0x53585b[_0xa7e3('0x2d')](_0xacf852);return _0x53585b[_0xa7e3('0x34')](_0xa7e3('0x35'),_0x2d4780+'-'+_0x19363e+'/'+_0x5950be)['json'](_0x47c780);}return null;};}function patchUpdates(_0x5de39b){return function(_0x3b26bd){try{jsonpatch[_0xa7e3('0x36')](_0x3b26bd,_0x5de39b,!![]);}catch(_0x784a73){return BPromise[_0xa7e3('0x37')](_0x784a73);}return _0x3b26bd[_0xa7e3('0x38')]();};}function saveUpdates(_0x282379,_0x188040){return function(_0x2c052e){if(_0x2c052e){return _0x2c052e['update'](_0x282379)['then'](function(_0x2e3eac){return _0x2e3eac;});}return null;};}function removeEntity(_0x232df9,_0x24ce22){return function(_0x3c248f){if(_0x3c248f){return _0x3c248f[_0xa7e3('0x39')]()[_0xa7e3('0x21')](function(){var _0x1cbf73=_0x3c248f['get']({'plain':!![]});var _0xaaff95=_0xa7e3('0x3a');return db['UserProfileResource'][_0xa7e3('0x39')]({'where':{'type':_0xaaff95,'resourceId':_0x1cbf73['id']}})['then'](function(){return _0x3c248f;});})[_0xa7e3('0x21')](function(){_0x232df9[_0xa7e3('0x2d')](0xcc)[_0xa7e3('0x2e')]();});}};}function handleEntityNotFound(_0x325db1,_0x5f2a5a){return function(_0x4edc99){if(!_0x4edc99){_0x325db1[_0xa7e3('0x2c')](0x194);}return _0x4edc99;};}function handleError(_0x31d86b,_0x4ccb51){_0x4ccb51=_0x4ccb51||0x1f4;return function(_0x406204){logger['error'](_0x406204[_0xa7e3('0x3b')]);if(_0x406204[_0xa7e3('0x3c')]){delete _0x406204[_0xa7e3('0x3c')];}_0x31d86b[_0xa7e3('0x2d')](_0x4ccb51)[_0xa7e3('0x3d')](_0x406204);};}exports[_0xa7e3('0x3e')]=function(_0x362172,_0x423245){var _0x3d0e12={},_0x48c2e4={},_0x58da42={'count':0x0,'rows':[]};var _0x5624f4=_[_0xa7e3('0x3f')](db[_0xa7e3('0x40')][_0xa7e3('0x41')],function(_0x106200){return{'name':_0x106200[_0xa7e3('0x42')],'type':_0x106200['type'][_0xa7e3('0x43')]};});_0x48c2e4[_0xa7e3('0x44')]=_[_0xa7e3('0x3f')](_0x5624f4,_0xa7e3('0x3c'));_0x48c2e4['query']=_[_0xa7e3('0x45')](_0x362172[_0xa7e3('0x46')]);_0x48c2e4[_0xa7e3('0x47')]=_[_0xa7e3('0x48')](_0x48c2e4[_0xa7e3('0x44')],_0x48c2e4['query']);_0x3d0e12[_0xa7e3('0x49')]=_[_0xa7e3('0x48')](_0x48c2e4['model'],qs[_0xa7e3('0x4a')](_0x362172[_0xa7e3('0x46')][_0xa7e3('0x4a')]));_0x3d0e12[_0xa7e3('0x49')]=_0x3d0e12[_0xa7e3('0x49')]['length']?_0x3d0e12[_0xa7e3('0x49')]:_0x48c2e4['model'];if(!_0x362172[_0xa7e3('0x46')][_0xa7e3('0x4b')]('nolimit')){_0x3d0e12[_0xa7e3('0x32')]=qs['limit'](_0x362172['query'][_0xa7e3('0x32')]);_0x3d0e12[_0xa7e3('0x30')]=qs[_0xa7e3('0x30')](_0x362172[_0xa7e3('0x46')][_0xa7e3('0x30')]);}_0x3d0e12[_0xa7e3('0x4c')]=qs[_0xa7e3('0x4d')](_0x362172['query'][_0xa7e3('0x4d')]);_0x3d0e12[_0xa7e3('0x4e')]=qs[_0xa7e3('0x47')](_[_0xa7e3('0x4f')](_0x362172['query'],_0x48c2e4[_0xa7e3('0x47')]),_0x5624f4);if(_0x362172[_0xa7e3('0x46')]['filter']){_0x3d0e12[_0xa7e3('0x4e')]=_['merge'](_0x3d0e12['where'],{'$or':_[_0xa7e3('0x3f')](_0x5624f4,function(_0x53ff2e){if(_0x53ff2e[_0xa7e3('0x50')]!==_0xa7e3('0x51')){var _0x4e7020={};_0x4e7020[_0x53ff2e['name']]={'$like':'%'+_0x362172[_0xa7e3('0x46')][_0xa7e3('0x52')]+'%'};return _0x4e7020;}})});}_0x3d0e12=_['merge']({},_0x3d0e12,_0x362172[_0xa7e3('0x53')]);var _0x1e1c75={'where':_0x3d0e12['where']};return db[_0xa7e3('0x40')]['count'](_0x1e1c75)[_0xa7e3('0x21')](function(_0x5273bd){_0x58da42[_0xa7e3('0x33')]=_0x5273bd;if(_0x362172[_0xa7e3('0x46')]['includeAll']){_0x3d0e12[_0xa7e3('0x54')]=[{'all':!![]}];}return db[_0xa7e3('0x40')][_0xa7e3('0x55')](_0x3d0e12);})[_0xa7e3('0x21')](function(_0x1b9677){_0x58da42[_0xa7e3('0x56')]=_0x1b9677;return _0x58da42;})['then'](respondWithFilteredResult(_0x423245,_0x3d0e12))[_0xa7e3('0x57')](handleError(_0x423245,null));};exports[_0xa7e3('0x58')]=function(_0x21e4c9,_0x2b8a03){var _0x1ce414={'raw':!![],'where':{'id':_0x21e4c9[_0xa7e3('0x59')]['id']}},_0x2b8cb5={};_0x2b8cb5[_0xa7e3('0x44')]=_[_0xa7e3('0x45')](db['ChatQueue'][_0xa7e3('0x41')]);_0x2b8cb5['query']=_['keys'](_0x21e4c9[_0xa7e3('0x46')]);_0x2b8cb5[_0xa7e3('0x47')]=_[_0xa7e3('0x48')](_0x2b8cb5['model'],_0x2b8cb5[_0xa7e3('0x46')]);_0x1ce414[_0xa7e3('0x49')]=_['intersection'](_0x2b8cb5[_0xa7e3('0x44')],qs[_0xa7e3('0x4a')](_0x21e4c9[_0xa7e3('0x46')][_0xa7e3('0x4a')]));_0x1ce414[_0xa7e3('0x49')]=_0x1ce414[_0xa7e3('0x49')][_0xa7e3('0x5a')]?_0x1ce414[_0xa7e3('0x49')]:_0x2b8cb5[_0xa7e3('0x44')];if(_0x21e4c9[_0xa7e3('0x46')][_0xa7e3('0x5b')]){_0x1ce414['include']=[{'all':!![]}];}_0x1ce414=_[_0xa7e3('0x5c')]({},_0x1ce414,_0x21e4c9['options']);return db[_0xa7e3('0x40')][_0xa7e3('0x5d')](_0x1ce414)['then'](handleEntityNotFound(_0x2b8a03,null))['then'](respondWithResult(_0x2b8a03,null))['catch'](handleError(_0x2b8a03,null));};exports[_0xa7e3('0x5e')]=function(_0x19e29c,_0x343bf6){return db[_0xa7e3('0x40')][_0xa7e3('0x5e')](_0x19e29c[_0xa7e3('0x5f')],{})[_0xa7e3('0x21')](function(_0x55b632){var _0x2e574e=_0x19e29c[_0xa7e3('0x60')][_0xa7e3('0x61')]({'plain':!![]});if(!_0x2e574e)throw new Error(_0xa7e3('0x62'));if(_0x2e574e['role']===_0xa7e3('0x60')){var _0x4de898=_0x55b632[_0xa7e3('0x61')]({'plain':!![]});var _0x41d7bd=_0xa7e3('0x3a');return db[_0xa7e3('0x63')][_0xa7e3('0x5d')]({'where':{'name':_0x41d7bd,'userProfileId':_0x2e574e['userProfileId']},'raw':!![]})[_0xa7e3('0x21')](function(_0x9b05ba){if(_0x9b05ba&&_0x9b05ba[_0xa7e3('0x64')]===0x0){return db[_0xa7e3('0x65')]['create']({'name':_0x4de898[_0xa7e3('0x3c')],'resourceId':_0x4de898['id'],'type':_0x9b05ba[_0xa7e3('0x3c')],'sectionId':_0x9b05ba['id']},{})['then'](function(){return _0x55b632;});}else{return _0x55b632;}})[_0xa7e3('0x57')](function(_0x583ad0){logger[_0xa7e3('0x27')](_0xa7e3('0x66'),_0x583ad0);throw _0x583ad0;});}return _0x55b632;})[_0xa7e3('0x21')](respondWithResult(_0x343bf6,0xc9))['catch'](handleError(_0x343bf6,null));};exports[_0xa7e3('0x67')]=function(_0x568dee,_0x56ed41){if(_0x568dee[_0xa7e3('0x5f')]['id']){delete _0x568dee[_0xa7e3('0x5f')]['id'];}return db['ChatQueue'][_0xa7e3('0x5d')]({'where':{'id':_0x568dee[_0xa7e3('0x59')]['id']}})[_0xa7e3('0x21')](handleEntityNotFound(_0x56ed41,null))[_0xa7e3('0x21')](saveUpdates(_0x568dee[_0xa7e3('0x5f')],null))['then'](respondWithResult(_0x56ed41,null))[_0xa7e3('0x57')](handleError(_0x56ed41,null));};exports['destroy']=function(_0x55d4af,_0x1345f2){return db[_0xa7e3('0x40')][_0xa7e3('0x5d')]({'where':{'id':_0x55d4af[_0xa7e3('0x59')]['id']}})[_0xa7e3('0x21')](handleEntityNotFound(_0x1345f2,null))[_0xa7e3('0x21')](removeEntity(_0x1345f2,null))['catch'](handleError(_0x1345f2,null));};exports[_0xa7e3('0x68')]=function(_0x8642bc,_0x522fbc){return db[_0xa7e3('0x40')][_0xa7e3('0x68')]()[_0xa7e3('0x21')](respondWithResult(_0x522fbc,null))[_0xa7e3('0x57')](handleError(_0x522fbc,null));};exports[_0xa7e3('0x69')]=function(_0x3570b3,_0x233b02,_0x4c99b3){var _0x205394={'raw':!![],'where':{}},_0x3dd27c={},_0x3613ca;return db[_0xa7e3('0x40')][_0xa7e3('0x6a')]({'where':{'id':_0x3570b3[_0xa7e3('0x59')]['id']}})['then'](handleEntityNotFound(_0x233b02,null))[_0xa7e3('0x21')](function(_0x4b0a4b){if(_0x4b0a4b){_0x3613ca=_0x4b0a4b[_0xa7e3('0x61')]({'plain':!![]});_0x3dd27c['model']=_[_0xa7e3('0x45')](db[_0xa7e3('0x6b')]['rawAttributes']);_0x3dd27c['query']=_['keys'](_0x3570b3[_0xa7e3('0x46')]);_0x3dd27c[_0xa7e3('0x47')]=_[_0xa7e3('0x48')](_0x3dd27c[_0xa7e3('0x44')],_0x3dd27c['query']);_0x205394['attributes']=_[_0xa7e3('0x48')](_0x3dd27c['model'],qs[_0xa7e3('0x4a')](_0x3570b3[_0xa7e3('0x46')][_0xa7e3('0x4a')]));_0x205394[_0xa7e3('0x49')]=_0x205394[_0xa7e3('0x49')][_0xa7e3('0x5a')]?_0x205394[_0xa7e3('0x49')]:_0x3dd27c['model'];if(!_0x3570b3[_0xa7e3('0x46')]['hasOwnProperty'](_0xa7e3('0x6c'))){_0x205394[_0xa7e3('0x32')]=qs['limit'](_0x3570b3['query'][_0xa7e3('0x32')]);_0x205394[_0xa7e3('0x30')]=qs[_0xa7e3('0x30')](_0x3570b3['query']['offset']);}_0x205394[_0xa7e3('0x4c')]=qs['sort'](_0x3570b3['query'][_0xa7e3('0x4d')]);_0x205394['where']=qs[_0xa7e3('0x47')](_['pick'](_0x3570b3[_0xa7e3('0x46')],_0x3dd27c[_0xa7e3('0x47')]));_0x205394[_0xa7e3('0x4e')]['ChatQueueId']=_0x4b0a4b['id'];if(_0x3570b3['query'][_0xa7e3('0x52')]){_0x205394[_0xa7e3('0x4e')]=_['merge'](_0x205394['where'],{'$or':_[_0xa7e3('0x3f')](_0x205394[_0xa7e3('0x49')],function(_0x27a876){var _0x14525d={};_0x14525d[_0x27a876]={'$like':'%'+_0x3570b3[_0xa7e3('0x46')][_0xa7e3('0x52')]+'%'};return _0x14525d;})});}_0x205394=_[_0xa7e3('0x5c')]({},_0x205394,_0x3570b3[_0xa7e3('0x53')]);return db[_0xa7e3('0x6b')]['findAll'](_0x205394);}})['then'](function(_0x15d57d){if(_0x15d57d){return db['User'][_0xa7e3('0x6d')]({'where':{'id':_[_0xa7e3('0x3f')](_0x15d57d,_0xa7e3('0x6e')),'role':_0xa7e3('0x6f')},'attributes':['id',_0xa7e3('0x3c'),_0xa7e3('0x70'),_0xa7e3('0x71'),_0xa7e3('0x72')]});}})[_0xa7e3('0x21')](function(_0x2be488){if(_0x2be488){return{'count':_0x2be488['count'],'rows':_['map'](_0x2be488[_0xa7e3('0x56')],function(_0xc8cafd){return{'membername':_0xc8cafd[_0xa7e3('0x3c')],'UserId':_0xc8cafd['id'],'queue_name':_0x3613ca['name'],'ChatQueueId':_0x3613ca['id'],'interface':util['format'](_0xa7e3('0x73'),'SIP',_0xc8cafd[_0xa7e3('0x3c')]),'penalty':0x0,'paused':_0xc8cafd[_0xa7e3('0x70')],'createdAt':_0xc8cafd[_0xa7e3('0x72')],'updatedAt':_0xc8cafd[_0xa7e3('0x71')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xa7e3('0x21')](respondWithFilteredResult(_0x233b02,_0x205394))[_0xa7e3('0x57')](handleError(_0x233b02,null));};exports[_0xa7e3('0x74')]=function(_0x2c4d8b,_0x544b65,_0x3149ad){var _0x45358e={};var _0x29cb61={};var _0x10b560;var _0x597199;return db['ChatQueue']['findOne']({'where':{'id':_0x2c4d8b['params']['id']}})[_0xa7e3('0x21')](handleEntityNotFound(_0x544b65,null))[_0xa7e3('0x21')](function(_0x268583){if(_0x268583){_0x10b560=_0x268583;_0x29cb61[_0xa7e3('0x44')]=_['keys'](db[_0xa7e3('0x75')][_0xa7e3('0x41')]);_0x29cb61[_0xa7e3('0x46')]=_[_0xa7e3('0x45')](_0x2c4d8b[_0xa7e3('0x46')]);_0x29cb61[_0xa7e3('0x47')]=_[_0xa7e3('0x48')](_0x29cb61[_0xa7e3('0x44')],_0x29cb61[_0xa7e3('0x46')]);_0x45358e[_0xa7e3('0x49')]=_[_0xa7e3('0x48')](_0x29cb61[_0xa7e3('0x44')],qs[_0xa7e3('0x4a')](_0x2c4d8b['query']['fields']));_0x45358e[_0xa7e3('0x49')]=_0x45358e[_0xa7e3('0x49')][_0xa7e3('0x5a')]?_0x45358e[_0xa7e3('0x49')]:_0x29cb61[_0xa7e3('0x44')];_0x45358e[_0xa7e3('0x4c')]=qs[_0xa7e3('0x4d')](_0x2c4d8b[_0xa7e3('0x46')][_0xa7e3('0x4d')]);_0x45358e[_0xa7e3('0x4e')]=qs[_0xa7e3('0x47')](_['pick'](_0x2c4d8b[_0xa7e3('0x46')],_0x29cb61[_0xa7e3('0x47')]));if(_0x2c4d8b[_0xa7e3('0x46')][_0xa7e3('0x52')]){_0x45358e[_0xa7e3('0x4e')]=_[_0xa7e3('0x5c')](_0x45358e[_0xa7e3('0x4e')],{'$or':_[_0xa7e3('0x3f')](_0x45358e['attributes'],function(_0x27a76a){var _0x4d36c3={};_0x4d36c3[_0x27a76a]={'$like':'%'+_0x2c4d8b[_0xa7e3('0x46')]['filter']+'%'};return _0x4d36c3;})});}_0x45358e=_['merge']({},_0x45358e,_0x2c4d8b[_0xa7e3('0x53')]);return _0x10b560['getTeams'](_0x45358e);}})[_0xa7e3('0x21')](function(_0x43d1dc){if(_0x43d1dc){_0x597199=_0x43d1dc[_0xa7e3('0x5a')];if(!_0x2c4d8b['query']['hasOwnProperty'](_0xa7e3('0x6c'))){_0x45358e['limit']=qs['limit'](_0x2c4d8b[_0xa7e3('0x46')][_0xa7e3('0x32')]);_0x45358e[_0xa7e3('0x30')]=qs[_0xa7e3('0x30')](_0x2c4d8b[_0xa7e3('0x46')]['offset']);}return _0x10b560['getTeams'](_0x45358e);}})['then'](function(_0x35b600){if(_0x35b600){return _0x35b600?{'count':_0x597199,'rows':_0x35b600}:null;}})['then'](respondWithResult(_0x544b65,null))[_0xa7e3('0x57')](handleError(_0x544b65,null));};exports[_0xa7e3('0x76')]=function(_0x1eb518,_0x2fdbe6,_0x5dd3de){var _0x685fe=_0x1eb518[_0xa7e3('0x5f')][_0xa7e3('0x77')];return db[_0xa7e3('0x75')][_0xa7e3('0x55')]({'where':{'id':_0x685fe},'attributes':['id'],'include':[{'model':db[_0xa7e3('0x78')],'as':_0xa7e3('0x79'),'attributes':['id','name',_0xa7e3('0x7a'),'voicePause',_0xa7e3('0x7b')],'raw':!![]}]})[_0xa7e3('0x21')](function(_0x5d50f1){if(_0x5d50f1){var _0x10d14b=_[_0xa7e3('0x7c')](_0x5d50f1,function(_0x7f8575){var _0x19bb38=_0x7f8575[_0xa7e3('0x61')]({'plain':!![]});return _0x19bb38[_0xa7e3('0x79')];});return db[_0xa7e3('0x40')][_0xa7e3('0x5d')]({'where':{'id':_0x1eb518['params']['id']}})['then'](function(_0x33b07f){return db[_0xa7e3('0x7d')][_0xa7e3('0x7e')](function(_0x5d5e47){return _0x33b07f['addTeams'](_0x685fe,{'transaction':_0x5d5e47})[_0xa7e3('0x21')](function(){return BPromise[_0xa7e3('0x7f')](_0x10d14b,function(_0x3b3daf){return db[_0xa7e3('0x6b')][_0xa7e3('0x80')]({'where':{'UserId':_0x3b3daf['id'],'ChatQueueId':_0x1eb518[_0xa7e3('0x59')]['id']},'transaction':_0x5d5e47});});})[_0xa7e3('0x21')](function(){_0x10d14b[_0xa7e3('0x81')](function(_0x3f06ae){socket['emit'](_0xa7e3('0x82'),{'UserId':_0x3f06ae['id'],'ChatQueueId':_0x33b07f['id']});});});});});}})[_0xa7e3('0x21')](respondWithStatusCode(_0x2fdbe6,null))['catch'](handleError(_0x2fdbe6,null));};exports['removeTeams']=function(_0x217b20,_0x3a669c,_0x6b0b10){return db[_0xa7e3('0x75')][_0xa7e3('0x55')]({'where':{'id':_0x217b20['query'][_0xa7e3('0x77')]},'attributes':['id'],'include':[{'model':db[_0xa7e3('0x78')],'as':_0xa7e3('0x79'),'attributes':['id'],'raw':!![]}]})[_0xa7e3('0x21')](handleEntityNotFound(_0x3a669c,null))[_0xa7e3('0x21')](function(_0x206062){var _0x2aeb3b=_['map'](_0x206062,'id');var _0x326597=[];var _0x4c7d41=[];var _0x54f299=squel[_0xa7e3('0x83')]();_0x54f299['field'](_0xa7e3('0x84'))[_0xa7e3('0x85')](_0xa7e3('0x86'),'tq')['join'](_0xa7e3('0x87'),'ut',_0xa7e3('0x88'))[_0xa7e3('0x4e')](_0xa7e3('0x89'),_0x217b20[_0xa7e3('0x59')]['id']);for(var _0x3583dd=0x0;_0x3583dd<_0x206062[_0xa7e3('0x5a')];_0x3583dd+=0x1){let _0x28b8c3=_0x206062[_0x3583dd];for(var _0x24750e=0x0;_0x24750e<_0x28b8c3[_0xa7e3('0x79')][_0xa7e3('0x5a')];_0x24750e+=0x1){let _0x256c91=_0x28b8c3[_0xa7e3('0x79')][_0x24750e];var _0x5eb48a=_0x54f299[_0xa7e3('0x8a')]();_0x5eb48a[_0xa7e3('0x4e')]('ut.UserId\x20=\x20?',_0x256c91['id']);_0x4c7d41['push'](db['sequelize'][_0xa7e3('0x46')](_0x5eb48a[_0xa7e3('0x8b')](),{'type':db['sequelize'][_0xa7e3('0x8c')][_0xa7e3('0x8d')]})[_0xa7e3('0x21')](function(_0x70b3d){if(_0x70b3d[_0xa7e3('0x5a')]===0x1){return _0x256c91['id'];}else{var _0x5325ee=_[_0xa7e3('0x8e')](_['map'](_0x70b3d,_0xa7e3('0x8f')),function(_0x4a6eac){return _[_0xa7e3('0x90')](_0x2aeb3b,_0x4a6eac);});if(_0x5325ee){return _0x256c91['id'];}}}));}}return BPromise[_0xa7e3('0x91')](_0x4c7d41)[_0xa7e3('0x21')](function(_0x3036fd){_0x326597=_(_0x326597)[_0xa7e3('0x92')](_0x3036fd)[_0xa7e3('0x93')]()['value']();return db[_0xa7e3('0x40')][_0xa7e3('0x5d')]({'where':{'id':_0x217b20['params']['id']}})[_0xa7e3('0x21')](function(_0x50e70e){return db[_0xa7e3('0x7d')][_0xa7e3('0x7e')](function(_0x326af0){return _0x50e70e['removeTeams'](_0x217b20['query'][_0xa7e3('0x77')],{'transaction':_0x326af0})[_0xa7e3('0x21')](function(){if(!_['isEmpty'](_0x326597)){return _0x50e70e[_0xa7e3('0x94')](_0x326597,{'transaction':_0x326af0});}})[_0xa7e3('0x21')](function(){_0x326597['forEach'](function(_0x1796b0){socket[_0xa7e3('0x95')](_0xa7e3('0x96'),{'UserId':_0x1796b0,'ChatQueueId':_0x50e70e['id']});});});});});});})[_0xa7e3('0x21')](respondWithStatusCode(_0x3a669c,null))[_0xa7e3('0x57')](handleError(_0x3a669c,null));};exports[_0xa7e3('0x97')]=function(_0x2cf52f,_0x45973b,_0x5ef3cd){return db[_0xa7e3('0x40')][_0xa7e3('0x5d')]({'where':{'id':_0x2cf52f['params']['id']}})[_0xa7e3('0x21')](handleEntityNotFound(_0x45973b,null))[_0xa7e3('0x21')](function(_0x3de09d){if(_0x3de09d){return _0x3de09d[_0xa7e3('0x97')](_0x2cf52f[_0xa7e3('0x5f')][_0xa7e3('0x77')],_[_0xa7e3('0x98')](_0x2cf52f['body'],['ids','id'])||{})[_0xa7e3('0x99')](function(_0x494b08){for(var _0x4a047a=0x0;_0x4a047a<_0x2cf52f[_0xa7e3('0x5f')]['ids'][_0xa7e3('0x5a')];_0x4a047a+=0x1){socket['emit']('userChatQueue:save',{'UserId':Number(_0x2cf52f[_0xa7e3('0x5f')][_0xa7e3('0x77')][_0x4a047a]),'ChatQueueId':Number(_0x2cf52f[_0xa7e3('0x59')]['id'])});}return _0x494b08;});}})[_0xa7e3('0x21')](respondWithResult(_0x45973b,null))[_0xa7e3('0x57')](handleError(_0x45973b,null));};exports[_0xa7e3('0x94')]=function(_0x4ccf8b,_0x40a3b2,_0x23762a){return db['ChatQueue'][_0xa7e3('0x5d')]({'where':{'id':_0x4ccf8b['params']['id']}})['then'](handleEntityNotFound(_0x40a3b2,null))[_0xa7e3('0x21')](function(_0x583722){if(_0x583722){return _0x583722[_0xa7e3('0x94')](_0x4ccf8b[_0xa7e3('0x46')][_0xa7e3('0x77')])[_0xa7e3('0x21')](function(){if(_[_0xa7e3('0x9a')](_0x4ccf8b[_0xa7e3('0x46')][_0xa7e3('0x77')])){for(var _0x1eee84=0x0;_0x1eee84<_0x4ccf8b[_0xa7e3('0x46')][_0xa7e3('0x77')][_0xa7e3('0x5a')];_0x1eee84+=0x1){socket[_0xa7e3('0x95')](_0xa7e3('0x96'),{'UserId':Number(_0x4ccf8b['query'][_0xa7e3('0x77')][_0x1eee84]),'ChatQueueId':Number(_0x4ccf8b['params']['id'])});}}else{socket['emit'](_0xa7e3('0x96'),{'UserId':Number(_0x4ccf8b[_0xa7e3('0x46')]['ids']),'ChatQueueId':Number(_0x4ccf8b['params']['id'])});}});}})[_0xa7e3('0x21')](respondWithStatusCode(_0x40a3b2,null))[_0xa7e3('0x57')](handleError(_0x40a3b2,null));};exports[_0xa7e3('0x9b')]=function(_0x385ff5,_0xc1bbb9,_0x54df16){var _0x29bbb3={};var _0x3edd23={};var _0x34f9b7;var _0x17d08a;return db[_0xa7e3('0x40')][_0xa7e3('0x6a')]({'where':{'id':_0x385ff5['params']['id']}})['then'](handleEntityNotFound(_0xc1bbb9,null))[_0xa7e3('0x21')](function(_0x1e572c){if(_0x1e572c){_0x34f9b7=_0x1e572c;_0x3edd23[_0xa7e3('0x44')]=_[_0xa7e3('0x45')](db[_0xa7e3('0x78')][_0xa7e3('0x41')]);_0x3edd23[_0xa7e3('0x46')]=_[_0xa7e3('0x45')](_0x385ff5['query']);_0x3edd23[_0xa7e3('0x47')]=_[_0xa7e3('0x48')](_0x3edd23[_0xa7e3('0x44')],_0x3edd23[_0xa7e3('0x46')]);_0x29bbb3[_0xa7e3('0x49')]=_['intersection'](_0x3edd23[_0xa7e3('0x44')],qs['fields'](_0x385ff5[_0xa7e3('0x46')][_0xa7e3('0x4a')]));_0x29bbb3[_0xa7e3('0x49')]=_0x29bbb3['attributes'][_0xa7e3('0x5a')]?_0x29bbb3[_0xa7e3('0x49')]:_0x3edd23['model'];_0x29bbb3[_0xa7e3('0x4c')]=qs[_0xa7e3('0x4d')](_0x385ff5[_0xa7e3('0x46')][_0xa7e3('0x4d')]);_0x29bbb3[_0xa7e3('0x4e')]=qs['filters'](_[_0xa7e3('0x4f')](_0x385ff5[_0xa7e3('0x46')],_0x3edd23[_0xa7e3('0x47')]));if(_0x385ff5[_0xa7e3('0x46')][_0xa7e3('0x52')]){_0x29bbb3[_0xa7e3('0x4e')]=_['merge'](_0x29bbb3[_0xa7e3('0x4e')],{'$or':_[_0xa7e3('0x3f')](_0x29bbb3[_0xa7e3('0x49')],function(_0x11fad4){var _0xf36f56={};_0xf36f56[_0x11fad4]={'$like':'%'+_0x385ff5['query'][_0xa7e3('0x52')]+'%'};return _0xf36f56;})});}_0x29bbb3=_['merge']({},_0x29bbb3,_0x385ff5[_0xa7e3('0x53')]);return _0x34f9b7[_0xa7e3('0x9b')](_0x29bbb3);}})['then'](function(_0x45d261){if(_0x45d261){_0x17d08a=_0x45d261[_0xa7e3('0x5a')];if(!_0x385ff5['query']['hasOwnProperty'](_0xa7e3('0x6c'))){_0x29bbb3['limit']=qs[_0xa7e3('0x32')](_0x385ff5[_0xa7e3('0x46')][_0xa7e3('0x32')]);_0x29bbb3['offset']=qs[_0xa7e3('0x30')](_0x385ff5[_0xa7e3('0x46')][_0xa7e3('0x30')]);}return _0x34f9b7[_0xa7e3('0x9b')](_0x29bbb3);}})[_0xa7e3('0x21')](function(_0xd319de){if(_0xd319de){return _0xd319de?{'count':_0x17d08a,'rows':_0xd319de}:null;}})[_0xa7e3('0x21')](respondWithResult(_0xc1bbb9,null))['catch'](handleError(_0xc1bbb9,null));};
\ No newline at end of file
index 33a64c4..0803d8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf5a=['remove','emit','hook','exports','../../mysqldb','setMaxListeners','save','update'];(function(_0x18d72a,_0x20db5f){var _0x37153e=function(_0x5cfd82){while(--_0x5cfd82){_0x18d72a['push'](_0x18d72a['shift']());}};_0x37153e(++_0x20db5f);}(_0xaf5a,0x144));var _0xaaf5=function(_0x40d728,_0x190ef2){_0x40d728=_0x40d728-0x0;var _0x207740=_0xaf5a[_0x40d728];return _0x207740;};'use strict';var EventEmitter=require('events');var ChatQueue=require(_0xaaf5('0x0'))['db']['ChatQueue'];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0xaaf5('0x1')](0x0);var events={'afterCreate':_0xaaf5('0x2'),'afterUpdate':_0xaaf5('0x3'),'afterDestroy':_0xaaf5('0x4')};function emitEvent(_0x337a3){return function(_0x277e58,_0x2f9a11,_0xc037e5){ChatQueueEvents['emit'](_0x337a3+':'+_0x277e58['id'],_0x277e58);ChatQueueEvents[_0xaaf5('0x5')](_0x337a3,_0x277e58);_0xc037e5(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatQueue[_0xaaf5('0x6')](e,emitEvent(event));}}module[_0xaaf5('0x7')]=ChatQueueEvents;
\ No newline at end of file
+var _0x8881=['exports','events','../../mysqldb','ChatQueue','setMaxListeners','remove','emit','hasOwnProperty','hook'];(function(_0x561432,_0x21ec65){var _0x3485b6=function(_0x3e022f){while(--_0x3e022f){_0x561432['push'](_0x561432['shift']());}};_0x3485b6(++_0x21ec65);}(_0x8881,0xd0));var _0x1888=function(_0x2b55b5,_0x78505e){_0x2b55b5=_0x2b55b5-0x0;var _0x103d28=_0x8881[_0x2b55b5];return _0x103d28;};'use strict';var EventEmitter=require(_0x1888('0x0'));var ChatQueue=require(_0x1888('0x1'))['db'][_0x1888('0x2')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0x1888('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x1888('0x4')};function emitEvent(_0x2f6225){return function(_0x5ead29,_0x14ebe5,_0x4f738c){ChatQueueEvents[_0x1888('0x5')](_0x2f6225+':'+_0x5ead29['id'],_0x5ead29);ChatQueueEvents['emit'](_0x2f6225,_0x5ead29);_0x4f738c(null);};}for(var e in events){if(events[_0x1888('0x6')](e)){var event=events[e];ChatQueue[_0x1888('0x7')](e,emitEvent(event));}}module[_0x1888('0x8')]=ChatQueueEvents;
\ No newline at end of file
index 81bbb59..f17c6c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0cee=['bluebird','request-promise','path','rimraf','../../config/environment','./chatQueue.attributes','exports','ChatQueue','lodash','api'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0cee,0xb2));var _0xe0ce=function(_0x3e21f5,_0x49d2e0){_0x3e21f5=_0x3e21f5-0x0;var _0x2858a7=_0x0cee[_0x3e21f5];return _0x2858a7;};'use strict';var _=require(_0xe0ce('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xe0ce('0x1'));var moment=require('moment');var BPromise=require(_0xe0ce('0x2'));var rp=require(_0xe0ce('0x3'));var fs=require('fs');var path=require(_0xe0ce('0x4'));var rimraf=require(_0xe0ce('0x5'));var config=require(_0xe0ce('0x6'));var attributes=require(_0xe0ce('0x7'));module[_0xe0ce('0x8')]=function(_0x236da1,_0x3741b7){return _0x236da1['define'](_0xe0ce('0x9'),attributes,{'tableName':'chat_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8606=['bluebird','request-promise','path','rimraf','../../config/environment','./chatQueue.attributes','define','ChatQueue','chat_queues','lodash','util','moment'];(function(_0x4e97a1,_0x17dd88){var _0x4304e5=function(_0x12720b){while(--_0x12720b){_0x4e97a1['push'](_0x4e97a1['shift']());}};_0x4304e5(++_0x17dd88);}(_0x8606,0x165));var _0x6860=function(_0x358913,_0x52ed94){_0x358913=_0x358913-0x0;var _0x41c913=_0x8606[_0x358913];return _0x41c913;};'use strict';var _=require(_0x6860('0x0'));var util=require(_0x6860('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x6860('0x2'));var BPromise=require(_0x6860('0x3'));var rp=require(_0x6860('0x4'));var fs=require('fs');var path=require(_0x6860('0x5'));var rimraf=require(_0x6860('0x6'));var config=require(_0x6860('0x7'));var attributes=require(_0x6860('0x8'));module['exports']=function(_0x53d124,_0x533c8e){return _0x53d124[_0x6860('0x9')](_0x6860('0xa'),attributes,{'tableName':_0x6860('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 46628ed..86b6a2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6426=['randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./chatQueue.socket','register','request','then','info','ChatQueue,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','GetChatQueue','raw','options','where','attributes','limit','include','map','model','debug','ShowChatQueue','find','lodash','util','moment','bluebird'];(function(_0x355e0e,_0x5401d1){var _0x3a10ea=function(_0x52d4c7){while(--_0x52d4c7){_0x355e0e['push'](_0x355e0e['shift']());}};_0x3a10ea(++_0x5401d1);}(_0x6426,0x15b));var _0x6642=function(_0x518940,_0x316148){_0x518940=_0x518940-0x0;var _0x2bca4a=_0x6426[_0x518940];return _0x2bca4a;};'use strict';var _=require(_0x6642('0x0'));var util=require(_0x6642('0x1'));var moment=require(_0x6642('0x2'));var BPromise=require(_0x6642('0x3'));var rs=require(_0x6642('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6642('0x5'))['db'];var utils=require(_0x6642('0x6'));var logger=require('../../config/logger')(_0x6642('0x7'));var config=require(_0x6642('0x8'));var jayson=require(_0x6642('0x9'));var client=jayson[_0x6642('0xa')][_0x6642('0xb')]({'port':0x232a});config[_0x6642('0xc')]=_['defaults'](config[_0x6642('0xc')],{'host':_0x6642('0xd'),'port':0x18eb});var socket=require(_0x6642('0xe'))(new Redis(config[_0x6642('0xc')]));require(_0x6642('0xf'))[_0x6642('0x10')](socket);function respondWithRpcPromise(_0x18e2b3,_0x451f34,_0x15e26b){return new BPromise(function(_0x1c4e57,_0xcb2bda){return client[_0x6642('0x11')](_0x18e2b3,_0x15e26b)[_0x6642('0x12')](function(_0x588474){logger[_0x6642('0x13')](_0x6642('0x14'),_0x451f34,_0x6642('0x15'));logger['debug']('ChatQueue,\x20%s,\x20%s,\x20%s',_0x451f34,_0x6642('0x15'),JSON[_0x6642('0x16')](_0x588474));if(_0x588474[_0x6642('0x17')]){if(_0x588474[_0x6642('0x17')][_0x6642('0x18')]===0x1f4){logger[_0x6642('0x17')]('ChatQueue,\x20%s,\x20%s',_0x451f34,_0x588474[_0x6642('0x17')][_0x6642('0x19')]);return _0xcb2bda(_0x588474[_0x6642('0x17')][_0x6642('0x19')]);}logger[_0x6642('0x17')](_0x6642('0x14'),_0x451f34,_0x588474['error'][_0x6642('0x19')]);return _0x1c4e57(_0x588474[_0x6642('0x17')][_0x6642('0x19')]);}else{logger[_0x6642('0x13')]('ChatQueue,\x20%s,\x20%s',_0x451f34,_0x6642('0x15'));_0x1c4e57(_0x588474['result'][_0x6642('0x19')]);}})[_0x6642('0x1a')](function(_0x1c4bb3){logger[_0x6642('0x17')]('ChatQueue,\x20%s,\x20%s',_0x451f34,_0x1c4bb3);_0xcb2bda(_0x1c4bb3);});});}exports[_0x6642('0x1b')]=function(_0x5d5716){var _0x53082c=this;return new Promise(function(_0x29db40,_0x49198c){return db['ChatQueue']['findAll']({'raw':_0x5d5716['options']?_0x5d5716['options'][_0x6642('0x1c')]===undefined?!![]:![]:!![],'where':_0x5d5716[_0x6642('0x1d')]?_0x5d5716[_0x6642('0x1d')][_0x6642('0x1e')]||null:null,'attributes':_0x5d5716[_0x6642('0x1d')]?_0x5d5716[_0x6642('0x1d')][_0x6642('0x1f')]||null:null,'limit':_0x5d5716[_0x6642('0x1d')]?_0x5d5716[_0x6642('0x1d')][_0x6642('0x20')]||null:null,'include':_0x5d5716[_0x6642('0x1d')]?_0x5d5716[_0x6642('0x1d')][_0x6642('0x21')]?_[_0x6642('0x22')](_0x5d5716['options'][_0x6642('0x21')],function(_0xd129fd){return{'model':db[_0xd129fd[_0x6642('0x23')]],'as':_0xd129fd['as'],'attributes':_0xd129fd[_0x6642('0x1f')],'include':_0xd129fd['include']?_[_0x6642('0x22')](_0xd129fd['include'],function(_0x1ff1fd){return{'model':db[_0x1ff1fd['model']],'as':_0x1ff1fd['as'],'attributes':_0x1ff1fd[_0x6642('0x1f')],'include':_0x1ff1fd[_0x6642('0x21')]?_[_0x6642('0x22')](_0x1ff1fd[_0x6642('0x21')],function(_0x54406c){return{'model':db[_0x54406c[_0x6642('0x23')]],'as':_0x54406c['as'],'attributes':_0x54406c['attributes']};}):[]};}):[]};}):[]:[]})[_0x6642('0x12')](function(_0x152674){logger[_0x6642('0x13')]('GetChatQueue',_0x5d5716);logger[_0x6642('0x24')]('GetChatQueue',_0x5d5716,JSON['stringify'](_0x152674));_0x29db40(_0x152674);})[_0x6642('0x1a')](function(_0x5df6bf){logger[_0x6642('0x17')](_0x6642('0x1b'),_0x5df6bf[_0x6642('0x19')],_0x5d5716);_0x49198c(_0x53082c[_0x6642('0x17')](0x1f4,_0x5df6bf[_0x6642('0x19')]));});});};exports[_0x6642('0x25')]=function(_0x40e126){var _0x1b4fdd=this;return new Promise(function(_0x2cb478,_0x1f4a61){return db['ChatQueue'][_0x6642('0x26')]({'raw':_0x40e126[_0x6642('0x1d')]?_0x40e126[_0x6642('0x1d')][_0x6642('0x1c')]===undefined?!![]:![]:!![],'where':_0x40e126[_0x6642('0x1d')]?_0x40e126[_0x6642('0x1d')][_0x6642('0x1e')]||null:null,'attributes':_0x40e126[_0x6642('0x1d')]?_0x40e126[_0x6642('0x1d')][_0x6642('0x1f')]||null:null,'include':_0x40e126[_0x6642('0x1d')]?_0x40e126[_0x6642('0x1d')][_0x6642('0x21')]?_[_0x6642('0x22')](_0x40e126[_0x6642('0x1d')]['include'],function(_0x87c9bd){return{'model':db[_0x87c9bd[_0x6642('0x23')]],'as':_0x87c9bd['as'],'attributes':_0x87c9bd[_0x6642('0x1f')],'include':_0x87c9bd['include']?_[_0x6642('0x22')](_0x87c9bd[_0x6642('0x21')],function(_0x4c2e87){return{'model':db[_0x4c2e87[_0x6642('0x23')]],'as':_0x4c2e87['as'],'attributes':_0x4c2e87[_0x6642('0x1f')],'include':_0x4c2e87['include']?_[_0x6642('0x22')](_0x4c2e87[_0x6642('0x21')],function(_0x45c147){return{'model':db[_0x45c147[_0x6642('0x23')]],'as':_0x45c147['as'],'attributes':_0x45c147[_0x6642('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4f62b8){logger[_0x6642('0x13')]('ShowChatQueue',_0x40e126);logger[_0x6642('0x24')]('ShowChatQueue',_0x40e126,JSON[_0x6642('0x16')](_0x4f62b8));_0x2cb478(_0x4f62b8);})['catch'](function(_0x129eff){logger['error']('ShowChatQueue',_0x129eff[_0x6642('0x19')],_0x40e126);_0x1f4a61(_0x1b4fdd['error'](0x1f4,_0x129eff[_0x6642('0x19')]));});});};
\ No newline at end of file
+var _0xc359=['attributes','map','ShowChatQueue','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','http','redis','localhost','socket.io-emitter','then','info','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatQueue,\x20%s,\x20%s','message','result','catch','GetChatQueue','ChatQueue','findAll','options','raw','where','include','model'];(function(_0x5471ec,_0x1ce81a){var _0x121d4c=function(_0xefb655){while(--_0xefb655){_0x5471ec['push'](_0x5471ec['shift']());}};_0x121d4c(++_0x1ce81a);}(_0xc359,0x93));var _0x9c35=function(_0x4ce028,_0x526d4b){_0x4ce028=_0x4ce028-0x0;var _0x583d0c=_0xc359[_0x4ce028];return _0x583d0c;};'use strict';var _=require(_0x9c35('0x0'));var util=require('util');var moment=require(_0x9c35('0x1'));var BPromise=require(_0x9c35('0x2'));var rs=require(_0x9c35('0x3'));var fs=require('fs');var Redis=require(_0x9c35('0x4'));var db=require(_0x9c35('0x5'))['db'];var utils=require(_0x9c35('0x6'));var logger=require('../../config/logger')(_0x9c35('0x7'));var config=require(_0x9c35('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x9c35('0x9')]({'port':0x232a});config[_0x9c35('0xa')]=_['defaults'](config[_0x9c35('0xa')],{'host':_0x9c35('0xb'),'port':0x18eb});var socket=require(_0x9c35('0xc'))(new Redis(config[_0x9c35('0xa')]));require('./chatQueue.socket')['register'](socket);function respondWithRpcPromise(_0x81ad06,_0x5f3708,_0x4771e7){return new BPromise(function(_0x119d8f,_0x5784f0){return client['request'](_0x81ad06,_0x4771e7)[_0x9c35('0xd')](function(_0xed5e25){logger[_0x9c35('0xe')]('ChatQueue,\x20%s,\x20%s',_0x5f3708,_0x9c35('0xf'));logger[_0x9c35('0x10')](_0x9c35('0x11'),_0x5f3708,_0x9c35('0xf'),JSON[_0x9c35('0x12')](_0xed5e25));if(_0xed5e25[_0x9c35('0x13')]){if(_0xed5e25['error'][_0x9c35('0x14')]===0x1f4){logger[_0x9c35('0x13')](_0x9c35('0x15'),_0x5f3708,_0xed5e25[_0x9c35('0x13')][_0x9c35('0x16')]);return _0x5784f0(_0xed5e25['error'][_0x9c35('0x16')]);}logger[_0x9c35('0x13')]('ChatQueue,\x20%s,\x20%s',_0x5f3708,_0xed5e25[_0x9c35('0x13')]['message']);return _0x119d8f(_0xed5e25['error']['message']);}else{logger[_0x9c35('0xe')]('ChatQueue,\x20%s,\x20%s',_0x5f3708,_0x9c35('0xf'));_0x119d8f(_0xed5e25[_0x9c35('0x17')]['message']);}})[_0x9c35('0x18')](function(_0x3544a0){logger[_0x9c35('0x13')](_0x9c35('0x15'),_0x5f3708,_0x3544a0);_0x5784f0(_0x3544a0);});});}exports[_0x9c35('0x19')]=function(_0x13748f){var _0x327b83=this;return new Promise(function(_0x4c0c3e,_0x4e4b72){return db[_0x9c35('0x1a')][_0x9c35('0x1b')]({'raw':_0x13748f[_0x9c35('0x1c')]?_0x13748f[_0x9c35('0x1c')][_0x9c35('0x1d')]===undefined?!![]:![]:!![],'where':_0x13748f['options']?_0x13748f['options'][_0x9c35('0x1e')]||null:null,'attributes':_0x13748f[_0x9c35('0x1c')]?_0x13748f[_0x9c35('0x1c')]['attributes']||null:null,'limit':_0x13748f[_0x9c35('0x1c')]?_0x13748f['options']['limit']||null:null,'include':_0x13748f[_0x9c35('0x1c')]?_0x13748f[_0x9c35('0x1c')][_0x9c35('0x1f')]?_['map'](_0x13748f['options']['include'],function(_0x448aa7){return{'model':db[_0x448aa7[_0x9c35('0x20')]],'as':_0x448aa7['as'],'attributes':_0x448aa7[_0x9c35('0x21')],'include':_0x448aa7['include']?_[_0x9c35('0x22')](_0x448aa7['include'],function(_0x2e9020){return{'model':db[_0x2e9020[_0x9c35('0x20')]],'as':_0x2e9020['as'],'attributes':_0x2e9020[_0x9c35('0x21')],'include':_0x2e9020['include']?_['map'](_0x2e9020['include'],function(_0x2785c2){return{'model':db[_0x2785c2['model']],'as':_0x2785c2['as'],'attributes':_0x2785c2[_0x9c35('0x21')]};}):[]};}):[]};}):[]:[]})[_0x9c35('0xd')](function(_0x421efa){logger[_0x9c35('0xe')](_0x9c35('0x19'),_0x13748f);logger[_0x9c35('0x10')](_0x9c35('0x19'),_0x13748f,JSON[_0x9c35('0x12')](_0x421efa));_0x4c0c3e(_0x421efa);})[_0x9c35('0x18')](function(_0x5cd262){logger[_0x9c35('0x13')](_0x9c35('0x19'),_0x5cd262[_0x9c35('0x16')],_0x13748f);_0x4e4b72(_0x327b83[_0x9c35('0x13')](0x1f4,_0x5cd262['message']));});});};exports[_0x9c35('0x23')]=function(_0x3d7a1e){var _0x2bc2eb=this;return new Promise(function(_0x4d667b,_0x357052){return db[_0x9c35('0x1a')]['find']({'raw':_0x3d7a1e[_0x9c35('0x1c')]?_0x3d7a1e[_0x9c35('0x1c')][_0x9c35('0x1d')]===undefined?!![]:![]:!![],'where':_0x3d7a1e[_0x9c35('0x1c')]?_0x3d7a1e[_0x9c35('0x1c')]['where']||null:null,'attributes':_0x3d7a1e[_0x9c35('0x1c')]?_0x3d7a1e[_0x9c35('0x1c')]['attributes']||null:null,'include':_0x3d7a1e['options']?_0x3d7a1e[_0x9c35('0x1c')]['include']?_[_0x9c35('0x22')](_0x3d7a1e[_0x9c35('0x1c')][_0x9c35('0x1f')],function(_0x4bcbc0){return{'model':db[_0x4bcbc0['model']],'as':_0x4bcbc0['as'],'attributes':_0x4bcbc0[_0x9c35('0x21')],'include':_0x4bcbc0[_0x9c35('0x1f')]?_[_0x9c35('0x22')](_0x4bcbc0[_0x9c35('0x1f')],function(_0xb2a0f7){return{'model':db[_0xb2a0f7[_0x9c35('0x20')]],'as':_0xb2a0f7['as'],'attributes':_0xb2a0f7['attributes'],'include':_0xb2a0f7['include']?_[_0x9c35('0x22')](_0xb2a0f7[_0x9c35('0x1f')],function(_0x4f24fb){return{'model':db[_0x4f24fb[_0x9c35('0x20')]],'as':_0x4f24fb['as'],'attributes':_0x4f24fb['attributes']};}):[]};}):[]};}):[]:[]})[_0x9c35('0xd')](function(_0x5dcd8e){logger[_0x9c35('0xe')](_0x9c35('0x23'),_0x3d7a1e);logger[_0x9c35('0x10')](_0x9c35('0x23'),_0x3d7a1e,JSON[_0x9c35('0x12')](_0x5dcd8e));_0x4d667b(_0x5dcd8e);})[_0x9c35('0x18')](function(_0x44165f){logger[_0x9c35('0x13')](_0x9c35('0x23'),_0x44165f[_0x9c35('0x16')],_0x3d7a1e);_0x357052(_0x2bc2eb[_0x9c35('0x13')](0x1f4,_0x44165f[_0x9c35('0x16')]));});});};
\ No newline at end of file
index c49895e..1a928b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x17ba=['register','length','chatQueue:','./chatQueue.events','save','update','emit','removeListener'];(function(_0x4a90ea,_0x477e37){var _0x4fbdca=function(_0x37ea5e){while(--_0x37ea5e){_0x4a90ea['push'](_0x4a90ea['shift']());}};_0x4fbdca(++_0x477e37);}(_0x17ba,0xab));var _0xa17b=function(_0x979a4a,_0x23ce26){_0x979a4a=_0x979a4a-0x0;var _0x8aa004=_0x17ba[_0x979a4a];return _0x8aa004;};'use strict';var ChatQueueEvents=require(_0xa17b('0x0'));var events=[_0xa17b('0x1'),'remove',_0xa17b('0x2')];function createListener(_0x4563da,_0x2806ac){return function(_0x3c60e5){_0x2806ac[_0xa17b('0x3')](_0x4563da,_0x3c60e5);};}function removeListener(_0x38c13c,_0x11d7b7){return function(){ChatQueueEvents[_0xa17b('0x4')](_0x38c13c,_0x11d7b7);};}exports[_0xa17b('0x5')]=function(_0x3cced2){for(var _0xf72ed4=0x0,_0x2e3d43=events[_0xa17b('0x6')];_0xf72ed4<_0x2e3d43;_0xf72ed4++){var _0x57f9cd=events[_0xf72ed4];var _0x2ca4d3=createListener(_0xa17b('0x7')+_0x57f9cd,_0x3cced2);ChatQueueEvents['on'](_0x57f9cd,_0x2ca4d3);}};
\ No newline at end of file
+var _0xb821=['remove','removeListener','register','length','chatQueue:','save'];(function(_0x9c7479,_0xb73565){var _0x22ebff=function(_0x4568fd){while(--_0x4568fd){_0x9c7479['push'](_0x9c7479['shift']());}};_0x22ebff(++_0xb73565);}(_0xb821,0xa7));var _0x1b82=function(_0x3203ab,_0x3e8625){_0x3203ab=_0x3203ab-0x0;var _0x48bd7c=_0xb821[_0x3203ab];return _0x48bd7c;};'use strict';var ChatQueueEvents=require('./chatQueue.events');var events=[_0x1b82('0x0'),_0x1b82('0x1'),'update'];function createListener(_0x4a4f81,_0xbab478){return function(_0x578a10){_0xbab478['emit'](_0x4a4f81,_0x578a10);};}function removeListener(_0x3b1d14,_0x1403ab){return function(){ChatQueueEvents[_0x1b82('0x2')](_0x3b1d14,_0x1403ab);};}exports[_0x1b82('0x3')]=function(_0x597ca7){for(var _0x3e27c4=0x0,_0x192434=events[_0x1b82('0x4')];_0x3e27c4<_0x192434;_0x3e27c4++){var _0x3632dd=events[_0x3e27c4];var _0x18f45f=createListener(_0x1b82('0x5')+_0x3632dd,_0x597ca7);ChatQueueEvents['on'](_0x3632dd,_0x18f45f);}};
\ No newline at end of file
index 3988aeb..1f0293f 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(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x5fc3,0xa8));var _0x35fc=function(_0x1b5aea,_0x1afe6f){_0x1b5aea=_0x1b5aea-0x0;var _0x51cae9=_0x5fc3[_0x1b5aea];return _0x51cae9;};'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 _0x55ca=['post','addAgents','update','delete','destroy','removeTeams','removeAgents','exports','multer','util','Router','fs-extra','../../components/interaction/service','../../config/environment','./chatQueue.controller','get','isAuthenticated','index','describe','/:id','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','addTeams'];(function(_0x2ccfc4,_0x521080){var _0x3e573a=function(_0x196c2d){while(--_0x196c2d){_0x2ccfc4['push'](_0x2ccfc4['shift']());}};_0x3e573a(++_0x521080);}(_0x55ca,0x126));var _0xa55c=function(_0x39efbf,_0x118364){_0x39efbf=_0x39efbf-0x0;var _0xcbd510=_0x55ca[_0x39efbf];return _0xcbd510;};'use strict';var multer=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa55c('0x2')]();var fs_extra=require(_0xa55c('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xa55c('0x4'));var config=require(_0xa55c('0x5'));var controller=require(_0xa55c('0x6'));router[_0xa55c('0x7')]('/',auth[_0xa55c('0x8')](),controller[_0xa55c('0x9')]);router[_0xa55c('0x7')]('/describe',auth[_0xa55c('0x8')](),controller[_0xa55c('0xa')]);router['get'](_0xa55c('0xb'),auth[_0xa55c('0x8')](),controller['show']);router['get'](_0xa55c('0xc'),auth[_0xa55c('0x8')](),controller[_0xa55c('0xd')]);router[_0xa55c('0x7')](_0xa55c('0xe'),auth[_0xa55c('0x8')](),controller[_0xa55c('0xf')]);router[_0xa55c('0x7')](_0xa55c('0x10'),auth[_0xa55c('0x8')](),controller['getAgents']);router['post']('/',auth[_0xa55c('0x8')](),controller['create']);router['post']('/:id/teams',auth[_0xa55c('0x8')](),controller[_0xa55c('0x11')]);router[_0xa55c('0x12')](_0xa55c('0x10'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x13')]);router['put'](_0xa55c('0xb'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x14')]);router[_0xa55c('0x15')](_0xa55c('0xb'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x16')]);router[_0xa55c('0x15')](_0xa55c('0xe'),auth['isAuthenticated'](),controller[_0xa55c('0x17')]);router[_0xa55c('0x15')](_0xa55c('0x10'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x18')]);module[_0xa55c('0x19')]=router;
\ No newline at end of file
index 35047c8..dd4f7ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f7d=['moment','sequelize','exports','STRING','DATE'];(function(_0x3c3e28,_0x3247e0){var _0x5e71c2=function(_0x1f3cbb){while(--_0x1f3cbb){_0x3c3e28['push'](_0x3c3e28['shift']());}};_0x5e71c2(++_0x3247e0);}(_0x3f7d,0x18b));var _0xd3f7=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3f7d[_0x3dd15e];return _0x231fd0;};'use strict';var moment=require(_0xd3f7('0x0'));var Sequelize=require(_0xd3f7('0x1'));module[_0xd3f7('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0xd3f7('0x3')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0xd3f7('0x4')]},'acceptAt':{'type':Sequelize[_0xd3f7('0x4')]},'exitAt':{'type':Sequelize[_0xd3f7('0x4')]},'reason':{'type':Sequelize[_0xd3f7('0x3')]}};
\ No newline at end of file
+var _0x143e=['sequelize','STRING','DATE','moment'];(function(_0x599e60,_0x5b6519){var _0x468e19=function(_0xcdfd97){while(--_0xcdfd97){_0x599e60['push'](_0x599e60['shift']());}};_0x468e19(++_0x5b6519);}(_0x143e,0xdf));var _0xe143=function(_0x4daf84,_0x4bf5fb){_0x4daf84=_0x4daf84-0x0;var _0x13a0d6=_0x143e[_0x4daf84];return _0x13a0d6;};'use strict';var moment=require(_0xe143('0x0'));var Sequelize=require(_0xe143('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0xe143('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0xe143('0x2')]},'joinAt':{'type':Sequelize[_0xe143('0x3')]},'leaveAt':{'type':Sequelize[_0xe143('0x3')]},'acceptAt':{'type':Sequelize[_0xe143('0x3')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0xe143('0x2')]}};
\ No newline at end of file
index c80cedd..02942f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf96b=['model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','rows','show','params','includeAll','find','create','body','catch','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','count','set','Content-Range','reject','save','update','then','error','stack','name','send','index','map','ChatQueueReport','rawAttributes','type','key'];(function(_0xc2c13a,_0x1070d3){var _0x2b8e2f=function(_0x3ebc15){while(--_0x3ebc15){_0xc2c13a['push'](_0xc2c13a['shift']());}};_0x2b8e2f(++_0x1070d3);}(_0xf96b,0x109));var _0xbf96=function(_0x11af48,_0x50d630){_0x11af48=_0x11af48-0x0;var _0xfed59c=_0xf96b[_0x11af48];return _0xfed59c;};'use strict';var emlformat=require(_0xbf96('0x0'));var rimraf=require(_0xbf96('0x1'));var zipdir=require(_0xbf96('0x2'));var jsonpatch=require(_0xbf96('0x3'));var rp=require(_0xbf96('0x4'));var moment=require(_0xbf96('0x5'));var BPromise=require(_0xbf96('0x6'));var Mustache=require(_0xbf96('0x7'));var util=require(_0xbf96('0x8'));var path=require(_0xbf96('0x9'));var sox=require(_0xbf96('0xa'));var csv=require(_0xbf96('0xb'));var ejs=require(_0xbf96('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xbf96('0xd'));var squel=require(_0xbf96('0xe'));var crypto=require(_0xbf96('0xf'));var jsforce=require(_0xbf96('0x10'));var deskjs=require('desk.js');var toCsv=require(_0xbf96('0xb'));var querystring=require(_0xbf96('0x11'));var Papa=require(_0xbf96('0x12'));var Redis=require(_0xbf96('0x13'));var authService=require(_0xbf96('0x14'));var qs=require(_0xbf96('0x15'));var as=require(_0xbf96('0x16'));var hardwareService=require(_0xbf96('0x17'));var logger=require('../../config/logger')(_0xbf96('0x18'));var utils=require(_0xbf96('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0xbf96('0x1a'));var db=require(_0xbf96('0x1b'))['db'];function respondWithStatusCode(_0x17115d,_0x48a709){_0x48a709=_0x48a709||0xcc;return function(_0xafd96c){if(_0xafd96c){return _0x17115d[_0xbf96('0x1c')](_0x48a709);}return _0x17115d[_0xbf96('0x1d')](_0x48a709)[_0xbf96('0x1e')]();};}function respondWithResult(_0x424819,_0x3e7a6b){_0x3e7a6b=_0x3e7a6b||0xc8;return function(_0x59c141){if(_0x59c141){return _0x424819[_0xbf96('0x1d')](_0x3e7a6b)[_0xbf96('0x1f')](_0x59c141);}};}function respondWithFilteredResult(_0x1f1814,_0x2dc5c4){return function(_0x38205a){if(_0x38205a){var _0xbb399b=typeof _0x2dc5c4[_0xbf96('0x20')]==='undefined'&&typeof _0x2dc5c4[_0xbf96('0x21')]==='undefined';var _0x41254f=_0x38205a[_0xbf96('0x22')];var _0x568425=_0xbb399b?0x0:_0x2dc5c4[_0xbf96('0x20')];var _0x64b2f9=_0xbb399b?_0x38205a['count']:_0x2dc5c4[_0xbf96('0x20')]+_0x2dc5c4[_0xbf96('0x21')];var _0x2bef74;if(_0x64b2f9>=_0x41254f){_0x64b2f9=_0x41254f;_0x2bef74=0xc8;}else{_0x2bef74=0xce;}_0x1f1814[_0xbf96('0x1d')](_0x2bef74);return _0x1f1814[_0xbf96('0x23')](_0xbf96('0x24'),_0x568425+'-'+_0x64b2f9+'/'+_0x41254f)[_0xbf96('0x1f')](_0x38205a);}return null;};}function patchUpdates(_0x5450e4){return function(_0x38cc22){try{jsonpatch['apply'](_0x38cc22,_0x5450e4,!![]);}catch(_0xa44474){return BPromise[_0xbf96('0x25')](_0xa44474);}return _0x38cc22[_0xbf96('0x26')]();};}function saveUpdates(_0x4c65ae,_0x21cf3c){return function(_0x55025c){if(_0x55025c){return _0x55025c[_0xbf96('0x27')](_0x4c65ae)[_0xbf96('0x28')](function(_0xdd84d9){return _0xdd84d9;});}return null;};}function removeEntity(_0x4e511b,_0x1c92f9){return function(_0xf132af){if(_0xf132af){return _0xf132af['destroy']()['then'](function(){_0x4e511b[_0xbf96('0x1d')](0xcc)[_0xbf96('0x1e')]();});}};}function handleEntityNotFound(_0x363379,_0x56d265){return function(_0x527558){if(!_0x527558){_0x363379['sendStatus'](0x194);}return _0x527558;};}function handleError(_0x57c5cd,_0x8c3967){_0x8c3967=_0x8c3967||0x1f4;return function(_0x30f345){logger[_0xbf96('0x29')](_0x30f345[_0xbf96('0x2a')]);if(_0x30f345['name']){delete _0x30f345[_0xbf96('0x2b')];}_0x57c5cd[_0xbf96('0x1d')](_0x8c3967)[_0xbf96('0x2c')](_0x30f345);};}exports[_0xbf96('0x2d')]=function(_0x5e99b3,_0x59edc6){var _0x16a659={},_0x1366e6={},_0x4138ef={'count':0x0,'rows':[]};var _0xb248da=_[_0xbf96('0x2e')](db[_0xbf96('0x2f')][_0xbf96('0x30')],function(_0x2764e0){return{'name':_0x2764e0['fieldName'],'type':_0x2764e0[_0xbf96('0x31')][_0xbf96('0x32')]};});_0x1366e6[_0xbf96('0x33')]=_['map'](_0xb248da,'name');_0x1366e6[_0xbf96('0x34')]=_['keys'](_0x5e99b3[_0xbf96('0x34')]);_0x1366e6[_0xbf96('0x35')]=_[_0xbf96('0x36')](_0x1366e6[_0xbf96('0x33')],_0x1366e6[_0xbf96('0x34')]);_0x16a659[_0xbf96('0x37')]=_[_0xbf96('0x36')](_0x1366e6[_0xbf96('0x33')],qs[_0xbf96('0x38')](_0x5e99b3['query'][_0xbf96('0x38')]));_0x16a659['attributes']=_0x16a659[_0xbf96('0x37')][_0xbf96('0x39')]?_0x16a659[_0xbf96('0x37')]:_0x1366e6['model'];if(!_0x5e99b3[_0xbf96('0x34')][_0xbf96('0x3a')](_0xbf96('0x3b'))){_0x16a659[_0xbf96('0x21')]=qs[_0xbf96('0x21')](_0x5e99b3[_0xbf96('0x34')][_0xbf96('0x21')]);_0x16a659[_0xbf96('0x20')]=qs['offset'](_0x5e99b3[_0xbf96('0x34')]['offset']);}_0x16a659[_0xbf96('0x3c')]=qs[_0xbf96('0x3d')](_0x5e99b3[_0xbf96('0x34')][_0xbf96('0x3d')]);_0x16a659[_0xbf96('0x3e')]=qs['filters'](_[_0xbf96('0x3f')](_0x5e99b3['query'],_0x1366e6[_0xbf96('0x35')]),_0xb248da);if(_0x5e99b3[_0xbf96('0x34')][_0xbf96('0x40')]){_0x16a659[_0xbf96('0x3e')]=_[_0xbf96('0x41')](_0x16a659[_0xbf96('0x3e')],{'$or':_['map'](_0xb248da,function(_0x1ef8cd){if(_0x1ef8cd['type']!==_0xbf96('0x42')){var _0x3db5f7={};_0x3db5f7[_0x1ef8cd[_0xbf96('0x2b')]]={'$like':'%'+_0x5e99b3['query'][_0xbf96('0x40')]+'%'};return _0x3db5f7;}})});}_0x16a659=_[_0xbf96('0x41')]({},_0x16a659,_0x5e99b3[_0xbf96('0x43')]);var _0x4caef2={'where':_0x16a659[_0xbf96('0x3e')]};return db[_0xbf96('0x2f')][_0xbf96('0x22')](_0x4caef2)[_0xbf96('0x28')](function(_0x17f345){_0x4138ef[_0xbf96('0x22')]=_0x17f345;if(_0x5e99b3[_0xbf96('0x34')]['includeAll']){_0x16a659[_0xbf96('0x44')]=[{'all':!![]}];}return db[_0xbf96('0x2f')]['findAll'](_0x16a659);})[_0xbf96('0x28')](function(_0x3cfb3c){_0x4138ef[_0xbf96('0x45')]=_0x3cfb3c;return _0x4138ef;})[_0xbf96('0x28')](respondWithFilteredResult(_0x59edc6,_0x16a659))['catch'](handleError(_0x59edc6,null));};exports[_0xbf96('0x46')]=function(_0x1b6cfd,_0x1a39d1){var _0x2b565f={'raw':!![],'where':{'id':_0x1b6cfd[_0xbf96('0x47')]['id']}},_0x27b78d={};_0x27b78d['model']=_['keys'](db[_0xbf96('0x2f')][_0xbf96('0x30')]);_0x27b78d[_0xbf96('0x34')]=_['keys'](_0x1b6cfd[_0xbf96('0x34')]);_0x27b78d[_0xbf96('0x35')]=_[_0xbf96('0x36')](_0x27b78d[_0xbf96('0x33')],_0x27b78d[_0xbf96('0x34')]);_0x2b565f[_0xbf96('0x37')]=_[_0xbf96('0x36')](_0x27b78d[_0xbf96('0x33')],qs[_0xbf96('0x38')](_0x1b6cfd['query'][_0xbf96('0x38')]));_0x2b565f['attributes']=_0x2b565f['attributes'][_0xbf96('0x39')]?_0x2b565f['attributes']:_0x27b78d[_0xbf96('0x33')];if(_0x1b6cfd['query'][_0xbf96('0x48')]){_0x2b565f[_0xbf96('0x44')]=[{'all':!![]}];}_0x2b565f=_[_0xbf96('0x41')]({},_0x2b565f,_0x1b6cfd['options']);return db[_0xbf96('0x2f')][_0xbf96('0x49')](_0x2b565f)['then'](handleEntityNotFound(_0x1a39d1,null))[_0xbf96('0x28')](respondWithResult(_0x1a39d1,null))['catch'](handleError(_0x1a39d1,null));};exports[_0xbf96('0x4a')]=function(_0xa852de,_0x1bb569){return db[_0xbf96('0x2f')][_0xbf96('0x4a')](_0xa852de[_0xbf96('0x4b')],{})['then'](respondWithResult(_0x1bb569,0xc9))[_0xbf96('0x4c')](handleError(_0x1bb569,null));};exports[_0xbf96('0x27')]=function(_0x86135f,_0x4bb10e){if(_0x86135f['body']['id']){delete _0x86135f[_0xbf96('0x4b')]['id'];}return db[_0xbf96('0x2f')][_0xbf96('0x49')]({'where':{'id':_0x86135f[_0xbf96('0x47')]['id']}})[_0xbf96('0x28')](handleEntityNotFound(_0x4bb10e,null))['then'](saveUpdates(_0x86135f[_0xbf96('0x4b')],null))[_0xbf96('0x28')](respondWithResult(_0x4bb10e,null))[_0xbf96('0x4c')](handleError(_0x4bb10e,null));};exports[_0xbf96('0x4d')]=function(_0x5874b7,_0x4f173f){return db[_0xbf96('0x2f')][_0xbf96('0x49')]({'where':{'id':_0x5874b7[_0xbf96('0x47')]['id']}})['then'](handleEntityNotFound(_0x4f173f,null))[_0xbf96('0x28')](removeEntity(_0x4f173f,null))['catch'](handleError(_0x4f173f,null));};exports['describe']=function(_0x45129c,_0x32cca5){return db[_0xbf96('0x2f')][_0xbf96('0x4e')]()[_0xbf96('0x28')](respondWithResult(_0x32cca5,null))['catch'](handleError(_0x32cca5,null));};
\ No newline at end of file
+var _0xcd2f=['sort','where','pick','filter','merge','VIRTUAL','options','ChatQueueReport','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','describe','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','name','send','map','fieldName','type','key','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit'];(function(_0x329558,_0x3689e4){var _0x5d52b8=function(_0x201ad8){while(--_0x201ad8){_0x329558['push'](_0x329558['shift']());}};_0x5d52b8(++_0x3689e4);}(_0xcd2f,0xf8));var _0xfcd2=function(_0xaa0309,_0x1c8008){_0xaa0309=_0xaa0309-0x0;var _0x5de7ce=_0xcd2f[_0xaa0309];return _0x5de7ce;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xfcd2('0x0'));var rp=require(_0xfcd2('0x1'));var moment=require(_0xfcd2('0x2'));var BPromise=require(_0xfcd2('0x3'));var Mustache=require(_0xfcd2('0x4'));var util=require(_0xfcd2('0x5'));var path=require(_0xfcd2('0x6'));var sox=require(_0xfcd2('0x7'));var csv=require('to-csv');var ejs=require(_0xfcd2('0x8'));var fs=require('fs');var fs_extra=require(_0xfcd2('0x9'));var _=require(_0xfcd2('0xa'));var squel=require(_0xfcd2('0xb'));var crypto=require(_0xfcd2('0xc'));var jsforce=require(_0xfcd2('0xd'));var deskjs=require(_0xfcd2('0xe'));var toCsv=require(_0xfcd2('0xf'));var querystring=require(_0xfcd2('0x10'));var Papa=require(_0xfcd2('0x11'));var Redis=require(_0xfcd2('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xfcd2('0x13'));var as=require(_0xfcd2('0x14'));var hardwareService=require(_0xfcd2('0x15'));var logger=require(_0xfcd2('0x16'))(_0xfcd2('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5bff49,_0xdcfde9){_0xdcfde9=_0xdcfde9||0xcc;return function(_0x15aebb){if(_0x15aebb){return _0x5bff49['sendStatus'](_0xdcfde9);}return _0x5bff49[_0xfcd2('0x18')](_0xdcfde9)[_0xfcd2('0x19')]();};}function respondWithResult(_0x5ad180,_0x50f44c){_0x50f44c=_0x50f44c||0xc8;return function(_0x2825df){if(_0x2825df){return _0x5ad180[_0xfcd2('0x18')](_0x50f44c)[_0xfcd2('0x1a')](_0x2825df);}};}function respondWithFilteredResult(_0x4baf2f,_0x428cf3){return function(_0x4a2bcd){if(_0x4a2bcd){var _0x1a9f8f=typeof _0x428cf3[_0xfcd2('0x1b')]===_0xfcd2('0x1c')&&typeof _0x428cf3[_0xfcd2('0x1d')]===_0xfcd2('0x1c');var _0x378484=_0x4a2bcd['count'];var _0xba3186=_0x1a9f8f?0x0:_0x428cf3[_0xfcd2('0x1b')];var _0x32607c=_0x1a9f8f?_0x4a2bcd[_0xfcd2('0x1e')]:_0x428cf3[_0xfcd2('0x1b')]+_0x428cf3[_0xfcd2('0x1d')];var _0x5c8a4d;if(_0x32607c>=_0x378484){_0x32607c=_0x378484;_0x5c8a4d=0xc8;}else{_0x5c8a4d=0xce;}_0x4baf2f[_0xfcd2('0x18')](_0x5c8a4d);return _0x4baf2f[_0xfcd2('0x1f')](_0xfcd2('0x20'),_0xba3186+'-'+_0x32607c+'/'+_0x378484)[_0xfcd2('0x1a')](_0x4a2bcd);}return null;};}function patchUpdates(_0x266c86){return function(_0x55d8b0){try{jsonpatch[_0xfcd2('0x21')](_0x55d8b0,_0x266c86,!![]);}catch(_0x41c503){return BPromise[_0xfcd2('0x22')](_0x41c503);}return _0x55d8b0[_0xfcd2('0x23')]();};}function saveUpdates(_0x2a06d4,_0x37dafa){return function(_0x19ea4a){if(_0x19ea4a){return _0x19ea4a[_0xfcd2('0x24')](_0x2a06d4)[_0xfcd2('0x25')](function(_0x47fa14){return _0x47fa14;});}return null;};}function removeEntity(_0x23104f,_0x50c0cc){return function(_0xedae7a){if(_0xedae7a){return _0xedae7a[_0xfcd2('0x26')]()['then'](function(){_0x23104f['status'](0xcc)[_0xfcd2('0x19')]();});}};}function handleEntityNotFound(_0xe7fde9,_0x193dc3){return function(_0x2b0364){if(!_0x2b0364){_0xe7fde9['sendStatus'](0x194);}return _0x2b0364;};}function handleError(_0x1c4981,_0x2a8557){_0x2a8557=_0x2a8557||0x1f4;return function(_0x13e447){logger[_0xfcd2('0x27')](_0x13e447['stack']);if(_0x13e447[_0xfcd2('0x28')]){delete _0x13e447['name'];}_0x1c4981[_0xfcd2('0x18')](_0x2a8557)[_0xfcd2('0x29')](_0x13e447);};}exports['index']=function(_0x909257,_0x3cb642){var _0x41ecc9={},_0x4bffa9={},_0x15965e={'count':0x0,'rows':[]};var _0x4e79b=_[_0xfcd2('0x2a')](db['ChatQueueReport']['rawAttributes'],function(_0x5192b9){return{'name':_0x5192b9[_0xfcd2('0x2b')],'type':_0x5192b9[_0xfcd2('0x2c')][_0xfcd2('0x2d')]};});_0x4bffa9['model']=_[_0xfcd2('0x2a')](_0x4e79b,_0xfcd2('0x28'));_0x4bffa9[_0xfcd2('0x2e')]=_[_0xfcd2('0x2f')](_0x909257[_0xfcd2('0x2e')]);_0x4bffa9[_0xfcd2('0x30')]=_[_0xfcd2('0x31')](_0x4bffa9['model'],_0x4bffa9['query']);_0x41ecc9[_0xfcd2('0x32')]=_['intersection'](_0x4bffa9[_0xfcd2('0x33')],qs[_0xfcd2('0x34')](_0x909257[_0xfcd2('0x2e')][_0xfcd2('0x34')]));_0x41ecc9[_0xfcd2('0x32')]=_0x41ecc9[_0xfcd2('0x32')][_0xfcd2('0x35')]?_0x41ecc9[_0xfcd2('0x32')]:_0x4bffa9[_0xfcd2('0x33')];if(!_0x909257['query'][_0xfcd2('0x36')](_0xfcd2('0x37'))){_0x41ecc9[_0xfcd2('0x1d')]=qs[_0xfcd2('0x1d')](_0x909257['query']['limit']);_0x41ecc9[_0xfcd2('0x1b')]=qs[_0xfcd2('0x1b')](_0x909257[_0xfcd2('0x2e')][_0xfcd2('0x1b')]);}_0x41ecc9['order']=qs[_0xfcd2('0x38')](_0x909257[_0xfcd2('0x2e')]['sort']);_0x41ecc9[_0xfcd2('0x39')]=qs['filters'](_[_0xfcd2('0x3a')](_0x909257['query'],_0x4bffa9[_0xfcd2('0x30')]),_0x4e79b);if(_0x909257[_0xfcd2('0x2e')][_0xfcd2('0x3b')]){_0x41ecc9['where']=_[_0xfcd2('0x3c')](_0x41ecc9[_0xfcd2('0x39')],{'$or':_[_0xfcd2('0x2a')](_0x4e79b,function(_0x89e532){if(_0x89e532[_0xfcd2('0x2c')]!==_0xfcd2('0x3d')){var _0x10249c={};_0x10249c[_0x89e532[_0xfcd2('0x28')]]={'$like':'%'+_0x909257[_0xfcd2('0x2e')][_0xfcd2('0x3b')]+'%'};return _0x10249c;}})});}_0x41ecc9=_[_0xfcd2('0x3c')]({},_0x41ecc9,_0x909257[_0xfcd2('0x3e')]);var _0x31368e={'where':_0x41ecc9[_0xfcd2('0x39')]};return db[_0xfcd2('0x3f')][_0xfcd2('0x1e')](_0x31368e)[_0xfcd2('0x25')](function(_0x47d6b6){_0x15965e[_0xfcd2('0x1e')]=_0x47d6b6;if(_0x909257['query'][_0xfcd2('0x40')]){_0x41ecc9[_0xfcd2('0x41')]=[{'all':!![]}];}return db[_0xfcd2('0x3f')][_0xfcd2('0x42')](_0x41ecc9);})['then'](function(_0x20f985){_0x15965e[_0xfcd2('0x43')]=_0x20f985;return _0x15965e;})[_0xfcd2('0x25')](respondWithFilteredResult(_0x3cb642,_0x41ecc9))[_0xfcd2('0x44')](handleError(_0x3cb642,null));};exports[_0xfcd2('0x45')]=function(_0x100198,_0x20c15b){var _0x34ffd6={'raw':!![],'where':{'id':_0x100198[_0xfcd2('0x46')]['id']}},_0x4ba64d={};_0x4ba64d[_0xfcd2('0x33')]=_[_0xfcd2('0x2f')](db[_0xfcd2('0x3f')][_0xfcd2('0x47')]);_0x4ba64d['query']=_[_0xfcd2('0x2f')](_0x100198[_0xfcd2('0x2e')]);_0x4ba64d[_0xfcd2('0x30')]=_[_0xfcd2('0x31')](_0x4ba64d['model'],_0x4ba64d[_0xfcd2('0x2e')]);_0x34ffd6[_0xfcd2('0x32')]=_[_0xfcd2('0x31')](_0x4ba64d[_0xfcd2('0x33')],qs[_0xfcd2('0x34')](_0x100198[_0xfcd2('0x2e')][_0xfcd2('0x34')]));_0x34ffd6[_0xfcd2('0x32')]=_0x34ffd6[_0xfcd2('0x32')]['length']?_0x34ffd6['attributes']:_0x4ba64d['model'];if(_0x100198[_0xfcd2('0x2e')][_0xfcd2('0x40')]){_0x34ffd6[_0xfcd2('0x41')]=[{'all':!![]}];}_0x34ffd6=_[_0xfcd2('0x3c')]({},_0x34ffd6,_0x100198['options']);return db[_0xfcd2('0x3f')][_0xfcd2('0x48')](_0x34ffd6)[_0xfcd2('0x25')](handleEntityNotFound(_0x20c15b,null))[_0xfcd2('0x25')](respondWithResult(_0x20c15b,null))['catch'](handleError(_0x20c15b,null));};exports[_0xfcd2('0x49')]=function(_0x26dbe2,_0x36233a){return db['ChatQueueReport'][_0xfcd2('0x49')](_0x26dbe2[_0xfcd2('0x4a')],{})['then'](respondWithResult(_0x36233a,0xc9))[_0xfcd2('0x44')](handleError(_0x36233a,null));};exports['update']=function(_0x559dea,_0x7352bb){if(_0x559dea[_0xfcd2('0x4a')]['id']){delete _0x559dea[_0xfcd2('0x4a')]['id'];}return db[_0xfcd2('0x3f')]['find']({'where':{'id':_0x559dea[_0xfcd2('0x46')]['id']}})[_0xfcd2('0x25')](handleEntityNotFound(_0x7352bb,null))[_0xfcd2('0x25')](saveUpdates(_0x559dea['body'],null))[_0xfcd2('0x25')](respondWithResult(_0x7352bb,null))[_0xfcd2('0x44')](handleError(_0x7352bb,null));};exports[_0xfcd2('0x26')]=function(_0x50f31c,_0x159aec){return db[_0xfcd2('0x3f')][_0xfcd2('0x48')]({'where':{'id':_0x50f31c[_0xfcd2('0x46')]['id']}})[_0xfcd2('0x25')](handleEntityNotFound(_0x159aec,null))[_0xfcd2('0x25')](removeEntity(_0x159aec,null))[_0xfcd2('0x44')](handleError(_0x159aec,null));};exports[_0xfcd2('0x4b')]=function(_0x2409ed,_0xf2e5f8){return db[_0xfcd2('0x3f')][_0xfcd2('0x4b')]()['then'](respondWithResult(_0xf2e5f8,null))[_0xfcd2('0x44')](handleError(_0xf2e5f8,null));};
\ No newline at end of file
index 8fe4206..1ba92e5 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(_0x216dae,_0x373b5c){var _0x1dd153=function(_0x331a5e){while(--_0x331a5e){_0x216dae['push'](_0x216dae['shift']());}};_0x1dd153(++_0x373b5c);}(_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'));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 _0xd8b0=['define','report_chat_queue','uniqueid','lodash','util','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x18ef3d,_0x122eca){var _0x52c833=function(_0x516bab){while(--_0x516bab){_0x18ef3d['push'](_0x18ef3d['shift']());}};_0x52c833(++_0x122eca);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x0d8b('0x2'));var rp=require(_0x0d8b('0x3'));var fs=require('fs');var path=require(_0x0d8b('0x4'));var rimraf=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var attributes=require('./chatQueueReport.attributes');module['exports']=function(_0x3f8b6f,_0x227c63){return _0x3f8b6f[_0x0d8b('0x7')]('ChatQueueReport',attributes,{'tableName':_0x0d8b('0x8'),'paranoid':![],'indexes':[{'name':_0x0d8b('0x9'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index b766515..72c8072 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae1b=['../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','then','info','ChatQueueReport,\x20%s,\x20%s','request\x20sent','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateChatQueueReport','ChatQueueReport','create','body','options','raw','attributes','limit','UpdateChatQueueReport','util','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x4ec4c2,_0x57310a){var _0x5141c9=function(_0x1ac9ea){while(--_0x1ac9ea){_0x4ec4c2['push'](_0x4ec4c2['shift']());}};_0x5141c9(++_0x57310a);}(_0xae1b,0x96));var _0xbae1=function(_0x29e834,_0x3817f0){_0x29e834=_0x29e834-0x0;var _0x232b53=_0xae1b[_0x29e834];return _0x232b53;};'use strict';var _=require('lodash');var util=require(_0xbae1('0x0'));var moment=require('moment');var BPromise=require(_0xbae1('0x1'));var rs=require(_0xbae1('0x2'));var fs=require('fs');var Redis=require(_0xbae1('0x3'));var db=require(_0xbae1('0x4'))['db'];var utils=require(_0xbae1('0x5'));var logger=require(_0xbae1('0x6'))('rpc');var config=require(_0xbae1('0x7'));var jayson=require(_0xbae1('0x8'));var client=jayson['client'][_0xbae1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5d7130,_0xac9c47,_0x54ba1f){return new BPromise(function(_0x3f0ff5,_0x340ff9){return client['request'](_0x5d7130,_0x54ba1f)[_0xbae1('0xa')](function(_0x366106){logger[_0xbae1('0xb')](_0xbae1('0xc'),_0xac9c47,_0xbae1('0xd'));logger[_0xbae1('0xe')](_0xbae1('0xf'),_0xac9c47,_0xbae1('0xd'),JSON[_0xbae1('0x10')](_0x366106));if(_0x366106[_0xbae1('0x11')]){if(_0x366106[_0xbae1('0x11')][_0xbae1('0x12')]===0x1f4){logger['error']('ChatQueueReport,\x20%s,\x20%s',_0xac9c47,_0x366106['error']['message']);return _0x340ff9(_0x366106[_0xbae1('0x11')][_0xbae1('0x13')]);}logger[_0xbae1('0x11')](_0xbae1('0xc'),_0xac9c47,_0x366106[_0xbae1('0x11')]['message']);return _0x3f0ff5(_0x366106[_0xbae1('0x11')][_0xbae1('0x13')]);}else{logger[_0xbae1('0xb')]('ChatQueueReport,\x20%s,\x20%s',_0xac9c47,_0xbae1('0xd'));_0x3f0ff5(_0x366106[_0xbae1('0x14')][_0xbae1('0x13')]);}})[_0xbae1('0x15')](function(_0x7d92b7){logger[_0xbae1('0x11')](_0xbae1('0xc'),_0xac9c47,_0x7d92b7);_0x340ff9(_0x7d92b7);});});}exports[_0xbae1('0x16')]=function(_0x1190b7){var _0x19b91c=this;return new Promise(function(_0x2943df,_0x3fd99b){return db[_0xbae1('0x17')][_0xbae1('0x18')](_0x1190b7[_0xbae1('0x19')],{'raw':_0x1190b7['options']?_0x1190b7[_0xbae1('0x1a')][_0xbae1('0x1b')]===undefined?!![]:![]:!![]})[_0xbae1('0xa')](function(_0x17a4b6){logger[_0xbae1('0xb')](_0xbae1('0x16'),_0x1190b7);logger[_0xbae1('0xe')](_0xbae1('0x16'),_0x1190b7,JSON[_0xbae1('0x10')](_0x17a4b6));_0x2943df(_0x17a4b6);})[_0xbae1('0x15')](function(_0x21f994){logger[_0xbae1('0x11')](_0xbae1('0x16'),_0x21f994[_0xbae1('0x13')],_0x1190b7);_0x3fd99b(_0x19b91c[_0xbae1('0x11')](0x1f4,_0x21f994[_0xbae1('0x13')]));});});};exports['UpdateChatQueueReport']=function(_0x45d1db){var _0x1086cd=this;return new Promise(function(_0x5b219c,_0x4ea545){return db[_0xbae1('0x17')]['update'](_0x45d1db[_0xbae1('0x19')],{'raw':_0x45d1db[_0xbae1('0x1a')]?_0x45d1db[_0xbae1('0x1a')][_0xbae1('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x45d1db[_0xbae1('0x1a')]?_0x45d1db[_0xbae1('0x1a')]['where']||null:null,'attributes':_0x45d1db[_0xbae1('0x1a')]?_0x45d1db[_0xbae1('0x1a')][_0xbae1('0x1c')]||null:null,'limit':_0x45d1db['options']?_0x45d1db['options'][_0xbae1('0x1d')]||null:null})[_0xbae1('0xa')](function(_0x9d58d7){logger[_0xbae1('0xb')](_0xbae1('0x1e'),_0x45d1db);logger[_0xbae1('0xe')](_0xbae1('0x1e'),_0x45d1db,JSON[_0xbae1('0x10')](_0x9d58d7));_0x5b219c(_0x9d58d7);})[_0xbae1('0x15')](function(_0x37dfba){logger['error'](_0xbae1('0x1e'),_0x37dfba['message'],_0x45d1db);_0x4ea545(_0x1086cd['error'](0x1f4,_0x37dfba['message']));});});};
\ No newline at end of file
+var _0x832c=['UpdateChatQueueReport','body','where','attributes','limit','lodash','util','moment','bluebird','ioredis','rpc','jayson/promise','client','http','request','then','request\x20sent','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatQueueReport,\x20%s,\x20%s','message','info','create','options','raw','CreateChatQueueReport','catch'];(function(_0x168127,_0x59cea1){var _0x4c99ad=function(_0x4ab3f2){while(--_0x4ab3f2){_0x168127['push'](_0x168127['shift']());}};_0x4c99ad(++_0x59cea1);}(_0x832c,0x1e5));var _0xc832=function(_0x48ea3d,_0x419710){_0x48ea3d=_0x48ea3d-0x0;var _0x26fd2e=_0x832c[_0x48ea3d];return _0x26fd2e;};'use strict';var _=require(_0xc832('0x0'));var util=require(_0xc832('0x1'));var moment=require(_0xc832('0x2'));var BPromise=require(_0xc832('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc832('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xc832('0x5'));var config=require('../../config/environment');var jayson=require(_0xc832('0x6'));var client=jayson[_0xc832('0x7')][_0xc832('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1170c5,_0x29bfab,_0x2596a7){return new BPromise(function(_0x33bd47,_0x449a74){return client[_0xc832('0x9')](_0x1170c5,_0x2596a7)[_0xc832('0xa')](function(_0x3da5a2){logger['info']('ChatQueueReport,\x20%s,\x20%s',_0x29bfab,_0xc832('0xb'));logger[_0xc832('0xc')](_0xc832('0xd'),_0x29bfab,_0xc832('0xb'),JSON[_0xc832('0xe')](_0x3da5a2));if(_0x3da5a2[_0xc832('0xf')]){if(_0x3da5a2['error'][_0xc832('0x10')]===0x1f4){logger['error'](_0xc832('0x11'),_0x29bfab,_0x3da5a2[_0xc832('0xf')]['message']);return _0x449a74(_0x3da5a2['error']['message']);}logger[_0xc832('0xf')](_0xc832('0x11'),_0x29bfab,_0x3da5a2[_0xc832('0xf')][_0xc832('0x12')]);return _0x33bd47(_0x3da5a2[_0xc832('0xf')][_0xc832('0x12')]);}else{logger[_0xc832('0x13')](_0xc832('0x11'),_0x29bfab,'request\x20sent');_0x33bd47(_0x3da5a2['result'][_0xc832('0x12')]);}})['catch'](function(_0x5c378f){logger[_0xc832('0xf')](_0xc832('0x11'),_0x29bfab,_0x5c378f);_0x449a74(_0x5c378f);});});}exports['CreateChatQueueReport']=function(_0x21fb7d){var _0x2fec6b=this;return new Promise(function(_0x1ec564,_0xde5d81){return db['ChatQueueReport'][_0xc832('0x14')](_0x21fb7d['body'],{'raw':_0x21fb7d[_0xc832('0x15')]?_0x21fb7d[_0xc832('0x15')][_0xc832('0x16')]===undefined?!![]:![]:!![]})[_0xc832('0xa')](function(_0x42b7f8){logger[_0xc832('0x13')](_0xc832('0x17'),_0x21fb7d);logger['debug'](_0xc832('0x17'),_0x21fb7d,JSON[_0xc832('0xe')](_0x42b7f8));_0x1ec564(_0x42b7f8);})[_0xc832('0x18')](function(_0x111910){logger[_0xc832('0xf')](_0xc832('0x17'),_0x111910[_0xc832('0x12')],_0x21fb7d);_0xde5d81(_0x2fec6b[_0xc832('0xf')](0x1f4,_0x111910[_0xc832('0x12')]));});});};exports[_0xc832('0x19')]=function(_0x315f83){var _0x5c5f26=this;return new Promise(function(_0x36559a,_0x17a2af){return db['ChatQueueReport']['update'](_0x315f83[_0xc832('0x1a')],{'raw':_0x315f83['options']?_0x315f83[_0xc832('0x15')][_0xc832('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x315f83[_0xc832('0x15')]?_0x315f83[_0xc832('0x15')][_0xc832('0x1b')]||null:null,'attributes':_0x315f83[_0xc832('0x15')]?_0x315f83[_0xc832('0x15')][_0xc832('0x1c')]||null:null,'limit':_0x315f83['options']?_0x315f83[_0xc832('0x15')][_0xc832('0x1d')]||null:null})[_0xc832('0xa')](function(_0x5526a4){logger['info']('UpdateChatQueueReport',_0x315f83);logger[_0xc832('0xc')](_0xc832('0x19'),_0x315f83,JSON[_0xc832('0xe')](_0x5526a4));_0x36559a(_0x5526a4);})['catch'](function(_0x197898){logger[_0xc832('0xf')](_0xc832('0x19'),_0x197898[_0xc832('0x12')],_0x315f83);_0x17a2af(_0x5c5f26[_0xc832('0xf')](0x1f4,_0x197898[_0xc832('0x12')]));});});};
\ No newline at end of file
index d73aa55..6bcf4ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cb9=['post','put','destroy','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/describe','describe','/:id'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x2cb9,0x146));var _0x92cb=function(_0x246334,_0x289b42){_0x246334=_0x246334-0x0;var _0x2037c0=_0x2cb9[_0x246334];return _0x2037c0;};'use strict';var multer=require(_0x92cb('0x0'));var util=require('util');var path=require(_0x92cb('0x1'));var timeout=require(_0x92cb('0x2'));var express=require('express');var router=express[_0x92cb('0x3')]();var fs_extra=require(_0x92cb('0x4'));var auth=require(_0x92cb('0x5'));var interaction=require(_0x92cb('0x6'));var config=require(_0x92cb('0x7'));var controller=require('./chatQueueReport.controller');router['get']('/',auth[_0x92cb('0x8')](),controller[_0x92cb('0x9')]);router[_0x92cb('0xa')](_0x92cb('0xb'),auth['isAuthenticated'](),controller[_0x92cb('0xc')]);router[_0x92cb('0xa')](_0x92cb('0xd'),auth[_0x92cb('0x8')](),controller['show']);router[_0x92cb('0xe')]('/',auth[_0x92cb('0x8')](),controller['create']);router[_0x92cb('0xf')]('/:id',auth['isAuthenticated'](),controller['update']);router['delete'](_0x92cb('0xd'),auth['isAuthenticated'](),controller[_0x92cb('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0xec19=['../../components/interaction/service','../../config/environment','./chatQueueReport.controller','get','index','/describe','isAuthenticated','describe','/:id','show','post','put','update','delete','destroy','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x34f701,_0x37e407){var _0x3e2429=function(_0x20c0c3){while(--_0x20c0c3){_0x34f701['push'](_0x34f701['shift']());}};_0x3e2429(++_0x37e407);}(_0xec19,0xc0));var _0x9ec1=function(_0x105d37,_0x2a9f64){_0x105d37=_0x105d37-0x0;var _0x478889=_0xec19[_0x105d37];return _0x478889;};'use strict';var multer=require(_0x9ec1('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x9ec1('0x1'));var express=require(_0x9ec1('0x2'));var router=express[_0x9ec1('0x3')]();var fs_extra=require(_0x9ec1('0x4'));var auth=require(_0x9ec1('0x5'));var interaction=require(_0x9ec1('0x6'));var config=require(_0x9ec1('0x7'));var controller=require(_0x9ec1('0x8'));router[_0x9ec1('0x9')]('/',auth['isAuthenticated'](),controller[_0x9ec1('0xa')]);router[_0x9ec1('0x9')](_0x9ec1('0xb'),auth[_0x9ec1('0xc')](),controller[_0x9ec1('0xd')]);router[_0x9ec1('0x9')](_0x9ec1('0xe'),auth[_0x9ec1('0xc')](),controller[_0x9ec1('0xf')]);router[_0x9ec1('0x10')]('/',auth[_0x9ec1('0xc')](),controller['create']);router[_0x9ec1('0x11')]('/:id',auth[_0x9ec1('0xc')](),controller[_0x9ec1('0x12')]);router[_0x9ec1('0x13')](_0x9ec1('0xe'),auth['isAuthenticated'](),controller[_0x9ec1('0x14')]);module[_0x9ec1('0x15')]=router;
\ No newline at end of file
index 912ac68..18f6816 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['STRING','ENUM','account','queue','NOW','exports'];(function(_0x19dde4,_0xe6db22){var _0x48a213=function(_0x405116){while(--_0x405116){_0x19dde4['push'](_0x19dde4['shift']());}};_0x48a213(++_0xe6db22);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x26fc81,_0x57fc19){_0x26fc81=_0x26fc81-0x0;var _0x9feece=_0xcb91[_0x26fc81];return _0x9feece;};'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(_0xe10ec2,_0x2942c2){var _0x5f1b97=function(_0x3eecfe){while(--_0x3eecfe){_0xe10ec2['push'](_0xe10ec2['shift']());}};_0x5f1b97(++_0x2942c2);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x4fabbe,_0xc514f3){_0x4fabbe=_0x4fabbe-0x0;var _0x5510dd=_0xf3cd[_0x4fabbe];return _0x5510dd;};'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 58e4c30..0c5a847 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4818=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','set','Content-Range','apply','reject','destroy','end','error','name','send','index','map','ChatTransferReport','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','count','then','includeAll','rows','catch','show','params','include','create','body','update','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','ejs','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x51b47d,_0x5ec0f5){var _0x4d709b=function(_0x25cb77){while(--_0x25cb77){_0x51b47d['push'](_0x51b47d['shift']());}};_0x4d709b(++_0x5ec0f5);}(_0x4818,0x8a));var _0x8481=function(_0x18b649,_0x4c3958){_0x18b649=_0x18b649-0x0;var _0x3059d3=_0x4818[_0x18b649];return _0x3059d3;};'use strict';var emlformat=require(_0x8481('0x0'));var rimraf=require(_0x8481('0x1'));var zipdir=require(_0x8481('0x2'));var jsonpatch=require(_0x8481('0x3'));var rp=require(_0x8481('0x4'));var moment=require('moment');var BPromise=require(_0x8481('0x5'));var Mustache=require('mustache');var util=require(_0x8481('0x6'));var path=require(_0x8481('0x7'));var sox=require(_0x8481('0x8'));var csv=require('to-csv');var ejs=require(_0x8481('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8481('0xa'));var squel=require('squel');var crypto=require(_0x8481('0xb'));var jsforce=require(_0x8481('0xc'));var deskjs=require(_0x8481('0xd'));var toCsv=require(_0x8481('0xe'));var querystring=require(_0x8481('0xf'));var Papa=require(_0x8481('0x10'));var Redis=require(_0x8481('0x11'));var authService=require(_0x8481('0x12'));var qs=require(_0x8481('0x13'));var as=require(_0x8481('0x14'));var hardwareService=require(_0x8481('0x15'));var logger=require(_0x8481('0x16'))(_0x8481('0x17'));var utils=require(_0x8481('0x18'));var config=require(_0x8481('0x19'));var licenseUtil=require(_0x8481('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x57d76c,_0x53b9d8){_0x53b9d8=_0x53b9d8||0xcc;return function(_0x33a7ec){if(_0x33a7ec){return _0x57d76c[_0x8481('0x1b')](_0x53b9d8);}return _0x57d76c[_0x8481('0x1c')](_0x53b9d8)['end']();};}function respondWithResult(_0x16da34,_0x7596f9){_0x7596f9=_0x7596f9||0xc8;return function(_0x380b5b){if(_0x380b5b){return _0x16da34[_0x8481('0x1c')](_0x7596f9)[_0x8481('0x1d')](_0x380b5b);}};}function respondWithFilteredResult(_0x353e51,_0x4fe998){return function(_0x16a62d){if(_0x16a62d){var _0x5b121a=typeof _0x4fe998[_0x8481('0x1e')]===_0x8481('0x1f')&&typeof _0x4fe998[_0x8481('0x20')]===_0x8481('0x1f');var _0x405115=_0x16a62d['count'];var _0x3df4ce=_0x5b121a?0x0:_0x4fe998[_0x8481('0x1e')];var _0x14b7a0=_0x5b121a?_0x16a62d['count']:_0x4fe998[_0x8481('0x1e')]+_0x4fe998[_0x8481('0x20')];var _0xd23848;if(_0x14b7a0>=_0x405115){_0x14b7a0=_0x405115;_0xd23848=0xc8;}else{_0xd23848=0xce;}_0x353e51['status'](_0xd23848);return _0x353e51[_0x8481('0x21')](_0x8481('0x22'),_0x3df4ce+'-'+_0x14b7a0+'/'+_0x405115)[_0x8481('0x1d')](_0x16a62d);}return null;};}function patchUpdates(_0x3dd801){return function(_0x24a6bf){try{jsonpatch[_0x8481('0x23')](_0x24a6bf,_0x3dd801,!![]);}catch(_0x5ba8b8){return BPromise[_0x8481('0x24')](_0x5ba8b8);}return _0x24a6bf['save']();};}function saveUpdates(_0xdef41c,_0x56b02e){return function(_0x5f23da){if(_0x5f23da){return _0x5f23da['update'](_0xdef41c)['then'](function(_0x332b83){return _0x332b83;});}return null;};}function removeEntity(_0xb2df3b,_0x47008f){return function(_0x5bd27e){if(_0x5bd27e){return _0x5bd27e[_0x8481('0x25')]()['then'](function(){_0xb2df3b[_0x8481('0x1c')](0xcc)[_0x8481('0x26')]();});}};}function handleEntityNotFound(_0x3e45bc,_0x1b0625){return function(_0x21ffc5){if(!_0x21ffc5){_0x3e45bc['sendStatus'](0x194);}return _0x21ffc5;};}function handleError(_0x2141e8,_0x782d5){_0x782d5=_0x782d5||0x1f4;return function(_0x27fa13){logger[_0x8481('0x27')](_0x27fa13['stack']);if(_0x27fa13[_0x8481('0x28')]){delete _0x27fa13[_0x8481('0x28')];}_0x2141e8[_0x8481('0x1c')](_0x782d5)[_0x8481('0x29')](_0x27fa13);};}exports[_0x8481('0x2a')]=function(_0x31f82b,_0x47a220){var _0x59315d={},_0x3a59c1={},_0x2c2abd={'count':0x0,'rows':[]};var _0x335212=_[_0x8481('0x2b')](db[_0x8481('0x2c')][_0x8481('0x2d')],function(_0x96c98f){return{'name':_0x96c98f['fieldName'],'type':_0x96c98f[_0x8481('0x2e')][_0x8481('0x2f')]};});_0x3a59c1[_0x8481('0x30')]=_['map'](_0x335212,_0x8481('0x28'));_0x3a59c1[_0x8481('0x31')]=_[_0x8481('0x32')](_0x31f82b['query']);_0x3a59c1[_0x8481('0x33')]=_[_0x8481('0x34')](_0x3a59c1['model'],_0x3a59c1[_0x8481('0x31')]);_0x59315d[_0x8481('0x35')]=_[_0x8481('0x34')](_0x3a59c1['model'],qs[_0x8481('0x36')](_0x31f82b[_0x8481('0x31')][_0x8481('0x36')]));_0x59315d['attributes']=_0x59315d[_0x8481('0x35')][_0x8481('0x37')]?_0x59315d[_0x8481('0x35')]:_0x3a59c1[_0x8481('0x30')];if(!_0x31f82b[_0x8481('0x31')][_0x8481('0x38')](_0x8481('0x39'))){_0x59315d[_0x8481('0x20')]=qs[_0x8481('0x20')](_0x31f82b[_0x8481('0x31')][_0x8481('0x20')]);_0x59315d[_0x8481('0x1e')]=qs[_0x8481('0x1e')](_0x31f82b[_0x8481('0x31')][_0x8481('0x1e')]);}_0x59315d[_0x8481('0x3a')]=qs[_0x8481('0x3b')](_0x31f82b[_0x8481('0x31')][_0x8481('0x3b')]);_0x59315d['where']=qs[_0x8481('0x33')](_[_0x8481('0x3c')](_0x31f82b[_0x8481('0x31')],_0x3a59c1['filters']),_0x335212);if(_0x31f82b[_0x8481('0x31')][_0x8481('0x3d')]){_0x59315d[_0x8481('0x3e')]=_[_0x8481('0x3f')](_0x59315d[_0x8481('0x3e')],{'$or':_[_0x8481('0x2b')](_0x335212,function(_0x5061f3){if(_0x5061f3[_0x8481('0x2e')]!==_0x8481('0x40')){var _0x2c2d49={};_0x2c2d49[_0x5061f3[_0x8481('0x28')]]={'$like':'%'+_0x31f82b['query'][_0x8481('0x3d')]+'%'};return _0x2c2d49;}})});}_0x59315d=_['merge']({},_0x59315d,_0x31f82b[_0x8481('0x41')]);var _0x34d3a5={'where':_0x59315d['where']};return db['ChatTransferReport'][_0x8481('0x42')](_0x34d3a5)[_0x8481('0x43')](function(_0x2726a9){_0x2c2abd['count']=_0x2726a9;if(_0x31f82b['query'][_0x8481('0x44')]){_0x59315d['include']=[{'all':!![]}];}return db[_0x8481('0x2c')]['findAll'](_0x59315d);})[_0x8481('0x43')](function(_0x21eece){_0x2c2abd[_0x8481('0x45')]=_0x21eece;return _0x2c2abd;})['then'](respondWithFilteredResult(_0x47a220,_0x59315d))[_0x8481('0x46')](handleError(_0x47a220,null));};exports[_0x8481('0x47')]=function(_0x2b7054,_0x3425c8){var _0x5a2505={'raw':!![],'where':{'id':_0x2b7054[_0x8481('0x48')]['id']}},_0x3daac2={};_0x3daac2[_0x8481('0x30')]=_[_0x8481('0x32')](db[_0x8481('0x2c')]['rawAttributes']);_0x3daac2[_0x8481('0x31')]=_[_0x8481('0x32')](_0x2b7054['query']);_0x3daac2[_0x8481('0x33')]=_[_0x8481('0x34')](_0x3daac2[_0x8481('0x30')],_0x3daac2[_0x8481('0x31')]);_0x5a2505[_0x8481('0x35')]=_[_0x8481('0x34')](_0x3daac2[_0x8481('0x30')],qs[_0x8481('0x36')](_0x2b7054[_0x8481('0x31')]['fields']));_0x5a2505[_0x8481('0x35')]=_0x5a2505[_0x8481('0x35')]['length']?_0x5a2505[_0x8481('0x35')]:_0x3daac2['model'];if(_0x2b7054[_0x8481('0x31')][_0x8481('0x44')]){_0x5a2505[_0x8481('0x49')]=[{'all':!![]}];}_0x5a2505=_[_0x8481('0x3f')]({},_0x5a2505,_0x2b7054[_0x8481('0x41')]);return db[_0x8481('0x2c')]['find'](_0x5a2505)[_0x8481('0x43')](handleEntityNotFound(_0x3425c8,null))[_0x8481('0x43')](respondWithResult(_0x3425c8,null))['catch'](handleError(_0x3425c8,null));};exports[_0x8481('0x4a')]=function(_0xcb585c,_0x121ae9){return db['ChatTransferReport'][_0x8481('0x4a')](_0xcb585c[_0x8481('0x4b')],{})['then'](respondWithResult(_0x121ae9,0xc9))[_0x8481('0x46')](handleError(_0x121ae9,null));};exports[_0x8481('0x4c')]=function(_0x334fcc,_0x5492b3){if(_0x334fcc[_0x8481('0x4b')]['id']){delete _0x334fcc[_0x8481('0x4b')]['id'];}return db[_0x8481('0x2c')][_0x8481('0x4d')]({'where':{'id':_0x334fcc[_0x8481('0x48')]['id']}})[_0x8481('0x43')](handleEntityNotFound(_0x5492b3,null))['then'](saveUpdates(_0x334fcc['body'],null))[_0x8481('0x43')](respondWithResult(_0x5492b3,null))[_0x8481('0x46')](handleError(_0x5492b3,null));};exports[_0x8481('0x25')]=function(_0x7aa681,_0x40f22a){return db[_0x8481('0x2c')][_0x8481('0x4d')]({'where':{'id':_0x7aa681[_0x8481('0x48')]['id']}})['then'](handleEntityNotFound(_0x40f22a,null))['then'](removeEntity(_0x40f22a,null))[_0x8481('0x46')](handleError(_0x40f22a,null));};exports['describe']=function(_0x5b0371,_0x42b304){return db['ChatTransferReport'][_0x8481('0x4e')]()[_0x8481('0x43')](respondWithResult(_0x42b304,null))[_0x8481('0x46')](handleError(_0x42b304,null));};
\ No newline at end of file
+var _0x5888=['eml-format','rimraf','zip-dir','request-promise','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','limit','undefined','count','offset','Content-Range','reject','update','then','end','stack','name','send','map','ChatTransferReport','rawAttributes','type','key','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','findAll','rows','catch','show','params','includeAll','include','find','create','body','describe'];(function(_0xda66e7,_0x5120a2){var _0xe0bade=function(_0x4dcc00){while(--_0x4dcc00){_0xda66e7['push'](_0xda66e7['shift']());}};_0xe0bade(++_0x5120a2);}(_0x5888,0x163));var _0x8588=function(_0x510b98,_0x4c4cbb){_0x510b98=_0x510b98-0x0;var _0x45e775=_0x5888[_0x510b98];return _0x45e775;};'use strict';var emlformat=require(_0x8588('0x0'));var rimraf=require(_0x8588('0x1'));var zipdir=require(_0x8588('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8588('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x8588('0x4'));var util=require(_0x8588('0x5'));var path=require('path');var sox=require(_0x8588('0x6'));var csv=require(_0x8588('0x7'));var ejs=require(_0x8588('0x8'));var fs=require('fs');var fs_extra=require(_0x8588('0x9'));var _=require(_0x8588('0xa'));var squel=require(_0x8588('0xb'));var crypto=require(_0x8588('0xc'));var jsforce=require(_0x8588('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x8588('0x7'));var querystring=require(_0x8588('0xe'));var Papa=require(_0x8588('0xf'));var Redis=require(_0x8588('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x8588('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8588('0x12'));var logger=require(_0x8588('0x13'))('api');var utils=require(_0x8588('0x14'));var config=require(_0x8588('0x15'));var licenseUtil=require(_0x8588('0x16'));var db=require(_0x8588('0x17'))['db'];function respondWithStatusCode(_0x4561f1,_0x3c17f){_0x3c17f=_0x3c17f||0xcc;return function(_0x247dcc){if(_0x247dcc){return _0x4561f1[_0x8588('0x18')](_0x3c17f);}return _0x4561f1[_0x8588('0x19')](_0x3c17f)['end']();};}function respondWithResult(_0x5a5388,_0x2caea8){_0x2caea8=_0x2caea8||0xc8;return function(_0x22b526){if(_0x22b526){return _0x5a5388[_0x8588('0x19')](_0x2caea8)['json'](_0x22b526);}};}function respondWithFilteredResult(_0x4ba335,_0x103070){return function(_0x2af26d){if(_0x2af26d){var _0x1f40c2=typeof _0x103070['offset']==='undefined'&&typeof _0x103070[_0x8588('0x1a')]===_0x8588('0x1b');var _0x1ec7b1=_0x2af26d[_0x8588('0x1c')];var _0x1c129e=_0x1f40c2?0x0:_0x103070[_0x8588('0x1d')];var _0x48db9e=_0x1f40c2?_0x2af26d[_0x8588('0x1c')]:_0x103070[_0x8588('0x1d')]+_0x103070[_0x8588('0x1a')];var _0x4395c9;if(_0x48db9e>=_0x1ec7b1){_0x48db9e=_0x1ec7b1;_0x4395c9=0xc8;}else{_0x4395c9=0xce;}_0x4ba335[_0x8588('0x19')](_0x4395c9);return _0x4ba335['set'](_0x8588('0x1e'),_0x1c129e+'-'+_0x48db9e+'/'+_0x1ec7b1)['json'](_0x2af26d);}return null;};}function patchUpdates(_0x4a3826){return function(_0x238ba2){try{jsonpatch['apply'](_0x238ba2,_0x4a3826,!![]);}catch(_0x2371f){return BPromise[_0x8588('0x1f')](_0x2371f);}return _0x238ba2['save']();};}function saveUpdates(_0x27e4dc,_0x40141e){return function(_0x3bcf4a){if(_0x3bcf4a){return _0x3bcf4a[_0x8588('0x20')](_0x27e4dc)[_0x8588('0x21')](function(_0x59a17f){return _0x59a17f;});}return null;};}function removeEntity(_0x5b9600,_0x115314){return function(_0x5b06b2){if(_0x5b06b2){return _0x5b06b2['destroy']()[_0x8588('0x21')](function(){_0x5b9600[_0x8588('0x19')](0xcc)[_0x8588('0x22')]();});}};}function handleEntityNotFound(_0x4ad80e,_0x10cef2){return function(_0x16dee2){if(!_0x16dee2){_0x4ad80e[_0x8588('0x18')](0x194);}return _0x16dee2;};}function handleError(_0x2b9f20,_0x5d066f){_0x5d066f=_0x5d066f||0x1f4;return function(_0x2bb0e1){logger['error'](_0x2bb0e1[_0x8588('0x23')]);if(_0x2bb0e1[_0x8588('0x24')]){delete _0x2bb0e1[_0x8588('0x24')];}_0x2b9f20[_0x8588('0x19')](_0x5d066f)[_0x8588('0x25')](_0x2bb0e1);};}exports['index']=function(_0x2b9654,_0x1bee48){var _0x11a8f6={},_0x1a4617={},_0x2a6e61={'count':0x0,'rows':[]};var _0x397881=_[_0x8588('0x26')](db[_0x8588('0x27')][_0x8588('0x28')],function(_0x2fd8d2){return{'name':_0x2fd8d2['fieldName'],'type':_0x2fd8d2[_0x8588('0x29')][_0x8588('0x2a')]};});_0x1a4617['model']=_['map'](_0x397881,_0x8588('0x24'));_0x1a4617['query']=_[_0x8588('0x2b')](_0x2b9654[_0x8588('0x2c')]);_0x1a4617[_0x8588('0x2d')]=_[_0x8588('0x2e')](_0x1a4617[_0x8588('0x2f')],_0x1a4617[_0x8588('0x2c')]);_0x11a8f6[_0x8588('0x30')]=_[_0x8588('0x2e')](_0x1a4617['model'],qs[_0x8588('0x31')](_0x2b9654[_0x8588('0x2c')]['fields']));_0x11a8f6[_0x8588('0x30')]=_0x11a8f6[_0x8588('0x30')][_0x8588('0x32')]?_0x11a8f6['attributes']:_0x1a4617['model'];if(!_0x2b9654['query'][_0x8588('0x33')]('nolimit')){_0x11a8f6[_0x8588('0x1a')]=qs[_0x8588('0x1a')](_0x2b9654[_0x8588('0x2c')]['limit']);_0x11a8f6[_0x8588('0x1d')]=qs[_0x8588('0x1d')](_0x2b9654[_0x8588('0x2c')][_0x8588('0x1d')]);}_0x11a8f6[_0x8588('0x34')]=qs['sort'](_0x2b9654['query'][_0x8588('0x35')]);_0x11a8f6[_0x8588('0x36')]=qs['filters'](_[_0x8588('0x37')](_0x2b9654[_0x8588('0x2c')],_0x1a4617[_0x8588('0x2d')]),_0x397881);if(_0x2b9654[_0x8588('0x2c')][_0x8588('0x38')]){_0x11a8f6[_0x8588('0x36')]=_[_0x8588('0x39')](_0x11a8f6[_0x8588('0x36')],{'$or':_[_0x8588('0x26')](_0x397881,function(_0x1479da){if(_0x1479da[_0x8588('0x29')]!==_0x8588('0x3a')){var _0x16887a={};_0x16887a[_0x1479da[_0x8588('0x24')]]={'$like':'%'+_0x2b9654[_0x8588('0x2c')]['filter']+'%'};return _0x16887a;}})});}_0x11a8f6=_['merge']({},_0x11a8f6,_0x2b9654[_0x8588('0x3b')]);var _0x3499d7={'where':_0x11a8f6[_0x8588('0x36')]};return db[_0x8588('0x27')]['count'](_0x3499d7)[_0x8588('0x21')](function(_0x3a9a33){_0x2a6e61[_0x8588('0x1c')]=_0x3a9a33;if(_0x2b9654[_0x8588('0x2c')]['includeAll']){_0x11a8f6['include']=[{'all':!![]}];}return db[_0x8588('0x27')][_0x8588('0x3c')](_0x11a8f6);})[_0x8588('0x21')](function(_0x4a723a){_0x2a6e61[_0x8588('0x3d')]=_0x4a723a;return _0x2a6e61;})['then'](respondWithFilteredResult(_0x1bee48,_0x11a8f6))[_0x8588('0x3e')](handleError(_0x1bee48,null));};exports[_0x8588('0x3f')]=function(_0x536399,_0x3884e4){var _0x4f0152={'raw':!![],'where':{'id':_0x536399[_0x8588('0x40')]['id']}},_0x4eb52a={};_0x4eb52a[_0x8588('0x2f')]=_[_0x8588('0x2b')](db['ChatTransferReport'][_0x8588('0x28')]);_0x4eb52a[_0x8588('0x2c')]=_[_0x8588('0x2b')](_0x536399[_0x8588('0x2c')]);_0x4eb52a[_0x8588('0x2d')]=_[_0x8588('0x2e')](_0x4eb52a['model'],_0x4eb52a[_0x8588('0x2c')]);_0x4f0152[_0x8588('0x30')]=_['intersection'](_0x4eb52a[_0x8588('0x2f')],qs[_0x8588('0x31')](_0x536399[_0x8588('0x2c')][_0x8588('0x31')]));_0x4f0152[_0x8588('0x30')]=_0x4f0152[_0x8588('0x30')][_0x8588('0x32')]?_0x4f0152[_0x8588('0x30')]:_0x4eb52a[_0x8588('0x2f')];if(_0x536399[_0x8588('0x2c')][_0x8588('0x41')]){_0x4f0152[_0x8588('0x42')]=[{'all':!![]}];}_0x4f0152=_[_0x8588('0x39')]({},_0x4f0152,_0x536399[_0x8588('0x3b')]);return db[_0x8588('0x27')][_0x8588('0x43')](_0x4f0152)['then'](handleEntityNotFound(_0x3884e4,null))[_0x8588('0x21')](respondWithResult(_0x3884e4,null))[_0x8588('0x3e')](handleError(_0x3884e4,null));};exports[_0x8588('0x44')]=function(_0x27c299,_0x56c21e){return db[_0x8588('0x27')]['create'](_0x27c299[_0x8588('0x45')],{})[_0x8588('0x21')](respondWithResult(_0x56c21e,0xc9))[_0x8588('0x3e')](handleError(_0x56c21e,null));};exports[_0x8588('0x20')]=function(_0x5cc1cd,_0x6f5eea){if(_0x5cc1cd[_0x8588('0x45')]['id']){delete _0x5cc1cd['body']['id'];}return db['ChatTransferReport']['find']({'where':{'id':_0x5cc1cd[_0x8588('0x40')]['id']}})[_0x8588('0x21')](handleEntityNotFound(_0x6f5eea,null))[_0x8588('0x21')](saveUpdates(_0x5cc1cd[_0x8588('0x45')],null))['then'](respondWithResult(_0x6f5eea,null))[_0x8588('0x3e')](handleError(_0x6f5eea,null));};exports['destroy']=function(_0x1a4574,_0x17d7b7){return db['ChatTransferReport'][_0x8588('0x43')]({'where':{'id':_0x1a4574[_0x8588('0x40')]['id']}})['then'](handleEntityNotFound(_0x17d7b7,null))['then'](removeEntity(_0x17d7b7,null))[_0x8588('0x3e')](handleError(_0x17d7b7,null));};exports[_0x8588('0x46')]=function(_0xd0ba5c,_0xe7806c){return db[_0x8588('0x27')][_0x8588('0x46')]()['then'](respondWithResult(_0xe7806c,null))[_0x8588('0x3e')](handleError(_0xe7806c,null));};
\ No newline at end of file
index 043f75a..5d26192 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6fb8=['lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','exports','define','report_chat_transfer'];(function(_0x3d1996,_0x1f08f0){var _0x550afd=function(_0xb3b511){while(--_0xb3b511){_0x3d1996['push'](_0x3d1996['shift']());}};_0x550afd(++_0x1f08f0);}(_0x6fb8,0x6e));var _0x86fb=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0x6fb8[_0x3e5086];return _0xfeb102;};'use strict';var _=require(_0x86fb('0x0'));var util=require('util');var logger=require(_0x86fb('0x1'))(_0x86fb('0x2'));var moment=require(_0x86fb('0x3'));var BPromise=require(_0x86fb('0x4'));var rp=require(_0x86fb('0x5'));var fs=require('fs');var path=require(_0x86fb('0x6'));var rimraf=require(_0x86fb('0x7'));var config=require('../../config/environment');var attributes=require('./chatTransferReport.attributes');module[_0x86fb('0x8')]=function(_0x2b3ad5,_0x3b3a56){return _0x2b3ad5[_0x86fb('0x9')]('ChatTransferReport',attributes,{'tableName':_0x86fb('0xa'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xdcb1=['moment','bluebird','path','rimraf','../../config/environment','./chatTransferReport.attributes','report_chat_transfer','uniqueid','lodash','util','../../config/logger','api'];(function(_0xed6693,_0x5d36a8){var _0x54f73f=function(_0x16f04f){while(--_0x16f04f){_0xed6693['push'](_0xed6693['shift']());}};_0x54f73f(++_0x5d36a8);}(_0xdcb1,0xf8));var _0x1dcb=function(_0x305494,_0x412a0b){_0x305494=_0x305494-0x0;var _0x32ac4d=_0xdcb1[_0x305494];return _0x32ac4d;};'use strict';var _=require(_0x1dcb('0x0'));var util=require(_0x1dcb('0x1'));var logger=require(_0x1dcb('0x2'))(_0x1dcb('0x3'));var moment=require(_0x1dcb('0x4'));var BPromise=require(_0x1dcb('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1dcb('0x6'));var rimraf=require(_0x1dcb('0x7'));var config=require(_0x1dcb('0x8'));var attributes=require(_0x1dcb('0x9'));module['exports']=function(_0x3c322b,_0xa2330e){return _0x3c322b['define']('ChatTransferReport',attributes,{'tableName':_0x1dcb('0xa'),'paranoid':![],'indexes':[{'name':_0x1dcb('0xb'),'fields':[_0x1dcb('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index b7ab246..73e1d8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04ce=['ChatTransferReport,\x20%s,\x20%s','request\x20sent','ChatTransferReport,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info'];(function(_0x5b2b3b,_0x4f76c0){var _0x1f41bc=function(_0x2b4381){while(--_0x2b4381){_0x5b2b3b['push'](_0x5b2b3b['shift']());}};_0x1f41bc(++_0x4f76c0);}(_0x04ce,0xc4));var _0xe04c=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x04ce[_0x501510];return _0x1e6ee5;};'use strict';var _=require(_0xe04c('0x0'));var util=require(_0xe04c('0x1'));var moment=require('moment');var BPromise=require(_0xe04c('0x2'));var rs=require(_0xe04c('0x3'));var fs=require('fs');var Redis=require(_0xe04c('0x4'));var db=require(_0xe04c('0x5'))['db'];var utils=require(_0xe04c('0x6'));var logger=require(_0xe04c('0x7'))(_0xe04c('0x8'));var config=require(_0xe04c('0x9'));var jayson=require(_0xe04c('0xa'));var client=jayson[_0xe04c('0xb')][_0xe04c('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x381b19,_0x30e512,_0xddb494){return new BPromise(function(_0x35a264,_0x284007){return client['request'](_0x381b19,_0xddb494)['then'](function(_0x755f7e){logger[_0xe04c('0xd')](_0xe04c('0xe'),_0x30e512,_0xe04c('0xf'));logger['debug'](_0xe04c('0x10'),_0x30e512,_0xe04c('0xf'),JSON['stringify'](_0x755f7e));if(_0x755f7e['error']){if(_0x755f7e[_0xe04c('0x11')]['code']===0x1f4){logger[_0xe04c('0x11')]('ChatTransferReport,\x20%s,\x20%s',_0x30e512,_0x755f7e[_0xe04c('0x11')]['message']);return _0x284007(_0x755f7e[_0xe04c('0x11')][_0xe04c('0x12')]);}logger[_0xe04c('0x11')](_0xe04c('0xe'),_0x30e512,_0x755f7e[_0xe04c('0x11')]['message']);return _0x35a264(_0x755f7e[_0xe04c('0x11')][_0xe04c('0x12')]);}else{logger['info'](_0xe04c('0xe'),_0x30e512,_0xe04c('0xf'));_0x35a264(_0x755f7e[_0xe04c('0x13')][_0xe04c('0x12')]);}})[_0xe04c('0x14')](function(_0x4b918b){logger[_0xe04c('0x11')](_0xe04c('0xe'),_0x30e512,_0x4b918b);_0x284007(_0x4b918b);});});}
\ No newline at end of file
+var _0x6af5=['ChatTransferReport,\x20%s,\x20%s','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','request','request\x20sent','debug','stringify','error','code'];(function(_0x495cc5,_0x392018){var _0x476adc=function(_0x1e685d){while(--_0x1e685d){_0x495cc5['push'](_0x495cc5['shift']());}};_0x476adc(++_0x392018);}(_0x6af5,0x1e3));var _0x56af=function(_0x39c734,_0x2f3e06){_0x39c734=_0x39c734-0x0;var _0xb2a2f9=_0x6af5[_0x39c734];return _0xb2a2f9;};'use strict';var _=require('lodash');var util=require(_0x56af('0x0'));var moment=require(_0x56af('0x1'));var BPromise=require(_0x56af('0x2'));var rs=require(_0x56af('0x3'));var fs=require('fs');var Redis=require(_0x56af('0x4'));var db=require(_0x56af('0x5'))['db'];var utils=require(_0x56af('0x6'));var logger=require('../../config/logger')(_0x56af('0x7'));var config=require(_0x56af('0x8'));var jayson=require(_0x56af('0x9'));var client=jayson['client'][_0x56af('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x52410b,_0x5f35b5,_0x2790a3){return new BPromise(function(_0x32bec1,_0x4dd442){return client[_0x56af('0xb')](_0x52410b,_0x2790a3)['then'](function(_0x109f7d){logger['info']('ChatTransferReport,\x20%s,\x20%s',_0x5f35b5,_0x56af('0xc'));logger[_0x56af('0xd')]('ChatTransferReport,\x20%s,\x20%s,\x20%s',_0x5f35b5,'request\x20sent',JSON[_0x56af('0xe')](_0x109f7d));if(_0x109f7d[_0x56af('0xf')]){if(_0x109f7d[_0x56af('0xf')][_0x56af('0x10')]===0x1f4){logger[_0x56af('0xf')](_0x56af('0x11'),_0x5f35b5,_0x109f7d['error'][_0x56af('0x12')]);return _0x4dd442(_0x109f7d[_0x56af('0xf')][_0x56af('0x12')]);}logger['error']('ChatTransferReport,\x20%s,\x20%s',_0x5f35b5,_0x109f7d['error'][_0x56af('0x12')]);return _0x32bec1(_0x109f7d[_0x56af('0xf')][_0x56af('0x12')]);}else{logger['info'](_0x56af('0x11'),_0x5f35b5,'request\x20sent');_0x32bec1(_0x109f7d['result'][_0x56af('0x12')]);}})[_0x56af('0x13')](function(_0x117a3b){logger[_0x56af('0xf')](_0x56af('0x11'),_0x5f35b5,_0x117a3b);_0x4dd442(_0x117a3b);});});}
\ No newline at end of file
index 326dce7..537824f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9859=['put','update','delete','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./chatTransferReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create'];(function(_0x317c1f,_0x3047b8){var _0x402d73=function(_0x167e00){while(--_0x167e00){_0x317c1f['push'](_0x317c1f['shift']());}};_0x402d73(++_0x3047b8);}(_0x9859,0x193));var _0x9985=function(_0x35885a,_0x42fed7){_0x35885a=_0x35885a-0x0;var _0xe86249=_0x9859[_0x35885a];return _0xe86249;};'use strict';var multer=require('multer');var util=require(_0x9985('0x0'));var path=require(_0x9985('0x1'));var timeout=require(_0x9985('0x2'));var express=require(_0x9985('0x3'));var router=express[_0x9985('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x9985('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x9985('0x6'));var controller=require(_0x9985('0x7'));router[_0x9985('0x8')]('/',auth[_0x9985('0x9')](),controller[_0x9985('0xa')]);router['get'](_0x9985('0xb'),auth['isAuthenticated'](),controller[_0x9985('0xc')]);router['get'](_0x9985('0xd'),auth[_0x9985('0x9')](),controller[_0x9985('0xe')]);router[_0x9985('0xf')]('/',auth[_0x9985('0x9')](),controller[_0x9985('0x10')]);router[_0x9985('0x11')](_0x9985('0xd'),auth[_0x9985('0x9')](),controller[_0x9985('0x12')]);router[_0x9985('0x13')](_0x9985('0xd'),auth[_0x9985('0x9')](),controller['destroy']);module[_0x9985('0x14')]=router;
\ No newline at end of file
+var _0x7caf=['index','get','/:id','show','post','create','put','delete','destroy','multer','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatTransferReport.controller','isAuthenticated'];(function(_0x432259,_0x23fdba){var _0x47b232=function(_0x57f178){while(--_0x57f178){_0x432259['push'](_0x432259['shift']());}};_0x47b232(++_0x23fdba);}(_0x7caf,0xb3));var _0xf7ca=function(_0x3b21e9,_0x1d6039){_0x3b21e9=_0x3b21e9-0x0;var _0x453b2b=_0x7caf[_0x3b21e9];return _0x453b2b;};'use strict';var multer=require(_0xf7ca('0x0'));var util=require('util');var path=require(_0xf7ca('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xf7ca('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xf7ca('0x3'));var interaction=require(_0xf7ca('0x4'));var config=require(_0xf7ca('0x5'));var controller=require(_0xf7ca('0x6'));router['get']('/',auth[_0xf7ca('0x7')](),controller[_0xf7ca('0x8')]);router[_0xf7ca('0x9')]('/describe',auth[_0xf7ca('0x7')](),controller['describe']);router[_0xf7ca('0x9')](_0xf7ca('0xa'),auth[_0xf7ca('0x7')](),controller[_0xf7ca('0xb')]);router[_0xf7ca('0xc')]('/',auth['isAuthenticated'](),controller[_0xf7ca('0xd')]);router[_0xf7ca('0xe')](_0xf7ca('0xa'),auth[_0xf7ca('0x7')](),controller['update']);router[_0xf7ca('0xf')]('/:id',auth[_0xf7ca('0x7')](),controller[_0xf7ca('0x10')]);module['exports']=router;
\ No newline at end of file
index 5044c25..36c9278 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2dae=['Send','Contact\x20us','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20properly\x20submitted','Form\x20submission\x20error','Note','Thanks\x20you\x20for\x20your\x20time!','Feedback','star','thumb','stringify','input','name','text','getDataValue','onlineForm','parse','setDataValue','TEXT','textarea','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:','Your\x20request\x20has\x20not\x20been\x20processed.','Skip','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','bottom_right','CHAT','alternate','#fafafa','System','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','sequelize','exports','STRING','address','email','Agent','#011F6A','#ffffff','INTEGER','BOOLEAN','ENUM','rounded','squared'];(function(_0x18c627,_0x926f18){var _0x1e9cbf=function(_0x63fb22){while(--_0x63fb22){_0x18c627['push'](_0x18c627['shift']());}};_0x1e9cbf(++_0x926f18);}(_0x2dae,0xc3));var _0xe2da=function(_0x2df507,_0x553862){_0x2df507=_0x2df507-0x0;var _0x1f7167=_0x2dae[_0x2df507];return _0x1f7167;};'use strict';var Sequelize=require(_0xe2da('0x0'));var rs=require('randomstring');module[_0xe2da('0x1')]={'name':{'type':Sequelize[_0xe2da('0x2')],'allowNull':![]},'address':{'type':Sequelize[_0xe2da('0x2')],'allowNull':![],'unique':_0xe2da('0x3')},'description':{'type':Sequelize[_0xe2da('0x2')]},'mapKey':{'type':Sequelize['STRING'],'defaultValue':_0xe2da('0x4')},'mapKeyOffline':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':_0xe2da('0x4')},'key':{'type':Sequelize[_0xe2da('0x2')],'allowNull':![]},'agentAlias':{'type':Sequelize['STRING'],'defaultValue':_0xe2da('0x5')},'customerAlias':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':'Me'},'color':{'type':Sequelize[_0xe2da('0x2')],'allowNull':![],'defaultValue':_0xe2da('0x6'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0xe2da('0x2')],'allowNull':![],'defaultValue':_0xe2da('0x6'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0xe2da('0x2')],'allowNull':![],'defaultValue':_0xe2da('0x7'),'validate':{'notEmpty':!![]}},'textButtonColor':{'type':Sequelize[_0xe2da('0x2')],'allowNull':![],'defaultValue':'#ffffff','validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0xe2da('0x8')],'defaultValue':0xf},'remote':{'type':Sequelize[_0xe2da('0x2')]},'animation':{'type':Sequelize[_0xe2da('0x9')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0xe2da('0xa')](_0xe2da('0xb'),_0xe2da('0xc')),'defaultValue':_0xe2da('0xb')},'header_online':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':'We\x20are\x20here!'},'start_chat_button':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':'Chat'},'offline_chat_button':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':_0xe2da('0xd')},'header_offline':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':_0xe2da('0xe')},'download_transcript':{'type':Sequelize[_0xe2da('0x9')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0xe2da('0x8')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':'Powered\x20by\x20xCALLY'},'defaultWhiteLabel':{'type':Sequelize[_0xe2da('0x9')],'defaultValue':!![]},'sitepic':{'type':Sequelize['TEXT']},'closingQuestion':{'type':Sequelize['STRING'],'defaultValue':_0xe2da('0xf')},'formSubmitSuccessMessage':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':_0xe2da('0x10')},'formSubmitFailureMessage':{'type':Sequelize['STRING'],'defaultValue':_0xe2da('0x11')},'noteTitle':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':_0xe2da('0x12')},'placeholderMessage':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':'Type\x20a\x20message'},'closingMessage':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':_0xe2da('0x13')},'closingMessageButton':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':_0xe2da('0xd')},'skipMessageButton':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':'Skip'},'conditionAgreement':{'type':Sequelize[_0xe2da('0x9')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0xe2da('0x9')],'defaultValue':![]},'enableFeedback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0xe2da('0x9')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':_0xe2da('0x14')},'ratingType':{'type':Sequelize[_0xe2da('0xa')](_0xe2da('0x15'),_0xe2da('0x16')),'defaultValue':'star'},'ratingStarsNumber':{'type':Sequelize[_0xe2da('0x8')],'defaultValue':0x5},'onlineForm':{'type':Sequelize['TEXT'],'defaultValue':function(){return JSON[_0xe2da('0x17')]({'items':[{'type':_0xe2da('0x18'),'variable':null,'config':{'placeholder':_0xe2da('0x19'),'type':_0xe2da('0x1a'),'required':!![]},'props':{'title':_0xe2da('0x19'),'helpText':''}},{'type':_0xe2da('0x18'),'props':{'title':_0xe2da('0x4'),'helpText':''},'config':{'required':!![],'placeholder':_0xe2da('0x4'),'type':'email'},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0xe2da('0x1b')](_0xe2da('0x1c'))?JSON[_0xe2da('0x1d')](this[_0xe2da('0x1b')](_0xe2da('0x1c'))):{};},'set':function(_0x230fb8){return this[_0xe2da('0x1e')]('onlineForm',JSON[_0xe2da('0x17')](_0x230fb8));}},'offlineForm':{'type':Sequelize[_0xe2da('0x1f')],'defaultValue':function(){return JSON[_0xe2da('0x17')]({'items':[{'type':_0xe2da('0x18'),'props':{'title':_0xe2da('0x4'),'helpText':''},'config':{'required':!![],'placeholder':_0xe2da('0x4'),'type':_0xe2da('0x4')},'variable':null},{'type':_0xe2da('0x20'),'config':{'placeholder':'Comments'},'props':{'title':'Comments','helpText':'Leave\x20your\x20comments'}}],'fromKey':0x0});},'get':function(){return this[_0xe2da('0x1b')](_0xe2da('0x21'))?JSON[_0xe2da('0x1d')](this[_0xe2da('0x1b')]('offlineForm')):{};},'set':function(_0x490794){return this[_0xe2da('0x1e')](_0xe2da('0x21'),JSON[_0xe2da('0x17')](_0x490794));}},'token':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':function(){return rs[_0xe2da('0x22')]();}},'autoclose':{'type':Sequelize[_0xe2da('0x9')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0xe2da('0x9')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0xe2da('0x9')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0xe2da('0x2')]},'forwardOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize['STRING']},'waitingTitle':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':_0xe2da('0x23')},'waitingMessage':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':_0xe2da('0x24')},'offlineMessageSubject':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':_0xe2da('0x25')},'offlineMessageBody':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':_0xe2da('0x26')},'enableUnmanagedNote':{'type':Sequelize[_0xe2da('0x9')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':_0xe2da('0x27')},'skipUnmanaged':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':_0xe2da('0x28')},'sendUnmanaged':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':_0xe2da('0xd')},'enableCustomerAttachment':{'type':Sequelize[_0xe2da('0x9')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0xe2da('0x9')],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0xe2da('0x1f')]},'showAgentAvatar':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'timezone':{'type':Sequelize[_0xe2da('0x2')]},'notificationTemplate':{'type':Sequelize[_0xe2da('0x1f')],'defaultValue':function(){return _0xe2da('0x29');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xe2da('0x9')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0xe2da('0x9')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':'website_alias'},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':_0xe2da('0x2a')},'verticalAlignment':{'type':Sequelize['INTEGER'],'defaultValue':0x1e},'labelText':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':_0xe2da('0x2b')},'messagesAlignment':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':_0xe2da('0x2c')},'defaultTitle':{'type':Sequelize[_0xe2da('0x2')]},'customerAvatar':{'type':Sequelize['TEXT']},'showCustomerAvatar':{'type':Sequelize[_0xe2da('0x9')],'defaultValue':![]},'messageFontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xc},'backgroundColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xe2da('0x2d'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xe2da('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xe2da('0x9')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':_0xe2da('0x2e')},'systemAvatar':{'type':Sequelize['TEXT']},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0xe2da('0x9')],'defaultValue':![],'comment':_0xe2da('0x2f'),'set':function(_0x26ba99){if(!_0x26ba99)this[_0xe2da('0x1e')](_0xe2da('0x30'),null);this[_0xe2da('0x1e')](_0xe2da('0x31'),_0x26ba99);}},'vidaooEscalation':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0xe2da('0x2')]},'vidaooTopic':{'type':Sequelize[_0xe2da('0x2')],'allowNull':![],'defaultValue':_0xe2da('0x32')},'vidaooNote':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':function(){return _0xe2da('0x33');}},'vidaooMetadata':{'type':Sequelize['TEXT'],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0xe2da('0x9')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0xe2da('0x1f')]}};
\ No newline at end of file
+var _0xaa88=['#011F6A','#ffffff','BOOLEAN','ENUM','rounded','Chat','Contact\x20us','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20properly\x20submitted','Form\x20submission\x20error','Note','Send','Skip','Feedback','star','thumb','input','text','getDataValue','onlineForm','parse','setDataValue','stringify','textarea','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:','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','INTEGER','CHAT','#fafafa','System','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','sequelize','randomstring','exports','STRING','address','email','Agent'];(function(_0x1b6186,_0x1ec7f2){var _0x186121=function(_0x1748a8){while(--_0x1748a8){_0x1b6186['push'](_0x1b6186['shift']());}};_0x186121(++_0x1ec7f2);}(_0xaa88,0x137));var _0x8aa8=function(_0x50007c,_0x1cbf11){_0x50007c=_0x50007c-0x0;var _0x5c1ec7=_0xaa88[_0x50007c];return _0x5c1ec7;};'use strict';var Sequelize=require(_0x8aa8('0x0'));var rs=require(_0x8aa8('0x1'));module[_0x8aa8('0x2')]={'name':{'type':Sequelize[_0x8aa8('0x3')],'allowNull':![]},'address':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x8aa8('0x4')},'description':{'type':Sequelize[_0x8aa8('0x3')]},'mapKey':{'type':Sequelize[_0x8aa8('0x3')],'defaultValue':_0x8aa8('0x5')},'mapKeyOffline':{'type':Sequelize[_0x8aa8('0x3')],'defaultValue':_0x8aa8('0x5')},'key':{'type':Sequelize['STRING'],'allowNull':![]},'agentAlias':{'type':Sequelize['STRING'],'defaultValue':_0x8aa8('0x6')},'customerAlias':{'type':Sequelize['STRING'],'defaultValue':'Me'},'color':{'type':Sequelize[_0x8aa8('0x3')],'allowNull':![],'defaultValue':_0x8aa8('0x7'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0x8aa8('0x3')],'allowNull':![],'defaultValue':_0x8aa8('0x7'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x8aa8('0x8'),'validate':{'notEmpty':!![]}},'textButtonColor':{'type':Sequelize[_0x8aa8('0x3')],'allowNull':![],'defaultValue':_0x8aa8('0x8'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xf},'remote':{'type':Sequelize[_0x8aa8('0x3')]},'animation':{'type':Sequelize[_0x8aa8('0x9')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0x8aa8('0xa')](_0x8aa8('0xb'),'squared'),'defaultValue':_0x8aa8('0xb')},'header_online':{'type':Sequelize[_0x8aa8('0x3')],'defaultValue':'We\x20are\x20here!'},'start_chat_button':{'type':Sequelize[_0x8aa8('0x3')],'defaultValue':_0x8aa8('0xc')},'offline_chat_button':{'type':Sequelize[_0x8aa8('0x3')],'defaultValue':'Send'},'header_offline':{'type':Sequelize[_0x8aa8('0x3')],'defaultValue':_0x8aa8('0xd')},'download_transcript':{'type':Sequelize[_0x8aa8('0x9')],'defaultValue':!![]},'timeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0x8aa8('0x3')],'defaultValue':'Powered\x20by\x20xCALLY'},'defaultWhiteLabel':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0x8aa8('0xe')]},'closingQuestion':{'type':Sequelize[_0x8aa8('0x3')],'defaultValue':_0x8aa8('0xf')},'formSubmitSuccessMessage':{'type':Sequelize[_0x8aa8('0x3')],'defaultValue':_0x8aa8('0x10')},'formSubmitFailureMessage':{'type':Sequelize[_0x8aa8('0x3')],'defaultValue':_0x8aa8('0x11')},'noteTitle':{'type':Sequelize[_0x8aa8('0x3')],'defaultValue':_0x8aa8('0x12')},'placeholderMessage':{'type':Sequelize['STRING'],'defaultValue':'Type\x20a\x20message'},'closingMessage':{'type':Sequelize[_0x8aa8('0x3')],'defaultValue':'Thanks\x20you\x20for\x20your\x20time!'},'closingMessageButton':{'type':Sequelize['STRING'],'defaultValue':_0x8aa8('0x13')},'skipMessageButton':{'type':Sequelize['STRING'],'defaultValue':_0x8aa8('0x14')},'conditionAgreement':{'type':Sequelize[_0x8aa8('0x9')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0x8aa8('0x9')],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0x8aa8('0x9')],'defaultValue':![]},'enableSendButton':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0x8aa8('0x3')],'defaultValue':_0x8aa8('0x15')},'ratingType':{'type':Sequelize[_0x8aa8('0xa')](_0x8aa8('0x16'),_0x8aa8('0x17')),'defaultValue':_0x8aa8('0x16')},'ratingStarsNumber':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0x8aa8('0xe')],'defaultValue':function(){return JSON['stringify']({'items':[{'type':_0x8aa8('0x18'),'variable':null,'config':{'placeholder':'name','type':_0x8aa8('0x19'),'required':!![]},'props':{'title':'name','helpText':''}},{'type':_0x8aa8('0x18'),'props':{'title':_0x8aa8('0x5'),'helpText':''},'config':{'required':!![],'placeholder':_0x8aa8('0x5'),'type':'email'},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0x8aa8('0x1a')](_0x8aa8('0x1b'))?JSON[_0x8aa8('0x1c')](this['getDataValue']('onlineForm')):{};},'set':function(_0x2d1508){return this[_0x8aa8('0x1d')](_0x8aa8('0x1b'),JSON[_0x8aa8('0x1e')](_0x2d1508));}},'offlineForm':{'type':Sequelize[_0x8aa8('0xe')],'defaultValue':function(){return JSON['stringify']({'items':[{'type':_0x8aa8('0x18'),'props':{'title':'email','helpText':''},'config':{'required':!![],'placeholder':_0x8aa8('0x5'),'type':_0x8aa8('0x5')},'variable':null},{'type':_0x8aa8('0x1f'),'config':{'placeholder':'Comments'},'props':{'title':'Comments','helpText':_0x8aa8('0x20')}}],'fromKey':0x0});},'get':function(){return this['getDataValue'](_0x8aa8('0x21'))?JSON[_0x8aa8('0x1c')](this[_0x8aa8('0x1a')](_0x8aa8('0x21'))):{};},'set':function(_0xe07a83){return this['setDataValue'](_0x8aa8('0x21'),JSON[_0x8aa8('0x1e')](_0xe07a83));}},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0x8aa8('0x22')]();}},'autoclose':{'type':Sequelize[_0x8aa8('0x9')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0x8aa8('0x9')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0x8aa8('0x3')]},'forwardOffline':{'type':Sequelize[_0x8aa8('0x9')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0x8aa8('0x3')]},'waitingTitle':{'type':Sequelize[_0x8aa8('0x3')],'defaultValue':_0x8aa8('0x23')},'waitingMessage':{'type':Sequelize[_0x8aa8('0x3')],'defaultValue':_0x8aa8('0x24')},'offlineMessageSubject':{'type':Sequelize[_0x8aa8('0x3')],'defaultValue':_0x8aa8('0x25')},'offlineMessageBody':{'type':Sequelize[_0x8aa8('0x3')],'defaultValue':_0x8aa8('0x26')},'enableUnmanagedNote':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize['STRING'],'defaultValue':_0x8aa8('0x27')},'skipUnmanaged':{'type':Sequelize[_0x8aa8('0x3')],'defaultValue':_0x8aa8('0x14')},'sendUnmanaged':{'type':Sequelize[_0x8aa8('0x3')],'defaultValue':_0x8aa8('0x13')},'enableCustomerAttachment':{'type':Sequelize[_0x8aa8('0x9')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentAvatar':{'type':Sequelize['TEXT']},'showAgentAvatar':{'type':Sequelize[_0x8aa8('0x9')],'defaultValue':![]},'timezone':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize[_0x8aa8('0xe')],'defaultValue':function(){return _0x8aa8('0x28');}},'notificationSound':{'type':Sequelize[_0x8aa8('0x9')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0x8aa8('0x9')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0x8aa8('0x3')],'defaultValue':_0x8aa8('0x29')},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize['STRING'],'defaultValue':_0x8aa8('0x2a')},'verticalAlignment':{'type':Sequelize[_0x8aa8('0x2b')],'defaultValue':0x1e},'labelText':{'type':Sequelize['STRING'],'defaultValue':_0x8aa8('0x2c')},'messagesAlignment':{'type':Sequelize[_0x8aa8('0x3')],'defaultValue':'alternate'},'defaultTitle':{'type':Sequelize[_0x8aa8('0x3')]},'customerAvatar':{'type':Sequelize['TEXT']},'showCustomerAvatar':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0x8aa8('0x2b')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x8aa8('0x2d'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0x8aa8('0x9')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x8aa8('0x2b')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x8aa8('0x9')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0x8aa8('0x3')],'defaultValue':_0x8aa8('0x2e')},'systemAvatar':{'type':Sequelize['TEXT']},'mandatoryDispositionPauseId':{'type':Sequelize[_0x8aa8('0x2b')],'comment':_0x8aa8('0x2f')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x8aa8('0x30'),'set':function(_0x3c6115){if(!_0x3c6115)this[_0x8aa8('0x1d')](_0x8aa8('0x31'),null);this[_0x8aa8('0x1d')](_0x8aa8('0x32'),_0x3c6115);}},'vidaooEscalation':{'type':Sequelize[_0x8aa8('0x9')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0x8aa8('0x3')]},'vidaooTopic':{'type':Sequelize[_0x8aa8('0x3')],'allowNull':![],'defaultValue':_0x8aa8('0x33')},'vidaooNote':{'type':Sequelize[_0x8aa8('0x3')],'defaultValue':function(){return _0x8aa8('0x34');}},'vidaooMetadata':{'type':Sequelize[_0x8aa8('0xe')],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0x8aa8('0x9')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0x8aa8('0xe')]}};
\ No newline at end of file
index 4c997ea..ccc6f6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16cb=['CloudProvider','Smtp','forwardOffline','getSmtpOptions','SendMail','sendMail','\x22%s\x22\x20<%s>','email','offlineMessageSubject','openNewInteraction','subjectOffline','toPairsIn','mapValues','Chat','MailAccountId','NotifyMailAccount','notifyMail','remove','Could\x20not\x20remove\x20attachment\x20file','addInteraction','omit','rawAttributes','Contact','Owner','fullname','internal','Tag','Tags','color','tag','Command','getSnippet','iftime\x20%s,%s','timezone','iftime\x20%s','interval','indexOf','true','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','ONLINE','OFFLINE','No\x20timezone','inspect','Interval','Intervals','getProactiveActions','getLicense','virtual','increment','chatLicenseExceeded','push','all','some','server/files/chat/iframe.ejs','x-forwarded-for','x-real-ip','connection','remoteAddress','replace','render','alignment','labelText','textColor','textButtonColor','color_button','backgroundColor','hideWhenOffline','IntervalId','addApplications','sequelize','ISOLATION_LEVELS','READ_COMMITTED','bulkCreate','findAndCountAll','finally','getApplications','addProactiveActions','ChatProactiveAction','getFields','online','false','offlineForm','items','fromKey','getOfflineMessages','addAgents','userChatWebsite:save','removeAgents','userChatWebsite:remove','emit','getAgents','bluebird','util','ejs','fs-extra','querystring','ioredis','../../components/parsers/qs','api','../../config/environment','../../mysqldb','localhost','socket.io-emitter','redis','register','html-to-text','jayson/promise','http','client','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','message','result','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','update','destroy','get','ChatWebsites','end','stack','name','send','index','mandatoryDispositionPause','map','ChatWebsite','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','sort','where','filters','pick','filter','merge','VIRTUAL','options','include','findAll','catch','show','Pause','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','params','describe','addDisposition','ChatWebsiteId','Disposition','getDispositions','findOne','nolimit','order','rows','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','hasOwnProperty','removeAnswers','addLogo','sitepic','file','filename','addCustomerAvatar','customerAvatar','systemAvatar','getLogo','join','root','server/files/images/logos/default_logo.svg','custom','isNil','existsSync','server/files/images/logos/','getAvatar','server/files/images/avatars/default_avatar.png','agentAvatar','server/files/images/avatars/','download','getCustomerAvatar','showCustomerAvatar','getSystemAvatar','server/files/images/avatars/system_avatar.png','notify','user-agent-parser','headers','chat','CmContact','Sequelize','ValidationError','createdAt','difference','updatedAt','CompanyId','ListId','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','List','Contacts','DESC','ChatApplication','Applications','applications','orderBy','priority','asc','account','defaults','customerIp','cf-connecting-ip','split','firstName','referer','browser','version','format','%s\x20%s','unknown','device','%s\x20%s\x20%s','vendor','threadId','ChatInteraction','externalUrl','ContactId','interaction','spread','lastName','messageId','autoclose','close','unmanaged','ChatMessage','contact','AttachmentId','UserId','User','unshift','agent','waitForTheAssignedAgent','startRouting','EventManager','files','no\x20available\x20attributes','mapKeyOffline','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','MailAccount','readFileSync','toPairs','ChatOfflineMessage','fromString','originalname','mimetype','server','attachments','offline-chat','transaction','Attachment','MailServerOut'];(function(_0x22995b,_0x10617f){var _0x1c28bd=function(_0x45fa1c){while(--_0x45fa1c){_0x22995b['push'](_0x22995b['shift']());}};_0x1c28bd(++_0x10617f);}(_0x16cb,0x181));var _0xb16c=function(_0x3425ac,_0x58c805){_0x3425ac=_0x3425ac-0x0;var _0x28aafc=_0x16cb[_0x3425ac];return _0x28aafc;};'use strict';var BPromise=require(_0xb16c('0x0'));var Mustache=require('mustache');var util=require(_0xb16c('0x1'));var path=require('path');var ejs=require(_0xb16c('0x2'));var fs=require('fs');var fs_extra=require(_0xb16c('0x3'));var _=require('lodash');var querystring=require(_0xb16c('0x4'));var Redis=require(_0xb16c('0x5'));var qs=require(_0xb16c('0x6'));var logger=require('../../config/logger')(_0xb16c('0x7'));var config=require(_0xb16c('0x8'));var db=require(_0xb16c('0x9'))['db'];config['redis']=_['defaults'](config['redis'],{'host':_0xb16c('0xa'),'port':0x18eb});var socket=require(_0xb16c('0xb'))(new Redis(config[_0xb16c('0xc')]));require('./chatWebsite.socket')[_0xb16c('0xd')](socket);var htmlToText=require(_0xb16c('0xe'));var jayson=require(_0xb16c('0xf'));var client=jayson['client'][_0xb16c('0x10')]({'port':0x232c});var client9002=jayson[_0xb16c('0x11')][_0xb16c('0x10')]({'port':0x232a});var client9003=jayson['client'][_0xb16c('0x10')]({'port':0x232b});var client9001=jayson[_0xb16c('0x11')][_0xb16c('0x10')]({'port':0x2329});function respondWithRpcPromise(_0x589894,_0x261cf7,_0x4f63c5,_0xca8a71){return new BPromise(function(_0x165971,_0x3f6ae2){var _0x31fa4f=_0xca8a71||client;return _0x31fa4f['request'](_0x589894,_0x4f63c5)[_0xb16c('0x12')](function(_0x6b5023){logger[_0xb16c('0x13')](_0xb16c('0x14'),_0x261cf7,_0xb16c('0x15'));logger[_0xb16c('0x16')](_0xb16c('0x17'),_0x261cf7,'request\x20sent',JSON[_0xb16c('0x18')](_0x6b5023));if(_0x6b5023[_0xb16c('0x19')]){if(_0x6b5023[_0xb16c('0x19')]['code']===0x1f4){logger['error'](_0xb16c('0x14'),_0x261cf7,_0x6b5023[_0xb16c('0x19')][_0xb16c('0x1a')]);return _0x3f6ae2(_0x6b5023[_0xb16c('0x19')][_0xb16c('0x1a')]);}logger[_0xb16c('0x19')](_0xb16c('0x14'),_0x261cf7,_0x6b5023[_0xb16c('0x19')][_0xb16c('0x1a')]);return _0x165971(_0x6b5023['error']['message']);}else{logger[_0xb16c('0x13')](_0xb16c('0x14'),_0x261cf7,_0xb16c('0x15'));_0x165971(_0x6b5023[_0xb16c('0x1b')][_0xb16c('0x1a')]);}})['catch'](function(_0x10cd5d){logger[_0xb16c('0x19')](_0xb16c('0x14'),_0x261cf7,_0x10cd5d);_0x3f6ae2(_0x10cd5d);});});}function respondWithStatusCode(_0x394de9,_0xbaa877){_0xbaa877=_0xbaa877||0xcc;return function(_0x44f9db){if(_0x44f9db){return _0x394de9[_0xb16c('0x1c')](_0xbaa877);}return _0x394de9[_0xb16c('0x1d')](_0xbaa877)['end']();};}function respondWithResult(_0x11ec22,_0x1c1d6f){_0x1c1d6f=_0x1c1d6f||0xc8;return function(_0x29a6dc){if(_0x29a6dc){return _0x11ec22[_0xb16c('0x1d')](_0x1c1d6f)[_0xb16c('0x1e')](_0x29a6dc);}};}function respondWithFilteredResult(_0x55b183,_0x3c5ad2){return function(_0x3e0c79){if(_0x3e0c79){var _0x7cfbb0=typeof _0x3c5ad2[_0xb16c('0x1f')]===_0xb16c('0x20')&&typeof _0x3c5ad2[_0xb16c('0x21')]==='undefined';var _0x19d83c=_0x3e0c79[_0xb16c('0x22')];var _0x273192=_0x7cfbb0?0x0:_0x3c5ad2[_0xb16c('0x1f')];var _0x503086=_0x7cfbb0?_0x3e0c79[_0xb16c('0x22')]:_0x3c5ad2[_0xb16c('0x1f')]+_0x3c5ad2[_0xb16c('0x21')];var _0xfc51df;if(_0x503086>=_0x19d83c){_0x503086=_0x19d83c;_0xfc51df=0xc8;}else{_0xfc51df=0xce;}_0x55b183['status'](_0xfc51df);return _0x55b183[_0xb16c('0x23')](_0xb16c('0x24'),_0x273192+'-'+_0x503086+'/'+_0x19d83c)[_0xb16c('0x1e')](_0x3e0c79);}return null;};}function saveUpdates(_0x20a1fb){return function(_0x4715c6){if(_0x4715c6){return _0x4715c6[_0xb16c('0x25')](_0x20a1fb)[_0xb16c('0x12')](function(_0x1a76d8){return _0x1a76d8;});}return null;};}function removeEntity(_0x17a087){return function(_0x36c15d){if(_0x36c15d){return _0x36c15d[_0xb16c('0x26')]()[_0xb16c('0x12')](function(){var _0x374f32=_0x36c15d[_0xb16c('0x27')]({'plain':!![]});var _0x1180c7=_0xb16c('0x28');return db['UserProfileResource']['destroy']({'where':{'type':_0x1180c7,'resourceId':_0x374f32['id']}})['then'](function(){return _0x36c15d;});})[_0xb16c('0x12')](function(){_0x17a087[_0xb16c('0x1d')](0xcc)[_0xb16c('0x29')]();});}};}function handleEntityNotFound(_0x5110e7){return function(_0x23e5fc){if(!_0x23e5fc){_0x5110e7['sendStatus'](0x194);}return _0x23e5fc;};}function handleError(_0x4e1d96,_0x85108a){_0x85108a=_0x85108a||0x1f4;return function(_0x4b5b38){logger[_0xb16c('0x19')](_0x4b5b38[_0xb16c('0x2a')]);if(_0x4b5b38[_0xb16c('0x2b')]){delete _0x4b5b38[_0xb16c('0x2b')];}_0x4e1d96['status'](_0x85108a)[_0xb16c('0x2c')](_0x4b5b38);};}exports[_0xb16c('0x2d')]=function(_0x520e86,_0xa60067){var _0x1e960f={'include':[{'model':db['Pause'],'as':_0xb16c('0x2e')}]},_0x5acb59={},_0xdd9222={'count':0x0,'rows':[]};var _0x3e894e=_[_0xb16c('0x2f')](db[_0xb16c('0x30')]['rawAttributes'],function(_0x43bdbb){return{'name':_0x43bdbb[_0xb16c('0x31')],'type':_0x43bdbb[_0xb16c('0x32')][_0xb16c('0x33')]};});_0x5acb59[_0xb16c('0x34')]=_[_0xb16c('0x2f')](_0x3e894e,_0xb16c('0x2b'));_0x5acb59[_0xb16c('0x35')]=_[_0xb16c('0x36')](_0x520e86['query']);_0x5acb59['filters']=_[_0xb16c('0x37')](_0x5acb59[_0xb16c('0x34')],_0x5acb59[_0xb16c('0x35')]);_0x1e960f['attributes']=_['intersection'](_0x5acb59[_0xb16c('0x34')],qs[_0xb16c('0x38')](_0x520e86[_0xb16c('0x35')]['fields']));_0x1e960f[_0xb16c('0x39')]=_0x1e960f['attributes'][_0xb16c('0x3a')]?_0x1e960f[_0xb16c('0x39')]:_0x5acb59[_0xb16c('0x34')];if(!_0x520e86[_0xb16c('0x35')]['hasOwnProperty']('nolimit')){_0x1e960f['limit']=qs[_0xb16c('0x21')](_0x520e86[_0xb16c('0x35')][_0xb16c('0x21')]);_0x1e960f[_0xb16c('0x1f')]=qs[_0xb16c('0x1f')](_0x520e86[_0xb16c('0x35')]['offset']);}_0x1e960f['order']=qs[_0xb16c('0x3b')](_0x520e86['query']['sort']);_0x1e960f[_0xb16c('0x3c')]=qs[_0xb16c('0x3d')](_[_0xb16c('0x3e')](_0x520e86[_0xb16c('0x35')],_0x5acb59[_0xb16c('0x3d')]),_0x3e894e);if(_0x520e86[_0xb16c('0x35')][_0xb16c('0x3f')]){_0x1e960f[_0xb16c('0x3c')]=_[_0xb16c('0x40')](_0x1e960f[_0xb16c('0x3c')],{'$or':_[_0xb16c('0x2f')](_0x3e894e,function(_0x194938){if(_0x194938[_0xb16c('0x32')]!==_0xb16c('0x41')){var _0x4e53dc={};_0x4e53dc[_0x194938['name']]={'$like':'%'+_0x520e86['query'][_0xb16c('0x3f')]+'%'};return _0x4e53dc;}})});}_0x1e960f=_['merge']({},_0x1e960f,_0x520e86[_0xb16c('0x42')]);var _0x317d0d={'where':_0x1e960f[_0xb16c('0x3c')]};return db[_0xb16c('0x30')][_0xb16c('0x22')](_0x317d0d)['then'](function(_0x25c9f0){_0xdd9222[_0xb16c('0x22')]=_0x25c9f0;if(_0x520e86[_0xb16c('0x35')]['includeAll']){_0x1e960f[_0xb16c('0x43')]=[{'all':!![]}];}return db[_0xb16c('0x30')][_0xb16c('0x44')](_0x1e960f);})[_0xb16c('0x12')](function(_0x4f5fc7){_0xdd9222['rows']=_0x4f5fc7;return _0xdd9222;})[_0xb16c('0x12')](respondWithFilteredResult(_0xa60067,_0x1e960f))[_0xb16c('0x45')](handleError(_0xa60067,null));};exports[_0xb16c('0x46')]=function(_0x1a3c14,_0x4f9b96){var _0x39db54={'raw':![],'where':{'id':_0x1a3c14['params']['id']},'include':[{'model':db[_0xb16c('0x47')],'as':_0xb16c('0x2e')}]},_0x2f2f05={};_0x2f2f05[_0xb16c('0x34')]=_['keys'](db['ChatWebsite']['rawAttributes']);_0x2f2f05[_0xb16c('0x35')]=_[_0xb16c('0x36')](_0x1a3c14[_0xb16c('0x35')]);_0x2f2f05[_0xb16c('0x3d')]=_[_0xb16c('0x37')](_0x2f2f05[_0xb16c('0x34')],_0x2f2f05[_0xb16c('0x35')]);_0x39db54['attributes']=_[_0xb16c('0x37')](_0x2f2f05[_0xb16c('0x34')],qs[_0xb16c('0x38')](_0x1a3c14[_0xb16c('0x35')][_0xb16c('0x38')]));_0x39db54[_0xb16c('0x39')]=_0x39db54[_0xb16c('0x39')][_0xb16c('0x3a')]?_0x39db54['attributes']:_0x2f2f05[_0xb16c('0x34')];if(_0x1a3c14[_0xb16c('0x35')][_0xb16c('0x48')]){_0x39db54['include']=[{'all':!![]}];}_0x39db54=_[_0xb16c('0x40')]({},_0x39db54,_0x1a3c14[_0xb16c('0x42')]);return db[_0xb16c('0x30')][_0xb16c('0x49')](_0x39db54)[_0xb16c('0x12')](handleEntityNotFound(_0x4f9b96,null))[_0xb16c('0x12')](respondWithResult(_0x4f9b96,null))[_0xb16c('0x45')](handleError(_0x4f9b96,null));};exports['create']=function(_0x2319bf,_0x3655a0){return db['ChatWebsite'][_0xb16c('0x4a')](_0x2319bf[_0xb16c('0x4b')],{})[_0xb16c('0x12')](function(_0x5f33cd){var _0x559f4b=_0x2319bf[_0xb16c('0x4c')]['get']({'plain':!![]});if(!_0x559f4b)throw new Error(_0xb16c('0x4d'));if(_0x559f4b[_0xb16c('0x4e')]===_0xb16c('0x4c')){var _0xe8d16a=_0x5f33cd['get']({'plain':!![]});var _0x153966=_0xb16c('0x28');return db['UserProfileSection'][_0xb16c('0x49')]({'where':{'name':_0x153966,'userProfileId':_0x559f4b[_0xb16c('0x4f')]},'raw':!![]})[_0xb16c('0x12')](function(_0x267c5c){if(_0x267c5c&&_0x267c5c[_0xb16c('0x50')]===0x0){return db['UserProfileResource'][_0xb16c('0x4a')]({'name':_0xe8d16a['name'],'resourceId':_0xe8d16a['id'],'type':_0x267c5c[_0xb16c('0x2b')],'sectionId':_0x267c5c['id']},{})[_0xb16c('0x12')](function(){return _0x5f33cd;});}else{return _0x5f33cd;}})[_0xb16c('0x45')](function(_0x2391d0){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2391d0);throw _0x2391d0;});}return _0x5f33cd;})[_0xb16c('0x12')](respondWithResult(_0x3655a0,0xc9))['catch'](handleError(_0x3655a0,null));};exports[_0xb16c('0x25')]=function(_0x553ab2,_0x1e2959){if(_0x553ab2[_0xb16c('0x4b')]['id']){delete _0x553ab2[_0xb16c('0x4b')]['id'];}return db[_0xb16c('0x30')][_0xb16c('0x49')]({'where':{'id':_0x553ab2[_0xb16c('0x51')]['id']},'include':[{'model':db[_0xb16c('0x47')],'as':_0xb16c('0x2e')}]})['then'](handleEntityNotFound(_0x1e2959,null))[_0xb16c('0x12')](saveUpdates(_0x553ab2[_0xb16c('0x4b')],null))[_0xb16c('0x12')](respondWithResult(_0x1e2959,null))[_0xb16c('0x45')](handleError(_0x1e2959,null));};exports['destroy']=function(_0x4bab3f,_0x1ecb10){return db[_0xb16c('0x30')][_0xb16c('0x49')]({'where':{'id':_0x4bab3f[_0xb16c('0x51')]['id']}})[_0xb16c('0x12')](handleEntityNotFound(_0x1ecb10,null))[_0xb16c('0x12')](removeEntity(_0x1ecb10,null))['catch'](handleError(_0x1ecb10,null));};exports[_0xb16c('0x52')]=function(_0x56c2e9,_0x468116){return db[_0xb16c('0x30')]['describe']()[_0xb16c('0x12')](respondWithResult(_0x468116,null))['catch'](handleError(_0x468116,null));};exports[_0xb16c('0x53')]=function(_0x43a546,_0x15eb1f){if(_0x43a546['body']['id']){delete _0x43a546['body']['id'];}return db[_0xb16c('0x30')][_0xb16c('0x49')]({'where':{'id':_0x43a546[_0xb16c('0x51')]['id']}})['then'](handleEntityNotFound(_0x15eb1f,null))[_0xb16c('0x12')](function(_0x4e195a){if(_0x4e195a){_0x43a546['body'][_0xb16c('0x54')]=_0x4e195a['id'];return db[_0xb16c('0x55')][_0xb16c('0x4a')](_0x43a546[_0xb16c('0x4b')]);}})[_0xb16c('0x12')](respondWithResult(_0x15eb1f,null))[_0xb16c('0x45')](handleError(_0x15eb1f,null));};exports[_0xb16c('0x56')]=function(_0x386538,_0x4e203){var _0x260263={'raw':![],'where':{}};var _0x1a8126={};var _0x1177f9={'count':0x0,'rows':[]};return db['ChatWebsite'][_0xb16c('0x57')]({'where':{'id':_0x386538[_0xb16c('0x51')]['id']}})[_0xb16c('0x12')](handleEntityNotFound(_0x4e203,null))[_0xb16c('0x12')](function(_0x496b80){if(_0x496b80){_0x1a8126[_0xb16c('0x34')]=_[_0xb16c('0x36')](db[_0xb16c('0x55')]['rawAttributes']);_0x1a8126[_0xb16c('0x35')]=_[_0xb16c('0x36')](_0x386538[_0xb16c('0x35')]);_0x1a8126['filters']=_['intersection'](_0x1a8126[_0xb16c('0x34')],_0x1a8126[_0xb16c('0x35')]);_0x260263[_0xb16c('0x39')]=_[_0xb16c('0x37')](_0x1a8126[_0xb16c('0x34')],qs[_0xb16c('0x38')](_0x386538[_0xb16c('0x35')][_0xb16c('0x38')]));_0x260263[_0xb16c('0x39')]=_0x260263[_0xb16c('0x39')][_0xb16c('0x3a')]?_0x260263[_0xb16c('0x39')]:_0x1a8126[_0xb16c('0x34')];if(!_0x386538[_0xb16c('0x35')]['hasOwnProperty'](_0xb16c('0x58'))){_0x260263[_0xb16c('0x21')]=qs[_0xb16c('0x21')](_0x386538[_0xb16c('0x35')][_0xb16c('0x21')]);_0x260263[_0xb16c('0x1f')]=qs[_0xb16c('0x1f')](_0x386538[_0xb16c('0x35')]['offset']);}_0x260263[_0xb16c('0x59')]=qs[_0xb16c('0x3b')](_0x386538[_0xb16c('0x35')]['sort']);_0x260263[_0xb16c('0x3c')]=qs[_0xb16c('0x3d')](_['pick'](_0x386538[_0xb16c('0x35')],_0x1a8126['filters']));_0x260263['where'][_0xb16c('0x54')]=_0x496b80['id'];if(_0x386538[_0xb16c('0x35')][_0xb16c('0x3f')]){_0x260263[_0xb16c('0x3c')]=_[_0xb16c('0x40')](_0x260263[_0xb16c('0x3c')],{'$or':_['map'](_0x260263[_0xb16c('0x39')],function(_0x43fcda){var _0x4ede1c={};_0x4ede1c[_0x43fcda]={'$like':'%'+_0x386538[_0xb16c('0x35')]['filter']+'%'};return _0x4ede1c;})});}_0x260263=_[_0xb16c('0x40')]({},_0x260263,_0x386538[_0xb16c('0x42')]);return db[_0xb16c('0x55')][_0xb16c('0x22')]({'where':_0x260263[_0xb16c('0x3c')]})[_0xb16c('0x12')](function(_0x48f7de){_0x1177f9[_0xb16c('0x22')]=_0x48f7de;if(_0x386538['query'][_0xb16c('0x48')]){_0x260263[_0xb16c('0x43')]=[{'all':!![]}];}return db['Disposition'][_0xb16c('0x44')](_0x260263);})['then'](function(_0x1033d3){_0x1177f9[_0xb16c('0x5a')]=_0x1033d3;return _0x1177f9;});}})[_0xb16c('0x12')](respondWithFilteredResult(_0x4e203,_0x260263))[_0xb16c('0x45')](handleError(_0x4e203,null));};exports['removeDispositions']=function(_0xf94f89,_0x103000){return db[_0xb16c('0x30')][_0xb16c('0x49')]({'where':{'id':_0xf94f89[_0xb16c('0x51')]['id']}})[_0xb16c('0x12')](handleEntityNotFound(_0x103000,null))[_0xb16c('0x12')](function(_0xbffced){if(_0xbffced){return _0xbffced[_0xb16c('0x5b')](_0xf94f89[_0xb16c('0x35')][_0xb16c('0x5c')]);}})[_0xb16c('0x12')](respondWithStatusCode(_0x103000,null))[_0xb16c('0x45')](handleError(_0x103000,null));};exports[_0xb16c('0x5d')]=function(_0x333db9,_0x340465){if(_0x333db9[_0xb16c('0x4b')]['id']){delete _0x333db9[_0xb16c('0x4b')]['id'];}return db[_0xb16c('0x30')][_0xb16c('0x49')]({'where':{'id':_0x333db9[_0xb16c('0x51')]['id']}})[_0xb16c('0x12')](handleEntityNotFound(_0x340465,null))[_0xb16c('0x12')](function(_0x4a4dfd){if(_0x4a4dfd){_0x333db9[_0xb16c('0x4b')][_0xb16c('0x54')]=_0x4a4dfd['id'];return db[_0xb16c('0x5e')][_0xb16c('0x4a')](_0x333db9['body']);}})['then'](respondWithResult(_0x340465,null))[_0xb16c('0x45')](handleError(_0x340465,null));};exports[_0xb16c('0x5f')]=function(_0x3e6fbf,_0x9e7856){var _0x290c60={'raw':![],'where':{}};var _0x433f5b={};var _0x12de82={'count':0x0,'rows':[]};return db[_0xb16c('0x30')]['findOne']({'where':{'id':_0x3e6fbf[_0xb16c('0x51')]['id']}})[_0xb16c('0x12')](handleEntityNotFound(_0x9e7856,null))['then'](function(_0x554194){if(_0x554194){_0x433f5b[_0xb16c('0x34')]=_['keys'](db[_0xb16c('0x5e')]['rawAttributes']);_0x433f5b[_0xb16c('0x35')]=_[_0xb16c('0x36')](_0x3e6fbf['query']);_0x433f5b[_0xb16c('0x3d')]=_['intersection'](_0x433f5b[_0xb16c('0x34')],_0x433f5b[_0xb16c('0x35')]);_0x290c60[_0xb16c('0x39')]=_[_0xb16c('0x37')](_0x433f5b[_0xb16c('0x34')],qs[_0xb16c('0x38')](_0x3e6fbf[_0xb16c('0x35')][_0xb16c('0x38')]));_0x290c60[_0xb16c('0x39')]=_0x290c60['attributes'][_0xb16c('0x3a')]?_0x290c60[_0xb16c('0x39')]:_0x433f5b['model'];if(!_0x3e6fbf[_0xb16c('0x35')][_0xb16c('0x60')]('nolimit')){_0x290c60[_0xb16c('0x21')]=qs[_0xb16c('0x21')](_0x3e6fbf[_0xb16c('0x35')]['limit']);_0x290c60[_0xb16c('0x1f')]=qs[_0xb16c('0x1f')](_0x3e6fbf[_0xb16c('0x35')][_0xb16c('0x1f')]);}_0x290c60[_0xb16c('0x59')]=qs[_0xb16c('0x3b')](_0x3e6fbf[_0xb16c('0x35')][_0xb16c('0x3b')]);_0x290c60[_0xb16c('0x3c')]=qs[_0xb16c('0x3d')](_[_0xb16c('0x3e')](_0x3e6fbf['query'],_0x433f5b[_0xb16c('0x3d')]));_0x290c60['where'][_0xb16c('0x54')]=_0x554194['id'];if(_0x3e6fbf[_0xb16c('0x35')][_0xb16c('0x3f')]){_0x290c60[_0xb16c('0x3c')]=_[_0xb16c('0x40')](_0x290c60[_0xb16c('0x3c')],{'$or':_[_0xb16c('0x2f')](_0x290c60[_0xb16c('0x39')],function(_0x2c8fbf){var _0x2da763={};_0x2da763[_0x2c8fbf]={'$like':'%'+_0x3e6fbf[_0xb16c('0x35')][_0xb16c('0x3f')]+'%'};return _0x2da763;})});}_0x290c60=_['merge']({},_0x290c60,_0x3e6fbf['options']);return db[_0xb16c('0x5e')]['count']({'where':_0x290c60['where']})[_0xb16c('0x12')](function(_0x2e7157){_0x12de82[_0xb16c('0x22')]=_0x2e7157;if(_0x3e6fbf[_0xb16c('0x35')][_0xb16c('0x48')]){_0x290c60[_0xb16c('0x43')]=[{'all':!![]}];}return db[_0xb16c('0x5e')][_0xb16c('0x44')](_0x290c60);})[_0xb16c('0x12')](function(_0xaa42b6){_0x12de82['rows']=_0xaa42b6;return _0x12de82;});}})[_0xb16c('0x12')](respondWithFilteredResult(_0x9e7856,_0x290c60))['catch'](handleError(_0x9e7856,null));};exports[_0xb16c('0x61')]=function(_0x261d0b,_0x5120ae){return db[_0xb16c('0x30')][_0xb16c('0x49')]({'where':{'id':_0x261d0b[_0xb16c('0x51')]['id']}})[_0xb16c('0x12')](handleEntityNotFound(_0x5120ae,null))[_0xb16c('0x12')](function(_0x1f37c3){if(_0x1f37c3){return _0x1f37c3['removeAnswers'](_0x261d0b[_0xb16c('0x35')]['ids']);}})['then'](respondWithStatusCode(_0x5120ae,null))[_0xb16c('0x45')](handleError(_0x5120ae,null));};exports[_0xb16c('0x62')]=function(_0x4158b8,_0x588605){_0x4158b8[_0xb16c('0x4b')][_0xb16c('0x63')]=_0x4158b8[_0xb16c('0x64')][_0xb16c('0x65')];return db[_0xb16c('0x30')]['find']({'where':{'id':_0x4158b8['params']['id']}})[_0xb16c('0x12')](handleEntityNotFound(_0x588605,null))[_0xb16c('0x12')](saveUpdates(_0x4158b8[_0xb16c('0x4b')],null))[_0xb16c('0x12')](respondWithResult(_0x588605,null))['catch'](handleError(_0x588605,null));};exports['addAvatar']=function(_0xceb773,_0x18ff47){_0xceb773['body']['agentAvatar']=_0xceb773[_0xb16c('0x64')][_0xb16c('0x65')];return db[_0xb16c('0x30')]['find']({'where':{'id':_0xceb773[_0xb16c('0x51')]['id']}})[_0xb16c('0x12')](handleEntityNotFound(_0x18ff47,null))['then'](saveUpdates(_0xceb773[_0xb16c('0x4b')],null))['then'](respondWithResult(_0x18ff47,null))[_0xb16c('0x45')](handleError(_0x18ff47,null));};exports[_0xb16c('0x66')]=function(_0x37559e,_0x1e2829){_0x37559e[_0xb16c('0x4b')][_0xb16c('0x67')]=_0x37559e[_0xb16c('0x64')][_0xb16c('0x65')];return db[_0xb16c('0x30')][_0xb16c('0x49')]({'where':{'id':_0x37559e[_0xb16c('0x51')]['id']}})[_0xb16c('0x12')](handleEntityNotFound(_0x1e2829,null))[_0xb16c('0x12')](saveUpdates(_0x37559e['body'],null))['then'](respondWithResult(_0x1e2829,null))[_0xb16c('0x45')](handleError(_0x1e2829,null));};exports['addSystemAvatar']=function(_0x6dad20,_0xf3d002){_0x6dad20[_0xb16c('0x4b')][_0xb16c('0x68')]=_0x6dad20['file'][_0xb16c('0x65')];return db['ChatWebsite'][_0xb16c('0x49')]({'where':{'id':_0x6dad20['params']['id']}})[_0xb16c('0x12')](handleEntityNotFound(_0xf3d002,null))['then'](saveUpdates(_0x6dad20[_0xb16c('0x4b')],null))['then'](respondWithResult(_0xf3d002,null))[_0xb16c('0x45')](handleError(_0xf3d002,null));};exports[_0xb16c('0x69')]=function(_0x1a92c3,_0x54d563){var _0x435212=path[_0xb16c('0x6a')](config[_0xb16c('0x6b')],_0xb16c('0x6c'));var _0x56af68={'where':{'id':_0x1a92c3['params']['id']},'attributes':['id','sitepic'],'raw':!![]};var _0x269240=![];return require('../../config/license/util')['getLicense']()[_0xb16c('0x12')](function(_0x4f5bde){if(_0x4f5bde){_0x269240=_0x4f5bde[_0xb16c('0x6d')];}})[_0xb16c('0x12')](function(){return db[_0xb16c('0x30')][_0xb16c('0x49')](_0x56af68);})['then'](handleEntityNotFound(_0x54d563,null))['then'](function(_0x36c30d){if(_0x36c30d){if(!_[_0xb16c('0x6e')](_0x36c30d['sitepic'])){if(fs[_0xb16c('0x6f')](path['join'](config[_0xb16c('0x6b')],_0xb16c('0x70'),_0x36c30d['sitepic']))&&_0x269240){_0x435212=path[_0xb16c('0x6a')](config[_0xb16c('0x6b')],_0xb16c('0x70'),_0x36c30d['sitepic']);}}return _0x54d563['download'](_0x435212);}})[_0xb16c('0x45')](handleError(_0x54d563,null));};exports[_0xb16c('0x71')]=function(_0x189fac,_0x29404){var _0x123440=path[_0xb16c('0x6a')](config[_0xb16c('0x6b')],_0xb16c('0x72'));var _0x487abb={'where':{'id':_0x189fac[_0xb16c('0x51')]['id']},'attributes':['id',_0xb16c('0x73')],'raw':!![]};return db['ChatWebsite'][_0xb16c('0x49')](_0x487abb)[_0xb16c('0x12')](handleEntityNotFound(_0x29404,null))[_0xb16c('0x12')](function(_0xd2b1a3){if(_0xd2b1a3){if(!_[_0xb16c('0x6e')](_0xd2b1a3['agentAvatar'])){if(fs[_0xb16c('0x6f')](path[_0xb16c('0x6a')](config[_0xb16c('0x6b')],_0xb16c('0x74'),_0xd2b1a3['agentAvatar']))){_0x123440=path[_0xb16c('0x6a')](config[_0xb16c('0x6b')],'server/files/images/avatars/',_0xd2b1a3[_0xb16c('0x73')]);}}return _0x29404[_0xb16c('0x75')](_0x123440);}})['catch'](handleError(_0x29404,null));};exports[_0xb16c('0x76')]=function(_0x59d79c,_0xb64f0b){var _0x4d0648=path[_0xb16c('0x6a')](config['root'],'server/files/images/avatars/customer_avatar.png');var _0x33ef11={'where':{'id':_0x59d79c['params']['id']},'attributes':['id','customerAvatar',_0xb16c('0x77')],'raw':!![]};return db[_0xb16c('0x30')][_0xb16c('0x49')](_0x33ef11)[_0xb16c('0x12')](handleEntityNotFound(_0xb64f0b,null))[_0xb16c('0x12')](function(_0x46b88e){if(_0x46b88e){if(!_[_0xb16c('0x6e')](_0x46b88e[_0xb16c('0x67')])){if(fs[_0xb16c('0x6f')](path[_0xb16c('0x6a')](config[_0xb16c('0x6b')],'server/files/images/avatars/',_0x46b88e['customerAvatar']))&&_0x46b88e[_0xb16c('0x77')]){_0x4d0648=path[_0xb16c('0x6a')](config[_0xb16c('0x6b')],_0xb16c('0x74'),_0x46b88e[_0xb16c('0x67')]);}}return _0xb64f0b[_0xb16c('0x75')](_0x4d0648);}})[_0xb16c('0x45')](handleError(_0xb64f0b,null));};exports[_0xb16c('0x78')]=function(_0x33a99f,_0x47b8c3){var _0x165731=path['join'](config[_0xb16c('0x6b')],_0xb16c('0x79'));var _0x1ce407={'where':{'id':_0x33a99f['params']['id']},'attributes':['id',_0xb16c('0x68')],'raw':!![]};return db[_0xb16c('0x30')][_0xb16c('0x49')](_0x1ce407)[_0xb16c('0x12')](handleEntityNotFound(_0x47b8c3,null))['then'](function(_0x58080f){if(_0x58080f){if(!_[_0xb16c('0x6e')](_0x58080f[_0xb16c('0x68')])){if(fs[_0xb16c('0x6f')](path['join'](config[_0xb16c('0x6b')],_0xb16c('0x74'),_0x58080f[_0xb16c('0x68')]))){_0x165731=path[_0xb16c('0x6a')](config[_0xb16c('0x6b')],_0xb16c('0x74'),_0x58080f['systemAvatar']);}}return _0x47b8c3[_0xb16c('0x75')](_0x165731);}})['catch'](handleError(_0x47b8c3,null));};exports[_0xb16c('0x7a')]=function(_0x38b177,_0x1698d1){var _0x11300c=require(_0xb16c('0x7b'));var _0x2e2643=new _0x11300c();var _0x5dc2a0=_0x2e2643['setUA'](_0x38b177[_0xb16c('0x7c')]['user-agent'])['getResult']();var _0x5c5a30={'body':_0x38b177['body'],'channel':_0xb16c('0x7d')};var _0x1c06bd=[];var _0x205880=[];var _0x1c5758={};var _0x1fc3bc=![];return db[_0xb16c('0x7e')][_0xb16c('0x52')]()[_0xb16c('0x12')](function(_0x4941c5){if(!_0x4941c5){throw new db[(_0xb16c('0x7f'))][(_0xb16c('0x80'))]('no\x20available\x20attributes');}_0x1c06bd=_['difference'](_[_0xb16c('0x36')](_0x4941c5),[_0xb16c('0x81'),'updatedAt']);_0x205880=_[_0xb16c('0x82')](_[_0xb16c('0x36')](_0x4941c5),[_0xb16c('0x81'),_0xb16c('0x83'),_0xb16c('0x84'),_0xb16c('0x85')]);if(_0x38b177[_0xb16c('0x4b')]['id']){delete _0x38b177[_0xb16c('0x4b')]['id'];}if(_[_0xb16c('0x6e')](_0x38b177['body'][_0xb16c('0x86')])){throw new db[(_0xb16c('0x7f'))][(_0xb16c('0x80'))](_0xb16c('0x87'));}if(_[_0xb16c('0x6e')](_0x38b177['body']['body'])||_0x38b177[_0xb16c('0x4b')][_0xb16c('0x4b')]===''){throw new db[(_0xb16c('0x7f'))][(_0xb16c('0x80'))](_0xb16c('0x88'));}if(_['isNil'](_0x38b177['body']['mapKey'])){throw new db['Sequelize'][(_0xb16c('0x80'))](_0xb16c('0x89')+_0x205880);}if(!_[_0xb16c('0x8a')](_0x205880,_0x38b177[_0xb16c('0x4b')]['mapKey'])){throw new db[(_0xb16c('0x7f'))]['ValidationError']('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x205880);}_0x1c5758[_0x38b177[_0xb16c('0x4b')][_0xb16c('0x8b')]]=_0x38b177['body'][_0xb16c('0x86')];})['then'](function(){return db[_0xb16c('0x30')][_0xb16c('0x49')]({'where':{'id':_0x38b177[_0xb16c('0x51')]['id']},'include':[{'model':db['CmList'],'as':_0xb16c('0x8c'),'include':[{'model':db[_0xb16c('0x7e')],'as':_0xb16c('0x8d'),'where':_0x1c5758,'limit':0x1,'order':[[_0xb16c('0x83'),_0xb16c('0x8e')]]}]},{'model':db[_0xb16c('0x8f')],'as':_0xb16c('0x90')}]});})[_0xb16c('0x12')](handleEntityNotFound(_0x1698d1,null))[_0xb16c('0x12')](function(_0x636268){if(_0x636268&&_0x636268[_0xb16c('0x8c')]){_0x5c5a30['account']=_0x636268;_0x5c5a30['applications']=_0x636268[_0xb16c('0x90')];_0x5c5a30['list']=_0x636268['List'];_0x5c5a30[_0xb16c('0x91')]=_[_0xb16c('0x92')](_0x5c5a30['applications'],[_0xb16c('0x93')],[_0xb16c('0x94')]);if(_0x5c5a30[_0xb16c('0x95')][_0xb16c('0x90')]){delete _0x5c5a30[_0xb16c('0x95')][_0xb16c('0x90')];}if(_0x5c5a30['account'][_0xb16c('0x8c')]&&_0x5c5a30['account'][_0xb16c('0x8c')][_0xb16c('0x8d')][_0xb16c('0x3a')]){return _0x5c5a30[_0xb16c('0x95')][_0xb16c('0x8c')]['Contacts'][0x0];}var _0x35ccf5=_[_0xb16c('0x96')](_0x38b177['body'],{'firstName':_0x38b177[_0xb16c('0x4b')][_0xb16c('0x86')],'ListId':_0x636268[_0xb16c('0x85')]});_0x35ccf5[_0x38b177[_0xb16c('0x4b')]['mapKey']]=_0x38b177['body']['from'];return db[_0xb16c('0x7e')][_0xb16c('0x4a')](_0x35ccf5,{'fields':_0x1c06bd,'raw':!![]});}})[_0xb16c('0x12')](handleEntityNotFound(_0x1698d1,null))['then'](function(_0x25fbac){_0x5c5a30['contact']=_0x25fbac;var _0x1bcb28=_0x38b177[_0xb16c('0x4b')][_0xb16c('0x97')];if(_0x38b177[_0xb16c('0x7c')][_0xb16c('0x98')]){_0x1bcb28=_0x38b177[_0xb16c('0x7c')][_0xb16c('0x98')];}else if(_0x38b177[_0xb16c('0x7c')]['x-forwarded-for']){_0x1bcb28=_['first'](_0x38b177['headers']['x-forwarded-for'][_0xb16c('0x99')](','));}if(_0x25fbac){var _0x4635d8={'ContactId':_0x25fbac['id'],'ChatWebsiteId':_0x38b177['params']['id'],'from':(_0x25fbac[_0xb16c('0x9a')]||'')+'\x20'+(_0x25fbac['lastName']||''),'customerIp':_0x1bcb28,'customerPort':_0x38b177['headers']['x-real-port']?_0x38b177[_0xb16c('0x7c')]['x-real-port']:null,'referer':_0x38b177[_0xb16c('0x4b')][_0xb16c('0x9b')],'browserName':_0x5dc2a0[_0xb16c('0x9c')]['name']&&_0x5dc2a0[_0xb16c('0x9c')][_0xb16c('0x9d')]?util[_0xb16c('0x9e')](_0xb16c('0x9f'),_0x5dc2a0[_0xb16c('0x9c')]['name'],_0x5dc2a0[_0xb16c('0x9c')][_0xb16c('0x9d')]):_0xb16c('0xa0'),'browserVersion':_0x5dc2a0['browser'][_0xb16c('0x9d')]||_0xb16c('0xa0'),'osName':util['format']('%s\x20%s',_0x5dc2a0['os'][_0xb16c('0x2b')],_0x5dc2a0['os'][_0xb16c('0x9d')]),'osVersion':_0x5dc2a0['os'][_0xb16c('0x9d')],'deviceModel':_0x5dc2a0[_0xb16c('0xa1')][_0xb16c('0x34')]&&_0x5dc2a0['device']['vendor']?util[_0xb16c('0x9e')](_0xb16c('0xa2'),_0x5dc2a0['device'][_0xb16c('0x34')],_0x5dc2a0['device'][_0xb16c('0xa3')],_0x5dc2a0[_0xb16c('0xa1')][_0xb16c('0x32')]):null,'deviceVendor':_0x5dc2a0[_0xb16c('0xa1')][_0xb16c('0xa3')],'deviceType':_0x5dc2a0['device'][_0xb16c('0x32')],'formData':JSON[_0xb16c('0x18')](_0x38b177[_0xb16c('0x4b')])};var _0x49eb7b={'ChatWebsiteId':_0x38b177[_0xb16c('0x51')]['id'],'closed':![]};if(_0x38b177[_0xb16c('0x4b')][_0xb16c('0xa4')]){_0x49eb7b[_0xb16c('0xa4')]=_0x38b177[_0xb16c('0x4b')][_0xb16c('0xa4')];return db[_0xb16c('0xa5')][_0xb16c('0x49')]({'where':_0x49eb7b})[_0xb16c('0x12')](function(_0x8fee1d){if(_0x8fee1d){return[_0x8fee1d,![]];}_0x4635d8[_0xb16c('0xa4')]=_0x38b177[_0xb16c('0x4b')][_0xb16c('0xa4')];_0x4635d8['externalUrl']=_0x38b177['body'][_0xb16c('0xa6')];return db['ChatInteraction']['create'](_0x4635d8)[_0xb16c('0x12')](function(_0xe9a987){return[_0xe9a987,!![]];});});}_0x49eb7b[_0xb16c('0xa7')]=_0x25fbac['id'];if(_0x38b177[_0xb16c('0x4b')][_0xb16c('0xa8')]&&_0x38b177['body'][_0xb16c('0xa8')]['id']){_0x49eb7b['id']=_0x38b177['body'][_0xb16c('0xa8')]['id'];return db['ChatInteraction'][_0xb16c('0x49')]({'where':_0x49eb7b})[_0xb16c('0x12')](function(_0x5bb353){if(_0x5bb353){return[_0x5bb353,![]];}return db['ChatInteraction'][_0xb16c('0x4a')](_0x4635d8)[_0xb16c('0x12')](function(_0x4e648b){return[_0x4e648b,!![]];});});}return db['ChatInteraction']['create'](_0x4635d8)[_0xb16c('0x12')](function(_0x3b76a3){return[_0x3b76a3,!![]];});}})[_0xb16c('0xa9')](function(_0x54c9ea,_0x214862){if(_0x54c9ea){_0x1fc3bc=_0x214862;if(!_0x214862){var _0x1850a0={'from':(_0x5c5a30['contact'][_0xb16c('0x9a')]||'')+'\x20'+(_0x5c5a30['contact'][_0xb16c('0xaa')]||'')};if(_0x38b177[_0xb16c('0x4b')][_0xb16c('0xa4')]&&_0x38b177[_0xb16c('0x4b')]['messageId']&&_0x38b177[_0xb16c('0x4b')][_0xb16c('0xa4')]!=_0x38b177[_0xb16c('0x4b')][_0xb16c('0xab')]){_0x1850a0[_0xb16c('0xa4')]=_0x38b177['body'][_0xb16c('0xab')];}return _0x54c9ea[_0xb16c('0x25')](_0x1850a0);}else{return _0x54c9ea;}}})[_0xb16c('0x12')](function(_0x425973){_0x5c5a30[_0xb16c('0xa8')]=_0x425973['get']({'plain':!![]});_0x5c5a30['interaction']['created']=_0x1fc3bc;if(_0x5c5a30[_0xb16c('0xa8')]['created']){if(_0x5c5a30['account'][_0xb16c('0xac')]){_0x5c5a30[_0xb16c('0x91')]['push']({'id':0x0,'priority':_0x5c5a30[_0xb16c('0x91')]['length']+0x1,'app':_0xb16c('0xad'),'appdata':_0xb16c('0xae'),'interval':'*,*,*,*'});}}return db[_0xb16c('0xaf')][_0xb16c('0x4a')]({'body':_0x38b177[_0xb16c('0x4b')][_0xb16c('0x4b')],'ChatWebsiteId':_0x38b177[_0xb16c('0x51')]['id'],'ChatInteractionId':_0x425973['id'],'direction':'in','ContactId':_0x5c5a30[_0xb16c('0xb0')]['id'],'AttachmentId':_0x38b177[_0xb16c('0x4b')][_0xb16c('0xb1')]});})[_0xb16c('0x12')](function(_0x455f4f){_0x5c5a30[_0xb16c('0x1a')]=_0x455f4f;if(_0x5c5a30['interaction'][_0xb16c('0xb2')]){return db[_0xb16c('0xb3')][_0xb16c('0x49')]({'attributes':['id',_0xb16c('0x2b')],'where':{'id':_0x5c5a30[_0xb16c('0xa8')][_0xb16c('0xb2')]}})[_0xb16c('0x12')](function(_0xd23c18){if(_0xd23c18){_0x5c5a30[_0xb16c('0x91')][_0xb16c('0xb4')]({'id':0x0,'priority':0x0,'app':_0xb16c('0xb5'),'appdata':_0xd23c18[_0xb16c('0x2b')]+','+(_0x5c5a30['account'][_0xb16c('0xb6')]||0xa),'interval':'*,*,*,*'});_0x5c5a30['forcedOwnership']=!![];}return respondWithRpcPromise('Start',_0xb16c('0xb7'),_0x5c5a30);});}return respondWithRpcPromise('Start','startRouting',_0x5c5a30);})['then'](function(_0x211cd8){respondWithRpcPromise(_0xb16c('0xb8'),'EventManager',{'event':_0xb16c('0x7a'),'message':_0x211cd8},client9002);return _0x211cd8;})[_0xb16c('0x12')](respondWithResult(_0x1698d1,null))['catch'](handleError(_0x1698d1,null));};exports['offline']=function(_0x41a3c3,_0x551d77){var _0x5bd7a6,_0x5c8fe4,_0x1d2e9c;var _0x4bccc0=[];var _0x50c049={};var _0x243a4f=_0x41a3c3[_0xb16c('0xb9')]||[];var _0x28b137=[];var _0x4e63b5;return db['CmContact'][_0xb16c('0x52')]()[_0xb16c('0x12')](function(_0x130851){if(!_0x130851){throw new db[(_0xb16c('0x7f'))][(_0xb16c('0x80'))](_0xb16c('0xba'));}_0x4bccc0=_[_0xb16c('0x82')](_[_0xb16c('0x36')](_0x130851),[_0xb16c('0x81'),_0xb16c('0x83'),'CompanyId',_0xb16c('0x85')]);if(_0x41a3c3[_0xb16c('0x4b')]['id']){delete _0x41a3c3['body']['id'];}if(_[_0xb16c('0x6e')](_0x41a3c3[_0xb16c('0x4b')][_0xb16c('0x86')])){throw _0x551d77[_0xb16c('0x1d')](0x1f4)[_0xb16c('0x2c')](new db[(_0xb16c('0x7f'))][(_0xb16c('0x80'))]('from\x20is\x20mandatory'));}if(_[_0xb16c('0x6e')](_0x41a3c3[_0xb16c('0x4b')][_0xb16c('0x4b')])||_0x41a3c3['body'][_0xb16c('0x4b')]===''){throw _0x551d77[_0xb16c('0x1d')](0x1f4)['send'](new db[(_0xb16c('0x7f'))]['ValidationError'](_0xb16c('0x88')));}if(_[_0xb16c('0x6e')](_0x41a3c3[_0xb16c('0x4b')][_0xb16c('0xbb')])){throw _0x551d77[_0xb16c('0x1d')](0x1f4)[_0xb16c('0x2c')](new db['Sequelize'][(_0xb16c('0x80'))](_0xb16c('0xbc')+_0x4bccc0));}if(!_[_0xb16c('0x8a')](_0x4bccc0,_0x41a3c3['body']['mapKeyOffline'])){throw _0x551d77[_0xb16c('0x1d')](0x1f4)[_0xb16c('0x2c')](new db[(_0xb16c('0x7f'))][(_0xb16c('0x80'))](_0xb16c('0xbd')+_0x4bccc0));}_0x50c049[_0x41a3c3[_0xb16c('0x4b')][_0xb16c('0xbb')]]=_0x41a3c3[_0xb16c('0x4b')][_0xb16c('0x86')];})['then'](function(){return db[_0xb16c('0x30')]['find']({'where':{'id':_0x41a3c3[_0xb16c('0x51')]['id']},'include':[{'model':db['CmList'],'as':_0xb16c('0x8c')},{'model':db['MailAccount'],'as':_0xb16c('0xbe')}]});})[_0xb16c('0x12')](handleEntityNotFound(_0x551d77,null))[_0xb16c('0x12')](function(_0x399be1){if(_0x399be1&&_0x399be1['List']){_0x5c8fe4=_0x399be1;var _0x3fb952=_['defaults'](_0x41a3c3[_0xb16c('0x4b')],{'firstName':_0x41a3c3[_0xb16c('0x4b')][_0xb16c('0x86')],'phone':_0x41a3c3[_0xb16c('0x4b')]['from'],'ListId':_0x399be1['ListId']});_0x3fb952[_0x41a3c3['body']['mapKeyOffline']]=_0x41a3c3[_0xb16c('0x4b')]['from'];return db[_0xb16c('0x7e')]['findOrCreate']({'where':_0x50c049,'defaults':_0x3fb952});}})['spread'](function(_0x4a4774){if(_0x4a4774){_0x1d2e9c=_0x4a4774;var _0x8f8dae=fs[_0xb16c('0xbf')](path[_0xb16c('0x6a')](config[_0xb16c('0x6b')],'server/files/templates/chatOfflineMessage.ejs'),'utf8');var _0x369405=ejs['render'](_0x8f8dae,{'body':_[_0xb16c('0xc0')](_0x41a3c3['body']['body']),'bodyTitle':_0x5c8fe4['offlineMessageBody']});return db[_0xb16c('0xc1')]['create']({'body':_0x369405,'plainBody':htmlToText[_0xb16c('0xc2')](_0x369405),'ContactId':_0x4a4774['id'],'ChatWebsiteId':_0x5c8fe4['id']});}})[_0xb16c('0x12')](function(_0x299328){_0x4e63b5=_0x299328;if(_0x243a4f[_0xb16c('0x3a')]){var _0x35c92c=_0x243a4f['map'](function(_0x2f7b8f){return{'name':_0x2f7b8f[_0xb16c('0xc3')],'basename':_0x2f7b8f[_0xb16c('0x65')],'type':_0x2f7b8f[_0xb16c('0xc4')],'ChatOfflineMessageId':_0x299328['id']};});_0x28b137=_0x35c92c[_0xb16c('0x2f')](_0x576e9f=>{var _0xaa2b14={'filename':_0x576e9f[_0xb16c('0x2b')],'path':path[_0xb16c('0x6a')](config['root'],_0xb16c('0xc5'),_0xb16c('0xb9'),_0xb16c('0xc6'),_0xb16c('0xc7'),_0x576e9f['basename'])};return _0xaa2b14;});if(!_0x5c8fe4['openNewInteraction']){return db['sequelize'][_0xb16c('0xc8')](function(_0x1009f1){return db[_0xb16c('0xc9')]['bulkCreate'](_0x35c92c,{'transaction':_0x1009f1});});}}})[_0xb16c('0x12')](function(){if(_0x4e63b5){_0x5bd7a6=_0x4e63b5;return db[_0xb16c('0xbe')]['findOne']({'where':{'service':!![]},'include':[{'model':db[_0xb16c('0xca')],'as':'Smtp','raw':!![],'include':[{'model':db[_0xb16c('0xcb')],'as':_0xb16c('0xcb'),'raw':!![]}]}]});}})['then'](function(_0x7b68d5){if(_0x7b68d5&&_0x7b68d5[_0xb16c('0xcc')]&&_0x5c8fe4[_0xb16c('0xcd')]&&_0x5c8fe4['forwardOfflineAddress']){var _0x5c578f=_0x7b68d5[_0xb16c('0xce')]();return respondWithRpcPromise(_0xb16c('0xcf'),_0xb16c('0xd0'),{'account':_0x5c578f,'message':{'from':util[_0xb16c('0x9e')](_0xb16c('0xd1'),_0x7b68d5[_0xb16c('0x2b')],_0x7b68d5[_0xb16c('0xd2')]||_0x7b68d5['Smtp'][_0xb16c('0x4c')]),'to':_0x5c8fe4['forwardOfflineAddress'],'subject':_0x5c8fe4[_0xb16c('0xd3')],'html':_0x5bd7a6[_0xb16c('0x4b')],'attachments':_0x28b137}},client9003)[_0xb16c('0x12')](function(){return _0x5bd7a6;})[_0xb16c('0x45')](function(_0x3f91f9){logger[_0xb16c('0x19')](_0x3f91f9);});}})['then'](function(){if(_0x5c8fe4&&_0x5c8fe4[_0xb16c('0xd4')]&&_0x5c8fe4['MailAccountId']){var _0x1b6d98=[];if(_0x243a4f[_0xb16c('0x3a')]){_0x1b6d98=_0x243a4f[_0xb16c('0x2f')](function(_0x1ef322){return{'name':_0x1ef322[_0xb16c('0xc3')],'basename':_0x1ef322[_0xb16c('0x65')],'type':_0x1ef322[_0xb16c('0xc4')],'ChatOfflineMessageId':_0x4e63b5['id']};});}var _0x2c770a;if(!_[_0xb16c('0x6e')](_0x5c8fe4[_0xb16c('0xd5')])){var _0x39a066=_[_0xb16c('0x2f')](_0x41a3c3[_0xb16c('0x4b')],function(_0x52e441){return _0x52e441;});var _0x478dc1=_[_0xb16c('0xd6')](_0x39a066)[0x0];var _0x17cb32=_[_0xb16c('0xd7')](_0x478dc1,function(_0x174cca){return _0x174cca;});_0x2c770a=_0x17cb32[0x1][_0x5c8fe4[_0xb16c('0xd5')]];}var _0x197bba={'from':_0x1d2e9c[_0xb16c('0xd2')],'firstName':_0x1d2e9c[_0xb16c('0x9a')],'lastName':_0x1d2e9c[_0xb16c('0xaa')],'mapKey':_0xb16c('0xd2'),'message':{'from':_0x1d2e9c[_0xb16c('0xd2')],'to':_0x5c8fe4['MailAccount'][_0xb16c('0xd2')],'cc':'','subject':_[_0xb16c('0x6e')](_0x2c770a)?_0x5c8fe4[_0xb16c('0xd3')]:_0x2c770a,'messageId':'','sentAt':new Date(),'attach':_0x1b6d98[_0xb16c('0x3a')],'attachments':_0x1b6d98,'originChannel':_0xb16c('0xd8'),'ChatWebsiteId':_0x5c8fe4['id'],'ChatOfflineMessageId':_0x5bd7a6['id'],'originTo':_0x5c8fe4[_0xb16c('0xbe')][_0xb16c('0xd2')]},'body':_0x5bd7a6['body']};var _0x418778={'account':{'id':_0x5c8fe4[_0xb16c('0xd9')]},'body':_0x197bba,'log':_0xb16c('0xda')};return respondWithRpcPromise(_0xb16c('0xda'),_0xb16c('0xdb'),_0x418778,client9001)[_0xb16c('0x12')](function(){return _0x5bd7a6;})['catch'](function(_0x13719d){logger[_0xb16c('0x19')](_0x13719d);});}return;})[_0xb16c('0x12')](function(){if(_0x5bd7a6){return _0x5bd7a6;}})[_0xb16c('0x12')](respondWithResult(_0x551d77,null))[_0xb16c('0x45')](function(_0x523157){logger[_0xb16c('0x19')](_0xb16c('0x45'),_0x523157);for(var _0xfcf4bb of _0x243a4f){var _0x58c246=path['join'](config[_0xb16c('0x6b')],_0xb16c('0xc5'),_0xb16c('0xb9'),_0xb16c('0xc6'),'offline-chat',_0xfcf4bb[_0xb16c('0x65')]);fs_extra[_0xb16c('0xdc')](_0x58c246)['catch'](function(_0x4882b2){logger[_0xb16c('0x19')](_0xb16c('0xdd'),_0x58c246,_0x4882b2);});}});};exports[_0xb16c('0xde')]=function(_0x3f8f3a,_0x1f7c67){return db['ChatInteraction'][_0xb16c('0x49')]({'where':{'id':_0x3f8f3a[_0xb16c('0x51')]['id']}})[_0xb16c('0x12')](handleEntityNotFound(_0x1f7c67,null))[_0xb16c('0x12')](function(_0x54ec75){if(_0x54ec75){return _0x54ec75['addInteraction'](_0x3f8f3a[_0xb16c('0x4b')][_0xb16c('0x5c')],_[_0xb16c('0xdf')](_0x3f8f3a['body'],[_0xb16c('0x5c'),'id'])||{});}})['then'](respondWithResult(_0x1f7c67,null))['catch'](handleError(_0x1f7c67,null));};exports['getInteractions']=function(_0x436268,_0x57f6d0){var _0x2dd18b={'raw':![],'where':{}};var _0x4520a9={};var _0x1c8c7e={'count':0x0,'rows':[]};return db['ChatWebsite'][_0xb16c('0x57')]({'where':{'id':_0x436268[_0xb16c('0x51')]['id']}})[_0xb16c('0x12')](handleEntityNotFound(_0x57f6d0,null))['then'](function(_0x44c5c7){if(_0x44c5c7){_0x4520a9[_0xb16c('0x34')]=_[_0xb16c('0x36')](db['ChatInteraction'][_0xb16c('0xe0')]);_0x4520a9['query']=_[_0xb16c('0x36')](_0x436268[_0xb16c('0x35')]);_0x4520a9[_0xb16c('0x3d')]=_[_0xb16c('0x37')](_0x4520a9[_0xb16c('0x34')],_0x4520a9[_0xb16c('0x35')]);_0x2dd18b['attributes']=_[_0xb16c('0x37')](_0x4520a9[_0xb16c('0x34')],qs[_0xb16c('0x38')](_0x436268['query'][_0xb16c('0x38')]));_0x2dd18b['attributes']=_0x2dd18b[_0xb16c('0x39')]['length']?_0x2dd18b[_0xb16c('0x39')]:_0x4520a9['model'];if(!_0x436268[_0xb16c('0x35')][_0xb16c('0x60')]('nolimit')){_0x2dd18b['limit']=qs[_0xb16c('0x21')](_0x436268[_0xb16c('0x35')][_0xb16c('0x21')]);_0x2dd18b[_0xb16c('0x1f')]=qs['offset'](_0x436268[_0xb16c('0x35')][_0xb16c('0x1f')]);}_0x2dd18b[_0xb16c('0x59')]=qs[_0xb16c('0x3b')](_0x436268['query'][_0xb16c('0x3b')]);_0x2dd18b[_0xb16c('0x3c')]=qs[_0xb16c('0x3d')](_[_0xb16c('0x3e')](_0x436268[_0xb16c('0x35')],_0x4520a9['filters']));_0x2dd18b[_0xb16c('0x3c')]['ChatWebsiteId']=_0x44c5c7['id'];if(_0x436268[_0xb16c('0x35')]['filter']){_0x2dd18b[_0xb16c('0x3c')]=_['merge'](_0x2dd18b[_0xb16c('0x3c')],{'$or':_[_0xb16c('0x2f')](_0x2dd18b['attributes'],function(_0x511c60){var _0x3e827d={};_0x3e827d[_0x511c60]={'$like':'%'+_0x436268[_0xb16c('0x35')][_0xb16c('0x3f')]+'%'};return _0x3e827d;})});}_0x2dd18b=_[_0xb16c('0x40')]({},_0x2dd18b,_0x436268['options']);return db[_0xb16c('0xa5')][_0xb16c('0x22')]({'where':_0x2dd18b[_0xb16c('0x3c')]})[_0xb16c('0x12')](function(_0x39bb42){_0x1c8c7e[_0xb16c('0x22')]=_0x39bb42;if(_0x436268['query'][_0xb16c('0x48')]){_0x2dd18b['include']=[{'model':db['CmContact'],'as':_0xb16c('0xe1'),'required':![]},{'model':db[_0xb16c('0xb3')],'as':_0xb16c('0xe2'),'attributes':[_0xb16c('0x2b'),_0xb16c('0xe3'),_0xb16c('0xe4')],'required':![]},{'model':db[_0xb16c('0xe5')],'as':_0xb16c('0xe6'),'attributes':['id','name',_0xb16c('0xe7')],'where':_0x436268[_0xb16c('0x35')][_0xb16c('0xe8')]?{'id':_0x436268['query']['tag']}:undefined,'required':_0x436268[_0xb16c('0x35')][_0xb16c('0xe8')]?!![]:![]}];}return db['ChatInteraction'][_0xb16c('0x44')](_0x2dd18b);})[_0xb16c('0x12')](function(_0x409a94){_0x1c8c7e['rows']=_0x409a94;return _0x1c8c7e;});}})[_0xb16c('0x12')](respondWithFilteredResult(_0x57f6d0,_0x2dd18b))[_0xb16c('0x45')](handleError(_0x57f6d0,null));};function iftimePromise(_0x20cc96,_0x2317f5){return respondWithRpcPromise(_0xb16c('0xe9'),_0xb16c('0xea'),{'command':_0x2317f5['timezone']?util[_0xb16c('0x9e')](_0xb16c('0xeb'),_0x20cc96['interval'],_0x2317f5[_0xb16c('0xec')]):util[_0xb16c('0x9e')](_0xb16c('0xed'),_0x20cc96[_0xb16c('0xee')])},client9002)[_0xb16c('0x12')](function(_0x1206d9){var _0x49245a=_0x1206d9&&_0x1206d9[_0xb16c('0xef')](_0xb16c('0xf0'))>=0x0?!![]:![];logger[_0xb16c('0x13')](_0xb16c('0xf1'),_0x2317f5['id'],_0x20cc96['id'],_0x20cc96[_0xb16c('0xee')],_0x49245a?_0xb16c('0xf2'):_0xb16c('0xf3'),_0x2317f5[_0xb16c('0xec')]?_0x2317f5[_0xb16c('0xec')]:_0xb16c('0xf4'));return _0x49245a;})['catch'](function(_0x2b6ac7){logger[_0xb16c('0x19')]('[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)',_0x2317f5['id'],_0x20cc96['id'],_0x20cc96[_0xb16c('0xee')],util[_0xb16c('0xf5')](_0x2b6ac7,{'showHidden':![],'depth':null}),_0x2317f5[_0xb16c('0xec')]?_0x2317f5[_0xb16c('0xec')]:_0xb16c('0xf4'));return![];});}exports[_0xb16c('0xea')]=function(_0x218b71,_0x1c1704){var _0x3300ed=0x0;var _0x236685=0x0;var _0x387cde=![];var _0x23f2c0;var _0x157c5b;return db[_0xb16c('0x30')][_0xb16c('0x49')]({'where':{'id':_0x218b71[_0xb16c('0x51')]['id']},'include':[{'model':db[_0xb16c('0xf6')],'as':_0xb16c('0xf6'),'include':[{'model':db[_0xb16c('0xf6')],'as':_0xb16c('0xf7'),'attributes':['id','interval'],'raw':!![]}]}]})[_0xb16c('0x12')](handleEntityNotFound(_0x1c1704,null))[_0xb16c('0x12')](function(_0x3d33fe){if(_0x3d33fe){_0x23f2c0=_0x3d33fe;return _0x3d33fe[_0xb16c('0xf8')]({'raw':!![]});}})['then'](function(_0x3b176b){if(_0x23f2c0){if(_0x3b176b){_0x157c5b=_0x3b176b;}}return require('../../config/license/util')[_0xb16c('0xf9')]();})[_0xb16c('0x12')](function(_0x5b7978){if(_0x5b7978){_0x236685=_0x5b7978[_0xb16c('0xfa')];_0x387cde=_0x5b7978['custom'];}})[_0xb16c('0x12')](function(){return db['ChatInteraction']['count']({'where':{'closed':![]}});})['then'](function(_0x142800){_0x3300ed=_0x142800;if(_0x236685&&_0x142800>_0x236685){return db['License'][_0xb16c('0x57')]({'where':{'id':0x1}})[_0xb16c('0x12')](function(_0x152069){if(_0x152069){_0x152069[_0xb16c('0xfb')](_0xb16c('0xfc'));}});}})['then'](function(){if(_0x23f2c0['Interval']&&_0x23f2c0[_0xb16c('0xf6')][_0xb16c('0xf7')]){var _0x910f4d=[];for(var _0x3ee63e=0x0;_0x3ee63e<_0x23f2c0[_0xb16c('0xf6')][_0xb16c('0xf7')][_0xb16c('0x3a')];_0x3ee63e++){var _0x1996b0=_0x23f2c0[_0xb16c('0xf6')][_0xb16c('0xf7')][_0x3ee63e]['get']({'plain':!![]});_0x910f4d[_0xb16c('0xfd')](iftimePromise(_0x1996b0,_0x23f2c0));}return BPromise[_0xb16c('0xfe')](_0x910f4d)[_0xb16c('0x12')](function(_0x36d9f7){return _[_0xb16c('0xff')](_0x36d9f7);});}else{return!![];}})[_0xb16c('0x12')](function(_0x4fb46b){var _0x372a32=fs['readFileSync'](path[_0xb16c('0x6a')](config[_0xb16c('0x6b')],_0xb16c('0x100')),'utf8');var _0x57f9ea={'remote':_0x23f2c0['remote'],'query':querystring[_0xb16c('0x18')](_[_0xb16c('0x40')](_0x23f2c0[_0xb16c('0x27')]({'plain':!![]}),{'customerIp':_0x218b71[_0xb16c('0x7c')][_0xb16c('0x101')]||_0x218b71[_0xb16c('0x7c')][_0xb16c('0x102')]||_0x218b71[_0xb16c('0x103')][_0xb16c('0x104')]||_0x218b71['ip'],'referer':_0x218b71[_0xb16c('0x7c')][_0xb16c('0x9b')],'openedInteractions':_0x3300ed,'maxInteractions':_0x236685,'virtual':_0x387cde['virtual'],'online':_0x4fb46b,'custom':_0x387cde}))[_0xb16c('0x105')](/'/g,'\x5c\x27')};_0x1c1704['send'](ejs['render'](Mustache[_0xb16c('0x106')](_0x372a32,_0x57f9ea),{'proactiveActions':_0x157c5b,'alignment':_0x23f2c0[_0xb16c('0x107')],'verticalAlignment':_0x23f2c0['verticalAlignment'],'div_color':_0x23f2c0[_0xb16c('0xe7')],'labelText':_0x23f2c0[_0xb16c('0x108')],'text_color':_0x23f2c0[_0xb16c('0x109')],'text_button_color':_0x23f2c0[_0xb16c('0x10a')],'button_color':_0x23f2c0[_0xb16c('0x10b')],'background_color':_0x23f2c0[_0xb16c('0x10c')],'hideWhenOffline':_0x23f2c0[_0xb16c('0x10d')],'interval':_0x23f2c0[_0xb16c('0x10e')]}));})['catch'](handleError(_0x1c1704,null));};exports[_0xb16c('0x10f')]=function(_0xb5759c,_0x110798){var _0x33bbb3=_0xb5759c[_0xb16c('0x51')]['id'];var _0xd351b0=_0xb5759c[_0xb16c('0x4b')];var _0x59fbcc=0xc8;var _0x2c888e=null;return db['sequelize'][_0xb16c('0xc8')]({'isolationLevel':db[_0xb16c('0x110')]['Transaction'][_0xb16c('0x111')][_0xb16c('0x112')]},function(_0x486921){return db[_0xb16c('0x30')][_0xb16c('0x57')]({'where':{'id':_0x33bbb3},'transaction':_0x486921})[_0xb16c('0x12')](function(_0x5bb1d9){if(_0x5bb1d9){return db['ChatApplication'][_0xb16c('0x26')]({'where':{'ChatWebsiteId':_0x33bbb3},'transaction':_0x486921})[_0xb16c('0x12')](function(){var _0x1d42ef=_[_0xb16c('0x2f')](_0xd351b0,function(_0x2f322f){_0x2f322f[_0xb16c('0x54')]=_0x33bbb3;return _0x2f322f;});return db[_0xb16c('0x8f')][_0xb16c('0x113')](_0x1d42ef,{'transaction':_0x486921});});}else{_0x59fbcc=0x194;_0x2c888e=[];}});})[_0xb16c('0x12')](function(){if(_0x59fbcc!==0x194){return db[_0xb16c('0x8f')][_0xb16c('0x114')]({'where':{'ChatWebsiteId':_0x33bbb3},'order':_0xb16c('0x93')})[_0xb16c('0x12')](function(_0x1b3d7c){_0x2c888e=_0x1b3d7c;});}})['catch'](function(_0x398d3b){_0x59fbcc=0x1f4;logger[_0xb16c('0x19')](_0x398d3b['stack']);if(_0x398d3b[_0xb16c('0x2b')]){delete _0x398d3b[_0xb16c('0x2b')];}_0x2c888e=_0x398d3b;})[_0xb16c('0x115')](function(){if(_0x2c888e===null){_0x110798['sendStatus'](_0x59fbcc);}else{if(_0x59fbcc===0x1f4){_0x110798['status'](_0x59fbcc)['send'](_0x2c888e);}else{_0x110798['status'](_0x59fbcc)[_0xb16c('0x1e')](_0x2c888e);}}});};exports[_0xb16c('0x116')]=function(_0x5589b6,_0x1e036e){var _0x38b3df={};var _0x5e5126={};var _0x57c360;var _0x591d2a;return db[_0xb16c('0x30')][_0xb16c('0x57')]({'where':{'id':_0x5589b6['params']['id']}})[_0xb16c('0x12')](handleEntityNotFound(_0x1e036e,null))[_0xb16c('0x12')](function(_0x12cf6d){if(_0x12cf6d){_0x57c360=_0x12cf6d;_0x5e5126[_0xb16c('0x34')]=_[_0xb16c('0x36')](db[_0xb16c('0x8f')]['rawAttributes']);_0x5e5126[_0xb16c('0x35')]=_[_0xb16c('0x36')](_0x5589b6[_0xb16c('0x35')]);_0x5e5126[_0xb16c('0x3d')]=_[_0xb16c('0x37')](_0x5e5126[_0xb16c('0x34')],_0x5e5126[_0xb16c('0x35')]);_0x38b3df[_0xb16c('0x39')]=_[_0xb16c('0x37')](_0x5e5126['model'],qs[_0xb16c('0x38')](_0x5589b6[_0xb16c('0x35')][_0xb16c('0x38')]));_0x38b3df[_0xb16c('0x39')]=_0x38b3df['attributes'][_0xb16c('0x3a')]?_0x38b3df['attributes']:_0x5e5126['model'];_0x38b3df[_0xb16c('0x59')]=qs[_0xb16c('0x3b')](_0x5589b6[_0xb16c('0x35')][_0xb16c('0x3b')]);_0x38b3df[_0xb16c('0x3c')]=qs['filters'](_[_0xb16c('0x3e')](_0x5589b6['query'],_0x5e5126[_0xb16c('0x3d')]));if(_0x5589b6[_0xb16c('0x35')][_0xb16c('0x3f')]){_0x38b3df[_0xb16c('0x3c')]=_[_0xb16c('0x40')](_0x38b3df[_0xb16c('0x3c')],{'$or':_[_0xb16c('0x2f')](_0x38b3df['attributes'],function(_0x14e273){var _0xb0b0d6={};_0xb0b0d6[_0x14e273]={'$like':'%'+_0x5589b6[_0xb16c('0x35')]['filter']+'%'};return _0xb0b0d6;})});}_0x38b3df=_[_0xb16c('0x40')]({},_0x38b3df,_0x5589b6[_0xb16c('0x42')]);return _0x57c360[_0xb16c('0x116')](_0x38b3df);}})[_0xb16c('0x12')](function(_0x491643){if(_0x491643){_0x591d2a=_0x491643[_0xb16c('0x3a')];if(!_0x5589b6[_0xb16c('0x35')][_0xb16c('0x60')](_0xb16c('0x58'))){_0x38b3df[_0xb16c('0x21')]=qs[_0xb16c('0x21')](_0x5589b6[_0xb16c('0x35')][_0xb16c('0x21')]);_0x38b3df[_0xb16c('0x1f')]=qs[_0xb16c('0x1f')](_0x5589b6[_0xb16c('0x35')][_0xb16c('0x1f')]);}return _0x57c360[_0xb16c('0x116')](_0x38b3df);}})[_0xb16c('0x12')](function(_0x17dc9e){if(_0x17dc9e){return _0x17dc9e?{'count':_0x591d2a,'rows':_0x17dc9e}:null;}})[_0xb16c('0x12')](respondWithResult(_0x1e036e,null))[_0xb16c('0x45')](handleError(_0x1e036e,null));};exports[_0xb16c('0x117')]=function(_0x10e973,_0x486f5f){return db['chatProactiveAction'][_0xb16c('0x49')]({'where':{'id':_0x10e973[_0xb16c('0x51')]['id']}})[_0xb16c('0x12')](handleEntityNotFound(_0x486f5f,null))[_0xb16c('0x12')](function(_0x44684c){if(_0x44684c){return _0x44684c[_0xb16c('0x117')](_0x10e973[_0xb16c('0x4b')][_0xb16c('0x5c')],_[_0xb16c('0xdf')](_0x10e973[_0xb16c('0x4b')],['ids','id'])||{});}})[_0xb16c('0x12')](respondWithResult(_0x486f5f,null))[_0xb16c('0x45')](handleError(_0x486f5f,null));};exports[_0xb16c('0xf8')]=function(_0x3bd713,_0x38caa2){var _0x27c575={};var _0x93ef64={};var _0x42efa3;var _0x113db5;return db[_0xb16c('0x30')][_0xb16c('0x57')]({'where':{'id':_0x3bd713[_0xb16c('0x51')]['id']}})[_0xb16c('0x12')](handleEntityNotFound(_0x38caa2,null))[_0xb16c('0x12')](function(_0x2ca490){if(_0x2ca490){_0x42efa3=_0x2ca490;_0x93ef64[_0xb16c('0x34')]=_[_0xb16c('0x36')](db[_0xb16c('0x118')]['rawAttributes']);_0x93ef64[_0xb16c('0x35')]=_[_0xb16c('0x36')](_0x3bd713[_0xb16c('0x35')]);_0x93ef64[_0xb16c('0x3d')]=_[_0xb16c('0x37')](_0x93ef64[_0xb16c('0x34')],_0x93ef64[_0xb16c('0x35')]);_0x27c575[_0xb16c('0x39')]=_[_0xb16c('0x37')](_0x93ef64['model'],qs[_0xb16c('0x38')](_0x3bd713[_0xb16c('0x35')]['fields']));_0x27c575[_0xb16c('0x39')]=_0x27c575['attributes']['length']?_0x27c575[_0xb16c('0x39')]:_0x93ef64[_0xb16c('0x34')];_0x27c575[_0xb16c('0x59')]=qs[_0xb16c('0x3b')](_0x3bd713[_0xb16c('0x35')][_0xb16c('0x3b')]);_0x27c575['where']=qs['filters'](_[_0xb16c('0x3e')](_0x3bd713[_0xb16c('0x35')],_0x93ef64[_0xb16c('0x3d')]));if(_0x3bd713[_0xb16c('0x35')][_0xb16c('0x3f')]){_0x27c575[_0xb16c('0x3c')]=_[_0xb16c('0x40')](_0x27c575[_0xb16c('0x3c')],{'$or':_['map'](_0x27c575[_0xb16c('0x39')],function(_0x250d18){var _0x22a712={};_0x22a712[_0x250d18]={'$like':'%'+_0x3bd713[_0xb16c('0x35')][_0xb16c('0x3f')]+'%'};return _0x22a712;})});}_0x27c575=_[_0xb16c('0x40')]({},_0x27c575,_0x3bd713[_0xb16c('0x42')]);return _0x42efa3[_0xb16c('0xf8')](_0x27c575);}})[_0xb16c('0x12')](function(_0x183581){if(_0x183581){_0x113db5=_0x183581[_0xb16c('0x3a')];if(!_0x3bd713[_0xb16c('0x35')][_0xb16c('0x60')](_0xb16c('0x58'))){_0x27c575[_0xb16c('0x21')]=qs['limit'](_0x3bd713['query']['limit']);_0x27c575[_0xb16c('0x1f')]=qs['offset'](_0x3bd713['query'][_0xb16c('0x1f')]);}return _0x42efa3[_0xb16c('0xf8')](_0x27c575);}})[_0xb16c('0x12')](function(_0x48d3b0){if(_0x48d3b0){return _0x48d3b0?{'count':_0x113db5,'rows':_0x48d3b0}:null;}})['then'](respondWithResult(_0x38caa2,null))[_0xb16c('0x45')](handleError(_0x38caa2,null));};exports[_0xb16c('0x119')]=function(_0x21a8a3,_0x192008){var _0x167ec9=_0x21a8a3[_0xb16c('0x35')][_0xb16c('0x11a')]===_0xb16c('0x11b')?_0xb16c('0x11c'):'onlineForm';return db['ChatWebsite'][_0xb16c('0x49')]({'attributes':['id',_0x167ec9],'where':{'id':_0x21a8a3['params']['id']}})[_0xb16c('0x12')](handleEntityNotFound(_0x192008,null))[_0xb16c('0x12')](function(_0x35b215){if(_0x35b215){var _0x55a7fc=_0x35b215[_0x167ec9];var _0x330a80=_0x55a7fc&&_0x55a7fc[_0xb16c('0x11d')]?_0x55a7fc['items']:[];_0x192008[_0xb16c('0x2c')]({'fromKey':_['isNil'](_0x55a7fc[_0xb16c('0x11e')])?undefined:_0x55a7fc['fromKey'],'count':_0x330a80[_0xb16c('0x3a')],'rows':_0x330a80});}})[_0xb16c('0x45')](handleError(_0x192008,null));};exports[_0xb16c('0x11f')]=function(_0x167b00,_0x257abb){var _0x7c8ffc={'raw':![],'where':{}};var _0x3d449d={};var _0x337192={'count':0x0,'rows':[]};return db[_0xb16c('0x30')][_0xb16c('0x57')]({'where':{'id':_0x167b00[_0xb16c('0x51')]['id']}})['then'](handleEntityNotFound(_0x257abb,null))[_0xb16c('0x12')](function(_0x59f5fd){if(_0x59f5fd){_0x3d449d['model']=_[_0xb16c('0x36')](db[_0xb16c('0xc1')][_0xb16c('0xe0')]);_0x3d449d[_0xb16c('0x35')]=_[_0xb16c('0x36')](_0x167b00[_0xb16c('0x35')]);_0x3d449d[_0xb16c('0x3d')]=_[_0xb16c('0x37')](_0x3d449d['model'],_0x3d449d['query']);_0x7c8ffc[_0xb16c('0x39')]=_['intersection'](_0x3d449d[_0xb16c('0x34')],qs['fields'](_0x167b00[_0xb16c('0x35')]['fields']));_0x7c8ffc[_0xb16c('0x39')]=_0x7c8ffc['attributes'][_0xb16c('0x3a')]?_0x7c8ffc[_0xb16c('0x39')]:_0x3d449d[_0xb16c('0x34')];if(!_0x167b00[_0xb16c('0x35')][_0xb16c('0x60')]('nolimit')){_0x7c8ffc[_0xb16c('0x21')]=qs['limit'](_0x167b00[_0xb16c('0x35')][_0xb16c('0x21')]);_0x7c8ffc[_0xb16c('0x1f')]=qs['offset'](_0x167b00[_0xb16c('0x35')][_0xb16c('0x1f')]);}_0x7c8ffc[_0xb16c('0x59')]=qs[_0xb16c('0x3b')](_0x167b00['query'][_0xb16c('0x3b')]);_0x7c8ffc[_0xb16c('0x3c')]=qs[_0xb16c('0x3d')](_[_0xb16c('0x3e')](_0x167b00[_0xb16c('0x35')],_0x3d449d[_0xb16c('0x3d')]));_0x7c8ffc[_0xb16c('0x3c')][_0xb16c('0x54')]=_0x59f5fd['id'];if(_0x167b00[_0xb16c('0x35')][_0xb16c('0x3f')]){_0x7c8ffc[_0xb16c('0x3c')]=_[_0xb16c('0x40')](_0x7c8ffc['where'],{'$or':_[_0xb16c('0x2f')](_0x7c8ffc['attributes'],function(_0x5e0110){var _0x11c382={};_0x11c382[_0x5e0110]={'$like':'%'+_0x167b00[_0xb16c('0x35')]['filter']+'%'};return _0x11c382;})});}_0x7c8ffc=_[_0xb16c('0x40')]({},_0x7c8ffc,_0x167b00[_0xb16c('0x42')]);return db[_0xb16c('0xc1')]['count']({'where':_0x7c8ffc[_0xb16c('0x3c')]})[_0xb16c('0x12')](function(_0x4eca9d){_0x337192[_0xb16c('0x22')]=_0x4eca9d;if(_0x167b00[_0xb16c('0x35')][_0xb16c('0x48')]){_0x7c8ffc[_0xb16c('0x43')]=[{'all':!![]}];}else{_0x7c8ffc['include']=[{'model':db[_0xb16c('0x7e')],'as':_0xb16c('0xe1'),'required':![]},{'model':db['Attachment'],'as':'Attachments','required':![]}];}return db[_0xb16c('0xc1')]['findAll'](_0x7c8ffc);})[_0xb16c('0x12')](function(_0x2aaa68){_0x337192[_0xb16c('0x5a')]=_0x2aaa68;return _0x337192;});}})[_0xb16c('0x12')](respondWithFilteredResult(_0x257abb,_0x7c8ffc))[_0xb16c('0x45')](handleError(_0x257abb,null));};exports[_0xb16c('0x120')]=function(_0x197f32,_0x2598b3){return db[_0xb16c('0x30')]['find']({'where':{'id':_0x197f32[_0xb16c('0x51')]['id']}})[_0xb16c('0x12')](handleEntityNotFound(_0x2598b3,null))[_0xb16c('0x12')](function(_0x1d3912){if(_0x1d3912){return _0x1d3912[_0xb16c('0x120')](_0x197f32[_0xb16c('0x4b')][_0xb16c('0x5c')],_[_0xb16c('0xdf')](_0x197f32[_0xb16c('0x4b')],[_0xb16c('0x5c'),'id'])||{})[_0xb16c('0xa9')](function(_0x2df603){for(var _0x71881e=0x0;_0x71881e<_0x197f32[_0xb16c('0x4b')][_0xb16c('0x5c')][_0xb16c('0x3a')];_0x71881e+=0x1){socket['emit'](_0xb16c('0x121'),{'UserId':Number(_0x197f32['body']['ids'][_0x71881e]),'ChatWebsiteId':Number(_0x197f32[_0xb16c('0x51')]['id'])});}return _0x2df603;});}})[_0xb16c('0x12')](respondWithResult(_0x2598b3,null))[_0xb16c('0x45')](handleError(_0x2598b3,null));};exports[_0xb16c('0x122')]=function(_0x2f9345,_0x47cd2d){return db[_0xb16c('0x30')][_0xb16c('0x49')]({'where':{'id':_0x2f9345[_0xb16c('0x51')]['id']}})[_0xb16c('0x12')](handleEntityNotFound(_0x47cd2d,null))[_0xb16c('0x12')](function(_0x3d80c3){if(_0x3d80c3){return _0x3d80c3[_0xb16c('0x122')](_0x2f9345[_0xb16c('0x35')][_0xb16c('0x5c')])['then'](function(){if(_['isArray'](_0x2f9345[_0xb16c('0x35')][_0xb16c('0x5c')])){for(var _0x28cdf0=0x0;_0x28cdf0<_0x2f9345[_0xb16c('0x35')][_0xb16c('0x5c')]['length'];_0x28cdf0+=0x1){socket['emit'](_0xb16c('0x123'),{'UserId':Number(_0x2f9345['query'][_0xb16c('0x5c')][_0x28cdf0]),'ChatWebsiteId':Number(_0x2f9345[_0xb16c('0x51')]['id'])});}}else{socket[_0xb16c('0x124')](_0xb16c('0x123'),{'UserId':Number(_0x2f9345['query'][_0xb16c('0x5c')]),'ChatWebsiteId':Number(_0x2f9345['params']['id'])});}});}})['then'](respondWithStatusCode(_0x47cd2d,null))[_0xb16c('0x45')](handleError(_0x47cd2d,null));};exports[_0xb16c('0x125')]=function(_0xd367d3,_0x49acfc){var _0x24fb62={};var _0x46a02d={};var _0x4a24d8;var _0xa97b29;return db[_0xb16c('0x30')][_0xb16c('0x57')]({'where':{'id':_0xd367d3[_0xb16c('0x51')]['id']}})[_0xb16c('0x12')](handleEntityNotFound(_0x49acfc,null))['then'](function(_0x4358ea){if(_0x4358ea){_0x4a24d8=_0x4358ea;_0x46a02d[_0xb16c('0x34')]=_[_0xb16c('0x36')](db['User'][_0xb16c('0xe0')]);_0x46a02d['query']=_[_0xb16c('0x36')](_0xd367d3[_0xb16c('0x35')]);_0x46a02d[_0xb16c('0x3d')]=_['intersection'](_0x46a02d[_0xb16c('0x34')],_0x46a02d[_0xb16c('0x35')]);_0x24fb62['attributes']=_[_0xb16c('0x37')](_0x46a02d[_0xb16c('0x34')],qs['fields'](_0xd367d3['query'][_0xb16c('0x38')]));_0x24fb62['attributes']=_0x24fb62['attributes'][_0xb16c('0x3a')]?_0x24fb62[_0xb16c('0x39')]:_0x46a02d[_0xb16c('0x34')];_0x24fb62[_0xb16c('0x59')]=qs[_0xb16c('0x3b')](_0xd367d3['query'][_0xb16c('0x3b')]);_0x24fb62[_0xb16c('0x3c')]=qs[_0xb16c('0x3d')](_[_0xb16c('0x3e')](_0xd367d3[_0xb16c('0x35')],_0x46a02d[_0xb16c('0x3d')]));if(_0xd367d3[_0xb16c('0x35')][_0xb16c('0x3f')]){_0x24fb62[_0xb16c('0x3c')]=_[_0xb16c('0x40')](_0x24fb62[_0xb16c('0x3c')],{'$or':_['map'](_0x24fb62['attributes'],function(_0xce1337){var _0x583511={};_0x583511[_0xce1337]={'$like':'%'+_0xd367d3[_0xb16c('0x35')][_0xb16c('0x3f')]+'%'};return _0x583511;})});}_0x24fb62=_['merge']({},_0x24fb62,_0xd367d3['options']);return _0x4a24d8[_0xb16c('0x125')](_0x24fb62);}})[_0xb16c('0x12')](function(_0x2b75c3){if(_0x2b75c3){_0xa97b29=_0x2b75c3[_0xb16c('0x3a')];if(!_0xd367d3[_0xb16c('0x35')][_0xb16c('0x60')](_0xb16c('0x58'))){_0x24fb62[_0xb16c('0x21')]=qs[_0xb16c('0x21')](_0xd367d3['query'][_0xb16c('0x21')]);_0x24fb62[_0xb16c('0x1f')]=qs[_0xb16c('0x1f')](_0xd367d3[_0xb16c('0x35')]['offset']);}return _0x4a24d8[_0xb16c('0x125')](_0x24fb62);}})['then'](function(_0x271a1c){if(_0x271a1c){return _0x271a1c?{'count':_0xa97b29,'rows':_0x271a1c}:null;}})[_0xb16c('0x12')](respondWithResult(_0x49acfc,null))['catch'](handleError(_0x49acfc,null));};
\ No newline at end of file
+var _0x83cb=['basename','openNewInteraction','sequelize','transaction','Attachment','bulkCreate','MailServerOut','Smtp','CloudProvider','forwardOffline','sendMail','\x22%s\x22\x20<%s>','forwardOfflineAddress','subjectOffline','toPairsIn','email','offlineMessageSubject','Chat','NotifyMailAccount','remove','Could\x20not\x20remove\x20attachment\x20file','addInteraction','omit','getInteractions','Contact','Owner','fullname','internal','Tag','Tags','tag','timezone','iftime\x20%s,%s','interval','iftime\x20%s','indexOf','true','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','OFFLINE','No\x20timezone','inspect','getSnippet','Interval','Intervals','getProactiveActions','virtual','increment','chatLicenseExceeded','push','server/files/chat/iframe.ejs','remote','x-real-ip','connection','remoteAddress','replace','alignment','labelText','color_button','backgroundColor','hideWhenOffline','Transaction','ISOLATION_LEVELS','findAndCountAll','finally','getApplications','addProactiveActions','chatProactiveAction','ChatProactiveAction','getFields','online','false','onlineForm','fromKey','getOfflineMessages','addAgents','emit','userChatWebsite:save','removeAgents','userChatWebsite:remove','getAgents','bluebird','util','path','ejs','fs-extra','querystring','../../config/logger','api','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','register','html-to-text','jayson/promise','client','http','then','info','ChatWebsite,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','status','end','json','offset','limit','undefined','count','set','Content-Range','get','ChatWebsites','UserProfileResource','destroy','sendStatus','stack','name','send','mandatoryDispositionPause','ChatWebsite','rawAttributes','type','key','model','query','keys','filters','intersection','fields','attributes','length','order','sort','filter','merge','VIRTUAL','options','includeAll','findAll','show','params','Pause','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','ChatWebsiteId','Disposition','getDispositions','findOne','hasOwnProperty','nolimit','where','pick','map','rows','removeDispositions','addAnswer','CannedAnswer','getAnswers','removeAnswers','ids','addLogo','sitepic','file','addAvatar','filename','addCustomerAvatar','customerAvatar','addSystemAvatar','systemAvatar','getLogo','join','root','server/files/images/logos/default_logo.svg','../../config/license/util','getLicense','custom','existsSync','server/files/images/logos/','download','isNil','agentAvatar','server/files/images/avatars/','getCustomerAvatar','showCustomerAvatar','getSystemAvatar','server/files/images/avatars/system_avatar.png','notify','user-agent-parser','setUA','user-agent','chat','Sequelize','ValidationError','difference','createdAt','updatedAt','CompanyId','ListId','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','List','Contacts','DESC','ChatApplication','Applications','account','applications','list','priority','CmContact','contact','headers','cf-connecting-ip','x-forwarded-for','first','split','x-real-port','browser','version','%s\x20%s','unknown','device','vendor','format','%s\x20%s\x20%s','threadId','ChatInteraction','externalUrl','ContactId','interaction','firstName','lastName','messageId','created','autoclose','close','unmanaged','ChatMessage','AttachmentId','UserId','User','unshift','*,*,*,*','forcedOwnership','Start','startRouting','EventManager','offline','files','no\x20available\x20attributes','mapKeyOffline','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','MailAccount','defaults','findOrCreate','spread','readFileSync','server/files/templates/chatOfflineMessage.ejs','utf8','render','toPairs','offlineMessageBody','ChatOfflineMessage','fromString','originalname','mimetype','server','attachments','offline-chat'];(function(_0x84818c,_0x4b4593){var _0x4d8524=function(_0x3c7c0a){while(--_0x3c7c0a){_0x84818c['push'](_0x84818c['shift']());}};_0x4d8524(++_0x4b4593);}(_0x83cb,0x174));var _0xb83c=function(_0x5e9823,_0x1ec34c){_0x5e9823=_0x5e9823-0x0;var _0x106fdc=_0x83cb[_0x5e9823];return _0x106fdc;};'use strict';var BPromise=require(_0xb83c('0x0'));var Mustache=require('mustache');var util=require(_0xb83c('0x1'));var path=require(_0xb83c('0x2'));var ejs=require(_0xb83c('0x3'));var fs=require('fs');var fs_extra=require(_0xb83c('0x4'));var _=require('lodash');var querystring=require(_0xb83c('0x5'));var Redis=require('ioredis');var qs=require('../../components/parsers/qs');var logger=require(_0xb83c('0x6'))(_0xb83c('0x7'));var config=require(_0xb83c('0x8'));var db=require(_0xb83c('0x9'))['db'];config[_0xb83c('0xa')]=_['defaults'](config[_0xb83c('0xa')],{'host':_0xb83c('0xb'),'port':0x18eb});var socket=require(_0xb83c('0xc'))(new Redis(config[_0xb83c('0xa')]));require('./chatWebsite.socket')[_0xb83c('0xd')](socket);var htmlToText=require(_0xb83c('0xe'));var jayson=require(_0xb83c('0xf'));var client=jayson[_0xb83c('0x10')]['http']({'port':0x232c});var client9002=jayson[_0xb83c('0x10')]['http']({'port':0x232a});var client9003=jayson['client']['http']({'port':0x232b});var client9001=jayson['client'][_0xb83c('0x11')]({'port':0x2329});function respondWithRpcPromise(_0x52b486,_0x148501,_0x13318e,_0x362c10){return new BPromise(function(_0xe0f3d7,_0x2de102){var _0x40e6ff=_0x362c10||client;return _0x40e6ff['request'](_0x52b486,_0x13318e)[_0xb83c('0x12')](function(_0x133009){logger[_0xb83c('0x13')](_0xb83c('0x14'),_0x148501,'request\x20sent');logger[_0xb83c('0x15')]('ChatWebsite,\x20%s,\x20%s,\x20%s',_0x148501,_0xb83c('0x16'),JSON[_0xb83c('0x17')](_0x133009));if(_0x133009['error']){if(_0x133009[_0xb83c('0x18')][_0xb83c('0x19')]===0x1f4){logger['error'](_0xb83c('0x14'),_0x148501,_0x133009['error'][_0xb83c('0x1a')]);return _0x2de102(_0x133009['error'][_0xb83c('0x1a')]);}logger[_0xb83c('0x18')]('ChatWebsite,\x20%s,\x20%s',_0x148501,_0x133009[_0xb83c('0x18')]['message']);return _0xe0f3d7(_0x133009[_0xb83c('0x18')][_0xb83c('0x1a')]);}else{logger[_0xb83c('0x13')]('ChatWebsite,\x20%s,\x20%s',_0x148501,'request\x20sent');_0xe0f3d7(_0x133009[_0xb83c('0x1b')]['message']);}})[_0xb83c('0x1c')](function(_0x150c77){logger[_0xb83c('0x18')](_0xb83c('0x14'),_0x148501,_0x150c77);_0x2de102(_0x150c77);});});}function respondWithStatusCode(_0x48170c,_0x5291b6){_0x5291b6=_0x5291b6||0xcc;return function(_0x6fc56b){if(_0x6fc56b){return _0x48170c['sendStatus'](_0x5291b6);}return _0x48170c[_0xb83c('0x1d')](_0x5291b6)[_0xb83c('0x1e')]();};}function respondWithResult(_0x10e087,_0x25e63a){_0x25e63a=_0x25e63a||0xc8;return function(_0x1eb1ce){if(_0x1eb1ce){return _0x10e087[_0xb83c('0x1d')](_0x25e63a)[_0xb83c('0x1f')](_0x1eb1ce);}};}function respondWithFilteredResult(_0x32b7d3,_0x3f89e9){return function(_0x5097c2){if(_0x5097c2){var _0x1d9623=typeof _0x3f89e9[_0xb83c('0x20')]==='undefined'&&typeof _0x3f89e9[_0xb83c('0x21')]===_0xb83c('0x22');var _0x24fd49=_0x5097c2[_0xb83c('0x23')];var _0x5ed1a3=_0x1d9623?0x0:_0x3f89e9[_0xb83c('0x20')];var _0x245f36=_0x1d9623?_0x5097c2['count']:_0x3f89e9[_0xb83c('0x20')]+_0x3f89e9['limit'];var _0x4b8664;if(_0x245f36>=_0x24fd49){_0x245f36=_0x24fd49;_0x4b8664=0xc8;}else{_0x4b8664=0xce;}_0x32b7d3['status'](_0x4b8664);return _0x32b7d3[_0xb83c('0x24')](_0xb83c('0x25'),_0x5ed1a3+'-'+_0x245f36+'/'+_0x24fd49)[_0xb83c('0x1f')](_0x5097c2);}return null;};}function saveUpdates(_0x323f87){return function(_0x80491d){if(_0x80491d){return _0x80491d['update'](_0x323f87)[_0xb83c('0x12')](function(_0x47f1bb){return _0x47f1bb;});}return null;};}function removeEntity(_0x26011c){return function(_0xc3e6de){if(_0xc3e6de){return _0xc3e6de['destroy']()[_0xb83c('0x12')](function(){var _0x216563=_0xc3e6de[_0xb83c('0x26')]({'plain':!![]});var _0x86461d=_0xb83c('0x27');return db[_0xb83c('0x28')][_0xb83c('0x29')]({'where':{'type':_0x86461d,'resourceId':_0x216563['id']}})[_0xb83c('0x12')](function(){return _0xc3e6de;});})[_0xb83c('0x12')](function(){_0x26011c['status'](0xcc)[_0xb83c('0x1e')]();});}};}function handleEntityNotFound(_0x476e43){return function(_0x4044ec){if(!_0x4044ec){_0x476e43[_0xb83c('0x2a')](0x194);}return _0x4044ec;};}function handleError(_0x587b4f,_0x582a31){_0x582a31=_0x582a31||0x1f4;return function(_0x4377e3){logger[_0xb83c('0x18')](_0x4377e3[_0xb83c('0x2b')]);if(_0x4377e3[_0xb83c('0x2c')]){delete _0x4377e3[_0xb83c('0x2c')];}_0x587b4f[_0xb83c('0x1d')](_0x582a31)[_0xb83c('0x2d')](_0x4377e3);};}exports['index']=function(_0x3cc560,_0x624f51){var _0x1ec898={'include':[{'model':db['Pause'],'as':_0xb83c('0x2e')}]},_0x3288a2={},_0x46a439={'count':0x0,'rows':[]};var _0x55af06=_['map'](db[_0xb83c('0x2f')][_0xb83c('0x30')],function(_0xaad29e){return{'name':_0xaad29e['fieldName'],'type':_0xaad29e[_0xb83c('0x31')][_0xb83c('0x32')]};});_0x3288a2[_0xb83c('0x33')]=_['map'](_0x55af06,'name');_0x3288a2[_0xb83c('0x34')]=_[_0xb83c('0x35')](_0x3cc560[_0xb83c('0x34')]);_0x3288a2[_0xb83c('0x36')]=_[_0xb83c('0x37')](_0x3288a2['model'],_0x3288a2[_0xb83c('0x34')]);_0x1ec898['attributes']=_[_0xb83c('0x37')](_0x3288a2[_0xb83c('0x33')],qs[_0xb83c('0x38')](_0x3cc560[_0xb83c('0x34')][_0xb83c('0x38')]));_0x1ec898[_0xb83c('0x39')]=_0x1ec898['attributes'][_0xb83c('0x3a')]?_0x1ec898[_0xb83c('0x39')]:_0x3288a2['model'];if(!_0x3cc560[_0xb83c('0x34')]['hasOwnProperty']('nolimit')){_0x1ec898[_0xb83c('0x21')]=qs[_0xb83c('0x21')](_0x3cc560['query'][_0xb83c('0x21')]);_0x1ec898[_0xb83c('0x20')]=qs[_0xb83c('0x20')](_0x3cc560[_0xb83c('0x34')][_0xb83c('0x20')]);}_0x1ec898[_0xb83c('0x3b')]=qs[_0xb83c('0x3c')](_0x3cc560[_0xb83c('0x34')][_0xb83c('0x3c')]);_0x1ec898['where']=qs['filters'](_['pick'](_0x3cc560[_0xb83c('0x34')],_0x3288a2['filters']),_0x55af06);if(_0x3cc560[_0xb83c('0x34')][_0xb83c('0x3d')]){_0x1ec898['where']=_[_0xb83c('0x3e')](_0x1ec898['where'],{'$or':_['map'](_0x55af06,function(_0x3018ad){if(_0x3018ad['type']!==_0xb83c('0x3f')){var _0x4cf98f={};_0x4cf98f[_0x3018ad[_0xb83c('0x2c')]]={'$like':'%'+_0x3cc560[_0xb83c('0x34')][_0xb83c('0x3d')]+'%'};return _0x4cf98f;}})});}_0x1ec898=_['merge']({},_0x1ec898,_0x3cc560[_0xb83c('0x40')]);var _0xcb5f27={'where':_0x1ec898['where']};return db[_0xb83c('0x2f')][_0xb83c('0x23')](_0xcb5f27)[_0xb83c('0x12')](function(_0x5d439c){_0x46a439[_0xb83c('0x23')]=_0x5d439c;if(_0x3cc560[_0xb83c('0x34')][_0xb83c('0x41')]){_0x1ec898['include']=[{'all':!![]}];}return db[_0xb83c('0x2f')][_0xb83c('0x42')](_0x1ec898);})[_0xb83c('0x12')](function(_0x14c85c){_0x46a439['rows']=_0x14c85c;return _0x46a439;})[_0xb83c('0x12')](respondWithFilteredResult(_0x624f51,_0x1ec898))[_0xb83c('0x1c')](handleError(_0x624f51,null));};exports[_0xb83c('0x43')]=function(_0x11b908,_0x9c5c7a){var _0x23cb1c={'raw':![],'where':{'id':_0x11b908[_0xb83c('0x44')]['id']},'include':[{'model':db[_0xb83c('0x45')],'as':'mandatoryDispositionPause'}]},_0x42c53e={};_0x42c53e['model']=_[_0xb83c('0x35')](db['ChatWebsite'][_0xb83c('0x30')]);_0x42c53e[_0xb83c('0x34')]=_[_0xb83c('0x35')](_0x11b908[_0xb83c('0x34')]);_0x42c53e[_0xb83c('0x36')]=_[_0xb83c('0x37')](_0x42c53e[_0xb83c('0x33')],_0x42c53e[_0xb83c('0x34')]);_0x23cb1c[_0xb83c('0x39')]=_[_0xb83c('0x37')](_0x42c53e[_0xb83c('0x33')],qs[_0xb83c('0x38')](_0x11b908[_0xb83c('0x34')]['fields']));_0x23cb1c[_0xb83c('0x39')]=_0x23cb1c[_0xb83c('0x39')]['length']?_0x23cb1c[_0xb83c('0x39')]:_0x42c53e[_0xb83c('0x33')];if(_0x11b908['query'][_0xb83c('0x41')]){_0x23cb1c[_0xb83c('0x46')]=[{'all':!![]}];}_0x23cb1c=_[_0xb83c('0x3e')]({},_0x23cb1c,_0x11b908[_0xb83c('0x40')]);return db[_0xb83c('0x2f')][_0xb83c('0x47')](_0x23cb1c)['then'](handleEntityNotFound(_0x9c5c7a,null))[_0xb83c('0x12')](respondWithResult(_0x9c5c7a,null))['catch'](handleError(_0x9c5c7a,null));};exports[_0xb83c('0x48')]=function(_0x3aa10a,_0x3fd87a){return db[_0xb83c('0x2f')][_0xb83c('0x48')](_0x3aa10a[_0xb83c('0x49')],{})[_0xb83c('0x12')](function(_0x57f31c){var _0x140e89=_0x3aa10a[_0xb83c('0x4a')][_0xb83c('0x26')]({'plain':!![]});if(!_0x140e89)throw new Error(_0xb83c('0x4b'));if(_0x140e89['role']===_0xb83c('0x4a')){var _0x47ca2b=_0x57f31c[_0xb83c('0x26')]({'plain':!![]});var _0x524ed2=_0xb83c('0x27');return db['UserProfileSection'][_0xb83c('0x47')]({'where':{'name':_0x524ed2,'userProfileId':_0x140e89[_0xb83c('0x4c')]},'raw':!![]})['then'](function(_0x144139){if(_0x144139&&_0x144139[_0xb83c('0x4d')]===0x0){return db['UserProfileResource'][_0xb83c('0x48')]({'name':_0x47ca2b['name'],'resourceId':_0x47ca2b['id'],'type':_0x144139[_0xb83c('0x2c')],'sectionId':_0x144139['id']},{})[_0xb83c('0x12')](function(){return _0x57f31c;});}else{return _0x57f31c;}})[_0xb83c('0x1c')](function(_0x200ce7){logger[_0xb83c('0x18')](_0xb83c('0x4e'),_0x200ce7);throw _0x200ce7;});}return _0x57f31c;})[_0xb83c('0x12')](respondWithResult(_0x3fd87a,0xc9))[_0xb83c('0x1c')](handleError(_0x3fd87a,null));};exports['update']=function(_0x1023c6,_0x361734){if(_0x1023c6['body']['id']){delete _0x1023c6['body']['id'];}return db['ChatWebsite'][_0xb83c('0x47')]({'where':{'id':_0x1023c6[_0xb83c('0x44')]['id']},'include':[{'model':db['Pause'],'as':_0xb83c('0x2e')}]})['then'](handleEntityNotFound(_0x361734,null))[_0xb83c('0x12')](saveUpdates(_0x1023c6[_0xb83c('0x49')],null))[_0xb83c('0x12')](respondWithResult(_0x361734,null))[_0xb83c('0x1c')](handleError(_0x361734,null));};exports[_0xb83c('0x29')]=function(_0x3b6533,_0x4d1d95){return db[_0xb83c('0x2f')]['find']({'where':{'id':_0x3b6533[_0xb83c('0x44')]['id']}})[_0xb83c('0x12')](handleEntityNotFound(_0x4d1d95,null))['then'](removeEntity(_0x4d1d95,null))['catch'](handleError(_0x4d1d95,null));};exports[_0xb83c('0x4f')]=function(_0x3c6321,_0x491ee5){return db[_0xb83c('0x2f')][_0xb83c('0x4f')]()[_0xb83c('0x12')](respondWithResult(_0x491ee5,null))[_0xb83c('0x1c')](handleError(_0x491ee5,null));};exports['addDisposition']=function(_0x95adef,_0x5c6109){if(_0x95adef[_0xb83c('0x49')]['id']){delete _0x95adef[_0xb83c('0x49')]['id'];}return db['ChatWebsite'][_0xb83c('0x47')]({'where':{'id':_0x95adef[_0xb83c('0x44')]['id']}})[_0xb83c('0x12')](handleEntityNotFound(_0x5c6109,null))['then'](function(_0x20ddf5){if(_0x20ddf5){_0x95adef[_0xb83c('0x49')][_0xb83c('0x50')]=_0x20ddf5['id'];return db[_0xb83c('0x51')]['create'](_0x95adef[_0xb83c('0x49')]);}})[_0xb83c('0x12')](respondWithResult(_0x5c6109,null))['catch'](handleError(_0x5c6109,null));};exports[_0xb83c('0x52')]=function(_0x2195e1,_0xa1bf3){var _0x25f21d={'raw':![],'where':{}};var _0x22c3b6={};var _0x1d8c63={'count':0x0,'rows':[]};return db[_0xb83c('0x2f')][_0xb83c('0x53')]({'where':{'id':_0x2195e1[_0xb83c('0x44')]['id']}})[_0xb83c('0x12')](handleEntityNotFound(_0xa1bf3,null))[_0xb83c('0x12')](function(_0x51d230){if(_0x51d230){_0x22c3b6['model']=_['keys'](db[_0xb83c('0x51')][_0xb83c('0x30')]);_0x22c3b6['query']=_[_0xb83c('0x35')](_0x2195e1[_0xb83c('0x34')]);_0x22c3b6[_0xb83c('0x36')]=_['intersection'](_0x22c3b6[_0xb83c('0x33')],_0x22c3b6[_0xb83c('0x34')]);_0x25f21d[_0xb83c('0x39')]=_[_0xb83c('0x37')](_0x22c3b6['model'],qs[_0xb83c('0x38')](_0x2195e1[_0xb83c('0x34')][_0xb83c('0x38')]));_0x25f21d['attributes']=_0x25f21d[_0xb83c('0x39')][_0xb83c('0x3a')]?_0x25f21d[_0xb83c('0x39')]:_0x22c3b6[_0xb83c('0x33')];if(!_0x2195e1[_0xb83c('0x34')][_0xb83c('0x54')](_0xb83c('0x55'))){_0x25f21d[_0xb83c('0x21')]=qs[_0xb83c('0x21')](_0x2195e1['query'][_0xb83c('0x21')]);_0x25f21d[_0xb83c('0x20')]=qs[_0xb83c('0x20')](_0x2195e1[_0xb83c('0x34')][_0xb83c('0x20')]);}_0x25f21d[_0xb83c('0x3b')]=qs[_0xb83c('0x3c')](_0x2195e1[_0xb83c('0x34')][_0xb83c('0x3c')]);_0x25f21d[_0xb83c('0x56')]=qs[_0xb83c('0x36')](_[_0xb83c('0x57')](_0x2195e1[_0xb83c('0x34')],_0x22c3b6[_0xb83c('0x36')]));_0x25f21d[_0xb83c('0x56')]['ChatWebsiteId']=_0x51d230['id'];if(_0x2195e1[_0xb83c('0x34')]['filter']){_0x25f21d[_0xb83c('0x56')]=_[_0xb83c('0x3e')](_0x25f21d[_0xb83c('0x56')],{'$or':_[_0xb83c('0x58')](_0x25f21d[_0xb83c('0x39')],function(_0x148da2){var _0x3c9a7a={};_0x3c9a7a[_0x148da2]={'$like':'%'+_0x2195e1['query'][_0xb83c('0x3d')]+'%'};return _0x3c9a7a;})});}_0x25f21d=_[_0xb83c('0x3e')]({},_0x25f21d,_0x2195e1[_0xb83c('0x40')]);return db[_0xb83c('0x51')]['count']({'where':_0x25f21d[_0xb83c('0x56')]})[_0xb83c('0x12')](function(_0x1ee016){_0x1d8c63['count']=_0x1ee016;if(_0x2195e1[_0xb83c('0x34')][_0xb83c('0x41')]){_0x25f21d['include']=[{'all':!![]}];}return db[_0xb83c('0x51')][_0xb83c('0x42')](_0x25f21d);})[_0xb83c('0x12')](function(_0x2d2d0c){_0x1d8c63[_0xb83c('0x59')]=_0x2d2d0c;return _0x1d8c63;});}})[_0xb83c('0x12')](respondWithFilteredResult(_0xa1bf3,_0x25f21d))[_0xb83c('0x1c')](handleError(_0xa1bf3,null));};exports[_0xb83c('0x5a')]=function(_0x494129,_0x5b6a99){return db[_0xb83c('0x2f')][_0xb83c('0x47')]({'where':{'id':_0x494129[_0xb83c('0x44')]['id']}})[_0xb83c('0x12')](handleEntityNotFound(_0x5b6a99,null))['then'](function(_0x3b4c93){if(_0x3b4c93){return _0x3b4c93[_0xb83c('0x5a')](_0x494129[_0xb83c('0x34')]['ids']);}})[_0xb83c('0x12')](respondWithStatusCode(_0x5b6a99,null))[_0xb83c('0x1c')](handleError(_0x5b6a99,null));};exports[_0xb83c('0x5b')]=function(_0x5a6d6e,_0x5b1b79){if(_0x5a6d6e[_0xb83c('0x49')]['id']){delete _0x5a6d6e[_0xb83c('0x49')]['id'];}return db['ChatWebsite']['find']({'where':{'id':_0x5a6d6e[_0xb83c('0x44')]['id']}})[_0xb83c('0x12')](handleEntityNotFound(_0x5b1b79,null))[_0xb83c('0x12')](function(_0x202109){if(_0x202109){_0x5a6d6e[_0xb83c('0x49')]['ChatWebsiteId']=_0x202109['id'];return db[_0xb83c('0x5c')]['create'](_0x5a6d6e[_0xb83c('0x49')]);}})[_0xb83c('0x12')](respondWithResult(_0x5b1b79,null))['catch'](handleError(_0x5b1b79,null));};exports[_0xb83c('0x5d')]=function(_0x46fdd4,_0x5202f0){var _0x282525={'raw':![],'where':{}};var _0x40b9d7={};var _0x34c202={'count':0x0,'rows':[]};return db['ChatWebsite'][_0xb83c('0x53')]({'where':{'id':_0x46fdd4[_0xb83c('0x44')]['id']}})[_0xb83c('0x12')](handleEntityNotFound(_0x5202f0,null))[_0xb83c('0x12')](function(_0x5b92e6){if(_0x5b92e6){_0x40b9d7[_0xb83c('0x33')]=_['keys'](db['CannedAnswer'][_0xb83c('0x30')]);_0x40b9d7[_0xb83c('0x34')]=_[_0xb83c('0x35')](_0x46fdd4[_0xb83c('0x34')]);_0x40b9d7[_0xb83c('0x36')]=_[_0xb83c('0x37')](_0x40b9d7[_0xb83c('0x33')],_0x40b9d7[_0xb83c('0x34')]);_0x282525[_0xb83c('0x39')]=_[_0xb83c('0x37')](_0x40b9d7['model'],qs[_0xb83c('0x38')](_0x46fdd4[_0xb83c('0x34')]['fields']));_0x282525['attributes']=_0x282525[_0xb83c('0x39')][_0xb83c('0x3a')]?_0x282525['attributes']:_0x40b9d7[_0xb83c('0x33')];if(!_0x46fdd4[_0xb83c('0x34')][_0xb83c('0x54')](_0xb83c('0x55'))){_0x282525[_0xb83c('0x21')]=qs[_0xb83c('0x21')](_0x46fdd4['query'][_0xb83c('0x21')]);_0x282525[_0xb83c('0x20')]=qs[_0xb83c('0x20')](_0x46fdd4[_0xb83c('0x34')][_0xb83c('0x20')]);}_0x282525[_0xb83c('0x3b')]=qs['sort'](_0x46fdd4[_0xb83c('0x34')][_0xb83c('0x3c')]);_0x282525['where']=qs[_0xb83c('0x36')](_[_0xb83c('0x57')](_0x46fdd4['query'],_0x40b9d7[_0xb83c('0x36')]));_0x282525[_0xb83c('0x56')][_0xb83c('0x50')]=_0x5b92e6['id'];if(_0x46fdd4[_0xb83c('0x34')][_0xb83c('0x3d')]){_0x282525[_0xb83c('0x56')]=_[_0xb83c('0x3e')](_0x282525[_0xb83c('0x56')],{'$or':_[_0xb83c('0x58')](_0x282525[_0xb83c('0x39')],function(_0x3c097e){var _0x363252={};_0x363252[_0x3c097e]={'$like':'%'+_0x46fdd4['query'][_0xb83c('0x3d')]+'%'};return _0x363252;})});}_0x282525=_[_0xb83c('0x3e')]({},_0x282525,_0x46fdd4[_0xb83c('0x40')]);return db[_0xb83c('0x5c')]['count']({'where':_0x282525[_0xb83c('0x56')]})[_0xb83c('0x12')](function(_0x2563e4){_0x34c202['count']=_0x2563e4;if(_0x46fdd4[_0xb83c('0x34')][_0xb83c('0x41')]){_0x282525['include']=[{'all':!![]}];}return db[_0xb83c('0x5c')]['findAll'](_0x282525);})[_0xb83c('0x12')](function(_0x435970){_0x34c202[_0xb83c('0x59')]=_0x435970;return _0x34c202;});}})[_0xb83c('0x12')](respondWithFilteredResult(_0x5202f0,_0x282525))['catch'](handleError(_0x5202f0,null));};exports[_0xb83c('0x5e')]=function(_0x2e1817,_0x4bc33b){return db[_0xb83c('0x2f')][_0xb83c('0x47')]({'where':{'id':_0x2e1817[_0xb83c('0x44')]['id']}})[_0xb83c('0x12')](handleEntityNotFound(_0x4bc33b,null))[_0xb83c('0x12')](function(_0x1d8f25){if(_0x1d8f25){return _0x1d8f25['removeAnswers'](_0x2e1817[_0xb83c('0x34')][_0xb83c('0x5f')]);}})['then'](respondWithStatusCode(_0x4bc33b,null))['catch'](handleError(_0x4bc33b,null));};exports[_0xb83c('0x60')]=function(_0x4112ab,_0x3437c8){_0x4112ab['body'][_0xb83c('0x61')]=_0x4112ab[_0xb83c('0x62')]['filename'];return db[_0xb83c('0x2f')]['find']({'where':{'id':_0x4112ab['params']['id']}})[_0xb83c('0x12')](handleEntityNotFound(_0x3437c8,null))[_0xb83c('0x12')](saveUpdates(_0x4112ab[_0xb83c('0x49')],null))[_0xb83c('0x12')](respondWithResult(_0x3437c8,null))['catch'](handleError(_0x3437c8,null));};exports[_0xb83c('0x63')]=function(_0x4d401e,_0x55520a){_0x4d401e[_0xb83c('0x49')]['agentAvatar']=_0x4d401e[_0xb83c('0x62')][_0xb83c('0x64')];return db['ChatWebsite']['find']({'where':{'id':_0x4d401e['params']['id']}})['then'](handleEntityNotFound(_0x55520a,null))[_0xb83c('0x12')](saveUpdates(_0x4d401e[_0xb83c('0x49')],null))[_0xb83c('0x12')](respondWithResult(_0x55520a,null))['catch'](handleError(_0x55520a,null));};exports[_0xb83c('0x65')]=function(_0x5b15c2,_0xad3e7){_0x5b15c2[_0xb83c('0x49')][_0xb83c('0x66')]=_0x5b15c2[_0xb83c('0x62')][_0xb83c('0x64')];return db[_0xb83c('0x2f')][_0xb83c('0x47')]({'where':{'id':_0x5b15c2['params']['id']}})[_0xb83c('0x12')](handleEntityNotFound(_0xad3e7,null))['then'](saveUpdates(_0x5b15c2['body'],null))['then'](respondWithResult(_0xad3e7,null))[_0xb83c('0x1c')](handleError(_0xad3e7,null));};exports[_0xb83c('0x67')]=function(_0x230cdf,_0x24ddb1){_0x230cdf[_0xb83c('0x49')][_0xb83c('0x68')]=_0x230cdf['file'][_0xb83c('0x64')];return db[_0xb83c('0x2f')][_0xb83c('0x47')]({'where':{'id':_0x230cdf[_0xb83c('0x44')]['id']}})[_0xb83c('0x12')](handleEntityNotFound(_0x24ddb1,null))[_0xb83c('0x12')](saveUpdates(_0x230cdf[_0xb83c('0x49')],null))[_0xb83c('0x12')](respondWithResult(_0x24ddb1,null))['catch'](handleError(_0x24ddb1,null));};exports[_0xb83c('0x69')]=function(_0x4e8f8e,_0x4b9b4e){var _0x4307b1=path[_0xb83c('0x6a')](config[_0xb83c('0x6b')],_0xb83c('0x6c'));var _0x538caa={'where':{'id':_0x4e8f8e[_0xb83c('0x44')]['id']},'attributes':['id',_0xb83c('0x61')],'raw':!![]};var _0xb3ece9=![];return require(_0xb83c('0x6d'))[_0xb83c('0x6e')]()[_0xb83c('0x12')](function(_0x563200){if(_0x563200){_0xb3ece9=_0x563200[_0xb83c('0x6f')];}})[_0xb83c('0x12')](function(){return db['ChatWebsite'][_0xb83c('0x47')](_0x538caa);})[_0xb83c('0x12')](handleEntityNotFound(_0x4b9b4e,null))['then'](function(_0x50b863){if(_0x50b863){if(!_['isNil'](_0x50b863['sitepic'])){if(fs[_0xb83c('0x70')](path[_0xb83c('0x6a')](config[_0xb83c('0x6b')],'server/files/images/logos/',_0x50b863[_0xb83c('0x61')]))&&_0xb3ece9){_0x4307b1=path['join'](config[_0xb83c('0x6b')],_0xb83c('0x71'),_0x50b863[_0xb83c('0x61')]);}}return _0x4b9b4e[_0xb83c('0x72')](_0x4307b1);}})[_0xb83c('0x1c')](handleError(_0x4b9b4e,null));};exports['getAvatar']=function(_0x4c7988,_0x564a26){var _0x528588=path[_0xb83c('0x6a')](config[_0xb83c('0x6b')],'server/files/images/avatars/default_avatar.png');var _0x53a6a5={'where':{'id':_0x4c7988[_0xb83c('0x44')]['id']},'attributes':['id','agentAvatar'],'raw':!![]};return db[_0xb83c('0x2f')][_0xb83c('0x47')](_0x53a6a5)[_0xb83c('0x12')](handleEntityNotFound(_0x564a26,null))['then'](function(_0x1068d9){if(_0x1068d9){if(!_[_0xb83c('0x73')](_0x1068d9[_0xb83c('0x74')])){if(fs[_0xb83c('0x70')](path[_0xb83c('0x6a')](config[_0xb83c('0x6b')],_0xb83c('0x75'),_0x1068d9[_0xb83c('0x74')]))){_0x528588=path[_0xb83c('0x6a')](config['root'],_0xb83c('0x75'),_0x1068d9['agentAvatar']);}}return _0x564a26[_0xb83c('0x72')](_0x528588);}})[_0xb83c('0x1c')](handleError(_0x564a26,null));};exports[_0xb83c('0x76')]=function(_0x47d92d,_0x2d8e98){var _0x3a2eb6=path['join'](config[_0xb83c('0x6b')],'server/files/images/avatars/customer_avatar.png');var _0x5c3eda={'where':{'id':_0x47d92d[_0xb83c('0x44')]['id']},'attributes':['id',_0xb83c('0x66'),_0xb83c('0x77')],'raw':!![]};return db[_0xb83c('0x2f')][_0xb83c('0x47')](_0x5c3eda)[_0xb83c('0x12')](handleEntityNotFound(_0x2d8e98,null))[_0xb83c('0x12')](function(_0x5a67b1){if(_0x5a67b1){if(!_[_0xb83c('0x73')](_0x5a67b1[_0xb83c('0x66')])){if(fs[_0xb83c('0x70')](path['join'](config[_0xb83c('0x6b')],_0xb83c('0x75'),_0x5a67b1[_0xb83c('0x66')]))&&_0x5a67b1[_0xb83c('0x77')]){_0x3a2eb6=path[_0xb83c('0x6a')](config[_0xb83c('0x6b')],_0xb83c('0x75'),_0x5a67b1[_0xb83c('0x66')]);}}return _0x2d8e98['download'](_0x3a2eb6);}})[_0xb83c('0x1c')](handleError(_0x2d8e98,null));};exports[_0xb83c('0x78')]=function(_0x5e34dc,_0x2de63b){var _0x1891e6=path[_0xb83c('0x6a')](config[_0xb83c('0x6b')],_0xb83c('0x79'));var _0x4014cb={'where':{'id':_0x5e34dc[_0xb83c('0x44')]['id']},'attributes':['id',_0xb83c('0x68')],'raw':!![]};return db[_0xb83c('0x2f')][_0xb83c('0x47')](_0x4014cb)[_0xb83c('0x12')](handleEntityNotFound(_0x2de63b,null))[_0xb83c('0x12')](function(_0x220641){if(_0x220641){if(!_['isNil'](_0x220641[_0xb83c('0x68')])){if(fs[_0xb83c('0x70')](path[_0xb83c('0x6a')](config['root'],_0xb83c('0x75'),_0x220641[_0xb83c('0x68')]))){_0x1891e6=path[_0xb83c('0x6a')](config[_0xb83c('0x6b')],_0xb83c('0x75'),_0x220641[_0xb83c('0x68')]);}}return _0x2de63b['download'](_0x1891e6);}})[_0xb83c('0x1c')](handleError(_0x2de63b,null));};exports[_0xb83c('0x7a')]=function(_0xb5696f,_0x475e7d){var _0x7729aa=require(_0xb83c('0x7b'));var _0xf37179=new _0x7729aa();var _0x5b9956=_0xf37179[_0xb83c('0x7c')](_0xb5696f['headers'][_0xb83c('0x7d')])['getResult']();var _0x252d66={'body':_0xb5696f[_0xb83c('0x49')],'channel':_0xb83c('0x7e')};var _0x363aec=[];var _0x3066d1=[];var _0x3c99ee={};var _0x3f4495=![];return db['CmContact'][_0xb83c('0x4f')]()[_0xb83c('0x12')](function(_0x9b21c5){if(!_0x9b21c5){throw new db[(_0xb83c('0x7f'))][(_0xb83c('0x80'))]('no\x20available\x20attributes');}_0x363aec=_[_0xb83c('0x81')](_[_0xb83c('0x35')](_0x9b21c5),[_0xb83c('0x82'),_0xb83c('0x83')]);_0x3066d1=_[_0xb83c('0x81')](_[_0xb83c('0x35')](_0x9b21c5),[_0xb83c('0x82'),'updatedAt',_0xb83c('0x84'),_0xb83c('0x85')]);if(_0xb5696f[_0xb83c('0x49')]['id']){delete _0xb5696f[_0xb83c('0x49')]['id'];}if(_[_0xb83c('0x73')](_0xb5696f[_0xb83c('0x49')][_0xb83c('0x86')])){throw new db['Sequelize'][(_0xb83c('0x80'))](_0xb83c('0x87'));}if(_[_0xb83c('0x73')](_0xb5696f[_0xb83c('0x49')][_0xb83c('0x49')])||_0xb5696f[_0xb83c('0x49')][_0xb83c('0x49')]===''){throw new db[(_0xb83c('0x7f'))]['ValidationError'](_0xb83c('0x88'));}if(_[_0xb83c('0x73')](_0xb5696f[_0xb83c('0x49')][_0xb83c('0x89')])){throw new db[(_0xb83c('0x7f'))][(_0xb83c('0x80'))](_0xb83c('0x8a')+_0x3066d1);}if(!_[_0xb83c('0x8b')](_0x3066d1,_0xb5696f[_0xb83c('0x49')]['mapKey'])){throw new db[(_0xb83c('0x7f'))][(_0xb83c('0x80'))](_0xb83c('0x8c')+_0x3066d1);}_0x3c99ee[_0xb5696f['body'][_0xb83c('0x89')]]=_0xb5696f['body'][_0xb83c('0x86')];})[_0xb83c('0x12')](function(){return db[_0xb83c('0x2f')][_0xb83c('0x47')]({'where':{'id':_0xb5696f[_0xb83c('0x44')]['id']},'include':[{'model':db[_0xb83c('0x8d')],'as':_0xb83c('0x8e'),'include':[{'model':db['CmContact'],'as':_0xb83c('0x8f'),'where':_0x3c99ee,'limit':0x1,'order':[[_0xb83c('0x83'),_0xb83c('0x90')]]}]},{'model':db[_0xb83c('0x91')],'as':_0xb83c('0x92')}]});})[_0xb83c('0x12')](handleEntityNotFound(_0x475e7d,null))[_0xb83c('0x12')](function(_0x3f2a45){if(_0x3f2a45&&_0x3f2a45[_0xb83c('0x8e')]){_0x252d66[_0xb83c('0x93')]=_0x3f2a45;_0x252d66[_0xb83c('0x94')]=_0x3f2a45['Applications'];_0x252d66[_0xb83c('0x95')]=_0x3f2a45[_0xb83c('0x8e')];_0x252d66[_0xb83c('0x94')]=_['orderBy'](_0x252d66[_0xb83c('0x94')],[_0xb83c('0x96')],['asc']);if(_0x252d66[_0xb83c('0x93')][_0xb83c('0x92')]){delete _0x252d66[_0xb83c('0x93')][_0xb83c('0x92')];}if(_0x252d66[_0xb83c('0x93')]['List']&&_0x252d66[_0xb83c('0x93')][_0xb83c('0x8e')][_0xb83c('0x8f')][_0xb83c('0x3a')]){return _0x252d66[_0xb83c('0x93')][_0xb83c('0x8e')][_0xb83c('0x8f')][0x0];}var _0x325ec2=_['defaults'](_0xb5696f[_0xb83c('0x49')],{'firstName':_0xb5696f[_0xb83c('0x49')][_0xb83c('0x86')],'ListId':_0x3f2a45[_0xb83c('0x85')]});_0x325ec2[_0xb5696f[_0xb83c('0x49')][_0xb83c('0x89')]]=_0xb5696f[_0xb83c('0x49')][_0xb83c('0x86')];return db[_0xb83c('0x97')][_0xb83c('0x48')](_0x325ec2,{'fields':_0x363aec,'raw':!![]});}})[_0xb83c('0x12')](handleEntityNotFound(_0x475e7d,null))[_0xb83c('0x12')](function(_0x35a328){_0x252d66[_0xb83c('0x98')]=_0x35a328;var _0xd09169=_0xb5696f['body']['customerIp'];if(_0xb5696f[_0xb83c('0x99')][_0xb83c('0x9a')]){_0xd09169=_0xb5696f[_0xb83c('0x99')][_0xb83c('0x9a')];}else if(_0xb5696f['headers'][_0xb83c('0x9b')]){_0xd09169=_[_0xb83c('0x9c')](_0xb5696f[_0xb83c('0x99')][_0xb83c('0x9b')][_0xb83c('0x9d')](','));}if(_0x35a328){var _0x80662c={'ContactId':_0x35a328['id'],'ChatWebsiteId':_0xb5696f[_0xb83c('0x44')]['id'],'from':(_0x35a328['firstName']||'')+'\x20'+(_0x35a328['lastName']||''),'customerIp':_0xd09169,'customerPort':_0xb5696f[_0xb83c('0x99')][_0xb83c('0x9e')]?_0xb5696f[_0xb83c('0x99')]['x-real-port']:null,'referer':_0xb5696f[_0xb83c('0x49')]['referer'],'browserName':_0x5b9956[_0xb83c('0x9f')][_0xb83c('0x2c')]&&_0x5b9956['browser'][_0xb83c('0xa0')]?util['format'](_0xb83c('0xa1'),_0x5b9956[_0xb83c('0x9f')][_0xb83c('0x2c')],_0x5b9956[_0xb83c('0x9f')][_0xb83c('0xa0')]):_0xb83c('0xa2'),'browserVersion':_0x5b9956['browser'][_0xb83c('0xa0')]||_0xb83c('0xa2'),'osName':util['format'](_0xb83c('0xa1'),_0x5b9956['os'][_0xb83c('0x2c')],_0x5b9956['os'][_0xb83c('0xa0')]),'osVersion':_0x5b9956['os']['version'],'deviceModel':_0x5b9956['device']['model']&&_0x5b9956[_0xb83c('0xa3')][_0xb83c('0xa4')]?util[_0xb83c('0xa5')](_0xb83c('0xa6'),_0x5b9956['device'][_0xb83c('0x33')],_0x5b9956['device'][_0xb83c('0xa4')],_0x5b9956[_0xb83c('0xa3')][_0xb83c('0x31')]):null,'deviceVendor':_0x5b9956[_0xb83c('0xa3')][_0xb83c('0xa4')],'deviceType':_0x5b9956['device']['type'],'formData':JSON[_0xb83c('0x17')](_0xb5696f['body'])};var _0xfb52aa={'ChatWebsiteId':_0xb5696f['params']['id'],'closed':![]};if(_0xb5696f['body'][_0xb83c('0xa7')]){_0xfb52aa[_0xb83c('0xa7')]=_0xb5696f['body'][_0xb83c('0xa7')];return db[_0xb83c('0xa8')][_0xb83c('0x47')]({'where':_0xfb52aa})['then'](function(_0x540100){if(_0x540100){return[_0x540100,![]];}_0x80662c[_0xb83c('0xa7')]=_0xb5696f[_0xb83c('0x49')][_0xb83c('0xa7')];_0x80662c[_0xb83c('0xa9')]=_0xb5696f[_0xb83c('0x49')][_0xb83c('0xa9')];return db[_0xb83c('0xa8')][_0xb83c('0x48')](_0x80662c)[_0xb83c('0x12')](function(_0x329845){return[_0x329845,!![]];});});}_0xfb52aa[_0xb83c('0xaa')]=_0x35a328['id'];if(_0xb5696f['body'][_0xb83c('0xab')]&&_0xb5696f['body']['interaction']['id']){_0xfb52aa['id']=_0xb5696f[_0xb83c('0x49')]['interaction']['id'];return db[_0xb83c('0xa8')][_0xb83c('0x47')]({'where':_0xfb52aa})['then'](function(_0x1e4172){if(_0x1e4172){return[_0x1e4172,![]];}return db[_0xb83c('0xa8')][_0xb83c('0x48')](_0x80662c)[_0xb83c('0x12')](function(_0x3185f6){return[_0x3185f6,!![]];});});}return db[_0xb83c('0xa8')]['create'](_0x80662c)['then'](function(_0x45ddc0){return[_0x45ddc0,!![]];});}})['spread'](function(_0x385eab,_0x4f6ba5){if(_0x385eab){_0x3f4495=_0x4f6ba5;if(!_0x4f6ba5){var _0x5269bd={'from':(_0x252d66[_0xb83c('0x98')][_0xb83c('0xac')]||'')+'\x20'+(_0x252d66[_0xb83c('0x98')][_0xb83c('0xad')]||'')};if(_0xb5696f['body']['threadId']&&_0xb5696f[_0xb83c('0x49')][_0xb83c('0xae')]&&_0xb5696f[_0xb83c('0x49')][_0xb83c('0xa7')]!=_0xb5696f[_0xb83c('0x49')][_0xb83c('0xae')]){_0x5269bd[_0xb83c('0xa7')]=_0xb5696f[_0xb83c('0x49')][_0xb83c('0xae')];}return _0x385eab['update'](_0x5269bd);}else{return _0x385eab;}}})[_0xb83c('0x12')](function(_0x230d1a){_0x252d66[_0xb83c('0xab')]=_0x230d1a[_0xb83c('0x26')]({'plain':!![]});_0x252d66[_0xb83c('0xab')][_0xb83c('0xaf')]=_0x3f4495;if(_0x252d66[_0xb83c('0xab')][_0xb83c('0xaf')]){if(_0x252d66[_0xb83c('0x93')][_0xb83c('0xb0')]){_0x252d66[_0xb83c('0x94')]['push']({'id':0x0,'priority':_0x252d66['applications']['length']+0x1,'app':_0xb83c('0xb1'),'appdata':_0xb83c('0xb2'),'interval':'*,*,*,*'});}}return db[_0xb83c('0xb3')][_0xb83c('0x48')]({'body':_0xb5696f[_0xb83c('0x49')][_0xb83c('0x49')],'ChatWebsiteId':_0xb5696f[_0xb83c('0x44')]['id'],'ChatInteractionId':_0x230d1a['id'],'direction':'in','ContactId':_0x252d66[_0xb83c('0x98')]['id'],'AttachmentId':_0xb5696f['body'][_0xb83c('0xb4')]});})['then'](function(_0x5a5b6b){_0x252d66[_0xb83c('0x1a')]=_0x5a5b6b;if(_0x252d66[_0xb83c('0xab')][_0xb83c('0xb5')]){return db[_0xb83c('0xb6')][_0xb83c('0x47')]({'attributes':['id','name'],'where':{'id':_0x252d66[_0xb83c('0xab')][_0xb83c('0xb5')]}})['then'](function(_0x2cbf8c){if(_0x2cbf8c){_0x252d66['applications'][_0xb83c('0xb7')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x2cbf8c[_0xb83c('0x2c')]+','+(_0x252d66[_0xb83c('0x93')]['waitForTheAssignedAgent']||0xa),'interval':_0xb83c('0xb8')});_0x252d66[_0xb83c('0xb9')]=!![];}return respondWithRpcPromise(_0xb83c('0xba'),_0xb83c('0xbb'),_0x252d66);});}return respondWithRpcPromise(_0xb83c('0xba'),'startRouting',_0x252d66);})[_0xb83c('0x12')](function(_0x2598ff){respondWithRpcPromise(_0xb83c('0xbc'),_0xb83c('0xbc'),{'event':_0xb83c('0x7a'),'message':_0x2598ff},client9002);return _0x2598ff;})[_0xb83c('0x12')](respondWithResult(_0x475e7d,null))[_0xb83c('0x1c')](handleError(_0x475e7d,null));};exports[_0xb83c('0xbd')]=function(_0x2856cf,_0x17637d){var _0x13f66,_0x3701ac,_0x4fb3b4;var _0x3658f4=[];var _0x2bb408={};var _0x2bc5c7=_0x2856cf[_0xb83c('0xbe')]||[];var _0x254499=[];var _0x377242;return db[_0xb83c('0x97')][_0xb83c('0x4f')]()[_0xb83c('0x12')](function(_0x4ef1ff){if(!_0x4ef1ff){throw new db['Sequelize'][(_0xb83c('0x80'))](_0xb83c('0xbf'));}_0x3658f4=_['difference'](_[_0xb83c('0x35')](_0x4ef1ff),[_0xb83c('0x82'),'updatedAt',_0xb83c('0x84'),_0xb83c('0x85')]);if(_0x2856cf[_0xb83c('0x49')]['id']){delete _0x2856cf[_0xb83c('0x49')]['id'];}if(_[_0xb83c('0x73')](_0x2856cf[_0xb83c('0x49')][_0xb83c('0x86')])){throw _0x17637d['status'](0x1f4)[_0xb83c('0x2d')](new db[(_0xb83c('0x7f'))][(_0xb83c('0x80'))]('from\x20is\x20mandatory'));}if(_[_0xb83c('0x73')](_0x2856cf[_0xb83c('0x49')][_0xb83c('0x49')])||_0x2856cf[_0xb83c('0x49')][_0xb83c('0x49')]===''){throw _0x17637d['status'](0x1f4)[_0xb83c('0x2d')](new db[(_0xb83c('0x7f'))]['ValidationError'](_0xb83c('0x88')));}if(_[_0xb83c('0x73')](_0x2856cf[_0xb83c('0x49')][_0xb83c('0xc0')])){throw _0x17637d[_0xb83c('0x1d')](0x1f4)[_0xb83c('0x2d')](new db[(_0xb83c('0x7f'))][(_0xb83c('0x80'))](_0xb83c('0xc1')+_0x3658f4));}if(!_[_0xb83c('0x8b')](_0x3658f4,_0x2856cf[_0xb83c('0x49')][_0xb83c('0xc0')])){throw _0x17637d[_0xb83c('0x1d')](0x1f4)[_0xb83c('0x2d')](new db[(_0xb83c('0x7f'))][(_0xb83c('0x80'))](_0xb83c('0xc2')+_0x3658f4));}_0x2bb408[_0x2856cf[_0xb83c('0x49')][_0xb83c('0xc0')]]=_0x2856cf[_0xb83c('0x49')][_0xb83c('0x86')];})[_0xb83c('0x12')](function(){return db[_0xb83c('0x2f')][_0xb83c('0x47')]({'where':{'id':_0x2856cf[_0xb83c('0x44')]['id']},'include':[{'model':db['CmList'],'as':_0xb83c('0x8e')},{'model':db[_0xb83c('0xc3')],'as':'MailAccount'}]});})[_0xb83c('0x12')](handleEntityNotFound(_0x17637d,null))[_0xb83c('0x12')](function(_0x4ad772){if(_0x4ad772&&_0x4ad772[_0xb83c('0x8e')]){_0x3701ac=_0x4ad772;var _0x1f1096=_[_0xb83c('0xc4')](_0x2856cf[_0xb83c('0x49')],{'firstName':_0x2856cf[_0xb83c('0x49')][_0xb83c('0x86')],'phone':_0x2856cf[_0xb83c('0x49')][_0xb83c('0x86')],'ListId':_0x4ad772[_0xb83c('0x85')]});_0x1f1096[_0x2856cf[_0xb83c('0x49')][_0xb83c('0xc0')]]=_0x2856cf[_0xb83c('0x49')][_0xb83c('0x86')];return db[_0xb83c('0x97')][_0xb83c('0xc5')]({'where':_0x2bb408,'defaults':_0x1f1096});}})[_0xb83c('0xc6')](function(_0x486d59){if(_0x486d59){_0x4fb3b4=_0x486d59;var _0x5a4bd3=fs[_0xb83c('0xc7')](path[_0xb83c('0x6a')](config[_0xb83c('0x6b')],_0xb83c('0xc8')),_0xb83c('0xc9'));var _0x11efa3=ejs[_0xb83c('0xca')](_0x5a4bd3,{'body':_[_0xb83c('0xcb')](_0x2856cf[_0xb83c('0x49')][_0xb83c('0x49')]),'bodyTitle':_0x3701ac[_0xb83c('0xcc')]});return db[_0xb83c('0xcd')][_0xb83c('0x48')]({'body':_0x11efa3,'plainBody':htmlToText[_0xb83c('0xce')](_0x11efa3),'ContactId':_0x486d59['id'],'ChatWebsiteId':_0x3701ac['id']});}})[_0xb83c('0x12')](function(_0x3b8863){_0x377242=_0x3b8863;if(_0x2bc5c7[_0xb83c('0x3a')]){var _0x173e52=_0x2bc5c7[_0xb83c('0x58')](function(_0x4aa379){return{'name':_0x4aa379[_0xb83c('0xcf')],'basename':_0x4aa379[_0xb83c('0x64')],'type':_0x4aa379[_0xb83c('0xd0')],'ChatOfflineMessageId':_0x3b8863['id']};});_0x254499=_0x173e52[_0xb83c('0x58')](_0x5e581f=>{var _0x571b55={'filename':_0x5e581f[_0xb83c('0x2c')],'path':path['join'](config[_0xb83c('0x6b')],_0xb83c('0xd1'),_0xb83c('0xbe'),_0xb83c('0xd2'),_0xb83c('0xd3'),_0x5e581f[_0xb83c('0xd4')])};return _0x571b55;});if(!_0x3701ac[_0xb83c('0xd5')]){return db[_0xb83c('0xd6')][_0xb83c('0xd7')](function(_0x5ca5d0){return db[_0xb83c('0xd8')][_0xb83c('0xd9')](_0x173e52,{'transaction':_0x5ca5d0});});}}})['then'](function(){if(_0x377242){_0x13f66=_0x377242;return db[_0xb83c('0xc3')][_0xb83c('0x53')]({'where':{'service':!![]},'include':[{'model':db[_0xb83c('0xda')],'as':_0xb83c('0xdb'),'raw':!![],'include':[{'model':db[_0xb83c('0xdc')],'as':_0xb83c('0xdc'),'raw':!![]}]}]});}})[_0xb83c('0x12')](function(_0xc7b304){if(_0xc7b304&&_0xc7b304['Smtp']&&_0x3701ac[_0xb83c('0xdd')]&&_0x3701ac['forwardOfflineAddress']){var _0x721f4d=_0xc7b304['getSmtpOptions']();return respondWithRpcPromise('SendMail',_0xb83c('0xde'),{'account':_0x721f4d,'message':{'from':util[_0xb83c('0xa5')](_0xb83c('0xdf'),_0xc7b304[_0xb83c('0x2c')],_0xc7b304['email']||_0xc7b304['Smtp']['user']),'to':_0x3701ac[_0xb83c('0xe0')],'subject':_0x3701ac['offlineMessageSubject'],'html':_0x13f66[_0xb83c('0x49')],'attachments':_0x254499}},client9003)[_0xb83c('0x12')](function(){return _0x13f66;})['catch'](function(_0x5718bf){logger[_0xb83c('0x18')](_0x5718bf);});}})['then'](function(){if(_0x3701ac&&_0x3701ac[_0xb83c('0xd5')]&&_0x3701ac['MailAccountId']){var _0x42a15f=[];if(_0x2bc5c7['length']){_0x42a15f=_0x2bc5c7[_0xb83c('0x58')](function(_0x39530c){return{'name':_0x39530c[_0xb83c('0xcf')],'basename':_0x39530c[_0xb83c('0x64')],'type':_0x39530c['mimetype'],'ChatOfflineMessageId':_0x377242['id']};});}var _0x2309bc;if(!_['isNil'](_0x3701ac[_0xb83c('0xe1')])){var _0x227167=_[_0xb83c('0x58')](_0x2856cf['body'],function(_0x1dde68){return _0x1dde68;});var _0x2dd676=_[_0xb83c('0xe2')](_0x227167)[0x0];var _0x10c470=_['mapValues'](_0x2dd676,function(_0x2dbb10){return _0x2dbb10;});_0x2309bc=_0x10c470[0x1][_0x3701ac[_0xb83c('0xe1')]];}var _0x4ab844={'from':_0x4fb3b4[_0xb83c('0xe3')],'firstName':_0x4fb3b4[_0xb83c('0xac')],'lastName':_0x4fb3b4[_0xb83c('0xad')],'mapKey':_0xb83c('0xe3'),'message':{'from':_0x4fb3b4['email'],'to':_0x3701ac[_0xb83c('0xc3')]['email'],'cc':'','subject':_['isNil'](_0x2309bc)?_0x3701ac[_0xb83c('0xe4')]:_0x2309bc,'messageId':'','sentAt':new Date(),'attach':_0x42a15f[_0xb83c('0x3a')],'attachments':_0x42a15f,'originChannel':_0xb83c('0xe5'),'ChatWebsiteId':_0x3701ac['id'],'ChatOfflineMessageId':_0x13f66['id'],'originTo':_0x3701ac[_0xb83c('0xc3')][_0xb83c('0xe3')]},'body':_0x13f66['body']};var _0x21b298={'account':{'id':_0x3701ac['MailAccountId']},'body':_0x4ab844,'log':_0xb83c('0xe6')};return respondWithRpcPromise(_0xb83c('0xe6'),'notifyMail',_0x21b298,client9001)[_0xb83c('0x12')](function(){return _0x13f66;})['catch'](function(_0x5009ed){logger[_0xb83c('0x18')](_0x5009ed);});}return;})['then'](function(){if(_0x13f66){return _0x13f66;}})[_0xb83c('0x12')](respondWithResult(_0x17637d,null))[_0xb83c('0x1c')](function(_0x2b674e){logger['error']('catch',_0x2b674e);for(var _0x2e4f7e of _0x2bc5c7){var _0x147a29=path['join'](config[_0xb83c('0x6b')],_0xb83c('0xd1'),_0xb83c('0xbe'),_0xb83c('0xd2'),'offline-chat',_0x2e4f7e[_0xb83c('0x64')]);fs_extra[_0xb83c('0xe7')](_0x147a29)[_0xb83c('0x1c')](function(_0x1a8330){logger[_0xb83c('0x18')](_0xb83c('0xe8'),_0x147a29,_0x1a8330);});}});};exports[_0xb83c('0xe9')]=function(_0x590d37,_0x48a747){return db['ChatInteraction'][_0xb83c('0x47')]({'where':{'id':_0x590d37[_0xb83c('0x44')]['id']}})[_0xb83c('0x12')](handleEntityNotFound(_0x48a747,null))[_0xb83c('0x12')](function(_0xef494e){if(_0xef494e){return _0xef494e[_0xb83c('0xe9')](_0x590d37[_0xb83c('0x49')][_0xb83c('0x5f')],_[_0xb83c('0xea')](_0x590d37[_0xb83c('0x49')],[_0xb83c('0x5f'),'id'])||{});}})[_0xb83c('0x12')](respondWithResult(_0x48a747,null))[_0xb83c('0x1c')](handleError(_0x48a747,null));};exports[_0xb83c('0xeb')]=function(_0x1b771e,_0xf2dbdb){var _0x549d86={'raw':![],'where':{}};var _0x430318={};var _0x250959={'count':0x0,'rows':[]};return db[_0xb83c('0x2f')][_0xb83c('0x53')]({'where':{'id':_0x1b771e[_0xb83c('0x44')]['id']}})[_0xb83c('0x12')](handleEntityNotFound(_0xf2dbdb,null))[_0xb83c('0x12')](function(_0x493d45){if(_0x493d45){_0x430318[_0xb83c('0x33')]=_[_0xb83c('0x35')](db[_0xb83c('0xa8')][_0xb83c('0x30')]);_0x430318['query']=_[_0xb83c('0x35')](_0x1b771e[_0xb83c('0x34')]);_0x430318[_0xb83c('0x36')]=_[_0xb83c('0x37')](_0x430318[_0xb83c('0x33')],_0x430318[_0xb83c('0x34')]);_0x549d86[_0xb83c('0x39')]=_[_0xb83c('0x37')](_0x430318[_0xb83c('0x33')],qs['fields'](_0x1b771e['query'][_0xb83c('0x38')]));_0x549d86[_0xb83c('0x39')]=_0x549d86[_0xb83c('0x39')][_0xb83c('0x3a')]?_0x549d86['attributes']:_0x430318[_0xb83c('0x33')];if(!_0x1b771e[_0xb83c('0x34')][_0xb83c('0x54')](_0xb83c('0x55'))){_0x549d86[_0xb83c('0x21')]=qs[_0xb83c('0x21')](_0x1b771e['query'][_0xb83c('0x21')]);_0x549d86[_0xb83c('0x20')]=qs[_0xb83c('0x20')](_0x1b771e[_0xb83c('0x34')][_0xb83c('0x20')]);}_0x549d86[_0xb83c('0x3b')]=qs['sort'](_0x1b771e[_0xb83c('0x34')][_0xb83c('0x3c')]);_0x549d86['where']=qs[_0xb83c('0x36')](_[_0xb83c('0x57')](_0x1b771e[_0xb83c('0x34')],_0x430318[_0xb83c('0x36')]));_0x549d86['where'][_0xb83c('0x50')]=_0x493d45['id'];if(_0x1b771e[_0xb83c('0x34')]['filter']){_0x549d86[_0xb83c('0x56')]=_[_0xb83c('0x3e')](_0x549d86['where'],{'$or':_[_0xb83c('0x58')](_0x549d86[_0xb83c('0x39')],function(_0x5ae7b9){var _0x2bb5fa={};_0x2bb5fa[_0x5ae7b9]={'$like':'%'+_0x1b771e[_0xb83c('0x34')]['filter']+'%'};return _0x2bb5fa;})});}_0x549d86=_['merge']({},_0x549d86,_0x1b771e[_0xb83c('0x40')]);return db[_0xb83c('0xa8')][_0xb83c('0x23')]({'where':_0x549d86[_0xb83c('0x56')]})[_0xb83c('0x12')](function(_0x23049c){_0x250959[_0xb83c('0x23')]=_0x23049c;if(_0x1b771e[_0xb83c('0x34')][_0xb83c('0x41')]){_0x549d86[_0xb83c('0x46')]=[{'model':db[_0xb83c('0x97')],'as':_0xb83c('0xec'),'required':![]},{'model':db[_0xb83c('0xb6')],'as':_0xb83c('0xed'),'attributes':[_0xb83c('0x2c'),_0xb83c('0xee'),_0xb83c('0xef')],'required':![]},{'model':db[_0xb83c('0xf0')],'as':_0xb83c('0xf1'),'attributes':['id',_0xb83c('0x2c'),'color'],'where':_0x1b771e[_0xb83c('0x34')][_0xb83c('0xf2')]?{'id':_0x1b771e[_0xb83c('0x34')][_0xb83c('0xf2')]}:undefined,'required':_0x1b771e[_0xb83c('0x34')][_0xb83c('0xf2')]?!![]:![]}];}return db[_0xb83c('0xa8')]['findAll'](_0x549d86);})[_0xb83c('0x12')](function(_0x54dad8){_0x250959[_0xb83c('0x59')]=_0x54dad8;return _0x250959;});}})['then'](respondWithFilteredResult(_0xf2dbdb,_0x549d86))[_0xb83c('0x1c')](handleError(_0xf2dbdb,null));};function iftimePromise(_0xb76612,_0x809f78){return respondWithRpcPromise('Command','getSnippet',{'command':_0x809f78[_0xb83c('0xf3')]?util['format'](_0xb83c('0xf4'),_0xb76612[_0xb83c('0xf5')],_0x809f78['timezone']):util[_0xb83c('0xa5')](_0xb83c('0xf6'),_0xb76612['interval'])},client9002)[_0xb83c('0x12')](function(_0x2c7267){var _0x15325e=_0x2c7267&&_0x2c7267[_0xb83c('0xf7')](_0xb83c('0xf8'))>=0x0?!![]:![];logger[_0xb83c('0x13')](_0xb83c('0xf9'),_0x809f78['id'],_0xb76612['id'],_0xb76612[_0xb83c('0xf5')],_0x15325e?'ONLINE':_0xb83c('0xfa'),_0x809f78[_0xb83c('0xf3')]?_0x809f78[_0xb83c('0xf3')]:_0xb83c('0xfb'));return _0x15325e;})[_0xb83c('0x1c')](function(_0x1f3288){logger[_0xb83c('0x18')]('[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)',_0x809f78['id'],_0xb76612['id'],_0xb76612['interval'],util[_0xb83c('0xfc')](_0x1f3288,{'showHidden':![],'depth':null}),_0x809f78[_0xb83c('0xf3')]?_0x809f78[_0xb83c('0xf3')]:_0xb83c('0xfb'));return![];});}exports[_0xb83c('0xfd')]=function(_0x2186b9,_0x541370){var _0x5e68a9=0x0;var _0x1b03de=0x0;var _0x790f22=![];var _0x1b91ca;var _0x179b39;return db['ChatWebsite'][_0xb83c('0x47')]({'where':{'id':_0x2186b9[_0xb83c('0x44')]['id']},'include':[{'model':db['Interval'],'as':_0xb83c('0xfe'),'include':[{'model':db[_0xb83c('0xfe')],'as':_0xb83c('0xff'),'attributes':['id','interval'],'raw':!![]}]}]})['then'](handleEntityNotFound(_0x541370,null))[_0xb83c('0x12')](function(_0x57d7a4){if(_0x57d7a4){_0x1b91ca=_0x57d7a4;return _0x57d7a4[_0xb83c('0x100')]({'raw':!![]});}})[_0xb83c('0x12')](function(_0x8f63c2){if(_0x1b91ca){if(_0x8f63c2){_0x179b39=_0x8f63c2;}}return require(_0xb83c('0x6d'))[_0xb83c('0x6e')]();})[_0xb83c('0x12')](function(_0x33f919){if(_0x33f919){_0x1b03de=_0x33f919[_0xb83c('0x101')];_0x790f22=_0x33f919[_0xb83c('0x6f')];}})[_0xb83c('0x12')](function(){return db[_0xb83c('0xa8')][_0xb83c('0x23')]({'where':{'closed':![]}});})[_0xb83c('0x12')](function(_0x251d1c){_0x5e68a9=_0x251d1c;if(_0x1b03de&&_0x251d1c>_0x1b03de){return db['License']['findOne']({'where':{'id':0x1}})['then'](function(_0x45b60c){if(_0x45b60c){_0x45b60c[_0xb83c('0x102')](_0xb83c('0x103'));}});}})['then'](function(){if(_0x1b91ca[_0xb83c('0xfe')]&&_0x1b91ca[_0xb83c('0xfe')]['Intervals']){var _0x223b97=[];for(var _0xb53c6b=0x0;_0xb53c6b<_0x1b91ca['Interval'][_0xb83c('0xff')][_0xb83c('0x3a')];_0xb53c6b++){var _0x5bc2d3=_0x1b91ca['Interval'][_0xb83c('0xff')][_0xb53c6b]['get']({'plain':!![]});_0x223b97[_0xb83c('0x104')](iftimePromise(_0x5bc2d3,_0x1b91ca));}return BPromise['all'](_0x223b97)['then'](function(_0xbfc225){return _['some'](_0xbfc225);});}else{return!![];}})['then'](function(_0x39d780){var _0x46bccd=fs[_0xb83c('0xc7')](path[_0xb83c('0x6a')](config[_0xb83c('0x6b')],_0xb83c('0x105')),_0xb83c('0xc9'));var _0x1eca1b={'remote':_0x1b91ca[_0xb83c('0x106')],'query':querystring[_0xb83c('0x17')](_[_0xb83c('0x3e')](_0x1b91ca[_0xb83c('0x26')]({'plain':!![]}),{'customerIp':_0x2186b9[_0xb83c('0x99')][_0xb83c('0x9b')]||_0x2186b9[_0xb83c('0x99')][_0xb83c('0x107')]||_0x2186b9[_0xb83c('0x108')][_0xb83c('0x109')]||_0x2186b9['ip'],'referer':_0x2186b9['headers']['referer'],'openedInteractions':_0x5e68a9,'maxInteractions':_0x1b03de,'virtual':_0x790f22[_0xb83c('0x101')],'online':_0x39d780,'custom':_0x790f22}))[_0xb83c('0x10a')](/'/g,'\x5c\x27')};_0x541370[_0xb83c('0x2d')](ejs[_0xb83c('0xca')](Mustache[_0xb83c('0xca')](_0x46bccd,_0x1eca1b),{'proactiveActions':_0x179b39,'alignment':_0x1b91ca[_0xb83c('0x10b')],'verticalAlignment':_0x1b91ca['verticalAlignment'],'div_color':_0x1b91ca['color'],'labelText':_0x1b91ca[_0xb83c('0x10c')],'text_color':_0x1b91ca['textColor'],'text_button_color':_0x1b91ca['textButtonColor'],'button_color':_0x1b91ca[_0xb83c('0x10d')],'background_color':_0x1b91ca[_0xb83c('0x10e')],'hideWhenOffline':_0x1b91ca[_0xb83c('0x10f')],'interval':_0x1b91ca['IntervalId']}));})[_0xb83c('0x1c')](handleError(_0x541370,null));};exports['addApplications']=function(_0x21b8ae,_0xd4c9d9){var _0x1ac89f=_0x21b8ae[_0xb83c('0x44')]['id'];var _0x1c5f94=_0x21b8ae[_0xb83c('0x49')];var _0xd43379=0xc8;var _0x33b14f=null;return db[_0xb83c('0xd6')]['transaction']({'isolationLevel':db[_0xb83c('0xd6')][_0xb83c('0x110')][_0xb83c('0x111')]['READ_COMMITTED']},function(_0x260cab){return db['ChatWebsite'][_0xb83c('0x53')]({'where':{'id':_0x1ac89f},'transaction':_0x260cab})[_0xb83c('0x12')](function(_0x5b1a9a){if(_0x5b1a9a){return db[_0xb83c('0x91')][_0xb83c('0x29')]({'where':{'ChatWebsiteId':_0x1ac89f},'transaction':_0x260cab})[_0xb83c('0x12')](function(){var _0x5b8fb1=_['map'](_0x1c5f94,function(_0x158303){_0x158303[_0xb83c('0x50')]=_0x1ac89f;return _0x158303;});return db[_0xb83c('0x91')][_0xb83c('0xd9')](_0x5b8fb1,{'transaction':_0x260cab});});}else{_0xd43379=0x194;_0x33b14f=[];}});})[_0xb83c('0x12')](function(){if(_0xd43379!==0x194){return db[_0xb83c('0x91')][_0xb83c('0x112')]({'where':{'ChatWebsiteId':_0x1ac89f},'order':_0xb83c('0x96')})[_0xb83c('0x12')](function(_0x1b1b4d){_0x33b14f=_0x1b1b4d;});}})[_0xb83c('0x1c')](function(_0x397a6d){_0xd43379=0x1f4;logger[_0xb83c('0x18')](_0x397a6d['stack']);if(_0x397a6d[_0xb83c('0x2c')]){delete _0x397a6d[_0xb83c('0x2c')];}_0x33b14f=_0x397a6d;})[_0xb83c('0x113')](function(){if(_0x33b14f===null){_0xd4c9d9[_0xb83c('0x2a')](_0xd43379);}else{if(_0xd43379===0x1f4){_0xd4c9d9[_0xb83c('0x1d')](_0xd43379)[_0xb83c('0x2d')](_0x33b14f);}else{_0xd4c9d9['status'](_0xd43379)['json'](_0x33b14f);}}});};exports[_0xb83c('0x114')]=function(_0x4a0236,_0x40fe28){var _0x294d85={};var _0x4e277c={};var _0x39efb8;var _0x155632;return db[_0xb83c('0x2f')][_0xb83c('0x53')]({'where':{'id':_0x4a0236['params']['id']}})['then'](handleEntityNotFound(_0x40fe28,null))[_0xb83c('0x12')](function(_0x5bf7c4){if(_0x5bf7c4){_0x39efb8=_0x5bf7c4;_0x4e277c['model']=_['keys'](db[_0xb83c('0x91')]['rawAttributes']);_0x4e277c[_0xb83c('0x34')]=_[_0xb83c('0x35')](_0x4a0236[_0xb83c('0x34')]);_0x4e277c[_0xb83c('0x36')]=_['intersection'](_0x4e277c[_0xb83c('0x33')],_0x4e277c[_0xb83c('0x34')]);_0x294d85['attributes']=_[_0xb83c('0x37')](_0x4e277c[_0xb83c('0x33')],qs[_0xb83c('0x38')](_0x4a0236[_0xb83c('0x34')]['fields']));_0x294d85[_0xb83c('0x39')]=_0x294d85['attributes'][_0xb83c('0x3a')]?_0x294d85[_0xb83c('0x39')]:_0x4e277c[_0xb83c('0x33')];_0x294d85['order']=qs[_0xb83c('0x3c')](_0x4a0236['query'][_0xb83c('0x3c')]);_0x294d85['where']=qs[_0xb83c('0x36')](_[_0xb83c('0x57')](_0x4a0236['query'],_0x4e277c[_0xb83c('0x36')]));if(_0x4a0236[_0xb83c('0x34')][_0xb83c('0x3d')]){_0x294d85[_0xb83c('0x56')]=_[_0xb83c('0x3e')](_0x294d85[_0xb83c('0x56')],{'$or':_[_0xb83c('0x58')](_0x294d85[_0xb83c('0x39')],function(_0xf64eea){var _0xcac9f2={};_0xcac9f2[_0xf64eea]={'$like':'%'+_0x4a0236[_0xb83c('0x34')][_0xb83c('0x3d')]+'%'};return _0xcac9f2;})});}_0x294d85=_[_0xb83c('0x3e')]({},_0x294d85,_0x4a0236[_0xb83c('0x40')]);return _0x39efb8[_0xb83c('0x114')](_0x294d85);}})[_0xb83c('0x12')](function(_0x5c3c3f){if(_0x5c3c3f){_0x155632=_0x5c3c3f[_0xb83c('0x3a')];if(!_0x4a0236[_0xb83c('0x34')][_0xb83c('0x54')](_0xb83c('0x55'))){_0x294d85['limit']=qs['limit'](_0x4a0236[_0xb83c('0x34')][_0xb83c('0x21')]);_0x294d85[_0xb83c('0x20')]=qs['offset'](_0x4a0236[_0xb83c('0x34')]['offset']);}return _0x39efb8[_0xb83c('0x114')](_0x294d85);}})[_0xb83c('0x12')](function(_0x5b960e){if(_0x5b960e){return _0x5b960e?{'count':_0x155632,'rows':_0x5b960e}:null;}})['then'](respondWithResult(_0x40fe28,null))[_0xb83c('0x1c')](handleError(_0x40fe28,null));};exports[_0xb83c('0x115')]=function(_0x452e33,_0x2a7dfd){return db[_0xb83c('0x116')][_0xb83c('0x47')]({'where':{'id':_0x452e33[_0xb83c('0x44')]['id']}})[_0xb83c('0x12')](handleEntityNotFound(_0x2a7dfd,null))[_0xb83c('0x12')](function(_0x37a4a1){if(_0x37a4a1){return _0x37a4a1['addProactiveActions'](_0x452e33[_0xb83c('0x49')]['ids'],_[_0xb83c('0xea')](_0x452e33['body'],[_0xb83c('0x5f'),'id'])||{});}})[_0xb83c('0x12')](respondWithResult(_0x2a7dfd,null))['catch'](handleError(_0x2a7dfd,null));};exports[_0xb83c('0x100')]=function(_0x12cf20,_0x46981b){var _0xd394d1={};var _0x13bcdc={};var _0x1eace3;var _0x3207d5;return db[_0xb83c('0x2f')][_0xb83c('0x53')]({'where':{'id':_0x12cf20[_0xb83c('0x44')]['id']}})[_0xb83c('0x12')](handleEntityNotFound(_0x46981b,null))[_0xb83c('0x12')](function(_0x177299){if(_0x177299){_0x1eace3=_0x177299;_0x13bcdc['model']=_[_0xb83c('0x35')](db[_0xb83c('0x117')][_0xb83c('0x30')]);_0x13bcdc['query']=_[_0xb83c('0x35')](_0x12cf20[_0xb83c('0x34')]);_0x13bcdc[_0xb83c('0x36')]=_[_0xb83c('0x37')](_0x13bcdc[_0xb83c('0x33')],_0x13bcdc[_0xb83c('0x34')]);_0xd394d1[_0xb83c('0x39')]=_[_0xb83c('0x37')](_0x13bcdc[_0xb83c('0x33')],qs[_0xb83c('0x38')](_0x12cf20[_0xb83c('0x34')]['fields']));_0xd394d1[_0xb83c('0x39')]=_0xd394d1['attributes']['length']?_0xd394d1[_0xb83c('0x39')]:_0x13bcdc[_0xb83c('0x33')];_0xd394d1[_0xb83c('0x3b')]=qs['sort'](_0x12cf20[_0xb83c('0x34')][_0xb83c('0x3c')]);_0xd394d1[_0xb83c('0x56')]=qs[_0xb83c('0x36')](_[_0xb83c('0x57')](_0x12cf20[_0xb83c('0x34')],_0x13bcdc['filters']));if(_0x12cf20[_0xb83c('0x34')][_0xb83c('0x3d')]){_0xd394d1[_0xb83c('0x56')]=_[_0xb83c('0x3e')](_0xd394d1[_0xb83c('0x56')],{'$or':_['map'](_0xd394d1[_0xb83c('0x39')],function(_0x338a5e){var _0x3dd2b5={};_0x3dd2b5[_0x338a5e]={'$like':'%'+_0x12cf20['query'][_0xb83c('0x3d')]+'%'};return _0x3dd2b5;})});}_0xd394d1=_[_0xb83c('0x3e')]({},_0xd394d1,_0x12cf20[_0xb83c('0x40')]);return _0x1eace3[_0xb83c('0x100')](_0xd394d1);}})[_0xb83c('0x12')](function(_0x2a6068){if(_0x2a6068){_0x3207d5=_0x2a6068[_0xb83c('0x3a')];if(!_0x12cf20[_0xb83c('0x34')][_0xb83c('0x54')](_0xb83c('0x55'))){_0xd394d1[_0xb83c('0x21')]=qs['limit'](_0x12cf20['query'][_0xb83c('0x21')]);_0xd394d1['offset']=qs['offset'](_0x12cf20[_0xb83c('0x34')][_0xb83c('0x20')]);}return _0x1eace3[_0xb83c('0x100')](_0xd394d1);}})['then'](function(_0x2110b3){if(_0x2110b3){return _0x2110b3?{'count':_0x3207d5,'rows':_0x2110b3}:null;}})[_0xb83c('0x12')](respondWithResult(_0x46981b,null))['catch'](handleError(_0x46981b,null));};exports[_0xb83c('0x118')]=function(_0x15dd01,_0x517f17){var _0x562dd8=_0x15dd01['query'][_0xb83c('0x119')]===_0xb83c('0x11a')?'offlineForm':_0xb83c('0x11b');return db[_0xb83c('0x2f')]['find']({'attributes':['id',_0x562dd8],'where':{'id':_0x15dd01[_0xb83c('0x44')]['id']}})[_0xb83c('0x12')](handleEntityNotFound(_0x517f17,null))['then'](function(_0x37b3b9){if(_0x37b3b9){var _0x58e037=_0x37b3b9[_0x562dd8];var _0x278aa9=_0x58e037&&_0x58e037['items']?_0x58e037['items']:[];_0x517f17['send']({'fromKey':_['isNil'](_0x58e037[_0xb83c('0x11c')])?undefined:_0x58e037[_0xb83c('0x11c')],'count':_0x278aa9[_0xb83c('0x3a')],'rows':_0x278aa9});}})['catch'](handleError(_0x517f17,null));};exports[_0xb83c('0x11d')]=function(_0x334c70,_0x2bc84c){var _0x5ee489={'raw':![],'where':{}};var _0x2408a5={};var _0x3b980d={'count':0x0,'rows':[]};return db[_0xb83c('0x2f')][_0xb83c('0x53')]({'where':{'id':_0x334c70[_0xb83c('0x44')]['id']}})[_0xb83c('0x12')](handleEntityNotFound(_0x2bc84c,null))[_0xb83c('0x12')](function(_0x4766a9){if(_0x4766a9){_0x2408a5[_0xb83c('0x33')]=_[_0xb83c('0x35')](db[_0xb83c('0xcd')][_0xb83c('0x30')]);_0x2408a5[_0xb83c('0x34')]=_[_0xb83c('0x35')](_0x334c70[_0xb83c('0x34')]);_0x2408a5[_0xb83c('0x36')]=_[_0xb83c('0x37')](_0x2408a5[_0xb83c('0x33')],_0x2408a5[_0xb83c('0x34')]);_0x5ee489[_0xb83c('0x39')]=_[_0xb83c('0x37')](_0x2408a5[_0xb83c('0x33')],qs[_0xb83c('0x38')](_0x334c70[_0xb83c('0x34')][_0xb83c('0x38')]));_0x5ee489['attributes']=_0x5ee489[_0xb83c('0x39')][_0xb83c('0x3a')]?_0x5ee489[_0xb83c('0x39')]:_0x2408a5['model'];if(!_0x334c70[_0xb83c('0x34')][_0xb83c('0x54')]('nolimit')){_0x5ee489[_0xb83c('0x21')]=qs['limit'](_0x334c70[_0xb83c('0x34')]['limit']);_0x5ee489[_0xb83c('0x20')]=qs[_0xb83c('0x20')](_0x334c70[_0xb83c('0x34')][_0xb83c('0x20')]);}_0x5ee489[_0xb83c('0x3b')]=qs[_0xb83c('0x3c')](_0x334c70[_0xb83c('0x34')][_0xb83c('0x3c')]);_0x5ee489['where']=qs[_0xb83c('0x36')](_[_0xb83c('0x57')](_0x334c70[_0xb83c('0x34')],_0x2408a5[_0xb83c('0x36')]));_0x5ee489['where'][_0xb83c('0x50')]=_0x4766a9['id'];if(_0x334c70[_0xb83c('0x34')][_0xb83c('0x3d')]){_0x5ee489[_0xb83c('0x56')]=_[_0xb83c('0x3e')](_0x5ee489[_0xb83c('0x56')],{'$or':_[_0xb83c('0x58')](_0x5ee489[_0xb83c('0x39')],function(_0x118782){var _0x225246={};_0x225246[_0x118782]={'$like':'%'+_0x334c70[_0xb83c('0x34')]['filter']+'%'};return _0x225246;})});}_0x5ee489=_['merge']({},_0x5ee489,_0x334c70[_0xb83c('0x40')]);return db[_0xb83c('0xcd')][_0xb83c('0x23')]({'where':_0x5ee489[_0xb83c('0x56')]})[_0xb83c('0x12')](function(_0x5e9f24){_0x3b980d[_0xb83c('0x23')]=_0x5e9f24;if(_0x334c70['query'][_0xb83c('0x41')]){_0x5ee489['include']=[{'all':!![]}];}else{_0x5ee489[_0xb83c('0x46')]=[{'model':db['CmContact'],'as':_0xb83c('0xec'),'required':![]},{'model':db[_0xb83c('0xd8')],'as':'Attachments','required':![]}];}return db[_0xb83c('0xcd')]['findAll'](_0x5ee489);})[_0xb83c('0x12')](function(_0x4006f1){_0x3b980d[_0xb83c('0x59')]=_0x4006f1;return _0x3b980d;});}})[_0xb83c('0x12')](respondWithFilteredResult(_0x2bc84c,_0x5ee489))[_0xb83c('0x1c')](handleError(_0x2bc84c,null));};exports[_0xb83c('0x11e')]=function(_0x2d54e7,_0x61afb2){return db[_0xb83c('0x2f')]['find']({'where':{'id':_0x2d54e7[_0xb83c('0x44')]['id']}})[_0xb83c('0x12')](handleEntityNotFound(_0x61afb2,null))['then'](function(_0x2a6dc3){if(_0x2a6dc3){return _0x2a6dc3[_0xb83c('0x11e')](_0x2d54e7[_0xb83c('0x49')][_0xb83c('0x5f')],_['omit'](_0x2d54e7[_0xb83c('0x49')],[_0xb83c('0x5f'),'id'])||{})[_0xb83c('0xc6')](function(_0x5e2b63){for(var _0x55a9b9=0x0;_0x55a9b9<_0x2d54e7['body'][_0xb83c('0x5f')][_0xb83c('0x3a')];_0x55a9b9+=0x1){socket[_0xb83c('0x11f')](_0xb83c('0x120'),{'UserId':Number(_0x2d54e7[_0xb83c('0x49')]['ids'][_0x55a9b9]),'ChatWebsiteId':Number(_0x2d54e7[_0xb83c('0x44')]['id'])});}return _0x5e2b63;});}})[_0xb83c('0x12')](respondWithResult(_0x61afb2,null))[_0xb83c('0x1c')](handleError(_0x61afb2,null));};exports[_0xb83c('0x121')]=function(_0x66a85c,_0x10779c){return db[_0xb83c('0x2f')][_0xb83c('0x47')]({'where':{'id':_0x66a85c[_0xb83c('0x44')]['id']}})[_0xb83c('0x12')](handleEntityNotFound(_0x10779c,null))[_0xb83c('0x12')](function(_0x2f0ced){if(_0x2f0ced){return _0x2f0ced[_0xb83c('0x121')](_0x66a85c[_0xb83c('0x34')][_0xb83c('0x5f')])[_0xb83c('0x12')](function(){if(_['isArray'](_0x66a85c['query'][_0xb83c('0x5f')])){for(var _0x4d3c09=0x0;_0x4d3c09<_0x66a85c[_0xb83c('0x34')][_0xb83c('0x5f')]['length'];_0x4d3c09+=0x1){socket[_0xb83c('0x11f')](_0xb83c('0x122'),{'UserId':Number(_0x66a85c['query'][_0xb83c('0x5f')][_0x4d3c09]),'ChatWebsiteId':Number(_0x66a85c[_0xb83c('0x44')]['id'])});}}else{socket[_0xb83c('0x11f')]('userChatWebsite:remove',{'UserId':Number(_0x66a85c['query'][_0xb83c('0x5f')]),'ChatWebsiteId':Number(_0x66a85c[_0xb83c('0x44')]['id'])});}});}})['then'](respondWithStatusCode(_0x10779c,null))[_0xb83c('0x1c')](handleError(_0x10779c,null));};exports['getAgents']=function(_0x4ecb13,_0x2c02cc){var _0xdab755={};var _0x320261={};var _0x3b5f7c;var _0x347e11;return db[_0xb83c('0x2f')][_0xb83c('0x53')]({'where':{'id':_0x4ecb13[_0xb83c('0x44')]['id']}})['then'](handleEntityNotFound(_0x2c02cc,null))['then'](function(_0x188795){if(_0x188795){_0x3b5f7c=_0x188795;_0x320261[_0xb83c('0x33')]=_[_0xb83c('0x35')](db['User']['rawAttributes']);_0x320261[_0xb83c('0x34')]=_[_0xb83c('0x35')](_0x4ecb13[_0xb83c('0x34')]);_0x320261[_0xb83c('0x36')]=_[_0xb83c('0x37')](_0x320261[_0xb83c('0x33')],_0x320261[_0xb83c('0x34')]);_0xdab755[_0xb83c('0x39')]=_[_0xb83c('0x37')](_0x320261[_0xb83c('0x33')],qs[_0xb83c('0x38')](_0x4ecb13[_0xb83c('0x34')][_0xb83c('0x38')]));_0xdab755[_0xb83c('0x39')]=_0xdab755[_0xb83c('0x39')][_0xb83c('0x3a')]?_0xdab755[_0xb83c('0x39')]:_0x320261[_0xb83c('0x33')];_0xdab755['order']=qs['sort'](_0x4ecb13[_0xb83c('0x34')][_0xb83c('0x3c')]);_0xdab755['where']=qs[_0xb83c('0x36')](_[_0xb83c('0x57')](_0x4ecb13[_0xb83c('0x34')],_0x320261['filters']));if(_0x4ecb13[_0xb83c('0x34')]['filter']){_0xdab755[_0xb83c('0x56')]=_[_0xb83c('0x3e')](_0xdab755['where'],{'$or':_[_0xb83c('0x58')](_0xdab755[_0xb83c('0x39')],function(_0x347c59){var _0x3a38d5={};_0x3a38d5[_0x347c59]={'$like':'%'+_0x4ecb13['query'][_0xb83c('0x3d')]+'%'};return _0x3a38d5;})});}_0xdab755=_['merge']({},_0xdab755,_0x4ecb13['options']);return _0x3b5f7c[_0xb83c('0x123')](_0xdab755);}})[_0xb83c('0x12')](function(_0x414403){if(_0x414403){_0x347e11=_0x414403[_0xb83c('0x3a')];if(!_0x4ecb13['query']['hasOwnProperty'](_0xb83c('0x55'))){_0xdab755[_0xb83c('0x21')]=qs[_0xb83c('0x21')](_0x4ecb13[_0xb83c('0x34')][_0xb83c('0x21')]);_0xdab755[_0xb83c('0x20')]=qs[_0xb83c('0x20')](_0x4ecb13[_0xb83c('0x34')][_0xb83c('0x20')]);}return _0x3b5f7c[_0xb83c('0x123')](_0xdab755);}})[_0xb83c('0x12')](function(_0x412a79){if(_0x412a79){return _0x412a79?{'count':_0x347e11,'rows':_0x412a79}:null;}})[_0xb83c('0x12')](respondWithResult(_0x2c02cc,null))[_0xb83c('0x1c')](handleError(_0x2c02cc,null));};
\ No newline at end of file
index 4228063..0733357 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe77f=['save','remove','emit','hasOwnProperty','events','../../mysqldb','setMaxListeners'];(function(_0x2010b8,_0x4de5d1){var _0x96a8cb=function(_0x1af514){while(--_0x1af514){_0x2010b8['push'](_0x2010b8['shift']());}};_0x96a8cb(++_0x4de5d1);}(_0xe77f,0xba));var _0xfe77=function(_0x484ff3,_0x12d944){_0x484ff3=_0x484ff3-0x0;var _0x5c00c3=_0xe77f[_0x484ff3];return _0x5c00c3;};'use strict';var EventEmitter=require(_0xfe77('0x0'));var ChatWebsite=require(_0xfe77('0x1'))['db']['ChatWebsite'];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0xfe77('0x2')](0x0);var events={'afterCreate':_0xfe77('0x3'),'afterUpdate':'update','afterDestroy':_0xfe77('0x4')};function emitEvent(_0xd99b0d){return function(_0x55a414,_0x150fc9,_0x406c8b){ChatWebsiteEvents[_0xfe77('0x5')](_0xd99b0d+':'+_0x55a414['id'],_0x55a414);ChatWebsiteEvents[_0xfe77('0x5')](_0xd99b0d,_0x55a414);_0x406c8b(null);};}for(var e in events){if(events[_0xfe77('0x6')](e)){var event=events[e];ChatWebsite['hook'](e,emitEvent(event));}}module['exports']=ChatWebsiteEvents;
\ No newline at end of file
+var _0x1928=['hook','exports','events','../../mysqldb','ChatWebsite','save','update','remove','emit','hasOwnProperty'];(function(_0x2b4411,_0x2625ed){var _0x8e41ef=function(_0x2aa8c1){while(--_0x2aa8c1){_0x2b4411['push'](_0x2b4411['shift']());}};_0x8e41ef(++_0x2625ed);}(_0x1928,0x138));var _0x8192=function(_0x628a6c,_0x22487b){_0x628a6c=_0x628a6c-0x0;var _0xcd3511=_0x1928[_0x628a6c];return _0xcd3511;};'use strict';var EventEmitter=require(_0x8192('0x0'));var ChatWebsite=require(_0x8192('0x1'))['db'][_0x8192('0x2')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x8192('0x3'),'afterUpdate':_0x8192('0x4'),'afterDestroy':_0x8192('0x5')};function emitEvent(_0x1a193a){return function(_0x16f410,_0x11fa71,_0x11c753){ChatWebsiteEvents[_0x8192('0x6')](_0x1a193a+':'+_0x16f410['id'],_0x16f410);ChatWebsiteEvents[_0x8192('0x6')](_0x1a193a,_0x16f410);_0x11c753(null);};}for(var e in events){if(events[_0x8192('0x7')](e)){var event=events[e];ChatWebsite[_0x8192('0x8')](e,emitEvent(event));}}module[_0x8192('0x9')]=ChatWebsiteEvents;
\ No newline at end of file
index 3dd4715..0c04eb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd61e=['moment','bluebird','request-promise','path','rimraf','./chatWebsite.attributes','define','ChatWebsite','chat_websites','lodash','util','../../config/logger','api'];(function(_0xefd519,_0xc62635){var _0x4bb882=function(_0x37e0a1){while(--_0x37e0a1){_0xefd519['push'](_0xefd519['shift']());}};_0x4bb882(++_0xc62635);}(_0xd61e,0x19c));var _0xed61=function(_0x2cfd8f,_0xaad2bd){_0x2cfd8f=_0x2cfd8f-0x0;var _0x46a0e8=_0xd61e[_0x2cfd8f];return _0x46a0e8;};'use strict';var _=require(_0xed61('0x0'));var util=require(_0xed61('0x1'));var logger=require(_0xed61('0x2'))(_0xed61('0x3'));var moment=require(_0xed61('0x4'));var BPromise=require(_0xed61('0x5'));var rp=require(_0xed61('0x6'));var fs=require('fs');var path=require(_0xed61('0x7'));var rimraf=require(_0xed61('0x8'));var config=require('../../config/environment');var attributes=require(_0xed61('0x9'));module['exports']=function(_0x31e5a6,_0x11cb69){return _0x31e5a6[_0xed61('0xa')](_0xed61('0xb'),attributes,{'tableName':_0xed61('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x413d=['moment','bluebird','request-promise','path','rimraf','ChatWebsite','chat_websites','lodash','util','../../config/logger'];(function(_0x3ed5ab,_0x3791b2){var _0x5cae7a=function(_0x43f208){while(--_0x43f208){_0x3ed5ab['push'](_0x3ed5ab['shift']());}};_0x5cae7a(++_0x3791b2);}(_0x413d,0xed));var _0xd413=function(_0x68ee8b,_0x3cc6c5){_0x68ee8b=_0x68ee8b-0x0;var _0x5148f7=_0x413d[_0x68ee8b];return _0x5148f7;};'use strict';var _=require(_0xd413('0x0'));var util=require(_0xd413('0x1'));var logger=require(_0xd413('0x2'))('api');var moment=require(_0xd413('0x3'));var BPromise=require(_0xd413('0x4'));var rp=require(_0xd413('0x5'));var fs=require('fs');var path=require(_0xd413('0x6'));var rimraf=require(_0xd413('0x7'));var config=require('../../config/environment');var attributes=require('./chatWebsite.attributes');module['exports']=function(_0x180233,_0x330853){return _0x180233['define'](_0xd413('0x8'),attributes,{'tableName':_0xd413('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 75b811e..4f3febb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6fd1=['randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','http','redis','defaults','localhost','socket.io-emitter','./chatWebsite.socket','register','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','moment','bluebird'];(function(_0x1ad96a,_0xab1aee){var _0x11256f=function(_0x94305a){while(--_0x94305a){_0x1ad96a['push'](_0x1ad96a['shift']());}};_0x11256f(++_0xab1aee);}(_0x6fd1,0x7f));var _0x16fd=function(_0x1ae518,_0x23a449){_0x1ae518=_0x1ae518-0x0;var _0x35b832=_0x6fd1[_0x1ae518];return _0x35b832;};'use strict';var _=require(_0x16fd('0x0'));var util=require('util');var moment=require(_0x16fd('0x1'));var BPromise=require(_0x16fd('0x2'));var rs=require(_0x16fd('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x16fd('0x4'));var logger=require(_0x16fd('0x5'))(_0x16fd('0x6'));var config=require(_0x16fd('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x16fd('0x8')]({'port':0x232a});config[_0x16fd('0x9')]=_[_0x16fd('0xa')](config[_0x16fd('0x9')],{'host':_0x16fd('0xb'),'port':0x18eb});var socket=require(_0x16fd('0xc'))(new Redis(config[_0x16fd('0x9')]));require(_0x16fd('0xd'))[_0x16fd('0xe')](socket);function respondWithRpcPromise(_0x346805,_0x2a929d,_0x59ead2){return new BPromise(function(_0x301cad,_0x386f40){return client['request'](_0x346805,_0x59ead2)[_0x16fd('0xf')](function(_0x52a84b){logger[_0x16fd('0x10')](_0x16fd('0x11'),_0x2a929d,_0x16fd('0x12'));logger[_0x16fd('0x13')](_0x16fd('0x14'),_0x2a929d,_0x16fd('0x12'),JSON[_0x16fd('0x15')](_0x52a84b));if(_0x52a84b[_0x16fd('0x16')]){if(_0x52a84b[_0x16fd('0x16')][_0x16fd('0x17')]===0x1f4){logger[_0x16fd('0x16')](_0x16fd('0x11'),_0x2a929d,_0x52a84b[_0x16fd('0x16')][_0x16fd('0x18')]);return _0x386f40(_0x52a84b[_0x16fd('0x16')][_0x16fd('0x18')]);}logger['error']('ChatWebsite,\x20%s,\x20%s',_0x2a929d,_0x52a84b[_0x16fd('0x16')]['message']);return _0x301cad(_0x52a84b['error'][_0x16fd('0x18')]);}else{logger[_0x16fd('0x10')](_0x16fd('0x11'),_0x2a929d,'request\x20sent');_0x301cad(_0x52a84b[_0x16fd('0x19')]['message']);}})['catch'](function(_0x4b1799){logger[_0x16fd('0x16')]('ChatWebsite,\x20%s,\x20%s',_0x2a929d,_0x4b1799);_0x386f40(_0x4b1799);});});}
\ No newline at end of file
+var _0x1648=['../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./chatWebsite.socket','register','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils'];(function(_0x41c2fe,_0x834052){var _0xa49bd2=function(_0x17d07){while(--_0x17d07){_0x41c2fe['push'](_0x41c2fe['shift']());}};_0xa49bd2(++_0x834052);}(_0x1648,0xa7));var _0x8164=function(_0x574f48,_0x196872){_0x574f48=_0x574f48-0x0;var _0x5d072f=_0x1648[_0x574f48];return _0x5d072f;};'use strict';var _=require(_0x8164('0x0'));var util=require(_0x8164('0x1'));var moment=require(_0x8164('0x2'));var BPromise=require(_0x8164('0x3'));var rs=require(_0x8164('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8164('0x5'))['db'];var utils=require(_0x8164('0x6'));var logger=require(_0x8164('0x7'))('rpc');var config=require(_0x8164('0x8'));var jayson=require(_0x8164('0x9'));var client=jayson[_0x8164('0xa')][_0x8164('0xb')]({'port':0x232a});config[_0x8164('0xc')]=_[_0x8164('0xd')](config[_0x8164('0xc')],{'host':_0x8164('0xe'),'port':0x18eb});var socket=require(_0x8164('0xf'))(new Redis(config[_0x8164('0xc')]));require(_0x8164('0x10'))[_0x8164('0x11')](socket);function respondWithRpcPromise(_0x3f1d7e,_0x175f37,_0x329a49){return new BPromise(function(_0x12ba73,_0x29fd9c){return client['request'](_0x3f1d7e,_0x329a49)[_0x8164('0x12')](function(_0x284b40){logger[_0x8164('0x13')](_0x8164('0x14'),_0x175f37,_0x8164('0x15'));logger[_0x8164('0x16')](_0x8164('0x17'),_0x175f37,_0x8164('0x15'),JSON[_0x8164('0x18')](_0x284b40));if(_0x284b40[_0x8164('0x19')]){if(_0x284b40[_0x8164('0x19')]['code']===0x1f4){logger[_0x8164('0x19')](_0x8164('0x14'),_0x175f37,_0x284b40[_0x8164('0x19')][_0x8164('0x1a')]);return _0x29fd9c(_0x284b40[_0x8164('0x19')][_0x8164('0x1a')]);}logger['error']('ChatWebsite,\x20%s,\x20%s',_0x175f37,_0x284b40[_0x8164('0x19')][_0x8164('0x1a')]);return _0x12ba73(_0x284b40[_0x8164('0x19')]['message']);}else{logger[_0x8164('0x13')](_0x8164('0x14'),_0x175f37,_0x8164('0x15'));_0x12ba73(_0x284b40[_0x8164('0x1b')]['message']);}})[_0x8164('0x1c')](function(_0x2b22ab){logger['error'](_0x8164('0x14'),_0x175f37,_0x2b22ab);_0x29fd9c(_0x2b22ab);});});}
\ No newline at end of file
index 7b84016..360f0b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5327=['./chatWebsite.events','save','remove','update','emit','removeListener','register','length'];(function(_0x4fa2a8,_0x101755){var _0x57ce12=function(_0x3f4c93){while(--_0x3f4c93){_0x4fa2a8['push'](_0x4fa2a8['shift']());}};_0x57ce12(++_0x101755);}(_0x5327,0x100));var _0x7532=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5327[_0x3dd15e];return _0x231fd0;};'use strict';var ChatWebsiteEvents=require(_0x7532('0x0'));var events=[_0x7532('0x1'),_0x7532('0x2'),_0x7532('0x3')];function createListener(_0x342c83,_0x245a34){return function(_0x2e6132){_0x245a34[_0x7532('0x4')](_0x342c83,_0x2e6132);};}function removeListener(_0xd65e48,_0x37c7a9){return function(){ChatWebsiteEvents[_0x7532('0x5')](_0xd65e48,_0x37c7a9);};}exports[_0x7532('0x6')]=function(_0x480e36){for(var _0x2ddc08=0x0,_0x42de0d=events[_0x7532('0x7')];_0x2ddc08<_0x42de0d;_0x2ddc08++){var _0x516626=events[_0x2ddc08];var _0x398173=createListener('chatWebsite:'+_0x516626,_0x480e36);ChatWebsiteEvents['on'](_0x516626,_0x398173);}};
\ No newline at end of file
+var _0xf822=['length','chatWebsite:','./chatWebsite.events','save','update'];(function(_0x349c67,_0x4d0787){var _0x1511ec=function(_0x153e76){while(--_0x153e76){_0x349c67['push'](_0x349c67['shift']());}};_0x1511ec(++_0x4d0787);}(_0xf822,0xb6));var _0x2f82=function(_0x452564,_0x54eb08){_0x452564=_0x452564-0x0;var _0x2775a0=_0xf822[_0x452564];return _0x2775a0;};'use strict';var ChatWebsiteEvents=require(_0x2f82('0x0'));var events=[_0x2f82('0x1'),'remove',_0x2f82('0x2')];function createListener(_0x5d522e,_0x2d1fdd){return function(_0x268eb1){_0x2d1fdd['emit'](_0x5d522e,_0x268eb1);};}function removeListener(_0x32935c,_0x57f211){return function(){ChatWebsiteEvents['removeListener'](_0x32935c,_0x57f211);};}exports['register']=function(_0x30ed64){for(var _0x1880c7=0x0,_0x1f24cc=events[_0x2f82('0x3')];_0x1880c7<_0x1f24cc;_0x1880c7++){var _0x52ba76=events[_0x1880c7];var _0x304760=createListener(_0x2f82('0x4')+_0x52ba76,_0x30ed64);ChatWebsiteEvents['on'](_0x52ba76,_0x304760);}};
\ No newline at end of file
index bce3117..fbd14bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e9a=['/:id/avatar','getAvatar','/:id/customer_avatar','/:id/system_avatar','/:id/interactions','/:id/snippet','getSnippet','/:id/applications','/:id/proactive_actions','getProactiveActions','/:id/fields','getFields','/:id/offline_messages','getOfflineMessages','/:id/users','getAgents','post','create','/:id/dispositions','addDisposition','diskStorage','join','root','server/files/images/logos/','%s-%s','originalname','single','file','addLogo','server/files/images/avatars/','now','addAvatar','format','addCustomerAvatar','addSystemAvatar','/:id/notify','server/files','attachments','offline-chat','ensureDir','/:id/offline','any','offline','addInteraction','addApplications','addProactiveActions','addAgents','put','/:id','update','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatWebsite.controller','index','get','/describe','isAuthenticated','describe','show','/:id/canned_answers','getAnswers','/:id/logo','getLogo'];(function(_0x481d19,_0x33e608){var _0x35dfcf=function(_0x3d9b3c){while(--_0x3d9b3c){_0x481d19['push'](_0x481d19['shift']());}};_0x35dfcf(++_0x33e608);}(_0x1e9a,0x1e5));var _0xa1e9=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x1e9a[_0x502c7d];return _0x30b7ed;};'use strict';var multer=require(_0xa1e9('0x0'));var util=require(_0xa1e9('0x1'));var path=require(_0xa1e9('0x2'));var timeout=require('connect-timeout');var express=require(_0xa1e9('0x3'));var router=express[_0xa1e9('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xa1e9('0x5'));var interaction=require(_0xa1e9('0x6'));var config=require(_0xa1e9('0x7'));var controller=require(_0xa1e9('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0xa1e9('0x9')]);router[_0xa1e9('0xa')](_0xa1e9('0xb'),auth[_0xa1e9('0xc')](),controller[_0xa1e9('0xd')]);router[_0xa1e9('0xa')]('/:id',auth[_0xa1e9('0xc')](),controller[_0xa1e9('0xe')]);router['get']('/:id/dispositions',auth[_0xa1e9('0xc')](),controller['getDispositions']);router[_0xa1e9('0xa')](_0xa1e9('0xf'),auth['isAuthenticated'](),controller[_0xa1e9('0x10')]);router[_0xa1e9('0xa')](_0xa1e9('0x11'),controller[_0xa1e9('0x12')]);router[_0xa1e9('0xa')](_0xa1e9('0x13'),controller[_0xa1e9('0x14')]);router['get'](_0xa1e9('0x15'),controller['getCustomerAvatar']);router[_0xa1e9('0xa')](_0xa1e9('0x16'),controller['getSystemAvatar']);router[_0xa1e9('0xa')](_0xa1e9('0x17'),auth[_0xa1e9('0xc')](),controller['getInteractions']);router['get'](_0xa1e9('0x18'),controller[_0xa1e9('0x19')]);router[_0xa1e9('0xa')](_0xa1e9('0x1a'),auth[_0xa1e9('0xc')](),controller['getApplications']);router[_0xa1e9('0xa')](_0xa1e9('0x1b'),auth[_0xa1e9('0xc')](),controller[_0xa1e9('0x1c')]);router[_0xa1e9('0xa')](_0xa1e9('0x1d'),controller[_0xa1e9('0x1e')]);router[_0xa1e9('0xa')](_0xa1e9('0x1f'),auth[_0xa1e9('0xc')](),controller[_0xa1e9('0x20')]);router['get'](_0xa1e9('0x21'),auth[_0xa1e9('0xc')](),controller[_0xa1e9('0x22')]);router[_0xa1e9('0x23')]('/',auth[_0xa1e9('0xc')](),controller[_0xa1e9('0x24')]);router['post'](_0xa1e9('0x25'),auth[_0xa1e9('0xc')](),controller[_0xa1e9('0x26')]);router['post'](_0xa1e9('0xf'),auth['isAuthenticated'](),controller['addAnswer']);var upload=multer({'storage':multer[_0xa1e9('0x27')]({'destination':function(_0x2a18d5,_0x26c014,_0x1adacc){_0x1adacc(null,path[_0xa1e9('0x28')](config[_0xa1e9('0x29')],_0xa1e9('0x2a')));},'filename':function(_0x4a0f6d,_0x4c8f79,_0x3e279a){_0x3e279a(null,util['format'](_0xa1e9('0x2b'),Date['now'](),_0x4c8f79[_0xa1e9('0x2c')]));}})});router[_0xa1e9('0x23')](_0xa1e9('0x11'),upload[_0xa1e9('0x2d')](_0xa1e9('0x2e')),controller[_0xa1e9('0x2f')]);var upload=multer({'storage':multer[_0xa1e9('0x27')]({'destination':function(_0x1b5f99,_0x116003,_0x294e5e){_0x294e5e(null,path['join'](config[_0xa1e9('0x29')],_0xa1e9('0x30')));},'filename':function(_0x320b19,_0x19a341,_0x11bd1d){_0x11bd1d(null,util['format'](_0xa1e9('0x2b'),Date[_0xa1e9('0x31')](),_0x19a341['originalname']));}})});router[_0xa1e9('0x23')](_0xa1e9('0x13'),upload[_0xa1e9('0x2d')](_0xa1e9('0x2e')),controller[_0xa1e9('0x32')]);var upload=multer({'storage':multer[_0xa1e9('0x27')]({'destination':function(_0x5cb194,_0x12467b,_0x2f0ded){_0x2f0ded(null,path[_0xa1e9('0x28')](config[_0xa1e9('0x29')],_0xa1e9('0x30')));},'filename':function(_0x1810b5,_0x2fd516,_0x52a91f){_0x52a91f(null,util[_0xa1e9('0x33')](_0xa1e9('0x2b'),Date[_0xa1e9('0x31')](),_0x2fd516[_0xa1e9('0x2c')]));}})});router[_0xa1e9('0x23')](_0xa1e9('0x15'),upload[_0xa1e9('0x2d')]('file'),controller[_0xa1e9('0x34')]);var upload=multer({'storage':multer[_0xa1e9('0x27')]({'destination':function(_0x21249c,_0x7f42ee,_0x17642a){_0x17642a(null,path['join'](config[_0xa1e9('0x29')],_0xa1e9('0x30')));},'filename':function(_0x814042,_0x490465,_0x2061e9){_0x2061e9(null,util[_0xa1e9('0x33')]('%s-%s',Date[_0xa1e9('0x31')](),_0x490465[_0xa1e9('0x2c')]));}})});router[_0xa1e9('0x23')](_0xa1e9('0x16'),upload['single']('file'),controller[_0xa1e9('0x35')]);router[_0xa1e9('0x23')](_0xa1e9('0x36'),controller['notify']);const offlineUploadMulter=multer({'storage':multer[_0xa1e9('0x27')]({'destination':function(_0x292d34,_0x5c8fce,_0x57aa0d){const _0x1eadd9=path[_0xa1e9('0x28')](config[_0xa1e9('0x29')],_0xa1e9('0x37'),_0xa1e9('0x38'),_0xa1e9('0x39'));fs_extra[_0xa1e9('0x3a')](_0x1eadd9,function(){_0x57aa0d(null,_0x1eadd9);});},'filename':function(_0x2ffeaa,_0x1305b2,_0x50713e){const _0x43657d=_0x1305b2['originalname']['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x285487=path['extname'](_0x43657d);const _0x5bc187=Date[_0xa1e9('0x31')]()+'-'+_0x43657d['replace'](_0x285487,'')+_0x285487;_0x50713e(null,_0x5bc187);}})});router[_0xa1e9('0x23')](_0xa1e9('0x3b'),offlineUploadMulter[_0xa1e9('0x3c')](),controller[_0xa1e9('0x3d')]);router['post'](_0xa1e9('0x17'),auth[_0xa1e9('0xc')](),controller[_0xa1e9('0x3e')]);router[_0xa1e9('0x23')]('/:id/applications',auth[_0xa1e9('0xc')](),controller[_0xa1e9('0x3f')]);router['post'](_0xa1e9('0x1b'),auth[_0xa1e9('0xc')](),controller[_0xa1e9('0x40')]);router['post'](_0xa1e9('0x21'),auth[_0xa1e9('0xc')](),controller[_0xa1e9('0x41')]);router[_0xa1e9('0x42')](_0xa1e9('0x43'),auth['isAuthenticated'](),controller[_0xa1e9('0x44')]);router[_0xa1e9('0x45')]('/:id',auth[_0xa1e9('0xc')](),controller[_0xa1e9('0x46')]);router['delete']('/:id/dispositions',auth[_0xa1e9('0xc')](),controller['removeDispositions']);router[_0xa1e9('0x45')](_0xa1e9('0xf'),auth[_0xa1e9('0xc')](),controller['removeAnswers']);router[_0xa1e9('0x45')](_0xa1e9('0x21'),auth[_0xa1e9('0xc')](),controller['removeAgents']);module[_0xa1e9('0x47')]=router;
\ No newline at end of file
+var _0x7296=['delete','destroy','removeDispositions','removeAgents','exports','multer','path','Router','fs-extra','../../components/auth/service','../../config/environment','./chatWebsite.controller','get','isAuthenticated','index','/describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','/:id/logo','getLogo','/:id/avatar','getAvatar','/:id/customer_avatar','getCustomerAvatar','/:id/system_avatar','getSystemAvatar','/:id/interactions','getInteractions','/:id/snippet','getSnippet','/:id/applications','getApplications','/:id/proactive_actions','getProactiveActions','/:id/fields','getFields','/:id/offline_messages','/:id/users','post','addDisposition','addAnswer','diskStorage','join','root','server/files/images/logos/','format','%s-%s','now','originalname','single','file','addLogo','addAvatar','server/files/images/avatars/','addCustomerAvatar','addSystemAvatar','/:id/notify','attachments','replace','extname','/:id/offline','offline','addInteraction','addProactiveActions','addAgents','put','update'];(function(_0xaffa2d,_0x4b1c10){var _0x3c6a3a=function(_0x1e2cf5){while(--_0x1e2cf5){_0xaffa2d['push'](_0xaffa2d['shift']());}};_0x3c6a3a(++_0x4b1c10);}(_0x7296,0x1a9));var _0x6729=function(_0x2d8fc2,_0x1c461d){_0x2d8fc2=_0x2d8fc2-0x0;var _0x3a9e53=_0x7296[_0x2d8fc2];return _0x3a9e53;};'use strict';var multer=require(_0x6729('0x0'));var util=require('util');var path=require(_0x6729('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x6729('0x2')]();var fs_extra=require(_0x6729('0x3'));var auth=require(_0x6729('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x6729('0x5'));var controller=require(_0x6729('0x6'));router[_0x6729('0x7')]('/',auth[_0x6729('0x8')](),controller[_0x6729('0x9')]);router[_0x6729('0x7')](_0x6729('0xa'),auth[_0x6729('0x8')](),controller['describe']);router[_0x6729('0x7')](_0x6729('0xb'),auth[_0x6729('0x8')](),controller[_0x6729('0xc')]);router[_0x6729('0x7')](_0x6729('0xd'),auth['isAuthenticated'](),controller[_0x6729('0xe')]);router[_0x6729('0x7')](_0x6729('0xf'),auth['isAuthenticated'](),controller['getAnswers']);router[_0x6729('0x7')](_0x6729('0x10'),controller[_0x6729('0x11')]);router[_0x6729('0x7')](_0x6729('0x12'),controller[_0x6729('0x13')]);router['get'](_0x6729('0x14'),controller[_0x6729('0x15')]);router[_0x6729('0x7')](_0x6729('0x16'),controller[_0x6729('0x17')]);router[_0x6729('0x7')](_0x6729('0x18'),auth[_0x6729('0x8')](),controller[_0x6729('0x19')]);router['get'](_0x6729('0x1a'),controller[_0x6729('0x1b')]);router['get'](_0x6729('0x1c'),auth[_0x6729('0x8')](),controller[_0x6729('0x1d')]);router[_0x6729('0x7')](_0x6729('0x1e'),auth['isAuthenticated'](),controller[_0x6729('0x1f')]);router['get'](_0x6729('0x20'),controller[_0x6729('0x21')]);router['get'](_0x6729('0x22'),auth['isAuthenticated'](),controller['getOfflineMessages']);router[_0x6729('0x7')](_0x6729('0x23'),auth[_0x6729('0x8')](),controller['getAgents']);router[_0x6729('0x24')]('/',auth[_0x6729('0x8')](),controller['create']);router[_0x6729('0x24')](_0x6729('0xd'),auth[_0x6729('0x8')](),controller[_0x6729('0x25')]);router[_0x6729('0x24')](_0x6729('0xf'),auth[_0x6729('0x8')](),controller[_0x6729('0x26')]);var upload=multer({'storage':multer[_0x6729('0x27')]({'destination':function(_0x41f3cf,_0x3a23dd,_0x47c0a9){_0x47c0a9(null,path[_0x6729('0x28')](config[_0x6729('0x29')],_0x6729('0x2a')));},'filename':function(_0x2ab7b9,_0xf40a7d,_0x1f55d5){_0x1f55d5(null,util[_0x6729('0x2b')](_0x6729('0x2c'),Date[_0x6729('0x2d')](),_0xf40a7d[_0x6729('0x2e')]));}})});router['post'](_0x6729('0x10'),upload[_0x6729('0x2f')](_0x6729('0x30')),controller[_0x6729('0x31')]);var upload=multer({'storage':multer[_0x6729('0x27')]({'destination':function(_0x4f63cb,_0x3e7588,_0x734908){_0x734908(null,path[_0x6729('0x28')](config[_0x6729('0x29')],'server/files/images/avatars/'));},'filename':function(_0x15712d,_0x36a7c9,_0x599fff){_0x599fff(null,util[_0x6729('0x2b')](_0x6729('0x2c'),Date[_0x6729('0x2d')](),_0x36a7c9['originalname']));}})});router[_0x6729('0x24')](_0x6729('0x12'),upload[_0x6729('0x2f')](_0x6729('0x30')),controller[_0x6729('0x32')]);var upload=multer({'storage':multer[_0x6729('0x27')]({'destination':function(_0x4d85d3,_0x1454ff,_0xae3f0c){_0xae3f0c(null,path[_0x6729('0x28')](config[_0x6729('0x29')],_0x6729('0x33')));},'filename':function(_0x5b835b,_0x14c630,_0x241061){_0x241061(null,util['format'](_0x6729('0x2c'),Date[_0x6729('0x2d')](),_0x14c630[_0x6729('0x2e')]));}})});router[_0x6729('0x24')](_0x6729('0x14'),upload[_0x6729('0x2f')](_0x6729('0x30')),controller[_0x6729('0x34')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0xadd28e,_0x302bcd,_0x92cfb6){_0x92cfb6(null,path[_0x6729('0x28')](config[_0x6729('0x29')],_0x6729('0x33')));},'filename':function(_0x38e715,_0x465c52,_0x4f3a43){_0x4f3a43(null,util[_0x6729('0x2b')](_0x6729('0x2c'),Date['now'](),_0x465c52[_0x6729('0x2e')]));}})});router[_0x6729('0x24')](_0x6729('0x16'),upload[_0x6729('0x2f')](_0x6729('0x30')),controller[_0x6729('0x35')]);router[_0x6729('0x24')](_0x6729('0x36'),controller['notify']);const offlineUploadMulter=multer({'storage':multer[_0x6729('0x27')]({'destination':function(_0x277e12,_0x176e2a,_0x4e8908){const _0x31b6a7=path[_0x6729('0x28')](config[_0x6729('0x29')],'server/files',_0x6729('0x37'),'offline-chat');fs_extra['ensureDir'](_0x31b6a7,function(){_0x4e8908(null,_0x31b6a7);});},'filename':function(_0x1d8034,_0x3f2cf8,_0x264699){const _0xdb8d29=_0x3f2cf8[_0x6729('0x2e')][_0x6729('0x38')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0xb08573=path[_0x6729('0x39')](_0xdb8d29);const _0x30a73d=Date['now']()+'-'+_0xdb8d29[_0x6729('0x38')](_0xb08573,'')+_0xb08573;_0x264699(null,_0x30a73d);}})});router[_0x6729('0x24')](_0x6729('0x3a'),offlineUploadMulter['any'](),controller[_0x6729('0x3b')]);router[_0x6729('0x24')](_0x6729('0x18'),auth[_0x6729('0x8')](),controller[_0x6729('0x3c')]);router[_0x6729('0x24')](_0x6729('0x1c'),auth[_0x6729('0x8')](),controller['addApplications']);router[_0x6729('0x24')](_0x6729('0x1e'),auth[_0x6729('0x8')](),controller[_0x6729('0x3d')]);router[_0x6729('0x24')](_0x6729('0x23'),auth[_0x6729('0x8')](),controller[_0x6729('0x3e')]);router[_0x6729('0x3f')](_0x6729('0xb'),auth[_0x6729('0x8')](),controller[_0x6729('0x40')]);router[_0x6729('0x41')]('/:id',auth[_0x6729('0x8')](),controller[_0x6729('0x42')]);router[_0x6729('0x41')](_0x6729('0xd'),auth[_0x6729('0x8')](),controller[_0x6729('0x43')]);router['delete'](_0x6729('0xf'),auth['isAuthenticated'](),controller['removeAnswers']);router[_0x6729('0x41')](_0x6729('0x23'),auth[_0x6729('0x8')](),controller[_0x6729('0x44')]);module[_0x6729('0x45')]=router;
\ No newline at end of file
index 1189242..7b3deed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0928=['express','../components/auth/service','../config/environment','Router','env','production','client-side-logger','expressEndpoint','/client-logs','use','isAuthenticated','exports','beaver-logger/server'];(function(_0x56daff,_0xadca9a){var _0x132c82=function(_0x19e0d7){while(--_0x19e0d7){_0x56daff['push'](_0x56daff['shift']());}};_0x132c82(++_0xadca9a);}(_0x0928,0x1b9));var _0x8092=function(_0x3e8836,_0x250351){_0x3e8836=_0x3e8836-0x0;var _0x2891d0=_0x0928[_0x3e8836];return _0x2891d0;};var beaverLogger=require(_0x8092('0x0'));var express=require(_0x8092('0x1'));var auth=require(_0x8092('0x2'));var config=require(_0x8092('0x3'));var router=express[_0x8092('0x4')]();var isProduction=config[_0x8092('0x5')]===_0x8092('0x6')||![];function clientSideLogs(_0x4c9c83,_0x38e474,_0x39e81f){var _0x245466=_0x4c9c83['app']['get'](_0x8092('0x7'));if(!_0x245466){throw new Error('Client-Side\x20logger\x20not\x20found!');}return beaverLogger[_0x8092('0x8')]({'uri':_0x8092('0x9'),'logger':_0x245466,'enableCors':!isProduction})(_0x4c9c83,_0x38e474,_0x39e81f);}router[_0x8092('0xa')](auth[_0x8092('0xb')](),clientSideLogs);module[_0x8092('0xc')]=router;
\ No newline at end of file
+var _0xcd1f=['../config/environment','Router','env','app','get','Client-Side\x20logger\x20not\x20found!','expressEndpoint','/client-logs','use','isAuthenticated','exports','beaver-logger/server','express','../components/auth/service'];(function(_0x5af59e,_0x3771c1){var _0x4240df=function(_0x2267fd){while(--_0x2267fd){_0x5af59e['push'](_0x5af59e['shift']());}};_0x4240df(++_0x3771c1);}(_0xcd1f,0x1a1));var _0xfcd1=function(_0x347692,_0x5dfa9d){_0x347692=_0x347692-0x0;var _0x2e7b35=_0xcd1f[_0x347692];return _0x2e7b35;};var beaverLogger=require(_0xfcd1('0x0'));var express=require(_0xfcd1('0x1'));var auth=require(_0xfcd1('0x2'));var config=require(_0xfcd1('0x3'));var router=express[_0xfcd1('0x4')]();var isProduction=config[_0xfcd1('0x5')]==='production'||![];function clientSideLogs(_0x268573,_0x58b14b,_0x453844){var _0x574812=_0x268573[_0xfcd1('0x6')][_0xfcd1('0x7')]('client-side-logger');if(!_0x574812){throw new Error(_0xfcd1('0x8'));}return beaverLogger[_0xfcd1('0x9')]({'uri':_0xfcd1('0xa'),'logger':_0x574812,'enableCors':!isProduction})(_0x268573,_0x58b14b,_0x453844);}router[_0xfcd1('0xb')](auth[_0xfcd1('0xc')](),clientSideLogs);module[_0xfcd1('0xd')]=router;
\ No newline at end of file
index 384f599..19693b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4dca=['MicrosoftAzure','Outlook365','Dynamics365','MicrosoftAzure\x20=>\x20client_secret','MicrosoftAzure\x20=>\x20redirect_uri','MicrosoftAzure\x20=>\x20access_token','TEXT','MicrosoftAzure\x20=>\x20refresh_token','MicrosoftAzure\x20=>\x20Dynamics365\x20=>\x20remote_uri','sequelize','STRING','ENUM','AmazonAWS','Google'];(function(_0x391933,_0x2f26f5){var _0x357443=function(_0x286569){while(--_0x286569){_0x391933['push'](_0x391933['shift']());}};_0x357443(++_0x2f26f5);}(_0x4dca,0x183));var _0xa4dc=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x4dca[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0xa4dc('0x0'));module['exports']={'name':{'type':Sequelize[_0xa4dc('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0xa4dc('0x2')](_0xa4dc('0x3'),_0xa4dc('0x4'),_0xa4dc('0x5')),'allowNull':![],'validate':{'notEmpty':!![]}},'type':{'type':Sequelize['ENUM'](_0xa4dc('0x6'),_0xa4dc('0x7'))},'data1':{'type':Sequelize['STRING'],'comment':'MicrosoftAzure\x20=>\x20client_id'},'data2':{'type':Sequelize[_0xa4dc('0x1')],'comment':'MicrosoftAzure\x20=>\x20tenant'},'data3':{'type':Sequelize[_0xa4dc('0x1')],'comment':_0xa4dc('0x8')},'data4':{'type':Sequelize['STRING'],'comment':_0xa4dc('0x9')},'data5':{'type':Sequelize['TEXT'],'comment':_0xa4dc('0xa')},'data6':{'type':Sequelize[_0xa4dc('0xb')],'comment':_0xa4dc('0xc')},'data7':{'type':Sequelize[_0xa4dc('0xb')],'comment':_0xa4dc('0xd')}};
\ No newline at end of file
+var _0xf609=['Google','MicrosoftAzure','Outlook365','Dynamics365','STRING','MicrosoftAzure\x20=>\x20tenant','MicrosoftAzure\x20=>\x20client_secret','MicrosoftAzure\x20=>\x20redirect_uri','TEXT','MicrosoftAzure\x20=>\x20access_token','MicrosoftAzure\x20=>\x20refresh_token','MicrosoftAzure\x20=>\x20Dynamics365\x20=>\x20remote_uri','sequelize','exports','ENUM','AmazonAWS'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xf609,0x1dc));var _0x9f60=function(_0x2eb7a1,_0x1209fc){_0x2eb7a1=_0x2eb7a1-0x0;var _0x11fdd2=_0xf609[_0x2eb7a1];return _0x11fdd2;};'use strict';var Sequelize=require(_0x9f60('0x0'));module[_0x9f60('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0x9f60('0x2')](_0x9f60('0x3'),_0x9f60('0x4'),_0x9f60('0x5')),'allowNull':![],'validate':{'notEmpty':!![]}},'type':{'type':Sequelize[_0x9f60('0x2')](_0x9f60('0x6'),_0x9f60('0x7'))},'data1':{'type':Sequelize[_0x9f60('0x8')],'comment':'MicrosoftAzure\x20=>\x20client_id'},'data2':{'type':Sequelize['STRING'],'comment':_0x9f60('0x9')},'data3':{'type':Sequelize[_0x9f60('0x8')],'comment':_0x9f60('0xa')},'data4':{'type':Sequelize[_0x9f60('0x8')],'comment':_0x9f60('0xb')},'data5':{'type':Sequelize[_0x9f60('0xc')],'comment':_0x9f60('0xd')},'data6':{'type':Sequelize[_0x9f60('0xc')],'comment':_0x9f60('0xe')},'data7':{'type':Sequelize[_0x9f60('0xc')],'comment':_0x9f60('0xf')}};
\ No newline at end of file
index 49d28d6..9b16e90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0fe7=['data5','access_token','data6','update','startRefreshInterval','emit','microsoftAuthorization:success','microsoftAuthorization:error','Invalid\x20authentication\x20state\x20parameter','message','Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s','stringify','lodash','ioredis','../../components/parsers/qs','../../components/encryptor','../../config/environment','../../config/logger','api','../../mysqldb','redis','localhost','status','json','undefined','count','limit','set','Content-Range','then','destroy','end','error','stack','name','send','padEnd','slice','index','map','CloudProvider','rawAttributes','fieldName','type','key','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','offset','sort','where','pick','filters','filter','merge','VIRTUAL','options','includeAll','include','rows','decryptString','catch','show','params','find','service','MicrosoftAzure','data3','create','body','Service\x20parameter\x20not\x20specified','values','includes','Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20','findOne','sendStatus','generateMicrosoftAuthorizationUrl','oauth2MicrosoftCallback','state','Invalid\x20state\x20parameter','from','toString','ascii','isValidIdToken','oauth2Claims','Unable\x20to\x20validate\x20id_token','del','getOauth2MicrosoftAccessToken'];(function(_0xb51dcd,_0x15798f){var _0x1e03f0=function(_0xf278ec){while(--_0xf278ec){_0xb51dcd['push'](_0xb51dcd['shift']());}};_0x1e03f0(++_0x15798f);}(_0x0fe7,0x126));var _0x70fe=function(_0x1b6186,_0x1ec7f2){_0x1b6186=_0x1b6186-0x0;var _0x186121=_0x0fe7[_0x1b6186];return _0x186121;};'use strict';var _=require(_0x70fe('0x0'));var Redis=require(_0x70fe('0x1'));var qs=require(_0x70fe('0x2'));var encryptor=require(_0x70fe('0x3'));var config=require(_0x70fe('0x4'));var logger=require(_0x70fe('0x5'))(_0x70fe('0x6'));var db=require(_0x70fe('0x7'))['db'];var oauth=require('./cloudProvider.oauth');config[_0x70fe('0x8')]=_['defaults'](config['redis'],{'host':_0x70fe('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x70fe('0x8')]));var redis=new Redis(config['redis']);function respondWithStatusCode(_0x4c1e54,_0x3b2ff6){_0x3b2ff6=_0x3b2ff6||0xcc;return function(_0xd00907){if(_0xd00907){return _0x4c1e54['sendStatus'](_0x3b2ff6);}return _0x4c1e54[_0x70fe('0xa')](_0x3b2ff6)['end']();};}function respondWithResult(_0x292f90,_0x537c0d){_0x537c0d=_0x537c0d||0xc8;return function(_0x14d3f8){if(_0x14d3f8){return _0x292f90[_0x70fe('0xa')](_0x537c0d)[_0x70fe('0xb')](_0x14d3f8);}};}function respondWithFilteredResult(_0x32f85e,_0x5ba52a){return function(_0x27ed11){if(_0x27ed11){var _0x54aa79=typeof _0x5ba52a['offset']===_0x70fe('0xc')&&typeof _0x5ba52a['limit']===_0x70fe('0xc');var _0x359d87=_0x27ed11[_0x70fe('0xd')];var _0xf94176=_0x54aa79?0x0:_0x5ba52a['offset'];var _0x343759=_0x54aa79?_0x27ed11[_0x70fe('0xd')]:_0x5ba52a['offset']+_0x5ba52a[_0x70fe('0xe')];var _0x28bee1;if(_0x343759>=_0x359d87){_0x343759=_0x359d87;_0x28bee1=0xc8;}else{_0x28bee1=0xce;}_0x32f85e[_0x70fe('0xa')](_0x28bee1);return _0x32f85e[_0x70fe('0xf')](_0x70fe('0x10'),_0xf94176+'-'+_0x343759+'/'+_0x359d87)[_0x70fe('0xb')](_0x27ed11);}return null;};}function saveUpdates(_0x46c956){return function(_0x152c35){if(_0x152c35){return _0x152c35['update'](_0x46c956)[_0x70fe('0x11')](function(_0x155531){return _0x155531;});}return null;};}function removeEntity(_0x455564){return function(_0x196876){if(_0x196876){return _0x196876[_0x70fe('0x12')]()[_0x70fe('0x11')](function(){_0x455564['status'](0xcc)[_0x70fe('0x13')]();});}};}function handleEntityNotFound(_0x5eeb52){return function(_0x27ce7e){if(!_0x27ce7e){_0x5eeb52['sendStatus'](0x194);}return _0x27ce7e;};}function handleError(_0x17a9ae,_0x2e81c2){_0x2e81c2=_0x2e81c2||0x1f4;return function(_0x344d2e){logger[_0x70fe('0x14')](_0x344d2e[_0x70fe('0x15')]);if(_0x344d2e[_0x70fe('0x16')]){delete _0x344d2e['name'];}_0x17a9ae['status'](_0x2e81c2)[_0x70fe('0x17')](_0x344d2e);};}function maskClientSecret(_0x35d8d1){return _[_0x70fe('0x18')](_0x35d8d1[_0x70fe('0x19')](0x0,0x3),0x14,'*');}exports[_0x70fe('0x1a')]=function(_0x561107,_0x38e2ca){var _0x2e9e83={},_0x305b3b={},_0x3af5e9={'count':0x0,'rows':[]};var _0x3d06b=_[_0x70fe('0x1b')](db[_0x70fe('0x1c')][_0x70fe('0x1d')],function(_0x37ca17){return{'name':_0x37ca17[_0x70fe('0x1e')],'type':_0x37ca17[_0x70fe('0x1f')][_0x70fe('0x20')]};});_0x305b3b[_0x70fe('0x21')]=_[_0x70fe('0x1b')](_0x3d06b,'name');_0x305b3b[_0x70fe('0x22')]=_[_0x70fe('0x23')](_0x561107[_0x70fe('0x22')]);_0x305b3b['filters']=_['intersection'](_0x305b3b[_0x70fe('0x21')],_0x305b3b[_0x70fe('0x22')]);_0x2e9e83[_0x70fe('0x24')]=_[_0x70fe('0x25')](_0x305b3b[_0x70fe('0x21')],qs[_0x70fe('0x26')](_0x561107[_0x70fe('0x22')]['fields']));_0x2e9e83[_0x70fe('0x24')]=_0x2e9e83[_0x70fe('0x24')][_0x70fe('0x27')]?_0x2e9e83[_0x70fe('0x24')]:_0x305b3b['model'];if(!_0x561107[_0x70fe('0x22')][_0x70fe('0x28')](_0x70fe('0x29'))){_0x2e9e83['limit']=qs['limit'](_0x561107['query'][_0x70fe('0xe')]);_0x2e9e83[_0x70fe('0x2a')]=qs['offset'](_0x561107[_0x70fe('0x22')]['offset']);}_0x2e9e83['order']=qs[_0x70fe('0x2b')](_0x561107[_0x70fe('0x22')][_0x70fe('0x2b')]);_0x2e9e83[_0x70fe('0x2c')]=qs['filters'](_[_0x70fe('0x2d')](_0x561107[_0x70fe('0x22')],_0x305b3b[_0x70fe('0x2e')]),_0x3d06b);if(_0x561107[_0x70fe('0x22')][_0x70fe('0x2f')]){_0x2e9e83[_0x70fe('0x2c')]=_[_0x70fe('0x30')](_0x2e9e83[_0x70fe('0x2c')],{'$or':_[_0x70fe('0x1b')](_0x3d06b,function(_0x45a032){if(_0x45a032['type']!==_0x70fe('0x31')){var _0xf2d121={};_0xf2d121[_0x45a032[_0x70fe('0x16')]]={'$like':'%'+_0x561107[_0x70fe('0x22')]['filter']+'%'};return _0xf2d121;}})});}_0x2e9e83=_[_0x70fe('0x30')]({},_0x2e9e83,_0x561107[_0x70fe('0x32')]);var _0x1769a3={'where':_0x2e9e83[_0x70fe('0x2c')]};return db[_0x70fe('0x1c')][_0x70fe('0xd')](_0x1769a3)['then'](function(_0x17f5f9){_0x3af5e9['count']=_0x17f5f9;if(_0x561107[_0x70fe('0x22')][_0x70fe('0x33')]){_0x2e9e83[_0x70fe('0x34')]=[{'all':!![]}];}return db['CloudProvider']['findAll'](_0x2e9e83);})[_0x70fe('0x11')](function(_0x5bcade){_0x3af5e9[_0x70fe('0x35')]=_[_0x70fe('0x1b')](_0x5bcade,function(_0x17971b){if(_0x17971b['service']==='MicrosoftAzure'){var _0x296ba5=encryptor[_0x70fe('0x36')](_0x17971b['data3']);_0x17971b['data3']=maskClientSecret(_0x296ba5);}return _0x17971b;});return _0x3af5e9;})[_0x70fe('0x11')](respondWithFilteredResult(_0x38e2ca,_0x2e9e83))[_0x70fe('0x37')](handleError(_0x38e2ca,null));};exports[_0x70fe('0x38')]=function(_0x11e38d,_0x58c893){var _0x236ac5={'raw':!![],'where':{'id':_0x11e38d[_0x70fe('0x39')]['id']}},_0x20b0b3={};_0x20b0b3[_0x70fe('0x21')]=_[_0x70fe('0x23')](db[_0x70fe('0x1c')][_0x70fe('0x1d')]);_0x20b0b3[_0x70fe('0x22')]=_[_0x70fe('0x23')](_0x11e38d[_0x70fe('0x22')]);_0x20b0b3[_0x70fe('0x2e')]=_[_0x70fe('0x25')](_0x20b0b3['model'],_0x20b0b3[_0x70fe('0x22')]);_0x236ac5['attributes']=_['intersection'](_0x20b0b3[_0x70fe('0x21')],qs[_0x70fe('0x26')](_0x11e38d[_0x70fe('0x22')][_0x70fe('0x26')]));_0x236ac5['attributes']=_0x236ac5['attributes'][_0x70fe('0x27')]?_0x236ac5[_0x70fe('0x24')]:_0x20b0b3[_0x70fe('0x21')];if(_0x11e38d[_0x70fe('0x22')][_0x70fe('0x33')]){_0x236ac5[_0x70fe('0x34')]=[{'all':!![]}];}_0x236ac5=_[_0x70fe('0x30')]({},_0x236ac5,_0x11e38d[_0x70fe('0x32')]);return db[_0x70fe('0x1c')][_0x70fe('0x3a')](_0x236ac5)['then'](handleEntityNotFound(_0x58c893,null))['then'](function(_0x4b0c97){if(_0x4b0c97[_0x70fe('0x3b')]===_0x70fe('0x3c')){var _0x4b6f91=encryptor['decryptString'](_0x4b0c97[_0x70fe('0x3d')]);_0x4b0c97['data3']=maskClientSecret(_0x4b6f91);}return _0x4b0c97;})[_0x70fe('0x11')](respondWithResult(_0x58c893,null))['catch'](handleError(_0x58c893,null));};exports[_0x70fe('0x3e')]=function(_0xc87412,_0x50d2c4){if(!_0xc87412[_0x70fe('0x3f')][_0x70fe('0x16')])throw new Error('Name\x20parameter\x20not\x20specified');if(!_0xc87412['body'][_0x70fe('0x3b')])throw new Error(_0x70fe('0x40'));var _0x3c74eb=db[_0x70fe('0x1c')][_0x70fe('0x1d')][_0x70fe('0x3b')][_0x70fe('0x41')];if(!_0x3c74eb[_0x70fe('0x42')](_0xc87412[_0x70fe('0x3f')][_0x70fe('0x3b')]))throw new Error(_0x70fe('0x43')+_0x3c74eb['join'](',\x20'));if(_0xc87412['body'][_0x70fe('0x3b')]===_0x70fe('0x3c')&&_0xc87412[_0x70fe('0x3f')][_0x70fe('0x3d')]){_0xc87412['body'][_0x70fe('0x3d')]=encryptor['encryptString'](_0xc87412[_0x70fe('0x3f')]['data3']);}return db[_0x70fe('0x1c')]['create'](_0xc87412[_0x70fe('0x3f')],{})[_0x70fe('0x11')](respondWithResult(_0x50d2c4,0xc9))['catch'](handleError(_0x50d2c4,null));};exports['update']=function(_0x5df1ba,_0x420b53){if(_0x5df1ba[_0x70fe('0x3f')]['id']){delete _0x5df1ba[_0x70fe('0x3f')]['id'];}return db[_0x70fe('0x1c')]['find']({'where':{'id':_0x5df1ba['params']['id']}})[_0x70fe('0x11')](handleEntityNotFound(_0x420b53,null))[_0x70fe('0x11')](function(_0x2ef15e){if(_0x2ef15e[_0x70fe('0x3b')]===_0x70fe('0x3c')&&_0x5df1ba[_0x70fe('0x3f')]['data3']){_0x5df1ba[_0x70fe('0x3f')][_0x70fe('0x3d')]=encryptor['encryptString'](_0x5df1ba['body'][_0x70fe('0x3d')]);}return _0x2ef15e;})[_0x70fe('0x11')](saveUpdates(_0x5df1ba['body'],null))[_0x70fe('0x11')](respondWithResult(_0x420b53,null))[_0x70fe('0x37')](handleError(_0x420b53,null));};exports[_0x70fe('0x12')]=function(_0x414bd1,_0x2e9478){return db[_0x70fe('0x1c')][_0x70fe('0x3a')]({'where':{'id':_0x414bd1[_0x70fe('0x39')]['id']}})[_0x70fe('0x11')](handleEntityNotFound(_0x2e9478,null))[_0x70fe('0x11')](removeEntity(_0x2e9478,null))['catch'](handleError(_0x2e9478,null));};exports['oauth2MicrosoftAuthorize']=function(_0x5aaf52,_0x5577dd){return db[_0x70fe('0x1c')][_0x70fe('0x44')]({'where':{'id':_0x5aaf52[_0x70fe('0x39')]['id']},'raw':!![]})[_0x70fe('0x11')](function(_0x2d9492){if(!_0x2d9492)return _0x5577dd[_0x70fe('0x45')](0x194);return{'url':oauth[_0x70fe('0x46')](_0x2d9492,_0x5aaf52['user']['id'])};})[_0x70fe('0x11')](respondWithResult(_0x5577dd,null))['catch'](handleError(_0x5577dd,null));};exports[_0x70fe('0x47')]=function(_0xadb1eb,_0xc82611){var _0x939a72=_0xadb1eb['body'];var _0x49c95d;var _0x44d7c5;if(_0x939a72[_0x70fe('0x14')])throw _0x939a72;redis['get'](_0x939a72[_0x70fe('0x48')])[_0x70fe('0x11')](function(_0xe6df9f){if(!_0xe6df9f)throw new Error(_0x70fe('0x49'));_0x49c95d=JSON['parse'](_0xe6df9f);var _0x566c7a=Buffer[_0x70fe('0x4a')](_0x939a72[_0x70fe('0x48')],'base64')[_0x70fe('0x4b')](_0x70fe('0x4c'));_0x44d7c5=JSON['parse'](_0x566c7a);if(!oauth[_0x70fe('0x4d')](_0x939a72['id_token'],_0x49c95d[_0x70fe('0x4e')]))throw new Error(_0x70fe('0x4f'));redis[_0x70fe('0x50')](_0x939a72[_0x70fe('0x48')]);return oauth[_0x70fe('0x51')](_0x939a72['code'],_0x49c95d);})[_0x70fe('0x11')](function(_0x394e64){_0x49c95d[_0x70fe('0x52')]=_0x394e64[_0x70fe('0x53')];_0x49c95d[_0x70fe('0x54')]=_0x394e64['refresh_token'];return db[_0x70fe('0x1c')][_0x70fe('0x55')]({'data5':_0x49c95d[_0x70fe('0x52')],'data6':_0x49c95d[_0x70fe('0x54')]},{'where':{'id':_0x49c95d['id']}});})[_0x70fe('0x11')](function(){oauth[_0x70fe('0x56')](_0x49c95d);socket[_0x70fe('0x57')](_0x70fe('0x58'),{'id':_0x44d7c5['id']});return;})[_0x70fe('0x11')](respondWithStatusCode(_0xc82611,null))[_0x70fe('0x37')](function(_0x223754){if(_0x44d7c5){socket[_0x70fe('0x57')](_0x70fe('0x59'),{'id':_0x44d7c5['id']});}if(!_0x49c95d){logger['error'](_0x70fe('0x5a'),_0x223754);return _0xc82611[_0x70fe('0xa')](0x1f4)[_0x70fe('0x17')](_0x223754[_0x70fe('0x5b')]);}logger['error'](_0x70fe('0x5c'),_0x49c95d['id'],JSON[_0x70fe('0x5d')](_0x223754));});};
\ No newline at end of file
+var _0xfd98=['Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s','lodash','ioredis','../../components/parsers/qs','../../components/encryptor','../../config/logger','api','./cloudProvider.oauth','defaults','redis','localhost','socket.io-emitter','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','update','destroy','then','error','name','send','padEnd','slice','index','fieldName','type','key','model','map','query','keys','intersection','fields','attributes','length','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','CloudProvider','includeAll','include','findAll','rows','service','MicrosoftAzure','data3','catch','show','params','rawAttributes','decryptString','create','Name\x20parameter\x20not\x20specified','body','Service\x20parameter\x20not\x20specified','values','includes','Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20','encryptString','oauth2MicrosoftAuthorize','findOne','user','get','state','Invalid\x20state\x20parameter','from','base64','ascii','isValidIdToken','id_token','oauth2Claims','Unable\x20to\x20validate\x20id_token','del','code','data5','data6','refresh_token','startRefreshInterval','microsoftAuthorization:success','emit','Invalid\x20authentication\x20state\x20parameter','message'];(function(_0x2b4411,_0x2625ed){var _0x8e41ef=function(_0x2aa8c1){while(--_0x2aa8c1){_0x2b4411['push'](_0x2b4411['shift']());}};_0x8e41ef(++_0x2625ed);}(_0xfd98,0xc1));var _0x8fd9=function(_0x425ea3,_0x26b830){_0x425ea3=_0x425ea3-0x0;var _0x54f159=_0xfd98[_0x425ea3];return _0x54f159;};'use strict';var _=require(_0x8fd9('0x0'));var Redis=require(_0x8fd9('0x1'));var qs=require(_0x8fd9('0x2'));var encryptor=require(_0x8fd9('0x3'));var config=require('../../config/environment');var logger=require(_0x8fd9('0x4'))(_0x8fd9('0x5'));var db=require('../../mysqldb')['db'];var oauth=require(_0x8fd9('0x6'));config['redis']=_[_0x8fd9('0x7')](config[_0x8fd9('0x8')],{'host':_0x8fd9('0x9'),'port':0x18eb});var socket=require(_0x8fd9('0xa'))(new Redis(config[_0x8fd9('0x8')]));var redis=new Redis(config[_0x8fd9('0x8')]);function respondWithStatusCode(_0x284ac5,_0x164bb3){_0x164bb3=_0x164bb3||0xcc;return function(_0x1022a3){if(_0x1022a3){return _0x284ac5[_0x8fd9('0xb')](_0x164bb3);}return _0x284ac5[_0x8fd9('0xc')](_0x164bb3)[_0x8fd9('0xd')]();};}function respondWithResult(_0x4dba5d,_0x34f59d){_0x34f59d=_0x34f59d||0xc8;return function(_0x587980){if(_0x587980){return _0x4dba5d['status'](_0x34f59d)[_0x8fd9('0xe')](_0x587980);}};}function respondWithFilteredResult(_0xc4a96d,_0x4b93c3){return function(_0x2279cb){if(_0x2279cb){var _0x5ee54a=typeof _0x4b93c3[_0x8fd9('0xf')]===_0x8fd9('0x10')&&typeof _0x4b93c3[_0x8fd9('0x11')]==='undefined';var _0x10ad8e=_0x2279cb[_0x8fd9('0x12')];var _0xd6d95c=_0x5ee54a?0x0:_0x4b93c3[_0x8fd9('0xf')];var _0x10e61b=_0x5ee54a?_0x2279cb[_0x8fd9('0x12')]:_0x4b93c3[_0x8fd9('0xf')]+_0x4b93c3[_0x8fd9('0x11')];var _0x2c9b21;if(_0x10e61b>=_0x10ad8e){_0x10e61b=_0x10ad8e;_0x2c9b21=0xc8;}else{_0x2c9b21=0xce;}_0xc4a96d[_0x8fd9('0xc')](_0x2c9b21);return _0xc4a96d[_0x8fd9('0x13')](_0x8fd9('0x14'),_0xd6d95c+'-'+_0x10e61b+'/'+_0x10ad8e)[_0x8fd9('0xe')](_0x2279cb);}return null;};}function saveUpdates(_0x11fb66){return function(_0x1118b8){if(_0x1118b8){return _0x1118b8[_0x8fd9('0x15')](_0x11fb66)['then'](function(_0x1f942d){return _0x1f942d;});}return null;};}function removeEntity(_0x218d92){return function(_0x53ab14){if(_0x53ab14){return _0x53ab14[_0x8fd9('0x16')]()[_0x8fd9('0x17')](function(){_0x218d92[_0x8fd9('0xc')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1186a4){return function(_0x5a2641){if(!_0x5a2641){_0x1186a4[_0x8fd9('0xb')](0x194);}return _0x5a2641;};}function handleError(_0x34a616,_0xa194f8){_0xa194f8=_0xa194f8||0x1f4;return function(_0x1e8f1d){logger[_0x8fd9('0x18')](_0x1e8f1d['stack']);if(_0x1e8f1d[_0x8fd9('0x19')]){delete _0x1e8f1d[_0x8fd9('0x19')];}_0x34a616[_0x8fd9('0xc')](_0xa194f8)[_0x8fd9('0x1a')](_0x1e8f1d);};}function maskClientSecret(_0x1872f5){return _[_0x8fd9('0x1b')](_0x1872f5[_0x8fd9('0x1c')](0x0,0x3),0x14,'*');}exports[_0x8fd9('0x1d')]=function(_0x96c39f,_0x3c8d95){var _0x1d0dcc={},_0x1ade1d={},_0x2241aa={'count':0x0,'rows':[]};var _0x1b923e=_['map'](db['CloudProvider']['rawAttributes'],function(_0x2fee11){return{'name':_0x2fee11[_0x8fd9('0x1e')],'type':_0x2fee11[_0x8fd9('0x1f')][_0x8fd9('0x20')]};});_0x1ade1d[_0x8fd9('0x21')]=_[_0x8fd9('0x22')](_0x1b923e,_0x8fd9('0x19'));_0x1ade1d[_0x8fd9('0x23')]=_[_0x8fd9('0x24')](_0x96c39f[_0x8fd9('0x23')]);_0x1ade1d['filters']=_[_0x8fd9('0x25')](_0x1ade1d[_0x8fd9('0x21')],_0x1ade1d[_0x8fd9('0x23')]);_0x1d0dcc['attributes']=_[_0x8fd9('0x25')](_0x1ade1d[_0x8fd9('0x21')],qs[_0x8fd9('0x26')](_0x96c39f[_0x8fd9('0x23')]['fields']));_0x1d0dcc[_0x8fd9('0x27')]=_0x1d0dcc[_0x8fd9('0x27')][_0x8fd9('0x28')]?_0x1d0dcc['attributes']:_0x1ade1d[_0x8fd9('0x21')];if(!_0x96c39f[_0x8fd9('0x23')]['hasOwnProperty'](_0x8fd9('0x29'))){_0x1d0dcc[_0x8fd9('0x11')]=qs[_0x8fd9('0x11')](_0x96c39f[_0x8fd9('0x23')][_0x8fd9('0x11')]);_0x1d0dcc[_0x8fd9('0xf')]=qs[_0x8fd9('0xf')](_0x96c39f['query'][_0x8fd9('0xf')]);}_0x1d0dcc[_0x8fd9('0x2a')]=qs[_0x8fd9('0x2b')](_0x96c39f[_0x8fd9('0x23')][_0x8fd9('0x2b')]);_0x1d0dcc[_0x8fd9('0x2c')]=qs[_0x8fd9('0x2d')](_[_0x8fd9('0x2e')](_0x96c39f[_0x8fd9('0x23')],_0x1ade1d['filters']),_0x1b923e);if(_0x96c39f[_0x8fd9('0x23')][_0x8fd9('0x2f')]){_0x1d0dcc['where']=_[_0x8fd9('0x30')](_0x1d0dcc[_0x8fd9('0x2c')],{'$or':_[_0x8fd9('0x22')](_0x1b923e,function(_0x181894){if(_0x181894['type']!==_0x8fd9('0x31')){var _0x1e7e06={};_0x1e7e06[_0x181894[_0x8fd9('0x19')]]={'$like':'%'+_0x96c39f[_0x8fd9('0x23')]['filter']+'%'};return _0x1e7e06;}})});}_0x1d0dcc=_['merge']({},_0x1d0dcc,_0x96c39f[_0x8fd9('0x32')]);var _0x37e2cc={'where':_0x1d0dcc[_0x8fd9('0x2c')]};return db[_0x8fd9('0x33')]['count'](_0x37e2cc)[_0x8fd9('0x17')](function(_0x30c6b5){_0x2241aa['count']=_0x30c6b5;if(_0x96c39f[_0x8fd9('0x23')][_0x8fd9('0x34')]){_0x1d0dcc[_0x8fd9('0x35')]=[{'all':!![]}];}return db['CloudProvider'][_0x8fd9('0x36')](_0x1d0dcc);})[_0x8fd9('0x17')](function(_0x4bc1eb){_0x2241aa[_0x8fd9('0x37')]=_[_0x8fd9('0x22')](_0x4bc1eb,function(_0x50e31c){if(_0x50e31c[_0x8fd9('0x38')]===_0x8fd9('0x39')){var _0x836d17=encryptor['decryptString'](_0x50e31c[_0x8fd9('0x3a')]);_0x50e31c[_0x8fd9('0x3a')]=maskClientSecret(_0x836d17);}return _0x50e31c;});return _0x2241aa;})[_0x8fd9('0x17')](respondWithFilteredResult(_0x3c8d95,_0x1d0dcc))[_0x8fd9('0x3b')](handleError(_0x3c8d95,null));};exports[_0x8fd9('0x3c')]=function(_0x505b40,_0x18fdca){var _0x4413a9={'raw':!![],'where':{'id':_0x505b40[_0x8fd9('0x3d')]['id']}},_0x529a9c={};_0x529a9c['model']=_[_0x8fd9('0x24')](db[_0x8fd9('0x33')][_0x8fd9('0x3e')]);_0x529a9c[_0x8fd9('0x23')]=_['keys'](_0x505b40['query']);_0x529a9c[_0x8fd9('0x2d')]=_[_0x8fd9('0x25')](_0x529a9c[_0x8fd9('0x21')],_0x529a9c[_0x8fd9('0x23')]);_0x4413a9['attributes']=_[_0x8fd9('0x25')](_0x529a9c[_0x8fd9('0x21')],qs['fields'](_0x505b40['query'][_0x8fd9('0x26')]));_0x4413a9[_0x8fd9('0x27')]=_0x4413a9[_0x8fd9('0x27')][_0x8fd9('0x28')]?_0x4413a9[_0x8fd9('0x27')]:_0x529a9c[_0x8fd9('0x21')];if(_0x505b40['query'][_0x8fd9('0x34')]){_0x4413a9['include']=[{'all':!![]}];}_0x4413a9=_[_0x8fd9('0x30')]({},_0x4413a9,_0x505b40[_0x8fd9('0x32')]);return db[_0x8fd9('0x33')]['find'](_0x4413a9)[_0x8fd9('0x17')](handleEntityNotFound(_0x18fdca,null))[_0x8fd9('0x17')](function(_0x226ea2){if(_0x226ea2['service']===_0x8fd9('0x39')){var _0x10385d=encryptor[_0x8fd9('0x3f')](_0x226ea2[_0x8fd9('0x3a')]);_0x226ea2[_0x8fd9('0x3a')]=maskClientSecret(_0x10385d);}return _0x226ea2;})[_0x8fd9('0x17')](respondWithResult(_0x18fdca,null))[_0x8fd9('0x3b')](handleError(_0x18fdca,null));};exports[_0x8fd9('0x40')]=function(_0x1f259e,_0xb74d0f){if(!_0x1f259e['body']['name'])throw new Error(_0x8fd9('0x41'));if(!_0x1f259e[_0x8fd9('0x42')][_0x8fd9('0x38')])throw new Error(_0x8fd9('0x43'));var _0x58c4d9=db[_0x8fd9('0x33')]['rawAttributes'][_0x8fd9('0x38')][_0x8fd9('0x44')];if(!_0x58c4d9[_0x8fd9('0x45')](_0x1f259e[_0x8fd9('0x42')]['service']))throw new Error(_0x8fd9('0x46')+_0x58c4d9['join'](',\x20'));if(_0x1f259e[_0x8fd9('0x42')][_0x8fd9('0x38')]==='MicrosoftAzure'&&_0x1f259e[_0x8fd9('0x42')][_0x8fd9('0x3a')]){_0x1f259e[_0x8fd9('0x42')]['data3']=encryptor['encryptString'](_0x1f259e[_0x8fd9('0x42')][_0x8fd9('0x3a')]);}return db['CloudProvider']['create'](_0x1f259e[_0x8fd9('0x42')],{})[_0x8fd9('0x17')](respondWithResult(_0xb74d0f,0xc9))[_0x8fd9('0x3b')](handleError(_0xb74d0f,null));};exports[_0x8fd9('0x15')]=function(_0x592c7a,_0x19fbf5){if(_0x592c7a['body']['id']){delete _0x592c7a[_0x8fd9('0x42')]['id'];}return db['CloudProvider']['find']({'where':{'id':_0x592c7a[_0x8fd9('0x3d')]['id']}})[_0x8fd9('0x17')](handleEntityNotFound(_0x19fbf5,null))[_0x8fd9('0x17')](function(_0x2d7ede){if(_0x2d7ede['service']==='MicrosoftAzure'&&_0x592c7a[_0x8fd9('0x42')][_0x8fd9('0x3a')]){_0x592c7a[_0x8fd9('0x42')][_0x8fd9('0x3a')]=encryptor[_0x8fd9('0x47')](_0x592c7a[_0x8fd9('0x42')][_0x8fd9('0x3a')]);}return _0x2d7ede;})['then'](saveUpdates(_0x592c7a['body'],null))[_0x8fd9('0x17')](respondWithResult(_0x19fbf5,null))[_0x8fd9('0x3b')](handleError(_0x19fbf5,null));};exports[_0x8fd9('0x16')]=function(_0x332a20,_0x4510ae){return db[_0x8fd9('0x33')]['find']({'where':{'id':_0x332a20['params']['id']}})[_0x8fd9('0x17')](handleEntityNotFound(_0x4510ae,null))[_0x8fd9('0x17')](removeEntity(_0x4510ae,null))[_0x8fd9('0x3b')](handleError(_0x4510ae,null));};exports[_0x8fd9('0x48')]=function(_0x5e3953,_0x116129){return db[_0x8fd9('0x33')][_0x8fd9('0x49')]({'where':{'id':_0x5e3953[_0x8fd9('0x3d')]['id']},'raw':!![]})['then'](function(_0x4de2ea){if(!_0x4de2ea)return _0x116129[_0x8fd9('0xb')](0x194);return{'url':oauth['generateMicrosoftAuthorizationUrl'](_0x4de2ea,_0x5e3953[_0x8fd9('0x4a')]['id'])};})['then'](respondWithResult(_0x116129,null))[_0x8fd9('0x3b')](handleError(_0x116129,null));};exports['oauth2MicrosoftCallback']=function(_0x85bfdc,_0xb57d40){var _0x5a3ec6=_0x85bfdc[_0x8fd9('0x42')];var _0x2016cb;var _0x491ed4;if(_0x5a3ec6[_0x8fd9('0x18')])throw _0x5a3ec6;redis[_0x8fd9('0x4b')](_0x5a3ec6[_0x8fd9('0x4c')])[_0x8fd9('0x17')](function(_0x35caf4){if(!_0x35caf4)throw new Error(_0x8fd9('0x4d'));_0x2016cb=JSON['parse'](_0x35caf4);var _0x4b025a=Buffer[_0x8fd9('0x4e')](_0x5a3ec6[_0x8fd9('0x4c')],_0x8fd9('0x4f'))['toString'](_0x8fd9('0x50'));_0x491ed4=JSON['parse'](_0x4b025a);if(!oauth[_0x8fd9('0x51')](_0x5a3ec6[_0x8fd9('0x52')],_0x2016cb[_0x8fd9('0x53')]))throw new Error(_0x8fd9('0x54'));redis[_0x8fd9('0x55')](_0x5a3ec6[_0x8fd9('0x4c')]);return oauth['getOauth2MicrosoftAccessToken'](_0x5a3ec6[_0x8fd9('0x56')],_0x2016cb);})[_0x8fd9('0x17')](function(_0x64e5d4){_0x2016cb[_0x8fd9('0x57')]=_0x64e5d4['access_token'];_0x2016cb[_0x8fd9('0x58')]=_0x64e5d4[_0x8fd9('0x59')];return db[_0x8fd9('0x33')][_0x8fd9('0x15')]({'data5':_0x2016cb['data5'],'data6':_0x2016cb['data6']},{'where':{'id':_0x2016cb['id']}});})[_0x8fd9('0x17')](function(){oauth[_0x8fd9('0x5a')](_0x2016cb);socket['emit'](_0x8fd9('0x5b'),{'id':_0x491ed4['id']});return;})[_0x8fd9('0x17')](respondWithStatusCode(_0xb57d40,null))[_0x8fd9('0x3b')](function(_0x5e93c0){if(_0x491ed4){socket[_0x8fd9('0x5c')]('microsoftAuthorization:error',{'id':_0x491ed4['id']});}if(!_0x2016cb){logger['error'](_0x8fd9('0x5d'),_0x5e93c0);return _0xb57d40[_0x8fd9('0xc')](0x1f4)[_0x8fd9('0x1a')](_0x5e93c0[_0x8fd9('0x5e')]);}logger[_0x8fd9('0x18')](_0x8fd9('0x5f'),_0x2016cb['id'],JSON['stringify'](_0x5e93c0));});};
\ No newline at end of file
index fdb9d65..aa47b29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8059=['rimraf','CloudProvider','cloud_providers','lodash','../../config/logger','moment','request-promise','path'];(function(_0x5d43b5,_0x3d1c74){var _0x2c5fba=function(_0x3532a8){while(--_0x3532a8){_0x5d43b5['push'](_0x5d43b5['shift']());}};_0x2c5fba(++_0x3d1c74);}(_0x8059,0x9b));var _0x9805=function(_0x1d0aee,_0x2c4454){_0x1d0aee=_0x1d0aee-0x0;var _0x34ee2c=_0x8059[_0x1d0aee];return _0x34ee2c;};'use strict';var _=require(_0x9805('0x0'));var util=require('util');var logger=require(_0x9805('0x1'))('api');var moment=require(_0x9805('0x2'));var BPromise=require('bluebird');var rp=require(_0x9805('0x3'));var fs=require('fs');var path=require(_0x9805('0x4'));var rimraf=require(_0x9805('0x5'));var config=require('../../config/environment');var attributes=require('./cloudProvider.attributes');module['exports']=function(_0x22d82a,_0x2e0d0b){return _0x22d82a['define'](_0x9805('0x6'),attributes,{'tableName':_0x9805('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcd0a=['lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','CloudProvider','cloud_providers'];(function(_0x3e9176,_0x50d1e3){var _0x2c583c=function(_0x47cb13){while(--_0x47cb13){_0x3e9176['push'](_0x3e9176['shift']());}};_0x2c583c(++_0x50d1e3);}(_0xcd0a,0x1e1));var _0xacd0=function(_0x18593c,_0x448b00){_0x18593c=_0x18593c-0x0;var _0x4f7799=_0xcd0a[_0x18593c];return _0x4f7799;};'use strict';var _=require(_0xacd0('0x0'));var util=require(_0xacd0('0x1'));var logger=require(_0xacd0('0x2'))(_0xacd0('0x3'));var moment=require('moment');var BPromise=require(_0xacd0('0x4'));var rp=require(_0xacd0('0x5'));var fs=require('fs');var path=require(_0xacd0('0x6'));var rimraf=require(_0xacd0('0x7'));var config=require(_0xacd0('0x8'));var attributes=require('./cloudProvider.attributes');module[_0xacd0('0x9')]=function(_0x16989d,_0x219c82){return _0x16989d[_0xacd0('0xa')](_0xacd0('0xb'),attributes,{'tableName':_0xacd0('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 388f774..bdfc763 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc483=['email','offline_access','https://outlook.office365.com/IMAP.AccessAsUser.All','https://outlook.office.com/POP.AccessAsUser.All','/authorize','/token','map','type','Dynamics365','push','/.default','join','Outlook365','data7','replace','data2','code','from','stringify','base64','randomBytes','toString','hex','client_id','response_type','redirect_uri','data4','response_mode','form_post','scope','state','nonce','key','value','data1','decode','payload','issuer','aud','audience','isAfter','exp','resolve','then','data3','CloudProvider','findOne','refresh_token','data6','POST','{TENANT_ID}','access_token','update','data5','catch','error','Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s','authorization_code','decryptString','intervals','bind','findAll','inspect','[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s','exports','lodash','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','openid','profile'];(function(_0x1ad618,_0x3fdd4c){var _0x390f3f=function(_0x1801f6){while(--_0x1801f6){_0x1ad618['push'](_0x1ad618['shift']());}};_0x390f3f(++_0x3fdd4c);}(_0xc483,0x94));var _0x3c48=function(_0x39690b,_0x2cb2a9){_0x39690b=_0x39690b-0x0;var _0x5d22f4=_0xc483[_0x39690b];return _0x5d22f4;};'use strict';var _=require(_0x3c48('0x0'));var crypto=require('crypto');var jwt=require(_0x3c48('0x1'));var moment=require(_0x3c48('0x2'));var Redis=require(_0x3c48('0x3'));var rp=require(_0x3c48('0x4'));var util=require(_0x3c48('0x5'));var encryptor=require(_0x3c48('0x6'));var config=require(_0x3c48('0x7'));var logger=require(_0x3c48('0x8'))(_0x3c48('0x9'));var schedule=require(_0x3c48('0xa'));var db=require(_0x3c48('0xb'))['db'];config[_0x3c48('0xc')]=_[_0x3c48('0xd')](config['redis'],{'host':_0x3c48('0xe'),'port':0x18eb});var redis=new Redis(config[_0x3c48('0xc')]);var MICROSOFT_AUTH_URL=_0x3c48('0xf');var AZURE_AUTH_SCOPES={'Outlook365':[_0x3c48('0x10'),_0x3c48('0x11'),_0x3c48('0x12'),_0x3c48('0x13'),_0x3c48('0x14'),_0x3c48('0x15'),'https://outlook.office.com/SMTP.Send'],'Dynamics365':[_0x3c48('0x10'),'offline_access']};var MICROSOFT_AUTH_ENDPOINT=_0x3c48('0x16');var MICROSOFT_TOKEN_ENDPOINT=_0x3c48('0x17');var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x1f9ecb){var _0x24842a=_[_0x3c48('0x18')](AZURE_AUTH_SCOPES[_0x1f9ecb[_0x3c48('0x19')]]);if(_0x1f9ecb['type']===_0x3c48('0x1a'))_0x24842a[_0x3c48('0x1b')](_0x1f9ecb['data7']+_0x3c48('0x1c'));return _0x24842a[_0x3c48('0x1d')]('\x20');}function getAccessTokenScope(_0x1fadf0){if(_0x1fadf0['type']===_0x3c48('0x1e'))return _0x3c48('0x14');if(_0x1fadf0[_0x3c48('0x19')]===_0x3c48('0x1a'))return _0x1fadf0[_0x3c48('0x1f')]+'/.default';}function generateMicrosoftAuthorizationUrl(_0x2675dd,_0x28ce4e){var _0x52c4b2=MICROSOFT_AUTH_URL[_0x3c48('0x20')]('{TENANT_ID}',_0x2675dd[_0x3c48('0x21')]);var _0x33af41=[_0x3c48('0x22'),'id_token'];var _0x5469f9=Buffer[_0x3c48('0x23')](JSON[_0x3c48('0x24')]({'id':_0x28ce4e}))['toString'](_0x3c48('0x25'));var _0x3726e6=crypto[_0x3c48('0x26')](0x10)[_0x3c48('0x27')](_0x3c48('0x28'));var _0x2d3813=getAuthorizationScopes(_0x2675dd);var _0x2e5a15=[{'key':_0x3c48('0x29'),'value':_0x2675dd['data1']},{'key':_0x3c48('0x2a'),'value':encodeURIComponent(_0x33af41[_0x3c48('0x1d')]('\x20'))},{'key':_0x3c48('0x2b'),'value':_0x2675dd[_0x3c48('0x2c')]},{'key':_0x3c48('0x2d'),'value':_0x3c48('0x2e')},{'key':_0x3c48('0x2f'),'value':encodeURIComponent(_0x2d3813)},{'key':_0x3c48('0x30'),'value':_0x5469f9},{'key':_0x3c48('0x31'),'value':_0x3726e6},{'key':'prompt','value':'login'}];var _0x1a33ec=_0x52c4b2+MICROSOFT_AUTH_ENDPOINT+'?'+_['map'](_0x2e5a15,function(_0x240fa7){return _0x240fa7[_0x3c48('0x32')]+'='+_0x240fa7[_0x3c48('0x33')];})[_0x3c48('0x1d')]('&');_0x2675dd['oauth2Claims']={'issuer':_0x52c4b2[_0x3c48('0x20')]('oauth2/',''),'audience':_0x2675dd[_0x3c48('0x34')],'state':_0x5469f9,'nonce':_0x3726e6};redis['set'](_0x5469f9,JSON['stringify'](_0x2675dd));return _0x1a33ec;}function isValidIdToken(_0x42a196,_0x40648d){try{var _0x5b131d=jwt[_0x3c48('0x35')](_0x42a196,{'complete':!![]});var _0x1f7127=_0x5b131d[_0x3c48('0x36')];if(_0x1f7127['iss']!==_0x40648d[_0x3c48('0x37')])return![];if(_0x1f7127[_0x3c48('0x38')]!==_0x40648d[_0x3c48('0x39')])return![];if(_0x1f7127[_0x3c48('0x31')]!==_0x40648d['nonce'])return![];if(moment()[_0x3c48('0x3a')](moment['unix'](_0x1f7127[_0x3c48('0x3b')])))return![];return!![];}catch(_0x224388){throw _0x224388;}}function refreshOauth2MicrosoftAccessToken(_0x2777a5){return Promise[_0x3c48('0x3c')]()[_0x3c48('0x3d')](function(){if(_0x2777a5[_0x3c48('0x3e')])return _0x2777a5;return db[_0x3c48('0x3f')][_0x3c48('0x40')]({'where':{'id':_0x2777a5['id']},'raw':!![]});})[_0x3c48('0x3d')](function(_0x527ea1){var _0xdedea9={'grant_type':_0x3c48('0x41'),'refresh_token':_0x527ea1[_0x3c48('0x42')],'scope':getAccessTokenScope(_0x527ea1),'redirect_uri':_0x527ea1[_0x3c48('0x2c')],'client_id':_0x527ea1[_0x3c48('0x34')],'client_secret':encryptor['decryptString'](_0x527ea1[_0x3c48('0x3e')])};var _0x55e241={'method':_0x3c48('0x43'),'uri':MICROSOFT_AUTH_URL[_0x3c48('0x20')](_0x3c48('0x44'),_0x527ea1['data2'])+MICROSOFT_TOKEN_ENDPOINT,'form':_0xdedea9,'json':!![]};return rp(_0x55e241);})['then'](function(_0x16f9b9){_0x2777a5['data5']=_0x16f9b9[_0x3c48('0x45')];_0x2777a5[_0x3c48('0x42')]=_0x16f9b9[_0x3c48('0x41')];return db[_0x3c48('0x3f')][_0x3c48('0x46')]({'data5':_0x2777a5[_0x3c48('0x47')],'data6':_0x2777a5[_0x3c48('0x42')]},{'where':{'id':_0x2777a5['id']}});})[_0x3c48('0x3d')](function(){return _0x2777a5;})[_0x3c48('0x48')](function(_0x4a91ce){logger[_0x3c48('0x49')](_0x3c48('0x4a'),_0x2777a5['id'],_0x4a91ce);});}function getOauth2MicrosoftAccessToken(_0x51efc5,_0x19cbd8){var _0x37ff27={'grant_type':_0x3c48('0x4b'),'code':_0x51efc5,'scope':getAccessTokenScope(_0x19cbd8),'redirect_uri':_0x19cbd8[_0x3c48('0x2c')],'client_id':_0x19cbd8['data1'],'client_secret':encryptor[_0x3c48('0x4c')](_0x19cbd8[_0x3c48('0x3e')])};var _0x17b21b={'method':_0x3c48('0x43'),'uri':MICROSOFT_AUTH_URL[_0x3c48('0x20')](_0x3c48('0x44'),_0x19cbd8[_0x3c48('0x21')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x37ff27,'json':!![]};return rp(_0x17b21b);}function startRefreshInterval(_0x55a3cd){var _0x5c1a5f=schedule[_0x3c48('0x4d')];if(_0x5c1a5f[_0x55a3cd['id']])clearInterval(_0x5c1a5f[_0x55a3cd['id']]);_0x5c1a5f[_0x55a3cd['id']]=setInterval(refreshOauth2MicrosoftAccessToken[_0x3c48('0x4e')](this,{'id':_0x55a3cd['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule[_0x3c48('0x4d')]=_0x5c1a5f;}function startAllRefreshIntervals(){return db['CloudProvider'][_0x3c48('0x4f')]({'where':{'data6':{'$ne':null}},'raw':!![]})[_0x3c48('0x3d')](function(_0x464d0d){var _0x54f3c5=_0x464d0d[_0x3c48('0x18')](function(_0x337c1c){return refreshOauth2MicrosoftAccessToken(_0x337c1c)[_0x3c48('0x3d')](function(_0x490e74){startRefreshInterval(_0x490e74);});});return Promise['all'](_0x54f3c5);})[_0x3c48('0x48')](function(_0x2c5b5d){var _0x35a2f4=_0x2c5b5d?util[_0x3c48('0x50')](_0x2c5b5d,{'showHidden':![],'depth':null}):'';logger['error'](_0x3c48('0x51'),_0x35a2f4);});}module[_0x3c48('0x52')]={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file
+var _0x8939=['set','payload','iss','issuer','aud','isAfter','exp','data3','CloudProvider','findOne','data6','decryptString','POST','data5','access_token','refresh_token','update','catch','data4','intervals','bind','findAll','then','all','inspect','exports','lodash','jsonwebtoken','moment','ioredis','request-promise','util','../../config/logger','api','../../config/schedule/cloud-provider','../../mysqldb','defaults','localhost','redis','openid','profile','email','offline_access','https://outlook.office365.com/IMAP.AccessAsUser.All','https://outlook.office.com/POP.AccessAsUser.All','https://outlook.office.com/SMTP.Send','/token','map','type','Dynamics365','push','data7','join','Outlook365','/.default','replace','{TENANT_ID}','data2','code','from','toString','base64','randomBytes','hex','client_id','data1','response_type','redirect_uri','response_mode','form_post','scope','state','nonce','prompt','login','key','value','oauth2/'];(function(_0x35d918,_0x42ae2d){var _0x4230e5=function(_0x5dc85a){while(--_0x5dc85a){_0x35d918['push'](_0x35d918['shift']());}};_0x4230e5(++_0x42ae2d);}(_0x8939,0x152));var _0x9893=function(_0xe3cb68,_0x34361c){_0xe3cb68=_0xe3cb68-0x0;var _0x1ff65a=_0x8939[_0xe3cb68];return _0x1ff65a;};'use strict';var _=require(_0x9893('0x0'));var crypto=require('crypto');var jwt=require(_0x9893('0x1'));var moment=require(_0x9893('0x2'));var Redis=require(_0x9893('0x3'));var rp=require(_0x9893('0x4'));var util=require(_0x9893('0x5'));var encryptor=require('../../components/encryptor');var config=require('../../config/environment');var logger=require(_0x9893('0x6'))(_0x9893('0x7'));var schedule=require(_0x9893('0x8'));var db=require(_0x9893('0x9'))['db'];config['redis']=_[_0x9893('0xa')](config['redis'],{'host':_0x9893('0xb'),'port':0x18eb});var redis=new Redis(config[_0x9893('0xc')]);var MICROSOFT_AUTH_URL='https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0';var AZURE_AUTH_SCOPES={'Outlook365':[_0x9893('0xd'),_0x9893('0xe'),_0x9893('0xf'),_0x9893('0x10'),_0x9893('0x11'),_0x9893('0x12'),_0x9893('0x13')],'Dynamics365':[_0x9893('0xd'),_0x9893('0x10')]};var MICROSOFT_AUTH_ENDPOINT='/authorize';var MICROSOFT_TOKEN_ENDPOINT=_0x9893('0x14');var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x544e86){var _0x169be8=_[_0x9893('0x15')](AZURE_AUTH_SCOPES[_0x544e86['type']]);if(_0x544e86[_0x9893('0x16')]===_0x9893('0x17'))_0x169be8[_0x9893('0x18')](_0x544e86[_0x9893('0x19')]+'/.default');return _0x169be8[_0x9893('0x1a')]('\x20');}function getAccessTokenScope(_0x57cd38){if(_0x57cd38[_0x9893('0x16')]===_0x9893('0x1b'))return _0x9893('0x11');if(_0x57cd38[_0x9893('0x16')]==='Dynamics365')return _0x57cd38[_0x9893('0x19')]+_0x9893('0x1c');}function generateMicrosoftAuthorizationUrl(_0x1f3539,_0x582be0){var _0x43f3fc=MICROSOFT_AUTH_URL[_0x9893('0x1d')](_0x9893('0x1e'),_0x1f3539[_0x9893('0x1f')]);var _0x34b35c=[_0x9893('0x20'),'id_token'];var _0x375bbf=Buffer[_0x9893('0x21')](JSON['stringify']({'id':_0x582be0}))[_0x9893('0x22')](_0x9893('0x23'));var _0x3fe9e6=crypto[_0x9893('0x24')](0x10)['toString'](_0x9893('0x25'));var _0x2999c2=getAuthorizationScopes(_0x1f3539);var _0x24d673=[{'key':_0x9893('0x26'),'value':_0x1f3539[_0x9893('0x27')]},{'key':_0x9893('0x28'),'value':encodeURIComponent(_0x34b35c[_0x9893('0x1a')]('\x20'))},{'key':_0x9893('0x29'),'value':_0x1f3539['data4']},{'key':_0x9893('0x2a'),'value':_0x9893('0x2b')},{'key':_0x9893('0x2c'),'value':encodeURIComponent(_0x2999c2)},{'key':_0x9893('0x2d'),'value':_0x375bbf},{'key':_0x9893('0x2e'),'value':_0x3fe9e6},{'key':_0x9893('0x2f'),'value':_0x9893('0x30')}];var _0xa8d0a3=_0x43f3fc+MICROSOFT_AUTH_ENDPOINT+'?'+_[_0x9893('0x15')](_0x24d673,function(_0x77e4bb){return _0x77e4bb[_0x9893('0x31')]+'='+_0x77e4bb[_0x9893('0x32')];})[_0x9893('0x1a')]('&');_0x1f3539['oauth2Claims']={'issuer':_0x43f3fc['replace'](_0x9893('0x33'),''),'audience':_0x1f3539['data1'],'state':_0x375bbf,'nonce':_0x3fe9e6};redis[_0x9893('0x34')](_0x375bbf,JSON['stringify'](_0x1f3539));return _0xa8d0a3;}function isValidIdToken(_0x32166e,_0x25d664){try{var _0x4f3737=jwt['decode'](_0x32166e,{'complete':!![]});var _0x248052=_0x4f3737[_0x9893('0x35')];if(_0x248052[_0x9893('0x36')]!==_0x25d664[_0x9893('0x37')])return![];if(_0x248052[_0x9893('0x38')]!==_0x25d664['audience'])return![];if(_0x248052[_0x9893('0x2e')]!==_0x25d664[_0x9893('0x2e')])return![];if(moment()[_0x9893('0x39')](moment['unix'](_0x248052[_0x9893('0x3a')])))return![];return!![];}catch(_0x1a3452){throw _0x1a3452;}}function refreshOauth2MicrosoftAccessToken(_0x3e7bf1){return Promise['resolve']()['then'](function(){if(_0x3e7bf1[_0x9893('0x3b')])return _0x3e7bf1;return db[_0x9893('0x3c')][_0x9893('0x3d')]({'where':{'id':_0x3e7bf1['id']},'raw':!![]});})['then'](function(_0x2bf167){var _0x1710d8={'grant_type':'refresh_token','refresh_token':_0x2bf167[_0x9893('0x3e')],'scope':getAccessTokenScope(_0x2bf167),'redirect_uri':_0x2bf167['data4'],'client_id':_0x2bf167[_0x9893('0x27')],'client_secret':encryptor[_0x9893('0x3f')](_0x2bf167['data3'])};var _0x45549a={'method':_0x9893('0x40'),'uri':MICROSOFT_AUTH_URL[_0x9893('0x1d')](_0x9893('0x1e'),_0x2bf167['data2'])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x1710d8,'json':!![]};return rp(_0x45549a);})['then'](function(_0x1c2b6e){_0x3e7bf1[_0x9893('0x41')]=_0x1c2b6e[_0x9893('0x42')];_0x3e7bf1[_0x9893('0x3e')]=_0x1c2b6e[_0x9893('0x43')];return db[_0x9893('0x3c')][_0x9893('0x44')]({'data5':_0x3e7bf1[_0x9893('0x41')],'data6':_0x3e7bf1[_0x9893('0x3e')]},{'where':{'id':_0x3e7bf1['id']}});})['then'](function(){return _0x3e7bf1;})[_0x9893('0x45')](function(_0x31b5ea){logger['error']('Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s',_0x3e7bf1['id'],_0x31b5ea);});}function getOauth2MicrosoftAccessToken(_0x1ab399,_0x3111bc){var _0x1632ef={'grant_type':'authorization_code','code':_0x1ab399,'scope':getAccessTokenScope(_0x3111bc),'redirect_uri':_0x3111bc[_0x9893('0x46')],'client_id':_0x3111bc[_0x9893('0x27')],'client_secret':encryptor[_0x9893('0x3f')](_0x3111bc[_0x9893('0x3b')])};var _0x892be9={'method':_0x9893('0x40'),'uri':MICROSOFT_AUTH_URL['replace'](_0x9893('0x1e'),_0x3111bc[_0x9893('0x1f')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x1632ef,'json':!![]};return rp(_0x892be9);}function startRefreshInterval(_0x50ae67){var _0x50dc85=schedule[_0x9893('0x47')];if(_0x50dc85[_0x50ae67['id']])clearInterval(_0x50dc85[_0x50ae67['id']]);_0x50dc85[_0x50ae67['id']]=setInterval(refreshOauth2MicrosoftAccessToken[_0x9893('0x48')](this,{'id':_0x50ae67['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule[_0x9893('0x47')]=_0x50dc85;}function startAllRefreshIntervals(){return db[_0x9893('0x3c')][_0x9893('0x49')]({'where':{'data6':{'$ne':null}},'raw':!![]})[_0x9893('0x4a')](function(_0x30fb01){var _0x4e2c08=_0x30fb01[_0x9893('0x15')](function(_0x44b5c1){return refreshOauth2MicrosoftAccessToken(_0x44b5c1)['then'](function(_0x4bd274){startRefreshInterval(_0x4bd274);});});return Promise[_0x9893('0x4b')](_0x4e2c08);})[_0x9893('0x45')](function(_0x2160ff){var _0x3f96b6=_0x2160ff?util[_0x9893('0x4c')](_0x2160ff,{'showHidden':![],'depth':null}):'';logger['error']('[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s',_0x3f96b6);});}module[_0x9893('0x4d')]={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file
index 2843815..29492ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad07=['util','bluebird','randomstring','../../config/utils','../../config/logger','rpc','jayson/promise','request','info','CloudProvider,\x20%s,\x20%s','request\x20sent','CloudProvider,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash'];(function(_0x410ed4,_0x5e4083){var _0x3ebce0=function(_0x568193){while(--_0x568193){_0x410ed4['push'](_0x410ed4['shift']());}};_0x3ebce0(++_0x5e4083);}(_0xad07,0xe3));var _0x7ad0=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xad07[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x7ad0('0x0'));var util=require(_0x7ad0('0x1'));var moment=require('moment');var BPromise=require(_0x7ad0('0x2'));var rs=require(_0x7ad0('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x7ad0('0x4'));var logger=require(_0x7ad0('0x5'))(_0x7ad0('0x6'));var config=require('../../config/environment');var jayson=require(_0x7ad0('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2d09f9,_0x458ffd,_0x533282){return new BPromise(function(_0x50b4e7,_0x8684e2){return client[_0x7ad0('0x8')](_0x2d09f9,_0x533282)['then'](function(_0x5afa7c){logger[_0x7ad0('0x9')](_0x7ad0('0xa'),_0x458ffd,_0x7ad0('0xb'));logger['debug'](_0x7ad0('0xc'),_0x458ffd,_0x7ad0('0xb'),JSON[_0x7ad0('0xd')](_0x5afa7c));if(_0x5afa7c[_0x7ad0('0xe')]){if(_0x5afa7c[_0x7ad0('0xe')][_0x7ad0('0xf')]===0x1f4){logger[_0x7ad0('0xe')](_0x7ad0('0xa'),_0x458ffd,_0x5afa7c[_0x7ad0('0xe')]['message']);return _0x8684e2(_0x5afa7c[_0x7ad0('0xe')][_0x7ad0('0x10')]);}logger[_0x7ad0('0xe')](_0x7ad0('0xa'),_0x458ffd,_0x5afa7c['error']['message']);return _0x50b4e7(_0x5afa7c[_0x7ad0('0xe')][_0x7ad0('0x10')]);}else{logger[_0x7ad0('0x9')](_0x7ad0('0xa'),_0x458ffd,_0x7ad0('0xb'));_0x50b4e7(_0x5afa7c[_0x7ad0('0x11')][_0x7ad0('0x10')]);}})[_0x7ad0('0x12')](function(_0x52c802){logger[_0x7ad0('0xe')](_0x7ad0('0xa'),_0x458ffd,_0x52c802);_0x8684e2(_0x52c802);});});}
\ No newline at end of file
+var _0x3c91=['client','http','request','then','CloudProvider,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0xcbe787,_0x401e4c){var _0x4c78fa=function(_0x392922){while(--_0x392922){_0xcbe787['push'](_0xcbe787['shift']());}};_0x4c78fa(++_0x401e4c);}(_0x3c91,0x1af));var _0x13c9=function(_0x1fa4f8,_0x16c215){_0x1fa4f8=_0x1fa4f8-0x0;var _0x5225c5=_0x3c91[_0x1fa4f8];return _0x5225c5;};'use strict';var _=require(_0x13c9('0x0'));var util=require(_0x13c9('0x1'));var moment=require(_0x13c9('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x13c9('0x3'));var db=require(_0x13c9('0x4'))['db'];var utils=require(_0x13c9('0x5'));var logger=require('../../config/logger')(_0x13c9('0x6'));var config=require(_0x13c9('0x7'));var jayson=require(_0x13c9('0x8'));var client=jayson[_0x13c9('0x9')][_0x13c9('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4c4332,_0x58b610,_0x44243f){return new BPromise(function(_0x196c2a,_0x5fd23){return client[_0x13c9('0xb')](_0x4c4332,_0x44243f)[_0x13c9('0xc')](function(_0x5370dd){logger['info'](_0x13c9('0xd'),_0x58b610,_0x13c9('0xe'));logger['debug']('CloudProvider,\x20%s,\x20%s,\x20%s',_0x58b610,_0x13c9('0xe'),JSON[_0x13c9('0xf')](_0x5370dd));if(_0x5370dd[_0x13c9('0x10')]){if(_0x5370dd[_0x13c9('0x10')][_0x13c9('0x11')]===0x1f4){logger[_0x13c9('0x10')](_0x13c9('0xd'),_0x58b610,_0x5370dd['error'][_0x13c9('0x12')]);return _0x5fd23(_0x5370dd['error']['message']);}logger['error']('CloudProvider,\x20%s,\x20%s',_0x58b610,_0x5370dd['error'][_0x13c9('0x12')]);return _0x196c2a(_0x5370dd[_0x13c9('0x10')]['message']);}else{logger[_0x13c9('0x13')](_0x13c9('0xd'),_0x58b610,_0x13c9('0xe'));_0x196c2a(_0x5370dd[_0x13c9('0x14')][_0x13c9('0x12')]);}})[_0x13c9('0x15')](function(_0x238952){logger['error']('CloudProvider,\x20%s,\x20%s',_0x58b610,_0x238952);_0x5fd23(_0x238952);});});}
\ No newline at end of file
index 8dcb7d7..d036e58 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(_0x50fda9,_0x5ee44b){var _0x36b92b=function(_0x121877){while(--_0x121877){_0x50fda9['push'](_0x50fda9['shift']());}};_0x36b92b(++_0x5ee44b);}(_0x5f2f,0x73));var _0xf5f2=function(_0x245b99,_0x4dc787){_0x245b99=_0x245b99-0x0;var _0x37b53c=_0x5f2f[_0x245b99];return _0x37b53c;};'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 _0xc4aa=['put','/:id','destroy','/:id/oauth2/microsoft/authorize/','oauth2MicrosoftAuthorize','/oauth2/microsoft/callback','exports','express','Router','../../components/auth/service','./cloudProvider.controller','get','isAuthenticated','show','post','create'];(function(_0x352d3e,_0x1fea7a){var _0x4f9c74=function(_0x339ee0){while(--_0x339ee0){_0x352d3e['push'](_0x352d3e['shift']());}};_0x4f9c74(++_0x1fea7a);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x5f09c5,_0x2bfca0){_0x5f09c5=_0x5f09c5-0x0;var _0x426ad9=_0xc4aa[_0x5f09c5];return _0x426ad9;};'use strict';var express=require(_0xac4a('0x0'));var router=express[_0xac4a('0x1')]();var auth=require(_0xac4a('0x2'));var controller=require(_0xac4a('0x3'));router[_0xac4a('0x4')]('/',auth[_0xac4a('0x5')](),controller['index']);router['get']('/:id',auth[_0xac4a('0x5')](),controller[_0xac4a('0x6')]);router[_0xac4a('0x7')]('/',auth[_0xac4a('0x5')](),controller[_0xac4a('0x8')]);router[_0xac4a('0x9')](_0xac4a('0xa'),auth[_0xac4a('0x5')](),controller['update']);router['delete'](_0xac4a('0xa'),auth[_0xac4a('0x5')](),controller[_0xac4a('0xb')]);router['get'](_0xac4a('0xc'),auth[_0xac4a('0x5')](),controller[_0xac4a('0xd')]);router['post'](_0xac4a('0xe'),controller['oauth2MicrosoftCallback']);module[_0xac4a('0xf')]=router;
\ No newline at end of file
index 2f457a1..142c0a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bef=['exports','name','STRING','sequelize'];(function(_0x30ab14,_0x225a5e){var _0x34b9ef=function(_0x349cae){while(--_0x349cae){_0x30ab14['push'](_0x30ab14['shift']());}};_0x34b9ef(++_0x225a5e);}(_0x9bef,0x133));var _0xf9be=function(_0x409f23,_0x437f24){_0x409f23=_0x409f23-0x0;var _0x415162=_0x9bef[_0x409f23];return _0x415162;};'use strict';var Sequelize=require(_0xf9be('0x0'));module[_0xf9be('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xf9be('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize['STRING']},'companyId':{'type':Sequelize[_0xf9be('0x3')]},'website':{'type':Sequelize[_0xf9be('0x3')]},'phone':{'type':Sequelize['STRING']},'fax':{'type':Sequelize[_0xf9be('0x3')]},'type':{'type':Sequelize['STRING']},'street':{'type':Sequelize[_0xf9be('0x3')]},'postalCode':{'type':Sequelize[_0xf9be('0x3')]},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize[_0xf9be('0x3')]},'email':{'type':Sequelize[_0xf9be('0x3')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0xf9be('0x3')]},'sStreet':{'type':Sequelize[_0xf9be('0x3')]},'sPostalCode':{'type':Sequelize[_0xf9be('0x3')]},'sCity':{'type':Sequelize[_0xf9be('0x3')]},'sCountry':{'type':Sequelize[_0xf9be('0x3')]},'description':{'type':Sequelize[_0xf9be('0x3')]}};
\ No newline at end of file
+var _0x9af6=['name','sequelize','exports','STRING'];(function(_0x197313,_0x4de907){var _0x5b90fd=function(_0x58b032){while(--_0x58b032){_0x197313['push'](_0x197313['shift']());}};_0x5b90fd(++_0x4de907);}(_0x9af6,0xb5));var _0x69af=function(_0xd4ef3,_0x47e660){_0xd4ef3=_0xd4ef3-0x0;var _0x5416a7=_0x9af6[_0xd4ef3];return _0x5416a7;};'use strict';var Sequelize=require(_0x69af('0x0'));module[_0x69af('0x1')]={'name':{'type':Sequelize[_0x69af('0x2')],'unique':_0x69af('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0x69af('0x2')]},'companyId':{'type':Sequelize['STRING']},'website':{'type':Sequelize[_0x69af('0x2')]},'phone':{'type':Sequelize[_0x69af('0x2')]},'fax':{'type':Sequelize[_0x69af('0x2')]},'type':{'type':Sequelize[_0x69af('0x2')]},'street':{'type':Sequelize[_0x69af('0x2')]},'postalCode':{'type':Sequelize[_0x69af('0x2')]},'city':{'type':Sequelize[_0x69af('0x2')]},'country':{'type':Sequelize[_0x69af('0x2')]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0x69af('0x2')]},'sStreet':{'type':Sequelize[_0x69af('0x2')]},'sPostalCode':{'type':Sequelize['STRING']},'sCity':{'type':Sequelize[_0x69af('0x2')]},'sCountry':{'type':Sequelize[_0x69af('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index f953a7c..b9c24cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29ad=['filter','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Companies','UserProfileSection','userProfileId','autoAssociation','body','addContacts','CmContact','ids','omit','getContacts','findOne','map','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/environment','../../mysqldb','sendStatus','end','status','json','undefined','limit','count','offset','set','apply','reject','save','update','then','get','UserProfileResource','destroy','error','name','send','index','CmCompany','describe','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge'];(function(_0x324ed1,_0x41e2dd){var _0x53af7a=function(_0x29bffb){while(--_0x29bffb){_0x324ed1['push'](_0x324ed1['shift']());}};_0x53af7a(++_0x41e2dd);}(_0x29ad,0x177));var _0xd29a=function(_0x502b94,_0x2bd7ea){_0x502b94=_0x502b94-0x0;var _0x1c1334=_0x29ad[_0x502b94];return _0x1c1334;};'use strict';var emlformat=require(_0xd29a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd29a('0x1'));var jsonpatch=require(_0xd29a('0x2'));var rp=require('request-promise');var moment=require(_0xd29a('0x3'));var BPromise=require(_0xd29a('0x4'));var Mustache=require(_0xd29a('0x5'));var util=require(_0xd29a('0x6'));var path=require(_0xd29a('0x7'));var sox=require(_0xd29a('0x8'));var csv=require('to-csv');var ejs=require(_0xd29a('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd29a('0xa'));var squel=require(_0xd29a('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xd29a('0xc'));var toCsv=require(_0xd29a('0xd'));var querystring=require(_0xd29a('0xe'));var Papa=require(_0xd29a('0xf'));var Redis=require(_0xd29a('0x10'));var authService=require(_0xd29a('0x11'));var qs=require(_0xd29a('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xd29a('0x13'))('api');var utils=require('../../config/utils');var config=require(_0xd29a('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xd29a('0x15'))['db'];function respondWithStatusCode(_0x3c406f,_0x4d3b42){_0x4d3b42=_0x4d3b42||0xcc;return function(_0x4dbe1f){if(_0x4dbe1f){return _0x3c406f[_0xd29a('0x16')](_0x4d3b42);}return _0x3c406f['status'](_0x4d3b42)[_0xd29a('0x17')]();};}function respondWithResult(_0x3ff74d,_0x349c3c){_0x349c3c=_0x349c3c||0xc8;return function(_0xd06d45){if(_0xd06d45){return _0x3ff74d[_0xd29a('0x18')](_0x349c3c)[_0xd29a('0x19')](_0xd06d45);}};}function respondWithFilteredResult(_0xe5c011,_0x41f18e){return function(_0x34fc1e){if(_0x34fc1e){var _0x4e69e4=typeof _0x41f18e['offset']===_0xd29a('0x1a')&&typeof _0x41f18e[_0xd29a('0x1b')]===_0xd29a('0x1a');var _0x1bbfe4=_0x34fc1e[_0xd29a('0x1c')];var _0x4b4763=_0x4e69e4?0x0:_0x41f18e['offset'];var _0x30520f=_0x4e69e4?_0x34fc1e[_0xd29a('0x1c')]:_0x41f18e[_0xd29a('0x1d')]+_0x41f18e[_0xd29a('0x1b')];var _0x34c62b;if(_0x30520f>=_0x1bbfe4){_0x30520f=_0x1bbfe4;_0x34c62b=0xc8;}else{_0x34c62b=0xce;}_0xe5c011[_0xd29a('0x18')](_0x34c62b);return _0xe5c011[_0xd29a('0x1e')]('Content-Range',_0x4b4763+'-'+_0x30520f+'/'+_0x1bbfe4)[_0xd29a('0x19')](_0x34fc1e);}return null;};}function patchUpdates(_0x537c31){return function(_0x4c0a9c){try{jsonpatch[_0xd29a('0x1f')](_0x4c0a9c,_0x537c31,!![]);}catch(_0x501252){return BPromise[_0xd29a('0x20')](_0x501252);}return _0x4c0a9c[_0xd29a('0x21')]();};}function saveUpdates(_0x40f6b1,_0x188d3a){return function(_0x384a45){if(_0x384a45){return _0x384a45[_0xd29a('0x22')](_0x40f6b1)[_0xd29a('0x23')](function(_0x438a85){return _0x438a85;});}return null;};}function removeEntity(_0x4d1cd5,_0x4a1531){return function(_0x1d5b05){if(_0x1d5b05){return _0x1d5b05['destroy']()[_0xd29a('0x23')](function(){var _0x177655=_0x1d5b05[_0xd29a('0x24')]({'plain':!![]});var _0x145703='Companies';return db[_0xd29a('0x25')][_0xd29a('0x26')]({'where':{'type':_0x145703,'resourceId':_0x177655['id']}})['then'](function(){return _0x1d5b05;});})['then'](function(){_0x4d1cd5['status'](0xcc)[_0xd29a('0x17')]();});}};}function handleEntityNotFound(_0x5b5747,_0x471b64){return function(_0x3d40a2){if(!_0x3d40a2){_0x5b5747[_0xd29a('0x16')](0x194);}return _0x3d40a2;};}function handleError(_0x578163,_0x1b7957){_0x1b7957=_0x1b7957||0x1f4;return function(_0x1bfcce){logger[_0xd29a('0x27')](_0x1bfcce['stack']);if(_0x1bfcce[_0xd29a('0x28')]){delete _0x1bfcce[_0xd29a('0x28')];}_0x578163['status'](_0x1b7957)[_0xd29a('0x29')](_0x1bfcce);};}exports[_0xd29a('0x2a')]=function(_0x47246d,_0x5cdede){var _0x471e54={},_0x562f83={},_0x48cdeb={'count':0x0,'rows':[]};return db[_0xd29a('0x2b')][_0xd29a('0x2c')]()['then'](function(_0x50edbd){_0x562f83[_0xd29a('0x2d')]=_[_0xd29a('0x2e')](_0x50edbd);_0x562f83[_0xd29a('0x2f')]=_['keys'](_0x47246d[_0xd29a('0x2f')]);_0x562f83[_0xd29a('0x30')]=_[_0xd29a('0x31')](_0x562f83[_0xd29a('0x2d')],_0x562f83[_0xd29a('0x2f')]);_0x471e54[_0xd29a('0x32')]=_[_0xd29a('0x31')](_0x562f83[_0xd29a('0x2d')],qs['fields'](_0x47246d[_0xd29a('0x2f')][_0xd29a('0x33')]));_0x471e54['attributes']=_0x471e54[_0xd29a('0x32')][_0xd29a('0x34')]?_0x471e54['attributes']:_0x562f83[_0xd29a('0x2d')];if(!_0x47246d[_0xd29a('0x2f')][_0xd29a('0x35')](_0xd29a('0x36'))){_0x471e54[_0xd29a('0x1b')]=qs[_0xd29a('0x1b')](_0x47246d['query'][_0xd29a('0x1b')]);_0x471e54[_0xd29a('0x1d')]=qs[_0xd29a('0x1d')](_0x47246d[_0xd29a('0x2f')][_0xd29a('0x1d')]);}_0x471e54[_0xd29a('0x37')]=qs['sort'](_0x47246d['query'][_0xd29a('0x38')]);_0x471e54[_0xd29a('0x39')]=qs[_0xd29a('0x30')](_[_0xd29a('0x3a')](_0x47246d[_0xd29a('0x2f')],_0x562f83[_0xd29a('0x30')]),_0x50edbd);if(_0x47246d['query']['filter']){_0x471e54[_0xd29a('0x39')]=_[_0xd29a('0x3b')](_0x471e54[_0xd29a('0x39')],{'$or':_['map'](_0x471e54['attributes'],function(_0x465d71){var _0x4810d4={};_0x4810d4[_0x465d71]={'$like':'%'+_0x47246d[_0xd29a('0x2f')][_0xd29a('0x3c')]+'%'};return _0x4810d4;})});}_0x471e54=_[_0xd29a('0x3b')]({},_0x471e54,_0x47246d[_0xd29a('0x3d')]);var _0x2ff0cf={'where':_0x471e54[_0xd29a('0x39')]};return db[_0xd29a('0x2b')]['count'](_0x2ff0cf)[_0xd29a('0x23')](function(_0x4a1569){_0x48cdeb[_0xd29a('0x1c')]=_0x4a1569;if(_0x47246d[_0xd29a('0x2f')][_0xd29a('0x3e')]){_0x471e54[_0xd29a('0x3f')]=[{'all':!![]}];}return db[_0xd29a('0x2b')][_0xd29a('0x40')](_0x471e54);})[_0xd29a('0x23')](function(_0x2a269f){_0x48cdeb[_0xd29a('0x41')]=_0x2a269f;return _0x48cdeb;})[_0xd29a('0x23')](respondWithFilteredResult(_0x5cdede,_0x471e54))[_0xd29a('0x42')](handleError(_0x5cdede,null));})[_0xd29a('0x42')](handleError(_0x5cdede,null));};exports[_0xd29a('0x43')]=function(_0xf29bb1,_0x5ca2d4){var _0x3af2e4={'raw':![],'where':{'id':_0xf29bb1[_0xd29a('0x44')]['id']}},_0xf874e6={};_0xf874e6[_0xd29a('0x2d')]=_[_0xd29a('0x2e')](db['CmCompany'][_0xd29a('0x45')]);_0xf874e6[_0xd29a('0x2f')]=_[_0xd29a('0x2e')](_0xf29bb1['query']);_0xf874e6[_0xd29a('0x30')]=_[_0xd29a('0x31')](_0xf874e6[_0xd29a('0x2d')],_0xf874e6['query']);_0x3af2e4[_0xd29a('0x32')]=_['intersection'](_0xf874e6[_0xd29a('0x2d')],qs[_0xd29a('0x33')](_0xf29bb1[_0xd29a('0x2f')][_0xd29a('0x33')]));_0x3af2e4['attributes']=_0x3af2e4['attributes'][_0xd29a('0x34')]?_0x3af2e4[_0xd29a('0x32')]:_0xf874e6['model'];if(_0xf29bb1[_0xd29a('0x2f')][_0xd29a('0x3e')]){_0x3af2e4[_0xd29a('0x3f')]=[{'all':!![]}];}_0x3af2e4=_[_0xd29a('0x3b')]({},_0x3af2e4,_0xf29bb1['options']);return db[_0xd29a('0x2b')][_0xd29a('0x46')](_0x3af2e4)['then'](handleEntityNotFound(_0x5ca2d4,null))[_0xd29a('0x23')](respondWithResult(_0x5ca2d4,null))[_0xd29a('0x42')](handleError(_0x5ca2d4,null));};exports[_0xd29a('0x47')]=function(_0x4e0b6a,_0x5cf448){return db['CmCompany'][_0xd29a('0x47')](_0x4e0b6a['body'],{})['then'](function(_0x501d6f){var _0x5ec194=_0x4e0b6a[_0xd29a('0x48')][_0xd29a('0x24')]({'plain':!![]});if(!_0x5ec194)throw new Error(_0xd29a('0x49'));if(_0x5ec194[_0xd29a('0x4a')]===_0xd29a('0x48')){var _0x4b5436=_0x501d6f[_0xd29a('0x24')]({'plain':!![]});var _0x1ccf4b=_0xd29a('0x4b');return db[_0xd29a('0x4c')][_0xd29a('0x46')]({'where':{'name':_0x1ccf4b,'userProfileId':_0x5ec194[_0xd29a('0x4d')]},'raw':!![]})['then'](function(_0x386d9c){if(_0x386d9c&&_0x386d9c[_0xd29a('0x4e')]===0x0){return db[_0xd29a('0x25')][_0xd29a('0x47')]({'name':_0x4b5436[_0xd29a('0x28')],'resourceId':_0x4b5436['id'],'type':_0x386d9c[_0xd29a('0x28')],'sectionId':_0x386d9c['id']},{})[_0xd29a('0x23')](function(){return _0x501d6f;});}else{return _0x501d6f;}})[_0xd29a('0x42')](function(_0x1a7ce5){logger[_0xd29a('0x27')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1a7ce5);throw _0x1a7ce5;});}return _0x501d6f;})[_0xd29a('0x23')](respondWithResult(_0x5cf448,0xc9))[_0xd29a('0x42')](handleError(_0x5cf448,null));};exports[_0xd29a('0x22')]=function(_0x5b6778,_0x515be2){if(_0x5b6778['body']['id']){delete _0x5b6778[_0xd29a('0x4f')]['id'];}return db[_0xd29a('0x2b')][_0xd29a('0x46')]({'where':{'id':_0x5b6778[_0xd29a('0x44')]['id']}})[_0xd29a('0x23')](handleEntityNotFound(_0x515be2,null))[_0xd29a('0x23')](saveUpdates(_0x5b6778['body'],null))[_0xd29a('0x23')](respondWithResult(_0x515be2,null))[_0xd29a('0x42')](handleError(_0x515be2,null));};exports[_0xd29a('0x26')]=function(_0x121647,_0x4b9781){return db['CmCompany'][_0xd29a('0x46')]({'where':{'id':_0x121647[_0xd29a('0x44')]['id']}})[_0xd29a('0x23')](handleEntityNotFound(_0x4b9781,null))[_0xd29a('0x23')](removeEntity(_0x4b9781,null))[_0xd29a('0x42')](handleError(_0x4b9781,null));};exports[_0xd29a('0x2c')]=function(_0x551257,_0x4be922){return db[_0xd29a('0x2b')][_0xd29a('0x2c')]()[_0xd29a('0x23')](respondWithResult(_0x4be922,null))[_0xd29a('0x42')](handleError(_0x4be922,null));};exports[_0xd29a('0x50')]=function(_0x1338ea,_0x20338e,_0x568a1c){return db[_0xd29a('0x51')][_0xd29a('0x46')]({'where':{'id':_0x1338ea['params']['id']}})[_0xd29a('0x23')](handleEntityNotFound(_0x20338e,null))[_0xd29a('0x23')](function(_0x37c791){if(_0x37c791){return _0x37c791['addContacts'](_0x1338ea[_0xd29a('0x4f')][_0xd29a('0x52')],_[_0xd29a('0x53')](_0x1338ea[_0xd29a('0x4f')],[_0xd29a('0x52'),'id'])||{});}})['then'](respondWithResult(_0x20338e,null))[_0xd29a('0x42')](handleError(_0x20338e,null));};exports[_0xd29a('0x54')]=function(_0x1abb53,_0x554dff,_0xd7a5c9){var _0x309625={};var _0x2cc3d6={};var _0x5de3a5;var _0x2a71f3;return db[_0xd29a('0x2b')][_0xd29a('0x55')]({'where':{'id':_0x1abb53[_0xd29a('0x44')]['id']}})[_0xd29a('0x23')](handleEntityNotFound(_0x554dff,null))[_0xd29a('0x23')](function(_0x288754){if(_0x288754){_0x5de3a5=_0x288754;_0x2cc3d6['model']=_[_0xd29a('0x2e')](db[_0xd29a('0x51')]['rawAttributes']);_0x2cc3d6[_0xd29a('0x2f')]=_[_0xd29a('0x2e')](_0x1abb53['query']);_0x2cc3d6['filters']=_[_0xd29a('0x31')](_0x2cc3d6[_0xd29a('0x2d')],_0x2cc3d6['query']);_0x309625[_0xd29a('0x32')]=_[_0xd29a('0x31')](_0x2cc3d6[_0xd29a('0x2d')],qs[_0xd29a('0x33')](_0x1abb53[_0xd29a('0x2f')][_0xd29a('0x33')]));_0x309625[_0xd29a('0x32')]=_0x309625[_0xd29a('0x32')][_0xd29a('0x34')]?_0x309625[_0xd29a('0x32')]:_0x2cc3d6['model'];_0x309625[_0xd29a('0x37')]=qs[_0xd29a('0x38')](_0x1abb53[_0xd29a('0x2f')]['sort']);_0x309625[_0xd29a('0x39')]=qs[_0xd29a('0x30')](_[_0xd29a('0x3a')](_0x1abb53['query'],_0x2cc3d6[_0xd29a('0x30')]));if(_0x1abb53[_0xd29a('0x2f')][_0xd29a('0x3c')]){_0x309625[_0xd29a('0x39')]=_['merge'](_0x309625[_0xd29a('0x39')],{'$or':_[_0xd29a('0x56')](_0x309625[_0xd29a('0x32')],function(_0xec87ab){var _0x3e5eea={};_0x3e5eea[_0xec87ab]={'$like':'%'+_0x1abb53[_0xd29a('0x2f')][_0xd29a('0x3c')]+'%'};return _0x3e5eea;})});}_0x309625=_[_0xd29a('0x3b')]({},_0x309625,_0x1abb53['options']);return _0x5de3a5[_0xd29a('0x54')](_0x309625);}})['then'](function(_0x4cec3e){if(_0x4cec3e){_0x2a71f3=_0x4cec3e[_0xd29a('0x34')];if(!_0x1abb53[_0xd29a('0x2f')][_0xd29a('0x35')](_0xd29a('0x36'))){_0x309625[_0xd29a('0x1b')]=qs['limit'](_0x1abb53['query'][_0xd29a('0x1b')]);_0x309625[_0xd29a('0x1d')]=qs[_0xd29a('0x1d')](_0x1abb53[_0xd29a('0x2f')][_0xd29a('0x1d')]);}return _0x5de3a5[_0xd29a('0x54')](_0x309625);}})['then'](function(_0x1beba8){if(_0x1beba8){return _0x1beba8?{'count':_0x2a71f3,'rows':_0x1beba8}:null;}})[_0xd29a('0x23')](respondWithResult(_0x554dff,null))[_0xd29a('0x42')](handleError(_0x554dff,null));};
\ No newline at end of file
+var _0xd7bd=['stack','name','send','index','CmCompany','describe','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','order','sort','filters','filter','where','merge','map','options','includeAll','include','rows','catch','rawAttributes','body','user','role','Companies','UserProfileSection','userProfileId','autoAssociation','create','find','params','addContacts','CmContact','ids','omit','getContacts','findOne','pick','nolimit','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','get','UserProfileResource','error'];(function(_0x5a6dc5,_0x4a7a46){var _0x2b6dcd=function(_0x207808){while(--_0x207808){_0x5a6dc5['push'](_0x5a6dc5['shift']());}};_0x2b6dcd(++_0x4a7a46);}(_0xd7bd,0x1ef));var _0xdd7b=function(_0x138adb,_0x193fee){_0x138adb=_0x138adb-0x0;var _0x1b27f2=_0xd7bd[_0x138adb];return _0x1b27f2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xdd7b('0x0'));var zipdir=require(_0xdd7b('0x1'));var jsonpatch=require(_0xdd7b('0x2'));var rp=require(_0xdd7b('0x3'));var moment=require('moment');var BPromise=require(_0xdd7b('0x4'));var Mustache=require('mustache');var util=require(_0xdd7b('0x5'));var path=require(_0xdd7b('0x6'));var sox=require(_0xdd7b('0x7'));var csv=require(_0xdd7b('0x8'));var ejs=require(_0xdd7b('0x9'));var fs=require('fs');var fs_extra=require(_0xdd7b('0xa'));var _=require(_0xdd7b('0xb'));var squel=require(_0xdd7b('0xc'));var crypto=require(_0xdd7b('0xd'));var jsforce=require(_0xdd7b('0xe'));var deskjs=require(_0xdd7b('0xf'));var toCsv=require(_0xdd7b('0x8'));var querystring=require('querystring');var Papa=require(_0xdd7b('0x10'));var Redis=require(_0xdd7b('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xdd7b('0x12'));var as=require(_0xdd7b('0x13'));var hardwareService=require(_0xdd7b('0x14'));var logger=require(_0xdd7b('0x15'))(_0xdd7b('0x16'));var utils=require(_0xdd7b('0x17'));var config=require(_0xdd7b('0x18'));var licenseUtil=require(_0xdd7b('0x19'));var db=require(_0xdd7b('0x1a'))['db'];function respondWithStatusCode(_0x3660ee,_0x6657ac){_0x6657ac=_0x6657ac||0xcc;return function(_0x594126){if(_0x594126){return _0x3660ee[_0xdd7b('0x1b')](_0x6657ac);}return _0x3660ee[_0xdd7b('0x1c')](_0x6657ac)[_0xdd7b('0x1d')]();};}function respondWithResult(_0x5e6d23,_0x31ad61){_0x31ad61=_0x31ad61||0xc8;return function(_0x237bd2){if(_0x237bd2){return _0x5e6d23[_0xdd7b('0x1c')](_0x31ad61)[_0xdd7b('0x1e')](_0x237bd2);}};}function respondWithFilteredResult(_0xcf8170,_0x54875b){return function(_0x21bc8f){if(_0x21bc8f){var _0xb04e1d=typeof _0x54875b[_0xdd7b('0x1f')]===_0xdd7b('0x20')&&typeof _0x54875b[_0xdd7b('0x21')]===_0xdd7b('0x20');var _0xf19f69=_0x21bc8f[_0xdd7b('0x22')];var _0x55c23e=_0xb04e1d?0x0:_0x54875b[_0xdd7b('0x1f')];var _0xe4078d=_0xb04e1d?_0x21bc8f[_0xdd7b('0x22')]:_0x54875b[_0xdd7b('0x1f')]+_0x54875b[_0xdd7b('0x21')];var _0x504c8d;if(_0xe4078d>=_0xf19f69){_0xe4078d=_0xf19f69;_0x504c8d=0xc8;}else{_0x504c8d=0xce;}_0xcf8170['status'](_0x504c8d);return _0xcf8170['set'](_0xdd7b('0x23'),_0x55c23e+'-'+_0xe4078d+'/'+_0xf19f69)[_0xdd7b('0x1e')](_0x21bc8f);}return null;};}function patchUpdates(_0x2969a2){return function(_0x3ab7c1){try{jsonpatch[_0xdd7b('0x24')](_0x3ab7c1,_0x2969a2,!![]);}catch(_0x29fa6c){return BPromise[_0xdd7b('0x25')](_0x29fa6c);}return _0x3ab7c1[_0xdd7b('0x26')]();};}function saveUpdates(_0xc11d7b,_0x22bbc7){return function(_0x46941c){if(_0x46941c){return _0x46941c[_0xdd7b('0x27')](_0xc11d7b)[_0xdd7b('0x28')](function(_0x278570){return _0x278570;});}return null;};}function removeEntity(_0x2f17a9,_0x1bd457){return function(_0x54a22d){if(_0x54a22d){return _0x54a22d[_0xdd7b('0x29')]()[_0xdd7b('0x28')](function(){var _0x5e7db7=_0x54a22d[_0xdd7b('0x2a')]({'plain':!![]});var _0x75f55f='Companies';return db[_0xdd7b('0x2b')]['destroy']({'where':{'type':_0x75f55f,'resourceId':_0x5e7db7['id']}})[_0xdd7b('0x28')](function(){return _0x54a22d;});})[_0xdd7b('0x28')](function(){_0x2f17a9[_0xdd7b('0x1c')](0xcc)[_0xdd7b('0x1d')]();});}};}function handleEntityNotFound(_0x3ebd8a,_0x2095c7){return function(_0x518203){if(!_0x518203){_0x3ebd8a[_0xdd7b('0x1b')](0x194);}return _0x518203;};}function handleError(_0x39f27f,_0x4b3fd5){_0x4b3fd5=_0x4b3fd5||0x1f4;return function(_0x114dcf){logger[_0xdd7b('0x2c')](_0x114dcf[_0xdd7b('0x2d')]);if(_0x114dcf[_0xdd7b('0x2e')]){delete _0x114dcf['name'];}_0x39f27f[_0xdd7b('0x1c')](_0x4b3fd5)[_0xdd7b('0x2f')](_0x114dcf);};}exports[_0xdd7b('0x30')]=function(_0x394dea,_0x20f1d0){var _0x302c81={},_0x5e4c67={},_0x1fc9ac={'count':0x0,'rows':[]};return db[_0xdd7b('0x31')][_0xdd7b('0x32')]()['then'](function(_0x26525c){_0x5e4c67[_0xdd7b('0x33')]=_[_0xdd7b('0x34')](_0x26525c);_0x5e4c67[_0xdd7b('0x35')]=_[_0xdd7b('0x34')](_0x394dea['query']);_0x5e4c67['filters']=_[_0xdd7b('0x36')](_0x5e4c67[_0xdd7b('0x33')],_0x5e4c67[_0xdd7b('0x35')]);_0x302c81[_0xdd7b('0x37')]=_['intersection'](_0x5e4c67['model'],qs['fields'](_0x394dea['query'][_0xdd7b('0x38')]));_0x302c81[_0xdd7b('0x37')]=_0x302c81[_0xdd7b('0x37')][_0xdd7b('0x39')]?_0x302c81[_0xdd7b('0x37')]:_0x5e4c67[_0xdd7b('0x33')];if(!_0x394dea['query'][_0xdd7b('0x3a')]('nolimit')){_0x302c81['limit']=qs[_0xdd7b('0x21')](_0x394dea[_0xdd7b('0x35')][_0xdd7b('0x21')]);_0x302c81['offset']=qs[_0xdd7b('0x1f')](_0x394dea[_0xdd7b('0x35')][_0xdd7b('0x1f')]);}_0x302c81[_0xdd7b('0x3b')]=qs[_0xdd7b('0x3c')](_0x394dea[_0xdd7b('0x35')]['sort']);_0x302c81['where']=qs['filters'](_['pick'](_0x394dea[_0xdd7b('0x35')],_0x5e4c67[_0xdd7b('0x3d')]),_0x26525c);if(_0x394dea[_0xdd7b('0x35')][_0xdd7b('0x3e')]){_0x302c81[_0xdd7b('0x3f')]=_[_0xdd7b('0x40')](_0x302c81['where'],{'$or':_[_0xdd7b('0x41')](_0x302c81['attributes'],function(_0x14d743){var _0x378944={};_0x378944[_0x14d743]={'$like':'%'+_0x394dea[_0xdd7b('0x35')]['filter']+'%'};return _0x378944;})});}_0x302c81=_['merge']({},_0x302c81,_0x394dea[_0xdd7b('0x42')]);var _0x30b7f7={'where':_0x302c81[_0xdd7b('0x3f')]};return db[_0xdd7b('0x31')][_0xdd7b('0x22')](_0x30b7f7)['then'](function(_0x50aa1c){_0x1fc9ac['count']=_0x50aa1c;if(_0x394dea['query'][_0xdd7b('0x43')]){_0x302c81[_0xdd7b('0x44')]=[{'all':!![]}];}return db[_0xdd7b('0x31')]['findAll'](_0x302c81);})[_0xdd7b('0x28')](function(_0x213c54){_0x1fc9ac[_0xdd7b('0x45')]=_0x213c54;return _0x1fc9ac;})[_0xdd7b('0x28')](respondWithFilteredResult(_0x20f1d0,_0x302c81))[_0xdd7b('0x46')](handleError(_0x20f1d0,null));})[_0xdd7b('0x46')](handleError(_0x20f1d0,null));};exports['show']=function(_0x5e9e20,_0x4cf31f){var _0xd3aa34={'raw':![],'where':{'id':_0x5e9e20['params']['id']}},_0x1d49e0={};_0x1d49e0[_0xdd7b('0x33')]=_['keys'](db[_0xdd7b('0x31')][_0xdd7b('0x47')]);_0x1d49e0[_0xdd7b('0x35')]=_[_0xdd7b('0x34')](_0x5e9e20[_0xdd7b('0x35')]);_0x1d49e0[_0xdd7b('0x3d')]=_[_0xdd7b('0x36')](_0x1d49e0[_0xdd7b('0x33')],_0x1d49e0['query']);_0xd3aa34[_0xdd7b('0x37')]=_[_0xdd7b('0x36')](_0x1d49e0[_0xdd7b('0x33')],qs[_0xdd7b('0x38')](_0x5e9e20[_0xdd7b('0x35')][_0xdd7b('0x38')]));_0xd3aa34[_0xdd7b('0x37')]=_0xd3aa34[_0xdd7b('0x37')]['length']?_0xd3aa34[_0xdd7b('0x37')]:_0x1d49e0[_0xdd7b('0x33')];if(_0x5e9e20['query']['includeAll']){_0xd3aa34[_0xdd7b('0x44')]=[{'all':!![]}];}_0xd3aa34=_[_0xdd7b('0x40')]({},_0xd3aa34,_0x5e9e20[_0xdd7b('0x42')]);return db[_0xdd7b('0x31')]['find'](_0xd3aa34)[_0xdd7b('0x28')](handleEntityNotFound(_0x4cf31f,null))['then'](respondWithResult(_0x4cf31f,null))['catch'](handleError(_0x4cf31f,null));};exports['create']=function(_0x1bb930,_0x482b55){return db['CmCompany']['create'](_0x1bb930[_0xdd7b('0x48')],{})[_0xdd7b('0x28')](function(_0x22700d){var _0x2f3e84=_0x1bb930[_0xdd7b('0x49')][_0xdd7b('0x2a')]({'plain':!![]});if(!_0x2f3e84)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2f3e84[_0xdd7b('0x4a')]===_0xdd7b('0x49')){var _0x39197d=_0x22700d['get']({'plain':!![]});var _0x4b81ad=_0xdd7b('0x4b');return db[_0xdd7b('0x4c')]['find']({'where':{'name':_0x4b81ad,'userProfileId':_0x2f3e84[_0xdd7b('0x4d')]},'raw':!![]})[_0xdd7b('0x28')](function(_0x2cf947){if(_0x2cf947&&_0x2cf947[_0xdd7b('0x4e')]===0x0){return db[_0xdd7b('0x2b')][_0xdd7b('0x4f')]({'name':_0x39197d[_0xdd7b('0x2e')],'resourceId':_0x39197d['id'],'type':_0x2cf947[_0xdd7b('0x2e')],'sectionId':_0x2cf947['id']},{})['then'](function(){return _0x22700d;});}else{return _0x22700d;}})[_0xdd7b('0x46')](function(_0x1a3a3a){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1a3a3a);throw _0x1a3a3a;});}return _0x22700d;})[_0xdd7b('0x28')](respondWithResult(_0x482b55,0xc9))[_0xdd7b('0x46')](handleError(_0x482b55,null));};exports['update']=function(_0xb1c0cd,_0xc62641){if(_0xb1c0cd[_0xdd7b('0x48')]['id']){delete _0xb1c0cd[_0xdd7b('0x48')]['id'];}return db[_0xdd7b('0x31')][_0xdd7b('0x50')]({'where':{'id':_0xb1c0cd['params']['id']}})['then'](handleEntityNotFound(_0xc62641,null))['then'](saveUpdates(_0xb1c0cd['body'],null))['then'](respondWithResult(_0xc62641,null))[_0xdd7b('0x46')](handleError(_0xc62641,null));};exports[_0xdd7b('0x29')]=function(_0x50ab6d,_0x4faada){return db[_0xdd7b('0x31')]['find']({'where':{'id':_0x50ab6d[_0xdd7b('0x51')]['id']}})['then'](handleEntityNotFound(_0x4faada,null))['then'](removeEntity(_0x4faada,null))['catch'](handleError(_0x4faada,null));};exports[_0xdd7b('0x32')]=function(_0x5da5b4,_0x1d7d93){return db['CmCompany']['describe']()['then'](respondWithResult(_0x1d7d93,null))[_0xdd7b('0x46')](handleError(_0x1d7d93,null));};exports[_0xdd7b('0x52')]=function(_0x40f409,_0x5b92a1,_0x3b2503){return db[_0xdd7b('0x53')][_0xdd7b('0x50')]({'where':{'id':_0x40f409['params']['id']}})['then'](handleEntityNotFound(_0x5b92a1,null))['then'](function(_0x41ccc0){if(_0x41ccc0){return _0x41ccc0[_0xdd7b('0x52')](_0x40f409[_0xdd7b('0x48')][_0xdd7b('0x54')],_[_0xdd7b('0x55')](_0x40f409[_0xdd7b('0x48')],[_0xdd7b('0x54'),'id'])||{});}})[_0xdd7b('0x28')](respondWithResult(_0x5b92a1,null))['catch'](handleError(_0x5b92a1,null));};exports[_0xdd7b('0x56')]=function(_0x11e6b1,_0x509b2a,_0x5d2ff2){var _0x422e87={};var _0x4de18c={};var _0x43eba1;var _0x2d9e7b;return db[_0xdd7b('0x31')][_0xdd7b('0x57')]({'where':{'id':_0x11e6b1['params']['id']}})[_0xdd7b('0x28')](handleEntityNotFound(_0x509b2a,null))[_0xdd7b('0x28')](function(_0x517d92){if(_0x517d92){_0x43eba1=_0x517d92;_0x4de18c[_0xdd7b('0x33')]=_['keys'](db['CmContact'][_0xdd7b('0x47')]);_0x4de18c[_0xdd7b('0x35')]=_[_0xdd7b('0x34')](_0x11e6b1[_0xdd7b('0x35')]);_0x4de18c[_0xdd7b('0x3d')]=_[_0xdd7b('0x36')](_0x4de18c[_0xdd7b('0x33')],_0x4de18c['query']);_0x422e87[_0xdd7b('0x37')]=_[_0xdd7b('0x36')](_0x4de18c['model'],qs[_0xdd7b('0x38')](_0x11e6b1['query']['fields']));_0x422e87[_0xdd7b('0x37')]=_0x422e87['attributes'][_0xdd7b('0x39')]?_0x422e87[_0xdd7b('0x37')]:_0x4de18c[_0xdd7b('0x33')];_0x422e87[_0xdd7b('0x3b')]=qs[_0xdd7b('0x3c')](_0x11e6b1[_0xdd7b('0x35')]['sort']);_0x422e87[_0xdd7b('0x3f')]=qs[_0xdd7b('0x3d')](_[_0xdd7b('0x58')](_0x11e6b1[_0xdd7b('0x35')],_0x4de18c[_0xdd7b('0x3d')]));if(_0x11e6b1[_0xdd7b('0x35')][_0xdd7b('0x3e')]){_0x422e87[_0xdd7b('0x3f')]=_[_0xdd7b('0x40')](_0x422e87[_0xdd7b('0x3f')],{'$or':_[_0xdd7b('0x41')](_0x422e87[_0xdd7b('0x37')],function(_0x5112ef){var _0x50f0c9={};_0x50f0c9[_0x5112ef]={'$like':'%'+_0x11e6b1[_0xdd7b('0x35')][_0xdd7b('0x3e')]+'%'};return _0x50f0c9;})});}_0x422e87=_[_0xdd7b('0x40')]({},_0x422e87,_0x11e6b1['options']);return _0x43eba1[_0xdd7b('0x56')](_0x422e87);}})[_0xdd7b('0x28')](function(_0x293cb0){if(_0x293cb0){_0x2d9e7b=_0x293cb0[_0xdd7b('0x39')];if(!_0x11e6b1[_0xdd7b('0x35')][_0xdd7b('0x3a')](_0xdd7b('0x59'))){_0x422e87[_0xdd7b('0x21')]=qs[_0xdd7b('0x21')](_0x11e6b1[_0xdd7b('0x35')][_0xdd7b('0x21')]);_0x422e87[_0xdd7b('0x1f')]=qs['offset'](_0x11e6b1[_0xdd7b('0x35')][_0xdd7b('0x1f')]);}return _0x43eba1[_0xdd7b('0x56')](_0x422e87);}})['then'](function(_0x30207c){if(_0x30207c){return _0x30207c?{'count':_0x2d9e7b,'rows':_0x30207c}:null;}})[_0xdd7b('0x28')](respondWithResult(_0x509b2a,null))[_0xdd7b('0x46')](handleError(_0x509b2a,null));};
\ No newline at end of file
index 2db0839..a927a24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcab6=['moment','bluebird','request-promise','rimraf','../../config/environment','./cmCompany.attributes','define','lodash','util','../../config/logger','api'];(function(_0x172cb6,_0x115722){var _0xfaf7e7=function(_0xf648f5){while(--_0xf648f5){_0x172cb6['push'](_0x172cb6['shift']());}};_0xfaf7e7(++_0x115722);}(_0xcab6,0x75));var _0x6cab=function(_0x2e6a12,_0x3ea10f){_0x2e6a12=_0x2e6a12-0x0;var _0x46459d=_0xcab6[_0x2e6a12];return _0x46459d;};'use strict';var _=require(_0x6cab('0x0'));var util=require(_0x6cab('0x1'));var logger=require(_0x6cab('0x2'))(_0x6cab('0x3'));var moment=require(_0x6cab('0x4'));var BPromise=require(_0x6cab('0x5'));var rp=require(_0x6cab('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6cab('0x7'));var config=require(_0x6cab('0x8'));var attributes=require(_0x6cab('0x9'));module['exports']=function(_0x4ab6aa,_0x1c1606){return _0x4ab6aa[_0x6cab('0xa')]('CmCompany',attributes,{'tableName':'cm_companies','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xaa46=['exports','define','CmCompany','util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment'];(function(_0x5b34c2,_0x25a118){var _0x577f60=function(_0x46b2b7){while(--_0x46b2b7){_0x5b34c2['push'](_0x5b34c2['shift']());}};_0x577f60(++_0x25a118);}(_0xaa46,0x71));var _0x6aa4=function(_0x75a103,_0x406e69){_0x75a103=_0x75a103-0x0;var _0x10ec8a=_0xaa46[_0x75a103];return _0x10ec8a;};'use strict';var _=require('lodash');var util=require(_0x6aa4('0x0'));var logger=require(_0x6aa4('0x1'))(_0x6aa4('0x2'));var moment=require(_0x6aa4('0x3'));var BPromise=require(_0x6aa4('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x6aa4('0x5'));var config=require(_0x6aa4('0x6'));var attributes=require('./cmCompany.attributes');module[_0x6aa4('0x7')]=function(_0x512925,_0x643de8){return _0x512925[_0x6aa4('0x8')](_0x6aa4('0x9'),attributes,{'tableName':'cm_companies','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 77e4877..8035bc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45bb=['bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','CmCompany,\x20%s,\x20%s','request\x20sent','debug','CmCompany,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','moment'];(function(_0x115621,_0x341cde){var _0x5ef5ce=function(_0x2ca3f2){while(--_0x2ca3f2){_0x115621['push'](_0x115621['shift']());}};_0x5ef5ce(++_0x341cde);}(_0x45bb,0x87));var _0xb45b=function(_0x294921,_0x45293e){_0x294921=_0x294921-0x0;var _0x10666e=_0x45bb[_0x294921];return _0x10666e;};'use strict';var _=require(_0xb45b('0x0'));var util=require(_0xb45b('0x1'));var moment=require(_0xb45b('0x2'));var BPromise=require(_0xb45b('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb45b('0x4'))['db'];var utils=require(_0xb45b('0x5'));var logger=require(_0xb45b('0x6'))(_0xb45b('0x7'));var config=require(_0xb45b('0x8'));var jayson=require(_0xb45b('0x9'));var client=jayson[_0xb45b('0xa')][_0xb45b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x28a522,_0x4a81d4,_0x574e23){return new BPromise(function(_0x252e45,_0x217d84){return client[_0xb45b('0xc')](_0x28a522,_0x574e23)['then'](function(_0x4988ea){logger[_0xb45b('0xd')](_0xb45b('0xe'),_0x4a81d4,_0xb45b('0xf'));logger[_0xb45b('0x10')](_0xb45b('0x11'),_0x4a81d4,_0xb45b('0xf'),JSON[_0xb45b('0x12')](_0x4988ea));if(_0x4988ea[_0xb45b('0x13')]){if(_0x4988ea[_0xb45b('0x13')][_0xb45b('0x14')]===0x1f4){logger[_0xb45b('0x13')](_0xb45b('0xe'),_0x4a81d4,_0x4988ea[_0xb45b('0x13')]['message']);return _0x217d84(_0x4988ea[_0xb45b('0x13')]['message']);}logger[_0xb45b('0x13')](_0xb45b('0xe'),_0x4a81d4,_0x4988ea['error'][_0xb45b('0x15')]);return _0x252e45(_0x4988ea[_0xb45b('0x13')][_0xb45b('0x15')]);}else{logger['info']('CmCompany,\x20%s,\x20%s',_0x4a81d4,_0xb45b('0xf'));_0x252e45(_0x4988ea[_0xb45b('0x16')][_0xb45b('0x15')]);}})['catch'](function(_0x2cac89){logger[_0xb45b('0x13')](_0xb45b('0xe'),_0x4a81d4,_0x2cac89);_0x217d84(_0x2cac89);});});}
\ No newline at end of file
+var _0x0964=['code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','CmCompany,\x20%s,\x20%s','request\x20sent','debug','CmCompany,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x29d94e,_0xf386d6){var _0x106237=function(_0x327501){while(--_0x327501){_0x29d94e['push'](_0x29d94e['shift']());}};_0x106237(++_0xf386d6);}(_0x0964,0x1be));var _0x4096=function(_0x8a969d,_0x339d9f){_0x8a969d=_0x8a969d-0x0;var _0x1d8dc7=_0x0964[_0x8a969d];return _0x1d8dc7;};'use strict';var _=require(_0x4096('0x0'));var util=require(_0x4096('0x1'));var moment=require(_0x4096('0x2'));var BPromise=require(_0x4096('0x3'));var rs=require(_0x4096('0x4'));var fs=require('fs');var Redis=require(_0x4096('0x5'));var db=require(_0x4096('0x6'))['db'];var utils=require(_0x4096('0x7'));var logger=require(_0x4096('0x8'))(_0x4096('0x9'));var config=require(_0x4096('0xa'));var jayson=require(_0x4096('0xb'));var client=jayson[_0x4096('0xc')][_0x4096('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x46aa2e,_0x35ace2,_0x1249bb){return new BPromise(function(_0x1d67aa,_0x44ef4f){return client[_0x4096('0xe')](_0x46aa2e,_0x1249bb)[_0x4096('0xf')](function(_0x5c88a1){logger['info'](_0x4096('0x10'),_0x35ace2,_0x4096('0x11'));logger[_0x4096('0x12')](_0x4096('0x13'),_0x35ace2,'request\x20sent',JSON[_0x4096('0x14')](_0x5c88a1));if(_0x5c88a1['error']){if(_0x5c88a1[_0x4096('0x15')][_0x4096('0x16')]===0x1f4){logger[_0x4096('0x15')]('CmCompany,\x20%s,\x20%s',_0x35ace2,_0x5c88a1[_0x4096('0x15')]['message']);return _0x44ef4f(_0x5c88a1[_0x4096('0x15')][_0x4096('0x17')]);}logger[_0x4096('0x15')](_0x4096('0x10'),_0x35ace2,_0x5c88a1[_0x4096('0x15')][_0x4096('0x17')]);return _0x1d67aa(_0x5c88a1[_0x4096('0x15')][_0x4096('0x17')]);}else{logger['info'](_0x4096('0x10'),_0x35ace2,_0x4096('0x11'));_0x1d67aa(_0x5c88a1[_0x4096('0x18')][_0x4096('0x17')]);}})[_0x4096('0x19')](function(_0x21a267){logger[_0x4096('0x15')]('CmCompany,\x20%s,\x20%s',_0x35ace2,_0x21a267);_0x44ef4f(_0x21a267);});});}
\ No newline at end of file
index b24287e..aa1f695 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00a6=['../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/contacts','getContacts','post','create','addContacts','put','update','destroy','exports','multer','path','connect-timeout','express','fs-extra'];(function(_0x1effc9,_0x4496d1){var _0x1cb7e5=function(_0x57ab6c){while(--_0x57ab6c){_0x1effc9['push'](_0x1effc9['shift']());}};_0x1cb7e5(++_0x4496d1);}(_0x00a6,0x85));var _0x600a=function(_0x552fb3,_0x4e096f){_0x552fb3=_0x552fb3-0x0;var _0x4a5588=_0x00a6[_0x552fb3];return _0x4a5588;};'use strict';var multer=require(_0x600a('0x0'));var util=require('util');var path=require(_0x600a('0x1'));var timeout=require(_0x600a('0x2'));var express=require(_0x600a('0x3'));var router=express['Router']();var fs_extra=require(_0x600a('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x600a('0x5'));var config=require(_0x600a('0x6'));var controller=require('./cmCompany.controller');router[_0x600a('0x7')]('/',auth[_0x600a('0x8')](),controller[_0x600a('0x9')]);router[_0x600a('0x7')](_0x600a('0xa'),auth[_0x600a('0x8')](),controller[_0x600a('0xb')]);router[_0x600a('0x7')](_0x600a('0xc'),auth[_0x600a('0x8')](),controller[_0x600a('0xd')]);router[_0x600a('0x7')](_0x600a('0xe'),auth[_0x600a('0x8')](),controller[_0x600a('0xf')]);router[_0x600a('0x10')]('/',auth['isAuthenticated'](),controller[_0x600a('0x11')]);router['post'](_0x600a('0xe'),auth[_0x600a('0x8')](),controller[_0x600a('0x12')]);router[_0x600a('0x13')](_0x600a('0xc'),auth[_0x600a('0x8')](),controller[_0x600a('0x14')]);router['delete'](_0x600a('0xc'),auth[_0x600a('0x8')](),controller[_0x600a('0x15')]);module[_0x600a('0x16')]=router;
\ No newline at end of file
+var _0xab41=['index','/describe','describe','/:id','/:id/contacts','getContacts','addContacts','put','update','delete','multer','util','path','connect-timeout','express','Router','fs-extra','./cmCompany.controller','get','isAuthenticated'];(function(_0x11de69,_0x46c7c6){var _0x211379=function(_0x58c8dd){while(--_0x58c8dd){_0x11de69['push'](_0x11de69['shift']());}};_0x211379(++_0x46c7c6);}(_0xab41,0x1ea));var _0x1ab4=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0xab41[_0x17d9e3];return _0x14192d;};'use strict';var multer=require(_0x1ab4('0x0'));var util=require(_0x1ab4('0x1'));var path=require(_0x1ab4('0x2'));var timeout=require(_0x1ab4('0x3'));var express=require(_0x1ab4('0x4'));var router=express[_0x1ab4('0x5')]();var fs_extra=require(_0x1ab4('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x1ab4('0x7'));router[_0x1ab4('0x8')]('/',auth[_0x1ab4('0x9')](),controller[_0x1ab4('0xa')]);router['get'](_0x1ab4('0xb'),auth[_0x1ab4('0x9')](),controller[_0x1ab4('0xc')]);router[_0x1ab4('0x8')](_0x1ab4('0xd'),auth['isAuthenticated'](),controller['show']);router[_0x1ab4('0x8')](_0x1ab4('0xe'),auth[_0x1ab4('0x9')](),controller[_0x1ab4('0xf')]);router['post']('/',auth[_0x1ab4('0x9')](),controller['create']);router['post']('/:id/contacts',auth[_0x1ab4('0x9')](),controller[_0x1ab4('0x10')]);router[_0x1ab4('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x1ab4('0x12')]);router[_0x1ab4('0x13')](_0x1ab4('0xd'),auth[_0x1ab4('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index d8d3873..af77e1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e78=['exports','STRING','TEXT','INTEGER','UNSIGNED','DATE','lodash'];(function(_0x55d586,_0x3e712c){var _0x3a8600=function(_0x6ee2ea){while(--_0x6ee2ea){_0x55d586['push'](_0x55d586['shift']());}};_0x3a8600(++_0x3e712c);}(_0x9e78,0x1cd));var _0x89e7=function(_0x133277,_0xb1d6b2){_0x133277=_0x133277-0x0;var _0x5b4a22=_0x9e78[_0x133277];return _0x5b4a22;};'use strict';var _=require(_0x89e7('0x0'));var Sequelize=require('sequelize');module[_0x89e7('0x1')]={'firstName':{'type':Sequelize[_0x89e7('0x2')],'allowNull':![]},'lastName':{'type':Sequelize[_0x89e7('0x2')]},'street':{'type':Sequelize['STRING']},'postalCode':{'type':Sequelize['STRING']},'city':{'type':Sequelize[_0x89e7('0x2')]},'country':{'type':Sequelize[_0x89e7('0x2')]},'dateOfBirth':{'type':Sequelize[_0x89e7('0x2')]},'description':{'type':Sequelize[_0x89e7('0x3')]},'phone':{'type':Sequelize[_0x89e7('0x2')]},'mobile':{'type':Sequelize[_0x89e7('0x2')]},'fax':{'type':Sequelize[_0x89e7('0x2')]},'email':{'type':Sequelize[_0x89e7('0x2')]},'url':{'type':Sequelize[_0x89e7('0x2')]},'facebook':{'type':Sequelize[_0x89e7('0x2')]},'fb_data':{'type':Sequelize[_0x89e7('0x2')]},'twitter':{'type':Sequelize[_0x89e7('0x2')]},'skype':{'type':Sequelize[_0x89e7('0x2')]},'teams':{'type':Sequelize['STRING']},'viber':{'type':Sequelize['STRING']},'line':{'type':Sequelize[_0x89e7('0x2')]},'wechat':{'type':Sequelize['STRING']},'telegram':{'type':Sequelize[_0x89e7('0x2')]},'UserId':{'type':Sequelize[_0x89e7('0x4')]},'AdditionalPhones':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x89e7('0x4')](0x2)[_0x89e7('0x5')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0x89e7('0x6')],'defaultValue':Sequelize['NOW']},'dialTimezone':{'type':Sequelize[_0x89e7('0x2')]},'utcOffset':{'type':Sequelize[_0x89e7('0x4')]}};
\ No newline at end of file
+var _0x819a=['lodash','sequelize','STRING','TEXT','INTEGER','DATE','NOW'];(function(_0x465028,_0x4570ac){var _0xb783d4=function(_0x5458c5){while(--_0x5458c5){_0x465028['push'](_0x465028['shift']());}};_0xb783d4(++_0x4570ac);}(_0x819a,0xaf));var _0xa819=function(_0x1dee00,_0x57768a){_0x1dee00=_0x1dee00-0x0;var _0x554905=_0x819a[_0x1dee00];return _0x554905;};'use strict';var _=require(_0xa819('0x0'));var Sequelize=require(_0xa819('0x1'));module['exports']={'firstName':{'type':Sequelize[_0xa819('0x2')],'allowNull':![]},'lastName':{'type':Sequelize[_0xa819('0x2')]},'street':{'type':Sequelize['STRING']},'postalCode':{'type':Sequelize[_0xa819('0x2')]},'city':{'type':Sequelize[_0xa819('0x2')]},'country':{'type':Sequelize['STRING']},'dateOfBirth':{'type':Sequelize[_0xa819('0x2')]},'description':{'type':Sequelize[_0xa819('0x3')]},'phone':{'type':Sequelize['STRING']},'mobile':{'type':Sequelize[_0xa819('0x2')]},'fax':{'type':Sequelize[_0xa819('0x2')]},'email':{'type':Sequelize[_0xa819('0x2')]},'url':{'type':Sequelize[_0xa819('0x2')]},'facebook':{'type':Sequelize['STRING']},'fb_data':{'type':Sequelize[_0xa819('0x2')]},'twitter':{'type':Sequelize[_0xa819('0x2')]},'skype':{'type':Sequelize[_0xa819('0x2')]},'teams':{'type':Sequelize['STRING']},'viber':{'type':Sequelize[_0xa819('0x2')]},'line':{'type':Sequelize[_0xa819('0x2')]},'wechat':{'type':Sequelize[_0xa819('0x2')]},'telegram':{'type':Sequelize[_0xa819('0x2')]},'UserId':{'type':Sequelize[_0xa819('0x4')]},'AdditionalPhones':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0xa819('0x4')](0x2)['UNSIGNED'],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0xa819('0x5')],'defaultValue':Sequelize[_0xa819('0x6')]},'dialTimezone':{'type':Sequelize['STRING']},'utcOffset':{'type':Sequelize[_0xa819('0x4')]}};
\ No newline at end of file
index 334bd13..9d479f2 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(_0x34bf97,_0xc60f9d){var _0x292719=function(_0x31354e){while(--_0x31354e){_0x34bf97['push'](_0x34bf97['shift']());}};_0x292719(++_0xc60f9d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1b349a,_0x22222c){_0x1b349a=_0x1b349a-0x0;var _0x5d1f7c=_0xa9e0[_0x1b349a];return _0x5d1f7c;};'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(_0x4d8ed9,_0x2ae284){var _0x1e2140=function(_0x9cca89){while(--_0x9cca89){_0x4d8ed9['push'](_0x4d8ed9['shift']());}};_0x1e2140(++_0x2ae284);}(_0xa9e0,0x123));var _0x0a9e=function(_0x31e29a,_0x349c9b){_0x31e29a=_0x31e29a-0x0;var _0x32d892=_0xa9e0[_0x31e29a];return _0x32d892;};'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 1676f4a..c73d231 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd61e=['remove','emit','hook','exports','CmContact','setMaxListeners','save','update'];(function(_0x4604ad,_0x2c516e){var _0x3ed8ef=function(_0x2cb13e){while(--_0x2cb13e){_0x4604ad['push'](_0x4604ad['shift']());}};_0x3ed8ef(++_0x2c516e);}(_0xd61e,0x1a4));var _0xed61=function(_0x2fb58f,_0x4d8f90){_0x2fb58f=_0x2fb58f-0x0;var _0x30f062=_0xd61e[_0x2fb58f];return _0x30f062;};'use strict';var EventEmitter=require('events');var CmContact=require('../../mysqldb')['db'][_0xed61('0x0')];var CmContactEvents=new EventEmitter();CmContactEvents[_0xed61('0x1')](0x0);var events={'afterCreate':_0xed61('0x2'),'afterUpdate':_0xed61('0x3'),'afterDestroy':_0xed61('0x4')};function emitEvent(_0x29796d){return function(_0x3ad9dd,_0x4c6400,_0x2d90df){CmContactEvents['emit'](_0x29796d+':'+_0x3ad9dd['id'],_0x3ad9dd);CmContactEvents[_0xed61('0x5')](_0x29796d,_0x3ad9dd);_0x2d90df(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmContact[_0xed61('0x6')](e,emitEvent(event));}}module[_0xed61('0x7')]=CmContactEvents;
\ No newline at end of file
+var _0xd337=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','CmContact'];(function(_0x458b01,_0x597db8){var _0x417383=function(_0x427fbe){while(--_0x427fbe){_0x458b01['push'](_0x458b01['shift']());}};_0x417383(++_0x597db8);}(_0xd337,0xc3));var _0x7d33=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd337[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0x7d33('0x0'));var CmContact=require(_0x7d33('0x1'))['db'][_0x7d33('0x2')];var CmContactEvents=new EventEmitter();CmContactEvents[_0x7d33('0x3')](0x0);var events={'afterCreate':_0x7d33('0x4'),'afterUpdate':_0x7d33('0x5'),'afterDestroy':_0x7d33('0x6')};function emitEvent(_0x1740fc){return function(_0x5bdfa4,_0x2a185b,_0x1255d0){CmContactEvents[_0x7d33('0x7')](_0x1740fc+':'+_0x5bdfa4['id'],_0x5bdfa4);CmContactEvents[_0x7d33('0x7')](_0x1740fc,_0x5bdfa4);_0x1255d0(null);};}for(var e in events){if(events[_0x7d33('0x8')](e)){var event=events[e];CmContact[_0x7d33('0x9')](e,emitEvent(event));}}module[_0x7d33('0xa')]=CmContactEvents;
\ No newline at end of file
index 909bbde..d5f8778 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc197=['onlyIfOpen','findAll','BlackLists','length','CmHopperBlack','cmContact,\x20%s,\x20%s','message','Lists','isEmpty','destroy','VoiceQueueId','CampaignId','push','all','info','[CmContact][afterDestroy][Succesfull]','[CmContact][afterDestroy][Error]','util','../../config/logger','moment','request-promise','path','rimraf','../../config/environment/shared','./cmContact.attributes','exports','define','CmContact','phone','fti_cm_contacts','firstName','lastName','mobile','email','FULLTEXT','utf8mb4','utf8mb4_unicode_ci','models','get','cmContact','inspect','scheduledat','YYYY-MM-DD\x20HH:mm:ss','isNil','dialTimezone','VoiceQueue','findOne','then','timezones','utcOffset','minutes','format','cmContact,\x20afterCreate\x20','create','ListId','priority','callbackUniqueid','ret','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopperFinal','cmContact,\x20afterCreate,\x20','CmHopper','error','afterCreate','Campaign','catch','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','outbound','dialCheckDuplicateType','CmList','always'];(function(_0xc03c42,_0x242c56){var _0x11b9e7=function(_0x243fb0){while(--_0x243fb0){_0xc03c42['push'](_0xc03c42['shift']());}};_0x11b9e7(++_0x242c56);}(_0xc197,0x1c1));var _0x7c19=function(_0x310781,_0x5bfe0b){_0x310781=_0x310781-0x0;var _0x23a7a6=_0xc197[_0x310781];return _0x23a7a6;};'use strict';var _=require('lodash');var util=require(_0x7c19('0x0'));var logger=require(_0x7c19('0x1'))('api');var moment=require(_0x7c19('0x2'));var BPromise=require('bluebird');var rp=require(_0x7c19('0x3'));var fs=require('fs');var path=require(_0x7c19('0x4'));var rimraf=require(_0x7c19('0x5'));var config=require('../../config/environment');var shared=require(_0x7c19('0x6'));var attributes=require(_0x7c19('0x7'));module[_0x7c19('0x8')]=function(_0x588ff1,_0x8ee623){return _0x588ff1[_0x7c19('0x9')](_0x7c19('0xa'),attributes,{'tableName':'cm_contacts','paranoid':!![],'indexes':[{'name':_0x7c19('0xb'),'fields':['phone']},{'name':_0x7c19('0xc'),'fields':[_0x7c19('0xd'),_0x7c19('0xe'),_0x7c19('0xb'),_0x7c19('0xf'),'fax',_0x7c19('0x10')],'type':_0x7c19('0x11')}],'timestamps':!![],'charset':_0x7c19('0x12'),'collate':_0x7c19('0x13'),'hooks':{'afterCreate':function(_0x2d7af0,_0x458b12,_0x1b618a){var _0x361954=_0x588ff1[_0x7c19('0x14')];var _0x483b13=_0x2d7af0[_0x7c19('0x15')]({'plain':!![]});function _0x1e416e(){return function(_0x508f78){logger['error'](_0x7c19('0x16'),'afterCreate',util[_0x7c19('0x17')](_0x508f78,{'showHidden':![],'depth':null}));};}function _0x5d0482(_0x273e5c,_0x3d5cae){var _0x4cdb3d=_0x3d5cae['scheduledat']?_0x3d5cae[_0x7c19('0x18')]:moment()['format'](_0x7c19('0x19'));return new BPromise(function(_0x485afc,_0x419dc8){if(_[_0x7c19('0x1a')](_0x3d5cae[_0x7c19('0x1b')])){_0x485afc({'ret':_0x4cdb3d});}else{_0x361954[_0x7c19('0x1c')][_0x7c19('0x1d')]({'where':{'id':_0x273e5c['id']}})[_0x7c19('0x1e')](function(_0x190983){if(!_[_0x7c19('0x1a')](_0x190983)){var _0x1e8882=_0x190983[_0x7c19('0x1b')];if(!_[_0x7c19('0x1a')](_0x1e8882)){var _0x8d231d=shared[_0x7c19('0x1f')];var _0xd22e8a=_0x8d231d[_0x1e8882];var _0x1c00ab=_0x8d231d[_0x3d5cae[_0x7c19('0x1b')]];if(!_[_0x7c19('0x1a')](_0xd22e8a)&&!_[_0x7c19('0x1a')](_0x1c00ab)){var _0x5e9778=_0xd22e8a[_0x7c19('0x20')]-_0x1c00ab[_0x7c19('0x20')];_0x4cdb3d=_0x3d5cae[_0x7c19('0x18')]?_0x3d5cae[_0x7c19('0x18')]:moment();var _0x39d84c=moment(_0x4cdb3d)['add'](_0x5e9778,_0x7c19('0x21'));_0x485afc({'ret':_0x39d84c[_0x7c19('0x22')](_0x7c19('0x19'))});}else _0x485afc({'ret':_0x4cdb3d});}else _0x485afc({'ret':_0x4cdb3d});}else{_0x485afc({'ret':_0x4cdb3d});}});}});return 0xa;}var _0x34189d=function(_0x1ba0bb){return new BPromise(function(_0xb9925,_0x3de8dd){_0x5d0482(_0x1ba0bb,_0x483b13)[_0x7c19('0x1e')](function(_0xedce5d){_0x483b13[_0x7c19('0x18')]=_0xedce5d['ret'];_0x361954['CmHopper'][_0x7c19('0x1d')]({'where':{'phone':_0x483b13[_0x7c19('0xb')],'VoiceQueueId':_0x1ba0bb['id']}})['then'](function(_0x49d69b){if(!_[_0x7c19('0x1a')](_0x49d69b)){throw new Error(_0x7c19('0x23')+_0x483b13[_0x7c19('0xb')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'+_0x1ba0bb['id']);}return _0x361954['CmHopper'][_0x7c19('0x24')]({'phone':_0x483b13[_0x7c19('0xb')],'ContactId':_0x483b13['id'],'ListId':_0x483b13[_0x7c19('0x25')],'priority':_0x483b13[_0x7c19('0x26')]?_0x483b13[_0x7c19('0x26')]:0x2,'scheduledat':_0x483b13[_0x7c19('0x18')]?_0x483b13[_0x7c19('0x18')]:moment()[_0x7c19('0x22')](_0x7c19('0x19')),'callback':_0x483b13['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x483b13[_0x7c19('0x27')]?_0x483b13[_0x7c19('0x27')]:undefined,'callbackat':_0x483b13[_0x7c19('0x27')]?moment()['format'](_0x7c19('0x19')):undefined,'VoiceQueueId':_0x1ba0bb['id']});})['catch'](function(_0x4ccd60){_0x3de8dd(_0x4ccd60);});});});};var _0x30a7d8=function(_0x8e0630){return new BPromise(function(_0x17590a,_0x3f33ae){_0x5d0482(_0x8e0630,_0x483b13)[_0x7c19('0x1e')](function(_0x223600){_0x483b13['scheduledat']=_0x223600[_0x7c19('0x28')];_0x361954['CmHopper'][_0x7c19('0x1d')]({'where':{'phone':_0x483b13[_0x7c19('0xb')],'VoiceQueueId':_0x8e0630['id']}})[_0x7c19('0x1e')](function(_0x469fc5){if(!_[_0x7c19('0x1a')](_0x469fc5)){throw new Error(_0x7c19('0x23')+_0x483b13[_0x7c19('0xb')]+_0x7c19('0x29')+_0x8e0630['id']);}return _0x361954[_0x7c19('0x2a')][_0x7c19('0x1d')]({'where':{'calleridnum':_0x483b13[_0x7c19('0xb')],'VoiceQueueId':_0x8e0630['id']}});})[_0x7c19('0x1e')](function(_0x44f9de){if(!_[_0x7c19('0x1a')](_0x44f9de)){throw new Error(_0x7c19('0x2b')+_0x483b13[_0x7c19('0xb')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20'+_0x8e0630['id']);}return _0x361954[_0x7c19('0x2c')][_0x7c19('0x24')]({'phone':_0x483b13['phone'],'ContactId':_0x483b13['id'],'ListId':_0x483b13[_0x7c19('0x25')],'priority':_0x483b13['priority']?_0x483b13[_0x7c19('0x26')]:0x2,'scheduledat':_0x483b13[_0x7c19('0x18')]?_0x483b13['scheduledat']:moment()[_0x7c19('0x22')](_0x7c19('0x19')),'callback':_0x483b13[_0x7c19('0x27')]?!![]:![],'callbackuniqueid':_0x483b13['callbackUniqueid']?_0x483b13[_0x7c19('0x27')]:undefined,'callbackat':_0x483b13['callbackUniqueid']?moment()[_0x7c19('0x22')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x8e0630['id']});})['catch'](function(_0x53252d){_0x3f33ae(_0x53252d);});});});};function _0x3e8442(){return function(_0x3b9536){logger[_0x7c19('0x2d')](_0x7c19('0x16'),_0x7c19('0x2e'),util[_0x7c19('0x17')](_0x3b9536,{'showHidden':![],'depth':null}));};}function _0x233c53(_0x37f26b,_0x4981e3){var _0x2681e1=_0x4981e3[_0x7c19('0x18')]?_0x4981e3[_0x7c19('0x18')]:moment()[_0x7c19('0x22')](_0x7c19('0x19'));return new BPromise(function(_0xd1147e,_0x5e9c70){if(_[_0x7c19('0x1a')](_0x4981e3[_0x7c19('0x1b')])){_0xd1147e({'ret':_0x2681e1});}else{_0x361954[_0x7c19('0x2f')][_0x7c19('0x1d')]({'where':{'id':_0x37f26b['id']}})['then'](function(_0x194e6d){if(!_[_0x7c19('0x1a')](_0x194e6d)){var _0x1b00ee=_0x194e6d['dialTimezone'];if(!_['isNil'](_0x1b00ee)){var _0x322b5d=shared[_0x7c19('0x1f')];var _0x4331c6=_0x322b5d[_0x1b00ee];var _0x2abe8f=_0x322b5d[_0x4981e3['dialTimezone']];if(!_['isNil'](_0x4331c6)&&!_[_0x7c19('0x1a')](_0x2abe8f)){var _0x2b45bb=_0x4331c6[_0x7c19('0x20')]-_0x2abe8f[_0x7c19('0x20')];_0x2681e1=_0x4981e3[_0x7c19('0x18')]?_0x4981e3[_0x7c19('0x18')]:moment();var _0x36489b=moment(_0x2681e1)['add'](_0x2b45bb,_0x7c19('0x21'));_0xd1147e({'ret':_0x36489b['format'](_0x7c19('0x19'))});}else _0xd1147e({'ret':_0x2681e1});}else _0xd1147e({'ret':_0x2681e1});}else{_0xd1147e({'ret':_0x2681e1});}});}});return 0xa;}var _0x10af6a=function(_0x1a67a3){return new BPromise(function(_0x451909,_0x43723c){_0x233c53(_0x1a67a3,_0x483b13)[_0x7c19('0x1e')](function(_0x18f293){_0x483b13[_0x7c19('0x18')]=_0x18f293['ret'];_0x361954['CmHopper'][_0x7c19('0x1d')]({'where':{'phone':_0x483b13['phone'],'CampaignId':_0x1a67a3['id']}})[_0x7c19('0x1e')](function(_0x39a335){if(!_[_0x7c19('0x1a')](_0x39a335)){throw new Error(_0x7c19('0x23')+_0x483b13[_0x7c19('0xb')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x1a67a3['id']);}return _0x361954[_0x7c19('0x2c')]['create']({'phone':_0x483b13[_0x7c19('0xb')],'ContactId':_0x483b13['id'],'ListId':_0x483b13[_0x7c19('0x25')],'priority':_0x483b13['priority']?_0x483b13[_0x7c19('0x26')]:0x2,'scheduledat':_0x483b13['scheduledat']?_0x483b13['scheduledat']:moment()['format'](_0x7c19('0x19')),'callback':_0x483b13['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x483b13[_0x7c19('0x27')]?_0x483b13[_0x7c19('0x27')]:undefined,'callbackat':_0x483b13[_0x7c19('0x27')]?moment()[_0x7c19('0x22')](_0x7c19('0x19')):undefined,'CampaignId':_0x1a67a3['id']});})[_0x7c19('0x30')](function(_0x5c78ef){_0x43723c(_0x5c78ef);});});});};var _0x5598d3=function(_0x4d2dda){return new BPromise(function(_0x3d2cb6,_0x9e047d){_0x233c53(_0x4d2dda,_0x483b13)[_0x7c19('0x1e')](function(_0x515608){_0x483b13['scheduledat']=_0x515608[_0x7c19('0x28')];_0x361954[_0x7c19('0x2c')]['findOne']({'where':{'phone':_0x483b13[_0x7c19('0xb')],'CampaignId':_0x4d2dda['id']}})[_0x7c19('0x1e')](function(_0x2e86c5){if(!_[_0x7c19('0x1a')](_0x2e86c5)){throw new Error(_0x7c19('0x23')+_0x483b13[_0x7c19('0xb')]+_0x7c19('0x31')+_0x4d2dda['id']);}return _0x361954[_0x7c19('0x2a')][_0x7c19('0x1d')]({'where':{'calleridnum':_0x483b13[_0x7c19('0xb')],'CampaignId':_0x4d2dda['id']}});})[_0x7c19('0x1e')](function(_0x19ead9){if(!_['isNil'](_0x19ead9)){throw new Error(_0x7c19('0x2b')+_0x483b13['phone']+_0x7c19('0x32')+_0x4d2dda['id']);}return _0x361954[_0x7c19('0x2c')][_0x7c19('0x24')]({'phone':_0x483b13[_0x7c19('0xb')],'ContactId':_0x483b13['id'],'ListId':_0x483b13[_0x7c19('0x25')],'priority':_0x483b13[_0x7c19('0x26')]?_0x483b13[_0x7c19('0x26')]:0x2,'scheduledat':_0x483b13[_0x7c19('0x18')]?_0x483b13[_0x7c19('0x18')]:moment()[_0x7c19('0x22')](_0x7c19('0x19')),'callback':_0x483b13[_0x7c19('0x27')]?!![]:![],'callbackuniqueid':_0x483b13[_0x7c19('0x27')]?_0x483b13[_0x7c19('0x27')]:undefined,'callbackat':_0x483b13[_0x7c19('0x27')]?moment()[_0x7c19('0x22')](_0x7c19('0x19')):undefined,'CampaignId':_0x4d2dda['id']});})[_0x7c19('0x30')](function(_0x1652c8){_0x9e047d(_0x1652c8);});});});};if(_0x483b13[_0x7c19('0x25')]){_0x361954[_0x7c19('0x1c')]['findAll']({'where':{'type':_0x7c19('0x33')},'attributes':['id',_0x7c19('0x34'),'dialTimezone'],'include':[{'model':_0x361954[_0x7c19('0x35')],'as':'Lists','where':{'id':_0x483b13['ListId']}}]})['then'](function(_0x2de8b2){if(_0x2de8b2){var _0x141a1a=[];for(var _0x967f6c=0x0,_0x96d70d;_0x967f6c<_0x2de8b2['length'];_0x967f6c+=0x1){_0x96d70d=_0x2de8b2[_0x967f6c][_0x7c19('0x15')]({'plain':!![]});switch(_0x96d70d['dialCheckDuplicateType']){case _0x7c19('0x36'):_0x30a7d8(_0x96d70d)[_0x7c19('0x30')](_0x1e416e());break;case _0x7c19('0x37'):_0x34189d(_0x96d70d)[_0x7c19('0x30')](_0x1e416e());break;default:_0x233c53(_0x96d70d,_0x483b13)[_0x7c19('0x1e')](function(_0x370b32){_0x483b13[_0x7c19('0x18')]=_0x370b32[_0x7c19('0x28')];_0x361954[_0x7c19('0x2c')][_0x7c19('0x24')]({'phone':_0x483b13[_0x7c19('0xb')],'ContactId':_0x483b13['id'],'ListId':_0x483b13[_0x7c19('0x25')],'scheduledat':_0x483b13[_0x7c19('0x18')]?_0x483b13[_0x7c19('0x18')]:moment()[_0x7c19('0x22')](_0x7c19('0x19')),'priority':_0x483b13['priority']?_0x483b13['priority']:0x2,'callback':_0x483b13[_0x7c19('0x27')]?!![]:![],'callbackuniqueid':_0x483b13[_0x7c19('0x27')]?_0x483b13[_0x7c19('0x27')]:undefined,'callbackat':_0x483b13[_0x7c19('0x27')]?moment()[_0x7c19('0x22')](_0x7c19('0x19')):undefined,'VoiceQueueId':_0x96d70d['id']})['catch'](_0x1e416e());});}}}})['then'](function(){return _0x361954[_0x7c19('0x1c')][_0x7c19('0x38')]({'where':{'type':_0x7c19('0x33')},'attributes':['id'],'include':[{'model':_0x361954[_0x7c19('0x35')],'as':_0x7c19('0x39'),'where':{'id':_0x483b13[_0x7c19('0x25')]}}]})[_0x7c19('0x1e')](function(_0x1a028b){if(_0x1a028b){var _0x2cb52a=[];for(var _0x1cdbda=0x0,_0x3bbce0;_0x1cdbda<_0x1a028b[_0x7c19('0x3a')];_0x1cdbda+=0x1){_0x3bbce0=_0x1a028b[_0x1cdbda][_0x7c19('0x15')]({'plain':!![]});_0x361954[_0x7c19('0x3b')][_0x7c19('0x24')]({'phone':_0x483b13['phone'],'ContactId':_0x483b13['id'],'ListId':_0x483b13[_0x7c19('0x25')],'VoiceQueueId':_0x3bbce0['id']})[_0x7c19('0x30')](function(_0x187ad1){logger[_0x7c19('0x2d')](_0x7c19('0x3c'),_0x7c19('0x2e'),_0x187ad1[_0x7c19('0x3d')]);});}}});})['then'](function(){return _0x361954[_0x7c19('0x2f')]['findAll']({'attributes':['id',_0x7c19('0x34'),_0x7c19('0x1b')],'include':[{'model':_0x361954[_0x7c19('0x35')],'as':_0x7c19('0x3e'),'where':{'id':_0x483b13[_0x7c19('0x25')]}}]})[_0x7c19('0x1e')](function(_0x59a7c1){if(_0x59a7c1){var _0x3c39bb=[];for(var _0x2b86c5=0x0,_0x3f9339;_0x2b86c5<_0x59a7c1[_0x7c19('0x3a')];_0x2b86c5+=0x1){_0x3f9339=_0x59a7c1[_0x2b86c5][_0x7c19('0x15')]({'plain':!![]});switch(_0x3f9339[_0x7c19('0x34')]){case _0x7c19('0x36'):_0x5598d3(_0x3f9339)[_0x7c19('0x30')](_0x3e8442());break;case _0x7c19('0x37'):_0x10af6a(_0x3f9339)[_0x7c19('0x30')](_0x3e8442());break;default:_0x361954[_0x7c19('0x2c')][_0x7c19('0x24')]({'phone':_0x483b13[_0x7c19('0xb')],'ContactId':_0x483b13['id'],'ListId':_0x483b13['ListId'],'scheduledat':_0x483b13[_0x7c19('0x18')]?_0x483b13['scheduledat']:moment()[_0x7c19('0x22')](_0x7c19('0x19')),'priority':_0x483b13[_0x7c19('0x26')]?_0x483b13[_0x7c19('0x26')]:0x2,'callback':_0x483b13[_0x7c19('0x27')]?!![]:![],'callbackuniqueid':_0x483b13[_0x7c19('0x27')]?_0x483b13['callbackUniqueid']:undefined,'callbackat':_0x483b13[_0x7c19('0x27')]?moment()[_0x7c19('0x22')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x3f9339['id']})[_0x7c19('0x30')](_0x3e8442());}}}});})[_0x7c19('0x1e')](function(){return _0x361954['Campaign'][_0x7c19('0x38')]({'attributes':['id'],'include':[{'model':_0x361954['CmList'],'as':_0x7c19('0x39'),'where':{'id':_0x483b13[_0x7c19('0x25')]}}]})[_0x7c19('0x1e')](function(_0x1ed584){if(_0x1ed584){var _0x41b47e=[];for(var _0x1bb68b=0x0,_0x31d042;_0x1bb68b<_0x1ed584[_0x7c19('0x3a')];_0x1bb68b+=0x1){_0x31d042=_0x1ed584[_0x1bb68b][_0x7c19('0x15')]({'plain':!![]});_0x361954[_0x7c19('0x3b')]['create']({'phone':_0x483b13[_0x7c19('0xb')],'ContactId':_0x483b13['id'],'ListId':_0x483b13[_0x7c19('0x25')],'CampaignId':_0x31d042['id']})['catch'](function(_0x227b62){logger['error'](_0x7c19('0x3c'),_0x7c19('0x2e'),_0x227b62[_0x7c19('0x3d')]);});}}});})[_0x7c19('0x1e')](function(){_0x1b618a();})[_0x7c19('0x30')](function(_0x2bb7c3){logger[_0x7c19('0x2d')](_0x7c19('0x3c'),_0x7c19('0x2e'),_0x2bb7c3[_0x7c19('0x3d')]);_0x1b618a(_0x2bb7c3);});}else{_0x1b618a(new Error('List\x20not\x20found'));}},'afterDestroy':function(_0x4e98e1,_0x3bbe36,_0x52e6ea){var _0x54ce18=_0x588ff1[_0x7c19('0x14')];var _0x52082a=_0x4e98e1[_0x7c19('0x15')]({'plain':!![]});return _0x54ce18['CmHopper'][_0x7c19('0x38')]({'raw':!![],'where':{'ListId':_0x52082a['ListId'],'ContactId':_0x52082a['id']}})[_0x7c19('0x1e')](function(_0x3bfb8a){if(!_[_0x7c19('0x3f')](_0x3bfb8a)){var _0x34017c=[];for(var _0x55249c=0x0;_0x55249c<_0x3bfb8a[_0x7c19('0x3a')];_0x55249c+=0x1){var _0x40f0c9=_0x54ce18[_0x7c19('0x2c')][_0x7c19('0x40')]({'where':{'ListId':_0x3bfb8a[_0x55249c][_0x7c19('0x25')],'ContactId':_0x3bfb8a[_0x55249c]['ContactId'],'VoiceQueueId':_0x3bfb8a[_0x55249c][_0x7c19('0x41')],'CampaignId':_0x3bfb8a[_0x55249c][_0x7c19('0x42')]}});_0x34017c[_0x7c19('0x43')](_0x40f0c9);}return BPromise[_0x7c19('0x44')](_0x34017c);}})['then'](function(_0x508778){logger[_0x7c19('0x45')](_0x7c19('0x46'),util[_0x7c19('0x17')](_0x508778,{'showHidden':![],'depth':null}));_0x52e6ea();})[_0x7c19('0x30')](function(_0x48efdb){logger[_0x7c19('0x2d')](_0x7c19('0x47'),util[_0x7c19('0x17')](_0x48efdb,{'showHidden':![],'depth':null}));_0x52e6ea(_0x48efdb);});}}});};
\ No newline at end of file
+var _0xbf41=['CmHopperFinal','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','VoiceQueue','findAll','outbound','dialCheckDuplicateType','Lists','length','always','onlyIfOpen','CmList','BlackLists','cmContact,\x20%s,\x20%s','CmHopperBlack','List\x20not\x20found','isEmpty','ContactId','CampaignId','[CmContact][afterDestroy][Succesfull]','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment/shared','./cmContact.attributes','exports','define','CmContact','cm_contacts','phone','fti_cm_contacts','firstName','mobile','fax','utf8mb4','utf8mb4_unicode_ci','models','get','error','cmContact','inspect','scheduledat','format','isNil','dialTimezone','findOne','then','utcOffset','minutes','YYYY-MM-DD\x20HH:mm:ss','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopper','create','ListId','priority','callbackUniqueid','catch','ret','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','afterCreate','Campaign','add','\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'];(function(_0x32bfe9,_0x3ce9cf){var _0x52ecd5=function(_0x5d1ef6){while(--_0x5d1ef6){_0x32bfe9['push'](_0x32bfe9['shift']());}};_0x52ecd5(++_0x3ce9cf);}(_0xbf41,0xe3));var _0x1bf4=function(_0x224ea4,_0x12714d){_0x224ea4=_0x224ea4-0x0;var _0x35d206=_0xbf41[_0x224ea4];return _0x35d206;};'use strict';var _=require('lodash');var util=require(_0x1bf4('0x0'));var logger=require(_0x1bf4('0x1'))(_0x1bf4('0x2'));var moment=require('moment');var BPromise=require(_0x1bf4('0x3'));var rp=require(_0x1bf4('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1bf4('0x5'));var config=require('../../config/environment');var shared=require(_0x1bf4('0x6'));var attributes=require(_0x1bf4('0x7'));module[_0x1bf4('0x8')]=function(_0x5ae203,_0x2162c7){return _0x5ae203[_0x1bf4('0x9')](_0x1bf4('0xa'),attributes,{'tableName':_0x1bf4('0xb'),'paranoid':!![],'indexes':[{'name':_0x1bf4('0xc'),'fields':[_0x1bf4('0xc')]},{'name':_0x1bf4('0xd'),'fields':[_0x1bf4('0xe'),'lastName',_0x1bf4('0xc'),_0x1bf4('0xf'),_0x1bf4('0x10'),'email'],'type':'FULLTEXT'}],'timestamps':!![],'charset':_0x1bf4('0x11'),'collate':_0x1bf4('0x12'),'hooks':{'afterCreate':function(_0x3b38d5,_0x4bc61f,_0x1eb619){var _0x216ce7=_0x5ae203[_0x1bf4('0x13')];var _0x4f6cb5=_0x3b38d5[_0x1bf4('0x14')]({'plain':!![]});function _0x1b346b(){return function(_0x2fef17){logger[_0x1bf4('0x15')](_0x1bf4('0x16'),'afterCreate',util[_0x1bf4('0x17')](_0x2fef17,{'showHidden':![],'depth':null}));};}function _0x4ae7de(_0x214d56,_0x521aa9){var _0x19bb7c=_0x521aa9[_0x1bf4('0x18')]?_0x521aa9[_0x1bf4('0x18')]:moment()[_0x1bf4('0x19')]('YYYY-MM-DD\x20HH:mm:ss');return new BPromise(function(_0x4f1603,_0x1e0956){if(_[_0x1bf4('0x1a')](_0x521aa9[_0x1bf4('0x1b')])){_0x4f1603({'ret':_0x19bb7c});}else{_0x216ce7['VoiceQueue'][_0x1bf4('0x1c')]({'where':{'id':_0x214d56['id']}})[_0x1bf4('0x1d')](function(_0x3249d1){if(!_[_0x1bf4('0x1a')](_0x3249d1)){var _0xde00ab=_0x3249d1[_0x1bf4('0x1b')];if(!_['isNil'](_0xde00ab)){var _0x4e6247=shared['timezones'];var _0xa2f285=_0x4e6247[_0xde00ab];var _0x29c686=_0x4e6247[_0x521aa9['dialTimezone']];if(!_[_0x1bf4('0x1a')](_0xa2f285)&&!_[_0x1bf4('0x1a')](_0x29c686)){var _0x311766=_0xa2f285[_0x1bf4('0x1e')]-_0x29c686[_0x1bf4('0x1e')];_0x19bb7c=_0x521aa9[_0x1bf4('0x18')]?_0x521aa9['scheduledat']:moment();var _0x5e0cef=moment(_0x19bb7c)['add'](_0x311766,_0x1bf4('0x1f'));_0x4f1603({'ret':_0x5e0cef[_0x1bf4('0x19')](_0x1bf4('0x20'))});}else _0x4f1603({'ret':_0x19bb7c});}else _0x4f1603({'ret':_0x19bb7c});}else{_0x4f1603({'ret':_0x19bb7c});}});}});return 0xa;}var _0x26284d=function(_0x369cff){return new BPromise(function(_0x229977,_0x364f0e){_0x4ae7de(_0x369cff,_0x4f6cb5)[_0x1bf4('0x1d')](function(_0x15f5a5){_0x4f6cb5[_0x1bf4('0x18')]=_0x15f5a5['ret'];_0x216ce7['CmHopper']['findOne']({'where':{'phone':_0x4f6cb5['phone'],'VoiceQueueId':_0x369cff['id']}})[_0x1bf4('0x1d')](function(_0x3a8f07){if(!_[_0x1bf4('0x1a')](_0x3a8f07)){throw new Error(_0x1bf4('0x21')+_0x4f6cb5[_0x1bf4('0xc')]+_0x1bf4('0x22')+_0x369cff['id']);}return _0x216ce7[_0x1bf4('0x23')][_0x1bf4('0x24')]({'phone':_0x4f6cb5[_0x1bf4('0xc')],'ContactId':_0x4f6cb5['id'],'ListId':_0x4f6cb5[_0x1bf4('0x25')],'priority':_0x4f6cb5[_0x1bf4('0x26')]?_0x4f6cb5['priority']:0x2,'scheduledat':_0x4f6cb5[_0x1bf4('0x18')]?_0x4f6cb5[_0x1bf4('0x18')]:moment()[_0x1bf4('0x19')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x4f6cb5[_0x1bf4('0x27')]?!![]:![],'callbackuniqueid':_0x4f6cb5[_0x1bf4('0x27')]?_0x4f6cb5[_0x1bf4('0x27')]:undefined,'callbackat':_0x4f6cb5['callbackUniqueid']?moment()[_0x1bf4('0x19')](_0x1bf4('0x20')):undefined,'VoiceQueueId':_0x369cff['id']});})[_0x1bf4('0x28')](function(_0x2bd696){_0x364f0e(_0x2bd696);});});});};var _0x3707f7=function(_0xccad62){return new BPromise(function(_0x220753,_0x2cd0cd){_0x4ae7de(_0xccad62,_0x4f6cb5)[_0x1bf4('0x1d')](function(_0x19e331){_0x4f6cb5[_0x1bf4('0x18')]=_0x19e331[_0x1bf4('0x29')];_0x216ce7[_0x1bf4('0x23')][_0x1bf4('0x1c')]({'where':{'phone':_0x4f6cb5[_0x1bf4('0xc')],'VoiceQueueId':_0xccad62['id']}})[_0x1bf4('0x1d')](function(_0x4d2c4b){if(!_[_0x1bf4('0x1a')](_0x4d2c4b)){throw new Error(_0x1bf4('0x21')+_0x4f6cb5['phone']+_0x1bf4('0x2a')+_0xccad62['id']);}return _0x216ce7['CmHopperFinal'][_0x1bf4('0x1c')]({'where':{'calleridnum':_0x4f6cb5[_0x1bf4('0xc')],'VoiceQueueId':_0xccad62['id']}});})[_0x1bf4('0x1d')](function(_0x17b9e4){if(!_[_0x1bf4('0x1a')](_0x17b9e4)){throw new Error('cmContact,\x20afterCreate,\x20'+_0x4f6cb5[_0x1bf4('0xc')]+_0x1bf4('0x2b')+_0xccad62['id']);}return _0x216ce7['CmHopper'][_0x1bf4('0x24')]({'phone':_0x4f6cb5[_0x1bf4('0xc')],'ContactId':_0x4f6cb5['id'],'ListId':_0x4f6cb5[_0x1bf4('0x25')],'priority':_0x4f6cb5[_0x1bf4('0x26')]?_0x4f6cb5[_0x1bf4('0x26')]:0x2,'scheduledat':_0x4f6cb5[_0x1bf4('0x18')]?_0x4f6cb5[_0x1bf4('0x18')]:moment()[_0x1bf4('0x19')](_0x1bf4('0x20')),'callback':_0x4f6cb5['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x4f6cb5[_0x1bf4('0x27')]?_0x4f6cb5[_0x1bf4('0x27')]:undefined,'callbackat':_0x4f6cb5[_0x1bf4('0x27')]?moment()['format'](_0x1bf4('0x20')):undefined,'VoiceQueueId':_0xccad62['id']});})[_0x1bf4('0x28')](function(_0x136557){_0x2cd0cd(_0x136557);});});});};function _0x451c7c(){return function(_0x4a3b44){logger[_0x1bf4('0x15')](_0x1bf4('0x16'),_0x1bf4('0x2c'),util['inspect'](_0x4a3b44,{'showHidden':![],'depth':null}));};}function _0x1c3b40(_0x5d5b99,_0x55cbe9){var _0x2b324f=_0x55cbe9['scheduledat']?_0x55cbe9[_0x1bf4('0x18')]:moment()[_0x1bf4('0x19')](_0x1bf4('0x20'));return new BPromise(function(_0x34186e,_0x30ec59){if(_[_0x1bf4('0x1a')](_0x55cbe9['dialTimezone'])){_0x34186e({'ret':_0x2b324f});}else{_0x216ce7[_0x1bf4('0x2d')][_0x1bf4('0x1c')]({'where':{'id':_0x5d5b99['id']}})[_0x1bf4('0x1d')](function(_0x392110){if(!_[_0x1bf4('0x1a')](_0x392110)){var _0x49fb80=_0x392110['dialTimezone'];if(!_[_0x1bf4('0x1a')](_0x49fb80)){var _0x7a9638=shared['timezones'];var _0x291e03=_0x7a9638[_0x49fb80];var _0x13d8d1=_0x7a9638[_0x55cbe9[_0x1bf4('0x1b')]];if(!_[_0x1bf4('0x1a')](_0x291e03)&&!_['isNil'](_0x13d8d1)){var _0x4d0e82=_0x291e03[_0x1bf4('0x1e')]-_0x13d8d1[_0x1bf4('0x1e')];_0x2b324f=_0x55cbe9['scheduledat']?_0x55cbe9[_0x1bf4('0x18')]:moment();var _0x2e3240=moment(_0x2b324f)[_0x1bf4('0x2e')](_0x4d0e82,_0x1bf4('0x1f'));_0x34186e({'ret':_0x2e3240['format'](_0x1bf4('0x20'))});}else _0x34186e({'ret':_0x2b324f});}else _0x34186e({'ret':_0x2b324f});}else{_0x34186e({'ret':_0x2b324f});}});}});return 0xa;}var _0x208da4=function(_0x8375c1){return new BPromise(function(_0x2d50ed,_0xa74ee0){_0x1c3b40(_0x8375c1,_0x4f6cb5)['then'](function(_0x3fb988){_0x4f6cb5[_0x1bf4('0x18')]=_0x3fb988[_0x1bf4('0x29')];_0x216ce7[_0x1bf4('0x23')][_0x1bf4('0x1c')]({'where':{'phone':_0x4f6cb5[_0x1bf4('0xc')],'CampaignId':_0x8375c1['id']}})[_0x1bf4('0x1d')](function(_0x1c282b){if(!_[_0x1bf4('0x1a')](_0x1c282b)){throw new Error(_0x1bf4('0x21')+_0x4f6cb5[_0x1bf4('0xc')]+_0x1bf4('0x2f')+_0x8375c1['id']);}return _0x216ce7[_0x1bf4('0x23')][_0x1bf4('0x24')]({'phone':_0x4f6cb5[_0x1bf4('0xc')],'ContactId':_0x4f6cb5['id'],'ListId':_0x4f6cb5[_0x1bf4('0x25')],'priority':_0x4f6cb5[_0x1bf4('0x26')]?_0x4f6cb5[_0x1bf4('0x26')]:0x2,'scheduledat':_0x4f6cb5[_0x1bf4('0x18')]?_0x4f6cb5['scheduledat']:moment()[_0x1bf4('0x19')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x4f6cb5['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x4f6cb5[_0x1bf4('0x27')]?_0x4f6cb5[_0x1bf4('0x27')]:undefined,'callbackat':_0x4f6cb5[_0x1bf4('0x27')]?moment()[_0x1bf4('0x19')](_0x1bf4('0x20')):undefined,'CampaignId':_0x8375c1['id']});})[_0x1bf4('0x28')](function(_0x382b2a){_0xa74ee0(_0x382b2a);});});});};var _0x4cc4ad=function(_0x4ae816){return new BPromise(function(_0x160886,_0x2e27ab){_0x1c3b40(_0x4ae816,_0x4f6cb5)['then'](function(_0x916260){_0x4f6cb5[_0x1bf4('0x18')]=_0x916260['ret'];_0x216ce7['CmHopper']['findOne']({'where':{'phone':_0x4f6cb5[_0x1bf4('0xc')],'CampaignId':_0x4ae816['id']}})[_0x1bf4('0x1d')](function(_0x1f1075){if(!_[_0x1bf4('0x1a')](_0x1f1075)){throw new Error(_0x1bf4('0x21')+_0x4f6cb5['phone']+_0x1bf4('0x30')+_0x4ae816['id']);}return _0x216ce7[_0x1bf4('0x31')][_0x1bf4('0x1c')]({'where':{'calleridnum':_0x4f6cb5[_0x1bf4('0xc')],'CampaignId':_0x4ae816['id']}});})[_0x1bf4('0x1d')](function(_0x4f12b6){if(!_[_0x1bf4('0x1a')](_0x4f12b6)){throw new Error(_0x1bf4('0x32')+_0x4f6cb5['phone']+_0x1bf4('0x33')+_0x4ae816['id']);}return _0x216ce7['CmHopper'][_0x1bf4('0x24')]({'phone':_0x4f6cb5[_0x1bf4('0xc')],'ContactId':_0x4f6cb5['id'],'ListId':_0x4f6cb5[_0x1bf4('0x25')],'priority':_0x4f6cb5[_0x1bf4('0x26')]?_0x4f6cb5[_0x1bf4('0x26')]:0x2,'scheduledat':_0x4f6cb5[_0x1bf4('0x18')]?_0x4f6cb5[_0x1bf4('0x18')]:moment()[_0x1bf4('0x19')](_0x1bf4('0x20')),'callback':_0x4f6cb5[_0x1bf4('0x27')]?!![]:![],'callbackuniqueid':_0x4f6cb5[_0x1bf4('0x27')]?_0x4f6cb5[_0x1bf4('0x27')]:undefined,'callbackat':_0x4f6cb5[_0x1bf4('0x27')]?moment()[_0x1bf4('0x19')](_0x1bf4('0x20')):undefined,'CampaignId':_0x4ae816['id']});})[_0x1bf4('0x28')](function(_0x17cdfa){_0x2e27ab(_0x17cdfa);});});});};if(_0x4f6cb5[_0x1bf4('0x25')]){_0x216ce7[_0x1bf4('0x34')][_0x1bf4('0x35')]({'where':{'type':_0x1bf4('0x36')},'attributes':['id',_0x1bf4('0x37'),'dialTimezone'],'include':[{'model':_0x216ce7['CmList'],'as':_0x1bf4('0x38'),'where':{'id':_0x4f6cb5[_0x1bf4('0x25')]}}]})['then'](function(_0x379cad){if(_0x379cad){var _0x2599e5=[];for(var _0x9f790c=0x0,_0xd57342;_0x9f790c<_0x379cad[_0x1bf4('0x39')];_0x9f790c+=0x1){_0xd57342=_0x379cad[_0x9f790c]['get']({'plain':!![]});switch(_0xd57342['dialCheckDuplicateType']){case _0x1bf4('0x3a'):_0x3707f7(_0xd57342)[_0x1bf4('0x28')](_0x1b346b());break;case _0x1bf4('0x3b'):_0x26284d(_0xd57342)['catch'](_0x1b346b());break;default:_0x1c3b40(_0xd57342,_0x4f6cb5)[_0x1bf4('0x1d')](function(_0x22f43c){_0x4f6cb5[_0x1bf4('0x18')]=_0x22f43c[_0x1bf4('0x29')];_0x216ce7[_0x1bf4('0x23')][_0x1bf4('0x24')]({'phone':_0x4f6cb5['phone'],'ContactId':_0x4f6cb5['id'],'ListId':_0x4f6cb5[_0x1bf4('0x25')],'scheduledat':_0x4f6cb5[_0x1bf4('0x18')]?_0x4f6cb5[_0x1bf4('0x18')]:moment()['format'](_0x1bf4('0x20')),'priority':_0x4f6cb5[_0x1bf4('0x26')]?_0x4f6cb5['priority']:0x2,'callback':_0x4f6cb5[_0x1bf4('0x27')]?!![]:![],'callbackuniqueid':_0x4f6cb5[_0x1bf4('0x27')]?_0x4f6cb5[_0x1bf4('0x27')]:undefined,'callbackat':_0x4f6cb5[_0x1bf4('0x27')]?moment()[_0x1bf4('0x19')](_0x1bf4('0x20')):undefined,'VoiceQueueId':_0xd57342['id']})['catch'](_0x1b346b());});}}}})[_0x1bf4('0x1d')](function(){return _0x216ce7['VoiceQueue']['findAll']({'where':{'type':_0x1bf4('0x36')},'attributes':['id'],'include':[{'model':_0x216ce7[_0x1bf4('0x3c')],'as':_0x1bf4('0x3d'),'where':{'id':_0x4f6cb5[_0x1bf4('0x25')]}}]})[_0x1bf4('0x1d')](function(_0x2d6b52){if(_0x2d6b52){var _0xd7be7a=[];for(var _0x1d7edc=0x0,_0x427dbf;_0x1d7edc<_0x2d6b52['length'];_0x1d7edc+=0x1){_0x427dbf=_0x2d6b52[_0x1d7edc][_0x1bf4('0x14')]({'plain':!![]});_0x216ce7['CmHopperBlack'][_0x1bf4('0x24')]({'phone':_0x4f6cb5[_0x1bf4('0xc')],'ContactId':_0x4f6cb5['id'],'ListId':_0x4f6cb5[_0x1bf4('0x25')],'VoiceQueueId':_0x427dbf['id']})[_0x1bf4('0x28')](function(_0x402b45){logger[_0x1bf4('0x15')](_0x1bf4('0x3e'),_0x1bf4('0x2c'),_0x402b45['message']);});}}});})['then'](function(){return _0x216ce7['Campaign']['findAll']({'attributes':['id','dialCheckDuplicateType','dialTimezone'],'include':[{'model':_0x216ce7[_0x1bf4('0x3c')],'as':'Lists','where':{'id':_0x4f6cb5['ListId']}}]})[_0x1bf4('0x1d')](function(_0x31e25d){if(_0x31e25d){var _0x436c0d=[];for(var _0x1254ef=0x0,_0x330672;_0x1254ef<_0x31e25d[_0x1bf4('0x39')];_0x1254ef+=0x1){_0x330672=_0x31e25d[_0x1254ef][_0x1bf4('0x14')]({'plain':!![]});switch(_0x330672['dialCheckDuplicateType']){case _0x1bf4('0x3a'):_0x4cc4ad(_0x330672)['catch'](_0x451c7c());break;case _0x1bf4('0x3b'):_0x208da4(_0x330672)[_0x1bf4('0x28')](_0x451c7c());break;default:_0x216ce7[_0x1bf4('0x23')]['create']({'phone':_0x4f6cb5[_0x1bf4('0xc')],'ContactId':_0x4f6cb5['id'],'ListId':_0x4f6cb5['ListId'],'scheduledat':_0x4f6cb5[_0x1bf4('0x18')]?_0x4f6cb5[_0x1bf4('0x18')]:moment()['format'](_0x1bf4('0x20')),'priority':_0x4f6cb5[_0x1bf4('0x26')]?_0x4f6cb5['priority']:0x2,'callback':_0x4f6cb5[_0x1bf4('0x27')]?!![]:![],'callbackuniqueid':_0x4f6cb5[_0x1bf4('0x27')]?_0x4f6cb5[_0x1bf4('0x27')]:undefined,'callbackat':_0x4f6cb5[_0x1bf4('0x27')]?moment()[_0x1bf4('0x19')](_0x1bf4('0x20')):undefined,'CampaignId':_0x330672['id']})[_0x1bf4('0x28')](_0x451c7c());}}}});})[_0x1bf4('0x1d')](function(){return _0x216ce7[_0x1bf4('0x2d')][_0x1bf4('0x35')]({'attributes':['id'],'include':[{'model':_0x216ce7[_0x1bf4('0x3c')],'as':_0x1bf4('0x3d'),'where':{'id':_0x4f6cb5[_0x1bf4('0x25')]}}]})[_0x1bf4('0x1d')](function(_0x5ce1d){if(_0x5ce1d){var _0x7095ac=[];for(var _0x3ae7a9=0x0,_0x2336fc;_0x3ae7a9<_0x5ce1d[_0x1bf4('0x39')];_0x3ae7a9+=0x1){_0x2336fc=_0x5ce1d[_0x3ae7a9][_0x1bf4('0x14')]({'plain':!![]});_0x216ce7[_0x1bf4('0x3f')][_0x1bf4('0x24')]({'phone':_0x4f6cb5[_0x1bf4('0xc')],'ContactId':_0x4f6cb5['id'],'ListId':_0x4f6cb5[_0x1bf4('0x25')],'CampaignId':_0x2336fc['id']})['catch'](function(_0x1db8b8){logger[_0x1bf4('0x15')](_0x1bf4('0x3e'),'afterCreate',_0x1db8b8['message']);});}}});})[_0x1bf4('0x1d')](function(){_0x1eb619();})['catch'](function(_0x59d45e){logger[_0x1bf4('0x15')](_0x1bf4('0x3e'),_0x1bf4('0x2c'),_0x59d45e['message']);_0x1eb619(_0x59d45e);});}else{_0x1eb619(new Error(_0x1bf4('0x40')));}},'afterDestroy':function(_0x45c344,_0x11764d,_0x23d492){var _0xf4d61e=_0x5ae203['models'];var _0x599851=_0x45c344['get']({'plain':!![]});return _0xf4d61e[_0x1bf4('0x23')]['findAll']({'raw':!![],'where':{'ListId':_0x599851[_0x1bf4('0x25')],'ContactId':_0x599851['id']}})[_0x1bf4('0x1d')](function(_0x820c9c){if(!_[_0x1bf4('0x41')](_0x820c9c)){var _0x209404=[];for(var _0x32233f=0x0;_0x32233f<_0x820c9c[_0x1bf4('0x39')];_0x32233f+=0x1){var _0x26c5b3=_0xf4d61e[_0x1bf4('0x23')]['destroy']({'where':{'ListId':_0x820c9c[_0x32233f][_0x1bf4('0x25')],'ContactId':_0x820c9c[_0x32233f][_0x1bf4('0x42')],'VoiceQueueId':_0x820c9c[_0x32233f]['VoiceQueueId'],'CampaignId':_0x820c9c[_0x32233f][_0x1bf4('0x43')]}});_0x209404['push'](_0x26c5b3);}return BPromise['all'](_0x209404);}})[_0x1bf4('0x1d')](function(_0x1240ad){logger['info'](_0x1bf4('0x44'),util[_0x1bf4('0x17')](_0x1240ad,{'showHidden':![],'depth':null}));_0x23d492();})[_0x1bf4('0x28')](function(_0x3a64d2){logger[_0x1bf4('0x15')]('[CmContact][afterDestroy][Error]',util[_0x1bf4('0x17')](_0x3a64d2,{'showHidden':![],'depth':null}));_0x23d492(_0x3a64d2);});}}});};
\ No newline at end of file
index 0fbbdf6..d87a8cb 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(_0x4f6242,_0x4bcec2){var _0x13ac4b=function(_0x2c0f42){while(--_0x2c0f42){_0x4f6242['push'](_0x4f6242['shift']());}};_0x13ac4b(++_0x4bcec2);}(_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
+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(_0x640c70,_0x335348){var _0x3c1528=function(_0x1b0046){while(--_0x1b0046){_0x640c70['push'](_0x640c70['shift']());}};_0x3c1528(++_0x335348);}(_0x9957,0x93));var _0x7995=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x9957[_0x4cf98e];return _0x1623ac;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var moment=require(_0x7995('0x2'));var BPromise=require(_0x7995('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7995('0x4'));var 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 a1d5272..67ab278 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(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x491a7f,_0x28bb80){_0x491a7f=_0x491a7f-0x0;var _0x3d8f44=_0xa9e0[_0x491a7f];return _0x3d8f44;};'use strict';var CmContactEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){CmContactEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);CmContactEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
+var _0xa9e0=['register','length','cmContact:','./cmContact.events','save','remove','emit','removeListener'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1cfa0d,_0x4391f2){_0x1cfa0d=_0x1cfa0d-0x0;var _0xe33279=_0xa9e0[_0x1cfa0d];return _0xe33279;};'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 4572416..8159864 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(_0x2b5a4c,_0x53cb62){var _0x1a4704=function(_0x5718d9){while(--_0x5718d9){_0x2b5a4c['push'](_0x2b5a4c['shift']());}};_0x1a4704(++_0x53cb62);}(_0xa9e0,0x123));var _0x0a9e=function(_0x24237f,_0x4cf32c){_0x24237f=_0x24237f-0x0;var _0x48298e=_0xa9e0[_0x24237f];return _0x48298e;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['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(_0x78fa07,_0x4d7642){var _0x27f22a=function(_0x4e060a){while(--_0x4e060a){_0x78fa07['push'](_0x78fa07['shift']());}};_0x27f22a(++_0x4d7642);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xa9e0[_0x1facfa];return _0x9ec701;};'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 1a0d147..214c6fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc770=['PHONE','sequelize','exports','INTEGER','STRING'];(function(_0x182c7f,_0x173606){var _0x2542f3=function(_0x4f25e1){while(--_0x4f25e1){_0x182c7f['push'](_0x182c7f['shift']());}};_0x2542f3(++_0x173606);}(_0xc770,0xd3));var _0x0c77=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc770[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x0c77('0x0'));module[_0x0c77('0x1')]={'CmContactId':{'type':Sequelize['INTEGER'],'primaryKey':!![]},'item':{'type':Sequelize['STRING'],'defaultValue':'','primaryKey':!![]},'ItemTypeId':{'type':Sequelize[_0x0c77('0x2')],'defaultValue':null},'ItemClass':{'type':Sequelize[_0x0c77('0x3')],'defaultValue':_0x0c77('0x4')},'OrderBy':{'type':Sequelize[_0x0c77('0x2')],'defaultValue':null},'description':{'type':Sequelize[_0x0c77('0x3')],'defaultValue':null}};
\ No newline at end of file
+var _0x652b=['sequelize','exports','INTEGER','STRING'];(function(_0x4f5df5,_0x26aa83){var _0x339c31=function(_0x1e21ec){while(--_0x1e21ec){_0x4f5df5['push'](_0x4f5df5['shift']());}};_0x339c31(++_0x26aa83);}(_0x652b,0x68));var _0xb652=function(_0x352d28,_0x444033){_0x352d28=_0x352d28-0x0;var _0x387d7e=_0x652b[_0x352d28];return _0x387d7e;};'use strict';var Sequelize=require(_0xb652('0x0'));module[_0xb652('0x1')]={'CmContactId':{'type':Sequelize[_0xb652('0x2')],'primaryKey':!![]},'item':{'type':Sequelize['STRING'],'defaultValue':'','primaryKey':!![]},'ItemTypeId':{'type':Sequelize[_0xb652('0x2')],'defaultValue':null},'ItemClass':{'type':Sequelize['STRING'],'defaultValue':'PHONE'},'OrderBy':{'type':Sequelize[_0xb652('0x2')],'defaultValue':null},'description':{'type':Sequelize[_0xb652('0x3')],'defaultValue':null}};
\ No newline at end of file
index 562beaf..d92f19b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4dc4=['map','query','filters','intersection','attributes','fields','model','hasOwnProperty','nolimit','sort','where','merge','VIRTUAL','filter','options','include','findAll','rows','catch','params','length','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','reject','save','update','destroy','then','get','CmContactHasItems','UserProfileResource','error','stack','name','index','CmContactHasItem','rawAttributes','fieldName','type'];(function(_0x33d28e,_0x3fbf98){var _0x5f1ec5=function(_0x27aef5){while(--_0x27aef5){_0x33d28e['push'](_0x33d28e['shift']());}};_0x5f1ec5(++_0x3fbf98);}(_0x4dc4,0x6f));var _0x44dc=function(_0x45742e,_0x4d3b33){_0x45742e=_0x45742e-0x0;var _0x4ff80b=_0x4dc4[_0x45742e];return _0x4ff80b;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x44dc('0x0'));var jsonpatch=require(_0x44dc('0x1'));var rp=require(_0x44dc('0x2'));var moment=require(_0x44dc('0x3'));var BPromise=require(_0x44dc('0x4'));var Mustache=require(_0x44dc('0x5'));var util=require(_0x44dc('0x6'));var path=require(_0x44dc('0x7'));var sox=require(_0x44dc('0x8'));var csv=require(_0x44dc('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x44dc('0xa'));var _=require('lodash');var squel=require(_0x44dc('0xb'));var crypto=require(_0x44dc('0xc'));var jsforce=require(_0x44dc('0xd'));var deskjs=require(_0x44dc('0xe'));var toCsv=require(_0x44dc('0x9'));var querystring=require(_0x44dc('0xf'));var Papa=require(_0x44dc('0x10'));var Redis=require(_0x44dc('0x11'));var authService=require(_0x44dc('0x12'));var qs=require(_0x44dc('0x13'));var as=require(_0x44dc('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x44dc('0x15'))(_0x44dc('0x16'));var utils=require(_0x44dc('0x17'));var config=require(_0x44dc('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x25afb1,_0x909e40){_0x909e40=_0x909e40||0xcc;return function(_0x3af7e0){if(_0x3af7e0){return _0x25afb1[_0x44dc('0x19')](_0x909e40);}return _0x25afb1[_0x44dc('0x1a')](_0x909e40)[_0x44dc('0x1b')]();};}function respondWithResult(_0x19bd36,_0x328dee){_0x328dee=_0x328dee||0xc8;return function(_0x49bffe){if(_0x49bffe){return _0x19bd36[_0x44dc('0x1a')](_0x328dee)[_0x44dc('0x1c')](_0x49bffe);}};}function respondWithFilteredResult(_0xc1bb3,_0x45ca0b){return function(_0xaec914){if(_0xaec914){var _0x21d103=typeof _0x45ca0b['offset']===_0x44dc('0x1d')&&typeof _0x45ca0b[_0x44dc('0x1e')]===_0x44dc('0x1d');var _0x194f10=_0xaec914[_0x44dc('0x1f')];var _0xe92794=_0x21d103?0x0:_0x45ca0b[_0x44dc('0x20')];var _0x17ebd3=_0x21d103?_0xaec914['count']:_0x45ca0b[_0x44dc('0x20')]+_0x45ca0b[_0x44dc('0x1e')];var _0x4f15f3;if(_0x17ebd3>=_0x194f10){_0x17ebd3=_0x194f10;_0x4f15f3=0xc8;}else{_0x4f15f3=0xce;}_0xc1bb3[_0x44dc('0x1a')](_0x4f15f3);return _0xc1bb3[_0x44dc('0x21')](_0x44dc('0x22'),_0xe92794+'-'+_0x17ebd3+'/'+_0x194f10)[_0x44dc('0x1c')](_0xaec914);}return null;};}function patchUpdates(_0x4aa1aa){return function(_0x91120e){try{jsonpatch['apply'](_0x91120e,_0x4aa1aa,!![]);}catch(_0x58ab29){return BPromise[_0x44dc('0x23')](_0x58ab29);}return _0x91120e[_0x44dc('0x24')]();};}function saveUpdates(_0x1b59b4,_0x1e802c){return function(_0x4d6b83){if(_0x4d6b83){return _0x4d6b83[_0x44dc('0x25')](_0x1b59b4)['then'](function(_0x36bd8e){return _0x36bd8e;});}return null;};}function removeEntity(_0x393a82,_0x43b6b5){return function(_0x4b3865){if(_0x4b3865){return _0x4b3865[_0x44dc('0x26')]()[_0x44dc('0x27')](function(){var _0x169531=_0x4b3865[_0x44dc('0x28')]({'plain':!![]});var _0x22b221=_0x44dc('0x29');return db[_0x44dc('0x2a')]['destroy']({'where':{'type':_0x22b221,'resourceId':_0x169531['id']}})['then'](function(){return _0x4b3865;});})[_0x44dc('0x27')](function(){_0x393a82[_0x44dc('0x1a')](0xcc)[_0x44dc('0x1b')]();});}};}function handleEntityNotFound(_0x490f8c,_0x395fdf){return function(_0x564331){if(!_0x564331){_0x490f8c[_0x44dc('0x19')](0x194);}return _0x564331;};}function handleError(_0xdf869f,_0x1ef60e){_0x1ef60e=_0x1ef60e||0x1f4;return function(_0x30bcf8){logger[_0x44dc('0x2b')](_0x30bcf8[_0x44dc('0x2c')]);if(_0x30bcf8[_0x44dc('0x2d')]){delete _0x30bcf8[_0x44dc('0x2d')];}_0xdf869f[_0x44dc('0x1a')](_0x1ef60e)['send'](_0x30bcf8);};}exports[_0x44dc('0x2e')]=function(_0x1ea77e,_0x449c68){var _0x373d31={},_0x27a783={},_0x3b7e60={'count':0x0,'rows':[]};var _0x502c50=_['map'](db[_0x44dc('0x2f')][_0x44dc('0x30')],function(_0x4db2aa){return{'name':_0x4db2aa[_0x44dc('0x31')],'type':_0x4db2aa[_0x44dc('0x32')]['key']};});_0x27a783['model']=_[_0x44dc('0x33')](_0x502c50,_0x44dc('0x2d'));_0x27a783['query']=_['keys'](_0x1ea77e[_0x44dc('0x34')]);_0x27a783[_0x44dc('0x35')]=_[_0x44dc('0x36')](_0x27a783['model'],_0x27a783[_0x44dc('0x34')]);_0x373d31[_0x44dc('0x37')]=_[_0x44dc('0x36')](_0x27a783['model'],qs[_0x44dc('0x38')](_0x1ea77e['query'][_0x44dc('0x38')]));_0x373d31[_0x44dc('0x37')]=_0x373d31[_0x44dc('0x37')]['length']?_0x373d31[_0x44dc('0x37')]:_0x27a783[_0x44dc('0x39')];if(!_0x1ea77e[_0x44dc('0x34')][_0x44dc('0x3a')](_0x44dc('0x3b'))){_0x373d31[_0x44dc('0x1e')]=qs['limit'](_0x1ea77e[_0x44dc('0x34')][_0x44dc('0x1e')]);_0x373d31[_0x44dc('0x20')]=qs['offset'](_0x1ea77e[_0x44dc('0x34')]['offset']);}_0x373d31['order']=qs[_0x44dc('0x3c')](_0x1ea77e[_0x44dc('0x34')][_0x44dc('0x3c')]);_0x373d31[_0x44dc('0x3d')]=qs[_0x44dc('0x35')](_['pick'](_0x1ea77e['query'],_0x27a783[_0x44dc('0x35')]),_0x502c50);if(_0x1ea77e['query']['filter']){_0x373d31[_0x44dc('0x3d')]=_[_0x44dc('0x3e')](_0x373d31[_0x44dc('0x3d')],{'$or':_[_0x44dc('0x33')](_0x502c50,function(_0x20aaf9){if(_0x20aaf9[_0x44dc('0x32')]!==_0x44dc('0x3f')){var _0x4c5c4e={};_0x4c5c4e[_0x20aaf9[_0x44dc('0x2d')]]={'$like':'%'+_0x1ea77e['query'][_0x44dc('0x40')]+'%'};return _0x4c5c4e;}})});}_0x373d31=_[_0x44dc('0x3e')]({},_0x373d31,_0x1ea77e[_0x44dc('0x41')]);var _0x2a5f65={'where':_0x373d31['where']};return db[_0x44dc('0x2f')]['count'](_0x2a5f65)['then'](function(_0x83232f){_0x3b7e60[_0x44dc('0x1f')]=_0x83232f;if(_0x1ea77e[_0x44dc('0x34')]['includeAll']){_0x373d31[_0x44dc('0x42')]=[{'all':!![]}];}return db[_0x44dc('0x2f')][_0x44dc('0x43')](_0x373d31);})[_0x44dc('0x27')](function(_0x41d8e4){_0x3b7e60[_0x44dc('0x44')]=_0x41d8e4;return _0x3b7e60;})[_0x44dc('0x27')](respondWithFilteredResult(_0x449c68,_0x373d31))[_0x44dc('0x45')](handleError(_0x449c68,null));};exports['show']=function(_0x130482,_0x330597){var _0x126bfc={'raw':!![],'where':{'id':_0x130482[_0x44dc('0x46')]['id']}},_0x1598ea={};_0x1598ea['model']=_['keys'](db[_0x44dc('0x2f')][_0x44dc('0x30')]);_0x1598ea[_0x44dc('0x34')]=_['keys'](_0x130482['query']);_0x1598ea[_0x44dc('0x35')]=_[_0x44dc('0x36')](_0x1598ea[_0x44dc('0x39')],_0x1598ea['query']);_0x126bfc[_0x44dc('0x37')]=_['intersection'](_0x1598ea['model'],qs['fields'](_0x130482[_0x44dc('0x34')][_0x44dc('0x38')]));_0x126bfc[_0x44dc('0x37')]=_0x126bfc[_0x44dc('0x37')][_0x44dc('0x47')]?_0x126bfc['attributes']:_0x1598ea[_0x44dc('0x39')];if(_0x130482['query']['includeAll']){_0x126bfc[_0x44dc('0x42')]=[{'all':!![]}];}_0x126bfc=_[_0x44dc('0x3e')]({},_0x126bfc,_0x130482[_0x44dc('0x41')]);return db['CmContactHasItem'][_0x44dc('0x48')](_0x126bfc)[_0x44dc('0x27')](handleEntityNotFound(_0x330597,null))['then'](respondWithResult(_0x330597,null))['catch'](handleError(_0x330597,null));};exports[_0x44dc('0x49')]=function(_0x532efa,_0x45f946){return db[_0x44dc('0x2f')]['create'](_0x532efa['body'],{})['then'](function(_0x160d44){var _0x27b652=_0x532efa[_0x44dc('0x4a')]['get']({'plain':!![]});if(!_0x27b652)throw new Error(_0x44dc('0x4b'));if(_0x27b652[_0x44dc('0x4c')]===_0x44dc('0x4a')){var _0x4ab545=_0x160d44[_0x44dc('0x28')]({'plain':!![]});var _0x8ec665=_0x44dc('0x29');return db['UserProfileSection'][_0x44dc('0x48')]({'where':{'name':_0x8ec665,'userProfileId':_0x27b652[_0x44dc('0x4d')]},'raw':!![]})[_0x44dc('0x27')](function(_0x408601){if(_0x408601&&_0x408601[_0x44dc('0x4e')]===0x0){return db[_0x44dc('0x2a')][_0x44dc('0x49')]({'name':_0x4ab545[_0x44dc('0x2d')],'resourceId':_0x4ab545['id'],'type':_0x408601['name'],'sectionId':_0x408601['id']},{})['then'](function(){return _0x160d44;});}else{return _0x160d44;}})[_0x44dc('0x45')](function(_0x2ed40d){logger[_0x44dc('0x2b')](_0x44dc('0x4f'),_0x2ed40d);throw _0x2ed40d;});}return _0x160d44;})[_0x44dc('0x27')](respondWithResult(_0x45f946,0xc9))[_0x44dc('0x45')](handleError(_0x45f946,null));};exports['update']=function(_0x4286ab,_0x1acb09){if(_0x4286ab[_0x44dc('0x50')]['id']){delete _0x4286ab[_0x44dc('0x50')]['id'];}return db[_0x44dc('0x2f')][_0x44dc('0x48')]({'where':{'id':_0x4286ab['params']['id']}})['then'](handleEntityNotFound(_0x1acb09,null))[_0x44dc('0x27')](saveUpdates(_0x4286ab[_0x44dc('0x50')],null))[_0x44dc('0x27')](respondWithResult(_0x1acb09,null))['catch'](handleError(_0x1acb09,null));};exports[_0x44dc('0x26')]=function(_0x44cf10,_0x22cd86){return db['CmContactHasItem'][_0x44dc('0x48')]({'where':{'id':_0x44cf10[_0x44dc('0x46')]['id']}})[_0x44dc('0x27')](handleEntityNotFound(_0x22cd86,null))[_0x44dc('0x27')](removeEntity(_0x22cd86,null))[_0x44dc('0x45')](handleError(_0x22cd86,null));};
\ No newline at end of file
+var _0x2689=['query','keys','filters','intersection','fields','attributes','order','sort','where','pick','filter','merge','VIRTUAL','options','include','rows','catch','show','params','length','includeAll','find','create','user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','to-csv','ejs','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','then','get','CmContactHasItems','UserProfileResource','error','name','send','index','map','CmContactHasItem','rawAttributes','fieldName','model'];(function(_0x1df4bf,_0x28ba68){var _0x3a1ee1=function(_0x3cd344){while(--_0x3cd344){_0x1df4bf['push'](_0x1df4bf['shift']());}};_0x3a1ee1(++_0x28ba68);}(_0x2689,0x6a));var _0x9268=function(_0x243042,_0x3d49dd){_0x243042=_0x243042-0x0;var _0x3a1ade=_0x2689[_0x243042];return _0x3a1ade;};'use strict';var emlformat=require(_0x9268('0x0'));var rimraf=require(_0x9268('0x1'));var zipdir=require(_0x9268('0x2'));var jsonpatch=require(_0x9268('0x3'));var rp=require('request-promise');var moment=require(_0x9268('0x4'));var BPromise=require(_0x9268('0x5'));var Mustache=require('mustache');var util=require(_0x9268('0x6'));var path=require(_0x9268('0x7'));var sox=require('sox');var csv=require(_0x9268('0x8'));var ejs=require(_0x9268('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9268('0xa'));var squel=require(_0x9268('0xb'));var crypto=require('crypto');var jsforce=require(_0x9268('0xc'));var deskjs=require(_0x9268('0xd'));var toCsv=require(_0x9268('0x8'));var querystring=require('querystring');var Papa=require(_0x9268('0xe'));var Redis=require(_0x9268('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x9268('0x10'));var as=require(_0x9268('0x11'));var hardwareService=require(_0x9268('0x12'));var logger=require(_0x9268('0x13'))(_0x9268('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x9268('0x15'));var db=require(_0x9268('0x16'))['db'];function respondWithStatusCode(_0x4aa28d,_0xa54274){_0xa54274=_0xa54274||0xcc;return function(_0x228e5b){if(_0x228e5b){return _0x4aa28d[_0x9268('0x17')](_0xa54274);}return _0x4aa28d[_0x9268('0x18')](_0xa54274)[_0x9268('0x19')]();};}function respondWithResult(_0x469c02,_0x23112d){_0x23112d=_0x23112d||0xc8;return function(_0x4268bc){if(_0x4268bc){return _0x469c02[_0x9268('0x18')](_0x23112d)['json'](_0x4268bc);}};}function respondWithFilteredResult(_0x20f56c,_0x4a4469){return function(_0x5b1624){if(_0x5b1624){var _0x2c14cd=typeof _0x4a4469[_0x9268('0x1a')]===_0x9268('0x1b')&&typeof _0x4a4469[_0x9268('0x1c')]===_0x9268('0x1b');var _0x598865=_0x5b1624[_0x9268('0x1d')];var _0x2ca339=_0x2c14cd?0x0:_0x4a4469['offset'];var _0x542240=_0x2c14cd?_0x5b1624[_0x9268('0x1d')]:_0x4a4469['offset']+_0x4a4469[_0x9268('0x1c')];var _0x2dbe89;if(_0x542240>=_0x598865){_0x542240=_0x598865;_0x2dbe89=0xc8;}else{_0x2dbe89=0xce;}_0x20f56c[_0x9268('0x18')](_0x2dbe89);return _0x20f56c[_0x9268('0x1e')](_0x9268('0x1f'),_0x2ca339+'-'+_0x542240+'/'+_0x598865)[_0x9268('0x20')](_0x5b1624);}return null;};}function patchUpdates(_0x24a15e){return function(_0x450ae2){try{jsonpatch[_0x9268('0x21')](_0x450ae2,_0x24a15e,!![]);}catch(_0x495fc9){return BPromise[_0x9268('0x22')](_0x495fc9);}return _0x450ae2['save']();};}function saveUpdates(_0x3fa83d,_0x1ecce3){return function(_0x542863){if(_0x542863){return _0x542863['update'](_0x3fa83d)['then'](function(_0x5dbf59){return _0x5dbf59;});}return null;};}function removeEntity(_0x168ee8,_0x5e1af9){return function(_0x12f50e){if(_0x12f50e){return _0x12f50e['destroy']()[_0x9268('0x23')](function(){var _0x2a5dfd=_0x12f50e[_0x9268('0x24')]({'plain':!![]});var _0x579de1=_0x9268('0x25');return db[_0x9268('0x26')]['destroy']({'where':{'type':_0x579de1,'resourceId':_0x2a5dfd['id']}})[_0x9268('0x23')](function(){return _0x12f50e;});})['then'](function(){_0x168ee8[_0x9268('0x18')](0xcc)[_0x9268('0x19')]();});}};}function handleEntityNotFound(_0x4a4b5a,_0x4c861c){return function(_0x27b116){if(!_0x27b116){_0x4a4b5a[_0x9268('0x17')](0x194);}return _0x27b116;};}function handleError(_0x2da78f,_0x518b22){_0x518b22=_0x518b22||0x1f4;return function(_0x45b9e3){logger[_0x9268('0x27')](_0x45b9e3['stack']);if(_0x45b9e3[_0x9268('0x28')]){delete _0x45b9e3[_0x9268('0x28')];}_0x2da78f[_0x9268('0x18')](_0x518b22)[_0x9268('0x29')](_0x45b9e3);};}exports[_0x9268('0x2a')]=function(_0x613e61,_0x53ec6e){var _0x2fdaf4={},_0x53a154={},_0x247d56={'count':0x0,'rows':[]};var _0x4231e5=_[_0x9268('0x2b')](db[_0x9268('0x2c')][_0x9268('0x2d')],function(_0x3263ad){return{'name':_0x3263ad[_0x9268('0x2e')],'type':_0x3263ad['type']['key']};});_0x53a154[_0x9268('0x2f')]=_[_0x9268('0x2b')](_0x4231e5,'name');_0x53a154[_0x9268('0x30')]=_[_0x9268('0x31')](_0x613e61['query']);_0x53a154[_0x9268('0x32')]=_[_0x9268('0x33')](_0x53a154[_0x9268('0x2f')],_0x53a154[_0x9268('0x30')]);_0x2fdaf4['attributes']=_[_0x9268('0x33')](_0x53a154[_0x9268('0x2f')],qs[_0x9268('0x34')](_0x613e61[_0x9268('0x30')][_0x9268('0x34')]));_0x2fdaf4[_0x9268('0x35')]=_0x2fdaf4[_0x9268('0x35')]['length']?_0x2fdaf4[_0x9268('0x35')]:_0x53a154['model'];if(!_0x613e61[_0x9268('0x30')]['hasOwnProperty']('nolimit')){_0x2fdaf4[_0x9268('0x1c')]=qs['limit'](_0x613e61['query']['limit']);_0x2fdaf4[_0x9268('0x1a')]=qs[_0x9268('0x1a')](_0x613e61['query'][_0x9268('0x1a')]);}_0x2fdaf4[_0x9268('0x36')]=qs[_0x9268('0x37')](_0x613e61[_0x9268('0x30')]['sort']);_0x2fdaf4[_0x9268('0x38')]=qs['filters'](_[_0x9268('0x39')](_0x613e61[_0x9268('0x30')],_0x53a154[_0x9268('0x32')]),_0x4231e5);if(_0x613e61['query'][_0x9268('0x3a')]){_0x2fdaf4[_0x9268('0x38')]=_[_0x9268('0x3b')](_0x2fdaf4['where'],{'$or':_['map'](_0x4231e5,function(_0x144aac){if(_0x144aac['type']!==_0x9268('0x3c')){var _0x6a461d={};_0x6a461d[_0x144aac[_0x9268('0x28')]]={'$like':'%'+_0x613e61[_0x9268('0x30')]['filter']+'%'};return _0x6a461d;}})});}_0x2fdaf4=_[_0x9268('0x3b')]({},_0x2fdaf4,_0x613e61[_0x9268('0x3d')]);var _0x5eebfe={'where':_0x2fdaf4[_0x9268('0x38')]};return db[_0x9268('0x2c')][_0x9268('0x1d')](_0x5eebfe)[_0x9268('0x23')](function(_0x456da0){_0x247d56[_0x9268('0x1d')]=_0x456da0;if(_0x613e61[_0x9268('0x30')]['includeAll']){_0x2fdaf4[_0x9268('0x3e')]=[{'all':!![]}];}return db[_0x9268('0x2c')]['findAll'](_0x2fdaf4);})[_0x9268('0x23')](function(_0x3a7f78){_0x247d56[_0x9268('0x3f')]=_0x3a7f78;return _0x247d56;})[_0x9268('0x23')](respondWithFilteredResult(_0x53ec6e,_0x2fdaf4))[_0x9268('0x40')](handleError(_0x53ec6e,null));};exports[_0x9268('0x41')]=function(_0x44b8d2,_0x1f3ef5){var _0x4f42c9={'raw':!![],'where':{'id':_0x44b8d2[_0x9268('0x42')]['id']}},_0x4d302e={};_0x4d302e[_0x9268('0x2f')]=_[_0x9268('0x31')](db[_0x9268('0x2c')][_0x9268('0x2d')]);_0x4d302e[_0x9268('0x30')]=_['keys'](_0x44b8d2[_0x9268('0x30')]);_0x4d302e[_0x9268('0x32')]=_[_0x9268('0x33')](_0x4d302e[_0x9268('0x2f')],_0x4d302e[_0x9268('0x30')]);_0x4f42c9[_0x9268('0x35')]=_['intersection'](_0x4d302e[_0x9268('0x2f')],qs['fields'](_0x44b8d2[_0x9268('0x30')][_0x9268('0x34')]));_0x4f42c9['attributes']=_0x4f42c9[_0x9268('0x35')][_0x9268('0x43')]?_0x4f42c9[_0x9268('0x35')]:_0x4d302e[_0x9268('0x2f')];if(_0x44b8d2[_0x9268('0x30')][_0x9268('0x44')]){_0x4f42c9[_0x9268('0x3e')]=[{'all':!![]}];}_0x4f42c9=_[_0x9268('0x3b')]({},_0x4f42c9,_0x44b8d2[_0x9268('0x3d')]);return db[_0x9268('0x2c')][_0x9268('0x45')](_0x4f42c9)[_0x9268('0x23')](handleEntityNotFound(_0x1f3ef5,null))[_0x9268('0x23')](respondWithResult(_0x1f3ef5,null))['catch'](handleError(_0x1f3ef5,null));};exports['create']=function(_0x9cfa6b,_0x546efd){return db[_0x9268('0x2c')][_0x9268('0x46')](_0x9cfa6b['body'],{})[_0x9268('0x23')](function(_0xbbaee6){var _0x55336f=_0x9cfa6b[_0x9268('0x47')]['get']({'plain':!![]});if(!_0x55336f)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x55336f['role']==='user'){var _0x1dbb17=_0xbbaee6[_0x9268('0x24')]({'plain':!![]});var _0x3563c2='CmContactHasItems';return db[_0x9268('0x48')][_0x9268('0x45')]({'where':{'name':_0x3563c2,'userProfileId':_0x55336f[_0x9268('0x49')]},'raw':!![]})[_0x9268('0x23')](function(_0x494174){if(_0x494174&&_0x494174['autoAssociation']===0x0){return db[_0x9268('0x26')][_0x9268('0x46')]({'name':_0x1dbb17[_0x9268('0x28')],'resourceId':_0x1dbb17['id'],'type':_0x494174['name'],'sectionId':_0x494174['id']},{})[_0x9268('0x23')](function(){return _0xbbaee6;});}else{return _0xbbaee6;}})[_0x9268('0x40')](function(_0x39adde){logger[_0x9268('0x27')](_0x9268('0x4a'),_0x39adde);throw _0x39adde;});}return _0xbbaee6;})[_0x9268('0x23')](respondWithResult(_0x546efd,0xc9))[_0x9268('0x40')](handleError(_0x546efd,null));};exports['update']=function(_0x378b0e,_0x20dad1){if(_0x378b0e[_0x9268('0x4b')]['id']){delete _0x378b0e[_0x9268('0x4b')]['id'];}return db['CmContactHasItem'][_0x9268('0x45')]({'where':{'id':_0x378b0e[_0x9268('0x42')]['id']}})[_0x9268('0x23')](handleEntityNotFound(_0x20dad1,null))[_0x9268('0x23')](saveUpdates(_0x378b0e[_0x9268('0x4b')],null))[_0x9268('0x23')](respondWithResult(_0x20dad1,null))[_0x9268('0x40')](handleError(_0x20dad1,null));};exports[_0x9268('0x4c')]=function(_0x1d5e33,_0x712c86){return db[_0x9268('0x2c')]['find']({'where':{'id':_0x1d5e33[_0x9268('0x42')]['id']}})['then'](handleEntityNotFound(_0x712c86,null))[_0x9268('0x23')](removeEntity(_0x712c86,null))[_0x9268('0x40')](handleError(_0x712c86,null));};
\ No newline at end of file
index 86a6307..1366818 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7cbf=['path','rimraf','../../config/environment','./cmContactHasItem.attributes','define','CmContactHasItem','cm_contact_has_items','util','../../config/logger','api','moment','request-promise'];(function(_0x1d5cbb,_0x425e7f){var _0x1da5d5=function(_0x462f8d){while(--_0x462f8d){_0x1d5cbb['push'](_0x1d5cbb['shift']());}};_0x1da5d5(++_0x425e7f);}(_0x7cbf,0x11b));var _0xf7cb=function(_0x253f6a,_0x2703b9){_0x253f6a=_0x253f6a-0x0;var _0x12480b=_0x7cbf[_0x253f6a];return _0x12480b;};'use strict';var _=require('lodash');var util=require(_0xf7cb('0x0'));var logger=require(_0xf7cb('0x1'))(_0xf7cb('0x2'));var moment=require(_0xf7cb('0x3'));var BPromise=require('bluebird');var rp=require(_0xf7cb('0x4'));var fs=require('fs');var path=require(_0xf7cb('0x5'));var rimraf=require(_0xf7cb('0x6'));var config=require(_0xf7cb('0x7'));var attributes=require(_0xf7cb('0x8'));module['exports']=function(_0x19bb2e,_0x366aff){return _0x19bb2e[_0xf7cb('0x9')](_0xf7cb('0xa'),attributes,{'tableName':_0xf7cb('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4a33=['rimraf','../../config/environment','./cmContactHasItem.attributes','define','CmContactHasItem','cm_contact_has_items','lodash','../../config/logger','api','bluebird','path'];(function(_0x31774c,_0x3439ea){var _0x28030a=function(_0x185779){while(--_0x185779){_0x31774c['push'](_0x31774c['shift']());}};_0x28030a(++_0x3439ea);}(_0x4a33,0x119));var _0x34a3=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0x4a33[_0x126558];return _0x1f6d14;};'use strict';var _=require(_0x34a3('0x0'));var util=require('util');var logger=require(_0x34a3('0x1'))(_0x34a3('0x2'));var moment=require('moment');var BPromise=require(_0x34a3('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x34a3('0x4'));var rimraf=require(_0x34a3('0x5'));var config=require(_0x34a3('0x6'));var attributes=require(_0x34a3('0x7'));module['exports']=function(_0x10dbae,_0x5f022a){return _0x10dbae[_0x34a3('0x8')](_0x34a3('0x9'),attributes,{'tableName':_0x34a3('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a6f25c8..f64b783 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23af=['request\x20sent','debug','CmContactHasItem,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','info','CmContactHasItem,\x20%s,\x20%s'];(function(_0x521929,_0x479be5){var _0x632436=function(_0x288290){while(--_0x288290){_0x521929['push'](_0x521929['shift']());}};_0x632436(++_0x479be5);}(_0x23af,0xb0));var _0xf23a=function(_0x270125,_0x245f2b){_0x270125=_0x270125-0x0;var _0x4cfae1=_0x23af[_0x270125];return _0x4cfae1;};'use strict';var _=require(_0xf23a('0x0'));var util=require('util');var moment=require(_0xf23a('0x1'));var BPromise=require('bluebird');var rs=require(_0xf23a('0x2'));var fs=require('fs');var Redis=require(_0xf23a('0x3'));var db=require(_0xf23a('0x4'))['db'];var utils=require(_0xf23a('0x5'));var logger=require(_0xf23a('0x6'))(_0xf23a('0x7'));var config=require(_0xf23a('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0xf23a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3e977d,_0x2120ba,_0xfbfc7d){return new BPromise(function(_0x26403f,_0x573e6c){return client[_0xf23a('0xa')](_0x3e977d,_0xfbfc7d)['then'](function(_0x291d35){logger[_0xf23a('0xb')](_0xf23a('0xc'),_0x2120ba,_0xf23a('0xd'));logger[_0xf23a('0xe')](_0xf23a('0xf'),_0x2120ba,'request\x20sent',JSON['stringify'](_0x291d35));if(_0x291d35['error']){if(_0x291d35[_0xf23a('0x10')][_0xf23a('0x11')]===0x1f4){logger[_0xf23a('0x10')](_0xf23a('0xc'),_0x2120ba,_0x291d35[_0xf23a('0x10')]['message']);return _0x573e6c(_0x291d35[_0xf23a('0x10')]['message']);}logger['error'](_0xf23a('0xc'),_0x2120ba,_0x291d35[_0xf23a('0x10')][_0xf23a('0x12')]);return _0x26403f(_0x291d35[_0xf23a('0x10')]['message']);}else{logger[_0xf23a('0xb')](_0xf23a('0xc'),_0x2120ba,'request\x20sent');_0x26403f(_0x291d35[_0xf23a('0x13')][_0xf23a('0x12')]);}})[_0xf23a('0x14')](function(_0x17cff4){logger[_0xf23a('0x10')](_0xf23a('0xc'),_0x2120ba,_0x17cff4);_0x573e6c(_0x17cff4);});});}
\ No newline at end of file
+var _0x74f3=['info','CmContactHasItem,\x20%s,\x20%s','request\x20sent','debug','CmContactHasItem,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','request'];(function(_0x5d3fa2,_0x1271ab){var _0x252c6a=function(_0x5813cc){while(--_0x5813cc){_0x5d3fa2['push'](_0x5d3fa2['shift']());}};_0x252c6a(++_0x1271ab);}(_0x74f3,0x172));var _0x374f=function(_0x148486,_0x380ec8){_0x148486=_0x148486-0x0;var _0x213651=_0x74f3[_0x148486];return _0x213651;};'use strict';var _=require('lodash');var util=require(_0x374f('0x0'));var moment=require(_0x374f('0x1'));var BPromise=require(_0x374f('0x2'));var rs=require(_0x374f('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x374f('0x4'))['db'];var utils=require(_0x374f('0x5'));var logger=require(_0x374f('0x6'))('rpc');var config=require(_0x374f('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x374f('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xca1021,_0x1f70af,_0x1cfd17){return new BPromise(function(_0x38d273,_0x415782){return client[_0x374f('0x9')](_0xca1021,_0x1cfd17)['then'](function(_0x379a87){logger[_0x374f('0xa')](_0x374f('0xb'),_0x1f70af,_0x374f('0xc'));logger[_0x374f('0xd')](_0x374f('0xe'),_0x1f70af,_0x374f('0xc'),JSON[_0x374f('0xf')](_0x379a87));if(_0x379a87[_0x374f('0x10')]){if(_0x379a87[_0x374f('0x10')][_0x374f('0x11')]===0x1f4){logger[_0x374f('0x10')]('CmContactHasItem,\x20%s,\x20%s',_0x1f70af,_0x379a87[_0x374f('0x10')]['message']);return _0x415782(_0x379a87[_0x374f('0x10')][_0x374f('0x12')]);}logger[_0x374f('0x10')](_0x374f('0xb'),_0x1f70af,_0x379a87['error'][_0x374f('0x12')]);return _0x38d273(_0x379a87['error'][_0x374f('0x12')]);}else{logger['info'](_0x374f('0xb'),_0x1f70af,_0x374f('0xc'));_0x38d273(_0x379a87['result'][_0x374f('0x12')]);}})[_0x374f('0x13')](function(_0x2bed9a){logger['error'](_0x374f('0xb'),_0x1f70af,_0x2bed9a);_0x415782(_0x2bed9a);});});}
\ No newline at end of file
index 95c7c08..64e3153 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce91=['post','create','put','delete','destroy','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmContactHasItem.controller','get','isAuthenticated','index','/:id','show'];(function(_0x4226e8,_0x5cdd46){var _0x13c031=function(_0x59356b){while(--_0x59356b){_0x4226e8['push'](_0x4226e8['shift']());}};_0x13c031(++_0x5cdd46);}(_0xce91,0x1e5));var _0x1ce9=function(_0x19a4e6,_0x2cf533){_0x19a4e6=_0x19a4e6-0x0;var _0x3407ed=_0xce91[_0x19a4e6];return _0x3407ed;};'use strict';var multer=require(_0x1ce9('0x0'));var util=require(_0x1ce9('0x1'));var path=require(_0x1ce9('0x2'));var timeout=require(_0x1ce9('0x3'));var express=require(_0x1ce9('0x4'));var router=express[_0x1ce9('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x1ce9('0x6'));var interaction=require(_0x1ce9('0x7'));var config=require(_0x1ce9('0x8'));var controller=require(_0x1ce9('0x9'));router[_0x1ce9('0xa')]('/',auth[_0x1ce9('0xb')](),controller[_0x1ce9('0xc')]);router[_0x1ce9('0xa')](_0x1ce9('0xd'),auth['isAuthenticated'](),controller[_0x1ce9('0xe')]);router[_0x1ce9('0xf')]('/',auth[_0x1ce9('0xb')](),controller[_0x1ce9('0x10')]);router[_0x1ce9('0x11')](_0x1ce9('0xd'),auth['isAuthenticated'](),controller['update']);router[_0x1ce9('0x12')](_0x1ce9('0xd'),auth[_0x1ce9('0xb')](),controller[_0x1ce9('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x85de=['isAuthenticated','index','get','/:id','show','post','put','update','delete','exports','multer','util','path','connect-timeout','express','fs-extra','../../config/environment','./cmContactHasItem.controller'];(function(_0x12c8ee,_0x3be025){var _0x407f3e=function(_0x264fc8){while(--_0x264fc8){_0x12c8ee['push'](_0x12c8ee['shift']());}};_0x407f3e(++_0x3be025);}(_0x85de,0x1f0));var _0xe85d=function(_0x3de68c,_0x1904c0){_0x3de68c=_0x3de68c-0x0;var _0x7cf988=_0x85de[_0x3de68c];return _0x7cf988;};'use strict';var multer=require(_0xe85d('0x0'));var util=require(_0xe85d('0x1'));var path=require(_0xe85d('0x2'));var timeout=require(_0xe85d('0x3'));var express=require(_0xe85d('0x4'));var router=express['Router']();var fs_extra=require(_0xe85d('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xe85d('0x6'));var controller=require(_0xe85d('0x7'));router['get']('/',auth[_0xe85d('0x8')](),controller[_0xe85d('0x9')]);router[_0xe85d('0xa')](_0xe85d('0xb'),auth[_0xe85d('0x8')](),controller[_0xe85d('0xc')]);router[_0xe85d('0xd')]('/',auth[_0xe85d('0x8')](),controller['create']);router[_0xe85d('0xe')](_0xe85d('0xb'),auth[_0xe85d('0x8')](),controller[_0xe85d('0xf')]);router[_0xe85d('0x10')]('/:id',auth[_0xe85d('0x8')](),controller['destroy']);module[_0xe85d('0x11')]=router;
\ No newline at end of file
index 9587403..20aeede 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd75f=['select','parse','isArray','values','setDataValue','ENUM','voice','sequelize','lodash','exports','VIRTUAL','alias','STRING','getDataValue','name','TEXT','long','type'];(function(_0x3e9582,_0x5ef882){var _0xdf59d7=function(_0xfdf61c){while(--_0xfdf61c){_0x3e9582['push'](_0x3e9582['shift']());}};_0xdf59d7(++_0x5ef882);}(_0xd75f,0x15d));var _0xfd75=function(_0x2e8093,_0x5c9051){_0x2e8093=_0x2e8093-0x0;var _0x36feef=_0xd75f[_0x2e8093];return _0x36feef;};'use strict';var Sequelize=require(_0xfd75('0x0'));var _=require(_0xfd75('0x1'));module[_0xfd75('0x2')]={'name':{'type':Sequelize[_0xfd75('0x3')],'get':function(_0x276957){return this['getDataValue'](_0xfd75('0x4'));}},'alias':{'type':Sequelize[_0xfd75('0x5')],'allowNull':![],'set':function(_0xfb5215){this['setDataValue'](_0xfd75('0x4'),_0xfb5215?_0xfb5215:this[_0xfd75('0x6')](_0xfd75('0x7')));}},'type':{'type':Sequelize[_0xfd75('0x5')],'allowNull':![]},'values':{'type':Sequelize[_0xfd75('0x8')](_0xfd75('0x9')),'get':function(){if(this[_0xfd75('0x6')](_0xfd75('0xa'))===_0xfd75('0xb')){return JSON[_0xfd75('0xc')](this[_0xfd75('0x6')]('values'));}else{return this[_0xfd75('0x6')]('values');}},'set':function(_0x32ef2f){if(Array[_0xfd75('0xd')](_0x32ef2f)){this['setDataValue'](_0xfd75('0xe'),JSON['stringify'](_0x32ef2f));}else{this[_0xfd75('0xf')]('values',_0x32ef2f);}}},'required':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'clickToAction':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'actionType':{'type':Sequelize[_0xfd75('0x10')](_0xfd75('0x11'))}};
\ No newline at end of file
+var _0xebd4=['parse','values','isArray','setDataValue','stringify','BOOLEAN','voice','sequelize','lodash','exports','VIRTUAL','alias','STRING','getDataValue','name','type'];(function(_0x411add,_0x1aed38){var _0x238242=function(_0x4a1cd5){while(--_0x4a1cd5){_0x411add['push'](_0x411add['shift']());}};_0x238242(++_0x1aed38);}(_0xebd4,0x77));var _0x4ebd=function(_0x31e2e4,_0x3d2bfc){_0x31e2e4=_0x31e2e4-0x0;var _0x1e00e7=_0xebd4[_0x31e2e4];return _0x1e00e7;};'use strict';var Sequelize=require(_0x4ebd('0x0'));var _=require(_0x4ebd('0x1'));module[_0x4ebd('0x2')]={'name':{'type':Sequelize[_0x4ebd('0x3')],'get':function(_0x2ad846){return this['getDataValue'](_0x4ebd('0x4'));}},'alias':{'type':Sequelize[_0x4ebd('0x5')],'allowNull':![],'set':function(_0x3f130c){this['setDataValue'](_0x4ebd('0x4'),_0x3f130c?_0x3f130c:this[_0x4ebd('0x6')](_0x4ebd('0x7')));}},'type':{'type':Sequelize['STRING'],'allowNull':![]},'values':{'type':Sequelize['TEXT']('long'),'get':function(){if(this[_0x4ebd('0x6')](_0x4ebd('0x8'))==='select'){return JSON[_0x4ebd('0x9')](this[_0x4ebd('0x6')](_0x4ebd('0xa')));}else{return this[_0x4ebd('0x6')](_0x4ebd('0xa'));}},'set':function(_0x3356be){if(Array[_0x4ebd('0xb')](_0x3356be)){this[_0x4ebd('0xc')]('values',JSON[_0x4ebd('0xd')](_0x3356be));}else{this['setDataValue']('values',_0x3356be);}}},'required':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0x4ebd('0xe')],'defaultValue':![]},'actionType':{'type':Sequelize['ENUM'](_0x4ebd('0xf'))}};
\ No newline at end of file
index def45df..fc1ba06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f7b=['filters','intersection','fields','attributes','length','order','sort','pick','where','type','VIRTUAL','filter','includeAll','include','findAll','rows','catch','show','params','rawAttributes','merge','options','find','body','create','sequelize','Sequelize','text','TEXT','number','INTEGER','switch','defaultValue','addColumn','cm_contacts','format','cf_%d','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','send','index','map','CmCustomField','key','model','differenceBy','name','query','keys'];(function(_0x1b6563,_0x3bf0f1){var _0xdea7b8=function(_0x49e6c6){while(--_0x49e6c6){_0x1b6563['push'](_0x1b6563['shift']());}};_0xdea7b8(++_0x3bf0f1);}(_0x5f7b,0x1d3));var _0xb5f7=function(_0x243b59,_0x3f9495){_0x243b59=_0x243b59-0x0;var _0x3e1676=_0x5f7b[_0x243b59];return _0x3e1676;};'use strict';var emlformat=require(_0xb5f7('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb5f7('0x1'));var jsonpatch=require(_0xb5f7('0x2'));var rp=require(_0xb5f7('0x3'));var moment=require(_0xb5f7('0x4'));var BPromise=require(_0xb5f7('0x5'));var Mustache=require('mustache');var util=require(_0xb5f7('0x6'));var path=require(_0xb5f7('0x7'));var sox=require(_0xb5f7('0x8'));var csv=require(_0xb5f7('0x9'));var ejs=require(_0xb5f7('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb5f7('0xb'));var squel=require(_0xb5f7('0xc'));var crypto=require(_0xb5f7('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xb5f7('0x9'));var querystring=require('querystring');var Papa=require(_0xb5f7('0xe'));var Redis=require(_0xb5f7('0xf'));var authService=require(_0xb5f7('0x10'));var qs=require(_0xb5f7('0x11'));var as=require(_0xb5f7('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb5f7('0x13'))(_0xb5f7('0x14'));var utils=require('../../config/utils');var config=require(_0xb5f7('0x15'));var licenseUtil=require(_0xb5f7('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x367c42,_0x5a1a64){_0x5a1a64=_0x5a1a64||0xcc;return function(_0xe4217a){if(_0xe4217a){return _0x367c42[_0xb5f7('0x17')](_0x5a1a64);}return _0x367c42[_0xb5f7('0x18')](_0x5a1a64)['end']();};}function respondWithResult(_0x4f412e,_0x254be4){_0x254be4=_0x254be4||0xc8;return function(_0xf4fe78){if(_0xf4fe78){return _0x4f412e[_0xb5f7('0x18')](_0x254be4)['json'](_0xf4fe78);}};}function respondWithFilteredResult(_0x25db45,_0x45cb8a){return function(_0x5617ed){if(_0x5617ed){var _0x3f2b60=typeof _0x45cb8a[_0xb5f7('0x19')]===_0xb5f7('0x1a')&&typeof _0x45cb8a[_0xb5f7('0x1b')]===_0xb5f7('0x1a');var _0xcd7654=_0x5617ed['count'];var _0x3207fa=_0x3f2b60?0x0:_0x45cb8a[_0xb5f7('0x19')];var _0x523d0f=_0x3f2b60?_0x5617ed[_0xb5f7('0x1c')]:_0x45cb8a['offset']+_0x45cb8a['limit'];var _0x4bff7b;if(_0x523d0f>=_0xcd7654){_0x523d0f=_0xcd7654;_0x4bff7b=0xc8;}else{_0x4bff7b=0xce;}_0x25db45[_0xb5f7('0x18')](_0x4bff7b);return _0x25db45[_0xb5f7('0x1d')](_0xb5f7('0x1e'),_0x3207fa+'-'+_0x523d0f+'/'+_0xcd7654)['json'](_0x5617ed);}return null;};}function patchUpdates(_0x1cef6e){return function(_0x2e3859){try{jsonpatch[_0xb5f7('0x1f')](_0x2e3859,_0x1cef6e,!![]);}catch(_0x7add35){return BPromise[_0xb5f7('0x20')](_0x7add35);}return _0x2e3859[_0xb5f7('0x21')]();};}function saveUpdates(_0x274740,_0x11812f){return function(_0x947dd5){if(_0x947dd5){return _0x947dd5[_0xb5f7('0x22')](_0x274740)[_0xb5f7('0x23')](function(_0x45b0ba){return _0x45b0ba;});}return null;};}function removeEntity(_0x4dc695,_0x2b806f){return function(_0x4d4306){if(_0x4d4306){return _0x4d4306[_0xb5f7('0x24')]()[_0xb5f7('0x23')](function(){_0x4dc695[_0xb5f7('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4f34e2,_0x530386){return function(_0xa0ac20){if(!_0xa0ac20){_0x4f34e2[_0xb5f7('0x17')](0x194);}return _0xa0ac20;};}function handleError(_0x4616a2,_0x3df795){_0x3df795=_0x3df795||0x1f4;return function(_0x341699){logger[_0xb5f7('0x25')](_0x341699[_0xb5f7('0x26')]);if(_0x341699['name']){delete _0x341699['name'];}_0x4616a2['status'](_0x3df795)[_0xb5f7('0x27')](_0x341699);};}exports[_0xb5f7('0x28')]=function(_0x3bffc4,_0xf6ec5a){var _0x4101be={},_0x1237a7={},_0x37c76e={'count':0x0,'rows':[]};var _0x2b8f11=_[_0xb5f7('0x29')](db[_0xb5f7('0x2a')]['rawAttributes'],function(_0x3d1974){return{'name':_0x3d1974['fieldName'],'type':_0x3d1974['type'][_0xb5f7('0x2b')]};});_0x1237a7[_0xb5f7('0x2c')]=_[_0xb5f7('0x2d')](_[_0xb5f7('0x29')](_0x2b8f11,_0xb5f7('0x2e')),[_0xb5f7('0x2e')]);_0x1237a7[_0xb5f7('0x2f')]=_[_0xb5f7('0x30')](_0x3bffc4['query']);_0x1237a7[_0xb5f7('0x31')]=_[_0xb5f7('0x32')](_0x1237a7[_0xb5f7('0x2c')],_0x1237a7[_0xb5f7('0x2f')]);_0x4101be['attributes']=_[_0xb5f7('0x32')](_0x1237a7[_0xb5f7('0x2c')],qs[_0xb5f7('0x33')](_0x3bffc4['query'][_0xb5f7('0x33')]));_0x4101be[_0xb5f7('0x34')]=_0x4101be[_0xb5f7('0x34')][_0xb5f7('0x35')]?_0x4101be[_0xb5f7('0x34')]:_0x1237a7[_0xb5f7('0x2c')];if(!_0x3bffc4['query']['hasOwnProperty']('nolimit')){_0x4101be[_0xb5f7('0x1b')]=qs[_0xb5f7('0x1b')](_0x3bffc4['query'][_0xb5f7('0x1b')]);_0x4101be[_0xb5f7('0x19')]=qs[_0xb5f7('0x19')](_0x3bffc4['query'][_0xb5f7('0x19')]);}_0x4101be[_0xb5f7('0x36')]=qs[_0xb5f7('0x37')](_0x3bffc4[_0xb5f7('0x2f')][_0xb5f7('0x37')]);_0x4101be['where']=qs[_0xb5f7('0x31')](_[_0xb5f7('0x38')](_0x3bffc4[_0xb5f7('0x2f')],_0x1237a7[_0xb5f7('0x31')]),_0x2b8f11);if(_0x3bffc4[_0xb5f7('0x2f')]['filter']){_0x4101be['where']=_['merge'](_0x4101be[_0xb5f7('0x39')],{'$or':_['map'](_0x2b8f11,function(_0x8eeed7){if(_0x8eeed7[_0xb5f7('0x3a')]!==_0xb5f7('0x3b')){var _0x584e26={};_0x584e26[_0x8eeed7[_0xb5f7('0x2e')]]={'$like':'%'+_0x3bffc4['query'][_0xb5f7('0x3c')]+'%'};return _0x584e26;}})});}_0x4101be=_['merge']({},_0x4101be,_0x3bffc4['options']);var _0x462417={'where':_0x4101be[_0xb5f7('0x39')]};return db[_0xb5f7('0x2a')]['count'](_0x462417)['then'](function(_0x2ed6b3){_0x37c76e[_0xb5f7('0x1c')]=_0x2ed6b3;if(_0x3bffc4['query'][_0xb5f7('0x3d')]){_0x4101be[_0xb5f7('0x3e')]=[{'all':!![]}];}return db[_0xb5f7('0x2a')][_0xb5f7('0x3f')](_0x4101be);})[_0xb5f7('0x23')](function(_0x306b2d){_0x37c76e[_0xb5f7('0x40')]=_0x306b2d;return _0x37c76e;})[_0xb5f7('0x23')](respondWithFilteredResult(_0xf6ec5a,_0x4101be))[_0xb5f7('0x41')](handleError(_0xf6ec5a,null));};exports[_0xb5f7('0x42')]=function(_0x3cd290,_0x15b322){var _0x41759c={'raw':!![],'where':{'id':_0x3cd290[_0xb5f7('0x43')]['id']}},_0x17dd0a={};_0x17dd0a[_0xb5f7('0x2c')]=_[_0xb5f7('0x30')](db[_0xb5f7('0x2a')][_0xb5f7('0x44')]);_0x17dd0a[_0xb5f7('0x2f')]=_[_0xb5f7('0x30')](_0x3cd290['query']);_0x17dd0a['filters']=_[_0xb5f7('0x32')](_0x17dd0a[_0xb5f7('0x2c')],_0x17dd0a[_0xb5f7('0x2f')]);_0x41759c[_0xb5f7('0x34')]=_[_0xb5f7('0x32')](_0x17dd0a[_0xb5f7('0x2c')],qs[_0xb5f7('0x33')](_0x3cd290[_0xb5f7('0x2f')]['fields']));_0x41759c['attributes']=_0x41759c[_0xb5f7('0x34')][_0xb5f7('0x35')]?_0x41759c[_0xb5f7('0x34')]:_0x17dd0a[_0xb5f7('0x2c')];if(_0x3cd290[_0xb5f7('0x2f')][_0xb5f7('0x3d')]){_0x41759c['include']=[{'all':!![]}];}_0x41759c=_[_0xb5f7('0x45')]({},_0x41759c,_0x3cd290[_0xb5f7('0x46')]);return db[_0xb5f7('0x2a')][_0xb5f7('0x47')](_0x41759c)[_0xb5f7('0x23')](handleEntityNotFound(_0x15b322,null))['then'](respondWithResult(_0x15b322,null))[_0xb5f7('0x41')](handleError(_0x15b322,null));};exports[_0xb5f7('0x22')]=function(_0x53106b,_0x3da308){if(_0x53106b[_0xb5f7('0x48')]['id']){delete _0x53106b[_0xb5f7('0x48')]['id'];}return db[_0xb5f7('0x2a')]['find']({'where':{'id':_0x53106b[_0xb5f7('0x43')]['id']}})['then'](handleEntityNotFound(_0x3da308,null))[_0xb5f7('0x23')](saveUpdates(_0x53106b[_0xb5f7('0x48')],null))['then'](respondWithResult(_0x3da308,null))['catch'](handleError(_0x3da308,null));};exports['destroy']=function(_0x1bd918,_0x56f6a){return db[_0xb5f7('0x2a')][_0xb5f7('0x47')]({'where':{'id':_0x1bd918[_0xb5f7('0x43')]['id']}})[_0xb5f7('0x23')](handleEntityNotFound(_0x56f6a,null))[_0xb5f7('0x23')](removeEntity(_0x56f6a,null))[_0xb5f7('0x41')](handleError(_0x56f6a,null));};exports[_0xb5f7('0x49')]=function(_0x523bdc,_0x585bbf){var _0x58be1d;return db[_0xb5f7('0x4a')]['transaction'](function(_0x4672ef){return db['CmCustomField'][_0xb5f7('0x49')](_0x523bdc[_0xb5f7('0x48')],{'transaction':_0x4672ef})['then'](function(_0x54a48f){_0x58be1d=_0x54a48f;var _0x3cc893={'type':db[_0xb5f7('0x4b')]['TEXT'],'transaction':_0x4672ef};switch(_0x523bdc[_0xb5f7('0x48')][_0xb5f7('0x3a')]){case _0xb5f7('0x4c'):_0x3cc893[_0xb5f7('0x3a')]=db[_0xb5f7('0x4b')][_0xb5f7('0x4d')];break;case _0xb5f7('0x4e'):_0x3cc893['type']=db[_0xb5f7('0x4b')][_0xb5f7('0x4f')];break;case _0xb5f7('0x50'):_0x3cc893[_0xb5f7('0x3a')]=db[_0xb5f7('0x4b')]['BOOLEAN'];_0x3cc893[_0xb5f7('0x51')]=![];break;default:}return db[_0xb5f7('0x4a')]['queryInterface'][_0xb5f7('0x52')](_0xb5f7('0x53'),util[_0xb5f7('0x54')](_0xb5f7('0x55'),_0x58be1d['id']),_0x3cc893);})[_0xb5f7('0x23')](function(){return _0x58be1d;});})[_0xb5f7('0x23')](respondWithResult(_0x585bbf,0xc9))['catch'](handleError(_0x585bbf,null));};
\ No newline at end of file
+var _0x5eae=['../../components/parsers/advancedSearch','../../config/logger','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','name','send','index','rawAttributes','fieldName','type','key','model','differenceBy','map','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','CmCustomField','findAll','rows','show','keys','include','catch','body','params','create','sequelize','TEXT','text','Sequelize','number','switch','BOOLEAN','defaultValue','queryInterface','format','cf_%d','eml-format','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x503b8c,_0xe6d301){var _0x156b87=function(_0x1b4e93){while(--_0x1b4e93){_0x503b8c['push'](_0x503b8c['shift']());}};_0x156b87(++_0xe6d301);}(_0x5eae,0x9e));var _0xe5ea=function(_0x3620f5,_0x408f7d){_0x3620f5=_0x3620f5-0x0;var _0x3a9492=_0x5eae[_0x3620f5];return _0x3a9492;};'use strict';var emlformat=require(_0xe5ea('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe5ea('0x1'));var jsonpatch=require(_0xe5ea('0x2'));var rp=require('request-promise');var moment=require(_0xe5ea('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xe5ea('0x4'));var util=require(_0xe5ea('0x5'));var path=require(_0xe5ea('0x6'));var sox=require(_0xe5ea('0x7'));var csv=require(_0xe5ea('0x8'));var ejs=require(_0xe5ea('0x9'));var fs=require('fs');var fs_extra=require(_0xe5ea('0xa'));var _=require('lodash');var squel=require(_0xe5ea('0xb'));var crypto=require(_0xe5ea('0xc'));var jsforce=require(_0xe5ea('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xe5ea('0x8'));var querystring=require(_0xe5ea('0xe'));var Papa=require('papaparse');var Redis=require(_0xe5ea('0xf'));var authService=require(_0xe5ea('0x10'));var qs=require(_0xe5ea('0x11'));var as=require(_0xe5ea('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe5ea('0x13'))(_0xe5ea('0x14'));var utils=require(_0xe5ea('0x15'));var config=require(_0xe5ea('0x16'));var licenseUtil=require(_0xe5ea('0x17'));var db=require(_0xe5ea('0x18'))['db'];function respondWithStatusCode(_0x275048,_0x32e70b){_0x32e70b=_0x32e70b||0xcc;return function(_0x8bcd48){if(_0x8bcd48){return _0x275048[_0xe5ea('0x19')](_0x32e70b);}return _0x275048[_0xe5ea('0x1a')](_0x32e70b)[_0xe5ea('0x1b')]();};}function respondWithResult(_0x145543,_0x3c8a6f){_0x3c8a6f=_0x3c8a6f||0xc8;return function(_0x1a93d8){if(_0x1a93d8){return _0x145543[_0xe5ea('0x1a')](_0x3c8a6f)[_0xe5ea('0x1c')](_0x1a93d8);}};}function respondWithFilteredResult(_0x20befd,_0x7c3bdc){return function(_0x62905e){if(_0x62905e){var _0x2a86b9=typeof _0x7c3bdc[_0xe5ea('0x1d')]===_0xe5ea('0x1e')&&typeof _0x7c3bdc['limit']===_0xe5ea('0x1e');var _0x493e7e=_0x62905e[_0xe5ea('0x1f')];var _0x40a290=_0x2a86b9?0x0:_0x7c3bdc['offset'];var _0x25cf1b=_0x2a86b9?_0x62905e[_0xe5ea('0x1f')]:_0x7c3bdc[_0xe5ea('0x1d')]+_0x7c3bdc[_0xe5ea('0x20')];var _0x3a66c7;if(_0x25cf1b>=_0x493e7e){_0x25cf1b=_0x493e7e;_0x3a66c7=0xc8;}else{_0x3a66c7=0xce;}_0x20befd[_0xe5ea('0x1a')](_0x3a66c7);return _0x20befd[_0xe5ea('0x21')](_0xe5ea('0x22'),_0x40a290+'-'+_0x25cf1b+'/'+_0x493e7e)[_0xe5ea('0x1c')](_0x62905e);}return null;};}function patchUpdates(_0x11ed65){return function(_0x2dadf4){try{jsonpatch['apply'](_0x2dadf4,_0x11ed65,!![]);}catch(_0x258d04){return BPromise[_0xe5ea('0x23')](_0x258d04);}return _0x2dadf4[_0xe5ea('0x24')]();};}function saveUpdates(_0x105ac2,_0x2e99a6){return function(_0x5ad45a){if(_0x5ad45a){return _0x5ad45a[_0xe5ea('0x25')](_0x105ac2)[_0xe5ea('0x26')](function(_0x3cd5b6){return _0x3cd5b6;});}return null;};}function removeEntity(_0x5ac882,_0x26c07d){return function(_0x2a0ea5){if(_0x2a0ea5){return _0x2a0ea5[_0xe5ea('0x27')]()[_0xe5ea('0x26')](function(){_0x5ac882['status'](0xcc)[_0xe5ea('0x1b')]();});}};}function handleEntityNotFound(_0xb2d7ce,_0x273d07){return function(_0x4272f9){if(!_0x4272f9){_0xb2d7ce['sendStatus'](0x194);}return _0x4272f9;};}function handleError(_0x3820c8,_0x42b3a2){_0x42b3a2=_0x42b3a2||0x1f4;return function(_0x282eb7){logger[_0xe5ea('0x28')](_0x282eb7['stack']);if(_0x282eb7[_0xe5ea('0x29')]){delete _0x282eb7[_0xe5ea('0x29')];}_0x3820c8['status'](_0x42b3a2)[_0xe5ea('0x2a')](_0x282eb7);};}exports[_0xe5ea('0x2b')]=function(_0x4b8b24,_0x5d32d0){var _0x4cee17={},_0x593930={},_0x384bca={'count':0x0,'rows':[]};var _0x1db25d=_['map'](db['CmCustomField'][_0xe5ea('0x2c')],function(_0x29a54b){return{'name':_0x29a54b[_0xe5ea('0x2d')],'type':_0x29a54b[_0xe5ea('0x2e')][_0xe5ea('0x2f')]};});_0x593930[_0xe5ea('0x30')]=_[_0xe5ea('0x31')](_[_0xe5ea('0x32')](_0x1db25d,'name'),[_0xe5ea('0x29')]);_0x593930['query']=_['keys'](_0x4b8b24['query']);_0x593930[_0xe5ea('0x33')]=_[_0xe5ea('0x34')](_0x593930[_0xe5ea('0x30')],_0x593930[_0xe5ea('0x35')]);_0x4cee17[_0xe5ea('0x36')]=_[_0xe5ea('0x34')](_0x593930[_0xe5ea('0x30')],qs['fields'](_0x4b8b24[_0xe5ea('0x35')][_0xe5ea('0x37')]));_0x4cee17[_0xe5ea('0x36')]=_0x4cee17['attributes'][_0xe5ea('0x38')]?_0x4cee17[_0xe5ea('0x36')]:_0x593930['model'];if(!_0x4b8b24[_0xe5ea('0x35')][_0xe5ea('0x39')](_0xe5ea('0x3a'))){_0x4cee17[_0xe5ea('0x20')]=qs[_0xe5ea('0x20')](_0x4b8b24[_0xe5ea('0x35')][_0xe5ea('0x20')]);_0x4cee17[_0xe5ea('0x1d')]=qs[_0xe5ea('0x1d')](_0x4b8b24['query']['offset']);}_0x4cee17['order']=qs['sort'](_0x4b8b24['query'][_0xe5ea('0x3b')]);_0x4cee17[_0xe5ea('0x3c')]=qs[_0xe5ea('0x33')](_[_0xe5ea('0x3d')](_0x4b8b24[_0xe5ea('0x35')],_0x593930[_0xe5ea('0x33')]),_0x1db25d);if(_0x4b8b24[_0xe5ea('0x35')]['filter']){_0x4cee17[_0xe5ea('0x3c')]=_[_0xe5ea('0x3e')](_0x4cee17[_0xe5ea('0x3c')],{'$or':_['map'](_0x1db25d,function(_0x5966e8){if(_0x5966e8[_0xe5ea('0x2e')]!==_0xe5ea('0x3f')){var _0x3e2cac={};_0x3e2cac[_0x5966e8[_0xe5ea('0x29')]]={'$like':'%'+_0x4b8b24[_0xe5ea('0x35')][_0xe5ea('0x40')]+'%'};return _0x3e2cac;}})});}_0x4cee17=_[_0xe5ea('0x3e')]({},_0x4cee17,_0x4b8b24[_0xe5ea('0x41')]);var _0x24f00a={'where':_0x4cee17[_0xe5ea('0x3c')]};return db['CmCustomField'][_0xe5ea('0x1f')](_0x24f00a)[_0xe5ea('0x26')](function(_0x1c6c07){_0x384bca[_0xe5ea('0x1f')]=_0x1c6c07;if(_0x4b8b24[_0xe5ea('0x35')][_0xe5ea('0x42')]){_0x4cee17['include']=[{'all':!![]}];}return db[_0xe5ea('0x43')][_0xe5ea('0x44')](_0x4cee17);})[_0xe5ea('0x26')](function(_0x5c9267){_0x384bca[_0xe5ea('0x45')]=_0x5c9267;return _0x384bca;})[_0xe5ea('0x26')](respondWithFilteredResult(_0x5d32d0,_0x4cee17))['catch'](handleError(_0x5d32d0,null));};exports[_0xe5ea('0x46')]=function(_0x162b56,_0x29efff){var _0x2fc5a0={'raw':!![],'where':{'id':_0x162b56['params']['id']}},_0xb16ca0={};_0xb16ca0[_0xe5ea('0x30')]=_[_0xe5ea('0x47')](db[_0xe5ea('0x43')][_0xe5ea('0x2c')]);_0xb16ca0[_0xe5ea('0x35')]=_[_0xe5ea('0x47')](_0x162b56['query']);_0xb16ca0[_0xe5ea('0x33')]=_[_0xe5ea('0x34')](_0xb16ca0[_0xe5ea('0x30')],_0xb16ca0[_0xe5ea('0x35')]);_0x2fc5a0[_0xe5ea('0x36')]=_[_0xe5ea('0x34')](_0xb16ca0[_0xe5ea('0x30')],qs[_0xe5ea('0x37')](_0x162b56['query'][_0xe5ea('0x37')]));_0x2fc5a0[_0xe5ea('0x36')]=_0x2fc5a0[_0xe5ea('0x36')][_0xe5ea('0x38')]?_0x2fc5a0[_0xe5ea('0x36')]:_0xb16ca0['model'];if(_0x162b56['query'][_0xe5ea('0x42')]){_0x2fc5a0[_0xe5ea('0x48')]=[{'all':!![]}];}_0x2fc5a0=_['merge']({},_0x2fc5a0,_0x162b56[_0xe5ea('0x41')]);return db['CmCustomField']['find'](_0x2fc5a0)['then'](handleEntityNotFound(_0x29efff,null))[_0xe5ea('0x26')](respondWithResult(_0x29efff,null))[_0xe5ea('0x49')](handleError(_0x29efff,null));};exports[_0xe5ea('0x25')]=function(_0x1d42ac,_0xfc87f5){if(_0x1d42ac['body']['id']){delete _0x1d42ac[_0xe5ea('0x4a')]['id'];}return db['CmCustomField']['find']({'where':{'id':_0x1d42ac[_0xe5ea('0x4b')]['id']}})['then'](handleEntityNotFound(_0xfc87f5,null))[_0xe5ea('0x26')](saveUpdates(_0x1d42ac['body'],null))['then'](respondWithResult(_0xfc87f5,null))[_0xe5ea('0x49')](handleError(_0xfc87f5,null));};exports[_0xe5ea('0x27')]=function(_0x55d404,_0x5b17c6){return db[_0xe5ea('0x43')]['find']({'where':{'id':_0x55d404[_0xe5ea('0x4b')]['id']}})[_0xe5ea('0x26')](handleEntityNotFound(_0x5b17c6,null))[_0xe5ea('0x26')](removeEntity(_0x5b17c6,null))[_0xe5ea('0x49')](handleError(_0x5b17c6,null));};exports[_0xe5ea('0x4c')]=function(_0x4cbc2b,_0x4e6354){var _0x2387c9;return db[_0xe5ea('0x4d')]['transaction'](function(_0x231c44){return db[_0xe5ea('0x43')][_0xe5ea('0x4c')](_0x4cbc2b[_0xe5ea('0x4a')],{'transaction':_0x231c44})[_0xe5ea('0x26')](function(_0xbb486b){_0x2387c9=_0xbb486b;var _0x130ae3={'type':db['Sequelize'][_0xe5ea('0x4e')],'transaction':_0x231c44};switch(_0x4cbc2b['body']['type']){case _0xe5ea('0x4f'):_0x130ae3[_0xe5ea('0x2e')]=db[_0xe5ea('0x50')][_0xe5ea('0x4e')];break;case _0xe5ea('0x51'):_0x130ae3['type']=db[_0xe5ea('0x50')]['INTEGER'];break;case _0xe5ea('0x52'):_0x130ae3['type']=db['Sequelize'][_0xe5ea('0x53')];_0x130ae3[_0xe5ea('0x54')]=![];break;default:}return db[_0xe5ea('0x4d')][_0xe5ea('0x55')]['addColumn']('cm_contacts',util[_0xe5ea('0x56')](_0xe5ea('0x57'),_0x2387c9['id']),_0x130ae3);})[_0xe5ea('0x26')](function(){return _0x2387c9;});})[_0xe5ea('0x26')](respondWithResult(_0x4e6354,0xc9))['catch'](handleError(_0x4e6354,null));};
\ No newline at end of file
index 8b8d908..811c3e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc19b=['../../config/environment','./cmCustomField.attributes','exports','cm_custom_fields','lodash','util','../../config/logger','api','moment','request-promise','rimraf'];(function(_0xa6aa71,_0x2a5f0c){var _0x3c02cb=function(_0x3b57e2){while(--_0x3b57e2){_0xa6aa71['push'](_0xa6aa71['shift']());}};_0x3c02cb(++_0x2a5f0c);}(_0xc19b,0x1b1));var _0xbc19=function(_0x555b2f,_0x43b622){_0x555b2f=_0x555b2f-0x0;var _0x81c0a6=_0xc19b[_0x555b2f];return _0x81c0a6;};'use strict';var _=require(_0xbc19('0x0'));var util=require(_0xbc19('0x1'));var logger=require(_0xbc19('0x2'))(_0xbc19('0x3'));var moment=require(_0xbc19('0x4'));var BPromise=require('bluebird');var rp=require(_0xbc19('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xbc19('0x6'));var config=require(_0xbc19('0x7'));var attributes=require(_0xbc19('0x8'));module[_0xbc19('0x9')]=function(_0x4a24eb,_0x2c0be7){return _0x4a24eb['define']('CmCustomField',attributes,{'tableName':_0xbc19('0xa'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x08f4=['rimraf','./cmCustomField.attributes','exports','cm_custom_fields','lodash','util','api','moment','request-promise','path'];(function(_0xfbd175,_0x4fefea){var _0x6075b8=function(_0x302562){while(--_0x302562){_0xfbd175['push'](_0xfbd175['shift']());}};_0x6075b8(++_0x4fefea);}(_0x08f4,0x144));var _0x408f=function(_0x4d7d37,_0x2e9f3f){_0x4d7d37=_0x4d7d37-0x0;var _0x915ca6=_0x08f4[_0x4d7d37];return _0x915ca6;};'use strict';var _=require(_0x408f('0x0'));var util=require(_0x408f('0x1'));var logger=require('../../config/logger')(_0x408f('0x2'));var moment=require(_0x408f('0x3'));var BPromise=require('bluebird');var rp=require(_0x408f('0x4'));var fs=require('fs');var path=require(_0x408f('0x5'));var rimraf=require(_0x408f('0x6'));var config=require('../../config/environment');var attributes=require(_0x408f('0x7'));module[_0x408f('0x8')]=function(_0x5f3a26,_0x346045){return _0x5f3a26['define']('CmCustomField',attributes,{'tableName':_0x408f('0x9'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3d08454..501ef58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c41=['info','request\x20sent','debug','CmCustomField,\x20%s,\x20%s,\x20%s','error','code','CmCustomField,\x20%s,\x20%s','message','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http'];(function(_0xf60b79,_0x522fa1){var _0x70d8b2=function(_0x25c432){while(--_0x25c432){_0xf60b79['push'](_0xf60b79['shift']());}};_0x70d8b2(++_0x522fa1);}(_0x6c41,0x1ab));var _0x16c4=function(_0x6eb833,_0x2bb5e5){_0x6eb833=_0x6eb833-0x0;var _0xdfc38c=_0x6c41[_0x6eb833];return _0xdfc38c;};'use strict';var _=require(_0x16c4('0x0'));var util=require('util');var moment=require(_0x16c4('0x1'));var BPromise=require('bluebird');var rs=require(_0x16c4('0x2'));var fs=require('fs');var Redis=require(_0x16c4('0x3'));var db=require(_0x16c4('0x4'))['db'];var utils=require(_0x16c4('0x5'));var logger=require(_0x16c4('0x6'))('rpc');var config=require(_0x16c4('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x16c4('0x8')][_0x16c4('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5d3ec2,_0xbc3fb6,_0x5d23d6){return new BPromise(function(_0x1b01b6,_0x5e5b5a){return client['request'](_0x5d3ec2,_0x5d23d6)['then'](function(_0x3b91ae){logger[_0x16c4('0xa')]('CmCustomField,\x20%s,\x20%s',_0xbc3fb6,_0x16c4('0xb'));logger[_0x16c4('0xc')](_0x16c4('0xd'),_0xbc3fb6,_0x16c4('0xb'),JSON['stringify'](_0x3b91ae));if(_0x3b91ae[_0x16c4('0xe')]){if(_0x3b91ae[_0x16c4('0xe')][_0x16c4('0xf')]===0x1f4){logger['error'](_0x16c4('0x10'),_0xbc3fb6,_0x3b91ae[_0x16c4('0xe')][_0x16c4('0x11')]);return _0x5e5b5a(_0x3b91ae['error'][_0x16c4('0x11')]);}logger[_0x16c4('0xe')](_0x16c4('0x10'),_0xbc3fb6,_0x3b91ae['error'][_0x16c4('0x11')]);return _0x1b01b6(_0x3b91ae[_0x16c4('0xe')][_0x16c4('0x11')]);}else{logger[_0x16c4('0xa')]('CmCustomField,\x20%s,\x20%s',_0xbc3fb6,_0x16c4('0xb'));_0x1b01b6(_0x3b91ae['result']['message']);}})[_0x16c4('0x12')](function(_0x5600c8){logger[_0x16c4('0xe')]('CmCustomField,\x20%s,\x20%s',_0xbc3fb6,_0x5600c8);_0x5e5b5a(_0x5600c8);});});}
\ No newline at end of file
+var _0x9d3d=['jayson/promise','client','http','request','then','CmCustomField,\x20%s,\x20%s','request\x20sent','debug','CmCustomField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x233d57,_0x10889d){var _0x5f2dbb=function(_0x5772be){while(--_0x5772be){_0x233d57['push'](_0x233d57['shift']());}};_0x5f2dbb(++_0x10889d);}(_0x9d3d,0xb0));var _0xd9d3=function(_0x48e544,_0x4ae4ce){_0x48e544=_0x48e544-0x0;var _0xc4a16=_0x9d3d[_0x48e544];return _0xc4a16;};'use strict';var _=require(_0xd9d3('0x0'));var util=require(_0xd9d3('0x1'));var moment=require('moment');var BPromise=require(_0xd9d3('0x2'));var rs=require(_0xd9d3('0x3'));var fs=require('fs');var Redis=require(_0xd9d3('0x4'));var db=require(_0xd9d3('0x5'))['db'];var utils=require(_0xd9d3('0x6'));var logger=require(_0xd9d3('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0xd9d3('0x8'));var client=jayson[_0xd9d3('0x9')][_0xd9d3('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2a8699,_0x52f3d0,_0x57535a){return new BPromise(function(_0x516634,_0x32e3de){return client[_0xd9d3('0xb')](_0x2a8699,_0x57535a)[_0xd9d3('0xc')](function(_0x4c287c){logger['info'](_0xd9d3('0xd'),_0x52f3d0,_0xd9d3('0xe'));logger[_0xd9d3('0xf')](_0xd9d3('0x10'),_0x52f3d0,'request\x20sent',JSON[_0xd9d3('0x11')](_0x4c287c));if(_0x4c287c[_0xd9d3('0x12')]){if(_0x4c287c['error'][_0xd9d3('0x13')]===0x1f4){logger[_0xd9d3('0x12')](_0xd9d3('0xd'),_0x52f3d0,_0x4c287c['error'][_0xd9d3('0x14')]);return _0x32e3de(_0x4c287c[_0xd9d3('0x12')][_0xd9d3('0x14')]);}logger[_0xd9d3('0x12')](_0xd9d3('0xd'),_0x52f3d0,_0x4c287c[_0xd9d3('0x12')][_0xd9d3('0x14')]);return _0x516634(_0x4c287c[_0xd9d3('0x12')][_0xd9d3('0x14')]);}else{logger[_0xd9d3('0x15')](_0xd9d3('0xd'),_0x52f3d0,'request\x20sent');_0x516634(_0x4c287c[_0xd9d3('0x16')][_0xd9d3('0x14')]);}})['catch'](function(_0x4966c9){logger[_0xd9d3('0x12')](_0xd9d3('0xd'),_0x52f3d0,_0x4966c9);_0x32e3de(_0x4966c9);});});}
\ No newline at end of file
index 4a8dceb..a702c61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18c9=['/:id','isAuthenticated','create','put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmCustomField.controller','index','get'];(function(_0x5bd4f6,_0xf4e45c){var _0x33a165=function(_0x37eef6){while(--_0x37eef6){_0x5bd4f6['push'](_0x5bd4f6['shift']());}};_0x33a165(++_0xf4e45c);}(_0x18c9,0x1bf));var _0x918c=function(_0x45f951,_0x2750c8){_0x45f951=_0x45f951-0x0;var _0x24756c=_0x18c9[_0x45f951];return _0x24756c;};'use strict';var multer=require(_0x918c('0x0'));var util=require(_0x918c('0x1'));var path=require(_0x918c('0x2'));var timeout=require(_0x918c('0x3'));var express=require(_0x918c('0x4'));var router=express[_0x918c('0x5')]();var fs_extra=require(_0x918c('0x6'));var auth=require(_0x918c('0x7'));var interaction=require(_0x918c('0x8'));var config=require(_0x918c('0x9'));var controller=require(_0x918c('0xa'));router['get']('/',auth['isAuthenticated'](),controller[_0x918c('0xb')]);router[_0x918c('0xc')](_0x918c('0xd'),auth[_0x918c('0xe')](),controller['show']);router['post']('/',auth[_0x918c('0xe')](),controller[_0x918c('0xf')]);router[_0x918c('0x10')](_0x918c('0xd'),auth[_0x918c('0xe')](),controller[_0x918c('0x11')]);router[_0x918c('0x12')]('/:id',auth[_0x918c('0xe')](),controller[_0x918c('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0xaf3e=['update','delete','destroy','multer','util','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./cmCustomField.controller','get','isAuthenticated','/:id','show','post','put'];(function(_0x32e70a,_0x39cff9){var _0x23cedf=function(_0x4cffb2){while(--_0x4cffb2){_0x32e70a['push'](_0x32e70a['shift']());}};_0x23cedf(++_0x39cff9);}(_0xaf3e,0xcf));var _0xeaf3=function(_0x1b8e60,_0x21b885){_0x1b8e60=_0x1b8e60-0x0;var _0x363363=_0xaf3e[_0x1b8e60];return _0x363363;};'use strict';var multer=require(_0xeaf3('0x0'));var util=require(_0xeaf3('0x1'));var path=require('path');var timeout=require(_0xeaf3('0x2'));var express=require('express');var router=express[_0xeaf3('0x3')]();var fs_extra=require(_0xeaf3('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xeaf3('0x5'));var config=require(_0xeaf3('0x6'));var controller=require(_0xeaf3('0x7'));router[_0xeaf3('0x8')]('/',auth[_0xeaf3('0x9')](),controller['index']);router[_0xeaf3('0x8')](_0xeaf3('0xa'),auth[_0xeaf3('0x9')](),controller[_0xeaf3('0xb')]);router[_0xeaf3('0xc')]('/',auth[_0xeaf3('0x9')](),controller['create']);router[_0xeaf3('0xd')]('/:id',auth[_0xeaf3('0x9')](),controller[_0xeaf3('0xe')]);router[_0xeaf3('0xf')]('/:id',auth[_0xeaf3('0x9')](),controller[_0xeaf3('0x10')]);module['exports']=router;
\ No newline at end of file
index 48615a4..3ecfe9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc111=['BOOLEAN','UNSIGNED','contactListQueue','moment','sequelize','exports','STRING','DATE','format','YYYY-MM-DD\x20HH:mm:ss','INTEGER'];(function(_0x24c668,_0x1f4d95){var _0x1d35ad=function(_0x131cd4){while(--_0x131cd4){_0x24c668['push'](_0x24c668['shift']());}};_0x1d35ad(++_0x1f4d95);}(_0xc111,0x1bb));var _0x1c11=function(_0x7d7b26,_0x335355){_0x7d7b26=_0x7d7b26-0x0;var _0x10f54c=_0xc111[_0x7d7b26];return _0x10f54c;};'use strict';var moment=require(_0x1c11('0x0'));var Sequelize=require(_0x1c11('0x1'));module[_0x1c11('0x2')]={'phone':{'type':Sequelize[_0x1c11('0x3')],'allowNull':![]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0x1c11('0x4')],'defaultValue':moment()[_0x1c11('0x5')](_0x1c11('0x6'))},'countbusyretry':{'type':Sequelize[_0x1c11('0x7')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x1c11('0x7')],'defaultValue':0x0},'callback':{'type':Sequelize[_0x1c11('0x8')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize[_0x1c11('0x4')]},'priority':{'type':Sequelize[_0x1c11('0x7')](0x2)[_0x1c11('0x9')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ContactId':{'type':Sequelize[_0x1c11('0x7')],'unique':_0x1c11('0xa')},'ListId':{'type':Sequelize[_0x1c11('0x7')],'unique':_0x1c11('0xa')},'UserId':{'type':Sequelize[_0x1c11('0x7')]},'VoiceQueueId':{'type':Sequelize[_0x1c11('0x7')],'unique':_0x1c11('0xa')},'CampaignId':{'type':Sequelize[_0x1c11('0x7')]},'countnosuchnumberretry':{'type':Sequelize[_0x1c11('0x7')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x1c11('0x7')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x1c11('0x7')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x1c11('0x7')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x1c11('0x7')],'defaultValue':0x0},'OrderBy':{'type':Sequelize[_0x1c11('0x7')],'allowNull':!![],'defaultValue':0x0},'dialTimezone':{'type':Sequelize['STRING']},'recallmeNotifiedDate':{'type':Sequelize[_0x1c11('0x4')],'allowNull':!![],'defaultValue':null}};
\ No newline at end of file
+var _0xb6c4=['sequelize','exports','DATE','format','INTEGER','BOOLEAN','STRING','contactListQueue','moment'];(function(_0x28fac8,_0x4bbd99){var _0x5b9300=function(_0x25b7bd){while(--_0x25b7bd){_0x28fac8['push'](_0x28fac8['shift']());}};_0x5b9300(++_0x4bbd99);}(_0xb6c4,0xce));var _0x4b6c=function(_0x3a4d31,_0x1cf441){_0x3a4d31=_0x3a4d31-0x0;var _0x56487d=_0xb6c4[_0x3a4d31];return _0x56487d;};'use strict';var moment=require(_0x4b6c('0x0'));var Sequelize=require(_0x4b6c('0x1'));module[_0x4b6c('0x2')]={'phone':{'type':Sequelize['STRING'],'allowNull':![]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0x4b6c('0x3')],'defaultValue':moment()[_0x4b6c('0x4')]('YYYY-MM-DD\x20HH:mm:ss')},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x4b6c('0x5')],'defaultValue':0x0},'callback':{'type':Sequelize[_0x4b6c('0x6')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x4b6c('0x7')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x4b6c('0x3')]},'priority':{'type':Sequelize['INTEGER'](0x2)['UNSIGNED'],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0x4b6c('0x6')],'defaultValue':![]},'ContactId':{'type':Sequelize[_0x4b6c('0x5')],'unique':'contactListQueue'},'ListId':{'type':Sequelize[_0x4b6c('0x5')],'unique':_0x4b6c('0x8')},'UserId':{'type':Sequelize[_0x4b6c('0x5')]},'VoiceQueueId':{'type':Sequelize[_0x4b6c('0x5')],'unique':_0x4b6c('0x8')},'CampaignId':{'type':Sequelize[_0x4b6c('0x5')]},'countnosuchnumberretry':{'type':Sequelize[_0x4b6c('0x5')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x4b6c('0x5')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x4b6c('0x5')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x4b6c('0x5')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x4b6c('0x5')],'defaultValue':0x0},'OrderBy':{'type':Sequelize[_0x4b6c('0x5')],'allowNull':!![],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0x4b6c('0x7')]},'recallmeNotifiedDate':{'type':Sequelize[_0x4b6c('0x3')],'allowNull':!![],'defaultValue':null}};
\ No newline at end of file
index 7eaca30..b0c383d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['utcOffset','getTimezone','timezones','moment','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','status','json','offset','undefined','limit','count','set','Content-Range','then','sendStatus','stack','name','index','map','CmHopper','rawAttributes','fieldName','type','key','query','keys','filters','model','concat','$and','$or','$gte','$lt','$lte','$ne','$eq','$not','$between','$notBetween','$in','$like','$notILike','$overlap','$contains','$contained','$any','attributes','intersection','fields','length','hasOwnProperty','order','sort','filter','where','merge','VIRTUAL','options','includeAll','include','rows','show','params','catch','create','body','find','destroy','VoiceQueueId','CampaignId','VoiceQueue','Campaign','omit','dataValues','createdAt','updatedAt','state','statedesc','deleted','campaign','membername','user','UserId','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','campaigntype','queue','ivr','CmContact','ContactId','firstName','isNil','lastName','end','getPreview','describe','getVoiceQueues','outbound','preview','dialOrderByScheduledAt','dialPreviewAutoRecallMe','sequelize','transaction','value','direction','prev','isEmpty','hopperIds','priority','ASC','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','LOCK','UPDATE','Contact','CmCompany','CmList','List','Queue','dialActive','getPreviewRecall','Company','update','getOpenContacts','isNumber','error'];(function(_0x25a18b,_0x26965a){var _0x5ec5c9=function(_0x5dfc96){while(--_0x5dfc96){_0x25a18b['push'](_0x25a18b['shift']());}};_0x5ec5c9(++_0x26965a);}(_0x7217,0x19e));var _0x7721=function(_0x4fc9e6,_0xc51915){_0x4fc9e6=_0x4fc9e6-0x0;var _0x551d28=_0x7217[_0x4fc9e6];return _0x551d28;};'use strict';var moment=require(_0x7721('0x0'));var _=require('lodash');var qs=require(_0x7721('0x1'));var logger=require(_0x7721('0x2'))(_0x7721('0x3'));var shared=require(_0x7721('0x4'));var db=require(_0x7721('0x5'))['db'];function respondWithResult(_0x4d6446,_0x5bf160){_0x5bf160=_0x5bf160||0xc8;return function(_0x472a96){if(_0x472a96){return _0x4d6446[_0x7721('0x6')](_0x5bf160)[_0x7721('0x7')](_0x472a96);}};}function respondWithFilteredResult(_0x3fe47c,_0xb239e0){return function(_0xf7ff37){if(_0xf7ff37){var _0x18ab6b=typeof _0xb239e0[_0x7721('0x8')]===_0x7721('0x9')&&typeof _0xb239e0[_0x7721('0xa')]===_0x7721('0x9');var _0x2a66cb=_0xf7ff37[_0x7721('0xb')];var _0x138740=_0x18ab6b?0x0:_0xb239e0[_0x7721('0x8')];var _0x578d59=_0x18ab6b?_0xf7ff37[_0x7721('0xb')]:_0xb239e0[_0x7721('0x8')]+_0xb239e0[_0x7721('0xa')];var _0xf78099;if(_0x578d59>=_0x2a66cb){_0x578d59=_0x2a66cb;_0xf78099=0xc8;}else{_0xf78099=0xce;}_0x3fe47c[_0x7721('0x6')](_0xf78099);return _0x3fe47c[_0x7721('0xc')](_0x7721('0xd'),_0x138740+'-'+_0x578d59+'/'+_0x2a66cb)[_0x7721('0x7')](_0xf7ff37);}return null;};}function saveUpdates(_0x55b4ca,_0x2911ec){return function(_0x199930){if(_0x199930){return _0x199930['update'](_0x55b4ca)[_0x7721('0xe')](function(_0x30da54){return _0x30da54;});}return null;};}function handleEntityNotFound(_0x3f01c5,_0x2e9752){return function(_0x5069da){if(!_0x5069da){_0x3f01c5[_0x7721('0xf')](0x194);}return _0x5069da;};}function handleError(_0x25b1c0,_0x534f1b){_0x534f1b=_0x534f1b||0x1f4;return function(_0x4e199a){logger['error'](_0x4e199a[_0x7721('0x10')]);if(_0x4e199a[_0x7721('0x11')]){delete _0x4e199a[_0x7721('0x11')];}_0x25b1c0[_0x7721('0x6')](_0x534f1b)['send'](_0x4e199a);};}exports[_0x7721('0x12')]=function(_0x54a838,_0x3fc09e){var _0x5cb0e6={},_0xfec626={},_0x4e96fb={'count':0x0,'rows':[]};var _0x3ab5a5=_[_0x7721('0x13')](db[_0x7721('0x14')][_0x7721('0x15')],function(_0x402820){return{'name':_0x402820[_0x7721('0x16')],'type':_0x402820[_0x7721('0x17')][_0x7721('0x18')]};});_0xfec626['model']=_[_0x7721('0x13')](_0x3ab5a5,_0x7721('0x11'));_0xfec626[_0x7721('0x19')]=_[_0x7721('0x1a')](_0x54a838['query']);_0xfec626[_0x7721('0x1b')]=_['intersection'](_0xfec626[_0x7721('0x1c')],_0xfec626[_0x7721('0x19')]);_0xfec626[_0x7721('0x1b')]=_[_0x7721('0x1d')](_0xfec626[_0x7721('0x1b')],[_0x7721('0x1e'),_0x7721('0x1f'),'$gt',_0x7721('0x20'),_0x7721('0x21'),_0x7721('0x22'),_0x7721('0x23'),_0x7721('0x24'),_0x7721('0x25'),_0x7721('0x26'),_0x7721('0x27'),_0x7721('0x28'),'$notIn',_0x7721('0x29'),'$notLike','$iLike',_0x7721('0x2a'),_0x7721('0x29'),_0x7721('0x2b'),_0x7721('0x2c'),_0x7721('0x2d'),_0x7721('0x2e')]);_0x5cb0e6[_0x7721('0x2f')]=_[_0x7721('0x30')](_0xfec626['model'],qs[_0x7721('0x31')](_0x54a838[_0x7721('0x19')]['fields']));_0x5cb0e6['attributes']=_0x5cb0e6[_0x7721('0x2f')][_0x7721('0x32')]?_0x5cb0e6['attributes']:_0xfec626[_0x7721('0x1c')];if(!_0x54a838[_0x7721('0x19')][_0x7721('0x33')]('nolimit')){_0x5cb0e6[_0x7721('0xa')]=qs[_0x7721('0xa')](_0x54a838[_0x7721('0x19')][_0x7721('0xa')]);_0x5cb0e6[_0x7721('0x8')]=qs['offset'](_0x54a838[_0x7721('0x19')][_0x7721('0x8')]);}_0x5cb0e6[_0x7721('0x34')]=qs['sort'](_0x54a838[_0x7721('0x19')][_0x7721('0x35')]);_0x5cb0e6['where']=qs[_0x7721('0x1b')](_['pick'](_0x54a838[_0x7721('0x19')],_0xfec626[_0x7721('0x1b')]),_0x3ab5a5);if(_0x54a838[_0x7721('0x19')][_0x7721('0x36')]){_0x5cb0e6[_0x7721('0x37')]=_[_0x7721('0x38')](_0x5cb0e6[_0x7721('0x37')],{'$or':_[_0x7721('0x13')](_0x3ab5a5,function(_0x25bdd9){if(_0x25bdd9[_0x7721('0x17')]!==_0x7721('0x39')){var _0x5c806d={};_0x5c806d[_0x25bdd9[_0x7721('0x11')]]={'$like':'%'+_0x54a838['query'][_0x7721('0x36')]+'%'};return _0x5c806d;}})});}_0x5cb0e6=_[_0x7721('0x38')]({},_0x5cb0e6,_0x54a838[_0x7721('0x3a')]);var _0x1d03de={'where':_0x5cb0e6[_0x7721('0x37')]};return db[_0x7721('0x14')]['count'](_0x1d03de)['then'](function(_0x4cadef){_0x4e96fb['count']=_0x4cadef;if(_0x54a838[_0x7721('0x19')][_0x7721('0x3b')]){_0x5cb0e6[_0x7721('0x3c')]=[{'all':!![]}];}return db[_0x7721('0x14')]['findAll'](_0x5cb0e6);})[_0x7721('0xe')](function(_0x4cf659){_0x4e96fb[_0x7721('0x3d')]=_0x4cf659;return _0x4e96fb;})[_0x7721('0xe')](respondWithFilteredResult(_0x3fc09e,_0x5cb0e6))['catch'](handleError(_0x3fc09e,null));};exports[_0x7721('0x3e')]=function(_0x3a47c8,_0x4e77ff){var _0x4d0111={'raw':!![],'where':{'id':_0x3a47c8[_0x7721('0x3f')]['id']}},_0x3d84d3={};_0x3d84d3[_0x7721('0x1c')]=_[_0x7721('0x1a')](db['CmHopper'][_0x7721('0x15')]);_0x3d84d3[_0x7721('0x19')]=_[_0x7721('0x1a')](_0x3a47c8[_0x7721('0x19')]);_0x3d84d3[_0x7721('0x1b')]=_['intersection'](_0x3d84d3[_0x7721('0x1c')],_0x3d84d3['query']);_0x4d0111[_0x7721('0x2f')]=_['intersection'](_0x3d84d3[_0x7721('0x1c')],qs[_0x7721('0x31')](_0x3a47c8[_0x7721('0x19')]['fields']));_0x4d0111[_0x7721('0x2f')]=_0x4d0111[_0x7721('0x2f')][_0x7721('0x32')]?_0x4d0111['attributes']:_0x3d84d3[_0x7721('0x1c')];if(_0x3a47c8[_0x7721('0x19')][_0x7721('0x3b')]){_0x4d0111[_0x7721('0x3c')]=[{'all':!![]}];}_0x4d0111=_[_0x7721('0x38')]({},_0x4d0111,_0x3a47c8[_0x7721('0x3a')]);return db[_0x7721('0x14')]['find'](_0x4d0111)['then'](handleEntityNotFound(_0x4e77ff,null))[_0x7721('0xe')](respondWithResult(_0x4e77ff,null))[_0x7721('0x40')](handleError(_0x4e77ff,null));};exports[_0x7721('0x41')]=function(_0x39a3ad,_0x335145){return db[_0x7721('0x14')][_0x7721('0x41')](_0x39a3ad[_0x7721('0x42')],{})[_0x7721('0xe')](respondWithResult(_0x335145,0xc9))[_0x7721('0x40')](handleError(_0x335145,null));};exports['update']=function(_0x578867,_0x5ed70d){if(_0x578867[_0x7721('0x42')]['id']){delete _0x578867[_0x7721('0x42')]['id'];}return db[_0x7721('0x14')]['find']({'where':{'id':_0x578867[_0x7721('0x3f')]['id']}})[_0x7721('0xe')](handleEntityNotFound(_0x5ed70d,null))['then'](saveUpdates(_0x578867[_0x7721('0x42')],null))['then'](respondWithResult(_0x5ed70d,null))[_0x7721('0x40')](handleError(_0x5ed70d,null));};exports['describe']=function(_0x334f23,_0x196be4){return db[_0x7721('0x14')]['describe']()[_0x7721('0xe')](respondWithResult(_0x196be4,null))[_0x7721('0x40')](handleError(_0x196be4,null));};exports['destroy']=function(_0x223d93,_0x1196c2){var _0xf88e8c;var _0x5c4078=_0x223d93[_0x7721('0x3f')]['id'];return db['CmHopper'][_0x7721('0x43')]({'where':{'id':_0x223d93[_0x7721('0x3f')]['id']}})[_0x7721('0xe')](handleEntityNotFound(_0x1196c2,null))[_0x7721('0xe')](function(_0x1c95d8){if(_0x1c95d8){return _0x1c95d8[_0x7721('0x44')]()[_0x7721('0xe')](function(_0x7fbb73){return _0x7fbb73;});}})[_0x7721('0xe')](function(_0x3386aa){_0xf88e8c=_0x3386aa;if(_0x3386aa){if(_0x3386aa[_0x7721('0x45')]||_0x3386aa[_0x7721('0x46')]){return db[_0x3386aa[_0x7721('0x45')]?_0x7721('0x47'):_0x7721('0x48')]['find']({'where':{'id':_0x3386aa[_0x7721('0x45')]?_0x3386aa[_0x7721('0x45')]:_0x3386aa[_0x7721('0x46')]},'attributes':['id',_0x7721('0x11')],'raw':!![]});}}})[_0x7721('0xe')](function(_0x315127){var _0x267f5e={};if(_0x315127){_['merge'](_0x267f5e,_[_0x7721('0x49')](_0xf88e8c[_0x7721('0x4a')],[_0x7721('0x4b'),_0x7721('0x4c'),'id']));_0x267f5e[_0x7721('0x4d')]=0x15;_0x267f5e[_0x7721('0x4e')]=_0x7721('0x4f');_0x267f5e[_0x7721('0x50')]=_0x315127[_0x7721('0x11')];_0x267f5e[_0x7721('0x51')]=_0x223d93[_0x7721('0x52')]['name'];_0x267f5e[_0x7721('0x53')]=_0x223d93[_0x7721('0x52')]['id'];_0x267f5e[_0x7721('0x4f')]=!![];_0x267f5e[_0x7721('0x54')]=moment()[_0x7721('0x55')](_0x7721('0x56'));_0x267f5e[_0x7721('0x57')]=_0xf88e8c[_0x7721('0x58')];_0x267f5e[_0x7721('0x59')]=_0xf88e8c[_0x7721('0x45')]?_0x7721('0x5a'):_0x7721('0x5b');return db[_0x7721('0x5c')][_0x7721('0x43')]({'where':{'id':_0x267f5e[_0x7721('0x5d')]},'attributes':['firstName','lastName']})['then'](function(_0x885a3a){if(!_['isNil'](_0x1196c2)&&!_['isNil'](_0x885a3a['firstName'])){_0x267f5e['calleridname']=_0x885a3a[_0x7721('0x5e')];if(!_[_0x7721('0x5f')](_0x885a3a[_0x7721('0x60')])){_0x267f5e['calleridname']+='\x20'+_0x885a3a[_0x7721('0x60')];}}})['finally'](function(){return db['CmHopperFinal']['create'](_0x267f5e);});}})[_0x7721('0xe')](function(_0x4f0d38){return db['CmHopperAdditionalPhone']['destroy']({'where':{'CmHopperId':_0x5c4078}});})[_0x7721('0xe')](function(){return _0x1196c2[_0x7721('0x6')](0xcc)[_0x7721('0x61')]();})['catch'](handleError(_0x1196c2,null));};exports[_0x7721('0x62')]=function(_0x1f1890,_0x2c95d0){var _0x168343=[];return db[_0x7721('0x5c')][_0x7721('0x63')]()[_0x7721('0xe')](function(_0x3e3301){_0x168343=_[_0x7721('0x1a')](_0x3e3301);return _0x1f1890[_0x7721('0x52')][_0x7721('0x64')]({'where':{'type':_0x7721('0x65'),'dialActive':!![],'dialMethod':_0x7721('0x66')},'attributes':['id',_0x7721('0x67'),_0x7721('0x68')],'raw':!![]});})['then'](function(_0x233e5d){if(_0x233e5d&&_0x233e5d[_0x7721('0x32')]){return db[_0x7721('0x69')][_0x7721('0x6a')](function(_0x542e30){var _0x103009={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x7721('0x55')]('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_[_0x7721('0x13')](_0x233e5d,'id')},'$or':[{'UserId':null},{'UserId':_0x1f1890['user']['id']}]};var _0x1f508d={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x233e5d)[_0x7721('0x36')]([_0x7721('0x68'),0x0])[_0x7721('0x13')]('id')[_0x7721('0x6b')]()},'$or':[{'UserId':null},{'UserId':_0x1f1890[_0x7721('0x52')]['id']}]};var _0x3121e0={'$or':[_0x103009,_0x1f508d]};var _0x167ce7=[];if(_0x1f1890[_0x7721('0x42')]['direction']&&_0x1f1890[_0x7721('0x42')][_0x7721('0x6c')]===_0x7721('0x6d')){if(!_[_0x7721('0x6e')](_0x1f1890[_0x7721('0x42')][_0x7721('0x6f')])){_0x3121e0['id']={'$in':_0x1f1890[_0x7721('0x42')]['hopperIds']};}_0x167ce7=[[_0x7721('0x70'),_0x7721('0x71')],['scheduledAt',_0x233e5d[0x0][_0x7721('0x67')]==='ASC'?_0x7721('0x72'):_0x7721('0x71')],db[_0x7721('0x69')][_0x7721('0x73')](_0x7721('0x74')),['id',_0x7721('0x72')]];}else{if(!_[_0x7721('0x6e')](_0x1f1890['body'][_0x7721('0x6f')])){_0x3121e0['id']={'$notIn':_0x1f1890[_0x7721('0x42')][_0x7721('0x6f')]};}_0x167ce7=[['priority','DESC'],['scheduledAt',_0x233e5d[0x0]['dialOrderByScheduledAt']],db['sequelize'][_0x7721('0x73')](_0x7721('0x75')),['id','ASC']];}return db[_0x7721('0x14')][_0x7721('0x76')]({'attributes':['id',_0x7721('0x77'),_0x7721('0x58'),'recallme'],'where':_0x3121e0,'order':_0x167ce7,'transaction':_0x542e30,'lock':_0x542e30[_0x7721('0x78')][_0x7721('0x79')],'include':[{'model':db[_0x7721('0x5c')],'as':_0x7721('0x7a'),'attributes':_0x168343,'include':[{'model':db[_0x7721('0x7b')],'as':'Company','attributes':['id',_0x7721('0x11')]}]},{'model':db[_0x7721('0x7c')],'as':_0x7721('0x7d'),'attributes':['id','name']},{'model':db['VoiceQueue'],'as':_0x7721('0x7e'),'attributes':['id',_0x7721('0x11'),_0x7721('0x7f')]}]})[_0x7721('0xe')](function(_0x75a5cc){if(_0x75a5cc){return _0x75a5cc['update']({'UserId':_0x1f1890['user']['id']},{'transaction':_0x542e30});}});});}})[_0x7721('0xe')](handleEntityNotFound(_0x2c95d0,null))[_0x7721('0xe')](respondWithResult(_0x2c95d0,null))[_0x7721('0x40')](handleError(_0x2c95d0,null));};exports[_0x7721('0x80')]=function(_0x142ec6,_0x145a0b,_0x34187f){var _0x58f944=[];var _0xdfae41=_0x142ec6[_0x7721('0x3f')]['id'];var _0x27d7f1=_0x142ec6['user']['id'];return db[_0x7721('0x5c')][_0x7721('0x63')]()[_0x7721('0xe')](function(_0x321a40){_0x58f944=_['keys'](_0x321a40);return db['sequelize'][_0x7721('0x6a')](function(_0x2cac50){const _0x177fe3={'id':_0xdfae41};return db[_0x7721('0x14')][_0x7721('0x76')]({'attributes':['id',_0x7721('0x77'),'recallme'],'where':_0x177fe3,'transaction':_0x2cac50,'lock':_0x2cac50[_0x7721('0x78')][_0x7721('0x79')],'include':[{'model':db[_0x7721('0x5c')],'as':'Contact','attributes':_0x58f944,'include':[{'model':db[_0x7721('0x7b')],'as':_0x7721('0x81'),'attributes':['id',_0x7721('0x11')]}]},{'model':db[_0x7721('0x7c')],'as':_0x7721('0x7d'),'attributes':['id','name']},{'model':db[_0x7721('0x47')],'as':'Queue','attributes':['id',_0x7721('0x11'),_0x7721('0x7f')]}]})[_0x7721('0xe')](function(_0x7f0598){if(_0x7f0598){return _0x7f0598[_0x7721('0x82')]({'UserId':_0x27d7f1},{'transaction':_0x2cac50});}});});})[_0x7721('0xe')](handleEntityNotFound(_0x145a0b,null))[_0x7721('0xe')](respondWithResult(_0x145a0b,null))[_0x7721('0x40')](handleError(_0x145a0b,null));};exports[_0x7721('0x83')]=function(_0x3b78f5,_0x2c74d8){return _0x3b78f5['user'][_0x7721('0x64')]({'where':{'type':_0x7721('0x65'),'dialActive':!![],'dialMethod':_0x7721('0x66')},'attributes':['id'],'raw':!![]})['then'](function(_0x94af20){if(_0x94af20&&_0x94af20[_0x7721('0x32')]){return db[_0x7721('0x14')][_0x7721('0xb')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x7721('0x55')]('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_[_0x7721('0x13')](_0x94af20,'id')},'$or':[{'UserId':null},{'UserId':_0x3b78f5[_0x7721('0x52')]['id']}]}});}return 0x0;})[_0x7721('0xe')](function(_0x21b365){if(!_[_0x7721('0x5f')](_0x21b365)&&_[_0x7721('0x84')](_0x21b365)){return _0x2c74d8['status'](0xc8)[_0x7721('0x7')]({'contacts':_0x21b365});}else{logger[_0x7721('0x85')]('CmHopper,\x20%s,\x20%s,\x20%s',_0x7721('0x83'),0x194,'entity\x20not\x20found');_0x2c74d8[_0x7721('0xf')](0x194);}})[_0x7721('0x40')](handleError(_0x2c74d8,null));};exports['getTimezones']=function(_0x3e910c,_0x5209e1){var _0x56069f=shared['timezones'];var _0x1bd716=[];_[_0x7721('0x13')](_0x56069f,function(_0x21a686){_0x1bd716['push']({'id':_0x21a686['name'],'name':_0x21a686['name'],'utcOffset':_0x21a686[_0x7721('0x86')]});});return _0x5209e1[_0x7721('0x6')](0xc8)[_0x7721('0x7')]({'tz':_0x1bd716});};exports[_0x7721('0x87')]=function(_0x3b02d7,_0x259ee8){var _0x58302a=shared[_0x7721('0x88')];var _0x2514b3={};if(!_[_0x7721('0x5f')](_0x58302a[_0x3b02d7[_0x7721('0x42')]['id']]))_0x2514b3=_0x58302a[_0x3b02d7[_0x7721('0x42')]['id']];return _0x259ee8[_0x7721('0x6')](0xc8)[_0x7721('0x7')](_0x2514b3);};
\ No newline at end of file
+var _0x7fbe=['$contained','$any','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','options','CmHopper','includeAll','include','findAll','rows','catch','find','create','body','params','describe','destroy','VoiceQueueId','Campaign','CampaignId','dataValues','campaign','membername','user','UserId','deleted','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','queue','ivr','CmContact','firstName','lastName','isNil','calleridname','finally','CmHopperFinal','CmHopperAdditionalPhone','end','getVoiceQueues','outbound','preview','dialOrderByScheduledAt','format','dialPreviewAutoRecallMe','value','prev','isEmpty','hopperIds','priority','ASC','scheduledAt','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','sequelize','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','recallme','LOCK','UPDATE','Contact','Company','CmList','List','VoiceQueue','Queue','dialActive','getPreviewRecall','transaction','scheduledat','CmCompany','getOpenContacts','isNumber','error','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','getTimezones','timezones','push','utcOffset','getTimezone','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','status','json','undefined','limit','offset','count','set','Content-Range','update','then','sendStatus','stack','name','index','map','rawAttributes','fieldName','key','keys','query','filters','model','$and','$gte','$lt','$lte','$eq','$not','$between','$notBetween','$in','$notIn','$like','$notILike','$overlap'];(function(_0x1f35be,_0x1bb533){var _0x1b3251=function(_0x847fd){while(--_0x847fd){_0x1f35be['push'](_0x1f35be['shift']());}};_0x1b3251(++_0x1bb533);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x33c562,_0x54f29c){_0x33c562=_0x33c562-0x0;var _0x4199e3=_0x7fbe[_0x33c562];return _0x4199e3;};'use strict';var moment=require('moment');var _=require('lodash');var qs=require(_0xe7fb('0x0'));var logger=require(_0xe7fb('0x1'))(_0xe7fb('0x2'));var shared=require(_0xe7fb('0x3'));var db=require(_0xe7fb('0x4'))['db'];function respondWithResult(_0x47625b,_0x11d2c4){_0x11d2c4=_0x11d2c4||0xc8;return function(_0x4524ff){if(_0x4524ff){return _0x47625b[_0xe7fb('0x5')](_0x11d2c4)[_0xe7fb('0x6')](_0x4524ff);}};}function respondWithFilteredResult(_0x290172,_0x12d1b0){return function(_0x24cd67){if(_0x24cd67){var _0x1f943f=typeof _0x12d1b0['offset']===_0xe7fb('0x7')&&typeof _0x12d1b0[_0xe7fb('0x8')]===_0xe7fb('0x7');var _0x190a7a=_0x24cd67['count'];var _0x558857=_0x1f943f?0x0:_0x12d1b0[_0xe7fb('0x9')];var _0x2f2ea0=_0x1f943f?_0x24cd67[_0xe7fb('0xa')]:_0x12d1b0[_0xe7fb('0x9')]+_0x12d1b0[_0xe7fb('0x8')];var _0x42435c;if(_0x2f2ea0>=_0x190a7a){_0x2f2ea0=_0x190a7a;_0x42435c=0xc8;}else{_0x42435c=0xce;}_0x290172[_0xe7fb('0x5')](_0x42435c);return _0x290172[_0xe7fb('0xb')](_0xe7fb('0xc'),_0x558857+'-'+_0x2f2ea0+'/'+_0x190a7a)[_0xe7fb('0x6')](_0x24cd67);}return null;};}function saveUpdates(_0x2437d4,_0x188e1d){return function(_0xdf9760){if(_0xdf9760){return _0xdf9760[_0xe7fb('0xd')](_0x2437d4)[_0xe7fb('0xe')](function(_0x598729){return _0x598729;});}return null;};}function handleEntityNotFound(_0x278b75,_0x2225e5){return function(_0x5573ab){if(!_0x5573ab){_0x278b75[_0xe7fb('0xf')](0x194);}return _0x5573ab;};}function handleError(_0x37eb9f,_0x482f7d){_0x482f7d=_0x482f7d||0x1f4;return function(_0xa76acf){logger['error'](_0xa76acf[_0xe7fb('0x10')]);if(_0xa76acf[_0xe7fb('0x11')]){delete _0xa76acf[_0xe7fb('0x11')];}_0x37eb9f[_0xe7fb('0x5')](_0x482f7d)['send'](_0xa76acf);};}exports[_0xe7fb('0x12')]=function(_0x5ebc87,_0x293a47){var _0x546463={},_0x1e77fd={},_0x4708f7={'count':0x0,'rows':[]};var _0x3f96a7=_[_0xe7fb('0x13')](db['CmHopper'][_0xe7fb('0x14')],function(_0x5d1c87){return{'name':_0x5d1c87[_0xe7fb('0x15')],'type':_0x5d1c87['type'][_0xe7fb('0x16')]};});_0x1e77fd['model']=_[_0xe7fb('0x13')](_0x3f96a7,_0xe7fb('0x11'));_0x1e77fd['query']=_[_0xe7fb('0x17')](_0x5ebc87[_0xe7fb('0x18')]);_0x1e77fd[_0xe7fb('0x19')]=_['intersection'](_0x1e77fd[_0xe7fb('0x1a')],_0x1e77fd[_0xe7fb('0x18')]);_0x1e77fd['filters']=_['concat'](_0x1e77fd['filters'],[_0xe7fb('0x1b'),'$or','$gt',_0xe7fb('0x1c'),_0xe7fb('0x1d'),_0xe7fb('0x1e'),'$ne',_0xe7fb('0x1f'),_0xe7fb('0x20'),_0xe7fb('0x21'),_0xe7fb('0x22'),_0xe7fb('0x23'),_0xe7fb('0x24'),_0xe7fb('0x25'),'$notLike','$iLike',_0xe7fb('0x26'),_0xe7fb('0x25'),_0xe7fb('0x27'),'$contains',_0xe7fb('0x28'),_0xe7fb('0x29')]);_0x546463[_0xe7fb('0x2a')]=_[_0xe7fb('0x2b')](_0x1e77fd[_0xe7fb('0x1a')],qs[_0xe7fb('0x2c')](_0x5ebc87[_0xe7fb('0x18')][_0xe7fb('0x2c')]));_0x546463['attributes']=_0x546463[_0xe7fb('0x2a')][_0xe7fb('0x2d')]?_0x546463[_0xe7fb('0x2a')]:_0x1e77fd['model'];if(!_0x5ebc87['query'][_0xe7fb('0x2e')]('nolimit')){_0x546463[_0xe7fb('0x8')]=qs[_0xe7fb('0x8')](_0x5ebc87[_0xe7fb('0x18')][_0xe7fb('0x8')]);_0x546463['offset']=qs[_0xe7fb('0x9')](_0x5ebc87[_0xe7fb('0x18')][_0xe7fb('0x9')]);}_0x546463[_0xe7fb('0x2f')]=qs[_0xe7fb('0x30')](_0x5ebc87['query'][_0xe7fb('0x30')]);_0x546463[_0xe7fb('0x31')]=qs[_0xe7fb('0x19')](_[_0xe7fb('0x32')](_0x5ebc87[_0xe7fb('0x18')],_0x1e77fd[_0xe7fb('0x19')]),_0x3f96a7);if(_0x5ebc87[_0xe7fb('0x18')][_0xe7fb('0x33')]){_0x546463[_0xe7fb('0x31')]=_['merge'](_0x546463[_0xe7fb('0x31')],{'$or':_[_0xe7fb('0x13')](_0x3f96a7,function(_0x2593e3){if(_0x2593e3['type']!==_0xe7fb('0x34')){var _0x3502dc={};_0x3502dc[_0x2593e3[_0xe7fb('0x11')]]={'$like':'%'+_0x5ebc87[_0xe7fb('0x18')][_0xe7fb('0x33')]+'%'};return _0x3502dc;}})});}_0x546463=_[_0xe7fb('0x35')]({},_0x546463,_0x5ebc87[_0xe7fb('0x36')]);var _0xc4e271={'where':_0x546463[_0xe7fb('0x31')]};return db[_0xe7fb('0x37')][_0xe7fb('0xa')](_0xc4e271)[_0xe7fb('0xe')](function(_0x1544f2){_0x4708f7[_0xe7fb('0xa')]=_0x1544f2;if(_0x5ebc87[_0xe7fb('0x18')][_0xe7fb('0x38')]){_0x546463[_0xe7fb('0x39')]=[{'all':!![]}];}return db[_0xe7fb('0x37')][_0xe7fb('0x3a')](_0x546463);})['then'](function(_0x261ec5){_0x4708f7[_0xe7fb('0x3b')]=_0x261ec5;return _0x4708f7;})[_0xe7fb('0xe')](respondWithFilteredResult(_0x293a47,_0x546463))[_0xe7fb('0x3c')](handleError(_0x293a47,null));};exports['show']=function(_0x3426a9,_0x186418){var _0xd472d={'raw':!![],'where':{'id':_0x3426a9['params']['id']}},_0x413a13={};_0x413a13[_0xe7fb('0x1a')]=_[_0xe7fb('0x17')](db[_0xe7fb('0x37')][_0xe7fb('0x14')]);_0x413a13[_0xe7fb('0x18')]=_[_0xe7fb('0x17')](_0x3426a9['query']);_0x413a13[_0xe7fb('0x19')]=_[_0xe7fb('0x2b')](_0x413a13[_0xe7fb('0x1a')],_0x413a13['query']);_0xd472d[_0xe7fb('0x2a')]=_[_0xe7fb('0x2b')](_0x413a13['model'],qs['fields'](_0x3426a9['query']['fields']));_0xd472d['attributes']=_0xd472d[_0xe7fb('0x2a')][_0xe7fb('0x2d')]?_0xd472d[_0xe7fb('0x2a')]:_0x413a13['model'];if(_0x3426a9[_0xe7fb('0x18')]['includeAll']){_0xd472d[_0xe7fb('0x39')]=[{'all':!![]}];}_0xd472d=_[_0xe7fb('0x35')]({},_0xd472d,_0x3426a9['options']);return db[_0xe7fb('0x37')][_0xe7fb('0x3d')](_0xd472d)[_0xe7fb('0xe')](handleEntityNotFound(_0x186418,null))[_0xe7fb('0xe')](respondWithResult(_0x186418,null))['catch'](handleError(_0x186418,null));};exports[_0xe7fb('0x3e')]=function(_0x694ee9,_0x1b8a34){return db['CmHopper'][_0xe7fb('0x3e')](_0x694ee9[_0xe7fb('0x3f')],{})[_0xe7fb('0xe')](respondWithResult(_0x1b8a34,0xc9))[_0xe7fb('0x3c')](handleError(_0x1b8a34,null));};exports[_0xe7fb('0xd')]=function(_0x5a1ce1,_0x2eb999){if(_0x5a1ce1['body']['id']){delete _0x5a1ce1[_0xe7fb('0x3f')]['id'];}return db[_0xe7fb('0x37')][_0xe7fb('0x3d')]({'where':{'id':_0x5a1ce1[_0xe7fb('0x40')]['id']}})[_0xe7fb('0xe')](handleEntityNotFound(_0x2eb999,null))['then'](saveUpdates(_0x5a1ce1[_0xe7fb('0x3f')],null))['then'](respondWithResult(_0x2eb999,null))['catch'](handleError(_0x2eb999,null));};exports[_0xe7fb('0x41')]=function(_0x3d740f,_0x16327f){return db['CmHopper'][_0xe7fb('0x41')]()[_0xe7fb('0xe')](respondWithResult(_0x16327f,null))['catch'](handleError(_0x16327f,null));};exports['destroy']=function(_0x284bcb,_0x42270b){var _0x1cbf34;var _0x3dd6bf=_0x284bcb[_0xe7fb('0x40')]['id'];return db[_0xe7fb('0x37')][_0xe7fb('0x3d')]({'where':{'id':_0x284bcb[_0xe7fb('0x40')]['id']}})['then'](handleEntityNotFound(_0x42270b,null))[_0xe7fb('0xe')](function(_0x5cc28f){if(_0x5cc28f){return _0x5cc28f[_0xe7fb('0x42')]()[_0xe7fb('0xe')](function(_0x5cedfb){return _0x5cedfb;});}})[_0xe7fb('0xe')](function(_0x5efd24){_0x1cbf34=_0x5efd24;if(_0x5efd24){if(_0x5efd24[_0xe7fb('0x43')]||_0x5efd24['CampaignId']){return db[_0x5efd24[_0xe7fb('0x43')]?'VoiceQueue':_0xe7fb('0x44')]['find']({'where':{'id':_0x5efd24[_0xe7fb('0x43')]?_0x5efd24[_0xe7fb('0x43')]:_0x5efd24[_0xe7fb('0x45')]},'attributes':['id',_0xe7fb('0x11')],'raw':!![]});}}})[_0xe7fb('0xe')](function(_0x2f959d){var _0x2f4760={};if(_0x2f959d){_['merge'](_0x2f4760,_['omit'](_0x1cbf34[_0xe7fb('0x46')],['createdAt','updatedAt','id']));_0x2f4760['state']=0x15;_0x2f4760['statedesc']='deleted';_0x2f4760[_0xe7fb('0x47')]=_0x2f959d[_0xe7fb('0x11')];_0x2f4760[_0xe7fb('0x48')]=_0x284bcb[_0xe7fb('0x49')]['name'];_0x2f4760[_0xe7fb('0x4a')]=_0x284bcb[_0xe7fb('0x49')]['id'];_0x2f4760[_0xe7fb('0x4b')]=!![];_0x2f4760['deletedat']=moment()['format'](_0xe7fb('0x4c'));_0x2f4760[_0xe7fb('0x4d')]=_0x1cbf34[_0xe7fb('0x4e')];_0x2f4760['campaigntype']=_0x1cbf34[_0xe7fb('0x43')]?_0xe7fb('0x4f'):_0xe7fb('0x50');return db[_0xe7fb('0x51')]['find']({'where':{'id':_0x2f4760['ContactId']},'attributes':[_0xe7fb('0x52'),_0xe7fb('0x53')]})[_0xe7fb('0xe')](function(_0x2f61b1){if(!_[_0xe7fb('0x54')](_0x42270b)&&!_['isNil'](_0x2f61b1[_0xe7fb('0x52')])){_0x2f4760[_0xe7fb('0x55')]=_0x2f61b1[_0xe7fb('0x52')];if(!_['isNil'](_0x2f61b1['lastName'])){_0x2f4760[_0xe7fb('0x55')]+='\x20'+_0x2f61b1[_0xe7fb('0x53')];}}})[_0xe7fb('0x56')](function(){return db[_0xe7fb('0x57')][_0xe7fb('0x3e')](_0x2f4760);});}})[_0xe7fb('0xe')](function(_0x585b7c){return db[_0xe7fb('0x58')][_0xe7fb('0x42')]({'where':{'CmHopperId':_0x3dd6bf}});})[_0xe7fb('0xe')](function(){return _0x42270b[_0xe7fb('0x5')](0xcc)[_0xe7fb('0x59')]();})[_0xe7fb('0x3c')](handleError(_0x42270b,null));};exports['getPreview']=function(_0x2e457c,_0x526f09){var _0x1eda1d=[];return db[_0xe7fb('0x51')][_0xe7fb('0x41')]()[_0xe7fb('0xe')](function(_0x5925e6){_0x1eda1d=_['keys'](_0x5925e6);return _0x2e457c[_0xe7fb('0x49')][_0xe7fb('0x5a')]({'where':{'type':_0xe7fb('0x5b'),'dialActive':!![],'dialMethod':_0xe7fb('0x5c')},'attributes':['id',_0xe7fb('0x5d'),'dialPreviewAutoRecallMe'],'raw':!![]});})[_0xe7fb('0xe')](function(_0x58d4ec){if(_0x58d4ec&&_0x58d4ec[_0xe7fb('0x2d')]){return db['sequelize']['transaction'](function(_0xc13fac){var _0x203da3={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xe7fb('0x5e')]('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_[_0xe7fb('0x13')](_0x58d4ec,'id')},'$or':[{'UserId':null},{'UserId':_0x2e457c[_0xe7fb('0x49')]['id']}]};var _0x3401e0={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x58d4ec)[_0xe7fb('0x33')]([_0xe7fb('0x5f'),0x0])['map']('id')[_0xe7fb('0x60')]()},'$or':[{'UserId':null},{'UserId':_0x2e457c[_0xe7fb('0x49')]['id']}]};var _0x5151ec={'$or':[_0x203da3,_0x3401e0]};var _0x4136ae=[];if(_0x2e457c[_0xe7fb('0x3f')]['direction']&&_0x2e457c[_0xe7fb('0x3f')]['direction']===_0xe7fb('0x61')){if(!_[_0xe7fb('0x62')](_0x2e457c[_0xe7fb('0x3f')]['hopperIds'])){_0x5151ec['id']={'$in':_0x2e457c[_0xe7fb('0x3f')][_0xe7fb('0x63')]};}_0x4136ae=[[_0xe7fb('0x64'),_0xe7fb('0x65')],[_0xe7fb('0x66'),_0x58d4ec[0x0][_0xe7fb('0x5d')]===_0xe7fb('0x65')?_0xe7fb('0x67'):'ASC'],db['sequelize'][_0xe7fb('0x68')](_0xe7fb('0x69')),['id',_0xe7fb('0x67')]];}else{if(!_['isEmpty'](_0x2e457c['body'][_0xe7fb('0x63')])){_0x5151ec['id']={'$notIn':_0x2e457c[_0xe7fb('0x3f')][_0xe7fb('0x63')]};}_0x4136ae=[[_0xe7fb('0x64'),_0xe7fb('0x67')],[_0xe7fb('0x66'),_0x58d4ec[0x0][_0xe7fb('0x5d')]],db[_0xe7fb('0x6a')][_0xe7fb('0x68')](_0xe7fb('0x6b')),['id',_0xe7fb('0x65')]];}return db[_0xe7fb('0x37')][_0xe7fb('0x6c')]({'attributes':['id','scheduledat','phone',_0xe7fb('0x6d')],'where':_0x5151ec,'order':_0x4136ae,'transaction':_0xc13fac,'lock':_0xc13fac[_0xe7fb('0x6e')][_0xe7fb('0x6f')],'include':[{'model':db[_0xe7fb('0x51')],'as':_0xe7fb('0x70'),'attributes':_0x1eda1d,'include':[{'model':db['CmCompany'],'as':_0xe7fb('0x71'),'attributes':['id',_0xe7fb('0x11')]}]},{'model':db[_0xe7fb('0x72')],'as':_0xe7fb('0x73'),'attributes':['id',_0xe7fb('0x11')]},{'model':db[_0xe7fb('0x74')],'as':_0xe7fb('0x75'),'attributes':['id',_0xe7fb('0x11'),_0xe7fb('0x76')]}]})['then'](function(_0xc13cb){if(_0xc13cb){return _0xc13cb['update']({'UserId':_0x2e457c[_0xe7fb('0x49')]['id']},{'transaction':_0xc13fac});}});});}})[_0xe7fb('0xe')](handleEntityNotFound(_0x526f09,null))[_0xe7fb('0xe')](respondWithResult(_0x526f09,null))[_0xe7fb('0x3c')](handleError(_0x526f09,null));};exports[_0xe7fb('0x77')]=function(_0x4e5f55,_0x3882b5,_0x38e66a){var _0x4fd57a=[];var _0x2bf4aa=_0x4e5f55[_0xe7fb('0x40')]['id'];var _0x172547=_0x4e5f55[_0xe7fb('0x49')]['id'];return db[_0xe7fb('0x51')][_0xe7fb('0x41')]()[_0xe7fb('0xe')](function(_0x2d2373){_0x4fd57a=_[_0xe7fb('0x17')](_0x2d2373);return db[_0xe7fb('0x6a')][_0xe7fb('0x78')](function(_0x52b8a1){const _0x4b5f7e={'id':_0x2bf4aa};return db['CmHopper'][_0xe7fb('0x6c')]({'attributes':['id',_0xe7fb('0x79'),_0xe7fb('0x6d')],'where':_0x4b5f7e,'transaction':_0x52b8a1,'lock':_0x52b8a1[_0xe7fb('0x6e')]['UPDATE'],'include':[{'model':db[_0xe7fb('0x51')],'as':_0xe7fb('0x70'),'attributes':_0x4fd57a,'include':[{'model':db[_0xe7fb('0x7a')],'as':_0xe7fb('0x71'),'attributes':['id','name']}]},{'model':db[_0xe7fb('0x72')],'as':'List','attributes':['id',_0xe7fb('0x11')]},{'model':db[_0xe7fb('0x74')],'as':_0xe7fb('0x75'),'attributes':['id',_0xe7fb('0x11'),_0xe7fb('0x76')]}]})['then'](function(_0x3ffd6c){if(_0x3ffd6c){return _0x3ffd6c['update']({'UserId':_0x172547},{'transaction':_0x52b8a1});}});});})[_0xe7fb('0xe')](handleEntityNotFound(_0x3882b5,null))['then'](respondWithResult(_0x3882b5,null))[_0xe7fb('0x3c')](handleError(_0x3882b5,null));};exports[_0xe7fb('0x7b')]=function(_0x4c37cd,_0x2b6d69){return _0x4c37cd[_0xe7fb('0x49')][_0xe7fb('0x5a')]({'where':{'type':_0xe7fb('0x5b'),'dialActive':!![],'dialMethod':'preview'},'attributes':['id'],'raw':!![]})[_0xe7fb('0xe')](function(_0x277335){if(_0x277335&&_0x277335[_0xe7fb('0x2d')]){return db['CmHopper'][_0xe7fb('0xa')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_['map'](_0x277335,'id')},'$or':[{'UserId':null},{'UserId':_0x4c37cd[_0xe7fb('0x49')]['id']}]}});}return 0x0;})[_0xe7fb('0xe')](function(_0x4a8a65){if(!_[_0xe7fb('0x54')](_0x4a8a65)&&_[_0xe7fb('0x7c')](_0x4a8a65)){return _0x2b6d69[_0xe7fb('0x5')](0xc8)[_0xe7fb('0x6')]({'contacts':_0x4a8a65});}else{logger[_0xe7fb('0x7d')](_0xe7fb('0x7e'),_0xe7fb('0x7b'),0x194,_0xe7fb('0x7f'));_0x2b6d69[_0xe7fb('0xf')](0x194);}})[_0xe7fb('0x3c')](handleError(_0x2b6d69,null));};exports[_0xe7fb('0x80')]=function(_0x195d8b,_0x3d1f34){var _0x27c97a=shared[_0xe7fb('0x81')];var _0x30abe3=[];_[_0xe7fb('0x13')](_0x27c97a,function(_0x3ca3d1){_0x30abe3[_0xe7fb('0x82')]({'id':_0x3ca3d1[_0xe7fb('0x11')],'name':_0x3ca3d1['name'],'utcOffset':_0x3ca3d1[_0xe7fb('0x83')]});});return _0x3d1f34[_0xe7fb('0x5')](0xc8)[_0xe7fb('0x6')]({'tz':_0x30abe3});};exports[_0xe7fb('0x84')]=function(_0x19fe06,_0x44d443){var _0x320fba=shared['timezones'];var _0x4c0e3e={};if(!_[_0xe7fb('0x54')](_0x320fba[_0x19fe06['body']['id']]))_0x4c0e3e=_0x320fba[_0x19fe06[_0xe7fb('0x3f')]['id']];return _0x44d443[_0xe7fb('0x5')](0xc8)['json'](_0x4c0e3e);};
\ No newline at end of file
index 12c8cf5..15976cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6ac=['./cmHopper.attributes','exports','CmHopper','cm_hopper','scheduledat','phone','priority','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0xc6ac,0x15b));var _0xcc6a=function(_0x5ed16d,_0x1a418e){_0x5ed16d=_0x5ed16d-0x0;var _0x4c4630=_0xc6ac[_0x5ed16d];return _0x4c4630;};'use strict';var _=require(_0xcc6a('0x0'));var util=require(_0xcc6a('0x1'));var logger=require(_0xcc6a('0x2'))(_0xcc6a('0x3'));var moment=require(_0xcc6a('0x4'));var BPromise=require(_0xcc6a('0x5'));var rp=require(_0xcc6a('0x6'));var fs=require('fs');var path=require(_0xcc6a('0x7'));var rimraf=require(_0xcc6a('0x8'));var config=require(_0xcc6a('0x9'));var attributes=require(_0xcc6a('0xa'));module[_0xcc6a('0xb')]=function(_0x12330e,_0x197bd7){return _0x12330e['define'](_0xcc6a('0xc'),attributes,{'tableName':_0xcc6a('0xd'),'paranoid':![],'indexes':[{'name':_0xcc6a('0xe'),'fields':['scheduledat']},{'name':_0xcc6a('0xf'),'fields':[_0xcc6a('0xf')]},{'name':_0xcc6a('0x10'),'fields':[_0xcc6a('0x10')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5fc3=['scheduledat','phone','priority','lodash','util','api','moment','bluebird','request-promise','path','../../config/environment','./cmHopper.attributes','exports','define','cm_hopper'];(function(_0x2a8b8f,_0x3a3fb9){var _0x5808ec=function(_0x3ae25a){while(--_0x3ae25a){_0x2a8b8f['push'](_0x2a8b8f['shift']());}};_0x5808ec(++_0x3a3fb9);}(_0x5fc3,0xa8));var _0x35fc=function(_0x2dc96f,_0x459058){_0x2dc96f=_0x2dc96f-0x0;var _0xd012da=_0x5fc3[_0x2dc96f];return _0xd012da;};'use strict';var _=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var logger=require('../../config/logger')(_0x35fc('0x2'));var moment=require(_0x35fc('0x3'));var BPromise=require(_0x35fc('0x4'));var rp=require(_0x35fc('0x5'));var fs=require('fs');var path=require(_0x35fc('0x6'));var rimraf=require('rimraf');var config=require(_0x35fc('0x7'));var attributes=require(_0x35fc('0x8'));module[_0x35fc('0x9')]=function(_0x5b85ad,_0x5754be){return _0x5b85ad[_0x35fc('0xa')]('CmHopper',attributes,{'tableName':_0x35fc('0xb'),'paranoid':![],'indexes':[{'name':_0x35fc('0xc'),'fields':[_0x35fc('0xc')]},{'name':_0x35fc('0xd'),'fields':[_0x35fc('0xd')]},{'name':_0x35fc('0xe'),'fields':[_0x35fc('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 81b2a4f..6249e99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc86=['body','stringify','catch','message','DestroyCmHopper','GetContactDialer','CmContact','transaction','LOCK','UPDATE','Contact','User','Agent','name','voicePause','length','UserId','includes','push','update','all','GetContactDialer\x20hopperId\x20[%s]\x20-\x20contactId\x20[%s]\x20-\x20active\x20status\x20[%s]','dataValues','active','MoveContactManagedDialer','sequelize','CmHopperFinal','MoveContactManagedDialer\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','destroy','CountReScheduled','literal','format','YYYY-MM-DD\x20HH:mm:ss','contactsRescheduled','GetContactRecallMe','describe','order','GetCmHopperPreview','keys','GetContactByPhone','findOne','phone','dialTimezone','DESC','getContactByPhone','ResetActiveCalls','CmHopperHandlePreviewRecallNotifications','voiceQueueIds','interval','availableAgentsIds','\x20MINUTE','NOW()','List','lodash','../../mysqldb','../../config/logger','CmHopper','findAll','options','raw','where','attributes','limit','include','map','model','then','info','GetCmHopper','debug','error','find','ShowCmHopper','CreateCmHopper','create','UpdateCmHopper'];(function(_0x4cea3c,_0x407da8){var _0x32c9bb=function(_0x15d61a){while(--_0x15d61a){_0x4cea3c['push'](_0x4cea3c['shift']());}};_0x32c9bb(++_0x407da8);}(_0xbc86,0x119));var _0x6bc8=function(_0x54daf0,_0x50da28){_0x54daf0=_0x54daf0-0x0;var _0x14ff84=_0xbc86[_0x54daf0];return _0x14ff84;};'use strict';var _=require(_0x6bc8('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var db=require(_0x6bc8('0x1'))['db'];var logger=require(_0x6bc8('0x2'))('rpc');exports['GetCmHopper']=function(_0x4e80b4){var _0x47ceaa=this;return new Promise(function(_0xe0add2,_0x32a193){return db[_0x6bc8('0x3')][_0x6bc8('0x4')]({'raw':_0x4e80b4[_0x6bc8('0x5')]?_0x4e80b4[_0x6bc8('0x5')][_0x6bc8('0x6')]===undefined?!![]:![]:!![],'where':_0x4e80b4[_0x6bc8('0x5')]?_0x4e80b4['options'][_0x6bc8('0x7')]||null:null,'attributes':_0x4e80b4['options']?_0x4e80b4[_0x6bc8('0x5')][_0x6bc8('0x8')]||null:null,'limit':_0x4e80b4[_0x6bc8('0x5')]?_0x4e80b4[_0x6bc8('0x5')][_0x6bc8('0x9')]||null:null,'include':_0x4e80b4[_0x6bc8('0x5')]?_0x4e80b4[_0x6bc8('0x5')][_0x6bc8('0xa')]?_[_0x6bc8('0xb')](_0x4e80b4[_0x6bc8('0x5')][_0x6bc8('0xa')],function(_0x2baede){return{'model':db[_0x2baede[_0x6bc8('0xc')]],'as':_0x2baede['as'],'attributes':_0x2baede['attributes'],'include':_0x2baede[_0x6bc8('0xa')]?_[_0x6bc8('0xb')](_0x2baede[_0x6bc8('0xa')],function(_0x2f1e23){return{'model':db[_0x2f1e23[_0x6bc8('0xc')]],'as':_0x2f1e23['as'],'attributes':_0x2f1e23[_0x6bc8('0x8')],'include':_0x2f1e23[_0x6bc8('0xa')]?_['map'](_0x2f1e23['include'],function(_0xf5ddd4){return{'model':db[_0xf5ddd4['model']],'as':_0xf5ddd4['as'],'attributes':_0xf5ddd4['attributes']};}):[]};}):[]};}):[]:[]})[_0x6bc8('0xd')](function(_0x317cf0){logger[_0x6bc8('0xe')](_0x6bc8('0xf'),_0x4e80b4);logger[_0x6bc8('0x10')](_0x6bc8('0xf'),_0x4e80b4,JSON['stringify'](_0x317cf0));_0xe0add2(_0x317cf0);})['catch'](function(_0x4510d9){logger[_0x6bc8('0x11')]('GetCmHopper',_0x4510d9['message'],_0x4e80b4);_0x32a193(_0x47ceaa[_0x6bc8('0x11')](0x1f4,_0x4510d9['message']));});});};exports['ShowCmHopper']=function(_0x55cdf6){var _0x455f8a=this;return new Promise(function(_0x36e328,_0x26e0ad){return db[_0x6bc8('0x3')][_0x6bc8('0x12')]({'raw':_0x55cdf6[_0x6bc8('0x5')]?_0x55cdf6[_0x6bc8('0x5')][_0x6bc8('0x6')]===undefined?!![]:![]:!![],'where':_0x55cdf6[_0x6bc8('0x5')]?_0x55cdf6[_0x6bc8('0x5')][_0x6bc8('0x7')]||null:null,'attributes':_0x55cdf6[_0x6bc8('0x5')]?_0x55cdf6[_0x6bc8('0x5')][_0x6bc8('0x8')]||null:null,'include':_0x55cdf6[_0x6bc8('0x5')]?_0x55cdf6[_0x6bc8('0x5')][_0x6bc8('0xa')]?_[_0x6bc8('0xb')](_0x55cdf6['options'][_0x6bc8('0xa')],function(_0x3f14cc){return{'model':db[_0x3f14cc[_0x6bc8('0xc')]],'as':_0x3f14cc['as'],'attributes':_0x3f14cc['attributes'],'include':_0x3f14cc[_0x6bc8('0xa')]?_[_0x6bc8('0xb')](_0x3f14cc[_0x6bc8('0xa')],function(_0x2de241){return{'model':db[_0x2de241[_0x6bc8('0xc')]],'as':_0x2de241['as'],'attributes':_0x2de241[_0x6bc8('0x8')],'include':_0x2de241[_0x6bc8('0xa')]?_[_0x6bc8('0xb')](_0x2de241[_0x6bc8('0xa')],function(_0x45e038){return{'model':db[_0x45e038[_0x6bc8('0xc')]],'as':_0x45e038['as'],'attributes':_0x45e038[_0x6bc8('0x8')]};}):[]};}):[]};}):[]:[]})[_0x6bc8('0xd')](function(_0x13e74a){logger[_0x6bc8('0xe')]('ShowCmHopper',_0x55cdf6);logger[_0x6bc8('0x10')](_0x6bc8('0x13'),_0x55cdf6,JSON['stringify'](_0x13e74a));_0x36e328(_0x13e74a);})['catch'](function(_0x3c4c55){logger['error'](_0x6bc8('0x13'),_0x3c4c55['message'],_0x55cdf6);_0x26e0ad(_0x455f8a[_0x6bc8('0x11')](0x1f4,_0x3c4c55['message']));});});};exports[_0x6bc8('0x14')]=function(_0x2ae669){var _0x5c6628=this;return new Promise(function(_0x55319a,_0x5b685f){return db[_0x6bc8('0x3')][_0x6bc8('0x15')](_0x2ae669['body'],{'raw':_0x2ae669['options']?_0x2ae669[_0x6bc8('0x5')][_0x6bc8('0x6')]===undefined?!![]:![]:!![]})[_0x6bc8('0xd')](function(_0x228cbf){logger[_0x6bc8('0xe')](_0x6bc8('0x14'),_0x2ae669);logger[_0x6bc8('0x10')](_0x6bc8('0x14'),_0x2ae669,JSON['stringify'](_0x228cbf));_0x55319a(_0x228cbf);})['catch'](function(_0x14158d){logger[_0x6bc8('0x11')](_0x6bc8('0x14'),_0x14158d['message'],_0x2ae669);_0x5b685f(_0x5c6628[_0x6bc8('0x11')](0x1f4,_0x14158d['message']));});});};exports[_0x6bc8('0x16')]=function(_0x477c50){var _0x5b153e=this;return new Promise(function(_0x28de84,_0x4bac33){return db[_0x6bc8('0x3')]['update'](_0x477c50[_0x6bc8('0x17')],{'raw':_0x477c50['options']?_0x477c50[_0x6bc8('0x5')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x477c50[_0x6bc8('0x5')]?_0x477c50[_0x6bc8('0x5')][_0x6bc8('0x7')]||null:null,'attributes':_0x477c50['options']?_0x477c50[_0x6bc8('0x5')][_0x6bc8('0x8')]||null:null,'limit':_0x477c50[_0x6bc8('0x5')]?_0x477c50[_0x6bc8('0x5')]['limit']||null:null})[_0x6bc8('0xd')](function(_0x43b8c8){logger[_0x6bc8('0xe')](_0x6bc8('0x16'),_0x477c50);logger[_0x6bc8('0xe')]('UpdateCmHopper\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]',JSON[_0x6bc8('0x18')](_0x477c50['options'][_0x6bc8('0x7')]),_0x477c50[_0x6bc8('0x17')]['active']);logger[_0x6bc8('0x10')](_0x6bc8('0x16'),_0x477c50,JSON[_0x6bc8('0x18')](_0x43b8c8));_0x28de84(_0x43b8c8);})[_0x6bc8('0x19')](function(_0x583f96){logger[_0x6bc8('0x11')](_0x6bc8('0x16'),_0x583f96[_0x6bc8('0x1a')],_0x477c50);_0x4bac33(_0x5b153e[_0x6bc8('0x11')](0x1f4,_0x583f96[_0x6bc8('0x1a')]));});});};exports[_0x6bc8('0x1b')]=function(_0x505399){var _0x472b31=this;return new Promise(function(_0xdd966d,_0x4ee74c){return db[_0x6bc8('0x3')]['destroy']({'where':_0x505399[_0x6bc8('0x5')]?_0x505399[_0x6bc8('0x5')][_0x6bc8('0x7')]||null:null})[_0x6bc8('0xd')](function(_0x20305e){logger[_0x6bc8('0xe')](_0x6bc8('0x1b'),_0x505399);logger['debug']('DestroyCmHopper',_0x505399,JSON['stringify'](_0x20305e));_0xdd966d(_0x20305e);})[_0x6bc8('0x19')](function(_0x4f829c){logger[_0x6bc8('0x11')]('DestroyCmHopper',_0x4f829c[_0x6bc8('0x1a')],_0x505399);_0x4ee74c(_0x472b31['error'](0x1f4,_0x4f829c[_0x6bc8('0x1a')]));});});};exports[_0x6bc8('0x1c')]=function(_0x8db278){var _0x8e82d8=this;return new Promise(function(_0x4edbff,_0x73b570){return db[_0x6bc8('0x1d')]['describe']()['then'](function(_0x15ab48){return db['sequelize'][_0x6bc8('0x1e')](function(_0x33296b){return db[_0x6bc8('0x3')][_0x6bc8('0x4')]({'where':_0x8db278[_0x6bc8('0x5')]?_0x8db278['options']['where']||null:null,'attributes':_0x8db278[_0x6bc8('0x5')]?_0x8db278[_0x6bc8('0x5')][_0x6bc8('0x8')]||null:null,'limit':_0x8db278[_0x6bc8('0x5')]?_0x8db278[_0x6bc8('0x5')][_0x6bc8('0x9')]||null:null,'order':_0x8db278[_0x6bc8('0x5')]?_0x8db278[_0x6bc8('0x5')]['order']||null:null,'transaction':_0x33296b,'lock':_0x33296b[_0x6bc8('0x1f')][_0x6bc8('0x20')],'include':[{'model':db[_0x6bc8('0x1d')],'as':_0x6bc8('0x21'),'attributes':_['keys'](_0x15ab48)},{'model':db[_0x6bc8('0x22')],'as':_0x6bc8('0x23'),'attributes':['id',_0x6bc8('0x24'),_0x6bc8('0x25')]}]})[_0x6bc8('0xd')](function(_0x4558c7){var _0x9998fd=[];var _0x5a13e1=[];for(var _0x1c1eba=0x0;_0x1c1eba<_0x4558c7[_0x6bc8('0x26')];_0x1c1eba+=0x1){var _0x296990=_0x4558c7[_0x1c1eba][_0x6bc8('0x27')];if(_0x296990===null){_0x9998fd['push'](_0x4558c7[_0x1c1eba]['update'](_0x8db278[_0x6bc8('0x17')],{'transaction':_0x33296b}));}else if(!_0x5a13e1[_0x6bc8('0x28')](_0x296990)){_0x5a13e1['push'](_0x296990);_0x9998fd[_0x6bc8('0x29')](_0x4558c7[_0x1c1eba][_0x6bc8('0x2a')](_0x8db278[_0x6bc8('0x17')],{'transaction':_0x33296b}));}}return BPromise[_0x6bc8('0x2b')](_0x9998fd);});})[_0x6bc8('0xd')](function(_0x37766e){logger['info'](_0x6bc8('0x1c'),_0x8db278);if(_0x37766e['length']>0x0){logger[_0x6bc8('0xe')](_0x6bc8('0x2c'),_0x37766e[0x0][_0x6bc8('0x2d')]['id'],_0x37766e[0x0][_0x6bc8('0x2d')]['ContactId'],_0x37766e[0x0][_0x6bc8('0x2d')][_0x6bc8('0x2e')]);}logger[_0x6bc8('0x10')](_0x6bc8('0x1c'),_0x8db278,JSON[_0x6bc8('0x18')](_0x37766e));_0x4edbff(_0x37766e);})[_0x6bc8('0x19')](function(_0xecfc7a){logger[_0x6bc8('0x11')](_0x6bc8('0x1c'),_0xecfc7a['message'],_0x8db278);_0x73b570(_0x8e82d8['error'](0x1f4,_0xecfc7a[_0x6bc8('0x1a')]));});});});};exports[_0x6bc8('0x2f')]=function(_0x1fe51e){var _0xcb4996=this;return new Promise(function(_0x2502d2,_0x2a4125){return db[_0x6bc8('0x30')][_0x6bc8('0x1e')](function(_0x54e959){return db[_0x6bc8('0x31')][_0x6bc8('0x15')](_0x1fe51e[_0x6bc8('0x17')],{'raw':_0x1fe51e[_0x6bc8('0x5')]?_0x1fe51e[_0x6bc8('0x5')][_0x6bc8('0x6')]===undefined?!![]:![]:!![],'transaction':_0x54e959})[_0x6bc8('0xd')](function(){logger['info'](_0x6bc8('0x32'),JSON[_0x6bc8('0x18')](_0x1fe51e[_0x6bc8('0x5')][_0x6bc8('0x7')]),_0x1fe51e[_0x6bc8('0x5')][_0x6bc8('0x7')][_0x6bc8('0x2e')]);return db[_0x6bc8('0x3')][_0x6bc8('0x33')]({'where':_0x1fe51e[_0x6bc8('0x5')]?_0x1fe51e[_0x6bc8('0x5')][_0x6bc8('0x7')]||null:null,'transaction':_0x54e959});});})[_0x6bc8('0xd')](function(_0x41bb36){logger[_0x6bc8('0xe')](_0x6bc8('0x2f'),_0x1fe51e);logger[_0x6bc8('0x10')](_0x6bc8('0x2f'),_0x1fe51e,JSON[_0x6bc8('0x18')](_0x41bb36));_0x2502d2(_0x41bb36);})[_0x6bc8('0x19')](function(_0xa516f3){logger['error'](_0x6bc8('0x2f'),_0xa516f3[_0x6bc8('0x1a')],_0x1fe51e);_0x2a4125(_0xcb4996[_0x6bc8('0x11')](0x1f4,_0xa516f3[_0x6bc8('0x1a')]));});});};exports[_0x6bc8('0x34')]=function(_0x26e473){var _0x1cee31=this;return new Promise(function(_0x556013,_0x144426){return db[_0x6bc8('0x3')]['findAll']({'raw':_0x26e473[_0x6bc8('0x5')]?_0x26e473[_0x6bc8('0x5')][_0x6bc8('0x6')]===undefined?!![]:![]:!![],'where':_0x26e473[_0x6bc8('0x5')]?_0x26e473[_0x6bc8('0x5')][_0x6bc8('0x7')]||null:null,'attributes':[[db[_0x6bc8('0x30')]['fn']('COUNT',db[_0x6bc8('0x30')]['fn']('IF',db['sequelize'][_0x6bc8('0x35')]('`scheduledat`\x20>=\x20'+util[_0x6bc8('0x36')]('\x22%s\x22',moment()[_0x6bc8('0x36')](_0x6bc8('0x37')))+'\x20,\x201,\x20null'))),_0x6bc8('0x38')]]})['then'](function(_0x1c5734){logger[_0x6bc8('0xe')](_0x6bc8('0x34'),_0x26e473);logger[_0x6bc8('0x10')](_0x6bc8('0x34'),_0x26e473,JSON[_0x6bc8('0x18')](_0x1c5734));_0x556013(_0x1c5734);})[_0x6bc8('0x19')](function(_0x404360){logger[_0x6bc8('0x11')](_0x6bc8('0x34'),_0x404360['message'],_0x26e473);_0x144426(_0x1cee31[_0x6bc8('0x11')](0x1f4,_0x404360['message']));});});};exports[_0x6bc8('0x39')]=function(_0x4a5a79){var _0x68bf74=this;return new Promise(function(_0x23f6d6,_0x357896){return db[_0x6bc8('0x1d')][_0x6bc8('0x3a')]()[_0x6bc8('0xd')](function(){return db['sequelize']['transaction'](function(_0xc7a860){return db['CmHopper']['findAll']({'where':_0x4a5a79[_0x6bc8('0x5')]?_0x4a5a79[_0x6bc8('0x5')][_0x6bc8('0x7')]||null:null,'attributes':_0x4a5a79[_0x6bc8('0x5')]?_0x4a5a79[_0x6bc8('0x5')][_0x6bc8('0x8')]||null:null,'limit':0x1,'order':_0x4a5a79[_0x6bc8('0x5')]?_0x4a5a79['options'][_0x6bc8('0x3b')]||null:null,'group':db[_0x6bc8('0x3')][_0x6bc8('0x27')],'transaction':_0xc7a860,'lock':_0xc7a860[_0x6bc8('0x1f')][_0x6bc8('0x20')],'include':_0x4a5a79['options']?_0x4a5a79[_0x6bc8('0x5')][_0x6bc8('0xa')]?_[_0x6bc8('0xb')](_0x4a5a79[_0x6bc8('0x5')][_0x6bc8('0xa')],function(_0x1d3a4a){return{'model':db[_0x1d3a4a['model']],'as':_0x1d3a4a['as'],'attributes':_0x1d3a4a['attributes'],'include':_0x1d3a4a['include']?_[_0x6bc8('0xb')](_0x1d3a4a['include'],function(_0x2fa9d1){return{'model':db[_0x2fa9d1[_0x6bc8('0xc')]],'as':_0x2fa9d1['as'],'attributes':_0x2fa9d1[_0x6bc8('0x8')],'include':_0x2fa9d1[_0x6bc8('0xa')]?_[_0x6bc8('0xb')](_0x2fa9d1[_0x6bc8('0xa')],function(_0x4ab2cd){return{'model':db[_0x4ab2cd['model']],'as':_0x4ab2cd['as'],'attributes':_0x4ab2cd['attributes']};}):[]};}):[]};}):[]:[]})[_0x6bc8('0xd')](function(_0x927ba6){var _0x4c3872=[];for(var _0x1f149e=0x0;_0x1f149e<_0x927ba6[_0x6bc8('0x26')];_0x1f149e+=0x1){_0x4c3872[_0x6bc8('0x29')](_0x927ba6[_0x1f149e][_0x6bc8('0x2a')](_0x4a5a79[_0x6bc8('0x17')],{'transaction':_0xc7a860}));}return BPromise[_0x6bc8('0x2b')](_0x4c3872);});})['then'](function(_0x39f6ab){logger['info'](_0x6bc8('0x39'),_0x4a5a79);logger[_0x6bc8('0x10')]('GetContactRecallMe',_0x4a5a79,JSON[_0x6bc8('0x18')](_0x39f6ab));_0x23f6d6(_0x39f6ab);})[_0x6bc8('0x19')](function(_0xa25b24){logger['error'](_0x6bc8('0x39'),_0xa25b24[_0x6bc8('0x1a')],_0x4a5a79);_0x357896(_0x68bf74['error'](0x1f4,_0xa25b24[_0x6bc8('0x1a')]));});});});};exports[_0x6bc8('0x3c')]=function(_0x282245){var _0x3043fb=this;return new Promise(function(_0x5bb69b,_0x4c8a88){db['CmContact'][_0x6bc8('0x3a')]()[_0x6bc8('0xd')](function(_0x1c00ff){return db['CmHopper'][_0x6bc8('0x4')]({'raw':_0x282245[_0x6bc8('0x5')]?_0x282245[_0x6bc8('0x5')]['raw']===undefined?!![]:![]:!![],'where':_0x282245['options']?_0x282245[_0x6bc8('0x5')][_0x6bc8('0x7')]||null:null,'attributes':_0x282245[_0x6bc8('0x5')]?_0x282245[_0x6bc8('0x5')]['attributes']||null:null,'limit':_0x282245[_0x6bc8('0x5')]?_0x282245[_0x6bc8('0x5')][_0x6bc8('0x9')]||null:null,'include':_0x282245[_0x6bc8('0x5')]?_0x282245[_0x6bc8('0x5')][_0x6bc8('0xa')]?_[_0x6bc8('0xb')](_0x282245['options'][_0x6bc8('0xa')],function(_0xb59a44){return{'model':db[_0xb59a44[_0x6bc8('0xc')]],'as':_0xb59a44['as'],'attributes':_0xb59a44['as']===_0x6bc8('0x21')?_[_0x6bc8('0x3d')](_0x1c00ff):_0xb59a44[_0x6bc8('0x8')],'include':_0xb59a44[_0x6bc8('0xa')]?_['map'](_0xb59a44[_0x6bc8('0xa')],function(_0x3c22cc){return{'model':db[_0x3c22cc['model']],'as':_0x3c22cc['as'],'attributes':_0x3c22cc[_0x6bc8('0x8')],'include':_0x3c22cc[_0x6bc8('0xa')]?_[_0x6bc8('0xb')](_0x3c22cc['include'],function(_0x325869){return{'model':db[_0x325869[_0x6bc8('0xc')]],'as':_0x325869['as'],'attributes':_0x325869[_0x6bc8('0x8')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5f5415){logger['info'](_0x6bc8('0xf'),_0x282245);logger[_0x6bc8('0x10')]('GetCmHopper',_0x282245,JSON['stringify'](_0x5f5415));_0x5bb69b(_0x5f5415);})[_0x6bc8('0x19')](function(_0x2fa679){logger[_0x6bc8('0x11')](_0x6bc8('0xf'),_0x2fa679[_0x6bc8('0x1a')],_0x282245);_0x4c8a88(_0x3043fb['error'](0x1f4,_0x2fa679['message']));});});});};exports[_0x6bc8('0x3e')]=function(_0x36e8b0){var _0x3c1ce4=this;return new Promise(function(_0x31a821,_0xe1b509){return db[_0x6bc8('0x1d')][_0x6bc8('0x3f')]({'raw':!![],'where':{'phone':_0x36e8b0[_0x6bc8('0x5')][_0x6bc8('0x7')][_0x6bc8('0x40')]},'attributes':['id',_0x6bc8('0x41')],'order':[['id',_0x6bc8('0x42')]]})[_0x6bc8('0xd')](function(_0x21ac60){logger[_0x6bc8('0xe')]('getContactByPhone',_0x36e8b0);logger['debug'](_0x6bc8('0x43'),_0x36e8b0,JSON[_0x6bc8('0x18')](_0x21ac60));_0x31a821(_0x21ac60);})[_0x6bc8('0x19')](function(_0x37f248){logger['error'](_0x6bc8('0x43'),_0x37f248[_0x6bc8('0x1a')],_0x36e8b0);_0xe1b509(_0x3c1ce4[_0x6bc8('0x11')](0x1f4,_0x37f248['message']));});});};exports[_0x6bc8('0x44')]=function(_0x575fb7){var _0x578293=this;return new Promise(function(_0x1f8bbd,_0x58a1f1){return db[_0x6bc8('0x30')][_0x6bc8('0x1e')](function(_0x3c6f42){var _0x281bc1=_0x575fb7[_0x6bc8('0x5')]&&_0x575fb7[_0x6bc8('0x5')][_0x6bc8('0x7')]?_0x575fb7[_0x6bc8('0x5')][_0x6bc8('0x7')]:{};return db[_0x6bc8('0x3')][_0x6bc8('0x2a')](_0x575fb7[_0x6bc8('0x17')],{'where':_0x281bc1,'transaction':_0x3c6f42})[_0x6bc8('0xd')](function(_0x14cb85){logger[_0x6bc8('0xe')]('ResetActiveCalls',_0x575fb7);logger[_0x6bc8('0x10')](_0x6bc8('0x44'),_0x575fb7,JSON[_0x6bc8('0x18')](_0x14cb85));_0x1f8bbd(_0x14cb85);})['catch'](function(_0x240bad){logger[_0x6bc8('0x11')]('ResetActiveCalls',_0x240bad['message'],_0x575fb7);_0x58a1f1(_0x578293['error'](0x1f4,_0x240bad[_0x6bc8('0x1a')]));});});});};exports[_0x6bc8('0x45')]=function(_0x37442f){var _0x321bad=this;var _0x408af5=_0x37442f[_0x6bc8('0x17')]['where'][_0x6bc8('0x46')];var _0x451186=_0x37442f[_0x6bc8('0x17')][_0x6bc8('0x7')][_0x6bc8('0x47')];var _0x3be27=_0x37442f[_0x6bc8('0x17')][_0x6bc8('0x7')][_0x6bc8('0x48')];return new Promise(function(_0x90d9f9,_0x40dfe7){return db[_0x6bc8('0x3')][_0x6bc8('0x4')]({'where':{'voiceQueueId':{'$in':_0x408af5},'recallme':0x1,'active':0x0,'recallmeNotifiedDate':{'$eq':null},'scheduledat':{'$and':{'$lte':db['sequelize'][_0x6bc8('0x35')]('NOW()\x20+\x20INTERVAL\x20'+_0x451186+_0x6bc8('0x49')),'$gt':db[_0x6bc8('0x30')][_0x6bc8('0x35')](_0x6bc8('0x4a'))}},'UserId':{'$in':_0x3be27}},'include':[{'model':db[_0x6bc8('0x1d')],'as':_0x6bc8('0x21')},{'model':db[_0x6bc8('0x22')],'as':_0x6bc8('0x23'),'attributes':['id',_0x6bc8('0x24'),_0x6bc8('0x25')]},{'model':db['CmList'],'as':_0x6bc8('0x4b')}]})[_0x6bc8('0xd')](function(_0x328ccf){if(_0x328ccf[_0x6bc8('0x26')]>0x0){return db['sequelize']['transaction'](function(_0xe18ce9){return db[_0x6bc8('0x3')]['update']({'recallmeNotifiedDate':db['sequelize']['literal'](_0x6bc8('0x4a'))},{'where':{'id':{'$in':_[_0x6bc8('0xb')](_0x328ccf,'id')}},'transaction':_0xe18ce9})[_0x6bc8('0xd')](function(){_0x90d9f9(_0x328ccf);})[_0x6bc8('0x19')](function(_0x566d30){logger[_0x6bc8('0x11')]('CmHopperHandlePreviewRecallNotifications',_0x566d30[_0x6bc8('0x1a')],_0x37442f);_0x40dfe7(_0x321bad['error'](0x1f4,_0x566d30['message']));});})[_0x6bc8('0x19')](function(_0x1d0182){logger['error'](_0x6bc8('0x45'),_0x1d0182[_0x6bc8('0x1a')],_0x37442f);_0x40dfe7(_0x321bad[_0x6bc8('0x11')](0x1f4,_0x1d0182[_0x6bc8('0x1a')]));});}else{_0x90d9f9(_0x328ccf);}});});};
\ No newline at end of file
+var _0xecc5=['CreateCmHopper','create','UpdateCmHopper','body','UpdateCmHopper\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','active','DestroyCmHopper','destroy','CmContact','describe','sequelize','order','LOCK','UPDATE','Contact','keys','User','Agent','name','voicePause','length','push','update','includes','all','GetContactDialer','GetContactDialer\x20hopperId\x20[%s]\x20-\x20contactId\x20[%s]\x20-\x20active\x20status\x20[%s]','dataValues','ContactId','MoveContactManagedDialer','transaction','CmHopperFinal','MoveContactManagedDialer\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','CountReScheduled','COUNT','literal','`scheduledat`\x20>=\x20','format','YYYY-MM-DD\x20HH:mm:ss','GetContactRecallMe','GetCmHopperPreview','findOne','dialTimezone','DESC','getContactByPhone','ResetActiveCalls','CmHopperHandlePreviewRecallNotifications','interval','availableAgentsIds','\x20MINUTE','CmList','List','NOW()','lodash','util','moment','bluebird','../../config/logger','rpc','GetCmHopper','CmHopper','findAll','options','raw','where','attributes','limit','include','map','model','then','catch','error','message','ShowCmHopper','find','info','debug','stringify'];(function(_0x16c8df,_0x28365){var _0x118c66=function(_0x137872){while(--_0x137872){_0x16c8df['push'](_0x16c8df['shift']());}};_0x118c66(++_0x28365);}(_0xecc5,0x1c0));var _0x5ecc=function(_0x591988,_0x41a5fd){_0x591988=_0x591988-0x0;var _0x1a119b=_0xecc5[_0x591988];return _0x1a119b;};'use strict';var _=require(_0x5ecc('0x0'));var util=require(_0x5ecc('0x1'));var moment=require(_0x5ecc('0x2'));var BPromise=require(_0x5ecc('0x3'));var db=require('../../mysqldb')['db'];var logger=require(_0x5ecc('0x4'))(_0x5ecc('0x5'));exports[_0x5ecc('0x6')]=function(_0x3673dc){var _0x4cb54f=this;return new Promise(function(_0x27f22f,_0x4818bd){return db[_0x5ecc('0x7')][_0x5ecc('0x8')]({'raw':_0x3673dc['options']?_0x3673dc[_0x5ecc('0x9')][_0x5ecc('0xa')]===undefined?!![]:![]:!![],'where':_0x3673dc[_0x5ecc('0x9')]?_0x3673dc[_0x5ecc('0x9')][_0x5ecc('0xb')]||null:null,'attributes':_0x3673dc[_0x5ecc('0x9')]?_0x3673dc['options'][_0x5ecc('0xc')]||null:null,'limit':_0x3673dc[_0x5ecc('0x9')]?_0x3673dc['options'][_0x5ecc('0xd')]||null:null,'include':_0x3673dc['options']?_0x3673dc['options'][_0x5ecc('0xe')]?_[_0x5ecc('0xf')](_0x3673dc[_0x5ecc('0x9')]['include'],function(_0x35d297){return{'model':db[_0x35d297[_0x5ecc('0x10')]],'as':_0x35d297['as'],'attributes':_0x35d297[_0x5ecc('0xc')],'include':_0x35d297[_0x5ecc('0xe')]?_['map'](_0x35d297[_0x5ecc('0xe')],function(_0x1c8b28){return{'model':db[_0x1c8b28[_0x5ecc('0x10')]],'as':_0x1c8b28['as'],'attributes':_0x1c8b28[_0x5ecc('0xc')],'include':_0x1c8b28[_0x5ecc('0xe')]?_[_0x5ecc('0xf')](_0x1c8b28['include'],function(_0x57f147){return{'model':db[_0x57f147[_0x5ecc('0x10')]],'as':_0x57f147['as'],'attributes':_0x57f147[_0x5ecc('0xc')]};}):[]};}):[]};}):[]:[]})[_0x5ecc('0x11')](function(_0xafc35e){logger['info']('GetCmHopper',_0x3673dc);logger['debug'](_0x5ecc('0x6'),_0x3673dc,JSON['stringify'](_0xafc35e));_0x27f22f(_0xafc35e);})[_0x5ecc('0x12')](function(_0x46c9c5){logger[_0x5ecc('0x13')](_0x5ecc('0x6'),_0x46c9c5[_0x5ecc('0x14')],_0x3673dc);_0x4818bd(_0x4cb54f[_0x5ecc('0x13')](0x1f4,_0x46c9c5[_0x5ecc('0x14')]));});});};exports[_0x5ecc('0x15')]=function(_0x583af7){var _0x1a3ea9=this;return new Promise(function(_0xff28cb,_0x45b4e0){return db[_0x5ecc('0x7')][_0x5ecc('0x16')]({'raw':_0x583af7[_0x5ecc('0x9')]?_0x583af7[_0x5ecc('0x9')][_0x5ecc('0xa')]===undefined?!![]:![]:!![],'where':_0x583af7[_0x5ecc('0x9')]?_0x583af7[_0x5ecc('0x9')][_0x5ecc('0xb')]||null:null,'attributes':_0x583af7[_0x5ecc('0x9')]?_0x583af7[_0x5ecc('0x9')][_0x5ecc('0xc')]||null:null,'include':_0x583af7['options']?_0x583af7[_0x5ecc('0x9')][_0x5ecc('0xe')]?_[_0x5ecc('0xf')](_0x583af7[_0x5ecc('0x9')]['include'],function(_0xdb8f8e){return{'model':db[_0xdb8f8e[_0x5ecc('0x10')]],'as':_0xdb8f8e['as'],'attributes':_0xdb8f8e['attributes'],'include':_0xdb8f8e[_0x5ecc('0xe')]?_[_0x5ecc('0xf')](_0xdb8f8e['include'],function(_0x2ddfd1){return{'model':db[_0x2ddfd1[_0x5ecc('0x10')]],'as':_0x2ddfd1['as'],'attributes':_0x2ddfd1[_0x5ecc('0xc')],'include':_0x2ddfd1[_0x5ecc('0xe')]?_[_0x5ecc('0xf')](_0x2ddfd1[_0x5ecc('0xe')],function(_0x1c2864){return{'model':db[_0x1c2864[_0x5ecc('0x10')]],'as':_0x1c2864['as'],'attributes':_0x1c2864[_0x5ecc('0xc')]};}):[]};}):[]};}):[]:[]})[_0x5ecc('0x11')](function(_0x521dcf){logger[_0x5ecc('0x17')](_0x5ecc('0x15'),_0x583af7);logger[_0x5ecc('0x18')](_0x5ecc('0x15'),_0x583af7,JSON[_0x5ecc('0x19')](_0x521dcf));_0xff28cb(_0x521dcf);})[_0x5ecc('0x12')](function(_0x149ca8){logger[_0x5ecc('0x13')]('ShowCmHopper',_0x149ca8[_0x5ecc('0x14')],_0x583af7);_0x45b4e0(_0x1a3ea9['error'](0x1f4,_0x149ca8['message']));});});};exports[_0x5ecc('0x1a')]=function(_0x565a3a){var _0x506224=this;return new Promise(function(_0x433b8f,_0x2c6bca){return db[_0x5ecc('0x7')][_0x5ecc('0x1b')](_0x565a3a['body'],{'raw':_0x565a3a[_0x5ecc('0x9')]?_0x565a3a[_0x5ecc('0x9')][_0x5ecc('0xa')]===undefined?!![]:![]:!![]})['then'](function(_0x1c2907){logger['info'](_0x5ecc('0x1a'),_0x565a3a);logger[_0x5ecc('0x18')](_0x5ecc('0x1a'),_0x565a3a,JSON[_0x5ecc('0x19')](_0x1c2907));_0x433b8f(_0x1c2907);})['catch'](function(_0x3d83bf){logger[_0x5ecc('0x13')]('CreateCmHopper',_0x3d83bf['message'],_0x565a3a);_0x2c6bca(_0x506224[_0x5ecc('0x13')](0x1f4,_0x3d83bf['message']));});});};exports[_0x5ecc('0x1c')]=function(_0x29b8a0){var _0x4c0eba=this;return new Promise(function(_0x3e29f2,_0x1e89f3){return db[_0x5ecc('0x7')]['update'](_0x29b8a0[_0x5ecc('0x1d')],{'raw':_0x29b8a0[_0x5ecc('0x9')]?_0x29b8a0[_0x5ecc('0x9')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x29b8a0['options']?_0x29b8a0[_0x5ecc('0x9')]['where']||null:null,'attributes':_0x29b8a0[_0x5ecc('0x9')]?_0x29b8a0['options']['attributes']||null:null,'limit':_0x29b8a0['options']?_0x29b8a0[_0x5ecc('0x9')]['limit']||null:null})['then'](function(_0xa1791e){logger['info'](_0x5ecc('0x1c'),_0x29b8a0);logger[_0x5ecc('0x17')](_0x5ecc('0x1e'),JSON[_0x5ecc('0x19')](_0x29b8a0['options'][_0x5ecc('0xb')]),_0x29b8a0[_0x5ecc('0x1d')][_0x5ecc('0x1f')]);logger[_0x5ecc('0x18')](_0x5ecc('0x1c'),_0x29b8a0,JSON[_0x5ecc('0x19')](_0xa1791e));_0x3e29f2(_0xa1791e);})[_0x5ecc('0x12')](function(_0x237ff1){logger[_0x5ecc('0x13')](_0x5ecc('0x1c'),_0x237ff1['message'],_0x29b8a0);_0x1e89f3(_0x4c0eba[_0x5ecc('0x13')](0x1f4,_0x237ff1['message']));});});};exports[_0x5ecc('0x20')]=function(_0x165c3a){var _0x1a6108=this;return new Promise(function(_0x4ec575,_0x55ed0e){return db[_0x5ecc('0x7')][_0x5ecc('0x21')]({'where':_0x165c3a[_0x5ecc('0x9')]?_0x165c3a[_0x5ecc('0x9')][_0x5ecc('0xb')]||null:null})[_0x5ecc('0x11')](function(_0x49284e){logger['info'](_0x5ecc('0x20'),_0x165c3a);logger[_0x5ecc('0x18')]('DestroyCmHopper',_0x165c3a,JSON['stringify'](_0x49284e));_0x4ec575(_0x49284e);})['catch'](function(_0x1bdf83){logger[_0x5ecc('0x13')](_0x5ecc('0x20'),_0x1bdf83[_0x5ecc('0x14')],_0x165c3a);_0x55ed0e(_0x1a6108['error'](0x1f4,_0x1bdf83[_0x5ecc('0x14')]));});});};exports['GetContactDialer']=function(_0x37b282){var _0x2c8f96=this;return new Promise(function(_0x287038,_0x5ca263){return db[_0x5ecc('0x22')][_0x5ecc('0x23')]()[_0x5ecc('0x11')](function(_0x2082b0){return db[_0x5ecc('0x24')]['transaction'](function(_0x129211){return db['CmHopper']['findAll']({'where':_0x37b282[_0x5ecc('0x9')]?_0x37b282[_0x5ecc('0x9')][_0x5ecc('0xb')]||null:null,'attributes':_0x37b282['options']?_0x37b282[_0x5ecc('0x9')][_0x5ecc('0xc')]||null:null,'limit':_0x37b282[_0x5ecc('0x9')]?_0x37b282[_0x5ecc('0x9')][_0x5ecc('0xd')]||null:null,'order':_0x37b282[_0x5ecc('0x9')]?_0x37b282['options'][_0x5ecc('0x25')]||null:null,'transaction':_0x129211,'lock':_0x129211[_0x5ecc('0x26')][_0x5ecc('0x27')],'include':[{'model':db[_0x5ecc('0x22')],'as':_0x5ecc('0x28'),'attributes':_[_0x5ecc('0x29')](_0x2082b0)},{'model':db[_0x5ecc('0x2a')],'as':_0x5ecc('0x2b'),'attributes':['id',_0x5ecc('0x2c'),_0x5ecc('0x2d')]}]})[_0x5ecc('0x11')](function(_0x2bc661){var _0x56854c=[];var _0x3bdaf2=[];for(var _0x1fcc21=0x0;_0x1fcc21<_0x2bc661[_0x5ecc('0x2e')];_0x1fcc21+=0x1){var _0x1cc38d=_0x2bc661[_0x1fcc21]['UserId'];if(_0x1cc38d===null){_0x56854c[_0x5ecc('0x2f')](_0x2bc661[_0x1fcc21][_0x5ecc('0x30')](_0x37b282['body'],{'transaction':_0x129211}));}else if(!_0x3bdaf2[_0x5ecc('0x31')](_0x1cc38d)){_0x3bdaf2[_0x5ecc('0x2f')](_0x1cc38d);_0x56854c['push'](_0x2bc661[_0x1fcc21]['update'](_0x37b282[_0x5ecc('0x1d')],{'transaction':_0x129211}));}}return BPromise[_0x5ecc('0x32')](_0x56854c);});})[_0x5ecc('0x11')](function(_0x1aceb7){logger[_0x5ecc('0x17')](_0x5ecc('0x33'),_0x37b282);if(_0x1aceb7[_0x5ecc('0x2e')]>0x0){logger[_0x5ecc('0x17')](_0x5ecc('0x34'),_0x1aceb7[0x0][_0x5ecc('0x35')]['id'],_0x1aceb7[0x0]['dataValues'][_0x5ecc('0x36')],_0x1aceb7[0x0][_0x5ecc('0x35')][_0x5ecc('0x1f')]);}logger[_0x5ecc('0x18')](_0x5ecc('0x33'),_0x37b282,JSON[_0x5ecc('0x19')](_0x1aceb7));_0x287038(_0x1aceb7);})['catch'](function(_0x3d9128){logger[_0x5ecc('0x13')](_0x5ecc('0x33'),_0x3d9128[_0x5ecc('0x14')],_0x37b282);_0x5ca263(_0x2c8f96['error'](0x1f4,_0x3d9128[_0x5ecc('0x14')]));});});});};exports[_0x5ecc('0x37')]=function(_0x1ba750){var _0x515c74=this;return new Promise(function(_0x49f7d8,_0x5b5500){return db[_0x5ecc('0x24')][_0x5ecc('0x38')](function(_0x5ce6a2){return db[_0x5ecc('0x39')][_0x5ecc('0x1b')](_0x1ba750[_0x5ecc('0x1d')],{'raw':_0x1ba750[_0x5ecc('0x9')]?_0x1ba750[_0x5ecc('0x9')][_0x5ecc('0xa')]===undefined?!![]:![]:!![],'transaction':_0x5ce6a2})['then'](function(){logger[_0x5ecc('0x17')](_0x5ecc('0x3a'),JSON[_0x5ecc('0x19')](_0x1ba750[_0x5ecc('0x9')]['where']),_0x1ba750[_0x5ecc('0x9')]['where'][_0x5ecc('0x1f')]);return db[_0x5ecc('0x7')][_0x5ecc('0x21')]({'where':_0x1ba750[_0x5ecc('0x9')]?_0x1ba750[_0x5ecc('0x9')][_0x5ecc('0xb')]||null:null,'transaction':_0x5ce6a2});});})[_0x5ecc('0x11')](function(_0x540f93){logger[_0x5ecc('0x17')](_0x5ecc('0x37'),_0x1ba750);logger[_0x5ecc('0x18')]('MoveContactManagedDialer',_0x1ba750,JSON[_0x5ecc('0x19')](_0x540f93));_0x49f7d8(_0x540f93);})[_0x5ecc('0x12')](function(_0xc5b04d){logger[_0x5ecc('0x13')](_0x5ecc('0x37'),_0xc5b04d[_0x5ecc('0x14')],_0x1ba750);_0x5b5500(_0x515c74[_0x5ecc('0x13')](0x1f4,_0xc5b04d['message']));});});};exports[_0x5ecc('0x3b')]=function(_0x3de94c){var _0x4f16a6=this;return new Promise(function(_0x283772,_0x5b9a96){return db[_0x5ecc('0x7')][_0x5ecc('0x8')]({'raw':_0x3de94c[_0x5ecc('0x9')]?_0x3de94c[_0x5ecc('0x9')][_0x5ecc('0xa')]===undefined?!![]:![]:!![],'where':_0x3de94c[_0x5ecc('0x9')]?_0x3de94c['options'][_0x5ecc('0xb')]||null:null,'attributes':[[db[_0x5ecc('0x24')]['fn'](_0x5ecc('0x3c'),db[_0x5ecc('0x24')]['fn']('IF',db[_0x5ecc('0x24')][_0x5ecc('0x3d')](_0x5ecc('0x3e')+util[_0x5ecc('0x3f')]('\x22%s\x22',moment()[_0x5ecc('0x3f')](_0x5ecc('0x40')))+'\x20,\x201,\x20null'))),'contactsRescheduled']]})['then'](function(_0x3bd162){logger[_0x5ecc('0x17')](_0x5ecc('0x3b'),_0x3de94c);logger[_0x5ecc('0x18')](_0x5ecc('0x3b'),_0x3de94c,JSON[_0x5ecc('0x19')](_0x3bd162));_0x283772(_0x3bd162);})['catch'](function(_0x427c9d){logger[_0x5ecc('0x13')](_0x5ecc('0x3b'),_0x427c9d['message'],_0x3de94c);_0x5b9a96(_0x4f16a6[_0x5ecc('0x13')](0x1f4,_0x427c9d[_0x5ecc('0x14')]));});});};exports[_0x5ecc('0x41')]=function(_0x3cfb0b){var _0x32446d=this;return new Promise(function(_0x21690f,_0x553629){return db[_0x5ecc('0x22')][_0x5ecc('0x23')]()[_0x5ecc('0x11')](function(){return db['sequelize'][_0x5ecc('0x38')](function(_0x9867d4){return db['CmHopper']['findAll']({'where':_0x3cfb0b[_0x5ecc('0x9')]?_0x3cfb0b[_0x5ecc('0x9')]['where']||null:null,'attributes':_0x3cfb0b[_0x5ecc('0x9')]?_0x3cfb0b[_0x5ecc('0x9')]['attributes']||null:null,'limit':0x1,'order':_0x3cfb0b[_0x5ecc('0x9')]?_0x3cfb0b['options']['order']||null:null,'group':db[_0x5ecc('0x7')]['UserId'],'transaction':_0x9867d4,'lock':_0x9867d4[_0x5ecc('0x26')][_0x5ecc('0x27')],'include':_0x3cfb0b[_0x5ecc('0x9')]?_0x3cfb0b[_0x5ecc('0x9')][_0x5ecc('0xe')]?_[_0x5ecc('0xf')](_0x3cfb0b['options'][_0x5ecc('0xe')],function(_0x1061b6){return{'model':db[_0x1061b6[_0x5ecc('0x10')]],'as':_0x1061b6['as'],'attributes':_0x1061b6[_0x5ecc('0xc')],'include':_0x1061b6['include']?_[_0x5ecc('0xf')](_0x1061b6[_0x5ecc('0xe')],function(_0x1b05ef){return{'model':db[_0x1b05ef[_0x5ecc('0x10')]],'as':_0x1b05ef['as'],'attributes':_0x1b05ef[_0x5ecc('0xc')],'include':_0x1b05ef[_0x5ecc('0xe')]?_[_0x5ecc('0xf')](_0x1b05ef[_0x5ecc('0xe')],function(_0xcfe4d9){return{'model':db[_0xcfe4d9[_0x5ecc('0x10')]],'as':_0xcfe4d9['as'],'attributes':_0xcfe4d9[_0x5ecc('0xc')]};}):[]};}):[]};}):[]:[]})[_0x5ecc('0x11')](function(_0x1529e8){var _0x21f6ec=[];for(var _0x2fa916=0x0;_0x2fa916<_0x1529e8[_0x5ecc('0x2e')];_0x2fa916+=0x1){_0x21f6ec[_0x5ecc('0x2f')](_0x1529e8[_0x2fa916][_0x5ecc('0x30')](_0x3cfb0b[_0x5ecc('0x1d')],{'transaction':_0x9867d4}));}return BPromise['all'](_0x21f6ec);});})[_0x5ecc('0x11')](function(_0x4d2491){logger[_0x5ecc('0x17')](_0x5ecc('0x41'),_0x3cfb0b);logger[_0x5ecc('0x18')](_0x5ecc('0x41'),_0x3cfb0b,JSON[_0x5ecc('0x19')](_0x4d2491));_0x21690f(_0x4d2491);})[_0x5ecc('0x12')](function(_0x3c1e8d){logger[_0x5ecc('0x13')](_0x5ecc('0x41'),_0x3c1e8d[_0x5ecc('0x14')],_0x3cfb0b);_0x553629(_0x32446d[_0x5ecc('0x13')](0x1f4,_0x3c1e8d['message']));});});});};exports[_0x5ecc('0x42')]=function(_0x110e60){var _0x1b3904=this;return new Promise(function(_0x5892d9,_0x2b5cf8){db[_0x5ecc('0x22')][_0x5ecc('0x23')]()[_0x5ecc('0x11')](function(_0x3490b9){return db[_0x5ecc('0x7')]['findAll']({'raw':_0x110e60[_0x5ecc('0x9')]?_0x110e60[_0x5ecc('0x9')][_0x5ecc('0xa')]===undefined?!![]:![]:!![],'where':_0x110e60[_0x5ecc('0x9')]?_0x110e60['options'][_0x5ecc('0xb')]||null:null,'attributes':_0x110e60[_0x5ecc('0x9')]?_0x110e60[_0x5ecc('0x9')][_0x5ecc('0xc')]||null:null,'limit':_0x110e60[_0x5ecc('0x9')]?_0x110e60[_0x5ecc('0x9')][_0x5ecc('0xd')]||null:null,'include':_0x110e60[_0x5ecc('0x9')]?_0x110e60['options'][_0x5ecc('0xe')]?_['map'](_0x110e60['options'][_0x5ecc('0xe')],function(_0x3f4cdb){return{'model':db[_0x3f4cdb[_0x5ecc('0x10')]],'as':_0x3f4cdb['as'],'attributes':_0x3f4cdb['as']==='Contact'?_[_0x5ecc('0x29')](_0x3490b9):_0x3f4cdb[_0x5ecc('0xc')],'include':_0x3f4cdb[_0x5ecc('0xe')]?_[_0x5ecc('0xf')](_0x3f4cdb['include'],function(_0x1f7f01){return{'model':db[_0x1f7f01[_0x5ecc('0x10')]],'as':_0x1f7f01['as'],'attributes':_0x1f7f01[_0x5ecc('0xc')],'include':_0x1f7f01['include']?_[_0x5ecc('0xf')](_0x1f7f01[_0x5ecc('0xe')],function(_0x17a57a){return{'model':db[_0x17a57a[_0x5ecc('0x10')]],'as':_0x17a57a['as'],'attributes':_0x17a57a[_0x5ecc('0xc')]};}):[]};}):[]};}):[]:[]})[_0x5ecc('0x11')](function(_0x532056){logger[_0x5ecc('0x17')](_0x5ecc('0x6'),_0x110e60);logger[_0x5ecc('0x18')](_0x5ecc('0x6'),_0x110e60,JSON[_0x5ecc('0x19')](_0x532056));_0x5892d9(_0x532056);})['catch'](function(_0x1f35cc){logger[_0x5ecc('0x13')]('GetCmHopper',_0x1f35cc[_0x5ecc('0x14')],_0x110e60);_0x2b5cf8(_0x1b3904[_0x5ecc('0x13')](0x1f4,_0x1f35cc[_0x5ecc('0x14')]));});});});};exports['GetContactByPhone']=function(_0xf4cb1){var _0x3660a3=this;return new Promise(function(_0x48463f,_0x321d74){return db[_0x5ecc('0x22')][_0x5ecc('0x43')]({'raw':!![],'where':{'phone':_0xf4cb1[_0x5ecc('0x9')]['where']['phone']},'attributes':['id',_0x5ecc('0x44')],'order':[['id',_0x5ecc('0x45')]]})[_0x5ecc('0x11')](function(_0x2ed622){logger[_0x5ecc('0x17')](_0x5ecc('0x46'),_0xf4cb1);logger[_0x5ecc('0x18')]('getContactByPhone',_0xf4cb1,JSON[_0x5ecc('0x19')](_0x2ed622));_0x48463f(_0x2ed622);})[_0x5ecc('0x12')](function(_0x403dfc){logger['error'](_0x5ecc('0x46'),_0x403dfc[_0x5ecc('0x14')],_0xf4cb1);_0x321d74(_0x3660a3['error'](0x1f4,_0x403dfc[_0x5ecc('0x14')]));});});};exports[_0x5ecc('0x47')]=function(_0x37c950){var _0x41b71e=this;return new Promise(function(_0x29ac39,_0x2d6b9b){return db['sequelize'][_0x5ecc('0x38')](function(_0x2cfe90){var _0x15bd02=_0x37c950['options']&&_0x37c950[_0x5ecc('0x9')]['where']?_0x37c950[_0x5ecc('0x9')][_0x5ecc('0xb')]:{};return db[_0x5ecc('0x7')][_0x5ecc('0x30')](_0x37c950[_0x5ecc('0x1d')],{'where':_0x15bd02,'transaction':_0x2cfe90})[_0x5ecc('0x11')](function(_0x5f106d){logger[_0x5ecc('0x17')](_0x5ecc('0x47'),_0x37c950);logger[_0x5ecc('0x18')]('ResetActiveCalls',_0x37c950,JSON[_0x5ecc('0x19')](_0x5f106d));_0x29ac39(_0x5f106d);})[_0x5ecc('0x12')](function(_0x4a7850){logger[_0x5ecc('0x13')]('ResetActiveCalls',_0x4a7850[_0x5ecc('0x14')],_0x37c950);_0x2d6b9b(_0x41b71e['error'](0x1f4,_0x4a7850[_0x5ecc('0x14')]));});});});};exports[_0x5ecc('0x48')]=function(_0x54feb2){var _0x542389=this;var _0x474443=_0x54feb2['body'][_0x5ecc('0xb')]['voiceQueueIds'];var _0xfa289e=_0x54feb2[_0x5ecc('0x1d')][_0x5ecc('0xb')][_0x5ecc('0x49')];var _0x327bb6=_0x54feb2[_0x5ecc('0x1d')][_0x5ecc('0xb')][_0x5ecc('0x4a')];return new Promise(function(_0x105c37,_0x5255b2){return db[_0x5ecc('0x7')]['findAll']({'where':{'voiceQueueId':{'$in':_0x474443},'recallme':0x1,'active':0x0,'recallmeNotifiedDate':{'$eq':null},'scheduledat':{'$and':{'$lte':db['sequelize']['literal']('NOW()\x20+\x20INTERVAL\x20'+_0xfa289e+_0x5ecc('0x4b')),'$gt':db['sequelize'][_0x5ecc('0x3d')]('NOW()')}},'UserId':{'$in':_0x327bb6}},'include':[{'model':db['CmContact'],'as':_0x5ecc('0x28')},{'model':db[_0x5ecc('0x2a')],'as':_0x5ecc('0x2b'),'attributes':['id',_0x5ecc('0x2c'),_0x5ecc('0x2d')]},{'model':db[_0x5ecc('0x4c')],'as':_0x5ecc('0x4d')}]})['then'](function(_0x2d2c83){if(_0x2d2c83[_0x5ecc('0x2e')]>0x0){return db[_0x5ecc('0x24')][_0x5ecc('0x38')](function(_0x3bab42){return db['CmHopper'][_0x5ecc('0x30')]({'recallmeNotifiedDate':db[_0x5ecc('0x24')][_0x5ecc('0x3d')](_0x5ecc('0x4e'))},{'where':{'id':{'$in':_[_0x5ecc('0xf')](_0x2d2c83,'id')}},'transaction':_0x3bab42})[_0x5ecc('0x11')](function(){_0x105c37(_0x2d2c83);})['catch'](function(_0x57e3ea){logger[_0x5ecc('0x13')](_0x5ecc('0x48'),_0x57e3ea[_0x5ecc('0x14')],_0x54feb2);_0x5255b2(_0x542389[_0x5ecc('0x13')](0x1f4,_0x57e3ea[_0x5ecc('0x14')]));});})['catch'](function(_0x12174f){logger[_0x5ecc('0x13')]('CmHopperHandlePreviewRecallNotifications',_0x12174f[_0x5ecc('0x14')],_0x54feb2);_0x5255b2(_0x542389['error'](0x1f4,_0x12174f['message']));});}else{_0x105c37(_0x2d2c83);}});});};
\ No newline at end of file
index 3e4a0d7..c0ac120 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3a0=['get','isAuthenticated','index','/describe','describe','/opencontacts','getOpenContacts','/timezones','getTimezones','/:id','show','/:id/previewrecall','getPreviewRecall','post','getPreview','/timezone','getTimezone','put','update','delete','destroy','exports','Router','../../components/auth/service','./cmHopper.controller'];(function(_0x2145c0,_0x389c37){var _0x74496c=function(_0x2d109e){while(--_0x2d109e){_0x2145c0['push'](_0x2145c0['shift']());}};_0x74496c(++_0x389c37);}(_0xd3a0,0x1f1));var _0x0d3a=function(_0x35cad4,_0x5a8613){_0x35cad4=_0x35cad4-0x0;var _0x1e0e54=_0xd3a0[_0x35cad4];return _0x1e0e54;};'use strict';var express=require('express');var router=express[_0x0d3a('0x0')]();var auth=require(_0x0d3a('0x1'));var controller=require(_0x0d3a('0x2'));router[_0x0d3a('0x3')]('/',auth[_0x0d3a('0x4')](),controller[_0x0d3a('0x5')]);router['get'](_0x0d3a('0x6'),auth[_0x0d3a('0x4')](),controller[_0x0d3a('0x7')]);router['get'](_0x0d3a('0x8'),auth[_0x0d3a('0x4')](),controller[_0x0d3a('0x9')]);router[_0x0d3a('0x3')](_0x0d3a('0xa'),auth[_0x0d3a('0x4')](),controller[_0x0d3a('0xb')]);router[_0x0d3a('0x3')](_0x0d3a('0xc'),auth[_0x0d3a('0x4')](),controller[_0x0d3a('0xd')]);router[_0x0d3a('0x3')](_0x0d3a('0xe'),auth[_0x0d3a('0x4')](),controller[_0x0d3a('0xf')]);router[_0x0d3a('0x10')]('/',auth['isAuthenticated'](),controller['create']);router[_0x0d3a('0x10')]('/preview',auth[_0x0d3a('0x4')](),controller[_0x0d3a('0x11')]);router['post'](_0x0d3a('0x12'),auth[_0x0d3a('0x4')](),controller[_0x0d3a('0x13')]);router[_0x0d3a('0x14')](_0x0d3a('0xc'),auth[_0x0d3a('0x4')](),controller[_0x0d3a('0x15')]);router[_0x0d3a('0x16')]('/:id',auth[_0x0d3a('0x4')](),controller[_0x0d3a('0x17')]);module[_0x0d3a('0x18')]=router;
\ No newline at end of file
+var _0xef3d=['getPreviewRecall','post','create','getPreview','getTimezone','put','update','delete','destroy','express','Router','../../components/auth/service','get','isAuthenticated','index','/describe','describe','getOpenContacts','getTimezones','/:id','show','/:id/previewrecall'];(function(_0x172a7b,_0x4d354e){var _0x5cd08d=function(_0x349f16){while(--_0x349f16){_0x172a7b['push'](_0x172a7b['shift']());}};_0x5cd08d(++_0x4d354e);}(_0xef3d,0x153));var _0xdef3=function(_0x2a0ba0,_0x578aab){_0x2a0ba0=_0x2a0ba0-0x0;var _0x4b8d0b=_0xef3d[_0x2a0ba0];return _0x4b8d0b;};'use strict';var express=require(_0xdef3('0x0'));var router=express[_0xdef3('0x1')]();var auth=require(_0xdef3('0x2'));var controller=require('./cmHopper.controller');router[_0xdef3('0x3')]('/',auth[_0xdef3('0x4')](),controller[_0xdef3('0x5')]);router['get'](_0xdef3('0x6'),auth['isAuthenticated'](),controller[_0xdef3('0x7')]);router[_0xdef3('0x3')]('/opencontacts',auth[_0xdef3('0x4')](),controller[_0xdef3('0x8')]);router['get']('/timezones',auth['isAuthenticated'](),controller[_0xdef3('0x9')]);router[_0xdef3('0x3')](_0xdef3('0xa'),auth[_0xdef3('0x4')](),controller[_0xdef3('0xb')]);router[_0xdef3('0x3')](_0xdef3('0xc'),auth[_0xdef3('0x4')](),controller[_0xdef3('0xd')]);router[_0xdef3('0xe')]('/',auth[_0xdef3('0x4')](),controller[_0xdef3('0xf')]);router[_0xdef3('0xe')]('/preview',auth[_0xdef3('0x4')](),controller[_0xdef3('0x10')]);router[_0xdef3('0xe')]('/timezone',auth['isAuthenticated'](),controller[_0xdef3('0x11')]);router[_0xdef3('0x12')](_0xdef3('0xa'),auth[_0xdef3('0x4')](),controller[_0xdef3('0x13')]);router[_0xdef3('0x14')](_0xdef3('0xa'),auth[_0xdef3('0x4')](),controller[_0xdef3('0x15')]);module['exports']=router;
\ No newline at end of file
index 278e696..dff275c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7037=['YYYY-MM-DD\x20HH:mm:ss','sequelize','exports','INTEGER','STRING','DATE','format'];(function(_0x368f9d,_0x542fd7){var _0x40ace0=function(_0x34bb18){while(--_0x34bb18){_0x368f9d['push'](_0x368f9d['shift']());}};_0x40ace0(++_0x542fd7);}(_0x7037,0x15f));var _0x7703=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0x7037[_0x4e676e];return _0x336a3c;};'use strict';var moment=require('moment');var Sequelize=require(_0x7703('0x0'));module[_0x7703('0x1')]={'CmHopperId':{'type':Sequelize[_0x7703('0x2')]},'phone':{'type':Sequelize[_0x7703('0x3')],'allowNull':![]},'OrderBy':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'scheduledat':{'type':Sequelize[_0x7703('0x4')],'defaultValue':moment()[_0x7703('0x5')](_0x7703('0x6'))},'countbusyretry':{'type':Sequelize[_0x7703('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x7703('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnosuchnumberretry':{'type':Sequelize[_0x7703('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x7703('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x7703('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x7703('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x1476=['exports','INTEGER','STRING','DATE','YYYY-MM-DD\x20HH:mm:ss','moment','sequelize'];(function(_0x2a170c,_0xee164e){var _0x2a55cd=function(_0x2a4868){while(--_0x2a4868){_0x2a170c['push'](_0x2a170c['shift']());}};_0x2a55cd(++_0xee164e);}(_0x1476,0x186));var _0x6147=function(_0x46ea63,_0x31c71f){_0x46ea63=_0x46ea63-0x0;var _0x397b37=_0x1476[_0x46ea63];return _0x397b37;};'use strict';var moment=require(_0x6147('0x0'));var Sequelize=require(_0x6147('0x1'));module[_0x6147('0x2')]={'CmHopperId':{'type':Sequelize[_0x6147('0x3')]},'phone':{'type':Sequelize[_0x6147('0x4')],'allowNull':![]},'OrderBy':{'type':Sequelize[_0x6147('0x3')],'defaultValue':0x0},'scheduledat':{'type':Sequelize[_0x6147('0x5')],'defaultValue':moment()['format'](_0x6147('0x6'))},'countbusyretry':{'type':Sequelize[_0x6147('0x3')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x6147('0x3')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x6147('0x3')],'defaultValue':0x0},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x6147('0x3')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x6147('0x3')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x6147('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index 8403344..9f46824 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6b2=['squel','crypto','jsforce','papaparse','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','Content-Range','apply','reject','update','destroy','then','CmHopperAdditionalPhones','UserProfileResource','sendStatus','error','stack','name','index','map','CmHopperAdditionalPhone','fieldName','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','type','VIRTUAL','filter','merge','options','includeAll','findAll','rows','show','params','rawAttributes','keys','include','find','catch','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash'];(function(_0x2a5d79,_0x59c9d0){var _0x584496=function(_0x53a0b3){while(--_0x53a0b3){_0x2a5d79['push'](_0x2a5d79['shift']());}};_0x584496(++_0x59c9d0);}(_0xf6b2,0xec));var _0x2f6b=function(_0x28bac5,_0x5f15cb){_0x28bac5=_0x28bac5-0x0;var _0x33d8b2=_0xf6b2[_0x28bac5];return _0x33d8b2;};'use strict';var emlformat=require(_0x2f6b('0x0'));var rimraf=require(_0x2f6b('0x1'));var zipdir=require(_0x2f6b('0x2'));var jsonpatch=require(_0x2f6b('0x3'));var rp=require(_0x2f6b('0x4'));var moment=require('moment');var BPromise=require(_0x2f6b('0x5'));var Mustache=require(_0x2f6b('0x6'));var util=require('util');var path=require(_0x2f6b('0x7'));var sox=require(_0x2f6b('0x8'));var csv=require(_0x2f6b('0x9'));var ejs=require(_0x2f6b('0xa'));var fs=require('fs');var fs_extra=require(_0x2f6b('0xb'));var _=require(_0x2f6b('0xc'));var squel=require(_0x2f6b('0xd'));var crypto=require(_0x2f6b('0xe'));var jsforce=require(_0x2f6b('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x2f6b('0x9'));var querystring=require('querystring');var Papa=require(_0x2f6b('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2f6b('0x11'));var logger=require(_0x2f6b('0x12'))(_0x2f6b('0x13'));var utils=require('../../config/utils');var config=require(_0x2f6b('0x14'));var licenseUtil=require(_0x2f6b('0x15'));var db=require(_0x2f6b('0x16'))['db'];function respondWithStatusCode(_0x1fcf01,_0x56a71a){_0x56a71a=_0x56a71a||0xcc;return function(_0x1c172f){if(_0x1c172f){return _0x1fcf01['sendStatus'](_0x56a71a);}return _0x1fcf01['status'](_0x56a71a)[_0x2f6b('0x17')]();};}function respondWithResult(_0x4d33e5,_0x50222e){_0x50222e=_0x50222e||0xc8;return function(_0x4d6f04){if(_0x4d6f04){return _0x4d33e5[_0x2f6b('0x18')](_0x50222e)[_0x2f6b('0x19')](_0x4d6f04);}};}function respondWithFilteredResult(_0x50a7f5,_0xe00250){return function(_0xcf3bb4){if(_0xcf3bb4){var _0x4ae11a=typeof _0xe00250[_0x2f6b('0x1a')]===_0x2f6b('0x1b')&&typeof _0xe00250[_0x2f6b('0x1c')]===_0x2f6b('0x1b');var _0x48121d=_0xcf3bb4['count'];var _0x194eed=_0x4ae11a?0x0:_0xe00250[_0x2f6b('0x1a')];var _0x244b4e=_0x4ae11a?_0xcf3bb4[_0x2f6b('0x1d')]:_0xe00250['offset']+_0xe00250[_0x2f6b('0x1c')];var _0x21bbdd;if(_0x244b4e>=_0x48121d){_0x244b4e=_0x48121d;_0x21bbdd=0xc8;}else{_0x21bbdd=0xce;}_0x50a7f5[_0x2f6b('0x18')](_0x21bbdd);return _0x50a7f5['set'](_0x2f6b('0x1e'),_0x194eed+'-'+_0x244b4e+'/'+_0x48121d)['json'](_0xcf3bb4);}return null;};}function patchUpdates(_0x2fba60){return function(_0x19c7e9){try{jsonpatch[_0x2f6b('0x1f')](_0x19c7e9,_0x2fba60,!![]);}catch(_0x4acaef){return BPromise[_0x2f6b('0x20')](_0x4acaef);}return _0x19c7e9['save']();};}function saveUpdates(_0x1a5a8b,_0x597cb1){return function(_0x39c085){if(_0x39c085){return _0x39c085[_0x2f6b('0x21')](_0x1a5a8b)['then'](function(_0x2ffed9){return _0x2ffed9;});}return null;};}function removeEntity(_0x1ef099,_0x4ae181){return function(_0x43f632){if(_0x43f632){return _0x43f632[_0x2f6b('0x22')]()[_0x2f6b('0x23')](function(){var _0x401310=_0x43f632['get']({'plain':!![]});var _0x12f6b2=_0x2f6b('0x24');return db[_0x2f6b('0x25')]['destroy']({'where':{'type':_0x12f6b2,'resourceId':_0x401310['id']}})[_0x2f6b('0x23')](function(){return _0x43f632;});})[_0x2f6b('0x23')](function(){_0x1ef099[_0x2f6b('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4b21a8,_0x5959aa){return function(_0x118520){if(!_0x118520){_0x4b21a8[_0x2f6b('0x26')](0x194);}return _0x118520;};}function handleError(_0x5bf095,_0x1625aa){_0x1625aa=_0x1625aa||0x1f4;return function(_0x289c7d){logger[_0x2f6b('0x27')](_0x289c7d[_0x2f6b('0x28')]);if(_0x289c7d[_0x2f6b('0x29')]){delete _0x289c7d['name'];}_0x5bf095[_0x2f6b('0x18')](_0x1625aa)['send'](_0x289c7d);};}exports[_0x2f6b('0x2a')]=function(_0x482dac,_0x5eea8e){var _0x264947={},_0x1085c0={},_0x2cac6d={'count':0x0,'rows':[]};var _0x318ba6=_[_0x2f6b('0x2b')](db[_0x2f6b('0x2c')]['rawAttributes'],function(_0x447cb9){return{'name':_0x447cb9[_0x2f6b('0x2d')],'type':_0x447cb9['type'][_0x2f6b('0x2e')]};});_0x1085c0[_0x2f6b('0x2f')]=_[_0x2f6b('0x2b')](_0x318ba6,'name');_0x1085c0[_0x2f6b('0x30')]=_['keys'](_0x482dac[_0x2f6b('0x30')]);_0x1085c0[_0x2f6b('0x31')]=_[_0x2f6b('0x32')](_0x1085c0[_0x2f6b('0x2f')],_0x1085c0[_0x2f6b('0x30')]);_0x264947[_0x2f6b('0x33')]=_[_0x2f6b('0x32')](_0x1085c0[_0x2f6b('0x2f')],qs[_0x2f6b('0x34')](_0x482dac[_0x2f6b('0x30')][_0x2f6b('0x34')]));_0x264947[_0x2f6b('0x33')]=_0x264947[_0x2f6b('0x33')][_0x2f6b('0x35')]?_0x264947[_0x2f6b('0x33')]:_0x1085c0['model'];if(!_0x482dac[_0x2f6b('0x30')][_0x2f6b('0x36')]('nolimit')){_0x264947[_0x2f6b('0x1c')]=qs[_0x2f6b('0x1c')](_0x482dac[_0x2f6b('0x30')][_0x2f6b('0x1c')]);_0x264947[_0x2f6b('0x1a')]=qs[_0x2f6b('0x1a')](_0x482dac[_0x2f6b('0x30')][_0x2f6b('0x1a')]);}_0x264947[_0x2f6b('0x37')]=qs['sort'](_0x482dac['query'][_0x2f6b('0x38')]);_0x264947[_0x2f6b('0x39')]=qs['filters'](_[_0x2f6b('0x3a')](_0x482dac[_0x2f6b('0x30')],_0x1085c0[_0x2f6b('0x31')]),_0x318ba6);if(_0x482dac[_0x2f6b('0x30')]['filter']){_0x264947[_0x2f6b('0x39')]=_['merge'](_0x264947[_0x2f6b('0x39')],{'$or':_['map'](_0x318ba6,function(_0x2bad75){if(_0x2bad75[_0x2f6b('0x3b')]!==_0x2f6b('0x3c')){var _0x871d23={};_0x871d23[_0x2bad75[_0x2f6b('0x29')]]={'$like':'%'+_0x482dac[_0x2f6b('0x30')][_0x2f6b('0x3d')]+'%'};return _0x871d23;}})});}_0x264947=_[_0x2f6b('0x3e')]({},_0x264947,_0x482dac[_0x2f6b('0x3f')]);var _0x4703d5={'where':_0x264947[_0x2f6b('0x39')]};return db[_0x2f6b('0x2c')][_0x2f6b('0x1d')](_0x4703d5)[_0x2f6b('0x23')](function(_0x32048f){_0x2cac6d[_0x2f6b('0x1d')]=_0x32048f;if(_0x482dac[_0x2f6b('0x30')][_0x2f6b('0x40')]){_0x264947['include']=[{'all':!![]}];}return db['CmHopperAdditionalPhone'][_0x2f6b('0x41')](_0x264947);})[_0x2f6b('0x23')](function(_0x509964){_0x2cac6d[_0x2f6b('0x42')]=_0x509964;return _0x2cac6d;})[_0x2f6b('0x23')](respondWithFilteredResult(_0x5eea8e,_0x264947))['catch'](handleError(_0x5eea8e,null));};exports[_0x2f6b('0x43')]=function(_0x122623,_0x201428){var _0x189fb8={'raw':!![],'where':{'id':_0x122623[_0x2f6b('0x44')]['id']}},_0x3e6aa9={};_0x3e6aa9[_0x2f6b('0x2f')]=_['keys'](db['CmHopperAdditionalPhone'][_0x2f6b('0x45')]);_0x3e6aa9['query']=_[_0x2f6b('0x46')](_0x122623['query']);_0x3e6aa9[_0x2f6b('0x31')]=_[_0x2f6b('0x32')](_0x3e6aa9[_0x2f6b('0x2f')],_0x3e6aa9[_0x2f6b('0x30')]);_0x189fb8[_0x2f6b('0x33')]=_[_0x2f6b('0x32')](_0x3e6aa9[_0x2f6b('0x2f')],qs[_0x2f6b('0x34')](_0x122623[_0x2f6b('0x30')][_0x2f6b('0x34')]));_0x189fb8['attributes']=_0x189fb8[_0x2f6b('0x33')][_0x2f6b('0x35')]?_0x189fb8[_0x2f6b('0x33')]:_0x3e6aa9[_0x2f6b('0x2f')];if(_0x122623['query'][_0x2f6b('0x40')]){_0x189fb8[_0x2f6b('0x47')]=[{'all':!![]}];}_0x189fb8=_[_0x2f6b('0x3e')]({},_0x189fb8,_0x122623[_0x2f6b('0x3f')]);return db[_0x2f6b('0x2c')][_0x2f6b('0x48')](_0x189fb8)[_0x2f6b('0x23')](handleEntityNotFound(_0x201428,null))[_0x2f6b('0x23')](respondWithResult(_0x201428,null))[_0x2f6b('0x49')](handleError(_0x201428,null));};exports[_0x2f6b('0x4a')]=function(_0x2af1fb,_0x31667c){return db[_0x2f6b('0x2c')]['create'](_0x2af1fb[_0x2f6b('0x4b')],{})[_0x2f6b('0x23')](function(_0x2c15a5){var _0x4ed6d2=_0x2af1fb['user'][_0x2f6b('0x4c')]({'plain':!![]});if(!_0x4ed6d2)throw new Error(_0x2f6b('0x4d'));if(_0x4ed6d2[_0x2f6b('0x4e')]===_0x2f6b('0x4f')){var _0x3b5529=_0x2c15a5['get']({'plain':!![]});var _0x4e5751='CmHopperAdditionalPhones';return db[_0x2f6b('0x50')]['find']({'where':{'name':_0x4e5751,'userProfileId':_0x4ed6d2['userProfileId']},'raw':!![]})[_0x2f6b('0x23')](function(_0x2c1e1a){if(_0x2c1e1a&&_0x2c1e1a[_0x2f6b('0x51')]===0x0){return db['UserProfileResource'][_0x2f6b('0x4a')]({'name':_0x3b5529[_0x2f6b('0x29')],'resourceId':_0x3b5529['id'],'type':_0x2c1e1a[_0x2f6b('0x29')],'sectionId':_0x2c1e1a['id']},{})[_0x2f6b('0x23')](function(){return _0x2c15a5;});}else{return _0x2c15a5;}})[_0x2f6b('0x49')](function(_0x2344c8){logger[_0x2f6b('0x27')](_0x2f6b('0x52'),_0x2344c8);throw _0x2344c8;});}return _0x2c15a5;})[_0x2f6b('0x23')](respondWithResult(_0x31667c,0xc9))[_0x2f6b('0x49')](handleError(_0x31667c,null));};exports['update']=function(_0x47ad78,_0x363e51){if(_0x47ad78[_0x2f6b('0x4b')]['id']){delete _0x47ad78[_0x2f6b('0x4b')]['id'];}return db[_0x2f6b('0x2c')]['find']({'where':{'id':_0x47ad78[_0x2f6b('0x44')]['id']}})['then'](handleEntityNotFound(_0x363e51,null))[_0x2f6b('0x23')](saveUpdates(_0x47ad78[_0x2f6b('0x4b')],null))['then'](respondWithResult(_0x363e51,null))[_0x2f6b('0x49')](handleError(_0x363e51,null));};exports[_0x2f6b('0x22')]=function(_0x1d8bb7,_0x13444f){return db[_0x2f6b('0x2c')][_0x2f6b('0x48')]({'where':{'id':_0x1d8bb7[_0x2f6b('0x44')]['id']}})['then'](handleEntityNotFound(_0x13444f,null))[_0x2f6b('0x23')](removeEntity(_0x13444f,null))[_0x2f6b('0x49')](handleError(_0x13444f,null));};
\ No newline at end of file
+var _0x4177=['destroy','get','UserProfileResource','name','send','index','map','CmHopperAdditionalPhone','rawAttributes','fieldName','type','key','model','query','keys','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','includeAll','include','findAll','rows','catch','show','intersection','create','body','user','role','CmHopperAdditionalPhones','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','params','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','save','update','then'];(function(_0x23a298,_0x21adb7){var _0x31a410=function(_0x3350b9){while(--_0x3350b9){_0x23a298['push'](_0x23a298['shift']());}};_0x31a410(++_0x21adb7);}(_0x4177,0x173));var _0x7417=function(_0x38109f,_0x1cdb54){_0x38109f=_0x38109f-0x0;var _0x20dafc=_0x4177[_0x38109f];return _0x20dafc;};'use strict';var emlformat=require(_0x7417('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7417('0x1'));var jsonpatch=require(_0x7417('0x2'));var rp=require(_0x7417('0x3'));var moment=require(_0x7417('0x4'));var BPromise=require(_0x7417('0x5'));var Mustache=require(_0x7417('0x6'));var util=require(_0x7417('0x7'));var path=require(_0x7417('0x8'));var sox=require(_0x7417('0x9'));var csv=require(_0x7417('0xa'));var ejs=require(_0x7417('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7417('0xc'));var squel=require('squel');var crypto=require(_0x7417('0xd'));var jsforce=require(_0x7417('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x7417('0xa'));var querystring=require(_0x7417('0xf'));var Papa=require(_0x7417('0x10'));var Redis=require(_0x7417('0x11'));var authService=require(_0x7417('0x12'));var qs=require(_0x7417('0x13'));var as=require(_0x7417('0x14'));var hardwareService=require(_0x7417('0x15'));var logger=require(_0x7417('0x16'))('api');var utils=require('../../config/utils');var config=require(_0x7417('0x17'));var licenseUtil=require(_0x7417('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1e7aa1,_0x2a84c6){_0x2a84c6=_0x2a84c6||0xcc;return function(_0x1d7feb){if(_0x1d7feb){return _0x1e7aa1[_0x7417('0x19')](_0x2a84c6);}return _0x1e7aa1[_0x7417('0x1a')](_0x2a84c6)[_0x7417('0x1b')]();};}function respondWithResult(_0x595ca9,_0x561c34){_0x561c34=_0x561c34||0xc8;return function(_0x533c86){if(_0x533c86){return _0x595ca9['status'](_0x561c34)[_0x7417('0x1c')](_0x533c86);}};}function respondWithFilteredResult(_0x438462,_0x132a83){return function(_0x4c04d8){if(_0x4c04d8){var _0x1f9d13=typeof _0x132a83[_0x7417('0x1d')]==='undefined'&&typeof _0x132a83[_0x7417('0x1e')]===_0x7417('0x1f');var _0xd3d003=_0x4c04d8[_0x7417('0x20')];var _0x24a780=_0x1f9d13?0x0:_0x132a83[_0x7417('0x1d')];var _0x134b2a=_0x1f9d13?_0x4c04d8[_0x7417('0x20')]:_0x132a83[_0x7417('0x1d')]+_0x132a83[_0x7417('0x1e')];var _0x1a46d7;if(_0x134b2a>=_0xd3d003){_0x134b2a=_0xd3d003;_0x1a46d7=0xc8;}else{_0x1a46d7=0xce;}_0x438462[_0x7417('0x1a')](_0x1a46d7);return _0x438462[_0x7417('0x21')](_0x7417('0x22'),_0x24a780+'-'+_0x134b2a+'/'+_0xd3d003)[_0x7417('0x1c')](_0x4c04d8);}return null;};}function patchUpdates(_0x226311){return function(_0x252a4d){try{jsonpatch['apply'](_0x252a4d,_0x226311,!![]);}catch(_0x3bc800){return BPromise[_0x7417('0x23')](_0x3bc800);}return _0x252a4d[_0x7417('0x24')]();};}function saveUpdates(_0x13a68d,_0x558dce){return function(_0x16244d){if(_0x16244d){return _0x16244d[_0x7417('0x25')](_0x13a68d)[_0x7417('0x26')](function(_0x21d371){return _0x21d371;});}return null;};}function removeEntity(_0x3f1baf,_0xdb2e95){return function(_0x37ddbe){if(_0x37ddbe){return _0x37ddbe[_0x7417('0x27')]()[_0x7417('0x26')](function(){var _0xef39bd=_0x37ddbe[_0x7417('0x28')]({'plain':!![]});var _0x4feb3a='CmHopperAdditionalPhones';return db[_0x7417('0x29')]['destroy']({'where':{'type':_0x4feb3a,'resourceId':_0xef39bd['id']}})['then'](function(){return _0x37ddbe;});})[_0x7417('0x26')](function(){_0x3f1baf[_0x7417('0x1a')](0xcc)[_0x7417('0x1b')]();});}};}function handleEntityNotFound(_0x5df8c3,_0x5e8433){return function(_0x1fb04f){if(!_0x1fb04f){_0x5df8c3['sendStatus'](0x194);}return _0x1fb04f;};}function handleError(_0x2eccef,_0x240df7){_0x240df7=_0x240df7||0x1f4;return function(_0xfaa4cc){logger['error'](_0xfaa4cc['stack']);if(_0xfaa4cc[_0x7417('0x2a')]){delete _0xfaa4cc['name'];}_0x2eccef['status'](_0x240df7)[_0x7417('0x2b')](_0xfaa4cc);};}exports[_0x7417('0x2c')]=function(_0x1f0857,_0x351b06){var _0x2bcbc2={},_0x26c485={},_0x163586={'count':0x0,'rows':[]};var _0x4cd4dd=_[_0x7417('0x2d')](db[_0x7417('0x2e')][_0x7417('0x2f')],function(_0x280168){return{'name':_0x280168[_0x7417('0x30')],'type':_0x280168[_0x7417('0x31')][_0x7417('0x32')]};});_0x26c485[_0x7417('0x33')]=_['map'](_0x4cd4dd,_0x7417('0x2a'));_0x26c485[_0x7417('0x34')]=_[_0x7417('0x35')](_0x1f0857[_0x7417('0x34')]);_0x26c485['filters']=_['intersection'](_0x26c485['model'],_0x26c485['query']);_0x2bcbc2[_0x7417('0x36')]=_['intersection'](_0x26c485['model'],qs[_0x7417('0x37')](_0x1f0857[_0x7417('0x34')][_0x7417('0x37')]));_0x2bcbc2[_0x7417('0x36')]=_0x2bcbc2['attributes'][_0x7417('0x38')]?_0x2bcbc2[_0x7417('0x36')]:_0x26c485[_0x7417('0x33')];if(!_0x1f0857[_0x7417('0x34')][_0x7417('0x39')](_0x7417('0x3a'))){_0x2bcbc2['limit']=qs[_0x7417('0x1e')](_0x1f0857[_0x7417('0x34')][_0x7417('0x1e')]);_0x2bcbc2[_0x7417('0x1d')]=qs[_0x7417('0x1d')](_0x1f0857[_0x7417('0x34')][_0x7417('0x1d')]);}_0x2bcbc2[_0x7417('0x3b')]=qs[_0x7417('0x3c')](_0x1f0857[_0x7417('0x34')][_0x7417('0x3c')]);_0x2bcbc2[_0x7417('0x3d')]=qs['filters'](_['pick'](_0x1f0857[_0x7417('0x34')],_0x26c485['filters']),_0x4cd4dd);if(_0x1f0857['query'][_0x7417('0x3e')]){_0x2bcbc2[_0x7417('0x3d')]=_[_0x7417('0x3f')](_0x2bcbc2[_0x7417('0x3d')],{'$or':_[_0x7417('0x2d')](_0x4cd4dd,function(_0x2f7a0a){if(_0x2f7a0a[_0x7417('0x31')]!=='VIRTUAL'){var _0x3539ec={};_0x3539ec[_0x2f7a0a[_0x7417('0x2a')]]={'$like':'%'+_0x1f0857[_0x7417('0x34')][_0x7417('0x3e')]+'%'};return _0x3539ec;}})});}_0x2bcbc2=_[_0x7417('0x3f')]({},_0x2bcbc2,_0x1f0857[_0x7417('0x40')]);var _0x1192e6={'where':_0x2bcbc2[_0x7417('0x3d')]};return db[_0x7417('0x2e')][_0x7417('0x20')](_0x1192e6)[_0x7417('0x26')](function(_0x50d70d){_0x163586['count']=_0x50d70d;if(_0x1f0857[_0x7417('0x34')][_0x7417('0x41')]){_0x2bcbc2[_0x7417('0x42')]=[{'all':!![]}];}return db['CmHopperAdditionalPhone'][_0x7417('0x43')](_0x2bcbc2);})[_0x7417('0x26')](function(_0x2e9b52){_0x163586[_0x7417('0x44')]=_0x2e9b52;return _0x163586;})[_0x7417('0x26')](respondWithFilteredResult(_0x351b06,_0x2bcbc2))[_0x7417('0x45')](handleError(_0x351b06,null));};exports[_0x7417('0x46')]=function(_0x5dad9a,_0x3363cb){var _0x552e07={'raw':!![],'where':{'id':_0x5dad9a['params']['id']}},_0x4a909d={};_0x4a909d['model']=_['keys'](db[_0x7417('0x2e')]['rawAttributes']);_0x4a909d[_0x7417('0x34')]=_['keys'](_0x5dad9a[_0x7417('0x34')]);_0x4a909d['filters']=_[_0x7417('0x47')](_0x4a909d[_0x7417('0x33')],_0x4a909d['query']);_0x552e07[_0x7417('0x36')]=_[_0x7417('0x47')](_0x4a909d[_0x7417('0x33')],qs[_0x7417('0x37')](_0x5dad9a['query'][_0x7417('0x37')]));_0x552e07[_0x7417('0x36')]=_0x552e07[_0x7417('0x36')]['length']?_0x552e07[_0x7417('0x36')]:_0x4a909d[_0x7417('0x33')];if(_0x5dad9a[_0x7417('0x34')][_0x7417('0x41')]){_0x552e07['include']=[{'all':!![]}];}_0x552e07=_[_0x7417('0x3f')]({},_0x552e07,_0x5dad9a[_0x7417('0x40')]);return db[_0x7417('0x2e')]['find'](_0x552e07)[_0x7417('0x26')](handleEntityNotFound(_0x3363cb,null))[_0x7417('0x26')](respondWithResult(_0x3363cb,null))['catch'](handleError(_0x3363cb,null));};exports[_0x7417('0x48')]=function(_0x32172f,_0x5788db){return db['CmHopperAdditionalPhone']['create'](_0x32172f[_0x7417('0x49')],{})[_0x7417('0x26')](function(_0x5c9320){var _0x473598=_0x32172f[_0x7417('0x4a')][_0x7417('0x28')]({'plain':!![]});if(!_0x473598)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x473598[_0x7417('0x4b')]===_0x7417('0x4a')){var _0x3ebaaf=_0x5c9320[_0x7417('0x28')]({'plain':!![]});var _0x5d69f7=_0x7417('0x4c');return db['UserProfileSection']['find']({'where':{'name':_0x5d69f7,'userProfileId':_0x473598[_0x7417('0x4d')]},'raw':!![]})[_0x7417('0x26')](function(_0x523283){if(_0x523283&&_0x523283['autoAssociation']===0x0){return db[_0x7417('0x29')][_0x7417('0x48')]({'name':_0x3ebaaf[_0x7417('0x2a')],'resourceId':_0x3ebaaf['id'],'type':_0x523283['name'],'sectionId':_0x523283['id']},{})['then'](function(){return _0x5c9320;});}else{return _0x5c9320;}})['catch'](function(_0x2dd7be){logger[_0x7417('0x4e')](_0x7417('0x4f'),_0x2dd7be);throw _0x2dd7be;});}return _0x5c9320;})['then'](respondWithResult(_0x5788db,0xc9))[_0x7417('0x45')](handleError(_0x5788db,null));};exports[_0x7417('0x25')]=function(_0x5a9a4a,_0x41736f){if(_0x5a9a4a[_0x7417('0x49')]['id']){delete _0x5a9a4a['body']['id'];}return db[_0x7417('0x2e')][_0x7417('0x50')]({'where':{'id':_0x5a9a4a[_0x7417('0x51')]['id']}})[_0x7417('0x26')](handleEntityNotFound(_0x41736f,null))[_0x7417('0x26')](saveUpdates(_0x5a9a4a[_0x7417('0x49')],null))[_0x7417('0x26')](respondWithResult(_0x41736f,null))['catch'](handleError(_0x41736f,null));};exports[_0x7417('0x27')]=function(_0xdccc5f,_0x481013){return db[_0x7417('0x2e')]['find']({'where':{'id':_0xdccc5f[_0x7417('0x51')]['id']}})[_0x7417('0x26')](handleEntityNotFound(_0x481013,null))['then'](removeEntity(_0x481013,null))[_0x7417('0x45')](handleError(_0x481013,null));};
\ No newline at end of file
index 9160442..7ee0835 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93ae=['util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmHopperAdditionalPhone.attributes','exports','define','cm_hopper_additional_phones','lodash'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x93ae,0x192));var _0xe93a=function(_0x2012d8,_0x439d2f){_0x2012d8=_0x2012d8-0x0;var _0x4295ec=_0x93ae[_0x2012d8];return _0x4295ec;};'use strict';var _=require(_0xe93a('0x0'));var util=require(_0xe93a('0x1'));var logger=require(_0xe93a('0x2'))('api');var moment=require(_0xe93a('0x3'));var BPromise=require(_0xe93a('0x4'));var rp=require(_0xe93a('0x5'));var fs=require('fs');var path=require(_0xe93a('0x6'));var rimraf=require(_0xe93a('0x7'));var config=require(_0xe93a('0x8'));var attributes=require(_0xe93a('0x9'));module[_0xe93a('0xa')]=function(_0x484731,_0x1f9838){return _0x484731[_0xe93a('0xb')]('CmHopperAdditionalPhone',attributes,{'tableName':_0xe93a('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x38fb=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmHopperAdditionalPhone.attributes','exports','define','CmHopperAdditionalPhone','cm_hopper_additional_phones','lodash','util','../../config/logger'];(function(_0x576422,_0x1ff4d2){var _0x33f6f5=function(_0x3802f9){while(--_0x3802f9){_0x576422['push'](_0x576422['shift']());}};_0x33f6f5(++_0x1ff4d2);}(_0x38fb,0x1b0));var _0xb38f=function(_0x169a8a,_0x3526b1){_0x169a8a=_0x169a8a-0x0;var _0x2e8502=_0x38fb[_0x169a8a];return _0x2e8502;};'use strict';var _=require(_0xb38f('0x0'));var util=require(_0xb38f('0x1'));var logger=require(_0xb38f('0x2'))(_0xb38f('0x3'));var moment=require(_0xb38f('0x4'));var BPromise=require(_0xb38f('0x5'));var rp=require(_0xb38f('0x6'));var fs=require('fs');var path=require(_0xb38f('0x7'));var rimraf=require(_0xb38f('0x8'));var config=require(_0xb38f('0x9'));var attributes=require(_0xb38f('0xa'));module[_0xb38f('0xb')]=function(_0x4674f7,_0x3ad4be){return _0x4674f7[_0xb38f('0xc')](_0xb38f('0xd'),attributes,{'tableName':_0xb38f('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0ed390b..21bac18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41b4=['activateAdditionalPhone','IncrementPreviewCounters','field','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','jayson/promise','client','http','request','then','info','CmHopperAdditionalPhone,\x20%s,\x20%s','request\x20sent','CmHopperAdditionalPhone,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','VerifyAdditionalPhones','CmHopper','findOne','body','ContactId','ListId','VoiceQueueId','CampaignId','CmHopperAdditionalPhone','OrderBy','countbusyretry','countcongestionretry','countnoanswerretry','countabandonedretry','dialGlobalMaxRetry','countnosuchnumberretry','countdropretry','countmachineretry','countagentrejectretry','entity','SwapAdditionalPhones','ASC','duration','waitTime','isNil','scheduledat','minutes','add','phone','createdAt','updatedAt','sequelize','update'];(function(_0xa1e3e3,_0x29fe0e){var _0xc980e9=function(_0x1f5adc){while(--_0x1f5adc){_0xa1e3e3['push'](_0xa1e3e3['shift']());}};_0xc980e9(++_0x29fe0e);}(_0x41b4,0x77));var _0x441b=function(_0x24ca1f,_0x3d2164){_0x24ca1f=_0x24ca1f-0x0;var _0x5f4222=_0x41b4[_0x24ca1f];return _0x5f4222;};'use strict';var _=require(_0x441b('0x0'));var util=require(_0x441b('0x1'));var moment=require(_0x441b('0x2'));var BPromise=require(_0x441b('0x3'));var rs=require(_0x441b('0x4'));var fs=require('fs');var Redis=require(_0x441b('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x441b('0x6'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x441b('0x7'));var client=jayson[_0x441b('0x8')][_0x441b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3da6bf,_0x195670,_0x3d85aa){return new BPromise(function(_0x3ebad7,_0x25fb16){return client[_0x441b('0xa')](_0x3da6bf,_0x3d85aa)[_0x441b('0xb')](function(_0x1694af){logger[_0x441b('0xc')](_0x441b('0xd'),_0x195670,_0x441b('0xe'));logger['debug'](_0x441b('0xf'),_0x195670,_0x441b('0xe'),JSON[_0x441b('0x10')](_0x1694af));if(_0x1694af['error']){if(_0x1694af[_0x441b('0x11')][_0x441b('0x12')]===0x1f4){logger[_0x441b('0x11')](_0x441b('0xd'),_0x195670,_0x1694af['error'][_0x441b('0x13')]);return _0x25fb16(_0x1694af['error'][_0x441b('0x13')]);}logger[_0x441b('0x11')](_0x441b('0xd'),_0x195670,_0x1694af[_0x441b('0x11')]['message']);return _0x3ebad7(_0x1694af[_0x441b('0x11')][_0x441b('0x13')]);}else{logger[_0x441b('0xc')](_0x441b('0xd'),_0x195670,'request\x20sent');_0x3ebad7(_0x1694af[_0x441b('0x14')]['message']);}})[_0x441b('0x15')](function(_0x4ae883){logger[_0x441b('0x11')](_0x441b('0xd'),_0x195670,_0x4ae883);_0x25fb16(_0x4ae883);});});}exports[_0x441b('0x16')]=function(_0x510e2f){var _0x4e3fe9=this;return new Promise(function(_0x582de9,_0x4907c4){return db[_0x441b('0x17')][_0x441b('0x18')]({'raw':!![],'where':{'ContactId':_0x510e2f[_0x441b('0x19')][_0x441b('0x1a')],'ListId':_0x510e2f['body'][_0x441b('0x1b')],'VoiceQueueId':_0x510e2f[_0x441b('0x19')][_0x441b('0x1c')]===undefined?null:_0x510e2f[_0x441b('0x19')]['VoiceQueueId'],'CampaignId':_0x510e2f[_0x441b('0x19')][_0x441b('0x1d')]===undefined?null:_0x510e2f[_0x441b('0x19')][_0x441b('0x1d')]}})[_0x441b('0xb')](function(_0x56b6e5){if(_0x56b6e5!=null){return db[_0x441b('0x1e')][_0x441b('0x18')]({'raw':!![],'where':{'CmHopperId':_0x56b6e5['id'],'OrderBy':{'$gt':_0x56b6e5[_0x441b('0x1f')]}},'order':[[_0x441b('0x1f'),'ASC']]})['then'](function(_0x362491){var _0x219cf0=0x0;if(_0x362491){if(_0x362491[_0x441b('0x20')]+_0x362491[_0x441b('0x21')]+_0x362491[_0x441b('0x22')]+_0x362491['countnosuchnumberretry']+_0x362491['countdropretry']+_0x362491[_0x441b('0x23')]+_0x362491['countmachineretry']+_0x362491['countagentrejectretry']<_0x510e2f['entity'][_0x441b('0x24')])_0x219cf0=0x1;_0x582de9({'additional':_0x219cf0});}else{return db[_0x441b('0x1e')]['findOne']({'raw':!![],'where':{'CmHopperId':_0x56b6e5['id']},'order':[[_0x441b('0x1f'),'ASC']]})[_0x441b('0xb')](function(_0x4959b1){var _0x3dc04c=0x0;if(_0x4959b1){if(_0x4959b1[_0x441b('0x20')]+_0x4959b1[_0x441b('0x21')]+_0x4959b1[_0x441b('0x22')]+_0x4959b1[_0x441b('0x25')]+_0x4959b1[_0x441b('0x26')]+_0x4959b1[_0x441b('0x23')]+_0x4959b1[_0x441b('0x27')]+_0x4959b1[_0x441b('0x28')]<_0x510e2f[_0x441b('0x29')][_0x441b('0x24')])_0x3dc04c=0x1;_0x582de9({'additional':_0x3dc04c});}else{_0x582de9({'additional':0x0});}})[_0x441b('0x15')](function(_0x3c4ff7){logger[_0x441b('0x11')](_0x441b('0x16'),_0x3c4ff7['message']);_0x4907c4(_0x4e3fe9[_0x441b('0x11')](0x1f4,_0x3c4ff7[_0x441b('0x13')]));});}})[_0x441b('0x15')](function(_0x24fd39){logger[_0x441b('0x11')](_0x441b('0x16'),_0x24fd39[_0x441b('0x13')]);_0x4907c4(_0x4e3fe9['error'](0x1f4,_0x24fd39['message']));});}else _0x582de9({'additional':0x0});});});};exports[_0x441b('0x2a')]=function(_0x4de9d8){var _0x1d3281=this;return new Promise(function(_0x224853,_0x408598){return db[_0x441b('0x17')][_0x441b('0x18')]({'raw':!![],'where':{'ContactId':_0x4de9d8[_0x441b('0x19')][_0x441b('0x1a')],'ListId':_0x4de9d8[_0x441b('0x19')][_0x441b('0x1b')],'VoiceQueueId':_0x4de9d8[_0x441b('0x19')][_0x441b('0x1c')]===undefined?null:_0x4de9d8['body'][_0x441b('0x1c')],'CampaignId':_0x4de9d8['body']['CampaignId']===undefined?null:_0x4de9d8[_0x441b('0x19')][_0x441b('0x1d')]}})['then'](function(_0x49385b){if(_0x49385b!=null){return db[_0x441b('0x1e')][_0x441b('0x18')]({'raw':!![],'where':{'CmHopperId':_0x49385b['id'],'OrderBy':{'$gte':_0x49385b[_0x441b('0x1f')]}},'order':[[_0x441b('0x1f'),_0x441b('0x2b')]]})['then'](function(_0x54f148){if(_0x54f148)return activateAdditionalPhone(_0x49385b,_0x4de9d8['body'],_0x54f148,_0x4de9d8[_0x441b('0x2c')],_0x4de9d8[_0x441b('0x2d')])[_0x441b('0xb')](function(_0x412e4b){_0x224853(_0x412e4b);});else{return db[_0x441b('0x1e')]['findOne']({'raw':!![],'where':{'CmHopperId':_0x49385b['id']},'order':[[_0x441b('0x1f'),_0x441b('0x2b')]]})['then'](function(_0x1f9e58){if(_0x1f9e58)return activateAdditionalPhone(_0x49385b,_0x4de9d8[_0x441b('0x19')],_0x1f9e58,_0x4de9d8['duration'],_0x4de9d8['waitTime'])[_0x441b('0xb')](function(_0x4eed3f){_0x224853(_0x4eed3f);});else{_0x224853({'id':_0x49385b['id'],'phone':''});}})[_0x441b('0x15')](function(_0x56dd07){logger['error'](_0x441b('0x16'),_0x56dd07[_0x441b('0x13')]);_0x408598(_0x1d3281[_0x441b('0x11')](0x1f4,_0x56dd07[_0x441b('0x13')]));});}})[_0x441b('0x15')](function(_0xd1d9b6){logger[_0x441b('0x11')](_0x441b('0x16'),_0xd1d9b6['message']);_0x408598(_0x1d3281[_0x441b('0x11')](0x1f4,_0xd1d9b6[_0x441b('0x13')]));});}else _0x224853(0x1);});});};function activateAdditionalPhone(_0x510b41,_0x215b6d,_0x12388f,_0xf6fd54,_0x5294f0){return new Promise(function(_0xb44fd1,_0x14fbed){var _0x3a1e6d;if(_[_0x441b('0x2e')](_0x12388f[_0x441b('0x2f')])){_0x12388f[_0x441b('0x2f')]=moment();}if(moment()>moment(_0x12388f[_0x441b('0x2f')])){_0x3a1e6d=moment()['add'](_0x5294f0||0x3,_0x441b('0x30'));}else{if(_0x12388f[_0x441b('0x1f')]==0x0){_0x3a1e6d=moment(_0x12388f['scheduledat']);}else{_0x3a1e6d=moment()['add'](_0x5294f0||0x3,_0x441b('0x30'));}}if(_[_0x441b('0x2e')](_0x3a1e6d)){_0x3a1e6d=moment()[_0x441b('0x31')](_0x5294f0||0x3,'minutes');}var _0x72d9b2={'phone':_0x510b41[_0x441b('0x32')],'active':0x0,'OrderBy':_[_0x441b('0x2e')](_0x510b41[_0x441b('0x1f')])?0x0:_0x510b41[_0x441b('0x1f')],'scheduledat':moment()[_0x441b('0x31')](_0xf6fd54||0x1,_0x441b('0x30')),'countbusyretry':_0x215b6d[_0x441b('0x20')],'countcongestionretry':_0x215b6d[_0x441b('0x21')],'countnoanswerretry':_0x215b6d[_0x441b('0x22')],'countnosuchnumberretry':_0x215b6d[_0x441b('0x25')],'countdropretry':_0x215b6d[_0x441b('0x26')],'countabandonedretry':_0x215b6d['countabandonedretry'],'countmachineretry':_0x215b6d['countmachineretry'],'countagentrejectretry':_0x215b6d[_0x441b('0x28')],'createdAt':_0x215b6d[_0x441b('0x33')],'updatedAt':_0x215b6d[_0x441b('0x34')]};var _0x4005d6={'CmHopperId':_0x510b41['id'],'phone':_0x12388f[_0x441b('0x32')],'active':0x0,'OrderBy':_[_0x441b('0x2e')](_0x12388f[_0x441b('0x1f')])?0x0:_0x12388f[_0x441b('0x1f')],'scheduledat':_0x3a1e6d,'countbusyretry':_0x12388f['countbusyretry'],'countcongestionretry':_0x12388f[_0x441b('0x21')],'countnoanswerretry':_0x12388f[_0x441b('0x22')],'countnosuchnumberretry':_0x12388f[_0x441b('0x25')],'countdropretry':_0x12388f['countdropretry'],'countabandonedretry':_0x12388f[_0x441b('0x23')],'countmachineretry':_0x12388f[_0x441b('0x27')],'countagentrejectretry':_0x12388f[_0x441b('0x28')],'createdAt':_0x12388f[_0x441b('0x33')],'updatedAt':_0x12388f[_0x441b('0x34')]};return db[_0x441b('0x35')]['transaction'](function(_0x635978){return db[_0x441b('0x1e')][_0x441b('0x36')](_0x72d9b2,{'where':{'id':_0x12388f['id']}},{'transaction':_0x635978})[_0x441b('0xb')](function(){return db['CmHopper'][_0x441b('0x36')](_0x4005d6,{'where':{'id':_0x510b41['id']}},{'transaction':_0x635978});});})['then'](function(_0x1c9e0b){_0xb44fd1({'id':_0x510b41['id'],'phone':_0x12388f['phone']});})[_0x441b('0x15')](function(_0x30351e){logger['error'](_0x441b('0x37'),_0x30351e[_0x441b('0x13')]);_0x14fbed({'error':_0x30351e[_0x441b('0x13')]});});});}exports[_0x441b('0x38')]=function(_0x105496){var _0x3511b3=this;return new Promise(function(_0x4a9316,_0x14c055){return db[_0x441b('0x17')]['update'](_0x105496[_0x441b('0x19')][_0x441b('0x39')],{'where':{'id':_0x105496[_0x441b('0x19')]['id']}})[_0x441b('0xb')](function(_0x560635){_0x4a9316(_0x560635);})[_0x441b('0x15')](function(_0x209e12){logger[_0x441b('0x11')](_0x441b('0x38'),_0x209e12[_0x441b('0x13')]);_0x14c055(_0x3511b3[_0x441b('0x11')](0x1f4,_0x209e12['message']));});});};
\ No newline at end of file
+var _0x741a=['minutes','phone','createdAt','updatedAt','sequelize','transaction','update','IncrementPreviewCounters','lodash','util','moment','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','CmHopperAdditionalPhone,\x20%s,\x20%s','debug','CmHopperAdditionalPhone,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','VerifyAdditionalPhones','CmHopper','findOne','body','ListId','VoiceQueueId','CampaignId','CmHopperAdditionalPhone','OrderBy','ASC','countbusyretry','countcongestionretry','countnosuchnumberretry','countabandonedretry','countnoanswerretry','countdropretry','countagentrejectretry','entity','dialGlobalMaxRetry','SwapAdditionalPhones','ContactId','duration','waitTime','isNil','scheduledat','add'];(function(_0x57874b,_0x315df5){var _0x415a70=function(_0x115400){while(--_0x115400){_0x57874b['push'](_0x57874b['shift']());}};_0x415a70(++_0x315df5);}(_0x741a,0x1d8));var _0xa741=function(_0x337945,_0x19ad92){_0x337945=_0x337945-0x0;var _0x16a9d2=_0x741a[_0x337945];return _0x16a9d2;};'use strict';var _=require(_0xa741('0x0'));var util=require(_0xa741('0x1'));var moment=require(_0xa741('0x2'));var BPromise=require('bluebird');var rs=require(_0xa741('0x3'));var fs=require('fs');var Redis=require(_0xa741('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xa741('0x5'))(_0xa741('0x6'));var config=require(_0xa741('0x7'));var jayson=require(_0xa741('0x8'));var client=jayson[_0xa741('0x9')][_0xa741('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1208fb,_0x5f2509,_0x4ca6a5){return new BPromise(function(_0x53fb00,_0x1dc19b){return client[_0xa741('0xb')](_0x1208fb,_0x4ca6a5)[_0xa741('0xc')](function(_0x47710b){logger[_0xa741('0xd')](_0xa741('0xe'),_0x5f2509,'request\x20sent');logger[_0xa741('0xf')](_0xa741('0x10'),_0x5f2509,'request\x20sent',JSON[_0xa741('0x11')](_0x47710b));if(_0x47710b[_0xa741('0x12')]){if(_0x47710b[_0xa741('0x12')][_0xa741('0x13')]===0x1f4){logger[_0xa741('0x12')](_0xa741('0xe'),_0x5f2509,_0x47710b['error']['message']);return _0x1dc19b(_0x47710b[_0xa741('0x12')]['message']);}logger[_0xa741('0x12')](_0xa741('0xe'),_0x5f2509,_0x47710b[_0xa741('0x12')]['message']);return _0x53fb00(_0x47710b[_0xa741('0x12')][_0xa741('0x14')]);}else{logger['info'](_0xa741('0xe'),_0x5f2509,_0xa741('0x15'));_0x53fb00(_0x47710b[_0xa741('0x16')]['message']);}})[_0xa741('0x17')](function(_0x238417){logger[_0xa741('0x12')](_0xa741('0xe'),_0x5f2509,_0x238417);_0x1dc19b(_0x238417);});});}exports[_0xa741('0x18')]=function(_0x3d182a){var _0x35b4cd=this;return new Promise(function(_0x2e66c6,_0xcd2d51){return db[_0xa741('0x19')][_0xa741('0x1a')]({'raw':!![],'where':{'ContactId':_0x3d182a[_0xa741('0x1b')]['ContactId'],'ListId':_0x3d182a[_0xa741('0x1b')][_0xa741('0x1c')],'VoiceQueueId':_0x3d182a[_0xa741('0x1b')][_0xa741('0x1d')]===undefined?null:_0x3d182a[_0xa741('0x1b')][_0xa741('0x1d')],'CampaignId':_0x3d182a[_0xa741('0x1b')][_0xa741('0x1e')]===undefined?null:_0x3d182a[_0xa741('0x1b')]['CampaignId']}})[_0xa741('0xc')](function(_0x4133d2){if(_0x4133d2!=null){return db[_0xa741('0x1f')][_0xa741('0x1a')]({'raw':!![],'where':{'CmHopperId':_0x4133d2['id'],'OrderBy':{'$gt':_0x4133d2[_0xa741('0x20')]}},'order':[[_0xa741('0x20'),_0xa741('0x21')]]})['then'](function(_0x575acd){var _0x2af84b=0x0;if(_0x575acd){if(_0x575acd[_0xa741('0x22')]+_0x575acd[_0xa741('0x23')]+_0x575acd['countnoanswerretry']+_0x575acd[_0xa741('0x24')]+_0x575acd['countdropretry']+_0x575acd[_0xa741('0x25')]+_0x575acd['countmachineretry']+_0x575acd['countagentrejectretry']<_0x3d182a['entity']['dialGlobalMaxRetry'])_0x2af84b=0x1;_0x2e66c6({'additional':_0x2af84b});}else{return db[_0xa741('0x1f')][_0xa741('0x1a')]({'raw':!![],'where':{'CmHopperId':_0x4133d2['id']},'order':[[_0xa741('0x20'),_0xa741('0x21')]]})[_0xa741('0xc')](function(_0x22b81a){var _0x300662=0x0;if(_0x22b81a){if(_0x22b81a[_0xa741('0x22')]+_0x22b81a['countcongestionretry']+_0x22b81a[_0xa741('0x26')]+_0x22b81a[_0xa741('0x24')]+_0x22b81a[_0xa741('0x27')]+_0x22b81a[_0xa741('0x25')]+_0x22b81a['countmachineretry']+_0x22b81a[_0xa741('0x28')]<_0x3d182a[_0xa741('0x29')][_0xa741('0x2a')])_0x300662=0x1;_0x2e66c6({'additional':_0x300662});}else{_0x2e66c6({'additional':0x0});}})[_0xa741('0x17')](function(_0x56c965){logger[_0xa741('0x12')](_0xa741('0x18'),_0x56c965['message']);_0xcd2d51(_0x35b4cd[_0xa741('0x12')](0x1f4,_0x56c965[_0xa741('0x14')]));});}})[_0xa741('0x17')](function(_0x340a17){logger['error'](_0xa741('0x18'),_0x340a17[_0xa741('0x14')]);_0xcd2d51(_0x35b4cd['error'](0x1f4,_0x340a17[_0xa741('0x14')]));});}else _0x2e66c6({'additional':0x0});});});};exports[_0xa741('0x2b')]=function(_0x2b7896){var _0x1d334e=this;return new Promise(function(_0x4cc53b,_0x2ab2c6){return db[_0xa741('0x19')][_0xa741('0x1a')]({'raw':!![],'where':{'ContactId':_0x2b7896[_0xa741('0x1b')][_0xa741('0x2c')],'ListId':_0x2b7896['body'][_0xa741('0x1c')],'VoiceQueueId':_0x2b7896[_0xa741('0x1b')]['VoiceQueueId']===undefined?null:_0x2b7896[_0xa741('0x1b')][_0xa741('0x1d')],'CampaignId':_0x2b7896[_0xa741('0x1b')][_0xa741('0x1e')]===undefined?null:_0x2b7896[_0xa741('0x1b')][_0xa741('0x1e')]}})[_0xa741('0xc')](function(_0x5bc900){if(_0x5bc900!=null){return db[_0xa741('0x1f')][_0xa741('0x1a')]({'raw':!![],'where':{'CmHopperId':_0x5bc900['id'],'OrderBy':{'$gte':_0x5bc900[_0xa741('0x20')]}},'order':[[_0xa741('0x20'),'ASC']]})[_0xa741('0xc')](function(_0xa4da74){if(_0xa4da74)return activateAdditionalPhone(_0x5bc900,_0x2b7896[_0xa741('0x1b')],_0xa4da74,_0x2b7896[_0xa741('0x2d')],_0x2b7896[_0xa741('0x2e')])['then'](function(_0x32fc27){_0x4cc53b(_0x32fc27);});else{return db[_0xa741('0x1f')][_0xa741('0x1a')]({'raw':!![],'where':{'CmHopperId':_0x5bc900['id']},'order':[[_0xa741('0x20'),_0xa741('0x21')]]})[_0xa741('0xc')](function(_0x5f1380){if(_0x5f1380)return activateAdditionalPhone(_0x5bc900,_0x2b7896[_0xa741('0x1b')],_0x5f1380,_0x2b7896[_0xa741('0x2d')],_0x2b7896[_0xa741('0x2e')])[_0xa741('0xc')](function(_0x30bf48){_0x4cc53b(_0x30bf48);});else{_0x4cc53b({'id':_0x5bc900['id'],'phone':''});}})[_0xa741('0x17')](function(_0x1e199e){logger[_0xa741('0x12')]('VerifyAdditionalPhones',_0x1e199e[_0xa741('0x14')]);_0x2ab2c6(_0x1d334e[_0xa741('0x12')](0x1f4,_0x1e199e[_0xa741('0x14')]));});}})[_0xa741('0x17')](function(_0x2f0522){logger[_0xa741('0x12')]('VerifyAdditionalPhones',_0x2f0522[_0xa741('0x14')]);_0x2ab2c6(_0x1d334e[_0xa741('0x12')](0x1f4,_0x2f0522[_0xa741('0x14')]));});}else _0x4cc53b(0x1);});});};function activateAdditionalPhone(_0x1553a8,_0x3e5d9f,_0x2e3aaf,_0x2f9896,_0x5e9588){return new Promise(function(_0xb638e7,_0x5e33f3){var _0x1ccfc6;if(_[_0xa741('0x2f')](_0x2e3aaf[_0xa741('0x30')])){_0x2e3aaf[_0xa741('0x30')]=moment();}if(moment()>moment(_0x2e3aaf['scheduledat'])){_0x1ccfc6=moment()[_0xa741('0x31')](_0x5e9588||0x3,_0xa741('0x32'));}else{if(_0x2e3aaf[_0xa741('0x20')]==0x0){_0x1ccfc6=moment(_0x2e3aaf[_0xa741('0x30')]);}else{_0x1ccfc6=moment()[_0xa741('0x31')](_0x5e9588||0x3,_0xa741('0x32'));}}if(_[_0xa741('0x2f')](_0x1ccfc6)){_0x1ccfc6=moment()['add'](_0x5e9588||0x3,_0xa741('0x32'));}var _0x59d68c={'phone':_0x1553a8[_0xa741('0x33')],'active':0x0,'OrderBy':_[_0xa741('0x2f')](_0x1553a8['OrderBy'])?0x0:_0x1553a8[_0xa741('0x20')],'scheduledat':moment()[_0xa741('0x31')](_0x2f9896||0x1,_0xa741('0x32')),'countbusyretry':_0x3e5d9f[_0xa741('0x22')],'countcongestionretry':_0x3e5d9f[_0xa741('0x23')],'countnoanswerretry':_0x3e5d9f[_0xa741('0x26')],'countnosuchnumberretry':_0x3e5d9f[_0xa741('0x24')],'countdropretry':_0x3e5d9f[_0xa741('0x27')],'countabandonedretry':_0x3e5d9f[_0xa741('0x25')],'countmachineretry':_0x3e5d9f['countmachineretry'],'countagentrejectretry':_0x3e5d9f[_0xa741('0x28')],'createdAt':_0x3e5d9f[_0xa741('0x34')],'updatedAt':_0x3e5d9f['updatedAt']};var _0x4f727a={'CmHopperId':_0x1553a8['id'],'phone':_0x2e3aaf[_0xa741('0x33')],'active':0x0,'OrderBy':_[_0xa741('0x2f')](_0x2e3aaf[_0xa741('0x20')])?0x0:_0x2e3aaf[_0xa741('0x20')],'scheduledat':_0x1ccfc6,'countbusyretry':_0x2e3aaf[_0xa741('0x22')],'countcongestionretry':_0x2e3aaf['countcongestionretry'],'countnoanswerretry':_0x2e3aaf[_0xa741('0x26')],'countnosuchnumberretry':_0x2e3aaf[_0xa741('0x24')],'countdropretry':_0x2e3aaf[_0xa741('0x27')],'countabandonedretry':_0x2e3aaf[_0xa741('0x25')],'countmachineretry':_0x2e3aaf['countmachineretry'],'countagentrejectretry':_0x2e3aaf['countagentrejectretry'],'createdAt':_0x2e3aaf[_0xa741('0x34')],'updatedAt':_0x2e3aaf[_0xa741('0x35')]};return db[_0xa741('0x36')][_0xa741('0x37')](function(_0x561a46){return db[_0xa741('0x1f')][_0xa741('0x38')](_0x59d68c,{'where':{'id':_0x2e3aaf['id']}},{'transaction':_0x561a46})['then'](function(){return db[_0xa741('0x19')]['update'](_0x4f727a,{'where':{'id':_0x1553a8['id']}},{'transaction':_0x561a46});});})[_0xa741('0xc')](function(_0x5e5a1b){_0xb638e7({'id':_0x1553a8['id'],'phone':_0x2e3aaf['phone']});})[_0xa741('0x17')](function(_0x24aef6){logger['error']('activateAdditionalPhone',_0x24aef6[_0xa741('0x14')]);_0x5e33f3({'error':_0x24aef6[_0xa741('0x14')]});});});}exports['IncrementPreviewCounters']=function(_0x5f4dc1){var _0x40a3b2=this;return new Promise(function(_0x44c45a,_0x5f2d0a){return db[_0xa741('0x19')][_0xa741('0x38')](_0x5f4dc1['body']['field'],{'where':{'id':_0x5f4dc1[_0xa741('0x1b')]['id']}})[_0xa741('0xc')](function(_0x1290be){_0x44c45a(_0x1290be);})['catch'](function(_0x3b4813){logger['error'](_0xa741('0x39'),_0x3b4813[_0xa741('0x14')]);_0x5f2d0a(_0x40a3b2['error'](0x1f4,_0x3b4813[_0xa741('0x14')]));});});};
\ No newline at end of file
index 2760533..966a1ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbec=['/:id','update','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./cmHopperAdditionalPhone.controller','get','isAuthenticated','show','post','put'];(function(_0x138518,_0x2c741c){var _0x541eb8=function(_0x4c952f){while(--_0x4c952f){_0x138518['push'](_0x138518['shift']());}};_0x541eb8(++_0x2c741c);}(_0xbbec,0x7b));var _0xcbbe=function(_0x4acd5f,_0xdb7ab2){_0x4acd5f=_0x4acd5f-0x0;var _0x3b3eb5=_0xbbec[_0x4acd5f];return _0x3b3eb5;};'use strict';var multer=require(_0xcbbe('0x0'));var util=require('util');var path=require(_0xcbbe('0x1'));var timeout=require('connect-timeout');var express=require(_0xcbbe('0x2'));var router=express[_0xcbbe('0x3')]();var fs_extra=require(_0xcbbe('0x4'));var auth=require(_0xcbbe('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xcbbe('0x6'));var controller=require(_0xcbbe('0x7'));router[_0xcbbe('0x8')]('/',auth[_0xcbbe('0x9')](),controller['index']);router['get']('/:id',auth[_0xcbbe('0x9')](),controller[_0xcbbe('0xa')]);router[_0xcbbe('0xb')]('/',auth[_0xcbbe('0x9')](),controller['create']);router[_0xcbbe('0xc')](_0xcbbe('0xd'),auth[_0xcbbe('0x9')](),controller[_0xcbbe('0xe')]);router['delete'](_0xcbbe('0xd'),auth['isAuthenticated'](),controller[_0xcbbe('0xf')]);module[_0xcbbe('0x10')]=router;
\ No newline at end of file
+var _0x3c8e=['/:id','show','post','create','delete','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./cmHopperAdditionalPhone.controller','get','isAuthenticated','index'];(function(_0x179b53,_0x31f6fe){var _0x38a146=function(_0x33f0c2){while(--_0x33f0c2){_0x179b53['push'](_0x179b53['shift']());}};_0x38a146(++_0x31f6fe);}(_0x3c8e,0xf3));var _0xe3c8=function(_0x18418c,_0x51e952){_0x18418c=_0x18418c-0x0;var _0x1fa46a=_0x3c8e[_0x18418c];return _0x1fa46a;};'use strict';var multer=require(_0xe3c8('0x0'));var util=require(_0xe3c8('0x1'));var path=require(_0xe3c8('0x2'));var timeout=require(_0xe3c8('0x3'));var express=require(_0xe3c8('0x4'));var router=express['Router']();var fs_extra=require(_0xe3c8('0x5'));var auth=require(_0xe3c8('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xe3c8('0x7'));var controller=require(_0xe3c8('0x8'));router[_0xe3c8('0x9')]('/',auth[_0xe3c8('0xa')](),controller[_0xe3c8('0xb')]);router['get'](_0xe3c8('0xc'),auth[_0xe3c8('0xa')](),controller[_0xe3c8('0xd')]);router[_0xe3c8('0xe')]('/',auth[_0xe3c8('0xa')](),controller[_0xe3c8('0xf')]);router['put'](_0xe3c8('0xc'),auth[_0xe3c8('0xa')](),controller['update']);router[_0xe3c8('0x10')](_0xe3c8('0xc'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index c725c0d..af7c946 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x847f=['contactListQueue','moment','sequelize','exports','INTEGER'];(function(_0x14b280,_0x570402){var _0x40065b=function(_0x297226){while(--_0x297226){_0x14b280['push'](_0x14b280['shift']());}};_0x40065b(++_0x570402);}(_0x847f,0x182));var _0xf847=function(_0xf80b3,_0x25d5f3){_0xf80b3=_0xf80b3-0x0;var _0x10c489=_0x847f[_0xf80b3];return _0x10c489;};'use strict';var moment=require(_0xf847('0x0'));var Sequelize=require(_0xf847('0x1'));module[_0xf847('0x2')]={'phone':{'type':Sequelize['STRING'],'allowNull':![]},'ContactId':{'type':Sequelize[_0xf847('0x3')],'unique':_0xf847('0x4')},'ListId':{'type':Sequelize[_0xf847('0x3')],'unique':_0xf847('0x4')},'VoiceQueueId':{'type':Sequelize[_0xf847('0x3')],'unique':'contactListQueue'}};
\ No newline at end of file
+var _0x1c88=['moment','exports','STRING','INTEGER','contactListQueue'];(function(_0x2a5860,_0x496cc1){var _0x28f39c=function(_0x4ee545){while(--_0x4ee545){_0x2a5860['push'](_0x2a5860['shift']());}};_0x28f39c(++_0x496cc1);}(_0x1c88,0x1a9));var _0x81c8=function(_0x47848c,_0x1c52f3){_0x47848c=_0x47848c-0x0;var _0x520324=_0x1c88[_0x47848c];return _0x520324;};'use strict';var moment=require(_0x81c8('0x0'));var Sequelize=require('sequelize');module[_0x81c8('0x1')]={'phone':{'type':Sequelize[_0x81c8('0x2')],'allowNull':![]},'ContactId':{'type':Sequelize[_0x81c8('0x3')],'unique':'contactListQueue'},'ListId':{'type':Sequelize['INTEGER'],'unique':_0x81c8('0x4')},'VoiceQueueId':{'type':Sequelize[_0x81c8('0x3')],'unique':_0x81c8('0x4')}};
\ No newline at end of file
index c968150..9671f91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x884f=['papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','save','update','then','destroy','error','name','send','index','map','CmHopperBlack','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','params','keys','body','find','describe','rimraf','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring'];(function(_0xe3e0af,_0x4564ed){var _0x4828e9=function(_0x55c7a7){while(--_0x55c7a7){_0xe3e0af['push'](_0xe3e0af['shift']());}};_0x4828e9(++_0x4564ed);}(_0x884f,0x116));var _0xf884=function(_0x34ad22,_0x466bc9){_0x34ad22=_0x34ad22-0x0;var _0x1d3cc4=_0x884f[_0x34ad22];return _0x1d3cc4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf884('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xf884('0x1'));var moment=require('moment');var BPromise=require(_0xf884('0x2'));var Mustache=require(_0xf884('0x3'));var util=require('util');var path=require(_0xf884('0x4'));var sox=require(_0xf884('0x5'));var csv=require(_0xf884('0x6'));var ejs=require(_0xf884('0x7'));var fs=require('fs');var fs_extra=require(_0xf884('0x8'));var _=require(_0xf884('0x9'));var squel=require(_0xf884('0xa'));var crypto=require(_0xf884('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xf884('0xc'));var toCsv=require(_0xf884('0x6'));var querystring=require(_0xf884('0xd'));var Papa=require(_0xf884('0xe'));var Redis=require(_0xf884('0xf'));var authService=require(_0xf884('0x10'));var qs=require(_0xf884('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf884('0x12'));var logger=require(_0xf884('0x13'))('api');var utils=require('../../config/utils');var config=require(_0xf884('0x14'));var licenseUtil=require(_0xf884('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x31e1e3,_0x1b681b){_0x1b681b=_0x1b681b||0xcc;return function(_0x4fade4){if(_0x4fade4){return _0x31e1e3[_0xf884('0x16')](_0x1b681b);}return _0x31e1e3[_0xf884('0x17')](_0x1b681b)[_0xf884('0x18')]();};}function respondWithResult(_0x1fda7b,_0x278bb9){_0x278bb9=_0x278bb9||0xc8;return function(_0x1f4993){if(_0x1f4993){return _0x1fda7b[_0xf884('0x17')](_0x278bb9)[_0xf884('0x19')](_0x1f4993);}};}function respondWithFilteredResult(_0x24cf61,_0xb62605){return function(_0x2b97e3){if(_0x2b97e3){var _0x41be1e=typeof _0xb62605[_0xf884('0x1a')]==='undefined'&&typeof _0xb62605[_0xf884('0x1b')]===_0xf884('0x1c');var _0x51dc79=_0x2b97e3[_0xf884('0x1d')];var _0x26ba8f=_0x41be1e?0x0:_0xb62605[_0xf884('0x1a')];var _0x409a4e=_0x41be1e?_0x2b97e3['count']:_0xb62605[_0xf884('0x1a')]+_0xb62605['limit'];var _0x2781a2;if(_0x409a4e>=_0x51dc79){_0x409a4e=_0x51dc79;_0x2781a2=0xc8;}else{_0x2781a2=0xce;}_0x24cf61[_0xf884('0x17')](_0x2781a2);return _0x24cf61[_0xf884('0x1e')](_0xf884('0x1f'),_0x26ba8f+'-'+_0x409a4e+'/'+_0x51dc79)[_0xf884('0x19')](_0x2b97e3);}return null;};}function patchUpdates(_0x633af0){return function(_0x433935){try{jsonpatch['apply'](_0x433935,_0x633af0,!![]);}catch(_0x23d4f5){return BPromise['reject'](_0x23d4f5);}return _0x433935[_0xf884('0x20')]();};}function saveUpdates(_0x298122,_0x2051c3){return function(_0x13cf66){if(_0x13cf66){return _0x13cf66[_0xf884('0x21')](_0x298122)[_0xf884('0x22')](function(_0x1c3d1b){return _0x1c3d1b;});}return null;};}function removeEntity(_0x30ec08,_0xfbc55f){return function(_0xd4de){if(_0xd4de){return _0xd4de[_0xf884('0x23')]()[_0xf884('0x22')](function(){_0x30ec08[_0xf884('0x17')](0xcc)[_0xf884('0x18')]();});}};}function handleEntityNotFound(_0x9c7331,_0x4877d9){return function(_0x3d3d1b){if(!_0x3d3d1b){_0x9c7331['sendStatus'](0x194);}return _0x3d3d1b;};}function handleError(_0x1389a6,_0x27f124){_0x27f124=_0x27f124||0x1f4;return function(_0x29d598){logger[_0xf884('0x24')](_0x29d598['stack']);if(_0x29d598[_0xf884('0x25')]){delete _0x29d598[_0xf884('0x25')];}_0x1389a6['status'](_0x27f124)[_0xf884('0x26')](_0x29d598);};}exports[_0xf884('0x27')]=function(_0x25b6c7,_0x210d64){var _0x2895b5={},_0x5ce8d1={},_0x343b8a={'count':0x0,'rows':[]};var _0x230843=_[_0xf884('0x28')](db[_0xf884('0x29')][_0xf884('0x2a')],function(_0x2462c4){return{'name':_0x2462c4[_0xf884('0x2b')],'type':_0x2462c4[_0xf884('0x2c')][_0xf884('0x2d')]};});_0x5ce8d1[_0xf884('0x2e')]=_[_0xf884('0x28')](_0x230843,_0xf884('0x25'));_0x5ce8d1[_0xf884('0x2f')]=_['keys'](_0x25b6c7['query']);_0x5ce8d1[_0xf884('0x30')]=_[_0xf884('0x31')](_0x5ce8d1[_0xf884('0x2e')],_0x5ce8d1[_0xf884('0x2f')]);_0x2895b5[_0xf884('0x32')]=_[_0xf884('0x31')](_0x5ce8d1['model'],qs[_0xf884('0x33')](_0x25b6c7['query']['fields']));_0x2895b5[_0xf884('0x32')]=_0x2895b5[_0xf884('0x32')][_0xf884('0x34')]?_0x2895b5['attributes']:_0x5ce8d1[_0xf884('0x2e')];if(!_0x25b6c7['query'][_0xf884('0x35')](_0xf884('0x36'))){_0x2895b5[_0xf884('0x1b')]=qs[_0xf884('0x1b')](_0x25b6c7[_0xf884('0x2f')][_0xf884('0x1b')]);_0x2895b5['offset']=qs[_0xf884('0x1a')](_0x25b6c7[_0xf884('0x2f')][_0xf884('0x1a')]);}_0x2895b5[_0xf884('0x37')]=qs[_0xf884('0x38')](_0x25b6c7['query'][_0xf884('0x38')]);_0x2895b5[_0xf884('0x39')]=qs[_0xf884('0x30')](_[_0xf884('0x3a')](_0x25b6c7[_0xf884('0x2f')],_0x5ce8d1[_0xf884('0x30')]),_0x230843);if(_0x25b6c7[_0xf884('0x2f')]['filter']){_0x2895b5[_0xf884('0x39')]=_[_0xf884('0x3b')](_0x2895b5[_0xf884('0x39')],{'$or':_[_0xf884('0x28')](_0x230843,function(_0x20c257){if(_0x20c257['type']!==_0xf884('0x3c')){var _0x1fe25e={};_0x1fe25e[_0x20c257[_0xf884('0x25')]]={'$like':'%'+_0x25b6c7[_0xf884('0x2f')][_0xf884('0x3d')]+'%'};return _0x1fe25e;}})});}_0x2895b5=_[_0xf884('0x3b')]({},_0x2895b5,_0x25b6c7[_0xf884('0x3e')]);var _0x5373f3={'where':_0x2895b5['where']};return db[_0xf884('0x29')][_0xf884('0x1d')](_0x5373f3)[_0xf884('0x22')](function(_0x19acf0){_0x343b8a['count']=_0x19acf0;if(_0x25b6c7[_0xf884('0x2f')][_0xf884('0x3f')]){_0x2895b5[_0xf884('0x40')]=[{'all':!![]}];}return db[_0xf884('0x29')][_0xf884('0x41')](_0x2895b5);})[_0xf884('0x22')](function(_0x3f961b){_0x343b8a[_0xf884('0x42')]=_0x3f961b;return _0x343b8a;})[_0xf884('0x22')](respondWithFilteredResult(_0x210d64,_0x2895b5))[_0xf884('0x43')](handleError(_0x210d64,null));};exports['show']=function(_0x49d9d9,_0x4557ef){var _0x22f0fb={'raw':!![],'where':{'id':_0x49d9d9[_0xf884('0x44')]['id']}},_0x2352a7={};_0x2352a7[_0xf884('0x2e')]=_[_0xf884('0x45')](db['CmHopperBlack'][_0xf884('0x2a')]);_0x2352a7[_0xf884('0x2f')]=_[_0xf884('0x45')](_0x49d9d9[_0xf884('0x2f')]);_0x2352a7['filters']=_['intersection'](_0x2352a7[_0xf884('0x2e')],_0x2352a7[_0xf884('0x2f')]);_0x22f0fb[_0xf884('0x32')]=_[_0xf884('0x31')](_0x2352a7[_0xf884('0x2e')],qs[_0xf884('0x33')](_0x49d9d9['query'][_0xf884('0x33')]));_0x22f0fb[_0xf884('0x32')]=_0x22f0fb['attributes'][_0xf884('0x34')]?_0x22f0fb[_0xf884('0x32')]:_0x2352a7[_0xf884('0x2e')];if(_0x49d9d9[_0xf884('0x2f')][_0xf884('0x3f')]){_0x22f0fb[_0xf884('0x40')]=[{'all':!![]}];}_0x22f0fb=_[_0xf884('0x3b')]({},_0x22f0fb,_0x49d9d9[_0xf884('0x3e')]);return db[_0xf884('0x29')]['find'](_0x22f0fb)['then'](handleEntityNotFound(_0x4557ef,null))[_0xf884('0x22')](respondWithResult(_0x4557ef,null))['catch'](handleError(_0x4557ef,null));};exports['update']=function(_0x13a16c,_0x15d048){if(_0x13a16c[_0xf884('0x46')]['id']){delete _0x13a16c[_0xf884('0x46')]['id'];}return db[_0xf884('0x29')]['find']({'where':{'id':_0x13a16c[_0xf884('0x44')]['id']}})[_0xf884('0x22')](handleEntityNotFound(_0x15d048,null))[_0xf884('0x22')](saveUpdates(_0x13a16c[_0xf884('0x46')],null))[_0xf884('0x22')](respondWithResult(_0x15d048,null))[_0xf884('0x43')](handleError(_0x15d048,null));};exports['destroy']=function(_0x149cd3,_0x49bf84){return db[_0xf884('0x29')][_0xf884('0x47')]({'where':{'id':_0x149cd3[_0xf884('0x44')]['id']}})[_0xf884('0x22')](handleEntityNotFound(_0x49bf84,null))['then'](removeEntity(_0x49bf84,null))[_0xf884('0x43')](handleError(_0x49bf84,null));};exports[_0xf884('0x48')]=function(_0x3fc515,_0x484222){return db[_0xf884('0x29')][_0xf884('0x48')]()[_0xf884('0x22')](respondWithResult(_0x484222,null))[_0xf884('0x43')](handleError(_0x484222,null));};
\ No newline at end of file
+var _0xde97=['../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','limit','count','set','Content-Range','apply','update','then','destroy','error','name','send','map','CmHopperBlack','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','hasOwnProperty','order','sort','filter','where','merge','options','includeAll','include','findAll','rows','show','params','keys','fields','length','find','catch','body','describe','zip-dir','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x1422d0,_0x57f03c){var _0x3d5850=function(_0x1d211c){while(--_0x1d211c){_0x1422d0['push'](_0x1422d0['shift']());}};_0x3d5850(++_0x57f03c);}(_0xde97,0x192));var _0x7de9=function(_0x46a3e8,_0x2e1b35){_0x46a3e8=_0x46a3e8-0x0;var _0xf1442e=_0xde97[_0x46a3e8];return _0xf1442e;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x7de9('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7de9('0x1'));var moment=require(_0x7de9('0x2'));var BPromise=require(_0x7de9('0x3'));var Mustache=require(_0x7de9('0x4'));var util=require('util');var path=require(_0x7de9('0x5'));var sox=require(_0x7de9('0x6'));var csv=require(_0x7de9('0x7'));var ejs=require(_0x7de9('0x8'));var fs=require('fs');var fs_extra=require(_0x7de9('0x9'));var _=require(_0x7de9('0xa'));var squel=require(_0x7de9('0xb'));var crypto=require('crypto');var jsforce=require(_0x7de9('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x7de9('0x7'));var querystring=require(_0x7de9('0xd'));var Papa=require(_0x7de9('0xe'));var Redis=require(_0x7de9('0xf'));var authService=require(_0x7de9('0x10'));var qs=require(_0x7de9('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7de9('0x12'));var logger=require('../../config/logger')(_0x7de9('0x13'));var utils=require(_0x7de9('0x14'));var config=require(_0x7de9('0x15'));var licenseUtil=require(_0x7de9('0x16'));var db=require(_0x7de9('0x17'))['db'];function respondWithStatusCode(_0x14cab8,_0x506b6f){_0x506b6f=_0x506b6f||0xcc;return function(_0x49d9a5){if(_0x49d9a5){return _0x14cab8[_0x7de9('0x18')](_0x506b6f);}return _0x14cab8[_0x7de9('0x19')](_0x506b6f)[_0x7de9('0x1a')]();};}function respondWithResult(_0x1410ee,_0xf9c790){_0xf9c790=_0xf9c790||0xc8;return function(_0x29bfcb){if(_0x29bfcb){return _0x1410ee[_0x7de9('0x19')](_0xf9c790)['json'](_0x29bfcb);}};}function respondWithFilteredResult(_0x1b0004,_0x4fa99a){return function(_0x2d3c9a){if(_0x2d3c9a){var _0x1cd109=typeof _0x4fa99a[_0x7de9('0x1b')]==='undefined'&&typeof _0x4fa99a[_0x7de9('0x1c')]==='undefined';var _0x5204cd=_0x2d3c9a[_0x7de9('0x1d')];var _0x4b47a1=_0x1cd109?0x0:_0x4fa99a['offset'];var _0x14998e=_0x1cd109?_0x2d3c9a['count']:_0x4fa99a[_0x7de9('0x1b')]+_0x4fa99a[_0x7de9('0x1c')];var _0x832ad1;if(_0x14998e>=_0x5204cd){_0x14998e=_0x5204cd;_0x832ad1=0xc8;}else{_0x832ad1=0xce;}_0x1b0004[_0x7de9('0x19')](_0x832ad1);return _0x1b0004[_0x7de9('0x1e')](_0x7de9('0x1f'),_0x4b47a1+'-'+_0x14998e+'/'+_0x5204cd)['json'](_0x2d3c9a);}return null;};}function patchUpdates(_0x5b0ee5){return function(_0xbf55aa){try{jsonpatch[_0x7de9('0x20')](_0xbf55aa,_0x5b0ee5,!![]);}catch(_0x5e6b10){return BPromise['reject'](_0x5e6b10);}return _0xbf55aa['save']();};}function saveUpdates(_0x457755,_0x17f999){return function(_0x4b803f){if(_0x4b803f){return _0x4b803f[_0x7de9('0x21')](_0x457755)[_0x7de9('0x22')](function(_0xe4be30){return _0xe4be30;});}return null;};}function removeEntity(_0x9e8d8b,_0xe5e1fa){return function(_0xa7ee1b){if(_0xa7ee1b){return _0xa7ee1b[_0x7de9('0x23')]()[_0x7de9('0x22')](function(){_0x9e8d8b[_0x7de9('0x19')](0xcc)[_0x7de9('0x1a')]();});}};}function handleEntityNotFound(_0x357f0b,_0x225963){return function(_0x394dcb){if(!_0x394dcb){_0x357f0b['sendStatus'](0x194);}return _0x394dcb;};}function handleError(_0x18837e,_0x18777d){_0x18777d=_0x18777d||0x1f4;return function(_0x49e176){logger[_0x7de9('0x24')](_0x49e176['stack']);if(_0x49e176[_0x7de9('0x25')]){delete _0x49e176['name'];}_0x18837e['status'](_0x18777d)[_0x7de9('0x26')](_0x49e176);};}exports['index']=function(_0x4e6250,_0x4adf89){var _0x3686c0={},_0x3e653={},_0x2c9eb9={'count':0x0,'rows':[]};var _0x51217b=_[_0x7de9('0x27')](db[_0x7de9('0x28')][_0x7de9('0x29')],function(_0x4c36ba){return{'name':_0x4c36ba[_0x7de9('0x2a')],'type':_0x4c36ba[_0x7de9('0x2b')][_0x7de9('0x2c')]};});_0x3e653[_0x7de9('0x2d')]=_[_0x7de9('0x27')](_0x51217b,_0x7de9('0x25'));_0x3e653[_0x7de9('0x2e')]=_['keys'](_0x4e6250[_0x7de9('0x2e')]);_0x3e653[_0x7de9('0x2f')]=_[_0x7de9('0x30')](_0x3e653[_0x7de9('0x2d')],_0x3e653[_0x7de9('0x2e')]);_0x3686c0[_0x7de9('0x31')]=_[_0x7de9('0x30')](_0x3e653[_0x7de9('0x2d')],qs['fields'](_0x4e6250['query']['fields']));_0x3686c0[_0x7de9('0x31')]=_0x3686c0[_0x7de9('0x31')]['length']?_0x3686c0['attributes']:_0x3e653[_0x7de9('0x2d')];if(!_0x4e6250[_0x7de9('0x2e')][_0x7de9('0x32')]('nolimit')){_0x3686c0[_0x7de9('0x1c')]=qs['limit'](_0x4e6250[_0x7de9('0x2e')]['limit']);_0x3686c0['offset']=qs[_0x7de9('0x1b')](_0x4e6250['query'][_0x7de9('0x1b')]);}_0x3686c0[_0x7de9('0x33')]=qs[_0x7de9('0x34')](_0x4e6250[_0x7de9('0x2e')][_0x7de9('0x34')]);_0x3686c0['where']=qs[_0x7de9('0x2f')](_['pick'](_0x4e6250[_0x7de9('0x2e')],_0x3e653['filters']),_0x51217b);if(_0x4e6250[_0x7de9('0x2e')][_0x7de9('0x35')]){_0x3686c0['where']=_['merge'](_0x3686c0[_0x7de9('0x36')],{'$or':_[_0x7de9('0x27')](_0x51217b,function(_0x334332){if(_0x334332[_0x7de9('0x2b')]!=='VIRTUAL'){var _0x3556e8={};_0x3556e8[_0x334332[_0x7de9('0x25')]]={'$like':'%'+_0x4e6250['query'][_0x7de9('0x35')]+'%'};return _0x3556e8;}})});}_0x3686c0=_[_0x7de9('0x37')]({},_0x3686c0,_0x4e6250[_0x7de9('0x38')]);var _0x511ee9={'where':_0x3686c0[_0x7de9('0x36')]};return db[_0x7de9('0x28')]['count'](_0x511ee9)[_0x7de9('0x22')](function(_0x5e03f5){_0x2c9eb9['count']=_0x5e03f5;if(_0x4e6250[_0x7de9('0x2e')][_0x7de9('0x39')]){_0x3686c0[_0x7de9('0x3a')]=[{'all':!![]}];}return db[_0x7de9('0x28')][_0x7de9('0x3b')](_0x3686c0);})[_0x7de9('0x22')](function(_0x7b21ef){_0x2c9eb9[_0x7de9('0x3c')]=_0x7b21ef;return _0x2c9eb9;})[_0x7de9('0x22')](respondWithFilteredResult(_0x4adf89,_0x3686c0))['catch'](handleError(_0x4adf89,null));};exports[_0x7de9('0x3d')]=function(_0x2d644d,_0x55eafa){var _0x59a18f={'raw':!![],'where':{'id':_0x2d644d[_0x7de9('0x3e')]['id']}},_0x4a3e11={};_0x4a3e11['model']=_[_0x7de9('0x3f')](db[_0x7de9('0x28')][_0x7de9('0x29')]);_0x4a3e11['query']=_['keys'](_0x2d644d[_0x7de9('0x2e')]);_0x4a3e11[_0x7de9('0x2f')]=_[_0x7de9('0x30')](_0x4a3e11[_0x7de9('0x2d')],_0x4a3e11[_0x7de9('0x2e')]);_0x59a18f[_0x7de9('0x31')]=_[_0x7de9('0x30')](_0x4a3e11[_0x7de9('0x2d')],qs[_0x7de9('0x40')](_0x2d644d['query'][_0x7de9('0x40')]));_0x59a18f['attributes']=_0x59a18f['attributes'][_0x7de9('0x41')]?_0x59a18f[_0x7de9('0x31')]:_0x4a3e11[_0x7de9('0x2d')];if(_0x2d644d['query'][_0x7de9('0x39')]){_0x59a18f[_0x7de9('0x3a')]=[{'all':!![]}];}_0x59a18f=_[_0x7de9('0x37')]({},_0x59a18f,_0x2d644d[_0x7de9('0x38')]);return db['CmHopperBlack'][_0x7de9('0x42')](_0x59a18f)[_0x7de9('0x22')](handleEntityNotFound(_0x55eafa,null))['then'](respondWithResult(_0x55eafa,null))[_0x7de9('0x43')](handleError(_0x55eafa,null));};exports['update']=function(_0x472956,_0x1ee0bb){if(_0x472956[_0x7de9('0x44')]['id']){delete _0x472956[_0x7de9('0x44')]['id'];}return db['CmHopperBlack'][_0x7de9('0x42')]({'where':{'id':_0x472956['params']['id']}})['then'](handleEntityNotFound(_0x1ee0bb,null))[_0x7de9('0x22')](saveUpdates(_0x472956[_0x7de9('0x44')],null))[_0x7de9('0x22')](respondWithResult(_0x1ee0bb,null))[_0x7de9('0x43')](handleError(_0x1ee0bb,null));};exports['destroy']=function(_0x20b975,_0x5625dd){return db[_0x7de9('0x28')]['find']({'where':{'id':_0x20b975[_0x7de9('0x3e')]['id']}})[_0x7de9('0x22')](handleEntityNotFound(_0x5625dd,null))[_0x7de9('0x22')](removeEntity(_0x5625dd,null))[_0x7de9('0x43')](handleError(_0x5625dd,null));};exports[_0x7de9('0x45')]=function(_0x4afa1e,_0x357686){return db[_0x7de9('0x28')]['describe']()[_0x7de9('0x22')](respondWithResult(_0x357686,null))[_0x7de9('0x43')](handleError(_0x357686,null));};
\ No newline at end of file
index bcc86c0..e48fef3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5f0=['path','rimraf','../../config/environment','define','CmHopperBlack','cm_hopper_black','lodash','util','api','bluebird','request-promise'];(function(_0x41dc16,_0x44f2f6){var _0x536b5b=function(_0x21402d){while(--_0x21402d){_0x41dc16['push'](_0x41dc16['shift']());}};_0x536b5b(++_0x44f2f6);}(_0xc5f0,0x166));var _0x0c5f=function(_0x65c0bb,_0x82e7b8){_0x65c0bb=_0x65c0bb-0x0;var _0x320bd5=_0xc5f0[_0x65c0bb];return _0x320bd5;};'use strict';var _=require(_0x0c5f('0x0'));var util=require(_0x0c5f('0x1'));var logger=require('../../config/logger')(_0x0c5f('0x2'));var moment=require('moment');var BPromise=require(_0x0c5f('0x3'));var rp=require(_0x0c5f('0x4'));var fs=require('fs');var path=require(_0x0c5f('0x5'));var rimraf=require(_0x0c5f('0x6'));var config=require(_0x0c5f('0x7'));var attributes=require('./cmHopperBlack.attributes');module['exports']=function(_0x538ed2,_0x1b0faa){return _0x538ed2[_0x0c5f('0x8')](_0x0c5f('0x9'),attributes,{'tableName':_0x0c5f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4339=['exports','cm_hopper_black','util','api','moment','request-promise','rimraf','../../config/environment','./cmHopperBlack.attributes'];(function(_0x14a1cd,_0x262026){var _0x28fedd=function(_0x220139){while(--_0x220139){_0x14a1cd['push'](_0x14a1cd['shift']());}};_0x28fedd(++_0x262026);}(_0x4339,0x173));var _0x9433=function(_0x4edcd9,_0x3f9695){_0x4edcd9=_0x4edcd9-0x0;var _0x114efc=_0x4339[_0x4edcd9];return _0x114efc;};'use strict';var _=require('lodash');var util=require(_0x9433('0x0'));var logger=require('../../config/logger')(_0x9433('0x1'));var moment=require(_0x9433('0x2'));var BPromise=require('bluebird');var rp=require(_0x9433('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9433('0x4'));var config=require(_0x9433('0x5'));var attributes=require(_0x9433('0x6'));module[_0x9433('0x7')]=function(_0x1799ae,_0x268e7f){return _0x1799ae['define']('CmHopperBlack',attributes,{'tableName':_0x9433('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 32becb2..5643380 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2da8=['GetCmHopperBlack','findAll','options','raw','where','attributes','limit','model','include','map','CmHopperBlack','update','body','then','UpdateCmHopperBlack','DestroyCmHopperBlack','destroy','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','info','request\x20sent','debug','CmHopperBlack,\x20%s,\x20%s,\x20%s','stringify','error','code','CmHopperBlack,\x20%s,\x20%s','message','result','catch'];(function(_0x166770,_0x11f3e8){var _0x3f4892=function(_0x4127b8){while(--_0x4127b8){_0x166770['push'](_0x166770['shift']());}};_0x3f4892(++_0x11f3e8);}(_0x2da8,0x89));var _0x82da=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x2da8[_0x42cae2];return _0x5f256f;};'use strict';var _=require(_0x82da('0x0'));var util=require(_0x82da('0x1'));var moment=require(_0x82da('0x2'));var BPromise=require(_0x82da('0x3'));var rs=require(_0x82da('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x82da('0x5'))['db'];var utils=require(_0x82da('0x6'));var logger=require('../../config/logger')(_0x82da('0x7'));var config=require(_0x82da('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x82da('0x9')][_0x82da('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1bdded,_0x49412d,_0x5b36bc){return new BPromise(function(_0x35440d,_0x474403){return client[_0x82da('0xb')](_0x1bdded,_0x5b36bc)['then'](function(_0x576c62){logger[_0x82da('0xc')]('CmHopperBlack,\x20%s,\x20%s',_0x49412d,_0x82da('0xd'));logger[_0x82da('0xe')](_0x82da('0xf'),_0x49412d,_0x82da('0xd'),JSON[_0x82da('0x10')](_0x576c62));if(_0x576c62['error']){if(_0x576c62[_0x82da('0x11')][_0x82da('0x12')]===0x1f4){logger[_0x82da('0x11')](_0x82da('0x13'),_0x49412d,_0x576c62[_0x82da('0x11')][_0x82da('0x14')]);return _0x474403(_0x576c62[_0x82da('0x11')][_0x82da('0x14')]);}logger[_0x82da('0x11')](_0x82da('0x13'),_0x49412d,_0x576c62[_0x82da('0x11')][_0x82da('0x14')]);return _0x35440d(_0x576c62[_0x82da('0x11')][_0x82da('0x14')]);}else{logger[_0x82da('0xc')](_0x82da('0x13'),_0x49412d,'request\x20sent');_0x35440d(_0x576c62[_0x82da('0x15')][_0x82da('0x14')]);}})[_0x82da('0x16')](function(_0x41758d){logger['error']('CmHopperBlack,\x20%s,\x20%s',_0x49412d,_0x41758d);_0x474403(_0x41758d);});});}exports[_0x82da('0x17')]=function(_0x45875d){var _0xb42902=this;return new Promise(function(_0x2b8608,_0x4306e5){return db['CmHopperBlack'][_0x82da('0x18')]({'raw':_0x45875d['options']?_0x45875d[_0x82da('0x19')][_0x82da('0x1a')]===undefined?!![]:![]:!![],'where':_0x45875d['options']?_0x45875d[_0x82da('0x19')][_0x82da('0x1b')]||null:null,'attributes':_0x45875d[_0x82da('0x19')]?_0x45875d[_0x82da('0x19')][_0x82da('0x1c')]||null:null,'limit':_0x45875d[_0x82da('0x19')]?_0x45875d[_0x82da('0x19')][_0x82da('0x1d')]||null:null,'include':_0x45875d[_0x82da('0x19')]?_0x45875d[_0x82da('0x19')]['include']?_['map'](_0x45875d[_0x82da('0x19')]['include'],function(_0x4fb2bd){return{'model':db[_0x4fb2bd[_0x82da('0x1e')]],'as':_0x4fb2bd['as'],'attributes':_0x4fb2bd['attributes'],'include':_0x4fb2bd[_0x82da('0x1f')]?_[_0x82da('0x20')](_0x4fb2bd[_0x82da('0x1f')],function(_0x837e14){return{'model':db[_0x837e14['model']],'as':_0x837e14['as'],'attributes':_0x837e14['attributes'],'include':_0x837e14['include']?_[_0x82da('0x20')](_0x837e14[_0x82da('0x1f')],function(_0x18b4b6){return{'model':db[_0x18b4b6[_0x82da('0x1e')]],'as':_0x18b4b6['as'],'attributes':_0x18b4b6[_0x82da('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x8f382f){logger['info'](_0x82da('0x17'),_0x45875d);logger['debug'](_0x82da('0x17'),_0x45875d,JSON[_0x82da('0x10')](_0x8f382f));_0x2b8608(_0x8f382f);})[_0x82da('0x16')](function(_0x146b53){logger[_0x82da('0x11')](_0x82da('0x17'),_0x146b53[_0x82da('0x14')],_0x45875d);_0x4306e5(_0xb42902[_0x82da('0x11')](0x1f4,_0x146b53[_0x82da('0x14')]));});});};exports['UpdateCmHopperBlack']=function(_0x3c7946){var _0x365b64=this;return new Promise(function(_0x5dae64,_0x11ee75){return db[_0x82da('0x21')][_0x82da('0x22')](_0x3c7946[_0x82da('0x23')],{'raw':_0x3c7946[_0x82da('0x19')]?_0x3c7946[_0x82da('0x19')][_0x82da('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3c7946[_0x82da('0x19')]?_0x3c7946['options'][_0x82da('0x1b')]||null:null,'attributes':_0x3c7946[_0x82da('0x19')]?_0x3c7946['options'][_0x82da('0x1c')]||null:null,'limit':_0x3c7946[_0x82da('0x19')]?_0x3c7946[_0x82da('0x19')][_0x82da('0x1d')]||null:null})[_0x82da('0x24')](function(_0x5014dd){logger[_0x82da('0xc')](_0x82da('0x25'),_0x3c7946);logger[_0x82da('0xe')]('UpdateCmHopperBlack',_0x3c7946,JSON[_0x82da('0x10')](_0x5014dd));_0x5dae64(_0x5014dd);})[_0x82da('0x16')](function(_0x34ca44){logger[_0x82da('0x11')](_0x82da('0x25'),_0x34ca44[_0x82da('0x14')],_0x3c7946);_0x11ee75(_0x365b64[_0x82da('0x11')](0x1f4,_0x34ca44['message']));});});};exports[_0x82da('0x26')]=function(_0x24a58c){var _0x51850d=this;return new Promise(function(_0x588be9,_0x3bc685){return db[_0x82da('0x21')][_0x82da('0x27')]({'where':_0x24a58c[_0x82da('0x19')]?_0x24a58c[_0x82da('0x19')][_0x82da('0x1b')]||null:null})['then'](function(_0x43ca71){logger['info'](_0x82da('0x26'),_0x24a58c);logger['debug'](_0x82da('0x26'),_0x24a58c,JSON[_0x82da('0x10')](_0x43ca71));_0x588be9(_0x43ca71);})[_0x82da('0x16')](function(_0x435db6){logger[_0x82da('0x11')](_0x82da('0x26'),_0x435db6['message'],_0x24a58c);_0x3bc685(_0x51850d[_0x82da('0x11')](0x1f4,_0x435db6[_0x82da('0x14')]));});});};
\ No newline at end of file
+var _0xecd0=['attributes','map','include','model','update','body','raw','limit','UpdateCmHopperBlack','DestroyCmHopperBlack','destroy','lodash','util','bluebird','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','CmHopperBlack,\x20%s,\x20%s','debug','CmHopperBlack,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','catch','GetCmHopperBlack','CmHopperBlack','findAll','options','where'];(function(_0x57f37c,_0x509412){var _0x4b3535=function(_0x3aae68){while(--_0x3aae68){_0x57f37c['push'](_0x57f37c['shift']());}};_0x4b3535(++_0x509412);}(_0xecd0,0x1c7));var _0x0ecd=function(_0x29df9a,_0x42aff3){_0x29df9a=_0x29df9a-0x0;var _0x3a8e96=_0xecd0[_0x29df9a];return _0x3a8e96;};'use strict';var _=require(_0x0ecd('0x0'));var util=require(_0x0ecd('0x1'));var moment=require('moment');var BPromise=require(_0x0ecd('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x0ecd('0x3'));var logger=require('../../config/logger')(_0x0ecd('0x4'));var config=require(_0x0ecd('0x5'));var jayson=require(_0x0ecd('0x6'));var client=jayson[_0x0ecd('0x7')][_0x0ecd('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2c9383,_0x11b991,_0x25bdd8){return new BPromise(function(_0x3053eb,_0x2f0c00){return client[_0x0ecd('0x9')](_0x2c9383,_0x25bdd8)[_0x0ecd('0xa')](function(_0x344e31){logger[_0x0ecd('0xb')](_0x0ecd('0xc'),_0x11b991,'request\x20sent');logger[_0x0ecd('0xd')](_0x0ecd('0xe'),_0x11b991,'request\x20sent',JSON[_0x0ecd('0xf')](_0x344e31));if(_0x344e31[_0x0ecd('0x10')]){if(_0x344e31['error']['code']===0x1f4){logger[_0x0ecd('0x10')](_0x0ecd('0xc'),_0x11b991,_0x344e31[_0x0ecd('0x10')][_0x0ecd('0x11')]);return _0x2f0c00(_0x344e31[_0x0ecd('0x10')]['message']);}logger['error'](_0x0ecd('0xc'),_0x11b991,_0x344e31['error'][_0x0ecd('0x11')]);return _0x3053eb(_0x344e31[_0x0ecd('0x10')][_0x0ecd('0x11')]);}else{logger['info'](_0x0ecd('0xc'),_0x11b991,_0x0ecd('0x12'));_0x3053eb(_0x344e31[_0x0ecd('0x13')][_0x0ecd('0x11')]);}})[_0x0ecd('0x14')](function(_0x5d790b){logger[_0x0ecd('0x10')](_0x0ecd('0xc'),_0x11b991,_0x5d790b);_0x2f0c00(_0x5d790b);});});}exports[_0x0ecd('0x15')]=function(_0x17ac9b){var _0x1db238=this;return new Promise(function(_0x3d1a82,_0x7ba25a){return db[_0x0ecd('0x16')][_0x0ecd('0x17')]({'raw':_0x17ac9b['options']?_0x17ac9b[_0x0ecd('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x17ac9b['options']?_0x17ac9b['options'][_0x0ecd('0x19')]||null:null,'attributes':_0x17ac9b[_0x0ecd('0x18')]?_0x17ac9b[_0x0ecd('0x18')][_0x0ecd('0x1a')]||null:null,'limit':_0x17ac9b['options']?_0x17ac9b['options']['limit']||null:null,'include':_0x17ac9b[_0x0ecd('0x18')]?_0x17ac9b[_0x0ecd('0x18')]['include']?_[_0x0ecd('0x1b')](_0x17ac9b[_0x0ecd('0x18')][_0x0ecd('0x1c')],function(_0x8d0d26){return{'model':db[_0x8d0d26[_0x0ecd('0x1d')]],'as':_0x8d0d26['as'],'attributes':_0x8d0d26[_0x0ecd('0x1a')],'include':_0x8d0d26[_0x0ecd('0x1c')]?_[_0x0ecd('0x1b')](_0x8d0d26['include'],function(_0x33db33){return{'model':db[_0x33db33[_0x0ecd('0x1d')]],'as':_0x33db33['as'],'attributes':_0x33db33[_0x0ecd('0x1a')],'include':_0x33db33[_0x0ecd('0x1c')]?_[_0x0ecd('0x1b')](_0x33db33['include'],function(_0x30636d){return{'model':db[_0x30636d[_0x0ecd('0x1d')]],'as':_0x30636d['as'],'attributes':_0x30636d[_0x0ecd('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x0ecd('0xa')](function(_0x1b750a){logger['info'](_0x0ecd('0x15'),_0x17ac9b);logger[_0x0ecd('0xd')](_0x0ecd('0x15'),_0x17ac9b,JSON[_0x0ecd('0xf')](_0x1b750a));_0x3d1a82(_0x1b750a);})[_0x0ecd('0x14')](function(_0x24e4e9){logger[_0x0ecd('0x10')](_0x0ecd('0x15'),_0x24e4e9['message'],_0x17ac9b);_0x7ba25a(_0x1db238[_0x0ecd('0x10')](0x1f4,_0x24e4e9[_0x0ecd('0x11')]));});});};exports['UpdateCmHopperBlack']=function(_0x41ec3c){var _0x45ce03=this;return new Promise(function(_0x1a71b3,_0x20042a){return db[_0x0ecd('0x16')][_0x0ecd('0x1e')](_0x41ec3c[_0x0ecd('0x1f')],{'raw':_0x41ec3c[_0x0ecd('0x18')]?_0x41ec3c['options'][_0x0ecd('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x41ec3c[_0x0ecd('0x18')]?_0x41ec3c['options'][_0x0ecd('0x19')]||null:null,'attributes':_0x41ec3c[_0x0ecd('0x18')]?_0x41ec3c[_0x0ecd('0x18')][_0x0ecd('0x1a')]||null:null,'limit':_0x41ec3c[_0x0ecd('0x18')]?_0x41ec3c[_0x0ecd('0x18')][_0x0ecd('0x21')]||null:null})[_0x0ecd('0xa')](function(_0x743f37){logger['info'](_0x0ecd('0x22'),_0x41ec3c);logger[_0x0ecd('0xd')](_0x0ecd('0x22'),_0x41ec3c,JSON[_0x0ecd('0xf')](_0x743f37));_0x1a71b3(_0x743f37);})[_0x0ecd('0x14')](function(_0x39cb9d){logger[_0x0ecd('0x10')](_0x0ecd('0x22'),_0x39cb9d['message'],_0x41ec3c);_0x20042a(_0x45ce03[_0x0ecd('0x10')](0x1f4,_0x39cb9d[_0x0ecd('0x11')]));});});};exports[_0x0ecd('0x23')]=function(_0x2276dd){var _0xdf4456=this;return new Promise(function(_0xf6b6e5,_0x405387){return db[_0x0ecd('0x16')][_0x0ecd('0x24')]({'where':_0x2276dd[_0x0ecd('0x18')]?_0x2276dd[_0x0ecd('0x18')]['where']||null:null})[_0x0ecd('0xa')](function(_0x55d058){logger[_0x0ecd('0xb')](_0x0ecd('0x23'),_0x2276dd);logger[_0x0ecd('0xd')](_0x0ecd('0x23'),_0x2276dd,JSON['stringify'](_0x55d058));_0xf6b6e5(_0x55d058);})[_0x0ecd('0x14')](function(_0x1d11e4){logger[_0x0ecd('0x10')](_0x0ecd('0x23'),_0x1d11e4['message'],_0x2276dd);_0x405387(_0xdf4456[_0x0ecd('0x10')](0x1f4,_0x1d11e4[_0x0ecd('0x11')]));});});};
\ No newline at end of file
index ccd2c5b..692bcc1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf072=['../../components/auth/service','../../components/interaction/service','./cmHopperBlack.controller','get','isAuthenticated','index','/describe','describe','/:id','show','put','delete','destroy','multer','util','path','express','fs-extra'];(function(_0x3c2eec,_0x5ec3b0){var _0x1d7c15=function(_0x2d790b){while(--_0x2d790b){_0x3c2eec['push'](_0x3c2eec['shift']());}};_0x1d7c15(++_0x5ec3b0);}(_0xf072,0x1cf));var _0x2f07=function(_0x3bf29b,_0x32c9b1){_0x3bf29b=_0x3bf29b-0x0;var _0x10d5d0=_0xf072[_0x3bf29b];return _0x10d5d0;};'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('0xf')](_0x2f07('0xd'),auth[_0x2f07('0x9')](),controller['update']);router[_0x2f07('0x10')](_0x2f07('0xd'),auth[_0x2f07('0x9')](),controller[_0x2f07('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0xd117=['/describe','describe','/:id','show','put','update','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperBlack.controller','get','isAuthenticated','index'];(function(_0x58e469,_0x95ee3e){var _0x4c01c5=function(_0x1ef7ae){while(--_0x1ef7ae){_0x58e469['push'](_0x58e469['shift']());}};_0x4c01c5(++_0x95ee3e);}(_0xd117,0x182));var _0x7d11=function(_0xa28b1a,_0x384f4b){_0xa28b1a=_0xa28b1a-0x0;var _0x4c9b78=_0xd117[_0xa28b1a];return _0x4c9b78;};'use strict';var multer=require(_0x7d11('0x0'));var util=require(_0x7d11('0x1'));var path=require(_0x7d11('0x2'));var timeout=require(_0x7d11('0x3'));var express=require(_0x7d11('0x4'));var router=express[_0x7d11('0x5')]();var fs_extra=require(_0x7d11('0x6'));var auth=require(_0x7d11('0x7'));var interaction=require(_0x7d11('0x8'));var config=require(_0x7d11('0x9'));var controller=require(_0x7d11('0xa'));router[_0x7d11('0xb')]('/',auth[_0x7d11('0xc')](),controller[_0x7d11('0xd')]);router[_0x7d11('0xb')](_0x7d11('0xe'),auth['isAuthenticated'](),controller[_0x7d11('0xf')]);router[_0x7d11('0xb')](_0x7d11('0x10'),auth['isAuthenticated'](),controller[_0x7d11('0x11')]);router[_0x7d11('0x12')](_0x7d11('0x10'),auth['isAuthenticated'](),controller[_0x7d11('0x13')]);router['delete']('/:id',auth[_0x7d11('0xc')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 11fb8ac..ff59b3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f96=['INTEGER','STRING','DATE','getDataValue','endtime','setDataValue','seconds','BOOLEAN','sequelize','moment'];(function(_0x440513,_0x1e31b4){var _0x162740=function(_0x2650b4){while(--_0x2650b4){_0x440513['push'](_0x440513['shift']());}};_0x162740(++_0x1e31b4);}(_0x7f96,0x170));var _0x67f9=function(_0x13e01b,_0x4157cc){_0x13e01b=_0x13e01b-0x0;var _0x74408f=_0x7f96[_0x13e01b];return _0x74408f;};'use strict';var Sequelize=require(_0x67f9('0x0'));var moment=require(_0x67f9('0x1'));module['exports']={'state':{'type':Sequelize[_0x67f9('0x2')](0x2)},'statedesc':{'type':Sequelize[_0x67f9('0x3')]},'scheduledat':{'type':Sequelize[_0x67f9('0x4')]},'countbusyretry':{'type':Sequelize[_0x67f9('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x67f9('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x67f9('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x67f9('0x3')]},'originatecalleridnum':{'type':Sequelize[_0x67f9('0x3')]},'originatecalleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x67f9('0x3')]},'starttime':{'type':Sequelize[_0x67f9('0x4')]},'responsetime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0x67f9('0x4')]},'droptime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0x67f9('0x4')]},'ringtime':{'type':Sequelize[_0x67f9('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x67f9('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x67f9('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x67f9('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize['STRING']},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0x67f9('0x3')]},'membername':{'type':Sequelize[_0x67f9('0x3')]},'reason':{'type':Sequelize['STRING']},'disposition':{'type':Sequelize[_0x67f9('0x3')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x67f9('0x3')]},'dispositionat':{'type':Sequelize['DATE'],'set':function(_0x2e6b12){var _0x3a61aa=this[_0x67f9('0x5')](_0x67f9('0x6'));if(_0x3a61aa&&_0x2e6b12){this[_0x67f9('0x7')]('followuptime',moment(_0x2e6b12)['diff'](moment(_0x3a61aa),_0x67f9('0x8')));}}},'amd':{'type':Sequelize[_0x67f9('0x9')],'defaultValue':![]},'fax':{'type':Sequelize[_0x67f9('0x9')],'defaultValue':![]},'blacklist':{'type':Sequelize[_0x67f9('0x9')],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0x67f9('0x9')],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0x67f9('0x4')]},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x67f9('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x67f9('0x4')]},'deleted':{'type':Sequelize[_0x67f9('0x3')],'defaultValue':null},'deletedat':{'type':Sequelize[_0x67f9('0x4')]},'recallme':{'type':Sequelize[_0x67f9('0x9')],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0x67f9('0x4')]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x67f9('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x67f9('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x67f9('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x7e9c=['BOOLEAN','sequelize','moment','INTEGER','STRING','DATE','getDataValue','endtime','setDataValue','diff','seconds'];(function(_0xb81ad8,_0x5bdfdb){var _0xaa6b8e=function(_0x36043f){while(--_0x36043f){_0xb81ad8['push'](_0xb81ad8['shift']());}};_0xaa6b8e(++_0x5bdfdb);}(_0x7e9c,0x135));var _0xc7e9=function(_0x4e9628,_0x250573){_0x4e9628=_0x4e9628-0x0;var _0x27bc8c=_0x7e9c[_0x4e9628];return _0x27bc8c;};'use strict';var Sequelize=require(_0xc7e9('0x0'));var moment=require(_0xc7e9('0x1'));module['exports']={'state':{'type':Sequelize[_0xc7e9('0x2')](0x2)},'statedesc':{'type':Sequelize[_0xc7e9('0x3')]},'scheduledat':{'type':Sequelize['DATE']},'countbusyretry':{'type':Sequelize[_0xc7e9('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xc7e9('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0xc7e9('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0xc7e9('0x3')]},'originatecalleridnum':{'type':Sequelize[_0xc7e9('0x3')]},'originatecalleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0xc7e9('0x3')]},'calleridname':{'type':Sequelize[_0xc7e9('0x3')]},'starttime':{'type':Sequelize[_0xc7e9('0x4')]},'responsetime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0xc7e9('0x4')]},'droptime':{'type':Sequelize[_0xc7e9('0x4')]},'endtime':{'type':Sequelize[_0xc7e9('0x4')]},'ringtime':{'type':Sequelize[_0xc7e9('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0xc7e9('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0xc7e9('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0xc7e9('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0xc7e9('0x3')]},'campaign':{'type':Sequelize[_0xc7e9('0x3')]},'campaigntype':{'type':Sequelize[_0xc7e9('0x3')]},'membername':{'type':Sequelize[_0xc7e9('0x3')]},'reason':{'type':Sequelize[_0xc7e9('0x3')]},'disposition':{'type':Sequelize[_0xc7e9('0x3')]},'secondDisposition':{'type':Sequelize[_0xc7e9('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'dispositionat':{'type':Sequelize['DATE'],'set':function(_0x264861){var _0x254144=this[_0xc7e9('0x5')](_0xc7e9('0x6'));if(_0x254144&&_0x264861){this[_0xc7e9('0x7')]('followuptime',moment(_0x264861)[_0xc7e9('0x8')](moment(_0x254144),_0xc7e9('0x9')));}}},'amd':{'type':Sequelize[_0xc7e9('0xa')],'defaultValue':![]},'fax':{'type':Sequelize[_0xc7e9('0xa')],'defaultValue':![]},'blacklist':{'type':Sequelize[_0xc7e9('0xa')],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0xc7e9('0xa')],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0xc7e9('0x4')]},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize[_0xc7e9('0x4')]},'deleted':{'type':Sequelize['STRING'],'defaultValue':null},'deletedat':{'type':Sequelize[_0xc7e9('0x4')]},'recallme':{'type':Sequelize[_0xc7e9('0xa')],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0xc7e9('0x4')]},'countnosuchnumberretry':{'type':Sequelize[_0xc7e9('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xc7e9('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xc7e9('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xc7e9('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index fe94474..546782c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['`state`\x20=\x2022,\x201,\x20null','reCallContacts','`state`\x20=\x2019,\x201,\x20null','answeringMachine','noSuchContacts','VoiceQueue','find','insert','cm_hopper','fromQuery','phone','ContactId','ListId','createdAt','select','field','NOW()','scheduledAt','ANY_VALUE(ContactId)','ANY_VALUE(VoiceQueueId)','updatedAt','cm_hopper_final','VoiceQueueId\x20=\x20?','toString','state\x20=\x20?','state','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','from','calleridnum','state\x20=\x204','group','Campaign','into','CampaignId','ANY_VALUE(calleridnum)','ANY_VALUE(ListId)','ANY_VALUE(CampaignId)','CampaignId\x20=\x20?','checkContactHopper','CmHopper','findOne','VoiceQueueId','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','end','stack','name','send','index','map','CmHopperFinal','fieldName','type','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filters','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','describe','body','uniqueid','countContactsQueueCampaignHopperFinal','sequelize','literal','`state`\x20=\x200,\x201,\x20null','COUNT','`state`\x20=\x203,\x201,\x20null','noAnswerContacts','`state`\x20=\x205,\x201,\x20null','busyContacts','`state`\x20=\x208,\x201,\x20null','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts'];(function(_0x528669,_0x40349e){var _0x4e1ea3=function(_0x527278){while(--_0x527278){_0x528669['push'](_0x528669['shift']());}};_0x4e1ea3(++_0x40349e);}(_0xadb5,0xad));var _0x5adb=function(_0x4d1ae6,_0x30d0b5){_0x4d1ae6=_0x4d1ae6-0x0;var _0x2d2265=_0xadb5[_0x4d1ae6];return _0x2d2265;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5adb('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5adb('0x1'));var rp=require(_0x5adb('0x2'));var moment=require(_0x5adb('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x5adb('0x4'));var util=require(_0x5adb('0x5'));var path=require(_0x5adb('0x6'));var sox=require('sox');var csv=require(_0x5adb('0x7'));var ejs=require(_0x5adb('0x8'));var fs=require('fs');var fs_extra=require(_0x5adb('0x9'));var _=require(_0x5adb('0xa'));var squel=require(_0x5adb('0xb'));var crypto=require(_0x5adb('0xc'));var jsforce=require(_0x5adb('0xd'));var deskjs=require(_0x5adb('0xe'));var toCsv=require(_0x5adb('0x7'));var querystring=require(_0x5adb('0xf'));var Papa=require(_0x5adb('0x10'));var Redis=require(_0x5adb('0x11'));var authService=require(_0x5adb('0x12'));var qs=require(_0x5adb('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x5adb('0x14'))(_0x5adb('0x15'));var utils=require(_0x5adb('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x5adb('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2a0b70,_0x5433bf){_0x5433bf=_0x5433bf||0xcc;return function(_0x8cfcc6){if(_0x8cfcc6){return _0x2a0b70[_0x5adb('0x18')](_0x5433bf);}return _0x2a0b70[_0x5adb('0x19')](_0x5433bf)['end']();};}function respondWithResult(_0x2a545b,_0x34af2c){_0x34af2c=_0x34af2c||0xc8;return function(_0xf82f72){if(_0xf82f72){return _0x2a545b['status'](_0x34af2c)[_0x5adb('0x1a')](_0xf82f72);}};}function respondWithFilteredResult(_0x518823,_0x367d82){return function(_0x42a482){if(_0x42a482){var _0x30614e=typeof _0x367d82[_0x5adb('0x1b')]===_0x5adb('0x1c')&&typeof _0x367d82[_0x5adb('0x1d')]===_0x5adb('0x1c');var _0x42f4c6=_0x42a482[_0x5adb('0x1e')];var _0x529b65=_0x30614e?0x0:_0x367d82[_0x5adb('0x1b')];var _0x5de028=_0x30614e?_0x42a482[_0x5adb('0x1e')]:_0x367d82['offset']+_0x367d82[_0x5adb('0x1d')];var _0x50e84f;if(_0x5de028>=_0x42f4c6){_0x5de028=_0x42f4c6;_0x50e84f=0xc8;}else{_0x50e84f=0xce;}_0x518823['status'](_0x50e84f);return _0x518823[_0x5adb('0x1f')](_0x5adb('0x20'),_0x529b65+'-'+_0x5de028+'/'+_0x42f4c6)[_0x5adb('0x1a')](_0x42a482);}return null;};}function patchUpdates(_0x1fd4a7){return function(_0x99bc6c){try{jsonpatch['apply'](_0x99bc6c,_0x1fd4a7,!![]);}catch(_0x3255b3){return BPromise['reject'](_0x3255b3);}return _0x99bc6c['save']();};}function saveUpdates(_0x3754cc,_0x379b33){return function(_0x1a38d3){if(_0x1a38d3){return _0x1a38d3[_0x5adb('0x21')](_0x3754cc)[_0x5adb('0x22')](function(_0x413911){return _0x413911;});}return null;};}function removeEntity(_0xfd9bb9,_0x4ca150){return function(_0x4b1957){if(_0x4b1957){return _0x4b1957[_0x5adb('0x23')]()[_0x5adb('0x22')](function(){_0xfd9bb9[_0x5adb('0x19')](0xcc)[_0x5adb('0x24')]();});}};}function handleEntityNotFound(_0x49f203,_0x2fee18){return function(_0x2e1e63){if(!_0x2e1e63){_0x49f203['sendStatus'](0x194);}return _0x2e1e63;};}function handleError(_0x1feecf,_0x1ded9f){_0x1ded9f=_0x1ded9f||0x1f4;return function(_0x1a0acd){logger['error'](_0x1a0acd[_0x5adb('0x25')]);if(_0x1a0acd[_0x5adb('0x26')]){delete _0x1a0acd[_0x5adb('0x26')];}_0x1feecf[_0x5adb('0x19')](_0x1ded9f)[_0x5adb('0x27')](_0x1a0acd);};}exports[_0x5adb('0x28')]=function(_0x4a5d46,_0x49992e){var _0x5d457e={},_0x39bddd={},_0x1eac55={'count':0x0,'rows':[]};var _0x60a672=_[_0x5adb('0x29')](db[_0x5adb('0x2a')]['rawAttributes'],function(_0x11ec2a){return{'name':_0x11ec2a[_0x5adb('0x2b')],'type':_0x11ec2a[_0x5adb('0x2c')][_0x5adb('0x2d')]};});_0x39bddd[_0x5adb('0x2e')]=_[_0x5adb('0x29')](_0x60a672,_0x5adb('0x26'));_0x39bddd[_0x5adb('0x2f')]=_[_0x5adb('0x30')](_0x4a5d46[_0x5adb('0x2f')]);_0x39bddd['filters']=_[_0x5adb('0x31')](_0x39bddd['model'],_0x39bddd[_0x5adb('0x2f')]);_0x5d457e[_0x5adb('0x32')]=_['intersection'](_0x39bddd[_0x5adb('0x2e')],qs[_0x5adb('0x33')](_0x4a5d46[_0x5adb('0x2f')]['fields']));_0x5d457e[_0x5adb('0x32')]=_0x5d457e[_0x5adb('0x32')]['length']?_0x5d457e['attributes']:_0x39bddd[_0x5adb('0x2e')];if(!_0x4a5d46['query'][_0x5adb('0x34')](_0x5adb('0x35'))){_0x5d457e[_0x5adb('0x1d')]=qs[_0x5adb('0x1d')](_0x4a5d46[_0x5adb('0x2f')]['limit']);_0x5d457e[_0x5adb('0x1b')]=qs[_0x5adb('0x1b')](_0x4a5d46[_0x5adb('0x2f')]['offset']);}_0x5d457e['order']=qs[_0x5adb('0x36')](_0x4a5d46[_0x5adb('0x2f')]['sort']);_0x5d457e[_0x5adb('0x37')]=qs['filters'](_[_0x5adb('0x38')](_0x4a5d46['query'],_0x39bddd[_0x5adb('0x39')]),_0x60a672);if(_0x4a5d46['query'][_0x5adb('0x3a')]){_0x5d457e[_0x5adb('0x37')]=_['merge'](_0x5d457e[_0x5adb('0x37')],{'$or':_['map'](_0x60a672,function(_0xadbe37){if(_0xadbe37[_0x5adb('0x2c')]!==_0x5adb('0x3b')){var _0x50edd1={};_0x50edd1[_0xadbe37[_0x5adb('0x26')]]={'$like':'%'+_0x4a5d46[_0x5adb('0x2f')][_0x5adb('0x3a')]+'%'};return _0x50edd1;}})});}_0x5d457e=_[_0x5adb('0x3c')]({},_0x5d457e,_0x4a5d46[_0x5adb('0x3d')]);var _0x52d74f={'where':_0x5d457e['where']};return db['CmHopperFinal']['count'](_0x52d74f)[_0x5adb('0x22')](function(_0x2fbe14){_0x1eac55[_0x5adb('0x1e')]=_0x2fbe14;if(_0x4a5d46[_0x5adb('0x2f')][_0x5adb('0x3e')]){_0x5d457e[_0x5adb('0x3f')]=[{'all':!![]}];}return db[_0x5adb('0x2a')][_0x5adb('0x40')](_0x5d457e);})['then'](function(_0x53f2c6){_0x1eac55[_0x5adb('0x41')]=_0x53f2c6;return _0x1eac55;})['then'](respondWithFilteredResult(_0x49992e,_0x5d457e))[_0x5adb('0x42')](handleError(_0x49992e,null));};exports[_0x5adb('0x43')]=function(_0x299746,_0x121714){var _0xdfecfd={'raw':!![],'where':{'id':_0x299746[_0x5adb('0x44')]['id']}},_0x522ee5={};_0x522ee5[_0x5adb('0x2e')]=_['keys'](db[_0x5adb('0x2a')][_0x5adb('0x45')]);_0x522ee5['query']=_[_0x5adb('0x30')](_0x299746[_0x5adb('0x2f')]);_0x522ee5[_0x5adb('0x39')]=_[_0x5adb('0x31')](_0x522ee5[_0x5adb('0x2e')],_0x522ee5[_0x5adb('0x2f')]);_0xdfecfd[_0x5adb('0x32')]=_['intersection'](_0x522ee5['model'],qs[_0x5adb('0x33')](_0x299746[_0x5adb('0x2f')][_0x5adb('0x33')]));_0xdfecfd[_0x5adb('0x32')]=_0xdfecfd['attributes']['length']?_0xdfecfd[_0x5adb('0x32')]:_0x522ee5[_0x5adb('0x2e')];if(_0x299746[_0x5adb('0x2f')][_0x5adb('0x3e')]){_0xdfecfd[_0x5adb('0x3f')]=[{'all':!![]}];}_0xdfecfd=_['merge']({},_0xdfecfd,_0x299746[_0x5adb('0x3d')]);return db[_0x5adb('0x2a')]['find'](_0xdfecfd)[_0x5adb('0x22')](handleEntityNotFound(_0x121714,null))[_0x5adb('0x22')](respondWithResult(_0x121714,null))[_0x5adb('0x42')](handleError(_0x121714,null));};exports[_0x5adb('0x46')]=function(_0x186bd2,_0x3a5409){return db[_0x5adb('0x2a')][_0x5adb('0x46')]()['then'](respondWithResult(_0x3a5409,null))[_0x5adb('0x42')](handleError(_0x3a5409,null));};exports['update']=function(_0x51bc49,_0x5015ee){if(_0x51bc49[_0x5adb('0x47')][_0x5adb('0x48')]){delete _0x51bc49[_0x5adb('0x47')]['uniqueid'];}return db[_0x5adb('0x2a')]['find']({'where':{'uniqueid':_0x51bc49[_0x5adb('0x44')]['id']}})[_0x5adb('0x22')](handleEntityNotFound(_0x5015ee,null))[_0x5adb('0x22')](saveUpdates(_0x51bc49['body'],null))[_0x5adb('0x22')](respondWithResult(_0x5015ee,null))['catch'](handleError(_0x5015ee,null));};exports[_0x5adb('0x49')]=function(_0x6dc067,_0x55c535,_0x2402a3){return db[_0x5adb('0x2a')][_0x5adb('0x40')]({'raw':![],'where':{'VoiceQueueId':_0x6dc067[_0x5adb('0x44')]['id']},'attributes':[[db[_0x5adb('0x4a')]['fn']('COUNT',db[_0x5adb('0x4a')]['fn']('IF',db[_0x5adb('0x4a')][_0x5adb('0x4b')](_0x5adb('0x4c')))),'noSuchContacts'],[db[_0x5adb('0x4a')]['fn'](_0x5adb('0x4d'),db[_0x5adb('0x4a')]['fn']('IF',db['sequelize'][_0x5adb('0x4b')](_0x5adb('0x4e')))),_0x5adb('0x4f')],[db[_0x5adb('0x4a')]['fn']('COUNT',db[_0x5adb('0x4a')]['fn']('IF',db[_0x5adb('0x4a')][_0x5adb('0x4b')](_0x5adb('0x50')))),_0x5adb('0x51')],[db['sequelize']['fn'](_0x5adb('0x4d'),db['sequelize']['fn']('IF',db[_0x5adb('0x4a')]['literal'](_0x5adb('0x52')))),_0x5adb('0x53')],[db[_0x5adb('0x4a')]['fn'](_0x5adb('0x4d'),db['sequelize']['fn']('IF',db[_0x5adb('0x4a')][_0x5adb('0x4b')](_0x5adb('0x54')))),'dropContacts'],[db['sequelize']['fn']('COUNT',db[_0x5adb('0x4a')]['fn']('IF',db[_0x5adb('0x4a')][_0x5adb('0x4b')](_0x5adb('0x55')))),_0x5adb('0x56')],[db[_0x5adb('0x4a')]['fn'](_0x5adb('0x4d'),db[_0x5adb('0x4a')]['fn']('IF',db[_0x5adb('0x4a')][_0x5adb('0x4b')](_0x5adb('0x57')))),_0x5adb('0x58')],[db[_0x5adb('0x4a')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x5adb('0x4a')][_0x5adb('0x4b')](_0x5adb('0x59')))),_0x5adb('0x5a')]]})['then'](handleEntityNotFound(_0x55c535,null))[_0x5adb('0x22')](respondWithResult(_0x55c535,null))[_0x5adb('0x42')](handleError(_0x55c535,null));};exports['countContactsIvrCampaignHopperFinal']=function(_0x5cb50e,_0x476e62,_0x1505f7){return db['CmHopperFinal'][_0x5adb('0x40')]({'raw':![],'where':{'CampaignId':_0x5cb50e[_0x5adb('0x44')]['id']},'attributes':[[db[_0x5adb('0x4a')]['fn'](_0x5adb('0x4d'),db[_0x5adb('0x4a')]['fn']('IF',db[_0x5adb('0x4a')]['literal'](_0x5adb('0x4c')))),_0x5adb('0x5b')],[db[_0x5adb('0x4a')]['fn']('COUNT',db[_0x5adb('0x4a')]['fn']('IF',db[_0x5adb('0x4a')][_0x5adb('0x4b')]('`state`\x20=\x203,\x201,\x20null'))),_0x5adb('0x4f')],[db['sequelize']['fn'](_0x5adb('0x4d'),db[_0x5adb('0x4a')]['fn']('IF',db[_0x5adb('0x4a')]['literal'](_0x5adb('0x50')))),_0x5adb('0x51')],[db['sequelize']['fn'](_0x5adb('0x4d'),db[_0x5adb('0x4a')]['fn']('IF',db[_0x5adb('0x4a')][_0x5adb('0x4b')]('`state`\x20=\x208,\x201,\x20null'))),_0x5adb('0x53')],[db[_0x5adb('0x4a')]['fn'](_0x5adb('0x4d'),db[_0x5adb('0x4a')]['fn']('IF',db['sequelize']['literal'](_0x5adb('0x54')))),'dropContacts'],[db['sequelize']['fn']('COUNT',db[_0x5adb('0x4a')]['fn']('IF',db[_0x5adb('0x4a')]['literal'](_0x5adb('0x55')))),_0x5adb('0x56')],[db[_0x5adb('0x4a')]['fn'](_0x5adb('0x4d'),db[_0x5adb('0x4a')]['fn']('IF',db[_0x5adb('0x4a')][_0x5adb('0x4b')](_0x5adb('0x57')))),'reCallContacts'],[db['sequelize']['fn']('COUNT',db[_0x5adb('0x4a')]['fn']('IF',db[_0x5adb('0x4a')][_0x5adb('0x4b')](_0x5adb('0x59')))),_0x5adb('0x5a')]]})[_0x5adb('0x22')](handleEntityNotFound(_0x476e62,null))[_0x5adb('0x22')](respondWithResult(_0x476e62,null))[_0x5adb('0x42')](handleError(_0x476e62,null));};exports['moveContactsQueueCampaignHopperFinal']=function(_0x5e55c2,_0x1fc73b,_0x56df90){return db[_0x5adb('0x5c')][_0x5adb('0x5d')]({'where':{'id':_0x5e55c2[_0x5adb('0x44')]['id']}})[_0x5adb('0x22')](handleEntityNotFound(_0x1fc73b,null))[_0x5adb('0x22')](function(_0x236f59){var _0x338aee;if(_0x236f59){_0x338aee=squel[_0x5adb('0x5e')]()['into'](_0x5adb('0x5f'))[_0x5adb('0x60')]([_0x5adb('0x61'),'scheduledAt',_0x5adb('0x62'),_0x5adb('0x63'),'VoiceQueueId',_0x5adb('0x64'),'updatedAt'],squel[_0x5adb('0x65')]()[_0x5adb('0x66')]('ANY_VALUE(calleridnum)',_0x5adb('0x61'))[_0x5adb('0x66')](_0x5adb('0x67'),_0x5adb('0x68'))[_0x5adb('0x66')](_0x5adb('0x69'),_0x5adb('0x62'))[_0x5adb('0x66')]('ANY_VALUE(ListId)',_0x5adb('0x63'))[_0x5adb('0x66')](_0x5adb('0x6a'),'VoiceQueueId')['field'](_0x5adb('0x67'),'createdAt')[_0x5adb('0x66')](_0x5adb('0x67'),_0x5adb('0x6b'))['from'](_0x5adb('0x6c'))[_0x5adb('0x37')](_0x5adb('0x6d'),_0x5e55c2[_0x5adb('0x44')]['id'][_0x5adb('0x6e')]())['where'](_0x5adb('0x6f'),_0x5e55c2[_0x5adb('0x47')][_0x5adb('0x70')][_0x5adb('0x6e')]())['where'](_0x5adb('0x71'))[_0x5adb('0x37')](_0x5adb('0x72'),squel[_0x5adb('0x65')]()[_0x5adb('0x66')](_0x5adb('0x61'))[_0x5adb('0x73')]('cm_hopper')[_0x5adb('0x37')](_0x5adb('0x6d'),_0x5e55c2['params']['id'][_0x5adb('0x6e')]()))[_0x5adb('0x37')]('calleridnum\x20NOT\x20IN\x20(?)',squel[_0x5adb('0x65')]()['field'](_0x5adb('0x74'))[_0x5adb('0x73')]('cm_hopper_final')[_0x5adb('0x37')]('VoiceQueueId\x20=\x20?',_0x5e55c2[_0x5adb('0x44')]['id'][_0x5adb('0x6e')]())[_0x5adb('0x37')](_0x5adb('0x75')))[_0x5adb('0x76')]('ContactId'))[_0x5adb('0x6e')]();return db[_0x5adb('0x4a')][_0x5adb('0x2f')](_0x338aee);}return[];})[_0x5adb('0x22')](respondWithResult(_0x1fc73b,null))['catch'](handleError(_0x1fc73b,null));};exports['moveContactsIvrCampaignHopperFinal']=function(_0x3f3db9,_0x461a07,_0x2e5c96){return db[_0x5adb('0x77')][_0x5adb('0x5d')]({'where':{'id':_0x3f3db9[_0x5adb('0x44')]['id']}})[_0x5adb('0x22')](handleEntityNotFound(_0x461a07,null))['then'](function(_0xda26cc){var _0x14bada;if(_0xda26cc){_0x14bada=squel[_0x5adb('0x5e')]()[_0x5adb('0x78')]('cm_hopper')[_0x5adb('0x60')]([_0x5adb('0x61'),_0x5adb('0x68'),_0x5adb('0x62'),_0x5adb('0x63'),_0x5adb('0x79'),_0x5adb('0x64'),_0x5adb('0x6b')],squel[_0x5adb('0x65')]()['field'](_0x5adb('0x7a'),_0x5adb('0x61'))['field'](_0x5adb('0x67'),_0x5adb('0x68'))[_0x5adb('0x66')](_0x5adb('0x69'),_0x5adb('0x62'))[_0x5adb('0x66')](_0x5adb('0x7b'),_0x5adb('0x63'))['field'](_0x5adb('0x7c'),_0x5adb('0x79'))['field'](_0x5adb('0x67'),_0x5adb('0x64'))[_0x5adb('0x66')]('NOW()','updatedAt')[_0x5adb('0x73')](_0x5adb('0x6c'))[_0x5adb('0x37')]('CampaignId\x20=\x20?',_0x3f3db9[_0x5adb('0x44')]['id'][_0x5adb('0x6e')]())[_0x5adb('0x37')](_0x5adb('0x6f'),_0x3f3db9[_0x5adb('0x47')][_0x5adb('0x70')][_0x5adb('0x6e')]())[_0x5adb('0x37')](_0x5adb('0x71'))[_0x5adb('0x37')](_0x5adb('0x72'),squel[_0x5adb('0x65')]()['field']('phone')[_0x5adb('0x73')](_0x5adb('0x5f'))['where'](_0x5adb('0x7d'),_0x3f3db9[_0x5adb('0x44')]['id'][_0x5adb('0x6e')]()))[_0x5adb('0x37')](_0x5adb('0x72'),squel[_0x5adb('0x65')]()[_0x5adb('0x66')](_0x5adb('0x74'))[_0x5adb('0x73')]('cm_hopper_final')[_0x5adb('0x37')](_0x5adb('0x7d'),_0x3f3db9[_0x5adb('0x44')]['id']['toString']())[_0x5adb('0x37')](_0x5adb('0x75')))[_0x5adb('0x76')](_0x5adb('0x62')))[_0x5adb('0x6e')]();return db[_0x5adb('0x4a')]['query'](_0x14bada);}return[];})[_0x5adb('0x22')](respondWithResult(_0x461a07,null))[_0x5adb('0x42')](handleError(_0x461a07,null));};exports[_0x5adb('0x7e')]=function(_0x1e5532,_0x2c3af8,_0x3a201a){return db[_0x5adb('0x7f')][_0x5adb('0x80')]({'where':{'VoiceQueueId':_0x1e5532[_0x5adb('0x47')][_0x5adb('0x81')],'CampaignId':_0x1e5532['body'][_0x5adb('0x79')],'ContactId':_0x1e5532['body'][_0x5adb('0x62')]}})[_0x5adb('0x22')](handleEntityNotFound(_0x2c3af8,null))[_0x5adb('0x22')](function(_0x193a29){if(_0x193a29){return _0x193a29;}return null;})[_0x5adb('0x22')](respondWithResult(_0x2c3af8,null))['catch'](handleError(_0x2c3af8,null));};
\ No newline at end of file
+var _0x687b=['filter','VIRTUAL','options','include','findAll','rows','show','length','includeAll','merge','find','catch','describe','body','uniqueid','params','countContactsQueueCampaignHopperFinal','sequelize','COUNT','literal','`state`\x20=\x203,\x201,\x20null','noAnswerContacts','`state`\x20=\x205,\x201,\x20null','busyContacts','`state`\x20=\x208,\x201,\x20null','congestionContacts','dropContacts','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','`state`\x20=\x2022,\x201,\x20null','`state`\x20=\x200,\x201,\x20null','`state`\x20=\x2010\x20,\x201,\x20null','`state`\x20=\x2019,\x201,\x20null','moveContactsQueueCampaignHopperFinal','into','fromQuery','phone','scheduledAt','ContactId','ListId','VoiceQueueId','createdAt','updatedAt','field','ANY_VALUE(calleridnum)','NOW()','ANY_VALUE(ContactId)','ANY_VALUE(ListId)','ANY_VALUE(VoiceQueueId)','from','VoiceQueueId\x20=\x20?','toString','state','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','select','cm_hopper_final','state\x20=\x204','group','Campaign','cm_hopper','CampaignId','CampaignId\x20=\x20?','state\x20=\x20?','calleridnum','checkContactHopper','CmHopper','findOne','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','save','update','then','destroy','end','error','stack','name','send','index','map','CmHopperFinal','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where'];(function(_0x3f94f9,_0x42774b){var _0x46f84f=function(_0xa080d8){while(--_0xa080d8){_0x3f94f9['push'](_0x3f94f9['shift']());}};_0x46f84f(++_0x42774b);}(_0x687b,0x14a));var _0xb687=function(_0x5e3b4d,_0x292f10){_0x5e3b4d=_0x5e3b4d-0x0;var _0x3a5e56=_0x687b[_0x5e3b4d];return _0x3a5e56;};'use strict';var emlformat=require(_0xb687('0x0'));var rimraf=require(_0xb687('0x1'));var zipdir=require(_0xb687('0x2'));var jsonpatch=require(_0xb687('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xb687('0x4'));var Mustache=require(_0xb687('0x5'));var util=require(_0xb687('0x6'));var path=require(_0xb687('0x7'));var sox=require(_0xb687('0x8'));var csv=require(_0xb687('0x9'));var ejs=require(_0xb687('0xa'));var fs=require('fs');var fs_extra=require(_0xb687('0xb'));var _=require(_0xb687('0xc'));var squel=require(_0xb687('0xd'));var crypto=require('crypto');var jsforce=require(_0xb687('0xe'));var deskjs=require(_0xb687('0xf'));var toCsv=require('to-csv');var querystring=require(_0xb687('0x10'));var Papa=require(_0xb687('0x11'));var Redis=require(_0xb687('0x12'));var authService=require(_0xb687('0x13'));var qs=require(_0xb687('0x14'));var as=require(_0xb687('0x15'));var hardwareService=require(_0xb687('0x16'));var logger=require(_0xb687('0x17'))(_0xb687('0x18'));var utils=require('../../config/utils');var config=require(_0xb687('0x19'));var licenseUtil=require(_0xb687('0x1a'));var db=require(_0xb687('0x1b'))['db'];function respondWithStatusCode(_0x12a0be,_0x4f9c19){_0x4f9c19=_0x4f9c19||0xcc;return function(_0x4c97ed){if(_0x4c97ed){return _0x12a0be[_0xb687('0x1c')](_0x4f9c19);}return _0x12a0be[_0xb687('0x1d')](_0x4f9c19)['end']();};}function respondWithResult(_0x108fd0,_0x2f1ac0){_0x2f1ac0=_0x2f1ac0||0xc8;return function(_0x1f1f35){if(_0x1f1f35){return _0x108fd0[_0xb687('0x1d')](_0x2f1ac0)[_0xb687('0x1e')](_0x1f1f35);}};}function respondWithFilteredResult(_0x3ab914,_0x30622f){return function(_0x141375){if(_0x141375){var _0x263085=typeof _0x30622f[_0xb687('0x1f')]===_0xb687('0x20')&&typeof _0x30622f[_0xb687('0x21')]==='undefined';var _0x214b06=_0x141375[_0xb687('0x22')];var _0x30d370=_0x263085?0x0:_0x30622f['offset'];var _0x48958d=_0x263085?_0x141375[_0xb687('0x22')]:_0x30622f[_0xb687('0x1f')]+_0x30622f[_0xb687('0x21')];var _0x4b593b;if(_0x48958d>=_0x214b06){_0x48958d=_0x214b06;_0x4b593b=0xc8;}else{_0x4b593b=0xce;}_0x3ab914[_0xb687('0x1d')](_0x4b593b);return _0x3ab914['set'](_0xb687('0x23'),_0x30d370+'-'+_0x48958d+'/'+_0x214b06)[_0xb687('0x1e')](_0x141375);}return null;};}function patchUpdates(_0x170dc0){return function(_0x44bd0b){try{jsonpatch['apply'](_0x44bd0b,_0x170dc0,!![]);}catch(_0x3a73d5){return BPromise['reject'](_0x3a73d5);}return _0x44bd0b[_0xb687('0x24')]();};}function saveUpdates(_0x90e892,_0x274241){return function(_0x546fde){if(_0x546fde){return _0x546fde[_0xb687('0x25')](_0x90e892)[_0xb687('0x26')](function(_0xa95e91){return _0xa95e91;});}return null;};}function removeEntity(_0x16cdcb,_0xbf6c58){return function(_0x38866c){if(_0x38866c){return _0x38866c[_0xb687('0x27')]()[_0xb687('0x26')](function(){_0x16cdcb['status'](0xcc)[_0xb687('0x28')]();});}};}function handleEntityNotFound(_0x129347,_0x1c1585){return function(_0x1a0261){if(!_0x1a0261){_0x129347[_0xb687('0x1c')](0x194);}return _0x1a0261;};}function handleError(_0x4136c9,_0x17ff2b){_0x17ff2b=_0x17ff2b||0x1f4;return function(_0x3cb2f2){logger[_0xb687('0x29')](_0x3cb2f2[_0xb687('0x2a')]);if(_0x3cb2f2['name']){delete _0x3cb2f2[_0xb687('0x2b')];}_0x4136c9[_0xb687('0x1d')](_0x17ff2b)[_0xb687('0x2c')](_0x3cb2f2);};}exports[_0xb687('0x2d')]=function(_0x2e5c8d,_0x173c58){var _0x4e9a06={},_0x28b69a={},_0x5143af={'count':0x0,'rows':[]};var _0x360429=_[_0xb687('0x2e')](db[_0xb687('0x2f')][_0xb687('0x30')],function(_0x1ad3ef){return{'name':_0x1ad3ef[_0xb687('0x31')],'type':_0x1ad3ef[_0xb687('0x32')]['key']};});_0x28b69a[_0xb687('0x33')]=_[_0xb687('0x2e')](_0x360429,_0xb687('0x2b'));_0x28b69a[_0xb687('0x34')]=_[_0xb687('0x35')](_0x2e5c8d[_0xb687('0x34')]);_0x28b69a[_0xb687('0x36')]=_[_0xb687('0x37')](_0x28b69a[_0xb687('0x33')],_0x28b69a[_0xb687('0x34')]);_0x4e9a06[_0xb687('0x38')]=_['intersection'](_0x28b69a['model'],qs[_0xb687('0x39')](_0x2e5c8d[_0xb687('0x34')][_0xb687('0x39')]));_0x4e9a06[_0xb687('0x38')]=_0x4e9a06['attributes']['length']?_0x4e9a06[_0xb687('0x38')]:_0x28b69a[_0xb687('0x33')];if(!_0x2e5c8d['query'][_0xb687('0x3a')](_0xb687('0x3b'))){_0x4e9a06['limit']=qs[_0xb687('0x21')](_0x2e5c8d['query'][_0xb687('0x21')]);_0x4e9a06[_0xb687('0x1f')]=qs[_0xb687('0x1f')](_0x2e5c8d[_0xb687('0x34')][_0xb687('0x1f')]);}_0x4e9a06[_0xb687('0x3c')]=qs['sort'](_0x2e5c8d[_0xb687('0x34')][_0xb687('0x3d')]);_0x4e9a06[_0xb687('0x3e')]=qs[_0xb687('0x36')](_['pick'](_0x2e5c8d[_0xb687('0x34')],_0x28b69a[_0xb687('0x36')]),_0x360429);if(_0x2e5c8d[_0xb687('0x34')][_0xb687('0x3f')]){_0x4e9a06[_0xb687('0x3e')]=_['merge'](_0x4e9a06[_0xb687('0x3e')],{'$or':_[_0xb687('0x2e')](_0x360429,function(_0x24c013){if(_0x24c013[_0xb687('0x32')]!==_0xb687('0x40')){var _0x29cf09={};_0x29cf09[_0x24c013['name']]={'$like':'%'+_0x2e5c8d['query'][_0xb687('0x3f')]+'%'};return _0x29cf09;}})});}_0x4e9a06=_['merge']({},_0x4e9a06,_0x2e5c8d[_0xb687('0x41')]);var _0x2f4550={'where':_0x4e9a06['where']};return db[_0xb687('0x2f')][_0xb687('0x22')](_0x2f4550)['then'](function(_0x394b56){_0x5143af[_0xb687('0x22')]=_0x394b56;if(_0x2e5c8d[_0xb687('0x34')]['includeAll']){_0x4e9a06[_0xb687('0x42')]=[{'all':!![]}];}return db[_0xb687('0x2f')][_0xb687('0x43')](_0x4e9a06);})[_0xb687('0x26')](function(_0x140388){_0x5143af[_0xb687('0x44')]=_0x140388;return _0x5143af;})[_0xb687('0x26')](respondWithFilteredResult(_0x173c58,_0x4e9a06))['catch'](handleError(_0x173c58,null));};exports[_0xb687('0x45')]=function(_0x4cf6ad,_0x50fdb7){var _0xa3a9e0={'raw':!![],'where':{'id':_0x4cf6ad['params']['id']}},_0x430364={};_0x430364[_0xb687('0x33')]=_['keys'](db[_0xb687('0x2f')][_0xb687('0x30')]);_0x430364['query']=_[_0xb687('0x35')](_0x4cf6ad[_0xb687('0x34')]);_0x430364['filters']=_[_0xb687('0x37')](_0x430364[_0xb687('0x33')],_0x430364[_0xb687('0x34')]);_0xa3a9e0[_0xb687('0x38')]=_[_0xb687('0x37')](_0x430364[_0xb687('0x33')],qs[_0xb687('0x39')](_0x4cf6ad[_0xb687('0x34')][_0xb687('0x39')]));_0xa3a9e0[_0xb687('0x38')]=_0xa3a9e0[_0xb687('0x38')][_0xb687('0x46')]?_0xa3a9e0['attributes']:_0x430364[_0xb687('0x33')];if(_0x4cf6ad['query'][_0xb687('0x47')]){_0xa3a9e0[_0xb687('0x42')]=[{'all':!![]}];}_0xa3a9e0=_[_0xb687('0x48')]({},_0xa3a9e0,_0x4cf6ad[_0xb687('0x41')]);return db[_0xb687('0x2f')][_0xb687('0x49')](_0xa3a9e0)['then'](handleEntityNotFound(_0x50fdb7,null))['then'](respondWithResult(_0x50fdb7,null))[_0xb687('0x4a')](handleError(_0x50fdb7,null));};exports[_0xb687('0x4b')]=function(_0x40558a,_0x4f3069){return db['CmHopperFinal'][_0xb687('0x4b')]()[_0xb687('0x26')](respondWithResult(_0x4f3069,null))[_0xb687('0x4a')](handleError(_0x4f3069,null));};exports[_0xb687('0x25')]=function(_0x535c00,_0x33a0b0){if(_0x535c00[_0xb687('0x4c')][_0xb687('0x4d')]){delete _0x535c00[_0xb687('0x4c')]['uniqueid'];}return db['CmHopperFinal'][_0xb687('0x49')]({'where':{'uniqueid':_0x535c00[_0xb687('0x4e')]['id']}})[_0xb687('0x26')](handleEntityNotFound(_0x33a0b0,null))['then'](saveUpdates(_0x535c00['body'],null))[_0xb687('0x26')](respondWithResult(_0x33a0b0,null))[_0xb687('0x4a')](handleError(_0x33a0b0,null));};exports[_0xb687('0x4f')]=function(_0x22e618,_0x34205d,_0x1fb31a){return db[_0xb687('0x2f')][_0xb687('0x43')]({'raw':![],'where':{'VoiceQueueId':_0x22e618['params']['id']},'attributes':[[db[_0xb687('0x50')]['fn'](_0xb687('0x51'),db[_0xb687('0x50')]['fn']('IF',db['sequelize']['literal']('`state`\x20=\x200,\x201,\x20null'))),'noSuchContacts'],[db[_0xb687('0x50')]['fn'](_0xb687('0x51'),db[_0xb687('0x50')]['fn']('IF',db[_0xb687('0x50')][_0xb687('0x52')](_0xb687('0x53')))),_0xb687('0x54')],[db[_0xb687('0x50')]['fn'](_0xb687('0x51'),db[_0xb687('0x50')]['fn']('IF',db[_0xb687('0x50')][_0xb687('0x52')](_0xb687('0x55')))),_0xb687('0x56')],[db[_0xb687('0x50')]['fn'](_0xb687('0x51'),db[_0xb687('0x50')]['fn']('IF',db['sequelize']['literal'](_0xb687('0x57')))),_0xb687('0x58')],[db[_0xb687('0x50')]['fn'](_0xb687('0x51'),db['sequelize']['fn']('IF',db[_0xb687('0x50')][_0xb687('0x52')]('`state`\x20=\x2010\x20,\x201,\x20null'))),_0xb687('0x59')],[db['sequelize']['fn'](_0xb687('0x51'),db[_0xb687('0x50')]['fn']('IF',db['sequelize']['literal'](_0xb687('0x5a')))),_0xb687('0x5b')],[db['sequelize']['fn'](_0xb687('0x51'),db[_0xb687('0x50')]['fn']('IF',db[_0xb687('0x50')]['literal'](_0xb687('0x5c')))),'reCallContacts'],[db[_0xb687('0x50')]['fn'](_0xb687('0x51'),db[_0xb687('0x50')]['fn']('IF',db[_0xb687('0x50')][_0xb687('0x52')]('`state`\x20=\x2019,\x201,\x20null'))),'answeringMachine']]})[_0xb687('0x26')](handleEntityNotFound(_0x34205d,null))['then'](respondWithResult(_0x34205d,null))['catch'](handleError(_0x34205d,null));};exports['countContactsIvrCampaignHopperFinal']=function(_0x5d266c,_0x1cc507,_0x1db4ca){return db[_0xb687('0x2f')][_0xb687('0x43')]({'raw':![],'where':{'CampaignId':_0x5d266c[_0xb687('0x4e')]['id']},'attributes':[[db[_0xb687('0x50')]['fn'](_0xb687('0x51'),db[_0xb687('0x50')]['fn']('IF',db[_0xb687('0x50')][_0xb687('0x52')](_0xb687('0x5d')))),'noSuchContacts'],[db['sequelize']['fn'](_0xb687('0x51'),db['sequelize']['fn']('IF',db[_0xb687('0x50')][_0xb687('0x52')](_0xb687('0x53')))),_0xb687('0x54')],[db[_0xb687('0x50')]['fn']('COUNT',db[_0xb687('0x50')]['fn']('IF',db['sequelize'][_0xb687('0x52')](_0xb687('0x55')))),_0xb687('0x56')],[db[_0xb687('0x50')]['fn'](_0xb687('0x51'),db[_0xb687('0x50')]['fn']('IF',db[_0xb687('0x50')]['literal'](_0xb687('0x57')))),_0xb687('0x58')],[db[_0xb687('0x50')]['fn'](_0xb687('0x51'),db[_0xb687('0x50')]['fn']('IF',db['sequelize'][_0xb687('0x52')](_0xb687('0x5e')))),_0xb687('0x59')],[db[_0xb687('0x50')]['fn'](_0xb687('0x51'),db[_0xb687('0x50')]['fn']('IF',db[_0xb687('0x50')][_0xb687('0x52')](_0xb687('0x5a')))),_0xb687('0x5b')],[db[_0xb687('0x50')]['fn']('COUNT',db[_0xb687('0x50')]['fn']('IF',db[_0xb687('0x50')][_0xb687('0x52')](_0xb687('0x5c')))),'reCallContacts'],[db[_0xb687('0x50')]['fn'](_0xb687('0x51'),db['sequelize']['fn']('IF',db[_0xb687('0x50')][_0xb687('0x52')](_0xb687('0x5f')))),'answeringMachine']]})[_0xb687('0x26')](handleEntityNotFound(_0x1cc507,null))[_0xb687('0x26')](respondWithResult(_0x1cc507,null))['catch'](handleError(_0x1cc507,null));};exports[_0xb687('0x60')]=function(_0x5449c4,_0x2c2add,_0x431cc5){return db['VoiceQueue'][_0xb687('0x49')]({'where':{'id':_0x5449c4[_0xb687('0x4e')]['id']}})['then'](handleEntityNotFound(_0x2c2add,null))[_0xb687('0x26')](function(_0x1736ef){var _0x52285e;if(_0x1736ef){_0x52285e=squel['insert']()[_0xb687('0x61')]('cm_hopper')[_0xb687('0x62')]([_0xb687('0x63'),_0xb687('0x64'),_0xb687('0x65'),_0xb687('0x66'),_0xb687('0x67'),_0xb687('0x68'),_0xb687('0x69')],squel['select']()[_0xb687('0x6a')](_0xb687('0x6b'),_0xb687('0x63'))[_0xb687('0x6a')](_0xb687('0x6c'),_0xb687('0x64'))['field'](_0xb687('0x6d'),_0xb687('0x65'))['field'](_0xb687('0x6e'),_0xb687('0x66'))[_0xb687('0x6a')](_0xb687('0x6f'),'VoiceQueueId')[_0xb687('0x6a')]('NOW()','createdAt')[_0xb687('0x6a')]('NOW()','updatedAt')[_0xb687('0x70')]('cm_hopper_final')[_0xb687('0x3e')](_0xb687('0x71'),_0x5449c4['params']['id'][_0xb687('0x72')]())[_0xb687('0x3e')]('state\x20=\x20?',_0x5449c4[_0xb687('0x4c')][_0xb687('0x73')][_0xb687('0x72')]())[_0xb687('0x3e')](_0xb687('0x74'))[_0xb687('0x3e')](_0xb687('0x75'),squel[_0xb687('0x76')]()[_0xb687('0x6a')](_0xb687('0x63'))[_0xb687('0x70')]('cm_hopper')[_0xb687('0x3e')]('VoiceQueueId\x20=\x20?',_0x5449c4['params']['id'][_0xb687('0x72')]()))[_0xb687('0x3e')](_0xb687('0x75'),squel[_0xb687('0x76')]()[_0xb687('0x6a')]('calleridnum')['from'](_0xb687('0x77'))[_0xb687('0x3e')](_0xb687('0x71'),_0x5449c4[_0xb687('0x4e')]['id']['toString']())[_0xb687('0x3e')](_0xb687('0x78')))[_0xb687('0x79')](_0xb687('0x65')))[_0xb687('0x72')]();return db[_0xb687('0x50')][_0xb687('0x34')](_0x52285e);}return[];})[_0xb687('0x26')](respondWithResult(_0x2c2add,null))[_0xb687('0x4a')](handleError(_0x2c2add,null));};exports['moveContactsIvrCampaignHopperFinal']=function(_0x25f5c3,_0x33d1fc,_0x207953){return db[_0xb687('0x7a')][_0xb687('0x49')]({'where':{'id':_0x25f5c3['params']['id']}})[_0xb687('0x26')](handleEntityNotFound(_0x33d1fc,null))[_0xb687('0x26')](function(_0x48bbee){var _0x19ac6d;if(_0x48bbee){_0x19ac6d=squel['insert']()[_0xb687('0x61')](_0xb687('0x7b'))['fromQuery']([_0xb687('0x63'),_0xb687('0x64'),'ContactId',_0xb687('0x66'),_0xb687('0x7c'),_0xb687('0x68'),_0xb687('0x69')],squel[_0xb687('0x76')]()[_0xb687('0x6a')]('ANY_VALUE(calleridnum)',_0xb687('0x63'))[_0xb687('0x6a')](_0xb687('0x6c'),_0xb687('0x64'))[_0xb687('0x6a')](_0xb687('0x6d'),_0xb687('0x65'))[_0xb687('0x6a')](_0xb687('0x6e'),_0xb687('0x66'))[_0xb687('0x6a')]('ANY_VALUE(CampaignId)',_0xb687('0x7c'))['field'](_0xb687('0x6c'),_0xb687('0x68'))['field']('NOW()',_0xb687('0x69'))[_0xb687('0x70')](_0xb687('0x77'))[_0xb687('0x3e')](_0xb687('0x7d'),_0x25f5c3[_0xb687('0x4e')]['id'][_0xb687('0x72')]())[_0xb687('0x3e')](_0xb687('0x7e'),_0x25f5c3[_0xb687('0x4c')][_0xb687('0x73')][_0xb687('0x72')]())[_0xb687('0x3e')](_0xb687('0x74'))[_0xb687('0x3e')](_0xb687('0x75'),squel['select']()['field'](_0xb687('0x63'))['from']('cm_hopper')[_0xb687('0x3e')](_0xb687('0x7d'),_0x25f5c3['params']['id'][_0xb687('0x72')]()))[_0xb687('0x3e')]('calleridnum\x20NOT\x20IN\x20(?)',squel[_0xb687('0x76')]()[_0xb687('0x6a')](_0xb687('0x7f'))[_0xb687('0x70')](_0xb687('0x77'))[_0xb687('0x3e')](_0xb687('0x7d'),_0x25f5c3[_0xb687('0x4e')]['id'][_0xb687('0x72')]())['where'](_0xb687('0x78')))[_0xb687('0x79')]('ContactId'))[_0xb687('0x72')]();return db['sequelize'][_0xb687('0x34')](_0x19ac6d);}return[];})[_0xb687('0x26')](respondWithResult(_0x33d1fc,null))['catch'](handleError(_0x33d1fc,null));};exports[_0xb687('0x80')]=function(_0x20e46a,_0x1c389f,_0x45d0ab){return db[_0xb687('0x81')][_0xb687('0x82')]({'where':{'VoiceQueueId':_0x20e46a[_0xb687('0x4c')]['VoiceQueueId'],'CampaignId':_0x20e46a['body'][_0xb687('0x7c')],'ContactId':_0x20e46a['body'][_0xb687('0x65')]}})[_0xb687('0x26')](handleEntityNotFound(_0x1c389f,null))[_0xb687('0x26')](function(_0x312529){if(_0x312529){return _0x312529;}return null;})['then'](respondWithResult(_0x1c389f,null))[_0xb687('0x4a')](handleError(_0x1c389f,null));};
\ No newline at end of file
index 2401ac5..9547253 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf80a=['bluebird','request-promise','rimraf','../../config/environment','./cmHopperFinal.attributes','exports','define','CmHopperFinal','cm_hopper_final','calleridnum','uniqueid','lodash','util','../../config/logger','api'];(function(_0x5be7aa,_0x5de661){var _0x215408=function(_0x353715){while(--_0x353715){_0x5be7aa['push'](_0x5be7aa['shift']());}};_0x215408(++_0x5de661);}(_0xf80a,0x155));var _0xaf80=function(_0x1bc89c,_0x4566ed){_0x1bc89c=_0x1bc89c-0x0;var _0x16994e=_0xf80a[_0x1bc89c];return _0x16994e;};'use strict';var _=require(_0xaf80('0x0'));var util=require(_0xaf80('0x1'));var logger=require(_0xaf80('0x2'))(_0xaf80('0x3'));var moment=require('moment');var BPromise=require(_0xaf80('0x4'));var rp=require(_0xaf80('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xaf80('0x6'));var config=require(_0xaf80('0x7'));var attributes=require(_0xaf80('0x8'));module[_0xaf80('0x9')]=function(_0x438740,_0x3c5dbc){return _0x438740[_0xaf80('0xa')](_0xaf80('0xb'),attributes,{'tableName':_0xaf80('0xc'),'paranoid':![],'indexes':[{'name':_0xaf80('0xd'),'fields':[_0xaf80('0xd')]},{'name':_0xaf80('0xe'),'fields':[_0xaf80('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x09dd=['CmHopperFinal','cm_hopper_final','calleridnum','uniqueid','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','./cmHopperFinal.attributes','exports','define'];(function(_0x33a476,_0x52c445){var _0x158a2f=function(_0x8aa5c5){while(--_0x8aa5c5){_0x33a476['push'](_0x33a476['shift']());}};_0x158a2f(++_0x52c445);}(_0x09dd,0x7c));var _0xd09d=function(_0x4c74f4,_0x2f93c4){_0x4c74f4=_0x4c74f4-0x0;var _0x5aaee1=_0x09dd[_0x4c74f4];return _0x5aaee1;};'use strict';var _=require(_0xd09d('0x0'));var util=require(_0xd09d('0x1'));var logger=require(_0xd09d('0x2'))('api');var moment=require('moment');var BPromise=require(_0xd09d('0x3'));var rp=require(_0xd09d('0x4'));var fs=require('fs');var path=require(_0xd09d('0x5'));var rimraf=require(_0xd09d('0x6'));var config=require(_0xd09d('0x7'));var attributes=require(_0xd09d('0x8'));module[_0xd09d('0x9')]=function(_0x4bd40b,_0x2edc04){return _0x4bd40b[_0xd09d('0xa')](_0xd09d('0xb'),attributes,{'tableName':_0xd09d('0xc'),'paranoid':![],'indexes':[{'name':_0xd09d('0xd'),'fields':[_0xd09d('0xd')]},{'name':_0xd09d('0xe'),'fields':[_0xd09d('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index b97aa6c..1158a1e 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(_0x4aaf1e,_0x5dd8b7){var _0x32dcf7=function(_0x251716){while(--_0x251716){_0x4aaf1e['push'](_0x4aaf1e['shift']());}};_0x32dcf7(++_0x5dd8b7);}(_0x7a54,0x106));var _0x47a5=function(_0x1bcfd0,_0x293e3f){_0x1bcfd0=_0x1bcfd0-0x0;var _0x4a870f=_0x7a54[_0x1bcfd0];return _0x4a870f;};'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(_0x5e2397,_0x675b99){var _0x31d215=function(_0x5c5fd5){while(--_0x5c5fd5){_0x5e2397['push'](_0x5e2397['shift']());}};_0x31d215(++_0x675b99);}(_0xb10b,0x12a));var _0xbb10=function(_0x315b61,_0x4bb11e){_0x315b61=_0x315b61-0x0;var _0x3521e8=_0xb10b[_0x315b61];return _0x3521e8;};'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 b368516..5b471cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33a3=['path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./cmHopperFinal.controller','get','isAuthenticated','index','/describe','describe','show','/voice/queue/countAttributes/:id','countContactsQueueCampaignHopperFinal','/campaign/countAttributes/:id','post','/voice/queue/moveContacts/:id','moveContactsQueueCampaignHopperFinal','/voice/campaign/moveContacts/:id','put','/:id','exports','multer'];(function(_0x3f9bda,_0x4dfa94){var _0x3dcce4=function(_0x19fabd){while(--_0x19fabd){_0x3f9bda['push'](_0x3f9bda['shift']());}};_0x3dcce4(++_0x4dfa94);}(_0x33a3,0xbf));var _0x333a=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x33a3[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0x333a('0x0'));var util=require('util');var path=require(_0x333a('0x1'));var timeout=require('connect-timeout');var express=require(_0x333a('0x2'));var router=express[_0x333a('0x3')]();var fs_extra=require(_0x333a('0x4'));var auth=require(_0x333a('0x5'));var interaction=require(_0x333a('0x6'));var config=require('../../config/environment');var controller=require(_0x333a('0x7'));router[_0x333a('0x8')]('/',auth[_0x333a('0x9')](),controller[_0x333a('0xa')]);router[_0x333a('0x8')](_0x333a('0xb'),auth[_0x333a('0x9')](),controller[_0x333a('0xc')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x333a('0xd')]);router['get'](_0x333a('0xe'),auth[_0x333a('0x9')](),controller[_0x333a('0xf')]);router[_0x333a('0x8')](_0x333a('0x10'),auth[_0x333a('0x9')](),controller['countContactsIvrCampaignHopperFinal']);router[_0x333a('0x11')](_0x333a('0x12'),auth[_0x333a('0x9')](),controller[_0x333a('0x13')]);router[_0x333a('0x11')](_0x333a('0x14'),auth[_0x333a('0x9')](),controller['moveContactsIvrCampaignHopperFinal']);router[_0x333a('0x11')]('/checkContactHopper',auth['isAuthenticated'](),controller['checkContactHopper']);router[_0x333a('0x15')](_0x333a('0x16'),auth[_0x333a('0x9')](),controller['update']);module[_0x333a('0x17')]=router;
\ No newline at end of file
+var _0x6f12=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperFinal.controller','isAuthenticated','get','/describe','describe','show','/voice/queue/countAttributes/:id','countContactsQueueCampaignHopperFinal','/campaign/countAttributes/:id','post','moveContactsQueueCampaignHopperFinal','/voice/campaign/moveContacts/:id','moveContactsIvrCampaignHopperFinal','/checkContactHopper','checkContactHopper','put','update','exports','multer'];(function(_0x579edd,_0xc53595){var _0x7638e8=function(_0x3f536d){while(--_0x3f536d){_0x579edd['push'](_0x579edd['shift']());}};_0x7638e8(++_0xc53595);}(_0x6f12,0x86));var _0x26f1=function(_0x1ecbbd,_0x44c5cc){_0x1ecbbd=_0x1ecbbd-0x0;var _0x1e2912=_0x6f12[_0x1ecbbd];return _0x1e2912;};'use strict';var multer=require(_0x26f1('0x0'));var util=require('util');var path=require(_0x26f1('0x1'));var timeout=require(_0x26f1('0x2'));var express=require(_0x26f1('0x3'));var router=express[_0x26f1('0x4')]();var fs_extra=require(_0x26f1('0x5'));var auth=require(_0x26f1('0x6'));var interaction=require(_0x26f1('0x7'));var config=require(_0x26f1('0x8'));var controller=require(_0x26f1('0x9'));router['get']('/',auth[_0x26f1('0xa')](),controller['index']);router[_0x26f1('0xb')](_0x26f1('0xc'),auth['isAuthenticated'](),controller[_0x26f1('0xd')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x26f1('0xe')]);router[_0x26f1('0xb')](_0x26f1('0xf'),auth['isAuthenticated'](),controller[_0x26f1('0x10')]);router['get'](_0x26f1('0x11'),auth[_0x26f1('0xa')](),controller['countContactsIvrCampaignHopperFinal']);router[_0x26f1('0x12')]('/voice/queue/moveContacts/:id',auth[_0x26f1('0xa')](),controller[_0x26f1('0x13')]);router[_0x26f1('0x12')](_0x26f1('0x14'),auth['isAuthenticated'](),controller[_0x26f1('0x15')]);router[_0x26f1('0x12')](_0x26f1('0x16'),auth[_0x26f1('0xa')](),controller[_0x26f1('0x17')]);router[_0x26f1('0x18')]('/:id',auth['isAuthenticated'](),controller[_0x26f1('0x19')]);module[_0x26f1('0x1a')]=router;
\ No newline at end of file
index a371019..658344c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75f4=['STRING','DATE','BOOLEAN','sequelize','exports','INTEGER'];(function(_0x584bfa,_0x15fccb){var _0x3b55a6=function(_0x299738){while(--_0x299738){_0x584bfa['push'](_0x584bfa['shift']());}};_0x3b55a6(++_0x15fccb);}(_0x75f4,0xc3));var _0x475f=function(_0x3a0863,_0x4cd5ef){_0x3a0863=_0x3a0863-0x0;var _0x85c557=_0x75f4[_0x3a0863];return _0x85c557;};'use strict';var Sequelize=require(_0x475f('0x0'));module[_0x475f('0x1')]={'state':{'type':Sequelize[_0x475f('0x2')](0x2)},'statedesc':{'type':Sequelize[_0x475f('0x3')]},'scheduledat':{'type':Sequelize[_0x475f('0x4')]},'countbusyretry':{'type':Sequelize[_0x475f('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x475f('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x475f('0x2')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x475f('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x475f('0x3')]},'originatecalleridnum':{'type':Sequelize[_0x475f('0x3')]},'originatecalleridname':{'type':Sequelize[_0x475f('0x3')]},'calleridnum':{'type':Sequelize[_0x475f('0x3')]},'calleridname':{'type':Sequelize[_0x475f('0x3')]},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize[_0x475f('0x4')]},'answertime':{'type':Sequelize[_0x475f('0x4')]},'droptime':{'type':Sequelize[_0x475f('0x4')]},'endtime':{'type':Sequelize[_0x475f('0x4')]},'ringtime':{'type':Sequelize[_0x475f('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x475f('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x475f('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize['STRING']},'campaign':{'type':Sequelize[_0x475f('0x3')]},'campaigntype':{'type':Sequelize[_0x475f('0x3')]},'membername':{'type':Sequelize[_0x475f('0x3')]},'reason':{'type':Sequelize[_0x475f('0x3')]},'amd':{'type':Sequelize[_0x475f('0x5')],'defaultValue':![]},'fax':{'type':Sequelize[_0x475f('0x5')],'defaultValue':![]},'callback':{'type':Sequelize[_0x475f('0x5')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x475f('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x475f('0x4')]},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'editedat':{'type':Sequelize['DATE']},'edited':{'type':Sequelize[_0x475f('0x5')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0x475f('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x475f('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x475f('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x475f('0x2')],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0x475f('0x3')]}};
\ No newline at end of file
+var _0x8926=['BOOLEAN','sequelize','INTEGER','STRING','DATE'];(function(_0x3c5f8d,_0x39891f){var _0x3b7beb=function(_0x44d6c9){while(--_0x44d6c9){_0x3c5f8d['push'](_0x3c5f8d['shift']());}};_0x3b7beb(++_0x39891f);}(_0x8926,0x10f));var _0x6892=function(_0x1c33f8,_0x27759c){_0x1c33f8=_0x1c33f8-0x0;var _0x13ab65=_0x8926[_0x1c33f8];return _0x13ab65;};'use strict';var Sequelize=require(_0x6892('0x0'));module['exports']={'state':{'type':Sequelize[_0x6892('0x1')](0x2)},'statedesc':{'type':Sequelize[_0x6892('0x2')]},'scheduledat':{'type':Sequelize[_0x6892('0x3')]},'countbusyretry':{'type':Sequelize[_0x6892('0x1')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x6892('0x1')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x6892('0x1')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x6892('0x1')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x6892('0x2')]},'originatecalleridnum':{'type':Sequelize[_0x6892('0x2')]},'originatecalleridname':{'type':Sequelize[_0x6892('0x2')]},'calleridnum':{'type':Sequelize[_0x6892('0x2')]},'calleridname':{'type':Sequelize[_0x6892('0x2')]},'starttime':{'type':Sequelize[_0x6892('0x3')]},'responsetime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0x6892('0x3')]},'droptime':{'type':Sequelize[_0x6892('0x3')]},'endtime':{'type':Sequelize[_0x6892('0x3')]},'ringtime':{'type':Sequelize[_0x6892('0x1')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x6892('0x1')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x6892('0x1')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x6892('0x1')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x6892('0x2')]},'campaign':{'type':Sequelize[_0x6892('0x2')]},'campaigntype':{'type':Sequelize[_0x6892('0x2')]},'membername':{'type':Sequelize[_0x6892('0x2')]},'reason':{'type':Sequelize[_0x6892('0x2')]},'amd':{'type':Sequelize[_0x6892('0x4')],'defaultValue':![]},'fax':{'type':Sequelize[_0x6892('0x4')],'defaultValue':![]},'callback':{'type':Sequelize[_0x6892('0x4')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x6892('0x2')],'defaultValue':null},'callbackat':{'type':Sequelize['DATE']},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'editedat':{'type':Sequelize[_0x6892('0x3')]},'edited':{'type':Sequelize[_0x6892('0x4')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0x6892('0x1')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x6892('0x1')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x6892('0x1')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0x6892('0x2')]}};
\ No newline at end of file
index 551bf46..35502e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c70=['send','index','map','CmHopperHistory','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','sort','where','pick','filter','VIRTUAL','merge','includeAll','include','findAll','catch','show','rawAttributes','find','create','body','describe','uniqueid','params','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','update','then','destroy','error','stack','name'];(function(_0x5da74f,_0x2f9d6f){var _0x1b6515=function(_0x2ceb83){while(--_0x2ceb83){_0x5da74f['push'](_0x5da74f['shift']());}};_0x1b6515(++_0x2f9d6f);}(_0x5c70,0x102));var _0x05c7=function(_0x316772,_0x20e198){_0x316772=_0x316772-0x0;var _0x2531e9=_0x5c70[_0x316772];return _0x2531e9;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x05c7('0x0'));var jsonpatch=require(_0x05c7('0x1'));var rp=require(_0x05c7('0x2'));var moment=require(_0x05c7('0x3'));var BPromise=require(_0x05c7('0x4'));var Mustache=require(_0x05c7('0x5'));var util=require(_0x05c7('0x6'));var path=require(_0x05c7('0x7'));var sox=require(_0x05c7('0x8'));var csv=require(_0x05c7('0x9'));var ejs=require(_0x05c7('0xa'));var fs=require('fs');var fs_extra=require(_0x05c7('0xb'));var _=require(_0x05c7('0xc'));var squel=require(_0x05c7('0xd'));var crypto=require('crypto');var jsforce=require(_0x05c7('0xe'));var deskjs=require(_0x05c7('0xf'));var toCsv=require(_0x05c7('0x9'));var querystring=require(_0x05c7('0x10'));var Papa=require(_0x05c7('0x11'));var Redis=require(_0x05c7('0x12'));var authService=require(_0x05c7('0x13'));var qs=require(_0x05c7('0x14'));var as=require(_0x05c7('0x15'));var hardwareService=require(_0x05c7('0x16'));var logger=require(_0x05c7('0x17'))(_0x05c7('0x18'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4ac808,_0x4a1e6c){_0x4a1e6c=_0x4a1e6c||0xcc;return function(_0x11676d){if(_0x11676d){return _0x4ac808[_0x05c7('0x19')](_0x4a1e6c);}return _0x4ac808[_0x05c7('0x1a')](_0x4a1e6c)[_0x05c7('0x1b')]();};}function respondWithResult(_0x1a9694,_0x9a9627){_0x9a9627=_0x9a9627||0xc8;return function(_0x18cf2f){if(_0x18cf2f){return _0x1a9694[_0x05c7('0x1a')](_0x9a9627)[_0x05c7('0x1c')](_0x18cf2f);}};}function respondWithFilteredResult(_0x111ac0,_0x354553){return function(_0x5bab6d){if(_0x5bab6d){var _0x2a035a=typeof _0x354553[_0x05c7('0x1d')]===_0x05c7('0x1e')&&typeof _0x354553[_0x05c7('0x1f')]===_0x05c7('0x1e');var _0x445ebe=_0x5bab6d[_0x05c7('0x20')];var _0x22b266=_0x2a035a?0x0:_0x354553[_0x05c7('0x1d')];var _0x1b9ecf=_0x2a035a?_0x5bab6d[_0x05c7('0x20')]:_0x354553[_0x05c7('0x1d')]+_0x354553['limit'];var _0x4d2e34;if(_0x1b9ecf>=_0x445ebe){_0x1b9ecf=_0x445ebe;_0x4d2e34=0xc8;}else{_0x4d2e34=0xce;}_0x111ac0[_0x05c7('0x1a')](_0x4d2e34);return _0x111ac0[_0x05c7('0x21')]('Content-Range',_0x22b266+'-'+_0x1b9ecf+'/'+_0x445ebe)[_0x05c7('0x1c')](_0x5bab6d);}return null;};}function patchUpdates(_0x1091f4){return function(_0x2058c3){try{jsonpatch[_0x05c7('0x22')](_0x2058c3,_0x1091f4,!![]);}catch(_0x4f4243){return BPromise[_0x05c7('0x23')](_0x4f4243);}return _0x2058c3['save']();};}function saveUpdates(_0x20e6f3,_0x42a14d){return function(_0xad7cd1){if(_0xad7cd1){return _0xad7cd1[_0x05c7('0x24')](_0x20e6f3)[_0x05c7('0x25')](function(_0x2945ae){return _0x2945ae;});}return null;};}function removeEntity(_0x4d2f03,_0x4067b2){return function(_0x3abcec){if(_0x3abcec){return _0x3abcec[_0x05c7('0x26')]()[_0x05c7('0x25')](function(){_0x4d2f03[_0x05c7('0x1a')](0xcc)[_0x05c7('0x1b')]();});}};}function handleEntityNotFound(_0x1c2978,_0x53c674){return function(_0x2abc92){if(!_0x2abc92){_0x1c2978[_0x05c7('0x19')](0x194);}return _0x2abc92;};}function handleError(_0x305025,_0x792092){_0x792092=_0x792092||0x1f4;return function(_0x50be05){logger[_0x05c7('0x27')](_0x50be05[_0x05c7('0x28')]);if(_0x50be05[_0x05c7('0x29')]){delete _0x50be05[_0x05c7('0x29')];}_0x305025[_0x05c7('0x1a')](_0x792092)[_0x05c7('0x2a')](_0x50be05);};}exports[_0x05c7('0x2b')]=function(_0x4c27bc,_0x3df164){var _0x447277={},_0x8536b7={},_0x588975={'count':0x0,'rows':[]};var _0x36edf5=_[_0x05c7('0x2c')](db[_0x05c7('0x2d')]['rawAttributes'],function(_0x4fd3ea){return{'name':_0x4fd3ea[_0x05c7('0x2e')],'type':_0x4fd3ea[_0x05c7('0x2f')][_0x05c7('0x30')]};});_0x8536b7[_0x05c7('0x31')]=_[_0x05c7('0x2c')](_0x36edf5,_0x05c7('0x29'));_0x8536b7[_0x05c7('0x32')]=_[_0x05c7('0x33')](_0x4c27bc[_0x05c7('0x32')]);_0x8536b7[_0x05c7('0x34')]=_[_0x05c7('0x35')](_0x8536b7[_0x05c7('0x31')],_0x8536b7[_0x05c7('0x32')]);_0x447277[_0x05c7('0x36')]=_[_0x05c7('0x35')](_0x8536b7[_0x05c7('0x31')],qs[_0x05c7('0x37')](_0x4c27bc[_0x05c7('0x32')]['fields']));_0x447277[_0x05c7('0x36')]=_0x447277['attributes']['length']?_0x447277[_0x05c7('0x36')]:_0x8536b7[_0x05c7('0x31')];if(!_0x4c27bc[_0x05c7('0x32')][_0x05c7('0x38')]('nolimit')){_0x447277[_0x05c7('0x1f')]=qs[_0x05c7('0x1f')](_0x4c27bc['query']['limit']);_0x447277['offset']=qs[_0x05c7('0x1d')](_0x4c27bc[_0x05c7('0x32')][_0x05c7('0x1d')]);}_0x447277['order']=qs[_0x05c7('0x39')](_0x4c27bc[_0x05c7('0x32')]['sort']);_0x447277[_0x05c7('0x3a')]=qs[_0x05c7('0x34')](_[_0x05c7('0x3b')](_0x4c27bc[_0x05c7('0x32')],_0x8536b7[_0x05c7('0x34')]),_0x36edf5);if(_0x4c27bc[_0x05c7('0x32')][_0x05c7('0x3c')]){_0x447277[_0x05c7('0x3a')]=_['merge'](_0x447277['where'],{'$or':_[_0x05c7('0x2c')](_0x36edf5,function(_0x2c47ac){if(_0x2c47ac['type']!==_0x05c7('0x3d')){var _0x507c4b={};_0x507c4b[_0x2c47ac[_0x05c7('0x29')]]={'$like':'%'+_0x4c27bc[_0x05c7('0x32')]['filter']+'%'};return _0x507c4b;}})});}_0x447277=_[_0x05c7('0x3e')]({},_0x447277,_0x4c27bc['options']);var _0x8123f={'where':_0x447277[_0x05c7('0x3a')]};return db[_0x05c7('0x2d')]['count'](_0x8123f)['then'](function(_0x335719){_0x588975[_0x05c7('0x20')]=_0x335719;if(_0x4c27bc[_0x05c7('0x32')][_0x05c7('0x3f')]){_0x447277[_0x05c7('0x40')]=[{'all':!![]}];}return db[_0x05c7('0x2d')][_0x05c7('0x41')](_0x447277);})[_0x05c7('0x25')](function(_0xb2d03d){_0x588975['rows']=_0xb2d03d;return _0x588975;})['then'](respondWithFilteredResult(_0x3df164,_0x447277))[_0x05c7('0x42')](handleError(_0x3df164,null));};exports[_0x05c7('0x43')]=function(_0x3ad08d,_0x46472b){var _0x3be8b4={'raw':!![],'where':{'id':_0x3ad08d['params']['id']}},_0x3451b6={};_0x3451b6[_0x05c7('0x31')]=_[_0x05c7('0x33')](db[_0x05c7('0x2d')][_0x05c7('0x44')]);_0x3451b6[_0x05c7('0x32')]=_[_0x05c7('0x33')](_0x3ad08d[_0x05c7('0x32')]);_0x3451b6[_0x05c7('0x34')]=_[_0x05c7('0x35')](_0x3451b6['model'],_0x3451b6[_0x05c7('0x32')]);_0x3be8b4[_0x05c7('0x36')]=_['intersection'](_0x3451b6['model'],qs[_0x05c7('0x37')](_0x3ad08d['query']['fields']));_0x3be8b4['attributes']=_0x3be8b4['attributes']['length']?_0x3be8b4[_0x05c7('0x36')]:_0x3451b6['model'];if(_0x3ad08d['query'][_0x05c7('0x3f')]){_0x3be8b4[_0x05c7('0x40')]=[{'all':!![]}];}_0x3be8b4=_['merge']({},_0x3be8b4,_0x3ad08d['options']);return db[_0x05c7('0x2d')][_0x05c7('0x45')](_0x3be8b4)[_0x05c7('0x25')](handleEntityNotFound(_0x46472b,null))[_0x05c7('0x25')](respondWithResult(_0x46472b,null))[_0x05c7('0x42')](handleError(_0x46472b,null));};exports[_0x05c7('0x46')]=function(_0x542cd0,_0x52c452){return db['CmHopperHistory'][_0x05c7('0x46')](_0x542cd0[_0x05c7('0x47')],{})[_0x05c7('0x25')](respondWithResult(_0x52c452,0xc9))[_0x05c7('0x42')](handleError(_0x52c452,null));};exports['describe']=function(_0x583f8c,_0x3ec640){return db[_0x05c7('0x2d')][_0x05c7('0x48')]()[_0x05c7('0x25')](respondWithResult(_0x3ec640,null))['catch'](handleError(_0x3ec640,null));};exports[_0x05c7('0x24')]=function(_0x3eab78,_0x3b704a){if(_0x3eab78['body']['uniqueid']){delete _0x3eab78[_0x05c7('0x47')][_0x05c7('0x49')];}return db[_0x05c7('0x2d')][_0x05c7('0x45')]({'where':{'uniqueid':_0x3eab78[_0x05c7('0x4a')]['id']}})['then'](handleEntityNotFound(_0x3b704a,null))[_0x05c7('0x25')](saveUpdates(_0x3eab78[_0x05c7('0x47')],null))[_0x05c7('0x25')](respondWithResult(_0x3b704a,null))[_0x05c7('0x42')](handleError(_0x3b704a,null));};
\ No newline at end of file
+var _0xef5b=['catch','show','params','length','find','create','body','describe','uniqueid','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','count','set','Content-Range','apply','save','update','then','destroy','error','stack','name','index','map','CmHopperHistory','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows'];(function(_0x382c1d,_0x1296b6){var _0x5bdc57=function(_0x4df4ac){while(--_0x4df4ac){_0x382c1d['push'](_0x382c1d['shift']());}};_0x5bdc57(++_0x1296b6);}(_0xef5b,0x141));var _0xbef5=function(_0x125f07,_0x77922d){_0x125f07=_0x125f07-0x0;var _0x1998cf=_0xef5b[_0x125f07];return _0x1998cf;};'use strict';var emlformat=require(_0xbef5('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbef5('0x1'));var jsonpatch=require(_0xbef5('0x2'));var rp=require(_0xbef5('0x3'));var moment=require(_0xbef5('0x4'));var BPromise=require(_0xbef5('0x5'));var Mustache=require(_0xbef5('0x6'));var util=require(_0xbef5('0x7'));var path=require(_0xbef5('0x8'));var sox=require(_0xbef5('0x9'));var csv=require(_0xbef5('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xbef5('0xb'));var squel=require(_0xbef5('0xc'));var crypto=require('crypto');var jsforce=require(_0xbef5('0xd'));var deskjs=require(_0xbef5('0xe'));var toCsv=require(_0xbef5('0xa'));var querystring=require(_0xbef5('0xf'));var Papa=require('papaparse');var Redis=require(_0xbef5('0x10'));var authService=require(_0xbef5('0x11'));var qs=require(_0xbef5('0x12'));var as=require(_0xbef5('0x13'));var hardwareService=require(_0xbef5('0x14'));var logger=require(_0xbef5('0x15'))('api');var utils=require(_0xbef5('0x16'));var config=require(_0xbef5('0x17'));var licenseUtil=require(_0xbef5('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x35d393,_0x57723a){_0x57723a=_0x57723a||0xcc;return function(_0x2ebbed){if(_0x2ebbed){return _0x35d393[_0xbef5('0x19')](_0x57723a);}return _0x35d393[_0xbef5('0x1a')](_0x57723a)[_0xbef5('0x1b')]();};}function respondWithResult(_0x2ef49b,_0x372416){_0x372416=_0x372416||0xc8;return function(_0x2dfd65){if(_0x2dfd65){return _0x2ef49b[_0xbef5('0x1a')](_0x372416)[_0xbef5('0x1c')](_0x2dfd65);}};}function respondWithFilteredResult(_0x33067d,_0x3bff57){return function(_0x363992){if(_0x363992){var _0xe7f098=typeof _0x3bff57[_0xbef5('0x1d')]==='undefined'&&typeof _0x3bff57[_0xbef5('0x1e')]==='undefined';var _0x4a0366=_0x363992[_0xbef5('0x1f')];var _0x487377=_0xe7f098?0x0:_0x3bff57[_0xbef5('0x1d')];var _0x495d65=_0xe7f098?_0x363992['count']:_0x3bff57[_0xbef5('0x1d')]+_0x3bff57[_0xbef5('0x1e')];var _0x4246c9;if(_0x495d65>=_0x4a0366){_0x495d65=_0x4a0366;_0x4246c9=0xc8;}else{_0x4246c9=0xce;}_0x33067d['status'](_0x4246c9);return _0x33067d[_0xbef5('0x20')](_0xbef5('0x21'),_0x487377+'-'+_0x495d65+'/'+_0x4a0366)[_0xbef5('0x1c')](_0x363992);}return null;};}function patchUpdates(_0x1318e4){return function(_0x34d159){try{jsonpatch[_0xbef5('0x22')](_0x34d159,_0x1318e4,!![]);}catch(_0x126181){return BPromise['reject'](_0x126181);}return _0x34d159[_0xbef5('0x23')]();};}function saveUpdates(_0x382e90,_0x5d76a6){return function(_0x45f40a){if(_0x45f40a){return _0x45f40a[_0xbef5('0x24')](_0x382e90)[_0xbef5('0x25')](function(_0x3e3636){return _0x3e3636;});}return null;};}function removeEntity(_0x473781,_0x3ad024){return function(_0x54c9b0){if(_0x54c9b0){return _0x54c9b0[_0xbef5('0x26')]()[_0xbef5('0x25')](function(){_0x473781[_0xbef5('0x1a')](0xcc)[_0xbef5('0x1b')]();});}};}function handleEntityNotFound(_0x5648cc,_0x2b471e){return function(_0x3e0f53){if(!_0x3e0f53){_0x5648cc[_0xbef5('0x19')](0x194);}return _0x3e0f53;};}function handleError(_0x460c6f,_0x45083c){_0x45083c=_0x45083c||0x1f4;return function(_0x575b0a){logger[_0xbef5('0x27')](_0x575b0a[_0xbef5('0x28')]);if(_0x575b0a['name']){delete _0x575b0a[_0xbef5('0x29')];}_0x460c6f[_0xbef5('0x1a')](_0x45083c)['send'](_0x575b0a);};}exports[_0xbef5('0x2a')]=function(_0x484472,_0x398276){var _0x422f12={},_0x4fcab8={},_0x211660={'count':0x0,'rows':[]};var _0x56bbc8=_[_0xbef5('0x2b')](db[_0xbef5('0x2c')][_0xbef5('0x2d')],function(_0x1c58ab){return{'name':_0x1c58ab[_0xbef5('0x2e')],'type':_0x1c58ab[_0xbef5('0x2f')][_0xbef5('0x30')]};});_0x4fcab8[_0xbef5('0x31')]=_[_0xbef5('0x2b')](_0x56bbc8,_0xbef5('0x29'));_0x4fcab8['query']=_[_0xbef5('0x32')](_0x484472[_0xbef5('0x33')]);_0x4fcab8[_0xbef5('0x34')]=_[_0xbef5('0x35')](_0x4fcab8[_0xbef5('0x31')],_0x4fcab8[_0xbef5('0x33')]);_0x422f12[_0xbef5('0x36')]=_['intersection'](_0x4fcab8[_0xbef5('0x31')],qs['fields'](_0x484472[_0xbef5('0x33')][_0xbef5('0x37')]));_0x422f12[_0xbef5('0x36')]=_0x422f12[_0xbef5('0x36')]['length']?_0x422f12['attributes']:_0x4fcab8['model'];if(!_0x484472['query']['hasOwnProperty'](_0xbef5('0x38'))){_0x422f12[_0xbef5('0x1e')]=qs[_0xbef5('0x1e')](_0x484472['query'][_0xbef5('0x1e')]);_0x422f12['offset']=qs[_0xbef5('0x1d')](_0x484472[_0xbef5('0x33')][_0xbef5('0x1d')]);}_0x422f12[_0xbef5('0x39')]=qs[_0xbef5('0x3a')](_0x484472[_0xbef5('0x33')]['sort']);_0x422f12[_0xbef5('0x3b')]=qs[_0xbef5('0x34')](_[_0xbef5('0x3c')](_0x484472[_0xbef5('0x33')],_0x4fcab8[_0xbef5('0x34')]),_0x56bbc8);if(_0x484472[_0xbef5('0x33')][_0xbef5('0x3d')]){_0x422f12[_0xbef5('0x3b')]=_[_0xbef5('0x3e')](_0x422f12['where'],{'$or':_[_0xbef5('0x2b')](_0x56bbc8,function(_0x315fcf){if(_0x315fcf[_0xbef5('0x2f')]!==_0xbef5('0x3f')){var _0x5cfe54={};_0x5cfe54[_0x315fcf[_0xbef5('0x29')]]={'$like':'%'+_0x484472['query'][_0xbef5('0x3d')]+'%'};return _0x5cfe54;}})});}_0x422f12=_[_0xbef5('0x3e')]({},_0x422f12,_0x484472[_0xbef5('0x40')]);var _0x14888c={'where':_0x422f12[_0xbef5('0x3b')]};return db[_0xbef5('0x2c')][_0xbef5('0x1f')](_0x14888c)['then'](function(_0x5d2cfe){_0x211660['count']=_0x5d2cfe;if(_0x484472['query'][_0xbef5('0x41')]){_0x422f12[_0xbef5('0x42')]=[{'all':!![]}];}return db['CmHopperHistory'][_0xbef5('0x43')](_0x422f12);})['then'](function(_0x4da3c4){_0x211660[_0xbef5('0x44')]=_0x4da3c4;return _0x211660;})[_0xbef5('0x25')](respondWithFilteredResult(_0x398276,_0x422f12))[_0xbef5('0x45')](handleError(_0x398276,null));};exports[_0xbef5('0x46')]=function(_0x427320,_0x2ed2bd){var _0x6a3541={'raw':!![],'where':{'id':_0x427320[_0xbef5('0x47')]['id']}},_0x4f2495={};_0x4f2495[_0xbef5('0x31')]=_['keys'](db['CmHopperHistory'][_0xbef5('0x2d')]);_0x4f2495[_0xbef5('0x33')]=_['keys'](_0x427320[_0xbef5('0x33')]);_0x4f2495[_0xbef5('0x34')]=_[_0xbef5('0x35')](_0x4f2495[_0xbef5('0x31')],_0x4f2495[_0xbef5('0x33')]);_0x6a3541['attributes']=_[_0xbef5('0x35')](_0x4f2495['model'],qs[_0xbef5('0x37')](_0x427320[_0xbef5('0x33')]['fields']));_0x6a3541[_0xbef5('0x36')]=_0x6a3541[_0xbef5('0x36')][_0xbef5('0x48')]?_0x6a3541[_0xbef5('0x36')]:_0x4f2495['model'];if(_0x427320['query'][_0xbef5('0x41')]){_0x6a3541[_0xbef5('0x42')]=[{'all':!![]}];}_0x6a3541=_[_0xbef5('0x3e')]({},_0x6a3541,_0x427320[_0xbef5('0x40')]);return db[_0xbef5('0x2c')][_0xbef5('0x49')](_0x6a3541)[_0xbef5('0x25')](handleEntityNotFound(_0x2ed2bd,null))[_0xbef5('0x25')](respondWithResult(_0x2ed2bd,null))[_0xbef5('0x45')](handleError(_0x2ed2bd,null));};exports[_0xbef5('0x4a')]=function(_0x240364,_0x5fdb3){return db[_0xbef5('0x2c')][_0xbef5('0x4a')](_0x240364[_0xbef5('0x4b')],{})[_0xbef5('0x25')](respondWithResult(_0x5fdb3,0xc9))['catch'](handleError(_0x5fdb3,null));};exports['describe']=function(_0x5c1d05,_0x815575){return db[_0xbef5('0x2c')][_0xbef5('0x4c')]()['then'](respondWithResult(_0x815575,null))['catch'](handleError(_0x815575,null));};exports['update']=function(_0x52761d,_0x515547){if(_0x52761d['body'][_0xbef5('0x4d')]){delete _0x52761d[_0xbef5('0x4b')][_0xbef5('0x4d')];}return db[_0xbef5('0x2c')][_0xbef5('0x49')]({'where':{'uniqueid':_0x52761d[_0xbef5('0x47')]['id']}})[_0xbef5('0x25')](handleEntityNotFound(_0x515547,null))['then'](saveUpdates(_0x52761d[_0xbef5('0x4b')],null))[_0xbef5('0x25')](respondWithResult(_0x515547,null))[_0xbef5('0x45')](handleError(_0x515547,null));};
\ No newline at end of file
index 0b90eef..eb554bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcac2=['define','CmHopperHistory','cm_hopper_history','uniqueid','lodash','util','../../config/logger','moment','bluebird','./cmHopperHistory.attributes','exports'];(function(_0x4b2c57,_0x2d8cd9){var _0x10ac0b=function(_0x48de8b){while(--_0x48de8b){_0x4b2c57['push'](_0x4b2c57['shift']());}};_0x10ac0b(++_0x2d8cd9);}(_0xcac2,0x1e8));var _0x2cac=function(_0x3eed9b,_0x27e423){_0x3eed9b=_0x3eed9b-0x0;var _0x56b06a=_0xcac2[_0x3eed9b];return _0x56b06a;};'use strict';var _=require(_0x2cac('0x0'));var util=require(_0x2cac('0x1'));var logger=require(_0x2cac('0x2'))('api');var moment=require(_0x2cac('0x3'));var BPromise=require(_0x2cac('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x2cac('0x5'));module[_0x2cac('0x6')]=function(_0x26b741,_0x2ab257){return _0x26b741[_0x2cac('0x7')](_0x2cac('0x8'),attributes,{'tableName':_0x2cac('0x9'),'paranoid':![],'indexes':[{'name':'endtime','fields':['endtime']},{'name':_0x2cac('0xa'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb296=['../../config/logger','api','moment','bluebird','request-promise','rimraf','./cmHopperHistory.attributes','exports','define','CmHopperHistory','cm_hopper_history','endtime','uniqueid','lodash','util'];(function(_0x28a23f,_0x53e7fb){var _0x21e05a=function(_0x31f15d){while(--_0x31f15d){_0x28a23f['push'](_0x28a23f['shift']());}};_0x21e05a(++_0x53e7fb);}(_0xb296,0xa3));var _0x6b29=function(_0x2e26bb,_0x30459c){_0x2e26bb=_0x2e26bb-0x0;var _0x5d34b4=_0xb296[_0x2e26bb];return _0x5d34b4;};'use strict';var _=require(_0x6b29('0x0'));var util=require(_0x6b29('0x1'));var logger=require(_0x6b29('0x2'))(_0x6b29('0x3'));var moment=require(_0x6b29('0x4'));var BPromise=require(_0x6b29('0x5'));var rp=require(_0x6b29('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6b29('0x7'));var config=require('../../config/environment');var attributes=require(_0x6b29('0x8'));module[_0x6b29('0x9')]=function(_0x5e0aa1,_0x327329){return _0x5e0aa1[_0x6b29('0xa')](_0x6b29('0xb'),attributes,{'tableName':_0x6b29('0xc'),'paranoid':![],'indexes':[{'name':_0x6b29('0xd'),'fields':['endtime']},{'name':_0x6b29('0xe'),'fields':[_0x6b29('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index e17adad..4d65f81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b30=['rpc','../../config/environment','jayson/promise','client','info','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','CmHopperHistory,\x20%s,\x20%s','catch','CreateCmHopperHistory','CmHopperHistory','create','body','options','then','where','COUNT','sequelize','col','predictiveIntervalTotalCalls','literal','`state`\x20=\x204,\x201,\x20null','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','`state`\x20=\x2011,\x201,\x20null','predictiveIntervalDroppedCallsCallersExit','AVG','`state`\x20=\x204,\x20`holdtime`,\x20null','AvgHandleTime','GetVoiceQueueHopperHistory','findAll','raw','name','outboundNoSuchCallsDay','`state`\x20=\x203,\x201,\x20null','outboundAnswerCallsDay','`state`\x20=\x205,\x201,\x20null','outboundBusyCallsDay','outboundCongestionCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','outboundDropCallsDayCallersExit','`state`\x20=\x2012,\x201,\x20null','outboundUnknownCallsDay','`state`\x20=\x2013,\x201,\x20null','outboundBlacklistCallsDay','`state`\x20=\x2014,\x201,\x20null','outboundRejectCallsDay','`state`\x20=\x2016,\x201,\x20null','outboundAnswerAgiCallsDay','`state`\x20=\x2020,\x201,\x20null','`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null','outboundReCallsDay','campaign','GetCampaignHopperHistory','ivrTotalCallsDays','ivrAnswerCallsDay','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x25e7cb,_0x3579b7){var _0x375d92=function(_0xe8cf3b){while(--_0xe8cf3b){_0x25e7cb['push'](_0x25e7cb['shift']());}};_0x375d92(++_0x3579b7);}(_0x0b30,0x1a7));var _0x00b3=function(_0x1bd837,_0x2b01f0){_0x1bd837=_0x1bd837-0x0;var _0x45a17e=_0x0b30[_0x1bd837];return _0x45a17e;};'use strict';var _=require(_0x00b3('0x0'));var util=require(_0x00b3('0x1'));var moment=require(_0x00b3('0x2'));var BPromise=require(_0x00b3('0x3'));var rs=require(_0x00b3('0x4'));var fs=require('fs');var Redis=require(_0x00b3('0x5'));var db=require(_0x00b3('0x6'))['db'];var utils=require(_0x00b3('0x7'));var logger=require(_0x00b3('0x8'))(_0x00b3('0x9'));var config=require(_0x00b3('0xa'));var jayson=require(_0x00b3('0xb'));var client=jayson[_0x00b3('0xc')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4cadd1,_0x3e1ede,_0x30813f){return new BPromise(function(_0x500bb8,_0x5f1413){return client['request'](_0x4cadd1,_0x30813f)['then'](function(_0x2c9f7d){logger[_0x00b3('0xd')]('CmHopperHistory,\x20%s,\x20%s',_0x3e1ede,'request\x20sent');logger[_0x00b3('0xe')](_0x00b3('0xf'),_0x3e1ede,_0x00b3('0x10'),JSON[_0x00b3('0x11')](_0x2c9f7d));if(_0x2c9f7d[_0x00b3('0x12')]){if(_0x2c9f7d[_0x00b3('0x12')][_0x00b3('0x13')]===0x1f4){logger['error']('CmHopperHistory,\x20%s,\x20%s',_0x3e1ede,_0x2c9f7d[_0x00b3('0x12')][_0x00b3('0x14')]);return _0x5f1413(_0x2c9f7d[_0x00b3('0x12')]['message']);}logger[_0x00b3('0x12')](_0x00b3('0x15'),_0x3e1ede,_0x2c9f7d['error'][_0x00b3('0x14')]);return _0x500bb8(_0x2c9f7d['error'][_0x00b3('0x14')]);}else{logger[_0x00b3('0xd')](_0x00b3('0x15'),_0x3e1ede,'request\x20sent');_0x500bb8(_0x2c9f7d['result'][_0x00b3('0x14')]);}})[_0x00b3('0x16')](function(_0x314f33){logger['error'](_0x00b3('0x15'),_0x3e1ede,_0x314f33);_0x5f1413(_0x314f33);});});}exports[_0x00b3('0x17')]=function(_0x547202){var _0xc58f24=this;return new Promise(function(_0x1877b1,_0x20e8e5){return db[_0x00b3('0x18')][_0x00b3('0x19')](_0x547202[_0x00b3('0x1a')],{'raw':_0x547202[_0x00b3('0x1b')]?_0x547202['options']['raw']===undefined?!![]:![]:!![]})[_0x00b3('0x1c')](function(_0x7cc4fc){logger[_0x00b3('0xd')](_0x00b3('0x17'),_0x547202);logger[_0x00b3('0xe')](_0x00b3('0x17'),_0x547202,JSON['stringify'](_0x7cc4fc));_0x1877b1(_0x7cc4fc);})[_0x00b3('0x16')](function(_0x283353){logger[_0x00b3('0x12')](_0x00b3('0x17'),_0x283353['message'],_0x547202);_0x20e8e5(_0xc58f24[_0x00b3('0x12')](0x1f4,_0x283353[_0x00b3('0x14')]));});});};exports['AvgHandleTime']=function(_0xf91eb0){var _0x5dc99a=this;return new Promise(function(_0x4ea935,_0x1f9ad7){return db['CmHopperHistory']['findAll']({'raw':_0xf91eb0[_0x00b3('0x1b')]?_0xf91eb0[_0x00b3('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0xf91eb0['options']?_0xf91eb0[_0x00b3('0x1b')][_0x00b3('0x1d')]||null:null,'attributes':[[db['sequelize']['fn'](_0x00b3('0x1e'),db[_0x00b3('0x1f')][_0x00b3('0x20')]('id')),_0x00b3('0x21')],[db['sequelize']['fn']('COUNT',db[_0x00b3('0x1f')]['fn']('IF',db[_0x00b3('0x1f')][_0x00b3('0x22')](_0x00b3('0x23')))),_0x00b3('0x24')],[db[_0x00b3('0x1f')]['fn']('COUNT',db[_0x00b3('0x1f')]['fn']('IF',db[_0x00b3('0x1f')][_0x00b3('0x22')]('`state`\x20=\x2010,\x201,\x20null'))),_0x00b3('0x25')],[db[_0x00b3('0x1f')]['fn'](_0x00b3('0x1e'),db[_0x00b3('0x1f')]['fn']('IF',db[_0x00b3('0x1f')][_0x00b3('0x22')](_0x00b3('0x26')))),_0x00b3('0x27')],[db[_0x00b3('0x1f')]['fn'](_0x00b3('0x28'),db[_0x00b3('0x1f')]['fn']('IF',db[_0x00b3('0x1f')][_0x00b3('0x22')](_0x00b3('0x29')))),'predictiveIntervalAvgHoldtime'],[db[_0x00b3('0x1f')]['fn'](_0x00b3('0x28'),db[_0x00b3('0x1f')]['fn']('IF',db['sequelize'][_0x00b3('0x22')]('`state`\x20=\x204,\x20`talktime`,\x20null'))),'predictiveIntervalAvgTalktime']]})['then'](function(_0x5d25e0){logger[_0x00b3('0xd')](_0x00b3('0x2a'),_0xf91eb0);logger[_0x00b3('0xe')](_0x00b3('0x2a'),_0xf91eb0,JSON[_0x00b3('0x11')](_0x5d25e0));_0x4ea935(_0x5d25e0);})[_0x00b3('0x16')](function(_0x1e5e0e){logger[_0x00b3('0x12')](_0x00b3('0x2a'),_0x1e5e0e[_0x00b3('0x14')],_0xf91eb0);_0x1f9ad7(_0x5dc99a[_0x00b3('0x12')](0x1f4,_0x1e5e0e[_0x00b3('0x14')]));});});};exports[_0x00b3('0x2b')]=function(_0x27a81e){var _0x271e1f=this;return new Promise(function(_0x301666,_0x30d2d2){return db['CmHopperHistory'][_0x00b3('0x2c')]({'raw':_0x27a81e['options']?_0x27a81e[_0x00b3('0x1b')][_0x00b3('0x2d')]===undefined?!![]:![]:!![],'where':_0x27a81e[_0x00b3('0x1b')]?_0x27a81e[_0x00b3('0x1b')]['where']||null:null,'attributes':[['campaign',_0x00b3('0x2e')],[db[_0x00b3('0x1f')]['fn'](_0x00b3('0x1e'),db['sequelize']['fn']('IF',db[_0x00b3('0x1f')][_0x00b3('0x22')]('`state`\x20=\x200,\x201,\x20null'))),_0x00b3('0x2f')],[db['sequelize']['fn']('COUNT',db['sequelize']['fn']('IF',db['sequelize'][_0x00b3('0x22')](_0x00b3('0x30')))),'outboundNoAnswerCallsDay'],[db[_0x00b3('0x1f')]['fn'](_0x00b3('0x1e'),db[_0x00b3('0x1f')]['fn']('IF',db[_0x00b3('0x1f')][_0x00b3('0x22')]('`state`\x20=\x204,\x201,\x20null'))),_0x00b3('0x31')],[db['sequelize']['fn'](_0x00b3('0x1e'),db[_0x00b3('0x1f')]['fn']('IF',db[_0x00b3('0x1f')][_0x00b3('0x22')](_0x00b3('0x32')))),_0x00b3('0x33')],[db[_0x00b3('0x1f')]['fn']('COUNT',db[_0x00b3('0x1f')]['fn']('IF',db['sequelize'][_0x00b3('0x22')]('`state`\x20=\x208,\x201,\x20null'))),_0x00b3('0x34')],[db['sequelize']['fn'](_0x00b3('0x1e'),db[_0x00b3('0x1f')]['fn']('IF',db['sequelize'][_0x00b3('0x22')](_0x00b3('0x35')))),_0x00b3('0x36')],[db[_0x00b3('0x1f')]['fn']('COUNT',db[_0x00b3('0x1f')]['fn']('IF',db['sequelize']['literal'](_0x00b3('0x37')))),_0x00b3('0x38')],[db['sequelize']['fn']('COUNT',db[_0x00b3('0x1f')]['fn']('IF',db[_0x00b3('0x1f')]['literal'](_0x00b3('0x39')))),_0x00b3('0x3a')],[db['sequelize']['fn'](_0x00b3('0x1e'),db[_0x00b3('0x1f')]['fn']('IF',db[_0x00b3('0x1f')]['literal'](_0x00b3('0x3b')))),_0x00b3('0x3c')],[db[_0x00b3('0x1f')]['fn'](_0x00b3('0x1e'),db[_0x00b3('0x1f')]['fn']('IF',db[_0x00b3('0x1f')][_0x00b3('0x22')](_0x00b3('0x3d')))),'outboundOriginateFailureCallsDay'],[db[_0x00b3('0x1f')]['fn'](_0x00b3('0x1e'),db[_0x00b3('0x1f')]['fn']('IF',db['sequelize'][_0x00b3('0x22')]('`state`\x20=\x2018,\x201,\x20null'))),_0x00b3('0x3e')],[db[_0x00b3('0x1f')]['fn'](_0x00b3('0x1e'),db[_0x00b3('0x1f')]['fn']('IF',db[_0x00b3('0x1f')][_0x00b3('0x22')](_0x00b3('0x3f')))),_0x00b3('0x40')],[db[_0x00b3('0x1f')]['fn'](_0x00b3('0x1e'),db[_0x00b3('0x1f')]['fn']('IF',db[_0x00b3('0x1f')][_0x00b3('0x22')](_0x00b3('0x41')))),_0x00b3('0x3e')],[db[_0x00b3('0x1f')]['fn'](_0x00b3('0x1e'),db[_0x00b3('0x1f')]['fn']('IF',db[_0x00b3('0x1f')][_0x00b3('0x22')](_0x00b3('0x42')))),_0x00b3('0x43')]],'group':[_0x00b3('0x44')]})[_0x00b3('0x1c')](function(_0x2cbc81){logger['info'](_0x00b3('0x2b'),_0x27a81e);logger[_0x00b3('0xe')]('GetVoiceQueueHopperHistory',_0x27a81e,JSON[_0x00b3('0x11')](_0x2cbc81));_0x301666(_0x2cbc81);})[_0x00b3('0x16')](function(_0x110b9a){logger[_0x00b3('0x12')](_0x00b3('0x2b'),_0x110b9a[_0x00b3('0x14')],_0x27a81e);_0x30d2d2(_0x271e1f[_0x00b3('0x12')](0x1f4,_0x110b9a[_0x00b3('0x14')]));});});};exports[_0x00b3('0x45')]=function(_0xe6430c){var _0x27c7d5=this;return new Promise(function(_0x488c6a,_0x5738b8){return db[_0x00b3('0x18')][_0x00b3('0x2c')]({'raw':_0xe6430c['options']?_0xe6430c['options']['raw']===undefined?!![]:![]:!![],'where':_0xe6430c[_0x00b3('0x1b')]?_0xe6430c[_0x00b3('0x1b')]['where']||null:null,'attributes':[[_0x00b3('0x44'),_0x00b3('0x2e')],[db[_0x00b3('0x1f')]['fn'](_0x00b3('0x1e'),db['sequelize'][_0x00b3('0x20')]('id')),_0x00b3('0x46')],[db[_0x00b3('0x1f')]['fn'](_0x00b3('0x1e'),db['sequelize']['fn']('IF',db['sequelize'][_0x00b3('0x22')]('`state`\x20=\x204,\x201,\x20null'))),_0x00b3('0x47')]],'group':[_0x00b3('0x44')]})[_0x00b3('0x1c')](function(_0x5e6ea0){logger[_0x00b3('0xd')]('GetCampaignHopperHistory',_0xe6430c);logger[_0x00b3('0xe')](_0x00b3('0x45'),_0xe6430c,JSON[_0x00b3('0x11')](_0x5e6ea0));_0x488c6a(_0x5e6ea0);})[_0x00b3('0x16')](function(_0x299866){logger[_0x00b3('0x12')](_0x00b3('0x45'),_0x299866[_0x00b3('0x14')],_0xe6430c);_0x5738b8(_0x27c7d5[_0x00b3('0x12')](0x1f4,_0x299866['message']));});});};
\ No newline at end of file
+var _0x6b19=['`state`\x20=\x203,\x201,\x20null','outboundNoAnswerCallsDay','outboundAnswerCallsDay','`state`\x20=\x205,\x201,\x20null','`state`\x20=\x208,\x201,\x20null','outboundCongestionCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','`state`\x20=\x2012,\x201,\x20null','`state`\x20=\x2013,\x201,\x20null','outboundBlacklistCallsDay','`state`\x20=\x2014,\x201,\x20null','outboundOriginateFailureCallsDay','`state`\x20=\x2018,\x201,\x20null','outboundAnswerAgiCallsDay','`state`\x20=\x2020,\x201,\x20null','outboundRejectCallsDay','`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null','outboundReCallsDay','GetVoiceQueueHopperHistory','where','ivrTotalCallsDays','ivrAnswerCallsDay','GetCampaignHopperHistory','lodash','util','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','info','CmHopperHistory,\x20%s,\x20%s','request\x20sent','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','error','message','result','catch','CreateCmHopperHistory','create','options','raw','stringify','AvgHandleTime','CmHopperHistory','COUNT','sequelize','col','predictiveIntervalTotalCalls','literal','`state`\x20=\x204,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','`state`\x20=\x2011,\x201,\x20null','predictiveIntervalDroppedCallsCallersExit','`state`\x20=\x204,\x20`holdtime`,\x20null','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','then','findAll','campaign','name','`state`\x20=\x200,\x201,\x20null','outboundNoSuchCallsDay'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6b19,0xe8));var _0x96b1=function(_0x5ded44,_0x541a07){_0x5ded44=_0x5ded44-0x0;var _0x307d13=_0x6b19[_0x5ded44];return _0x307d13;};'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['CmHopperHistory'][_0x96b1('0x14')](_0x38478c['body'],{'raw':_0x38478c[_0x96b1('0x15')]?_0x38478c[_0x96b1('0x15')][_0x96b1('0x16')]===undefined?!![]:![]:!![]})['then'](function(_0xc5dc95){logger[_0x96b1('0xa')](_0x96b1('0x13'),_0x38478c);logger['debug'](_0x96b1('0x13'),_0x38478c,JSON[_0x96b1('0x17')](_0xc5dc95));_0x19972b(_0xc5dc95);})[_0x96b1('0x12')](function(_0x18594b){logger['error'](_0x96b1('0x13'),_0x18594b[_0x96b1('0x10')],_0x38478c);_0x212b31(_0x2b192a[_0x96b1('0xf')](0x1f4,_0x18594b['message']));});});};exports[_0x96b1('0x18')]=function(_0x370f15){var _0x28b42b=this;return new Promise(function(_0x20a85f,_0x55a572){return db[_0x96b1('0x19')]['findAll']({'raw':_0x370f15[_0x96b1('0x15')]?_0x370f15['options'][_0x96b1('0x16')]===undefined?!![]:![]:!![],'where':_0x370f15[_0x96b1('0x15')]?_0x370f15['options']['where']||null:null,'attributes':[[db['sequelize']['fn'](_0x96b1('0x1a'),db[_0x96b1('0x1b')][_0x96b1('0x1c')]('id')),_0x96b1('0x1d')],[db[_0x96b1('0x1b')]['fn']('COUNT',db[_0x96b1('0x1b')]['fn']('IF',db[_0x96b1('0x1b')][_0x96b1('0x1e')](_0x96b1('0x1f')))),'predictiveIntervalAnsweredCalls'],[db[_0x96b1('0x1b')]['fn'](_0x96b1('0x1a'),db['sequelize']['fn']('IF',db['sequelize'][_0x96b1('0x1e')]('`state`\x20=\x2010,\x201,\x20null'))),_0x96b1('0x20')],[db[_0x96b1('0x1b')]['fn']('COUNT',db[_0x96b1('0x1b')]['fn']('IF',db[_0x96b1('0x1b')]['literal'](_0x96b1('0x21')))),_0x96b1('0x22')],[db[_0x96b1('0x1b')]['fn']('AVG',db[_0x96b1('0x1b')]['fn']('IF',db[_0x96b1('0x1b')][_0x96b1('0x1e')](_0x96b1('0x23')))),_0x96b1('0x24')],[db[_0x96b1('0x1b')]['fn']('AVG',db[_0x96b1('0x1b')]['fn']('IF',db[_0x96b1('0x1b')]['literal']('`state`\x20=\x204,\x20`talktime`,\x20null'))),_0x96b1('0x25')]]})[_0x96b1('0x26')](function(_0x1745d1){logger['info']('AvgHandleTime',_0x370f15);logger[_0x96b1('0xd')](_0x96b1('0x18'),_0x370f15,JSON[_0x96b1('0x17')](_0x1745d1));_0x20a85f(_0x1745d1);})[_0x96b1('0x12')](function(_0x48dc7b){logger[_0x96b1('0xf')]('AvgHandleTime',_0x48dc7b[_0x96b1('0x10')],_0x370f15);_0x55a572(_0x28b42b[_0x96b1('0xf')](0x1f4,_0x48dc7b[_0x96b1('0x10')]));});});};exports['GetVoiceQueueHopperHistory']=function(_0x31b13b){var _0x40735b=this;return new Promise(function(_0x21d5b7,_0x5245c8){return db[_0x96b1('0x19')][_0x96b1('0x27')]({'raw':_0x31b13b['options']?_0x31b13b[_0x96b1('0x15')][_0x96b1('0x16')]===undefined?!![]:![]:!![],'where':_0x31b13b['options']?_0x31b13b[_0x96b1('0x15')]['where']||null:null,'attributes':[[_0x96b1('0x28'),_0x96b1('0x29')],[db[_0x96b1('0x1b')]['fn'](_0x96b1('0x1a'),db[_0x96b1('0x1b')]['fn']('IF',db[_0x96b1('0x1b')][_0x96b1('0x1e')](_0x96b1('0x2a')))),_0x96b1('0x2b')],[db['sequelize']['fn'](_0x96b1('0x1a'),db[_0x96b1('0x1b')]['fn']('IF',db[_0x96b1('0x1b')][_0x96b1('0x1e')](_0x96b1('0x2c')))),_0x96b1('0x2d')],[db[_0x96b1('0x1b')]['fn'](_0x96b1('0x1a'),db[_0x96b1('0x1b')]['fn']('IF',db[_0x96b1('0x1b')][_0x96b1('0x1e')](_0x96b1('0x1f')))),_0x96b1('0x2e')],[db[_0x96b1('0x1b')]['fn'](_0x96b1('0x1a'),db['sequelize']['fn']('IF',db['sequelize'][_0x96b1('0x1e')](_0x96b1('0x2f')))),'outboundBusyCallsDay'],[db[_0x96b1('0x1b')]['fn'](_0x96b1('0x1a'),db['sequelize']['fn']('IF',db['sequelize']['literal'](_0x96b1('0x30')))),_0x96b1('0x31')],[db[_0x96b1('0x1b')]['fn'](_0x96b1('0x1a'),db[_0x96b1('0x1b')]['fn']('IF',db[_0x96b1('0x1b')][_0x96b1('0x1e')](_0x96b1('0x32')))),_0x96b1('0x33')],[db[_0x96b1('0x1b')]['fn']('COUNT',db[_0x96b1('0x1b')]['fn']('IF',db['sequelize'][_0x96b1('0x1e')]('`state`\x20=\x2011\x20,\x201,\x20null'))),_0x96b1('0x34')],[db['sequelize']['fn'](_0x96b1('0x1a'),db[_0x96b1('0x1b')]['fn']('IF',db[_0x96b1('0x1b')][_0x96b1('0x1e')](_0x96b1('0x35')))),'outboundUnknownCallsDay'],[db[_0x96b1('0x1b')]['fn'](_0x96b1('0x1a'),db[_0x96b1('0x1b')]['fn']('IF',db['sequelize'][_0x96b1('0x1e')](_0x96b1('0x36')))),_0x96b1('0x37')],[db[_0x96b1('0x1b')]['fn']('COUNT',db[_0x96b1('0x1b')]['fn']('IF',db[_0x96b1('0x1b')]['literal'](_0x96b1('0x38')))),_0x96b1('0x39')],[db[_0x96b1('0x1b')]['fn'](_0x96b1('0x1a'),db[_0x96b1('0x1b')]['fn']('IF',db[_0x96b1('0x1b')]['literal'](_0x96b1('0x3a')))),'outboundRejectCallsDay'],[db[_0x96b1('0x1b')]['fn'](_0x96b1('0x1a'),db['sequelize']['fn']('IF',db[_0x96b1('0x1b')][_0x96b1('0x1e')]('`state`\x20=\x2016,\x201,\x20null'))),_0x96b1('0x3b')],[db[_0x96b1('0x1b')]['fn'](_0x96b1('0x1a'),db[_0x96b1('0x1b')]['fn']('IF',db[_0x96b1('0x1b')][_0x96b1('0x1e')](_0x96b1('0x3c')))),_0x96b1('0x3d')],[db[_0x96b1('0x1b')]['fn'](_0x96b1('0x1a'),db['sequelize']['fn']('IF',db[_0x96b1('0x1b')][_0x96b1('0x1e')](_0x96b1('0x3e')))),_0x96b1('0x3f')]],'group':[_0x96b1('0x28')]})[_0x96b1('0x26')](function(_0x420d36){logger[_0x96b1('0xa')]('GetVoiceQueueHopperHistory',_0x31b13b);logger['debug'](_0x96b1('0x40'),_0x31b13b,JSON[_0x96b1('0x17')](_0x420d36));_0x21d5b7(_0x420d36);})['catch'](function(_0x1f8719){logger[_0x96b1('0xf')](_0x96b1('0x40'),_0x1f8719['message'],_0x31b13b);_0x5245c8(_0x40735b[_0x96b1('0xf')](0x1f4,_0x1f8719[_0x96b1('0x10')]));});});};exports['GetCampaignHopperHistory']=function(_0x5f5b83){var _0x31c32d=this;return new Promise(function(_0x19cc23,_0x3b0fe6){return db[_0x96b1('0x19')][_0x96b1('0x27')]({'raw':_0x5f5b83[_0x96b1('0x15')]?_0x5f5b83[_0x96b1('0x15')][_0x96b1('0x16')]===undefined?!![]:![]:!![],'where':_0x5f5b83[_0x96b1('0x15')]?_0x5f5b83[_0x96b1('0x15')][_0x96b1('0x41')]||null:null,'attributes':[[_0x96b1('0x28'),'name'],[db[_0x96b1('0x1b')]['fn'](_0x96b1('0x1a'),db[_0x96b1('0x1b')][_0x96b1('0x1c')]('id')),_0x96b1('0x42')],[db[_0x96b1('0x1b')]['fn'](_0x96b1('0x1a'),db['sequelize']['fn']('IF',db[_0x96b1('0x1b')]['literal']('`state`\x20=\x204,\x201,\x20null'))),_0x96b1('0x43')]],'group':[_0x96b1('0x28')]})[_0x96b1('0x26')](function(_0x1f3f4b){logger[_0x96b1('0xa')](_0x96b1('0x44'),_0x5f5b83);logger[_0x96b1('0xd')]('GetCampaignHopperHistory',_0x5f5b83,JSON[_0x96b1('0x17')](_0x1f3f4b));_0x19cc23(_0x1f3f4b);})['catch'](function(_0x48f8d2){logger['error'](_0x96b1('0x44'),_0x48f8d2[_0x96b1('0x10')],_0x5f5b83);_0x3b0fe6(_0x31c32d['error'](0x1f4,_0x48f8d2[_0x96b1('0x10')]));});});};
\ No newline at end of file
index 2b3c5b7..b98b11f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc509=['post','create','put','update','exports','util','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./cmHopperHistory.controller','get','isAuthenticated','index','/describe','describe','/:id','show'];(function(_0x129d16,_0x55ad34){var _0x518798=function(_0x4b2fd6){while(--_0x4b2fd6){_0x129d16['push'](_0x129d16['shift']());}};_0x518798(++_0x55ad34);}(_0xc509,0x8a));var _0x9c50=function(_0x2255bb,_0x2c0a16){_0x2255bb=_0x2255bb-0x0;var _0x543752=_0xc509[_0x2255bb];return _0x543752;};'use strict';var multer=require('multer');var util=require(_0x9c50('0x0'));var path=require(_0x9c50('0x1'));var timeout=require(_0x9c50('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x9c50('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x9c50('0x4'));var config=require(_0x9c50('0x5'));var controller=require(_0x9c50('0x6'));router[_0x9c50('0x7')]('/',auth[_0x9c50('0x8')](),controller[_0x9c50('0x9')]);router[_0x9c50('0x7')](_0x9c50('0xa'),auth[_0x9c50('0x8')](),controller[_0x9c50('0xb')]);router['get'](_0x9c50('0xc'),auth[_0x9c50('0x8')](),controller[_0x9c50('0xd')]);router[_0x9c50('0xe')]('/',auth[_0x9c50('0x8')](),controller[_0x9c50('0xf')]);router[_0x9c50('0x10')](_0x9c50('0xc'),auth['isAuthenticated'](),controller[_0x9c50('0x11')]);module[_0x9c50('0x12')]=router;
\ No newline at end of file
+var _0x63f9=['Router','./cmHopperHistory.controller','get','isAuthenticated','index','/describe','/:id','show','post','put','update','multer','path'];(function(_0x564a02,_0x1f7857){var _0x3f743c=function(_0x53c576){while(--_0x53c576){_0x564a02['push'](_0x564a02['shift']());}};_0x3f743c(++_0x1f7857);}(_0x63f9,0x102));var _0x963f=function(_0xdba7dc,_0x4b4c66){_0xdba7dc=_0xdba7dc-0x0;var _0x369d29=_0x63f9[_0xdba7dc];return _0x369d29;};'use strict';var multer=require(_0x963f('0x0'));var util=require('util');var path=require(_0x963f('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x963f('0x2')]();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(_0x963f('0x3'));router[_0x963f('0x4')]('/',auth[_0x963f('0x5')](),controller[_0x963f('0x6')]);router['get'](_0x963f('0x7'),auth[_0x963f('0x5')](),controller['describe']);router[_0x963f('0x4')](_0x963f('0x8'),auth[_0x963f('0x5')](),controller[_0x963f('0x9')]);router[_0x963f('0xa')]('/',auth['isAuthenticated'](),controller['create']);router[_0x963f('0xb')]('/:id',auth[_0x963f('0x5')](),controller[_0x963f('0xc')]);module['exports']=router;
\ No newline at end of file
index c1e8591..24f48ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0207=['exports','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0207,0x162));var _0x7020=function(_0x834092,_0x429e9c){_0x834092=_0x834092-0x0;var _0x631023=_0x0207[_0x834092];return _0x631023;};'use strict';var Sequelize=require('sequelize');module[_0x7020('0x0')]={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x7020('0x1')]},'dialPrefix':{'type':Sequelize[_0x7020('0x1')]}};
\ No newline at end of file
+var _0xdfcc=['sequelize','exports','STRING'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xdfcc,0x8d));var _0xcdfc=function(_0x1e9e56,_0x34a74a){_0x1e9e56=_0x1e9e56-0x0;var _0x5d5e2e=_0xdfcc[_0x1e9e56];return _0x5d5e2e;};'use strict';var Sequelize=require(_0xcdfc('0x0'));module[_0xcdfc('0x1')]={'name':{'type':Sequelize[_0xcdfc('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xcdfc('0x2')]},'dialPrefix':{'type':Sequelize[_0xcdfc('0x2')]}};
\ No newline at end of file
index c9b2aae..217353f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6366=['attributes','hasOwnProperty','order','sort','where','pick','merge','map','filter','CmList','include','findAll','rows','catch','rawAttributes','fields','length','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','name','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','destroy','describe','findOne','Disposition','nolimit','options','removeDispositions','ids','addContacts','CmContact','tags','isArray','join','push','each','omit','success','errors','Malformed\x20request\x20syntax','getContacts','CmCustomField','CustomFields','concat','format','getContactsCsv','OrderBy','alias','select','cm_contacts','c.ListId\x20=\x20?','c.deletedAt\x20is\x20null','distinct','customField_','field','item','from','cm_contact_has_items','additionalPhone_','ItemTypeId\x20=\x20?','description_additionalPhone_','toString','now','/tmp/list_%d_%s.csv','setHeader','list_%d_%s.csv','text/csv','download','addCustomField','sequelize','transaction','addCustomFields','Sequelize','TEXT','text','number','switch','BOOLEAN','defaultValue','queryInterface','addColumn','getCustomFields','findAndCountAll','getGlobalCustomFields','addAgents','spread','emit','userCmList:save','removeAgents','getAgents','info','message','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','register','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','get','Lists','UserProfileResource','error','fieldName','type','key','model','query','keys','filters','intersection'];(function(_0x2a124c,_0x5815fd){var _0x10c31a=function(_0x49830e){while(--_0x49830e){_0x2a124c['push'](_0x2a124c['shift']());}};_0x10c31a(++_0x5815fd);}(_0x6366,0x198));var _0x6636=function(_0x191501,_0x57a337){_0x191501=_0x191501-0x0;var _0x1368fc=_0x6366[_0x191501];return _0x1368fc;};'use strict';var emlformat=require(_0x6636('0x0'));var rimraf=require(_0x6636('0x1'));var zipdir=require(_0x6636('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6636('0x3'));var moment=require(_0x6636('0x4'));var BPromise=require(_0x6636('0x5'));var Mustache=require(_0x6636('0x6'));var util=require(_0x6636('0x7'));var path=require('path');var sox=require(_0x6636('0x8'));var csv=require(_0x6636('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6636('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x6636('0xb'));var jsforce=require(_0x6636('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x6636('0x9'));var querystring=require(_0x6636('0xd'));var Papa=require(_0x6636('0xe'));var Redis=require(_0x6636('0xf'));var authService=require(_0x6636('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x6636('0x11'));var hardwareService=require(_0x6636('0x12'));var logger=require('../../config/logger')(_0x6636('0x13'));var utils=require(_0x6636('0x14'));var config=require(_0x6636('0x15'));var licenseUtil=require(_0x6636('0x16'));var db=require(_0x6636('0x17'))['db'];var csv_results;config['redis']=_[_0x6636('0x18')](config[_0x6636('0x19')],{'host':_0x6636('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./cmList.socket')[_0x6636('0x1b')](socket);function respondWithStatusCode(_0x5bee5b,_0x56f6b0){_0x56f6b0=_0x56f6b0||0xcc;return function(_0x3bd156){if(_0x3bd156){return _0x5bee5b[_0x6636('0x1c')](_0x56f6b0);}return _0x5bee5b[_0x6636('0x1d')](_0x56f6b0)['end']();};}function respondWithResult(_0x1fe2ca,_0x42decd){_0x42decd=_0x42decd||0xc8;return function(_0x1f2c0e){if(_0x1f2c0e){return _0x1fe2ca[_0x6636('0x1d')](_0x42decd)[_0x6636('0x1e')](_0x1f2c0e);}};}function respondWithFilteredResult(_0x218a89,_0x266cfd){return function(_0x5cf730){if(_0x5cf730){var _0x3a6ea2=typeof _0x266cfd[_0x6636('0x1f')]===_0x6636('0x20')&&typeof _0x266cfd[_0x6636('0x21')]===_0x6636('0x20');var _0x1a0b74=_0x5cf730['count'];var _0x44c4aa=_0x3a6ea2?0x0:_0x266cfd['offset'];var _0x5b5e5d=_0x3a6ea2?_0x5cf730[_0x6636('0x22')]:_0x266cfd[_0x6636('0x1f')]+_0x266cfd[_0x6636('0x21')];var _0x12c0d4;if(_0x5b5e5d>=_0x1a0b74){_0x5b5e5d=_0x1a0b74;_0x12c0d4=0xc8;}else{_0x12c0d4=0xce;}_0x218a89[_0x6636('0x1d')](_0x12c0d4);return _0x218a89[_0x6636('0x23')](_0x6636('0x24'),_0x44c4aa+'-'+_0x5b5e5d+'/'+_0x1a0b74)['json'](_0x5cf730);}return null;};}function patchUpdates(_0x20e3d2){return function(_0x1c9c12){try{jsonpatch[_0x6636('0x25')](_0x1c9c12,_0x20e3d2,!![]);}catch(_0x5b345e){return BPromise[_0x6636('0x26')](_0x5b345e);}return _0x1c9c12[_0x6636('0x27')]();};}function saveUpdates(_0x760822,_0xdb501f){return function(_0x340c1a){if(_0x340c1a){return _0x340c1a[_0x6636('0x28')](_0x760822)[_0x6636('0x29')](function(_0x4dc477){return _0x4dc477;});}return null;};}function removeEntity(_0x231d52,_0x48496b){return function(_0x4cbf8b){if(_0x4cbf8b){return _0x4cbf8b['destroy']()[_0x6636('0x29')](function(){var _0x274dbd=_0x4cbf8b[_0x6636('0x2a')]({'plain':!![]});var _0x375360=_0x6636('0x2b');return db[_0x6636('0x2c')]['destroy']({'where':{'type':_0x375360,'resourceId':_0x274dbd['id']}})['then'](function(){return _0x4cbf8b;});})[_0x6636('0x29')](function(){_0x231d52['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1b848f,_0x1ccd40){return function(_0x425f15){if(!_0x425f15){_0x1b848f[_0x6636('0x1c')](0x194);}return _0x425f15;};}function handleError(_0x48268c,_0x258fce){_0x258fce=_0x258fce||0x1f4;return function(_0x3abd50){logger[_0x6636('0x2d')](_0x3abd50['stack']);if(_0x3abd50['name']){delete _0x3abd50['name'];}_0x48268c[_0x6636('0x1d')](_0x258fce)['send'](_0x3abd50);};}exports['index']=function(_0x26b39c,_0x1f12b0){var _0x1334a7={},_0xfd97ea={},_0x18b5ce={'count':0x0,'rows':[]};var _0x557738=_['map'](db['CmList']['rawAttributes'],function(_0x54a694){return{'name':_0x54a694[_0x6636('0x2e')],'type':_0x54a694[_0x6636('0x2f')][_0x6636('0x30')]};});_0xfd97ea[_0x6636('0x31')]=_['map'](_0x557738,'name');_0xfd97ea[_0x6636('0x32')]=_[_0x6636('0x33')](_0x26b39c[_0x6636('0x32')]);_0xfd97ea[_0x6636('0x34')]=_[_0x6636('0x35')](_0xfd97ea[_0x6636('0x31')],_0xfd97ea[_0x6636('0x32')]);_0x1334a7[_0x6636('0x36')]=_[_0x6636('0x35')](_0xfd97ea[_0x6636('0x31')],qs['fields'](_0x26b39c[_0x6636('0x32')]['fields']));_0x1334a7['attributes']=_0x1334a7[_0x6636('0x36')]['length']?_0x1334a7[_0x6636('0x36')]:_0xfd97ea[_0x6636('0x31')];if(!_0x26b39c[_0x6636('0x32')][_0x6636('0x37')]('nolimit')){_0x1334a7[_0x6636('0x21')]=qs[_0x6636('0x21')](_0x26b39c['query']['limit']);_0x1334a7[_0x6636('0x1f')]=qs['offset'](_0x26b39c['query'][_0x6636('0x1f')]);}_0x1334a7[_0x6636('0x38')]=qs[_0x6636('0x39')](_0x26b39c[_0x6636('0x32')][_0x6636('0x39')]);_0x1334a7[_0x6636('0x3a')]=qs[_0x6636('0x34')](_[_0x6636('0x3b')](_0x26b39c['query'],_0xfd97ea['filters']),_0x557738);if(_0x26b39c['query']['filter']){_0x1334a7[_0x6636('0x3a')]=_[_0x6636('0x3c')](_0x1334a7[_0x6636('0x3a')],{'$or':_[_0x6636('0x3d')](_0x557738,function(_0x151140){if(_0x151140[_0x6636('0x2f')]!=='VIRTUAL'){var _0x2ff262={};_0x2ff262[_0x151140['name']]={'$like':'%'+_0x26b39c['query'][_0x6636('0x3e')]+'%'};return _0x2ff262;}})});}_0x1334a7=_[_0x6636('0x3c')]({},_0x1334a7,_0x26b39c['options']);var _0x1104d4={'where':_0x1334a7[_0x6636('0x3a')]};return db[_0x6636('0x3f')][_0x6636('0x22')](_0x1104d4)['then'](function(_0x595d9f){_0x18b5ce[_0x6636('0x22')]=_0x595d9f;if(_0x26b39c[_0x6636('0x32')]['includeAll']){_0x1334a7[_0x6636('0x40')]=[{'all':!![]}];}return db[_0x6636('0x3f')][_0x6636('0x41')](_0x1334a7);})['then'](function(_0x292161){_0x18b5ce[_0x6636('0x42')]=_0x292161;return _0x18b5ce;})['then'](respondWithFilteredResult(_0x1f12b0,_0x1334a7))[_0x6636('0x43')](handleError(_0x1f12b0,null));};exports['show']=function(_0x15be9d,_0x3212e0){var _0x40f1a5={'raw':![],'where':{'id':_0x15be9d['params']['id']}},_0x2f64ac={};_0x2f64ac['model']=_[_0x6636('0x33')](db['CmList'][_0x6636('0x44')]);_0x2f64ac['query']=_[_0x6636('0x33')](_0x15be9d[_0x6636('0x32')]);_0x2f64ac[_0x6636('0x34')]=_['intersection'](_0x2f64ac[_0x6636('0x31')],_0x2f64ac[_0x6636('0x32')]);_0x40f1a5[_0x6636('0x36')]=_['intersection'](_0x2f64ac[_0x6636('0x31')],qs[_0x6636('0x45')](_0x15be9d['query'][_0x6636('0x45')]));_0x40f1a5[_0x6636('0x36')]=_0x40f1a5[_0x6636('0x36')][_0x6636('0x46')]?_0x40f1a5[_0x6636('0x36')]:_0x2f64ac['model'];if(_0x15be9d[_0x6636('0x32')][_0x6636('0x47')]){_0x40f1a5[_0x6636('0x40')]=[{'all':!![]}];}_0x40f1a5=_[_0x6636('0x3c')]({},_0x40f1a5,_0x15be9d['options']);return db[_0x6636('0x3f')][_0x6636('0x48')](_0x40f1a5)[_0x6636('0x29')](handleEntityNotFound(_0x3212e0,null))[_0x6636('0x29')](respondWithResult(_0x3212e0,null))['catch'](handleError(_0x3212e0,null));};exports[_0x6636('0x49')]=function(_0x26c2cb,_0x7d0b4f){return db['CmList'][_0x6636('0x49')](_0x26c2cb[_0x6636('0x4a')],{})[_0x6636('0x29')](function(_0x3ffe16){var _0x372449=_0x26c2cb[_0x6636('0x4b')][_0x6636('0x2a')]({'plain':!![]});if(!_0x372449)throw new Error(_0x6636('0x4c'));if(_0x372449[_0x6636('0x4d')]==='user'){var _0x3a905e=_0x3ffe16[_0x6636('0x2a')]({'plain':!![]});var _0x48fba4=_0x6636('0x2b');return db['UserProfileSection'][_0x6636('0x48')]({'where':{'name':_0x48fba4,'userProfileId':_0x372449[_0x6636('0x4e')]},'raw':!![]})['then'](function(_0x1f21a1){if(_0x1f21a1&&_0x1f21a1[_0x6636('0x4f')]===0x0){return db['UserProfileResource'][_0x6636('0x49')]({'name':_0x3a905e[_0x6636('0x50')],'resourceId':_0x3a905e['id'],'type':_0x1f21a1[_0x6636('0x50')],'sectionId':_0x1f21a1['id']},{})[_0x6636('0x29')](function(){return _0x3ffe16;});}else{return _0x3ffe16;}})[_0x6636('0x43')](function(_0x112f25){logger[_0x6636('0x2d')](_0x6636('0x51'),_0x112f25);throw _0x112f25;});}return _0x3ffe16;})[_0x6636('0x29')](respondWithResult(_0x7d0b4f,0xc9))['catch'](handleError(_0x7d0b4f,null));};exports['update']=function(_0x57648e,_0x3c7f8e){if(_0x57648e[_0x6636('0x4a')]['id']){delete _0x57648e[_0x6636('0x4a')]['id'];}return db[_0x6636('0x3f')][_0x6636('0x48')]({'where':{'id':_0x57648e[_0x6636('0x52')]['id']}})[_0x6636('0x29')](handleEntityNotFound(_0x3c7f8e,null))[_0x6636('0x29')](saveUpdates(_0x57648e[_0x6636('0x4a')],null))[_0x6636('0x29')](respondWithResult(_0x3c7f8e,null))[_0x6636('0x43')](handleError(_0x3c7f8e,null));};exports[_0x6636('0x53')]=function(_0x520c80,_0x54f82e){return db[_0x6636('0x3f')][_0x6636('0x48')]({'where':{'id':_0x520c80['params']['id']}})[_0x6636('0x29')](handleEntityNotFound(_0x54f82e,null))['then'](removeEntity(_0x54f82e,null))[_0x6636('0x43')](handleError(_0x54f82e,null));};exports[_0x6636('0x54')]=function(_0x4b601a,_0x39f5fd){return db[_0x6636('0x3f')][_0x6636('0x54')]()[_0x6636('0x29')](respondWithResult(_0x39f5fd,null))[_0x6636('0x43')](handleError(_0x39f5fd,null));};exports['addDisposition']=function(_0x4e4c76,_0x5b6829,_0x1d84c5){if(_0x4e4c76[_0x6636('0x4a')]['id']){delete _0x4e4c76[_0x6636('0x4a')]['id'];}return db[_0x6636('0x3f')][_0x6636('0x48')]({'where':{'id':_0x4e4c76[_0x6636('0x52')]['id']}})[_0x6636('0x29')](handleEntityNotFound(_0x5b6829,null))[_0x6636('0x29')](function(_0x337f84){if(_0x337f84){_0x4e4c76[_0x6636('0x4a')]['ListId']=_0x337f84['id'];return db['Disposition']['create'](_0x4e4c76[_0x6636('0x4a')]);}})[_0x6636('0x29')](respondWithResult(_0x5b6829,null))[_0x6636('0x43')](handleError(_0x5b6829,null));};exports['getDispositions']=function(_0x4c74b3,_0x123a09,_0x1fa54d){var _0x149aa6={'raw':![],'where':{}};var _0x5c5b58={};var _0x331a26={'count':0x0,'rows':[]};return db['CmList'][_0x6636('0x55')]({'where':{'id':_0x4c74b3[_0x6636('0x52')]['id']}})['then'](handleEntityNotFound(_0x123a09,null))['then'](function(_0xdc63f5){if(_0xdc63f5){_0x5c5b58[_0x6636('0x31')]=_[_0x6636('0x33')](db[_0x6636('0x56')][_0x6636('0x44')]);_0x5c5b58[_0x6636('0x32')]=_['keys'](_0x4c74b3['query']);_0x5c5b58['filters']=_[_0x6636('0x35')](_0x5c5b58['model'],_0x5c5b58[_0x6636('0x32')]);_0x149aa6['attributes']=_[_0x6636('0x35')](_0x5c5b58[_0x6636('0x31')],qs[_0x6636('0x45')](_0x4c74b3[_0x6636('0x32')][_0x6636('0x45')]));_0x149aa6['attributes']=_0x149aa6[_0x6636('0x36')][_0x6636('0x46')]?_0x149aa6[_0x6636('0x36')]:_0x5c5b58[_0x6636('0x31')];if(!_0x4c74b3[_0x6636('0x32')][_0x6636('0x37')](_0x6636('0x57'))){_0x149aa6[_0x6636('0x21')]=qs[_0x6636('0x21')](_0x4c74b3[_0x6636('0x32')]['limit']);_0x149aa6[_0x6636('0x1f')]=qs[_0x6636('0x1f')](_0x4c74b3[_0x6636('0x32')]['offset']);}_0x149aa6[_0x6636('0x38')]=qs['sort'](_0x4c74b3[_0x6636('0x32')][_0x6636('0x39')]);_0x149aa6[_0x6636('0x3a')]=qs[_0x6636('0x34')](_[_0x6636('0x3b')](_0x4c74b3[_0x6636('0x32')],_0x5c5b58[_0x6636('0x34')]));_0x149aa6[_0x6636('0x3a')]['ListId']=_0xdc63f5['id'];if(_0x4c74b3[_0x6636('0x32')][_0x6636('0x3e')]){_0x149aa6[_0x6636('0x3a')]=_[_0x6636('0x3c')](_0x149aa6[_0x6636('0x3a')],{'$or':_['map'](_0x149aa6[_0x6636('0x36')],function(_0x52f935){var _0x5dc67e={};_0x5dc67e[_0x52f935]={'$like':'%'+_0x4c74b3[_0x6636('0x32')][_0x6636('0x3e')]+'%'};return _0x5dc67e;})});}_0x149aa6=_['merge']({},_0x149aa6,_0x4c74b3[_0x6636('0x58')]);return db[_0x6636('0x56')][_0x6636('0x22')]({'where':_0x149aa6[_0x6636('0x3a')]})[_0x6636('0x29')](function(_0x22ea71){_0x331a26[_0x6636('0x22')]=_0x22ea71;if(_0x4c74b3['query'][_0x6636('0x47')]){_0x149aa6[_0x6636('0x40')]=[{'all':!![]}];}return db[_0x6636('0x56')]['findAll'](_0x149aa6);})[_0x6636('0x29')](function(_0xa6a1ec){_0x331a26[_0x6636('0x42')]=_0xa6a1ec;return _0x331a26;});}})['then'](respondWithFilteredResult(_0x123a09,_0x149aa6))[_0x6636('0x43')](handleError(_0x123a09,null));};exports[_0x6636('0x59')]=function(_0x68b2a5,_0x98a70f,_0x2ddbc5){return db[_0x6636('0x3f')][_0x6636('0x48')]({'where':{'id':_0x68b2a5[_0x6636('0x52')]['id']}})[_0x6636('0x29')](handleEntityNotFound(_0x98a70f,null))[_0x6636('0x29')](function(_0x5e5af1){if(_0x5e5af1){return _0x5e5af1['removeDispositions'](_0x68b2a5[_0x6636('0x32')][_0x6636('0x5a')]);}})[_0x6636('0x29')](respondWithStatusCode(_0x98a70f,null))[_0x6636('0x43')](handleError(_0x98a70f,null));};exports[_0x6636('0x5b')]=function(_0x3ad1cf,_0x24373a,_0xf82ee3){return db[_0x6636('0x3f')]['find']({'where':{'id':_0x3ad1cf[_0x6636('0x52')]['id']}})[_0x6636('0x29')](handleEntityNotFound(_0x24373a,null))[_0x6636('0x29')](function(_0x2e9101){if(_0x2e9101){var _0x501f8b=[];var _0x1437fd={'success':[],'errors':[]};return db[_0x6636('0x5c')][_0x6636('0x54')]()[_0x6636('0x29')](function(_0x5d0580){if(_0x3ad1cf['body'][_0x6636('0x5d')]&&_[_0x6636('0x5e')](_0x3ad1cf[_0x6636('0x4a')]['tags'])){if(_0x3ad1cf['body'][_0x6636('0x5d')]['length']){_0x3ad1cf[_0x6636('0x4a')][_0x6636('0x5d')]=_0x3ad1cf[_0x6636('0x4a')][_0x6636('0x5d')][_0x6636('0x5f')](';')+';';}else{_0x3ad1cf[_0x6636('0x4a')]['tags']=null;}}else{_0x3ad1cf[_0x6636('0x4a')][_0x6636('0x5d')]=null;}if(_0x3ad1cf['body']&&_[_0x6636('0x5e')](_0x3ad1cf['body'])){for(var _0xaeae4a=0x0;_0xaeae4a<_0x3ad1cf[_0x6636('0x4a')][_0x6636('0x46')];_0xaeae4a+=0x1){_0x3ad1cf[_0x6636('0x4a')][_0xaeae4a]['ListId']=_0x3ad1cf[_0x6636('0x52')]['id'];_0x501f8b[_0x6636('0x60')](_0x3ad1cf[_0x6636('0x4a')][_0xaeae4a]);}return BPromise[_0x6636('0x61')](_0x501f8b,function(_0x3630b3){return db['CmContact']['create'](_[_0x6636('0x62')](_0x3630b3,[_0x6636('0x5a'),'id'])||{},{'fields':_[_0x6636('0x33')](_0x5d0580),'raw':!![]})[_0x6636('0x29')](function(_0x57d01f){_0x1437fd[_0x6636('0x63')][_0x6636('0x60')](_0x57d01f['dataValues']);})[_0x6636('0x43')](function(_0x237957){_0x1437fd[_0x6636('0x64')][_0x6636('0x60')]({'data':_0x3630b3,'error':_0x237957['message']});});})['then'](function(_0x2aa570){return _0x1437fd;})[_0x6636('0x43')](function(_0x3839f2){return _0x3839f2;});}else{_0x24373a[_0x6636('0x1d')](0x190)[_0x6636('0x1e')]({'message':_0x6636('0x65')});}});}})[_0x6636('0x29')](respondWithResult(_0x24373a,null))[_0x6636('0x43')](handleError(_0x24373a,null));};exports[_0x6636('0x66')]=function(_0x23cc40,_0x757d81,_0x36f3c4){var _0x44be1f;return db['CmList'][_0x6636('0x48')]({'where':{'id':_0x23cc40[_0x6636('0x52')]['id']},'include':[{'model':db[_0x6636('0x67')],'as':_0x6636('0x68')}]})[_0x6636('0x29')](handleEntityNotFound(_0x757d81,null))[_0x6636('0x29')](function(_0x1386a0){if(_0x1386a0){_0x44be1f=_0x1386a0;return db[_0x6636('0x5c')][_0x6636('0x44')];}})['then'](function(_0x2d217e){if(_0x2d217e){var _0x486155={};var _0x487575={};_0x487575[_0x6636('0x31')]=_[_0x6636('0x69')](_['keys'](_0x2d217e),_[_0x6636('0x3d')](_0x44be1f[_0x6636('0x68')],function(_0x59a33b){return util[_0x6636('0x6a')]('cf_%d',_0x59a33b['id']);}));_0x487575[_0x6636('0x32')]=_[_0x6636('0x33')](_0x23cc40[_0x6636('0x32')]);_0x487575[_0x6636('0x34')]=_[_0x6636('0x35')](_0x487575['model'],_0x487575[_0x6636('0x32')]);_0x486155[_0x6636('0x36')]=_[_0x6636('0x35')](_0x487575[_0x6636('0x31')],qs[_0x6636('0x45')](_0x23cc40[_0x6636('0x32')][_0x6636('0x45')]));_0x486155[_0x6636('0x36')]=_0x486155[_0x6636('0x36')][_0x6636('0x46')]?_0x486155[_0x6636('0x36')]:_0x487575[_0x6636('0x31')];if(!_0x23cc40['query'][_0x6636('0x37')](_0x6636('0x57'))){_0x486155['limit']=qs['limit'](_0x23cc40[_0x6636('0x32')][_0x6636('0x21')]);_0x486155[_0x6636('0x1f')]=qs[_0x6636('0x1f')](_0x23cc40[_0x6636('0x32')][_0x6636('0x1f')]);}_0x486155[_0x6636('0x38')]=qs['sort'](_0x23cc40[_0x6636('0x32')]['sort']);_0x486155[_0x6636('0x3a')]=qs[_0x6636('0x34')](_[_0x6636('0x3b')](_0x23cc40[_0x6636('0x32')],_0x487575['filters']));_0x486155['raw']=!![];if(_0x23cc40[_0x6636('0x32')]['filter']){_0x486155[_0x6636('0x3a')]=_[_0x6636('0x3c')](_0x486155['where'],{'$or':_['map'](_0x486155[_0x6636('0x36')],function(_0x292887){var _0x18490f={};_0x18490f[_0x292887]={'$like':'%'+_0x23cc40[_0x6636('0x32')][_0x6636('0x3e')]+'%'};return _0x18490f;})});}_0x486155=_[_0x6636('0x3c')]({},_0x486155,_0x23cc40[_0x6636('0x58')]);return _0x44be1f[_0x6636('0x66')](_0x486155);}})[_0x6636('0x29')](respondWithResult(_0x757d81,null))[_0x6636('0x43')](handleError(_0x757d81,null));};exports[_0x6636('0x6b')]=function(_0x1b6809,_0x595970,_0x1c1c90){var _0x1fdde9;var _0x4d70a2;var _0x1e07e2;var _0x3e9a9d=_0x1b6809[_0x6636('0x52')]['id'];csv_results=[];return db['ContactItemType'][_0x6636('0x41')]({'attributes':['id','name'],'raw':!![],'order':[_0x6636('0x6c')]})[_0x6636('0x29')](function(_0x397805){_0x1fdde9=_0x397805;var _0x4a624f=_[_0x6636('0x33')](db[_0x6636('0x5c')][_0x6636('0x44')]);return db[_0x6636('0x67')][_0x6636('0x41')]({'raw':!![],'attributes':['id',_0x6636('0x6d')]})['then'](function(_0x181b22){_0x4d70a2=_0x181b22;var _0xd00011=squel[_0x6636('0x6e')]()[_0x6636('0x45')](_0x4a624f)['from'](_0x6636('0x6f'),'c')[_0x6636('0x3a')](_0x6636('0x70'),_0x3e9a9d)['where'](_0x6636('0x71'))[_0x6636('0x72')]();for(var _0x81232e=0x0;_0x81232e<_0x4d70a2[_0x6636('0x46')];_0x81232e++){_0xd00011['field']('c.cf_'+_0x4d70a2[_0x81232e]['id'],_0x6636('0x73')+_0x4d70a2[_0x81232e]['alias']);}for(var _0x81232e=0x0;_0x81232e<_0x1fdde9['length'];_0x81232e++){_0xd00011[_0x6636('0x74')](squel['select']()['field'](_0x6636('0x75'))[_0x6636('0x76')](_0x6636('0x77'))[_0x6636('0x3a')]('ItemTypeId\x20=\x20?',_0x1fdde9[_0x81232e]['id'])['where']('CmContactId\x20=\x20c.id'),_0x6636('0x78')+_0x1fdde9[_0x81232e][_0x6636('0x50')]);_0xd00011[_0x6636('0x74')](squel[_0x6636('0x6e')]()['field']('description')[_0x6636('0x76')](_0x6636('0x77'))['where'](_0x6636('0x79'),_0x1fdde9[_0x81232e]['id'])[_0x6636('0x3a')]('CmContactId\x20=\x20c.id'),_0x6636('0x7a')+_0x1fdde9[_0x81232e][_0x6636('0x50')]);}var _0x5ed383=[];_0x5ed383[_0x6636('0x60')](_0xd00011['toString']());BPromise[_0x6636('0x61')](_0x5ed383,handleQuery)['then'](function(_0x461966){handleQuery(_0xd00011[_0x6636('0x7b')]());var _0x861700=csv_results[0x0];if(!_['isEmpty'](_0x861700)){var _0x13ba6a=toCsv(_0x861700);var _0x1abe66=Date[_0x6636('0x7c')]();fs['writeFileSync'](util[_0x6636('0x6a')](_0x6636('0x7d'),_0x3e9a9d,_0x1abe66),_0x13ba6a);_0x595970[_0x6636('0x7e')]('Content-disposition','attachment;\x20filename='+util[_0x6636('0x6a')](_0x6636('0x7f'),_0x3e9a9d,_0x1abe66));_0x595970['setHeader']('Content-type',_0x6636('0x80'));return _0x595970[_0x6636('0x81')](util[_0x6636('0x6a')](_0x6636('0x7d'),_0x3e9a9d,_0x1abe66));}else{return _0x595970[_0x6636('0x1c')](0xcc);}});});});};exports[_0x6636('0x82')]=function(_0x127b8b,_0x1638cb,_0x5f5317){var _0x1ef4c9;delete _0x127b8b[_0x6636('0x4a')]['id'];return db[_0x6636('0x3f')][_0x6636('0x55')]({'where':{'id':_0x127b8b[_0x6636('0x52')]['id']}})[_0x6636('0x29')](handleEntityNotFound(_0x1638cb,null))[_0x6636('0x29')](function(_0x4403e2){if(_0x4403e2){return db[_0x6636('0x83')][_0x6636('0x84')](function(_0x3a1491){return db['CmCustomField'][_0x6636('0x49')](_0x127b8b[_0x6636('0x4a')],{'transaction':_0x3a1491})[_0x6636('0x29')](function(_0x8895f0){_0x1ef4c9=_0x8895f0;return _0x4403e2[_0x6636('0x85')](_0x8895f0,{'transaction':_0x3a1491});})[_0x6636('0x29')](function(){var _0x4df87b={'type':db[_0x6636('0x86')][_0x6636('0x87')],'transaction':_0x3a1491};switch(_0x127b8b[_0x6636('0x4a')][_0x6636('0x2f')]){case _0x6636('0x88'):_0x4df87b[_0x6636('0x2f')]=db[_0x6636('0x86')][_0x6636('0x87')];break;case _0x6636('0x89'):_0x4df87b[_0x6636('0x2f')]=db[_0x6636('0x86')]['INTEGER'];break;case _0x6636('0x8a'):_0x4df87b[_0x6636('0x2f')]=db['Sequelize'][_0x6636('0x8b')];_0x4df87b[_0x6636('0x8c')]=![];break;default:}return db[_0x6636('0x83')][_0x6636('0x8d')][_0x6636('0x8e')](_0x6636('0x6f'),util[_0x6636('0x6a')]('cf_%s',_0x1ef4c9['id']),_0x4df87b);})[_0x6636('0x29')](function(){return _0x1ef4c9;});});}})[_0x6636('0x29')](respondWithResult(_0x1638cb,null))[_0x6636('0x43')](handleError(_0x1638cb,null));};exports[_0x6636('0x8f')]=function(_0x35b794,_0x4dc117,_0x7cca4c){var _0xc96e30={};var _0x4b2533={};var _0x36ea06;var _0x5045fd;return db['CmList'][_0x6636('0x55')]({'where':{'id':_0x35b794[_0x6636('0x52')]['id']}})[_0x6636('0x29')](handleEntityNotFound(_0x4dc117,null))['then'](function(_0x33e68b){if(_0x33e68b){_0x36ea06=_0x33e68b;_0x4b2533[_0x6636('0x31')]=_['keys'](db[_0x6636('0x67')]['rawAttributes']);_0x4b2533[_0x6636('0x32')]=_[_0x6636('0x33')](_0x35b794[_0x6636('0x32')]);_0x4b2533[_0x6636('0x34')]=_[_0x6636('0x35')](_0x4b2533[_0x6636('0x31')],_0x4b2533[_0x6636('0x32')]);_0xc96e30[_0x6636('0x36')]=_[_0x6636('0x35')](_0x4b2533[_0x6636('0x31')],qs[_0x6636('0x45')](_0x35b794[_0x6636('0x32')][_0x6636('0x45')]));_0xc96e30['attributes']=_0xc96e30[_0x6636('0x36')]['length']?_0xc96e30[_0x6636('0x36')]:_0x4b2533[_0x6636('0x31')];_0xc96e30[_0x6636('0x38')]=qs[_0x6636('0x39')](_0x35b794[_0x6636('0x32')][_0x6636('0x39')]);_0xc96e30[_0x6636('0x3a')]=qs[_0x6636('0x34')](_[_0x6636('0x3b')](_0x35b794['query'],_0x4b2533['filters']));_0xc96e30[_0x6636('0x3a')]=_[_0x6636('0x3c')](_0xc96e30[_0x6636('0x3a')],{'$or':[{'ListId':_0x33e68b['id']},{'ListId':null}]});if(_0x35b794[_0x6636('0x32')][_0x6636('0x3e')]){_0xc96e30[_0x6636('0x3a')]=_[_0x6636('0x3c')](_0xc96e30['where'],{'$or':_['map'](_0xc96e30[_0x6636('0x36')],function(_0x2dae23){var _0x4175f4={};_0x4175f4[_0x2dae23]={'$like':'%'+_0x35b794[_0x6636('0x32')][_0x6636('0x3e')]+'%'};return _0x4175f4;})});}_0xc96e30=_[_0x6636('0x3c')]({},_0xc96e30,_0x35b794['options']);return db[_0x6636('0x67')][_0x6636('0x90')](_0xc96e30);}})[_0x6636('0x29')](respondWithResult(_0x4dc117,null))[_0x6636('0x43')](handleError(_0x4dc117,null));};exports[_0x6636('0x91')]=function(_0x1c83d1,_0x4d6b60){return db['CmCustomField'][_0x6636('0x90')]({'where':{'ListId':null}})[_0x6636('0x29')](handleEntityNotFound(_0x4d6b60,null))[_0x6636('0x29')](function(_0x70a4f2){return _0x70a4f2;})['then'](respondWithResult(_0x4d6b60,null))['catch'](handleError(_0x4d6b60,null));};exports[_0x6636('0x92')]=function(_0x478d71,_0x406804,_0x37e427){return db[_0x6636('0x3f')]['find']({'where':{'id':_0x478d71[_0x6636('0x52')]['id']}})[_0x6636('0x29')](handleEntityNotFound(_0x406804,null))[_0x6636('0x29')](function(_0x31f114){if(_0x31f114){return _0x31f114[_0x6636('0x92')](_0x478d71[_0x6636('0x4a')][_0x6636('0x5a')],_[_0x6636('0x62')](_0x478d71[_0x6636('0x4a')],['ids','id'])||{})[_0x6636('0x93')](function(_0x9951b9){for(var _0x16539d=0x0;_0x16539d<_0x478d71[_0x6636('0x4a')][_0x6636('0x5a')]['length'];_0x16539d+=0x1){socket[_0x6636('0x94')](_0x6636('0x95'),{'UserId':Number(_0x478d71[_0x6636('0x4a')]['ids'][_0x16539d]),'CmListId':Number(_0x478d71['params']['id'])});}return _0x9951b9;});}})[_0x6636('0x29')](respondWithResult(_0x406804,null))[_0x6636('0x43')](handleError(_0x406804,null));};exports[_0x6636('0x96')]=function(_0x44e840,_0xec7140,_0x106e21){return db[_0x6636('0x3f')][_0x6636('0x48')]({'where':{'id':_0x44e840[_0x6636('0x52')]['id']}})[_0x6636('0x29')](handleEntityNotFound(_0xec7140,null))[_0x6636('0x29')](function(_0x1d161b){if(_0x1d161b){return _0x1d161b[_0x6636('0x96')](_0x44e840[_0x6636('0x32')][_0x6636('0x5a')])['then'](function(){if(_[_0x6636('0x5e')](_0x44e840[_0x6636('0x32')][_0x6636('0x5a')])){for(var _0xfbd938=0x0;_0xfbd938<_0x44e840[_0x6636('0x32')][_0x6636('0x5a')][_0x6636('0x46')];_0xfbd938+=0x1){socket[_0x6636('0x94')]('userCmList:remove',{'UserId':Number(_0x44e840['query']['ids'][_0xfbd938]),'CmListId':Number(_0x44e840[_0x6636('0x52')]['id'])});}}else{socket[_0x6636('0x94')]('userCmList:remove',{'UserId':Number(_0x44e840[_0x6636('0x32')]['ids']),'CmListId':Number(_0x44e840[_0x6636('0x52')]['id'])});}});}})[_0x6636('0x29')](respondWithStatusCode(_0xec7140,null))[_0x6636('0x43')](handleError(_0xec7140,null));};exports[_0x6636('0x97')]=function(_0x1e4560,_0x1c1abc,_0x5ef8e8){var _0x1f1bb5={};var _0x4dcc84={};var _0x1bacd4;var _0x197cd3;return db[_0x6636('0x3f')][_0x6636('0x55')]({'where':{'id':_0x1e4560[_0x6636('0x52')]['id']}})[_0x6636('0x29')](handleEntityNotFound(_0x1c1abc,null))[_0x6636('0x29')](function(_0x4f7430){if(_0x4f7430){_0x1bacd4=_0x4f7430;_0x4dcc84[_0x6636('0x31')]=_['keys'](db['User'][_0x6636('0x44')]);_0x4dcc84[_0x6636('0x32')]=_['keys'](_0x1e4560[_0x6636('0x32')]);_0x4dcc84['filters']=_[_0x6636('0x35')](_0x4dcc84['model'],_0x4dcc84[_0x6636('0x32')]);_0x1f1bb5['attributes']=_['intersection'](_0x4dcc84['model'],qs[_0x6636('0x45')](_0x1e4560[_0x6636('0x32')]['fields']));_0x1f1bb5['attributes']=_0x1f1bb5[_0x6636('0x36')][_0x6636('0x46')]?_0x1f1bb5[_0x6636('0x36')]:_0x4dcc84[_0x6636('0x31')];_0x1f1bb5['order']=qs['sort'](_0x1e4560[_0x6636('0x32')][_0x6636('0x39')]);_0x1f1bb5[_0x6636('0x3a')]=qs[_0x6636('0x34')](_['pick'](_0x1e4560['query'],_0x4dcc84['filters']));if(_0x1e4560['query'][_0x6636('0x3e')]){_0x1f1bb5[_0x6636('0x3a')]=_[_0x6636('0x3c')](_0x1f1bb5['where'],{'$or':_[_0x6636('0x3d')](_0x1f1bb5[_0x6636('0x36')],function(_0x356ea7){var _0x1bf563={};_0x1bf563[_0x356ea7]={'$like':'%'+_0x1e4560[_0x6636('0x32')][_0x6636('0x3e')]+'%'};return _0x1bf563;})});}_0x1f1bb5=_[_0x6636('0x3c')]({},_0x1f1bb5,_0x1e4560[_0x6636('0x58')]);return _0x1bacd4[_0x6636('0x97')](_0x1f1bb5);}})['then'](function(_0x2a0885){if(_0x2a0885){_0x197cd3=_0x2a0885[_0x6636('0x46')];if(!_0x1e4560[_0x6636('0x32')][_0x6636('0x37')](_0x6636('0x57'))){_0x1f1bb5[_0x6636('0x21')]=qs[_0x6636('0x21')](_0x1e4560['query'][_0x6636('0x21')]);_0x1f1bb5[_0x6636('0x1f')]=qs['offset'](_0x1e4560['query'][_0x6636('0x1f')]);}return _0x1bacd4[_0x6636('0x97')](_0x1f1bb5);}})[_0x6636('0x29')](function(_0x468d46){if(_0x468d46){return _0x468d46?{'count':_0x197cd3,'rows':_0x468d46}:null;}})[_0x6636('0x29')](respondWithResult(_0x1c1abc,null))[_0x6636('0x43')](handleError(_0x1c1abc,null));};function handleQuery(_0x354052){logger[_0x6636('0x98')](_0x354052);return db[_0x6636('0x83')]['query'](_0x354052)[_0x6636('0x93')](function(_0x57b39f){csv_results[_0x6636('0x60')](_0x57b39f);})[_0x6636('0x43')](function(_0x96de80){logger[_0x6636('0x2d')](_0x96de80[_0x6636('0x99')]);});}
\ No newline at end of file
+var _0x40af=['mustache','path','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','register','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject','save','update','then','destroy','Lists','UserProfileResource','error','stack','name','index','map','CmList','rawAttributes','key','model','keys','filters','query','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','type','merge','options','includeAll','include','findAll','rows','catch','show','params','length','find','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','ListId','Disposition','getDispositions','findOne','removeDispositions','ids','addContacts','CmContact','tags','isArray','join','each','omit','success','dataValues','push','message','Malformed\x20request\x20syntax','getContacts','CmCustomField','CustomFields','concat','format','raw','getContactsCsv','ContactItemType','OrderBy','select','from','cm_contacts','c.ListId\x20=\x20?','distinct','c.cf_','customField_','alias','field','item','ItemTypeId\x20=\x20?','additionalPhone_','cm_contact_has_items','CmContactId\x20=\x20c.id','toString','isEmpty','now','/tmp/list_%d_%s.csv','setHeader','Content-disposition','attachment;\x20filename=','list_%d_%s.csv','text/csv','download','addCustomField','sequelize','transaction','Sequelize','text','number','INTEGER','switch','BOOLEAN','defaultValue','addColumn','cf_%s','getCustomFields','findAndCountAll','getGlobalCustomFields','addAgents','spread','emit','removeAgents','userCmList:remove','getAgents','info','fast-json-patch','request-promise','moment'];(function(_0x35de68,_0x165ef8){var _0xf70815=function(_0x731b8e){while(--_0x731b8e){_0x35de68['push'](_0x35de68['shift']());}};_0xf70815(++_0x165ef8);}(_0x40af,0x1d7));var _0xf40a=function(_0x6a557b,_0x2760ef){_0x6a557b=_0x6a557b-0x0;var _0xf21963=_0x40af[_0x6a557b];return _0xf21963;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xf40a('0x0'));var rp=require(_0xf40a('0x1'));var moment=require(_0xf40a('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xf40a('0x3'));var util=require('util');var path=require(_0xf40a('0x4'));var sox=require(_0xf40a('0x5'));var csv=require(_0xf40a('0x6'));var ejs=require(_0xf40a('0x7'));var fs=require('fs');var fs_extra=require(_0xf40a('0x8'));var _=require('lodash');var squel=require(_0xf40a('0x9'));var crypto=require('crypto');var jsforce=require(_0xf40a('0xa'));var deskjs=require(_0xf40a('0xb'));var toCsv=require('to-csv');var querystring=require(_0xf40a('0xc'));var Papa=require(_0xf40a('0xd'));var Redis=require(_0xf40a('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xf40a('0xf'));var hardwareService=require(_0xf40a('0x10'));var logger=require(_0xf40a('0x11'))('api');var utils=require(_0xf40a('0x12'));var config=require(_0xf40a('0x13'));var licenseUtil=require(_0xf40a('0x14'));var db=require(_0xf40a('0x15'))['db'];var csv_results;config[_0xf40a('0x16')]=_['defaults'](config[_0xf40a('0x16')],{'host':_0xf40a('0x17'),'port':0x18eb});var socket=require(_0xf40a('0x18'))(new Redis(config['redis']));require('./cmList.socket')[_0xf40a('0x19')](socket);function respondWithStatusCode(_0x88c41f,_0x58f96b){_0x58f96b=_0x58f96b||0xcc;return function(_0x55be39){if(_0x55be39){return _0x88c41f[_0xf40a('0x1a')](_0x58f96b);}return _0x88c41f[_0xf40a('0x1b')](_0x58f96b)[_0xf40a('0x1c')]();};}function respondWithResult(_0x59f191,_0x51a93f){_0x51a93f=_0x51a93f||0xc8;return function(_0x38e7f7){if(_0x38e7f7){return _0x59f191['status'](_0x51a93f)[_0xf40a('0x1d')](_0x38e7f7);}};}function respondWithFilteredResult(_0x148ee6,_0x1f0bc0){return function(_0x515689){if(_0x515689){var _0x5d0bc6=typeof _0x1f0bc0[_0xf40a('0x1e')]==='undefined'&&typeof _0x1f0bc0[_0xf40a('0x1f')]===_0xf40a('0x20');var _0x219ee8=_0x515689[_0xf40a('0x21')];var _0x3ce63b=_0x5d0bc6?0x0:_0x1f0bc0[_0xf40a('0x1e')];var _0x12ee8e=_0x5d0bc6?_0x515689[_0xf40a('0x21')]:_0x1f0bc0[_0xf40a('0x1e')]+_0x1f0bc0['limit'];var _0x3182fe;if(_0x12ee8e>=_0x219ee8){_0x12ee8e=_0x219ee8;_0x3182fe=0xc8;}else{_0x3182fe=0xce;}_0x148ee6[_0xf40a('0x1b')](_0x3182fe);return _0x148ee6['set'](_0xf40a('0x22'),_0x3ce63b+'-'+_0x12ee8e+'/'+_0x219ee8)['json'](_0x515689);}return null;};}function patchUpdates(_0x29e533){return function(_0x53159c){try{jsonpatch[_0xf40a('0x23')](_0x53159c,_0x29e533,!![]);}catch(_0x5a3620){return BPromise[_0xf40a('0x24')](_0x5a3620);}return _0x53159c[_0xf40a('0x25')]();};}function saveUpdates(_0x445e7e,_0x491059){return function(_0x5591c8){if(_0x5591c8){return _0x5591c8[_0xf40a('0x26')](_0x445e7e)[_0xf40a('0x27')](function(_0x5e2151){return _0x5e2151;});}return null;};}function removeEntity(_0x2b3b66,_0x1008a7){return function(_0x438432){if(_0x438432){return _0x438432[_0xf40a('0x28')]()[_0xf40a('0x27')](function(){var _0x52d18e=_0x438432['get']({'plain':!![]});var _0x31f5ec=_0xf40a('0x29');return db[_0xf40a('0x2a')]['destroy']({'where':{'type':_0x31f5ec,'resourceId':_0x52d18e['id']}})[_0xf40a('0x27')](function(){return _0x438432;});})['then'](function(){_0x2b3b66[_0xf40a('0x1b')](0xcc)[_0xf40a('0x1c')]();});}};}function handleEntityNotFound(_0x2c1046,_0x5d622a){return function(_0x463772){if(!_0x463772){_0x2c1046['sendStatus'](0x194);}return _0x463772;};}function handleError(_0x3aa776,_0x48bb1a){_0x48bb1a=_0x48bb1a||0x1f4;return function(_0xf6ef8f){logger[_0xf40a('0x2b')](_0xf6ef8f[_0xf40a('0x2c')]);if(_0xf6ef8f[_0xf40a('0x2d')]){delete _0xf6ef8f[_0xf40a('0x2d')];}_0x3aa776[_0xf40a('0x1b')](_0x48bb1a)['send'](_0xf6ef8f);};}exports[_0xf40a('0x2e')]=function(_0x3989a4,_0x4c54ae){var _0x35828c={},_0x4e7646={},_0x43b643={'count':0x0,'rows':[]};var _0x421d12=_[_0xf40a('0x2f')](db[_0xf40a('0x30')][_0xf40a('0x31')],function(_0x3de852){return{'name':_0x3de852['fieldName'],'type':_0x3de852['type'][_0xf40a('0x32')]};});_0x4e7646[_0xf40a('0x33')]=_[_0xf40a('0x2f')](_0x421d12,'name');_0x4e7646['query']=_[_0xf40a('0x34')](_0x3989a4['query']);_0x4e7646[_0xf40a('0x35')]=_['intersection'](_0x4e7646['model'],_0x4e7646[_0xf40a('0x36')]);_0x35828c[_0xf40a('0x37')]=_[_0xf40a('0x38')](_0x4e7646[_0xf40a('0x33')],qs[_0xf40a('0x39')](_0x3989a4[_0xf40a('0x36')][_0xf40a('0x39')]));_0x35828c[_0xf40a('0x37')]=_0x35828c[_0xf40a('0x37')]['length']?_0x35828c[_0xf40a('0x37')]:_0x4e7646[_0xf40a('0x33')];if(!_0x3989a4[_0xf40a('0x36')][_0xf40a('0x3a')](_0xf40a('0x3b'))){_0x35828c[_0xf40a('0x1f')]=qs[_0xf40a('0x1f')](_0x3989a4[_0xf40a('0x36')][_0xf40a('0x1f')]);_0x35828c[_0xf40a('0x1e')]=qs[_0xf40a('0x1e')](_0x3989a4[_0xf40a('0x36')]['offset']);}_0x35828c[_0xf40a('0x3c')]=qs[_0xf40a('0x3d')](_0x3989a4[_0xf40a('0x36')]['sort']);_0x35828c['where']=qs['filters'](_[_0xf40a('0x3e')](_0x3989a4['query'],_0x4e7646['filters']),_0x421d12);if(_0x3989a4['query'][_0xf40a('0x3f')]){_0x35828c[_0xf40a('0x40')]=_['merge'](_0x35828c[_0xf40a('0x40')],{'$or':_[_0xf40a('0x2f')](_0x421d12,function(_0x2dc5b3){if(_0x2dc5b3[_0xf40a('0x41')]!=='VIRTUAL'){var _0x18271d={};_0x18271d[_0x2dc5b3['name']]={'$like':'%'+_0x3989a4[_0xf40a('0x36')][_0xf40a('0x3f')]+'%'};return _0x18271d;}})});}_0x35828c=_[_0xf40a('0x42')]({},_0x35828c,_0x3989a4[_0xf40a('0x43')]);var _0x4d0663={'where':_0x35828c[_0xf40a('0x40')]};return db[_0xf40a('0x30')]['count'](_0x4d0663)[_0xf40a('0x27')](function(_0x4ad46b){_0x43b643[_0xf40a('0x21')]=_0x4ad46b;if(_0x3989a4[_0xf40a('0x36')][_0xf40a('0x44')]){_0x35828c[_0xf40a('0x45')]=[{'all':!![]}];}return db[_0xf40a('0x30')][_0xf40a('0x46')](_0x35828c);})['then'](function(_0x4ff890){_0x43b643[_0xf40a('0x47')]=_0x4ff890;return _0x43b643;})[_0xf40a('0x27')](respondWithFilteredResult(_0x4c54ae,_0x35828c))[_0xf40a('0x48')](handleError(_0x4c54ae,null));};exports[_0xf40a('0x49')]=function(_0x293fe1,_0x3e734c){var _0x292758={'raw':![],'where':{'id':_0x293fe1[_0xf40a('0x4a')]['id']}},_0x25f3d1={};_0x25f3d1[_0xf40a('0x33')]=_[_0xf40a('0x34')](db[_0xf40a('0x30')][_0xf40a('0x31')]);_0x25f3d1['query']=_[_0xf40a('0x34')](_0x293fe1[_0xf40a('0x36')]);_0x25f3d1['filters']=_[_0xf40a('0x38')](_0x25f3d1[_0xf40a('0x33')],_0x25f3d1[_0xf40a('0x36')]);_0x292758[_0xf40a('0x37')]=_[_0xf40a('0x38')](_0x25f3d1['model'],qs[_0xf40a('0x39')](_0x293fe1[_0xf40a('0x36')][_0xf40a('0x39')]));_0x292758[_0xf40a('0x37')]=_0x292758[_0xf40a('0x37')][_0xf40a('0x4b')]?_0x292758[_0xf40a('0x37')]:_0x25f3d1[_0xf40a('0x33')];if(_0x293fe1[_0xf40a('0x36')][_0xf40a('0x44')]){_0x292758[_0xf40a('0x45')]=[{'all':!![]}];}_0x292758=_[_0xf40a('0x42')]({},_0x292758,_0x293fe1[_0xf40a('0x43')]);return db['CmList'][_0xf40a('0x4c')](_0x292758)[_0xf40a('0x27')](handleEntityNotFound(_0x3e734c,null))[_0xf40a('0x27')](respondWithResult(_0x3e734c,null))[_0xf40a('0x48')](handleError(_0x3e734c,null));};exports[_0xf40a('0x4d')]=function(_0x96059,_0x4bcfd4){return db['CmList'][_0xf40a('0x4d')](_0x96059['body'],{})[_0xf40a('0x27')](function(_0x413a87){var _0x59fee4=_0x96059[_0xf40a('0x4e')][_0xf40a('0x4f')]({'plain':!![]});if(!_0x59fee4)throw new Error(_0xf40a('0x50'));if(_0x59fee4['role']===_0xf40a('0x4e')){var _0x5ae5e3=_0x413a87[_0xf40a('0x4f')]({'plain':!![]});var _0x11eecb='Lists';return db[_0xf40a('0x51')][_0xf40a('0x4c')]({'where':{'name':_0x11eecb,'userProfileId':_0x59fee4['userProfileId']},'raw':!![]})[_0xf40a('0x27')](function(_0xf34dc7){if(_0xf34dc7&&_0xf34dc7['autoAssociation']===0x0){return db[_0xf40a('0x2a')][_0xf40a('0x4d')]({'name':_0x5ae5e3['name'],'resourceId':_0x5ae5e3['id'],'type':_0xf34dc7[_0xf40a('0x2d')],'sectionId':_0xf34dc7['id']},{})['then'](function(){return _0x413a87;});}else{return _0x413a87;}})[_0xf40a('0x48')](function(_0xb96a31){logger['error'](_0xf40a('0x52'),_0xb96a31);throw _0xb96a31;});}return _0x413a87;})[_0xf40a('0x27')](respondWithResult(_0x4bcfd4,0xc9))['catch'](handleError(_0x4bcfd4,null));};exports[_0xf40a('0x26')]=function(_0x13a1de,_0x32926e){if(_0x13a1de[_0xf40a('0x53')]['id']){delete _0x13a1de[_0xf40a('0x53')]['id'];}return db[_0xf40a('0x30')][_0xf40a('0x4c')]({'where':{'id':_0x13a1de[_0xf40a('0x4a')]['id']}})[_0xf40a('0x27')](handleEntityNotFound(_0x32926e,null))[_0xf40a('0x27')](saveUpdates(_0x13a1de[_0xf40a('0x53')],null))[_0xf40a('0x27')](respondWithResult(_0x32926e,null))[_0xf40a('0x48')](handleError(_0x32926e,null));};exports['destroy']=function(_0x38e8b8,_0x5ef231){return db[_0xf40a('0x30')][_0xf40a('0x4c')]({'where':{'id':_0x38e8b8[_0xf40a('0x4a')]['id']}})[_0xf40a('0x27')](handleEntityNotFound(_0x5ef231,null))[_0xf40a('0x27')](removeEntity(_0x5ef231,null))[_0xf40a('0x48')](handleError(_0x5ef231,null));};exports[_0xf40a('0x54')]=function(_0x205a62,_0x323594){return db[_0xf40a('0x30')][_0xf40a('0x54')]()[_0xf40a('0x27')](respondWithResult(_0x323594,null))[_0xf40a('0x48')](handleError(_0x323594,null));};exports['addDisposition']=function(_0x9f63f0,_0x398178,_0x1594d3){if(_0x9f63f0[_0xf40a('0x53')]['id']){delete _0x9f63f0[_0xf40a('0x53')]['id'];}return db['CmList'][_0xf40a('0x4c')]({'where':{'id':_0x9f63f0[_0xf40a('0x4a')]['id']}})['then'](handleEntityNotFound(_0x398178,null))['then'](function(_0x342864){if(_0x342864){_0x9f63f0[_0xf40a('0x53')][_0xf40a('0x55')]=_0x342864['id'];return db[_0xf40a('0x56')][_0xf40a('0x4d')](_0x9f63f0['body']);}})[_0xf40a('0x27')](respondWithResult(_0x398178,null))[_0xf40a('0x48')](handleError(_0x398178,null));};exports[_0xf40a('0x57')]=function(_0x481ea0,_0x72adbd,_0x2e8f32){var _0x1d61f8={'raw':![],'where':{}};var _0xb8fd1d={};var _0x5a2ecd={'count':0x0,'rows':[]};return db[_0xf40a('0x30')][_0xf40a('0x58')]({'where':{'id':_0x481ea0[_0xf40a('0x4a')]['id']}})[_0xf40a('0x27')](handleEntityNotFound(_0x72adbd,null))[_0xf40a('0x27')](function(_0x2501c3){if(_0x2501c3){_0xb8fd1d['model']=_[_0xf40a('0x34')](db[_0xf40a('0x56')][_0xf40a('0x31')]);_0xb8fd1d[_0xf40a('0x36')]=_[_0xf40a('0x34')](_0x481ea0[_0xf40a('0x36')]);_0xb8fd1d['filters']=_['intersection'](_0xb8fd1d[_0xf40a('0x33')],_0xb8fd1d[_0xf40a('0x36')]);_0x1d61f8[_0xf40a('0x37')]=_[_0xf40a('0x38')](_0xb8fd1d[_0xf40a('0x33')],qs[_0xf40a('0x39')](_0x481ea0[_0xf40a('0x36')][_0xf40a('0x39')]));_0x1d61f8['attributes']=_0x1d61f8[_0xf40a('0x37')][_0xf40a('0x4b')]?_0x1d61f8[_0xf40a('0x37')]:_0xb8fd1d[_0xf40a('0x33')];if(!_0x481ea0[_0xf40a('0x36')][_0xf40a('0x3a')](_0xf40a('0x3b'))){_0x1d61f8[_0xf40a('0x1f')]=qs[_0xf40a('0x1f')](_0x481ea0[_0xf40a('0x36')][_0xf40a('0x1f')]);_0x1d61f8[_0xf40a('0x1e')]=qs[_0xf40a('0x1e')](_0x481ea0['query'][_0xf40a('0x1e')]);}_0x1d61f8[_0xf40a('0x3c')]=qs['sort'](_0x481ea0[_0xf40a('0x36')]['sort']);_0x1d61f8[_0xf40a('0x40')]=qs[_0xf40a('0x35')](_['pick'](_0x481ea0[_0xf40a('0x36')],_0xb8fd1d[_0xf40a('0x35')]));_0x1d61f8[_0xf40a('0x40')][_0xf40a('0x55')]=_0x2501c3['id'];if(_0x481ea0[_0xf40a('0x36')][_0xf40a('0x3f')]){_0x1d61f8[_0xf40a('0x40')]=_[_0xf40a('0x42')](_0x1d61f8['where'],{'$or':_[_0xf40a('0x2f')](_0x1d61f8[_0xf40a('0x37')],function(_0x43d1a4){var _0x3d3a97={};_0x3d3a97[_0x43d1a4]={'$like':'%'+_0x481ea0[_0xf40a('0x36')][_0xf40a('0x3f')]+'%'};return _0x3d3a97;})});}_0x1d61f8=_[_0xf40a('0x42')]({},_0x1d61f8,_0x481ea0[_0xf40a('0x43')]);return db[_0xf40a('0x56')][_0xf40a('0x21')]({'where':_0x1d61f8[_0xf40a('0x40')]})[_0xf40a('0x27')](function(_0x27dee6){_0x5a2ecd['count']=_0x27dee6;if(_0x481ea0['query'][_0xf40a('0x44')]){_0x1d61f8[_0xf40a('0x45')]=[{'all':!![]}];}return db['Disposition'][_0xf40a('0x46')](_0x1d61f8);})[_0xf40a('0x27')](function(_0x2a1a83){_0x5a2ecd['rows']=_0x2a1a83;return _0x5a2ecd;});}})[_0xf40a('0x27')](respondWithFilteredResult(_0x72adbd,_0x1d61f8))[_0xf40a('0x48')](handleError(_0x72adbd,null));};exports[_0xf40a('0x59')]=function(_0xe665ce,_0x46d75f,_0x427189){return db[_0xf40a('0x30')][_0xf40a('0x4c')]({'where':{'id':_0xe665ce[_0xf40a('0x4a')]['id']}})[_0xf40a('0x27')](handleEntityNotFound(_0x46d75f,null))['then'](function(_0x2e5e03){if(_0x2e5e03){return _0x2e5e03[_0xf40a('0x59')](_0xe665ce['query'][_0xf40a('0x5a')]);}})[_0xf40a('0x27')](respondWithStatusCode(_0x46d75f,null))['catch'](handleError(_0x46d75f,null));};exports[_0xf40a('0x5b')]=function(_0x13a344,_0xd897e0,_0x3c7a03){return db[_0xf40a('0x30')]['find']({'where':{'id':_0x13a344[_0xf40a('0x4a')]['id']}})[_0xf40a('0x27')](handleEntityNotFound(_0xd897e0,null))[_0xf40a('0x27')](function(_0x264f6f){if(_0x264f6f){var _0x565669=[];var _0x17a9ac={'success':[],'errors':[]};return db[_0xf40a('0x5c')][_0xf40a('0x54')]()[_0xf40a('0x27')](function(_0x38576a){if(_0x13a344[_0xf40a('0x53')][_0xf40a('0x5d')]&&_[_0xf40a('0x5e')](_0x13a344['body'][_0xf40a('0x5d')])){if(_0x13a344[_0xf40a('0x53')][_0xf40a('0x5d')][_0xf40a('0x4b')]){_0x13a344['body']['tags']=_0x13a344[_0xf40a('0x53')][_0xf40a('0x5d')][_0xf40a('0x5f')](';')+';';}else{_0x13a344[_0xf40a('0x53')][_0xf40a('0x5d')]=null;}}else{_0x13a344[_0xf40a('0x53')][_0xf40a('0x5d')]=null;}if(_0x13a344[_0xf40a('0x53')]&&_[_0xf40a('0x5e')](_0x13a344[_0xf40a('0x53')])){for(var _0xc5af83=0x0;_0xc5af83<_0x13a344[_0xf40a('0x53')][_0xf40a('0x4b')];_0xc5af83+=0x1){_0x13a344[_0xf40a('0x53')][_0xc5af83][_0xf40a('0x55')]=_0x13a344[_0xf40a('0x4a')]['id'];_0x565669['push'](_0x13a344[_0xf40a('0x53')][_0xc5af83]);}return BPromise[_0xf40a('0x60')](_0x565669,function(_0x3b1a42){return db[_0xf40a('0x5c')]['create'](_[_0xf40a('0x61')](_0x3b1a42,[_0xf40a('0x5a'),'id'])||{},{'fields':_[_0xf40a('0x34')](_0x38576a),'raw':!![]})[_0xf40a('0x27')](function(_0x3c404a){_0x17a9ac[_0xf40a('0x62')]['push'](_0x3c404a[_0xf40a('0x63')]);})[_0xf40a('0x48')](function(_0x118405){_0x17a9ac['errors'][_0xf40a('0x64')]({'data':_0x3b1a42,'error':_0x118405[_0xf40a('0x65')]});});})[_0xf40a('0x27')](function(_0x2a28d8){return _0x17a9ac;})[_0xf40a('0x48')](function(_0x2acaa6){return _0x2acaa6;});}else{_0xd897e0[_0xf40a('0x1b')](0x190)[_0xf40a('0x1d')]({'message':_0xf40a('0x66')});}});}})['then'](respondWithResult(_0xd897e0,null))[_0xf40a('0x48')](handleError(_0xd897e0,null));};exports[_0xf40a('0x67')]=function(_0x5c90f1,_0x4f3487,_0x5706c4){var _0x2f11db;return db['CmList'][_0xf40a('0x4c')]({'where':{'id':_0x5c90f1[_0xf40a('0x4a')]['id']},'include':[{'model':db[_0xf40a('0x68')],'as':_0xf40a('0x69')}]})[_0xf40a('0x27')](handleEntityNotFound(_0x4f3487,null))[_0xf40a('0x27')](function(_0x1b28f2){if(_0x1b28f2){_0x2f11db=_0x1b28f2;return db[_0xf40a('0x5c')][_0xf40a('0x31')];}})[_0xf40a('0x27')](function(_0x1af55f){if(_0x1af55f){var _0x2e81ac={};var _0x433a5a={};_0x433a5a['model']=_[_0xf40a('0x6a')](_[_0xf40a('0x34')](_0x1af55f),_[_0xf40a('0x2f')](_0x2f11db[_0xf40a('0x69')],function(_0x59512e){return util[_0xf40a('0x6b')]('cf_%d',_0x59512e['id']);}));_0x433a5a[_0xf40a('0x36')]=_[_0xf40a('0x34')](_0x5c90f1[_0xf40a('0x36')]);_0x433a5a[_0xf40a('0x35')]=_[_0xf40a('0x38')](_0x433a5a[_0xf40a('0x33')],_0x433a5a[_0xf40a('0x36')]);_0x2e81ac[_0xf40a('0x37')]=_['intersection'](_0x433a5a[_0xf40a('0x33')],qs[_0xf40a('0x39')](_0x5c90f1['query'][_0xf40a('0x39')]));_0x2e81ac[_0xf40a('0x37')]=_0x2e81ac[_0xf40a('0x37')][_0xf40a('0x4b')]?_0x2e81ac['attributes']:_0x433a5a[_0xf40a('0x33')];if(!_0x5c90f1[_0xf40a('0x36')][_0xf40a('0x3a')](_0xf40a('0x3b'))){_0x2e81ac[_0xf40a('0x1f')]=qs['limit'](_0x5c90f1[_0xf40a('0x36')]['limit']);_0x2e81ac[_0xf40a('0x1e')]=qs[_0xf40a('0x1e')](_0x5c90f1[_0xf40a('0x36')][_0xf40a('0x1e')]);}_0x2e81ac[_0xf40a('0x3c')]=qs['sort'](_0x5c90f1['query'][_0xf40a('0x3d')]);_0x2e81ac['where']=qs[_0xf40a('0x35')](_[_0xf40a('0x3e')](_0x5c90f1['query'],_0x433a5a[_0xf40a('0x35')]));_0x2e81ac[_0xf40a('0x6c')]=!![];if(_0x5c90f1[_0xf40a('0x36')]['filter']){_0x2e81ac[_0xf40a('0x40')]=_['merge'](_0x2e81ac[_0xf40a('0x40')],{'$or':_['map'](_0x2e81ac[_0xf40a('0x37')],function(_0x2acafa){var _0x5f54e9={};_0x5f54e9[_0x2acafa]={'$like':'%'+_0x5c90f1['query'][_0xf40a('0x3f')]+'%'};return _0x5f54e9;})});}_0x2e81ac=_[_0xf40a('0x42')]({},_0x2e81ac,_0x5c90f1[_0xf40a('0x43')]);return _0x2f11db[_0xf40a('0x67')](_0x2e81ac);}})['then'](respondWithResult(_0x4f3487,null))[_0xf40a('0x48')](handleError(_0x4f3487,null));};exports[_0xf40a('0x6d')]=function(_0x5c68b7,_0x54d9d7,_0x10330e){var _0x4e2f04;var _0x240dae;var _0x9ed80f;var _0x3fde72=_0x5c68b7[_0xf40a('0x4a')]['id'];csv_results=[];return db[_0xf40a('0x6e')]['findAll']({'attributes':['id',_0xf40a('0x2d')],'raw':!![],'order':[_0xf40a('0x6f')]})[_0xf40a('0x27')](function(_0x3d4006){_0x4e2f04=_0x3d4006;var _0x1479e3=_['keys'](db[_0xf40a('0x5c')][_0xf40a('0x31')]);return db['CmCustomField'][_0xf40a('0x46')]({'raw':!![],'attributes':['id','alias']})[_0xf40a('0x27')](function(_0x4597d6){_0x240dae=_0x4597d6;var _0x565654=squel[_0xf40a('0x70')]()[_0xf40a('0x39')](_0x1479e3)[_0xf40a('0x71')](_0xf40a('0x72'),'c')[_0xf40a('0x40')](_0xf40a('0x73'),_0x3fde72)[_0xf40a('0x40')]('c.deletedAt\x20is\x20null')[_0xf40a('0x74')]();for(var _0x3ba116=0x0;_0x3ba116<_0x240dae[_0xf40a('0x4b')];_0x3ba116++){_0x565654['field'](_0xf40a('0x75')+_0x240dae[_0x3ba116]['id'],_0xf40a('0x76')+_0x240dae[_0x3ba116][_0xf40a('0x77')]);}for(var _0x3ba116=0x0;_0x3ba116<_0x4e2f04[_0xf40a('0x4b')];_0x3ba116++){_0x565654[_0xf40a('0x78')](squel[_0xf40a('0x70')]()['field'](_0xf40a('0x79'))['from']('cm_contact_has_items')[_0xf40a('0x40')](_0xf40a('0x7a'),_0x4e2f04[_0x3ba116]['id'])[_0xf40a('0x40')]('CmContactId\x20=\x20c.id'),_0xf40a('0x7b')+_0x4e2f04[_0x3ba116][_0xf40a('0x2d')]);_0x565654['field'](squel['select']()['field']('description')['from'](_0xf40a('0x7c'))[_0xf40a('0x40')](_0xf40a('0x7a'),_0x4e2f04[_0x3ba116]['id'])[_0xf40a('0x40')](_0xf40a('0x7d')),'description_additionalPhone_'+_0x4e2f04[_0x3ba116]['name']);}var _0x596861=[];_0x596861[_0xf40a('0x64')](_0x565654[_0xf40a('0x7e')]());BPromise[_0xf40a('0x60')](_0x596861,handleQuery)['then'](function(_0xa59153){handleQuery(_0x565654['toString']());var _0x5ccdb6=csv_results[0x0];if(!_[_0xf40a('0x7f')](_0x5ccdb6)){var _0x3c825d=toCsv(_0x5ccdb6);var _0x3eda98=Date[_0xf40a('0x80')]();fs['writeFileSync'](util[_0xf40a('0x6b')](_0xf40a('0x81'),_0x3fde72,_0x3eda98),_0x3c825d);_0x54d9d7[_0xf40a('0x82')](_0xf40a('0x83'),_0xf40a('0x84')+util[_0xf40a('0x6b')](_0xf40a('0x85'),_0x3fde72,_0x3eda98));_0x54d9d7[_0xf40a('0x82')]('Content-type',_0xf40a('0x86'));return _0x54d9d7[_0xf40a('0x87')](util['format'](_0xf40a('0x81'),_0x3fde72,_0x3eda98));}else{return _0x54d9d7[_0xf40a('0x1a')](0xcc);}});});});};exports[_0xf40a('0x88')]=function(_0x413e5f,_0x562e2c,_0x4f0c35){var _0x5023fc;delete _0x413e5f[_0xf40a('0x53')]['id'];return db[_0xf40a('0x30')][_0xf40a('0x58')]({'where':{'id':_0x413e5f[_0xf40a('0x4a')]['id']}})[_0xf40a('0x27')](handleEntityNotFound(_0x562e2c,null))[_0xf40a('0x27')](function(_0x3b0d85){if(_0x3b0d85){return db[_0xf40a('0x89')][_0xf40a('0x8a')](function(_0xa0ae01){return db[_0xf40a('0x68')][_0xf40a('0x4d')](_0x413e5f[_0xf40a('0x53')],{'transaction':_0xa0ae01})['then'](function(_0x53d548){_0x5023fc=_0x53d548;return _0x3b0d85['addCustomFields'](_0x53d548,{'transaction':_0xa0ae01});})[_0xf40a('0x27')](function(){var _0x268da8={'type':db[_0xf40a('0x8b')]['TEXT'],'transaction':_0xa0ae01};switch(_0x413e5f[_0xf40a('0x53')]['type']){case _0xf40a('0x8c'):_0x268da8[_0xf40a('0x41')]=db[_0xf40a('0x8b')]['TEXT'];break;case _0xf40a('0x8d'):_0x268da8[_0xf40a('0x41')]=db[_0xf40a('0x8b')][_0xf40a('0x8e')];break;case _0xf40a('0x8f'):_0x268da8[_0xf40a('0x41')]=db['Sequelize'][_0xf40a('0x90')];_0x268da8[_0xf40a('0x91')]=![];break;default:}return db[_0xf40a('0x89')]['queryInterface'][_0xf40a('0x92')]('cm_contacts',util[_0xf40a('0x6b')](_0xf40a('0x93'),_0x5023fc['id']),_0x268da8);})[_0xf40a('0x27')](function(){return _0x5023fc;});});}})[_0xf40a('0x27')](respondWithResult(_0x562e2c,null))[_0xf40a('0x48')](handleError(_0x562e2c,null));};exports[_0xf40a('0x94')]=function(_0x5f177c,_0x4fa74c,_0x1baf8b){var _0x578fc8={};var _0x86c0ba={};var _0x44a45e;var _0x5b4a40;return db[_0xf40a('0x30')][_0xf40a('0x58')]({'where':{'id':_0x5f177c['params']['id']}})[_0xf40a('0x27')](handleEntityNotFound(_0x4fa74c,null))[_0xf40a('0x27')](function(_0x3e09e6){if(_0x3e09e6){_0x44a45e=_0x3e09e6;_0x86c0ba[_0xf40a('0x33')]=_[_0xf40a('0x34')](db[_0xf40a('0x68')][_0xf40a('0x31')]);_0x86c0ba['query']=_[_0xf40a('0x34')](_0x5f177c[_0xf40a('0x36')]);_0x86c0ba['filters']=_[_0xf40a('0x38')](_0x86c0ba[_0xf40a('0x33')],_0x86c0ba[_0xf40a('0x36')]);_0x578fc8[_0xf40a('0x37')]=_[_0xf40a('0x38')](_0x86c0ba['model'],qs[_0xf40a('0x39')](_0x5f177c[_0xf40a('0x36')][_0xf40a('0x39')]));_0x578fc8[_0xf40a('0x37')]=_0x578fc8[_0xf40a('0x37')][_0xf40a('0x4b')]?_0x578fc8[_0xf40a('0x37')]:_0x86c0ba[_0xf40a('0x33')];_0x578fc8['order']=qs[_0xf40a('0x3d')](_0x5f177c[_0xf40a('0x36')][_0xf40a('0x3d')]);_0x578fc8[_0xf40a('0x40')]=qs[_0xf40a('0x35')](_[_0xf40a('0x3e')](_0x5f177c[_0xf40a('0x36')],_0x86c0ba[_0xf40a('0x35')]));_0x578fc8[_0xf40a('0x40')]=_[_0xf40a('0x42')](_0x578fc8['where'],{'$or':[{'ListId':_0x3e09e6['id']},{'ListId':null}]});if(_0x5f177c[_0xf40a('0x36')]['filter']){_0x578fc8[_0xf40a('0x40')]=_['merge'](_0x578fc8[_0xf40a('0x40')],{'$or':_[_0xf40a('0x2f')](_0x578fc8[_0xf40a('0x37')],function(_0x29bb70){var _0xd31fc0={};_0xd31fc0[_0x29bb70]={'$like':'%'+_0x5f177c[_0xf40a('0x36')][_0xf40a('0x3f')]+'%'};return _0xd31fc0;})});}_0x578fc8=_[_0xf40a('0x42')]({},_0x578fc8,_0x5f177c[_0xf40a('0x43')]);return db['CmCustomField'][_0xf40a('0x95')](_0x578fc8);}})[_0xf40a('0x27')](respondWithResult(_0x4fa74c,null))['catch'](handleError(_0x4fa74c,null));};exports[_0xf40a('0x96')]=function(_0x396805,_0x20b5de){return db[_0xf40a('0x68')]['findAndCountAll']({'where':{'ListId':null}})[_0xf40a('0x27')](handleEntityNotFound(_0x20b5de,null))[_0xf40a('0x27')](function(_0x114e39){return _0x114e39;})[_0xf40a('0x27')](respondWithResult(_0x20b5de,null))[_0xf40a('0x48')](handleError(_0x20b5de,null));};exports[_0xf40a('0x97')]=function(_0x36a641,_0x199c6f,_0x229abf){return db[_0xf40a('0x30')][_0xf40a('0x4c')]({'where':{'id':_0x36a641[_0xf40a('0x4a')]['id']}})['then'](handleEntityNotFound(_0x199c6f,null))[_0xf40a('0x27')](function(_0x217b86){if(_0x217b86){return _0x217b86['addAgents'](_0x36a641[_0xf40a('0x53')][_0xf40a('0x5a')],_['omit'](_0x36a641[_0xf40a('0x53')],[_0xf40a('0x5a'),'id'])||{})[_0xf40a('0x98')](function(_0x45ff3f){for(var _0x256089=0x0;_0x256089<_0x36a641[_0xf40a('0x53')][_0xf40a('0x5a')][_0xf40a('0x4b')];_0x256089+=0x1){socket[_0xf40a('0x99')]('userCmList:save',{'UserId':Number(_0x36a641[_0xf40a('0x53')]['ids'][_0x256089]),'CmListId':Number(_0x36a641['params']['id'])});}return _0x45ff3f;});}})[_0xf40a('0x27')](respondWithResult(_0x199c6f,null))[_0xf40a('0x48')](handleError(_0x199c6f,null));};exports[_0xf40a('0x9a')]=function(_0x14d382,_0x299417,_0x6fd2b){return db[_0xf40a('0x30')][_0xf40a('0x4c')]({'where':{'id':_0x14d382[_0xf40a('0x4a')]['id']}})[_0xf40a('0x27')](handleEntityNotFound(_0x299417,null))[_0xf40a('0x27')](function(_0x1994b7){if(_0x1994b7){return _0x1994b7[_0xf40a('0x9a')](_0x14d382[_0xf40a('0x36')]['ids'])[_0xf40a('0x27')](function(){if(_[_0xf40a('0x5e')](_0x14d382[_0xf40a('0x36')][_0xf40a('0x5a')])){for(var _0x4f5b34=0x0;_0x4f5b34<_0x14d382['query']['ids'][_0xf40a('0x4b')];_0x4f5b34+=0x1){socket[_0xf40a('0x99')]('userCmList:remove',{'UserId':Number(_0x14d382[_0xf40a('0x36')][_0xf40a('0x5a')][_0x4f5b34]),'CmListId':Number(_0x14d382['params']['id'])});}}else{socket[_0xf40a('0x99')](_0xf40a('0x9b'),{'UserId':Number(_0x14d382[_0xf40a('0x36')][_0xf40a('0x5a')]),'CmListId':Number(_0x14d382[_0xf40a('0x4a')]['id'])});}});}})[_0xf40a('0x27')](respondWithStatusCode(_0x299417,null))['catch'](handleError(_0x299417,null));};exports[_0xf40a('0x9c')]=function(_0x5b5db4,_0x13b074,_0x14b267){var _0x206541={};var _0x1b9742={};var _0x49277c;var _0x4d8783;return db[_0xf40a('0x30')][_0xf40a('0x58')]({'where':{'id':_0x5b5db4[_0xf40a('0x4a')]['id']}})[_0xf40a('0x27')](handleEntityNotFound(_0x13b074,null))['then'](function(_0x467195){if(_0x467195){_0x49277c=_0x467195;_0x1b9742['model']=_[_0xf40a('0x34')](db['User'][_0xf40a('0x31')]);_0x1b9742[_0xf40a('0x36')]=_[_0xf40a('0x34')](_0x5b5db4['query']);_0x1b9742[_0xf40a('0x35')]=_[_0xf40a('0x38')](_0x1b9742[_0xf40a('0x33')],_0x1b9742[_0xf40a('0x36')]);_0x206541[_0xf40a('0x37')]=_[_0xf40a('0x38')](_0x1b9742[_0xf40a('0x33')],qs[_0xf40a('0x39')](_0x5b5db4[_0xf40a('0x36')][_0xf40a('0x39')]));_0x206541[_0xf40a('0x37')]=_0x206541[_0xf40a('0x37')]['length']?_0x206541[_0xf40a('0x37')]:_0x1b9742['model'];_0x206541[_0xf40a('0x3c')]=qs[_0xf40a('0x3d')](_0x5b5db4['query']['sort']);_0x206541[_0xf40a('0x40')]=qs['filters'](_[_0xf40a('0x3e')](_0x5b5db4['query'],_0x1b9742[_0xf40a('0x35')]));if(_0x5b5db4[_0xf40a('0x36')][_0xf40a('0x3f')]){_0x206541[_0xf40a('0x40')]=_[_0xf40a('0x42')](_0x206541['where'],{'$or':_[_0xf40a('0x2f')](_0x206541[_0xf40a('0x37')],function(_0x5d7587){var _0x1355d4={};_0x1355d4[_0x5d7587]={'$like':'%'+_0x5b5db4[_0xf40a('0x36')]['filter']+'%'};return _0x1355d4;})});}_0x206541=_[_0xf40a('0x42')]({},_0x206541,_0x5b5db4[_0xf40a('0x43')]);return _0x49277c['getAgents'](_0x206541);}})[_0xf40a('0x27')](function(_0x498032){if(_0x498032){_0x4d8783=_0x498032[_0xf40a('0x4b')];if(!_0x5b5db4[_0xf40a('0x36')][_0xf40a('0x3a')](_0xf40a('0x3b'))){_0x206541['limit']=qs[_0xf40a('0x1f')](_0x5b5db4['query']['limit']);_0x206541[_0xf40a('0x1e')]=qs[_0xf40a('0x1e')](_0x5b5db4['query'][_0xf40a('0x1e')]);}return _0x49277c[_0xf40a('0x9c')](_0x206541);}})[_0xf40a('0x27')](function(_0x13702e){if(_0x13702e){return _0x13702e?{'count':_0x4d8783,'rows':_0x13702e}:null;}})['then'](respondWithResult(_0x13b074,null))['catch'](handleError(_0x13b074,null));};function handleQuery(_0x21049e){logger[_0xf40a('0x9d')](_0x21049e);return db[_0xf40a('0x89')][_0xf40a('0x36')](_0x21049e)['spread'](function(_0x500858){csv_results[_0xf40a('0x64')](_0x500858);})[_0xf40a('0x48')](function(_0x255bc7){logger[_0xf40a('0x2b')](_0x255bc7['message']);});}
\ No newline at end of file
index 213f33c..01e1b86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['events','../../mysqldb','update','remove','emit','hasOwnProperty','hook'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x55ca,0x126));var _0xa55c=function(_0x31b2a5,_0x2480b4){_0x31b2a5=_0x31b2a5-0x0;var _0x198fa4=_0x55ca[_0x31b2a5];return _0x198fa4;};'use strict';var EventEmitter=require(_0xa55c('0x0'));var CmList=require(_0xa55c('0x1'))['db']['CmList'];var CmListEvents=new EventEmitter();CmListEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xa55c('0x2'),'afterDestroy':_0xa55c('0x3')};function emitEvent(_0x5dc716){return function(_0x3b478a,_0x2db02a,_0xcb02e3){CmListEvents[_0xa55c('0x4')](_0x5dc716+':'+_0x3b478a['id'],_0x3b478a);CmListEvents[_0xa55c('0x4')](_0x5dc716,_0x3b478a);_0xcb02e3(null);};}for(var e in events){if(events[_0xa55c('0x5')](e)){var event=events[e];CmList[_0xa55c('0x6')](e,emitEvent(event));}}module['exports']=CmListEvents;
\ No newline at end of file
+var _0x814b=['update','emit','hook','exports','events','../../mysqldb','CmList','setMaxListeners','save'];(function(_0x612267,_0x363a1f){var _0x46b502=function(_0x32791a){while(--_0x32791a){_0x612267['push'](_0x612267['shift']());}};_0x46b502(++_0x363a1f);}(_0x814b,0x1a2));var _0xb814=function(_0x409ad2,_0x5129c1){_0x409ad2=_0x409ad2-0x0;var _0x595b5f=_0x814b[_0x409ad2];return _0x595b5f;};'use strict';var EventEmitter=require(_0xb814('0x0'));var CmList=require(_0xb814('0x1'))['db'][_0xb814('0x2')];var CmListEvents=new EventEmitter();CmListEvents[_0xb814('0x3')](0x0);var events={'afterCreate':_0xb814('0x4'),'afterUpdate':_0xb814('0x5'),'afterDestroy':'remove'};function emitEvent(_0x38c21a){return function(_0x3e1e9,_0x258866,_0x4237bc){CmListEvents[_0xb814('0x6')](_0x38c21a+':'+_0x3e1e9['id'],_0x3e1e9);CmListEvents[_0xb814('0x6')](_0x38c21a,_0x3e1e9);_0x4237bc(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmList[_0xb814('0x7')](e,emitEvent(event));}}module[_0xb814('0x8')]=CmListEvents;
\ No newline at end of file
index fad05cf..bc34028 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91a7=['bluebird','path','./cmList.attributes','exports','CmList','cm_lists','util','../../config/logger','api'];(function(_0x3dc68d,_0x1c1951){var _0xdf7f94=function(_0x339428){while(--_0x339428){_0x3dc68d['push'](_0x3dc68d['shift']());}};_0xdf7f94(++_0x1c1951);}(_0x91a7,0xe7));var _0x791a=function(_0x120da5,_0x35e37c){_0x120da5=_0x120da5-0x0;var _0x2564ab=_0x91a7[_0x120da5];return _0x2564ab;};'use strict';var _=require('lodash');var util=require(_0x791a('0x0'));var logger=require(_0x791a('0x1'))(_0x791a('0x2'));var moment=require('moment');var BPromise=require(_0x791a('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x791a('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x791a('0x5'));module[_0x791a('0x6')]=function(_0x49a9b7,_0x361f53){return _0x49a9b7['define'](_0x791a('0x7'),attributes,{'tableName':_0x791a('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6f0d=['./cmList.attributes','define','CmList','cm_lists','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x5ddaac,_0x2697a8){var _0x2a9c58=function(_0x851032){while(--_0x851032){_0x5ddaac['push'](_0x5ddaac['shift']());}};_0x2a9c58(++_0x2697a8);}(_0x6f0d,0x16c));var _0xd6f0=function(_0x363d57,_0x67d153){_0x363d57=_0x363d57-0x0;var _0x186f84=_0x6f0d[_0x363d57];return _0x186f84;};'use strict';var _=require('lodash');var util=require(_0xd6f0('0x0'));var logger=require(_0xd6f0('0x1'))(_0xd6f0('0x2'));var moment=require(_0xd6f0('0x3'));var BPromise=require('bluebird');var rp=require(_0xd6f0('0x4'));var fs=require('fs');var path=require(_0xd6f0('0x5'));var rimraf=require(_0xd6f0('0x6'));var config=require(_0xd6f0('0x7'));var attributes=require(_0xd6f0('0x8'));module['exports']=function(_0x2d2ce6,_0x4a8b0c){return _0x2d2ce6[_0xd6f0('0x9')](_0xd6f0('0xa'),attributes,{'tableName':_0xd6f0('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e439b44..e9a0d5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe241=['rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','info','CmList,\x20%s,\x20%s','debug','CmList,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger'];(function(_0x2cc3a7,_0x2de76c){var _0x33128a=function(_0x2cce22){while(--_0x2cce22){_0x2cc3a7['push'](_0x2cc3a7['shift']());}};_0x33128a(++_0x2de76c);}(_0xe241,0x139));var _0x1e24=function(_0x580647,_0x43d2c3){_0x580647=_0x580647-0x0;var _0x5f0792=_0xe241[_0x580647];return _0x5f0792;};'use strict';var _=require('lodash');var util=require(_0x1e24('0x0'));var moment=require('moment');var BPromise=require(_0x1e24('0x1'));var rs=require(_0x1e24('0x2'));var fs=require('fs');var Redis=require(_0x1e24('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x1e24('0x4'));var logger=require(_0x1e24('0x5'))(_0x1e24('0x6'));var config=require(_0x1e24('0x7'));var jayson=require(_0x1e24('0x8'));var client=jayson[_0x1e24('0x9')][_0x1e24('0xa')]({'port':0x232a});config[_0x1e24('0xb')]=_[_0x1e24('0xc')](config[_0x1e24('0xb')],{'host':_0x1e24('0xd'),'port':0x18eb});var socket=require(_0x1e24('0xe'))(new Redis(config[_0x1e24('0xb')]));require('./cmList.socket')[_0x1e24('0xf')](socket);function respondWithRpcPromise(_0x31e8f2,_0x16ef73,_0x4933bd){return new BPromise(function(_0x5f3760,_0x4708f5){return client[_0x1e24('0x10')](_0x31e8f2,_0x4933bd)[_0x1e24('0x11')](function(_0xca873a){logger[_0x1e24('0x12')](_0x1e24('0x13'),_0x16ef73,'request\x20sent');logger[_0x1e24('0x14')](_0x1e24('0x15'),_0x16ef73,_0x1e24('0x16'),JSON[_0x1e24('0x17')](_0xca873a));if(_0xca873a[_0x1e24('0x18')]){if(_0xca873a[_0x1e24('0x18')][_0x1e24('0x19')]===0x1f4){logger[_0x1e24('0x18')]('CmList,\x20%s,\x20%s',_0x16ef73,_0xca873a['error']['message']);return _0x4708f5(_0xca873a[_0x1e24('0x18')][_0x1e24('0x1a')]);}logger[_0x1e24('0x18')](_0x1e24('0x13'),_0x16ef73,_0xca873a[_0x1e24('0x18')][_0x1e24('0x1a')]);return _0x5f3760(_0xca873a[_0x1e24('0x18')]['message']);}else{logger[_0x1e24('0x12')](_0x1e24('0x13'),_0x16ef73,_0x1e24('0x16'));_0x5f3760(_0xca873a[_0x1e24('0x1b')][_0x1e24('0x1a')]);}})[_0x1e24('0x1c')](function(_0x38001c){logger[_0x1e24('0x18')](_0x1e24('0x13'),_0x16ef73,_0x38001c);_0x4708f5(_0x38001c);});});}
\ No newline at end of file
+var _0x7531=['then','info','CmList,\x20%s,\x20%s','debug','CmList,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','jayson/promise','redis','defaults','localhost','socket.io-emitter','./cmList.socket'];(function(_0x41a1f5,_0x11b2b0){var _0x3c088c=function(_0x3741f1){while(--_0x3741f1){_0x41a1f5['push'](_0x41a1f5['shift']());}};_0x3c088c(++_0x11b2b0);}(_0x7531,0x1c6));var _0x1753=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x7531[_0x3ab51d];return _0x29a04e;};'use strict';var _=require(_0x1753('0x0'));var util=require(_0x1753('0x1'));var moment=require(_0x1753('0x2'));var BPromise=require(_0x1753('0x3'));var rs=require(_0x1753('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x1753('0x5'));var logger=require(_0x1753('0x6'))(_0x1753('0x7'));var config=require('../../config/environment');var jayson=require(_0x1753('0x8'));var client=jayson['client']['http']({'port':0x232a});config[_0x1753('0x9')]=_[_0x1753('0xa')](config[_0x1753('0x9')],{'host':_0x1753('0xb'),'port':0x18eb});var socket=require(_0x1753('0xc'))(new Redis(config[_0x1753('0x9')]));require(_0x1753('0xd'))['register'](socket);function respondWithRpcPromise(_0x51e757,_0x43c4f4,_0x52edae){return new BPromise(function(_0x5b2295,_0x302d92){return client['request'](_0x51e757,_0x52edae)[_0x1753('0xe')](function(_0x3249ac){logger[_0x1753('0xf')](_0x1753('0x10'),_0x43c4f4,'request\x20sent');logger[_0x1753('0x11')](_0x1753('0x12'),_0x43c4f4,'request\x20sent',JSON[_0x1753('0x13')](_0x3249ac));if(_0x3249ac[_0x1753('0x14')]){if(_0x3249ac[_0x1753('0x14')][_0x1753('0x15')]===0x1f4){logger[_0x1753('0x14')]('CmList,\x20%s,\x20%s',_0x43c4f4,_0x3249ac[_0x1753('0x14')][_0x1753('0x16')]);return _0x302d92(_0x3249ac[_0x1753('0x14')][_0x1753('0x16')]);}logger[_0x1753('0x14')]('CmList,\x20%s,\x20%s',_0x43c4f4,_0x3249ac[_0x1753('0x14')]['message']);return _0x5b2295(_0x3249ac['error'][_0x1753('0x16')]);}else{logger['info'](_0x1753('0x10'),_0x43c4f4,_0x1753('0x17'));_0x5b2295(_0x3249ac[_0x1753('0x18')][_0x1753('0x16')]);}})[_0x1753('0x19')](function(_0x194e60){logger['error']('CmList,\x20%s,\x20%s',_0x43c4f4,_0x194e60);_0x302d92(_0x194e60);});});}
\ No newline at end of file
index e4db307..b97c1d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66c7=['remove','emit','register','length','cmList:','./cmList.events','save'];(function(_0x7044d9,_0x5e6696){var _0x4bfd64=function(_0x15d46f){while(--_0x15d46f){_0x7044d9['push'](_0x7044d9['shift']());}};_0x4bfd64(++_0x5e6696);}(_0x66c7,0x15c));var _0x766c=function(_0x4532d0,_0x3853aa){_0x4532d0=_0x4532d0-0x0;var _0x3e52c1=_0x66c7[_0x4532d0];return _0x3e52c1;};'use strict';var CmListEvents=require(_0x766c('0x0'));var events=[_0x766c('0x1'),_0x766c('0x2'),'update'];function createListener(_0x507a68,_0x47351a){return function(_0x23b678){_0x47351a[_0x766c('0x3')](_0x507a68,_0x23b678);};}function removeListener(_0x1b2a8e,_0x2b4c75){return function(){CmListEvents['removeListener'](_0x1b2a8e,_0x2b4c75);};}exports[_0x766c('0x4')]=function(_0x80d91d){for(var _0x6f94c3=0x0,_0xb0b5f7=events[_0x766c('0x5')];_0x6f94c3<_0xb0b5f7;_0x6f94c3++){var _0x3c4683=events[_0x6f94c3];var _0x22a524=createListener(_0x766c('0x6')+_0x3c4683,_0x80d91d);CmListEvents['on'](_0x3c4683,_0x22a524);}};
\ No newline at end of file
+var _0x3701=['emit','removeListener','register','length','cmList:','save','update'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x3701,0x8a));var _0x1370=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x3701[_0x14add3];return _0x4a174f;};'use strict';var CmListEvents=require('./cmList.events');var events=[_0x1370('0x0'),'remove',_0x1370('0x1')];function createListener(_0xce2437,_0x53b594){return function(_0x24494d){_0x53b594[_0x1370('0x2')](_0xce2437,_0x24494d);};}function removeListener(_0x34fd76,_0x3aec4c){return function(){CmListEvents[_0x1370('0x3')](_0x34fd76,_0x3aec4c);};}exports[_0x1370('0x4')]=function(_0x5831ac){for(var _0x2d6ac9=0x0,_0x7207b9=events[_0x1370('0x5')];_0x2d6ac9<_0x7207b9;_0x2d6ac9++){var _0x22b1ad=events[_0x2d6ac9];var _0x3c2dd7=createListener(_0x1370('0x6')+_0x22b1ad,_0x5831ac);CmListEvents['on'](_0x22b1ad,_0x3c2dd7);}};
\ No newline at end of file
index d50424c..b4fb360 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9456=['delete','removeDispositions','removeAgents','exports','multer','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','/global_fields','getGlobalCustomFields','/:id','show','/:id/dispositions','getDispositions','/:id/contacts','getContacts','getContactsCsv','/:id/users','getAgents','post','addDisposition','/:id/fields','addCustomField','put'];(function(_0x91f9fc,_0x20e464){var _0x577568=function(_0x21bf53){while(--_0x21bf53){_0x91f9fc['push'](_0x91f9fc['shift']());}};_0x577568(++_0x20e464);}(_0x9456,0x1f4));var _0x6945=function(_0x3bdd16,_0x36deb4){_0x3bdd16=_0x3bdd16-0x0;var _0x3f33b8=_0x9456[_0x3bdd16];return _0x3f33b8;};'use strict';var multer=require(_0x6945('0x0'));var util=require('util');var path=require(_0x6945('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x6945('0x2')]();var fs_extra=require(_0x6945('0x3'));var auth=require(_0x6945('0x4'));var interaction=require(_0x6945('0x5'));var config=require(_0x6945('0x6'));var controller=require('./cmList.controller');router[_0x6945('0x7')]('/',auth[_0x6945('0x8')](),controller[_0x6945('0x9')]);router['get'](_0x6945('0xa'),auth[_0x6945('0x8')](),controller['describe']);router[_0x6945('0x7')](_0x6945('0xb'),auth[_0x6945('0x8')](),controller[_0x6945('0xc')]);router[_0x6945('0x7')](_0x6945('0xd'),auth[_0x6945('0x8')](),controller[_0x6945('0xe')]);router[_0x6945('0x7')](_0x6945('0xf'),auth['isAuthenticated'](),controller[_0x6945('0x10')]);router[_0x6945('0x7')](_0x6945('0x11'),auth[_0x6945('0x8')](),controller[_0x6945('0x12')]);router['get']('/:id/contacts/csv',auth[_0x6945('0x8')](),controller[_0x6945('0x13')]);router[_0x6945('0x7')]('/:id/fields',auth['isAuthenticated'](),controller['getCustomFields']);router[_0x6945('0x7')](_0x6945('0x14'),auth['isAuthenticated'](),controller[_0x6945('0x15')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x6945('0x16')](_0x6945('0xf'),auth[_0x6945('0x8')](),controller[_0x6945('0x17')]);router[_0x6945('0x16')]('/:id/contacts',auth[_0x6945('0x8')](),controller['addContacts']);router[_0x6945('0x16')](_0x6945('0x18'),auth[_0x6945('0x8')](),controller[_0x6945('0x19')]);router[_0x6945('0x16')]('/:id/users',auth[_0x6945('0x8')](),controller['addAgents']);router[_0x6945('0x1a')](_0x6945('0xd'),auth[_0x6945('0x8')](),controller['update']);router[_0x6945('0x1b')](_0x6945('0xd'),auth[_0x6945('0x8')](),controller['destroy']);router[_0x6945('0x1b')](_0x6945('0xf'),auth['isAuthenticated'](),controller[_0x6945('0x1c')]);router[_0x6945('0x1b')]('/:id/users',auth[_0x6945('0x8')](),controller[_0x6945('0x1d')]);module[_0x6945('0x1e')]=router;
\ No newline at end of file
+var _0x480d=['post','addDisposition','addContacts','addCustomField','addAgents','destroy','delete','removeDispositions','/:id/users','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./cmList.controller','isAuthenticated','get','/describe','describe','/global_fields','getGlobalCustomFields','/:id','/:id/dispositions','getDispositions','/:id/contacts','getContacts','getContactsCsv','/:id/fields','getCustomFields','getAgents','create'];(function(_0x515229,_0x25c805){var _0x578ff6=function(_0x45021a){while(--_0x45021a){_0x515229['push'](_0x515229['shift']());}};_0x578ff6(++_0x25c805);}(_0x480d,0xd6));var _0xd480=function(_0x305951,_0x509f08){_0x305951=_0x305951-0x0;var _0x32bad6=_0x480d[_0x305951];return _0x32bad6;};'use strict';var multer=require('multer');var util=require(_0xd480('0x0'));var path=require(_0xd480('0x1'));var timeout=require(_0xd480('0x2'));var express=require(_0xd480('0x3'));var router=express[_0xd480('0x4')]();var fs_extra=require(_0xd480('0x5'));var auth=require(_0xd480('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xd480('0x7'));router['get']('/',auth[_0xd480('0x8')](),controller['index']);router[_0xd480('0x9')](_0xd480('0xa'),auth[_0xd480('0x8')](),controller[_0xd480('0xb')]);router[_0xd480('0x9')](_0xd480('0xc'),auth[_0xd480('0x8')](),controller[_0xd480('0xd')]);router[_0xd480('0x9')](_0xd480('0xe'),auth[_0xd480('0x8')](),controller['show']);router[_0xd480('0x9')](_0xd480('0xf'),auth['isAuthenticated'](),controller[_0xd480('0x10')]);router[_0xd480('0x9')](_0xd480('0x11'),auth[_0xd480('0x8')](),controller[_0xd480('0x12')]);router[_0xd480('0x9')]('/:id/contacts/csv',auth[_0xd480('0x8')](),controller[_0xd480('0x13')]);router['get'](_0xd480('0x14'),auth['isAuthenticated'](),controller[_0xd480('0x15')]);router[_0xd480('0x9')]('/:id/users',auth[_0xd480('0x8')](),controller[_0xd480('0x16')]);router['post']('/',auth[_0xd480('0x8')](),controller[_0xd480('0x17')]);router[_0xd480('0x18')](_0xd480('0xf'),auth[_0xd480('0x8')](),controller[_0xd480('0x19')]);router[_0xd480('0x18')]('/:id/contacts',auth[_0xd480('0x8')](),controller[_0xd480('0x1a')]);router[_0xd480('0x18')](_0xd480('0x14'),auth['isAuthenticated'](),controller[_0xd480('0x1b')]);router[_0xd480('0x18')]('/:id/users',auth['isAuthenticated'](),controller[_0xd480('0x1c')]);router['put']('/:id',auth['isAuthenticated'](),controller['update']);router['delete'](_0xd480('0xe'),auth[_0xd480('0x8')](),controller[_0xd480('0x1d')]);router[_0xd480('0x1e')](_0xd480('0xf'),auth[_0xd480('0x8')](),controller[_0xd480('0x1f')]);router[_0xd480('0x1e')](_0xd480('0x20'),auth['isAuthenticated'](),controller['removeAgents']);module[_0xd480('0x21')]=router;
\ No newline at end of file
index ec82a4a..5220f94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd19b=['VIRTUAL','getDataValue','STRING','sequelize'];(function(_0x4a3594,_0x3c0838){var _0x46a22a=function(_0xeccd12){while(--_0xeccd12){_0x4a3594['push'](_0x4a3594['shift']());}};_0x46a22a(++_0x3c0838);}(_0xd19b,0x14f));var _0xbd19=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0xd19b[_0x49ca18];return _0x145d54;};'use strict';var Sequelize=require(_0xbd19('0x0'));module['exports']={'name':{'type':Sequelize[_0xbd19('0x1')],'get':function(_0x4d4d98){return this[_0xbd19('0x2')]('field');}},'field':{'type':Sequelize[_0xbd19('0x3')],'allowNull':![]},'operator':{'type':Sequelize[_0xbd19('0x3')],'allowNull':![]},'value':{'type':Sequelize[_0xbd19('0x3')],'allowNull':![]}};
\ No newline at end of file
+var _0xe844=['sequelize','exports','VIRTUAL','field','STRING'];(function(_0x2199e1,_0x3322a6){var _0x40c20f=function(_0xdd70a2){while(--_0xdd70a2){_0x2199e1['push'](_0x2199e1['shift']());}};_0x40c20f(++_0x3322a6);}(_0xe844,0x131));var _0x4e84=function(_0xd71ada,_0x411082){_0xd71ada=_0xd71ada-0x0;var _0x3feda7=_0xe844[_0xd71ada];return _0x3feda7;};'use strict';var Sequelize=require(_0x4e84('0x0'));module[_0x4e84('0x1')]={'name':{'type':Sequelize[_0x4e84('0x2')],'get':function(_0x4af07d){return this['getDataValue'](_0x4e84('0x3'));}},'field':{'type':Sequelize[_0x4e84('0x4')],'allowNull':![]},'operator':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize[_0x4e84('0x4')],'allowNull':![]}};
\ No newline at end of file
index d23032f..aa68674 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(_0x367c0e,_0x39b4c7){var _0x3315c4=function(_0x4568be){while(--_0x4568be){_0x367c0e['push'](_0x367c0e['shift']());}};_0x3315c4(++_0x39b4c7);}(_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(_0x5486c0,_0x3afa64){var _0x1903cc=function(_0x528dfc){while(--_0x528dfc){_0x5486c0['push'](_0x5486c0['shift']());}};_0x1903cc(++_0x3afa64);}(_0x7a54,0x106));var _0x47a5=function(_0x226aec,_0x466696){_0x226aec=_0x226aec-0x0;var _0x11d8f0=_0x7a54[_0x226aec];return _0x11d8f0;};'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 cd7cd46..027a969 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd3d=['api','moment','request-promise','path','rimraf','./condition.attributes','exports','define','Condition','../../config/logger'];(function(_0x138adb,_0x193fee){var _0x1b27f2=function(_0x5e97a2){while(--_0x5e97a2){_0x138adb['push'](_0x138adb['shift']());}};_0x1b27f2(++_0x193fee);}(_0xbd3d,0x1cb));var _0xdbd3=function(_0x6e4814,_0x1efa86){_0x6e4814=_0x6e4814-0x0;var _0x3a29c3=_0xbd3d[_0x6e4814];return _0x3a29c3;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xdbd3('0x0'))(_0xdbd3('0x1'));var moment=require(_0xdbd3('0x2'));var BPromise=require('bluebird');var rp=require(_0xdbd3('0x3'));var fs=require('fs');var path=require(_0xdbd3('0x4'));var rimraf=require(_0xdbd3('0x5'));var config=require('../../config/environment');var attributes=require(_0xdbd3('0x6'));module[_0xdbd3('0x7')]=function(_0x551370,_0xa8836b){return _0x551370[_0xdbd3('0x8')](_0xdbd3('0x9'),attributes,{'tableName':'tools_conditions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdef2=['tools_conditions','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','define','Condition'];(function(_0x586561,_0x34780b){var _0x122584=function(_0x444d72){while(--_0x444d72){_0x586561['push'](_0x586561['shift']());}};_0x122584(++_0x34780b);}(_0xdef2,0x18d));var _0x2def=function(_0x4c70c4,_0x963969){_0x4c70c4=_0x4c70c4-0x0;var _0x437865=_0xdef2[_0x4c70c4];return _0x437865;};'use strict';var _=require('lodash');var util=require(_0x2def('0x0'));var logger=require(_0x2def('0x1'))('api');var moment=require(_0x2def('0x2'));var BPromise=require(_0x2def('0x3'));var rp=require(_0x2def('0x4'));var fs=require('fs');var path=require(_0x2def('0x5'));var rimraf=require(_0x2def('0x6'));var config=require(_0x2def('0x7'));var attributes=require('./condition.attributes');module['exports']=function(_0x1c4188,_0x506caf){return _0x1c4188[_0x2def('0x8')](_0x2def('0x9'),attributes,{'tableName':_0x2def('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2143907..b64f6a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e10=['debug','stringify','error','code','message','result','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','Condition,\x20%s,\x20%s','request\x20sent'];(function(_0x148090,_0x4a82ea){var _0x3d2e30=function(_0x23e54d){while(--_0x23e54d){_0x148090['push'](_0x148090['shift']());}};_0x3d2e30(++_0x4a82ea);}(_0x4e10,0xec));var _0x04e1=function(_0x3603bb,_0xd514c3){_0x3603bb=_0x3603bb-0x0;var _0x5bffbb=_0x4e10[_0x3603bb];return _0x5bffbb;};'use strict';var _=require(_0x04e1('0x0'));var util=require('util');var moment=require(_0x04e1('0x1'));var BPromise=require(_0x04e1('0x2'));var rs=require(_0x04e1('0x3'));var fs=require('fs');var Redis=require(_0x04e1('0x4'));var db=require(_0x04e1('0x5'))['db'];var utils=require(_0x04e1('0x6'));var logger=require(_0x04e1('0x7'))(_0x04e1('0x8'));var config=require('../../config/environment');var jayson=require(_0x04e1('0x9'));var client=jayson[_0x04e1('0xa')][_0x04e1('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x42d595,_0x28b1e8,_0x18746a){return new BPromise(function(_0x4f48bb,_0x4618af){return client[_0x04e1('0xc')](_0x42d595,_0x18746a)[_0x04e1('0xd')](function(_0x5f4cfb){logger[_0x04e1('0xe')](_0x04e1('0xf'),_0x28b1e8,_0x04e1('0x10'));logger[_0x04e1('0x11')]('Condition,\x20%s,\x20%s,\x20%s',_0x28b1e8,'request\x20sent',JSON[_0x04e1('0x12')](_0x5f4cfb));if(_0x5f4cfb[_0x04e1('0x13')]){if(_0x5f4cfb['error'][_0x04e1('0x14')]===0x1f4){logger[_0x04e1('0x13')](_0x04e1('0xf'),_0x28b1e8,_0x5f4cfb[_0x04e1('0x13')][_0x04e1('0x15')]);return _0x4618af(_0x5f4cfb[_0x04e1('0x13')][_0x04e1('0x15')]);}logger['error'](_0x04e1('0xf'),_0x28b1e8,_0x5f4cfb['error']['message']);return _0x4f48bb(_0x5f4cfb[_0x04e1('0x13')][_0x04e1('0x15')]);}else{logger[_0x04e1('0xe')](_0x04e1('0xf'),_0x28b1e8,_0x04e1('0x10'));_0x4f48bb(_0x5f4cfb[_0x04e1('0x16')][_0x04e1('0x15')]);}})['catch'](function(_0x21c13c){logger[_0x04e1('0x13')](_0x04e1('0xf'),_0x28b1e8,_0x21c13c);_0x4618af(_0x21c13c);});});}
\ No newline at end of file
+var _0xc5b0=['Condition,\x20%s,\x20%s','debug','Condition,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','info'];(function(_0x43d16c,_0x2b5447){var _0x208cce=function(_0x371720){while(--_0x371720){_0x43d16c['push'](_0x43d16c['shift']());}};_0x208cce(++_0x2b5447);}(_0xc5b0,0x1ab));var _0x0c5b=function(_0x387fe4,_0x186656){_0x387fe4=_0x387fe4-0x0;var _0x43c1c1=_0xc5b0[_0x387fe4];return _0x43c1c1;};'use strict';var _=require(_0x0c5b('0x0'));var util=require(_0x0c5b('0x1'));var moment=require(_0x0c5b('0x2'));var BPromise=require('bluebird');var rs=require(_0x0c5b('0x3'));var fs=require('fs');var Redis=require(_0x0c5b('0x4'));var db=require(_0x0c5b('0x5'))['db'];var utils=require(_0x0c5b('0x6'));var logger=require(_0x0c5b('0x7'))(_0x0c5b('0x8'));var config=require('../../config/environment');var jayson=require(_0x0c5b('0x9'));var client=jayson[_0x0c5b('0xa')][_0x0c5b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4fc046,_0x22e2e6,_0x2affbb){return new BPromise(function(_0x5e71b3,_0x2a1d58){return client['request'](_0x4fc046,_0x2affbb)[_0x0c5b('0xc')](function(_0x9cab52){logger[_0x0c5b('0xd')](_0x0c5b('0xe'),_0x22e2e6,'request\x20sent');logger[_0x0c5b('0xf')](_0x0c5b('0x10'),_0x22e2e6,_0x0c5b('0x11'),JSON['stringify'](_0x9cab52));if(_0x9cab52[_0x0c5b('0x12')]){if(_0x9cab52[_0x0c5b('0x12')][_0x0c5b('0x13')]===0x1f4){logger[_0x0c5b('0x12')](_0x0c5b('0xe'),_0x22e2e6,_0x9cab52[_0x0c5b('0x12')][_0x0c5b('0x14')]);return _0x2a1d58(_0x9cab52[_0x0c5b('0x12')]['message']);}logger[_0x0c5b('0x12')](_0x0c5b('0xe'),_0x22e2e6,_0x9cab52[_0x0c5b('0x12')]['message']);return _0x5e71b3(_0x9cab52[_0x0c5b('0x12')][_0x0c5b('0x14')]);}else{logger[_0x0c5b('0xd')](_0x0c5b('0xe'),_0x22e2e6,_0x0c5b('0x11'));_0x5e71b3(_0x9cab52['result'][_0x0c5b('0x14')]);}})['catch'](function(_0xad6eee){logger[_0x0c5b('0x12')]('Condition,\x20%s,\x20%s',_0x22e2e6,_0xad6eee);_0x2a1d58(_0xad6eee);});});}
\ No newline at end of file
index 2861b96..476ec42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda17=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./condition.controller','put','/:id','isAuthenticated','delete','exports'];(function(_0x3eee78,_0x5acc63){var _0x53a5e5=function(_0x472fb6){while(--_0x472fb6){_0x3eee78['push'](_0x3eee78['shift']());}};_0x53a5e5(++_0x5acc63);}(_0xda17,0x1ef));var _0x7da1=function(_0x4fc9e6,_0xc51915){_0x4fc9e6=_0x4fc9e6-0x0;var _0x551d28=_0xda17[_0x4fc9e6];return _0x551d28;};'use strict';var multer=require(_0x7da1('0x0'));var util=require(_0x7da1('0x1'));var path=require(_0x7da1('0x2'));var timeout=require(_0x7da1('0x3'));var express=require(_0x7da1('0x4'));var router=express[_0x7da1('0x5')]();var fs_extra=require(_0x7da1('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x7da1('0x7'));var config=require(_0x7da1('0x8'));var controller=require(_0x7da1('0x9'));router[_0x7da1('0xa')](_0x7da1('0xb'),auth[_0x7da1('0xc')](),controller['update']);router[_0x7da1('0xd')](_0x7da1('0xb'),auth[_0x7da1('0xc')](),controller['destroy']);module[_0x7da1('0xe')]=router;
\ No newline at end of file
+var _0x5bea=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','put','/:id','isAuthenticated','delete','destroy','exports','multer','util'];(function(_0x30faec,_0x18940b){var _0x29484f=function(_0x169ae8){while(--_0x169ae8){_0x30faec['push'](_0x30faec['shift']());}};_0x29484f(++_0x18940b);}(_0x5bea,0x9e));var _0xa5be=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x5bea[_0x321bb2];return _0x9c12ed;};'use strict';var multer=require(_0xa5be('0x0'));var util=require(_0xa5be('0x1'));var path=require(_0xa5be('0x2'));var timeout=require(_0xa5be('0x3'));var express=require(_0xa5be('0x4'));var router=express[_0xa5be('0x5')]();var fs_extra=require(_0xa5be('0x6'));var auth=require(_0xa5be('0x7'));var interaction=require(_0xa5be('0x8'));var config=require(_0xa5be('0x9'));var controller=require('./condition.controller');router[_0xa5be('0xa')](_0xa5be('0xb'),auth[_0xa5be('0xc')](),controller['update']);router[_0xa5be('0xd')](_0xa5be('0xb'),auth[_0xa5be('0xc')](),controller[_0xa5be('0xe')]);module[_0xa5be('0xf')]=router;
\ No newline at end of file
index 440df41..786d5db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5f1=['STRING','name','sequelize','exports'];(function(_0x1203f,_0x554bbc){var _0x365f0a=function(_0x3531d0){while(--_0x3531d0){_0x1203f['push'](_0x1203f['shift']());}};_0x365f0a(++_0x554bbc);}(_0xc5f1,0x16a));var _0x1c5f=function(_0x20c1bc,_0x34c07d){_0x20c1bc=_0x20c1bc-0x0;var _0x4ff2fc=_0xc5f1[_0x20c1bc];return _0x4ff2fc;};'use strict';var Sequelize=require(_0x1c5f('0x0'));module[_0x1c5f('0x1')]={'name':{'type':Sequelize[_0x1c5f('0x2')],'allowNull':![],'unique':_0x1c5f('0x3')},'OrderBy':{'type':Sequelize['INTEGER'],'allowNull':!![]},'rgbBackgroundColor':{'type':Sequelize[_0x1c5f('0x2')],'allowNull':!![]}};
\ No newline at end of file
+var _0x6b30=['exports','STRING','name','sequelize'];(function(_0x138836,_0x229129){var _0x322688=function(_0x54b101){while(--_0x54b101){_0x138836['push'](_0x138836['shift']());}};_0x322688(++_0x229129);}(_0x6b30,0xe3));var _0x06b3=function(_0x96c15f,_0x538403){_0x96c15f=_0x96c15f-0x0;var _0x202a78=_0x6b30[_0x96c15f];return _0x202a78;};'use strict';var Sequelize=require(_0x06b3('0x0'));module[_0x06b3('0x1')]={'name':{'type':Sequelize[_0x06b3('0x2')],'allowNull':![],'unique':_0x06b3('0x3')},'OrderBy':{'type':Sequelize['INTEGER'],'allowNull':!![]},'rgbBackgroundColor':{'type':Sequelize[_0x06b3('0x2')],'allowNull':!![]}};
\ No newline at end of file
index 0081c4c..b1ae686 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x955f=['error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','CmContactHasItem','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','path','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','undefined','limit','offset','count','set','Content-Range','apply','reject','update','then','destroy','get','ContactItemTypes','UserProfileResource','stack','name','send','index','map','ContactItemType','rawAttributes','fieldName','type','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','keys','find','create','user','catch'];(function(_0x5f08a6,_0x400121){var _0x5d0641=function(_0x304467){while(--_0x304467){_0x5f08a6['push'](_0x5f08a6['shift']());}};_0x5d0641(++_0x400121);}(_0x955f,0x1eb));var _0xf955=function(_0x6fd544,_0x46013d){_0x6fd544=_0x6fd544-0x0;var _0x3d4df9=_0x955f[_0x6fd544];return _0x3d4df9;};'use strict';var emlformat=require(_0xf955('0x0'));var rimraf=require(_0xf955('0x1'));var zipdir=require(_0xf955('0x2'));var jsonpatch=require(_0xf955('0x3'));var rp=require(_0xf955('0x4'));var moment=require('moment');var BPromise=require(_0xf955('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xf955('0x6'));var sox=require('sox');var csv=require(_0xf955('0x7'));var ejs=require(_0xf955('0x8'));var fs=require('fs');var fs_extra=require(_0xf955('0x9'));var _=require('lodash');var squel=require(_0xf955('0xa'));var crypto=require(_0xf955('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xf955('0xc'));var toCsv=require(_0xf955('0x7'));var querystring=require(_0xf955('0xd'));var Papa=require(_0xf955('0xe'));var Redis=require(_0xf955('0xf'));var authService=require(_0xf955('0x10'));var qs=require(_0xf955('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf955('0x12'));var logger=require('../../config/logger')(_0xf955('0x13'));var utils=require(_0xf955('0x14'));var config=require(_0xf955('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xf955('0x16'))['db'];function respondWithStatusCode(_0x542347,_0x23e0c6){_0x23e0c6=_0x23e0c6||0xcc;return function(_0x50d9a9){if(_0x50d9a9){return _0x542347[_0xf955('0x17')](_0x23e0c6);}return _0x542347[_0xf955('0x18')](_0x23e0c6)[_0xf955('0x19')]();};}function respondWithResult(_0x109bc5,_0x2080c4){_0x2080c4=_0x2080c4||0xc8;return function(_0x341b8c){if(_0x341b8c){return _0x109bc5[_0xf955('0x18')](_0x2080c4)[_0xf955('0x1a')](_0x341b8c);}};}function respondWithFilteredResult(_0x3c6af7,_0x24e75c){return function(_0x5350e4){if(_0x5350e4){var _0xc29b35=typeof _0x24e75c['offset']===_0xf955('0x1b')&&typeof _0x24e75c[_0xf955('0x1c')]===_0xf955('0x1b');var _0x15c07c=_0x5350e4['count'];var _0x5ac6cb=_0xc29b35?0x0:_0x24e75c[_0xf955('0x1d')];var _0xe6de5c=_0xc29b35?_0x5350e4[_0xf955('0x1e')]:_0x24e75c['offset']+_0x24e75c[_0xf955('0x1c')];var _0x3576fa;if(_0xe6de5c>=_0x15c07c){_0xe6de5c=_0x15c07c;_0x3576fa=0xc8;}else{_0x3576fa=0xce;}_0x3c6af7[_0xf955('0x18')](_0x3576fa);return _0x3c6af7[_0xf955('0x1f')](_0xf955('0x20'),_0x5ac6cb+'-'+_0xe6de5c+'/'+_0x15c07c)['json'](_0x5350e4);}return null;};}function patchUpdates(_0x17d86a){return function(_0x3dbbe8){try{jsonpatch[_0xf955('0x21')](_0x3dbbe8,_0x17d86a,!![]);}catch(_0x488d04){return BPromise[_0xf955('0x22')](_0x488d04);}return _0x3dbbe8['save']();};}function saveUpdates(_0x21ae24,_0x43b078){return function(_0x37143d){if(_0x37143d){return _0x37143d[_0xf955('0x23')](_0x21ae24)[_0xf955('0x24')](function(_0x565641){return _0x565641;});}return null;};}function removeEntity(_0x25f4f2,_0x5fab1c){return function(_0x3585c7){if(_0x3585c7){return _0x3585c7[_0xf955('0x25')]()[_0xf955('0x24')](function(){var _0x102e36=_0x3585c7[_0xf955('0x26')]({'plain':!![]});var _0x552cf3=_0xf955('0x27');return db[_0xf955('0x28')][_0xf955('0x25')]({'where':{'type':_0x552cf3,'resourceId':_0x102e36['id']}})[_0xf955('0x24')](function(){return _0x3585c7;});})[_0xf955('0x24')](function(){_0x25f4f2[_0xf955('0x18')](0xcc)[_0xf955('0x19')]();});}};}function handleEntityNotFound(_0x51f3ab,_0x3caea6){return function(_0x145098){if(!_0x145098){_0x51f3ab[_0xf955('0x17')](0x194);}return _0x145098;};}function handleError(_0xbd0b74,_0x28fa9c){_0x28fa9c=_0x28fa9c||0x1f4;return function(_0x264f6d){logger['error'](_0x264f6d[_0xf955('0x29')]);if(_0x264f6d[_0xf955('0x2a')]){delete _0x264f6d['name'];}_0xbd0b74[_0xf955('0x18')](_0x28fa9c)[_0xf955('0x2b')](_0x264f6d);};}exports[_0xf955('0x2c')]=function(_0x1ef794,_0x59bfb5){var _0x3a951c={},_0x518fb3={},_0x227104={'count':0x0,'rows':[]};var _0x2c222a=_[_0xf955('0x2d')](db[_0xf955('0x2e')][_0xf955('0x2f')],function(_0x32121b){return{'name':_0x32121b[_0xf955('0x30')],'type':_0x32121b[_0xf955('0x31')]['key']};});_0x518fb3[_0xf955('0x32')]=_[_0xf955('0x2d')](_0x2c222a,_0xf955('0x2a'));_0x518fb3[_0xf955('0x33')]=_['keys'](_0x1ef794[_0xf955('0x33')]);_0x518fb3[_0xf955('0x34')]=_[_0xf955('0x35')](_0x518fb3[_0xf955('0x32')],_0x518fb3[_0xf955('0x33')]);_0x3a951c['attributes']=_['intersection'](_0x518fb3['model'],qs[_0xf955('0x36')](_0x1ef794[_0xf955('0x33')][_0xf955('0x36')]));_0x3a951c[_0xf955('0x37')]=_0x3a951c[_0xf955('0x37')][_0xf955('0x38')]?_0x3a951c['attributes']:_0x518fb3[_0xf955('0x32')];if(!_0x1ef794['query'][_0xf955('0x39')](_0xf955('0x3a'))){_0x3a951c[_0xf955('0x1c')]=qs['limit'](_0x1ef794[_0xf955('0x33')]['limit']);_0x3a951c[_0xf955('0x1d')]=qs[_0xf955('0x1d')](_0x1ef794[_0xf955('0x33')][_0xf955('0x1d')]);}_0x3a951c['order']=qs[_0xf955('0x3b')](_0x1ef794[_0xf955('0x33')]['sort']);_0x3a951c[_0xf955('0x3c')]=qs[_0xf955('0x34')](_[_0xf955('0x3d')](_0x1ef794['query'],_0x518fb3[_0xf955('0x34')]),_0x2c222a);if(_0x1ef794[_0xf955('0x33')][_0xf955('0x3e')]){_0x3a951c['where']=_[_0xf955('0x3f')](_0x3a951c[_0xf955('0x3c')],{'$or':_[_0xf955('0x2d')](_0x2c222a,function(_0x2069f3){if(_0x2069f3[_0xf955('0x31')]!==_0xf955('0x40')){var _0x2b614d={};_0x2b614d[_0x2069f3[_0xf955('0x2a')]]={'$like':'%'+_0x1ef794['query'][_0xf955('0x3e')]+'%'};return _0x2b614d;}})});}_0x3a951c=_[_0xf955('0x3f')]({},_0x3a951c,_0x1ef794[_0xf955('0x41')]);var _0xe633fa={'where':_0x3a951c[_0xf955('0x3c')]};return db[_0xf955('0x2e')][_0xf955('0x1e')](_0xe633fa)[_0xf955('0x24')](function(_0x47651b){_0x227104[_0xf955('0x1e')]=_0x47651b;if(_0x1ef794[_0xf955('0x33')][_0xf955('0x42')]){_0x3a951c[_0xf955('0x43')]=[{'all':!![]}];}return db[_0xf955('0x2e')][_0xf955('0x44')](_0x3a951c);})[_0xf955('0x24')](function(_0x356ec2){_0x227104[_0xf955('0x45')]=_0x356ec2;return _0x227104;})[_0xf955('0x24')](respondWithFilteredResult(_0x59bfb5,_0x3a951c))['catch'](handleError(_0x59bfb5,null));};exports[_0xf955('0x46')]=function(_0x25d809,_0x2db18d){var _0x5f0ef9={'raw':!![],'where':{'id':_0x25d809['params']['id']}},_0x16fc1a={};_0x16fc1a[_0xf955('0x32')]=_['keys'](db[_0xf955('0x2e')][_0xf955('0x2f')]);_0x16fc1a[_0xf955('0x33')]=_[_0xf955('0x47')](_0x25d809['query']);_0x16fc1a[_0xf955('0x34')]=_[_0xf955('0x35')](_0x16fc1a[_0xf955('0x32')],_0x16fc1a['query']);_0x5f0ef9['attributes']=_[_0xf955('0x35')](_0x16fc1a[_0xf955('0x32')],qs[_0xf955('0x36')](_0x25d809[_0xf955('0x33')]['fields']));_0x5f0ef9[_0xf955('0x37')]=_0x5f0ef9[_0xf955('0x37')][_0xf955('0x38')]?_0x5f0ef9['attributes']:_0x16fc1a[_0xf955('0x32')];if(_0x25d809['query'][_0xf955('0x42')]){_0x5f0ef9[_0xf955('0x43')]=[{'all':!![]}];}_0x5f0ef9=_[_0xf955('0x3f')]({},_0x5f0ef9,_0x25d809['options']);return db[_0xf955('0x2e')][_0xf955('0x48')](_0x5f0ef9)[_0xf955('0x24')](handleEntityNotFound(_0x2db18d,null))[_0xf955('0x24')](respondWithResult(_0x2db18d,null))['catch'](handleError(_0x2db18d,null));};exports[_0xf955('0x49')]=function(_0x4ff0f1,_0x1c6d76){return db[_0xf955('0x2e')][_0xf955('0x49')](_0x4ff0f1['body'],{})[_0xf955('0x24')](function(_0x4e7269){var _0x35c23c=_0x4ff0f1['user'][_0xf955('0x26')]({'plain':!![]});if(!_0x35c23c)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x35c23c['role']===_0xf955('0x4a')){var _0x45c7fe=_0x4e7269['get']({'plain':!![]});var _0x142e8f='ContactItemTypes';return db['UserProfileSection']['find']({'where':{'name':_0x142e8f,'userProfileId':_0x35c23c['userProfileId']},'raw':!![]})[_0xf955('0x24')](function(_0x1abe1c){if(_0x1abe1c&&_0x1abe1c['autoAssociation']===0x0){return db['UserProfileResource'][_0xf955('0x49')]({'name':_0x45c7fe[_0xf955('0x2a')],'resourceId':_0x45c7fe['id'],'type':_0x1abe1c[_0xf955('0x2a')],'sectionId':_0x1abe1c['id']},{})[_0xf955('0x24')](function(){return _0x4e7269;});}else{return _0x4e7269;}})[_0xf955('0x4b')](function(_0xa56483){logger[_0xf955('0x4c')](_0xf955('0x4d'),_0xa56483);throw _0xa56483;});}return _0x4e7269;})[_0xf955('0x24')](respondWithResult(_0x1c6d76,0xc9))[_0xf955('0x4b')](handleError(_0x1c6d76,null));};exports[_0xf955('0x23')]=function(_0x350873,_0x47a3a6){if(_0x350873[_0xf955('0x4e')]['id']){delete _0x350873[_0xf955('0x4e')]['id'];}return db[_0xf955('0x2e')][_0xf955('0x48')]({'where':{'id':_0x350873[_0xf955('0x4f')]['id']}})['then'](handleEntityNotFound(_0x47a3a6,null))[_0xf955('0x24')](saveUpdates(_0x350873[_0xf955('0x4e')],null))[_0xf955('0x24')](respondWithResult(_0x47a3a6,null))[_0xf955('0x4b')](handleError(_0x47a3a6,null));};exports[_0xf955('0x25')]=function(_0x9057df,_0x228d59){return db[_0xf955('0x2e')][_0xf955('0x48')]({'where':{'id':_0x9057df[_0xf955('0x4f')]['id']}})['then'](handleEntityNotFound(_0x228d59,null))[_0xf955('0x24')](db[_0xf955('0x50')][_0xf955('0x23')]({'ItemTypeId':null},{'where':{'ItemTypeId':_0x9057df[_0xf955('0x4f')]['id']}}))[_0xf955('0x24')](removeEntity(_0x228d59,null))[_0xf955('0x4b')](handleError(_0x228d59,null));};
\ No newline at end of file
+var _0x14a0=['undefined','limit','count','offset','set','apply','reject','save','update','destroy','then','get','UserProfileResource','error','stack','send','index','map','ContactItemType','rawAttributes','fieldName','type','key','name','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','ContactItemTypes','userProfileId','autoAssociation','params','CmContactHasItem','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','squel','crypto','jsforce','querystring','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json'];(function(_0x47f7f5,_0xa5caf){var _0x52fe6b=function(_0x7ee9cf){while(--_0x7ee9cf){_0x47f7f5['push'](_0x47f7f5['shift']());}};_0x52fe6b(++_0xa5caf);}(_0x14a0,0x8e));var _0x014a=function(_0x49b360,_0x41df56){_0x49b360=_0x49b360-0x0;var _0x5e1317=_0x14a0[_0x49b360];return _0x5e1317;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x014a('0x0'));var zipdir=require(_0x014a('0x1'));var jsonpatch=require(_0x014a('0x2'));var rp=require(_0x014a('0x3'));var moment=require(_0x014a('0x4'));var BPromise=require(_0x014a('0x5'));var Mustache=require(_0x014a('0x6'));var util=require('util');var path=require('path');var sox=require(_0x014a('0x7'));var csv=require(_0x014a('0x8'));var ejs=require(_0x014a('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x014a('0xa'));var crypto=require(_0x014a('0xb'));var jsforce=require(_0x014a('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x014a('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x014a('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x014a('0xf'))(_0x014a('0x10'));var utils=require('../../config/utils');var config=require(_0x014a('0x11'));var licenseUtil=require(_0x014a('0x12'));var db=require(_0x014a('0x13'))['db'];function respondWithStatusCode(_0x43bfeb,_0x1bcd1){_0x1bcd1=_0x1bcd1||0xcc;return function(_0x20cb56){if(_0x20cb56){return _0x43bfeb[_0x014a('0x14')](_0x1bcd1);}return _0x43bfeb[_0x014a('0x15')](_0x1bcd1)[_0x014a('0x16')]();};}function respondWithResult(_0x71535d,_0x45cd80){_0x45cd80=_0x45cd80||0xc8;return function(_0x3c54c8){if(_0x3c54c8){return _0x71535d['status'](_0x45cd80)[_0x014a('0x17')](_0x3c54c8);}};}function respondWithFilteredResult(_0x3cf92f,_0x59f207){return function(_0x3a836f){if(_0x3a836f){var _0x128c46=typeof _0x59f207['offset']===_0x014a('0x18')&&typeof _0x59f207[_0x014a('0x19')]===_0x014a('0x18');var _0x12da95=_0x3a836f[_0x014a('0x1a')];var _0x12d339=_0x128c46?0x0:_0x59f207[_0x014a('0x1b')];var _0x263b07=_0x128c46?_0x3a836f[_0x014a('0x1a')]:_0x59f207[_0x014a('0x1b')]+_0x59f207[_0x014a('0x19')];var _0x89e132;if(_0x263b07>=_0x12da95){_0x263b07=_0x12da95;_0x89e132=0xc8;}else{_0x89e132=0xce;}_0x3cf92f[_0x014a('0x15')](_0x89e132);return _0x3cf92f[_0x014a('0x1c')]('Content-Range',_0x12d339+'-'+_0x263b07+'/'+_0x12da95)[_0x014a('0x17')](_0x3a836f);}return null;};}function patchUpdates(_0x109a9c){return function(_0x11065f){try{jsonpatch[_0x014a('0x1d')](_0x11065f,_0x109a9c,!![]);}catch(_0xc9a563){return BPromise[_0x014a('0x1e')](_0xc9a563);}return _0x11065f[_0x014a('0x1f')]();};}function saveUpdates(_0x3dd2d0,_0x290b86){return function(_0x486e66){if(_0x486e66){return _0x486e66[_0x014a('0x20')](_0x3dd2d0)['then'](function(_0x1a1318){return _0x1a1318;});}return null;};}function removeEntity(_0x26718b,_0x44d921){return function(_0x36d52b){if(_0x36d52b){return _0x36d52b[_0x014a('0x21')]()[_0x014a('0x22')](function(){var _0x3fec9f=_0x36d52b[_0x014a('0x23')]({'plain':!![]});var _0x165a42='ContactItemTypes';return db[_0x014a('0x24')]['destroy']({'where':{'type':_0x165a42,'resourceId':_0x3fec9f['id']}})[_0x014a('0x22')](function(){return _0x36d52b;});})[_0x014a('0x22')](function(){_0x26718b['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x9a901f,_0x3f9719){return function(_0x143346){if(!_0x143346){_0x9a901f['sendStatus'](0x194);}return _0x143346;};}function handleError(_0x183f19,_0x3c1fa4){_0x3c1fa4=_0x3c1fa4||0x1f4;return function(_0x598179){logger[_0x014a('0x25')](_0x598179[_0x014a('0x26')]);if(_0x598179['name']){delete _0x598179['name'];}_0x183f19[_0x014a('0x15')](_0x3c1fa4)[_0x014a('0x27')](_0x598179);};}exports[_0x014a('0x28')]=function(_0x29fce5,_0x4ea00c){var _0x434038={},_0x147e7e={},_0x15af07={'count':0x0,'rows':[]};var _0x402d3b=_[_0x014a('0x29')](db[_0x014a('0x2a')][_0x014a('0x2b')],function(_0x1dae8e){return{'name':_0x1dae8e[_0x014a('0x2c')],'type':_0x1dae8e[_0x014a('0x2d')][_0x014a('0x2e')]};});_0x147e7e['model']=_[_0x014a('0x29')](_0x402d3b,_0x014a('0x2f'));_0x147e7e[_0x014a('0x30')]=_[_0x014a('0x31')](_0x29fce5[_0x014a('0x30')]);_0x147e7e[_0x014a('0x32')]=_[_0x014a('0x33')](_0x147e7e['model'],_0x147e7e[_0x014a('0x30')]);_0x434038[_0x014a('0x34')]=_['intersection'](_0x147e7e[_0x014a('0x35')],qs[_0x014a('0x36')](_0x29fce5[_0x014a('0x30')][_0x014a('0x36')]));_0x434038[_0x014a('0x34')]=_0x434038[_0x014a('0x34')][_0x014a('0x37')]?_0x434038[_0x014a('0x34')]:_0x147e7e['model'];if(!_0x29fce5[_0x014a('0x30')][_0x014a('0x38')](_0x014a('0x39'))){_0x434038[_0x014a('0x19')]=qs['limit'](_0x29fce5[_0x014a('0x30')][_0x014a('0x19')]);_0x434038[_0x014a('0x1b')]=qs[_0x014a('0x1b')](_0x29fce5[_0x014a('0x30')][_0x014a('0x1b')]);}_0x434038[_0x014a('0x3a')]=qs[_0x014a('0x3b')](_0x29fce5[_0x014a('0x30')]['sort']);_0x434038[_0x014a('0x3c')]=qs['filters'](_[_0x014a('0x3d')](_0x29fce5[_0x014a('0x30')],_0x147e7e[_0x014a('0x32')]),_0x402d3b);if(_0x29fce5[_0x014a('0x30')][_0x014a('0x3e')]){_0x434038['where']=_[_0x014a('0x3f')](_0x434038[_0x014a('0x3c')],{'$or':_['map'](_0x402d3b,function(_0x9227b8){if(_0x9227b8[_0x014a('0x2d')]!==_0x014a('0x40')){var _0x2e7a14={};_0x2e7a14[_0x9227b8[_0x014a('0x2f')]]={'$like':'%'+_0x29fce5[_0x014a('0x30')][_0x014a('0x3e')]+'%'};return _0x2e7a14;}})});}_0x434038=_[_0x014a('0x3f')]({},_0x434038,_0x29fce5[_0x014a('0x41')]);var _0x537bde={'where':_0x434038[_0x014a('0x3c')]};return db[_0x014a('0x2a')][_0x014a('0x1a')](_0x537bde)[_0x014a('0x22')](function(_0x5f1a91){_0x15af07[_0x014a('0x1a')]=_0x5f1a91;if(_0x29fce5[_0x014a('0x30')][_0x014a('0x42')]){_0x434038[_0x014a('0x43')]=[{'all':!![]}];}return db[_0x014a('0x2a')][_0x014a('0x44')](_0x434038);})['then'](function(_0x361866){_0x15af07[_0x014a('0x45')]=_0x361866;return _0x15af07;})['then'](respondWithFilteredResult(_0x4ea00c,_0x434038))[_0x014a('0x46')](handleError(_0x4ea00c,null));};exports[_0x014a('0x47')]=function(_0x2c45f1,_0x5dc092){var _0x5bcf8={'raw':!![],'where':{'id':_0x2c45f1['params']['id']}},_0x50a8f0={};_0x50a8f0[_0x014a('0x35')]=_[_0x014a('0x31')](db['ContactItemType'][_0x014a('0x2b')]);_0x50a8f0[_0x014a('0x30')]=_[_0x014a('0x31')](_0x2c45f1[_0x014a('0x30')]);_0x50a8f0[_0x014a('0x32')]=_[_0x014a('0x33')](_0x50a8f0['model'],_0x50a8f0[_0x014a('0x30')]);_0x5bcf8[_0x014a('0x34')]=_[_0x014a('0x33')](_0x50a8f0['model'],qs['fields'](_0x2c45f1[_0x014a('0x30')]['fields']));_0x5bcf8['attributes']=_0x5bcf8[_0x014a('0x34')]['length']?_0x5bcf8[_0x014a('0x34')]:_0x50a8f0[_0x014a('0x35')];if(_0x2c45f1[_0x014a('0x30')]['includeAll']){_0x5bcf8[_0x014a('0x43')]=[{'all':!![]}];}_0x5bcf8=_[_0x014a('0x3f')]({},_0x5bcf8,_0x2c45f1[_0x014a('0x41')]);return db[_0x014a('0x2a')][_0x014a('0x48')](_0x5bcf8)[_0x014a('0x22')](handleEntityNotFound(_0x5dc092,null))['then'](respondWithResult(_0x5dc092,null))[_0x014a('0x46')](handleError(_0x5dc092,null));};exports[_0x014a('0x49')]=function(_0x5a861c,_0x1a4df9){return db[_0x014a('0x2a')][_0x014a('0x49')](_0x5a861c[_0x014a('0x4a')],{})[_0x014a('0x22')](function(_0x357ca1){var _0x437f23=_0x5a861c[_0x014a('0x4b')]['get']({'plain':!![]});if(!_0x437f23)throw new Error(_0x014a('0x4c'));if(_0x437f23[_0x014a('0x4d')]===_0x014a('0x4b')){var _0x135e7e=_0x357ca1[_0x014a('0x23')]({'plain':!![]});var _0x4b2fdb=_0x014a('0x4e');return db['UserProfileSection'][_0x014a('0x48')]({'where':{'name':_0x4b2fdb,'userProfileId':_0x437f23[_0x014a('0x4f')]},'raw':!![]})[_0x014a('0x22')](function(_0x479dc0){if(_0x479dc0&&_0x479dc0[_0x014a('0x50')]===0x0){return db['UserProfileResource']['create']({'name':_0x135e7e['name'],'resourceId':_0x135e7e['id'],'type':_0x479dc0['name'],'sectionId':_0x479dc0['id']},{})[_0x014a('0x22')](function(){return _0x357ca1;});}else{return _0x357ca1;}})['catch'](function(_0x1fe253){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1fe253);throw _0x1fe253;});}return _0x357ca1;})[_0x014a('0x22')](respondWithResult(_0x1a4df9,0xc9))['catch'](handleError(_0x1a4df9,null));};exports[_0x014a('0x20')]=function(_0x1e778d,_0x400633){if(_0x1e778d[_0x014a('0x4a')]['id']){delete _0x1e778d[_0x014a('0x4a')]['id'];}return db[_0x014a('0x2a')][_0x014a('0x48')]({'where':{'id':_0x1e778d[_0x014a('0x51')]['id']}})[_0x014a('0x22')](handleEntityNotFound(_0x400633,null))[_0x014a('0x22')](saveUpdates(_0x1e778d['body'],null))['then'](respondWithResult(_0x400633,null))[_0x014a('0x46')](handleError(_0x400633,null));};exports[_0x014a('0x21')]=function(_0x237345,_0x4cc246){return db['ContactItemType'][_0x014a('0x48')]({'where':{'id':_0x237345['params']['id']}})[_0x014a('0x22')](handleEntityNotFound(_0x4cc246,null))[_0x014a('0x22')](db[_0x014a('0x52')][_0x014a('0x20')]({'ItemTypeId':null},{'where':{'ItemTypeId':_0x237345['params']['id']}}))[_0x014a('0x22')](removeEntity(_0x4cc246,null))[_0x014a('0x46')](handleError(_0x4cc246,null));};
\ No newline at end of file
index 8abcd88..b631ab4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x040c=['../../config/logger','api','moment','request-promise','path','../../config/environment','./contactItemType.attributes','exports','ContactItemType','tools_contact_item_types','lodash','util'];(function(_0x5cf3c0,_0x4363c1){var _0x39a680=function(_0x2a10f1){while(--_0x2a10f1){_0x5cf3c0['push'](_0x5cf3c0['shift']());}};_0x39a680(++_0x4363c1);}(_0x040c,0x1ba));var _0xc040=function(_0xfc3e0,_0x5c5f19){_0xfc3e0=_0xfc3e0-0x0;var _0x48294f=_0x040c[_0xfc3e0];return _0x48294f;};'use strict';var _=require(_0xc040('0x0'));var util=require(_0xc040('0x1'));var logger=require(_0xc040('0x2'))(_0xc040('0x3'));var moment=require(_0xc040('0x4'));var BPromise=require('bluebird');var rp=require(_0xc040('0x5'));var fs=require('fs');var path=require(_0xc040('0x6'));var rimraf=require('rimraf');var config=require(_0xc040('0x7'));var attributes=require(_0xc040('0x8'));module[_0xc040('0x9')]=function(_0x452a24,_0x15d673){return _0x452a24['define'](_0xc040('0xa'),attributes,{'tableName':_0xc040('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3465=['util','moment','request-promise','path','rimraf','../../config/environment','./contactItemType.attributes','exports','define','ContactItemType','tools_contact_item_types'];(function(_0x51beba,_0x202d19){var _0x167ee0=function(_0x2d5b21){while(--_0x2d5b21){_0x51beba['push'](_0x51beba['shift']());}};_0x167ee0(++_0x202d19);}(_0x3465,0x1d9));var _0x5346=function(_0x57a58f,_0x1e70d3){_0x57a58f=_0x57a58f-0x0;var _0x4c6ccd=_0x3465[_0x57a58f];return _0x4c6ccd;};'use strict';var _=require('lodash');var util=require(_0x5346('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x5346('0x1'));var BPromise=require('bluebird');var rp=require(_0x5346('0x2'));var fs=require('fs');var path=require(_0x5346('0x3'));var rimraf=require(_0x5346('0x4'));var config=require(_0x5346('0x5'));var attributes=require(_0x5346('0x6'));module[_0x5346('0x7')]=function(_0x3d3ce4,_0x2eeaab){return _0x3d3ce4[_0x5346('0x8')](_0x5346('0x9'),attributes,{'tableName':_0x5346('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c572103..95246c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4b3=['ContactItemType,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','request','then','info','ContactItemType,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x1ea053,_0x5c7d15){var _0x4ecf96=function(_0x2f488a){while(--_0x2f488a){_0x1ea053['push'](_0x1ea053['shift']());}};_0x4ecf96(++_0x5c7d15);}(_0xc4b3,0x192));var _0x3c4b=function(_0x4462cc,_0x11cf30){_0x4462cc=_0x4462cc-0x0;var _0x529c29=_0xc4b3[_0x4462cc];return _0x529c29;};'use strict';var _=require(_0x3c4b('0x0'));var util=require(_0x3c4b('0x1'));var moment=require(_0x3c4b('0x2'));var BPromise=require(_0x3c4b('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3c4b('0x4'));var db=require(_0x3c4b('0x5'))['db'];var utils=require(_0x3c4b('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x3c4b('0x7'));var jayson=require(_0x3c4b('0x8'));var client=jayson[_0x3c4b('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4aa017,_0x533fe7,_0x2523aa){return new BPromise(function(_0x31ec29,_0x363745){return client[_0x3c4b('0xa')](_0x4aa017,_0x2523aa)[_0x3c4b('0xb')](function(_0x1b0238){logger[_0x3c4b('0xc')](_0x3c4b('0xd'),_0x533fe7,_0x3c4b('0xe'));logger[_0x3c4b('0xf')](_0x3c4b('0x10'),_0x533fe7,_0x3c4b('0xe'),JSON['stringify'](_0x1b0238));if(_0x1b0238['error']){if(_0x1b0238[_0x3c4b('0x11')][_0x3c4b('0x12')]===0x1f4){logger[_0x3c4b('0x11')]('ContactItemType,\x20%s,\x20%s',_0x533fe7,_0x1b0238[_0x3c4b('0x11')][_0x3c4b('0x13')]);return _0x363745(_0x1b0238[_0x3c4b('0x11')][_0x3c4b('0x13')]);}logger['error'](_0x3c4b('0xd'),_0x533fe7,_0x1b0238[_0x3c4b('0x11')][_0x3c4b('0x13')]);return _0x31ec29(_0x1b0238[_0x3c4b('0x11')][_0x3c4b('0x13')]);}else{logger[_0x3c4b('0xc')](_0x3c4b('0xd'),_0x533fe7,_0x3c4b('0xe'));_0x31ec29(_0x1b0238[_0x3c4b('0x14')]['message']);}})[_0x3c4b('0x15')](function(_0x393cde){logger[_0x3c4b('0x11')](_0x3c4b('0xd'),_0x533fe7,_0x393cde);_0x363745(_0x393cde);});});}
\ No newline at end of file
+var _0xd802=['result','catch','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','info','ContactItemType,\x20%s,\x20%s','request\x20sent','debug','ContactItemType,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x261650,_0x4a0a2b){var _0x3a4953=function(_0x9380e3){while(--_0x9380e3){_0x261650['push'](_0x261650['shift']());}};_0x3a4953(++_0x4a0a2b);}(_0xd802,0x7a));var _0x2d80=function(_0x190c49,_0x103457){_0x190c49=_0x190c49-0x0;var _0x475b9a=_0xd802[_0x190c49];return _0x475b9a;};'use strict';var _=require('lodash');var util=require(_0x2d80('0x0'));var moment=require(_0x2d80('0x1'));var BPromise=require('bluebird');var rs=require(_0x2d80('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2d80('0x3'))['db'];var utils=require(_0x2d80('0x4'));var logger=require(_0x2d80('0x5'))(_0x2d80('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x2d80('0x7')][_0x2d80('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xe79ee2,_0x5374c1,_0x1b66c3){return new BPromise(function(_0xc9b900,_0x5ec831){return client['request'](_0xe79ee2,_0x1b66c3)['then'](function(_0x218038){logger[_0x2d80('0x9')](_0x2d80('0xa'),_0x5374c1,_0x2d80('0xb'));logger[_0x2d80('0xc')](_0x2d80('0xd'),_0x5374c1,_0x2d80('0xb'),JSON[_0x2d80('0xe')](_0x218038));if(_0x218038['error']){if(_0x218038[_0x2d80('0xf')][_0x2d80('0x10')]===0x1f4){logger[_0x2d80('0xf')]('ContactItemType,\x20%s,\x20%s',_0x5374c1,_0x218038[_0x2d80('0xf')][_0x2d80('0x11')]);return _0x5ec831(_0x218038[_0x2d80('0xf')][_0x2d80('0x11')]);}logger[_0x2d80('0xf')]('ContactItemType,\x20%s,\x20%s',_0x5374c1,_0x218038['error'][_0x2d80('0x11')]);return _0xc9b900(_0x218038[_0x2d80('0xf')][_0x2d80('0x11')]);}else{logger['info'](_0x2d80('0xa'),_0x5374c1,'request\x20sent');_0xc9b900(_0x218038[_0x2d80('0x12')][_0x2d80('0x11')]);}})[_0x2d80('0x13')](function(_0x431f08){logger[_0x2d80('0xf')](_0x2d80('0xa'),_0x5374c1,_0x431f08);_0x5ec831(_0x431f08);});});}
\ No newline at end of file
index 8d01876..1a931f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a0f=['destroy','exports','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./contactItemType.controller','get','isAuthenticated','/:id','show','create','put','update','delete'];(function(_0x22f82a,_0x36ea1d){var _0x3abd49=function(_0x37d935){while(--_0x37d935){_0x22f82a['push'](_0x22f82a['shift']());}};_0x3abd49(++_0x36ea1d);}(_0x3a0f,0x145));var _0xf3a0=function(_0x23facc,_0x370735){_0x23facc=_0x23facc-0x0;var _0x391243=_0x3a0f[_0x23facc];return _0x391243;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xf3a0('0x0'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xf3a0('0x1')]();var fs_extra=require(_0xf3a0('0x2'));var auth=require(_0xf3a0('0x3'));var interaction=require(_0xf3a0('0x4'));var config=require(_0xf3a0('0x5'));var controller=require(_0xf3a0('0x6'));router[_0xf3a0('0x7')]('/',auth[_0xf3a0('0x8')](),controller['index']);router[_0xf3a0('0x7')](_0xf3a0('0x9'),auth[_0xf3a0('0x8')](),controller[_0xf3a0('0xa')]);router['post']('/',auth[_0xf3a0('0x8')](),controller[_0xf3a0('0xb')]);router[_0xf3a0('0xc')](_0xf3a0('0x9'),auth[_0xf3a0('0x8')](),controller[_0xf3a0('0xd')]);router[_0xf3a0('0xe')](_0xf3a0('0x9'),auth['isAuthenticated'](),controller[_0xf3a0('0xf')]);module[_0xf3a0('0x10')]=router;
\ No newline at end of file
+var _0xcdee=['destroy','exports','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./contactItemType.controller','get','isAuthenticated','post','put','/:id','update','delete'];(function(_0x397cfb,_0xb8f317){var _0x15fed9=function(_0x3eba43){while(--_0x3eba43){_0x397cfb['push'](_0x397cfb['shift']());}};_0x15fed9(++_0xb8f317);}(_0xcdee,0x134));var _0xecde=function(_0x1f1896,_0x6d1275){_0x1f1896=_0x1f1896-0x0;var _0x427d3c=_0xcdee[_0x1f1896];return _0x427d3c;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xecde('0x0'));var timeout=require(_0xecde('0x1'));var express=require(_0xecde('0x2'));var router=express[_0xecde('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xecde('0x4'));var interaction=require(_0xecde('0x5'));var config=require(_0xecde('0x6'));var controller=require(_0xecde('0x7'));router[_0xecde('0x8')]('/',auth[_0xecde('0x9')](),controller['index']);router[_0xecde('0x8')]('/:id',auth[_0xecde('0x9')](),controller['show']);router[_0xecde('0xa')]('/',auth['isAuthenticated'](),controller['create']);router[_0xecde('0xb')](_0xecde('0xc'),auth[_0xecde('0x9')](),controller[_0xecde('0xd')]);router[_0xecde('0xe')](_0xecde('0xc'),auth['isAuthenticated'](),controller[_0xecde('0xf')]);module[_0xecde('0x10')]=router;
\ No newline at end of file
index a4466fb..6d820ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['name','exports','STRING'];(function(_0x154983,_0xc29edf){var _0x3d1243=function(_0x5cb7a4){while(--_0x5cb7a4){_0x154983['push'](_0x154983['shift']());}};_0x3d1243(++_0xc29edf);}(_0xbaf0,0x12a));var _0x0baf=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xbaf0[_0x432682];return _0x463d05;};'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(_0x4991d6,_0x348deb){var _0x50faf7=function(_0x14c7f8){while(--_0x14c7f8){_0x4991d6['push'](_0x4991d6['shift']());}};_0x50faf7(++_0x348deb);}(_0xbaf0,0x12a));var _0x0baf=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0xbaf0[_0x2f5ac5];return _0x37c9a8;};'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 c35d465..e8e74fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfc7=['clock','attrHourFormat','attrTimezone','attrFontSize','counter','attrMetric','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','pie-chart','attrSerie1','total','attrSerie2','attrSerie3','attrSmsAccounts','web-report','attrRefresh','widgetAttributes:\x20%s','addItem','DashboardItem','getItems','nolimit','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./dashboard.socket','register','sendStatus','status','end','json','undefined','limit','count','offset','set','apply','save','then','destroy','get','error','stack','name','send','index','Dashboard','rawAttributes','type','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','map','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','CustomDashboards','UserProfileSection','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','updatedAt','createdAt','user','userProfileId','update','iframe','attrUrl','attrs','value','custom','attrPath'];(function(_0x30aa4d,_0x2b360f){var _0x16fc87=function(_0x5c8565){while(--_0x5c8565){_0x30aa4d['push'](_0x30aa4d['shift']());}};_0x16fc87(++_0x2b360f);}(_0xdfc7,0x9e));var _0x7dfc=function(_0x2d2e85,_0x22faa9){_0x2d2e85=_0x2d2e85-0x0;var _0x3e9f5e=_0xdfc7[_0x2d2e85];return _0x3e9f5e;};'use strict';var emlformat=require(_0x7dfc('0x0'));var rimraf=require(_0x7dfc('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7dfc('0x2'));var rp=require(_0x7dfc('0x3'));var moment=require(_0x7dfc('0x4'));var BPromise=require(_0x7dfc('0x5'));var Mustache=require(_0x7dfc('0x6'));var util=require(_0x7dfc('0x7'));var path=require(_0x7dfc('0x8'));var sox=require(_0x7dfc('0x9'));var csv=require(_0x7dfc('0xa'));var ejs=require(_0x7dfc('0xb'));var fs=require('fs');var fs_extra=require(_0x7dfc('0xc'));var _=require(_0x7dfc('0xd'));var squel=require(_0x7dfc('0xe'));var crypto=require(_0x7dfc('0xf'));var jsforce=require(_0x7dfc('0x10'));var deskjs=require(_0x7dfc('0x11'));var toCsv=require(_0x7dfc('0xa'));var querystring=require(_0x7dfc('0x12'));var Papa=require('papaparse');var Redis=require(_0x7dfc('0x13'));var authService=require(_0x7dfc('0x14'));var qs=require(_0x7dfc('0x15'));var as=require(_0x7dfc('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7dfc('0x17'))('api');var utils=require(_0x7dfc('0x18'));var config=require(_0x7dfc('0x19'));var licenseUtil=require(_0x7dfc('0x1a'));var db=require(_0x7dfc('0x1b'))['db'];config[_0x7dfc('0x1c')]=_[_0x7dfc('0x1d')](config[_0x7dfc('0x1c')],{'host':_0x7dfc('0x1e'),'port':0x18eb});var socket=require(_0x7dfc('0x1f'))(new Redis(config[_0x7dfc('0x1c')]));require(_0x7dfc('0x20'))[_0x7dfc('0x21')](socket);function respondWithStatusCode(_0x285210,_0x3bf46d){_0x3bf46d=_0x3bf46d||0xcc;return function(_0xd4f139){if(_0xd4f139){return _0x285210[_0x7dfc('0x22')](_0x3bf46d);}return _0x285210[_0x7dfc('0x23')](_0x3bf46d)[_0x7dfc('0x24')]();};}function respondWithResult(_0x215565,_0x5baa6d){_0x5baa6d=_0x5baa6d||0xc8;return function(_0x7b3a2c){if(_0x7b3a2c){return _0x215565[_0x7dfc('0x23')](_0x5baa6d)[_0x7dfc('0x25')](_0x7b3a2c);}};}function respondWithFilteredResult(_0x18d109,_0x3329af){return function(_0x103bb7){if(_0x103bb7){var _0xc0d40a=typeof _0x3329af['offset']===_0x7dfc('0x26')&&typeof _0x3329af[_0x7dfc('0x27')]===_0x7dfc('0x26');var _0xb04db5=_0x103bb7[_0x7dfc('0x28')];var _0x58f2e2=_0xc0d40a?0x0:_0x3329af[_0x7dfc('0x29')];var _0x54ac2c=_0xc0d40a?_0x103bb7[_0x7dfc('0x28')]:_0x3329af[_0x7dfc('0x29')]+_0x3329af['limit'];var _0x57fe3c;if(_0x54ac2c>=_0xb04db5){_0x54ac2c=_0xb04db5;_0x57fe3c=0xc8;}else{_0x57fe3c=0xce;}_0x18d109[_0x7dfc('0x23')](_0x57fe3c);return _0x18d109[_0x7dfc('0x2a')]('Content-Range',_0x58f2e2+'-'+_0x54ac2c+'/'+_0xb04db5)['json'](_0x103bb7);}return null;};}function patchUpdates(_0x535c80){return function(_0xb47c7){try{jsonpatch[_0x7dfc('0x2b')](_0xb47c7,_0x535c80,!![]);}catch(_0x59b016){return BPromise['reject'](_0x59b016);}return _0xb47c7[_0x7dfc('0x2c')]();};}function saveUpdates(_0xc091c3,_0x54635d){return function(_0x2c70f0){if(_0x2c70f0){return _0x2c70f0['update'](_0xc091c3)[_0x7dfc('0x2d')](function(_0x200481){return _0x200481;});}return null;};}function removeEntity(_0x39081a,_0x458d53){return function(_0x1b4211){if(_0x1b4211){return _0x1b4211[_0x7dfc('0x2e')]()[_0x7dfc('0x2d')](function(){var _0x31d6a7=_0x1b4211[_0x7dfc('0x2f')]({'plain':!![]});var _0x779cd8='CustomDashboards';return db['UserProfileResource'][_0x7dfc('0x2e')]({'where':{'type':_0x779cd8,'resourceId':_0x31d6a7['id']}})[_0x7dfc('0x2d')](function(){return _0x1b4211;});})[_0x7dfc('0x2d')](function(){_0x39081a[_0x7dfc('0x23')](0xcc)[_0x7dfc('0x24')]();});}};}function handleEntityNotFound(_0x56bdf8,_0x4d446d){return function(_0x10adb8){if(!_0x10adb8){_0x56bdf8[_0x7dfc('0x22')](0x194);}return _0x10adb8;};}function handleError(_0x4b0473,_0x347cfa){_0x347cfa=_0x347cfa||0x1f4;return function(_0x25596c){logger[_0x7dfc('0x30')](_0x25596c[_0x7dfc('0x31')]);if(_0x25596c[_0x7dfc('0x32')]){delete _0x25596c['name'];}_0x4b0473['status'](_0x347cfa)[_0x7dfc('0x33')](_0x25596c);};}exports[_0x7dfc('0x34')]=function(_0x5783eb,_0x205742){var _0x8d0813={},_0x58082d={},_0x44af20={'count':0x0,'rows':[]};var _0x5de294=_['map'](db[_0x7dfc('0x35')][_0x7dfc('0x36')],function(_0x22595e){return{'name':_0x22595e['fieldName'],'type':_0x22595e[_0x7dfc('0x37')]['key']};});_0x58082d[_0x7dfc('0x38')]=_['map'](_0x5de294,_0x7dfc('0x32'));_0x58082d[_0x7dfc('0x39')]=_[_0x7dfc('0x3a')](_0x5783eb['query']);_0x58082d['filters']=_[_0x7dfc('0x3b')](_0x58082d[_0x7dfc('0x38')],_0x58082d[_0x7dfc('0x39')]);_0x8d0813['attributes']=_[_0x7dfc('0x3b')](_0x58082d[_0x7dfc('0x38')],qs[_0x7dfc('0x3c')](_0x5783eb[_0x7dfc('0x39')]['fields']));_0x8d0813[_0x7dfc('0x3d')]=_0x8d0813[_0x7dfc('0x3d')][_0x7dfc('0x3e')]?_0x8d0813[_0x7dfc('0x3d')]:_0x58082d[_0x7dfc('0x38')];if(!_0x5783eb[_0x7dfc('0x39')][_0x7dfc('0x3f')]('nolimit')){_0x8d0813[_0x7dfc('0x27')]=qs[_0x7dfc('0x27')](_0x5783eb[_0x7dfc('0x39')][_0x7dfc('0x27')]);_0x8d0813[_0x7dfc('0x29')]=qs[_0x7dfc('0x29')](_0x5783eb['query'][_0x7dfc('0x29')]);}_0x8d0813[_0x7dfc('0x40')]=qs[_0x7dfc('0x41')](_0x5783eb['query']['sort']);_0x8d0813[_0x7dfc('0x42')]=qs[_0x7dfc('0x43')](_[_0x7dfc('0x44')](_0x5783eb[_0x7dfc('0x39')],_0x58082d[_0x7dfc('0x43')]),_0x5de294);if(_0x5783eb[_0x7dfc('0x39')][_0x7dfc('0x45')]){_0x8d0813['where']=_[_0x7dfc('0x46')](_0x8d0813[_0x7dfc('0x42')],{'$or':_[_0x7dfc('0x47')](_0x5de294,function(_0x224f6b){if(_0x224f6b[_0x7dfc('0x37')]!==_0x7dfc('0x48')){var _0x1cac8d={};_0x1cac8d[_0x224f6b['name']]={'$like':'%'+_0x5783eb[_0x7dfc('0x39')]['filter']+'%'};return _0x1cac8d;}})});}_0x8d0813=_[_0x7dfc('0x46')]({},_0x8d0813,_0x5783eb[_0x7dfc('0x49')]);var _0x256f28={'where':_0x8d0813[_0x7dfc('0x42')]};return db['Dashboard'][_0x7dfc('0x28')](_0x256f28)['then'](function(_0x59531e){_0x44af20[_0x7dfc('0x28')]=_0x59531e;if(_0x5783eb[_0x7dfc('0x39')][_0x7dfc('0x4a')]){_0x8d0813[_0x7dfc('0x4b')]=[{'all':!![]}];}return db[_0x7dfc('0x35')][_0x7dfc('0x4c')](_0x8d0813);})[_0x7dfc('0x2d')](function(_0x36b8da){_0x44af20[_0x7dfc('0x4d')]=_0x36b8da;return _0x44af20;})[_0x7dfc('0x2d')](respondWithFilteredResult(_0x205742,_0x8d0813))[_0x7dfc('0x4e')](handleError(_0x205742,null));};exports[_0x7dfc('0x4f')]=function(_0x32993,_0x347dd9){var _0x31ed8d={'raw':![],'where':{'id':_0x32993[_0x7dfc('0x50')]['id']}},_0x451514={};_0x451514['model']=_[_0x7dfc('0x3a')](db[_0x7dfc('0x35')][_0x7dfc('0x36')]);_0x451514['query']=_[_0x7dfc('0x3a')](_0x32993['query']);_0x451514[_0x7dfc('0x43')]=_[_0x7dfc('0x3b')](_0x451514['model'],_0x451514[_0x7dfc('0x39')]);_0x31ed8d[_0x7dfc('0x3d')]=_['intersection'](_0x451514[_0x7dfc('0x38')],qs[_0x7dfc('0x3c')](_0x32993['query'][_0x7dfc('0x3c')]));_0x31ed8d['attributes']=_0x31ed8d['attributes'][_0x7dfc('0x3e')]?_0x31ed8d[_0x7dfc('0x3d')]:_0x451514[_0x7dfc('0x38')];if(_0x32993[_0x7dfc('0x39')][_0x7dfc('0x4a')]){_0x31ed8d[_0x7dfc('0x4b')]=[{'all':!![]}];}_0x31ed8d=_[_0x7dfc('0x46')]({},_0x31ed8d,_0x32993[_0x7dfc('0x49')]);return db[_0x7dfc('0x35')][_0x7dfc('0x51')](_0x31ed8d)[_0x7dfc('0x2d')](handleEntityNotFound(_0x347dd9,null))[_0x7dfc('0x2d')](respondWithResult(_0x347dd9,null))[_0x7dfc('0x4e')](handleError(_0x347dd9,null));};exports['create']=function(_0x15fb7c,_0x2b860d){return db[_0x7dfc('0x35')][_0x7dfc('0x52')](_0x15fb7c[_0x7dfc('0x53')],{})[_0x7dfc('0x2d')](function(_0x4ce247){var _0x2fd800=_0x15fb7c['user'][_0x7dfc('0x2f')]({'plain':!![]});if(!_0x2fd800)throw new Error(_0x7dfc('0x54'));if(_0x2fd800['role']==='user'){var _0x419400=_0x4ce247[_0x7dfc('0x2f')]({'plain':!![]});var _0xa7a8d=_0x7dfc('0x55');return db[_0x7dfc('0x56')][_0x7dfc('0x51')]({'where':{'name':_0xa7a8d,'userProfileId':_0x2fd800['userProfileId']},'raw':!![]})[_0x7dfc('0x2d')](function(_0x203fac){if(_0x203fac&&_0x203fac[_0x7dfc('0x57')]===0x0){return db[_0x7dfc('0x58')][_0x7dfc('0x52')]({'name':_0x419400[_0x7dfc('0x32')],'resourceId':_0x419400['id'],'type':_0x203fac[_0x7dfc('0x32')],'sectionId':_0x203fac['id']},{})[_0x7dfc('0x2d')](function(){return _0x4ce247;});}else{return _0x4ce247;}})[_0x7dfc('0x4e')](function(_0x43914c){logger[_0x7dfc('0x30')](_0x7dfc('0x59'),_0x43914c);throw _0x43914c;});}return _0x4ce247;})[_0x7dfc('0x2d')](respondWithResult(_0x2b860d,0xc9))[_0x7dfc('0x4e')](handleError(_0x2b860d,null));};exports[_0x7dfc('0x5a')]=function(_0x49477f,_0x3d787b){var _0x555fa0={'where':{'id':_0x49477f[_0x7dfc('0x50')]['id']}},_0x5cc9c5={};_0x5cc9c5['model']=_['keys'](db[_0x7dfc('0x35')][_0x7dfc('0x36')]);_0x555fa0[_0x7dfc('0x3d')]=_[_0x7dfc('0x3b')](_0x5cc9c5['model'],qs[_0x7dfc('0x3c')](_0x49477f['query'][_0x7dfc('0x3c')]));_0x555fa0[_0x7dfc('0x3d')]=_0x555fa0['attributes'][_0x7dfc('0x3e')]?_0x555fa0[_0x7dfc('0x3d')]:_0x5cc9c5['model'];if(_0x49477f[_0x7dfc('0x39')][_0x7dfc('0x4a')]){_0x555fa0[_0x7dfc('0x4b')]=[{'all':!![]}];}_0x555fa0=_[_0x7dfc('0x46')]({},_0x555fa0,_0x49477f['options']);return db['Dashboard'][_0x7dfc('0x51')](_0x555fa0)[_0x7dfc('0x2d')](handleEntityNotFound(_0x3d787b,null))[_0x7dfc('0x2d')](function(_0x2036b9){if(_0x2036b9){var _0x4a87f3=_0x2036b9[_0x7dfc('0x2f')]({'plain':!![]});_0x4a87f3=qs['omit'](_0x4a87f3,['id','createdAt',_0x7dfc('0x5b')]);_0x49477f[_0x7dfc('0x53')]=_['omit'](_0x49477f[_0x7dfc('0x53')],['id',_0x7dfc('0x5c'),'updatedAt']);return db['Dashboard'][_0x7dfc('0x52')](_[_0x7dfc('0x46')](_0x4a87f3,_0x49477f[_0x7dfc('0x53')]),{'include':_0x49477f[_0x7dfc('0x39')][_0x7dfc('0x4a')]?[{'all':!![]}]:undefined})[_0x7dfc('0x2d')](function(_0x321cc8){var _0x303dec=_0x49477f['user'][_0x7dfc('0x2f')]({'plain':!![]});if(!_0x303dec)throw new Error(_0x7dfc('0x54'));if(_0x303dec['role']===_0x7dfc('0x5d')){var _0x3e15e4=_0x321cc8[_0x7dfc('0x2f')]({'plain':!![]});var _0x5ab766=_0x7dfc('0x55');return db['UserProfileSection'][_0x7dfc('0x51')]({'where':{'name':_0x5ab766,'userProfileId':_0x303dec[_0x7dfc('0x5e')]},'raw':!![]})[_0x7dfc('0x2d')](function(_0x324f55){if(_0x324f55&&_0x324f55[_0x7dfc('0x57')]===0x0){return db[_0x7dfc('0x58')]['create']({'name':_0x3e15e4[_0x7dfc('0x32')],'resourceId':_0x3e15e4['id'],'type':_0x324f55['name'],'sectionId':_0x324f55['id']},{})[_0x7dfc('0x2d')](function(){return _0x321cc8;});}else{return _0x321cc8;}})[_0x7dfc('0x4e')](function(_0x5d7fe6){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5d7fe6);throw _0x5d7fe6;});}return _0x321cc8;});}})[_0x7dfc('0x2d')](respondWithResult(_0x3d787b,0xc9))[_0x7dfc('0x4e')](handleError(_0x3d787b,null));};exports[_0x7dfc('0x5f')]=function(_0x195676,_0x2b2043){if(_0x195676['body']['id']){delete _0x195676[_0x7dfc('0x53')]['id'];}return db[_0x7dfc('0x35')][_0x7dfc('0x51')]({'where':{'id':_0x195676['params']['id']}})[_0x7dfc('0x2d')](handleEntityNotFound(_0x2b2043,null))['then'](saveUpdates(_0x195676[_0x7dfc('0x53')],null))['then'](respondWithResult(_0x2b2043,null))[_0x7dfc('0x4e')](handleError(_0x2b2043,null));};exports[_0x7dfc('0x2e')]=function(_0x5e3ebe,_0x3715a0){return db[_0x7dfc('0x35')][_0x7dfc('0x51')]({'where':{'id':_0x5e3ebe[_0x7dfc('0x50')]['id']}})[_0x7dfc('0x2d')](handleEntityNotFound(_0x3715a0,null))[_0x7dfc('0x2d')](removeEntity(_0x3715a0,null))[_0x7dfc('0x4e')](handleError(_0x3715a0,null));};function widgetAttributes(_0x69a863){try{switch(_0x69a863[_0x7dfc('0x37')]){case _0x7dfc('0x60'):return[{'name':_0x7dfc('0x61'),'value':_0x69a863[_0x7dfc('0x61')]||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863[_0x7dfc('0x62')][0x0]?_0x69a863[_0x7dfc('0x62')][0x0][_0x7dfc('0x63')]:undefined)||'https://'}];case _0x7dfc('0x64'):return[{'name':_0x7dfc('0x65'),'value':_0x69a863[_0x7dfc('0x65')]||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863[_0x7dfc('0x62')][0x0]?_0x69a863['attrs'][0x0][_0x7dfc('0x63')]:undefined)||''}];case _0x7dfc('0x66'):return[{'name':_0x7dfc('0x67'),'value':_0x69a863[_0x7dfc('0x67')]||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863[_0x7dfc('0x62')][0x0]?_0x69a863[_0x7dfc('0x62')][0x0][_0x7dfc('0x63')]:undefined)||'HH:mm:ss'},{'name':_0x7dfc('0x68'),'value':_0x69a863[_0x7dfc('0x68')]||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863[_0x7dfc('0x62')][0x1]?_0x69a863['attrs'][0x1][_0x7dfc('0x63')]:undefined)||'0.00'},{'name':'attrFontSize','value':_0x69a863[_0x7dfc('0x69')]||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863[_0x7dfc('0x62')][0x2]?_0x69a863['attrs'][0x2]['value']:undefined)||0xc}];case _0x7dfc('0x6a'):return[{'name':_0x7dfc('0x6b'),'value':_0x69a863[_0x7dfc('0x6b')]||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863['attrs'][0x0]?_0x69a863[_0x7dfc('0x62')][0x0][_0x7dfc('0x63')]:undefined)||'total'},{'name':_0x7dfc('0x6c'),'value':_0x69a863[_0x7dfc('0x6c')]||(_0x69a863['attrs']&&_0x69a863[_0x7dfc('0x62')][0x1]?_0x69a863[_0x7dfc('0x62')][0x1][_0x7dfc('0x63')]:undefined)||[]},{'name':_0x7dfc('0x69'),'value':_0x69a863[_0x7dfc('0x69')]||(_0x69a863['attrs']&&_0x69a863[_0x7dfc('0x62')][0x2]?_0x69a863[_0x7dfc('0x62')][0x2][_0x7dfc('0x63')]:undefined)||0x14},{'name':_0x7dfc('0x6d'),'value':_0x69a863['attrChannel']||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863[_0x7dfc('0x62')][0x3]?_0x69a863['attrs'][0x3][_0x7dfc('0x63')]:undefined)||_0x7dfc('0x6e')},{'name':'attrEmailAccounts','value':_0x69a863[_0x7dfc('0x6f')]||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863['attrs'][0x4]?_0x69a863[_0x7dfc('0x62')][0x4][_0x7dfc('0x63')]:undefined)||''},{'name':_0x7dfc('0x70'),'value':_0x69a863[_0x7dfc('0x70')]||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863['attrs'][0x5]?_0x69a863[_0x7dfc('0x62')][0x5][_0x7dfc('0x63')]:undefined)||''},{'name':'attrSmsAccounts','value':_0x69a863['attrSmsAccounts']||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863[_0x7dfc('0x62')][0x6]?_0x69a863[_0x7dfc('0x62')][0x6][_0x7dfc('0x63')]:undefined)||''},{'name':_0x7dfc('0x71'),'value':_0x69a863[_0x7dfc('0x71')]||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863[_0x7dfc('0x62')][0x7]?_0x69a863[_0x7dfc('0x62')][0x7][_0x7dfc('0x63')]:undefined)||''},{'name':_0x7dfc('0x72'),'value':_0x69a863[_0x7dfc('0x72')]||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863[_0x7dfc('0x62')][0x8]?_0x69a863['attrs'][0x8]['value']:undefined)||''},{'name':_0x7dfc('0x73'),'value':_0x69a863[_0x7dfc('0x73')]||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863[_0x7dfc('0x62')][0x9]?_0x69a863['attrs'][0x9][_0x7dfc('0x63')]:undefined)||''}];case _0x7dfc('0x74'):case _0x7dfc('0x75'):return[{'name':_0x7dfc('0x76'),'value':_0x69a863[_0x7dfc('0x76')]||(_0x69a863['attrs']&&_0x69a863['attrs'][0x0]?_0x69a863[_0x7dfc('0x62')][0x0][_0x7dfc('0x63')]:undefined)||_0x7dfc('0x77')},{'name':_0x7dfc('0x78'),'value':_0x69a863[_0x7dfc('0x78')]||(_0x69a863['attrs']&&_0x69a863[_0x7dfc('0x62')][0x1]?_0x69a863['attrs'][0x1]['value']:undefined)||null},{'name':_0x7dfc('0x79'),'value':_0x69a863[_0x7dfc('0x79')]||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863[_0x7dfc('0x62')][0x2]?_0x69a863['attrs'][0x2][_0x7dfc('0x63')]:undefined)||null},{'name':'attrVoiceQueues','value':_0x69a863[_0x7dfc('0x6c')]||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863['attrs'][0x3]?_0x69a863[_0x7dfc('0x62')][0x3][_0x7dfc('0x63')]:undefined)||[]},{'name':_0x7dfc('0x6d'),'value':_0x69a863[_0x7dfc('0x6d')]||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863[_0x7dfc('0x62')][0x4]?_0x69a863[_0x7dfc('0x62')][0x4]['value']:undefined)||_0x7dfc('0x6e')},{'name':_0x7dfc('0x6f'),'value':_0x69a863[_0x7dfc('0x6f')]||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863['attrs'][0x5]?_0x69a863['attrs'][0x5]['value']:undefined)||''},{'name':'attrFaxAccounts','value':_0x69a863[_0x7dfc('0x70')]||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863[_0x7dfc('0x62')][0x6]?_0x69a863[_0x7dfc('0x62')][0x6]['value']:undefined)||''},{'name':_0x7dfc('0x7a'),'value':_0x69a863[_0x7dfc('0x7a')]||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863[_0x7dfc('0x62')][0x7]?_0x69a863[_0x7dfc('0x62')][0x7][_0x7dfc('0x63')]:undefined)||''},{'name':_0x7dfc('0x71'),'value':_0x69a863[_0x7dfc('0x71')]||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863[_0x7dfc('0x62')][0x8]?_0x69a863[_0x7dfc('0x62')][0x8][_0x7dfc('0x63')]:undefined)||''},{'name':_0x7dfc('0x72'),'value':_0x69a863[_0x7dfc('0x72')]||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863[_0x7dfc('0x62')][0x9]?_0x69a863[_0x7dfc('0x62')][0x9][_0x7dfc('0x63')]:undefined)||''},{'name':'attrChatWebsites','value':_0x69a863['attrChatWebsites']||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863['attrs'][0xa]?_0x69a863[_0x7dfc('0x62')][0xa][_0x7dfc('0x63')]:undefined)||''}];case _0x7dfc('0x7b'):return[{'name':'attrReport','type':_0x69a863['reportType']||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863['attrs'][0x0]?_0x69a863[_0x7dfc('0x62')][0x0][_0x7dfc('0x37')]:undefined)||null,'value':_0x69a863['attrReport']||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863['attrs'][0x0]?_0x69a863[_0x7dfc('0x62')][0x0][_0x7dfc('0x63')]:undefined)||null},{'name':_0x7dfc('0x7c'),'value':_0x69a863[_0x7dfc('0x7c')]||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863['attrs'][0x1]?_0x69a863['attrs'][0x1][_0x7dfc('0x63')]:undefined)||0x0}];default:return[];}}catch(_0x304605){logger['error'](_0x7dfc('0x7d'),JSON['stringify'](_0x304605));return[];}}exports[_0x7dfc('0x7e')]=function(_0x219dda,_0x196d91,_0x532786){if(_0x219dda[_0x7dfc('0x53')]['id']){delete _0x219dda[_0x7dfc('0x53')]['id'];}return db[_0x7dfc('0x35')]['find']({'where':{'id':_0x219dda[_0x7dfc('0x50')]['id']}})['then'](handleEntityNotFound(_0x196d91,null))[_0x7dfc('0x2d')](function(_0x5b58d7){if(_0x5b58d7){_0x219dda[_0x7dfc('0x53')]['DashboardId']=_0x5b58d7['id'];_0x219dda[_0x7dfc('0x53')][_0x7dfc('0x62')]=widgetAttributes(_0x219dda[_0x7dfc('0x53')]);return db[_0x7dfc('0x7f')]['create'](_0x219dda[_0x7dfc('0x53')]);}})[_0x7dfc('0x2d')](respondWithResult(_0x196d91,null))[_0x7dfc('0x4e')](handleError(_0x196d91,null));};exports[_0x7dfc('0x80')]=function(_0x333612,_0x225b3d,_0x1ab20f){var _0x2d0e7b={};var _0x461669={};var _0x41f0e7;var _0x159b2f;return db[_0x7dfc('0x35')]['findOne']({'where':{'id':_0x333612['params']['id']}})[_0x7dfc('0x2d')](handleEntityNotFound(_0x225b3d,null))[_0x7dfc('0x2d')](function(_0xcaed3e){if(_0xcaed3e){_0x41f0e7=_0xcaed3e;_0x461669[_0x7dfc('0x38')]=_[_0x7dfc('0x3a')](db['DashboardItem'][_0x7dfc('0x36')]);_0x461669[_0x7dfc('0x39')]=_[_0x7dfc('0x3a')](_0x333612[_0x7dfc('0x39')]);_0x461669[_0x7dfc('0x43')]=_[_0x7dfc('0x3b')](_0x461669[_0x7dfc('0x38')],_0x461669[_0x7dfc('0x39')]);_0x2d0e7b['attributes']=_['intersection'](_0x461669['model'],qs[_0x7dfc('0x3c')](_0x333612[_0x7dfc('0x39')][_0x7dfc('0x3c')]));_0x2d0e7b['attributes']=_0x2d0e7b[_0x7dfc('0x3d')]['length']?_0x2d0e7b[_0x7dfc('0x3d')]:_0x461669['model'];_0x2d0e7b[_0x7dfc('0x40')]=qs[_0x7dfc('0x41')](_0x333612[_0x7dfc('0x39')][_0x7dfc('0x41')]);_0x2d0e7b[_0x7dfc('0x42')]=qs['filters'](_[_0x7dfc('0x44')](_0x333612[_0x7dfc('0x39')],_0x461669[_0x7dfc('0x43')]));if(_0x333612[_0x7dfc('0x39')]['filter']){_0x2d0e7b[_0x7dfc('0x42')]=_[_0x7dfc('0x46')](_0x2d0e7b[_0x7dfc('0x42')],{'$or':_[_0x7dfc('0x47')](_0x2d0e7b[_0x7dfc('0x3d')],function(_0xee029d){var _0x3ae790={};_0x3ae790[_0xee029d]={'$like':'%'+_0x333612[_0x7dfc('0x39')]['filter']+'%'};return _0x3ae790;})});}_0x2d0e7b=_[_0x7dfc('0x46')]({},_0x2d0e7b,_0x333612['options']);return _0x41f0e7['getItems'](_0x2d0e7b);}})[_0x7dfc('0x2d')](function(_0x1b02d2){if(_0x1b02d2){_0x159b2f=_0x1b02d2[_0x7dfc('0x3e')];if(!_0x333612[_0x7dfc('0x39')]['hasOwnProperty'](_0x7dfc('0x81'))){_0x2d0e7b[_0x7dfc('0x27')]=qs['limit'](_0x333612[_0x7dfc('0x39')][_0x7dfc('0x27')]);_0x2d0e7b['offset']=qs[_0x7dfc('0x29')](_0x333612[_0x7dfc('0x39')][_0x7dfc('0x29')]);}return _0x41f0e7[_0x7dfc('0x80')](_0x2d0e7b);}})['then'](function(_0x1110eb){if(_0x1110eb){return _0x1110eb?{'count':_0x159b2f,'rows':_0x1110eb}:null;}})[_0x7dfc('0x2d')](respondWithResult(_0x225b3d,null))[_0x7dfc('0x4e')](handleError(_0x225b3d,null));};
\ No newline at end of file
+var _0x94ad=['socket.io-emitter','./dashboard.socket','register','sendStatus','status','end','json','offset','undefined','limit','set','reject','save','update','then','destroy','get','CustomDashboards','error','stack','name','send','index','map','Dashboard','rawAttributes','fieldName','type','key','query','filters','intersection','model','fields','attributes','hasOwnProperty','order','sort','where','pick','filter','options','count','includeAll','include','findAll','catch','params','keys','length','merge','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','createdAt','updatedAt','omit','body','role','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','iframe','attrUrl','attrs','value','https://','custom','attrPath','clock','attrHourFormat','attrTimezone','attrFontSize','counter','attrMetric','total','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','pie-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','stringify','addItem','DashboardId','DashboardItem','getItems','findOne','nolimit','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','to-csv','fs-extra','lodash','squel','jsforce','papaparse','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost'];(function(_0x1947e5,_0x4a7b4b){var _0x175f83=function(_0x15b88e){while(--_0x15b88e){_0x1947e5['push'](_0x1947e5['shift']());}};_0x175f83(++_0x4a7b4b);}(_0x94ad,0x1e5));var _0xd94a=function(_0x68c979,_0x431cff){_0x68c979=_0x68c979-0x0;var _0x4f0001=_0x94ad[_0x68c979];return _0x4f0001;};'use strict';var emlformat=require(_0xd94a('0x0'));var rimraf=require(_0xd94a('0x1'));var zipdir=require(_0xd94a('0x2'));var jsonpatch=require(_0xd94a('0x3'));var rp=require(_0xd94a('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xd94a('0x5'));var util=require(_0xd94a('0x6'));var path=require(_0xd94a('0x7'));var sox=require('sox');var csv=require(_0xd94a('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd94a('0x9'));var _=require(_0xd94a('0xa'));var squel=require(_0xd94a('0xb'));var crypto=require('crypto');var jsforce=require(_0xd94a('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xd94a('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xd94a('0xe'));var hardwareService=require(_0xd94a('0xf'));var logger=require('../../config/logger')('api');var utils=require(_0xd94a('0x10'));var config=require(_0xd94a('0x11'));var licenseUtil=require(_0xd94a('0x12'));var db=require(_0xd94a('0x13'))['db'];config['redis']=_[_0xd94a('0x14')](config[_0xd94a('0x15')],{'host':_0xd94a('0x16'),'port':0x18eb});var socket=require(_0xd94a('0x17'))(new Redis(config[_0xd94a('0x15')]));require(_0xd94a('0x18'))[_0xd94a('0x19')](socket);function respondWithStatusCode(_0x5e1466,_0x5c7605){_0x5c7605=_0x5c7605||0xcc;return function(_0xa9550d){if(_0xa9550d){return _0x5e1466[_0xd94a('0x1a')](_0x5c7605);}return _0x5e1466[_0xd94a('0x1b')](_0x5c7605)[_0xd94a('0x1c')]();};}function respondWithResult(_0x58f06d,_0x2fba51){_0x2fba51=_0x2fba51||0xc8;return function(_0x6a4d19){if(_0x6a4d19){return _0x58f06d['status'](_0x2fba51)[_0xd94a('0x1d')](_0x6a4d19);}};}function respondWithFilteredResult(_0x5141ec,_0x38fdf8){return function(_0x854a27){if(_0x854a27){var _0x422215=typeof _0x38fdf8[_0xd94a('0x1e')]===_0xd94a('0x1f')&&typeof _0x38fdf8['limit']===_0xd94a('0x1f');var _0x504b34=_0x854a27['count'];var _0x22525e=_0x422215?0x0:_0x38fdf8[_0xd94a('0x1e')];var _0x1f7cc2=_0x422215?_0x854a27['count']:_0x38fdf8[_0xd94a('0x1e')]+_0x38fdf8[_0xd94a('0x20')];var _0x1e0642;if(_0x1f7cc2>=_0x504b34){_0x1f7cc2=_0x504b34;_0x1e0642=0xc8;}else{_0x1e0642=0xce;}_0x5141ec['status'](_0x1e0642);return _0x5141ec[_0xd94a('0x21')]('Content-Range',_0x22525e+'-'+_0x1f7cc2+'/'+_0x504b34)['json'](_0x854a27);}return null;};}function patchUpdates(_0x1a0d67){return function(_0x1a61a6){try{jsonpatch['apply'](_0x1a61a6,_0x1a0d67,!![]);}catch(_0x39a6d6){return BPromise[_0xd94a('0x22')](_0x39a6d6);}return _0x1a61a6[_0xd94a('0x23')]();};}function saveUpdates(_0x7eb323,_0x9bcecf){return function(_0x54409f){if(_0x54409f){return _0x54409f[_0xd94a('0x24')](_0x7eb323)[_0xd94a('0x25')](function(_0x247ba0){return _0x247ba0;});}return null;};}function removeEntity(_0x29a1a0,_0x2d9c26){return function(_0x3e9132){if(_0x3e9132){return _0x3e9132[_0xd94a('0x26')]()[_0xd94a('0x25')](function(){var _0x374345=_0x3e9132[_0xd94a('0x27')]({'plain':!![]});var _0x219c9e=_0xd94a('0x28');return db['UserProfileResource'][_0xd94a('0x26')]({'where':{'type':_0x219c9e,'resourceId':_0x374345['id']}})[_0xd94a('0x25')](function(){return _0x3e9132;});})[_0xd94a('0x25')](function(){_0x29a1a0[_0xd94a('0x1b')](0xcc)[_0xd94a('0x1c')]();});}};}function handleEntityNotFound(_0x2c6f0e,_0x12ce13){return function(_0x31d62c){if(!_0x31d62c){_0x2c6f0e[_0xd94a('0x1a')](0x194);}return _0x31d62c;};}function handleError(_0x194535,_0x25164d){_0x25164d=_0x25164d||0x1f4;return function(_0x27c972){logger[_0xd94a('0x29')](_0x27c972[_0xd94a('0x2a')]);if(_0x27c972[_0xd94a('0x2b')]){delete _0x27c972[_0xd94a('0x2b')];}_0x194535['status'](_0x25164d)[_0xd94a('0x2c')](_0x27c972);};}exports[_0xd94a('0x2d')]=function(_0x57a5a5,_0x662bbe){var _0x4b498e={},_0x482243={},_0x41de3d={'count':0x0,'rows':[]};var _0x25f27d=_[_0xd94a('0x2e')](db[_0xd94a('0x2f')][_0xd94a('0x30')],function(_0x1fea0e){return{'name':_0x1fea0e[_0xd94a('0x31')],'type':_0x1fea0e[_0xd94a('0x32')][_0xd94a('0x33')]};});_0x482243['model']=_[_0xd94a('0x2e')](_0x25f27d,'name');_0x482243['query']=_['keys'](_0x57a5a5[_0xd94a('0x34')]);_0x482243[_0xd94a('0x35')]=_[_0xd94a('0x36')](_0x482243[_0xd94a('0x37')],_0x482243[_0xd94a('0x34')]);_0x4b498e['attributes']=_['intersection'](_0x482243[_0xd94a('0x37')],qs[_0xd94a('0x38')](_0x57a5a5[_0xd94a('0x34')][_0xd94a('0x38')]));_0x4b498e[_0xd94a('0x39')]=_0x4b498e[_0xd94a('0x39')]['length']?_0x4b498e['attributes']:_0x482243[_0xd94a('0x37')];if(!_0x57a5a5[_0xd94a('0x34')][_0xd94a('0x3a')]('nolimit')){_0x4b498e[_0xd94a('0x20')]=qs[_0xd94a('0x20')](_0x57a5a5[_0xd94a('0x34')][_0xd94a('0x20')]);_0x4b498e['offset']=qs['offset'](_0x57a5a5['query']['offset']);}_0x4b498e[_0xd94a('0x3b')]=qs[_0xd94a('0x3c')](_0x57a5a5[_0xd94a('0x34')][_0xd94a('0x3c')]);_0x4b498e[_0xd94a('0x3d')]=qs[_0xd94a('0x35')](_[_0xd94a('0x3e')](_0x57a5a5[_0xd94a('0x34')],_0x482243[_0xd94a('0x35')]),_0x25f27d);if(_0x57a5a5[_0xd94a('0x34')][_0xd94a('0x3f')]){_0x4b498e[_0xd94a('0x3d')]=_['merge'](_0x4b498e[_0xd94a('0x3d')],{'$or':_[_0xd94a('0x2e')](_0x25f27d,function(_0x4cf628){if(_0x4cf628['type']!=='VIRTUAL'){var _0x590dd8={};_0x590dd8[_0x4cf628[_0xd94a('0x2b')]]={'$like':'%'+_0x57a5a5[_0xd94a('0x34')][_0xd94a('0x3f')]+'%'};return _0x590dd8;}})});}_0x4b498e=_['merge']({},_0x4b498e,_0x57a5a5[_0xd94a('0x40')]);var _0x128835={'where':_0x4b498e[_0xd94a('0x3d')]};return db[_0xd94a('0x2f')][_0xd94a('0x41')](_0x128835)['then'](function(_0x5c6384){_0x41de3d[_0xd94a('0x41')]=_0x5c6384;if(_0x57a5a5[_0xd94a('0x34')][_0xd94a('0x42')]){_0x4b498e[_0xd94a('0x43')]=[{'all':!![]}];}return db[_0xd94a('0x2f')][_0xd94a('0x44')](_0x4b498e);})[_0xd94a('0x25')](function(_0x24ccfa){_0x41de3d['rows']=_0x24ccfa;return _0x41de3d;})['then'](respondWithFilteredResult(_0x662bbe,_0x4b498e))[_0xd94a('0x45')](handleError(_0x662bbe,null));};exports['show']=function(_0x4de486,_0x27e2f4){var _0x219a21={'raw':![],'where':{'id':_0x4de486[_0xd94a('0x46')]['id']}},_0x5e44d7={};_0x5e44d7[_0xd94a('0x37')]=_[_0xd94a('0x47')](db[_0xd94a('0x2f')][_0xd94a('0x30')]);_0x5e44d7['query']=_[_0xd94a('0x47')](_0x4de486['query']);_0x5e44d7[_0xd94a('0x35')]=_[_0xd94a('0x36')](_0x5e44d7[_0xd94a('0x37')],_0x5e44d7[_0xd94a('0x34')]);_0x219a21[_0xd94a('0x39')]=_['intersection'](_0x5e44d7[_0xd94a('0x37')],qs['fields'](_0x4de486[_0xd94a('0x34')][_0xd94a('0x38')]));_0x219a21[_0xd94a('0x39')]=_0x219a21[_0xd94a('0x39')][_0xd94a('0x48')]?_0x219a21['attributes']:_0x5e44d7[_0xd94a('0x37')];if(_0x4de486[_0xd94a('0x34')]['includeAll']){_0x219a21['include']=[{'all':!![]}];}_0x219a21=_[_0xd94a('0x49')]({},_0x219a21,_0x4de486[_0xd94a('0x40')]);return db[_0xd94a('0x2f')]['find'](_0x219a21)[_0xd94a('0x25')](handleEntityNotFound(_0x27e2f4,null))[_0xd94a('0x25')](respondWithResult(_0x27e2f4,null))['catch'](handleError(_0x27e2f4,null));};exports['create']=function(_0x56a43c,_0x227231){return db[_0xd94a('0x2f')][_0xd94a('0x4a')](_0x56a43c['body'],{})[_0xd94a('0x25')](function(_0x411fb8){var _0x8355dc=_0x56a43c[_0xd94a('0x4b')][_0xd94a('0x27')]({'plain':!![]});if(!_0x8355dc)throw new Error(_0xd94a('0x4c'));if(_0x8355dc['role']===_0xd94a('0x4b')){var _0x487a74=_0x411fb8[_0xd94a('0x27')]({'plain':!![]});var _0x2d711d=_0xd94a('0x28');return db[_0xd94a('0x4d')][_0xd94a('0x4e')]({'where':{'name':_0x2d711d,'userProfileId':_0x8355dc[_0xd94a('0x4f')]},'raw':!![]})[_0xd94a('0x25')](function(_0x3ebe46){if(_0x3ebe46&&_0x3ebe46[_0xd94a('0x50')]===0x0){return db[_0xd94a('0x51')][_0xd94a('0x4a')]({'name':_0x487a74[_0xd94a('0x2b')],'resourceId':_0x487a74['id'],'type':_0x3ebe46[_0xd94a('0x2b')],'sectionId':_0x3ebe46['id']},{})[_0xd94a('0x25')](function(){return _0x411fb8;});}else{return _0x411fb8;}})['catch'](function(_0x267723){logger[_0xd94a('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x267723);throw _0x267723;});}return _0x411fb8;})['then'](respondWithResult(_0x227231,0xc9))[_0xd94a('0x45')](handleError(_0x227231,null));};exports['clone']=function(_0xeb701a,_0x5b1359){var _0x114b2a={'where':{'id':_0xeb701a['params']['id']}},_0x3301cd={};_0x3301cd[_0xd94a('0x37')]=_[_0xd94a('0x47')](db[_0xd94a('0x2f')]['rawAttributes']);_0x114b2a['attributes']=_[_0xd94a('0x36')](_0x3301cd[_0xd94a('0x37')],qs[_0xd94a('0x38')](_0xeb701a[_0xd94a('0x34')][_0xd94a('0x38')]));_0x114b2a[_0xd94a('0x39')]=_0x114b2a[_0xd94a('0x39')][_0xd94a('0x48')]?_0x114b2a[_0xd94a('0x39')]:_0x3301cd[_0xd94a('0x37')];if(_0xeb701a[_0xd94a('0x34')][_0xd94a('0x42')]){_0x114b2a[_0xd94a('0x43')]=[{'all':!![]}];}_0x114b2a=_[_0xd94a('0x49')]({},_0x114b2a,_0xeb701a[_0xd94a('0x40')]);return db[_0xd94a('0x2f')][_0xd94a('0x4e')](_0x114b2a)['then'](handleEntityNotFound(_0x5b1359,null))[_0xd94a('0x25')](function(_0x2e33db){if(_0x2e33db){var _0xa216b2=_0x2e33db['get']({'plain':!![]});_0xa216b2=qs['omit'](_0xa216b2,['id',_0xd94a('0x52'),_0xd94a('0x53')]);_0xeb701a['body']=_[_0xd94a('0x54')](_0xeb701a[_0xd94a('0x55')],['id','createdAt',_0xd94a('0x53')]);return db[_0xd94a('0x2f')][_0xd94a('0x4a')](_[_0xd94a('0x49')](_0xa216b2,_0xeb701a['body']),{'include':_0xeb701a[_0xd94a('0x34')][_0xd94a('0x42')]?[{'all':!![]}]:undefined})['then'](function(_0x22afa2){var _0x5a9a31=_0xeb701a[_0xd94a('0x4b')][_0xd94a('0x27')]({'plain':!![]});if(!_0x5a9a31)throw new Error(_0xd94a('0x4c'));if(_0x5a9a31[_0xd94a('0x56')]===_0xd94a('0x4b')){var _0x27e872=_0x22afa2['get']({'plain':!![]});var _0x558879=_0xd94a('0x28');return db[_0xd94a('0x4d')][_0xd94a('0x4e')]({'where':{'name':_0x558879,'userProfileId':_0x5a9a31[_0xd94a('0x4f')]},'raw':!![]})['then'](function(_0x38a85e){if(_0x38a85e&&_0x38a85e[_0xd94a('0x50')]===0x0){return db[_0xd94a('0x51')][_0xd94a('0x4a')]({'name':_0x27e872['name'],'resourceId':_0x27e872['id'],'type':_0x38a85e[_0xd94a('0x2b')],'sectionId':_0x38a85e['id']},{})['then'](function(){return _0x22afa2;});}else{return _0x22afa2;}})[_0xd94a('0x45')](function(_0x52b359){logger['error'](_0xd94a('0x57'),_0x52b359);throw _0x52b359;});}return _0x22afa2;});}})[_0xd94a('0x25')](respondWithResult(_0x5b1359,0xc9))[_0xd94a('0x45')](handleError(_0x5b1359,null));};exports[_0xd94a('0x24')]=function(_0xf379f2,_0x228d08){if(_0xf379f2[_0xd94a('0x55')]['id']){delete _0xf379f2[_0xd94a('0x55')]['id'];}return db[_0xd94a('0x2f')]['find']({'where':{'id':_0xf379f2[_0xd94a('0x46')]['id']}})['then'](handleEntityNotFound(_0x228d08,null))[_0xd94a('0x25')](saveUpdates(_0xf379f2['body'],null))[_0xd94a('0x25')](respondWithResult(_0x228d08,null))[_0xd94a('0x45')](handleError(_0x228d08,null));};exports[_0xd94a('0x26')]=function(_0x4573f4,_0x2d8abf){return db['Dashboard'][_0xd94a('0x4e')]({'where':{'id':_0x4573f4[_0xd94a('0x46')]['id']}})[_0xd94a('0x25')](handleEntityNotFound(_0x2d8abf,null))[_0xd94a('0x25')](removeEntity(_0x2d8abf,null))[_0xd94a('0x45')](handleError(_0x2d8abf,null));};function widgetAttributes(_0x4aedd9){try{switch(_0x4aedd9[_0xd94a('0x32')]){case _0xd94a('0x58'):return[{'name':_0xd94a('0x59'),'value':_0x4aedd9[_0xd94a('0x59')]||(_0x4aedd9[_0xd94a('0x5a')]&&_0x4aedd9[_0xd94a('0x5a')][0x0]?_0x4aedd9[_0xd94a('0x5a')][0x0][_0xd94a('0x5b')]:undefined)||_0xd94a('0x5c')}];case _0xd94a('0x5d'):return[{'name':_0xd94a('0x5e'),'value':_0x4aedd9['attrPath']||(_0x4aedd9['attrs']&&_0x4aedd9['attrs'][0x0]?_0x4aedd9[_0xd94a('0x5a')][0x0][_0xd94a('0x5b')]:undefined)||''}];case _0xd94a('0x5f'):return[{'name':_0xd94a('0x60'),'value':_0x4aedd9[_0xd94a('0x60')]||(_0x4aedd9[_0xd94a('0x5a')]&&_0x4aedd9[_0xd94a('0x5a')][0x0]?_0x4aedd9[_0xd94a('0x5a')][0x0][_0xd94a('0x5b')]:undefined)||'HH:mm:ss'},{'name':_0xd94a('0x61'),'value':_0x4aedd9[_0xd94a('0x61')]||(_0x4aedd9[_0xd94a('0x5a')]&&_0x4aedd9['attrs'][0x1]?_0x4aedd9['attrs'][0x1][_0xd94a('0x5b')]:undefined)||'0.00'},{'name':_0xd94a('0x62'),'value':_0x4aedd9['attrFontSize']||(_0x4aedd9[_0xd94a('0x5a')]&&_0x4aedd9['attrs'][0x2]?_0x4aedd9[_0xd94a('0x5a')][0x2][_0xd94a('0x5b')]:undefined)||0xc}];case _0xd94a('0x63'):return[{'name':_0xd94a('0x64'),'value':_0x4aedd9[_0xd94a('0x64')]||(_0x4aedd9['attrs']&&_0x4aedd9[_0xd94a('0x5a')][0x0]?_0x4aedd9[_0xd94a('0x5a')][0x0][_0xd94a('0x5b')]:undefined)||_0xd94a('0x65')},{'name':_0xd94a('0x66'),'value':_0x4aedd9[_0xd94a('0x66')]||(_0x4aedd9['attrs']&&_0x4aedd9[_0xd94a('0x5a')][0x1]?_0x4aedd9[_0xd94a('0x5a')][0x1][_0xd94a('0x5b')]:undefined)||[]},{'name':_0xd94a('0x62'),'value':_0x4aedd9[_0xd94a('0x62')]||(_0x4aedd9[_0xd94a('0x5a')]&&_0x4aedd9[_0xd94a('0x5a')][0x2]?_0x4aedd9['attrs'][0x2]['value']:undefined)||0x14},{'name':_0xd94a('0x67'),'value':_0x4aedd9['attrChannel']||(_0x4aedd9[_0xd94a('0x5a')]&&_0x4aedd9[_0xd94a('0x5a')][0x3]?_0x4aedd9[_0xd94a('0x5a')][0x3]['value']:undefined)||_0xd94a('0x68')},{'name':_0xd94a('0x69'),'value':_0x4aedd9[_0xd94a('0x69')]||(_0x4aedd9[_0xd94a('0x5a')]&&_0x4aedd9[_0xd94a('0x5a')][0x4]?_0x4aedd9[_0xd94a('0x5a')][0x4]['value']:undefined)||''},{'name':_0xd94a('0x6a'),'value':_0x4aedd9[_0xd94a('0x6a')]||(_0x4aedd9[_0xd94a('0x5a')]&&_0x4aedd9[_0xd94a('0x5a')][0x5]?_0x4aedd9[_0xd94a('0x5a')][0x5]['value']:undefined)||''},{'name':_0xd94a('0x6b'),'value':_0x4aedd9[_0xd94a('0x6b')]||(_0x4aedd9['attrs']&&_0x4aedd9[_0xd94a('0x5a')][0x6]?_0x4aedd9[_0xd94a('0x5a')][0x6][_0xd94a('0x5b')]:undefined)||''},{'name':_0xd94a('0x6c'),'value':_0x4aedd9[_0xd94a('0x6c')]||(_0x4aedd9[_0xd94a('0x5a')]&&_0x4aedd9[_0xd94a('0x5a')][0x7]?_0x4aedd9[_0xd94a('0x5a')][0x7][_0xd94a('0x5b')]:undefined)||''},{'name':_0xd94a('0x6d'),'value':_0x4aedd9['attrWhatsappAccounts']||(_0x4aedd9[_0xd94a('0x5a')]&&_0x4aedd9[_0xd94a('0x5a')][0x8]?_0x4aedd9[_0xd94a('0x5a')][0x8][_0xd94a('0x5b')]:undefined)||''},{'name':'attrChatWebsites','value':_0x4aedd9[_0xd94a('0x6e')]||(_0x4aedd9['attrs']&&_0x4aedd9[_0xd94a('0x5a')][0x9]?_0x4aedd9[_0xd94a('0x5a')][0x9]['value']:undefined)||''}];case'multibar-chart':case _0xd94a('0x6f'):return[{'name':_0xd94a('0x70'),'value':_0x4aedd9[_0xd94a('0x70')]||(_0x4aedd9[_0xd94a('0x5a')]&&_0x4aedd9[_0xd94a('0x5a')][0x0]?_0x4aedd9[_0xd94a('0x5a')][0x0][_0xd94a('0x5b')]:undefined)||_0xd94a('0x65')},{'name':_0xd94a('0x71'),'value':_0x4aedd9[_0xd94a('0x71')]||(_0x4aedd9[_0xd94a('0x5a')]&&_0x4aedd9[_0xd94a('0x5a')][0x1]?_0x4aedd9[_0xd94a('0x5a')][0x1][_0xd94a('0x5b')]:undefined)||null},{'name':_0xd94a('0x72'),'value':_0x4aedd9[_0xd94a('0x72')]||(_0x4aedd9[_0xd94a('0x5a')]&&_0x4aedd9['attrs'][0x2]?_0x4aedd9[_0xd94a('0x5a')][0x2][_0xd94a('0x5b')]:undefined)||null},{'name':_0xd94a('0x66'),'value':_0x4aedd9['attrVoiceQueues']||(_0x4aedd9[_0xd94a('0x5a')]&&_0x4aedd9[_0xd94a('0x5a')][0x3]?_0x4aedd9[_0xd94a('0x5a')][0x3][_0xd94a('0x5b')]:undefined)||[]},{'name':_0xd94a('0x67'),'value':_0x4aedd9['attrChannel']||(_0x4aedd9[_0xd94a('0x5a')]&&_0x4aedd9['attrs'][0x4]?_0x4aedd9[_0xd94a('0x5a')][0x4][_0xd94a('0x5b')]:undefined)||_0xd94a('0x68')},{'name':_0xd94a('0x69'),'value':_0x4aedd9[_0xd94a('0x69')]||(_0x4aedd9['attrs']&&_0x4aedd9[_0xd94a('0x5a')][0x5]?_0x4aedd9['attrs'][0x5][_0xd94a('0x5b')]:undefined)||''},{'name':_0xd94a('0x6a'),'value':_0x4aedd9[_0xd94a('0x6a')]||(_0x4aedd9[_0xd94a('0x5a')]&&_0x4aedd9['attrs'][0x6]?_0x4aedd9[_0xd94a('0x5a')][0x6][_0xd94a('0x5b')]:undefined)||''},{'name':'attrSmsAccounts','value':_0x4aedd9['attrSmsAccounts']||(_0x4aedd9[_0xd94a('0x5a')]&&_0x4aedd9[_0xd94a('0x5a')][0x7]?_0x4aedd9['attrs'][0x7]['value']:undefined)||''},{'name':_0xd94a('0x6c'),'value':_0x4aedd9[_0xd94a('0x6c')]||(_0x4aedd9[_0xd94a('0x5a')]&&_0x4aedd9[_0xd94a('0x5a')][0x8]?_0x4aedd9[_0xd94a('0x5a')][0x8][_0xd94a('0x5b')]:undefined)||''},{'name':_0xd94a('0x6d'),'value':_0x4aedd9['attrWhatsappAccounts']||(_0x4aedd9['attrs']&&_0x4aedd9[_0xd94a('0x5a')][0x9]?_0x4aedd9[_0xd94a('0x5a')][0x9]['value']:undefined)||''},{'name':_0xd94a('0x6e'),'value':_0x4aedd9[_0xd94a('0x6e')]||(_0x4aedd9[_0xd94a('0x5a')]&&_0x4aedd9[_0xd94a('0x5a')][0xa]?_0x4aedd9[_0xd94a('0x5a')][0xa][_0xd94a('0x5b')]:undefined)||''}];case _0xd94a('0x73'):return[{'name':_0xd94a('0x74'),'type':_0x4aedd9[_0xd94a('0x75')]||(_0x4aedd9[_0xd94a('0x5a')]&&_0x4aedd9['attrs'][0x0]?_0x4aedd9[_0xd94a('0x5a')][0x0]['type']:undefined)||null,'value':_0x4aedd9['attrReport']||(_0x4aedd9[_0xd94a('0x5a')]&&_0x4aedd9[_0xd94a('0x5a')][0x0]?_0x4aedd9[_0xd94a('0x5a')][0x0][_0xd94a('0x5b')]:undefined)||null},{'name':_0xd94a('0x76'),'value':_0x4aedd9[_0xd94a('0x76')]||(_0x4aedd9[_0xd94a('0x5a')]&&_0x4aedd9[_0xd94a('0x5a')][0x1]?_0x4aedd9[_0xd94a('0x5a')][0x1][_0xd94a('0x5b')]:undefined)||0x0}];default:return[];}}catch(_0x2cfc81){logger[_0xd94a('0x29')](_0xd94a('0x77'),JSON[_0xd94a('0x78')](_0x2cfc81));return[];}}exports[_0xd94a('0x79')]=function(_0x373f28,_0xc5b6cf,_0x4a0cf3){if(_0x373f28[_0xd94a('0x55')]['id']){delete _0x373f28['body']['id'];}return db['Dashboard'][_0xd94a('0x4e')]({'where':{'id':_0x373f28[_0xd94a('0x46')]['id']}})[_0xd94a('0x25')](handleEntityNotFound(_0xc5b6cf,null))[_0xd94a('0x25')](function(_0x1e2e9a){if(_0x1e2e9a){_0x373f28[_0xd94a('0x55')][_0xd94a('0x7a')]=_0x1e2e9a['id'];_0x373f28[_0xd94a('0x55')][_0xd94a('0x5a')]=widgetAttributes(_0x373f28['body']);return db[_0xd94a('0x7b')][_0xd94a('0x4a')](_0x373f28[_0xd94a('0x55')]);}})[_0xd94a('0x25')](respondWithResult(_0xc5b6cf,null))[_0xd94a('0x45')](handleError(_0xc5b6cf,null));};exports[_0xd94a('0x7c')]=function(_0x13b260,_0x5e67e4,_0x4dda76){var _0x135e50={};var _0x4bc943={};var _0x4512c4;var _0x3ac515;return db['Dashboard'][_0xd94a('0x7d')]({'where':{'id':_0x13b260[_0xd94a('0x46')]['id']}})[_0xd94a('0x25')](handleEntityNotFound(_0x5e67e4,null))[_0xd94a('0x25')](function(_0xa3eb86){if(_0xa3eb86){_0x4512c4=_0xa3eb86;_0x4bc943[_0xd94a('0x37')]=_['keys'](db[_0xd94a('0x7b')]['rawAttributes']);_0x4bc943[_0xd94a('0x34')]=_['keys'](_0x13b260[_0xd94a('0x34')]);_0x4bc943[_0xd94a('0x35')]=_[_0xd94a('0x36')](_0x4bc943[_0xd94a('0x37')],_0x4bc943[_0xd94a('0x34')]);_0x135e50[_0xd94a('0x39')]=_[_0xd94a('0x36')](_0x4bc943[_0xd94a('0x37')],qs[_0xd94a('0x38')](_0x13b260[_0xd94a('0x34')][_0xd94a('0x38')]));_0x135e50[_0xd94a('0x39')]=_0x135e50['attributes'][_0xd94a('0x48')]?_0x135e50['attributes']:_0x4bc943['model'];_0x135e50[_0xd94a('0x3b')]=qs[_0xd94a('0x3c')](_0x13b260[_0xd94a('0x34')][_0xd94a('0x3c')]);_0x135e50[_0xd94a('0x3d')]=qs['filters'](_['pick'](_0x13b260[_0xd94a('0x34')],_0x4bc943[_0xd94a('0x35')]));if(_0x13b260[_0xd94a('0x34')][_0xd94a('0x3f')]){_0x135e50[_0xd94a('0x3d')]=_[_0xd94a('0x49')](_0x135e50['where'],{'$or':_[_0xd94a('0x2e')](_0x135e50[_0xd94a('0x39')],function(_0x4b3685){var _0x24082a={};_0x24082a[_0x4b3685]={'$like':'%'+_0x13b260[_0xd94a('0x34')]['filter']+'%'};return _0x24082a;})});}_0x135e50=_[_0xd94a('0x49')]({},_0x135e50,_0x13b260['options']);return _0x4512c4[_0xd94a('0x7c')](_0x135e50);}})['then'](function(_0x2e2eeb){if(_0x2e2eeb){_0x3ac515=_0x2e2eeb[_0xd94a('0x48')];if(!_0x13b260[_0xd94a('0x34')][_0xd94a('0x3a')](_0xd94a('0x7e'))){_0x135e50[_0xd94a('0x20')]=qs[_0xd94a('0x20')](_0x13b260[_0xd94a('0x34')]['limit']);_0x135e50['offset']=qs[_0xd94a('0x1e')](_0x13b260['query'][_0xd94a('0x1e')]);}return _0x4512c4[_0xd94a('0x7c')](_0x135e50);}})[_0xd94a('0x25')](function(_0x528e5f){if(_0x528e5f){return _0x528e5f?{'count':_0x3ac515,'rows':_0x528e5f}:null;}})[_0xd94a('0x25')](respondWithResult(_0x5e67e4,null))['catch'](handleError(_0x5e67e4,null));};
\ No newline at end of file
index 72cd8e9..3426900 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac6a=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','Dashboard','setMaxListeners','save','remove'];(function(_0x4f53d2,_0x373000){var _0x1587db=function(_0x4d2c4c){while(--_0x4d2c4c){_0x4f53d2['push'](_0x4f53d2['shift']());}};_0x1587db(++_0x373000);}(_0xac6a,0xc2));var _0xaac6=function(_0x1bdb94,_0x267912){_0x1bdb94=_0x1bdb94-0x0;var _0x42ba77=_0xac6a[_0x1bdb94];return _0x42ba77;};'use strict';var EventEmitter=require(_0xaac6('0x0'));var Dashboard=require(_0xaac6('0x1'))['db'][_0xaac6('0x2')];var DashboardEvents=new EventEmitter();DashboardEvents[_0xaac6('0x3')](0x0);var events={'afterCreate':_0xaac6('0x4'),'afterUpdate':'update','afterDestroy':_0xaac6('0x5')};function emitEvent(_0x4c0cf4){return function(_0x9dc043,_0x1a0d76,_0x44259b){DashboardEvents[_0xaac6('0x6')](_0x4c0cf4+':'+_0x9dc043['id'],_0x9dc043);DashboardEvents[_0xaac6('0x6')](_0x4c0cf4,_0x9dc043);_0x44259b(null);};}for(var e in events){if(events[_0xaac6('0x7')](e)){var event=events[e];Dashboard[_0xaac6('0x8')](e,emitEvent(event));}}module[_0xaac6('0x9')]=DashboardEvents;
\ No newline at end of file
+var _0x1cff=['save','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','Dashboard','setMaxListeners'];(function(_0xb24a3e,_0x4a3594){var _0x4038d7=function(_0x1ea3c3){while(--_0x1ea3c3){_0xb24a3e['push'](_0xb24a3e['shift']());}};_0x4038d7(++_0x4a3594);}(_0x1cff,0x164));var _0xf1cf=function(_0x42d105,_0x40ef83){_0x42d105=_0x42d105-0x0;var _0x11a8a6=_0x1cff[_0x42d105];return _0x11a8a6;};'use strict';var EventEmitter=require(_0xf1cf('0x0'));var Dashboard=require(_0xf1cf('0x1'))['db'][_0xf1cf('0x2')];var DashboardEvents=new EventEmitter();DashboardEvents[_0xf1cf('0x3')](0x0);var events={'afterCreate':_0xf1cf('0x4'),'afterUpdate':'update','afterDestroy':_0xf1cf('0x5')};function emitEvent(_0xdac911){return function(_0x1cd1ec,_0x5a89f6,_0x80365c){DashboardEvents['emit'](_0xdac911+':'+_0x1cd1ec['id'],_0x1cd1ec);DashboardEvents[_0xf1cf('0x6')](_0xdac911,_0x1cd1ec);_0x80365c(null);};}for(var e in events){if(events[_0xf1cf('0x7')](e)){var event=events[e];Dashboard[_0xf1cf('0x8')](e,emitEvent(event));}}module[_0xf1cf('0x9')]=DashboardEvents;
\ No newline at end of file
index b835714..1430167 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7da2=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','Dashboard','../../config/logger'];(function(_0xf44d98,_0x12a472){var _0x5ebb04=function(_0x930c33){while(--_0x930c33){_0xf44d98['push'](_0xf44d98['shift']());}};_0x5ebb04(++_0x12a472);}(_0x7da2,0xba));var _0x27da=function(_0x58420d,_0x25d838){_0x58420d=_0x58420d-0x0;var _0x7a8f84=_0x7da2[_0x58420d];return _0x7a8f84;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x27da('0x0'))(_0x27da('0x1'));var moment=require(_0x27da('0x2'));var BPromise=require(_0x27da('0x3'));var rp=require(_0x27da('0x4'));var fs=require('fs');var path=require(_0x27da('0x5'));var rimraf=require(_0x27da('0x6'));var config=require(_0x27da('0x7'));var attributes=require('./dashboard.attributes');module[_0x27da('0x8')]=function(_0x2dd748,_0xf9cc44){return _0x2dd748[_0x27da('0x9')](_0x27da('0xa'),attributes,{'tableName':'dashboards','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x005f=['Dashboard','dashboards','lodash','util','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','./dashboard.attributes','exports','define'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x005f,0x161));var _0xf005=function(_0x3e29df,_0x42fdf8){_0x3e29df=_0x3e29df-0x0;var _0x3e3ba9=_0x005f[_0x3e29df];return _0x3e3ba9;};'use strict';var _=require(_0xf005('0x0'));var util=require(_0xf005('0x1'));var logger=require(_0xf005('0x2'))('api');var moment=require(_0xf005('0x3'));var BPromise=require('bluebird');var rp=require(_0xf005('0x4'));var fs=require('fs');var path=require(_0xf005('0x5'));var rimraf=require(_0xf005('0x6'));var config=require(_0xf005('0x7'));var attributes=require(_0xf005('0x8'));module[_0xf005('0x9')]=function(_0x4fe496,_0x575e02){return _0x4fe496[_0xf005('0xa')](_0xf005('0xb'),attributes,{'tableName':_0xf005('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 065aa4d..f48c98f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8895=['request\x20sent','stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./dashboard.socket','register','request','then','info','Dashboard,\x20%s,\x20%s','debug','Dashboard,\x20%s,\x20%s,\x20%s'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x8895,0x166));var _0x5889=function(_0x5e5a4a,_0x1350bb){_0x5e5a4a=_0x5e5a4a-0x0;var _0x527c68=_0x8895[_0x5e5a4a];return _0x527c68;};'use strict';var _=require(_0x5889('0x0'));var util=require(_0x5889('0x1'));var moment=require('moment');var BPromise=require(_0x5889('0x2'));var rs=require(_0x5889('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x5889('0x4'))('rpc');var config=require(_0x5889('0x5'));var jayson=require(_0x5889('0x6'));var client=jayson[_0x5889('0x7')][_0x5889('0x8')]({'port':0x232a});config[_0x5889('0x9')]=_[_0x5889('0xa')](config[_0x5889('0x9')],{'host':_0x5889('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x5889('0xc'))[_0x5889('0xd')](socket);function respondWithRpcPromise(_0x4ea872,_0x292615,_0x4a295e){return new BPromise(function(_0x2b6988,_0xc94cef){return client[_0x5889('0xe')](_0x4ea872,_0x4a295e)[_0x5889('0xf')](function(_0x5d0998){logger[_0x5889('0x10')](_0x5889('0x11'),_0x292615,'request\x20sent');logger[_0x5889('0x12')](_0x5889('0x13'),_0x292615,_0x5889('0x14'),JSON[_0x5889('0x15')](_0x5d0998));if(_0x5d0998[_0x5889('0x16')]){if(_0x5d0998[_0x5889('0x16')][_0x5889('0x17')]===0x1f4){logger[_0x5889('0x16')](_0x5889('0x11'),_0x292615,_0x5d0998[_0x5889('0x16')][_0x5889('0x18')]);return _0xc94cef(_0x5d0998[_0x5889('0x16')][_0x5889('0x18')]);}logger[_0x5889('0x16')](_0x5889('0x11'),_0x292615,_0x5d0998[_0x5889('0x16')][_0x5889('0x18')]);return _0x2b6988(_0x5d0998[_0x5889('0x16')][_0x5889('0x18')]);}else{logger['info'](_0x5889('0x11'),_0x292615,_0x5889('0x14'));_0x2b6988(_0x5d0998[_0x5889('0x19')][_0x5889('0x18')]);}})[_0x5889('0x1a')](function(_0x347bdb){logger[_0x5889('0x16')](_0x5889('0x11'),_0x292615,_0x347bdb);_0xc94cef(_0x347bdb);});});}
\ No newline at end of file
+var _0x6ba4=['redis','defaults','localhost','socket.io-emitter','./dashboard.socket','request','info','Dashboard,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http'];(function(_0x254757,_0x5118f5){var _0x371258=function(_0x54f14f){while(--_0x54f14f){_0x254757['push'](_0x254757['shift']());}};_0x371258(++_0x5118f5);}(_0x6ba4,0x11e));var _0x46ba=function(_0x173058,_0x593e23){_0x173058=_0x173058-0x0;var _0x157b26=_0x6ba4[_0x173058];return _0x157b26;};'use strict';var _=require('lodash');var util=require(_0x46ba('0x0'));var moment=require(_0x46ba('0x1'));var BPromise=require('bluebird');var rs=require(_0x46ba('0x2'));var fs=require('fs');var Redis=require(_0x46ba('0x3'));var db=require(_0x46ba('0x4'))['db'];var utils=require(_0x46ba('0x5'));var logger=require(_0x46ba('0x6'))(_0x46ba('0x7'));var config=require(_0x46ba('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x46ba('0x9')][_0x46ba('0xa')]({'port':0x232a});config[_0x46ba('0xb')]=_[_0x46ba('0xc')](config[_0x46ba('0xb')],{'host':_0x46ba('0xd'),'port':0x18eb});var socket=require(_0x46ba('0xe'))(new Redis(config[_0x46ba('0xb')]));require(_0x46ba('0xf'))['register'](socket);function respondWithRpcPromise(_0x3131d5,_0x5aeb58,_0x5587f1){return new BPromise(function(_0x13052b,_0x572326){return client[_0x46ba('0x10')](_0x3131d5,_0x5587f1)['then'](function(_0x4acaa1){logger[_0x46ba('0x11')](_0x46ba('0x12'),_0x5aeb58,_0x46ba('0x13'));logger[_0x46ba('0x14')]('Dashboard,\x20%s,\x20%s,\x20%s',_0x5aeb58,_0x46ba('0x13'),JSON[_0x46ba('0x15')](_0x4acaa1));if(_0x4acaa1[_0x46ba('0x16')]){if(_0x4acaa1[_0x46ba('0x16')][_0x46ba('0x17')]===0x1f4){logger[_0x46ba('0x16')]('Dashboard,\x20%s,\x20%s',_0x5aeb58,_0x4acaa1[_0x46ba('0x16')][_0x46ba('0x18')]);return _0x572326(_0x4acaa1[_0x46ba('0x16')]['message']);}logger[_0x46ba('0x16')](_0x46ba('0x12'),_0x5aeb58,_0x4acaa1['error'][_0x46ba('0x18')]);return _0x13052b(_0x4acaa1['error'][_0x46ba('0x18')]);}else{logger[_0x46ba('0x11')](_0x46ba('0x12'),_0x5aeb58,_0x46ba('0x13'));_0x13052b(_0x4acaa1[_0x46ba('0x19')][_0x46ba('0x18')]);}})[_0x46ba('0x1a')](function(_0x321a94){logger[_0x46ba('0x16')]('Dashboard,\x20%s,\x20%s',_0x5aeb58,_0x321a94);_0x572326(_0x321a94);});});}
\ No newline at end of file
index da3786f..fa0b166 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc3b5=['remove','update','emit','register','length','dashboard:','./dashboard.events','save'];(function(_0x43bb67,_0x53f659){var _0x34260e=function(_0x331df3){while(--_0x331df3){_0x43bb67['push'](_0x43bb67['shift']());}};_0x34260e(++_0x53f659);}(_0xc3b5,0x18e));var _0x5c3b=function(_0x3e39e4,_0x3f54c1){_0x3e39e4=_0x3e39e4-0x0;var _0x53ae12=_0xc3b5[_0x3e39e4];return _0x53ae12;};'use strict';var DashboardEvents=require(_0x5c3b('0x0'));var events=[_0x5c3b('0x1'),_0x5c3b('0x2'),_0x5c3b('0x3')];function createListener(_0x10be03,_0x30a27a){return function(_0x2166f7){_0x30a27a[_0x5c3b('0x4')](_0x10be03,_0x2166f7);};}function removeListener(_0x204f5d,_0x32e899){return function(){DashboardEvents['removeListener'](_0x204f5d,_0x32e899);};}exports[_0x5c3b('0x5')]=function(_0x1c112c){for(var _0x1223a7=0x0,_0x2f638b=events[_0x5c3b('0x6')];_0x1223a7<_0x2f638b;_0x1223a7++){var _0x2db383=events[_0x1223a7];var _0x13dab0=createListener(_0x5c3b('0x7')+_0x2db383,_0x1c112c);DashboardEvents['on'](_0x2db383,_0x13dab0);}};
\ No newline at end of file
+var _0xa579=['length','./dashboard.events','save','remove','update','emit','removeListener'];(function(_0x17b6e3,_0x4522ed){var _0x3906f3=function(_0x430f87){while(--_0x430f87){_0x17b6e3['push'](_0x17b6e3['shift']());}};_0x3906f3(++_0x4522ed);}(_0xa579,0x189));var _0x9a57=function(_0x593151,_0x213e14){_0x593151=_0x593151-0x0;var _0x51f241=_0xa579[_0x593151];return _0x51f241;};'use strict';var DashboardEvents=require(_0x9a57('0x0'));var events=[_0x9a57('0x1'),_0x9a57('0x2'),_0x9a57('0x3')];function createListener(_0x227ea7,_0x166f4f){return function(_0x596701){_0x166f4f[_0x9a57('0x4')](_0x227ea7,_0x596701);};}function removeListener(_0x44475b,_0x31ca67){return function(){DashboardEvents[_0x9a57('0x5')](_0x44475b,_0x31ca67);};}exports['register']=function(_0x2efc21){for(var _0x4e5e8e=0x0,_0x29754c=events[_0x9a57('0x6')];_0x4e5e8e<_0x29754c;_0x4e5e8e++){var _0x2dcb82=events[_0x4e5e8e];var _0x1bffd9=createListener('dashboard:'+_0x2dcb82,_0x2efc21);DashboardEvents['on'](_0x2dcb82,_0x1bffd9);}};
\ No newline at end of file
index b066473..c0bf38b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5db9=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./dashboard.controller','get','isAuthenticated','index','/:id','getItems','create','/:id/clone','clone','post','/:id/items','addItem','put','update','destroy','exports','multer','util','path','Router'];(function(_0x35d6c2,_0x113478){var _0x50e8f1=function(_0x2839e6){while(--_0x2839e6){_0x35d6c2['push'](_0x35d6c2['shift']());}};_0x50e8f1(++_0x113478);}(_0x5db9,0x1f4));var _0x95db=function(_0x5affe8,_0x4318ad){_0x5affe8=_0x5affe8-0x0;var _0x2a13f8=_0x5db9[_0x5affe8];return _0x2a13f8;};'use strict';var multer=require(_0x95db('0x0'));var util=require(_0x95db('0x1'));var path=require(_0x95db('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x95db('0x3')]();var fs_extra=require(_0x95db('0x4'));var auth=require(_0x95db('0x5'));var interaction=require(_0x95db('0x6'));var config=require(_0x95db('0x7'));var controller=require(_0x95db('0x8'));router[_0x95db('0x9')]('/',auth[_0x95db('0xa')](),controller[_0x95db('0xb')]);router[_0x95db('0x9')](_0x95db('0xc'),auth['isAuthenticated'](),controller['show']);router[_0x95db('0x9')]('/:id/items',auth[_0x95db('0xa')](),controller[_0x95db('0xd')]);router['post']('/',auth[_0x95db('0xa')](),controller[_0x95db('0xe')]);router['post'](_0x95db('0xf'),auth[_0x95db('0xa')](),controller[_0x95db('0x10')]);router[_0x95db('0x11')](_0x95db('0x12'),auth['isAuthenticated'](),controller[_0x95db('0x13')]);router[_0x95db('0x14')](_0x95db('0xc'),auth[_0x95db('0xa')](),controller[_0x95db('0x15')]);router['delete']('/:id',auth[_0x95db('0xa')](),controller[_0x95db('0x16')]);module[_0x95db('0x17')]=router;
\ No newline at end of file
+var _0xb179=['/:id/clone','clone','post','addItem','put','update','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','/:id','/:id/items','getItems','create'];(function(_0x89a121,_0x761469){var _0x288471=function(_0x1a892b){while(--_0x1a892b){_0x89a121['push'](_0x89a121['shift']());}};_0x288471(++_0x761469);}(_0xb179,0xbf));var _0x9b17=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xb179[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x9b17('0x0'));var util=require(_0x9b17('0x1'));var path=require(_0x9b17('0x2'));var timeout=require(_0x9b17('0x3'));var express=require(_0x9b17('0x4'));var router=express[_0x9b17('0x5')]();var fs_extra=require(_0x9b17('0x6'));var auth=require(_0x9b17('0x7'));var interaction=require(_0x9b17('0x8'));var config=require(_0x9b17('0x9'));var controller=require('./dashboard.controller');router['get']('/',auth[_0x9b17('0xa')](),controller[_0x9b17('0xb')]);router['get'](_0x9b17('0xc'),auth[_0x9b17('0xa')](),controller['show']);router['get'](_0x9b17('0xd'),auth['isAuthenticated'](),controller[_0x9b17('0xe')]);router['post']('/',auth[_0x9b17('0xa')](),controller[_0x9b17('0xf')]);router['post'](_0x9b17('0x10'),auth['isAuthenticated'](),controller[_0x9b17('0x11')]);router[_0x9b17('0x12')](_0x9b17('0xd'),auth[_0x9b17('0xa')](),controller[_0x9b17('0x13')]);router[_0x9b17('0x14')](_0x9b17('0xc'),auth[_0x9b17('0xa')](),controller[_0x9b17('0x15')]);router['delete'](_0x9b17('0xc'),auth[_0x9b17('0xa')](),controller['destroy']);module[_0x9b17('0x16')]=router;
\ No newline at end of file
index 3866819..7cbf228 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4c7=['TEXT','long','parse','getDataValue','attrs','setDataValue','stringify','INTEGER','#ffffff','#2196f3','sequelize','squel','lodash','exports','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb4c7,0x1ea));var _0x7b4c=function(_0x41594a,_0x28bd18){_0x41594a=_0x41594a-0x0;var _0x181600=_0xb4c7[_0x41594a];return _0x181600;};'use strict';var Sequelize=require(_0x7b4c('0x0'));var squel=require(_0x7b4c('0x1'));var _=require(_0x7b4c('0x2'));module[_0x7b4c('0x3')]={'title':{'type':Sequelize[_0x7b4c('0x4')],'allowNull':![]},'type':{'type':Sequelize['STRING'](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0x7b4c('0x5')](_0x7b4c('0x6')),'get':function(){try{return JSON[_0x7b4c('0x7')](this[_0x7b4c('0x8')](_0x7b4c('0x9')));}catch(_0x5adec9){return[];}},'set':function(_0x1b0f57){try{this[_0x7b4c('0xa')](_0x7b4c('0x9'),JSON['stringify'](_0x1b0f57));}catch(_0x2d7b7e){this[_0x7b4c('0xa')]('attrs',JSON[_0x7b4c('0xb')]([]));}}},'sizeX':{'type':Sequelize[_0x7b4c('0xc')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0x7b4c('0xc')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0x7b4c('0xc')]},'col':{'type':Sequelize[_0x7b4c('0xc')]},'background':{'type':Sequelize[_0x7b4c('0x4')],'allowNull':![],'defaultValue':_0x7b4c('0xd'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0x7b4c('0x4')],'allowNull':![],'defaultValue':_0x7b4c('0xe'),'validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x7b4c('0x4')]},'titleFontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xc}};
\ No newline at end of file
+var _0x187d=['stringify','INTEGER','#ffffff','sequelize','lodash','exports','STRING','TEXT','long','getDataValue','attrs','setDataValue'];(function(_0x4e40e4,_0xe34b01){var _0x33870c=function(_0x2aed03){while(--_0x2aed03){_0x4e40e4['push'](_0x4e40e4['shift']());}};_0x33870c(++_0xe34b01);}(_0x187d,0x93));var _0xd187=function(_0x56482c,_0x16118d){_0x56482c=_0x56482c-0x0;var _0x5aae7a=_0x187d[_0x56482c];return _0x5aae7a;};'use strict';var Sequelize=require(_0xd187('0x0'));var squel=require('squel');var _=require(_0xd187('0x1'));module[_0xd187('0x2')]={'title':{'type':Sequelize[_0xd187('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0xd187('0x3')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0xd187('0x4')](_0xd187('0x5')),'get':function(){try{return JSON['parse'](this[_0xd187('0x6')](_0xd187('0x7')));}catch(_0x4ebc8d){return[];}},'set':function(_0x1d2533){try{this[_0xd187('0x8')](_0xd187('0x7'),JSON[_0xd187('0x9')](_0x1d2533));}catch(_0x28ce2f){this[_0xd187('0x8')](_0xd187('0x7'),JSON[_0xd187('0x9')]([]));}}},'sizeX':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0xd187('0xa')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0xd187('0xa')]},'col':{'type':Sequelize[_0xd187('0xa')]},'background':{'type':Sequelize[_0xd187('0x3')],'allowNull':![],'defaultValue':_0xd187('0xb'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0xd187('0x3')],'allowNull':![],'defaultValue':'#2196f3','validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0xd187('0x3')]},'titleFontSize':{'type':Sequelize[_0xd187('0xa')],'defaultValue':0xc}};
\ No newline at end of file
index 52164a0..18c0be8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2678=['0.00','attrFontSize','counter','attrMetric','attrVoiceQueues','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','attrChannel','web-report','attrReport','reportType','type','attrRefresh','widgetAttributes:\x20%s','stringify','create','body','rimraf','zip-dir','fast-json-patch','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./dashboardItem.socket','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','show','query','keys','filters','intersection','attributes','model','fields','length','includeAll','include','options','DashboardItem','find','catch','params','iframe','attrUrl','attrs','https://','custom','attrPath','value','clock','attrHourFormat','HH:mm:ss','attrTimezone'];(function(_0x19c99f,_0x535b64){var _0x307273=function(_0x40e31b){while(--_0x40e31b){_0x19c99f['push'](_0x19c99f['shift']());}};_0x307273(++_0x535b64);}(_0x2678,0x1bb));var _0x8267=function(_0x503a14,_0x327044){_0x503a14=_0x503a14-0x0;var _0x5c474d=_0x2678[_0x503a14];return _0x5c474d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8267('0x0'));var zipdir=require(_0x8267('0x1'));var jsonpatch=require(_0x8267('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x8267('0x3'));var util=require(_0x8267('0x4'));var path=require(_0x8267('0x5'));var sox=require('sox');var csv=require(_0x8267('0x6'));var ejs=require(_0x8267('0x7'));var fs=require('fs');var fs_extra=require(_0x8267('0x8'));var _=require(_0x8267('0x9'));var squel=require(_0x8267('0xa'));var crypto=require(_0x8267('0xb'));var jsforce=require(_0x8267('0xc'));var deskjs=require(_0x8267('0xd'));var toCsv=require('to-csv');var querystring=require(_0x8267('0xe'));var Papa=require(_0x8267('0xf'));var Redis=require('ioredis');var authService=require(_0x8267('0x10'));var qs=require(_0x8267('0x11'));var as=require(_0x8267('0x12'));var hardwareService=require(_0x8267('0x13'));var logger=require(_0x8267('0x14'))('api');var utils=require(_0x8267('0x15'));var config=require(_0x8267('0x16'));var licenseUtil=require(_0x8267('0x17'));var db=require(_0x8267('0x18'))['db'];config[_0x8267('0x19')]=_[_0x8267('0x1a')](config[_0x8267('0x19')],{'host':_0x8267('0x1b'),'port':0x18eb});var socket=require(_0x8267('0x1c'))(new Redis(config[_0x8267('0x19')]));require(_0x8267('0x1d'))['register'](socket);function respondWithStatusCode(_0x14a8d1,_0x4ef41e){_0x4ef41e=_0x4ef41e||0xcc;return function(_0x39cc14){if(_0x39cc14){return _0x14a8d1[_0x8267('0x1e')](_0x4ef41e);}return _0x14a8d1[_0x8267('0x1f')](_0x4ef41e)[_0x8267('0x20')]();};}function respondWithResult(_0x5b182b,_0x583817){_0x583817=_0x583817||0xc8;return function(_0x59967e){if(_0x59967e){return _0x5b182b[_0x8267('0x1f')](_0x583817)[_0x8267('0x21')](_0x59967e);}};}function respondWithFilteredResult(_0x55b9f9,_0x59685b){return function(_0x2577a5){if(_0x2577a5){var _0x39f8c8=typeof _0x59685b[_0x8267('0x22')]===_0x8267('0x23')&&typeof _0x59685b['limit']===_0x8267('0x23');var _0x5e3542=_0x2577a5[_0x8267('0x24')];var _0x1b725d=_0x39f8c8?0x0:_0x59685b[_0x8267('0x22')];var _0x4ccd45=_0x39f8c8?_0x2577a5[_0x8267('0x24')]:_0x59685b[_0x8267('0x22')]+_0x59685b[_0x8267('0x25')];var _0x1dd8b7;if(_0x4ccd45>=_0x5e3542){_0x4ccd45=_0x5e3542;_0x1dd8b7=0xc8;}else{_0x1dd8b7=0xce;}_0x55b9f9[_0x8267('0x1f')](_0x1dd8b7);return _0x55b9f9[_0x8267('0x26')](_0x8267('0x27'),_0x1b725d+'-'+_0x4ccd45+'/'+_0x5e3542)['json'](_0x2577a5);}return null;};}function patchUpdates(_0x54db81){return function(_0x16cbf1){try{jsonpatch[_0x8267('0x28')](_0x16cbf1,_0x54db81,!![]);}catch(_0x92cac9){return BPromise[_0x8267('0x29')](_0x92cac9);}return _0x16cbf1[_0x8267('0x2a')]();};}function saveUpdates(_0x31b406,_0x55cf32){return function(_0x432f53){if(_0x432f53){return _0x432f53[_0x8267('0x2b')](_0x31b406)[_0x8267('0x2c')](function(_0x2903bb){return _0x2903bb;});}return null;};}function removeEntity(_0x5cb8ba,_0x47ee5a){return function(_0x2e8e7e){if(_0x2e8e7e){return _0x2e8e7e[_0x8267('0x2d')]()[_0x8267('0x2c')](function(){_0x5cb8ba[_0x8267('0x1f')](0xcc)[_0x8267('0x20')]();});}};}function handleEntityNotFound(_0xd6526e,_0x11fef5){return function(_0x59cee3){if(!_0x59cee3){_0xd6526e[_0x8267('0x1e')](0x194);}return _0x59cee3;};}function handleError(_0x31381b,_0x3861c7){_0x3861c7=_0x3861c7||0x1f4;return function(_0x3f2fbe){logger[_0x8267('0x2e')](_0x3f2fbe[_0x8267('0x2f')]);if(_0x3f2fbe[_0x8267('0x30')]){delete _0x3f2fbe[_0x8267('0x30')];}_0x31381b[_0x8267('0x1f')](_0x3861c7)[_0x8267('0x31')](_0x3f2fbe);};}exports[_0x8267('0x32')]=function(_0x5f5b0f,_0x32323b){var _0x4f7377={'raw':![],'where':{'id':_0x5f5b0f['params']['id']}},_0x1e976d={};_0x1e976d['model']=_['keys'](db['DashboardItem']['rawAttributes']);_0x1e976d[_0x8267('0x33')]=_[_0x8267('0x34')](_0x5f5b0f['query']);_0x1e976d[_0x8267('0x35')]=_[_0x8267('0x36')](_0x1e976d['model'],_0x1e976d[_0x8267('0x33')]);_0x4f7377[_0x8267('0x37')]=_[_0x8267('0x36')](_0x1e976d[_0x8267('0x38')],qs['fields'](_0x5f5b0f[_0x8267('0x33')][_0x8267('0x39')]));_0x4f7377[_0x8267('0x37')]=_0x4f7377['attributes'][_0x8267('0x3a')]?_0x4f7377[_0x8267('0x37')]:_0x1e976d[_0x8267('0x38')];if(_0x5f5b0f[_0x8267('0x33')][_0x8267('0x3b')]){_0x4f7377[_0x8267('0x3c')]=[{'all':!![]}];}_0x4f7377=_['merge']({},_0x4f7377,_0x5f5b0f[_0x8267('0x3d')]);return db[_0x8267('0x3e')][_0x8267('0x3f')](_0x4f7377)[_0x8267('0x2c')](handleEntityNotFound(_0x32323b,null))['then'](respondWithResult(_0x32323b,null))[_0x8267('0x40')](handleError(_0x32323b,null));};exports[_0x8267('0x2d')]=function(_0x3f8db6,_0x39d957){return db[_0x8267('0x3e')][_0x8267('0x3f')]({'where':{'id':_0x3f8db6[_0x8267('0x41')]['id']}})['then'](handleEntityNotFound(_0x39d957,null))[_0x8267('0x2c')](removeEntity(_0x39d957,null))[_0x8267('0x40')](handleError(_0x39d957,null));};function widgetAttributes(_0xa87476){try{switch(_0xa87476['type']){case _0x8267('0x42'):return[{'name':_0x8267('0x43'),'value':_0xa87476[_0x8267('0x43')]||(_0xa87476[_0x8267('0x44')]&&_0xa87476[_0x8267('0x44')][0x0]?_0xa87476[_0x8267('0x44')][0x0]['value']:undefined)||_0x8267('0x45')}];case _0x8267('0x46'):return[{'name':_0x8267('0x47'),'value':_0xa87476[_0x8267('0x47')]||(_0xa87476[_0x8267('0x44')]&&_0xa87476['attrs'][0x0]?_0xa87476[_0x8267('0x44')][0x0][_0x8267('0x48')]:undefined)||''}];case _0x8267('0x49'):return[{'name':_0x8267('0x4a'),'value':_0xa87476[_0x8267('0x4a')]||(_0xa87476[_0x8267('0x44')]&&_0xa87476[_0x8267('0x44')][0x0]?_0xa87476[_0x8267('0x44')][0x0][_0x8267('0x48')]:undefined)||_0x8267('0x4b')},{'name':'attrTimezone','value':_0xa87476[_0x8267('0x4c')]||(_0xa87476[_0x8267('0x44')]&&_0xa87476[_0x8267('0x44')][0x1]?_0xa87476['attrs'][0x1][_0x8267('0x48')]:undefined)||_0x8267('0x4d')},{'name':_0x8267('0x4e'),'value':_0xa87476[_0x8267('0x4e')]||(_0xa87476[_0x8267('0x44')]&&_0xa87476[_0x8267('0x44')][0x2]?_0xa87476[_0x8267('0x44')][0x2][_0x8267('0x48')]:undefined)||0xc}];case _0x8267('0x4f'):return[{'name':_0x8267('0x50'),'value':_0xa87476['attrMetric']||(_0xa87476[_0x8267('0x44')]&&_0xa87476[_0x8267('0x44')][0x0]?_0xa87476[_0x8267('0x44')][0x0][_0x8267('0x48')]:undefined)||'total'},{'name':_0x8267('0x51'),'value':_0xa87476[_0x8267('0x51')]||(_0xa87476[_0x8267('0x44')]&&_0xa87476[_0x8267('0x44')][0x1]?_0xa87476[_0x8267('0x44')][0x1][_0x8267('0x48')]:undefined)||[]},{'name':_0x8267('0x4e'),'value':_0xa87476[_0x8267('0x4e')]||(_0xa87476[_0x8267('0x44')]&&_0xa87476[_0x8267('0x44')][0x2]?_0xa87476[_0x8267('0x44')][0x2][_0x8267('0x48')]:undefined)||0x14},{'name':'attrChannel','value':_0xa87476['attrChannel']||(_0xa87476[_0x8267('0x44')]&&_0xa87476['attrs'][0x3]?_0xa87476['attrs'][0x3][_0x8267('0x48')]:undefined)||_0x8267('0x52')},{'name':_0x8267('0x53'),'value':_0xa87476[_0x8267('0x53')]||(_0xa87476[_0x8267('0x44')]&&_0xa87476[_0x8267('0x44')][0x4]?_0xa87476[_0x8267('0x44')][0x4][_0x8267('0x48')]:undefined)||''},{'name':_0x8267('0x54'),'value':_0xa87476[_0x8267('0x54')]||(_0xa87476['attrs']&&_0xa87476['attrs'][0x5]?_0xa87476[_0x8267('0x44')][0x5]['value']:undefined)||''},{'name':_0x8267('0x55'),'value':_0xa87476[_0x8267('0x55')]||(_0xa87476[_0x8267('0x44')]&&_0xa87476[_0x8267('0x44')][0x6]?_0xa87476['attrs'][0x6][_0x8267('0x48')]:undefined)||''},{'name':_0x8267('0x56'),'value':_0xa87476[_0x8267('0x56')]||(_0xa87476[_0x8267('0x44')]&&_0xa87476[_0x8267('0x44')][0x7]?_0xa87476[_0x8267('0x44')][0x7][_0x8267('0x48')]:undefined)||''},{'name':_0x8267('0x57'),'value':_0xa87476[_0x8267('0x57')]||(_0xa87476[_0x8267('0x44')]&&_0xa87476[_0x8267('0x44')][0x8]?_0xa87476[_0x8267('0x44')][0x8][_0x8267('0x48')]:undefined)||''},{'name':_0x8267('0x58'),'value':_0xa87476[_0x8267('0x58')]||(_0xa87476['attrs']&&_0xa87476[_0x8267('0x44')][0x9]?_0xa87476[_0x8267('0x44')][0x9][_0x8267('0x48')]:undefined)||''}];case _0x8267('0x59'):case _0x8267('0x5a'):return[{'name':'attrSerie1','value':_0xa87476[_0x8267('0x5b')]||(_0xa87476['attrs']&&_0xa87476[_0x8267('0x44')][0x0]?_0xa87476[_0x8267('0x44')][0x0][_0x8267('0x48')]:undefined)||'total'},{'name':_0x8267('0x5c'),'value':_0xa87476[_0x8267('0x5c')]||(_0xa87476[_0x8267('0x44')]&&_0xa87476[_0x8267('0x44')][0x1]?_0xa87476[_0x8267('0x44')][0x1]['value']:undefined)||null},{'name':'attrSerie3','value':_0xa87476[_0x8267('0x5d')]||(_0xa87476[_0x8267('0x44')]&&_0xa87476['attrs'][0x2]?_0xa87476[_0x8267('0x44')][0x2]['value']:undefined)||null},{'name':_0x8267('0x51'),'value':_0xa87476[_0x8267('0x51')]||(_0xa87476[_0x8267('0x44')]&&_0xa87476[_0x8267('0x44')][0x3]?_0xa87476[_0x8267('0x44')][0x3][_0x8267('0x48')]:undefined)||[]},{'name':_0x8267('0x5e'),'value':_0xa87476[_0x8267('0x5e')]||(_0xa87476[_0x8267('0x44')]&&_0xa87476[_0x8267('0x44')][0x4]?_0xa87476[_0x8267('0x44')][0x4][_0x8267('0x48')]:undefined)||_0x8267('0x52')},{'name':_0x8267('0x53'),'value':_0xa87476[_0x8267('0x53')]||(_0xa87476[_0x8267('0x44')]&&_0xa87476['attrs'][0x5]?_0xa87476[_0x8267('0x44')][0x5][_0x8267('0x48')]:undefined)||''},{'name':_0x8267('0x54'),'value':_0xa87476['attrFaxAccounts']||(_0xa87476[_0x8267('0x44')]&&_0xa87476[_0x8267('0x44')][0x6]?_0xa87476['attrs'][0x6][_0x8267('0x48')]:undefined)||''},{'name':'attrSmsAccounts','value':_0xa87476[_0x8267('0x55')]||(_0xa87476[_0x8267('0x44')]&&_0xa87476['attrs'][0x7]?_0xa87476[_0x8267('0x44')][0x7][_0x8267('0x48')]:undefined)||''},{'name':_0x8267('0x56'),'value':_0xa87476[_0x8267('0x56')]||(_0xa87476[_0x8267('0x44')]&&_0xa87476[_0x8267('0x44')][0x8]?_0xa87476[_0x8267('0x44')][0x8]['value']:undefined)||''},{'name':_0x8267('0x57'),'value':_0xa87476[_0x8267('0x57')]||(_0xa87476[_0x8267('0x44')]&&_0xa87476[_0x8267('0x44')][0x9]?_0xa87476[_0x8267('0x44')][0x9][_0x8267('0x48')]:undefined)||''},{'name':_0x8267('0x58'),'value':_0xa87476[_0x8267('0x58')]||(_0xa87476[_0x8267('0x44')]&&_0xa87476[_0x8267('0x44')][0xa]?_0xa87476['attrs'][0xa][_0x8267('0x48')]:undefined)||''}];case _0x8267('0x5f'):return[{'name':_0x8267('0x60'),'type':_0xa87476[_0x8267('0x61')]||(_0xa87476[_0x8267('0x44')]&&_0xa87476[_0x8267('0x44')][0x0]?_0xa87476[_0x8267('0x44')][0x0][_0x8267('0x62')]:undefined)||null,'value':_0xa87476[_0x8267('0x60')]||(_0xa87476[_0x8267('0x44')]&&_0xa87476[_0x8267('0x44')][0x0]?_0xa87476['attrs'][0x0][_0x8267('0x48')]:undefined)||null},{'name':_0x8267('0x63'),'value':_0xa87476['attrRefresh']||(_0xa87476[_0x8267('0x44')]&&_0xa87476[_0x8267('0x44')][0x1]?_0xa87476[_0x8267('0x44')][0x1]['value']:undefined)||0x0}];default:return[];}}catch(_0x827f05){logger[_0x8267('0x2e')](_0x8267('0x64'),JSON[_0x8267('0x65')](_0x827f05));return[];}}exports[_0x8267('0x66')]=function(_0x290a6a,_0x5dcf67){if(_0x290a6a[_0x8267('0x67')]){_0x290a6a[_0x8267('0x67')][_0x8267('0x44')]=widgetAttributes(_0x290a6a[_0x8267('0x67')]);}return db[_0x8267('0x3e')]['create'](_0x290a6a[_0x8267('0x67')],{})['then'](respondWithResult(_0x5dcf67,0xc9))[_0x8267('0x40')](handleError(_0x5dcf67,null));};exports[_0x8267('0x2b')]=function(_0x2822b2,_0x18a4c6){if(_0x2822b2[_0x8267('0x67')]['id']){delete _0x2822b2[_0x8267('0x67')]['id'];}_0x2822b2['body'][_0x8267('0x44')]=widgetAttributes(_0x2822b2[_0x8267('0x67')]);return db['DashboardItem']['find']({'where':{'id':_0x2822b2[_0x8267('0x41')]['id']}})['then'](handleEntityNotFound(_0x18a4c6,null))['then'](saveUpdates(_0x2822b2[_0x8267('0x67')],null))[_0x8267('0x2c')](respondWithResult(_0x18a4c6,null))[_0x8267('0x40')](handleError(_0x18a4c6,null));};
\ No newline at end of file
+var _0x677a=['HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','pie-chart','attrSerie1','attrSerie2','attrSerie3','attrReport','attrRefresh','widgetAttributes:\x20%s','stringify','body','create','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','./dashboardItem.socket','register','sendStatus','status','end','json','undefined','limit','offset','count','Content-Range','apply','reject','save','then','destroy','error','name','send','params','model','keys','DashboardItem','rawAttributes','query','intersection','attributes','fields','includeAll','include','merge','find','catch','type','iframe','attrs','value','custom','attrPath','clock','attrHourFormat'];(function(_0x3b32c8,_0x926221){var _0x26faca=function(_0x3e9307){while(--_0x3e9307){_0x3b32c8['push'](_0x3b32c8['shift']());}};_0x26faca(++_0x926221);}(_0x677a,0xd6));var _0xa677=function(_0x179e13,_0x57c5ee){_0x179e13=_0x179e13-0x0;var _0x15de53=_0x677a[_0x179e13];return _0x15de53;};'use strict';var emlformat=require(_0xa677('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa677('0x1'));var jsonpatch=require(_0xa677('0x2'));var rp=require(_0xa677('0x3'));var moment=require(_0xa677('0x4'));var BPromise=require(_0xa677('0x5'));var Mustache=require('mustache');var util=require(_0xa677('0x6'));var path=require(_0xa677('0x7'));var sox=require(_0xa677('0x8'));var csv=require(_0xa677('0x9'));var ejs=require(_0xa677('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa677('0xb'));var squel=require(_0xa677('0xc'));var crypto=require(_0xa677('0xd'));var jsforce=require(_0xa677('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xa677('0xf'));var Redis=require('ioredis');var authService=require(_0xa677('0x10'));var qs=require(_0xa677('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa677('0x12'));var logger=require(_0xa677('0x13'))(_0xa677('0x14'));var utils=require(_0xa677('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xa677('0x16'));var db=require(_0xa677('0x17'))['db'];config[_0xa677('0x18')]=_[_0xa677('0x19')](config['redis'],{'host':_0xa677('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa677('0x18')]));require(_0xa677('0x1b'))[_0xa677('0x1c')](socket);function respondWithStatusCode(_0x4c68b4,_0xca5d15){_0xca5d15=_0xca5d15||0xcc;return function(_0x36634f){if(_0x36634f){return _0x4c68b4[_0xa677('0x1d')](_0xca5d15);}return _0x4c68b4[_0xa677('0x1e')](_0xca5d15)[_0xa677('0x1f')]();};}function respondWithResult(_0x230363,_0x25c63b){_0x25c63b=_0x25c63b||0xc8;return function(_0x1dfee0){if(_0x1dfee0){return _0x230363[_0xa677('0x1e')](_0x25c63b)[_0xa677('0x20')](_0x1dfee0);}};}function respondWithFilteredResult(_0x5957cb,_0xd9a41b){return function(_0x5db4d2){if(_0x5db4d2){var _0x495c70=typeof _0xd9a41b['offset']===_0xa677('0x21')&&typeof _0xd9a41b[_0xa677('0x22')]===_0xa677('0x21');var _0x30fbfd=_0x5db4d2['count'];var _0x2eab12=_0x495c70?0x0:_0xd9a41b[_0xa677('0x23')];var _0xad957e=_0x495c70?_0x5db4d2[_0xa677('0x24')]:_0xd9a41b[_0xa677('0x23')]+_0xd9a41b[_0xa677('0x22')];var _0x5cbea0;if(_0xad957e>=_0x30fbfd){_0xad957e=_0x30fbfd;_0x5cbea0=0xc8;}else{_0x5cbea0=0xce;}_0x5957cb[_0xa677('0x1e')](_0x5cbea0);return _0x5957cb['set'](_0xa677('0x25'),_0x2eab12+'-'+_0xad957e+'/'+_0x30fbfd)[_0xa677('0x20')](_0x5db4d2);}return null;};}function patchUpdates(_0x45eb0f){return function(_0x5f5735){try{jsonpatch[_0xa677('0x26')](_0x5f5735,_0x45eb0f,!![]);}catch(_0x31acd3){return BPromise[_0xa677('0x27')](_0x31acd3);}return _0x5f5735[_0xa677('0x28')]();};}function saveUpdates(_0x4e8e9e,_0x1aa82b){return function(_0x17f483){if(_0x17f483){return _0x17f483['update'](_0x4e8e9e)[_0xa677('0x29')](function(_0xe54876){return _0xe54876;});}return null;};}function removeEntity(_0x40cb21,_0x3bb824){return function(_0x2a553d){if(_0x2a553d){return _0x2a553d[_0xa677('0x2a')]()['then'](function(){_0x40cb21[_0xa677('0x1e')](0xcc)[_0xa677('0x1f')]();});}};}function handleEntityNotFound(_0x1a7e27,_0x6189c){return function(_0x428987){if(!_0x428987){_0x1a7e27[_0xa677('0x1d')](0x194);}return _0x428987;};}function handleError(_0x5da542,_0x15754b){_0x15754b=_0x15754b||0x1f4;return function(_0x124d7f){logger[_0xa677('0x2b')](_0x124d7f['stack']);if(_0x124d7f[_0xa677('0x2c')]){delete _0x124d7f[_0xa677('0x2c')];}_0x5da542[_0xa677('0x1e')](_0x15754b)[_0xa677('0x2d')](_0x124d7f);};}exports['show']=function(_0x454bf0,_0x1f7811){var _0x4117e1={'raw':![],'where':{'id':_0x454bf0[_0xa677('0x2e')]['id']}},_0x5ed0a1={};_0x5ed0a1[_0xa677('0x2f')]=_[_0xa677('0x30')](db[_0xa677('0x31')][_0xa677('0x32')]);_0x5ed0a1[_0xa677('0x33')]=_[_0xa677('0x30')](_0x454bf0[_0xa677('0x33')]);_0x5ed0a1['filters']=_[_0xa677('0x34')](_0x5ed0a1['model'],_0x5ed0a1[_0xa677('0x33')]);_0x4117e1[_0xa677('0x35')]=_[_0xa677('0x34')](_0x5ed0a1[_0xa677('0x2f')],qs[_0xa677('0x36')](_0x454bf0[_0xa677('0x33')][_0xa677('0x36')]));_0x4117e1[_0xa677('0x35')]=_0x4117e1[_0xa677('0x35')]['length']?_0x4117e1[_0xa677('0x35')]:_0x5ed0a1['model'];if(_0x454bf0[_0xa677('0x33')][_0xa677('0x37')]){_0x4117e1[_0xa677('0x38')]=[{'all':!![]}];}_0x4117e1=_[_0xa677('0x39')]({},_0x4117e1,_0x454bf0['options']);return db[_0xa677('0x31')][_0xa677('0x3a')](_0x4117e1)[_0xa677('0x29')](handleEntityNotFound(_0x1f7811,null))['then'](respondWithResult(_0x1f7811,null))['catch'](handleError(_0x1f7811,null));};exports[_0xa677('0x2a')]=function(_0x9a0837,_0x3775d0){return db['DashboardItem']['find']({'where':{'id':_0x9a0837[_0xa677('0x2e')]['id']}})[_0xa677('0x29')](handleEntityNotFound(_0x3775d0,null))[_0xa677('0x29')](removeEntity(_0x3775d0,null))[_0xa677('0x3b')](handleError(_0x3775d0,null));};function widgetAttributes(_0x52a56e){try{switch(_0x52a56e[_0xa677('0x3c')]){case _0xa677('0x3d'):return[{'name':'attrUrl','value':_0x52a56e['attrUrl']||(_0x52a56e[_0xa677('0x3e')]&&_0x52a56e[_0xa677('0x3e')][0x0]?_0x52a56e['attrs'][0x0][_0xa677('0x3f')]:undefined)||'https://'}];case _0xa677('0x40'):return[{'name':_0xa677('0x41'),'value':_0x52a56e['attrPath']||(_0x52a56e[_0xa677('0x3e')]&&_0x52a56e[_0xa677('0x3e')][0x0]?_0x52a56e[_0xa677('0x3e')][0x0][_0xa677('0x3f')]:undefined)||''}];case _0xa677('0x42'):return[{'name':_0xa677('0x43'),'value':_0x52a56e[_0xa677('0x43')]||(_0x52a56e[_0xa677('0x3e')]&&_0x52a56e[_0xa677('0x3e')][0x0]?_0x52a56e['attrs'][0x0][_0xa677('0x3f')]:undefined)||_0xa677('0x44')},{'name':_0xa677('0x45'),'value':_0x52a56e[_0xa677('0x45')]||(_0x52a56e['attrs']&&_0x52a56e['attrs'][0x1]?_0x52a56e['attrs'][0x1][_0xa677('0x3f')]:undefined)||_0xa677('0x46')},{'name':'attrFontSize','value':_0x52a56e[_0xa677('0x47')]||(_0x52a56e[_0xa677('0x3e')]&&_0x52a56e[_0xa677('0x3e')][0x2]?_0x52a56e['attrs'][0x2][_0xa677('0x3f')]:undefined)||0xc}];case _0xa677('0x48'):return[{'name':_0xa677('0x49'),'value':_0x52a56e[_0xa677('0x49')]||(_0x52a56e[_0xa677('0x3e')]&&_0x52a56e[_0xa677('0x3e')][0x0]?_0x52a56e[_0xa677('0x3e')][0x0][_0xa677('0x3f')]:undefined)||_0xa677('0x4a')},{'name':_0xa677('0x4b'),'value':_0x52a56e[_0xa677('0x4b')]||(_0x52a56e[_0xa677('0x3e')]&&_0x52a56e[_0xa677('0x3e')][0x1]?_0x52a56e['attrs'][0x1]['value']:undefined)||[]},{'name':_0xa677('0x47'),'value':_0x52a56e[_0xa677('0x47')]||(_0x52a56e[_0xa677('0x3e')]&&_0x52a56e[_0xa677('0x3e')][0x2]?_0x52a56e[_0xa677('0x3e')][0x2][_0xa677('0x3f')]:undefined)||0x14},{'name':_0xa677('0x4c'),'value':_0x52a56e['attrChannel']||(_0x52a56e[_0xa677('0x3e')]&&_0x52a56e['attrs'][0x3]?_0x52a56e[_0xa677('0x3e')][0x3][_0xa677('0x3f')]:undefined)||_0xa677('0x4d')},{'name':_0xa677('0x4e'),'value':_0x52a56e[_0xa677('0x4e')]||(_0x52a56e[_0xa677('0x3e')]&&_0x52a56e[_0xa677('0x3e')][0x4]?_0x52a56e[_0xa677('0x3e')][0x4][_0xa677('0x3f')]:undefined)||''},{'name':_0xa677('0x4f'),'value':_0x52a56e['attrFaxAccounts']||(_0x52a56e['attrs']&&_0x52a56e[_0xa677('0x3e')][0x5]?_0x52a56e[_0xa677('0x3e')][0x5][_0xa677('0x3f')]:undefined)||''},{'name':_0xa677('0x50'),'value':_0x52a56e[_0xa677('0x50')]||(_0x52a56e[_0xa677('0x3e')]&&_0x52a56e['attrs'][0x6]?_0x52a56e[_0xa677('0x3e')][0x6]['value']:undefined)||''},{'name':_0xa677('0x51'),'value':_0x52a56e[_0xa677('0x51')]||(_0x52a56e['attrs']&&_0x52a56e['attrs'][0x7]?_0x52a56e[_0xa677('0x3e')][0x7][_0xa677('0x3f')]:undefined)||''},{'name':'attrWhatsappAccounts','value':_0x52a56e[_0xa677('0x52')]||(_0x52a56e[_0xa677('0x3e')]&&_0x52a56e[_0xa677('0x3e')][0x8]?_0x52a56e[_0xa677('0x3e')][0x8][_0xa677('0x3f')]:undefined)||''},{'name':_0xa677('0x53'),'value':_0x52a56e[_0xa677('0x53')]||(_0x52a56e[_0xa677('0x3e')]&&_0x52a56e[_0xa677('0x3e')][0x9]?_0x52a56e[_0xa677('0x3e')][0x9][_0xa677('0x3f')]:undefined)||''}];case'multibar-chart':case _0xa677('0x54'):return[{'name':_0xa677('0x55'),'value':_0x52a56e[_0xa677('0x55')]||(_0x52a56e[_0xa677('0x3e')]&&_0x52a56e[_0xa677('0x3e')][0x0]?_0x52a56e[_0xa677('0x3e')][0x0][_0xa677('0x3f')]:undefined)||_0xa677('0x4a')},{'name':_0xa677('0x56'),'value':_0x52a56e[_0xa677('0x56')]||(_0x52a56e[_0xa677('0x3e')]&&_0x52a56e[_0xa677('0x3e')][0x1]?_0x52a56e[_0xa677('0x3e')][0x1][_0xa677('0x3f')]:undefined)||null},{'name':'attrSerie3','value':_0x52a56e[_0xa677('0x57')]||(_0x52a56e[_0xa677('0x3e')]&&_0x52a56e[_0xa677('0x3e')][0x2]?_0x52a56e[_0xa677('0x3e')][0x2]['value']:undefined)||null},{'name':_0xa677('0x4b'),'value':_0x52a56e['attrVoiceQueues']||(_0x52a56e['attrs']&&_0x52a56e[_0xa677('0x3e')][0x3]?_0x52a56e['attrs'][0x3][_0xa677('0x3f')]:undefined)||[]},{'name':_0xa677('0x4c'),'value':_0x52a56e['attrChannel']||(_0x52a56e[_0xa677('0x3e')]&&_0x52a56e[_0xa677('0x3e')][0x4]?_0x52a56e[_0xa677('0x3e')][0x4]['value']:undefined)||'voice'},{'name':_0xa677('0x4e'),'value':_0x52a56e[_0xa677('0x4e')]||(_0x52a56e[_0xa677('0x3e')]&&_0x52a56e[_0xa677('0x3e')][0x5]?_0x52a56e[_0xa677('0x3e')][0x5][_0xa677('0x3f')]:undefined)||''},{'name':_0xa677('0x4f'),'value':_0x52a56e[_0xa677('0x4f')]||(_0x52a56e[_0xa677('0x3e')]&&_0x52a56e[_0xa677('0x3e')][0x6]?_0x52a56e['attrs'][0x6][_0xa677('0x3f')]:undefined)||''},{'name':_0xa677('0x50'),'value':_0x52a56e[_0xa677('0x50')]||(_0x52a56e[_0xa677('0x3e')]&&_0x52a56e[_0xa677('0x3e')][0x7]?_0x52a56e[_0xa677('0x3e')][0x7][_0xa677('0x3f')]:undefined)||''},{'name':_0xa677('0x51'),'value':_0x52a56e['attrOpenchannelAccounts']||(_0x52a56e['attrs']&&_0x52a56e[_0xa677('0x3e')][0x8]?_0x52a56e['attrs'][0x8][_0xa677('0x3f')]:undefined)||''},{'name':_0xa677('0x52'),'value':_0x52a56e[_0xa677('0x52')]||(_0x52a56e[_0xa677('0x3e')]&&_0x52a56e['attrs'][0x9]?_0x52a56e[_0xa677('0x3e')][0x9][_0xa677('0x3f')]:undefined)||''},{'name':_0xa677('0x53'),'value':_0x52a56e[_0xa677('0x53')]||(_0x52a56e['attrs']&&_0x52a56e['attrs'][0xa]?_0x52a56e[_0xa677('0x3e')][0xa][_0xa677('0x3f')]:undefined)||''}];case'web-report':return[{'name':'attrReport','type':_0x52a56e['reportType']||(_0x52a56e[_0xa677('0x3e')]&&_0x52a56e['attrs'][0x0]?_0x52a56e[_0xa677('0x3e')][0x0]['type']:undefined)||null,'value':_0x52a56e[_0xa677('0x58')]||(_0x52a56e['attrs']&&_0x52a56e[_0xa677('0x3e')][0x0]?_0x52a56e[_0xa677('0x3e')][0x0][_0xa677('0x3f')]:undefined)||null},{'name':_0xa677('0x59'),'value':_0x52a56e[_0xa677('0x59')]||(_0x52a56e[_0xa677('0x3e')]&&_0x52a56e[_0xa677('0x3e')][0x1]?_0x52a56e[_0xa677('0x3e')][0x1]['value']:undefined)||0x0}];default:return[];}}catch(_0x52ea5b){logger[_0xa677('0x2b')](_0xa677('0x5a'),JSON[_0xa677('0x5b')](_0x52ea5b));return[];}}exports['create']=function(_0x2af9eb,_0xd97ef7){if(_0x2af9eb[_0xa677('0x5c')]){_0x2af9eb[_0xa677('0x5c')][_0xa677('0x3e')]=widgetAttributes(_0x2af9eb[_0xa677('0x5c')]);}return db[_0xa677('0x31')][_0xa677('0x5d')](_0x2af9eb[_0xa677('0x5c')],{})['then'](respondWithResult(_0xd97ef7,0xc9))[_0xa677('0x3b')](handleError(_0xd97ef7,null));};exports['update']=function(_0x41868d,_0x44ef2d){if(_0x41868d[_0xa677('0x5c')]['id']){delete _0x41868d[_0xa677('0x5c')]['id'];}_0x41868d[_0xa677('0x5c')][_0xa677('0x3e')]=widgetAttributes(_0x41868d[_0xa677('0x5c')]);return db[_0xa677('0x31')]['find']({'where':{'id':_0x41868d[_0xa677('0x2e')]['id']}})[_0xa677('0x29')](handleEntityNotFound(_0x44ef2d,null))['then'](saveUpdates(_0x41868d[_0xa677('0x5c')],null))['then'](respondWithResult(_0x44ef2d,null))[_0xa677('0x3b')](handleError(_0x44ef2d,null));};
\ No newline at end of file
index 0e7341b..3de67e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c8d=['emit','hook','../../mysqldb','DashboardItem','setMaxListeners','save','update'];(function(_0x4a0f54,_0x4c0cd4){var _0x3d8bec=function(_0x3e5750){while(--_0x3e5750){_0x4a0f54['push'](_0x4a0f54['shift']());}};_0x3d8bec(++_0x4c0cd4);}(_0x0c8d,0x79));var _0xd0c8=function(_0x342baa,_0x4a110f){_0x342baa=_0x342baa-0x0;var _0x1208f3=_0x0c8d[_0x342baa];return _0x1208f3;};'use strict';var EventEmitter=require('events');var DashboardItem=require(_0xd0c8('0x0'))['db'][_0xd0c8('0x1')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0xd0c8('0x2')](0x0);var events={'afterCreate':_0xd0c8('0x3'),'afterUpdate':_0xd0c8('0x4'),'afterDestroy':'remove'};function emitEvent(_0x5cda35){return function(_0x4ced07,_0x5d1585,_0x398ae6){DashboardItemEvents[_0xd0c8('0x5')](_0x5cda35+':'+_0x4ced07['id'],_0x4ced07);DashboardItemEvents[_0xd0c8('0x5')](_0x5cda35,_0x4ced07);_0x398ae6(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];DashboardItem[_0xd0c8('0x6')](e,emitEvent(event));}}module['exports']=DashboardItemEvents;
\ No newline at end of file
+var _0xdd7e=['exports','events','../../mysqldb','DashboardItem','setMaxListeners','save','update','emit','hasOwnProperty','hook'];(function(_0x438c12,_0x14ae57){var _0x3d76e6=function(_0x3e81bc){while(--_0x3e81bc){_0x438c12['push'](_0x438c12['shift']());}};_0x3d76e6(++_0x14ae57);}(_0xdd7e,0x1c3));var _0xedd7=function(_0x1eb14d,_0x406ddc){_0x1eb14d=_0x1eb14d-0x0;var _0x23b10f=_0xdd7e[_0x1eb14d];return _0x23b10f;};'use strict';var EventEmitter=require(_0xedd7('0x0'));var DashboardItem=require(_0xedd7('0x1'))['db'][_0xedd7('0x2')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0xedd7('0x3')](0x0);var events={'afterCreate':_0xedd7('0x4'),'afterUpdate':_0xedd7('0x5'),'afterDestroy':'remove'};function emitEvent(_0x10786a){return function(_0xf46f8b,_0x2a7d5e,_0x3ba84f){DashboardItemEvents[_0xedd7('0x6')](_0x10786a+':'+_0xf46f8b['id'],_0xf46f8b);DashboardItemEvents[_0xedd7('0x6')](_0x10786a,_0xf46f8b);_0x3ba84f(null);};}for(var e in events){if(events[_0xedd7('0x7')](e)){var event=events[e];DashboardItem[_0xedd7('0x8')](e,emitEvent(event));}}module[_0xedd7('0x9')]=DashboardItemEvents;
\ No newline at end of file
index 6fdc090..db1561b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5715=['./dashboardItem.attributes','exports','define','lodash','util','api','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x576e92,_0x165314){var _0x24c32e=function(_0x1648b1){while(--_0x1648b1){_0x576e92['push'](_0x576e92['shift']());}};_0x24c32e(++_0x165314);}(_0x5715,0xd4));var _0x5571=function(_0x1c7889,_0x24cd26){_0x1c7889=_0x1c7889-0x0;var _0x2f14e5=_0x5715[_0x1c7889];return _0x2f14e5;};'use strict';var _=require(_0x5571('0x0'));var util=require(_0x5571('0x1'));var logger=require('../../config/logger')(_0x5571('0x2'));var moment=require('moment');var BPromise=require(_0x5571('0x3'));var rp=require(_0x5571('0x4'));var fs=require('fs');var path=require(_0x5571('0x5'));var rimraf=require(_0x5571('0x6'));var config=require(_0x5571('0x7'));var attributes=require(_0x5571('0x8'));module[_0x5571('0x9')]=function(_0x5a4fbe,_0x397cb2){return _0x5a4fbe[_0x5571('0xa')]('DashboardItem',attributes,{'tableName':'dashboard_items','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc2c8=['path','../../config/environment','exports','DashboardItem','lodash','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x470fc6,_0x13f6f7){var _0x1c2a18=function(_0x5ac869){while(--_0x5ac869){_0x470fc6['push'](_0x470fc6['shift']());}};_0x1c2a18(++_0x13f6f7);}(_0xc2c8,0x1e4));var _0x8c2c=function(_0x24a0aa,_0x46cfc0){_0x24a0aa=_0x24a0aa-0x0;var _0x5d8cc7=_0xc2c8[_0x24a0aa];return _0x5d8cc7;};'use strict';var _=require(_0x8c2c('0x0'));var util=require(_0x8c2c('0x1'));var logger=require(_0x8c2c('0x2'))('api');var moment=require(_0x8c2c('0x3'));var BPromise=require(_0x8c2c('0x4'));var rp=require(_0x8c2c('0x5'));var fs=require('fs');var path=require(_0x8c2c('0x6'));var rimraf=require('rimraf');var config=require(_0x8c2c('0x7'));var attributes=require('./dashboardItem.attributes');module[_0x8c2c('0x8')]=function(_0x403620,_0x1fbb60){return _0x403620['define'](_0x8c2c('0x9'),attributes,{'tableName':'dashboard_items','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 709af83..ca6992a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a85=['stringify','error','code','message','info','request\x20sent','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./dashboardItem.socket','request','then','DashboardItem,\x20%s,\x20%s'];(function(_0x32044d,_0x356182){var _0x64e5d3=function(_0x41c161){while(--_0x41c161){_0x32044d['push'](_0x32044d['shift']());}};_0x64e5d3(++_0x356182);}(_0x4a85,0x14b));var _0x54a8=function(_0x24f31b,_0x44b8f3){_0x24f31b=_0x24f31b-0x0;var _0x488401=_0x4a85[_0x24f31b];return _0x488401;};'use strict';var _=require(_0x54a8('0x0'));var util=require('util');var moment=require(_0x54a8('0x1'));var BPromise=require(_0x54a8('0x2'));var rs=require(_0x54a8('0x3'));var fs=require('fs');var Redis=require(_0x54a8('0x4'));var db=require(_0x54a8('0x5'))['db'];var utils=require(_0x54a8('0x6'));var logger=require(_0x54a8('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x54a8('0x8'));var client=jayson[_0x54a8('0x9')][_0x54a8('0xa')]({'port':0x232a});config[_0x54a8('0xb')]=_[_0x54a8('0xc')](config[_0x54a8('0xb')],{'host':_0x54a8('0xd'),'port':0x18eb});var socket=require(_0x54a8('0xe'))(new Redis(config[_0x54a8('0xb')]));require(_0x54a8('0xf'))['register'](socket);function respondWithRpcPromise(_0xadd02a,_0x3aa6b9,_0x20e9f2){return new BPromise(function(_0x4551ea,_0x20d77e){return client[_0x54a8('0x10')](_0xadd02a,_0x20e9f2)[_0x54a8('0x11')](function(_0x2534ca){logger['info'](_0x54a8('0x12'),_0x3aa6b9,'request\x20sent');logger['debug']('DashboardItem,\x20%s,\x20%s,\x20%s',_0x3aa6b9,'request\x20sent',JSON[_0x54a8('0x13')](_0x2534ca));if(_0x2534ca[_0x54a8('0x14')]){if(_0x2534ca[_0x54a8('0x14')][_0x54a8('0x15')]===0x1f4){logger[_0x54a8('0x14')]('DashboardItem,\x20%s,\x20%s',_0x3aa6b9,_0x2534ca[_0x54a8('0x14')]['message']);return _0x20d77e(_0x2534ca[_0x54a8('0x14')][_0x54a8('0x16')]);}logger['error'](_0x54a8('0x12'),_0x3aa6b9,_0x2534ca[_0x54a8('0x14')][_0x54a8('0x16')]);return _0x4551ea(_0x2534ca['error'][_0x54a8('0x16')]);}else{logger[_0x54a8('0x17')](_0x54a8('0x12'),_0x3aa6b9,_0x54a8('0x18'));_0x4551ea(_0x2534ca['result']['message']);}})['catch'](function(_0x25ac57){logger['error'](_0x54a8('0x12'),_0x3aa6b9,_0x25ac57);_0x20d77e(_0x25ac57);});});}
\ No newline at end of file
+var _0x61e0=['./dashboardItem.socket','register','request','then','info','request\x20sent','debug','stringify','error','code','DashboardItem,\x20%s,\x20%s','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter'];(function(_0x24abe1,_0x4cf4ed){var _0x346cdf=function(_0x29815c){while(--_0x29815c){_0x24abe1['push'](_0x24abe1['shift']());}};_0x346cdf(++_0x4cf4ed);}(_0x61e0,0x13a));var _0x061e=function(_0x5ac053,_0x284463){_0x5ac053=_0x5ac053-0x0;var _0x445a7f=_0x61e0[_0x5ac053];return _0x445a7f;};'use strict';var _=require(_0x061e('0x0'));var util=require(_0x061e('0x1'));var moment=require(_0x061e('0x2'));var BPromise=require('bluebird');var rs=require(_0x061e('0x3'));var fs=require('fs');var Redis=require(_0x061e('0x4'));var db=require(_0x061e('0x5'))['db'];var utils=require(_0x061e('0x6'));var logger=require(_0x061e('0x7'))(_0x061e('0x8'));var config=require(_0x061e('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x061e('0xa')][_0x061e('0xb')]({'port':0x232a});config[_0x061e('0xc')]=_[_0x061e('0xd')](config[_0x061e('0xc')],{'host':_0x061e('0xe'),'port':0x18eb});var socket=require(_0x061e('0xf'))(new Redis(config['redis']));require(_0x061e('0x10'))[_0x061e('0x11')](socket);function respondWithRpcPromise(_0x2b5f3b,_0x6f739b,_0x20d37b){return new BPromise(function(_0x2151e6,_0x1a3e38){return client[_0x061e('0x12')](_0x2b5f3b,_0x20d37b)[_0x061e('0x13')](function(_0x5b3ee7){logger[_0x061e('0x14')]('DashboardItem,\x20%s,\x20%s',_0x6f739b,_0x061e('0x15'));logger[_0x061e('0x16')]('DashboardItem,\x20%s,\x20%s,\x20%s',_0x6f739b,_0x061e('0x15'),JSON[_0x061e('0x17')](_0x5b3ee7));if(_0x5b3ee7['error']){if(_0x5b3ee7[_0x061e('0x18')][_0x061e('0x19')]===0x1f4){logger[_0x061e('0x18')](_0x061e('0x1a'),_0x6f739b,_0x5b3ee7['error'][_0x061e('0x1b')]);return _0x1a3e38(_0x5b3ee7[_0x061e('0x18')]['message']);}logger[_0x061e('0x18')](_0x061e('0x1a'),_0x6f739b,_0x5b3ee7[_0x061e('0x18')][_0x061e('0x1b')]);return _0x2151e6(_0x5b3ee7[_0x061e('0x18')][_0x061e('0x1b')]);}else{logger['info'](_0x061e('0x1a'),_0x6f739b,_0x061e('0x15'));_0x2151e6(_0x5b3ee7[_0x061e('0x1c')][_0x061e('0x1b')]);}})[_0x061e('0x1d')](function(_0x107dc6){logger[_0x061e('0x18')](_0x061e('0x1a'),_0x6f739b,_0x107dc6);_0x1a3e38(_0x107dc6);});});}
\ No newline at end of file
index 5f9c548..b022cd1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x745e=['emit','removeListener','register','dashboardItem:','./dashboardItem.events','remove','update'];(function(_0x162e6e,_0x5c94a7){var _0x312729=function(_0x578e80){while(--_0x578e80){_0x162e6e['push'](_0x162e6e['shift']());}};_0x312729(++_0x5c94a7);}(_0x745e,0xb3));var _0xe745=function(_0x4507a4,_0x5b3cfc){_0x4507a4=_0x4507a4-0x0;var _0x521374=_0x745e[_0x4507a4];return _0x521374;};'use strict';var DashboardItemEvents=require(_0xe745('0x0'));var events=['save',_0xe745('0x1'),_0xe745('0x2')];function createListener(_0x130a97,_0x844ee2){return function(_0x4cabd0){_0x844ee2[_0xe745('0x3')](_0x130a97,_0x4cabd0);};}function removeListener(_0x35a02f,_0x25f406){return function(){DashboardItemEvents[_0xe745('0x4')](_0x35a02f,_0x25f406);};}exports[_0xe745('0x5')]=function(_0x16386e){for(var _0x6159b1=0x0,_0x34259b=events['length'];_0x6159b1<_0x34259b;_0x6159b1++){var _0x21528e=events[_0x6159b1];var _0x40efbf=createListener(_0xe745('0x6')+_0x21528e,_0x16386e);DashboardItemEvents['on'](_0x21528e,_0x40efbf);}};
\ No newline at end of file
+var _0xc0f8=['register','length','dashboardItem:','./dashboardItem.events','save','remove','update','removeListener'];(function(_0x273072,_0x467664){var _0x55f1c5=function(_0x594e8a){while(--_0x594e8a){_0x273072['push'](_0x273072['shift']());}};_0x55f1c5(++_0x467664);}(_0xc0f8,0x133));var _0x8c0f=function(_0x37b27b,_0x20f98c){_0x37b27b=_0x37b27b-0x0;var _0x3e7654=_0xc0f8[_0x37b27b];return _0x3e7654;};'use strict';var DashboardItemEvents=require(_0x8c0f('0x0'));var events=[_0x8c0f('0x1'),_0x8c0f('0x2'),_0x8c0f('0x3')];function createListener(_0x524916,_0x3e02f0){return function(_0x5b531b){_0x3e02f0['emit'](_0x524916,_0x5b531b);};}function removeListener(_0x23e872,_0x3f0d60){return function(){DashboardItemEvents[_0x8c0f('0x4')](_0x23e872,_0x3f0d60);};}exports[_0x8c0f('0x5')]=function(_0x28882a){for(var _0x232fd5=0x0,_0x35b987=events[_0x8c0f('0x6')];_0x232fd5<_0x35b987;_0x232fd5++){var _0x3a5088=events[_0x232fd5];var _0x585578=createListener(_0x8c0f('0x7')+_0x3a5088,_0x28882a);DashboardItemEvents['on'](_0x3a5088,_0x585578);}};
\ No newline at end of file
index 2c3d7ec..25b012b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa356=['show','post','create','put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./dashboardItem.controller','get','/:id','isAuthenticated'];(function(_0x2e58f4,_0x56e6e9){var _0x27ab04=function(_0x5c5936){while(--_0x5c5936){_0x2e58f4['push'](_0x2e58f4['shift']());}};_0x27ab04(++_0x56e6e9);}(_0xa356,0xbb));var _0x6a35=function(_0x5b80fc,_0x548e2c){_0x5b80fc=_0x5b80fc-0x0;var _0x151317=_0xa356[_0x5b80fc];return _0x151317;};'use strict';var multer=require(_0x6a35('0x0'));var util=require(_0x6a35('0x1'));var path=require(_0x6a35('0x2'));var timeout=require(_0x6a35('0x3'));var express=require(_0x6a35('0x4'));var router=express[_0x6a35('0x5')]();var fs_extra=require(_0x6a35('0x6'));var auth=require(_0x6a35('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x6a35('0x8'));var controller=require(_0x6a35('0x9'));router[_0x6a35('0xa')](_0x6a35('0xb'),auth[_0x6a35('0xc')](),controller[_0x6a35('0xd')]);router[_0x6a35('0xe')]('/',auth[_0x6a35('0xc')](),controller[_0x6a35('0xf')]);router[_0x6a35('0x10')](_0x6a35('0xb'),auth[_0x6a35('0xc')](),controller[_0x6a35('0x11')]);router[_0x6a35('0x12')](_0x6a35('0xb'),auth[_0x6a35('0xc')](),controller[_0x6a35('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x2c59=['exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/:id','isAuthenticated','show','post','put','update','delete','destroy'];(function(_0xc0a3da,_0x5afb16){var _0x124159=function(_0x3b4788){while(--_0x3b4788){_0xc0a3da['push'](_0xc0a3da['shift']());}};_0x124159(++_0x5afb16);}(_0x2c59,0x10f));var _0x92c5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2c59[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x92c5('0x0'));var util=require('util');var path=require(_0x92c5('0x1'));var timeout=require('connect-timeout');var express=require(_0x92c5('0x2'));var router=express[_0x92c5('0x3')]();var fs_extra=require(_0x92c5('0x4'));var auth=require(_0x92c5('0x5'));var interaction=require(_0x92c5('0x6'));var config=require(_0x92c5('0x7'));var controller=require('./dashboardItem.controller');router[_0x92c5('0x8')](_0x92c5('0x9'),auth[_0x92c5('0xa')](),controller[_0x92c5('0xb')]);router[_0x92c5('0xc')]('/',auth['isAuthenticated'](),controller['create']);router[_0x92c5('0xd')]('/:id',auth[_0x92c5('0xa')](),controller[_0x92c5('0xe')]);router[_0x92c5('0xf')](_0x92c5('0x9'),auth['isAuthenticated'](),controller[_0x92c5('0x10')]);module[_0x92c5('0x11')]=router;
\ No newline at end of file
index 69e3364..9a17c50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad8d=['STRING','first','exports'];(function(_0x43d130,_0x5964ab){var _0x22afc9=function(_0x360c82){while(--_0x360c82){_0x43d130['push'](_0x43d130['shift']());}};_0x22afc9(++_0x5964ab);}(_0xad8d,0x1ca));var _0xdad8=function(_0x36087c,_0x34daad){_0x36087c=_0x36087c-0x0;var _0x24563e=_0xad8d[_0x36087c];return _0x24563e;};'use strict';var Sequelize=require('sequelize');module[_0xdad8('0x0')]={'name':{'type':Sequelize[_0xdad8('0x1')],'allowNull':![]},'level':{'type':Sequelize['ENUM'](_0xdad8('0x2'),'second','third'),'allowNull':![],'defaultValue':'first'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x2b08=['second','third','sequelize','exports','STRING','ENUM','first'];(function(_0x571320,_0x3f5436){var _0x1aa863=function(_0x158dc1){while(--_0x158dc1){_0x571320['push'](_0x571320['shift']());}};_0x1aa863(++_0x3f5436);}(_0x2b08,0xdb));var _0x82b0=function(_0x1b67d6,_0x1da4d3){_0x1b67d6=_0x1b67d6-0x0;var _0x17eee8=_0x2b08[_0x1b67d6];return _0x17eee8;};'use strict';var Sequelize=require(_0x82b0('0x0'));module[_0x82b0('0x1')]={'name':{'type':Sequelize[_0x82b0('0x2')],'allowNull':![]},'level':{'type':Sequelize[_0x82b0('0x3')](_0x82b0('0x4'),_0x82b0('0x5'),_0x82b0('0x6')),'allowNull':![],'defaultValue':_0x82b0('0x4')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 420c1eb..0b4c684 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd383=['json','offset','limit','undefined','count','apply','save','update','then','destroy','get','UserProfileResource','error','stack','name','send','rawAttributes','fieldName','type','model','map','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','sort','where','pick','filter','merge','options','includeAll','include','Disposition','findAll','catch','show','params','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end'];(function(_0x5ee1ef,_0x8d83d5){var _0x601cdc=function(_0xf3f658){while(--_0xf3f658){_0x5ee1ef['push'](_0x5ee1ef['shift']());}};_0x601cdc(++_0x8d83d5);}(_0xd383,0x1c4));var _0x3d38=function(_0x1762b4,_0x33d836){_0x1762b4=_0x1762b4-0x0;var _0x29beda=_0xd383[_0x1762b4];return _0x29beda;};'use strict';var emlformat=require(_0x3d38('0x0'));var rimraf=require(_0x3d38('0x1'));var zipdir=require(_0x3d38('0x2'));var jsonpatch=require(_0x3d38('0x3'));var rp=require(_0x3d38('0x4'));var moment=require(_0x3d38('0x5'));var BPromise=require(_0x3d38('0x6'));var Mustache=require('mustache');var util=require(_0x3d38('0x7'));var path=require(_0x3d38('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3d38('0x9'));var _=require(_0x3d38('0xa'));var squel=require(_0x3d38('0xb'));var crypto=require(_0x3d38('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x3d38('0xd'));var toCsv=require(_0x3d38('0xe'));var querystring=require(_0x3d38('0xf'));var Papa=require('papaparse');var Redis=require(_0x3d38('0x10'));var authService=require(_0x3d38('0x11'));var qs=require(_0x3d38('0x12'));var as=require(_0x3d38('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3d38('0x14'))(_0x3d38('0x15'));var utils=require(_0x3d38('0x16'));var config=require(_0x3d38('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x3d38('0x18'))['db'];function respondWithStatusCode(_0x10f31d,_0x5a70d9){_0x5a70d9=_0x5a70d9||0xcc;return function(_0x2fbe76){if(_0x2fbe76){return _0x10f31d[_0x3d38('0x19')](_0x5a70d9);}return _0x10f31d[_0x3d38('0x1a')](_0x5a70d9)[_0x3d38('0x1b')]();};}function respondWithResult(_0x2e6b38,_0x204ec9){_0x204ec9=_0x204ec9||0xc8;return function(_0x115b53){if(_0x115b53){return _0x2e6b38[_0x3d38('0x1a')](_0x204ec9)[_0x3d38('0x1c')](_0x115b53);}};}function respondWithFilteredResult(_0x14694c,_0x22af6a){return function(_0x1f919b){if(_0x1f919b){var _0x4dd0ef=typeof _0x22af6a[_0x3d38('0x1d')]==='undefined'&&typeof _0x22af6a[_0x3d38('0x1e')]===_0x3d38('0x1f');var _0xe57ae8=_0x1f919b[_0x3d38('0x20')];var _0x16fd3a=_0x4dd0ef?0x0:_0x22af6a[_0x3d38('0x1d')];var _0x20dcd4=_0x4dd0ef?_0x1f919b[_0x3d38('0x20')]:_0x22af6a['offset']+_0x22af6a[_0x3d38('0x1e')];var _0x517b5e;if(_0x20dcd4>=_0xe57ae8){_0x20dcd4=_0xe57ae8;_0x517b5e=0xc8;}else{_0x517b5e=0xce;}_0x14694c['status'](_0x517b5e);return _0x14694c['set']('Content-Range',_0x16fd3a+'-'+_0x20dcd4+'/'+_0xe57ae8)['json'](_0x1f919b);}return null;};}function patchUpdates(_0x5bc95a){return function(_0x843aa9){try{jsonpatch[_0x3d38('0x21')](_0x843aa9,_0x5bc95a,!![]);}catch(_0x5ea5ee){return BPromise['reject'](_0x5ea5ee);}return _0x843aa9[_0x3d38('0x22')]();};}function saveUpdates(_0x7e362f,_0x362e5b){return function(_0x1b5dd5){if(_0x1b5dd5){return _0x1b5dd5[_0x3d38('0x23')](_0x7e362f)[_0x3d38('0x24')](function(_0x49e23d){return _0x49e23d;});}return null;};}function removeEntity(_0x544b20,_0x13de7b){return function(_0xe8ee74){if(_0xe8ee74){return _0xe8ee74[_0x3d38('0x25')]()[_0x3d38('0x24')](function(){var _0x184d6d=_0xe8ee74[_0x3d38('0x26')]({'plain':!![]});var _0xa60890='Dispositions';return db[_0x3d38('0x27')]['destroy']({'where':{'type':_0xa60890,'resourceId':_0x184d6d['id']}})[_0x3d38('0x24')](function(){return _0xe8ee74;});})[_0x3d38('0x24')](function(){_0x544b20[_0x3d38('0x1a')](0xcc)[_0x3d38('0x1b')]();});}};}function handleEntityNotFound(_0x314a4e,_0x495aaf){return function(_0x54f419){if(!_0x54f419){_0x314a4e[_0x3d38('0x19')](0x194);}return _0x54f419;};}function handleError(_0xe11db2,_0x34b648){_0x34b648=_0x34b648||0x1f4;return function(_0x38f0ff){logger[_0x3d38('0x28')](_0x38f0ff[_0x3d38('0x29')]);if(_0x38f0ff['name']){delete _0x38f0ff[_0x3d38('0x2a')];}_0xe11db2[_0x3d38('0x1a')](_0x34b648)[_0x3d38('0x2b')](_0x38f0ff);};}exports['index']=function(_0xf600f6,_0x18010d){var _0x4c3d8c={},_0x51299c={},_0x249642={'count':0x0,'rows':[]};var _0xfbfd03=_['map'](db['Disposition'][_0x3d38('0x2c')],function(_0x246fec){return{'name':_0x246fec[_0x3d38('0x2d')],'type':_0x246fec[_0x3d38('0x2e')]['key']};});_0x51299c[_0x3d38('0x2f')]=_[_0x3d38('0x30')](_0xfbfd03,'name');_0x51299c['query']=_[_0x3d38('0x31')](_0xf600f6[_0x3d38('0x32')]);_0x51299c[_0x3d38('0x33')]=_['intersection'](_0x51299c[_0x3d38('0x2f')],_0x51299c['query']);_0x4c3d8c[_0x3d38('0x34')]=_[_0x3d38('0x35')](_0x51299c[_0x3d38('0x2f')],qs[_0x3d38('0x36')](_0xf600f6[_0x3d38('0x32')][_0x3d38('0x36')]));_0x4c3d8c[_0x3d38('0x34')]=_0x4c3d8c[_0x3d38('0x34')][_0x3d38('0x37')]?_0x4c3d8c[_0x3d38('0x34')]:_0x51299c[_0x3d38('0x2f')];if(!_0xf600f6[_0x3d38('0x32')][_0x3d38('0x38')]('nolimit')){_0x4c3d8c[_0x3d38('0x1e')]=qs[_0x3d38('0x1e')](_0xf600f6[_0x3d38('0x32')][_0x3d38('0x1e')]);_0x4c3d8c[_0x3d38('0x1d')]=qs[_0x3d38('0x1d')](_0xf600f6[_0x3d38('0x32')][_0x3d38('0x1d')]);}_0x4c3d8c['order']=qs[_0x3d38('0x39')](_0xf600f6[_0x3d38('0x32')][_0x3d38('0x39')]);_0x4c3d8c[_0x3d38('0x3a')]=qs[_0x3d38('0x33')](_[_0x3d38('0x3b')](_0xf600f6[_0x3d38('0x32')],_0x51299c[_0x3d38('0x33')]),_0xfbfd03);if(_0xf600f6[_0x3d38('0x32')][_0x3d38('0x3c')]){_0x4c3d8c['where']=_['merge'](_0x4c3d8c['where'],{'$or':_['map'](_0xfbfd03,function(_0x5b2fb5){if(_0x5b2fb5[_0x3d38('0x2e')]!=='VIRTUAL'){var _0x3eab40={};_0x3eab40[_0x5b2fb5[_0x3d38('0x2a')]]={'$like':'%'+_0xf600f6[_0x3d38('0x32')]['filter']+'%'};return _0x3eab40;}})});}_0x4c3d8c=_[_0x3d38('0x3d')]({},_0x4c3d8c,_0xf600f6[_0x3d38('0x3e')]);var _0x45a22e={'where':_0x4c3d8c[_0x3d38('0x3a')]};return db['Disposition']['count'](_0x45a22e)[_0x3d38('0x24')](function(_0x82e81b){_0x249642[_0x3d38('0x20')]=_0x82e81b;if(_0xf600f6['query'][_0x3d38('0x3f')]){_0x4c3d8c[_0x3d38('0x40')]=[{'all':!![]}];}return db[_0x3d38('0x41')][_0x3d38('0x42')](_0x4c3d8c);})[_0x3d38('0x24')](function(_0x1108c2){_0x249642['rows']=_0x1108c2;return _0x249642;})['then'](respondWithFilteredResult(_0x18010d,_0x4c3d8c))[_0x3d38('0x43')](handleError(_0x18010d,null));};exports[_0x3d38('0x44')]=function(_0x2a1bc4,_0x3c620f){var _0x34e285={'raw':!![],'where':{'id':_0x2a1bc4[_0x3d38('0x45')]['id']}},_0x191148={};_0x191148[_0x3d38('0x2f')]=_[_0x3d38('0x31')](db[_0x3d38('0x41')][_0x3d38('0x2c')]);_0x191148[_0x3d38('0x32')]=_[_0x3d38('0x31')](_0x2a1bc4[_0x3d38('0x32')]);_0x191148['filters']=_[_0x3d38('0x35')](_0x191148['model'],_0x191148[_0x3d38('0x32')]);_0x34e285[_0x3d38('0x34')]=_[_0x3d38('0x35')](_0x191148[_0x3d38('0x2f')],qs[_0x3d38('0x36')](_0x2a1bc4['query']['fields']));_0x34e285[_0x3d38('0x34')]=_0x34e285[_0x3d38('0x34')]['length']?_0x34e285[_0x3d38('0x34')]:_0x191148[_0x3d38('0x2f')];if(_0x2a1bc4[_0x3d38('0x32')][_0x3d38('0x3f')]){_0x34e285[_0x3d38('0x40')]=[{'all':!![]}];}_0x34e285=_[_0x3d38('0x3d')]({},_0x34e285,_0x2a1bc4[_0x3d38('0x3e')]);return db[_0x3d38('0x41')]['find'](_0x34e285)[_0x3d38('0x24')](handleEntityNotFound(_0x3c620f,null))[_0x3d38('0x24')](respondWithResult(_0x3c620f,null))['catch'](handleError(_0x3c620f,null));};exports['create']=function(_0x38ef12,_0x2b0435){return db[_0x3d38('0x41')]['create'](_0x38ef12[_0x3d38('0x46')],{})[_0x3d38('0x24')](function(_0x3102df){var _0x11b92c=_0x38ef12[_0x3d38('0x47')][_0x3d38('0x26')]({'plain':!![]});if(!_0x11b92c)throw new Error(_0x3d38('0x48'));if(_0x11b92c[_0x3d38('0x49')]===_0x3d38('0x47')){var _0x3d4cca=_0x3102df['get']({'plain':!![]});var _0x3e77d9='Dispositions';return db[_0x3d38('0x4a')]['find']({'where':{'name':_0x3e77d9,'userProfileId':_0x11b92c[_0x3d38('0x4b')]},'raw':!![]})[_0x3d38('0x24')](function(_0x3a492d){if(_0x3a492d&&_0x3a492d[_0x3d38('0x4c')]===0x0){return db[_0x3d38('0x27')][_0x3d38('0x4d')]({'name':_0x3d4cca[_0x3d38('0x2a')],'resourceId':_0x3d4cca['id'],'type':_0x3a492d['name'],'sectionId':_0x3a492d['id']},{})[_0x3d38('0x24')](function(){return _0x3102df;});}else{return _0x3102df;}})[_0x3d38('0x43')](function(_0x2db3f6){logger[_0x3d38('0x28')](_0x3d38('0x4e'),_0x2db3f6);throw _0x2db3f6;});}return _0x3102df;})[_0x3d38('0x24')](respondWithResult(_0x2b0435,0xc9))[_0x3d38('0x43')](handleError(_0x2b0435,null));};exports[_0x3d38('0x23')]=function(_0x454cef,_0x3c09c3){if(_0x454cef['body']['id']){delete _0x454cef[_0x3d38('0x46')]['id'];}return db[_0x3d38('0x41')][_0x3d38('0x4f')]({'where':{'id':_0x454cef[_0x3d38('0x45')]['id']}})['then'](handleEntityNotFound(_0x3c09c3,null))[_0x3d38('0x24')](saveUpdates(_0x454cef[_0x3d38('0x46')],null))[_0x3d38('0x24')](respondWithResult(_0x3c09c3,null))[_0x3d38('0x43')](handleError(_0x3c09c3,null));};exports[_0x3d38('0x25')]=function(_0x447234,_0x3109b9){return db[_0x3d38('0x41')][_0x3d38('0x4f')]({'where':{'id':_0x447234[_0x3d38('0x45')]['id']}})[_0x3d38('0x24')](handleEntityNotFound(_0x3109b9,null))['then'](removeEntity(_0x3109b9,null))[_0x3d38('0x43')](handleError(_0x3109b9,null));};
\ No newline at end of file
+var _0xa901=['end','offset','undefined','limit','count','set','json','apply','save','update','then','get','UserProfileResource','destroy','stack','name','send','Disposition','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','catch','show','params','length','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Dispositions','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status'];(function(_0x6041e4,_0x458f20){var _0x47350a=function(_0x43913b){while(--_0x43913b){_0x6041e4['push'](_0x6041e4['shift']());}};_0x47350a(++_0x458f20);}(_0xa901,0x189));var _0x1a90=function(_0x5a61d3,_0x3f1275){_0x5a61d3=_0x5a61d3-0x0;var _0x4822b5=_0xa901[_0x5a61d3];return _0x4822b5;};'use strict';var emlformat=require(_0x1a90('0x0'));var rimraf=require(_0x1a90('0x1'));var zipdir=require(_0x1a90('0x2'));var jsonpatch=require(_0x1a90('0x3'));var rp=require(_0x1a90('0x4'));var moment=require(_0x1a90('0x5'));var BPromise=require(_0x1a90('0x6'));var Mustache=require(_0x1a90('0x7'));var util=require(_0x1a90('0x8'));var path=require(_0x1a90('0x9'));var sox=require(_0x1a90('0xa'));var csv=require('to-csv');var ejs=require(_0x1a90('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x1a90('0xc'));var crypto=require('crypto');var jsforce=require(_0x1a90('0xd'));var deskjs=require(_0x1a90('0xe'));var toCsv=require(_0x1a90('0xf'));var querystring=require(_0x1a90('0x10'));var Papa=require(_0x1a90('0x11'));var Redis=require(_0x1a90('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x1a90('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1a90('0x14'));var logger=require('../../config/logger')(_0x1a90('0x15'));var utils=require(_0x1a90('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x1a90('0x17'));var db=require(_0x1a90('0x18'))['db'];function respondWithStatusCode(_0x2d8ef7,_0xb356d9){_0xb356d9=_0xb356d9||0xcc;return function(_0x149cb1){if(_0x149cb1){return _0x2d8ef7[_0x1a90('0x19')](_0xb356d9);}return _0x2d8ef7[_0x1a90('0x1a')](_0xb356d9)[_0x1a90('0x1b')]();};}function respondWithResult(_0x7a397d,_0x4e1ca1){_0x4e1ca1=_0x4e1ca1||0xc8;return function(_0x45df6b){if(_0x45df6b){return _0x7a397d[_0x1a90('0x1a')](_0x4e1ca1)['json'](_0x45df6b);}};}function respondWithFilteredResult(_0x45a20a,_0x185388){return function(_0x1bae85){if(_0x1bae85){var _0x3b87b2=typeof _0x185388[_0x1a90('0x1c')]===_0x1a90('0x1d')&&typeof _0x185388[_0x1a90('0x1e')]==='undefined';var _0x5d10a5=_0x1bae85[_0x1a90('0x1f')];var _0x525f1a=_0x3b87b2?0x0:_0x185388[_0x1a90('0x1c')];var _0x496216=_0x3b87b2?_0x1bae85[_0x1a90('0x1f')]:_0x185388[_0x1a90('0x1c')]+_0x185388[_0x1a90('0x1e')];var _0x132454;if(_0x496216>=_0x5d10a5){_0x496216=_0x5d10a5;_0x132454=0xc8;}else{_0x132454=0xce;}_0x45a20a[_0x1a90('0x1a')](_0x132454);return _0x45a20a[_0x1a90('0x20')]('Content-Range',_0x525f1a+'-'+_0x496216+'/'+_0x5d10a5)[_0x1a90('0x21')](_0x1bae85);}return null;};}function patchUpdates(_0x7bfab1){return function(_0x18af01){try{jsonpatch[_0x1a90('0x22')](_0x18af01,_0x7bfab1,!![]);}catch(_0x28c1be){return BPromise['reject'](_0x28c1be);}return _0x18af01[_0x1a90('0x23')]();};}function saveUpdates(_0x1c7024,_0x16dc25){return function(_0x3ff0fc){if(_0x3ff0fc){return _0x3ff0fc[_0x1a90('0x24')](_0x1c7024)[_0x1a90('0x25')](function(_0x48f50c){return _0x48f50c;});}return null;};}function removeEntity(_0x4fdaad,_0x2a9c80){return function(_0xb075f5){if(_0xb075f5){return _0xb075f5['destroy']()[_0x1a90('0x25')](function(){var _0x4947eb=_0xb075f5[_0x1a90('0x26')]({'plain':!![]});var _0x151e84='Dispositions';return db[_0x1a90('0x27')][_0x1a90('0x28')]({'where':{'type':_0x151e84,'resourceId':_0x4947eb['id']}})['then'](function(){return _0xb075f5;});})['then'](function(){_0x4fdaad['status'](0xcc)[_0x1a90('0x1b')]();});}};}function handleEntityNotFound(_0x4378c4,_0x2b99c0){return function(_0x1b45cc){if(!_0x1b45cc){_0x4378c4[_0x1a90('0x19')](0x194);}return _0x1b45cc;};}function handleError(_0x2489a4,_0x47ad5f){_0x47ad5f=_0x47ad5f||0x1f4;return function(_0x3a4a95){logger['error'](_0x3a4a95[_0x1a90('0x29')]);if(_0x3a4a95[_0x1a90('0x2a')]){delete _0x3a4a95['name'];}_0x2489a4[_0x1a90('0x1a')](_0x47ad5f)[_0x1a90('0x2b')](_0x3a4a95);};}exports['index']=function(_0x5e514d,_0x1c4d55){var _0x188a0e={},_0x53b4a8={},_0x182a8b={'count':0x0,'rows':[]};var _0x4be525=_['map'](db[_0x1a90('0x2c')][_0x1a90('0x2d')],function(_0x10ef0b){return{'name':_0x10ef0b[_0x1a90('0x2e')],'type':_0x10ef0b[_0x1a90('0x2f')][_0x1a90('0x30')]};});_0x53b4a8[_0x1a90('0x31')]=_[_0x1a90('0x32')](_0x4be525,'name');_0x53b4a8[_0x1a90('0x33')]=_[_0x1a90('0x34')](_0x5e514d['query']);_0x53b4a8[_0x1a90('0x35')]=_[_0x1a90('0x36')](_0x53b4a8[_0x1a90('0x31')],_0x53b4a8['query']);_0x188a0e['attributes']=_[_0x1a90('0x36')](_0x53b4a8[_0x1a90('0x31')],qs[_0x1a90('0x37')](_0x5e514d[_0x1a90('0x33')][_0x1a90('0x37')]));_0x188a0e[_0x1a90('0x38')]=_0x188a0e['attributes']['length']?_0x188a0e[_0x1a90('0x38')]:_0x53b4a8[_0x1a90('0x31')];if(!_0x5e514d['query'][_0x1a90('0x39')](_0x1a90('0x3a'))){_0x188a0e[_0x1a90('0x1e')]=qs[_0x1a90('0x1e')](_0x5e514d['query'][_0x1a90('0x1e')]);_0x188a0e['offset']=qs['offset'](_0x5e514d[_0x1a90('0x33')][_0x1a90('0x1c')]);}_0x188a0e[_0x1a90('0x3b')]=qs[_0x1a90('0x3c')](_0x5e514d[_0x1a90('0x33')]['sort']);_0x188a0e[_0x1a90('0x3d')]=qs[_0x1a90('0x35')](_[_0x1a90('0x3e')](_0x5e514d[_0x1a90('0x33')],_0x53b4a8[_0x1a90('0x35')]),_0x4be525);if(_0x5e514d[_0x1a90('0x33')][_0x1a90('0x3f')]){_0x188a0e[_0x1a90('0x3d')]=_[_0x1a90('0x40')](_0x188a0e[_0x1a90('0x3d')],{'$or':_[_0x1a90('0x32')](_0x4be525,function(_0x8bcb1d){if(_0x8bcb1d[_0x1a90('0x2f')]!==_0x1a90('0x41')){var _0x3da5d8={};_0x3da5d8[_0x8bcb1d[_0x1a90('0x2a')]]={'$like':'%'+_0x5e514d[_0x1a90('0x33')][_0x1a90('0x3f')]+'%'};return _0x3da5d8;}})});}_0x188a0e=_[_0x1a90('0x40')]({},_0x188a0e,_0x5e514d[_0x1a90('0x42')]);var _0x28b51d={'where':_0x188a0e[_0x1a90('0x3d')]};return db[_0x1a90('0x2c')][_0x1a90('0x1f')](_0x28b51d)['then'](function(_0x188145){_0x182a8b[_0x1a90('0x1f')]=_0x188145;if(_0x5e514d[_0x1a90('0x33')][_0x1a90('0x43')]){_0x188a0e[_0x1a90('0x44')]=[{'all':!![]}];}return db['Disposition']['findAll'](_0x188a0e);})[_0x1a90('0x25')](function(_0x2c7ff8){_0x182a8b['rows']=_0x2c7ff8;return _0x182a8b;})['then'](respondWithFilteredResult(_0x1c4d55,_0x188a0e))[_0x1a90('0x45')](handleError(_0x1c4d55,null));};exports[_0x1a90('0x46')]=function(_0xa38df4,_0x5e6485){var _0x4f1c60={'raw':!![],'where':{'id':_0xa38df4[_0x1a90('0x47')]['id']}},_0x4d2412={};_0x4d2412['model']=_[_0x1a90('0x34')](db[_0x1a90('0x2c')][_0x1a90('0x2d')]);_0x4d2412[_0x1a90('0x33')]=_[_0x1a90('0x34')](_0xa38df4[_0x1a90('0x33')]);_0x4d2412[_0x1a90('0x35')]=_[_0x1a90('0x36')](_0x4d2412[_0x1a90('0x31')],_0x4d2412[_0x1a90('0x33')]);_0x4f1c60['attributes']=_[_0x1a90('0x36')](_0x4d2412[_0x1a90('0x31')],qs[_0x1a90('0x37')](_0xa38df4[_0x1a90('0x33')][_0x1a90('0x37')]));_0x4f1c60[_0x1a90('0x38')]=_0x4f1c60[_0x1a90('0x38')][_0x1a90('0x48')]?_0x4f1c60[_0x1a90('0x38')]:_0x4d2412[_0x1a90('0x31')];if(_0xa38df4['query'][_0x1a90('0x43')]){_0x4f1c60[_0x1a90('0x44')]=[{'all':!![]}];}_0x4f1c60=_[_0x1a90('0x40')]({},_0x4f1c60,_0xa38df4[_0x1a90('0x42')]);return db[_0x1a90('0x2c')][_0x1a90('0x49')](_0x4f1c60)[_0x1a90('0x25')](handleEntityNotFound(_0x5e6485,null))[_0x1a90('0x25')](respondWithResult(_0x5e6485,null))[_0x1a90('0x45')](handleError(_0x5e6485,null));};exports['create']=function(_0x24e935,_0xb047f1){return db[_0x1a90('0x2c')][_0x1a90('0x4a')](_0x24e935['body'],{})[_0x1a90('0x25')](function(_0x23d877){var _0x39c6b3=_0x24e935[_0x1a90('0x4b')][_0x1a90('0x26')]({'plain':!![]});if(!_0x39c6b3)throw new Error(_0x1a90('0x4c'));if(_0x39c6b3[_0x1a90('0x4d')]===_0x1a90('0x4b')){var _0x5c2e91=_0x23d877[_0x1a90('0x26')]({'plain':!![]});var _0x3e274e=_0x1a90('0x4e');return db['UserProfileSection'][_0x1a90('0x49')]({'where':{'name':_0x3e274e,'userProfileId':_0x39c6b3[_0x1a90('0x4f')]},'raw':!![]})['then'](function(_0x22b7ac){if(_0x22b7ac&&_0x22b7ac[_0x1a90('0x50')]===0x0){return db[_0x1a90('0x27')][_0x1a90('0x4a')]({'name':_0x5c2e91['name'],'resourceId':_0x5c2e91['id'],'type':_0x22b7ac['name'],'sectionId':_0x22b7ac['id']},{})[_0x1a90('0x25')](function(){return _0x23d877;});}else{return _0x23d877;}})[_0x1a90('0x45')](function(_0x4df490){logger[_0x1a90('0x51')](_0x1a90('0x52'),_0x4df490);throw _0x4df490;});}return _0x23d877;})[_0x1a90('0x25')](respondWithResult(_0xb047f1,0xc9))[_0x1a90('0x45')](handleError(_0xb047f1,null));};exports['update']=function(_0x28abca,_0x231e1e){if(_0x28abca[_0x1a90('0x53')]['id']){delete _0x28abca['body']['id'];}return db[_0x1a90('0x2c')][_0x1a90('0x49')]({'where':{'id':_0x28abca['params']['id']}})['then'](handleEntityNotFound(_0x231e1e,null))['then'](saveUpdates(_0x28abca[_0x1a90('0x53')],null))[_0x1a90('0x25')](respondWithResult(_0x231e1e,null))[_0x1a90('0x45')](handleError(_0x231e1e,null));};exports[_0x1a90('0x28')]=function(_0x5226af,_0x358f4c){return db[_0x1a90('0x2c')][_0x1a90('0x49')]({'where':{'id':_0x5226af[_0x1a90('0x47')]['id']}})['then'](handleEntityNotFound(_0x358f4c,null))[_0x1a90('0x25')](removeEntity(_0x358f4c,null))[_0x1a90('0x45')](handleError(_0x358f4c,null));};
\ No newline at end of file
index 084fd2e..998f163 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d1a=['moment','path','rimraf','../../config/environment','./disposition.attributes','exports','define','tools_dispositions','name_voice','name','ListId','name_chat','ChatWebsiteId','name_mail','MailAccountId','name_sms','SmsAccountId','name_fax','FaxAccountId','OpenchannelAccountId','name_whatsapp','WhatsappAccountId','lodash','util','../../config/logger'];(function(_0x5541f4,_0x3eac91){var _0x3beeae=function(_0x295edb){while(--_0x295edb){_0x5541f4['push'](_0x5541f4['shift']());}};_0x3beeae(++_0x3eac91);}(_0x1d1a,0x142));var _0xa1d1=function(_0x24dda4,_0x36aef6){_0x24dda4=_0x24dda4-0x0;var _0x186871=_0x1d1a[_0x24dda4];return _0x186871;};'use strict';var _=require(_0xa1d1('0x0'));var util=require(_0xa1d1('0x1'));var logger=require(_0xa1d1('0x2'))('api');var moment=require(_0xa1d1('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xa1d1('0x4'));var rimraf=require(_0xa1d1('0x5'));var config=require(_0xa1d1('0x6'));var attributes=require(_0xa1d1('0x7'));module[_0xa1d1('0x8')]=function(_0x20189e,_0x3e9a72){return _0x20189e[_0xa1d1('0x9')]('Disposition',attributes,{'tableName':_0xa1d1('0xa'),'paranoid':![],'indexes':[{'unique':!![],'name':_0xa1d1('0xb'),'fields':[_0xa1d1('0xc'),_0xa1d1('0xd')]},{'unique':!![],'name':_0xa1d1('0xe'),'fields':['name',_0xa1d1('0xf')]},{'unique':!![],'name':_0xa1d1('0x10'),'fields':['name',_0xa1d1('0x11')]},{'unique':!![],'name':_0xa1d1('0x12'),'fields':['name',_0xa1d1('0x13')]},{'unique':!![],'name':_0xa1d1('0x14'),'fields':[_0xa1d1('0xc'),_0xa1d1('0x15')]},{'unique':!![],'name':'name_openchannel','fields':[_0xa1d1('0xc'),_0xa1d1('0x16')]},{'unique':!![],'name':_0xa1d1('0x17'),'fields':[_0xa1d1('0xc'),_0xa1d1('0x18')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa34c=['name_sms','name_fax','name_openchannel','OpenchannelAccountId','WhatsappAccountId','lodash','util','../../config/logger','api','moment','request-promise','../../config/environment','./disposition.attributes','exports','define','Disposition','tools_dispositions','name_voice','ListId','name_chat','name','name_mail','MailAccountId'];(function(_0x6131cd,_0x4c26a1){var _0x47e916=function(_0x1f2bce){while(--_0x1f2bce){_0x6131cd['push'](_0x6131cd['shift']());}};_0x47e916(++_0x4c26a1);}(_0xa34c,0xa6));var _0xca34=function(_0x53529a,_0x1e9658){_0x53529a=_0x53529a-0x0;var _0xbbb942=_0xa34c[_0x53529a];return _0xbbb942;};'use strict';var _=require(_0xca34('0x0'));var util=require(_0xca34('0x1'));var logger=require(_0xca34('0x2'))(_0xca34('0x3'));var moment=require(_0xca34('0x4'));var BPromise=require('bluebird');var rp=require(_0xca34('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xca34('0x6'));var attributes=require(_0xca34('0x7'));module[_0xca34('0x8')]=function(_0x2384e7,_0xe45617){return _0x2384e7[_0xca34('0x9')](_0xca34('0xa'),attributes,{'tableName':_0xca34('0xb'),'paranoid':![],'indexes':[{'unique':!![],'name':_0xca34('0xc'),'fields':['name',_0xca34('0xd')]},{'unique':!![],'name':_0xca34('0xe'),'fields':[_0xca34('0xf'),'ChatWebsiteId']},{'unique':!![],'name':_0xca34('0x10'),'fields':['name',_0xca34('0x11')]},{'unique':!![],'name':_0xca34('0x12'),'fields':[_0xca34('0xf'),'SmsAccountId']},{'unique':!![],'name':_0xca34('0x13'),'fields':[_0xca34('0xf'),'FaxAccountId']},{'unique':!![],'name':_0xca34('0x14'),'fields':[_0xca34('0xf'),_0xca34('0x15')]},{'unique':!![],'name':'name_whatsapp','fields':[_0xca34('0xf'),_0xca34('0x16')]}],'timestamps':!![]});};
\ No newline at end of file
index b241a55..e94d4c9 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(_0x1bb813,_0x964248){var _0x44799f=function(_0x3cdc07){while(--_0x3cdc07){_0x1bb813['push'](_0x1bb813['shift']());}};_0x44799f(++_0x964248);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbe200f,_0x4b50eb){_0xbe200f=_0xbe200f-0x0;var _0x192597=_0xa9e0[_0xbe200f];return _0x192597;};'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(_0xb88ce9,_0x5c0d4f){var _0x48969c=function(_0x29c9ab){while(--_0x29c9ab){_0xb88ce9['push'](_0xb88ce9['shift']());}};_0x48969c(++_0x5c0d4f);}(_0xa9e0,0x123));var _0x0a9e=function(_0x311c35,_0x534915){_0x311c35=_0x311c35-0x0;var _0x5cc50c=_0xa9e0[_0x311c35];return _0x5cc50c;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var 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 c541b62..c306e91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4fb=['put','update','delete','exports','multer','util','path','express','fs-extra','../../components/interaction/service','../../config/environment','./disposition.controller','get','isAuthenticated','index','/:id','post','create'];(function(_0x2bfa88,_0xc64230){var _0x2e7039=function(_0x4b87cc){while(--_0x4b87cc){_0x2bfa88['push'](_0x2bfa88['shift']());}};_0x2e7039(++_0xc64230);}(_0xe4fb,0x1ea));var _0xbe4f=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xe4fb[_0x2dafbe];return _0x58a45a;};'use strict';var multer=require(_0xbe4f('0x0'));var util=require(_0xbe4f('0x1'));var path=require(_0xbe4f('0x2'));var timeout=require('connect-timeout');var express=require(_0xbe4f('0x3'));var router=express['Router']();var fs_extra=require(_0xbe4f('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xbe4f('0x5'));var config=require(_0xbe4f('0x6'));var controller=require(_0xbe4f('0x7'));router[_0xbe4f('0x8')]('/',auth[_0xbe4f('0x9')](),controller[_0xbe4f('0xa')]);router['get'](_0xbe4f('0xb'),auth['isAuthenticated'](),controller['show']);router[_0xbe4f('0xc')]('/',auth[_0xbe4f('0x9')](),controller[_0xbe4f('0xd')]);router[_0xbe4f('0xe')](_0xbe4f('0xb'),auth[_0xbe4f('0x9')](),controller[_0xbe4f('0xf')]);router[_0xbe4f('0x10')](_0xbe4f('0xb'),auth[_0xbe4f('0x9')](),controller['destroy']);module[_0xbe4f('0x11')]=router;
\ No newline at end of file
+var _0xcadb=['express','Router','fs-extra','../../components/interaction/service','../../config/environment','./disposition.controller','index','get','/:id','show','post','isAuthenticated','put','update','destroy','util','path'];(function(_0x26307f,_0x562b44){var _0x5ac553=function(_0x326922){while(--_0x326922){_0x26307f['push'](_0x26307f['shift']());}};_0x5ac553(++_0x562b44);}(_0xcadb,0x64));var _0xbcad=function(_0x3ab9ee,_0x4a74b8){_0x3ab9ee=_0x3ab9ee-0x0;var _0x82ee88=_0xcadb[_0x3ab9ee];return _0x82ee88;};'use strict';var multer=require('multer');var util=require(_0xbcad('0x0'));var path=require(_0xbcad('0x1'));var timeout=require('connect-timeout');var express=require(_0xbcad('0x2'));var router=express[_0xbcad('0x3')]();var fs_extra=require(_0xbcad('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xbcad('0x5'));var config=require(_0xbcad('0x6'));var controller=require(_0xbcad('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0xbcad('0x8')]);router[_0xbcad('0x9')](_0xbcad('0xa'),auth['isAuthenticated'](),controller[_0xbcad('0xb')]);router[_0xbcad('0xc')]('/',auth[_0xbcad('0xd')](),controller['create']);router[_0xbcad('0xe')](_0xbcad('0xa'),auth[_0xbcad('0xd')](),controller[_0xbcad('0xf')]);router['delete'](_0xbcad('0xa'),auth[_0xbcad('0xd')](),controller[_0xbcad('0x10')]);module['exports']=router;
\ No newline at end of file
index 7dcbb9a..c7e4553 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ce4=['Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','STRING','ENUM','yes','localstationid','4800','7200','9600','12000','14400','2400','IAX','DADHI','KHOMP','SIP','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'];(function(_0x24f862,_0x4b645a){var _0x198aa4=function(_0x131195){while(--_0x131195){_0x24f862['push'](_0x24f862['shift']());}};_0x198aa4(++_0x4b645a);}(_0x1ce4,0xdc));var _0x41ce=function(_0x78ef06,_0x3e9db6){_0x78ef06=_0x78ef06-0x0;var _0x456290=_0x1ce4[_0x78ef06];return _0x456290;};'use strict';var Sequelize=require(_0x41ce('0x0'));module['exports']={'name':{'type':Sequelize[_0x41ce('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x41ce('0x1')]},'ecm':{'type':Sequelize[_0x41ce('0x2')](_0x41ce('0x3'),'no'),'defaultValue':_0x41ce('0x3')},'headerinfo':{'type':Sequelize['STRING'],'defaultValue':'xCALLY\x20Motion\x20Fax'},'localstationid':{'type':Sequelize[_0x41ce('0x1')],'unique':_0x41ce('0x4')},'minrate':{'type':Sequelize['ENUM']('2400',_0x41ce('0x5'),_0x41ce('0x6'),_0x41ce('0x7'),_0x41ce('0x8'),_0x41ce('0x9')),'defaultValue':_0x41ce('0x5')},'maxrate':{'type':Sequelize[_0x41ce('0x2')](_0x41ce('0xa'),_0x41ce('0x5'),'7200',_0x41ce('0x7'),'12000',_0x41ce('0x9')),'defaultValue':_0x41ce('0x9')},'modem':{'type':Sequelize[_0x41ce('0x1')],'defaultValue':'v17,v27,v29'},'gateway':{'type':Sequelize[_0x41ce('0x1')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0x41ce('0x1')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize['INTEGER'],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0x41ce('0x2')]('SIP',_0x41ce('0xb'),_0x41ce('0xc'),_0x41ce('0xd')),'defaultValue':_0x41ce('0xe')},'key':{'type':Sequelize['STRING'],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x41ce('0xf')],'defaultValue':function(){return _0x41ce('0x10');}},'notificationSound':{'type':Sequelize[_0x41ce('0x11')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x41ce('0x11')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x41ce('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x41ce('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x41ce('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':_0x41ce('0x13')},'mandatoryDisposition':{'type':Sequelize[_0x41ce('0x11')],'defaultValue':![],'comment':_0x41ce('0x14'),'set':function(_0x3852e6){if(!_0x3852e6)this[_0x41ce('0x15')](_0x41ce('0x16'),null);this[_0x41ce('0x15')](_0x41ce('0x17'),_0x3852e6);}}};
\ No newline at end of file
+var _0x35a9=['mandatoryDisposition','sequelize','exports','STRING','ENUM','yes','xCALLY\x20Motion\x20Fax','localstationid','2400','7200','9600','12000','14400','4800','INTEGER','IAX','DADHI','KHOMP','SIP','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId'];(function(_0x481af3,_0x483fac){var _0x3354ea=function(_0x2e3de5){while(--_0x2e3de5){_0x481af3['push'](_0x481af3['shift']());}};_0x3354ea(++_0x483fac);}(_0x35a9,0x105));var _0x935a=function(_0x2151e1,_0x18aea8){_0x2151e1=_0x2151e1-0x0;var _0x3a0663=_0x35a9[_0x2151e1];return _0x3a0663;};'use strict';var Sequelize=require(_0x935a('0x0'));module[_0x935a('0x1')]={'name':{'type':Sequelize[_0x935a('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x935a('0x2')]},'ecm':{'type':Sequelize[_0x935a('0x3')](_0x935a('0x4'),'no'),'defaultValue':_0x935a('0x4')},'headerinfo':{'type':Sequelize[_0x935a('0x2')],'defaultValue':_0x935a('0x5')},'localstationid':{'type':Sequelize[_0x935a('0x2')],'unique':_0x935a('0x6')},'minrate':{'type':Sequelize['ENUM'](_0x935a('0x7'),'4800',_0x935a('0x8'),_0x935a('0x9'),_0x935a('0xa'),_0x935a('0xb')),'defaultValue':_0x935a('0xc')},'maxrate':{'type':Sequelize[_0x935a('0x3')](_0x935a('0x7'),_0x935a('0xc'),_0x935a('0x8'),_0x935a('0x9'),_0x935a('0xa'),_0x935a('0xb')),'defaultValue':_0x935a('0xb')},'modem':{'type':Sequelize[_0x935a('0x2')],'defaultValue':'v17,v27,v29'},'gateway':{'type':Sequelize[_0x935a('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0x935a('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0x935a('0xd')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0x935a('0x3')]('SIP',_0x935a('0xe'),_0x935a('0xf'),_0x935a('0x10')),'defaultValue':_0x935a('0x11')},'key':{'type':Sequelize[_0x935a('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x935a('0x12')],'defaultValue':function(){return _0x935a('0x13');}},'notificationSound':{'type':Sequelize[_0x935a('0x14')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x935a('0x14')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x935a('0x14')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x935a('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x935a('0x14')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x935a('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x935a('0xd')],'allowNull':!![],'defaultValue':null,'comment':_0x935a('0x15')},'mandatoryDisposition':{'type':Sequelize[_0x935a('0x14')],'defaultValue':![],'comment':_0x935a('0x16'),'set':function(_0x304493){if(!_0x304493)this[_0x935a('0x17')](_0x935a('0x18'),null);this[_0x935a('0x17')](_0x935a('0x19'),_0x304493);}}};
\ No newline at end of file
index 2e30097..f3e73a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b40=['fs-extra','lodash','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','redis','defaults','localhost','socket.io-emitter','./faxAccount.socket','register','jayson/promise','client','http','then','info','debug','FaxAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','FaxAccount,\x20%s,\x20%s','message','result','catch','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','apply','save','update','destroy','get','FaxAccounts','UserProfileResource','name','index','Pause','mandatoryDispositionPause','map','FaxAccount','key','model','keys','query','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','VIRTUAL','filter','merge','options','includeAll','include','rows','show','rawAttributes','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','addDisposition','FaxAccountId','Disposition','getDispositions','findOne','pick','findAll','removeDispositions','addAnswer','CannedAnswer','getAnswers','ids','addInteraction','CmContact','User','fullname','internal','Tags','color','tag','addApplications','sequelize','ISOLATION_LEVELS','FaxApplication','findAndCountAll','priority','stack','finally','send','getApplications','context','localstationid','app','system','description','appdata','push','CDR(type)=inbound-fax','ecm','gateway','headerinfo','maxrate','minrate','t38timeout','Set','Wait','/var/opt/motion2/server/files/attachments/fax-${CALLERID(num)}-${CUT(UNIQUEID,.,1)}-${CUT(UNIQUEID,.,2)}-${STRFTIME(,,%C%y%m%d%H%M%S)}-rx.tif,d','ReceiveFax','addAccountApplications','VoiceExtension','bulkCreate','updateAccountApplications','transaction','omit','tech','updatedAt','TrunkId','ListId','findById','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','FaxMessage','CmList','List','Contacts','DESC','attachments','join','root','server/files/attachments','CheckAfterSend','isNil','from','List\x20not\x20found','Send\x20Fax\x20failed','FaxInteraction','out','Messages','Contact\x20not\x20found','spread','filename','dataValues','SendFaxRpc,\x20%s','addAgents','emit','userFaxAccount:save','removeAgents','isArray','userFaxAccount:remove','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs'];(function(_0x5819a7,_0x5daaf3){var _0x528ab4=function(_0x2e0f36){while(--_0x2e0f36){_0x5819a7['push'](_0x5819a7['shift']());}};_0x528ab4(++_0x5daaf3);}(_0x1b40,0x17b));var _0x01b4=function(_0x104112,_0x342eb6){_0x104112=_0x104112-0x0;var _0x394ab4=_0x1b40[_0x104112];return _0x394ab4;};'use strict';var emlformat=require(_0x01b4('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x01b4('0x1'));var jsonpatch=require(_0x01b4('0x2'));var rp=require(_0x01b4('0x3'));var moment=require(_0x01b4('0x4'));var BPromise=require(_0x01b4('0x5'));var Mustache=require('mustache');var util=require(_0x01b4('0x6'));var path=require(_0x01b4('0x7'));var sox=require(_0x01b4('0x8'));var csv=require(_0x01b4('0x9'));var ejs=require(_0x01b4('0xa'));var fs=require('fs');var fs_extra=require(_0x01b4('0xb'));var _=require(_0x01b4('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x01b4('0xd'));var deskjs=require(_0x01b4('0xe'));var toCsv=require(_0x01b4('0x9'));var querystring=require(_0x01b4('0xf'));var Papa=require(_0x01b4('0x10'));var Redis=require(_0x01b4('0x11'));var authService=require(_0x01b4('0x12'));var qs=require(_0x01b4('0x13'));var as=require(_0x01b4('0x14'));var hardwareService=require(_0x01b4('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0x01b4('0x16'));var config=require(_0x01b4('0x17'));var licenseUtil=require(_0x01b4('0x18'));var db=require(_0x01b4('0x19'))['db'];config[_0x01b4('0x1a')]=_[_0x01b4('0x1b')](config[_0x01b4('0x1a')],{'host':_0x01b4('0x1c'),'port':0x18eb});var socket=require(_0x01b4('0x1d'))(new Redis(config['redis']));require(_0x01b4('0x1e'))[_0x01b4('0x1f')](socket);var jayson=require(_0x01b4('0x20'));var client=jayson[_0x01b4('0x21')][_0x01b4('0x22')]({'port':0x232c});var client9002=jayson['client'][_0x01b4('0x22')]({'port':0x232a});function respondWithRpcPromise(_0x528786,_0x92f328,_0x39b128,_0x3541fa){return new BPromise(function(_0x10cd28,_0xd03785){var _0x38381f=_0x3541fa||client;return _0x38381f['request'](_0x528786,_0x39b128)[_0x01b4('0x23')](function(_0x44e4d2){logger[_0x01b4('0x24')]('FaxAccount,\x20%s,\x20%s',_0x92f328,'request\x20sent');logger[_0x01b4('0x25')](_0x01b4('0x26'),_0x92f328,_0x01b4('0x27'),JSON[_0x01b4('0x28')](_0x44e4d2));if(_0x44e4d2[_0x01b4('0x29')]){if(_0x44e4d2[_0x01b4('0x29')][_0x01b4('0x2a')]===0x1f4){logger['error'](_0x01b4('0x2b'),_0x92f328,_0x44e4d2[_0x01b4('0x29')][_0x01b4('0x2c')]);return _0xd03785(_0x44e4d2[_0x01b4('0x29')][_0x01b4('0x2c')]);}logger['error'](_0x01b4('0x2b'),_0x92f328,_0x44e4d2[_0x01b4('0x29')][_0x01b4('0x2c')]);return _0x10cd28(_0x44e4d2['error']['message']);}else{logger[_0x01b4('0x24')](_0x01b4('0x2b'),_0x92f328,_0x01b4('0x27'));_0x10cd28(_0x44e4d2[_0x01b4('0x2d')][_0x01b4('0x2c')]);}})[_0x01b4('0x2e')](function(_0x2cc8ee){logger[_0x01b4('0x29')](_0x01b4('0x2b'),_0x92f328,_0x2cc8ee);_0xd03785(_0x2cc8ee);});});}function respondWithStatusCode(_0x578739,_0x2d2c2c){_0x2d2c2c=_0x2d2c2c||0xcc;return function(_0x515774){if(_0x515774){return _0x578739[_0x01b4('0x2f')](_0x2d2c2c);}return _0x578739[_0x01b4('0x30')](_0x2d2c2c)[_0x01b4('0x31')]();};}function respondWithResult(_0x17040e,_0x29c2ba){_0x29c2ba=_0x29c2ba||0xc8;return function(_0x312488){if(_0x312488){return _0x17040e[_0x01b4('0x30')](_0x29c2ba)[_0x01b4('0x32')](_0x312488);}};}function respondWithFilteredResult(_0x5dfa07,_0x2940de){return function(_0x1f703f){if(_0x1f703f){var _0x410ef2=typeof _0x2940de['offset']===_0x01b4('0x33')&&typeof _0x2940de[_0x01b4('0x34')]===_0x01b4('0x33');var _0x5bf8dc=_0x1f703f[_0x01b4('0x35')];var _0x2aef34=_0x410ef2?0x0:_0x2940de['offset'];var _0x3b96ec=_0x410ef2?_0x1f703f['count']:_0x2940de[_0x01b4('0x36')]+_0x2940de[_0x01b4('0x34')];var _0x2eba79;if(_0x3b96ec>=_0x5bf8dc){_0x3b96ec=_0x5bf8dc;_0x2eba79=0xc8;}else{_0x2eba79=0xce;}_0x5dfa07[_0x01b4('0x30')](_0x2eba79);return _0x5dfa07['set'](_0x01b4('0x37'),_0x2aef34+'-'+_0x3b96ec+'/'+_0x5bf8dc)['json'](_0x1f703f);}return null;};}function patchUpdates(_0x22a06a){return function(_0x3ca159){try{jsonpatch[_0x01b4('0x38')](_0x3ca159,_0x22a06a,!![]);}catch(_0x17bc69){return BPromise['reject'](_0x17bc69);}return _0x3ca159[_0x01b4('0x39')]();};}function saveUpdates(_0x45fafb,_0x3f220a){return function(_0x2a6b94){if(_0x2a6b94){return _0x2a6b94[_0x01b4('0x3a')](_0x45fafb)[_0x01b4('0x23')](function(_0x4d1ba8){return _0x4d1ba8;});}return null;};}function removeEntity(_0x1d3773,_0x5ee48a){return function(_0x1424a7){if(_0x1424a7){return _0x1424a7[_0x01b4('0x3b')]()[_0x01b4('0x23')](function(){var _0x3b4ebd=_0x1424a7[_0x01b4('0x3c')]({'plain':!![]});var _0x40fa8=_0x01b4('0x3d');return db[_0x01b4('0x3e')][_0x01b4('0x3b')]({'where':{'type':_0x40fa8,'resourceId':_0x3b4ebd['id']}})['then'](function(){return _0x1424a7;});})[_0x01b4('0x23')](function(){_0x1d3773[_0x01b4('0x30')](0xcc)[_0x01b4('0x31')]();});}};}function handleEntityNotFound(_0x54ab26,_0x6ddf65){return function(_0x361157){if(!_0x361157){_0x54ab26[_0x01b4('0x2f')](0x194);}return _0x361157;};}function handleError(_0x45ef80,_0x2e9f9c){_0x2e9f9c=_0x2e9f9c||0x1f4;return function(_0x3a1e80){logger[_0x01b4('0x29')](_0x3a1e80['stack']);if(_0x3a1e80[_0x01b4('0x3f')]){delete _0x3a1e80[_0x01b4('0x3f')];}_0x45ef80[_0x01b4('0x30')](_0x2e9f9c)['send'](_0x3a1e80);};}exports[_0x01b4('0x40')]=function(_0x13e1b4,_0x30c744){var _0x5663b6={'include':[{'model':db[_0x01b4('0x41')],'as':_0x01b4('0x42')}]},_0x388919={},_0x335151={'count':0x0,'rows':[]};var _0x508f0f=_[_0x01b4('0x43')](db[_0x01b4('0x44')]['rawAttributes'],function(_0x3b45bb){return{'name':_0x3b45bb['fieldName'],'type':_0x3b45bb['type'][_0x01b4('0x45')]};});_0x388919[_0x01b4('0x46')]=_[_0x01b4('0x43')](_0x508f0f,_0x01b4('0x3f'));_0x388919['query']=_[_0x01b4('0x47')](_0x13e1b4[_0x01b4('0x48')]);_0x388919[_0x01b4('0x49')]=_['intersection'](_0x388919['model'],_0x388919[_0x01b4('0x48')]);_0x5663b6[_0x01b4('0x4a')]=_[_0x01b4('0x4b')](_0x388919[_0x01b4('0x46')],qs[_0x01b4('0x4c')](_0x13e1b4[_0x01b4('0x48')][_0x01b4('0x4c')]));_0x5663b6[_0x01b4('0x4a')]=_0x5663b6['attributes']['length']?_0x5663b6[_0x01b4('0x4a')]:_0x388919[_0x01b4('0x46')];if(!_0x13e1b4[_0x01b4('0x48')][_0x01b4('0x4d')](_0x01b4('0x4e'))){_0x5663b6[_0x01b4('0x34')]=qs[_0x01b4('0x34')](_0x13e1b4[_0x01b4('0x48')]['limit']);_0x5663b6['offset']=qs[_0x01b4('0x36')](_0x13e1b4[_0x01b4('0x48')][_0x01b4('0x36')]);}_0x5663b6[_0x01b4('0x4f')]=qs[_0x01b4('0x50')](_0x13e1b4[_0x01b4('0x48')][_0x01b4('0x50')]);_0x5663b6[_0x01b4('0x51')]=qs['filters'](_['pick'](_0x13e1b4[_0x01b4('0x48')],_0x388919['filters']),_0x508f0f);if(_0x13e1b4[_0x01b4('0x48')]['filter']){_0x5663b6['where']=_['merge'](_0x5663b6['where'],{'$or':_[_0x01b4('0x43')](_0x508f0f,function(_0x4e1375){if(_0x4e1375['type']!==_0x01b4('0x52')){var _0x5462ce={};_0x5462ce[_0x4e1375[_0x01b4('0x3f')]]={'$like':'%'+_0x13e1b4['query'][_0x01b4('0x53')]+'%'};return _0x5462ce;}})});}_0x5663b6=_[_0x01b4('0x54')]({},_0x5663b6,_0x13e1b4[_0x01b4('0x55')]);var _0x187c6c={'where':_0x5663b6[_0x01b4('0x51')]};return db[_0x01b4('0x44')][_0x01b4('0x35')](_0x187c6c)[_0x01b4('0x23')](function(_0x34a7ba){_0x335151[_0x01b4('0x35')]=_0x34a7ba;if(_0x13e1b4[_0x01b4('0x48')][_0x01b4('0x56')]){_0x5663b6[_0x01b4('0x57')]=[{'all':!![]}];}return db['FaxAccount']['findAll'](_0x5663b6);})['then'](function(_0x1d4632){_0x335151[_0x01b4('0x58')]=_0x1d4632;return _0x335151;})[_0x01b4('0x23')](respondWithFilteredResult(_0x30c744,_0x5663b6))[_0x01b4('0x2e')](handleError(_0x30c744,null));};exports[_0x01b4('0x59')]=function(_0x2ed70b,_0x23e51a){var _0x52d077={'raw':![],'where':{'id':_0x2ed70b['params']['id']},'include':[{'model':db[_0x01b4('0x41')],'as':_0x01b4('0x42')}]},_0x220448={};_0x220448['model']=_[_0x01b4('0x47')](db[_0x01b4('0x44')][_0x01b4('0x5a')]);_0x220448[_0x01b4('0x48')]=_[_0x01b4('0x47')](_0x2ed70b[_0x01b4('0x48')]);_0x220448[_0x01b4('0x49')]=_[_0x01b4('0x4b')](_0x220448[_0x01b4('0x46')],_0x220448['query']);_0x52d077[_0x01b4('0x4a')]=_[_0x01b4('0x4b')](_0x220448[_0x01b4('0x46')],qs[_0x01b4('0x4c')](_0x2ed70b[_0x01b4('0x48')][_0x01b4('0x4c')]));_0x52d077[_0x01b4('0x4a')]=_0x52d077['attributes'][_0x01b4('0x5b')]?_0x52d077[_0x01b4('0x4a')]:_0x220448[_0x01b4('0x46')];if(_0x2ed70b[_0x01b4('0x48')][_0x01b4('0x56')]){_0x52d077['include']=[{'all':!![]}];}_0x52d077=_[_0x01b4('0x54')]({},_0x52d077,_0x2ed70b['options']);return db['FaxAccount'][_0x01b4('0x5c')](_0x52d077)[_0x01b4('0x23')](handleEntityNotFound(_0x23e51a,null))[_0x01b4('0x23')](respondWithResult(_0x23e51a,null))[_0x01b4('0x2e')](handleError(_0x23e51a,null));};exports['create']=function(_0x3892bb,_0x339ca5){return db[_0x01b4('0x44')][_0x01b4('0x5d')](_0x3892bb[_0x01b4('0x5e')],{})[_0x01b4('0x23')](function(_0x32dc2e){var _0x3d3a50=_0x3892bb[_0x01b4('0x5f')][_0x01b4('0x3c')]({'plain':!![]});if(!_0x3d3a50)throw new Error(_0x01b4('0x60'));if(_0x3d3a50[_0x01b4('0x61')]===_0x01b4('0x5f')){var _0x18c0cd=_0x32dc2e[_0x01b4('0x3c')]({'plain':!![]});var _0x4081bb=_0x01b4('0x3d');return db[_0x01b4('0x62')][_0x01b4('0x5c')]({'where':{'name':_0x4081bb,'userProfileId':_0x3d3a50[_0x01b4('0x63')]},'raw':!![]})[_0x01b4('0x23')](function(_0x131cb1){if(_0x131cb1&&_0x131cb1[_0x01b4('0x64')]===0x0){return db[_0x01b4('0x3e')][_0x01b4('0x5d')]({'name':_0x18c0cd['name'],'resourceId':_0x18c0cd['id'],'type':_0x131cb1[_0x01b4('0x3f')],'sectionId':_0x131cb1['id']},{})[_0x01b4('0x23')](function(){return _0x32dc2e;});}else{return _0x32dc2e;}})[_0x01b4('0x2e')](function(_0x2ba900){logger[_0x01b4('0x29')](_0x01b4('0x65'),_0x2ba900);throw _0x2ba900;});}return _0x32dc2e;})[_0x01b4('0x23')](respondWithResult(_0x339ca5,0xc9))['catch'](handleError(_0x339ca5,null));};exports[_0x01b4('0x3a')]=function(_0xeea528,_0x478ad7){if(_0xeea528[_0x01b4('0x5e')]['id']){delete _0xeea528['body']['id'];}return db[_0x01b4('0x44')]['find']({'where':{'id':_0xeea528[_0x01b4('0x66')]['id']},'include':[{'model':db[_0x01b4('0x41')],'as':'mandatoryDispositionPause'}]})[_0x01b4('0x23')](handleEntityNotFound(_0x478ad7,null))['then'](saveUpdates(_0xeea528[_0x01b4('0x5e')],null))[_0x01b4('0x23')](respondWithResult(_0x478ad7,null))[_0x01b4('0x2e')](handleError(_0x478ad7,null));};exports[_0x01b4('0x3b')]=function(_0x4a0b58,_0xbf4b33){return db[_0x01b4('0x44')][_0x01b4('0x5c')]({'where':{'id':_0x4a0b58['params']['id']}})[_0x01b4('0x23')](handleEntityNotFound(_0xbf4b33,null))['then'](removeEntity(_0xbf4b33,null))['catch'](handleError(_0xbf4b33,null));};exports['describe']=function(_0x3c3c8d,_0x32daaa){return db[_0x01b4('0x44')]['describe']()[_0x01b4('0x23')](respondWithResult(_0x32daaa,null))['catch'](handleError(_0x32daaa,null));};exports[_0x01b4('0x67')]=function(_0x1c7b4d,_0x4651e0,_0x522aa3){if(_0x1c7b4d['body']['id']){delete _0x1c7b4d[_0x01b4('0x5e')]['id'];}return db[_0x01b4('0x44')]['find']({'where':{'id':_0x1c7b4d['params']['id']}})[_0x01b4('0x23')](handleEntityNotFound(_0x4651e0,null))['then'](function(_0x270f68){if(_0x270f68){_0x1c7b4d[_0x01b4('0x5e')][_0x01b4('0x68')]=_0x270f68['id'];return db[_0x01b4('0x69')]['create'](_0x1c7b4d['body']);}})['then'](respondWithResult(_0x4651e0,null))['catch'](handleError(_0x4651e0,null));};exports[_0x01b4('0x6a')]=function(_0x5757d9,_0x3ca918,_0x37e80e){var _0x48ec9b={'raw':![],'where':{}};var _0x429f06={};var _0x18c540={'count':0x0,'rows':[]};return db[_0x01b4('0x44')][_0x01b4('0x6b')]({'where':{'id':_0x5757d9[_0x01b4('0x66')]['id']}})[_0x01b4('0x23')](handleEntityNotFound(_0x3ca918,null))[_0x01b4('0x23')](function(_0x33982c){if(_0x33982c){_0x429f06[_0x01b4('0x46')]=_[_0x01b4('0x47')](db[_0x01b4('0x69')]['rawAttributes']);_0x429f06[_0x01b4('0x48')]=_[_0x01b4('0x47')](_0x5757d9[_0x01b4('0x48')]);_0x429f06[_0x01b4('0x49')]=_['intersection'](_0x429f06[_0x01b4('0x46')],_0x429f06[_0x01b4('0x48')]);_0x48ec9b['attributes']=_[_0x01b4('0x4b')](_0x429f06['model'],qs['fields'](_0x5757d9[_0x01b4('0x48')][_0x01b4('0x4c')]));_0x48ec9b[_0x01b4('0x4a')]=_0x48ec9b[_0x01b4('0x4a')]['length']?_0x48ec9b[_0x01b4('0x4a')]:_0x429f06[_0x01b4('0x46')];if(!_0x5757d9[_0x01b4('0x48')][_0x01b4('0x4d')](_0x01b4('0x4e'))){_0x48ec9b[_0x01b4('0x34')]=qs['limit'](_0x5757d9['query'][_0x01b4('0x34')]);_0x48ec9b[_0x01b4('0x36')]=qs['offset'](_0x5757d9[_0x01b4('0x48')][_0x01b4('0x36')]);}_0x48ec9b[_0x01b4('0x4f')]=qs[_0x01b4('0x50')](_0x5757d9['query'][_0x01b4('0x50')]);_0x48ec9b[_0x01b4('0x51')]=qs['filters'](_[_0x01b4('0x6c')](_0x5757d9[_0x01b4('0x48')],_0x429f06[_0x01b4('0x49')]));_0x48ec9b['where'][_0x01b4('0x68')]=_0x33982c['id'];if(_0x5757d9['query'][_0x01b4('0x53')]){_0x48ec9b['where']=_[_0x01b4('0x54')](_0x48ec9b[_0x01b4('0x51')],{'$or':_[_0x01b4('0x43')](_0x48ec9b[_0x01b4('0x4a')],function(_0x3b63bb){var _0x32041a={};_0x32041a[_0x3b63bb]={'$like':'%'+_0x5757d9[_0x01b4('0x48')][_0x01b4('0x53')]+'%'};return _0x32041a;})});}_0x48ec9b=_[_0x01b4('0x54')]({},_0x48ec9b,_0x5757d9[_0x01b4('0x55')]);return db[_0x01b4('0x69')][_0x01b4('0x35')]({'where':_0x48ec9b['where']})[_0x01b4('0x23')](function(_0x54843a){_0x18c540[_0x01b4('0x35')]=_0x54843a;if(_0x5757d9[_0x01b4('0x48')]['includeAll']){_0x48ec9b[_0x01b4('0x57')]=[{'all':!![]}];}return db[_0x01b4('0x69')][_0x01b4('0x6d')](_0x48ec9b);})[_0x01b4('0x23')](function(_0x284c0f){_0x18c540['rows']=_0x284c0f;return _0x18c540;});}})['then'](respondWithFilteredResult(_0x3ca918,_0x48ec9b))[_0x01b4('0x2e')](handleError(_0x3ca918,null));};exports['removeDispositions']=function(_0x23f4bf,_0x357ae9,_0x5bc64a){return db[_0x01b4('0x44')]['find']({'where':{'id':_0x23f4bf[_0x01b4('0x66')]['id']}})[_0x01b4('0x23')](handleEntityNotFound(_0x357ae9,null))[_0x01b4('0x23')](function(_0x5ba74d){if(_0x5ba74d){return _0x5ba74d[_0x01b4('0x6e')](_0x23f4bf[_0x01b4('0x48')]['ids']);}})[_0x01b4('0x23')](respondWithStatusCode(_0x357ae9,null))['catch'](handleError(_0x357ae9,null));};exports[_0x01b4('0x6f')]=function(_0xb69c73,_0x5c0b01,_0x4e9efe){if(_0xb69c73[_0x01b4('0x5e')]['id']){delete _0xb69c73[_0x01b4('0x5e')]['id'];}return db['FaxAccount'][_0x01b4('0x5c')]({'where':{'id':_0xb69c73['params']['id']}})[_0x01b4('0x23')](handleEntityNotFound(_0x5c0b01,null))[_0x01b4('0x23')](function(_0x24ea5f){if(_0x24ea5f){_0xb69c73[_0x01b4('0x5e')][_0x01b4('0x68')]=_0x24ea5f['id'];return db[_0x01b4('0x70')]['create'](_0xb69c73[_0x01b4('0x5e')]);}})['then'](respondWithResult(_0x5c0b01,null))[_0x01b4('0x2e')](handleError(_0x5c0b01,null));};exports[_0x01b4('0x71')]=function(_0x3f54b4,_0x1dc3e0,_0x60d2db){var _0x1da502={'raw':![],'where':{}};var _0xb8517={};var _0x1fb81f={'count':0x0,'rows':[]};return db[_0x01b4('0x44')][_0x01b4('0x6b')]({'where':{'id':_0x3f54b4[_0x01b4('0x66')]['id']}})[_0x01b4('0x23')](handleEntityNotFound(_0x1dc3e0,null))[_0x01b4('0x23')](function(_0x3a94f8){if(_0x3a94f8){_0xb8517[_0x01b4('0x46')]=_[_0x01b4('0x47')](db['CannedAnswer']['rawAttributes']);_0xb8517[_0x01b4('0x48')]=_['keys'](_0x3f54b4[_0x01b4('0x48')]);_0xb8517['filters']=_['intersection'](_0xb8517[_0x01b4('0x46')],_0xb8517['query']);_0x1da502[_0x01b4('0x4a')]=_['intersection'](_0xb8517[_0x01b4('0x46')],qs['fields'](_0x3f54b4[_0x01b4('0x48')][_0x01b4('0x4c')]));_0x1da502[_0x01b4('0x4a')]=_0x1da502['attributes'][_0x01b4('0x5b')]?_0x1da502['attributes']:_0xb8517[_0x01b4('0x46')];if(!_0x3f54b4[_0x01b4('0x48')][_0x01b4('0x4d')](_0x01b4('0x4e'))){_0x1da502[_0x01b4('0x34')]=qs[_0x01b4('0x34')](_0x3f54b4[_0x01b4('0x48')][_0x01b4('0x34')]);_0x1da502['offset']=qs['offset'](_0x3f54b4[_0x01b4('0x48')]['offset']);}_0x1da502['order']=qs[_0x01b4('0x50')](_0x3f54b4['query'][_0x01b4('0x50')]);_0x1da502[_0x01b4('0x51')]=qs[_0x01b4('0x49')](_['pick'](_0x3f54b4[_0x01b4('0x48')],_0xb8517['filters']));_0x1da502['where'][_0x01b4('0x68')]=_0x3a94f8['id'];if(_0x3f54b4[_0x01b4('0x48')][_0x01b4('0x53')]){_0x1da502['where']=_[_0x01b4('0x54')](_0x1da502['where'],{'$or':_[_0x01b4('0x43')](_0x1da502[_0x01b4('0x4a')],function(_0xf6a070){var _0x23f9a1={};_0x23f9a1[_0xf6a070]={'$like':'%'+_0x3f54b4['query'][_0x01b4('0x53')]+'%'};return _0x23f9a1;})});}_0x1da502=_[_0x01b4('0x54')]({},_0x1da502,_0x3f54b4[_0x01b4('0x55')]);return db['CannedAnswer'][_0x01b4('0x35')]({'where':_0x1da502[_0x01b4('0x51')]})['then'](function(_0x2a22ec){_0x1fb81f['count']=_0x2a22ec;if(_0x3f54b4[_0x01b4('0x48')][_0x01b4('0x56')]){_0x1da502[_0x01b4('0x57')]=[{'all':!![]}];}return db[_0x01b4('0x70')][_0x01b4('0x6d')](_0x1da502);})[_0x01b4('0x23')](function(_0x234249){_0x1fb81f[_0x01b4('0x58')]=_0x234249;return _0x1fb81f;});}})[_0x01b4('0x23')](respondWithFilteredResult(_0x1dc3e0,_0x1da502))['catch'](handleError(_0x1dc3e0,null));};exports['removeAnswers']=function(_0x2d1f48,_0x2dd4c5,_0x11ea70){return db[_0x01b4('0x44')]['find']({'where':{'id':_0x2d1f48[_0x01b4('0x66')]['id']}})[_0x01b4('0x23')](handleEntityNotFound(_0x2dd4c5,null))['then'](function(_0x409aeb){if(_0x409aeb){return _0x409aeb['removeAnswers'](_0x2d1f48[_0x01b4('0x48')][_0x01b4('0x72')]);}})['then'](respondWithStatusCode(_0x2dd4c5,null))[_0x01b4('0x2e')](handleError(_0x2dd4c5,null));};exports[_0x01b4('0x73')]=function(_0x45884e,_0x14807e,_0x260c33){return db['FaxInteraction'][_0x01b4('0x5c')]({'where':{'id':_0x45884e[_0x01b4('0x66')]['id']}})[_0x01b4('0x23')](handleEntityNotFound(_0x14807e,null))[_0x01b4('0x23')](function(_0x3b8967){if(_0x3b8967){return _0x3b8967[_0x01b4('0x73')](_0x45884e['body'][_0x01b4('0x72')],_['omit'](_0x45884e[_0x01b4('0x5e')],[_0x01b4('0x72'),'id'])||{});}})[_0x01b4('0x23')](respondWithResult(_0x14807e,null))[_0x01b4('0x2e')](handleError(_0x14807e,null));};exports['getInteractions']=function(_0x3e1980,_0x32f259,_0x521b47){var _0x889928={'raw':![],'where':{}};var _0x4a903f={};var _0x5edbee={'count':0x0,'rows':[]};return db[_0x01b4('0x44')][_0x01b4('0x6b')]({'where':{'id':_0x3e1980[_0x01b4('0x66')]['id']}})['then'](handleEntityNotFound(_0x32f259,null))[_0x01b4('0x23')](function(_0x1212c4){if(_0x1212c4){_0x4a903f[_0x01b4('0x46')]=_[_0x01b4('0x47')](db['FaxInteraction']['rawAttributes']);_0x4a903f['query']=_['keys'](_0x3e1980[_0x01b4('0x48')]);_0x4a903f[_0x01b4('0x49')]=_[_0x01b4('0x4b')](_0x4a903f['model'],_0x4a903f['query']);_0x889928['attributes']=_[_0x01b4('0x4b')](_0x4a903f[_0x01b4('0x46')],qs[_0x01b4('0x4c')](_0x3e1980['query']['fields']));_0x889928[_0x01b4('0x4a')]=_0x889928[_0x01b4('0x4a')][_0x01b4('0x5b')]?_0x889928[_0x01b4('0x4a')]:_0x4a903f[_0x01b4('0x46')];if(!_0x3e1980['query'][_0x01b4('0x4d')](_0x01b4('0x4e'))){_0x889928['limit']=qs[_0x01b4('0x34')](_0x3e1980[_0x01b4('0x48')][_0x01b4('0x34')]);_0x889928[_0x01b4('0x36')]=qs[_0x01b4('0x36')](_0x3e1980[_0x01b4('0x48')][_0x01b4('0x36')]);}_0x889928['order']=qs[_0x01b4('0x50')](_0x3e1980[_0x01b4('0x48')]['sort']);_0x889928['where']=qs[_0x01b4('0x49')](_['pick'](_0x3e1980[_0x01b4('0x48')],_0x4a903f[_0x01b4('0x49')]));_0x889928['where']['FaxAccountId']=_0x1212c4['id'];if(_0x3e1980[_0x01b4('0x48')][_0x01b4('0x53')]){_0x889928['where']=_[_0x01b4('0x54')](_0x889928[_0x01b4('0x51')],{'$or':_[_0x01b4('0x43')](_0x889928[_0x01b4('0x4a')],function(_0x5afc5f){var _0x23cf18={};_0x23cf18[_0x5afc5f]={'$like':'%'+_0x3e1980[_0x01b4('0x48')]['filter']+'%'};return _0x23cf18;})});}_0x889928=_[_0x01b4('0x54')]({},_0x889928,_0x3e1980[_0x01b4('0x55')]);return db['FaxInteraction'][_0x01b4('0x35')]({'where':_0x889928[_0x01b4('0x51')]})[_0x01b4('0x23')](function(_0x1375d9){_0x5edbee[_0x01b4('0x35')]=_0x1375d9;if(_0x3e1980[_0x01b4('0x48')][_0x01b4('0x56')]){_0x889928[_0x01b4('0x57')]=[{'model':db[_0x01b4('0x74')],'as':'Contact','required':![]},{'model':db[_0x01b4('0x75')],'as':'Owner','attributes':[_0x01b4('0x3f'),_0x01b4('0x76'),_0x01b4('0x77')],'required':![]},{'model':db['Tag'],'as':_0x01b4('0x78'),'attributes':['id',_0x01b4('0x3f'),_0x01b4('0x79')],'where':_0x3e1980[_0x01b4('0x48')][_0x01b4('0x7a')]?{'id':_0x3e1980[_0x01b4('0x48')][_0x01b4('0x7a')]}:undefined,'required':_0x3e1980[_0x01b4('0x48')][_0x01b4('0x7a')]?!![]:![]}];}return db['FaxInteraction'][_0x01b4('0x6d')](_0x889928);})[_0x01b4('0x23')](function(_0x1951aa){_0x5edbee['rows']=_0x1951aa;return _0x5edbee;});}})[_0x01b4('0x23')](respondWithFilteredResult(_0x32f259,_0x889928))[_0x01b4('0x2e')](handleError(_0x32f259,null));};exports[_0x01b4('0x7b')]=function(_0x582c07,_0x2e20ff){var _0x15c115=_0x582c07[_0x01b4('0x66')]['id'];var _0x5e3b5c=_0x582c07['body'];var _0x3cd96f=0xc8;var _0xb89ab9=null;return db[_0x01b4('0x7c')]['transaction']({'isolationLevel':db[_0x01b4('0x7c')]['Transaction'][_0x01b4('0x7d')]['READ_COMMITTED']},function(_0x1eb60f){return db[_0x01b4('0x44')][_0x01b4('0x6b')]({'where':{'id':_0x15c115},'transaction':_0x1eb60f})[_0x01b4('0x23')](function(_0x53bbd5){if(_0x53bbd5){return db[_0x01b4('0x7e')][_0x01b4('0x3b')]({'where':{'FaxAccountId':_0x15c115},'transaction':_0x1eb60f})[_0x01b4('0x23')](function(){var _0xec13b6=_[_0x01b4('0x43')](_0x5e3b5c,function(_0x2ce5d3){_0x2ce5d3['FaxAccountId']=_0x15c115;return _0x2ce5d3;});return db[_0x01b4('0x7e')]['bulkCreate'](_0xec13b6,{'transaction':_0x1eb60f});});}else{_0x3cd96f=0x194;_0xb89ab9=[];}});})[_0x01b4('0x23')](function(){if(_0x3cd96f!==0x194){return db[_0x01b4('0x7e')][_0x01b4('0x7f')]({'where':{'FaxAccountId':_0x15c115},'order':_0x01b4('0x80')})[_0x01b4('0x23')](function(_0x29e648){_0xb89ab9=_0x29e648;});}})[_0x01b4('0x2e')](function(_0x2d5bd7){_0x3cd96f=0x1f4;logger[_0x01b4('0x29')](_0x2d5bd7[_0x01b4('0x81')]);if(_0x2d5bd7[_0x01b4('0x3f')]){delete _0x2d5bd7[_0x01b4('0x3f')];}_0xb89ab9=_0x2d5bd7;})[_0x01b4('0x82')](function(){if(_0xb89ab9===null){_0x2e20ff[_0x01b4('0x2f')](_0x3cd96f);}else{if(_0x3cd96f===0x1f4){_0x2e20ff[_0x01b4('0x30')](_0x3cd96f)[_0x01b4('0x83')](_0xb89ab9);}else{_0x2e20ff[_0x01b4('0x30')](_0x3cd96f)[_0x01b4('0x32')](_0xb89ab9);}}});};exports[_0x01b4('0x84')]=function(_0x500a99,_0x5a1801,_0x223e75){var _0x257e4a={};var _0x252eef={};var _0x97bc36;var _0x3edd4b;return db[_0x01b4('0x44')]['findOne']({'where':{'id':_0x500a99[_0x01b4('0x66')]['id']}})[_0x01b4('0x23')](handleEntityNotFound(_0x5a1801,null))['then'](function(_0x11953d){if(_0x11953d){_0x97bc36=_0x11953d;_0x252eef[_0x01b4('0x46')]=_['keys'](db[_0x01b4('0x7e')][_0x01b4('0x5a')]);_0x252eef[_0x01b4('0x48')]=_['keys'](_0x500a99['query']);_0x252eef[_0x01b4('0x49')]=_[_0x01b4('0x4b')](_0x252eef[_0x01b4('0x46')],_0x252eef[_0x01b4('0x48')]);_0x257e4a['attributes']=_['intersection'](_0x252eef[_0x01b4('0x46')],qs[_0x01b4('0x4c')](_0x500a99[_0x01b4('0x48')]['fields']));_0x257e4a[_0x01b4('0x4a')]=_0x257e4a[_0x01b4('0x4a')][_0x01b4('0x5b')]?_0x257e4a[_0x01b4('0x4a')]:_0x252eef[_0x01b4('0x46')];_0x257e4a[_0x01b4('0x4f')]=qs[_0x01b4('0x50')](_0x500a99['query'][_0x01b4('0x50')]);_0x257e4a['where']=qs[_0x01b4('0x49')](_[_0x01b4('0x6c')](_0x500a99[_0x01b4('0x48')],_0x252eef[_0x01b4('0x49')]));if(_0x500a99[_0x01b4('0x48')][_0x01b4('0x53')]){_0x257e4a[_0x01b4('0x51')]=_[_0x01b4('0x54')](_0x257e4a[_0x01b4('0x51')],{'$or':_[_0x01b4('0x43')](_0x257e4a[_0x01b4('0x4a')],function(_0x1972b9){var _0x1258c6={};_0x1258c6[_0x1972b9]={'$like':'%'+_0x500a99[_0x01b4('0x48')][_0x01b4('0x53')]+'%'};return _0x1258c6;})});}_0x257e4a=_[_0x01b4('0x54')]({},_0x257e4a,_0x500a99['options']);return _0x97bc36['getApplications'](_0x257e4a);}})[_0x01b4('0x23')](function(_0x58bccf){if(_0x58bccf){_0x3edd4b=_0x58bccf[_0x01b4('0x5b')];if(!_0x500a99[_0x01b4('0x48')]['hasOwnProperty'](_0x01b4('0x4e'))){_0x257e4a[_0x01b4('0x34')]=qs[_0x01b4('0x34')](_0x500a99[_0x01b4('0x48')][_0x01b4('0x34')]);_0x257e4a['offset']=qs[_0x01b4('0x36')](_0x500a99[_0x01b4('0x48')][_0x01b4('0x36')]);}return _0x97bc36[_0x01b4('0x84')](_0x257e4a);}})['then'](function(_0xf51491){if(_0xf51491){return _0xf51491?{'count':_0x3edd4b,'rows':_0xf51491}:null;}})[_0x01b4('0x23')](respondWithResult(_0x5a1801,null))['catch'](handleError(_0x5a1801,null));};function Extension(_0x40e429,_0x442e0d,_0x251aa0,_0x3f8421){this[_0x01b4('0x85')]='from-voip-provider';this['exten']=_0x40e429[_0x01b4('0x86')];this[_0x01b4('0x87')]=_0x3f8421;this['type']=_0x01b4('0x88');this[_0x01b4('0x89')]='Fax\x20Extension';this[_0x01b4('0x68')]=_0x40e429['id'];this[_0x01b4('0x80')]=_0x442e0d;this[_0x01b4('0x8a')]=_0x251aa0;}function createExtensionsReciveFax(_0x2ef149){var _0x1b6a45=0x1;var _0x4a67cf=[];_0x4a67cf[_0x01b4('0x8b')](new Extension(_0x2ef149,_0x1b6a45,'','Answer'));_0x1b6a45+=0x1;_0x4a67cf['push'](new Extension(_0x2ef149,_0x1b6a45,_0x01b4('0x8c'),'Set'));_0x1b6a45+=0x1;for(var _0x49e81d in _0x2ef149){if(_0x2ef149[_0x01b4('0x4d')](_0x49e81d)&&(_0x49e81d===_0x01b4('0x8d')||_0x49e81d===_0x01b4('0x86')||_0x49e81d===_0x01b4('0x8e')||_0x49e81d==='faxdetect'||_0x49e81d===_0x01b4('0x8f')||_0x49e81d===_0x01b4('0x90')||_0x49e81d===_0x01b4('0x91')||_0x49e81d==='modem'||_0x49e81d===_0x01b4('0x92'))){_0x4a67cf[_0x01b4('0x8b')](new Extension(_0x2ef149,_0x1b6a45,'FAXOPT('+_0x49e81d+')='+_0x2ef149[_0x49e81d],_0x01b4('0x93')));_0x1b6a45+=0x1;}}_0x4a67cf[_0x01b4('0x8b')](new Extension(_0x2ef149,_0x1b6a45,'6',_0x01b4('0x94')));_0x1b6a45+=0x1;_0x4a67cf[_0x01b4('0x8b')](new Extension(_0x2ef149,_0x1b6a45,_0x01b4('0x95'),_0x01b4('0x96')));_0x1b6a45=0x0;return _0x4a67cf;}exports[_0x01b4('0x97')]=function(_0x4ca06d,_0x59a603,_0x13322a){var _0x105158;return db[_0x01b4('0x7c')]['transaction'](function(_0x3003b1){return db['FaxAccount'][_0x01b4('0x5d')](_0x4ca06d['body'],{'transaction':_0x3003b1})[_0x01b4('0x23')](function(_0x410a63){_0x105158=_0x410a63[_0x01b4('0x3c')]({'plain':!![]});return db[_0x01b4('0x98')][_0x01b4('0x99')](createExtensionsReciveFax(_0x105158),{'transaction':_0x3003b1});});})[_0x01b4('0x23')](function(){return _0x105158;})[_0x01b4('0x23')](respondWithResult(_0x59a603,null))[_0x01b4('0x2e')](handleError(_0x59a603,null));};exports[_0x01b4('0x9a')]=function(_0x5ea241,_0x48ac02,_0x156657){var _0x645bf;return db[_0x01b4('0x7c')][_0x01b4('0x9b')](function(_0x4b1973){return db['FaxAccount'][_0x01b4('0x3a')](_0x5ea241['body'],{'where':{'id':_0x5ea241[_0x01b4('0x5e')]['id']},'transaction':_0x4b1973})[_0x01b4('0x23')](function(_0xd6aba2){return db[_0x01b4('0x98')][_0x01b4('0x3b')]({'where':{'FaxAccountId':_0x5ea241[_0x01b4('0x5e')]['id']},'transaction':_0x4b1973})[_0x01b4('0x23')](function(_0x3c8725){return db[_0x01b4('0x98')]['bulkCreate'](createExtensionsReciveFax(_[_0x01b4('0x9c')](_0x5ea241[_0x01b4('0x5e')],[_0x01b4('0x9d'),_0x01b4('0x45'),'createdAt',_0x01b4('0x9e'),_0x01b4('0x9f'),_0x01b4('0xa0')])),{'transaction':_0x4b1973});});});})[_0x01b4('0x23')](function(){return db['FaxAccount'][_0x01b4('0xa1')](_0x5ea241[_0x01b4('0x5e')]['id']);})['then'](respondWithResult(_0x48ac02,null))['catch'](handleError(_0x48ac02,null));};exports['getMessages']=function(_0x56cdef,_0x1a0cde,_0x50188d){var _0x3f7afc={'raw':!![],'where':{}};var _0x4eab67={};var _0x1122e0={'count':0x0,'rows':[]};return db['FaxAccount'][_0x01b4('0x6b')]({'where':{'id':_0x56cdef[_0x01b4('0x66')]['id']}})[_0x01b4('0x23')](handleEntityNotFound(_0x1a0cde,null))[_0x01b4('0x23')](function(_0x516c28){if(_0x516c28){_0x4eab67[_0x01b4('0x46')]=_['keys'](db['FaxMessage'][_0x01b4('0x5a')]);_0x4eab67[_0x01b4('0x48')]=_[_0x01b4('0x47')](_0x56cdef[_0x01b4('0x48')]);_0x4eab67['filters']=_['intersection'](_0x4eab67[_0x01b4('0x46')],_0x4eab67[_0x01b4('0x48')]);_0x3f7afc[_0x01b4('0x4a')]=_[_0x01b4('0x4b')](_0x4eab67['model'],qs[_0x01b4('0x4c')](_0x56cdef[_0x01b4('0x48')][_0x01b4('0x4c')]));_0x3f7afc[_0x01b4('0x4a')]=_0x3f7afc[_0x01b4('0x4a')]['length']?_0x3f7afc[_0x01b4('0x4a')]:_0x4eab67[_0x01b4('0x46')];if(!_0x56cdef[_0x01b4('0x48')][_0x01b4('0x4d')](_0x01b4('0x4e'))){_0x3f7afc[_0x01b4('0x34')]=qs[_0x01b4('0x34')](_0x56cdef[_0x01b4('0x48')]['limit']);_0x3f7afc[_0x01b4('0x36')]=qs[_0x01b4('0x36')](_0x56cdef[_0x01b4('0x48')][_0x01b4('0x36')]);}_0x3f7afc['order']=qs['sort'](_0x56cdef[_0x01b4('0x48')]['sort']);_0x3f7afc[_0x01b4('0x51')]=qs['filters'](_['pick'](_0x56cdef[_0x01b4('0x48')],_0x4eab67['filters']));_0x3f7afc[_0x01b4('0x51')]['FaxAccountId']=_0x516c28['id'];if(_0x56cdef[_0x01b4('0x48')][_0x01b4('0x53')]){_0x3f7afc[_0x01b4('0x51')]=_[_0x01b4('0x54')](_0x3f7afc['where'],{'$or':_[_0x01b4('0x43')](_0x3f7afc[_0x01b4('0x4a')],function(_0xa9876){var _0x423fab={};_0x423fab[_0xa9876]={'$like':'%'+_0x56cdef['query'][_0x01b4('0x53')]+'%'};return _0x423fab;})});}if(_0x56cdef[_0x01b4('0x48')]['$gte']){var _0x479859=_0x56cdef['query'][_0x01b4('0xa2')][_0x01b4('0xa3')](',');var _0x2757a2={};_0x2757a2[_0x479859[0x0]]={'$gte':moment(_0x479859[0x1])[_0x01b4('0xa4')](_0x01b4('0xa5'))};_0x3f7afc[_0x01b4('0x51')]=_[_0x01b4('0x54')](_0x3f7afc[_0x01b4('0x51')],_0x2757a2);}_0x3f7afc=_[_0x01b4('0x54')]({},_0x3f7afc,_0x56cdef[_0x01b4('0x55')]);return db[_0x01b4('0xa6')][_0x01b4('0x35')]({'where':_0x3f7afc[_0x01b4('0x51')]})[_0x01b4('0x23')](function(_0x635450){_0x1122e0[_0x01b4('0x35')]=_0x635450;if(_0x56cdef[_0x01b4('0x48')][_0x01b4('0x56')]){_0x3f7afc[_0x01b4('0x57')]=[{'all':!![]}];}return db[_0x01b4('0xa6')][_0x01b4('0x6d')](_0x3f7afc);})[_0x01b4('0x23')](function(_0x20fd81){_0x1122e0[_0x01b4('0x58')]=_0x20fd81;return _0x1122e0;});}})[_0x01b4('0x23')](respondWithFilteredResult(_0x1a0cde,_0x3f7afc))[_0x01b4('0x2e')](handleError(_0x1a0cde,null));};exports[_0x01b4('0x83')]=function(_0x444807,_0xc8f74,_0x48a29b){var _0x8e2c66,_0x337abf={},_0x3e3c33;if(_0x444807[_0x01b4('0x5e')]['to']){_0x3e3c33=_0x444807[_0x01b4('0x5e')]['to'][0x0];}return db[_0x01b4('0x44')]['find']({'where':{'id':_0x444807[_0x01b4('0x66')]['id']},'include':[{'model':db[_0x01b4('0xa7')],'as':_0x01b4('0xa8'),'include':[{'model':db[_0x01b4('0x74')],'as':_0x01b4('0xa9'),'where':{'fax':_0x3e3c33},'limit':0x1,'order':[[_0x01b4('0x9e'),_0x01b4('0xaa')]]}]}]})['then'](handleEntityNotFound(_0xc8f74,null))[_0x01b4('0x23')](function(_0x51cc7d){_0x8e2c66=_0x51cc7d;if(_0x444807[_0x01b4('0x5e')]['attachments']&&_0x444807['body'][_0x01b4('0xab')]['length']){for(var _0x289398=0x0;_0x289398<_0x444807[_0x01b4('0x5e')]['attachments'][_0x01b4('0x5b')];_0x289398+=0x1){_0x444807[_0x01b4('0x5e')][_0x01b4('0xab')][_0x289398]={'filename':_0x444807['body'][_0x01b4('0xab')][_0x289398][_0x01b4('0x3f')],'id':_0x444807[_0x01b4('0x5e')]['attachments'][_0x289398]['id'],'path':path[_0x01b4('0xac')](config[_0x01b4('0xad')],_0x01b4('0xae'),_0x444807[_0x01b4('0x5e')][_0x01b4('0xab')][_0x289398]['basename'])};}}return respondWithRpcPromise(_0x01b4('0xaf'),_0x01b4('0xaf'),{'FaxAccountId':_['isNil'](_0x444807[_0x01b4('0x66')]['id'])?undefined:_0x444807[_0x01b4('0x66')]['id'],'path':_[_0x01b4('0xb0')](_0x444807[_0x01b4('0x5e')][_0x01b4('0xab')][0x0][_0x01b4('0x7')])?undefined:_0x444807[_0x01b4('0x5e')]['attachments'][0x0][_0x01b4('0x7')],'fax':_[_0x01b4('0xb0')](_0x444807[_0x01b4('0x5e')]['to'][0x0])?undefined:_0x444807[_0x01b4('0x5e')]['to'][0x0]},client9002);})[_0x01b4('0x23')](function(){if(_0x8e2c66){if(_['isNil'](_0x444807[_0x01b4('0x5e')][_0x01b4('0xb1')])){_0x444807[_0x01b4('0x5e')]['from']=util[_0x01b4('0xa4')]('\x22%s\x22\x20<%s>',_0x8e2c66['name'],_0x8e2c66['fax']);}if(_0x8e2c66[_0x01b4('0xa8')]){if(_0x8e2c66[_0x01b4('0xa8')][_0x01b4('0xa9')][_0x01b4('0x5b')]){return _0x8e2c66[_0x01b4('0xa8')][_0x01b4('0xa9')][0x0];}else{return db['CmContact'][_0x01b4('0x5d')](_[_0x01b4('0x1b')](_0x444807['body'],{'firstName':_0x444807[_0x01b4('0x5e')]['to'][0x0],'phone':_0x444807[_0x01b4('0x5e')]['to'][0x0],'fax':_0x444807[_0x01b4('0x5e')]['to'][0x0],'ListId':_0x8e2c66[_0x01b4('0xa0')]}));}}else{throw new Error(_0x01b4('0xb2'));}}else{throw new Error(_0x01b4('0xb3'));}})[_0x01b4('0x23')](function(_0x19d943){if(_0x19d943){return db[_0x01b4('0xb4')][_0x01b4('0x5c')]({'where':{'ContactId':_0x19d943['id'],'closed':![],'FaxAccountId':_0x8e2c66['id']}})[_0x01b4('0x23')](function(_0x11ede5){if(_0x11ede5){return[_0x11ede5,![]];}return db[_0x01b4('0xb4')][_0x01b4('0x5d')]({'UserId':_0x444807['user']['id'],'ContactId':_0x19d943['id'],'FaxAccountId':_0x8e2c66['id'],'fax':_0x444807['body']['to'][0x0],'firstMsgDirection':_0x01b4('0xb5'),'Messages':[_[_0x01b4('0x54')](_0x444807['body'],{'read':![],'body':_0x444807[_0x01b4('0x5e')][_0x01b4('0xab')][0x0]['filename'],'FaxAccountId':_0x8e2c66['id'],'UserId':_0x444807[_0x01b4('0x5f')]['id'],'ContactId':_0x19d943['id'],'AttachmentId':_0x444807['body'][_0x01b4('0xab')][0x0]['id']})]},{'include':[{'model':db[_0x01b4('0xa6')],'as':_0x01b4('0xb6')}]})[_0x01b4('0x23')](function(_0x200b18){return[_0x200b18,!![]];});});}else{throw new Error(_0x01b4('0xb7'));}})[_0x01b4('0xb8')](function(_0x14e09a,_0x4a4671){if(_0x4a4671){return _0x14e09a;}return db[_0x01b4('0xa6')]['create']({'direction':_0x01b4('0xb5'),'read':![],'body':_0x444807['body']['attachments'][0x0][_0x01b4('0xb9')],'FaxAccountId':_0x8e2c66['id'],'FaxInteractionId':_0x14e09a['id'],'UserId':_0x444807['user']['id'],'ContactId':_0x14e09a['ContactId'],'AttachmentId':_0x444807[_0x01b4('0x5e')][_0x01b4('0xab')][0x0]['id']})[_0x01b4('0x23')](function(_0x192acb){_0x14e09a[_0x01b4('0xba')][_0x01b4('0xb6')]=[];_0x14e09a[_0x01b4('0xba')][_0x01b4('0xb6')]['push'](_0x192acb[_0x01b4('0xba')]);return _0x14e09a;});})[_0x01b4('0x23')](function(_0x21e784){respondWithRpcPromise('SendFax','SendFax',{'FaxAccountId':_[_0x01b4('0xb0')](_0x444807[_0x01b4('0x66')]['id'])?undefined:_0x444807[_0x01b4('0x66')]['id'],'path':_[_0x01b4('0xb0')](_0x444807['body'][_0x01b4('0xab')][0x0][_0x01b4('0x7')])?undefined:_0x444807['body'][_0x01b4('0xab')][0x0][_0x01b4('0x7')],'fax':_[_0x01b4('0xb0')](_0x444807['body']['to'][0x0])?undefined:_0x444807[_0x01b4('0x5e')]['to'][0x0],'AttachmentId':_0x444807[_0x01b4('0x5e')][_0x01b4('0xab')][0x0]['id']},client9002)[_0x01b4('0x23')](function(_0x265114){logger[_0x01b4('0x24')](_0x01b4('0xbb'),_0x265114);})[_0x01b4('0x2e')](function(_0x3d3e88){logger[_0x01b4('0x24')](_0x01b4('0xbb'),_0x3d3e88);});return _0x21e784;})['then'](respondWithResult(_0xc8f74,null))[_0x01b4('0x2e')](handleError(_0xc8f74,null));};exports['addAgents']=function(_0x53c164,_0x2c8819,_0x351630){return db['FaxAccount'][_0x01b4('0x5c')]({'where':{'id':_0x53c164[_0x01b4('0x66')]['id']}})[_0x01b4('0x23')](handleEntityNotFound(_0x2c8819,null))['then'](function(_0x2eaba8){if(_0x2eaba8){return _0x2eaba8[_0x01b4('0xbc')](_0x53c164[_0x01b4('0x5e')]['ids'],_[_0x01b4('0x9c')](_0x53c164['body'],['ids','id'])||{})[_0x01b4('0xb8')](function(_0x4ad7d1){for(var _0x30fc69=0x0;_0x30fc69<_0x53c164[_0x01b4('0x5e')]['ids'][_0x01b4('0x5b')];_0x30fc69+=0x1){socket[_0x01b4('0xbd')](_0x01b4('0xbe'),{'UserId':Number(_0x53c164[_0x01b4('0x5e')][_0x01b4('0x72')][_0x30fc69]),'FaxAccountId':Number(_0x53c164[_0x01b4('0x66')]['id'])});}return _0x4ad7d1;});}})['then'](respondWithResult(_0x2c8819,null))[_0x01b4('0x2e')](handleError(_0x2c8819,null));};exports[_0x01b4('0xbf')]=function(_0x1fea56,_0x253010,_0x20e710){return db[_0x01b4('0x44')][_0x01b4('0x5c')]({'where':{'id':_0x1fea56[_0x01b4('0x66')]['id']}})[_0x01b4('0x23')](handleEntityNotFound(_0x253010,null))[_0x01b4('0x23')](function(_0x150ee0){if(_0x150ee0){return _0x150ee0['removeAgents'](_0x1fea56['query'][_0x01b4('0x72')])[_0x01b4('0x23')](function(){if(_[_0x01b4('0xc0')](_0x1fea56['query'][_0x01b4('0x72')])){for(var _0x5c3c7b=0x0;_0x5c3c7b<_0x1fea56[_0x01b4('0x48')][_0x01b4('0x72')][_0x01b4('0x5b')];_0x5c3c7b+=0x1){socket[_0x01b4('0xbd')]('userFaxAccount:remove',{'UserId':Number(_0x1fea56['query'][_0x01b4('0x72')][_0x5c3c7b]),'FaxAccountId':Number(_0x1fea56[_0x01b4('0x66')]['id'])});}}else{socket[_0x01b4('0xbd')](_0x01b4('0xc1'),{'UserId':Number(_0x1fea56['query'][_0x01b4('0x72')]),'FaxAccountId':Number(_0x1fea56['params']['id'])});}});}})['then'](respondWithStatusCode(_0x253010,null))['catch'](handleError(_0x253010,null));};exports['getAgents']=function(_0x4cfb70,_0x5b3a7a,_0x3360ae){var _0x5d33ac={};var _0x521c60={};var _0x526730;var _0x5e3809;return db[_0x01b4('0x44')][_0x01b4('0x6b')]({'where':{'id':_0x4cfb70['params']['id']}})[_0x01b4('0x23')](handleEntityNotFound(_0x5b3a7a,null))['then'](function(_0x26cdce){if(_0x26cdce){_0x526730=_0x26cdce;_0x521c60[_0x01b4('0x46')]=_[_0x01b4('0x47')](db[_0x01b4('0x75')]['rawAttributes']);_0x521c60['query']=_[_0x01b4('0x47')](_0x4cfb70[_0x01b4('0x48')]);_0x521c60[_0x01b4('0x49')]=_[_0x01b4('0x4b')](_0x521c60[_0x01b4('0x46')],_0x521c60[_0x01b4('0x48')]);_0x5d33ac['attributes']=_[_0x01b4('0x4b')](_0x521c60['model'],qs[_0x01b4('0x4c')](_0x4cfb70[_0x01b4('0x48')][_0x01b4('0x4c')]));_0x5d33ac['attributes']=_0x5d33ac[_0x01b4('0x4a')][_0x01b4('0x5b')]?_0x5d33ac[_0x01b4('0x4a')]:_0x521c60[_0x01b4('0x46')];_0x5d33ac['order']=qs[_0x01b4('0x50')](_0x4cfb70['query'][_0x01b4('0x50')]);_0x5d33ac[_0x01b4('0x51')]=qs[_0x01b4('0x49')](_['pick'](_0x4cfb70[_0x01b4('0x48')],_0x521c60[_0x01b4('0x49')]));if(_0x4cfb70[_0x01b4('0x48')][_0x01b4('0x53')]){_0x5d33ac[_0x01b4('0x51')]=_[_0x01b4('0x54')](_0x5d33ac[_0x01b4('0x51')],{'$or':_[_0x01b4('0x43')](_0x5d33ac['attributes'],function(_0x5643e3){var _0x55eceb={};_0x55eceb[_0x5643e3]={'$like':'%'+_0x4cfb70[_0x01b4('0x48')][_0x01b4('0x53')]+'%'};return _0x55eceb;})});}_0x5d33ac=_[_0x01b4('0x54')]({},_0x5d33ac,_0x4cfb70['options']);return _0x526730['getAgents'](_0x5d33ac);}})[_0x01b4('0x23')](function(_0x35313a){if(_0x35313a){_0x5e3809=_0x35313a['length'];if(!_0x4cfb70['query'][_0x01b4('0x4d')](_0x01b4('0x4e'))){_0x5d33ac['limit']=qs[_0x01b4('0x34')](_0x4cfb70[_0x01b4('0x48')][_0x01b4('0x34')]);_0x5d33ac[_0x01b4('0x36')]=qs['offset'](_0x4cfb70['query'][_0x01b4('0x36')]);}return _0x526730[_0x01b4('0xc2')](_0x5d33ac);}})['then'](function(_0x30c1b4){if(_0x30c1b4){return _0x30c1b4?{'count':_0x5e3809,'rows':_0x30c1b4}:null;}})[_0x01b4('0x23')](respondWithResult(_0x5b3a7a,null))['catch'](handleError(_0x5b3a7a,null));};
\ No newline at end of file
+var _0x045d=['createdAt','ListId','findById','getMessages','$gte','format','YYYY-MM-DD\x20HH:mm:ss','FaxMessage','List','Contacts','attachments','root','server/files/attachments','basename','CheckAfterSend','isNil','path','from','\x22%s\x22\x20<%s>','fax','List\x20not\x20found','out','Messages','filename','ContactId','dataValues','SendFax','SendFaxRpc,\x20%s','addAgents','omit','spread','userFaxAccount:save','removeAgents','isArray','emit','userFaxAccount:remove','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','fs-extra','lodash','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','socket.io-emitter','./faxAccount.socket','register','jayson/promise','client','http','then','info','request\x20sent','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','FaxAccount,\x20%s,\x20%s','message','result','catch','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply','reject','save','get','UserProfileResource','destroy','stack','name','index','Pause','mandatoryDispositionPause','map','FaxAccount','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','show','params','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','FaxAccounts','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','find','addDisposition','FaxAccountId','findOne','Disposition','hasOwnProperty','ids','addAnswer','getAnswers','CannedAnswer','removeAnswers','addInteraction','getInteractions','FaxInteraction','CmContact','Contact','User','fullname','Tags','color','tag','addApplications','sequelize','transaction','ISOLATION_LEVELS','FaxApplication','bulkCreate','findAndCountAll','priority','finally','send','json','getApplications','from-voip-provider','exten','localstationid','app','system','description','appdata','push','Answer','CDR(type)=inbound-fax','Set','ecm','gateway','faxdetect','maxrate','minrate','modem','t38timeout','FAXOPT(','/var/opt/motion2/server/files/attachments/fax-${CALLERID(num)}-${CUT(UNIQUEID,.,1)}-${CUT(UNIQUEID,.,2)}-${STRFTIME(,,%C%y%m%d%H%M%S)}-rx.tif,d','ReceiveFax','addAccountApplications','VoiceExtension','updateAccountApplications'];(function(_0x55e02c,_0x580e38){var _0x315de5=function(_0x5199f0){while(--_0x5199f0){_0x55e02c['push'](_0x55e02c['shift']());}};_0x315de5(++_0x580e38);}(_0x045d,0x1a9));var _0xd045=function(_0x514136,_0x4c650b){_0x514136=_0x514136-0x0;var _0x1b85f1=_0x045d[_0x514136];return _0x1b85f1;};'use strict';var emlformat=require(_0xd045('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd045('0x1'));var jsonpatch=require(_0xd045('0x2'));var rp=require(_0xd045('0x3'));var moment=require(_0xd045('0x4'));var BPromise=require(_0xd045('0x5'));var Mustache=require(_0xd045('0x6'));var util=require(_0xd045('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0xd045('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd045('0x9'));var _=require(_0xd045('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xd045('0xb'));var toCsv=require(_0xd045('0x8'));var querystring=require(_0xd045('0xc'));var Papa=require('papaparse');var Redis=require(_0xd045('0xd'));var authService=require(_0xd045('0xe'));var qs=require(_0xd045('0xf'));var as=require(_0xd045('0x10'));var hardwareService=require(_0xd045('0x11'));var logger=require(_0xd045('0x12'))(_0xd045('0x13'));var utils=require(_0xd045('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xd045('0x15'));var db=require(_0xd045('0x16'))['db'];config[_0xd045('0x17')]=_[_0xd045('0x18')](config['redis'],{'host':_0xd045('0x19'),'port':0x18eb});var socket=require(_0xd045('0x1a'))(new Redis(config[_0xd045('0x17')]));require(_0xd045('0x1b'))[_0xd045('0x1c')](socket);var jayson=require(_0xd045('0x1d'));var client=jayson[_0xd045('0x1e')][_0xd045('0x1f')]({'port':0x232c});var client9002=jayson[_0xd045('0x1e')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2aa9d5,_0x1d9219,_0x20a2bc,_0x4e6ab3){return new BPromise(function(_0x1350e4,_0x543bdd){var _0x28c590=_0x4e6ab3||client;return _0x28c590['request'](_0x2aa9d5,_0x20a2bc)[_0xd045('0x20')](function(_0x10e035){logger[_0xd045('0x21')]('FaxAccount,\x20%s,\x20%s',_0x1d9219,_0xd045('0x22'));logger['debug'](_0xd045('0x23'),_0x1d9219,_0xd045('0x22'),JSON[_0xd045('0x24')](_0x10e035));if(_0x10e035[_0xd045('0x25')]){if(_0x10e035[_0xd045('0x25')][_0xd045('0x26')]===0x1f4){logger[_0xd045('0x25')](_0xd045('0x27'),_0x1d9219,_0x10e035[_0xd045('0x25')][_0xd045('0x28')]);return _0x543bdd(_0x10e035[_0xd045('0x25')][_0xd045('0x28')]);}logger[_0xd045('0x25')](_0xd045('0x27'),_0x1d9219,_0x10e035[_0xd045('0x25')][_0xd045('0x28')]);return _0x1350e4(_0x10e035[_0xd045('0x25')][_0xd045('0x28')]);}else{logger['info'](_0xd045('0x27'),_0x1d9219,_0xd045('0x22'));_0x1350e4(_0x10e035[_0xd045('0x29')][_0xd045('0x28')]);}})[_0xd045('0x2a')](function(_0x1bf404){logger[_0xd045('0x25')](_0xd045('0x27'),_0x1d9219,_0x1bf404);_0x543bdd(_0x1bf404);});});}function respondWithStatusCode(_0x4b4d49,_0x22122a){_0x22122a=_0x22122a||0xcc;return function(_0x545a73){if(_0x545a73){return _0x4b4d49[_0xd045('0x2b')](_0x22122a);}return _0x4b4d49[_0xd045('0x2c')](_0x22122a)[_0xd045('0x2d')]();};}function respondWithResult(_0x4b5523,_0x483423){_0x483423=_0x483423||0xc8;return function(_0x57c796){if(_0x57c796){return _0x4b5523[_0xd045('0x2c')](_0x483423)['json'](_0x57c796);}};}function respondWithFilteredResult(_0x83a002,_0x5be049){return function(_0x485e6b){if(_0x485e6b){var _0xfa860c=typeof _0x5be049[_0xd045('0x2e')]===_0xd045('0x2f')&&typeof _0x5be049[_0xd045('0x30')]===_0xd045('0x2f');var _0x389c91=_0x485e6b[_0xd045('0x31')];var _0x1b5e53=_0xfa860c?0x0:_0x5be049[_0xd045('0x2e')];var _0x2ecee8=_0xfa860c?_0x485e6b[_0xd045('0x31')]:_0x5be049['offset']+_0x5be049[_0xd045('0x30')];var _0x507d7a;if(_0x2ecee8>=_0x389c91){_0x2ecee8=_0x389c91;_0x507d7a=0xc8;}else{_0x507d7a=0xce;}_0x83a002[_0xd045('0x2c')](_0x507d7a);return _0x83a002[_0xd045('0x32')](_0xd045('0x33'),_0x1b5e53+'-'+_0x2ecee8+'/'+_0x389c91)['json'](_0x485e6b);}return null;};}function patchUpdates(_0x28d70e){return function(_0x20eb1a){try{jsonpatch[_0xd045('0x34')](_0x20eb1a,_0x28d70e,!![]);}catch(_0x43d612){return BPromise[_0xd045('0x35')](_0x43d612);}return _0x20eb1a[_0xd045('0x36')]();};}function saveUpdates(_0x52bec8,_0x3dd4a8){return function(_0xe0fc7e){if(_0xe0fc7e){return _0xe0fc7e['update'](_0x52bec8)[_0xd045('0x20')](function(_0xecf421){return _0xecf421;});}return null;};}function removeEntity(_0x553b2d,_0x330041){return function(_0x247d17){if(_0x247d17){return _0x247d17['destroy']()[_0xd045('0x20')](function(){var _0x2c3f76=_0x247d17[_0xd045('0x37')]({'plain':!![]});var _0x3080ce='FaxAccounts';return db[_0xd045('0x38')][_0xd045('0x39')]({'where':{'type':_0x3080ce,'resourceId':_0x2c3f76['id']}})[_0xd045('0x20')](function(){return _0x247d17;});})['then'](function(){_0x553b2d[_0xd045('0x2c')](0xcc)[_0xd045('0x2d')]();});}};}function handleEntityNotFound(_0x50acf7,_0x48d697){return function(_0x1c1624){if(!_0x1c1624){_0x50acf7[_0xd045('0x2b')](0x194);}return _0x1c1624;};}function handleError(_0x229f27,_0xad7009){_0xad7009=_0xad7009||0x1f4;return function(_0x1bc215){logger[_0xd045('0x25')](_0x1bc215[_0xd045('0x3a')]);if(_0x1bc215[_0xd045('0x3b')]){delete _0x1bc215['name'];}_0x229f27[_0xd045('0x2c')](_0xad7009)['send'](_0x1bc215);};}exports[_0xd045('0x3c')]=function(_0x465696,_0x2fa156){var _0x356cbc={'include':[{'model':db[_0xd045('0x3d')],'as':_0xd045('0x3e')}]},_0x12f264={},_0x4e0ec5={'count':0x0,'rows':[]};var _0x40d3ee=_[_0xd045('0x3f')](db[_0xd045('0x40')][_0xd045('0x41')],function(_0xd06942){return{'name':_0xd06942['fieldName'],'type':_0xd06942[_0xd045('0x42')][_0xd045('0x43')]};});_0x12f264[_0xd045('0x44')]=_[_0xd045('0x3f')](_0x40d3ee,_0xd045('0x3b'));_0x12f264[_0xd045('0x45')]=_[_0xd045('0x46')](_0x465696[_0xd045('0x45')]);_0x12f264[_0xd045('0x47')]=_[_0xd045('0x48')](_0x12f264[_0xd045('0x44')],_0x12f264['query']);_0x356cbc[_0xd045('0x49')]=_['intersection'](_0x12f264[_0xd045('0x44')],qs[_0xd045('0x4a')](_0x465696[_0xd045('0x45')][_0xd045('0x4a')]));_0x356cbc[_0xd045('0x49')]=_0x356cbc['attributes'][_0xd045('0x4b')]?_0x356cbc[_0xd045('0x49')]:_0x12f264['model'];if(!_0x465696[_0xd045('0x45')]['hasOwnProperty'](_0xd045('0x4c'))){_0x356cbc['limit']=qs[_0xd045('0x30')](_0x465696[_0xd045('0x45')][_0xd045('0x30')]);_0x356cbc['offset']=qs[_0xd045('0x2e')](_0x465696[_0xd045('0x45')][_0xd045('0x2e')]);}_0x356cbc[_0xd045('0x4d')]=qs[_0xd045('0x4e')](_0x465696['query'][_0xd045('0x4e')]);_0x356cbc[_0xd045('0x4f')]=qs[_0xd045('0x47')](_[_0xd045('0x50')](_0x465696[_0xd045('0x45')],_0x12f264['filters']),_0x40d3ee);if(_0x465696[_0xd045('0x45')][_0xd045('0x51')]){_0x356cbc['where']=_['merge'](_0x356cbc['where'],{'$or':_[_0xd045('0x3f')](_0x40d3ee,function(_0x3669ac){if(_0x3669ac[_0xd045('0x42')]!==_0xd045('0x52')){var _0x2c5bc9={};_0x2c5bc9[_0x3669ac[_0xd045('0x3b')]]={'$like':'%'+_0x465696[_0xd045('0x45')][_0xd045('0x51')]+'%'};return _0x2c5bc9;}})});}_0x356cbc=_[_0xd045('0x53')]({},_0x356cbc,_0x465696[_0xd045('0x54')]);var _0x3a33f2={'where':_0x356cbc[_0xd045('0x4f')]};return db['FaxAccount'][_0xd045('0x31')](_0x3a33f2)[_0xd045('0x20')](function(_0x6af6e){_0x4e0ec5[_0xd045('0x31')]=_0x6af6e;if(_0x465696[_0xd045('0x45')][_0xd045('0x55')]){_0x356cbc[_0xd045('0x56')]=[{'all':!![]}];}return db[_0xd045('0x40')][_0xd045('0x57')](_0x356cbc);})[_0xd045('0x20')](function(_0x2d062d){_0x4e0ec5[_0xd045('0x58')]=_0x2d062d;return _0x4e0ec5;})[_0xd045('0x20')](respondWithFilteredResult(_0x2fa156,_0x356cbc))[_0xd045('0x2a')](handleError(_0x2fa156,null));};exports[_0xd045('0x59')]=function(_0x3326e0,_0x4cb2d1){var _0x5c9252={'raw':![],'where':{'id':_0x3326e0[_0xd045('0x5a')]['id']},'include':[{'model':db[_0xd045('0x3d')],'as':_0xd045('0x3e')}]},_0x39f109={};_0x39f109[_0xd045('0x44')]=_[_0xd045('0x46')](db['FaxAccount'][_0xd045('0x41')]);_0x39f109[_0xd045('0x45')]=_[_0xd045('0x46')](_0x3326e0[_0xd045('0x45')]);_0x39f109[_0xd045('0x47')]=_[_0xd045('0x48')](_0x39f109[_0xd045('0x44')],_0x39f109[_0xd045('0x45')]);_0x5c9252['attributes']=_[_0xd045('0x48')](_0x39f109[_0xd045('0x44')],qs[_0xd045('0x4a')](_0x3326e0['query']['fields']));_0x5c9252[_0xd045('0x49')]=_0x5c9252[_0xd045('0x49')][_0xd045('0x4b')]?_0x5c9252[_0xd045('0x49')]:_0x39f109[_0xd045('0x44')];if(_0x3326e0[_0xd045('0x45')][_0xd045('0x55')]){_0x5c9252[_0xd045('0x56')]=[{'all':!![]}];}_0x5c9252=_[_0xd045('0x53')]({},_0x5c9252,_0x3326e0[_0xd045('0x54')]);return db['FaxAccount']['find'](_0x5c9252)[_0xd045('0x20')](handleEntityNotFound(_0x4cb2d1,null))[_0xd045('0x20')](respondWithResult(_0x4cb2d1,null))[_0xd045('0x2a')](handleError(_0x4cb2d1,null));};exports[_0xd045('0x5b')]=function(_0x38f3a1,_0x4b6a70){return db[_0xd045('0x40')][_0xd045('0x5b')](_0x38f3a1['body'],{})[_0xd045('0x20')](function(_0x1a280c){var _0x3fad17=_0x38f3a1['user']['get']({'plain':!![]});if(!_0x3fad17)throw new Error(_0xd045('0x5c'));if(_0x3fad17[_0xd045('0x5d')]===_0xd045('0x5e')){var _0x2c8977=_0x1a280c[_0xd045('0x37')]({'plain':!![]});var _0x2f12ef=_0xd045('0x5f');return db[_0xd045('0x60')]['find']({'where':{'name':_0x2f12ef,'userProfileId':_0x3fad17['userProfileId']},'raw':!![]})[_0xd045('0x20')](function(_0xd2465){if(_0xd2465&&_0xd2465['autoAssociation']===0x0){return db['UserProfileResource'][_0xd045('0x5b')]({'name':_0x2c8977[_0xd045('0x3b')],'resourceId':_0x2c8977['id'],'type':_0xd2465[_0xd045('0x3b')],'sectionId':_0xd2465['id']},{})[_0xd045('0x20')](function(){return _0x1a280c;});}else{return _0x1a280c;}})['catch'](function(_0x52895b){logger[_0xd045('0x25')](_0xd045('0x61'),_0x52895b);throw _0x52895b;});}return _0x1a280c;})[_0xd045('0x20')](respondWithResult(_0x4b6a70,0xc9))[_0xd045('0x2a')](handleError(_0x4b6a70,null));};exports[_0xd045('0x62')]=function(_0x4d28ea,_0x57cacc){if(_0x4d28ea[_0xd045('0x63')]['id']){delete _0x4d28ea['body']['id'];}return db['FaxAccount'][_0xd045('0x64')]({'where':{'id':_0x4d28ea[_0xd045('0x5a')]['id']},'include':[{'model':db[_0xd045('0x3d')],'as':_0xd045('0x3e')}]})[_0xd045('0x20')](handleEntityNotFound(_0x57cacc,null))[_0xd045('0x20')](saveUpdates(_0x4d28ea[_0xd045('0x63')],null))[_0xd045('0x20')](respondWithResult(_0x57cacc,null))[_0xd045('0x2a')](handleError(_0x57cacc,null));};exports[_0xd045('0x39')]=function(_0x1545cd,_0x2cd57b){return db[_0xd045('0x40')][_0xd045('0x64')]({'where':{'id':_0x1545cd[_0xd045('0x5a')]['id']}})[_0xd045('0x20')](handleEntityNotFound(_0x2cd57b,null))[_0xd045('0x20')](removeEntity(_0x2cd57b,null))['catch'](handleError(_0x2cd57b,null));};exports['describe']=function(_0x1b4384,_0x16f51b){return db['FaxAccount']['describe']()['then'](respondWithResult(_0x16f51b,null))['catch'](handleError(_0x16f51b,null));};exports[_0xd045('0x65')]=function(_0x3841e3,_0x387ecd,_0x3f3b01){if(_0x3841e3[_0xd045('0x63')]['id']){delete _0x3841e3[_0xd045('0x63')]['id'];}return db[_0xd045('0x40')][_0xd045('0x64')]({'where':{'id':_0x3841e3[_0xd045('0x5a')]['id']}})[_0xd045('0x20')](handleEntityNotFound(_0x387ecd,null))['then'](function(_0x2fbc9e){if(_0x2fbc9e){_0x3841e3[_0xd045('0x63')][_0xd045('0x66')]=_0x2fbc9e['id'];return db['Disposition']['create'](_0x3841e3[_0xd045('0x63')]);}})[_0xd045('0x20')](respondWithResult(_0x387ecd,null))[_0xd045('0x2a')](handleError(_0x387ecd,null));};exports['getDispositions']=function(_0x59ef8e,_0x8f53a4,_0x5530ef){var _0x8b4e16={'raw':![],'where':{}};var _0x4c4bd6={};var _0x2b7c41={'count':0x0,'rows':[]};return db[_0xd045('0x40')][_0xd045('0x67')]({'where':{'id':_0x59ef8e['params']['id']}})[_0xd045('0x20')](handleEntityNotFound(_0x8f53a4,null))[_0xd045('0x20')](function(_0x8f3c6f){if(_0x8f3c6f){_0x4c4bd6[_0xd045('0x44')]=_['keys'](db[_0xd045('0x68')][_0xd045('0x41')]);_0x4c4bd6['query']=_[_0xd045('0x46')](_0x59ef8e[_0xd045('0x45')]);_0x4c4bd6[_0xd045('0x47')]=_[_0xd045('0x48')](_0x4c4bd6['model'],_0x4c4bd6[_0xd045('0x45')]);_0x8b4e16[_0xd045('0x49')]=_[_0xd045('0x48')](_0x4c4bd6['model'],qs[_0xd045('0x4a')](_0x59ef8e[_0xd045('0x45')][_0xd045('0x4a')]));_0x8b4e16[_0xd045('0x49')]=_0x8b4e16[_0xd045('0x49')][_0xd045('0x4b')]?_0x8b4e16[_0xd045('0x49')]:_0x4c4bd6['model'];if(!_0x59ef8e[_0xd045('0x45')][_0xd045('0x69')]('nolimit')){_0x8b4e16[_0xd045('0x30')]=qs[_0xd045('0x30')](_0x59ef8e[_0xd045('0x45')][_0xd045('0x30')]);_0x8b4e16['offset']=qs[_0xd045('0x2e')](_0x59ef8e[_0xd045('0x45')][_0xd045('0x2e')]);}_0x8b4e16[_0xd045('0x4d')]=qs[_0xd045('0x4e')](_0x59ef8e['query'][_0xd045('0x4e')]);_0x8b4e16['where']=qs['filters'](_[_0xd045('0x50')](_0x59ef8e[_0xd045('0x45')],_0x4c4bd6[_0xd045('0x47')]));_0x8b4e16['where'][_0xd045('0x66')]=_0x8f3c6f['id'];if(_0x59ef8e['query'][_0xd045('0x51')]){_0x8b4e16[_0xd045('0x4f')]=_[_0xd045('0x53')](_0x8b4e16[_0xd045('0x4f')],{'$or':_[_0xd045('0x3f')](_0x8b4e16[_0xd045('0x49')],function(_0x558ced){var _0x101a65={};_0x101a65[_0x558ced]={'$like':'%'+_0x59ef8e[_0xd045('0x45')][_0xd045('0x51')]+'%'};return _0x101a65;})});}_0x8b4e16=_[_0xd045('0x53')]({},_0x8b4e16,_0x59ef8e[_0xd045('0x54')]);return db[_0xd045('0x68')][_0xd045('0x31')]({'where':_0x8b4e16['where']})['then'](function(_0x3b3f61){_0x2b7c41[_0xd045('0x31')]=_0x3b3f61;if(_0x59ef8e[_0xd045('0x45')]['includeAll']){_0x8b4e16['include']=[{'all':!![]}];}return db['Disposition'][_0xd045('0x57')](_0x8b4e16);})[_0xd045('0x20')](function(_0x18c435){_0x2b7c41[_0xd045('0x58')]=_0x18c435;return _0x2b7c41;});}})[_0xd045('0x20')](respondWithFilteredResult(_0x8f53a4,_0x8b4e16))[_0xd045('0x2a')](handleError(_0x8f53a4,null));};exports['removeDispositions']=function(_0x33f8ed,_0x2415c6,_0x26218c){return db[_0xd045('0x40')][_0xd045('0x64')]({'where':{'id':_0x33f8ed[_0xd045('0x5a')]['id']}})['then'](handleEntityNotFound(_0x2415c6,null))['then'](function(_0x162dda){if(_0x162dda){return _0x162dda['removeDispositions'](_0x33f8ed[_0xd045('0x45')][_0xd045('0x6a')]);}})[_0xd045('0x20')](respondWithStatusCode(_0x2415c6,null))[_0xd045('0x2a')](handleError(_0x2415c6,null));};exports[_0xd045('0x6b')]=function(_0x313f04,_0x31ab78,_0x1d3ce3){if(_0x313f04['body']['id']){delete _0x313f04['body']['id'];}return db[_0xd045('0x40')]['find']({'where':{'id':_0x313f04[_0xd045('0x5a')]['id']}})[_0xd045('0x20')](handleEntityNotFound(_0x31ab78,null))[_0xd045('0x20')](function(_0x293146){if(_0x293146){_0x313f04[_0xd045('0x63')][_0xd045('0x66')]=_0x293146['id'];return db['CannedAnswer'][_0xd045('0x5b')](_0x313f04[_0xd045('0x63')]);}})[_0xd045('0x20')](respondWithResult(_0x31ab78,null))[_0xd045('0x2a')](handleError(_0x31ab78,null));};exports[_0xd045('0x6c')]=function(_0x291a73,_0x1f858f,_0x260bac){var _0xc06c68={'raw':![],'where':{}};var _0x2b6543={};var _0x1fa647={'count':0x0,'rows':[]};return db[_0xd045('0x40')][_0xd045('0x67')]({'where':{'id':_0x291a73[_0xd045('0x5a')]['id']}})['then'](handleEntityNotFound(_0x1f858f,null))['then'](function(_0x23ca58){if(_0x23ca58){_0x2b6543[_0xd045('0x44')]=_[_0xd045('0x46')](db[_0xd045('0x6d')][_0xd045('0x41')]);_0x2b6543['query']=_['keys'](_0x291a73[_0xd045('0x45')]);_0x2b6543[_0xd045('0x47')]=_[_0xd045('0x48')](_0x2b6543['model'],_0x2b6543[_0xd045('0x45')]);_0xc06c68[_0xd045('0x49')]=_[_0xd045('0x48')](_0x2b6543['model'],qs[_0xd045('0x4a')](_0x291a73[_0xd045('0x45')]['fields']));_0xc06c68['attributes']=_0xc06c68[_0xd045('0x49')][_0xd045('0x4b')]?_0xc06c68['attributes']:_0x2b6543[_0xd045('0x44')];if(!_0x291a73[_0xd045('0x45')][_0xd045('0x69')](_0xd045('0x4c'))){_0xc06c68[_0xd045('0x30')]=qs['limit'](_0x291a73[_0xd045('0x45')][_0xd045('0x30')]);_0xc06c68[_0xd045('0x2e')]=qs[_0xd045('0x2e')](_0x291a73[_0xd045('0x45')][_0xd045('0x2e')]);}_0xc06c68['order']=qs[_0xd045('0x4e')](_0x291a73[_0xd045('0x45')]['sort']);_0xc06c68[_0xd045('0x4f')]=qs[_0xd045('0x47')](_[_0xd045('0x50')](_0x291a73[_0xd045('0x45')],_0x2b6543[_0xd045('0x47')]));_0xc06c68[_0xd045('0x4f')][_0xd045('0x66')]=_0x23ca58['id'];if(_0x291a73[_0xd045('0x45')][_0xd045('0x51')]){_0xc06c68[_0xd045('0x4f')]=_[_0xd045('0x53')](_0xc06c68[_0xd045('0x4f')],{'$or':_[_0xd045('0x3f')](_0xc06c68[_0xd045('0x49')],function(_0x3742fc){var _0x52df48={};_0x52df48[_0x3742fc]={'$like':'%'+_0x291a73[_0xd045('0x45')][_0xd045('0x51')]+'%'};return _0x52df48;})});}_0xc06c68=_[_0xd045('0x53')]({},_0xc06c68,_0x291a73[_0xd045('0x54')]);return db[_0xd045('0x6d')][_0xd045('0x31')]({'where':_0xc06c68[_0xd045('0x4f')]})['then'](function(_0x347f7f){_0x1fa647['count']=_0x347f7f;if(_0x291a73['query'][_0xd045('0x55')]){_0xc06c68['include']=[{'all':!![]}];}return db[_0xd045('0x6d')][_0xd045('0x57')](_0xc06c68);})[_0xd045('0x20')](function(_0x561fd6){_0x1fa647[_0xd045('0x58')]=_0x561fd6;return _0x1fa647;});}})[_0xd045('0x20')](respondWithFilteredResult(_0x1f858f,_0xc06c68))[_0xd045('0x2a')](handleError(_0x1f858f,null));};exports['removeAnswers']=function(_0x77492,_0x493f12,_0x583c0e){return db[_0xd045('0x40')]['find']({'where':{'id':_0x77492['params']['id']}})['then'](handleEntityNotFound(_0x493f12,null))[_0xd045('0x20')](function(_0x7ce4fd){if(_0x7ce4fd){return _0x7ce4fd[_0xd045('0x6e')](_0x77492[_0xd045('0x45')]['ids']);}})[_0xd045('0x20')](respondWithStatusCode(_0x493f12,null))[_0xd045('0x2a')](handleError(_0x493f12,null));};exports['addInteraction']=function(_0x67fe7,_0x3b3c13,_0x362ac2){return db['FaxInteraction']['find']({'where':{'id':_0x67fe7[_0xd045('0x5a')]['id']}})['then'](handleEntityNotFound(_0x3b3c13,null))[_0xd045('0x20')](function(_0x1170c4){if(_0x1170c4){return _0x1170c4[_0xd045('0x6f')](_0x67fe7['body'][_0xd045('0x6a')],_['omit'](_0x67fe7[_0xd045('0x63')],[_0xd045('0x6a'),'id'])||{});}})[_0xd045('0x20')](respondWithResult(_0x3b3c13,null))[_0xd045('0x2a')](handleError(_0x3b3c13,null));};exports[_0xd045('0x70')]=function(_0x37cfd1,_0x5cded6,_0x3c3c45){var _0x3463f7={'raw':![],'where':{}};var _0x24f26a={};var _0x1f5393={'count':0x0,'rows':[]};return db[_0xd045('0x40')]['findOne']({'where':{'id':_0x37cfd1[_0xd045('0x5a')]['id']}})[_0xd045('0x20')](handleEntityNotFound(_0x5cded6,null))[_0xd045('0x20')](function(_0x1f6722){if(_0x1f6722){_0x24f26a[_0xd045('0x44')]=_['keys'](db[_0xd045('0x71')][_0xd045('0x41')]);_0x24f26a[_0xd045('0x45')]=_[_0xd045('0x46')](_0x37cfd1['query']);_0x24f26a['filters']=_['intersection'](_0x24f26a[_0xd045('0x44')],_0x24f26a['query']);_0x3463f7[_0xd045('0x49')]=_['intersection'](_0x24f26a[_0xd045('0x44')],qs[_0xd045('0x4a')](_0x37cfd1['query']['fields']));_0x3463f7['attributes']=_0x3463f7['attributes']['length']?_0x3463f7[_0xd045('0x49')]:_0x24f26a[_0xd045('0x44')];if(!_0x37cfd1[_0xd045('0x45')][_0xd045('0x69')](_0xd045('0x4c'))){_0x3463f7[_0xd045('0x30')]=qs[_0xd045('0x30')](_0x37cfd1[_0xd045('0x45')][_0xd045('0x30')]);_0x3463f7['offset']=qs['offset'](_0x37cfd1[_0xd045('0x45')][_0xd045('0x2e')]);}_0x3463f7['order']=qs[_0xd045('0x4e')](_0x37cfd1[_0xd045('0x45')]['sort']);_0x3463f7[_0xd045('0x4f')]=qs['filters'](_[_0xd045('0x50')](_0x37cfd1[_0xd045('0x45')],_0x24f26a[_0xd045('0x47')]));_0x3463f7[_0xd045('0x4f')]['FaxAccountId']=_0x1f6722['id'];if(_0x37cfd1['query'][_0xd045('0x51')]){_0x3463f7[_0xd045('0x4f')]=_[_0xd045('0x53')](_0x3463f7[_0xd045('0x4f')],{'$or':_[_0xd045('0x3f')](_0x3463f7[_0xd045('0x49')],function(_0x453a0e){var _0x58bcab={};_0x58bcab[_0x453a0e]={'$like':'%'+_0x37cfd1[_0xd045('0x45')][_0xd045('0x51')]+'%'};return _0x58bcab;})});}_0x3463f7=_[_0xd045('0x53')]({},_0x3463f7,_0x37cfd1[_0xd045('0x54')]);return db[_0xd045('0x71')][_0xd045('0x31')]({'where':_0x3463f7[_0xd045('0x4f')]})[_0xd045('0x20')](function(_0x5418b6){_0x1f5393[_0xd045('0x31')]=_0x5418b6;if(_0x37cfd1['query']['includeAll']){_0x3463f7['include']=[{'model':db[_0xd045('0x72')],'as':_0xd045('0x73'),'required':![]},{'model':db[_0xd045('0x74')],'as':'Owner','attributes':[_0xd045('0x3b'),_0xd045('0x75'),'internal'],'required':![]},{'model':db['Tag'],'as':_0xd045('0x76'),'attributes':['id',_0xd045('0x3b'),_0xd045('0x77')],'where':_0x37cfd1['query']['tag']?{'id':_0x37cfd1[_0xd045('0x45')][_0xd045('0x78')]}:undefined,'required':_0x37cfd1[_0xd045('0x45')]['tag']?!![]:![]}];}return db['FaxInteraction'][_0xd045('0x57')](_0x3463f7);})[_0xd045('0x20')](function(_0x1a02a0){_0x1f5393[_0xd045('0x58')]=_0x1a02a0;return _0x1f5393;});}})['then'](respondWithFilteredResult(_0x5cded6,_0x3463f7))[_0xd045('0x2a')](handleError(_0x5cded6,null));};exports[_0xd045('0x79')]=function(_0x40a627,_0x2f27c1){var _0x28aaec=_0x40a627['params']['id'];var _0x8dee1f=_0x40a627[_0xd045('0x63')];var _0x3eafe4=0xc8;var _0x43e180=null;return db[_0xd045('0x7a')][_0xd045('0x7b')]({'isolationLevel':db[_0xd045('0x7a')]['Transaction'][_0xd045('0x7c')]['READ_COMMITTED']},function(_0x4324f0){return db[_0xd045('0x40')][_0xd045('0x67')]({'where':{'id':_0x28aaec},'transaction':_0x4324f0})[_0xd045('0x20')](function(_0x3d25ec){if(_0x3d25ec){return db[_0xd045('0x7d')][_0xd045('0x39')]({'where':{'FaxAccountId':_0x28aaec},'transaction':_0x4324f0})[_0xd045('0x20')](function(){var _0x3d68c0=_['map'](_0x8dee1f,function(_0x143b5c){_0x143b5c[_0xd045('0x66')]=_0x28aaec;return _0x143b5c;});return db['FaxApplication'][_0xd045('0x7e')](_0x3d68c0,{'transaction':_0x4324f0});});}else{_0x3eafe4=0x194;_0x43e180=[];}});})[_0xd045('0x20')](function(){if(_0x3eafe4!==0x194){return db[_0xd045('0x7d')][_0xd045('0x7f')]({'where':{'FaxAccountId':_0x28aaec},'order':_0xd045('0x80')})[_0xd045('0x20')](function(_0x52cde6){_0x43e180=_0x52cde6;});}})[_0xd045('0x2a')](function(_0x2ad29d){_0x3eafe4=0x1f4;logger[_0xd045('0x25')](_0x2ad29d[_0xd045('0x3a')]);if(_0x2ad29d[_0xd045('0x3b')]){delete _0x2ad29d[_0xd045('0x3b')];}_0x43e180=_0x2ad29d;})[_0xd045('0x81')](function(){if(_0x43e180===null){_0x2f27c1['sendStatus'](_0x3eafe4);}else{if(_0x3eafe4===0x1f4){_0x2f27c1[_0xd045('0x2c')](_0x3eafe4)[_0xd045('0x82')](_0x43e180);}else{_0x2f27c1['status'](_0x3eafe4)[_0xd045('0x83')](_0x43e180);}}});};exports['getApplications']=function(_0x183d79,_0x4edbf9,_0x176a49){var _0x17d55e={};var _0x334b2a={};var _0x363c53;var _0x517b4b;return db[_0xd045('0x40')]['findOne']({'where':{'id':_0x183d79[_0xd045('0x5a')]['id']}})['then'](handleEntityNotFound(_0x4edbf9,null))[_0xd045('0x20')](function(_0x12ce86){if(_0x12ce86){_0x363c53=_0x12ce86;_0x334b2a[_0xd045('0x44')]=_[_0xd045('0x46')](db[_0xd045('0x7d')][_0xd045('0x41')]);_0x334b2a[_0xd045('0x45')]=_[_0xd045('0x46')](_0x183d79[_0xd045('0x45')]);_0x334b2a[_0xd045('0x47')]=_[_0xd045('0x48')](_0x334b2a[_0xd045('0x44')],_0x334b2a[_0xd045('0x45')]);_0x17d55e['attributes']=_[_0xd045('0x48')](_0x334b2a[_0xd045('0x44')],qs['fields'](_0x183d79[_0xd045('0x45')]['fields']));_0x17d55e[_0xd045('0x49')]=_0x17d55e[_0xd045('0x49')][_0xd045('0x4b')]?_0x17d55e['attributes']:_0x334b2a[_0xd045('0x44')];_0x17d55e[_0xd045('0x4d')]=qs[_0xd045('0x4e')](_0x183d79[_0xd045('0x45')]['sort']);_0x17d55e['where']=qs[_0xd045('0x47')](_['pick'](_0x183d79[_0xd045('0x45')],_0x334b2a[_0xd045('0x47')]));if(_0x183d79['query'][_0xd045('0x51')]){_0x17d55e[_0xd045('0x4f')]=_[_0xd045('0x53')](_0x17d55e[_0xd045('0x4f')],{'$or':_[_0xd045('0x3f')](_0x17d55e[_0xd045('0x49')],function(_0x5d6cd3){var _0x1d52ac={};_0x1d52ac[_0x5d6cd3]={'$like':'%'+_0x183d79[_0xd045('0x45')][_0xd045('0x51')]+'%'};return _0x1d52ac;})});}_0x17d55e=_['merge']({},_0x17d55e,_0x183d79[_0xd045('0x54')]);return _0x363c53[_0xd045('0x84')](_0x17d55e);}})[_0xd045('0x20')](function(_0xfd5cf0){if(_0xfd5cf0){_0x517b4b=_0xfd5cf0[_0xd045('0x4b')];if(!_0x183d79[_0xd045('0x45')][_0xd045('0x69')](_0xd045('0x4c'))){_0x17d55e[_0xd045('0x30')]=qs[_0xd045('0x30')](_0x183d79[_0xd045('0x45')][_0xd045('0x30')]);_0x17d55e[_0xd045('0x2e')]=qs[_0xd045('0x2e')](_0x183d79['query']['offset']);}return _0x363c53[_0xd045('0x84')](_0x17d55e);}})['then'](function(_0x5a17f3){if(_0x5a17f3){return _0x5a17f3?{'count':_0x517b4b,'rows':_0x5a17f3}:null;}})[_0xd045('0x20')](respondWithResult(_0x4edbf9,null))[_0xd045('0x2a')](handleError(_0x4edbf9,null));};function Extension(_0x159274,_0x37298a,_0x518d8b,_0x353c27){this['context']=_0xd045('0x85');this[_0xd045('0x86')]=_0x159274[_0xd045('0x87')];this[_0xd045('0x88')]=_0x353c27;this[_0xd045('0x42')]=_0xd045('0x89');this[_0xd045('0x8a')]='Fax\x20Extension';this[_0xd045('0x66')]=_0x159274['id'];this[_0xd045('0x80')]=_0x37298a;this[_0xd045('0x8b')]=_0x518d8b;}function createExtensionsReciveFax(_0x1944b2){var _0x551c99=0x1;var _0x4fada0=[];_0x4fada0[_0xd045('0x8c')](new Extension(_0x1944b2,_0x551c99,'',_0xd045('0x8d')));_0x551c99+=0x1;_0x4fada0['push'](new Extension(_0x1944b2,_0x551c99,_0xd045('0x8e'),_0xd045('0x8f')));_0x551c99+=0x1;for(var _0x4e1cd7 in _0x1944b2){if(_0x1944b2[_0xd045('0x69')](_0x4e1cd7)&&(_0x4e1cd7===_0xd045('0x90')||_0x4e1cd7===_0xd045('0x87')||_0x4e1cd7===_0xd045('0x91')||_0x4e1cd7===_0xd045('0x92')||_0x4e1cd7==='headerinfo'||_0x4e1cd7===_0xd045('0x93')||_0x4e1cd7===_0xd045('0x94')||_0x4e1cd7===_0xd045('0x95')||_0x4e1cd7===_0xd045('0x96'))){_0x4fada0[_0xd045('0x8c')](new Extension(_0x1944b2,_0x551c99,_0xd045('0x97')+_0x4e1cd7+')='+_0x1944b2[_0x4e1cd7],_0xd045('0x8f')));_0x551c99+=0x1;}}_0x4fada0[_0xd045('0x8c')](new Extension(_0x1944b2,_0x551c99,'6','Wait'));_0x551c99+=0x1;_0x4fada0[_0xd045('0x8c')](new Extension(_0x1944b2,_0x551c99,_0xd045('0x98'),_0xd045('0x99')));_0x551c99=0x0;return _0x4fada0;}exports[_0xd045('0x9a')]=function(_0x420254,_0x35a89a,_0x44b3a5){var _0x50fccb;return db[_0xd045('0x7a')][_0xd045('0x7b')](function(_0x3e873c){return db[_0xd045('0x40')]['create'](_0x420254[_0xd045('0x63')],{'transaction':_0x3e873c})['then'](function(_0xd72b04){_0x50fccb=_0xd72b04[_0xd045('0x37')]({'plain':!![]});return db[_0xd045('0x9b')][_0xd045('0x7e')](createExtensionsReciveFax(_0x50fccb),{'transaction':_0x3e873c});});})[_0xd045('0x20')](function(){return _0x50fccb;})[_0xd045('0x20')](respondWithResult(_0x35a89a,null))[_0xd045('0x2a')](handleError(_0x35a89a,null));};exports[_0xd045('0x9c')]=function(_0xdd9bed,_0x5f502b,_0x5c7d96){var _0x1050ff;return db['sequelize'][_0xd045('0x7b')](function(_0x4007b7){return db[_0xd045('0x40')][_0xd045('0x62')](_0xdd9bed[_0xd045('0x63')],{'where':{'id':_0xdd9bed[_0xd045('0x63')]['id']},'transaction':_0x4007b7})[_0xd045('0x20')](function(_0x4297eb){return db[_0xd045('0x9b')]['destroy']({'where':{'FaxAccountId':_0xdd9bed[_0xd045('0x63')]['id']},'transaction':_0x4007b7})[_0xd045('0x20')](function(_0x54f397){return db[_0xd045('0x9b')]['bulkCreate'](createExtensionsReciveFax(_['omit'](_0xdd9bed[_0xd045('0x63')],['tech',_0xd045('0x43'),_0xd045('0x9d'),'updatedAt','TrunkId',_0xd045('0x9e')])),{'transaction':_0x4007b7});});});})[_0xd045('0x20')](function(){return db[_0xd045('0x40')][_0xd045('0x9f')](_0xdd9bed[_0xd045('0x63')]['id']);})[_0xd045('0x20')](respondWithResult(_0x5f502b,null))[_0xd045('0x2a')](handleError(_0x5f502b,null));};exports[_0xd045('0xa0')]=function(_0x5af4be,_0x4b167a,_0x3e68fa){var _0x39a60f={'raw':!![],'where':{}};var _0x85c8f5={};var _0x41aec2={'count':0x0,'rows':[]};return db[_0xd045('0x40')][_0xd045('0x67')]({'where':{'id':_0x5af4be[_0xd045('0x5a')]['id']}})[_0xd045('0x20')](handleEntityNotFound(_0x4b167a,null))[_0xd045('0x20')](function(_0x1c6f86){if(_0x1c6f86){_0x85c8f5[_0xd045('0x44')]=_[_0xd045('0x46')](db['FaxMessage'][_0xd045('0x41')]);_0x85c8f5[_0xd045('0x45')]=_[_0xd045('0x46')](_0x5af4be[_0xd045('0x45')]);_0x85c8f5[_0xd045('0x47')]=_[_0xd045('0x48')](_0x85c8f5[_0xd045('0x44')],_0x85c8f5[_0xd045('0x45')]);_0x39a60f['attributes']=_[_0xd045('0x48')](_0x85c8f5['model'],qs[_0xd045('0x4a')](_0x5af4be[_0xd045('0x45')][_0xd045('0x4a')]));_0x39a60f[_0xd045('0x49')]=_0x39a60f[_0xd045('0x49')]['length']?_0x39a60f['attributes']:_0x85c8f5[_0xd045('0x44')];if(!_0x5af4be['query'][_0xd045('0x69')](_0xd045('0x4c'))){_0x39a60f[_0xd045('0x30')]=qs['limit'](_0x5af4be['query']['limit']);_0x39a60f[_0xd045('0x2e')]=qs[_0xd045('0x2e')](_0x5af4be[_0xd045('0x45')][_0xd045('0x2e')]);}_0x39a60f[_0xd045('0x4d')]=qs[_0xd045('0x4e')](_0x5af4be[_0xd045('0x45')]['sort']);_0x39a60f[_0xd045('0x4f')]=qs[_0xd045('0x47')](_[_0xd045('0x50')](_0x5af4be['query'],_0x85c8f5[_0xd045('0x47')]));_0x39a60f['where'][_0xd045('0x66')]=_0x1c6f86['id'];if(_0x5af4be[_0xd045('0x45')]['filter']){_0x39a60f[_0xd045('0x4f')]=_[_0xd045('0x53')](_0x39a60f[_0xd045('0x4f')],{'$or':_[_0xd045('0x3f')](_0x39a60f[_0xd045('0x49')],function(_0x1fdc21){var _0x2df736={};_0x2df736[_0x1fdc21]={'$like':'%'+_0x5af4be[_0xd045('0x45')][_0xd045('0x51')]+'%'};return _0x2df736;})});}if(_0x5af4be[_0xd045('0x45')][_0xd045('0xa1')]){var _0x5454d5=_0x5af4be['query']['$gte']['split'](',');var _0x2bb81d={};_0x2bb81d[_0x5454d5[0x0]]={'$gte':moment(_0x5454d5[0x1])[_0xd045('0xa2')](_0xd045('0xa3'))};_0x39a60f[_0xd045('0x4f')]=_[_0xd045('0x53')](_0x39a60f[_0xd045('0x4f')],_0x2bb81d);}_0x39a60f=_[_0xd045('0x53')]({},_0x39a60f,_0x5af4be[_0xd045('0x54')]);return db['FaxMessage'][_0xd045('0x31')]({'where':_0x39a60f[_0xd045('0x4f')]})[_0xd045('0x20')](function(_0x2402f7){_0x41aec2['count']=_0x2402f7;if(_0x5af4be[_0xd045('0x45')][_0xd045('0x55')]){_0x39a60f[_0xd045('0x56')]=[{'all':!![]}];}return db[_0xd045('0xa4')][_0xd045('0x57')](_0x39a60f);})['then'](function(_0x276290){_0x41aec2['rows']=_0x276290;return _0x41aec2;});}})[_0xd045('0x20')](respondWithFilteredResult(_0x4b167a,_0x39a60f))[_0xd045('0x2a')](handleError(_0x4b167a,null));};exports['send']=function(_0x4435a4,_0xa3c0b,_0x393f21){var _0x5a4147,_0x147dea={},_0x2ff54c;if(_0x4435a4[_0xd045('0x63')]['to']){_0x2ff54c=_0x4435a4[_0xd045('0x63')]['to'][0x0];}return db[_0xd045('0x40')]['find']({'where':{'id':_0x4435a4['params']['id']},'include':[{'model':db['CmList'],'as':_0xd045('0xa5'),'include':[{'model':db[_0xd045('0x72')],'as':_0xd045('0xa6'),'where':{'fax':_0x2ff54c},'limit':0x1,'order':[['updatedAt','DESC']]}]}]})['then'](handleEntityNotFound(_0xa3c0b,null))[_0xd045('0x20')](function(_0x3a2828){_0x5a4147=_0x3a2828;if(_0x4435a4[_0xd045('0x63')][_0xd045('0xa7')]&&_0x4435a4[_0xd045('0x63')][_0xd045('0xa7')][_0xd045('0x4b')]){for(var _0x2483e7=0x0;_0x2483e7<_0x4435a4[_0xd045('0x63')][_0xd045('0xa7')][_0xd045('0x4b')];_0x2483e7+=0x1){_0x4435a4['body'][_0xd045('0xa7')][_0x2483e7]={'filename':_0x4435a4[_0xd045('0x63')]['attachments'][_0x2483e7][_0xd045('0x3b')],'id':_0x4435a4['body'][_0xd045('0xa7')][_0x2483e7]['id'],'path':path['join'](config[_0xd045('0xa8')],_0xd045('0xa9'),_0x4435a4['body'][_0xd045('0xa7')][_0x2483e7][_0xd045('0xaa')])};}}return respondWithRpcPromise('CheckAfterSend',_0xd045('0xab'),{'FaxAccountId':_[_0xd045('0xac')](_0x4435a4[_0xd045('0x5a')]['id'])?undefined:_0x4435a4[_0xd045('0x5a')]['id'],'path':_['isNil'](_0x4435a4[_0xd045('0x63')]['attachments'][0x0][_0xd045('0xad')])?undefined:_0x4435a4[_0xd045('0x63')][_0xd045('0xa7')][0x0]['path'],'fax':_['isNil'](_0x4435a4['body']['to'][0x0])?undefined:_0x4435a4[_0xd045('0x63')]['to'][0x0]},client9002);})['then'](function(){if(_0x5a4147){if(_[_0xd045('0xac')](_0x4435a4['body'][_0xd045('0xae')])){_0x4435a4[_0xd045('0x63')]['from']=util['format'](_0xd045('0xaf'),_0x5a4147['name'],_0x5a4147[_0xd045('0xb0')]);}if(_0x5a4147['List']){if(_0x5a4147['List'][_0xd045('0xa6')][_0xd045('0x4b')]){return _0x5a4147[_0xd045('0xa5')][_0xd045('0xa6')][0x0];}else{return db[_0xd045('0x72')]['create'](_[_0xd045('0x18')](_0x4435a4[_0xd045('0x63')],{'firstName':_0x4435a4[_0xd045('0x63')]['to'][0x0],'phone':_0x4435a4[_0xd045('0x63')]['to'][0x0],'fax':_0x4435a4[_0xd045('0x63')]['to'][0x0],'ListId':_0x5a4147[_0xd045('0x9e')]}));}}else{throw new Error(_0xd045('0xb1'));}}else{throw new Error('Send\x20Fax\x20failed');}})['then'](function(_0x32d66e){if(_0x32d66e){return db[_0xd045('0x71')][_0xd045('0x64')]({'where':{'ContactId':_0x32d66e['id'],'closed':![],'FaxAccountId':_0x5a4147['id']}})['then'](function(_0x351931){if(_0x351931){return[_0x351931,![]];}return db[_0xd045('0x71')]['create']({'UserId':_0x4435a4[_0xd045('0x5e')]['id'],'ContactId':_0x32d66e['id'],'FaxAccountId':_0x5a4147['id'],'fax':_0x4435a4[_0xd045('0x63')]['to'][0x0],'firstMsgDirection':_0xd045('0xb2'),'Messages':[_[_0xd045('0x53')](_0x4435a4[_0xd045('0x63')],{'read':![],'body':_0x4435a4['body'][_0xd045('0xa7')][0x0]['filename'],'FaxAccountId':_0x5a4147['id'],'UserId':_0x4435a4[_0xd045('0x5e')]['id'],'ContactId':_0x32d66e['id'],'AttachmentId':_0x4435a4[_0xd045('0x63')]['attachments'][0x0]['id']})]},{'include':[{'model':db[_0xd045('0xa4')],'as':_0xd045('0xb3')}]})['then'](function(_0x3156b7){return[_0x3156b7,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})['spread'](function(_0x21f6e1,_0x48b47b){if(_0x48b47b){return _0x21f6e1;}return db[_0xd045('0xa4')][_0xd045('0x5b')]({'direction':_0xd045('0xb2'),'read':![],'body':_0x4435a4['body'][_0xd045('0xa7')][0x0][_0xd045('0xb4')],'FaxAccountId':_0x5a4147['id'],'FaxInteractionId':_0x21f6e1['id'],'UserId':_0x4435a4[_0xd045('0x5e')]['id'],'ContactId':_0x21f6e1[_0xd045('0xb5')],'AttachmentId':_0x4435a4['body'][_0xd045('0xa7')][0x0]['id']})[_0xd045('0x20')](function(_0x25cbaf){_0x21f6e1[_0xd045('0xb6')][_0xd045('0xb3')]=[];_0x21f6e1[_0xd045('0xb6')][_0xd045('0xb3')][_0xd045('0x8c')](_0x25cbaf[_0xd045('0xb6')]);return _0x21f6e1;});})[_0xd045('0x20')](function(_0x20105b){respondWithRpcPromise(_0xd045('0xb7'),_0xd045('0xb7'),{'FaxAccountId':_[_0xd045('0xac')](_0x4435a4[_0xd045('0x5a')]['id'])?undefined:_0x4435a4['params']['id'],'path':_[_0xd045('0xac')](_0x4435a4['body'][_0xd045('0xa7')][0x0]['path'])?undefined:_0x4435a4[_0xd045('0x63')]['attachments'][0x0][_0xd045('0xad')],'fax':_[_0xd045('0xac')](_0x4435a4['body']['to'][0x0])?undefined:_0x4435a4[_0xd045('0x63')]['to'][0x0],'AttachmentId':_0x4435a4['body'][_0xd045('0xa7')][0x0]['id']},client9002)[_0xd045('0x20')](function(_0x30491b){logger[_0xd045('0x21')]('SendFaxRpc,\x20%s',_0x30491b);})[_0xd045('0x2a')](function(_0x33014a){logger['info'](_0xd045('0xb8'),_0x33014a);});return _0x20105b;})[_0xd045('0x20')](respondWithResult(_0xa3c0b,null))[_0xd045('0x2a')](handleError(_0xa3c0b,null));};exports[_0xd045('0xb9')]=function(_0x4c658a,_0xc2e19a,_0x24fc70){return db['FaxAccount']['find']({'where':{'id':_0x4c658a[_0xd045('0x5a')]['id']}})[_0xd045('0x20')](handleEntityNotFound(_0xc2e19a,null))[_0xd045('0x20')](function(_0x278f0d){if(_0x278f0d){return _0x278f0d[_0xd045('0xb9')](_0x4c658a[_0xd045('0x63')][_0xd045('0x6a')],_[_0xd045('0xba')](_0x4c658a[_0xd045('0x63')],[_0xd045('0x6a'),'id'])||{})[_0xd045('0xbb')](function(_0x3c0ba3){for(var _0x2913bc=0x0;_0x2913bc<_0x4c658a['body'][_0xd045('0x6a')][_0xd045('0x4b')];_0x2913bc+=0x1){socket['emit'](_0xd045('0xbc'),{'UserId':Number(_0x4c658a[_0xd045('0x63')][_0xd045('0x6a')][_0x2913bc]),'FaxAccountId':Number(_0x4c658a[_0xd045('0x5a')]['id'])});}return _0x3c0ba3;});}})[_0xd045('0x20')](respondWithResult(_0xc2e19a,null))[_0xd045('0x2a')](handleError(_0xc2e19a,null));};exports['removeAgents']=function(_0x3e0f09,_0x134d45,_0x575524){return db[_0xd045('0x40')]['find']({'where':{'id':_0x3e0f09[_0xd045('0x5a')]['id']}})['then'](handleEntityNotFound(_0x134d45,null))[_0xd045('0x20')](function(_0xbe60c1){if(_0xbe60c1){return _0xbe60c1[_0xd045('0xbd')](_0x3e0f09[_0xd045('0x45')][_0xd045('0x6a')])[_0xd045('0x20')](function(){if(_[_0xd045('0xbe')](_0x3e0f09[_0xd045('0x45')]['ids'])){for(var _0x52ad90=0x0;_0x52ad90<_0x3e0f09[_0xd045('0x45')][_0xd045('0x6a')][_0xd045('0x4b')];_0x52ad90+=0x1){socket[_0xd045('0xbf')](_0xd045('0xc0'),{'UserId':Number(_0x3e0f09[_0xd045('0x45')]['ids'][_0x52ad90]),'FaxAccountId':Number(_0x3e0f09[_0xd045('0x5a')]['id'])});}}else{socket[_0xd045('0xbf')](_0xd045('0xc0'),{'UserId':Number(_0x3e0f09[_0xd045('0x45')][_0xd045('0x6a')]),'FaxAccountId':Number(_0x3e0f09['params']['id'])});}});}})['then'](respondWithStatusCode(_0x134d45,null))[_0xd045('0x2a')](handleError(_0x134d45,null));};exports[_0xd045('0xc1')]=function(_0x13a4f4,_0x182b0d,_0x84101b){var _0x335324={};var _0x564559={};var _0x1f6974;var _0x3e9916;return db[_0xd045('0x40')][_0xd045('0x67')]({'where':{'id':_0x13a4f4[_0xd045('0x5a')]['id']}})[_0xd045('0x20')](handleEntityNotFound(_0x182b0d,null))['then'](function(_0x239d43){if(_0x239d43){_0x1f6974=_0x239d43;_0x564559[_0xd045('0x44')]=_[_0xd045('0x46')](db[_0xd045('0x74')][_0xd045('0x41')]);_0x564559['query']=_[_0xd045('0x46')](_0x13a4f4[_0xd045('0x45')]);_0x564559[_0xd045('0x47')]=_['intersection'](_0x564559[_0xd045('0x44')],_0x564559[_0xd045('0x45')]);_0x335324['attributes']=_[_0xd045('0x48')](_0x564559[_0xd045('0x44')],qs[_0xd045('0x4a')](_0x13a4f4[_0xd045('0x45')][_0xd045('0x4a')]));_0x335324[_0xd045('0x49')]=_0x335324[_0xd045('0x49')]['length']?_0x335324[_0xd045('0x49')]:_0x564559[_0xd045('0x44')];_0x335324[_0xd045('0x4d')]=qs[_0xd045('0x4e')](_0x13a4f4['query'][_0xd045('0x4e')]);_0x335324[_0xd045('0x4f')]=qs[_0xd045('0x47')](_['pick'](_0x13a4f4[_0xd045('0x45')],_0x564559[_0xd045('0x47')]));if(_0x13a4f4[_0xd045('0x45')][_0xd045('0x51')]){_0x335324[_0xd045('0x4f')]=_[_0xd045('0x53')](_0x335324[_0xd045('0x4f')],{'$or':_[_0xd045('0x3f')](_0x335324[_0xd045('0x49')],function(_0x1e8bed){var _0x46641f={};_0x46641f[_0x1e8bed]={'$like':'%'+_0x13a4f4[_0xd045('0x45')][_0xd045('0x51')]+'%'};return _0x46641f;})});}_0x335324=_[_0xd045('0x53')]({},_0x335324,_0x13a4f4['options']);return _0x1f6974['getAgents'](_0x335324);}})['then'](function(_0x8b70df){if(_0x8b70df){_0x3e9916=_0x8b70df[_0xd045('0x4b')];if(!_0x13a4f4[_0xd045('0x45')]['hasOwnProperty'](_0xd045('0x4c'))){_0x335324['limit']=qs[_0xd045('0x30')](_0x13a4f4[_0xd045('0x45')][_0xd045('0x30')]);_0x335324[_0xd045('0x2e')]=qs[_0xd045('0x2e')](_0x13a4f4[_0xd045('0x45')][_0xd045('0x2e')]);}return _0x1f6974[_0xd045('0xc1')](_0x335324);}})['then'](function(_0x43f3c5){if(_0x43f3c5){return _0x43f3c5?{'count':_0x3e9916,'rows':_0x43f3c5}:null;}})[_0xd045('0x20')](respondWithResult(_0x182b0d,null))[_0xd045('0x2a')](handleError(_0x182b0d,null));};
\ No newline at end of file
index 81bcaa6..41d0021 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd30a=['update','remove','emit','hook','exports','events','FaxAccount','setMaxListeners'];(function(_0x496884,_0x789a7b){var _0x43f938=function(_0xa006c1){while(--_0xa006c1){_0x496884['push'](_0x496884['shift']());}};_0x43f938(++_0x789a7b);}(_0xd30a,0x19d));var _0xad30=function(_0x3ff085,_0x27c92e){_0x3ff085=_0x3ff085-0x0;var _0x2b68c3=_0xd30a[_0x3ff085];return _0x2b68c3;};'use strict';var EventEmitter=require(_0xad30('0x0'));var FaxAccount=require('../../mysqldb')['db'][_0xad30('0x1')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0xad30('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xad30('0x3'),'afterDestroy':_0xad30('0x4')};function emitEvent(_0xd50b07){return function(_0x2d33da,_0x21c67b,_0x1cd806){FaxAccountEvents[_0xad30('0x5')](_0xd50b07+':'+_0x2d33da['id'],_0x2d33da);FaxAccountEvents[_0xad30('0x5')](_0xd50b07,_0x2d33da);_0x1cd806(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxAccount[_0xad30('0x6')](e,emitEvent(event));}}module[_0xad30('0x7')]=FaxAccountEvents;
\ No newline at end of file
+var _0xb253=['remove','emit','hasOwnProperty','hook','exports','../../mysqldb','FaxAccount','setMaxListeners','update'];(function(_0xc5dee2,_0x254eab){var _0xd10d9c=function(_0x119b6a){while(--_0x119b6a){_0xc5dee2['push'](_0xc5dee2['shift']());}};_0xd10d9c(++_0x254eab);}(_0xb253,0x95));var _0x3b25=function(_0x4c65fd,_0x2ba5cc){_0x4c65fd=_0x4c65fd-0x0;var _0x315e4b=_0xb253[_0x4c65fd];return _0x315e4b;};'use strict';var EventEmitter=require('events');var FaxAccount=require(_0x3b25('0x0'))['db'][_0x3b25('0x1')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0x3b25('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x3b25('0x3'),'afterDestroy':_0x3b25('0x4')};function emitEvent(_0x2e2e74){return function(_0x56d01f,_0x309a91,_0x31ae48){FaxAccountEvents[_0x3b25('0x5')](_0x2e2e74+':'+_0x56d01f['id'],_0x56d01f);FaxAccountEvents[_0x3b25('0x5')](_0x2e2e74,_0x56d01f);_0x31ae48(null);};}for(var e in events){if(events[_0x3b25('0x6')](e)){var event=events[e];FaxAccount[_0x3b25('0x7')](e,emitEvent(event));}}module[_0x3b25('0x8')]=FaxAccountEvents;
\ No newline at end of file
index ac7bafe..b35b2a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xccf3=['path','rimraf','../../config/environment','./faxAccount.attributes','exports','FaxAccount','fax_accounts','lodash','util','../../config/logger','api','bluebird','request-promise'];(function(_0x5447fd,_0x52a6b5){var _0x15b28a=function(_0x370d4f){while(--_0x370d4f){_0x5447fd['push'](_0x5447fd['shift']());}};_0x15b28a(++_0x52a6b5);}(_0xccf3,0x14c));var _0x3ccf=function(_0x2a8db9,_0x1b536a){_0x2a8db9=_0x2a8db9-0x0;var _0x9e09b3=_0xccf3[_0x2a8db9];return _0x9e09b3;};'use strict';var _=require(_0x3ccf('0x0'));var util=require(_0x3ccf('0x1'));var logger=require(_0x3ccf('0x2'))(_0x3ccf('0x3'));var moment=require('moment');var BPromise=require(_0x3ccf('0x4'));var rp=require(_0x3ccf('0x5'));var fs=require('fs');var path=require(_0x3ccf('0x6'));var rimraf=require(_0x3ccf('0x7'));var config=require(_0x3ccf('0x8'));var attributes=require(_0x3ccf('0x9'));module[_0x3ccf('0xa')]=function(_0x192177,_0x2afa96){return _0x192177['define'](_0x3ccf('0xb'),attributes,{'tableName':_0x3ccf('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x56a9=['moment','bluebird','request-promise','rimraf','../../config/environment','./faxAccount.attributes','exports','define','FaxAccount','../../config/logger','api'];(function(_0x1da1e4,_0x18ace2){var _0x4cc8ad=function(_0x188f73){while(--_0x188f73){_0x1da1e4['push'](_0x1da1e4['shift']());}};_0x4cc8ad(++_0x18ace2);}(_0x56a9,0x1c1));var _0x956a=function(_0x5f42f1,_0x956be5){_0x5f42f1=_0x5f42f1-0x0;var _0x5534ee=_0x56a9[_0x5f42f1];return _0x5534ee;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x956a('0x0'))(_0x956a('0x1'));var moment=require(_0x956a('0x2'));var BPromise=require(_0x956a('0x3'));var rp=require(_0x956a('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x956a('0x5'));var config=require(_0x956a('0x6'));var attributes=require(_0x956a('0x7'));module[_0x956a('0x8')]=function(_0x5e3bda,_0x56a0de){return _0x5e3bda[_0x956a('0x9')](_0x956a('0xa'),attributes,{'tableName':'fax_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 501e497..bb1063d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0be2=['asc','Applications','account','Contacts','length','from','ListId','contact','FaxInteraction','create','spread','autoclose','unmanaged','*,*,*,*','created','interaction','ContactId','UserId','find','name','agent','waitForTheAssignedAgent','Start','startRouting','moment','bluebird','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./faxAccount.socket','register','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetFaxAccount','FaxAccount','findAll','options','raw','where','attributes','limit','include','map','model','debug','NotifyFaxAccount','body','fax','describe','Sequelize','ValidationError','no\x20available\x20attributes','keys','createdAt','difference','updatedAt','CompanyId','isNil','from\x20is\x20mandatory','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','List','CmContact','DESC','FaxApplication','get','applications','orderBy','priority'];(function(_0x5c4ed3,_0x59eeb7){var _0x4182aa=function(_0x67d750){while(--_0x67d750){_0x5c4ed3['push'](_0x5c4ed3['shift']());}};_0x4182aa(++_0x59eeb7);}(_0x0be2,0x16c));var _0x20be=function(_0x2ff739,_0x1c8e0f){_0x2ff739=_0x2ff739-0x0;var _0x12dc13=_0x0be2[_0x2ff739];return _0x12dc13;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x20be('0x0'));var BPromise=require(_0x20be('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x20be('0x2'));var logger=require('../../config/logger')(_0x20be('0x3'));var config=require(_0x20be('0x4'));var jayson=require(_0x20be('0x5'));var client=jayson[_0x20be('0x6')][_0x20be('0x7')]({'port':0x232c});config[_0x20be('0x8')]=_[_0x20be('0x9')](config[_0x20be('0x8')],{'host':_0x20be('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x20be('0x8')]));require(_0x20be('0xb'))[_0x20be('0xc')](socket);function respondWithRpcPromise(_0x192b67,_0x18b012,_0x326056){return new BPromise(function(_0x496cbf,_0x1d1157){return client['request'](_0x192b67,_0x326056)[_0x20be('0xd')](function(_0x5895d5){logger[_0x20be('0xe')](_0x20be('0xf'),_0x18b012,'request\x20sent');logger['debug']('FaxAccount,\x20%s,\x20%s,\x20%s',_0x18b012,_0x20be('0x10'),JSON[_0x20be('0x11')](_0x5895d5));if(_0x5895d5[_0x20be('0x12')]){if(_0x5895d5[_0x20be('0x12')][_0x20be('0x13')]===0x1f4){logger[_0x20be('0x12')](_0x20be('0xf'),_0x18b012,_0x5895d5[_0x20be('0x12')][_0x20be('0x14')]);return _0x1d1157(_0x5895d5[_0x20be('0x12')][_0x20be('0x14')]);}logger[_0x20be('0x12')](_0x20be('0xf'),_0x18b012,_0x5895d5[_0x20be('0x12')][_0x20be('0x14')]);return _0x496cbf(_0x5895d5[_0x20be('0x12')][_0x20be('0x14')]);}else{logger[_0x20be('0xe')](_0x20be('0xf'),_0x18b012,_0x20be('0x10'));_0x496cbf(_0x5895d5[_0x20be('0x15')][_0x20be('0x14')]);}})[_0x20be('0x16')](function(_0x41e9fd){logger[_0x20be('0x12')](_0x20be('0xf'),_0x18b012,_0x41e9fd);_0x1d1157(_0x41e9fd);});});}exports[_0x20be('0x17')]=function(_0xaa85ba){var _0x5b99ba=this;return new Promise(function(_0x18f666,_0x5b5e80){return db[_0x20be('0x18')][_0x20be('0x19')]({'raw':_0xaa85ba[_0x20be('0x1a')]?_0xaa85ba['options'][_0x20be('0x1b')]===undefined?!![]:![]:!![],'where':_0xaa85ba[_0x20be('0x1a')]?_0xaa85ba['options'][_0x20be('0x1c')]||null:null,'attributes':_0xaa85ba['options']?_0xaa85ba['options'][_0x20be('0x1d')]||null:null,'limit':_0xaa85ba[_0x20be('0x1a')]?_0xaa85ba[_0x20be('0x1a')][_0x20be('0x1e')]||null:null,'include':_0xaa85ba[_0x20be('0x1a')]?_0xaa85ba[_0x20be('0x1a')][_0x20be('0x1f')]?_[_0x20be('0x20')](_0xaa85ba[_0x20be('0x1a')][_0x20be('0x1f')],function(_0x124869){return{'model':db[_0x124869[_0x20be('0x21')]],'as':_0x124869['as'],'attributes':_0x124869['attributes'],'include':_0x124869['include']?_[_0x20be('0x20')](_0x124869['include'],function(_0x13cab8){return{'model':db[_0x13cab8['model']],'as':_0x13cab8['as'],'attributes':_0x13cab8[_0x20be('0x1d')],'include':_0x13cab8[_0x20be('0x1f')]?_[_0x20be('0x20')](_0x13cab8[_0x20be('0x1f')],function(_0x163046){return{'model':db[_0x163046[_0x20be('0x21')]],'as':_0x163046['as'],'attributes':_0x163046['attributes']};}):[]};}):[]};}):[]:[]})[_0x20be('0xd')](function(_0x432400){logger[_0x20be('0xe')](_0x20be('0x17'),_0xaa85ba);logger[_0x20be('0x22')](_0x20be('0x17'),_0xaa85ba,JSON[_0x20be('0x11')](_0x432400));_0x18f666(_0x432400);})[_0x20be('0x16')](function(_0x331b4a){logger[_0x20be('0x12')](_0x20be('0x17'),_0x331b4a[_0x20be('0x14')],_0xaa85ba);_0x5b5e80(_0x5b99ba[_0x20be('0x12')](0x1f4,_0x331b4a[_0x20be('0x14')]));});});};exports[_0x20be('0x23')]=function(_0x3e5bab,_0x4a36d9,_0x3a35f9){var _0x42a032=this;return new Promise(function(_0x5f41e9,_0x43e920){var _0x573c10={'body':_0x3e5bab[_0x20be('0x24')],'channel':_0x20be('0x25')};var _0x3109e2=[];var _0x52d1f8=[];var _0x27963b={};return db['CmContact'][_0x20be('0x26')]()['then'](function(_0x296d04){if(!_0x296d04){throw new db[(_0x20be('0x27'))][(_0x20be('0x28'))](_0x20be('0x29'));}_0x3109e2=_['difference'](_[_0x20be('0x2a')](_0x296d04),[_0x20be('0x2b'),'updatedAt']);_0x52d1f8=_[_0x20be('0x2c')](_[_0x20be('0x2a')](_0x296d04),[_0x20be('0x2b'),_0x20be('0x2d'),_0x20be('0x2e'),'ListId']);if(_0x3e5bab[_0x20be('0x24')]['id']){delete _0x3e5bab[_0x20be('0x24')]['id'];}if(_[_0x20be('0x2f')](_0x3e5bab[_0x20be('0x24')]['from'])){throw new db[(_0x20be('0x27'))][(_0x20be('0x28'))](_0x20be('0x30'));}if(_[_0x20be('0x2f')](_0x3e5bab[_0x20be('0x24')][_0x20be('0x24')])||_0x3e5bab['body'][_0x20be('0x24')]===''){throw new db[(_0x20be('0x27'))][(_0x20be('0x28'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x20be('0x2f')](_0x3e5bab[_0x20be('0x24')]['mapKey'])){throw new db[(_0x20be('0x27'))][(_0x20be('0x28'))](_0x20be('0x31')+_0x52d1f8);}if(!_[_0x20be('0x32')](_0x52d1f8,_0x3e5bab[_0x20be('0x24')][_0x20be('0x33')])){throw new db['Sequelize'][(_0x20be('0x28'))](_0x20be('0x34')+_0x52d1f8);}_0x27963b[_0x3e5bab[_0x20be('0x24')][_0x20be('0x33')]]=_0x3e5bab[_0x20be('0x24')]['from'];})['then'](function(){return db['FaxAccount']['find']({'where':{'id':_0x3e5bab['account']['id']},'include':[{'model':db['CmList'],'as':_0x20be('0x35'),'include':[{'model':db[_0x20be('0x36')],'as':'Contacts','where':_0x27963b,'limit':0x1,'order':[[_0x20be('0x2d'),_0x20be('0x37')]]}]},{'model':db[_0x20be('0x38')],'as':'Applications'}]});})[_0x20be('0xd')](function(_0x161e26){if(_0x161e26&&_0x161e26[_0x20be('0x35')]){var _0x2259df=_0x161e26[_0x20be('0x39')]({'plain':!![]});_0x573c10['account']=_0x2259df;_0x573c10[_0x20be('0x3a')]=_0x2259df['Applications'];_0x573c10['list']=_0x2259df[_0x20be('0x35')];_0x573c10[_0x20be('0x3a')]=_[_0x20be('0x3b')](_0x573c10[_0x20be('0x3a')],[_0x20be('0x3c')],[_0x20be('0x3d')]);if(_0x573c10['account'][_0x20be('0x3e')]){delete _0x573c10['account']['Applications'];}if(_0x573c10[_0x20be('0x3f')][_0x20be('0x35')]&&_0x573c10[_0x20be('0x3f')]['List'][_0x20be('0x40')][_0x20be('0x41')]){return _0x573c10[_0x20be('0x3f')][_0x20be('0x35')]['Contacts'][0x0];}var _0x5ce79f=_[_0x20be('0x9')](_0x3e5bab['body'],{'firstName':_0x3e5bab[_0x20be('0x24')][_0x20be('0x42')],'ListId':_0x2259df[_0x20be('0x43')]});_0x5ce79f[_0x3e5bab[_0x20be('0x24')][_0x20be('0x33')]]=_0x3e5bab[_0x20be('0x24')]['from'];return db[_0x20be('0x36')]['create'](_0x5ce79f,{'fields':_0x3109e2,'raw':!![]});}})[_0x20be('0xd')](function(_0x2192c5){_0x573c10[_0x20be('0x44')]=_0x2192c5;if(_0x2192c5){var _0x3d1c92={'ContactId':_0x2192c5['id'],'FaxAccountId':_0x3e5bab['account']['id'],'fax':_0x2192c5['fax']};return db[_0x20be('0x45')]['find']({'where':{'ContactId':_0x2192c5['id'],'closed':![],'FaxAccountId':_0x3e5bab[_0x20be('0x3f')]['id']}})[_0x20be('0xd')](function(_0x4d4a26){if(_0x4d4a26){return[_0x4d4a26,![]];}return db[_0x20be('0x45')][_0x20be('0x46')](_0x3d1c92)[_0x20be('0xd')](function(_0x5f58d9){return[_0x5f58d9,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0x20be('0x47')](function(_0x32fe6a,_0x43b1b8){var _0x39c3ec=_0x32fe6a[_0x20be('0x39')]({'plain':!![]});if(_0x43b1b8){if(_0x573c10[_0x20be('0x3f')][_0x20be('0x48')]){_0x573c10[_0x20be('0x3a')]['push']({'id':0x0,'priority':_0x573c10[_0x20be('0x3a')][_0x20be('0x41')]+0x1,'app':'close','appdata':_0x20be('0x49'),'interval':_0x20be('0x4a')});}_0x39c3ec[_0x20be('0x4b')]=!![];}else{_0x39c3ec[_0x20be('0x4b')]=![];}_0x573c10[_0x20be('0x4c')]=_0x39c3ec;return db['FaxMessage']['create']({'body':_0x3e5bab[_0x20be('0x24')]['body'],'FaxAccountId':_0x3e5bab[_0x20be('0x3f')]['id'],'FaxInteractionId':_0x32fe6a['id'],'direction':'in','ContactId':_0x32fe6a[_0x20be('0x4d')],'AttachmentId':_0x3e5bab[_0x20be('0x24')]['AttachmentId']});})[_0x20be('0xd')](function(_0x3d36ed){_0x573c10[_0x20be('0x14')]=_0x3d36ed;if(_0x573c10[_0x20be('0x4c')][_0x20be('0x4e')]){return db['User'][_0x20be('0x4f')]({'attributes':['id',_0x20be('0x50')],'where':{'id':_0x573c10['interaction'][_0x20be('0x4e')]}})[_0x20be('0xd')](function(_0x43a074){if(_0x43a074){_0x573c10['applications']['unshift']({'id':0x0,'priority':0x0,'app':_0x20be('0x51'),'appdata':_0x43a074['name']+','+(_0x573c10['account'][_0x20be('0x52')]||0xa),'interval':_0x20be('0x4a')});}return respondWithRpcPromise('Start','startRouting',_0x573c10);});}return respondWithRpcPromise(_0x20be('0x53'),_0x20be('0x54'),_0x573c10);})[_0x20be('0xd')](function(_0x2d3da5){_0x5f41e9(_0x2d3da5);})[_0x20be('0x16')](function(_0x3a88f6){_0x43e920(_0x42a032[_0x20be('0x12')](0x1f4,_0x3a88f6['message']));});});};
\ No newline at end of file
+var _0x60d5=['unmanaged','*,*,*,*','created','interaction','ContactId','UserId','find','name','unshift','waitForTheAssignedAgent','Start','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','defaults','redis','localhost','./faxAccount.socket','info','FaxAccount,\x20%s,\x20%s','FaxAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','catch','GetFaxAccount','FaxAccount','findAll','options','raw','where','attributes','limit','include','map','model','then','debug','stringify','NotifyFaxAccount','body','fax','describe','Sequelize','ValidationError','createdAt','updatedAt','keys','CompanyId','ListId','isNil','from','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','account','CmContact','Contacts','DESC','FaxApplication','Applications','List','get','orderBy','applications','priority','asc','length','create','contact','FaxInteraction','Contact\x20not\x20found','spread','push','close'];(function(_0x146317,_0x3388e1){var _0x6f0e41=function(_0x15d808){while(--_0x15d808){_0x146317['push'](_0x146317['shift']());}};_0x6f0e41(++_0x3388e1);}(_0x60d5,0x10a));var _0x560d=function(_0x114594,_0xd81639){_0x114594=_0x114594-0x0;var _0x2713e4=_0x60d5[_0x114594];return _0x2713e4;};'use strict';var _=require(_0x560d('0x0'));var util=require(_0x560d('0x1'));var moment=require(_0x560d('0x2'));var BPromise=require(_0x560d('0x3'));var rs=require(_0x560d('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x560d('0x5'))['db'];var utils=require(_0x560d('0x6'));var logger=require('../../config/logger')(_0x560d('0x7'));var config=require(_0x560d('0x8'));var jayson=require(_0x560d('0x9'));var client=jayson['client'][_0x560d('0xa')]({'port':0x232c});config['redis']=_[_0x560d('0xb')](config[_0x560d('0xc')],{'host':_0x560d('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x560d('0xc')]));require(_0x560d('0xe'))['register'](socket);function respondWithRpcPromise(_0x36d204,_0x253865,_0x18271d){return new BPromise(function(_0x341fc5,_0xcc3ff8){return client['request'](_0x36d204,_0x18271d)['then'](function(_0x305d4e){logger[_0x560d('0xf')](_0x560d('0x10'),_0x253865,'request\x20sent');logger['debug'](_0x560d('0x11'),_0x253865,_0x560d('0x12'),JSON['stringify'](_0x305d4e));if(_0x305d4e['error']){if(_0x305d4e[_0x560d('0x13')][_0x560d('0x14')]===0x1f4){logger[_0x560d('0x13')](_0x560d('0x10'),_0x253865,_0x305d4e[_0x560d('0x13')][_0x560d('0x15')]);return _0xcc3ff8(_0x305d4e['error']['message']);}logger[_0x560d('0x13')]('FaxAccount,\x20%s,\x20%s',_0x253865,_0x305d4e[_0x560d('0x13')][_0x560d('0x15')]);return _0x341fc5(_0x305d4e[_0x560d('0x13')][_0x560d('0x15')]);}else{logger[_0x560d('0xf')](_0x560d('0x10'),_0x253865,_0x560d('0x12'));_0x341fc5(_0x305d4e['result'][_0x560d('0x15')]);}})[_0x560d('0x16')](function(_0x3a284e){logger[_0x560d('0x13')](_0x560d('0x10'),_0x253865,_0x3a284e);_0xcc3ff8(_0x3a284e);});});}exports[_0x560d('0x17')]=function(_0x1aeb33){var _0x4eefc7=this;return new Promise(function(_0x368ae1,_0x5d9061){return db[_0x560d('0x18')][_0x560d('0x19')]({'raw':_0x1aeb33['options']?_0x1aeb33[_0x560d('0x1a')][_0x560d('0x1b')]===undefined?!![]:![]:!![],'where':_0x1aeb33[_0x560d('0x1a')]?_0x1aeb33[_0x560d('0x1a')][_0x560d('0x1c')]||null:null,'attributes':_0x1aeb33['options']?_0x1aeb33['options'][_0x560d('0x1d')]||null:null,'limit':_0x1aeb33['options']?_0x1aeb33[_0x560d('0x1a')][_0x560d('0x1e')]||null:null,'include':_0x1aeb33[_0x560d('0x1a')]?_0x1aeb33['options'][_0x560d('0x1f')]?_[_0x560d('0x20')](_0x1aeb33['options'][_0x560d('0x1f')],function(_0x13400e){return{'model':db[_0x13400e[_0x560d('0x21')]],'as':_0x13400e['as'],'attributes':_0x13400e['attributes'],'include':_0x13400e[_0x560d('0x1f')]?_[_0x560d('0x20')](_0x13400e[_0x560d('0x1f')],function(_0x51e00f){return{'model':db[_0x51e00f[_0x560d('0x21')]],'as':_0x51e00f['as'],'attributes':_0x51e00f[_0x560d('0x1d')],'include':_0x51e00f[_0x560d('0x1f')]?_[_0x560d('0x20')](_0x51e00f[_0x560d('0x1f')],function(_0x483c85){return{'model':db[_0x483c85[_0x560d('0x21')]],'as':_0x483c85['as'],'attributes':_0x483c85['attributes']};}):[]};}):[]};}):[]:[]})[_0x560d('0x22')](function(_0x1c8b6f){logger[_0x560d('0xf')](_0x560d('0x17'),_0x1aeb33);logger[_0x560d('0x23')](_0x560d('0x17'),_0x1aeb33,JSON[_0x560d('0x24')](_0x1c8b6f));_0x368ae1(_0x1c8b6f);})[_0x560d('0x16')](function(_0x2a852d){logger[_0x560d('0x13')](_0x560d('0x17'),_0x2a852d[_0x560d('0x15')],_0x1aeb33);_0x5d9061(_0x4eefc7['error'](0x1f4,_0x2a852d[_0x560d('0x15')]));});});};exports[_0x560d('0x25')]=function(_0x19bcff,_0x57fd69,_0x253b67){var _0x9b1dba=this;return new Promise(function(_0x8b9a90,_0x345904){var _0x22c51f={'body':_0x19bcff[_0x560d('0x26')],'channel':_0x560d('0x27')};var _0x7fabd5=[];var _0x68f243=[];var _0x325dee={};return db['CmContact'][_0x560d('0x28')]()['then'](function(_0x4b0208){if(!_0x4b0208){throw new db[(_0x560d('0x29'))][(_0x560d('0x2a'))]('no\x20available\x20attributes');}_0x7fabd5=_['difference'](_['keys'](_0x4b0208),[_0x560d('0x2b'),_0x560d('0x2c')]);_0x68f243=_['difference'](_[_0x560d('0x2d')](_0x4b0208),[_0x560d('0x2b'),'updatedAt',_0x560d('0x2e'),_0x560d('0x2f')]);if(_0x19bcff[_0x560d('0x26')]['id']){delete _0x19bcff['body']['id'];}if(_[_0x560d('0x30')](_0x19bcff['body'][_0x560d('0x31')])){throw new db[(_0x560d('0x29'))][(_0x560d('0x2a'))]('from\x20is\x20mandatory');}if(_['isNil'](_0x19bcff['body'][_0x560d('0x26')])||_0x19bcff['body'][_0x560d('0x26')]===''){throw new db[(_0x560d('0x29'))][(_0x560d('0x2a'))](_0x560d('0x32'));}if(_['isNil'](_0x19bcff[_0x560d('0x26')][_0x560d('0x33')])){throw new db[(_0x560d('0x29'))][(_0x560d('0x2a'))](_0x560d('0x34')+_0x68f243);}if(!_[_0x560d('0x35')](_0x68f243,_0x19bcff['body'][_0x560d('0x33')])){throw new db[(_0x560d('0x29'))][(_0x560d('0x2a'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x68f243);}_0x325dee[_0x19bcff['body'][_0x560d('0x33')]]=_0x19bcff[_0x560d('0x26')][_0x560d('0x31')];})[_0x560d('0x22')](function(){return db[_0x560d('0x18')]['find']({'where':{'id':_0x19bcff[_0x560d('0x36')]['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db[_0x560d('0x37')],'as':_0x560d('0x38'),'where':_0x325dee,'limit':0x1,'order':[[_0x560d('0x2c'),_0x560d('0x39')]]}]},{'model':db[_0x560d('0x3a')],'as':_0x560d('0x3b')}]});})[_0x560d('0x22')](function(_0x58d04a){if(_0x58d04a&&_0x58d04a[_0x560d('0x3c')]){var _0xe92acf=_0x58d04a[_0x560d('0x3d')]({'plain':!![]});_0x22c51f[_0x560d('0x36')]=_0xe92acf;_0x22c51f['applications']=_0xe92acf[_0x560d('0x3b')];_0x22c51f['list']=_0xe92acf[_0x560d('0x3c')];_0x22c51f['applications']=_[_0x560d('0x3e')](_0x22c51f[_0x560d('0x3f')],[_0x560d('0x40')],[_0x560d('0x41')]);if(_0x22c51f[_0x560d('0x36')][_0x560d('0x3b')]){delete _0x22c51f[_0x560d('0x36')][_0x560d('0x3b')];}if(_0x22c51f[_0x560d('0x36')]['List']&&_0x22c51f[_0x560d('0x36')]['List'][_0x560d('0x38')][_0x560d('0x42')]){return _0x22c51f[_0x560d('0x36')]['List']['Contacts'][0x0];}var _0xb20db8=_[_0x560d('0xb')](_0x19bcff[_0x560d('0x26')],{'firstName':_0x19bcff[_0x560d('0x26')][_0x560d('0x31')],'ListId':_0xe92acf[_0x560d('0x2f')]});_0xb20db8[_0x19bcff[_0x560d('0x26')]['mapKey']]=_0x19bcff[_0x560d('0x26')][_0x560d('0x31')];return db[_0x560d('0x37')][_0x560d('0x43')](_0xb20db8,{'fields':_0x7fabd5,'raw':!![]});}})['then'](function(_0x3f55af){_0x22c51f[_0x560d('0x44')]=_0x3f55af;if(_0x3f55af){var _0x54dc7e={'ContactId':_0x3f55af['id'],'FaxAccountId':_0x19bcff[_0x560d('0x36')]['id'],'fax':_0x3f55af[_0x560d('0x27')]};return db[_0x560d('0x45')]['find']({'where':{'ContactId':_0x3f55af['id'],'closed':![],'FaxAccountId':_0x19bcff['account']['id']}})[_0x560d('0x22')](function(_0x4e474c){if(_0x4e474c){return[_0x4e474c,![]];}return db[_0x560d('0x45')][_0x560d('0x43')](_0x54dc7e)[_0x560d('0x22')](function(_0x462412){return[_0x462412,!![]];});});}else{throw new Error(_0x560d('0x46'));}})[_0x560d('0x47')](function(_0x1dd4fa,_0x38e103){var _0x52fde2=_0x1dd4fa[_0x560d('0x3d')]({'plain':!![]});if(_0x38e103){if(_0x22c51f[_0x560d('0x36')]['autoclose']){_0x22c51f[_0x560d('0x3f')][_0x560d('0x48')]({'id':0x0,'priority':_0x22c51f[_0x560d('0x3f')][_0x560d('0x42')]+0x1,'app':_0x560d('0x49'),'appdata':_0x560d('0x4a'),'interval':_0x560d('0x4b')});}_0x52fde2['created']=!![];}else{_0x52fde2[_0x560d('0x4c')]=![];}_0x22c51f[_0x560d('0x4d')]=_0x52fde2;return db['FaxMessage']['create']({'body':_0x19bcff['body'][_0x560d('0x26')],'FaxAccountId':_0x19bcff['account']['id'],'FaxInteractionId':_0x1dd4fa['id'],'direction':'in','ContactId':_0x1dd4fa[_0x560d('0x4e')],'AttachmentId':_0x19bcff[_0x560d('0x26')]['AttachmentId']});})[_0x560d('0x22')](function(_0x3c27e3){_0x22c51f['message']=_0x3c27e3;if(_0x22c51f['interaction'][_0x560d('0x4f')]){return db['User'][_0x560d('0x50')]({'attributes':['id',_0x560d('0x51')],'where':{'id':_0x22c51f['interaction']['UserId']}})['then'](function(_0x8617ca){if(_0x8617ca){_0x22c51f[_0x560d('0x3f')][_0x560d('0x52')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x8617ca['name']+','+(_0x22c51f['account'][_0x560d('0x53')]||0xa),'interval':_0x560d('0x4b')});}return respondWithRpcPromise('Start','startRouting',_0x22c51f);});}return respondWithRpcPromise(_0x560d('0x54'),'startRouting',_0x22c51f);})['then'](function(_0x4acb5e){_0x8b9a90(_0x4acb5e);})[_0x560d('0x16')](function(_0x53359e){_0x345904(_0x9b1dba[_0x560d('0x13')](0x1f4,_0x53359e[_0x560d('0x15')]));});});};
\ No newline at end of file
index df767d3..186c458 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf70e=['save','remove','update','emit','removeListener','length','faxAccount:','./faxAccount.events'];(function(_0x318410,_0x451962){var _0x2898a3=function(_0x58e572){while(--_0x58e572){_0x318410['push'](_0x318410['shift']());}};_0x2898a3(++_0x451962);}(_0xf70e,0xf7));var _0xef70=function(_0x3d65f4,_0xe14c3){_0x3d65f4=_0x3d65f4-0x0;var _0x128310=_0xf70e[_0x3d65f4];return _0x128310;};'use strict';var FaxAccountEvents=require(_0xef70('0x0'));var events=[_0xef70('0x1'),_0xef70('0x2'),_0xef70('0x3')];function createListener(_0x133f93,_0x509191){return function(_0x433f5d){_0x509191[_0xef70('0x4')](_0x133f93,_0x433f5d);};}function removeListener(_0x33b0a3,_0x928cf9){return function(){FaxAccountEvents[_0xef70('0x5')](_0x33b0a3,_0x928cf9);};}exports['register']=function(_0x56895a){for(var _0x1acaf5=0x0,_0x3c1313=events[_0xef70('0x6')];_0x1acaf5<_0x3c1313;_0x1acaf5++){var _0x31b69f=events[_0x1acaf5];var _0x28b7fc=createListener(_0xef70('0x7')+_0x31b69f,_0x56895a);FaxAccountEvents['on'](_0x31b69f,_0x28b7fc);}};
\ No newline at end of file
+var _0x7188=['length','faxAccount:','./faxAccount.events','save','remove','emit','removeListener','register'];(function(_0x1e1965,_0x55785c){var _0x1a2e96=function(_0x27d366){while(--_0x27d366){_0x1e1965['push'](_0x1e1965['shift']());}};_0x1a2e96(++_0x55785c);}(_0x7188,0x162));var _0x8718=function(_0x2be044,_0xd88a7c){_0x2be044=_0x2be044-0x0;var _0x3587e1=_0x7188[_0x2be044];return _0x3587e1;};'use strict';var FaxAccountEvents=require(_0x8718('0x0'));var events=[_0x8718('0x1'),_0x8718('0x2'),'update'];function createListener(_0x30b121,_0x16a465){return function(_0x1c6624){_0x16a465[_0x8718('0x3')](_0x30b121,_0x1c6624);};}function removeListener(_0x520075,_0x336292){return function(){FaxAccountEvents[_0x8718('0x4')](_0x520075,_0x336292);};}exports[_0x8718('0x5')]=function(_0x4a26ec){for(var _0x2821d0=0x0,_0x429302=events[_0x8718('0x6')];_0x2821d0<_0x429302;_0x2821d0++){var _0x31f5fa=events[_0x2821d0];var _0x1bac86=createListener(_0x8718('0x7')+_0x31f5fa,_0x4a26ec);FaxAccountEvents['on'](_0x31f5fa,_0x1bac86);}};
\ No newline at end of file
index 5fe48bc..0158a98 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(_0x2d26c2,_0x26a9db){var _0x10675e=function(_0x29a860){while(--_0x29a860){_0x2d26c2['push'](_0x2d26c2['shift']());}};_0x10675e(++_0x26a9db);}(_0xa9e0,0x123));var _0x0a9e=function(_0x102e37,_0x14a181){_0x102e37=_0x102e37-0x0;var _0x35a07c=_0xa9e0[_0x102e37];return _0x35a07c;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['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(_0xa8b235,_0x55e03a){var _0x434147=function(_0x13fbef){while(--_0x13fbef){_0xa8b235['push'](_0xa8b235['shift']());}};_0x434147(++_0x55e03a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x37c22c,_0x28a70d){_0x37c22c=_0x37c22c-0x0;var _0x119d79=_0xa9e0[_0x37c22c];return _0x119d79;};'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 51599fb..8744a31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab64=['exports','INTEGER','STRING','noop','TEXT','*,*,*,*','sequelize'];(function(_0x37f59c,_0x287446){var _0x565ebb=function(_0x11c2c6){while(--_0x11c2c6){_0x37f59c['push'](_0x37f59c['shift']());}};_0x565ebb(++_0x287446);}(_0xab64,0x1f0));var _0x4ab6=function(_0x487efe,_0x2bed8a){_0x487efe=_0x487efe-0x0;var _0x546b15=_0xab64[_0x487efe];return _0x546b15;};'use strict';var Sequelize=require(_0x4ab6('0x0'));module[_0x4ab6('0x1')]={'priority':{'type':Sequelize[_0x4ab6('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x4ab6('0x3')],'allowNull':![],'defaultValue':_0x4ab6('0x4')},'appdata':{'type':Sequelize[_0x4ab6('0x5')]()},'description':{'type':Sequelize[_0x4ab6('0x3')]},'interval':{'type':Sequelize[_0x4ab6('0x3')],'defaultValue':_0x4ab6('0x6')}};
\ No newline at end of file
+var _0x91b9=['*,*,*,*','sequelize','noop','TEXT','STRING'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x91b9,0xe2));var _0x991b=function(_0x4d99d9,_0x338bf9){_0x4d99d9=_0x4d99d9-0x0;var _0x5ec6c6=_0x91b9[_0x4d99d9];return _0x5ec6c6;};'use strict';var Sequelize=require(_0x991b('0x0'));module['exports']={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x991b('0x1')},'appdata':{'type':Sequelize[_0x991b('0x2')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x991b('0x3')],'defaultValue':_0x991b('0x4')}};
\ No newline at end of file
index ad69ea0..c716788 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01aa=['sort','where','filter','merge','options','includeAll','catch','rawAttributes','length','include','find','create','body','params','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','squel','jsforce','desk.js','to-csv','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','status','end','json','offset','undefined','limit','count','reject','save','update','then','sendStatus','error','name','send','index','map','FaxApplication','fieldName','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit'];(function(_0x4fade7,_0x593db2){var _0x212008=function(_0x56061b){while(--_0x56061b){_0x4fade7['push'](_0x4fade7['shift']());}};_0x212008(++_0x593db2);}(_0x01aa,0x11b));var _0xa01a=function(_0x1711ac,_0x20dbe9){_0x1711ac=_0x1711ac-0x0;var _0x47d1f8=_0x01aa[_0x1711ac];return _0x47d1f8;};'use strict';var emlformat=require(_0xa01a('0x0'));var rimraf=require(_0xa01a('0x1'));var zipdir=require(_0xa01a('0x2'));var jsonpatch=require(_0xa01a('0x3'));var rp=require(_0xa01a('0x4'));var moment=require(_0xa01a('0x5'));var BPromise=require(_0xa01a('0x6'));var Mustache=require(_0xa01a('0x7'));var util=require(_0xa01a('0x8'));var path=require(_0xa01a('0x9'));var sox=require(_0xa01a('0xa'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xa01a('0xb'));var crypto=require('crypto');var jsforce=require(_0xa01a('0xc'));var deskjs=require(_0xa01a('0xd'));var toCsv=require(_0xa01a('0xe'));var querystring=require(_0xa01a('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xa01a('0x10'));var as=require(_0xa01a('0x11'));var hardwareService=require(_0xa01a('0x12'));var logger=require(_0xa01a('0x13'))(_0xa01a('0x14'));var utils=require('../../config/utils');var config=require(_0xa01a('0x15'));var licenseUtil=require(_0xa01a('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x208095,_0x3723eb){_0x3723eb=_0x3723eb||0xcc;return function(_0x33779a){if(_0x33779a){return _0x208095['sendStatus'](_0x3723eb);}return _0x208095[_0xa01a('0x17')](_0x3723eb)[_0xa01a('0x18')]();};}function respondWithResult(_0x4a50a1,_0x2d71c8){_0x2d71c8=_0x2d71c8||0xc8;return function(_0x46e9f8){if(_0x46e9f8){return _0x4a50a1[_0xa01a('0x17')](_0x2d71c8)[_0xa01a('0x19')](_0x46e9f8);}};}function respondWithFilteredResult(_0x43c4b6,_0xf015f2){return function(_0x38a86e){if(_0x38a86e){var _0x42a133=typeof _0xf015f2[_0xa01a('0x1a')]===_0xa01a('0x1b')&&typeof _0xf015f2[_0xa01a('0x1c')]===_0xa01a('0x1b');var _0x1b7c0a=_0x38a86e[_0xa01a('0x1d')];var _0x325b80=_0x42a133?0x0:_0xf015f2[_0xa01a('0x1a')];var _0x5b8a2a=_0x42a133?_0x38a86e['count']:_0xf015f2[_0xa01a('0x1a')]+_0xf015f2[_0xa01a('0x1c')];var _0x2d1ae2;if(_0x5b8a2a>=_0x1b7c0a){_0x5b8a2a=_0x1b7c0a;_0x2d1ae2=0xc8;}else{_0x2d1ae2=0xce;}_0x43c4b6['status'](_0x2d1ae2);return _0x43c4b6['set']('Content-Range',_0x325b80+'-'+_0x5b8a2a+'/'+_0x1b7c0a)[_0xa01a('0x19')](_0x38a86e);}return null;};}function patchUpdates(_0x57fe3f){return function(_0xfe81da){try{jsonpatch['apply'](_0xfe81da,_0x57fe3f,!![]);}catch(_0x326233){return BPromise[_0xa01a('0x1e')](_0x326233);}return _0xfe81da[_0xa01a('0x1f')]();};}function saveUpdates(_0x386409,_0x132bbc){return function(_0x1c5d56){if(_0x1c5d56){return _0x1c5d56[_0xa01a('0x20')](_0x386409)[_0xa01a('0x21')](function(_0x5d3721){return _0x5d3721;});}return null;};}function removeEntity(_0xa290dc,_0x20b6b1){return function(_0x6baba6){if(_0x6baba6){return _0x6baba6['destroy']()[_0xa01a('0x21')](function(){_0xa290dc[_0xa01a('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x44bea3,_0xc89630){return function(_0x27b358){if(!_0x27b358){_0x44bea3[_0xa01a('0x22')](0x194);}return _0x27b358;};}function handleError(_0x201517,_0x44d236){_0x44d236=_0x44d236||0x1f4;return function(_0x2f380a){logger[_0xa01a('0x23')](_0x2f380a['stack']);if(_0x2f380a[_0xa01a('0x24')]){delete _0x2f380a['name'];}_0x201517[_0xa01a('0x17')](_0x44d236)[_0xa01a('0x25')](_0x2f380a);};}exports[_0xa01a('0x26')]=function(_0x3d1757,_0x443578){var _0x5ad83d={},_0x21f25d={},_0x533216={'count':0x0,'rows':[]};var _0x1b106c=_[_0xa01a('0x27')](db[_0xa01a('0x28')]['rawAttributes'],function(_0x24c0a8){return{'name':_0x24c0a8[_0xa01a('0x29')],'type':_0x24c0a8['type'][_0xa01a('0x2a')]};});_0x21f25d[_0xa01a('0x2b')]=_['map'](_0x1b106c,_0xa01a('0x24'));_0x21f25d[_0xa01a('0x2c')]=_[_0xa01a('0x2d')](_0x3d1757[_0xa01a('0x2c')]);_0x21f25d[_0xa01a('0x2e')]=_[_0xa01a('0x2f')](_0x21f25d[_0xa01a('0x2b')],_0x21f25d[_0xa01a('0x2c')]);_0x5ad83d[_0xa01a('0x30')]=_[_0xa01a('0x2f')](_0x21f25d[_0xa01a('0x2b')],qs[_0xa01a('0x31')](_0x3d1757[_0xa01a('0x2c')]['fields']));_0x5ad83d['attributes']=_0x5ad83d[_0xa01a('0x30')]['length']?_0x5ad83d[_0xa01a('0x30')]:_0x21f25d['model'];if(!_0x3d1757[_0xa01a('0x2c')][_0xa01a('0x32')](_0xa01a('0x33'))){_0x5ad83d[_0xa01a('0x1c')]=qs[_0xa01a('0x1c')](_0x3d1757[_0xa01a('0x2c')][_0xa01a('0x1c')]);_0x5ad83d['offset']=qs['offset'](_0x3d1757[_0xa01a('0x2c')][_0xa01a('0x1a')]);}_0x5ad83d['order']=qs['sort'](_0x3d1757[_0xa01a('0x2c')][_0xa01a('0x34')]);_0x5ad83d[_0xa01a('0x35')]=qs[_0xa01a('0x2e')](_['pick'](_0x3d1757[_0xa01a('0x2c')],_0x21f25d['filters']),_0x1b106c);if(_0x3d1757[_0xa01a('0x2c')][_0xa01a('0x36')]){_0x5ad83d[_0xa01a('0x35')]=_['merge'](_0x5ad83d[_0xa01a('0x35')],{'$or':_[_0xa01a('0x27')](_0x1b106c,function(_0x42c1b6){if(_0x42c1b6['type']!=='VIRTUAL'){var _0x1a4323={};_0x1a4323[_0x42c1b6[_0xa01a('0x24')]]={'$like':'%'+_0x3d1757[_0xa01a('0x2c')][_0xa01a('0x36')]+'%'};return _0x1a4323;}})});}_0x5ad83d=_[_0xa01a('0x37')]({},_0x5ad83d,_0x3d1757[_0xa01a('0x38')]);var _0x1b94a4={'where':_0x5ad83d[_0xa01a('0x35')]};return db['FaxApplication'][_0xa01a('0x1d')](_0x1b94a4)[_0xa01a('0x21')](function(_0x496475){_0x533216[_0xa01a('0x1d')]=_0x496475;if(_0x3d1757['query'][_0xa01a('0x39')]){_0x5ad83d['include']=[{'all':!![]}];}return db['FaxApplication']['findAll'](_0x5ad83d);})[_0xa01a('0x21')](function(_0x3de79d){_0x533216['rows']=_0x3de79d;return _0x533216;})[_0xa01a('0x21')](respondWithFilteredResult(_0x443578,_0x5ad83d))[_0xa01a('0x3a')](handleError(_0x443578,null));};exports['show']=function(_0x4c3658,_0x33b7be){var _0xa4069a={'raw':!![],'where':{'id':_0x4c3658['params']['id']}},_0x2f0b6e={};_0x2f0b6e[_0xa01a('0x2b')]=_[_0xa01a('0x2d')](db[_0xa01a('0x28')][_0xa01a('0x3b')]);_0x2f0b6e[_0xa01a('0x2c')]=_['keys'](_0x4c3658[_0xa01a('0x2c')]);_0x2f0b6e['filters']=_[_0xa01a('0x2f')](_0x2f0b6e[_0xa01a('0x2b')],_0x2f0b6e[_0xa01a('0x2c')]);_0xa4069a[_0xa01a('0x30')]=_[_0xa01a('0x2f')](_0x2f0b6e[_0xa01a('0x2b')],qs[_0xa01a('0x31')](_0x4c3658[_0xa01a('0x2c')]['fields']));_0xa4069a[_0xa01a('0x30')]=_0xa4069a[_0xa01a('0x30')][_0xa01a('0x3c')]?_0xa4069a[_0xa01a('0x30')]:_0x2f0b6e[_0xa01a('0x2b')];if(_0x4c3658[_0xa01a('0x2c')][_0xa01a('0x39')]){_0xa4069a[_0xa01a('0x3d')]=[{'all':!![]}];}_0xa4069a=_['merge']({},_0xa4069a,_0x4c3658[_0xa01a('0x38')]);return db[_0xa01a('0x28')][_0xa01a('0x3e')](_0xa4069a)[_0xa01a('0x21')](handleEntityNotFound(_0x33b7be,null))['then'](respondWithResult(_0x33b7be,null))[_0xa01a('0x3a')](handleError(_0x33b7be,null));};exports[_0xa01a('0x3f')]=function(_0x3873b1,_0x192860){return db[_0xa01a('0x28')][_0xa01a('0x3f')](_0x3873b1[_0xa01a('0x40')],{})[_0xa01a('0x21')](respondWithResult(_0x192860,0xc9))[_0xa01a('0x3a')](handleError(_0x192860,null));};exports[_0xa01a('0x20')]=function(_0x55073a,_0x51fc11){if(_0x55073a[_0xa01a('0x40')]['id']){delete _0x55073a[_0xa01a('0x40')]['id'];}return db['FaxApplication']['find']({'where':{'id':_0x55073a[_0xa01a('0x41')]['id']}})[_0xa01a('0x21')](handleEntityNotFound(_0x51fc11,null))[_0xa01a('0x21')](saveUpdates(_0x55073a[_0xa01a('0x40')],null))[_0xa01a('0x21')](respondWithResult(_0x51fc11,null))[_0xa01a('0x3a')](handleError(_0x51fc11,null));};exports[_0xa01a('0x42')]=function(_0x265ffa,_0xe13e59){return db['FaxApplication'][_0xa01a('0x3e')]({'where':{'id':_0x265ffa[_0xa01a('0x41')]['id']}})[_0xa01a('0x21')](handleEntityNotFound(_0xe13e59,null))[_0xa01a('0x21')](removeEntity(_0xe13e59,null))[_0xa01a('0x3a')](handleError(_0xe13e59,null));};
\ No newline at end of file
+var _0x734f=['limit','undefined','count','Content-Range','apply','save','update','then','destroy','error','stack','name','send','map','FaxApplication','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','keys','find','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset'];(function(_0x25d895,_0x455c2e){var _0x10a795=function(_0x3a3060){while(--_0x3a3060){_0x25d895['push'](_0x25d895['shift']());}};_0x10a795(++_0x455c2e);}(_0x734f,0x71));var _0xf734=function(_0x2daab7,_0x377337){_0x2daab7=_0x2daab7-0x0;var _0x1714da=_0x734f[_0x2daab7];return _0x1714da;};'use strict';var emlformat=require(_0xf734('0x0'));var rimraf=require(_0xf734('0x1'));var zipdir=require(_0xf734('0x2'));var jsonpatch=require(_0xf734('0x3'));var rp=require(_0xf734('0x4'));var moment=require(_0xf734('0x5'));var BPromise=require(_0xf734('0x6'));var Mustache=require('mustache');var util=require(_0xf734('0x7'));var path=require(_0xf734('0x8'));var sox=require('sox');var csv=require(_0xf734('0x9'));var ejs=require(_0xf734('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf734('0xb'));var squel=require(_0xf734('0xc'));var crypto=require(_0xf734('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xf734('0xe'));var toCsv=require(_0xf734('0x9'));var querystring=require('querystring');var Papa=require(_0xf734('0xf'));var Redis=require(_0xf734('0x10'));var authService=require(_0xf734('0x11'));var qs=require(_0xf734('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf734('0x13'));var logger=require(_0xf734('0x14'))('api');var utils=require(_0xf734('0x15'));var config=require(_0xf734('0x16'));var licenseUtil=require(_0xf734('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3b9e64,_0xf55476){_0xf55476=_0xf55476||0xcc;return function(_0x4bae4f){if(_0x4bae4f){return _0x3b9e64[_0xf734('0x18')](_0xf55476);}return _0x3b9e64['status'](_0xf55476)[_0xf734('0x19')]();};}function respondWithResult(_0x518086,_0x10284a){_0x10284a=_0x10284a||0xc8;return function(_0x44f691){if(_0x44f691){return _0x518086[_0xf734('0x1a')](_0x10284a)[_0xf734('0x1b')](_0x44f691);}};}function respondWithFilteredResult(_0x504796,_0xb06f85){return function(_0x13e09c){if(_0x13e09c){var _0x58e0ac=typeof _0xb06f85[_0xf734('0x1c')]==='undefined'&&typeof _0xb06f85[_0xf734('0x1d')]===_0xf734('0x1e');var _0x19255f=_0x13e09c[_0xf734('0x1f')];var _0x104a62=_0x58e0ac?0x0:_0xb06f85['offset'];var _0x1d5544=_0x58e0ac?_0x13e09c[_0xf734('0x1f')]:_0xb06f85[_0xf734('0x1c')]+_0xb06f85[_0xf734('0x1d')];var _0x31f2d3;if(_0x1d5544>=_0x19255f){_0x1d5544=_0x19255f;_0x31f2d3=0xc8;}else{_0x31f2d3=0xce;}_0x504796[_0xf734('0x1a')](_0x31f2d3);return _0x504796['set'](_0xf734('0x20'),_0x104a62+'-'+_0x1d5544+'/'+_0x19255f)[_0xf734('0x1b')](_0x13e09c);}return null;};}function patchUpdates(_0x2aef49){return function(_0x1f7203){try{jsonpatch[_0xf734('0x21')](_0x1f7203,_0x2aef49,!![]);}catch(_0x47f16a){return BPromise['reject'](_0x47f16a);}return _0x1f7203[_0xf734('0x22')]();};}function saveUpdates(_0x176939,_0x476015){return function(_0x1bf31d){if(_0x1bf31d){return _0x1bf31d[_0xf734('0x23')](_0x176939)[_0xf734('0x24')](function(_0x3bf463){return _0x3bf463;});}return null;};}function removeEntity(_0x4b45e1,_0x1de7f5){return function(_0x584a75){if(_0x584a75){return _0x584a75[_0xf734('0x25')]()[_0xf734('0x24')](function(){_0x4b45e1['status'](0xcc)[_0xf734('0x19')]();});}};}function handleEntityNotFound(_0x59b299,_0x459707){return function(_0x8901f3){if(!_0x8901f3){_0x59b299[_0xf734('0x18')](0x194);}return _0x8901f3;};}function handleError(_0x4e73b1,_0x268cf6){_0x268cf6=_0x268cf6||0x1f4;return function(_0x2ab1ef){logger[_0xf734('0x26')](_0x2ab1ef[_0xf734('0x27')]);if(_0x2ab1ef[_0xf734('0x28')]){delete _0x2ab1ef[_0xf734('0x28')];}_0x4e73b1['status'](_0x268cf6)[_0xf734('0x29')](_0x2ab1ef);};}exports['index']=function(_0x111f45,_0x5d862){var _0x5314f6={},_0x329e63={},_0x135f66={'count':0x0,'rows':[]};var _0x460f4d=_[_0xf734('0x2a')](db[_0xf734('0x2b')][_0xf734('0x2c')],function(_0x2eb294){return{'name':_0x2eb294[_0xf734('0x2d')],'type':_0x2eb294[_0xf734('0x2e')]['key']};});_0x329e63[_0xf734('0x2f')]=_[_0xf734('0x2a')](_0x460f4d,'name');_0x329e63[_0xf734('0x30')]=_['keys'](_0x111f45[_0xf734('0x30')]);_0x329e63[_0xf734('0x31')]=_[_0xf734('0x32')](_0x329e63['model'],_0x329e63['query']);_0x5314f6[_0xf734('0x33')]=_[_0xf734('0x32')](_0x329e63[_0xf734('0x2f')],qs[_0xf734('0x34')](_0x111f45['query'][_0xf734('0x34')]));_0x5314f6[_0xf734('0x33')]=_0x5314f6['attributes'][_0xf734('0x35')]?_0x5314f6[_0xf734('0x33')]:_0x329e63[_0xf734('0x2f')];if(!_0x111f45[_0xf734('0x30')][_0xf734('0x36')]('nolimit')){_0x5314f6[_0xf734('0x1d')]=qs[_0xf734('0x1d')](_0x111f45[_0xf734('0x30')][_0xf734('0x1d')]);_0x5314f6[_0xf734('0x1c')]=qs[_0xf734('0x1c')](_0x111f45[_0xf734('0x30')][_0xf734('0x1c')]);}_0x5314f6['order']=qs[_0xf734('0x37')](_0x111f45['query'][_0xf734('0x37')]);_0x5314f6[_0xf734('0x38')]=qs[_0xf734('0x31')](_[_0xf734('0x39')](_0x111f45['query'],_0x329e63[_0xf734('0x31')]),_0x460f4d);if(_0x111f45[_0xf734('0x30')][_0xf734('0x3a')]){_0x5314f6[_0xf734('0x38')]=_[_0xf734('0x3b')](_0x5314f6['where'],{'$or':_[_0xf734('0x2a')](_0x460f4d,function(_0x90a4dc){if(_0x90a4dc[_0xf734('0x2e')]!==_0xf734('0x3c')){var _0x3427c6={};_0x3427c6[_0x90a4dc[_0xf734('0x28')]]={'$like':'%'+_0x111f45[_0xf734('0x30')][_0xf734('0x3a')]+'%'};return _0x3427c6;}})});}_0x5314f6=_[_0xf734('0x3b')]({},_0x5314f6,_0x111f45[_0xf734('0x3d')]);var _0x8b7ded={'where':_0x5314f6[_0xf734('0x38')]};return db[_0xf734('0x2b')][_0xf734('0x1f')](_0x8b7ded)[_0xf734('0x24')](function(_0x131380){_0x135f66[_0xf734('0x1f')]=_0x131380;if(_0x111f45[_0xf734('0x30')]['includeAll']){_0x5314f6[_0xf734('0x3e')]=[{'all':!![]}];}return db[_0xf734('0x2b')][_0xf734('0x3f')](_0x5314f6);})[_0xf734('0x24')](function(_0x454082){_0x135f66[_0xf734('0x40')]=_0x454082;return _0x135f66;})['then'](respondWithFilteredResult(_0x5d862,_0x5314f6))[_0xf734('0x41')](handleError(_0x5d862,null));};exports[_0xf734('0x42')]=function(_0x3ab0cd,_0x19e920){var _0x4304fe={'raw':!![],'where':{'id':_0x3ab0cd['params']['id']}},_0x47a3f0={};_0x47a3f0[_0xf734('0x2f')]=_[_0xf734('0x43')](db[_0xf734('0x2b')][_0xf734('0x2c')]);_0x47a3f0[_0xf734('0x30')]=_[_0xf734('0x43')](_0x3ab0cd[_0xf734('0x30')]);_0x47a3f0[_0xf734('0x31')]=_[_0xf734('0x32')](_0x47a3f0[_0xf734('0x2f')],_0x47a3f0[_0xf734('0x30')]);_0x4304fe['attributes']=_[_0xf734('0x32')](_0x47a3f0[_0xf734('0x2f')],qs[_0xf734('0x34')](_0x3ab0cd[_0xf734('0x30')]['fields']));_0x4304fe[_0xf734('0x33')]=_0x4304fe[_0xf734('0x33')][_0xf734('0x35')]?_0x4304fe[_0xf734('0x33')]:_0x47a3f0[_0xf734('0x2f')];if(_0x3ab0cd[_0xf734('0x30')]['includeAll']){_0x4304fe[_0xf734('0x3e')]=[{'all':!![]}];}_0x4304fe=_['merge']({},_0x4304fe,_0x3ab0cd[_0xf734('0x3d')]);return db[_0xf734('0x2b')][_0xf734('0x44')](_0x4304fe)[_0xf734('0x24')](handleEntityNotFound(_0x19e920,null))[_0xf734('0x24')](respondWithResult(_0x19e920,null))[_0xf734('0x41')](handleError(_0x19e920,null));};exports['create']=function(_0x38cb78,_0x21b8cf){return db[_0xf734('0x2b')]['create'](_0x38cb78[_0xf734('0x45')],{})[_0xf734('0x24')](respondWithResult(_0x21b8cf,0xc9))[_0xf734('0x41')](handleError(_0x21b8cf,null));};exports['update']=function(_0x42e874,_0x5b3569){if(_0x42e874[_0xf734('0x45')]['id']){delete _0x42e874[_0xf734('0x45')]['id'];}return db['FaxApplication'][_0xf734('0x44')]({'where':{'id':_0x42e874['params']['id']}})['then'](handleEntityNotFound(_0x5b3569,null))[_0xf734('0x24')](saveUpdates(_0x42e874[_0xf734('0x45')],null))[_0xf734('0x24')](respondWithResult(_0x5b3569,null))[_0xf734('0x41')](handleError(_0x5b3569,null));};exports['destroy']=function(_0x5b6948,_0x147aa3){return db[_0xf734('0x2b')][_0xf734('0x44')]({'where':{'id':_0x5b6948[_0xf734('0x46')]['id']}})[_0xf734('0x24')](handleEntityNotFound(_0x147aa3,null))[_0xf734('0x24')](removeEntity(_0x147aa3,null))['catch'](handleError(_0x147aa3,null));};
\ No newline at end of file
index 97f40a6..d7fa42c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30ea=['define','FaxApplication','utf8mb4','lodash','api','request-promise','rimraf','./faxApplication.attributes','exports'];(function(_0x2d7daa,_0x3698e0){var _0x119a17=function(_0x4f717a){while(--_0x4f717a){_0x2d7daa['push'](_0x2d7daa['shift']());}};_0x119a17(++_0x3698e0);}(_0x30ea,0xe4));var _0xa30e=function(_0x50512a,_0x2c37e5){_0x50512a=_0x50512a-0x0;var _0x2ab7ae=_0x30ea[_0x50512a];return _0x2ab7ae;};'use strict';var _=require(_0xa30e('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xa30e('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xa30e('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa30e('0x3'));var config=require('../../config/environment');var attributes=require(_0xa30e('0x4'));module[_0xa30e('0x5')]=function(_0x2e7b0b,_0x85157a){return _0x2e7b0b[_0xa30e('0x6')](_0xa30e('0x7'),attributes,{'tableName':'fax_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xa30e('0x8'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xa86d=['utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','./faxApplication.attributes','exports','define','fax_applications','utf8mb4'];(function(_0x33ed3d,_0x3bb505){var _0x26bc4e=function(_0x1fbcec){while(--_0x1fbcec){_0x33ed3d['push'](_0x33ed3d['shift']());}};_0x26bc4e(++_0x3bb505);}(_0xa86d,0xfd));var _0xda86=function(_0x421aa7,_0x233551){_0x421aa7=_0x421aa7-0x0;var _0x51f048=_0xa86d[_0x421aa7];return _0x51f048;};'use strict';var _=require(_0xda86('0x0'));var util=require(_0xda86('0x1'));var logger=require(_0xda86('0x2'))('api');var moment=require(_0xda86('0x3'));var BPromise=require(_0xda86('0x4'));var rp=require(_0xda86('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xda86('0x6'));var config=require(_0xda86('0x7'));var attributes=require(_0xda86('0x8'));module[_0xda86('0x9')]=function(_0x44038e,_0x491c8c){return _0x44038e[_0xda86('0xa')]('FaxApplication',attributes,{'tableName':_0xda86('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xda86('0xc'),'collate':_0xda86('0xd')});};
\ No newline at end of file
index ba211cc..1debdb6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0503=['debug','FaxApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','UpdateFaxApplication','update','body','options','raw','where','attributes','limit','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','../../config/environment','http','then','FaxApplication,\x20%s,\x20%s','request\x20sent'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x0503,0x199));var _0x3050=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x0503[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x3050('0x0'));var util=require(_0x3050('0x1'));var moment=require(_0x3050('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3050('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x3050('0x4'));var logger=require(_0x3050('0x5'))('rpc');var config=require(_0x3050('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0x3050('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x229f1c,_0x24367c,_0x498e39){return new BPromise(function(_0x49ace7,_0x13108d){return client['request'](_0x229f1c,_0x498e39)[_0x3050('0x8')](function(_0x550677){logger['info'](_0x3050('0x9'),_0x24367c,_0x3050('0xa'));logger[_0x3050('0xb')](_0x3050('0xc'),_0x24367c,_0x3050('0xa'),JSON[_0x3050('0xd')](_0x550677));if(_0x550677['error']){if(_0x550677[_0x3050('0xe')][_0x3050('0xf')]===0x1f4){logger[_0x3050('0xe')](_0x3050('0x9'),_0x24367c,_0x550677[_0x3050('0xe')][_0x3050('0x10')]);return _0x13108d(_0x550677[_0x3050('0xe')][_0x3050('0x10')]);}logger['error'](_0x3050('0x9'),_0x24367c,_0x550677['error'][_0x3050('0x10')]);return _0x49ace7(_0x550677[_0x3050('0xe')][_0x3050('0x10')]);}else{logger[_0x3050('0x11')](_0x3050('0x9'),_0x24367c,_0x3050('0xa'));_0x49ace7(_0x550677[_0x3050('0x12')][_0x3050('0x10')]);}})['catch'](function(_0x274197){logger[_0x3050('0xe')](_0x3050('0x9'),_0x24367c,_0x274197);_0x13108d(_0x274197);});});}exports[_0x3050('0x13')]=function(_0x5b100b){var _0xe17af0=this;return new Promise(function(_0x32cf23,_0x518915){return db['FaxApplication'][_0x3050('0x14')](_0x5b100b[_0x3050('0x15')],{'raw':_0x5b100b[_0x3050('0x16')]?_0x5b100b[_0x3050('0x16')][_0x3050('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5b100b['options']?_0x5b100b[_0x3050('0x16')][_0x3050('0x18')]||null:null,'attributes':_0x5b100b[_0x3050('0x16')]?_0x5b100b['options'][_0x3050('0x19')]||null:null,'limit':_0x5b100b['options']?_0x5b100b[_0x3050('0x16')][_0x3050('0x1a')]||null:null})['then'](function(_0x847974){logger['info'](_0x3050('0x13'),_0x5b100b);logger[_0x3050('0xb')]('UpdateFaxApplication',_0x5b100b,JSON[_0x3050('0xd')](_0x847974));_0x32cf23(_0x847974);})[_0x3050('0x1b')](function(_0x39fb65){logger[_0x3050('0xe')]('UpdateFaxApplication',_0x39fb65[_0x3050('0x10')],_0x5b100b);_0x518915(_0xe17af0[_0x3050('0xe')](0x1f4,_0x39fb65[_0x3050('0x10')]));});});};
\ No newline at end of file
+var _0xd710=['stringify','error','message','info','catch','UpdateFaxApplication','FaxApplication','update','body','options','raw','where','attributes','limit','lodash','util','moment','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','then','FaxApplication,\x20%s,\x20%s','request\x20sent','debug','FaxApplication,\x20%s,\x20%s,\x20%s'];(function(_0x2049db,_0x5075fe){var _0x2339f8=function(_0x3740bb){while(--_0x3740bb){_0x2049db['push'](_0x2049db['shift']());}};_0x2339f8(++_0x5075fe);}(_0xd710,0x12c));var _0x0d71=function(_0x4ec084,_0x41c5ff){_0x4ec084=_0x4ec084-0x0;var _0x80a134=_0xd710[_0x4ec084];return _0x80a134;};'use strict';var _=require(_0x0d71('0x0'));var util=require(_0x0d71('0x1'));var moment=require(_0x0d71('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0d71('0x3'))['db'];var utils=require(_0x0d71('0x4'));var logger=require(_0x0d71('0x5'))('rpc');var config=require(_0x0d71('0x6'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x36ce99,_0x4a29b6,_0x328166){return new BPromise(function(_0x405f1c,_0xf99a9b){return client['request'](_0x36ce99,_0x328166)[_0x0d71('0x7')](function(_0x440819){logger['info'](_0x0d71('0x8'),_0x4a29b6,_0x0d71('0x9'));logger[_0x0d71('0xa')](_0x0d71('0xb'),_0x4a29b6,_0x0d71('0x9'),JSON[_0x0d71('0xc')](_0x440819));if(_0x440819[_0x0d71('0xd')]){if(_0x440819[_0x0d71('0xd')]['code']===0x1f4){logger[_0x0d71('0xd')](_0x0d71('0x8'),_0x4a29b6,_0x440819[_0x0d71('0xd')]['message']);return _0xf99a9b(_0x440819[_0x0d71('0xd')][_0x0d71('0xe')]);}logger[_0x0d71('0xd')](_0x0d71('0x8'),_0x4a29b6,_0x440819[_0x0d71('0xd')][_0x0d71('0xe')]);return _0x405f1c(_0x440819['error'][_0x0d71('0xe')]);}else{logger[_0x0d71('0xf')](_0x0d71('0x8'),_0x4a29b6,_0x0d71('0x9'));_0x405f1c(_0x440819['result'][_0x0d71('0xe')]);}})[_0x0d71('0x10')](function(_0x1e3ee6){logger[_0x0d71('0xd')]('FaxApplication,\x20%s,\x20%s',_0x4a29b6,_0x1e3ee6);_0xf99a9b(_0x1e3ee6);});});}exports[_0x0d71('0x11')]=function(_0x467833){var _0x4bebb5=this;return new Promise(function(_0x29ef25,_0x20186b){return db[_0x0d71('0x12')][_0x0d71('0x13')](_0x467833[_0x0d71('0x14')],{'raw':_0x467833[_0x0d71('0x15')]?_0x467833[_0x0d71('0x15')][_0x0d71('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x467833['options']?_0x467833[_0x0d71('0x15')][_0x0d71('0x17')]||null:null,'attributes':_0x467833['options']?_0x467833['options'][_0x0d71('0x18')]||null:null,'limit':_0x467833[_0x0d71('0x15')]?_0x467833[_0x0d71('0x15')][_0x0d71('0x19')]||null:null})['then'](function(_0x409baf){logger[_0x0d71('0xf')](_0x0d71('0x11'),_0x467833);logger['debug'](_0x0d71('0x11'),_0x467833,JSON[_0x0d71('0xc')](_0x409baf));_0x29ef25(_0x409baf);})[_0x0d71('0x10')](function(_0x561595){logger[_0x0d71('0xd')](_0x0d71('0x11'),_0x561595[_0x0d71('0xe')],_0x467833);_0x20186b(_0x4bebb5[_0x0d71('0xd')](0x1f4,_0x561595[_0x0d71('0xe')]));});});};
\ No newline at end of file
index 9a816ab..b63c665 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1775=['../../config/environment','./faxApplication.controller','get','isAuthenticated','index','/:id','show','post','create','put','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x5285f9,_0x2bd7d7){var _0x6edc0c=function(_0x5ae671){while(--_0x5ae671){_0x5285f9['push'](_0x5285f9['shift']());}};_0x6edc0c(++_0x2bd7d7);}(_0x1775,0x1db));var _0x5177=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x1775[_0x19e35c];return _0x3e1fe8;};'use strict';var multer=require('multer');var util=require(_0x5177('0x0'));var path=require(_0x5177('0x1'));var timeout=require(_0x5177('0x2'));var express=require(_0x5177('0x3'));var router=express[_0x5177('0x4')]();var fs_extra=require(_0x5177('0x5'));var auth=require(_0x5177('0x6'));var interaction=require(_0x5177('0x7'));var config=require(_0x5177('0x8'));var controller=require(_0x5177('0x9'));router[_0x5177('0xa')]('/',auth[_0x5177('0xb')](),controller[_0x5177('0xc')]);router[_0x5177('0xa')](_0x5177('0xd'),auth[_0x5177('0xb')](),controller[_0x5177('0xe')]);router[_0x5177('0xf')]('/',auth[_0x5177('0xb')](),controller[_0x5177('0x10')]);router[_0x5177('0x11')](_0x5177('0xd'),auth['isAuthenticated'](),controller['update']);router[_0x5177('0x12')](_0x5177('0xd'),auth[_0x5177('0xb')](),controller[_0x5177('0x13')]);module[_0x5177('0x14')]=router;
\ No newline at end of file
+var _0x4024=['express','fs-extra','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','update','destroy','exports','multer','util','connect-timeout'];(function(_0x4ee565,_0x2be514){var _0x31f962=function(_0x38e497){while(--_0x38e497){_0x4ee565['push'](_0x4ee565['shift']());}};_0x31f962(++_0x2be514);}(_0x4024,0x89));var _0x4402=function(_0x311b4a,_0x3e92cd){_0x311b4a=_0x311b4a-0x0;var _0x4f5bc7=_0x4024[_0x311b4a];return _0x4f5bc7;};'use strict';var multer=require(_0x4402('0x0'));var util=require(_0x4402('0x1'));var path=require('path');var timeout=require(_0x4402('0x2'));var express=require(_0x4402('0x3'));var router=express['Router']();var fs_extra=require(_0x4402('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x4402('0x5'));var config=require(_0x4402('0x6'));var controller=require('./faxApplication.controller');router['get']('/',auth[_0x4402('0x7')](),controller[_0x4402('0x8')]);router[_0x4402('0x9')]('/:id',auth[_0x4402('0x7')](),controller['show']);router['post']('/',auth[_0x4402('0x7')](),controller['create']);router['put'](_0x4402('0xa'),auth['isAuthenticated'](),controller[_0x4402('0xb')]);router['delete'](_0x4402('0xa'),auth['isAuthenticated'](),controller[_0x4402('0xc')]);module[_0x4402('0xd')]=router;
\ No newline at end of file
index a5e1d25..a3c5af7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb53=['DATE','STRING','ENUM','out','sequelize','exports','BOOLEAN'];(function(_0x6af1b1,_0x4ccf9e){var _0x139dae=function(_0x409ebf){while(--_0x409ebf){_0x6af1b1['push'](_0x6af1b1['shift']());}};_0x139dae(++_0x4ccf9e);}(_0xbb53,0x15b));var _0x3bb5=function(_0x3fc1c6,_0x482992){_0x3fc1c6=_0x3fc1c6-0x0;var _0x510ffa=_0xbb53[_0x3fc1c6];return _0x510ffa;};'use strict';var Sequelize=require(_0x3bb5('0x0'));module[_0x3bb5('0x1')]={'closed':{'type':Sequelize[_0x3bb5('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x3bb5('0x3')]},'disposition':{'type':Sequelize[_0x3bb5('0x4')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x3bb5('0x4')]},'read1stAt':{'type':Sequelize['DATE']},'fax':{'type':Sequelize[_0x3bb5('0x4')]},'firstMsgDirection':{'type':Sequelize[_0x3bb5('0x5')]('in',_0x3bb5('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x3bb5('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x3bb5('0x5')]('in',_0x3bb5('0x6')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
+var _0x3619=['STRING','DATE','ENUM','out','sequelize','exports'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x3619,0x6a));var _0x9361=function(_0x3e0dc4,_0x13971b){_0x3e0dc4=_0x3e0dc4-0x0;var _0x586111=_0x3619[_0x3e0dc4];return _0x586111;};'use strict';var Sequelize=require(_0x9361('0x0'));module[_0x9361('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x9361('0x2')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x9361('0x2')]},'note':{'type':Sequelize[_0x9361('0x2')]},'read1stAt':{'type':Sequelize[_0x9361('0x3')]},'fax':{'type':Sequelize['STRING']},'firstMsgDirection':{'type':Sequelize[_0x9361('0x4')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x9361('0x3')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x9361('0x5')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
index f537f34..22d3e33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc8b=['body','find','describe','FaxMessage','ids','omit','findOne','nolimit','sort','where','FaxInteractionId','filter','$gte','format','YYYY-MM-DD\x20HH:mm:ss','options','count','includeAll','rows','setTags','spread','Tag','color','faxInteractionTags:save','removeTags','download','unix','join','server','files','tmp','root','attachments','transcript-%d-%s.zip','push','Attachment','Messages','get','existsSync','createReadStream','pipe','createWriteStream','basename','resolve','log','err','unlinkSync','rimraf','moment','util','lodash','ioredis','../../config/logger','api','../../config/environment','redis','socket.io-emitter','register','status','end','undefined','limit','offset','set','Content-Range','update','destroy','then','sendStatus','stack','name','index','map','FaxInteraction','rawAttributes','fieldName','findAll','fax','query','user','params','model','keys','filters','intersection','attributes','fields','length','include','merge','catch'];(function(_0x587380,_0x1bddfc){var _0x3653d2=function(_0x59e0bf){while(--_0x59e0bf){_0x587380['push'](_0x587380['shift']());}};_0x3653d2(++_0x1bddfc);}(_0xbc8b,0xe5));var _0xbbc8=function(_0x42c118,_0x197006){_0x42c118=_0x42c118-0x0;var _0x112ebd=_0xbc8b[_0x42c118];return _0x112ebd;};'use strict';var rimraf=require(_0xbbc8('0x0'));var zipdir=require('zip-dir');var moment=require(_0xbbc8('0x1'));var BPromise=require('bluebird');var util=require(_0xbbc8('0x2'));var path=require('path');var fs=require('fs');var _=require(_0xbbc8('0x3'));var Redis=require(_0xbbc8('0x4'));var interaction=require('../../components/interaction/service');var qs=require('../../components/parsers/qs');var logger=require(_0xbbc8('0x5'))(_0xbbc8('0x6'));var config=require(_0xbbc8('0x7'));var db=require('../../mysqldb')['db'];config[_0xbbc8('0x8')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xbbc8('0x9'))(new Redis(config['redis']));require('./faxInteraction.socket')[_0xbbc8('0xa')](socket);function respondWithStatusCode(_0x343d02,_0x5351ee){_0x5351ee=_0x5351ee||0xcc;return function(_0x9bfb66){if(_0x9bfb66){return _0x343d02['sendStatus'](_0x5351ee);}return _0x343d02[_0xbbc8('0xb')](_0x5351ee)[_0xbbc8('0xc')]();};}function respondWithResult(_0x4532a3,_0x18154f){_0x18154f=_0x18154f||0xc8;return function(_0xe7313f){if(_0xe7313f){return _0x4532a3[_0xbbc8('0xb')](_0x18154f)['json'](_0xe7313f);}};}function respondWithFilteredResult(_0x568faf,_0x281d06){return function(_0x3cdedb){if(_0x3cdedb){var _0x50a79f=typeof _0x281d06['offset']===_0xbbc8('0xd')&&typeof _0x281d06[_0xbbc8('0xe')]===_0xbbc8('0xd');var _0x3a73a3=_0x3cdedb['count'];var _0x1e30f1=_0x50a79f?0x0:_0x281d06[_0xbbc8('0xf')];var _0x48babe=_0x50a79f?_0x3cdedb['count']:_0x281d06[_0xbbc8('0xf')]+_0x281d06[_0xbbc8('0xe')];var _0x269a3f;if(_0x48babe>=_0x3a73a3){_0x48babe=_0x3a73a3;_0x269a3f=0xc8;}else{_0x269a3f=0xce;}_0x568faf[_0xbbc8('0xb')](_0x269a3f);return _0x568faf[_0xbbc8('0x10')](_0xbbc8('0x11'),_0x1e30f1+'-'+_0x48babe+'/'+_0x3a73a3)['json'](_0x3cdedb);}return null;};}function saveUpdates(_0x16139b){return function(_0x2d4cd1){if(_0x2d4cd1){return _0x2d4cd1[_0xbbc8('0x12')](_0x16139b)['then'](function(_0x4958a7){return _0x4958a7;});}return null;};}function removeEntity(_0x41d004){return function(_0x31b575){if(_0x31b575){return _0x31b575[_0xbbc8('0x13')]()[_0xbbc8('0x14')](function(){_0x41d004['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x33f713){return function(_0x282c63){if(!_0x282c63){_0x33f713[_0xbbc8('0x15')](0x194);}return _0x282c63;};}function handleError(_0x11f55d,_0x1c4155){_0x1c4155=_0x1c4155||0x1f4;return function(_0x354b7f){logger['error'](_0x354b7f[_0xbbc8('0x16')]);if(_0x354b7f[_0xbbc8('0x17')]){delete _0x354b7f[_0xbbc8('0x17')];}_0x11f55d[_0xbbc8('0xb')](_0x1c4155)['send'](_0x354b7f);};}exports[_0xbbc8('0x18')]=function(_0x308b12,_0x2aebfa){var _0x11ae79={};var _0x5a3733=_[_0xbbc8('0x19')](db[_0xbbc8('0x1a')][_0xbbc8('0x1b')],function(_0x25f279){return{'name':_0x25f279[_0xbbc8('0x1c')],'type':_0x25f279['type']['key']};});_0x11ae79=qs['getOptions'](_0x5a3733,_0x308b12);return interaction[_0xbbc8('0x1d')](_0xbbc8('0x1e'),_0x308b12[_0xbbc8('0x1f')],_0x308b12[_0xbbc8('0x20')],_0x11ae79,_0x5a3733)[_0xbbc8('0x14')](respondWithFilteredResult(_0x2aebfa,_0x11ae79))['catch'](handleError(_0x2aebfa,null));};exports['show']=function(_0x253c71,_0x200ba3){var _0x5e35f2={'raw':![],'where':{'id':_0x253c71[_0xbbc8('0x21')]['id']}},_0x467136={};_0x467136[_0xbbc8('0x22')]=_[_0xbbc8('0x23')](db[_0xbbc8('0x1a')]['rawAttributes']);_0x467136['query']=_[_0xbbc8('0x23')](_0x253c71[_0xbbc8('0x1f')]);_0x467136[_0xbbc8('0x24')]=_[_0xbbc8('0x25')](_0x467136[_0xbbc8('0x22')],_0x467136[_0xbbc8('0x1f')]);_0x5e35f2[_0xbbc8('0x26')]=_[_0xbbc8('0x25')](_0x467136[_0xbbc8('0x22')],qs[_0xbbc8('0x27')](_0x253c71[_0xbbc8('0x1f')][_0xbbc8('0x27')]));_0x5e35f2[_0xbbc8('0x26')]=_0x5e35f2[_0xbbc8('0x26')][_0xbbc8('0x28')]?_0x5e35f2[_0xbbc8('0x26')]:_0x467136[_0xbbc8('0x22')];if(_0x253c71[_0xbbc8('0x1f')]['includeAll']){_0x5e35f2[_0xbbc8('0x29')]=[{'all':!![]}];}_0x5e35f2=_[_0xbbc8('0x2a')]({},_0x5e35f2,_0x253c71['options']);return db[_0xbbc8('0x1a')]['find'](_0x5e35f2)[_0xbbc8('0x14')](handleEntityNotFound(_0x200ba3,null))[_0xbbc8('0x14')](respondWithResult(_0x200ba3,null))[_0xbbc8('0x2b')](handleError(_0x200ba3,null));};exports['create']=function(_0x47a8a6,_0x314447){return db[_0xbbc8('0x1a')]['create'](_0x47a8a6[_0xbbc8('0x2c')],{})['then'](respondWithResult(_0x314447,0xc9))[_0xbbc8('0x2b')](handleError(_0x314447,null));};exports[_0xbbc8('0x12')]=function(_0x41d8b6,_0x16f7e3){if(_0x41d8b6[_0xbbc8('0x2c')]['id']){delete _0x41d8b6[_0xbbc8('0x2c')]['id'];}return db['FaxInteraction'][_0xbbc8('0x2d')]({'where':{'id':_0x41d8b6['params']['id']}})['then'](handleEntityNotFound(_0x16f7e3,null))[_0xbbc8('0x14')](saveUpdates(_0x41d8b6[_0xbbc8('0x2c')],null))[_0xbbc8('0x14')](respondWithResult(_0x16f7e3,null))[_0xbbc8('0x2b')](handleError(_0x16f7e3,null));};exports['destroy']=function(_0x10f94f,_0x30780b){return db[_0xbbc8('0x1a')]['find']({'where':{'id':_0x10f94f[_0xbbc8('0x21')]['id']}})[_0xbbc8('0x14')](handleEntityNotFound(_0x30780b,null))[_0xbbc8('0x14')](removeEntity(_0x30780b,null))['catch'](handleError(_0x30780b,null));};exports[_0xbbc8('0x2e')]=function(_0x111faf,_0x146ef1){return db['FaxInteraction'][_0xbbc8('0x2e')]()[_0xbbc8('0x14')](respondWithResult(_0x146ef1,null))[_0xbbc8('0x2b')](handleError(_0x146ef1,null));};exports['addMessage']=function(_0x2681fc,_0x42dbe7){return db[_0xbbc8('0x2f')]['find']({'where':{'id':_0x2681fc[_0xbbc8('0x21')]['id']}})[_0xbbc8('0x14')](handleEntityNotFound(_0x42dbe7,null))[_0xbbc8('0x14')](function(_0x20d51d){if(_0x20d51d){return _0x20d51d['addMessage'](_0x2681fc[_0xbbc8('0x2c')][_0xbbc8('0x30')],_[_0xbbc8('0x31')](_0x2681fc['body'],['ids','id'])||{});}})['then'](respondWithResult(_0x42dbe7,null))['catch'](handleError(_0x42dbe7,null));};exports['getMessages']=function(_0xb0332c,_0x1875c0){var _0x28b242={'raw':![],'where':{}};var _0x32893b={};var _0x25acce={'count':0x0,'rows':[]};return db[_0xbbc8('0x1a')][_0xbbc8('0x32')]({'where':{'id':_0xb0332c['params']['id']}})[_0xbbc8('0x14')](handleEntityNotFound(_0x1875c0,null))['then'](function(_0x321ea2){if(_0x321ea2){_0x32893b[_0xbbc8('0x22')]=_[_0xbbc8('0x23')](db[_0xbbc8('0x2f')][_0xbbc8('0x1b')]);_0x32893b[_0xbbc8('0x1f')]=_[_0xbbc8('0x23')](_0xb0332c[_0xbbc8('0x1f')]);_0x32893b[_0xbbc8('0x24')]=_[_0xbbc8('0x25')](_0x32893b[_0xbbc8('0x22')],_0x32893b[_0xbbc8('0x1f')]);_0x28b242[_0xbbc8('0x26')]=_['intersection'](_0x32893b['model'],qs[_0xbbc8('0x27')](_0xb0332c[_0xbbc8('0x1f')][_0xbbc8('0x27')]));_0x28b242[_0xbbc8('0x26')]=_0x28b242[_0xbbc8('0x26')]['length']?_0x28b242[_0xbbc8('0x26')]:_0x32893b[_0xbbc8('0x22')];if(!_0xb0332c[_0xbbc8('0x1f')]['hasOwnProperty'](_0xbbc8('0x33'))){_0x28b242[_0xbbc8('0xe')]=qs['limit'](_0xb0332c[_0xbbc8('0x1f')][_0xbbc8('0xe')]);_0x28b242[_0xbbc8('0xf')]=qs[_0xbbc8('0xf')](_0xb0332c[_0xbbc8('0x1f')][_0xbbc8('0xf')]);}_0x28b242['order']=qs['sort'](_0xb0332c['query'][_0xbbc8('0x34')]);_0x28b242[_0xbbc8('0x35')]=qs[_0xbbc8('0x24')](_['pick'](_0xb0332c[_0xbbc8('0x1f')],_0x32893b[_0xbbc8('0x24')]));_0x28b242[_0xbbc8('0x35')][_0xbbc8('0x36')]=_0x321ea2['id'];if(_0xb0332c[_0xbbc8('0x1f')][_0xbbc8('0x37')]){_0x28b242[_0xbbc8('0x35')]=_['merge'](_0x28b242[_0xbbc8('0x35')],{'$or':_[_0xbbc8('0x19')](_0x28b242['attributes'],function(_0x17dbfe){var _0x456210={};_0x456210[_0x17dbfe]={'$like':'%'+_0xb0332c[_0xbbc8('0x1f')][_0xbbc8('0x37')]+'%'};return _0x456210;})});}if(_0xb0332c[_0xbbc8('0x1f')][_0xbbc8('0x38')]){var _0x4ff023=_0xb0332c[_0xbbc8('0x1f')][_0xbbc8('0x38')]['split'](',');var _0x20794d={};_0x20794d[_0x4ff023[0x0]]={'$gte':moment(_0x4ff023[0x1])[_0xbbc8('0x39')](_0xbbc8('0x3a'))};_0x28b242['where']=_[_0xbbc8('0x2a')](_0x28b242['where'],_0x20794d);}_0x28b242=_[_0xbbc8('0x2a')]({},_0x28b242,_0xb0332c[_0xbbc8('0x3b')]);return db[_0xbbc8('0x2f')][_0xbbc8('0x3c')]({'where':_0x28b242[_0xbbc8('0x35')]})[_0xbbc8('0x14')](function(_0x74504a){_0x25acce[_0xbbc8('0x3c')]=_0x74504a;if(_0xb0332c[_0xbbc8('0x1f')][_0xbbc8('0x3d')]){_0x28b242[_0xbbc8('0x29')]=[{'all':!![]}];}return db['FaxMessage'][_0xbbc8('0x1d')](_0x28b242);})[_0xbbc8('0x14')](function(_0x5e4624){_0x25acce[_0xbbc8('0x3e')]=_0x5e4624;return _0x25acce;});}})[_0xbbc8('0x14')](respondWithFilteredResult(_0x1875c0,_0x28b242))[_0xbbc8('0x2b')](handleError(_0x1875c0,null));};exports['addTags']=function(_0x4cb5a7,_0x1d544e){return db[_0xbbc8('0x1a')]['find']({'where':{'id':_0x4cb5a7[_0xbbc8('0x21')]['id']}})[_0xbbc8('0x14')](handleEntityNotFound(_0x1d544e,null))[_0xbbc8('0x14')](function(_0x1db6b4){if(_0x1db6b4){return _0x1db6b4[_0xbbc8('0x3f')](_0x4cb5a7[_0xbbc8('0x2c')][_0xbbc8('0x30')],_['omit'](_0x4cb5a7['body'],[_0xbbc8('0x30'),'id'])||{})[_0xbbc8('0x40')](function(){return db[_0xbbc8('0x41')][_0xbbc8('0x1d')]({'attributes':['id','name',_0xbbc8('0x42')],'where':{'id':_0x4cb5a7['body'][_0xbbc8('0x30')]}});})[_0xbbc8('0x14')](function(_0xfb9c40){socket['emit'](_0xbbc8('0x43'),{'id':Number(_0x4cb5a7[_0xbbc8('0x21')]['id']),'tags':_0xfb9c40||[]});return{'id':Number(_0x4cb5a7[_0xbbc8('0x21')]['id']),'tags':_0xfb9c40||[]};});}})[_0xbbc8('0x14')](respondWithResult(_0x1d544e,null))[_0xbbc8('0x2b')](handleError(_0x1d544e,null));};exports[_0xbbc8('0x44')]=function(_0x5e84eb,_0x59d6b7){return db[_0xbbc8('0x1a')][_0xbbc8('0x2d')]({'where':{'id':_0x5e84eb[_0xbbc8('0x21')]['id']}})[_0xbbc8('0x14')](handleEntityNotFound(_0x59d6b7,null))[_0xbbc8('0x14')](function(_0x16aa38){if(_0x16aa38){return _0x16aa38[_0xbbc8('0x44')](_0x5e84eb[_0xbbc8('0x1f')][_0xbbc8('0x30')]);}})[_0xbbc8('0x14')](respondWithStatusCode(_0x59d6b7,null))[_0xbbc8('0x2b')](handleError(_0x59d6b7,null));};exports[_0xbbc8('0x45')]=function(_0x579601,_0x445a42){var _0x46a554=moment()[_0xbbc8('0x46')]()['toString']();var _0x174845=path[_0xbbc8('0x47')](config['root'],_0xbbc8('0x48'),_0xbbc8('0x49'),_0xbbc8('0x4a'));var _0x53335a=path[_0xbbc8('0x47')](config[_0xbbc8('0x4b')],_0xbbc8('0x48'),_0xbbc8('0x49'),_0xbbc8('0x4c'));var _0x28606b=path[_0xbbc8('0x47')](_0x174845,_0x46a554);var _0x103639=util['format'](_0xbbc8('0x4d'),_0x579601[_0xbbc8('0x21')]['id'],_0x46a554);var _0x1d1a12=path[_0xbbc8('0x47')](_0x174845,_0x103639);var _0x2ef71b=[];_0x2ef71b[_0xbbc8('0x4e')]({'model':db[_0xbbc8('0x4f')],'as':_0xbbc8('0x4f'),'raw':!![]});var _0x28ee1e=[{'model':db[_0xbbc8('0x2f')],'as':_0xbbc8('0x50'),'attributes':['id',_0xbbc8('0x2c'),'createdAt'],'include':_0x2ef71b}];return db[_0xbbc8('0x1a')][_0xbbc8('0x2d')]({'where':{'id':_0x579601[_0xbbc8('0x21')]['id']},'include':_0x28ee1e})['then'](handleEntityNotFound(_0x445a42,null))[_0xbbc8('0x14')](function(_0x576b86){if(_0x576b86&&_0x576b86[_0xbbc8('0x50')]){var _0x56fd41=_0x576b86[_0xbbc8('0x51')]({'plain':!![]});fs['mkdirSync'](_0x28606b);for(var _0x2a56ba=0x0;_0x2a56ba<_0x56fd41[_0xbbc8('0x50')][_0xbbc8('0x28')];_0x2a56ba++){var _0x474e45=_0x56fd41[_0xbbc8('0x50')][_0x2a56ba][_0xbbc8('0x4f')];if(_0x474e45){var _0x451dd3=path['join'](_0x53335a,_0x474e45['basename']);if(fs[_0xbbc8('0x52')](_0x451dd3)){fs[_0xbbc8('0x53')](_0x451dd3)[_0xbbc8('0x54')](fs[_0xbbc8('0x55')](path['join'](_0x28606b,_0x474e45[_0xbbc8('0x56')])));}}}return BPromise[_0xbbc8('0x57')]()[_0xbbc8('0x14')](function(){return new BPromise(function(_0x12df39,_0x105632){zipdir(_0x28606b,{'saveTo':_0x1d1a12},function(_0x255506,_0x176670){if(_0x255506)return _0x105632(_0x255506);return _0x12df39(_0x176670);});})[_0xbbc8('0x14')](function(){return new BPromise(function(_0x38bd1f,_0x21fa7b){rimraf(_0x28606b,function(_0x430ab9){if(_0x430ab9)_0x21fa7b(_0x430ab9);return _0x38bd1f();});});})['then'](function(){return _0x445a42['download'](_0x1d1a12,_0x103639,function(_0x5208d4){if(_0x5208d4){console[_0xbbc8('0x58')](_0xbbc8('0x59'),_0x5208d4);}else{fs[_0xbbc8('0x5a')](_0x1d1a12);}});});});}else{return _0x445a42[_0xbbc8('0x15')](0xc8);}})[_0xbbc8('0x2b')](handleError(_0x445a42,null));};
\ No newline at end of file
+var _0xb7a9=['stack','name','send','map','FaxInteraction','fieldName','type','key','findAll','fax','query','user','catch','show','params','model','intersection','attributes','fields','length','includeAll','include','merge','options','find','create','body','describe','addMessage','FaxMessage','ids','getMessages','findOne','keys','filters','hasOwnProperty','order','sort','pick','where','filter','$gte','split','format','rows','addTags','setTags','omit','spread','color','emit','faxInteractionTags:save','removeTags','download','toString','server','tmp','join','attachments','transcript-%d-%s.zip','push','Attachment','Messages','createdAt','get','basename','existsSync','createReadStream','pipe','createWriteStream','log','err','zip-dir','moment','bluebird','util','lodash','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','defaults','redis','localhost','./faxInteraction.socket','register','sendStatus','end','status','json','undefined','limit','count','offset','set','update','then','error'];(function(_0x2bbc07,_0x1e2168){var _0x6879e4=function(_0x290fa1){while(--_0x290fa1){_0x2bbc07['push'](_0x2bbc07['shift']());}};_0x6879e4(++_0x1e2168);}(_0xb7a9,0x110));var _0x9b7a=function(_0x38eeae,_0x325e53){_0x38eeae=_0x38eeae-0x0;var _0x176470=_0xb7a9[_0x38eeae];return _0x176470;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0x9b7a('0x0'));var moment=require(_0x9b7a('0x1'));var BPromise=require(_0x9b7a('0x2'));var util=require(_0x9b7a('0x3'));var path=require('path');var fs=require('fs');var _=require(_0x9b7a('0x4'));var Redis=require('ioredis');var interaction=require(_0x9b7a('0x5'));var qs=require(_0x9b7a('0x6'));var logger=require(_0x9b7a('0x7'))(_0x9b7a('0x8'));var config=require(_0x9b7a('0x9'));var db=require(_0x9b7a('0xa'))['db'];config['redis']=_[_0x9b7a('0xb')](config[_0x9b7a('0xc')],{'host':_0x9b7a('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x9b7a('0xe'))[_0x9b7a('0xf')](socket);function respondWithStatusCode(_0x4ef131,_0x5359f6){_0x5359f6=_0x5359f6||0xcc;return function(_0x31d3a1){if(_0x31d3a1){return _0x4ef131[_0x9b7a('0x10')](_0x5359f6);}return _0x4ef131['status'](_0x5359f6)[_0x9b7a('0x11')]();};}function respondWithResult(_0x1f910a,_0x3d1eb8){_0x3d1eb8=_0x3d1eb8||0xc8;return function(_0x3c53ab){if(_0x3c53ab){return _0x1f910a[_0x9b7a('0x12')](_0x3d1eb8)[_0x9b7a('0x13')](_0x3c53ab);}};}function respondWithFilteredResult(_0x571a88,_0x3e3f8a){return function(_0x4c6b20){if(_0x4c6b20){var _0xb3dea5=typeof _0x3e3f8a['offset']===_0x9b7a('0x14')&&typeof _0x3e3f8a[_0x9b7a('0x15')]===_0x9b7a('0x14');var _0x116503=_0x4c6b20[_0x9b7a('0x16')];var _0x597bcb=_0xb3dea5?0x0:_0x3e3f8a[_0x9b7a('0x17')];var _0xa05b0f=_0xb3dea5?_0x4c6b20[_0x9b7a('0x16')]:_0x3e3f8a[_0x9b7a('0x17')]+_0x3e3f8a[_0x9b7a('0x15')];var _0x30978c;if(_0xa05b0f>=_0x116503){_0xa05b0f=_0x116503;_0x30978c=0xc8;}else{_0x30978c=0xce;}_0x571a88['status'](_0x30978c);return _0x571a88[_0x9b7a('0x18')]('Content-Range',_0x597bcb+'-'+_0xa05b0f+'/'+_0x116503)[_0x9b7a('0x13')](_0x4c6b20);}return null;};}function saveUpdates(_0xdc6f15){return function(_0xd28c3a){if(_0xd28c3a){return _0xd28c3a[_0x9b7a('0x19')](_0xdc6f15)[_0x9b7a('0x1a')](function(_0x1baf23){return _0x1baf23;});}return null;};}function removeEntity(_0x23378a){return function(_0x3e4b8f){if(_0x3e4b8f){return _0x3e4b8f['destroy']()[_0x9b7a('0x1a')](function(){_0x23378a[_0x9b7a('0x12')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2f8a1d){return function(_0x2a089c){if(!_0x2a089c){_0x2f8a1d['sendStatus'](0x194);}return _0x2a089c;};}function handleError(_0x1c4b6c,_0x9e3413){_0x9e3413=_0x9e3413||0x1f4;return function(_0x5b311a){logger[_0x9b7a('0x1b')](_0x5b311a[_0x9b7a('0x1c')]);if(_0x5b311a['name']){delete _0x5b311a[_0x9b7a('0x1d')];}_0x1c4b6c[_0x9b7a('0x12')](_0x9e3413)[_0x9b7a('0x1e')](_0x5b311a);};}exports['index']=function(_0x2315b1,_0x515ba5){var _0x525d37={};var _0x1d9f85=_[_0x9b7a('0x1f')](db[_0x9b7a('0x20')]['rawAttributes'],function(_0x2c3eec){return{'name':_0x2c3eec[_0x9b7a('0x21')],'type':_0x2c3eec[_0x9b7a('0x22')][_0x9b7a('0x23')]};});_0x525d37=qs['getOptions'](_0x1d9f85,_0x2315b1);return interaction[_0x9b7a('0x24')](_0x9b7a('0x25'),_0x2315b1[_0x9b7a('0x26')],_0x2315b1[_0x9b7a('0x27')],_0x525d37,_0x1d9f85)[_0x9b7a('0x1a')](respondWithFilteredResult(_0x515ba5,_0x525d37))[_0x9b7a('0x28')](handleError(_0x515ba5,null));};exports[_0x9b7a('0x29')]=function(_0x1d9a30,_0x339d23){var _0x3ea09a={'raw':![],'where':{'id':_0x1d9a30[_0x9b7a('0x2a')]['id']}},_0x326140={};_0x326140[_0x9b7a('0x2b')]=_['keys'](db[_0x9b7a('0x20')]['rawAttributes']);_0x326140[_0x9b7a('0x26')]=_['keys'](_0x1d9a30['query']);_0x326140['filters']=_[_0x9b7a('0x2c')](_0x326140[_0x9b7a('0x2b')],_0x326140['query']);_0x3ea09a[_0x9b7a('0x2d')]=_[_0x9b7a('0x2c')](_0x326140['model'],qs[_0x9b7a('0x2e')](_0x1d9a30['query'][_0x9b7a('0x2e')]));_0x3ea09a[_0x9b7a('0x2d')]=_0x3ea09a[_0x9b7a('0x2d')][_0x9b7a('0x2f')]?_0x3ea09a[_0x9b7a('0x2d')]:_0x326140[_0x9b7a('0x2b')];if(_0x1d9a30[_0x9b7a('0x26')][_0x9b7a('0x30')]){_0x3ea09a[_0x9b7a('0x31')]=[{'all':!![]}];}_0x3ea09a=_[_0x9b7a('0x32')]({},_0x3ea09a,_0x1d9a30[_0x9b7a('0x33')]);return db[_0x9b7a('0x20')][_0x9b7a('0x34')](_0x3ea09a)[_0x9b7a('0x1a')](handleEntityNotFound(_0x339d23,null))['then'](respondWithResult(_0x339d23,null))[_0x9b7a('0x28')](handleError(_0x339d23,null));};exports[_0x9b7a('0x35')]=function(_0x256c14,_0x204c91){return db['FaxInteraction'][_0x9b7a('0x35')](_0x256c14[_0x9b7a('0x36')],{})[_0x9b7a('0x1a')](respondWithResult(_0x204c91,0xc9))[_0x9b7a('0x28')](handleError(_0x204c91,null));};exports[_0x9b7a('0x19')]=function(_0x56325c,_0x4465b9){if(_0x56325c[_0x9b7a('0x36')]['id']){delete _0x56325c[_0x9b7a('0x36')]['id'];}return db[_0x9b7a('0x20')][_0x9b7a('0x34')]({'where':{'id':_0x56325c[_0x9b7a('0x2a')]['id']}})[_0x9b7a('0x1a')](handleEntityNotFound(_0x4465b9,null))[_0x9b7a('0x1a')](saveUpdates(_0x56325c[_0x9b7a('0x36')],null))[_0x9b7a('0x1a')](respondWithResult(_0x4465b9,null))[_0x9b7a('0x28')](handleError(_0x4465b9,null));};exports['destroy']=function(_0x2c972b,_0x5de357){return db['FaxInteraction']['find']({'where':{'id':_0x2c972b['params']['id']}})['then'](handleEntityNotFound(_0x5de357,null))['then'](removeEntity(_0x5de357,null))['catch'](handleError(_0x5de357,null));};exports['describe']=function(_0x3f5ba7,_0x2a8996){return db[_0x9b7a('0x20')][_0x9b7a('0x37')]()['then'](respondWithResult(_0x2a8996,null))[_0x9b7a('0x28')](handleError(_0x2a8996,null));};exports[_0x9b7a('0x38')]=function(_0x332b0e,_0x39077f){return db[_0x9b7a('0x39')][_0x9b7a('0x34')]({'where':{'id':_0x332b0e[_0x9b7a('0x2a')]['id']}})['then'](handleEntityNotFound(_0x39077f,null))[_0x9b7a('0x1a')](function(_0x3a0c30){if(_0x3a0c30){return _0x3a0c30[_0x9b7a('0x38')](_0x332b0e[_0x9b7a('0x36')]['ids'],_['omit'](_0x332b0e[_0x9b7a('0x36')],[_0x9b7a('0x3a'),'id'])||{});}})[_0x9b7a('0x1a')](respondWithResult(_0x39077f,null))[_0x9b7a('0x28')](handleError(_0x39077f,null));};exports[_0x9b7a('0x3b')]=function(_0x13e836,_0x26ac77){var _0x48f645={'raw':![],'where':{}};var _0x21b87b={};var _0x397fde={'count':0x0,'rows':[]};return db['FaxInteraction'][_0x9b7a('0x3c')]({'where':{'id':_0x13e836[_0x9b7a('0x2a')]['id']}})[_0x9b7a('0x1a')](handleEntityNotFound(_0x26ac77,null))[_0x9b7a('0x1a')](function(_0x306e68){if(_0x306e68){_0x21b87b['model']=_[_0x9b7a('0x3d')](db[_0x9b7a('0x39')]['rawAttributes']);_0x21b87b['query']=_[_0x9b7a('0x3d')](_0x13e836['query']);_0x21b87b[_0x9b7a('0x3e')]=_[_0x9b7a('0x2c')](_0x21b87b[_0x9b7a('0x2b')],_0x21b87b[_0x9b7a('0x26')]);_0x48f645[_0x9b7a('0x2d')]=_['intersection'](_0x21b87b['model'],qs[_0x9b7a('0x2e')](_0x13e836[_0x9b7a('0x26')][_0x9b7a('0x2e')]));_0x48f645['attributes']=_0x48f645[_0x9b7a('0x2d')][_0x9b7a('0x2f')]?_0x48f645[_0x9b7a('0x2d')]:_0x21b87b['model'];if(!_0x13e836[_0x9b7a('0x26')][_0x9b7a('0x3f')]('nolimit')){_0x48f645[_0x9b7a('0x15')]=qs[_0x9b7a('0x15')](_0x13e836['query'][_0x9b7a('0x15')]);_0x48f645[_0x9b7a('0x17')]=qs[_0x9b7a('0x17')](_0x13e836['query'][_0x9b7a('0x17')]);}_0x48f645[_0x9b7a('0x40')]=qs[_0x9b7a('0x41')](_0x13e836['query'][_0x9b7a('0x41')]);_0x48f645['where']=qs[_0x9b7a('0x3e')](_[_0x9b7a('0x42')](_0x13e836[_0x9b7a('0x26')],_0x21b87b[_0x9b7a('0x3e')]));_0x48f645[_0x9b7a('0x43')]['FaxInteractionId']=_0x306e68['id'];if(_0x13e836[_0x9b7a('0x26')][_0x9b7a('0x44')]){_0x48f645[_0x9b7a('0x43')]=_[_0x9b7a('0x32')](_0x48f645[_0x9b7a('0x43')],{'$or':_[_0x9b7a('0x1f')](_0x48f645[_0x9b7a('0x2d')],function(_0x2e8e58){var _0x54f77a={};_0x54f77a[_0x2e8e58]={'$like':'%'+_0x13e836[_0x9b7a('0x26')][_0x9b7a('0x44')]+'%'};return _0x54f77a;})});}if(_0x13e836[_0x9b7a('0x26')][_0x9b7a('0x45')]){var _0x4092ac=_0x13e836['query'][_0x9b7a('0x45')][_0x9b7a('0x46')](',');var _0x160d6f={};_0x160d6f[_0x4092ac[0x0]]={'$gte':moment(_0x4092ac[0x1])[_0x9b7a('0x47')]('YYYY-MM-DD\x20HH:mm:ss')};_0x48f645[_0x9b7a('0x43')]=_[_0x9b7a('0x32')](_0x48f645[_0x9b7a('0x43')],_0x160d6f);}_0x48f645=_['merge']({},_0x48f645,_0x13e836[_0x9b7a('0x33')]);return db[_0x9b7a('0x39')][_0x9b7a('0x16')]({'where':_0x48f645[_0x9b7a('0x43')]})[_0x9b7a('0x1a')](function(_0x49b7d2){_0x397fde[_0x9b7a('0x16')]=_0x49b7d2;if(_0x13e836[_0x9b7a('0x26')][_0x9b7a('0x30')]){_0x48f645[_0x9b7a('0x31')]=[{'all':!![]}];}return db[_0x9b7a('0x39')][_0x9b7a('0x24')](_0x48f645);})[_0x9b7a('0x1a')](function(_0x3c084c){_0x397fde[_0x9b7a('0x48')]=_0x3c084c;return _0x397fde;});}})[_0x9b7a('0x1a')](respondWithFilteredResult(_0x26ac77,_0x48f645))[_0x9b7a('0x28')](handleError(_0x26ac77,null));};exports[_0x9b7a('0x49')]=function(_0x55d13d,_0x3f0d19){return db[_0x9b7a('0x20')][_0x9b7a('0x34')]({'where':{'id':_0x55d13d[_0x9b7a('0x2a')]['id']}})['then'](handleEntityNotFound(_0x3f0d19,null))[_0x9b7a('0x1a')](function(_0xfb4fcd){if(_0xfb4fcd){return _0xfb4fcd[_0x9b7a('0x4a')](_0x55d13d[_0x9b7a('0x36')][_0x9b7a('0x3a')],_[_0x9b7a('0x4b')](_0x55d13d[_0x9b7a('0x36')],[_0x9b7a('0x3a'),'id'])||{})[_0x9b7a('0x4c')](function(){return db['Tag'][_0x9b7a('0x24')]({'attributes':['id','name',_0x9b7a('0x4d')],'where':{'id':_0x55d13d[_0x9b7a('0x36')]['ids']}});})[_0x9b7a('0x1a')](function(_0x21a6c7){socket[_0x9b7a('0x4e')](_0x9b7a('0x4f'),{'id':Number(_0x55d13d['params']['id']),'tags':_0x21a6c7||[]});return{'id':Number(_0x55d13d[_0x9b7a('0x2a')]['id']),'tags':_0x21a6c7||[]};});}})[_0x9b7a('0x1a')](respondWithResult(_0x3f0d19,null))['catch'](handleError(_0x3f0d19,null));};exports[_0x9b7a('0x50')]=function(_0x5958c7,_0x461d55){return db[_0x9b7a('0x20')][_0x9b7a('0x34')]({'where':{'id':_0x5958c7[_0x9b7a('0x2a')]['id']}})[_0x9b7a('0x1a')](handleEntityNotFound(_0x461d55,null))[_0x9b7a('0x1a')](function(_0x10e91f){if(_0x10e91f){return _0x10e91f['removeTags'](_0x5958c7[_0x9b7a('0x26')][_0x9b7a('0x3a')]);}})['then'](respondWithStatusCode(_0x461d55,null))[_0x9b7a('0x28')](handleError(_0x461d55,null));};exports[_0x9b7a('0x51')]=function(_0x1e0f5e,_0x4490cb){var _0x96cdce=moment()['unix']()[_0x9b7a('0x52')]();var _0x4e9f17=path['join'](config['root'],_0x9b7a('0x53'),'files',_0x9b7a('0x54'));var _0xac77b4=path[_0x9b7a('0x55')](config['root'],'server','files',_0x9b7a('0x56'));var _0x2bc9a9=path[_0x9b7a('0x55')](_0x4e9f17,_0x96cdce);var _0x53a586=util[_0x9b7a('0x47')](_0x9b7a('0x57'),_0x1e0f5e['params']['id'],_0x96cdce);var _0x4860aa=path[_0x9b7a('0x55')](_0x4e9f17,_0x53a586);var _0x4f2c0f=[];_0x4f2c0f[_0x9b7a('0x58')]({'model':db[_0x9b7a('0x59')],'as':'Attachment','raw':!![]});var _0x12d27e=[{'model':db['FaxMessage'],'as':_0x9b7a('0x5a'),'attributes':['id',_0x9b7a('0x36'),_0x9b7a('0x5b')],'include':_0x4f2c0f}];return db[_0x9b7a('0x20')][_0x9b7a('0x34')]({'where':{'id':_0x1e0f5e[_0x9b7a('0x2a')]['id']},'include':_0x12d27e})['then'](handleEntityNotFound(_0x4490cb,null))[_0x9b7a('0x1a')](function(_0x33a08f){if(_0x33a08f&&_0x33a08f[_0x9b7a('0x5a')]){var _0x41c472=_0x33a08f[_0x9b7a('0x5c')]({'plain':!![]});fs['mkdirSync'](_0x2bc9a9);for(var _0x53a5c4=0x0;_0x53a5c4<_0x41c472['Messages'][_0x9b7a('0x2f')];_0x53a5c4++){var _0x1be1b2=_0x41c472[_0x9b7a('0x5a')][_0x53a5c4][_0x9b7a('0x59')];if(_0x1be1b2){var _0x4d4b35=path['join'](_0xac77b4,_0x1be1b2[_0x9b7a('0x5d')]);if(fs[_0x9b7a('0x5e')](_0x4d4b35)){fs[_0x9b7a('0x5f')](_0x4d4b35)[_0x9b7a('0x60')](fs[_0x9b7a('0x61')](path['join'](_0x2bc9a9,_0x1be1b2[_0x9b7a('0x5d')])));}}}return BPromise['resolve']()[_0x9b7a('0x1a')](function(){return new BPromise(function(_0x155957,_0x20fb5a){zipdir(_0x2bc9a9,{'saveTo':_0x4860aa},function(_0x2e9f80,_0x3d34cc){if(_0x2e9f80)return _0x20fb5a(_0x2e9f80);return _0x155957(_0x3d34cc);});})[_0x9b7a('0x1a')](function(){return new BPromise(function(_0x559872,_0x20e426){rimraf(_0x2bc9a9,function(_0x1c840b){if(_0x1c840b)_0x20e426(_0x1c840b);return _0x559872();});});})[_0x9b7a('0x1a')](function(){return _0x4490cb[_0x9b7a('0x51')](_0x4860aa,_0x53a586,function(_0x1b7da5){if(_0x1b7da5){console[_0x9b7a('0x62')](_0x9b7a('0x63'),_0x1b7da5);}else{fs['unlinkSync'](_0x4860aa);}});});});}else{return _0x4490cb['sendStatus'](0xc8);}})['catch'](handleError(_0x4490cb,null));};
\ No newline at end of file
index 47c954e..0a59fed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5394=['hook','exports','events','../../mysqldb','setMaxListeners','save','remove','getUsers','then','setDataValue','Users','map','findAll','unreadMessages','emit','catch','hasOwnProperty'];(function(_0x19a219,_0x52ce2e){var _0x49d1cc=function(_0x17a6de){while(--_0x17a6de){_0x19a219['push'](_0x19a219['shift']());}};_0x49d1cc(++_0x52ce2e);}(_0x5394,0x123));var _0x4539=function(_0x5377a1,_0x22e1e4){_0x5377a1=_0x5377a1-0x0;var _0x45ff6f=_0x5394[_0x5377a1];return _0x45ff6f;};'use strict';var EventEmitter=require(_0x4539('0x0'));var FaxInteraction=require('../../mysqldb')['db']['FaxInteraction'];var FaxMessage=require(_0x4539('0x1'))['db']['FaxMessage'];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0x4539('0x2')](0x0);var events={'afterCreate':_0x4539('0x3'),'afterUpdate':'update','afterDestroy':_0x4539('0x4')};function emitEvent(_0x3a8bdf){return function(_0x4da846,_0x4a4904,_0x5bd143){_0x4da846[_0x4539('0x5')]({'attributes':['id'],'raw':!![]})[_0x4539('0x6')](function(_0x2962bd){_0x4da846[_0x4539('0x7')](_0x4539('0x8'),_0x2962bd[_0x4539('0x9')](function(_0x7bff7c){return{'id':_0x7bff7c['id']};}));return FaxMessage[_0x4539('0xa')]({'where':{'FaxInteractionId':_0x4da846['id'],'direction':'in','read':![]},'raw':!![]});})[_0x4539('0x6')](function(_0x24c485){_0x4da846['setDataValue'](_0x4539('0xb'),_0x24c485['length']);FaxInteractionEvents[_0x4539('0xc')](_0x3a8bdf+':'+_0x4da846['id'],_0x4da846);FaxInteractionEvents[_0x4539('0xc')](_0x3a8bdf,_0x4da846);_0x5bd143(null);})[_0x4539('0xd')](_0x5bd143(null));};}for(var e in events){if(events[_0x4539('0xe')](e)){var event=events[e];FaxInteraction[_0x4539('0xf')](e,emitEvent(event));}}module[_0x4539('0x10')]=FaxInteractionEvents;
\ No newline at end of file
+var _0x048c=['setDataValue','Users','map','findAll','length','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','FaxMessage','setMaxListeners','save','remove','getUsers','then'];(function(_0x35e002,_0x17a5b0){var _0x35b4dc=function(_0xfb17c2){while(--_0xfb17c2){_0x35e002['push'](_0x35e002['shift']());}};_0x35b4dc(++_0x17a5b0);}(_0x048c,0x196));var _0xc048=function(_0x2916d0,_0x2d8d80){_0x2916d0=_0x2916d0-0x0;var _0x407996=_0x048c[_0x2916d0];return _0x407996;};'use strict';var EventEmitter=require(_0xc048('0x0'));var FaxInteraction=require(_0xc048('0x1'))['db']['FaxInteraction'];var FaxMessage=require('../../mysqldb')['db'][_0xc048('0x2')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0xc048('0x3')](0x0);var events={'afterCreate':_0xc048('0x4'),'afterUpdate':'update','afterDestroy':_0xc048('0x5')};function emitEvent(_0x3dfcfe){return function(_0x36eaeb,_0xd701c0,_0x2037c7){_0x36eaeb[_0xc048('0x6')]({'attributes':['id'],'raw':!![]})[_0xc048('0x7')](function(_0x23d27f){_0x36eaeb[_0xc048('0x8')](_0xc048('0x9'),_0x23d27f[_0xc048('0xa')](function(_0x47618e){return{'id':_0x47618e['id']};}));return FaxMessage[_0xc048('0xb')]({'where':{'FaxInteractionId':_0x36eaeb['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x57e642){_0x36eaeb[_0xc048('0x8')]('unreadMessages',_0x57e642[_0xc048('0xc')]);FaxInteractionEvents[_0xc048('0xd')](_0x3dfcfe+':'+_0x36eaeb['id'],_0x36eaeb);FaxInteractionEvents[_0xc048('0xd')](_0x3dfcfe,_0x36eaeb);_0x2037c7(null);})[_0xc048('0xe')](_0x2037c7(null));};}for(var e in events){if(events[_0xc048('0xf')](e)){var event=events[e];FaxInteraction[_0xc048('0x10')](e,emitEvent(event));}}module[_0xc048('0x11')]=FaxInteractionEvents;
\ No newline at end of file
index 927b3e8..ecd60d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5733=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./faxInteraction.attributes','define','FaxInteraction','fax_interactions','changed','closed','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util'];(function(_0x1bcbe4,_0x1e4979){var _0x284e17=function(_0x44f8d9){while(--_0x44f8d9){_0x1bcbe4['push'](_0x1bcbe4['shift']());}};_0x284e17(++_0x1e4979);}(_0x5733,0x163));var _0x3573=function(_0xc8287e,_0x12bc7c){_0xc8287e=_0xc8287e-0x0;var _0x407401=_0x5733[_0xc8287e];return _0x407401;};'use strict';var _=require(_0x3573('0x0'));var util=require(_0x3573('0x1'));var logger=require(_0x3573('0x2'))(_0x3573('0x3'));var moment=require(_0x3573('0x4'));var BPromise=require(_0x3573('0x5'));var rp=require(_0x3573('0x6'));var fs=require('fs');var path=require(_0x3573('0x7'));var rimraf=require(_0x3573('0x8'));var config=require('../../config/environment');var attributes=require(_0x3573('0x9'));module['exports']=function(_0x53a030,_0x37f9c4){return _0x53a030[_0x3573('0xa')](_0x3573('0xb'),attributes,{'tableName':_0x3573('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x1f11e9,_0x176f66,_0x15fa83){if(_0x1f11e9[_0x3573('0xd')](_0x3573('0xe'))){_0x1f11e9['closedAt']=moment()[_0x3573('0xf')](_0x3573('0x10'));}_0x15fa83(null,_0x1f11e9);}}});};
\ No newline at end of file
+var _0xe81d=['request-promise','path','../../config/environment','./faxInteraction.attributes','define','FaxInteraction','fax_interactions','changed','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','bluebird'];(function(_0x6c993a,_0x5ea3ab){var _0x27f547=function(_0x22df20){while(--_0x22df20){_0x6c993a['push'](_0x6c993a['shift']());}};_0x27f547(++_0x5ea3ab);}(_0xe81d,0x142));var _0xde81=function(_0x3b7067,_0x227827){_0x3b7067=_0x3b7067-0x0;var _0x4ff8b8=_0xe81d[_0x3b7067];return _0x4ff8b8;};'use strict';var _=require(_0xde81('0x0'));var util=require(_0xde81('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xde81('0x2'));var rp=require(_0xde81('0x3'));var fs=require('fs');var path=require(_0xde81('0x4'));var rimraf=require('rimraf');var config=require(_0xde81('0x5'));var attributes=require(_0xde81('0x6'));module['exports']=function(_0x527c0d,_0x108d7c){return _0x527c0d[_0xde81('0x7')](_0xde81('0x8'),attributes,{'tableName':_0xde81('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x22a97c,_0x3cc2a9,_0x56d621){if(_0x22a97c[_0xde81('0xa')]('closed')){_0x22a97c['closedAt']=moment()[_0xde81('0xb')](_0xde81('0xc'));}_0x56d621(null,_0x22a97c);}}});};
\ No newline at end of file
index 4caed42..4eead9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc14b=['../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./faxInteraction.socket','register','request','info','FaxInteraction,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','FaxInteraction','update','options','raw','where','attributes','then','UpdateFaxInteraction','debug','AddTagsToFaxInteraction','find','ids','omit','body','spread','AddTags','lodash','util','bluebird','randomstring','ioredis','../../config/utils'];(function(_0xd05aa0,_0x5e861f){var _0x27fc17=function(_0x3f47a3){while(--_0x3f47a3){_0xd05aa0['push'](_0xd05aa0['shift']());}};_0x27fc17(++_0x5e861f);}(_0xc14b,0x119));var _0xbc14=function(_0x4b8156,_0x437af2){_0x4b8156=_0x4b8156-0x0;var _0x4a819c=_0xc14b[_0x4b8156];return _0x4a819c;};'use strict';var _=require(_0xbc14('0x0'));var util=require(_0xbc14('0x1'));var moment=require('moment');var BPromise=require(_0xbc14('0x2'));var rs=require(_0xbc14('0x3'));var fs=require('fs');var Redis=require(_0xbc14('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xbc14('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0xbc14('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xbc14('0x7')][_0xbc14('0x8')]({'port':0x232a});config[_0xbc14('0x9')]=_[_0xbc14('0xa')](config['redis'],{'host':_0xbc14('0xb'),'port':0x18eb});var socket=require(_0xbc14('0xc'))(new Redis(config[_0xbc14('0x9')]));require(_0xbc14('0xd'))[_0xbc14('0xe')](socket);function respondWithRpcPromise(_0x26fffd,_0x5ebcf9,_0x231705){return new BPromise(function(_0x14fbce,_0x6fd24){return client[_0xbc14('0xf')](_0x26fffd,_0x231705)['then'](function(_0x38934b){logger[_0xbc14('0x10')](_0xbc14('0x11'),_0x5ebcf9,_0xbc14('0x12'));logger['debug']('FaxInteraction,\x20%s,\x20%s,\x20%s',_0x5ebcf9,_0xbc14('0x12'),JSON[_0xbc14('0x13')](_0x38934b));if(_0x38934b[_0xbc14('0x14')]){if(_0x38934b['error'][_0xbc14('0x15')]===0x1f4){logger['error'](_0xbc14('0x11'),_0x5ebcf9,_0x38934b[_0xbc14('0x14')][_0xbc14('0x16')]);return _0x6fd24(_0x38934b[_0xbc14('0x14')][_0xbc14('0x16')]);}logger[_0xbc14('0x14')](_0xbc14('0x11'),_0x5ebcf9,_0x38934b[_0xbc14('0x14')][_0xbc14('0x16')]);return _0x14fbce(_0x38934b[_0xbc14('0x14')][_0xbc14('0x16')]);}else{logger[_0xbc14('0x10')](_0xbc14('0x11'),_0x5ebcf9,_0xbc14('0x12'));_0x14fbce(_0x38934b[_0xbc14('0x17')][_0xbc14('0x16')]);}})[_0xbc14('0x18')](function(_0x1ba8c4){logger['error']('FaxInteraction,\x20%s,\x20%s',_0x5ebcf9,_0x1ba8c4);_0x6fd24(_0x1ba8c4);});});}exports['UpdateFaxInteraction']=function(_0x4b9700){var _0x14ca7b=this;return new Promise(function(_0x1912ff,_0x20356e){return db[_0xbc14('0x19')][_0xbc14('0x1a')](_0x4b9700['body'],{'raw':_0x4b9700[_0xbc14('0x1b')]?_0x4b9700[_0xbc14('0x1b')][_0xbc14('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4b9700['options']?_0x4b9700[_0xbc14('0x1b')][_0xbc14('0x1d')]||null:null,'attributes':_0x4b9700[_0xbc14('0x1b')]?_0x4b9700[_0xbc14('0x1b')][_0xbc14('0x1e')]||null:null,'limit':_0x4b9700['options']?_0x4b9700[_0xbc14('0x1b')]['limit']||null:null})[_0xbc14('0x1f')](function(_0x1c1c4a){logger[_0xbc14('0x10')](_0xbc14('0x20'),_0x4b9700);logger[_0xbc14('0x21')](_0xbc14('0x20'),_0x4b9700,JSON[_0xbc14('0x13')](_0x1c1c4a));_0x1912ff(_0x1c1c4a);})['catch'](function(_0x5b0d60){logger[_0xbc14('0x14')](_0xbc14('0x20'),_0x5b0d60['message'],_0x4b9700);_0x20356e(_0x14ca7b[_0xbc14('0x14')](0x1f4,_0x5b0d60[_0xbc14('0x16')]));});});};exports[_0xbc14('0x22')]=function(_0x4669d7){return new Promise(function(_0x54587c,_0x3479de){return db[_0xbc14('0x19')][_0xbc14('0x23')]({'where':_0x4669d7[_0xbc14('0x1b')]?_0x4669d7[_0xbc14('0x1b')]['where']||null:null})['then'](function(_0xd986fb){if(_0xd986fb){return _0xd986fb['addTags'](_0x4669d7['body'][_0xbc14('0x24')],_[_0xbc14('0x25')](_0x4669d7[_0xbc14('0x26')],[_0xbc14('0x24'),'id'])||{});}})[_0xbc14('0x27')](function(_0x216d8d){logger[_0xbc14('0x10')](_0xbc14('0x28'),_0x4669d7);logger['debug']('AddTags',_0x4669d7,JSON['stringify'](_0x216d8d));_0x54587c(_0x216d8d);})[_0xbc14('0x18')](function(_0x52c275){logger[_0xbc14('0x14')](_0xbc14('0x28'),_0x52c275[_0xbc14('0x16')],_0x4669d7);_0x3479de(_this[_0xbc14('0x14')](0x1f4,_0x52c275[_0xbc14('0x16')]));});});};
\ No newline at end of file
+var _0xf5e6=['limit','info','UpdateFaxInteraction','addTags','ids','omit','spread','AddTags','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','localhost','socket.io-emitter','./faxInteraction.socket','register','then','FaxInteraction,\x20%s,\x20%s','request\x20sent','debug','FaxInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','FaxInteraction','update','body','options','raw','where','attributes'];(function(_0xe5d902,_0x36676d){var _0x5f0d18=function(_0x422faa){while(--_0x422faa){_0xe5d902['push'](_0xe5d902['shift']());}};_0x5f0d18(++_0x36676d);}(_0xf5e6,0x17a));var _0x6f5e=function(_0x3a540d,_0x1efc8b){_0x3a540d=_0x3a540d-0x0;var _0x369c74=_0xf5e6[_0x3a540d];return _0x369c74;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x6f5e('0x0'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x6f5e('0x1'));var logger=require(_0x6f5e('0x2'))(_0x6f5e('0x3'));var config=require(_0x6f5e('0x4'));var jayson=require(_0x6f5e('0x5'));var client=jayson['client'][_0x6f5e('0x6')]({'port':0x232a});config[_0x6f5e('0x7')]=_['defaults'](config[_0x6f5e('0x7')],{'host':_0x6f5e('0x8'),'port':0x18eb});var socket=require(_0x6f5e('0x9'))(new Redis(config[_0x6f5e('0x7')]));require(_0x6f5e('0xa'))[_0x6f5e('0xb')](socket);function respondWithRpcPromise(_0x401ecf,_0x6e8d8d,_0x1cffd5){return new BPromise(function(_0x55d9ae,_0x1b2922){return client['request'](_0x401ecf,_0x1cffd5)[_0x6f5e('0xc')](function(_0x2c5750){logger['info'](_0x6f5e('0xd'),_0x6e8d8d,_0x6f5e('0xe'));logger[_0x6f5e('0xf')](_0x6f5e('0x10'),_0x6e8d8d,_0x6f5e('0xe'),JSON[_0x6f5e('0x11')](_0x2c5750));if(_0x2c5750[_0x6f5e('0x12')]){if(_0x2c5750['error'][_0x6f5e('0x13')]===0x1f4){logger['error'](_0x6f5e('0xd'),_0x6e8d8d,_0x2c5750[_0x6f5e('0x12')][_0x6f5e('0x14')]);return _0x1b2922(_0x2c5750['error']['message']);}logger['error'](_0x6f5e('0xd'),_0x6e8d8d,_0x2c5750['error']['message']);return _0x55d9ae(_0x2c5750[_0x6f5e('0x12')][_0x6f5e('0x14')]);}else{logger['info'](_0x6f5e('0xd'),_0x6e8d8d,_0x6f5e('0xe'));_0x55d9ae(_0x2c5750['result']['message']);}})[_0x6f5e('0x15')](function(_0x7f8f64){logger[_0x6f5e('0x12')](_0x6f5e('0xd'),_0x6e8d8d,_0x7f8f64);_0x1b2922(_0x7f8f64);});});}exports['UpdateFaxInteraction']=function(_0x472a9d){var _0xff38fc=this;return new Promise(function(_0x4516c2,_0x136ca6){return db[_0x6f5e('0x16')][_0x6f5e('0x17')](_0x472a9d[_0x6f5e('0x18')],{'raw':_0x472a9d['options']?_0x472a9d[_0x6f5e('0x19')][_0x6f5e('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x472a9d['options']?_0x472a9d[_0x6f5e('0x19')][_0x6f5e('0x1b')]||null:null,'attributes':_0x472a9d[_0x6f5e('0x19')]?_0x472a9d[_0x6f5e('0x19')][_0x6f5e('0x1c')]||null:null,'limit':_0x472a9d[_0x6f5e('0x19')]?_0x472a9d[_0x6f5e('0x19')][_0x6f5e('0x1d')]||null:null})[_0x6f5e('0xc')](function(_0x1b5247){logger[_0x6f5e('0x1e')](_0x6f5e('0x1f'),_0x472a9d);logger[_0x6f5e('0xf')](_0x6f5e('0x1f'),_0x472a9d,JSON['stringify'](_0x1b5247));_0x4516c2(_0x1b5247);})['catch'](function(_0x487f99){logger[_0x6f5e('0x12')](_0x6f5e('0x1f'),_0x487f99['message'],_0x472a9d);_0x136ca6(_0xff38fc[_0x6f5e('0x12')](0x1f4,_0x487f99[_0x6f5e('0x14')]));});});};exports['AddTagsToFaxInteraction']=function(_0x1cc2d6){return new Promise(function(_0x5b27cb,_0x3f2cd6){return db['FaxInteraction']['find']({'where':_0x1cc2d6['options']?_0x1cc2d6['options']['where']||null:null})[_0x6f5e('0xc')](function(_0x354bf2){if(_0x354bf2){return _0x354bf2[_0x6f5e('0x20')](_0x1cc2d6[_0x6f5e('0x18')][_0x6f5e('0x21')],_[_0x6f5e('0x22')](_0x1cc2d6['body'],[_0x6f5e('0x21'),'id'])||{});}})[_0x6f5e('0x23')](function(_0x42143c){logger[_0x6f5e('0x1e')](_0x6f5e('0x24'),_0x1cc2d6);logger[_0x6f5e('0xf')](_0x6f5e('0x24'),_0x1cc2d6,JSON[_0x6f5e('0x11')](_0x42143c));_0x5b27cb(_0x42143c);})[_0x6f5e('0x15')](function(_0x2bc957){logger['error'](_0x6f5e('0x24'),_0x2bc957[_0x6f5e('0x14')],_0x1cc2d6);_0x3f2cd6(_this['error'](0x1f4,_0x2bc957[_0x6f5e('0x14')]));});});};
\ No newline at end of file
index 56fd704..818cf8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bad=['remove','emit','register','length','./faxInteraction.events','save'];(function(_0x54377f,_0x32834f){var _0x2a773d=function(_0x5e055d){while(--_0x5e055d){_0x54377f['push'](_0x54377f['shift']());}};_0x2a773d(++_0x32834f);}(_0x0bad,0x15a));var _0xd0ba=function(_0x107489,_0x33e1c7){_0x107489=_0x107489-0x0;var _0x437600=_0x0bad[_0x107489];return _0x437600;};'use strict';var FaxInteractionEvents=require(_0xd0ba('0x0'));var events=[_0xd0ba('0x1'),_0xd0ba('0x2'),'update'];function createListener(_0x20aa17,_0x105fc0){return function(_0x4aa7fd){_0x105fc0[_0xd0ba('0x3')](_0x20aa17,_0x4aa7fd);};}function removeListener(_0x42dd13,_0xaf7762){return function(){FaxInteractionEvents['removeListener'](_0x42dd13,_0xaf7762);};}exports[_0xd0ba('0x4')]=function(_0x54d307){for(var _0x549586=0x0,_0x7abbe4=events[_0xd0ba('0x5')];_0x549586<_0x7abbe4;_0x549586++){var _0x1f3c8f=events[_0x549586];var _0x2ac84f=createListener('faxInteraction:'+_0x1f3c8f,_0x54d307);FaxInteractionEvents['on'](_0x1f3c8f,_0x2ac84f);}};
\ No newline at end of file
+var _0x18da=['length','faxInteraction:','./faxInteraction.events','save','remove','update','removeListener','register'];(function(_0xb31ff3,_0x28aee8){var _0x569a70=function(_0x502b8c){while(--_0x502b8c){_0xb31ff3['push'](_0xb31ff3['shift']());}};_0x569a70(++_0x28aee8);}(_0x18da,0x15a));var _0xa18d=function(_0x8a45d,_0x210fd3){_0x8a45d=_0x8a45d-0x0;var _0x1f9483=_0x18da[_0x8a45d];return _0x1f9483;};'use strict';var FaxInteractionEvents=require(_0xa18d('0x0'));var events=[_0xa18d('0x1'),_0xa18d('0x2'),_0xa18d('0x3')];function createListener(_0x310cc6,_0x3d77f8){return function(_0x326efc){_0x3d77f8['emit'](_0x310cc6,_0x326efc);};}function removeListener(_0x50af7a,_0x10a054){return function(){FaxInteractionEvents[_0xa18d('0x4')](_0x50af7a,_0x10a054);};}exports[_0xa18d('0x5')]=function(_0x459412){for(var _0xaf906c=0x0,_0x1503d3=events[_0xa18d('0x6')];_0xaf906c<_0x1503d3;_0xaf906c++){var _0x3d5f86=events[_0xaf906c];var _0xa19a23=createListener(_0xa18d('0x7')+_0x3d5f86,_0x459412);FaxInteractionEvents['on'](_0x3d5f86,_0xa19a23);}};
\ No newline at end of file
index ba1c656..57c816e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d23=['multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','index','/describe','isAuthenticated','describe','/:id','show','getMessages','/:id/download','download','post','create','/:id/messages','addMessage','/:id/tags','tracked','fax','put','faxinteraction:update','update','delete','faxinteraction:destroy','destroy','removeTags','exports'];(function(_0x4c49fe,_0x3584b0){var _0x3cbeae=function(_0x3d45f7){while(--_0x3d45f7){_0x4c49fe['push'](_0x4c49fe['shift']());}};_0x3cbeae(++_0x3584b0);}(_0x1d23,0x129));var _0x31d2=function(_0x286a2c,_0x587871){_0x286a2c=_0x286a2c-0x0;var _0x356e75=_0x1d23[_0x286a2c];return _0x356e75;};'use strict';var multer=require(_0x31d2('0x0'));var util=require(_0x31d2('0x1'));var path=require(_0x31d2('0x2'));var timeout=require('connect-timeout');var express=require(_0x31d2('0x3'));var router=express[_0x31d2('0x4')]();var fs_extra=require(_0x31d2('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x31d2('0x6'));var config=require(_0x31d2('0x7'));var controller=require('./faxInteraction.controller');router[_0x31d2('0x8')]('/',auth['isAuthenticated'](),controller[_0x31d2('0x9')]);router[_0x31d2('0x8')](_0x31d2('0xa'),auth[_0x31d2('0xb')](),controller[_0x31d2('0xc')]);router[_0x31d2('0x8')](_0x31d2('0xd'),auth[_0x31d2('0xb')](),controller[_0x31d2('0xe')]);router['get']('/:id/messages',auth[_0x31d2('0xb')](),controller[_0x31d2('0xf')]);router[_0x31d2('0x8')](_0x31d2('0x10'),auth[_0x31d2('0xb')](),controller[_0x31d2('0x11')]);router[_0x31d2('0x12')]('/',auth[_0x31d2('0xb')](),controller[_0x31d2('0x13')]);router[_0x31d2('0x12')](_0x31d2('0x14'),auth[_0x31d2('0xb')](),controller[_0x31d2('0x15')]);router[_0x31d2('0x12')](_0x31d2('0x16'),auth[_0x31d2('0xb')](),interaction[_0x31d2('0x17')](_0x31d2('0x18'),'faxinteraction:addtags'),controller['addTags']);router[_0x31d2('0x19')](_0x31d2('0xd'),auth[_0x31d2('0xb')](),interaction[_0x31d2('0x17')](_0x31d2('0x18'),_0x31d2('0x1a')),controller[_0x31d2('0x1b')]);router[_0x31d2('0x1c')](_0x31d2('0xd'),auth[_0x31d2('0xb')](),interaction[_0x31d2('0x17')]('fax',_0x31d2('0x1d')),controller[_0x31d2('0x1e')]);router[_0x31d2('0x1c')](_0x31d2('0x16'),auth[_0x31d2('0xb')](),controller[_0x31d2('0x1f')]);module[_0x31d2('0x20')]=router;
\ No newline at end of file
+var _0xe236=['post','create','addMessage','/:id/tags','tracked','fax','faxinteraction:addtags','addTags','put','/:id','delete','faxinteraction:destroy','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxInteraction.controller','get','isAuthenticated','describe','show','/:id/messages'];(function(_0x54226b,_0x16a6fb){var _0x2ffbbc=function(_0x4611da){while(--_0x4611da){_0x54226b['push'](_0x54226b['shift']());}};_0x2ffbbc(++_0x16a6fb);}(_0xe236,0xe0));var _0x6e23=function(_0x43444b,_0x8cf95b){_0x43444b=_0x43444b-0x0;var _0x392fe5=_0xe236[_0x43444b];return _0x392fe5;};'use strict';var multer=require(_0x6e23('0x0'));var util=require(_0x6e23('0x1'));var path=require(_0x6e23('0x2'));var timeout=require(_0x6e23('0x3'));var express=require(_0x6e23('0x4'));var router=express[_0x6e23('0x5')]();var fs_extra=require(_0x6e23('0x6'));var auth=require(_0x6e23('0x7'));var interaction=require(_0x6e23('0x8'));var config=require(_0x6e23('0x9'));var controller=require(_0x6e23('0xa'));router[_0x6e23('0xb')]('/',auth['isAuthenticated'](),controller['index']);router[_0x6e23('0xb')]('/describe',auth[_0x6e23('0xc')](),controller[_0x6e23('0xd')]);router['get']('/:id',auth[_0x6e23('0xc')](),controller[_0x6e23('0xe')]);router[_0x6e23('0xb')](_0x6e23('0xf'),auth['isAuthenticated'](),controller['getMessages']);router[_0x6e23('0xb')]('/:id/download',auth[_0x6e23('0xc')](),controller['download']);router[_0x6e23('0x10')]('/',auth[_0x6e23('0xc')](),controller[_0x6e23('0x11')]);router['post'](_0x6e23('0xf'),auth[_0x6e23('0xc')](),controller[_0x6e23('0x12')]);router['post'](_0x6e23('0x13'),auth['isAuthenticated'](),interaction[_0x6e23('0x14')](_0x6e23('0x15'),_0x6e23('0x16')),controller[_0x6e23('0x17')]);router[_0x6e23('0x18')](_0x6e23('0x19'),auth[_0x6e23('0xc')](),interaction[_0x6e23('0x14')](_0x6e23('0x15'),'faxinteraction:update'),controller['update']);router[_0x6e23('0x1a')](_0x6e23('0x19'),auth[_0x6e23('0xc')](),interaction[_0x6e23('0x14')](_0x6e23('0x15'),_0x6e23('0x1b')),controller[_0x6e23('0x1c')]);router[_0x6e23('0x1a')](_0x6e23('0x13'),auth['isAuthenticated'](),controller['removeTags']);module[_0x6e23('0x1d')]=router;
\ No newline at end of file
index 76327d5..f5814da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9224=['out','exports','TEXT','medium','BOOLEAN','ENUM'];(function(_0x22754c,_0x514590){var _0x567a75=function(_0x32dad8){while(--_0x32dad8){_0x22754c['push'](_0x22754c['shift']());}};_0x567a75(++_0x514590);}(_0x9224,0xa3));var _0x4922=function(_0x4a4750,_0x2269c5){_0x4a4750=_0x4a4750-0x0;var _0x42c3a5=_0x9224[_0x4a4750];return _0x42c3a5;};'use strict';var Sequelize=require('sequelize');module[_0x4922('0x0')]={'body':{'type':Sequelize[_0x4922('0x1')](_0x4922('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x4922('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x4922('0x4')]('in',_0x4922('0x5')),'defaultValue':'out','allowNull':![]},'failMessage':{'type':Sequelize['TEXT'],'defaultValue':null},'readAt':{'type':Sequelize['DATE']}};
\ No newline at end of file
+var _0x21d1=['ENUM','DATE','sequelize','exports','TEXT','medium','BOOLEAN'];(function(_0xfbb2c4,_0x26b45a){var _0x440158=function(_0x4dee3b){while(--_0x4dee3b){_0xfbb2c4['push'](_0xfbb2c4['shift']());}};_0x440158(++_0x26b45a);}(_0x21d1,0x1c9));var _0x121d=function(_0x4aa1f8,_0x210a78){_0x4aa1f8=_0x4aa1f8-0x0;var _0x1db6e7=_0x21d1[_0x4aa1f8];return _0x1db6e7;};'use strict';var Sequelize=require(_0x121d('0x0'));module[_0x121d('0x1')]={'body':{'type':Sequelize[_0x121d('0x2')](_0x121d('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x121d('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0x121d('0x5')]('in','out'),'defaultValue':'out','allowNull':![]},'failMessage':{'type':Sequelize[_0x121d('0x2')],'defaultValue':null},'readAt':{'type':Sequelize[_0x121d('0x6')]}};
\ No newline at end of file
index 21dccd3..adaf136 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc627=['contact','fullname','motionChannel','rejectmessage','create','findOne','Attachment','AttachmentId','SendFax','FaxAccountId','download','join','attachments','basename','zip-dir','fast-json-patch','request-promise','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','./faxMessage.socket','register','client','http','request','then','info','FaxMessage,\x20%s,\x20%s','request\x20sent','FaxMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','reject','save','update','destroy','name','send','rawAttributes','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','filter','options','FaxMessage','includeAll','include','rows','params','catch','body','find','describe','../../config/logger','fax-interactions','fax','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','FaxInteraction','FaxInteractionId','isNil','read1stAt','interaction','[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','stringify','null','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','SELECT','User','email','internal','manual','interface','SIP/%s','channel','event','EventManager','acceptmessage','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','ContactId'];(function(_0xd6a1c9,_0x203324){var _0x51ea29=function(_0x165a30){while(--_0x165a30){_0xd6a1c9['push'](_0xd6a1c9['shift']());}};_0x51ea29(++_0x203324);}(_0xc627,0x114));var _0x7c62=function(_0x78191,_0x264507){_0x78191=_0x78191-0x0;var _0x15ed2a=_0xc627[_0x78191];return _0x15ed2a;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x7c62('0x0'));var jsonpatch=require(_0x7c62('0x1'));var rp=require(_0x7c62('0x2'));var moment=require('moment');var BPromise=require(_0x7c62('0x3'));var Mustache=require('mustache');var util=require(_0x7c62('0x4'));var path=require('path');var sox=require(_0x7c62('0x5'));var csv=require(_0x7c62('0x6'));var ejs=require(_0x7c62('0x7'));var fs=require('fs');var fs_extra=require(_0x7c62('0x8'));var _=require(_0x7c62('0x9'));var squel=require(_0x7c62('0xa'));var crypto=require('crypto');var jsforce=require(_0x7c62('0xb'));var deskjs=require(_0x7c62('0xc'));var toCsv=require(_0x7c62('0x6'));var querystring=require(_0x7c62('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x7c62('0xe'));var hardwareService=require(_0x7c62('0xf'));var logger=require('../../config/logger')(_0x7c62('0x10'));var utils=require(_0x7c62('0x11'));var config=require(_0x7c62('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x7c62('0x13'))['db'];config[_0x7c62('0x14')]=_[_0x7c62('0x15')](config[_0x7c62('0x14')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7c62('0x14')]));require(_0x7c62('0x16'))[_0x7c62('0x17')](socket);var jayson=require('jayson/promise');var client=jayson[_0x7c62('0x18')][_0x7c62('0x19')]({'port':0x232c});var client9002=jayson['client'][_0x7c62('0x19')]({'port':0x232a});function respondWithRpcPromise(_0x3a2578,_0x7663f3,_0x53b968,_0x57c311){return new BPromise(function(_0x14236d,_0x49f781){var _0x53e042=_0x57c311||client;return _0x53e042[_0x7c62('0x1a')](_0x3a2578,_0x53b968)[_0x7c62('0x1b')](function(_0x1d24d8){logger[_0x7c62('0x1c')](_0x7c62('0x1d'),_0x7663f3,_0x7c62('0x1e'));logger['debug'](_0x7c62('0x1f'),_0x7663f3,_0x7c62('0x1e'),JSON['stringify'](_0x1d24d8));if(_0x1d24d8['error']){if(_0x1d24d8[_0x7c62('0x20')][_0x7c62('0x21')]===0x1f4){logger[_0x7c62('0x20')]('FaxMessage,\x20%s,\x20%s',_0x7663f3,_0x1d24d8[_0x7c62('0x20')]['message']);return _0x49f781(_0x1d24d8[_0x7c62('0x20')][_0x7c62('0x22')]);}logger[_0x7c62('0x20')](_0x7c62('0x1d'),_0x7663f3,_0x1d24d8['error'][_0x7c62('0x22')]);return _0x14236d(_0x1d24d8[_0x7c62('0x20')][_0x7c62('0x22')]);}else{logger[_0x7c62('0x1c')]('FaxMessage,\x20%s,\x20%s',_0x7663f3,_0x7c62('0x1e'));_0x14236d(_0x1d24d8[_0x7c62('0x23')]['message']);}})['catch'](function(_0x38cab7){logger['error'](_0x7c62('0x1d'),_0x7663f3,_0x38cab7);_0x49f781(_0x38cab7);});});}function respondWithStatusCode(_0x4dd402,_0x420856){_0x420856=_0x420856||0xcc;return function(_0x303c79){if(_0x303c79){return _0x4dd402[_0x7c62('0x24')](_0x420856);}return _0x4dd402[_0x7c62('0x25')](_0x420856)['end']();};}function respondWithResult(_0x1dc8f9,_0x1aa07d){_0x1aa07d=_0x1aa07d||0xc8;return function(_0x4ba6f8){if(_0x4ba6f8){return _0x1dc8f9['status'](_0x1aa07d)[_0x7c62('0x26')](_0x4ba6f8);}};}function respondWithFilteredResult(_0x242e1b,_0x17f10d){return function(_0x13861b){if(_0x13861b){var _0x508e10=typeof _0x17f10d['offset']===_0x7c62('0x27')&&typeof _0x17f10d[_0x7c62('0x28')]===_0x7c62('0x27');var _0x19016c=_0x13861b[_0x7c62('0x29')];var _0x2f5d5a=_0x508e10?0x0:_0x17f10d[_0x7c62('0x2a')];var _0x26c378=_0x508e10?_0x13861b[_0x7c62('0x29')]:_0x17f10d[_0x7c62('0x2a')]+_0x17f10d[_0x7c62('0x28')];var _0xe194cf;if(_0x26c378>=_0x19016c){_0x26c378=_0x19016c;_0xe194cf=0xc8;}else{_0xe194cf=0xce;}_0x242e1b[_0x7c62('0x25')](_0xe194cf);return _0x242e1b[_0x7c62('0x2b')](_0x7c62('0x2c'),_0x2f5d5a+'-'+_0x26c378+'/'+_0x19016c)[_0x7c62('0x26')](_0x13861b);}return null;};}function patchUpdates(_0x83c0bc){return function(_0x492194){try{jsonpatch['apply'](_0x492194,_0x83c0bc,!![]);}catch(_0x143a5d){return BPromise[_0x7c62('0x2d')](_0x143a5d);}return _0x492194[_0x7c62('0x2e')]();};}function saveUpdates(_0x60e4da,_0x12260e){return function(_0xd8b0a6){if(_0xd8b0a6){return _0xd8b0a6[_0x7c62('0x2f')](_0x60e4da)[_0x7c62('0x1b')](function(_0x491e26){return _0x491e26;});}return null;};}function removeEntity(_0x95a525,_0x330ac5){return function(_0x1e4225){if(_0x1e4225){return _0x1e4225[_0x7c62('0x30')]()[_0x7c62('0x1b')](function(){_0x95a525[_0x7c62('0x25')](0xcc)['end']();});}};}function handleEntityNotFound(_0x278dc2,_0x467df9){return function(_0x326ae1){if(!_0x326ae1){_0x278dc2[_0x7c62('0x24')](0x194);}return _0x326ae1;};}function handleError(_0x2ba939,_0x4a829b){_0x4a829b=_0x4a829b||0x1f4;return function(_0x2bca0e){logger[_0x7c62('0x20')](_0x2bca0e['stack']);if(_0x2bca0e['name']){delete _0x2bca0e[_0x7c62('0x31')];}_0x2ba939[_0x7c62('0x25')](_0x4a829b)[_0x7c62('0x32')](_0x2bca0e);};}exports['index']=function(_0x501a82,_0x400017){var _0x3b9994={},_0x44fb61={},_0x33c5b2={'count':0x0,'rows':[]};var _0x34e820=_['map'](db['FaxMessage'][_0x7c62('0x33')],function(_0x32dceb){return{'name':_0x32dceb['fieldName'],'type':_0x32dceb[_0x7c62('0x34')][_0x7c62('0x35')]};});_0x44fb61[_0x7c62('0x36')]=_[_0x7c62('0x37')](_0x34e820,_0x7c62('0x31'));_0x44fb61[_0x7c62('0x38')]=_[_0x7c62('0x39')](_0x501a82['query']);_0x44fb61[_0x7c62('0x3a')]=_[_0x7c62('0x3b')](_0x44fb61[_0x7c62('0x36')],_0x44fb61[_0x7c62('0x38')]);_0x3b9994[_0x7c62('0x3c')]=_[_0x7c62('0x3b')](_0x44fb61[_0x7c62('0x36')],qs[_0x7c62('0x3d')](_0x501a82[_0x7c62('0x38')][_0x7c62('0x3d')]));_0x3b9994[_0x7c62('0x3c')]=_0x3b9994[_0x7c62('0x3c')][_0x7c62('0x3e')]?_0x3b9994[_0x7c62('0x3c')]:_0x44fb61[_0x7c62('0x36')];if(!_0x501a82[_0x7c62('0x38')][_0x7c62('0x3f')](_0x7c62('0x40'))){_0x3b9994[_0x7c62('0x28')]=qs[_0x7c62('0x28')](_0x501a82[_0x7c62('0x38')][_0x7c62('0x28')]);_0x3b9994[_0x7c62('0x2a')]=qs[_0x7c62('0x2a')](_0x501a82[_0x7c62('0x38')][_0x7c62('0x2a')]);}_0x3b9994[_0x7c62('0x41')]=qs[_0x7c62('0x42')](_0x501a82[_0x7c62('0x38')][_0x7c62('0x42')]);_0x3b9994[_0x7c62('0x43')]=qs[_0x7c62('0x3a')](_[_0x7c62('0x44')](_0x501a82[_0x7c62('0x38')],_0x44fb61['filters']),_0x34e820);if(_0x501a82[_0x7c62('0x38')]['filter']){_0x3b9994['where']=_[_0x7c62('0x45')](_0x3b9994['where'],{'$or':_[_0x7c62('0x37')](_0x34e820,function(_0x41639c){if(_0x41639c[_0x7c62('0x34')]!=='VIRTUAL'){var _0xfbc23e={};_0xfbc23e[_0x41639c['name']]={'$like':'%'+_0x501a82[_0x7c62('0x38')][_0x7c62('0x46')]+'%'};return _0xfbc23e;}})});}_0x3b9994=_[_0x7c62('0x45')]({},_0x3b9994,_0x501a82[_0x7c62('0x47')]);var _0x185ae2={'where':_0x3b9994[_0x7c62('0x43')]};return db[_0x7c62('0x48')][_0x7c62('0x29')](_0x185ae2)[_0x7c62('0x1b')](function(_0x370e5b){_0x33c5b2[_0x7c62('0x29')]=_0x370e5b;if(_0x501a82[_0x7c62('0x38')][_0x7c62('0x49')]){_0x3b9994[_0x7c62('0x4a')]=[{'all':!![]}];}return db[_0x7c62('0x48')]['findAll'](_0x3b9994);})[_0x7c62('0x1b')](function(_0x19ec20){_0x33c5b2[_0x7c62('0x4b')]=_0x19ec20;return _0x33c5b2;})['then'](respondWithFilteredResult(_0x400017,_0x3b9994))['catch'](handleError(_0x400017,null));};exports['show']=function(_0x215730,_0x5a98c2){var _0x45e04e={'raw':!![],'where':{'id':_0x215730[_0x7c62('0x4c')]['id']}},_0x679f64={};_0x679f64['model']=_[_0x7c62('0x39')](db[_0x7c62('0x48')][_0x7c62('0x33')]);_0x679f64[_0x7c62('0x38')]=_[_0x7c62('0x39')](_0x215730['query']);_0x679f64[_0x7c62('0x3a')]=_[_0x7c62('0x3b')](_0x679f64[_0x7c62('0x36')],_0x679f64[_0x7c62('0x38')]);_0x45e04e[_0x7c62('0x3c')]=_[_0x7c62('0x3b')](_0x679f64[_0x7c62('0x36')],qs[_0x7c62('0x3d')](_0x215730[_0x7c62('0x38')]['fields']));_0x45e04e['attributes']=_0x45e04e[_0x7c62('0x3c')][_0x7c62('0x3e')]?_0x45e04e[_0x7c62('0x3c')]:_0x679f64[_0x7c62('0x36')];if(_0x215730[_0x7c62('0x38')][_0x7c62('0x49')]){_0x45e04e[_0x7c62('0x4a')]=[{'all':!![]}];}_0x45e04e=_[_0x7c62('0x45')]({},_0x45e04e,_0x215730[_0x7c62('0x47')]);return db[_0x7c62('0x48')]['find'](_0x45e04e)[_0x7c62('0x1b')](handleEntityNotFound(_0x5a98c2,null))['then'](respondWithResult(_0x5a98c2,null))[_0x7c62('0x4d')](handleError(_0x5a98c2,null));};exports['update']=function(_0x3271ed,_0x10e049){if(_0x3271ed[_0x7c62('0x4e')]['id']){delete _0x3271ed['body']['id'];}return db[_0x7c62('0x48')][_0x7c62('0x4f')]({'where':{'id':_0x3271ed[_0x7c62('0x4c')]['id']}})[_0x7c62('0x1b')](handleEntityNotFound(_0x10e049,null))['then'](saveUpdates(_0x3271ed[_0x7c62('0x4e')],null))[_0x7c62('0x1b')](respondWithResult(_0x10e049,null))[_0x7c62('0x4d')](handleError(_0x10e049,null));};exports[_0x7c62('0x30')]=function(_0x1c822d,_0x1a3752){return db['FaxMessage'][_0x7c62('0x4f')]({'where':{'id':_0x1c822d[_0x7c62('0x4c')]['id']}})[_0x7c62('0x1b')](handleEntityNotFound(_0x1a3752,null))[_0x7c62('0x1b')](removeEntity(_0x1a3752,null))['catch'](handleError(_0x1a3752,null));};exports[_0x7c62('0x50')]=function(_0x413dad,_0x508e27){return db[_0x7c62('0x48')]['describe']()[_0x7c62('0x1b')](respondWithResult(_0x508e27,null))[_0x7c62('0x4d')](handleError(_0x508e27,null));};var interaction_log=require(_0x7c62('0x51'))(_0x7c62('0x52'));exports['accept']=function(_0x48e72b,_0x1d2e53,_0x40d47e){var _0x20f2f9={'agent':{},'channel':_0x7c62('0x53')};if(_0x48e72b['body']['id']){delete _0x48e72b['body']['id'];}_0x48e72b[_0x7c62('0x4e')][_0x7c62('0x54')]=!![];_0x48e72b[_0x7c62('0x4e')][_0x7c62('0x55')]=moment()[_0x7c62('0x56')](_0x7c62('0x57'));_0x48e72b[_0x7c62('0x4e')][_0x7c62('0x58')]=_0x48e72b[_0x7c62('0x4e')]['UserId']||_0x48e72b['user']['id'];_0x20f2f9[_0x7c62('0x59')]['id']=_0x48e72b[_0x7c62('0x4e')][_0x7c62('0x58')];return db['FaxMessage'][_0x7c62('0x4f')]({'where':{'id':_0x48e72b[_0x7c62('0x4c')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x1d2e53,null))['then'](saveUpdates(_0x48e72b[_0x7c62('0x4e')],null))[_0x7c62('0x1b')](function(_0x58ad99){if(_0x58ad99){_0x20f2f9['message']=_0x58ad99[_0x7c62('0x5a')]({'plain':!![]});return db[_0x7c62('0x5b')][_0x7c62('0x4f')]({'where':{'id':_0x58ad99[_0x7c62('0x5c')]}});}return null;})['then'](handleEntityNotFound(_0x1d2e53,null))[_0x7c62('0x1b')](function(_0x4bad8c){if(_0x4bad8c){return _0x4bad8c[_0x7c62('0x2f')]({'UserId':_0x48e72b['body']['UserId'],'read1stAt':_[_0x7c62('0x5d')](_0x4bad8c[_0x7c62('0x5e')])?moment()[_0x7c62('0x56')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x7c62('0x1b')](function(_0x54d7d0){if(_0x54d7d0){_0x20f2f9[_0x7c62('0x5f')]=_0x54d7d0[_0x7c62('0x5a')]({'plain':!![]});interaction_log[_0x7c62('0x1c')](_0x7c62('0x60'),_0x48e72b[_0x7c62('0x61')]['id'],_0x48e72b[_0x7c62('0x61')][_0x7c62('0x31')],_0x48e72b[_0x7c62('0x61')][_0x7c62('0x62')],_0x20f2f9[_0x7c62('0x5f')]['id'],_0x48e72b[_0x7c62('0x4e')]?JSON[_0x7c62('0x63')](_0x48e72b[_0x7c62('0x4e')]):_0x7c62('0x64'));return respondWithRpcPromise('AcceptMessage',_0x7c62('0x65'),_0x20f2f9);}return null;})[_0x7c62('0x1b')](function(_0x427f3e){var _0x247d70=_0x7c62('0x66')+_0x427f3e['message']['ContactId'];return db[_0x7c62('0x67')][_0x7c62('0x38')](_0x247d70,{'type':db['Sequelize']['QueryTypes'][_0x7c62('0x68')],'raw':!![]})[_0x7c62('0x1b')](function(_0x2fb8f0){return _0x2fb8f0;});})[_0x7c62('0x1b')](function(_0x4593fd){if(_0x4593fd){_0x20f2f9[_0x7c62('0x22')]['contact']=_0x4593fd[0x0];if(!_0x48e72b[_0x7c62('0x4e')][_0x7c62('0x58')])return;return db[_0x7c62('0x69')][_0x7c62('0x4f')]({'where':{'id':_0x48e72b[_0x7c62('0x4e')]['UserId'],'role':_0x7c62('0x59')},'attributes':['id',_0x7c62('0x31'),'fullname',_0x7c62('0x6a'),_0x7c62('0x6b')],'raw':!![]});}return null;})[_0x7c62('0x1b')](function(_0x393cc3){if(!_0x393cc3)return null;_0x20f2f9[_0x7c62('0x22')][_0x7c62('0x59')]=_0x393cc3;return _0x20f2f9;})[_0x7c62('0x1b')](function(_0xa97bef){if(_0xa97bef){if(_0x48e72b[_0x7c62('0x4e')][_0x7c62('0x6c')]){_0x20f2f9[_0x7c62('0x22')][_0x7c62('0x6d')]=util[_0x7c62('0x56')](_0x7c62('0x6e'),_0x48e72b['user'][_0x7c62('0x31')]);_0x20f2f9[_0x7c62('0x22')][_0x7c62('0x6f')]=_0x20f2f9[_0x7c62('0x6f')];_0x20f2f9['message']['motionChannel']=_0x20f2f9[_0x7c62('0x6f')];_0x20f2f9[_0x7c62('0x22')][_0x7c62('0x70')]='accept';return respondWithRpcPromise('EventManager',_0x7c62('0x71'),{'event':_0x7c62('0x72'),'message':_0x20f2f9[_0x7c62('0x22')]},client9002)[_0x7c62('0x1b')](function(){return _0x20f2f9;});}return _0x20f2f9;}return null;})[_0x7c62('0x1b')](respondWithResult(_0x1d2e53,null))['catch'](handleError(_0x1d2e53,null));};var interaction_log=require(_0x7c62('0x51'))('fax-interactions');exports[_0x7c62('0x2d')]=function(_0x193ccb,_0x46f53a,_0x1104b1){var _0x287b5c={'agent':{},'channel':_0x7c62('0x53')};if(_0x193ccb[_0x7c62('0x4e')]['id']){delete _0x193ccb[_0x7c62('0x4e')]['id'];}_0x193ccb[_0x7c62('0x4e')][_0x7c62('0x58')]=_0x193ccb[_0x7c62('0x4e')][_0x7c62('0x58')]||_0x193ccb['user']['id'];_0x287b5c[_0x7c62('0x59')]['id']=_0x193ccb[_0x7c62('0x4e')][_0x7c62('0x58')];return db[_0x7c62('0x48')][_0x7c62('0x4f')]({'where':{'id':_0x193ccb[_0x7c62('0x4c')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x46f53a,null))[_0x7c62('0x1b')](function(_0x1c974e){if(_0x1c974e){_0x287b5c[_0x7c62('0x22')]=_0x1c974e[_0x7c62('0x5a')]({'plain':!![]});return db['FaxInteraction'][_0x7c62('0x4f')]({'where':{'id':_0x1c974e[_0x7c62('0x5c')]}});}return null;})[_0x7c62('0x1b')](handleEntityNotFound(_0x46f53a,null))[_0x7c62('0x1b')](function(_0x1b4027){if(_0x1b4027){_0x287b5c[_0x7c62('0x5f')]=_0x1b4027[_0x7c62('0x5a')]({'plain':!![]});interaction_log[_0x7c62('0x1c')](_0x7c62('0x73'),_0x193ccb['user']['id'],_0x193ccb[_0x7c62('0x61')][_0x7c62('0x31')],_0x193ccb[_0x7c62('0x61')][_0x7c62('0x62')],_0x287b5c[_0x7c62('0x5f')]['id'],_0x193ccb[_0x7c62('0x4e')]?JSON[_0x7c62('0x63')](_0x193ccb[_0x7c62('0x4e')]):_0x7c62('0x64'));return respondWithRpcPromise('RejectMessage','rejectMessage',_0x287b5c);}return null;})[_0x7c62('0x1b')](function(_0x45fa9b){var _0x17d869=_0x7c62('0x66')+_0x45fa9b['message'][_0x7c62('0x74')];return db[_0x7c62('0x67')]['query'](_0x17d869,{'type':db['Sequelize']['QueryTypes'][_0x7c62('0x68')],'raw':!![]})['then'](function(_0x41bfb4){return _0x41bfb4;});})[_0x7c62('0x1b')](function(_0x37f8c9){if(_0x37f8c9){_0x287b5c[_0x7c62('0x22')][_0x7c62('0x75')]=_0x37f8c9[0x0];if(!_0x193ccb['body'][_0x7c62('0x58')])return;return db[_0x7c62('0x69')][_0x7c62('0x4f')]({'where':{'id':_0x193ccb[_0x7c62('0x4e')][_0x7c62('0x58')],'role':_0x7c62('0x59')},'attributes':['id',_0x7c62('0x31'),_0x7c62('0x76'),_0x7c62('0x6a'),_0x7c62('0x6b')],'raw':!![]});}return null;})[_0x7c62('0x1b')](function(_0xcfb069){if(!_0xcfb069)return null;_0x287b5c['message'][_0x7c62('0x59')]=_0xcfb069;return _0x287b5c;})[_0x7c62('0x1b')](function(_0x94484){if(_0x94484){_0x94484[_0x7c62('0x22')][_0x7c62('0x6d')]=util['format']('SIP/%s',_0x193ccb[_0x7c62('0x61')][_0x7c62('0x31')]);_0x94484['message'][_0x7c62('0x6f')]=_0x287b5c[_0x7c62('0x6f')];_0x94484[_0x7c62('0x22')][_0x7c62('0x77')]=_0x287b5c[_0x7c62('0x6f')];_0x94484[_0x7c62('0x22')][_0x7c62('0x70')]='reject';respondWithRpcPromise(_0x7c62('0x71'),_0x7c62('0x71'),{'event':_0x7c62('0x78'),'message':_0x94484[_0x7c62('0x22')]},client9002);return _0x287b5c;}return null;})[_0x7c62('0x1b')](respondWithResult(_0x46f53a,null))[_0x7c62('0x4d')](handleError(_0x46f53a,null));};exports[_0x7c62('0x79')]=function(_0x223972,_0x41cef7){var _0x12f99d;return db[_0x7c62('0x48')][_0x7c62('0x79')](_0x223972['body'],{})[_0x7c62('0x1b')](function(_0x44a305){_0x12f99d=_0x44a305;return db['CmContact'][_0x7c62('0x7a')]({'where':{'id':_0x12f99d[_0x7c62('0x74')]}});})[_0x7c62('0x1b')](function(_0x3bf1f8){if(_['isNil'](_0x3bf1f8)){return;}else{_0x12f99d['fax']=_0x3bf1f8['fax'];return db[_0x7c62('0x7b')]['findOne']({'where':{'id':_0x12f99d[_0x7c62('0x7c')]}});}})[_0x7c62('0x1b')](function(_0x4c5aa5){return respondWithRpcPromise('SendFax',_0x7c62('0x7d'),{'FaxAccountId':_[_0x7c62('0x5d')](_0x223972[_0x7c62('0x4e')])?undefined:_0x223972['body'][_0x7c62('0x7e')],'path':_[_0x7c62('0x5d')](_0x4c5aa5)?undefined:util['format']('/var/opt/motion2/server/files/attachments/%s',_0x4c5aa5['basename']),'fax':_[_0x7c62('0x5d')](_0x12f99d[_0x7c62('0x53')])?undefined:_0x12f99d[_0x7c62('0x53')],'AttachmentId':_0x12f99d[_0x7c62('0x7c')]},client9002);})[_0x7c62('0x1b')](respondWithResult(_0x41cef7,0xc9))[_0x7c62('0x4d')](handleError(_0x41cef7,null));};exports[_0x7c62('0x7f')]=function(_0x5b516c,_0x5e26dd){var _0x1c890a=path[_0x7c62('0x80')](config['root'],'server','files',_0x7c62('0x81'));return db[_0x7c62('0x48')]['find']({'where':{'id':_0x5b516c[_0x7c62('0x4c')]['id']},'include':[{'model':db[_0x7c62('0x7b')],'as':_0x7c62('0x7b')}]})[_0x7c62('0x1b')](handleEntityNotFound(_0x5e26dd,null))[_0x7c62('0x1b')](function(_0x2ec03d){if(_0x2ec03d){return _0x5e26dd[_0x7c62('0x7f')](path[_0x7c62('0x80')](_0x1c890a,_0x2ec03d['Attachment'][_0x7c62('0x82')]));}})[_0x7c62('0x4d')](handleError(_0x5e26dd,null));};
\ No newline at end of file
+var _0x819f=['request','then','info','FaxMessage,\x20%s,\x20%s','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','sendStatus','end','status','offset','undefined','limit','count','apply','reject','save','stack','name','send','index','map','FaxMessage','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','catch','body','find','destroy','params','describe','fax-interactions','accept','fax','read','format','YYYY-MM-DD\x20HH:mm:ss','UserId','get','FaxInteraction','update','isNil','read1stAt','interaction','[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','SELECT','User','agent','fullname','email','internal','manual','SIP/%s','channel','motionChannel','event','EventManager','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','ContactId','rejectmessage','create','CmContact','findOne','Attachment','AttachmentId','SendFax','FaxAccountId','/var/opt/motion2/server/files/attachments/%s','basename','join','server','files','download','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','lodash','squel','crypto','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./faxMessage.socket','register','jayson/promise','client','http'];(function(_0x2c1b1c,_0x5e9c8e){var _0x1520fb=function(_0x313269){while(--_0x313269){_0x2c1b1c['push'](_0x2c1b1c['shift']());}};_0x1520fb(++_0x5e9c8e);}(_0x819f,0x186));var _0xf819=function(_0x1249f4,_0x27226c){_0x1249f4=_0x1249f4-0x0;var _0x47c8a9=_0x819f[_0x1249f4];return _0x47c8a9;};'use strict';var emlformat=require(_0xf819('0x0'));var rimraf=require(_0xf819('0x1'));var zipdir=require(_0xf819('0x2'));var jsonpatch=require(_0xf819('0x3'));var rp=require(_0xf819('0x4'));var moment=require(_0xf819('0x5'));var BPromise=require(_0xf819('0x6'));var Mustache=require(_0xf819('0x7'));var util=require(_0xf819('0x8'));var path=require(_0xf819('0x9'));var sox=require('sox');var csv=require(_0xf819('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf819('0xb'));var squel=require(_0xf819('0xc'));var crypto=require(_0xf819('0xd'));var jsforce=require(_0xf819('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xf819('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xf819('0x10'));var qs=require(_0xf819('0x11'));var as=require(_0xf819('0x12'));var hardwareService=require(_0xf819('0x13'));var logger=require(_0xf819('0x14'))('api');var utils=require(_0xf819('0x15'));var config=require(_0xf819('0x16'));var licenseUtil=require(_0xf819('0x17'));var db=require(_0xf819('0x18'))['db'];config[_0xf819('0x19')]=_[_0xf819('0x1a')](config[_0xf819('0x19')],{'host':_0xf819('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf819('0x19')]));require(_0xf819('0x1c'))[_0xf819('0x1d')](socket);var jayson=require(_0xf819('0x1e'));var client=jayson[_0xf819('0x1f')][_0xf819('0x20')]({'port':0x232c});var client9002=jayson[_0xf819('0x1f')][_0xf819('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x4cd9ab,_0x104e94,_0x3f0a82,_0x376cd5){return new BPromise(function(_0xc1679a,_0x5740b9){var _0xf9bafd=_0x376cd5||client;return _0xf9bafd[_0xf819('0x21')](_0x4cd9ab,_0x3f0a82)[_0xf819('0x22')](function(_0x2cff62){logger[_0xf819('0x23')](_0xf819('0x24'),_0x104e94,_0xf819('0x25'));logger[_0xf819('0x26')](_0xf819('0x27'),_0x104e94,_0xf819('0x25'),JSON[_0xf819('0x28')](_0x2cff62));if(_0x2cff62[_0xf819('0x29')]){if(_0x2cff62[_0xf819('0x29')][_0xf819('0x2a')]===0x1f4){logger[_0xf819('0x29')](_0xf819('0x24'),_0x104e94,_0x2cff62[_0xf819('0x29')][_0xf819('0x2b')]);return _0x5740b9(_0x2cff62[_0xf819('0x29')]['message']);}logger[_0xf819('0x29')]('FaxMessage,\x20%s,\x20%s',_0x104e94,_0x2cff62[_0xf819('0x29')]['message']);return _0xc1679a(_0x2cff62['error']['message']);}else{logger[_0xf819('0x23')](_0xf819('0x24'),_0x104e94,_0xf819('0x25'));_0xc1679a(_0x2cff62[_0xf819('0x2c')][_0xf819('0x2b')]);}})['catch'](function(_0x7c1776){logger[_0xf819('0x29')]('FaxMessage,\x20%s,\x20%s',_0x104e94,_0x7c1776);_0x5740b9(_0x7c1776);});});}function respondWithStatusCode(_0x39158a,_0x217d02){_0x217d02=_0x217d02||0xcc;return function(_0x1b072a){if(_0x1b072a){return _0x39158a[_0xf819('0x2d')](_0x217d02);}return _0x39158a['status'](_0x217d02)[_0xf819('0x2e')]();};}function respondWithResult(_0x3b3627,_0x28f158){_0x28f158=_0x28f158||0xc8;return function(_0x3b0da7){if(_0x3b0da7){return _0x3b3627[_0xf819('0x2f')](_0x28f158)['json'](_0x3b0da7);}};}function respondWithFilteredResult(_0x3b651f,_0x2f31a5){return function(_0x50d16a){if(_0x50d16a){var _0x20c602=typeof _0x2f31a5[_0xf819('0x30')]===_0xf819('0x31')&&typeof _0x2f31a5[_0xf819('0x32')]===_0xf819('0x31');var _0x2f32b7=_0x50d16a[_0xf819('0x33')];var _0x546f9e=_0x20c602?0x0:_0x2f31a5[_0xf819('0x30')];var _0xe94664=_0x20c602?_0x50d16a[_0xf819('0x33')]:_0x2f31a5['offset']+_0x2f31a5[_0xf819('0x32')];var _0x585858;if(_0xe94664>=_0x2f32b7){_0xe94664=_0x2f32b7;_0x585858=0xc8;}else{_0x585858=0xce;}_0x3b651f[_0xf819('0x2f')](_0x585858);return _0x3b651f['set']('Content-Range',_0x546f9e+'-'+_0xe94664+'/'+_0x2f32b7)['json'](_0x50d16a);}return null;};}function patchUpdates(_0x3a411f){return function(_0x75e743){try{jsonpatch[_0xf819('0x34')](_0x75e743,_0x3a411f,!![]);}catch(_0x3aa413){return BPromise[_0xf819('0x35')](_0x3aa413);}return _0x75e743[_0xf819('0x36')]();};}function saveUpdates(_0x553138,_0x51cb81){return function(_0x581596){if(_0x581596){return _0x581596['update'](_0x553138)[_0xf819('0x22')](function(_0x24de6f){return _0x24de6f;});}return null;};}function removeEntity(_0x51b25a,_0x16c7b1){return function(_0x2d22d3){if(_0x2d22d3){return _0x2d22d3['destroy']()['then'](function(){_0x51b25a[_0xf819('0x2f')](0xcc)[_0xf819('0x2e')]();});}};}function handleEntityNotFound(_0xcbcf20,_0x3372d4){return function(_0x19a981){if(!_0x19a981){_0xcbcf20['sendStatus'](0x194);}return _0x19a981;};}function handleError(_0x320af2,_0x543ce6){_0x543ce6=_0x543ce6||0x1f4;return function(_0x4779b3){logger[_0xf819('0x29')](_0x4779b3[_0xf819('0x37')]);if(_0x4779b3['name']){delete _0x4779b3[_0xf819('0x38')];}_0x320af2[_0xf819('0x2f')](_0x543ce6)[_0xf819('0x39')](_0x4779b3);};}exports[_0xf819('0x3a')]=function(_0x1380ec,_0x15e7a8){var _0x507c84={},_0x1a9f72={},_0xb0553b={'count':0x0,'rows':[]};var _0x2037e9=_[_0xf819('0x3b')](db[_0xf819('0x3c')][_0xf819('0x3d')],function(_0x1d68f7){return{'name':_0x1d68f7[_0xf819('0x3e')],'type':_0x1d68f7['type'][_0xf819('0x3f')]};});_0x1a9f72[_0xf819('0x40')]=_[_0xf819('0x3b')](_0x2037e9,_0xf819('0x38'));_0x1a9f72[_0xf819('0x41')]=_[_0xf819('0x42')](_0x1380ec[_0xf819('0x41')]);_0x1a9f72[_0xf819('0x43')]=_[_0xf819('0x44')](_0x1a9f72[_0xf819('0x40')],_0x1a9f72['query']);_0x507c84['attributes']=_[_0xf819('0x44')](_0x1a9f72[_0xf819('0x40')],qs['fields'](_0x1380ec['query'][_0xf819('0x45')]));_0x507c84[_0xf819('0x46')]=_0x507c84[_0xf819('0x46')][_0xf819('0x47')]?_0x507c84[_0xf819('0x46')]:_0x1a9f72['model'];if(!_0x1380ec[_0xf819('0x41')][_0xf819('0x48')]('nolimit')){_0x507c84['limit']=qs[_0xf819('0x32')](_0x1380ec[_0xf819('0x41')][_0xf819('0x32')]);_0x507c84['offset']=qs[_0xf819('0x30')](_0x1380ec['query'][_0xf819('0x30')]);}_0x507c84[_0xf819('0x49')]=qs[_0xf819('0x4a')](_0x1380ec[_0xf819('0x41')][_0xf819('0x4a')]);_0x507c84[_0xf819('0x4b')]=qs[_0xf819('0x43')](_['pick'](_0x1380ec[_0xf819('0x41')],_0x1a9f72['filters']),_0x2037e9);if(_0x1380ec[_0xf819('0x41')][_0xf819('0x4c')]){_0x507c84[_0xf819('0x4b')]=_[_0xf819('0x4d')](_0x507c84[_0xf819('0x4b')],{'$or':_['map'](_0x2037e9,function(_0x17b46d){if(_0x17b46d[_0xf819('0x4e')]!==_0xf819('0x4f')){var _0x58f678={};_0x58f678[_0x17b46d[_0xf819('0x38')]]={'$like':'%'+_0x1380ec[_0xf819('0x41')][_0xf819('0x4c')]+'%'};return _0x58f678;}})});}_0x507c84=_[_0xf819('0x4d')]({},_0x507c84,_0x1380ec[_0xf819('0x50')]);var _0x1de1e4={'where':_0x507c84[_0xf819('0x4b')]};return db['FaxMessage'][_0xf819('0x33')](_0x1de1e4)[_0xf819('0x22')](function(_0x37634e){_0xb0553b[_0xf819('0x33')]=_0x37634e;if(_0x1380ec['query'][_0xf819('0x51')]){_0x507c84[_0xf819('0x52')]=[{'all':!![]}];}return db[_0xf819('0x3c')][_0xf819('0x53')](_0x507c84);})[_0xf819('0x22')](function(_0x2d26ba){_0xb0553b['rows']=_0x2d26ba;return _0xb0553b;})[_0xf819('0x22')](respondWithFilteredResult(_0x15e7a8,_0x507c84))[_0xf819('0x54')](handleError(_0x15e7a8,null));};exports['show']=function(_0x25d389,_0x2951ea){var _0x3202ad={'raw':!![],'where':{'id':_0x25d389['params']['id']}},_0x43bc37={};_0x43bc37[_0xf819('0x40')]=_[_0xf819('0x42')](db['FaxMessage'][_0xf819('0x3d')]);_0x43bc37['query']=_[_0xf819('0x42')](_0x25d389['query']);_0x43bc37[_0xf819('0x43')]=_[_0xf819('0x44')](_0x43bc37[_0xf819('0x40')],_0x43bc37['query']);_0x3202ad[_0xf819('0x46')]=_[_0xf819('0x44')](_0x43bc37['model'],qs[_0xf819('0x45')](_0x25d389[_0xf819('0x41')][_0xf819('0x45')]));_0x3202ad[_0xf819('0x46')]=_0x3202ad['attributes'][_0xf819('0x47')]?_0x3202ad[_0xf819('0x46')]:_0x43bc37[_0xf819('0x40')];if(_0x25d389['query'][_0xf819('0x51')]){_0x3202ad[_0xf819('0x52')]=[{'all':!![]}];}_0x3202ad=_[_0xf819('0x4d')]({},_0x3202ad,_0x25d389[_0xf819('0x50')]);return db[_0xf819('0x3c')]['find'](_0x3202ad)[_0xf819('0x22')](handleEntityNotFound(_0x2951ea,null))[_0xf819('0x22')](respondWithResult(_0x2951ea,null))['catch'](handleError(_0x2951ea,null));};exports['update']=function(_0xcaa7a0,_0x218672){if(_0xcaa7a0[_0xf819('0x55')]['id']){delete _0xcaa7a0[_0xf819('0x55')]['id'];}return db[_0xf819('0x3c')][_0xf819('0x56')]({'where':{'id':_0xcaa7a0['params']['id']}})['then'](handleEntityNotFound(_0x218672,null))['then'](saveUpdates(_0xcaa7a0[_0xf819('0x55')],null))[_0xf819('0x22')](respondWithResult(_0x218672,null))[_0xf819('0x54')](handleError(_0x218672,null));};exports[_0xf819('0x57')]=function(_0x339b4d,_0x5c2e4f){return db['FaxMessage'][_0xf819('0x56')]({'where':{'id':_0x339b4d[_0xf819('0x58')]['id']}})[_0xf819('0x22')](handleEntityNotFound(_0x5c2e4f,null))[_0xf819('0x22')](removeEntity(_0x5c2e4f,null))[_0xf819('0x54')](handleError(_0x5c2e4f,null));};exports[_0xf819('0x59')]=function(_0x45eb91,_0x6311bc){return db[_0xf819('0x3c')]['describe']()[_0xf819('0x22')](respondWithResult(_0x6311bc,null))[_0xf819('0x54')](handleError(_0x6311bc,null));};var interaction_log=require(_0xf819('0x14'))(_0xf819('0x5a'));exports[_0xf819('0x5b')]=function(_0xc1e152,_0x1e4ed7,_0x24a6de){var _0x4efea5={'agent':{},'channel':_0xf819('0x5c')};if(_0xc1e152[_0xf819('0x55')]['id']){delete _0xc1e152[_0xf819('0x55')]['id'];}_0xc1e152['body'][_0xf819('0x5d')]=!![];_0xc1e152[_0xf819('0x55')]['readAt']=moment()[_0xf819('0x5e')](_0xf819('0x5f'));_0xc1e152[_0xf819('0x55')][_0xf819('0x60')]=_0xc1e152['body'][_0xf819('0x60')]||_0xc1e152['user']['id'];_0x4efea5['agent']['id']=_0xc1e152[_0xf819('0x55')]['UserId'];return db[_0xf819('0x3c')][_0xf819('0x56')]({'where':{'id':_0xc1e152[_0xf819('0x58')]['id'],'UserId':null}})[_0xf819('0x22')](handleEntityNotFound(_0x1e4ed7,null))['then'](saveUpdates(_0xc1e152[_0xf819('0x55')],null))[_0xf819('0x22')](function(_0x221df1){if(_0x221df1){_0x4efea5[_0xf819('0x2b')]=_0x221df1[_0xf819('0x61')]({'plain':!![]});return db[_0xf819('0x62')][_0xf819('0x56')]({'where':{'id':_0x221df1['FaxInteractionId']}});}return null;})[_0xf819('0x22')](handleEntityNotFound(_0x1e4ed7,null))[_0xf819('0x22')](function(_0x450635){if(_0x450635){return _0x450635[_0xf819('0x63')]({'UserId':_0xc1e152[_0xf819('0x55')]['UserId'],'read1stAt':_[_0xf819('0x64')](_0x450635[_0xf819('0x65')])?moment()[_0xf819('0x5e')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0xf819('0x22')](function(_0x593378){if(_0x593378){_0x4efea5[_0xf819('0x66')]=_0x593378[_0xf819('0x61')]({'plain':!![]});interaction_log[_0xf819('0x23')](_0xf819('0x67'),_0xc1e152['user']['id'],_0xc1e152[_0xf819('0x68')][_0xf819('0x38')],_0xc1e152['user'][_0xf819('0x69')],_0x4efea5[_0xf819('0x66')]['id'],_0xc1e152[_0xf819('0x55')]?JSON[_0xf819('0x28')](_0xc1e152[_0xf819('0x55')]):_0xf819('0x6a'));return respondWithRpcPromise(_0xf819('0x6b'),'acceptMessage',_0x4efea5);}return null;})[_0xf819('0x22')](function(_0x2b11cc){var _0x1fb69a=_0xf819('0x6c')+_0x2b11cc['message']['ContactId'];return db[_0xf819('0x6d')][_0xf819('0x41')](_0x1fb69a,{'type':db[_0xf819('0x6e')]['QueryTypes'][_0xf819('0x6f')],'raw':!![]})[_0xf819('0x22')](function(_0x179742){return _0x179742;});})[_0xf819('0x22')](function(_0x2e4c6c){if(_0x2e4c6c){_0x4efea5['message']['contact']=_0x2e4c6c[0x0];if(!_0xc1e152[_0xf819('0x55')][_0xf819('0x60')])return;return db[_0xf819('0x70')][_0xf819('0x56')]({'where':{'id':_0xc1e152[_0xf819('0x55')][_0xf819('0x60')],'role':_0xf819('0x71')},'attributes':['id',_0xf819('0x38'),_0xf819('0x72'),_0xf819('0x73'),_0xf819('0x74')],'raw':!![]});}return null;})[_0xf819('0x22')](function(_0x4a9c0c){if(!_0x4a9c0c)return null;_0x4efea5[_0xf819('0x2b')]['agent']=_0x4a9c0c;return _0x4efea5;})[_0xf819('0x22')](function(_0x18d9e6){if(_0x18d9e6){if(_0xc1e152[_0xf819('0x55')][_0xf819('0x75')]){_0x4efea5['message']['interface']=util['format'](_0xf819('0x76'),_0xc1e152[_0xf819('0x68')][_0xf819('0x38')]);_0x4efea5[_0xf819('0x2b')][_0xf819('0x77')]=_0x4efea5[_0xf819('0x77')];_0x4efea5['message'][_0xf819('0x78')]=_0x4efea5[_0xf819('0x77')];_0x4efea5[_0xf819('0x2b')][_0xf819('0x79')]=_0xf819('0x5b');return respondWithRpcPromise(_0xf819('0x7a'),_0xf819('0x7a'),{'event':'acceptmessage','message':_0x4efea5[_0xf819('0x2b')]},client9002)['then'](function(){return _0x4efea5;});}return _0x4efea5;}return null;})[_0xf819('0x22')](respondWithResult(_0x1e4ed7,null))['catch'](handleError(_0x1e4ed7,null));};var interaction_log=require(_0xf819('0x14'))(_0xf819('0x5a'));exports[_0xf819('0x35')]=function(_0x25faec,_0x3b62d0,_0x3dc325){var _0x1a9a22={'agent':{},'channel':_0xf819('0x5c')};if(_0x25faec[_0xf819('0x55')]['id']){delete _0x25faec[_0xf819('0x55')]['id'];}_0x25faec[_0xf819('0x55')]['UserId']=_0x25faec[_0xf819('0x55')][_0xf819('0x60')]||_0x25faec[_0xf819('0x68')]['id'];_0x1a9a22[_0xf819('0x71')]['id']=_0x25faec['body'][_0xf819('0x60')];return db['FaxMessage'][_0xf819('0x56')]({'where':{'id':_0x25faec[_0xf819('0x58')]['id'],'UserId':null}})[_0xf819('0x22')](handleEntityNotFound(_0x3b62d0,null))[_0xf819('0x22')](function(_0x4597c4){if(_0x4597c4){_0x1a9a22[_0xf819('0x2b')]=_0x4597c4[_0xf819('0x61')]({'plain':!![]});return db[_0xf819('0x62')][_0xf819('0x56')]({'where':{'id':_0x4597c4['FaxInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x3b62d0,null))[_0xf819('0x22')](function(_0x380852){if(_0x380852){_0x1a9a22['interaction']=_0x380852[_0xf819('0x61')]({'plain':!![]});interaction_log[_0xf819('0x23')](_0xf819('0x7b'),_0x25faec[_0xf819('0x68')]['id'],_0x25faec[_0xf819('0x68')][_0xf819('0x38')],_0x25faec[_0xf819('0x68')][_0xf819('0x69')],_0x1a9a22[_0xf819('0x66')]['id'],_0x25faec['body']?JSON[_0xf819('0x28')](_0x25faec[_0xf819('0x55')]):'null');return respondWithRpcPromise(_0xf819('0x7c'),_0xf819('0x7d'),_0x1a9a22);}return null;})[_0xf819('0x22')](function(_0x2e23da){var _0x48ceb9=_0xf819('0x6c')+_0x2e23da[_0xf819('0x2b')][_0xf819('0x7e')];return db[_0xf819('0x6d')][_0xf819('0x41')](_0x48ceb9,{'type':db[_0xf819('0x6e')]['QueryTypes'][_0xf819('0x6f')],'raw':!![]})[_0xf819('0x22')](function(_0x40fdc4){return _0x40fdc4;});})[_0xf819('0x22')](function(_0x46a5cc){if(_0x46a5cc){_0x1a9a22['message']['contact']=_0x46a5cc[0x0];if(!_0x25faec[_0xf819('0x55')][_0xf819('0x60')])return;return db[_0xf819('0x70')][_0xf819('0x56')]({'where':{'id':_0x25faec['body']['UserId'],'role':_0xf819('0x71')},'attributes':['id',_0xf819('0x38'),_0xf819('0x72'),_0xf819('0x73'),'internal'],'raw':!![]});}return null;})[_0xf819('0x22')](function(_0x16a135){if(!_0x16a135)return null;_0x1a9a22[_0xf819('0x2b')][_0xf819('0x71')]=_0x16a135;return _0x1a9a22;})[_0xf819('0x22')](function(_0x3ac198){if(_0x3ac198){_0x3ac198[_0xf819('0x2b')]['interface']=util[_0xf819('0x5e')](_0xf819('0x76'),_0x25faec['user']['name']);_0x3ac198[_0xf819('0x2b')]['channel']=_0x1a9a22['channel'];_0x3ac198[_0xf819('0x2b')][_0xf819('0x78')]=_0x1a9a22[_0xf819('0x77')];_0x3ac198[_0xf819('0x2b')][_0xf819('0x79')]='reject';respondWithRpcPromise(_0xf819('0x7a'),'EventManager',{'event':_0xf819('0x7f'),'message':_0x3ac198[_0xf819('0x2b')]},client9002);return _0x1a9a22;}return null;})[_0xf819('0x22')](respondWithResult(_0x3b62d0,null))[_0xf819('0x54')](handleError(_0x3b62d0,null));};exports[_0xf819('0x80')]=function(_0x1bf048,_0xbd73cb){var _0x4aec7b;return db['FaxMessage'][_0xf819('0x80')](_0x1bf048[_0xf819('0x55')],{})[_0xf819('0x22')](function(_0x4be76a){_0x4aec7b=_0x4be76a;return db[_0xf819('0x81')][_0xf819('0x82')]({'where':{'id':_0x4aec7b['ContactId']}});})[_0xf819('0x22')](function(_0x32c307){if(_[_0xf819('0x64')](_0x32c307)){return;}else{_0x4aec7b['fax']=_0x32c307[_0xf819('0x5c')];return db[_0xf819('0x83')]['findOne']({'where':{'id':_0x4aec7b[_0xf819('0x84')]}});}})[_0xf819('0x22')](function(_0x36394f){return respondWithRpcPromise(_0xf819('0x85'),_0xf819('0x85'),{'FaxAccountId':_[_0xf819('0x64')](_0x1bf048[_0xf819('0x55')])?undefined:_0x1bf048[_0xf819('0x55')][_0xf819('0x86')],'path':_['isNil'](_0x36394f)?undefined:util[_0xf819('0x5e')](_0xf819('0x87'),_0x36394f[_0xf819('0x88')]),'fax':_[_0xf819('0x64')](_0x4aec7b[_0xf819('0x5c')])?undefined:_0x4aec7b[_0xf819('0x5c')],'AttachmentId':_0x4aec7b['AttachmentId']},client9002);})['then'](respondWithResult(_0xbd73cb,0xc9))[_0xf819('0x54')](handleError(_0xbd73cb,null));};exports['download']=function(_0x5e47a4,_0x338c23){var _0x30d9da=path[_0xf819('0x89')](config['root'],_0xf819('0x8a'),_0xf819('0x8b'),'attachments');return db[_0xf819('0x3c')][_0xf819('0x56')]({'where':{'id':_0x5e47a4[_0xf819('0x58')]['id']},'include':[{'model':db[_0xf819('0x83')],'as':_0xf819('0x83')}]})['then'](handleEntityNotFound(_0x338c23,null))[_0xf819('0x22')](function(_0x16a267){if(_0x16a267){return _0x338c23[_0xf819('0x8c')](path[_0xf819('0x89')](_0x30d9da,_0x16a267['Attachment']['basename']));}})[_0xf819('0x54')](handleError(_0x338c23,null));};
\ No newline at end of file
index 5b65dd1..57abccf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe062=['remove','emit','events','../../mysqldb','save','update'];(function(_0x57923c,_0x25f27b){var _0x48315c=function(_0x420052){while(--_0x420052){_0x57923c['push'](_0x57923c['shift']());}};_0x48315c(++_0x25f27b);}(_0xe062,0x1b8));var _0x2e06=function(_0x4a3702,_0x436801){_0x4a3702=_0x4a3702-0x0;var _0x3b40f7=_0xe062[_0x4a3702];return _0x3b40f7;};'use strict';var EventEmitter=require(_0x2e06('0x0'));var FaxMessage=require(_0x2e06('0x1'))['db']['FaxMessage'];var FaxMessageEvents=new EventEmitter();FaxMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x2e06('0x2'),'afterUpdate':_0x2e06('0x3'),'afterDestroy':_0x2e06('0x4')};function emitEvent(_0x304308){return function(_0x361a02,_0x28e970,_0x22aacc){FaxMessageEvents[_0x2e06('0x5')](_0x304308+':'+_0x361a02['id'],_0x361a02);FaxMessageEvents[_0x2e06('0x5')](_0x304308,_0x361a02);_0x22aacc(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxMessage['hook'](e,emitEvent(event));}}module['exports']=FaxMessageEvents;
\ No newline at end of file
+var _0x6209=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','FaxMessage','setMaxListeners','save','update','remove'];(function(_0x2112d4,_0x3c863c){var _0x434972=function(_0x477020){while(--_0x477020){_0x2112d4['push'](_0x2112d4['shift']());}};_0x434972(++_0x3c863c);}(_0x6209,0x1e8));var _0x9620=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0x6209[_0x4154a6];return _0x3b2786;};'use strict';var EventEmitter=require(_0x9620('0x0'));var FaxMessage=require(_0x9620('0x1'))['db'][_0x9620('0x2')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0x9620('0x3')](0x0);var events={'afterCreate':_0x9620('0x4'),'afterUpdate':_0x9620('0x5'),'afterDestroy':_0x9620('0x6')};function emitEvent(_0x5deb40){return function(_0x2869e2,_0x17dc92,_0x2fa00b){FaxMessageEvents['emit'](_0x5deb40+':'+_0x2869e2['id'],_0x2869e2);FaxMessageEvents[_0x9620('0x7')](_0x5deb40,_0x2869e2);_0x2fa00b(null);};}for(var e in events){if(events[_0x9620('0x8')](e)){var event=events[e];FaxMessage[_0x9620('0x9')](e,emitEvent(event));}}module[_0x9620('0xa')]=FaxMessageEvents;
\ No newline at end of file
index 7a6aa80..91d08d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7a2=['isNil','UserId','FaxInteraction','findOne','FaxInteractionId','then','createdAt','catch','utf8mb4','utf8mb4_unicode_ci','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./faxMessage.attributes','define','FaxMessage','fti_fax_messages','body','models','get','direction','toLowerCase','out','secret'];(function(_0x45945c,_0x235b10){var _0x47353b=function(_0x50bf68){while(--_0x50bf68){_0x45945c['push'](_0x45945c['shift']());}};_0x47353b(++_0x235b10);}(_0xa7a2,0x13e));var _0x2a7a=function(_0x4db380,_0x4877d6){_0x4db380=_0x4db380-0x0;var _0x4da5fc=_0xa7a2[_0x4db380];return _0x4da5fc;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x2a7a('0x0'))(_0x2a7a('0x1'));var moment=require('moment');var BPromise=require(_0x2a7a('0x2'));var rp=require(_0x2a7a('0x3'));var fs=require('fs');var path=require(_0x2a7a('0x4'));var rimraf=require(_0x2a7a('0x5'));var config=require(_0x2a7a('0x6'));var attributes=require(_0x2a7a('0x7'));module['exports']=function(_0x5afaf0,_0x1d770b){return _0x5afaf0[_0x2a7a('0x8')](_0x2a7a('0x9'),attributes,{'tableName':'fax_messages','paranoid':![],'indexes':[{'name':_0x2a7a('0xa'),'fields':[_0x2a7a('0xb')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x533cc9,_0x3638fe,_0x43dc28){var _0x119ece=_0x5afaf0[_0x2a7a('0xc')];var _0x1782ea=_0x533cc9[_0x2a7a('0xd')]({'plain':!![]});if(_0x1782ea[_0x2a7a('0xe')][_0x2a7a('0xf')]()==='in'||_0x1782ea['direction']['toLowerCase']()===_0x2a7a('0x10')&&!_0x1782ea[_0x2a7a('0x11')]&&!_[_0x2a7a('0x12')](_0x1782ea[_0x2a7a('0x13')])){_0x119ece[_0x2a7a('0x14')][_0x2a7a('0x15')]({'where':{'id':_0x1782ea[_0x2a7a('0x16')]}})[_0x2a7a('0x17')](function(_0x1c1d9f){if(_0x1c1d9f){_0x1c1d9f['update']({'lastMsgAt':_0x1782ea[_0x2a7a('0x18')],'lastMsgDirection':_0x1782ea[_0x2a7a('0xe')][_0x2a7a('0xf')]()});}})[_0x2a7a('0x19')](function(_0x432649){console['error'](_0x432649);});}_0x43dc28();}},'charset':_0x2a7a('0x1a'),'collate':_0x2a7a('0x1b')});};
\ No newline at end of file
+var _0x8b17=['bluebird','request-promise','path','rimraf','../../config/environment','./faxMessage.attributes','exports','define','FaxMessage','fax_messages','body','FULLTEXT','models','get','direction','toLowerCase','out','isNil','UserId','FaxInteraction','FaxInteractionId','update','createdAt','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment'];(function(_0x3b0f83,_0x1d3ce8){var _0x4b1dca=function(_0x25127a){while(--_0x25127a){_0x3b0f83['push'](_0x3b0f83['shift']());}};_0x4b1dca(++_0x1d3ce8);}(_0x8b17,0x1db));var _0x78b1=function(_0x495e1e,_0x4ff02c){_0x495e1e=_0x495e1e-0x0;var _0x23eb32=_0x8b17[_0x495e1e];return _0x23eb32;};'use strict';var _=require(_0x78b1('0x0'));var util=require(_0x78b1('0x1'));var logger=require(_0x78b1('0x2'))(_0x78b1('0x3'));var moment=require(_0x78b1('0x4'));var BPromise=require(_0x78b1('0x5'));var rp=require(_0x78b1('0x6'));var fs=require('fs');var path=require(_0x78b1('0x7'));var rimraf=require(_0x78b1('0x8'));var config=require(_0x78b1('0x9'));var attributes=require(_0x78b1('0xa'));module[_0x78b1('0xb')]=function(_0x7fbee3,_0x53f70b){return _0x7fbee3[_0x78b1('0xc')](_0x78b1('0xd'),attributes,{'tableName':_0x78b1('0xe'),'paranoid':![],'indexes':[{'name':'fti_fax_messages','fields':[_0x78b1('0xf')],'type':_0x78b1('0x10')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x5b40ca,_0x14b19d,_0x2789dd){var _0x31b921=_0x7fbee3[_0x78b1('0x11')];var _0x5afad0=_0x5b40ca[_0x78b1('0x12')]({'plain':!![]});if(_0x5afad0[_0x78b1('0x13')][_0x78b1('0x14')]()==='in'||_0x5afad0[_0x78b1('0x13')][_0x78b1('0x14')]()===_0x78b1('0x15')&&!_0x5afad0['secret']&&!_[_0x78b1('0x16')](_0x5afad0[_0x78b1('0x17')])){_0x31b921[_0x78b1('0x18')]['findOne']({'where':{'id':_0x5afad0[_0x78b1('0x19')]}})['then'](function(_0x1dcd3d){if(_0x1dcd3d){_0x1dcd3d[_0x78b1('0x1a')]({'lastMsgAt':_0x5afad0[_0x78b1('0x1b')],'lastMsgDirection':_0x5afad0['direction'][_0x78b1('0x14')]()});}})[_0x78b1('0x1c')](function(_0x1bd3e1){console[_0x78b1('0x1d')](_0x1bd3e1);});}_0x2789dd();}},'charset':_0x78b1('0x1e'),'collate':_0x78b1('0x1f')});};
\ No newline at end of file
index e35b902..00acfed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7bae=['request\x20sent','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','FaxMessage,\x20%s,\x20%s','create','body','options','raw','CreateFaxMessage','debug','FaxMessage','update','where','limit','UpdateFaxMessage','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./faxMessage.socket','request','then','info'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x7bae,0x13b));var _0xe7ba=function(_0x24237f,_0x4cf32c){_0x24237f=_0x24237f-0x0;var _0x48298e=_0x7bae[_0x24237f];return _0x48298e;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xe7ba('0x0'));var BPromise=require(_0xe7ba('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe7ba('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xe7ba('0x3'));var logger=require(_0xe7ba('0x4'))(_0xe7ba('0x5'));var config=require(_0xe7ba('0x6'));var jayson=require(_0xe7ba('0x7'));var client=jayson[_0xe7ba('0x8')][_0xe7ba('0x9')]({'port':0x232a});config[_0xe7ba('0xa')]=_[_0xe7ba('0xb')](config[_0xe7ba('0xa')],{'host':_0xe7ba('0xc'),'port':0x18eb});var socket=require(_0xe7ba('0xd'))(new Redis(config[_0xe7ba('0xa')]));require(_0xe7ba('0xe'))['register'](socket);function respondWithRpcPromise(_0x3df8bf,_0xe57e33,_0x375ebb){return new BPromise(function(_0x276bc3,_0x15083a){return client[_0xe7ba('0xf')](_0x3df8bf,_0x375ebb)[_0xe7ba('0x10')](function(_0x448bcc){logger[_0xe7ba('0x11')]('FaxMessage,\x20%s,\x20%s',_0xe57e33,_0xe7ba('0x12'));logger['debug'](_0xe7ba('0x13'),_0xe57e33,_0xe7ba('0x12'),JSON[_0xe7ba('0x14')](_0x448bcc));if(_0x448bcc[_0xe7ba('0x15')]){if(_0x448bcc[_0xe7ba('0x15')][_0xe7ba('0x16')]===0x1f4){logger['error']('FaxMessage,\x20%s,\x20%s',_0xe57e33,_0x448bcc[_0xe7ba('0x15')][_0xe7ba('0x17')]);return _0x15083a(_0x448bcc[_0xe7ba('0x15')]['message']);}logger[_0xe7ba('0x15')]('FaxMessage,\x20%s,\x20%s',_0xe57e33,_0x448bcc['error']['message']);return _0x276bc3(_0x448bcc[_0xe7ba('0x15')]['message']);}else{logger[_0xe7ba('0x11')]('FaxMessage,\x20%s,\x20%s',_0xe57e33,'request\x20sent');_0x276bc3(_0x448bcc['result'][_0xe7ba('0x17')]);}})[_0xe7ba('0x18')](function(_0x39ca38){logger[_0xe7ba('0x15')](_0xe7ba('0x19'),_0xe57e33,_0x39ca38);_0x15083a(_0x39ca38);});});}exports['CreateFaxMessage']=function(_0x149c62){var _0x20c653=this;return new Promise(function(_0x3b40fb,_0x136ec6){return db['FaxMessage'][_0xe7ba('0x1a')](_0x149c62[_0xe7ba('0x1b')],{'raw':_0x149c62['options']?_0x149c62[_0xe7ba('0x1c')][_0xe7ba('0x1d')]===undefined?!![]:![]:!![]})[_0xe7ba('0x10')](function(_0x7ab9e4){logger[_0xe7ba('0x11')](_0xe7ba('0x1e'),_0x149c62);logger[_0xe7ba('0x1f')](_0xe7ba('0x1e'),_0x149c62,JSON[_0xe7ba('0x14')](_0x7ab9e4));_0x3b40fb(_0x7ab9e4);})[_0xe7ba('0x18')](function(_0x58cf43){logger['error']('CreateFaxMessage',_0x58cf43['message'],_0x149c62);_0x136ec6(_0x20c653[_0xe7ba('0x15')](0x1f4,_0x58cf43['message']));});});};exports['UpdateFaxMessage']=function(_0x5ece11){var _0x255def=this;return new Promise(function(_0x32cc00,_0xe32862){return db[_0xe7ba('0x20')][_0xe7ba('0x21')](_0x5ece11[_0xe7ba('0x1b')],{'raw':_0x5ece11[_0xe7ba('0x1c')]?_0x5ece11[_0xe7ba('0x1c')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5ece11[_0xe7ba('0x1c')]?_0x5ece11['options'][_0xe7ba('0x22')]||null:null,'attributes':_0x5ece11[_0xe7ba('0x1c')]?_0x5ece11[_0xe7ba('0x1c')]['attributes']||null:null,'limit':_0x5ece11['options']?_0x5ece11[_0xe7ba('0x1c')][_0xe7ba('0x23')]||null:null})[_0xe7ba('0x10')](function(_0x20b6cd){logger[_0xe7ba('0x11')]('UpdateFaxMessage',_0x5ece11);logger[_0xe7ba('0x1f')](_0xe7ba('0x24'),_0x5ece11,JSON['stringify'](_0x20b6cd));_0x32cc00(_0x20b6cd);})[_0xe7ba('0x18')](function(_0x530227){logger['error'](_0xe7ba('0x24'),_0x530227[_0xe7ba('0x17')],_0x5ece11);_0xe32862(_0x255def[_0xe7ba('0x15')](0x1f4,_0x530227['message']));});});};
\ No newline at end of file
+var _0x54ef=['../../config/utils','../../config/logger','rpc','../../config/environment','http','redis','defaults','localhost','./faxMessage.socket','request','then','info','request\x20sent','stringify','error','FaxMessage,\x20%s,\x20%s','message','result','catch','FaxMessage','create','body','options','raw','CreateFaxMessage','UpdateFaxMessage','where','attributes','debug','lodash','util','moment','randomstring','ioredis','../../mysqldb'];(function(_0x387b81,_0xdfb081){var _0x1a2c5d=function(_0x512596){while(--_0x512596){_0x387b81['push'](_0x387b81['shift']());}};_0x1a2c5d(++_0xdfb081);}(_0x54ef,0x112));var _0xf54e=function(_0x30ebe8,_0x1a07e9){_0x30ebe8=_0x30ebe8-0x0;var _0x50ab77=_0x54ef[_0x30ebe8];return _0x50ab77;};'use strict';var _=require(_0xf54e('0x0'));var util=require(_0xf54e('0x1'));var moment=require(_0xf54e('0x2'));var BPromise=require('bluebird');var rs=require(_0xf54e('0x3'));var fs=require('fs');var Redis=require(_0xf54e('0x4'));var db=require(_0xf54e('0x5'))['db'];var utils=require(_0xf54e('0x6'));var logger=require(_0xf54e('0x7'))(_0xf54e('0x8'));var config=require(_0xf54e('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0xf54e('0xa')]({'port':0x232a});config[_0xf54e('0xb')]=_[_0xf54e('0xc')](config['redis'],{'host':_0xf54e('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf54e('0xb')]));require(_0xf54e('0xe'))['register'](socket);function respondWithRpcPromise(_0x26fc3e,_0xefa1c0,_0x6b9e61){return new BPromise(function(_0x3ecfb3,_0x5f232a){return client[_0xf54e('0xf')](_0x26fc3e,_0x6b9e61)[_0xf54e('0x10')](function(_0x143d66){logger[_0xf54e('0x11')]('FaxMessage,\x20%s,\x20%s',_0xefa1c0,_0xf54e('0x12'));logger['debug']('FaxMessage,\x20%s,\x20%s,\x20%s',_0xefa1c0,_0xf54e('0x12'),JSON[_0xf54e('0x13')](_0x143d66));if(_0x143d66[_0xf54e('0x14')]){if(_0x143d66[_0xf54e('0x14')]['code']===0x1f4){logger[_0xf54e('0x14')](_0xf54e('0x15'),_0xefa1c0,_0x143d66[_0xf54e('0x14')][_0xf54e('0x16')]);return _0x5f232a(_0x143d66['error'][_0xf54e('0x16')]);}logger[_0xf54e('0x14')](_0xf54e('0x15'),_0xefa1c0,_0x143d66['error']['message']);return _0x3ecfb3(_0x143d66[_0xf54e('0x14')][_0xf54e('0x16')]);}else{logger[_0xf54e('0x11')](_0xf54e('0x15'),_0xefa1c0,_0xf54e('0x12'));_0x3ecfb3(_0x143d66[_0xf54e('0x17')][_0xf54e('0x16')]);}})[_0xf54e('0x18')](function(_0x1dcc04){logger[_0xf54e('0x14')](_0xf54e('0x15'),_0xefa1c0,_0x1dcc04);_0x5f232a(_0x1dcc04);});});}exports['CreateFaxMessage']=function(_0x48a7e1){var _0x23e14=this;return new Promise(function(_0x59f338,_0x3e1556){return db[_0xf54e('0x19')][_0xf54e('0x1a')](_0x48a7e1[_0xf54e('0x1b')],{'raw':_0x48a7e1[_0xf54e('0x1c')]?_0x48a7e1[_0xf54e('0x1c')][_0xf54e('0x1d')]===undefined?!![]:![]:!![]})[_0xf54e('0x10')](function(_0x3c0169){logger[_0xf54e('0x11')](_0xf54e('0x1e'),_0x48a7e1);logger['debug'](_0xf54e('0x1e'),_0x48a7e1,JSON['stringify'](_0x3c0169));_0x59f338(_0x3c0169);})[_0xf54e('0x18')](function(_0x272df6){logger[_0xf54e('0x14')](_0xf54e('0x1e'),_0x272df6[_0xf54e('0x16')],_0x48a7e1);_0x3e1556(_0x23e14[_0xf54e('0x14')](0x1f4,_0x272df6[_0xf54e('0x16')]));});});};exports[_0xf54e('0x1f')]=function(_0x2342a9){var _0x33457f=this;return new Promise(function(_0xf6cdd7,_0x39c0ae){return db[_0xf54e('0x19')]['update'](_0x2342a9[_0xf54e('0x1b')],{'raw':_0x2342a9['options']?_0x2342a9[_0xf54e('0x1c')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2342a9[_0xf54e('0x1c')]?_0x2342a9[_0xf54e('0x1c')][_0xf54e('0x20')]||null:null,'attributes':_0x2342a9[_0xf54e('0x1c')]?_0x2342a9[_0xf54e('0x1c')][_0xf54e('0x21')]||null:null,'limit':_0x2342a9[_0xf54e('0x1c')]?_0x2342a9['options']['limit']||null:null})[_0xf54e('0x10')](function(_0x258d29){logger[_0xf54e('0x11')](_0xf54e('0x1f'),_0x2342a9);logger[_0xf54e('0x22')](_0xf54e('0x1f'),_0x2342a9,JSON[_0xf54e('0x13')](_0x258d29));_0xf6cdd7(_0x258d29);})[_0xf54e('0x18')](function(_0x3ae704){logger[_0xf54e('0x14')]('UpdateFaxMessage',_0x3ae704['message'],_0x2342a9);_0x39c0ae(_0x33457f[_0xf54e('0x14')](0x1f4,_0x3ae704[_0xf54e('0x16')]));});});};
\ No newline at end of file
index 932aa35..18c1616 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd21e=['remove','update','emit','removeListener','register','length','faxMessage:','./faxMessage.events','save'];(function(_0x2d863a,_0x2af20c){var _0x2a9db2=function(_0x5e06eb){while(--_0x5e06eb){_0x2d863a['push'](_0x2d863a['shift']());}};_0x2a9db2(++_0x2af20c);}(_0xd21e,0x154));var _0xed21=function(_0x55e6c0,_0xfbe3c1){_0x55e6c0=_0x55e6c0-0x0;var _0x39adbb=_0xd21e[_0x55e6c0];return _0x39adbb;};'use strict';var FaxMessageEvents=require(_0xed21('0x0'));var events=[_0xed21('0x1'),_0xed21('0x2'),_0xed21('0x3')];function createListener(_0x20a4bc,_0x1fc713){return function(_0x117ccf){_0x1fc713[_0xed21('0x4')](_0x20a4bc,_0x117ccf);};}function removeListener(_0x5b96d4,_0x27e233){return function(){FaxMessageEvents[_0xed21('0x5')](_0x5b96d4,_0x27e233);};}exports[_0xed21('0x6')]=function(_0x374a0f){for(var _0x44223c=0x0,_0x35750d=events[_0xed21('0x7')];_0x44223c<_0x35750d;_0x44223c++){var _0x3f500d=events[_0x44223c];var _0x149183=createListener(_0xed21('0x8')+_0x3f500d,_0x374a0f);FaxMessageEvents['on'](_0x3f500d,_0x149183);}};
\ No newline at end of file
+var _0xb112=['faxMessage:','./faxMessage.events','save','remove','length'];(function(_0x87b0ff,_0x314389){var _0x3bc0b2=function(_0x41682b){while(--_0x41682b){_0x87b0ff['push'](_0x87b0ff['shift']());}};_0x3bc0b2(++_0x314389);}(_0xb112,0x79));var _0x2b11=function(_0x2a4558,_0x1a8aa1){_0x2a4558=_0x2a4558-0x0;var _0x485153=_0xb112[_0x2a4558];return _0x485153;};'use strict';var FaxMessageEvents=require(_0x2b11('0x0'));var events=[_0x2b11('0x1'),_0x2b11('0x2'),'update'];function createListener(_0xb4f753,_0x392d2c){return function(_0x4c1291){_0x392d2c['emit'](_0xb4f753,_0x4c1291);};}function removeListener(_0x46c8c5,_0xd8fd40){return function(){FaxMessageEvents['removeListener'](_0x46c8c5,_0xd8fd40);};}exports['register']=function(_0x482d0c){for(var _0x3fca83=0x0,_0x6fc12a=events[_0x2b11('0x3')];_0x3fca83<_0x6fc12a;_0x3fca83++){var _0x5a960f=events[_0x3fca83];var _0x30c137=createListener(_0x2b11('0x4')+_0x5a960f,_0x482d0c);FaxMessageEvents['on'](_0x5a960f,_0x30c137);}};
\ No newline at end of file
index bc5191f..9111b7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e6c=['reject','/:id','exports','multer','util','connect-timeout','express','../../components/auth/service','../../config/environment','get','isAuthenticated','/describe','describe','/:id/download','download','post','tracked','fax','faxmessage:create','put','update','/:id/accept','accept','/:id/reject'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x6e6c,0xc3));var _0xc6e6=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x6e6c[_0x397e5f];return _0x5302b8;};'use strict';var multer=require(_0xc6e6('0x0'));var util=require(_0xc6e6('0x1'));var path=require('path');var timeout=require(_0xc6e6('0x2'));var express=require(_0xc6e6('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xc6e6('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xc6e6('0x5'));var controller=require('./faxMessage.controller');router[_0xc6e6('0x6')]('/',auth[_0xc6e6('0x7')](),controller['index']);router[_0xc6e6('0x6')](_0xc6e6('0x8'),auth['isAuthenticated'](),controller[_0xc6e6('0x9')]);router[_0xc6e6('0x6')]('/:id',auth[_0xc6e6('0x7')](),controller['show']);router[_0xc6e6('0x6')](_0xc6e6('0xa'),auth[_0xc6e6('0x7')](),controller[_0xc6e6('0xb')]);router[_0xc6e6('0xc')]('/',auth[_0xc6e6('0x7')](),interaction[_0xc6e6('0xd')](_0xc6e6('0xe'),_0xc6e6('0xf')),controller['create']);router[_0xc6e6('0x10')]('/:id',auth[_0xc6e6('0x7')](),controller[_0xc6e6('0x11')]);router[_0xc6e6('0x10')](_0xc6e6('0x12'),auth['isAuthenticated'](),controller[_0xc6e6('0x13')]);router[_0xc6e6('0x10')](_0xc6e6('0x14'),auth[_0xc6e6('0x7')](),controller[_0xc6e6('0x15')]);router['delete'](_0xc6e6('0x16'),auth[_0xc6e6('0x7')](),controller['destroy']);module[_0xc6e6('0x17')]=router;
\ No newline at end of file
+var _0xb9a7=['faxmessage:create','create','put','update','/:id/accept','/:id/reject','reject','delete','destroy','exports','util','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxMessage.controller','get','isAuthenticated','index','/describe','/:id','/:id/download','post','tracked'];(function(_0x19fb13,_0x4f9ba3){var _0x112756=function(_0x503591){while(--_0x503591){_0x19fb13['push'](_0x19fb13['shift']());}};_0x112756(++_0x4f9ba3);}(_0xb9a7,0x112));var _0x7b9a=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xb9a7[_0x40a045];return _0x1a687c;};'use strict';var multer=require('multer');var util=require(_0x7b9a('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x7b9a('0x1')]();var fs_extra=require('fs-extra');var auth=require(_0x7b9a('0x2'));var interaction=require(_0x7b9a('0x3'));var config=require(_0x7b9a('0x4'));var controller=require(_0x7b9a('0x5'));router[_0x7b9a('0x6')]('/',auth[_0x7b9a('0x7')](),controller[_0x7b9a('0x8')]);router[_0x7b9a('0x6')](_0x7b9a('0x9'),auth[_0x7b9a('0x7')](),controller['describe']);router[_0x7b9a('0x6')](_0x7b9a('0xa'),auth['isAuthenticated'](),controller['show']);router['get'](_0x7b9a('0xb'),auth[_0x7b9a('0x7')](),controller['download']);router[_0x7b9a('0xc')]('/',auth['isAuthenticated'](),interaction[_0x7b9a('0xd')]('fax',_0x7b9a('0xe')),controller[_0x7b9a('0xf')]);router[_0x7b9a('0x10')]('/:id',auth[_0x7b9a('0x7')](),controller[_0x7b9a('0x11')]);router['put'](_0x7b9a('0x12'),auth[_0x7b9a('0x7')](),controller['accept']);router[_0x7b9a('0x10')](_0x7b9a('0x13'),auth[_0x7b9a('0x7')](),controller[_0x7b9a('0x14')]);router[_0x7b9a('0x15')](_0x7b9a('0xa'),auth[_0x7b9a('0x7')](),controller[_0x7b9a('0x16')]);module[_0x7b9a('0x17')]=router;
\ No newline at end of file
index 502f087..279293d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe961=['ENUM','beepall','roundrobin','name','INTEGER'];(function(_0x3e7e4a,_0x43a338){var _0x853ff0=function(_0x5b58b1){while(--_0x5b58b1){_0x3e7e4a['push'](_0x3e7e4a['shift']());}};_0x853ff0(++_0x43a338);}(_0xe961,0x11b));var _0x1e96=function(_0x5e3b04,_0xbb6795){_0x5e3b04=_0x5e3b04-0x0;var _0x1fc44d=_0xe961[_0x5e3b04];return _0x1fc44d;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x1e96('0x0'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x1e96('0x1')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x1e96('0x2')]('rrmemory',_0x1e96('0x3'),_0x1e96('0x4')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0x1e96('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xa3d5=['roundrobin','sequelize','exports','STRING','name','INTEGER','ENUM','rrmemory','beepall'];(function(_0x22f4cc,_0x17a413){var _0x3e3e2f=function(_0x530e07){while(--_0x530e07){_0x22f4cc['push'](_0x22f4cc['shift']());}};_0x3e3e2f(++_0x17a413);}(_0xa3d5,0xc7));var _0x5a3d=function(_0x173452,_0x3aa870){_0x173452=_0x173452-0x0;var _0xee3fd0=_0xa3d5[_0x173452];return _0xee3fd0;};'use strict';var Sequelize=require(_0x5a3d('0x0'));module[_0x5a3d('0x1')]={'name':{'type':Sequelize[_0x5a3d('0x2')],'unique':_0x5a3d('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x5a3d('0x4')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x5a3d('0x5')](_0x5a3d('0x6'),_0x5a3d('0x7'),_0x5a3d('0x8')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0x5a3d('0x4')],'defaultValue':0x0}};
\ No newline at end of file
index 6e2a014..9ee3c36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f17=['rows','format','%s/%s','Team','getTeams','addTeams','body','ids','Agents','voicePause','transaction','findOrCreate','forEach','emit','userFaxQueue:save','removeTeams','select','tq.TeamId','from','team_has_fax_queues','join','user_has_teams','FaxQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','sequelize','toString','QueryTypes','SELECT','every','union','compact','value','isEmpty','removeAgents','userFaxQueue:remove','addAgents','omit','spread','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','status','json','offset','undefined','limit','count','set','reject','then','destroy','FaxQueues','UserProfileResource','end','sendStatus','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','FaxQueue','includeAll','include','findAll','show','params','find','catch','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','error','update','describe','getMembers','findOne','UserFaxQueue','order','FaxQueueId','User','findAndCountAll','UserId','agent','faxPause','updatedAt','createdAt'];(function(_0x5a5b59,_0x4e24fa){var _0x225324=function(_0x510b88){while(--_0x510b88){_0x5a5b59['push'](_0x5a5b59['shift']());}};_0x225324(++_0x4e24fa);}(_0x3f17,0x1c7));var _0x73f1=function(_0x48a5be,_0x5b2c75){_0x48a5be=_0x48a5be-0x0;var _0x232c15=_0x3f17[_0x48a5be];return _0x232c15;};'use strict';var emlformat=require(_0x73f1('0x0'));var rimraf=require(_0x73f1('0x1'));var zipdir=require(_0x73f1('0x2'));var jsonpatch=require(_0x73f1('0x3'));var rp=require(_0x73f1('0x4'));var moment=require(_0x73f1('0x5'));var BPromise=require(_0x73f1('0x6'));var Mustache=require('mustache');var util=require(_0x73f1('0x7'));var path=require(_0x73f1('0x8'));var sox=require(_0x73f1('0x9'));var csv=require(_0x73f1('0xa'));var ejs=require(_0x73f1('0xb'));var fs=require('fs');var fs_extra=require(_0x73f1('0xc'));var _=require(_0x73f1('0xd'));var squel=require(_0x73f1('0xe'));var crypto=require(_0x73f1('0xf'));var jsforce=require(_0x73f1('0x10'));var deskjs=require(_0x73f1('0x11'));var toCsv=require(_0x73f1('0xa'));var querystring=require('querystring');var Papa=require(_0x73f1('0x12'));var Redis=require(_0x73f1('0x13'));var authService=require(_0x73f1('0x14'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x73f1('0x15'));var logger=require('../../config/logger')(_0x73f1('0x16'));var utils=require(_0x73f1('0x17'));var config=require(_0x73f1('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x73f1('0x19'))['db'];config[_0x73f1('0x1a')]=_['defaults'](config[_0x73f1('0x1a')],{'host':_0x73f1('0x1b'),'port':0x18eb});var socket=require(_0x73f1('0x1c'))(new Redis(config['redis']));require('./faxQueue.socket')['register'](socket);function respondWithStatusCode(_0x3dbf56,_0x275bb7){_0x275bb7=_0x275bb7||0xcc;return function(_0x1af575){if(_0x1af575){return _0x3dbf56['sendStatus'](_0x275bb7);}return _0x3dbf56[_0x73f1('0x1d')](_0x275bb7)['end']();};}function respondWithResult(_0x5280a0,_0x1fdafb){_0x1fdafb=_0x1fdafb||0xc8;return function(_0x90184b){if(_0x90184b){return _0x5280a0[_0x73f1('0x1d')](_0x1fdafb)[_0x73f1('0x1e')](_0x90184b);}};}function respondWithFilteredResult(_0x1e63cd,_0x505649){return function(_0xfc6041){if(_0xfc6041){var _0x24b57c=typeof _0x505649[_0x73f1('0x1f')]===_0x73f1('0x20')&&typeof _0x505649[_0x73f1('0x21')]===_0x73f1('0x20');var _0x415f4f=_0xfc6041[_0x73f1('0x22')];var _0x2121d0=_0x24b57c?0x0:_0x505649[_0x73f1('0x1f')];var _0x26d841=_0x24b57c?_0xfc6041['count']:_0x505649[_0x73f1('0x1f')]+_0x505649[_0x73f1('0x21')];var _0x36ca93;if(_0x26d841>=_0x415f4f){_0x26d841=_0x415f4f;_0x36ca93=0xc8;}else{_0x36ca93=0xce;}_0x1e63cd[_0x73f1('0x1d')](_0x36ca93);return _0x1e63cd[_0x73f1('0x23')]('Content-Range',_0x2121d0+'-'+_0x26d841+'/'+_0x415f4f)[_0x73f1('0x1e')](_0xfc6041);}return null;};}function patchUpdates(_0x566e15){return function(_0x556488){try{jsonpatch['apply'](_0x556488,_0x566e15,!![]);}catch(_0x4ec663){return BPromise[_0x73f1('0x24')](_0x4ec663);}return _0x556488['save']();};}function saveUpdates(_0x1a2182,_0x103792){return function(_0xe8007e){if(_0xe8007e){return _0xe8007e['update'](_0x1a2182)[_0x73f1('0x25')](function(_0x3a4af3){return _0x3a4af3;});}return null;};}function removeEntity(_0x351ff0,_0x206ce6){return function(_0x34e4eb){if(_0x34e4eb){return _0x34e4eb[_0x73f1('0x26')]()[_0x73f1('0x25')](function(){var _0x27fafc=_0x34e4eb['get']({'plain':!![]});var _0x23faa3=_0x73f1('0x27');return db[_0x73f1('0x28')][_0x73f1('0x26')]({'where':{'type':_0x23faa3,'resourceId':_0x27fafc['id']}})['then'](function(){return _0x34e4eb;});})[_0x73f1('0x25')](function(){_0x351ff0[_0x73f1('0x1d')](0xcc)[_0x73f1('0x29')]();});}};}function handleEntityNotFound(_0x2a575c,_0x4b37b7){return function(_0x1bdf82){if(!_0x1bdf82){_0x2a575c[_0x73f1('0x2a')](0x194);}return _0x1bdf82;};}function handleError(_0x3bc25f,_0x2252c0){_0x2252c0=_0x2252c0||0x1f4;return function(_0x5bb970){logger['error'](_0x5bb970[_0x73f1('0x2b')]);if(_0x5bb970[_0x73f1('0x2c')]){delete _0x5bb970[_0x73f1('0x2c')];}_0x3bc25f['status'](_0x2252c0)[_0x73f1('0x2d')](_0x5bb970);};}exports[_0x73f1('0x2e')]=function(_0x2a452,_0x440b1c){var _0x5be1ff={},_0x55c70d={},_0x793083={'count':0x0,'rows':[]};var _0x3719fd=_[_0x73f1('0x2f')](db['FaxQueue'][_0x73f1('0x30')],function(_0x4c134f){return{'name':_0x4c134f[_0x73f1('0x31')],'type':_0x4c134f[_0x73f1('0x32')][_0x73f1('0x33')]};});_0x55c70d[_0x73f1('0x34')]=_[_0x73f1('0x2f')](_0x3719fd,'name');_0x55c70d['query']=_[_0x73f1('0x35')](_0x2a452[_0x73f1('0x36')]);_0x55c70d[_0x73f1('0x37')]=_['intersection'](_0x55c70d['model'],_0x55c70d[_0x73f1('0x36')]);_0x5be1ff[_0x73f1('0x38')]=_[_0x73f1('0x39')](_0x55c70d[_0x73f1('0x34')],qs[_0x73f1('0x3a')](_0x2a452['query'][_0x73f1('0x3a')]));_0x5be1ff[_0x73f1('0x38')]=_0x5be1ff[_0x73f1('0x38')][_0x73f1('0x3b')]?_0x5be1ff[_0x73f1('0x38')]:_0x55c70d['model'];if(!_0x2a452[_0x73f1('0x36')][_0x73f1('0x3c')](_0x73f1('0x3d'))){_0x5be1ff[_0x73f1('0x21')]=qs[_0x73f1('0x21')](_0x2a452[_0x73f1('0x36')][_0x73f1('0x21')]);_0x5be1ff['offset']=qs[_0x73f1('0x1f')](_0x2a452[_0x73f1('0x36')][_0x73f1('0x1f')]);}_0x5be1ff['order']=qs[_0x73f1('0x3e')](_0x2a452[_0x73f1('0x36')]['sort']);_0x5be1ff[_0x73f1('0x3f')]=qs[_0x73f1('0x37')](_[_0x73f1('0x40')](_0x2a452[_0x73f1('0x36')],_0x55c70d['filters']),_0x3719fd);if(_0x2a452['query'][_0x73f1('0x41')]){_0x5be1ff[_0x73f1('0x3f')]=_[_0x73f1('0x42')](_0x5be1ff['where'],{'$or':_[_0x73f1('0x2f')](_0x3719fd,function(_0x3826b2){if(_0x3826b2[_0x73f1('0x32')]!=='VIRTUAL'){var _0x53be2c={};_0x53be2c[_0x3826b2[_0x73f1('0x2c')]]={'$like':'%'+_0x2a452[_0x73f1('0x36')]['filter']+'%'};return _0x53be2c;}})});}_0x5be1ff=_[_0x73f1('0x42')]({},_0x5be1ff,_0x2a452[_0x73f1('0x43')]);var _0x27dccc={'where':_0x5be1ff[_0x73f1('0x3f')]};return db[_0x73f1('0x44')][_0x73f1('0x22')](_0x27dccc)[_0x73f1('0x25')](function(_0x541cee){_0x793083[_0x73f1('0x22')]=_0x541cee;if(_0x2a452[_0x73f1('0x36')][_0x73f1('0x45')]){_0x5be1ff[_0x73f1('0x46')]=[{'all':!![]}];}return db[_0x73f1('0x44')][_0x73f1('0x47')](_0x5be1ff);})[_0x73f1('0x25')](function(_0x150f2a){_0x793083['rows']=_0x150f2a;return _0x793083;})['then'](respondWithFilteredResult(_0x440b1c,_0x5be1ff))['catch'](handleError(_0x440b1c,null));};exports[_0x73f1('0x48')]=function(_0x2e2bfc,_0x4cf1b5){var _0xd08a5c={'raw':!![],'where':{'id':_0x2e2bfc[_0x73f1('0x49')]['id']}},_0x1d10ba={};_0x1d10ba['model']=_[_0x73f1('0x35')](db[_0x73f1('0x44')]['rawAttributes']);_0x1d10ba[_0x73f1('0x36')]=_[_0x73f1('0x35')](_0x2e2bfc[_0x73f1('0x36')]);_0x1d10ba[_0x73f1('0x37')]=_[_0x73f1('0x39')](_0x1d10ba['model'],_0x1d10ba[_0x73f1('0x36')]);_0xd08a5c[_0x73f1('0x38')]=_[_0x73f1('0x39')](_0x1d10ba[_0x73f1('0x34')],qs['fields'](_0x2e2bfc['query'][_0x73f1('0x3a')]));_0xd08a5c[_0x73f1('0x38')]=_0xd08a5c[_0x73f1('0x38')][_0x73f1('0x3b')]?_0xd08a5c[_0x73f1('0x38')]:_0x1d10ba[_0x73f1('0x34')];if(_0x2e2bfc['query']['includeAll']){_0xd08a5c[_0x73f1('0x46')]=[{'all':!![]}];}_0xd08a5c=_[_0x73f1('0x42')]({},_0xd08a5c,_0x2e2bfc[_0x73f1('0x43')]);return db['FaxQueue'][_0x73f1('0x4a')](_0xd08a5c)[_0x73f1('0x25')](handleEntityNotFound(_0x4cf1b5,null))[_0x73f1('0x25')](respondWithResult(_0x4cf1b5,null))[_0x73f1('0x4b')](handleError(_0x4cf1b5,null));};exports[_0x73f1('0x4c')]=function(_0x4b5140,_0x465d0f){return db[_0x73f1('0x44')][_0x73f1('0x4c')](_0x4b5140['body'],{})[_0x73f1('0x25')](function(_0x54b2fb){var _0x3a567c=_0x4b5140[_0x73f1('0x4d')][_0x73f1('0x4e')]({'plain':!![]});if(!_0x3a567c)throw new Error(_0x73f1('0x4f'));if(_0x3a567c['role']===_0x73f1('0x4d')){var _0x45148e=_0x54b2fb[_0x73f1('0x4e')]({'plain':!![]});var _0x279a35=_0x73f1('0x27');return db[_0x73f1('0x50')][_0x73f1('0x4a')]({'where':{'name':_0x279a35,'userProfileId':_0x3a567c[_0x73f1('0x51')]},'raw':!![]})[_0x73f1('0x25')](function(_0x55dcce){if(_0x55dcce&&_0x55dcce['autoAssociation']===0x0){return db[_0x73f1('0x28')]['create']({'name':_0x45148e[_0x73f1('0x2c')],'resourceId':_0x45148e['id'],'type':_0x55dcce[_0x73f1('0x2c')],'sectionId':_0x55dcce['id']},{})['then'](function(){return _0x54b2fb;});}else{return _0x54b2fb;}})[_0x73f1('0x4b')](function(_0x1a95db){logger[_0x73f1('0x52')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1a95db);throw _0x1a95db;});}return _0x54b2fb;})['then'](respondWithResult(_0x465d0f,0xc9))[_0x73f1('0x4b')](handleError(_0x465d0f,null));};exports[_0x73f1('0x53')]=function(_0x1f06b3,_0x42d2f3){if(_0x1f06b3['body']['id']){delete _0x1f06b3['body']['id'];}return db[_0x73f1('0x44')][_0x73f1('0x4a')]({'where':{'id':_0x1f06b3[_0x73f1('0x49')]['id']}})[_0x73f1('0x25')](handleEntityNotFound(_0x42d2f3,null))[_0x73f1('0x25')](saveUpdates(_0x1f06b3['body'],null))[_0x73f1('0x25')](respondWithResult(_0x42d2f3,null))[_0x73f1('0x4b')](handleError(_0x42d2f3,null));};exports['destroy']=function(_0x54b99f,_0x1d4a9c){return db['FaxQueue'][_0x73f1('0x4a')]({'where':{'id':_0x54b99f['params']['id']}})[_0x73f1('0x25')](handleEntityNotFound(_0x1d4a9c,null))[_0x73f1('0x25')](removeEntity(_0x1d4a9c,null))['catch'](handleError(_0x1d4a9c,null));};exports[_0x73f1('0x54')]=function(_0x25f458,_0x1d2246){return db[_0x73f1('0x44')][_0x73f1('0x54')]()['then'](respondWithResult(_0x1d2246,null))[_0x73f1('0x4b')](handleError(_0x1d2246,null));};exports[_0x73f1('0x55')]=function(_0x5f3100,_0x3985f1,_0x69369f){var _0x5c90db={'raw':!![],'where':{}},_0x4aa3f6={},_0x3d07bc;return db[_0x73f1('0x44')][_0x73f1('0x56')]({'where':{'id':_0x5f3100[_0x73f1('0x49')]['id']}})['then'](handleEntityNotFound(_0x3985f1,null))[_0x73f1('0x25')](function(_0x5220df){if(_0x5220df){_0x3d07bc=_0x5220df[_0x73f1('0x4e')]({'plain':!![]});_0x4aa3f6[_0x73f1('0x34')]=_['keys'](db[_0x73f1('0x57')]['rawAttributes']);_0x4aa3f6['query']=_['keys'](_0x5f3100[_0x73f1('0x36')]);_0x4aa3f6[_0x73f1('0x37')]=_[_0x73f1('0x39')](_0x4aa3f6[_0x73f1('0x34')],_0x4aa3f6[_0x73f1('0x36')]);_0x5c90db[_0x73f1('0x38')]=_[_0x73f1('0x39')](_0x4aa3f6['model'],qs[_0x73f1('0x3a')](_0x5f3100['query'][_0x73f1('0x3a')]));_0x5c90db['attributes']=_0x5c90db[_0x73f1('0x38')][_0x73f1('0x3b')]?_0x5c90db[_0x73f1('0x38')]:_0x4aa3f6[_0x73f1('0x34')];if(!_0x5f3100[_0x73f1('0x36')][_0x73f1('0x3c')](_0x73f1('0x3d'))){_0x5c90db[_0x73f1('0x21')]=qs[_0x73f1('0x21')](_0x5f3100[_0x73f1('0x36')][_0x73f1('0x21')]);_0x5c90db[_0x73f1('0x1f')]=qs['offset'](_0x5f3100[_0x73f1('0x36')][_0x73f1('0x1f')]);}_0x5c90db[_0x73f1('0x58')]=qs[_0x73f1('0x3e')](_0x5f3100[_0x73f1('0x36')][_0x73f1('0x3e')]);_0x5c90db[_0x73f1('0x3f')]=qs['filters'](_[_0x73f1('0x40')](_0x5f3100[_0x73f1('0x36')],_0x4aa3f6[_0x73f1('0x37')]));_0x5c90db['where'][_0x73f1('0x59')]=_0x5220df['id'];if(_0x5f3100[_0x73f1('0x36')][_0x73f1('0x41')]){_0x5c90db[_0x73f1('0x3f')]=_[_0x73f1('0x42')](_0x5c90db[_0x73f1('0x3f')],{'$or':_['map'](_0x5c90db[_0x73f1('0x38')],function(_0x455e3e){var _0x4ccc58={};_0x4ccc58[_0x455e3e]={'$like':'%'+_0x5f3100[_0x73f1('0x36')][_0x73f1('0x41')]+'%'};return _0x4ccc58;})});}_0x5c90db=_[_0x73f1('0x42')]({},_0x5c90db,_0x5f3100[_0x73f1('0x43')]);return db[_0x73f1('0x57')][_0x73f1('0x47')](_0x5c90db);}})[_0x73f1('0x25')](function(_0x27c101){if(_0x27c101){return db[_0x73f1('0x5a')][_0x73f1('0x5b')]({'where':{'id':_[_0x73f1('0x2f')](_0x27c101,_0x73f1('0x5c')),'role':_0x73f1('0x5d')},'attributes':['id','name',_0x73f1('0x5e'),_0x73f1('0x5f'),_0x73f1('0x60')]});}})['then'](function(_0x3ff615){if(_0x3ff615){return{'count':_0x3ff615['count'],'rows':_[_0x73f1('0x2f')](_0x3ff615[_0x73f1('0x61')],function(_0x2cf5bd){return{'membername':_0x2cf5bd[_0x73f1('0x2c')],'UserId':_0x2cf5bd['id'],'queue_name':_0x3d07bc[_0x73f1('0x2c')],'FaxQueueId':_0x3d07bc['id'],'interface':util[_0x73f1('0x62')](_0x73f1('0x63'),'SIP',_0x2cf5bd[_0x73f1('0x2c')]),'penalty':0x0,'paused':_0x2cf5bd[_0x73f1('0x5e')],'createdAt':_0x2cf5bd['createdAt'],'updatedAt':_0x2cf5bd['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x73f1('0x25')](respondWithFilteredResult(_0x3985f1,_0x5c90db))['catch'](handleError(_0x3985f1,null));};exports['getTeams']=function(_0x337c56,_0x517e2a,_0x102153){var _0x5545a0={};var _0x3a1c0b={};var _0x22dd27;var _0x135388;return db[_0x73f1('0x44')][_0x73f1('0x56')]({'where':{'id':_0x337c56[_0x73f1('0x49')]['id']}})[_0x73f1('0x25')](handleEntityNotFound(_0x517e2a,null))['then'](function(_0x49490e){if(_0x49490e){_0x22dd27=_0x49490e;_0x3a1c0b['model']=_[_0x73f1('0x35')](db[_0x73f1('0x64')][_0x73f1('0x30')]);_0x3a1c0b['query']=_['keys'](_0x337c56[_0x73f1('0x36')]);_0x3a1c0b[_0x73f1('0x37')]=_['intersection'](_0x3a1c0b[_0x73f1('0x34')],_0x3a1c0b[_0x73f1('0x36')]);_0x5545a0[_0x73f1('0x38')]=_[_0x73f1('0x39')](_0x3a1c0b[_0x73f1('0x34')],qs[_0x73f1('0x3a')](_0x337c56[_0x73f1('0x36')][_0x73f1('0x3a')]));_0x5545a0[_0x73f1('0x38')]=_0x5545a0[_0x73f1('0x38')][_0x73f1('0x3b')]?_0x5545a0['attributes']:_0x3a1c0b[_0x73f1('0x34')];_0x5545a0[_0x73f1('0x58')]=qs[_0x73f1('0x3e')](_0x337c56[_0x73f1('0x36')][_0x73f1('0x3e')]);_0x5545a0[_0x73f1('0x3f')]=qs[_0x73f1('0x37')](_[_0x73f1('0x40')](_0x337c56[_0x73f1('0x36')],_0x3a1c0b[_0x73f1('0x37')]));if(_0x337c56[_0x73f1('0x36')]['filter']){_0x5545a0[_0x73f1('0x3f')]=_[_0x73f1('0x42')](_0x5545a0[_0x73f1('0x3f')],{'$or':_[_0x73f1('0x2f')](_0x5545a0[_0x73f1('0x38')],function(_0x5a5499){var _0x210d40={};_0x210d40[_0x5a5499]={'$like':'%'+_0x337c56[_0x73f1('0x36')]['filter']+'%'};return _0x210d40;})});}_0x5545a0=_['merge']({},_0x5545a0,_0x337c56[_0x73f1('0x43')]);return _0x22dd27['getTeams'](_0x5545a0);}})[_0x73f1('0x25')](function(_0x56203e){if(_0x56203e){_0x135388=_0x56203e[_0x73f1('0x3b')];if(!_0x337c56[_0x73f1('0x36')][_0x73f1('0x3c')](_0x73f1('0x3d'))){_0x5545a0['limit']=qs['limit'](_0x337c56[_0x73f1('0x36')][_0x73f1('0x21')]);_0x5545a0[_0x73f1('0x1f')]=qs[_0x73f1('0x1f')](_0x337c56[_0x73f1('0x36')][_0x73f1('0x1f')]);}return _0x22dd27[_0x73f1('0x65')](_0x5545a0);}})[_0x73f1('0x25')](function(_0x3448b8){if(_0x3448b8){return _0x3448b8?{'count':_0x135388,'rows':_0x3448b8}:null;}})['then'](respondWithResult(_0x517e2a,null))['catch'](handleError(_0x517e2a,null));};exports[_0x73f1('0x66')]=function(_0x41b6e3,_0x4f5704,_0x5210b6){var _0x3136cb=_0x41b6e3[_0x73f1('0x67')][_0x73f1('0x68')];return db[_0x73f1('0x64')][_0x73f1('0x47')]({'where':{'id':_0x3136cb},'attributes':['id'],'include':[{'model':db['User'],'as':_0x73f1('0x69'),'attributes':['id',_0x73f1('0x2c'),'online',_0x73f1('0x6a'),'interface'],'raw':!![]}]})['then'](function(_0x42b070){if(_0x42b070){var _0x23a323=_['flatMap'](_0x42b070,function(_0x22431a){var _0x1c9370=_0x22431a[_0x73f1('0x4e')]({'plain':!![]});return _0x1c9370[_0x73f1('0x69')];});return db[_0x73f1('0x44')]['find']({'where':{'id':_0x41b6e3[_0x73f1('0x49')]['id']}})[_0x73f1('0x25')](function(_0x496741){return db['sequelize'][_0x73f1('0x6b')](function(_0x922c72){return _0x496741['addTeams'](_0x3136cb,{'transaction':_0x922c72})[_0x73f1('0x25')](function(){return BPromise['each'](_0x23a323,function(_0xa19cce){return db[_0x73f1('0x57')][_0x73f1('0x6c')]({'where':{'UserId':_0xa19cce['id'],'FaxQueueId':_0x41b6e3[_0x73f1('0x49')]['id']},'transaction':_0x922c72});});})[_0x73f1('0x25')](function(){_0x23a323[_0x73f1('0x6d')](function(_0x8061f7){socket[_0x73f1('0x6e')](_0x73f1('0x6f'),{'UserId':_0x8061f7['id'],'FaxQueueId':_0x496741['id']});});});});});}})[_0x73f1('0x25')](respondWithStatusCode(_0x4f5704,null))[_0x73f1('0x4b')](handleError(_0x4f5704,null));};exports[_0x73f1('0x70')]=function(_0x1f2532,_0x215fc1,_0x1417ad){return db['Team'][_0x73f1('0x47')]({'where':{'id':_0x1f2532[_0x73f1('0x36')][_0x73f1('0x68')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x73f1('0x69'),'attributes':['id'],'raw':!![]}]})[_0x73f1('0x25')](handleEntityNotFound(_0x215fc1,null))[_0x73f1('0x25')](function(_0x3dfccc){var _0x58894a=_[_0x73f1('0x2f')](_0x3dfccc,'id');var _0x5333da=[];var _0x5dfead=[];var _0x1a75ad=squel[_0x73f1('0x71')]();_0x1a75ad['field'](_0x73f1('0x72'))[_0x73f1('0x73')](_0x73f1('0x74'),'tq')[_0x73f1('0x75')](_0x73f1('0x76'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x73f1('0x3f')](_0x73f1('0x77'),_0x1f2532[_0x73f1('0x49')]['id']);for(var _0xce0391=0x0;_0xce0391<_0x3dfccc[_0x73f1('0x3b')];_0xce0391+=0x1){let _0x38b73a=_0x3dfccc[_0xce0391];for(var _0x1c8c2d=0x0;_0x1c8c2d<_0x38b73a['Agents'][_0x73f1('0x3b')];_0x1c8c2d+=0x1){let _0x41e313=_0x38b73a[_0x73f1('0x69')][_0x1c8c2d];var _0x1a3d74=_0x1a75ad['clone']();_0x1a3d74[_0x73f1('0x3f')](_0x73f1('0x78'),_0x41e313['id']);_0x5dfead[_0x73f1('0x79')](db[_0x73f1('0x7a')][_0x73f1('0x36')](_0x1a3d74[_0x73f1('0x7b')](),{'type':db[_0x73f1('0x7a')][_0x73f1('0x7c')][_0x73f1('0x7d')]})[_0x73f1('0x25')](function(_0x5126e5){if(_0x5126e5[_0x73f1('0x3b')]===0x1){return _0x41e313['id'];}else{var _0x2b5a05=_[_0x73f1('0x7e')](_[_0x73f1('0x2f')](_0x5126e5,'TeamId'),function(_0x3e724b){return _['includes'](_0x58894a,_0x3e724b);});if(_0x2b5a05){return _0x41e313['id'];}}}));}}return BPromise['all'](_0x5dfead)[_0x73f1('0x25')](function(_0x590db3){_0x5333da=_(_0x5333da)[_0x73f1('0x7f')](_0x590db3)[_0x73f1('0x80')]()[_0x73f1('0x81')]();return db[_0x73f1('0x44')][_0x73f1('0x4a')]({'where':{'id':_0x1f2532[_0x73f1('0x49')]['id']}})[_0x73f1('0x25')](function(_0x3c7a8e){return db['sequelize'][_0x73f1('0x6b')](function(_0x38184e){return _0x3c7a8e[_0x73f1('0x70')](_0x1f2532[_0x73f1('0x36')]['ids'],{'transaction':_0x38184e})[_0x73f1('0x25')](function(){if(!_[_0x73f1('0x82')](_0x5333da)){return _0x3c7a8e[_0x73f1('0x83')](_0x5333da,{'transaction':_0x38184e});}})[_0x73f1('0x25')](function(){_0x5333da['forEach'](function(_0x10c90a){socket[_0x73f1('0x6e')](_0x73f1('0x84'),{'UserId':_0x10c90a,'FaxQueueId':_0x3c7a8e['id']});});});});});});})[_0x73f1('0x25')](respondWithStatusCode(_0x215fc1,null))['catch'](handleError(_0x215fc1,null));};exports['addAgents']=function(_0x46b92d,_0x3a04f4,_0x32f67e){return db[_0x73f1('0x44')]['find']({'where':{'id':_0x46b92d['params']['id']}})[_0x73f1('0x25')](handleEntityNotFound(_0x3a04f4,null))['then'](function(_0x2424e8){if(_0x2424e8){return _0x2424e8[_0x73f1('0x85')](_0x46b92d[_0x73f1('0x67')]['ids'],_[_0x73f1('0x86')](_0x46b92d[_0x73f1('0x67')],[_0x73f1('0x68'),'id'])||{})[_0x73f1('0x87')](function(_0x478da3){for(var _0xe8c110=0x0;_0xe8c110<_0x46b92d[_0x73f1('0x67')][_0x73f1('0x68')][_0x73f1('0x3b')];_0xe8c110+=0x1){socket[_0x73f1('0x6e')]('userFaxQueue:save',{'UserId':Number(_0x46b92d[_0x73f1('0x67')]['ids'][_0xe8c110]),'FaxQueueId':Number(_0x46b92d['params']['id'])});}return _0x478da3;});}})[_0x73f1('0x25')](respondWithResult(_0x3a04f4,null))[_0x73f1('0x4b')](handleError(_0x3a04f4,null));};exports[_0x73f1('0x83')]=function(_0x22781a,_0x3c248e,_0x9c33be){return db[_0x73f1('0x44')][_0x73f1('0x4a')]({'where':{'id':_0x22781a['params']['id']}})['then'](handleEntityNotFound(_0x3c248e,null))[_0x73f1('0x25')](function(_0x66c403){if(_0x66c403){return _0x66c403[_0x73f1('0x83')](_0x22781a[_0x73f1('0x36')][_0x73f1('0x68')])[_0x73f1('0x25')](function(){if(_[_0x73f1('0x88')](_0x22781a['query']['ids'])){for(var _0x4b65de=0x0;_0x4b65de<_0x22781a[_0x73f1('0x36')][_0x73f1('0x68')][_0x73f1('0x3b')];_0x4b65de+=0x1){socket[_0x73f1('0x6e')](_0x73f1('0x84'),{'UserId':Number(_0x22781a[_0x73f1('0x36')][_0x73f1('0x68')][_0x4b65de]),'FaxQueueId':Number(_0x22781a['params']['id'])});}}else{socket[_0x73f1('0x6e')](_0x73f1('0x84'),{'UserId':Number(_0x22781a[_0x73f1('0x36')]['ids']),'FaxQueueId':Number(_0x22781a[_0x73f1('0x49')]['id'])});}});}})[_0x73f1('0x25')](respondWithStatusCode(_0x3c248e,null))[_0x73f1('0x4b')](handleError(_0x3c248e,null));};exports[_0x73f1('0x89')]=function(_0x376248,_0x4ff718,_0x3ea884){var _0x58c74c={};var _0x2b600a={};var _0x4e575c;var _0x25f3fb;return db[_0x73f1('0x44')][_0x73f1('0x56')]({'where':{'id':_0x376248[_0x73f1('0x49')]['id']}})['then'](handleEntityNotFound(_0x4ff718,null))[_0x73f1('0x25')](function(_0x34e835){if(_0x34e835){_0x4e575c=_0x34e835;_0x2b600a[_0x73f1('0x34')]=_['keys'](db['User'][_0x73f1('0x30')]);_0x2b600a[_0x73f1('0x36')]=_['keys'](_0x376248[_0x73f1('0x36')]);_0x2b600a['filters']=_[_0x73f1('0x39')](_0x2b600a['model'],_0x2b600a[_0x73f1('0x36')]);_0x58c74c[_0x73f1('0x38')]=_[_0x73f1('0x39')](_0x2b600a[_0x73f1('0x34')],qs[_0x73f1('0x3a')](_0x376248['query'][_0x73f1('0x3a')]));_0x58c74c['attributes']=_0x58c74c[_0x73f1('0x38')][_0x73f1('0x3b')]?_0x58c74c[_0x73f1('0x38')]:_0x2b600a[_0x73f1('0x34')];_0x58c74c[_0x73f1('0x58')]=qs[_0x73f1('0x3e')](_0x376248[_0x73f1('0x36')][_0x73f1('0x3e')]);_0x58c74c[_0x73f1('0x3f')]=qs[_0x73f1('0x37')](_[_0x73f1('0x40')](_0x376248[_0x73f1('0x36')],_0x2b600a[_0x73f1('0x37')]));if(_0x376248[_0x73f1('0x36')][_0x73f1('0x41')]){_0x58c74c['where']=_[_0x73f1('0x42')](_0x58c74c[_0x73f1('0x3f')],{'$or':_[_0x73f1('0x2f')](_0x58c74c[_0x73f1('0x38')],function(_0x2f4714){var _0x4bbdc3={};_0x4bbdc3[_0x2f4714]={'$like':'%'+_0x376248[_0x73f1('0x36')][_0x73f1('0x41')]+'%'};return _0x4bbdc3;})});}_0x58c74c=_[_0x73f1('0x42')]({},_0x58c74c,_0x376248[_0x73f1('0x43')]);return _0x4e575c[_0x73f1('0x89')](_0x58c74c);}})['then'](function(_0x1db14a){if(_0x1db14a){_0x25f3fb=_0x1db14a[_0x73f1('0x3b')];if(!_0x376248['query'][_0x73f1('0x3c')]('nolimit')){_0x58c74c[_0x73f1('0x21')]=qs[_0x73f1('0x21')](_0x376248['query']['limit']);_0x58c74c[_0x73f1('0x1f')]=qs[_0x73f1('0x1f')](_0x376248[_0x73f1('0x36')][_0x73f1('0x1f')]);}return _0x4e575c['getAgents'](_0x58c74c);}})['then'](function(_0x16c589){if(_0x16c589){return _0x16c589?{'count':_0x25f3fb,'rows':_0x16c589}:null;}})[_0x73f1('0x25')](respondWithResult(_0x4ff718,null))[_0x73f1('0x4b')](handleError(_0x4ff718,null));};
\ No newline at end of file
+var _0x4521=['getMembers','findOne','UserFaxQueue','FaxQueueId','findAndCountAll','UserId','faxPause','updatedAt','createdAt','format','getTeams','Team','addTeams','ids','User','online','interface','Agents','sequelize','transaction','each','findOrCreate','forEach','emit','userFaxQueue:save','removeTeams','select','from','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','FaxQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','SELECT','every','TeamId','includes','all','compact','value','isEmpty','userFaxQueue:remove','addAgents','omit','spread','removeAgents','isArray','getAgents','fast-json-patch','request-promise','moment','bluebird','mustache','util','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxQueue.socket','register','sendStatus','status','json','offset','undefined','limit','count','Content-Range','save','update','then','get','FaxQueues','UserProfileResource','end','error','stack','name','send','map','FaxQueue','fieldName','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','include','findAll','rows','catch','params','rawAttributes','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','find','describe'];(function(_0x53647d,_0x3d357f){var _0x4843ae=function(_0xc7da9c){while(--_0xc7da9c){_0x53647d['push'](_0x53647d['shift']());}};_0x4843ae(++_0x3d357f);}(_0x4521,0xbd));var _0x1452=function(_0x847b26,_0x221ee5){_0x847b26=_0x847b26-0x0;var _0x52b424=_0x4521[_0x847b26];return _0x52b424;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x1452('0x0'));var rp=require(_0x1452('0x1'));var moment=require(_0x1452('0x2'));var BPromise=require(_0x1452('0x3'));var Mustache=require(_0x1452('0x4'));var util=require(_0x1452('0x5'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x1452('0x6'));var fs=require('fs');var fs_extra=require(_0x1452('0x7'));var _=require(_0x1452('0x8'));var squel=require(_0x1452('0x9'));var crypto=require(_0x1452('0xa'));var jsforce=require(_0x1452('0xb'));var deskjs=require(_0x1452('0xc'));var toCsv=require(_0x1452('0xd'));var querystring=require(_0x1452('0xe'));var Papa=require('papaparse');var Redis=require(_0x1452('0xf'));var authService=require(_0x1452('0x10'));var qs=require(_0x1452('0x11'));var as=require(_0x1452('0x12'));var hardwareService=require(_0x1452('0x13'));var logger=require(_0x1452('0x14'))('api');var utils=require('../../config/utils');var config=require(_0x1452('0x15'));var licenseUtil=require(_0x1452('0x16'));var db=require(_0x1452('0x17'))['db'];config[_0x1452('0x18')]=_[_0x1452('0x19')](config[_0x1452('0x18')],{'host':_0x1452('0x1a'),'port':0x18eb});var socket=require(_0x1452('0x1b'))(new Redis(config[_0x1452('0x18')]));require(_0x1452('0x1c'))[_0x1452('0x1d')](socket);function respondWithStatusCode(_0x55960f,_0x42c456){_0x42c456=_0x42c456||0xcc;return function(_0x9f4f0b){if(_0x9f4f0b){return _0x55960f[_0x1452('0x1e')](_0x42c456);}return _0x55960f['status'](_0x42c456)['end']();};}function respondWithResult(_0x27a0f4,_0x1a8c50){_0x1a8c50=_0x1a8c50||0xc8;return function(_0xb030e){if(_0xb030e){return _0x27a0f4[_0x1452('0x1f')](_0x1a8c50)[_0x1452('0x20')](_0xb030e);}};}function respondWithFilteredResult(_0x34921d,_0x1b0508){return function(_0x5e44da){if(_0x5e44da){var _0x267084=typeof _0x1b0508[_0x1452('0x21')]===_0x1452('0x22')&&typeof _0x1b0508[_0x1452('0x23')]==='undefined';var _0x12a563=_0x5e44da['count'];var _0x5e3914=_0x267084?0x0:_0x1b0508[_0x1452('0x21')];var _0x385fa7=_0x267084?_0x5e44da[_0x1452('0x24')]:_0x1b0508[_0x1452('0x21')]+_0x1b0508['limit'];var _0x524015;if(_0x385fa7>=_0x12a563){_0x385fa7=_0x12a563;_0x524015=0xc8;}else{_0x524015=0xce;}_0x34921d[_0x1452('0x1f')](_0x524015);return _0x34921d['set'](_0x1452('0x25'),_0x5e3914+'-'+_0x385fa7+'/'+_0x12a563)[_0x1452('0x20')](_0x5e44da);}return null;};}function patchUpdates(_0x56335d){return function(_0x548be5){try{jsonpatch['apply'](_0x548be5,_0x56335d,!![]);}catch(_0x43840c){return BPromise['reject'](_0x43840c);}return _0x548be5[_0x1452('0x26')]();};}function saveUpdates(_0x20297a,_0xbb06a4){return function(_0x529319){if(_0x529319){return _0x529319[_0x1452('0x27')](_0x20297a)[_0x1452('0x28')](function(_0x5b7a44){return _0x5b7a44;});}return null;};}function removeEntity(_0x3d6ea3,_0x3b27f4){return function(_0xdcf4b9){if(_0xdcf4b9){return _0xdcf4b9['destroy']()[_0x1452('0x28')](function(){var _0xe9f108=_0xdcf4b9[_0x1452('0x29')]({'plain':!![]});var _0x41a977=_0x1452('0x2a');return db[_0x1452('0x2b')]['destroy']({'where':{'type':_0x41a977,'resourceId':_0xe9f108['id']}})[_0x1452('0x28')](function(){return _0xdcf4b9;});})[_0x1452('0x28')](function(){_0x3d6ea3['status'](0xcc)[_0x1452('0x2c')]();});}};}function handleEntityNotFound(_0x1cb02a,_0x10aae3){return function(_0x2d0d9a){if(!_0x2d0d9a){_0x1cb02a[_0x1452('0x1e')](0x194);}return _0x2d0d9a;};}function handleError(_0x100a01,_0x5224da){_0x5224da=_0x5224da||0x1f4;return function(_0x3c3154){logger[_0x1452('0x2d')](_0x3c3154[_0x1452('0x2e')]);if(_0x3c3154[_0x1452('0x2f')]){delete _0x3c3154[_0x1452('0x2f')];}_0x100a01[_0x1452('0x1f')](_0x5224da)[_0x1452('0x30')](_0x3c3154);};}exports['index']=function(_0x361f07,_0x21f403){var _0x53f552={},_0x5d736c={},_0x1fe709={'count':0x0,'rows':[]};var _0x265c24=_[_0x1452('0x31')](db[_0x1452('0x32')]['rawAttributes'],function(_0x33036b){return{'name':_0x33036b[_0x1452('0x33')],'type':_0x33036b['type'][_0x1452('0x34')]};});_0x5d736c[_0x1452('0x35')]=_[_0x1452('0x31')](_0x265c24,_0x1452('0x2f'));_0x5d736c['query']=_[_0x1452('0x36')](_0x361f07[_0x1452('0x37')]);_0x5d736c['filters']=_[_0x1452('0x38')](_0x5d736c[_0x1452('0x35')],_0x5d736c[_0x1452('0x37')]);_0x53f552[_0x1452('0x39')]=_[_0x1452('0x38')](_0x5d736c[_0x1452('0x35')],qs[_0x1452('0x3a')](_0x361f07[_0x1452('0x37')][_0x1452('0x3a')]));_0x53f552[_0x1452('0x39')]=_0x53f552['attributes'][_0x1452('0x3b')]?_0x53f552[_0x1452('0x39')]:_0x5d736c[_0x1452('0x35')];if(!_0x361f07['query'][_0x1452('0x3c')](_0x1452('0x3d'))){_0x53f552[_0x1452('0x23')]=qs[_0x1452('0x23')](_0x361f07[_0x1452('0x37')][_0x1452('0x23')]);_0x53f552[_0x1452('0x21')]=qs['offset'](_0x361f07[_0x1452('0x37')]['offset']);}_0x53f552[_0x1452('0x3e')]=qs[_0x1452('0x3f')](_0x361f07[_0x1452('0x37')][_0x1452('0x3f')]);_0x53f552[_0x1452('0x40')]=qs[_0x1452('0x41')](_[_0x1452('0x42')](_0x361f07['query'],_0x5d736c['filters']),_0x265c24);if(_0x361f07[_0x1452('0x37')][_0x1452('0x43')]){_0x53f552[_0x1452('0x40')]=_[_0x1452('0x44')](_0x53f552[_0x1452('0x40')],{'$or':_[_0x1452('0x31')](_0x265c24,function(_0x2bb482){if(_0x2bb482[_0x1452('0x45')]!==_0x1452('0x46')){var _0x3f1918={};_0x3f1918[_0x2bb482[_0x1452('0x2f')]]={'$like':'%'+_0x361f07['query']['filter']+'%'};return _0x3f1918;}})});}_0x53f552=_['merge']({},_0x53f552,_0x361f07[_0x1452('0x47')]);var _0x4e1b82={'where':_0x53f552[_0x1452('0x40')]};return db[_0x1452('0x32')]['count'](_0x4e1b82)[_0x1452('0x28')](function(_0x80ae67){_0x1fe709[_0x1452('0x24')]=_0x80ae67;if(_0x361f07['query']['includeAll']){_0x53f552[_0x1452('0x48')]=[{'all':!![]}];}return db['FaxQueue'][_0x1452('0x49')](_0x53f552);})['then'](function(_0x4e38f9){_0x1fe709[_0x1452('0x4a')]=_0x4e38f9;return _0x1fe709;})[_0x1452('0x28')](respondWithFilteredResult(_0x21f403,_0x53f552))[_0x1452('0x4b')](handleError(_0x21f403,null));};exports['show']=function(_0x18a0c8,_0x4da442){var _0x1e185b={'raw':!![],'where':{'id':_0x18a0c8[_0x1452('0x4c')]['id']}},_0x3959b8={};_0x3959b8[_0x1452('0x35')]=_[_0x1452('0x36')](db['FaxQueue'][_0x1452('0x4d')]);_0x3959b8['query']=_['keys'](_0x18a0c8[_0x1452('0x37')]);_0x3959b8[_0x1452('0x41')]=_['intersection'](_0x3959b8[_0x1452('0x35')],_0x3959b8[_0x1452('0x37')]);_0x1e185b[_0x1452('0x39')]=_['intersection'](_0x3959b8[_0x1452('0x35')],qs[_0x1452('0x3a')](_0x18a0c8[_0x1452('0x37')][_0x1452('0x3a')]));_0x1e185b[_0x1452('0x39')]=_0x1e185b[_0x1452('0x39')][_0x1452('0x3b')]?_0x1e185b[_0x1452('0x39')]:_0x3959b8['model'];if(_0x18a0c8[_0x1452('0x37')]['includeAll']){_0x1e185b[_0x1452('0x48')]=[{'all':!![]}];}_0x1e185b=_[_0x1452('0x44')]({},_0x1e185b,_0x18a0c8['options']);return db['FaxQueue']['find'](_0x1e185b)[_0x1452('0x28')](handleEntityNotFound(_0x4da442,null))['then'](respondWithResult(_0x4da442,null))[_0x1452('0x4b')](handleError(_0x4da442,null));};exports[_0x1452('0x4e')]=function(_0x1a65f9,_0x463691){return db[_0x1452('0x32')][_0x1452('0x4e')](_0x1a65f9[_0x1452('0x4f')],{})[_0x1452('0x28')](function(_0x8542b0){var _0x9bf1e1=_0x1a65f9[_0x1452('0x50')][_0x1452('0x29')]({'plain':!![]});if(!_0x9bf1e1)throw new Error(_0x1452('0x51'));if(_0x9bf1e1[_0x1452('0x52')]===_0x1452('0x50')){var _0x4a4e3b=_0x8542b0[_0x1452('0x29')]({'plain':!![]});var _0x5777bc=_0x1452('0x2a');return db[_0x1452('0x53')]['find']({'where':{'name':_0x5777bc,'userProfileId':_0x9bf1e1['userProfileId']},'raw':!![]})['then'](function(_0x2422c7){if(_0x2422c7&&_0x2422c7[_0x1452('0x54')]===0x0){return db[_0x1452('0x2b')][_0x1452('0x4e')]({'name':_0x4a4e3b[_0x1452('0x2f')],'resourceId':_0x4a4e3b['id'],'type':_0x2422c7[_0x1452('0x2f')],'sectionId':_0x2422c7['id']},{})[_0x1452('0x28')](function(){return _0x8542b0;});}else{return _0x8542b0;}})['catch'](function(_0x5570c4){logger['error'](_0x1452('0x55'),_0x5570c4);throw _0x5570c4;});}return _0x8542b0;})[_0x1452('0x28')](respondWithResult(_0x463691,0xc9))[_0x1452('0x4b')](handleError(_0x463691,null));};exports[_0x1452('0x27')]=function(_0x3cf126,_0x5c296a){if(_0x3cf126[_0x1452('0x4f')]['id']){delete _0x3cf126[_0x1452('0x4f')]['id'];}return db['FaxQueue']['find']({'where':{'id':_0x3cf126[_0x1452('0x4c')]['id']}})[_0x1452('0x28')](handleEntityNotFound(_0x5c296a,null))[_0x1452('0x28')](saveUpdates(_0x3cf126[_0x1452('0x4f')],null))[_0x1452('0x28')](respondWithResult(_0x5c296a,null))['catch'](handleError(_0x5c296a,null));};exports[_0x1452('0x56')]=function(_0x3b5ff0,_0x266490){return db[_0x1452('0x32')][_0x1452('0x57')]({'where':{'id':_0x3b5ff0[_0x1452('0x4c')]['id']}})['then'](handleEntityNotFound(_0x266490,null))[_0x1452('0x28')](removeEntity(_0x266490,null))['catch'](handleError(_0x266490,null));};exports[_0x1452('0x58')]=function(_0x1eeca3,_0x1ee5f4){return db[_0x1452('0x32')][_0x1452('0x58')]()['then'](respondWithResult(_0x1ee5f4,null))[_0x1452('0x4b')](handleError(_0x1ee5f4,null));};exports[_0x1452('0x59')]=function(_0x391d78,_0x51465a,_0x36ed4d){var _0x3b277d={'raw':!![],'where':{}},_0x429de4={},_0x11f417;return db[_0x1452('0x32')][_0x1452('0x5a')]({'where':{'id':_0x391d78[_0x1452('0x4c')]['id']}})['then'](handleEntityNotFound(_0x51465a,null))[_0x1452('0x28')](function(_0x11536f){if(_0x11536f){_0x11f417=_0x11536f['get']({'plain':!![]});_0x429de4[_0x1452('0x35')]=_[_0x1452('0x36')](db[_0x1452('0x5b')][_0x1452('0x4d')]);_0x429de4[_0x1452('0x37')]=_[_0x1452('0x36')](_0x391d78[_0x1452('0x37')]);_0x429de4[_0x1452('0x41')]=_[_0x1452('0x38')](_0x429de4['model'],_0x429de4[_0x1452('0x37')]);_0x3b277d[_0x1452('0x39')]=_['intersection'](_0x429de4['model'],qs[_0x1452('0x3a')](_0x391d78[_0x1452('0x37')][_0x1452('0x3a')]));_0x3b277d['attributes']=_0x3b277d[_0x1452('0x39')][_0x1452('0x3b')]?_0x3b277d['attributes']:_0x429de4[_0x1452('0x35')];if(!_0x391d78['query'][_0x1452('0x3c')](_0x1452('0x3d'))){_0x3b277d['limit']=qs[_0x1452('0x23')](_0x391d78[_0x1452('0x37')][_0x1452('0x23')]);_0x3b277d['offset']=qs[_0x1452('0x21')](_0x391d78[_0x1452('0x37')][_0x1452('0x21')]);}_0x3b277d['order']=qs[_0x1452('0x3f')](_0x391d78[_0x1452('0x37')][_0x1452('0x3f')]);_0x3b277d[_0x1452('0x40')]=qs[_0x1452('0x41')](_[_0x1452('0x42')](_0x391d78[_0x1452('0x37')],_0x429de4['filters']));_0x3b277d[_0x1452('0x40')][_0x1452('0x5c')]=_0x11536f['id'];if(_0x391d78[_0x1452('0x37')]['filter']){_0x3b277d[_0x1452('0x40')]=_[_0x1452('0x44')](_0x3b277d['where'],{'$or':_['map'](_0x3b277d[_0x1452('0x39')],function(_0x5486bd){var _0x3f1f3b={};_0x3f1f3b[_0x5486bd]={'$like':'%'+_0x391d78[_0x1452('0x37')][_0x1452('0x43')]+'%'};return _0x3f1f3b;})});}_0x3b277d=_['merge']({},_0x3b277d,_0x391d78['options']);return db['UserFaxQueue']['findAll'](_0x3b277d);}})[_0x1452('0x28')](function(_0x22155e){if(_0x22155e){return db['User'][_0x1452('0x5d')]({'where':{'id':_[_0x1452('0x31')](_0x22155e,_0x1452('0x5e')),'role':'agent'},'attributes':['id',_0x1452('0x2f'),_0x1452('0x5f'),_0x1452('0x60'),_0x1452('0x61')]});}})[_0x1452('0x28')](function(_0x5e763d){if(_0x5e763d){return{'count':_0x5e763d[_0x1452('0x24')],'rows':_[_0x1452('0x31')](_0x5e763d[_0x1452('0x4a')],function(_0x149587){return{'membername':_0x149587[_0x1452('0x2f')],'UserId':_0x149587['id'],'queue_name':_0x11f417[_0x1452('0x2f')],'FaxQueueId':_0x11f417['id'],'interface':util[_0x1452('0x62')]('%s/%s','SIP',_0x149587[_0x1452('0x2f')]),'penalty':0x0,'paused':_0x149587['faxPause'],'createdAt':_0x149587[_0x1452('0x61')],'updatedAt':_0x149587[_0x1452('0x60')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x1452('0x28')](respondWithFilteredResult(_0x51465a,_0x3b277d))['catch'](handleError(_0x51465a,null));};exports[_0x1452('0x63')]=function(_0x206c42,_0x1344d9,_0x2c181b){var _0x4c6ead={};var _0x4c563b={};var _0x2d0a33;var _0x20d057;return db[_0x1452('0x32')][_0x1452('0x5a')]({'where':{'id':_0x206c42[_0x1452('0x4c')]['id']}})[_0x1452('0x28')](handleEntityNotFound(_0x1344d9,null))[_0x1452('0x28')](function(_0x5bae72){if(_0x5bae72){_0x2d0a33=_0x5bae72;_0x4c563b['model']=_[_0x1452('0x36')](db[_0x1452('0x64')][_0x1452('0x4d')]);_0x4c563b[_0x1452('0x37')]=_[_0x1452('0x36')](_0x206c42[_0x1452('0x37')]);_0x4c563b[_0x1452('0x41')]=_['intersection'](_0x4c563b['model'],_0x4c563b[_0x1452('0x37')]);_0x4c6ead[_0x1452('0x39')]=_[_0x1452('0x38')](_0x4c563b[_0x1452('0x35')],qs['fields'](_0x206c42[_0x1452('0x37')]['fields']));_0x4c6ead[_0x1452('0x39')]=_0x4c6ead[_0x1452('0x39')][_0x1452('0x3b')]?_0x4c6ead[_0x1452('0x39')]:_0x4c563b[_0x1452('0x35')];_0x4c6ead[_0x1452('0x3e')]=qs[_0x1452('0x3f')](_0x206c42[_0x1452('0x37')][_0x1452('0x3f')]);_0x4c6ead[_0x1452('0x40')]=qs['filters'](_[_0x1452('0x42')](_0x206c42[_0x1452('0x37')],_0x4c563b[_0x1452('0x41')]));if(_0x206c42['query']['filter']){_0x4c6ead[_0x1452('0x40')]=_[_0x1452('0x44')](_0x4c6ead[_0x1452('0x40')],{'$or':_['map'](_0x4c6ead[_0x1452('0x39')],function(_0x25e865){var _0x5cc105={};_0x5cc105[_0x25e865]={'$like':'%'+_0x206c42[_0x1452('0x37')][_0x1452('0x43')]+'%'};return _0x5cc105;})});}_0x4c6ead=_[_0x1452('0x44')]({},_0x4c6ead,_0x206c42[_0x1452('0x47')]);return _0x2d0a33[_0x1452('0x63')](_0x4c6ead);}})[_0x1452('0x28')](function(_0x19ea2c){if(_0x19ea2c){_0x20d057=_0x19ea2c['length'];if(!_0x206c42[_0x1452('0x37')][_0x1452('0x3c')](_0x1452('0x3d'))){_0x4c6ead[_0x1452('0x23')]=qs[_0x1452('0x23')](_0x206c42[_0x1452('0x37')]['limit']);_0x4c6ead[_0x1452('0x21')]=qs[_0x1452('0x21')](_0x206c42[_0x1452('0x37')][_0x1452('0x21')]);}return _0x2d0a33[_0x1452('0x63')](_0x4c6ead);}})['then'](function(_0x3b3eba){if(_0x3b3eba){return _0x3b3eba?{'count':_0x20d057,'rows':_0x3b3eba}:null;}})['then'](respondWithResult(_0x1344d9,null))['catch'](handleError(_0x1344d9,null));};exports[_0x1452('0x65')]=function(_0x5e2ccc,_0x10863b,_0x232e82){var _0x39aa9f=_0x5e2ccc[_0x1452('0x4f')][_0x1452('0x66')];return db[_0x1452('0x64')]['findAll']({'where':{'id':_0x39aa9f},'attributes':['id'],'include':[{'model':db[_0x1452('0x67')],'as':'Agents','attributes':['id',_0x1452('0x2f'),_0x1452('0x68'),'voicePause',_0x1452('0x69')],'raw':!![]}]})['then'](function(_0x5110ac){if(_0x5110ac){var _0x2926e2=_['flatMap'](_0x5110ac,function(_0x27870b){var _0x6103b6=_0x27870b[_0x1452('0x29')]({'plain':!![]});return _0x6103b6[_0x1452('0x6a')];});return db[_0x1452('0x32')][_0x1452('0x57')]({'where':{'id':_0x5e2ccc[_0x1452('0x4c')]['id']}})[_0x1452('0x28')](function(_0x443e56){return db[_0x1452('0x6b')][_0x1452('0x6c')](function(_0x147f65){return _0x443e56['addTeams'](_0x39aa9f,{'transaction':_0x147f65})[_0x1452('0x28')](function(){return BPromise[_0x1452('0x6d')](_0x2926e2,function(_0x35584e){return db[_0x1452('0x5b')][_0x1452('0x6e')]({'where':{'UserId':_0x35584e['id'],'FaxQueueId':_0x5e2ccc['params']['id']},'transaction':_0x147f65});});})[_0x1452('0x28')](function(){_0x2926e2[_0x1452('0x6f')](function(_0x57591f){socket[_0x1452('0x70')](_0x1452('0x71'),{'UserId':_0x57591f['id'],'FaxQueueId':_0x443e56['id']});});});});});}})[_0x1452('0x28')](respondWithStatusCode(_0x10863b,null))['catch'](handleError(_0x10863b,null));};exports[_0x1452('0x72')]=function(_0x1d355c,_0x46cea6,_0x476c65){return db['Team']['findAll']({'where':{'id':_0x1d355c[_0x1452('0x37')][_0x1452('0x66')]},'attributes':['id'],'include':[{'model':db[_0x1452('0x67')],'as':_0x1452('0x6a'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x46cea6,null))[_0x1452('0x28')](function(_0x207b9){var _0x5428c9=_[_0x1452('0x31')](_0x207b9,'id');var _0x4fb2f3=[];var _0x15baa5=[];var _0x16f75b=squel[_0x1452('0x73')]();_0x16f75b['field']('tq.TeamId')[_0x1452('0x74')]('team_has_fax_queues','tq')[_0x1452('0x75')](_0x1452('0x76'),'ut',_0x1452('0x77'))[_0x1452('0x40')](_0x1452('0x78'),_0x1d355c[_0x1452('0x4c')]['id']);for(var _0xd3aa83=0x0;_0xd3aa83<_0x207b9[_0x1452('0x3b')];_0xd3aa83+=0x1){let _0x235463=_0x207b9[_0xd3aa83];for(var _0x589f57=0x0;_0x589f57<_0x235463[_0x1452('0x6a')][_0x1452('0x3b')];_0x589f57+=0x1){let _0x30ddbf=_0x235463['Agents'][_0x589f57];var _0xea375e=_0x16f75b[_0x1452('0x79')]();_0xea375e[_0x1452('0x40')](_0x1452('0x7a'),_0x30ddbf['id']);_0x15baa5['push'](db[_0x1452('0x6b')][_0x1452('0x37')](_0xea375e[_0x1452('0x7b')](),{'type':db['sequelize']['QueryTypes'][_0x1452('0x7c')]})['then'](function(_0xd476ba){if(_0xd476ba[_0x1452('0x3b')]===0x1){return _0x30ddbf['id'];}else{var _0x30eb7f=_[_0x1452('0x7d')](_[_0x1452('0x31')](_0xd476ba,_0x1452('0x7e')),function(_0xbd4a7b){return _[_0x1452('0x7f')](_0x5428c9,_0xbd4a7b);});if(_0x30eb7f){return _0x30ddbf['id'];}}}));}}return BPromise[_0x1452('0x80')](_0x15baa5)[_0x1452('0x28')](function(_0x32dcf9){_0x4fb2f3=_(_0x4fb2f3)['union'](_0x32dcf9)[_0x1452('0x81')]()[_0x1452('0x82')]();return db[_0x1452('0x32')][_0x1452('0x57')]({'where':{'id':_0x1d355c['params']['id']}})[_0x1452('0x28')](function(_0x49a6f6){return db[_0x1452('0x6b')][_0x1452('0x6c')](function(_0x525340){return _0x49a6f6[_0x1452('0x72')](_0x1d355c[_0x1452('0x37')][_0x1452('0x66')],{'transaction':_0x525340})['then'](function(){if(!_[_0x1452('0x83')](_0x4fb2f3)){return _0x49a6f6['removeAgents'](_0x4fb2f3,{'transaction':_0x525340});}})['then'](function(){_0x4fb2f3[_0x1452('0x6f')](function(_0x1f5007){socket[_0x1452('0x70')](_0x1452('0x84'),{'UserId':_0x1f5007,'FaxQueueId':_0x49a6f6['id']});});});});});});})[_0x1452('0x28')](respondWithStatusCode(_0x46cea6,null))[_0x1452('0x4b')](handleError(_0x46cea6,null));};exports[_0x1452('0x85')]=function(_0x5eb588,_0xdd0535,_0x5912b2){return db[_0x1452('0x32')][_0x1452('0x57')]({'where':{'id':_0x5eb588['params']['id']}})[_0x1452('0x28')](handleEntityNotFound(_0xdd0535,null))['then'](function(_0x4853d1){if(_0x4853d1){return _0x4853d1[_0x1452('0x85')](_0x5eb588[_0x1452('0x4f')]['ids'],_[_0x1452('0x86')](_0x5eb588['body'],['ids','id'])||{})[_0x1452('0x87')](function(_0x1bbbf2){for(var _0x1c2d99=0x0;_0x1c2d99<_0x5eb588['body'][_0x1452('0x66')][_0x1452('0x3b')];_0x1c2d99+=0x1){socket['emit'](_0x1452('0x71'),{'UserId':Number(_0x5eb588[_0x1452('0x4f')][_0x1452('0x66')][_0x1c2d99]),'FaxQueueId':Number(_0x5eb588[_0x1452('0x4c')]['id'])});}return _0x1bbbf2;});}})[_0x1452('0x28')](respondWithResult(_0xdd0535,null))[_0x1452('0x4b')](handleError(_0xdd0535,null));};exports[_0x1452('0x88')]=function(_0x271535,_0x31fe75,_0x44103d){return db[_0x1452('0x32')]['find']({'where':{'id':_0x271535[_0x1452('0x4c')]['id']}})[_0x1452('0x28')](handleEntityNotFound(_0x31fe75,null))[_0x1452('0x28')](function(_0x46f465){if(_0x46f465){return _0x46f465[_0x1452('0x88')](_0x271535[_0x1452('0x37')][_0x1452('0x66')])[_0x1452('0x28')](function(){if(_[_0x1452('0x89')](_0x271535[_0x1452('0x37')][_0x1452('0x66')])){for(var _0x22fb07=0x0;_0x22fb07<_0x271535[_0x1452('0x37')][_0x1452('0x66')][_0x1452('0x3b')];_0x22fb07+=0x1){socket[_0x1452('0x70')](_0x1452('0x84'),{'UserId':Number(_0x271535[_0x1452('0x37')][_0x1452('0x66')][_0x22fb07]),'FaxQueueId':Number(_0x271535[_0x1452('0x4c')]['id'])});}}else{socket[_0x1452('0x70')](_0x1452('0x84'),{'UserId':Number(_0x271535[_0x1452('0x37')][_0x1452('0x66')]),'FaxQueueId':Number(_0x271535[_0x1452('0x4c')]['id'])});}});}})['then'](respondWithStatusCode(_0x31fe75,null))['catch'](handleError(_0x31fe75,null));};exports[_0x1452('0x8a')]=function(_0x542340,_0x5349b8,_0x14e109){var _0x5897ff={};var _0x9be57={};var _0x219a14;var _0x19d86e;return db[_0x1452('0x32')][_0x1452('0x5a')]({'where':{'id':_0x542340[_0x1452('0x4c')]['id']}})[_0x1452('0x28')](handleEntityNotFound(_0x5349b8,null))[_0x1452('0x28')](function(_0xe71cb0){if(_0xe71cb0){_0x219a14=_0xe71cb0;_0x9be57[_0x1452('0x35')]=_[_0x1452('0x36')](db[_0x1452('0x67')][_0x1452('0x4d')]);_0x9be57[_0x1452('0x37')]=_[_0x1452('0x36')](_0x542340[_0x1452('0x37')]);_0x9be57[_0x1452('0x41')]=_[_0x1452('0x38')](_0x9be57[_0x1452('0x35')],_0x9be57[_0x1452('0x37')]);_0x5897ff['attributes']=_[_0x1452('0x38')](_0x9be57[_0x1452('0x35')],qs[_0x1452('0x3a')](_0x542340[_0x1452('0x37')][_0x1452('0x3a')]));_0x5897ff[_0x1452('0x39')]=_0x5897ff['attributes'][_0x1452('0x3b')]?_0x5897ff[_0x1452('0x39')]:_0x9be57[_0x1452('0x35')];_0x5897ff['order']=qs[_0x1452('0x3f')](_0x542340[_0x1452('0x37')]['sort']);_0x5897ff['where']=qs['filters'](_[_0x1452('0x42')](_0x542340[_0x1452('0x37')],_0x9be57[_0x1452('0x41')]));if(_0x542340[_0x1452('0x37')][_0x1452('0x43')]){_0x5897ff['where']=_[_0x1452('0x44')](_0x5897ff[_0x1452('0x40')],{'$or':_['map'](_0x5897ff[_0x1452('0x39')],function(_0xe0d49e){var _0x33aed9={};_0x33aed9[_0xe0d49e]={'$like':'%'+_0x542340['query'][_0x1452('0x43')]+'%'};return _0x33aed9;})});}_0x5897ff=_[_0x1452('0x44')]({},_0x5897ff,_0x542340[_0x1452('0x47')]);return _0x219a14[_0x1452('0x8a')](_0x5897ff);}})[_0x1452('0x28')](function(_0x44fe1b){if(_0x44fe1b){_0x19d86e=_0x44fe1b[_0x1452('0x3b')];if(!_0x542340[_0x1452('0x37')]['hasOwnProperty'](_0x1452('0x3d'))){_0x5897ff[_0x1452('0x23')]=qs[_0x1452('0x23')](_0x542340[_0x1452('0x37')]['limit']);_0x5897ff[_0x1452('0x21')]=qs['offset'](_0x542340[_0x1452('0x37')][_0x1452('0x21')]);}return _0x219a14[_0x1452('0x8a')](_0x5897ff);}})[_0x1452('0x28')](function(_0x5d0cd6){if(_0x5d0cd6){return _0x5d0cd6?{'count':_0x19d86e,'rows':_0x5d0cd6}:null;}})[_0x1452('0x28')](respondWithResult(_0x5349b8,null))[_0x1452('0x4b')](handleError(_0x5349b8,null));};
\ No newline at end of file
index 62eddee..cea92ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba19=['remove','emit','hasOwnProperty','hook','exports','../../mysqldb','FaxQueue','update'];(function(_0x451829,_0x18cbd5){var _0x2e7eae=function(_0x12ab7d){while(--_0x12ab7d){_0x451829['push'](_0x451829['shift']());}};_0x2e7eae(++_0x18cbd5);}(_0xba19,0x16d));var _0x9ba1=function(_0x1cdf0a,_0x469560){_0x1cdf0a=_0x1cdf0a-0x0;var _0x49b63b=_0xba19[_0x1cdf0a];return _0x49b63b;};'use strict';var EventEmitter=require('events');var FaxQueue=require(_0x9ba1('0x0'))['db'][_0x9ba1('0x1')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x9ba1('0x2'),'afterDestroy':_0x9ba1('0x3')};function emitEvent(_0x5b102a){return function(_0x5dd09d,_0xbea0ed,_0x4a774d){FaxQueueEvents[_0x9ba1('0x4')](_0x5b102a+':'+_0x5dd09d['id'],_0x5dd09d);FaxQueueEvents[_0x9ba1('0x4')](_0x5b102a,_0x5dd09d);_0x4a774d(null);};}for(var e in events){if(events[_0x9ba1('0x5')](e)){var event=events[e];FaxQueue[_0x9ba1('0x6')](e,emitEvent(event));}}module[_0x9ba1('0x7')]=FaxQueueEvents;
\ No newline at end of file
+var _0x9085=['events','../../mysqldb','FaxQueue','setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x5093e9,_0x5154d0){var _0x4c9a22=function(_0x15176d){while(--_0x15176d){_0x5093e9['push'](_0x5093e9['shift']());}};_0x4c9a22(++_0x5154d0);}(_0x9085,0x1d6));var _0x5908=function(_0x18ccd6,_0x1098e8){_0x18ccd6=_0x18ccd6-0x0;var _0x587d2c=_0x9085[_0x18ccd6];return _0x587d2c;};'use strict';var EventEmitter=require(_0x5908('0x0'));var FaxQueue=require(_0x5908('0x1'))['db'][_0x5908('0x2')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0x5908('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x5908('0x4'),'afterDestroy':_0x5908('0x5')};function emitEvent(_0x2ce866){return function(_0x5ba13d,_0x14db9f,_0x4ebe22){FaxQueueEvents[_0x5908('0x6')](_0x2ce866+':'+_0x5ba13d['id'],_0x5ba13d);FaxQueueEvents[_0x5908('0x6')](_0x2ce866,_0x5ba13d);_0x4ebe22(null);};}for(var e in events){if(events[_0x5908('0x7')](e)){var event=events[e];FaxQueue[_0x5908('0x8')](e,emitEvent(event));}}module[_0x5908('0x9')]=FaxQueueEvents;
\ No newline at end of file
index ccec62e..acd4454 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf340=['exports','define','fax_queues','lodash','util','api','moment','bluebird','request-promise','path','rimraf','./faxQueue.attributes'];(function(_0xaad9f7,_0x1e07d0){var _0x30b0f3=function(_0x6a9455){while(--_0x6a9455){_0xaad9f7['push'](_0xaad9f7['shift']());}};_0x30b0f3(++_0x1e07d0);}(_0xf340,0x18f));var _0x0f34=function(_0x844eed,_0x3b1cf2){_0x844eed=_0x844eed-0x0;var _0x5b00b8=_0xf340[_0x844eed];return _0x5b00b8;};'use strict';var _=require(_0x0f34('0x0'));var util=require(_0x0f34('0x1'));var logger=require('../../config/logger')(_0x0f34('0x2'));var moment=require(_0x0f34('0x3'));var BPromise=require(_0x0f34('0x4'));var rp=require(_0x0f34('0x5'));var fs=require('fs');var path=require(_0x0f34('0x6'));var rimraf=require(_0x0f34('0x7'));var config=require('../../config/environment');var attributes=require(_0x0f34('0x8'));module[_0x0f34('0x9')]=function(_0x1421c7,_0x4d4d92){return _0x1421c7[_0x0f34('0xa')]('FaxQueue',attributes,{'tableName':_0x0f34('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xff32=['FaxQueue','fax_queues','lodash','util','../../config/logger','moment','bluebird','path','../../config/environment','./faxQueue.attributes','exports','define'];(function(_0x1da04e,_0x31024b){var _0xdd8c41=function(_0x2036f9){while(--_0x2036f9){_0x1da04e['push'](_0x1da04e['shift']());}};_0xdd8c41(++_0x31024b);}(_0xff32,0xb6));var _0x2ff3=function(_0xfff28b,_0x204443){_0xfff28b=_0xfff28b-0x0;var _0x13c9f0=_0xff32[_0xfff28b];return _0x13c9f0;};'use strict';var _=require(_0x2ff3('0x0'));var util=require(_0x2ff3('0x1'));var logger=require(_0x2ff3('0x2'))('api');var moment=require(_0x2ff3('0x3'));var BPromise=require(_0x2ff3('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2ff3('0x5'));var rimraf=require('rimraf');var config=require(_0x2ff3('0x6'));var attributes=require(_0x2ff3('0x7'));module[_0x2ff3('0x8')]=function(_0x2bfb8c,_0x53c8d0){return _0x2bfb8c[_0x2ff3('0x9')](_0x2ff3('0xa'),attributes,{'tableName':_0x2ff3('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bce3705..7de9988 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8be=['register','FaxQueue,\x20%s,\x20%s','request\x20sent','debug','FaxQueue,\x20%s,\x20%s,\x20%s','error','message','info','result','GetFaxQueue','FaxQueue','findAll','options','raw','where','attributes','include','map','model','then','stringify','ShowFaxQueue','find','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','redis','localhost','./faxQueue.socket'];(function(_0x3c7a71,_0x517570){var _0x1a2726=function(_0x1ea252){while(--_0x1ea252){_0x3c7a71['push'](_0x3c7a71['shift']());}};_0x1a2726(++_0x517570);}(_0xd8be,0x16e));var _0xed8b=function(_0x34843e,_0x4c4224){_0x34843e=_0x34843e-0x0;var _0x598f7f=_0xd8be[_0x34843e];return _0x598f7f;};'use strict';var _=require(_0xed8b('0x0'));var util=require(_0xed8b('0x1'));var moment=require(_0xed8b('0x2'));var BPromise=require(_0xed8b('0x3'));var rs=require(_0xed8b('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xed8b('0x5'))['db'];var utils=require(_0xed8b('0x6'));var logger=require(_0xed8b('0x7'))(_0xed8b('0x8'));var config=require(_0xed8b('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xed8b('0xa')]['http']({'port':0x232a});config[_0xed8b('0xb')]=_['defaults'](config[_0xed8b('0xb')],{'host':_0xed8b('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xed8b('0xb')]));require(_0xed8b('0xd'))[_0xed8b('0xe')](socket);function respondWithRpcPromise(_0x289780,_0x4c7e06,_0x58f273){return new BPromise(function(_0x280ef9,_0x2ba4d7){return client['request'](_0x289780,_0x58f273)['then'](function(_0x453d81){logger['info'](_0xed8b('0xf'),_0x4c7e06,_0xed8b('0x10'));logger[_0xed8b('0x11')](_0xed8b('0x12'),_0x4c7e06,_0xed8b('0x10'),JSON['stringify'](_0x453d81));if(_0x453d81[_0xed8b('0x13')]){if(_0x453d81[_0xed8b('0x13')]['code']===0x1f4){logger[_0xed8b('0x13')]('FaxQueue,\x20%s,\x20%s',_0x4c7e06,_0x453d81['error']['message']);return _0x2ba4d7(_0x453d81[_0xed8b('0x13')][_0xed8b('0x14')]);}logger[_0xed8b('0x13')](_0xed8b('0xf'),_0x4c7e06,_0x453d81[_0xed8b('0x13')][_0xed8b('0x14')]);return _0x280ef9(_0x453d81[_0xed8b('0x13')][_0xed8b('0x14')]);}else{logger[_0xed8b('0x15')](_0xed8b('0xf'),_0x4c7e06,_0xed8b('0x10'));_0x280ef9(_0x453d81[_0xed8b('0x16')]['message']);}})['catch'](function(_0x27e635){logger['error'](_0xed8b('0xf'),_0x4c7e06,_0x27e635);_0x2ba4d7(_0x27e635);});});}exports[_0xed8b('0x17')]=function(_0x4774a9){var _0x2a975e=this;return new Promise(function(_0x33079c,_0x45cac7){return db[_0xed8b('0x18')][_0xed8b('0x19')]({'raw':_0x4774a9[_0xed8b('0x1a')]?_0x4774a9[_0xed8b('0x1a')][_0xed8b('0x1b')]===undefined?!![]:![]:!![],'where':_0x4774a9[_0xed8b('0x1a')]?_0x4774a9['options'][_0xed8b('0x1c')]||null:null,'attributes':_0x4774a9[_0xed8b('0x1a')]?_0x4774a9[_0xed8b('0x1a')][_0xed8b('0x1d')]||null:null,'limit':_0x4774a9[_0xed8b('0x1a')]?_0x4774a9[_0xed8b('0x1a')]['limit']||null:null,'include':_0x4774a9[_0xed8b('0x1a')]?_0x4774a9[_0xed8b('0x1a')][_0xed8b('0x1e')]?_[_0xed8b('0x1f')](_0x4774a9[_0xed8b('0x1a')]['include'],function(_0x5aa274){return{'model':db[_0x5aa274[_0xed8b('0x20')]],'as':_0x5aa274['as'],'attributes':_0x5aa274['attributes'],'include':_0x5aa274['include']?_['map'](_0x5aa274['include'],function(_0x1c286f){return{'model':db[_0x1c286f['model']],'as':_0x1c286f['as'],'attributes':_0x1c286f[_0xed8b('0x1d')],'include':_0x1c286f[_0xed8b('0x1e')]?_[_0xed8b('0x1f')](_0x1c286f[_0xed8b('0x1e')],function(_0x105ea9){return{'model':db[_0x105ea9[_0xed8b('0x20')]],'as':_0x105ea9['as'],'attributes':_0x105ea9[_0xed8b('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xed8b('0x21')](function(_0x16352d){logger[_0xed8b('0x15')]('GetFaxQueue',_0x4774a9);logger[_0xed8b('0x11')](_0xed8b('0x17'),_0x4774a9,JSON[_0xed8b('0x22')](_0x16352d));_0x33079c(_0x16352d);})['catch'](function(_0x5853f2){logger[_0xed8b('0x13')]('GetFaxQueue',_0x5853f2[_0xed8b('0x14')],_0x4774a9);_0x45cac7(_0x2a975e[_0xed8b('0x13')](0x1f4,_0x5853f2[_0xed8b('0x14')]));});});};exports[_0xed8b('0x23')]=function(_0x15d76a){var _0x4a4b0b=this;return new Promise(function(_0x57d19c,_0x122442){return db['FaxQueue'][_0xed8b('0x24')]({'raw':_0x15d76a['options']?_0x15d76a[_0xed8b('0x1a')][_0xed8b('0x1b')]===undefined?!![]:![]:!![],'where':_0x15d76a[_0xed8b('0x1a')]?_0x15d76a[_0xed8b('0x1a')]['where']||null:null,'attributes':_0x15d76a[_0xed8b('0x1a')]?_0x15d76a[_0xed8b('0x1a')][_0xed8b('0x1d')]||null:null,'include':_0x15d76a[_0xed8b('0x1a')]?_0x15d76a[_0xed8b('0x1a')][_0xed8b('0x1e')]?_[_0xed8b('0x1f')](_0x15d76a['options'][_0xed8b('0x1e')],function(_0x291ee1){return{'model':db[_0x291ee1[_0xed8b('0x20')]],'as':_0x291ee1['as'],'attributes':_0x291ee1[_0xed8b('0x1d')],'include':_0x291ee1[_0xed8b('0x1e')]?_[_0xed8b('0x1f')](_0x291ee1[_0xed8b('0x1e')],function(_0x56a3d2){return{'model':db[_0x56a3d2[_0xed8b('0x20')]],'as':_0x56a3d2['as'],'attributes':_0x56a3d2['attributes'],'include':_0x56a3d2['include']?_[_0xed8b('0x1f')](_0x56a3d2[_0xed8b('0x1e')],function(_0x23c8e0){return{'model':db[_0x23c8e0[_0xed8b('0x20')]],'as':_0x23c8e0['as'],'attributes':_0x23c8e0['attributes']};}):[]};}):[]};}):[]:[]})[_0xed8b('0x21')](function(_0x16971c){logger[_0xed8b('0x15')](_0xed8b('0x23'),_0x15d76a);logger[_0xed8b('0x11')]('ShowFaxQueue',_0x15d76a,JSON[_0xed8b('0x22')](_0x16971c));_0x57d19c(_0x16971c);})[_0xed8b('0x25')](function(_0x3146fd){logger[_0xed8b('0x13')](_0xed8b('0x23'),_0x3146fd['message'],_0x15d76a);_0x122442(_0x4a4b0b[_0xed8b('0x13')](0x1f4,_0x3146fd[_0xed8b('0x14')]));});});};
\ No newline at end of file
+var _0xe114=['jayson/promise','client','http','redis','defaults','./faxQueue.socket','request','then','info','FaxQueue,\x20%s,\x20%s','request\x20sent','debug','FaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','GetFaxQueue','findAll','options','raw','where','attributes','include','model','map','FaxQueue','find','ShowFaxQueue','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger'];(function(_0xa90827,_0x374815){var _0x1f1aad=function(_0x524b89){while(--_0x524b89){_0xa90827['push'](_0xa90827['shift']());}};_0x1f1aad(++_0x374815);}(_0xe114,0x89));var _0x4e11=function(_0x53f8d7,_0x2abbee){_0x53f8d7=_0x53f8d7-0x0;var _0x48427b=_0xe114[_0x53f8d7];return _0x48427b;};'use strict';var _=require(_0x4e11('0x0'));var util=require(_0x4e11('0x1'));var moment=require(_0x4e11('0x2'));var BPromise=require('bluebird');var rs=require(_0x4e11('0x3'));var fs=require('fs');var Redis=require(_0x4e11('0x4'));var db=require(_0x4e11('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x4e11('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x4e11('0x7'));var client=jayson[_0x4e11('0x8')][_0x4e11('0x9')]({'port':0x232a});config[_0x4e11('0xa')]=_[_0x4e11('0xb')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4e11('0xa')]));require(_0x4e11('0xc'))['register'](socket);function respondWithRpcPromise(_0xe24f3a,_0x586ec0,_0x4c97f5){return new BPromise(function(_0x426d9a,_0x4585ce){return client[_0x4e11('0xd')](_0xe24f3a,_0x4c97f5)[_0x4e11('0xe')](function(_0x5371df){logger[_0x4e11('0xf')](_0x4e11('0x10'),_0x586ec0,_0x4e11('0x11'));logger[_0x4e11('0x12')](_0x4e11('0x13'),_0x586ec0,_0x4e11('0x11'),JSON[_0x4e11('0x14')](_0x5371df));if(_0x5371df[_0x4e11('0x15')]){if(_0x5371df[_0x4e11('0x15')]['code']===0x1f4){logger['error']('FaxQueue,\x20%s,\x20%s',_0x586ec0,_0x5371df[_0x4e11('0x15')][_0x4e11('0x16')]);return _0x4585ce(_0x5371df[_0x4e11('0x15')][_0x4e11('0x16')]);}logger[_0x4e11('0x15')](_0x4e11('0x10'),_0x586ec0,_0x5371df[_0x4e11('0x15')][_0x4e11('0x16')]);return _0x426d9a(_0x5371df[_0x4e11('0x15')][_0x4e11('0x16')]);}else{logger[_0x4e11('0xf')](_0x4e11('0x10'),_0x586ec0,'request\x20sent');_0x426d9a(_0x5371df['result'][_0x4e11('0x16')]);}})[_0x4e11('0x17')](function(_0xfef3bd){logger[_0x4e11('0x15')](_0x4e11('0x10'),_0x586ec0,_0xfef3bd);_0x4585ce(_0xfef3bd);});});}exports[_0x4e11('0x18')]=function(_0x496dd1){var _0x3978ae=this;return new Promise(function(_0x4abad3,_0x111b5f){return db['FaxQueue'][_0x4e11('0x19')]({'raw':_0x496dd1[_0x4e11('0x1a')]?_0x496dd1[_0x4e11('0x1a')][_0x4e11('0x1b')]===undefined?!![]:![]:!![],'where':_0x496dd1[_0x4e11('0x1a')]?_0x496dd1[_0x4e11('0x1a')][_0x4e11('0x1c')]||null:null,'attributes':_0x496dd1[_0x4e11('0x1a')]?_0x496dd1['options'][_0x4e11('0x1d')]||null:null,'limit':_0x496dd1[_0x4e11('0x1a')]?_0x496dd1[_0x4e11('0x1a')]['limit']||null:null,'include':_0x496dd1['options']?_0x496dd1[_0x4e11('0x1a')][_0x4e11('0x1e')]?_['map'](_0x496dd1[_0x4e11('0x1a')][_0x4e11('0x1e')],function(_0x2e8c55){return{'model':db[_0x2e8c55[_0x4e11('0x1f')]],'as':_0x2e8c55['as'],'attributes':_0x2e8c55['attributes'],'include':_0x2e8c55[_0x4e11('0x1e')]?_[_0x4e11('0x20')](_0x2e8c55[_0x4e11('0x1e')],function(_0x2223f7){return{'model':db[_0x2223f7[_0x4e11('0x1f')]],'as':_0x2223f7['as'],'attributes':_0x2223f7[_0x4e11('0x1d')],'include':_0x2223f7[_0x4e11('0x1e')]?_[_0x4e11('0x20')](_0x2223f7['include'],function(_0x1982d4){return{'model':db[_0x1982d4[_0x4e11('0x1f')]],'as':_0x1982d4['as'],'attributes':_0x1982d4[_0x4e11('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x4e11('0xe')](function(_0x2a2a4b){logger[_0x4e11('0xf')](_0x4e11('0x18'),_0x496dd1);logger[_0x4e11('0x12')](_0x4e11('0x18'),_0x496dd1,JSON[_0x4e11('0x14')](_0x2a2a4b));_0x4abad3(_0x2a2a4b);})[_0x4e11('0x17')](function(_0x1eb720){logger[_0x4e11('0x15')](_0x4e11('0x18'),_0x1eb720[_0x4e11('0x16')],_0x496dd1);_0x111b5f(_0x3978ae[_0x4e11('0x15')](0x1f4,_0x1eb720[_0x4e11('0x16')]));});});};exports['ShowFaxQueue']=function(_0x316345){var _0x424796=this;return new Promise(function(_0x56ff13,_0x184a12){return db[_0x4e11('0x21')][_0x4e11('0x22')]({'raw':_0x316345[_0x4e11('0x1a')]?_0x316345[_0x4e11('0x1a')][_0x4e11('0x1b')]===undefined?!![]:![]:!![],'where':_0x316345[_0x4e11('0x1a')]?_0x316345[_0x4e11('0x1a')][_0x4e11('0x1c')]||null:null,'attributes':_0x316345[_0x4e11('0x1a')]?_0x316345[_0x4e11('0x1a')]['attributes']||null:null,'include':_0x316345[_0x4e11('0x1a')]?_0x316345['options'][_0x4e11('0x1e')]?_['map'](_0x316345[_0x4e11('0x1a')][_0x4e11('0x1e')],function(_0x4c1bc1){return{'model':db[_0x4c1bc1[_0x4e11('0x1f')]],'as':_0x4c1bc1['as'],'attributes':_0x4c1bc1[_0x4e11('0x1d')],'include':_0x4c1bc1[_0x4e11('0x1e')]?_['map'](_0x4c1bc1[_0x4e11('0x1e')],function(_0x259136){return{'model':db[_0x259136[_0x4e11('0x1f')]],'as':_0x259136['as'],'attributes':_0x259136[_0x4e11('0x1d')],'include':_0x259136[_0x4e11('0x1e')]?_[_0x4e11('0x20')](_0x259136['include'],function(_0x6a0c8c){return{'model':db[_0x6a0c8c[_0x4e11('0x1f')]],'as':_0x6a0c8c['as'],'attributes':_0x6a0c8c[_0x4e11('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x4e11('0xe')](function(_0x56456b){logger[_0x4e11('0xf')](_0x4e11('0x23'),_0x316345);logger[_0x4e11('0x12')]('ShowFaxQueue',_0x316345,JSON['stringify'](_0x56456b));_0x56ff13(_0x56456b);})['catch'](function(_0x38c063){logger[_0x4e11('0x15')](_0x4e11('0x23'),_0x38c063[_0x4e11('0x16')],_0x316345);_0x184a12(_0x424796[_0x4e11('0x15')](0x1f4,_0x38c063[_0x4e11('0x16')]));});});};
\ No newline at end of file
index feb9367..f8059a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb8d9=['removeListener','faxQueue:','./faxQueue.events','save','remove','update','emit'];(function(_0xf090ee,_0x4ceb11){var _0x4e002f=function(_0x4b24c1){while(--_0x4b24c1){_0xf090ee['push'](_0xf090ee['shift']());}};_0x4e002f(++_0x4ceb11);}(_0xb8d9,0x175));var _0x9b8d=function(_0x193685,_0x2052b5){_0x193685=_0x193685-0x0;var _0x56f71f=_0xb8d9[_0x193685];return _0x56f71f;};'use strict';var FaxQueueEvents=require(_0x9b8d('0x0'));var events=[_0x9b8d('0x1'),_0x9b8d('0x2'),_0x9b8d('0x3')];function createListener(_0x1fb5eb,_0x1c200d){return function(_0x41e660){_0x1c200d[_0x9b8d('0x4')](_0x1fb5eb,_0x41e660);};}function removeListener(_0x3eb139,_0x27374f){return function(){FaxQueueEvents[_0x9b8d('0x5')](_0x3eb139,_0x27374f);};}exports['register']=function(_0x4a385f){for(var _0x3d7703=0x0,_0x41be69=events['length'];_0x3d7703<_0x41be69;_0x3d7703++){var _0x5c6d69=events[_0x3d7703];var _0x2f6edf=createListener(_0x9b8d('0x6')+_0x5c6d69,_0x4a385f);FaxQueueEvents['on'](_0x5c6d69,_0x2f6edf);}};
\ No newline at end of file
+var _0x8939=['save','remove','update','emit','removeListener','register','length'];(function(_0x423f29,_0x2ef854){var _0xc1f13e=function(_0x393856){while(--_0x393856){_0x423f29['push'](_0x423f29['shift']());}};_0xc1f13e(++_0x2ef854);}(_0x8939,0x12d));var _0x9893=function(_0x11999a,_0x41d06e){_0x11999a=_0x11999a-0x0;var _0x4255a6=_0x8939[_0x11999a];return _0x4255a6;};'use strict';var FaxQueueEvents=require('./faxQueue.events');var events=[_0x9893('0x0'),_0x9893('0x1'),_0x9893('0x2')];function createListener(_0x574a2c,_0x18ef1e){return function(_0x575fa3){_0x18ef1e[_0x9893('0x3')](_0x574a2c,_0x575fa3);};}function removeListener(_0x27f124,_0x4f85fd){return function(){FaxQueueEvents[_0x9893('0x4')](_0x27f124,_0x4f85fd);};}exports[_0x9893('0x5')]=function(_0x5aee08){for(var _0x1e1654=0x0,_0x415e95=events[_0x9893('0x6')];_0x1e1654<_0x415e95;_0x1e1654++){var _0x1c97d0=events[_0x1e1654];var _0x13ff86=createListener('faxQueue:'+_0x1c97d0,_0x5aee08);FaxQueueEvents['on'](_0x1c97d0,_0x13ff86);}};
\ No newline at end of file
index acf40a4..fcffa8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f8a=['delete','destroy','removeAgents','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','getMembers','getTeams','/:id/users','getAgents','post','create','/:id/teams','addAgents','update'];(function(_0x53d687,_0xf02614){var _0x28f113=function(_0x579f9c){while(--_0x579f9c){_0x53d687['push'](_0x53d687['shift']());}};_0x28f113(++_0xf02614);}(_0x3f8a,0x1d5));var _0xa3f8=function(_0x52a39a,_0x40b582){_0x52a39a=_0x52a39a-0x0;var _0x5c2d68=_0x3f8a[_0x52a39a];return _0x5c2d68;};'use strict';var multer=require(_0xa3f8('0x0'));var util=require(_0xa3f8('0x1'));var path=require(_0xa3f8('0x2'));var timeout=require(_0xa3f8('0x3'));var express=require('express');var router=express[_0xa3f8('0x4')]();var fs_extra=require(_0xa3f8('0x5'));var auth=require(_0xa3f8('0x6'));var interaction=require(_0xa3f8('0x7'));var config=require(_0xa3f8('0x8'));var controller=require(_0xa3f8('0x9'));router[_0xa3f8('0xa')]('/',auth[_0xa3f8('0xb')](),controller[_0xa3f8('0xc')]);router[_0xa3f8('0xa')](_0xa3f8('0xd'),auth[_0xa3f8('0xb')](),controller[_0xa3f8('0xe')]);router[_0xa3f8('0xa')](_0xa3f8('0xf'),auth[_0xa3f8('0xb')](),controller[_0xa3f8('0x10')]);router['get'](_0xa3f8('0x11'),auth[_0xa3f8('0xb')](),controller[_0xa3f8('0x12')]);router[_0xa3f8('0xa')]('/:id/teams',auth[_0xa3f8('0xb')](),controller[_0xa3f8('0x13')]);router[_0xa3f8('0xa')](_0xa3f8('0x14'),auth[_0xa3f8('0xb')](),controller[_0xa3f8('0x15')]);router[_0xa3f8('0x16')]('/',auth[_0xa3f8('0xb')](),controller[_0xa3f8('0x17')]);router[_0xa3f8('0x16')](_0xa3f8('0x18'),auth[_0xa3f8('0xb')](),controller['addTeams']);router[_0xa3f8('0x16')](_0xa3f8('0x14'),auth[_0xa3f8('0xb')](),controller[_0xa3f8('0x19')]);router['put'](_0xa3f8('0xf'),auth[_0xa3f8('0xb')](),controller[_0xa3f8('0x1a')]);router[_0xa3f8('0x1b')](_0xa3f8('0xf'),auth[_0xa3f8('0xb')](),controller[_0xa3f8('0x1c')]);router[_0xa3f8('0x1b')](_0xa3f8('0x18'),auth[_0xa3f8('0xb')](),controller['removeTeams']);router[_0xa3f8('0x1b')]('/:id/users',auth[_0xa3f8('0xb')](),controller[_0xa3f8('0x1d')]);module[_0xa3f8('0x1e')]=router;
\ No newline at end of file
+var _0x5d0a=['fs-extra','../../components/auth/service','../../config/environment','./faxQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','create','post','/:id/users','addAgents','put','delete','destroy','removeTeams','removeAgents','exports','multer','path','express','Router'];(function(_0x8d95a3,_0x735f63){var _0x1acf63=function(_0x329f34){while(--_0x329f34){_0x8d95a3['push'](_0x8d95a3['shift']());}};_0x1acf63(++_0x735f63);}(_0x5d0a,0x175));var _0xa5d0=function(_0x4a72fd,_0xe3983){_0x4a72fd=_0x4a72fd-0x0;var _0x486561=_0x5d0a[_0x4a72fd];return _0x486561;};'use strict';var multer=require(_0xa5d0('0x0'));var util=require('util');var path=require(_0xa5d0('0x1'));var timeout=require('connect-timeout');var express=require(_0xa5d0('0x2'));var router=express[_0xa5d0('0x3')]();var fs_extra=require(_0xa5d0('0x4'));var auth=require(_0xa5d0('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xa5d0('0x6'));var controller=require(_0xa5d0('0x7'));router[_0xa5d0('0x8')]('/',auth[_0xa5d0('0x9')](),controller[_0xa5d0('0xa')]);router[_0xa5d0('0x8')](_0xa5d0('0xb'),auth[_0xa5d0('0x9')](),controller[_0xa5d0('0xc')]);router[_0xa5d0('0x8')](_0xa5d0('0xd'),auth['isAuthenticated'](),controller[_0xa5d0('0xe')]);router[_0xa5d0('0x8')](_0xa5d0('0xf'),auth[_0xa5d0('0x9')](),controller[_0xa5d0('0x10')]);router[_0xa5d0('0x8')](_0xa5d0('0x11'),auth[_0xa5d0('0x9')](),controller[_0xa5d0('0x12')]);router[_0xa5d0('0x8')]('/:id/users',auth[_0xa5d0('0x9')](),controller['getAgents']);router['post']('/',auth[_0xa5d0('0x9')](),controller[_0xa5d0('0x13')]);router[_0xa5d0('0x14')](_0xa5d0('0x11'),auth['isAuthenticated'](),controller['addTeams']);router[_0xa5d0('0x14')](_0xa5d0('0x15'),auth[_0xa5d0('0x9')](),controller[_0xa5d0('0x16')]);router[_0xa5d0('0x17')](_0xa5d0('0xd'),auth[_0xa5d0('0x9')](),controller['update']);router[_0xa5d0('0x18')]('/:id',auth[_0xa5d0('0x9')](),controller[_0xa5d0('0x19')]);router['delete']('/:id/teams',auth[_0xa5d0('0x9')](),controller[_0xa5d0('0x1a')]);router['delete'](_0xa5d0('0x15'),auth[_0xa5d0('0x9')](),controller[_0xa5d0('0x1b')]);module[_0xa5d0('0x1c')]=router;
\ No newline at end of file
index ad91d9b..6bdd638 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb6e=['exports','STRING','DATE','moment','sequelize'];(function(_0x59bcb1,_0x5a4b6c){var _0x4a737f=function(_0x546a49){while(--_0x546a49){_0x59bcb1['push'](_0x59bcb1['shift']());}};_0x4a737f(++_0x5a4b6c);}(_0xbb6e,0xe4));var _0xebb6=function(_0x4bf685,_0x58b489){_0x4bf685=_0x4bf685-0x0;var _0x66b91a=_0xbb6e[_0x4bf685];return _0x66b91a;};'use strict';var moment=require(_0xebb6('0x0'));var Sequelize=require(_0xebb6('0x1'));module[_0xebb6('0x2')]={'uniqueid':{'type':Sequelize[_0xebb6('0x3')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0xebb6('0x4')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0xebb6('0x4')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0xebb6('0x3')]}};
\ No newline at end of file
+var _0x7a40=['sequelize','DATE','STRING','moment'];(function(_0x229c8c,_0x546d4a){var _0x5a1898=function(_0x1a0fa0){while(--_0x1a0fa0){_0x229c8c['push'](_0x229c8c['shift']());}};_0x5a1898(++_0x546d4a);}(_0x7a40,0x19b));var _0x07a4=function(_0x5694f9,_0x9ad985){_0x5694f9=_0x5694f9-0x0;var _0x49e9d0=_0x7a40[_0x5694f9];return _0x49e9d0;};'use strict';var moment=require(_0x07a4('0x0'));var Sequelize=require(_0x07a4('0x1'));module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x07a4('0x2')]},'leaveAt':{'type':Sequelize[_0x07a4('0x2')]},'acceptAt':{'type':Sequelize[_0x07a4('0x2')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x07a4('0x3')]}};
\ No newline at end of file
index 480ce27..231007d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf996=['limit','set','Content-Range','reject','save','update','then','destroy','stack','name','send','map','FaxQueueReport','rawAttributes','fieldName','type','query','keys','filters','attributes','intersection','model','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','includeAll','include','findAll','catch','options','find','create','body','params','describe','eml-format','rimraf','zip-dir','request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','sendStatus','status','end','json','offset','undefined','count'];(function(_0x48910,_0x50b6dd){var _0x49cc55=function(_0x1d80e5){while(--_0x1d80e5){_0x48910['push'](_0x48910['shift']());}};_0x49cc55(++_0x50b6dd);}(_0xf996,0x74));var _0x6f99=function(_0x4fec33,_0x25a458){_0x4fec33=_0x4fec33-0x0;var _0x5bac25=_0xf996[_0x4fec33];return _0x5bac25;};'use strict';var emlformat=require(_0x6f99('0x0'));var rimraf=require(_0x6f99('0x1'));var zipdir=require(_0x6f99('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6f99('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x6f99('0x4'));var util=require(_0x6f99('0x5'));var path=require(_0x6f99('0x6'));var sox=require(_0x6f99('0x7'));var csv=require(_0x6f99('0x8'));var ejs=require(_0x6f99('0x9'));var fs=require('fs');var fs_extra=require(_0x6f99('0xa'));var _=require(_0x6f99('0xb'));var squel=require(_0x6f99('0xc'));var crypto=require(_0x6f99('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x6f99('0xe'));var toCsv=require('to-csv');var querystring=require(_0x6f99('0xf'));var Papa=require(_0x6f99('0x10'));var Redis=require(_0x6f99('0x11'));var authService=require(_0x6f99('0x12'));var qs=require(_0x6f99('0x13'));var as=require(_0x6f99('0x14'));var hardwareService=require(_0x6f99('0x15'));var logger=require(_0x6f99('0x16'))(_0x6f99('0x17'));var utils=require('../../config/utils');var config=require(_0x6f99('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x55e7f0,_0x12081d){_0x12081d=_0x12081d||0xcc;return function(_0xa1af95){if(_0xa1af95){return _0x55e7f0[_0x6f99('0x19')](_0x12081d);}return _0x55e7f0[_0x6f99('0x1a')](_0x12081d)[_0x6f99('0x1b')]();};}function respondWithResult(_0x7aea00,_0xf5d4df){_0xf5d4df=_0xf5d4df||0xc8;return function(_0xb9874a){if(_0xb9874a){return _0x7aea00[_0x6f99('0x1a')](_0xf5d4df)[_0x6f99('0x1c')](_0xb9874a);}};}function respondWithFilteredResult(_0x1534e9,_0x1c7733){return function(_0x537f3d){if(_0x537f3d){var _0x293937=typeof _0x1c7733[_0x6f99('0x1d')]==='undefined'&&typeof _0x1c7733['limit']===_0x6f99('0x1e');var _0x5b3638=_0x537f3d[_0x6f99('0x1f')];var _0x210360=_0x293937?0x0:_0x1c7733[_0x6f99('0x1d')];var _0x25d50b=_0x293937?_0x537f3d[_0x6f99('0x1f')]:_0x1c7733['offset']+_0x1c7733[_0x6f99('0x20')];var _0x5377cb;if(_0x25d50b>=_0x5b3638){_0x25d50b=_0x5b3638;_0x5377cb=0xc8;}else{_0x5377cb=0xce;}_0x1534e9[_0x6f99('0x1a')](_0x5377cb);return _0x1534e9[_0x6f99('0x21')](_0x6f99('0x22'),_0x210360+'-'+_0x25d50b+'/'+_0x5b3638)[_0x6f99('0x1c')](_0x537f3d);}return null;};}function patchUpdates(_0x1dc9e5){return function(_0xf66bde){try{jsonpatch['apply'](_0xf66bde,_0x1dc9e5,!![]);}catch(_0x4c4d00){return BPromise[_0x6f99('0x23')](_0x4c4d00);}return _0xf66bde[_0x6f99('0x24')]();};}function saveUpdates(_0x4974ff,_0x497fd7){return function(_0x1d4dc3){if(_0x1d4dc3){return _0x1d4dc3[_0x6f99('0x25')](_0x4974ff)[_0x6f99('0x26')](function(_0xe3e6ab){return _0xe3e6ab;});}return null;};}function removeEntity(_0x290c88,_0x1174a2){return function(_0x2e7b94){if(_0x2e7b94){return _0x2e7b94[_0x6f99('0x27')]()[_0x6f99('0x26')](function(){_0x290c88[_0x6f99('0x1a')](0xcc)[_0x6f99('0x1b')]();});}};}function handleEntityNotFound(_0x1f8078,_0x21a5c8){return function(_0x381e92){if(!_0x381e92){_0x1f8078['sendStatus'](0x194);}return _0x381e92;};}function handleError(_0x1aff24,_0x201070){_0x201070=_0x201070||0x1f4;return function(_0x4c9572){logger['error'](_0x4c9572[_0x6f99('0x28')]);if(_0x4c9572[_0x6f99('0x29')]){delete _0x4c9572['name'];}_0x1aff24[_0x6f99('0x1a')](_0x201070)[_0x6f99('0x2a')](_0x4c9572);};}exports['index']=function(_0x45fe22,_0x3c1012){var _0x513519={},_0x21eb46={},_0x3ef6c5={'count':0x0,'rows':[]};var _0x5e10e2=_[_0x6f99('0x2b')](db[_0x6f99('0x2c')][_0x6f99('0x2d')],function(_0x4aa40c){return{'name':_0x4aa40c[_0x6f99('0x2e')],'type':_0x4aa40c[_0x6f99('0x2f')]['key']};});_0x21eb46['model']=_[_0x6f99('0x2b')](_0x5e10e2,_0x6f99('0x29'));_0x21eb46[_0x6f99('0x30')]=_[_0x6f99('0x31')](_0x45fe22[_0x6f99('0x30')]);_0x21eb46[_0x6f99('0x32')]=_['intersection'](_0x21eb46['model'],_0x21eb46[_0x6f99('0x30')]);_0x513519[_0x6f99('0x33')]=_[_0x6f99('0x34')](_0x21eb46[_0x6f99('0x35')],qs[_0x6f99('0x36')](_0x45fe22[_0x6f99('0x30')][_0x6f99('0x36')]));_0x513519[_0x6f99('0x33')]=_0x513519[_0x6f99('0x33')][_0x6f99('0x37')]?_0x513519[_0x6f99('0x33')]:_0x21eb46['model'];if(!_0x45fe22[_0x6f99('0x30')][_0x6f99('0x38')](_0x6f99('0x39'))){_0x513519[_0x6f99('0x20')]=qs[_0x6f99('0x20')](_0x45fe22['query'][_0x6f99('0x20')]);_0x513519[_0x6f99('0x1d')]=qs['offset'](_0x45fe22[_0x6f99('0x30')][_0x6f99('0x1d')]);}_0x513519[_0x6f99('0x3a')]=qs[_0x6f99('0x3b')](_0x45fe22[_0x6f99('0x30')][_0x6f99('0x3b')]);_0x513519[_0x6f99('0x3c')]=qs[_0x6f99('0x32')](_['pick'](_0x45fe22[_0x6f99('0x30')],_0x21eb46['filters']),_0x5e10e2);if(_0x45fe22[_0x6f99('0x30')][_0x6f99('0x3d')]){_0x513519[_0x6f99('0x3c')]=_[_0x6f99('0x3e')](_0x513519['where'],{'$or':_[_0x6f99('0x2b')](_0x5e10e2,function(_0x4ee7ce){if(_0x4ee7ce[_0x6f99('0x2f')]!==_0x6f99('0x3f')){var _0x2c26a1={};_0x2c26a1[_0x4ee7ce[_0x6f99('0x29')]]={'$like':'%'+_0x45fe22[_0x6f99('0x30')][_0x6f99('0x3d')]+'%'};return _0x2c26a1;}})});}_0x513519=_[_0x6f99('0x3e')]({},_0x513519,_0x45fe22['options']);var _0x35fb0a={'where':_0x513519[_0x6f99('0x3c')]};return db[_0x6f99('0x2c')]['count'](_0x35fb0a)[_0x6f99('0x26')](function(_0x327e98){_0x3ef6c5[_0x6f99('0x1f')]=_0x327e98;if(_0x45fe22[_0x6f99('0x30')][_0x6f99('0x40')]){_0x513519[_0x6f99('0x41')]=[{'all':!![]}];}return db[_0x6f99('0x2c')][_0x6f99('0x42')](_0x513519);})['then'](function(_0x206bc8){_0x3ef6c5['rows']=_0x206bc8;return _0x3ef6c5;})[_0x6f99('0x26')](respondWithFilteredResult(_0x3c1012,_0x513519))[_0x6f99('0x43')](handleError(_0x3c1012,null));};exports['show']=function(_0x26e091,_0x27ae7f){var _0x1934c4={'raw':!![],'where':{'id':_0x26e091['params']['id']}},_0x1fd388={};_0x1fd388[_0x6f99('0x35')]=_[_0x6f99('0x31')](db[_0x6f99('0x2c')]['rawAttributes']);_0x1fd388[_0x6f99('0x30')]=_[_0x6f99('0x31')](_0x26e091[_0x6f99('0x30')]);_0x1fd388[_0x6f99('0x32')]=_[_0x6f99('0x34')](_0x1fd388[_0x6f99('0x35')],_0x1fd388[_0x6f99('0x30')]);_0x1934c4[_0x6f99('0x33')]=_['intersection'](_0x1fd388[_0x6f99('0x35')],qs['fields'](_0x26e091[_0x6f99('0x30')]['fields']));_0x1934c4[_0x6f99('0x33')]=_0x1934c4[_0x6f99('0x33')][_0x6f99('0x37')]?_0x1934c4[_0x6f99('0x33')]:_0x1fd388[_0x6f99('0x35')];if(_0x26e091[_0x6f99('0x30')][_0x6f99('0x40')]){_0x1934c4['include']=[{'all':!![]}];}_0x1934c4=_[_0x6f99('0x3e')]({},_0x1934c4,_0x26e091[_0x6f99('0x44')]);return db['FaxQueueReport'][_0x6f99('0x45')](_0x1934c4)[_0x6f99('0x26')](handleEntityNotFound(_0x27ae7f,null))[_0x6f99('0x26')](respondWithResult(_0x27ae7f,null))[_0x6f99('0x43')](handleError(_0x27ae7f,null));};exports[_0x6f99('0x46')]=function(_0x51fd93,_0x118e87){return db[_0x6f99('0x2c')][_0x6f99('0x46')](_0x51fd93[_0x6f99('0x47')],{})[_0x6f99('0x26')](respondWithResult(_0x118e87,0xc9))[_0x6f99('0x43')](handleError(_0x118e87,null));};exports[_0x6f99('0x25')]=function(_0x20c80d,_0x2c6cd8){if(_0x20c80d[_0x6f99('0x47')]['id']){delete _0x20c80d[_0x6f99('0x47')]['id'];}return db[_0x6f99('0x2c')]['find']({'where':{'id':_0x20c80d[_0x6f99('0x48')]['id']}})[_0x6f99('0x26')](handleEntityNotFound(_0x2c6cd8,null))[_0x6f99('0x26')](saveUpdates(_0x20c80d[_0x6f99('0x47')],null))[_0x6f99('0x26')](respondWithResult(_0x2c6cd8,null))[_0x6f99('0x43')](handleError(_0x2c6cd8,null));};exports['destroy']=function(_0x321944,_0x2ee25e){return db['FaxQueueReport'][_0x6f99('0x45')]({'where':{'id':_0x321944[_0x6f99('0x48')]['id']}})[_0x6f99('0x26')](handleEntityNotFound(_0x2ee25e,null))[_0x6f99('0x26')](removeEntity(_0x2ee25e,null))[_0x6f99('0x43')](handleError(_0x2ee25e,null));};exports['describe']=function(_0x572aea,_0x3d82c4){return db['FaxQueueReport'][_0x6f99('0x49')]()[_0x6f99('0x26')](respondWithResult(_0x3d82c4,null))[_0x6f99('0x43')](handleError(_0x3d82c4,null));};
\ No newline at end of file
+var _0x2116=['fieldName','type','query','keys','intersection','model','attributes','length','hasOwnProperty','order','sort','filters','pick','where','merge','VIRTUAL','filter','findAll','rows','catch','show','rawAttributes','fields','includeAll','create','body','params','destroy','find','describe','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','update','then','error','stack','name','send','index','map','FaxQueueReport'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x2116,0x67));var _0x6211=function(_0x33cc14,_0x1eb42b){_0x33cc14=_0x33cc14-0x0;var _0x1763ab=_0x2116[_0x33cc14];return _0x1763ab;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6211('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6211('0x1'));var rp=require(_0x6211('0x2'));var moment=require(_0x6211('0x3'));var BPromise=require(_0x6211('0x4'));var Mustache=require('mustache');var util=require(_0x6211('0x5'));var path=require(_0x6211('0x6'));var sox=require(_0x6211('0x7'));var csv=require(_0x6211('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6211('0x9'));var _=require('lodash');var squel=require(_0x6211('0xa'));var crypto=require(_0x6211('0xb'));var jsforce=require(_0x6211('0xc'));var deskjs=require(_0x6211('0xd'));var toCsv=require(_0x6211('0x8'));var querystring=require(_0x6211('0xe'));var Papa=require(_0x6211('0xf'));var Redis=require('ioredis');var authService=require(_0x6211('0x10'));var qs=require(_0x6211('0x11'));var as=require(_0x6211('0x12'));var hardwareService=require(_0x6211('0x13'));var logger=require(_0x6211('0x14'))(_0x6211('0x15'));var utils=require(_0x6211('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x6211('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x337362,_0x6661a7){_0x6661a7=_0x6661a7||0xcc;return function(_0x22963d){if(_0x22963d){return _0x337362['sendStatus'](_0x6661a7);}return _0x337362[_0x6211('0x18')](_0x6661a7)[_0x6211('0x19')]();};}function respondWithResult(_0x1a27a2,_0x509faa){_0x509faa=_0x509faa||0xc8;return function(_0x54a303){if(_0x54a303){return _0x1a27a2[_0x6211('0x18')](_0x509faa)[_0x6211('0x1a')](_0x54a303);}};}function respondWithFilteredResult(_0x23f8d2,_0xf69c79){return function(_0xa23863){if(_0xa23863){var _0x15adb6=typeof _0xf69c79[_0x6211('0x1b')]===_0x6211('0x1c')&&typeof _0xf69c79['limit']===_0x6211('0x1c');var _0x432c18=_0xa23863[_0x6211('0x1d')];var _0x2ccbb0=_0x15adb6?0x0:_0xf69c79[_0x6211('0x1b')];var _0x14c051=_0x15adb6?_0xa23863[_0x6211('0x1d')]:_0xf69c79['offset']+_0xf69c79[_0x6211('0x1e')];var _0x1528e6;if(_0x14c051>=_0x432c18){_0x14c051=_0x432c18;_0x1528e6=0xc8;}else{_0x1528e6=0xce;}_0x23f8d2['status'](_0x1528e6);return _0x23f8d2[_0x6211('0x1f')](_0x6211('0x20'),_0x2ccbb0+'-'+_0x14c051+'/'+_0x432c18)[_0x6211('0x1a')](_0xa23863);}return null;};}function patchUpdates(_0x30d6a5){return function(_0x4d99bc){try{jsonpatch['apply'](_0x4d99bc,_0x30d6a5,!![]);}catch(_0x4252d3){return BPromise[_0x6211('0x21')](_0x4252d3);}return _0x4d99bc['save']();};}function saveUpdates(_0x52eb53,_0x15ca00){return function(_0x1e6a53){if(_0x1e6a53){return _0x1e6a53[_0x6211('0x22')](_0x52eb53)[_0x6211('0x23')](function(_0x5b50cd){return _0x5b50cd;});}return null;};}function removeEntity(_0x2c1c0a,_0x311054){return function(_0x16fb0c){if(_0x16fb0c){return _0x16fb0c['destroy']()[_0x6211('0x23')](function(){_0x2c1c0a[_0x6211('0x18')](0xcc)[_0x6211('0x19')]();});}};}function handleEntityNotFound(_0x4a13f8,_0x532778){return function(_0x4ebae9){if(!_0x4ebae9){_0x4a13f8['sendStatus'](0x194);}return _0x4ebae9;};}function handleError(_0x524537,_0x15a096){_0x15a096=_0x15a096||0x1f4;return function(_0x2badd2){logger[_0x6211('0x24')](_0x2badd2[_0x6211('0x25')]);if(_0x2badd2[_0x6211('0x26')]){delete _0x2badd2[_0x6211('0x26')];}_0x524537[_0x6211('0x18')](_0x15a096)[_0x6211('0x27')](_0x2badd2);};}exports[_0x6211('0x28')]=function(_0x19a369,_0x105721){var _0x38f5f8={},_0x3564f2={},_0x26a8cc={'count':0x0,'rows':[]};var _0x20e576=_[_0x6211('0x29')](db[_0x6211('0x2a')]['rawAttributes'],function(_0x276a30){return{'name':_0x276a30[_0x6211('0x2b')],'type':_0x276a30[_0x6211('0x2c')]['key']};});_0x3564f2['model']=_[_0x6211('0x29')](_0x20e576,'name');_0x3564f2[_0x6211('0x2d')]=_[_0x6211('0x2e')](_0x19a369[_0x6211('0x2d')]);_0x3564f2['filters']=_[_0x6211('0x2f')](_0x3564f2[_0x6211('0x30')],_0x3564f2[_0x6211('0x2d')]);_0x38f5f8[_0x6211('0x31')]=_[_0x6211('0x2f')](_0x3564f2['model'],qs['fields'](_0x19a369[_0x6211('0x2d')]['fields']));_0x38f5f8['attributes']=_0x38f5f8['attributes'][_0x6211('0x32')]?_0x38f5f8[_0x6211('0x31')]:_0x3564f2[_0x6211('0x30')];if(!_0x19a369['query'][_0x6211('0x33')]('nolimit')){_0x38f5f8[_0x6211('0x1e')]=qs[_0x6211('0x1e')](_0x19a369[_0x6211('0x2d')]['limit']);_0x38f5f8[_0x6211('0x1b')]=qs[_0x6211('0x1b')](_0x19a369[_0x6211('0x2d')][_0x6211('0x1b')]);}_0x38f5f8[_0x6211('0x34')]=qs[_0x6211('0x35')](_0x19a369[_0x6211('0x2d')][_0x6211('0x35')]);_0x38f5f8['where']=qs[_0x6211('0x36')](_[_0x6211('0x37')](_0x19a369[_0x6211('0x2d')],_0x3564f2[_0x6211('0x36')]),_0x20e576);if(_0x19a369[_0x6211('0x2d')]['filter']){_0x38f5f8[_0x6211('0x38')]=_[_0x6211('0x39')](_0x38f5f8[_0x6211('0x38')],{'$or':_[_0x6211('0x29')](_0x20e576,function(_0x572324){if(_0x572324[_0x6211('0x2c')]!==_0x6211('0x3a')){var _0x20503a={};_0x20503a[_0x572324[_0x6211('0x26')]]={'$like':'%'+_0x19a369[_0x6211('0x2d')][_0x6211('0x3b')]+'%'};return _0x20503a;}})});}_0x38f5f8=_[_0x6211('0x39')]({},_0x38f5f8,_0x19a369['options']);var _0x5e324e={'where':_0x38f5f8['where']};return db[_0x6211('0x2a')][_0x6211('0x1d')](_0x5e324e)['then'](function(_0x1b9e5d){_0x26a8cc[_0x6211('0x1d')]=_0x1b9e5d;if(_0x19a369['query']['includeAll']){_0x38f5f8['include']=[{'all':!![]}];}return db[_0x6211('0x2a')][_0x6211('0x3c')](_0x38f5f8);})[_0x6211('0x23')](function(_0x5972d4){_0x26a8cc[_0x6211('0x3d')]=_0x5972d4;return _0x26a8cc;})[_0x6211('0x23')](respondWithFilteredResult(_0x105721,_0x38f5f8))[_0x6211('0x3e')](handleError(_0x105721,null));};exports[_0x6211('0x3f')]=function(_0x334e87,_0x476456){var _0x28721a={'raw':!![],'where':{'id':_0x334e87['params']['id']}},_0x371956={};_0x371956['model']=_[_0x6211('0x2e')](db[_0x6211('0x2a')][_0x6211('0x40')]);_0x371956[_0x6211('0x2d')]=_[_0x6211('0x2e')](_0x334e87[_0x6211('0x2d')]);_0x371956['filters']=_[_0x6211('0x2f')](_0x371956[_0x6211('0x30')],_0x371956[_0x6211('0x2d')]);_0x28721a[_0x6211('0x31')]=_[_0x6211('0x2f')](_0x371956['model'],qs[_0x6211('0x41')](_0x334e87['query'][_0x6211('0x41')]));_0x28721a['attributes']=_0x28721a[_0x6211('0x31')][_0x6211('0x32')]?_0x28721a['attributes']:_0x371956[_0x6211('0x30')];if(_0x334e87[_0x6211('0x2d')][_0x6211('0x42')]){_0x28721a['include']=[{'all':!![]}];}_0x28721a=_[_0x6211('0x39')]({},_0x28721a,_0x334e87['options']);return db[_0x6211('0x2a')]['find'](_0x28721a)[_0x6211('0x23')](handleEntityNotFound(_0x476456,null))['then'](respondWithResult(_0x476456,null))[_0x6211('0x3e')](handleError(_0x476456,null));};exports[_0x6211('0x43')]=function(_0x1cee06,_0x2111fd){return db[_0x6211('0x2a')][_0x6211('0x43')](_0x1cee06[_0x6211('0x44')],{})[_0x6211('0x23')](respondWithResult(_0x2111fd,0xc9))[_0x6211('0x3e')](handleError(_0x2111fd,null));};exports[_0x6211('0x22')]=function(_0x501c6d,_0x2bc4ae){if(_0x501c6d[_0x6211('0x44')]['id']){delete _0x501c6d[_0x6211('0x44')]['id'];}return db[_0x6211('0x2a')]['find']({'where':{'id':_0x501c6d[_0x6211('0x45')]['id']}})[_0x6211('0x23')](handleEntityNotFound(_0x2bc4ae,null))['then'](saveUpdates(_0x501c6d[_0x6211('0x44')],null))['then'](respondWithResult(_0x2bc4ae,null))['catch'](handleError(_0x2bc4ae,null));};exports[_0x6211('0x46')]=function(_0x25d2c8,_0x5aae45){return db[_0x6211('0x2a')][_0x6211('0x47')]({'where':{'id':_0x25d2c8[_0x6211('0x45')]['id']}})[_0x6211('0x23')](handleEntityNotFound(_0x5aae45,null))[_0x6211('0x23')](removeEntity(_0x5aae45,null))['catch'](handleError(_0x5aae45,null));};exports[_0x6211('0x48')]=function(_0x8a364a,_0x1901d7){return db['FaxQueueReport'][_0x6211('0x48')]()['then'](respondWithResult(_0x1901d7,null))[_0x6211('0x3e')](handleError(_0x1901d7,null));};
\ No newline at end of file
index 81664d6..9fd1532 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['bluebird','path','./faxQueueReport.attributes','exports','define','FaxQueueReport','report_fax_queue','lodash','util','moment'];(function(_0x1a4e65,_0x477f1b){var _0x3c371e=function(_0x4b3e08){while(--_0x4b3e08){_0x1a4e65['push'](_0x1a4e65['shift']());}};_0x3c371e(++_0x477f1b);}(_0xe14b,0x93));var _0xbe14=function(_0x419eb9,_0xa710fc){_0x419eb9=_0x419eb9-0x0;var _0x31875b=_0xe14b[_0x419eb9];return _0x31875b;};'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':[{'name':'uniqueid','fields':['uniqueid']}],'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(_0x10c88d,_0x3cd6ee){var _0x5efa9c=function(_0x15c547){while(--_0x15c547){_0x10c88d['push'](_0x10c88d['shift']());}};_0x5efa9c(++_0x3cd6ee);}(_0x53ec,0x192));var _0xc53e=function(_0x47fb54,_0x28698c){_0x47fb54=_0x47fb54-0x0;var _0x1139a7=_0x53ec[_0x47fb54];return _0x1139a7;};'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 fb44a6e..a9e40b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfa5=['error','code','message','result','CreateFaxQueueReport','FaxQueueReport','create','body','options','raw','catch','UpdateFaxQueueReport','update','where','attributes','limit','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','FaxQueueReport,\x20%s,\x20%s','request\x20sent','debug','FaxQueueReport,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x108439,_0x12487b){var _0x3168a3=function(_0x159aaf){while(--_0x159aaf){_0x108439['push'](_0x108439['shift']());}};_0x3168a3(++_0x12487b);}(_0xdfa5,0xfe));var _0x5dfa=function(_0x5e4563,_0x3ff918){_0x5e4563=_0x5e4563-0x0;var _0x8d1bf5=_0xdfa5[_0x5e4563];return _0x8d1bf5;};'use strict';var _=require(_0x5dfa('0x0'));var util=require(_0x5dfa('0x1'));var moment=require('moment');var BPromise=require(_0x5dfa('0x2'));var rs=require(_0x5dfa('0x3'));var fs=require('fs');var Redis=require(_0x5dfa('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x5dfa('0x5'));var logger=require(_0x5dfa('0x6'))('rpc');var config=require(_0x5dfa('0x7'));var jayson=require(_0x5dfa('0x8'));var client=jayson['client'][_0x5dfa('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x255c12,_0x8f470b,_0x17108b){return new BPromise(function(_0x8cfb46,_0x4f7666){return client[_0x5dfa('0xa')](_0x255c12,_0x17108b)[_0x5dfa('0xb')](function(_0x5cc4a4){logger[_0x5dfa('0xc')](_0x5dfa('0xd'),_0x8f470b,_0x5dfa('0xe'));logger[_0x5dfa('0xf')](_0x5dfa('0x10'),_0x8f470b,_0x5dfa('0xe'),JSON[_0x5dfa('0x11')](_0x5cc4a4));if(_0x5cc4a4[_0x5dfa('0x12')]){if(_0x5cc4a4[_0x5dfa('0x12')][_0x5dfa('0x13')]===0x1f4){logger[_0x5dfa('0x12')]('FaxQueueReport,\x20%s,\x20%s',_0x8f470b,_0x5cc4a4[_0x5dfa('0x12')]['message']);return _0x4f7666(_0x5cc4a4[_0x5dfa('0x12')][_0x5dfa('0x14')]);}logger[_0x5dfa('0x12')](_0x5dfa('0xd'),_0x8f470b,_0x5cc4a4[_0x5dfa('0x12')]['message']);return _0x8cfb46(_0x5cc4a4[_0x5dfa('0x12')]['message']);}else{logger[_0x5dfa('0xc')](_0x5dfa('0xd'),_0x8f470b,'request\x20sent');_0x8cfb46(_0x5cc4a4[_0x5dfa('0x15')][_0x5dfa('0x14')]);}})['catch'](function(_0x28d4d6){logger[_0x5dfa('0x12')](_0x5dfa('0xd'),_0x8f470b,_0x28d4d6);_0x4f7666(_0x28d4d6);});});}exports[_0x5dfa('0x16')]=function(_0x26b4fd){var _0x42d79d=this;return new Promise(function(_0x407b49,_0xfac9e0){return db[_0x5dfa('0x17')][_0x5dfa('0x18')](_0x26b4fd[_0x5dfa('0x19')],{'raw':_0x26b4fd[_0x5dfa('0x1a')]?_0x26b4fd['options'][_0x5dfa('0x1b')]===undefined?!![]:![]:!![]})['then'](function(_0x5a101e){logger['info'](_0x5dfa('0x16'),_0x26b4fd);logger[_0x5dfa('0xf')](_0x5dfa('0x16'),_0x26b4fd,JSON['stringify'](_0x5a101e));_0x407b49(_0x5a101e);})[_0x5dfa('0x1c')](function(_0x4d3194){logger[_0x5dfa('0x12')]('CreateFaxQueueReport',_0x4d3194[_0x5dfa('0x14')],_0x26b4fd);_0xfac9e0(_0x42d79d[_0x5dfa('0x12')](0x1f4,_0x4d3194[_0x5dfa('0x14')]));});});};exports[_0x5dfa('0x1d')]=function(_0x3ccc63){var _0x37259b=this;return new Promise(function(_0x1aa632,_0x50ff2f){return db[_0x5dfa('0x17')][_0x5dfa('0x1e')](_0x3ccc63[_0x5dfa('0x19')],{'raw':_0x3ccc63[_0x5dfa('0x1a')]?_0x3ccc63[_0x5dfa('0x1a')][_0x5dfa('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3ccc63['options']?_0x3ccc63['options'][_0x5dfa('0x1f')]||null:null,'attributes':_0x3ccc63['options']?_0x3ccc63[_0x5dfa('0x1a')][_0x5dfa('0x20')]||null:null,'limit':_0x3ccc63[_0x5dfa('0x1a')]?_0x3ccc63[_0x5dfa('0x1a')][_0x5dfa('0x21')]||null:null})[_0x5dfa('0xb')](function(_0x25bdfd){logger[_0x5dfa('0xc')](_0x5dfa('0x1d'),_0x3ccc63);logger[_0x5dfa('0xf')](_0x5dfa('0x1d'),_0x3ccc63,JSON[_0x5dfa('0x11')](_0x25bdfd));_0x1aa632(_0x25bdfd);})[_0x5dfa('0x1c')](function(_0x288eef){logger[_0x5dfa('0x12')](_0x5dfa('0x1d'),_0x288eef[_0x5dfa('0x14')],_0x3ccc63);_0x50ff2f(_0x37259b[_0x5dfa('0x12')](0x1f4,_0x288eef['message']));});});};
\ No newline at end of file
+var _0x1f70=['result','catch','CreateFaxQueueReport','FaxQueueReport','body','options','raw','debug','UpdateFaxQueueReport','update','where','attributes','limit','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','then','info','FaxQueueReport,\x20%s,\x20%s','request\x20sent','FaxQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x5331ab,_0xe61f72){var _0x35d457=function(_0x59272c){while(--_0x59272c){_0x5331ab['push'](_0x5331ab['shift']());}};_0x35d457(++_0xe61f72);}(_0x1f70,0x1ed));var _0x01f7=function(_0xd9dda1,_0x260e39){_0xd9dda1=_0xd9dda1-0x0;var _0x57b03b=_0x1f70[_0xd9dda1];return _0x57b03b;};'use strict';var _=require(_0x01f7('0x0'));var util=require(_0x01f7('0x1'));var moment=require(_0x01f7('0x2'));var BPromise=require(_0x01f7('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x01f7('0x4'))['db'];var utils=require(_0x01f7('0x5'));var logger=require(_0x01f7('0x6'))(_0x01f7('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x01f7('0x8')][_0x01f7('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1fe226,_0x2419a7,_0x38c30b){return new BPromise(function(_0x4a7794,_0x5a183e){return client['request'](_0x1fe226,_0x38c30b)[_0x01f7('0xa')](function(_0x3914f8){logger[_0x01f7('0xb')](_0x01f7('0xc'),_0x2419a7,_0x01f7('0xd'));logger['debug'](_0x01f7('0xe'),_0x2419a7,'request\x20sent',JSON[_0x01f7('0xf')](_0x3914f8));if(_0x3914f8[_0x01f7('0x10')]){if(_0x3914f8[_0x01f7('0x10')][_0x01f7('0x11')]===0x1f4){logger[_0x01f7('0x10')](_0x01f7('0xc'),_0x2419a7,_0x3914f8[_0x01f7('0x10')][_0x01f7('0x12')]);return _0x5a183e(_0x3914f8[_0x01f7('0x10')][_0x01f7('0x12')]);}logger['error']('FaxQueueReport,\x20%s,\x20%s',_0x2419a7,_0x3914f8[_0x01f7('0x10')][_0x01f7('0x12')]);return _0x4a7794(_0x3914f8[_0x01f7('0x10')][_0x01f7('0x12')]);}else{logger['info'](_0x01f7('0xc'),_0x2419a7,'request\x20sent');_0x4a7794(_0x3914f8[_0x01f7('0x13')]['message']);}})[_0x01f7('0x14')](function(_0x21e2dc){logger[_0x01f7('0x10')](_0x01f7('0xc'),_0x2419a7,_0x21e2dc);_0x5a183e(_0x21e2dc);});});}exports[_0x01f7('0x15')]=function(_0x3f73f7){var _0x4b7cb0=this;return new Promise(function(_0x3a0c79,_0x3f7962){return db[_0x01f7('0x16')]['create'](_0x3f73f7[_0x01f7('0x17')],{'raw':_0x3f73f7['options']?_0x3f73f7[_0x01f7('0x18')][_0x01f7('0x19')]===undefined?!![]:![]:!![]})[_0x01f7('0xa')](function(_0x4413c6){logger[_0x01f7('0xb')](_0x01f7('0x15'),_0x3f73f7);logger[_0x01f7('0x1a')](_0x01f7('0x15'),_0x3f73f7,JSON[_0x01f7('0xf')](_0x4413c6));_0x3a0c79(_0x4413c6);})[_0x01f7('0x14')](function(_0x2f90fc){logger['error'](_0x01f7('0x15'),_0x2f90fc[_0x01f7('0x12')],_0x3f73f7);_0x3f7962(_0x4b7cb0['error'](0x1f4,_0x2f90fc[_0x01f7('0x12')]));});});};exports[_0x01f7('0x1b')]=function(_0x3cda20){var _0x77effa=this;return new Promise(function(_0x39e821,_0x1512db){return db[_0x01f7('0x16')][_0x01f7('0x1c')](_0x3cda20[_0x01f7('0x17')],{'raw':_0x3cda20['options']?_0x3cda20[_0x01f7('0x18')][_0x01f7('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3cda20[_0x01f7('0x18')]?_0x3cda20[_0x01f7('0x18')][_0x01f7('0x1d')]||null:null,'attributes':_0x3cda20[_0x01f7('0x18')]?_0x3cda20[_0x01f7('0x18')][_0x01f7('0x1e')]||null:null,'limit':_0x3cda20['options']?_0x3cda20[_0x01f7('0x18')][_0x01f7('0x1f')]||null:null})[_0x01f7('0xa')](function(_0xbd9f13){logger[_0x01f7('0xb')](_0x01f7('0x1b'),_0x3cda20);logger['debug'](_0x01f7('0x1b'),_0x3cda20,JSON[_0x01f7('0xf')](_0xbd9f13));_0x39e821(_0xbd9f13);})[_0x01f7('0x14')](function(_0x3c2e6c){logger['error'](_0x01f7('0x1b'),_0x3c2e6c[_0x01f7('0x12')],_0x3cda20);_0x1512db(_0x77effa[_0x01f7('0x10')](0x1f4,_0x3c2e6c['message']));});});};
\ No newline at end of file
index 1c856f7..2654fd0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb64c=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxQueueReport.controller','get','isAuthenticated','index','/describe','describe','show','put','/:id','destroy','exports','multer','util','path','express'];(function(_0xce090d,_0x5d63c6){var _0x17de73=function(_0x2ecd36){while(--_0x2ecd36){_0xce090d['push'](_0xce090d['shift']());}};_0x17de73(++_0x5d63c6);}(_0xb64c,0xba));var _0xcb64=function(_0x4978de,_0x5912e4){_0x4978de=_0x4978de-0x0;var _0x675221=_0xb64c[_0x4978de];return _0x675221;};'use strict';var multer=require(_0xcb64('0x0'));var util=require(_0xcb64('0x1'));var path=require(_0xcb64('0x2'));var timeout=require('connect-timeout');var express=require(_0xcb64('0x3'));var router=express[_0xcb64('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xcb64('0x5'));var interaction=require(_0xcb64('0x6'));var config=require(_0xcb64('0x7'));var controller=require(_0xcb64('0x8'));router[_0xcb64('0x9')]('/',auth[_0xcb64('0xa')](),controller[_0xcb64('0xb')]);router[_0xcb64('0x9')](_0xcb64('0xc'),auth[_0xcb64('0xa')](),controller[_0xcb64('0xd')]);router[_0xcb64('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xcb64('0xe')]);router['post']('/',auth[_0xcb64('0xa')](),controller['create']);router[_0xcb64('0xf')](_0xcb64('0x10'),auth[_0xcb64('0xa')](),controller['update']);router['delete'](_0xcb64('0x10'),auth[_0xcb64('0xa')](),controller[_0xcb64('0x11')]);module[_0xcb64('0x12')]=router;
\ No newline at end of file
+var _0xf8b2=['Router','../../components/auth/service','../../components/interaction/service','./faxQueueReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','post','put','update','delete','destroy','path','connect-timeout'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xf8b2,0xfa));var _0x2f8b=function(_0x2af276,_0xb15ec5){_0x2af276=_0x2af276-0x0;var _0x4c586e=_0xf8b2[_0x2af276];return _0x4c586e;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x2f8b('0x0'));var timeout=require(_0x2f8b('0x1'));var express=require('express');var router=express[_0x2f8b('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x2f8b('0x3'));var interaction=require(_0x2f8b('0x4'));var config=require('../../config/environment');var controller=require(_0x2f8b('0x5'));router['get']('/',auth[_0x2f8b('0x6')](),controller[_0x2f8b('0x7')]);router[_0x2f8b('0x8')](_0x2f8b('0x9'),auth[_0x2f8b('0x6')](),controller[_0x2f8b('0xa')]);router[_0x2f8b('0x8')](_0x2f8b('0xb'),auth[_0x2f8b('0x6')](),controller[_0x2f8b('0xc')]);router[_0x2f8b('0xd')]('/',auth[_0x2f8b('0x6')](),controller['create']);router[_0x2f8b('0xe')](_0x2f8b('0xb'),auth['isAuthenticated'](),controller[_0x2f8b('0xf')]);router[_0x2f8b('0x10')](_0x2f8b('0xb'),auth['isAuthenticated'](),controller[_0x2f8b('0x11')]);module['exports']=router;
\ No newline at end of file
index a5bd900..53d735e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4eb=['NOW','moment','account','queue','DATE'];(function(_0x110e48,_0xbcd159){var _0x44f82e=function(_0x1d37ae){while(--_0x1d37ae){_0x110e48['push'](_0x110e48['shift']());}};_0x44f82e(++_0xbcd159);}(_0xf4eb,0xec));var _0xbf4e=function(_0x44299a,_0x558659){_0x44299a=_0x44299a-0x0;var _0x4e8a5b=_0xf4eb[_0x44299a];return _0x4e8a5b;};'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 _0xf4eb=['NOW','moment','account','queue','DATE'];(function(_0x63d462,_0x11c2ca){var _0x136f88=function(_0x4c3519){while(--_0x4c3519){_0x63d462['push'](_0x63d462['shift']());}};_0x136f88(++_0x11c2ca);}(_0xf4eb,0xec));var _0xbf4e=function(_0x10d0a9,_0x1cdca7){_0x10d0a9=_0x10d0a9-0x0;var _0x3a9603=_0xf4eb[_0x10d0a9];return _0x3a9603;};'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
index 00ccb6d..607b3cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb38f=['Content-Range','apply','save','then','destroy','end','error','stack','name','send','index','FaxTransferReport','rawAttributes','fieldName','key','map','query','filters','intersection','attributes','model','fields','length','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','include','findAll','rows','catch','keys','includeAll','find','create','update','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','set'];(function(_0x331298,_0x12341a){var _0x3824bc=function(_0x19449f){while(--_0x19449f){_0x331298['push'](_0x331298['shift']());}};_0x3824bc(++_0x12341a);}(_0xb38f,0x78));var _0xfb38=function(_0x3cdf50,_0x3e8eb2){_0x3cdf50=_0x3cdf50-0x0;var _0x22d47a=_0xb38f[_0x3cdf50];return _0x22d47a;};'use strict';var emlformat=require(_0xfb38('0x0'));var rimraf=require(_0xfb38('0x1'));var zipdir=require(_0xfb38('0x2'));var jsonpatch=require(_0xfb38('0x3'));var rp=require(_0xfb38('0x4'));var moment=require(_0xfb38('0x5'));var BPromise=require(_0xfb38('0x6'));var Mustache=require(_0xfb38('0x7'));var util=require(_0xfb38('0x8'));var path=require(_0xfb38('0x9'));var sox=require(_0xfb38('0xa'));var csv=require(_0xfb38('0xb'));var ejs=require(_0xfb38('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xfb38('0xd'));var Papa=require('papaparse');var Redis=require(_0xfb38('0xe'));var authService=require(_0xfb38('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xfb38('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xfb38('0x11'))(_0xfb38('0x12'));var utils=require(_0xfb38('0x13'));var config=require(_0xfb38('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xfb38('0x15'))['db'];function respondWithStatusCode(_0x41f2e2,_0x4e4b40){_0x4e4b40=_0x4e4b40||0xcc;return function(_0x48c657){if(_0x48c657){return _0x41f2e2[_0xfb38('0x16')](_0x4e4b40);}return _0x41f2e2[_0xfb38('0x17')](_0x4e4b40)['end']();};}function respondWithResult(_0x3ecfe4,_0x2fcbf3){_0x2fcbf3=_0x2fcbf3||0xc8;return function(_0x2d6cbd){if(_0x2d6cbd){return _0x3ecfe4[_0xfb38('0x17')](_0x2fcbf3)[_0xfb38('0x18')](_0x2d6cbd);}};}function respondWithFilteredResult(_0x40f30c,_0x5d54a1){return function(_0x680147){if(_0x680147){var _0x3bcbab=typeof _0x5d54a1['offset']===_0xfb38('0x19')&&typeof _0x5d54a1[_0xfb38('0x1a')]===_0xfb38('0x19');var _0x989857=_0x680147[_0xfb38('0x1b')];var _0x159350=_0x3bcbab?0x0:_0x5d54a1[_0xfb38('0x1c')];var _0x34a49b=_0x3bcbab?_0x680147[_0xfb38('0x1b')]:_0x5d54a1[_0xfb38('0x1c')]+_0x5d54a1[_0xfb38('0x1a')];var _0x28a355;if(_0x34a49b>=_0x989857){_0x34a49b=_0x989857;_0x28a355=0xc8;}else{_0x28a355=0xce;}_0x40f30c['status'](_0x28a355);return _0x40f30c[_0xfb38('0x1d')](_0xfb38('0x1e'),_0x159350+'-'+_0x34a49b+'/'+_0x989857)[_0xfb38('0x18')](_0x680147);}return null;};}function patchUpdates(_0x1394a2){return function(_0x1149fa){try{jsonpatch[_0xfb38('0x1f')](_0x1149fa,_0x1394a2,!![]);}catch(_0xa32c50){return BPromise['reject'](_0xa32c50);}return _0x1149fa[_0xfb38('0x20')]();};}function saveUpdates(_0x54c5a9,_0x4cd304){return function(_0x38214a){if(_0x38214a){return _0x38214a['update'](_0x54c5a9)[_0xfb38('0x21')](function(_0x2f12bc){return _0x2f12bc;});}return null;};}function removeEntity(_0x46a833,_0x4f9200){return function(_0x12b0a5){if(_0x12b0a5){return _0x12b0a5[_0xfb38('0x22')]()[_0xfb38('0x21')](function(){_0x46a833[_0xfb38('0x17')](0xcc)[_0xfb38('0x23')]();});}};}function handleEntityNotFound(_0x3572ee,_0x5c467f){return function(_0x135641){if(!_0x135641){_0x3572ee[_0xfb38('0x16')](0x194);}return _0x135641;};}function handleError(_0x10d047,_0xd5e057){_0xd5e057=_0xd5e057||0x1f4;return function(_0xd1aacd){logger[_0xfb38('0x24')](_0xd1aacd[_0xfb38('0x25')]);if(_0xd1aacd[_0xfb38('0x26')]){delete _0xd1aacd['name'];}_0x10d047[_0xfb38('0x17')](_0xd5e057)[_0xfb38('0x27')](_0xd1aacd);};}exports[_0xfb38('0x28')]=function(_0x8ae440,_0x347a25){var _0x500d3e={},_0x259633={},_0x45b9f6={'count':0x0,'rows':[]};var _0x3a1558=_['map'](db[_0xfb38('0x29')][_0xfb38('0x2a')],function(_0x4e668b){return{'name':_0x4e668b[_0xfb38('0x2b')],'type':_0x4e668b['type'][_0xfb38('0x2c')]};});_0x259633['model']=_[_0xfb38('0x2d')](_0x3a1558,_0xfb38('0x26'));_0x259633[_0xfb38('0x2e')]=_['keys'](_0x8ae440['query']);_0x259633[_0xfb38('0x2f')]=_[_0xfb38('0x30')](_0x259633['model'],_0x259633[_0xfb38('0x2e')]);_0x500d3e[_0xfb38('0x31')]=_[_0xfb38('0x30')](_0x259633[_0xfb38('0x32')],qs[_0xfb38('0x33')](_0x8ae440[_0xfb38('0x2e')][_0xfb38('0x33')]));_0x500d3e[_0xfb38('0x31')]=_0x500d3e[_0xfb38('0x31')][_0xfb38('0x34')]?_0x500d3e['attributes']:_0x259633[_0xfb38('0x32')];if(!_0x8ae440[_0xfb38('0x2e')]['hasOwnProperty'](_0xfb38('0x35'))){_0x500d3e[_0xfb38('0x1a')]=qs[_0xfb38('0x1a')](_0x8ae440[_0xfb38('0x2e')][_0xfb38('0x1a')]);_0x500d3e[_0xfb38('0x1c')]=qs[_0xfb38('0x1c')](_0x8ae440['query'][_0xfb38('0x1c')]);}_0x500d3e[_0xfb38('0x36')]=qs[_0xfb38('0x37')](_0x8ae440[_0xfb38('0x2e')][_0xfb38('0x37')]);_0x500d3e[_0xfb38('0x38')]=qs[_0xfb38('0x2f')](_[_0xfb38('0x39')](_0x8ae440[_0xfb38('0x2e')],_0x259633[_0xfb38('0x2f')]),_0x3a1558);if(_0x8ae440['query'][_0xfb38('0x3a')]){_0x500d3e[_0xfb38('0x38')]=_[_0xfb38('0x3b')](_0x500d3e[_0xfb38('0x38')],{'$or':_[_0xfb38('0x2d')](_0x3a1558,function(_0x1f3a36){if(_0x1f3a36[_0xfb38('0x3c')]!==_0xfb38('0x3d')){var _0x28f8d4={};_0x28f8d4[_0x1f3a36['name']]={'$like':'%'+_0x8ae440[_0xfb38('0x2e')][_0xfb38('0x3a')]+'%'};return _0x28f8d4;}})});}_0x500d3e=_[_0xfb38('0x3b')]({},_0x500d3e,_0x8ae440[_0xfb38('0x3e')]);var _0x1b354f={'where':_0x500d3e['where']};return db[_0xfb38('0x29')]['count'](_0x1b354f)[_0xfb38('0x21')](function(_0x36e0c8){_0x45b9f6[_0xfb38('0x1b')]=_0x36e0c8;if(_0x8ae440['query']['includeAll']){_0x500d3e[_0xfb38('0x3f')]=[{'all':!![]}];}return db['FaxTransferReport'][_0xfb38('0x40')](_0x500d3e);})[_0xfb38('0x21')](function(_0x30b464){_0x45b9f6[_0xfb38('0x41')]=_0x30b464;return _0x45b9f6;})[_0xfb38('0x21')](respondWithFilteredResult(_0x347a25,_0x500d3e))[_0xfb38('0x42')](handleError(_0x347a25,null));};exports['show']=function(_0x1071db,_0x1ede8b){var _0x3fdd9c={'raw':!![],'where':{'id':_0x1071db['params']['id']}},_0x83569a={};_0x83569a[_0xfb38('0x32')]=_[_0xfb38('0x43')](db[_0xfb38('0x29')][_0xfb38('0x2a')]);_0x83569a[_0xfb38('0x2e')]=_[_0xfb38('0x43')](_0x1071db[_0xfb38('0x2e')]);_0x83569a[_0xfb38('0x2f')]=_[_0xfb38('0x30')](_0x83569a[_0xfb38('0x32')],_0x83569a[_0xfb38('0x2e')]);_0x3fdd9c[_0xfb38('0x31')]=_[_0xfb38('0x30')](_0x83569a[_0xfb38('0x32')],qs[_0xfb38('0x33')](_0x1071db[_0xfb38('0x2e')][_0xfb38('0x33')]));_0x3fdd9c[_0xfb38('0x31')]=_0x3fdd9c[_0xfb38('0x31')]['length']?_0x3fdd9c[_0xfb38('0x31')]:_0x83569a[_0xfb38('0x32')];if(_0x1071db[_0xfb38('0x2e')][_0xfb38('0x44')]){_0x3fdd9c[_0xfb38('0x3f')]=[{'all':!![]}];}_0x3fdd9c=_[_0xfb38('0x3b')]({},_0x3fdd9c,_0x1071db[_0xfb38('0x3e')]);return db[_0xfb38('0x29')][_0xfb38('0x45')](_0x3fdd9c)['then'](handleEntityNotFound(_0x1ede8b,null))[_0xfb38('0x21')](respondWithResult(_0x1ede8b,null))['catch'](handleError(_0x1ede8b,null));};exports[_0xfb38('0x46')]=function(_0x1d5c1e,_0xa3b8d6){return db['FaxTransferReport'][_0xfb38('0x46')](_0x1d5c1e['body'],{})[_0xfb38('0x21')](respondWithResult(_0xa3b8d6,0xc9))[_0xfb38('0x42')](handleError(_0xa3b8d6,null));};exports[_0xfb38('0x47')]=function(_0x144d96,_0x36a17f){if(_0x144d96[_0xfb38('0x48')]['id']){delete _0x144d96[_0xfb38('0x48')]['id'];}return db[_0xfb38('0x29')][_0xfb38('0x45')]({'where':{'id':_0x144d96[_0xfb38('0x49')]['id']}})[_0xfb38('0x21')](handleEntityNotFound(_0x36a17f,null))[_0xfb38('0x21')](saveUpdates(_0x144d96[_0xfb38('0x48')],null))['then'](respondWithResult(_0x36a17f,null))[_0xfb38('0x42')](handleError(_0x36a17f,null));};exports[_0xfb38('0x22')]=function(_0x32db00,_0x2750a8){return db[_0xfb38('0x29')][_0xfb38('0x45')]({'where':{'id':_0x32db00['params']['id']}})[_0xfb38('0x21')](handleEntityNotFound(_0x2750a8,null))[_0xfb38('0x21')](removeEntity(_0x2750a8,null))[_0xfb38('0x42')](handleError(_0x2750a8,null));};exports[_0xfb38('0x4a')]=function(_0x318490,_0x34b4da){return db[_0xfb38('0x29')][_0xfb38('0x4a')]()['then'](respondWithResult(_0x34b4da,null))['catch'](handleError(_0x34b4da,null));};
\ No newline at end of file
+var _0x3c4e=['moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','save','update','then','destroy','error','name','send','index','map','FaxTransferReport','rawAttributes','fieldName','type','model','query','attributes','fields','length','nolimit','order','sort','where','filters','pick','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','show','params','keys','intersection','find','catch','create','body','describe','rimraf','fast-json-patch','request-promise'];(function(_0x1d1cc1,_0x485087){var _0x44d301=function(_0x1d1dbc){while(--_0x1d1dbc){_0x1d1cc1['push'](_0x1d1cc1['shift']());}};_0x44d301(++_0x485087);}(_0x3c4e,0x125));var _0xe3c4=function(_0x19d7e9,_0x359dd7){_0x19d7e9=_0x19d7e9-0x0;var _0x3b74db=_0x3c4e[_0x19d7e9];return _0x3b74db;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe3c4('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe3c4('0x1'));var rp=require(_0xe3c4('0x2'));var moment=require(_0xe3c4('0x3'));var BPromise=require(_0xe3c4('0x4'));var Mustache=require('mustache');var util=require(_0xe3c4('0x5'));var path=require(_0xe3c4('0x6'));var sox=require(_0xe3c4('0x7'));var csv=require(_0xe3c4('0x8'));var ejs=require(_0xe3c4('0x9'));var fs=require('fs');var fs_extra=require(_0xe3c4('0xa'));var _=require(_0xe3c4('0xb'));var squel=require(_0xe3c4('0xc'));var crypto=require('crypto');var jsforce=require(_0xe3c4('0xd'));var deskjs=require(_0xe3c4('0xe'));var toCsv=require(_0xe3c4('0x8'));var querystring=require('querystring');var Papa=require(_0xe3c4('0xf'));var Redis=require('ioredis');var authService=require(_0xe3c4('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xe3c4('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe3c4('0x12'))(_0xe3c4('0x13'));var utils=require(_0xe3c4('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xe3c4('0x15'));var db=require(_0xe3c4('0x16'))['db'];function respondWithStatusCode(_0x10d356,_0xb6008c){_0xb6008c=_0xb6008c||0xcc;return function(_0xacb4e7){if(_0xacb4e7){return _0x10d356[_0xe3c4('0x17')](_0xb6008c);}return _0x10d356[_0xe3c4('0x18')](_0xb6008c)[_0xe3c4('0x19')]();};}function respondWithResult(_0x55eab4,_0x2130c1){_0x2130c1=_0x2130c1||0xc8;return function(_0x177307){if(_0x177307){return _0x55eab4[_0xe3c4('0x18')](_0x2130c1)['json'](_0x177307);}};}function respondWithFilteredResult(_0x2d2159,_0x54523b){return function(_0x1bbfaa){if(_0x1bbfaa){var _0x25f04f=typeof _0x54523b[_0xe3c4('0x1a')]===_0xe3c4('0x1b')&&typeof _0x54523b[_0xe3c4('0x1c')]===_0xe3c4('0x1b');var _0x4c1ec3=_0x1bbfaa[_0xe3c4('0x1d')];var _0x252956=_0x25f04f?0x0:_0x54523b[_0xe3c4('0x1a')];var _0x35490a=_0x25f04f?_0x1bbfaa['count']:_0x54523b[_0xe3c4('0x1a')]+_0x54523b[_0xe3c4('0x1c')];var _0x2d7b40;if(_0x35490a>=_0x4c1ec3){_0x35490a=_0x4c1ec3;_0x2d7b40=0xc8;}else{_0x2d7b40=0xce;}_0x2d2159[_0xe3c4('0x18')](_0x2d7b40);return _0x2d2159[_0xe3c4('0x1e')](_0xe3c4('0x1f'),_0x252956+'-'+_0x35490a+'/'+_0x4c1ec3)[_0xe3c4('0x20')](_0x1bbfaa);}return null;};}function patchUpdates(_0x5a0dcf){return function(_0x440da3){try{jsonpatch['apply'](_0x440da3,_0x5a0dcf,!![]);}catch(_0x380fdc){return BPromise['reject'](_0x380fdc);}return _0x440da3[_0xe3c4('0x21')]();};}function saveUpdates(_0x5248db,_0x3b51b3){return function(_0x131f5c){if(_0x131f5c){return _0x131f5c[_0xe3c4('0x22')](_0x5248db)[_0xe3c4('0x23')](function(_0x3d926a){return _0x3d926a;});}return null;};}function removeEntity(_0x221f71,_0xca3d51){return function(_0x19aad5){if(_0x19aad5){return _0x19aad5[_0xe3c4('0x24')]()[_0xe3c4('0x23')](function(){_0x221f71['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x28e249,_0xb7aac9){return function(_0x5ce727){if(!_0x5ce727){_0x28e249[_0xe3c4('0x17')](0x194);}return _0x5ce727;};}function handleError(_0x2c4bb3,_0x4086df){_0x4086df=_0x4086df||0x1f4;return function(_0x5c5fd7){logger[_0xe3c4('0x25')](_0x5c5fd7['stack']);if(_0x5c5fd7[_0xe3c4('0x26')]){delete _0x5c5fd7[_0xe3c4('0x26')];}_0x2c4bb3['status'](_0x4086df)[_0xe3c4('0x27')](_0x5c5fd7);};}exports[_0xe3c4('0x28')]=function(_0x16c3fe,_0x1b621e){var _0x886f17={},_0x29875d={},_0x59faeb={'count':0x0,'rows':[]};var _0x71af94=_[_0xe3c4('0x29')](db[_0xe3c4('0x2a')][_0xe3c4('0x2b')],function(_0x2d25e8){return{'name':_0x2d25e8[_0xe3c4('0x2c')],'type':_0x2d25e8[_0xe3c4('0x2d')]['key']};});_0x29875d[_0xe3c4('0x2e')]=_[_0xe3c4('0x29')](_0x71af94,'name');_0x29875d[_0xe3c4('0x2f')]=_['keys'](_0x16c3fe[_0xe3c4('0x2f')]);_0x29875d['filters']=_['intersection'](_0x29875d[_0xe3c4('0x2e')],_0x29875d['query']);_0x886f17[_0xe3c4('0x30')]=_['intersection'](_0x29875d[_0xe3c4('0x2e')],qs[_0xe3c4('0x31')](_0x16c3fe[_0xe3c4('0x2f')]['fields']));_0x886f17[_0xe3c4('0x30')]=_0x886f17['attributes'][_0xe3c4('0x32')]?_0x886f17[_0xe3c4('0x30')]:_0x29875d[_0xe3c4('0x2e')];if(!_0x16c3fe['query']['hasOwnProperty'](_0xe3c4('0x33'))){_0x886f17[_0xe3c4('0x1c')]=qs[_0xe3c4('0x1c')](_0x16c3fe[_0xe3c4('0x2f')][_0xe3c4('0x1c')]);_0x886f17['offset']=qs[_0xe3c4('0x1a')](_0x16c3fe[_0xe3c4('0x2f')][_0xe3c4('0x1a')]);}_0x886f17[_0xe3c4('0x34')]=qs[_0xe3c4('0x35')](_0x16c3fe[_0xe3c4('0x2f')]['sort']);_0x886f17[_0xe3c4('0x36')]=qs[_0xe3c4('0x37')](_[_0xe3c4('0x38')](_0x16c3fe[_0xe3c4('0x2f')],_0x29875d['filters']),_0x71af94);if(_0x16c3fe['query']['filter']){_0x886f17[_0xe3c4('0x36')]=_['merge'](_0x886f17['where'],{'$or':_[_0xe3c4('0x29')](_0x71af94,function(_0x26139f){if(_0x26139f[_0xe3c4('0x2d')]!==_0xe3c4('0x39')){var _0x139324={};_0x139324[_0x26139f[_0xe3c4('0x26')]]={'$like':'%'+_0x16c3fe[_0xe3c4('0x2f')][_0xe3c4('0x3a')]+'%'};return _0x139324;}})});}_0x886f17=_[_0xe3c4('0x3b')]({},_0x886f17,_0x16c3fe[_0xe3c4('0x3c')]);var _0x490fe6={'where':_0x886f17[_0xe3c4('0x36')]};return db[_0xe3c4('0x2a')][_0xe3c4('0x1d')](_0x490fe6)[_0xe3c4('0x23')](function(_0x4e2245){_0x59faeb[_0xe3c4('0x1d')]=_0x4e2245;if(_0x16c3fe[_0xe3c4('0x2f')][_0xe3c4('0x3d')]){_0x886f17[_0xe3c4('0x3e')]=[{'all':!![]}];}return db['FaxTransferReport'][_0xe3c4('0x3f')](_0x886f17);})[_0xe3c4('0x23')](function(_0x4858ef){_0x59faeb[_0xe3c4('0x40')]=_0x4858ef;return _0x59faeb;})['then'](respondWithFilteredResult(_0x1b621e,_0x886f17))['catch'](handleError(_0x1b621e,null));};exports[_0xe3c4('0x41')]=function(_0x278ffb,_0x356ed0){var _0x1b7e47={'raw':!![],'where':{'id':_0x278ffb[_0xe3c4('0x42')]['id']}},_0xb55b52={};_0xb55b52[_0xe3c4('0x2e')]=_[_0xe3c4('0x43')](db[_0xe3c4('0x2a')][_0xe3c4('0x2b')]);_0xb55b52[_0xe3c4('0x2f')]=_['keys'](_0x278ffb[_0xe3c4('0x2f')]);_0xb55b52[_0xe3c4('0x37')]=_[_0xe3c4('0x44')](_0xb55b52['model'],_0xb55b52['query']);_0x1b7e47[_0xe3c4('0x30')]=_[_0xe3c4('0x44')](_0xb55b52[_0xe3c4('0x2e')],qs[_0xe3c4('0x31')](_0x278ffb[_0xe3c4('0x2f')][_0xe3c4('0x31')]));_0x1b7e47[_0xe3c4('0x30')]=_0x1b7e47['attributes'][_0xe3c4('0x32')]?_0x1b7e47[_0xe3c4('0x30')]:_0xb55b52['model'];if(_0x278ffb['query']['includeAll']){_0x1b7e47[_0xe3c4('0x3e')]=[{'all':!![]}];}_0x1b7e47=_[_0xe3c4('0x3b')]({},_0x1b7e47,_0x278ffb[_0xe3c4('0x3c')]);return db[_0xe3c4('0x2a')][_0xe3c4('0x45')](_0x1b7e47)[_0xe3c4('0x23')](handleEntityNotFound(_0x356ed0,null))['then'](respondWithResult(_0x356ed0,null))[_0xe3c4('0x46')](handleError(_0x356ed0,null));};exports['create']=function(_0x20155a,_0x8388d0){return db[_0xe3c4('0x2a')][_0xe3c4('0x47')](_0x20155a[_0xe3c4('0x48')],{})[_0xe3c4('0x23')](respondWithResult(_0x8388d0,0xc9))['catch'](handleError(_0x8388d0,null));};exports[_0xe3c4('0x22')]=function(_0x298ecd,_0x185cc9){if(_0x298ecd[_0xe3c4('0x48')]['id']){delete _0x298ecd[_0xe3c4('0x48')]['id'];}return db['FaxTransferReport'][_0xe3c4('0x45')]({'where':{'id':_0x298ecd[_0xe3c4('0x42')]['id']}})['then'](handleEntityNotFound(_0x185cc9,null))['then'](saveUpdates(_0x298ecd[_0xe3c4('0x48')],null))[_0xe3c4('0x23')](respondWithResult(_0x185cc9,null))[_0xe3c4('0x46')](handleError(_0x185cc9,null));};exports[_0xe3c4('0x24')]=function(_0x27c5e4,_0x465738){return db[_0xe3c4('0x2a')][_0xe3c4('0x45')]({'where':{'id':_0x27c5e4[_0xe3c4('0x42')]['id']}})[_0xe3c4('0x23')](handleEntityNotFound(_0x465738,null))[_0xe3c4('0x23')](removeEntity(_0x465738,null))[_0xe3c4('0x46')](handleError(_0x465738,null));};exports[_0xe3c4('0x49')]=function(_0x38242a,_0x40cdc1){return db[_0xe3c4('0x2a')]['describe']()[_0xe3c4('0x23')](respondWithResult(_0x40cdc1,null))['catch'](handleError(_0x40cdc1,null));};
\ No newline at end of file
index b4dbb51..df5502d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xded4=['../../config/environment','./faxTransferReport.attributes','exports','define','uniqueid','../../config/logger','api','moment','bluebird','path'];(function(_0x59dccc,_0x184c1c){var _0xc97bcb=function(_0x1ddbcb){while(--_0x1ddbcb){_0x59dccc['push'](_0x59dccc['shift']());}};_0xc97bcb(++_0x184c1c);}(_0xded4,0x1bd));var _0x4ded=function(_0x4391d0,_0x2c8f2a){_0x4391d0=_0x4391d0-0x0;var _0x3e2928=_0xded4[_0x4391d0];return _0x3e2928;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x4ded('0x0'))(_0x4ded('0x1'));var moment=require(_0x4ded('0x2'));var BPromise=require(_0x4ded('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4ded('0x4'));var rimraf=require('rimraf');var config=require(_0x4ded('0x5'));var attributes=require(_0x4ded('0x6'));module[_0x4ded('0x7')]=function(_0x17491a,_0x23cc0f){return _0x17491a[_0x4ded('0x8')]('FaxTransferReport',attributes,{'tableName':'report_fax_transfer','paranoid':![],'indexes':[{'name':_0x4ded('0x9'),'fields':[_0x4ded('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1780=['bluebird','request-promise','rimraf','../../config/environment','./faxTransferReport.attributes','define','FaxTransferReport','report_fax_transfer','uniqueid','lodash','../../config/logger','api','moment'];(function(_0x280faf,_0x31bd74){var _0x59e18d=function(_0x308642){while(--_0x308642){_0x280faf['push'](_0x280faf['shift']());}};_0x59e18d(++_0x31bd74);}(_0x1780,0xbf));var _0x0178=function(_0x4f595c,_0x2c7a0a){_0x4f595c=_0x4f595c-0x0;var _0xf7c553=_0x1780[_0x4f595c];return _0xf7c553;};'use strict';var _=require(_0x0178('0x0'));var util=require('util');var logger=require(_0x0178('0x1'))(_0x0178('0x2'));var moment=require(_0x0178('0x3'));var BPromise=require(_0x0178('0x4'));var rp=require(_0x0178('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0178('0x6'));var config=require(_0x0178('0x7'));var attributes=require(_0x0178('0x8'));module['exports']=function(_0x574424,_0x1627af){return _0x574424[_0x0178('0x9')](_0x0178('0xa'),attributes,{'tableName':_0x0178('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x0178('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 1cab32e..25989d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87d1=['moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','FaxTransferReport,\x20%s,\x20%s','debug','FaxTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result'];(function(_0x710815,_0x520da8){var _0x5b3b89=function(_0x2e1a8e){while(--_0x2e1a8e){_0x710815['push'](_0x710815['shift']());}};_0x5b3b89(++_0x520da8);}(_0x87d1,0x111));var _0x187d=function(_0x5e2b50,_0x4b71e5){_0x5e2b50=_0x5e2b50-0x0;var _0x19816a=_0x87d1[_0x5e2b50];return _0x19816a;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x187d('0x0'));var BPromise=require(_0x187d('0x1'));var rs=require(_0x187d('0x2'));var fs=require('fs');var Redis=require(_0x187d('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x187d('0x4'));var logger=require(_0x187d('0x5'))(_0x187d('0x6'));var config=require(_0x187d('0x7'));var jayson=require(_0x187d('0x8'));var client=jayson[_0x187d('0x9')][_0x187d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4972ea,_0x1268cf,_0x59e3a8){return new BPromise(function(_0x43796a,_0x29a25c){return client[_0x187d('0xb')](_0x4972ea,_0x59e3a8)['then'](function(_0x220728){logger[_0x187d('0xc')](_0x187d('0xd'),_0x1268cf,'request\x20sent');logger[_0x187d('0xe')](_0x187d('0xf'),_0x1268cf,_0x187d('0x10'),JSON['stringify'](_0x220728));if(_0x220728[_0x187d('0x11')]){if(_0x220728[_0x187d('0x11')][_0x187d('0x12')]===0x1f4){logger['error'](_0x187d('0xd'),_0x1268cf,_0x220728[_0x187d('0x11')][_0x187d('0x13')]);return _0x29a25c(_0x220728[_0x187d('0x11')][_0x187d('0x13')]);}logger[_0x187d('0x11')]('FaxTransferReport,\x20%s,\x20%s',_0x1268cf,_0x220728[_0x187d('0x11')][_0x187d('0x13')]);return _0x43796a(_0x220728[_0x187d('0x11')]['message']);}else{logger[_0x187d('0xc')](_0x187d('0xd'),_0x1268cf,'request\x20sent');_0x43796a(_0x220728[_0x187d('0x14')][_0x187d('0x13')]);}})['catch'](function(_0x5cd861){logger[_0x187d('0x11')](_0x187d('0xd'),_0x1268cf,_0x5cd861);_0x29a25c(_0x5cd861);});});}
\ No newline at end of file
+var _0x3451=['../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','code','FaxTransferReport,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x50fa94,_0x2471de){var _0x34849c=function(_0xbde347){while(--_0xbde347){_0x50fa94['push'](_0x50fa94['shift']());}};_0x34849c(++_0x2471de);}(_0x3451,0x92));var _0x1345=function(_0x46e427,_0xdad9a8){_0x46e427=_0x46e427-0x0;var _0x127b35=_0x3451[_0x46e427];return _0x127b35;};'use strict';var _=require(_0x1345('0x0'));var util=require(_0x1345('0x1'));var moment=require(_0x1345('0x2'));var BPromise=require(_0x1345('0x3'));var rs=require(_0x1345('0x4'));var fs=require('fs');var Redis=require(_0x1345('0x5'));var db=require(_0x1345('0x6'))['db'];var utils=require(_0x1345('0x7'));var logger=require(_0x1345('0x8'))(_0x1345('0x9'));var config=require(_0x1345('0xa'));var jayson=require(_0x1345('0xb'));var client=jayson[_0x1345('0xc')][_0x1345('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x5ce1a3,_0x423e3d,_0x7372c9){return new BPromise(function(_0x288e02,_0x502107){return client[_0x1345('0xe')](_0x5ce1a3,_0x7372c9)[_0x1345('0xf')](function(_0x31d57e){logger[_0x1345('0x10')]('FaxTransferReport,\x20%s,\x20%s',_0x423e3d,_0x1345('0x11'));logger[_0x1345('0x12')]('FaxTransferReport,\x20%s,\x20%s,\x20%s',_0x423e3d,_0x1345('0x11'),JSON[_0x1345('0x13')](_0x31d57e));if(_0x31d57e['error']){if(_0x31d57e[_0x1345('0x14')][_0x1345('0x15')]===0x1f4){logger[_0x1345('0x14')](_0x1345('0x16'),_0x423e3d,_0x31d57e['error'][_0x1345('0x17')]);return _0x502107(_0x31d57e[_0x1345('0x14')][_0x1345('0x17')]);}logger[_0x1345('0x14')](_0x1345('0x16'),_0x423e3d,_0x31d57e['error'][_0x1345('0x17')]);return _0x288e02(_0x31d57e[_0x1345('0x14')][_0x1345('0x17')]);}else{logger[_0x1345('0x10')](_0x1345('0x16'),_0x423e3d,_0x1345('0x11'));_0x288e02(_0x31d57e[_0x1345('0x18')][_0x1345('0x17')]);}})[_0x1345('0x19')](function(_0x5cd036){logger[_0x1345('0x14')](_0x1345('0x16'),_0x423e3d,_0x5cd036);_0x502107(_0x5cd036);});});}
\ No newline at end of file
index 30a6fbe..85f7523 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f13=['express','Router','fs-extra','../../config/environment','get','index','isAuthenticated','describe','/:id','show','post','create','put','update','destroy','exports','multer','util','path','connect-timeout'];(function(_0x3f2a44,_0xf70f4b){var _0x50d3cb=function(_0x4f896d){while(--_0x4f896d){_0x3f2a44['push'](_0x3f2a44['shift']());}};_0x50d3cb(++_0xf70f4b);}(_0x8f13,0x164));var _0x38f1=function(_0x569fef,_0x49c37a){_0x569fef=_0x569fef-0x0;var _0x11f20b=_0x8f13[_0x569fef];return _0x11f20b;};'use strict';var multer=require(_0x38f1('0x0'));var util=require(_0x38f1('0x1'));var path=require(_0x38f1('0x2'));var timeout=require(_0x38f1('0x3'));var express=require(_0x38f1('0x4'));var router=express[_0x38f1('0x5')]();var fs_extra=require(_0x38f1('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x38f1('0x7'));var controller=require('./faxTransferReport.controller');router[_0x38f1('0x8')]('/',auth['isAuthenticated'](),controller[_0x38f1('0x9')]);router['get']('/describe',auth[_0x38f1('0xa')](),controller[_0x38f1('0xb')]);router['get'](_0x38f1('0xc'),auth[_0x38f1('0xa')](),controller[_0x38f1('0xd')]);router[_0x38f1('0xe')]('/',auth[_0x38f1('0xa')](),controller[_0x38f1('0xf')]);router[_0x38f1('0x10')](_0x38f1('0xc'),auth[_0x38f1('0xa')](),controller[_0x38f1('0x11')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x38f1('0x12')]);module[_0x38f1('0x13')]=router;
\ No newline at end of file
+var _0x65cd=['./faxTransferReport.controller','get','/describe','isAuthenticated','describe','/:id','show','post','create','put','destroy','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x65cd,0x84));var _0xd65c=function(_0x2bd264,_0x53a5d4){_0x2bd264=_0x2bd264-0x0;var _0x3cd2e3=_0x65cd[_0x2bd264];return _0x3cd2e3;};'use strict';var multer=require('multer');var util=require(_0xd65c('0x0'));var path=require('path');var timeout=require(_0xd65c('0x1'));var express=require(_0xd65c('0x2'));var router=express[_0xd65c('0x3')]();var fs_extra=require(_0xd65c('0x4'));var auth=require(_0xd65c('0x5'));var interaction=require(_0xd65c('0x6'));var config=require(_0xd65c('0x7'));var controller=require(_0xd65c('0x8'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0xd65c('0x9')](_0xd65c('0xa'),auth[_0xd65c('0xb')](),controller[_0xd65c('0xc')]);router[_0xd65c('0x9')](_0xd65c('0xd'),auth[_0xd65c('0xb')](),controller[_0xd65c('0xe')]);router[_0xd65c('0xf')]('/',auth[_0xd65c('0xb')](),controller[_0xd65c('0x10')]);router[_0xd65c('0x11')](_0xd65c('0xd'),auth[_0xd65c('0xb')](),controller['update']);router['delete'](_0xd65c('0xd'),auth['isAuthenticated'](),controller[_0xd65c('0x12')]);module[_0xd65c('0x13')]=router;
\ No newline at end of file
index 5e94dc5..b484ebc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3b2=['./intDeskAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','/:id/fields','getFields','post','create','addConfiguration','update','delete','destroy','exports','util','Router','../../components/interaction/service','../../config/environment'];(function(_0x429948,_0x1a6851){var _0x35d5d1=function(_0x574853){while(--_0x574853){_0x429948['push'](_0x429948['shift']());}};_0x35d5d1(++_0x1a6851);}(_0xd3b2,0xb0));var _0x2d3b=function(_0x18febb,_0x5827cd){_0x18febb=_0x18febb-0x0;var _0x34c503=_0xd3b2[_0x18febb];return _0x34c503;};'use strict';var multer=require('multer');var util=require(_0x2d3b('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x2d3b('0x1')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x2d3b('0x2'));var config=require(_0x2d3b('0x3'));var controller=require(_0x2d3b('0x4'));router[_0x2d3b('0x5')]('/',auth[_0x2d3b('0x6')](),controller[_0x2d3b('0x7')]);router[_0x2d3b('0x5')](_0x2d3b('0x8'),auth[_0x2d3b('0x6')](),controller[_0x2d3b('0x9')]);router['get'](_0x2d3b('0xa'),auth[_0x2d3b('0x6')](),controller['getConfigurations']);router[_0x2d3b('0x5')](_0x2d3b('0xb'),auth[_0x2d3b('0x6')](),controller[_0x2d3b('0xc')]);router[_0x2d3b('0xd')]('/',auth[_0x2d3b('0x6')](),controller[_0x2d3b('0xe')]);router['post'](_0x2d3b('0xa'),auth[_0x2d3b('0x6')](),controller[_0x2d3b('0xf')]);router['put']('/:id',auth[_0x2d3b('0x6')](),controller[_0x2d3b('0x10')]);router[_0x2d3b('0x11')](_0x2d3b('0x8'),auth[_0x2d3b('0x6')](),controller[_0x2d3b('0x12')]);module[_0x2d3b('0x13')]=router;
\ No newline at end of file
+var _0xc731=['multer','util','path','connect-timeout','express','fs-extra','./intDeskAccount.controller','get','isAuthenticated','index','show','/:id/configurations','getConfigurations','getFields','post','create','addConfiguration','put','/:id','delete','destroy','exports'];(function(_0x50fafa,_0x50e6cc){var _0x563c1f=function(_0x260f22){while(--_0x260f22){_0x50fafa['push'](_0x50fafa['shift']());}};_0x563c1f(++_0x50e6cc);}(_0xc731,0x84));var _0x1c73=function(_0x3df3b1,_0x2ebecb){_0x3df3b1=_0x3df3b1-0x0;var _0x17461e=_0xc731[_0x3df3b1];return _0x17461e;};'use strict';var multer=require(_0x1c73('0x0'));var util=require(_0x1c73('0x1'));var path=require(_0x1c73('0x2'));var timeout=require(_0x1c73('0x3'));var express=require(_0x1c73('0x4'));var router=express['Router']();var fs_extra=require(_0x1c73('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x1c73('0x6'));router[_0x1c73('0x7')]('/',auth[_0x1c73('0x8')](),controller[_0x1c73('0x9')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x1c73('0xa')]);router['get'](_0x1c73('0xb'),auth[_0x1c73('0x8')](),controller[_0x1c73('0xc')]);router[_0x1c73('0x7')]('/:id/fields',auth[_0x1c73('0x8')](),controller[_0x1c73('0xd')]);router[_0x1c73('0xe')]('/',auth[_0x1c73('0x8')](),controller[_0x1c73('0xf')]);router[_0x1c73('0xe')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x1c73('0x10')]);router[_0x1c73('0x11')](_0x1c73('0x12'),auth[_0x1c73('0x8')](),controller['update']);router[_0x1c73('0x13')](_0x1c73('0x12'),auth['isAuthenticated'](),controller[_0x1c73('0x14')]);module[_0x1c73('0x15')]=router;
\ No newline at end of file
index ef073ad..321522f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6464=['integrationTab','sequelize','exports','STRING','ENUM','basic'];(function(_0x5b9252,_0x4bc2f8){var _0x1a4284=function(_0x36e4c7){while(--_0x36e4c7){_0x5b9252['push'](_0x5b9252['shift']());}};_0x1a4284(++_0x4bc2f8);}(_0x6464,0x1e1));var _0x4646=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x6464[_0x2dafbe];return _0x58a45a;};'use strict';var Sequelize=require(_0x4646('0x0'));module[_0x4646('0x1')]={'name':{'type':Sequelize[_0x4646('0x2')]},'description':{'type':Sequelize[_0x4646('0x2')]},'username':{'type':Sequelize[_0x4646('0x2')]},'remoteUri':{'type':Sequelize[_0x4646('0x2')]},'authType':{'type':Sequelize[_0x4646('0x3')](_0x4646('0x4')),'defaultValue':_0x4646('0x4')},'password':{'type':Sequelize[_0x4646('0x2')]},'consumerKey':{'type':Sequelize[_0x4646('0x2')]},'consumerSecret':{'type':Sequelize[_0x4646('0x2')]},'token':{'type':Sequelize[_0x4646('0x2')]},'tokenSecret':{'type':Sequelize[_0x4646('0x2')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x4646('0x3')]('integrationTab','newTab'),'defaultValue':_0x4646('0x5')}};
\ No newline at end of file
+var _0x9b8b=['ENUM','basic','integrationTab','newTab','exports','STRING'];(function(_0x2a80c9,_0x5d4e02){var _0x7218b4=function(_0x2342ff){while(--_0x2342ff){_0x2a80c9['push'](_0x2a80c9['shift']());}};_0x7218b4(++_0x5d4e02);}(_0x9b8b,0x160));var _0xb9b8=function(_0x3835b5,_0x423301){_0x3835b5=_0x3835b5-0x0;var _0x23d8d6=_0x9b8b[_0x3835b5];return _0x23d8d6;};'use strict';var Sequelize=require('sequelize');module[_0xb9b8('0x0')]={'name':{'type':Sequelize[_0xb9b8('0x1')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0xb9b8('0x1')]},'authType':{'type':Sequelize[_0xb9b8('0x2')](_0xb9b8('0x3')),'defaultValue':_0xb9b8('0x3')},'password':{'type':Sequelize[_0xb9b8('0x1')]},'consumerKey':{'type':Sequelize[_0xb9b8('0x1')]},'consumerSecret':{'type':Sequelize[_0xb9b8('0x1')]},'token':{'type':Sequelize[_0xb9b8('0x1')]},'tokenSecret':{'type':Sequelize[_0xb9b8('0x1')]},'serverUrl':{'type':Sequelize[_0xb9b8('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0xb9b8('0x2')](_0xb9b8('0x4'),_0xb9b8('0x5')),'defaultValue':'integrationTab'}};
\ No newline at end of file
index 21e1355..035f950 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7d9=['findAll','rows','catch','show','params','find','create','body','findOne','DeskConfiguration','hasOwnProperty','getConfigurations','addConfiguration','AccountId','Subjects','getSubjects','Descriptions','channel','DeskField','authType','password','token','tokenSecret','remoteUri','slice','substring','GET','format','application/json','basic','username','concat','_embedded','entries','active','label','test','error','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','reject','then','destroy','name','send','map','DeskAccount','rawAttributes','fieldName','key','query','keys','filters','intersection','model','attributes','fields','length','nolimit','sort','pick','filter','merge','where','type','options','includeAll','include'];(function(_0x45e98e,_0x169b60){var _0x374dba=function(_0x597612){while(--_0x597612){_0x45e98e['push'](_0x45e98e['shift']());}};_0x374dba(++_0x169b60);}(_0xe7d9,0x157));var _0x9e7d=function(_0x2e142b,_0x5cc3f5){_0x2e142b=_0x2e142b-0x0;var _0x50c222=_0xe7d9[_0x2e142b];return _0x50c222;};'use strict';var emlformat=require(_0x9e7d('0x0'));var rimraf=require(_0x9e7d('0x1'));var zipdir=require(_0x9e7d('0x2'));var jsonpatch=require(_0x9e7d('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x9e7d('0x4'));var Mustache=require(_0x9e7d('0x5'));var util=require(_0x9e7d('0x6'));var path=require('path');var sox=require(_0x9e7d('0x7'));var csv=require(_0x9e7d('0x8'));var ejs=require(_0x9e7d('0x9'));var fs=require('fs');var fs_extra=require(_0x9e7d('0xa'));var _=require(_0x9e7d('0xb'));var squel=require('squel');var crypto=require(_0x9e7d('0xc'));var jsforce=require(_0x9e7d('0xd'));var deskjs=require(_0x9e7d('0xe'));var toCsv=require('to-csv');var querystring=require(_0x9e7d('0xf'));var Papa=require(_0x9e7d('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x9e7d('0x11'));var hardwareService=require(_0x9e7d('0x12'));var logger=require(_0x9e7d('0x13'))(_0x9e7d('0x14'));var utils=require('../../config/utils');var config=require(_0x9e7d('0x15'));var licenseUtil=require(_0x9e7d('0x16'));var db=require(_0x9e7d('0x17'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x494205,_0x23df75){_0x23df75=_0x23df75||0xcc;return function(_0x58a649){if(_0x58a649){return _0x494205[_0x9e7d('0x18')](_0x23df75);}return _0x494205[_0x9e7d('0x19')](_0x23df75)[_0x9e7d('0x1a')]();};}function respondWithResult(_0x343228,_0x5ca7e6){_0x5ca7e6=_0x5ca7e6||0xc8;return function(_0x39c8ea){if(_0x39c8ea){return _0x343228[_0x9e7d('0x19')](_0x5ca7e6)['json'](_0x39c8ea);}};}function respondWithFilteredResult(_0x3deb2c,_0x51e295){return function(_0x3543d7){if(_0x3543d7){var _0x4f2977=typeof _0x51e295[_0x9e7d('0x1b')]===_0x9e7d('0x1c')&&typeof _0x51e295[_0x9e7d('0x1d')]===_0x9e7d('0x1c');var _0x4c96c2=_0x3543d7[_0x9e7d('0x1e')];var _0x369599=_0x4f2977?0x0:_0x51e295['offset'];var _0x47c595=_0x4f2977?_0x3543d7[_0x9e7d('0x1e')]:_0x51e295['offset']+_0x51e295[_0x9e7d('0x1d')];var _0x1a05cb;if(_0x47c595>=_0x4c96c2){_0x47c595=_0x4c96c2;_0x1a05cb=0xc8;}else{_0x1a05cb=0xce;}_0x3deb2c['status'](_0x1a05cb);return _0x3deb2c['set'](_0x9e7d('0x1f'),_0x369599+'-'+_0x47c595+'/'+_0x4c96c2)[_0x9e7d('0x20')](_0x3543d7);}return null;};}function patchUpdates(_0x6bdb40){return function(_0x34121f){try{jsonpatch['apply'](_0x34121f,_0x6bdb40,!![]);}catch(_0x5baa9d){return BPromise[_0x9e7d('0x21')](_0x5baa9d);}return _0x34121f['save']();};}function saveUpdates(_0x5c7936,_0x28c3a4){return function(_0x1c0dbb){if(_0x1c0dbb){return _0x1c0dbb['update'](_0x5c7936)[_0x9e7d('0x22')](function(_0x474631){return _0x474631;});}return null;};}function removeEntity(_0x3ebe8a,_0x203b7f){return function(_0x573205){if(_0x573205){return _0x573205[_0x9e7d('0x23')]()['then'](function(){_0x3ebe8a[_0x9e7d('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0xd0ae62,_0x4d3e3a){return function(_0x403d82){if(!_0x403d82){_0xd0ae62[_0x9e7d('0x18')](0x194);}return _0x403d82;};}function handleError(_0xa0599f,_0x25e141){_0x25e141=_0x25e141||0x1f4;return function(_0x59da20){logger['error'](_0x59da20['stack']);if(_0x59da20[_0x9e7d('0x24')]){delete _0x59da20[_0x9e7d('0x24')];}_0xa0599f['status'](_0x25e141)[_0x9e7d('0x25')](_0x59da20);};}exports['index']=function(_0x3a9110,_0x467eb5){var _0x46649d={},_0x2555a1={},_0x4987a0={'count':0x0,'rows':[]};var _0x1365ad=_[_0x9e7d('0x26')](db[_0x9e7d('0x27')][_0x9e7d('0x28')],function(_0x21b328){return{'name':_0x21b328[_0x9e7d('0x29')],'type':_0x21b328['type'][_0x9e7d('0x2a')]};});_0x2555a1['model']=_[_0x9e7d('0x26')](_0x1365ad,_0x9e7d('0x24'));_0x2555a1[_0x9e7d('0x2b')]=_[_0x9e7d('0x2c')](_0x3a9110[_0x9e7d('0x2b')]);_0x2555a1[_0x9e7d('0x2d')]=_[_0x9e7d('0x2e')](_0x2555a1[_0x9e7d('0x2f')],_0x2555a1[_0x9e7d('0x2b')]);_0x46649d[_0x9e7d('0x30')]=_[_0x9e7d('0x2e')](_0x2555a1[_0x9e7d('0x2f')],qs['fields'](_0x3a9110[_0x9e7d('0x2b')][_0x9e7d('0x31')]));_0x46649d[_0x9e7d('0x30')]=_0x46649d['attributes'][_0x9e7d('0x32')]?_0x46649d[_0x9e7d('0x30')]:_0x2555a1[_0x9e7d('0x2f')];if(!_0x3a9110[_0x9e7d('0x2b')]['hasOwnProperty'](_0x9e7d('0x33'))){_0x46649d[_0x9e7d('0x1d')]=qs[_0x9e7d('0x1d')](_0x3a9110[_0x9e7d('0x2b')][_0x9e7d('0x1d')]);_0x46649d[_0x9e7d('0x1b')]=qs[_0x9e7d('0x1b')](_0x3a9110['query'][_0x9e7d('0x1b')]);}_0x46649d['order']=qs[_0x9e7d('0x34')](_0x3a9110[_0x9e7d('0x2b')][_0x9e7d('0x34')]);_0x46649d['where']=qs[_0x9e7d('0x2d')](_[_0x9e7d('0x35')](_0x3a9110['query'],_0x2555a1[_0x9e7d('0x2d')]),_0x1365ad);if(_0x3a9110[_0x9e7d('0x2b')][_0x9e7d('0x36')]){_0x46649d['where']=_[_0x9e7d('0x37')](_0x46649d[_0x9e7d('0x38')],{'$or':_[_0x9e7d('0x26')](_0x1365ad,function(_0x5f0507){if(_0x5f0507[_0x9e7d('0x39')]!=='VIRTUAL'){var _0x428053={};_0x428053[_0x5f0507[_0x9e7d('0x24')]]={'$like':'%'+_0x3a9110[_0x9e7d('0x2b')][_0x9e7d('0x36')]+'%'};return _0x428053;}})});}_0x46649d=_[_0x9e7d('0x37')]({},_0x46649d,_0x3a9110[_0x9e7d('0x3a')]);var _0x3edf70={'where':_0x46649d[_0x9e7d('0x38')]};return db['DeskAccount'][_0x9e7d('0x1e')](_0x3edf70)[_0x9e7d('0x22')](function(_0x3874be){_0x4987a0[_0x9e7d('0x1e')]=_0x3874be;if(_0x3a9110[_0x9e7d('0x2b')][_0x9e7d('0x3b')]){_0x46649d[_0x9e7d('0x3c')]=[{'all':!![]}];}return db[_0x9e7d('0x27')][_0x9e7d('0x3d')](_0x46649d);})['then'](function(_0x355b94){_0x4987a0[_0x9e7d('0x3e')]=_0x355b94;return _0x4987a0;})[_0x9e7d('0x22')](respondWithFilteredResult(_0x467eb5,_0x46649d))[_0x9e7d('0x3f')](handleError(_0x467eb5,null));};exports[_0x9e7d('0x40')]=function(_0x3e6ef3,_0x5cbc87){var _0x506e84={'raw':![],'where':{'id':_0x3e6ef3[_0x9e7d('0x41')]['id']}},_0x57607f={};_0x57607f[_0x9e7d('0x2f')]=_['keys'](db[_0x9e7d('0x27')][_0x9e7d('0x28')]);_0x57607f['query']=_['keys'](_0x3e6ef3[_0x9e7d('0x2b')]);_0x57607f[_0x9e7d('0x2d')]=_[_0x9e7d('0x2e')](_0x57607f['model'],_0x57607f[_0x9e7d('0x2b')]);_0x506e84[_0x9e7d('0x30')]=_[_0x9e7d('0x2e')](_0x57607f[_0x9e7d('0x2f')],qs[_0x9e7d('0x31')](_0x3e6ef3[_0x9e7d('0x2b')][_0x9e7d('0x31')]));_0x506e84[_0x9e7d('0x30')]=_0x506e84[_0x9e7d('0x30')][_0x9e7d('0x32')]?_0x506e84[_0x9e7d('0x30')]:_0x57607f[_0x9e7d('0x2f')];if(_0x3e6ef3[_0x9e7d('0x2b')][_0x9e7d('0x3b')]){_0x506e84[_0x9e7d('0x3c')]=[{'all':!![]}];}_0x506e84=_[_0x9e7d('0x37')]({},_0x506e84,_0x3e6ef3[_0x9e7d('0x3a')]);return db['DeskAccount'][_0x9e7d('0x42')](_0x506e84)[_0x9e7d('0x22')](handleEntityNotFound(_0x5cbc87,null))[_0x9e7d('0x22')](respondWithResult(_0x5cbc87,null))[_0x9e7d('0x3f')](handleError(_0x5cbc87,null));};exports['create']=function(_0x5b6237,_0x3ad143){return db[_0x9e7d('0x27')][_0x9e7d('0x43')](_0x5b6237['body'],{})[_0x9e7d('0x22')](respondWithResult(_0x3ad143,0xc9))[_0x9e7d('0x3f')](handleError(_0x3ad143,null));};exports['update']=function(_0x2008fb,_0x12c871){if(_0x2008fb[_0x9e7d('0x44')]['id']){delete _0x2008fb[_0x9e7d('0x44')]['id'];}return db[_0x9e7d('0x27')][_0x9e7d('0x42')]({'where':{'id':_0x2008fb[_0x9e7d('0x41')]['id']}})[_0x9e7d('0x22')](handleEntityNotFound(_0x12c871,null))[_0x9e7d('0x22')](saveUpdates(_0x2008fb['body'],null))['then'](respondWithResult(_0x12c871,null))[_0x9e7d('0x3f')](handleError(_0x12c871,null));};exports[_0x9e7d('0x23')]=function(_0x3f578d,_0x410a91){return db['DeskAccount'][_0x9e7d('0x42')]({'where':{'id':_0x3f578d['params']['id']}})[_0x9e7d('0x22')](handleEntityNotFound(_0x410a91,null))[_0x9e7d('0x22')](removeEntity(_0x410a91,null))[_0x9e7d('0x3f')](handleError(_0x410a91,null));};exports['getConfigurations']=function(_0x4293e6,_0x4226d1,_0x21813b){var _0xc05789={};var _0x4b3a09={};var _0x33ea27;var _0xc6bcda;return db[_0x9e7d('0x27')][_0x9e7d('0x45')]({'where':{'id':_0x4293e6[_0x9e7d('0x41')]['id']}})[_0x9e7d('0x22')](handleEntityNotFound(_0x4226d1,null))[_0x9e7d('0x22')](function(_0x652b1){if(_0x652b1){_0x33ea27=_0x652b1;_0x4b3a09['model']=_[_0x9e7d('0x2c')](db[_0x9e7d('0x46')][_0x9e7d('0x28')]);_0x4b3a09[_0x9e7d('0x2b')]=_[_0x9e7d('0x2c')](_0x4293e6['query']);_0x4b3a09[_0x9e7d('0x2d')]=_['intersection'](_0x4b3a09['model'],_0x4b3a09[_0x9e7d('0x2b')]);_0xc05789['attributes']=_[_0x9e7d('0x2e')](_0x4b3a09[_0x9e7d('0x2f')],qs[_0x9e7d('0x31')](_0x4293e6[_0x9e7d('0x2b')][_0x9e7d('0x31')]));_0xc05789['attributes']=_0xc05789[_0x9e7d('0x30')]['length']?_0xc05789[_0x9e7d('0x30')]:_0x4b3a09['model'];_0xc05789['order']=qs['sort'](_0x4293e6[_0x9e7d('0x2b')]['sort']);_0xc05789[_0x9e7d('0x38')]=qs[_0x9e7d('0x2d')](_[_0x9e7d('0x35')](_0x4293e6[_0x9e7d('0x2b')],_0x4b3a09[_0x9e7d('0x2d')]));if(_0x4293e6[_0x9e7d('0x2b')]['filter']){_0xc05789['where']=_[_0x9e7d('0x37')](_0xc05789[_0x9e7d('0x38')],{'$or':_['map'](_0xc05789[_0x9e7d('0x30')],function(_0x25c5d8){var _0x150d39={};_0x150d39[_0x25c5d8]={'$like':'%'+_0x4293e6[_0x9e7d('0x2b')][_0x9e7d('0x36')]+'%'};return _0x150d39;})});}_0xc05789=_[_0x9e7d('0x37')]({},_0xc05789,_0x4293e6[_0x9e7d('0x3a')]);return _0x33ea27['getConfigurations'](_0xc05789);}})['then'](function(_0xa7a858){if(_0xa7a858){_0xc6bcda=_0xa7a858[_0x9e7d('0x32')];if(!_0x4293e6['query'][_0x9e7d('0x47')](_0x9e7d('0x33'))){_0xc05789[_0x9e7d('0x1d')]=qs[_0x9e7d('0x1d')](_0x4293e6[_0x9e7d('0x2b')][_0x9e7d('0x1d')]);_0xc05789[_0x9e7d('0x1b')]=qs['offset'](_0x4293e6[_0x9e7d('0x2b')][_0x9e7d('0x1b')]);}return _0x33ea27[_0x9e7d('0x48')](_0xc05789);}})[_0x9e7d('0x22')](function(_0x4dbe3c){if(_0x4dbe3c){return _0x4dbe3c?{'count':_0xc6bcda,'rows':_0x4dbe3c}:null;}})[_0x9e7d('0x22')](respondWithResult(_0x4226d1,null))[_0x9e7d('0x3f')](handleError(_0x4226d1,null));};exports[_0x9e7d('0x49')]=function(_0x2f8027,_0x4065d6,_0x3a71d2){if(_0x2f8027['body']['id']){delete _0x2f8027[_0x9e7d('0x44')]['id'];}return db[_0x9e7d('0x27')][_0x9e7d('0x45')]({'where':{'id':_0x2f8027[_0x9e7d('0x41')]['id']}})['then'](handleEntityNotFound(_0x4065d6,null))[_0x9e7d('0x22')](function(_0x45016b){if(_0x45016b){_0x2f8027[_0x9e7d('0x44')][_0x9e7d('0x4a')]=_0x45016b['id'];_0x2f8027[_0x9e7d('0x44')][_0x9e7d('0x4b')]=integrations[_0x9e7d('0x4c')](_0x2f8027[_0x9e7d('0x44')]['channel'],_0x2f8027[_0x9e7d('0x44')][_0x9e7d('0x39')]);_0x2f8027[_0x9e7d('0x44')][_0x9e7d('0x4d')]=integrations['getDescriptions'](_0x2f8027['body'][_0x9e7d('0x4e')],_0x2f8027[_0x9e7d('0x44')][_0x9e7d('0x39')]);return db['DeskConfiguration'][_0x9e7d('0x43')](_0x2f8027[_0x9e7d('0x44')],{'include':[{'model':db[_0x9e7d('0x4f')],'as':_0x9e7d('0x4b')},{'model':db[_0x9e7d('0x4f')],'as':_0x9e7d('0x4d')}]});}return null;})[_0x9e7d('0x22')](respondWithResult(_0x4065d6,null))['catch'](handleError(_0x4065d6,null));};exports['getFields']=function(_0x59fc9a,_0x4f49b7,_0x173c3e){var _0x5e9d9c=[{'name':'priority','label':'priority','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 _0x221fb7='';return db['DeskAccount'][_0x9e7d('0x45')]({'where':{'id':_0x59fc9a['params']['id']},'attributes':['id','remoteUri',_0x9e7d('0x50'),'username',_0x9e7d('0x51'),'consumerKey','consumerSecret',_0x9e7d('0x52'),_0x9e7d('0x53')]})['then'](handleEntityNotFound(_0x4f49b7,null))[_0x9e7d('0x22')](function(_0x375125){if(_0x375125){_0x221fb7=_0x375125[_0x9e7d('0x54')];var _0x18c75a=_0x221fb7[_0x9e7d('0x55')](-0x1);if(_0x18c75a==='/'){_0x221fb7=_0x221fb7[_0x9e7d('0x56')](0x0,_0x221fb7['lastIndexOf'](_0x18c75a));}var _0x172ceb={'method':_0x9e7d('0x57'),'uri':util[_0x9e7d('0x58')]('%s/custom_fields',_0x221fb7),'headers':{'Content-Type':'application/json','Accept':_0x9e7d('0x59')},'json':!![]};if(_0x375125[_0x9e7d('0x50')]===_0x9e7d('0x5a')){_0x172ceb['headers']['Authorization']=util[_0x9e7d('0x58')]('Basic\x20%s',new Buffer(util[_0x9e7d('0x58')]('%s:%s',_0x375125[_0x9e7d('0x5b')],_0x375125[_0x9e7d('0x51')]))['toString']('base64'));}return rp(_0x172ceb)['then'](function(_0xf4ace){return _0x5e9d9c[_0x9e7d('0x5c')](_['map'](_0xf4ace[_0x9e7d('0x5d')][_0x9e7d('0x5e')],function(_0x1471e5){return{'id':_0x1471e5[_0x9e7d('0x24')],'name':_0x1471e5[_0x9e7d('0x24')],'type':_0x1471e5[_0x9e7d('0x39')],'active':_0x1471e5[_0x9e7d('0x5f')],'label':_0x1471e5[_0x9e7d('0x60')],'custom':!![]};}));});}})[_0x9e7d('0x22')](function(_0x5467bb){return{'count':_0x5467bb[_0x9e7d('0x32')],'rows':_0x5467bb};})[_0x9e7d('0x22')](respondWithResult(_0x4f49b7,null))[_0x9e7d('0x3f')](function(_0x5f4488){var _0x6254bc=_0x59fc9a[_0x9e7d('0x2b')][_0x9e7d('0x61')]?0x1f4:_0x5f4488['statusCode']||0x1f4;logger[_0x9e7d('0x62')](_0x9e7d('0x63'),'getFields',_0x6254bc,JSON['stringify'](_0x5f4488));delete _0x5f4488[_0x9e7d('0x24')];if(_0x6254bc===0x191){_0x6254bc=0x190;}_0x4f49b7[_0x9e7d('0x19')](_0x6254bc)['send'](_0x59fc9a['query']['test']?{'message':_0x9e7d('0x64'),'statusCode':_0x5f4488['statusCode']}:_0x5f4488);});};
\ No newline at end of file
+var _0xcdbe=['fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','json','offset','limit','undefined','count','set','Content-Range','reject','save','then','destroy','sendStatus','stack','name','index','map','DeskAccount','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','filter','merge','options','includeAll','findAll','rows','catch','show','include','find','create','body','update','params','getConfigurations','findOne','DeskConfiguration','length','Subjects','getSubjects','channel','Descriptions','getDescriptions','DeskField','getFields','priority','remoteUri','authType','username','password','consumerSecret','token','tokenSecret','substring','lastIndexOf','GET','format','application/json','headers','toString','base64','concat','entries','active','label','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','send','Wrong\x20credentials','eml-format','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs'];(function(_0x5327d4,_0x4e6c82){var _0x1b0db2=function(_0x35049b){while(--_0x35049b){_0x5327d4['push'](_0x5327d4['shift']());}};_0x1b0db2(++_0x4e6c82);}(_0xcdbe,0x64));var _0xecdb=function(_0x11a289,_0x54b41c){_0x11a289=_0x11a289-0x0;var _0x224679=_0xcdbe[_0x11a289];return _0x224679;};'use strict';var emlformat=require(_0xecdb('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xecdb('0x1'));var jsonpatch=require(_0xecdb('0x2'));var rp=require('request-promise');var moment=require(_0xecdb('0x3'));var BPromise=require(_0xecdb('0x4'));var Mustache=require('mustache');var util=require(_0xecdb('0x5'));var path=require(_0xecdb('0x6'));var sox=require(_0xecdb('0x7'));var csv=require(_0xecdb('0x8'));var ejs=require(_0xecdb('0x9'));var fs=require('fs');var fs_extra=require(_0xecdb('0xa'));var _=require(_0xecdb('0xb'));var squel=require('squel');var crypto=require(_0xecdb('0xc'));var jsforce=require(_0xecdb('0xd'));var deskjs=require(_0xecdb('0xe'));var toCsv=require(_0xecdb('0x8'));var querystring=require(_0xecdb('0xf'));var Papa=require(_0xecdb('0x10'));var Redis=require(_0xecdb('0x11'));var authService=require(_0xecdb('0x12'));var qs=require(_0xecdb('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xecdb('0x14'))(_0xecdb('0x15'));var utils=require(_0xecdb('0x16'));var config=require(_0xecdb('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xecdb('0x18'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x5f3477,_0x5786ac){_0x5786ac=_0x5786ac||0xcc;return function(_0x1d9698){if(_0x1d9698){return _0x5f3477['sendStatus'](_0x5786ac);}return _0x5f3477['status'](_0x5786ac)['end']();};}function respondWithResult(_0x5c56c7,_0x26e89b){_0x26e89b=_0x26e89b||0xc8;return function(_0x1edd74){if(_0x1edd74){return _0x5c56c7[_0xecdb('0x19')](_0x26e89b)[_0xecdb('0x1a')](_0x1edd74);}};}function respondWithFilteredResult(_0x14882f,_0x4960cd){return function(_0x377dfe){if(_0x377dfe){var _0x16a53b=typeof _0x4960cd[_0xecdb('0x1b')]==='undefined'&&typeof _0x4960cd[_0xecdb('0x1c')]===_0xecdb('0x1d');var _0x26ebd7=_0x377dfe[_0xecdb('0x1e')];var _0x2225fc=_0x16a53b?0x0:_0x4960cd[_0xecdb('0x1b')];var _0x52da2c=_0x16a53b?_0x377dfe[_0xecdb('0x1e')]:_0x4960cd[_0xecdb('0x1b')]+_0x4960cd[_0xecdb('0x1c')];var _0x1314df;if(_0x52da2c>=_0x26ebd7){_0x52da2c=_0x26ebd7;_0x1314df=0xc8;}else{_0x1314df=0xce;}_0x14882f['status'](_0x1314df);return _0x14882f[_0xecdb('0x1f')](_0xecdb('0x20'),_0x2225fc+'-'+_0x52da2c+'/'+_0x26ebd7)[_0xecdb('0x1a')](_0x377dfe);}return null;};}function patchUpdates(_0x444a82){return function(_0x3840b4){try{jsonpatch['apply'](_0x3840b4,_0x444a82,!![]);}catch(_0x59ee75){return BPromise[_0xecdb('0x21')](_0x59ee75);}return _0x3840b4[_0xecdb('0x22')]();};}function saveUpdates(_0x5579d1,_0x32a7ca){return function(_0x1c6a5a){if(_0x1c6a5a){return _0x1c6a5a['update'](_0x5579d1)[_0xecdb('0x23')](function(_0x1a7ed1){return _0x1a7ed1;});}return null;};}function removeEntity(_0x41ee44,_0x25cd63){return function(_0x266c3a){if(_0x266c3a){return _0x266c3a[_0xecdb('0x24')]()[_0xecdb('0x23')](function(){_0x41ee44[_0xecdb('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2188c7,_0x7bc34c){return function(_0x15f2b7){if(!_0x15f2b7){_0x2188c7[_0xecdb('0x25')](0x194);}return _0x15f2b7;};}function handleError(_0x45c009,_0xf2569b){_0xf2569b=_0xf2569b||0x1f4;return function(_0x32f966){logger['error'](_0x32f966[_0xecdb('0x26')]);if(_0x32f966[_0xecdb('0x27')]){delete _0x32f966[_0xecdb('0x27')];}_0x45c009[_0xecdb('0x19')](_0xf2569b)['send'](_0x32f966);};}exports[_0xecdb('0x28')]=function(_0x4197cd,_0x1d57c6){var _0x26ead1={},_0x1d6046={},_0x1be58b={'count':0x0,'rows':[]};var _0x50dcf6=_[_0xecdb('0x29')](db[_0xecdb('0x2a')][_0xecdb('0x2b')],function(_0x1805cd){return{'name':_0x1805cd['fieldName'],'type':_0x1805cd[_0xecdb('0x2c')][_0xecdb('0x2d')]};});_0x1d6046[_0xecdb('0x2e')]=_[_0xecdb('0x29')](_0x50dcf6,'name');_0x1d6046[_0xecdb('0x2f')]=_[_0xecdb('0x30')](_0x4197cd[_0xecdb('0x2f')]);_0x1d6046[_0xecdb('0x31')]=_[_0xecdb('0x32')](_0x1d6046['model'],_0x1d6046['query']);_0x26ead1[_0xecdb('0x33')]=_[_0xecdb('0x32')](_0x1d6046[_0xecdb('0x2e')],qs[_0xecdb('0x34')](_0x4197cd[_0xecdb('0x2f')][_0xecdb('0x34')]));_0x26ead1['attributes']=_0x26ead1[_0xecdb('0x33')]['length']?_0x26ead1[_0xecdb('0x33')]:_0x1d6046['model'];if(!_0x4197cd['query'][_0xecdb('0x35')](_0xecdb('0x36'))){_0x26ead1[_0xecdb('0x1c')]=qs['limit'](_0x4197cd[_0xecdb('0x2f')][_0xecdb('0x1c')]);_0x26ead1['offset']=qs[_0xecdb('0x1b')](_0x4197cd[_0xecdb('0x2f')][_0xecdb('0x1b')]);}_0x26ead1[_0xecdb('0x37')]=qs[_0xecdb('0x38')](_0x4197cd[_0xecdb('0x2f')]['sort']);_0x26ead1[_0xecdb('0x39')]=qs[_0xecdb('0x31')](_[_0xecdb('0x3a')](_0x4197cd[_0xecdb('0x2f')],_0x1d6046['filters']),_0x50dcf6);if(_0x4197cd['query']['filter']){_0x26ead1[_0xecdb('0x39')]=_['merge'](_0x26ead1[_0xecdb('0x39')],{'$or':_[_0xecdb('0x29')](_0x50dcf6,function(_0x59f33d){if(_0x59f33d[_0xecdb('0x2c')]!==_0xecdb('0x3b')){var _0x1b025a={};_0x1b025a[_0x59f33d['name']]={'$like':'%'+_0x4197cd[_0xecdb('0x2f')][_0xecdb('0x3c')]+'%'};return _0x1b025a;}})});}_0x26ead1=_[_0xecdb('0x3d')]({},_0x26ead1,_0x4197cd[_0xecdb('0x3e')]);var _0x36d986={'where':_0x26ead1[_0xecdb('0x39')]};return db[_0xecdb('0x2a')][_0xecdb('0x1e')](_0x36d986)[_0xecdb('0x23')](function(_0x326211){_0x1be58b[_0xecdb('0x1e')]=_0x326211;if(_0x4197cd[_0xecdb('0x2f')][_0xecdb('0x3f')]){_0x26ead1['include']=[{'all':!![]}];}return db[_0xecdb('0x2a')][_0xecdb('0x40')](_0x26ead1);})['then'](function(_0x211d1f){_0x1be58b[_0xecdb('0x41')]=_0x211d1f;return _0x1be58b;})['then'](respondWithFilteredResult(_0x1d57c6,_0x26ead1))[_0xecdb('0x42')](handleError(_0x1d57c6,null));};exports[_0xecdb('0x43')]=function(_0x3cd169,_0x3f1390){var _0x4fdc59={'raw':![],'where':{'id':_0x3cd169['params']['id']}},_0x55ed8f={};_0x55ed8f['model']=_[_0xecdb('0x30')](db[_0xecdb('0x2a')][_0xecdb('0x2b')]);_0x55ed8f[_0xecdb('0x2f')]=_['keys'](_0x3cd169[_0xecdb('0x2f')]);_0x55ed8f[_0xecdb('0x31')]=_[_0xecdb('0x32')](_0x55ed8f[_0xecdb('0x2e')],_0x55ed8f[_0xecdb('0x2f')]);_0x4fdc59[_0xecdb('0x33')]=_[_0xecdb('0x32')](_0x55ed8f[_0xecdb('0x2e')],qs[_0xecdb('0x34')](_0x3cd169[_0xecdb('0x2f')][_0xecdb('0x34')]));_0x4fdc59[_0xecdb('0x33')]=_0x4fdc59[_0xecdb('0x33')]['length']?_0x4fdc59['attributes']:_0x55ed8f[_0xecdb('0x2e')];if(_0x3cd169[_0xecdb('0x2f')][_0xecdb('0x3f')]){_0x4fdc59[_0xecdb('0x44')]=[{'all':!![]}];}_0x4fdc59=_[_0xecdb('0x3d')]({},_0x4fdc59,_0x3cd169[_0xecdb('0x3e')]);return db['DeskAccount'][_0xecdb('0x45')](_0x4fdc59)[_0xecdb('0x23')](handleEntityNotFound(_0x3f1390,null))[_0xecdb('0x23')](respondWithResult(_0x3f1390,null))[_0xecdb('0x42')](handleError(_0x3f1390,null));};exports[_0xecdb('0x46')]=function(_0xfeb919,_0x2f78e6){return db[_0xecdb('0x2a')][_0xecdb('0x46')](_0xfeb919[_0xecdb('0x47')],{})['then'](respondWithResult(_0x2f78e6,0xc9))['catch'](handleError(_0x2f78e6,null));};exports[_0xecdb('0x48')]=function(_0x321d49,_0x141458){if(_0x321d49[_0xecdb('0x47')]['id']){delete _0x321d49['body']['id'];}return db[_0xecdb('0x2a')][_0xecdb('0x45')]({'where':{'id':_0x321d49['params']['id']}})[_0xecdb('0x23')](handleEntityNotFound(_0x141458,null))['then'](saveUpdates(_0x321d49['body'],null))[_0xecdb('0x23')](respondWithResult(_0x141458,null))[_0xecdb('0x42')](handleError(_0x141458,null));};exports[_0xecdb('0x24')]=function(_0x55d852,_0x3c8807){return db[_0xecdb('0x2a')][_0xecdb('0x45')]({'where':{'id':_0x55d852[_0xecdb('0x49')]['id']}})['then'](handleEntityNotFound(_0x3c8807,null))['then'](removeEntity(_0x3c8807,null))[_0xecdb('0x42')](handleError(_0x3c8807,null));};exports[_0xecdb('0x4a')]=function(_0x139f0c,_0x10539a,_0x3fde44){var _0x278265={};var _0x178420={};var _0x44ca2c;var _0x4b9bd7;return db['DeskAccount'][_0xecdb('0x4b')]({'where':{'id':_0x139f0c[_0xecdb('0x49')]['id']}})[_0xecdb('0x23')](handleEntityNotFound(_0x10539a,null))[_0xecdb('0x23')](function(_0x2581e0){if(_0x2581e0){_0x44ca2c=_0x2581e0;_0x178420[_0xecdb('0x2e')]=_[_0xecdb('0x30')](db[_0xecdb('0x4c')][_0xecdb('0x2b')]);_0x178420[_0xecdb('0x2f')]=_['keys'](_0x139f0c[_0xecdb('0x2f')]);_0x178420[_0xecdb('0x31')]=_[_0xecdb('0x32')](_0x178420[_0xecdb('0x2e')],_0x178420[_0xecdb('0x2f')]);_0x278265[_0xecdb('0x33')]=_[_0xecdb('0x32')](_0x178420[_0xecdb('0x2e')],qs[_0xecdb('0x34')](_0x139f0c[_0xecdb('0x2f')]['fields']));_0x278265[_0xecdb('0x33')]=_0x278265[_0xecdb('0x33')]['length']?_0x278265['attributes']:_0x178420['model'];_0x278265['order']=qs[_0xecdb('0x38')](_0x139f0c[_0xecdb('0x2f')][_0xecdb('0x38')]);_0x278265[_0xecdb('0x39')]=qs['filters'](_[_0xecdb('0x3a')](_0x139f0c[_0xecdb('0x2f')],_0x178420['filters']));if(_0x139f0c['query'][_0xecdb('0x3c')]){_0x278265[_0xecdb('0x39')]=_[_0xecdb('0x3d')](_0x278265[_0xecdb('0x39')],{'$or':_['map'](_0x278265[_0xecdb('0x33')],function(_0x28b9b7){var _0x4e9ebf={};_0x4e9ebf[_0x28b9b7]={'$like':'%'+_0x139f0c[_0xecdb('0x2f')][_0xecdb('0x3c')]+'%'};return _0x4e9ebf;})});}_0x278265=_['merge']({},_0x278265,_0x139f0c[_0xecdb('0x3e')]);return _0x44ca2c[_0xecdb('0x4a')](_0x278265);}})[_0xecdb('0x23')](function(_0x58c294){if(_0x58c294){_0x4b9bd7=_0x58c294[_0xecdb('0x4d')];if(!_0x139f0c[_0xecdb('0x2f')][_0xecdb('0x35')](_0xecdb('0x36'))){_0x278265[_0xecdb('0x1c')]=qs['limit'](_0x139f0c[_0xecdb('0x2f')][_0xecdb('0x1c')]);_0x278265[_0xecdb('0x1b')]=qs['offset'](_0x139f0c[_0xecdb('0x2f')][_0xecdb('0x1b')]);}return _0x44ca2c['getConfigurations'](_0x278265);}})[_0xecdb('0x23')](function(_0x12295d){if(_0x12295d){return _0x12295d?{'count':_0x4b9bd7,'rows':_0x12295d}:null;}})[_0xecdb('0x23')](respondWithResult(_0x10539a,null))[_0xecdb('0x42')](handleError(_0x10539a,null));};exports['addConfiguration']=function(_0x53851a,_0x2b1e97,_0x536ff0){if(_0x53851a[_0xecdb('0x47')]['id']){delete _0x53851a['body']['id'];}return db[_0xecdb('0x2a')][_0xecdb('0x4b')]({'where':{'id':_0x53851a[_0xecdb('0x49')]['id']}})[_0xecdb('0x23')](handleEntityNotFound(_0x2b1e97,null))[_0xecdb('0x23')](function(_0x1823c8){if(_0x1823c8){_0x53851a[_0xecdb('0x47')]['AccountId']=_0x1823c8['id'];_0x53851a['body'][_0xecdb('0x4e')]=integrations[_0xecdb('0x4f')](_0x53851a[_0xecdb('0x47')][_0xecdb('0x50')],_0x53851a[_0xecdb('0x47')][_0xecdb('0x2c')]);_0x53851a[_0xecdb('0x47')][_0xecdb('0x51')]=integrations[_0xecdb('0x52')](_0x53851a[_0xecdb('0x47')][_0xecdb('0x50')],_0x53851a['body'][_0xecdb('0x2c')]);return db[_0xecdb('0x4c')][_0xecdb('0x46')](_0x53851a['body'],{'include':[{'model':db[_0xecdb('0x53')],'as':_0xecdb('0x4e')},{'model':db[_0xecdb('0x53')],'as':_0xecdb('0x51')}]});}return null;})[_0xecdb('0x23')](respondWithResult(_0x2b1e97,null))[_0xecdb('0x42')](handleError(_0x2b1e97,null));};exports[_0xecdb('0x54')]=function(_0x3955db,_0x1568d6,_0x2e9e92){var _0x1ba1eb=[{'name':_0xecdb('0x55'),'label':_0xecdb('0x55'),'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 _0x2caee2='';return db[_0xecdb('0x2a')]['findOne']({'where':{'id':_0x3955db[_0xecdb('0x49')]['id']},'attributes':['id',_0xecdb('0x56'),_0xecdb('0x57'),_0xecdb('0x58'),_0xecdb('0x59'),'consumerKey',_0xecdb('0x5a'),_0xecdb('0x5b'),_0xecdb('0x5c')]})[_0xecdb('0x23')](handleEntityNotFound(_0x1568d6,null))[_0xecdb('0x23')](function(_0x4242c9){if(_0x4242c9){_0x2caee2=_0x4242c9[_0xecdb('0x56')];var _0x5388eb=_0x2caee2['slice'](-0x1);if(_0x5388eb==='/'){_0x2caee2=_0x2caee2[_0xecdb('0x5d')](0x0,_0x2caee2[_0xecdb('0x5e')](_0x5388eb));}var _0x3c632b={'method':_0xecdb('0x5f'),'uri':util[_0xecdb('0x60')]('%s/custom_fields',_0x2caee2),'headers':{'Content-Type':_0xecdb('0x61'),'Accept':'application/json'},'json':!![]};if(_0x4242c9[_0xecdb('0x57')]==='basic'){_0x3c632b[_0xecdb('0x62')]['Authorization']=util[_0xecdb('0x60')]('Basic\x20%s',new Buffer(util['format']('%s:%s',_0x4242c9[_0xecdb('0x58')],_0x4242c9[_0xecdb('0x59')]))[_0xecdb('0x63')](_0xecdb('0x64')));}return rp(_0x3c632b)[_0xecdb('0x23')](function(_0x525090){return _0x1ba1eb[_0xecdb('0x65')](_['map'](_0x525090['_embedded'][_0xecdb('0x66')],function(_0x2c50b8){return{'id':_0x2c50b8['name'],'name':_0x2c50b8[_0xecdb('0x27')],'type':_0x2c50b8['type'],'active':_0x2c50b8[_0xecdb('0x67')],'label':_0x2c50b8[_0xecdb('0x68')],'custom':!![]};}));});}})['then'](function(_0x12e906){return{'count':_0x12e906[_0xecdb('0x4d')],'rows':_0x12e906};})[_0xecdb('0x23')](respondWithResult(_0x1568d6,null))[_0xecdb('0x42')](function(_0x20403a){var _0xb05bb3=_0x3955db['query']['test']?0x1f4:_0x20403a[_0xecdb('0x69')]||0x1f4;logger['error'](_0xecdb('0x6a'),_0xecdb('0x54'),_0xb05bb3,JSON[_0xecdb('0x6b')](_0x20403a));delete _0x20403a['name'];if(_0xb05bb3===0x191){_0xb05bb3=0x190;}_0x1568d6['status'](_0xb05bb3)[_0xecdb('0x6c')](_0x3955db[_0xecdb('0x2f')]['test']?{'message':_0xecdb('0x6d'),'statusCode':_0x20403a[_0xecdb('0x69')]}:_0x20403a);});};
\ No newline at end of file
index 503bf27..d5c6cf8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc46d=['util','api','moment','bluebird','request-promise','path','../../config/environment','../../components/integrations/configuration','DeskAccount','int_desk_accounts','lodash'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0xc46d,0x149));var _0xdc46=function(_0x3f5fbe,_0xb0b5c6){_0x3f5fbe=_0x3f5fbe-0x0;var _0x54a971=_0xc46d[_0x3f5fbe];return _0x54a971;};'use strict';var _=require(_0xdc46('0x0'));var util=require(_0xdc46('0x1'));var logger=require('../../config/logger')(_0xdc46('0x2'));var moment=require(_0xdc46('0x3'));var BPromise=require(_0xdc46('0x4'));var rp=require(_0xdc46('0x5'));var fs=require('fs');var path=require(_0xdc46('0x6'));var rimraf=require('rimraf');var config=require(_0xdc46('0x7'));var attributes=require('./intDeskAccount.attributes');var integrations=require(_0xdc46('0x8'));module['exports']=function(_0x5c1192,_0x48b993){return _0x5c1192['define'](_0xdc46('0x9'),attributes,{'tableName':_0xdc46('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb824=['bluebird','request-promise','path','rimraf','../../config/environment','./intDeskAccount.attributes','../../components/integrations/configuration','DeskAccount','int_desk_accounts','lodash','util','api','moment'];(function(_0x36eaaa,_0x326732){var _0x461349=function(_0x4e4180){while(--_0x4e4180){_0x36eaaa['push'](_0x36eaaa['shift']());}};_0x461349(++_0x326732);}(_0xb824,0xe6));var _0x4b82=function(_0x60f2c1,_0x294bed){_0x60f2c1=_0x60f2c1-0x0;var _0x383c78=_0xb824[_0x60f2c1];return _0x383c78;};'use strict';var _=require(_0x4b82('0x0'));var util=require(_0x4b82('0x1'));var logger=require('../../config/logger')(_0x4b82('0x2'));var moment=require(_0x4b82('0x3'));var BPromise=require(_0x4b82('0x4'));var rp=require(_0x4b82('0x5'));var fs=require('fs');var path=require(_0x4b82('0x6'));var rimraf=require(_0x4b82('0x7'));var config=require(_0x4b82('0x8'));var attributes=require(_0x4b82('0x9'));var integrations=require(_0x4b82('0xa'));module['exports']=function(_0x493903,_0xbf6491){return _0x493903['define'](_0x4b82('0xb'),attributes,{'tableName':_0x4b82('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 71d7d2f..000ece5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6be4=['randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','info','DeskAccount,\x20%s,\x20%s','debug','DeskAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','GetDeskAccount','DeskAccount','options','raw','include','map','model','attributes','then','catch','ShowDeskAccount','where','lodash','util','moment','bluebird'];(function(_0x150204,_0x11a8d1){var _0x1678f2=function(_0x129408){while(--_0x129408){_0x150204['push'](_0x150204['shift']());}};_0x1678f2(++_0x11a8d1);}(_0x6be4,0x137));var _0x46be=function(_0x431f74,_0x184580){_0x431f74=_0x431f74-0x0;var _0x1e9c7a=_0x6be4[_0x431f74];return _0x1e9c7a;};'use strict';var _=require(_0x46be('0x0'));var util=require(_0x46be('0x1'));var moment=require(_0x46be('0x2'));var BPromise=require(_0x46be('0x3'));var rs=require(_0x46be('0x4'));var fs=require('fs');var Redis=require(_0x46be('0x5'));var db=require(_0x46be('0x6'))['db'];var utils=require(_0x46be('0x7'));var logger=require('../../config/logger')(_0x46be('0x8'));var config=require(_0x46be('0x9'));var jayson=require(_0x46be('0xa'));var client=jayson[_0x46be('0xb')][_0x46be('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x43faab,_0x140c45,_0x31f00d){return new BPromise(function(_0x328648,_0x2d290a){return client[_0x46be('0xd')](_0x43faab,_0x31f00d)['then'](function(_0x12ca7d){logger[_0x46be('0xe')](_0x46be('0xf'),_0x140c45,'request\x20sent');logger[_0x46be('0x10')](_0x46be('0x11'),_0x140c45,_0x46be('0x12'),JSON[_0x46be('0x13')](_0x12ca7d));if(_0x12ca7d[_0x46be('0x14')]){if(_0x12ca7d[_0x46be('0x14')]['code']===0x1f4){logger[_0x46be('0x14')](_0x46be('0xf'),_0x140c45,_0x12ca7d[_0x46be('0x14')][_0x46be('0x15')]);return _0x2d290a(_0x12ca7d[_0x46be('0x14')][_0x46be('0x15')]);}logger[_0x46be('0x14')](_0x46be('0xf'),_0x140c45,_0x12ca7d[_0x46be('0x14')][_0x46be('0x15')]);return _0x328648(_0x12ca7d['error'][_0x46be('0x15')]);}else{logger[_0x46be('0xe')](_0x46be('0xf'),_0x140c45,_0x46be('0x12'));_0x328648(_0x12ca7d[_0x46be('0x16')][_0x46be('0x15')]);}})['catch'](function(_0x26fcd0){logger[_0x46be('0x14')](_0x46be('0xf'),_0x140c45,_0x26fcd0);_0x2d290a(_0x26fcd0);});});}exports[_0x46be('0x17')]=function(_0x435ba6){var _0x10d03f=this;return new Promise(function(_0x1d9cf9,_0x18d9f1){return db[_0x46be('0x18')]['findAll']({'raw':_0x435ba6[_0x46be('0x19')]?_0x435ba6[_0x46be('0x19')][_0x46be('0x1a')]===undefined?!![]:![]:!![],'where':_0x435ba6[_0x46be('0x19')]?_0x435ba6[_0x46be('0x19')]['where']||null:null,'attributes':_0x435ba6[_0x46be('0x19')]?_0x435ba6['options']['attributes']||null:null,'limit':_0x435ba6[_0x46be('0x19')]?_0x435ba6[_0x46be('0x19')]['limit']||null:null,'include':_0x435ba6[_0x46be('0x19')]?_0x435ba6['options'][_0x46be('0x1b')]?_[_0x46be('0x1c')](_0x435ba6['options'][_0x46be('0x1b')],function(_0x5ba28e){return{'model':db[_0x5ba28e[_0x46be('0x1d')]],'as':_0x5ba28e['as'],'attributes':_0x5ba28e[_0x46be('0x1e')],'include':_0x5ba28e[_0x46be('0x1b')]?_[_0x46be('0x1c')](_0x5ba28e[_0x46be('0x1b')],function(_0x2274ba){return{'model':db[_0x2274ba['model']],'as':_0x2274ba['as'],'attributes':_0x2274ba[_0x46be('0x1e')],'include':_0x2274ba[_0x46be('0x1b')]?_['map'](_0x2274ba['include'],function(_0x2f34d6){return{'model':db[_0x2f34d6[_0x46be('0x1d')]],'as':_0x2f34d6['as'],'attributes':_0x2f34d6[_0x46be('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x46be('0x1f')](function(_0x55c708){logger[_0x46be('0xe')]('GetDeskAccount',_0x435ba6);logger[_0x46be('0x10')](_0x46be('0x17'),_0x435ba6,JSON[_0x46be('0x13')](_0x55c708));_0x1d9cf9(_0x55c708);})[_0x46be('0x20')](function(_0x5b6cff){logger[_0x46be('0x14')](_0x46be('0x17'),_0x5b6cff['message'],_0x435ba6);_0x18d9f1(_0x10d03f['error'](0x1f4,_0x5b6cff['message']));});});};exports[_0x46be('0x21')]=function(_0x158ea9){var _0x17cb42=this;return new Promise(function(_0x2636f1,_0x4f3723){return db[_0x46be('0x18')]['find']({'raw':_0x158ea9[_0x46be('0x19')]?_0x158ea9[_0x46be('0x19')][_0x46be('0x1a')]===undefined?!![]:![]:!![],'where':_0x158ea9[_0x46be('0x19')]?_0x158ea9[_0x46be('0x19')][_0x46be('0x22')]||null:null,'attributes':_0x158ea9['options']?_0x158ea9[_0x46be('0x19')][_0x46be('0x1e')]||null:null,'include':_0x158ea9[_0x46be('0x19')]?_0x158ea9['options'][_0x46be('0x1b')]?_[_0x46be('0x1c')](_0x158ea9['options']['include'],function(_0x201763){return{'model':db[_0x201763['model']],'as':_0x201763['as'],'attributes':_0x201763[_0x46be('0x1e')],'include':_0x201763['include']?_[_0x46be('0x1c')](_0x201763[_0x46be('0x1b')],function(_0x5cf731){return{'model':db[_0x5cf731[_0x46be('0x1d')]],'as':_0x5cf731['as'],'attributes':_0x5cf731[_0x46be('0x1e')],'include':_0x5cf731[_0x46be('0x1b')]?_[_0x46be('0x1c')](_0x5cf731[_0x46be('0x1b')],function(_0x227450){return{'model':db[_0x227450[_0x46be('0x1d')]],'as':_0x227450['as'],'attributes':_0x227450[_0x46be('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x46be('0x1f')](function(_0x53793a){logger[_0x46be('0xe')](_0x46be('0x21'),_0x158ea9);logger[_0x46be('0x10')]('ShowDeskAccount',_0x158ea9,JSON['stringify'](_0x53793a));_0x2636f1(_0x53793a);})['catch'](function(_0x354013){logger['error'](_0x46be('0x21'),_0x354013[_0x46be('0x15')],_0x158ea9);_0x4f3723(_0x17cb42['error'](0x1f4,_0x354013[_0x46be('0x15')]));});});};
\ No newline at end of file
+var _0xd9d3=['options','raw','where','limit','include','map','model','attributes','info','GetDeskAccount','ShowDeskAccount','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','request','then','DeskAccount,\x20%s,\x20%s','debug','DeskAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','DeskAccount','findAll'];(function(_0xdee490,_0x5820f4){var _0x25652a=function(_0x4d7fda){while(--_0x4d7fda){_0xdee490['push'](_0xdee490['shift']());}};_0x25652a(++_0x5820f4);}(_0xd9d3,0x71));var _0x3d9d=function(_0x37684,_0x2cff8d){_0x37684=_0x37684-0x0;var _0x31b645=_0xd9d3[_0x37684];return _0x31b645;};'use strict';var _=require(_0x3d9d('0x0'));var util=require(_0x3d9d('0x1'));var moment=require('moment');var BPromise=require(_0x3d9d('0x2'));var rs=require(_0x3d9d('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3d9d('0x4'))['db'];var utils=require(_0x3d9d('0x5'));var logger=require(_0x3d9d('0x6'))(_0x3d9d('0x7'));var config=require(_0x3d9d('0x8'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x367f54,_0x158d65,_0x5c2be7){return new BPromise(function(_0x3cb311,_0x3b5a5b){return client[_0x3d9d('0x9')](_0x367f54,_0x5c2be7)[_0x3d9d('0xa')](function(_0x13fbe2){logger['info'](_0x3d9d('0xb'),_0x158d65,'request\x20sent');logger[_0x3d9d('0xc')](_0x3d9d('0xd'),_0x158d65,_0x3d9d('0xe'),JSON[_0x3d9d('0xf')](_0x13fbe2));if(_0x13fbe2[_0x3d9d('0x10')]){if(_0x13fbe2[_0x3d9d('0x10')][_0x3d9d('0x11')]===0x1f4){logger['error'](_0x3d9d('0xb'),_0x158d65,_0x13fbe2['error'][_0x3d9d('0x12')]);return _0x3b5a5b(_0x13fbe2['error'][_0x3d9d('0x12')]);}logger[_0x3d9d('0x10')]('DeskAccount,\x20%s,\x20%s',_0x158d65,_0x13fbe2['error'][_0x3d9d('0x12')]);return _0x3cb311(_0x13fbe2[_0x3d9d('0x10')][_0x3d9d('0x12')]);}else{logger['info'](_0x3d9d('0xb'),_0x158d65,'request\x20sent');_0x3cb311(_0x13fbe2[_0x3d9d('0x13')][_0x3d9d('0x12')]);}})[_0x3d9d('0x14')](function(_0x24cc8a){logger[_0x3d9d('0x10')](_0x3d9d('0xb'),_0x158d65,_0x24cc8a);_0x3b5a5b(_0x24cc8a);});});}exports['GetDeskAccount']=function(_0xada4af){var _0x22c29f=this;return new Promise(function(_0x15d205,_0x156938){return db[_0x3d9d('0x15')][_0x3d9d('0x16')]({'raw':_0xada4af[_0x3d9d('0x17')]?_0xada4af['options'][_0x3d9d('0x18')]===undefined?!![]:![]:!![],'where':_0xada4af[_0x3d9d('0x17')]?_0xada4af[_0x3d9d('0x17')][_0x3d9d('0x19')]||null:null,'attributes':_0xada4af[_0x3d9d('0x17')]?_0xada4af[_0x3d9d('0x17')]['attributes']||null:null,'limit':_0xada4af[_0x3d9d('0x17')]?_0xada4af[_0x3d9d('0x17')][_0x3d9d('0x1a')]||null:null,'include':_0xada4af[_0x3d9d('0x17')]?_0xada4af[_0x3d9d('0x17')][_0x3d9d('0x1b')]?_[_0x3d9d('0x1c')](_0xada4af['options']['include'],function(_0x2e7f47){return{'model':db[_0x2e7f47[_0x3d9d('0x1d')]],'as':_0x2e7f47['as'],'attributes':_0x2e7f47['attributes'],'include':_0x2e7f47[_0x3d9d('0x1b')]?_[_0x3d9d('0x1c')](_0x2e7f47[_0x3d9d('0x1b')],function(_0x4c93c9){return{'model':db[_0x4c93c9[_0x3d9d('0x1d')]],'as':_0x4c93c9['as'],'attributes':_0x4c93c9[_0x3d9d('0x1e')],'include':_0x4c93c9[_0x3d9d('0x1b')]?_[_0x3d9d('0x1c')](_0x4c93c9['include'],function(_0x1082fa){return{'model':db[_0x1082fa['model']],'as':_0x1082fa['as'],'attributes':_0x1082fa['attributes']};}):[]};}):[]};}):[]:[]})[_0x3d9d('0xa')](function(_0x2d7b10){logger[_0x3d9d('0x1f')](_0x3d9d('0x20'),_0xada4af);logger[_0x3d9d('0xc')](_0x3d9d('0x20'),_0xada4af,JSON[_0x3d9d('0xf')](_0x2d7b10));_0x15d205(_0x2d7b10);})['catch'](function(_0x4250d5){logger['error'](_0x3d9d('0x20'),_0x4250d5['message'],_0xada4af);_0x156938(_0x22c29f[_0x3d9d('0x10')](0x1f4,_0x4250d5[_0x3d9d('0x12')]));});});};exports[_0x3d9d('0x21')]=function(_0x5833e0){var _0x57e2a2=this;return new Promise(function(_0x20414b,_0x5bb779){return db[_0x3d9d('0x15')]['find']({'raw':_0x5833e0[_0x3d9d('0x17')]?_0x5833e0[_0x3d9d('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x5833e0[_0x3d9d('0x17')]?_0x5833e0[_0x3d9d('0x17')][_0x3d9d('0x19')]||null:null,'attributes':_0x5833e0[_0x3d9d('0x17')]?_0x5833e0[_0x3d9d('0x17')][_0x3d9d('0x1e')]||null:null,'include':_0x5833e0[_0x3d9d('0x17')]?_0x5833e0['options'][_0x3d9d('0x1b')]?_['map'](_0x5833e0[_0x3d9d('0x17')][_0x3d9d('0x1b')],function(_0x1fa70d){return{'model':db[_0x1fa70d[_0x3d9d('0x1d')]],'as':_0x1fa70d['as'],'attributes':_0x1fa70d[_0x3d9d('0x1e')],'include':_0x1fa70d[_0x3d9d('0x1b')]?_['map'](_0x1fa70d[_0x3d9d('0x1b')],function(_0x3a118a){return{'model':db[_0x3a118a[_0x3d9d('0x1d')]],'as':_0x3a118a['as'],'attributes':_0x3a118a[_0x3d9d('0x1e')],'include':_0x3a118a[_0x3d9d('0x1b')]?_[_0x3d9d('0x1c')](_0x3a118a[_0x3d9d('0x1b')],function(_0x270f16){return{'model':db[_0x270f16[_0x3d9d('0x1d')]],'as':_0x270f16['as'],'attributes':_0x270f16[_0x3d9d('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x3d9d('0xa')](function(_0x5dae44){logger[_0x3d9d('0x1f')](_0x3d9d('0x21'),_0x5833e0);logger['debug'](_0x3d9d('0x21'),_0x5833e0,JSON[_0x3d9d('0xf')](_0x5dae44));_0x20414b(_0x5dae44);})['catch'](function(_0x4e2a2a){logger[_0x3d9d('0x10')](_0x3d9d('0x21'),_0x4e2a2a['message'],_0x5833e0);_0x5bb779(_0x57e2a2[_0x3d9d('0x10')](0x1f4,_0x4e2a2a[_0x3d9d('0x12')]));});});};
\ No newline at end of file
index 7bbfb25..a6aef9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./intDeskConfiguration.controller','isAuthenticated','index','get','/:id','/:id/fields','getFields','getSubjects','/:id/descriptions','/:id/tags','post','setTags','put','update'];(function(_0x2aa875,_0x47068e){var _0x1ef408=function(_0x55248c){while(--_0x55248c){_0x2aa875['push'](_0x2aa875['shift']());}};_0x1ef408(++_0x47068e);}(_0x9c44,0x178));var _0x49c4=function(_0x2e4aa2,_0x11956a){_0x2e4aa2=_0x2e4aa2-0x0;var _0x5e6092=_0x9c44[_0x2e4aa2];return _0x5e6092;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x49c4('0x6'));router['get']('/',auth[_0x49c4('0x7')](),controller[_0x49c4('0x8')]);router[_0x49c4('0x9')](_0x49c4('0xa'),auth[_0x49c4('0x7')](),controller['show']);router[_0x49c4('0x9')](_0x49c4('0xb'),auth[_0x49c4('0x7')](),controller[_0x49c4('0xc')]);router['get']('/:id/subjects',auth[_0x49c4('0x7')](),controller[_0x49c4('0xd')]);router['get'](_0x49c4('0xe'),auth[_0x49c4('0x7')](),controller['getDescriptions']);router['get'](_0x49c4('0xf'),auth[_0x49c4('0x7')](),controller['getTags']);router[_0x49c4('0x10')]('/',auth[_0x49c4('0x7')](),controller['create']);router[_0x49c4('0x10')](_0x49c4('0xf'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x11')]);router[_0x49c4('0x12')](_0x49c4('0xa'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x13')]);router['delete'](_0x49c4('0xa'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x14')]);module[_0x49c4('0x15')]=router;
\ No newline at end of file
+var _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(_0x42679f,_0x47d7cf){var _0x253ff8=function(_0x505c79){while(--_0x505c79){_0x42679f['push'](_0x42679f['shift']());}};_0x253ff8(++_0x47d7cf);}(_0x9957,0x93));var _0x7995=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x9957[_0x5b644e];return _0x49c6bf;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/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
index d9622dc..3dc85be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef68=['STRING','sequelize'];(function(_0x58e48d,_0x5c99e6){var _0x7799c7=function(_0x4256a6){while(--_0x4256a6){_0x58e48d['push'](_0x58e48d['shift']());}};_0x7799c7(++_0x5c99e6);}(_0xef68,0x105));var _0x8ef6=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0xef68[_0x199572];return _0x13cfa3;};'use strict';var Sequelize=require(_0x8ef6('0x0'));module['exports']={'name':{'type':Sequelize[_0x8ef6('0x1')]},'description':{'type':Sequelize[_0x8ef6('0x1')]}};
\ No newline at end of file
+var _0x98f6=['STRING','exports'];(function(_0xfbae72,_0x2f4684){var _0x244e37=function(_0x468419){while(--_0x468419){_0xfbae72['push'](_0xfbae72['shift']());}};_0x244e37(++_0x2f4684);}(_0x98f6,0x93));var _0x698f=function(_0x5dc45d,_0x55f90f){_0x5dc45d=_0x5dc45d-0x0;var _0x4ce697=_0x98f6[_0x5dc45d];return _0x4ce697;};'use strict';var Sequelize=require('sequelize');module[_0x698f('0x0')]={'name':{'type':Sequelize[_0x698f('0x1')]},'description':{'type':Sequelize[_0x698f('0x1')]}};
\ No newline at end of file
index a653028..7511ce3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea66=['../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','limit','count','Content-Range','reject','save','update','then','destroy','error','name','send','map','DeskConfiguration','rawAttributes','model','filters','intersection','fields','query','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','keys','find','create','body','params','getFields','findOne','DeskField','getSubjects','getDescriptions','Tag','getTags','setTags','ids','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','squel','crypto','jsforce','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils'];(function(_0x2bf0b1,_0x51b0a4){var _0x24bbf3=function(_0xd8510c){while(--_0xd8510c){_0x2bf0b1['push'](_0x2bf0b1['shift']());}};_0x24bbf3(++_0x51b0a4);}(_0xea66,0x11d));var _0x6ea6=function(_0x155c64,_0x26ff95){_0x155c64=_0x155c64-0x0;var _0x1f154a=_0xea66[_0x155c64];return _0x1f154a;};'use strict';var emlformat=require(_0x6ea6('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6ea6('0x1'));var jsonpatch=require(_0x6ea6('0x2'));var rp=require('request-promise');var moment=require(_0x6ea6('0x3'));var BPromise=require(_0x6ea6('0x4'));var Mustache=require(_0x6ea6('0x5'));var util=require('util');var path=require(_0x6ea6('0x6'));var sox=require(_0x6ea6('0x7'));var csv=require(_0x6ea6('0x8'));var ejs=require(_0x6ea6('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x6ea6('0xa'));var crypto=require(_0x6ea6('0xb'));var jsforce=require(_0x6ea6('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x6ea6('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x6ea6('0xd'));var authService=require(_0x6ea6('0xe'));var qs=require(_0x6ea6('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6ea6('0x10'));var logger=require(_0x6ea6('0x11'))('api');var utils=require(_0x6ea6('0x12'));var config=require(_0x6ea6('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x6ea6('0x14'))['db'];function respondWithStatusCode(_0x46d707,_0x231e45){_0x231e45=_0x231e45||0xcc;return function(_0x243f86){if(_0x243f86){return _0x46d707[_0x6ea6('0x15')](_0x231e45);}return _0x46d707['status'](_0x231e45)[_0x6ea6('0x16')]();};}function respondWithResult(_0x547ea5,_0x1076fd){_0x1076fd=_0x1076fd||0xc8;return function(_0x4c5160){if(_0x4c5160){return _0x547ea5[_0x6ea6('0x17')](_0x1076fd)[_0x6ea6('0x18')](_0x4c5160);}};}function respondWithFilteredResult(_0x8f4ef7,_0x5e3adf){return function(_0x3d579a){if(_0x3d579a){var _0xca1872=typeof _0x5e3adf[_0x6ea6('0x19')]==='undefined'&&typeof _0x5e3adf[_0x6ea6('0x1a')]==='undefined';var _0x5ad788=_0x3d579a['count'];var _0x81e741=_0xca1872?0x0:_0x5e3adf[_0x6ea6('0x19')];var _0x1c8db5=_0xca1872?_0x3d579a[_0x6ea6('0x1b')]:_0x5e3adf[_0x6ea6('0x19')]+_0x5e3adf[_0x6ea6('0x1a')];var _0x3e19ff;if(_0x1c8db5>=_0x5ad788){_0x1c8db5=_0x5ad788;_0x3e19ff=0xc8;}else{_0x3e19ff=0xce;}_0x8f4ef7['status'](_0x3e19ff);return _0x8f4ef7['set'](_0x6ea6('0x1c'),_0x81e741+'-'+_0x1c8db5+'/'+_0x5ad788)[_0x6ea6('0x18')](_0x3d579a);}return null;};}function patchUpdates(_0x508a82){return function(_0x4021f7){try{jsonpatch['apply'](_0x4021f7,_0x508a82,!![]);}catch(_0x379dc9){return BPromise[_0x6ea6('0x1d')](_0x379dc9);}return _0x4021f7[_0x6ea6('0x1e')]();};}function saveUpdates(_0x46c5f4,_0x33f0b8){return function(_0x359ee9){if(_0x359ee9){return _0x359ee9[_0x6ea6('0x1f')](_0x46c5f4)[_0x6ea6('0x20')](function(_0x4b9731){return _0x4b9731;});}return null;};}function removeEntity(_0x54c70f,_0x21f365){return function(_0x34fb23){if(_0x34fb23){return _0x34fb23[_0x6ea6('0x21')]()[_0x6ea6('0x20')](function(){_0x54c70f['status'](0xcc)[_0x6ea6('0x16')]();});}};}function handleEntityNotFound(_0x1de7d2,_0x155a50){return function(_0x9b2ca7){if(!_0x9b2ca7){_0x1de7d2['sendStatus'](0x194);}return _0x9b2ca7;};}function handleError(_0x366bcc,_0x217b9a){_0x217b9a=_0x217b9a||0x1f4;return function(_0x3f663f){logger[_0x6ea6('0x22')](_0x3f663f['stack']);if(_0x3f663f[_0x6ea6('0x23')]){delete _0x3f663f[_0x6ea6('0x23')];}_0x366bcc[_0x6ea6('0x17')](_0x217b9a)[_0x6ea6('0x24')](_0x3f663f);};}exports['index']=function(_0x53f506,_0x3bcb53){var _0x52b293={},_0x44bdf7={},_0x11c06a={'count':0x0,'rows':[]};var _0x27a6a6=_[_0x6ea6('0x25')](db[_0x6ea6('0x26')][_0x6ea6('0x27')],function(_0x55079c){return{'name':_0x55079c['fieldName'],'type':_0x55079c['type']['key']};});_0x44bdf7[_0x6ea6('0x28')]=_[_0x6ea6('0x25')](_0x27a6a6,_0x6ea6('0x23'));_0x44bdf7['query']=_['keys'](_0x53f506['query']);_0x44bdf7[_0x6ea6('0x29')]=_[_0x6ea6('0x2a')](_0x44bdf7[_0x6ea6('0x28')],_0x44bdf7['query']);_0x52b293['attributes']=_[_0x6ea6('0x2a')](_0x44bdf7['model'],qs[_0x6ea6('0x2b')](_0x53f506[_0x6ea6('0x2c')]['fields']));_0x52b293[_0x6ea6('0x2d')]=_0x52b293[_0x6ea6('0x2d')][_0x6ea6('0x2e')]?_0x52b293[_0x6ea6('0x2d')]:_0x44bdf7[_0x6ea6('0x28')];if(!_0x53f506[_0x6ea6('0x2c')][_0x6ea6('0x2f')](_0x6ea6('0x30'))){_0x52b293['limit']=qs[_0x6ea6('0x1a')](_0x53f506[_0x6ea6('0x2c')][_0x6ea6('0x1a')]);_0x52b293[_0x6ea6('0x19')]=qs[_0x6ea6('0x19')](_0x53f506['query']['offset']);}_0x52b293[_0x6ea6('0x31')]=qs[_0x6ea6('0x32')](_0x53f506[_0x6ea6('0x2c')][_0x6ea6('0x32')]);_0x52b293['where']=qs['filters'](_[_0x6ea6('0x33')](_0x53f506[_0x6ea6('0x2c')],_0x44bdf7['filters']),_0x27a6a6);if(_0x53f506[_0x6ea6('0x2c')][_0x6ea6('0x34')]){_0x52b293[_0x6ea6('0x35')]=_[_0x6ea6('0x36')](_0x52b293[_0x6ea6('0x35')],{'$or':_[_0x6ea6('0x25')](_0x27a6a6,function(_0x5f5269){if(_0x5f5269['type']!==_0x6ea6('0x37')){var _0x3c1fb7={};_0x3c1fb7[_0x5f5269[_0x6ea6('0x23')]]={'$like':'%'+_0x53f506[_0x6ea6('0x2c')]['filter']+'%'};return _0x3c1fb7;}})});}_0x52b293=_[_0x6ea6('0x36')]({},_0x52b293,_0x53f506[_0x6ea6('0x38')]);var _0x6f149f={'where':_0x52b293['where']};return db[_0x6ea6('0x26')][_0x6ea6('0x1b')](_0x6f149f)[_0x6ea6('0x20')](function(_0x592ff5){_0x11c06a['count']=_0x592ff5;if(_0x53f506[_0x6ea6('0x2c')][_0x6ea6('0x39')]){_0x52b293[_0x6ea6('0x3a')]=[{'all':!![]}];}return db['DeskConfiguration'][_0x6ea6('0x3b')](_0x52b293);})[_0x6ea6('0x20')](function(_0x4e8821){_0x11c06a['rows']=_0x4e8821;return _0x11c06a;})[_0x6ea6('0x20')](respondWithFilteredResult(_0x3bcb53,_0x52b293))[_0x6ea6('0x3c')](handleError(_0x3bcb53,null));};exports[_0x6ea6('0x3d')]=function(_0x2ac5fc,_0x2154d1){var _0x23d08e={'raw':![],'where':{'id':_0x2ac5fc['params']['id']}},_0x1eef74={};_0x1eef74[_0x6ea6('0x28')]=_[_0x6ea6('0x3e')](db[_0x6ea6('0x26')][_0x6ea6('0x27')]);_0x1eef74[_0x6ea6('0x2c')]=_['keys'](_0x2ac5fc[_0x6ea6('0x2c')]);_0x1eef74[_0x6ea6('0x29')]=_[_0x6ea6('0x2a')](_0x1eef74[_0x6ea6('0x28')],_0x1eef74[_0x6ea6('0x2c')]);_0x23d08e[_0x6ea6('0x2d')]=_['intersection'](_0x1eef74[_0x6ea6('0x28')],qs[_0x6ea6('0x2b')](_0x2ac5fc[_0x6ea6('0x2c')][_0x6ea6('0x2b')]));_0x23d08e[_0x6ea6('0x2d')]=_0x23d08e['attributes']['length']?_0x23d08e[_0x6ea6('0x2d')]:_0x1eef74[_0x6ea6('0x28')];if(_0x2ac5fc['query']['includeAll']){_0x23d08e[_0x6ea6('0x3a')]=[{'all':!![]}];}_0x23d08e=_[_0x6ea6('0x36')]({},_0x23d08e,_0x2ac5fc[_0x6ea6('0x38')]);return db['DeskConfiguration'][_0x6ea6('0x3f')](_0x23d08e)[_0x6ea6('0x20')](handleEntityNotFound(_0x2154d1,null))[_0x6ea6('0x20')](respondWithResult(_0x2154d1,null))[_0x6ea6('0x3c')](handleError(_0x2154d1,null));};exports[_0x6ea6('0x40')]=function(_0x3eccce,_0x135930){return db['DeskConfiguration'][_0x6ea6('0x40')](_0x3eccce[_0x6ea6('0x41')],{})[_0x6ea6('0x20')](respondWithResult(_0x135930,0xc9))[_0x6ea6('0x3c')](handleError(_0x135930,null));};exports[_0x6ea6('0x1f')]=function(_0x6756bc,_0x4a676d){if(_0x6756bc['body']['id']){delete _0x6756bc[_0x6ea6('0x41')]['id'];}return db[_0x6ea6('0x26')][_0x6ea6('0x3f')]({'where':{'id':_0x6756bc[_0x6ea6('0x42')]['id']}})[_0x6ea6('0x20')](handleEntityNotFound(_0x4a676d,null))[_0x6ea6('0x20')](saveUpdates(_0x6756bc['body'],null))[_0x6ea6('0x20')](respondWithResult(_0x4a676d,null))[_0x6ea6('0x3c')](handleError(_0x4a676d,null));};exports[_0x6ea6('0x21')]=function(_0xa0f5ad,_0x419b9c){return db['DeskConfiguration'][_0x6ea6('0x3f')]({'where':{'id':_0xa0f5ad[_0x6ea6('0x42')]['id']}})[_0x6ea6('0x20')](handleEntityNotFound(_0x419b9c,null))[_0x6ea6('0x20')](removeEntity(_0x419b9c,null))[_0x6ea6('0x3c')](handleError(_0x419b9c,null));};exports[_0x6ea6('0x43')]=function(_0x30d250,_0x155a8e,_0x5adb3c){var _0x1454ba={};var _0x2d0702={};var _0x2e8876;var _0x280ef7;return db[_0x6ea6('0x26')][_0x6ea6('0x44')]({'where':{'id':_0x30d250['params']['id']}})['then'](handleEntityNotFound(_0x155a8e,null))[_0x6ea6('0x20')](function(_0x9faffc){if(_0x9faffc){_0x2e8876=_0x9faffc;_0x2d0702[_0x6ea6('0x28')]=_['keys'](db[_0x6ea6('0x45')][_0x6ea6('0x27')]);_0x2d0702[_0x6ea6('0x2c')]=_[_0x6ea6('0x3e')](_0x30d250[_0x6ea6('0x2c')]);_0x2d0702['filters']=_['intersection'](_0x2d0702[_0x6ea6('0x28')],_0x2d0702[_0x6ea6('0x2c')]);_0x1454ba['attributes']=_[_0x6ea6('0x2a')](_0x2d0702['model'],qs[_0x6ea6('0x2b')](_0x30d250['query'][_0x6ea6('0x2b')]));_0x1454ba[_0x6ea6('0x2d')]=_0x1454ba['attributes']['length']?_0x1454ba[_0x6ea6('0x2d')]:_0x2d0702[_0x6ea6('0x28')];_0x1454ba[_0x6ea6('0x31')]=qs[_0x6ea6('0x32')](_0x30d250[_0x6ea6('0x2c')]['sort']);_0x1454ba[_0x6ea6('0x35')]=qs[_0x6ea6('0x29')](_['pick'](_0x30d250['query'],_0x2d0702[_0x6ea6('0x29')]));if(_0x30d250[_0x6ea6('0x2c')][_0x6ea6('0x34')]){_0x1454ba[_0x6ea6('0x35')]=_['merge'](_0x1454ba['where'],{'$or':_[_0x6ea6('0x25')](_0x1454ba[_0x6ea6('0x2d')],function(_0x482c48){var _0x1a1ddb={};_0x1a1ddb[_0x482c48]={'$like':'%'+_0x30d250[_0x6ea6('0x2c')][_0x6ea6('0x34')]+'%'};return _0x1a1ddb;})});}_0x1454ba=_[_0x6ea6('0x36')]({},_0x1454ba,_0x30d250[_0x6ea6('0x38')]);return _0x2e8876[_0x6ea6('0x43')](_0x1454ba);}})[_0x6ea6('0x20')](function(_0x447b34){if(_0x447b34){_0x280ef7=_0x447b34['length'];if(!_0x30d250[_0x6ea6('0x2c')][_0x6ea6('0x2f')](_0x6ea6('0x30'))){_0x1454ba[_0x6ea6('0x1a')]=qs[_0x6ea6('0x1a')](_0x30d250[_0x6ea6('0x2c')][_0x6ea6('0x1a')]);_0x1454ba[_0x6ea6('0x19')]=qs['offset'](_0x30d250['query']['offset']);}return _0x2e8876[_0x6ea6('0x43')](_0x1454ba);}})[_0x6ea6('0x20')](function(_0x24c6d5){if(_0x24c6d5){return _0x24c6d5?{'count':_0x280ef7,'rows':_0x24c6d5}:null;}})[_0x6ea6('0x20')](respondWithResult(_0x155a8e,null))[_0x6ea6('0x3c')](handleError(_0x155a8e,null));};exports[_0x6ea6('0x46')]=function(_0x4574cd,_0x717f4e,_0x5e888e){var _0x151a6a={};var _0x1b13d0={};var _0x3403ef;var _0x565391;return db[_0x6ea6('0x26')][_0x6ea6('0x44')]({'where':{'id':_0x4574cd[_0x6ea6('0x42')]['id']}})['then'](handleEntityNotFound(_0x717f4e,null))[_0x6ea6('0x20')](function(_0xcec0cb){if(_0xcec0cb){_0x3403ef=_0xcec0cb;_0x1b13d0['model']=_['keys'](db['DeskField'][_0x6ea6('0x27')]);_0x1b13d0[_0x6ea6('0x2c')]=_[_0x6ea6('0x3e')](_0x4574cd[_0x6ea6('0x2c')]);_0x1b13d0[_0x6ea6('0x29')]=_[_0x6ea6('0x2a')](_0x1b13d0['model'],_0x1b13d0['query']);_0x151a6a[_0x6ea6('0x2d')]=_['intersection'](_0x1b13d0[_0x6ea6('0x28')],qs['fields'](_0x4574cd[_0x6ea6('0x2c')][_0x6ea6('0x2b')]));_0x151a6a[_0x6ea6('0x2d')]=_0x151a6a[_0x6ea6('0x2d')][_0x6ea6('0x2e')]?_0x151a6a[_0x6ea6('0x2d')]:_0x1b13d0['model'];_0x151a6a[_0x6ea6('0x31')]=qs[_0x6ea6('0x32')](_0x4574cd[_0x6ea6('0x2c')][_0x6ea6('0x32')]);_0x151a6a[_0x6ea6('0x35')]=qs['filters'](_[_0x6ea6('0x33')](_0x4574cd[_0x6ea6('0x2c')],_0x1b13d0[_0x6ea6('0x29')]));if(_0x4574cd[_0x6ea6('0x2c')][_0x6ea6('0x34')]){_0x151a6a[_0x6ea6('0x35')]=_[_0x6ea6('0x36')](_0x151a6a[_0x6ea6('0x35')],{'$or':_[_0x6ea6('0x25')](_0x151a6a[_0x6ea6('0x2d')],function(_0x2774ff){var _0x164ac9={};_0x164ac9[_0x2774ff]={'$like':'%'+_0x4574cd[_0x6ea6('0x2c')][_0x6ea6('0x34')]+'%'};return _0x164ac9;})});}_0x151a6a=_[_0x6ea6('0x36')]({},_0x151a6a,_0x4574cd['options']);return _0x3403ef[_0x6ea6('0x46')](_0x151a6a);}})[_0x6ea6('0x20')](function(_0x49ee2e){if(_0x49ee2e){_0x565391=_0x49ee2e[_0x6ea6('0x2e')];if(!_0x4574cd[_0x6ea6('0x2c')][_0x6ea6('0x2f')](_0x6ea6('0x30'))){_0x151a6a[_0x6ea6('0x1a')]=qs['limit'](_0x4574cd[_0x6ea6('0x2c')][_0x6ea6('0x1a')]);_0x151a6a['offset']=qs['offset'](_0x4574cd[_0x6ea6('0x2c')][_0x6ea6('0x19')]);}return _0x3403ef[_0x6ea6('0x46')](_0x151a6a);}})[_0x6ea6('0x20')](function(_0x3220bc){if(_0x3220bc){return _0x3220bc?{'count':_0x565391,'rows':_0x3220bc}:null;}})[_0x6ea6('0x20')](respondWithResult(_0x717f4e,null))[_0x6ea6('0x3c')](handleError(_0x717f4e,null));};exports[_0x6ea6('0x47')]=function(_0x5d8562,_0x244381,_0x3f0ed9){var _0x147377={};var _0x490737={};var _0x3b189d;var _0x205b4b;return db['DeskConfiguration']['findOne']({'where':{'id':_0x5d8562[_0x6ea6('0x42')]['id']}})['then'](handleEntityNotFound(_0x244381,null))['then'](function(_0x22c17f){if(_0x22c17f){_0x3b189d=_0x22c17f;_0x490737[_0x6ea6('0x28')]=_[_0x6ea6('0x3e')](db[_0x6ea6('0x45')]['rawAttributes']);_0x490737[_0x6ea6('0x2c')]=_[_0x6ea6('0x3e')](_0x5d8562[_0x6ea6('0x2c')]);_0x490737[_0x6ea6('0x29')]=_['intersection'](_0x490737[_0x6ea6('0x28')],_0x490737['query']);_0x147377[_0x6ea6('0x2d')]=_[_0x6ea6('0x2a')](_0x490737[_0x6ea6('0x28')],qs['fields'](_0x5d8562[_0x6ea6('0x2c')][_0x6ea6('0x2b')]));_0x147377['attributes']=_0x147377[_0x6ea6('0x2d')][_0x6ea6('0x2e')]?_0x147377['attributes']:_0x490737[_0x6ea6('0x28')];_0x147377[_0x6ea6('0x31')]=qs[_0x6ea6('0x32')](_0x5d8562['query']['sort']);_0x147377[_0x6ea6('0x35')]=qs[_0x6ea6('0x29')](_[_0x6ea6('0x33')](_0x5d8562['query'],_0x490737[_0x6ea6('0x29')]));if(_0x5d8562[_0x6ea6('0x2c')][_0x6ea6('0x34')]){_0x147377[_0x6ea6('0x35')]=_[_0x6ea6('0x36')](_0x147377[_0x6ea6('0x35')],{'$or':_[_0x6ea6('0x25')](_0x147377[_0x6ea6('0x2d')],function(_0x5d4d9e){var _0x2c9969={};_0x2c9969[_0x5d4d9e]={'$like':'%'+_0x5d8562[_0x6ea6('0x2c')][_0x6ea6('0x34')]+'%'};return _0x2c9969;})});}_0x147377=_[_0x6ea6('0x36')]({},_0x147377,_0x5d8562[_0x6ea6('0x38')]);return _0x3b189d[_0x6ea6('0x47')](_0x147377);}})[_0x6ea6('0x20')](function(_0x5e55bd){if(_0x5e55bd){_0x205b4b=_0x5e55bd[_0x6ea6('0x2e')];if(!_0x5d8562[_0x6ea6('0x2c')]['hasOwnProperty']('nolimit')){_0x147377[_0x6ea6('0x1a')]=qs[_0x6ea6('0x1a')](_0x5d8562[_0x6ea6('0x2c')][_0x6ea6('0x1a')]);_0x147377['offset']=qs[_0x6ea6('0x19')](_0x5d8562[_0x6ea6('0x2c')][_0x6ea6('0x19')]);}return _0x3b189d['getDescriptions'](_0x147377);}})['then'](function(_0x98c78d){if(_0x98c78d){return _0x98c78d?{'count':_0x205b4b,'rows':_0x98c78d}:null;}})['then'](respondWithResult(_0x244381,null))[_0x6ea6('0x3c')](handleError(_0x244381,null));};exports['getTags']=function(_0x21e895,_0x171254,_0x5d8b2f){var _0x4294bc={};var _0x12e195={};var _0x5c46c9;var _0x189310;return db[_0x6ea6('0x26')][_0x6ea6('0x44')]({'where':{'id':_0x21e895['params']['id']}})[_0x6ea6('0x20')](handleEntityNotFound(_0x171254,null))[_0x6ea6('0x20')](function(_0x45f928){if(_0x45f928){_0x5c46c9=_0x45f928;_0x12e195[_0x6ea6('0x28')]=_[_0x6ea6('0x3e')](db[_0x6ea6('0x48')][_0x6ea6('0x27')]);_0x12e195['query']=_[_0x6ea6('0x3e')](_0x21e895[_0x6ea6('0x2c')]);_0x12e195[_0x6ea6('0x29')]=_['intersection'](_0x12e195[_0x6ea6('0x28')],_0x12e195[_0x6ea6('0x2c')]);_0x4294bc[_0x6ea6('0x2d')]=_['intersection'](_0x12e195[_0x6ea6('0x28')],qs[_0x6ea6('0x2b')](_0x21e895[_0x6ea6('0x2c')][_0x6ea6('0x2b')]));_0x4294bc[_0x6ea6('0x2d')]=_0x4294bc['attributes']['length']?_0x4294bc[_0x6ea6('0x2d')]:_0x12e195[_0x6ea6('0x28')];_0x4294bc[_0x6ea6('0x31')]=qs[_0x6ea6('0x32')](_0x21e895[_0x6ea6('0x2c')][_0x6ea6('0x32')]);_0x4294bc[_0x6ea6('0x35')]=qs[_0x6ea6('0x29')](_['pick'](_0x21e895[_0x6ea6('0x2c')],_0x12e195[_0x6ea6('0x29')]));if(_0x21e895[_0x6ea6('0x2c')][_0x6ea6('0x34')]){_0x4294bc[_0x6ea6('0x35')]=_[_0x6ea6('0x36')](_0x4294bc[_0x6ea6('0x35')],{'$or':_[_0x6ea6('0x25')](_0x4294bc[_0x6ea6('0x2d')],function(_0x1afb66){var _0x574ba1={};_0x574ba1[_0x1afb66]={'$like':'%'+_0x21e895[_0x6ea6('0x2c')][_0x6ea6('0x34')]+'%'};return _0x574ba1;})});}_0x4294bc=_['merge']({},_0x4294bc,_0x21e895['options']);return _0x5c46c9[_0x6ea6('0x49')](_0x4294bc);}})[_0x6ea6('0x20')](function(_0x3df040){if(_0x3df040){_0x189310=_0x3df040[_0x6ea6('0x2e')];if(!_0x21e895[_0x6ea6('0x2c')][_0x6ea6('0x2f')](_0x6ea6('0x30'))){_0x4294bc[_0x6ea6('0x1a')]=qs['limit'](_0x21e895[_0x6ea6('0x2c')][_0x6ea6('0x1a')]);_0x4294bc[_0x6ea6('0x19')]=qs[_0x6ea6('0x19')](_0x21e895[_0x6ea6('0x2c')][_0x6ea6('0x19')]);}return _0x5c46c9[_0x6ea6('0x49')](_0x4294bc);}})[_0x6ea6('0x20')](function(_0x9180d5){if(_0x9180d5){return _0x9180d5?{'count':_0x189310,'rows':_0x9180d5}:null;}})[_0x6ea6('0x20')](respondWithResult(_0x171254,null))[_0x6ea6('0x3c')](handleError(_0x171254,null));};exports['setTags']=function(_0x9db1c6,_0x5beba5,_0x3a88ad){if(_0x9db1c6[_0x6ea6('0x41')]['id']){delete _0x9db1c6[_0x6ea6('0x41')]['id'];}return db[_0x6ea6('0x26')][_0x6ea6('0x44')]({'where':{'id':_0x9db1c6['params']['id']}})[_0x6ea6('0x20')](handleEntityNotFound(_0x5beba5,null))[_0x6ea6('0x20')](function(_0x389396){if(_0x389396){return _0x389396[_0x6ea6('0x4a')](_0x9db1c6[_0x6ea6('0x41')][_0x6ea6('0x4b')]||[]);}return null;})[_0x6ea6('0x20')](respondWithResult(_0x5beba5,null))['catch'](handleError(_0x5beba5,null));};
\ No newline at end of file
+var _0x7fa6=['where','merge','type','VIRTUAL','options','includeAll','rows','catch','show','include','find','create','body','params','getFields','findOne','order','getSubjects','DeskField','getDescriptions','getTags','Tag','setTags','ids','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','offset','undefined','count','set','Content-Range','reject','update','then','destroy','status','error','name','send','index','map','DeskConfiguration','rawAttributes','fieldName','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','sort','filters','pick','filter'];(function(_0x47a295,_0x28fc80){var _0x9a8d15=function(_0xbfcbca){while(--_0xbfcbca){_0x47a295['push'](_0x47a295['shift']());}};_0x9a8d15(++_0x28fc80);}(_0x7fa6,0x67));var _0x67fa=function(_0x41ade7,_0x21627f){_0x41ade7=_0x41ade7-0x0;var _0x248d77=_0x7fa6[_0x41ade7];return _0x248d77;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x67fa('0x0'));var zipdir=require(_0x67fa('0x1'));var jsonpatch=require(_0x67fa('0x2'));var rp=require(_0x67fa('0x3'));var moment=require('moment');var BPromise=require(_0x67fa('0x4'));var Mustache=require(_0x67fa('0x5'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x67fa('0x6'));var ejs=require(_0x67fa('0x7'));var fs=require('fs');var fs_extra=require(_0x67fa('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x67fa('0x9'));var jsforce=require(_0x67fa('0xa'));var deskjs=require(_0x67fa('0xb'));var toCsv=require(_0x67fa('0x6'));var querystring=require('querystring');var Papa=require(_0x67fa('0xc'));var Redis=require(_0x67fa('0xd'));var authService=require(_0x67fa('0xe'));var qs=require(_0x67fa('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x67fa('0x10'))(_0x67fa('0x11'));var utils=require(_0x67fa('0x12'));var config=require(_0x67fa('0x13'));var licenseUtil=require(_0x67fa('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5946a3,_0xfc9057){_0xfc9057=_0xfc9057||0xcc;return function(_0x2ccf34){if(_0x2ccf34){return _0x5946a3[_0x67fa('0x15')](_0xfc9057);}return _0x5946a3['status'](_0xfc9057)[_0x67fa('0x16')]();};}function respondWithResult(_0x3d7804,_0x2eb9c4){_0x2eb9c4=_0x2eb9c4||0xc8;return function(_0x3ad37a){if(_0x3ad37a){return _0x3d7804['status'](_0x2eb9c4)['json'](_0x3ad37a);}};}function respondWithFilteredResult(_0x5bfa9f,_0x3e9235){return function(_0x3e5c9f){if(_0x3e5c9f){var _0x17c86d=typeof _0x3e9235[_0x67fa('0x17')]===_0x67fa('0x18')&&typeof _0x3e9235['limit']===_0x67fa('0x18');var _0x2d7e1e=_0x3e5c9f[_0x67fa('0x19')];var _0x3fee35=_0x17c86d?0x0:_0x3e9235[_0x67fa('0x17')];var _0x599f7d=_0x17c86d?_0x3e5c9f[_0x67fa('0x19')]:_0x3e9235[_0x67fa('0x17')]+_0x3e9235['limit'];var _0xab57c0;if(_0x599f7d>=_0x2d7e1e){_0x599f7d=_0x2d7e1e;_0xab57c0=0xc8;}else{_0xab57c0=0xce;}_0x5bfa9f['status'](_0xab57c0);return _0x5bfa9f[_0x67fa('0x1a')](_0x67fa('0x1b'),_0x3fee35+'-'+_0x599f7d+'/'+_0x2d7e1e)['json'](_0x3e5c9f);}return null;};}function patchUpdates(_0x288e18){return function(_0x1518c0){try{jsonpatch['apply'](_0x1518c0,_0x288e18,!![]);}catch(_0x51ccf8){return BPromise[_0x67fa('0x1c')](_0x51ccf8);}return _0x1518c0['save']();};}function saveUpdates(_0x11088f,_0x59412c){return function(_0x15f5fe){if(_0x15f5fe){return _0x15f5fe[_0x67fa('0x1d')](_0x11088f)[_0x67fa('0x1e')](function(_0x3d063e){return _0x3d063e;});}return null;};}function removeEntity(_0x2a85d0,_0x5eea55){return function(_0xc712b7){if(_0xc712b7){return _0xc712b7[_0x67fa('0x1f')]()['then'](function(){_0x2a85d0[_0x67fa('0x20')](0xcc)[_0x67fa('0x16')]();});}};}function handleEntityNotFound(_0x1f1466,_0xa35eb6){return function(_0x12d2fe){if(!_0x12d2fe){_0x1f1466[_0x67fa('0x15')](0x194);}return _0x12d2fe;};}function handleError(_0x4133e3,_0x199fdb){_0x199fdb=_0x199fdb||0x1f4;return function(_0x108acf){logger[_0x67fa('0x21')](_0x108acf['stack']);if(_0x108acf[_0x67fa('0x22')]){delete _0x108acf['name'];}_0x4133e3[_0x67fa('0x20')](_0x199fdb)[_0x67fa('0x23')](_0x108acf);};}exports[_0x67fa('0x24')]=function(_0x5e3d54,_0x5a3f53){var _0x22eff2={},_0x3cade4={},_0x3f7364={'count':0x0,'rows':[]};var _0x16af8b=_[_0x67fa('0x25')](db[_0x67fa('0x26')][_0x67fa('0x27')],function(_0xe647ae){return{'name':_0xe647ae[_0x67fa('0x28')],'type':_0xe647ae['type']['key']};});_0x3cade4[_0x67fa('0x29')]=_['map'](_0x16af8b,_0x67fa('0x22'));_0x3cade4[_0x67fa('0x2a')]=_[_0x67fa('0x2b')](_0x5e3d54[_0x67fa('0x2a')]);_0x3cade4['filters']=_[_0x67fa('0x2c')](_0x3cade4[_0x67fa('0x29')],_0x3cade4[_0x67fa('0x2a')]);_0x22eff2[_0x67fa('0x2d')]=_['intersection'](_0x3cade4[_0x67fa('0x29')],qs[_0x67fa('0x2e')](_0x5e3d54['query'][_0x67fa('0x2e')]));_0x22eff2[_0x67fa('0x2d')]=_0x22eff2[_0x67fa('0x2d')][_0x67fa('0x2f')]?_0x22eff2[_0x67fa('0x2d')]:_0x3cade4[_0x67fa('0x29')];if(!_0x5e3d54['query'][_0x67fa('0x30')](_0x67fa('0x31'))){_0x22eff2[_0x67fa('0x32')]=qs[_0x67fa('0x32')](_0x5e3d54[_0x67fa('0x2a')][_0x67fa('0x32')]);_0x22eff2[_0x67fa('0x17')]=qs['offset'](_0x5e3d54['query'][_0x67fa('0x17')]);}_0x22eff2['order']=qs[_0x67fa('0x33')](_0x5e3d54[_0x67fa('0x2a')][_0x67fa('0x33')]);_0x22eff2['where']=qs[_0x67fa('0x34')](_[_0x67fa('0x35')](_0x5e3d54[_0x67fa('0x2a')],_0x3cade4[_0x67fa('0x34')]),_0x16af8b);if(_0x5e3d54[_0x67fa('0x2a')][_0x67fa('0x36')]){_0x22eff2[_0x67fa('0x37')]=_[_0x67fa('0x38')](_0x22eff2[_0x67fa('0x37')],{'$or':_[_0x67fa('0x25')](_0x16af8b,function(_0x3541de){if(_0x3541de[_0x67fa('0x39')]!==_0x67fa('0x3a')){var _0x13c41a={};_0x13c41a[_0x3541de[_0x67fa('0x22')]]={'$like':'%'+_0x5e3d54[_0x67fa('0x2a')][_0x67fa('0x36')]+'%'};return _0x13c41a;}})});}_0x22eff2=_[_0x67fa('0x38')]({},_0x22eff2,_0x5e3d54[_0x67fa('0x3b')]);var _0x3d308f={'where':_0x22eff2['where']};return db[_0x67fa('0x26')][_0x67fa('0x19')](_0x3d308f)[_0x67fa('0x1e')](function(_0x55d7bc){_0x3f7364[_0x67fa('0x19')]=_0x55d7bc;if(_0x5e3d54['query'][_0x67fa('0x3c')]){_0x22eff2['include']=[{'all':!![]}];}return db[_0x67fa('0x26')]['findAll'](_0x22eff2);})[_0x67fa('0x1e')](function(_0x40e5ae){_0x3f7364[_0x67fa('0x3d')]=_0x40e5ae;return _0x3f7364;})['then'](respondWithFilteredResult(_0x5a3f53,_0x22eff2))[_0x67fa('0x3e')](handleError(_0x5a3f53,null));};exports[_0x67fa('0x3f')]=function(_0x48aa80,_0x498e6b){var _0x2f7c8d={'raw':![],'where':{'id':_0x48aa80['params']['id']}},_0x32373b={};_0x32373b[_0x67fa('0x29')]=_[_0x67fa('0x2b')](db[_0x67fa('0x26')][_0x67fa('0x27')]);_0x32373b['query']=_['keys'](_0x48aa80[_0x67fa('0x2a')]);_0x32373b[_0x67fa('0x34')]=_[_0x67fa('0x2c')](_0x32373b[_0x67fa('0x29')],_0x32373b[_0x67fa('0x2a')]);_0x2f7c8d[_0x67fa('0x2d')]=_['intersection'](_0x32373b['model'],qs[_0x67fa('0x2e')](_0x48aa80[_0x67fa('0x2a')][_0x67fa('0x2e')]));_0x2f7c8d['attributes']=_0x2f7c8d[_0x67fa('0x2d')][_0x67fa('0x2f')]?_0x2f7c8d[_0x67fa('0x2d')]:_0x32373b[_0x67fa('0x29')];if(_0x48aa80[_0x67fa('0x2a')]['includeAll']){_0x2f7c8d[_0x67fa('0x40')]=[{'all':!![]}];}_0x2f7c8d=_[_0x67fa('0x38')]({},_0x2f7c8d,_0x48aa80[_0x67fa('0x3b')]);return db[_0x67fa('0x26')][_0x67fa('0x41')](_0x2f7c8d)['then'](handleEntityNotFound(_0x498e6b,null))[_0x67fa('0x1e')](respondWithResult(_0x498e6b,null))[_0x67fa('0x3e')](handleError(_0x498e6b,null));};exports[_0x67fa('0x42')]=function(_0x3de499,_0x30b074){return db[_0x67fa('0x26')][_0x67fa('0x42')](_0x3de499[_0x67fa('0x43')],{})['then'](respondWithResult(_0x30b074,0xc9))[_0x67fa('0x3e')](handleError(_0x30b074,null));};exports[_0x67fa('0x1d')]=function(_0x1ce123,_0x322c59){if(_0x1ce123[_0x67fa('0x43')]['id']){delete _0x1ce123[_0x67fa('0x43')]['id'];}return db['DeskConfiguration'][_0x67fa('0x41')]({'where':{'id':_0x1ce123[_0x67fa('0x44')]['id']}})['then'](handleEntityNotFound(_0x322c59,null))[_0x67fa('0x1e')](saveUpdates(_0x1ce123['body'],null))[_0x67fa('0x1e')](respondWithResult(_0x322c59,null))['catch'](handleError(_0x322c59,null));};exports[_0x67fa('0x1f')]=function(_0x55c521,_0x259aa9){return db['DeskConfiguration'][_0x67fa('0x41')]({'where':{'id':_0x55c521[_0x67fa('0x44')]['id']}})[_0x67fa('0x1e')](handleEntityNotFound(_0x259aa9,null))['then'](removeEntity(_0x259aa9,null))[_0x67fa('0x3e')](handleError(_0x259aa9,null));};exports[_0x67fa('0x45')]=function(_0x1affdc,_0x436fa0,_0x13466b){var _0x182ddf={};var _0x16dcd7={};var _0x26b750;var _0x257f03;return db[_0x67fa('0x26')][_0x67fa('0x46')]({'where':{'id':_0x1affdc[_0x67fa('0x44')]['id']}})[_0x67fa('0x1e')](handleEntityNotFound(_0x436fa0,null))[_0x67fa('0x1e')](function(_0xf8ed59){if(_0xf8ed59){_0x26b750=_0xf8ed59;_0x16dcd7[_0x67fa('0x29')]=_['keys'](db['DeskField'][_0x67fa('0x27')]);_0x16dcd7[_0x67fa('0x2a')]=_[_0x67fa('0x2b')](_0x1affdc['query']);_0x16dcd7['filters']=_[_0x67fa('0x2c')](_0x16dcd7[_0x67fa('0x29')],_0x16dcd7['query']);_0x182ddf[_0x67fa('0x2d')]=_['intersection'](_0x16dcd7['model'],qs['fields'](_0x1affdc['query'][_0x67fa('0x2e')]));_0x182ddf[_0x67fa('0x2d')]=_0x182ddf[_0x67fa('0x2d')][_0x67fa('0x2f')]?_0x182ddf['attributes']:_0x16dcd7[_0x67fa('0x29')];_0x182ddf[_0x67fa('0x47')]=qs[_0x67fa('0x33')](_0x1affdc[_0x67fa('0x2a')][_0x67fa('0x33')]);_0x182ddf['where']=qs[_0x67fa('0x34')](_['pick'](_0x1affdc['query'],_0x16dcd7[_0x67fa('0x34')]));if(_0x1affdc['query']['filter']){_0x182ddf['where']=_['merge'](_0x182ddf[_0x67fa('0x37')],{'$or':_[_0x67fa('0x25')](_0x182ddf[_0x67fa('0x2d')],function(_0x318dc0){var _0x3d477e={};_0x3d477e[_0x318dc0]={'$like':'%'+_0x1affdc[_0x67fa('0x2a')][_0x67fa('0x36')]+'%'};return _0x3d477e;})});}_0x182ddf=_[_0x67fa('0x38')]({},_0x182ddf,_0x1affdc[_0x67fa('0x3b')]);return _0x26b750[_0x67fa('0x45')](_0x182ddf);}})['then'](function(_0x4d476a){if(_0x4d476a){_0x257f03=_0x4d476a['length'];if(!_0x1affdc[_0x67fa('0x2a')][_0x67fa('0x30')](_0x67fa('0x31'))){_0x182ddf['limit']=qs[_0x67fa('0x32')](_0x1affdc['query']['limit']);_0x182ddf['offset']=qs[_0x67fa('0x17')](_0x1affdc[_0x67fa('0x2a')][_0x67fa('0x17')]);}return _0x26b750[_0x67fa('0x45')](_0x182ddf);}})[_0x67fa('0x1e')](function(_0x32cc85){if(_0x32cc85){return _0x32cc85?{'count':_0x257f03,'rows':_0x32cc85}:null;}})[_0x67fa('0x1e')](respondWithResult(_0x436fa0,null))[_0x67fa('0x3e')](handleError(_0x436fa0,null));};exports[_0x67fa('0x48')]=function(_0x3cf588,_0x5378e7,_0x5a86c2){var _0x39eeaf={};var _0x3f5fae={};var _0x206e68;var _0x1e221a;return db[_0x67fa('0x26')][_0x67fa('0x46')]({'where':{'id':_0x3cf588[_0x67fa('0x44')]['id']}})[_0x67fa('0x1e')](handleEntityNotFound(_0x5378e7,null))[_0x67fa('0x1e')](function(_0x13c97c){if(_0x13c97c){_0x206e68=_0x13c97c;_0x3f5fae['model']=_['keys'](db[_0x67fa('0x49')][_0x67fa('0x27')]);_0x3f5fae[_0x67fa('0x2a')]=_['keys'](_0x3cf588['query']);_0x3f5fae[_0x67fa('0x34')]=_[_0x67fa('0x2c')](_0x3f5fae['model'],_0x3f5fae[_0x67fa('0x2a')]);_0x39eeaf[_0x67fa('0x2d')]=_[_0x67fa('0x2c')](_0x3f5fae[_0x67fa('0x29')],qs['fields'](_0x3cf588['query'][_0x67fa('0x2e')]));_0x39eeaf[_0x67fa('0x2d')]=_0x39eeaf[_0x67fa('0x2d')][_0x67fa('0x2f')]?_0x39eeaf[_0x67fa('0x2d')]:_0x3f5fae[_0x67fa('0x29')];_0x39eeaf[_0x67fa('0x47')]=qs[_0x67fa('0x33')](_0x3cf588[_0x67fa('0x2a')][_0x67fa('0x33')]);_0x39eeaf[_0x67fa('0x37')]=qs[_0x67fa('0x34')](_['pick'](_0x3cf588[_0x67fa('0x2a')],_0x3f5fae[_0x67fa('0x34')]));if(_0x3cf588['query'][_0x67fa('0x36')]){_0x39eeaf['where']=_[_0x67fa('0x38')](_0x39eeaf[_0x67fa('0x37')],{'$or':_[_0x67fa('0x25')](_0x39eeaf[_0x67fa('0x2d')],function(_0x3169db){var _0x20cddb={};_0x20cddb[_0x3169db]={'$like':'%'+_0x3cf588[_0x67fa('0x2a')][_0x67fa('0x36')]+'%'};return _0x20cddb;})});}_0x39eeaf=_[_0x67fa('0x38')]({},_0x39eeaf,_0x3cf588['options']);return _0x206e68[_0x67fa('0x48')](_0x39eeaf);}})[_0x67fa('0x1e')](function(_0x3dd854){if(_0x3dd854){_0x1e221a=_0x3dd854['length'];if(!_0x3cf588[_0x67fa('0x2a')][_0x67fa('0x30')](_0x67fa('0x31'))){_0x39eeaf[_0x67fa('0x32')]=qs[_0x67fa('0x32')](_0x3cf588[_0x67fa('0x2a')]['limit']);_0x39eeaf[_0x67fa('0x17')]=qs[_0x67fa('0x17')](_0x3cf588[_0x67fa('0x2a')][_0x67fa('0x17')]);}return _0x206e68[_0x67fa('0x48')](_0x39eeaf);}})['then'](function(_0x3f8d2e){if(_0x3f8d2e){return _0x3f8d2e?{'count':_0x1e221a,'rows':_0x3f8d2e}:null;}})[_0x67fa('0x1e')](respondWithResult(_0x5378e7,null))[_0x67fa('0x3e')](handleError(_0x5378e7,null));};exports[_0x67fa('0x4a')]=function(_0x1d373b,_0x178543,_0x5a4ac3){var _0x5deb91={};var _0x3a6c45={};var _0x59f467;var _0x87cfec;return db[_0x67fa('0x26')][_0x67fa('0x46')]({'where':{'id':_0x1d373b[_0x67fa('0x44')]['id']}})[_0x67fa('0x1e')](handleEntityNotFound(_0x178543,null))['then'](function(_0x1b3ebd){if(_0x1b3ebd){_0x59f467=_0x1b3ebd;_0x3a6c45[_0x67fa('0x29')]=_[_0x67fa('0x2b')](db[_0x67fa('0x49')][_0x67fa('0x27')]);_0x3a6c45[_0x67fa('0x2a')]=_[_0x67fa('0x2b')](_0x1d373b[_0x67fa('0x2a')]);_0x3a6c45[_0x67fa('0x34')]=_[_0x67fa('0x2c')](_0x3a6c45['model'],_0x3a6c45['query']);_0x5deb91[_0x67fa('0x2d')]=_[_0x67fa('0x2c')](_0x3a6c45[_0x67fa('0x29')],qs[_0x67fa('0x2e')](_0x1d373b[_0x67fa('0x2a')][_0x67fa('0x2e')]));_0x5deb91[_0x67fa('0x2d')]=_0x5deb91[_0x67fa('0x2d')][_0x67fa('0x2f')]?_0x5deb91[_0x67fa('0x2d')]:_0x3a6c45[_0x67fa('0x29')];_0x5deb91[_0x67fa('0x47')]=qs[_0x67fa('0x33')](_0x1d373b[_0x67fa('0x2a')]['sort']);_0x5deb91[_0x67fa('0x37')]=qs['filters'](_[_0x67fa('0x35')](_0x1d373b[_0x67fa('0x2a')],_0x3a6c45['filters']));if(_0x1d373b[_0x67fa('0x2a')][_0x67fa('0x36')]){_0x5deb91[_0x67fa('0x37')]=_[_0x67fa('0x38')](_0x5deb91[_0x67fa('0x37')],{'$or':_[_0x67fa('0x25')](_0x5deb91[_0x67fa('0x2d')],function(_0x5c597e){var _0x27627e={};_0x27627e[_0x5c597e]={'$like':'%'+_0x1d373b[_0x67fa('0x2a')][_0x67fa('0x36')]+'%'};return _0x27627e;})});}_0x5deb91=_['merge']({},_0x5deb91,_0x1d373b[_0x67fa('0x3b')]);return _0x59f467['getDescriptions'](_0x5deb91);}})[_0x67fa('0x1e')](function(_0x178004){if(_0x178004){_0x87cfec=_0x178004[_0x67fa('0x2f')];if(!_0x1d373b[_0x67fa('0x2a')][_0x67fa('0x30')](_0x67fa('0x31'))){_0x5deb91[_0x67fa('0x32')]=qs[_0x67fa('0x32')](_0x1d373b['query']['limit']);_0x5deb91['offset']=qs['offset'](_0x1d373b[_0x67fa('0x2a')][_0x67fa('0x17')]);}return _0x59f467[_0x67fa('0x4a')](_0x5deb91);}})[_0x67fa('0x1e')](function(_0x12c8f8){if(_0x12c8f8){return _0x12c8f8?{'count':_0x87cfec,'rows':_0x12c8f8}:null;}})['then'](respondWithResult(_0x178543,null))[_0x67fa('0x3e')](handleError(_0x178543,null));};exports[_0x67fa('0x4b')]=function(_0xcc0c91,_0x5271dc,_0x10a3b6){var _0x4da275={};var _0x52767c={};var _0x578041;var _0x3d0dfd;return db[_0x67fa('0x26')][_0x67fa('0x46')]({'where':{'id':_0xcc0c91[_0x67fa('0x44')]['id']}})[_0x67fa('0x1e')](handleEntityNotFound(_0x5271dc,null))['then'](function(_0x21aa75){if(_0x21aa75){_0x578041=_0x21aa75;_0x52767c[_0x67fa('0x29')]=_[_0x67fa('0x2b')](db[_0x67fa('0x4c')][_0x67fa('0x27')]);_0x52767c[_0x67fa('0x2a')]=_[_0x67fa('0x2b')](_0xcc0c91['query']);_0x52767c[_0x67fa('0x34')]=_[_0x67fa('0x2c')](_0x52767c[_0x67fa('0x29')],_0x52767c['query']);_0x4da275[_0x67fa('0x2d')]=_[_0x67fa('0x2c')](_0x52767c['model'],qs['fields'](_0xcc0c91[_0x67fa('0x2a')][_0x67fa('0x2e')]));_0x4da275[_0x67fa('0x2d')]=_0x4da275['attributes']['length']?_0x4da275[_0x67fa('0x2d')]:_0x52767c[_0x67fa('0x29')];_0x4da275[_0x67fa('0x47')]=qs[_0x67fa('0x33')](_0xcc0c91[_0x67fa('0x2a')][_0x67fa('0x33')]);_0x4da275[_0x67fa('0x37')]=qs[_0x67fa('0x34')](_[_0x67fa('0x35')](_0xcc0c91[_0x67fa('0x2a')],_0x52767c[_0x67fa('0x34')]));if(_0xcc0c91[_0x67fa('0x2a')]['filter']){_0x4da275[_0x67fa('0x37')]=_[_0x67fa('0x38')](_0x4da275[_0x67fa('0x37')],{'$or':_['map'](_0x4da275['attributes'],function(_0x61251b){var _0x5a6fd3={};_0x5a6fd3[_0x61251b]={'$like':'%'+_0xcc0c91[_0x67fa('0x2a')][_0x67fa('0x36')]+'%'};return _0x5a6fd3;})});}_0x4da275=_[_0x67fa('0x38')]({},_0x4da275,_0xcc0c91[_0x67fa('0x3b')]);return _0x578041['getTags'](_0x4da275);}})[_0x67fa('0x1e')](function(_0x6d1c06){if(_0x6d1c06){_0x3d0dfd=_0x6d1c06[_0x67fa('0x2f')];if(!_0xcc0c91[_0x67fa('0x2a')]['hasOwnProperty'](_0x67fa('0x31'))){_0x4da275[_0x67fa('0x32')]=qs['limit'](_0xcc0c91['query']['limit']);_0x4da275[_0x67fa('0x17')]=qs[_0x67fa('0x17')](_0xcc0c91['query'][_0x67fa('0x17')]);}return _0x578041[_0x67fa('0x4b')](_0x4da275);}})[_0x67fa('0x1e')](function(_0x36562f){if(_0x36562f){return _0x36562f?{'count':_0x3d0dfd,'rows':_0x36562f}:null;}})[_0x67fa('0x1e')](respondWithResult(_0x5271dc,null))[_0x67fa('0x3e')](handleError(_0x5271dc,null));};exports['setTags']=function(_0x3c57df,_0x31a85f,_0xbbc69){if(_0x3c57df[_0x67fa('0x43')]['id']){delete _0x3c57df[_0x67fa('0x43')]['id'];}return db[_0x67fa('0x26')]['findOne']({'where':{'id':_0x3c57df['params']['id']}})[_0x67fa('0x1e')](handleEntityNotFound(_0x31a85f,null))['then'](function(_0x12384b){if(_0x12384b){return _0x12384b[_0x67fa('0x4d')](_0x3c57df[_0x67fa('0x43')][_0x67fa('0x4e')]||[]);}return null;})['then'](respondWithResult(_0x31a85f,null))['catch'](handleError(_0x31a85f,null));};
\ No newline at end of file
index 4c7439c..c3383cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca8e=['path','../../config/environment','exports','DeskConfiguration','int_desk_configurations','../../config/logger','api','request-promise'];(function(_0xd5d4bc,_0x353943){var _0x239636=function(_0x176f99){while(--_0x176f99){_0xd5d4bc['push'](_0xd5d4bc['shift']());}};_0x239636(++_0x353943);}(_0xca8e,0xbd));var _0xeca8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xca8e[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xeca8('0x0'))(_0xeca8('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xeca8('0x2'));var fs=require('fs');var path=require(_0xeca8('0x3'));var rimraf=require('rimraf');var config=require(_0xeca8('0x4'));var attributes=require('./intDeskConfiguration.attributes');module[_0xeca8('0x5')]=function(_0x362094,_0x531916){return _0x362094['define'](_0xeca8('0x6'),attributes,{'tableName':_0xeca8('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd6e2=['int_desk_configurations','lodash','api','moment','bluebird','request-promise','path','./intDeskConfiguration.attributes','exports','define'];(function(_0x13b330,_0x297092){var _0x1f666c=function(_0x5ebc84){while(--_0x5ebc84){_0x13b330['push'](_0x13b330['shift']());}};_0x1f666c(++_0x297092);}(_0xd6e2,0x169));var _0x2d6e=function(_0x5e4ed6,_0x1856e7){_0x5e4ed6=_0x5e4ed6-0x0;var _0x5d93ae=_0xd6e2[_0x5e4ed6];return _0x5d93ae;};'use strict';var _=require(_0x2d6e('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x2d6e('0x1'));var moment=require(_0x2d6e('0x2'));var BPromise=require(_0x2d6e('0x3'));var rp=require(_0x2d6e('0x4'));var fs=require('fs');var path=require(_0x2d6e('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x2d6e('0x6'));module[_0x2d6e('0x7')]=function(_0x4f0eb7,_0x4176c4){return _0x4f0eb7[_0x2d6e('0x8')]('DeskConfiguration',attributes,{'tableName':_0x2d6e('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bad8421..4a7bd39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9048=['result','catch','lodash','moment','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','debug','error','code','DeskConfiguration,\x20%s,\x20%s','message','request\x20sent'];(function(_0x2dd07a,_0x354b1b){var _0x4671a8=function(_0x3e8457){while(--_0x3e8457){_0x2dd07a['push'](_0x2dd07a['shift']());}};_0x4671a8(++_0x354b1b);}(_0x9048,0xf2));var _0x8904=function(_0x2dd0e2,_0x41c0f8){_0x2dd0e2=_0x2dd0e2-0x0;var _0x567695=_0x9048[_0x2dd0e2];return _0x567695;};'use strict';var _=require(_0x8904('0x0'));var util=require('util');var moment=require(_0x8904('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8904('0x2'))['db'];var utils=require(_0x8904('0x3'));var logger=require('../../config/logger')(_0x8904('0x4'));var config=require(_0x8904('0x5'));var jayson=require(_0x8904('0x6'));var client=jayson[_0x8904('0x7')][_0x8904('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4613a7,_0x21586c,_0x3b78af){return new BPromise(function(_0x333215,_0x79819a){return client[_0x8904('0x9')](_0x4613a7,_0x3b78af)[_0x8904('0xa')](function(_0x225617){logger[_0x8904('0xb')]('DeskConfiguration,\x20%s,\x20%s',_0x21586c,'request\x20sent');logger[_0x8904('0xc')]('DeskConfiguration,\x20%s,\x20%s,\x20%s',_0x21586c,'request\x20sent',JSON['stringify'](_0x225617));if(_0x225617[_0x8904('0xd')]){if(_0x225617['error'][_0x8904('0xe')]===0x1f4){logger[_0x8904('0xd')](_0x8904('0xf'),_0x21586c,_0x225617[_0x8904('0xd')][_0x8904('0x10')]);return _0x79819a(_0x225617[_0x8904('0xd')][_0x8904('0x10')]);}logger[_0x8904('0xd')](_0x8904('0xf'),_0x21586c,_0x225617['error'][_0x8904('0x10')]);return _0x333215(_0x225617['error']['message']);}else{logger[_0x8904('0xb')](_0x8904('0xf'),_0x21586c,_0x8904('0x11'));_0x333215(_0x225617[_0x8904('0x12')][_0x8904('0x10')]);}})[_0x8904('0x13')](function(_0x321846){logger[_0x8904('0xd')](_0x8904('0xf'),_0x21586c,_0x321846);_0x79819a(_0x321846);});});}
\ No newline at end of file
+var _0x3cd0=['stringify','error','DeskConfiguration,\x20%s,\x20%s','message','result','catch','lodash','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','request\x20sent','debug','DeskConfiguration,\x20%s,\x20%s,\x20%s'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3cd0,0x8a));var _0x03cd=function(_0x40f9a0,_0x3458cc){_0x40f9a0=_0x40f9a0-0x0;var _0x3e3144=_0x3cd0[_0x40f9a0];return _0x3e3144;};'use strict';var _=require(_0x03cd('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x03cd('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x03cd('0x2'));var db=require(_0x03cd('0x3'))['db'];var utils=require(_0x03cd('0x4'));var logger=require(_0x03cd('0x5'))(_0x03cd('0x6'));var config=require('../../config/environment');var jayson=require(_0x03cd('0x7'));var client=jayson[_0x03cd('0x8')][_0x03cd('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1ff934,_0x606150,_0x5dd6eb){return new BPromise(function(_0x67112,_0x5875af){return client[_0x03cd('0xa')](_0x1ff934,_0x5dd6eb)[_0x03cd('0xb')](function(_0x152209){logger[_0x03cd('0xc')]('DeskConfiguration,\x20%s,\x20%s',_0x606150,_0x03cd('0xd'));logger[_0x03cd('0xe')](_0x03cd('0xf'),_0x606150,_0x03cd('0xd'),JSON[_0x03cd('0x10')](_0x152209));if(_0x152209[_0x03cd('0x11')]){if(_0x152209['error']['code']===0x1f4){logger[_0x03cd('0x11')](_0x03cd('0x12'),_0x606150,_0x152209[_0x03cd('0x11')][_0x03cd('0x13')]);return _0x5875af(_0x152209['error'][_0x03cd('0x13')]);}logger[_0x03cd('0x11')]('DeskConfiguration,\x20%s,\x20%s',_0x606150,_0x152209['error']['message']);return _0x67112(_0x152209[_0x03cd('0x11')][_0x03cd('0x13')]);}else{logger[_0x03cd('0xc')](_0x03cd('0x12'),_0x606150,'request\x20sent');_0x67112(_0x152209[_0x03cd('0x14')][_0x03cd('0x13')]);}})[_0x03cd('0x15')](function(_0x459533){logger[_0x03cd('0x11')]('DeskConfiguration,\x20%s,\x20%s',_0x606150,_0x459533);_0x5875af(_0x459533);});});}
\ No newline at end of file
index 9241adc..7759ed2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e7b=['exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy'];(function(_0x27530d,_0x46480a){var _0x59e561=function(_0x395fe9){while(--_0x395fe9){_0x27530d['push'](_0x27530d['shift']());}};_0x59e561(++_0x46480a);}(_0x1e7b,0x12d));var _0xb1e7=function(_0xfcfe92,_0x14ea66){_0xfcfe92=_0xfcfe92-0x0;var _0x166ba1=_0x1e7b[_0xfcfe92];return _0x166ba1;};'use strict';var multer=require(_0xb1e7('0x0'));var util=require(_0xb1e7('0x1'));var path=require('path');var timeout=require(_0xb1e7('0x2'));var express=require(_0xb1e7('0x3'));var router=express['Router']();var fs_extra=require(_0xb1e7('0x4'));var auth=require(_0xb1e7('0x5'));var interaction=require(_0xb1e7('0x6'));var config=require(_0xb1e7('0x7'));var controller=require('./intDeskField.controller');router[_0xb1e7('0x8')]('/',auth[_0xb1e7('0x9')](),controller[_0xb1e7('0xa')]);router[_0xb1e7('0x8')](_0xb1e7('0xb'),auth['isAuthenticated'](),controller[_0xb1e7('0xc')]);router[_0xb1e7('0xd')]('/',auth[_0xb1e7('0x9')](),controller[_0xb1e7('0xe')]);router[_0xb1e7('0xf')](_0xb1e7('0xb'),auth[_0xb1e7('0x9')](),controller[_0xb1e7('0x10')]);router[_0xb1e7('0x11')](_0xb1e7('0xb'),auth[_0xb1e7('0x9')](),controller[_0xb1e7('0x12')]);module[_0xb1e7('0x13')]=router;
\ No newline at end of file
+var _0xc674=['./intDeskField.controller','get','isAuthenticated','/:id','create','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x11fd4e,_0x1a32ec){var _0x324371=function(_0x3f90a1){while(--_0x3f90a1){_0x11fd4e['push'](_0x11fd4e['shift']());}};_0x324371(++_0x1a32ec);}(_0xc674,0xe8));var _0x4c67=function(_0xf2628e,_0x521bf7){_0xf2628e=_0xf2628e-0x0;var _0x13863a=_0xc674[_0xf2628e];return _0x13863a;};'use strict';var multer=require(_0x4c67('0x0'));var util=require(_0x4c67('0x1'));var path=require(_0x4c67('0x2'));var timeout=require(_0x4c67('0x3'));var express=require(_0x4c67('0x4'));var router=express[_0x4c67('0x5')]();var fs_extra=require(_0x4c67('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x4c67('0x7'));var config=require('../../config/environment');var controller=require(_0x4c67('0x8'));router[_0x4c67('0x9')]('/',auth[_0x4c67('0xa')](),controller['index']);router['get'](_0x4c67('0xb'),auth[_0x4c67('0xa')](),controller['show']);router['post']('/',auth[_0x4c67('0xa')](),controller[_0x4c67('0xc')]);router['put'](_0x4c67('0xb'),auth['isAuthenticated'](),controller[_0x4c67('0xd')]);router['delete'](_0x4c67('0xb'),auth[_0x4c67('0xa')](),controller[_0x4c67('0xe')]);module[_0x4c67('0xf')]=router;
\ No newline at end of file
index 45d0283..cc68fba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5547=['customVariable','keyValue','picklist','STRING','ENUM','exports','string','variable'];(function(_0xa27706,_0x540b7e){var _0x44476d=function(_0x3f23da){while(--_0x3f23da){_0xa27706['push'](_0xa27706['shift']());}};_0x44476d(++_0x540b7e);}(_0x5547,0x155));var _0x7554=function(_0x2a31b9,_0x4a634d){_0x2a31b9=_0x2a31b9-0x0;var _0x5cda05=_0x5547[_0x2a31b9];return _0x5cda05;};'use strict';var Sequelize=require('sequelize');module[_0x7554('0x0')]={'type':{'type':Sequelize['ENUM'](_0x7554('0x1'),_0x7554('0x2'),_0x7554('0x3'),_0x7554('0x4'),_0x7554('0x5')),'defaultValue':_0x7554('0x1')},'content':{'type':Sequelize[_0x7554('0x6')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x7554('0x7')](_0x7554('0x1'),_0x7554('0x2'),_0x7554('0x3'))},'keyContent':{'type':Sequelize[_0x7554('0x6')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x7554('0x6')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x6242=['customVariable','BOOLEAN','exports','ENUM','variable','keyValue','picklist','string','STRING'];(function(_0x5a2ae6,_0xbf778f){var _0x15c392=function(_0xce6810){while(--_0xce6810){_0x5a2ae6['push'](_0x5a2ae6['shift']());}};_0x15c392(++_0xbf778f);}(_0x6242,0x161));var _0x2624=function(_0x246cb0,_0x188593){_0x246cb0=_0x246cb0-0x0;var _0xb60eba=_0x6242[_0x246cb0];return _0xb60eba;};'use strict';var Sequelize=require('sequelize');module[_0x2624('0x0')]={'type':{'type':Sequelize[_0x2624('0x1')]('string',_0x2624('0x2'),'customVariable',_0x2624('0x3'),_0x2624('0x4')),'defaultValue':_0x2624('0x5')},'content':{'type':Sequelize[_0x2624('0x6')]},'key':{'type':Sequelize[_0x2624('0x6')]},'keyType':{'type':Sequelize[_0x2624('0x1')](_0x2624('0x5'),_0x2624('0x2'),_0x2624('0x7'))},'keyContent':{'type':Sequelize[_0x2624('0x6')]},'idField':{'type':Sequelize[_0x2624('0x6')]},'nameField':{'type':Sequelize[_0x2624('0x6')]},'customField':{'type':Sequelize[_0x2624('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x2624('0x6')]}};
\ No newline at end of file
index 883f1a4..c88cc9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb3e=['key','model','query','filters','intersection','fields','attributes','length','order','sort','pick','filter','where','merge','VIRTUAL','options','rows','params','keys','include','find','create','catch','update','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','apply','save','then','destroy','error','stack','name','index','map','DeskField','fieldName','type'];(function(_0x4124b3,_0x1ba0a1){var _0x5f3a62=function(_0x3411c0){while(--_0x3411c0){_0x4124b3['push'](_0x4124b3['shift']());}};_0x5f3a62(++_0x1ba0a1);}(_0xbb3e,0x181));var _0xebb3=function(_0x1336f0,_0x34342f){_0x1336f0=_0x1336f0-0x0;var _0x46aa79=_0xbb3e[_0x1336f0];return _0x46aa79;};'use strict';var emlformat=require(_0xebb3('0x0'));var rimraf=require(_0xebb3('0x1'));var zipdir=require(_0xebb3('0x2'));var jsonpatch=require(_0xebb3('0x3'));var rp=require('request-promise');var moment=require(_0xebb3('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xebb3('0x5'));var util=require(_0xebb3('0x6'));var path=require(_0xebb3('0x7'));var sox=require(_0xebb3('0x8'));var csv=require(_0xebb3('0x9'));var ejs=require(_0xebb3('0xa'));var fs=require('fs');var fs_extra=require(_0xebb3('0xb'));var _=require(_0xebb3('0xc'));var squel=require(_0xebb3('0xd'));var crypto=require(_0xebb3('0xe'));var jsforce=require(_0xebb3('0xf'));var deskjs=require(_0xebb3('0x10'));var toCsv=require(_0xebb3('0x9'));var querystring=require(_0xebb3('0x11'));var Papa=require(_0xebb3('0x12'));var Redis=require(_0xebb3('0x13'));var authService=require(_0xebb3('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xebb3('0x15'));var hardwareService=require(_0xebb3('0x16'));var logger=require('../../config/logger')(_0xebb3('0x17'));var utils=require(_0xebb3('0x18'));var config=require(_0xebb3('0x19'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x15924b,_0x21ef06){_0x21ef06=_0x21ef06||0xcc;return function(_0x46592c){if(_0x46592c){return _0x15924b[_0xebb3('0x1a')](_0x21ef06);}return _0x15924b[_0xebb3('0x1b')](_0x21ef06)[_0xebb3('0x1c')]();};}function respondWithResult(_0x29d2cf,_0x1127ef){_0x1127ef=_0x1127ef||0xc8;return function(_0x354074){if(_0x354074){return _0x29d2cf['status'](_0x1127ef)['json'](_0x354074);}};}function respondWithFilteredResult(_0x1761ee,_0xe35eb4){return function(_0x50f75e){if(_0x50f75e){var _0x56f7b0=typeof _0xe35eb4[_0xebb3('0x1d')]==='undefined'&&typeof _0xe35eb4[_0xebb3('0x1e')]===_0xebb3('0x1f');var _0x563aa3=_0x50f75e[_0xebb3('0x20')];var _0xd19201=_0x56f7b0?0x0:_0xe35eb4[_0xebb3('0x1d')];var _0xaece7a=_0x56f7b0?_0x50f75e[_0xebb3('0x20')]:_0xe35eb4[_0xebb3('0x1d')]+_0xe35eb4[_0xebb3('0x1e')];var _0x5cffe1;if(_0xaece7a>=_0x563aa3){_0xaece7a=_0x563aa3;_0x5cffe1=0xc8;}else{_0x5cffe1=0xce;}_0x1761ee['status'](_0x5cffe1);return _0x1761ee[_0xebb3('0x21')](_0xebb3('0x22'),_0xd19201+'-'+_0xaece7a+'/'+_0x563aa3)['json'](_0x50f75e);}return null;};}function patchUpdates(_0x568027){return function(_0x55129c){try{jsonpatch[_0xebb3('0x23')](_0x55129c,_0x568027,!![]);}catch(_0x116da4){return BPromise['reject'](_0x116da4);}return _0x55129c[_0xebb3('0x24')]();};}function saveUpdates(_0x19ea2d,_0x16c0b1){return function(_0x5d78f6){if(_0x5d78f6){return _0x5d78f6['update'](_0x19ea2d)[_0xebb3('0x25')](function(_0x2b1e69){return _0x2b1e69;});}return null;};}function removeEntity(_0x2e006b,_0x2f79bb){return function(_0x341bf4){if(_0x341bf4){return _0x341bf4[_0xebb3('0x26')]()[_0xebb3('0x25')](function(){_0x2e006b['status'](0xcc)[_0xebb3('0x1c')]();});}};}function handleEntityNotFound(_0x58e794,_0x7b7a6e){return function(_0x33eff3){if(!_0x33eff3){_0x58e794['sendStatus'](0x194);}return _0x33eff3;};}function handleError(_0x32d87,_0x172c4e){_0x172c4e=_0x172c4e||0x1f4;return function(_0x584e26){logger[_0xebb3('0x27')](_0x584e26[_0xebb3('0x28')]);if(_0x584e26[_0xebb3('0x29')]){delete _0x584e26[_0xebb3('0x29')];}_0x32d87[_0xebb3('0x1b')](_0x172c4e)['send'](_0x584e26);};}exports[_0xebb3('0x2a')]=function(_0x211670,_0x185b62){var _0x445dc8={},_0x397ad3={},_0x49b61e={'count':0x0,'rows':[]};var _0x58a43c=_[_0xebb3('0x2b')](db[_0xebb3('0x2c')]['rawAttributes'],function(_0x588056){return{'name':_0x588056[_0xebb3('0x2d')],'type':_0x588056[_0xebb3('0x2e')][_0xebb3('0x2f')]};});_0x397ad3[_0xebb3('0x30')]=_['map'](_0x58a43c,_0xebb3('0x29'));_0x397ad3[_0xebb3('0x31')]=_['keys'](_0x211670[_0xebb3('0x31')]);_0x397ad3[_0xebb3('0x32')]=_[_0xebb3('0x33')](_0x397ad3['model'],_0x397ad3[_0xebb3('0x31')]);_0x445dc8['attributes']=_[_0xebb3('0x33')](_0x397ad3['model'],qs[_0xebb3('0x34')](_0x211670['query'][_0xebb3('0x34')]));_0x445dc8[_0xebb3('0x35')]=_0x445dc8[_0xebb3('0x35')][_0xebb3('0x36')]?_0x445dc8[_0xebb3('0x35')]:_0x397ad3[_0xebb3('0x30')];if(!_0x211670[_0xebb3('0x31')]['hasOwnProperty']('nolimit')){_0x445dc8[_0xebb3('0x1e')]=qs['limit'](_0x211670[_0xebb3('0x31')][_0xebb3('0x1e')]);_0x445dc8[_0xebb3('0x1d')]=qs[_0xebb3('0x1d')](_0x211670[_0xebb3('0x31')][_0xebb3('0x1d')]);}_0x445dc8[_0xebb3('0x37')]=qs['sort'](_0x211670['query'][_0xebb3('0x38')]);_0x445dc8['where']=qs[_0xebb3('0x32')](_[_0xebb3('0x39')](_0x211670[_0xebb3('0x31')],_0x397ad3['filters']),_0x58a43c);if(_0x211670['query'][_0xebb3('0x3a')]){_0x445dc8[_0xebb3('0x3b')]=_[_0xebb3('0x3c')](_0x445dc8[_0xebb3('0x3b')],{'$or':_[_0xebb3('0x2b')](_0x58a43c,function(_0x576905){if(_0x576905[_0xebb3('0x2e')]!==_0xebb3('0x3d')){var _0x37250a={};_0x37250a[_0x576905[_0xebb3('0x29')]]={'$like':'%'+_0x211670[_0xebb3('0x31')][_0xebb3('0x3a')]+'%'};return _0x37250a;}})});}_0x445dc8=_[_0xebb3('0x3c')]({},_0x445dc8,_0x211670[_0xebb3('0x3e')]);var _0x498f2c={'where':_0x445dc8[_0xebb3('0x3b')]};return db[_0xebb3('0x2c')][_0xebb3('0x20')](_0x498f2c)[_0xebb3('0x25')](function(_0x2e7ced){_0x49b61e[_0xebb3('0x20')]=_0x2e7ced;if(_0x211670[_0xebb3('0x31')]['includeAll']){_0x445dc8['include']=[{'all':!![]}];}return db[_0xebb3('0x2c')]['findAll'](_0x445dc8);})['then'](function(_0x469ece){_0x49b61e[_0xebb3('0x3f')]=_0x469ece;return _0x49b61e;})['then'](respondWithFilteredResult(_0x185b62,_0x445dc8))['catch'](handleError(_0x185b62,null));};exports['show']=function(_0xefab32,_0x12c23f){var _0x1c05a7={'raw':!![],'where':{'id':_0xefab32[_0xebb3('0x40')]['id']}},_0x3d6e13={};_0x3d6e13[_0xebb3('0x30')]=_['keys'](db['DeskField']['rawAttributes']);_0x3d6e13[_0xebb3('0x31')]=_[_0xebb3('0x41')](_0xefab32[_0xebb3('0x31')]);_0x3d6e13[_0xebb3('0x32')]=_[_0xebb3('0x33')](_0x3d6e13[_0xebb3('0x30')],_0x3d6e13[_0xebb3('0x31')]);_0x1c05a7['attributes']=_[_0xebb3('0x33')](_0x3d6e13['model'],qs[_0xebb3('0x34')](_0xefab32['query'][_0xebb3('0x34')]));_0x1c05a7[_0xebb3('0x35')]=_0x1c05a7[_0xebb3('0x35')]['length']?_0x1c05a7[_0xebb3('0x35')]:_0x3d6e13[_0xebb3('0x30')];if(_0xefab32[_0xebb3('0x31')]['includeAll']){_0x1c05a7[_0xebb3('0x42')]=[{'all':!![]}];}_0x1c05a7=_[_0xebb3('0x3c')]({},_0x1c05a7,_0xefab32[_0xebb3('0x3e')]);return db[_0xebb3('0x2c')][_0xebb3('0x43')](_0x1c05a7)[_0xebb3('0x25')](handleEntityNotFound(_0x12c23f,null))[_0xebb3('0x25')](respondWithResult(_0x12c23f,null))['catch'](handleError(_0x12c23f,null));};exports[_0xebb3('0x44')]=function(_0x584d19,_0x55d74e){return db[_0xebb3('0x2c')][_0xebb3('0x44')](_0x584d19['body'],{})[_0xebb3('0x25')](respondWithResult(_0x55d74e,0xc9))[_0xebb3('0x45')](handleError(_0x55d74e,null));};exports[_0xebb3('0x46')]=function(_0x17fcd1,_0x3ab350){if(_0x17fcd1[_0xebb3('0x47')]['id']){delete _0x17fcd1[_0xebb3('0x47')]['id'];}return db[_0xebb3('0x2c')][_0xebb3('0x43')]({'where':{'id':_0x17fcd1['params']['id']}})['then'](handleEntityNotFound(_0x3ab350,null))[_0xebb3('0x25')](saveUpdates(_0x17fcd1[_0xebb3('0x47')],null))['then'](respondWithResult(_0x3ab350,null))[_0xebb3('0x45')](handleError(_0x3ab350,null));};exports[_0xebb3('0x26')]=function(_0xcad2ca,_0x449bca){return db[_0xebb3('0x2c')]['find']({'where':{'id':_0xcad2ca[_0xebb3('0x40')]['id']}})['then'](handleEntityNotFound(_0x449bca,null))[_0xebb3('0x25')](removeEntity(_0x449bca,null))[_0xebb3('0x45')](handleError(_0x449bca,null));};
\ No newline at end of file
+var _0x6c65=['undefined','count','offset','limit','Content-Range','json','apply','reject','save','then','destroy','stack','name','send','index','map','DeskField','rawAttributes','fieldName','type','query','filters','intersection','attributes','model','fields','length','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','keys','find','create','update','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','sendStatus','end','status'];(function(_0x317b86,_0x49c72f){var _0x3dcbfa=function(_0x42cb3f){while(--_0x42cb3f){_0x317b86['push'](_0x317b86['shift']());}};_0x3dcbfa(++_0x49c72f);}(_0x6c65,0x78));var _0x56c6=function(_0x50e07,_0x1879a7){_0x50e07=_0x50e07-0x0;var _0x2ac2db=_0x6c65[_0x50e07];return _0x2ac2db;};'use strict';var emlformat=require(_0x56c6('0x0'));var rimraf=require(_0x56c6('0x1'));var zipdir=require(_0x56c6('0x2'));var jsonpatch=require(_0x56c6('0x3'));var rp=require(_0x56c6('0x4'));var moment=require(_0x56c6('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x56c6('0x6'));var util=require(_0x56c6('0x7'));var path=require(_0x56c6('0x8'));var sox=require(_0x56c6('0x9'));var csv=require(_0x56c6('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x56c6('0xb'));var _=require(_0x56c6('0xc'));var squel=require(_0x56c6('0xd'));var crypto=require(_0x56c6('0xe'));var jsforce=require(_0x56c6('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x56c6('0xa'));var querystring=require(_0x56c6('0x10'));var Papa=require(_0x56c6('0x11'));var Redis=require('ioredis');var authService=require(_0x56c6('0x12'));var qs=require(_0x56c6('0x13'));var as=require(_0x56c6('0x14'));var hardwareService=require(_0x56c6('0x15'));var logger=require(_0x56c6('0x16'))(_0x56c6('0x17'));var utils=require('../../config/utils');var config=require(_0x56c6('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1d7c67,_0x2bb84e){_0x2bb84e=_0x2bb84e||0xcc;return function(_0x3310ed){if(_0x3310ed){return _0x1d7c67[_0x56c6('0x19')](_0x2bb84e);}return _0x1d7c67['status'](_0x2bb84e)[_0x56c6('0x1a')]();};}function respondWithResult(_0x511316,_0x17f72e){_0x17f72e=_0x17f72e||0xc8;return function(_0x59b7b5){if(_0x59b7b5){return _0x511316[_0x56c6('0x1b')](_0x17f72e)['json'](_0x59b7b5);}};}function respondWithFilteredResult(_0x557189,_0x4b47ce){return function(_0x4d0838){if(_0x4d0838){var _0x3e6082=typeof _0x4b47ce['offset']===_0x56c6('0x1c')&&typeof _0x4b47ce['limit']===_0x56c6('0x1c');var _0x49fff5=_0x4d0838[_0x56c6('0x1d')];var _0x5625f2=_0x3e6082?0x0:_0x4b47ce[_0x56c6('0x1e')];var _0x288325=_0x3e6082?_0x4d0838['count']:_0x4b47ce[_0x56c6('0x1e')]+_0x4b47ce[_0x56c6('0x1f')];var _0x27b5b0;if(_0x288325>=_0x49fff5){_0x288325=_0x49fff5;_0x27b5b0=0xc8;}else{_0x27b5b0=0xce;}_0x557189[_0x56c6('0x1b')](_0x27b5b0);return _0x557189['set'](_0x56c6('0x20'),_0x5625f2+'-'+_0x288325+'/'+_0x49fff5)[_0x56c6('0x21')](_0x4d0838);}return null;};}function patchUpdates(_0x413ca7){return function(_0x137570){try{jsonpatch[_0x56c6('0x22')](_0x137570,_0x413ca7,!![]);}catch(_0x58bc6f){return BPromise[_0x56c6('0x23')](_0x58bc6f);}return _0x137570[_0x56c6('0x24')]();};}function saveUpdates(_0x55271c,_0x40d7be){return function(_0x4d33f7){if(_0x4d33f7){return _0x4d33f7['update'](_0x55271c)[_0x56c6('0x25')](function(_0x1f1bb1){return _0x1f1bb1;});}return null;};}function removeEntity(_0x17dd94,_0x5c6682){return function(_0x27806e){if(_0x27806e){return _0x27806e[_0x56c6('0x26')]()[_0x56c6('0x25')](function(){_0x17dd94[_0x56c6('0x1b')](0xcc)[_0x56c6('0x1a')]();});}};}function handleEntityNotFound(_0x207f05,_0x50d7ee){return function(_0x4be5df){if(!_0x4be5df){_0x207f05[_0x56c6('0x19')](0x194);}return _0x4be5df;};}function handleError(_0x44164c,_0x5cb361){_0x5cb361=_0x5cb361||0x1f4;return function(_0x33f95e){logger['error'](_0x33f95e[_0x56c6('0x27')]);if(_0x33f95e['name']){delete _0x33f95e[_0x56c6('0x28')];}_0x44164c['status'](_0x5cb361)[_0x56c6('0x29')](_0x33f95e);};}exports[_0x56c6('0x2a')]=function(_0x24fb02,_0x2e6b07){var _0x1acdcf={},_0x67fec3={},_0x14094b={'count':0x0,'rows':[]};var _0x3938d4=_[_0x56c6('0x2b')](db[_0x56c6('0x2c')][_0x56c6('0x2d')],function(_0x492d80){return{'name':_0x492d80[_0x56c6('0x2e')],'type':_0x492d80[_0x56c6('0x2f')]['key']};});_0x67fec3['model']=_[_0x56c6('0x2b')](_0x3938d4,'name');_0x67fec3[_0x56c6('0x30')]=_['keys'](_0x24fb02[_0x56c6('0x30')]);_0x67fec3[_0x56c6('0x31')]=_[_0x56c6('0x32')](_0x67fec3['model'],_0x67fec3[_0x56c6('0x30')]);_0x1acdcf[_0x56c6('0x33')]=_[_0x56c6('0x32')](_0x67fec3[_0x56c6('0x34')],qs[_0x56c6('0x35')](_0x24fb02[_0x56c6('0x30')][_0x56c6('0x35')]));_0x1acdcf[_0x56c6('0x33')]=_0x1acdcf[_0x56c6('0x33')][_0x56c6('0x36')]?_0x1acdcf['attributes']:_0x67fec3[_0x56c6('0x34')];if(!_0x24fb02[_0x56c6('0x30')]['hasOwnProperty'](_0x56c6('0x37'))){_0x1acdcf[_0x56c6('0x1f')]=qs[_0x56c6('0x1f')](_0x24fb02[_0x56c6('0x30')][_0x56c6('0x1f')]);_0x1acdcf[_0x56c6('0x1e')]=qs[_0x56c6('0x1e')](_0x24fb02['query'][_0x56c6('0x1e')]);}_0x1acdcf[_0x56c6('0x38')]=qs[_0x56c6('0x39')](_0x24fb02[_0x56c6('0x30')][_0x56c6('0x39')]);_0x1acdcf[_0x56c6('0x3a')]=qs[_0x56c6('0x31')](_['pick'](_0x24fb02['query'],_0x67fec3[_0x56c6('0x31')]),_0x3938d4);if(_0x24fb02[_0x56c6('0x30')][_0x56c6('0x3b')]){_0x1acdcf[_0x56c6('0x3a')]=_[_0x56c6('0x3c')](_0x1acdcf[_0x56c6('0x3a')],{'$or':_[_0x56c6('0x2b')](_0x3938d4,function(_0xbc92e){if(_0xbc92e[_0x56c6('0x2f')]!==_0x56c6('0x3d')){var _0x493865={};_0x493865[_0xbc92e[_0x56c6('0x28')]]={'$like':'%'+_0x24fb02[_0x56c6('0x30')][_0x56c6('0x3b')]+'%'};return _0x493865;}})});}_0x1acdcf=_['merge']({},_0x1acdcf,_0x24fb02[_0x56c6('0x3e')]);var _0x74516a={'where':_0x1acdcf[_0x56c6('0x3a')]};return db['DeskField']['count'](_0x74516a)[_0x56c6('0x25')](function(_0x2dea5d){_0x14094b[_0x56c6('0x1d')]=_0x2dea5d;if(_0x24fb02[_0x56c6('0x30')][_0x56c6('0x3f')]){_0x1acdcf[_0x56c6('0x40')]=[{'all':!![]}];}return db[_0x56c6('0x2c')][_0x56c6('0x41')](_0x1acdcf);})[_0x56c6('0x25')](function(_0x295522){_0x14094b[_0x56c6('0x42')]=_0x295522;return _0x14094b;})[_0x56c6('0x25')](respondWithFilteredResult(_0x2e6b07,_0x1acdcf))[_0x56c6('0x43')](handleError(_0x2e6b07,null));};exports['show']=function(_0x217723,_0x851bbe){var _0x1e6b10={'raw':!![],'where':{'id':_0x217723[_0x56c6('0x44')]['id']}},_0x5968ac={};_0x5968ac[_0x56c6('0x34')]=_[_0x56c6('0x45')](db[_0x56c6('0x2c')][_0x56c6('0x2d')]);_0x5968ac[_0x56c6('0x30')]=_[_0x56c6('0x45')](_0x217723[_0x56c6('0x30')]);_0x5968ac['filters']=_[_0x56c6('0x32')](_0x5968ac['model'],_0x5968ac['query']);_0x1e6b10[_0x56c6('0x33')]=_[_0x56c6('0x32')](_0x5968ac[_0x56c6('0x34')],qs[_0x56c6('0x35')](_0x217723['query'][_0x56c6('0x35')]));_0x1e6b10[_0x56c6('0x33')]=_0x1e6b10[_0x56c6('0x33')]['length']?_0x1e6b10[_0x56c6('0x33')]:_0x5968ac[_0x56c6('0x34')];if(_0x217723[_0x56c6('0x30')][_0x56c6('0x3f')]){_0x1e6b10[_0x56c6('0x40')]=[{'all':!![]}];}_0x1e6b10=_['merge']({},_0x1e6b10,_0x217723[_0x56c6('0x3e')]);return db[_0x56c6('0x2c')][_0x56c6('0x46')](_0x1e6b10)[_0x56c6('0x25')](handleEntityNotFound(_0x851bbe,null))[_0x56c6('0x25')](respondWithResult(_0x851bbe,null))[_0x56c6('0x43')](handleError(_0x851bbe,null));};exports[_0x56c6('0x47')]=function(_0x1b6ac4,_0x4529df){return db[_0x56c6('0x2c')][_0x56c6('0x47')](_0x1b6ac4['body'],{})[_0x56c6('0x25')](respondWithResult(_0x4529df,0xc9))['catch'](handleError(_0x4529df,null));};exports[_0x56c6('0x48')]=function(_0x58cfa5,_0x5b449f){if(_0x58cfa5[_0x56c6('0x49')]['id']){delete _0x58cfa5[_0x56c6('0x49')]['id'];}return db[_0x56c6('0x2c')][_0x56c6('0x46')]({'where':{'id':_0x58cfa5[_0x56c6('0x44')]['id']}})[_0x56c6('0x25')](handleEntityNotFound(_0x5b449f,null))[_0x56c6('0x25')](saveUpdates(_0x58cfa5[_0x56c6('0x49')],null))[_0x56c6('0x25')](respondWithResult(_0x5b449f,null))[_0x56c6('0x43')](handleError(_0x5b449f,null));};exports['destroy']=function(_0x2b1ff0,_0x20598b){return db[_0x56c6('0x2c')][_0x56c6('0x46')]({'where':{'id':_0x2b1ff0['params']['id']}})[_0x56c6('0x25')](handleEntityNotFound(_0x20598b,null))[_0x56c6('0x25')](removeEntity(_0x20598b,null))[_0x56c6('0x43')](handleError(_0x20598b,null));};
\ No newline at end of file
index 212a6e7..4edf6ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3fee=['exports','define','DeskField','int_desk_fields','desk_unique_index','idField','FieldId','lodash','util','../../config/logger','api','moment','bluebird','path','../../config/environment'];(function(_0x2f028e,_0x4e3469){var _0x48e1b4=function(_0x3f42b7){while(--_0x3f42b7){_0x2f028e['push'](_0x2f028e['shift']());}};_0x48e1b4(++_0x4e3469);}(_0x3fee,0x115));var _0xe3fe=function(_0x525c7b,_0x488fcc){_0x525c7b=_0x525c7b-0x0;var _0x27b33e=_0x3fee[_0x525c7b];return _0x27b33e;};'use strict';var _=require(_0xe3fe('0x0'));var util=require(_0xe3fe('0x1'));var logger=require(_0xe3fe('0x2'))(_0xe3fe('0x3'));var moment=require(_0xe3fe('0x4'));var BPromise=require(_0xe3fe('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe3fe('0x6'));var rimraf=require('rimraf');var config=require(_0xe3fe('0x7'));var attributes=require('./intDeskField.attributes');module[_0xe3fe('0x8')]=function(_0x3e76d7,_0x2410a5){return _0x3e76d7[_0xe3fe('0x9')](_0xe3fe('0xa'),attributes,{'tableName':_0xe3fe('0xb'),'paranoid':![],'indexes':[{'name':_0xe3fe('0xc'),'fields':[_0xe3fe('0xd'),_0xe3fe('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x8ce6=['util','../../config/logger','api','moment','request-promise','rimraf','../../config/environment','exports','DeskField','int_desk_fields','idField','FieldId'];(function(_0x1e81b5,_0x153b8e){var _0x63fc4f=function(_0x491bc2){while(--_0x491bc2){_0x1e81b5['push'](_0x1e81b5['shift']());}};_0x63fc4f(++_0x153b8e);}(_0x8ce6,0x78));var _0x68ce=function(_0xab35a9,_0x258920){_0xab35a9=_0xab35a9-0x0;var _0x1bf2c8=_0x8ce6[_0xab35a9];return _0x1bf2c8;};'use strict';var _=require('lodash');var util=require(_0x68ce('0x0'));var logger=require(_0x68ce('0x1'))(_0x68ce('0x2'));var moment=require(_0x68ce('0x3'));var BPromise=require('bluebird');var rp=require(_0x68ce('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x68ce('0x5'));var config=require(_0x68ce('0x6'));var attributes=require('./intDeskField.attributes');module[_0x68ce('0x7')]=function(_0xbbf2a1,_0x57b868){return _0xbbf2a1['define'](_0x68ce('0x8'),attributes,{'tableName':_0x68ce('0x9'),'paranoid':![],'indexes':[{'name':'desk_unique_index','fields':[_0x68ce('0xa'),_0x68ce('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index f04083f..d74175a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec0e=['message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','request','DeskField,\x20%s,\x20%s','request\x20sent','debug','DeskField,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xec0e,0x154));var _0xeec0=function(_0xee122e,_0x58ef2e){_0xee122e=_0xee122e-0x0;var _0x34f98a=_0xec0e[_0xee122e];return _0x34f98a;};'use strict';var _=require(_0xeec0('0x0'));var util=require(_0xeec0('0x1'));var moment=require(_0xeec0('0x2'));var BPromise=require(_0xeec0('0x3'));var rs=require(_0xeec0('0x4'));var fs=require('fs');var Redis=require(_0xeec0('0x5'));var db=require(_0xeec0('0x6'))['db'];var utils=require(_0xeec0('0x7'));var logger=require('../../config/logger')(_0xeec0('0x8'));var config=require(_0xeec0('0x9'));var jayson=require(_0xeec0('0xa'));var client=jayson['client'][_0xeec0('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x37134d,_0x5b0010,_0x5c2a97){return new BPromise(function(_0x16e4b4,_0x5b3af1){return client[_0xeec0('0xc')](_0x37134d,_0x5c2a97)['then'](function(_0x3ae931){logger['info'](_0xeec0('0xd'),_0x5b0010,_0xeec0('0xe'));logger[_0xeec0('0xf')](_0xeec0('0x10'),_0x5b0010,_0xeec0('0xe'),JSON[_0xeec0('0x11')](_0x3ae931));if(_0x3ae931[_0xeec0('0x12')]){if(_0x3ae931[_0xeec0('0x12')][_0xeec0('0x13')]===0x1f4){logger[_0xeec0('0x12')](_0xeec0('0xd'),_0x5b0010,_0x3ae931[_0xeec0('0x12')][_0xeec0('0x14')]);return _0x5b3af1(_0x3ae931[_0xeec0('0x12')]['message']);}logger[_0xeec0('0x12')](_0xeec0('0xd'),_0x5b0010,_0x3ae931['error'][_0xeec0('0x14')]);return _0x16e4b4(_0x3ae931[_0xeec0('0x12')][_0xeec0('0x14')]);}else{logger[_0xeec0('0x15')](_0xeec0('0xd'),_0x5b0010,_0xeec0('0xe'));_0x16e4b4(_0x3ae931[_0xeec0('0x16')][_0xeec0('0x14')]);}})[_0xeec0('0x17')](function(_0x4d92ee){logger['error'](_0xeec0('0xd'),_0x5b0010,_0x4d92ee);_0x5b3af1(_0x4d92ee);});});}
\ No newline at end of file
+var _0x076a=['message','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','DeskField,\x20%s,\x20%s','request\x20sent','debug','error'];(function(_0x290eed,_0x40aa8c){var _0x331b03=function(_0x5b2cf6){while(--_0x5b2cf6){_0x290eed['push'](_0x290eed['shift']());}};_0x331b03(++_0x40aa8c);}(_0x076a,0x9a));var _0xa076=function(_0x264ca3,_0x65b645){_0x264ca3=_0x264ca3-0x0;var _0x156d1e=_0x076a[_0x264ca3];return _0x156d1e;};'use strict';var _=require(_0xa076('0x0'));var util=require(_0xa076('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xa076('0x2'));var fs=require('fs');var Redis=require(_0xa076('0x3'));var db=require(_0xa076('0x4'))['db'];var utils=require(_0xa076('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0xa076('0x6'));var jayson=require(_0xa076('0x7'));var client=jayson[_0xa076('0x8')][_0xa076('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x50af0c,_0x38f8a3,_0x291786){return new BPromise(function(_0x1d19d1,_0x375e24){return client[_0xa076('0xa')](_0x50af0c,_0x291786)[_0xa076('0xb')](function(_0x37c172){logger[_0xa076('0xc')](_0xa076('0xd'),_0x38f8a3,_0xa076('0xe'));logger[_0xa076('0xf')]('DeskField,\x20%s,\x20%s,\x20%s',_0x38f8a3,'request\x20sent',JSON['stringify'](_0x37c172));if(_0x37c172[_0xa076('0x10')]){if(_0x37c172[_0xa076('0x10')]['code']===0x1f4){logger['error'](_0xa076('0xd'),_0x38f8a3,_0x37c172[_0xa076('0x10')][_0xa076('0x11')]);return _0x375e24(_0x37c172[_0xa076('0x10')][_0xa076('0x11')]);}logger[_0xa076('0x10')](_0xa076('0xd'),_0x38f8a3,_0x37c172[_0xa076('0x10')]['message']);return _0x1d19d1(_0x37c172['error'][_0xa076('0x11')]);}else{logger[_0xa076('0xc')]('DeskField,\x20%s,\x20%s',_0x38f8a3,_0xa076('0xe'));_0x1d19d1(_0x37c172['result']['message']);}})[_0xa076('0x12')](function(_0xa2b84f){logger[_0xa076('0x10')](_0xa076('0xd'),_0x38f8a3,_0xa2b84f);_0x375e24(_0xa2b84f);});});}
\ No newline at end of file
index d1ffdf6..8dfa23c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9593=['getFields','post','create','addConfiguration','put','update','delete','/:id','destroy','multer','util','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Account.controller','get','isAuthenticated','index','show','/:id/configurations','getConfigurations','/:id/fields'];(function(_0x176d14,_0x3984ea){var _0x89522c=function(_0x3aba48){while(--_0x3aba48){_0x176d14['push'](_0x176d14['shift']());}};_0x89522c(++_0x3984ea);}(_0x9593,0x1e9));var _0x3959=function(_0x1deb03,_0xd05ad8){_0x1deb03=_0x1deb03-0x0;var _0x189fe7=_0x9593[_0x1deb03];return _0x189fe7;};'use strict';var multer=require(_0x3959('0x0'));var util=require(_0x3959('0x1'));var path=require('path');var timeout=require(_0x3959('0x2'));var express=require(_0x3959('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x3959('0x4'));var interaction=require(_0x3959('0x5'));var config=require(_0x3959('0x6'));var controller=require(_0x3959('0x7'));router[_0x3959('0x8')]('/',auth[_0x3959('0x9')](),controller[_0x3959('0xa')]);router[_0x3959('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x3959('0xb')]);router[_0x3959('0x8')](_0x3959('0xc'),auth['isAuthenticated'](),controller[_0x3959('0xd')]);router[_0x3959('0x8')](_0x3959('0xe'),auth[_0x3959('0x9')](),controller[_0x3959('0xf')]);router[_0x3959('0x10')]('/',auth[_0x3959('0x9')](),controller[_0x3959('0x11')]);router[_0x3959('0x10')](_0x3959('0xc'),auth['isAuthenticated'](),controller[_0x3959('0x12')]);router[_0x3959('0x13')]('/:id',auth[_0x3959('0x9')](),controller[_0x3959('0x14')]);router[_0x3959('0x15')](_0x3959('0x16'),auth['isAuthenticated'](),controller[_0x3959('0x17')]);module['exports']=router;
\ No newline at end of file
+var _0x549a=['/:id','getConfigurations','/:id/fields','getFields','post','/:id/configurations','addConfiguration','put','update','delete','destroy','exports','multer','util','Router','fs-extra','../../components/interaction/service','./intDynamics365Account.controller','isAuthenticated','index','get'];(function(_0x41de6b,_0x46060c){var _0x8d343c=function(_0x56d057){while(--_0x56d057){_0x41de6b['push'](_0x41de6b['shift']());}};_0x8d343c(++_0x46060c);}(_0x549a,0x75));var _0xa549=function(_0x213908,_0x410ace){_0x213908=_0x213908-0x0;var _0x446eea=_0x549a[_0x213908];return _0x446eea;};'use strict';var multer=require(_0xa549('0x0'));var util=require(_0xa549('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa549('0x2')]();var fs_extra=require(_0xa549('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xa549('0x4'));var config=require('../../config/environment');var controller=require(_0xa549('0x5'));router['get']('/',auth[_0xa549('0x6')](),controller[_0xa549('0x7')]);router[_0xa549('0x8')](_0xa549('0x9'),auth['isAuthenticated'](),controller['show']);router['get']('/:id/configurations',auth[_0xa549('0x6')](),controller[_0xa549('0xa')]);router['get'](_0xa549('0xb'),auth[_0xa549('0x6')](),controller[_0xa549('0xc')]);router['post']('/',auth[_0xa549('0x6')](),controller['create']);router[_0xa549('0xd')](_0xa549('0xe'),auth[_0xa549('0x6')](),controller[_0xa549('0xf')]);router[_0xa549('0x10')](_0xa549('0x9'),auth[_0xa549('0x6')](),controller[_0xa549('0x11')]);router[_0xa549('0x12')](_0xa549('0x9'),auth[_0xa549('0x6')](),controller[_0xa549('0x13')]);module[_0xa549('0x14')]=router;
\ No newline at end of file
index d2527e3..4bed5b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x236d=['STRING','BOOLEAN','sequelize','exports'];(function(_0x4e947f,_0x4d7acb){var _0x2cf053=function(_0x2f1019){while(--_0x2f1019){_0x4e947f['push'](_0x4e947f['shift']());}};_0x2cf053(++_0x4d7acb);}(_0x236d,0x7e));var _0xd236=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x236d[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xd236('0x0'));module[_0xd236('0x1')]={'name':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xd236('0x2')]},'password':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0xd236('0x2')]},'tenantId':{'type':Sequelize[_0xd236('0x2')]},'clientId':{'type':Sequelize[_0xd236('0x2')]},'clientSecret':{'type':Sequelize[_0xd236('0x2')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize['STRING']},'modernAuthentication':{'type':Sequelize[_0xd236('0x3')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x7c1a=['sequelize','exports','STRING'];(function(_0x1e7701,_0x13fd0f){var _0x3ab707=function(_0x3c5242){while(--_0x3c5242){_0x1e7701['push'](_0x1e7701['shift']());}};_0x3ab707(++_0x13fd0f);}(_0x7c1a,0x159));var _0xa7c1=function(_0x16fef1,_0x5e80f1){_0x16fef1=_0x16fef1-0x0;var _0x2f0122=_0x7c1a[_0x16fef1];return _0x2f0122;};'use strict';var Sequelize=require(_0xa7c1('0x0'));module[_0xa7c1('0x1')]={'name':{'type':Sequelize[_0xa7c1('0x2')]},'username':{'type':Sequelize[_0xa7c1('0x2')]},'password':{'type':Sequelize[_0xa7c1('0x2')]},'remoteUri':{'type':Sequelize[_0xa7c1('0x2')]},'tenantId':{'type':Sequelize['STRING']},'clientId':{'type':Sequelize[_0xa7c1('0x2')]},'clientSecret':{'type':Sequelize[_0xa7c1('0x2')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0xa7c1('0x2')]},'modernAuthentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index 73f3355..83a589f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2e7=['owneridname','owneridtype','owneridyominame','parentcaseidname','primarycontactidname','primarycontactidyominame','prioritycodename','productidname','productserialnumber','resolveby','resolvebykpiidname','responseby','responsiblecontactidyominame','sentimentvalue','slaname','socialprofileidname','statuscode','subjectidname','ticketnumber','timezoneruleversionnumber','transactioncurrencyidname','traversedpath','concat','username','password','remoteUri','tenantId','clientId','CloudProvider','data5','data7','modernAuthentication','POST','https://login.microsoftonline.com/','/oauth2/token','access_token','GET','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','Bearer\x20','value','MetadataId','EntityDefinitions(','Attributes','includes','LogicalName','@odata.type','push','all','isNil','substring','lastIndexOf','BooleanAttributeMetadata','forEach','StringAttributeMetadata','DoubleAttributeMetadata','BigIntAttributeMetadata','IntegerAttributeMetadata','MemoAttributeMetadata','DateTimeAttributeMetadata','StateAttributeMetadata','DecimalAttributeMetadata','test','statusCode','Wrong\x20credentials',')/Attributes(','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','4.0','OptionSet','Options','Label','UserLocalizedLabel','Value','DisplayName','TrueOption','true','FalseOption','false',')/Microsoft.Dynamics.CRM.','?$select=DisplayName,LogicalName','request-promise','util','lodash','../../components/parsers/qs','../../config/logger','api','../../components/integrations/configuration','json','limit','undefined','count','offset','status','set','Content-Range','then','destroy','sendStatus','error','stack','name','send','index','Dynamics365Account','rawAttributes','fieldName','key','model','map','query','keys','filters','attributes','intersection','fields','hasOwnProperty','order','where','pick','filter','merge','type','VIRTUAL','includeAll','findAll','rows','catch','show','params','length','include','options','create','update','body','find','getConfigurations','findOne','Dynamics365Configuration','sort','nolimit','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','Dynamics365Field','format','ticketType','incident','Incident','PhoneCall','title','description','customerid','caseorigincode','subject','regardingobjectid','directioncode','phonecall_activity_parties','accountidname','accountidyominame','actualserviceunits','billedserviceunits','contactidname','contactidyominame','contractdetailidname','contractidname','createdbyexternalpartyname','createdbyexternalpartyyominame','createdbyname','createdon','createdonbehalfbyname','customeridname','customeridtype','customeridyominame','emailaddress','entityimage_timestamp','entityimage_url','firstresponsebykpiidname','followupby','importsequencenumber','influencescore','kbarticleidname','lastonholdtime','masteridname','modifiedbyexternalpartyname','modifiedbyname','modifiedon','modifiedonbehalfbyname','modifiedonbehalfbyyominame','msdyn_incidenttypename','msdyn_iotalertname','overriddencreatedon'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0xb2e7,0x111));var _0x7b2e=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0xb2e7[_0x4b369d];return _0x571a98;};'use strict';var rp=require(_0x7b2e('0x0'));var util=require(_0x7b2e('0x1'));var _=require(_0x7b2e('0x2'));var qs=require(_0x7b2e('0x3'));var logger=require(_0x7b2e('0x4'))(_0x7b2e('0x5'));var db=require('../../mysqldb')['db'];var integrations=require(_0x7b2e('0x6'));function respondWithResult(_0x8a62fe,_0x256569){_0x256569=_0x256569||0xc8;return function(_0x2a008e){if(_0x2a008e){return _0x8a62fe['status'](_0x256569)[_0x7b2e('0x7')](_0x2a008e);}};}function respondWithFilteredResult(_0x3e5014,_0x141496){return function(_0x560a3e){if(_0x560a3e){var _0x3e4785=typeof _0x141496['offset']==='undefined'&&typeof _0x141496[_0x7b2e('0x8')]===_0x7b2e('0x9');var _0x80ffce=_0x560a3e[_0x7b2e('0xa')];var _0xd0dbbe=_0x3e4785?0x0:_0x141496[_0x7b2e('0xb')];var _0x1c760d=_0x3e4785?_0x560a3e[_0x7b2e('0xa')]:_0x141496[_0x7b2e('0xb')]+_0x141496['limit'];var _0x447dea;if(_0x1c760d>=_0x80ffce){_0x1c760d=_0x80ffce;_0x447dea=0xc8;}else{_0x447dea=0xce;}_0x3e5014[_0x7b2e('0xc')](_0x447dea);return _0x3e5014[_0x7b2e('0xd')](_0x7b2e('0xe'),_0xd0dbbe+'-'+_0x1c760d+'/'+_0x80ffce)[_0x7b2e('0x7')](_0x560a3e);}return null;};}function saveUpdates(_0x29075d){return function(_0xe79216){if(_0xe79216){return _0xe79216['update'](_0x29075d)[_0x7b2e('0xf')](function(_0x214e57){return _0x214e57;});}return null;};}function removeEntity(_0x1c1286){return function(_0x3ceef2){if(_0x3ceef2){return _0x3ceef2[_0x7b2e('0x10')]()[_0x7b2e('0xf')](function(){_0x1c1286[_0x7b2e('0xc')](0xcc)['end']();});}};}function handleEntityNotFound(_0x53a7a1){return function(_0x4ee366){if(!_0x4ee366){_0x53a7a1[_0x7b2e('0x11')](0x194);}return _0x4ee366;};}function handleError(_0x340384,_0xaafc83){_0xaafc83=_0xaafc83||0x1f4;return function(_0x4791e5){logger[_0x7b2e('0x12')](_0x4791e5[_0x7b2e('0x13')]);if(_0x4791e5[_0x7b2e('0x14')]){delete _0x4791e5[_0x7b2e('0x14')];}_0x340384[_0x7b2e('0xc')](_0xaafc83)[_0x7b2e('0x15')](_0x4791e5);};}exports[_0x7b2e('0x16')]=function(_0x46c2fd,_0x362e47){var _0x57bdd5={},_0x57abcb={},_0x118292={'count':0x0,'rows':[]};var _0x1bf0b7=_['map'](db[_0x7b2e('0x17')][_0x7b2e('0x18')],function(_0x1670f4){return{'name':_0x1670f4[_0x7b2e('0x19')],'type':_0x1670f4['type'][_0x7b2e('0x1a')]};});_0x57abcb[_0x7b2e('0x1b')]=_[_0x7b2e('0x1c')](_0x1bf0b7,_0x7b2e('0x14'));_0x57abcb[_0x7b2e('0x1d')]=_[_0x7b2e('0x1e')](_0x46c2fd[_0x7b2e('0x1d')]);_0x57abcb[_0x7b2e('0x1f')]=_['intersection'](_0x57abcb[_0x7b2e('0x1b')],_0x57abcb[_0x7b2e('0x1d')]);_0x57bdd5[_0x7b2e('0x20')]=_[_0x7b2e('0x21')](_0x57abcb[_0x7b2e('0x1b')],qs['fields'](_0x46c2fd['query'][_0x7b2e('0x22')]));_0x57bdd5[_0x7b2e('0x20')]=_0x57bdd5[_0x7b2e('0x20')]['length']?_0x57bdd5[_0x7b2e('0x20')]:_0x57abcb[_0x7b2e('0x1b')];if(!_0x46c2fd['query'][_0x7b2e('0x23')]('nolimit')){_0x57bdd5['limit']=qs['limit'](_0x46c2fd['query']['limit']);_0x57bdd5['offset']=qs[_0x7b2e('0xb')](_0x46c2fd['query'][_0x7b2e('0xb')]);}_0x57bdd5[_0x7b2e('0x24')]=qs['sort'](_0x46c2fd['query']['sort']);_0x57bdd5[_0x7b2e('0x25')]=qs[_0x7b2e('0x1f')](_[_0x7b2e('0x26')](_0x46c2fd['query'],_0x57abcb[_0x7b2e('0x1f')]),_0x1bf0b7);if(_0x46c2fd['query'][_0x7b2e('0x27')]){_0x57bdd5[_0x7b2e('0x25')]=_[_0x7b2e('0x28')](_0x57bdd5[_0x7b2e('0x25')],{'$or':_['map'](_0x1bf0b7,function(_0x4fc11a){if(_0x4fc11a[_0x7b2e('0x29')]!==_0x7b2e('0x2a')){var _0x1f879a={};_0x1f879a[_0x4fc11a[_0x7b2e('0x14')]]={'$like':'%'+_0x46c2fd[_0x7b2e('0x1d')][_0x7b2e('0x27')]+'%'};return _0x1f879a;}})});}_0x57bdd5=_[_0x7b2e('0x28')]({},_0x57bdd5,_0x46c2fd['options']);var _0x34b472={'where':_0x57bdd5[_0x7b2e('0x25')]};return db['Dynamics365Account'][_0x7b2e('0xa')](_0x34b472)[_0x7b2e('0xf')](function(_0x2eae95){_0x118292[_0x7b2e('0xa')]=_0x2eae95;if(_0x46c2fd[_0x7b2e('0x1d')][_0x7b2e('0x2b')]){_0x57bdd5['include']=[{'all':!![]}];}return db['Dynamics365Account'][_0x7b2e('0x2c')](_0x57bdd5);})[_0x7b2e('0xf')](function(_0x225bee){_0x118292[_0x7b2e('0x2d')]=_0x225bee;return _0x118292;})[_0x7b2e('0xf')](respondWithFilteredResult(_0x362e47,_0x57bdd5))[_0x7b2e('0x2e')](handleError(_0x362e47,null));};exports[_0x7b2e('0x2f')]=function(_0xdf99ef,_0x1912e6){var _0x4988e6={'raw':![],'where':{'id':_0xdf99ef[_0x7b2e('0x30')]['id']}},_0x1c28c2={};_0x1c28c2[_0x7b2e('0x1b')]=_[_0x7b2e('0x1e')](db[_0x7b2e('0x17')][_0x7b2e('0x18')]);_0x1c28c2[_0x7b2e('0x1d')]=_[_0x7b2e('0x1e')](_0xdf99ef[_0x7b2e('0x1d')]);_0x1c28c2[_0x7b2e('0x1f')]=_[_0x7b2e('0x21')](_0x1c28c2[_0x7b2e('0x1b')],_0x1c28c2[_0x7b2e('0x1d')]);_0x4988e6['attributes']=_['intersection'](_0x1c28c2[_0x7b2e('0x1b')],qs[_0x7b2e('0x22')](_0xdf99ef[_0x7b2e('0x1d')]['fields']));_0x4988e6[_0x7b2e('0x20')]=_0x4988e6[_0x7b2e('0x20')][_0x7b2e('0x31')]?_0x4988e6[_0x7b2e('0x20')]:_0x1c28c2[_0x7b2e('0x1b')];if(_0xdf99ef[_0x7b2e('0x1d')]['includeAll']){_0x4988e6[_0x7b2e('0x32')]=[{'all':!![]}];}_0x4988e6=_[_0x7b2e('0x28')]({},_0x4988e6,_0xdf99ef[_0x7b2e('0x33')]);return db[_0x7b2e('0x17')]['find'](_0x4988e6)[_0x7b2e('0xf')](handleEntityNotFound(_0x1912e6,null))['then'](respondWithResult(_0x1912e6,null))[_0x7b2e('0x2e')](handleError(_0x1912e6,null));};exports[_0x7b2e('0x34')]=function(_0x59f564,_0x180227){return db[_0x7b2e('0x17')][_0x7b2e('0x34')](_0x59f564['body'],{})[_0x7b2e('0xf')](respondWithResult(_0x180227,0xc9))[_0x7b2e('0x2e')](handleError(_0x180227,null));};exports[_0x7b2e('0x35')]=function(_0x32f7d9,_0xdb84f1){if(_0x32f7d9[_0x7b2e('0x36')]['id']){delete _0x32f7d9['body']['id'];}return db[_0x7b2e('0x17')]['find']({'where':{'id':_0x32f7d9['params']['id']}})[_0x7b2e('0xf')](handleEntityNotFound(_0xdb84f1,null))['then'](saveUpdates(_0x32f7d9['body'],null))[_0x7b2e('0xf')](respondWithResult(_0xdb84f1,null))[_0x7b2e('0x2e')](handleError(_0xdb84f1,null));};exports['destroy']=function(_0x242230,_0x30b880){return db['Dynamics365Account'][_0x7b2e('0x37')]({'where':{'id':_0x242230[_0x7b2e('0x30')]['id']}})[_0x7b2e('0xf')](handleEntityNotFound(_0x30b880,null))[_0x7b2e('0xf')](removeEntity(_0x30b880,null))[_0x7b2e('0x2e')](handleError(_0x30b880,null));};exports[_0x7b2e('0x38')]=function(_0x4bcf13,_0x15fdb4){var _0x165c7f={};var _0x5bfec7={};var _0x13120a;var _0x2ccb78;return db[_0x7b2e('0x17')][_0x7b2e('0x39')]({'where':{'id':_0x4bcf13[_0x7b2e('0x30')]['id']}})['then'](handleEntityNotFound(_0x15fdb4,null))['then'](function(_0xa79996){if(_0xa79996){_0x13120a=_0xa79996;_0x5bfec7['model']=_[_0x7b2e('0x1e')](db[_0x7b2e('0x3a')][_0x7b2e('0x18')]);_0x5bfec7[_0x7b2e('0x1d')]=_[_0x7b2e('0x1e')](_0x4bcf13[_0x7b2e('0x1d')]);_0x5bfec7['filters']=_[_0x7b2e('0x21')](_0x5bfec7[_0x7b2e('0x1b')],_0x5bfec7[_0x7b2e('0x1d')]);_0x165c7f[_0x7b2e('0x20')]=_[_0x7b2e('0x21')](_0x5bfec7['model'],qs[_0x7b2e('0x22')](_0x4bcf13[_0x7b2e('0x1d')][_0x7b2e('0x22')]));_0x165c7f['attributes']=_0x165c7f[_0x7b2e('0x20')][_0x7b2e('0x31')]?_0x165c7f[_0x7b2e('0x20')]:_0x5bfec7[_0x7b2e('0x1b')];_0x165c7f[_0x7b2e('0x24')]=qs[_0x7b2e('0x3b')](_0x4bcf13['query'][_0x7b2e('0x3b')]);_0x165c7f['where']=qs[_0x7b2e('0x1f')](_[_0x7b2e('0x26')](_0x4bcf13['query'],_0x5bfec7['filters']));if(_0x4bcf13[_0x7b2e('0x1d')][_0x7b2e('0x27')]){_0x165c7f[_0x7b2e('0x25')]=_[_0x7b2e('0x28')](_0x165c7f['where'],{'$or':_[_0x7b2e('0x1c')](_0x165c7f['attributes'],function(_0x3a3586){var _0x3e4ef0={};_0x3e4ef0[_0x3a3586]={'$like':'%'+_0x4bcf13[_0x7b2e('0x1d')][_0x7b2e('0x27')]+'%'};return _0x3e4ef0;})});}_0x165c7f=_[_0x7b2e('0x28')]({},_0x165c7f,_0x4bcf13[_0x7b2e('0x33')]);return _0x13120a['getConfigurations'](_0x165c7f);}})[_0x7b2e('0xf')](function(_0x2a6b7a){if(_0x2a6b7a){_0x2ccb78=_0x2a6b7a[_0x7b2e('0x31')];if(!_0x4bcf13[_0x7b2e('0x1d')]['hasOwnProperty'](_0x7b2e('0x3c'))){_0x165c7f[_0x7b2e('0x8')]=qs['limit'](_0x4bcf13[_0x7b2e('0x1d')][_0x7b2e('0x8')]);_0x165c7f['offset']=qs[_0x7b2e('0xb')](_0x4bcf13[_0x7b2e('0x1d')][_0x7b2e('0xb')]);}return _0x13120a[_0x7b2e('0x38')](_0x165c7f);}})[_0x7b2e('0xf')](function(_0x441524){if(_0x441524){return _0x441524?{'count':_0x2ccb78,'rows':_0x441524}:null;}})[_0x7b2e('0xf')](respondWithResult(_0x15fdb4,null))[_0x7b2e('0x2e')](handleError(_0x15fdb4,null));};exports['addConfiguration']=function(_0x37610e,_0x5e6fff){if(_0x37610e[_0x7b2e('0x36')]['id']){delete _0x37610e[_0x7b2e('0x36')]['id'];}return db[_0x7b2e('0x17')][_0x7b2e('0x39')]({'where':{'id':_0x37610e['params']['id']}})[_0x7b2e('0xf')](handleEntityNotFound(_0x5e6fff,null))[_0x7b2e('0xf')](function(_0x33e841){if(_0x33e841){_0x37610e[_0x7b2e('0x36')][_0x7b2e('0x3d')]=_0x33e841['id'];_0x37610e['body'][_0x7b2e('0x3e')]=integrations[_0x7b2e('0x3f')](_0x37610e[_0x7b2e('0x36')][_0x7b2e('0x40')],_0x37610e[_0x7b2e('0x36')][_0x7b2e('0x29')]);_0x37610e[_0x7b2e('0x36')][_0x7b2e('0x41')]=integrations[_0x7b2e('0x42')](_0x37610e[_0x7b2e('0x36')]['channel'],_0x37610e[_0x7b2e('0x36')][_0x7b2e('0x29')]);return db['Dynamics365Configuration'][_0x7b2e('0x34')](_0x37610e[_0x7b2e('0x36')],{'include':[{'model':db[_0x7b2e('0x43')],'as':_0x7b2e('0x3e')},{'model':db[_0x7b2e('0x43')],'as':_0x7b2e('0x41')}]});}return null;})['then'](respondWithResult(_0x5e6fff,null))[_0x7b2e('0x2e')](handleError(_0x5e6fff,null));};function sanitizeRemoteUri(_0x31ff0a){var _0x767894=_0x31ff0a['slice'](-0x1);if(_0x767894==='/')return _0x31ff0a['substring'](0x0,_0x31ff0a['lastIndexOf'](_0x767894));return _0x31ff0a;}function getWebApiUrl(_0x3a2e77){return util[_0x7b2e('0x44')]('%s/api/data/v9.0/',_0x3a2e77);}exports['getFields']=function(_0x510b04,_0x2bb221){var _0x4f356b=_0x510b04[_0x7b2e('0x1d')][_0x7b2e('0x45')];var _0x1ec024=_0x4f356b===_0x7b2e('0x46')?_0x7b2e('0x47'):_0x7b2e('0x48');var _0x10c650='';var _0x581b0d='';var _0x1d6c8f='';var _0x4fa658='';var _0x1129ad='';var _0x3d8840='';var _0x303146='';var _0x1ff5e7='';var _0x37b022=[_0x7b2e('0x49'),_0x7b2e('0x4a'),_0x7b2e('0x4b'),'ownerid',_0x7b2e('0x4c'),_0x7b2e('0x4d'),'phonenumber',_0x7b2e('0x4e'),_0x7b2e('0x4f'),_0x7b2e('0x50')];var _0x11f00d=[_0x7b2e('0x51'),_0x7b2e('0x52'),_0x7b2e('0x53'),_0x7b2e('0x54'),_0x7b2e('0x55'),_0x7b2e('0x56'),_0x7b2e('0x57'),_0x7b2e('0x58'),_0x7b2e('0x59'),_0x7b2e('0x5a'),_0x7b2e('0x5b'),'createdbyyominame',_0x7b2e('0x5c'),_0x7b2e('0x5d'),'createdonbehalfbyyominame',_0x7b2e('0x5e'),_0x7b2e('0x5f'),_0x7b2e('0x60'),_0x7b2e('0x61'),'entitlementidname',_0x7b2e('0x62'),_0x7b2e('0x63'),'escalatedon','exchangerate',_0x7b2e('0x64'),_0x7b2e('0x65'),_0x7b2e('0x66'),_0x7b2e('0x67'),_0x7b2e('0x68'),_0x7b2e('0x69'),_0x7b2e('0x6a'),_0x7b2e('0x6b'),'modifiedbyexternalpartyyominame',_0x7b2e('0x6c'),'modifiedbyyominame',_0x7b2e('0x6d'),_0x7b2e('0x6e'),_0x7b2e('0x6f'),_0x7b2e('0x70'),_0x7b2e('0x71'),'numberofchildincidents','onholdtime',_0x7b2e('0x72'),_0x7b2e('0x73'),_0x7b2e('0x74'),_0x7b2e('0x75'),_0x7b2e('0x76'),_0x7b2e('0x77'),_0x7b2e('0x78'),_0x7b2e('0x79'),_0x7b2e('0x7a'),_0x7b2e('0x7b'),_0x7b2e('0x7c'),_0x7b2e('0x7d'),_0x7b2e('0x7e'),'responsiblecontactidname',_0x7b2e('0x7f'),_0x7b2e('0x80'),'slainvokedidname',_0x7b2e('0x81'),_0x7b2e('0x82'),'statecode',_0x7b2e('0x83'),_0x7b2e('0x84'),_0x7b2e('0x85'),_0x7b2e('0x86'),_0x7b2e('0x87'),_0x7b2e('0x88'),'utcconversiontimezonecode','versionnumber'];var _0x338853=_0x37b022[_0x7b2e('0x89')](_0x11f00d);return db['Dynamics365Account'][_0x7b2e('0x39')]({'where':{'id':_0x510b04[_0x7b2e('0x30')]['id']},'attributes':['id',_0x7b2e('0x8a'),_0x7b2e('0x8b'),_0x7b2e('0x8c'),_0x7b2e('0x8d'),_0x7b2e('0x8e'),'clientSecret','modernAuthentication'],'include':[{'model':db[_0x7b2e('0x8f')],'as':'CloudProvider','attributes':['id',_0x7b2e('0x90'),_0x7b2e('0x91')]}]})[_0x7b2e('0xf')](handleEntityNotFound(_0x2bb221,null))[_0x7b2e('0xf')](function(_0x3b5ebd){if(_0x3b5ebd){if(_0x3b5ebd[_0x7b2e('0x92')]){_0x3b5ebd['access_token']=_0x3b5ebd[_0x7b2e('0x8f')][_0x7b2e('0x90')];_0x1ff5e7=sanitizeRemoteUri(_0x3b5ebd[_0x7b2e('0x8f')]['data7']);_0x303146=getWebApiUrl(_0x1ff5e7);return _0x3b5ebd;}_0x1ff5e7=sanitizeRemoteUri(_0x3b5ebd['remoteUri']);_0x303146=getWebApiUrl(_0x1ff5e7);var _0x269e72={'method':_0x7b2e('0x93'),'uri':_0x7b2e('0x94')+_0x3b5ebd['tenantId']+_0x7b2e('0x95'),'form':{'client_id':_0x3b5ebd[_0x7b2e('0x8e')],'resource':_0x1ff5e7,'username':_0x3b5ebd['username'],'password':_0x3b5ebd[_0x7b2e('0x8b')],'grant_type':_0x7b2e('0x8b'),'client_secret':_0x3b5ebd['clientSecret']},'json':!![]};return rp(_0x269e72);}})['then'](function(_0x53046c){_0x3d8840=_0x53046c[_0x7b2e('0x96')];var _0x5a0e73={'method':_0x7b2e('0x97'),'uri':encodeURI(_0x303146+_0x7b2e('0x98')+_0x1ec024+'\x27'),'headers':{'Authorization':_0x7b2e('0x99')+_0x3d8840,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x5a0e73);})['then'](function(_0x28c66b){var _0x32746d=_0x28c66b[_0x7b2e('0x9a')][0x0];var _0x5e9180=_0x32746d[_0x7b2e('0x9b')];var _0xefa53a={'method':'GET','uri':_0x303146+_0x7b2e('0x9c')+_0x5e9180+')?$select=LogicalName&$expand=Attributes($select=LogicalName)','headers':{'Authorization':_0x7b2e('0x99')+_0x3d8840,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0xefa53a);})[_0x7b2e('0xf')](function(_0x35231f){_0x10c650=_0x35231f;_0x581b0d=_0x10c650[_0x7b2e('0x9d')];_0x581b0d=_['remove'](_0x581b0d,function(_0x5dc4cc){return!_0x338853[_0x7b2e('0x9e')](_0x5dc4cc[_0x7b2e('0x9f')]);});var _0x354a39=[];var _0x23dda1=[];_0x581b0d['forEach'](function(_0x16156a){if(_0x16156a[_0x7b2e('0xa0')]){var _0x49a90f=_0x16156a[_0x7b2e('0xa0')]['substring'](_0x16156a[_0x7b2e('0xa0')]['lastIndexOf']('.')+0x1);if(_0x49a90f==='PicklistAttributeMetadata'){_0x354a39[_0x7b2e('0xa1')](getSelectList(_0x303146,_0x4f356b,_0x23dda1,_0x10c650[_0x7b2e('0x9b')],_0x16156a[_0x7b2e('0x9b')],_0x3d8840));}}});return Promise[_0x7b2e('0xa2')](_0x354a39);})[_0x7b2e('0xf')](function(_0x218f64){_0x1d6c8f=_0x218f64[0x0];var _0x5441f6=[];var _0x43f5f6=[];_0x581b0d['forEach'](function(_0x10ac46){if(!_[_0x7b2e('0xa3')](_0x10ac46[_0x7b2e('0xa0')])){var _0x39a84a=_0x10ac46[_0x7b2e('0xa0')][_0x7b2e('0xa4')](_0x10ac46['@odata.type'][_0x7b2e('0xa5')]('.')+0x1);if(_0x39a84a===_0x7b2e('0xa6')){_0x5441f6[_0x7b2e('0xa1')](getBooleanList(_0x303146,_0x4f356b,_0x43f5f6,_0x10c650[_0x7b2e('0x9b')],_0x10ac46[_0x7b2e('0x9b')],_0x3d8840));}}});return Promise[_0x7b2e('0xa2')](_0x5441f6);})[_0x7b2e('0xf')](function(_0x21b424){_0x4fa658=_0x21b424[0x0];var _0x4a8356=[];var _0x43bb5e=[];_0x581b0d[_0x7b2e('0xa7')](function(_0x4ff789){if(_0x4ff789[_0x7b2e('0xa0')]){var _0xbb0f70=_0x4ff789[_0x7b2e('0xa0')][_0x7b2e('0xa4')](_0x4ff789['@odata.type'][_0x7b2e('0xa5')]('.')+0x1);if(_0xbb0f70===_0x7b2e('0xa8')||_0xbb0f70===_0x7b2e('0xa9')||_0xbb0f70===_0x7b2e('0xaa')||_0xbb0f70===_0x7b2e('0xab')||_0xbb0f70===_0x7b2e('0xac')||_0xbb0f70===_0x7b2e('0xad')||_0xbb0f70==='StatusAttributeMetadata'||_0xbb0f70==='EntityNameAttributeMetadata'||_0xbb0f70===_0x7b2e('0xae')||_0xbb0f70===_0x7b2e('0xaf')){_0x4a8356[_0x7b2e('0xa1')](getInputList(_0x303146,_0x4f356b,_0xbb0f70,_0x43bb5e,_0x10c650[_0x7b2e('0x9b')],_0x4ff789['MetadataId'],_0x3d8840));}}});return Promise[_0x7b2e('0xa2')](_0x4a8356);})['then'](function(_0x50d35b){_0x1129ad=_0x50d35b[0x0];var _0x3a71ee=_0x1d6c8f['concat'](_0x4fa658)[_0x7b2e('0x89')](_0x1129ad);var _0x4b190a={'count':_0x3a71ee['length'],'rows':_0x3a71ee};return _0x4b190a;})[_0x7b2e('0xf')](respondWithResult(_0x2bb221,null))[_0x7b2e('0x2e')](function(_0x3b4b9b){var _0x583773=_0x510b04[_0x7b2e('0x1d')][_0x7b2e('0xb0')]?0x1f4:_0x3b4b9b[_0x7b2e('0xb1')]||0x1f4;logger[_0x7b2e('0x12')](_0x3b4b9b[_0x7b2e('0x13')]);delete _0x3b4b9b[_0x7b2e('0x14')];if(_0x583773===0x191){_0x583773=0x190;}_0x2bb221['status'](_0x583773)['send'](_0x510b04[_0x7b2e('0x1d')][_0x7b2e('0xb0')]?{'message':_0x7b2e('0xb2'),'statusCode':_0x3b4b9b[_0x7b2e('0xb1')]}:_0x3b4b9b);});};function getSelectList(_0x59c270,_0x5ce2eb,_0xa248cb,_0x3100f8,_0x3babf0,_0x54d41a){var _0x48bb5c={'method':_0x7b2e('0x97'),'uri':_0x59c270+_0x7b2e('0x9c')+_0x3100f8+_0x7b2e('0xb3')+_0x3babf0+')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?'+_0x7b2e('0xb4'),'headers':{'Authorization':_0x7b2e('0x99')+_0x54d41a,'If-None-Match':null,'OData-Version':_0x7b2e('0xb5')},'json':!![]};return rp(_0x48bb5c)[_0x7b2e('0xf')](function(_0x2109a3){var _0x108958=[];var _0x401298=_0x2109a3[_0x7b2e('0xb6')][_0x7b2e('0xb7')];_0x401298[_0x7b2e('0xa7')](function(_0x3191ac){_0x108958[_0x7b2e('0xa1')]({'name':_0x3191ac[_0x7b2e('0xb8')][_0x7b2e('0xb9')][_0x7b2e('0xb8')],'value':String(_0x3191ac[_0x7b2e('0xba')])});});var _0x55fa82={'id':_0x5ce2eb+'_'+_0x2109a3[_0x7b2e('0x9f')],'name':_0x2109a3[_0x7b2e('0xbb')][_0x7b2e('0xb9')]['Label'],'custom':![],'options':_0x108958};_0xa248cb[_0x7b2e('0xa1')](_0x55fa82);return _0xa248cb;});}function getBooleanList(_0x40dbde,_0x1aa318,_0x49c259,_0x1e579f,_0x2757aa,_0x17e9f1){var _0x1d2f28={'method':_0x7b2e('0x97'),'uri':_0x40dbde+_0x7b2e('0x9c')+_0x1e579f+_0x7b2e('0xb3')+_0x2757aa+')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','headers':{'Authorization':_0x7b2e('0x99')+_0x17e9f1,'If-None-Match':null,'OData-Version':_0x7b2e('0xb5')},'json':!![]};return rp(_0x1d2f28)[_0x7b2e('0xf')](function(_0x5a56e2){var _0x5597ca=[];_0x5597ca['push']({'name':_0x5a56e2[_0x7b2e('0xb6')][_0x7b2e('0xbc')][_0x7b2e('0xb8')][_0x7b2e('0xb9')][_0x7b2e('0xb8')],'value':_0x7b2e('0xbd')},{'name':_0x5a56e2[_0x7b2e('0xb6')][_0x7b2e('0xbe')][_0x7b2e('0xb8')]['UserLocalizedLabel'][_0x7b2e('0xb8')],'value':_0x7b2e('0xbf')});var _0x59bed5={'id':_0x1aa318+'_'+_0x5a56e2[_0x7b2e('0x9f')],'name':_0x5a56e2[_0x7b2e('0xbb')][_0x7b2e('0xb9')][_0x7b2e('0xb8')],'custom':![],'options':_0x5597ca};_0x49c259['push'](_0x59bed5);return _0x49c259;});}function getInputList(_0x1ed18f,_0x29aca4,_0x320ebb,_0x5091ba,_0x43129f,_0x3beab5,_0x247359){var _0x2753b3={'method':'GET','uri':_0x1ed18f+_0x7b2e('0x9c')+_0x43129f+_0x7b2e('0xb3')+_0x3beab5+_0x7b2e('0xc0')+_0x320ebb+_0x7b2e('0xc1'),'headers':{'Authorization':_0x7b2e('0x99')+_0x247359,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x2753b3)[_0x7b2e('0xf')](function(_0x447347){var _0x3fe3f3={'id':_0x29aca4+'_'+_0x447347[_0x7b2e('0x9f')],'name':_0x447347[_0x7b2e('0xbb')][_0x7b2e('0xb9')]?_0x447347[_0x7b2e('0xbb')][_0x7b2e('0xb9')]['Label']:_0x447347[_0x7b2e('0x9f')],'custom':![],'options':[]};_0x5091ba[_0x7b2e('0xa1')](_0x3fe3f3);return _0x5091ba;});}
\ No newline at end of file
+var _0x403c=['modifiedbyyominame','modifiedon','modifiedonbehalfbyname','modifiedonbehalfbyyominame','msdyn_incidenttypename','msdyn_iotalertname','numberofchildincidents','onholdtime','owneridname','parentcaseidname','primarycontactidyominame','productidname','productserialnumber','resolveby','resolvebykpiidname','responseby','responsiblecontactidname','sentimentvalue','slainvokedidname','slaname','socialprofileidname','statecode','statuscode','subjectidname','transactioncurrencyidname','traversedpath','utcconversiontimezonecode','versionnumber','concat','username','remoteUri','tenantId','clientId','CloudProvider','data5','data7','modernAuthentication','access_token','POST','https://login.microsoftonline.com/','password','clientSecret','GET','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','4.0','value','EntityDefinitions(',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','Bearer\x20','Attributes','remove','includes','LogicalName','forEach','@odata.type','push','MetadataId','BooleanAttributeMetadata','all','StringAttributeMetadata','DoubleAttributeMetadata','BigIntAttributeMetadata','MemoAttributeMetadata','DateTimeAttributeMetadata','StatusAttributeMetadata','EntityNameAttributeMetadata','StateAttributeMetadata','DecimalAttributeMetadata','statusCode','test',')/Attributes(','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','OptionSet','Label','UserLocalizedLabel','Value','DisplayName',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','TrueOption','false',')/Microsoft.Dynamics.CRM.','?$select=DisplayName,LogicalName','request-promise','util','lodash','../../components/parsers/qs','../../config/logger','api','../../mysqldb','status','json','offset','undefined','count','limit','Content-Range','update','then','destroy','end','sendStatus','error','stack','name','send','index','rawAttributes','fieldName','model','map','keys','query','filters','intersection','attributes','fields','length','order','sort','where','pick','filter','merge','VIRTUAL','options','Dynamics365Account','includeAll','include','findAll','rows','catch','show','params','create','body','find','getConfigurations','findOne','Dynamics365Configuration','nolimit','addConfiguration','Subjects','getSubjects','channel','type','Descriptions','getDescriptions','Dynamics365Field','slice','substring','lastIndexOf','getFields','ticketType','Incident','title','description','customerid','caseorigincode','subject','phonenumber','regardingobjectid','directioncode','phonecall_activity_parties','accountidname','accountidyominame','actualserviceunits','contactidname','contractdetailidname','contractidname','createdbyexternalpartyname','createdbyexternalpartyyominame','createdbyname','createdbyyominame','createdon','createdonbehalfbyname','customeridname','customeridtype','customeridyominame','emailaddress','entityimage_timestamp','entityimage_url','escalatedon','exchangerate','firstresponsebykpiidname','followupby','importsequencenumber','influencescore','kbarticleidname','lastonholdtime','masteridname','modifiedbyexternalpartyname','modifiedbyexternalpartyyominame'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x403c,0x112));var _0xc403=function(_0x394e67,_0x1fe14e){_0x394e67=_0x394e67-0x0;var _0x23f734=_0x403c[_0x394e67];return _0x23f734;};'use strict';var rp=require(_0xc403('0x0'));var util=require(_0xc403('0x1'));var _=require(_0xc403('0x2'));var qs=require(_0xc403('0x3'));var logger=require(_0xc403('0x4'))(_0xc403('0x5'));var db=require(_0xc403('0x6'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithResult(_0xab42e4,_0x3537e7){_0x3537e7=_0x3537e7||0xc8;return function(_0x3cbeb1){if(_0x3cbeb1){return _0xab42e4[_0xc403('0x7')](_0x3537e7)[_0xc403('0x8')](_0x3cbeb1);}};}function respondWithFilteredResult(_0x2eb018,_0x4112c9){return function(_0x175901){if(_0x175901){var _0x58c585=typeof _0x4112c9[_0xc403('0x9')]==='undefined'&&typeof _0x4112c9['limit']===_0xc403('0xa');var _0x219553=_0x175901[_0xc403('0xb')];var _0x5ca2c1=_0x58c585?0x0:_0x4112c9['offset'];var _0xdbf5ad=_0x58c585?_0x175901[_0xc403('0xb')]:_0x4112c9['offset']+_0x4112c9[_0xc403('0xc')];var _0x1bcac7;if(_0xdbf5ad>=_0x219553){_0xdbf5ad=_0x219553;_0x1bcac7=0xc8;}else{_0x1bcac7=0xce;}_0x2eb018[_0xc403('0x7')](_0x1bcac7);return _0x2eb018['set'](_0xc403('0xd'),_0x5ca2c1+'-'+_0xdbf5ad+'/'+_0x219553)[_0xc403('0x8')](_0x175901);}return null;};}function saveUpdates(_0x2b4c00){return function(_0x15b132){if(_0x15b132){return _0x15b132[_0xc403('0xe')](_0x2b4c00)[_0xc403('0xf')](function(_0x4aaf2b){return _0x4aaf2b;});}return null;};}function removeEntity(_0x4eeff1){return function(_0x479ae2){if(_0x479ae2){return _0x479ae2[_0xc403('0x10')]()['then'](function(){_0x4eeff1[_0xc403('0x7')](0xcc)[_0xc403('0x11')]();});}};}function handleEntityNotFound(_0xb42219){return function(_0x140bbc){if(!_0x140bbc){_0xb42219[_0xc403('0x12')](0x194);}return _0x140bbc;};}function handleError(_0x1fe77f,_0x398fb1){_0x398fb1=_0x398fb1||0x1f4;return function(_0x26ae49){logger[_0xc403('0x13')](_0x26ae49[_0xc403('0x14')]);if(_0x26ae49[_0xc403('0x15')]){delete _0x26ae49[_0xc403('0x15')];}_0x1fe77f[_0xc403('0x7')](_0x398fb1)[_0xc403('0x16')](_0x26ae49);};}exports[_0xc403('0x17')]=function(_0x4e5de9,_0x397d4a){var _0x1e43c2={},_0x192083={},_0x428468={'count':0x0,'rows':[]};var _0x152850=_['map'](db['Dynamics365Account'][_0xc403('0x18')],function(_0x556944){return{'name':_0x556944[_0xc403('0x19')],'type':_0x556944['type']['key']};});_0x192083[_0xc403('0x1a')]=_[_0xc403('0x1b')](_0x152850,_0xc403('0x15'));_0x192083['query']=_[_0xc403('0x1c')](_0x4e5de9[_0xc403('0x1d')]);_0x192083[_0xc403('0x1e')]=_[_0xc403('0x1f')](_0x192083['model'],_0x192083['query']);_0x1e43c2[_0xc403('0x20')]=_['intersection'](_0x192083[_0xc403('0x1a')],qs[_0xc403('0x21')](_0x4e5de9[_0xc403('0x1d')][_0xc403('0x21')]));_0x1e43c2['attributes']=_0x1e43c2[_0xc403('0x20')][_0xc403('0x22')]?_0x1e43c2[_0xc403('0x20')]:_0x192083[_0xc403('0x1a')];if(!_0x4e5de9[_0xc403('0x1d')]['hasOwnProperty']('nolimit')){_0x1e43c2['limit']=qs[_0xc403('0xc')](_0x4e5de9[_0xc403('0x1d')][_0xc403('0xc')]);_0x1e43c2[_0xc403('0x9')]=qs[_0xc403('0x9')](_0x4e5de9[_0xc403('0x1d')][_0xc403('0x9')]);}_0x1e43c2[_0xc403('0x23')]=qs[_0xc403('0x24')](_0x4e5de9['query'][_0xc403('0x24')]);_0x1e43c2[_0xc403('0x25')]=qs['filters'](_[_0xc403('0x26')](_0x4e5de9[_0xc403('0x1d')],_0x192083[_0xc403('0x1e')]),_0x152850);if(_0x4e5de9[_0xc403('0x1d')][_0xc403('0x27')]){_0x1e43c2[_0xc403('0x25')]=_[_0xc403('0x28')](_0x1e43c2[_0xc403('0x25')],{'$or':_[_0xc403('0x1b')](_0x152850,function(_0x2fe611){if(_0x2fe611['type']!==_0xc403('0x29')){var _0x261db8={};_0x261db8[_0x2fe611[_0xc403('0x15')]]={'$like':'%'+_0x4e5de9['query'][_0xc403('0x27')]+'%'};return _0x261db8;}})});}_0x1e43c2=_[_0xc403('0x28')]({},_0x1e43c2,_0x4e5de9[_0xc403('0x2a')]);var _0x4d85ec={'where':_0x1e43c2['where']};return db[_0xc403('0x2b')][_0xc403('0xb')](_0x4d85ec)[_0xc403('0xf')](function(_0x73549a){_0x428468[_0xc403('0xb')]=_0x73549a;if(_0x4e5de9[_0xc403('0x1d')][_0xc403('0x2c')]){_0x1e43c2[_0xc403('0x2d')]=[{'all':!![]}];}return db[_0xc403('0x2b')][_0xc403('0x2e')](_0x1e43c2);})[_0xc403('0xf')](function(_0x1a23ce){_0x428468[_0xc403('0x2f')]=_0x1a23ce;return _0x428468;})[_0xc403('0xf')](respondWithFilteredResult(_0x397d4a,_0x1e43c2))[_0xc403('0x30')](handleError(_0x397d4a,null));};exports[_0xc403('0x31')]=function(_0x346f92,_0x1e73b8){var _0x3af9c7={'raw':![],'where':{'id':_0x346f92[_0xc403('0x32')]['id']}},_0x1681c6={};_0x1681c6[_0xc403('0x1a')]=_['keys'](db[_0xc403('0x2b')][_0xc403('0x18')]);_0x1681c6[_0xc403('0x1d')]=_[_0xc403('0x1c')](_0x346f92['query']);_0x1681c6[_0xc403('0x1e')]=_[_0xc403('0x1f')](_0x1681c6[_0xc403('0x1a')],_0x1681c6[_0xc403('0x1d')]);_0x3af9c7['attributes']=_[_0xc403('0x1f')](_0x1681c6['model'],qs[_0xc403('0x21')](_0x346f92[_0xc403('0x1d')][_0xc403('0x21')]));_0x3af9c7[_0xc403('0x20')]=_0x3af9c7[_0xc403('0x20')]['length']?_0x3af9c7[_0xc403('0x20')]:_0x1681c6[_0xc403('0x1a')];if(_0x346f92[_0xc403('0x1d')][_0xc403('0x2c')]){_0x3af9c7[_0xc403('0x2d')]=[{'all':!![]}];}_0x3af9c7=_[_0xc403('0x28')]({},_0x3af9c7,_0x346f92['options']);return db[_0xc403('0x2b')]['find'](_0x3af9c7)[_0xc403('0xf')](handleEntityNotFound(_0x1e73b8,null))['then'](respondWithResult(_0x1e73b8,null))['catch'](handleError(_0x1e73b8,null));};exports['create']=function(_0x3ef6be,_0x25015f){return db[_0xc403('0x2b')][_0xc403('0x33')](_0x3ef6be[_0xc403('0x34')],{})[_0xc403('0xf')](respondWithResult(_0x25015f,0xc9))[_0xc403('0x30')](handleError(_0x25015f,null));};exports[_0xc403('0xe')]=function(_0x11c44f,_0x21a21d){if(_0x11c44f[_0xc403('0x34')]['id']){delete _0x11c44f[_0xc403('0x34')]['id'];}return db[_0xc403('0x2b')][_0xc403('0x35')]({'where':{'id':_0x11c44f['params']['id']}})[_0xc403('0xf')](handleEntityNotFound(_0x21a21d,null))[_0xc403('0xf')](saveUpdates(_0x11c44f[_0xc403('0x34')],null))['then'](respondWithResult(_0x21a21d,null))[_0xc403('0x30')](handleError(_0x21a21d,null));};exports['destroy']=function(_0x7c81d9,_0x5d585c){return db['Dynamics365Account'][_0xc403('0x35')]({'where':{'id':_0x7c81d9[_0xc403('0x32')]['id']}})[_0xc403('0xf')](handleEntityNotFound(_0x5d585c,null))[_0xc403('0xf')](removeEntity(_0x5d585c,null))[_0xc403('0x30')](handleError(_0x5d585c,null));};exports[_0xc403('0x36')]=function(_0x19fa2c,_0x59d180){var _0x16c725={};var _0x136f32={};var _0x453c9a;var _0x418e63;return db[_0xc403('0x2b')][_0xc403('0x37')]({'where':{'id':_0x19fa2c[_0xc403('0x32')]['id']}})[_0xc403('0xf')](handleEntityNotFound(_0x59d180,null))[_0xc403('0xf')](function(_0x114112){if(_0x114112){_0x453c9a=_0x114112;_0x136f32['model']=_[_0xc403('0x1c')](db[_0xc403('0x38')][_0xc403('0x18')]);_0x136f32[_0xc403('0x1d')]=_['keys'](_0x19fa2c[_0xc403('0x1d')]);_0x136f32[_0xc403('0x1e')]=_['intersection'](_0x136f32['model'],_0x136f32[_0xc403('0x1d')]);_0x16c725[_0xc403('0x20')]=_[_0xc403('0x1f')](_0x136f32[_0xc403('0x1a')],qs[_0xc403('0x21')](_0x19fa2c[_0xc403('0x1d')][_0xc403('0x21')]));_0x16c725[_0xc403('0x20')]=_0x16c725['attributes'][_0xc403('0x22')]?_0x16c725[_0xc403('0x20')]:_0x136f32[_0xc403('0x1a')];_0x16c725[_0xc403('0x23')]=qs['sort'](_0x19fa2c['query'][_0xc403('0x24')]);_0x16c725[_0xc403('0x25')]=qs[_0xc403('0x1e')](_[_0xc403('0x26')](_0x19fa2c[_0xc403('0x1d')],_0x136f32['filters']));if(_0x19fa2c[_0xc403('0x1d')][_0xc403('0x27')]){_0x16c725[_0xc403('0x25')]=_[_0xc403('0x28')](_0x16c725['where'],{'$or':_[_0xc403('0x1b')](_0x16c725[_0xc403('0x20')],function(_0x5d331f){var _0x199afb={};_0x199afb[_0x5d331f]={'$like':'%'+_0x19fa2c[_0xc403('0x1d')]['filter']+'%'};return _0x199afb;})});}_0x16c725=_['merge']({},_0x16c725,_0x19fa2c[_0xc403('0x2a')]);return _0x453c9a[_0xc403('0x36')](_0x16c725);}})[_0xc403('0xf')](function(_0x23996b){if(_0x23996b){_0x418e63=_0x23996b[_0xc403('0x22')];if(!_0x19fa2c[_0xc403('0x1d')]['hasOwnProperty'](_0xc403('0x39'))){_0x16c725[_0xc403('0xc')]=qs['limit'](_0x19fa2c[_0xc403('0x1d')][_0xc403('0xc')]);_0x16c725[_0xc403('0x9')]=qs[_0xc403('0x9')](_0x19fa2c['query'][_0xc403('0x9')]);}return _0x453c9a[_0xc403('0x36')](_0x16c725);}})[_0xc403('0xf')](function(_0x3800af){if(_0x3800af){return _0x3800af?{'count':_0x418e63,'rows':_0x3800af}:null;}})[_0xc403('0xf')](respondWithResult(_0x59d180,null))[_0xc403('0x30')](handleError(_0x59d180,null));};exports[_0xc403('0x3a')]=function(_0x3a5c16,_0xce946e){if(_0x3a5c16['body']['id']){delete _0x3a5c16[_0xc403('0x34')]['id'];}return db[_0xc403('0x2b')][_0xc403('0x37')]({'where':{'id':_0x3a5c16['params']['id']}})['then'](handleEntityNotFound(_0xce946e,null))[_0xc403('0xf')](function(_0x566f6e){if(_0x566f6e){_0x3a5c16[_0xc403('0x34')]['AccountId']=_0x566f6e['id'];_0x3a5c16[_0xc403('0x34')][_0xc403('0x3b')]=integrations[_0xc403('0x3c')](_0x3a5c16['body'][_0xc403('0x3d')],_0x3a5c16[_0xc403('0x34')][_0xc403('0x3e')]);_0x3a5c16[_0xc403('0x34')][_0xc403('0x3f')]=integrations[_0xc403('0x40')](_0x3a5c16[_0xc403('0x34')]['channel'],_0x3a5c16['body'][_0xc403('0x3e')]);return db[_0xc403('0x38')][_0xc403('0x33')](_0x3a5c16[_0xc403('0x34')],{'include':[{'model':db['Dynamics365Field'],'as':_0xc403('0x3b')},{'model':db[_0xc403('0x41')],'as':_0xc403('0x3f')}]});}return null;})['then'](respondWithResult(_0xce946e,null))['catch'](handleError(_0xce946e,null));};function sanitizeRemoteUri(_0xd1a660){var _0x49fcf1=_0xd1a660[_0xc403('0x42')](-0x1);if(_0x49fcf1==='/')return _0xd1a660[_0xc403('0x43')](0x0,_0xd1a660[_0xc403('0x44')](_0x49fcf1));return _0xd1a660;}function getWebApiUrl(_0x13f3ad){return util['format']('%s/api/data/v9.0/',_0x13f3ad);}exports[_0xc403('0x45')]=function(_0x30c570,_0x48a94b){var _0x12af2a=_0x30c570['query'][_0xc403('0x46')];var _0x213355=_0x12af2a==='incident'?_0xc403('0x47'):'PhoneCall';var _0x2af367='';var _0x7c4f3a='';var _0x168ca='';var _0x30b2b0='';var _0x17456a='';var _0x56f111='';var _0xddbb12='';var _0x5c64d2='';var _0x13065c=[_0xc403('0x48'),_0xc403('0x49'),_0xc403('0x4a'),'ownerid',_0xc403('0x4b'),_0xc403('0x4c'),_0xc403('0x4d'),_0xc403('0x4e'),_0xc403('0x4f'),_0xc403('0x50')];var _0x40e288=[_0xc403('0x51'),_0xc403('0x52'),_0xc403('0x53'),'billedserviceunits',_0xc403('0x54'),'contactidyominame',_0xc403('0x55'),_0xc403('0x56'),_0xc403('0x57'),_0xc403('0x58'),_0xc403('0x59'),_0xc403('0x5a'),_0xc403('0x5b'),_0xc403('0x5c'),'createdonbehalfbyyominame',_0xc403('0x5d'),_0xc403('0x5e'),_0xc403('0x5f'),_0xc403('0x60'),'entitlementidname',_0xc403('0x61'),_0xc403('0x62'),_0xc403('0x63'),_0xc403('0x64'),_0xc403('0x65'),_0xc403('0x66'),_0xc403('0x67'),_0xc403('0x68'),_0xc403('0x69'),_0xc403('0x6a'),_0xc403('0x6b'),_0xc403('0x6c'),_0xc403('0x6d'),'modifiedbyname',_0xc403('0x6e'),_0xc403('0x6f'),_0xc403('0x70'),_0xc403('0x71'),_0xc403('0x72'),_0xc403('0x73'),_0xc403('0x74'),_0xc403('0x75'),'overriddencreatedon',_0xc403('0x76'),'owneridtype','owneridyominame',_0xc403('0x77'),'primarycontactidname',_0xc403('0x78'),'prioritycodename',_0xc403('0x79'),_0xc403('0x7a'),_0xc403('0x7b'),_0xc403('0x7c'),_0xc403('0x7d'),_0xc403('0x7e'),'responsiblecontactidyominame',_0xc403('0x7f'),_0xc403('0x80'),_0xc403('0x81'),_0xc403('0x82'),_0xc403('0x83'),_0xc403('0x84'),_0xc403('0x85'),'ticketnumber','timezoneruleversionnumber',_0xc403('0x86'),_0xc403('0x87'),_0xc403('0x88'),_0xc403('0x89')];var _0x574273=_0x13065c[_0xc403('0x8a')](_0x40e288);return db['Dynamics365Account']['findOne']({'where':{'id':_0x30c570['params']['id']},'attributes':['id',_0xc403('0x8b'),'password',_0xc403('0x8c'),_0xc403('0x8d'),_0xc403('0x8e'),'clientSecret','modernAuthentication'],'include':[{'model':db[_0xc403('0x8f')],'as':_0xc403('0x8f'),'attributes':['id',_0xc403('0x90'),_0xc403('0x91')]}]})[_0xc403('0xf')](handleEntityNotFound(_0x48a94b,null))['then'](function(_0x1ee22b){if(_0x1ee22b){if(_0x1ee22b[_0xc403('0x92')]){_0x1ee22b[_0xc403('0x93')]=_0x1ee22b['CloudProvider'][_0xc403('0x90')];_0x5c64d2=sanitizeRemoteUri(_0x1ee22b[_0xc403('0x8f')]['data7']);_0xddbb12=getWebApiUrl(_0x5c64d2);return _0x1ee22b;}_0x5c64d2=sanitizeRemoteUri(_0x1ee22b[_0xc403('0x8c')]);_0xddbb12=getWebApiUrl(_0x5c64d2);var _0x302ad5={'method':_0xc403('0x94'),'uri':_0xc403('0x95')+_0x1ee22b['tenantId']+'/oauth2/token','form':{'client_id':_0x1ee22b['clientId'],'resource':_0x5c64d2,'username':_0x1ee22b[_0xc403('0x8b')],'password':_0x1ee22b[_0xc403('0x96')],'grant_type':'password','client_secret':_0x1ee22b[_0xc403('0x97')]},'json':!![]};return rp(_0x302ad5);}})[_0xc403('0xf')](function(_0x816151){_0x56f111=_0x816151['access_token'];var _0x1380f3={'method':_0xc403('0x98'),'uri':encodeURI(_0xddbb12+_0xc403('0x99')+_0x213355+'\x27'),'headers':{'Authorization':'Bearer\x20'+_0x56f111,'If-None-Match':null,'OData-Version':_0xc403('0x9a')},'json':!![]};return rp(_0x1380f3);})[_0xc403('0xf')](function(_0x5749a8){var _0x427f9e=_0x5749a8[_0xc403('0x9b')][0x0];var _0x4bf965=_0x427f9e['MetadataId'];var _0x1e4dce={'method':_0xc403('0x98'),'uri':_0xddbb12+_0xc403('0x9c')+_0x4bf965+_0xc403('0x9d'),'headers':{'Authorization':_0xc403('0x9e')+_0x56f111,'If-None-Match':null,'OData-Version':_0xc403('0x9a')},'json':!![]};return rp(_0x1e4dce);})[_0xc403('0xf')](function(_0x518c97){_0x2af367=_0x518c97;_0x7c4f3a=_0x2af367[_0xc403('0x9f')];_0x7c4f3a=_[_0xc403('0xa0')](_0x7c4f3a,function(_0x407197){return!_0x574273[_0xc403('0xa1')](_0x407197[_0xc403('0xa2')]);});var _0x4740b0=[];var _0x507abe=[];_0x7c4f3a[_0xc403('0xa3')](function(_0x4cd85b){if(_0x4cd85b[_0xc403('0xa4')]){var _0x373711=_0x4cd85b['@odata.type']['substring'](_0x4cd85b[_0xc403('0xa4')][_0xc403('0x44')]('.')+0x1);if(_0x373711==='PicklistAttributeMetadata'){_0x4740b0[_0xc403('0xa5')](getSelectList(_0xddbb12,_0x12af2a,_0x507abe,_0x2af367['MetadataId'],_0x4cd85b[_0xc403('0xa6')],_0x56f111));}}});return Promise['all'](_0x4740b0);})[_0xc403('0xf')](function(_0x12fa17){_0x168ca=_0x12fa17[0x0];var _0x2fe5e5=[];var _0x2707bf=[];_0x7c4f3a[_0xc403('0xa3')](function(_0x4d5051){if(!_['isNil'](_0x4d5051['@odata.type'])){var _0x1bb514=_0x4d5051['@odata.type']['substring'](_0x4d5051['@odata.type'][_0xc403('0x44')]('.')+0x1);if(_0x1bb514===_0xc403('0xa7')){_0x2fe5e5[_0xc403('0xa5')](getBooleanList(_0xddbb12,_0x12af2a,_0x2707bf,_0x2af367[_0xc403('0xa6')],_0x4d5051[_0xc403('0xa6')],_0x56f111));}}});return Promise[_0xc403('0xa8')](_0x2fe5e5);})['then'](function(_0x1cc77b){_0x30b2b0=_0x1cc77b[0x0];var _0x1a6b51=[];var _0x3beb95=[];_0x7c4f3a[_0xc403('0xa3')](function(_0xc69688){if(_0xc69688['@odata.type']){var _0x286b15=_0xc69688[_0xc403('0xa4')][_0xc403('0x43')](_0xc69688['@odata.type'][_0xc403('0x44')]('.')+0x1);if(_0x286b15===_0xc403('0xa9')||_0x286b15===_0xc403('0xaa')||_0x286b15===_0xc403('0xab')||_0x286b15==='IntegerAttributeMetadata'||_0x286b15===_0xc403('0xac')||_0x286b15===_0xc403('0xad')||_0x286b15===_0xc403('0xae')||_0x286b15===_0xc403('0xaf')||_0x286b15===_0xc403('0xb0')||_0x286b15===_0xc403('0xb1')){_0x1a6b51['push'](getInputList(_0xddbb12,_0x12af2a,_0x286b15,_0x3beb95,_0x2af367[_0xc403('0xa6')],_0xc69688['MetadataId'],_0x56f111));}}});return Promise[_0xc403('0xa8')](_0x1a6b51);})[_0xc403('0xf')](function(_0xba11c1){_0x17456a=_0xba11c1[0x0];var _0x8ddb8d=_0x168ca[_0xc403('0x8a')](_0x30b2b0)[_0xc403('0x8a')](_0x17456a);var _0x54572f={'count':_0x8ddb8d[_0xc403('0x22')],'rows':_0x8ddb8d};return _0x54572f;})[_0xc403('0xf')](respondWithResult(_0x48a94b,null))[_0xc403('0x30')](function(_0x4e6eb3){var _0x138e7f=_0x30c570[_0xc403('0x1d')]['test']?0x1f4:_0x4e6eb3[_0xc403('0xb2')]||0x1f4;logger['error'](_0x4e6eb3[_0xc403('0x14')]);delete _0x4e6eb3['name'];if(_0x138e7f===0x191){_0x138e7f=0x190;}_0x48a94b['status'](_0x138e7f)[_0xc403('0x16')](_0x30c570[_0xc403('0x1d')][_0xc403('0xb3')]?{'message':'Wrong\x20credentials','statusCode':_0x4e6eb3[_0xc403('0xb2')]}:_0x4e6eb3);});};function getSelectList(_0x2c6e06,_0x305071,_0x3fcbb6,_0x1f595e,_0x39ce0b,_0x241591){var _0x110f7e={'method':_0xc403('0x98'),'uri':_0x2c6e06+'EntityDefinitions('+_0x1f595e+_0xc403('0xb4')+_0x39ce0b+')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?'+_0xc403('0xb5'),'headers':{'Authorization':'Bearer\x20'+_0x241591,'If-None-Match':null,'OData-Version':_0xc403('0x9a')},'json':!![]};return rp(_0x110f7e)[_0xc403('0xf')](function(_0x2f7b05){var _0x49b4d1=[];var _0x164346=_0x2f7b05[_0xc403('0xb6')]['Options'];_0x164346[_0xc403('0xa3')](function(_0x3dc018){_0x49b4d1[_0xc403('0xa5')]({'name':_0x3dc018[_0xc403('0xb7')][_0xc403('0xb8')][_0xc403('0xb7')],'value':String(_0x3dc018[_0xc403('0xb9')])});});var _0x7834b8={'id':_0x305071+'_'+_0x2f7b05[_0xc403('0xa2')],'name':_0x2f7b05[_0xc403('0xba')][_0xc403('0xb8')]['Label'],'custom':![],'options':_0x49b4d1};_0x3fcbb6[_0xc403('0xa5')](_0x7834b8);return _0x3fcbb6;});}function getBooleanList(_0x32fdb8,_0x47dece,_0x364695,_0x4de50a,_0x5b2789,_0x28f353){var _0x344ec5={'method':_0xc403('0x98'),'uri':_0x32fdb8+_0xc403('0x9c')+_0x4de50a+')/Attributes('+_0x5b2789+_0xc403('0xbb'),'headers':{'Authorization':_0xc403('0x9e')+_0x28f353,'If-None-Match':null,'OData-Version':_0xc403('0x9a')},'json':!![]};return rp(_0x344ec5)['then'](function(_0x32936a){var _0x219115=[];_0x219115[_0xc403('0xa5')]({'name':_0x32936a[_0xc403('0xb6')][_0xc403('0xbc')][_0xc403('0xb7')]['UserLocalizedLabel'][_0xc403('0xb7')],'value':'true'},{'name':_0x32936a[_0xc403('0xb6')]['FalseOption'][_0xc403('0xb7')]['UserLocalizedLabel'][_0xc403('0xb7')],'value':_0xc403('0xbd')});var _0x35b92d={'id':_0x47dece+'_'+_0x32936a['LogicalName'],'name':_0x32936a[_0xc403('0xba')]['UserLocalizedLabel'][_0xc403('0xb7')],'custom':![],'options':_0x219115};_0x364695[_0xc403('0xa5')](_0x35b92d);return _0x364695;});}function getInputList(_0x180f97,_0x883231,_0x22cb37,_0x5d1f3b,_0x23e40b,_0xe3c046,_0x123f80){var _0x3b4416={'method':_0xc403('0x98'),'uri':_0x180f97+_0xc403('0x9c')+_0x23e40b+_0xc403('0xb4')+_0xe3c046+_0xc403('0xbe')+_0x22cb37+_0xc403('0xbf'),'headers':{'Authorization':_0xc403('0x9e')+_0x123f80,'If-None-Match':null,'OData-Version':_0xc403('0x9a')},'json':!![]};return rp(_0x3b4416)[_0xc403('0xf')](function(_0x49dd38){var _0x54cf1f={'id':_0x883231+'_'+_0x49dd38[_0xc403('0xa2')],'name':_0x49dd38[_0xc403('0xba')][_0xc403('0xb8')]?_0x49dd38[_0xc403('0xba')]['UserLocalizedLabel'][_0xc403('0xb7')]:_0x49dd38[_0xc403('0xa2')],'custom':![],'options':[]};_0x5d1f3b[_0xc403('0xa5')](_0x54cf1f);return _0x5d1f3b;});}
\ No newline at end of file
index 9a6c020..9940ee7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['rimraf','./intDynamics365Account.attributes','../../components/integrations/configuration','Dynamics365Account','int_dynamics365_accounts','../../config/logger','api','moment','bluebird','path'];(function(_0x19316b,_0x4210a7){var _0x28ea7f=function(_0x41a401){while(--_0x41a401){_0x19316b['push'](_0x19316b['shift']());}};_0x28ea7f(++_0x4210a7);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x104e21,_0x2ea86f){_0x104e21=_0x104e21-0x0;var _0x605b37=_0xcb91[_0x104e21];return _0x605b37;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x1cb9('0x0'))(_0x1cb9('0x1'));var moment=require(_0x1cb9('0x2'));var BPromise=require(_0x1cb9('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1cb9('0x4'));var rimraf=require(_0x1cb9('0x5'));var config=require('../../config/environment');var attributes=require(_0x1cb9('0x6'));var integrations=require(_0x1cb9('0x7'));module['exports']=function(_0x226b69,_0x3f7deb){return _0x226b69['define'](_0x1cb9('0x8'),attributes,{'tableName':_0x1cb9('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd8b0=['exports','Dynamics365Account','int_dynamics365_accounts','lodash','util','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x43a31c,_0x3e9f83){var _0x386a15=function(_0x50688c){while(--_0x50688c){_0x43a31c['push'](_0x43a31c['shift']());}};_0x386a15(++_0x3e9f83);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x0d8b('0x2'));var rp=require(_0x0d8b('0x3'));var fs=require('fs');var path=require(_0x0d8b('0x4'));var rimraf=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var attributes=require('./intDynamics365Account.attributes');var integrations=require('../../components/integrations/configuration');module[_0x0d8b('0x7')]=function(_0x227c63,_0x39f43a){return _0x227c63['define'](_0x0d8b('0x8'),attributes,{'tableName':_0x0d8b('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d105392..257eafc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd6f=['find','ShowDynamics365Account','lodash','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','Dynamics365Account,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Account,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','GetDynamics365Account','Dynamics365Account','findAll','options','raw','where','attributes','limit','include','map','model'];(function(_0x20eefe,_0x59a8be){var _0x1c3741=function(_0x4dc313){while(--_0x4dc313){_0x20eefe['push'](_0x20eefe['shift']());}};_0x1c3741(++_0x59a8be);}(_0xcd6f,0xda));var _0xfcd6=function(_0x562a43,_0x3cde35){_0x562a43=_0x562a43-0x0;var _0x2e9d7c=_0xcd6f[_0x562a43];return _0x2e9d7c;};'use strict';var _=require(_0xfcd6('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xfcd6('0x1'));var db=require(_0xfcd6('0x2'))['db'];var utils=require(_0xfcd6('0x3'));var logger=require(_0xfcd6('0x4'))(_0xfcd6('0x5'));var config=require(_0xfcd6('0x6'));var jayson=require(_0xfcd6('0x7'));var client=jayson[_0xfcd6('0x8')][_0xfcd6('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1baaff,_0x34e920,_0x404bab){return new BPromise(function(_0x2cde8c,_0x41a029){return client[_0xfcd6('0xa')](_0x1baaff,_0x404bab)[_0xfcd6('0xb')](function(_0x5ac251){logger['info'](_0xfcd6('0xc'),_0x34e920,_0xfcd6('0xd'));logger[_0xfcd6('0xe')](_0xfcd6('0xf'),_0x34e920,_0xfcd6('0xd'),JSON[_0xfcd6('0x10')](_0x5ac251));if(_0x5ac251[_0xfcd6('0x11')]){if(_0x5ac251[_0xfcd6('0x11')][_0xfcd6('0x12')]===0x1f4){logger['error'](_0xfcd6('0xc'),_0x34e920,_0x5ac251[_0xfcd6('0x11')]['message']);return _0x41a029(_0x5ac251['error'][_0xfcd6('0x13')]);}logger['error'](_0xfcd6('0xc'),_0x34e920,_0x5ac251[_0xfcd6('0x11')][_0xfcd6('0x13')]);return _0x2cde8c(_0x5ac251[_0xfcd6('0x11')]['message']);}else{logger[_0xfcd6('0x14')](_0xfcd6('0xc'),_0x34e920,_0xfcd6('0xd'));_0x2cde8c(_0x5ac251[_0xfcd6('0x15')][_0xfcd6('0x13')]);}})[_0xfcd6('0x16')](function(_0x1b75bb){logger[_0xfcd6('0x11')](_0xfcd6('0xc'),_0x34e920,_0x1b75bb);_0x41a029(_0x1b75bb);});});}exports[_0xfcd6('0x17')]=function(_0x45a389){var _0x183973=this;return new Promise(function(_0x11b348,_0x5e0af3){return db[_0xfcd6('0x18')][_0xfcd6('0x19')]({'raw':_0x45a389[_0xfcd6('0x1a')]?_0x45a389[_0xfcd6('0x1a')][_0xfcd6('0x1b')]===undefined?!![]:![]:!![],'where':_0x45a389[_0xfcd6('0x1a')]?_0x45a389[_0xfcd6('0x1a')][_0xfcd6('0x1c')]||null:null,'attributes':_0x45a389[_0xfcd6('0x1a')]?_0x45a389[_0xfcd6('0x1a')][_0xfcd6('0x1d')]||null:null,'limit':_0x45a389[_0xfcd6('0x1a')]?_0x45a389[_0xfcd6('0x1a')][_0xfcd6('0x1e')]||null:null,'include':_0x45a389[_0xfcd6('0x1a')]?_0x45a389[_0xfcd6('0x1a')][_0xfcd6('0x1f')]?_[_0xfcd6('0x20')](_0x45a389[_0xfcd6('0x1a')][_0xfcd6('0x1f')],function(_0x3a610f){return{'model':db[_0x3a610f[_0xfcd6('0x21')]],'as':_0x3a610f['as'],'attributes':_0x3a610f[_0xfcd6('0x1d')],'include':_0x3a610f[_0xfcd6('0x1f')]?_[_0xfcd6('0x20')](_0x3a610f[_0xfcd6('0x1f')],function(_0x42ab4c){return{'model':db[_0x42ab4c[_0xfcd6('0x21')]],'as':_0x42ab4c['as'],'attributes':_0x42ab4c[_0xfcd6('0x1d')],'include':_0x42ab4c['include']?_[_0xfcd6('0x20')](_0x42ab4c[_0xfcd6('0x1f')],function(_0x7b7d97){return{'model':db[_0x7b7d97['model']],'as':_0x7b7d97['as'],'attributes':_0x7b7d97['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x32eec3){logger[_0xfcd6('0x14')](_0xfcd6('0x17'),_0x45a389);logger[_0xfcd6('0xe')](_0xfcd6('0x17'),_0x45a389,JSON[_0xfcd6('0x10')](_0x32eec3));_0x11b348(_0x32eec3);})[_0xfcd6('0x16')](function(_0xa998fc){logger['error'](_0xfcd6('0x17'),_0xa998fc['message'],_0x45a389);_0x5e0af3(_0x183973['error'](0x1f4,_0xa998fc[_0xfcd6('0x13')]));});});};exports['ShowDynamics365Account']=function(_0x51986a){var _0x145ba9=this;return new Promise(function(_0x1fe8fb,_0x239198){return db[_0xfcd6('0x18')][_0xfcd6('0x22')]({'raw':_0x51986a[_0xfcd6('0x1a')]?_0x51986a['options'][_0xfcd6('0x1b')]===undefined?!![]:![]:!![],'where':_0x51986a[_0xfcd6('0x1a')]?_0x51986a[_0xfcd6('0x1a')][_0xfcd6('0x1c')]||null:null,'attributes':_0x51986a['options']?_0x51986a[_0xfcd6('0x1a')][_0xfcd6('0x1d')]||null:null,'include':_0x51986a[_0xfcd6('0x1a')]?_0x51986a[_0xfcd6('0x1a')][_0xfcd6('0x1f')]?_[_0xfcd6('0x20')](_0x51986a[_0xfcd6('0x1a')][_0xfcd6('0x1f')],function(_0x9ca89d){return{'model':db[_0x9ca89d[_0xfcd6('0x21')]],'as':_0x9ca89d['as'],'attributes':_0x9ca89d[_0xfcd6('0x1d')],'include':_0x9ca89d[_0xfcd6('0x1f')]?_['map'](_0x9ca89d[_0xfcd6('0x1f')],function(_0x2794c1){return{'model':db[_0x2794c1[_0xfcd6('0x21')]],'as':_0x2794c1['as'],'attributes':_0x2794c1['attributes'],'include':_0x2794c1[_0xfcd6('0x1f')]?_['map'](_0x2794c1[_0xfcd6('0x1f')],function(_0x1538cb){return{'model':db[_0x1538cb[_0xfcd6('0x21')]],'as':_0x1538cb['as'],'attributes':_0x1538cb[_0xfcd6('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3cbe82){logger[_0xfcd6('0x14')](_0xfcd6('0x23'),_0x51986a);logger[_0xfcd6('0xe')](_0xfcd6('0x23'),_0x51986a,JSON[_0xfcd6('0x10')](_0x3cbe82));_0x1fe8fb(_0x3cbe82);})[_0xfcd6('0x16')](function(_0x6eba0c){logger[_0xfcd6('0x11')](_0xfcd6('0x23'),_0x6eba0c[_0xfcd6('0x13')],_0x51986a);_0x239198(_0x145ba9['error'](0x1f4,_0x6eba0c['message']));});});};
\ No newline at end of file
+var _0x0cfb=['map','model','ShowDynamics365Account','find','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','Dynamics365Account,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Account,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetDynamics365Account','findAll','options','raw','where','attributes','limit','include'];(function(_0x134c2e,_0x3573c4){var _0x2825db=function(_0x2a574d){while(--_0x2a574d){_0x134c2e['push'](_0x134c2e['shift']());}};_0x2825db(++_0x3573c4);}(_0x0cfb,0xd6));var _0xb0cf=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0x0cfb[_0x618414];return _0x21c19a;};'use strict';var _=require('lodash');var util=require(_0xb0cf('0x0'));var moment=require(_0xb0cf('0x1'));var BPromise=require('bluebird');var rs=require(_0xb0cf('0x2'));var fs=require('fs');var Redis=require(_0xb0cf('0x3'));var db=require(_0xb0cf('0x4'))['db'];var utils=require(_0xb0cf('0x5'));var logger=require(_0xb0cf('0x6'))(_0xb0cf('0x7'));var config=require(_0xb0cf('0x8'));var jayson=require(_0xb0cf('0x9'));var client=jayson[_0xb0cf('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4c63cd,_0x40ad2e,_0x38afb6){return new BPromise(function(_0x379b5d,_0x10c2fc){return client[_0xb0cf('0xb')](_0x4c63cd,_0x38afb6)[_0xb0cf('0xc')](function(_0x4f5a8d){logger[_0xb0cf('0xd')](_0xb0cf('0xe'),_0x40ad2e,_0xb0cf('0xf'));logger[_0xb0cf('0x10')](_0xb0cf('0x11'),_0x40ad2e,_0xb0cf('0xf'),JSON[_0xb0cf('0x12')](_0x4f5a8d));if(_0x4f5a8d['error']){if(_0x4f5a8d[_0xb0cf('0x13')]['code']===0x1f4){logger[_0xb0cf('0x13')](_0xb0cf('0xe'),_0x40ad2e,_0x4f5a8d[_0xb0cf('0x13')][_0xb0cf('0x14')]);return _0x10c2fc(_0x4f5a8d['error'][_0xb0cf('0x14')]);}logger[_0xb0cf('0x13')](_0xb0cf('0xe'),_0x40ad2e,_0x4f5a8d['error'][_0xb0cf('0x14')]);return _0x379b5d(_0x4f5a8d[_0xb0cf('0x13')][_0xb0cf('0x14')]);}else{logger['info'](_0xb0cf('0xe'),_0x40ad2e,_0xb0cf('0xf'));_0x379b5d(_0x4f5a8d[_0xb0cf('0x15')]['message']);}})[_0xb0cf('0x16')](function(_0x315b08){logger['error']('Dynamics365Account,\x20%s,\x20%s',_0x40ad2e,_0x315b08);_0x10c2fc(_0x315b08);});});}exports[_0xb0cf('0x17')]=function(_0x5959ac){var _0x1a1856=this;return new Promise(function(_0x3a0ea3,_0x890b09){return db['Dynamics365Account'][_0xb0cf('0x18')]({'raw':_0x5959ac[_0xb0cf('0x19')]?_0x5959ac['options'][_0xb0cf('0x1a')]===undefined?!![]:![]:!![],'where':_0x5959ac[_0xb0cf('0x19')]?_0x5959ac[_0xb0cf('0x19')][_0xb0cf('0x1b')]||null:null,'attributes':_0x5959ac[_0xb0cf('0x19')]?_0x5959ac[_0xb0cf('0x19')][_0xb0cf('0x1c')]||null:null,'limit':_0x5959ac[_0xb0cf('0x19')]?_0x5959ac[_0xb0cf('0x19')][_0xb0cf('0x1d')]||null:null,'include':_0x5959ac[_0xb0cf('0x19')]?_0x5959ac[_0xb0cf('0x19')][_0xb0cf('0x1e')]?_['map'](_0x5959ac['options'][_0xb0cf('0x1e')],function(_0x163b69){return{'model':db[_0x163b69['model']],'as':_0x163b69['as'],'attributes':_0x163b69['attributes'],'include':_0x163b69['include']?_[_0xb0cf('0x1f')](_0x163b69['include'],function(_0x45eac0){return{'model':db[_0x45eac0['model']],'as':_0x45eac0['as'],'attributes':_0x45eac0[_0xb0cf('0x1c')],'include':_0x45eac0[_0xb0cf('0x1e')]?_['map'](_0x45eac0['include'],function(_0x19a437){return{'model':db[_0x19a437[_0xb0cf('0x20')]],'as':_0x19a437['as'],'attributes':_0x19a437[_0xb0cf('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3b911d){logger[_0xb0cf('0xd')](_0xb0cf('0x17'),_0x5959ac);logger['debug'](_0xb0cf('0x17'),_0x5959ac,JSON['stringify'](_0x3b911d));_0x3a0ea3(_0x3b911d);})[_0xb0cf('0x16')](function(_0x2c7fc1){logger[_0xb0cf('0x13')](_0xb0cf('0x17'),_0x2c7fc1[_0xb0cf('0x14')],_0x5959ac);_0x890b09(_0x1a1856[_0xb0cf('0x13')](0x1f4,_0x2c7fc1[_0xb0cf('0x14')]));});});};exports[_0xb0cf('0x21')]=function(_0x39572f){var _0x521f3a=this;return new Promise(function(_0xec0d9,_0xd75813){return db['Dynamics365Account'][_0xb0cf('0x22')]({'raw':_0x39572f[_0xb0cf('0x19')]?_0x39572f[_0xb0cf('0x19')][_0xb0cf('0x1a')]===undefined?!![]:![]:!![],'where':_0x39572f[_0xb0cf('0x19')]?_0x39572f[_0xb0cf('0x19')][_0xb0cf('0x1b')]||null:null,'attributes':_0x39572f[_0xb0cf('0x19')]?_0x39572f[_0xb0cf('0x19')][_0xb0cf('0x1c')]||null:null,'include':_0x39572f[_0xb0cf('0x19')]?_0x39572f['options'][_0xb0cf('0x1e')]?_[_0xb0cf('0x1f')](_0x39572f[_0xb0cf('0x19')][_0xb0cf('0x1e')],function(_0x224d3a){return{'model':db[_0x224d3a[_0xb0cf('0x20')]],'as':_0x224d3a['as'],'attributes':_0x224d3a[_0xb0cf('0x1c')],'include':_0x224d3a['include']?_[_0xb0cf('0x1f')](_0x224d3a[_0xb0cf('0x1e')],function(_0x588a65){return{'model':db[_0x588a65['model']],'as':_0x588a65['as'],'attributes':_0x588a65[_0xb0cf('0x1c')],'include':_0x588a65[_0xb0cf('0x1e')]?_[_0xb0cf('0x1f')](_0x588a65[_0xb0cf('0x1e')],function(_0x6e3cf7){return{'model':db[_0x6e3cf7[_0xb0cf('0x20')]],'as':_0x6e3cf7['as'],'attributes':_0x6e3cf7[_0xb0cf('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xb0cf('0xc')](function(_0x32125c){logger['info'](_0xb0cf('0x21'),_0x39572f);logger[_0xb0cf('0x10')](_0xb0cf('0x21'),_0x39572f,JSON[_0xb0cf('0x12')](_0x32125c));_0xec0d9(_0x32125c);})[_0xb0cf('0x16')](function(_0xf2ab76){logger[_0xb0cf('0x13')](_0xb0cf('0x21'),_0xf2ab76[_0xb0cf('0x14')],_0x39572f);_0xd75813(_0x521f3a[_0xb0cf('0x13')](0x1f4,_0xf2ab76['message']));});});};
\ No newline at end of file
index 4df4825..532aee2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d45=['put','update','delete','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','get','/:id','isAuthenticated','show','getFields','/:id/descriptions','getDescriptions','post','create'];(function(_0x59befa,_0x4af99b){var _0x1dd63d=function(_0x4c1df4){while(--_0x4c1df4){_0x59befa['push'](_0x59befa['shift']());}};_0x1dd63d(++_0x4af99b);}(_0x3d45,0x1d2));var _0x53d4=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x3d45[_0x6c993a];return _0x27f547;};'use strict';var multer=require(_0x53d4('0x0'));var util=require(_0x53d4('0x1'));var path=require(_0x53d4('0x2'));var timeout=require(_0x53d4('0x3'));var express=require(_0x53d4('0x4'));var router=express['Router']();var fs_extra=require(_0x53d4('0x5'));var auth=require(_0x53d4('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x53d4('0x7'));var controller=require('./intDynamics365Configuration.controller');router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x53d4('0x8')](_0x53d4('0x9'),auth[_0x53d4('0xa')](),controller[_0x53d4('0xb')]);router[_0x53d4('0x8')]('/:id/fields',auth[_0x53d4('0xa')](),controller[_0x53d4('0xc')]);router[_0x53d4('0x8')]('/:id/subjects',auth[_0x53d4('0xa')](),controller['getSubjects']);router[_0x53d4('0x8')](_0x53d4('0xd'),auth[_0x53d4('0xa')](),controller[_0x53d4('0xe')]);router[_0x53d4('0xf')]('/',auth['isAuthenticated'](),controller[_0x53d4('0x10')]);router[_0x53d4('0x11')](_0x53d4('0x9'),auth['isAuthenticated'](),controller[_0x53d4('0x12')]);router[_0x53d4('0x13')]('/:id',auth[_0x53d4('0xa')](),controller['destroy']);module[_0x53d4('0x14')]=router;
\ No newline at end of file
+var _0x7f91=['../../config/environment','./intDynamics365Configuration.controller','get','isAuthenticated','/:id','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','delete','destroy','exports','multer','path','Router','fs-extra','../../components/interaction/service'];(function(_0x3f7900,_0x583f17){var _0x2ca39f=function(_0x25240c){while(--_0x25240c){_0x3f7900['push'](_0x3f7900['shift']());}};_0x2ca39f(++_0x583f17);}(_0x7f91,0x93));var _0x17f9=function(_0x33f7e1,_0x48d209){_0x33f7e1=_0x33f7e1-0x0;var _0x23bab4=_0x7f91[_0x33f7e1];return _0x23bab4;};'use strict';var multer=require(_0x17f9('0x0'));var util=require('util');var path=require(_0x17f9('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x17f9('0x2')]();var fs_extra=require(_0x17f9('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x17f9('0x4'));var config=require(_0x17f9('0x5'));var controller=require(_0x17f9('0x6'));router[_0x17f9('0x7')]('/',auth[_0x17f9('0x8')](),controller['index']);router['get'](_0x17f9('0x9'),auth[_0x17f9('0x8')](),controller['show']);router['get'](_0x17f9('0xa'),auth[_0x17f9('0x8')](),controller[_0x17f9('0xb')]);router['get'](_0x17f9('0xc'),auth[_0x17f9('0x8')](),controller[_0x17f9('0xd')]);router[_0x17f9('0x7')](_0x17f9('0xe'),auth[_0x17f9('0x8')](),controller[_0x17f9('0xf')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x17f9('0x9'),auth[_0x17f9('0x8')](),controller['update']);router[_0x17f9('0x10')](_0x17f9('0x9'),auth[_0x17f9('0x8')](),controller[_0x17f9('0x11')]);module[_0x17f9('0x12')]=router;
\ No newline at end of file
index 3bed535..2cc9692 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x997e=['STRING','ENUM','phonecall','contact','nothing','BOOLEAN','exports'];(function(_0x1b37c9,_0x2ccef5){var _0x3a8696=function(_0x1c5b1c){while(--_0x1c5b1c){_0x1b37c9['push'](_0x1b37c9['shift']());}};_0x3a8696(++_0x2ccef5);}(_0x997e,0x1cd));var _0xe997=function(_0x24ac39,_0x223cc6){_0x24ac39=_0x24ac39-0x0;var _0x59131d=_0x997e[_0x24ac39];return _0x59131d;};'use strict';var Sequelize=require('sequelize');module[_0xe997('0x0')]={'name':{'type':Sequelize[_0xe997('0x1')]},'description':{'type':Sequelize['STRING']},'ticketType':{'type':Sequelize[_0xe997('0x2')]('incident',_0xe997('0x3')),'defaultValue':'incident'},'moduleCreate':{'type':Sequelize['ENUM'](_0xe997('0x4'),_0xe997('0x5')),'defaultValue':_0xe997('0x4'),'allowNull':![]},'additionalSearchContact':{'type':Sequelize['STRING'],'allowNull':!![]},'openNewTab':{'type':Sequelize[_0xe997('0x6')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x3d7e=['BOOLEAN','sequelize','exports','STRING','ENUM','incident','phonecall','nothing','contact'];(function(_0x34a8c8,_0x31e259){var _0x1fe6e5=function(_0x30f28d){while(--_0x30f28d){_0x34a8c8['push'](_0x34a8c8['shift']());}};_0x1fe6e5(++_0x31e259);}(_0x3d7e,0x1b1));var _0xe3d7=function(_0x34bf97,_0xc60f9d){_0x34bf97=_0x34bf97-0x0;var _0x292719=_0x3d7e[_0x34bf97];return _0x292719;};'use strict';var Sequelize=require(_0xe3d7('0x0'));module[_0xe3d7('0x1')]={'name':{'type':Sequelize[_0xe3d7('0x2')]},'description':{'type':Sequelize['STRING']},'ticketType':{'type':Sequelize[_0xe3d7('0x3')](_0xe3d7('0x4'),_0xe3d7('0x5')),'defaultValue':_0xe3d7('0x4')},'moduleCreate':{'type':Sequelize[_0xe3d7('0x3')]('contact',_0xe3d7('0x6')),'defaultValue':_0xe3d7('0x7'),'allowNull':![]},'additionalSearchContact':{'type':Sequelize[_0xe3d7('0x2')],'allowNull':!![]},'openNewTab':{'type':Sequelize[_0xe3d7('0x8')],'defaultValue':!![]}};
\ No newline at end of file
index 49ce1e6..2cf47f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15f1=['order','map','getSubjects','findOne','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','undefined','limit','offset','set','Content-Range','reject','update','destroy','then','end','error','stack','name','send','index','Dynamics365Configuration','rawAttributes','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','merge','options','count','includeAll','findAll','rows','catch','show','find','create','body','params','getFields','Dynamics365Field'];(function(_0x432854,_0x39464a){var _0x38f0bb=function(_0x25cdcc){while(--_0x25cdcc){_0x432854['push'](_0x432854['shift']());}};_0x38f0bb(++_0x39464a);}(_0x15f1,0x1eb));var _0x115f=function(_0x181d41,_0x4542d1){_0x181d41=_0x181d41-0x0;var _0x4d5e1f=_0x15f1[_0x181d41];return _0x4d5e1f;};'use strict';var emlformat=require(_0x115f('0x0'));var rimraf=require(_0x115f('0x1'));var zipdir=require(_0x115f('0x2'));var jsonpatch=require(_0x115f('0x3'));var rp=require(_0x115f('0x4'));var moment=require(_0x115f('0x5'));var BPromise=require(_0x115f('0x6'));var Mustache=require(_0x115f('0x7'));var util=require('util');var path=require(_0x115f('0x8'));var sox=require(_0x115f('0x9'));var csv=require(_0x115f('0xa'));var ejs=require(_0x115f('0xb'));var fs=require('fs');var fs_extra=require(_0x115f('0xc'));var _=require('lodash');var squel=require(_0x115f('0xd'));var crypto=require(_0x115f('0xe'));var jsforce=require(_0x115f('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x115f('0xa'));var querystring=require(_0x115f('0x10'));var Papa=require('papaparse');var Redis=require(_0x115f('0x11'));var authService=require(_0x115f('0x12'));var qs=require(_0x115f('0x13'));var as=require(_0x115f('0x14'));var hardwareService=require(_0x115f('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0x115f('0x16'));var config=require(_0x115f('0x17'));var licenseUtil=require(_0x115f('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xee28ce,_0x282234){_0x282234=_0x282234||0xcc;return function(_0x29590a){if(_0x29590a){return _0xee28ce[_0x115f('0x19')](_0x282234);}return _0xee28ce[_0x115f('0x1a')](_0x282234)['end']();};}function respondWithResult(_0x1412fe,_0x2848f8){_0x2848f8=_0x2848f8||0xc8;return function(_0x569118){if(_0x569118){return _0x1412fe[_0x115f('0x1a')](_0x2848f8)[_0x115f('0x1b')](_0x569118);}};}function respondWithFilteredResult(_0xfc3aff,_0x2f194a){return function(_0x4e5f42){if(_0x4e5f42){var _0x4d4d15=typeof _0x2f194a['offset']===_0x115f('0x1c')&&typeof _0x2f194a[_0x115f('0x1d')]===_0x115f('0x1c');var _0x1ca34d=_0x4e5f42['count'];var _0x40c844=_0x4d4d15?0x0:_0x2f194a[_0x115f('0x1e')];var _0x301490=_0x4d4d15?_0x4e5f42['count']:_0x2f194a[_0x115f('0x1e')]+_0x2f194a[_0x115f('0x1d')];var _0x5db1ad;if(_0x301490>=_0x1ca34d){_0x301490=_0x1ca34d;_0x5db1ad=0xc8;}else{_0x5db1ad=0xce;}_0xfc3aff['status'](_0x5db1ad);return _0xfc3aff[_0x115f('0x1f')](_0x115f('0x20'),_0x40c844+'-'+_0x301490+'/'+_0x1ca34d)[_0x115f('0x1b')](_0x4e5f42);}return null;};}function patchUpdates(_0x587fc5){return function(_0x365274){try{jsonpatch['apply'](_0x365274,_0x587fc5,!![]);}catch(_0xd2ced6){return BPromise[_0x115f('0x21')](_0xd2ced6);}return _0x365274['save']();};}function saveUpdates(_0x1c07d0,_0x1256d1){return function(_0x2bee9c){if(_0x2bee9c){return _0x2bee9c[_0x115f('0x22')](_0x1c07d0)['then'](function(_0x4dd1f5){return _0x4dd1f5;});}return null;};}function removeEntity(_0x242730,_0x27ad74){return function(_0x4794af){if(_0x4794af){return _0x4794af[_0x115f('0x23')]()[_0x115f('0x24')](function(){_0x242730[_0x115f('0x1a')](0xcc)[_0x115f('0x25')]();});}};}function handleEntityNotFound(_0x126199,_0x107aa2){return function(_0x74d7b1){if(!_0x74d7b1){_0x126199[_0x115f('0x19')](0x194);}return _0x74d7b1;};}function handleError(_0x39ae3e,_0x1f92fd){_0x1f92fd=_0x1f92fd||0x1f4;return function(_0x39be6f){logger[_0x115f('0x26')](_0x39be6f[_0x115f('0x27')]);if(_0x39be6f[_0x115f('0x28')]){delete _0x39be6f['name'];}_0x39ae3e[_0x115f('0x1a')](_0x1f92fd)[_0x115f('0x29')](_0x39be6f);};}exports[_0x115f('0x2a')]=function(_0x19e027,_0x58b474){var _0x2429e5={},_0xad73d0={},_0x2e59fb={'count':0x0,'rows':[]};var _0x513a9f=_['map'](db[_0x115f('0x2b')][_0x115f('0x2c')],function(_0x2a3bd1){return{'name':_0x2a3bd1['fieldName'],'type':_0x2a3bd1[_0x115f('0x2d')][_0x115f('0x2e')]};});_0xad73d0[_0x115f('0x2f')]=_['map'](_0x513a9f,_0x115f('0x28'));_0xad73d0[_0x115f('0x30')]=_[_0x115f('0x31')](_0x19e027[_0x115f('0x30')]);_0xad73d0[_0x115f('0x32')]=_[_0x115f('0x33')](_0xad73d0[_0x115f('0x2f')],_0xad73d0['query']);_0x2429e5['attributes']=_[_0x115f('0x33')](_0xad73d0[_0x115f('0x2f')],qs[_0x115f('0x34')](_0x19e027[_0x115f('0x30')][_0x115f('0x34')]));_0x2429e5[_0x115f('0x35')]=_0x2429e5['attributes'][_0x115f('0x36')]?_0x2429e5[_0x115f('0x35')]:_0xad73d0[_0x115f('0x2f')];if(!_0x19e027[_0x115f('0x30')][_0x115f('0x37')](_0x115f('0x38'))){_0x2429e5[_0x115f('0x1d')]=qs[_0x115f('0x1d')](_0x19e027['query'][_0x115f('0x1d')]);_0x2429e5[_0x115f('0x1e')]=qs[_0x115f('0x1e')](_0x19e027[_0x115f('0x30')]['offset']);}_0x2429e5['order']=qs[_0x115f('0x39')](_0x19e027['query'][_0x115f('0x39')]);_0x2429e5[_0x115f('0x3a')]=qs[_0x115f('0x32')](_[_0x115f('0x3b')](_0x19e027[_0x115f('0x30')],_0xad73d0[_0x115f('0x32')]),_0x513a9f);if(_0x19e027[_0x115f('0x30')][_0x115f('0x3c')]){_0x2429e5[_0x115f('0x3a')]=_['merge'](_0x2429e5['where'],{'$or':_['map'](_0x513a9f,function(_0x525235){if(_0x525235['type']!==_0x115f('0x3d')){var _0x5c7b90={};_0x5c7b90[_0x525235[_0x115f('0x28')]]={'$like':'%'+_0x19e027[_0x115f('0x30')][_0x115f('0x3c')]+'%'};return _0x5c7b90;}})});}_0x2429e5=_[_0x115f('0x3e')]({},_0x2429e5,_0x19e027[_0x115f('0x3f')]);var _0x358e5d={'where':_0x2429e5['where']};return db[_0x115f('0x2b')][_0x115f('0x40')](_0x358e5d)[_0x115f('0x24')](function(_0x241355){_0x2e59fb[_0x115f('0x40')]=_0x241355;if(_0x19e027[_0x115f('0x30')][_0x115f('0x41')]){_0x2429e5['include']=[{'all':!![]}];}return db[_0x115f('0x2b')][_0x115f('0x42')](_0x2429e5);})[_0x115f('0x24')](function(_0xe0abec){_0x2e59fb[_0x115f('0x43')]=_0xe0abec;return _0x2e59fb;})[_0x115f('0x24')](respondWithFilteredResult(_0x58b474,_0x2429e5))[_0x115f('0x44')](handleError(_0x58b474,null));};exports[_0x115f('0x45')]=function(_0x510e55,_0x53325b){var _0x46565e={'raw':![],'where':{'id':_0x510e55['params']['id']}},_0x17191b={};_0x17191b[_0x115f('0x2f')]=_['keys'](db[_0x115f('0x2b')]['rawAttributes']);_0x17191b[_0x115f('0x30')]=_['keys'](_0x510e55[_0x115f('0x30')]);_0x17191b['filters']=_[_0x115f('0x33')](_0x17191b['model'],_0x17191b[_0x115f('0x30')]);_0x46565e[_0x115f('0x35')]=_[_0x115f('0x33')](_0x17191b[_0x115f('0x2f')],qs['fields'](_0x510e55[_0x115f('0x30')]['fields']));_0x46565e[_0x115f('0x35')]=_0x46565e[_0x115f('0x35')][_0x115f('0x36')]?_0x46565e[_0x115f('0x35')]:_0x17191b[_0x115f('0x2f')];if(_0x510e55[_0x115f('0x30')][_0x115f('0x41')]){_0x46565e['include']=[{'all':!![]}];}_0x46565e=_[_0x115f('0x3e')]({},_0x46565e,_0x510e55['options']);return db[_0x115f('0x2b')][_0x115f('0x46')](_0x46565e)[_0x115f('0x24')](handleEntityNotFound(_0x53325b,null))[_0x115f('0x24')](respondWithResult(_0x53325b,null))[_0x115f('0x44')](handleError(_0x53325b,null));};exports[_0x115f('0x47')]=function(_0x44fe79,_0x522ede){return db['Dynamics365Configuration']['create'](_0x44fe79[_0x115f('0x48')],{})['then'](respondWithResult(_0x522ede,0xc9))[_0x115f('0x44')](handleError(_0x522ede,null));};exports['update']=function(_0x4d0b48,_0x53965d){if(_0x4d0b48[_0x115f('0x48')]['id']){delete _0x4d0b48['body']['id'];}return db[_0x115f('0x2b')]['find']({'where':{'id':_0x4d0b48[_0x115f('0x49')]['id']}})['then'](handleEntityNotFound(_0x53965d,null))[_0x115f('0x24')](saveUpdates(_0x4d0b48[_0x115f('0x48')],null))[_0x115f('0x24')](respondWithResult(_0x53965d,null))['catch'](handleError(_0x53965d,null));};exports[_0x115f('0x23')]=function(_0x3c20b7,_0x3b47fb){return db['Dynamics365Configuration'][_0x115f('0x46')]({'where':{'id':_0x3c20b7[_0x115f('0x49')]['id']}})[_0x115f('0x24')](handleEntityNotFound(_0x3b47fb,null))[_0x115f('0x24')](removeEntity(_0x3b47fb,null))[_0x115f('0x44')](handleError(_0x3b47fb,null));};exports[_0x115f('0x4a')]=function(_0x46fe39,_0xec7644,_0x34758a){var _0x294f36={};var _0x31b0fe={};var _0x4c76e0;var _0x4e2c8e;return db[_0x115f('0x2b')]['findOne']({'where':{'id':_0x46fe39[_0x115f('0x49')]['id']}})[_0x115f('0x24')](handleEntityNotFound(_0xec7644,null))[_0x115f('0x24')](function(_0x1234db){if(_0x1234db){_0x4c76e0=_0x1234db;_0x31b0fe[_0x115f('0x2f')]=_[_0x115f('0x31')](db[_0x115f('0x4b')][_0x115f('0x2c')]);_0x31b0fe[_0x115f('0x30')]=_[_0x115f('0x31')](_0x46fe39[_0x115f('0x30')]);_0x31b0fe[_0x115f('0x32')]=_[_0x115f('0x33')](_0x31b0fe[_0x115f('0x2f')],_0x31b0fe[_0x115f('0x30')]);_0x294f36['attributes']=_[_0x115f('0x33')](_0x31b0fe[_0x115f('0x2f')],qs['fields'](_0x46fe39['query']['fields']));_0x294f36[_0x115f('0x35')]=_0x294f36[_0x115f('0x35')]['length']?_0x294f36[_0x115f('0x35')]:_0x31b0fe[_0x115f('0x2f')];_0x294f36[_0x115f('0x4c')]=qs['sort'](_0x46fe39[_0x115f('0x30')][_0x115f('0x39')]);_0x294f36['where']=qs[_0x115f('0x32')](_[_0x115f('0x3b')](_0x46fe39['query'],_0x31b0fe[_0x115f('0x32')]));if(_0x46fe39['query']['filter']){_0x294f36['where']=_[_0x115f('0x3e')](_0x294f36[_0x115f('0x3a')],{'$or':_[_0x115f('0x4d')](_0x294f36['attributes'],function(_0x2fe03d){var _0x259070={};_0x259070[_0x2fe03d]={'$like':'%'+_0x46fe39[_0x115f('0x30')][_0x115f('0x3c')]+'%'};return _0x259070;})});}_0x294f36=_[_0x115f('0x3e')]({},_0x294f36,_0x46fe39[_0x115f('0x3f')]);return _0x4c76e0[_0x115f('0x4a')](_0x294f36);}})['then'](function(_0x127280){if(_0x127280){_0x4e2c8e=_0x127280[_0x115f('0x36')];if(!_0x46fe39[_0x115f('0x30')][_0x115f('0x37')](_0x115f('0x38'))){_0x294f36[_0x115f('0x1d')]=qs[_0x115f('0x1d')](_0x46fe39['query'][_0x115f('0x1d')]);_0x294f36[_0x115f('0x1e')]=qs['offset'](_0x46fe39['query'][_0x115f('0x1e')]);}return _0x4c76e0[_0x115f('0x4a')](_0x294f36);}})[_0x115f('0x24')](function(_0x81f8ec){if(_0x81f8ec){return _0x81f8ec?{'count':_0x4e2c8e,'rows':_0x81f8ec}:null;}})[_0x115f('0x24')](respondWithResult(_0xec7644,null))[_0x115f('0x44')](handleError(_0xec7644,null));};exports[_0x115f('0x4e')]=function(_0x397813,_0x30bfcb,_0xafafb8){var _0x590ea9={};var _0x438b82={};var _0x166974;var _0xba9e69;return db[_0x115f('0x2b')][_0x115f('0x4f')]({'where':{'id':_0x397813[_0x115f('0x49')]['id']}})[_0x115f('0x24')](handleEntityNotFound(_0x30bfcb,null))[_0x115f('0x24')](function(_0x562b6b){if(_0x562b6b){_0x166974=_0x562b6b;_0x438b82['model']=_[_0x115f('0x31')](db[_0x115f('0x4b')][_0x115f('0x2c')]);_0x438b82[_0x115f('0x30')]=_[_0x115f('0x31')](_0x397813[_0x115f('0x30')]);_0x438b82['filters']=_[_0x115f('0x33')](_0x438b82[_0x115f('0x2f')],_0x438b82[_0x115f('0x30')]);_0x590ea9['attributes']=_[_0x115f('0x33')](_0x438b82[_0x115f('0x2f')],qs['fields'](_0x397813[_0x115f('0x30')]['fields']));_0x590ea9[_0x115f('0x35')]=_0x590ea9[_0x115f('0x35')]['length']?_0x590ea9[_0x115f('0x35')]:_0x438b82[_0x115f('0x2f')];_0x590ea9[_0x115f('0x4c')]=qs['sort'](_0x397813[_0x115f('0x30')][_0x115f('0x39')]);_0x590ea9[_0x115f('0x3a')]=qs[_0x115f('0x32')](_['pick'](_0x397813['query'],_0x438b82[_0x115f('0x32')]));if(_0x397813[_0x115f('0x30')]['filter']){_0x590ea9[_0x115f('0x3a')]=_[_0x115f('0x3e')](_0x590ea9[_0x115f('0x3a')],{'$or':_['map'](_0x590ea9[_0x115f('0x35')],function(_0x3c275b){var _0x3dc411={};_0x3dc411[_0x3c275b]={'$like':'%'+_0x397813[_0x115f('0x30')][_0x115f('0x3c')]+'%'};return _0x3dc411;})});}_0x590ea9=_['merge']({},_0x590ea9,_0x397813['options']);return _0x166974[_0x115f('0x4e')](_0x590ea9);}})[_0x115f('0x24')](function(_0x4fc1d1){if(_0x4fc1d1){_0xba9e69=_0x4fc1d1[_0x115f('0x36')];if(!_0x397813[_0x115f('0x30')][_0x115f('0x37')]('nolimit')){_0x590ea9['limit']=qs['limit'](_0x397813[_0x115f('0x30')]['limit']);_0x590ea9[_0x115f('0x1e')]=qs[_0x115f('0x1e')](_0x397813[_0x115f('0x30')]['offset']);}return _0x166974['getSubjects'](_0x590ea9);}})[_0x115f('0x24')](function(_0x302db9){if(_0x302db9){return _0x302db9?{'count':_0xba9e69,'rows':_0x302db9}:null;}})['then'](respondWithResult(_0x30bfcb,null))['catch'](handleError(_0x30bfcb,null));};exports[_0x115f('0x50')]=function(_0x2c3487,_0x2ad119,_0x49ba13){var _0xc1fa39={};var _0xe16cf1={};var _0x5d1927;var _0x2e8c86;return db[_0x115f('0x2b')][_0x115f('0x4f')]({'where':{'id':_0x2c3487['params']['id']}})[_0x115f('0x24')](handleEntityNotFound(_0x2ad119,null))[_0x115f('0x24')](function(_0x5d20bc){if(_0x5d20bc){_0x5d1927=_0x5d20bc;_0xe16cf1['model']=_[_0x115f('0x31')](db[_0x115f('0x4b')][_0x115f('0x2c')]);_0xe16cf1[_0x115f('0x30')]=_['keys'](_0x2c3487['query']);_0xe16cf1['filters']=_[_0x115f('0x33')](_0xe16cf1[_0x115f('0x2f')],_0xe16cf1[_0x115f('0x30')]);_0xc1fa39[_0x115f('0x35')]=_[_0x115f('0x33')](_0xe16cf1['model'],qs['fields'](_0x2c3487['query']['fields']));_0xc1fa39[_0x115f('0x35')]=_0xc1fa39[_0x115f('0x35')]['length']?_0xc1fa39[_0x115f('0x35')]:_0xe16cf1[_0x115f('0x2f')];_0xc1fa39['order']=qs[_0x115f('0x39')](_0x2c3487['query'][_0x115f('0x39')]);_0xc1fa39[_0x115f('0x3a')]=qs[_0x115f('0x32')](_[_0x115f('0x3b')](_0x2c3487[_0x115f('0x30')],_0xe16cf1['filters']));if(_0x2c3487[_0x115f('0x30')][_0x115f('0x3c')]){_0xc1fa39['where']=_[_0x115f('0x3e')](_0xc1fa39[_0x115f('0x3a')],{'$or':_['map'](_0xc1fa39[_0x115f('0x35')],function(_0x21806c){var _0xd56deb={};_0xd56deb[_0x21806c]={'$like':'%'+_0x2c3487[_0x115f('0x30')][_0x115f('0x3c')]+'%'};return _0xd56deb;})});}_0xc1fa39=_['merge']({},_0xc1fa39,_0x2c3487[_0x115f('0x3f')]);return _0x5d1927['getDescriptions'](_0xc1fa39);}})[_0x115f('0x24')](function(_0x2df309){if(_0x2df309){_0x2e8c86=_0x2df309[_0x115f('0x36')];if(!_0x2c3487['query'][_0x115f('0x37')](_0x115f('0x38'))){_0xc1fa39['limit']=qs['limit'](_0x2c3487['query'][_0x115f('0x1d')]);_0xc1fa39['offset']=qs['offset'](_0x2c3487[_0x115f('0x30')][_0x115f('0x1e')]);}return _0x5d1927[_0x115f('0x50')](_0xc1fa39);}})['then'](function(_0x824c5b){if(_0x824c5b){return _0x824c5b?{'count':_0x2e8c86,'rows':_0x824c5b}:null;}})[_0x115f('0x24')](respondWithResult(_0x2ad119,null))['catch'](handleError(_0x2ad119,null));};
\ No newline at end of file
+var _0x036e=['crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','count','limit','Content-Range','json','apply','reject','then','destroy','error','stack','name','map','Dynamics365Configuration','fieldName','type','key','keys','query','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','rawAttributes','intersection','include','create','body','update','find','getFields','findOne','filter','getSubjects','order','getDescriptions','Dynamics365Field','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel'];(function(_0x3aa518,_0x4d299c){var _0x432918=function(_0x263bf9){while(--_0x263bf9){_0x3aa518['push'](_0x3aa518['shift']());}};_0x432918(++_0x4d299c);}(_0x036e,0x1c3));var _0xe036=function(_0x680fd6,_0x444b6b){_0x680fd6=_0x680fd6-0x0;var _0xab75e2=_0x036e[_0x680fd6];return _0xab75e2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe036('0x0'));var zipdir=require(_0xe036('0x1'));var jsonpatch=require(_0xe036('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xe036('0x3'));var Mustache=require(_0xe036('0x4'));var util=require(_0xe036('0x5'));var path=require('path');var sox=require(_0xe036('0x6'));var csv=require(_0xe036('0x7'));var ejs=require(_0xe036('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe036('0x9'));var squel=require(_0xe036('0xa'));var crypto=require(_0xe036('0xb'));var jsforce=require(_0xe036('0xc'));var deskjs=require(_0xe036('0xd'));var toCsv=require(_0xe036('0x7'));var querystring=require('querystring');var Papa=require(_0xe036('0xe'));var Redis=require(_0xe036('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xe036('0x10'));var hardwareService=require(_0xe036('0x11'));var logger=require(_0xe036('0x12'))('api');var utils=require(_0xe036('0x13'));var config=require(_0xe036('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xe036('0x15'))['db'];function respondWithStatusCode(_0x53cabf,_0x6d8f0){_0x6d8f0=_0x6d8f0||0xcc;return function(_0x265997){if(_0x265997){return _0x53cabf[_0xe036('0x16')](_0x6d8f0);}return _0x53cabf[_0xe036('0x17')](_0x6d8f0)[_0xe036('0x18')]();};}function respondWithResult(_0x733a4c,_0xe64988){_0xe64988=_0xe64988||0xc8;return function(_0x412f50){if(_0x412f50){return _0x733a4c[_0xe036('0x17')](_0xe64988)['json'](_0x412f50);}};}function respondWithFilteredResult(_0x34d979,_0x3bd0bf){return function(_0x19b798){if(_0x19b798){var _0x3863f8=typeof _0x3bd0bf[_0xe036('0x19')]==='undefined'&&typeof _0x3bd0bf['limit']==='undefined';var _0x537cc7=_0x19b798[_0xe036('0x1a')];var _0x45f644=_0x3863f8?0x0:_0x3bd0bf[_0xe036('0x19')];var _0x2ce9fd=_0x3863f8?_0x19b798['count']:_0x3bd0bf[_0xe036('0x19')]+_0x3bd0bf[_0xe036('0x1b')];var _0x1285c3;if(_0x2ce9fd>=_0x537cc7){_0x2ce9fd=_0x537cc7;_0x1285c3=0xc8;}else{_0x1285c3=0xce;}_0x34d979[_0xe036('0x17')](_0x1285c3);return _0x34d979['set'](_0xe036('0x1c'),_0x45f644+'-'+_0x2ce9fd+'/'+_0x537cc7)[_0xe036('0x1d')](_0x19b798);}return null;};}function patchUpdates(_0x26d9c7){return function(_0x224bfe){try{jsonpatch[_0xe036('0x1e')](_0x224bfe,_0x26d9c7,!![]);}catch(_0x2181e8){return BPromise[_0xe036('0x1f')](_0x2181e8);}return _0x224bfe['save']();};}function saveUpdates(_0x46a3af,_0x28436d){return function(_0x3c4cc3){if(_0x3c4cc3){return _0x3c4cc3['update'](_0x46a3af)[_0xe036('0x20')](function(_0xb33765){return _0xb33765;});}return null;};}function removeEntity(_0x2598cd,_0x297b94){return function(_0x902e60){if(_0x902e60){return _0x902e60[_0xe036('0x21')]()['then'](function(){_0x2598cd[_0xe036('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x113f1f,_0x38783c){return function(_0x5d9cfc){if(!_0x5d9cfc){_0x113f1f[_0xe036('0x16')](0x194);}return _0x5d9cfc;};}function handleError(_0x473f25,_0x150b22){_0x150b22=_0x150b22||0x1f4;return function(_0x15b042){logger[_0xe036('0x22')](_0x15b042[_0xe036('0x23')]);if(_0x15b042['name']){delete _0x15b042[_0xe036('0x24')];}_0x473f25[_0xe036('0x17')](_0x150b22)['send'](_0x15b042);};}exports['index']=function(_0x981db8,_0x15b1ee){var _0x531498={},_0x3c6abb={},_0x5ae08b={'count':0x0,'rows':[]};var _0x436b89=_[_0xe036('0x25')](db[_0xe036('0x26')]['rawAttributes'],function(_0x270997){return{'name':_0x270997[_0xe036('0x27')],'type':_0x270997[_0xe036('0x28')][_0xe036('0x29')]};});_0x3c6abb['model']=_[_0xe036('0x25')](_0x436b89,_0xe036('0x24'));_0x3c6abb['query']=_[_0xe036('0x2a')](_0x981db8[_0xe036('0x2b')]);_0x3c6abb['filters']=_['intersection'](_0x3c6abb[_0xe036('0x2c')],_0x3c6abb[_0xe036('0x2b')]);_0x531498[_0xe036('0x2d')]=_['intersection'](_0x3c6abb[_0xe036('0x2c')],qs['fields'](_0x981db8[_0xe036('0x2b')][_0xe036('0x2e')]));_0x531498['attributes']=_0x531498[_0xe036('0x2d')][_0xe036('0x2f')]?_0x531498[_0xe036('0x2d')]:_0x3c6abb[_0xe036('0x2c')];if(!_0x981db8[_0xe036('0x2b')][_0xe036('0x30')](_0xe036('0x31'))){_0x531498[_0xe036('0x1b')]=qs[_0xe036('0x1b')](_0x981db8[_0xe036('0x2b')][_0xe036('0x1b')]);_0x531498[_0xe036('0x19')]=qs['offset'](_0x981db8[_0xe036('0x2b')][_0xe036('0x19')]);}_0x531498['order']=qs[_0xe036('0x32')](_0x981db8['query'][_0xe036('0x32')]);_0x531498[_0xe036('0x33')]=qs[_0xe036('0x34')](_[_0xe036('0x35')](_0x981db8[_0xe036('0x2b')],_0x3c6abb[_0xe036('0x34')]),_0x436b89);if(_0x981db8['query']['filter']){_0x531498[_0xe036('0x33')]=_[_0xe036('0x36')](_0x531498['where'],{'$or':_[_0xe036('0x25')](_0x436b89,function(_0x184eb9){if(_0x184eb9['type']!==_0xe036('0x37')){var _0x2d6c24={};_0x2d6c24[_0x184eb9['name']]={'$like':'%'+_0x981db8[_0xe036('0x2b')]['filter']+'%'};return _0x2d6c24;}})});}_0x531498=_['merge']({},_0x531498,_0x981db8[_0xe036('0x38')]);var _0x2e76a4={'where':_0x531498[_0xe036('0x33')]};return db[_0xe036('0x26')][_0xe036('0x1a')](_0x2e76a4)[_0xe036('0x20')](function(_0x528fcb){_0x5ae08b['count']=_0x528fcb;if(_0x981db8[_0xe036('0x2b')][_0xe036('0x39')]){_0x531498['include']=[{'all':!![]}];}return db[_0xe036('0x26')][_0xe036('0x3a')](_0x531498);})[_0xe036('0x20')](function(_0x25758f){_0x5ae08b[_0xe036('0x3b')]=_0x25758f;return _0x5ae08b;})[_0xe036('0x20')](respondWithFilteredResult(_0x15b1ee,_0x531498))[_0xe036('0x3c')](handleError(_0x15b1ee,null));};exports[_0xe036('0x3d')]=function(_0x45eb6d,_0x177c2b){var _0x3e74d2={'raw':![],'where':{'id':_0x45eb6d[_0xe036('0x3e')]['id']}},_0x4a59c9={};_0x4a59c9['model']=_[_0xe036('0x2a')](db['Dynamics365Configuration'][_0xe036('0x3f')]);_0x4a59c9[_0xe036('0x2b')]=_[_0xe036('0x2a')](_0x45eb6d[_0xe036('0x2b')]);_0x4a59c9[_0xe036('0x34')]=_[_0xe036('0x40')](_0x4a59c9['model'],_0x4a59c9[_0xe036('0x2b')]);_0x3e74d2[_0xe036('0x2d')]=_[_0xe036('0x40')](_0x4a59c9[_0xe036('0x2c')],qs[_0xe036('0x2e')](_0x45eb6d['query']['fields']));_0x3e74d2[_0xe036('0x2d')]=_0x3e74d2[_0xe036('0x2d')][_0xe036('0x2f')]?_0x3e74d2[_0xe036('0x2d')]:_0x4a59c9[_0xe036('0x2c')];if(_0x45eb6d[_0xe036('0x2b')][_0xe036('0x39')]){_0x3e74d2[_0xe036('0x41')]=[{'all':!![]}];}_0x3e74d2=_['merge']({},_0x3e74d2,_0x45eb6d[_0xe036('0x38')]);return db['Dynamics365Configuration']['find'](_0x3e74d2)[_0xe036('0x20')](handleEntityNotFound(_0x177c2b,null))[_0xe036('0x20')](respondWithResult(_0x177c2b,null))[_0xe036('0x3c')](handleError(_0x177c2b,null));};exports['create']=function(_0x3d5aec,_0x1b66b6){return db['Dynamics365Configuration'][_0xe036('0x42')](_0x3d5aec[_0xe036('0x43')],{})[_0xe036('0x20')](respondWithResult(_0x1b66b6,0xc9))['catch'](handleError(_0x1b66b6,null));};exports[_0xe036('0x44')]=function(_0x1624fe,_0x457190){if(_0x1624fe[_0xe036('0x43')]['id']){delete _0x1624fe[_0xe036('0x43')]['id'];}return db['Dynamics365Configuration'][_0xe036('0x45')]({'where':{'id':_0x1624fe[_0xe036('0x3e')]['id']}})['then'](handleEntityNotFound(_0x457190,null))[_0xe036('0x20')](saveUpdates(_0x1624fe['body'],null))[_0xe036('0x20')](respondWithResult(_0x457190,null))[_0xe036('0x3c')](handleError(_0x457190,null));};exports[_0xe036('0x21')]=function(_0x1200f6,_0x1ae91f){return db[_0xe036('0x26')][_0xe036('0x45')]({'where':{'id':_0x1200f6[_0xe036('0x3e')]['id']}})[_0xe036('0x20')](handleEntityNotFound(_0x1ae91f,null))[_0xe036('0x20')](removeEntity(_0x1ae91f,null))[_0xe036('0x3c')](handleError(_0x1ae91f,null));};exports[_0xe036('0x46')]=function(_0x1c3b61,_0x3161e5,_0x501b13){var _0x19db4c={};var _0x1b5442={};var _0xf6a512;var _0x502731;return db['Dynamics365Configuration'][_0xe036('0x47')]({'where':{'id':_0x1c3b61[_0xe036('0x3e')]['id']}})['then'](handleEntityNotFound(_0x3161e5,null))[_0xe036('0x20')](function(_0x1277fb){if(_0x1277fb){_0xf6a512=_0x1277fb;_0x1b5442['model']=_[_0xe036('0x2a')](db['Dynamics365Field']['rawAttributes']);_0x1b5442[_0xe036('0x2b')]=_[_0xe036('0x2a')](_0x1c3b61[_0xe036('0x2b')]);_0x1b5442[_0xe036('0x34')]=_[_0xe036('0x40')](_0x1b5442[_0xe036('0x2c')],_0x1b5442[_0xe036('0x2b')]);_0x19db4c['attributes']=_[_0xe036('0x40')](_0x1b5442[_0xe036('0x2c')],qs[_0xe036('0x2e')](_0x1c3b61['query'][_0xe036('0x2e')]));_0x19db4c[_0xe036('0x2d')]=_0x19db4c['attributes'][_0xe036('0x2f')]?_0x19db4c['attributes']:_0x1b5442[_0xe036('0x2c')];_0x19db4c['order']=qs[_0xe036('0x32')](_0x1c3b61[_0xe036('0x2b')][_0xe036('0x32')]);_0x19db4c[_0xe036('0x33')]=qs[_0xe036('0x34')](_['pick'](_0x1c3b61[_0xe036('0x2b')],_0x1b5442[_0xe036('0x34')]));if(_0x1c3b61[_0xe036('0x2b')][_0xe036('0x48')]){_0x19db4c['where']=_[_0xe036('0x36')](_0x19db4c['where'],{'$or':_['map'](_0x19db4c[_0xe036('0x2d')],function(_0x278ca1){var _0x5d8394={};_0x5d8394[_0x278ca1]={'$like':'%'+_0x1c3b61['query'][_0xe036('0x48')]+'%'};return _0x5d8394;})});}_0x19db4c=_[_0xe036('0x36')]({},_0x19db4c,_0x1c3b61[_0xe036('0x38')]);return _0xf6a512[_0xe036('0x46')](_0x19db4c);}})[_0xe036('0x20')](function(_0x4c6e99){if(_0x4c6e99){_0x502731=_0x4c6e99[_0xe036('0x2f')];if(!_0x1c3b61[_0xe036('0x2b')][_0xe036('0x30')](_0xe036('0x31'))){_0x19db4c[_0xe036('0x1b')]=qs[_0xe036('0x1b')](_0x1c3b61[_0xe036('0x2b')]['limit']);_0x19db4c[_0xe036('0x19')]=qs['offset'](_0x1c3b61[_0xe036('0x2b')][_0xe036('0x19')]);}return _0xf6a512[_0xe036('0x46')](_0x19db4c);}})['then'](function(_0x5744a7){if(_0x5744a7){return _0x5744a7?{'count':_0x502731,'rows':_0x5744a7}:null;}})['then'](respondWithResult(_0x3161e5,null))[_0xe036('0x3c')](handleError(_0x3161e5,null));};exports[_0xe036('0x49')]=function(_0x5c3ec5,_0x16aa22,_0x7d211c){var _0x4fffd3={};var _0x510183={};var _0xcb5e33;var _0x6a8fd2;return db[_0xe036('0x26')][_0xe036('0x47')]({'where':{'id':_0x5c3ec5[_0xe036('0x3e')]['id']}})['then'](handleEntityNotFound(_0x16aa22,null))[_0xe036('0x20')](function(_0x37ccd9){if(_0x37ccd9){_0xcb5e33=_0x37ccd9;_0x510183[_0xe036('0x2c')]=_[_0xe036('0x2a')](db['Dynamics365Field']['rawAttributes']);_0x510183['query']=_[_0xe036('0x2a')](_0x5c3ec5[_0xe036('0x2b')]);_0x510183[_0xe036('0x34')]=_['intersection'](_0x510183[_0xe036('0x2c')],_0x510183[_0xe036('0x2b')]);_0x4fffd3[_0xe036('0x2d')]=_[_0xe036('0x40')](_0x510183[_0xe036('0x2c')],qs['fields'](_0x5c3ec5['query'][_0xe036('0x2e')]));_0x4fffd3[_0xe036('0x2d')]=_0x4fffd3['attributes'][_0xe036('0x2f')]?_0x4fffd3[_0xe036('0x2d')]:_0x510183['model'];_0x4fffd3[_0xe036('0x4a')]=qs[_0xe036('0x32')](_0x5c3ec5[_0xe036('0x2b')][_0xe036('0x32')]);_0x4fffd3[_0xe036('0x33')]=qs[_0xe036('0x34')](_['pick'](_0x5c3ec5[_0xe036('0x2b')],_0x510183[_0xe036('0x34')]));if(_0x5c3ec5[_0xe036('0x2b')][_0xe036('0x48')]){_0x4fffd3[_0xe036('0x33')]=_[_0xe036('0x36')](_0x4fffd3[_0xe036('0x33')],{'$or':_[_0xe036('0x25')](_0x4fffd3[_0xe036('0x2d')],function(_0x3099b0){var _0x291ede={};_0x291ede[_0x3099b0]={'$like':'%'+_0x5c3ec5[_0xe036('0x2b')]['filter']+'%'};return _0x291ede;})});}_0x4fffd3=_['merge']({},_0x4fffd3,_0x5c3ec5[_0xe036('0x38')]);return _0xcb5e33[_0xe036('0x49')](_0x4fffd3);}})[_0xe036('0x20')](function(_0x3989bc){if(_0x3989bc){_0x6a8fd2=_0x3989bc[_0xe036('0x2f')];if(!_0x5c3ec5[_0xe036('0x2b')][_0xe036('0x30')]('nolimit')){_0x4fffd3[_0xe036('0x1b')]=qs[_0xe036('0x1b')](_0x5c3ec5[_0xe036('0x2b')][_0xe036('0x1b')]);_0x4fffd3[_0xe036('0x19')]=qs['offset'](_0x5c3ec5['query'][_0xe036('0x19')]);}return _0xcb5e33[_0xe036('0x49')](_0x4fffd3);}})[_0xe036('0x20')](function(_0x3e3780){if(_0x3e3780){return _0x3e3780?{'count':_0x6a8fd2,'rows':_0x3e3780}:null;}})[_0xe036('0x20')](respondWithResult(_0x16aa22,null))['catch'](handleError(_0x16aa22,null));};exports[_0xe036('0x4b')]=function(_0x273f59,_0x29fa3c,_0xa5bda1){var _0x555bc6={};var _0x3a981a={};var _0x17611d;var _0x23583b;return db[_0xe036('0x26')][_0xe036('0x47')]({'where':{'id':_0x273f59[_0xe036('0x3e')]['id']}})['then'](handleEntityNotFound(_0x29fa3c,null))[_0xe036('0x20')](function(_0x16528e){if(_0x16528e){_0x17611d=_0x16528e;_0x3a981a['model']=_[_0xe036('0x2a')](db[_0xe036('0x4c')][_0xe036('0x3f')]);_0x3a981a[_0xe036('0x2b')]=_['keys'](_0x273f59[_0xe036('0x2b')]);_0x3a981a[_0xe036('0x34')]=_['intersection'](_0x3a981a['model'],_0x3a981a[_0xe036('0x2b')]);_0x555bc6[_0xe036('0x2d')]=_['intersection'](_0x3a981a['model'],qs[_0xe036('0x2e')](_0x273f59[_0xe036('0x2b')][_0xe036('0x2e')]));_0x555bc6[_0xe036('0x2d')]=_0x555bc6[_0xe036('0x2d')][_0xe036('0x2f')]?_0x555bc6['attributes']:_0x3a981a[_0xe036('0x2c')];_0x555bc6['order']=qs[_0xe036('0x32')](_0x273f59[_0xe036('0x2b')][_0xe036('0x32')]);_0x555bc6[_0xe036('0x33')]=qs['filters'](_['pick'](_0x273f59[_0xe036('0x2b')],_0x3a981a[_0xe036('0x34')]));if(_0x273f59[_0xe036('0x2b')][_0xe036('0x48')]){_0x555bc6[_0xe036('0x33')]=_[_0xe036('0x36')](_0x555bc6['where'],{'$or':_[_0xe036('0x25')](_0x555bc6[_0xe036('0x2d')],function(_0x5156f6){var _0x14e1cd={};_0x14e1cd[_0x5156f6]={'$like':'%'+_0x273f59[_0xe036('0x2b')][_0xe036('0x48')]+'%'};return _0x14e1cd;})});}_0x555bc6=_['merge']({},_0x555bc6,_0x273f59[_0xe036('0x38')]);return _0x17611d['getDescriptions'](_0x555bc6);}})[_0xe036('0x20')](function(_0x17061c){if(_0x17061c){_0x23583b=_0x17061c['length'];if(!_0x273f59[_0xe036('0x2b')][_0xe036('0x30')](_0xe036('0x31'))){_0x555bc6[_0xe036('0x1b')]=qs[_0xe036('0x1b')](_0x273f59[_0xe036('0x2b')][_0xe036('0x1b')]);_0x555bc6[_0xe036('0x19')]=qs[_0xe036('0x19')](_0x273f59[_0xe036('0x2b')][_0xe036('0x19')]);}return _0x17611d[_0xe036('0x4b')](_0x555bc6);}})[_0xe036('0x20')](function(_0x440cff){if(_0x440cff){return _0x440cff?{'count':_0x23583b,'rows':_0x440cff}:null;}})[_0xe036('0x20')](respondWithResult(_0x29fa3c,null))[_0xe036('0x3c')](handleError(_0x29fa3c,null));};
\ No newline at end of file
index 8c4528e..c829b90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa41a=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./intDynamics365Configuration.attributes','int_dynamics365_configurations','lodash','util','api'];(function(_0x5dbdb5,_0xd5f5fb){var _0xfa151d=function(_0x325f53){while(--_0x325f53){_0x5dbdb5['push'](_0x5dbdb5['shift']());}};_0xfa151d(++_0xd5f5fb);}(_0xa41a,0x6b));var _0xaa41=function(_0x4794f7,_0x5c7938){_0x4794f7=_0x4794f7-0x0;var _0x440184=_0xa41a[_0x4794f7];return _0x440184;};'use strict';var _=require(_0xaa41('0x0'));var util=require(_0xaa41('0x1'));var logger=require('../../config/logger')(_0xaa41('0x2'));var moment=require(_0xaa41('0x3'));var BPromise=require(_0xaa41('0x4'));var rp=require(_0xaa41('0x5'));var fs=require('fs');var path=require(_0xaa41('0x6'));var rimraf=require(_0xaa41('0x7'));var config=require(_0xaa41('0x8'));var attributes=require(_0xaa41('0x9'));module['exports']=function(_0x2122a0,_0x1ec9d4){return _0x2122a0['define']('Dynamics365Configuration',attributes,{'tableName':_0xaa41('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb43b=['rimraf','../../config/environment','./intDynamics365Configuration.attributes','Dynamics365Configuration','int_dynamics365_configurations','lodash','util','api','moment','bluebird','path'];(function(_0x2a1c3a,_0xcbecfa){var _0x196a72=function(_0x413b80){while(--_0x413b80){_0x2a1c3a['push'](_0x2a1c3a['shift']());}};_0x196a72(++_0xcbecfa);}(_0xb43b,0x1b2));var _0xbb43=function(_0xbc4a56,_0x3ff7e3){_0xbc4a56=_0xbc4a56-0x0;var _0xd8f8b=_0xb43b[_0xbc4a56];return _0xd8f8b;};'use strict';var _=require(_0xbb43('0x0'));var util=require(_0xbb43('0x1'));var logger=require('../../config/logger')(_0xbb43('0x2'));var moment=require(_0xbb43('0x3'));var BPromise=require(_0xbb43('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbb43('0x5'));var rimraf=require(_0xbb43('0x6'));var config=require(_0xbb43('0x7'));var attributes=require(_0xbb43('0x8'));module['exports']=function(_0x491fb9,_0x378df5){return _0x491fb9['define'](_0xbb43('0x9'),attributes,{'tableName':_0xbb43('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 30ceb04..bb65629 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdad4=['randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Dynamics365Configuration,\x20%s,\x20%s','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','moment','bluebird'];(function(_0x29697b,_0x3b6bb3){var _0x1df1b4=function(_0x2d5821){while(--_0x2d5821){_0x29697b['push'](_0x29697b['shift']());}};_0x1df1b4(++_0x3b6bb3);}(_0xdad4,0x1e2));var _0x4dad=function(_0x264d4d,_0x118fb5){_0x264d4d=_0x264d4d-0x0;var _0xc917e2=_0xdad4[_0x264d4d];return _0xc917e2;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x4dad('0x0'));var BPromise=require(_0x4dad('0x1'));var rs=require(_0x4dad('0x2'));var fs=require('fs');var Redis=require(_0x4dad('0x3'));var db=require(_0x4dad('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x4dad('0x5'))(_0x4dad('0x6'));var config=require(_0x4dad('0x7'));var jayson=require(_0x4dad('0x8'));var client=jayson[_0x4dad('0x9')][_0x4dad('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3096fb,_0x20c03f,_0x2c9028){return new BPromise(function(_0x389401,_0x25dc0d){return client[_0x4dad('0xb')](_0x3096fb,_0x2c9028)[_0x4dad('0xc')](function(_0x5721a1){logger[_0x4dad('0xd')](_0x4dad('0xe'),_0x20c03f,'request\x20sent');logger['debug'](_0x4dad('0xf'),_0x20c03f,_0x4dad('0x10'),JSON[_0x4dad('0x11')](_0x5721a1));if(_0x5721a1[_0x4dad('0x12')]){if(_0x5721a1[_0x4dad('0x12')][_0x4dad('0x13')]===0x1f4){logger['error'](_0x4dad('0xe'),_0x20c03f,_0x5721a1['error'][_0x4dad('0x14')]);return _0x25dc0d(_0x5721a1[_0x4dad('0x12')][_0x4dad('0x14')]);}logger[_0x4dad('0x12')]('Dynamics365Configuration,\x20%s,\x20%s',_0x20c03f,_0x5721a1['error']['message']);return _0x389401(_0x5721a1[_0x4dad('0x12')][_0x4dad('0x14')]);}else{logger[_0x4dad('0xd')]('Dynamics365Configuration,\x20%s,\x20%s',_0x20c03f,'request\x20sent');_0x389401(_0x5721a1['result'][_0x4dad('0x14')]);}})[_0x4dad('0x15')](function(_0x1a27a2){logger[_0x4dad('0x12')](_0x4dad('0xe'),_0x20c03f,_0x1a27a2);_0x25dc0d(_0x1a27a2);});});}
\ No newline at end of file
+var _0xe6fd=['stringify','error','code','message','result','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Dynamics365Configuration,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Configuration,\x20%s,\x20%s,\x20%s'];(function(_0x21b3bd,_0x21cb65){var _0x36db31=function(_0x4984be){while(--_0x4984be){_0x21b3bd['push'](_0x21b3bd['shift']());}};_0x36db31(++_0x21cb65);}(_0xe6fd,0xa6));var _0xde6f=function(_0x4249c0,_0x2d61d7){_0x4249c0=_0x4249c0-0x0;var _0x202d22=_0xe6fd[_0x4249c0];return _0x202d22;};'use strict';var _=require('lodash');var util=require(_0xde6f('0x0'));var moment=require(_0xde6f('0x1'));var BPromise=require(_0xde6f('0x2'));var rs=require(_0xde6f('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xde6f('0x4'));var logger=require(_0xde6f('0x5'))(_0xde6f('0x6'));var config=require(_0xde6f('0x7'));var jayson=require(_0xde6f('0x8'));var client=jayson[_0xde6f('0x9')][_0xde6f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4c717b,_0x12dc2b,_0x3b8778){return new BPromise(function(_0x3df520,_0x4e55cd){return client[_0xde6f('0xb')](_0x4c717b,_0x3b8778)[_0xde6f('0xc')](function(_0x43ae34){logger[_0xde6f('0xd')](_0xde6f('0xe'),_0x12dc2b,_0xde6f('0xf'));logger[_0xde6f('0x10')](_0xde6f('0x11'),_0x12dc2b,_0xde6f('0xf'),JSON[_0xde6f('0x12')](_0x43ae34));if(_0x43ae34[_0xde6f('0x13')]){if(_0x43ae34[_0xde6f('0x13')][_0xde6f('0x14')]===0x1f4){logger[_0xde6f('0x13')](_0xde6f('0xe'),_0x12dc2b,_0x43ae34[_0xde6f('0x13')][_0xde6f('0x15')]);return _0x4e55cd(_0x43ae34[_0xde6f('0x13')][_0xde6f('0x15')]);}logger[_0xde6f('0x13')](_0xde6f('0xe'),_0x12dc2b,_0x43ae34['error'][_0xde6f('0x15')]);return _0x3df520(_0x43ae34[_0xde6f('0x13')]['message']);}else{logger[_0xde6f('0xd')]('Dynamics365Configuration,\x20%s,\x20%s',_0x12dc2b,_0xde6f('0xf'));_0x3df520(_0x43ae34[_0xde6f('0x16')][_0xde6f('0x15')]);}})['catch'](function(_0x25181b){logger['error'](_0xde6f('0xe'),_0x12dc2b,_0x25181b);_0x4e55cd(_0x25181b);});});}
\ No newline at end of file
index b26f4f3..493c5e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10b4=['../../components/interaction/service','./intDynamics365Field.controller','get','isAuthenticated','index','post','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service'];(function(_0x58891c,_0x2bd262){var _0x5828bc=function(_0x452ca2){while(--_0x452ca2){_0x58891c['push'](_0x58891c['shift']());}};_0x5828bc(++_0x2bd262);}(_0x10b4,0x1ce));var _0x410b=function(_0x256d6a,_0x2f002f){_0x256d6a=_0x256d6a-0x0;var _0x460058=_0x10b4[_0x256d6a];return _0x460058;};'use strict';var multer=require(_0x410b('0x0'));var util=require(_0x410b('0x1'));var path=require(_0x410b('0x2'));var timeout=require(_0x410b('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x410b('0x4'));var auth=require(_0x410b('0x5'));var interaction=require(_0x410b('0x6'));var config=require('../../config/environment');var controller=require(_0x410b('0x7'));router[_0x410b('0x8')]('/',auth[_0x410b('0x9')](),controller[_0x410b('0xa')]);router[_0x410b('0x8')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x410b('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0x410b('0xc')](_0x410b('0xd'),auth['isAuthenticated'](),controller[_0x410b('0xe')]);router[_0x410b('0xf')]('/:id',auth[_0x410b('0x9')](),controller[_0x410b('0x10')]);module[_0x410b('0x11')]=router;
\ No newline at end of file
+var _0xcbe1=['put','update','delete','exports','multer','util','path','connect-timeout','express','./intDynamics365Field.controller','get','isAuthenticated','index','/:id','show','post','create'];(function(_0x2cb3ed,_0x4d36a3){var _0xe7e81a=function(_0x21b942){while(--_0x21b942){_0x2cb3ed['push'](_0x2cb3ed['shift']());}};_0xe7e81a(++_0x4d36a3);}(_0xcbe1,0x6a));var _0x1cbe=function(_0x1ee2ae,_0x17c0eb){_0x1ee2ae=_0x1ee2ae-0x0;var _0x1780e5=_0xcbe1[_0x1ee2ae];return _0x1780e5;};'use strict';var multer=require(_0x1cbe('0x0'));var util=require(_0x1cbe('0x1'));var path=require(_0x1cbe('0x2'));var timeout=require(_0x1cbe('0x3'));var express=require(_0x1cbe('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x1cbe('0x5'));router[_0x1cbe('0x6')]('/',auth[_0x1cbe('0x7')](),controller[_0x1cbe('0x8')]);router[_0x1cbe('0x6')](_0x1cbe('0x9'),auth['isAuthenticated'](),controller[_0x1cbe('0xa')]);router[_0x1cbe('0xb')]('/',auth[_0x1cbe('0x7')](),controller[_0x1cbe('0xc')]);router[_0x1cbe('0xd')](_0x1cbe('0x9'),auth['isAuthenticated'](),controller[_0x1cbe('0xe')]);router[_0x1cbe('0xf')](_0x1cbe('0x9'),auth[_0x1cbe('0x7')](),controller['destroy']);module[_0x1cbe('0x10')]=router;
\ No newline at end of file
index 3ba89e8..f005ff2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf367=['ENUM','variable','sequelize','exports','customVariable','picklist','string','STRING'];(function(_0x246119,_0x30a4f3){var _0x59c74f=function(_0x313fb5){while(--_0x313fb5){_0x246119['push'](_0x246119['shift']());}};_0x59c74f(++_0x30a4f3);}(_0xf367,0x18a));var _0x7f36=function(_0x50826b,_0x148668){_0x50826b=_0x50826b-0x0;var _0x473ca2=_0xf367[_0x50826b];return _0x473ca2;};'use strict';var Sequelize=require(_0x7f36('0x0'));module[_0x7f36('0x1')]={'type':{'type':Sequelize['ENUM']('string','variable',_0x7f36('0x2'),'keyValue',_0x7f36('0x3')),'defaultValue':_0x7f36('0x4')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x7f36('0x5')]},'keyType':{'type':Sequelize[_0x7f36('0x6')](_0x7f36('0x4'),_0x7f36('0x7'),_0x7f36('0x2'))},'keyContent':{'type':Sequelize[_0x7f36('0x5')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x7f36('0x5')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x7f36('0x5')]}};
\ No newline at end of file
+var _0xf813=['picklist','STRING','ENUM','customVariable','BOOLEAN','sequelize','exports','string','variable'];(function(_0x4a2673,_0x1290a1){var _0x20f7ff=function(_0x48b1b3){while(--_0x48b1b3){_0x4a2673['push'](_0x4a2673['shift']());}};_0x20f7ff(++_0x1290a1);}(_0xf813,0xb9));var _0x3f81=function(_0x18307e,_0x1898e8){_0x18307e=_0x18307e-0x0;var _0x24186b=_0xf813[_0x18307e];return _0x24186b;};'use strict';var Sequelize=require(_0x3f81('0x0'));module[_0x3f81('0x1')]={'type':{'type':Sequelize['ENUM'](_0x3f81('0x2'),_0x3f81('0x3'),'customVariable','keyValue',_0x3f81('0x4')),'defaultValue':_0x3f81('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x3f81('0x5')]},'keyType':{'type':Sequelize[_0x3f81('0x6')](_0x3f81('0x2'),'variable',_0x3f81('0x7'))},'keyContent':{'type':Sequelize[_0x3f81('0x5')]},'idField':{'type':Sequelize[_0x3f81('0x5')]},'nameField':{'type':Sequelize[_0x3f81('0x5')]},'customField':{'type':Sequelize[_0x3f81('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x3f81('0x5')]}};
\ No newline at end of file
index 45063e5..3fc0a9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f2c=['set','Content-Range','reject','save','update','then','error','stack','name','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','Dynamics365Field','includeAll','findAll','rows','show','keys','include','options','find','catch','create','body','params','destroy','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','undefined','count'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x6f2c,0x115));var _0xc6f2=function(_0x5b6daf,_0x1b849f){_0x5b6daf=_0x5b6daf-0x0;var _0x308083=_0x6f2c[_0x5b6daf];return _0x308083;};'use strict';var emlformat=require(_0xc6f2('0x0'));var rimraf=require(_0xc6f2('0x1'));var zipdir=require(_0xc6f2('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc6f2('0x3'));var moment=require(_0xc6f2('0x4'));var BPromise=require(_0xc6f2('0x5'));var Mustache=require(_0xc6f2('0x6'));var util=require(_0xc6f2('0x7'));var path=require(_0xc6f2('0x8'));var sox=require(_0xc6f2('0x9'));var csv=require(_0xc6f2('0xa'));var ejs=require(_0xc6f2('0xb'));var fs=require('fs');var fs_extra=require(_0xc6f2('0xc'));var _=require(_0xc6f2('0xd'));var squel=require(_0xc6f2('0xe'));var crypto=require(_0xc6f2('0xf'));var jsforce=require(_0xc6f2('0x10'));var deskjs=require(_0xc6f2('0x11'));var toCsv=require(_0xc6f2('0xa'));var querystring=require(_0xc6f2('0x12'));var Papa=require(_0xc6f2('0x13'));var Redis=require(_0xc6f2('0x14'));var authService=require('../../components/auth/service');var qs=require(_0xc6f2('0x15'));var as=require(_0xc6f2('0x16'));var hardwareService=require(_0xc6f2('0x17'));var logger=require('../../config/logger')('api');var utils=require(_0xc6f2('0x18'));var config=require(_0xc6f2('0x19'));var licenseUtil=require(_0xc6f2('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xfa17b4,_0x444680){_0x444680=_0x444680||0xcc;return function(_0xf364f){if(_0xf364f){return _0xfa17b4[_0xc6f2('0x1b')](_0x444680);}return _0xfa17b4[_0xc6f2('0x1c')](_0x444680)[_0xc6f2('0x1d')]();};}function respondWithResult(_0x1d853e,_0x285c25){_0x285c25=_0x285c25||0xc8;return function(_0x46bb0d){if(_0x46bb0d){return _0x1d853e[_0xc6f2('0x1c')](_0x285c25)[_0xc6f2('0x1e')](_0x46bb0d);}};}function respondWithFilteredResult(_0x145f17,_0x477276){return function(_0xd432cf){if(_0xd432cf){var _0x2cbbaf=typeof _0x477276[_0xc6f2('0x1f')]==='undefined'&&typeof _0x477276[_0xc6f2('0x20')]===_0xc6f2('0x21');var _0x2ae72e=_0xd432cf[_0xc6f2('0x22')];var _0x3131d6=_0x2cbbaf?0x0:_0x477276['offset'];var _0x1ee024=_0x2cbbaf?_0xd432cf['count']:_0x477276[_0xc6f2('0x1f')]+_0x477276['limit'];var _0x37e48f;if(_0x1ee024>=_0x2ae72e){_0x1ee024=_0x2ae72e;_0x37e48f=0xc8;}else{_0x37e48f=0xce;}_0x145f17[_0xc6f2('0x1c')](_0x37e48f);return _0x145f17[_0xc6f2('0x23')](_0xc6f2('0x24'),_0x3131d6+'-'+_0x1ee024+'/'+_0x2ae72e)[_0xc6f2('0x1e')](_0xd432cf);}return null;};}function patchUpdates(_0x469e5a){return function(_0x5e0ad1){try{jsonpatch['apply'](_0x5e0ad1,_0x469e5a,!![]);}catch(_0x31a34f){return BPromise[_0xc6f2('0x25')](_0x31a34f);}return _0x5e0ad1[_0xc6f2('0x26')]();};}function saveUpdates(_0x3e6e1a,_0x3fb543){return function(_0x1efe5d){if(_0x1efe5d){return _0x1efe5d[_0xc6f2('0x27')](_0x3e6e1a)[_0xc6f2('0x28')](function(_0x871a64){return _0x871a64;});}return null;};}function removeEntity(_0x46b401,_0x200048){return function(_0x25a6ad){if(_0x25a6ad){return _0x25a6ad['destroy']()[_0xc6f2('0x28')](function(){_0x46b401[_0xc6f2('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x163d26,_0x3db76d){return function(_0x336d8a){if(!_0x336d8a){_0x163d26[_0xc6f2('0x1b')](0x194);}return _0x336d8a;};}function handleError(_0x17de18,_0x5793a0){_0x5793a0=_0x5793a0||0x1f4;return function(_0x29b39e){logger[_0xc6f2('0x29')](_0x29b39e[_0xc6f2('0x2a')]);if(_0x29b39e[_0xc6f2('0x2b')]){delete _0x29b39e[_0xc6f2('0x2b')];}_0x17de18[_0xc6f2('0x1c')](_0x5793a0)['send'](_0x29b39e);};}exports['index']=function(_0x583e52,_0x2981a2){var _0x2029a0={},_0x31a335={},_0x10d482={'count':0x0,'rows':[]};var _0x368cd3=_[_0xc6f2('0x2c')](db['Dynamics365Field'][_0xc6f2('0x2d')],function(_0x28b9c2){return{'name':_0x28b9c2[_0xc6f2('0x2e')],'type':_0x28b9c2[_0xc6f2('0x2f')][_0xc6f2('0x30')]};});_0x31a335[_0xc6f2('0x31')]=_[_0xc6f2('0x2c')](_0x368cd3,_0xc6f2('0x2b'));_0x31a335[_0xc6f2('0x32')]=_['keys'](_0x583e52[_0xc6f2('0x32')]);_0x31a335[_0xc6f2('0x33')]=_[_0xc6f2('0x34')](_0x31a335[_0xc6f2('0x31')],_0x31a335[_0xc6f2('0x32')]);_0x2029a0[_0xc6f2('0x35')]=_[_0xc6f2('0x34')](_0x31a335[_0xc6f2('0x31')],qs[_0xc6f2('0x36')](_0x583e52[_0xc6f2('0x32')][_0xc6f2('0x36')]));_0x2029a0[_0xc6f2('0x35')]=_0x2029a0[_0xc6f2('0x35')][_0xc6f2('0x37')]?_0x2029a0[_0xc6f2('0x35')]:_0x31a335[_0xc6f2('0x31')];if(!_0x583e52[_0xc6f2('0x32')]['hasOwnProperty'](_0xc6f2('0x38'))){_0x2029a0['limit']=qs[_0xc6f2('0x20')](_0x583e52['query']['limit']);_0x2029a0[_0xc6f2('0x1f')]=qs[_0xc6f2('0x1f')](_0x583e52[_0xc6f2('0x32')][_0xc6f2('0x1f')]);}_0x2029a0[_0xc6f2('0x39')]=qs[_0xc6f2('0x3a')](_0x583e52[_0xc6f2('0x32')][_0xc6f2('0x3a')]);_0x2029a0[_0xc6f2('0x3b')]=qs[_0xc6f2('0x33')](_[_0xc6f2('0x3c')](_0x583e52[_0xc6f2('0x32')],_0x31a335[_0xc6f2('0x33')]),_0x368cd3);if(_0x583e52['query'][_0xc6f2('0x3d')]){_0x2029a0[_0xc6f2('0x3b')]=_[_0xc6f2('0x3e')](_0x2029a0[_0xc6f2('0x3b')],{'$or':_[_0xc6f2('0x2c')](_0x368cd3,function(_0x54fb3f){if(_0x54fb3f[_0xc6f2('0x2f')]!==_0xc6f2('0x3f')){var _0x24e2f7={};_0x24e2f7[_0x54fb3f[_0xc6f2('0x2b')]]={'$like':'%'+_0x583e52['query'][_0xc6f2('0x3d')]+'%'};return _0x24e2f7;}})});}_0x2029a0=_[_0xc6f2('0x3e')]({},_0x2029a0,_0x583e52['options']);var _0x106e22={'where':_0x2029a0['where']};return db[_0xc6f2('0x40')][_0xc6f2('0x22')](_0x106e22)[_0xc6f2('0x28')](function(_0x229095){_0x10d482[_0xc6f2('0x22')]=_0x229095;if(_0x583e52[_0xc6f2('0x32')][_0xc6f2('0x41')]){_0x2029a0['include']=[{'all':!![]}];}return db[_0xc6f2('0x40')][_0xc6f2('0x42')](_0x2029a0);})['then'](function(_0x2c9d5e){_0x10d482[_0xc6f2('0x43')]=_0x2c9d5e;return _0x10d482;})[_0xc6f2('0x28')](respondWithFilteredResult(_0x2981a2,_0x2029a0))['catch'](handleError(_0x2981a2,null));};exports[_0xc6f2('0x44')]=function(_0x315d1e,_0x244025){var _0x11d648={'raw':!![],'where':{'id':_0x315d1e['params']['id']}},_0x2ae14d={};_0x2ae14d[_0xc6f2('0x31')]=_[_0xc6f2('0x45')](db[_0xc6f2('0x40')][_0xc6f2('0x2d')]);_0x2ae14d[_0xc6f2('0x32')]=_['keys'](_0x315d1e[_0xc6f2('0x32')]);_0x2ae14d[_0xc6f2('0x33')]=_[_0xc6f2('0x34')](_0x2ae14d[_0xc6f2('0x31')],_0x2ae14d[_0xc6f2('0x32')]);_0x11d648[_0xc6f2('0x35')]=_[_0xc6f2('0x34')](_0x2ae14d[_0xc6f2('0x31')],qs[_0xc6f2('0x36')](_0x315d1e[_0xc6f2('0x32')][_0xc6f2('0x36')]));_0x11d648[_0xc6f2('0x35')]=_0x11d648[_0xc6f2('0x35')][_0xc6f2('0x37')]?_0x11d648[_0xc6f2('0x35')]:_0x2ae14d['model'];if(_0x315d1e['query']['includeAll']){_0x11d648[_0xc6f2('0x46')]=[{'all':!![]}];}_0x11d648=_['merge']({},_0x11d648,_0x315d1e[_0xc6f2('0x47')]);return db[_0xc6f2('0x40')][_0xc6f2('0x48')](_0x11d648)[_0xc6f2('0x28')](handleEntityNotFound(_0x244025,null))[_0xc6f2('0x28')](respondWithResult(_0x244025,null))[_0xc6f2('0x49')](handleError(_0x244025,null));};exports[_0xc6f2('0x4a')]=function(_0x1125e6,_0x378995){return db[_0xc6f2('0x40')]['create'](_0x1125e6[_0xc6f2('0x4b')],{})[_0xc6f2('0x28')](respondWithResult(_0x378995,0xc9))['catch'](handleError(_0x378995,null));};exports['update']=function(_0x31bf41,_0x4a4117){if(_0x31bf41[_0xc6f2('0x4b')]['id']){delete _0x31bf41[_0xc6f2('0x4b')]['id'];}return db['Dynamics365Field'][_0xc6f2('0x48')]({'where':{'id':_0x31bf41[_0xc6f2('0x4c')]['id']}})[_0xc6f2('0x28')](handleEntityNotFound(_0x4a4117,null))['then'](saveUpdates(_0x31bf41[_0xc6f2('0x4b')],null))[_0xc6f2('0x28')](respondWithResult(_0x4a4117,null))['catch'](handleError(_0x4a4117,null));};exports[_0xc6f2('0x4d')]=function(_0x6ab2fc,_0x4ba43e){return db[_0xc6f2('0x40')][_0xc6f2('0x48')]({'where':{'id':_0x6ab2fc[_0xc6f2('0x4c')]['id']}})[_0xc6f2('0x28')](handleEntityNotFound(_0x4ba43e,null))[_0xc6f2('0x28')](removeEntity(_0x4ba43e,null))[_0xc6f2('0x49')](handleError(_0x4ba43e,null));};
\ No newline at end of file
+var _0x0dd5=['then','destroy','end','error','name','send','index','map','Dynamics365Field','rawAttributes','fieldName','key','query','filters','intersection','model','attributes','fields','length','sort','where','filter','type','VIRTUAL','options','includeAll','include','findAll','catch','keys','merge','find','create','body','params','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','update'];(function(_0x10cb86,_0x305cea){var _0x6f3d6d=function(_0x2469a3){while(--_0x2469a3){_0x10cb86['push'](_0x10cb86['shift']());}};_0x6f3d6d(++_0x305cea);}(_0x0dd5,0x177));var _0x50dd=function(_0x188316,_0x345b44){_0x188316=_0x188316-0x0;var _0x279a4f=_0x0dd5[_0x188316];return _0x279a4f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x50dd('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x50dd('0x1'));var rp=require(_0x50dd('0x2'));var moment=require(_0x50dd('0x3'));var BPromise=require(_0x50dd('0x4'));var Mustache=require(_0x50dd('0x5'));var util=require(_0x50dd('0x6'));var path=require(_0x50dd('0x7'));var sox=require(_0x50dd('0x8'));var csv=require(_0x50dd('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x50dd('0xa'));var crypto=require(_0x50dd('0xb'));var jsforce=require(_0x50dd('0xc'));var deskjs=require(_0x50dd('0xd'));var toCsv=require(_0x50dd('0x9'));var querystring=require('querystring');var Papa=require(_0x50dd('0xe'));var Redis=require('ioredis');var authService=require(_0x50dd('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x50dd('0x10'));var hardwareService=require(_0x50dd('0x11'));var logger=require('../../config/logger')(_0x50dd('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x50dd('0x13'));var db=require(_0x50dd('0x14'))['db'];function respondWithStatusCode(_0x187385,_0x16b373){_0x16b373=_0x16b373||0xcc;return function(_0x1bfabe){if(_0x1bfabe){return _0x187385[_0x50dd('0x15')](_0x16b373);}return _0x187385[_0x50dd('0x16')](_0x16b373)['end']();};}function respondWithResult(_0x2c4b11,_0x2c9d14){_0x2c9d14=_0x2c9d14||0xc8;return function(_0x4d256a){if(_0x4d256a){return _0x2c4b11[_0x50dd('0x16')](_0x2c9d14)[_0x50dd('0x17')](_0x4d256a);}};}function respondWithFilteredResult(_0x170278,_0x522dcb){return function(_0x1aed28){if(_0x1aed28){var _0x7c079f=typeof _0x522dcb[_0x50dd('0x18')]==='undefined'&&typeof _0x522dcb[_0x50dd('0x19')]===_0x50dd('0x1a');var _0x508ddd=_0x1aed28['count'];var _0x709cae=_0x7c079f?0x0:_0x522dcb[_0x50dd('0x18')];var _0x3ef21e=_0x7c079f?_0x1aed28[_0x50dd('0x1b')]:_0x522dcb['offset']+_0x522dcb['limit'];var _0x2b001c;if(_0x3ef21e>=_0x508ddd){_0x3ef21e=_0x508ddd;_0x2b001c=0xc8;}else{_0x2b001c=0xce;}_0x170278[_0x50dd('0x16')](_0x2b001c);return _0x170278[_0x50dd('0x1c')](_0x50dd('0x1d'),_0x709cae+'-'+_0x3ef21e+'/'+_0x508ddd)[_0x50dd('0x17')](_0x1aed28);}return null;};}function patchUpdates(_0x383f5a){return function(_0x4d132e){try{jsonpatch[_0x50dd('0x1e')](_0x4d132e,_0x383f5a,!![]);}catch(_0x21e8fc){return BPromise[_0x50dd('0x1f')](_0x21e8fc);}return _0x4d132e['save']();};}function saveUpdates(_0x2cc485,_0x53ee13){return function(_0x1f905a){if(_0x1f905a){return _0x1f905a[_0x50dd('0x20')](_0x2cc485)[_0x50dd('0x21')](function(_0x2af484){return _0x2af484;});}return null;};}function removeEntity(_0x4b976e,_0x2dfac6){return function(_0x7155d6){if(_0x7155d6){return _0x7155d6[_0x50dd('0x22')]()['then'](function(){_0x4b976e['status'](0xcc)[_0x50dd('0x23')]();});}};}function handleEntityNotFound(_0x419537,_0x36a5c7){return function(_0x3db676){if(!_0x3db676){_0x419537['sendStatus'](0x194);}return _0x3db676;};}function handleError(_0x152fbd,_0x3d3ff7){_0x3d3ff7=_0x3d3ff7||0x1f4;return function(_0x1ef0dc){logger[_0x50dd('0x24')](_0x1ef0dc['stack']);if(_0x1ef0dc[_0x50dd('0x25')]){delete _0x1ef0dc['name'];}_0x152fbd[_0x50dd('0x16')](_0x3d3ff7)[_0x50dd('0x26')](_0x1ef0dc);};}exports[_0x50dd('0x27')]=function(_0x4a567e,_0x5762c9){var _0x17d261={},_0x344ccb={},_0x332b98={'count':0x0,'rows':[]};var _0x5c315a=_[_0x50dd('0x28')](db[_0x50dd('0x29')][_0x50dd('0x2a')],function(_0x5a0046){return{'name':_0x5a0046[_0x50dd('0x2b')],'type':_0x5a0046['type'][_0x50dd('0x2c')]};});_0x344ccb['model']=_[_0x50dd('0x28')](_0x5c315a,'name');_0x344ccb[_0x50dd('0x2d')]=_['keys'](_0x4a567e[_0x50dd('0x2d')]);_0x344ccb[_0x50dd('0x2e')]=_[_0x50dd('0x2f')](_0x344ccb[_0x50dd('0x30')],_0x344ccb[_0x50dd('0x2d')]);_0x17d261[_0x50dd('0x31')]=_[_0x50dd('0x2f')](_0x344ccb['model'],qs[_0x50dd('0x32')](_0x4a567e[_0x50dd('0x2d')][_0x50dd('0x32')]));_0x17d261[_0x50dd('0x31')]=_0x17d261[_0x50dd('0x31')][_0x50dd('0x33')]?_0x17d261[_0x50dd('0x31')]:_0x344ccb[_0x50dd('0x30')];if(!_0x4a567e[_0x50dd('0x2d')]['hasOwnProperty']('nolimit')){_0x17d261[_0x50dd('0x19')]=qs[_0x50dd('0x19')](_0x4a567e[_0x50dd('0x2d')][_0x50dd('0x19')]);_0x17d261[_0x50dd('0x18')]=qs[_0x50dd('0x18')](_0x4a567e[_0x50dd('0x2d')][_0x50dd('0x18')]);}_0x17d261['order']=qs[_0x50dd('0x34')](_0x4a567e[_0x50dd('0x2d')][_0x50dd('0x34')]);_0x17d261[_0x50dd('0x35')]=qs['filters'](_['pick'](_0x4a567e['query'],_0x344ccb['filters']),_0x5c315a);if(_0x4a567e[_0x50dd('0x2d')][_0x50dd('0x36')]){_0x17d261[_0x50dd('0x35')]=_['merge'](_0x17d261[_0x50dd('0x35')],{'$or':_['map'](_0x5c315a,function(_0x59d70f){if(_0x59d70f[_0x50dd('0x37')]!==_0x50dd('0x38')){var _0x2d8751={};_0x2d8751[_0x59d70f['name']]={'$like':'%'+_0x4a567e[_0x50dd('0x2d')][_0x50dd('0x36')]+'%'};return _0x2d8751;}})});}_0x17d261=_['merge']({},_0x17d261,_0x4a567e[_0x50dd('0x39')]);var _0x480ebe={'where':_0x17d261[_0x50dd('0x35')]};return db['Dynamics365Field'][_0x50dd('0x1b')](_0x480ebe)[_0x50dd('0x21')](function(_0x29a463){_0x332b98['count']=_0x29a463;if(_0x4a567e[_0x50dd('0x2d')][_0x50dd('0x3a')]){_0x17d261[_0x50dd('0x3b')]=[{'all':!![]}];}return db[_0x50dd('0x29')][_0x50dd('0x3c')](_0x17d261);})[_0x50dd('0x21')](function(_0x18a2d5){_0x332b98['rows']=_0x18a2d5;return _0x332b98;})[_0x50dd('0x21')](respondWithFilteredResult(_0x5762c9,_0x17d261))[_0x50dd('0x3d')](handleError(_0x5762c9,null));};exports['show']=function(_0x521f86,_0x3c4c6c){var _0x125820={'raw':!![],'where':{'id':_0x521f86['params']['id']}},_0x5e0584={};_0x5e0584[_0x50dd('0x30')]=_['keys'](db[_0x50dd('0x29')][_0x50dd('0x2a')]);_0x5e0584[_0x50dd('0x2d')]=_[_0x50dd('0x3e')](_0x521f86[_0x50dd('0x2d')]);_0x5e0584[_0x50dd('0x2e')]=_['intersection'](_0x5e0584[_0x50dd('0x30')],_0x5e0584['query']);_0x125820[_0x50dd('0x31')]=_[_0x50dd('0x2f')](_0x5e0584[_0x50dd('0x30')],qs[_0x50dd('0x32')](_0x521f86[_0x50dd('0x2d')][_0x50dd('0x32')]));_0x125820[_0x50dd('0x31')]=_0x125820['attributes'][_0x50dd('0x33')]?_0x125820[_0x50dd('0x31')]:_0x5e0584[_0x50dd('0x30')];if(_0x521f86[_0x50dd('0x2d')][_0x50dd('0x3a')]){_0x125820[_0x50dd('0x3b')]=[{'all':!![]}];}_0x125820=_[_0x50dd('0x3f')]({},_0x125820,_0x521f86[_0x50dd('0x39')]);return db[_0x50dd('0x29')][_0x50dd('0x40')](_0x125820)[_0x50dd('0x21')](handleEntityNotFound(_0x3c4c6c,null))['then'](respondWithResult(_0x3c4c6c,null))[_0x50dd('0x3d')](handleError(_0x3c4c6c,null));};exports[_0x50dd('0x41')]=function(_0x4e8106,_0x33bfdb){return db[_0x50dd('0x29')][_0x50dd('0x41')](_0x4e8106['body'],{})[_0x50dd('0x21')](respondWithResult(_0x33bfdb,0xc9))[_0x50dd('0x3d')](handleError(_0x33bfdb,null));};exports[_0x50dd('0x20')]=function(_0x55ea91,_0x1543f3){if(_0x55ea91['body']['id']){delete _0x55ea91[_0x50dd('0x42')]['id'];}return db['Dynamics365Field'][_0x50dd('0x40')]({'where':{'id':_0x55ea91[_0x50dd('0x43')]['id']}})[_0x50dd('0x21')](handleEntityNotFound(_0x1543f3,null))[_0x50dd('0x21')](saveUpdates(_0x55ea91[_0x50dd('0x42')],null))[_0x50dd('0x21')](respondWithResult(_0x1543f3,null))['catch'](handleError(_0x1543f3,null));};exports[_0x50dd('0x22')]=function(_0x2db189,_0x569882){return db['Dynamics365Field'][_0x50dd('0x40')]({'where':{'id':_0x2db189[_0x50dd('0x43')]['id']}})[_0x50dd('0x21')](handleEntityNotFound(_0x569882,null))[_0x50dd('0x21')](removeEntity(_0x569882,null))['catch'](handleError(_0x569882,null));};
\ No newline at end of file
index 9f9d3ea..a9674e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe6c1=['int_dynamics365_fields','dynamics365_unique_index','idField','FieldId','lodash','util','api','bluebird','request-promise','path','rimraf','../../config/environment','./intDynamics365Field.attributes','exports','define','Dynamics365Field'];(function(_0x3062f0,_0x487847){var _0x5277fd=function(_0x150098){while(--_0x150098){_0x3062f0['push'](_0x3062f0['shift']());}};_0x5277fd(++_0x487847);}(_0xe6c1,0x184));var _0x1e6c=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xe6c1[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x1e6c('0x0'));var util=require(_0x1e6c('0x1'));var logger=require('../../config/logger')(_0x1e6c('0x2'));var moment=require('moment');var BPromise=require(_0x1e6c('0x3'));var rp=require(_0x1e6c('0x4'));var fs=require('fs');var path=require(_0x1e6c('0x5'));var rimraf=require(_0x1e6c('0x6'));var config=require(_0x1e6c('0x7'));var attributes=require(_0x1e6c('0x8'));module[_0x1e6c('0x9')]=function(_0x2aaa2a,_0x16f82b){return _0x2aaa2a[_0x1e6c('0xa')](_0x1e6c('0xb'),attributes,{'tableName':_0x1e6c('0xc'),'paranoid':![],'indexes':[{'name':_0x1e6c('0xd'),'fields':[_0x1e6c('0xe'),_0x1e6c('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xaa89=['rimraf','../../config/environment','exports','define','Dynamics365Field','int_dynamics365_fields','dynamics365_unique_index','FieldId','util','../../config/logger','api','request-promise','path'];(function(_0x3d5e90,_0x5f308e){var _0x589758=function(_0x1b07be){while(--_0x1b07be){_0x3d5e90['push'](_0x3d5e90['shift']());}};_0x589758(++_0x5f308e);}(_0xaa89,0xe5));var _0x9aa8=function(_0x2f48cd,_0x46a75a){_0x2f48cd=_0x2f48cd-0x0;var _0x193ae2=_0xaa89[_0x2f48cd];return _0x193ae2;};'use strict';var _=require('lodash');var util=require(_0x9aa8('0x0'));var logger=require(_0x9aa8('0x1'))(_0x9aa8('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x9aa8('0x3'));var fs=require('fs');var path=require(_0x9aa8('0x4'));var rimraf=require(_0x9aa8('0x5'));var config=require(_0x9aa8('0x6'));var attributes=require('./intDynamics365Field.attributes');module[_0x9aa8('0x7')]=function(_0x8e69a4,_0x584d71){return _0x8e69a4[_0x9aa8('0x8')](_0x9aa8('0x9'),attributes,{'tableName':_0x9aa8('0xa'),'paranoid':![],'indexes':[{'name':_0x9aa8('0xb'),'fields':['idField',_0x9aa8('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 9f295bb..a9d9e80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc61=['error','code','message','result','catch','lodash','moment','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','then','Dynamics365Field,\x20%s,\x20%s','request\x20sent','debug','stringify'];(function(_0x436442,_0x466c19){var _0x446394=function(_0x313fd2){while(--_0x313fd2){_0x436442['push'](_0x436442['shift']());}};_0x446394(++_0x466c19);}(_0xfc61,0x16d));var _0x1fc6=function(_0x24b979,_0x4a68b4){_0x24b979=_0x24b979-0x0;var _0x2e288e=_0xfc61[_0x24b979];return _0x2e288e;};'use strict';var _=require(_0x1fc6('0x0'));var util=require('util');var moment=require(_0x1fc6('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1fc6('0x2'));var db=require(_0x1fc6('0x3'))['db'];var utils=require(_0x1fc6('0x4'));var logger=require('../../config/logger')(_0x1fc6('0x5'));var config=require('../../config/environment');var jayson=require(_0x1fc6('0x6'));var client=jayson[_0x1fc6('0x7')][_0x1fc6('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4619f4,_0x26420c,_0x4d93d9){return new BPromise(function(_0x42b161,_0x394262){return client[_0x1fc6('0x9')](_0x4619f4,_0x4d93d9)[_0x1fc6('0xa')](function(_0x252298){logger['info'](_0x1fc6('0xb'),_0x26420c,_0x1fc6('0xc'));logger[_0x1fc6('0xd')]('Dynamics365Field,\x20%s,\x20%s,\x20%s',_0x26420c,_0x1fc6('0xc'),JSON[_0x1fc6('0xe')](_0x252298));if(_0x252298[_0x1fc6('0xf')]){if(_0x252298[_0x1fc6('0xf')][_0x1fc6('0x10')]===0x1f4){logger[_0x1fc6('0xf')](_0x1fc6('0xb'),_0x26420c,_0x252298['error'][_0x1fc6('0x11')]);return _0x394262(_0x252298[_0x1fc6('0xf')][_0x1fc6('0x11')]);}logger[_0x1fc6('0xf')]('Dynamics365Field,\x20%s,\x20%s',_0x26420c,_0x252298['error'][_0x1fc6('0x11')]);return _0x42b161(_0x252298[_0x1fc6('0xf')][_0x1fc6('0x11')]);}else{logger['info']('Dynamics365Field,\x20%s,\x20%s',_0x26420c,'request\x20sent');_0x42b161(_0x252298[_0x1fc6('0x12')][_0x1fc6('0x11')]);}})[_0x1fc6('0x13')](function(_0x38dcd1){logger[_0x1fc6('0xf')](_0x1fc6('0xb'),_0x26420c,_0x38dcd1);_0x394262(_0x38dcd1);});});}
\ No newline at end of file
+var _0x274d=['rpc','../../config/environment','jayson/promise','client','request','then','info','request\x20sent','debug','Dynamics365Field,\x20%s,\x20%s,\x20%s','error','code','Dynamics365Field,\x20%s,\x20%s','message','result','util','moment','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x6131cd,_0x4c26a1){var _0x47e916=function(_0x1f2bce){while(--_0x1f2bce){_0x6131cd['push'](_0x6131cd['shift']());}};_0x47e916(++_0x4c26a1);}(_0x274d,0x177));var _0xd274=function(_0x475fbc,_0x353015){_0x475fbc=_0x475fbc-0x0;var _0x1741cb=_0x274d[_0x475fbc];return _0x1741cb;};'use strict';var _=require('lodash');var util=require(_0xd274('0x0'));var moment=require(_0xd274('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd274('0x2'))['db'];var utils=require(_0xd274('0x3'));var logger=require(_0xd274('0x4'))(_0xd274('0x5'));var config=require(_0xd274('0x6'));var jayson=require(_0xd274('0x7'));var client=jayson[_0xd274('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x14fbeb,_0x535f86,_0x375868){return new BPromise(function(_0xf00304,_0x44200f){return client[_0xd274('0x9')](_0x14fbeb,_0x375868)[_0xd274('0xa')](function(_0x4e7f3d){logger[_0xd274('0xb')]('Dynamics365Field,\x20%s,\x20%s',_0x535f86,_0xd274('0xc'));logger[_0xd274('0xd')](_0xd274('0xe'),_0x535f86,_0xd274('0xc'),JSON['stringify'](_0x4e7f3d));if(_0x4e7f3d[_0xd274('0xf')]){if(_0x4e7f3d['error'][_0xd274('0x10')]===0x1f4){logger[_0xd274('0xf')](_0xd274('0x11'),_0x535f86,_0x4e7f3d[_0xd274('0xf')][_0xd274('0x12')]);return _0x44200f(_0x4e7f3d[_0xd274('0xf')][_0xd274('0x12')]);}logger[_0xd274('0xf')](_0xd274('0x11'),_0x535f86,_0x4e7f3d[_0xd274('0xf')][_0xd274('0x12')]);return _0xf00304(_0x4e7f3d[_0xd274('0xf')]['message']);}else{logger[_0xd274('0xb')]('Dynamics365Field,\x20%s,\x20%s',_0x535f86,_0xd274('0xc'));_0xf00304(_0x4e7f3d[_0xd274('0x13')]['message']);}})['catch'](function(_0x4f76c9){logger['error'](_0xd274('0x11'),_0x535f86,_0x4f76c9);_0x44200f(_0x4f76c9);});});}
\ No newline at end of file
index 2243d9b..70dcd44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9d8=['create','addConfiguration','put','update','delete','destroy','multer','util','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','getFields','post'];(function(_0x512a12,_0x3c48e1){var _0x5dfac6=function(_0x3d76db){while(--_0x3d76db){_0x512a12['push'](_0x512a12['shift']());}};_0x5dfac6(++_0x3c48e1);}(_0xd9d8,0xf8));var _0x8d9d=function(_0xdae520,_0x5cb070){_0xdae520=_0xdae520-0x0;var _0x21f40a=_0xd9d8[_0xdae520];return _0x21f40a;};'use strict';var multer=require(_0x8d9d('0x0'));var util=require(_0x8d9d('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x8d9d('0x2'));var router=express[_0x8d9d('0x3')]();var fs_extra=require(_0x8d9d('0x4'));var auth=require(_0x8d9d('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x8d9d('0x6'));var controller=require('./intFreshdeskAccount.controller');router[_0x8d9d('0x7')]('/',auth[_0x8d9d('0x8')](),controller[_0x8d9d('0x9')]);router[_0x8d9d('0x7')](_0x8d9d('0xa'),auth['isAuthenticated'](),controller[_0x8d9d('0xb')]);router[_0x8d9d('0x7')](_0x8d9d('0xc'),auth[_0x8d9d('0x8')](),controller[_0x8d9d('0xd')]);router[_0x8d9d('0x7')]('/:id/fields',auth[_0x8d9d('0x8')](),controller[_0x8d9d('0xe')]);router[_0x8d9d('0xf')]('/',auth['isAuthenticated'](),controller[_0x8d9d('0x10')]);router[_0x8d9d('0xf')](_0x8d9d('0xc'),auth[_0x8d9d('0x8')](),controller[_0x8d9d('0x11')]);router[_0x8d9d('0x12')](_0x8d9d('0xa'),auth['isAuthenticated'](),controller[_0x8d9d('0x13')]);router[_0x8d9d('0x14')]('/:id',auth[_0x8d9d('0x8')](),controller[_0x8d9d('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0xa4e6=['exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','put','update','destroy'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0xa4e6,0xf3));var _0x6a4e=function(_0x245547,_0x37c166){_0x245547=_0x245547-0x0;var _0x3e19cc=_0xa4e6[_0x245547];return _0x3e19cc;};'use strict';var multer=require('multer');var util=require(_0x6a4e('0x0'));var path=require(_0x6a4e('0x1'));var timeout=require(_0x6a4e('0x2'));var express=require(_0x6a4e('0x3'));var router=express[_0x6a4e('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x6a4e('0x5'));var interaction=require(_0x6a4e('0x6'));var config=require(_0x6a4e('0x7'));var controller=require('./intFreshdeskAccount.controller');router[_0x6a4e('0x8')]('/',auth[_0x6a4e('0x9')](),controller[_0x6a4e('0xa')]);router[_0x6a4e('0x8')](_0x6a4e('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x6a4e('0x8')](_0x6a4e('0xc'),auth[_0x6a4e('0x9')](),controller[_0x6a4e('0xd')]);router[_0x6a4e('0x8')](_0x6a4e('0xe'),auth[_0x6a4e('0x9')](),controller[_0x6a4e('0xf')]);router[_0x6a4e('0x10')]('/',auth['isAuthenticated'](),controller[_0x6a4e('0x11')]);router[_0x6a4e('0x10')](_0x6a4e('0xc'),auth[_0x6a4e('0x9')](),controller['addConfiguration']);router[_0x6a4e('0x12')](_0x6a4e('0xb'),auth[_0x6a4e('0x9')](),controller[_0x6a4e('0x13')]);router['delete'](_0x6a4e('0xb'),auth['isAuthenticated'](),controller[_0x6a4e('0x14')]);module[_0x6a4e('0x15')]=router;
\ No newline at end of file
index a94d587..1b16c17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['STRING','username','exports'];(function(_0x4de7c0,_0x5dcd80){var _0x592bfc=function(_0x12eb7f){while(--_0x12eb7f){_0x4de7c0['push'](_0x4de7c0['shift']());}};_0x592bfc(++_0x5dcd80);}(_0x5f66,0x1a0));var _0x65f6=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0x5f66[_0x3e5086];return _0xfeb102;};'use strict';var Sequelize=require('sequelize');module[_0x65f6('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x65f6('0x1')]},'username':{'type':Sequelize[_0x65f6('0x1')],'unique':_0x65f6('0x2')},'apiKey':{'type':Sequelize[_0x65f6('0x1')]},'remoteUri':{'type':Sequelize[_0x65f6('0x1')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0x65f6('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0xdd4f=['username','remoteUri','sequelize','STRING'];(function(_0x4c6373,_0x47cb5d){var _0x8ed848=function(_0x23d513){while(--_0x23d513){_0x4c6373['push'](_0x4c6373['shift']());}};_0x8ed848(++_0x47cb5d);}(_0xdd4f,0x1ce));var _0xfdd4=function(_0x1f514c,_0x1f8907){_0x1f514c=_0x1f514c-0x0;var _0x4f7d10=_0xdd4f[_0x1f514c];return _0x4f7d10;};'use strict';var Sequelize=require(_0xfdd4('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xfdd4('0x1')],'unique':_0xfdd4('0x2')},'apiKey':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0xfdd4('0x1')],'unique':_0xfdd4('0x3')},'serverUrl':{'type':Sequelize[_0xfdd4('0x1')],'allowNull':![]}};
\ No newline at end of file
index 0b0f389..9430402 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfbac=['priority','group','source','company','remove','includes','default','custom_text','custom_dropdown','label','capitalize','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','Wrong\x20credentials','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','fs-extra','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','save','then','error','name','send','index','FreshdeskAccount','type','key','model','map','query','keys','attributes','fields','length','nolimit','order','sort','pick','filters','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','catch','show','rawAttributes','intersection','find','create','body','params','destroy','getConfigurations','findOne','FreshdeskConfiguration','hasOwnProperty','addConfiguration','AccountId','channel','Descriptions','getDescriptions','FreshdeskField','Subjects','remoteUri','slice','substring','lastIndexOf','GET','format','Basic\x20%s','%s:X','apiKey','toString','base64','requester','subject','agent'];(function(_0x175f33,_0x58b838){var _0x250a92=function(_0x588709){while(--_0x588709){_0x175f33['push'](_0x175f33['shift']());}};_0x250a92(++_0x58b838);}(_0xfbac,0x167));var _0xcfba=function(_0x11824f,_0x3ab8e1){_0x11824f=_0x11824f-0x0;var _0x10ae32=_0xfbac[_0x11824f];return _0x10ae32;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xcfba('0x0'));var zipdir=require(_0xcfba('0x1'));var jsonpatch=require(_0xcfba('0x2'));var rp=require(_0xcfba('0x3'));var moment=require(_0xcfba('0x4'));var BPromise=require(_0xcfba('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xcfba('0x6'));var sox=require(_0xcfba('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xcfba('0x8'));var _=require('lodash');var squel=require(_0xcfba('0x9'));var crypto=require('crypto');var jsforce=require(_0xcfba('0xa'));var deskjs=require(_0xcfba('0xb'));var toCsv=require('to-csv');var querystring=require(_0xcfba('0xc'));var Papa=require(_0xcfba('0xd'));var Redis=require(_0xcfba('0xe'));var authService=require(_0xcfba('0xf'));var qs=require(_0xcfba('0x10'));var as=require(_0xcfba('0x11'));var hardwareService=require(_0xcfba('0x12'));var logger=require(_0xcfba('0x13'))(_0xcfba('0x14'));var utils=require(_0xcfba('0x15'));var config=require(_0xcfba('0x16'));var licenseUtil=require(_0xcfba('0x17'));var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x1f590b,_0x24168c){_0x24168c=_0x24168c||0xcc;return function(_0x4c2ae0){if(_0x4c2ae0){return _0x1f590b[_0xcfba('0x18')](_0x24168c);}return _0x1f590b[_0xcfba('0x19')](_0x24168c)[_0xcfba('0x1a')]();};}function respondWithResult(_0x226e89,_0x2333ee){_0x2333ee=_0x2333ee||0xc8;return function(_0x2db67a){if(_0x2db67a){return _0x226e89[_0xcfba('0x19')](_0x2333ee)[_0xcfba('0x1b')](_0x2db67a);}};}function respondWithFilteredResult(_0x2f497b,_0x18d1d6){return function(_0x231192){if(_0x231192){var _0x37a850=typeof _0x18d1d6[_0xcfba('0x1c')]==='undefined'&&typeof _0x18d1d6[_0xcfba('0x1d')]===_0xcfba('0x1e');var _0x8e34d6=_0x231192[_0xcfba('0x1f')];var _0x1bf52d=_0x37a850?0x0:_0x18d1d6[_0xcfba('0x1c')];var _0x112955=_0x37a850?_0x231192['count']:_0x18d1d6[_0xcfba('0x1c')]+_0x18d1d6[_0xcfba('0x1d')];var _0x35cec9;if(_0x112955>=_0x8e34d6){_0x112955=_0x8e34d6;_0x35cec9=0xc8;}else{_0x35cec9=0xce;}_0x2f497b['status'](_0x35cec9);return _0x2f497b['set'](_0xcfba('0x20'),_0x1bf52d+'-'+_0x112955+'/'+_0x8e34d6)[_0xcfba('0x1b')](_0x231192);}return null;};}function patchUpdates(_0x40a0df){return function(_0x467762){try{jsonpatch[_0xcfba('0x21')](_0x467762,_0x40a0df,!![]);}catch(_0x6d6f6d){return BPromise['reject'](_0x6d6f6d);}return _0x467762[_0xcfba('0x22')]();};}function saveUpdates(_0x5d4c92,_0x286d20){return function(_0x1e187f){if(_0x1e187f){return _0x1e187f['update'](_0x5d4c92)[_0xcfba('0x23')](function(_0x42cf58){return _0x42cf58;});}return null;};}function removeEntity(_0x14850f,_0x3fb061){return function(_0x5f4e17){if(_0x5f4e17){return _0x5f4e17['destroy']()[_0xcfba('0x23')](function(){_0x14850f[_0xcfba('0x19')](0xcc)[_0xcfba('0x1a')]();});}};}function handleEntityNotFound(_0x4c9098,_0x1f01a7){return function(_0x544913){if(!_0x544913){_0x4c9098[_0xcfba('0x18')](0x194);}return _0x544913;};}function handleError(_0x5e79c7,_0x4ee825){_0x4ee825=_0x4ee825||0x1f4;return function(_0xf2e3d5){logger[_0xcfba('0x24')](_0xf2e3d5['stack']);if(_0xf2e3d5[_0xcfba('0x25')]){delete _0xf2e3d5[_0xcfba('0x25')];}_0x5e79c7[_0xcfba('0x19')](_0x4ee825)[_0xcfba('0x26')](_0xf2e3d5);};}exports[_0xcfba('0x27')]=function(_0x1c3343,_0x2ee85c){var _0x4585ec={},_0x5c77c4={},_0x7c7d76={'count':0x0,'rows':[]};var _0x4aa981=_['map'](db[_0xcfba('0x28')]['rawAttributes'],function(_0x2ec629){return{'name':_0x2ec629['fieldName'],'type':_0x2ec629[_0xcfba('0x29')][_0xcfba('0x2a')]};});_0x5c77c4[_0xcfba('0x2b')]=_[_0xcfba('0x2c')](_0x4aa981,_0xcfba('0x25'));_0x5c77c4[_0xcfba('0x2d')]=_[_0xcfba('0x2e')](_0x1c3343[_0xcfba('0x2d')]);_0x5c77c4['filters']=_['intersection'](_0x5c77c4['model'],_0x5c77c4[_0xcfba('0x2d')]);_0x4585ec[_0xcfba('0x2f')]=_['intersection'](_0x5c77c4[_0xcfba('0x2b')],qs['fields'](_0x1c3343[_0xcfba('0x2d')][_0xcfba('0x30')]));_0x4585ec[_0xcfba('0x2f')]=_0x4585ec[_0xcfba('0x2f')][_0xcfba('0x31')]?_0x4585ec[_0xcfba('0x2f')]:_0x5c77c4[_0xcfba('0x2b')];if(!_0x1c3343[_0xcfba('0x2d')]['hasOwnProperty'](_0xcfba('0x32'))){_0x4585ec[_0xcfba('0x1d')]=qs[_0xcfba('0x1d')](_0x1c3343[_0xcfba('0x2d')][_0xcfba('0x1d')]);_0x4585ec[_0xcfba('0x1c')]=qs[_0xcfba('0x1c')](_0x1c3343['query'][_0xcfba('0x1c')]);}_0x4585ec[_0xcfba('0x33')]=qs[_0xcfba('0x34')](_0x1c3343[_0xcfba('0x2d')][_0xcfba('0x34')]);_0x4585ec['where']=qs['filters'](_[_0xcfba('0x35')](_0x1c3343[_0xcfba('0x2d')],_0x5c77c4[_0xcfba('0x36')]),_0x4aa981);if(_0x1c3343[_0xcfba('0x2d')]['filter']){_0x4585ec[_0xcfba('0x37')]=_[_0xcfba('0x38')](_0x4585ec['where'],{'$or':_['map'](_0x4aa981,function(_0x14ccc9){if(_0x14ccc9[_0xcfba('0x29')]!==_0xcfba('0x39')){var _0x39f058={};_0x39f058[_0x14ccc9[_0xcfba('0x25')]]={'$like':'%'+_0x1c3343[_0xcfba('0x2d')][_0xcfba('0x3a')]+'%'};return _0x39f058;}})});}_0x4585ec=_['merge']({},_0x4585ec,_0x1c3343[_0xcfba('0x3b')]);var _0x43c206={'where':_0x4585ec['where']};return db[_0xcfba('0x28')]['count'](_0x43c206)[_0xcfba('0x23')](function(_0x4a2750){_0x7c7d76[_0xcfba('0x1f')]=_0x4a2750;if(_0x1c3343[_0xcfba('0x2d')][_0xcfba('0x3c')]){_0x4585ec[_0xcfba('0x3d')]=[{'all':!![]}];}return db[_0xcfba('0x28')][_0xcfba('0x3e')](_0x4585ec);})['then'](function(_0x3be84d){_0x7c7d76['rows']=_0x3be84d;return _0x7c7d76;})['then'](respondWithFilteredResult(_0x2ee85c,_0x4585ec))[_0xcfba('0x3f')](handleError(_0x2ee85c,null));};exports[_0xcfba('0x40')]=function(_0x1279a9,_0x237015){var _0x3b4466={'raw':![],'where':{'id':_0x1279a9['params']['id']}},_0x1ea9d9={};_0x1ea9d9['model']=_['keys'](db[_0xcfba('0x28')][_0xcfba('0x41')]);_0x1ea9d9[_0xcfba('0x2d')]=_[_0xcfba('0x2e')](_0x1279a9[_0xcfba('0x2d')]);_0x1ea9d9[_0xcfba('0x36')]=_[_0xcfba('0x42')](_0x1ea9d9[_0xcfba('0x2b')],_0x1ea9d9[_0xcfba('0x2d')]);_0x3b4466['attributes']=_[_0xcfba('0x42')](_0x1ea9d9[_0xcfba('0x2b')],qs[_0xcfba('0x30')](_0x1279a9[_0xcfba('0x2d')][_0xcfba('0x30')]));_0x3b4466[_0xcfba('0x2f')]=_0x3b4466[_0xcfba('0x2f')]['length']?_0x3b4466[_0xcfba('0x2f')]:_0x1ea9d9[_0xcfba('0x2b')];if(_0x1279a9[_0xcfba('0x2d')][_0xcfba('0x3c')]){_0x3b4466['include']=[{'all':!![]}];}_0x3b4466=_[_0xcfba('0x38')]({},_0x3b4466,_0x1279a9[_0xcfba('0x3b')]);return db[_0xcfba('0x28')][_0xcfba('0x43')](_0x3b4466)[_0xcfba('0x23')](handleEntityNotFound(_0x237015,null))[_0xcfba('0x23')](respondWithResult(_0x237015,null))[_0xcfba('0x3f')](handleError(_0x237015,null));};exports['create']=function(_0x4a48e0,_0x11ad05){return db[_0xcfba('0x28')][_0xcfba('0x44')](_0x4a48e0[_0xcfba('0x45')],{})[_0xcfba('0x23')](respondWithResult(_0x11ad05,0xc9))[_0xcfba('0x3f')](handleError(_0x11ad05,null));};exports['update']=function(_0x57ff92,_0x53a599){if(_0x57ff92[_0xcfba('0x45')]['id']){delete _0x57ff92['body']['id'];}return db[_0xcfba('0x28')][_0xcfba('0x43')]({'where':{'id':_0x57ff92[_0xcfba('0x46')]['id']}})[_0xcfba('0x23')](handleEntityNotFound(_0x53a599,null))['then'](saveUpdates(_0x57ff92['body'],null))[_0xcfba('0x23')](respondWithResult(_0x53a599,null))[_0xcfba('0x3f')](handleError(_0x53a599,null));};exports[_0xcfba('0x47')]=function(_0x3a88b6,_0x2a204f){return db[_0xcfba('0x28')][_0xcfba('0x43')]({'where':{'id':_0x3a88b6[_0xcfba('0x46')]['id']}})['then'](handleEntityNotFound(_0x2a204f,null))['then'](removeEntity(_0x2a204f,null))[_0xcfba('0x3f')](handleError(_0x2a204f,null));};exports[_0xcfba('0x48')]=function(_0x358477,_0x1193c3,_0x47056f){var _0x187711={};var _0x3fc544={};var _0x3c76a4;var _0x288d88;return db[_0xcfba('0x28')][_0xcfba('0x49')]({'where':{'id':_0x358477[_0xcfba('0x46')]['id']}})[_0xcfba('0x23')](handleEntityNotFound(_0x1193c3,null))[_0xcfba('0x23')](function(_0x5f36ac){if(_0x5f36ac){_0x3c76a4=_0x5f36ac;_0x3fc544['model']=_[_0xcfba('0x2e')](db[_0xcfba('0x4a')][_0xcfba('0x41')]);_0x3fc544[_0xcfba('0x2d')]=_['keys'](_0x358477[_0xcfba('0x2d')]);_0x3fc544[_0xcfba('0x36')]=_[_0xcfba('0x42')](_0x3fc544['model'],_0x3fc544[_0xcfba('0x2d')]);_0x187711[_0xcfba('0x2f')]=_[_0xcfba('0x42')](_0x3fc544['model'],qs[_0xcfba('0x30')](_0x358477[_0xcfba('0x2d')][_0xcfba('0x30')]));_0x187711[_0xcfba('0x2f')]=_0x187711['attributes']['length']?_0x187711[_0xcfba('0x2f')]:_0x3fc544[_0xcfba('0x2b')];_0x187711['order']=qs['sort'](_0x358477[_0xcfba('0x2d')]['sort']);_0x187711[_0xcfba('0x37')]=qs[_0xcfba('0x36')](_[_0xcfba('0x35')](_0x358477['query'],_0x3fc544[_0xcfba('0x36')]));if(_0x358477[_0xcfba('0x2d')][_0xcfba('0x3a')]){_0x187711[_0xcfba('0x37')]=_['merge'](_0x187711[_0xcfba('0x37')],{'$or':_[_0xcfba('0x2c')](_0x187711[_0xcfba('0x2f')],function(_0x2cb131){var _0x11524f={};_0x11524f[_0x2cb131]={'$like':'%'+_0x358477[_0xcfba('0x2d')]['filter']+'%'};return _0x11524f;})});}_0x187711=_[_0xcfba('0x38')]({},_0x187711,_0x358477[_0xcfba('0x3b')]);return _0x3c76a4[_0xcfba('0x48')](_0x187711);}})['then'](function(_0x3a32a6){if(_0x3a32a6){_0x288d88=_0x3a32a6['length'];if(!_0x358477[_0xcfba('0x2d')][_0xcfba('0x4b')](_0xcfba('0x32'))){_0x187711[_0xcfba('0x1d')]=qs['limit'](_0x358477[_0xcfba('0x2d')][_0xcfba('0x1d')]);_0x187711[_0xcfba('0x1c')]=qs[_0xcfba('0x1c')](_0x358477['query'][_0xcfba('0x1c')]);}return _0x3c76a4['getConfigurations'](_0x187711);}})[_0xcfba('0x23')](function(_0x349d49){if(_0x349d49){return _0x349d49?{'count':_0x288d88,'rows':_0x349d49}:null;}})[_0xcfba('0x23')](respondWithResult(_0x1193c3,null))[_0xcfba('0x3f')](handleError(_0x1193c3,null));};exports[_0xcfba('0x4c')]=function(_0x4f352b,_0x46aa02,_0x590649){if(_0x4f352b[_0xcfba('0x45')]['id']){delete _0x4f352b[_0xcfba('0x45')]['id'];}return db[_0xcfba('0x28')][_0xcfba('0x49')]({'where':{'id':_0x4f352b['params']['id']}})[_0xcfba('0x23')](handleEntityNotFound(_0x46aa02,null))['then'](function(_0x3caa25){if(_0x3caa25){_0x4f352b['body'][_0xcfba('0x4d')]=_0x3caa25['id'];_0x4f352b[_0xcfba('0x45')]['Subjects']=integrations['getSubjects'](_0x4f352b[_0xcfba('0x45')][_0xcfba('0x4e')],_0x4f352b['body'][_0xcfba('0x29')]);_0x4f352b[_0xcfba('0x45')][_0xcfba('0x4f')]=integrations[_0xcfba('0x50')](_0x4f352b[_0xcfba('0x45')]['channel'],_0x4f352b[_0xcfba('0x45')][_0xcfba('0x29')]);return db['FreshdeskConfiguration']['create'](_0x4f352b[_0xcfba('0x45')],{'include':[{'model':db[_0xcfba('0x51')],'as':_0xcfba('0x52')},{'model':db[_0xcfba('0x51')],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0x46aa02,null))['catch'](handleError(_0x46aa02,null));};exports['getFields']=function(_0x120dd4,_0x223d03,_0x246c98){var _0x3dfe40='';return db[_0xcfba('0x28')][_0xcfba('0x49')]({'where':{'id':_0x120dd4[_0xcfba('0x46')]['id']},'attributes':['id',_0xcfba('0x53'),'apiKey']})[_0xcfba('0x23')](handleEntityNotFound(_0x223d03,null))[_0xcfba('0x23')](function(_0x3e5b25){if(_0x3e5b25){_0x3dfe40=_0x3e5b25[_0xcfba('0x53')];var _0x8e5974=_0x3dfe40[_0xcfba('0x54')](-0x1);if(_0x8e5974==='/'){_0x3dfe40=_0x3dfe40[_0xcfba('0x55')](0x0,_0x3dfe40[_0xcfba('0x56')](_0x8e5974));}return rp({'method':_0xcfba('0x57'),'uri':util[_0xcfba('0x58')]('%s/%s',_0x3dfe40,'api/v2/ticket_fields'),'headers':{'Authorization':util[_0xcfba('0x58')](_0xcfba('0x59'),new Buffer(util[_0xcfba('0x58')](_0xcfba('0x5a'),_0x3e5b25[_0xcfba('0x5b')]))[_0xcfba('0x5c')](_0xcfba('0x5d')))},'json':!![]});}})[_0xcfba('0x23')](function(_0x380bab){if(_0x380bab){var _0x2afafb=[_0xcfba('0x5e'),_0xcfba('0x5f'),_0xcfba('0x60'),'description',_0xcfba('0x19'),_0xcfba('0x61'),_0xcfba('0x62'),_0xcfba('0x63'),'ticket_type',_0xcfba('0x62'),_0xcfba('0x64')];_[_0xcfba('0x65')](_0x380bab,function(_0x13ec29){return _0x2afafb[_0xcfba('0x66')](_0x13ec29['name'])||!_0x13ec29[_0xcfba('0x67')]&&_0x13ec29[_0xcfba('0x29')]!==_0xcfba('0x68')&&_0x13ec29[_0xcfba('0x29')]!==_0xcfba('0x69');});return{'count':_0x380bab[_0xcfba('0x31')],'rows':_[_0xcfba('0x2c')](_0x380bab,function(_0x19a59a){return{'id':_0x19a59a[_0xcfba('0x25')],'name':_0x19a59a[_0xcfba('0x6a')],'custom':!_0x19a59a[_0xcfba('0x67')],'options':_0x19a59a['choices']?_[_0xcfba('0x2c')](_0x19a59a['choices'],function(_0x4d5f47){return{'name':_[_0xcfba('0x6b')](_0x4d5f47),'value':_0x4d5f47};}):[]};})};}})[_0xcfba('0x23')](respondWithResult(_0x223d03,null))[_0xcfba('0x3f')](function(_0x385c0a){var _0x59674b=_0x120dd4[_0xcfba('0x2d')][_0xcfba('0x6c')]?0x1f4:_0x385c0a[_0xcfba('0x6d')]||0x1f4;logger[_0xcfba('0x24')](_0xcfba('0x6e'),_0xcfba('0x6f'),_0x59674b,JSON[_0xcfba('0x70')](_0x385c0a));delete _0x385c0a[_0xcfba('0x25')];if(_0x59674b===0x191){_0x59674b=0x190;}_0x223d03[_0xcfba('0x19')](_0x59674b)[_0xcfba('0x26')](_0x120dd4[_0xcfba('0x2d')][_0xcfba('0x6c')]?{'message':_0xcfba('0x71'),'statusCode':_0x385c0a[_0xcfba('0x6d')]}:_0x385c0a);});};
\ No newline at end of file
+var _0x4de7=['format','%s/%s','api/v2/ticket_fields','Basic\x20%s','%s:X','apiKey','toString','requester','subject','agent','description','priority','group','source','ticket_type','company','remove','includes','default','custom_text','custom_dropdown','label','choices','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','then','error','stack','name','send','index','map','FreshdeskAccount','fieldName','type','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','filter','includeAll','include','rows','catch','show','params','rawAttributes','options','find','create','body','destroy','getConfigurations','findOne','FreshdeskConfiguration','order','length','addConfiguration','AccountId','getSubjects','channel','Descriptions','FreshdeskField','Subjects','getFields','slice','substring','lastIndexOf','GET'];(function(_0x5c18ef,_0xa2e81d){var _0x33789d=function(_0x5761a9){while(--_0x5761a9){_0x5c18ef['push'](_0x5c18ef['shift']());}};_0x33789d(++_0xa2e81d);}(_0x4de7,0x1f3));var _0x74de=function(_0x45e6fa,_0x398be9){_0x45e6fa=_0x45e6fa-0x0;var _0x4fec7c=_0x4de7[_0x45e6fa];return _0x4fec7c;};'use strict';var emlformat=require(_0x74de('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x74de('0x1'));var jsonpatch=require(_0x74de('0x2'));var rp=require(_0x74de('0x3'));var moment=require(_0x74de('0x4'));var BPromise=require(_0x74de('0x5'));var Mustache=require('mustache');var util=require(_0x74de('0x6'));var path=require(_0x74de('0x7'));var sox=require(_0x74de('0x8'));var csv=require('to-csv');var ejs=require(_0x74de('0x9'));var fs=require('fs');var fs_extra=require(_0x74de('0xa'));var _=require(_0x74de('0xb'));var squel=require(_0x74de('0xc'));var crypto=require(_0x74de('0xd'));var jsforce=require(_0x74de('0xe'));var deskjs=require(_0x74de('0xf'));var toCsv=require(_0x74de('0x10'));var querystring=require(_0x74de('0x11'));var Papa=require(_0x74de('0x12'));var Redis=require('ioredis');var authService=require(_0x74de('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x74de('0x14'));var hardwareService=require(_0x74de('0x15'));var logger=require('../../config/logger')(_0x74de('0x16'));var utils=require(_0x74de('0x17'));var config=require(_0x74de('0x18'));var licenseUtil=require(_0x74de('0x19'));var db=require(_0x74de('0x1a'))['db'];var integrations=require(_0x74de('0x1b'));function respondWithStatusCode(_0x4ee614,_0x26f408){_0x26f408=_0x26f408||0xcc;return function(_0x4e66c0){if(_0x4e66c0){return _0x4ee614[_0x74de('0x1c')](_0x26f408);}return _0x4ee614[_0x74de('0x1d')](_0x26f408)[_0x74de('0x1e')]();};}function respondWithResult(_0x4ecd59,_0x35da91){_0x35da91=_0x35da91||0xc8;return function(_0x20b6f7){if(_0x20b6f7){return _0x4ecd59['status'](_0x35da91)[_0x74de('0x1f')](_0x20b6f7);}};}function respondWithFilteredResult(_0x3d3fee,_0x3dff38){return function(_0x431d99){if(_0x431d99){var _0x380c9c=typeof _0x3dff38[_0x74de('0x20')]===_0x74de('0x21')&&typeof _0x3dff38['limit']==='undefined';var _0x5c4732=_0x431d99[_0x74de('0x22')];var _0x20d524=_0x380c9c?0x0:_0x3dff38[_0x74de('0x20')];var _0x1e49a0=_0x380c9c?_0x431d99[_0x74de('0x22')]:_0x3dff38['offset']+_0x3dff38[_0x74de('0x23')];var _0x31872f;if(_0x1e49a0>=_0x5c4732){_0x1e49a0=_0x5c4732;_0x31872f=0xc8;}else{_0x31872f=0xce;}_0x3d3fee[_0x74de('0x1d')](_0x31872f);return _0x3d3fee['set'](_0x74de('0x24'),_0x20d524+'-'+_0x1e49a0+'/'+_0x5c4732)[_0x74de('0x1f')](_0x431d99);}return null;};}function patchUpdates(_0x439578){return function(_0x9ba11){try{jsonpatch['apply'](_0x9ba11,_0x439578,!![]);}catch(_0x52d825){return BPromise['reject'](_0x52d825);}return _0x9ba11['save']();};}function saveUpdates(_0x13c314,_0x3f7a12){return function(_0x57edf1){if(_0x57edf1){return _0x57edf1['update'](_0x13c314)[_0x74de('0x25')](function(_0x4032e1){return _0x4032e1;});}return null;};}function removeEntity(_0x44cdc4,_0x512047){return function(_0x5ad04f){if(_0x5ad04f){return _0x5ad04f['destroy']()['then'](function(){_0x44cdc4[_0x74de('0x1d')](0xcc)[_0x74de('0x1e')]();});}};}function handleEntityNotFound(_0x36b4f8,_0x3806e9){return function(_0x4f6029){if(!_0x4f6029){_0x36b4f8[_0x74de('0x1c')](0x194);}return _0x4f6029;};}function handleError(_0x37626b,_0x3bb092){_0x3bb092=_0x3bb092||0x1f4;return function(_0x10203a){logger[_0x74de('0x26')](_0x10203a[_0x74de('0x27')]);if(_0x10203a[_0x74de('0x28')]){delete _0x10203a[_0x74de('0x28')];}_0x37626b[_0x74de('0x1d')](_0x3bb092)[_0x74de('0x29')](_0x10203a);};}exports[_0x74de('0x2a')]=function(_0x542e96,_0x547d39){var _0x1d3504={},_0x15fe1b={},_0x31147f={'count':0x0,'rows':[]};var _0x5766e2=_[_0x74de('0x2b')](db[_0x74de('0x2c')]['rawAttributes'],function(_0x1cd58b){return{'name':_0x1cd58b[_0x74de('0x2d')],'type':_0x1cd58b[_0x74de('0x2e')]['key']};});_0x15fe1b[_0x74de('0x2f')]=_[_0x74de('0x2b')](_0x5766e2,_0x74de('0x28'));_0x15fe1b[_0x74de('0x30')]=_[_0x74de('0x31')](_0x542e96[_0x74de('0x30')]);_0x15fe1b[_0x74de('0x32')]=_['intersection'](_0x15fe1b['model'],_0x15fe1b[_0x74de('0x30')]);_0x1d3504[_0x74de('0x33')]=_[_0x74de('0x34')](_0x15fe1b[_0x74de('0x2f')],qs[_0x74de('0x35')](_0x542e96[_0x74de('0x30')][_0x74de('0x35')]));_0x1d3504['attributes']=_0x1d3504[_0x74de('0x33')]['length']?_0x1d3504['attributes']:_0x15fe1b[_0x74de('0x2f')];if(!_0x542e96['query'][_0x74de('0x36')](_0x74de('0x37'))){_0x1d3504[_0x74de('0x23')]=qs['limit'](_0x542e96[_0x74de('0x30')][_0x74de('0x23')]);_0x1d3504['offset']=qs['offset'](_0x542e96[_0x74de('0x30')][_0x74de('0x20')]);}_0x1d3504['order']=qs[_0x74de('0x38')](_0x542e96[_0x74de('0x30')]['sort']);_0x1d3504[_0x74de('0x39')]=qs[_0x74de('0x32')](_[_0x74de('0x3a')](_0x542e96[_0x74de('0x30')],_0x15fe1b['filters']),_0x5766e2);if(_0x542e96[_0x74de('0x30')]['filter']){_0x1d3504[_0x74de('0x39')]=_[_0x74de('0x3b')](_0x1d3504['where'],{'$or':_[_0x74de('0x2b')](_0x5766e2,function(_0x563d3b){if(_0x563d3b['type']!==_0x74de('0x3c')){var _0x1edcac={};_0x1edcac[_0x563d3b['name']]={'$like':'%'+_0x542e96[_0x74de('0x30')][_0x74de('0x3d')]+'%'};return _0x1edcac;}})});}_0x1d3504=_[_0x74de('0x3b')]({},_0x1d3504,_0x542e96['options']);var _0x595fca={'where':_0x1d3504[_0x74de('0x39')]};return db[_0x74de('0x2c')][_0x74de('0x22')](_0x595fca)[_0x74de('0x25')](function(_0x1315c3){_0x31147f[_0x74de('0x22')]=_0x1315c3;if(_0x542e96[_0x74de('0x30')][_0x74de('0x3e')]){_0x1d3504[_0x74de('0x3f')]=[{'all':!![]}];}return db['FreshdeskAccount']['findAll'](_0x1d3504);})['then'](function(_0x3c0574){_0x31147f[_0x74de('0x40')]=_0x3c0574;return _0x31147f;})[_0x74de('0x25')](respondWithFilteredResult(_0x547d39,_0x1d3504))[_0x74de('0x41')](handleError(_0x547d39,null));};exports[_0x74de('0x42')]=function(_0x472581,_0x1160c3){var _0x46812e={'raw':![],'where':{'id':_0x472581[_0x74de('0x43')]['id']}},_0x8261b6={};_0x8261b6[_0x74de('0x2f')]=_[_0x74de('0x31')](db['FreshdeskAccount'][_0x74de('0x44')]);_0x8261b6[_0x74de('0x30')]=_[_0x74de('0x31')](_0x472581[_0x74de('0x30')]);_0x8261b6[_0x74de('0x32')]=_[_0x74de('0x34')](_0x8261b6[_0x74de('0x2f')],_0x8261b6[_0x74de('0x30')]);_0x46812e[_0x74de('0x33')]=_['intersection'](_0x8261b6[_0x74de('0x2f')],qs[_0x74de('0x35')](_0x472581[_0x74de('0x30')][_0x74de('0x35')]));_0x46812e[_0x74de('0x33')]=_0x46812e[_0x74de('0x33')]['length']?_0x46812e['attributes']:_0x8261b6['model'];if(_0x472581[_0x74de('0x30')][_0x74de('0x3e')]){_0x46812e['include']=[{'all':!![]}];}_0x46812e=_['merge']({},_0x46812e,_0x472581[_0x74de('0x45')]);return db['FreshdeskAccount'][_0x74de('0x46')](_0x46812e)[_0x74de('0x25')](handleEntityNotFound(_0x1160c3,null))[_0x74de('0x25')](respondWithResult(_0x1160c3,null))['catch'](handleError(_0x1160c3,null));};exports[_0x74de('0x47')]=function(_0x132ed9,_0x193012){return db[_0x74de('0x2c')][_0x74de('0x47')](_0x132ed9[_0x74de('0x48')],{})[_0x74de('0x25')](respondWithResult(_0x193012,0xc9))[_0x74de('0x41')](handleError(_0x193012,null));};exports['update']=function(_0x364043,_0x1f105a){if(_0x364043['body']['id']){delete _0x364043[_0x74de('0x48')]['id'];}return db[_0x74de('0x2c')][_0x74de('0x46')]({'where':{'id':_0x364043[_0x74de('0x43')]['id']}})['then'](handleEntityNotFound(_0x1f105a,null))['then'](saveUpdates(_0x364043['body'],null))[_0x74de('0x25')](respondWithResult(_0x1f105a,null))[_0x74de('0x41')](handleError(_0x1f105a,null));};exports[_0x74de('0x49')]=function(_0xc245c6,_0x2ef9c3){return db[_0x74de('0x2c')][_0x74de('0x46')]({'where':{'id':_0xc245c6[_0x74de('0x43')]['id']}})[_0x74de('0x25')](handleEntityNotFound(_0x2ef9c3,null))['then'](removeEntity(_0x2ef9c3,null))[_0x74de('0x41')](handleError(_0x2ef9c3,null));};exports[_0x74de('0x4a')]=function(_0x86b4cd,_0x425f02,_0x1a0561){var _0x45223b={};var _0x1c028f={};var _0xc7f622;var _0x1706d2;return db[_0x74de('0x2c')][_0x74de('0x4b')]({'where':{'id':_0x86b4cd['params']['id']}})['then'](handleEntityNotFound(_0x425f02,null))[_0x74de('0x25')](function(_0x45a03c){if(_0x45a03c){_0xc7f622=_0x45a03c;_0x1c028f['model']=_[_0x74de('0x31')](db[_0x74de('0x4c')][_0x74de('0x44')]);_0x1c028f[_0x74de('0x30')]=_[_0x74de('0x31')](_0x86b4cd[_0x74de('0x30')]);_0x1c028f[_0x74de('0x32')]=_[_0x74de('0x34')](_0x1c028f[_0x74de('0x2f')],_0x1c028f[_0x74de('0x30')]);_0x45223b[_0x74de('0x33')]=_[_0x74de('0x34')](_0x1c028f[_0x74de('0x2f')],qs[_0x74de('0x35')](_0x86b4cd[_0x74de('0x30')]['fields']));_0x45223b[_0x74de('0x33')]=_0x45223b[_0x74de('0x33')]['length']?_0x45223b[_0x74de('0x33')]:_0x1c028f[_0x74de('0x2f')];_0x45223b[_0x74de('0x4d')]=qs[_0x74de('0x38')](_0x86b4cd[_0x74de('0x30')]['sort']);_0x45223b[_0x74de('0x39')]=qs[_0x74de('0x32')](_[_0x74de('0x3a')](_0x86b4cd[_0x74de('0x30')],_0x1c028f[_0x74de('0x32')]));if(_0x86b4cd['query'][_0x74de('0x3d')]){_0x45223b[_0x74de('0x39')]=_[_0x74de('0x3b')](_0x45223b['where'],{'$or':_[_0x74de('0x2b')](_0x45223b['attributes'],function(_0x55cd35){var _0x7dcaae={};_0x7dcaae[_0x55cd35]={'$like':'%'+_0x86b4cd[_0x74de('0x30')][_0x74de('0x3d')]+'%'};return _0x7dcaae;})});}_0x45223b=_['merge']({},_0x45223b,_0x86b4cd[_0x74de('0x45')]);return _0xc7f622[_0x74de('0x4a')](_0x45223b);}})[_0x74de('0x25')](function(_0x45f909){if(_0x45f909){_0x1706d2=_0x45f909[_0x74de('0x4e')];if(!_0x86b4cd['query'][_0x74de('0x36')](_0x74de('0x37'))){_0x45223b[_0x74de('0x23')]=qs['limit'](_0x86b4cd['query'][_0x74de('0x23')]);_0x45223b[_0x74de('0x20')]=qs[_0x74de('0x20')](_0x86b4cd['query'][_0x74de('0x20')]);}return _0xc7f622[_0x74de('0x4a')](_0x45223b);}})[_0x74de('0x25')](function(_0x5850bf){if(_0x5850bf){return _0x5850bf?{'count':_0x1706d2,'rows':_0x5850bf}:null;}})[_0x74de('0x25')](respondWithResult(_0x425f02,null))['catch'](handleError(_0x425f02,null));};exports[_0x74de('0x4f')]=function(_0x38c6a5,_0x130f51,_0x687183){if(_0x38c6a5[_0x74de('0x48')]['id']){delete _0x38c6a5[_0x74de('0x48')]['id'];}return db['FreshdeskAccount'][_0x74de('0x4b')]({'where':{'id':_0x38c6a5[_0x74de('0x43')]['id']}})['then'](handleEntityNotFound(_0x130f51,null))[_0x74de('0x25')](function(_0x2e2d6c){if(_0x2e2d6c){_0x38c6a5[_0x74de('0x48')][_0x74de('0x50')]=_0x2e2d6c['id'];_0x38c6a5[_0x74de('0x48')]['Subjects']=integrations[_0x74de('0x51')](_0x38c6a5[_0x74de('0x48')][_0x74de('0x52')],_0x38c6a5[_0x74de('0x48')][_0x74de('0x2e')]);_0x38c6a5[_0x74de('0x48')][_0x74de('0x53')]=integrations['getDescriptions'](_0x38c6a5['body'][_0x74de('0x52')],_0x38c6a5[_0x74de('0x48')][_0x74de('0x2e')]);return db[_0x74de('0x4c')][_0x74de('0x47')](_0x38c6a5[_0x74de('0x48')],{'include':[{'model':db[_0x74de('0x54')],'as':_0x74de('0x55')},{'model':db[_0x74de('0x54')],'as':'Descriptions'}]});}return null;})[_0x74de('0x25')](respondWithResult(_0x130f51,null))[_0x74de('0x41')](handleError(_0x130f51,null));};exports[_0x74de('0x56')]=function(_0x119609,_0x159357,_0x5b060f){var _0x4f84cd='';return db[_0x74de('0x2c')][_0x74de('0x4b')]({'where':{'id':_0x119609[_0x74de('0x43')]['id']},'attributes':['id','remoteUri','apiKey']})[_0x74de('0x25')](handleEntityNotFound(_0x159357,null))['then'](function(_0x37e12e){if(_0x37e12e){_0x4f84cd=_0x37e12e['remoteUri'];var _0x561dc4=_0x4f84cd[_0x74de('0x57')](-0x1);if(_0x561dc4==='/'){_0x4f84cd=_0x4f84cd[_0x74de('0x58')](0x0,_0x4f84cd[_0x74de('0x59')](_0x561dc4));}return rp({'method':_0x74de('0x5a'),'uri':util[_0x74de('0x5b')](_0x74de('0x5c'),_0x4f84cd,_0x74de('0x5d')),'headers':{'Authorization':util['format'](_0x74de('0x5e'),new Buffer(util[_0x74de('0x5b')](_0x74de('0x5f'),_0x37e12e[_0x74de('0x60')]))[_0x74de('0x61')]('base64'))},'json':!![]});}})[_0x74de('0x25')](function(_0x3f84fc){if(_0x3f84fc){var _0x2fb49f=[_0x74de('0x62'),_0x74de('0x63'),_0x74de('0x64'),_0x74de('0x65'),_0x74de('0x1d'),_0x74de('0x66'),_0x74de('0x67'),_0x74de('0x68'),_0x74de('0x69'),_0x74de('0x67'),_0x74de('0x6a')];_[_0x74de('0x6b')](_0x3f84fc,function(_0x41e14e){return _0x2fb49f[_0x74de('0x6c')](_0x41e14e[_0x74de('0x28')])||!_0x41e14e[_0x74de('0x6d')]&&_0x41e14e[_0x74de('0x2e')]!==_0x74de('0x6e')&&_0x41e14e['type']!==_0x74de('0x6f');});return{'count':_0x3f84fc[_0x74de('0x4e')],'rows':_[_0x74de('0x2b')](_0x3f84fc,function(_0x53c646){return{'id':_0x53c646[_0x74de('0x28')],'name':_0x53c646[_0x74de('0x70')],'custom':!_0x53c646[_0x74de('0x6d')],'options':_0x53c646[_0x74de('0x71')]?_[_0x74de('0x2b')](_0x53c646['choices'],function(_0x5e20bf){return{'name':_['capitalize'](_0x5e20bf),'value':_0x5e20bf};}):[]};})};}})[_0x74de('0x25')](respondWithResult(_0x159357,null))['catch'](function(_0x4fb7bc){var _0x277427=_0x119609[_0x74de('0x30')][_0x74de('0x72')]?0x1f4:_0x4fb7bc[_0x74de('0x73')]||0x1f4;logger[_0x74de('0x26')](_0x74de('0x74'),_0x74de('0x56'),_0x277427,JSON['stringify'](_0x4fb7bc));delete _0x4fb7bc[_0x74de('0x28')];if(_0x277427===0x191){_0x277427=0x190;}_0x159357[_0x74de('0x1d')](_0x277427)['send'](_0x119609[_0x74de('0x30')]['test']?{'message':_0x74de('0x75'),'statusCode':_0x4fb7bc['statusCode']}:_0x4fb7bc);});};
\ No newline at end of file
index 50cc69d..664ae88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4b4=['moment','bluebird','request-promise','path','../../config/environment','../../components/integrations/configuration','define','FreshdeskAccount','int_freshdesk_accounts','util','../../config/logger','api'];(function(_0x1ac595,_0x5d2081){var _0x455fff=function(_0x3043ee){while(--_0x3043ee){_0x1ac595['push'](_0x1ac595['shift']());}};_0x455fff(++_0x5d2081);}(_0xd4b4,0x75));var _0x4d4b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd4b4[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x4d4b('0x0'));var logger=require(_0x4d4b('0x1'))(_0x4d4b('0x2'));var moment=require(_0x4d4b('0x3'));var BPromise=require(_0x4d4b('0x4'));var rp=require(_0x4d4b('0x5'));var fs=require('fs');var path=require(_0x4d4b('0x6'));var rimraf=require('rimraf');var config=require(_0x4d4b('0x7'));var attributes=require('./intFreshdeskAccount.attributes');var integrations=require(_0x4d4b('0x8'));module['exports']=function(_0x18f423,_0x123643){return _0x18f423[_0x4d4b('0x9')](_0x4d4b('0xa'),attributes,{'tableName':_0x4d4b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x516a=['../../components/integrations/configuration','exports','int_freshdesk_accounts','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intFreshdeskAccount.attributes'];(function(_0x46d087,_0x476dff){var _0x48b413=function(_0x44cbbf){while(--_0x44cbbf){_0x46d087['push'](_0x46d087['shift']());}};_0x48b413(++_0x476dff);}(_0x516a,0x9f));var _0xa516=function(_0x47268e,_0x188a69){_0x47268e=_0x47268e-0x0;var _0x28c7a8=_0x516a[_0x47268e];return _0x28c7a8;};'use strict';var _=require('lodash');var util=require(_0xa516('0x0'));var logger=require(_0xa516('0x1'))(_0xa516('0x2'));var moment=require(_0xa516('0x3'));var BPromise=require(_0xa516('0x4'));var rp=require(_0xa516('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa516('0x6'));var config=require(_0xa516('0x7'));var attributes=require(_0xa516('0x8'));var integrations=require(_0xa516('0x9'));module[_0xa516('0xa')]=function(_0x299193,_0x3a4f58){return _0x299193['define']('FreshdeskAccount',attributes,{'tableName':_0xa516('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 28a96b9..0dfe929 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4fe=['error','code','message','result','GetFreshdeskAccount','FreshdeskAccount','findAll','options','raw','attributes','include','map','model','then','catch','ShowFreshdeskAccount','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','info','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','debug','FreshdeskAccount,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x15fa77,_0x93eaff){var _0x1385ff=function(_0x165e02){while(--_0x165e02){_0x15fa77['push'](_0x15fa77['shift']());}};_0x1385ff(++_0x93eaff);}(_0xc4fe,0x1bd));var _0xec4f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc4fe[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xec4f('0x0'));var util=require(_0xec4f('0x1'));var moment=require(_0xec4f('0x2'));var BPromise=require(_0xec4f('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xec4f('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xec4f('0x5'));var logger=require(_0xec4f('0x6'))(_0xec4f('0x7'));var config=require(_0xec4f('0x8'));var jayson=require(_0xec4f('0x9'));var client=jayson[_0xec4f('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x12f6ce,_0x2a1a25,_0x490055){return new BPromise(function(_0x5c848c,_0x416bf9){return client['request'](_0x12f6ce,_0x490055)['then'](function(_0x1836b4){logger[_0xec4f('0xb')](_0xec4f('0xc'),_0x2a1a25,_0xec4f('0xd'));logger[_0xec4f('0xe')](_0xec4f('0xf'),_0x2a1a25,_0xec4f('0xd'),JSON[_0xec4f('0x10')](_0x1836b4));if(_0x1836b4[_0xec4f('0x11')]){if(_0x1836b4[_0xec4f('0x11')][_0xec4f('0x12')]===0x1f4){logger[_0xec4f('0x11')](_0xec4f('0xc'),_0x2a1a25,_0x1836b4[_0xec4f('0x11')][_0xec4f('0x13')]);return _0x416bf9(_0x1836b4[_0xec4f('0x11')][_0xec4f('0x13')]);}logger[_0xec4f('0x11')](_0xec4f('0xc'),_0x2a1a25,_0x1836b4[_0xec4f('0x11')][_0xec4f('0x13')]);return _0x5c848c(_0x1836b4[_0xec4f('0x11')][_0xec4f('0x13')]);}else{logger[_0xec4f('0xb')](_0xec4f('0xc'),_0x2a1a25,_0xec4f('0xd'));_0x5c848c(_0x1836b4[_0xec4f('0x14')][_0xec4f('0x13')]);}})['catch'](function(_0x3207a0){logger[_0xec4f('0x11')](_0xec4f('0xc'),_0x2a1a25,_0x3207a0);_0x416bf9(_0x3207a0);});});}exports[_0xec4f('0x15')]=function(_0x17f788){var _0x5000f8=this;return new Promise(function(_0x1b4bb9,_0xb00a1d){return db[_0xec4f('0x16')][_0xec4f('0x17')]({'raw':_0x17f788[_0xec4f('0x18')]?_0x17f788[_0xec4f('0x18')][_0xec4f('0x19')]===undefined?!![]:![]:!![],'where':_0x17f788[_0xec4f('0x18')]?_0x17f788[_0xec4f('0x18')]['where']||null:null,'attributes':_0x17f788[_0xec4f('0x18')]?_0x17f788['options'][_0xec4f('0x1a')]||null:null,'limit':_0x17f788['options']?_0x17f788[_0xec4f('0x18')]['limit']||null:null,'include':_0x17f788[_0xec4f('0x18')]?_0x17f788[_0xec4f('0x18')][_0xec4f('0x1b')]?_[_0xec4f('0x1c')](_0x17f788['options'][_0xec4f('0x1b')],function(_0x5107fd){return{'model':db[_0x5107fd[_0xec4f('0x1d')]],'as':_0x5107fd['as'],'attributes':_0x5107fd[_0xec4f('0x1a')],'include':_0x5107fd[_0xec4f('0x1b')]?_['map'](_0x5107fd[_0xec4f('0x1b')],function(_0x309239){return{'model':db[_0x309239[_0xec4f('0x1d')]],'as':_0x309239['as'],'attributes':_0x309239[_0xec4f('0x1a')],'include':_0x309239[_0xec4f('0x1b')]?_['map'](_0x309239[_0xec4f('0x1b')],function(_0x4df546){return{'model':db[_0x4df546['model']],'as':_0x4df546['as'],'attributes':_0x4df546['attributes']};}):[]};}):[]};}):[]:[]})[_0xec4f('0x1e')](function(_0x36713f){logger[_0xec4f('0xb')](_0xec4f('0x15'),_0x17f788);logger[_0xec4f('0xe')](_0xec4f('0x15'),_0x17f788,JSON[_0xec4f('0x10')](_0x36713f));_0x1b4bb9(_0x36713f);})[_0xec4f('0x1f')](function(_0x45c8eb){logger['error'](_0xec4f('0x15'),_0x45c8eb[_0xec4f('0x13')],_0x17f788);_0xb00a1d(_0x5000f8[_0xec4f('0x11')](0x1f4,_0x45c8eb['message']));});});};exports['ShowFreshdeskAccount']=function(_0x41bcad){var _0x40c88c=this;return new Promise(function(_0x2c26ff,_0x2ca6a8){return db[_0xec4f('0x16')]['find']({'raw':_0x41bcad[_0xec4f('0x18')]?_0x41bcad['options'][_0xec4f('0x19')]===undefined?!![]:![]:!![],'where':_0x41bcad['options']?_0x41bcad[_0xec4f('0x18')]['where']||null:null,'attributes':_0x41bcad[_0xec4f('0x18')]?_0x41bcad[_0xec4f('0x18')][_0xec4f('0x1a')]||null:null,'include':_0x41bcad[_0xec4f('0x18')]?_0x41bcad['options'][_0xec4f('0x1b')]?_[_0xec4f('0x1c')](_0x41bcad[_0xec4f('0x18')][_0xec4f('0x1b')],function(_0x312f5d){return{'model':db[_0x312f5d['model']],'as':_0x312f5d['as'],'attributes':_0x312f5d[_0xec4f('0x1a')],'include':_0x312f5d[_0xec4f('0x1b')]?_[_0xec4f('0x1c')](_0x312f5d[_0xec4f('0x1b')],function(_0x4b220e){return{'model':db[_0x4b220e[_0xec4f('0x1d')]],'as':_0x4b220e['as'],'attributes':_0x4b220e[_0xec4f('0x1a')],'include':_0x4b220e[_0xec4f('0x1b')]?_[_0xec4f('0x1c')](_0x4b220e[_0xec4f('0x1b')],function(_0x2bc7b5){return{'model':db[_0x2bc7b5[_0xec4f('0x1d')]],'as':_0x2bc7b5['as'],'attributes':_0x2bc7b5[_0xec4f('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xec4f('0x1e')](function(_0x57bfe1){logger[_0xec4f('0xb')](_0xec4f('0x20'),_0x41bcad);logger[_0xec4f('0xe')](_0xec4f('0x20'),_0x41bcad,JSON[_0xec4f('0x10')](_0x57bfe1));_0x2c26ff(_0x57bfe1);})[_0xec4f('0x1f')](function(_0x452361){logger[_0xec4f('0x11')]('ShowFreshdeskAccount',_0x452361['message'],_0x41bcad);_0x2ca6a8(_0x40c88c[_0xec4f('0x11')](0x1f4,_0x452361[_0xec4f('0x13')]));});});};
\ No newline at end of file
+var _0x3cb4=['request','then','info','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','GetFreshdeskAccount','FreshdeskAccount','findAll','options','raw','where','attributes','limit','include','map','model','ShowFreshdeskAccount','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x1fe7e8,_0x48a4e2){var _0x2b1175=function(_0x2d216a){while(--_0x2d216a){_0x1fe7e8['push'](_0x1fe7e8['shift']());}};_0x2b1175(++_0x48a4e2);}(_0x3cb4,0xc7));var _0x43cb=function(_0x46aff0,_0x122890){_0x46aff0=_0x46aff0-0x0;var _0x9d78cf=_0x3cb4[_0x46aff0];return _0x9d78cf;};'use strict';var _=require(_0x43cb('0x0'));var util=require(_0x43cb('0x1'));var moment=require(_0x43cb('0x2'));var BPromise=require('bluebird');var rs=require(_0x43cb('0x3'));var fs=require('fs');var Redis=require(_0x43cb('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x43cb('0x5'));var logger=require(_0x43cb('0x6'))(_0x43cb('0x7'));var config=require(_0x43cb('0x8'));var jayson=require(_0x43cb('0x9'));var client=jayson['client'][_0x43cb('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x268305,_0x3d6e71,_0x35c23c){return new BPromise(function(_0xe605a9,_0x2eec8e){return client[_0x43cb('0xb')](_0x268305,_0x35c23c)[_0x43cb('0xc')](function(_0x10f271){logger[_0x43cb('0xd')](_0x43cb('0xe'),_0x3d6e71,_0x43cb('0xf'));logger[_0x43cb('0x10')]('FreshdeskAccount,\x20%s,\x20%s,\x20%s',_0x3d6e71,_0x43cb('0xf'),JSON[_0x43cb('0x11')](_0x10f271));if(_0x10f271[_0x43cb('0x12')]){if(_0x10f271[_0x43cb('0x12')][_0x43cb('0x13')]===0x1f4){logger['error'](_0x43cb('0xe'),_0x3d6e71,_0x10f271['error'][_0x43cb('0x14')]);return _0x2eec8e(_0x10f271['error'][_0x43cb('0x14')]);}logger[_0x43cb('0x12')](_0x43cb('0xe'),_0x3d6e71,_0x10f271['error']['message']);return _0xe605a9(_0x10f271['error']['message']);}else{logger[_0x43cb('0xd')](_0x43cb('0xe'),_0x3d6e71,'request\x20sent');_0xe605a9(_0x10f271[_0x43cb('0x15')][_0x43cb('0x14')]);}})[_0x43cb('0x16')](function(_0x11356b){logger[_0x43cb('0x12')](_0x43cb('0xe'),_0x3d6e71,_0x11356b);_0x2eec8e(_0x11356b);});});}exports[_0x43cb('0x17')]=function(_0x47e37a){var _0x2f8215=this;return new Promise(function(_0x2deb04,_0xa96a03){return db[_0x43cb('0x18')][_0x43cb('0x19')]({'raw':_0x47e37a['options']?_0x47e37a[_0x43cb('0x1a')][_0x43cb('0x1b')]===undefined?!![]:![]:!![],'where':_0x47e37a[_0x43cb('0x1a')]?_0x47e37a['options'][_0x43cb('0x1c')]||null:null,'attributes':_0x47e37a[_0x43cb('0x1a')]?_0x47e37a['options'][_0x43cb('0x1d')]||null:null,'limit':_0x47e37a[_0x43cb('0x1a')]?_0x47e37a[_0x43cb('0x1a')][_0x43cb('0x1e')]||null:null,'include':_0x47e37a[_0x43cb('0x1a')]?_0x47e37a['options'][_0x43cb('0x1f')]?_[_0x43cb('0x20')](_0x47e37a['options'][_0x43cb('0x1f')],function(_0x4a9318){return{'model':db[_0x4a9318['model']],'as':_0x4a9318['as'],'attributes':_0x4a9318['attributes'],'include':_0x4a9318['include']?_[_0x43cb('0x20')](_0x4a9318['include'],function(_0x315e07){return{'model':db[_0x315e07[_0x43cb('0x21')]],'as':_0x315e07['as'],'attributes':_0x315e07[_0x43cb('0x1d')],'include':_0x315e07[_0x43cb('0x1f')]?_['map'](_0x315e07['include'],function(_0x3f19e0){return{'model':db[_0x3f19e0[_0x43cb('0x21')]],'as':_0x3f19e0['as'],'attributes':_0x3f19e0[_0x43cb('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x43cb('0xc')](function(_0x259cd2){logger[_0x43cb('0xd')](_0x43cb('0x17'),_0x47e37a);logger['debug'](_0x43cb('0x17'),_0x47e37a,JSON[_0x43cb('0x11')](_0x259cd2));_0x2deb04(_0x259cd2);})[_0x43cb('0x16')](function(_0xf11e60){logger[_0x43cb('0x12')]('GetFreshdeskAccount',_0xf11e60['message'],_0x47e37a);_0xa96a03(_0x2f8215[_0x43cb('0x12')](0x1f4,_0xf11e60['message']));});});};exports[_0x43cb('0x22')]=function(_0x30155e){var _0x19a4b9=this;return new Promise(function(_0x242068,_0x25d296){return db['FreshdeskAccount']['find']({'raw':_0x30155e[_0x43cb('0x1a')]?_0x30155e[_0x43cb('0x1a')][_0x43cb('0x1b')]===undefined?!![]:![]:!![],'where':_0x30155e['options']?_0x30155e[_0x43cb('0x1a')][_0x43cb('0x1c')]||null:null,'attributes':_0x30155e[_0x43cb('0x1a')]?_0x30155e[_0x43cb('0x1a')][_0x43cb('0x1d')]||null:null,'include':_0x30155e[_0x43cb('0x1a')]?_0x30155e[_0x43cb('0x1a')]['include']?_[_0x43cb('0x20')](_0x30155e[_0x43cb('0x1a')]['include'],function(_0x103418){return{'model':db[_0x103418['model']],'as':_0x103418['as'],'attributes':_0x103418[_0x43cb('0x1d')],'include':_0x103418[_0x43cb('0x1f')]?_['map'](_0x103418[_0x43cb('0x1f')],function(_0x3b9a19){return{'model':db[_0x3b9a19[_0x43cb('0x21')]],'as':_0x3b9a19['as'],'attributes':_0x3b9a19[_0x43cb('0x1d')],'include':_0x3b9a19[_0x43cb('0x1f')]?_[_0x43cb('0x20')](_0x3b9a19[_0x43cb('0x1f')],function(_0x3d51dd){return{'model':db[_0x3d51dd[_0x43cb('0x21')]],'as':_0x3d51dd['as'],'attributes':_0x3d51dd[_0x43cb('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x43cb('0xc')](function(_0x51aecf){logger['info'](_0x43cb('0x22'),_0x30155e);logger['debug']('ShowFreshdeskAccount',_0x30155e,JSON[_0x43cb('0x11')](_0x51aecf));_0x242068(_0x51aecf);})[_0x43cb('0x16')](function(_0x3c145d){logger[_0x43cb('0x12')](_0x43cb('0x22'),_0x3c145d[_0x43cb('0x14')],_0x30155e);_0x25d296(_0x19a4b9[_0x43cb('0x12')](0x1f4,_0x3c145d[_0x43cb('0x14')]));});});};
\ No newline at end of file
index f15efcc..b3c20e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e81=['put','update','delete','destroy','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/:id','isAuthenticated','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','getTags','post','create','setTags'];(function(_0x1757f2,_0x1b09fa){var _0x5e7212=function(_0x4f1794){while(--_0x4f1794){_0x1757f2['push'](_0x1757f2['shift']());}};_0x5e7212(++_0x1b09fa);}(_0x6e81,0x171));var _0x16e8=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x6e81[_0x167cc1];return _0x10bc4b;};'use strict';var multer=require(_0x16e8('0x0'));var util=require(_0x16e8('0x1'));var path=require('path');var timeout=require(_0x16e8('0x2'));var express=require('express');var router=express[_0x16e8('0x3')]();var fs_extra=require(_0x16e8('0x4'));var auth=require(_0x16e8('0x5'));var interaction=require(_0x16e8('0x6'));var config=require(_0x16e8('0x7'));var controller=require('./intFreshdeskConfiguration.controller');router[_0x16e8('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x16e8('0x8')](_0x16e8('0x9'),auth[_0x16e8('0xa')](),controller[_0x16e8('0xb')]);router[_0x16e8('0x8')](_0x16e8('0xc'),auth[_0x16e8('0xa')](),controller[_0x16e8('0xd')]);router[_0x16e8('0x8')](_0x16e8('0xe'),auth['isAuthenticated'](),controller[_0x16e8('0xf')]);router['get'](_0x16e8('0x10'),auth[_0x16e8('0xa')](),controller[_0x16e8('0x11')]);router['get'](_0x16e8('0x12'),auth['isAuthenticated'](),controller[_0x16e8('0x13')]);router[_0x16e8('0x14')]('/',auth['isAuthenticated'](),controller[_0x16e8('0x15')]);router[_0x16e8('0x14')](_0x16e8('0x12'),auth[_0x16e8('0xa')](),controller[_0x16e8('0x16')]);router[_0x16e8('0x17')](_0x16e8('0x9'),auth[_0x16e8('0xa')](),controller[_0x16e8('0x18')]);router[_0x16e8('0x19')](_0x16e8('0x9'),auth[_0x16e8('0xa')](),controller[_0x16e8('0x1a')]);module[_0x16e8('0x1b')]=router;
\ No newline at end of file
+var _0xee67=['path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./intFreshdeskConfiguration.controller','get','isAuthenticated','index','/:id','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','getTags','post','create','setTags','put','update','delete','destroy','exports'];(function(_0x139e66,_0x443447){var _0x4b8334=function(_0xc6d275){while(--_0xc6d275){_0x139e66['push'](_0x139e66['shift']());}};_0x4b8334(++_0x443447);}(_0xee67,0x1b0));var _0x7ee6=function(_0x4b3d56,_0x22922f){_0x4b3d56=_0x4b3d56-0x0;var _0x56d135=_0xee67[_0x4b3d56];return _0x56d135;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x7ee6('0x0'));var timeout=require(_0x7ee6('0x1'));var express=require(_0x7ee6('0x2'));var router=express[_0x7ee6('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x7ee6('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x7ee6('0x5'));var controller=require(_0x7ee6('0x6'));router[_0x7ee6('0x7')]('/',auth[_0x7ee6('0x8')](),controller[_0x7ee6('0x9')]);router[_0x7ee6('0x7')](_0x7ee6('0xa'),auth[_0x7ee6('0x8')](),controller['show']);router[_0x7ee6('0x7')](_0x7ee6('0xb'),auth[_0x7ee6('0x8')](),controller[_0x7ee6('0xc')]);router[_0x7ee6('0x7')](_0x7ee6('0xd'),auth['isAuthenticated'](),controller[_0x7ee6('0xe')]);router['get'](_0x7ee6('0xf'),auth[_0x7ee6('0x8')](),controller[_0x7ee6('0x10')]);router['get'](_0x7ee6('0x11'),auth[_0x7ee6('0x8')](),controller[_0x7ee6('0x12')]);router[_0x7ee6('0x13')]('/',auth[_0x7ee6('0x8')](),controller[_0x7ee6('0x14')]);router['post'](_0x7ee6('0x11'),auth[_0x7ee6('0x8')](),controller[_0x7ee6('0x15')]);router[_0x7ee6('0x16')](_0x7ee6('0xa'),auth[_0x7ee6('0x8')](),controller[_0x7ee6('0x17')]);router[_0x7ee6('0x18')](_0x7ee6('0xa'),auth['isAuthenticated'](),controller[_0x7ee6('0x19')]);module[_0x7ee6('0x1a')]=router;
\ No newline at end of file
index 85cdec9..ffb468c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbb8=['exports','sequelize'];(function(_0x3c9fda,_0x188817){var _0x45b841=function(_0x1877db){while(--_0x1877db){_0x3c9fda['push'](_0x3c9fda['shift']());}};_0x45b841(++_0x188817);}(_0xcbb8,0x6d));var _0x8cbb=function(_0x50007c,_0x1cbf11){_0x50007c=_0x50007c-0x0;var _0x5c1ec7=_0xcbb8[_0x50007c];return _0x5c1ec7;};'use strict';var Sequelize=require(_0x8cbb('0x0'));module[_0x8cbb('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x887c=['exports','STRING'];(function(_0x1accfa,_0x307461){var _0x2cc292=function(_0x3fd7ca){while(--_0x3fd7ca){_0x1accfa['push'](_0x1accfa['shift']());}};_0x2cc292(++_0x307461);}(_0x887c,0x1da));var _0xc887=function(_0x2d60e9,_0x2c196e){_0x2d60e9=_0x2d60e9-0x0;var _0x2cf5db=_0x887c[_0x2d60e9];return _0x2cf5db;};'use strict';var Sequelize=require('sequelize');module[_0xc887('0x0')]={'name':{'type':Sequelize[_0xc887('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index db6a8e2..8fecf7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x353b=['attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','FreshdeskConfiguration','findAll','show','params','keys','include','options','find','create','body','catch','getFields','findOne','pick','getSubjects','FreshdeskField','getDescriptions','getTags','setTags','eml-format','rimraf','zip-dir','moment','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','reject','update','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','model','filters','query'];(function(_0x33501a,_0x400afb){var _0x539144=function(_0x28b251){while(--_0x28b251){_0x33501a['push'](_0x33501a['shift']());}};_0x539144(++_0x400afb);}(_0x353b,0x1a5));var _0xb353=function(_0x1d1722,_0x759c36){_0x1d1722=_0x1d1722-0x0;var _0x100055=_0x353b[_0x1d1722];return _0x100055;};'use strict';var emlformat=require(_0xb353('0x0'));var rimraf=require(_0xb353('0x1'));var zipdir=require(_0xb353('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xb353('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xb353('0x4'));var util=require(_0xb353('0x5'));var path=require('path');var sox=require(_0xb353('0x6'));var csv=require('to-csv');var ejs=require(_0xb353('0x7'));var fs=require('fs');var fs_extra=require(_0xb353('0x8'));var _=require(_0xb353('0x9'));var squel=require(_0xb353('0xa'));var crypto=require(_0xb353('0xb'));var jsforce=require(_0xb353('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xb353('0xd'));var querystring=require(_0xb353('0xe'));var Papa=require('papaparse');var Redis=require(_0xb353('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xb353('0x10'));var as=require(_0xb353('0x11'));var hardwareService=require(_0xb353('0x12'));var logger=require(_0xb353('0x13'))(_0xb353('0x14'));var utils=require(_0xb353('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xb353('0x16'));var db=require(_0xb353('0x17'))['db'];function respondWithStatusCode(_0x4c7ab3,_0x3652a6){_0x3652a6=_0x3652a6||0xcc;return function(_0xa0b9de){if(_0xa0b9de){return _0x4c7ab3['sendStatus'](_0x3652a6);}return _0x4c7ab3['status'](_0x3652a6)[_0xb353('0x18')]();};}function respondWithResult(_0x2a888a,_0x2727cb){_0x2727cb=_0x2727cb||0xc8;return function(_0x26e7c7){if(_0x26e7c7){return _0x2a888a[_0xb353('0x19')](_0x2727cb)[_0xb353('0x1a')](_0x26e7c7);}};}function respondWithFilteredResult(_0x3d62fc,_0x335bac){return function(_0x22ecac){if(_0x22ecac){var _0x21701e=typeof _0x335bac[_0xb353('0x1b')]===_0xb353('0x1c')&&typeof _0x335bac[_0xb353('0x1d')]==='undefined';var _0x13388d=_0x22ecac[_0xb353('0x1e')];var _0x567143=_0x21701e?0x0:_0x335bac[_0xb353('0x1b')];var _0x1d3af5=_0x21701e?_0x22ecac['count']:_0x335bac[_0xb353('0x1b')]+_0x335bac[_0xb353('0x1d')];var _0x545aca;if(_0x1d3af5>=_0x13388d){_0x1d3af5=_0x13388d;_0x545aca=0xc8;}else{_0x545aca=0xce;}_0x3d62fc[_0xb353('0x19')](_0x545aca);return _0x3d62fc['set']('Content-Range',_0x567143+'-'+_0x1d3af5+'/'+_0x13388d)[_0xb353('0x1a')](_0x22ecac);}return null;};}function patchUpdates(_0x355e77){return function(_0x3670e3){try{jsonpatch['apply'](_0x3670e3,_0x355e77,!![]);}catch(_0x351c90){return BPromise[_0xb353('0x1f')](_0x351c90);}return _0x3670e3['save']();};}function saveUpdates(_0x4415b0,_0x17a035){return function(_0x1c9217){if(_0x1c9217){return _0x1c9217[_0xb353('0x20')](_0x4415b0)[_0xb353('0x21')](function(_0x3ce462){return _0x3ce462;});}return null;};}function removeEntity(_0x47c01d,_0xcf9a2b){return function(_0x4c0eb5){if(_0x4c0eb5){return _0x4c0eb5[_0xb353('0x22')]()['then'](function(){_0x47c01d[_0xb353('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0xfc14b2,_0x22097a){return function(_0x5e63a6){if(!_0x5e63a6){_0xfc14b2['sendStatus'](0x194);}return _0x5e63a6;};}function handleError(_0xfecb01,_0x547281){_0x547281=_0x547281||0x1f4;return function(_0x1864bd){logger[_0xb353('0x23')](_0x1864bd[_0xb353('0x24')]);if(_0x1864bd[_0xb353('0x25')]){delete _0x1864bd[_0xb353('0x25')];}_0xfecb01[_0xb353('0x19')](_0x547281)[_0xb353('0x26')](_0x1864bd);};}exports[_0xb353('0x27')]=function(_0x3acdfa,_0x336198){var _0x5edcdb={},_0x1c6212={},_0x2cbd55={'count':0x0,'rows':[]};var _0x36a698=_[_0xb353('0x28')](db['FreshdeskConfiguration'][_0xb353('0x29')],function(_0x21f894){return{'name':_0x21f894[_0xb353('0x2a')],'type':_0x21f894[_0xb353('0x2b')]['key']};});_0x1c6212[_0xb353('0x2c')]=_['map'](_0x36a698,_0xb353('0x25'));_0x1c6212['query']=_['keys'](_0x3acdfa['query']);_0x1c6212[_0xb353('0x2d')]=_['intersection'](_0x1c6212['model'],_0x1c6212[_0xb353('0x2e')]);_0x5edcdb[_0xb353('0x2f')]=_[_0xb353('0x30')](_0x1c6212['model'],qs[_0xb353('0x31')](_0x3acdfa[_0xb353('0x2e')][_0xb353('0x31')]));_0x5edcdb['attributes']=_0x5edcdb[_0xb353('0x2f')][_0xb353('0x32')]?_0x5edcdb[_0xb353('0x2f')]:_0x1c6212['model'];if(!_0x3acdfa[_0xb353('0x2e')][_0xb353('0x33')](_0xb353('0x34'))){_0x5edcdb[_0xb353('0x1d')]=qs[_0xb353('0x1d')](_0x3acdfa['query'][_0xb353('0x1d')]);_0x5edcdb[_0xb353('0x1b')]=qs[_0xb353('0x1b')](_0x3acdfa['query'][_0xb353('0x1b')]);}_0x5edcdb[_0xb353('0x35')]=qs['sort'](_0x3acdfa[_0xb353('0x2e')][_0xb353('0x36')]);_0x5edcdb[_0xb353('0x37')]=qs[_0xb353('0x2d')](_['pick'](_0x3acdfa[_0xb353('0x2e')],_0x1c6212[_0xb353('0x2d')]),_0x36a698);if(_0x3acdfa[_0xb353('0x2e')][_0xb353('0x38')]){_0x5edcdb[_0xb353('0x37')]=_[_0xb353('0x39')](_0x5edcdb[_0xb353('0x37')],{'$or':_[_0xb353('0x28')](_0x36a698,function(_0x270892){if(_0x270892[_0xb353('0x2b')]!==_0xb353('0x3a')){var _0x3459ae={};_0x3459ae[_0x270892['name']]={'$like':'%'+_0x3acdfa['query']['filter']+'%'};return _0x3459ae;}})});}_0x5edcdb=_[_0xb353('0x39')]({},_0x5edcdb,_0x3acdfa['options']);var _0x52a8b8={'where':_0x5edcdb[_0xb353('0x37')]};return db[_0xb353('0x3b')]['count'](_0x52a8b8)['then'](function(_0x221c5c){_0x2cbd55['count']=_0x221c5c;if(_0x3acdfa[_0xb353('0x2e')]['includeAll']){_0x5edcdb['include']=[{'all':!![]}];}return db[_0xb353('0x3b')][_0xb353('0x3c')](_0x5edcdb);})[_0xb353('0x21')](function(_0x216d50){_0x2cbd55['rows']=_0x216d50;return _0x2cbd55;})['then'](respondWithFilteredResult(_0x336198,_0x5edcdb))['catch'](handleError(_0x336198,null));};exports[_0xb353('0x3d')]=function(_0xa5b9f0,_0x542cb3){var _0x41832e={'raw':![],'where':{'id':_0xa5b9f0[_0xb353('0x3e')]['id']}},_0x50d180={};_0x50d180[_0xb353('0x2c')]=_[_0xb353('0x3f')](db[_0xb353('0x3b')]['rawAttributes']);_0x50d180[_0xb353('0x2e')]=_[_0xb353('0x3f')](_0xa5b9f0['query']);_0x50d180['filters']=_[_0xb353('0x30')](_0x50d180[_0xb353('0x2c')],_0x50d180['query']);_0x41832e['attributes']=_[_0xb353('0x30')](_0x50d180[_0xb353('0x2c')],qs[_0xb353('0x31')](_0xa5b9f0[_0xb353('0x2e')][_0xb353('0x31')]));_0x41832e[_0xb353('0x2f')]=_0x41832e['attributes']['length']?_0x41832e[_0xb353('0x2f')]:_0x50d180[_0xb353('0x2c')];if(_0xa5b9f0[_0xb353('0x2e')]['includeAll']){_0x41832e[_0xb353('0x40')]=[{'all':!![]}];}_0x41832e=_[_0xb353('0x39')]({},_0x41832e,_0xa5b9f0[_0xb353('0x41')]);return db[_0xb353('0x3b')][_0xb353('0x42')](_0x41832e)[_0xb353('0x21')](handleEntityNotFound(_0x542cb3,null))[_0xb353('0x21')](respondWithResult(_0x542cb3,null))['catch'](handleError(_0x542cb3,null));};exports[_0xb353('0x43')]=function(_0x4e5306,_0xe6955e){return db[_0xb353('0x3b')][_0xb353('0x43')](_0x4e5306[_0xb353('0x44')],{})[_0xb353('0x21')](respondWithResult(_0xe6955e,0xc9))['catch'](handleError(_0xe6955e,null));};exports[_0xb353('0x20')]=function(_0x3cfb4b,_0x234f55){if(_0x3cfb4b[_0xb353('0x44')]['id']){delete _0x3cfb4b[_0xb353('0x44')]['id'];}return db['FreshdeskConfiguration'][_0xb353('0x42')]({'where':{'id':_0x3cfb4b[_0xb353('0x3e')]['id']}})[_0xb353('0x21')](handleEntityNotFound(_0x234f55,null))[_0xb353('0x21')](saveUpdates(_0x3cfb4b[_0xb353('0x44')],null))[_0xb353('0x21')](respondWithResult(_0x234f55,null))[_0xb353('0x45')](handleError(_0x234f55,null));};exports[_0xb353('0x22')]=function(_0x35df52,_0x1d7de1){return db['FreshdeskConfiguration']['find']({'where':{'id':_0x35df52[_0xb353('0x3e')]['id']}})[_0xb353('0x21')](handleEntityNotFound(_0x1d7de1,null))[_0xb353('0x21')](removeEntity(_0x1d7de1,null))[_0xb353('0x45')](handleError(_0x1d7de1,null));};exports[_0xb353('0x46')]=function(_0x48594e,_0x874e05,_0x3d696d){var _0x41c2b2={};var _0x5cad97={};var _0x1e1178;var _0x58c4ee;return db[_0xb353('0x3b')][_0xb353('0x47')]({'where':{'id':_0x48594e[_0xb353('0x3e')]['id']}})[_0xb353('0x21')](handleEntityNotFound(_0x874e05,null))[_0xb353('0x21')](function(_0x306b6d){if(_0x306b6d){_0x1e1178=_0x306b6d;_0x5cad97['model']=_[_0xb353('0x3f')](db['FreshdeskField']['rawAttributes']);_0x5cad97[_0xb353('0x2e')]=_[_0xb353('0x3f')](_0x48594e[_0xb353('0x2e')]);_0x5cad97[_0xb353('0x2d')]=_[_0xb353('0x30')](_0x5cad97[_0xb353('0x2c')],_0x5cad97[_0xb353('0x2e')]);_0x41c2b2[_0xb353('0x2f')]=_[_0xb353('0x30')](_0x5cad97['model'],qs[_0xb353('0x31')](_0x48594e[_0xb353('0x2e')][_0xb353('0x31')]));_0x41c2b2[_0xb353('0x2f')]=_0x41c2b2['attributes'][_0xb353('0x32')]?_0x41c2b2[_0xb353('0x2f')]:_0x5cad97[_0xb353('0x2c')];_0x41c2b2[_0xb353('0x35')]=qs['sort'](_0x48594e['query'][_0xb353('0x36')]);_0x41c2b2[_0xb353('0x37')]=qs[_0xb353('0x2d')](_[_0xb353('0x48')](_0x48594e[_0xb353('0x2e')],_0x5cad97['filters']));if(_0x48594e['query']['filter']){_0x41c2b2[_0xb353('0x37')]=_[_0xb353('0x39')](_0x41c2b2[_0xb353('0x37')],{'$or':_[_0xb353('0x28')](_0x41c2b2[_0xb353('0x2f')],function(_0x599fa1){var _0x285aa3={};_0x285aa3[_0x599fa1]={'$like':'%'+_0x48594e[_0xb353('0x2e')][_0xb353('0x38')]+'%'};return _0x285aa3;})});}_0x41c2b2=_[_0xb353('0x39')]({},_0x41c2b2,_0x48594e[_0xb353('0x41')]);return _0x1e1178[_0xb353('0x46')](_0x41c2b2);}})['then'](function(_0x284b57){if(_0x284b57){_0x58c4ee=_0x284b57[_0xb353('0x32')];if(!_0x48594e['query'][_0xb353('0x33')](_0xb353('0x34'))){_0x41c2b2[_0xb353('0x1d')]=qs[_0xb353('0x1d')](_0x48594e[_0xb353('0x2e')][_0xb353('0x1d')]);_0x41c2b2['offset']=qs[_0xb353('0x1b')](_0x48594e['query']['offset']);}return _0x1e1178[_0xb353('0x46')](_0x41c2b2);}})[_0xb353('0x21')](function(_0xc5542e){if(_0xc5542e){return _0xc5542e?{'count':_0x58c4ee,'rows':_0xc5542e}:null;}})[_0xb353('0x21')](respondWithResult(_0x874e05,null))[_0xb353('0x45')](handleError(_0x874e05,null));};exports[_0xb353('0x49')]=function(_0x3ac1d0,_0x839c04,_0x341745){var _0x18ebb6={};var _0x4774bc={};var _0x2af120;var _0x17dd4c;return db[_0xb353('0x3b')]['findOne']({'where':{'id':_0x3ac1d0[_0xb353('0x3e')]['id']}})[_0xb353('0x21')](handleEntityNotFound(_0x839c04,null))[_0xb353('0x21')](function(_0x35816d){if(_0x35816d){_0x2af120=_0x35816d;_0x4774bc[_0xb353('0x2c')]=_[_0xb353('0x3f')](db[_0xb353('0x4a')][_0xb353('0x29')]);_0x4774bc[_0xb353('0x2e')]=_[_0xb353('0x3f')](_0x3ac1d0[_0xb353('0x2e')]);_0x4774bc[_0xb353('0x2d')]=_[_0xb353('0x30')](_0x4774bc[_0xb353('0x2c')],_0x4774bc[_0xb353('0x2e')]);_0x18ebb6[_0xb353('0x2f')]=_[_0xb353('0x30')](_0x4774bc[_0xb353('0x2c')],qs[_0xb353('0x31')](_0x3ac1d0[_0xb353('0x2e')][_0xb353('0x31')]));_0x18ebb6['attributes']=_0x18ebb6[_0xb353('0x2f')][_0xb353('0x32')]?_0x18ebb6[_0xb353('0x2f')]:_0x4774bc[_0xb353('0x2c')];_0x18ebb6[_0xb353('0x35')]=qs[_0xb353('0x36')](_0x3ac1d0[_0xb353('0x2e')][_0xb353('0x36')]);_0x18ebb6[_0xb353('0x37')]=qs['filters'](_[_0xb353('0x48')](_0x3ac1d0['query'],_0x4774bc[_0xb353('0x2d')]));if(_0x3ac1d0['query'][_0xb353('0x38')]){_0x18ebb6[_0xb353('0x37')]=_[_0xb353('0x39')](_0x18ebb6[_0xb353('0x37')],{'$or':_['map'](_0x18ebb6[_0xb353('0x2f')],function(_0x503b51){var _0x1f427a={};_0x1f427a[_0x503b51]={'$like':'%'+_0x3ac1d0[_0xb353('0x2e')][_0xb353('0x38')]+'%'};return _0x1f427a;})});}_0x18ebb6=_[_0xb353('0x39')]({},_0x18ebb6,_0x3ac1d0[_0xb353('0x41')]);return _0x2af120['getSubjects'](_0x18ebb6);}})[_0xb353('0x21')](function(_0x45dfda){if(_0x45dfda){_0x17dd4c=_0x45dfda[_0xb353('0x32')];if(!_0x3ac1d0[_0xb353('0x2e')][_0xb353('0x33')](_0xb353('0x34'))){_0x18ebb6['limit']=qs['limit'](_0x3ac1d0['query'][_0xb353('0x1d')]);_0x18ebb6[_0xb353('0x1b')]=qs[_0xb353('0x1b')](_0x3ac1d0[_0xb353('0x2e')][_0xb353('0x1b')]);}return _0x2af120['getSubjects'](_0x18ebb6);}})[_0xb353('0x21')](function(_0x3db579){if(_0x3db579){return _0x3db579?{'count':_0x17dd4c,'rows':_0x3db579}:null;}})[_0xb353('0x21')](respondWithResult(_0x839c04,null))['catch'](handleError(_0x839c04,null));};exports['getDescriptions']=function(_0x43adf5,_0x248fc9,_0x1ecff0){var _0x322f13={};var _0x3b7dc5={};var _0x35ee91;var _0x151ceb;return db[_0xb353('0x3b')]['findOne']({'where':{'id':_0x43adf5[_0xb353('0x3e')]['id']}})[_0xb353('0x21')](handleEntityNotFound(_0x248fc9,null))[_0xb353('0x21')](function(_0x42fb3d){if(_0x42fb3d){_0x35ee91=_0x42fb3d;_0x3b7dc5[_0xb353('0x2c')]=_['keys'](db[_0xb353('0x4a')]['rawAttributes']);_0x3b7dc5['query']=_[_0xb353('0x3f')](_0x43adf5['query']);_0x3b7dc5[_0xb353('0x2d')]=_[_0xb353('0x30')](_0x3b7dc5[_0xb353('0x2c')],_0x3b7dc5['query']);_0x322f13[_0xb353('0x2f')]=_[_0xb353('0x30')](_0x3b7dc5[_0xb353('0x2c')],qs[_0xb353('0x31')](_0x43adf5[_0xb353('0x2e')][_0xb353('0x31')]));_0x322f13['attributes']=_0x322f13['attributes'][_0xb353('0x32')]?_0x322f13[_0xb353('0x2f')]:_0x3b7dc5[_0xb353('0x2c')];_0x322f13[_0xb353('0x35')]=qs[_0xb353('0x36')](_0x43adf5['query'][_0xb353('0x36')]);_0x322f13[_0xb353('0x37')]=qs[_0xb353('0x2d')](_[_0xb353('0x48')](_0x43adf5[_0xb353('0x2e')],_0x3b7dc5[_0xb353('0x2d')]));if(_0x43adf5[_0xb353('0x2e')][_0xb353('0x38')]){_0x322f13['where']=_[_0xb353('0x39')](_0x322f13[_0xb353('0x37')],{'$or':_[_0xb353('0x28')](_0x322f13[_0xb353('0x2f')],function(_0x41b6a2){var _0x31807d={};_0x31807d[_0x41b6a2]={'$like':'%'+_0x43adf5[_0xb353('0x2e')][_0xb353('0x38')]+'%'};return _0x31807d;})});}_0x322f13=_[_0xb353('0x39')]({},_0x322f13,_0x43adf5[_0xb353('0x41')]);return _0x35ee91[_0xb353('0x4b')](_0x322f13);}})[_0xb353('0x21')](function(_0x5cda63){if(_0x5cda63){_0x151ceb=_0x5cda63[_0xb353('0x32')];if(!_0x43adf5[_0xb353('0x2e')][_0xb353('0x33')]('nolimit')){_0x322f13[_0xb353('0x1d')]=qs[_0xb353('0x1d')](_0x43adf5[_0xb353('0x2e')][_0xb353('0x1d')]);_0x322f13[_0xb353('0x1b')]=qs[_0xb353('0x1b')](_0x43adf5[_0xb353('0x2e')][_0xb353('0x1b')]);}return _0x35ee91[_0xb353('0x4b')](_0x322f13);}})[_0xb353('0x21')](function(_0x87927a){if(_0x87927a){return _0x87927a?{'count':_0x151ceb,'rows':_0x87927a}:null;}})[_0xb353('0x21')](respondWithResult(_0x248fc9,null))[_0xb353('0x45')](handleError(_0x248fc9,null));};exports[_0xb353('0x4c')]=function(_0x11ab01,_0xd3596e,_0x319ea3){var _0x5eac8c={};var _0x53d325={};var _0x53666d;var _0x29955e;return db[_0xb353('0x3b')]['findOne']({'where':{'id':_0x11ab01[_0xb353('0x3e')]['id']}})[_0xb353('0x21')](handleEntityNotFound(_0xd3596e,null))[_0xb353('0x21')](function(_0x427ec1){if(_0x427ec1){_0x53666d=_0x427ec1;_0x53d325[_0xb353('0x2c')]=_[_0xb353('0x3f')](db['Tag']['rawAttributes']);_0x53d325[_0xb353('0x2e')]=_[_0xb353('0x3f')](_0x11ab01[_0xb353('0x2e')]);_0x53d325[_0xb353('0x2d')]=_['intersection'](_0x53d325[_0xb353('0x2c')],_0x53d325[_0xb353('0x2e')]);_0x5eac8c[_0xb353('0x2f')]=_['intersection'](_0x53d325['model'],qs[_0xb353('0x31')](_0x11ab01['query'][_0xb353('0x31')]));_0x5eac8c[_0xb353('0x2f')]=_0x5eac8c[_0xb353('0x2f')][_0xb353('0x32')]?_0x5eac8c[_0xb353('0x2f')]:_0x53d325[_0xb353('0x2c')];_0x5eac8c[_0xb353('0x35')]=qs[_0xb353('0x36')](_0x11ab01[_0xb353('0x2e')][_0xb353('0x36')]);_0x5eac8c[_0xb353('0x37')]=qs[_0xb353('0x2d')](_[_0xb353('0x48')](_0x11ab01[_0xb353('0x2e')],_0x53d325[_0xb353('0x2d')]));if(_0x11ab01[_0xb353('0x2e')][_0xb353('0x38')]){_0x5eac8c[_0xb353('0x37')]=_[_0xb353('0x39')](_0x5eac8c['where'],{'$or':_[_0xb353('0x28')](_0x5eac8c[_0xb353('0x2f')],function(_0x4a544c){var _0x50d0f9={};_0x50d0f9[_0x4a544c]={'$like':'%'+_0x11ab01['query'][_0xb353('0x38')]+'%'};return _0x50d0f9;})});}_0x5eac8c=_[_0xb353('0x39')]({},_0x5eac8c,_0x11ab01[_0xb353('0x41')]);return _0x53666d[_0xb353('0x4c')](_0x5eac8c);}})['then'](function(_0x1f8216){if(_0x1f8216){_0x29955e=_0x1f8216[_0xb353('0x32')];if(!_0x11ab01['query'][_0xb353('0x33')](_0xb353('0x34'))){_0x5eac8c['limit']=qs[_0xb353('0x1d')](_0x11ab01['query']['limit']);_0x5eac8c[_0xb353('0x1b')]=qs[_0xb353('0x1b')](_0x11ab01['query']['offset']);}return _0x53666d[_0xb353('0x4c')](_0x5eac8c);}})['then'](function(_0x415c53){if(_0x415c53){return _0x415c53?{'count':_0x29955e,'rows':_0x415c53}:null;}})[_0xb353('0x21')](respondWithResult(_0xd3596e,null))[_0xb353('0x45')](handleError(_0xd3596e,null));};exports[_0xb353('0x4d')]=function(_0x3acfb2,_0x27290e,_0x1f7013){if(_0x3acfb2[_0xb353('0x44')]['id']){delete _0x3acfb2[_0xb353('0x44')]['id'];}return db[_0xb353('0x3b')][_0xb353('0x47')]({'where':{'id':_0x3acfb2[_0xb353('0x3e')]['id']}})[_0xb353('0x21')](handleEntityNotFound(_0x27290e,null))[_0xb353('0x21')](function(_0x5ab9a6){if(_0x5ab9a6){return _0x5ab9a6['setTags'](_0x3acfb2['body']['ids']||[]);}return null;})[_0xb353('0x21')](respondWithResult(_0x27290e,null))['catch'](handleError(_0x27290e,null));};
\ No newline at end of file
+var _0xaa00=['stack','name','send','index','map','FreshdeskConfiguration','fieldName','type','key','model','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','filters','pick','filter','where','merge','VIRTUAL','options','include','findAll','catch','show','params','keys','find','create','body','getFields','FreshdeskField','rawAttributes','getSubjects','findOne','order','getDescriptions','getTags','Tag','setTags','ids','eml-format','zip-dir','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','limit','undefined','count','set','Content-Range','apply','update','then','destroy','error'];(function(_0x42c90d,_0x32a715){var _0x869d41=function(_0x2c3b6e){while(--_0x2c3b6e){_0x42c90d['push'](_0x42c90d['shift']());}};_0x869d41(++_0x32a715);}(_0xaa00,0x1c7));var _0x0aa0=function(_0x5305d1,_0x4aaf34){_0x5305d1=_0x5305d1-0x0;var _0x1a0a07=_0xaa00[_0x5305d1];return _0x1a0a07;};'use strict';var emlformat=require(_0x0aa0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0aa0('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0aa0('0x2'));var BPromise=require(_0x0aa0('0x3'));var Mustache=require(_0x0aa0('0x4'));var util=require('util');var path=require(_0x0aa0('0x5'));var sox=require(_0x0aa0('0x6'));var csv=require(_0x0aa0('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0aa0('0x8'));var _=require(_0x0aa0('0x9'));var squel=require(_0x0aa0('0xa'));var crypto=require(_0x0aa0('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x0aa0('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x0aa0('0xd'));var Redis=require(_0x0aa0('0xe'));var authService=require(_0x0aa0('0xf'));var qs=require(_0x0aa0('0x10'));var as=require(_0x0aa0('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0aa0('0x12'))(_0x0aa0('0x13'));var utils=require('../../config/utils');var config=require(_0x0aa0('0x14'));var licenseUtil=require(_0x0aa0('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xbd9900,_0x3dd540){_0x3dd540=_0x3dd540||0xcc;return function(_0x23378c){if(_0x23378c){return _0xbd9900[_0x0aa0('0x16')](_0x3dd540);}return _0xbd9900['status'](_0x3dd540)[_0x0aa0('0x17')]();};}function respondWithResult(_0x4a3152,_0x1c5c08){_0x1c5c08=_0x1c5c08||0xc8;return function(_0x39227a){if(_0x39227a){return _0x4a3152[_0x0aa0('0x18')](_0x1c5c08)[_0x0aa0('0x19')](_0x39227a);}};}function respondWithFilteredResult(_0x4031b7,_0x5d6654){return function(_0x19df7f){if(_0x19df7f){var _0x4956d2=typeof _0x5d6654[_0x0aa0('0x1a')]==='undefined'&&typeof _0x5d6654[_0x0aa0('0x1b')]===_0x0aa0('0x1c');var _0x25844c=_0x19df7f[_0x0aa0('0x1d')];var _0x87d8b8=_0x4956d2?0x0:_0x5d6654[_0x0aa0('0x1a')];var _0xf9501a=_0x4956d2?_0x19df7f['count']:_0x5d6654[_0x0aa0('0x1a')]+_0x5d6654[_0x0aa0('0x1b')];var _0x474e6d;if(_0xf9501a>=_0x25844c){_0xf9501a=_0x25844c;_0x474e6d=0xc8;}else{_0x474e6d=0xce;}_0x4031b7[_0x0aa0('0x18')](_0x474e6d);return _0x4031b7[_0x0aa0('0x1e')](_0x0aa0('0x1f'),_0x87d8b8+'-'+_0xf9501a+'/'+_0x25844c)[_0x0aa0('0x19')](_0x19df7f);}return null;};}function patchUpdates(_0xccb42){return function(_0x44927f){try{jsonpatch[_0x0aa0('0x20')](_0x44927f,_0xccb42,!![]);}catch(_0x726cc7){return BPromise['reject'](_0x726cc7);}return _0x44927f['save']();};}function saveUpdates(_0x493f21,_0x2b0d99){return function(_0x34b8d4){if(_0x34b8d4){return _0x34b8d4[_0x0aa0('0x21')](_0x493f21)[_0x0aa0('0x22')](function(_0xf9018a){return _0xf9018a;});}return null;};}function removeEntity(_0x2741cf,_0x543e6c){return function(_0x2860af){if(_0x2860af){return _0x2860af[_0x0aa0('0x23')]()[_0x0aa0('0x22')](function(){_0x2741cf[_0x0aa0('0x18')](0xcc)[_0x0aa0('0x17')]();});}};}function handleEntityNotFound(_0x54f5a9,_0x59e7ec){return function(_0x4466fd){if(!_0x4466fd){_0x54f5a9[_0x0aa0('0x16')](0x194);}return _0x4466fd;};}function handleError(_0x3e872b,_0xe5ae27){_0xe5ae27=_0xe5ae27||0x1f4;return function(_0x26f9ac){logger[_0x0aa0('0x24')](_0x26f9ac[_0x0aa0('0x25')]);if(_0x26f9ac[_0x0aa0('0x26')]){delete _0x26f9ac[_0x0aa0('0x26')];}_0x3e872b[_0x0aa0('0x18')](_0xe5ae27)[_0x0aa0('0x27')](_0x26f9ac);};}exports[_0x0aa0('0x28')]=function(_0x8a11e2,_0x482219){var _0x42fd5f={},_0x51e656={},_0x44e306={'count':0x0,'rows':[]};var _0x267fc6=_[_0x0aa0('0x29')](db[_0x0aa0('0x2a')]['rawAttributes'],function(_0x5e7435){return{'name':_0x5e7435[_0x0aa0('0x2b')],'type':_0x5e7435[_0x0aa0('0x2c')][_0x0aa0('0x2d')]};});_0x51e656[_0x0aa0('0x2e')]=_['map'](_0x267fc6,_0x0aa0('0x26'));_0x51e656['query']=_['keys'](_0x8a11e2[_0x0aa0('0x2f')]);_0x51e656['filters']=_[_0x0aa0('0x30')](_0x51e656[_0x0aa0('0x2e')],_0x51e656[_0x0aa0('0x2f')]);_0x42fd5f['attributes']=_['intersection'](_0x51e656[_0x0aa0('0x2e')],qs[_0x0aa0('0x31')](_0x8a11e2[_0x0aa0('0x2f')][_0x0aa0('0x31')]));_0x42fd5f[_0x0aa0('0x32')]=_0x42fd5f[_0x0aa0('0x32')][_0x0aa0('0x33')]?_0x42fd5f['attributes']:_0x51e656[_0x0aa0('0x2e')];if(!_0x8a11e2['query'][_0x0aa0('0x34')](_0x0aa0('0x35'))){_0x42fd5f[_0x0aa0('0x1b')]=qs[_0x0aa0('0x1b')](_0x8a11e2['query']['limit']);_0x42fd5f[_0x0aa0('0x1a')]=qs['offset'](_0x8a11e2[_0x0aa0('0x2f')][_0x0aa0('0x1a')]);}_0x42fd5f['order']=qs[_0x0aa0('0x36')](_0x8a11e2['query']['sort']);_0x42fd5f['where']=qs[_0x0aa0('0x37')](_[_0x0aa0('0x38')](_0x8a11e2['query'],_0x51e656[_0x0aa0('0x37')]),_0x267fc6);if(_0x8a11e2[_0x0aa0('0x2f')][_0x0aa0('0x39')]){_0x42fd5f[_0x0aa0('0x3a')]=_[_0x0aa0('0x3b')](_0x42fd5f['where'],{'$or':_[_0x0aa0('0x29')](_0x267fc6,function(_0x400924){if(_0x400924[_0x0aa0('0x2c')]!==_0x0aa0('0x3c')){var _0x266d05={};_0x266d05[_0x400924[_0x0aa0('0x26')]]={'$like':'%'+_0x8a11e2['query']['filter']+'%'};return _0x266d05;}})});}_0x42fd5f=_[_0x0aa0('0x3b')]({},_0x42fd5f,_0x8a11e2[_0x0aa0('0x3d')]);var _0x42f39e={'where':_0x42fd5f[_0x0aa0('0x3a')]};return db['FreshdeskConfiguration']['count'](_0x42f39e)[_0x0aa0('0x22')](function(_0x1d7fce){_0x44e306['count']=_0x1d7fce;if(_0x8a11e2[_0x0aa0('0x2f')]['includeAll']){_0x42fd5f[_0x0aa0('0x3e')]=[{'all':!![]}];}return db[_0x0aa0('0x2a')][_0x0aa0('0x3f')](_0x42fd5f);})['then'](function(_0x1c5385){_0x44e306['rows']=_0x1c5385;return _0x44e306;})['then'](respondWithFilteredResult(_0x482219,_0x42fd5f))[_0x0aa0('0x40')](handleError(_0x482219,null));};exports[_0x0aa0('0x41')]=function(_0x40d0df,_0x1ac483){var _0x5eaff6={'raw':![],'where':{'id':_0x40d0df[_0x0aa0('0x42')]['id']}},_0x4e804d={};_0x4e804d['model']=_[_0x0aa0('0x43')](db['FreshdeskConfiguration']['rawAttributes']);_0x4e804d[_0x0aa0('0x2f')]=_[_0x0aa0('0x43')](_0x40d0df['query']);_0x4e804d[_0x0aa0('0x37')]=_['intersection'](_0x4e804d['model'],_0x4e804d['query']);_0x5eaff6[_0x0aa0('0x32')]=_[_0x0aa0('0x30')](_0x4e804d[_0x0aa0('0x2e')],qs[_0x0aa0('0x31')](_0x40d0df['query'][_0x0aa0('0x31')]));_0x5eaff6['attributes']=_0x5eaff6['attributes'][_0x0aa0('0x33')]?_0x5eaff6[_0x0aa0('0x32')]:_0x4e804d['model'];if(_0x40d0df['query']['includeAll']){_0x5eaff6[_0x0aa0('0x3e')]=[{'all':!![]}];}_0x5eaff6=_[_0x0aa0('0x3b')]({},_0x5eaff6,_0x40d0df[_0x0aa0('0x3d')]);return db[_0x0aa0('0x2a')][_0x0aa0('0x44')](_0x5eaff6)['then'](handleEntityNotFound(_0x1ac483,null))[_0x0aa0('0x22')](respondWithResult(_0x1ac483,null))[_0x0aa0('0x40')](handleError(_0x1ac483,null));};exports[_0x0aa0('0x45')]=function(_0x234af1,_0x4aa955){return db[_0x0aa0('0x2a')]['create'](_0x234af1['body'],{})[_0x0aa0('0x22')](respondWithResult(_0x4aa955,0xc9))[_0x0aa0('0x40')](handleError(_0x4aa955,null));};exports[_0x0aa0('0x21')]=function(_0x13a66d,_0x34ec7f){if(_0x13a66d[_0x0aa0('0x46')]['id']){delete _0x13a66d[_0x0aa0('0x46')]['id'];}return db[_0x0aa0('0x2a')]['find']({'where':{'id':_0x13a66d[_0x0aa0('0x42')]['id']}})[_0x0aa0('0x22')](handleEntityNotFound(_0x34ec7f,null))['then'](saveUpdates(_0x13a66d[_0x0aa0('0x46')],null))[_0x0aa0('0x22')](respondWithResult(_0x34ec7f,null))['catch'](handleError(_0x34ec7f,null));};exports[_0x0aa0('0x23')]=function(_0xd63bc2,_0x51e713){return db[_0x0aa0('0x2a')][_0x0aa0('0x44')]({'where':{'id':_0xd63bc2[_0x0aa0('0x42')]['id']}})[_0x0aa0('0x22')](handleEntityNotFound(_0x51e713,null))[_0x0aa0('0x22')](removeEntity(_0x51e713,null))[_0x0aa0('0x40')](handleError(_0x51e713,null));};exports[_0x0aa0('0x47')]=function(_0x4d9fa2,_0x2e6365,_0x1d58b4){var _0x5489a5={};var _0x291126={};var _0x1b8ae0;var _0x2f35c7;return db['FreshdeskConfiguration']['findOne']({'where':{'id':_0x4d9fa2['params']['id']}})['then'](handleEntityNotFound(_0x2e6365,null))[_0x0aa0('0x22')](function(_0x515d55){if(_0x515d55){_0x1b8ae0=_0x515d55;_0x291126[_0x0aa0('0x2e')]=_[_0x0aa0('0x43')](db[_0x0aa0('0x48')][_0x0aa0('0x49')]);_0x291126[_0x0aa0('0x2f')]=_['keys'](_0x4d9fa2[_0x0aa0('0x2f')]);_0x291126[_0x0aa0('0x37')]=_[_0x0aa0('0x30')](_0x291126[_0x0aa0('0x2e')],_0x291126[_0x0aa0('0x2f')]);_0x5489a5[_0x0aa0('0x32')]=_[_0x0aa0('0x30')](_0x291126[_0x0aa0('0x2e')],qs['fields'](_0x4d9fa2[_0x0aa0('0x2f')][_0x0aa0('0x31')]));_0x5489a5[_0x0aa0('0x32')]=_0x5489a5[_0x0aa0('0x32')][_0x0aa0('0x33')]?_0x5489a5['attributes']:_0x291126[_0x0aa0('0x2e')];_0x5489a5['order']=qs['sort'](_0x4d9fa2[_0x0aa0('0x2f')]['sort']);_0x5489a5[_0x0aa0('0x3a')]=qs[_0x0aa0('0x37')](_['pick'](_0x4d9fa2['query'],_0x291126[_0x0aa0('0x37')]));if(_0x4d9fa2[_0x0aa0('0x2f')][_0x0aa0('0x39')]){_0x5489a5[_0x0aa0('0x3a')]=_['merge'](_0x5489a5[_0x0aa0('0x3a')],{'$or':_['map'](_0x5489a5[_0x0aa0('0x32')],function(_0x11310b){var _0x3eb6d9={};_0x3eb6d9[_0x11310b]={'$like':'%'+_0x4d9fa2['query'][_0x0aa0('0x39')]+'%'};return _0x3eb6d9;})});}_0x5489a5=_[_0x0aa0('0x3b')]({},_0x5489a5,_0x4d9fa2['options']);return _0x1b8ae0[_0x0aa0('0x47')](_0x5489a5);}})[_0x0aa0('0x22')](function(_0x367f3b){if(_0x367f3b){_0x2f35c7=_0x367f3b[_0x0aa0('0x33')];if(!_0x4d9fa2[_0x0aa0('0x2f')][_0x0aa0('0x34')]('nolimit')){_0x5489a5['limit']=qs[_0x0aa0('0x1b')](_0x4d9fa2[_0x0aa0('0x2f')]['limit']);_0x5489a5['offset']=qs[_0x0aa0('0x1a')](_0x4d9fa2[_0x0aa0('0x2f')][_0x0aa0('0x1a')]);}return _0x1b8ae0[_0x0aa0('0x47')](_0x5489a5);}})[_0x0aa0('0x22')](function(_0xf375fa){if(_0xf375fa){return _0xf375fa?{'count':_0x2f35c7,'rows':_0xf375fa}:null;}})[_0x0aa0('0x22')](respondWithResult(_0x2e6365,null))[_0x0aa0('0x40')](handleError(_0x2e6365,null));};exports[_0x0aa0('0x4a')]=function(_0x12a76e,_0x169212,_0x36f2c0){var _0x596e6a={};var _0x598f4e={};var _0x38d387;var _0x2a7055;return db[_0x0aa0('0x2a')][_0x0aa0('0x4b')]({'where':{'id':_0x12a76e[_0x0aa0('0x42')]['id']}})[_0x0aa0('0x22')](handleEntityNotFound(_0x169212,null))['then'](function(_0x3ffc9a){if(_0x3ffc9a){_0x38d387=_0x3ffc9a;_0x598f4e[_0x0aa0('0x2e')]=_[_0x0aa0('0x43')](db[_0x0aa0('0x48')][_0x0aa0('0x49')]);_0x598f4e[_0x0aa0('0x2f')]=_[_0x0aa0('0x43')](_0x12a76e['query']);_0x598f4e[_0x0aa0('0x37')]=_[_0x0aa0('0x30')](_0x598f4e[_0x0aa0('0x2e')],_0x598f4e['query']);_0x596e6a[_0x0aa0('0x32')]=_[_0x0aa0('0x30')](_0x598f4e['model'],qs['fields'](_0x12a76e['query'][_0x0aa0('0x31')]));_0x596e6a['attributes']=_0x596e6a[_0x0aa0('0x32')][_0x0aa0('0x33')]?_0x596e6a[_0x0aa0('0x32')]:_0x598f4e[_0x0aa0('0x2e')];_0x596e6a[_0x0aa0('0x4c')]=qs['sort'](_0x12a76e[_0x0aa0('0x2f')][_0x0aa0('0x36')]);_0x596e6a[_0x0aa0('0x3a')]=qs[_0x0aa0('0x37')](_[_0x0aa0('0x38')](_0x12a76e['query'],_0x598f4e['filters']));if(_0x12a76e[_0x0aa0('0x2f')]['filter']){_0x596e6a['where']=_[_0x0aa0('0x3b')](_0x596e6a['where'],{'$or':_['map'](_0x596e6a[_0x0aa0('0x32')],function(_0x265f5d){var _0xb85579={};_0xb85579[_0x265f5d]={'$like':'%'+_0x12a76e[_0x0aa0('0x2f')]['filter']+'%'};return _0xb85579;})});}_0x596e6a=_[_0x0aa0('0x3b')]({},_0x596e6a,_0x12a76e[_0x0aa0('0x3d')]);return _0x38d387[_0x0aa0('0x4a')](_0x596e6a);}})[_0x0aa0('0x22')](function(_0xb922e8){if(_0xb922e8){_0x2a7055=_0xb922e8['length'];if(!_0x12a76e[_0x0aa0('0x2f')][_0x0aa0('0x34')](_0x0aa0('0x35'))){_0x596e6a[_0x0aa0('0x1b')]=qs[_0x0aa0('0x1b')](_0x12a76e[_0x0aa0('0x2f')][_0x0aa0('0x1b')]);_0x596e6a[_0x0aa0('0x1a')]=qs[_0x0aa0('0x1a')](_0x12a76e[_0x0aa0('0x2f')][_0x0aa0('0x1a')]);}return _0x38d387[_0x0aa0('0x4a')](_0x596e6a);}})[_0x0aa0('0x22')](function(_0x3db644){if(_0x3db644){return _0x3db644?{'count':_0x2a7055,'rows':_0x3db644}:null;}})[_0x0aa0('0x22')](respondWithResult(_0x169212,null))[_0x0aa0('0x40')](handleError(_0x169212,null));};exports['getDescriptions']=function(_0x2dc81a,_0x9ee64,_0x36253f){var _0xdc65eb={};var _0x1db74f={};var _0xaa809e;var _0x2519df;return db[_0x0aa0('0x2a')][_0x0aa0('0x4b')]({'where':{'id':_0x2dc81a[_0x0aa0('0x42')]['id']}})[_0x0aa0('0x22')](handleEntityNotFound(_0x9ee64,null))[_0x0aa0('0x22')](function(_0x187833){if(_0x187833){_0xaa809e=_0x187833;_0x1db74f[_0x0aa0('0x2e')]=_[_0x0aa0('0x43')](db[_0x0aa0('0x48')][_0x0aa0('0x49')]);_0x1db74f[_0x0aa0('0x2f')]=_[_0x0aa0('0x43')](_0x2dc81a[_0x0aa0('0x2f')]);_0x1db74f['filters']=_[_0x0aa0('0x30')](_0x1db74f['model'],_0x1db74f['query']);_0xdc65eb[_0x0aa0('0x32')]=_[_0x0aa0('0x30')](_0x1db74f[_0x0aa0('0x2e')],qs[_0x0aa0('0x31')](_0x2dc81a['query'][_0x0aa0('0x31')]));_0xdc65eb['attributes']=_0xdc65eb[_0x0aa0('0x32')][_0x0aa0('0x33')]?_0xdc65eb[_0x0aa0('0x32')]:_0x1db74f[_0x0aa0('0x2e')];_0xdc65eb[_0x0aa0('0x4c')]=qs[_0x0aa0('0x36')](_0x2dc81a['query'][_0x0aa0('0x36')]);_0xdc65eb[_0x0aa0('0x3a')]=qs[_0x0aa0('0x37')](_[_0x0aa0('0x38')](_0x2dc81a[_0x0aa0('0x2f')],_0x1db74f[_0x0aa0('0x37')]));if(_0x2dc81a[_0x0aa0('0x2f')][_0x0aa0('0x39')]){_0xdc65eb[_0x0aa0('0x3a')]=_[_0x0aa0('0x3b')](_0xdc65eb[_0x0aa0('0x3a')],{'$or':_[_0x0aa0('0x29')](_0xdc65eb[_0x0aa0('0x32')],function(_0x31c888){var _0x9667da={};_0x9667da[_0x31c888]={'$like':'%'+_0x2dc81a[_0x0aa0('0x2f')]['filter']+'%'};return _0x9667da;})});}_0xdc65eb=_['merge']({},_0xdc65eb,_0x2dc81a[_0x0aa0('0x3d')]);return _0xaa809e[_0x0aa0('0x4d')](_0xdc65eb);}})[_0x0aa0('0x22')](function(_0x2a0f73){if(_0x2a0f73){_0x2519df=_0x2a0f73[_0x0aa0('0x33')];if(!_0x2dc81a[_0x0aa0('0x2f')][_0x0aa0('0x34')](_0x0aa0('0x35'))){_0xdc65eb[_0x0aa0('0x1b')]=qs[_0x0aa0('0x1b')](_0x2dc81a[_0x0aa0('0x2f')]['limit']);_0xdc65eb[_0x0aa0('0x1a')]=qs[_0x0aa0('0x1a')](_0x2dc81a['query']['offset']);}return _0xaa809e['getDescriptions'](_0xdc65eb);}})['then'](function(_0x4a0353){if(_0x4a0353){return _0x4a0353?{'count':_0x2519df,'rows':_0x4a0353}:null;}})[_0x0aa0('0x22')](respondWithResult(_0x9ee64,null))[_0x0aa0('0x40')](handleError(_0x9ee64,null));};exports[_0x0aa0('0x4e')]=function(_0x23b13c,_0x51a0ef,_0x38110f){var _0x594418={};var _0x109408={};var _0x38f7a3;var _0x5ec273;return db[_0x0aa0('0x2a')]['findOne']({'where':{'id':_0x23b13c[_0x0aa0('0x42')]['id']}})['then'](handleEntityNotFound(_0x51a0ef,null))[_0x0aa0('0x22')](function(_0x7f351){if(_0x7f351){_0x38f7a3=_0x7f351;_0x109408[_0x0aa0('0x2e')]=_[_0x0aa0('0x43')](db[_0x0aa0('0x4f')][_0x0aa0('0x49')]);_0x109408[_0x0aa0('0x2f')]=_[_0x0aa0('0x43')](_0x23b13c[_0x0aa0('0x2f')]);_0x109408['filters']=_['intersection'](_0x109408['model'],_0x109408['query']);_0x594418[_0x0aa0('0x32')]=_[_0x0aa0('0x30')](_0x109408['model'],qs[_0x0aa0('0x31')](_0x23b13c[_0x0aa0('0x2f')][_0x0aa0('0x31')]));_0x594418['attributes']=_0x594418['attributes']['length']?_0x594418[_0x0aa0('0x32')]:_0x109408[_0x0aa0('0x2e')];_0x594418[_0x0aa0('0x4c')]=qs[_0x0aa0('0x36')](_0x23b13c[_0x0aa0('0x2f')][_0x0aa0('0x36')]);_0x594418['where']=qs[_0x0aa0('0x37')](_[_0x0aa0('0x38')](_0x23b13c[_0x0aa0('0x2f')],_0x109408['filters']));if(_0x23b13c[_0x0aa0('0x2f')][_0x0aa0('0x39')]){_0x594418[_0x0aa0('0x3a')]=_[_0x0aa0('0x3b')](_0x594418['where'],{'$or':_[_0x0aa0('0x29')](_0x594418[_0x0aa0('0x32')],function(_0x4b3417){var _0xd1501c={};_0xd1501c[_0x4b3417]={'$like':'%'+_0x23b13c[_0x0aa0('0x2f')][_0x0aa0('0x39')]+'%'};return _0xd1501c;})});}_0x594418=_[_0x0aa0('0x3b')]({},_0x594418,_0x23b13c[_0x0aa0('0x3d')]);return _0x38f7a3['getTags'](_0x594418);}})[_0x0aa0('0x22')](function(_0x15b633){if(_0x15b633){_0x5ec273=_0x15b633[_0x0aa0('0x33')];if(!_0x23b13c[_0x0aa0('0x2f')]['hasOwnProperty'](_0x0aa0('0x35'))){_0x594418[_0x0aa0('0x1b')]=qs[_0x0aa0('0x1b')](_0x23b13c[_0x0aa0('0x2f')][_0x0aa0('0x1b')]);_0x594418[_0x0aa0('0x1a')]=qs[_0x0aa0('0x1a')](_0x23b13c['query'][_0x0aa0('0x1a')]);}return _0x38f7a3[_0x0aa0('0x4e')](_0x594418);}})[_0x0aa0('0x22')](function(_0x38beed){if(_0x38beed){return _0x38beed?{'count':_0x5ec273,'rows':_0x38beed}:null;}})[_0x0aa0('0x22')](respondWithResult(_0x51a0ef,null))['catch'](handleError(_0x51a0ef,null));};exports[_0x0aa0('0x50')]=function(_0x4dc910,_0x4c8fea,_0x36295d){if(_0x4dc910[_0x0aa0('0x46')]['id']){delete _0x4dc910[_0x0aa0('0x46')]['id'];}return db[_0x0aa0('0x2a')]['findOne']({'where':{'id':_0x4dc910[_0x0aa0('0x42')]['id']}})[_0x0aa0('0x22')](handleEntityNotFound(_0x4c8fea,null))[_0x0aa0('0x22')](function(_0x2883f8){if(_0x2883f8){return _0x2883f8[_0x0aa0('0x50')](_0x4dc910['body'][_0x0aa0('0x51')]||[]);}return null;})[_0x0aa0('0x22')](respondWithResult(_0x4c8fea,null))[_0x0aa0('0x40')](handleError(_0x4c8fea,null));};
\ No newline at end of file
index 6b7d0d5..ac82645 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3bed=['define','FreshdeskConfiguration','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intFreshdeskConfiguration.attributes','exports'];(function(_0x154983,_0xc29edf){var _0x3d1243=function(_0x5cb7a4){while(--_0x5cb7a4){_0x154983['push'](_0x154983['shift']());}};_0x3d1243(++_0xc29edf);}(_0x3bed,0xab));var _0xd3be=function(_0x2609dd,_0x4ff1c4){_0x2609dd=_0x2609dd-0x0;var _0x5e7aa6=_0x3bed[_0x2609dd];return _0x5e7aa6;};'use strict';var _=require(_0xd3be('0x0'));var util=require(_0xd3be('0x1'));var logger=require(_0xd3be('0x2'))(_0xd3be('0x3'));var moment=require(_0xd3be('0x4'));var BPromise=require(_0xd3be('0x5'));var rp=require(_0xd3be('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd3be('0x7'));var config=require(_0xd3be('0x8'));var attributes=require(_0xd3be('0x9'));module[_0xd3be('0xa')]=function(_0x43c4e1,_0x3aaf76){return _0x43c4e1[_0xd3be('0xb')](_0xd3be('0xc'),attributes,{'tableName':'int_freshdesk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x744a=['rimraf','../../config/environment','./intFreshdeskConfiguration.attributes','exports','define','FreshdeskConfiguration','int_freshdesk_configurations','lodash','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x306162,_0xb30d28){var _0x5a94ad=function(_0x1947df){while(--_0x1947df){_0x306162['push'](_0x306162['shift']());}};_0x5a94ad(++_0xb30d28);}(_0x744a,0xf1));var _0xa744=function(_0x171d03,_0x3eebb0){_0x171d03=_0x171d03-0x0;var _0x5f0402=_0x744a[_0x171d03];return _0x5f0402;};'use strict';var _=require(_0xa744('0x0'));var util=require(_0xa744('0x1'));var logger=require(_0xa744('0x2'))('api');var moment=require(_0xa744('0x3'));var BPromise=require(_0xa744('0x4'));var rp=require(_0xa744('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa744('0x6'));var config=require(_0xa744('0x7'));var attributes=require(_0xa744('0x8'));module[_0xa744('0x9')]=function(_0x50a7d4,_0x443a48){return _0x50a7d4[_0xa744('0xa')](_0xa744('0xb'),attributes,{'tableName':_0xa744('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 333cda7..72b811d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a7a=['result','catch','lodash','util','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','FreshdeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','error','code','message'];(function(_0x2fc113,_0x45ec6e){var _0x5144ce=function(_0x47fd29){while(--_0x47fd29){_0x2fc113['push'](_0x2fc113['shift']());}};_0x5144ce(++_0x45ec6e);}(_0x4a7a,0xd1));var _0xa4a7=function(_0x4e7012,_0x5d5f73){_0x4e7012=_0x4e7012-0x0;var _0xcd56d5=_0x4a7a[_0x4e7012];return _0xcd56d5;};'use strict';var _=require(_0xa4a7('0x0'));var util=require(_0xa4a7('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xa4a7('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa4a7('0x3'))['db'];var utils=require(_0xa4a7('0x4'));var logger=require(_0xa4a7('0x5'))(_0xa4a7('0x6'));var config=require(_0xa4a7('0x7'));var jayson=require(_0xa4a7('0x8'));var client=jayson[_0xa4a7('0x9')][_0xa4a7('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x402a26,_0x3b76c7,_0x51be3a){return new BPromise(function(_0x1e03fc,_0x310eeb){return client[_0xa4a7('0xb')](_0x402a26,_0x51be3a)[_0xa4a7('0xc')](function(_0x33b67c){logger[_0xa4a7('0xd')](_0xa4a7('0xe'),_0x3b76c7,_0xa4a7('0xf'));logger[_0xa4a7('0x10')](_0xa4a7('0x11'),_0x3b76c7,_0xa4a7('0xf'),JSON['stringify'](_0x33b67c));if(_0x33b67c[_0xa4a7('0x12')]){if(_0x33b67c[_0xa4a7('0x12')][_0xa4a7('0x13')]===0x1f4){logger[_0xa4a7('0x12')](_0xa4a7('0xe'),_0x3b76c7,_0x33b67c[_0xa4a7('0x12')][_0xa4a7('0x14')]);return _0x310eeb(_0x33b67c['error']['message']);}logger[_0xa4a7('0x12')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x3b76c7,_0x33b67c['error'][_0xa4a7('0x14')]);return _0x1e03fc(_0x33b67c[_0xa4a7('0x12')][_0xa4a7('0x14')]);}else{logger['info']('FreshdeskConfiguration,\x20%s,\x20%s',_0x3b76c7,_0xa4a7('0xf'));_0x1e03fc(_0x33b67c[_0xa4a7('0x15')][_0xa4a7('0x14')]);}})[_0xa4a7('0x16')](function(_0x83c1e5){logger[_0xa4a7('0x12')](_0xa4a7('0xe'),_0x3b76c7,_0x83c1e5);_0x310eeb(_0x83c1e5);});});}
\ No newline at end of file
+var _0x2f19=['bluebird','randomstring','ioredis','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','request\x20sent','debug','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','FreshdeskConfiguration,\x20%s,\x20%s','message','result','lodash','util'];(function(_0x197127,_0x48bbfd){var _0x558ca6=function(_0x580faf){while(--_0x580faf){_0x197127['push'](_0x197127['shift']());}};_0x558ca6(++_0x48bbfd);}(_0x2f19,0x1cc));var _0x92f1=function(_0xf80b3,_0x25d5f3){_0xf80b3=_0xf80b3-0x0;var _0x10c489=_0x2f19[_0xf80b3];return _0x10c489;};'use strict';var _=require(_0x92f1('0x0'));var util=require(_0x92f1('0x1'));var moment=require('moment');var BPromise=require(_0x92f1('0x2'));var rs=require(_0x92f1('0x3'));var fs=require('fs');var Redis=require(_0x92f1('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x92f1('0x5'));var logger=require(_0x92f1('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x92f1('0x7'));var client=jayson[_0x92f1('0x8')][_0x92f1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5f587a,_0x4944b3,_0x10d99a){return new BPromise(function(_0x470579,_0x77b274){return client[_0x92f1('0xa')](_0x5f587a,_0x10d99a)[_0x92f1('0xb')](function(_0x54e229){logger[_0x92f1('0xc')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x4944b3,_0x92f1('0xd'));logger[_0x92f1('0xe')](_0x92f1('0xf'),_0x4944b3,'request\x20sent',JSON[_0x92f1('0x10')](_0x54e229));if(_0x54e229['error']){if(_0x54e229[_0x92f1('0x11')][_0x92f1('0x12')]===0x1f4){logger['error'](_0x92f1('0x13'),_0x4944b3,_0x54e229[_0x92f1('0x11')][_0x92f1('0x14')]);return _0x77b274(_0x54e229['error'][_0x92f1('0x14')]);}logger[_0x92f1('0x11')](_0x92f1('0x13'),_0x4944b3,_0x54e229[_0x92f1('0x11')][_0x92f1('0x14')]);return _0x470579(_0x54e229[_0x92f1('0x11')]['message']);}else{logger[_0x92f1('0xc')](_0x92f1('0x13'),_0x4944b3,_0x92f1('0xd'));_0x470579(_0x54e229[_0x92f1('0x15')]['message']);}})['catch'](function(_0x4fdf09){logger['error']('FreshdeskConfiguration,\x20%s,\x20%s',_0x4944b3,_0x4fdf09);_0x77b274(_0x4fdf09);});});}
\ No newline at end of file
index e767279..29e0d6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x115b=['express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskField.controller','get','index','isAuthenticated','show','post','create','put','/:id','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0x2935df,_0xae132b){var _0x13e54e=function(_0x9ca110){while(--_0x9ca110){_0x2935df['push'](_0x2935df['shift']());}};_0x13e54e(++_0xae132b);}(_0x115b,0x1b5));var _0xb115=function(_0x429be6,_0x199029){_0x429be6=_0x429be6-0x0;var _0x4318c1=_0x115b[_0x429be6];return _0x4318c1;};'use strict';var multer=require(_0xb115('0x0'));var util=require(_0xb115('0x1'));var path=require(_0xb115('0x2'));var timeout=require(_0xb115('0x3'));var express=require(_0xb115('0x4'));var router=express[_0xb115('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xb115('0x6'));var interaction=require(_0xb115('0x7'));var config=require(_0xb115('0x8'));var controller=require(_0xb115('0x9'));router[_0xb115('0xa')]('/',auth['isAuthenticated'](),controller[_0xb115('0xb')]);router['get']('/:id',auth[_0xb115('0xc')](),controller[_0xb115('0xd')]);router[_0xb115('0xe')]('/',auth[_0xb115('0xc')](),controller[_0xb115('0xf')]);router[_0xb115('0x10')](_0xb115('0x11'),auth[_0xb115('0xc')](),controller['update']);router[_0xb115('0x12')]('/:id',auth[_0xb115('0xc')](),controller[_0xb115('0x13')]);module[_0xb115('0x14')]=router;
\ No newline at end of file
+var _0xe593=['create','put','update','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskField.controller','get','index','/:id','isAuthenticated','show','post'];(function(_0x9ff1c0,_0x207afc){var _0x3e6c23=function(_0x11ad15){while(--_0x11ad15){_0x9ff1c0['push'](_0x9ff1c0['shift']());}};_0x3e6c23(++_0x207afc);}(_0xe593,0x10e));var _0x3e59=function(_0x3cafde,_0x1d57c0){_0x3cafde=_0x3cafde-0x0;var _0x4f7496=_0xe593[_0x3cafde];return _0x4f7496;};'use strict';var multer=require(_0x3e59('0x0'));var util=require(_0x3e59('0x1'));var path=require('path');var timeout=require(_0x3e59('0x2'));var express=require('express');var router=express[_0x3e59('0x3')]();var fs_extra=require(_0x3e59('0x4'));var auth=require(_0x3e59('0x5'));var interaction=require(_0x3e59('0x6'));var config=require(_0x3e59('0x7'));var controller=require(_0x3e59('0x8'));router[_0x3e59('0x9')]('/',auth['isAuthenticated'](),controller[_0x3e59('0xa')]);router[_0x3e59('0x9')](_0x3e59('0xb'),auth[_0x3e59('0xc')](),controller[_0x3e59('0xd')]);router[_0x3e59('0xe')]('/',auth[_0x3e59('0xc')](),controller[_0x3e59('0xf')]);router[_0x3e59('0x10')](_0x3e59('0xb'),auth[_0x3e59('0xc')](),controller[_0x3e59('0x11')]);router['delete'](_0x3e59('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0x3e59('0x12')]=router;
\ No newline at end of file
index eec8252..c1011d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd1b=['exports','ENUM','string','variable','customVariable','keyValue','STRING','BOOLEAN'];(function(_0x493370,_0x4c7fac){var _0xac15d=function(_0x415cd6){while(--_0x415cd6){_0x493370['push'](_0x493370['shift']());}};_0xac15d(++_0x4c7fac);}(_0xdd1b,0x98));var _0xbdd1=function(_0x534078,_0x1ec172){_0x534078=_0x534078-0x0;var _0x2e2bb6=_0xdd1b[_0x534078];return _0x2e2bb6;};'use strict';var Sequelize=require('sequelize');module[_0xbdd1('0x0')]={'type':{'type':Sequelize[_0xbdd1('0x1')](_0xbdd1('0x2'),_0xbdd1('0x3'),_0xbdd1('0x4'),_0xbdd1('0x5'),'picklist'),'defaultValue':_0xbdd1('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0xbdd1('0x6')]},'keyType':{'type':Sequelize[_0xbdd1('0x1')](_0xbdd1('0x2'),_0xbdd1('0x3'),_0xbdd1('0x4'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xbdd1('0x6')]},'nameField':{'type':Sequelize[_0xbdd1('0x6')]},'customField':{'type':Sequelize[_0xbdd1('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xbdd1('0x6')]}};
\ No newline at end of file
+var _0x3613=['STRING','ENUM','variable','BOOLEAN','sequelize','string','customVariable','keyValue','picklist'];(function(_0x1f41b6,_0x1363cf){var _0x5ac1bc=function(_0x32dac0){while(--_0x32dac0){_0x1f41b6['push'](_0x1f41b6['shift']());}};_0x5ac1bc(++_0x1363cf);}(_0x3613,0x16c));var _0x3361=function(_0x34ac05,_0x116d66){_0x34ac05=_0x34ac05-0x0;var _0x9e1bd=_0x3613[_0x34ac05];return _0x9e1bd;};'use strict';var Sequelize=require(_0x3361('0x0'));module['exports']={'type':{'type':Sequelize['ENUM'](_0x3361('0x1'),'variable',_0x3361('0x2'),_0x3361('0x3'),_0x3361('0x4')),'defaultValue':'string'},'content':{'type':Sequelize[_0x3361('0x5')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x3361('0x6')]('string',_0x3361('0x7'),_0x3361('0x2'))},'keyContent':{'type':Sequelize[_0x3361('0x5')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x3361('0x5')]},'customField':{'type':Sequelize[_0x3361('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x3361('0x5')]}};
\ No newline at end of file
index e771886..556351c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe130=['includeAll','include','findAll','show','params','keys','length','find','catch','create','body','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','update','destroy','then','error','stack','name','send','map','FreshdeskField','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options'];(function(_0x2c7b86,_0x59ef3c){var _0x256735=function(_0x352e33){while(--_0x352e33){_0x2c7b86['push'](_0x2c7b86['shift']());}};_0x256735(++_0x59ef3c);}(_0xe130,0x127));var _0x0e13=function(_0x1bc1dc,_0x2203a8){_0x1bc1dc=_0x1bc1dc-0x0;var _0x18cfd0=_0xe130[_0x1bc1dc];return _0x18cfd0;};'use strict';var emlformat=require(_0x0e13('0x0'));var rimraf=require(_0x0e13('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0e13('0x2'));var rp=require(_0x0e13('0x3'));var moment=require(_0x0e13('0x4'));var BPromise=require(_0x0e13('0x5'));var Mustache=require(_0x0e13('0x6'));var util=require('util');var path=require(_0x0e13('0x7'));var sox=require(_0x0e13('0x8'));var csv=require(_0x0e13('0x9'));var ejs=require(_0x0e13('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0e13('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x0e13('0xc'));var toCsv=require(_0x0e13('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x0e13('0xd'));var authService=require(_0x0e13('0xe'));var qs=require(_0x0e13('0xf'));var as=require(_0x0e13('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x0e13('0x11'));var utils=require(_0x0e13('0x12'));var config=require(_0x0e13('0x13'));var licenseUtil=require(_0x0e13('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1b4391,_0x4d9ea0){_0x4d9ea0=_0x4d9ea0||0xcc;return function(_0x2ef77e){if(_0x2ef77e){return _0x1b4391[_0x0e13('0x15')](_0x4d9ea0);}return _0x1b4391[_0x0e13('0x16')](_0x4d9ea0)[_0x0e13('0x17')]();};}function respondWithResult(_0x2f0d82,_0x1ec6ad){_0x1ec6ad=_0x1ec6ad||0xc8;return function(_0x27c3cf){if(_0x27c3cf){return _0x2f0d82[_0x0e13('0x16')](_0x1ec6ad)[_0x0e13('0x18')](_0x27c3cf);}};}function respondWithFilteredResult(_0x530f82,_0x302763){return function(_0xbc1617){if(_0xbc1617){var _0x2057fe=typeof _0x302763[_0x0e13('0x19')]===_0x0e13('0x1a')&&typeof _0x302763[_0x0e13('0x1b')]==='undefined';var _0x11ec50=_0xbc1617[_0x0e13('0x1c')];var _0x510a2b=_0x2057fe?0x0:_0x302763['offset'];var _0x3b85fd=_0x2057fe?_0xbc1617['count']:_0x302763[_0x0e13('0x19')]+_0x302763['limit'];var _0x294aea;if(_0x3b85fd>=_0x11ec50){_0x3b85fd=_0x11ec50;_0x294aea=0xc8;}else{_0x294aea=0xce;}_0x530f82[_0x0e13('0x16')](_0x294aea);return _0x530f82[_0x0e13('0x1d')](_0x0e13('0x1e'),_0x510a2b+'-'+_0x3b85fd+'/'+_0x11ec50)[_0x0e13('0x18')](_0xbc1617);}return null;};}function patchUpdates(_0x5ef062){return function(_0x5cfba8){try{jsonpatch['apply'](_0x5cfba8,_0x5ef062,!![]);}catch(_0x2dddef){return BPromise[_0x0e13('0x1f')](_0x2dddef);}return _0x5cfba8['save']();};}function saveUpdates(_0x515222,_0x295eb0){return function(_0x296ed3){if(_0x296ed3){return _0x296ed3[_0x0e13('0x20')](_0x515222)['then'](function(_0x400e87){return _0x400e87;});}return null;};}function removeEntity(_0x70c3db,_0x22cc15){return function(_0x20303b){if(_0x20303b){return _0x20303b[_0x0e13('0x21')]()[_0x0e13('0x22')](function(){_0x70c3db[_0x0e13('0x16')](0xcc)[_0x0e13('0x17')]();});}};}function handleEntityNotFound(_0x3d6abf,_0x260bf7){return function(_0x9621e2){if(!_0x9621e2){_0x3d6abf[_0x0e13('0x15')](0x194);}return _0x9621e2;};}function handleError(_0x230684,_0x45edf7){_0x45edf7=_0x45edf7||0x1f4;return function(_0xfd19ed){logger[_0x0e13('0x23')](_0xfd19ed[_0x0e13('0x24')]);if(_0xfd19ed['name']){delete _0xfd19ed[_0x0e13('0x25')];}_0x230684[_0x0e13('0x16')](_0x45edf7)[_0x0e13('0x26')](_0xfd19ed);};}exports['index']=function(_0x2182ae,_0x1deb3b){var _0xa38940={},_0x4606de={},_0x5d41c3={'count':0x0,'rows':[]};var _0xe9151f=_[_0x0e13('0x27')](db[_0x0e13('0x28')][_0x0e13('0x29')],function(_0x2e65e2){return{'name':_0x2e65e2[_0x0e13('0x2a')],'type':_0x2e65e2[_0x0e13('0x2b')][_0x0e13('0x2c')]};});_0x4606de['model']=_[_0x0e13('0x27')](_0xe9151f,_0x0e13('0x25'));_0x4606de[_0x0e13('0x2d')]=_['keys'](_0x2182ae[_0x0e13('0x2d')]);_0x4606de[_0x0e13('0x2e')]=_[_0x0e13('0x2f')](_0x4606de[_0x0e13('0x30')],_0x4606de[_0x0e13('0x2d')]);_0xa38940[_0x0e13('0x31')]=_[_0x0e13('0x2f')](_0x4606de[_0x0e13('0x30')],qs[_0x0e13('0x32')](_0x2182ae['query'][_0x0e13('0x32')]));_0xa38940[_0x0e13('0x31')]=_0xa38940[_0x0e13('0x31')]['length']?_0xa38940[_0x0e13('0x31')]:_0x4606de['model'];if(!_0x2182ae[_0x0e13('0x2d')][_0x0e13('0x33')](_0x0e13('0x34'))){_0xa38940[_0x0e13('0x1b')]=qs[_0x0e13('0x1b')](_0x2182ae[_0x0e13('0x2d')][_0x0e13('0x1b')]);_0xa38940['offset']=qs['offset'](_0x2182ae[_0x0e13('0x2d')][_0x0e13('0x19')]);}_0xa38940[_0x0e13('0x35')]=qs[_0x0e13('0x36')](_0x2182ae[_0x0e13('0x2d')][_0x0e13('0x36')]);_0xa38940[_0x0e13('0x37')]=qs['filters'](_[_0x0e13('0x38')](_0x2182ae[_0x0e13('0x2d')],_0x4606de[_0x0e13('0x2e')]),_0xe9151f);if(_0x2182ae[_0x0e13('0x2d')][_0x0e13('0x39')]){_0xa38940['where']=_[_0x0e13('0x3a')](_0xa38940[_0x0e13('0x37')],{'$or':_[_0x0e13('0x27')](_0xe9151f,function(_0x4b17f2){if(_0x4b17f2[_0x0e13('0x2b')]!=='VIRTUAL'){var _0x33af9a={};_0x33af9a[_0x4b17f2['name']]={'$like':'%'+_0x2182ae[_0x0e13('0x2d')]['filter']+'%'};return _0x33af9a;}})});}_0xa38940=_[_0x0e13('0x3a')]({},_0xa38940,_0x2182ae[_0x0e13('0x3b')]);var _0x3cdc25={'where':_0xa38940[_0x0e13('0x37')]};return db[_0x0e13('0x28')][_0x0e13('0x1c')](_0x3cdc25)['then'](function(_0x445949){_0x5d41c3[_0x0e13('0x1c')]=_0x445949;if(_0x2182ae[_0x0e13('0x2d')][_0x0e13('0x3c')]){_0xa38940[_0x0e13('0x3d')]=[{'all':!![]}];}return db[_0x0e13('0x28')][_0x0e13('0x3e')](_0xa38940);})['then'](function(_0x164720){_0x5d41c3['rows']=_0x164720;return _0x5d41c3;})['then'](respondWithFilteredResult(_0x1deb3b,_0xa38940))['catch'](handleError(_0x1deb3b,null));};exports[_0x0e13('0x3f')]=function(_0xe6bb04,_0x3060e1){var _0x14ab2a={'raw':!![],'where':{'id':_0xe6bb04[_0x0e13('0x40')]['id']}},_0x3ee751={};_0x3ee751[_0x0e13('0x30')]=_['keys'](db[_0x0e13('0x28')]['rawAttributes']);_0x3ee751['query']=_[_0x0e13('0x41')](_0xe6bb04[_0x0e13('0x2d')]);_0x3ee751[_0x0e13('0x2e')]=_[_0x0e13('0x2f')](_0x3ee751['model'],_0x3ee751[_0x0e13('0x2d')]);_0x14ab2a[_0x0e13('0x31')]=_['intersection'](_0x3ee751[_0x0e13('0x30')],qs[_0x0e13('0x32')](_0xe6bb04[_0x0e13('0x2d')][_0x0e13('0x32')]));_0x14ab2a[_0x0e13('0x31')]=_0x14ab2a[_0x0e13('0x31')][_0x0e13('0x42')]?_0x14ab2a[_0x0e13('0x31')]:_0x3ee751[_0x0e13('0x30')];if(_0xe6bb04[_0x0e13('0x2d')]['includeAll']){_0x14ab2a['include']=[{'all':!![]}];}_0x14ab2a=_[_0x0e13('0x3a')]({},_0x14ab2a,_0xe6bb04[_0x0e13('0x3b')]);return db[_0x0e13('0x28')][_0x0e13('0x43')](_0x14ab2a)[_0x0e13('0x22')](handleEntityNotFound(_0x3060e1,null))['then'](respondWithResult(_0x3060e1,null))[_0x0e13('0x44')](handleError(_0x3060e1,null));};exports[_0x0e13('0x45')]=function(_0x30b637,_0x548259){return db[_0x0e13('0x28')]['create'](_0x30b637[_0x0e13('0x46')],{})[_0x0e13('0x22')](respondWithResult(_0x548259,0xc9))[_0x0e13('0x44')](handleError(_0x548259,null));};exports[_0x0e13('0x20')]=function(_0x35249c,_0x47e5b8){if(_0x35249c[_0x0e13('0x46')]['id']){delete _0x35249c['body']['id'];}return db[_0x0e13('0x28')][_0x0e13('0x43')]({'where':{'id':_0x35249c['params']['id']}})[_0x0e13('0x22')](handleEntityNotFound(_0x47e5b8,null))[_0x0e13('0x22')](saveUpdates(_0x35249c[_0x0e13('0x46')],null))[_0x0e13('0x22')](respondWithResult(_0x47e5b8,null))['catch'](handleError(_0x47e5b8,null));};exports[_0x0e13('0x21')]=function(_0x359de5,_0x4d9afd){return db[_0x0e13('0x28')]['find']({'where':{'id':_0x359de5['params']['id']}})['then'](handleEntityNotFound(_0x4d9afd,null))[_0x0e13('0x22')](removeEntity(_0x4d9afd,null))['catch'](handleError(_0x4d9afd,null));};
\ No newline at end of file
+var _0x6953=['rimraf','moment','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','papaparse','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','error','stack','name','send','map','FreshdeskField','rawAttributes','fieldName','type','key','query','filters','model','intersection','fields','attributes','length','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','keys','include','find','create','body','eml-format'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x6953,0x91));var _0x3695=function(_0x2cdd4d,_0x394c2f){_0x2cdd4d=_0x2cdd4d-0x0;var _0x55cbc8=_0x6953[_0x2cdd4d];return _0x55cbc8;};'use strict';var emlformat=require(_0x3695('0x0'));var rimraf=require(_0x3695('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x3695('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x3695('0x3'));var util=require(_0x3695('0x4'));var path=require(_0x3695('0x5'));var sox=require('sox');var csv=require(_0x3695('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3695('0x7'));var _=require(_0x3695('0x8'));var squel=require(_0x3695('0x9'));var crypto=require(_0x3695('0xa'));var jsforce=require(_0x3695('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x3695('0x6'));var querystring=require('querystring');var Papa=require(_0x3695('0xc'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x3695('0xd'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3695('0xe'));var logger=require(_0x3695('0xf'))(_0x3695('0x10'));var utils=require(_0x3695('0x11'));var config=require(_0x3695('0x12'));var licenseUtil=require(_0x3695('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x19080e,_0x345587){_0x345587=_0x345587||0xcc;return function(_0x212011){if(_0x212011){return _0x19080e[_0x3695('0x14')](_0x345587);}return _0x19080e[_0x3695('0x15')](_0x345587)[_0x3695('0x16')]();};}function respondWithResult(_0x439bd9,_0x4df429){_0x4df429=_0x4df429||0xc8;return function(_0x26dfc9){if(_0x26dfc9){return _0x439bd9[_0x3695('0x15')](_0x4df429)[_0x3695('0x17')](_0x26dfc9);}};}function respondWithFilteredResult(_0x4ca317,_0x3aa59d){return function(_0x231c7d){if(_0x231c7d){var _0x2cdd3=typeof _0x3aa59d[_0x3695('0x18')]===_0x3695('0x19')&&typeof _0x3aa59d[_0x3695('0x1a')]===_0x3695('0x19');var _0x4fa2d9=_0x231c7d[_0x3695('0x1b')];var _0x5edf8d=_0x2cdd3?0x0:_0x3aa59d[_0x3695('0x18')];var _0xcc93bb=_0x2cdd3?_0x231c7d[_0x3695('0x1b')]:_0x3aa59d[_0x3695('0x18')]+_0x3aa59d[_0x3695('0x1a')];var _0x5dec2a;if(_0xcc93bb>=_0x4fa2d9){_0xcc93bb=_0x4fa2d9;_0x5dec2a=0xc8;}else{_0x5dec2a=0xce;}_0x4ca317[_0x3695('0x15')](_0x5dec2a);return _0x4ca317[_0x3695('0x1c')](_0x3695('0x1d'),_0x5edf8d+'-'+_0xcc93bb+'/'+_0x4fa2d9)[_0x3695('0x17')](_0x231c7d);}return null;};}function patchUpdates(_0xc076a9){return function(_0x1ebba8){try{jsonpatch[_0x3695('0x1e')](_0x1ebba8,_0xc076a9,!![]);}catch(_0xb85811){return BPromise[_0x3695('0x1f')](_0xb85811);}return _0x1ebba8[_0x3695('0x20')]();};}function saveUpdates(_0x1b97d2,_0xf2c747){return function(_0x459f33){if(_0x459f33){return _0x459f33[_0x3695('0x21')](_0x1b97d2)['then'](function(_0x42648c){return _0x42648c;});}return null;};}function removeEntity(_0xdb0934,_0x4899c0){return function(_0x4940e9){if(_0x4940e9){return _0x4940e9[_0x3695('0x22')]()[_0x3695('0x23')](function(){_0xdb0934[_0x3695('0x15')](0xcc)[_0x3695('0x16')]();});}};}function handleEntityNotFound(_0x534d38,_0x180f77){return function(_0x48c2fd){if(!_0x48c2fd){_0x534d38[_0x3695('0x14')](0x194);}return _0x48c2fd;};}function handleError(_0x5319f4,_0xe085de){_0xe085de=_0xe085de||0x1f4;return function(_0x5adea3){logger[_0x3695('0x24')](_0x5adea3[_0x3695('0x25')]);if(_0x5adea3[_0x3695('0x26')]){delete _0x5adea3[_0x3695('0x26')];}_0x5319f4[_0x3695('0x15')](_0xe085de)[_0x3695('0x27')](_0x5adea3);};}exports['index']=function(_0x2be6ee,_0x354ae0){var _0x5f193c={},_0x392107={},_0x4d0742={'count':0x0,'rows':[]};var _0x39c39f=_[_0x3695('0x28')](db[_0x3695('0x29')][_0x3695('0x2a')],function(_0x30a5ba){return{'name':_0x30a5ba[_0x3695('0x2b')],'type':_0x30a5ba[_0x3695('0x2c')][_0x3695('0x2d')]};});_0x392107['model']=_[_0x3695('0x28')](_0x39c39f,_0x3695('0x26'));_0x392107[_0x3695('0x2e')]=_['keys'](_0x2be6ee['query']);_0x392107[_0x3695('0x2f')]=_['intersection'](_0x392107[_0x3695('0x30')],_0x392107[_0x3695('0x2e')]);_0x5f193c['attributes']=_[_0x3695('0x31')](_0x392107['model'],qs[_0x3695('0x32')](_0x2be6ee[_0x3695('0x2e')][_0x3695('0x32')]));_0x5f193c[_0x3695('0x33')]=_0x5f193c[_0x3695('0x33')][_0x3695('0x34')]?_0x5f193c['attributes']:_0x392107[_0x3695('0x30')];if(!_0x2be6ee[_0x3695('0x2e')]['hasOwnProperty'](_0x3695('0x35'))){_0x5f193c[_0x3695('0x1a')]=qs['limit'](_0x2be6ee['query']['limit']);_0x5f193c['offset']=qs[_0x3695('0x18')](_0x2be6ee[_0x3695('0x2e')]['offset']);}_0x5f193c[_0x3695('0x36')]=qs[_0x3695('0x37')](_0x2be6ee[_0x3695('0x2e')][_0x3695('0x37')]);_0x5f193c['where']=qs['filters'](_[_0x3695('0x38')](_0x2be6ee[_0x3695('0x2e')],_0x392107['filters']),_0x39c39f);if(_0x2be6ee[_0x3695('0x2e')][_0x3695('0x39')]){_0x5f193c[_0x3695('0x3a')]=_[_0x3695('0x3b')](_0x5f193c[_0x3695('0x3a')],{'$or':_[_0x3695('0x28')](_0x39c39f,function(_0x36cfd5){if(_0x36cfd5[_0x3695('0x2c')]!==_0x3695('0x3c')){var _0x927c71={};_0x927c71[_0x36cfd5[_0x3695('0x26')]]={'$like':'%'+_0x2be6ee[_0x3695('0x2e')][_0x3695('0x39')]+'%'};return _0x927c71;}})});}_0x5f193c=_[_0x3695('0x3b')]({},_0x5f193c,_0x2be6ee[_0x3695('0x3d')]);var _0x318551={'where':_0x5f193c['where']};return db[_0x3695('0x29')][_0x3695('0x1b')](_0x318551)[_0x3695('0x23')](function(_0xb0931){_0x4d0742[_0x3695('0x1b')]=_0xb0931;if(_0x2be6ee[_0x3695('0x2e')][_0x3695('0x3e')]){_0x5f193c['include']=[{'all':!![]}];}return db[_0x3695('0x29')][_0x3695('0x3f')](_0x5f193c);})[_0x3695('0x23')](function(_0x547af9){_0x4d0742[_0x3695('0x40')]=_0x547af9;return _0x4d0742;})[_0x3695('0x23')](respondWithFilteredResult(_0x354ae0,_0x5f193c))[_0x3695('0x41')](handleError(_0x354ae0,null));};exports[_0x3695('0x42')]=function(_0x22d1e1,_0x322923){var _0x4261d1={'raw':!![],'where':{'id':_0x22d1e1[_0x3695('0x43')]['id']}},_0x5b825a={};_0x5b825a['model']=_['keys'](db[_0x3695('0x29')]['rawAttributes']);_0x5b825a[_0x3695('0x2e')]=_[_0x3695('0x44')](_0x22d1e1[_0x3695('0x2e')]);_0x5b825a[_0x3695('0x2f')]=_['intersection'](_0x5b825a[_0x3695('0x30')],_0x5b825a[_0x3695('0x2e')]);_0x4261d1[_0x3695('0x33')]=_['intersection'](_0x5b825a[_0x3695('0x30')],qs[_0x3695('0x32')](_0x22d1e1[_0x3695('0x2e')][_0x3695('0x32')]));_0x4261d1[_0x3695('0x33')]=_0x4261d1[_0x3695('0x33')][_0x3695('0x34')]?_0x4261d1[_0x3695('0x33')]:_0x5b825a[_0x3695('0x30')];if(_0x22d1e1['query']['includeAll']){_0x4261d1[_0x3695('0x45')]=[{'all':!![]}];}_0x4261d1=_[_0x3695('0x3b')]({},_0x4261d1,_0x22d1e1[_0x3695('0x3d')]);return db['FreshdeskField'][_0x3695('0x46')](_0x4261d1)[_0x3695('0x23')](handleEntityNotFound(_0x322923,null))[_0x3695('0x23')](respondWithResult(_0x322923,null))['catch'](handleError(_0x322923,null));};exports[_0x3695('0x47')]=function(_0x161752,_0x3d6a61){return db[_0x3695('0x29')][_0x3695('0x47')](_0x161752['body'],{})[_0x3695('0x23')](respondWithResult(_0x3d6a61,0xc9))[_0x3695('0x41')](handleError(_0x3d6a61,null));};exports[_0x3695('0x21')]=function(_0x361a9f,_0x557619){if(_0x361a9f[_0x3695('0x48')]['id']){delete _0x361a9f['body']['id'];}return db['FreshdeskField'][_0x3695('0x46')]({'where':{'id':_0x361a9f[_0x3695('0x43')]['id']}})[_0x3695('0x23')](handleEntityNotFound(_0x557619,null))[_0x3695('0x23')](saveUpdates(_0x361a9f[_0x3695('0x48')],null))['then'](respondWithResult(_0x557619,null))['catch'](handleError(_0x557619,null));};exports['destroy']=function(_0x5173b8,_0x5eeaca){return db['FreshdeskField']['find']({'where':{'id':_0x5173b8['params']['id']}})[_0x3695('0x23')](handleEntityNotFound(_0x5eeaca,null))[_0x3695('0x23')](removeEntity(_0x5eeaca,null))['catch'](handleError(_0x5eeaca,null));};
\ No newline at end of file
index be7e34e..71e023d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8eeb=['path','rimraf','../../config/environment','exports','define','FreshdeskField','int_freshdesk_fields','idField','FieldId','lodash','../../config/logger','api','bluebird','request-promise'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x8eeb,0x183));var _0xb8ee=function(_0x3cd351,_0x11c2b9){_0x3cd351=_0x3cd351-0x0;var _0x5426e8=_0x8eeb[_0x3cd351];return _0x5426e8;};'use strict';var _=require(_0xb8ee('0x0'));var util=require('util');var logger=require(_0xb8ee('0x1'))(_0xb8ee('0x2'));var moment=require('moment');var BPromise=require(_0xb8ee('0x3'));var rp=require(_0xb8ee('0x4'));var fs=require('fs');var path=require(_0xb8ee('0x5'));var rimraf=require(_0xb8ee('0x6'));var config=require(_0xb8ee('0x7'));var attributes=require('./intFreshdeskField.attributes');module[_0xb8ee('0x8')]=function(_0x547a0f,_0x241d62){return _0x547a0f[_0xb8ee('0x9')](_0xb8ee('0xa'),attributes,{'tableName':_0xb8ee('0xb'),'paranoid':![],'indexes':[{'name':'freshdesk_unique_index','fields':[_0xb8ee('0xc'),_0xb8ee('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd2e2=['api','moment','bluebird','path','rimraf','../../config/environment','./intFreshdeskField.attributes','exports','define','FreshdeskField','int_freshdesk_fields','freshdesk_unique_index','lodash','util','../../config/logger'];(function(_0x4c87c6,_0x249281){var _0x5b01b1=function(_0x4a753f){while(--_0x4a753f){_0x4c87c6['push'](_0x4c87c6['shift']());}};_0x5b01b1(++_0x249281);}(_0xd2e2,0xa2));var _0x2d2e=function(_0x112f57,_0x2434cc){_0x112f57=_0x112f57-0x0;var _0x11217b=_0xd2e2[_0x112f57];return _0x11217b;};'use strict';var _=require(_0x2d2e('0x0'));var util=require(_0x2d2e('0x1'));var logger=require(_0x2d2e('0x2'))(_0x2d2e('0x3'));var moment=require(_0x2d2e('0x4'));var BPromise=require(_0x2d2e('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2d2e('0x6'));var rimraf=require(_0x2d2e('0x7'));var config=require(_0x2d2e('0x8'));var attributes=require(_0x2d2e('0x9'));module[_0x2d2e('0xa')]=function(_0x55cc13,_0x2adde5){return _0x55cc13[_0x2d2e('0xb')](_0x2d2e('0xc'),attributes,{'tableName':_0x2d2e('0xd'),'paranoid':![],'indexes':[{'name':_0x2d2e('0xe'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 77c9916..44003e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd011=['../../config/logger','rpc','jayson/promise','client','http','request','then','info','FreshdeskField,\x20%s,\x20%s','request\x20sent','debug','FreshdeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils'];(function(_0x54d66f,_0xc8c232){var _0x53d5e4=function(_0x5c99a4){while(--_0x5c99a4){_0x54d66f['push'](_0x54d66f['shift']());}};_0x53d5e4(++_0xc8c232);}(_0xd011,0xf3));var _0x1d01=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd011[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x1d01('0x0'));var util=require(_0x1d01('0x1'));var moment=require(_0x1d01('0x2'));var BPromise=require(_0x1d01('0x3'));var rs=require(_0x1d01('0x4'));var fs=require('fs');var Redis=require(_0x1d01('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x1d01('0x6'));var logger=require(_0x1d01('0x7'))(_0x1d01('0x8'));var config=require('../../config/environment');var jayson=require(_0x1d01('0x9'));var client=jayson[_0x1d01('0xa')][_0x1d01('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x6a1e65,_0x1de67d,_0x4c3ab9){return new BPromise(function(_0x15eaae,_0xe3f5a7){return client[_0x1d01('0xc')](_0x6a1e65,_0x4c3ab9)[_0x1d01('0xd')](function(_0x1622d3){logger[_0x1d01('0xe')](_0x1d01('0xf'),_0x1de67d,_0x1d01('0x10'));logger[_0x1d01('0x11')](_0x1d01('0x12'),_0x1de67d,_0x1d01('0x10'),JSON[_0x1d01('0x13')](_0x1622d3));if(_0x1622d3['error']){if(_0x1622d3[_0x1d01('0x14')][_0x1d01('0x15')]===0x1f4){logger[_0x1d01('0x14')](_0x1d01('0xf'),_0x1de67d,_0x1622d3[_0x1d01('0x14')][_0x1d01('0x16')]);return _0xe3f5a7(_0x1622d3['error'][_0x1d01('0x16')]);}logger[_0x1d01('0x14')](_0x1d01('0xf'),_0x1de67d,_0x1622d3['error'][_0x1d01('0x16')]);return _0x15eaae(_0x1622d3[_0x1d01('0x14')][_0x1d01('0x16')]);}else{logger[_0x1d01('0xe')](_0x1d01('0xf'),_0x1de67d,_0x1d01('0x10'));_0x15eaae(_0x1622d3[_0x1d01('0x17')][_0x1d01('0x16')]);}})[_0x1d01('0x18')](function(_0x31e9b6){logger[_0x1d01('0x14')](_0x1d01('0xf'),_0x1de67d,_0x31e9b6);_0xe3f5a7(_0x31e9b6);});});}
\ No newline at end of file
+var _0x2da3=['info','catch','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','FreshdeskField,\x20%s,\x20%s','request\x20sent','debug','FreshdeskField,\x20%s,\x20%s,\x20%s','stringify','error','message'];(function(_0x57979a,_0x41a396){var _0x2e3aec=function(_0x15d3e1){while(--_0x15d3e1){_0x57979a['push'](_0x57979a['shift']());}};_0x2e3aec(++_0x41a396);}(_0x2da3,0x18e));var _0x32da=function(_0x1199b8,_0x147130){_0x1199b8=_0x1199b8-0x0;var _0x20ca30=_0x2da3[_0x1199b8];return _0x20ca30;};'use strict';var _=require(_0x32da('0x0'));var util=require(_0x32da('0x1'));var moment=require(_0x32da('0x2'));var BPromise=require(_0x32da('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x32da('0x4'))['db'];var utils=require(_0x32da('0x5'));var logger=require(_0x32da('0x6'))(_0x32da('0x7'));var config=require(_0x32da('0x8'));var jayson=require(_0x32da('0x9'));var client=jayson['client'][_0x32da('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1d8cc2,_0x1506f4,_0x28d063){return new BPromise(function(_0x3b4259,_0x54e4cc){return client[_0x32da('0xb')](_0x1d8cc2,_0x28d063)[_0x32da('0xc')](function(_0x40f701){logger['info'](_0x32da('0xd'),_0x1506f4,_0x32da('0xe'));logger[_0x32da('0xf')](_0x32da('0x10'),_0x1506f4,_0x32da('0xe'),JSON[_0x32da('0x11')](_0x40f701));if(_0x40f701[_0x32da('0x12')]){if(_0x40f701[_0x32da('0x12')]['code']===0x1f4){logger[_0x32da('0x12')](_0x32da('0xd'),_0x1506f4,_0x40f701[_0x32da('0x12')]['message']);return _0x54e4cc(_0x40f701[_0x32da('0x12')][_0x32da('0x13')]);}logger[_0x32da('0x12')]('FreshdeskField,\x20%s,\x20%s',_0x1506f4,_0x40f701[_0x32da('0x12')][_0x32da('0x13')]);return _0x3b4259(_0x40f701[_0x32da('0x12')][_0x32da('0x13')]);}else{logger[_0x32da('0x14')](_0x32da('0xd'),_0x1506f4,'request\x20sent');_0x3b4259(_0x40f701['result'][_0x32da('0x13')]);}})[_0x32da('0x15')](function(_0x68e272){logger['error'](_0x32da('0xd'),_0x1506f4,_0x68e272);_0x54e4cc(_0x68e272);});});}
\ No newline at end of file
index 299f6ba..7071241 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf45e=['exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','getFields','post','create','addConfiguration','put','destroy'];(function(_0x57fdd1,_0x20d272){var _0x301331=function(_0x43e348){while(--_0x43e348){_0x57fdd1['push'](_0x57fdd1['shift']());}};_0x301331(++_0x20d272);}(_0xf45e,0x115));var _0xef45=function(_0xff0b0b,_0x5ea0a5){_0xff0b0b=_0xff0b0b-0x0;var _0x4b58bc=_0xf45e[_0xff0b0b];return _0x4b58bc;};'use strict';var multer=require(_0xef45('0x0'));var util=require('util');var path=require(_0xef45('0x1'));var timeout=require('connect-timeout');var express=require(_0xef45('0x2'));var router=express[_0xef45('0x3')]();var fs_extra=require(_0xef45('0x4'));var auth=require(_0xef45('0x5'));var interaction=require(_0xef45('0x6'));var config=require(_0xef45('0x7'));var controller=require(_0xef45('0x8'));router[_0xef45('0x9')]('/',auth[_0xef45('0xa')](),controller[_0xef45('0xb')]);router[_0xef45('0x9')](_0xef45('0xc'),auth[_0xef45('0xa')](),controller[_0xef45('0xd')]);router[_0xef45('0x9')](_0xef45('0xe'),auth[_0xef45('0xa')](),controller[_0xef45('0xf')]);router[_0xef45('0x9')]('/:id/fields',auth[_0xef45('0xa')](),controller[_0xef45('0x10')]);router[_0xef45('0x11')]('/',auth[_0xef45('0xa')](),controller[_0xef45('0x12')]);router[_0xef45('0x11')]('/:id/configurations',auth[_0xef45('0xa')](),controller[_0xef45('0x13')]);router[_0xef45('0x14')](_0xef45('0xc'),auth[_0xef45('0xa')](),controller['update']);router['delete'](_0xef45('0xc'),auth['isAuthenticated'](),controller[_0xef45('0x15')]);module[_0xef45('0x16')]=router;
\ No newline at end of file
+var _0xea28=['index','/:id','isAuthenticated','show','/:id/configurations','getConfigurations','/:id/fields','create','post','addConfiguration','put','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./intFreshsalesAccount.controller','get'];(function(_0x25e410,_0x1622b8){var _0x462966=function(_0x3214a6){while(--_0x3214a6){_0x25e410['push'](_0x25e410['shift']());}};_0x462966(++_0x1622b8);}(_0xea28,0x13a));var _0x8ea2=function(_0x2990ab,_0x47458f){_0x2990ab=_0x2990ab-0x0;var _0x248d70=_0xea28[_0x2990ab];return _0x248d70;};'use strict';var multer=require(_0x8ea2('0x0'));var util=require(_0x8ea2('0x1'));var path=require(_0x8ea2('0x2'));var timeout=require(_0x8ea2('0x3'));var express=require(_0x8ea2('0x4'));var router=express[_0x8ea2('0x5')]();var fs_extra=require(_0x8ea2('0x6'));var auth=require(_0x8ea2('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x8ea2('0x8'));var controller=require(_0x8ea2('0x9'));router[_0x8ea2('0xa')]('/',auth['isAuthenticated'](),controller[_0x8ea2('0xb')]);router[_0x8ea2('0xa')](_0x8ea2('0xc'),auth[_0x8ea2('0xd')](),controller[_0x8ea2('0xe')]);router[_0x8ea2('0xa')](_0x8ea2('0xf'),auth[_0x8ea2('0xd')](),controller[_0x8ea2('0x10')]);router[_0x8ea2('0xa')](_0x8ea2('0x11'),auth[_0x8ea2('0xd')](),controller['getFields']);router['post']('/',auth[_0x8ea2('0xd')](),controller[_0x8ea2('0x12')]);router[_0x8ea2('0x13')]('/:id/configurations',auth[_0x8ea2('0xd')](),controller[_0x8ea2('0x14')]);router[_0x8ea2('0x15')](_0x8ea2('0xc'),auth[_0x8ea2('0xd')](),controller['update']);router[_0x8ea2('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x8ea2('0x17')]);module[_0x8ea2('0x18')]=router;
\ No newline at end of file
index 1aeb613..84ea53e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x627e=['STRING','remoteUri','sequelize','exports'];(function(_0x3fe36d,_0x52cdea){var _0xbf58c9=function(_0x500de9){while(--_0x500de9){_0x3fe36d['push'](_0x3fe36d['shift']());}};_0xbf58c9(++_0x52cdea);}(_0x627e,0x14a));var _0xe627=function(_0x430d58,_0x53be96){_0x430d58=_0x430d58-0x0;var _0x5a1516=_0x627e[_0x430d58];return _0x5a1516;};'use strict';var Sequelize=require(_0xe627('0x0'));module[_0xe627('0x1')]={'name':{'type':Sequelize[_0xe627('0x2')]},'description':{'type':Sequelize[_0xe627('0x2')]},'username':{'type':Sequelize[_0xe627('0x2')],'unique':'username'},'apiKey':{'type':Sequelize[_0xe627('0x2')]},'remoteUri':{'type':Sequelize[_0xe627('0x2')],'unique':_0xe627('0x3')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0xbbbc=['remoteUri','sequelize','exports','STRING','username'];(function(_0x335da3,_0x8bac2a){var _0x359a6d=function(_0x15bf93){while(--_0x15bf93){_0x335da3['push'](_0x335da3['shift']());}};_0x359a6d(++_0x8bac2a);}(_0xbbbc,0xf6));var _0xcbbb=function(_0x2cc973,_0x554a8c){_0x2cc973=_0x2cc973-0x0;var _0x3adfe1=_0xbbbc[_0x2cc973];return _0x3adfe1;};'use strict';var Sequelize=require(_0xcbbb('0x0'));module[_0xcbbb('0x1')]={'name':{'type':Sequelize[_0xcbbb('0x2')]},'description':{'type':Sequelize[_0xcbbb('0x2')]},'username':{'type':Sequelize[_0xcbbb('0x2')],'unique':_0xcbbb('0x3')},'apiKey':{'type':Sequelize[_0xcbbb('0x2')]},'remoteUri':{'type':Sequelize['STRING'],'unique':_0xcbbb('0x4')},'serverUrl':{'type':Sequelize[_0xcbbb('0x2')],'allowNull':![]}};
\ No newline at end of file
index 2ce68d4..5e49761 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b42=['FreshsalesAccount','rawAttributes','fieldName','type','key','model','keys','filters','intersection','query','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','options','includeAll','rows','catch','params','merge','find','create','body','getConfigurations','pick','addConfiguration','Subjects','getSubjects','channel','FreshsalesConfiguration','FreshsalesField','Descriptions','getFields','username','remoteUri','apiKey','slice','substring','lastIndexOf','GET','%s%s','/api/selector/owners','Token\x20token=','email','Requested\x20Resource\x20not\x20Found','statusCode','getFields,\x20%s,\x20%s,\x20%s','send','test','Wrong\x20credentials','eml-format','rimraf','request-promise','moment','bluebird','mustache','path','sox','ejs','lodash','squel','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','json','undefined','limit','offset','count','set','Content-Range','save','then','destroy','end','error','name','index','map'];(function(_0x316180,_0x597111){var _0x52698a=function(_0x79d79e){while(--_0x79d79e){_0x316180['push'](_0x316180['shift']());}};_0x52698a(++_0x597111);}(_0x0b42,0x1b8));var _0x20b4=function(_0xd91266,_0x5f4992){_0xd91266=_0xd91266-0x0;var _0x3fb5e8=_0x0b42[_0xd91266];return _0x3fb5e8;};'use strict';var emlformat=require(_0x20b4('0x0'));var rimraf=require(_0x20b4('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x20b4('0x2'));var moment=require(_0x20b4('0x3'));var BPromise=require(_0x20b4('0x4'));var Mustache=require(_0x20b4('0x5'));var util=require('util');var path=require(_0x20b4('0x6'));var sox=require(_0x20b4('0x7'));var csv=require('to-csv');var ejs=require(_0x20b4('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x20b4('0x9'));var squel=require(_0x20b4('0xa'));var crypto=require('crypto');var jsforce=require(_0x20b4('0xb'));var deskjs=require(_0x20b4('0xc'));var toCsv=require(_0x20b4('0xd'));var querystring=require(_0x20b4('0xe'));var Papa=require('papaparse');var Redis=require(_0x20b4('0xf'));var authService=require(_0x20b4('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x20b4('0x11'));var hardwareService=require(_0x20b4('0x12'));var logger=require('../../config/logger')(_0x20b4('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x20b4('0x14'));var db=require(_0x20b4('0x15'))['db'];var integrations=require(_0x20b4('0x16'));function respondWithStatusCode(_0x47c1f9,_0x59edaf){_0x59edaf=_0x59edaf||0xcc;return function(_0x15fd69){if(_0x15fd69){return _0x47c1f9[_0x20b4('0x17')](_0x59edaf);}return _0x47c1f9['status'](_0x59edaf)['end']();};}function respondWithResult(_0x4a09cb,_0x4565d1){_0x4565d1=_0x4565d1||0xc8;return function(_0x171fc2){if(_0x171fc2){return _0x4a09cb[_0x20b4('0x18')](_0x4565d1)[_0x20b4('0x19')](_0x171fc2);}};}function respondWithFilteredResult(_0x94fcb3,_0x52c203){return function(_0x6844ea){if(_0x6844ea){var _0x4c9630=typeof _0x52c203['offset']===_0x20b4('0x1a')&&typeof _0x52c203[_0x20b4('0x1b')]==='undefined';var _0x2d9425=_0x6844ea['count'];var _0x5e6d12=_0x4c9630?0x0:_0x52c203[_0x20b4('0x1c')];var _0x28173b=_0x4c9630?_0x6844ea[_0x20b4('0x1d')]:_0x52c203[_0x20b4('0x1c')]+_0x52c203[_0x20b4('0x1b')];var _0xc576ca;if(_0x28173b>=_0x2d9425){_0x28173b=_0x2d9425;_0xc576ca=0xc8;}else{_0xc576ca=0xce;}_0x94fcb3[_0x20b4('0x18')](_0xc576ca);return _0x94fcb3[_0x20b4('0x1e')](_0x20b4('0x1f'),_0x5e6d12+'-'+_0x28173b+'/'+_0x2d9425)[_0x20b4('0x19')](_0x6844ea);}return null;};}function patchUpdates(_0x2945ee){return function(_0x115d35){try{jsonpatch['apply'](_0x115d35,_0x2945ee,!![]);}catch(_0xc95571){return BPromise['reject'](_0xc95571);}return _0x115d35[_0x20b4('0x20')]();};}function saveUpdates(_0x13573d,_0x4c4959){return function(_0x3249a0){if(_0x3249a0){return _0x3249a0['update'](_0x13573d)[_0x20b4('0x21')](function(_0x59673b){return _0x59673b;});}return null;};}function removeEntity(_0x564efe,_0xa30a26){return function(_0x765489){if(_0x765489){return _0x765489[_0x20b4('0x22')]()[_0x20b4('0x21')](function(){_0x564efe[_0x20b4('0x18')](0xcc)[_0x20b4('0x23')]();});}};}function handleEntityNotFound(_0x4ce05b,_0x5e8e33){return function(_0x2bb614){if(!_0x2bb614){_0x4ce05b[_0x20b4('0x17')](0x194);}return _0x2bb614;};}function handleError(_0x1993c6,_0x52e2ef){_0x52e2ef=_0x52e2ef||0x1f4;return function(_0xe46a58){logger[_0x20b4('0x24')](_0xe46a58['stack']);if(_0xe46a58[_0x20b4('0x25')]){delete _0xe46a58[_0x20b4('0x25')];}_0x1993c6[_0x20b4('0x18')](_0x52e2ef)['send'](_0xe46a58);};}exports[_0x20b4('0x26')]=function(_0x59f10c,_0x1fc494){var _0x11f0d8={},_0x5a851a={},_0x29b1fb={'count':0x0,'rows':[]};var _0x3c1829=_[_0x20b4('0x27')](db[_0x20b4('0x28')][_0x20b4('0x29')],function(_0x1d6e62){return{'name':_0x1d6e62[_0x20b4('0x2a')],'type':_0x1d6e62[_0x20b4('0x2b')][_0x20b4('0x2c')]};});_0x5a851a[_0x20b4('0x2d')]=_[_0x20b4('0x27')](_0x3c1829,_0x20b4('0x25'));_0x5a851a['query']=_[_0x20b4('0x2e')](_0x59f10c['query']);_0x5a851a[_0x20b4('0x2f')]=_[_0x20b4('0x30')](_0x5a851a[_0x20b4('0x2d')],_0x5a851a[_0x20b4('0x31')]);_0x11f0d8['attributes']=_[_0x20b4('0x30')](_0x5a851a[_0x20b4('0x2d')],qs[_0x20b4('0x32')](_0x59f10c[_0x20b4('0x31')][_0x20b4('0x32')]));_0x11f0d8['attributes']=_0x11f0d8[_0x20b4('0x33')][_0x20b4('0x34')]?_0x11f0d8[_0x20b4('0x33')]:_0x5a851a['model'];if(!_0x59f10c[_0x20b4('0x31')][_0x20b4('0x35')](_0x20b4('0x36'))){_0x11f0d8['limit']=qs['limit'](_0x59f10c[_0x20b4('0x31')][_0x20b4('0x1b')]);_0x11f0d8[_0x20b4('0x1c')]=qs['offset'](_0x59f10c[_0x20b4('0x31')][_0x20b4('0x1c')]);}_0x11f0d8[_0x20b4('0x37')]=qs['sort'](_0x59f10c['query'][_0x20b4('0x38')]);_0x11f0d8[_0x20b4('0x39')]=qs['filters'](_['pick'](_0x59f10c['query'],_0x5a851a[_0x20b4('0x2f')]),_0x3c1829);if(_0x59f10c[_0x20b4('0x31')][_0x20b4('0x3a')]){_0x11f0d8[_0x20b4('0x39')]=_['merge'](_0x11f0d8[_0x20b4('0x39')],{'$or':_['map'](_0x3c1829,function(_0x53d9fe){if(_0x53d9fe[_0x20b4('0x2b')]!==_0x20b4('0x3b')){var _0x4141b1={};_0x4141b1[_0x53d9fe[_0x20b4('0x25')]]={'$like':'%'+_0x59f10c[_0x20b4('0x31')][_0x20b4('0x3a')]+'%'};return _0x4141b1;}})});}_0x11f0d8=_['merge']({},_0x11f0d8,_0x59f10c[_0x20b4('0x3c')]);var _0x53a857={'where':_0x11f0d8['where']};return db[_0x20b4('0x28')][_0x20b4('0x1d')](_0x53a857)[_0x20b4('0x21')](function(_0x212cab){_0x29b1fb[_0x20b4('0x1d')]=_0x212cab;if(_0x59f10c['query'][_0x20b4('0x3d')]){_0x11f0d8['include']=[{'all':!![]}];}return db['FreshsalesAccount']['findAll'](_0x11f0d8);})[_0x20b4('0x21')](function(_0x149302){_0x29b1fb[_0x20b4('0x3e')]=_0x149302;return _0x29b1fb;})[_0x20b4('0x21')](respondWithFilteredResult(_0x1fc494,_0x11f0d8))[_0x20b4('0x3f')](handleError(_0x1fc494,null));};exports['show']=function(_0x4d42ea,_0x56c8da){var _0x28eff3={'raw':![],'where':{'id':_0x4d42ea[_0x20b4('0x40')]['id']}},_0x5589e9={};_0x5589e9[_0x20b4('0x2d')]=_['keys'](db['FreshsalesAccount']['rawAttributes']);_0x5589e9['query']=_[_0x20b4('0x2e')](_0x4d42ea['query']);_0x5589e9['filters']=_[_0x20b4('0x30')](_0x5589e9[_0x20b4('0x2d')],_0x5589e9[_0x20b4('0x31')]);_0x28eff3[_0x20b4('0x33')]=_[_0x20b4('0x30')](_0x5589e9[_0x20b4('0x2d')],qs[_0x20b4('0x32')](_0x4d42ea[_0x20b4('0x31')][_0x20b4('0x32')]));_0x28eff3[_0x20b4('0x33')]=_0x28eff3[_0x20b4('0x33')][_0x20b4('0x34')]?_0x28eff3[_0x20b4('0x33')]:_0x5589e9[_0x20b4('0x2d')];if(_0x4d42ea[_0x20b4('0x31')][_0x20b4('0x3d')]){_0x28eff3['include']=[{'all':!![]}];}_0x28eff3=_[_0x20b4('0x41')]({},_0x28eff3,_0x4d42ea[_0x20b4('0x3c')]);return db[_0x20b4('0x28')][_0x20b4('0x42')](_0x28eff3)['then'](handleEntityNotFound(_0x56c8da,null))['then'](respondWithResult(_0x56c8da,null))[_0x20b4('0x3f')](handleError(_0x56c8da,null));};exports[_0x20b4('0x43')]=function(_0x55d1f4,_0x1fc986){return db[_0x20b4('0x28')]['create'](_0x55d1f4[_0x20b4('0x44')],{})['then'](respondWithResult(_0x1fc986,0xc9))[_0x20b4('0x3f')](handleError(_0x1fc986,null));};exports['update']=function(_0x1e0e0e,_0x8ad507){if(_0x1e0e0e[_0x20b4('0x44')]['id']){delete _0x1e0e0e['body']['id'];}return db[_0x20b4('0x28')][_0x20b4('0x42')]({'where':{'id':_0x1e0e0e[_0x20b4('0x40')]['id']}})[_0x20b4('0x21')](handleEntityNotFound(_0x8ad507,null))[_0x20b4('0x21')](saveUpdates(_0x1e0e0e[_0x20b4('0x44')],null))[_0x20b4('0x21')](respondWithResult(_0x8ad507,null))['catch'](handleError(_0x8ad507,null));};exports[_0x20b4('0x22')]=function(_0x2ca6be,_0x312eaf){return db['FreshsalesAccount'][_0x20b4('0x42')]({'where':{'id':_0x2ca6be[_0x20b4('0x40')]['id']}})[_0x20b4('0x21')](handleEntityNotFound(_0x312eaf,null))[_0x20b4('0x21')](removeEntity(_0x312eaf,null))['catch'](handleError(_0x312eaf,null));};exports[_0x20b4('0x45')]=function(_0x40ba85,_0x2b02ac,_0x4ca725){var _0x40cafe={};var _0x192218={};var _0x5eebd5;var _0x46f0cf;return db[_0x20b4('0x28')]['findOne']({'where':{'id':_0x40ba85[_0x20b4('0x40')]['id']}})[_0x20b4('0x21')](handleEntityNotFound(_0x2b02ac,null))[_0x20b4('0x21')](function(_0x1303a3){if(_0x1303a3){_0x5eebd5=_0x1303a3;_0x192218[_0x20b4('0x2d')]=_[_0x20b4('0x2e')](db['FreshsalesConfiguration'][_0x20b4('0x29')]);_0x192218[_0x20b4('0x31')]=_[_0x20b4('0x2e')](_0x40ba85['query']);_0x192218[_0x20b4('0x2f')]=_[_0x20b4('0x30')](_0x192218['model'],_0x192218[_0x20b4('0x31')]);_0x40cafe[_0x20b4('0x33')]=_['intersection'](_0x192218[_0x20b4('0x2d')],qs['fields'](_0x40ba85['query'][_0x20b4('0x32')]));_0x40cafe[_0x20b4('0x33')]=_0x40cafe['attributes'][_0x20b4('0x34')]?_0x40cafe[_0x20b4('0x33')]:_0x192218[_0x20b4('0x2d')];_0x40cafe[_0x20b4('0x37')]=qs[_0x20b4('0x38')](_0x40ba85[_0x20b4('0x31')]['sort']);_0x40cafe[_0x20b4('0x39')]=qs[_0x20b4('0x2f')](_[_0x20b4('0x46')](_0x40ba85['query'],_0x192218['filters']));if(_0x40ba85[_0x20b4('0x31')][_0x20b4('0x3a')]){_0x40cafe[_0x20b4('0x39')]=_['merge'](_0x40cafe[_0x20b4('0x39')],{'$or':_[_0x20b4('0x27')](_0x40cafe['attributes'],function(_0x44462c){var _0x39b8af={};_0x39b8af[_0x44462c]={'$like':'%'+_0x40ba85[_0x20b4('0x31')][_0x20b4('0x3a')]+'%'};return _0x39b8af;})});}_0x40cafe=_[_0x20b4('0x41')]({},_0x40cafe,_0x40ba85[_0x20b4('0x3c')]);return _0x5eebd5[_0x20b4('0x45')](_0x40cafe);}})['then'](function(_0x1ca283){if(_0x1ca283){_0x46f0cf=_0x1ca283['length'];if(!_0x40ba85[_0x20b4('0x31')][_0x20b4('0x35')](_0x20b4('0x36'))){_0x40cafe[_0x20b4('0x1b')]=qs[_0x20b4('0x1b')](_0x40ba85[_0x20b4('0x31')][_0x20b4('0x1b')]);_0x40cafe[_0x20b4('0x1c')]=qs[_0x20b4('0x1c')](_0x40ba85[_0x20b4('0x31')][_0x20b4('0x1c')]);}return _0x5eebd5[_0x20b4('0x45')](_0x40cafe);}})[_0x20b4('0x21')](function(_0x1eb21a){if(_0x1eb21a){return _0x1eb21a?{'count':_0x46f0cf,'rows':_0x1eb21a}:null;}})[_0x20b4('0x21')](respondWithResult(_0x2b02ac,null))['catch'](handleError(_0x2b02ac,null));};exports[_0x20b4('0x47')]=function(_0x293526,_0x3b2b28,_0x14938a){if(_0x293526[_0x20b4('0x44')]['id']){delete _0x293526['body']['id'];}return db[_0x20b4('0x28')]['findOne']({'where':{'id':_0x293526[_0x20b4('0x40')]['id']}})['then'](handleEntityNotFound(_0x3b2b28,null))[_0x20b4('0x21')](function(_0x3bae9c){if(_0x3bae9c){_0x293526[_0x20b4('0x44')]['AccountId']=_0x3bae9c['id'];_0x293526[_0x20b4('0x44')][_0x20b4('0x48')]=integrations[_0x20b4('0x49')](_0x293526[_0x20b4('0x44')][_0x20b4('0x4a')],_0x293526[_0x20b4('0x44')][_0x20b4('0x2b')]);_0x293526['body']['Descriptions']=integrations['getDescriptions'](_0x293526[_0x20b4('0x44')][_0x20b4('0x4a')],_0x293526[_0x20b4('0x44')][_0x20b4('0x2b')]);return db[_0x20b4('0x4b')][_0x20b4('0x43')](_0x293526[_0x20b4('0x44')],{'include':[{'model':db['FreshsalesField'],'as':'Subjects'},{'model':db[_0x20b4('0x4c')],'as':_0x20b4('0x4d')}]});}return null;})['then'](respondWithResult(_0x3b2b28,null))[_0x20b4('0x3f')](handleError(_0x3b2b28,null));};exports[_0x20b4('0x4e')]=function(_0x4a4dad,_0x473ef7,_0x307edb){var _0x49ee1a='';var _0x5113d8='';return db[_0x20b4('0x28')]['findOne']({'where':{'id':_0x4a4dad[_0x20b4('0x40')]['id']},'attributes':['id',_0x20b4('0x4f'),_0x20b4('0x50'),_0x20b4('0x51')]})[_0x20b4('0x21')](handleEntityNotFound(_0x473ef7,null))[_0x20b4('0x21')](function(_0xaffd4a){if(_0xaffd4a){_0x5113d8=_0xaffd4a[_0x20b4('0x4f')];_0x49ee1a=_0xaffd4a[_0x20b4('0x50')];var _0x339284=_0xaffd4a['remoteUri'][_0x20b4('0x52')](-0x1);if(_0x339284==='/'){_0x49ee1a=_0x49ee1a[_0x20b4('0x53')](0x0,_0x49ee1a[_0x20b4('0x54')](_0x339284));}return rp({'method':_0x20b4('0x55'),'uri':util['format'](_0x20b4('0x56'),_0x49ee1a,_0x20b4('0x57')),'headers':{'Authorization':_0x20b4('0x58')+_0xaffd4a[_0x20b4('0x51')]},'json':!![]});}})['then'](function(_0x1e936f){if(_0x1e936f){var _0x25ee4a=_0x1e936f['users'];var _0x48f6e9=![];var _0x5ae0ff=null;for(_0x5ae0ff=0x0;_0x5ae0ff<_0x25ee4a[_0x20b4('0x34')];_0x5ae0ff++){if(_0x25ee4a[_0x5ae0ff][_0x20b4('0x59')]===_0x5113d8){_0x48f6e9=!![];}}if(_0x48f6e9){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x20b4('0x5a')});}}})[_0x20b4('0x21')](respondWithResult(_0x473ef7,null))['catch'](function(_0x1dbe9e){var _0x455795=_0x4a4dad[_0x20b4('0x31')]['test']?0x1f4:_0x1dbe9e[_0x20b4('0x5b')]||0x1f4;logger[_0x20b4('0x24')](_0x20b4('0x5c'),_0x20b4('0x4e'),_0x455795,JSON['stringify'](_0x1dbe9e));delete _0x1dbe9e[_0x20b4('0x25')];if(_0x455795===0x191){_0x455795=0x190;}_0x473ef7['status'](_0x455795)[_0x20b4('0x5d')](_0x4a4dad[_0x20b4('0x31')][_0x20b4('0x5e')]?{'message':_0x20b4('0x5f'),'statusCode':_0x1dbe9e[_0x20b4('0x5b')]}:_0x1dbe9e);});};
\ No newline at end of file
+var _0xe013=['getSubjects','getDescriptions','FreshsalesField','Descriptions','remoteUri','apiKey','username','slice','substring','lastIndexOf','GET','format','/api/selector/owners','Token\x20token=','users','Requested\x20Resource\x20not\x20Found','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','send','test','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','papaparse','../../components/parsers/advancedSearch','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','sendStatus','error','stack','name','index','FreshsalesAccount','rawAttributes','fieldName','type','model','map','query','keys','intersection','fields','length','attributes','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','filters','find','catch','body','update','getConfigurations','findOne','FreshsalesConfiguration','hasOwnProperty','Subjects'];(function(_0x3e75d5,_0x1871a5){var _0x2e6908=function(_0xe44a46){while(--_0xe44a46){_0x3e75d5['push'](_0x3e75d5['shift']());}};_0x2e6908(++_0x1871a5);}(_0xe013,0x140));var _0x3e01=function(_0x29b609,_0x19d388){_0x29b609=_0x29b609-0x0;var _0x54c952=_0xe013[_0x29b609];return _0x54c952;};'use strict';var emlformat=require(_0x3e01('0x0'));var rimraf=require(_0x3e01('0x1'));var zipdir=require(_0x3e01('0x2'));var jsonpatch=require(_0x3e01('0x3'));var rp=require(_0x3e01('0x4'));var moment=require('moment');var BPromise=require(_0x3e01('0x5'));var Mustache=require(_0x3e01('0x6'));var util=require(_0x3e01('0x7'));var path=require(_0x3e01('0x8'));var sox=require('sox');var csv=require(_0x3e01('0x9'));var ejs=require(_0x3e01('0xa'));var fs=require('fs');var fs_extra=require(_0x3e01('0xb'));var _=require(_0x3e01('0xc'));var squel=require('squel');var crypto=require(_0x3e01('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x3e01('0x9'));var querystring=require('querystring');var Papa=require(_0x3e01('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x3e01('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x3e01('0x10'));var licenseUtil=require(_0x3e01('0x11'));var db=require(_0x3e01('0x12'))['db'];var integrations=require(_0x3e01('0x13'));function respondWithStatusCode(_0xc99f45,_0x54cf08){_0x54cf08=_0x54cf08||0xcc;return function(_0x174028){if(_0x174028){return _0xc99f45['sendStatus'](_0x54cf08);}return _0xc99f45[_0x3e01('0x14')](_0x54cf08)[_0x3e01('0x15')]();};}function respondWithResult(_0x581930,_0x3c4acb){_0x3c4acb=_0x3c4acb||0xc8;return function(_0x1fc53e){if(_0x1fc53e){return _0x581930['status'](_0x3c4acb)[_0x3e01('0x16')](_0x1fc53e);}};}function respondWithFilteredResult(_0x787ac,_0x31240f){return function(_0x120b27){if(_0x120b27){var _0x40fabf=typeof _0x31240f[_0x3e01('0x17')]===_0x3e01('0x18')&&typeof _0x31240f[_0x3e01('0x19')]==='undefined';var _0x43ae77=_0x120b27[_0x3e01('0x1a')];var _0x16925d=_0x40fabf?0x0:_0x31240f[_0x3e01('0x17')];var _0x227f06=_0x40fabf?_0x120b27[_0x3e01('0x1a')]:_0x31240f[_0x3e01('0x17')]+_0x31240f[_0x3e01('0x19')];var _0x34cfcb;if(_0x227f06>=_0x43ae77){_0x227f06=_0x43ae77;_0x34cfcb=0xc8;}else{_0x34cfcb=0xce;}_0x787ac[_0x3e01('0x14')](_0x34cfcb);return _0x787ac[_0x3e01('0x1b')](_0x3e01('0x1c'),_0x16925d+'-'+_0x227f06+'/'+_0x43ae77)[_0x3e01('0x16')](_0x120b27);}return null;};}function patchUpdates(_0x17dbeb){return function(_0x3542bc){try{jsonpatch[_0x3e01('0x1d')](_0x3542bc,_0x17dbeb,!![]);}catch(_0x1f2a11){return BPromise[_0x3e01('0x1e')](_0x1f2a11);}return _0x3542bc[_0x3e01('0x1f')]();};}function saveUpdates(_0x4b28e1,_0x2731a5){return function(_0x28c23a){if(_0x28c23a){return _0x28c23a['update'](_0x4b28e1)[_0x3e01('0x20')](function(_0x42c99e){return _0x42c99e;});}return null;};}function removeEntity(_0x23bfa5,_0x5f2787){return function(_0x21dbc9){if(_0x21dbc9){return _0x21dbc9[_0x3e01('0x21')]()[_0x3e01('0x20')](function(){_0x23bfa5[_0x3e01('0x14')](0xcc)[_0x3e01('0x15')]();});}};}function handleEntityNotFound(_0x1cecd8,_0x4fc18b){return function(_0x1a9162){if(!_0x1a9162){_0x1cecd8[_0x3e01('0x22')](0x194);}return _0x1a9162;};}function handleError(_0xb2a604,_0x258568){_0x258568=_0x258568||0x1f4;return function(_0x1068b1){logger[_0x3e01('0x23')](_0x1068b1[_0x3e01('0x24')]);if(_0x1068b1[_0x3e01('0x25')]){delete _0x1068b1['name'];}_0xb2a604[_0x3e01('0x14')](_0x258568)['send'](_0x1068b1);};}exports[_0x3e01('0x26')]=function(_0xe1234a,_0xae1589){var _0x3ab0d2={},_0x186105={},_0x5fb3de={'count':0x0,'rows':[]};var _0x487ce3=_['map'](db[_0x3e01('0x27')][_0x3e01('0x28')],function(_0x5b6df0){return{'name':_0x5b6df0[_0x3e01('0x29')],'type':_0x5b6df0[_0x3e01('0x2a')]['key']};});_0x186105[_0x3e01('0x2b')]=_[_0x3e01('0x2c')](_0x487ce3,'name');_0x186105[_0x3e01('0x2d')]=_[_0x3e01('0x2e')](_0xe1234a['query']);_0x186105['filters']=_['intersection'](_0x186105[_0x3e01('0x2b')],_0x186105[_0x3e01('0x2d')]);_0x3ab0d2['attributes']=_[_0x3e01('0x2f')](_0x186105['model'],qs[_0x3e01('0x30')](_0xe1234a['query'][_0x3e01('0x30')]));_0x3ab0d2['attributes']=_0x3ab0d2['attributes'][_0x3e01('0x31')]?_0x3ab0d2[_0x3e01('0x32')]:_0x186105[_0x3e01('0x2b')];if(!_0xe1234a['query']['hasOwnProperty'](_0x3e01('0x33'))){_0x3ab0d2[_0x3e01('0x19')]=qs[_0x3e01('0x19')](_0xe1234a[_0x3e01('0x2d')][_0x3e01('0x19')]);_0x3ab0d2[_0x3e01('0x17')]=qs[_0x3e01('0x17')](_0xe1234a[_0x3e01('0x2d')][_0x3e01('0x17')]);}_0x3ab0d2[_0x3e01('0x34')]=qs['sort'](_0xe1234a[_0x3e01('0x2d')][_0x3e01('0x35')]);_0x3ab0d2[_0x3e01('0x36')]=qs['filters'](_[_0x3e01('0x37')](_0xe1234a['query'],_0x186105['filters']),_0x487ce3);if(_0xe1234a[_0x3e01('0x2d')][_0x3e01('0x38')]){_0x3ab0d2[_0x3e01('0x36')]=_[_0x3e01('0x39')](_0x3ab0d2[_0x3e01('0x36')],{'$or':_[_0x3e01('0x2c')](_0x487ce3,function(_0x427f64){if(_0x427f64['type']!==_0x3e01('0x3a')){var _0x19ce85={};_0x19ce85[_0x427f64[_0x3e01('0x25')]]={'$like':'%'+_0xe1234a['query'][_0x3e01('0x38')]+'%'};return _0x19ce85;}})});}_0x3ab0d2=_[_0x3e01('0x39')]({},_0x3ab0d2,_0xe1234a[_0x3e01('0x3b')]);var _0x69c02={'where':_0x3ab0d2[_0x3e01('0x36')]};return db[_0x3e01('0x27')][_0x3e01('0x1a')](_0x69c02)[_0x3e01('0x20')](function(_0x3d56c3){_0x5fb3de['count']=_0x3d56c3;if(_0xe1234a['query'][_0x3e01('0x3c')]){_0x3ab0d2[_0x3e01('0x3d')]=[{'all':!![]}];}return db[_0x3e01('0x27')][_0x3e01('0x3e')](_0x3ab0d2);})[_0x3e01('0x20')](function(_0x4f2baf){_0x5fb3de[_0x3e01('0x3f')]=_0x4f2baf;return _0x5fb3de;})[_0x3e01('0x20')](respondWithFilteredResult(_0xae1589,_0x3ab0d2))['catch'](handleError(_0xae1589,null));};exports[_0x3e01('0x40')]=function(_0x5a98bc,_0x1ab634){var _0x47392c={'raw':![],'where':{'id':_0x5a98bc[_0x3e01('0x41')]['id']}},_0x40171f={};_0x40171f[_0x3e01('0x2b')]=_[_0x3e01('0x2e')](db['FreshsalesAccount'][_0x3e01('0x28')]);_0x40171f[_0x3e01('0x2d')]=_[_0x3e01('0x2e')](_0x5a98bc[_0x3e01('0x2d')]);_0x40171f[_0x3e01('0x42')]=_[_0x3e01('0x2f')](_0x40171f['model'],_0x40171f[_0x3e01('0x2d')]);_0x47392c[_0x3e01('0x32')]=_[_0x3e01('0x2f')](_0x40171f[_0x3e01('0x2b')],qs[_0x3e01('0x30')](_0x5a98bc[_0x3e01('0x2d')]['fields']));_0x47392c[_0x3e01('0x32')]=_0x47392c[_0x3e01('0x32')]['length']?_0x47392c[_0x3e01('0x32')]:_0x40171f['model'];if(_0x5a98bc[_0x3e01('0x2d')][_0x3e01('0x3c')]){_0x47392c[_0x3e01('0x3d')]=[{'all':!![]}];}_0x47392c=_['merge']({},_0x47392c,_0x5a98bc[_0x3e01('0x3b')]);return db[_0x3e01('0x27')][_0x3e01('0x43')](_0x47392c)[_0x3e01('0x20')](handleEntityNotFound(_0x1ab634,null))[_0x3e01('0x20')](respondWithResult(_0x1ab634,null))[_0x3e01('0x44')](handleError(_0x1ab634,null));};exports['create']=function(_0x30f9f7,_0x954fee){return db[_0x3e01('0x27')]['create'](_0x30f9f7[_0x3e01('0x45')],{})[_0x3e01('0x20')](respondWithResult(_0x954fee,0xc9))[_0x3e01('0x44')](handleError(_0x954fee,null));};exports[_0x3e01('0x46')]=function(_0x99534d,_0x120352){if(_0x99534d[_0x3e01('0x45')]['id']){delete _0x99534d['body']['id'];}return db['FreshsalesAccount']['find']({'where':{'id':_0x99534d['params']['id']}})[_0x3e01('0x20')](handleEntityNotFound(_0x120352,null))[_0x3e01('0x20')](saveUpdates(_0x99534d['body'],null))[_0x3e01('0x20')](respondWithResult(_0x120352,null))[_0x3e01('0x44')](handleError(_0x120352,null));};exports[_0x3e01('0x21')]=function(_0x1f3632,_0x5e597c){return db[_0x3e01('0x27')][_0x3e01('0x43')]({'where':{'id':_0x1f3632[_0x3e01('0x41')]['id']}})['then'](handleEntityNotFound(_0x5e597c,null))[_0x3e01('0x20')](removeEntity(_0x5e597c,null))['catch'](handleError(_0x5e597c,null));};exports[_0x3e01('0x47')]=function(_0x109574,_0x563603,_0x582c9f){var _0x4d5d44={};var _0x2dc52e={};var _0x8c9a9a;var _0x4e774e;return db[_0x3e01('0x27')][_0x3e01('0x48')]({'where':{'id':_0x109574[_0x3e01('0x41')]['id']}})[_0x3e01('0x20')](handleEntityNotFound(_0x563603,null))[_0x3e01('0x20')](function(_0x5cf007){if(_0x5cf007){_0x8c9a9a=_0x5cf007;_0x2dc52e[_0x3e01('0x2b')]=_[_0x3e01('0x2e')](db[_0x3e01('0x49')][_0x3e01('0x28')]);_0x2dc52e[_0x3e01('0x2d')]=_[_0x3e01('0x2e')](_0x109574['query']);_0x2dc52e[_0x3e01('0x42')]=_[_0x3e01('0x2f')](_0x2dc52e['model'],_0x2dc52e[_0x3e01('0x2d')]);_0x4d5d44[_0x3e01('0x32')]=_[_0x3e01('0x2f')](_0x2dc52e[_0x3e01('0x2b')],qs[_0x3e01('0x30')](_0x109574[_0x3e01('0x2d')][_0x3e01('0x30')]));_0x4d5d44[_0x3e01('0x32')]=_0x4d5d44[_0x3e01('0x32')][_0x3e01('0x31')]?_0x4d5d44[_0x3e01('0x32')]:_0x2dc52e[_0x3e01('0x2b')];_0x4d5d44[_0x3e01('0x34')]=qs[_0x3e01('0x35')](_0x109574[_0x3e01('0x2d')][_0x3e01('0x35')]);_0x4d5d44[_0x3e01('0x36')]=qs[_0x3e01('0x42')](_['pick'](_0x109574[_0x3e01('0x2d')],_0x2dc52e[_0x3e01('0x42')]));if(_0x109574[_0x3e01('0x2d')][_0x3e01('0x38')]){_0x4d5d44[_0x3e01('0x36')]=_[_0x3e01('0x39')](_0x4d5d44[_0x3e01('0x36')],{'$or':_[_0x3e01('0x2c')](_0x4d5d44['attributes'],function(_0x1323ec){var _0x182669={};_0x182669[_0x1323ec]={'$like':'%'+_0x109574[_0x3e01('0x2d')][_0x3e01('0x38')]+'%'};return _0x182669;})});}_0x4d5d44=_[_0x3e01('0x39')]({},_0x4d5d44,_0x109574['options']);return _0x8c9a9a[_0x3e01('0x47')](_0x4d5d44);}})[_0x3e01('0x20')](function(_0x31d8f0){if(_0x31d8f0){_0x4e774e=_0x31d8f0[_0x3e01('0x31')];if(!_0x109574[_0x3e01('0x2d')][_0x3e01('0x4a')](_0x3e01('0x33'))){_0x4d5d44['limit']=qs[_0x3e01('0x19')](_0x109574['query'][_0x3e01('0x19')]);_0x4d5d44[_0x3e01('0x17')]=qs[_0x3e01('0x17')](_0x109574[_0x3e01('0x2d')][_0x3e01('0x17')]);}return _0x8c9a9a['getConfigurations'](_0x4d5d44);}})[_0x3e01('0x20')](function(_0x2b99fc){if(_0x2b99fc){return _0x2b99fc?{'count':_0x4e774e,'rows':_0x2b99fc}:null;}})['then'](respondWithResult(_0x563603,null))['catch'](handleError(_0x563603,null));};exports['addConfiguration']=function(_0x2f0802,_0x1bb87a,_0x2d49dd){if(_0x2f0802[_0x3e01('0x45')]['id']){delete _0x2f0802[_0x3e01('0x45')]['id'];}return db['FreshsalesAccount'][_0x3e01('0x48')]({'where':{'id':_0x2f0802[_0x3e01('0x41')]['id']}})['then'](handleEntityNotFound(_0x1bb87a,null))[_0x3e01('0x20')](function(_0x52fb2a){if(_0x52fb2a){_0x2f0802[_0x3e01('0x45')]['AccountId']=_0x52fb2a['id'];_0x2f0802[_0x3e01('0x45')][_0x3e01('0x4b')]=integrations[_0x3e01('0x4c')](_0x2f0802['body']['channel'],_0x2f0802[_0x3e01('0x45')][_0x3e01('0x2a')]);_0x2f0802[_0x3e01('0x45')]['Descriptions']=integrations[_0x3e01('0x4d')](_0x2f0802[_0x3e01('0x45')]['channel'],_0x2f0802[_0x3e01('0x45')][_0x3e01('0x2a')]);return db[_0x3e01('0x49')]['create'](_0x2f0802[_0x3e01('0x45')],{'include':[{'model':db[_0x3e01('0x4e')],'as':'Subjects'},{'model':db['FreshsalesField'],'as':_0x3e01('0x4f')}]});}return null;})[_0x3e01('0x20')](respondWithResult(_0x1bb87a,null))[_0x3e01('0x44')](handleError(_0x1bb87a,null));};exports['getFields']=function(_0x4c75f1,_0x23c32e,_0x266007){var _0x2e6684='';var _0x965bf2='';return db['FreshsalesAccount'][_0x3e01('0x48')]({'where':{'id':_0x4c75f1[_0x3e01('0x41')]['id']},'attributes':['id','username',_0x3e01('0x50'),_0x3e01('0x51')]})[_0x3e01('0x20')](handleEntityNotFound(_0x23c32e,null))[_0x3e01('0x20')](function(_0x4ca368){if(_0x4ca368){_0x965bf2=_0x4ca368[_0x3e01('0x52')];_0x2e6684=_0x4ca368[_0x3e01('0x50')];var _0x1eec7a=_0x4ca368[_0x3e01('0x50')][_0x3e01('0x53')](-0x1);if(_0x1eec7a==='/'){_0x2e6684=_0x2e6684[_0x3e01('0x54')](0x0,_0x2e6684[_0x3e01('0x55')](_0x1eec7a));}return rp({'method':_0x3e01('0x56'),'uri':util[_0x3e01('0x57')]('%s%s',_0x2e6684,_0x3e01('0x58')),'headers':{'Authorization':_0x3e01('0x59')+_0x4ca368[_0x3e01('0x51')]},'json':!![]});}})[_0x3e01('0x20')](function(_0x3e846f){if(_0x3e846f){var _0x17710a=_0x3e846f[_0x3e01('0x5a')];var _0x47de28=![];var _0x4e0b25=null;for(_0x4e0b25=0x0;_0x4e0b25<_0x17710a['length'];_0x4e0b25++){if(_0x17710a[_0x4e0b25]['email']===_0x965bf2){_0x47de28=!![];}}if(_0x47de28){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x3e01('0x5b')});}}})[_0x3e01('0x20')](respondWithResult(_0x23c32e,null))['catch'](function(_0x891f92){var _0x33629d=_0x4c75f1[_0x3e01('0x2d')]['test']?0x1f4:_0x891f92[_0x3e01('0x5c')]||0x1f4;logger['error'](_0x3e01('0x5d'),_0x3e01('0x5e'),_0x33629d,JSON[_0x3e01('0x5f')](_0x891f92));delete _0x891f92['name'];if(_0x33629d===0x191){_0x33629d=0x190;}_0x23c32e[_0x3e01('0x14')](_0x33629d)[_0x3e01('0x60')](_0x4c75f1[_0x3e01('0x2d')][_0x3e01('0x61')]?{'message':_0x3e01('0x62'),'statusCode':_0x891f92[_0x3e01('0x5c')]}:_0x891f92);});};
\ No newline at end of file
index 3e141fc..0b3c104 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfcf0=['lodash','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intFreshsalesAccount.attributes','../../components/integrations/configuration','exports','define','int_freshsales_accounts'];(function(_0x255d5b,_0x4f6f35){var _0x3e141a=function(_0x249ee2){while(--_0x249ee2){_0x255d5b['push'](_0x255d5b['shift']());}};_0x3e141a(++_0x4f6f35);}(_0xfcf0,0x138));var _0x0fcf=function(_0x17406e,_0x1049fd){_0x17406e=_0x17406e-0x0;var _0x2bfc5a=_0xfcf0[_0x17406e];return _0x2bfc5a;};'use strict';var _=require(_0x0fcf('0x0'));var util=require(_0x0fcf('0x1'));var logger=require('../../config/logger')(_0x0fcf('0x2'));var moment=require(_0x0fcf('0x3'));var BPromise=require(_0x0fcf('0x4'));var rp=require(_0x0fcf('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0fcf('0x6'));var config=require(_0x0fcf('0x7'));var attributes=require(_0x0fcf('0x8'));var integrations=require(_0x0fcf('0x9'));module[_0x0fcf('0xa')]=function(_0x1a7b03,_0x61bbb9){return _0x1a7b03[_0x0fcf('0xb')]('FreshsalesAccount',attributes,{'tableName':_0x0fcf('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6343=['../../components/integrations/configuration','exports','define','../../config/logger','api','rimraf','../../config/environment'];(function(_0x50a613,_0x21203b){var _0x1653a5=function(_0x3fe71a){while(--_0x3fe71a){_0x50a613['push'](_0x50a613['shift']());}};_0x1653a5(++_0x21203b);}(_0x6343,0x168));var _0x3634=function(_0x58ce9f,_0x3e1954){_0x58ce9f=_0x58ce9f-0x0;var _0x45cf2d=_0x6343[_0x58ce9f];return _0x45cf2d;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x3634('0x0'))(_0x3634('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x3634('0x2'));var config=require(_0x3634('0x3'));var attributes=require('./intFreshsalesAccount.attributes');var integrations=require(_0x3634('0x4'));module[_0x3634('0x5')]=function(_0x4bb496,_0x302828){return _0x4bb496[_0x3634('0x6')]('FreshsalesAccount',attributes,{'tableName':'int_freshsales_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1e4f940..40751b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4325=['stringify','code','error','message','info','result','catch','GetFreshsalesAccount','FreshsalesAccount','findAll','options','raw','where','attributes','include','map','model','ShowFreshsalesAccount','find','lodash','util','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','client','http','request','then','FreshsalesAccount,\x20%s,\x20%s','debug','FreshsalesAccount,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x38249d,_0x59cf80){var _0x48ea04=function(_0x68581b){while(--_0x68581b){_0x38249d['push'](_0x38249d['shift']());}};_0x48ea04(++_0x59cf80);}(_0x4325,0x1da));var _0x5432=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x4325[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require(_0x5432('0x0'));var util=require(_0x5432('0x1'));var moment=require('moment');var BPromise=require(_0x5432('0x2'));var rs=require(_0x5432('0x3'));var fs=require('fs');var Redis=require(_0x5432('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x5432('0x5'))(_0x5432('0x6'));var config=require(_0x5432('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x5432('0x8')][_0x5432('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4a6e76,_0x106ec9,_0x50394d){return new BPromise(function(_0xc8252e,_0x1c9762){return client[_0x5432('0xa')](_0x4a6e76,_0x50394d)[_0x5432('0xb')](function(_0x263a0c){logger['info'](_0x5432('0xc'),_0x106ec9,'request\x20sent');logger[_0x5432('0xd')](_0x5432('0xe'),_0x106ec9,_0x5432('0xf'),JSON[_0x5432('0x10')](_0x263a0c));if(_0x263a0c['error']){if(_0x263a0c['error'][_0x5432('0x11')]===0x1f4){logger[_0x5432('0x12')]('FreshsalesAccount,\x20%s,\x20%s',_0x106ec9,_0x263a0c[_0x5432('0x12')][_0x5432('0x13')]);return _0x1c9762(_0x263a0c[_0x5432('0x12')][_0x5432('0x13')]);}logger[_0x5432('0x12')](_0x5432('0xc'),_0x106ec9,_0x263a0c['error']['message']);return _0xc8252e(_0x263a0c[_0x5432('0x12')][_0x5432('0x13')]);}else{logger[_0x5432('0x14')](_0x5432('0xc'),_0x106ec9,_0x5432('0xf'));_0xc8252e(_0x263a0c[_0x5432('0x15')]['message']);}})[_0x5432('0x16')](function(_0x49e8fd){logger[_0x5432('0x12')](_0x5432('0xc'),_0x106ec9,_0x49e8fd);_0x1c9762(_0x49e8fd);});});}exports[_0x5432('0x17')]=function(_0x32fe60){var _0x4221a8=this;return new Promise(function(_0x5f011f,_0x3f3873){return db[_0x5432('0x18')][_0x5432('0x19')]({'raw':_0x32fe60[_0x5432('0x1a')]?_0x32fe60[_0x5432('0x1a')][_0x5432('0x1b')]===undefined?!![]:![]:!![],'where':_0x32fe60[_0x5432('0x1a')]?_0x32fe60['options'][_0x5432('0x1c')]||null:null,'attributes':_0x32fe60[_0x5432('0x1a')]?_0x32fe60[_0x5432('0x1a')][_0x5432('0x1d')]||null:null,'limit':_0x32fe60[_0x5432('0x1a')]?_0x32fe60['options']['limit']||null:null,'include':_0x32fe60['options']?_0x32fe60[_0x5432('0x1a')][_0x5432('0x1e')]?_[_0x5432('0x1f')](_0x32fe60[_0x5432('0x1a')]['include'],function(_0x4af5f4){return{'model':db[_0x4af5f4[_0x5432('0x20')]],'as':_0x4af5f4['as'],'attributes':_0x4af5f4[_0x5432('0x1d')],'include':_0x4af5f4['include']?_[_0x5432('0x1f')](_0x4af5f4[_0x5432('0x1e')],function(_0x637582){return{'model':db[_0x637582['model']],'as':_0x637582['as'],'attributes':_0x637582[_0x5432('0x1d')],'include':_0x637582[_0x5432('0x1e')]?_[_0x5432('0x1f')](_0x637582['include'],function(_0x4ab09d){return{'model':db[_0x4ab09d[_0x5432('0x20')]],'as':_0x4ab09d['as'],'attributes':_0x4ab09d[_0x5432('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1abe73){logger[_0x5432('0x14')](_0x5432('0x17'),_0x32fe60);logger['debug'](_0x5432('0x17'),_0x32fe60,JSON['stringify'](_0x1abe73));_0x5f011f(_0x1abe73);})['catch'](function(_0x6fc7f5){logger['error'](_0x5432('0x17'),_0x6fc7f5['message'],_0x32fe60);_0x3f3873(_0x4221a8['error'](0x1f4,_0x6fc7f5[_0x5432('0x13')]));});});};exports[_0x5432('0x21')]=function(_0x345b51){var _0x4e92d5=this;return new Promise(function(_0x31490c,_0x1d436c){return db[_0x5432('0x18')][_0x5432('0x22')]({'raw':_0x345b51[_0x5432('0x1a')]?_0x345b51[_0x5432('0x1a')][_0x5432('0x1b')]===undefined?!![]:![]:!![],'where':_0x345b51[_0x5432('0x1a')]?_0x345b51[_0x5432('0x1a')]['where']||null:null,'attributes':_0x345b51['options']?_0x345b51[_0x5432('0x1a')][_0x5432('0x1d')]||null:null,'include':_0x345b51[_0x5432('0x1a')]?_0x345b51[_0x5432('0x1a')][_0x5432('0x1e')]?_['map'](_0x345b51[_0x5432('0x1a')]['include'],function(_0x2955e0){return{'model':db[_0x2955e0[_0x5432('0x20')]],'as':_0x2955e0['as'],'attributes':_0x2955e0[_0x5432('0x1d')],'include':_0x2955e0[_0x5432('0x1e')]?_[_0x5432('0x1f')](_0x2955e0[_0x5432('0x1e')],function(_0x5c3c77){return{'model':db[_0x5c3c77[_0x5432('0x20')]],'as':_0x5c3c77['as'],'attributes':_0x5c3c77[_0x5432('0x1d')],'include':_0x5c3c77[_0x5432('0x1e')]?_[_0x5432('0x1f')](_0x5c3c77['include'],function(_0xe01f4b){return{'model':db[_0xe01f4b[_0x5432('0x20')]],'as':_0xe01f4b['as'],'attributes':_0xe01f4b[_0x5432('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x5432('0xb')](function(_0x3fb586){logger[_0x5432('0x14')](_0x5432('0x21'),_0x345b51);logger[_0x5432('0xd')](_0x5432('0x21'),_0x345b51,JSON[_0x5432('0x10')](_0x3fb586));_0x31490c(_0x3fb586);})[_0x5432('0x16')](function(_0x1f4679){logger[_0x5432('0x12')](_0x5432('0x21'),_0x1f4679['message'],_0x345b51);_0x1d436c(_0x4e92d5[_0x5432('0x12')](0x1f4,_0x1f4679['message']));});});};
\ No newline at end of file
+var _0x0a6b=['find','map','lodash','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','info','FreshsalesAccount,\x20%s,\x20%s','request\x20sent','FreshsalesAccount,\x20%s,\x20%s,\x20%s','error','code','message','result','GetFreshsalesAccount','FreshsalesAccount','findAll','options','raw','where','attributes','limit','include','model','then','debug','stringify','catch','ShowFreshsalesAccount'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0a6b,0x18e));var _0xb0a6=function(_0x4881be,_0x244db3){_0x4881be=_0x4881be-0x0;var _0x24fdc8=_0x0a6b[_0x4881be];return _0x24fdc8;};'use strict';var _=require(_0xb0a6('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xb0a6('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb0a6('0x2'))['db'];var utils=require(_0xb0a6('0x3'));var logger=require(_0xb0a6('0x4'))('rpc');var config=require(_0xb0a6('0x5'));var jayson=require('jayson/promise');var client=jayson[_0xb0a6('0x6')][_0xb0a6('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x5e2d2d,_0x11cd5b,_0x24515c){return new BPromise(function(_0x2a8516,_0x530c05){return client['request'](_0x5e2d2d,_0x24515c)['then'](function(_0x2ded05){logger[_0xb0a6('0x8')](_0xb0a6('0x9'),_0x11cd5b,_0xb0a6('0xa'));logger['debug'](_0xb0a6('0xb'),_0x11cd5b,_0xb0a6('0xa'),JSON['stringify'](_0x2ded05));if(_0x2ded05[_0xb0a6('0xc')]){if(_0x2ded05[_0xb0a6('0xc')][_0xb0a6('0xd')]===0x1f4){logger[_0xb0a6('0xc')](_0xb0a6('0x9'),_0x11cd5b,_0x2ded05[_0xb0a6('0xc')][_0xb0a6('0xe')]);return _0x530c05(_0x2ded05[_0xb0a6('0xc')][_0xb0a6('0xe')]);}logger[_0xb0a6('0xc')]('FreshsalesAccount,\x20%s,\x20%s',_0x11cd5b,_0x2ded05[_0xb0a6('0xc')]['message']);return _0x2a8516(_0x2ded05[_0xb0a6('0xc')]['message']);}else{logger[_0xb0a6('0x8')]('FreshsalesAccount,\x20%s,\x20%s',_0x11cd5b,_0xb0a6('0xa'));_0x2a8516(_0x2ded05[_0xb0a6('0xf')][_0xb0a6('0xe')]);}})['catch'](function(_0x56b594){logger[_0xb0a6('0xc')](_0xb0a6('0x9'),_0x11cd5b,_0x56b594);_0x530c05(_0x56b594);});});}exports[_0xb0a6('0x10')]=function(_0x18f994){var _0x10f504=this;return new Promise(function(_0x13a1c8,_0x567dd5){return db[_0xb0a6('0x11')][_0xb0a6('0x12')]({'raw':_0x18f994[_0xb0a6('0x13')]?_0x18f994[_0xb0a6('0x13')][_0xb0a6('0x14')]===undefined?!![]:![]:!![],'where':_0x18f994[_0xb0a6('0x13')]?_0x18f994['options'][_0xb0a6('0x15')]||null:null,'attributes':_0x18f994[_0xb0a6('0x13')]?_0x18f994[_0xb0a6('0x13')][_0xb0a6('0x16')]||null:null,'limit':_0x18f994[_0xb0a6('0x13')]?_0x18f994[_0xb0a6('0x13')][_0xb0a6('0x17')]||null:null,'include':_0x18f994[_0xb0a6('0x13')]?_0x18f994['options'][_0xb0a6('0x18')]?_['map'](_0x18f994[_0xb0a6('0x13')][_0xb0a6('0x18')],function(_0x4997df){return{'model':db[_0x4997df['model']],'as':_0x4997df['as'],'attributes':_0x4997df[_0xb0a6('0x16')],'include':_0x4997df[_0xb0a6('0x18')]?_['map'](_0x4997df[_0xb0a6('0x18')],function(_0x24574a){return{'model':db[_0x24574a[_0xb0a6('0x19')]],'as':_0x24574a['as'],'attributes':_0x24574a[_0xb0a6('0x16')],'include':_0x24574a['include']?_['map'](_0x24574a[_0xb0a6('0x18')],function(_0x1e9947){return{'model':db[_0x1e9947[_0xb0a6('0x19')]],'as':_0x1e9947['as'],'attributes':_0x1e9947['attributes']};}):[]};}):[]};}):[]:[]})[_0xb0a6('0x1a')](function(_0x3347ac){logger[_0xb0a6('0x8')](_0xb0a6('0x10'),_0x18f994);logger[_0xb0a6('0x1b')](_0xb0a6('0x10'),_0x18f994,JSON[_0xb0a6('0x1c')](_0x3347ac));_0x13a1c8(_0x3347ac);})[_0xb0a6('0x1d')](function(_0x4255b9){logger['error'](_0xb0a6('0x10'),_0x4255b9[_0xb0a6('0xe')],_0x18f994);_0x567dd5(_0x10f504[_0xb0a6('0xc')](0x1f4,_0x4255b9['message']));});});};exports[_0xb0a6('0x1e')]=function(_0x582fc2){var _0x131e46=this;return new Promise(function(_0x309a91,_0x114f91){return db[_0xb0a6('0x11')][_0xb0a6('0x1f')]({'raw':_0x582fc2[_0xb0a6('0x13')]?_0x582fc2[_0xb0a6('0x13')][_0xb0a6('0x14')]===undefined?!![]:![]:!![],'where':_0x582fc2[_0xb0a6('0x13')]?_0x582fc2[_0xb0a6('0x13')]['where']||null:null,'attributes':_0x582fc2['options']?_0x582fc2[_0xb0a6('0x13')][_0xb0a6('0x16')]||null:null,'include':_0x582fc2[_0xb0a6('0x13')]?_0x582fc2[_0xb0a6('0x13')][_0xb0a6('0x18')]?_[_0xb0a6('0x20')](_0x582fc2[_0xb0a6('0x13')][_0xb0a6('0x18')],function(_0x4b0479){return{'model':db[_0x4b0479[_0xb0a6('0x19')]],'as':_0x4b0479['as'],'attributes':_0x4b0479[_0xb0a6('0x16')],'include':_0x4b0479['include']?_[_0xb0a6('0x20')](_0x4b0479[_0xb0a6('0x18')],function(_0x52e397){return{'model':db[_0x52e397['model']],'as':_0x52e397['as'],'attributes':_0x52e397[_0xb0a6('0x16')],'include':_0x52e397[_0xb0a6('0x18')]?_[_0xb0a6('0x20')](_0x52e397[_0xb0a6('0x18')],function(_0x4310ae){return{'model':db[_0x4310ae[_0xb0a6('0x19')]],'as':_0x4310ae['as'],'attributes':_0x4310ae['attributes']};}):[]};}):[]};}):[]:[]})[_0xb0a6('0x1a')](function(_0x5c280e){logger[_0xb0a6('0x8')](_0xb0a6('0x1e'),_0x582fc2);logger['debug']('ShowFreshsalesAccount',_0x582fc2,JSON['stringify'](_0x5c280e));_0x309a91(_0x5c280e);})[_0xb0a6('0x1d')](function(_0xd484f){logger[_0xb0a6('0xc')](_0xb0a6('0x1e'),_0xd484f[_0xb0a6('0xe')],_0x582fc2);_0x114f91(_0x131e46['error'](0x1f4,_0xd484f[_0xb0a6('0xe')]));});});};
\ No newline at end of file
index 8881c6e..3cdbea8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbde3=['put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/fields','getFields','post','create'];(function(_0x575a31,_0x56336f){var _0x5d7dad=function(_0x2c8c09){while(--_0x2c8c09){_0x575a31['push'](_0x575a31['shift']());}};_0x5d7dad(++_0x56336f);}(_0xbde3,0x17b));var _0x3bde=function(_0xe429f8,_0xb5ddb4){_0xe429f8=_0xe429f8-0x0;var _0x439723=_0xbde3[_0xe429f8];return _0x439723;};'use strict';var multer=require(_0x3bde('0x0'));var util=require(_0x3bde('0x1'));var path=require(_0x3bde('0x2'));var timeout=require(_0x3bde('0x3'));var express=require(_0x3bde('0x4'));var router=express[_0x3bde('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x3bde('0x6'));var config=require(_0x3bde('0x7'));var controller=require('./intFreshsalesConfiguration.controller');router[_0x3bde('0x8')]('/',auth[_0x3bde('0x9')](),controller[_0x3bde('0xa')]);router[_0x3bde('0x8')](_0x3bde('0xb'),auth[_0x3bde('0x9')](),controller[_0x3bde('0xc')]);router[_0x3bde('0x8')](_0x3bde('0xd'),auth[_0x3bde('0x9')](),controller[_0x3bde('0xe')]);router[_0x3bde('0x8')](_0x3bde('0xf'),auth[_0x3bde('0x9')](),controller[_0x3bde('0x10')]);router[_0x3bde('0x8')](_0x3bde('0x11'),auth[_0x3bde('0x9')](),controller[_0x3bde('0x12')]);router[_0x3bde('0x13')]('/',auth[_0x3bde('0x9')](),controller[_0x3bde('0x14')]);router[_0x3bde('0x15')]('/:id',auth['isAuthenticated'](),controller[_0x3bde('0x16')]);router['delete']('/:id',auth[_0x3bde('0x9')](),controller[_0x3bde('0x17')]);module[_0x3bde('0x18')]=router;
\ No newline at end of file
+var _0xbcc9=['./intFreshsalesConfiguration.controller','index','get','/:id','show','isAuthenticated','getSubjects','/:id/descriptions','getDescriptions','/:id/fields','getFields','post','put','delete','exports','multer','path','connect-timeout','express','Router','fs-extra','../../config/environment'];(function(_0x3e6707,_0x37475e){var _0x12b38d=function(_0x54c152){while(--_0x54c152){_0x3e6707['push'](_0x3e6707['shift']());}};_0x12b38d(++_0x37475e);}(_0xbcc9,0x1dd));var _0x9bcc=function(_0xeb6f8d,_0x1138f1){_0xeb6f8d=_0xeb6f8d-0x0;var _0x41f045=_0xbcc9[_0xeb6f8d];return _0x41f045;};'use strict';var multer=require(_0x9bcc('0x0'));var util=require('util');var path=require(_0x9bcc('0x1'));var timeout=require(_0x9bcc('0x2'));var express=require(_0x9bcc('0x3'));var router=express[_0x9bcc('0x4')]();var fs_extra=require(_0x9bcc('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x9bcc('0x6'));var controller=require(_0x9bcc('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0x9bcc('0x8')]);router[_0x9bcc('0x9')](_0x9bcc('0xa'),auth['isAuthenticated'](),controller[_0x9bcc('0xb')]);router['get']('/:id/subjects',auth[_0x9bcc('0xc')](),controller[_0x9bcc('0xd')]);router[_0x9bcc('0x9')](_0x9bcc('0xe'),auth[_0x9bcc('0xc')](),controller[_0x9bcc('0xf')]);router[_0x9bcc('0x9')](_0x9bcc('0x10'),auth[_0x9bcc('0xc')](),controller[_0x9bcc('0x11')]);router[_0x9bcc('0x12')]('/',auth[_0x9bcc('0xc')](),controller['create']);router[_0x9bcc('0x13')](_0x9bcc('0xa'),auth[_0x9bcc('0xc')](),controller['update']);router[_0x9bcc('0x14')](_0x9bcc('0xa'),auth['isAuthenticated'](),controller['destroy']);module[_0x9bcc('0x15')]=router;
\ No newline at end of file
index 188e302..5be2a47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe223=['STRING','sequelize'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0xe223,0x1c7));var _0x3e22=function(_0x105c57,_0x1cccca){_0x105c57=_0x105c57-0x0;var _0xb71be5=_0xe223[_0x105c57];return _0xb71be5;};'use strict';var Sequelize=require(_0x3e22('0x0'));module['exports']={'name':{'type':Sequelize[_0x3e22('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x8c35=['sequelize','exports','STRING'];(function(_0x1d2bc8,_0x2860bc){var _0x1857e1=function(_0x3a3073){while(--_0x3a3073){_0x1d2bc8['push'](_0x1d2bc8['shift']());}};_0x1857e1(++_0x2860bc);}(_0x8c35,0xae));var _0x58c3=function(_0x248306,_0x33fdb7){_0x248306=_0x248306-0x0;var _0x1e834e=_0x8c35[_0x248306];return _0x1e834e;};'use strict';var Sequelize=require(_0x58c3('0x0'));module[_0x58c3('0x1')]={'name':{'type':Sequelize[_0x58c3('0x2')]},'description':{'type':Sequelize[_0x58c3('0x2')]}};
\ No newline at end of file
index d78ea10..f4d7780 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa7d=['limit','set','Content-Range','reject','save','update','then','destroy','stack','name','index','map','FreshsalesConfiguration','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','options','includeAll','rows','show','params','keys','find','catch','create','body','findOne','FreshsalesField','getSubjects','getDescriptions','pick','merge','getFields','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count'];(function(_0x49e489,_0x198e41){var _0xcc7a16=function(_0x2bf324){while(--_0x2bf324){_0x49e489['push'](_0x49e489['shift']());}};_0xcc7a16(++_0x198e41);}(_0xaa7d,0x16c));var _0xdaa7=function(_0x40df5f,_0x8fd59f){_0x40df5f=_0x40df5f-0x0;var _0x1573f1=_0xaa7d[_0x40df5f];return _0x1573f1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xdaa7('0x0'));var zipdir=require(_0xdaa7('0x1'));var jsonpatch=require(_0xdaa7('0x2'));var rp=require(_0xdaa7('0x3'));var moment=require(_0xdaa7('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xdaa7('0x5'));var util=require(_0xdaa7('0x6'));var path=require(_0xdaa7('0x7'));var sox=require(_0xdaa7('0x8'));var csv=require(_0xdaa7('0x9'));var ejs=require(_0xdaa7('0xa'));var fs=require('fs');var fs_extra=require(_0xdaa7('0xb'));var _=require('lodash');var squel=require(_0xdaa7('0xc'));var crypto=require(_0xdaa7('0xd'));var jsforce=require(_0xdaa7('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xdaa7('0x9'));var querystring=require('querystring');var Papa=require(_0xdaa7('0xf'));var Redis=require(_0xdaa7('0x10'));var authService=require(_0xdaa7('0x11'));var qs=require(_0xdaa7('0x12'));var as=require(_0xdaa7('0x13'));var hardwareService=require(_0xdaa7('0x14'));var logger=require(_0xdaa7('0x15'))('api');var utils=require('../../config/utils');var config=require(_0xdaa7('0x16'));var licenseUtil=require(_0xdaa7('0x17'));var db=require(_0xdaa7('0x18'))['db'];function respondWithStatusCode(_0xefe453,_0x59796b){_0x59796b=_0x59796b||0xcc;return function(_0x182a73){if(_0x182a73){return _0xefe453['sendStatus'](_0x59796b);}return _0xefe453[_0xdaa7('0x19')](_0x59796b)[_0xdaa7('0x1a')]();};}function respondWithResult(_0x24c41d,_0x516df0){_0x516df0=_0x516df0||0xc8;return function(_0x4a4c96){if(_0x4a4c96){return _0x24c41d['status'](_0x516df0)[_0xdaa7('0x1b')](_0x4a4c96);}};}function respondWithFilteredResult(_0x5ae836,_0x1201a6){return function(_0x7fad3c){if(_0x7fad3c){var _0x1cffb3=typeof _0x1201a6[_0xdaa7('0x1c')]===_0xdaa7('0x1d')&&typeof _0x1201a6['limit']==='undefined';var _0x14737e=_0x7fad3c[_0xdaa7('0x1e')];var _0x97c9fa=_0x1cffb3?0x0:_0x1201a6['offset'];var _0x55f0f2=_0x1cffb3?_0x7fad3c[_0xdaa7('0x1e')]:_0x1201a6[_0xdaa7('0x1c')]+_0x1201a6[_0xdaa7('0x1f')];var _0x55426e;if(_0x55f0f2>=_0x14737e){_0x55f0f2=_0x14737e;_0x55426e=0xc8;}else{_0x55426e=0xce;}_0x5ae836['status'](_0x55426e);return _0x5ae836[_0xdaa7('0x20')](_0xdaa7('0x21'),_0x97c9fa+'-'+_0x55f0f2+'/'+_0x14737e)['json'](_0x7fad3c);}return null;};}function patchUpdates(_0x2a6eca){return function(_0x2d9cfc){try{jsonpatch['apply'](_0x2d9cfc,_0x2a6eca,!![]);}catch(_0x4b717e){return BPromise[_0xdaa7('0x22')](_0x4b717e);}return _0x2d9cfc[_0xdaa7('0x23')]();};}function saveUpdates(_0x59186b,_0x5e11c0){return function(_0x2d65cb){if(_0x2d65cb){return _0x2d65cb[_0xdaa7('0x24')](_0x59186b)[_0xdaa7('0x25')](function(_0x8bb328){return _0x8bb328;});}return null;};}function removeEntity(_0x1a44b1,_0x54e354){return function(_0x1a6bad){if(_0x1a6bad){return _0x1a6bad[_0xdaa7('0x26')]()[_0xdaa7('0x25')](function(){_0x1a44b1[_0xdaa7('0x19')](0xcc)[_0xdaa7('0x1a')]();});}};}function handleEntityNotFound(_0x57bdd0,_0x1c3b9c){return function(_0x124962){if(!_0x124962){_0x57bdd0['sendStatus'](0x194);}return _0x124962;};}function handleError(_0x4a0719,_0x338eea){_0x338eea=_0x338eea||0x1f4;return function(_0x5e2568){logger['error'](_0x5e2568[_0xdaa7('0x27')]);if(_0x5e2568[_0xdaa7('0x28')]){delete _0x5e2568[_0xdaa7('0x28')];}_0x4a0719[_0xdaa7('0x19')](_0x338eea)['send'](_0x5e2568);};}exports[_0xdaa7('0x29')]=function(_0x1c887a,_0xb90158){var _0x4b72d3={},_0x28acd0={},_0x3ebdef={'count':0x0,'rows':[]};var _0x8147c=_[_0xdaa7('0x2a')](db[_0xdaa7('0x2b')][_0xdaa7('0x2c')],function(_0x45471f){return{'name':_0x45471f[_0xdaa7('0x2d')],'type':_0x45471f[_0xdaa7('0x2e')][_0xdaa7('0x2f')]};});_0x28acd0[_0xdaa7('0x30')]=_['map'](_0x8147c,'name');_0x28acd0[_0xdaa7('0x31')]=_['keys'](_0x1c887a[_0xdaa7('0x31')]);_0x28acd0[_0xdaa7('0x32')]=_[_0xdaa7('0x33')](_0x28acd0[_0xdaa7('0x30')],_0x28acd0[_0xdaa7('0x31')]);_0x4b72d3[_0xdaa7('0x34')]=_[_0xdaa7('0x33')](_0x28acd0[_0xdaa7('0x30')],qs[_0xdaa7('0x35')](_0x1c887a['query'][_0xdaa7('0x35')]));_0x4b72d3['attributes']=_0x4b72d3['attributes'][_0xdaa7('0x36')]?_0x4b72d3[_0xdaa7('0x34')]:_0x28acd0[_0xdaa7('0x30')];if(!_0x1c887a['query'][_0xdaa7('0x37')](_0xdaa7('0x38'))){_0x4b72d3['limit']=qs['limit'](_0x1c887a[_0xdaa7('0x31')][_0xdaa7('0x1f')]);_0x4b72d3[_0xdaa7('0x1c')]=qs[_0xdaa7('0x1c')](_0x1c887a[_0xdaa7('0x31')]['offset']);}_0x4b72d3[_0xdaa7('0x39')]=qs[_0xdaa7('0x3a')](_0x1c887a['query'][_0xdaa7('0x3a')]);_0x4b72d3[_0xdaa7('0x3b')]=qs[_0xdaa7('0x32')](_['pick'](_0x1c887a[_0xdaa7('0x31')],_0x28acd0[_0xdaa7('0x32')]),_0x8147c);if(_0x1c887a[_0xdaa7('0x31')][_0xdaa7('0x3c')]){_0x4b72d3[_0xdaa7('0x3b')]=_['merge'](_0x4b72d3[_0xdaa7('0x3b')],{'$or':_[_0xdaa7('0x2a')](_0x8147c,function(_0x4b8871){if(_0x4b8871[_0xdaa7('0x2e')]!==_0xdaa7('0x3d')){var _0x313886={};_0x313886[_0x4b8871[_0xdaa7('0x28')]]={'$like':'%'+_0x1c887a[_0xdaa7('0x31')][_0xdaa7('0x3c')]+'%'};return _0x313886;}})});}_0x4b72d3=_['merge']({},_0x4b72d3,_0x1c887a[_0xdaa7('0x3e')]);var _0x327aa2={'where':_0x4b72d3['where']};return db[_0xdaa7('0x2b')][_0xdaa7('0x1e')](_0x327aa2)[_0xdaa7('0x25')](function(_0x4c0328){_0x3ebdef['count']=_0x4c0328;if(_0x1c887a[_0xdaa7('0x31')][_0xdaa7('0x3f')]){_0x4b72d3['include']=[{'all':!![]}];}return db['FreshsalesConfiguration']['findAll'](_0x4b72d3);})[_0xdaa7('0x25')](function(_0x3e129e){_0x3ebdef[_0xdaa7('0x40')]=_0x3e129e;return _0x3ebdef;})[_0xdaa7('0x25')](respondWithFilteredResult(_0xb90158,_0x4b72d3))['catch'](handleError(_0xb90158,null));};exports[_0xdaa7('0x41')]=function(_0xf0c7f0,_0x1213d9){var _0x4584af={'raw':![],'where':{'id':_0xf0c7f0[_0xdaa7('0x42')]['id']}},_0x2f8ae6={};_0x2f8ae6[_0xdaa7('0x30')]=_[_0xdaa7('0x43')](db[_0xdaa7('0x2b')]['rawAttributes']);_0x2f8ae6['query']=_[_0xdaa7('0x43')](_0xf0c7f0[_0xdaa7('0x31')]);_0x2f8ae6[_0xdaa7('0x32')]=_[_0xdaa7('0x33')](_0x2f8ae6[_0xdaa7('0x30')],_0x2f8ae6[_0xdaa7('0x31')]);_0x4584af[_0xdaa7('0x34')]=_[_0xdaa7('0x33')](_0x2f8ae6[_0xdaa7('0x30')],qs[_0xdaa7('0x35')](_0xf0c7f0[_0xdaa7('0x31')][_0xdaa7('0x35')]));_0x4584af[_0xdaa7('0x34')]=_0x4584af[_0xdaa7('0x34')]['length']?_0x4584af[_0xdaa7('0x34')]:_0x2f8ae6[_0xdaa7('0x30')];if(_0xf0c7f0['query'][_0xdaa7('0x3f')]){_0x4584af['include']=[{'all':!![]}];}_0x4584af=_['merge']({},_0x4584af,_0xf0c7f0[_0xdaa7('0x3e')]);return db[_0xdaa7('0x2b')][_0xdaa7('0x44')](_0x4584af)['then'](handleEntityNotFound(_0x1213d9,null))[_0xdaa7('0x25')](respondWithResult(_0x1213d9,null))[_0xdaa7('0x45')](handleError(_0x1213d9,null));};exports[_0xdaa7('0x46')]=function(_0x27cba6,_0x2b66ce){return db[_0xdaa7('0x2b')][_0xdaa7('0x46')](_0x27cba6[_0xdaa7('0x47')],{})[_0xdaa7('0x25')](respondWithResult(_0x2b66ce,0xc9))['catch'](handleError(_0x2b66ce,null));};exports[_0xdaa7('0x24')]=function(_0x1fe92f,_0x5cda14){if(_0x1fe92f[_0xdaa7('0x47')]['id']){delete _0x1fe92f[_0xdaa7('0x47')]['id'];}return db[_0xdaa7('0x2b')][_0xdaa7('0x44')]({'where':{'id':_0x1fe92f[_0xdaa7('0x42')]['id']}})[_0xdaa7('0x25')](handleEntityNotFound(_0x5cda14,null))[_0xdaa7('0x25')](saveUpdates(_0x1fe92f[_0xdaa7('0x47')],null))[_0xdaa7('0x25')](respondWithResult(_0x5cda14,null))[_0xdaa7('0x45')](handleError(_0x5cda14,null));};exports['destroy']=function(_0x1e99ae,_0x37cbf2){return db[_0xdaa7('0x2b')]['find']({'where':{'id':_0x1e99ae[_0xdaa7('0x42')]['id']}})['then'](handleEntityNotFound(_0x37cbf2,null))['then'](removeEntity(_0x37cbf2,null))[_0xdaa7('0x45')](handleError(_0x37cbf2,null));};exports['getSubjects']=function(_0x3852e1,_0x506896,_0x2e3ba1){var _0x240afa={};var _0x264259={};var _0x17cf60;var _0x307c2d;return db[_0xdaa7('0x2b')][_0xdaa7('0x48')]({'where':{'id':_0x3852e1[_0xdaa7('0x42')]['id']}})[_0xdaa7('0x25')](handleEntityNotFound(_0x506896,null))[_0xdaa7('0x25')](function(_0x54c8e7){if(_0x54c8e7){_0x17cf60=_0x54c8e7;_0x264259[_0xdaa7('0x30')]=_[_0xdaa7('0x43')](db[_0xdaa7('0x49')][_0xdaa7('0x2c')]);_0x264259['query']=_['keys'](_0x3852e1[_0xdaa7('0x31')]);_0x264259[_0xdaa7('0x32')]=_['intersection'](_0x264259['model'],_0x264259['query']);_0x240afa[_0xdaa7('0x34')]=_[_0xdaa7('0x33')](_0x264259[_0xdaa7('0x30')],qs[_0xdaa7('0x35')](_0x3852e1['query'][_0xdaa7('0x35')]));_0x240afa[_0xdaa7('0x34')]=_0x240afa[_0xdaa7('0x34')]['length']?_0x240afa['attributes']:_0x264259[_0xdaa7('0x30')];_0x240afa['order']=qs[_0xdaa7('0x3a')](_0x3852e1[_0xdaa7('0x31')][_0xdaa7('0x3a')]);_0x240afa[_0xdaa7('0x3b')]=qs[_0xdaa7('0x32')](_['pick'](_0x3852e1[_0xdaa7('0x31')],_0x264259[_0xdaa7('0x32')]));if(_0x3852e1[_0xdaa7('0x31')][_0xdaa7('0x3c')]){_0x240afa[_0xdaa7('0x3b')]=_['merge'](_0x240afa[_0xdaa7('0x3b')],{'$or':_['map'](_0x240afa[_0xdaa7('0x34')],function(_0x345275){var _0x53876b={};_0x53876b[_0x345275]={'$like':'%'+_0x3852e1[_0xdaa7('0x31')][_0xdaa7('0x3c')]+'%'};return _0x53876b;})});}_0x240afa=_['merge']({},_0x240afa,_0x3852e1['options']);return _0x17cf60[_0xdaa7('0x4a')](_0x240afa);}})['then'](function(_0x528b41){if(_0x528b41){_0x307c2d=_0x528b41[_0xdaa7('0x36')];if(!_0x3852e1[_0xdaa7('0x31')][_0xdaa7('0x37')](_0xdaa7('0x38'))){_0x240afa[_0xdaa7('0x1f')]=qs['limit'](_0x3852e1[_0xdaa7('0x31')]['limit']);_0x240afa['offset']=qs[_0xdaa7('0x1c')](_0x3852e1['query'][_0xdaa7('0x1c')]);}return _0x17cf60['getSubjects'](_0x240afa);}})[_0xdaa7('0x25')](function(_0x59409b){if(_0x59409b){return _0x59409b?{'count':_0x307c2d,'rows':_0x59409b}:null;}})[_0xdaa7('0x25')](respondWithResult(_0x506896,null))[_0xdaa7('0x45')](handleError(_0x506896,null));};exports[_0xdaa7('0x4b')]=function(_0x3767ac,_0x3a807a,_0x5eeb91){var _0xe39d8e={};var _0x56a1f1={};var _0x241318;var _0x216f65;return db[_0xdaa7('0x2b')][_0xdaa7('0x48')]({'where':{'id':_0x3767ac[_0xdaa7('0x42')]['id']}})['then'](handleEntityNotFound(_0x3a807a,null))['then'](function(_0x4055c5){if(_0x4055c5){_0x241318=_0x4055c5;_0x56a1f1[_0xdaa7('0x30')]=_[_0xdaa7('0x43')](db[_0xdaa7('0x49')][_0xdaa7('0x2c')]);_0x56a1f1[_0xdaa7('0x31')]=_[_0xdaa7('0x43')](_0x3767ac[_0xdaa7('0x31')]);_0x56a1f1[_0xdaa7('0x32')]=_[_0xdaa7('0x33')](_0x56a1f1[_0xdaa7('0x30')],_0x56a1f1[_0xdaa7('0x31')]);_0xe39d8e[_0xdaa7('0x34')]=_['intersection'](_0x56a1f1[_0xdaa7('0x30')],qs[_0xdaa7('0x35')](_0x3767ac[_0xdaa7('0x31')][_0xdaa7('0x35')]));_0xe39d8e[_0xdaa7('0x34')]=_0xe39d8e[_0xdaa7('0x34')][_0xdaa7('0x36')]?_0xe39d8e[_0xdaa7('0x34')]:_0x56a1f1[_0xdaa7('0x30')];_0xe39d8e['order']=qs[_0xdaa7('0x3a')](_0x3767ac[_0xdaa7('0x31')][_0xdaa7('0x3a')]);_0xe39d8e[_0xdaa7('0x3b')]=qs[_0xdaa7('0x32')](_[_0xdaa7('0x4c')](_0x3767ac['query'],_0x56a1f1['filters']));if(_0x3767ac[_0xdaa7('0x31')][_0xdaa7('0x3c')]){_0xe39d8e[_0xdaa7('0x3b')]=_['merge'](_0xe39d8e[_0xdaa7('0x3b')],{'$or':_['map'](_0xe39d8e[_0xdaa7('0x34')],function(_0x114868){var _0x10bf0a={};_0x10bf0a[_0x114868]={'$like':'%'+_0x3767ac['query']['filter']+'%'};return _0x10bf0a;})});}_0xe39d8e=_[_0xdaa7('0x4d')]({},_0xe39d8e,_0x3767ac[_0xdaa7('0x3e')]);return _0x241318[_0xdaa7('0x4b')](_0xe39d8e);}})[_0xdaa7('0x25')](function(_0x48f7ce){if(_0x48f7ce){_0x216f65=_0x48f7ce[_0xdaa7('0x36')];if(!_0x3767ac[_0xdaa7('0x31')]['hasOwnProperty']('nolimit')){_0xe39d8e[_0xdaa7('0x1f')]=qs[_0xdaa7('0x1f')](_0x3767ac[_0xdaa7('0x31')][_0xdaa7('0x1f')]);_0xe39d8e[_0xdaa7('0x1c')]=qs[_0xdaa7('0x1c')](_0x3767ac[_0xdaa7('0x31')][_0xdaa7('0x1c')]);}return _0x241318[_0xdaa7('0x4b')](_0xe39d8e);}})[_0xdaa7('0x25')](function(_0x2b3aa8){if(_0x2b3aa8){return _0x2b3aa8?{'count':_0x216f65,'rows':_0x2b3aa8}:null;}})['then'](respondWithResult(_0x3a807a,null))[_0xdaa7('0x45')](handleError(_0x3a807a,null));};exports[_0xdaa7('0x4e')]=function(_0xc2a2d0,_0x5f45aa,_0x2c6c73){var _0x31f7a4={};var _0xc7a8ad={};var _0x2feb7d;var _0x5aad2a;return db[_0xdaa7('0x2b')][_0xdaa7('0x48')]({'where':{'id':_0xc2a2d0[_0xdaa7('0x42')]['id']}})[_0xdaa7('0x25')](handleEntityNotFound(_0x5f45aa,null))['then'](function(_0x2db265){if(_0x2db265){_0x2feb7d=_0x2db265;_0xc7a8ad['model']=_['keys'](db[_0xdaa7('0x49')][_0xdaa7('0x2c')]);_0xc7a8ad[_0xdaa7('0x31')]=_[_0xdaa7('0x43')](_0xc2a2d0[_0xdaa7('0x31')]);_0xc7a8ad[_0xdaa7('0x32')]=_['intersection'](_0xc7a8ad['model'],_0xc7a8ad[_0xdaa7('0x31')]);_0x31f7a4[_0xdaa7('0x34')]=_[_0xdaa7('0x33')](_0xc7a8ad[_0xdaa7('0x30')],qs['fields'](_0xc2a2d0[_0xdaa7('0x31')][_0xdaa7('0x35')]));_0x31f7a4[_0xdaa7('0x34')]=_0x31f7a4['attributes'][_0xdaa7('0x36')]?_0x31f7a4[_0xdaa7('0x34')]:_0xc7a8ad['model'];_0x31f7a4[_0xdaa7('0x39')]=qs[_0xdaa7('0x3a')](_0xc2a2d0[_0xdaa7('0x31')][_0xdaa7('0x3a')]);_0x31f7a4[_0xdaa7('0x3b')]=qs[_0xdaa7('0x32')](_[_0xdaa7('0x4c')](_0xc2a2d0['query'],_0xc7a8ad[_0xdaa7('0x32')]));if(_0xc2a2d0[_0xdaa7('0x31')]['filter']){_0x31f7a4['where']=_[_0xdaa7('0x4d')](_0x31f7a4[_0xdaa7('0x3b')],{'$or':_[_0xdaa7('0x2a')](_0x31f7a4[_0xdaa7('0x34')],function(_0x33dc59){var _0x35e601={};_0x35e601[_0x33dc59]={'$like':'%'+_0xc2a2d0[_0xdaa7('0x31')]['filter']+'%'};return _0x35e601;})});}_0x31f7a4=_[_0xdaa7('0x4d')]({},_0x31f7a4,_0xc2a2d0[_0xdaa7('0x3e')]);return _0x2feb7d[_0xdaa7('0x4e')](_0x31f7a4);}})['then'](function(_0xc936df){if(_0xc936df){_0x5aad2a=_0xc936df[_0xdaa7('0x36')];if(!_0xc2a2d0[_0xdaa7('0x31')][_0xdaa7('0x37')](_0xdaa7('0x38'))){_0x31f7a4[_0xdaa7('0x1f')]=qs[_0xdaa7('0x1f')](_0xc2a2d0['query'][_0xdaa7('0x1f')]);_0x31f7a4[_0xdaa7('0x1c')]=qs[_0xdaa7('0x1c')](_0xc2a2d0[_0xdaa7('0x31')][_0xdaa7('0x1c')]);}return _0x2feb7d['getFields'](_0x31f7a4);}})[_0xdaa7('0x25')](function(_0x122614){if(_0x122614){return _0x122614?{'count':_0x5aad2a,'rows':_0x122614}:null;}})[_0xdaa7('0x25')](respondWithResult(_0x5f45aa,null))['catch'](handleError(_0x5f45aa,null));};
\ No newline at end of file
+var _0x5317=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','then','destroy','error','stack','name','send','index','fieldName','type','model','map','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','FreshsalesConfiguration','includeAll','findAll','rows','catch','show','params','keys','rawAttributes','include','find','create','body','getSubjects','findOne','getDescriptions','getFields','FreshsalesField','eml-format','rimraf','zip-dir','fast-json-patch','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'];(function(_0x5cc9ae,_0x116739){var _0xef9aa1=function(_0x403b0c){while(--_0x403b0c){_0x5cc9ae['push'](_0x5cc9ae['shift']());}};_0xef9aa1(++_0x116739);}(_0x5317,0x18a));var _0x7531=function(_0x466d36,_0xfb512c){_0x466d36=_0x466d36-0x0;var _0x19ab6f=_0x5317[_0x466d36];return _0x19ab6f;};'use strict';var emlformat=require(_0x7531('0x0'));var rimraf=require(_0x7531('0x1'));var zipdir=require(_0x7531('0x2'));var jsonpatch=require(_0x7531('0x3'));var rp=require(_0x7531('0x4'));var moment=require(_0x7531('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x7531('0x6'));var path=require(_0x7531('0x7'));var sox=require(_0x7531('0x8'));var csv=require(_0x7531('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7531('0xa'));var _=require(_0x7531('0xb'));var squel=require(_0x7531('0xc'));var crypto=require(_0x7531('0xd'));var jsforce=require(_0x7531('0xe'));var deskjs=require(_0x7531('0xf'));var toCsv=require(_0x7531('0x9'));var querystring=require(_0x7531('0x10'));var Papa=require(_0x7531('0x11'));var Redis=require(_0x7531('0x12'));var authService=require(_0x7531('0x13'));var qs=require(_0x7531('0x14'));var as=require(_0x7531('0x15'));var hardwareService=require(_0x7531('0x16'));var logger=require(_0x7531('0x17'))(_0x7531('0x18'));var utils=require('../../config/utils');var config=require(_0x7531('0x19'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x43b60a,_0x4fec56){_0x4fec56=_0x4fec56||0xcc;return function(_0x324aa1){if(_0x324aa1){return _0x43b60a[_0x7531('0x1a')](_0x4fec56);}return _0x43b60a[_0x7531('0x1b')](_0x4fec56)[_0x7531('0x1c')]();};}function respondWithResult(_0x35e738,_0x4b6646){_0x4b6646=_0x4b6646||0xc8;return function(_0x2d952c){if(_0x2d952c){return _0x35e738[_0x7531('0x1b')](_0x4b6646)[_0x7531('0x1d')](_0x2d952c);}};}function respondWithFilteredResult(_0x1e8557,_0x151bb8){return function(_0x3bc20a){if(_0x3bc20a){var _0x3df9ea=typeof _0x151bb8[_0x7531('0x1e')]===_0x7531('0x1f')&&typeof _0x151bb8['limit']===_0x7531('0x1f');var _0x274d73=_0x3bc20a[_0x7531('0x20')];var _0x4a1874=_0x3df9ea?0x0:_0x151bb8[_0x7531('0x1e')];var _0x499392=_0x3df9ea?_0x3bc20a[_0x7531('0x20')]:_0x151bb8[_0x7531('0x1e')]+_0x151bb8[_0x7531('0x21')];var _0x262ca3;if(_0x499392>=_0x274d73){_0x499392=_0x274d73;_0x262ca3=0xc8;}else{_0x262ca3=0xce;}_0x1e8557['status'](_0x262ca3);return _0x1e8557[_0x7531('0x22')](_0x7531('0x23'),_0x4a1874+'-'+_0x499392+'/'+_0x274d73)['json'](_0x3bc20a);}return null;};}function patchUpdates(_0xdbcd32){return function(_0x343bb0){try{jsonpatch['apply'](_0x343bb0,_0xdbcd32,!![]);}catch(_0x244f67){return BPromise[_0x7531('0x24')](_0x244f67);}return _0x343bb0[_0x7531('0x25')]();};}function saveUpdates(_0x55505d,_0x4c6c24){return function(_0x3b615d){if(_0x3b615d){return _0x3b615d['update'](_0x55505d)[_0x7531('0x26')](function(_0x44e184){return _0x44e184;});}return null;};}function removeEntity(_0xee4945,_0x4dab6a){return function(_0x453821){if(_0x453821){return _0x453821[_0x7531('0x27')]()[_0x7531('0x26')](function(){_0xee4945[_0x7531('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1441e5,_0x3a5ef1){return function(_0x103230){if(!_0x103230){_0x1441e5[_0x7531('0x1a')](0x194);}return _0x103230;};}function handleError(_0x18e964,_0x37f7be){_0x37f7be=_0x37f7be||0x1f4;return function(_0x2cf8d8){logger[_0x7531('0x28')](_0x2cf8d8[_0x7531('0x29')]);if(_0x2cf8d8[_0x7531('0x2a')]){delete _0x2cf8d8[_0x7531('0x2a')];}_0x18e964['status'](_0x37f7be)[_0x7531('0x2b')](_0x2cf8d8);};}exports[_0x7531('0x2c')]=function(_0x5d6d37,_0xf79208){var _0x2ce4f5={},_0x4f9044={},_0x48eabe={'count':0x0,'rows':[]};var _0x28c9c3=_['map'](db['FreshsalesConfiguration']['rawAttributes'],function(_0x199801){return{'name':_0x199801[_0x7531('0x2d')],'type':_0x199801[_0x7531('0x2e')]['key']};});_0x4f9044[_0x7531('0x2f')]=_[_0x7531('0x30')](_0x28c9c3,_0x7531('0x2a'));_0x4f9044['query']=_['keys'](_0x5d6d37[_0x7531('0x31')]);_0x4f9044['filters']=_['intersection'](_0x4f9044[_0x7531('0x2f')],_0x4f9044[_0x7531('0x31')]);_0x2ce4f5[_0x7531('0x32')]=_[_0x7531('0x33')](_0x4f9044['model'],qs[_0x7531('0x34')](_0x5d6d37[_0x7531('0x31')][_0x7531('0x34')]));_0x2ce4f5['attributes']=_0x2ce4f5[_0x7531('0x32')][_0x7531('0x35')]?_0x2ce4f5['attributes']:_0x4f9044[_0x7531('0x2f')];if(!_0x5d6d37[_0x7531('0x31')][_0x7531('0x36')](_0x7531('0x37'))){_0x2ce4f5['limit']=qs['limit'](_0x5d6d37[_0x7531('0x31')][_0x7531('0x21')]);_0x2ce4f5[_0x7531('0x1e')]=qs[_0x7531('0x1e')](_0x5d6d37[_0x7531('0x31')]['offset']);}_0x2ce4f5[_0x7531('0x38')]=qs[_0x7531('0x39')](_0x5d6d37[_0x7531('0x31')][_0x7531('0x39')]);_0x2ce4f5[_0x7531('0x3a')]=qs[_0x7531('0x3b')](_[_0x7531('0x3c')](_0x5d6d37['query'],_0x4f9044[_0x7531('0x3b')]),_0x28c9c3);if(_0x5d6d37[_0x7531('0x31')][_0x7531('0x3d')]){_0x2ce4f5[_0x7531('0x3a')]=_['merge'](_0x2ce4f5[_0x7531('0x3a')],{'$or':_[_0x7531('0x30')](_0x28c9c3,function(_0x3c393d){if(_0x3c393d[_0x7531('0x2e')]!==_0x7531('0x3e')){var _0xc096ae={};_0xc096ae[_0x3c393d[_0x7531('0x2a')]]={'$like':'%'+_0x5d6d37[_0x7531('0x31')][_0x7531('0x3d')]+'%'};return _0xc096ae;}})});}_0x2ce4f5=_[_0x7531('0x3f')]({},_0x2ce4f5,_0x5d6d37[_0x7531('0x40')]);var _0xc91b6a={'where':_0x2ce4f5[_0x7531('0x3a')]};return db[_0x7531('0x41')][_0x7531('0x20')](_0xc91b6a)[_0x7531('0x26')](function(_0x5181b1){_0x48eabe[_0x7531('0x20')]=_0x5181b1;if(_0x5d6d37[_0x7531('0x31')][_0x7531('0x42')]){_0x2ce4f5['include']=[{'all':!![]}];}return db[_0x7531('0x41')][_0x7531('0x43')](_0x2ce4f5);})['then'](function(_0xc3d1d7){_0x48eabe[_0x7531('0x44')]=_0xc3d1d7;return _0x48eabe;})[_0x7531('0x26')](respondWithFilteredResult(_0xf79208,_0x2ce4f5))[_0x7531('0x45')](handleError(_0xf79208,null));};exports[_0x7531('0x46')]=function(_0x476498,_0x377acf){var _0x361f2d={'raw':![],'where':{'id':_0x476498[_0x7531('0x47')]['id']}},_0x110e46={};_0x110e46[_0x7531('0x2f')]=_[_0x7531('0x48')](db['FreshsalesConfiguration'][_0x7531('0x49')]);_0x110e46[_0x7531('0x31')]=_[_0x7531('0x48')](_0x476498['query']);_0x110e46[_0x7531('0x3b')]=_[_0x7531('0x33')](_0x110e46[_0x7531('0x2f')],_0x110e46[_0x7531('0x31')]);_0x361f2d['attributes']=_[_0x7531('0x33')](_0x110e46[_0x7531('0x2f')],qs[_0x7531('0x34')](_0x476498[_0x7531('0x31')][_0x7531('0x34')]));_0x361f2d['attributes']=_0x361f2d[_0x7531('0x32')][_0x7531('0x35')]?_0x361f2d[_0x7531('0x32')]:_0x110e46[_0x7531('0x2f')];if(_0x476498['query']['includeAll']){_0x361f2d[_0x7531('0x4a')]=[{'all':!![]}];}_0x361f2d=_[_0x7531('0x3f')]({},_0x361f2d,_0x476498['options']);return db[_0x7531('0x41')][_0x7531('0x4b')](_0x361f2d)[_0x7531('0x26')](handleEntityNotFound(_0x377acf,null))['then'](respondWithResult(_0x377acf,null))[_0x7531('0x45')](handleError(_0x377acf,null));};exports[_0x7531('0x4c')]=function(_0x7f49d2,_0x1e003f){return db['FreshsalesConfiguration']['create'](_0x7f49d2[_0x7531('0x4d')],{})[_0x7531('0x26')](respondWithResult(_0x1e003f,0xc9))[_0x7531('0x45')](handleError(_0x1e003f,null));};exports['update']=function(_0x4d8c18,_0x13aa6a){if(_0x4d8c18[_0x7531('0x4d')]['id']){delete _0x4d8c18[_0x7531('0x4d')]['id'];}return db[_0x7531('0x41')]['find']({'where':{'id':_0x4d8c18[_0x7531('0x47')]['id']}})[_0x7531('0x26')](handleEntityNotFound(_0x13aa6a,null))[_0x7531('0x26')](saveUpdates(_0x4d8c18[_0x7531('0x4d')],null))[_0x7531('0x26')](respondWithResult(_0x13aa6a,null))[_0x7531('0x45')](handleError(_0x13aa6a,null));};exports[_0x7531('0x27')]=function(_0x17c0c6,_0x9f0a00){return db[_0x7531('0x41')][_0x7531('0x4b')]({'where':{'id':_0x17c0c6['params']['id']}})[_0x7531('0x26')](handleEntityNotFound(_0x9f0a00,null))['then'](removeEntity(_0x9f0a00,null))[_0x7531('0x45')](handleError(_0x9f0a00,null));};exports[_0x7531('0x4e')]=function(_0x158cfa,_0x5d4d1d,_0x26c335){var _0x1b9d7f={};var _0x270796={};var _0x4ab4cf;var _0x5ea72e;return db[_0x7531('0x41')][_0x7531('0x4f')]({'where':{'id':_0x158cfa[_0x7531('0x47')]['id']}})[_0x7531('0x26')](handleEntityNotFound(_0x5d4d1d,null))[_0x7531('0x26')](function(_0x74b76d){if(_0x74b76d){_0x4ab4cf=_0x74b76d;_0x270796[_0x7531('0x2f')]=_[_0x7531('0x48')](db['FreshsalesField'][_0x7531('0x49')]);_0x270796['query']=_[_0x7531('0x48')](_0x158cfa[_0x7531('0x31')]);_0x270796[_0x7531('0x3b')]=_[_0x7531('0x33')](_0x270796[_0x7531('0x2f')],_0x270796[_0x7531('0x31')]);_0x1b9d7f[_0x7531('0x32')]=_[_0x7531('0x33')](_0x270796[_0x7531('0x2f')],qs[_0x7531('0x34')](_0x158cfa[_0x7531('0x31')]['fields']));_0x1b9d7f[_0x7531('0x32')]=_0x1b9d7f['attributes']['length']?_0x1b9d7f[_0x7531('0x32')]:_0x270796[_0x7531('0x2f')];_0x1b9d7f['order']=qs['sort'](_0x158cfa[_0x7531('0x31')]['sort']);_0x1b9d7f[_0x7531('0x3a')]=qs[_0x7531('0x3b')](_[_0x7531('0x3c')](_0x158cfa[_0x7531('0x31')],_0x270796[_0x7531('0x3b')]));if(_0x158cfa['query'][_0x7531('0x3d')]){_0x1b9d7f[_0x7531('0x3a')]=_['merge'](_0x1b9d7f[_0x7531('0x3a')],{'$or':_[_0x7531('0x30')](_0x1b9d7f['attributes'],function(_0x26ab79){var _0x2cb73a={};_0x2cb73a[_0x26ab79]={'$like':'%'+_0x158cfa[_0x7531('0x31')][_0x7531('0x3d')]+'%'};return _0x2cb73a;})});}_0x1b9d7f=_[_0x7531('0x3f')]({},_0x1b9d7f,_0x158cfa[_0x7531('0x40')]);return _0x4ab4cf[_0x7531('0x4e')](_0x1b9d7f);}})[_0x7531('0x26')](function(_0x5d4baa){if(_0x5d4baa){_0x5ea72e=_0x5d4baa[_0x7531('0x35')];if(!_0x158cfa[_0x7531('0x31')][_0x7531('0x36')](_0x7531('0x37'))){_0x1b9d7f[_0x7531('0x21')]=qs[_0x7531('0x21')](_0x158cfa[_0x7531('0x31')][_0x7531('0x21')]);_0x1b9d7f['offset']=qs['offset'](_0x158cfa['query'][_0x7531('0x1e')]);}return _0x4ab4cf[_0x7531('0x4e')](_0x1b9d7f);}})[_0x7531('0x26')](function(_0x49c7fa){if(_0x49c7fa){return _0x49c7fa?{'count':_0x5ea72e,'rows':_0x49c7fa}:null;}})['then'](respondWithResult(_0x5d4d1d,null))['catch'](handleError(_0x5d4d1d,null));};exports[_0x7531('0x50')]=function(_0x27e016,_0x2e951c,_0x536cdb){var _0x1b130e={};var _0x1bdac9={};var _0x5208b1;var _0x1358ff;return db[_0x7531('0x41')][_0x7531('0x4f')]({'where':{'id':_0x27e016[_0x7531('0x47')]['id']}})[_0x7531('0x26')](handleEntityNotFound(_0x2e951c,null))['then'](function(_0x484314){if(_0x484314){_0x5208b1=_0x484314;_0x1bdac9[_0x7531('0x2f')]=_['keys'](db['FreshsalesField'][_0x7531('0x49')]);_0x1bdac9[_0x7531('0x31')]=_[_0x7531('0x48')](_0x27e016['query']);_0x1bdac9[_0x7531('0x3b')]=_[_0x7531('0x33')](_0x1bdac9[_0x7531('0x2f')],_0x1bdac9[_0x7531('0x31')]);_0x1b130e[_0x7531('0x32')]=_[_0x7531('0x33')](_0x1bdac9['model'],qs[_0x7531('0x34')](_0x27e016[_0x7531('0x31')][_0x7531('0x34')]));_0x1b130e[_0x7531('0x32')]=_0x1b130e[_0x7531('0x32')][_0x7531('0x35')]?_0x1b130e[_0x7531('0x32')]:_0x1bdac9['model'];_0x1b130e[_0x7531('0x38')]=qs['sort'](_0x27e016[_0x7531('0x31')]['sort']);_0x1b130e[_0x7531('0x3a')]=qs[_0x7531('0x3b')](_['pick'](_0x27e016[_0x7531('0x31')],_0x1bdac9[_0x7531('0x3b')]));if(_0x27e016[_0x7531('0x31')][_0x7531('0x3d')]){_0x1b130e['where']=_[_0x7531('0x3f')](_0x1b130e[_0x7531('0x3a')],{'$or':_[_0x7531('0x30')](_0x1b130e[_0x7531('0x32')],function(_0x25476a){var _0x3422af={};_0x3422af[_0x25476a]={'$like':'%'+_0x27e016[_0x7531('0x31')][_0x7531('0x3d')]+'%'};return _0x3422af;})});}_0x1b130e=_[_0x7531('0x3f')]({},_0x1b130e,_0x27e016['options']);return _0x5208b1[_0x7531('0x50')](_0x1b130e);}})[_0x7531('0x26')](function(_0x5d1ce0){if(_0x5d1ce0){_0x1358ff=_0x5d1ce0[_0x7531('0x35')];if(!_0x27e016['query']['hasOwnProperty'](_0x7531('0x37'))){_0x1b130e[_0x7531('0x21')]=qs[_0x7531('0x21')](_0x27e016[_0x7531('0x31')][_0x7531('0x21')]);_0x1b130e[_0x7531('0x1e')]=qs[_0x7531('0x1e')](_0x27e016[_0x7531('0x31')][_0x7531('0x1e')]);}return _0x5208b1['getDescriptions'](_0x1b130e);}})['then'](function(_0x238916){if(_0x238916){return _0x238916?{'count':_0x1358ff,'rows':_0x238916}:null;}})['then'](respondWithResult(_0x2e951c,null))[_0x7531('0x45')](handleError(_0x2e951c,null));};exports[_0x7531('0x51')]=function(_0x50f189,_0x4f3fa5,_0x2516b7){var _0x37b8f3={};var _0x4befbb={};var _0x237b47;var _0x5b164a;return db[_0x7531('0x41')][_0x7531('0x4f')]({'where':{'id':_0x50f189[_0x7531('0x47')]['id']}})['then'](handleEntityNotFound(_0x4f3fa5,null))['then'](function(_0x3d108f){if(_0x3d108f){_0x237b47=_0x3d108f;_0x4befbb[_0x7531('0x2f')]=_['keys'](db[_0x7531('0x52')]['rawAttributes']);_0x4befbb[_0x7531('0x31')]=_[_0x7531('0x48')](_0x50f189[_0x7531('0x31')]);_0x4befbb['filters']=_['intersection'](_0x4befbb[_0x7531('0x2f')],_0x4befbb[_0x7531('0x31')]);_0x37b8f3[_0x7531('0x32')]=_['intersection'](_0x4befbb[_0x7531('0x2f')],qs[_0x7531('0x34')](_0x50f189[_0x7531('0x31')]['fields']));_0x37b8f3[_0x7531('0x32')]=_0x37b8f3[_0x7531('0x32')]['length']?_0x37b8f3[_0x7531('0x32')]:_0x4befbb[_0x7531('0x2f')];_0x37b8f3['order']=qs[_0x7531('0x39')](_0x50f189['query'][_0x7531('0x39')]);_0x37b8f3[_0x7531('0x3a')]=qs['filters'](_['pick'](_0x50f189['query'],_0x4befbb[_0x7531('0x3b')]));if(_0x50f189['query'][_0x7531('0x3d')]){_0x37b8f3[_0x7531('0x3a')]=_[_0x7531('0x3f')](_0x37b8f3[_0x7531('0x3a')],{'$or':_[_0x7531('0x30')](_0x37b8f3['attributes'],function(_0x99e16d){var _0x1efe71={};_0x1efe71[_0x99e16d]={'$like':'%'+_0x50f189[_0x7531('0x31')][_0x7531('0x3d')]+'%'};return _0x1efe71;})});}_0x37b8f3=_[_0x7531('0x3f')]({},_0x37b8f3,_0x50f189[_0x7531('0x40')]);return _0x237b47[_0x7531('0x51')](_0x37b8f3);}})[_0x7531('0x26')](function(_0x2a36a4){if(_0x2a36a4){_0x5b164a=_0x2a36a4[_0x7531('0x35')];if(!_0x50f189[_0x7531('0x31')][_0x7531('0x36')]('nolimit')){_0x37b8f3[_0x7531('0x21')]=qs[_0x7531('0x21')](_0x50f189['query'][_0x7531('0x21')]);_0x37b8f3[_0x7531('0x1e')]=qs[_0x7531('0x1e')](_0x50f189[_0x7531('0x31')][_0x7531('0x1e')]);}return _0x237b47[_0x7531('0x51')](_0x37b8f3);}})['then'](function(_0x5b8030){if(_0x5b8030){return _0x5b8030?{'count':_0x5b164a,'rows':_0x5b8030}:null;}})[_0x7531('0x26')](respondWithResult(_0x4f3fa5,null))['catch'](handleError(_0x4f3fa5,null));};
\ No newline at end of file
index dc8898c..d7e6677 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ccf=['request-promise','path','rimraf','../../config/environment','./intFreshsalesConfiguration.attributes','FreshsalesConfiguration','int_freshsales_configurations','lodash','util','api','moment'];(function(_0x1e3c16,_0x372caa){var _0x47a0c9=function(_0x47f81d){while(--_0x47f81d){_0x1e3c16['push'](_0x1e3c16['shift']());}};_0x47a0c9(++_0x372caa);}(_0x2ccf,0x6a));var _0xf2cc=function(_0x2cec0d,_0x5ea35a){_0x2cec0d=_0x2cec0d-0x0;var _0x862aee=_0x2ccf[_0x2cec0d];return _0x862aee;};'use strict';var _=require(_0xf2cc('0x0'));var util=require(_0xf2cc('0x1'));var logger=require('../../config/logger')(_0xf2cc('0x2'));var moment=require(_0xf2cc('0x3'));var BPromise=require('bluebird');var rp=require(_0xf2cc('0x4'));var fs=require('fs');var path=require(_0xf2cc('0x5'));var rimraf=require(_0xf2cc('0x6'));var config=require(_0xf2cc('0x7'));var attributes=require(_0xf2cc('0x8'));module['exports']=function(_0x1793a1,_0x2807fd){return _0x1793a1['define'](_0xf2cc('0x9'),attributes,{'tableName':_0xf2cc('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5304=['api','request-promise','path','rimraf','../../config/environment','./intFreshsalesConfiguration.attributes','define','FreshsalesConfiguration','util'];(function(_0x82140,_0x3a9d87){var _0x2b15a6=function(_0x2b565e){while(--_0x2b565e){_0x82140['push'](_0x82140['shift']());}};_0x2b15a6(++_0x3a9d87);}(_0x5304,0x15e));var _0x4530=function(_0x5c9307,_0x5b97e4){_0x5c9307=_0x5c9307-0x0;var _0x373e29=_0x5304[_0x5c9307];return _0x373e29;};'use strict';var _=require('lodash');var util=require(_0x4530('0x0'));var logger=require('../../config/logger')(_0x4530('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x4530('0x2'));var fs=require('fs');var path=require(_0x4530('0x3'));var rimraf=require(_0x4530('0x4'));var config=require(_0x4530('0x5'));var attributes=require(_0x4530('0x6'));module['exports']=function(_0x5ae286,_0x59e547){return _0x5ae286[_0x4530('0x7')](_0x4530('0x8'),attributes,{'tableName':'int_freshsales_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1a9061a..6dc1615 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7765=['debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','error','message','info','result','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request','then','FreshsalesConfiguration,\x20%s,\x20%s','request\x20sent'];(function(_0x3a3420,_0x21c7b4){var _0x555706=function(_0x1256b0){while(--_0x1256b0){_0x3a3420['push'](_0x3a3420['shift']());}};_0x555706(++_0x21c7b4);}(_0x7765,0xc3));var _0x5776=function(_0x58e290,_0x40a87a){_0x58e290=_0x58e290-0x0;var _0x4f7473=_0x7765[_0x58e290];return _0x4f7473;};'use strict';var _=require(_0x5776('0x0'));var util=require(_0x5776('0x1'));var moment=require(_0x5776('0x2'));var BPromise=require(_0x5776('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5776('0x4'));var db=require(_0x5776('0x5'))['db'];var utils=require(_0x5776('0x6'));var logger=require(_0x5776('0x7'))(_0x5776('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x5776('0x9')][_0x5776('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x49b2cc,_0x57d2f9,_0x2cd28e){return new BPromise(function(_0x1cfc42,_0x281417){return client[_0x5776('0xb')](_0x49b2cc,_0x2cd28e)[_0x5776('0xc')](function(_0x35fe57){logger['info'](_0x5776('0xd'),_0x57d2f9,_0x5776('0xe'));logger[_0x5776('0xf')](_0x5776('0x10'),_0x57d2f9,'request\x20sent',JSON['stringify'](_0x35fe57));if(_0x35fe57[_0x5776('0x11')]){if(_0x35fe57[_0x5776('0x11')]['code']===0x1f4){logger[_0x5776('0x11')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x57d2f9,_0x35fe57[_0x5776('0x11')]['message']);return _0x281417(_0x35fe57[_0x5776('0x11')][_0x5776('0x12')]);}logger[_0x5776('0x11')](_0x5776('0xd'),_0x57d2f9,_0x35fe57[_0x5776('0x11')]['message']);return _0x1cfc42(_0x35fe57['error']['message']);}else{logger[_0x5776('0x13')](_0x5776('0xd'),_0x57d2f9,_0x5776('0xe'));_0x1cfc42(_0x35fe57[_0x5776('0x14')][_0x5776('0x12')]);}})['catch'](function(_0x53d5f4){logger[_0x5776('0x11')](_0x5776('0xd'),_0x57d2f9,_0x53d5f4);_0x281417(_0x53d5f4);});});}
\ No newline at end of file
+var _0xe1fe=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','then','info','FreshsalesConfiguration,\x20%s,\x20%s','request\x20sent','debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','lodash','util','moment','bluebird','ioredis'];(function(_0x25d4ee,_0xc95872){var _0x214a35=function(_0x4285a0){while(--_0x4285a0){_0x25d4ee['push'](_0x25d4ee['shift']());}};_0x214a35(++_0xc95872);}(_0xe1fe,0xb8));var _0xee1f=function(_0x19111f,_0x560f32){_0x19111f=_0x19111f-0x0;var _0x5f27a5=_0xe1fe[_0x19111f];return _0x5f27a5;};'use strict';var _=require(_0xee1f('0x0'));var util=require(_0xee1f('0x1'));var moment=require(_0xee1f('0x2'));var BPromise=require(_0xee1f('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xee1f('0x4'));var db=require(_0xee1f('0x5'))['db'];var utils=require(_0xee1f('0x6'));var logger=require(_0xee1f('0x7'))(_0xee1f('0x8'));var config=require(_0xee1f('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xee1f('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x341b85,_0x4c0e3e,_0x525cd9){return new BPromise(function(_0x322fa3,_0x2f75a7){return client['request'](_0x341b85,_0x525cd9)[_0xee1f('0xb')](function(_0x3eda72){logger[_0xee1f('0xc')](_0xee1f('0xd'),_0x4c0e3e,_0xee1f('0xe'));logger[_0xee1f('0xf')](_0xee1f('0x10'),_0x4c0e3e,_0xee1f('0xe'),JSON[_0xee1f('0x11')](_0x3eda72));if(_0x3eda72[_0xee1f('0x12')]){if(_0x3eda72['error'][_0xee1f('0x13')]===0x1f4){logger['error']('FreshsalesConfiguration,\x20%s,\x20%s',_0x4c0e3e,_0x3eda72[_0xee1f('0x12')][_0xee1f('0x14')]);return _0x2f75a7(_0x3eda72[_0xee1f('0x12')][_0xee1f('0x14')]);}logger[_0xee1f('0x12')](_0xee1f('0xd'),_0x4c0e3e,_0x3eda72['error'][_0xee1f('0x14')]);return _0x322fa3(_0x3eda72[_0xee1f('0x12')][_0xee1f('0x14')]);}else{logger[_0xee1f('0xc')](_0xee1f('0xd'),_0x4c0e3e,'request\x20sent');_0x322fa3(_0x3eda72['result'][_0xee1f('0x14')]);}})['catch'](function(_0x42f9a9){logger[_0xee1f('0x12')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x4c0e3e,_0x42f9a9);_0x2f75a7(_0x42f9a9);});});}
\ No newline at end of file
index 1f3ddbd..59be1c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5825=['../../components/interaction/service','../../config/environment','./intFreshsalesField.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','../../components/auth/service'];(function(_0x5cb93d,_0x4394e0){var _0x1e536a=function(_0x21483d){while(--_0x21483d){_0x5cb93d['push'](_0x5cb93d['shift']());}};_0x1e536a(++_0x4394e0);}(_0x5825,0x78));var _0x5582=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x5825[_0x57b54c];return _0x59cc19;};'use strict';var multer=require(_0x5582('0x0'));var util=require(_0x5582('0x1'));var path=require(_0x5582('0x2'));var timeout=require(_0x5582('0x3'));var express=require('express');var router=express[_0x5582('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x5582('0x5'));var interaction=require(_0x5582('0x6'));var config=require(_0x5582('0x7'));var controller=require(_0x5582('0x8'));router[_0x5582('0x9')]('/',auth[_0x5582('0xa')](),controller[_0x5582('0xb')]);router['get'](_0x5582('0xc'),auth[_0x5582('0xa')](),controller[_0x5582('0xd')]);router[_0x5582('0xe')]('/',auth['isAuthenticated'](),controller[_0x5582('0xf')]);router[_0x5582('0x10')](_0x5582('0xc'),auth['isAuthenticated'](),controller[_0x5582('0x11')]);router[_0x5582('0x12')](_0x5582('0xc'),auth['isAuthenticated'](),controller[_0x5582('0x13')]);module[_0x5582('0x14')]=router;
\ No newline at end of file
+var _0x1f38=['create','put','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesField.controller','get','index','/:id','isAuthenticated','show','post'];(function(_0x4e4be0,_0x4b1549){var _0x4c0efd=function(_0x4eb504){while(--_0x4eb504){_0x4e4be0['push'](_0x4e4be0['shift']());}};_0x4c0efd(++_0x4b1549);}(_0x1f38,0xd7));var _0x81f3=function(_0x15df7f,_0x318875){_0x15df7f=_0x15df7f-0x0;var _0x2cb715=_0x1f38[_0x15df7f];return _0x2cb715;};'use strict';var multer=require(_0x81f3('0x0'));var util=require(_0x81f3('0x1'));var path=require(_0x81f3('0x2'));var timeout=require(_0x81f3('0x3'));var express=require(_0x81f3('0x4'));var router=express[_0x81f3('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x81f3('0x6'));var interaction=require(_0x81f3('0x7'));var config=require(_0x81f3('0x8'));var controller=require(_0x81f3('0x9'));router[_0x81f3('0xa')]('/',auth['isAuthenticated'](),controller[_0x81f3('0xb')]);router[_0x81f3('0xa')](_0x81f3('0xc'),auth[_0x81f3('0xd')](),controller[_0x81f3('0xe')]);router[_0x81f3('0xf')]('/',auth[_0x81f3('0xd')](),controller[_0x81f3('0x10')]);router[_0x81f3('0x11')](_0x81f3('0xc'),auth[_0x81f3('0xd')](),controller['update']);router[_0x81f3('0x12')](_0x81f3('0xc'),auth[_0x81f3('0xd')](),controller[_0x81f3('0x13')]);module[_0x81f3('0x14')]=router;
\ No newline at end of file
index 0c931a7..2d6418f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba88=['picklist','STRING','customVariable','sequelize','exports','ENUM','string','variable','keyValue'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xba88,0x11a));var _0x8ba8=function(_0x2aed7f,_0x7bed96){_0x2aed7f=_0x2aed7f-0x0;var _0x1a6e58=_0xba88[_0x2aed7f];return _0x1a6e58;};'use strict';var Sequelize=require(_0x8ba8('0x0'));module[_0x8ba8('0x1')]={'type':{'type':Sequelize[_0x8ba8('0x2')](_0x8ba8('0x3'),_0x8ba8('0x4'),'customVariable',_0x8ba8('0x5'),_0x8ba8('0x6')),'defaultValue':_0x8ba8('0x3')},'content':{'type':Sequelize[_0x8ba8('0x7')]},'key':{'type':Sequelize[_0x8ba8('0x7')]},'keyType':{'type':Sequelize[_0x8ba8('0x2')](_0x8ba8('0x3'),_0x8ba8('0x4'),_0x8ba8('0x8'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x8ba8('0x7')]},'nameField':{'type':Sequelize[_0x8ba8('0x7')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x8ba8('0x7')]}};
\ No newline at end of file
+var _0xa68c=['string','variable','picklist','STRING','ENUM','customVariable','BOOLEAN','exports'];(function(_0x2215ed,_0x85bd3a){var _0x5d7e25=function(_0x5673be){while(--_0x5673be){_0x2215ed['push'](_0x2215ed['shift']());}};_0x5d7e25(++_0x85bd3a);}(_0xa68c,0x15f));var _0xca68=function(_0x55f8b4,_0x43f30d){_0x55f8b4=_0x55f8b4-0x0;var _0x2475f9=_0xa68c[_0x55f8b4];return _0x2475f9;};'use strict';var Sequelize=require('sequelize');module[_0xca68('0x0')]={'type':{'type':Sequelize['ENUM'](_0xca68('0x1'),_0xca68('0x2'),'customVariable','keyValue',_0xca68('0x3')),'defaultValue':_0xca68('0x1')},'content':{'type':Sequelize[_0xca68('0x4')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0xca68('0x5')](_0xca68('0x1'),_0xca68('0x2'),_0xca68('0x6'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0xca68('0x4')]},'customField':{'type':Sequelize[_0xca68('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index e0cce7b..2c61b44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x039c=['map','FreshsalesField','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','show','params','catch','create','body','find','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','destroy','then','error','name','send','index'];(function(_0xa58b3c,_0x57a029){var _0x59152f=function(_0x45d5d7){while(--_0x45d5d7){_0xa58b3c['push'](_0xa58b3c['shift']());}};_0x59152f(++_0x57a029);}(_0x039c,0x14b));var _0xc039=function(_0x24e351,_0x493b49){_0x24e351=_0x24e351-0x0;var _0x13424d=_0x039c[_0x24e351];return _0x13424d;};'use strict';var emlformat=require(_0xc039('0x0'));var rimraf=require(_0xc039('0x1'));var zipdir=require(_0xc039('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc039('0x3'));var moment=require('moment');var BPromise=require(_0xc039('0x4'));var Mustache=require(_0xc039('0x5'));var util=require(_0xc039('0x6'));var path=require(_0xc039('0x7'));var sox=require('sox');var csv=require(_0xc039('0x8'));var ejs=require(_0xc039('0x9'));var fs=require('fs');var fs_extra=require(_0xc039('0xa'));var _=require(_0xc039('0xb'));var squel=require(_0xc039('0xc'));var crypto=require('crypto');var jsforce=require(_0xc039('0xd'));var deskjs=require(_0xc039('0xe'));var toCsv=require(_0xc039('0x8'));var querystring=require(_0xc039('0xf'));var Papa=require(_0xc039('0x10'));var Redis=require('ioredis');var authService=require(_0xc039('0x11'));var qs=require(_0xc039('0x12'));var as=require(_0xc039('0x13'));var hardwareService=require(_0xc039('0x14'));var logger=require(_0xc039('0x15'))(_0xc039('0x16'));var utils=require(_0xc039('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xc039('0x18'))['db'];function respondWithStatusCode(_0x143ca2,_0x58b7a6){_0x58b7a6=_0x58b7a6||0xcc;return function(_0x2b7455){if(_0x2b7455){return _0x143ca2[_0xc039('0x19')](_0x58b7a6);}return _0x143ca2['status'](_0x58b7a6)[_0xc039('0x1a')]();};}function respondWithResult(_0x3f6057,_0x275cbf){_0x275cbf=_0x275cbf||0xc8;return function(_0x224798){if(_0x224798){return _0x3f6057[_0xc039('0x1b')](_0x275cbf)[_0xc039('0x1c')](_0x224798);}};}function respondWithFilteredResult(_0xb31ded,_0x3c2ddd){return function(_0x296463){if(_0x296463){var _0x33044f=typeof _0x3c2ddd[_0xc039('0x1d')]===_0xc039('0x1e')&&typeof _0x3c2ddd[_0xc039('0x1f')]===_0xc039('0x1e');var _0x48ab91=_0x296463['count'];var _0x1e6c5b=_0x33044f?0x0:_0x3c2ddd['offset'];var _0x580fb9=_0x33044f?_0x296463[_0xc039('0x20')]:_0x3c2ddd[_0xc039('0x1d')]+_0x3c2ddd[_0xc039('0x1f')];var _0x3b6ee0;if(_0x580fb9>=_0x48ab91){_0x580fb9=_0x48ab91;_0x3b6ee0=0xc8;}else{_0x3b6ee0=0xce;}_0xb31ded['status'](_0x3b6ee0);return _0xb31ded[_0xc039('0x21')](_0xc039('0x22'),_0x1e6c5b+'-'+_0x580fb9+'/'+_0x48ab91)[_0xc039('0x1c')](_0x296463);}return null;};}function patchUpdates(_0x5c2d9d){return function(_0x42b7b1){try{jsonpatch['apply'](_0x42b7b1,_0x5c2d9d,!![]);}catch(_0x1927bb){return BPromise[_0xc039('0x23')](_0x1927bb);}return _0x42b7b1[_0xc039('0x24')]();};}function saveUpdates(_0x4be87b,_0x551271){return function(_0xe5da20){if(_0xe5da20){return _0xe5da20[_0xc039('0x25')](_0x4be87b)['then'](function(_0x292773){return _0x292773;});}return null;};}function removeEntity(_0x327454,_0x2b75ac){return function(_0x5e1c05){if(_0x5e1c05){return _0x5e1c05[_0xc039('0x26')]()[_0xc039('0x27')](function(){_0x327454[_0xc039('0x1b')](0xcc)[_0xc039('0x1a')]();});}};}function handleEntityNotFound(_0x19d4f4,_0xf57580){return function(_0x501ac6){if(!_0x501ac6){_0x19d4f4[_0xc039('0x19')](0x194);}return _0x501ac6;};}function handleError(_0x67de9,_0x489dad){_0x489dad=_0x489dad||0x1f4;return function(_0x34c735){logger[_0xc039('0x28')](_0x34c735['stack']);if(_0x34c735[_0xc039('0x29')]){delete _0x34c735[_0xc039('0x29')];}_0x67de9[_0xc039('0x1b')](_0x489dad)[_0xc039('0x2a')](_0x34c735);};}exports[_0xc039('0x2b')]=function(_0x81ee3b,_0x48471d){var _0x2a052f={},_0x3b67bd={},_0x5abbf1={'count':0x0,'rows':[]};var _0x2f1dca=_[_0xc039('0x2c')](db[_0xc039('0x2d')][_0xc039('0x2e')],function(_0x96b2b0){return{'name':_0x96b2b0['fieldName'],'type':_0x96b2b0[_0xc039('0x2f')][_0xc039('0x30')]};});_0x3b67bd[_0xc039('0x31')]=_[_0xc039('0x2c')](_0x2f1dca,'name');_0x3b67bd[_0xc039('0x32')]=_[_0xc039('0x33')](_0x81ee3b[_0xc039('0x32')]);_0x3b67bd[_0xc039('0x34')]=_[_0xc039('0x35')](_0x3b67bd[_0xc039('0x31')],_0x3b67bd[_0xc039('0x32')]);_0x2a052f[_0xc039('0x36')]=_['intersection'](_0x3b67bd['model'],qs[_0xc039('0x37')](_0x81ee3b[_0xc039('0x32')][_0xc039('0x37')]));_0x2a052f[_0xc039('0x36')]=_0x2a052f[_0xc039('0x36')][_0xc039('0x38')]?_0x2a052f[_0xc039('0x36')]:_0x3b67bd[_0xc039('0x31')];if(!_0x81ee3b[_0xc039('0x32')][_0xc039('0x39')](_0xc039('0x3a'))){_0x2a052f['limit']=qs[_0xc039('0x1f')](_0x81ee3b[_0xc039('0x32')][_0xc039('0x1f')]);_0x2a052f[_0xc039('0x1d')]=qs[_0xc039('0x1d')](_0x81ee3b[_0xc039('0x32')]['offset']);}_0x2a052f[_0xc039('0x3b')]=qs['sort'](_0x81ee3b['query'][_0xc039('0x3c')]);_0x2a052f[_0xc039('0x3d')]=qs[_0xc039('0x34')](_['pick'](_0x81ee3b['query'],_0x3b67bd[_0xc039('0x34')]),_0x2f1dca);if(_0x81ee3b[_0xc039('0x32')][_0xc039('0x3e')]){_0x2a052f[_0xc039('0x3d')]=_[_0xc039('0x3f')](_0x2a052f['where'],{'$or':_[_0xc039('0x2c')](_0x2f1dca,function(_0x4e925b){if(_0x4e925b['type']!==_0xc039('0x40')){var _0x513ad5={};_0x513ad5[_0x4e925b[_0xc039('0x29')]]={'$like':'%'+_0x81ee3b[_0xc039('0x32')][_0xc039('0x3e')]+'%'};return _0x513ad5;}})});}_0x2a052f=_[_0xc039('0x3f')]({},_0x2a052f,_0x81ee3b[_0xc039('0x41')]);var _0x13ed2c={'where':_0x2a052f[_0xc039('0x3d')]};return db[_0xc039('0x2d')][_0xc039('0x20')](_0x13ed2c)[_0xc039('0x27')](function(_0x13c015){_0x5abbf1[_0xc039('0x20')]=_0x13c015;if(_0x81ee3b['query'][_0xc039('0x42')]){_0x2a052f[_0xc039('0x43')]=[{'all':!![]}];}return db['FreshsalesField'][_0xc039('0x44')](_0x2a052f);})[_0xc039('0x27')](function(_0x2062c9){_0x5abbf1['rows']=_0x2062c9;return _0x5abbf1;})['then'](respondWithFilteredResult(_0x48471d,_0x2a052f))['catch'](handleError(_0x48471d,null));};exports[_0xc039('0x45')]=function(_0xd7cf45,_0xb95117){var _0x2c5ec5={'raw':!![],'where':{'id':_0xd7cf45[_0xc039('0x46')]['id']}},_0x271fb5={};_0x271fb5[_0xc039('0x31')]=_[_0xc039('0x33')](db[_0xc039('0x2d')]['rawAttributes']);_0x271fb5[_0xc039('0x32')]=_[_0xc039('0x33')](_0xd7cf45[_0xc039('0x32')]);_0x271fb5[_0xc039('0x34')]=_['intersection'](_0x271fb5['model'],_0x271fb5[_0xc039('0x32')]);_0x2c5ec5[_0xc039('0x36')]=_[_0xc039('0x35')](_0x271fb5[_0xc039('0x31')],qs[_0xc039('0x37')](_0xd7cf45['query'][_0xc039('0x37')]));_0x2c5ec5[_0xc039('0x36')]=_0x2c5ec5[_0xc039('0x36')][_0xc039('0x38')]?_0x2c5ec5[_0xc039('0x36')]:_0x271fb5['model'];if(_0xd7cf45[_0xc039('0x32')][_0xc039('0x42')]){_0x2c5ec5[_0xc039('0x43')]=[{'all':!![]}];}_0x2c5ec5=_[_0xc039('0x3f')]({},_0x2c5ec5,_0xd7cf45[_0xc039('0x41')]);return db[_0xc039('0x2d')]['find'](_0x2c5ec5)[_0xc039('0x27')](handleEntityNotFound(_0xb95117,null))[_0xc039('0x27')](respondWithResult(_0xb95117,null))[_0xc039('0x47')](handleError(_0xb95117,null));};exports[_0xc039('0x48')]=function(_0x426fe3,_0x888c41){return db['FreshsalesField'][_0xc039('0x48')](_0x426fe3[_0xc039('0x49')],{})[_0xc039('0x27')](respondWithResult(_0x888c41,0xc9))[_0xc039('0x47')](handleError(_0x888c41,null));};exports[_0xc039('0x25')]=function(_0x1be387,_0x46b4e6){if(_0x1be387[_0xc039('0x49')]['id']){delete _0x1be387[_0xc039('0x49')]['id'];}return db[_0xc039('0x2d')]['find']({'where':{'id':_0x1be387[_0xc039('0x46')]['id']}})[_0xc039('0x27')](handleEntityNotFound(_0x46b4e6,null))[_0xc039('0x27')](saveUpdates(_0x1be387[_0xc039('0x49')],null))[_0xc039('0x27')](respondWithResult(_0x46b4e6,null))[_0xc039('0x47')](handleError(_0x46b4e6,null));};exports['destroy']=function(_0x1f37ff,_0x2efa0d){return db[_0xc039('0x2d')][_0xc039('0x4a')]({'where':{'id':_0x1f37ff['params']['id']}})['then'](handleEntityNotFound(_0x2efa0d,null))[_0xc039('0x27')](removeEntity(_0x2efa0d,null))['catch'](handleError(_0x2efa0d,null));};
\ No newline at end of file
+var _0x6345=['limit','status','set','Content-Range','update','then','destroy','error','stack','FreshsalesField','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','name','findAll','rows','catch','show','params','includeAll','include','options','find','create','body','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','lodash','squel','crypto','jsforce','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','sendStatus','end','json','offset','undefined','count'];(function(_0x5dde65,_0x1eb6f7){var _0x1e9245=function(_0x5ce237){while(--_0x5ce237){_0x5dde65['push'](_0x5dde65['shift']());}};_0x1e9245(++_0x1eb6f7);}(_0x6345,0x1df));var _0x5634=function(_0x10f57c,_0x22288c){_0x10f57c=_0x10f57c-0x0;var _0x5d32c9=_0x6345[_0x10f57c];return _0x5d32c9;};'use strict';var emlformat=require(_0x5634('0x0'));var rimraf=require(_0x5634('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5634('0x2'));var rp=require(_0x5634('0x3'));var moment=require(_0x5634('0x4'));var BPromise=require(_0x5634('0x5'));var Mustache=require(_0x5634('0x6'));var util=require(_0x5634('0x7'));var path=require('path');var sox=require(_0x5634('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5634('0x9'));var squel=require(_0x5634('0xa'));var crypto=require(_0x5634('0xb'));var jsforce=require(_0x5634('0xc'));var deskjs=require(_0x5634('0xd'));var toCsv=require(_0x5634('0xe'));var querystring=require(_0x5634('0xf'));var Papa=require(_0x5634('0x10'));var Redis=require(_0x5634('0x11'));var authService=require(_0x5634('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x5634('0x13'));var hardwareService=require(_0x5634('0x14'));var logger=require(_0x5634('0x15'))(_0x5634('0x16'));var utils=require('../../config/utils');var config=require(_0x5634('0x17'));var licenseUtil=require(_0x5634('0x18'));var db=require(_0x5634('0x19'))['db'];function respondWithStatusCode(_0x96d6a9,_0x278451){_0x278451=_0x278451||0xcc;return function(_0x19fe05){if(_0x19fe05){return _0x96d6a9[_0x5634('0x1a')](_0x278451);}return _0x96d6a9['status'](_0x278451)[_0x5634('0x1b')]();};}function respondWithResult(_0x15d7a7,_0x46e681){_0x46e681=_0x46e681||0xc8;return function(_0x486f34){if(_0x486f34){return _0x15d7a7['status'](_0x46e681)[_0x5634('0x1c')](_0x486f34);}};}function respondWithFilteredResult(_0x1f336a,_0x2216d0){return function(_0x55189d){if(_0x55189d){var _0x10891a=typeof _0x2216d0[_0x5634('0x1d')]===_0x5634('0x1e')&&typeof _0x2216d0['limit']===_0x5634('0x1e');var _0x4f5a33=_0x55189d[_0x5634('0x1f')];var _0x948cae=_0x10891a?0x0:_0x2216d0[_0x5634('0x1d')];var _0x3a13ac=_0x10891a?_0x55189d[_0x5634('0x1f')]:_0x2216d0[_0x5634('0x1d')]+_0x2216d0[_0x5634('0x20')];var _0x4160f1;if(_0x3a13ac>=_0x4f5a33){_0x3a13ac=_0x4f5a33;_0x4160f1=0xc8;}else{_0x4160f1=0xce;}_0x1f336a[_0x5634('0x21')](_0x4160f1);return _0x1f336a[_0x5634('0x22')](_0x5634('0x23'),_0x948cae+'-'+_0x3a13ac+'/'+_0x4f5a33)['json'](_0x55189d);}return null;};}function patchUpdates(_0x56cb2b){return function(_0x37430e){try{jsonpatch['apply'](_0x37430e,_0x56cb2b,!![]);}catch(_0x2bfbba){return BPromise['reject'](_0x2bfbba);}return _0x37430e['save']();};}function saveUpdates(_0x549f69,_0x210ce9){return function(_0xc25b06){if(_0xc25b06){return _0xc25b06[_0x5634('0x24')](_0x549f69)[_0x5634('0x25')](function(_0x445397){return _0x445397;});}return null;};}function removeEntity(_0x114743,_0x365098){return function(_0x359570){if(_0x359570){return _0x359570[_0x5634('0x26')]()[_0x5634('0x25')](function(){_0x114743[_0x5634('0x21')](0xcc)[_0x5634('0x1b')]();});}};}function handleEntityNotFound(_0x59f41a,_0x138474){return function(_0x5dae85){if(!_0x5dae85){_0x59f41a[_0x5634('0x1a')](0x194);}return _0x5dae85;};}function handleError(_0x3bffa6,_0x4cfdfb){_0x4cfdfb=_0x4cfdfb||0x1f4;return function(_0x260e44){logger[_0x5634('0x27')](_0x260e44[_0x5634('0x28')]);if(_0x260e44['name']){delete _0x260e44['name'];}_0x3bffa6[_0x5634('0x21')](_0x4cfdfb)['send'](_0x260e44);};}exports['index']=function(_0x141512,_0x4d044f){var _0x226ae1={},_0x285f9f={},_0x1e8b3c={'count':0x0,'rows':[]};var _0x5ec22c=_['map'](db[_0x5634('0x29')][_0x5634('0x2a')],function(_0x1acad6){return{'name':_0x1acad6[_0x5634('0x2b')],'type':_0x1acad6[_0x5634('0x2c')][_0x5634('0x2d')]};});_0x285f9f[_0x5634('0x2e')]=_[_0x5634('0x2f')](_0x5ec22c,'name');_0x285f9f[_0x5634('0x30')]=_['keys'](_0x141512[_0x5634('0x30')]);_0x285f9f[_0x5634('0x31')]=_[_0x5634('0x32')](_0x285f9f[_0x5634('0x2e')],_0x285f9f[_0x5634('0x30')]);_0x226ae1[_0x5634('0x33')]=_[_0x5634('0x32')](_0x285f9f[_0x5634('0x2e')],qs[_0x5634('0x34')](_0x141512['query'][_0x5634('0x34')]));_0x226ae1['attributes']=_0x226ae1[_0x5634('0x33')][_0x5634('0x35')]?_0x226ae1['attributes']:_0x285f9f[_0x5634('0x2e')];if(!_0x141512[_0x5634('0x30')][_0x5634('0x36')]('nolimit')){_0x226ae1[_0x5634('0x20')]=qs['limit'](_0x141512['query'][_0x5634('0x20')]);_0x226ae1[_0x5634('0x1d')]=qs['offset'](_0x141512[_0x5634('0x30')][_0x5634('0x1d')]);}_0x226ae1[_0x5634('0x37')]=qs[_0x5634('0x38')](_0x141512[_0x5634('0x30')][_0x5634('0x38')]);_0x226ae1[_0x5634('0x39')]=qs[_0x5634('0x31')](_[_0x5634('0x3a')](_0x141512[_0x5634('0x30')],_0x285f9f[_0x5634('0x31')]),_0x5ec22c);if(_0x141512[_0x5634('0x30')][_0x5634('0x3b')]){_0x226ae1[_0x5634('0x39')]=_[_0x5634('0x3c')](_0x226ae1['where'],{'$or':_['map'](_0x5ec22c,function(_0x3a51f5){if(_0x3a51f5[_0x5634('0x2c')]!=='VIRTUAL'){var _0x2012d5={};_0x2012d5[_0x3a51f5[_0x5634('0x3d')]]={'$like':'%'+_0x141512['query'][_0x5634('0x3b')]+'%'};return _0x2012d5;}})});}_0x226ae1=_[_0x5634('0x3c')]({},_0x226ae1,_0x141512['options']);var _0x5b8ef8={'where':_0x226ae1[_0x5634('0x39')]};return db[_0x5634('0x29')]['count'](_0x5b8ef8)[_0x5634('0x25')](function(_0x17b12d){_0x1e8b3c[_0x5634('0x1f')]=_0x17b12d;if(_0x141512[_0x5634('0x30')]['includeAll']){_0x226ae1['include']=[{'all':!![]}];}return db[_0x5634('0x29')][_0x5634('0x3e')](_0x226ae1);})[_0x5634('0x25')](function(_0x382901){_0x1e8b3c[_0x5634('0x3f')]=_0x382901;return _0x1e8b3c;})[_0x5634('0x25')](respondWithFilteredResult(_0x4d044f,_0x226ae1))[_0x5634('0x40')](handleError(_0x4d044f,null));};exports[_0x5634('0x41')]=function(_0x16cbd9,_0x536ffa){var _0x564a96={'raw':!![],'where':{'id':_0x16cbd9[_0x5634('0x42')]['id']}},_0x508cf5={};_0x508cf5['model']=_['keys'](db[_0x5634('0x29')]['rawAttributes']);_0x508cf5[_0x5634('0x30')]=_['keys'](_0x16cbd9[_0x5634('0x30')]);_0x508cf5[_0x5634('0x31')]=_[_0x5634('0x32')](_0x508cf5[_0x5634('0x2e')],_0x508cf5[_0x5634('0x30')]);_0x564a96[_0x5634('0x33')]=_['intersection'](_0x508cf5[_0x5634('0x2e')],qs['fields'](_0x16cbd9[_0x5634('0x30')][_0x5634('0x34')]));_0x564a96['attributes']=_0x564a96[_0x5634('0x33')][_0x5634('0x35')]?_0x564a96[_0x5634('0x33')]:_0x508cf5[_0x5634('0x2e')];if(_0x16cbd9[_0x5634('0x30')][_0x5634('0x43')]){_0x564a96[_0x5634('0x44')]=[{'all':!![]}];}_0x564a96=_[_0x5634('0x3c')]({},_0x564a96,_0x16cbd9[_0x5634('0x45')]);return db['FreshsalesField'][_0x5634('0x46')](_0x564a96)['then'](handleEntityNotFound(_0x536ffa,null))[_0x5634('0x25')](respondWithResult(_0x536ffa,null))[_0x5634('0x40')](handleError(_0x536ffa,null));};exports[_0x5634('0x47')]=function(_0x38b1f8,_0x4a4f86){return db['FreshsalesField'][_0x5634('0x47')](_0x38b1f8[_0x5634('0x48')],{})[_0x5634('0x25')](respondWithResult(_0x4a4f86,0xc9))[_0x5634('0x40')](handleError(_0x4a4f86,null));};exports[_0x5634('0x24')]=function(_0x50bcfa,_0x56e680){if(_0x50bcfa[_0x5634('0x48')]['id']){delete _0x50bcfa[_0x5634('0x48')]['id'];}return db['FreshsalesField'][_0x5634('0x46')]({'where':{'id':_0x50bcfa[_0x5634('0x42')]['id']}})[_0x5634('0x25')](handleEntityNotFound(_0x56e680,null))['then'](saveUpdates(_0x50bcfa[_0x5634('0x48')],null))[_0x5634('0x25')](respondWithResult(_0x56e680,null))['catch'](handleError(_0x56e680,null));};exports[_0x5634('0x26')]=function(_0x1c6113,_0x1d4c2a){return db[_0x5634('0x29')][_0x5634('0x46')]({'where':{'id':_0x1c6113[_0x5634('0x42')]['id']}})['then'](handleEntityNotFound(_0x1d4c2a,null))[_0x5634('0x25')](removeEntity(_0x1d4c2a,null))[_0x5634('0x40')](handleError(_0x1d4c2a,null));};
\ No newline at end of file
index 9cf5076..0210a63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48bc=['define','FreshsalesField','freshsales_unique_index','FieldId','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshsalesField.attributes'];(function(_0x68fdb0,_0x1229f4){var _0x35881d=function(_0x4d07fe){while(--_0x4d07fe){_0x68fdb0['push'](_0x68fdb0['shift']());}};_0x35881d(++_0x1229f4);}(_0x48bc,0x1b6));var _0xc48b=function(_0x3c21f7,_0x1561d6){_0x3c21f7=_0x3c21f7-0x0;var _0x323261=_0x48bc[_0x3c21f7];return _0x323261;};'use strict';var _=require(_0xc48b('0x0'));var util=require(_0xc48b('0x1'));var logger=require(_0xc48b('0x2'))('api');var moment=require(_0xc48b('0x3'));var BPromise=require(_0xc48b('0x4'));var rp=require(_0xc48b('0x5'));var fs=require('fs');var path=require(_0xc48b('0x6'));var rimraf=require(_0xc48b('0x7'));var config=require(_0xc48b('0x8'));var attributes=require(_0xc48b('0x9'));module['exports']=function(_0x221555,_0x4c001c){return _0x221555[_0xc48b('0xa')](_0xc48b('0xb'),attributes,{'tableName':'int_freshsales_fields','paranoid':![],'indexes':[{'name':_0xc48b('0xc'),'fields':['idField',_0xc48b('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x26b2=['freshsales_unique_index','idField','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshsalesField.attributes','exports','define','int_freshsales_fields'];(function(_0x8db510,_0x3f58f5){var _0x1051d4=function(_0x44434b){while(--_0x44434b){_0x8db510['push'](_0x8db510['shift']());}};_0x1051d4(++_0x3f58f5);}(_0x26b2,0xc5));var _0x226b=function(_0x46e57e,_0x62bb4d){_0x46e57e=_0x46e57e-0x0;var _0x36c826=_0x26b2[_0x46e57e];return _0x36c826;};'use strict';var _=require(_0x226b('0x0'));var util=require(_0x226b('0x1'));var logger=require(_0x226b('0x2'))('api');var moment=require(_0x226b('0x3'));var BPromise=require(_0x226b('0x4'));var rp=require(_0x226b('0x5'));var fs=require('fs');var path=require(_0x226b('0x6'));var rimraf=require(_0x226b('0x7'));var config=require(_0x226b('0x8'));var attributes=require(_0x226b('0x9'));module[_0x226b('0xa')]=function(_0x36bf2b,_0x4a9348){return _0x36bf2b[_0x226b('0xb')]('FreshsalesField',attributes,{'tableName':_0x226b('0xc'),'paranoid':![],'indexes':[{'name':_0x226b('0xd'),'fields':[_0x226b('0xe'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 258f8cb..9887b3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53ec=['error','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','client','request','then','info','FreshsalesField,\x20%s,\x20%s','request\x20sent','debug','stringify','code'];(function(_0x5f309e,_0x66e31){var _0x487b5e=function(_0x44f203){while(--_0x44f203){_0x5f309e['push'](_0x5f309e['shift']());}};_0x487b5e(++_0x66e31);}(_0x53ec,0x192));var _0xc53e=function(_0x5eb874,_0x3d849f){_0x5eb874=_0x5eb874-0x0;var _0x5bbbd0=_0x53ec[_0x5eb874];return _0x5bbbd0;};'use strict';var _=require(_0xc53e('0x0'));var util=require(_0xc53e('0x1'));var moment=require(_0xc53e('0x2'));var BPromise=require(_0xc53e('0x3'));var rs=require(_0xc53e('0x4'));var fs=require('fs');var Redis=require(_0xc53e('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xc53e('0x6'));var logger=require('../../config/logger')(_0xc53e('0x7'));var config=require(_0xc53e('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xc53e('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x41a9e8,_0x2de88b,_0x5d3b28){return new BPromise(function(_0x1616ac,_0x1ac6c0){return client[_0xc53e('0xa')](_0x41a9e8,_0x5d3b28)[_0xc53e('0xb')](function(_0xd9612){logger[_0xc53e('0xc')](_0xc53e('0xd'),_0x2de88b,_0xc53e('0xe'));logger[_0xc53e('0xf')]('FreshsalesField,\x20%s,\x20%s,\x20%s',_0x2de88b,'request\x20sent',JSON[_0xc53e('0x10')](_0xd9612));if(_0xd9612['error']){if(_0xd9612['error'][_0xc53e('0x11')]===0x1f4){logger[_0xc53e('0x12')](_0xc53e('0xd'),_0x2de88b,_0xd9612[_0xc53e('0x12')]['message']);return _0x1ac6c0(_0xd9612['error'][_0xc53e('0x13')]);}logger[_0xc53e('0x12')](_0xc53e('0xd'),_0x2de88b,_0xd9612[_0xc53e('0x12')][_0xc53e('0x13')]);return _0x1616ac(_0xd9612[_0xc53e('0x12')][_0xc53e('0x13')]);}else{logger[_0xc53e('0xc')](_0xc53e('0xd'),_0x2de88b,_0xc53e('0xe'));_0x1616ac(_0xd9612['result'][_0xc53e('0x13')]);}})[_0xc53e('0x14')](function(_0x535cd4){logger[_0xc53e('0x12')](_0xc53e('0xd'),_0x2de88b,_0x535cd4);_0x1ac6c0(_0x535cd4);});});}
\ No newline at end of file
+var _0xc1c6=['lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','http','then','FreshsalesField,\x20%s,\x20%s','request\x20sent','debug','FreshsalesField,\x20%s,\x20%s,\x20%s','stringify','error','message','info','catch'];(function(_0x1217cb,_0x1f29c9){var _0x3fd993=function(_0x39d96e){while(--_0x39d96e){_0x1217cb['push'](_0x1217cb['shift']());}};_0x3fd993(++_0x1f29c9);}(_0xc1c6,0xf7));var _0x6c1c=function(_0x12b503,_0x73ee48){_0x12b503=_0x12b503-0x0;var _0x54ba9a=_0xc1c6[_0x12b503];return _0x54ba9a;};'use strict';var _=require(_0x6c1c('0x0'));var util=require(_0x6c1c('0x1'));var moment=require(_0x6c1c('0x2'));var BPromise=require('bluebird');var rs=require(_0x6c1c('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6c1c('0x4'))['db'];var utils=require(_0x6c1c('0x5'));var logger=require(_0x6c1c('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x6c1c('0x7'));var client=jayson['client'][_0x6c1c('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x582bec,_0xe510ca,_0x2eb1ba){return new BPromise(function(_0x38369d,_0x2cec58){return client['request'](_0x582bec,_0x2eb1ba)[_0x6c1c('0x9')](function(_0x3ca985){logger['info'](_0x6c1c('0xa'),_0xe510ca,_0x6c1c('0xb'));logger[_0x6c1c('0xc')](_0x6c1c('0xd'),_0xe510ca,'request\x20sent',JSON[_0x6c1c('0xe')](_0x3ca985));if(_0x3ca985[_0x6c1c('0xf')]){if(_0x3ca985[_0x6c1c('0xf')]['code']===0x1f4){logger[_0x6c1c('0xf')](_0x6c1c('0xa'),_0xe510ca,_0x3ca985[_0x6c1c('0xf')]['message']);return _0x2cec58(_0x3ca985[_0x6c1c('0xf')]['message']);}logger[_0x6c1c('0xf')](_0x6c1c('0xa'),_0xe510ca,_0x3ca985[_0x6c1c('0xf')][_0x6c1c('0x10')]);return _0x38369d(_0x3ca985[_0x6c1c('0xf')][_0x6c1c('0x10')]);}else{logger[_0x6c1c('0x11')](_0x6c1c('0xa'),_0xe510ca,_0x6c1c('0xb'));_0x38369d(_0x3ca985['result'][_0x6c1c('0x10')]);}})[_0x6c1c('0x12')](function(_0x5214ee){logger[_0x6c1c('0xf')](_0x6c1c('0xa'),_0xe510ca,_0x5214ee);_0x2cec58(_0x5214ee);});});}
\ No newline at end of file
index c1c8044..b886863 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(_0x36a2bc,_0x65dd9c){var _0x3ad001=function(_0x167444){while(--_0x167444){_0x36a2bc['push'](_0x36a2bc['shift']());}};_0x3ad001(++_0x65dd9c);}(_0x9957,0x93));var _0x7995=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x9957[_0x3947c9];return _0x2e7871;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
+var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSalesforceAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x366493,_0xcf4780){var _0x165cdc=function(_0x260235){while(--_0x260235){_0x366493['push'](_0x366493['shift']());}};_0x165cdc(++_0xcf4780);}(_0x9957,0x93));var _0x7995=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x9957[_0x4cf98e];return _0x1623ac;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
index 133ae35..f8f7b67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d5c=['exports','STRING','username','integrationTab','newTab','sequelize'];(function(_0xb2538f,_0x38f6e5){var _0x56218d=function(_0x1e8b0e){while(--_0x1e8b0e){_0xb2538f['push'](_0xb2538f['shift']());}};_0x56218d(++_0x38f6e5);}(_0x6d5c,0x179));var _0xc6d5=function(_0x4289e1,_0x5bc129){_0x4289e1=_0x4289e1-0x0;var _0x14c878=_0x6d5c[_0x4289e1];return _0x14c878;};'use strict';var Sequelize=require(_0xc6d5('0x0'));module[_0xc6d5('0x1')]={'name':{'type':Sequelize[_0xc6d5('0x2')]},'description':{'type':Sequelize[_0xc6d5('0x2')]},'username':{'type':Sequelize['STRING'],'unique':_0xc6d5('0x3')},'remoteUri':{'type':Sequelize[_0xc6d5('0x2')]},'password':{'type':Sequelize['STRING']},'clientId':{'type':Sequelize[_0xc6d5('0x2')]},'clientSecret':{'type':Sequelize[_0xc6d5('0x2')]},'securityToken':{'type':Sequelize[_0xc6d5('0x2')]},'serverUrl':{'type':Sequelize[_0xc6d5('0x2')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xc6d5('0x4'),_0xc6d5('0x5')),'defaultValue':_0xc6d5('0x4')}};
\ No newline at end of file
+var _0x99fd=['sequelize','STRING','username','ENUM','integrationTab','newTab'];(function(_0x310504,_0x26ad95){var _0x5b36d0=function(_0x253f28){while(--_0x253f28){_0x310504['push'](_0x310504['shift']());}};_0x5b36d0(++_0x26ad95);}(_0x99fd,0x1e0));var _0xd99f=function(_0x596089,_0x3a72ef){_0x596089=_0x596089-0x0;var _0x1462bd=_0x99fd[_0x596089];return _0x1462bd;};'use strict';var Sequelize=require(_0xd99f('0x0'));module['exports']={'name':{'type':Sequelize[_0xd99f('0x1')]},'description':{'type':Sequelize[_0xd99f('0x1')]},'username':{'type':Sequelize[_0xd99f('0x1')],'unique':_0xd99f('0x2')},'remoteUri':{'type':Sequelize[_0xd99f('0x1')]},'password':{'type':Sequelize['STRING']},'clientId':{'type':Sequelize[_0xd99f('0x1')]},'clientSecret':{'type':Sequelize['STRING']},'securityToken':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0xd99f('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0xd99f('0x3')](_0xd99f('0x4'),_0xd99f('0x5')),'defaultValue':'integrationTab'}};
\ No newline at end of file
index 175c953..4f8ae38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc3e=['False','test','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','squel','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','destroy','then','error','stack','name','send','index','rawAttributes','fieldName','type','key','model','map','query','keys','intersection','attributes','fields','length','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','SalesforceAccount','create','body','update','find','params','getConfigurations','findOne','SalesforceConfiguration','hasOwnProperty','addConfiguration','AccountId','Subjects','channel','Descriptions','getDescriptions','SalesforceField','getFields','Task','clientId','clientSecret','username','securityToken','slice','lastIndexOf','Connection','concat','ticketType','sobject','describe','OwnerId','ActivityDate','Subject','string','int','picklist','boolean','email','textarea','phone','includes','label','custom','picklistValues','value','True','true'];(function(_0xaff6d7,_0x2b5aaa){var _0x1c865c=function(_0x3e24ca){while(--_0x3e24ca){_0xaff6d7['push'](_0xaff6d7['shift']());}};_0x1c865c(++_0x2b5aaa);}(_0xcc3e,0xf1));var _0xecc3=function(_0x4126da,_0x16324f){_0x4126da=_0x4126da-0x0;var _0x105559=_0xcc3e[_0x4126da];return _0x105559;};'use strict';var emlformat=require(_0xecc3('0x0'));var rimraf=require(_0xecc3('0x1'));var zipdir=require(_0xecc3('0x2'));var jsonpatch=require(_0xecc3('0x3'));var rp=require(_0xecc3('0x4'));var moment=require(_0xecc3('0x5'));var BPromise=require(_0xecc3('0x6'));var Mustache=require(_0xecc3('0x7'));var util=require(_0xecc3('0x8'));var path=require(_0xecc3('0x9'));var sox=require(_0xecc3('0xa'));var csv=require('to-csv');var ejs=require(_0xecc3('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xecc3('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xecc3('0xd'));var querystring=require(_0xecc3('0xe'));var Papa=require(_0xecc3('0xf'));var Redis=require(_0xecc3('0x10'));var authService=require(_0xecc3('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xecc3('0x12'));var hardwareService=require(_0xecc3('0x13'));var logger=require(_0xecc3('0x14'))('api');var utils=require(_0xecc3('0x15'));var config=require(_0xecc3('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xecc3('0x17'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0xd4e0af,_0x428dd0){_0x428dd0=_0x428dd0||0xcc;return function(_0x21c823){if(_0x21c823){return _0xd4e0af[_0xecc3('0x18')](_0x428dd0);}return _0xd4e0af[_0xecc3('0x19')](_0x428dd0)[_0xecc3('0x1a')]();};}function respondWithResult(_0x2c11d7,_0x50b5a6){_0x50b5a6=_0x50b5a6||0xc8;return function(_0x2e5b0b){if(_0x2e5b0b){return _0x2c11d7['status'](_0x50b5a6)[_0xecc3('0x1b')](_0x2e5b0b);}};}function respondWithFilteredResult(_0x53cf23,_0xd5e32c){return function(_0x317bf6){if(_0x317bf6){var _0x5c4a11=typeof _0xd5e32c[_0xecc3('0x1c')]===_0xecc3('0x1d')&&typeof _0xd5e32c[_0xecc3('0x1e')]===_0xecc3('0x1d');var _0x27d1ef=_0x317bf6[_0xecc3('0x1f')];var _0xaff3e1=_0x5c4a11?0x0:_0xd5e32c[_0xecc3('0x1c')];var _0x4fbf81=_0x5c4a11?_0x317bf6[_0xecc3('0x1f')]:_0xd5e32c[_0xecc3('0x1c')]+_0xd5e32c['limit'];var _0x30f0d3;if(_0x4fbf81>=_0x27d1ef){_0x4fbf81=_0x27d1ef;_0x30f0d3=0xc8;}else{_0x30f0d3=0xce;}_0x53cf23['status'](_0x30f0d3);return _0x53cf23[_0xecc3('0x20')]('Content-Range',_0xaff3e1+'-'+_0x4fbf81+'/'+_0x27d1ef)[_0xecc3('0x1b')](_0x317bf6);}return null;};}function patchUpdates(_0x6c94ad){return function(_0xc2e424){try{jsonpatch['apply'](_0xc2e424,_0x6c94ad,!![]);}catch(_0x357e5d){return BPromise['reject'](_0x357e5d);}return _0xc2e424['save']();};}function saveUpdates(_0x5c4cdb,_0x6a4389){return function(_0x572076){if(_0x572076){return _0x572076['update'](_0x5c4cdb)['then'](function(_0x486f69){return _0x486f69;});}return null;};}function removeEntity(_0x62e5ed,_0x568e18){return function(_0x262110){if(_0x262110){return _0x262110[_0xecc3('0x21')]()[_0xecc3('0x22')](function(){_0x62e5ed['status'](0xcc)[_0xecc3('0x1a')]();});}};}function handleEntityNotFound(_0x1bda90,_0x4bfbf4){return function(_0x44a98b){if(!_0x44a98b){_0x1bda90[_0xecc3('0x18')](0x194);}return _0x44a98b;};}function handleError(_0x54144b,_0x57b9d0){_0x57b9d0=_0x57b9d0||0x1f4;return function(_0x5c00f8){logger[_0xecc3('0x23')](_0x5c00f8[_0xecc3('0x24')]);if(_0x5c00f8[_0xecc3('0x25')]){delete _0x5c00f8[_0xecc3('0x25')];}_0x54144b['status'](_0x57b9d0)[_0xecc3('0x26')](_0x5c00f8);};}exports[_0xecc3('0x27')]=function(_0x4550c9,_0x2f335f){var _0x170377={},_0x552e04={},_0xfa0529={'count':0x0,'rows':[]};var _0x28d5cf=_['map'](db['SalesforceAccount'][_0xecc3('0x28')],function(_0x36a517){return{'name':_0x36a517[_0xecc3('0x29')],'type':_0x36a517[_0xecc3('0x2a')][_0xecc3('0x2b')]};});_0x552e04[_0xecc3('0x2c')]=_[_0xecc3('0x2d')](_0x28d5cf,'name');_0x552e04[_0xecc3('0x2e')]=_[_0xecc3('0x2f')](_0x4550c9['query']);_0x552e04['filters']=_[_0xecc3('0x30')](_0x552e04['model'],_0x552e04[_0xecc3('0x2e')]);_0x170377[_0xecc3('0x31')]=_[_0xecc3('0x30')](_0x552e04[_0xecc3('0x2c')],qs[_0xecc3('0x32')](_0x4550c9[_0xecc3('0x2e')][_0xecc3('0x32')]));_0x170377[_0xecc3('0x31')]=_0x170377[_0xecc3('0x31')][_0xecc3('0x33')]?_0x170377[_0xecc3('0x31')]:_0x552e04[_0xecc3('0x2c')];if(!_0x4550c9[_0xecc3('0x2e')]['hasOwnProperty'](_0xecc3('0x34'))){_0x170377[_0xecc3('0x1e')]=qs[_0xecc3('0x1e')](_0x4550c9['query'][_0xecc3('0x1e')]);_0x170377[_0xecc3('0x1c')]=qs[_0xecc3('0x1c')](_0x4550c9[_0xecc3('0x2e')]['offset']);}_0x170377[_0xecc3('0x35')]=qs[_0xecc3('0x36')](_0x4550c9[_0xecc3('0x2e')]['sort']);_0x170377[_0xecc3('0x37')]=qs[_0xecc3('0x38')](_[_0xecc3('0x39')](_0x4550c9[_0xecc3('0x2e')],_0x552e04[_0xecc3('0x38')]),_0x28d5cf);if(_0x4550c9[_0xecc3('0x2e')][_0xecc3('0x3a')]){_0x170377['where']=_[_0xecc3('0x3b')](_0x170377[_0xecc3('0x37')],{'$or':_[_0xecc3('0x2d')](_0x28d5cf,function(_0x287a7a){if(_0x287a7a[_0xecc3('0x2a')]!==_0xecc3('0x3c')){var _0x3ecd4b={};_0x3ecd4b[_0x287a7a['name']]={'$like':'%'+_0x4550c9[_0xecc3('0x2e')][_0xecc3('0x3a')]+'%'};return _0x3ecd4b;}})});}_0x170377=_[_0xecc3('0x3b')]({},_0x170377,_0x4550c9[_0xecc3('0x3d')]);var _0x459a40={'where':_0x170377['where']};return db['SalesforceAccount'][_0xecc3('0x1f')](_0x459a40)[_0xecc3('0x22')](function(_0x1a43e7){_0xfa0529[_0xecc3('0x1f')]=_0x1a43e7;if(_0x4550c9[_0xecc3('0x2e')][_0xecc3('0x3e')]){_0x170377[_0xecc3('0x3f')]=[{'all':!![]}];}return db['SalesforceAccount'][_0xecc3('0x40')](_0x170377);})[_0xecc3('0x22')](function(_0x310fa9){_0xfa0529['rows']=_0x310fa9;return _0xfa0529;})[_0xecc3('0x22')](respondWithFilteredResult(_0x2f335f,_0x170377))[_0xecc3('0x41')](handleError(_0x2f335f,null));};exports['show']=function(_0x461172,_0x433b25){var _0xe0c035={'raw':![],'where':{'id':_0x461172['params']['id']}},_0x558b2f={};_0x558b2f['model']=_[_0xecc3('0x2f')](db[_0xecc3('0x42')][_0xecc3('0x28')]);_0x558b2f['query']=_[_0xecc3('0x2f')](_0x461172[_0xecc3('0x2e')]);_0x558b2f[_0xecc3('0x38')]=_[_0xecc3('0x30')](_0x558b2f[_0xecc3('0x2c')],_0x558b2f[_0xecc3('0x2e')]);_0xe0c035[_0xecc3('0x31')]=_[_0xecc3('0x30')](_0x558b2f[_0xecc3('0x2c')],qs['fields'](_0x461172['query']['fields']));_0xe0c035[_0xecc3('0x31')]=_0xe0c035[_0xecc3('0x31')]['length']?_0xe0c035['attributes']:_0x558b2f[_0xecc3('0x2c')];if(_0x461172[_0xecc3('0x2e')][_0xecc3('0x3e')]){_0xe0c035[_0xecc3('0x3f')]=[{'all':!![]}];}_0xe0c035=_[_0xecc3('0x3b')]({},_0xe0c035,_0x461172[_0xecc3('0x3d')]);return db[_0xecc3('0x42')]['find'](_0xe0c035)[_0xecc3('0x22')](handleEntityNotFound(_0x433b25,null))['then'](respondWithResult(_0x433b25,null))[_0xecc3('0x41')](handleError(_0x433b25,null));};exports[_0xecc3('0x43')]=function(_0x1659ad,_0x4cdc90){return db[_0xecc3('0x42')]['create'](_0x1659ad[_0xecc3('0x44')],{})['then'](respondWithResult(_0x4cdc90,0xc9))['catch'](handleError(_0x4cdc90,null));};exports[_0xecc3('0x45')]=function(_0x23eeb0,_0x51d78f){if(_0x23eeb0['body']['id']){delete _0x23eeb0[_0xecc3('0x44')]['id'];}return db[_0xecc3('0x42')][_0xecc3('0x46')]({'where':{'id':_0x23eeb0[_0xecc3('0x47')]['id']}})['then'](handleEntityNotFound(_0x51d78f,null))['then'](saveUpdates(_0x23eeb0['body'],null))['then'](respondWithResult(_0x51d78f,null))[_0xecc3('0x41')](handleError(_0x51d78f,null));};exports[_0xecc3('0x21')]=function(_0x59055f,_0x2d0f08){return db[_0xecc3('0x42')][_0xecc3('0x46')]({'where':{'id':_0x59055f[_0xecc3('0x47')]['id']}})[_0xecc3('0x22')](handleEntityNotFound(_0x2d0f08,null))[_0xecc3('0x22')](removeEntity(_0x2d0f08,null))[_0xecc3('0x41')](handleError(_0x2d0f08,null));};exports[_0xecc3('0x48')]=function(_0x1486b2,_0x17a8bb,_0x301209){var _0x1e98a3={};var _0x2eb0fd={};var _0x3f065f;var _0x3f5ffb;return db[_0xecc3('0x42')][_0xecc3('0x49')]({'where':{'id':_0x1486b2[_0xecc3('0x47')]['id']}})['then'](handleEntityNotFound(_0x17a8bb,null))['then'](function(_0x56b143){if(_0x56b143){_0x3f065f=_0x56b143;_0x2eb0fd[_0xecc3('0x2c')]=_[_0xecc3('0x2f')](db[_0xecc3('0x4a')][_0xecc3('0x28')]);_0x2eb0fd[_0xecc3('0x2e')]=_[_0xecc3('0x2f')](_0x1486b2[_0xecc3('0x2e')]);_0x2eb0fd[_0xecc3('0x38')]=_[_0xecc3('0x30')](_0x2eb0fd[_0xecc3('0x2c')],_0x2eb0fd[_0xecc3('0x2e')]);_0x1e98a3[_0xecc3('0x31')]=_[_0xecc3('0x30')](_0x2eb0fd[_0xecc3('0x2c')],qs[_0xecc3('0x32')](_0x1486b2['query'][_0xecc3('0x32')]));_0x1e98a3[_0xecc3('0x31')]=_0x1e98a3[_0xecc3('0x31')][_0xecc3('0x33')]?_0x1e98a3['attributes']:_0x2eb0fd[_0xecc3('0x2c')];_0x1e98a3[_0xecc3('0x35')]=qs[_0xecc3('0x36')](_0x1486b2[_0xecc3('0x2e')][_0xecc3('0x36')]);_0x1e98a3['where']=qs[_0xecc3('0x38')](_[_0xecc3('0x39')](_0x1486b2[_0xecc3('0x2e')],_0x2eb0fd[_0xecc3('0x38')]));if(_0x1486b2[_0xecc3('0x2e')][_0xecc3('0x3a')]){_0x1e98a3['where']=_[_0xecc3('0x3b')](_0x1e98a3[_0xecc3('0x37')],{'$or':_[_0xecc3('0x2d')](_0x1e98a3[_0xecc3('0x31')],function(_0x5c0405){var _0x28aad0={};_0x28aad0[_0x5c0405]={'$like':'%'+_0x1486b2[_0xecc3('0x2e')]['filter']+'%'};return _0x28aad0;})});}_0x1e98a3=_[_0xecc3('0x3b')]({},_0x1e98a3,_0x1486b2['options']);return _0x3f065f[_0xecc3('0x48')](_0x1e98a3);}})[_0xecc3('0x22')](function(_0x86f724){if(_0x86f724){_0x3f5ffb=_0x86f724['length'];if(!_0x1486b2[_0xecc3('0x2e')][_0xecc3('0x4b')]('nolimit')){_0x1e98a3[_0xecc3('0x1e')]=qs['limit'](_0x1486b2[_0xecc3('0x2e')][_0xecc3('0x1e')]);_0x1e98a3['offset']=qs[_0xecc3('0x1c')](_0x1486b2['query'][_0xecc3('0x1c')]);}return _0x3f065f['getConfigurations'](_0x1e98a3);}})[_0xecc3('0x22')](function(_0x84d496){if(_0x84d496){return _0x84d496?{'count':_0x3f5ffb,'rows':_0x84d496}:null;}})['then'](respondWithResult(_0x17a8bb,null))[_0xecc3('0x41')](handleError(_0x17a8bb,null));};exports[_0xecc3('0x4c')]=function(_0x3ffe31,_0x231282,_0x54b537){if(_0x3ffe31[_0xecc3('0x44')]['id']){delete _0x3ffe31[_0xecc3('0x44')]['id'];}return db['SalesforceAccount'][_0xecc3('0x49')]({'where':{'id':_0x3ffe31['params']['id']}})[_0xecc3('0x22')](handleEntityNotFound(_0x231282,null))[_0xecc3('0x22')](function(_0x3c3b6a){if(_0x3c3b6a){_0x3ffe31[_0xecc3('0x44')][_0xecc3('0x4d')]=_0x3c3b6a['id'];_0x3ffe31[_0xecc3('0x44')][_0xecc3('0x4e')]=integrations['getSubjects'](_0x3ffe31[_0xecc3('0x44')][_0xecc3('0x4f')],_0x3ffe31[_0xecc3('0x44')][_0xecc3('0x2a')]);_0x3ffe31[_0xecc3('0x44')][_0xecc3('0x50')]=integrations[_0xecc3('0x51')](_0x3ffe31[_0xecc3('0x44')][_0xecc3('0x4f')],_0x3ffe31[_0xecc3('0x44')]['type']);return db[_0xecc3('0x4a')]['create'](_0x3ffe31[_0xecc3('0x44')],{'include':[{'model':db[_0xecc3('0x52')],'as':'Subjects'},{'model':db[_0xecc3('0x52')],'as':_0xecc3('0x50')}]});}return null;})['then'](respondWithResult(_0x231282,null))[_0xecc3('0x41')](handleError(_0x231282,null));};exports[_0xecc3('0x53')]=function(_0x44393b,_0x54fea8,_0x556da3){var _0xad38c6;var _0x406044='';var _0x335603=_0xecc3('0x54');return db[_0xecc3('0x42')][_0xecc3('0x49')]({'where':{'id':_0x44393b['params']['id']},'attributes':['id','remoteUri',_0xecc3('0x55'),_0xecc3('0x56'),_0xecc3('0x57'),'password',_0xecc3('0x58')]})['then'](handleEntityNotFound(_0x54fea8,null))[_0xecc3('0x22')](function(_0x34a3b2){if(_0x34a3b2){_0x406044=_0x34a3b2['remoteUri'];var _0x2d8847=_0x406044[_0xecc3('0x59')](-0x1);if(_0x2d8847==='/'){_0x406044=_0x406044['substring'](0x0,_0x406044[_0xecc3('0x5a')](_0x2d8847));}_0xad38c6=new jsforce[(_0xecc3('0x5b'))]({'oauth2':{'loginUrl':_0x406044,'clientId':_0x34a3b2[_0xecc3('0x55')],'clientSecret':_0x34a3b2[_0xecc3('0x56')]}});return _0xad38c6['login'](_0x34a3b2[_0xecc3('0x57')],_0x34a3b2['password'][_0xecc3('0x5c')](_0x34a3b2[_0xecc3('0x58')]));}})[_0xecc3('0x22')](function(_0x77b967){if(_0x77b967){if(!_['isNil'](_0x44393b[_0xecc3('0x2e')][_0xecc3('0x5d')])){_0x335603=_0x44393b['query']['ticketType'];}return _0xad38c6[_0xecc3('0x5e')](_0x335603)[_0xecc3('0x5f')]();}})[_0xecc3('0x22')](function(_0x45e152){var _0x22114a=[_0xecc3('0x60'),_0xecc3('0x61'),'IsReminderSet','IsRecurrence',_0xecc3('0x62'),'Description'];var _0x3ee092=[_0xecc3('0x63'),_0xecc3('0x64'),_0xecc3('0x65'),_0xecc3('0x66'),_0xecc3('0x67'),_0xecc3('0x68'),_0xecc3('0x69')];if(_0x45e152){_['remove'](_0x45e152[_0xecc3('0x32')],function(_0xaf0964){return _0x22114a[_0xecc3('0x6a')](_0xaf0964[_0xecc3('0x25')])||!_0x3ee092[_0xecc3('0x6a')](_0xaf0964[_0xecc3('0x2a')]);});return{'count':_0x45e152[_0xecc3('0x32')][_0xecc3('0x33')],'rows':_[_0xecc3('0x2d')](_0x45e152['fields'],function(_0xb09e22){return{'id':_0xb09e22[_0xecc3('0x25')],'name':_0xb09e22[_0xecc3('0x6b')],'custom':_0xb09e22[_0xecc3('0x6c')],'options':_0xb09e22[_0xecc3('0x6d')][_0xecc3('0x33')]>0x0?_['map'](_0xb09e22['picklistValues'],function(_0x53eac8){return{'name':_0x53eac8[_0xecc3('0x6b')],'value':_0x53eac8[_0xecc3('0x6e')]};}):_0xb09e22[_0xecc3('0x2a')]==_0xecc3('0x66')?[{'name':_0xecc3('0x6f'),'value':_0xecc3('0x70')},{'name':_0xecc3('0x71'),'value':'false'}]:[]};})};}})[_0xecc3('0x22')](respondWithResult(_0x54fea8,null))[_0xecc3('0x41')](function(_0x20b425){var _0x46235d=_0x44393b[_0xecc3('0x2e')][_0xecc3('0x72')]?0x1f4:_0x20b425['statusCode']||0x1f4;logger[_0xecc3('0x23')](_0xecc3('0x73'),_0xecc3('0x53'),_0x46235d,JSON[_0xecc3('0x74')](_0x20b425));delete _0x20b425[_0xecc3('0x25')];if(_0x46235d===0x191){_0x46235d=0x190;}_0x54fea8[_0xecc3('0x19')](_0x46235d)[_0xecc3('0x26')](_0x44393b[_0xecc3('0x2e')]['test']?{'message':_0xecc3('0x75'),'statusCode':_0x20b425['statusCode']}:_0x20b425);});};
\ No newline at end of file
+var _0x7ed9=['Subjects','getSubjects','Descriptions','channel','SalesforceField','Task','remoteUri','clientId','username','password','securityToken','slice','substring','lastIndexOf','Connection','clientSecret','login','isNil','ticketType','describe','IsReminderSet','IsRecurrence','Subject','string','int','picklist','boolean','email','phone','includes','label','picklistValues','value','True','true','False','test','getFields,\x20%s,\x20%s,\x20%s','getFields','send','Wrong\x20credentials','statusCode','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../mysqldb','../../components/integrations/configuration','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','save','update','then','destroy','error','name','index','map','SalesforceAccount','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','rawAttributes','length','includeAll','find','create','body','getConfigurations','findOne','SalesforceConfiguration','order','sort','addConfiguration','AccountId'];(function(_0x3e0483,_0x10f5d8){var _0x4a2e16=function(_0x2f1e2c){while(--_0x2f1e2c){_0x3e0483['push'](_0x3e0483['shift']());}};_0x4a2e16(++_0x10f5d8);}(_0x7ed9,0x19b));var _0x97ed=function(_0x52c627,_0x780842){_0x52c627=_0x52c627-0x0;var _0x48d0fd=_0x7ed9[_0x52c627];return _0x48d0fd;};'use strict';var emlformat=require(_0x97ed('0x0'));var rimraf=require(_0x97ed('0x1'));var zipdir=require(_0x97ed('0x2'));var jsonpatch=require(_0x97ed('0x3'));var rp=require(_0x97ed('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x97ed('0x5'));var util=require(_0x97ed('0x6'));var path=require(_0x97ed('0x7'));var sox=require(_0x97ed('0x8'));var csv=require(_0x97ed('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x97ed('0xa'));var _=require(_0x97ed('0xb'));var squel=require(_0x97ed('0xc'));var crypto=require(_0x97ed('0xd'));var jsforce=require(_0x97ed('0xe'));var deskjs=require(_0x97ed('0xf'));var toCsv=require('to-csv');var querystring=require(_0x97ed('0x10'));var Papa=require(_0x97ed('0x11'));var Redis=require('ioredis');var authService=require(_0x97ed('0x12'));var qs=require(_0x97ed('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x97ed('0x14'));var logger=require('../../config/logger')(_0x97ed('0x15'));var utils=require(_0x97ed('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x97ed('0x17'))['db'];var integrations=require(_0x97ed('0x18'));function respondWithStatusCode(_0x5f1c2a,_0x162d80){_0x162d80=_0x162d80||0xcc;return function(_0x5bddc0){if(_0x5bddc0){return _0x5f1c2a['sendStatus'](_0x162d80);}return _0x5f1c2a[_0x97ed('0x19')](_0x162d80)[_0x97ed('0x1a')]();};}function respondWithResult(_0x5bfe8f,_0x3a8d9d){_0x3a8d9d=_0x3a8d9d||0xc8;return function(_0x5b2337){if(_0x5b2337){return _0x5bfe8f['status'](_0x3a8d9d)[_0x97ed('0x1b')](_0x5b2337);}};}function respondWithFilteredResult(_0x423e1c,_0x2494d6){return function(_0x5b80f7){if(_0x5b80f7){var _0x428017=typeof _0x2494d6[_0x97ed('0x1c')]==='undefined'&&typeof _0x2494d6[_0x97ed('0x1d')]===_0x97ed('0x1e');var _0x35b1ef=_0x5b80f7[_0x97ed('0x1f')];var _0x314cda=_0x428017?0x0:_0x2494d6['offset'];var _0x4d15f1=_0x428017?_0x5b80f7['count']:_0x2494d6[_0x97ed('0x1c')]+_0x2494d6['limit'];var _0x4b933a;if(_0x4d15f1>=_0x35b1ef){_0x4d15f1=_0x35b1ef;_0x4b933a=0xc8;}else{_0x4b933a=0xce;}_0x423e1c[_0x97ed('0x19')](_0x4b933a);return _0x423e1c[_0x97ed('0x20')](_0x97ed('0x21'),_0x314cda+'-'+_0x4d15f1+'/'+_0x35b1ef)['json'](_0x5b80f7);}return null;};}function patchUpdates(_0x452e37){return function(_0x3f20eb){try{jsonpatch[_0x97ed('0x22')](_0x3f20eb,_0x452e37,!![]);}catch(_0x27ccc7){return BPromise['reject'](_0x27ccc7);}return _0x3f20eb[_0x97ed('0x23')]();};}function saveUpdates(_0x670f0f,_0x4ca5df){return function(_0x4f73f2){if(_0x4f73f2){return _0x4f73f2[_0x97ed('0x24')](_0x670f0f)[_0x97ed('0x25')](function(_0x4fdec0){return _0x4fdec0;});}return null;};}function removeEntity(_0x45619e,_0x1a3728){return function(_0x5eb1fd){if(_0x5eb1fd){return _0x5eb1fd[_0x97ed('0x26')]()[_0x97ed('0x25')](function(){_0x45619e[_0x97ed('0x19')](0xcc)[_0x97ed('0x1a')]();});}};}function handleEntityNotFound(_0x1fcde1,_0x28e50e){return function(_0x22f759){if(!_0x22f759){_0x1fcde1['sendStatus'](0x194);}return _0x22f759;};}function handleError(_0x283596,_0x5068e3){_0x5068e3=_0x5068e3||0x1f4;return function(_0x10d48f){logger[_0x97ed('0x27')](_0x10d48f['stack']);if(_0x10d48f['name']){delete _0x10d48f[_0x97ed('0x28')];}_0x283596[_0x97ed('0x19')](_0x5068e3)['send'](_0x10d48f);};}exports[_0x97ed('0x29')]=function(_0x2c5a56,_0x5dfe8d){var _0xc4682={},_0x185d04={},_0x34126e={'count':0x0,'rows':[]};var _0x3cdf0a=_[_0x97ed('0x2a')](db[_0x97ed('0x2b')]['rawAttributes'],function(_0x3d6e3a){return{'name':_0x3d6e3a[_0x97ed('0x2c')],'type':_0x3d6e3a[_0x97ed('0x2d')][_0x97ed('0x2e')]};});_0x185d04[_0x97ed('0x2f')]=_[_0x97ed('0x2a')](_0x3cdf0a,_0x97ed('0x28'));_0x185d04[_0x97ed('0x30')]=_[_0x97ed('0x31')](_0x2c5a56['query']);_0x185d04[_0x97ed('0x32')]=_[_0x97ed('0x33')](_0x185d04[_0x97ed('0x2f')],_0x185d04[_0x97ed('0x30')]);_0xc4682[_0x97ed('0x34')]=_[_0x97ed('0x33')](_0x185d04[_0x97ed('0x2f')],qs[_0x97ed('0x35')](_0x2c5a56['query'][_0x97ed('0x35')]));_0xc4682['attributes']=_0xc4682[_0x97ed('0x34')]['length']?_0xc4682['attributes']:_0x185d04[_0x97ed('0x2f')];if(!_0x2c5a56[_0x97ed('0x30')][_0x97ed('0x36')](_0x97ed('0x37'))){_0xc4682[_0x97ed('0x1d')]=qs['limit'](_0x2c5a56[_0x97ed('0x30')][_0x97ed('0x1d')]);_0xc4682[_0x97ed('0x1c')]=qs[_0x97ed('0x1c')](_0x2c5a56[_0x97ed('0x30')][_0x97ed('0x1c')]);}_0xc4682['order']=qs['sort'](_0x2c5a56[_0x97ed('0x30')]['sort']);_0xc4682[_0x97ed('0x38')]=qs[_0x97ed('0x32')](_[_0x97ed('0x39')](_0x2c5a56[_0x97ed('0x30')],_0x185d04[_0x97ed('0x32')]),_0x3cdf0a);if(_0x2c5a56[_0x97ed('0x30')][_0x97ed('0x3a')]){_0xc4682['where']=_[_0x97ed('0x3b')](_0xc4682['where'],{'$or':_[_0x97ed('0x2a')](_0x3cdf0a,function(_0x2e6f0a){if(_0x2e6f0a['type']!==_0x97ed('0x3c')){var _0x12b903={};_0x12b903[_0x2e6f0a['name']]={'$like':'%'+_0x2c5a56['query'][_0x97ed('0x3a')]+'%'};return _0x12b903;}})});}_0xc4682=_['merge']({},_0xc4682,_0x2c5a56[_0x97ed('0x3d')]);var _0xf40c94={'where':_0xc4682[_0x97ed('0x38')]};return db[_0x97ed('0x2b')][_0x97ed('0x1f')](_0xf40c94)['then'](function(_0x373811){_0x34126e[_0x97ed('0x1f')]=_0x373811;if(_0x2c5a56['query']['includeAll']){_0xc4682[_0x97ed('0x3e')]=[{'all':!![]}];}return db[_0x97ed('0x2b')][_0x97ed('0x3f')](_0xc4682);})[_0x97ed('0x25')](function(_0x247d9a){_0x34126e[_0x97ed('0x40')]=_0x247d9a;return _0x34126e;})['then'](respondWithFilteredResult(_0x5dfe8d,_0xc4682))[_0x97ed('0x41')](handleError(_0x5dfe8d,null));};exports[_0x97ed('0x42')]=function(_0x289a44,_0x5e8c20){var _0x1ac7d0={'raw':![],'where':{'id':_0x289a44[_0x97ed('0x43')]['id']}},_0x8ae2ae={};_0x8ae2ae[_0x97ed('0x2f')]=_['keys'](db[_0x97ed('0x2b')][_0x97ed('0x44')]);_0x8ae2ae[_0x97ed('0x30')]=_[_0x97ed('0x31')](_0x289a44[_0x97ed('0x30')]);_0x8ae2ae[_0x97ed('0x32')]=_['intersection'](_0x8ae2ae[_0x97ed('0x2f')],_0x8ae2ae['query']);_0x1ac7d0[_0x97ed('0x34')]=_[_0x97ed('0x33')](_0x8ae2ae[_0x97ed('0x2f')],qs[_0x97ed('0x35')](_0x289a44[_0x97ed('0x30')]['fields']));_0x1ac7d0['attributes']=_0x1ac7d0[_0x97ed('0x34')][_0x97ed('0x45')]?_0x1ac7d0['attributes']:_0x8ae2ae['model'];if(_0x289a44[_0x97ed('0x30')][_0x97ed('0x46')]){_0x1ac7d0[_0x97ed('0x3e')]=[{'all':!![]}];}_0x1ac7d0=_[_0x97ed('0x3b')]({},_0x1ac7d0,_0x289a44[_0x97ed('0x3d')]);return db[_0x97ed('0x2b')][_0x97ed('0x47')](_0x1ac7d0)[_0x97ed('0x25')](handleEntityNotFound(_0x5e8c20,null))['then'](respondWithResult(_0x5e8c20,null))[_0x97ed('0x41')](handleError(_0x5e8c20,null));};exports[_0x97ed('0x48')]=function(_0x362fd1,_0x19cd67){return db[_0x97ed('0x2b')][_0x97ed('0x48')](_0x362fd1[_0x97ed('0x49')],{})['then'](respondWithResult(_0x19cd67,0xc9))[_0x97ed('0x41')](handleError(_0x19cd67,null));};exports[_0x97ed('0x24')]=function(_0x8babf1,_0x3469d1){if(_0x8babf1['body']['id']){delete _0x8babf1['body']['id'];}return db[_0x97ed('0x2b')][_0x97ed('0x47')]({'where':{'id':_0x8babf1[_0x97ed('0x43')]['id']}})[_0x97ed('0x25')](handleEntityNotFound(_0x3469d1,null))[_0x97ed('0x25')](saveUpdates(_0x8babf1['body'],null))[_0x97ed('0x25')](respondWithResult(_0x3469d1,null))['catch'](handleError(_0x3469d1,null));};exports[_0x97ed('0x26')]=function(_0x4953e3,_0x1a4999){return db['SalesforceAccount']['find']({'where':{'id':_0x4953e3[_0x97ed('0x43')]['id']}})[_0x97ed('0x25')](handleEntityNotFound(_0x1a4999,null))[_0x97ed('0x25')](removeEntity(_0x1a4999,null))[_0x97ed('0x41')](handleError(_0x1a4999,null));};exports[_0x97ed('0x4a')]=function(_0x33a6ea,_0x1f90f0,_0xa53cbb){var _0x2ec498={};var _0x220bf8={};var _0x19aced;var _0x4e2852;return db[_0x97ed('0x2b')][_0x97ed('0x4b')]({'where':{'id':_0x33a6ea[_0x97ed('0x43')]['id']}})[_0x97ed('0x25')](handleEntityNotFound(_0x1f90f0,null))[_0x97ed('0x25')](function(_0x477c89){if(_0x477c89){_0x19aced=_0x477c89;_0x220bf8[_0x97ed('0x2f')]=_['keys'](db[_0x97ed('0x4c')]['rawAttributes']);_0x220bf8['query']=_[_0x97ed('0x31')](_0x33a6ea['query']);_0x220bf8[_0x97ed('0x32')]=_[_0x97ed('0x33')](_0x220bf8[_0x97ed('0x2f')],_0x220bf8[_0x97ed('0x30')]);_0x2ec498['attributes']=_[_0x97ed('0x33')](_0x220bf8[_0x97ed('0x2f')],qs[_0x97ed('0x35')](_0x33a6ea[_0x97ed('0x30')][_0x97ed('0x35')]));_0x2ec498[_0x97ed('0x34')]=_0x2ec498[_0x97ed('0x34')]['length']?_0x2ec498[_0x97ed('0x34')]:_0x220bf8['model'];_0x2ec498[_0x97ed('0x4d')]=qs[_0x97ed('0x4e')](_0x33a6ea['query']['sort']);_0x2ec498[_0x97ed('0x38')]=qs[_0x97ed('0x32')](_[_0x97ed('0x39')](_0x33a6ea[_0x97ed('0x30')],_0x220bf8[_0x97ed('0x32')]));if(_0x33a6ea[_0x97ed('0x30')][_0x97ed('0x3a')]){_0x2ec498['where']=_[_0x97ed('0x3b')](_0x2ec498[_0x97ed('0x38')],{'$or':_[_0x97ed('0x2a')](_0x2ec498[_0x97ed('0x34')],function(_0x19a6a0){var _0x38d5e7={};_0x38d5e7[_0x19a6a0]={'$like':'%'+_0x33a6ea[_0x97ed('0x30')][_0x97ed('0x3a')]+'%'};return _0x38d5e7;})});}_0x2ec498=_['merge']({},_0x2ec498,_0x33a6ea[_0x97ed('0x3d')]);return _0x19aced[_0x97ed('0x4a')](_0x2ec498);}})['then'](function(_0x26b52e){if(_0x26b52e){_0x4e2852=_0x26b52e[_0x97ed('0x45')];if(!_0x33a6ea[_0x97ed('0x30')]['hasOwnProperty'](_0x97ed('0x37'))){_0x2ec498[_0x97ed('0x1d')]=qs[_0x97ed('0x1d')](_0x33a6ea['query'][_0x97ed('0x1d')]);_0x2ec498[_0x97ed('0x1c')]=qs[_0x97ed('0x1c')](_0x33a6ea[_0x97ed('0x30')][_0x97ed('0x1c')]);}return _0x19aced[_0x97ed('0x4a')](_0x2ec498);}})[_0x97ed('0x25')](function(_0x1dc655){if(_0x1dc655){return _0x1dc655?{'count':_0x4e2852,'rows':_0x1dc655}:null;}})[_0x97ed('0x25')](respondWithResult(_0x1f90f0,null))['catch'](handleError(_0x1f90f0,null));};exports[_0x97ed('0x4f')]=function(_0x13bc30,_0xf484dc,_0x214ae3){if(_0x13bc30['body']['id']){delete _0x13bc30[_0x97ed('0x49')]['id'];}return db[_0x97ed('0x2b')][_0x97ed('0x4b')]({'where':{'id':_0x13bc30[_0x97ed('0x43')]['id']}})[_0x97ed('0x25')](handleEntityNotFound(_0xf484dc,null))[_0x97ed('0x25')](function(_0x10cda3){if(_0x10cda3){_0x13bc30['body'][_0x97ed('0x50')]=_0x10cda3['id'];_0x13bc30[_0x97ed('0x49')][_0x97ed('0x51')]=integrations[_0x97ed('0x52')](_0x13bc30['body']['channel'],_0x13bc30[_0x97ed('0x49')]['type']);_0x13bc30[_0x97ed('0x49')][_0x97ed('0x53')]=integrations['getDescriptions'](_0x13bc30[_0x97ed('0x49')][_0x97ed('0x54')],_0x13bc30[_0x97ed('0x49')][_0x97ed('0x2d')]);return db[_0x97ed('0x4c')][_0x97ed('0x48')](_0x13bc30[_0x97ed('0x49')],{'include':[{'model':db[_0x97ed('0x55')],'as':'Subjects'},{'model':db['SalesforceField'],'as':_0x97ed('0x53')}]});}return null;})[_0x97ed('0x25')](respondWithResult(_0xf484dc,null))['catch'](handleError(_0xf484dc,null));};exports['getFields']=function(_0x329744,_0x411103,_0x4f1328){var _0x3bfee4;var _0x1463a6='';var _0x2db2be=_0x97ed('0x56');return db[_0x97ed('0x2b')]['findOne']({'where':{'id':_0x329744[_0x97ed('0x43')]['id']},'attributes':['id',_0x97ed('0x57'),_0x97ed('0x58'),'clientSecret',_0x97ed('0x59'),_0x97ed('0x5a'),_0x97ed('0x5b')]})[_0x97ed('0x25')](handleEntityNotFound(_0x411103,null))[_0x97ed('0x25')](function(_0x2e918f){if(_0x2e918f){_0x1463a6=_0x2e918f[_0x97ed('0x57')];var _0x3bf266=_0x1463a6[_0x97ed('0x5c')](-0x1);if(_0x3bf266==='/'){_0x1463a6=_0x1463a6[_0x97ed('0x5d')](0x0,_0x1463a6[_0x97ed('0x5e')](_0x3bf266));}_0x3bfee4=new jsforce[(_0x97ed('0x5f'))]({'oauth2':{'loginUrl':_0x1463a6,'clientId':_0x2e918f[_0x97ed('0x58')],'clientSecret':_0x2e918f[_0x97ed('0x60')]}});return _0x3bfee4[_0x97ed('0x61')](_0x2e918f[_0x97ed('0x59')],_0x2e918f[_0x97ed('0x5a')]['concat'](_0x2e918f[_0x97ed('0x5b')]));}})[_0x97ed('0x25')](function(_0x5ce9e4){if(_0x5ce9e4){if(!_[_0x97ed('0x62')](_0x329744[_0x97ed('0x30')]['ticketType'])){_0x2db2be=_0x329744[_0x97ed('0x30')][_0x97ed('0x63')];}return _0x3bfee4['sobject'](_0x2db2be)[_0x97ed('0x64')]();}})[_0x97ed('0x25')](function(_0x4ec2fd){var _0x5ca751=['OwnerId','ActivityDate',_0x97ed('0x65'),_0x97ed('0x66'),_0x97ed('0x67'),'Description'];var _0x53c839=[_0x97ed('0x68'),_0x97ed('0x69'),_0x97ed('0x6a'),_0x97ed('0x6b'),_0x97ed('0x6c'),'textarea',_0x97ed('0x6d')];if(_0x4ec2fd){_['remove'](_0x4ec2fd['fields'],function(_0x100a77){return _0x5ca751[_0x97ed('0x6e')](_0x100a77[_0x97ed('0x28')])||!_0x53c839[_0x97ed('0x6e')](_0x100a77[_0x97ed('0x2d')]);});return{'count':_0x4ec2fd[_0x97ed('0x35')]['length'],'rows':_[_0x97ed('0x2a')](_0x4ec2fd[_0x97ed('0x35')],function(_0x3e0037){return{'id':_0x3e0037[_0x97ed('0x28')],'name':_0x3e0037[_0x97ed('0x6f')],'custom':_0x3e0037['custom'],'options':_0x3e0037['picklistValues'][_0x97ed('0x45')]>0x0?_['map'](_0x3e0037[_0x97ed('0x70')],function(_0x44bcfd){return{'name':_0x44bcfd['label'],'value':_0x44bcfd[_0x97ed('0x71')]};}):_0x3e0037[_0x97ed('0x2d')]==_0x97ed('0x6b')?[{'name':_0x97ed('0x72'),'value':_0x97ed('0x73')},{'name':_0x97ed('0x74'),'value':'false'}]:[]};})};}})[_0x97ed('0x25')](respondWithResult(_0x411103,null))[_0x97ed('0x41')](function(_0x430196){var _0x1fa438=_0x329744['query'][_0x97ed('0x75')]?0x1f4:_0x430196['statusCode']||0x1f4;logger[_0x97ed('0x27')](_0x97ed('0x76'),_0x97ed('0x77'),_0x1fa438,JSON['stringify'](_0x430196));delete _0x430196[_0x97ed('0x28')];if(_0x1fa438===0x191){_0x1fa438=0x190;}_0x411103[_0x97ed('0x19')](_0x1fa438)[_0x97ed('0x78')](_0x329744[_0x97ed('0x30')]['test']?{'message':_0x97ed('0x79'),'statusCode':_0x430196[_0x97ed('0x7a')]}:_0x430196);});};
\ No newline at end of file
index 134974f..b8d3e93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c12=['request-promise','path','rimraf','../../config/environment','./intSalesforceAccount.attributes','exports','int_salesforce_accounts','util','../../config/logger','moment','bluebird'];(function(_0x59d0cc,_0xa7c52b){var _0x2ae79f=function(_0x33042e){while(--_0x33042e){_0x59d0cc['push'](_0x59d0cc['shift']());}};_0x2ae79f(++_0xa7c52b);}(_0x5c12,0x188));var _0x25c1=function(_0x4e21ba,_0x18097f){_0x4e21ba=_0x4e21ba-0x0;var _0x55b94b=_0x5c12[_0x4e21ba];return _0x55b94b;};'use strict';var _=require('lodash');var util=require(_0x25c1('0x0'));var logger=require(_0x25c1('0x1'))('api');var moment=require(_0x25c1('0x2'));var BPromise=require(_0x25c1('0x3'));var rp=require(_0x25c1('0x4'));var fs=require('fs');var path=require(_0x25c1('0x5'));var rimraf=require(_0x25c1('0x6'));var config=require(_0x25c1('0x7'));var attributes=require(_0x25c1('0x8'));var integrations=require('../../components/integrations/configuration');module[_0x25c1('0x9')]=function(_0x42ac16,_0x382922){return _0x42ac16['define']('SalesforceAccount',attributes,{'tableName':_0x25c1('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8f02=['request-promise','path','./intSalesforceAccount.attributes','../../components/integrations/configuration','exports','define','SalesforceAccount','lodash','util','../../config/logger','api','moment'];(function(_0x50e3b3,_0x5a3090){var _0x2ff644=function(_0x3051ab){while(--_0x3051ab){_0x50e3b3['push'](_0x50e3b3['shift']());}};_0x2ff644(++_0x5a3090);}(_0x8f02,0x73));var _0x28f0=function(_0x1a60ff,_0x2ae572){_0x1a60ff=_0x1a60ff-0x0;var _0x300522=_0x8f02[_0x1a60ff];return _0x300522;};'use strict';var _=require(_0x28f0('0x0'));var util=require(_0x28f0('0x1'));var logger=require(_0x28f0('0x2'))(_0x28f0('0x3'));var moment=require(_0x28f0('0x4'));var BPromise=require('bluebird');var rp=require(_0x28f0('0x5'));var fs=require('fs');var path=require(_0x28f0('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x28f0('0x7'));var integrations=require(_0x28f0('0x8'));module[_0x28f0('0x9')]=function(_0x4250b4,_0x551918){return _0x4250b4[_0x28f0('0xa')](_0x28f0('0xb'),attributes,{'tableName':'int_salesforce_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8aec268..3016a71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb82=['../../config/utils','../../config/logger','rpc','../../config/environment','http','info','SalesforceAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','GetSalesforceAccount','findAll','raw','options','limit','include','attributes','map','model','then','ShowSalesforceAccount','SalesforceAccount','find','where','lodash','moment','bluebird','../../mysqldb'];(function(_0x1e2321,_0x3ae1c5){var _0x1d346d=function(_0x24f171){while(--_0x24f171){_0x1e2321['push'](_0x1e2321['shift']());}};_0x1d346d(++_0x3ae1c5);}(_0xdb82,0x1dc));var _0x2db8=function(_0xc8d13,_0x5c672c){_0xc8d13=_0xc8d13-0x0;var _0x529ed2=_0xdb82[_0xc8d13];return _0x529ed2;};'use strict';var _=require(_0x2db8('0x0'));var util=require('util');var moment=require(_0x2db8('0x1'));var BPromise=require(_0x2db8('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2db8('0x3'))['db'];var utils=require(_0x2db8('0x4'));var logger=require(_0x2db8('0x5'))(_0x2db8('0x6'));var config=require(_0x2db8('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x2db8('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5c2db2,_0x53c01f,_0x4d98a6){return new BPromise(function(_0x571ed1,_0x1500d0){return client['request'](_0x5c2db2,_0x4d98a6)['then'](function(_0x4a96c2){logger[_0x2db8('0x9')](_0x2db8('0xa'),_0x53c01f,_0x2db8('0xb'));logger[_0x2db8('0xc')]('SalesforceAccount,\x20%s,\x20%s,\x20%s',_0x53c01f,_0x2db8('0xb'),JSON[_0x2db8('0xd')](_0x4a96c2));if(_0x4a96c2[_0x2db8('0xe')]){if(_0x4a96c2['error']['code']===0x1f4){logger[_0x2db8('0xe')](_0x2db8('0xa'),_0x53c01f,_0x4a96c2[_0x2db8('0xe')][_0x2db8('0xf')]);return _0x1500d0(_0x4a96c2['error'][_0x2db8('0xf')]);}logger[_0x2db8('0xe')](_0x2db8('0xa'),_0x53c01f,_0x4a96c2[_0x2db8('0xe')]['message']);return _0x571ed1(_0x4a96c2[_0x2db8('0xe')][_0x2db8('0xf')]);}else{logger[_0x2db8('0x9')](_0x2db8('0xa'),_0x53c01f,_0x2db8('0xb'));_0x571ed1(_0x4a96c2[_0x2db8('0x10')]['message']);}})[_0x2db8('0x11')](function(_0x144745){logger[_0x2db8('0xe')](_0x2db8('0xa'),_0x53c01f,_0x144745);_0x1500d0(_0x144745);});});}exports[_0x2db8('0x12')]=function(_0x251481){var _0x59ce7a=this;return new Promise(function(_0x3d1f68,_0x89e7e2){return db['SalesforceAccount'][_0x2db8('0x13')]({'raw':_0x251481['options']?_0x251481['options'][_0x2db8('0x14')]===undefined?!![]:![]:!![],'where':_0x251481['options']?_0x251481[_0x2db8('0x15')]['where']||null:null,'attributes':_0x251481[_0x2db8('0x15')]?_0x251481[_0x2db8('0x15')]['attributes']||null:null,'limit':_0x251481[_0x2db8('0x15')]?_0x251481[_0x2db8('0x15')][_0x2db8('0x16')]||null:null,'include':_0x251481[_0x2db8('0x15')]?_0x251481[_0x2db8('0x15')][_0x2db8('0x17')]?_['map'](_0x251481['options'][_0x2db8('0x17')],function(_0xe8d69b){return{'model':db[_0xe8d69b['model']],'as':_0xe8d69b['as'],'attributes':_0xe8d69b[_0x2db8('0x18')],'include':_0xe8d69b[_0x2db8('0x17')]?_[_0x2db8('0x19')](_0xe8d69b[_0x2db8('0x17')],function(_0x1d7ce6){return{'model':db[_0x1d7ce6[_0x2db8('0x1a')]],'as':_0x1d7ce6['as'],'attributes':_0x1d7ce6[_0x2db8('0x18')],'include':_0x1d7ce6[_0x2db8('0x17')]?_[_0x2db8('0x19')](_0x1d7ce6[_0x2db8('0x17')],function(_0x58bff1){return{'model':db[_0x58bff1[_0x2db8('0x1a')]],'as':_0x58bff1['as'],'attributes':_0x58bff1[_0x2db8('0x18')]};}):[]};}):[]};}):[]:[]})[_0x2db8('0x1b')](function(_0x357173){logger[_0x2db8('0x9')](_0x2db8('0x12'),_0x251481);logger[_0x2db8('0xc')](_0x2db8('0x12'),_0x251481,JSON[_0x2db8('0xd')](_0x357173));_0x3d1f68(_0x357173);})[_0x2db8('0x11')](function(_0x48c740){logger[_0x2db8('0xe')](_0x2db8('0x12'),_0x48c740['message'],_0x251481);_0x89e7e2(_0x59ce7a[_0x2db8('0xe')](0x1f4,_0x48c740[_0x2db8('0xf')]));});});};exports[_0x2db8('0x1c')]=function(_0xc344e2){var _0x514196=this;return new Promise(function(_0x162b7d,_0x31380f){return db[_0x2db8('0x1d')][_0x2db8('0x1e')]({'raw':_0xc344e2[_0x2db8('0x15')]?_0xc344e2[_0x2db8('0x15')][_0x2db8('0x14')]===undefined?!![]:![]:!![],'where':_0xc344e2[_0x2db8('0x15')]?_0xc344e2[_0x2db8('0x15')][_0x2db8('0x1f')]||null:null,'attributes':_0xc344e2['options']?_0xc344e2['options'][_0x2db8('0x18')]||null:null,'include':_0xc344e2[_0x2db8('0x15')]?_0xc344e2[_0x2db8('0x15')][_0x2db8('0x17')]?_[_0x2db8('0x19')](_0xc344e2[_0x2db8('0x15')]['include'],function(_0x541d35){return{'model':db[_0x541d35[_0x2db8('0x1a')]],'as':_0x541d35['as'],'attributes':_0x541d35[_0x2db8('0x18')],'include':_0x541d35[_0x2db8('0x17')]?_[_0x2db8('0x19')](_0x541d35[_0x2db8('0x17')],function(_0x4bb312){return{'model':db[_0x4bb312[_0x2db8('0x1a')]],'as':_0x4bb312['as'],'attributes':_0x4bb312[_0x2db8('0x18')],'include':_0x4bb312[_0x2db8('0x17')]?_[_0x2db8('0x19')](_0x4bb312['include'],function(_0x78b895){return{'model':db[_0x78b895[_0x2db8('0x1a')]],'as':_0x78b895['as'],'attributes':_0x78b895['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0xb2983f){logger[_0x2db8('0x9')]('ShowSalesforceAccount',_0xc344e2);logger[_0x2db8('0xc')](_0x2db8('0x1c'),_0xc344e2,JSON[_0x2db8('0xd')](_0xb2983f));_0x162b7d(_0xb2983f);})[_0x2db8('0x11')](function(_0x211b3c){logger[_0x2db8('0xe')](_0x2db8('0x1c'),_0x211b3c[_0x2db8('0xf')],_0xc344e2);_0x31380f(_0x514196[_0x2db8('0xe')](0x1f4,_0x211b3c['message']));});});};
\ No newline at end of file
+var _0x8328=['jayson/promise','client','request','then','info','request\x20sent','SalesforceAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','SalesforceAccount,\x20%s,\x20%s','message','GetSalesforceAccount','SalesforceAccount','options','where','attributes','include','map','model','debug','catch','ShowSalesforceAccount','find','lodash','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x400318,_0xa7c1b3){var _0x56030a=function(_0x41ecd3){while(--_0x41ecd3){_0x400318['push'](_0x400318['shift']());}};_0x56030a(++_0xa7c1b3);}(_0x8328,0xb3));var _0x8832=function(_0x56d274,_0x4461cb){_0x56d274=_0x56d274-0x0;var _0x17b15e=_0x8328[_0x56d274];return _0x17b15e;};'use strict';var _=require(_0x8832('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x8832('0x1'));var fs=require('fs');var Redis=require(_0x8832('0x2'));var db=require(_0x8832('0x3'))['db'];var utils=require(_0x8832('0x4'));var logger=require(_0x8832('0x5'))(_0x8832('0x6'));var config=require('../../config/environment');var jayson=require(_0x8832('0x7'));var client=jayson[_0x8832('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x34e04d,_0x1823ef,_0x506f3c){return new BPromise(function(_0x1f22b8,_0x425057){return client[_0x8832('0x9')](_0x34e04d,_0x506f3c)[_0x8832('0xa')](function(_0x4be73f){logger[_0x8832('0xb')]('SalesforceAccount,\x20%s,\x20%s',_0x1823ef,_0x8832('0xc'));logger['debug'](_0x8832('0xd'),_0x1823ef,_0x8832('0xc'),JSON[_0x8832('0xe')](_0x4be73f));if(_0x4be73f['error']){if(_0x4be73f[_0x8832('0xf')][_0x8832('0x10')]===0x1f4){logger[_0x8832('0xf')](_0x8832('0x11'),_0x1823ef,_0x4be73f['error']['message']);return _0x425057(_0x4be73f[_0x8832('0xf')][_0x8832('0x12')]);}logger[_0x8832('0xf')]('SalesforceAccount,\x20%s,\x20%s',_0x1823ef,_0x4be73f['error'][_0x8832('0x12')]);return _0x1f22b8(_0x4be73f[_0x8832('0xf')]['message']);}else{logger['info'](_0x8832('0x11'),_0x1823ef,_0x8832('0xc'));_0x1f22b8(_0x4be73f['result'][_0x8832('0x12')]);}})['catch'](function(_0x5efb4d){logger['error'](_0x8832('0x11'),_0x1823ef,_0x5efb4d);_0x425057(_0x5efb4d);});});}exports[_0x8832('0x13')]=function(_0x47a7c0){var _0x38b96d=this;return new Promise(function(_0x23100a,_0x485adb){return db[_0x8832('0x14')]['findAll']({'raw':_0x47a7c0[_0x8832('0x15')]?_0x47a7c0[_0x8832('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x47a7c0[_0x8832('0x15')]?_0x47a7c0['options'][_0x8832('0x16')]||null:null,'attributes':_0x47a7c0[_0x8832('0x15')]?_0x47a7c0[_0x8832('0x15')][_0x8832('0x17')]||null:null,'limit':_0x47a7c0[_0x8832('0x15')]?_0x47a7c0[_0x8832('0x15')]['limit']||null:null,'include':_0x47a7c0[_0x8832('0x15')]?_0x47a7c0[_0x8832('0x15')][_0x8832('0x18')]?_[_0x8832('0x19')](_0x47a7c0['options'][_0x8832('0x18')],function(_0x41d280){return{'model':db[_0x41d280[_0x8832('0x1a')]],'as':_0x41d280['as'],'attributes':_0x41d280['attributes'],'include':_0x41d280[_0x8832('0x18')]?_[_0x8832('0x19')](_0x41d280['include'],function(_0x169f96){return{'model':db[_0x169f96['model']],'as':_0x169f96['as'],'attributes':_0x169f96[_0x8832('0x17')],'include':_0x169f96['include']?_['map'](_0x169f96[_0x8832('0x18')],function(_0x2a0c52){return{'model':db[_0x2a0c52['model']],'as':_0x2a0c52['as'],'attributes':_0x2a0c52[_0x8832('0x17')]};}):[]};}):[]};}):[]:[]})[_0x8832('0xa')](function(_0x18d318){logger['info'](_0x8832('0x13'),_0x47a7c0);logger[_0x8832('0x1b')]('GetSalesforceAccount',_0x47a7c0,JSON[_0x8832('0xe')](_0x18d318));_0x23100a(_0x18d318);})[_0x8832('0x1c')](function(_0x127a73){logger['error'](_0x8832('0x13'),_0x127a73['message'],_0x47a7c0);_0x485adb(_0x38b96d[_0x8832('0xf')](0x1f4,_0x127a73['message']));});});};exports[_0x8832('0x1d')]=function(_0x2e18d7){var _0x2bef07=this;return new Promise(function(_0x321fb1,_0x34d3db){return db['SalesforceAccount'][_0x8832('0x1e')]({'raw':_0x2e18d7['options']?_0x2e18d7['options']['raw']===undefined?!![]:![]:!![],'where':_0x2e18d7[_0x8832('0x15')]?_0x2e18d7[_0x8832('0x15')][_0x8832('0x16')]||null:null,'attributes':_0x2e18d7[_0x8832('0x15')]?_0x2e18d7[_0x8832('0x15')][_0x8832('0x17')]||null:null,'include':_0x2e18d7[_0x8832('0x15')]?_0x2e18d7[_0x8832('0x15')][_0x8832('0x18')]?_[_0x8832('0x19')](_0x2e18d7[_0x8832('0x15')][_0x8832('0x18')],function(_0x1033dd){return{'model':db[_0x1033dd['model']],'as':_0x1033dd['as'],'attributes':_0x1033dd[_0x8832('0x17')],'include':_0x1033dd[_0x8832('0x18')]?_[_0x8832('0x19')](_0x1033dd[_0x8832('0x18')],function(_0x4c1352){return{'model':db[_0x4c1352[_0x8832('0x1a')]],'as':_0x4c1352['as'],'attributes':_0x4c1352['attributes'],'include':_0x4c1352['include']?_['map'](_0x4c1352[_0x8832('0x18')],function(_0x3cddea){return{'model':db[_0x3cddea[_0x8832('0x1a')]],'as':_0x3cddea['as'],'attributes':_0x3cddea['attributes']};}):[]};}):[]};}):[]:[]})[_0x8832('0xa')](function(_0x17056b){logger[_0x8832('0xb')](_0x8832('0x1d'),_0x2e18d7);logger['debug']('ShowSalesforceAccount',_0x2e18d7,JSON[_0x8832('0xe')](_0x17056b));_0x321fb1(_0x17056b);})['catch'](function(_0x15a9a4){logger[_0x8832('0xf')](_0x8832('0x1d'),_0x15a9a4['message'],_0x2e18d7);_0x34d3db(_0x2bef07[_0x8832('0xf')](0x1f4,_0x15a9a4['message']));});});};
\ No newline at end of file
index c3c5185..f9d9b8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./intSalesforceConfiguration.controller','get','/:id','isAuthenticated','show','/:id/fields','getFields','/:id/subjects','/:id/descriptions','getDescriptions','put','update','exports','multer','util','path'];(function(_0x23a755,_0x29494a){var _0x2c9949=function(_0x41addc){while(--_0x41addc){_0x23a755['push'](_0x23a755['shift']());}};_0x2c9949(++_0x29494a);}(_0x2ef3,0xba));var _0x32ef=function(_0xd14523,_0x5db607){_0xd14523=_0xd14523-0x0;var _0x4c4fa7=_0x2ef3[_0xd14523];return _0x4c4fa7;};'use strict';var multer=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var path=require(_0x32ef('0x2'));var timeout=require(_0x32ef('0x3'));var express=require(_0x32ef('0x4'));var router=express[_0x32ef('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x32ef('0x6'));var interaction=require(_0x32ef('0x7'));var config=require('../../config/environment');var controller=require(_0x32ef('0x8'));router[_0x32ef('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x32ef('0x9')](_0x32ef('0xa'),auth[_0x32ef('0xb')](),controller[_0x32ef('0xc')]);router[_0x32ef('0x9')](_0x32ef('0xd'),auth[_0x32ef('0xb')](),controller[_0x32ef('0xe')]);router[_0x32ef('0x9')](_0x32ef('0xf'),auth['isAuthenticated'](),controller['getSubjects']);router[_0x32ef('0x9')](_0x32ef('0x10'),auth[_0x32ef('0xb')](),controller[_0x32ef('0x11')]);router['post']('/',auth[_0x32ef('0xb')](),controller['create']);router[_0x32ef('0x12')]('/:id',auth[_0x32ef('0xb')](),controller[_0x32ef('0x13')]);router['delete']('/:id',auth[_0x32ef('0xb')](),controller['destroy']);module[_0x32ef('0x14')]=router;
\ No newline at end of file
+var _0xadb5=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','/:id/descriptions','getDescriptions','put','update','delete','destroy','exports','util','connect-timeout','express'];(function(_0x233268,_0x52ec20){var _0x99ff92=function(_0x4ba9c4){while(--_0x4ba9c4){_0x233268['push'](_0x233268['shift']());}};_0x99ff92(++_0x52ec20);}(_0xadb5,0xad));var _0x5adb=function(_0x421678,_0xcc6d1e){_0x421678=_0x421678-0x0;var _0xd66a2e=_0xadb5[_0x421678];return _0xd66a2e;};'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('./intSalesforceConfiguration.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('0x7')](_0x5adb('0xe'),auth[_0x5adb('0x8')](),controller['getSubjects']);router['get'](_0x5adb('0xf'),auth[_0x5adb('0x8')](),controller[_0x5adb('0x10')]);router['post']('/',auth[_0x5adb('0x8')](),controller['create']);router[_0x5adb('0x11')]('/:id',auth[_0x5adb('0x8')](),controller[_0x5adb('0x12')]);router[_0x5adb('0x13')]('/:id',auth[_0x5adb('0x8')](),controller[_0x5adb('0x14')]);module[_0x5adb('0x15')]=router;
\ No newline at end of file
index 27cda2c..eae86b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc91=['STRING','ENUM','Task','Case','contact_lead','contact','lead','account','sequelize','exports'];(function(_0x10a280,_0x16b373){var _0x195a69=function(_0x46e761){while(--_0x46e761){_0x10a280['push'](_0x10a280['shift']());}};_0x195a69(++_0x16b373);}(_0xdc91,0x10c));var _0x1dc9=function(_0x24cfe4,_0x22bf37){_0x24cfe4=_0x24cfe4-0x0;var _0x244380=_0xdc91[_0x24cfe4];return _0x244380;};'use strict';var Sequelize=require(_0x1dc9('0x0'));module[_0x1dc9('0x1')]={'name':{'type':Sequelize[_0x1dc9('0x2')]},'description':{'type':Sequelize[_0x1dc9('0x2')]},'ticketType':{'type':Sequelize[_0x1dc9('0x3')](_0x1dc9('0x4'),_0x1dc9('0x5')),'defaultValue':_0x1dc9('0x4')},'moduleSearch':{'type':Sequelize[_0x1dc9('0x3')](_0x1dc9('0x6'),_0x1dc9('0x7'),_0x1dc9('0x8'),'account_contact_lead','account'),'defaultValue':_0x1dc9('0x6')},'moduleCreate':{'type':Sequelize[_0x1dc9('0x3')]('nothing','contact',_0x1dc9('0x8'),_0x1dc9('0x9')),'defaultValue':_0x1dc9('0x8')},'leadId':{'type':Sequelize[_0x1dc9('0x2')]},'additionalSearchAccount':{'type':Sequelize[_0x1dc9('0x2')]},'additionalSearchContact':{'type':Sequelize[_0x1dc9('0x2')]},'additionalSearchLead':{'type':Sequelize[_0x1dc9('0x2')]}};
\ No newline at end of file
+var _0xc045=['Case','contact','account','contact_lead','lead','exports','STRING','ENUM','Task'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0xc045,0x19a));var _0x5c04=function(_0x3cf5a3,_0x5a4492){_0x3cf5a3=_0x3cf5a3-0x0;var _0x39ba2d=_0xc045[_0x3cf5a3];return _0x39ba2d;};'use strict';var Sequelize=require('sequelize');module[_0x5c04('0x0')]={'name':{'type':Sequelize[_0x5c04('0x1')]},'description':{'type':Sequelize[_0x5c04('0x1')]},'ticketType':{'type':Sequelize[_0x5c04('0x2')](_0x5c04('0x3'),_0x5c04('0x4')),'defaultValue':_0x5c04('0x3')},'moduleSearch':{'type':Sequelize['ENUM']('contact_lead',_0x5c04('0x5'),'lead','account_contact_lead',_0x5c04('0x6')),'defaultValue':_0x5c04('0x7')},'moduleCreate':{'type':Sequelize['ENUM']('nothing','contact',_0x5c04('0x8'),_0x5c04('0x6')),'defaultValue':_0x5c04('0x8')},'leadId':{'type':Sequelize[_0x5c04('0x1')]},'additionalSearchAccount':{'type':Sequelize[_0x5c04('0x1')]},'additionalSearchContact':{'type':Sequelize[_0x5c04('0x1')]},'additionalSearchLead':{'type':Sequelize[_0x5c04('0x1')]}};
\ No newline at end of file
index 64b5595..6075563 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8dd9=['apply','reject','save','update','destroy','then','stack','name','send','index','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filter','merge','where','map','type','VIRTUAL','options','includeAll','include','findAll','catch','show','SalesforceConfiguration','rawAttributes','create','body','find','params','findOne','order','getSubjects','SalesforceField','getDescriptions','eml-format','rimraf','zip-dir','request-promise','moment','util','path','sox','ejs','fs-extra','lodash','crypto','to-csv','querystring','../../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'];(function(_0x3f01da,_0x4f4915){var _0x4f3735=function(_0x2d9cc9){while(--_0x2d9cc9){_0x3f01da['push'](_0x3f01da['shift']());}};_0x4f3735(++_0x4f4915);}(_0x8dd9,0x16b));var _0x98dd=function(_0x30d14d,_0x5b7cdc){_0x30d14d=_0x30d14d-0x0;var _0x47054e=_0x8dd9[_0x30d14d];return _0x47054e;};'use strict';var emlformat=require(_0x98dd('0x0'));var rimraf=require(_0x98dd('0x1'));var zipdir=require(_0x98dd('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x98dd('0x3'));var moment=require(_0x98dd('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x98dd('0x5'));var path=require(_0x98dd('0x6'));var sox=require(_0x98dd('0x7'));var csv=require('to-csv');var ejs=require(_0x98dd('0x8'));var fs=require('fs');var fs_extra=require(_0x98dd('0x9'));var _=require(_0x98dd('0xa'));var squel=require('squel');var crypto=require(_0x98dd('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x98dd('0xc'));var querystring=require(_0x98dd('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x98dd('0xe'));var hardwareService=require(_0x98dd('0xf'));var logger=require(_0x98dd('0x10'))(_0x98dd('0x11'));var utils=require(_0x98dd('0x12'));var config=require(_0x98dd('0x13'));var licenseUtil=require(_0x98dd('0x14'));var db=require(_0x98dd('0x15'))['db'];function respondWithStatusCode(_0x205913,_0x1a771c){_0x1a771c=_0x1a771c||0xcc;return function(_0x11e1b6){if(_0x11e1b6){return _0x205913[_0x98dd('0x16')](_0x1a771c);}return _0x205913[_0x98dd('0x17')](_0x1a771c)[_0x98dd('0x18')]();};}function respondWithResult(_0x1f76a6,_0x566841){_0x566841=_0x566841||0xc8;return function(_0x206c98){if(_0x206c98){return _0x1f76a6[_0x98dd('0x17')](_0x566841)[_0x98dd('0x19')](_0x206c98);}};}function respondWithFilteredResult(_0x2e0294,_0x574a1c){return function(_0x373701){if(_0x373701){var _0x50dfce=typeof _0x574a1c[_0x98dd('0x1a')]===_0x98dd('0x1b')&&typeof _0x574a1c[_0x98dd('0x1c')]==='undefined';var _0x3d3645=_0x373701[_0x98dd('0x1d')];var _0x4319da=_0x50dfce?0x0:_0x574a1c[_0x98dd('0x1a')];var _0xee18e0=_0x50dfce?_0x373701[_0x98dd('0x1d')]:_0x574a1c[_0x98dd('0x1a')]+_0x574a1c[_0x98dd('0x1c')];var _0x57ffb3;if(_0xee18e0>=_0x3d3645){_0xee18e0=_0x3d3645;_0x57ffb3=0xc8;}else{_0x57ffb3=0xce;}_0x2e0294['status'](_0x57ffb3);return _0x2e0294[_0x98dd('0x1e')](_0x98dd('0x1f'),_0x4319da+'-'+_0xee18e0+'/'+_0x3d3645)[_0x98dd('0x19')](_0x373701);}return null;};}function patchUpdates(_0x1ad4f7){return function(_0x39a2de){try{jsonpatch[_0x98dd('0x20')](_0x39a2de,_0x1ad4f7,!![]);}catch(_0x23f8ae){return BPromise[_0x98dd('0x21')](_0x23f8ae);}return _0x39a2de[_0x98dd('0x22')]();};}function saveUpdates(_0x55a345,_0xee115e){return function(_0x567dec){if(_0x567dec){return _0x567dec[_0x98dd('0x23')](_0x55a345)['then'](function(_0x1b5a75){return _0x1b5a75;});}return null;};}function removeEntity(_0x4486c1,_0x4c52e3){return function(_0x42e65c){if(_0x42e65c){return _0x42e65c[_0x98dd('0x24')]()[_0x98dd('0x25')](function(){_0x4486c1[_0x98dd('0x17')](0xcc)[_0x98dd('0x18')]();});}};}function handleEntityNotFound(_0x1a49f9,_0x2cd131){return function(_0x564aaa){if(!_0x564aaa){_0x1a49f9[_0x98dd('0x16')](0x194);}return _0x564aaa;};}function handleError(_0x2958d2,_0x214e79){_0x214e79=_0x214e79||0x1f4;return function(_0x50ad0e){logger['error'](_0x50ad0e[_0x98dd('0x26')]);if(_0x50ad0e['name']){delete _0x50ad0e[_0x98dd('0x27')];}_0x2958d2[_0x98dd('0x17')](_0x214e79)[_0x98dd('0x28')](_0x50ad0e);};}exports[_0x98dd('0x29')]=function(_0x2c806e,_0x3dd478){var _0x2c2dc3={},_0x4e5ae1={},_0x3fcf57={'count':0x0,'rows':[]};var _0xb98c0f=_['map'](db['SalesforceConfiguration']['rawAttributes'],function(_0x53883e){return{'name':_0x53883e[_0x98dd('0x2a')],'type':_0x53883e['type'][_0x98dd('0x2b')]};});_0x4e5ae1[_0x98dd('0x2c')]=_['map'](_0xb98c0f,_0x98dd('0x27'));_0x4e5ae1[_0x98dd('0x2d')]=_[_0x98dd('0x2e')](_0x2c806e[_0x98dd('0x2d')]);_0x4e5ae1[_0x98dd('0x2f')]=_[_0x98dd('0x30')](_0x4e5ae1[_0x98dd('0x2c')],_0x4e5ae1[_0x98dd('0x2d')]);_0x2c2dc3[_0x98dd('0x31')]=_[_0x98dd('0x30')](_0x4e5ae1['model'],qs[_0x98dd('0x32')](_0x2c806e[_0x98dd('0x2d')][_0x98dd('0x32')]));_0x2c2dc3[_0x98dd('0x31')]=_0x2c2dc3['attributes'][_0x98dd('0x33')]?_0x2c2dc3['attributes']:_0x4e5ae1['model'];if(!_0x2c806e[_0x98dd('0x2d')][_0x98dd('0x34')](_0x98dd('0x35'))){_0x2c2dc3[_0x98dd('0x1c')]=qs[_0x98dd('0x1c')](_0x2c806e[_0x98dd('0x2d')][_0x98dd('0x1c')]);_0x2c2dc3[_0x98dd('0x1a')]=qs[_0x98dd('0x1a')](_0x2c806e[_0x98dd('0x2d')]['offset']);}_0x2c2dc3['order']=qs['sort'](_0x2c806e[_0x98dd('0x2d')][_0x98dd('0x36')]);_0x2c2dc3['where']=qs['filters'](_[_0x98dd('0x37')](_0x2c806e[_0x98dd('0x2d')],_0x4e5ae1[_0x98dd('0x2f')]),_0xb98c0f);if(_0x2c806e[_0x98dd('0x2d')][_0x98dd('0x38')]){_0x2c2dc3['where']=_[_0x98dd('0x39')](_0x2c2dc3[_0x98dd('0x3a')],{'$or':_[_0x98dd('0x3b')](_0xb98c0f,function(_0x39ddb7){if(_0x39ddb7[_0x98dd('0x3c')]!==_0x98dd('0x3d')){var _0x11237f={};_0x11237f[_0x39ddb7['name']]={'$like':'%'+_0x2c806e[_0x98dd('0x2d')][_0x98dd('0x38')]+'%'};return _0x11237f;}})});}_0x2c2dc3=_[_0x98dd('0x39')]({},_0x2c2dc3,_0x2c806e[_0x98dd('0x3e')]);var _0x24e520={'where':_0x2c2dc3[_0x98dd('0x3a')]};return db['SalesforceConfiguration'][_0x98dd('0x1d')](_0x24e520)['then'](function(_0x444322){_0x3fcf57[_0x98dd('0x1d')]=_0x444322;if(_0x2c806e[_0x98dd('0x2d')][_0x98dd('0x3f')]){_0x2c2dc3[_0x98dd('0x40')]=[{'all':!![]}];}return db['SalesforceConfiguration'][_0x98dd('0x41')](_0x2c2dc3);})[_0x98dd('0x25')](function(_0x2d5499){_0x3fcf57['rows']=_0x2d5499;return _0x3fcf57;})[_0x98dd('0x25')](respondWithFilteredResult(_0x3dd478,_0x2c2dc3))[_0x98dd('0x42')](handleError(_0x3dd478,null));};exports[_0x98dd('0x43')]=function(_0x262d56,_0x5972c1){var _0x39962a={'raw':![],'where':{'id':_0x262d56['params']['id']}},_0x15b33d={};_0x15b33d[_0x98dd('0x2c')]=_[_0x98dd('0x2e')](db[_0x98dd('0x44')][_0x98dd('0x45')]);_0x15b33d[_0x98dd('0x2d')]=_['keys'](_0x262d56[_0x98dd('0x2d')]);_0x15b33d[_0x98dd('0x2f')]=_[_0x98dd('0x30')](_0x15b33d[_0x98dd('0x2c')],_0x15b33d[_0x98dd('0x2d')]);_0x39962a[_0x98dd('0x31')]=_[_0x98dd('0x30')](_0x15b33d[_0x98dd('0x2c')],qs['fields'](_0x262d56[_0x98dd('0x2d')][_0x98dd('0x32')]));_0x39962a['attributes']=_0x39962a[_0x98dd('0x31')][_0x98dd('0x33')]?_0x39962a[_0x98dd('0x31')]:_0x15b33d[_0x98dd('0x2c')];if(_0x262d56[_0x98dd('0x2d')][_0x98dd('0x3f')]){_0x39962a[_0x98dd('0x40')]=[{'all':!![]}];}_0x39962a=_[_0x98dd('0x39')]({},_0x39962a,_0x262d56[_0x98dd('0x3e')]);return db[_0x98dd('0x44')]['find'](_0x39962a)[_0x98dd('0x25')](handleEntityNotFound(_0x5972c1,null))[_0x98dd('0x25')](respondWithResult(_0x5972c1,null))[_0x98dd('0x42')](handleError(_0x5972c1,null));};exports['create']=function(_0xd7c066,_0x3de6f2){return db['SalesforceConfiguration'][_0x98dd('0x46')](_0xd7c066['body'],{})['then'](respondWithResult(_0x3de6f2,0xc9))[_0x98dd('0x42')](handleError(_0x3de6f2,null));};exports[_0x98dd('0x23')]=function(_0x27a14b,_0xa1d2af){if(_0x27a14b[_0x98dd('0x47')]['id']){delete _0x27a14b[_0x98dd('0x47')]['id'];}return db['SalesforceConfiguration'][_0x98dd('0x48')]({'where':{'id':_0x27a14b[_0x98dd('0x49')]['id']}})[_0x98dd('0x25')](handleEntityNotFound(_0xa1d2af,null))[_0x98dd('0x25')](saveUpdates(_0x27a14b[_0x98dd('0x47')],null))[_0x98dd('0x25')](respondWithResult(_0xa1d2af,null))[_0x98dd('0x42')](handleError(_0xa1d2af,null));};exports[_0x98dd('0x24')]=function(_0x536ae2,_0x258ba9){return db[_0x98dd('0x44')][_0x98dd('0x48')]({'where':{'id':_0x536ae2[_0x98dd('0x49')]['id']}})[_0x98dd('0x25')](handleEntityNotFound(_0x258ba9,null))[_0x98dd('0x25')](removeEntity(_0x258ba9,null))[_0x98dd('0x42')](handleError(_0x258ba9,null));};exports['getFields']=function(_0x25ca39,_0x269c5a,_0xc989e4){var _0x5c0c25={};var _0x1c37d9={};var _0x698df9;var _0x548395;return db['SalesforceConfiguration'][_0x98dd('0x4a')]({'where':{'id':_0x25ca39['params']['id']}})[_0x98dd('0x25')](handleEntityNotFound(_0x269c5a,null))[_0x98dd('0x25')](function(_0x5107c6){if(_0x5107c6){_0x698df9=_0x5107c6;_0x1c37d9[_0x98dd('0x2c')]=_[_0x98dd('0x2e')](db['SalesforceField'][_0x98dd('0x45')]);_0x1c37d9[_0x98dd('0x2d')]=_[_0x98dd('0x2e')](_0x25ca39['query']);_0x1c37d9[_0x98dd('0x2f')]=_[_0x98dd('0x30')](_0x1c37d9[_0x98dd('0x2c')],_0x1c37d9[_0x98dd('0x2d')]);_0x5c0c25[_0x98dd('0x31')]=_['intersection'](_0x1c37d9['model'],qs[_0x98dd('0x32')](_0x25ca39[_0x98dd('0x2d')][_0x98dd('0x32')]));_0x5c0c25[_0x98dd('0x31')]=_0x5c0c25['attributes'][_0x98dd('0x33')]?_0x5c0c25[_0x98dd('0x31')]:_0x1c37d9['model'];_0x5c0c25[_0x98dd('0x4b')]=qs[_0x98dd('0x36')](_0x25ca39['query'][_0x98dd('0x36')]);_0x5c0c25[_0x98dd('0x3a')]=qs[_0x98dd('0x2f')](_[_0x98dd('0x37')](_0x25ca39[_0x98dd('0x2d')],_0x1c37d9[_0x98dd('0x2f')]));if(_0x25ca39[_0x98dd('0x2d')][_0x98dd('0x38')]){_0x5c0c25[_0x98dd('0x3a')]=_[_0x98dd('0x39')](_0x5c0c25[_0x98dd('0x3a')],{'$or':_[_0x98dd('0x3b')](_0x5c0c25[_0x98dd('0x31')],function(_0x159110){var _0x302f0c={};_0x302f0c[_0x159110]={'$like':'%'+_0x25ca39[_0x98dd('0x2d')][_0x98dd('0x38')]+'%'};return _0x302f0c;})});}_0x5c0c25=_[_0x98dd('0x39')]({},_0x5c0c25,_0x25ca39['options']);return _0x698df9['getFields'](_0x5c0c25);}})['then'](function(_0x172bc4){if(_0x172bc4){_0x548395=_0x172bc4[_0x98dd('0x33')];if(!_0x25ca39[_0x98dd('0x2d')][_0x98dd('0x34')](_0x98dd('0x35'))){_0x5c0c25['limit']=qs['limit'](_0x25ca39[_0x98dd('0x2d')]['limit']);_0x5c0c25[_0x98dd('0x1a')]=qs[_0x98dd('0x1a')](_0x25ca39[_0x98dd('0x2d')][_0x98dd('0x1a')]);}return _0x698df9['getFields'](_0x5c0c25);}})[_0x98dd('0x25')](function(_0x1a9f20){if(_0x1a9f20){return _0x1a9f20?{'count':_0x548395,'rows':_0x1a9f20}:null;}})[_0x98dd('0x25')](respondWithResult(_0x269c5a,null))[_0x98dd('0x42')](handleError(_0x269c5a,null));};exports[_0x98dd('0x4c')]=function(_0xd43d1b,_0x261810,_0x136f98){var _0x39a2c1={};var _0x31dd0d={};var _0x36cad0;var _0x1da900;return db['SalesforceConfiguration'][_0x98dd('0x4a')]({'where':{'id':_0xd43d1b[_0x98dd('0x49')]['id']}})['then'](handleEntityNotFound(_0x261810,null))[_0x98dd('0x25')](function(_0x15476c){if(_0x15476c){_0x36cad0=_0x15476c;_0x31dd0d[_0x98dd('0x2c')]=_[_0x98dd('0x2e')](db[_0x98dd('0x4d')][_0x98dd('0x45')]);_0x31dd0d[_0x98dd('0x2d')]=_['keys'](_0xd43d1b[_0x98dd('0x2d')]);_0x31dd0d[_0x98dd('0x2f')]=_[_0x98dd('0x30')](_0x31dd0d[_0x98dd('0x2c')],_0x31dd0d[_0x98dd('0x2d')]);_0x39a2c1[_0x98dd('0x31')]=_[_0x98dd('0x30')](_0x31dd0d[_0x98dd('0x2c')],qs[_0x98dd('0x32')](_0xd43d1b['query'][_0x98dd('0x32')]));_0x39a2c1[_0x98dd('0x31')]=_0x39a2c1[_0x98dd('0x31')][_0x98dd('0x33')]?_0x39a2c1[_0x98dd('0x31')]:_0x31dd0d['model'];_0x39a2c1['order']=qs[_0x98dd('0x36')](_0xd43d1b['query'][_0x98dd('0x36')]);_0x39a2c1[_0x98dd('0x3a')]=qs[_0x98dd('0x2f')](_[_0x98dd('0x37')](_0xd43d1b[_0x98dd('0x2d')],_0x31dd0d[_0x98dd('0x2f')]));if(_0xd43d1b[_0x98dd('0x2d')][_0x98dd('0x38')]){_0x39a2c1[_0x98dd('0x3a')]=_[_0x98dd('0x39')](_0x39a2c1['where'],{'$or':_['map'](_0x39a2c1[_0x98dd('0x31')],function(_0x10bf7e){var _0x1e6133={};_0x1e6133[_0x10bf7e]={'$like':'%'+_0xd43d1b[_0x98dd('0x2d')][_0x98dd('0x38')]+'%'};return _0x1e6133;})});}_0x39a2c1=_[_0x98dd('0x39')]({},_0x39a2c1,_0xd43d1b[_0x98dd('0x3e')]);return _0x36cad0[_0x98dd('0x4c')](_0x39a2c1);}})[_0x98dd('0x25')](function(_0x1e6a78){if(_0x1e6a78){_0x1da900=_0x1e6a78[_0x98dd('0x33')];if(!_0xd43d1b[_0x98dd('0x2d')][_0x98dd('0x34')](_0x98dd('0x35'))){_0x39a2c1[_0x98dd('0x1c')]=qs['limit'](_0xd43d1b[_0x98dd('0x2d')][_0x98dd('0x1c')]);_0x39a2c1[_0x98dd('0x1a')]=qs['offset'](_0xd43d1b['query']['offset']);}return _0x36cad0[_0x98dd('0x4c')](_0x39a2c1);}})[_0x98dd('0x25')](function(_0x4ccae9){if(_0x4ccae9){return _0x4ccae9?{'count':_0x1da900,'rows':_0x4ccae9}:null;}})['then'](respondWithResult(_0x261810,null))[_0x98dd('0x42')](handleError(_0x261810,null));};exports['getDescriptions']=function(_0x232349,_0x37b006,_0x5d0e85){var _0x476b22={};var _0x373e0d={};var _0x510477;var _0x17ec83;return db[_0x98dd('0x44')][_0x98dd('0x4a')]({'where':{'id':_0x232349['params']['id']}})[_0x98dd('0x25')](handleEntityNotFound(_0x37b006,null))[_0x98dd('0x25')](function(_0x56a28e){if(_0x56a28e){_0x510477=_0x56a28e;_0x373e0d[_0x98dd('0x2c')]=_[_0x98dd('0x2e')](db[_0x98dd('0x4d')][_0x98dd('0x45')]);_0x373e0d[_0x98dd('0x2d')]=_[_0x98dd('0x2e')](_0x232349[_0x98dd('0x2d')]);_0x373e0d[_0x98dd('0x2f')]=_[_0x98dd('0x30')](_0x373e0d[_0x98dd('0x2c')],_0x373e0d[_0x98dd('0x2d')]);_0x476b22[_0x98dd('0x31')]=_[_0x98dd('0x30')](_0x373e0d[_0x98dd('0x2c')],qs['fields'](_0x232349[_0x98dd('0x2d')][_0x98dd('0x32')]));_0x476b22['attributes']=_0x476b22[_0x98dd('0x31')][_0x98dd('0x33')]?_0x476b22['attributes']:_0x373e0d['model'];_0x476b22[_0x98dd('0x4b')]=qs[_0x98dd('0x36')](_0x232349[_0x98dd('0x2d')][_0x98dd('0x36')]);_0x476b22[_0x98dd('0x3a')]=qs['filters'](_[_0x98dd('0x37')](_0x232349['query'],_0x373e0d[_0x98dd('0x2f')]));if(_0x232349[_0x98dd('0x2d')]['filter']){_0x476b22[_0x98dd('0x3a')]=_['merge'](_0x476b22[_0x98dd('0x3a')],{'$or':_[_0x98dd('0x3b')](_0x476b22['attributes'],function(_0x147793){var _0x199be3={};_0x199be3[_0x147793]={'$like':'%'+_0x232349[_0x98dd('0x2d')][_0x98dd('0x38')]+'%'};return _0x199be3;})});}_0x476b22=_['merge']({},_0x476b22,_0x232349['options']);return _0x510477['getDescriptions'](_0x476b22);}})[_0x98dd('0x25')](function(_0x9b0983){if(_0x9b0983){_0x17ec83=_0x9b0983[_0x98dd('0x33')];if(!_0x232349[_0x98dd('0x2d')][_0x98dd('0x34')]('nolimit')){_0x476b22[_0x98dd('0x1c')]=qs[_0x98dd('0x1c')](_0x232349[_0x98dd('0x2d')]['limit']);_0x476b22['offset']=qs['offset'](_0x232349['query'][_0x98dd('0x1a')]);}return _0x510477[_0x98dd('0x4e')](_0x476b22);}})['then'](function(_0x5daebd){if(_0x5daebd){return _0x5daebd?{'count':_0x17ec83,'rows':_0x5daebd}:null;}})[_0x98dd('0x25')](respondWithResult(_0x37b006,null))[_0x98dd('0x42')](handleError(_0x37b006,null));};
\ No newline at end of file
+var _0x00a8=['limit','count','offset','set','Content-Range','apply','reject','save','update','destroy','then','error','stack','name','send','index','map','SalesforceConfiguration','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','filter','where','VIRTUAL','merge','options','includeAll','include','findAll','catch','params','find','create','body','getFields','findOne','SalesforceField','pick','getSubjects','hasOwnProperty','getDescriptions','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','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','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','undefined'];(function(_0xf09991,_0x135fd7){var _0x2d31b6=function(_0x57d449){while(--_0x57d449){_0xf09991['push'](_0xf09991['shift']());}};_0x2d31b6(++_0x135fd7);}(_0x00a8,0xda));var _0x800a=function(_0x5604ca,_0x1e9e1f){_0x5604ca=_0x5604ca-0x0;var _0x4aceb4=_0x00a8[_0x5604ca];return _0x4aceb4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x800a('0x0'));var zipdir=require(_0x800a('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x800a('0x2'));var moment=require(_0x800a('0x3'));var BPromise=require(_0x800a('0x4'));var Mustache=require(_0x800a('0x5'));var util=require(_0x800a('0x6'));var path=require(_0x800a('0x7'));var sox=require(_0x800a('0x8'));var csv=require(_0x800a('0x9'));var ejs=require(_0x800a('0xa'));var fs=require('fs');var fs_extra=require(_0x800a('0xb'));var _=require('lodash');var squel=require(_0x800a('0xc'));var crypto=require(_0x800a('0xd'));var jsforce=require(_0x800a('0xe'));var deskjs=require(_0x800a('0xf'));var toCsv=require(_0x800a('0x9'));var querystring=require(_0x800a('0x10'));var Papa=require(_0x800a('0x11'));var Redis=require(_0x800a('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x800a('0x13'));var as=require(_0x800a('0x14'));var hardwareService=require(_0x800a('0x15'));var logger=require(_0x800a('0x16'))('api');var utils=require(_0x800a('0x17'));var config=require(_0x800a('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x800a('0x19'))['db'];function respondWithStatusCode(_0x12dfa8,_0x1ea500){_0x1ea500=_0x1ea500||0xcc;return function(_0xf520c8){if(_0xf520c8){return _0x12dfa8[_0x800a('0x1a')](_0x1ea500);}return _0x12dfa8['status'](_0x1ea500)[_0x800a('0x1b')]();};}function respondWithResult(_0x4d071e,_0x5aa054){_0x5aa054=_0x5aa054||0xc8;return function(_0x9c39c9){if(_0x9c39c9){return _0x4d071e[_0x800a('0x1c')](_0x5aa054)[_0x800a('0x1d')](_0x9c39c9);}};}function respondWithFilteredResult(_0x3369f0,_0x474fa6){return function(_0x178045){if(_0x178045){var _0x47bc5d=typeof _0x474fa6['offset']===_0x800a('0x1e')&&typeof _0x474fa6[_0x800a('0x1f')]===_0x800a('0x1e');var _0x502c66=_0x178045[_0x800a('0x20')];var _0x4e3020=_0x47bc5d?0x0:_0x474fa6[_0x800a('0x21')];var _0x549793=_0x47bc5d?_0x178045[_0x800a('0x20')]:_0x474fa6[_0x800a('0x21')]+_0x474fa6[_0x800a('0x1f')];var _0x5984ef;if(_0x549793>=_0x502c66){_0x549793=_0x502c66;_0x5984ef=0xc8;}else{_0x5984ef=0xce;}_0x3369f0[_0x800a('0x1c')](_0x5984ef);return _0x3369f0[_0x800a('0x22')](_0x800a('0x23'),_0x4e3020+'-'+_0x549793+'/'+_0x502c66)[_0x800a('0x1d')](_0x178045);}return null;};}function patchUpdates(_0xb03acf){return function(_0x129302){try{jsonpatch[_0x800a('0x24')](_0x129302,_0xb03acf,!![]);}catch(_0x19953b){return BPromise[_0x800a('0x25')](_0x19953b);}return _0x129302[_0x800a('0x26')]();};}function saveUpdates(_0x3eddc1,_0x541282){return function(_0x1ffd0c){if(_0x1ffd0c){return _0x1ffd0c[_0x800a('0x27')](_0x3eddc1)['then'](function(_0x4c3ac8){return _0x4c3ac8;});}return null;};}function removeEntity(_0x55d706,_0x2c00be){return function(_0x1ada86){if(_0x1ada86){return _0x1ada86[_0x800a('0x28')]()[_0x800a('0x29')](function(){_0x55d706[_0x800a('0x1c')](0xcc)[_0x800a('0x1b')]();});}};}function handleEntityNotFound(_0x50b97d,_0x575c78){return function(_0x3a7e77){if(!_0x3a7e77){_0x50b97d[_0x800a('0x1a')](0x194);}return _0x3a7e77;};}function handleError(_0x49b8fb,_0x47f5d2){_0x47f5d2=_0x47f5d2||0x1f4;return function(_0x13d065){logger[_0x800a('0x2a')](_0x13d065[_0x800a('0x2b')]);if(_0x13d065[_0x800a('0x2c')]){delete _0x13d065[_0x800a('0x2c')];}_0x49b8fb['status'](_0x47f5d2)[_0x800a('0x2d')](_0x13d065);};}exports[_0x800a('0x2e')]=function(_0xd42ce,_0x41da53){var _0xd3da52={},_0x1e8633={},_0x2cba1a={'count':0x0,'rows':[]};var _0x55bdea=_[_0x800a('0x2f')](db[_0x800a('0x30')][_0x800a('0x31')],function(_0x56dbb2){return{'name':_0x56dbb2['fieldName'],'type':_0x56dbb2[_0x800a('0x32')][_0x800a('0x33')]};});_0x1e8633[_0x800a('0x34')]=_[_0x800a('0x2f')](_0x55bdea,_0x800a('0x2c'));_0x1e8633[_0x800a('0x35')]=_[_0x800a('0x36')](_0xd42ce[_0x800a('0x35')]);_0x1e8633[_0x800a('0x37')]=_[_0x800a('0x38')](_0x1e8633['model'],_0x1e8633[_0x800a('0x35')]);_0xd3da52[_0x800a('0x39')]=_[_0x800a('0x38')](_0x1e8633['model'],qs[_0x800a('0x3a')](_0xd42ce[_0x800a('0x35')][_0x800a('0x3a')]));_0xd3da52[_0x800a('0x39')]=_0xd3da52['attributes'][_0x800a('0x3b')]?_0xd3da52['attributes']:_0x1e8633[_0x800a('0x34')];if(!_0xd42ce[_0x800a('0x35')]['hasOwnProperty'](_0x800a('0x3c'))){_0xd3da52['limit']=qs[_0x800a('0x1f')](_0xd42ce[_0x800a('0x35')][_0x800a('0x1f')]);_0xd3da52['offset']=qs[_0x800a('0x21')](_0xd42ce[_0x800a('0x35')][_0x800a('0x21')]);}_0xd3da52[_0x800a('0x3d')]=qs[_0x800a('0x3e')](_0xd42ce['query']['sort']);_0xd3da52['where']=qs[_0x800a('0x37')](_['pick'](_0xd42ce[_0x800a('0x35')],_0x1e8633['filters']),_0x55bdea);if(_0xd42ce['query'][_0x800a('0x3f')]){_0xd3da52[_0x800a('0x40')]=_['merge'](_0xd3da52[_0x800a('0x40')],{'$or':_[_0x800a('0x2f')](_0x55bdea,function(_0x95ce2b){if(_0x95ce2b[_0x800a('0x32')]!==_0x800a('0x41')){var _0x5eee9d={};_0x5eee9d[_0x95ce2b[_0x800a('0x2c')]]={'$like':'%'+_0xd42ce[_0x800a('0x35')][_0x800a('0x3f')]+'%'};return _0x5eee9d;}})});}_0xd3da52=_[_0x800a('0x42')]({},_0xd3da52,_0xd42ce[_0x800a('0x43')]);var _0x41ae51={'where':_0xd3da52['where']};return db[_0x800a('0x30')]['count'](_0x41ae51)['then'](function(_0x11cd65){_0x2cba1a[_0x800a('0x20')]=_0x11cd65;if(_0xd42ce[_0x800a('0x35')][_0x800a('0x44')]){_0xd3da52[_0x800a('0x45')]=[{'all':!![]}];}return db['SalesforceConfiguration'][_0x800a('0x46')](_0xd3da52);})[_0x800a('0x29')](function(_0x3cbf6f){_0x2cba1a['rows']=_0x3cbf6f;return _0x2cba1a;})[_0x800a('0x29')](respondWithFilteredResult(_0x41da53,_0xd3da52))[_0x800a('0x47')](handleError(_0x41da53,null));};exports['show']=function(_0xe6ea7,_0x553c07){var _0x3fa1b2={'raw':![],'where':{'id':_0xe6ea7[_0x800a('0x48')]['id']}},_0x2f47b7={};_0x2f47b7[_0x800a('0x34')]=_['keys'](db[_0x800a('0x30')][_0x800a('0x31')]);_0x2f47b7[_0x800a('0x35')]=_[_0x800a('0x36')](_0xe6ea7[_0x800a('0x35')]);_0x2f47b7['filters']=_[_0x800a('0x38')](_0x2f47b7[_0x800a('0x34')],_0x2f47b7[_0x800a('0x35')]);_0x3fa1b2['attributes']=_[_0x800a('0x38')](_0x2f47b7[_0x800a('0x34')],qs['fields'](_0xe6ea7[_0x800a('0x35')]['fields']));_0x3fa1b2[_0x800a('0x39')]=_0x3fa1b2[_0x800a('0x39')][_0x800a('0x3b')]?_0x3fa1b2[_0x800a('0x39')]:_0x2f47b7['model'];if(_0xe6ea7[_0x800a('0x35')][_0x800a('0x44')]){_0x3fa1b2['include']=[{'all':!![]}];}_0x3fa1b2=_[_0x800a('0x42')]({},_0x3fa1b2,_0xe6ea7[_0x800a('0x43')]);return db[_0x800a('0x30')][_0x800a('0x49')](_0x3fa1b2)[_0x800a('0x29')](handleEntityNotFound(_0x553c07,null))[_0x800a('0x29')](respondWithResult(_0x553c07,null))[_0x800a('0x47')](handleError(_0x553c07,null));};exports[_0x800a('0x4a')]=function(_0x338368,_0x46f9c6){return db[_0x800a('0x30')][_0x800a('0x4a')](_0x338368['body'],{})[_0x800a('0x29')](respondWithResult(_0x46f9c6,0xc9))[_0x800a('0x47')](handleError(_0x46f9c6,null));};exports['update']=function(_0xcec797,_0x1ad6ca){if(_0xcec797[_0x800a('0x4b')]['id']){delete _0xcec797[_0x800a('0x4b')]['id'];}return db[_0x800a('0x30')][_0x800a('0x49')]({'where':{'id':_0xcec797[_0x800a('0x48')]['id']}})[_0x800a('0x29')](handleEntityNotFound(_0x1ad6ca,null))[_0x800a('0x29')](saveUpdates(_0xcec797[_0x800a('0x4b')],null))[_0x800a('0x29')](respondWithResult(_0x1ad6ca,null))[_0x800a('0x47')](handleError(_0x1ad6ca,null));};exports[_0x800a('0x28')]=function(_0x225dba,_0x55cb2d){return db[_0x800a('0x30')]['find']({'where':{'id':_0x225dba['params']['id']}})[_0x800a('0x29')](handleEntityNotFound(_0x55cb2d,null))[_0x800a('0x29')](removeEntity(_0x55cb2d,null))[_0x800a('0x47')](handleError(_0x55cb2d,null));};exports[_0x800a('0x4c')]=function(_0x4eb7c9,_0x348a7c,_0x3a1f54){var _0x203dda={};var _0x33ca19={};var _0x5c28dc;var _0x444eb8;return db[_0x800a('0x30')][_0x800a('0x4d')]({'where':{'id':_0x4eb7c9[_0x800a('0x48')]['id']}})[_0x800a('0x29')](handleEntityNotFound(_0x348a7c,null))[_0x800a('0x29')](function(_0x269421){if(_0x269421){_0x5c28dc=_0x269421;_0x33ca19['model']=_[_0x800a('0x36')](db[_0x800a('0x4e')]['rawAttributes']);_0x33ca19['query']=_[_0x800a('0x36')](_0x4eb7c9[_0x800a('0x35')]);_0x33ca19[_0x800a('0x37')]=_['intersection'](_0x33ca19[_0x800a('0x34')],_0x33ca19[_0x800a('0x35')]);_0x203dda[_0x800a('0x39')]=_[_0x800a('0x38')](_0x33ca19[_0x800a('0x34')],qs['fields'](_0x4eb7c9[_0x800a('0x35')][_0x800a('0x3a')]));_0x203dda[_0x800a('0x39')]=_0x203dda[_0x800a('0x39')][_0x800a('0x3b')]?_0x203dda[_0x800a('0x39')]:_0x33ca19[_0x800a('0x34')];_0x203dda['order']=qs[_0x800a('0x3e')](_0x4eb7c9[_0x800a('0x35')][_0x800a('0x3e')]);_0x203dda[_0x800a('0x40')]=qs['filters'](_['pick'](_0x4eb7c9[_0x800a('0x35')],_0x33ca19[_0x800a('0x37')]));if(_0x4eb7c9[_0x800a('0x35')][_0x800a('0x3f')]){_0x203dda[_0x800a('0x40')]=_['merge'](_0x203dda[_0x800a('0x40')],{'$or':_[_0x800a('0x2f')](_0x203dda[_0x800a('0x39')],function(_0x25dc08){var _0x43cc54={};_0x43cc54[_0x25dc08]={'$like':'%'+_0x4eb7c9[_0x800a('0x35')][_0x800a('0x3f')]+'%'};return _0x43cc54;})});}_0x203dda=_[_0x800a('0x42')]({},_0x203dda,_0x4eb7c9[_0x800a('0x43')]);return _0x5c28dc[_0x800a('0x4c')](_0x203dda);}})[_0x800a('0x29')](function(_0x35eff1){if(_0x35eff1){_0x444eb8=_0x35eff1[_0x800a('0x3b')];if(!_0x4eb7c9[_0x800a('0x35')]['hasOwnProperty'](_0x800a('0x3c'))){_0x203dda[_0x800a('0x1f')]=qs[_0x800a('0x1f')](_0x4eb7c9[_0x800a('0x35')][_0x800a('0x1f')]);_0x203dda[_0x800a('0x21')]=qs[_0x800a('0x21')](_0x4eb7c9[_0x800a('0x35')]['offset']);}return _0x5c28dc[_0x800a('0x4c')](_0x203dda);}})[_0x800a('0x29')](function(_0x5e0e02){if(_0x5e0e02){return _0x5e0e02?{'count':_0x444eb8,'rows':_0x5e0e02}:null;}})[_0x800a('0x29')](respondWithResult(_0x348a7c,null))[_0x800a('0x47')](handleError(_0x348a7c,null));};exports['getSubjects']=function(_0x5cec10,_0x4c47ac,_0x3cc9d7){var _0xefcd8e={};var _0xb51365={};var _0xfb290;var _0x15afe2;return db['SalesforceConfiguration']['findOne']({'where':{'id':_0x5cec10[_0x800a('0x48')]['id']}})[_0x800a('0x29')](handleEntityNotFound(_0x4c47ac,null))[_0x800a('0x29')](function(_0xd8c089){if(_0xd8c089){_0xfb290=_0xd8c089;_0xb51365[_0x800a('0x34')]=_['keys'](db[_0x800a('0x4e')][_0x800a('0x31')]);_0xb51365['query']=_[_0x800a('0x36')](_0x5cec10[_0x800a('0x35')]);_0xb51365[_0x800a('0x37')]=_[_0x800a('0x38')](_0xb51365[_0x800a('0x34')],_0xb51365[_0x800a('0x35')]);_0xefcd8e[_0x800a('0x39')]=_[_0x800a('0x38')](_0xb51365['model'],qs['fields'](_0x5cec10[_0x800a('0x35')][_0x800a('0x3a')]));_0xefcd8e[_0x800a('0x39')]=_0xefcd8e['attributes'][_0x800a('0x3b')]?_0xefcd8e[_0x800a('0x39')]:_0xb51365[_0x800a('0x34')];_0xefcd8e[_0x800a('0x3d')]=qs[_0x800a('0x3e')](_0x5cec10[_0x800a('0x35')][_0x800a('0x3e')]);_0xefcd8e[_0x800a('0x40')]=qs[_0x800a('0x37')](_[_0x800a('0x4f')](_0x5cec10[_0x800a('0x35')],_0xb51365[_0x800a('0x37')]));if(_0x5cec10['query'][_0x800a('0x3f')]){_0xefcd8e['where']=_['merge'](_0xefcd8e[_0x800a('0x40')],{'$or':_[_0x800a('0x2f')](_0xefcd8e['attributes'],function(_0x432caa){var _0x51326e={};_0x51326e[_0x432caa]={'$like':'%'+_0x5cec10['query'][_0x800a('0x3f')]+'%'};return _0x51326e;})});}_0xefcd8e=_[_0x800a('0x42')]({},_0xefcd8e,_0x5cec10['options']);return _0xfb290[_0x800a('0x50')](_0xefcd8e);}})[_0x800a('0x29')](function(_0x503076){if(_0x503076){_0x15afe2=_0x503076[_0x800a('0x3b')];if(!_0x5cec10[_0x800a('0x35')][_0x800a('0x51')](_0x800a('0x3c'))){_0xefcd8e[_0x800a('0x1f')]=qs[_0x800a('0x1f')](_0x5cec10[_0x800a('0x35')]['limit']);_0xefcd8e[_0x800a('0x21')]=qs[_0x800a('0x21')](_0x5cec10[_0x800a('0x35')]['offset']);}return _0xfb290[_0x800a('0x50')](_0xefcd8e);}})[_0x800a('0x29')](function(_0x231c5d){if(_0x231c5d){return _0x231c5d?{'count':_0x15afe2,'rows':_0x231c5d}:null;}})[_0x800a('0x29')](respondWithResult(_0x4c47ac,null))[_0x800a('0x47')](handleError(_0x4c47ac,null));};exports[_0x800a('0x52')]=function(_0x4276fb,_0x303af0,_0x2e906c){var _0x5f3324={};var _0x2e3f3e={};var _0x3c4123;var _0x5c14e7;return db[_0x800a('0x30')][_0x800a('0x4d')]({'where':{'id':_0x4276fb[_0x800a('0x48')]['id']}})[_0x800a('0x29')](handleEntityNotFound(_0x303af0,null))[_0x800a('0x29')](function(_0x4ec9aa){if(_0x4ec9aa){_0x3c4123=_0x4ec9aa;_0x2e3f3e[_0x800a('0x34')]=_[_0x800a('0x36')](db['SalesforceField']['rawAttributes']);_0x2e3f3e[_0x800a('0x35')]=_['keys'](_0x4276fb[_0x800a('0x35')]);_0x2e3f3e['filters']=_[_0x800a('0x38')](_0x2e3f3e[_0x800a('0x34')],_0x2e3f3e[_0x800a('0x35')]);_0x5f3324[_0x800a('0x39')]=_[_0x800a('0x38')](_0x2e3f3e['model'],qs['fields'](_0x4276fb[_0x800a('0x35')]['fields']));_0x5f3324['attributes']=_0x5f3324[_0x800a('0x39')][_0x800a('0x3b')]?_0x5f3324[_0x800a('0x39')]:_0x2e3f3e[_0x800a('0x34')];_0x5f3324[_0x800a('0x3d')]=qs['sort'](_0x4276fb[_0x800a('0x35')][_0x800a('0x3e')]);_0x5f3324['where']=qs[_0x800a('0x37')](_['pick'](_0x4276fb[_0x800a('0x35')],_0x2e3f3e[_0x800a('0x37')]));if(_0x4276fb[_0x800a('0x35')][_0x800a('0x3f')]){_0x5f3324[_0x800a('0x40')]=_['merge'](_0x5f3324[_0x800a('0x40')],{'$or':_['map'](_0x5f3324[_0x800a('0x39')],function(_0x4a1c79){var _0x434509={};_0x434509[_0x4a1c79]={'$like':'%'+_0x4276fb[_0x800a('0x35')][_0x800a('0x3f')]+'%'};return _0x434509;})});}_0x5f3324=_[_0x800a('0x42')]({},_0x5f3324,_0x4276fb[_0x800a('0x43')]);return _0x3c4123[_0x800a('0x52')](_0x5f3324);}})[_0x800a('0x29')](function(_0x1632d6){if(_0x1632d6){_0x5c14e7=_0x1632d6[_0x800a('0x3b')];if(!_0x4276fb[_0x800a('0x35')][_0x800a('0x51')](_0x800a('0x3c'))){_0x5f3324[_0x800a('0x1f')]=qs[_0x800a('0x1f')](_0x4276fb[_0x800a('0x35')][_0x800a('0x1f')]);_0x5f3324[_0x800a('0x21')]=qs[_0x800a('0x21')](_0x4276fb[_0x800a('0x35')][_0x800a('0x21')]);}return _0x3c4123['getDescriptions'](_0x5f3324);}})[_0x800a('0x29')](function(_0x552842){if(_0x552842){return _0x552842?{'count':_0x5c14e7,'rows':_0x552842}:null;}})[_0x800a('0x29')](respondWithResult(_0x303af0,null))[_0x800a('0x47')](handleError(_0x303af0,null));};
\ No newline at end of file
index 9e09ba3..597c875 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x321e=['rimraf','../../config/environment','./intSalesforceConfiguration.attributes','exports','define','SalesforceConfiguration','int_salesforce_configurations','lodash','util','../../config/logger','api','moment','request-promise','path'];(function(_0x4c34d5,_0x106527){var _0x21f747=function(_0x272963){while(--_0x272963){_0x4c34d5['push'](_0x4c34d5['shift']());}};_0x21f747(++_0x106527);}(_0x321e,0x1ab));var _0xe321=function(_0x3d0d9f,_0x571573){_0x3d0d9f=_0x3d0d9f-0x0;var _0xda9ff5=_0x321e[_0x3d0d9f];return _0xda9ff5;};'use strict';var _=require(_0xe321('0x0'));var util=require(_0xe321('0x1'));var logger=require(_0xe321('0x2'))(_0xe321('0x3'));var moment=require(_0xe321('0x4'));var BPromise=require('bluebird');var rp=require(_0xe321('0x5'));var fs=require('fs');var path=require(_0xe321('0x6'));var rimraf=require(_0xe321('0x7'));var config=require(_0xe321('0x8'));var attributes=require(_0xe321('0x9'));module[_0xe321('0xa')]=function(_0x20ec1f,_0x4f2b88){return _0x20ec1f[_0xe321('0xb')](_0xe321('0xc'),attributes,{'tableName':_0xe321('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9579=['./intSalesforceConfiguration.attributes','exports','define','SalesforceConfiguration','int_salesforce_configurations','../../config/logger','moment','request-promise','path','rimraf'];(function(_0x4470c0,_0x5b9cd1){var _0x2c079a=function(_0x1a91c5){while(--_0x1a91c5){_0x4470c0['push'](_0x4470c0['shift']());}};_0x2c079a(++_0x5b9cd1);}(_0x9579,0xc3));var _0x9957=function(_0x32f05c,_0x273aef){_0x32f05c=_0x32f05c-0x0;var _0x4307ed=_0x9579[_0x32f05c];return _0x4307ed;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x9957('0x0'))('api');var moment=require(_0x9957('0x1'));var BPromise=require('bluebird');var rp=require(_0x9957('0x2'));var fs=require('fs');var path=require(_0x9957('0x3'));var rimraf=require(_0x9957('0x4'));var config=require('../../config/environment');var attributes=require(_0x9957('0x5'));module[_0x9957('0x6')]=function(_0x36da2f,_0x28f100){return _0x36da2f[_0x9957('0x7')](_0x9957('0x8'),attributes,{'tableName':_0x9957('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 80bc7a9..57c146c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1df8=['../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SalesforceConfiguration,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','util','bluebird','randomstring','ioredis'];(function(_0x3b0731,_0xcf9925){var _0x4204d7=function(_0x635ac5){while(--_0x635ac5){_0x3b0731['push'](_0x3b0731['shift']());}};_0x4204d7(++_0xcf9925);}(_0x1df8,0x18b));var _0x81df=function(_0x265f8e,_0x573493){_0x265f8e=_0x265f8e-0x0;var _0x533039=_0x1df8[_0x265f8e];return _0x533039;};'use strict';var _=require('lodash');var util=require(_0x81df('0x0'));var moment=require('moment');var BPromise=require(_0x81df('0x1'));var rs=require(_0x81df('0x2'));var fs=require('fs');var Redis=require(_0x81df('0x3'));var db=require(_0x81df('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x81df('0x5'))(_0x81df('0x6'));var config=require(_0x81df('0x7'));var jayson=require(_0x81df('0x8'));var client=jayson[_0x81df('0x9')][_0x81df('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1dce0b,_0x26053b,_0x43f6a2){return new BPromise(function(_0x4c3421,_0x5e318d){return client[_0x81df('0xb')](_0x1dce0b,_0x43f6a2)[_0x81df('0xc')](function(_0x12da77){logger[_0x81df('0xd')](_0x81df('0xe'),_0x26053b,_0x81df('0xf'));logger['debug']('SalesforceConfiguration,\x20%s,\x20%s,\x20%s',_0x26053b,_0x81df('0xf'),JSON[_0x81df('0x10')](_0x12da77));if(_0x12da77['error']){if(_0x12da77[_0x81df('0x11')][_0x81df('0x12')]===0x1f4){logger[_0x81df('0x11')](_0x81df('0xe'),_0x26053b,_0x12da77[_0x81df('0x11')][_0x81df('0x13')]);return _0x5e318d(_0x12da77[_0x81df('0x11')]['message']);}logger[_0x81df('0x11')](_0x81df('0xe'),_0x26053b,_0x12da77[_0x81df('0x11')]['message']);return _0x4c3421(_0x12da77[_0x81df('0x11')]['message']);}else{logger[_0x81df('0xd')](_0x81df('0xe'),_0x26053b,_0x81df('0xf'));_0x4c3421(_0x12da77['result']['message']);}})[_0x81df('0x14')](function(_0x110f62){logger[_0x81df('0x11')](_0x81df('0xe'),_0x26053b,_0x110f62);_0x5e318d(_0x110f62);});});}
\ No newline at end of file
+var _0xefdd=['result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','SalesforceConfiguration,\x20%s,\x20%s','request\x20sent','debug','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x9d14e3,_0x5a6072){var _0x19bf32=function(_0x19da07){while(--_0x19da07){_0x9d14e3['push'](_0x9d14e3['shift']());}};_0x19bf32(++_0x5a6072);}(_0xefdd,0x120));var _0xdefd=function(_0x1bcd5a,_0x4a41d1){_0x1bcd5a=_0x1bcd5a-0x0;var _0x5e07cf=_0xefdd[_0x1bcd5a];return _0x5e07cf;};'use strict';var _=require(_0xdefd('0x0'));var util=require(_0xdefd('0x1'));var moment=require(_0xdefd('0x2'));var BPromise=require(_0xdefd('0x3'));var rs=require(_0xdefd('0x4'));var fs=require('fs');var Redis=require(_0xdefd('0x5'));var db=require(_0xdefd('0x6'))['db'];var utils=require(_0xdefd('0x7'));var logger=require(_0xdefd('0x8'))(_0xdefd('0x9'));var config=require(_0xdefd('0xa'));var jayson=require(_0xdefd('0xb'));var client=jayson[_0xdefd('0xc')][_0xdefd('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x5208aa,_0x5eb0c3,_0x45cab8){return new BPromise(function(_0x3515c3,_0x528ca5){return client[_0xdefd('0xe')](_0x5208aa,_0x45cab8)['then'](function(_0x5d9509){logger[_0xdefd('0xf')](_0xdefd('0x10'),_0x5eb0c3,_0xdefd('0x11'));logger[_0xdefd('0x12')](_0xdefd('0x13'),_0x5eb0c3,_0xdefd('0x11'),JSON[_0xdefd('0x14')](_0x5d9509));if(_0x5d9509[_0xdefd('0x15')]){if(_0x5d9509[_0xdefd('0x15')][_0xdefd('0x16')]===0x1f4){logger['error'](_0xdefd('0x10'),_0x5eb0c3,_0x5d9509[_0xdefd('0x15')][_0xdefd('0x17')]);return _0x528ca5(_0x5d9509[_0xdefd('0x15')]['message']);}logger[_0xdefd('0x15')](_0xdefd('0x10'),_0x5eb0c3,_0x5d9509[_0xdefd('0x15')][_0xdefd('0x17')]);return _0x3515c3(_0x5d9509[_0xdefd('0x15')]['message']);}else{logger[_0xdefd('0xf')](_0xdefd('0x10'),_0x5eb0c3,_0xdefd('0x11'));_0x3515c3(_0x5d9509[_0xdefd('0x18')]['message']);}})[_0xdefd('0x19')](function(_0x59625c){logger['error'](_0xdefd('0x10'),_0x5eb0c3,_0x59625c);_0x528ca5(_0x59625c);});});}
\ No newline at end of file
index 174efdd..64486fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa547=['/:id','show','post','create','put','isAuthenticated','update','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceField.controller','get','index'];(function(_0x57ee01,_0x5cd150){var _0x1e35c7=function(_0x347e7f){while(--_0x347e7f){_0x57ee01['push'](_0x57ee01['shift']());}};_0x1e35c7(++_0x5cd150);}(_0xa547,0xb0));var _0x7a54=function(_0xf9db2b,_0x3bafc5){_0xf9db2b=_0xf9db2b-0x0;var _0x4ceadd=_0xa547[_0xf9db2b];return _0x4ceadd;};'use strict';var multer=require(_0x7a54('0x0'));var util=require(_0x7a54('0x1'));var path=require(_0x7a54('0x2'));var timeout=require(_0x7a54('0x3'));var express=require(_0x7a54('0x4'));var router=express[_0x7a54('0x5')]();var fs_extra=require(_0x7a54('0x6'));var auth=require(_0x7a54('0x7'));var interaction=require(_0x7a54('0x8'));var config=require(_0x7a54('0x9'));var controller=require(_0x7a54('0xa'));router[_0x7a54('0xb')]('/',auth['isAuthenticated'](),controller[_0x7a54('0xc')]);router[_0x7a54('0xb')](_0x7a54('0xd'),auth['isAuthenticated'](),controller[_0x7a54('0xe')]);router[_0x7a54('0xf')]('/',auth['isAuthenticated'](),controller[_0x7a54('0x10')]);router[_0x7a54('0x11')](_0x7a54('0xd'),auth[_0x7a54('0x12')](),controller[_0x7a54('0x13')]);router['delete'](_0x7a54('0xd'),auth[_0x7a54('0x12')](),controller[_0x7a54('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x805c=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','show','post','put','isAuthenticated','update','delete','destroy','path','connect-timeout','Router'];(function(_0x58175c,_0x2d9373){var _0x55b88f=function(_0x13ed84){while(--_0x13ed84){_0x58175c['push'](_0x58175c['shift']());}};_0x55b88f(++_0x2d9373);}(_0x805c,0x74));var _0xc805=function(_0x147a55,_0x18a8ed){_0x147a55=_0x147a55-0x0;var _0xabf3ff=_0x805c[_0x147a55];return _0xabf3ff;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xc805('0x0'));var timeout=require(_0xc805('0x1'));var express=require('express');var router=express[_0xc805('0x2')]();var fs_extra=require(_0xc805('0x3'));var auth=require(_0xc805('0x4'));var interaction=require(_0xc805('0x5'));var config=require(_0xc805('0x6'));var controller=require('./intSalesforceField.controller');router[_0xc805('0x7')]('/',auth['isAuthenticated'](),controller[_0xc805('0x8')]);router['get'](_0xc805('0x9'),auth['isAuthenticated'](),controller[_0xc805('0xa')]);router[_0xc805('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0xc805('0xc')]('/:id',auth[_0xc805('0xd')](),controller[_0xc805('0xe')]);router[_0xc805('0xf')](_0xc805('0x9'),auth[_0xc805('0xd')](),controller[_0xc805('0x10')]);module['exports']=router;
\ No newline at end of file
index 5ac59db..169c022 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5918=['ENUM','string','customVariable','keyValue','STRING','exports'];(function(_0x128c9d,_0x4d7638){var _0x5e196f=function(_0x218f50){while(--_0x218f50){_0x128c9d['push'](_0x128c9d['shift']());}};_0x5e196f(++_0x4d7638);}(_0x5918,0x11f));var _0x8591=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5918[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module[_0x8591('0x0')]={'type':{'type':Sequelize[_0x8591('0x1')](_0x8591('0x2'),'variable',_0x8591('0x3'),_0x8591('0x4'),'picklist'),'defaultValue':_0x8591('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x8591('0x5')]},'keyType':{'type':Sequelize['ENUM'](_0x8591('0x2'),'variable','customVariable')},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize['STRING']},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xd6cf=['STRING','exports','ENUM','string','variable','customVariable','keyValue'];(function(_0x367e8a,_0x26e803){var _0x24d084=function(_0x512c03){while(--_0x512c03){_0x367e8a['push'](_0x367e8a['shift']());}};_0x24d084(++_0x26e803);}(_0xd6cf,0x166));var _0xfd6c=function(_0xc6be3a,_0x540e05){_0xc6be3a=_0xc6be3a-0x0;var _0x56a310=_0xd6cf[_0xc6be3a];return _0x56a310;};'use strict';var Sequelize=require('sequelize');module[_0xfd6c('0x0')]={'type':{'type':Sequelize[_0xfd6c('0x1')](_0xfd6c('0x2'),_0xfd6c('0x3'),_0xfd6c('0x4'),_0xfd6c('0x5'),'picklist'),'defaultValue':_0xfd6c('0x2')},'content':{'type':Sequelize[_0xfd6c('0x6')]},'key':{'type':Sequelize[_0xfd6c('0x6')]},'keyType':{'type':Sequelize[_0xfd6c('0x1')](_0xfd6c('0x2'),'variable',_0xfd6c('0x4'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize['STRING']},'variableName':{'type':Sequelize[_0xfd6c('0x6')]}};
\ No newline at end of file
index 46d9b1e..74933da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22dd=['SalesforceField','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','where','type','merge','options','include','findAll','catch','show','params','keys','includeAll','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','index','map'];(function(_0x5953d3,_0xebf3f3){var _0x3a4d54=function(_0x13f7a4){while(--_0x13f7a4){_0x5953d3['push'](_0x5953d3['shift']());}};_0x3a4d54(++_0xebf3f3);}(_0x22dd,0x199));var _0xd22d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x22dd[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xd22d('0x0'));var rimraf=require(_0xd22d('0x1'));var zipdir=require(_0xd22d('0x2'));var jsonpatch=require(_0xd22d('0x3'));var rp=require(_0xd22d('0x4'));var moment=require(_0xd22d('0x5'));var BPromise=require(_0xd22d('0x6'));var Mustache=require(_0xd22d('0x7'));var util=require(_0xd22d('0x8'));var path=require(_0xd22d('0x9'));var sox=require('sox');var csv=require(_0xd22d('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd22d('0xb'));var _=require(_0xd22d('0xc'));var squel=require(_0xd22d('0xd'));var crypto=require('crypto');var jsforce=require(_0xd22d('0xe'));var deskjs=require(_0xd22d('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xd22d('0x10'));var Redis=require(_0xd22d('0x11'));var authService=require(_0xd22d('0x12'));var qs=require(_0xd22d('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd22d('0x14'));var logger=require(_0xd22d('0x15'))(_0xd22d('0x16'));var utils=require(_0xd22d('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xd22d('0x18'));var db=require(_0xd22d('0x19'))['db'];function respondWithStatusCode(_0x4ea4ec,_0x325b39){_0x325b39=_0x325b39||0xcc;return function(_0x430beb){if(_0x430beb){return _0x4ea4ec[_0xd22d('0x1a')](_0x325b39);}return _0x4ea4ec['status'](_0x325b39)[_0xd22d('0x1b')]();};}function respondWithResult(_0x1f967a,_0x5ab146){_0x5ab146=_0x5ab146||0xc8;return function(_0x4ad4c4){if(_0x4ad4c4){return _0x1f967a[_0xd22d('0x1c')](_0x5ab146)[_0xd22d('0x1d')](_0x4ad4c4);}};}function respondWithFilteredResult(_0x2cd672,_0x335dfd){return function(_0x294617){if(_0x294617){var _0x5aa245=typeof _0x335dfd[_0xd22d('0x1e')]===_0xd22d('0x1f')&&typeof _0x335dfd['limit']===_0xd22d('0x1f');var _0xc13a6a=_0x294617[_0xd22d('0x20')];var _0x35d146=_0x5aa245?0x0:_0x335dfd[_0xd22d('0x1e')];var _0x20cc10=_0x5aa245?_0x294617[_0xd22d('0x20')]:_0x335dfd[_0xd22d('0x1e')]+_0x335dfd[_0xd22d('0x21')];var _0x5c20a7;if(_0x20cc10>=_0xc13a6a){_0x20cc10=_0xc13a6a;_0x5c20a7=0xc8;}else{_0x5c20a7=0xce;}_0x2cd672[_0xd22d('0x1c')](_0x5c20a7);return _0x2cd672[_0xd22d('0x22')](_0xd22d('0x23'),_0x35d146+'-'+_0x20cc10+'/'+_0xc13a6a)[_0xd22d('0x1d')](_0x294617);}return null;};}function patchUpdates(_0x1a3506){return function(_0x532760){try{jsonpatch[_0xd22d('0x24')](_0x532760,_0x1a3506,!![]);}catch(_0x4509e0){return BPromise[_0xd22d('0x25')](_0x4509e0);}return _0x532760[_0xd22d('0x26')]();};}function saveUpdates(_0x21a789,_0x134f66){return function(_0x3de9cd){if(_0x3de9cd){return _0x3de9cd['update'](_0x21a789)[_0xd22d('0x27')](function(_0xa02045){return _0xa02045;});}return null;};}function removeEntity(_0x299a3b,_0x32ca2a){return function(_0x520326){if(_0x520326){return _0x520326[_0xd22d('0x28')]()[_0xd22d('0x27')](function(){_0x299a3b[_0xd22d('0x1c')](0xcc)[_0xd22d('0x1b')]();});}};}function handleEntityNotFound(_0x2ce8e4,_0x34e26f){return function(_0x4bc7a1){if(!_0x4bc7a1){_0x2ce8e4[_0xd22d('0x1a')](0x194);}return _0x4bc7a1;};}function handleError(_0x11ec2d,_0x4dee0f){_0x4dee0f=_0x4dee0f||0x1f4;return function(_0x292551){logger[_0xd22d('0x29')](_0x292551[_0xd22d('0x2a')]);if(_0x292551[_0xd22d('0x2b')]){delete _0x292551[_0xd22d('0x2b')];}_0x11ec2d['status'](_0x4dee0f)[_0xd22d('0x2c')](_0x292551);};}exports[_0xd22d('0x2d')]=function(_0x4b6595,_0x16af61){var _0x1577a4={},_0x5ac8a0={},_0x5393d4={'count':0x0,'rows':[]};var _0xe696ab=_[_0xd22d('0x2e')](db[_0xd22d('0x2f')][_0xd22d('0x30')],function(_0x56fb45){return{'name':_0x56fb45[_0xd22d('0x31')],'type':_0x56fb45['type'][_0xd22d('0x32')]};});_0x5ac8a0[_0xd22d('0x33')]=_[_0xd22d('0x2e')](_0xe696ab,'name');_0x5ac8a0[_0xd22d('0x34')]=_['keys'](_0x4b6595[_0xd22d('0x34')]);_0x5ac8a0[_0xd22d('0x35')]=_[_0xd22d('0x36')](_0x5ac8a0['model'],_0x5ac8a0[_0xd22d('0x34')]);_0x1577a4[_0xd22d('0x37')]=_[_0xd22d('0x36')](_0x5ac8a0['model'],qs[_0xd22d('0x38')](_0x4b6595[_0xd22d('0x34')][_0xd22d('0x38')]));_0x1577a4[_0xd22d('0x37')]=_0x1577a4['attributes'][_0xd22d('0x39')]?_0x1577a4['attributes']:_0x5ac8a0[_0xd22d('0x33')];if(!_0x4b6595['query'][_0xd22d('0x3a')](_0xd22d('0x3b'))){_0x1577a4[_0xd22d('0x21')]=qs[_0xd22d('0x21')](_0x4b6595[_0xd22d('0x34')]['limit']);_0x1577a4[_0xd22d('0x1e')]=qs[_0xd22d('0x1e')](_0x4b6595['query']['offset']);}_0x1577a4['order']=qs['sort'](_0x4b6595['query'][_0xd22d('0x3c')]);_0x1577a4['where']=qs[_0xd22d('0x35')](_[_0xd22d('0x3d')](_0x4b6595[_0xd22d('0x34')],_0x5ac8a0[_0xd22d('0x35')]),_0xe696ab);if(_0x4b6595[_0xd22d('0x34')]['filter']){_0x1577a4['where']=_['merge'](_0x1577a4[_0xd22d('0x3e')],{'$or':_[_0xd22d('0x2e')](_0xe696ab,function(_0x56e6b7){if(_0x56e6b7[_0xd22d('0x3f')]!=='VIRTUAL'){var _0x780b22={};_0x780b22[_0x56e6b7[_0xd22d('0x2b')]]={'$like':'%'+_0x4b6595[_0xd22d('0x34')]['filter']+'%'};return _0x780b22;}})});}_0x1577a4=_[_0xd22d('0x40')]({},_0x1577a4,_0x4b6595[_0xd22d('0x41')]);var _0x18d44c={'where':_0x1577a4[_0xd22d('0x3e')]};return db[_0xd22d('0x2f')][_0xd22d('0x20')](_0x18d44c)['then'](function(_0x36246b){_0x5393d4[_0xd22d('0x20')]=_0x36246b;if(_0x4b6595[_0xd22d('0x34')]['includeAll']){_0x1577a4[_0xd22d('0x42')]=[{'all':!![]}];}return db[_0xd22d('0x2f')][_0xd22d('0x43')](_0x1577a4);})[_0xd22d('0x27')](function(_0x2eaf17){_0x5393d4['rows']=_0x2eaf17;return _0x5393d4;})[_0xd22d('0x27')](respondWithFilteredResult(_0x16af61,_0x1577a4))[_0xd22d('0x44')](handleError(_0x16af61,null));};exports[_0xd22d('0x45')]=function(_0x5dbf84,_0x96e53a){var _0x5324c2={'raw':!![],'where':{'id':_0x5dbf84[_0xd22d('0x46')]['id']}},_0x30daa6={};_0x30daa6['model']=_[_0xd22d('0x47')](db[_0xd22d('0x2f')][_0xd22d('0x30')]);_0x30daa6[_0xd22d('0x34')]=_['keys'](_0x5dbf84[_0xd22d('0x34')]);_0x30daa6[_0xd22d('0x35')]=_[_0xd22d('0x36')](_0x30daa6['model'],_0x30daa6[_0xd22d('0x34')]);_0x5324c2['attributes']=_[_0xd22d('0x36')](_0x30daa6[_0xd22d('0x33')],qs[_0xd22d('0x38')](_0x5dbf84[_0xd22d('0x34')]['fields']));_0x5324c2[_0xd22d('0x37')]=_0x5324c2[_0xd22d('0x37')][_0xd22d('0x39')]?_0x5324c2[_0xd22d('0x37')]:_0x30daa6[_0xd22d('0x33')];if(_0x5dbf84[_0xd22d('0x34')][_0xd22d('0x48')]){_0x5324c2[_0xd22d('0x42')]=[{'all':!![]}];}_0x5324c2=_[_0xd22d('0x40')]({},_0x5324c2,_0x5dbf84['options']);return db[_0xd22d('0x2f')][_0xd22d('0x49')](_0x5324c2)[_0xd22d('0x27')](handleEntityNotFound(_0x96e53a,null))[_0xd22d('0x27')](respondWithResult(_0x96e53a,null))['catch'](handleError(_0x96e53a,null));};exports['create']=function(_0x4ce11c,_0x1a2675){return db['SalesforceField'][_0xd22d('0x4a')](_0x4ce11c[_0xd22d('0x4b')],{})['then'](respondWithResult(_0x1a2675,0xc9))[_0xd22d('0x44')](handleError(_0x1a2675,null));};exports['update']=function(_0x3f5f75,_0x6e28a){if(_0x3f5f75[_0xd22d('0x4b')]['id']){delete _0x3f5f75[_0xd22d('0x4b')]['id'];}return db[_0xd22d('0x2f')][_0xd22d('0x49')]({'where':{'id':_0x3f5f75['params']['id']}})['then'](handleEntityNotFound(_0x6e28a,null))[_0xd22d('0x27')](saveUpdates(_0x3f5f75[_0xd22d('0x4b')],null))[_0xd22d('0x27')](respondWithResult(_0x6e28a,null))[_0xd22d('0x44')](handleError(_0x6e28a,null));};exports[_0xd22d('0x28')]=function(_0xd41f1a,_0x182373){return db[_0xd22d('0x2f')][_0xd22d('0x49')]({'where':{'id':_0xd41f1a[_0xd22d('0x46')]['id']}})[_0xd22d('0x27')](handleEntityNotFound(_0x182373,null))['then'](removeEntity(_0x182373,null))[_0xd22d('0x44')](handleError(_0x182373,null));};
\ No newline at end of file
+var _0x27ea=['name','SalesforceField','rawAttributes','fieldName','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','pick','filter','where','map','type','VIRTUAL','merge','options','findAll','rows','catch','show','params','keys','includeAll','include','find','create','body','update','eml-format','zip-dir','fast-json-patch','bluebird','mustache','path','to-csv','ejs','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','reject','then','destroy','error','stack'];(function(_0x36884e,_0x48008f){var _0x1cc367=function(_0x388a78){while(--_0x388a78){_0x36884e['push'](_0x36884e['shift']());}};_0x1cc367(++_0x48008f);}(_0x27ea,0x186));var _0xa27e=function(_0x123e0e,_0x37deee){_0x123e0e=_0x123e0e-0x0;var _0x5f3051=_0x27ea[_0x123e0e];return _0x5f3051;};'use strict';var emlformat=require(_0xa27e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa27e('0x1'));var jsonpatch=require(_0xa27e('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xa27e('0x3'));var Mustache=require(_0xa27e('0x4'));var util=require('util');var path=require(_0xa27e('0x5'));var sox=require('sox');var csv=require(_0xa27e('0x6'));var ejs=require(_0xa27e('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa27e('0x8'));var squel=require('squel');var crypto=require(_0xa27e('0x9'));var jsforce=require(_0xa27e('0xa'));var deskjs=require(_0xa27e('0xb'));var toCsv=require(_0xa27e('0x6'));var querystring=require('querystring');var Papa=require(_0xa27e('0xc'));var Redis=require(_0xa27e('0xd'));var authService=require(_0xa27e('0xe'));var qs=require(_0xa27e('0xf'));var as=require(_0xa27e('0x10'));var hardwareService=require(_0xa27e('0x11'));var logger=require(_0xa27e('0x12'))(_0xa27e('0x13'));var utils=require(_0xa27e('0x14'));var config=require(_0xa27e('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xa27e('0x16'))['db'];function respondWithStatusCode(_0x4e0b07,_0x5764c0){_0x5764c0=_0x5764c0||0xcc;return function(_0x258e1a){if(_0x258e1a){return _0x4e0b07[_0xa27e('0x17')](_0x5764c0);}return _0x4e0b07[_0xa27e('0x18')](_0x5764c0)[_0xa27e('0x19')]();};}function respondWithResult(_0x36129f,_0x1e4200){_0x1e4200=_0x1e4200||0xc8;return function(_0x4156d0){if(_0x4156d0){return _0x36129f['status'](_0x1e4200)[_0xa27e('0x1a')](_0x4156d0);}};}function respondWithFilteredResult(_0x1a7ba5,_0x596b1e){return function(_0x2150a7){if(_0x2150a7){var _0x2c4204=typeof _0x596b1e[_0xa27e('0x1b')]==='undefined'&&typeof _0x596b1e[_0xa27e('0x1c')]===_0xa27e('0x1d');var _0x177758=_0x2150a7[_0xa27e('0x1e')];var _0x555521=_0x2c4204?0x0:_0x596b1e[_0xa27e('0x1b')];var _0x59e559=_0x2c4204?_0x2150a7[_0xa27e('0x1e')]:_0x596b1e['offset']+_0x596b1e['limit'];var _0x244807;if(_0x59e559>=_0x177758){_0x59e559=_0x177758;_0x244807=0xc8;}else{_0x244807=0xce;}_0x1a7ba5[_0xa27e('0x18')](_0x244807);return _0x1a7ba5['set']('Content-Range',_0x555521+'-'+_0x59e559+'/'+_0x177758)[_0xa27e('0x1a')](_0x2150a7);}return null;};}function patchUpdates(_0x35668e){return function(_0x2c855b){try{jsonpatch['apply'](_0x2c855b,_0x35668e,!![]);}catch(_0x427d82){return BPromise[_0xa27e('0x1f')](_0x427d82);}return _0x2c855b['save']();};}function saveUpdates(_0xfee593,_0x14f916){return function(_0x8a83ef){if(_0x8a83ef){return _0x8a83ef['update'](_0xfee593)[_0xa27e('0x20')](function(_0x568b4f){return _0x568b4f;});}return null;};}function removeEntity(_0x1f76c4,_0x32eab0){return function(_0x501be7){if(_0x501be7){return _0x501be7[_0xa27e('0x21')]()[_0xa27e('0x20')](function(){_0x1f76c4[_0xa27e('0x18')](0xcc)[_0xa27e('0x19')]();});}};}function handleEntityNotFound(_0x3d0786,_0x3b9d16){return function(_0x4e10e1){if(!_0x4e10e1){_0x3d0786[_0xa27e('0x17')](0x194);}return _0x4e10e1;};}function handleError(_0x5cb47f,_0x5ea34c){_0x5ea34c=_0x5ea34c||0x1f4;return function(_0x211eac){logger[_0xa27e('0x22')](_0x211eac[_0xa27e('0x23')]);if(_0x211eac[_0xa27e('0x24')]){delete _0x211eac[_0xa27e('0x24')];}_0x5cb47f['status'](_0x5ea34c)['send'](_0x211eac);};}exports['index']=function(_0x595597,_0xf9d13c){var _0x4134cf={},_0x359e68={},_0x6d7752={'count':0x0,'rows':[]};var _0x255578=_['map'](db[_0xa27e('0x25')][_0xa27e('0x26')],function(_0x980aaa){return{'name':_0x980aaa[_0xa27e('0x27')],'type':_0x980aaa['type'][_0xa27e('0x28')]};});_0x359e68[_0xa27e('0x29')]=_['map'](_0x255578,'name');_0x359e68[_0xa27e('0x2a')]=_['keys'](_0x595597[_0xa27e('0x2a')]);_0x359e68[_0xa27e('0x2b')]=_[_0xa27e('0x2c')](_0x359e68['model'],_0x359e68['query']);_0x4134cf['attributes']=_['intersection'](_0x359e68[_0xa27e('0x29')],qs[_0xa27e('0x2d')](_0x595597['query']['fields']));_0x4134cf['attributes']=_0x4134cf[_0xa27e('0x2e')][_0xa27e('0x2f')]?_0x4134cf['attributes']:_0x359e68['model'];if(!_0x595597[_0xa27e('0x2a')][_0xa27e('0x30')]('nolimit')){_0x4134cf[_0xa27e('0x1c')]=qs[_0xa27e('0x1c')](_0x595597[_0xa27e('0x2a')][_0xa27e('0x1c')]);_0x4134cf['offset']=qs[_0xa27e('0x1b')](_0x595597[_0xa27e('0x2a')][_0xa27e('0x1b')]);}_0x4134cf[_0xa27e('0x31')]=qs[_0xa27e('0x32')](_0x595597[_0xa27e('0x2a')]['sort']);_0x4134cf['where']=qs[_0xa27e('0x2b')](_[_0xa27e('0x33')](_0x595597[_0xa27e('0x2a')],_0x359e68[_0xa27e('0x2b')]),_0x255578);if(_0x595597[_0xa27e('0x2a')][_0xa27e('0x34')]){_0x4134cf[_0xa27e('0x35')]=_['merge'](_0x4134cf['where'],{'$or':_[_0xa27e('0x36')](_0x255578,function(_0xa62e5d){if(_0xa62e5d[_0xa27e('0x37')]!==_0xa27e('0x38')){var _0x39d14e={};_0x39d14e[_0xa62e5d[_0xa27e('0x24')]]={'$like':'%'+_0x595597[_0xa27e('0x2a')][_0xa27e('0x34')]+'%'};return _0x39d14e;}})});}_0x4134cf=_[_0xa27e('0x39')]({},_0x4134cf,_0x595597[_0xa27e('0x3a')]);var _0x5ceaee={'where':_0x4134cf[_0xa27e('0x35')]};return db[_0xa27e('0x25')][_0xa27e('0x1e')](_0x5ceaee)[_0xa27e('0x20')](function(_0x64659b){_0x6d7752[_0xa27e('0x1e')]=_0x64659b;if(_0x595597[_0xa27e('0x2a')]['includeAll']){_0x4134cf['include']=[{'all':!![]}];}return db[_0xa27e('0x25')][_0xa27e('0x3b')](_0x4134cf);})[_0xa27e('0x20')](function(_0x57f252){_0x6d7752[_0xa27e('0x3c')]=_0x57f252;return _0x6d7752;})[_0xa27e('0x20')](respondWithFilteredResult(_0xf9d13c,_0x4134cf))[_0xa27e('0x3d')](handleError(_0xf9d13c,null));};exports[_0xa27e('0x3e')]=function(_0x137af7,_0x2f03d7){var _0xfbdbb4={'raw':!![],'where':{'id':_0x137af7[_0xa27e('0x3f')]['id']}},_0x13198a={};_0x13198a[_0xa27e('0x29')]=_[_0xa27e('0x40')](db[_0xa27e('0x25')][_0xa27e('0x26')]);_0x13198a[_0xa27e('0x2a')]=_[_0xa27e('0x40')](_0x137af7[_0xa27e('0x2a')]);_0x13198a[_0xa27e('0x2b')]=_['intersection'](_0x13198a[_0xa27e('0x29')],_0x13198a[_0xa27e('0x2a')]);_0xfbdbb4[_0xa27e('0x2e')]=_[_0xa27e('0x2c')](_0x13198a[_0xa27e('0x29')],qs[_0xa27e('0x2d')](_0x137af7[_0xa27e('0x2a')][_0xa27e('0x2d')]));_0xfbdbb4[_0xa27e('0x2e')]=_0xfbdbb4['attributes']['length']?_0xfbdbb4[_0xa27e('0x2e')]:_0x13198a[_0xa27e('0x29')];if(_0x137af7[_0xa27e('0x2a')][_0xa27e('0x41')]){_0xfbdbb4[_0xa27e('0x42')]=[{'all':!![]}];}_0xfbdbb4=_[_0xa27e('0x39')]({},_0xfbdbb4,_0x137af7['options']);return db['SalesforceField'][_0xa27e('0x43')](_0xfbdbb4)['then'](handleEntityNotFound(_0x2f03d7,null))[_0xa27e('0x20')](respondWithResult(_0x2f03d7,null))[_0xa27e('0x3d')](handleError(_0x2f03d7,null));};exports[_0xa27e('0x44')]=function(_0x4006b8,_0x39803a){return db[_0xa27e('0x25')]['create'](_0x4006b8[_0xa27e('0x45')],{})[_0xa27e('0x20')](respondWithResult(_0x39803a,0xc9))[_0xa27e('0x3d')](handleError(_0x39803a,null));};exports[_0xa27e('0x46')]=function(_0x20b699,_0x35d295){if(_0x20b699[_0xa27e('0x45')]['id']){delete _0x20b699[_0xa27e('0x45')]['id'];}return db[_0xa27e('0x25')][_0xa27e('0x43')]({'where':{'id':_0x20b699[_0xa27e('0x3f')]['id']}})[_0xa27e('0x20')](handleEntityNotFound(_0x35d295,null))[_0xa27e('0x20')](saveUpdates(_0x20b699['body'],null))[_0xa27e('0x20')](respondWithResult(_0x35d295,null))[_0xa27e('0x3d')](handleError(_0x35d295,null));};exports[_0xa27e('0x21')]=function(_0x463ace,_0x2b1c06){return db[_0xa27e('0x25')][_0xa27e('0x43')]({'where':{'id':_0x463ace[_0xa27e('0x3f')]['id']}})['then'](handleEntityNotFound(_0x2b1c06,null))[_0xa27e('0x20')](removeEntity(_0x2b1c06,null))[_0xa27e('0x3d')](handleError(_0x2b1c06,null));};
\ No newline at end of file
index aa5960a..5f75b7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10ed=['lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./intSalesforceField.attributes','exports','define','SalesforceField','int_salesforce_fields','salesforce_unique_index','idField','FieldId'];(function(_0x198921,_0x3df5e3){var _0x17ea4a=function(_0x524d00){while(--_0x524d00){_0x198921['push'](_0x198921['shift']());}};_0x17ea4a(++_0x3df5e3);}(_0x10ed,0x90));var _0xd10e=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0x10ed[_0x199572];return _0x13cfa3;};'use strict';var _=require(_0xd10e('0x0'));var util=require(_0xd10e('0x1'));var logger=require(_0xd10e('0x2'))(_0xd10e('0x3'));var moment=require('moment');var BPromise=require(_0xd10e('0x4'));var rp=require(_0xd10e('0x5'));var fs=require('fs');var path=require(_0xd10e('0x6'));var rimraf=require(_0xd10e('0x7'));var config=require('../../config/environment');var attributes=require(_0xd10e('0x8'));module[_0xd10e('0x9')]=function(_0x46d2b7,_0x379805){return _0x46d2b7[_0xd10e('0xa')](_0xd10e('0xb'),attributes,{'tableName':_0xd10e('0xc'),'paranoid':![],'indexes':[{'name':_0xd10e('0xd'),'fields':[_0xd10e('0xe'),_0xd10e('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x88bb=['api','moment','bluebird','request-promise','../../config/environment','exports','define','SalesforceField','int_salesforce_fields','FieldId','lodash','util','../../config/logger'];(function(_0x13cab0,_0x14d825){var _0x38804f=function(_0x1bffaf){while(--_0x1bffaf){_0x13cab0['push'](_0x13cab0['shift']());}};_0x38804f(++_0x14d825);}(_0x88bb,0xda));var _0xb88b=function(_0x4dc5ca,_0x10f670){_0x4dc5ca=_0x4dc5ca-0x0;var _0x5e094d=_0x88bb[_0x4dc5ca];return _0x5e094d;};'use strict';var _=require(_0xb88b('0x0'));var util=require(_0xb88b('0x1'));var logger=require(_0xb88b('0x2'))(_0xb88b('0x3'));var moment=require(_0xb88b('0x4'));var BPromise=require(_0xb88b('0x5'));var rp=require(_0xb88b('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xb88b('0x7'));var attributes=require('./intSalesforceField.attributes');module[_0xb88b('0x8')]=function(_0x22aa32,_0x1d8942){return _0x22aa32[_0xb88b('0x9')](_0xb88b('0xa'),attributes,{'tableName':_0xb88b('0xb'),'paranoid':![],'indexes':[{'name':'salesforce_unique_index','fields':['idField',_0xb88b('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 14589b1..433adfa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54b2=['info','SalesforceField,\x20%s,\x20%s','request\x20sent','debug','SalesforceField,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','util','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then'];(function(_0x19fc15,_0x34c037){var _0x167db5=function(_0x5b3d28){while(--_0x5b3d28){_0x19fc15['push'](_0x19fc15['shift']());}};_0x167db5(++_0x34c037);}(_0x54b2,0x82));var _0x254b=function(_0x2282ab,_0x2c07b1){_0x2282ab=_0x2282ab-0x0;var _0x75664b=_0x54b2[_0x2282ab];return _0x75664b;};'use strict';var _=require('lodash');var util=require(_0x254b('0x0'));var moment=require('moment');var BPromise=require(_0x254b('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x254b('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x254b('0x3'));var logger=require(_0x254b('0x4'))(_0x254b('0x5'));var config=require(_0x254b('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0x254b('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x2ac8e8,_0x263ce9,_0x57203b){return new BPromise(function(_0x2e62a2,_0x2d3c33){return client[_0x254b('0x8')](_0x2ac8e8,_0x57203b)[_0x254b('0x9')](function(_0x29501f){logger[_0x254b('0xa')](_0x254b('0xb'),_0x263ce9,_0x254b('0xc'));logger[_0x254b('0xd')](_0x254b('0xe'),_0x263ce9,_0x254b('0xc'),JSON['stringify'](_0x29501f));if(_0x29501f[_0x254b('0xf')]){if(_0x29501f[_0x254b('0xf')][_0x254b('0x10')]===0x1f4){logger[_0x254b('0xf')]('SalesforceField,\x20%s,\x20%s',_0x263ce9,_0x29501f['error']['message']);return _0x2d3c33(_0x29501f[_0x254b('0xf')][_0x254b('0x11')]);}logger[_0x254b('0xf')](_0x254b('0xb'),_0x263ce9,_0x29501f[_0x254b('0xf')][_0x254b('0x11')]);return _0x2e62a2(_0x29501f[_0x254b('0xf')][_0x254b('0x11')]);}else{logger[_0x254b('0xa')](_0x254b('0xb'),_0x263ce9,_0x254b('0xc'));_0x2e62a2(_0x29501f[_0x254b('0x12')][_0x254b('0x11')]);}})[_0x254b('0x13')](function(_0x27ac62){logger[_0x254b('0xf')]('SalesforceField,\x20%s,\x20%s',_0x263ce9,_0x27ac62);_0x2d3c33(_0x27ac62);});});}
\ No newline at end of file
+var _0xec02=['randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SalesforceField,\x20%s,\x20%s','request\x20sent','debug','SalesforceField,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','bluebird'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xec02,0x17d));var _0x2ec0=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0xec02[_0x160c73];return _0xd9302;};'use strict';var _=require(_0x2ec0('0x0'));var util=require(_0x2ec0('0x1'));var moment=require('moment');var BPromise=require(_0x2ec0('0x2'));var rs=require(_0x2ec0('0x3'));var fs=require('fs');var Redis=require(_0x2ec0('0x4'));var db=require(_0x2ec0('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x2ec0('0x6'))(_0x2ec0('0x7'));var config=require(_0x2ec0('0x8'));var jayson=require(_0x2ec0('0x9'));var client=jayson[_0x2ec0('0xa')][_0x2ec0('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x586c9f,_0xe63a4a,_0x199bc5){return new BPromise(function(_0x2e598c,_0x4a73a1){return client[_0x2ec0('0xc')](_0x586c9f,_0x199bc5)[_0x2ec0('0xd')](function(_0x9ce8f6){logger[_0x2ec0('0xe')](_0x2ec0('0xf'),_0xe63a4a,_0x2ec0('0x10'));logger[_0x2ec0('0x11')](_0x2ec0('0x12'),_0xe63a4a,'request\x20sent',JSON[_0x2ec0('0x13')](_0x9ce8f6));if(_0x9ce8f6['error']){if(_0x9ce8f6[_0x2ec0('0x14')]['code']===0x1f4){logger[_0x2ec0('0x14')](_0x2ec0('0xf'),_0xe63a4a,_0x9ce8f6[_0x2ec0('0x14')][_0x2ec0('0x15')]);return _0x4a73a1(_0x9ce8f6['error'][_0x2ec0('0x15')]);}logger[_0x2ec0('0x14')](_0x2ec0('0xf'),_0xe63a4a,_0x9ce8f6[_0x2ec0('0x14')][_0x2ec0('0x15')]);return _0x2e598c(_0x9ce8f6[_0x2ec0('0x14')][_0x2ec0('0x15')]);}else{logger[_0x2ec0('0xe')](_0x2ec0('0xf'),_0xe63a4a,_0x2ec0('0x10'));_0x2e598c(_0x9ce8f6[_0x2ec0('0x16')][_0x2ec0('0x15')]);}})[_0x2ec0('0x17')](function(_0x166781){logger[_0x2ec0('0x14')](_0x2ec0('0xf'),_0xe63a4a,_0x166781);_0x4a73a1(_0x166781);});});}
\ No newline at end of file
index 16d6e8b..d7085cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c9c=['update','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowAccount.controller','get','index','isAuthenticated','/:id/fields','getFields','post','create','/:id/configurations','/:id'];(function(_0x33ddae,_0x573086){var _0x1f1cc8=function(_0x560e7b){while(--_0x560e7b){_0x33ddae['push'](_0x33ddae['shift']());}};_0x1f1cc8(++_0x573086);}(_0x5c9c,0x1d1));var _0xc5c9=function(_0x3c717d,_0x337eea){_0x3c717d=_0x3c717d-0x0;var _0x27486b=_0x5c9c[_0x3c717d];return _0x27486b;};'use strict';var multer=require(_0xc5c9('0x0'));var util=require(_0xc5c9('0x1'));var path=require(_0xc5c9('0x2'));var timeout=require(_0xc5c9('0x3'));var express=require(_0xc5c9('0x4'));var router=express['Router']();var fs_extra=require(_0xc5c9('0x5'));var auth=require(_0xc5c9('0x6'));var interaction=require(_0xc5c9('0x7'));var config=require(_0xc5c9('0x8'));var controller=require(_0xc5c9('0x9'));router[_0xc5c9('0xa')]('/',auth['isAuthenticated'](),controller[_0xc5c9('0xb')]);router[_0xc5c9('0xa')]('/:id',auth[_0xc5c9('0xc')](),controller['show']);router['get']('/:id/configurations',auth[_0xc5c9('0xc')](),controller['getConfigurations']);router[_0xc5c9('0xa')](_0xc5c9('0xd'),auth[_0xc5c9('0xc')](),controller[_0xc5c9('0xe')]);router[_0xc5c9('0xf')]('/',auth[_0xc5c9('0xc')](),controller[_0xc5c9('0x10')]);router[_0xc5c9('0xf')](_0xc5c9('0x11'),auth['isAuthenticated'](),controller['addConfiguration']);router['put'](_0xc5c9('0x12'),auth[_0xc5c9('0xc')](),controller[_0xc5c9('0x13')]);router['delete'](_0xc5c9('0x12'),auth[_0xc5c9('0xc')](),controller[_0xc5c9('0x14')]);module[_0xc5c9('0x15')]=router;
\ No newline at end of file
+var _0xd757=['exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../config/environment','./intServicenowAccount.controller','get','/:id','isAuthenticated','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','put','update','delete','destroy'];(function(_0x1abeb2,_0x79f462){var _0x48da20=function(_0x42a90b){while(--_0x42a90b){_0x1abeb2['push'](_0x1abeb2['shift']());}};_0x48da20(++_0x79f462);}(_0xd757,0x1e5));var _0x7d75=function(_0x16c644,_0x197403){_0x16c644=_0x16c644-0x0;var _0x5a1b24=_0xd757[_0x16c644];return _0x5a1b24;};'use strict';var multer=require(_0x7d75('0x0'));var util=require(_0x7d75('0x1'));var path=require(_0x7d75('0x2'));var timeout=require(_0x7d75('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x7d75('0x4'));var auth=require(_0x7d75('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x7d75('0x6'));var controller=require(_0x7d75('0x7'));router[_0x7d75('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x7d75('0x8')](_0x7d75('0x9'),auth[_0x7d75('0xa')](),controller[_0x7d75('0xb')]);router[_0x7d75('0x8')](_0x7d75('0xc'),auth[_0x7d75('0xa')](),controller[_0x7d75('0xd')]);router[_0x7d75('0x8')](_0x7d75('0xe'),auth[_0x7d75('0xa')](),controller[_0x7d75('0xf')]);router[_0x7d75('0x10')]('/',auth['isAuthenticated'](),controller['create']);router[_0x7d75('0x10')](_0x7d75('0xc'),auth[_0x7d75('0xa')](),controller['addConfiguration']);router[_0x7d75('0x11')](_0x7d75('0x9'),auth['isAuthenticated'](),controller[_0x7d75('0x12')]);router[_0x7d75('0x13')](_0x7d75('0x9'),auth[_0x7d75('0xa')](),controller[_0x7d75('0x14')]);module[_0x7d75('0x15')]=router;
\ No newline at end of file
index 45b0fcc..a493a0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a52=['STRING','username','sequelize'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0a52,0x9b));var _0x20a5=function(_0x3eef3a,_0x257124){_0x3eef3a=_0x3eef3a-0x0;var _0x225b1e=_0x0a52[_0x3eef3a];return _0x225b1e;};'use strict';var Sequelize=require(_0x20a5('0x0'));module['exports']={'name':{'type':Sequelize[_0x20a5('0x1')]},'description':{'type':Sequelize[_0x20a5('0x1')]},'username':{'type':Sequelize[_0x20a5('0x1')],'unique':_0x20a5('0x2')},'password':{'type':Sequelize[_0x20a5('0x1')]},'email':{'type':Sequelize[_0x20a5('0x1')]},'remoteUri':{'type':Sequelize[_0x20a5('0x1')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0x20a5('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0xb9f9=['sequelize','exports','STRING','remoteUri'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xb9f9,0x64));var _0x9b9f=function(_0x52b360,_0x4f7b42){_0x52b360=_0x52b360-0x0;var _0x29e22b=_0xb9f9[_0x52b360];return _0x29e22b;};'use strict';var Sequelize=require(_0x9b9f('0x0'));module[_0x9b9f('0x1')]={'name':{'type':Sequelize[_0x9b9f('0x2')]},'description':{'type':Sequelize[_0x9b9f('0x2')]},'username':{'type':Sequelize[_0x9b9f('0x2')],'unique':'username'},'password':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0x9b9f('0x2')]},'remoteUri':{'type':Sequelize[_0x9b9f('0x2')],'unique':_0x9b9f('0x3')},'serverUrl':{'type':Sequelize[_0x9b9f('0x2')],'allowNull':![]}};
\ No newline at end of file
index 0becc14..0ad9506 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93da=['Content-Range','apply','reject','save','update','error','stack','name','send','map','ServicenowAccount','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','options','then','includeAll','include','rows','catch','params','create','body','find','destroy','findOne','filter','getConfigurations','AccountId','getSubjects','channel','Descriptions','getDescriptions','ServicenowField','Subjects','getFields','made_sla','hold_reason','subcategory','close_code','notify','incident_state','parent','caused_by','watch_list','upon_reject','child_incidents','resolved_by','sys_updated_by','opened_by','sys_created_on','state','sys_created_by','knowledge','calendar_stc','cmdb_ci','delivery_plan','impact','active','work_notes_list','priority','expected_start','opened_at','group_list','reopened_time','resolved_at','caller_id','approval_set','work_notes','correlation_display','delivery_task','work_start','assignment_group','business_stc','calendar_duration','close_notes','closed_by','follow_up','sys_id','contact_type','urgency','problem_id','company','reassignment_count','activity_due','assigned_to','severity','sla_due','approval','comments_and_work_notes','sys_mod_count','sys_tags','escalation','upon_approval','correlation_id','email','slice','substring','lastIndexOf','%s/api/now/doc/table/schema/','format','%s/api/now/table/','username','password','incident?sysparm_display_value=all','result','log','incident\x20table\x20objects','assign','remove','forEach','internalType','push','all','TCL:\x20_object','includes','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','label','concat','ServiceNow\x20error:\x20','test','statusCode','Wrong\x20credentials','boolean','True','true','False','false','GET','inactive','value','eml-format','zip-dir','fast-json-patch','moment','mustache','util','path','to-csv','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','../../config/utils','../../mysqldb','../../components/integrations/configuration','sendStatus','end','offset','undefined','limit','count','status','set'];(function(_0x5db99b,_0xdee23a){var _0x4b2d0e=function(_0x4deee1){while(--_0x4deee1){_0x5db99b['push'](_0x5db99b['shift']());}};_0x4b2d0e(++_0xdee23a);}(_0x93da,0x1f2));var _0xa93d=function(_0x27380e,_0x4c5c6c){_0x27380e=_0x27380e-0x0;var _0x46eb19=_0x93da[_0x27380e];return _0x46eb19;};'use strict';var emlformat=require(_0xa93d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa93d('0x1'));var jsonpatch=require(_0xa93d('0x2'));var rp=require('request-promise');var moment=require(_0xa93d('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xa93d('0x4'));var util=require(_0xa93d('0x5'));var path=require(_0xa93d('0x6'));var sox=require('sox');var csv=require(_0xa93d('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa93d('0x8'));var squel=require(_0xa93d('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xa93d('0xa'));var toCsv=require(_0xa93d('0x7'));var querystring=require(_0xa93d('0xb'));var Papa=require(_0xa93d('0xc'));var Redis=require(_0xa93d('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xa93d('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xa93d('0xf'))('api');var utils=require(_0xa93d('0x10'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xa93d('0x11'))['db'];var integrations=require(_0xa93d('0x12'));function respondWithStatusCode(_0x52f13a,_0x58f5bf){_0x58f5bf=_0x58f5bf||0xcc;return function(_0x159126){if(_0x159126){return _0x52f13a[_0xa93d('0x13')](_0x58f5bf);}return _0x52f13a['status'](_0x58f5bf)[_0xa93d('0x14')]();};}function respondWithResult(_0x488f5b,_0x474804){_0x474804=_0x474804||0xc8;return function(_0x373f16){if(_0x373f16){return _0x488f5b['status'](_0x474804)['json'](_0x373f16);}};}function respondWithFilteredResult(_0x58467e,_0x4c7e47){return function(_0x17e983){if(_0x17e983){var _0x929df8=typeof _0x4c7e47[_0xa93d('0x15')]===_0xa93d('0x16')&&typeof _0x4c7e47[_0xa93d('0x17')]===_0xa93d('0x16');var _0x542a45=_0x17e983[_0xa93d('0x18')];var _0x3ad9a7=_0x929df8?0x0:_0x4c7e47[_0xa93d('0x15')];var _0xe40435=_0x929df8?_0x17e983[_0xa93d('0x18')]:_0x4c7e47[_0xa93d('0x15')]+_0x4c7e47[_0xa93d('0x17')];var _0x2eca7b;if(_0xe40435>=_0x542a45){_0xe40435=_0x542a45;_0x2eca7b=0xc8;}else{_0x2eca7b=0xce;}_0x58467e[_0xa93d('0x19')](_0x2eca7b);return _0x58467e[_0xa93d('0x1a')](_0xa93d('0x1b'),_0x3ad9a7+'-'+_0xe40435+'/'+_0x542a45)['json'](_0x17e983);}return null;};}function patchUpdates(_0x1b4cec){return function(_0x11087d){try{jsonpatch[_0xa93d('0x1c')](_0x11087d,_0x1b4cec,!![]);}catch(_0x4cf3dd){return BPromise[_0xa93d('0x1d')](_0x4cf3dd);}return _0x11087d[_0xa93d('0x1e')]();};}function saveUpdates(_0x4d423d,_0x18fb7c){return function(_0x593415){if(_0x593415){return _0x593415[_0xa93d('0x1f')](_0x4d423d)['then'](function(_0x167ae2){return _0x167ae2;});}return null;};}function removeEntity(_0x4094c2,_0xe82078){return function(_0x23de84){if(_0x23de84){return _0x23de84['destroy']()['then'](function(){_0x4094c2[_0xa93d('0x19')](0xcc)[_0xa93d('0x14')]();});}};}function handleEntityNotFound(_0x109d57,_0x37bab1){return function(_0x34ef32){if(!_0x34ef32){_0x109d57['sendStatus'](0x194);}return _0x34ef32;};}function handleError(_0x5ad848,_0x192800){_0x192800=_0x192800||0x1f4;return function(_0x58aac4){logger[_0xa93d('0x20')](_0x58aac4[_0xa93d('0x21')]);if(_0x58aac4[_0xa93d('0x22')]){delete _0x58aac4['name'];}_0x5ad848[_0xa93d('0x19')](_0x192800)[_0xa93d('0x23')](_0x58aac4);};}exports['index']=function(_0x42fb3a,_0xc53d42){var _0x469857={},_0x2d737f={},_0x41298a={'count':0x0,'rows':[]};var _0x4dbc2c=_[_0xa93d('0x24')](db[_0xa93d('0x25')][_0xa93d('0x26')],function(_0x15a9d1){return{'name':_0x15a9d1[_0xa93d('0x27')],'type':_0x15a9d1[_0xa93d('0x28')][_0xa93d('0x29')]};});_0x2d737f[_0xa93d('0x2a')]=_[_0xa93d('0x24')](_0x4dbc2c,_0xa93d('0x22'));_0x2d737f[_0xa93d('0x2b')]=_[_0xa93d('0x2c')](_0x42fb3a['query']);_0x2d737f[_0xa93d('0x2d')]=_[_0xa93d('0x2e')](_0x2d737f['model'],_0x2d737f[_0xa93d('0x2b')]);_0x469857[_0xa93d('0x2f')]=_[_0xa93d('0x2e')](_0x2d737f[_0xa93d('0x2a')],qs[_0xa93d('0x30')](_0x42fb3a['query']['fields']));_0x469857[_0xa93d('0x2f')]=_0x469857[_0xa93d('0x2f')][_0xa93d('0x31')]?_0x469857['attributes']:_0x2d737f[_0xa93d('0x2a')];if(!_0x42fb3a[_0xa93d('0x2b')][_0xa93d('0x32')](_0xa93d('0x33'))){_0x469857[_0xa93d('0x17')]=qs[_0xa93d('0x17')](_0x42fb3a[_0xa93d('0x2b')]['limit']);_0x469857[_0xa93d('0x15')]=qs['offset'](_0x42fb3a['query'][_0xa93d('0x15')]);}_0x469857[_0xa93d('0x34')]=qs['sort'](_0x42fb3a[_0xa93d('0x2b')][_0xa93d('0x35')]);_0x469857[_0xa93d('0x36')]=qs[_0xa93d('0x2d')](_[_0xa93d('0x37')](_0x42fb3a[_0xa93d('0x2b')],_0x2d737f[_0xa93d('0x2d')]),_0x4dbc2c);if(_0x42fb3a[_0xa93d('0x2b')]['filter']){_0x469857[_0xa93d('0x36')]=_[_0xa93d('0x38')](_0x469857[_0xa93d('0x36')],{'$or':_['map'](_0x4dbc2c,function(_0x9123e7){if(_0x9123e7[_0xa93d('0x28')]!==_0xa93d('0x39')){var _0x45ea3a={};_0x45ea3a[_0x9123e7[_0xa93d('0x22')]]={'$like':'%'+_0x42fb3a[_0xa93d('0x2b')]['filter']+'%'};return _0x45ea3a;}})});}_0x469857=_['merge']({},_0x469857,_0x42fb3a[_0xa93d('0x3a')]);var _0x58e382={'where':_0x469857[_0xa93d('0x36')]};return db[_0xa93d('0x25')][_0xa93d('0x18')](_0x58e382)[_0xa93d('0x3b')](function(_0x12dd28){_0x41298a[_0xa93d('0x18')]=_0x12dd28;if(_0x42fb3a[_0xa93d('0x2b')][_0xa93d('0x3c')]){_0x469857[_0xa93d('0x3d')]=[{'all':!![]}];}return db[_0xa93d('0x25')]['findAll'](_0x469857);})[_0xa93d('0x3b')](function(_0x2558e6){_0x41298a[_0xa93d('0x3e')]=_0x2558e6;return _0x41298a;})['then'](respondWithFilteredResult(_0xc53d42,_0x469857))[_0xa93d('0x3f')](handleError(_0xc53d42,null));};exports['show']=function(_0x16a85c,_0x4971ea){var _0x38f050={'raw':![],'where':{'id':_0x16a85c[_0xa93d('0x40')]['id']}},_0x297e19={};_0x297e19['model']=_['keys'](db[_0xa93d('0x25')][_0xa93d('0x26')]);_0x297e19['query']=_[_0xa93d('0x2c')](_0x16a85c[_0xa93d('0x2b')]);_0x297e19[_0xa93d('0x2d')]=_[_0xa93d('0x2e')](_0x297e19[_0xa93d('0x2a')],_0x297e19['query']);_0x38f050[_0xa93d('0x2f')]=_[_0xa93d('0x2e')](_0x297e19[_0xa93d('0x2a')],qs[_0xa93d('0x30')](_0x16a85c['query'][_0xa93d('0x30')]));_0x38f050[_0xa93d('0x2f')]=_0x38f050[_0xa93d('0x2f')][_0xa93d('0x31')]?_0x38f050['attributes']:_0x297e19[_0xa93d('0x2a')];if(_0x16a85c[_0xa93d('0x2b')][_0xa93d('0x3c')]){_0x38f050[_0xa93d('0x3d')]=[{'all':!![]}];}_0x38f050=_['merge']({},_0x38f050,_0x16a85c[_0xa93d('0x3a')]);return db[_0xa93d('0x25')]['find'](_0x38f050)['then'](handleEntityNotFound(_0x4971ea,null))['then'](respondWithResult(_0x4971ea,null))[_0xa93d('0x3f')](handleError(_0x4971ea,null));};exports[_0xa93d('0x41')]=function(_0xb30946,_0x4e1dc7){return db['ServicenowAccount'][_0xa93d('0x41')](_0xb30946[_0xa93d('0x42')],{})['then'](respondWithResult(_0x4e1dc7,0xc9))[_0xa93d('0x3f')](handleError(_0x4e1dc7,null));};exports[_0xa93d('0x1f')]=function(_0x5e14c8,_0x35476c){if(_0x5e14c8['body']['id']){delete _0x5e14c8[_0xa93d('0x42')]['id'];}return db[_0xa93d('0x25')][_0xa93d('0x43')]({'where':{'id':_0x5e14c8[_0xa93d('0x40')]['id']}})[_0xa93d('0x3b')](handleEntityNotFound(_0x35476c,null))[_0xa93d('0x3b')](saveUpdates(_0x5e14c8[_0xa93d('0x42')],null))[_0xa93d('0x3b')](respondWithResult(_0x35476c,null))[_0xa93d('0x3f')](handleError(_0x35476c,null));};exports[_0xa93d('0x44')]=function(_0x2778f2,_0x54b410){return db[_0xa93d('0x25')][_0xa93d('0x43')]({'where':{'id':_0x2778f2[_0xa93d('0x40')]['id']}})['then'](handleEntityNotFound(_0x54b410,null))[_0xa93d('0x3b')](removeEntity(_0x54b410,null))[_0xa93d('0x3f')](handleError(_0x54b410,null));};exports['getConfigurations']=function(_0x30a3c2,_0x5ced0a,_0x30f6ca){var _0x97beed={};var _0x36eab={};var _0x1bb320;var _0x3279c2;return db[_0xa93d('0x25')][_0xa93d('0x45')]({'where':{'id':_0x30a3c2['params']['id']}})[_0xa93d('0x3b')](handleEntityNotFound(_0x5ced0a,null))[_0xa93d('0x3b')](function(_0x3c59ec){if(_0x3c59ec){_0x1bb320=_0x3c59ec;_0x36eab[_0xa93d('0x2a')]=_[_0xa93d('0x2c')](db['ServicenowConfiguration']['rawAttributes']);_0x36eab[_0xa93d('0x2b')]=_['keys'](_0x30a3c2[_0xa93d('0x2b')]);_0x36eab[_0xa93d('0x2d')]=_[_0xa93d('0x2e')](_0x36eab[_0xa93d('0x2a')],_0x36eab[_0xa93d('0x2b')]);_0x97beed[_0xa93d('0x2f')]=_[_0xa93d('0x2e')](_0x36eab['model'],qs[_0xa93d('0x30')](_0x30a3c2['query'][_0xa93d('0x30')]));_0x97beed[_0xa93d('0x2f')]=_0x97beed[_0xa93d('0x2f')][_0xa93d('0x31')]?_0x97beed[_0xa93d('0x2f')]:_0x36eab[_0xa93d('0x2a')];_0x97beed[_0xa93d('0x34')]=qs['sort'](_0x30a3c2[_0xa93d('0x2b')][_0xa93d('0x35')]);_0x97beed[_0xa93d('0x36')]=qs[_0xa93d('0x2d')](_['pick'](_0x30a3c2[_0xa93d('0x2b')],_0x36eab[_0xa93d('0x2d')]));if(_0x30a3c2[_0xa93d('0x2b')][_0xa93d('0x46')]){_0x97beed['where']=_['merge'](_0x97beed[_0xa93d('0x36')],{'$or':_[_0xa93d('0x24')](_0x97beed[_0xa93d('0x2f')],function(_0x30d0c6){var _0x2ff281={};_0x2ff281[_0x30d0c6]={'$like':'%'+_0x30a3c2['query'][_0xa93d('0x46')]+'%'};return _0x2ff281;})});}_0x97beed=_[_0xa93d('0x38')]({},_0x97beed,_0x30a3c2['options']);return _0x1bb320['getConfigurations'](_0x97beed);}})[_0xa93d('0x3b')](function(_0xdaf4ca){if(_0xdaf4ca){_0x3279c2=_0xdaf4ca[_0xa93d('0x31')];if(!_0x30a3c2[_0xa93d('0x2b')][_0xa93d('0x32')]('nolimit')){_0x97beed[_0xa93d('0x17')]=qs[_0xa93d('0x17')](_0x30a3c2[_0xa93d('0x2b')][_0xa93d('0x17')]);_0x97beed['offset']=qs[_0xa93d('0x15')](_0x30a3c2[_0xa93d('0x2b')][_0xa93d('0x15')]);}return _0x1bb320[_0xa93d('0x47')](_0x97beed);}})[_0xa93d('0x3b')](function(_0x392996){if(_0x392996){return _0x392996?{'count':_0x3279c2,'rows':_0x392996}:null;}})[_0xa93d('0x3b')](respondWithResult(_0x5ced0a,null))[_0xa93d('0x3f')](handleError(_0x5ced0a,null));};exports['addConfiguration']=function(_0x256e72,_0x13e64f,_0x4d12ab){if(_0x256e72[_0xa93d('0x42')]['id']){delete _0x256e72['body']['id'];}return db['ServicenowAccount'][_0xa93d('0x45')]({'where':{'id':_0x256e72[_0xa93d('0x40')]['id']}})[_0xa93d('0x3b')](handleEntityNotFound(_0x13e64f,null))[_0xa93d('0x3b')](function(_0x5e370c){if(_0x5e370c){_0x256e72[_0xa93d('0x42')][_0xa93d('0x48')]=_0x5e370c['id'];_0x256e72['body']['Subjects']=integrations[_0xa93d('0x49')](_0x256e72['body'][_0xa93d('0x4a')],_0x256e72[_0xa93d('0x42')][_0xa93d('0x28')]);_0x256e72[_0xa93d('0x42')][_0xa93d('0x4b')]=integrations[_0xa93d('0x4c')](_0x256e72[_0xa93d('0x42')]['channel'],_0x256e72[_0xa93d('0x42')][_0xa93d('0x28')]);return db['ServicenowConfiguration'][_0xa93d('0x41')](_0x256e72[_0xa93d('0x42')],{'include':[{'model':db[_0xa93d('0x4d')],'as':_0xa93d('0x4e')},{'model':db[_0xa93d('0x4d')],'as':_0xa93d('0x4b')}]});}return null;})[_0xa93d('0x3b')](respondWithResult(_0x13e64f,null))[_0xa93d('0x3f')](handleError(_0x13e64f,null));};exports[_0xa93d('0x4f')]=function(_0x506fce,_0x29a898,_0x4d80c0){var _0x29f382=[_0xa93d('0x50'),_0xa93d('0x51'),'knowledge',_0xa93d('0x52'),_0xa93d('0x53'),_0xa93d('0x54'),_0xa93d('0x55'),'severity','category'];var _0xb82cc=[_0xa93d('0x56'),_0xa93d('0x50'),_0xa93d('0x57'),_0xa93d('0x58'),_0xa93d('0x59'),'sys_updated_on',_0xa93d('0x5a'),_0xa93d('0x51'),'approval_history','number',_0xa93d('0x5b'),_0xa93d('0x5c'),_0xa93d('0x5d'),'user_input',_0xa93d('0x5e'),'sys_domain',_0xa93d('0x5f'),_0xa93d('0x60'),_0xa93d('0x61'),'order',_0xa93d('0x62'),'closed_at',_0xa93d('0x63'),_0xa93d('0x64'),_0xa93d('0x65'),_0xa93d('0x66'),_0xa93d('0x67'),'business_service',_0xa93d('0x68'),'sys_domain_path','rfc','time_worked',_0xa93d('0x69'),_0xa93d('0x6a'),'business_duration',_0xa93d('0x6b'),'work_end',_0xa93d('0x6c'),_0xa93d('0x6d'),_0xa93d('0x6e'),_0xa93d('0x6f'),_0xa93d('0x52'),_0xa93d('0x70'),'short_description',_0xa93d('0x53'),_0xa93d('0x71'),_0xa93d('0x72'),_0xa93d('0x73'),_0xa93d('0x74'),_0xa93d('0x75'),'additional_assignee_list','description',_0xa93d('0x76'),_0xa93d('0x54'),'sys_class_name',_0xa93d('0x77'),_0xa93d('0x78'),_0xa93d('0x79'),'parent_incident',_0xa93d('0x7a'),_0xa93d('0x7b'),'reopened_by',_0xa93d('0x55'),_0xa93d('0x7c'),_0xa93d('0x7d'),_0xa93d('0x7e'),_0xa93d('0x7f'),_0xa93d('0x80'),_0xa93d('0x81'),_0xa93d('0x82'),'comments',_0xa93d('0x83'),_0xa93d('0x84'),_0xa93d('0x85'),'due_date',_0xa93d('0x86'),'reopen_count',_0xa93d('0x87'),_0xa93d('0x88'),_0xa93d('0x89'),_0xa93d('0x8a'),'location','category'];var _0x349438='';var _0x5d8db3='';var _0x1032a4=[];var _0x678e94='';var _0x2e7abb='';var _0x23c835=[];var _0x4c7bf5='';var _0x4e223d='';var _0x3212b1={};var _0x3606a0='';return db[_0xa93d('0x25')][_0xa93d('0x45')]({'where':{'id':_0x506fce[_0xa93d('0x40')]['id']},'attributes':['id','username','password',_0xa93d('0x8b'),'remoteUri','serverUrl']})['then'](handleEntityNotFound(_0x29a898,null))[_0xa93d('0x3b')](function(_0x596a33){if(_0x596a33){_0x3606a0=_0x596a33['remoteUri'];var _0x20e5c4=_0x3606a0[_0xa93d('0x8c')](-0x1);if(_0x20e5c4==='/'){_0x3606a0=_0x3606a0[_0xa93d('0x8d')](0x0,_0x3606a0[_0xa93d('0x8e')](_0x20e5c4));}_0x4e223d=util['format'](_0xa93d('0x8f'),_0x3606a0);_0x4c7bf5=util[_0xa93d('0x90')](_0xa93d('0x91'),_0x3606a0);_0x3212b1={'user':_0x596a33[_0xa93d('0x92')],'pass':_0x596a33[_0xa93d('0x93')]};var _0x543db7={'method':'GET','uri':_0x4e223d+_0xa93d('0x94'),'auth':_0x3212b1,'json':!![]};return rp(_0x543db7);}})[_0xa93d('0x3b')](function(_0x107509){if(_0x107509[_0xa93d('0x95')][_0xa93d('0x31')]>0x0){_0x349438=_0x107509[_0xa93d('0x95')];}console[_0xa93d('0x96')](_0xa93d('0x97'),_0x349438);_0x23c835=[];_0x5d8db3=Object[_0xa93d('0x98')]([],_0x349438);_[_0xa93d('0x99')](_0x5d8db3,function(_0x271638){return!_0x29f382['includes'](_0x271638['name']);});_0x5d8db3[_0xa93d('0x9a')](function(_0x5000d0){var _0x5a1cce=createFieldObject(_0x4c7bf5,_0x3212b1,_0x5000d0[_0xa93d('0x9b')],_0x5000d0[_0xa93d('0x22')],_0x5000d0['label'],![]);_0x23c835[_0xa93d('0x9c')](_0x5a1cce);});return Promise[_0xa93d('0x9d')](_0x23c835);})[_0xa93d('0x3b')](function(_0x222244){_0x1032a4=_0x222244;_0x678e94=Object[_0xa93d('0x98')]([],_0x349438);console[_0xa93d('0x96')](_0xa93d('0x9e'),_0x349438);_['remove'](_0x678e94,function(_0x1c7ec0){return _0xb82cc[_0xa93d('0x9f')](_0x1c7ec0['name']);});console[_0xa93d('0x96')](_0xa93d('0xa0'),_0x678e94);_0x23c835=[];_0x678e94[_0xa93d('0x9a')](function(_0x38a633){var _0x12eae5=createFieldObject(_0x4c7bf5,_0x3212b1,_0x38a633[_0xa93d('0x9b')],_0x38a633['name'],_0x38a633[_0xa93d('0xa1')],!![]);_0x23c835['push'](_0x12eae5);});return Promise[_0xa93d('0x9d')](_0x23c835);})['then'](function(_0x1763f8){_0x2e7abb=_0x1763f8;var _0x131ceb=_0x1032a4[_0xa93d('0xa2')](_0x2e7abb);return{'count':_0x131ceb[_0xa93d('0x31')],'rows':_0x131ceb};})[_0xa93d('0x3b')](respondWithResult(_0x29a898,null))[_0xa93d('0x3f')](function(_0x26b6d1){console['log'](_0xa93d('0xa3')+_0x26b6d1);var _0x4a75b7=_0x506fce[_0xa93d('0x2b')][_0xa93d('0xa4')]?0x1f4:_0x26b6d1[_0xa93d('0xa5')]||0x1f4;logger[_0xa93d('0x20')](_0x26b6d1[_0xa93d('0x21')]);delete _0x26b6d1['name'];if(_0x4a75b7===0x191){_0x4a75b7=0x190;}_0x29a898[_0xa93d('0x19')](_0x4a75b7)[_0xa93d('0x23')](_0x506fce[_0xa93d('0x2b')][_0xa93d('0xa4')]?{'message':_0xa93d('0xa6'),'statusCode':_0x26b6d1[_0xa93d('0xa5')]}:_0x26b6d1);});};function createFieldObject(_0x524e09,_0x5d2f96,_0x110385,_0x32fe86,_0x2b8683,_0x2109ea){return new Promise(function(_0x4958f4,_0x4e0787){var _0x1e2f50={'id':_0x32fe86,'name':_0x2b8683,'custom':_0x2109ea};if(_0x110385===_0xa93d('0xa7')){_0x1e2f50[_0xa93d('0x3a')]=[{'name':_0xa93d('0xa8'),'value':_0xa93d('0xa9')},{'name':_0xa93d('0xaa'),'value':_0xa93d('0xab')}];_0x4958f4(_0x1e2f50);}else{var _0x5817b3={'method':_0xa93d('0xac'),'uri':_0x524e09+'sys_choice?sysparm_query=name=incident^element='+_0x32fe86,'auth':_0x5d2f96,'json':!![]};return rp(_0x5817b3)[_0xa93d('0x3b')](function(_0x41a0d9){var _0x13e568=[];if(_0x41a0d9[_0xa93d('0x95')][_0xa93d('0x31')]>0x0){_0x41a0d9[_0xa93d('0x95')][_0xa93d('0x9a')](function(_0x68b15c){if(_0x68b15c[_0xa93d('0xad')]===_0xa93d('0xab')){var _0xa18022={'name':_0x68b15c[_0xa93d('0xa1')],'value':_0x68b15c[_0xa93d('0xae')]};_0x13e568[_0xa93d('0x9c')](_0xa18022);}});}_0x1e2f50[_0xa93d('0x3a')]=_0x13e568;if(_0x1e2f50[_0xa93d('0x3a')][_0xa93d('0x31')]>0x0){_0x4958f4(_0x1e2f50);}else{if(_0x2109ea==![]){_0x4958f4();}else{_0x4958f4(_0x1e2f50);}}});}});}
\ No newline at end of file
+var _0xf2c1=['intersection','attributes','length','hasOwnProperty','order','sort','where','filter','merge','VIRTUAL','include','findAll','fields','find','create','body','catch','params','destroy','findOne','options','nolimit','getConfigurations','addConfiguration','AccountId','Subjects','getSubjects','type','Descriptions','getDescriptions','channel','ServicenowConfiguration','ServicenowField','getFields','made_sla','hold_reason','knowledge','close_code','incident_state','severity','category','parent','watch_list','upon_reject','sys_updated_on','child_incidents','approval_history','number','resolved_by','opened_by','sys_created_on','state','closed_at','delivery_plan','impact','active','work_notes_list','business_service','priority','sys_domain_path','time_worked','expected_start','opened_at','business_duration','group_list','work_end','reopened_time','resolved_at','approval_set','work_notes','short_description','correlation_display','delivery_task','work_start','assignment_group','business_stc','additional_assignee_list','description','calendar_duration','notify','sys_class_name','follow_up','contact_type','reopened_by','problem_id','company','reassignment_count','activity_due','assigned_to','comments','sla_due','comments_and_work_notes','due_date','sys_mod_count','reopen_count','sys_tags','correlation_id','location','username','email','remoteUri','serverUrl','slice','format','%s/api/now/table/','GET','incident?sysparm_display_value=all','result','incident\x20table\x20objects','assign','remove','includes','forEach','internalType','label','all','TCL:\x20_object','log','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','concat','test','statusCode','error','Wrong\x20credentials','boolean','True','true','False','false','sys_choice?sysparm_query=name=incident^element=','value','push','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','update','then','stack','name','send','index','map','ServicenowAccount','rawAttributes','fieldName','model','query','keys','filters'];(function(_0x84ff0c,_0x1f0859){var _0x108602=function(_0x27daae){while(--_0x27daae){_0x84ff0c['push'](_0x84ff0c['shift']());}};_0x108602(++_0x1f0859);}(_0xf2c1,0x84));var _0x1f2c=function(_0x4e128b,_0x3c9313){_0x4e128b=_0x4e128b-0x0;var _0x1020d7=_0xf2c1[_0x4e128b];return _0x1020d7;};'use strict';var emlformat=require(_0x1f2c('0x0'));var rimraf=require(_0x1f2c('0x1'));var zipdir=require(_0x1f2c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1f2c('0x3'));var moment=require(_0x1f2c('0x4'));var BPromise=require(_0x1f2c('0x5'));var Mustache=require(_0x1f2c('0x6'));var util=require(_0x1f2c('0x7'));var path=require('path');var sox=require(_0x1f2c('0x8'));var csv=require(_0x1f2c('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1f2c('0xa'));var _=require(_0x1f2c('0xb'));var squel=require(_0x1f2c('0xc'));var crypto=require(_0x1f2c('0xd'));var jsforce=require(_0x1f2c('0xe'));var deskjs=require(_0x1f2c('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x1f2c('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x1f2c('0x11'));var as=require(_0x1f2c('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x1f2c('0x13'))(_0x1f2c('0x14'));var utils=require(_0x1f2c('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x1f2c('0x16'));var db=require(_0x1f2c('0x17'))['db'];var integrations=require(_0x1f2c('0x18'));function respondWithStatusCode(_0x121e58,_0xd55c1c){_0xd55c1c=_0xd55c1c||0xcc;return function(_0x2de718){if(_0x2de718){return _0x121e58[_0x1f2c('0x19')](_0xd55c1c);}return _0x121e58[_0x1f2c('0x1a')](_0xd55c1c)[_0x1f2c('0x1b')]();};}function respondWithResult(_0x4c093c,_0x5757b0){_0x5757b0=_0x5757b0||0xc8;return function(_0x584057){if(_0x584057){return _0x4c093c[_0x1f2c('0x1a')](_0x5757b0)[_0x1f2c('0x1c')](_0x584057);}};}function respondWithFilteredResult(_0x5beeef,_0x1ff996){return function(_0x43da31){if(_0x43da31){var _0x545d3c=typeof _0x1ff996[_0x1f2c('0x1d')]===_0x1f2c('0x1e')&&typeof _0x1ff996[_0x1f2c('0x1f')]===_0x1f2c('0x1e');var _0x5751b9=_0x43da31[_0x1f2c('0x20')];var _0x191fa4=_0x545d3c?0x0:_0x1ff996[_0x1f2c('0x1d')];var _0x49afa5=_0x545d3c?_0x43da31[_0x1f2c('0x20')]:_0x1ff996['offset']+_0x1ff996['limit'];var _0x39ed98;if(_0x49afa5>=_0x5751b9){_0x49afa5=_0x5751b9;_0x39ed98=0xc8;}else{_0x39ed98=0xce;}_0x5beeef['status'](_0x39ed98);return _0x5beeef[_0x1f2c('0x21')]('Content-Range',_0x191fa4+'-'+_0x49afa5+'/'+_0x5751b9)[_0x1f2c('0x1c')](_0x43da31);}return null;};}function patchUpdates(_0x5c4246){return function(_0x376bf9){try{jsonpatch[_0x1f2c('0x22')](_0x376bf9,_0x5c4246,!![]);}catch(_0x1896f7){return BPromise[_0x1f2c('0x23')](_0x1896f7);}return _0x376bf9['save']();};}function saveUpdates(_0x26684f,_0x5ae781){return function(_0x331a88){if(_0x331a88){return _0x331a88[_0x1f2c('0x24')](_0x26684f)[_0x1f2c('0x25')](function(_0x1653c2){return _0x1653c2;});}return null;};}function removeEntity(_0x5932cc,_0x58a978){return function(_0x2c401f){if(_0x2c401f){return _0x2c401f['destroy']()[_0x1f2c('0x25')](function(){_0x5932cc[_0x1f2c('0x1a')](0xcc)[_0x1f2c('0x1b')]();});}};}function handleEntityNotFound(_0x4c14ee,_0x8bbc8c){return function(_0x559c44){if(!_0x559c44){_0x4c14ee[_0x1f2c('0x19')](0x194);}return _0x559c44;};}function handleError(_0x1da025,_0x4da7a0){_0x4da7a0=_0x4da7a0||0x1f4;return function(_0x58d406){logger['error'](_0x58d406[_0x1f2c('0x26')]);if(_0x58d406[_0x1f2c('0x27')]){delete _0x58d406[_0x1f2c('0x27')];}_0x1da025['status'](_0x4da7a0)[_0x1f2c('0x28')](_0x58d406);};}exports[_0x1f2c('0x29')]=function(_0x502502,_0x39ae74){var _0x4302f2={},_0x9baa22={},_0x1f54ac={'count':0x0,'rows':[]};var _0x151b05=_[_0x1f2c('0x2a')](db[_0x1f2c('0x2b')][_0x1f2c('0x2c')],function(_0x11e560){return{'name':_0x11e560[_0x1f2c('0x2d')],'type':_0x11e560['type']['key']};});_0x9baa22[_0x1f2c('0x2e')]=_[_0x1f2c('0x2a')](_0x151b05,_0x1f2c('0x27'));_0x9baa22[_0x1f2c('0x2f')]=_[_0x1f2c('0x30')](_0x502502[_0x1f2c('0x2f')]);_0x9baa22[_0x1f2c('0x31')]=_[_0x1f2c('0x32')](_0x9baa22[_0x1f2c('0x2e')],_0x9baa22[_0x1f2c('0x2f')]);_0x4302f2['attributes']=_[_0x1f2c('0x32')](_0x9baa22['model'],qs['fields'](_0x502502[_0x1f2c('0x2f')]['fields']));_0x4302f2['attributes']=_0x4302f2[_0x1f2c('0x33')][_0x1f2c('0x34')]?_0x4302f2[_0x1f2c('0x33')]:_0x9baa22[_0x1f2c('0x2e')];if(!_0x502502[_0x1f2c('0x2f')][_0x1f2c('0x35')]('nolimit')){_0x4302f2['limit']=qs[_0x1f2c('0x1f')](_0x502502[_0x1f2c('0x2f')][_0x1f2c('0x1f')]);_0x4302f2[_0x1f2c('0x1d')]=qs[_0x1f2c('0x1d')](_0x502502[_0x1f2c('0x2f')]['offset']);}_0x4302f2[_0x1f2c('0x36')]=qs['sort'](_0x502502[_0x1f2c('0x2f')][_0x1f2c('0x37')]);_0x4302f2[_0x1f2c('0x38')]=qs[_0x1f2c('0x31')](_['pick'](_0x502502[_0x1f2c('0x2f')],_0x9baa22[_0x1f2c('0x31')]),_0x151b05);if(_0x502502['query'][_0x1f2c('0x39')]){_0x4302f2[_0x1f2c('0x38')]=_[_0x1f2c('0x3a')](_0x4302f2[_0x1f2c('0x38')],{'$or':_[_0x1f2c('0x2a')](_0x151b05,function(_0x508567){if(_0x508567['type']!==_0x1f2c('0x3b')){var _0x3cab96={};_0x3cab96[_0x508567[_0x1f2c('0x27')]]={'$like':'%'+_0x502502['query'][_0x1f2c('0x39')]+'%'};return _0x3cab96;}})});}_0x4302f2=_[_0x1f2c('0x3a')]({},_0x4302f2,_0x502502['options']);var _0x330c4d={'where':_0x4302f2[_0x1f2c('0x38')]};return db['ServicenowAccount'][_0x1f2c('0x20')](_0x330c4d)['then'](function(_0x3824b9){_0x1f54ac[_0x1f2c('0x20')]=_0x3824b9;if(_0x502502[_0x1f2c('0x2f')]['includeAll']){_0x4302f2[_0x1f2c('0x3c')]=[{'all':!![]}];}return db['ServicenowAccount'][_0x1f2c('0x3d')](_0x4302f2);})[_0x1f2c('0x25')](function(_0x21345e){_0x1f54ac['rows']=_0x21345e;return _0x1f54ac;})[_0x1f2c('0x25')](respondWithFilteredResult(_0x39ae74,_0x4302f2))['catch'](handleError(_0x39ae74,null));};exports['show']=function(_0x14c617,_0x4c1416){var _0x5ea228={'raw':![],'where':{'id':_0x14c617['params']['id']}},_0x1a2bf1={};_0x1a2bf1[_0x1f2c('0x2e')]=_[_0x1f2c('0x30')](db['ServicenowAccount'][_0x1f2c('0x2c')]);_0x1a2bf1[_0x1f2c('0x2f')]=_[_0x1f2c('0x30')](_0x14c617['query']);_0x1a2bf1[_0x1f2c('0x31')]=_[_0x1f2c('0x32')](_0x1a2bf1[_0x1f2c('0x2e')],_0x1a2bf1[_0x1f2c('0x2f')]);_0x5ea228['attributes']=_['intersection'](_0x1a2bf1['model'],qs[_0x1f2c('0x3e')](_0x14c617[_0x1f2c('0x2f')][_0x1f2c('0x3e')]));_0x5ea228['attributes']=_0x5ea228[_0x1f2c('0x33')][_0x1f2c('0x34')]?_0x5ea228[_0x1f2c('0x33')]:_0x1a2bf1[_0x1f2c('0x2e')];if(_0x14c617[_0x1f2c('0x2f')]['includeAll']){_0x5ea228[_0x1f2c('0x3c')]=[{'all':!![]}];}_0x5ea228=_['merge']({},_0x5ea228,_0x14c617['options']);return db[_0x1f2c('0x2b')][_0x1f2c('0x3f')](_0x5ea228)[_0x1f2c('0x25')](handleEntityNotFound(_0x4c1416,null))[_0x1f2c('0x25')](respondWithResult(_0x4c1416,null))['catch'](handleError(_0x4c1416,null));};exports[_0x1f2c('0x40')]=function(_0xfb9df5,_0x2eec15){return db[_0x1f2c('0x2b')]['create'](_0xfb9df5[_0x1f2c('0x41')],{})['then'](respondWithResult(_0x2eec15,0xc9))[_0x1f2c('0x42')](handleError(_0x2eec15,null));};exports['update']=function(_0x15171e,_0x56335e){if(_0x15171e[_0x1f2c('0x41')]['id']){delete _0x15171e[_0x1f2c('0x41')]['id'];}return db[_0x1f2c('0x2b')]['find']({'where':{'id':_0x15171e[_0x1f2c('0x43')]['id']}})[_0x1f2c('0x25')](handleEntityNotFound(_0x56335e,null))[_0x1f2c('0x25')](saveUpdates(_0x15171e[_0x1f2c('0x41')],null))[_0x1f2c('0x25')](respondWithResult(_0x56335e,null))[_0x1f2c('0x42')](handleError(_0x56335e,null));};exports[_0x1f2c('0x44')]=function(_0xfe27b2,_0x5cb439){return db['ServicenowAccount'][_0x1f2c('0x3f')]({'where':{'id':_0xfe27b2['params']['id']}})[_0x1f2c('0x25')](handleEntityNotFound(_0x5cb439,null))[_0x1f2c('0x25')](removeEntity(_0x5cb439,null))[_0x1f2c('0x42')](handleError(_0x5cb439,null));};exports['getConfigurations']=function(_0x932721,_0x2a1db5,_0x964c0f){var _0x2f2f87={};var _0x2e48cb={};var _0x2a96d7;var _0x545df1;return db[_0x1f2c('0x2b')][_0x1f2c('0x45')]({'where':{'id':_0x932721[_0x1f2c('0x43')]['id']}})[_0x1f2c('0x25')](handleEntityNotFound(_0x2a1db5,null))[_0x1f2c('0x25')](function(_0x16e49c){if(_0x16e49c){_0x2a96d7=_0x16e49c;_0x2e48cb[_0x1f2c('0x2e')]=_['keys'](db['ServicenowConfiguration'][_0x1f2c('0x2c')]);_0x2e48cb[_0x1f2c('0x2f')]=_[_0x1f2c('0x30')](_0x932721['query']);_0x2e48cb['filters']=_['intersection'](_0x2e48cb[_0x1f2c('0x2e')],_0x2e48cb[_0x1f2c('0x2f')]);_0x2f2f87[_0x1f2c('0x33')]=_[_0x1f2c('0x32')](_0x2e48cb['model'],qs[_0x1f2c('0x3e')](_0x932721['query'][_0x1f2c('0x3e')]));_0x2f2f87[_0x1f2c('0x33')]=_0x2f2f87[_0x1f2c('0x33')][_0x1f2c('0x34')]?_0x2f2f87[_0x1f2c('0x33')]:_0x2e48cb[_0x1f2c('0x2e')];_0x2f2f87[_0x1f2c('0x36')]=qs['sort'](_0x932721['query'][_0x1f2c('0x37')]);_0x2f2f87[_0x1f2c('0x38')]=qs[_0x1f2c('0x31')](_['pick'](_0x932721[_0x1f2c('0x2f')],_0x2e48cb[_0x1f2c('0x31')]));if(_0x932721[_0x1f2c('0x2f')][_0x1f2c('0x39')]){_0x2f2f87[_0x1f2c('0x38')]=_[_0x1f2c('0x3a')](_0x2f2f87['where'],{'$or':_[_0x1f2c('0x2a')](_0x2f2f87[_0x1f2c('0x33')],function(_0x11f9a2){var _0x5cee9e={};_0x5cee9e[_0x11f9a2]={'$like':'%'+_0x932721[_0x1f2c('0x2f')][_0x1f2c('0x39')]+'%'};return _0x5cee9e;})});}_0x2f2f87=_[_0x1f2c('0x3a')]({},_0x2f2f87,_0x932721[_0x1f2c('0x46')]);return _0x2a96d7['getConfigurations'](_0x2f2f87);}})[_0x1f2c('0x25')](function(_0x2d7ea0){if(_0x2d7ea0){_0x545df1=_0x2d7ea0[_0x1f2c('0x34')];if(!_0x932721[_0x1f2c('0x2f')][_0x1f2c('0x35')](_0x1f2c('0x47'))){_0x2f2f87[_0x1f2c('0x1f')]=qs[_0x1f2c('0x1f')](_0x932721[_0x1f2c('0x2f')][_0x1f2c('0x1f')]);_0x2f2f87[_0x1f2c('0x1d')]=qs[_0x1f2c('0x1d')](_0x932721[_0x1f2c('0x2f')][_0x1f2c('0x1d')]);}return _0x2a96d7[_0x1f2c('0x48')](_0x2f2f87);}})['then'](function(_0x255197){if(_0x255197){return _0x255197?{'count':_0x545df1,'rows':_0x255197}:null;}})[_0x1f2c('0x25')](respondWithResult(_0x2a1db5,null))[_0x1f2c('0x42')](handleError(_0x2a1db5,null));};exports[_0x1f2c('0x49')]=function(_0x581c77,_0x10fdcd,_0x5632d6){if(_0x581c77[_0x1f2c('0x41')]['id']){delete _0x581c77[_0x1f2c('0x41')]['id'];}return db['ServicenowAccount']['findOne']({'where':{'id':_0x581c77[_0x1f2c('0x43')]['id']}})[_0x1f2c('0x25')](handleEntityNotFound(_0x10fdcd,null))[_0x1f2c('0x25')](function(_0x1d4d2b){if(_0x1d4d2b){_0x581c77['body'][_0x1f2c('0x4a')]=_0x1d4d2b['id'];_0x581c77['body'][_0x1f2c('0x4b')]=integrations[_0x1f2c('0x4c')](_0x581c77[_0x1f2c('0x41')]['channel'],_0x581c77[_0x1f2c('0x41')][_0x1f2c('0x4d')]);_0x581c77[_0x1f2c('0x41')][_0x1f2c('0x4e')]=integrations[_0x1f2c('0x4f')](_0x581c77[_0x1f2c('0x41')][_0x1f2c('0x50')],_0x581c77[_0x1f2c('0x41')][_0x1f2c('0x4d')]);return db[_0x1f2c('0x51')][_0x1f2c('0x40')](_0x581c77[_0x1f2c('0x41')],{'include':[{'model':db['ServicenowField'],'as':_0x1f2c('0x4b')},{'model':db[_0x1f2c('0x52')],'as':_0x1f2c('0x4e')}]});}return null;})[_0x1f2c('0x25')](respondWithResult(_0x10fdcd,null))[_0x1f2c('0x42')](handleError(_0x10fdcd,null));};exports[_0x1f2c('0x53')]=function(_0x43b54f,_0x318180,_0x39da8f){var _0x277f30=[_0x1f2c('0x54'),_0x1f2c('0x55'),_0x1f2c('0x56'),'subcategory',_0x1f2c('0x57'),'notify',_0x1f2c('0x58'),_0x1f2c('0x59'),_0x1f2c('0x5a')];var _0x55991b=[_0x1f2c('0x5b'),_0x1f2c('0x54'),'caused_by',_0x1f2c('0x5c'),_0x1f2c('0x5d'),_0x1f2c('0x5e'),_0x1f2c('0x5f'),_0x1f2c('0x55'),_0x1f2c('0x60'),_0x1f2c('0x61'),_0x1f2c('0x62'),'sys_updated_by',_0x1f2c('0x63'),'user_input',_0x1f2c('0x64'),'sys_domain',_0x1f2c('0x65'),'sys_created_by',_0x1f2c('0x56'),'order','calendar_stc',_0x1f2c('0x66'),'cmdb_ci',_0x1f2c('0x67'),_0x1f2c('0x68'),_0x1f2c('0x69'),_0x1f2c('0x6a'),_0x1f2c('0x6b'),_0x1f2c('0x6c'),_0x1f2c('0x6d'),'rfc',_0x1f2c('0x6e'),_0x1f2c('0x6f'),_0x1f2c('0x70'),_0x1f2c('0x71'),_0x1f2c('0x72'),_0x1f2c('0x73'),_0x1f2c('0x74'),_0x1f2c('0x75'),'caller_id',_0x1f2c('0x76'),'subcategory',_0x1f2c('0x77'),_0x1f2c('0x78'),_0x1f2c('0x57'),_0x1f2c('0x79'),_0x1f2c('0x7a'),_0x1f2c('0x7b'),_0x1f2c('0x7c'),_0x1f2c('0x7d'),_0x1f2c('0x7e'),_0x1f2c('0x7f'),_0x1f2c('0x80'),_0x1f2c('0x81'),_0x1f2c('0x82'),'close_notes','closed_by',_0x1f2c('0x83'),'parent_incident','sys_id',_0x1f2c('0x84'),_0x1f2c('0x85'),'incident_state','urgency',_0x1f2c('0x86'),_0x1f2c('0x87'),_0x1f2c('0x88'),_0x1f2c('0x89'),_0x1f2c('0x8a'),_0x1f2c('0x59'),_0x1f2c('0x8b'),_0x1f2c('0x8c'),'approval',_0x1f2c('0x8d'),_0x1f2c('0x8e'),_0x1f2c('0x8f'),_0x1f2c('0x90'),_0x1f2c('0x91'),'escalation','upon_approval',_0x1f2c('0x92'),_0x1f2c('0x93'),_0x1f2c('0x5a')];var _0x4744a8='';var _0x1bffc2='';var _0x566dc4=[];var _0x419746='';var _0x5f4b41='';var _0x4183cc=[];var _0x307e34='';var _0x5ccc7b='';var _0x7a6286={};var _0x277c18='';return db[_0x1f2c('0x2b')]['findOne']({'where':{'id':_0x43b54f['params']['id']},'attributes':['id',_0x1f2c('0x94'),'password',_0x1f2c('0x95'),_0x1f2c('0x96'),_0x1f2c('0x97')]})[_0x1f2c('0x25')](handleEntityNotFound(_0x318180,null))['then'](function(_0x1787b4){if(_0x1787b4){_0x277c18=_0x1787b4[_0x1f2c('0x96')];var _0x59f261=_0x277c18[_0x1f2c('0x98')](-0x1);if(_0x59f261==='/'){_0x277c18=_0x277c18['substring'](0x0,_0x277c18['lastIndexOf'](_0x59f261));}_0x5ccc7b=util[_0x1f2c('0x99')]('%s/api/now/doc/table/schema/',_0x277c18);_0x307e34=util['format'](_0x1f2c('0x9a'),_0x277c18);_0x7a6286={'user':_0x1787b4[_0x1f2c('0x94')],'pass':_0x1787b4['password']};var _0x4100c7={'method':_0x1f2c('0x9b'),'uri':_0x5ccc7b+_0x1f2c('0x9c'),'auth':_0x7a6286,'json':!![]};return rp(_0x4100c7);}})[_0x1f2c('0x25')](function(_0x56fa15){if(_0x56fa15[_0x1f2c('0x9d')][_0x1f2c('0x34')]>0x0){_0x4744a8=_0x56fa15[_0x1f2c('0x9d')];}console['log'](_0x1f2c('0x9e'),_0x4744a8);_0x4183cc=[];_0x1bffc2=Object[_0x1f2c('0x9f')]([],_0x4744a8);_[_0x1f2c('0xa0')](_0x1bffc2,function(_0x497860){return!_0x277f30[_0x1f2c('0xa1')](_0x497860[_0x1f2c('0x27')]);});_0x1bffc2[_0x1f2c('0xa2')](function(_0x246086){var _0xf525de=createFieldObject(_0x307e34,_0x7a6286,_0x246086[_0x1f2c('0xa3')],_0x246086[_0x1f2c('0x27')],_0x246086[_0x1f2c('0xa4')],![]);_0x4183cc['push'](_0xf525de);});return Promise[_0x1f2c('0xa5')](_0x4183cc);})[_0x1f2c('0x25')](function(_0x93b89b){_0x566dc4=_0x93b89b;_0x419746=Object['assign']([],_0x4744a8);console['log'](_0x1f2c('0xa6'),_0x4744a8);_[_0x1f2c('0xa0')](_0x419746,function(_0x266b2f){return _0x55991b[_0x1f2c('0xa1')](_0x266b2f[_0x1f2c('0x27')]);});console[_0x1f2c('0xa7')](_0x1f2c('0xa8'),_0x419746);_0x4183cc=[];_0x419746['forEach'](function(_0x54460c){var _0x2d1d5a=createFieldObject(_0x307e34,_0x7a6286,_0x54460c[_0x1f2c('0xa3')],_0x54460c[_0x1f2c('0x27')],_0x54460c[_0x1f2c('0xa4')],!![]);_0x4183cc['push'](_0x2d1d5a);});return Promise[_0x1f2c('0xa5')](_0x4183cc);})['then'](function(_0x516174){_0x5f4b41=_0x516174;var _0x57f83b=_0x566dc4[_0x1f2c('0xa9')](_0x5f4b41);return{'count':_0x57f83b['length'],'rows':_0x57f83b};})[_0x1f2c('0x25')](respondWithResult(_0x318180,null))[_0x1f2c('0x42')](function(_0x1acb7d){console[_0x1f2c('0xa7')]('ServiceNow\x20error:\x20'+_0x1acb7d);var _0x4e8ff5=_0x43b54f['query'][_0x1f2c('0xaa')]?0x1f4:_0x1acb7d[_0x1f2c('0xab')]||0x1f4;logger[_0x1f2c('0xac')](_0x1acb7d[_0x1f2c('0x26')]);delete _0x1acb7d['name'];if(_0x4e8ff5===0x191){_0x4e8ff5=0x190;}_0x318180[_0x1f2c('0x1a')](_0x4e8ff5)[_0x1f2c('0x28')](_0x43b54f['query'][_0x1f2c('0xaa')]?{'message':_0x1f2c('0xad'),'statusCode':_0x1acb7d[_0x1f2c('0xab')]}:_0x1acb7d);});};function createFieldObject(_0x50b63a,_0x2cf52f,_0x59c194,_0x370f57,_0x1d37f7,_0x635153){return new Promise(function(_0x1a978b,_0x346c96){var _0x2671ca={'id':_0x370f57,'name':_0x1d37f7,'custom':_0x635153};if(_0x59c194===_0x1f2c('0xae')){_0x2671ca[_0x1f2c('0x46')]=[{'name':_0x1f2c('0xaf'),'value':_0x1f2c('0xb0')},{'name':_0x1f2c('0xb1'),'value':_0x1f2c('0xb2')}];_0x1a978b(_0x2671ca);}else{var _0x1b7327={'method':'GET','uri':_0x50b63a+_0x1f2c('0xb3')+_0x370f57,'auth':_0x2cf52f,'json':!![]};return rp(_0x1b7327)[_0x1f2c('0x25')](function(_0x123190){var _0x52c69a=[];if(_0x123190['result'][_0x1f2c('0x34')]>0x0){_0x123190[_0x1f2c('0x9d')][_0x1f2c('0xa2')](function(_0x1dad2b){if(_0x1dad2b['inactive']===_0x1f2c('0xb2')){var _0x262168={'name':_0x1dad2b[_0x1f2c('0xa4')],'value':_0x1dad2b[_0x1f2c('0xb4')]};_0x52c69a[_0x1f2c('0xb5')](_0x262168);}});}_0x2671ca['options']=_0x52c69a;if(_0x2671ca[_0x1f2c('0x46')][_0x1f2c('0x34')]>0x0){_0x1a978b(_0x2671ca);}else{if(_0x635153==![]){_0x1a978b();}else{_0x1a978b(_0x2671ca);}}});}});}
\ No newline at end of file
index 4944fa1..96a090e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d17=['lodash','util','moment','bluebird','request-promise','rimraf','../../config/environment','./intServicenowAccount.attributes','../../components/integrations/configuration','define','ServicenowAccount','int_servicenow_accounts'];(function(_0x1c167e,_0x29107c){var _0x764fa3=function(_0x3345ff){while(--_0x3345ff){_0x1c167e['push'](_0x1c167e['shift']());}};_0x764fa3(++_0x29107c);}(_0x5d17,0x114));var _0x75d1=function(_0x13eec2,_0xe78b42){_0x13eec2=_0x13eec2-0x0;var _0x46c367=_0x5d17[_0x13eec2];return _0x46c367;};'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'));var integrations=require(_0x75d1('0x8'));module['exports']=function(_0x458681,_0x116a51){return _0x458681[_0x75d1('0x9')](_0x75d1('0xa'),attributes,{'tableName':_0x75d1('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb4c7=['moment','request-promise','path','rimraf','../../config/environment','./intServicenowAccount.attributes','exports','ServicenowAccount','int_servicenow_accounts','lodash','util','../../config/logger','api'];(function(_0x3bcc56,_0x14138d){var _0x5e687c=function(_0x58d90d){while(--_0x58d90d){_0x3bcc56['push'](_0x3bcc56['shift']());}};_0x5e687c(++_0x14138d);}(_0xb4c7,0x1ea));var _0x7b4c=function(_0x2a31e2,_0x34b6e0){_0x2a31e2=_0x2a31e2-0x0;var _0x1ea6a3=_0xb4c7[_0x2a31e2];return _0x1ea6a3;};'use strict';var _=require(_0x7b4c('0x0'));var util=require(_0x7b4c('0x1'));var logger=require(_0x7b4c('0x2'))(_0x7b4c('0x3'));var moment=require(_0x7b4c('0x4'));var BPromise=require('bluebird');var rp=require(_0x7b4c('0x5'));var fs=require('fs');var path=require(_0x7b4c('0x6'));var rimraf=require(_0x7b4c('0x7'));var config=require(_0x7b4c('0x8'));var attributes=require(_0x7b4c('0x9'));var integrations=require('../../components/integrations/configuration');module[_0x7b4c('0xa')]=function(_0x10e197,_0x2dd5c7){return _0x10e197['define'](_0x7b4c('0xb'),attributes,{'tableName':_0x7b4c('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e9966ff..6028fe4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad5d=['options','raw','where','attributes','limit','model','include','map','then','ShowServicenowAccount','find','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','request\x20sent','debug','ServicenowAccount,\x20%s,\x20%s,\x20%s','stringify','error','ServicenowAccount,\x20%s,\x20%s','message','result','catch','GetServicenowAccount','ServicenowAccount','findAll'];(function(_0x357f44,_0x4c0d19){var _0x5d4680=function(_0x2dfc2f){while(--_0x2dfc2f){_0x357f44['push'](_0x357f44['shift']());}};_0x5d4680(++_0x4c0d19);}(_0xad5d,0x187));var _0xdad5=function(_0x185d4c,_0x207603){_0x185d4c=_0x185d4c-0x0;var _0x293f37=_0xad5d[_0x185d4c];return _0x293f37;};'use strict';var _=require(_0xdad5('0x0'));var util=require(_0xdad5('0x1'));var moment=require(_0xdad5('0x2'));var BPromise=require(_0xdad5('0x3'));var rs=require(_0xdad5('0x4'));var fs=require('fs');var Redis=require(_0xdad5('0x5'));var db=require(_0xdad5('0x6'))['db'];var utils=require(_0xdad5('0x7'));var logger=require(_0xdad5('0x8'))(_0xdad5('0x9'));var config=require(_0xdad5('0xa'));var jayson=require(_0xdad5('0xb'));var client=jayson['client'][_0xdad5('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x34438b,_0x15bd65,_0x58688d){return new BPromise(function(_0x49e309,_0x17f289){return client[_0xdad5('0xd')](_0x34438b,_0x58688d)['then'](function(_0x366d88){logger[_0xdad5('0xe')]('ServicenowAccount,\x20%s,\x20%s',_0x15bd65,_0xdad5('0xf'));logger[_0xdad5('0x10')](_0xdad5('0x11'),_0x15bd65,_0xdad5('0xf'),JSON[_0xdad5('0x12')](_0x366d88));if(_0x366d88[_0xdad5('0x13')]){if(_0x366d88['error']['code']===0x1f4){logger['error'](_0xdad5('0x14'),_0x15bd65,_0x366d88[_0xdad5('0x13')][_0xdad5('0x15')]);return _0x17f289(_0x366d88[_0xdad5('0x13')][_0xdad5('0x15')]);}logger[_0xdad5('0x13')]('ServicenowAccount,\x20%s,\x20%s',_0x15bd65,_0x366d88['error'][_0xdad5('0x15')]);return _0x49e309(_0x366d88[_0xdad5('0x13')]['message']);}else{logger['info'](_0xdad5('0x14'),_0x15bd65,'request\x20sent');_0x49e309(_0x366d88[_0xdad5('0x16')][_0xdad5('0x15')]);}})[_0xdad5('0x17')](function(_0x32fbbe){logger[_0xdad5('0x13')](_0xdad5('0x14'),_0x15bd65,_0x32fbbe);_0x17f289(_0x32fbbe);});});}exports[_0xdad5('0x18')]=function(_0x1b862d){var _0x313baa=this;return new Promise(function(_0x2c8d21,_0x45dbaa){return db[_0xdad5('0x19')][_0xdad5('0x1a')]({'raw':_0x1b862d[_0xdad5('0x1b')]?_0x1b862d[_0xdad5('0x1b')][_0xdad5('0x1c')]===undefined?!![]:![]:!![],'where':_0x1b862d[_0xdad5('0x1b')]?_0x1b862d[_0xdad5('0x1b')][_0xdad5('0x1d')]||null:null,'attributes':_0x1b862d[_0xdad5('0x1b')]?_0x1b862d[_0xdad5('0x1b')][_0xdad5('0x1e')]||null:null,'limit':_0x1b862d[_0xdad5('0x1b')]?_0x1b862d['options'][_0xdad5('0x1f')]||null:null,'include':_0x1b862d['options']?_0x1b862d[_0xdad5('0x1b')]['include']?_['map'](_0x1b862d['options']['include'],function(_0x756a6a){return{'model':db[_0x756a6a[_0xdad5('0x20')]],'as':_0x756a6a['as'],'attributes':_0x756a6a['attributes'],'include':_0x756a6a[_0xdad5('0x21')]?_[_0xdad5('0x22')](_0x756a6a[_0xdad5('0x21')],function(_0x5afd8c){return{'model':db[_0x5afd8c['model']],'as':_0x5afd8c['as'],'attributes':_0x5afd8c[_0xdad5('0x1e')],'include':_0x5afd8c[_0xdad5('0x21')]?_[_0xdad5('0x22')](_0x5afd8c['include'],function(_0x5ee59c){return{'model':db[_0x5ee59c[_0xdad5('0x20')]],'as':_0x5ee59c['as'],'attributes':_0x5ee59c[_0xdad5('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xdad5('0x23')](function(_0x2252ea){logger[_0xdad5('0xe')](_0xdad5('0x18'),_0x1b862d);logger[_0xdad5('0x10')](_0xdad5('0x18'),_0x1b862d,JSON[_0xdad5('0x12')](_0x2252ea));_0x2c8d21(_0x2252ea);})[_0xdad5('0x17')](function(_0x23ce73){logger[_0xdad5('0x13')](_0xdad5('0x18'),_0x23ce73[_0xdad5('0x15')],_0x1b862d);_0x45dbaa(_0x313baa[_0xdad5('0x13')](0x1f4,_0x23ce73['message']));});});};exports[_0xdad5('0x24')]=function(_0x5af715){var _0x314389=this;return new Promise(function(_0x17fab7,_0x4f2465){return db[_0xdad5('0x19')][_0xdad5('0x25')]({'raw':_0x5af715[_0xdad5('0x1b')]?_0x5af715[_0xdad5('0x1b')][_0xdad5('0x1c')]===undefined?!![]:![]:!![],'where':_0x5af715[_0xdad5('0x1b')]?_0x5af715['options']['where']||null:null,'attributes':_0x5af715[_0xdad5('0x1b')]?_0x5af715[_0xdad5('0x1b')]['attributes']||null:null,'include':_0x5af715[_0xdad5('0x1b')]?_0x5af715['options']['include']?_[_0xdad5('0x22')](_0x5af715['options'][_0xdad5('0x21')],function(_0x29cd5a){return{'model':db[_0x29cd5a[_0xdad5('0x20')]],'as':_0x29cd5a['as'],'attributes':_0x29cd5a['attributes'],'include':_0x29cd5a[_0xdad5('0x21')]?_[_0xdad5('0x22')](_0x29cd5a['include'],function(_0x3daeb0){return{'model':db[_0x3daeb0[_0xdad5('0x20')]],'as':_0x3daeb0['as'],'attributes':_0x3daeb0[_0xdad5('0x1e')],'include':_0x3daeb0[_0xdad5('0x21')]?_[_0xdad5('0x22')](_0x3daeb0[_0xdad5('0x21')],function(_0x351ab3){return{'model':db[_0x351ab3[_0xdad5('0x20')]],'as':_0x351ab3['as'],'attributes':_0x351ab3[_0xdad5('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xdad5('0x23')](function(_0xb7d59a){logger[_0xdad5('0xe')](_0xdad5('0x24'),_0x5af715);logger['debug'](_0xdad5('0x24'),_0x5af715,JSON['stringify'](_0xb7d59a));_0x17fab7(_0xb7d59a);})[_0xdad5('0x17')](function(_0x28bdbd){logger['error']('ShowServicenowAccount',_0x28bdbd[_0xdad5('0x15')],_0x5af715);_0x4f2465(_0x314389['error'](0x1f4,_0x28bdbd[_0xdad5('0x15')]));});});};
\ No newline at end of file
+var _0x43b1=['../../config/environment','jayson/promise','client','http','request','then','info','ServicenowAccount,\x20%s,\x20%s','debug','ServicenowAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','ServicenowAccount','findAll','options','raw','where','limit','map','model','include','attributes','GetServicenowAccount','catch','find','ShowServicenowAccount','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc'];(function(_0x582274,_0x2cbd9c){var _0x8f14d3=function(_0x1cfe08){while(--_0x1cfe08){_0x582274['push'](_0x582274['shift']());}};_0x8f14d3(++_0x2cbd9c);}(_0x43b1,0x1f0));var _0x143b=function(_0x263a5f,_0x4c3231){_0x263a5f=_0x263a5f-0x0;var _0x282047=_0x43b1[_0x263a5f];return _0x282047;};'use strict';var _=require(_0x143b('0x0'));var util=require(_0x143b('0x1'));var moment=require(_0x143b('0x2'));var BPromise=require(_0x143b('0x3'));var rs=require(_0x143b('0x4'));var fs=require('fs');var Redis=require(_0x143b('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x143b('0x6'))(_0x143b('0x7'));var config=require(_0x143b('0x8'));var jayson=require(_0x143b('0x9'));var client=jayson[_0x143b('0xa')][_0x143b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x42fff6,_0x47c1e4,_0x4119c0){return new BPromise(function(_0xd20f78,_0x1c16f6){return client[_0x143b('0xc')](_0x42fff6,_0x4119c0)[_0x143b('0xd')](function(_0x5ed52f){logger[_0x143b('0xe')](_0x143b('0xf'),_0x47c1e4,'request\x20sent');logger[_0x143b('0x10')](_0x143b('0x11'),_0x47c1e4,'request\x20sent',JSON[_0x143b('0x12')](_0x5ed52f));if(_0x5ed52f[_0x143b('0x13')]){if(_0x5ed52f['error']['code']===0x1f4){logger[_0x143b('0x13')]('ServicenowAccount,\x20%s,\x20%s',_0x47c1e4,_0x5ed52f[_0x143b('0x13')][_0x143b('0x14')]);return _0x1c16f6(_0x5ed52f[_0x143b('0x13')][_0x143b('0x14')]);}logger['error'](_0x143b('0xf'),_0x47c1e4,_0x5ed52f[_0x143b('0x13')][_0x143b('0x14')]);return _0xd20f78(_0x5ed52f[_0x143b('0x13')][_0x143b('0x14')]);}else{logger[_0x143b('0xe')](_0x143b('0xf'),_0x47c1e4,'request\x20sent');_0xd20f78(_0x5ed52f[_0x143b('0x15')][_0x143b('0x14')]);}})['catch'](function(_0x13eb02){logger[_0x143b('0x13')](_0x143b('0xf'),_0x47c1e4,_0x13eb02);_0x1c16f6(_0x13eb02);});});}exports['GetServicenowAccount']=function(_0xf764ec){var _0x5a709d=this;return new Promise(function(_0x49e210,_0x45df8d){return db[_0x143b('0x16')][_0x143b('0x17')]({'raw':_0xf764ec['options']?_0xf764ec[_0x143b('0x18')][_0x143b('0x19')]===undefined?!![]:![]:!![],'where':_0xf764ec[_0x143b('0x18')]?_0xf764ec[_0x143b('0x18')][_0x143b('0x1a')]||null:null,'attributes':_0xf764ec[_0x143b('0x18')]?_0xf764ec[_0x143b('0x18')]['attributes']||null:null,'limit':_0xf764ec[_0x143b('0x18')]?_0xf764ec[_0x143b('0x18')][_0x143b('0x1b')]||null:null,'include':_0xf764ec[_0x143b('0x18')]?_0xf764ec[_0x143b('0x18')]['include']?_[_0x143b('0x1c')](_0xf764ec['options']['include'],function(_0x1f5957){return{'model':db[_0x1f5957[_0x143b('0x1d')]],'as':_0x1f5957['as'],'attributes':_0x1f5957['attributes'],'include':_0x1f5957['include']?_['map'](_0x1f5957[_0x143b('0x1e')],function(_0x1f3520){return{'model':db[_0x1f3520['model']],'as':_0x1f3520['as'],'attributes':_0x1f3520[_0x143b('0x1f')],'include':_0x1f3520[_0x143b('0x1e')]?_['map'](_0x1f3520[_0x143b('0x1e')],function(_0x39b545){return{'model':db[_0x39b545['model']],'as':_0x39b545['as'],'attributes':_0x39b545[_0x143b('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x143b('0xd')](function(_0x31ee20){logger[_0x143b('0xe')]('GetServicenowAccount',_0xf764ec);logger['debug'](_0x143b('0x20'),_0xf764ec,JSON[_0x143b('0x12')](_0x31ee20));_0x49e210(_0x31ee20);})[_0x143b('0x21')](function(_0x5526ce){logger[_0x143b('0x13')](_0x143b('0x20'),_0x5526ce[_0x143b('0x14')],_0xf764ec);_0x45df8d(_0x5a709d['error'](0x1f4,_0x5526ce[_0x143b('0x14')]));});});};exports['ShowServicenowAccount']=function(_0x2a804c){var _0x1e1b85=this;return new Promise(function(_0x629764,_0x469463){return db['ServicenowAccount'][_0x143b('0x22')]({'raw':_0x2a804c[_0x143b('0x18')]?_0x2a804c[_0x143b('0x18')][_0x143b('0x19')]===undefined?!![]:![]:!![],'where':_0x2a804c[_0x143b('0x18')]?_0x2a804c[_0x143b('0x18')]['where']||null:null,'attributes':_0x2a804c[_0x143b('0x18')]?_0x2a804c[_0x143b('0x18')][_0x143b('0x1f')]||null:null,'include':_0x2a804c[_0x143b('0x18')]?_0x2a804c['options'][_0x143b('0x1e')]?_[_0x143b('0x1c')](_0x2a804c[_0x143b('0x18')]['include'],function(_0x342be1){return{'model':db[_0x342be1[_0x143b('0x1d')]],'as':_0x342be1['as'],'attributes':_0x342be1[_0x143b('0x1f')],'include':_0x342be1[_0x143b('0x1e')]?_[_0x143b('0x1c')](_0x342be1['include'],function(_0x5a8a48){return{'model':db[_0x5a8a48[_0x143b('0x1d')]],'as':_0x5a8a48['as'],'attributes':_0x5a8a48[_0x143b('0x1f')],'include':_0x5a8a48[_0x143b('0x1e')]?_['map'](_0x5a8a48[_0x143b('0x1e')],function(_0x568cfb){return{'model':db[_0x568cfb[_0x143b('0x1d')]],'as':_0x568cfb['as'],'attributes':_0x568cfb['attributes']};}):[]};}):[]};}):[]:[]})[_0x143b('0xd')](function(_0x1a30e8){logger[_0x143b('0xe')]('ShowServicenowAccount',_0x2a804c);logger[_0x143b('0x10')](_0x143b('0x23'),_0x2a804c,JSON['stringify'](_0x1a30e8));_0x629764(_0x1a30e8);})[_0x143b('0x21')](function(_0x58a722){logger[_0x143b('0x13')](_0x143b('0x23'),_0x58a722['message'],_0x2a804c);_0x469463(_0x1e1b85['error'](0x1f4,_0x58a722[_0x143b('0x14')]));});});};
\ No newline at end of file
index 540ca45..30caf86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d4b=['getDescriptions','post','create','update','delete','exports','util','path','Router','../../components/auth/service','../../config/environment','./intServicenowConfiguration.controller','get','isAuthenticated','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions'];(function(_0x4a21eb,_0x4d9a78){var _0x1183b9=function(_0x3e838d){while(--_0x3e838d){_0x4a21eb['push'](_0x4a21eb['shift']());}};_0x1183b9(++_0x4d9a78);}(_0x7d4b,0xc3));var _0xb7d4=function(_0x46498c,_0x380393){_0x46498c=_0x46498c-0x0;var _0x23692a=_0x7d4b[_0x46498c];return _0x23692a;};'use strict';var multer=require('multer');var util=require(_0xb7d4('0x0'));var path=require(_0xb7d4('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xb7d4('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xb7d4('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0xb7d4('0x4'));var controller=require(_0xb7d4('0x5'));router[_0xb7d4('0x6')]('/',auth[_0xb7d4('0x7')](),controller['index']);router['get'](_0xb7d4('0x8'),auth['isAuthenticated'](),controller[_0xb7d4('0x9')]);router[_0xb7d4('0x6')](_0xb7d4('0xa'),auth[_0xb7d4('0x7')](),controller[_0xb7d4('0xb')]);router[_0xb7d4('0x6')](_0xb7d4('0xc'),auth['isAuthenticated'](),controller[_0xb7d4('0xd')]);router[_0xb7d4('0x6')](_0xb7d4('0xe'),auth['isAuthenticated'](),controller[_0xb7d4('0xf')]);router[_0xb7d4('0x10')]('/',auth[_0xb7d4('0x7')](),controller[_0xb7d4('0x11')]);router['put'](_0xb7d4('0x8'),auth[_0xb7d4('0x7')](),controller[_0xb7d4('0x12')]);router[_0xb7d4('0x13')](_0xb7d4('0x8'),auth[_0xb7d4('0x7')](),controller['destroy']);module[_0xb7d4('0x14')]=router;
\ No newline at end of file
+var _0x0da3=['put','/:id','update','delete','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','index','get','getFields','/:id/subjects','getSubjects','getDescriptions','post'];(function(_0x2b8547,_0x4c7b2a){var _0x2f5249=function(_0x5a022c){while(--_0x5a022c){_0x2b8547['push'](_0x2b8547['shift']());}};_0x2f5249(++_0x4c7b2a);}(_0x0da3,0x1d1));var _0x30da=function(_0x304316,_0x91fa59){_0x304316=_0x304316-0x0;var _0x1cd72e=_0x0da3[_0x304316];return _0x1cd72e;};'use strict';var multer=require(_0x30da('0x0'));var util=require(_0x30da('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x30da('0x2'));var router=express[_0x30da('0x3')]();var fs_extra=require(_0x30da('0x4'));var auth=require(_0x30da('0x5'));var interaction=require(_0x30da('0x6'));var config=require('../../config/environment');var controller=require('./intServicenowConfiguration.controller');router['get']('/',auth[_0x30da('0x7')](),controller[_0x30da('0x8')]);router[_0x30da('0x9')]('/:id',auth[_0x30da('0x7')](),controller['show']);router[_0x30da('0x9')]('/:id/fields',auth[_0x30da('0x7')](),controller[_0x30da('0xa')]);router[_0x30da('0x9')](_0x30da('0xb'),auth[_0x30da('0x7')](),controller[_0x30da('0xc')]);router[_0x30da('0x9')]('/:id/descriptions',auth[_0x30da('0x7')](),controller[_0x30da('0xd')]);router[_0x30da('0xe')]('/',auth[_0x30da('0x7')](),controller['create']);router[_0x30da('0xf')](_0x30da('0x10'),auth[_0x30da('0x7')](),controller[_0x30da('0x11')]);router[_0x30da('0x12')](_0x30da('0x10'),auth[_0x30da('0x7')](),controller['destroy']);module[_0x30da('0x13')]=router;
\ No newline at end of file
index 9dffa48..fb46976 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x879f=['STRING','sequelize','exports'];(function(_0x97e344,_0x1c0355){var _0x4f356e=function(_0x1332c8){while(--_0x1332c8){_0x97e344['push'](_0x97e344['shift']());}};_0x4f356e(++_0x1c0355);}(_0x879f,0x18a));var _0xf879=function(_0x153e9e,_0x49b311){_0x153e9e=_0x153e9e-0x0;var _0x190b9d=_0x879f[_0x153e9e];return _0x190b9d;};'use strict';var Sequelize=require(_0xf879('0x0'));module[_0xf879('0x1')]={'name':{'type':Sequelize[_0xf879('0x2')]},'description':{'type':Sequelize[_0xf879('0x2')]}};
\ No newline at end of file
+var _0x4a03=['sequelize','exports','STRING'];(function(_0x81a8b2,_0x63b173){var _0x253d3f=function(_0x110823){while(--_0x110823){_0x81a8b2['push'](_0x81a8b2['shift']());}};_0x253d3f(++_0x63b173);}(_0x4a03,0x7b));var _0x34a0=function(_0x3da10e,_0xbf3f19){_0x3da10e=_0x3da10e-0x0;var _0x18f0cd=_0x4a03[_0x3da10e];return _0x18f0cd;};'use strict';var Sequelize=require(_0x34a0('0x0'));module[_0x34a0('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x34a0('0x2')]}};
\ No newline at end of file
index b81b967..9a55bc3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19ff=['offset','count','limit','set','Content-Range','json','apply','reject','save','update','then','error','stack','name','send','index','map','ServicenowConfiguration','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','catch','show','params','rawAttributes','find','create','body','destroy','ServicenowField','length','getFields','findOne','getSubjects','getDescriptions','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end'];(function(_0x5958a6,_0x34a283){var _0x33513f=function(_0x499877){while(--_0x499877){_0x5958a6['push'](_0x5958a6['shift']());}};_0x33513f(++_0x34a283);}(_0x19ff,0xd7));var _0xf19f=function(_0x514b28,_0x1cae6a){_0x514b28=_0x514b28-0x0;var _0x1e1659=_0x19ff[_0x514b28];return _0x1e1659;};'use strict';var emlformat=require(_0xf19f('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xf19f('0x1'));var rp=require(_0xf19f('0x2'));var moment=require(_0xf19f('0x3'));var BPromise=require(_0xf19f('0x4'));var Mustache=require(_0xf19f('0x5'));var util=require(_0xf19f('0x6'));var path=require(_0xf19f('0x7'));var sox=require(_0xf19f('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf19f('0x9'));var _=require(_0xf19f('0xa'));var squel=require(_0xf19f('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xf19f('0xc'));var querystring=require(_0xf19f('0xd'));var Papa=require(_0xf19f('0xe'));var Redis=require(_0xf19f('0xf'));var authService=require(_0xf19f('0x10'));var qs=require(_0xf19f('0x11'));var as=require(_0xf19f('0x12'));var hardwareService=require(_0xf19f('0x13'));var logger=require(_0xf19f('0x14'))(_0xf19f('0x15'));var utils=require('../../config/utils');var config=require(_0xf19f('0x16'));var licenseUtil=require(_0xf19f('0x17'));var db=require(_0xf19f('0x18'))['db'];function respondWithStatusCode(_0x4d870a,_0x39a52e){_0x39a52e=_0x39a52e||0xcc;return function(_0x222165){if(_0x222165){return _0x4d870a[_0xf19f('0x19')](_0x39a52e);}return _0x4d870a[_0xf19f('0x1a')](_0x39a52e)[_0xf19f('0x1b')]();};}function respondWithResult(_0x30d114,_0x5af241){_0x5af241=_0x5af241||0xc8;return function(_0x52bb3a){if(_0x52bb3a){return _0x30d114['status'](_0x5af241)['json'](_0x52bb3a);}};}function respondWithFilteredResult(_0x334a63,_0x408e77){return function(_0x3317ef){if(_0x3317ef){var _0x326441=typeof _0x408e77[_0xf19f('0x1c')]==='undefined'&&typeof _0x408e77['limit']==='undefined';var _0x114685=_0x3317ef[_0xf19f('0x1d')];var _0x5436f6=_0x326441?0x0:_0x408e77[_0xf19f('0x1c')];var _0x2960f0=_0x326441?_0x3317ef[_0xf19f('0x1d')]:_0x408e77['offset']+_0x408e77[_0xf19f('0x1e')];var _0x23815f;if(_0x2960f0>=_0x114685){_0x2960f0=_0x114685;_0x23815f=0xc8;}else{_0x23815f=0xce;}_0x334a63[_0xf19f('0x1a')](_0x23815f);return _0x334a63[_0xf19f('0x1f')](_0xf19f('0x20'),_0x5436f6+'-'+_0x2960f0+'/'+_0x114685)[_0xf19f('0x21')](_0x3317ef);}return null;};}function patchUpdates(_0x5978fe){return function(_0x364e88){try{jsonpatch[_0xf19f('0x22')](_0x364e88,_0x5978fe,!![]);}catch(_0x4448f3){return BPromise[_0xf19f('0x23')](_0x4448f3);}return _0x364e88[_0xf19f('0x24')]();};}function saveUpdates(_0xd6056f,_0x2bac27){return function(_0x5a3048){if(_0x5a3048){return _0x5a3048[_0xf19f('0x25')](_0xd6056f)[_0xf19f('0x26')](function(_0x5ae571){return _0x5ae571;});}return null;};}function removeEntity(_0x1227d5,_0x37d43a){return function(_0x1c9fe2){if(_0x1c9fe2){return _0x1c9fe2['destroy']()[_0xf19f('0x26')](function(){_0x1227d5[_0xf19f('0x1a')](0xcc)[_0xf19f('0x1b')]();});}};}function handleEntityNotFound(_0x541651,_0x25a44a){return function(_0x54371b){if(!_0x54371b){_0x541651['sendStatus'](0x194);}return _0x54371b;};}function handleError(_0xf6434e,_0x2b0941){_0x2b0941=_0x2b0941||0x1f4;return function(_0x31b326){logger[_0xf19f('0x27')](_0x31b326[_0xf19f('0x28')]);if(_0x31b326[_0xf19f('0x29')]){delete _0x31b326[_0xf19f('0x29')];}_0xf6434e[_0xf19f('0x1a')](_0x2b0941)[_0xf19f('0x2a')](_0x31b326);};}exports[_0xf19f('0x2b')]=function(_0x1d569c,_0x3a076c){var _0x1e85ce={},_0x48bd16={},_0x227d05={'count':0x0,'rows':[]};var _0x3125a7=_[_0xf19f('0x2c')](db[_0xf19f('0x2d')]['rawAttributes'],function(_0x4c5df1){return{'name':_0x4c5df1['fieldName'],'type':_0x4c5df1['type'][_0xf19f('0x2e')]};});_0x48bd16[_0xf19f('0x2f')]=_[_0xf19f('0x2c')](_0x3125a7,'name');_0x48bd16[_0xf19f('0x30')]=_[_0xf19f('0x31')](_0x1d569c[_0xf19f('0x30')]);_0x48bd16[_0xf19f('0x32')]=_[_0xf19f('0x33')](_0x48bd16[_0xf19f('0x2f')],_0x48bd16[_0xf19f('0x30')]);_0x1e85ce[_0xf19f('0x34')]=_[_0xf19f('0x33')](_0x48bd16[_0xf19f('0x2f')],qs[_0xf19f('0x35')](_0x1d569c[_0xf19f('0x30')][_0xf19f('0x35')]));_0x1e85ce[_0xf19f('0x34')]=_0x1e85ce['attributes']['length']?_0x1e85ce[_0xf19f('0x34')]:_0x48bd16[_0xf19f('0x2f')];if(!_0x1d569c[_0xf19f('0x30')][_0xf19f('0x36')](_0xf19f('0x37'))){_0x1e85ce[_0xf19f('0x1e')]=qs[_0xf19f('0x1e')](_0x1d569c[_0xf19f('0x30')][_0xf19f('0x1e')]);_0x1e85ce['offset']=qs[_0xf19f('0x1c')](_0x1d569c[_0xf19f('0x30')]['offset']);}_0x1e85ce[_0xf19f('0x38')]=qs[_0xf19f('0x39')](_0x1d569c['query'][_0xf19f('0x39')]);_0x1e85ce[_0xf19f('0x3a')]=qs[_0xf19f('0x32')](_[_0xf19f('0x3b')](_0x1d569c['query'],_0x48bd16[_0xf19f('0x32')]),_0x3125a7);if(_0x1d569c[_0xf19f('0x30')][_0xf19f('0x3c')]){_0x1e85ce[_0xf19f('0x3a')]=_[_0xf19f('0x3d')](_0x1e85ce['where'],{'$or':_['map'](_0x3125a7,function(_0x10c0a1){if(_0x10c0a1[_0xf19f('0x3e')]!==_0xf19f('0x3f')){var _0x564693={};_0x564693[_0x10c0a1[_0xf19f('0x29')]]={'$like':'%'+_0x1d569c[_0xf19f('0x30')][_0xf19f('0x3c')]+'%'};return _0x564693;}})});}_0x1e85ce=_[_0xf19f('0x3d')]({},_0x1e85ce,_0x1d569c[_0xf19f('0x40')]);var _0x483539={'where':_0x1e85ce[_0xf19f('0x3a')]};return db[_0xf19f('0x2d')][_0xf19f('0x1d')](_0x483539)['then'](function(_0x4f501e){_0x227d05[_0xf19f('0x1d')]=_0x4f501e;if(_0x1d569c[_0xf19f('0x30')][_0xf19f('0x41')]){_0x1e85ce[_0xf19f('0x42')]=[{'all':!![]}];}return db[_0xf19f('0x2d')]['findAll'](_0x1e85ce);})[_0xf19f('0x26')](function(_0x4ebf9){_0x227d05['rows']=_0x4ebf9;return _0x227d05;})['then'](respondWithFilteredResult(_0x3a076c,_0x1e85ce))[_0xf19f('0x43')](handleError(_0x3a076c,null));};exports[_0xf19f('0x44')]=function(_0x1c1e85,_0x53e45f){var _0x21b617={'raw':![],'where':{'id':_0x1c1e85[_0xf19f('0x45')]['id']}},_0x513278={};_0x513278[_0xf19f('0x2f')]=_[_0xf19f('0x31')](db['ServicenowConfiguration'][_0xf19f('0x46')]);_0x513278[_0xf19f('0x30')]=_['keys'](_0x1c1e85[_0xf19f('0x30')]);_0x513278['filters']=_[_0xf19f('0x33')](_0x513278['model'],_0x513278[_0xf19f('0x30')]);_0x21b617['attributes']=_['intersection'](_0x513278[_0xf19f('0x2f')],qs['fields'](_0x1c1e85[_0xf19f('0x30')][_0xf19f('0x35')]));_0x21b617['attributes']=_0x21b617[_0xf19f('0x34')]['length']?_0x21b617['attributes']:_0x513278[_0xf19f('0x2f')];if(_0x1c1e85[_0xf19f('0x30')][_0xf19f('0x41')]){_0x21b617[_0xf19f('0x42')]=[{'all':!![]}];}_0x21b617=_[_0xf19f('0x3d')]({},_0x21b617,_0x1c1e85[_0xf19f('0x40')]);return db[_0xf19f('0x2d')][_0xf19f('0x47')](_0x21b617)[_0xf19f('0x26')](handleEntityNotFound(_0x53e45f,null))[_0xf19f('0x26')](respondWithResult(_0x53e45f,null))[_0xf19f('0x43')](handleError(_0x53e45f,null));};exports[_0xf19f('0x48')]=function(_0x1f68f2,_0x33be6c){return db[_0xf19f('0x2d')][_0xf19f('0x48')](_0x1f68f2[_0xf19f('0x49')],{})[_0xf19f('0x26')](respondWithResult(_0x33be6c,0xc9))[_0xf19f('0x43')](handleError(_0x33be6c,null));};exports[_0xf19f('0x25')]=function(_0x1c2f29,_0x27538b){if(_0x1c2f29[_0xf19f('0x49')]['id']){delete _0x1c2f29['body']['id'];}return db['ServicenowConfiguration']['find']({'where':{'id':_0x1c2f29[_0xf19f('0x45')]['id']}})[_0xf19f('0x26')](handleEntityNotFound(_0x27538b,null))[_0xf19f('0x26')](saveUpdates(_0x1c2f29[_0xf19f('0x49')],null))[_0xf19f('0x26')](respondWithResult(_0x27538b,null))['catch'](handleError(_0x27538b,null));};exports[_0xf19f('0x4a')]=function(_0x3ba5df,_0x1beff3){return db[_0xf19f('0x2d')][_0xf19f('0x47')]({'where':{'id':_0x3ba5df['params']['id']}})[_0xf19f('0x26')](handleEntityNotFound(_0x1beff3,null))[_0xf19f('0x26')](removeEntity(_0x1beff3,null))[_0xf19f('0x43')](handleError(_0x1beff3,null));};exports['getFields']=function(_0x4b6c08,_0x1c7e6d,_0x5458d0){var _0x413c64={};var _0x39cde9={};var _0x450993;var _0x2e589d;return db[_0xf19f('0x2d')]['findOne']({'where':{'id':_0x4b6c08['params']['id']}})['then'](handleEntityNotFound(_0x1c7e6d,null))[_0xf19f('0x26')](function(_0x12dd2a){if(_0x12dd2a){_0x450993=_0x12dd2a;_0x39cde9[_0xf19f('0x2f')]=_['keys'](db[_0xf19f('0x4b')][_0xf19f('0x46')]);_0x39cde9['query']=_['keys'](_0x4b6c08[_0xf19f('0x30')]);_0x39cde9[_0xf19f('0x32')]=_['intersection'](_0x39cde9['model'],_0x39cde9['query']);_0x413c64[_0xf19f('0x34')]=_[_0xf19f('0x33')](_0x39cde9[_0xf19f('0x2f')],qs[_0xf19f('0x35')](_0x4b6c08['query'][_0xf19f('0x35')]));_0x413c64[_0xf19f('0x34')]=_0x413c64['attributes'][_0xf19f('0x4c')]?_0x413c64[_0xf19f('0x34')]:_0x39cde9[_0xf19f('0x2f')];_0x413c64[_0xf19f('0x38')]=qs[_0xf19f('0x39')](_0x4b6c08[_0xf19f('0x30')][_0xf19f('0x39')]);_0x413c64[_0xf19f('0x3a')]=qs['filters'](_[_0xf19f('0x3b')](_0x4b6c08['query'],_0x39cde9[_0xf19f('0x32')]));if(_0x4b6c08[_0xf19f('0x30')]['filter']){_0x413c64[_0xf19f('0x3a')]=_[_0xf19f('0x3d')](_0x413c64[_0xf19f('0x3a')],{'$or':_[_0xf19f('0x2c')](_0x413c64['attributes'],function(_0x4ed711){var _0x11aa5c={};_0x11aa5c[_0x4ed711]={'$like':'%'+_0x4b6c08[_0xf19f('0x30')]['filter']+'%'};return _0x11aa5c;})});}_0x413c64=_[_0xf19f('0x3d')]({},_0x413c64,_0x4b6c08[_0xf19f('0x40')]);return _0x450993[_0xf19f('0x4d')](_0x413c64);}})[_0xf19f('0x26')](function(_0x2e6056){if(_0x2e6056){_0x2e589d=_0x2e6056[_0xf19f('0x4c')];if(!_0x4b6c08['query'][_0xf19f('0x36')]('nolimit')){_0x413c64[_0xf19f('0x1e')]=qs[_0xf19f('0x1e')](_0x4b6c08[_0xf19f('0x30')]['limit']);_0x413c64[_0xf19f('0x1c')]=qs[_0xf19f('0x1c')](_0x4b6c08[_0xf19f('0x30')][_0xf19f('0x1c')]);}return _0x450993[_0xf19f('0x4d')](_0x413c64);}})[_0xf19f('0x26')](function(_0x345ed4){if(_0x345ed4){return _0x345ed4?{'count':_0x2e589d,'rows':_0x345ed4}:null;}})[_0xf19f('0x26')](respondWithResult(_0x1c7e6d,null))[_0xf19f('0x43')](handleError(_0x1c7e6d,null));};exports['getSubjects']=function(_0x1ba3e3,_0x3b29bb,_0x14eb2b){var _0x5d3143={};var _0x62bd88={};var _0xb4e24c;var _0x523910;return db['ServicenowConfiguration'][_0xf19f('0x4e')]({'where':{'id':_0x1ba3e3['params']['id']}})[_0xf19f('0x26')](handleEntityNotFound(_0x3b29bb,null))[_0xf19f('0x26')](function(_0x49ca97){if(_0x49ca97){_0xb4e24c=_0x49ca97;_0x62bd88[_0xf19f('0x2f')]=_[_0xf19f('0x31')](db[_0xf19f('0x4b')][_0xf19f('0x46')]);_0x62bd88['query']=_[_0xf19f('0x31')](_0x1ba3e3[_0xf19f('0x30')]);_0x62bd88['filters']=_[_0xf19f('0x33')](_0x62bd88[_0xf19f('0x2f')],_0x62bd88[_0xf19f('0x30')]);_0x5d3143[_0xf19f('0x34')]=_[_0xf19f('0x33')](_0x62bd88['model'],qs[_0xf19f('0x35')](_0x1ba3e3[_0xf19f('0x30')]['fields']));_0x5d3143[_0xf19f('0x34')]=_0x5d3143[_0xf19f('0x34')][_0xf19f('0x4c')]?_0x5d3143[_0xf19f('0x34')]:_0x62bd88[_0xf19f('0x2f')];_0x5d3143[_0xf19f('0x38')]=qs[_0xf19f('0x39')](_0x1ba3e3[_0xf19f('0x30')]['sort']);_0x5d3143[_0xf19f('0x3a')]=qs[_0xf19f('0x32')](_[_0xf19f('0x3b')](_0x1ba3e3['query'],_0x62bd88['filters']));if(_0x1ba3e3[_0xf19f('0x30')]['filter']){_0x5d3143['where']=_['merge'](_0x5d3143[_0xf19f('0x3a')],{'$or':_[_0xf19f('0x2c')](_0x5d3143[_0xf19f('0x34')],function(_0x5de133){var _0x5d192e={};_0x5d192e[_0x5de133]={'$like':'%'+_0x1ba3e3[_0xf19f('0x30')][_0xf19f('0x3c')]+'%'};return _0x5d192e;})});}_0x5d3143=_[_0xf19f('0x3d')]({},_0x5d3143,_0x1ba3e3[_0xf19f('0x40')]);return _0xb4e24c[_0xf19f('0x4f')](_0x5d3143);}})[_0xf19f('0x26')](function(_0x326c32){if(_0x326c32){_0x523910=_0x326c32[_0xf19f('0x4c')];if(!_0x1ba3e3['query'][_0xf19f('0x36')](_0xf19f('0x37'))){_0x5d3143[_0xf19f('0x1e')]=qs[_0xf19f('0x1e')](_0x1ba3e3[_0xf19f('0x30')][_0xf19f('0x1e')]);_0x5d3143[_0xf19f('0x1c')]=qs[_0xf19f('0x1c')](_0x1ba3e3[_0xf19f('0x30')][_0xf19f('0x1c')]);}return _0xb4e24c[_0xf19f('0x4f')](_0x5d3143);}})[_0xf19f('0x26')](function(_0x4eb1da){if(_0x4eb1da){return _0x4eb1da?{'count':_0x523910,'rows':_0x4eb1da}:null;}})[_0xf19f('0x26')](respondWithResult(_0x3b29bb,null))[_0xf19f('0x43')](handleError(_0x3b29bb,null));};exports[_0xf19f('0x50')]=function(_0x58d300,_0x48a2f3,_0x1d41bf){var _0x5d32cb={};var _0x5d8f86={};var _0x1124cf;var _0xb4c604;return db[_0xf19f('0x2d')][_0xf19f('0x4e')]({'where':{'id':_0x58d300[_0xf19f('0x45')]['id']}})['then'](handleEntityNotFound(_0x48a2f3,null))['then'](function(_0x52fda6){if(_0x52fda6){_0x1124cf=_0x52fda6;_0x5d8f86[_0xf19f('0x2f')]=_[_0xf19f('0x31')](db[_0xf19f('0x4b')][_0xf19f('0x46')]);_0x5d8f86[_0xf19f('0x30')]=_[_0xf19f('0x31')](_0x58d300[_0xf19f('0x30')]);_0x5d8f86['filters']=_[_0xf19f('0x33')](_0x5d8f86[_0xf19f('0x2f')],_0x5d8f86[_0xf19f('0x30')]);_0x5d32cb[_0xf19f('0x34')]=_[_0xf19f('0x33')](_0x5d8f86[_0xf19f('0x2f')],qs[_0xf19f('0x35')](_0x58d300[_0xf19f('0x30')][_0xf19f('0x35')]));_0x5d32cb[_0xf19f('0x34')]=_0x5d32cb[_0xf19f('0x34')][_0xf19f('0x4c')]?_0x5d32cb[_0xf19f('0x34')]:_0x5d8f86[_0xf19f('0x2f')];_0x5d32cb[_0xf19f('0x38')]=qs['sort'](_0x58d300[_0xf19f('0x30')][_0xf19f('0x39')]);_0x5d32cb[_0xf19f('0x3a')]=qs['filters'](_[_0xf19f('0x3b')](_0x58d300['query'],_0x5d8f86['filters']));if(_0x58d300[_0xf19f('0x30')]['filter']){_0x5d32cb[_0xf19f('0x3a')]=_[_0xf19f('0x3d')](_0x5d32cb['where'],{'$or':_[_0xf19f('0x2c')](_0x5d32cb[_0xf19f('0x34')],function(_0x202c0e){var _0x470df5={};_0x470df5[_0x202c0e]={'$like':'%'+_0x58d300[_0xf19f('0x30')][_0xf19f('0x3c')]+'%'};return _0x470df5;})});}_0x5d32cb=_['merge']({},_0x5d32cb,_0x58d300[_0xf19f('0x40')]);return _0x1124cf[_0xf19f('0x50')](_0x5d32cb);}})[_0xf19f('0x26')](function(_0x743bc0){if(_0x743bc0){_0xb4c604=_0x743bc0[_0xf19f('0x4c')];if(!_0x58d300['query']['hasOwnProperty']('nolimit')){_0x5d32cb[_0xf19f('0x1e')]=qs[_0xf19f('0x1e')](_0x58d300['query']['limit']);_0x5d32cb[_0xf19f('0x1c')]=qs[_0xf19f('0x1c')](_0x58d300[_0xf19f('0x30')]['offset']);}return _0x1124cf[_0xf19f('0x50')](_0x5d32cb);}})['then'](function(_0x735ef6){if(_0x735ef6){return _0x735ef6?{'count':_0xb4c604,'rows':_0x735ef6}:null;}})[_0xf19f('0x26')](respondWithResult(_0x48a2f3,null))[_0xf19f('0x43')](handleError(_0x48a2f3,null));};
\ No newline at end of file
+var _0x8829=['type','key','model','name','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','pick','merge','where','filter','count','include','findAll','rows','catch','show','rawAttributes','length','includeAll','options','find','create','body','params','getFields','findOne','ServicenowField','sort','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','request-promise','moment','util','path','to-csv','ejs','fs-extra','lodash','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','reject','save','update','then','destroy','error','send','index','map','ServicenowConfiguration'];(function(_0x381741,_0x5011cf){var _0x1092c7=function(_0xd1177){while(--_0xd1177){_0x381741['push'](_0x381741['shift']());}};_0x1092c7(++_0x5011cf);}(_0x8829,0x10f));var _0x9882=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8829[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x9882('0x0'));var rimraf=require(_0x9882('0x1'));var zipdir=require(_0x9882('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9882('0x3'));var moment=require(_0x9882('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x9882('0x5'));var path=require(_0x9882('0x6'));var sox=require('sox');var csv=require(_0x9882('0x7'));var ejs=require(_0x9882('0x8'));var fs=require('fs');var fs_extra=require(_0x9882('0x9'));var _=require(_0x9882('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x9882('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x9882('0x7'));var querystring=require(_0x9882('0xc'));var Papa=require('papaparse');var Redis=require(_0x9882('0xd'));var authService=require(_0x9882('0xe'));var qs=require(_0x9882('0xf'));var as=require(_0x9882('0x10'));var hardwareService=require(_0x9882('0x11'));var logger=require(_0x9882('0x12'))(_0x9882('0x13'));var utils=require(_0x9882('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x9882('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x377557,_0x39e987){_0x39e987=_0x39e987||0xcc;return function(_0x12fe3a){if(_0x12fe3a){return _0x377557[_0x9882('0x16')](_0x39e987);}return _0x377557[_0x9882('0x17')](_0x39e987)[_0x9882('0x18')]();};}function respondWithResult(_0x36c926,_0x29976b){_0x29976b=_0x29976b||0xc8;return function(_0x13aeef){if(_0x13aeef){return _0x36c926[_0x9882('0x17')](_0x29976b)[_0x9882('0x19')](_0x13aeef);}};}function respondWithFilteredResult(_0x10de45,_0x373097){return function(_0x3afc50){if(_0x3afc50){var _0x50effa=typeof _0x373097[_0x9882('0x1a')]===_0x9882('0x1b')&&typeof _0x373097[_0x9882('0x1c')]===_0x9882('0x1b');var _0x487657=_0x3afc50['count'];var _0x3de5ee=_0x50effa?0x0:_0x373097['offset'];var _0x5061a9=_0x50effa?_0x3afc50['count']:_0x373097[_0x9882('0x1a')]+_0x373097[_0x9882('0x1c')];var _0x18fab5;if(_0x5061a9>=_0x487657){_0x5061a9=_0x487657;_0x18fab5=0xc8;}else{_0x18fab5=0xce;}_0x10de45[_0x9882('0x17')](_0x18fab5);return _0x10de45[_0x9882('0x1d')](_0x9882('0x1e'),_0x3de5ee+'-'+_0x5061a9+'/'+_0x487657)[_0x9882('0x19')](_0x3afc50);}return null;};}function patchUpdates(_0x3de2f0){return function(_0x5bc3d5){try{jsonpatch['apply'](_0x5bc3d5,_0x3de2f0,!![]);}catch(_0x1a3ed5){return BPromise[_0x9882('0x1f')](_0x1a3ed5);}return _0x5bc3d5[_0x9882('0x20')]();};}function saveUpdates(_0x335878,_0x2d7265){return function(_0x187307){if(_0x187307){return _0x187307[_0x9882('0x21')](_0x335878)[_0x9882('0x22')](function(_0x467cc9){return _0x467cc9;});}return null;};}function removeEntity(_0x37653a,_0x3d56a7){return function(_0xd4fab){if(_0xd4fab){return _0xd4fab[_0x9882('0x23')]()[_0x9882('0x22')](function(){_0x37653a[_0x9882('0x17')](0xcc)[_0x9882('0x18')]();});}};}function handleEntityNotFound(_0x415672,_0x2df178){return function(_0x3a01e7){if(!_0x3a01e7){_0x415672[_0x9882('0x16')](0x194);}return _0x3a01e7;};}function handleError(_0x159e8b,_0x4b8312){_0x4b8312=_0x4b8312||0x1f4;return function(_0x5554fd){logger[_0x9882('0x24')](_0x5554fd['stack']);if(_0x5554fd['name']){delete _0x5554fd['name'];}_0x159e8b[_0x9882('0x17')](_0x4b8312)[_0x9882('0x25')](_0x5554fd);};}exports[_0x9882('0x26')]=function(_0x495b5d,_0x39aa78){var _0x43baba={},_0x1716fc={},_0x1a0ac5={'count':0x0,'rows':[]};var _0x4e7f70=_[_0x9882('0x27')](db[_0x9882('0x28')]['rawAttributes'],function(_0x2f3e3b){return{'name':_0x2f3e3b['fieldName'],'type':_0x2f3e3b[_0x9882('0x29')][_0x9882('0x2a')]};});_0x1716fc[_0x9882('0x2b')]=_[_0x9882('0x27')](_0x4e7f70,_0x9882('0x2c'));_0x1716fc[_0x9882('0x2d')]=_[_0x9882('0x2e')](_0x495b5d[_0x9882('0x2d')]);_0x1716fc[_0x9882('0x2f')]=_['intersection'](_0x1716fc['model'],_0x1716fc[_0x9882('0x2d')]);_0x43baba[_0x9882('0x30')]=_[_0x9882('0x31')](_0x1716fc[_0x9882('0x2b')],qs['fields'](_0x495b5d['query'][_0x9882('0x32')]));_0x43baba[_0x9882('0x30')]=_0x43baba[_0x9882('0x30')]['length']?_0x43baba[_0x9882('0x30')]:_0x1716fc[_0x9882('0x2b')];if(!_0x495b5d[_0x9882('0x2d')][_0x9882('0x33')](_0x9882('0x34'))){_0x43baba[_0x9882('0x1c')]=qs['limit'](_0x495b5d[_0x9882('0x2d')]['limit']);_0x43baba[_0x9882('0x1a')]=qs['offset'](_0x495b5d[_0x9882('0x2d')][_0x9882('0x1a')]);}_0x43baba[_0x9882('0x35')]=qs['sort'](_0x495b5d['query']['sort']);_0x43baba['where']=qs[_0x9882('0x2f')](_[_0x9882('0x36')](_0x495b5d['query'],_0x1716fc[_0x9882('0x2f')]),_0x4e7f70);if(_0x495b5d['query']['filter']){_0x43baba['where']=_[_0x9882('0x37')](_0x43baba[_0x9882('0x38')],{'$or':_[_0x9882('0x27')](_0x4e7f70,function(_0x58cb38){if(_0x58cb38[_0x9882('0x29')]!=='VIRTUAL'){var _0x2f1adb={};_0x2f1adb[_0x58cb38[_0x9882('0x2c')]]={'$like':'%'+_0x495b5d['query'][_0x9882('0x39')]+'%'};return _0x2f1adb;}})});}_0x43baba=_[_0x9882('0x37')]({},_0x43baba,_0x495b5d['options']);var _0x39c703={'where':_0x43baba[_0x9882('0x38')]};return db[_0x9882('0x28')][_0x9882('0x3a')](_0x39c703)[_0x9882('0x22')](function(_0x415eeb){_0x1a0ac5[_0x9882('0x3a')]=_0x415eeb;if(_0x495b5d[_0x9882('0x2d')]['includeAll']){_0x43baba[_0x9882('0x3b')]=[{'all':!![]}];}return db[_0x9882('0x28')][_0x9882('0x3c')](_0x43baba);})[_0x9882('0x22')](function(_0xd26c27){_0x1a0ac5[_0x9882('0x3d')]=_0xd26c27;return _0x1a0ac5;})[_0x9882('0x22')](respondWithFilteredResult(_0x39aa78,_0x43baba))[_0x9882('0x3e')](handleError(_0x39aa78,null));};exports[_0x9882('0x3f')]=function(_0x3d721d,_0x470607){var _0x23ab62={'raw':![],'where':{'id':_0x3d721d['params']['id']}},_0x2efe8a={};_0x2efe8a[_0x9882('0x2b')]=_[_0x9882('0x2e')](db[_0x9882('0x28')][_0x9882('0x40')]);_0x2efe8a[_0x9882('0x2d')]=_[_0x9882('0x2e')](_0x3d721d[_0x9882('0x2d')]);_0x2efe8a[_0x9882('0x2f')]=_[_0x9882('0x31')](_0x2efe8a[_0x9882('0x2b')],_0x2efe8a[_0x9882('0x2d')]);_0x23ab62[_0x9882('0x30')]=_[_0x9882('0x31')](_0x2efe8a[_0x9882('0x2b')],qs[_0x9882('0x32')](_0x3d721d[_0x9882('0x2d')][_0x9882('0x32')]));_0x23ab62[_0x9882('0x30')]=_0x23ab62[_0x9882('0x30')][_0x9882('0x41')]?_0x23ab62[_0x9882('0x30')]:_0x2efe8a[_0x9882('0x2b')];if(_0x3d721d['query'][_0x9882('0x42')]){_0x23ab62[_0x9882('0x3b')]=[{'all':!![]}];}_0x23ab62=_['merge']({},_0x23ab62,_0x3d721d[_0x9882('0x43')]);return db[_0x9882('0x28')][_0x9882('0x44')](_0x23ab62)[_0x9882('0x22')](handleEntityNotFound(_0x470607,null))['then'](respondWithResult(_0x470607,null))[_0x9882('0x3e')](handleError(_0x470607,null));};exports[_0x9882('0x45')]=function(_0x1473c3,_0x3fbe6c){return db[_0x9882('0x28')][_0x9882('0x45')](_0x1473c3['body'],{})['then'](respondWithResult(_0x3fbe6c,0xc9))[_0x9882('0x3e')](handleError(_0x3fbe6c,null));};exports[_0x9882('0x21')]=function(_0xac3e76,_0x336dc1){if(_0xac3e76[_0x9882('0x46')]['id']){delete _0xac3e76[_0x9882('0x46')]['id'];}return db[_0x9882('0x28')]['find']({'where':{'id':_0xac3e76[_0x9882('0x47')]['id']}})[_0x9882('0x22')](handleEntityNotFound(_0x336dc1,null))[_0x9882('0x22')](saveUpdates(_0xac3e76[_0x9882('0x46')],null))['then'](respondWithResult(_0x336dc1,null))['catch'](handleError(_0x336dc1,null));};exports[_0x9882('0x23')]=function(_0x477864,_0x2f11d5){return db[_0x9882('0x28')][_0x9882('0x44')]({'where':{'id':_0x477864[_0x9882('0x47')]['id']}})[_0x9882('0x22')](handleEntityNotFound(_0x2f11d5,null))[_0x9882('0x22')](removeEntity(_0x2f11d5,null))[_0x9882('0x3e')](handleError(_0x2f11d5,null));};exports[_0x9882('0x48')]=function(_0x1781bc,_0x8ac135,_0x287ba9){var _0x330798={};var _0x4b52d3={};var _0x51dc55;var _0x58d25b;return db[_0x9882('0x28')][_0x9882('0x49')]({'where':{'id':_0x1781bc[_0x9882('0x47')]['id']}})[_0x9882('0x22')](handleEntityNotFound(_0x8ac135,null))['then'](function(_0x303162){if(_0x303162){_0x51dc55=_0x303162;_0x4b52d3[_0x9882('0x2b')]=_[_0x9882('0x2e')](db[_0x9882('0x4a')][_0x9882('0x40')]);_0x4b52d3['query']=_[_0x9882('0x2e')](_0x1781bc[_0x9882('0x2d')]);_0x4b52d3[_0x9882('0x2f')]=_['intersection'](_0x4b52d3[_0x9882('0x2b')],_0x4b52d3['query']);_0x330798[_0x9882('0x30')]=_[_0x9882('0x31')](_0x4b52d3[_0x9882('0x2b')],qs['fields'](_0x1781bc[_0x9882('0x2d')][_0x9882('0x32')]));_0x330798[_0x9882('0x30')]=_0x330798[_0x9882('0x30')][_0x9882('0x41')]?_0x330798['attributes']:_0x4b52d3['model'];_0x330798['order']=qs['sort'](_0x1781bc[_0x9882('0x2d')][_0x9882('0x4b')]);_0x330798[_0x9882('0x38')]=qs['filters'](_[_0x9882('0x36')](_0x1781bc['query'],_0x4b52d3[_0x9882('0x2f')]));if(_0x1781bc['query'][_0x9882('0x39')]){_0x330798[_0x9882('0x38')]=_[_0x9882('0x37')](_0x330798[_0x9882('0x38')],{'$or':_[_0x9882('0x27')](_0x330798['attributes'],function(_0x3d6293){var _0x4501e2={};_0x4501e2[_0x3d6293]={'$like':'%'+_0x1781bc[_0x9882('0x2d')][_0x9882('0x39')]+'%'};return _0x4501e2;})});}_0x330798=_[_0x9882('0x37')]({},_0x330798,_0x1781bc[_0x9882('0x43')]);return _0x51dc55['getFields'](_0x330798);}})[_0x9882('0x22')](function(_0x2d8b89){if(_0x2d8b89){_0x58d25b=_0x2d8b89[_0x9882('0x41')];if(!_0x1781bc['query'][_0x9882('0x33')](_0x9882('0x34'))){_0x330798[_0x9882('0x1c')]=qs['limit'](_0x1781bc['query'][_0x9882('0x1c')]);_0x330798[_0x9882('0x1a')]=qs[_0x9882('0x1a')](_0x1781bc[_0x9882('0x2d')][_0x9882('0x1a')]);}return _0x51dc55[_0x9882('0x48')](_0x330798);}})[_0x9882('0x22')](function(_0x2696c5){if(_0x2696c5){return _0x2696c5?{'count':_0x58d25b,'rows':_0x2696c5}:null;}})['then'](respondWithResult(_0x8ac135,null))['catch'](handleError(_0x8ac135,null));};exports['getSubjects']=function(_0x5f5664,_0x26379a,_0x1d9c7b){var _0x559d6b={};var _0x5bebc7={};var _0x567ec1;var _0x4da263;return db[_0x9882('0x28')]['findOne']({'where':{'id':_0x5f5664[_0x9882('0x47')]['id']}})[_0x9882('0x22')](handleEntityNotFound(_0x26379a,null))['then'](function(_0x2ab607){if(_0x2ab607){_0x567ec1=_0x2ab607;_0x5bebc7[_0x9882('0x2b')]=_[_0x9882('0x2e')](db[_0x9882('0x4a')][_0x9882('0x40')]);_0x5bebc7['query']=_[_0x9882('0x2e')](_0x5f5664[_0x9882('0x2d')]);_0x5bebc7[_0x9882('0x2f')]=_[_0x9882('0x31')](_0x5bebc7[_0x9882('0x2b')],_0x5bebc7[_0x9882('0x2d')]);_0x559d6b[_0x9882('0x30')]=_['intersection'](_0x5bebc7[_0x9882('0x2b')],qs[_0x9882('0x32')](_0x5f5664[_0x9882('0x2d')][_0x9882('0x32')]));_0x559d6b[_0x9882('0x30')]=_0x559d6b[_0x9882('0x30')][_0x9882('0x41')]?_0x559d6b[_0x9882('0x30')]:_0x5bebc7[_0x9882('0x2b')];_0x559d6b[_0x9882('0x35')]=qs[_0x9882('0x4b')](_0x5f5664[_0x9882('0x2d')][_0x9882('0x4b')]);_0x559d6b[_0x9882('0x38')]=qs['filters'](_[_0x9882('0x36')](_0x5f5664[_0x9882('0x2d')],_0x5bebc7[_0x9882('0x2f')]));if(_0x5f5664[_0x9882('0x2d')]['filter']){_0x559d6b[_0x9882('0x38')]=_[_0x9882('0x37')](_0x559d6b[_0x9882('0x38')],{'$or':_[_0x9882('0x27')](_0x559d6b['attributes'],function(_0x4de9a6){var _0xea4312={};_0xea4312[_0x4de9a6]={'$like':'%'+_0x5f5664[_0x9882('0x2d')][_0x9882('0x39')]+'%'};return _0xea4312;})});}_0x559d6b=_[_0x9882('0x37')]({},_0x559d6b,_0x5f5664['options']);return _0x567ec1[_0x9882('0x4c')](_0x559d6b);}})[_0x9882('0x22')](function(_0x39eb84){if(_0x39eb84){_0x4da263=_0x39eb84[_0x9882('0x41')];if(!_0x5f5664[_0x9882('0x2d')][_0x9882('0x33')]('nolimit')){_0x559d6b['limit']=qs['limit'](_0x5f5664['query'][_0x9882('0x1c')]);_0x559d6b[_0x9882('0x1a')]=qs['offset'](_0x5f5664[_0x9882('0x2d')][_0x9882('0x1a')]);}return _0x567ec1[_0x9882('0x4c')](_0x559d6b);}})[_0x9882('0x22')](function(_0x22d1dd){if(_0x22d1dd){return _0x22d1dd?{'count':_0x4da263,'rows':_0x22d1dd}:null;}})[_0x9882('0x22')](respondWithResult(_0x26379a,null))[_0x9882('0x3e')](handleError(_0x26379a,null));};exports[_0x9882('0x4d')]=function(_0x584f21,_0x784874,_0x32939f){var _0x39bba5={};var _0x261c66={};var _0x160d57;var _0x495515;return db['ServicenowConfiguration'][_0x9882('0x49')]({'where':{'id':_0x584f21[_0x9882('0x47')]['id']}})['then'](handleEntityNotFound(_0x784874,null))[_0x9882('0x22')](function(_0x34bb2f){if(_0x34bb2f){_0x160d57=_0x34bb2f;_0x261c66[_0x9882('0x2b')]=_[_0x9882('0x2e')](db[_0x9882('0x4a')][_0x9882('0x40')]);_0x261c66[_0x9882('0x2d')]=_['keys'](_0x584f21['query']);_0x261c66[_0x9882('0x2f')]=_[_0x9882('0x31')](_0x261c66[_0x9882('0x2b')],_0x261c66[_0x9882('0x2d')]);_0x39bba5['attributes']=_[_0x9882('0x31')](_0x261c66[_0x9882('0x2b')],qs['fields'](_0x584f21[_0x9882('0x2d')][_0x9882('0x32')]));_0x39bba5['attributes']=_0x39bba5[_0x9882('0x30')][_0x9882('0x41')]?_0x39bba5['attributes']:_0x261c66[_0x9882('0x2b')];_0x39bba5[_0x9882('0x35')]=qs['sort'](_0x584f21[_0x9882('0x2d')]['sort']);_0x39bba5[_0x9882('0x38')]=qs[_0x9882('0x2f')](_[_0x9882('0x36')](_0x584f21[_0x9882('0x2d')],_0x261c66['filters']));if(_0x584f21['query'][_0x9882('0x39')]){_0x39bba5[_0x9882('0x38')]=_[_0x9882('0x37')](_0x39bba5[_0x9882('0x38')],{'$or':_[_0x9882('0x27')](_0x39bba5[_0x9882('0x30')],function(_0x4d0380){var _0x3c6bcd={};_0x3c6bcd[_0x4d0380]={'$like':'%'+_0x584f21[_0x9882('0x2d')]['filter']+'%'};return _0x3c6bcd;})});}_0x39bba5=_[_0x9882('0x37')]({},_0x39bba5,_0x584f21[_0x9882('0x43')]);return _0x160d57[_0x9882('0x4d')](_0x39bba5);}})[_0x9882('0x22')](function(_0x11e5b3){if(_0x11e5b3){_0x495515=_0x11e5b3['length'];if(!_0x584f21['query']['hasOwnProperty'](_0x9882('0x34'))){_0x39bba5[_0x9882('0x1c')]=qs['limit'](_0x584f21[_0x9882('0x2d')][_0x9882('0x1c')]);_0x39bba5['offset']=qs[_0x9882('0x1a')](_0x584f21[_0x9882('0x2d')]['offset']);}return _0x160d57[_0x9882('0x4d')](_0x39bba5);}})['then'](function(_0x3dc5a4){if(_0x3dc5a4){return _0x3dc5a4?{'count':_0x495515,'rows':_0x3dc5a4}:null;}})[_0x9882('0x22')](respondWithResult(_0x784874,null))[_0x9882('0x3e')](handleError(_0x784874,null));};
\ No newline at end of file
index cb60bb6..8f8e712 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10b8=['path','rimraf','../../config/environment','exports','define','ServicenowConfiguration','int_servicenow_configurations','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x589f99,_0x2e94d3){var _0x8f928c=function(_0x3f3168){while(--_0x3f3168){_0x589f99['push'](_0x589f99['shift']());}};_0x8f928c(++_0x2e94d3);}(_0x10b8,0x166));var _0x810b=function(_0x1573ea,_0x434f02){_0x1573ea=_0x1573ea-0x0;var _0x51c0e2=_0x10b8[_0x1573ea];return _0x51c0e2;};'use strict';var _=require(_0x810b('0x0'));var util=require(_0x810b('0x1'));var logger=require(_0x810b('0x2'))(_0x810b('0x3'));var moment=require(_0x810b('0x4'));var BPromise=require(_0x810b('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x810b('0x6'));var rimraf=require(_0x810b('0x7'));var config=require(_0x810b('0x8'));var attributes=require('./intServicenowConfiguration.attributes');module[_0x810b('0x9')]=function(_0x3166f9,_0x3d3a15){return _0x3166f9[_0x810b('0xa')](_0x810b('0xb'),attributes,{'tableName':_0x810b('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x590a=['./intServicenowConfiguration.attributes','define','ServicenowConfiguration','int_servicenow_configurations','util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment'];(function(_0x3afbdf,_0x9e463b){var _0x5b6861=function(_0x31d287){while(--_0x31d287){_0x3afbdf['push'](_0x3afbdf['shift']());}};_0x5b6861(++_0x9e463b);}(_0x590a,0x159));var _0xa590=function(_0x38037f,_0x48c6d3){_0x38037f=_0x38037f-0x0;var _0x331304=_0x590a[_0x38037f];return _0x331304;};'use strict';var _=require('lodash');var util=require(_0xa590('0x0'));var logger=require(_0xa590('0x1'))(_0xa590('0x2'));var moment=require(_0xa590('0x3'));var BPromise=require(_0xa590('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xa590('0x5'));var config=require(_0xa590('0x6'));var attributes=require(_0xa590('0x7'));module['exports']=function(_0x20f21b,_0x4c127b){return _0x20f21b[_0xa590('0x8')](_0xa590('0x9'),attributes,{'tableName':_0xa590('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8586576..0a9d5a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4e3=['../../config/environment','jayson/promise','client','http','info','ServicenowConfiguration,\x20%s,\x20%s','request\x20sent','debug','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x47b58b,_0x41a189){var _0x46bebe=function(_0x22bbfa){while(--_0x22bbfa){_0x47b58b['push'](_0x47b58b['shift']());}};_0x46bebe(++_0x41a189);}(_0xf4e3,0x12e));var _0x3f4e=function(_0x138d06,_0x33edf2){_0x138d06=_0x138d06-0x0;var _0x1a01eb=_0xf4e3[_0x138d06];return _0x1a01eb;};'use strict';var _=require(_0x3f4e('0x0'));var util=require(_0x3f4e('0x1'));var moment=require(_0x3f4e('0x2'));var BPromise=require(_0x3f4e('0x3'));var rs=require(_0x3f4e('0x4'));var fs=require('fs');var Redis=require(_0x3f4e('0x5'));var db=require(_0x3f4e('0x6'))['db'];var utils=require(_0x3f4e('0x7'));var logger=require(_0x3f4e('0x8'))(_0x3f4e('0x9'));var config=require(_0x3f4e('0xa'));var jayson=require(_0x3f4e('0xb'));var client=jayson[_0x3f4e('0xc')][_0x3f4e('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x3ae617,_0x11409f,_0x1eb383){return new BPromise(function(_0x12abae,_0x29a52d){return client['request'](_0x3ae617,_0x1eb383)['then'](function(_0xf8be92){logger[_0x3f4e('0xe')](_0x3f4e('0xf'),_0x11409f,_0x3f4e('0x10'));logger[_0x3f4e('0x11')](_0x3f4e('0x12'),_0x11409f,_0x3f4e('0x10'),JSON[_0x3f4e('0x13')](_0xf8be92));if(_0xf8be92[_0x3f4e('0x14')]){if(_0xf8be92[_0x3f4e('0x14')][_0x3f4e('0x15')]===0x1f4){logger[_0x3f4e('0x14')](_0x3f4e('0xf'),_0x11409f,_0xf8be92[_0x3f4e('0x14')]['message']);return _0x29a52d(_0xf8be92[_0x3f4e('0x14')][_0x3f4e('0x16')]);}logger['error'](_0x3f4e('0xf'),_0x11409f,_0xf8be92[_0x3f4e('0x14')][_0x3f4e('0x16')]);return _0x12abae(_0xf8be92[_0x3f4e('0x14')][_0x3f4e('0x16')]);}else{logger[_0x3f4e('0xe')](_0x3f4e('0xf'),_0x11409f,_0x3f4e('0x10'));_0x12abae(_0xf8be92['result'][_0x3f4e('0x16')]);}})[_0x3f4e('0x17')](function(_0x140c94){logger[_0x3f4e('0x14')](_0x3f4e('0xf'),_0x11409f,_0x140c94);_0x29a52d(_0x140c94);});});}
\ No newline at end of file
+var _0xf77f=['lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','then','info','ServicenowConfiguration,\x20%s,\x20%s','request\x20sent','debug','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0xf77f,0x134));var _0xff77=function(_0x3635ce,_0x33a6f9){_0x3635ce=_0x3635ce-0x0;var _0x97ecd0=_0xf77f[_0x3635ce];return _0x97ecd0;};'use strict';var _=require(_0xff77('0x0'));var util=require('util');var moment=require(_0xff77('0x1'));var BPromise=require(_0xff77('0x2'));var rs=require(_0xff77('0x3'));var fs=require('fs');var Redis=require(_0xff77('0x4'));var db=require(_0xff77('0x5'))['db'];var utils=require(_0xff77('0x6'));var logger=require(_0xff77('0x7'))(_0xff77('0x8'));var config=require('../../config/environment');var jayson=require(_0xff77('0x9'));var client=jayson[_0xff77('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4e6e64,_0x3c7cd9,_0x11735f){return new BPromise(function(_0x2c5b62,_0xecc548){return client['request'](_0x4e6e64,_0x11735f)[_0xff77('0xb')](function(_0x223112){logger[_0xff77('0xc')](_0xff77('0xd'),_0x3c7cd9,_0xff77('0xe'));logger[_0xff77('0xf')](_0xff77('0x10'),_0x3c7cd9,'request\x20sent',JSON[_0xff77('0x11')](_0x223112));if(_0x223112[_0xff77('0x12')]){if(_0x223112[_0xff77('0x12')][_0xff77('0x13')]===0x1f4){logger['error']('ServicenowConfiguration,\x20%s,\x20%s',_0x3c7cd9,_0x223112['error'][_0xff77('0x14')]);return _0xecc548(_0x223112[_0xff77('0x12')]['message']);}logger[_0xff77('0x12')](_0xff77('0xd'),_0x3c7cd9,_0x223112[_0xff77('0x12')][_0xff77('0x14')]);return _0x2c5b62(_0x223112['error'][_0xff77('0x14')]);}else{logger[_0xff77('0xc')](_0xff77('0xd'),_0x3c7cd9,_0xff77('0xe'));_0x2c5b62(_0x223112[_0xff77('0x15')]['message']);}})['catch'](function(_0x4a1189){logger[_0xff77('0x12')]('ServicenowConfiguration,\x20%s,\x20%s',_0x3c7cd9,_0x4a1189);_0xecc548(_0x4a1189);});});}
\ No newline at end of file
index 373e733..5047b2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1dd4=['path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowField.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','exports','util'];(function(_0x46c093,_0x12e60e){var _0x4b404b=function(_0xa2ab6d){while(--_0xa2ab6d){_0x46c093['push'](_0x46c093['shift']());}};_0x4b404b(++_0x12e60e);}(_0x1dd4,0x1ed));var _0x41dd=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1dd4[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require(_0x41dd('0x0'));var path=require(_0x41dd('0x1'));var timeout=require(_0x41dd('0x2'));var express=require('express');var router=express[_0x41dd('0x3')]();var fs_extra=require(_0x41dd('0x4'));var auth=require(_0x41dd('0x5'));var interaction=require(_0x41dd('0x6'));var config=require(_0x41dd('0x7'));var controller=require(_0x41dd('0x8'));router[_0x41dd('0x9')]('/',auth[_0x41dd('0xa')](),controller[_0x41dd('0xb')]);router[_0x41dd('0x9')](_0x41dd('0xc'),auth['isAuthenticated'](),controller[_0x41dd('0xd')]);router[_0x41dd('0xe')]('/',auth['isAuthenticated'](),controller[_0x41dd('0xf')]);router[_0x41dd('0x10')](_0x41dd('0xc'),auth['isAuthenticated'](),controller[_0x41dd('0x11')]);router['delete'](_0x41dd('0xc'),auth['isAuthenticated'](),controller['destroy']);module[_0x41dd('0x12')]=router;
\ No newline at end of file
+var _0xac3f=['/:id','post','create','put','update','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index'];(function(_0x5c88df,_0x13b00f){var _0x4285be=function(_0x12b0fe){while(--_0x12b0fe){_0x5c88df['push'](_0x5c88df['shift']());}};_0x4285be(++_0x13b00f);}(_0xac3f,0x1cf));var _0xfac3=function(_0x266ddc,_0x45aa52){_0x266ddc=_0x266ddc-0x0;var _0x39c1d7=_0xac3f[_0x266ddc];return _0x39c1d7;};'use strict';var multer=require(_0xfac3('0x0'));var util=require(_0xfac3('0x1'));var path=require(_0xfac3('0x2'));var timeout=require(_0xfac3('0x3'));var express=require('express');var router=express[_0xfac3('0x4')]();var fs_extra=require(_0xfac3('0x5'));var auth=require(_0xfac3('0x6'));var interaction=require(_0xfac3('0x7'));var config=require(_0xfac3('0x8'));var controller=require('./intServicenowField.controller');router[_0xfac3('0x9')]('/',auth[_0xfac3('0xa')](),controller[_0xfac3('0xb')]);router[_0xfac3('0x9')](_0xfac3('0xc'),auth['isAuthenticated'](),controller['show']);router[_0xfac3('0xd')]('/',auth[_0xfac3('0xa')](),controller[_0xfac3('0xe')]);router[_0xfac3('0xf')](_0xfac3('0xc'),auth[_0xfac3('0xa')](),controller[_0xfac3('0x10')]);router['delete'](_0xfac3('0xc'),auth[_0xfac3('0xa')](),controller[_0xfac3('0x11')]);module[_0xfac3('0x12')]=router;
\ No newline at end of file
index ced52a1..de54ad7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf741=['ENUM','string','variable','keyValue','STRING','customVariable','BOOLEAN','sequelize','exports'];(function(_0x5d43ec,_0x19a28a){var _0x54132b=function(_0x58c52a){while(--_0x58c52a){_0x5d43ec['push'](_0x5d43ec['shift']());}};_0x54132b(++_0x19a28a);}(_0xf741,0x1db));var _0x1f74=function(_0x5a9d75,_0xfde03b){_0x5a9d75=_0x5a9d75-0x0;var _0x2c7c82=_0xf741[_0x5a9d75];return _0x2c7c82;};'use strict';var Sequelize=require(_0x1f74('0x0'));module[_0x1f74('0x1')]={'type':{'type':Sequelize[_0x1f74('0x2')](_0x1f74('0x3'),_0x1f74('0x4'),'customVariable',_0x1f74('0x5'),'picklist'),'defaultValue':_0x1f74('0x3')},'content':{'type':Sequelize[_0x1f74('0x6')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x1f74('0x2')](_0x1f74('0x3'),_0x1f74('0x4'),_0x1f74('0x7'))},'keyContent':{'type':Sequelize[_0x1f74('0x6')]},'idField':{'type':Sequelize[_0x1f74('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x1f74('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x1f74('0x6')]}};
\ No newline at end of file
+var _0x3e88=['STRING','variable','BOOLEAN','sequelize','string','customVariable','keyValue','picklist'];(function(_0x5a7b40,_0x585230){var _0x463559=function(_0x280fe4){while(--_0x280fe4){_0x5a7b40['push'](_0x5a7b40['shift']());}};_0x463559(++_0x585230);}(_0x3e88,0xb3));var _0x83e8=function(_0x5eaa1f,_0xafbf6b){_0x5eaa1f=_0x5eaa1f-0x0;var _0x3f056d=_0x3e88[_0x5eaa1f];return _0x3f056d;};'use strict';var Sequelize=require(_0x83e8('0x0'));module['exports']={'type':{'type':Sequelize['ENUM'](_0x83e8('0x1'),'variable',_0x83e8('0x2'),_0x83e8('0x3'),_0x83e8('0x4')),'defaultValue':_0x83e8('0x1')},'content':{'type':Sequelize[_0x83e8('0x5')]},'key':{'type':Sequelize[_0x83e8('0x5')]},'keyType':{'type':Sequelize['ENUM'](_0x83e8('0x1'),_0x83e8('0x6'),_0x83e8('0x2'))},'keyContent':{'type':Sequelize[_0x83e8('0x5')]},'idField':{'type':Sequelize[_0x83e8('0x5')]},'nameField':{'type':Sequelize[_0x83e8('0x5')]},'customField':{'type':Sequelize[_0x83e8('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x83e8('0x5')]}};
\ No newline at end of file
index dcfaadd..e9d6fe7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60a9=['filters','attributes','intersection','fields','length','nolimit','sort','where','pick','merge','VIRTUAL','filter','options','ServicenowField','includeAll','include','catch','show','params','find','create','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','Content-Range','json','apply','reject','save','update','then','error','name','map','rawAttributes','fieldName','type','model','query','keys'];(function(_0x2b38c7,_0x23ada0){var _0x3d0ac0=function(_0x28b647){while(--_0x28b647){_0x2b38c7['push'](_0x2b38c7['shift']());}};_0x3d0ac0(++_0x23ada0);}(_0x60a9,0xe9));var _0x960a=function(_0x5f4272,_0x4ef5b7){_0x5f4272=_0x5f4272-0x0;var _0x11c8b3=_0x60a9[_0x5f4272];return _0x11c8b3;};'use strict';var emlformat=require(_0x960a('0x0'));var rimraf=require(_0x960a('0x1'));var zipdir=require(_0x960a('0x2'));var jsonpatch=require(_0x960a('0x3'));var rp=require(_0x960a('0x4'));var moment=require(_0x960a('0x5'));var BPromise=require(_0x960a('0x6'));var Mustache=require(_0x960a('0x7'));var util=require(_0x960a('0x8'));var path=require(_0x960a('0x9'));var sox=require(_0x960a('0xa'));var csv=require(_0x960a('0xb'));var ejs=require(_0x960a('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x960a('0xd'));var jsforce=require(_0x960a('0xe'));var deskjs=require(_0x960a('0xf'));var toCsv=require(_0x960a('0xb'));var querystring=require('querystring');var Papa=require(_0x960a('0x10'));var Redis=require('ioredis');var authService=require(_0x960a('0x11'));var qs=require(_0x960a('0x12'));var as=require(_0x960a('0x13'));var hardwareService=require(_0x960a('0x14'));var logger=require(_0x960a('0x15'))('api');var utils=require('../../config/utils');var config=require(_0x960a('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x960a('0x17'))['db'];function respondWithStatusCode(_0x5cce3b,_0xe4bf9b){_0xe4bf9b=_0xe4bf9b||0xcc;return function(_0x336a8d){if(_0x336a8d){return _0x5cce3b[_0x960a('0x18')](_0xe4bf9b);}return _0x5cce3b['status'](_0xe4bf9b)[_0x960a('0x19')]();};}function respondWithResult(_0x371a5b,_0x22c39c){_0x22c39c=_0x22c39c||0xc8;return function(_0x397259){if(_0x397259){return _0x371a5b[_0x960a('0x1a')](_0x22c39c)['json'](_0x397259);}};}function respondWithFilteredResult(_0x2eb00b,_0x2b514c){return function(_0x442b8a){if(_0x442b8a){var _0x467360=typeof _0x2b514c[_0x960a('0x1b')]===_0x960a('0x1c')&&typeof _0x2b514c[_0x960a('0x1d')]===_0x960a('0x1c');var _0x48fc62=_0x442b8a[_0x960a('0x1e')];var _0x5bfee5=_0x467360?0x0:_0x2b514c['offset'];var _0x5bc292=_0x467360?_0x442b8a['count']:_0x2b514c[_0x960a('0x1b')]+_0x2b514c['limit'];var _0x1dd65b;if(_0x5bc292>=_0x48fc62){_0x5bc292=_0x48fc62;_0x1dd65b=0xc8;}else{_0x1dd65b=0xce;}_0x2eb00b[_0x960a('0x1a')](_0x1dd65b);return _0x2eb00b['set'](_0x960a('0x1f'),_0x5bfee5+'-'+_0x5bc292+'/'+_0x48fc62)[_0x960a('0x20')](_0x442b8a);}return null;};}function patchUpdates(_0x9c4764){return function(_0x43150c){try{jsonpatch[_0x960a('0x21')](_0x43150c,_0x9c4764,!![]);}catch(_0x44332a){return BPromise[_0x960a('0x22')](_0x44332a);}return _0x43150c[_0x960a('0x23')]();};}function saveUpdates(_0x189469,_0x42855f){return function(_0x3098ab){if(_0x3098ab){return _0x3098ab[_0x960a('0x24')](_0x189469)[_0x960a('0x25')](function(_0x3f8d2c){return _0x3f8d2c;});}return null;};}function removeEntity(_0x2540c1,_0x47d780){return function(_0x11d77a){if(_0x11d77a){return _0x11d77a['destroy']()['then'](function(){_0x2540c1[_0x960a('0x1a')](0xcc)[_0x960a('0x19')]();});}};}function handleEntityNotFound(_0x1fa4c8,_0xe83d54){return function(_0x22878d){if(!_0x22878d){_0x1fa4c8['sendStatus'](0x194);}return _0x22878d;};}function handleError(_0x3133f7,_0x3bcb44){_0x3bcb44=_0x3bcb44||0x1f4;return function(_0x5bbdfa){logger[_0x960a('0x26')](_0x5bbdfa['stack']);if(_0x5bbdfa[_0x960a('0x27')]){delete _0x5bbdfa[_0x960a('0x27')];}_0x3133f7[_0x960a('0x1a')](_0x3bcb44)['send'](_0x5bbdfa);};}exports['index']=function(_0x14ed81,_0x370cab){var _0x324eb8={},_0x421b72={},_0xbe60d7={'count':0x0,'rows':[]};var _0x24cdfe=_[_0x960a('0x28')](db['ServicenowField'][_0x960a('0x29')],function(_0x254311){return{'name':_0x254311[_0x960a('0x2a')],'type':_0x254311[_0x960a('0x2b')]['key']};});_0x421b72[_0x960a('0x2c')]=_['map'](_0x24cdfe,_0x960a('0x27'));_0x421b72[_0x960a('0x2d')]=_[_0x960a('0x2e')](_0x14ed81['query']);_0x421b72[_0x960a('0x2f')]=_['intersection'](_0x421b72['model'],_0x421b72['query']);_0x324eb8[_0x960a('0x30')]=_[_0x960a('0x31')](_0x421b72[_0x960a('0x2c')],qs[_0x960a('0x32')](_0x14ed81[_0x960a('0x2d')]['fields']));_0x324eb8[_0x960a('0x30')]=_0x324eb8[_0x960a('0x30')][_0x960a('0x33')]?_0x324eb8['attributes']:_0x421b72[_0x960a('0x2c')];if(!_0x14ed81['query']['hasOwnProperty'](_0x960a('0x34'))){_0x324eb8['limit']=qs[_0x960a('0x1d')](_0x14ed81[_0x960a('0x2d')]['limit']);_0x324eb8[_0x960a('0x1b')]=qs[_0x960a('0x1b')](_0x14ed81[_0x960a('0x2d')][_0x960a('0x1b')]);}_0x324eb8['order']=qs[_0x960a('0x35')](_0x14ed81[_0x960a('0x2d')][_0x960a('0x35')]);_0x324eb8[_0x960a('0x36')]=qs[_0x960a('0x2f')](_[_0x960a('0x37')](_0x14ed81[_0x960a('0x2d')],_0x421b72[_0x960a('0x2f')]),_0x24cdfe);if(_0x14ed81[_0x960a('0x2d')]['filter']){_0x324eb8[_0x960a('0x36')]=_[_0x960a('0x38')](_0x324eb8[_0x960a('0x36')],{'$or':_['map'](_0x24cdfe,function(_0xcaafc7){if(_0xcaafc7[_0x960a('0x2b')]!==_0x960a('0x39')){var _0x27fb4a={};_0x27fb4a[_0xcaafc7[_0x960a('0x27')]]={'$like':'%'+_0x14ed81[_0x960a('0x2d')][_0x960a('0x3a')]+'%'};return _0x27fb4a;}})});}_0x324eb8=_[_0x960a('0x38')]({},_0x324eb8,_0x14ed81[_0x960a('0x3b')]);var _0x38f092={'where':_0x324eb8[_0x960a('0x36')]};return db[_0x960a('0x3c')][_0x960a('0x1e')](_0x38f092)[_0x960a('0x25')](function(_0x244d3d){_0xbe60d7[_0x960a('0x1e')]=_0x244d3d;if(_0x14ed81[_0x960a('0x2d')][_0x960a('0x3d')]){_0x324eb8[_0x960a('0x3e')]=[{'all':!![]}];}return db[_0x960a('0x3c')]['findAll'](_0x324eb8);})[_0x960a('0x25')](function(_0x25b746){_0xbe60d7['rows']=_0x25b746;return _0xbe60d7;})[_0x960a('0x25')](respondWithFilteredResult(_0x370cab,_0x324eb8))[_0x960a('0x3f')](handleError(_0x370cab,null));};exports[_0x960a('0x40')]=function(_0x2c9066,_0x53d56e){var _0x3ee630={'raw':!![],'where':{'id':_0x2c9066[_0x960a('0x41')]['id']}},_0x1bb1da={};_0x1bb1da[_0x960a('0x2c')]=_['keys'](db[_0x960a('0x3c')][_0x960a('0x29')]);_0x1bb1da['query']=_[_0x960a('0x2e')](_0x2c9066[_0x960a('0x2d')]);_0x1bb1da[_0x960a('0x2f')]=_[_0x960a('0x31')](_0x1bb1da[_0x960a('0x2c')],_0x1bb1da['query']);_0x3ee630[_0x960a('0x30')]=_['intersection'](_0x1bb1da['model'],qs[_0x960a('0x32')](_0x2c9066[_0x960a('0x2d')][_0x960a('0x32')]));_0x3ee630[_0x960a('0x30')]=_0x3ee630['attributes'][_0x960a('0x33')]?_0x3ee630[_0x960a('0x30')]:_0x1bb1da[_0x960a('0x2c')];if(_0x2c9066['query'][_0x960a('0x3d')]){_0x3ee630[_0x960a('0x3e')]=[{'all':!![]}];}_0x3ee630=_[_0x960a('0x38')]({},_0x3ee630,_0x2c9066[_0x960a('0x3b')]);return db[_0x960a('0x3c')][_0x960a('0x42')](_0x3ee630)[_0x960a('0x25')](handleEntityNotFound(_0x53d56e,null))['then'](respondWithResult(_0x53d56e,null))[_0x960a('0x3f')](handleError(_0x53d56e,null));};exports['create']=function(_0x361423,_0x480d07){return db[_0x960a('0x3c')][_0x960a('0x43')](_0x361423['body'],{})[_0x960a('0x25')](respondWithResult(_0x480d07,0xc9))[_0x960a('0x3f')](handleError(_0x480d07,null));};exports[_0x960a('0x24')]=function(_0x46c2c7,_0x2cf9c5){if(_0x46c2c7[_0x960a('0x44')]['id']){delete _0x46c2c7['body']['id'];}return db[_0x960a('0x3c')]['find']({'where':{'id':_0x46c2c7['params']['id']}})[_0x960a('0x25')](handleEntityNotFound(_0x2cf9c5,null))[_0x960a('0x25')](saveUpdates(_0x46c2c7[_0x960a('0x44')],null))[_0x960a('0x25')](respondWithResult(_0x2cf9c5,null))[_0x960a('0x3f')](handleError(_0x2cf9c5,null));};exports[_0x960a('0x45')]=function(_0x3e7b42,_0x5de99b){return db[_0x960a('0x3c')][_0x960a('0x42')]({'where':{'id':_0x3e7b42[_0x960a('0x41')]['id']}})[_0x960a('0x25')](handleEntityNotFound(_0x5de99b,null))['then'](removeEntity(_0x5de99b,null))[_0x960a('0x3f')](handleError(_0x5de99b,null));};
\ No newline at end of file
+var _0x4c88=['rows','catch','show','params','keys','rawAttributes','find','create','body','destroy','rimraf','fast-json-patch','request-promise','mustache','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','count','limit','set','apply','reject','save','update','error','stack','name','send','index','ServicenowField','fieldName','type','key','model','map','query','intersection','attributes','fields','length','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','then','includeAll','findAll'];(function(_0x32315f,_0x4bf79e){var _0x5f51fc=function(_0x39b7ce){while(--_0x39b7ce){_0x32315f['push'](_0x32315f['shift']());}};_0x5f51fc(++_0x4bf79e);}(_0x4c88,0x17c));var _0x84c8=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x4c88[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x84c8('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x84c8('0x1'));var rp=require(_0x84c8('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x84c8('0x3'));var util=require('util');var path=require(_0x84c8('0x4'));var sox=require('sox');var csv=require(_0x84c8('0x5'));var ejs=require(_0x84c8('0x6'));var fs=require('fs');var fs_extra=require(_0x84c8('0x7'));var _=require(_0x84c8('0x8'));var squel=require(_0x84c8('0x9'));var crypto=require(_0x84c8('0xa'));var jsforce=require(_0x84c8('0xb'));var deskjs=require(_0x84c8('0xc'));var toCsv=require(_0x84c8('0x5'));var querystring=require(_0x84c8('0xd'));var Papa=require(_0x84c8('0xe'));var Redis=require(_0x84c8('0xf'));var authService=require(_0x84c8('0x10'));var qs=require(_0x84c8('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x84c8('0x12'))(_0x84c8('0x13'));var utils=require(_0x84c8('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x84c8('0x15'));var db=require(_0x84c8('0x16'))['db'];function respondWithStatusCode(_0x365ed3,_0x18fcfb){_0x18fcfb=_0x18fcfb||0xcc;return function(_0x365f36){if(_0x365f36){return _0x365ed3[_0x84c8('0x17')](_0x18fcfb);}return _0x365ed3['status'](_0x18fcfb)[_0x84c8('0x18')]();};}function respondWithResult(_0x2e4e61,_0x139118){_0x139118=_0x139118||0xc8;return function(_0x126134){if(_0x126134){return _0x2e4e61[_0x84c8('0x19')](_0x139118)['json'](_0x126134);}};}function respondWithFilteredResult(_0x1c14c2,_0x52f163){return function(_0x735258){if(_0x735258){var _0x182ea8=typeof _0x52f163[_0x84c8('0x1a')]===_0x84c8('0x1b')&&typeof _0x52f163['limit']===_0x84c8('0x1b');var _0x154603=_0x735258['count'];var _0x4264d0=_0x182ea8?0x0:_0x52f163[_0x84c8('0x1a')];var _0x4e6ca5=_0x182ea8?_0x735258[_0x84c8('0x1c')]:_0x52f163[_0x84c8('0x1a')]+_0x52f163[_0x84c8('0x1d')];var _0x3d9939;if(_0x4e6ca5>=_0x154603){_0x4e6ca5=_0x154603;_0x3d9939=0xc8;}else{_0x3d9939=0xce;}_0x1c14c2[_0x84c8('0x19')](_0x3d9939);return _0x1c14c2[_0x84c8('0x1e')]('Content-Range',_0x4264d0+'-'+_0x4e6ca5+'/'+_0x154603)['json'](_0x735258);}return null;};}function patchUpdates(_0x220899){return function(_0x59ee70){try{jsonpatch[_0x84c8('0x1f')](_0x59ee70,_0x220899,!![]);}catch(_0x24b0aa){return BPromise[_0x84c8('0x20')](_0x24b0aa);}return _0x59ee70[_0x84c8('0x21')]();};}function saveUpdates(_0x5c7279,_0x519535){return function(_0x3ca3fc){if(_0x3ca3fc){return _0x3ca3fc[_0x84c8('0x22')](_0x5c7279)['then'](function(_0x47acc1){return _0x47acc1;});}return null;};}function removeEntity(_0x4987cc,_0x5956e2){return function(_0x4ad973){if(_0x4ad973){return _0x4ad973['destroy']()['then'](function(){_0x4987cc[_0x84c8('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5779fc,_0x492979){return function(_0x1c0043){if(!_0x1c0043){_0x5779fc['sendStatus'](0x194);}return _0x1c0043;};}function handleError(_0x3cdf75,_0xd029ad){_0xd029ad=_0xd029ad||0x1f4;return function(_0x532134){logger[_0x84c8('0x23')](_0x532134[_0x84c8('0x24')]);if(_0x532134['name']){delete _0x532134[_0x84c8('0x25')];}_0x3cdf75['status'](_0xd029ad)[_0x84c8('0x26')](_0x532134);};}exports[_0x84c8('0x27')]=function(_0x16c7f9,_0x7fe072){var _0x2c8fe2={},_0x58de3e={},_0x2563f2={'count':0x0,'rows':[]};var _0x58a30f=_['map'](db[_0x84c8('0x28')]['rawAttributes'],function(_0x31f4fc){return{'name':_0x31f4fc[_0x84c8('0x29')],'type':_0x31f4fc[_0x84c8('0x2a')][_0x84c8('0x2b')]};});_0x58de3e[_0x84c8('0x2c')]=_[_0x84c8('0x2d')](_0x58a30f,_0x84c8('0x25'));_0x58de3e[_0x84c8('0x2e')]=_['keys'](_0x16c7f9['query']);_0x58de3e['filters']=_[_0x84c8('0x2f')](_0x58de3e[_0x84c8('0x2c')],_0x58de3e['query']);_0x2c8fe2[_0x84c8('0x30')]=_[_0x84c8('0x2f')](_0x58de3e[_0x84c8('0x2c')],qs[_0x84c8('0x31')](_0x16c7f9[_0x84c8('0x2e')][_0x84c8('0x31')]));_0x2c8fe2[_0x84c8('0x30')]=_0x2c8fe2[_0x84c8('0x30')][_0x84c8('0x32')]?_0x2c8fe2[_0x84c8('0x30')]:_0x58de3e[_0x84c8('0x2c')];if(!_0x16c7f9[_0x84c8('0x2e')]['hasOwnProperty'](_0x84c8('0x33'))){_0x2c8fe2[_0x84c8('0x1d')]=qs[_0x84c8('0x1d')](_0x16c7f9[_0x84c8('0x2e')][_0x84c8('0x1d')]);_0x2c8fe2[_0x84c8('0x1a')]=qs[_0x84c8('0x1a')](_0x16c7f9[_0x84c8('0x2e')][_0x84c8('0x1a')]);}_0x2c8fe2[_0x84c8('0x34')]=qs['sort'](_0x16c7f9[_0x84c8('0x2e')][_0x84c8('0x35')]);_0x2c8fe2[_0x84c8('0x36')]=qs[_0x84c8('0x37')](_[_0x84c8('0x38')](_0x16c7f9[_0x84c8('0x2e')],_0x58de3e[_0x84c8('0x37')]),_0x58a30f);if(_0x16c7f9[_0x84c8('0x2e')][_0x84c8('0x39')]){_0x2c8fe2[_0x84c8('0x36')]=_[_0x84c8('0x3a')](_0x2c8fe2[_0x84c8('0x36')],{'$or':_[_0x84c8('0x2d')](_0x58a30f,function(_0x3e753f){if(_0x3e753f[_0x84c8('0x2a')]!==_0x84c8('0x3b')){var _0x2438d4={};_0x2438d4[_0x3e753f[_0x84c8('0x25')]]={'$like':'%'+_0x16c7f9[_0x84c8('0x2e')][_0x84c8('0x39')]+'%'};return _0x2438d4;}})});}_0x2c8fe2=_[_0x84c8('0x3a')]({},_0x2c8fe2,_0x16c7f9[_0x84c8('0x3c')]);var _0x2b945f={'where':_0x2c8fe2[_0x84c8('0x36')]};return db[_0x84c8('0x28')]['count'](_0x2b945f)[_0x84c8('0x3d')](function(_0x521e67){_0x2563f2[_0x84c8('0x1c')]=_0x521e67;if(_0x16c7f9['query'][_0x84c8('0x3e')]){_0x2c8fe2['include']=[{'all':!![]}];}return db['ServicenowField'][_0x84c8('0x3f')](_0x2c8fe2);})[_0x84c8('0x3d')](function(_0x1c8826){_0x2563f2[_0x84c8('0x40')]=_0x1c8826;return _0x2563f2;})[_0x84c8('0x3d')](respondWithFilteredResult(_0x7fe072,_0x2c8fe2))[_0x84c8('0x41')](handleError(_0x7fe072,null));};exports[_0x84c8('0x42')]=function(_0x11281a,_0x4046f9){var _0x3eb6e9={'raw':!![],'where':{'id':_0x11281a[_0x84c8('0x43')]['id']}},_0x555eec={};_0x555eec[_0x84c8('0x2c')]=_[_0x84c8('0x44')](db[_0x84c8('0x28')][_0x84c8('0x45')]);_0x555eec[_0x84c8('0x2e')]=_['keys'](_0x11281a[_0x84c8('0x2e')]);_0x555eec[_0x84c8('0x37')]=_['intersection'](_0x555eec['model'],_0x555eec[_0x84c8('0x2e')]);_0x3eb6e9[_0x84c8('0x30')]=_[_0x84c8('0x2f')](_0x555eec[_0x84c8('0x2c')],qs[_0x84c8('0x31')](_0x11281a[_0x84c8('0x2e')][_0x84c8('0x31')]));_0x3eb6e9[_0x84c8('0x30')]=_0x3eb6e9[_0x84c8('0x30')][_0x84c8('0x32')]?_0x3eb6e9[_0x84c8('0x30')]:_0x555eec['model'];if(_0x11281a['query'][_0x84c8('0x3e')]){_0x3eb6e9['include']=[{'all':!![]}];}_0x3eb6e9=_[_0x84c8('0x3a')]({},_0x3eb6e9,_0x11281a[_0x84c8('0x3c')]);return db[_0x84c8('0x28')][_0x84c8('0x46')](_0x3eb6e9)[_0x84c8('0x3d')](handleEntityNotFound(_0x4046f9,null))[_0x84c8('0x3d')](respondWithResult(_0x4046f9,null))[_0x84c8('0x41')](handleError(_0x4046f9,null));};exports['create']=function(_0x427f95,_0xf981a4){return db[_0x84c8('0x28')][_0x84c8('0x47')](_0x427f95[_0x84c8('0x48')],{})[_0x84c8('0x3d')](respondWithResult(_0xf981a4,0xc9))['catch'](handleError(_0xf981a4,null));};exports[_0x84c8('0x22')]=function(_0x454a65,_0xd2fc33){if(_0x454a65['body']['id']){delete _0x454a65[_0x84c8('0x48')]['id'];}return db['ServicenowField']['find']({'where':{'id':_0x454a65[_0x84c8('0x43')]['id']}})[_0x84c8('0x3d')](handleEntityNotFound(_0xd2fc33,null))[_0x84c8('0x3d')](saveUpdates(_0x454a65['body'],null))[_0x84c8('0x3d')](respondWithResult(_0xd2fc33,null))[_0x84c8('0x41')](handleError(_0xd2fc33,null));};exports[_0x84c8('0x49')]=function(_0xe7529f,_0x28221b){return db[_0x84c8('0x28')][_0x84c8('0x46')]({'where':{'id':_0xe7529f[_0x84c8('0x43')]['id']}})[_0x84c8('0x3d')](handleEntityNotFound(_0x28221b,null))[_0x84c8('0x3d')](removeEntity(_0x28221b,null))['catch'](handleError(_0x28221b,null));};
\ No newline at end of file
index 601c7a5..d599f0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8806=['ServicenowField','int_servicenow_fields','idField','FieldId','lodash','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./intServicenowField.attributes','define'];(function(_0x1855eb,_0x30861d){var _0x2fa479=function(_0x358c64){while(--_0x358c64){_0x1855eb['push'](_0x1855eb['shift']());}};_0x2fa479(++_0x30861d);}(_0x8806,0x163));var _0x6880=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x8806[_0x4565bf];return _0x5610ba;};'use strict';var _=require(_0x6880('0x0'));var util=require('util');var logger=require(_0x6880('0x1'))(_0x6880('0x2'));var moment=require(_0x6880('0x3'));var BPromise=require(_0x6880('0x4'));var rp=require(_0x6880('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x6880('0x6'));var attributes=require(_0x6880('0x7'));module['exports']=function(_0x4a5343,_0x128a31){return _0x4a5343[_0x6880('0x8')](_0x6880('0x9'),attributes,{'tableName':_0x6880('0xa'),'paranoid':![],'indexes':[{'name':'servicenow_unique_index','fields':[_0x6880('0xb'),_0x6880('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xcc4b=['ServicenowField','int_servicenow_fields','servicenow_unique_index','FieldId','lodash','util','../../config/logger','api','request-promise','path','rimraf','./intServicenowField.attributes','define'];(function(_0x3c23e4,_0x1ea25d){var _0x2f4546=function(_0x1d9e65){while(--_0x1d9e65){_0x3c23e4['push'](_0x3c23e4['shift']());}};_0x2f4546(++_0x1ea25d);}(_0xcc4b,0x149));var _0xbcc4=function(_0x2ea4c4,_0x1fe353){_0x2ea4c4=_0x2ea4c4-0x0;var _0x34fcb0=_0xcc4b[_0x2ea4c4];return _0x34fcb0;};'use strict';var _=require(_0xbcc4('0x0'));var util=require(_0xbcc4('0x1'));var logger=require(_0xbcc4('0x2'))(_0xbcc4('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xbcc4('0x4'));var fs=require('fs');var path=require(_0xbcc4('0x5'));var rimraf=require(_0xbcc4('0x6'));var config=require('../../config/environment');var attributes=require(_0xbcc4('0x7'));module['exports']=function(_0x237c05,_0x994929){return _0x237c05[_0xbcc4('0x8')](_0xbcc4('0x9'),attributes,{'tableName':_0xbcc4('0xa'),'paranoid':![],'indexes':[{'name':_0xbcc4('0xb'),'fields':['idField',_0xbcc4('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 304135e..7ac6966 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4eb=['ServicenowField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','lodash','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x14f457,_0x540565){var _0x51056d=function(_0x906c18){while(--_0x906c18){_0x14f457['push'](_0x14f457['shift']());}};_0x51056d(++_0x540565);}(_0xf4eb,0xec));var _0xbf4e=function(_0x300820,_0x3214f0){_0x300820=_0x300820-0x0;var _0xae9fa5=_0xf4eb[_0x300820];return _0xae9fa5;};'use strict';var _=require(_0xbf4e('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbf4e('0x1'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xbf4e('0x2'))(_0xbf4e('0x3'));var config=require(_0xbf4e('0x4'));var jayson=require(_0xbf4e('0x5'));var client=jayson[_0xbf4e('0x6')][_0xbf4e('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x15b99f,_0x540736,_0x449d55){return new BPromise(function(_0x5013c2,_0x5e23d4){return client[_0xbf4e('0x8')](_0x15b99f,_0x449d55)[_0xbf4e('0x9')](function(_0xcc4097){logger[_0xbf4e('0xa')](_0xbf4e('0xb'),_0x540736,_0xbf4e('0xc'));logger[_0xbf4e('0xd')]('ServicenowField,\x20%s,\x20%s,\x20%s',_0x540736,'request\x20sent',JSON[_0xbf4e('0xe')](_0xcc4097));if(_0xcc4097['error']){if(_0xcc4097[_0xbf4e('0xf')][_0xbf4e('0x10')]===0x1f4){logger['error'](_0xbf4e('0xb'),_0x540736,_0xcc4097['error']['message']);return _0x5e23d4(_0xcc4097[_0xbf4e('0xf')][_0xbf4e('0x11')]);}logger[_0xbf4e('0xf')](_0xbf4e('0xb'),_0x540736,_0xcc4097[_0xbf4e('0xf')][_0xbf4e('0x11')]);return _0x5013c2(_0xcc4097['error']['message']);}else{logger[_0xbf4e('0xa')](_0xbf4e('0xb'),_0x540736,_0xbf4e('0xc'));_0x5013c2(_0xcc4097['result'][_0xbf4e('0x11')]);}})[_0xbf4e('0x12')](function(_0x912fc0){logger[_0xbf4e('0xf')]('ServicenowField,\x20%s,\x20%s',_0x540736,_0x912fc0);_0x5e23d4(_0x912fc0);});});}
\ No newline at end of file
+var _0xf4eb=['ServicenowField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','lodash','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x4b4c68,_0x14d416){var _0x1686e6=function(_0x56ab6c){while(--_0x56ab6c){_0x4b4c68['push'](_0x4b4c68['shift']());}};_0x1686e6(++_0x14d416);}(_0xf4eb,0xec));var _0xbf4e=function(_0x344838,_0x1bf512){_0x344838=_0x344838-0x0;var _0x21a472=_0xf4eb[_0x344838];return _0x21a472;};'use strict';var _=require(_0xbf4e('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbf4e('0x1'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xbf4e('0x2'))(_0xbf4e('0x3'));var config=require(_0xbf4e('0x4'));var jayson=require(_0xbf4e('0x5'));var client=jayson[_0xbf4e('0x6')][_0xbf4e('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x15b99f,_0x540736,_0x449d55){return new BPromise(function(_0x5013c2,_0x5e23d4){return client[_0xbf4e('0x8')](_0x15b99f,_0x449d55)[_0xbf4e('0x9')](function(_0xcc4097){logger[_0xbf4e('0xa')](_0xbf4e('0xb'),_0x540736,_0xbf4e('0xc'));logger[_0xbf4e('0xd')]('ServicenowField,\x20%s,\x20%s,\x20%s',_0x540736,'request\x20sent',JSON[_0xbf4e('0xe')](_0xcc4097));if(_0xcc4097['error']){if(_0xcc4097[_0xbf4e('0xf')][_0xbf4e('0x10')]===0x1f4){logger['error'](_0xbf4e('0xb'),_0x540736,_0xcc4097['error']['message']);return _0x5e23d4(_0xcc4097[_0xbf4e('0xf')][_0xbf4e('0x11')]);}logger[_0xbf4e('0xf')](_0xbf4e('0xb'),_0x540736,_0xcc4097[_0xbf4e('0xf')][_0xbf4e('0x11')]);return _0x5013c2(_0xcc4097['error']['message']);}else{logger[_0xbf4e('0xa')](_0xbf4e('0xb'),_0x540736,_0xbf4e('0xc'));_0x5013c2(_0xcc4097['result'][_0xbf4e('0x11')]);}})[_0xbf4e('0x12')](function(_0x912fc0){logger[_0xbf4e('0xf')]('ServicenowField,\x20%s,\x20%s',_0x540736,_0x912fc0);_0x5e23d4(_0x912fc0);});});}
\ No newline at end of file
index d850302..4e43924 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSugarcrmAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x5225fa,_0xb63d7e){var _0xd1c89=function(_0x59d090){while(--_0x59d090){_0x5225fa['push'](_0x5225fa['shift']());}};_0xd1c89(++_0xb63d7e);}(_0x9957,0x93));var _0x7995=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x9957[_0x5b644e];return _0x49c6bf;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
+var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSugarcrmAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0xa6e2f,_0x591aa3){var _0x19b869=function(_0x5183f5){while(--_0x5183f5){_0xa6e2f['push'](_0xa6e2f['shift']());}};_0x19b869(++_0x591aa3);}(_0x9957,0x93));var _0x7995=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x9957[_0xbca1b1];return _0x4e1686;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
index 6548936..797b20e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['remoteUri','sequelize','exports','STRING','username'];(function(_0x105f98,_0x4d97e0){var _0x519d7e=function(_0x36d970){while(--_0x36d970){_0x105f98['push'](_0x105f98['shift']());}};_0x519d7e(++_0x4d97e0);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0xa9e0[_0x2b4411];return _0x8e41ef;};'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(_0x279fa9,_0x2b36ce){var _0x1f4294=function(_0x288649){while(--_0x288649){_0x279fa9['push'](_0x279fa9['shift']());}};_0x1f4294(++_0x2b36ce);}(_0xa9e0,0x123));var _0x0a9e=function(_0x43d11d,_0xccff91){_0x43d11d=_0x43d11d-0x0;var _0x38cd08=_0xa9e0[_0x43d11d];return _0x38cd08;};'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 7395f98..4c89f24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x151c=['squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','error','stack','name','send','index','map','SugarcrmAccount','fieldName','type','key','model','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','include','findAll','catch','params','rawAttributes','keys','length','includeAll','find','create','body','getConfigurations','findOne','SugarcrmConfiguration','addConfiguration','AccountId','getSubjects','channel','Descriptions','getDescriptions','Subjects','SugarcrmField','getFields','created_by','date_start','duration_hours','duration_minutes','parent_id','parent_type','parent_name','direction','password','remoteUri','slice','substring','POST','format','/service/v4_1/rest.php','JSON','stringify','username','xCALLY\x20Motion\x20Integration','Invalid\x20Login','Password\x20Expired','get_module_fields','Calls','values','module_fields','remove','includes','label','endsWith','value','test','Wrong\x20credentials','statusCode','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','sox','to-csv','fs-extra'];(function(_0x2f763c,_0x325792){var _0x58dc47=function(_0x2a1b66){while(--_0x2a1b66){_0x2f763c['push'](_0x2f763c['shift']());}};_0x58dc47(++_0x325792);}(_0x151c,0x6e));var _0xc151=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x151c[_0x2dafbe];return _0x58a45a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc151('0x0'));var zipdir=require(_0xc151('0x1'));var jsonpatch=require(_0xc151('0x2'));var rp=require('request-promise');var moment=require(_0xc151('0x3'));var BPromise=require(_0xc151('0x4'));var Mustache=require(_0xc151('0x5'));var util=require('util');var path=require('path');var sox=require(_0xc151('0x6'));var csv=require(_0xc151('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc151('0x8'));var _=require('lodash');var squel=require(_0xc151('0x9'));var crypto=require(_0xc151('0xa'));var jsforce=require(_0xc151('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xc151('0xc'));var Redis=require(_0xc151('0xd'));var authService=require(_0xc151('0xe'));var qs=require(_0xc151('0xf'));var as=require(_0xc151('0x10'));var hardwareService=require(_0xc151('0x11'));var logger=require('../../config/logger')(_0xc151('0x12'));var utils=require(_0xc151('0x13'));var config=require(_0xc151('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xc151('0x15'))['db'];var integrations=require(_0xc151('0x16'));function respondWithStatusCode(_0x1bc3e6,_0x47fddf){_0x47fddf=_0x47fddf||0xcc;return function(_0x540a5d){if(_0x540a5d){return _0x1bc3e6[_0xc151('0x17')](_0x47fddf);}return _0x1bc3e6[_0xc151('0x18')](_0x47fddf)[_0xc151('0x19')]();};}function respondWithResult(_0x275260,_0x59f9ea){_0x59f9ea=_0x59f9ea||0xc8;return function(_0x4bf5b5){if(_0x4bf5b5){return _0x275260[_0xc151('0x18')](_0x59f9ea)[_0xc151('0x1a')](_0x4bf5b5);}};}function respondWithFilteredResult(_0x128334,_0xda4de5){return function(_0x462734){if(_0x462734){var _0x4e3b03=typeof _0xda4de5[_0xc151('0x1b')]===_0xc151('0x1c')&&typeof _0xda4de5[_0xc151('0x1d')]===_0xc151('0x1c');var _0x186756=_0x462734[_0xc151('0x1e')];var _0x14111a=_0x4e3b03?0x0:_0xda4de5[_0xc151('0x1b')];var _0x38ade4=_0x4e3b03?_0x462734[_0xc151('0x1e')]:_0xda4de5[_0xc151('0x1b')]+_0xda4de5[_0xc151('0x1d')];var _0x530b20;if(_0x38ade4>=_0x186756){_0x38ade4=_0x186756;_0x530b20=0xc8;}else{_0x530b20=0xce;}_0x128334[_0xc151('0x18')](_0x530b20);return _0x128334[_0xc151('0x1f')](_0xc151('0x20'),_0x14111a+'-'+_0x38ade4+'/'+_0x186756)['json'](_0x462734);}return null;};}function patchUpdates(_0x4a3916){return function(_0x35e937){try{jsonpatch[_0xc151('0x21')](_0x35e937,_0x4a3916,!![]);}catch(_0x10f337){return BPromise['reject'](_0x10f337);}return _0x35e937[_0xc151('0x22')]();};}function saveUpdates(_0x511649,_0x4b07bf){return function(_0x34cf87){if(_0x34cf87){return _0x34cf87[_0xc151('0x23')](_0x511649)[_0xc151('0x24')](function(_0x5dd63f){return _0x5dd63f;});}return null;};}function removeEntity(_0x5d9109,_0x397e2c){return function(_0x560e9a){if(_0x560e9a){return _0x560e9a[_0xc151('0x25')]()[_0xc151('0x24')](function(){_0x5d9109['status'](0xcc)[_0xc151('0x19')]();});}};}function handleEntityNotFound(_0x1d773e,_0x1e1039){return function(_0x463304){if(!_0x463304){_0x1d773e[_0xc151('0x17')](0x194);}return _0x463304;};}function handleError(_0x3121d6,_0x353ac4){_0x353ac4=_0x353ac4||0x1f4;return function(_0x3572f2){logger[_0xc151('0x26')](_0x3572f2[_0xc151('0x27')]);if(_0x3572f2[_0xc151('0x28')]){delete _0x3572f2[_0xc151('0x28')];}_0x3121d6['status'](_0x353ac4)[_0xc151('0x29')](_0x3572f2);};}exports[_0xc151('0x2a')]=function(_0x4433c4,_0x4295c6){var _0x51bfda={},_0x226843={},_0x5f0ed5={'count':0x0,'rows':[]};var _0x429e07=_[_0xc151('0x2b')](db[_0xc151('0x2c')]['rawAttributes'],function(_0x2e28cf){return{'name':_0x2e28cf[_0xc151('0x2d')],'type':_0x2e28cf[_0xc151('0x2e')][_0xc151('0x2f')]};});_0x226843[_0xc151('0x30')]=_['map'](_0x429e07,'name');_0x226843['query']=_['keys'](_0x4433c4[_0xc151('0x31')]);_0x226843[_0xc151('0x32')]=_['intersection'](_0x226843[_0xc151('0x30')],_0x226843[_0xc151('0x31')]);_0x51bfda['attributes']=_[_0xc151('0x33')](_0x226843[_0xc151('0x30')],qs[_0xc151('0x34')](_0x4433c4[_0xc151('0x31')][_0xc151('0x34')]));_0x51bfda[_0xc151('0x35')]=_0x51bfda[_0xc151('0x35')]['length']?_0x51bfda[_0xc151('0x35')]:_0x226843[_0xc151('0x30')];if(!_0x4433c4[_0xc151('0x31')][_0xc151('0x36')](_0xc151('0x37'))){_0x51bfda['limit']=qs[_0xc151('0x1d')](_0x4433c4[_0xc151('0x31')][_0xc151('0x1d')]);_0x51bfda[_0xc151('0x1b')]=qs['offset'](_0x4433c4[_0xc151('0x31')][_0xc151('0x1b')]);}_0x51bfda[_0xc151('0x38')]=qs[_0xc151('0x39')](_0x4433c4[_0xc151('0x31')][_0xc151('0x39')]);_0x51bfda[_0xc151('0x3a')]=qs[_0xc151('0x32')](_[_0xc151('0x3b')](_0x4433c4['query'],_0x226843[_0xc151('0x32')]),_0x429e07);if(_0x4433c4[_0xc151('0x31')][_0xc151('0x3c')]){_0x51bfda[_0xc151('0x3a')]=_[_0xc151('0x3d')](_0x51bfda['where'],{'$or':_['map'](_0x429e07,function(_0xe9487d){if(_0xe9487d[_0xc151('0x2e')]!=='VIRTUAL'){var _0x2aa217={};_0x2aa217[_0xe9487d[_0xc151('0x28')]]={'$like':'%'+_0x4433c4[_0xc151('0x31')][_0xc151('0x3c')]+'%'};return _0x2aa217;}})});}_0x51bfda=_[_0xc151('0x3d')]({},_0x51bfda,_0x4433c4[_0xc151('0x3e')]);var _0x843b1b={'where':_0x51bfda[_0xc151('0x3a')]};return db[_0xc151('0x2c')]['count'](_0x843b1b)[_0xc151('0x24')](function(_0xf15263){_0x5f0ed5[_0xc151('0x1e')]=_0xf15263;if(_0x4433c4[_0xc151('0x31')]['includeAll']){_0x51bfda[_0xc151('0x3f')]=[{'all':!![]}];}return db[_0xc151('0x2c')][_0xc151('0x40')](_0x51bfda);})[_0xc151('0x24')](function(_0x18e109){_0x5f0ed5['rows']=_0x18e109;return _0x5f0ed5;})['then'](respondWithFilteredResult(_0x4295c6,_0x51bfda))[_0xc151('0x41')](handleError(_0x4295c6,null));};exports['show']=function(_0x4b6c2b,_0x50e89c){var _0x2f961c={'raw':![],'where':{'id':_0x4b6c2b[_0xc151('0x42')]['id']}},_0x3e915e={};_0x3e915e[_0xc151('0x30')]=_['keys'](db[_0xc151('0x2c')][_0xc151('0x43')]);_0x3e915e[_0xc151('0x31')]=_[_0xc151('0x44')](_0x4b6c2b[_0xc151('0x31')]);_0x3e915e[_0xc151('0x32')]=_[_0xc151('0x33')](_0x3e915e['model'],_0x3e915e['query']);_0x2f961c[_0xc151('0x35')]=_['intersection'](_0x3e915e[_0xc151('0x30')],qs[_0xc151('0x34')](_0x4b6c2b['query'][_0xc151('0x34')]));_0x2f961c[_0xc151('0x35')]=_0x2f961c['attributes'][_0xc151('0x45')]?_0x2f961c[_0xc151('0x35')]:_0x3e915e[_0xc151('0x30')];if(_0x4b6c2b['query'][_0xc151('0x46')]){_0x2f961c[_0xc151('0x3f')]=[{'all':!![]}];}_0x2f961c=_[_0xc151('0x3d')]({},_0x2f961c,_0x4b6c2b[_0xc151('0x3e')]);return db[_0xc151('0x2c')][_0xc151('0x47')](_0x2f961c)[_0xc151('0x24')](handleEntityNotFound(_0x50e89c,null))[_0xc151('0x24')](respondWithResult(_0x50e89c,null))['catch'](handleError(_0x50e89c,null));};exports[_0xc151('0x48')]=function(_0x4ef5c6,_0x4fea63){return db[_0xc151('0x2c')][_0xc151('0x48')](_0x4ef5c6[_0xc151('0x49')],{})[_0xc151('0x24')](respondWithResult(_0x4fea63,0xc9))[_0xc151('0x41')](handleError(_0x4fea63,null));};exports[_0xc151('0x23')]=function(_0x519602,_0x30dbae){if(_0x519602[_0xc151('0x49')]['id']){delete _0x519602[_0xc151('0x49')]['id'];}return db[_0xc151('0x2c')][_0xc151('0x47')]({'where':{'id':_0x519602[_0xc151('0x42')]['id']}})[_0xc151('0x24')](handleEntityNotFound(_0x30dbae,null))[_0xc151('0x24')](saveUpdates(_0x519602['body'],null))[_0xc151('0x24')](respondWithResult(_0x30dbae,null))[_0xc151('0x41')](handleError(_0x30dbae,null));};exports[_0xc151('0x25')]=function(_0x444c8c,_0x2b69b9){return db[_0xc151('0x2c')][_0xc151('0x47')]({'where':{'id':_0x444c8c[_0xc151('0x42')]['id']}})[_0xc151('0x24')](handleEntityNotFound(_0x2b69b9,null))[_0xc151('0x24')](removeEntity(_0x2b69b9,null))[_0xc151('0x41')](handleError(_0x2b69b9,null));};exports[_0xc151('0x4a')]=function(_0x4e2072,_0x166488,_0x9f23f7){var _0xa1a956={};var _0x3156eb={};var _0x2bb49e;var _0x37a681;return db['SugarcrmAccount'][_0xc151('0x4b')]({'where':{'id':_0x4e2072[_0xc151('0x42')]['id']}})[_0xc151('0x24')](handleEntityNotFound(_0x166488,null))[_0xc151('0x24')](function(_0x1a2e63){if(_0x1a2e63){_0x2bb49e=_0x1a2e63;_0x3156eb[_0xc151('0x30')]=_['keys'](db[_0xc151('0x4c')][_0xc151('0x43')]);_0x3156eb[_0xc151('0x31')]=_['keys'](_0x4e2072[_0xc151('0x31')]);_0x3156eb[_0xc151('0x32')]=_['intersection'](_0x3156eb['model'],_0x3156eb[_0xc151('0x31')]);_0xa1a956[_0xc151('0x35')]=_['intersection'](_0x3156eb[_0xc151('0x30')],qs[_0xc151('0x34')](_0x4e2072[_0xc151('0x31')][_0xc151('0x34')]));_0xa1a956[_0xc151('0x35')]=_0xa1a956['attributes']['length']?_0xa1a956[_0xc151('0x35')]:_0x3156eb['model'];_0xa1a956[_0xc151('0x38')]=qs['sort'](_0x4e2072['query'][_0xc151('0x39')]);_0xa1a956[_0xc151('0x3a')]=qs[_0xc151('0x32')](_['pick'](_0x4e2072[_0xc151('0x31')],_0x3156eb[_0xc151('0x32')]));if(_0x4e2072['query'][_0xc151('0x3c')]){_0xa1a956['where']=_[_0xc151('0x3d')](_0xa1a956[_0xc151('0x3a')],{'$or':_['map'](_0xa1a956[_0xc151('0x35')],function(_0x4649cc){var _0x5760b9={};_0x5760b9[_0x4649cc]={'$like':'%'+_0x4e2072[_0xc151('0x31')]['filter']+'%'};return _0x5760b9;})});}_0xa1a956=_[_0xc151('0x3d')]({},_0xa1a956,_0x4e2072[_0xc151('0x3e')]);return _0x2bb49e['getConfigurations'](_0xa1a956);}})[_0xc151('0x24')](function(_0x3486eb){if(_0x3486eb){_0x37a681=_0x3486eb['length'];if(!_0x4e2072[_0xc151('0x31')][_0xc151('0x36')](_0xc151('0x37'))){_0xa1a956[_0xc151('0x1d')]=qs[_0xc151('0x1d')](_0x4e2072[_0xc151('0x31')]['limit']);_0xa1a956[_0xc151('0x1b')]=qs[_0xc151('0x1b')](_0x4e2072['query'][_0xc151('0x1b')]);}return _0x2bb49e[_0xc151('0x4a')](_0xa1a956);}})[_0xc151('0x24')](function(_0x55f05c){if(_0x55f05c){return _0x55f05c?{'count':_0x37a681,'rows':_0x55f05c}:null;}})[_0xc151('0x24')](respondWithResult(_0x166488,null))[_0xc151('0x41')](handleError(_0x166488,null));};exports[_0xc151('0x4d')]=function(_0x11319c,_0x4a37d7,_0x2ec995){if(_0x11319c[_0xc151('0x49')]['id']){delete _0x11319c[_0xc151('0x49')]['id'];}return db[_0xc151('0x2c')][_0xc151('0x4b')]({'where':{'id':_0x11319c[_0xc151('0x42')]['id']}})[_0xc151('0x24')](handleEntityNotFound(_0x4a37d7,null))[_0xc151('0x24')](function(_0x2fc3bd){if(_0x2fc3bd){_0x11319c[_0xc151('0x49')][_0xc151('0x4e')]=_0x2fc3bd['id'];_0x11319c[_0xc151('0x49')]['Subjects']=integrations[_0xc151('0x4f')](_0x11319c['body'][_0xc151('0x50')],_0x11319c['body']['type']);_0x11319c[_0xc151('0x49')][_0xc151('0x51')]=integrations[_0xc151('0x52')](_0x11319c[_0xc151('0x49')]['channel'],_0x11319c[_0xc151('0x49')][_0xc151('0x2e')]);return db[_0xc151('0x4c')][_0xc151('0x48')](_0x11319c[_0xc151('0x49')],{'include':[{'model':db['SugarcrmField'],'as':_0xc151('0x53')},{'model':db[_0xc151('0x54')],'as':_0xc151('0x51')}]});}return null;})['then'](respondWithResult(_0x4a37d7,null))[_0xc151('0x41')](handleError(_0x4a37d7,null));};exports[_0xc151('0x55')]=function(_0x18250c,_0xae9ae5,_0x4d6b82){var _0x49f1dc='';var _0x21fdf6=['id',_0xc151('0x28'),'assigned_user_id',_0xc151('0x56'),'description',_0xc151('0x57'),_0xc151('0x58'),_0xc151('0x59'),_0xc151('0x5a'),_0xc151('0x5b'),_0xc151('0x5c'),_0xc151('0x5d')];return db[_0xc151('0x2c')][_0xc151('0x4b')]({'where':{'id':_0x18250c['params']['id']},'attributes':['id','username',_0xc151('0x5e'),_0xc151('0x5f')]})['then'](handleEntityNotFound(_0xae9ae5,null))[_0xc151('0x24')](function(_0x247073){if(_0x247073){_0x49f1dc=_0x247073[_0xc151('0x5f')];var _0x548317=_0x49f1dc[_0xc151('0x60')](-0x1);if(_0x548317==='/'){_0x49f1dc=_0x49f1dc[_0xc151('0x61')](0x0,_0x49f1dc['lastIndexOf'](_0x548317));}return rp({'method':_0xc151('0x62'),'uri':util[_0xc151('0x63')]('%s%s',_0x49f1dc,_0xc151('0x64')),'json':!![],'form':{'method':'login','input_type':'JSON','response_type':_0xc151('0x65'),'rest_data':JSON[_0xc151('0x66')]({'user_auth':{'user_name':_0x247073[_0xc151('0x67')],'password':_0x247073[_0xc151('0x5e')],'encryption':'PLAIN'},'application':_0xc151('0x68')})}});}})[_0xc151('0x24')](function(_0x242a9d){if(_0x242a9d&&_0x242a9d[_0xc151('0x28')]!==_0xc151('0x69')&&_0x242a9d[_0xc151('0x28')]!==_0xc151('0x6a')){return rp({'method':_0xc151('0x62'),'uri':util[_0xc151('0x63')]('%s%s',_0x49f1dc,_0xc151('0x64')),'json':!![],'form':{'method':_0xc151('0x6b'),'input_type':_0xc151('0x65'),'response_type':_0xc151('0x65'),'rest_data':JSON[_0xc151('0x66')]({'session':_0x242a9d['id'],'module_name':_0xc151('0x6c')})}})[_0xc151('0x24')](function(_0x49703c){if(_0x49703c){var _0x113451=_[_0xc151('0x6d')](_0x49703c[_0xc151('0x6e')]);_[_0xc151('0x6f')](_0x113451,function(_0x572419){return _0x21fdf6[_0xc151('0x70')](_0x572419['name']);});return{'count':_0x113451[_0xc151('0x45')],'rows':_['map'](_0x113451,function(_0x56a75e){return{'id':_0x56a75e[_0xc151('0x28')],'name':_0x56a75e[_0xc151('0x71')],'custom':_[_0xc151('0x72')](_0x56a75e[_0xc151('0x28')],'_c')?!![]:![],'options':_0x56a75e['options']?_[_0xc151('0x2b')](_[_0xc151('0x6d')](_0x56a75e['options']),function(_0x4f237f){return{'name':_0x4f237f[_0xc151('0x73')],'value':_0x4f237f[_0xc151('0x28')]};}):[]};})};}})[_0xc151('0x24')](respondWithResult(_0xae9ae5,null))['catch'](function(_0x4ef3d4){var _0x5dfdeb=_0x18250c[_0xc151('0x31')][_0xc151('0x74')]?0x1f4:_0x4ef3d4['statusCode']||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s','getFields',_0x5dfdeb,JSON[_0xc151('0x66')](_0x4ef3d4));delete _0x4ef3d4['name'];if(_0x5dfdeb===0x191){_0x5dfdeb=0x190;}_0xae9ae5[_0xc151('0x18')](_0x5dfdeb)[_0xc151('0x29')](_0x18250c['query']['test']?{'message':_0xc151('0x75'),'statusCode':_0x4ef3d4[_0xc151('0x76')]}:_0x4ef3d4);});}else{var _0x412edb=0x1f4;_0xae9ae5[_0xc151('0x18')](_0x412edb)['send']({'message':_0xc151('0x75'),'statusCode':0x190});}});};
\ No newline at end of file
+var _0x97df=['../../components/integrations/configuration','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','update','destroy','then','sendStatus','name','send','map','SugarcrmAccount','rawAttributes','fieldName','key','model','query','filters','attributes','intersection','fields','hasOwnProperty','order','sort','where','pick','filter','merge','type','options','includeAll','include','findAll','rows','catch','show','keys','create','body','find','params','findOne','SugarcrmConfiguration','length','getConfigurations','addConfiguration','AccountId','Subjects','getSubjects','Descriptions','getDescriptions','SugarcrmField','getFields','assigned_user_id','created_by','description','date_start','duration_hours','parent_id','parent_type','parent_name','direction','password','remoteUri','slice','substring','lastIndexOf','POST','format','%s%s','JSON','stringify','username','PLAIN','xCALLY\x20Motion\x20Integration','Invalid\x20Login','Password\x20Expired','/service/v4_1/rest.php','get_module_fields','Calls','module_fields','remove','includes','label','endsWith','values','value','test','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb'];(function(_0x3c7549,_0x1451d5){var _0x2b3b39=function(_0xb1617){while(--_0xb1617){_0x3c7549['push'](_0x3c7549['shift']());}};_0x2b3b39(++_0x1451d5);}(_0x97df,0xde));var _0xf97d=function(_0x1e7b16,_0x4607a1){_0x1e7b16=_0x1e7b16-0x0;var _0x37fadc=_0x97df[_0x1e7b16];return _0x37fadc;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf97d('0x0'));var zipdir=require(_0xf97d('0x1'));var jsonpatch=require(_0xf97d('0x2'));var rp=require(_0xf97d('0x3'));var moment=require(_0xf97d('0x4'));var BPromise=require(_0xf97d('0x5'));var Mustache=require(_0xf97d('0x6'));var util=require(_0xf97d('0x7'));var path=require(_0xf97d('0x8'));var sox=require(_0xf97d('0x9'));var csv=require(_0xf97d('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf97d('0xb'));var squel=require(_0xf97d('0xc'));var crypto=require(_0xf97d('0xd'));var jsforce=require(_0xf97d('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xf97d('0xa'));var querystring=require(_0xf97d('0xf'));var Papa=require(_0xf97d('0x10'));var Redis=require(_0xf97d('0x11'));var authService=require(_0xf97d('0x12'));var qs=require(_0xf97d('0x13'));var as=require(_0xf97d('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf97d('0x15'))(_0xf97d('0x16'));var utils=require(_0xf97d('0x17'));var config=require(_0xf97d('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xf97d('0x19'))['db'];var integrations=require(_0xf97d('0x1a'));function respondWithStatusCode(_0x7cb411,_0x28a7c3){_0x28a7c3=_0x28a7c3||0xcc;return function(_0x360181){if(_0x360181){return _0x7cb411['sendStatus'](_0x28a7c3);}return _0x7cb411[_0xf97d('0x1b')](_0x28a7c3)[_0xf97d('0x1c')]();};}function respondWithResult(_0x44d511,_0x3a3f9b){_0x3a3f9b=_0x3a3f9b||0xc8;return function(_0x407e3c){if(_0x407e3c){return _0x44d511['status'](_0x3a3f9b)[_0xf97d('0x1d')](_0x407e3c);}};}function respondWithFilteredResult(_0xa26f71,_0x2d3eda){return function(_0x1698a9){if(_0x1698a9){var _0x384105=typeof _0x2d3eda['offset']===_0xf97d('0x1e')&&typeof _0x2d3eda[_0xf97d('0x1f')]==='undefined';var _0x560352=_0x1698a9[_0xf97d('0x20')];var _0x558675=_0x384105?0x0:_0x2d3eda[_0xf97d('0x21')];var _0x401af4=_0x384105?_0x1698a9[_0xf97d('0x20')]:_0x2d3eda[_0xf97d('0x21')]+_0x2d3eda[_0xf97d('0x1f')];var _0x30e164;if(_0x401af4>=_0x560352){_0x401af4=_0x560352;_0x30e164=0xc8;}else{_0x30e164=0xce;}_0xa26f71[_0xf97d('0x1b')](_0x30e164);return _0xa26f71[_0xf97d('0x22')](_0xf97d('0x23'),_0x558675+'-'+_0x401af4+'/'+_0x560352)[_0xf97d('0x1d')](_0x1698a9);}return null;};}function patchUpdates(_0x3428d9){return function(_0x3bdc9c){try{jsonpatch[_0xf97d('0x24')](_0x3bdc9c,_0x3428d9,!![]);}catch(_0x5f1423){return BPromise[_0xf97d('0x25')](_0x5f1423);}return _0x3bdc9c['save']();};}function saveUpdates(_0x2a845f,_0x2c14ed){return function(_0x109f0e){if(_0x109f0e){return _0x109f0e[_0xf97d('0x26')](_0x2a845f)['then'](function(_0x5901f7){return _0x5901f7;});}return null;};}function removeEntity(_0x56cd5e,_0x5513ba){return function(_0x358161){if(_0x358161){return _0x358161[_0xf97d('0x27')]()[_0xf97d('0x28')](function(){_0x56cd5e['status'](0xcc)[_0xf97d('0x1c')]();});}};}function handleEntityNotFound(_0x519b1d,_0x18a6a0){return function(_0x3e503b){if(!_0x3e503b){_0x519b1d[_0xf97d('0x29')](0x194);}return _0x3e503b;};}function handleError(_0x3c39ec,_0xf543d4){_0xf543d4=_0xf543d4||0x1f4;return function(_0x29ca96){logger['error'](_0x29ca96['stack']);if(_0x29ca96[_0xf97d('0x2a')]){delete _0x29ca96[_0xf97d('0x2a')];}_0x3c39ec[_0xf97d('0x1b')](_0xf543d4)[_0xf97d('0x2b')](_0x29ca96);};}exports['index']=function(_0x236054,_0x392d8d){var _0x368815={},_0x15bac5={},_0x562a5d={'count':0x0,'rows':[]};var _0x49d590=_[_0xf97d('0x2c')](db[_0xf97d('0x2d')][_0xf97d('0x2e')],function(_0x39d401){return{'name':_0x39d401[_0xf97d('0x2f')],'type':_0x39d401['type'][_0xf97d('0x30')]};});_0x15bac5[_0xf97d('0x31')]=_['map'](_0x49d590,_0xf97d('0x2a'));_0x15bac5[_0xf97d('0x32')]=_['keys'](_0x236054[_0xf97d('0x32')]);_0x15bac5[_0xf97d('0x33')]=_['intersection'](_0x15bac5[_0xf97d('0x31')],_0x15bac5[_0xf97d('0x32')]);_0x368815[_0xf97d('0x34')]=_[_0xf97d('0x35')](_0x15bac5['model'],qs[_0xf97d('0x36')](_0x236054[_0xf97d('0x32')][_0xf97d('0x36')]));_0x368815[_0xf97d('0x34')]=_0x368815['attributes']['length']?_0x368815[_0xf97d('0x34')]:_0x15bac5[_0xf97d('0x31')];if(!_0x236054[_0xf97d('0x32')][_0xf97d('0x37')]('nolimit')){_0x368815[_0xf97d('0x1f')]=qs[_0xf97d('0x1f')](_0x236054[_0xf97d('0x32')][_0xf97d('0x1f')]);_0x368815[_0xf97d('0x21')]=qs['offset'](_0x236054[_0xf97d('0x32')][_0xf97d('0x21')]);}_0x368815[_0xf97d('0x38')]=qs[_0xf97d('0x39')](_0x236054['query'][_0xf97d('0x39')]);_0x368815[_0xf97d('0x3a')]=qs['filters'](_[_0xf97d('0x3b')](_0x236054[_0xf97d('0x32')],_0x15bac5['filters']),_0x49d590);if(_0x236054[_0xf97d('0x32')][_0xf97d('0x3c')]){_0x368815[_0xf97d('0x3a')]=_[_0xf97d('0x3d')](_0x368815[_0xf97d('0x3a')],{'$or':_['map'](_0x49d590,function(_0x3364f0){if(_0x3364f0[_0xf97d('0x3e')]!=='VIRTUAL'){var _0x2501bc={};_0x2501bc[_0x3364f0[_0xf97d('0x2a')]]={'$like':'%'+_0x236054[_0xf97d('0x32')]['filter']+'%'};return _0x2501bc;}})});}_0x368815=_[_0xf97d('0x3d')]({},_0x368815,_0x236054[_0xf97d('0x3f')]);var _0x31eefe={'where':_0x368815[_0xf97d('0x3a')]};return db[_0xf97d('0x2d')][_0xf97d('0x20')](_0x31eefe)['then'](function(_0x1c6e5b){_0x562a5d[_0xf97d('0x20')]=_0x1c6e5b;if(_0x236054[_0xf97d('0x32')][_0xf97d('0x40')]){_0x368815[_0xf97d('0x41')]=[{'all':!![]}];}return db[_0xf97d('0x2d')][_0xf97d('0x42')](_0x368815);})[_0xf97d('0x28')](function(_0xa22018){_0x562a5d[_0xf97d('0x43')]=_0xa22018;return _0x562a5d;})[_0xf97d('0x28')](respondWithFilteredResult(_0x392d8d,_0x368815))[_0xf97d('0x44')](handleError(_0x392d8d,null));};exports[_0xf97d('0x45')]=function(_0x16d336,_0x5b1d6f){var _0x58befc={'raw':![],'where':{'id':_0x16d336['params']['id']}},_0x3b6f39={};_0x3b6f39[_0xf97d('0x31')]=_[_0xf97d('0x46')](db['SugarcrmAccount']['rawAttributes']);_0x3b6f39[_0xf97d('0x32')]=_[_0xf97d('0x46')](_0x16d336[_0xf97d('0x32')]);_0x3b6f39[_0xf97d('0x33')]=_[_0xf97d('0x35')](_0x3b6f39[_0xf97d('0x31')],_0x3b6f39['query']);_0x58befc['attributes']=_[_0xf97d('0x35')](_0x3b6f39[_0xf97d('0x31')],qs[_0xf97d('0x36')](_0x16d336[_0xf97d('0x32')][_0xf97d('0x36')]));_0x58befc[_0xf97d('0x34')]=_0x58befc[_0xf97d('0x34')]['length']?_0x58befc['attributes']:_0x3b6f39[_0xf97d('0x31')];if(_0x16d336[_0xf97d('0x32')]['includeAll']){_0x58befc[_0xf97d('0x41')]=[{'all':!![]}];}_0x58befc=_[_0xf97d('0x3d')]({},_0x58befc,_0x16d336['options']);return db['SugarcrmAccount']['find'](_0x58befc)[_0xf97d('0x28')](handleEntityNotFound(_0x5b1d6f,null))[_0xf97d('0x28')](respondWithResult(_0x5b1d6f,null))[_0xf97d('0x44')](handleError(_0x5b1d6f,null));};exports[_0xf97d('0x47')]=function(_0x4f2ede,_0x5724ae){return db[_0xf97d('0x2d')][_0xf97d('0x47')](_0x4f2ede[_0xf97d('0x48')],{})[_0xf97d('0x28')](respondWithResult(_0x5724ae,0xc9))[_0xf97d('0x44')](handleError(_0x5724ae,null));};exports[_0xf97d('0x26')]=function(_0x1faeeb,_0x2764b4){if(_0x1faeeb[_0xf97d('0x48')]['id']){delete _0x1faeeb[_0xf97d('0x48')]['id'];}return db[_0xf97d('0x2d')][_0xf97d('0x49')]({'where':{'id':_0x1faeeb[_0xf97d('0x4a')]['id']}})[_0xf97d('0x28')](handleEntityNotFound(_0x2764b4,null))[_0xf97d('0x28')](saveUpdates(_0x1faeeb[_0xf97d('0x48')],null))['then'](respondWithResult(_0x2764b4,null))['catch'](handleError(_0x2764b4,null));};exports[_0xf97d('0x27')]=function(_0x13fee1,_0x4256d8){return db['SugarcrmAccount'][_0xf97d('0x49')]({'where':{'id':_0x13fee1[_0xf97d('0x4a')]['id']}})['then'](handleEntityNotFound(_0x4256d8,null))['then'](removeEntity(_0x4256d8,null))[_0xf97d('0x44')](handleError(_0x4256d8,null));};exports['getConfigurations']=function(_0x5b8441,_0x620fcb,_0x1edd13){var _0x3ddac4={};var _0x192f3b={};var _0x17207d;var _0x43123d;return db[_0xf97d('0x2d')][_0xf97d('0x4b')]({'where':{'id':_0x5b8441[_0xf97d('0x4a')]['id']}})[_0xf97d('0x28')](handleEntityNotFound(_0x620fcb,null))['then'](function(_0x79e981){if(_0x79e981){_0x17207d=_0x79e981;_0x192f3b[_0xf97d('0x31')]=_[_0xf97d('0x46')](db[_0xf97d('0x4c')][_0xf97d('0x2e')]);_0x192f3b[_0xf97d('0x32')]=_[_0xf97d('0x46')](_0x5b8441[_0xf97d('0x32')]);_0x192f3b[_0xf97d('0x33')]=_[_0xf97d('0x35')](_0x192f3b[_0xf97d('0x31')],_0x192f3b[_0xf97d('0x32')]);_0x3ddac4['attributes']=_[_0xf97d('0x35')](_0x192f3b[_0xf97d('0x31')],qs['fields'](_0x5b8441[_0xf97d('0x32')]['fields']));_0x3ddac4['attributes']=_0x3ddac4['attributes'][_0xf97d('0x4d')]?_0x3ddac4[_0xf97d('0x34')]:_0x192f3b[_0xf97d('0x31')];_0x3ddac4[_0xf97d('0x38')]=qs['sort'](_0x5b8441['query']['sort']);_0x3ddac4['where']=qs[_0xf97d('0x33')](_[_0xf97d('0x3b')](_0x5b8441['query'],_0x192f3b['filters']));if(_0x5b8441['query']['filter']){_0x3ddac4[_0xf97d('0x3a')]=_['merge'](_0x3ddac4[_0xf97d('0x3a')],{'$or':_[_0xf97d('0x2c')](_0x3ddac4[_0xf97d('0x34')],function(_0x5cfc04){var _0x1142c4={};_0x1142c4[_0x5cfc04]={'$like':'%'+_0x5b8441[_0xf97d('0x32')][_0xf97d('0x3c')]+'%'};return _0x1142c4;})});}_0x3ddac4=_[_0xf97d('0x3d')]({},_0x3ddac4,_0x5b8441[_0xf97d('0x3f')]);return _0x17207d['getConfigurations'](_0x3ddac4);}})[_0xf97d('0x28')](function(_0x26a8f1){if(_0x26a8f1){_0x43123d=_0x26a8f1[_0xf97d('0x4d')];if(!_0x5b8441[_0xf97d('0x32')]['hasOwnProperty']('nolimit')){_0x3ddac4[_0xf97d('0x1f')]=qs[_0xf97d('0x1f')](_0x5b8441[_0xf97d('0x32')][_0xf97d('0x1f')]);_0x3ddac4[_0xf97d('0x21')]=qs[_0xf97d('0x21')](_0x5b8441[_0xf97d('0x32')][_0xf97d('0x21')]);}return _0x17207d[_0xf97d('0x4e')](_0x3ddac4);}})['then'](function(_0x230121){if(_0x230121){return _0x230121?{'count':_0x43123d,'rows':_0x230121}:null;}})[_0xf97d('0x28')](respondWithResult(_0x620fcb,null))['catch'](handleError(_0x620fcb,null));};exports[_0xf97d('0x4f')]=function(_0x394db3,_0x41e387,_0x1d3f53){if(_0x394db3[_0xf97d('0x48')]['id']){delete _0x394db3[_0xf97d('0x48')]['id'];}return db['SugarcrmAccount'][_0xf97d('0x4b')]({'where':{'id':_0x394db3[_0xf97d('0x4a')]['id']}})[_0xf97d('0x28')](handleEntityNotFound(_0x41e387,null))[_0xf97d('0x28')](function(_0x17ac40){if(_0x17ac40){_0x394db3[_0xf97d('0x48')][_0xf97d('0x50')]=_0x17ac40['id'];_0x394db3[_0xf97d('0x48')][_0xf97d('0x51')]=integrations[_0xf97d('0x52')](_0x394db3[_0xf97d('0x48')]['channel'],_0x394db3['body'][_0xf97d('0x3e')]);_0x394db3[_0xf97d('0x48')][_0xf97d('0x53')]=integrations[_0xf97d('0x54')](_0x394db3[_0xf97d('0x48')]['channel'],_0x394db3[_0xf97d('0x48')][_0xf97d('0x3e')]);return db[_0xf97d('0x4c')][_0xf97d('0x47')](_0x394db3[_0xf97d('0x48')],{'include':[{'model':db[_0xf97d('0x55')],'as':_0xf97d('0x51')},{'model':db[_0xf97d('0x55')],'as':_0xf97d('0x53')}]});}return null;})['then'](respondWithResult(_0x41e387,null))[_0xf97d('0x44')](handleError(_0x41e387,null));};exports[_0xf97d('0x56')]=function(_0x14ca18,_0x487638,_0x1caa08){var _0x5d0f2f='';var _0x2890d1=['id',_0xf97d('0x2a'),_0xf97d('0x57'),_0xf97d('0x58'),_0xf97d('0x59'),_0xf97d('0x5a'),_0xf97d('0x5b'),'duration_minutes',_0xf97d('0x5c'),_0xf97d('0x5d'),_0xf97d('0x5e'),_0xf97d('0x5f')];return db['SugarcrmAccount']['findOne']({'where':{'id':_0x14ca18[_0xf97d('0x4a')]['id']},'attributes':['id','username',_0xf97d('0x60'),_0xf97d('0x61')]})[_0xf97d('0x28')](handleEntityNotFound(_0x487638,null))['then'](function(_0x3aa292){if(_0x3aa292){_0x5d0f2f=_0x3aa292[_0xf97d('0x61')];var _0x541822=_0x5d0f2f[_0xf97d('0x62')](-0x1);if(_0x541822==='/'){_0x5d0f2f=_0x5d0f2f[_0xf97d('0x63')](0x0,_0x5d0f2f[_0xf97d('0x64')](_0x541822));}return rp({'method':_0xf97d('0x65'),'uri':util[_0xf97d('0x66')](_0xf97d('0x67'),_0x5d0f2f,'/service/v4_1/rest.php'),'json':!![],'form':{'method':'login','input_type':_0xf97d('0x68'),'response_type':_0xf97d('0x68'),'rest_data':JSON[_0xf97d('0x69')]({'user_auth':{'user_name':_0x3aa292[_0xf97d('0x6a')],'password':_0x3aa292[_0xf97d('0x60')],'encryption':_0xf97d('0x6b')},'application':_0xf97d('0x6c')})}});}})[_0xf97d('0x28')](function(_0x730fff){if(_0x730fff&&_0x730fff[_0xf97d('0x2a')]!==_0xf97d('0x6d')&&_0x730fff[_0xf97d('0x2a')]!==_0xf97d('0x6e')){return rp({'method':_0xf97d('0x65'),'uri':util[_0xf97d('0x66')](_0xf97d('0x67'),_0x5d0f2f,_0xf97d('0x6f')),'json':!![],'form':{'method':_0xf97d('0x70'),'input_type':_0xf97d('0x68'),'response_type':'JSON','rest_data':JSON[_0xf97d('0x69')]({'session':_0x730fff['id'],'module_name':_0xf97d('0x71')})}})[_0xf97d('0x28')](function(_0x2e83f0){if(_0x2e83f0){var _0x207880=_['values'](_0x2e83f0[_0xf97d('0x72')]);_[_0xf97d('0x73')](_0x207880,function(_0x494b96){return _0x2890d1[_0xf97d('0x74')](_0x494b96['name']);});return{'count':_0x207880['length'],'rows':_[_0xf97d('0x2c')](_0x207880,function(_0x3ba426){return{'id':_0x3ba426['name'],'name':_0x3ba426[_0xf97d('0x75')],'custom':_[_0xf97d('0x76')](_0x3ba426[_0xf97d('0x2a')],'_c')?!![]:![],'options':_0x3ba426[_0xf97d('0x3f')]?_['map'](_[_0xf97d('0x77')](_0x3ba426[_0xf97d('0x3f')]),function(_0x49d4af){return{'name':_0x49d4af[_0xf97d('0x78')],'value':_0x49d4af['name']};}):[]};})};}})['then'](respondWithResult(_0x487638,null))[_0xf97d('0x44')](function(_0x4958c4){var _0x148e31=_0x14ca18[_0xf97d('0x32')][_0xf97d('0x79')]?0x1f4:_0x4958c4['statusCode']||0x1f4;logger['error'](_0xf97d('0x7a'),_0xf97d('0x56'),_0x148e31,JSON[_0xf97d('0x69')](_0x4958c4));delete _0x4958c4[_0xf97d('0x2a')];if(_0x148e31===0x191){_0x148e31=0x190;}_0x487638[_0xf97d('0x1b')](_0x148e31)['send'](_0x14ca18[_0xf97d('0x32')][_0xf97d('0x79')]?{'message':_0xf97d('0x7b'),'statusCode':_0x4958c4['statusCode']}:_0x4958c4);});}else{var _0x3e2ab7=0x1f4;_0x487638[_0xf97d('0x1b')](_0x3e2ab7)['send']({'message':'Wrong\x20credentials','statusCode':0x190});}});};
\ No newline at end of file
index 0e8037d..aa5413c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2032=['request-promise','rimraf','../../config/environment','./intSugarcrmAccount.attributes','../../components/integrations/configuration','exports','define','SugarcrmAccount','int_sugarcrm_accounts','util','../../config/logger','api','bluebird'];(function(_0x138adb,_0x193fee){var _0x1b27f2=function(_0x5e97a2){while(--_0x5e97a2){_0x138adb['push'](_0x138adb['shift']());}};_0x1b27f2(++_0x193fee);}(_0x2032,0xd9));var _0x2203=function(_0x490651,_0x1d3dc7){_0x490651=_0x490651-0x0;var _0x1178d6=_0x2032[_0x490651];return _0x1178d6;};'use strict';var _=require('lodash');var util=require(_0x2203('0x0'));var logger=require(_0x2203('0x1'))(_0x2203('0x2'));var moment=require('moment');var BPromise=require(_0x2203('0x3'));var rp=require(_0x2203('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2203('0x5'));var config=require(_0x2203('0x6'));var attributes=require(_0x2203('0x7'));var integrations=require(_0x2203('0x8'));module[_0x2203('0x9')]=function(_0x13367a,_0x2e0f63){return _0x13367a[_0x2203('0xa')](_0x2203('0xb'),attributes,{'tableName':_0x2203('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd94d=['path','rimraf','../../config/environment','./intSugarcrmAccount.attributes','../../components/integrations/configuration','SugarcrmAccount','int_sugarcrm_accounts','util','../../config/logger','api','bluebird','request-promise'];(function(_0x7bc4a8,_0x19022a){var _0x4a13e9=function(_0x43ac34){while(--_0x43ac34){_0x7bc4a8['push'](_0x7bc4a8['shift']());}};_0x4a13e9(++_0x19022a);}(_0xd94d,0x16f));var _0xdd94=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd94d[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0xdd94('0x0'));var logger=require(_0xdd94('0x1'))(_0xdd94('0x2'));var moment=require('moment');var BPromise=require(_0xdd94('0x3'));var rp=require(_0xdd94('0x4'));var fs=require('fs');var path=require(_0xdd94('0x5'));var rimraf=require(_0xdd94('0x6'));var config=require(_0xdd94('0x7'));var attributes=require(_0xdd94('0x8'));var integrations=require(_0xdd94('0x9'));module['exports']=function(_0x1fd8a8,_0xa08a87){return _0x1fd8a8['define'](_0xdd94('0xa'),attributes,{'tableName':_0xdd94('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c2ef610..3aefa33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a65=['result','catch','GetSugarcrmAccount','SugarcrmAccount','findAll','raw','options','where','attributes','limit','include','map','model','stringify','ShowSugarcrmAccount','find','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','SugarcrmAccount,\x20%s,\x20%s','request\x20sent','debug','error','code','message'];(function(_0x100ea5,_0x2f13b4){var _0x1c331=function(_0x247f46){while(--_0x247f46){_0x100ea5['push'](_0x100ea5['shift']());}};_0x1c331(++_0x2f13b4);}(_0x5a65,0x182));var _0x55a6=function(_0x1a2df9,_0x552110){_0x1a2df9=_0x1a2df9-0x0;var _0x2637d0=_0x5a65[_0x1a2df9];return _0x2637d0;};'use strict';var _=require(_0x55a6('0x0'));var util=require('util');var moment=require(_0x55a6('0x1'));var BPromise=require(_0x55a6('0x2'));var rs=require(_0x55a6('0x3'));var fs=require('fs');var Redis=require(_0x55a6('0x4'));var db=require(_0x55a6('0x5'))['db'];var utils=require(_0x55a6('0x6'));var logger=require(_0x55a6('0x7'))('rpc');var config=require(_0x55a6('0x8'));var jayson=require(_0x55a6('0x9'));var client=jayson[_0x55a6('0xa')][_0x55a6('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x46fc1c,_0x186aa8,_0x47d2ac){return new BPromise(function(_0x41bfa8,_0x5c5800){return client[_0x55a6('0xc')](_0x46fc1c,_0x47d2ac)[_0x55a6('0xd')](function(_0x3a22aa){logger[_0x55a6('0xe')](_0x55a6('0xf'),_0x186aa8,_0x55a6('0x10'));logger[_0x55a6('0x11')]('SugarcrmAccount,\x20%s,\x20%s,\x20%s',_0x186aa8,'request\x20sent',JSON['stringify'](_0x3a22aa));if(_0x3a22aa[_0x55a6('0x12')]){if(_0x3a22aa[_0x55a6('0x12')][_0x55a6('0x13')]===0x1f4){logger[_0x55a6('0x12')](_0x55a6('0xf'),_0x186aa8,_0x3a22aa['error'][_0x55a6('0x14')]);return _0x5c5800(_0x3a22aa['error'][_0x55a6('0x14')]);}logger[_0x55a6('0x12')](_0x55a6('0xf'),_0x186aa8,_0x3a22aa[_0x55a6('0x12')][_0x55a6('0x14')]);return _0x41bfa8(_0x3a22aa[_0x55a6('0x12')]['message']);}else{logger[_0x55a6('0xe')]('SugarcrmAccount,\x20%s,\x20%s',_0x186aa8,'request\x20sent');_0x41bfa8(_0x3a22aa[_0x55a6('0x15')][_0x55a6('0x14')]);}})[_0x55a6('0x16')](function(_0x2f8429){logger[_0x55a6('0x12')](_0x55a6('0xf'),_0x186aa8,_0x2f8429);_0x5c5800(_0x2f8429);});});}exports[_0x55a6('0x17')]=function(_0x27cc40){var _0x9bfe=this;return new Promise(function(_0x5556cf,_0x2aeb63){return db[_0x55a6('0x18')][_0x55a6('0x19')]({'raw':_0x27cc40['options']?_0x27cc40['options'][_0x55a6('0x1a')]===undefined?!![]:![]:!![],'where':_0x27cc40[_0x55a6('0x1b')]?_0x27cc40['options'][_0x55a6('0x1c')]||null:null,'attributes':_0x27cc40[_0x55a6('0x1b')]?_0x27cc40[_0x55a6('0x1b')][_0x55a6('0x1d')]||null:null,'limit':_0x27cc40[_0x55a6('0x1b')]?_0x27cc40['options'][_0x55a6('0x1e')]||null:null,'include':_0x27cc40['options']?_0x27cc40['options'][_0x55a6('0x1f')]?_[_0x55a6('0x20')](_0x27cc40[_0x55a6('0x1b')]['include'],function(_0x89c524){return{'model':db[_0x89c524[_0x55a6('0x21')]],'as':_0x89c524['as'],'attributes':_0x89c524[_0x55a6('0x1d')],'include':_0x89c524[_0x55a6('0x1f')]?_[_0x55a6('0x20')](_0x89c524[_0x55a6('0x1f')],function(_0xb64e93){return{'model':db[_0xb64e93[_0x55a6('0x21')]],'as':_0xb64e93['as'],'attributes':_0xb64e93[_0x55a6('0x1d')],'include':_0xb64e93[_0x55a6('0x1f')]?_[_0x55a6('0x20')](_0xb64e93[_0x55a6('0x1f')],function(_0x27ba87){return{'model':db[_0x27ba87[_0x55a6('0x21')]],'as':_0x27ba87['as'],'attributes':_0x27ba87[_0x55a6('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x55a6('0xd')](function(_0x5d5c01){logger[_0x55a6('0xe')]('GetSugarcrmAccount',_0x27cc40);logger[_0x55a6('0x11')](_0x55a6('0x17'),_0x27cc40,JSON[_0x55a6('0x22')](_0x5d5c01));_0x5556cf(_0x5d5c01);})[_0x55a6('0x16')](function(_0x70dea5){logger[_0x55a6('0x12')](_0x55a6('0x17'),_0x70dea5[_0x55a6('0x14')],_0x27cc40);_0x2aeb63(_0x9bfe[_0x55a6('0x12')](0x1f4,_0x70dea5[_0x55a6('0x14')]));});});};exports[_0x55a6('0x23')]=function(_0x142f48){var _0x8352bc=this;return new Promise(function(_0x108a9f,_0x26da9a){return db[_0x55a6('0x18')][_0x55a6('0x24')]({'raw':_0x142f48[_0x55a6('0x1b')]?_0x142f48[_0x55a6('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x142f48[_0x55a6('0x1b')]?_0x142f48[_0x55a6('0x1b')][_0x55a6('0x1c')]||null:null,'attributes':_0x142f48[_0x55a6('0x1b')]?_0x142f48['options'][_0x55a6('0x1d')]||null:null,'include':_0x142f48[_0x55a6('0x1b')]?_0x142f48[_0x55a6('0x1b')][_0x55a6('0x1f')]?_[_0x55a6('0x20')](_0x142f48[_0x55a6('0x1b')][_0x55a6('0x1f')],function(_0x4875de){return{'model':db[_0x4875de[_0x55a6('0x21')]],'as':_0x4875de['as'],'attributes':_0x4875de[_0x55a6('0x1d')],'include':_0x4875de[_0x55a6('0x1f')]?_[_0x55a6('0x20')](_0x4875de[_0x55a6('0x1f')],function(_0x3dbc60){return{'model':db[_0x3dbc60[_0x55a6('0x21')]],'as':_0x3dbc60['as'],'attributes':_0x3dbc60[_0x55a6('0x1d')],'include':_0x3dbc60[_0x55a6('0x1f')]?_[_0x55a6('0x20')](_0x3dbc60[_0x55a6('0x1f')],function(_0x562d82){return{'model':db[_0x562d82[_0x55a6('0x21')]],'as':_0x562d82['as'],'attributes':_0x562d82[_0x55a6('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x55a6('0xd')](function(_0x304cae){logger[_0x55a6('0xe')]('ShowSugarcrmAccount',_0x142f48);logger['debug'](_0x55a6('0x23'),_0x142f48,JSON[_0x55a6('0x22')](_0x304cae));_0x108a9f(_0x304cae);})[_0x55a6('0x16')](function(_0x103dc2){logger[_0x55a6('0x12')]('ShowSugarcrmAccount',_0x103dc2[_0x55a6('0x14')],_0x142f48);_0x26da9a(_0x8352bc['error'](0x1f4,_0x103dc2[_0x55a6('0x14')]));});});};
\ No newline at end of file
+var _0x4b2c=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','client','http','request','then','info','debug','SugarcrmAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','SugarcrmAccount,\x20%s,\x20%s','message','result','GetSugarcrmAccount','SugarcrmAccount','findAll','options','raw','where','attributes','limit','include','model','map','ShowSugarcrmAccount','find'];(function(_0x507b87,_0x48c977){var _0x5967fc=function(_0x248cf4){while(--_0x248cf4){_0x507b87['push'](_0x507b87['shift']());}};_0x5967fc(++_0x48c977);}(_0x4b2c,0x1d4));var _0xc4b2=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4b2c[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xc4b2('0x0'));var util=require(_0xc4b2('0x1'));var moment=require(_0xc4b2('0x2'));var BPromise=require(_0xc4b2('0x3'));var rs=require(_0xc4b2('0x4'));var fs=require('fs');var Redis=require(_0xc4b2('0x5'));var db=require(_0xc4b2('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xc4b2('0x7'))(_0xc4b2('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xc4b2('0x9')][_0xc4b2('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x23d9b0,_0x15bca9,_0x8099e9){return new BPromise(function(_0x40b506,_0x3ed48e){return client[_0xc4b2('0xb')](_0x23d9b0,_0x8099e9)[_0xc4b2('0xc')](function(_0x404c88){logger[_0xc4b2('0xd')]('SugarcrmAccount,\x20%s,\x20%s',_0x15bca9,'request\x20sent');logger[_0xc4b2('0xe')](_0xc4b2('0xf'),_0x15bca9,_0xc4b2('0x10'),JSON[_0xc4b2('0x11')](_0x404c88));if(_0x404c88['error']){if(_0x404c88[_0xc4b2('0x12')][_0xc4b2('0x13')]===0x1f4){logger['error'](_0xc4b2('0x14'),_0x15bca9,_0x404c88[_0xc4b2('0x12')][_0xc4b2('0x15')]);return _0x3ed48e(_0x404c88[_0xc4b2('0x12')][_0xc4b2('0x15')]);}logger[_0xc4b2('0x12')](_0xc4b2('0x14'),_0x15bca9,_0x404c88[_0xc4b2('0x12')][_0xc4b2('0x15')]);return _0x40b506(_0x404c88[_0xc4b2('0x12')][_0xc4b2('0x15')]);}else{logger[_0xc4b2('0xd')](_0xc4b2('0x14'),_0x15bca9,'request\x20sent');_0x40b506(_0x404c88[_0xc4b2('0x16')][_0xc4b2('0x15')]);}})['catch'](function(_0x521243){logger[_0xc4b2('0x12')](_0xc4b2('0x14'),_0x15bca9,_0x521243);_0x3ed48e(_0x521243);});});}exports[_0xc4b2('0x17')]=function(_0x572684){var _0x1ec60f=this;return new Promise(function(_0xfc9cfc,_0x4bb5fc){return db[_0xc4b2('0x18')][_0xc4b2('0x19')]({'raw':_0x572684[_0xc4b2('0x1a')]?_0x572684[_0xc4b2('0x1a')][_0xc4b2('0x1b')]===undefined?!![]:![]:!![],'where':_0x572684[_0xc4b2('0x1a')]?_0x572684[_0xc4b2('0x1a')][_0xc4b2('0x1c')]||null:null,'attributes':_0x572684[_0xc4b2('0x1a')]?_0x572684['options'][_0xc4b2('0x1d')]||null:null,'limit':_0x572684['options']?_0x572684['options'][_0xc4b2('0x1e')]||null:null,'include':_0x572684[_0xc4b2('0x1a')]?_0x572684[_0xc4b2('0x1a')][_0xc4b2('0x1f')]?_['map'](_0x572684[_0xc4b2('0x1a')][_0xc4b2('0x1f')],function(_0x55fdf5){return{'model':db[_0x55fdf5[_0xc4b2('0x20')]],'as':_0x55fdf5['as'],'attributes':_0x55fdf5[_0xc4b2('0x1d')],'include':_0x55fdf5[_0xc4b2('0x1f')]?_[_0xc4b2('0x21')](_0x55fdf5[_0xc4b2('0x1f')],function(_0x7f98d4){return{'model':db[_0x7f98d4[_0xc4b2('0x20')]],'as':_0x7f98d4['as'],'attributes':_0x7f98d4[_0xc4b2('0x1d')],'include':_0x7f98d4[_0xc4b2('0x1f')]?_[_0xc4b2('0x21')](_0x7f98d4[_0xc4b2('0x1f')],function(_0x5a379a){return{'model':db[_0x5a379a[_0xc4b2('0x20')]],'as':_0x5a379a['as'],'attributes':_0x5a379a[_0xc4b2('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xc4b2('0xc')](function(_0x34b3bd){logger['info'](_0xc4b2('0x17'),_0x572684);logger[_0xc4b2('0xe')]('GetSugarcrmAccount',_0x572684,JSON[_0xc4b2('0x11')](_0x34b3bd));_0xfc9cfc(_0x34b3bd);})['catch'](function(_0x5c04f3){logger[_0xc4b2('0x12')](_0xc4b2('0x17'),_0x5c04f3[_0xc4b2('0x15')],_0x572684);_0x4bb5fc(_0x1ec60f['error'](0x1f4,_0x5c04f3[_0xc4b2('0x15')]));});});};exports[_0xc4b2('0x22')]=function(_0x32407b){var _0x2dbfc3=this;return new Promise(function(_0x832f22,_0xe11a43){return db['SugarcrmAccount'][_0xc4b2('0x23')]({'raw':_0x32407b['options']?_0x32407b[_0xc4b2('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x32407b['options']?_0x32407b['options'][_0xc4b2('0x1c')]||null:null,'attributes':_0x32407b[_0xc4b2('0x1a')]?_0x32407b['options'][_0xc4b2('0x1d')]||null:null,'include':_0x32407b['options']?_0x32407b[_0xc4b2('0x1a')][_0xc4b2('0x1f')]?_[_0xc4b2('0x21')](_0x32407b[_0xc4b2('0x1a')]['include'],function(_0x3b8da2){return{'model':db[_0x3b8da2[_0xc4b2('0x20')]],'as':_0x3b8da2['as'],'attributes':_0x3b8da2[_0xc4b2('0x1d')],'include':_0x3b8da2[_0xc4b2('0x1f')]?_[_0xc4b2('0x21')](_0x3b8da2['include'],function(_0x55a08c){return{'model':db[_0x55a08c[_0xc4b2('0x20')]],'as':_0x55a08c['as'],'attributes':_0x55a08c[_0xc4b2('0x1d')],'include':_0x55a08c['include']?_[_0xc4b2('0x21')](_0x55a08c[_0xc4b2('0x1f')],function(_0x403c9c){return{'model':db[_0x403c9c[_0xc4b2('0x20')]],'as':_0x403c9c['as'],'attributes':_0x403c9c[_0xc4b2('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xc4b2('0xc')](function(_0x23828b){logger[_0xc4b2('0xd')](_0xc4b2('0x22'),_0x32407b);logger[_0xc4b2('0xe')](_0xc4b2('0x22'),_0x32407b,JSON[_0xc4b2('0x11')](_0x23828b));_0x832f22(_0x23828b);})['catch'](function(_0xd6a313){logger[_0xc4b2('0x12')](_0xc4b2('0x22'),_0xd6a313[_0xc4b2('0x15')],_0x32407b);_0xe11a43(_0x2dbfc3[_0xc4b2('0x12')](0x1f4,_0xd6a313['message']));});});};
\ No newline at end of file
index a7996b4..605f94b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c45=['isAuthenticated','show','/:id/fields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','create','put','/:id','update','delete','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./intSugarcrmConfiguration.controller','get'];(function(_0x46428c,_0x20ab75){var _0x16a677=function(_0x2b0817){while(--_0x2b0817){_0x46428c['push'](_0x46428c['shift']());}};_0x16a677(++_0x20ab75);}(_0x9c45,0xb7));var _0x59c4=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x9c45[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0x59c4('0x0'));var util=require('util');var path=require(_0x59c4('0x1'));var timeout=require(_0x59c4('0x2'));var express=require(_0x59c4('0x3'));var router=express['Router']();var fs_extra=require(_0x59c4('0x4'));var auth=require(_0x59c4('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x59c4('0x6'));var controller=require(_0x59c4('0x7'));router[_0x59c4('0x8')]('/',auth[_0x59c4('0x9')](),controller['index']);router[_0x59c4('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x59c4('0xa')]);router[_0x59c4('0x8')](_0x59c4('0xb'),auth['isAuthenticated'](),controller['getFields']);router[_0x59c4('0x8')](_0x59c4('0xc'),auth['isAuthenticated'](),controller[_0x59c4('0xd')]);router[_0x59c4('0x8')](_0x59c4('0xe'),auth[_0x59c4('0x9')](),controller[_0x59c4('0xf')]);router[_0x59c4('0x10')]('/',auth[_0x59c4('0x9')](),controller[_0x59c4('0x11')]);router[_0x59c4('0x12')](_0x59c4('0x13'),auth[_0x59c4('0x9')](),controller[_0x59c4('0x14')]);router[_0x59c4('0x15')]('/:id',auth[_0x59c4('0x9')](),controller[_0x59c4('0x16')]);module[_0x59c4('0x17')]=router;
\ No newline at end of file
+var _0x0e44=['../../components/interaction/service','./intSugarcrmConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','/:id/subjects','getSubjects','getDescriptions','post','delete','destroy','exports','multer','path','connect-timeout','fs-extra','../../components/auth/service'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x0e44,0x73));var _0x40e4=function(_0x15ebab,_0x2397f8){_0x15ebab=_0x15ebab-0x0;var _0x5d9319=_0x0e44[_0x15ebab];return _0x5d9319;};'use strict';var multer=require(_0x40e4('0x0'));var util=require('util');var path=require(_0x40e4('0x1'));var timeout=require(_0x40e4('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x40e4('0x3'));var auth=require(_0x40e4('0x4'));var interaction=require(_0x40e4('0x5'));var config=require('../../config/environment');var controller=require(_0x40e4('0x6'));router[_0x40e4('0x7')]('/',auth[_0x40e4('0x8')](),controller[_0x40e4('0x9')]);router['get'](_0x40e4('0xa'),auth[_0x40e4('0x8')](),controller[_0x40e4('0xb')]);router[_0x40e4('0x7')](_0x40e4('0xc'),auth['isAuthenticated'](),controller['getFields']);router[_0x40e4('0x7')](_0x40e4('0xd'),auth['isAuthenticated'](),controller[_0x40e4('0xe')]);router[_0x40e4('0x7')]('/:id/descriptions',auth[_0x40e4('0x8')](),controller[_0x40e4('0xf')]);router[_0x40e4('0x10')]('/',auth[_0x40e4('0x8')](),controller['create']);router['put'](_0x40e4('0xa'),auth[_0x40e4('0x8')](),controller['update']);router[_0x40e4('0x11')]('/:id',auth[_0x40e4('0x8')](),controller[_0x40e4('0x12')]);module[_0x40e4('0x13')]=router;
\ No newline at end of file
index e10b362..24ab91f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2a9=['exports','STRING'];(function(_0x359a7b,_0x4d63d3){var _0x340ade=function(_0x45a967){while(--_0x45a967){_0x359a7b['push'](_0x359a7b['shift']());}};_0x340ade(++_0x4d63d3);}(_0xf2a9,0x1f2));var _0x9f2a=function(_0xb11647,_0x16f2bc){_0xb11647=_0xb11647-0x0;var _0x5c6dd4=_0xf2a9[_0xb11647];return _0x5c6dd4;};'use strict';var Sequelize=require('sequelize');module[_0x9f2a('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x9f2a('0x1')]}};
\ No newline at end of file
+var _0xd7c1=['exports','STRING','sequelize'];(function(_0x2ba885,_0x20763b){var _0x3a6fbd=function(_0x8a49b9){while(--_0x8a49b9){_0x2ba885['push'](_0x2ba885['shift']());}};_0x3a6fbd(++_0x20763b);}(_0xd7c1,0x1b2));var _0x1d7c=function(_0x340e88,_0xefa352){_0x340e88=_0x340e88-0x0;var _0x1642f9=_0xd7c1[_0x340e88];return _0x1642f9;};'use strict';var Sequelize=require(_0x1d7c('0x0'));module[_0x1d7c('0x1')]={'name':{'type':Sequelize[_0x1d7c('0x2')]},'description':{'type':Sequelize[_0x1d7c('0x2')]}};
\ No newline at end of file
index e991b80..7ad1ee4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeedb=['intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','options','SugarcrmConfiguration','include','findAll','rows','show','params','includeAll','catch','create','body','find','getFields','findOne','order','filter','getSubjects','SugarcrmField','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','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','../../config/utils','../../config/environment','sendStatus','status','end','json','undefined','limit','offset','set','Content-Range','apply','reject','update','then','destroy','stack','name','send','index','map','rawAttributes','fieldName','type','model','keys','query','filters','attributes'];(function(_0x3974bc,_0x566eb5){var _0x3e36ef=function(_0x4545da){while(--_0x4545da){_0x3974bc['push'](_0x3974bc['shift']());}};_0x3e36ef(++_0x566eb5);}(_0xeedb,0x113));var _0xbeed=function(_0xf50820,_0x56f041){_0xf50820=_0xf50820-0x0;var _0x2a9b10=_0xeedb[_0xf50820];return _0x2a9b10;};'use strict';var emlformat=require(_0xbeed('0x0'));var rimraf=require(_0xbeed('0x1'));var zipdir=require(_0xbeed('0x2'));var jsonpatch=require(_0xbeed('0x3'));var rp=require(_0xbeed('0x4'));var moment=require(_0xbeed('0x5'));var BPromise=require(_0xbeed('0x6'));var Mustache=require(_0xbeed('0x7'));var util=require(_0xbeed('0x8'));var path=require('path');var sox=require(_0xbeed('0x9'));var csv=require(_0xbeed('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbeed('0xb'));var _=require(_0xbeed('0xc'));var squel=require('squel');var crypto=require(_0xbeed('0xd'));var jsforce=require(_0xbeed('0xe'));var deskjs=require(_0xbeed('0xf'));var toCsv=require(_0xbeed('0xa'));var querystring=require(_0xbeed('0x10'));var Papa=require(_0xbeed('0x11'));var Redis=require(_0xbeed('0x12'));var authService=require(_0xbeed('0x13'));var qs=require(_0xbeed('0x14'));var as=require(_0xbeed('0x15'));var hardwareService=require(_0xbeed('0x16'));var logger=require(_0xbeed('0x17'))('api');var utils=require(_0xbeed('0x18'));var config=require(_0xbeed('0x19'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1a1c37,_0x164fc9){_0x164fc9=_0x164fc9||0xcc;return function(_0x3c82e5){if(_0x3c82e5){return _0x1a1c37[_0xbeed('0x1a')](_0x164fc9);}return _0x1a1c37[_0xbeed('0x1b')](_0x164fc9)[_0xbeed('0x1c')]();};}function respondWithResult(_0xaf1e5f,_0x3fba55){_0x3fba55=_0x3fba55||0xc8;return function(_0x33f599){if(_0x33f599){return _0xaf1e5f[_0xbeed('0x1b')](_0x3fba55)[_0xbeed('0x1d')](_0x33f599);}};}function respondWithFilteredResult(_0x4c4385,_0x105bb8){return function(_0x51852a){if(_0x51852a){var _0x470b51=typeof _0x105bb8['offset']===_0xbeed('0x1e')&&typeof _0x105bb8[_0xbeed('0x1f')]===_0xbeed('0x1e');var _0x2c3518=_0x51852a['count'];var _0x4beed8=_0x470b51?0x0:_0x105bb8[_0xbeed('0x20')];var _0x1e712b=_0x470b51?_0x51852a['count']:_0x105bb8[_0xbeed('0x20')]+_0x105bb8[_0xbeed('0x1f')];var _0x483c07;if(_0x1e712b>=_0x2c3518){_0x1e712b=_0x2c3518;_0x483c07=0xc8;}else{_0x483c07=0xce;}_0x4c4385['status'](_0x483c07);return _0x4c4385[_0xbeed('0x21')](_0xbeed('0x22'),_0x4beed8+'-'+_0x1e712b+'/'+_0x2c3518)[_0xbeed('0x1d')](_0x51852a);}return null;};}function patchUpdates(_0x4d657d){return function(_0x9f7688){try{jsonpatch[_0xbeed('0x23')](_0x9f7688,_0x4d657d,!![]);}catch(_0x5ed2e5){return BPromise[_0xbeed('0x24')](_0x5ed2e5);}return _0x9f7688['save']();};}function saveUpdates(_0x14c08b,_0x43f916){return function(_0x46668b){if(_0x46668b){return _0x46668b[_0xbeed('0x25')](_0x14c08b)[_0xbeed('0x26')](function(_0x3278c0){return _0x3278c0;});}return null;};}function removeEntity(_0x2e078b,_0x4265c7){return function(_0xbedcd1){if(_0xbedcd1){return _0xbedcd1[_0xbeed('0x27')]()[_0xbeed('0x26')](function(){_0x2e078b[_0xbeed('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x23f56b,_0x729654){return function(_0x382a93){if(!_0x382a93){_0x23f56b['sendStatus'](0x194);}return _0x382a93;};}function handleError(_0x315853,_0x25b887){_0x25b887=_0x25b887||0x1f4;return function(_0x3b7dee){logger['error'](_0x3b7dee[_0xbeed('0x28')]);if(_0x3b7dee[_0xbeed('0x29')]){delete _0x3b7dee['name'];}_0x315853[_0xbeed('0x1b')](_0x25b887)[_0xbeed('0x2a')](_0x3b7dee);};}exports[_0xbeed('0x2b')]=function(_0x1e4ad8,_0x5b6f9e){var _0x536875={},_0x13dd2a={},_0xbff25={'count':0x0,'rows':[]};var _0x4592ca=_[_0xbeed('0x2c')](db['SugarcrmConfiguration'][_0xbeed('0x2d')],function(_0x2f9d96){return{'name':_0x2f9d96[_0xbeed('0x2e')],'type':_0x2f9d96[_0xbeed('0x2f')]['key']};});_0x13dd2a[_0xbeed('0x30')]=_['map'](_0x4592ca,_0xbeed('0x29'));_0x13dd2a['query']=_[_0xbeed('0x31')](_0x1e4ad8[_0xbeed('0x32')]);_0x13dd2a[_0xbeed('0x33')]=_['intersection'](_0x13dd2a['model'],_0x13dd2a[_0xbeed('0x32')]);_0x536875[_0xbeed('0x34')]=_[_0xbeed('0x35')](_0x13dd2a[_0xbeed('0x30')],qs[_0xbeed('0x36')](_0x1e4ad8[_0xbeed('0x32')]['fields']));_0x536875['attributes']=_0x536875[_0xbeed('0x34')][_0xbeed('0x37')]?_0x536875[_0xbeed('0x34')]:_0x13dd2a[_0xbeed('0x30')];if(!_0x1e4ad8[_0xbeed('0x32')][_0xbeed('0x38')](_0xbeed('0x39'))){_0x536875[_0xbeed('0x1f')]=qs[_0xbeed('0x1f')](_0x1e4ad8['query'][_0xbeed('0x1f')]);_0x536875['offset']=qs[_0xbeed('0x20')](_0x1e4ad8['query'][_0xbeed('0x20')]);}_0x536875['order']=qs['sort'](_0x1e4ad8[_0xbeed('0x32')][_0xbeed('0x3a')]);_0x536875[_0xbeed('0x3b')]=qs['filters'](_[_0xbeed('0x3c')](_0x1e4ad8[_0xbeed('0x32')],_0x13dd2a[_0xbeed('0x33')]),_0x4592ca);if(_0x1e4ad8['query']['filter']){_0x536875[_0xbeed('0x3b')]=_[_0xbeed('0x3d')](_0x536875['where'],{'$or':_['map'](_0x4592ca,function(_0x42106b){if(_0x42106b['type']!==_0xbeed('0x3e')){var _0x4a3db4={};_0x4a3db4[_0x42106b['name']]={'$like':'%'+_0x1e4ad8[_0xbeed('0x32')]['filter']+'%'};return _0x4a3db4;}})});}_0x536875=_[_0xbeed('0x3d')]({},_0x536875,_0x1e4ad8[_0xbeed('0x3f')]);var _0x9b1fb6={'where':_0x536875[_0xbeed('0x3b')]};return db[_0xbeed('0x40')]['count'](_0x9b1fb6)[_0xbeed('0x26')](function(_0xe0e3ec){_0xbff25['count']=_0xe0e3ec;if(_0x1e4ad8[_0xbeed('0x32')]['includeAll']){_0x536875[_0xbeed('0x41')]=[{'all':!![]}];}return db[_0xbeed('0x40')][_0xbeed('0x42')](_0x536875);})[_0xbeed('0x26')](function(_0x3c6f9d){_0xbff25[_0xbeed('0x43')]=_0x3c6f9d;return _0xbff25;})[_0xbeed('0x26')](respondWithFilteredResult(_0x5b6f9e,_0x536875))['catch'](handleError(_0x5b6f9e,null));};exports[_0xbeed('0x44')]=function(_0x2face2,_0x41713a){var _0x2637f6={'raw':![],'where':{'id':_0x2face2[_0xbeed('0x45')]['id']}},_0x3c920c={};_0x3c920c['model']=_[_0xbeed('0x31')](db[_0xbeed('0x40')]['rawAttributes']);_0x3c920c[_0xbeed('0x32')]=_[_0xbeed('0x31')](_0x2face2[_0xbeed('0x32')]);_0x3c920c[_0xbeed('0x33')]=_[_0xbeed('0x35')](_0x3c920c[_0xbeed('0x30')],_0x3c920c['query']);_0x2637f6[_0xbeed('0x34')]=_[_0xbeed('0x35')](_0x3c920c[_0xbeed('0x30')],qs[_0xbeed('0x36')](_0x2face2[_0xbeed('0x32')]['fields']));_0x2637f6['attributes']=_0x2637f6[_0xbeed('0x34')][_0xbeed('0x37')]?_0x2637f6[_0xbeed('0x34')]:_0x3c920c[_0xbeed('0x30')];if(_0x2face2['query'][_0xbeed('0x46')]){_0x2637f6[_0xbeed('0x41')]=[{'all':!![]}];}_0x2637f6=_['merge']({},_0x2637f6,_0x2face2[_0xbeed('0x3f')]);return db[_0xbeed('0x40')]['find'](_0x2637f6)['then'](handleEntityNotFound(_0x41713a,null))[_0xbeed('0x26')](respondWithResult(_0x41713a,null))[_0xbeed('0x47')](handleError(_0x41713a,null));};exports['create']=function(_0x3674b6,_0x135501){return db[_0xbeed('0x40')][_0xbeed('0x48')](_0x3674b6[_0xbeed('0x49')],{})[_0xbeed('0x26')](respondWithResult(_0x135501,0xc9))[_0xbeed('0x47')](handleError(_0x135501,null));};exports['update']=function(_0xd47f78,_0x4a6814){if(_0xd47f78[_0xbeed('0x49')]['id']){delete _0xd47f78[_0xbeed('0x49')]['id'];}return db['SugarcrmConfiguration']['find']({'where':{'id':_0xd47f78[_0xbeed('0x45')]['id']}})[_0xbeed('0x26')](handleEntityNotFound(_0x4a6814,null))['then'](saveUpdates(_0xd47f78[_0xbeed('0x49')],null))['then'](respondWithResult(_0x4a6814,null))[_0xbeed('0x47')](handleError(_0x4a6814,null));};exports[_0xbeed('0x27')]=function(_0x151d0e,_0x2cbe2a){return db['SugarcrmConfiguration'][_0xbeed('0x4a')]({'where':{'id':_0x151d0e['params']['id']}})[_0xbeed('0x26')](handleEntityNotFound(_0x2cbe2a,null))[_0xbeed('0x26')](removeEntity(_0x2cbe2a,null))[_0xbeed('0x47')](handleError(_0x2cbe2a,null));};exports[_0xbeed('0x4b')]=function(_0x19ef42,_0x29b331,_0x5db8da){var _0x456389={};var _0x1b7476={};var _0x407876;var _0x531139;return db['SugarcrmConfiguration'][_0xbeed('0x4c')]({'where':{'id':_0x19ef42[_0xbeed('0x45')]['id']}})['then'](handleEntityNotFound(_0x29b331,null))[_0xbeed('0x26')](function(_0x373d7c){if(_0x373d7c){_0x407876=_0x373d7c;_0x1b7476[_0xbeed('0x30')]=_[_0xbeed('0x31')](db['SugarcrmField'][_0xbeed('0x2d')]);_0x1b7476['query']=_[_0xbeed('0x31')](_0x19ef42[_0xbeed('0x32')]);_0x1b7476[_0xbeed('0x33')]=_['intersection'](_0x1b7476[_0xbeed('0x30')],_0x1b7476[_0xbeed('0x32')]);_0x456389[_0xbeed('0x34')]=_[_0xbeed('0x35')](_0x1b7476[_0xbeed('0x30')],qs[_0xbeed('0x36')](_0x19ef42[_0xbeed('0x32')]['fields']));_0x456389[_0xbeed('0x34')]=_0x456389[_0xbeed('0x34')][_0xbeed('0x37')]?_0x456389[_0xbeed('0x34')]:_0x1b7476[_0xbeed('0x30')];_0x456389[_0xbeed('0x4d')]=qs[_0xbeed('0x3a')](_0x19ef42[_0xbeed('0x32')]['sort']);_0x456389[_0xbeed('0x3b')]=qs[_0xbeed('0x33')](_['pick'](_0x19ef42[_0xbeed('0x32')],_0x1b7476[_0xbeed('0x33')]));if(_0x19ef42['query'][_0xbeed('0x4e')]){_0x456389[_0xbeed('0x3b')]=_[_0xbeed('0x3d')](_0x456389['where'],{'$or':_[_0xbeed('0x2c')](_0x456389[_0xbeed('0x34')],function(_0x2acf32){var _0x41ee51={};_0x41ee51[_0x2acf32]={'$like':'%'+_0x19ef42['query']['filter']+'%'};return _0x41ee51;})});}_0x456389=_[_0xbeed('0x3d')]({},_0x456389,_0x19ef42['options']);return _0x407876['getFields'](_0x456389);}})['then'](function(_0x5205eb){if(_0x5205eb){_0x531139=_0x5205eb[_0xbeed('0x37')];if(!_0x19ef42['query'][_0xbeed('0x38')](_0xbeed('0x39'))){_0x456389[_0xbeed('0x1f')]=qs['limit'](_0x19ef42[_0xbeed('0x32')]['limit']);_0x456389['offset']=qs[_0xbeed('0x20')](_0x19ef42[_0xbeed('0x32')][_0xbeed('0x20')]);}return _0x407876[_0xbeed('0x4b')](_0x456389);}})[_0xbeed('0x26')](function(_0x4564af){if(_0x4564af){return _0x4564af?{'count':_0x531139,'rows':_0x4564af}:null;}})[_0xbeed('0x26')](respondWithResult(_0x29b331,null))[_0xbeed('0x47')](handleError(_0x29b331,null));};exports[_0xbeed('0x4f')]=function(_0x262a9f,_0x2b14d3,_0x1bc2ac){var _0x34d4e6={};var _0x60afad={};var _0x2e0183;var _0x8bda8;return db['SugarcrmConfiguration']['findOne']({'where':{'id':_0x262a9f['params']['id']}})[_0xbeed('0x26')](handleEntityNotFound(_0x2b14d3,null))['then'](function(_0x40fc39){if(_0x40fc39){_0x2e0183=_0x40fc39;_0x60afad['model']=_['keys'](db[_0xbeed('0x50')][_0xbeed('0x2d')]);_0x60afad[_0xbeed('0x32')]=_['keys'](_0x262a9f[_0xbeed('0x32')]);_0x60afad[_0xbeed('0x33')]=_[_0xbeed('0x35')](_0x60afad[_0xbeed('0x30')],_0x60afad[_0xbeed('0x32')]);_0x34d4e6[_0xbeed('0x34')]=_[_0xbeed('0x35')](_0x60afad[_0xbeed('0x30')],qs[_0xbeed('0x36')](_0x262a9f['query'][_0xbeed('0x36')]));_0x34d4e6[_0xbeed('0x34')]=_0x34d4e6[_0xbeed('0x34')][_0xbeed('0x37')]?_0x34d4e6[_0xbeed('0x34')]:_0x60afad['model'];_0x34d4e6[_0xbeed('0x4d')]=qs[_0xbeed('0x3a')](_0x262a9f['query'][_0xbeed('0x3a')]);_0x34d4e6[_0xbeed('0x3b')]=qs[_0xbeed('0x33')](_[_0xbeed('0x3c')](_0x262a9f[_0xbeed('0x32')],_0x60afad['filters']));if(_0x262a9f[_0xbeed('0x32')]['filter']){_0x34d4e6[_0xbeed('0x3b')]=_['merge'](_0x34d4e6[_0xbeed('0x3b')],{'$or':_[_0xbeed('0x2c')](_0x34d4e6[_0xbeed('0x34')],function(_0x3b969b){var _0x1994a9={};_0x1994a9[_0x3b969b]={'$like':'%'+_0x262a9f[_0xbeed('0x32')][_0xbeed('0x4e')]+'%'};return _0x1994a9;})});}_0x34d4e6=_['merge']({},_0x34d4e6,_0x262a9f['options']);return _0x2e0183['getSubjects'](_0x34d4e6);}})[_0xbeed('0x26')](function(_0x10c846){if(_0x10c846){_0x8bda8=_0x10c846[_0xbeed('0x37')];if(!_0x262a9f[_0xbeed('0x32')]['hasOwnProperty'](_0xbeed('0x39'))){_0x34d4e6[_0xbeed('0x1f')]=qs[_0xbeed('0x1f')](_0x262a9f[_0xbeed('0x32')][_0xbeed('0x1f')]);_0x34d4e6[_0xbeed('0x20')]=qs[_0xbeed('0x20')](_0x262a9f[_0xbeed('0x32')]['offset']);}return _0x2e0183[_0xbeed('0x4f')](_0x34d4e6);}})[_0xbeed('0x26')](function(_0x5ab2a9){if(_0x5ab2a9){return _0x5ab2a9?{'count':_0x8bda8,'rows':_0x5ab2a9}:null;}})[_0xbeed('0x26')](respondWithResult(_0x2b14d3,null))['catch'](handleError(_0x2b14d3,null));};exports['getDescriptions']=function(_0x4a07a9,_0x33d74b,_0x21055d){var _0x238af3={};var _0x40289b={};var _0x24e061;var _0x372df5;return db['SugarcrmConfiguration']['findOne']({'where':{'id':_0x4a07a9['params']['id']}})[_0xbeed('0x26')](handleEntityNotFound(_0x33d74b,null))[_0xbeed('0x26')](function(_0x43d1f5){if(_0x43d1f5){_0x24e061=_0x43d1f5;_0x40289b['model']=_[_0xbeed('0x31')](db[_0xbeed('0x50')][_0xbeed('0x2d')]);_0x40289b[_0xbeed('0x32')]=_[_0xbeed('0x31')](_0x4a07a9[_0xbeed('0x32')]);_0x40289b[_0xbeed('0x33')]=_[_0xbeed('0x35')](_0x40289b[_0xbeed('0x30')],_0x40289b[_0xbeed('0x32')]);_0x238af3[_0xbeed('0x34')]=_[_0xbeed('0x35')](_0x40289b[_0xbeed('0x30')],qs[_0xbeed('0x36')](_0x4a07a9[_0xbeed('0x32')][_0xbeed('0x36')]));_0x238af3[_0xbeed('0x34')]=_0x238af3[_0xbeed('0x34')][_0xbeed('0x37')]?_0x238af3[_0xbeed('0x34')]:_0x40289b['model'];_0x238af3[_0xbeed('0x4d')]=qs['sort'](_0x4a07a9[_0xbeed('0x32')]['sort']);_0x238af3[_0xbeed('0x3b')]=qs['filters'](_[_0xbeed('0x3c')](_0x4a07a9[_0xbeed('0x32')],_0x40289b[_0xbeed('0x33')]));if(_0x4a07a9['query'][_0xbeed('0x4e')]){_0x238af3['where']=_[_0xbeed('0x3d')](_0x238af3['where'],{'$or':_[_0xbeed('0x2c')](_0x238af3[_0xbeed('0x34')],function(_0x85503b){var _0x17f7c4={};_0x17f7c4[_0x85503b]={'$like':'%'+_0x4a07a9['query']['filter']+'%'};return _0x17f7c4;})});}_0x238af3=_[_0xbeed('0x3d')]({},_0x238af3,_0x4a07a9[_0xbeed('0x3f')]);return _0x24e061[_0xbeed('0x51')](_0x238af3);}})[_0xbeed('0x26')](function(_0x1f2232){if(_0x1f2232){_0x372df5=_0x1f2232[_0xbeed('0x37')];if(!_0x4a07a9[_0xbeed('0x32')]['hasOwnProperty'](_0xbeed('0x39'))){_0x238af3['limit']=qs[_0xbeed('0x1f')](_0x4a07a9[_0xbeed('0x32')][_0xbeed('0x1f')]);_0x238af3['offset']=qs['offset'](_0x4a07a9[_0xbeed('0x32')][_0xbeed('0x20')]);}return _0x24e061['getDescriptions'](_0x238af3);}})[_0xbeed('0x26')](function(_0x5c5bc1){if(_0x5c5bc1){return _0x5c5bc1?{'count':_0x372df5,'rows':_0x5c5bc1}:null;}})['then'](respondWithResult(_0x33d74b,null))[_0xbeed('0x47')](handleError(_0x33d74b,null));};
\ No newline at end of file
+var _0x6f5a=['undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','error','stack','name','send','index','SugarcrmConfiguration','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','map','VIRTUAL','includeAll','findAll','show','params','rawAttributes','include','options','find','create','body','catch','SugarcrmField','getFields','getSubjects','findOne','nolimit','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset'];(function(_0x2ee20d,_0x354e70){var _0xade530=function(_0x1db7cc){while(--_0x1db7cc){_0x2ee20d['push'](_0x2ee20d['shift']());}};_0xade530(++_0x354e70);}(_0x6f5a,0x1d9));var _0xa6f5=function(_0x4e5f1e,_0x1b376a){_0x4e5f1e=_0x4e5f1e-0x0;var _0x19fbc7=_0x6f5a[_0x4e5f1e];return _0x19fbc7;};'use strict';var emlformat=require(_0xa6f5('0x0'));var rimraf=require(_0xa6f5('0x1'));var zipdir=require(_0xa6f5('0x2'));var jsonpatch=require(_0xa6f5('0x3'));var rp=require(_0xa6f5('0x4'));var moment=require(_0xa6f5('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xa6f5('0x6'));var util=require(_0xa6f5('0x7'));var path=require(_0xa6f5('0x8'));var sox=require(_0xa6f5('0x9'));var csv=require(_0xa6f5('0xa'));var ejs=require(_0xa6f5('0xb'));var fs=require('fs');var fs_extra=require(_0xa6f5('0xc'));var _=require(_0xa6f5('0xd'));var squel=require('squel');var crypto=require(_0xa6f5('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xa6f5('0xf'));var toCsv=require(_0xa6f5('0xa'));var querystring=require(_0xa6f5('0x10'));var Papa=require(_0xa6f5('0x11'));var Redis=require(_0xa6f5('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xa6f5('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa6f5('0x14'));var logger=require(_0xa6f5('0x15'))(_0xa6f5('0x16'));var utils=require(_0xa6f5('0x17'));var config=require(_0xa6f5('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xa6f5('0x19'))['db'];function respondWithStatusCode(_0x525403,_0x204b08){_0x204b08=_0x204b08||0xcc;return function(_0x14f0c1){if(_0x14f0c1){return _0x525403[_0xa6f5('0x1a')](_0x204b08);}return _0x525403['status'](_0x204b08)[_0xa6f5('0x1b')]();};}function respondWithResult(_0x465c3d,_0x581c5a){_0x581c5a=_0x581c5a||0xc8;return function(_0x20955f){if(_0x20955f){return _0x465c3d[_0xa6f5('0x1c')](_0x581c5a)[_0xa6f5('0x1d')](_0x20955f);}};}function respondWithFilteredResult(_0x492d0a,_0xa885dd){return function(_0x515683){if(_0x515683){var _0x531b20=typeof _0xa885dd[_0xa6f5('0x1e')]===_0xa6f5('0x1f')&&typeof _0xa885dd[_0xa6f5('0x20')]===_0xa6f5('0x1f');var _0x1b211d=_0x515683[_0xa6f5('0x21')];var _0xd7e6f2=_0x531b20?0x0:_0xa885dd[_0xa6f5('0x1e')];var _0xb0fb4a=_0x531b20?_0x515683['count']:_0xa885dd[_0xa6f5('0x1e')]+_0xa885dd[_0xa6f5('0x20')];var _0x30feb8;if(_0xb0fb4a>=_0x1b211d){_0xb0fb4a=_0x1b211d;_0x30feb8=0xc8;}else{_0x30feb8=0xce;}_0x492d0a[_0xa6f5('0x1c')](_0x30feb8);return _0x492d0a[_0xa6f5('0x22')](_0xa6f5('0x23'),_0xd7e6f2+'-'+_0xb0fb4a+'/'+_0x1b211d)[_0xa6f5('0x1d')](_0x515683);}return null;};}function patchUpdates(_0x2b0db0){return function(_0x4ecbec){try{jsonpatch[_0xa6f5('0x24')](_0x4ecbec,_0x2b0db0,!![]);}catch(_0x29258a){return BPromise[_0xa6f5('0x25')](_0x29258a);}return _0x4ecbec['save']();};}function saveUpdates(_0x3c6bb3,_0x19774b){return function(_0x19183b){if(_0x19183b){return _0x19183b[_0xa6f5('0x26')](_0x3c6bb3)[_0xa6f5('0x27')](function(_0x37bd8a){return _0x37bd8a;});}return null;};}function removeEntity(_0x10c8e4,_0x2f05bb){return function(_0x4aaf61){if(_0x4aaf61){return _0x4aaf61[_0xa6f5('0x28')]()[_0xa6f5('0x27')](function(){_0x10c8e4[_0xa6f5('0x1c')](0xcc)[_0xa6f5('0x1b')]();});}};}function handleEntityNotFound(_0x1c7a3a,_0x567204){return function(_0x240143){if(!_0x240143){_0x1c7a3a[_0xa6f5('0x1a')](0x194);}return _0x240143;};}function handleError(_0x3d76d1,_0x2e7d05){_0x2e7d05=_0x2e7d05||0x1f4;return function(_0x50263a){logger[_0xa6f5('0x29')](_0x50263a[_0xa6f5('0x2a')]);if(_0x50263a[_0xa6f5('0x2b')]){delete _0x50263a['name'];}_0x3d76d1[_0xa6f5('0x1c')](_0x2e7d05)[_0xa6f5('0x2c')](_0x50263a);};}exports[_0xa6f5('0x2d')]=function(_0xdd884f,_0x4e2026){var _0x3562bb={},_0x2a0a7c={},_0x42e945={'count':0x0,'rows':[]};var _0x543406=_['map'](db[_0xa6f5('0x2e')]['rawAttributes'],function(_0x598c32){return{'name':_0x598c32[_0xa6f5('0x2f')],'type':_0x598c32[_0xa6f5('0x30')][_0xa6f5('0x31')]};});_0x2a0a7c[_0xa6f5('0x32')]=_['map'](_0x543406,_0xa6f5('0x2b'));_0x2a0a7c[_0xa6f5('0x33')]=_[_0xa6f5('0x34')](_0xdd884f[_0xa6f5('0x33')]);_0x2a0a7c[_0xa6f5('0x35')]=_[_0xa6f5('0x36')](_0x2a0a7c[_0xa6f5('0x32')],_0x2a0a7c[_0xa6f5('0x33')]);_0x3562bb[_0xa6f5('0x37')]=_[_0xa6f5('0x36')](_0x2a0a7c[_0xa6f5('0x32')],qs[_0xa6f5('0x38')](_0xdd884f['query'][_0xa6f5('0x38')]));_0x3562bb[_0xa6f5('0x37')]=_0x3562bb[_0xa6f5('0x37')][_0xa6f5('0x39')]?_0x3562bb[_0xa6f5('0x37')]:_0x2a0a7c[_0xa6f5('0x32')];if(!_0xdd884f[_0xa6f5('0x33')][_0xa6f5('0x3a')]('nolimit')){_0x3562bb['limit']=qs['limit'](_0xdd884f['query'][_0xa6f5('0x20')]);_0x3562bb[_0xa6f5('0x1e')]=qs[_0xa6f5('0x1e')](_0xdd884f['query'][_0xa6f5('0x1e')]);}_0x3562bb[_0xa6f5('0x3b')]=qs[_0xa6f5('0x3c')](_0xdd884f[_0xa6f5('0x33')][_0xa6f5('0x3c')]);_0x3562bb[_0xa6f5('0x3d')]=qs[_0xa6f5('0x35')](_[_0xa6f5('0x3e')](_0xdd884f[_0xa6f5('0x33')],_0x2a0a7c[_0xa6f5('0x35')]),_0x543406);if(_0xdd884f[_0xa6f5('0x33')][_0xa6f5('0x3f')]){_0x3562bb[_0xa6f5('0x3d')]=_[_0xa6f5('0x40')](_0x3562bb['where'],{'$or':_[_0xa6f5('0x41')](_0x543406,function(_0x322b62){if(_0x322b62['type']!==_0xa6f5('0x42')){var _0x3d858e={};_0x3d858e[_0x322b62[_0xa6f5('0x2b')]]={'$like':'%'+_0xdd884f['query'][_0xa6f5('0x3f')]+'%'};return _0x3d858e;}})});}_0x3562bb=_['merge']({},_0x3562bb,_0xdd884f['options']);var _0x30a917={'where':_0x3562bb[_0xa6f5('0x3d')]};return db[_0xa6f5('0x2e')][_0xa6f5('0x21')](_0x30a917)[_0xa6f5('0x27')](function(_0x78282e){_0x42e945[_0xa6f5('0x21')]=_0x78282e;if(_0xdd884f['query'][_0xa6f5('0x43')]){_0x3562bb['include']=[{'all':!![]}];}return db[_0xa6f5('0x2e')][_0xa6f5('0x44')](_0x3562bb);})[_0xa6f5('0x27')](function(_0x4bcb60){_0x42e945['rows']=_0x4bcb60;return _0x42e945;})[_0xa6f5('0x27')](respondWithFilteredResult(_0x4e2026,_0x3562bb))['catch'](handleError(_0x4e2026,null));};exports[_0xa6f5('0x45')]=function(_0x171c6d,_0x136bcd){var _0x5e9a05={'raw':![],'where':{'id':_0x171c6d[_0xa6f5('0x46')]['id']}},_0x1932f7={};_0x1932f7[_0xa6f5('0x32')]=_['keys'](db[_0xa6f5('0x2e')][_0xa6f5('0x47')]);_0x1932f7[_0xa6f5('0x33')]=_[_0xa6f5('0x34')](_0x171c6d[_0xa6f5('0x33')]);_0x1932f7[_0xa6f5('0x35')]=_['intersection'](_0x1932f7[_0xa6f5('0x32')],_0x1932f7[_0xa6f5('0x33')]);_0x5e9a05['attributes']=_['intersection'](_0x1932f7[_0xa6f5('0x32')],qs[_0xa6f5('0x38')](_0x171c6d['query'][_0xa6f5('0x38')]));_0x5e9a05[_0xa6f5('0x37')]=_0x5e9a05[_0xa6f5('0x37')][_0xa6f5('0x39')]?_0x5e9a05['attributes']:_0x1932f7['model'];if(_0x171c6d[_0xa6f5('0x33')][_0xa6f5('0x43')]){_0x5e9a05[_0xa6f5('0x48')]=[{'all':!![]}];}_0x5e9a05=_[_0xa6f5('0x40')]({},_0x5e9a05,_0x171c6d[_0xa6f5('0x49')]);return db[_0xa6f5('0x2e')][_0xa6f5('0x4a')](_0x5e9a05)[_0xa6f5('0x27')](handleEntityNotFound(_0x136bcd,null))[_0xa6f5('0x27')](respondWithResult(_0x136bcd,null))['catch'](handleError(_0x136bcd,null));};exports[_0xa6f5('0x4b')]=function(_0x3f46ac,_0x1535e9){return db[_0xa6f5('0x2e')]['create'](_0x3f46ac[_0xa6f5('0x4c')],{})['then'](respondWithResult(_0x1535e9,0xc9))['catch'](handleError(_0x1535e9,null));};exports[_0xa6f5('0x26')]=function(_0x302672,_0xd51a05){if(_0x302672[_0xa6f5('0x4c')]['id']){delete _0x302672[_0xa6f5('0x4c')]['id'];}return db['SugarcrmConfiguration']['find']({'where':{'id':_0x302672[_0xa6f5('0x46')]['id']}})['then'](handleEntityNotFound(_0xd51a05,null))[_0xa6f5('0x27')](saveUpdates(_0x302672[_0xa6f5('0x4c')],null))[_0xa6f5('0x27')](respondWithResult(_0xd51a05,null))[_0xa6f5('0x4d')](handleError(_0xd51a05,null));};exports[_0xa6f5('0x28')]=function(_0x26e3ae,_0x397b36){return db['SugarcrmConfiguration'][_0xa6f5('0x4a')]({'where':{'id':_0x26e3ae[_0xa6f5('0x46')]['id']}})[_0xa6f5('0x27')](handleEntityNotFound(_0x397b36,null))['then'](removeEntity(_0x397b36,null))[_0xa6f5('0x4d')](handleError(_0x397b36,null));};exports['getFields']=function(_0x1107b0,_0x55b412,_0x5d1f62){var _0x2ccb87={};var _0x414955={};var _0x51191e;var _0x3d9c11;return db[_0xa6f5('0x2e')]['findOne']({'where':{'id':_0x1107b0[_0xa6f5('0x46')]['id']}})[_0xa6f5('0x27')](handleEntityNotFound(_0x55b412,null))[_0xa6f5('0x27')](function(_0x105cae){if(_0x105cae){_0x51191e=_0x105cae;_0x414955[_0xa6f5('0x32')]=_['keys'](db[_0xa6f5('0x4e')]['rawAttributes']);_0x414955['query']=_[_0xa6f5('0x34')](_0x1107b0[_0xa6f5('0x33')]);_0x414955[_0xa6f5('0x35')]=_[_0xa6f5('0x36')](_0x414955[_0xa6f5('0x32')],_0x414955['query']);_0x2ccb87['attributes']=_['intersection'](_0x414955['model'],qs[_0xa6f5('0x38')](_0x1107b0[_0xa6f5('0x33')][_0xa6f5('0x38')]));_0x2ccb87[_0xa6f5('0x37')]=_0x2ccb87[_0xa6f5('0x37')][_0xa6f5('0x39')]?_0x2ccb87[_0xa6f5('0x37')]:_0x414955[_0xa6f5('0x32')];_0x2ccb87['order']=qs[_0xa6f5('0x3c')](_0x1107b0[_0xa6f5('0x33')][_0xa6f5('0x3c')]);_0x2ccb87[_0xa6f5('0x3d')]=qs[_0xa6f5('0x35')](_[_0xa6f5('0x3e')](_0x1107b0[_0xa6f5('0x33')],_0x414955['filters']));if(_0x1107b0[_0xa6f5('0x33')]['filter']){_0x2ccb87['where']=_['merge'](_0x2ccb87['where'],{'$or':_['map'](_0x2ccb87['attributes'],function(_0x37ca39){var _0x5e6a4b={};_0x5e6a4b[_0x37ca39]={'$like':'%'+_0x1107b0['query'][_0xa6f5('0x3f')]+'%'};return _0x5e6a4b;})});}_0x2ccb87=_[_0xa6f5('0x40')]({},_0x2ccb87,_0x1107b0['options']);return _0x51191e['getFields'](_0x2ccb87);}})[_0xa6f5('0x27')](function(_0x287bd5){if(_0x287bd5){_0x3d9c11=_0x287bd5['length'];if(!_0x1107b0[_0xa6f5('0x33')][_0xa6f5('0x3a')]('nolimit')){_0x2ccb87['limit']=qs[_0xa6f5('0x20')](_0x1107b0[_0xa6f5('0x33')][_0xa6f5('0x20')]);_0x2ccb87['offset']=qs[_0xa6f5('0x1e')](_0x1107b0[_0xa6f5('0x33')][_0xa6f5('0x1e')]);}return _0x51191e[_0xa6f5('0x4f')](_0x2ccb87);}})[_0xa6f5('0x27')](function(_0x5119a7){if(_0x5119a7){return _0x5119a7?{'count':_0x3d9c11,'rows':_0x5119a7}:null;}})['then'](respondWithResult(_0x55b412,null))[_0xa6f5('0x4d')](handleError(_0x55b412,null));};exports[_0xa6f5('0x50')]=function(_0x5a6c4f,_0xcf1273,_0x5ab183){var _0x2b9731={};var _0x3e387d={};var _0x5945a4;var _0x427383;return db[_0xa6f5('0x2e')][_0xa6f5('0x51')]({'where':{'id':_0x5a6c4f[_0xa6f5('0x46')]['id']}})[_0xa6f5('0x27')](handleEntityNotFound(_0xcf1273,null))[_0xa6f5('0x27')](function(_0x204423){if(_0x204423){_0x5945a4=_0x204423;_0x3e387d[_0xa6f5('0x32')]=_[_0xa6f5('0x34')](db[_0xa6f5('0x4e')][_0xa6f5('0x47')]);_0x3e387d[_0xa6f5('0x33')]=_[_0xa6f5('0x34')](_0x5a6c4f[_0xa6f5('0x33')]);_0x3e387d[_0xa6f5('0x35')]=_[_0xa6f5('0x36')](_0x3e387d[_0xa6f5('0x32')],_0x3e387d[_0xa6f5('0x33')]);_0x2b9731[_0xa6f5('0x37')]=_[_0xa6f5('0x36')](_0x3e387d[_0xa6f5('0x32')],qs[_0xa6f5('0x38')](_0x5a6c4f[_0xa6f5('0x33')]['fields']));_0x2b9731[_0xa6f5('0x37')]=_0x2b9731[_0xa6f5('0x37')][_0xa6f5('0x39')]?_0x2b9731[_0xa6f5('0x37')]:_0x3e387d[_0xa6f5('0x32')];_0x2b9731[_0xa6f5('0x3b')]=qs['sort'](_0x5a6c4f[_0xa6f5('0x33')][_0xa6f5('0x3c')]);_0x2b9731[_0xa6f5('0x3d')]=qs['filters'](_[_0xa6f5('0x3e')](_0x5a6c4f['query'],_0x3e387d[_0xa6f5('0x35')]));if(_0x5a6c4f[_0xa6f5('0x33')][_0xa6f5('0x3f')]){_0x2b9731[_0xa6f5('0x3d')]=_[_0xa6f5('0x40')](_0x2b9731[_0xa6f5('0x3d')],{'$or':_[_0xa6f5('0x41')](_0x2b9731[_0xa6f5('0x37')],function(_0x4e910c){var _0x551511={};_0x551511[_0x4e910c]={'$like':'%'+_0x5a6c4f[_0xa6f5('0x33')][_0xa6f5('0x3f')]+'%'};return _0x551511;})});}_0x2b9731=_['merge']({},_0x2b9731,_0x5a6c4f[_0xa6f5('0x49')]);return _0x5945a4[_0xa6f5('0x50')](_0x2b9731);}})[_0xa6f5('0x27')](function(_0x4b314b){if(_0x4b314b){_0x427383=_0x4b314b['length'];if(!_0x5a6c4f[_0xa6f5('0x33')][_0xa6f5('0x3a')](_0xa6f5('0x52'))){_0x2b9731[_0xa6f5('0x20')]=qs[_0xa6f5('0x20')](_0x5a6c4f[_0xa6f5('0x33')]['limit']);_0x2b9731[_0xa6f5('0x1e')]=qs[_0xa6f5('0x1e')](_0x5a6c4f[_0xa6f5('0x33')][_0xa6f5('0x1e')]);}return _0x5945a4['getSubjects'](_0x2b9731);}})[_0xa6f5('0x27')](function(_0x44d6ec){if(_0x44d6ec){return _0x44d6ec?{'count':_0x427383,'rows':_0x44d6ec}:null;}})[_0xa6f5('0x27')](respondWithResult(_0xcf1273,null))[_0xa6f5('0x4d')](handleError(_0xcf1273,null));};exports[_0xa6f5('0x53')]=function(_0x1a793d,_0x22272d,_0x7e68fe){var _0x3ec185={};var _0x78c3cf={};var _0x45cb80;var _0x228065;return db[_0xa6f5('0x2e')]['findOne']({'where':{'id':_0x1a793d[_0xa6f5('0x46')]['id']}})[_0xa6f5('0x27')](handleEntityNotFound(_0x22272d,null))[_0xa6f5('0x27')](function(_0x3e2202){if(_0x3e2202){_0x45cb80=_0x3e2202;_0x78c3cf[_0xa6f5('0x32')]=_[_0xa6f5('0x34')](db['SugarcrmField']['rawAttributes']);_0x78c3cf[_0xa6f5('0x33')]=_[_0xa6f5('0x34')](_0x1a793d[_0xa6f5('0x33')]);_0x78c3cf[_0xa6f5('0x35')]=_[_0xa6f5('0x36')](_0x78c3cf[_0xa6f5('0x32')],_0x78c3cf['query']);_0x3ec185['attributes']=_[_0xa6f5('0x36')](_0x78c3cf[_0xa6f5('0x32')],qs[_0xa6f5('0x38')](_0x1a793d[_0xa6f5('0x33')][_0xa6f5('0x38')]));_0x3ec185[_0xa6f5('0x37')]=_0x3ec185[_0xa6f5('0x37')][_0xa6f5('0x39')]?_0x3ec185[_0xa6f5('0x37')]:_0x78c3cf['model'];_0x3ec185[_0xa6f5('0x3b')]=qs[_0xa6f5('0x3c')](_0x1a793d[_0xa6f5('0x33')][_0xa6f5('0x3c')]);_0x3ec185[_0xa6f5('0x3d')]=qs['filters'](_[_0xa6f5('0x3e')](_0x1a793d[_0xa6f5('0x33')],_0x78c3cf[_0xa6f5('0x35')]));if(_0x1a793d[_0xa6f5('0x33')][_0xa6f5('0x3f')]){_0x3ec185[_0xa6f5('0x3d')]=_['merge'](_0x3ec185[_0xa6f5('0x3d')],{'$or':_[_0xa6f5('0x41')](_0x3ec185[_0xa6f5('0x37')],function(_0xf603b3){var _0xdaa49c={};_0xdaa49c[_0xf603b3]={'$like':'%'+_0x1a793d['query'][_0xa6f5('0x3f')]+'%'};return _0xdaa49c;})});}_0x3ec185=_[_0xa6f5('0x40')]({},_0x3ec185,_0x1a793d[_0xa6f5('0x49')]);return _0x45cb80['getDescriptions'](_0x3ec185);}})['then'](function(_0x4327ab){if(_0x4327ab){_0x228065=_0x4327ab[_0xa6f5('0x39')];if(!_0x1a793d['query'][_0xa6f5('0x3a')](_0xa6f5('0x52'))){_0x3ec185[_0xa6f5('0x20')]=qs['limit'](_0x1a793d[_0xa6f5('0x33')][_0xa6f5('0x20')]);_0x3ec185[_0xa6f5('0x1e')]=qs[_0xa6f5('0x1e')](_0x1a793d[_0xa6f5('0x33')][_0xa6f5('0x1e')]);}return _0x45cb80[_0xa6f5('0x53')](_0x3ec185);}})[_0xa6f5('0x27')](function(_0x2a7234){if(_0x2a7234){return _0x2a7234?{'count':_0x228065,'rows':_0x2a7234}:null;}})[_0xa6f5('0x27')](respondWithResult(_0x22272d,null))[_0xa6f5('0x4d')](handleError(_0x22272d,null));};
\ No newline at end of file
index ed371a6..c1fe546 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ac4=['../../config/environment','./intSugarcrmConfiguration.attributes','exports','define','../../config/logger','api','bluebird','request-promise','path','rimraf'];(function(_0x3bb12c,_0xb8b0ea){var _0x306928=function(_0x414a15){while(--_0x414a15){_0x3bb12c['push'](_0x3bb12c['shift']());}};_0x306928(++_0xb8b0ea);}(_0x6ac4,0x11c));var _0x46ac=function(_0x5de997,_0x4191b9){_0x5de997=_0x5de997-0x0;var _0x37106a=_0x6ac4[_0x5de997];return _0x37106a;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x46ac('0x0'))(_0x46ac('0x1'));var moment=require('moment');var BPromise=require(_0x46ac('0x2'));var rp=require(_0x46ac('0x3'));var fs=require('fs');var path=require(_0x46ac('0x4'));var rimraf=require(_0x46ac('0x5'));var config=require(_0x46ac('0x6'));var attributes=require(_0x46ac('0x7'));module[_0x46ac('0x8')]=function(_0x42b2e1,_0x570c07){return _0x42b2e1[_0x46ac('0x9')]('SugarcrmConfiguration',attributes,{'tableName':'int_sugarcrm_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xab0f=['define','SugarcrmConfiguration','lodash','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./intSugarcrmConfiguration.attributes','exports'];(function(_0x4e8286,_0x4eaeb4){var _0x44a440=function(_0x5e0907){while(--_0x5e0907){_0x4e8286['push'](_0x4e8286['shift']());}};_0x44a440(++_0x4eaeb4);}(_0xab0f,0x182));var _0xfab0=function(_0x4843b3,_0x2cb00f){_0x4843b3=_0x4843b3-0x0;var _0x1755f6=_0xab0f[_0x4843b3];return _0x1755f6;};'use strict';var _=require(_0xfab0('0x0'));var util=require('util');var logger=require(_0xfab0('0x1'))(_0xfab0('0x2'));var moment=require(_0xfab0('0x3'));var BPromise=require(_0xfab0('0x4'));var rp=require(_0xfab0('0x5'));var fs=require('fs');var path=require(_0xfab0('0x6'));var rimraf=require('rimraf');var config=require(_0xfab0('0x7'));var attributes=require(_0xfab0('0x8'));module[_0xfab0('0x9')]=function(_0x1acea2,_0x248e7c){return _0x1acea2[_0xfab0('0xa')](_0xfab0('0xb'),attributes,{'tableName':'int_sugarcrm_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 74cfbd0..a2adaaa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd6f=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','request\x20sent','debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','error','code','message','info','SugarcrmConfiguration,\x20%s,\x20%s','result','catch','lodash','util','moment','randomstring','ioredis'];(function(_0x41dcf7,_0x4d877a){var _0x780b1f=function(_0x69c215){while(--_0x69c215){_0x41dcf7['push'](_0x41dcf7['shift']());}};_0x780b1f(++_0x4d877a);}(_0xcd6f,0x182));var _0xfcd6=function(_0x1892f2,_0x1cb5f7){_0x1892f2=_0x1892f2-0x0;var _0x5a8d75=_0xcd6f[_0x1892f2];return _0x5a8d75;};'use strict';var _=require(_0xfcd6('0x0'));var util=require(_0xfcd6('0x1'));var moment=require(_0xfcd6('0x2'));var BPromise=require('bluebird');var rs=require(_0xfcd6('0x3'));var fs=require('fs');var Redis=require(_0xfcd6('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xfcd6('0x5'));var logger=require(_0xfcd6('0x6'))(_0xfcd6('0x7'));var config=require(_0xfcd6('0x8'));var jayson=require(_0xfcd6('0x9'));var client=jayson[_0xfcd6('0xa')][_0xfcd6('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x414202,_0x269afe,_0x467a1b){return new BPromise(function(_0x58f966,_0x7cc6b5){return client[_0xfcd6('0xc')](_0x414202,_0x467a1b)['then'](function(_0x3d16dc){logger['info']('SugarcrmConfiguration,\x20%s,\x20%s',_0x269afe,_0xfcd6('0xd'));logger[_0xfcd6('0xe')](_0xfcd6('0xf'),_0x269afe,'request\x20sent',JSON['stringify'](_0x3d16dc));if(_0x3d16dc[_0xfcd6('0x10')]){if(_0x3d16dc[_0xfcd6('0x10')][_0xfcd6('0x11')]===0x1f4){logger[_0xfcd6('0x10')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x269afe,_0x3d16dc[_0xfcd6('0x10')][_0xfcd6('0x12')]);return _0x7cc6b5(_0x3d16dc[_0xfcd6('0x10')][_0xfcd6('0x12')]);}logger[_0xfcd6('0x10')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x269afe,_0x3d16dc[_0xfcd6('0x10')]['message']);return _0x58f966(_0x3d16dc['error'][_0xfcd6('0x12')]);}else{logger[_0xfcd6('0x13')](_0xfcd6('0x14'),_0x269afe,'request\x20sent');_0x58f966(_0x3d16dc[_0xfcd6('0x15')][_0xfcd6('0x12')]);}})[_0xfcd6('0x16')](function(_0x2388bc){logger[_0xfcd6('0x10')](_0xfcd6('0x14'),_0x269afe,_0x2388bc);_0x7cc6b5(_0x2388bc);});});}
\ No newline at end of file
+var _0x72a8=['catch','lodash','util','moment','../../mysqldb','../../config/utils','../../config/logger','rpc','http','info','SugarcrmConfiguration,\x20%s,\x20%s','request\x20sent','debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','error','code','message'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x72a8,0x1bb));var _0x872a=function(_0xcc652c,_0x2969ed){_0xcc652c=_0xcc652c-0x0;var _0x43174e=_0x72a8[_0xcc652c];return _0x43174e;};'use strict';var _=require(_0x872a('0x0'));var util=require(_0x872a('0x1'));var moment=require(_0x872a('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x872a('0x3'))['db'];var utils=require(_0x872a('0x4'));var logger=require(_0x872a('0x5'))(_0x872a('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x872a('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x16c467,_0x49d0ce,_0xf5d000){return new BPromise(function(_0x489ef7,_0x2e35a6){return client['request'](_0x16c467,_0xf5d000)['then'](function(_0x5c202d){logger[_0x872a('0x8')](_0x872a('0x9'),_0x49d0ce,_0x872a('0xa'));logger[_0x872a('0xb')](_0x872a('0xc'),_0x49d0ce,'request\x20sent',JSON['stringify'](_0x5c202d));if(_0x5c202d['error']){if(_0x5c202d[_0x872a('0xd')][_0x872a('0xe')]===0x1f4){logger['error'](_0x872a('0x9'),_0x49d0ce,_0x5c202d['error'][_0x872a('0xf')]);return _0x2e35a6(_0x5c202d['error'][_0x872a('0xf')]);}logger[_0x872a('0xd')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x49d0ce,_0x5c202d[_0x872a('0xd')][_0x872a('0xf')]);return _0x489ef7(_0x5c202d[_0x872a('0xd')][_0x872a('0xf')]);}else{logger[_0x872a('0x8')](_0x872a('0x9'),_0x49d0ce,_0x872a('0xa'));_0x489ef7(_0x5c202d['result']['message']);}})[_0x872a('0x10')](function(_0x10ad84){logger[_0x872a('0xd')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x49d0ce,_0x10ad84);_0x2e35a6(_0x10ad84);});});}
\ No newline at end of file
index 7287ca7..021f452 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fd3=['/:id','show','post','create','put','delete','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./intSugarcrmField.controller','get','isAuthenticated','index'];(function(_0x254ea6,_0x226eee){var _0xe70f55=function(_0x1a4673){while(--_0x1a4673){_0x254ea6['push'](_0x254ea6['shift']());}};_0xe70f55(++_0x226eee);}(_0x7fd3,0x1a4));var _0x37fd=function(_0xd2b324,_0x46a4f6){_0xd2b324=_0xd2b324-0x0;var _0x50b9b0=_0x7fd3[_0xd2b324];return _0x50b9b0;};'use strict';var multer=require(_0x37fd('0x0'));var util=require(_0x37fd('0x1'));var path=require(_0x37fd('0x2'));var timeout=require(_0x37fd('0x3'));var express=require(_0x37fd('0x4'));var router=express[_0x37fd('0x5')]();var fs_extra=require(_0x37fd('0x6'));var auth=require(_0x37fd('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x37fd('0x8'));router[_0x37fd('0x9')]('/',auth[_0x37fd('0xa')](),controller[_0x37fd('0xb')]);router['get'](_0x37fd('0xc'),auth[_0x37fd('0xa')](),controller[_0x37fd('0xd')]);router[_0x37fd('0xe')]('/',auth[_0x37fd('0xa')](),controller[_0x37fd('0xf')]);router[_0x37fd('0x10')](_0x37fd('0xc'),auth[_0x37fd('0xa')](),controller['update']);router[_0x37fd('0x11')](_0x37fd('0xc'),auth[_0x37fd('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xfb24=['isAuthenticated','index','/:id','show','post','create','put','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmField.controller','get'];(function(_0x22ea66,_0x30123a){var _0x529757=function(_0x2340e){while(--_0x2340e){_0x22ea66['push'](_0x22ea66['shift']());}};_0x529757(++_0x30123a);}(_0xfb24,0xc6));var _0x4fb2=function(_0x1cbd7b,_0x4da717){_0x1cbd7b=_0x1cbd7b-0x0;var _0xa37553=_0xfb24[_0x1cbd7b];return _0xa37553;};'use strict';var multer=require(_0x4fb2('0x0'));var util=require(_0x4fb2('0x1'));var path=require(_0x4fb2('0x2'));var timeout=require(_0x4fb2('0x3'));var express=require(_0x4fb2('0x4'));var router=express[_0x4fb2('0x5')]();var fs_extra=require(_0x4fb2('0x6'));var auth=require(_0x4fb2('0x7'));var interaction=require(_0x4fb2('0x8'));var config=require(_0x4fb2('0x9'));var controller=require(_0x4fb2('0xa'));router[_0x4fb2('0xb')]('/',auth[_0x4fb2('0xc')](),controller[_0x4fb2('0xd')]);router['get'](_0x4fb2('0xe'),auth['isAuthenticated'](),controller[_0x4fb2('0xf')]);router[_0x4fb2('0x10')]('/',auth[_0x4fb2('0xc')](),controller[_0x4fb2('0x11')]);router[_0x4fb2('0x12')](_0x4fb2('0xe'),auth['isAuthenticated'](),controller['update']);router[_0x4fb2('0x13')](_0x4fb2('0xe'),auth[_0x4fb2('0xc')](),controller['destroy']);module[_0x4fb2('0x14')]=router;
\ No newline at end of file
index f591d36..7f00c1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4bb=['variable','customVariable','keyValue','picklist','STRING','BOOLEAN','sequelize','exports','ENUM','string'];(function(_0x5b5f97,_0x46b15e){var _0x2f6001=function(_0x268878){while(--_0x268878){_0x5b5f97['push'](_0x5b5f97['shift']());}};_0x2f6001(++_0x46b15e);}(_0xc4bb,0xc4));var _0xbc4b=function(_0x290bc7,_0x985ad7){_0x290bc7=_0x290bc7-0x0;var _0x309e89=_0xc4bb[_0x290bc7];return _0x309e89;};'use strict';var Sequelize=require(_0xbc4b('0x0'));module[_0xbc4b('0x1')]={'type':{'type':Sequelize[_0xbc4b('0x2')](_0xbc4b('0x3'),_0xbc4b('0x4'),_0xbc4b('0x5'),_0xbc4b('0x6'),_0xbc4b('0x7')),'defaultValue':'string'},'content':{'type':Sequelize[_0xbc4b('0x8')]},'key':{'type':Sequelize[_0xbc4b('0x8')]},'keyType':{'type':Sequelize[_0xbc4b('0x2')]('string',_0xbc4b('0x4'),'customVariable')},'keyContent':{'type':Sequelize[_0xbc4b('0x8')]},'idField':{'type':Sequelize[_0xbc4b('0x8')]},'nameField':{'type':Sequelize[_0xbc4b('0x8')]},'customField':{'type':Sequelize[_0xbc4b('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x27ab=['STRING','variable','BOOLEAN','sequelize','exports','ENUM','string','customVariable','picklist'];(function(_0x295f08,_0x58ac97){var _0x318d5a=function(_0x1c80d0){while(--_0x1c80d0){_0x295f08['push'](_0x295f08['shift']());}};_0x318d5a(++_0x58ac97);}(_0x27ab,0x78));var _0xb27a=function(_0x311c35,_0x534915){_0x311c35=_0x311c35-0x0;var _0x5cc50c=_0x27ab[_0x311c35];return _0x5cc50c;};'use strict';var Sequelize=require(_0xb27a('0x0'));module[_0xb27a('0x1')]={'type':{'type':Sequelize[_0xb27a('0x2')](_0xb27a('0x3'),'variable',_0xb27a('0x4'),'keyValue',_0xb27a('0x5')),'defaultValue':_0xb27a('0x3')},'content':{'type':Sequelize[_0xb27a('0x6')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0xb27a('0x2')](_0xb27a('0x3'),_0xb27a('0x7'),_0xb27a('0x4'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xb27a('0x6')]},'nameField':{'type':Sequelize[_0xb27a('0x6')]},'customField':{'type':Sequelize[_0xb27a('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xb27a('0x6')]}};
\ No newline at end of file
index f945655..edc6687 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58b2=['findAll','rows','show','params','keys','rawAttributes','find','catch','create','body','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','offset','undefined','count','set','Content-Range','json','reject','save','update','destroy','then','status','error','stack','name','index','map','fieldName','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','filters','pick','filter','where','merge','type','VIRTUAL','options','includeAll','include','SugarcrmField'];(function(_0x26e2ec,_0x3478cd){var _0x58bc0f=function(_0x5ab927){while(--_0x5ab927){_0x26e2ec['push'](_0x26e2ec['shift']());}};_0x58bc0f(++_0x3478cd);}(_0x58b2,0xf4));var _0x258b=function(_0x353247,_0x1466f9){_0x353247=_0x353247-0x0;var _0x45886e=_0x58b2[_0x353247];return _0x45886e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x258b('0x0'));var zipdir=require(_0x258b('0x1'));var jsonpatch=require(_0x258b('0x2'));var rp=require(_0x258b('0x3'));var moment=require(_0x258b('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x258b('0x5'));var util=require(_0x258b('0x6'));var path=require(_0x258b('0x7'));var sox=require(_0x258b('0x8'));var csv=require(_0x258b('0x9'));var ejs=require(_0x258b('0xa'));var fs=require('fs');var fs_extra=require(_0x258b('0xb'));var _=require(_0x258b('0xc'));var squel=require(_0x258b('0xd'));var crypto=require(_0x258b('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x258b('0x9'));var querystring=require(_0x258b('0xf'));var Papa=require(_0x258b('0x10'));var Redis=require('ioredis');var authService=require(_0x258b('0x11'));var qs=require(_0x258b('0x12'));var as=require(_0x258b('0x13'));var hardwareService=require(_0x258b('0x14'));var logger=require(_0x258b('0x15'))(_0x258b('0x16'));var utils=require(_0x258b('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x258b('0x18'));var db=require(_0x258b('0x19'))['db'];function respondWithStatusCode(_0x26263c,_0x513c59){_0x513c59=_0x513c59||0xcc;return function(_0x1da653){if(_0x1da653){return _0x26263c[_0x258b('0x1a')](_0x513c59);}return _0x26263c['status'](_0x513c59)['end']();};}function respondWithResult(_0x41282c,_0x36826c){_0x36826c=_0x36826c||0xc8;return function(_0x2ebb64){if(_0x2ebb64){return _0x41282c['status'](_0x36826c)['json'](_0x2ebb64);}};}function respondWithFilteredResult(_0x2b31d6,_0x24ec94){return function(_0x2ea67a){if(_0x2ea67a){var _0x432c5a=typeof _0x24ec94[_0x258b('0x1b')]===_0x258b('0x1c')&&typeof _0x24ec94['limit']===_0x258b('0x1c');var _0x42509b=_0x2ea67a[_0x258b('0x1d')];var _0x17a23c=_0x432c5a?0x0:_0x24ec94[_0x258b('0x1b')];var _0xc8dbeb=_0x432c5a?_0x2ea67a['count']:_0x24ec94[_0x258b('0x1b')]+_0x24ec94['limit'];var _0x518027;if(_0xc8dbeb>=_0x42509b){_0xc8dbeb=_0x42509b;_0x518027=0xc8;}else{_0x518027=0xce;}_0x2b31d6['status'](_0x518027);return _0x2b31d6[_0x258b('0x1e')](_0x258b('0x1f'),_0x17a23c+'-'+_0xc8dbeb+'/'+_0x42509b)[_0x258b('0x20')](_0x2ea67a);}return null;};}function patchUpdates(_0x12fbb1){return function(_0x1ffcd5){try{jsonpatch['apply'](_0x1ffcd5,_0x12fbb1,!![]);}catch(_0x93134d){return BPromise[_0x258b('0x21')](_0x93134d);}return _0x1ffcd5[_0x258b('0x22')]();};}function saveUpdates(_0x47ca2e,_0x4d5a49){return function(_0x3cebba){if(_0x3cebba){return _0x3cebba[_0x258b('0x23')](_0x47ca2e)['then'](function(_0x7c4817){return _0x7c4817;});}return null;};}function removeEntity(_0xdaba00,_0x3fcd71){return function(_0x47d2f2){if(_0x47d2f2){return _0x47d2f2[_0x258b('0x24')]()[_0x258b('0x25')](function(){_0xdaba00[_0x258b('0x26')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5680c8,_0x4091af){return function(_0x4d20ac){if(!_0x4d20ac){_0x5680c8[_0x258b('0x1a')](0x194);}return _0x4d20ac;};}function handleError(_0x489979,_0x5891b2){_0x5891b2=_0x5891b2||0x1f4;return function(_0x29ac72){logger[_0x258b('0x27')](_0x29ac72[_0x258b('0x28')]);if(_0x29ac72[_0x258b('0x29')]){delete _0x29ac72[_0x258b('0x29')];}_0x489979[_0x258b('0x26')](_0x5891b2)['send'](_0x29ac72);};}exports[_0x258b('0x2a')]=function(_0x5e19b1,_0x5f3d96){var _0x13716b={},_0xb51e28={},_0x165453={'count':0x0,'rows':[]};var _0xa9af73=_[_0x258b('0x2b')](db['SugarcrmField']['rawAttributes'],function(_0x5cbaa1){return{'name':_0x5cbaa1[_0x258b('0x2c')],'type':_0x5cbaa1['type'][_0x258b('0x2d')]};});_0xb51e28[_0x258b('0x2e')]=_[_0x258b('0x2b')](_0xa9af73,_0x258b('0x29'));_0xb51e28[_0x258b('0x2f')]=_['keys'](_0x5e19b1['query']);_0xb51e28['filters']=_[_0x258b('0x30')](_0xb51e28[_0x258b('0x2e')],_0xb51e28[_0x258b('0x2f')]);_0x13716b[_0x258b('0x31')]=_[_0x258b('0x30')](_0xb51e28[_0x258b('0x2e')],qs[_0x258b('0x32')](_0x5e19b1[_0x258b('0x2f')][_0x258b('0x32')]));_0x13716b[_0x258b('0x31')]=_0x13716b[_0x258b('0x31')][_0x258b('0x33')]?_0x13716b[_0x258b('0x31')]:_0xb51e28[_0x258b('0x2e')];if(!_0x5e19b1[_0x258b('0x2f')][_0x258b('0x34')](_0x258b('0x35'))){_0x13716b[_0x258b('0x36')]=qs[_0x258b('0x36')](_0x5e19b1[_0x258b('0x2f')][_0x258b('0x36')]);_0x13716b[_0x258b('0x1b')]=qs['offset'](_0x5e19b1['query'][_0x258b('0x1b')]);}_0x13716b[_0x258b('0x37')]=qs[_0x258b('0x38')](_0x5e19b1[_0x258b('0x2f')]['sort']);_0x13716b['where']=qs[_0x258b('0x39')](_[_0x258b('0x3a')](_0x5e19b1['query'],_0xb51e28[_0x258b('0x39')]),_0xa9af73);if(_0x5e19b1[_0x258b('0x2f')][_0x258b('0x3b')]){_0x13716b[_0x258b('0x3c')]=_[_0x258b('0x3d')](_0x13716b[_0x258b('0x3c')],{'$or':_['map'](_0xa9af73,function(_0x47b5da){if(_0x47b5da[_0x258b('0x3e')]!==_0x258b('0x3f')){var _0x493669={};_0x493669[_0x47b5da['name']]={'$like':'%'+_0x5e19b1['query'][_0x258b('0x3b')]+'%'};return _0x493669;}})});}_0x13716b=_[_0x258b('0x3d')]({},_0x13716b,_0x5e19b1[_0x258b('0x40')]);var _0x51e172={'where':_0x13716b['where']};return db['SugarcrmField'][_0x258b('0x1d')](_0x51e172)[_0x258b('0x25')](function(_0x557a3d){_0x165453[_0x258b('0x1d')]=_0x557a3d;if(_0x5e19b1[_0x258b('0x2f')][_0x258b('0x41')]){_0x13716b[_0x258b('0x42')]=[{'all':!![]}];}return db[_0x258b('0x43')][_0x258b('0x44')](_0x13716b);})[_0x258b('0x25')](function(_0x256ddf){_0x165453[_0x258b('0x45')]=_0x256ddf;return _0x165453;})[_0x258b('0x25')](respondWithFilteredResult(_0x5f3d96,_0x13716b))['catch'](handleError(_0x5f3d96,null));};exports[_0x258b('0x46')]=function(_0x3e9d9a,_0x3086a6){var _0x425679={'raw':!![],'where':{'id':_0x3e9d9a[_0x258b('0x47')]['id']}},_0xccfca={};_0xccfca[_0x258b('0x2e')]=_[_0x258b('0x48')](db[_0x258b('0x43')][_0x258b('0x49')]);_0xccfca[_0x258b('0x2f')]=_['keys'](_0x3e9d9a[_0x258b('0x2f')]);_0xccfca[_0x258b('0x39')]=_[_0x258b('0x30')](_0xccfca[_0x258b('0x2e')],_0xccfca['query']);_0x425679['attributes']=_['intersection'](_0xccfca[_0x258b('0x2e')],qs[_0x258b('0x32')](_0x3e9d9a['query']['fields']));_0x425679[_0x258b('0x31')]=_0x425679[_0x258b('0x31')][_0x258b('0x33')]?_0x425679[_0x258b('0x31')]:_0xccfca[_0x258b('0x2e')];if(_0x3e9d9a[_0x258b('0x2f')][_0x258b('0x41')]){_0x425679[_0x258b('0x42')]=[{'all':!![]}];}_0x425679=_[_0x258b('0x3d')]({},_0x425679,_0x3e9d9a[_0x258b('0x40')]);return db['SugarcrmField'][_0x258b('0x4a')](_0x425679)[_0x258b('0x25')](handleEntityNotFound(_0x3086a6,null))[_0x258b('0x25')](respondWithResult(_0x3086a6,null))[_0x258b('0x4b')](handleError(_0x3086a6,null));};exports[_0x258b('0x4c')]=function(_0xb3049f,_0x2b55cf){return db[_0x258b('0x43')][_0x258b('0x4c')](_0xb3049f['body'],{})['then'](respondWithResult(_0x2b55cf,0xc9))['catch'](handleError(_0x2b55cf,null));};exports[_0x258b('0x23')]=function(_0x4d67ad,_0x555b54){if(_0x4d67ad[_0x258b('0x4d')]['id']){delete _0x4d67ad[_0x258b('0x4d')]['id'];}return db['SugarcrmField'][_0x258b('0x4a')]({'where':{'id':_0x4d67ad[_0x258b('0x47')]['id']}})[_0x258b('0x25')](handleEntityNotFound(_0x555b54,null))[_0x258b('0x25')](saveUpdates(_0x4d67ad[_0x258b('0x4d')],null))[_0x258b('0x25')](respondWithResult(_0x555b54,null))[_0x258b('0x4b')](handleError(_0x555b54,null));};exports[_0x258b('0x24')]=function(_0x406ef7,_0x189a57){return db[_0x258b('0x43')][_0x258b('0x4a')]({'where':{'id':_0x406ef7[_0x258b('0x47')]['id']}})['then'](handleEntityNotFound(_0x189a57,null))[_0x258b('0x25')](removeEntity(_0x189a57,null))[_0x258b('0x4b')](handleError(_0x189a57,null));};
\ No newline at end of file
+var _0x30a1=['error','send','index','map','SugarcrmField','rawAttributes','fieldName','type','query','filters','intersection','model','fields','attributes','hasOwnProperty','nolimit','order','sort','pick','where','VIRTUAL','name','filter','merge','options','includeAll','include','rows','catch','show','params','keys','length','find','create','body','eml-format','rimraf','zip-dir','request-promise','mustache','util','path','sox','to-csv','fs-extra','squel','desk.js','querystring','papaparse','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','then','destroy'];(function(_0x510645,_0x5349c4){var _0x37623d=function(_0x273d3c){while(--_0x273d3c){_0x510645['push'](_0x510645['shift']());}};_0x37623d(++_0x5349c4);}(_0x30a1,0xf9));var _0x130a=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x30a1[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0x130a('0x0'));var rimraf=require(_0x130a('0x1'));var zipdir=require(_0x130a('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x130a('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x130a('0x4'));var util=require(_0x130a('0x5'));var path=require(_0x130a('0x6'));var sox=require(_0x130a('0x7'));var csv=require(_0x130a('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x130a('0x9'));var _=require('lodash');var squel=require(_0x130a('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x130a('0xb'));var toCsv=require(_0x130a('0x8'));var querystring=require(_0x130a('0xc'));var Papa=require(_0x130a('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x130a('0xe'));var hardwareService=require(_0x130a('0xf'));var logger=require(_0x130a('0x10'))(_0x130a('0x11'));var utils=require(_0x130a('0x12'));var config=require(_0x130a('0x13'));var licenseUtil=require(_0x130a('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2a4e4a,_0x33e9a9){_0x33e9a9=_0x33e9a9||0xcc;return function(_0x4fcddf){if(_0x4fcddf){return _0x2a4e4a[_0x130a('0x15')](_0x33e9a9);}return _0x2a4e4a[_0x130a('0x16')](_0x33e9a9)[_0x130a('0x17')]();};}function respondWithResult(_0x33e48f,_0x18a419){_0x18a419=_0x18a419||0xc8;return function(_0xe905b8){if(_0xe905b8){return _0x33e48f[_0x130a('0x16')](_0x18a419)[_0x130a('0x18')](_0xe905b8);}};}function respondWithFilteredResult(_0x1e542a,_0xedd791){return function(_0x31dbd4){if(_0x31dbd4){var _0x2258a5=typeof _0xedd791[_0x130a('0x19')]===_0x130a('0x1a')&&typeof _0xedd791[_0x130a('0x1b')]===_0x130a('0x1a');var _0x513125=_0x31dbd4[_0x130a('0x1c')];var _0x41d7f1=_0x2258a5?0x0:_0xedd791[_0x130a('0x19')];var _0x32af25=_0x2258a5?_0x31dbd4['count']:_0xedd791['offset']+_0xedd791[_0x130a('0x1b')];var _0x4c8d56;if(_0x32af25>=_0x513125){_0x32af25=_0x513125;_0x4c8d56=0xc8;}else{_0x4c8d56=0xce;}_0x1e542a[_0x130a('0x16')](_0x4c8d56);return _0x1e542a[_0x130a('0x1d')](_0x130a('0x1e'),_0x41d7f1+'-'+_0x32af25+'/'+_0x513125)[_0x130a('0x18')](_0x31dbd4);}return null;};}function patchUpdates(_0x4671ca){return function(_0x5312a0){try{jsonpatch[_0x130a('0x1f')](_0x5312a0,_0x4671ca,!![]);}catch(_0x176301){return BPromise['reject'](_0x176301);}return _0x5312a0[_0x130a('0x20')]();};}function saveUpdates(_0x312879,_0x38a81d){return function(_0xb7dc3b){if(_0xb7dc3b){return _0xb7dc3b['update'](_0x312879)[_0x130a('0x21')](function(_0xcb6ea7){return _0xcb6ea7;});}return null;};}function removeEntity(_0x4520d3,_0x8cb068){return function(_0x59811d){if(_0x59811d){return _0x59811d[_0x130a('0x22')]()[_0x130a('0x21')](function(){_0x4520d3[_0x130a('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x380f36,_0x3ffedf){return function(_0x3cac83){if(!_0x3cac83){_0x380f36[_0x130a('0x15')](0x194);}return _0x3cac83;};}function handleError(_0x5e7652,_0x1f4c90){_0x1f4c90=_0x1f4c90||0x1f4;return function(_0x4a30e9){logger[_0x130a('0x23')](_0x4a30e9['stack']);if(_0x4a30e9['name']){delete _0x4a30e9['name'];}_0x5e7652['status'](_0x1f4c90)[_0x130a('0x24')](_0x4a30e9);};}exports[_0x130a('0x25')]=function(_0x36b1a6,_0x12e3ce){var _0xaee690={},_0x4d5f45={},_0x20a90c={'count':0x0,'rows':[]};var _0x1bb089=_[_0x130a('0x26')](db[_0x130a('0x27')][_0x130a('0x28')],function(_0x59e26c){return{'name':_0x59e26c[_0x130a('0x29')],'type':_0x59e26c[_0x130a('0x2a')]['key']};});_0x4d5f45['model']=_['map'](_0x1bb089,'name');_0x4d5f45[_0x130a('0x2b')]=_['keys'](_0x36b1a6[_0x130a('0x2b')]);_0x4d5f45[_0x130a('0x2c')]=_[_0x130a('0x2d')](_0x4d5f45[_0x130a('0x2e')],_0x4d5f45['query']);_0xaee690['attributes']=_['intersection'](_0x4d5f45[_0x130a('0x2e')],qs[_0x130a('0x2f')](_0x36b1a6[_0x130a('0x2b')][_0x130a('0x2f')]));_0xaee690[_0x130a('0x30')]=_0xaee690[_0x130a('0x30')]['length']?_0xaee690[_0x130a('0x30')]:_0x4d5f45[_0x130a('0x2e')];if(!_0x36b1a6[_0x130a('0x2b')][_0x130a('0x31')](_0x130a('0x32'))){_0xaee690[_0x130a('0x1b')]=qs[_0x130a('0x1b')](_0x36b1a6[_0x130a('0x2b')][_0x130a('0x1b')]);_0xaee690[_0x130a('0x19')]=qs[_0x130a('0x19')](_0x36b1a6[_0x130a('0x2b')][_0x130a('0x19')]);}_0xaee690[_0x130a('0x33')]=qs['sort'](_0x36b1a6['query'][_0x130a('0x34')]);_0xaee690['where']=qs[_0x130a('0x2c')](_[_0x130a('0x35')](_0x36b1a6[_0x130a('0x2b')],_0x4d5f45[_0x130a('0x2c')]),_0x1bb089);if(_0x36b1a6['query']['filter']){_0xaee690[_0x130a('0x36')]=_['merge'](_0xaee690[_0x130a('0x36')],{'$or':_['map'](_0x1bb089,function(_0x2d9cc0){if(_0x2d9cc0['type']!==_0x130a('0x37')){var _0x236c1d={};_0x236c1d[_0x2d9cc0[_0x130a('0x38')]]={'$like':'%'+_0x36b1a6[_0x130a('0x2b')][_0x130a('0x39')]+'%'};return _0x236c1d;}})});}_0xaee690=_[_0x130a('0x3a')]({},_0xaee690,_0x36b1a6[_0x130a('0x3b')]);var _0x3e8460={'where':_0xaee690[_0x130a('0x36')]};return db[_0x130a('0x27')][_0x130a('0x1c')](_0x3e8460)[_0x130a('0x21')](function(_0x4e09a7){_0x20a90c[_0x130a('0x1c')]=_0x4e09a7;if(_0x36b1a6[_0x130a('0x2b')][_0x130a('0x3c')]){_0xaee690[_0x130a('0x3d')]=[{'all':!![]}];}return db[_0x130a('0x27')]['findAll'](_0xaee690);})[_0x130a('0x21')](function(_0x49c910){_0x20a90c[_0x130a('0x3e')]=_0x49c910;return _0x20a90c;})[_0x130a('0x21')](respondWithFilteredResult(_0x12e3ce,_0xaee690))[_0x130a('0x3f')](handleError(_0x12e3ce,null));};exports[_0x130a('0x40')]=function(_0x46ff8b,_0xe90716){var _0x576d79={'raw':!![],'where':{'id':_0x46ff8b[_0x130a('0x41')]['id']}},_0xc52b32={};_0xc52b32['model']=_[_0x130a('0x42')](db[_0x130a('0x27')][_0x130a('0x28')]);_0xc52b32[_0x130a('0x2b')]=_[_0x130a('0x42')](_0x46ff8b[_0x130a('0x2b')]);_0xc52b32[_0x130a('0x2c')]=_[_0x130a('0x2d')](_0xc52b32[_0x130a('0x2e')],_0xc52b32['query']);_0x576d79[_0x130a('0x30')]=_['intersection'](_0xc52b32[_0x130a('0x2e')],qs[_0x130a('0x2f')](_0x46ff8b[_0x130a('0x2b')][_0x130a('0x2f')]));_0x576d79['attributes']=_0x576d79[_0x130a('0x30')][_0x130a('0x43')]?_0x576d79[_0x130a('0x30')]:_0xc52b32[_0x130a('0x2e')];if(_0x46ff8b[_0x130a('0x2b')]['includeAll']){_0x576d79[_0x130a('0x3d')]=[{'all':!![]}];}_0x576d79=_['merge']({},_0x576d79,_0x46ff8b['options']);return db[_0x130a('0x27')][_0x130a('0x44')](_0x576d79)[_0x130a('0x21')](handleEntityNotFound(_0xe90716,null))['then'](respondWithResult(_0xe90716,null))['catch'](handleError(_0xe90716,null));};exports[_0x130a('0x45')]=function(_0x47eb0f,_0x11932e){return db['SugarcrmField'][_0x130a('0x45')](_0x47eb0f['body'],{})[_0x130a('0x21')](respondWithResult(_0x11932e,0xc9))[_0x130a('0x3f')](handleError(_0x11932e,null));};exports['update']=function(_0x362ec6,_0x2001c2){if(_0x362ec6[_0x130a('0x46')]['id']){delete _0x362ec6[_0x130a('0x46')]['id'];}return db[_0x130a('0x27')]['find']({'where':{'id':_0x362ec6[_0x130a('0x41')]['id']}})[_0x130a('0x21')](handleEntityNotFound(_0x2001c2,null))[_0x130a('0x21')](saveUpdates(_0x362ec6[_0x130a('0x46')],null))[_0x130a('0x21')](respondWithResult(_0x2001c2,null))[_0x130a('0x3f')](handleError(_0x2001c2,null));};exports[_0x130a('0x22')]=function(_0x25664d,_0x3cb89e){return db[_0x130a('0x27')][_0x130a('0x44')]({'where':{'id':_0x25664d['params']['id']}})[_0x130a('0x21')](handleEntityNotFound(_0x3cb89e,null))[_0x130a('0x21')](removeEntity(_0x3cb89e,null))[_0x130a('0x3f')](handleError(_0x3cb89e,null));};
\ No newline at end of file
index b590062..711f205 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29a3=['bluebird','request-promise','path','rimraf','../../config/environment','./intSugarcrmField.attributes','exports','define','SugarcrmField','int_sugarcrm_fields','idField','FieldId','lodash','util','../../config/logger','api','moment'];(function(_0x2112d4,_0x3c863c){var _0x434972=function(_0x477020){while(--_0x477020){_0x2112d4['push'](_0x2112d4['shift']());}};_0x434972(++_0x3c863c);}(_0x29a3,0x160));var _0x329a=function(_0x3869fa,_0x16ef3f){_0x3869fa=_0x3869fa-0x0;var _0x209652=_0x29a3[_0x3869fa];return _0x209652;};'use strict';var _=require(_0x329a('0x0'));var util=require(_0x329a('0x1'));var logger=require(_0x329a('0x2'))(_0x329a('0x3'));var moment=require(_0x329a('0x4'));var BPromise=require(_0x329a('0x5'));var rp=require(_0x329a('0x6'));var fs=require('fs');var path=require(_0x329a('0x7'));var rimraf=require(_0x329a('0x8'));var config=require(_0x329a('0x9'));var attributes=require(_0x329a('0xa'));module[_0x329a('0xb')]=function(_0x5e7b22,_0x117624){return _0x5e7b22[_0x329a('0xc')](_0x329a('0xd'),attributes,{'tableName':_0x329a('0xe'),'paranoid':![],'indexes':[{'name':'sugarcrm_unique_index','fields':[_0x329a('0xf'),_0x329a('0x10')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7720=['define','SugarcrmField','sugarcrm_unique_index','idField','FieldId','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports'];(function(_0x692a8f,_0x4938bc){var _0x1362c1=function(_0x2453c7){while(--_0x2453c7){_0x692a8f['push'](_0x692a8f['shift']());}};_0x1362c1(++_0x4938bc);}(_0x7720,0x165));var _0x0772=function(_0x12afea,_0x3aa505){_0x12afea=_0x12afea-0x0;var _0x1c00b3=_0x7720[_0x12afea];return _0x1c00b3;};'use strict';var _=require(_0x0772('0x0'));var util=require(_0x0772('0x1'));var logger=require(_0x0772('0x2'))(_0x0772('0x3'));var moment=require(_0x0772('0x4'));var BPromise=require(_0x0772('0x5'));var rp=require(_0x0772('0x6'));var fs=require('fs');var path=require(_0x0772('0x7'));var rimraf=require(_0x0772('0x8'));var config=require(_0x0772('0x9'));var attributes=require('./intSugarcrmField.attributes');module[_0x0772('0xa')]=function(_0x4894cf,_0x55a1ee){return _0x4894cf[_0x0772('0xb')](_0x0772('0xc'),attributes,{'tableName':'int_sugarcrm_fields','paranoid':![],'indexes':[{'name':_0x0772('0xd'),'fields':[_0x0772('0xe'),_0x0772('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 2477f5a..cd6004f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3389=['result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','jayson/promise','client','http','request','then','SugarcrmField,\x20%s,\x20%s','request\x20sent','debug','SugarcrmField,\x20%s,\x20%s,\x20%s','stringify','error','message'];(function(_0x48d218,_0x38ae7b){var _0x5d86c7=function(_0x362ae9){while(--_0x362ae9){_0x48d218['push'](_0x48d218['shift']());}};_0x5d86c7(++_0x38ae7b);}(_0x3389,0x136));var _0x9338=function(_0x29274e,_0xd53378){_0x29274e=_0x29274e-0x0;var _0x31a3c9=_0x3389[_0x29274e];return _0x31a3c9;};'use strict';var _=require(_0x9338('0x0'));var util=require(_0x9338('0x1'));var moment=require(_0x9338('0x2'));var BPromise=require(_0x9338('0x3'));var rs=require(_0x9338('0x4'));var fs=require('fs');var Redis=require(_0x9338('0x5'));var db=require(_0x9338('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x9338('0x7'));var config=require('../../config/environment');var jayson=require(_0x9338('0x8'));var client=jayson[_0x9338('0x9')][_0x9338('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4e6e24,_0x523913,_0x5cad3e){return new BPromise(function(_0x4bbf50,_0x14f0dc){return client[_0x9338('0xb')](_0x4e6e24,_0x5cad3e)[_0x9338('0xc')](function(_0x5600da){logger['info'](_0x9338('0xd'),_0x523913,_0x9338('0xe'));logger[_0x9338('0xf')](_0x9338('0x10'),_0x523913,'request\x20sent',JSON[_0x9338('0x11')](_0x5600da));if(_0x5600da[_0x9338('0x12')]){if(_0x5600da[_0x9338('0x12')]['code']===0x1f4){logger['error'](_0x9338('0xd'),_0x523913,_0x5600da[_0x9338('0x12')][_0x9338('0x13')]);return _0x14f0dc(_0x5600da['error'][_0x9338('0x13')]);}logger[_0x9338('0x12')](_0x9338('0xd'),_0x523913,_0x5600da[_0x9338('0x12')][_0x9338('0x13')]);return _0x4bbf50(_0x5600da[_0x9338('0x12')][_0x9338('0x13')]);}else{logger['info']('SugarcrmField,\x20%s,\x20%s',_0x523913,_0x9338('0xe'));_0x4bbf50(_0x5600da[_0x9338('0x14')]['message']);}})[_0x9338('0x15')](function(_0x24e6f1){logger[_0x9338('0x12')](_0x9338('0xd'),_0x523913,_0x24e6f1);_0x14f0dc(_0x24e6f1);});});}
\ No newline at end of file
+var _0x7429=['../../config/environment','jayson/promise','client','http','request','then','info','SugarcrmField,\x20%s,\x20%s','request\x20sent','debug','SugarcrmField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x2644c4,_0xe8c00c){var _0x502f32=function(_0x255e38){while(--_0x255e38){_0x2644c4['push'](_0x2644c4['shift']());}};_0x502f32(++_0xe8c00c);}(_0x7429,0x179));var _0x9742=function(_0x4eb1d7,_0x4f496a){_0x4eb1d7=_0x4eb1d7-0x0;var _0x1541b9=_0x7429[_0x4eb1d7];return _0x1541b9;};'use strict';var _=require(_0x9742('0x0'));var util=require(_0x9742('0x1'));var moment=require(_0x9742('0x2'));var BPromise=require(_0x9742('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9742('0x4'))['db'];var utils=require(_0x9742('0x5'));var logger=require(_0x9742('0x6'))('rpc');var config=require(_0x9742('0x7'));var jayson=require(_0x9742('0x8'));var client=jayson[_0x9742('0x9')][_0x9742('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2314fb,_0x190c80,_0x65121b){return new BPromise(function(_0x34ae4f,_0x1a1c86){return client[_0x9742('0xb')](_0x2314fb,_0x65121b)[_0x9742('0xc')](function(_0x5f2bbe){logger[_0x9742('0xd')](_0x9742('0xe'),_0x190c80,_0x9742('0xf'));logger[_0x9742('0x10')](_0x9742('0x11'),_0x190c80,_0x9742('0xf'),JSON[_0x9742('0x12')](_0x5f2bbe));if(_0x5f2bbe[_0x9742('0x13')]){if(_0x5f2bbe[_0x9742('0x13')][_0x9742('0x14')]===0x1f4){logger[_0x9742('0x13')](_0x9742('0xe'),_0x190c80,_0x5f2bbe[_0x9742('0x13')][_0x9742('0x15')]);return _0x1a1c86(_0x5f2bbe['error'][_0x9742('0x15')]);}logger[_0x9742('0x13')](_0x9742('0xe'),_0x190c80,_0x5f2bbe[_0x9742('0x13')][_0x9742('0x15')]);return _0x34ae4f(_0x5f2bbe[_0x9742('0x13')][_0x9742('0x15')]);}else{logger[_0x9742('0xd')](_0x9742('0xe'),_0x190c80,_0x9742('0xf'));_0x34ae4f(_0x5f2bbe[_0x9742('0x16')]['message']);}})[_0x9742('0x17')](function(_0x1fbf00){logger[_0x9742('0x13')](_0x9742('0xe'),_0x190c80,_0x1fbf00);_0x1a1c86(_0x1fbf00);});});}
\ No newline at end of file
index 866cb81..ac5b599 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a24=['../../config/environment','./intVtigerAccount.controller','isAuthenticated','index','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','put','/:id','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x51f988,_0x1ff0e3){var _0xf44e31=function(_0x495c12){while(--_0x495c12){_0x51f988['push'](_0x51f988['shift']());}};_0xf44e31(++_0x1ff0e3);}(_0x6a24,0xd1));var _0x46a2=function(_0xdad0d3,_0x570c89){_0xdad0d3=_0xdad0d3-0x0;var _0x2bb8b2=_0x6a24[_0xdad0d3];return _0x2bb8b2;};'use strict';var multer=require(_0x46a2('0x0'));var util=require(_0x46a2('0x1'));var path=require('path');var timeout=require(_0x46a2('0x2'));var express=require(_0x46a2('0x3'));var router=express[_0x46a2('0x4')]();var fs_extra=require(_0x46a2('0x5'));var auth=require(_0x46a2('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x46a2('0x7'));var controller=require(_0x46a2('0x8'));router['get']('/',auth[_0x46a2('0x9')](),controller[_0x46a2('0xa')]);router['get']('/:id',auth[_0x46a2('0x9')](),controller[_0x46a2('0xb')]);router['get'](_0x46a2('0xc'),auth['isAuthenticated'](),controller[_0x46a2('0xd')]);router['get'](_0x46a2('0xe'),auth[_0x46a2('0x9')](),controller[_0x46a2('0xf')]);router[_0x46a2('0x10')]('/',auth[_0x46a2('0x9')](),controller[_0x46a2('0x11')]);router[_0x46a2('0x10')](_0x46a2('0xc'),auth['isAuthenticated'](),controller['addConfiguration']);router[_0x46a2('0x12')](_0x46a2('0x13'),auth['isAuthenticated'](),controller[_0x46a2('0x14')]);router[_0x46a2('0x15')](_0x46a2('0x13'),auth[_0x46a2('0x9')](),controller[_0x46a2('0x16')]);module[_0x46a2('0x17')]=router;
\ No newline at end of file
+var _0x54da=['addConfiguration','update','delete','/:id','destroy','multer','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerAccount.controller','index','get','/:id/configurations','isAuthenticated','/:id/fields','post','create'];(function(_0x4a68a9,_0x5bb708){var _0x16023b=function(_0x2fdeeb){while(--_0x2fdeeb){_0x4a68a9['push'](_0x4a68a9['shift']());}};_0x16023b(++_0x5bb708);}(_0x54da,0x9d));var _0xa54d=function(_0x3d6626,_0x447998){_0x3d6626=_0x3d6626-0x0;var _0x3f08b3=_0x54da[_0x3d6626];return _0x3f08b3;};'use strict';var multer=require(_0xa54d('0x0'));var util=require('util');var path=require(_0xa54d('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa54d('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xa54d('0x3'));var interaction=require(_0xa54d('0x4'));var config=require(_0xa54d('0x5'));var controller=require(_0xa54d('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0xa54d('0x7')]);router[_0xa54d('0x8')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0xa54d('0x8')](_0xa54d('0x9'),auth[_0xa54d('0xa')](),controller['getConfigurations']);router[_0xa54d('0x8')](_0xa54d('0xb'),auth['isAuthenticated'](),controller['getFields']);router[_0xa54d('0xc')]('/',auth['isAuthenticated'](),controller[_0xa54d('0xd')]);router[_0xa54d('0xc')](_0xa54d('0x9'),auth['isAuthenticated'](),controller[_0xa54d('0xe')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0xa54d('0xf')]);router[_0xa54d('0x10')](_0xa54d('0x11'),auth[_0xa54d('0xa')](),controller[_0xa54d('0x12')]);module['exports']=router;
\ No newline at end of file
index 481360d..249df78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x280c=['sequelize','STRING'];(function(_0x152ca2,_0x5abd1b){var _0x58fbd2=function(_0x128b08){while(--_0x128b08){_0x152ca2['push'](_0x152ca2['shift']());}};_0x58fbd2(++_0x5abd1b);}(_0x280c,0x13c));var _0xc280=function(_0x3e7a35,_0x296eda){_0x3e7a35=_0x3e7a35-0x0;var _0x4d722f=_0x280c[_0x3e7a35];return _0x4d722f;};'use strict';var Sequelize=require(_0xc280('0x0'));module['exports']={'name':{'type':Sequelize[_0xc280('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0xc280('0x1')]},'username':{'type':Sequelize[_0xc280('0x1')],'allowNull':![]},'moduleName':{'type':Sequelize[_0xc280('0x1')],'allowNull':![],'defaultValue':'HelpDesk'},'remoteUri':{'type':Sequelize['STRING'],'allowNull':![]},'serverUrl':{'type':Sequelize[_0xc280('0x1')],'allowNull':![]},'accessKey':{'type':Sequelize[_0xc280('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0x6622=['HelpDesk','exports','STRING'];(function(_0x25e2a5,_0x2d7270){var _0x429243=function(_0x16853){while(--_0x16853){_0x25e2a5['push'](_0x25e2a5['shift']());}};_0x429243(++_0x2d7270);}(_0x6622,0x8e));var _0x2662=function(_0x1e3c16,_0x372caa){_0x1e3c16=_0x1e3c16-0x0;var _0x47a0c9=_0x6622[_0x1e3c16];return _0x47a0c9;};'use strict';var Sequelize=require('sequelize');module[_0x2662('0x0')]={'name':{'type':Sequelize[_0x2662('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x2662('0x1')]},'username':{'type':Sequelize[_0x2662('0x1')],'allowNull':![]},'moduleName':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x2662('0x2')},'remoteUri':{'type':Sequelize['STRING'],'allowNull':![]},'serverUrl':{'type':Sequelize[_0x2662('0x1')],'allowNull':![]},'accessKey':{'type':Sequelize[_0x2662('0x1')],'allowNull':![]}};
\ No newline at end of file
index bec8f30..88eb4d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab55=['result','token','describe','autogenerated','reference','owner','remove','false','label','startsWith','cf_','picklist','picklistValues','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','ejs','fs-extra','lodash','crypto','jsforce','to-csv','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../components/integrations/configuration','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','then','end','error','stack','name','send','index','VtigerAccount','rawAttributes','fieldName','model','map','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','sort','where','pick','filter','type','VIRTUAL','merge','includeAll','include','findAll','rows','catch','show','params','length','options','find','create','body','update','destroy','getConfigurations','findOne','VtigerConfiguration','order','Subjects','Descriptions','getDescriptions','VtigerField','md5','getFields','username','description','moduleName','remoteUri','serverUrl','accessKey','slice','substring','lastIndexOf','format','GET','getchallenge','success','POST','login'];(function(_0x3dc30d,_0x3eee3c){var _0x225236=function(_0x303bd2){while(--_0x303bd2){_0x3dc30d['push'](_0x3dc30d['shift']());}};_0x225236(++_0x3eee3c);}(_0xab55,0x88));var _0x5ab5=function(_0x2b9caf,_0x79a36a){_0x2b9caf=_0x2b9caf-0x0;var _0x2d8635=_0xab55[_0x2b9caf];return _0x2d8635;};'use strict';var emlformat=require(_0x5ab5('0x0'));var rimraf=require(_0x5ab5('0x1'));var zipdir=require(_0x5ab5('0x2'));var jsonpatch=require(_0x5ab5('0x3'));var rp=require(_0x5ab5('0x4'));var moment=require('moment');var BPromise=require(_0x5ab5('0x5'));var Mustache=require(_0x5ab5('0x6'));var util=require(_0x5ab5('0x7'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x5ab5('0x8'));var fs=require('fs');var fs_extra=require(_0x5ab5('0x9'));var _=require(_0x5ab5('0xa'));var squel=require('squel');var crypto=require(_0x5ab5('0xb'));var jsforce=require(_0x5ab5('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x5ab5('0xd'));var querystring=require('querystring');var Papa=require(_0x5ab5('0xe'));var Redis=require(_0x5ab5('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x5ab5('0x10'));var as=require(_0x5ab5('0x11'));var hardwareService=require(_0x5ab5('0x12'));var logger=require(_0x5ab5('0x13'))(_0x5ab5('0x14'));var utils=require(_0x5ab5('0x15'));var config=require(_0x5ab5('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require(_0x5ab5('0x17'));function respondWithStatusCode(_0x481b4a,_0x35db60){_0x35db60=_0x35db60||0xcc;return function(_0x42ff57){if(_0x42ff57){return _0x481b4a[_0x5ab5('0x18')](_0x35db60);}return _0x481b4a[_0x5ab5('0x19')](_0x35db60)['end']();};}function respondWithResult(_0x2614c3,_0x1335fa){_0x1335fa=_0x1335fa||0xc8;return function(_0x4e7920){if(_0x4e7920){return _0x2614c3[_0x5ab5('0x19')](_0x1335fa)[_0x5ab5('0x1a')](_0x4e7920);}};}function respondWithFilteredResult(_0x1a3ddf,_0x39ac34){return function(_0x84edb5){if(_0x84edb5){var _0x18d4eb=typeof _0x39ac34[_0x5ab5('0x1b')]===_0x5ab5('0x1c')&&typeof _0x39ac34['limit']===_0x5ab5('0x1c');var _0x3b9525=_0x84edb5[_0x5ab5('0x1d')];var _0x138775=_0x18d4eb?0x0:_0x39ac34[_0x5ab5('0x1b')];var _0x138455=_0x18d4eb?_0x84edb5[_0x5ab5('0x1d')]:_0x39ac34[_0x5ab5('0x1b')]+_0x39ac34[_0x5ab5('0x1e')];var _0x38235e;if(_0x138455>=_0x3b9525){_0x138455=_0x3b9525;_0x38235e=0xc8;}else{_0x38235e=0xce;}_0x1a3ddf[_0x5ab5('0x19')](_0x38235e);return _0x1a3ddf[_0x5ab5('0x1f')](_0x5ab5('0x20'),_0x138775+'-'+_0x138455+'/'+_0x3b9525)['json'](_0x84edb5);}return null;};}function patchUpdates(_0x24b148){return function(_0x41b5ec){try{jsonpatch[_0x5ab5('0x21')](_0x41b5ec,_0x24b148,!![]);}catch(_0x53b787){return BPromise[_0x5ab5('0x22')](_0x53b787);}return _0x41b5ec[_0x5ab5('0x23')]();};}function saveUpdates(_0x5c1fa8,_0x44336d){return function(_0x244b35){if(_0x244b35){return _0x244b35['update'](_0x5c1fa8)[_0x5ab5('0x24')](function(_0x4b72f3){return _0x4b72f3;});}return null;};}function removeEntity(_0xc1e9b8,_0x5a49fe){return function(_0x58ea17){if(_0x58ea17){return _0x58ea17['destroy']()['then'](function(){_0xc1e9b8['status'](0xcc)[_0x5ab5('0x25')]();});}};}function handleEntityNotFound(_0x357ac0,_0x25ee5c){return function(_0xec6a2d){if(!_0xec6a2d){_0x357ac0[_0x5ab5('0x18')](0x194);}return _0xec6a2d;};}function handleError(_0x566c5a,_0x4ac2d8){_0x4ac2d8=_0x4ac2d8||0x1f4;return function(_0x23ac54){logger[_0x5ab5('0x26')](_0x23ac54[_0x5ab5('0x27')]);if(_0x23ac54[_0x5ab5('0x28')]){delete _0x23ac54[_0x5ab5('0x28')];}_0x566c5a[_0x5ab5('0x19')](_0x4ac2d8)[_0x5ab5('0x29')](_0x23ac54);};}exports[_0x5ab5('0x2a')]=function(_0x2464c2,_0x2da995){var _0x45c5a5={},_0x31fb52={},_0xd25f1a={'count':0x0,'rows':[]};var _0x32e04d=_['map'](db[_0x5ab5('0x2b')][_0x5ab5('0x2c')],function(_0x3cc249){return{'name':_0x3cc249[_0x5ab5('0x2d')],'type':_0x3cc249['type']['key']};});_0x31fb52[_0x5ab5('0x2e')]=_[_0x5ab5('0x2f')](_0x32e04d,_0x5ab5('0x28'));_0x31fb52[_0x5ab5('0x30')]=_[_0x5ab5('0x31')](_0x2464c2[_0x5ab5('0x30')]);_0x31fb52[_0x5ab5('0x32')]=_['intersection'](_0x31fb52['model'],_0x31fb52[_0x5ab5('0x30')]);_0x45c5a5['attributes']=_[_0x5ab5('0x33')](_0x31fb52[_0x5ab5('0x2e')],qs[_0x5ab5('0x34')](_0x2464c2[_0x5ab5('0x30')][_0x5ab5('0x34')]));_0x45c5a5['attributes']=_0x45c5a5['attributes']['length']?_0x45c5a5[_0x5ab5('0x35')]:_0x31fb52[_0x5ab5('0x2e')];if(!_0x2464c2[_0x5ab5('0x30')][_0x5ab5('0x36')](_0x5ab5('0x37'))){_0x45c5a5[_0x5ab5('0x1e')]=qs['limit'](_0x2464c2['query'][_0x5ab5('0x1e')]);_0x45c5a5[_0x5ab5('0x1b')]=qs[_0x5ab5('0x1b')](_0x2464c2[_0x5ab5('0x30')][_0x5ab5('0x1b')]);}_0x45c5a5['order']=qs[_0x5ab5('0x38')](_0x2464c2[_0x5ab5('0x30')][_0x5ab5('0x38')]);_0x45c5a5[_0x5ab5('0x39')]=qs[_0x5ab5('0x32')](_[_0x5ab5('0x3a')](_0x2464c2[_0x5ab5('0x30')],_0x31fb52[_0x5ab5('0x32')]),_0x32e04d);if(_0x2464c2['query'][_0x5ab5('0x3b')]){_0x45c5a5[_0x5ab5('0x39')]=_['merge'](_0x45c5a5[_0x5ab5('0x39')],{'$or':_[_0x5ab5('0x2f')](_0x32e04d,function(_0x4267d2){if(_0x4267d2[_0x5ab5('0x3c')]!==_0x5ab5('0x3d')){var _0x29d47e={};_0x29d47e[_0x4267d2[_0x5ab5('0x28')]]={'$like':'%'+_0x2464c2['query'][_0x5ab5('0x3b')]+'%'};return _0x29d47e;}})});}_0x45c5a5=_[_0x5ab5('0x3e')]({},_0x45c5a5,_0x2464c2['options']);var _0x42ab58={'where':_0x45c5a5[_0x5ab5('0x39')]};return db[_0x5ab5('0x2b')][_0x5ab5('0x1d')](_0x42ab58)[_0x5ab5('0x24')](function(_0x2efaf0){_0xd25f1a[_0x5ab5('0x1d')]=_0x2efaf0;if(_0x2464c2[_0x5ab5('0x30')][_0x5ab5('0x3f')]){_0x45c5a5[_0x5ab5('0x40')]=[{'all':!![]}];}return db[_0x5ab5('0x2b')][_0x5ab5('0x41')](_0x45c5a5);})[_0x5ab5('0x24')](function(_0x2eb738){_0xd25f1a[_0x5ab5('0x42')]=_0x2eb738;return _0xd25f1a;})[_0x5ab5('0x24')](respondWithFilteredResult(_0x2da995,_0x45c5a5))[_0x5ab5('0x43')](handleError(_0x2da995,null));};exports[_0x5ab5('0x44')]=function(_0x4a7566,_0xf22b58){var _0x5852e0={'raw':![],'where':{'id':_0x4a7566[_0x5ab5('0x45')]['id']}},_0x194385={};_0x194385[_0x5ab5('0x2e')]=_[_0x5ab5('0x31')](db[_0x5ab5('0x2b')][_0x5ab5('0x2c')]);_0x194385['query']=_['keys'](_0x4a7566[_0x5ab5('0x30')]);_0x194385['filters']=_[_0x5ab5('0x33')](_0x194385[_0x5ab5('0x2e')],_0x194385[_0x5ab5('0x30')]);_0x5852e0[_0x5ab5('0x35')]=_[_0x5ab5('0x33')](_0x194385[_0x5ab5('0x2e')],qs[_0x5ab5('0x34')](_0x4a7566[_0x5ab5('0x30')][_0x5ab5('0x34')]));_0x5852e0[_0x5ab5('0x35')]=_0x5852e0[_0x5ab5('0x35')][_0x5ab5('0x46')]?_0x5852e0[_0x5ab5('0x35')]:_0x194385['model'];if(_0x4a7566['query'][_0x5ab5('0x3f')]){_0x5852e0[_0x5ab5('0x40')]=[{'all':!![]}];}_0x5852e0=_[_0x5ab5('0x3e')]({},_0x5852e0,_0x4a7566[_0x5ab5('0x47')]);return db[_0x5ab5('0x2b')][_0x5ab5('0x48')](_0x5852e0)[_0x5ab5('0x24')](handleEntityNotFound(_0xf22b58,null))[_0x5ab5('0x24')](respondWithResult(_0xf22b58,null))['catch'](handleError(_0xf22b58,null));};exports['create']=function(_0x439553,_0x2b0140){return db[_0x5ab5('0x2b')][_0x5ab5('0x49')](_0x439553[_0x5ab5('0x4a')],{})['then'](respondWithResult(_0x2b0140,0xc9))[_0x5ab5('0x43')](handleError(_0x2b0140,null));};exports[_0x5ab5('0x4b')]=function(_0x252f3f,_0x4639f2){if(_0x252f3f[_0x5ab5('0x4a')]['id']){delete _0x252f3f['body']['id'];}return db[_0x5ab5('0x2b')][_0x5ab5('0x48')]({'where':{'id':_0x252f3f[_0x5ab5('0x45')]['id']}})['then'](handleEntityNotFound(_0x4639f2,null))[_0x5ab5('0x24')](saveUpdates(_0x252f3f[_0x5ab5('0x4a')],null))[_0x5ab5('0x24')](respondWithResult(_0x4639f2,null))['catch'](handleError(_0x4639f2,null));};exports[_0x5ab5('0x4c')]=function(_0x4f7a0b,_0x36eda8){return db['VtigerAccount'][_0x5ab5('0x48')]({'where':{'id':_0x4f7a0b[_0x5ab5('0x45')]['id']}})[_0x5ab5('0x24')](handleEntityNotFound(_0x36eda8,null))[_0x5ab5('0x24')](removeEntity(_0x36eda8,null))[_0x5ab5('0x43')](handleError(_0x36eda8,null));};exports[_0x5ab5('0x4d')]=function(_0x3bba89,_0x4d4b18,_0x43e730){var _0x46287c={};var _0x335f83={};var _0x432d49;var _0x116fdd;return db[_0x5ab5('0x2b')][_0x5ab5('0x4e')]({'where':{'id':_0x3bba89[_0x5ab5('0x45')]['id']}})['then'](handleEntityNotFound(_0x4d4b18,null))[_0x5ab5('0x24')](function(_0x37e015){if(_0x37e015){_0x432d49=_0x37e015;_0x335f83[_0x5ab5('0x2e')]=_['keys'](db[_0x5ab5('0x4f')][_0x5ab5('0x2c')]);_0x335f83[_0x5ab5('0x30')]=_[_0x5ab5('0x31')](_0x3bba89['query']);_0x335f83[_0x5ab5('0x32')]=_[_0x5ab5('0x33')](_0x335f83[_0x5ab5('0x2e')],_0x335f83[_0x5ab5('0x30')]);_0x46287c['attributes']=_[_0x5ab5('0x33')](_0x335f83[_0x5ab5('0x2e')],qs['fields'](_0x3bba89['query'][_0x5ab5('0x34')]));_0x46287c[_0x5ab5('0x35')]=_0x46287c['attributes'][_0x5ab5('0x46')]?_0x46287c[_0x5ab5('0x35')]:_0x335f83[_0x5ab5('0x2e')];_0x46287c[_0x5ab5('0x50')]=qs['sort'](_0x3bba89[_0x5ab5('0x30')][_0x5ab5('0x38')]);_0x46287c['where']=qs['filters'](_[_0x5ab5('0x3a')](_0x3bba89['query'],_0x335f83['filters']));if(_0x3bba89[_0x5ab5('0x30')][_0x5ab5('0x3b')]){_0x46287c[_0x5ab5('0x39')]=_[_0x5ab5('0x3e')](_0x46287c[_0x5ab5('0x39')],{'$or':_[_0x5ab5('0x2f')](_0x46287c[_0x5ab5('0x35')],function(_0x5caf8a){var _0x93a21d={};_0x93a21d[_0x5caf8a]={'$like':'%'+_0x3bba89[_0x5ab5('0x30')][_0x5ab5('0x3b')]+'%'};return _0x93a21d;})});}_0x46287c=_[_0x5ab5('0x3e')]({},_0x46287c,_0x3bba89[_0x5ab5('0x47')]);return _0x432d49[_0x5ab5('0x4d')](_0x46287c);}})[_0x5ab5('0x24')](function(_0x442bf4){if(_0x442bf4){_0x116fdd=_0x442bf4[_0x5ab5('0x46')];if(!_0x3bba89[_0x5ab5('0x30')][_0x5ab5('0x36')]('nolimit')){_0x46287c[_0x5ab5('0x1e')]=qs[_0x5ab5('0x1e')](_0x3bba89[_0x5ab5('0x30')]['limit']);_0x46287c[_0x5ab5('0x1b')]=qs[_0x5ab5('0x1b')](_0x3bba89[_0x5ab5('0x30')][_0x5ab5('0x1b')]);}return _0x432d49[_0x5ab5('0x4d')](_0x46287c);}})['then'](function(_0x187414){if(_0x187414){return _0x187414?{'count':_0x116fdd,'rows':_0x187414}:null;}})[_0x5ab5('0x24')](respondWithResult(_0x4d4b18,null))['catch'](handleError(_0x4d4b18,null));};exports['addConfiguration']=function(_0x123048,_0x442e37,_0x41a2b8){if(_0x123048[_0x5ab5('0x4a')]['id']){delete _0x123048[_0x5ab5('0x4a')]['id'];}return db[_0x5ab5('0x2b')][_0x5ab5('0x4e')]({'where':{'id':_0x123048[_0x5ab5('0x45')]['id']}})[_0x5ab5('0x24')](handleEntityNotFound(_0x442e37,null))[_0x5ab5('0x24')](function(_0x3ca218){if(_0x3ca218){_0x123048[_0x5ab5('0x4a')]['AccountId']=_0x3ca218['id'];_0x123048['body'][_0x5ab5('0x51')]=integrations['getSubjects'](_0x123048[_0x5ab5('0x4a')]['channel'],_0x123048['body'][_0x5ab5('0x3c')]);_0x123048['body'][_0x5ab5('0x52')]=integrations[_0x5ab5('0x53')](_0x123048[_0x5ab5('0x4a')]['channel'],_0x123048[_0x5ab5('0x4a')][_0x5ab5('0x3c')]);return db[_0x5ab5('0x4f')][_0x5ab5('0x49')](_0x123048[_0x5ab5('0x4a')],{'include':[{'model':db[_0x5ab5('0x54')],'as':_0x5ab5('0x51')},{'model':db[_0x5ab5('0x54')],'as':_0x5ab5('0x52')}]});}return null;})[_0x5ab5('0x24')](respondWithResult(_0x442e37,null))[_0x5ab5('0x43')](handleError(_0x442e37,null));};var md5=require(_0x5ab5('0x55'));exports[_0x5ab5('0x56')]=function(_0x1e5e2d,_0x1ac48c,_0x554ac0){var _0x45a5d3=null;var _0x16a9a2=null;var _0x142aea=null;var _0x401536=null;var _0x191609='';return db[_0x5ab5('0x2b')][_0x5ab5('0x4e')]({'where':{'id':_0x1e5e2d[_0x5ab5('0x45')]['id']},'attributes':['id','name',_0x5ab5('0x57'),_0x5ab5('0x58'),_0x5ab5('0x59'),_0x5ab5('0x5a'),_0x5ab5('0x5b'),_0x5ab5('0x5c')]})[_0x5ab5('0x24')](handleEntityNotFound(_0x1ac48c,null))[_0x5ab5('0x24')](function(_0x1d62b5){if(_0x1d62b5){_0x45a5d3=_0x1d62b5[_0x5ab5('0x57')];_0x16a9a2=_0x1d62b5[_0x5ab5('0x5c')];_0x142aea=_0x1d62b5['moduleName'];_0x191609=_0x1d62b5['remoteUri'];var _0xd9444d=_0x191609[_0x5ab5('0x5d')](-0x1);if(_0xd9444d==='/'){_0x191609=_0x191609[_0x5ab5('0x5e')](0x0,_0x191609[_0x5ab5('0x5f')](_0xd9444d));}_0x401536=util[_0x5ab5('0x60')]('%s/webservice.php',_0x191609);var _0x1e3307={'method':_0x5ab5('0x61'),'uri':_0x401536,'qs':{'operation':_0x5ab5('0x62'),'username':_0x1d62b5['username']},'json':!![]};return rp(_0x1e3307);}})['then'](function(_0x173d82){if(_0x173d82[_0x5ab5('0x63')]){var _0x1a2ed3={'method':_0x5ab5('0x64'),'uri':_0x401536,'form':{'operation':_0x5ab5('0x65'),'username':_0x45a5d3,'accessKey':md5(_0x173d82[_0x5ab5('0x66')][_0x5ab5('0x67')]+_0x16a9a2)},'json':!![]};return rp(_0x1a2ed3);}})[_0x5ab5('0x24')](function(_0x2dddd1){if(_0x2dddd1[_0x5ab5('0x63')]){var _0x182e8c={'method':_0x5ab5('0x61'),'uri':_0x401536,'qs':{'operation':_0x5ab5('0x68'),'username':_0x45a5d3,'sessionName':_0x2dddd1[_0x5ab5('0x66')]['sessionName'],'elementType':_0x142aea},'json':!![]};return rp(_0x182e8c);}})[_0x5ab5('0x24')](function(_0xa3b220){if(_0xa3b220['success']){var _0x1a54ce=[_0x5ab5('0x69'),_0x5ab5('0x6a'),_0x5ab5('0x6b')];_[_0x5ab5('0x6c')](_0xa3b220[_0x5ab5('0x66')]['fields'],function(_0x540e35){return _0x1a54ce['includes'](_0x540e35[_0x5ab5('0x3c')][_0x5ab5('0x28')]);});_[_0x5ab5('0x6c')](_0xa3b220['result']['fields'],function(_0x2e4f8e){return _0x2e4f8e['editable']===_0x5ab5('0x6d');});return{'count':_0xa3b220['result']['fields'][_0x5ab5('0x46')],'rows':_[_0x5ab5('0x2f')](_0xa3b220[_0x5ab5('0x66')][_0x5ab5('0x34')],function(_0x36ab40){return{'id':_0x36ab40['name'],'name':_0x36ab40[_0x5ab5('0x6e')],'custom':_[_0x5ab5('0x6f')](_0x36ab40[_0x5ab5('0x28')],_0x5ab5('0x70'))?!![]:![],'options':_0x36ab40[_0x5ab5('0x3c')][_0x5ab5('0x28')]===_0x5ab5('0x71')&&_0x36ab40[_0x5ab5('0x3c')]['picklistValues'][_0x5ab5('0x46')]>0x0?_[_0x5ab5('0x2f')](_0x36ab40['type'][_0x5ab5('0x72')],function(_0x5d7ab7){return{'name':_0x5d7ab7['label'],'value':_0x5d7ab7['value']};}):[]};})};}})[_0x5ab5('0x24')](respondWithResult(_0x1ac48c,null))[_0x5ab5('0x43')](function(_0x593c3d){console['log']('vTiger\x20error:\x20'+_0x593c3d);var _0x592662=_0x1e5e2d[_0x5ab5('0x30')][_0x5ab5('0x73')]?0x1f4:_0x593c3d[_0x5ab5('0x74')]||0x1f4;logger['error'](_0x5ab5('0x75'),'getFields',_0x592662,JSON[_0x5ab5('0x76')](_0x593c3d));delete _0x593c3d[_0x5ab5('0x28')];if(_0x592662===0x191){_0x592662=0x190;}_0x1ac48c[_0x5ab5('0x19')](_0x592662)['send'](_0x1e5e2d[_0x5ab5('0x30')][_0x5ab5('0x73')]?{'message':'Wrong\x20credentials','statusCode':_0x593c3d[_0x5ab5('0x74')]}:_0x593c3d);});};
\ No newline at end of file
+var _0x0910=['error','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','statusCode','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','end','name','send','map','rawAttributes','key','query','keys','filters','intersection','model','attributes','fields','order','pick','where','type','filter','options','VtigerAccount','includeAll','include','catch','show','params','length','merge','find','create','body','getConfigurations','findOne','VtigerConfiguration','sort','hasOwnProperty','nolimit','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','VtigerField','md5','getFields','username','description','moduleName','serverUrl','accessKey','remoteUri','slice','format','%s/webservice.php','getchallenge','success','POST','login','result','GET','describe','autogenerated','owner','includes','remove','editable','label','cf_','picklist','picklistValues','value','log','vTiger\x20error:\x20','test'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x0910,0x79));var _0x0091=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0910[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x0091('0x0'));var rimraf=require(_0x0091('0x1'));var zipdir=require(_0x0091('0x2'));var jsonpatch=require(_0x0091('0x3'));var rp=require('request-promise');var moment=require(_0x0091('0x4'));var BPromise=require(_0x0091('0x5'));var Mustache=require(_0x0091('0x6'));var util=require(_0x0091('0x7'));var path=require('path');var sox=require(_0x0091('0x8'));var csv=require(_0x0091('0x9'));var ejs=require(_0x0091('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x0091('0xb'));var crypto=require(_0x0091('0xc'));var jsforce=require(_0x0091('0xd'));var deskjs=require(_0x0091('0xe'));var toCsv=require(_0x0091('0x9'));var querystring=require(_0x0091('0xf'));var Papa=require(_0x0091('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x0091('0x11'));var as=require(_0x0091('0x12'));var hardwareService=require(_0x0091('0x13'));var logger=require('../../config/logger')(_0x0091('0x14'));var utils=require('../../config/utils');var config=require(_0x0091('0x15'));var licenseUtil=require(_0x0091('0x16'));var db=require(_0x0091('0x17'))['db'];var integrations=require(_0x0091('0x18'));function respondWithStatusCode(_0x4a8bd7,_0x597a9d){_0x597a9d=_0x597a9d||0xcc;return function(_0x304634){if(_0x304634){return _0x4a8bd7[_0x0091('0x19')](_0x597a9d);}return _0x4a8bd7['status'](_0x597a9d)['end']();};}function respondWithResult(_0x224e60,_0x2d230c){_0x2d230c=_0x2d230c||0xc8;return function(_0xdb8d39){if(_0xdb8d39){return _0x224e60[_0x0091('0x1a')](_0x2d230c)[_0x0091('0x1b')](_0xdb8d39);}};}function respondWithFilteredResult(_0x595ef2,_0x3e42cf){return function(_0x50a147){if(_0x50a147){var _0x2a4e6a=typeof _0x3e42cf[_0x0091('0x1c')]===_0x0091('0x1d')&&typeof _0x3e42cf[_0x0091('0x1e')]===_0x0091('0x1d');var _0x1044e9=_0x50a147[_0x0091('0x1f')];var _0x41ad14=_0x2a4e6a?0x0:_0x3e42cf[_0x0091('0x1c')];var _0x5a620c=_0x2a4e6a?_0x50a147['count']:_0x3e42cf[_0x0091('0x1c')]+_0x3e42cf['limit'];var _0x512475;if(_0x5a620c>=_0x1044e9){_0x5a620c=_0x1044e9;_0x512475=0xc8;}else{_0x512475=0xce;}_0x595ef2[_0x0091('0x1a')](_0x512475);return _0x595ef2[_0x0091('0x20')](_0x0091('0x21'),_0x41ad14+'-'+_0x5a620c+'/'+_0x1044e9)[_0x0091('0x1b')](_0x50a147);}return null;};}function patchUpdates(_0x57ad2a){return function(_0x3ad5f1){try{jsonpatch['apply'](_0x3ad5f1,_0x57ad2a,!![]);}catch(_0x1390da){return BPromise[_0x0091('0x22')](_0x1390da);}return _0x3ad5f1[_0x0091('0x23')]();};}function saveUpdates(_0x5f3d7d,_0x904e7c){return function(_0x3259fc){if(_0x3259fc){return _0x3259fc[_0x0091('0x24')](_0x5f3d7d)[_0x0091('0x25')](function(_0x2e07db){return _0x2e07db;});}return null;};}function removeEntity(_0xffc990,_0x1a36b8){return function(_0x2fb405){if(_0x2fb405){return _0x2fb405[_0x0091('0x26')]()['then'](function(){_0xffc990[_0x0091('0x1a')](0xcc)[_0x0091('0x27')]();});}};}function handleEntityNotFound(_0x346dfd,_0x47afc0){return function(_0x40f5ca){if(!_0x40f5ca){_0x346dfd[_0x0091('0x19')](0x194);}return _0x40f5ca;};}function handleError(_0x334c7c,_0xa72155){_0xa72155=_0xa72155||0x1f4;return function(_0x292f44){logger['error'](_0x292f44['stack']);if(_0x292f44[_0x0091('0x28')]){delete _0x292f44[_0x0091('0x28')];}_0x334c7c[_0x0091('0x1a')](_0xa72155)[_0x0091('0x29')](_0x292f44);};}exports['index']=function(_0x18c718,_0x2e65d6){var _0x21756a={},_0x1c6423={},_0xac9b10={'count':0x0,'rows':[]};var _0x2b9183=_[_0x0091('0x2a')](db['VtigerAccount'][_0x0091('0x2b')],function(_0x5ab79c){return{'name':_0x5ab79c['fieldName'],'type':_0x5ab79c['type'][_0x0091('0x2c')]};});_0x1c6423['model']=_[_0x0091('0x2a')](_0x2b9183,_0x0091('0x28'));_0x1c6423[_0x0091('0x2d')]=_[_0x0091('0x2e')](_0x18c718[_0x0091('0x2d')]);_0x1c6423[_0x0091('0x2f')]=_[_0x0091('0x30')](_0x1c6423[_0x0091('0x31')],_0x1c6423[_0x0091('0x2d')]);_0x21756a[_0x0091('0x32')]=_['intersection'](_0x1c6423[_0x0091('0x31')],qs[_0x0091('0x33')](_0x18c718[_0x0091('0x2d')]['fields']));_0x21756a[_0x0091('0x32')]=_0x21756a[_0x0091('0x32')]['length']?_0x21756a['attributes']:_0x1c6423['model'];if(!_0x18c718[_0x0091('0x2d')]['hasOwnProperty']('nolimit')){_0x21756a['limit']=qs[_0x0091('0x1e')](_0x18c718[_0x0091('0x2d')][_0x0091('0x1e')]);_0x21756a['offset']=qs['offset'](_0x18c718[_0x0091('0x2d')]['offset']);}_0x21756a[_0x0091('0x34')]=qs['sort'](_0x18c718['query']['sort']);_0x21756a['where']=qs[_0x0091('0x2f')](_[_0x0091('0x35')](_0x18c718[_0x0091('0x2d')],_0x1c6423[_0x0091('0x2f')]),_0x2b9183);if(_0x18c718[_0x0091('0x2d')]['filter']){_0x21756a['where']=_['merge'](_0x21756a[_0x0091('0x36')],{'$or':_[_0x0091('0x2a')](_0x2b9183,function(_0x26e508){if(_0x26e508[_0x0091('0x37')]!=='VIRTUAL'){var _0x3b3459={};_0x3b3459[_0x26e508[_0x0091('0x28')]]={'$like':'%'+_0x18c718['query'][_0x0091('0x38')]+'%'};return _0x3b3459;}})});}_0x21756a=_['merge']({},_0x21756a,_0x18c718[_0x0091('0x39')]);var _0x7e86be={'where':_0x21756a[_0x0091('0x36')]};return db[_0x0091('0x3a')][_0x0091('0x1f')](_0x7e86be)['then'](function(_0x4d5a58){_0xac9b10[_0x0091('0x1f')]=_0x4d5a58;if(_0x18c718[_0x0091('0x2d')][_0x0091('0x3b')]){_0x21756a[_0x0091('0x3c')]=[{'all':!![]}];}return db[_0x0091('0x3a')]['findAll'](_0x21756a);})[_0x0091('0x25')](function(_0x310eea){_0xac9b10['rows']=_0x310eea;return _0xac9b10;})[_0x0091('0x25')](respondWithFilteredResult(_0x2e65d6,_0x21756a))[_0x0091('0x3d')](handleError(_0x2e65d6,null));};exports[_0x0091('0x3e')]=function(_0x3e290b,_0x1d9f0f){var _0x3c64ca={'raw':![],'where':{'id':_0x3e290b[_0x0091('0x3f')]['id']}},_0x32bbfc={};_0x32bbfc[_0x0091('0x31')]=_[_0x0091('0x2e')](db['VtigerAccount'][_0x0091('0x2b')]);_0x32bbfc[_0x0091('0x2d')]=_['keys'](_0x3e290b[_0x0091('0x2d')]);_0x32bbfc['filters']=_['intersection'](_0x32bbfc[_0x0091('0x31')],_0x32bbfc[_0x0091('0x2d')]);_0x3c64ca[_0x0091('0x32')]=_[_0x0091('0x30')](_0x32bbfc[_0x0091('0x31')],qs[_0x0091('0x33')](_0x3e290b[_0x0091('0x2d')]['fields']));_0x3c64ca['attributes']=_0x3c64ca[_0x0091('0x32')][_0x0091('0x40')]?_0x3c64ca[_0x0091('0x32')]:_0x32bbfc[_0x0091('0x31')];if(_0x3e290b[_0x0091('0x2d')][_0x0091('0x3b')]){_0x3c64ca[_0x0091('0x3c')]=[{'all':!![]}];}_0x3c64ca=_[_0x0091('0x41')]({},_0x3c64ca,_0x3e290b[_0x0091('0x39')]);return db[_0x0091('0x3a')][_0x0091('0x42')](_0x3c64ca)[_0x0091('0x25')](handleEntityNotFound(_0x1d9f0f,null))['then'](respondWithResult(_0x1d9f0f,null))['catch'](handleError(_0x1d9f0f,null));};exports['create']=function(_0x84e277,_0x46d542){return db[_0x0091('0x3a')][_0x0091('0x43')](_0x84e277[_0x0091('0x44')],{})[_0x0091('0x25')](respondWithResult(_0x46d542,0xc9))[_0x0091('0x3d')](handleError(_0x46d542,null));};exports[_0x0091('0x24')]=function(_0x425132,_0xa17086){if(_0x425132[_0x0091('0x44')]['id']){delete _0x425132[_0x0091('0x44')]['id'];}return db[_0x0091('0x3a')]['find']({'where':{'id':_0x425132[_0x0091('0x3f')]['id']}})[_0x0091('0x25')](handleEntityNotFound(_0xa17086,null))[_0x0091('0x25')](saveUpdates(_0x425132[_0x0091('0x44')],null))[_0x0091('0x25')](respondWithResult(_0xa17086,null))[_0x0091('0x3d')](handleError(_0xa17086,null));};exports[_0x0091('0x26')]=function(_0x471eae,_0x4997e7){return db['VtigerAccount'][_0x0091('0x42')]({'where':{'id':_0x471eae[_0x0091('0x3f')]['id']}})[_0x0091('0x25')](handleEntityNotFound(_0x4997e7,null))['then'](removeEntity(_0x4997e7,null))['catch'](handleError(_0x4997e7,null));};exports[_0x0091('0x45')]=function(_0x9e06a1,_0x403a06,_0x32dd9c){var _0x1f72b6={};var _0x9e8b8a={};var _0x383701;var _0x333a95;return db[_0x0091('0x3a')][_0x0091('0x46')]({'where':{'id':_0x9e06a1['params']['id']}})[_0x0091('0x25')](handleEntityNotFound(_0x403a06,null))[_0x0091('0x25')](function(_0x1e4887){if(_0x1e4887){_0x383701=_0x1e4887;_0x9e8b8a[_0x0091('0x31')]=_[_0x0091('0x2e')](db[_0x0091('0x47')][_0x0091('0x2b')]);_0x9e8b8a[_0x0091('0x2d')]=_[_0x0091('0x2e')](_0x9e06a1[_0x0091('0x2d')]);_0x9e8b8a[_0x0091('0x2f')]=_['intersection'](_0x9e8b8a['model'],_0x9e8b8a[_0x0091('0x2d')]);_0x1f72b6[_0x0091('0x32')]=_[_0x0091('0x30')](_0x9e8b8a['model'],qs['fields'](_0x9e06a1[_0x0091('0x2d')][_0x0091('0x33')]));_0x1f72b6['attributes']=_0x1f72b6['attributes'][_0x0091('0x40')]?_0x1f72b6[_0x0091('0x32')]:_0x9e8b8a['model'];_0x1f72b6[_0x0091('0x34')]=qs[_0x0091('0x48')](_0x9e06a1[_0x0091('0x2d')][_0x0091('0x48')]);_0x1f72b6[_0x0091('0x36')]=qs[_0x0091('0x2f')](_['pick'](_0x9e06a1['query'],_0x9e8b8a[_0x0091('0x2f')]));if(_0x9e06a1[_0x0091('0x2d')][_0x0091('0x38')]){_0x1f72b6[_0x0091('0x36')]=_['merge'](_0x1f72b6[_0x0091('0x36')],{'$or':_[_0x0091('0x2a')](_0x1f72b6[_0x0091('0x32')],function(_0x466a66){var _0x46a218={};_0x46a218[_0x466a66]={'$like':'%'+_0x9e06a1['query'][_0x0091('0x38')]+'%'};return _0x46a218;})});}_0x1f72b6=_[_0x0091('0x41')]({},_0x1f72b6,_0x9e06a1[_0x0091('0x39')]);return _0x383701['getConfigurations'](_0x1f72b6);}})[_0x0091('0x25')](function(_0x48c8ae){if(_0x48c8ae){_0x333a95=_0x48c8ae[_0x0091('0x40')];if(!_0x9e06a1[_0x0091('0x2d')][_0x0091('0x49')](_0x0091('0x4a'))){_0x1f72b6[_0x0091('0x1e')]=qs[_0x0091('0x1e')](_0x9e06a1[_0x0091('0x2d')]['limit']);_0x1f72b6['offset']=qs['offset'](_0x9e06a1['query'][_0x0091('0x1c')]);}return _0x383701[_0x0091('0x45')](_0x1f72b6);}})[_0x0091('0x25')](function(_0x34f5ce){if(_0x34f5ce){return _0x34f5ce?{'count':_0x333a95,'rows':_0x34f5ce}:null;}})[_0x0091('0x25')](respondWithResult(_0x403a06,null))[_0x0091('0x3d')](handleError(_0x403a06,null));};exports[_0x0091('0x4b')]=function(_0x1698ad,_0x23d1a9,_0x571783){if(_0x1698ad[_0x0091('0x44')]['id']){delete _0x1698ad[_0x0091('0x44')]['id'];}return db[_0x0091('0x3a')][_0x0091('0x46')]({'where':{'id':_0x1698ad[_0x0091('0x3f')]['id']}})[_0x0091('0x25')](handleEntityNotFound(_0x23d1a9,null))[_0x0091('0x25')](function(_0x265d0f){if(_0x265d0f){_0x1698ad[_0x0091('0x44')][_0x0091('0x4c')]=_0x265d0f['id'];_0x1698ad[_0x0091('0x44')][_0x0091('0x4d')]=integrations[_0x0091('0x4e')](_0x1698ad[_0x0091('0x44')][_0x0091('0x4f')],_0x1698ad[_0x0091('0x44')]['type']);_0x1698ad[_0x0091('0x44')][_0x0091('0x50')]=integrations['getDescriptions'](_0x1698ad['body'][_0x0091('0x4f')],_0x1698ad[_0x0091('0x44')]['type']);return db[_0x0091('0x47')][_0x0091('0x43')](_0x1698ad[_0x0091('0x44')],{'include':[{'model':db[_0x0091('0x51')],'as':'Subjects'},{'model':db[_0x0091('0x51')],'as':_0x0091('0x50')}]});}return null;})['then'](respondWithResult(_0x23d1a9,null))[_0x0091('0x3d')](handleError(_0x23d1a9,null));};var md5=require(_0x0091('0x52'));exports[_0x0091('0x53')]=function(_0x2bc16a,_0x345cfd,_0x202eec){var _0x36d97b=null;var _0x3a3026=null;var _0x1bbe35=null;var _0xa36003=null;var _0xf20875='';return db[_0x0091('0x3a')]['findOne']({'where':{'id':_0x2bc16a[_0x0091('0x3f')]['id']},'attributes':['id',_0x0091('0x28'),_0x0091('0x54'),_0x0091('0x55'),_0x0091('0x56'),'remoteUri',_0x0091('0x57'),_0x0091('0x58')]})[_0x0091('0x25')](handleEntityNotFound(_0x345cfd,null))[_0x0091('0x25')](function(_0x3ccde4){if(_0x3ccde4){_0x36d97b=_0x3ccde4['username'];_0x3a3026=_0x3ccde4[_0x0091('0x58')];_0x1bbe35=_0x3ccde4[_0x0091('0x56')];_0xf20875=_0x3ccde4[_0x0091('0x59')];var _0x173ac8=_0xf20875[_0x0091('0x5a')](-0x1);if(_0x173ac8==='/'){_0xf20875=_0xf20875['substring'](0x0,_0xf20875['lastIndexOf'](_0x173ac8));}_0xa36003=util[_0x0091('0x5b')](_0x0091('0x5c'),_0xf20875);var _0x3116a3={'method':'GET','uri':_0xa36003,'qs':{'operation':_0x0091('0x5d'),'username':_0x3ccde4[_0x0091('0x54')]},'json':!![]};return rp(_0x3116a3);}})['then'](function(_0x1ee758){if(_0x1ee758[_0x0091('0x5e')]){var _0x37b747={'method':_0x0091('0x5f'),'uri':_0xa36003,'form':{'operation':_0x0091('0x60'),'username':_0x36d97b,'accessKey':md5(_0x1ee758[_0x0091('0x61')]['token']+_0x3a3026)},'json':!![]};return rp(_0x37b747);}})['then'](function(_0x3228cf){if(_0x3228cf[_0x0091('0x5e')]){var _0x54e820={'method':_0x0091('0x62'),'uri':_0xa36003,'qs':{'operation':_0x0091('0x63'),'username':_0x36d97b,'sessionName':_0x3228cf[_0x0091('0x61')]['sessionName'],'elementType':_0x1bbe35},'json':!![]};return rp(_0x54e820);}})[_0x0091('0x25')](function(_0x13ea54){if(_0x13ea54[_0x0091('0x5e')]){var _0x2aa8ba=[_0x0091('0x64'),'reference',_0x0091('0x65')];_['remove'](_0x13ea54[_0x0091('0x61')][_0x0091('0x33')],function(_0x5bcff3){return _0x2aa8ba[_0x0091('0x66')](_0x5bcff3[_0x0091('0x37')][_0x0091('0x28')]);});_[_0x0091('0x67')](_0x13ea54[_0x0091('0x61')][_0x0091('0x33')],function(_0x46733c){return _0x46733c[_0x0091('0x68')]==='false';});return{'count':_0x13ea54[_0x0091('0x61')][_0x0091('0x33')][_0x0091('0x40')],'rows':_[_0x0091('0x2a')](_0x13ea54[_0x0091('0x61')][_0x0091('0x33')],function(_0xaeefb9){return{'id':_0xaeefb9[_0x0091('0x28')],'name':_0xaeefb9[_0x0091('0x69')],'custom':_['startsWith'](_0xaeefb9[_0x0091('0x28')],_0x0091('0x6a'))?!![]:![],'options':_0xaeefb9['type'][_0x0091('0x28')]===_0x0091('0x6b')&&_0xaeefb9[_0x0091('0x37')][_0x0091('0x6c')][_0x0091('0x40')]>0x0?_['map'](_0xaeefb9[_0x0091('0x37')][_0x0091('0x6c')],function(_0x44f120){return{'name':_0x44f120[_0x0091('0x69')],'value':_0x44f120[_0x0091('0x6d')]};}):[]};})};}})[_0x0091('0x25')](respondWithResult(_0x345cfd,null))['catch'](function(_0x3d0927){console[_0x0091('0x6e')](_0x0091('0x6f')+_0x3d0927);var _0x141a14=_0x2bc16a[_0x0091('0x2d')][_0x0091('0x70')]?0x1f4:_0x3d0927['statusCode']||0x1f4;logger[_0x0091('0x71')](_0x0091('0x72'),_0x0091('0x53'),_0x141a14,JSON['stringify'](_0x3d0927));delete _0x3d0927[_0x0091('0x28')];if(_0x141a14===0x191){_0x141a14=0x190;}_0x345cfd['status'](_0x141a14)[_0x0091('0x29')](_0x2bc16a[_0x0091('0x2d')][_0x0091('0x70')]?{'message':_0x0091('0x73'),'statusCode':_0x3d0927[_0x0091('0x74')]}:_0x3d0927);});};
\ No newline at end of file
index bd46832..60f4475 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf57e=['VtigerAccount','lodash','../../config/logger','moment','bluebird','path','rimraf','./intVtigerAccount.attributes','../../components/integrations/configuration','define'];(function(_0x445c01,_0x3cc6ae){var _0xe8629c=function(_0x5a65eb){while(--_0x5a65eb){_0x445c01['push'](_0x445c01['shift']());}};_0xe8629c(++_0x3cc6ae);}(_0xf57e,0x141));var _0xef57=function(_0x4f748d,_0x546058){_0x4f748d=_0x4f748d-0x0;var _0x8b791b=_0xf57e[_0x4f748d];return _0x8b791b;};'use strict';var _=require(_0xef57('0x0'));var util=require('util');var logger=require(_0xef57('0x1'))('api');var moment=require(_0xef57('0x2'));var BPromise=require(_0xef57('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xef57('0x4'));var rimraf=require(_0xef57('0x5'));var config=require('../../config/environment');var attributes=require(_0xef57('0x6'));var integrations=require(_0xef57('0x7'));module['exports']=function(_0x2227a7,_0x16d31d){return _0x2227a7[_0xef57('0x8')](_0xef57('0x9'),attributes,{'tableName':'int_vtiger_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc415=['define','int_vtiger_accounts','lodash','util','../../config/logger','api','bluebird','path','./intVtigerAccount.attributes','../../components/integrations/configuration','exports'];(function(_0x250f95,_0x5a5728){var _0x4ada97=function(_0x392edc){while(--_0x392edc){_0x250f95['push'](_0x250f95['shift']());}};_0x4ada97(++_0x5a5728);}(_0xc415,0x183));var _0x5c41=function(_0x5c6b43,_0x545170){_0x5c6b43=_0x5c6b43-0x0;var _0x26ec87=_0xc415[_0x5c6b43];return _0x26ec87;};'use strict';var _=require(_0x5c41('0x0'));var util=require(_0x5c41('0x1'));var logger=require(_0x5c41('0x2'))(_0x5c41('0x3'));var moment=require('moment');var BPromise=require(_0x5c41('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5c41('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x5c41('0x6'));var integrations=require(_0x5c41('0x7'));module[_0x5c41('0x8')]=function(_0x3618f2,_0x517e72){return _0x3618f2[_0x5c41('0x9')]('VtigerAccount',attributes,{'tableName':_0x5c41('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a61b134..972df8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e6c=['where','limit','include','map','attributes','model','GetVtigerAccount','ShowVtigerAccount','find','lodash','util','bluebird','randomstring','../../config/utils','rpc','jayson/promise','client','then','info','VtigerAccount,\x20%s,\x20%s','request\x20sent','debug','VtigerAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','VtigerAccount','findAll','options','raw'];(function(_0x3917b6,_0xb9eddd){var _0x499959=function(_0x503fbc){while(--_0x503fbc){_0x3917b6['push'](_0x3917b6['shift']());}};_0x499959(++_0xb9eddd);}(_0x6e6c,0xc3));var _0xc6e6=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x6e6c[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0xc6e6('0x0'));var util=require(_0xc6e6('0x1'));var moment=require('moment');var BPromise=require(_0xc6e6('0x2'));var rs=require(_0xc6e6('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xc6e6('0x4'));var logger=require('../../config/logger')(_0xc6e6('0x5'));var config=require('../../config/environment');var jayson=require(_0xc6e6('0x6'));var client=jayson[_0xc6e6('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x301f55,_0x30a10b,_0x4da7bd){return new BPromise(function(_0x324706,_0x15d268){return client['request'](_0x301f55,_0x4da7bd)[_0xc6e6('0x8')](function(_0x481799){logger[_0xc6e6('0x9')](_0xc6e6('0xa'),_0x30a10b,_0xc6e6('0xb'));logger[_0xc6e6('0xc')](_0xc6e6('0xd'),_0x30a10b,_0xc6e6('0xb'),JSON[_0xc6e6('0xe')](_0x481799));if(_0x481799[_0xc6e6('0xf')]){if(_0x481799[_0xc6e6('0xf')]['code']===0x1f4){logger[_0xc6e6('0xf')]('VtigerAccount,\x20%s,\x20%s',_0x30a10b,_0x481799[_0xc6e6('0xf')][_0xc6e6('0x10')]);return _0x15d268(_0x481799[_0xc6e6('0xf')][_0xc6e6('0x10')]);}logger['error'](_0xc6e6('0xa'),_0x30a10b,_0x481799[_0xc6e6('0xf')][_0xc6e6('0x10')]);return _0x324706(_0x481799[_0xc6e6('0xf')][_0xc6e6('0x10')]);}else{logger['info'](_0xc6e6('0xa'),_0x30a10b,_0xc6e6('0xb'));_0x324706(_0x481799['result'][_0xc6e6('0x10')]);}})[_0xc6e6('0x11')](function(_0xedf127){logger['error']('VtigerAccount,\x20%s,\x20%s',_0x30a10b,_0xedf127);_0x15d268(_0xedf127);});});}exports['GetVtigerAccount']=function(_0x3a1ccc){var _0x554262=this;return new Promise(function(_0x46e58f,_0x2069e4){return db[_0xc6e6('0x12')][_0xc6e6('0x13')]({'raw':_0x3a1ccc[_0xc6e6('0x14')]?_0x3a1ccc[_0xc6e6('0x14')][_0xc6e6('0x15')]===undefined?!![]:![]:!![],'where':_0x3a1ccc[_0xc6e6('0x14')]?_0x3a1ccc[_0xc6e6('0x14')][_0xc6e6('0x16')]||null:null,'attributes':_0x3a1ccc['options']?_0x3a1ccc[_0xc6e6('0x14')]['attributes']||null:null,'limit':_0x3a1ccc[_0xc6e6('0x14')]?_0x3a1ccc[_0xc6e6('0x14')][_0xc6e6('0x17')]||null:null,'include':_0x3a1ccc[_0xc6e6('0x14')]?_0x3a1ccc['options'][_0xc6e6('0x18')]?_[_0xc6e6('0x19')](_0x3a1ccc[_0xc6e6('0x14')][_0xc6e6('0x18')],function(_0x107561){return{'model':db[_0x107561['model']],'as':_0x107561['as'],'attributes':_0x107561[_0xc6e6('0x1a')],'include':_0x107561['include']?_[_0xc6e6('0x19')](_0x107561[_0xc6e6('0x18')],function(_0x2e5e0e){return{'model':db[_0x2e5e0e[_0xc6e6('0x1b')]],'as':_0x2e5e0e['as'],'attributes':_0x2e5e0e['attributes'],'include':_0x2e5e0e[_0xc6e6('0x18')]?_['map'](_0x2e5e0e[_0xc6e6('0x18')],function(_0x534745){return{'model':db[_0x534745[_0xc6e6('0x1b')]],'as':_0x534745['as'],'attributes':_0x534745[_0xc6e6('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xc6e6('0x8')](function(_0x41e7c2){logger[_0xc6e6('0x9')]('GetVtigerAccount',_0x3a1ccc);logger[_0xc6e6('0xc')](_0xc6e6('0x1c'),_0x3a1ccc,JSON[_0xc6e6('0xe')](_0x41e7c2));_0x46e58f(_0x41e7c2);})[_0xc6e6('0x11')](function(_0x4d1284){logger[_0xc6e6('0xf')]('GetVtigerAccount',_0x4d1284[_0xc6e6('0x10')],_0x3a1ccc);_0x2069e4(_0x554262[_0xc6e6('0xf')](0x1f4,_0x4d1284[_0xc6e6('0x10')]));});});};exports[_0xc6e6('0x1d')]=function(_0xd3b63){var _0x402598=this;return new Promise(function(_0x43ff9c,_0x337442){return db[_0xc6e6('0x12')][_0xc6e6('0x1e')]({'raw':_0xd3b63[_0xc6e6('0x14')]?_0xd3b63[_0xc6e6('0x14')][_0xc6e6('0x15')]===undefined?!![]:![]:!![],'where':_0xd3b63[_0xc6e6('0x14')]?_0xd3b63[_0xc6e6('0x14')][_0xc6e6('0x16')]||null:null,'attributes':_0xd3b63[_0xc6e6('0x14')]?_0xd3b63['options'][_0xc6e6('0x1a')]||null:null,'include':_0xd3b63[_0xc6e6('0x14')]?_0xd3b63['options']['include']?_[_0xc6e6('0x19')](_0xd3b63[_0xc6e6('0x14')][_0xc6e6('0x18')],function(_0x152e45){return{'model':db[_0x152e45[_0xc6e6('0x1b')]],'as':_0x152e45['as'],'attributes':_0x152e45[_0xc6e6('0x1a')],'include':_0x152e45['include']?_[_0xc6e6('0x19')](_0x152e45[_0xc6e6('0x18')],function(_0x1fff39){return{'model':db[_0x1fff39['model']],'as':_0x1fff39['as'],'attributes':_0x1fff39['attributes'],'include':_0x1fff39[_0xc6e6('0x18')]?_[_0xc6e6('0x19')](_0x1fff39[_0xc6e6('0x18')],function(_0x2db0a2){return{'model':db[_0x2db0a2['model']],'as':_0x2db0a2['as'],'attributes':_0x2db0a2['attributes']};}):[]};}):[]};}):[]:[]})[_0xc6e6('0x8')](function(_0x4e94ea){logger[_0xc6e6('0x9')]('ShowVtigerAccount',_0xd3b63);logger[_0xc6e6('0xc')](_0xc6e6('0x1d'),_0xd3b63,JSON[_0xc6e6('0xe')](_0x4e94ea));_0x43ff9c(_0x4e94ea);})[_0xc6e6('0x11')](function(_0x58b972){logger['error'](_0xc6e6('0x1d'),_0x58b972[_0xc6e6('0x10')],_0xd3b63);_0x337442(_0x402598[_0xc6e6('0xf')](0x1f4,_0x58b972[_0xc6e6('0x10')]));});});};
\ No newline at end of file
+var _0xe5b5=['GetVtigerAccount','VtigerAccount','options','where','attributes','include','map','model','debug','ShowVtigerAccount','raw','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','VtigerAccount,\x20%s,\x20%s,\x20%s','stringify','error','VtigerAccount,\x20%s,\x20%s','message','result','catch'];(function(_0x259d17,_0x220710){var _0x407535=function(_0x49bc38){while(--_0x49bc38){_0x259d17['push'](_0x259d17['shift']());}};_0x407535(++_0x220710);}(_0xe5b5,0x12b));var _0x5e5b=function(_0x4ee9cd,_0xd375b0){_0x4ee9cd=_0x4ee9cd-0x0;var _0x328a5b=_0xe5b5[_0x4ee9cd];return _0x328a5b;};'use strict';var _=require(_0x5e5b('0x0'));var util=require(_0x5e5b('0x1'));var moment=require(_0x5e5b('0x2'));var BPromise=require(_0x5e5b('0x3'));var rs=require(_0x5e5b('0x4'));var fs=require('fs');var Redis=require(_0x5e5b('0x5'));var db=require(_0x5e5b('0x6'))['db'];var utils=require(_0x5e5b('0x7'));var logger=require(_0x5e5b('0x8'))(_0x5e5b('0x9'));var config=require(_0x5e5b('0xa'));var jayson=require(_0x5e5b('0xb'));var client=jayson[_0x5e5b('0xc')][_0x5e5b('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x545eb3,_0x29db2c,_0xe089b1){return new BPromise(function(_0xcbd478,_0x258414){return client[_0x5e5b('0xe')](_0x545eb3,_0xe089b1)[_0x5e5b('0xf')](function(_0x3a37db){logger[_0x5e5b('0x10')]('VtigerAccount,\x20%s,\x20%s',_0x29db2c,_0x5e5b('0x11'));logger['debug'](_0x5e5b('0x12'),_0x29db2c,_0x5e5b('0x11'),JSON[_0x5e5b('0x13')](_0x3a37db));if(_0x3a37db[_0x5e5b('0x14')]){if(_0x3a37db['error']['code']===0x1f4){logger['error'](_0x5e5b('0x15'),_0x29db2c,_0x3a37db[_0x5e5b('0x14')][_0x5e5b('0x16')]);return _0x258414(_0x3a37db[_0x5e5b('0x14')][_0x5e5b('0x16')]);}logger[_0x5e5b('0x14')](_0x5e5b('0x15'),_0x29db2c,_0x3a37db['error'][_0x5e5b('0x16')]);return _0xcbd478(_0x3a37db[_0x5e5b('0x14')]['message']);}else{logger[_0x5e5b('0x10')]('VtigerAccount,\x20%s,\x20%s',_0x29db2c,'request\x20sent');_0xcbd478(_0x3a37db[_0x5e5b('0x17')][_0x5e5b('0x16')]);}})[_0x5e5b('0x18')](function(_0x5c7148){logger[_0x5e5b('0x14')]('VtigerAccount,\x20%s,\x20%s',_0x29db2c,_0x5c7148);_0x258414(_0x5c7148);});});}exports[_0x5e5b('0x19')]=function(_0x45a091){var _0x4c5f9a=this;return new Promise(function(_0xe5aa6b,_0x1560e1){return db[_0x5e5b('0x1a')]['findAll']({'raw':_0x45a091[_0x5e5b('0x1b')]?_0x45a091[_0x5e5b('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x45a091[_0x5e5b('0x1b')]?_0x45a091[_0x5e5b('0x1b')][_0x5e5b('0x1c')]||null:null,'attributes':_0x45a091[_0x5e5b('0x1b')]?_0x45a091[_0x5e5b('0x1b')][_0x5e5b('0x1d')]||null:null,'limit':_0x45a091[_0x5e5b('0x1b')]?_0x45a091[_0x5e5b('0x1b')]['limit']||null:null,'include':_0x45a091['options']?_0x45a091[_0x5e5b('0x1b')][_0x5e5b('0x1e')]?_[_0x5e5b('0x1f')](_0x45a091[_0x5e5b('0x1b')][_0x5e5b('0x1e')],function(_0x28cd95){return{'model':db[_0x28cd95[_0x5e5b('0x20')]],'as':_0x28cd95['as'],'attributes':_0x28cd95[_0x5e5b('0x1d')],'include':_0x28cd95[_0x5e5b('0x1e')]?_[_0x5e5b('0x1f')](_0x28cd95[_0x5e5b('0x1e')],function(_0x4da321){return{'model':db[_0x4da321[_0x5e5b('0x20')]],'as':_0x4da321['as'],'attributes':_0x4da321[_0x5e5b('0x1d')],'include':_0x4da321[_0x5e5b('0x1e')]?_['map'](_0x4da321[_0x5e5b('0x1e')],function(_0xdb2863){return{'model':db[_0xdb2863['model']],'as':_0xdb2863['as'],'attributes':_0xdb2863[_0x5e5b('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x5e5b('0xf')](function(_0x39ce16){logger[_0x5e5b('0x10')](_0x5e5b('0x19'),_0x45a091);logger[_0x5e5b('0x21')](_0x5e5b('0x19'),_0x45a091,JSON[_0x5e5b('0x13')](_0x39ce16));_0xe5aa6b(_0x39ce16);})[_0x5e5b('0x18')](function(_0x42da3b){logger[_0x5e5b('0x14')](_0x5e5b('0x19'),_0x42da3b['message'],_0x45a091);_0x1560e1(_0x4c5f9a['error'](0x1f4,_0x42da3b[_0x5e5b('0x16')]));});});};exports[_0x5e5b('0x22')]=function(_0xb68419){var _0x3dcdab=this;return new Promise(function(_0x12f1ee,_0x4b9be8){return db[_0x5e5b('0x1a')]['find']({'raw':_0xb68419[_0x5e5b('0x1b')]?_0xb68419[_0x5e5b('0x1b')][_0x5e5b('0x23')]===undefined?!![]:![]:!![],'where':_0xb68419[_0x5e5b('0x1b')]?_0xb68419['options'][_0x5e5b('0x1c')]||null:null,'attributes':_0xb68419[_0x5e5b('0x1b')]?_0xb68419['options'][_0x5e5b('0x1d')]||null:null,'include':_0xb68419[_0x5e5b('0x1b')]?_0xb68419[_0x5e5b('0x1b')][_0x5e5b('0x1e')]?_[_0x5e5b('0x1f')](_0xb68419[_0x5e5b('0x1b')][_0x5e5b('0x1e')],function(_0x317451){return{'model':db[_0x317451['model']],'as':_0x317451['as'],'attributes':_0x317451[_0x5e5b('0x1d')],'include':_0x317451[_0x5e5b('0x1e')]?_[_0x5e5b('0x1f')](_0x317451[_0x5e5b('0x1e')],function(_0x7da7a5){return{'model':db[_0x7da7a5[_0x5e5b('0x20')]],'as':_0x7da7a5['as'],'attributes':_0x7da7a5['attributes'],'include':_0x7da7a5['include']?_[_0x5e5b('0x1f')](_0x7da7a5[_0x5e5b('0x1e')],function(_0x8ec651){return{'model':db[_0x8ec651['model']],'as':_0x8ec651['as'],'attributes':_0x8ec651[_0x5e5b('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x5e5b('0xf')](function(_0x18f5ba){logger[_0x5e5b('0x10')]('ShowVtigerAccount',_0xb68419);logger[_0x5e5b('0x21')](_0x5e5b('0x22'),_0xb68419,JSON['stringify'](_0x18f5ba));_0x12f1ee(_0x18f5ba);})['catch'](function(_0xe9c586){logger[_0x5e5b('0x14')](_0x5e5b('0x22'),_0xe9c586['message'],_0xb68419);_0x4b9be8(_0x3dcdab[_0x5e5b('0x14')](0x1f4,_0xe9c586['message']));});});};
\ No newline at end of file
index 897064b..8d55e3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf60c=['multer','util','connect-timeout','../../components/interaction/service','get','index','/:id','show','isAuthenticated','getFields','getSubjects','/:id/descriptions','getDescriptions','post','create','update','delete','exports'];(function(_0x1c98fb,_0x4000f2){var _0x45bc57=function(_0x136b7e){while(--_0x136b7e){_0x1c98fb['push'](_0x1c98fb['shift']());}};_0x45bc57(++_0x4000f2);}(_0xf60c,0xea));var _0xcf60=function(_0x4cced8,_0x454e7f){_0x4cced8=_0x4cced8-0x0;var _0x3efe9d=_0xf60c[_0x4cced8];return _0x3efe9d;};'use strict';var multer=require(_0xcf60('0x0'));var util=require(_0xcf60('0x1'));var path=require('path');var timeout=require(_0xcf60('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xcf60('0x3'));var config=require('../../config/environment');var controller=require('./intVtigerConfiguration.controller');router[_0xcf60('0x4')]('/',auth['isAuthenticated'](),controller[_0xcf60('0x5')]);router[_0xcf60('0x4')](_0xcf60('0x6'),auth['isAuthenticated'](),controller[_0xcf60('0x7')]);router[_0xcf60('0x4')]('/:id/fields',auth[_0xcf60('0x8')](),controller[_0xcf60('0x9')]);router['get']('/:id/subjects',auth['isAuthenticated'](),controller[_0xcf60('0xa')]);router[_0xcf60('0x4')](_0xcf60('0xb'),auth[_0xcf60('0x8')](),controller[_0xcf60('0xc')]);router[_0xcf60('0xd')]('/',auth['isAuthenticated'](),controller[_0xcf60('0xe')]);router['put']('/:id',auth[_0xcf60('0x8')](),controller[_0xcf60('0xf')]);router[_0xcf60('0x10')]('/:id',auth[_0xcf60('0x8')](),controller['destroy']);module[_0xcf60('0x11')]=router;
\ No newline at end of file
+var _0x4623=['getFields','/:id/subjects','getSubjects','getDescriptions','put','update','delete','destroy','exports','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerConfiguration.controller','get','isAuthenticated','index','/:id','/:id/fields'];(function(_0x5400b,_0x55943a){var _0x36a39b=function(_0x56963c){while(--_0x56963c){_0x5400b['push'](_0x5400b['shift']());}};_0x36a39b(++_0x55943a);}(_0x4623,0x111));var _0x3462=function(_0x40eee4,_0x380171){_0x40eee4=_0x40eee4-0x0;var _0x3ba92d=_0x4623[_0x40eee4];return _0x3ba92d;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3462('0x0'));var timeout=require('connect-timeout');var express=require(_0x3462('0x1'));var router=express[_0x3462('0x2')]();var fs_extra=require(_0x3462('0x3'));var auth=require(_0x3462('0x4'));var interaction=require(_0x3462('0x5'));var config=require(_0x3462('0x6'));var controller=require(_0x3462('0x7'));router[_0x3462('0x8')]('/',auth[_0x3462('0x9')](),controller[_0x3462('0xa')]);router[_0x3462('0x8')](_0x3462('0xb'),auth[_0x3462('0x9')](),controller['show']);router[_0x3462('0x8')](_0x3462('0xc'),auth['isAuthenticated'](),controller[_0x3462('0xd')]);router[_0x3462('0x8')](_0x3462('0xe'),auth[_0x3462('0x9')](),controller[_0x3462('0xf')]);router['get']('/:id/descriptions',auth['isAuthenticated'](),controller[_0x3462('0x10')]);router['post']('/',auth[_0x3462('0x9')](),controller['create']);router[_0x3462('0x11')](_0x3462('0xb'),auth[_0x3462('0x9')](),controller[_0x3462('0x12')]);router[_0x3462('0x13')](_0x3462('0xb'),auth[_0x3462('0x9')](),controller[_0x3462('0x14')]);module[_0x3462('0x15')]=router;
\ No newline at end of file
index b8fc96a..380b8e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3260=['exports','STRING','sequelize'];(function(_0x29f128,_0x3ceab5){var _0x117266=function(_0x1598b3){while(--_0x1598b3){_0x29f128['push'](_0x29f128['shift']());}};_0x117266(++_0x3ceab5);}(_0x3260,0x1bb));var _0x0326=function(_0x24bac6,_0x2a01df){_0x24bac6=_0x24bac6-0x0;var _0x5b399d=_0x3260[_0x24bac6];return _0x5b399d;};'use strict';var Sequelize=require(_0x0326('0x0'));module[_0x0326('0x1')]={'name':{'type':Sequelize[_0x0326('0x2')]},'description':{'type':Sequelize[_0x0326('0x2')]}};
\ No newline at end of file
+var _0xde13=['sequelize','exports','STRING'];(function(_0x4d0c97,_0x254789){var _0x2a7f30=function(_0x128972){while(--_0x128972){_0x4d0c97['push'](_0x4d0c97['shift']());}};_0x2a7f30(++_0x254789);}(_0xde13,0x99));var _0x3de1=function(_0x2172e2,_0x5956cb){_0x2172e2=_0x2172e2-0x0;var _0xcf8a04=_0xde13[_0x2172e2];return _0xcf8a04;};'use strict';var Sequelize=require(_0x3de1('0x0'));module[_0x3de1('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x3de1('0x2')]}};
\ No newline at end of file
index a5d0261..d293590 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34a4=['lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','update','destroy','then','end','sendStatus','error','stack','send','rawAttributes','fieldName','type','key','model','map','name','query','keys','filters','attributes','fields','order','sort','where','pick','VIRTUAL','filter','merge','options','VtigerConfiguration','includeAll','findAll','rows','catch','show','intersection','length','include','find','create','body','params','hasOwnProperty','nolimit','getFields','getSubjects','findOne','VtigerField','getDescriptions','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','path','sox','to-csv','ejs','fs-extra'];(function(_0xd1f854,_0x532346){var _0x548294=function(_0x4be823){while(--_0x4be823){_0xd1f854['push'](_0xd1f854['shift']());}};_0x548294(++_0x532346);}(_0x34a4,0xec));var _0x434a=function(_0x146907,_0x541dcb){_0x146907=_0x146907-0x0;var _0x47e370=_0x34a4[_0x146907];return _0x47e370;};'use strict';var emlformat=require(_0x434a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x434a('0x1'));var jsonpatch=require(_0x434a('0x2'));var rp=require(_0x434a('0x3'));var moment=require('moment');var BPromise=require(_0x434a('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x434a('0x5'));var sox=require(_0x434a('0x6'));var csv=require(_0x434a('0x7'));var ejs=require(_0x434a('0x8'));var fs=require('fs');var fs_extra=require(_0x434a('0x9'));var _=require(_0x434a('0xa'));var squel=require(_0x434a('0xb'));var crypto=require(_0x434a('0xc'));var jsforce=require(_0x434a('0xd'));var deskjs=require(_0x434a('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x434a('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x434a('0x10'));var as=require(_0x434a('0x11'));var hardwareService=require(_0x434a('0x12'));var logger=require(_0x434a('0x13'))(_0x434a('0x14'));var utils=require(_0x434a('0x15'));var config=require(_0x434a('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x434a('0x17'))['db'];function respondWithStatusCode(_0x1655d9,_0x48ab16){_0x48ab16=_0x48ab16||0xcc;return function(_0x2c85c5){if(_0x2c85c5){return _0x1655d9['sendStatus'](_0x48ab16);}return _0x1655d9[_0x434a('0x18')](_0x48ab16)['end']();};}function respondWithResult(_0x1be9ad,_0x1ce452){_0x1ce452=_0x1ce452||0xc8;return function(_0x3a2214){if(_0x3a2214){return _0x1be9ad[_0x434a('0x18')](_0x1ce452)[_0x434a('0x19')](_0x3a2214);}};}function respondWithFilteredResult(_0x1b42bc,_0x99a2b5){return function(_0x236442){if(_0x236442){var _0x5dde3f=typeof _0x99a2b5['offset']===_0x434a('0x1a')&&typeof _0x99a2b5[_0x434a('0x1b')]===_0x434a('0x1a');var _0x1ccf96=_0x236442[_0x434a('0x1c')];var _0x4b037d=_0x5dde3f?0x0:_0x99a2b5[_0x434a('0x1d')];var _0x34244f=_0x5dde3f?_0x236442[_0x434a('0x1c')]:_0x99a2b5[_0x434a('0x1d')]+_0x99a2b5[_0x434a('0x1b')];var _0x3284c8;if(_0x34244f>=_0x1ccf96){_0x34244f=_0x1ccf96;_0x3284c8=0xc8;}else{_0x3284c8=0xce;}_0x1b42bc[_0x434a('0x18')](_0x3284c8);return _0x1b42bc[_0x434a('0x1e')](_0x434a('0x1f'),_0x4b037d+'-'+_0x34244f+'/'+_0x1ccf96)['json'](_0x236442);}return null;};}function patchUpdates(_0x22bf9b){return function(_0x1b7c34){try{jsonpatch[_0x434a('0x20')](_0x1b7c34,_0x22bf9b,!![]);}catch(_0xf561d0){return BPromise[_0x434a('0x21')](_0xf561d0);}return _0x1b7c34['save']();};}function saveUpdates(_0x3c8aea,_0xffb8f8){return function(_0x2b0c4d){if(_0x2b0c4d){return _0x2b0c4d[_0x434a('0x22')](_0x3c8aea)['then'](function(_0x2ad5ce){return _0x2ad5ce;});}return null;};}function removeEntity(_0x1e8906,_0xfc7238){return function(_0x59c6f4){if(_0x59c6f4){return _0x59c6f4[_0x434a('0x23')]()[_0x434a('0x24')](function(){_0x1e8906[_0x434a('0x18')](0xcc)[_0x434a('0x25')]();});}};}function handleEntityNotFound(_0x181388,_0x351e90){return function(_0x4de476){if(!_0x4de476){_0x181388[_0x434a('0x26')](0x194);}return _0x4de476;};}function handleError(_0x5ec82f,_0x14779a){_0x14779a=_0x14779a||0x1f4;return function(_0x514aca){logger[_0x434a('0x27')](_0x514aca[_0x434a('0x28')]);if(_0x514aca['name']){delete _0x514aca['name'];}_0x5ec82f['status'](_0x14779a)[_0x434a('0x29')](_0x514aca);};}exports['index']=function(_0x48c946,_0x402137){var _0x331856={},_0x3d929c={},_0x36eb5d={'count':0x0,'rows':[]};var _0x1711fa=_['map'](db['VtigerConfiguration'][_0x434a('0x2a')],function(_0x14f725){return{'name':_0x14f725[_0x434a('0x2b')],'type':_0x14f725[_0x434a('0x2c')][_0x434a('0x2d')]};});_0x3d929c[_0x434a('0x2e')]=_[_0x434a('0x2f')](_0x1711fa,_0x434a('0x30'));_0x3d929c[_0x434a('0x31')]=_[_0x434a('0x32')](_0x48c946['query']);_0x3d929c[_0x434a('0x33')]=_['intersection'](_0x3d929c[_0x434a('0x2e')],_0x3d929c[_0x434a('0x31')]);_0x331856[_0x434a('0x34')]=_['intersection'](_0x3d929c[_0x434a('0x2e')],qs[_0x434a('0x35')](_0x48c946[_0x434a('0x31')][_0x434a('0x35')]));_0x331856['attributes']=_0x331856[_0x434a('0x34')]['length']?_0x331856[_0x434a('0x34')]:_0x3d929c[_0x434a('0x2e')];if(!_0x48c946['query']['hasOwnProperty']('nolimit')){_0x331856[_0x434a('0x1b')]=qs['limit'](_0x48c946[_0x434a('0x31')]['limit']);_0x331856[_0x434a('0x1d')]=qs[_0x434a('0x1d')](_0x48c946[_0x434a('0x31')][_0x434a('0x1d')]);}_0x331856[_0x434a('0x36')]=qs[_0x434a('0x37')](_0x48c946[_0x434a('0x31')]['sort']);_0x331856[_0x434a('0x38')]=qs[_0x434a('0x33')](_[_0x434a('0x39')](_0x48c946[_0x434a('0x31')],_0x3d929c[_0x434a('0x33')]),_0x1711fa);if(_0x48c946[_0x434a('0x31')]['filter']){_0x331856[_0x434a('0x38')]=_['merge'](_0x331856[_0x434a('0x38')],{'$or':_[_0x434a('0x2f')](_0x1711fa,function(_0xfe561f){if(_0xfe561f['type']!==_0x434a('0x3a')){var _0x2525e6={};_0x2525e6[_0xfe561f['name']]={'$like':'%'+_0x48c946[_0x434a('0x31')][_0x434a('0x3b')]+'%'};return _0x2525e6;}})});}_0x331856=_[_0x434a('0x3c')]({},_0x331856,_0x48c946[_0x434a('0x3d')]);var _0xf609b9={'where':_0x331856['where']};return db[_0x434a('0x3e')][_0x434a('0x1c')](_0xf609b9)['then'](function(_0xb24353){_0x36eb5d[_0x434a('0x1c')]=_0xb24353;if(_0x48c946[_0x434a('0x31')][_0x434a('0x3f')]){_0x331856['include']=[{'all':!![]}];}return db[_0x434a('0x3e')][_0x434a('0x40')](_0x331856);})[_0x434a('0x24')](function(_0x2d4674){_0x36eb5d[_0x434a('0x41')]=_0x2d4674;return _0x36eb5d;})[_0x434a('0x24')](respondWithFilteredResult(_0x402137,_0x331856))[_0x434a('0x42')](handleError(_0x402137,null));};exports[_0x434a('0x43')]=function(_0x5230b8,_0x3b2fb8){var _0x4d1a4e={'raw':![],'where':{'id':_0x5230b8['params']['id']}},_0x4add5d={};_0x4add5d[_0x434a('0x2e')]=_[_0x434a('0x32')](db[_0x434a('0x3e')][_0x434a('0x2a')]);_0x4add5d[_0x434a('0x31')]=_[_0x434a('0x32')](_0x5230b8[_0x434a('0x31')]);_0x4add5d['filters']=_[_0x434a('0x44')](_0x4add5d[_0x434a('0x2e')],_0x4add5d['query']);_0x4d1a4e[_0x434a('0x34')]=_[_0x434a('0x44')](_0x4add5d['model'],qs['fields'](_0x5230b8[_0x434a('0x31')][_0x434a('0x35')]));_0x4d1a4e[_0x434a('0x34')]=_0x4d1a4e[_0x434a('0x34')][_0x434a('0x45')]?_0x4d1a4e[_0x434a('0x34')]:_0x4add5d[_0x434a('0x2e')];if(_0x5230b8[_0x434a('0x31')]['includeAll']){_0x4d1a4e[_0x434a('0x46')]=[{'all':!![]}];}_0x4d1a4e=_[_0x434a('0x3c')]({},_0x4d1a4e,_0x5230b8[_0x434a('0x3d')]);return db[_0x434a('0x3e')][_0x434a('0x47')](_0x4d1a4e)['then'](handleEntityNotFound(_0x3b2fb8,null))[_0x434a('0x24')](respondWithResult(_0x3b2fb8,null))['catch'](handleError(_0x3b2fb8,null));};exports[_0x434a('0x48')]=function(_0x2bbea7,_0x433526){return db['VtigerConfiguration'][_0x434a('0x48')](_0x2bbea7[_0x434a('0x49')],{})[_0x434a('0x24')](respondWithResult(_0x433526,0xc9))[_0x434a('0x42')](handleError(_0x433526,null));};exports[_0x434a('0x22')]=function(_0x21ed8b,_0x4c5888){if(_0x21ed8b['body']['id']){delete _0x21ed8b[_0x434a('0x49')]['id'];}return db[_0x434a('0x3e')][_0x434a('0x47')]({'where':{'id':_0x21ed8b[_0x434a('0x4a')]['id']}})[_0x434a('0x24')](handleEntityNotFound(_0x4c5888,null))['then'](saveUpdates(_0x21ed8b[_0x434a('0x49')],null))['then'](respondWithResult(_0x4c5888,null))[_0x434a('0x42')](handleError(_0x4c5888,null));};exports[_0x434a('0x23')]=function(_0x52d6eb,_0x484da7){return db[_0x434a('0x3e')]['find']({'where':{'id':_0x52d6eb[_0x434a('0x4a')]['id']}})['then'](handleEntityNotFound(_0x484da7,null))[_0x434a('0x24')](removeEntity(_0x484da7,null))[_0x434a('0x42')](handleError(_0x484da7,null));};exports['getFields']=function(_0x1d2d22,_0x411c5a,_0x418b67){var _0x5dee5b={};var _0x23b80f={};var _0x931dde;var _0x42cbb8;return db[_0x434a('0x3e')]['findOne']({'where':{'id':_0x1d2d22['params']['id']}})[_0x434a('0x24')](handleEntityNotFound(_0x411c5a,null))['then'](function(_0x3e9c79){if(_0x3e9c79){_0x931dde=_0x3e9c79;_0x23b80f[_0x434a('0x2e')]=_[_0x434a('0x32')](db['VtigerField'][_0x434a('0x2a')]);_0x23b80f['query']=_[_0x434a('0x32')](_0x1d2d22[_0x434a('0x31')]);_0x23b80f[_0x434a('0x33')]=_[_0x434a('0x44')](_0x23b80f[_0x434a('0x2e')],_0x23b80f[_0x434a('0x31')]);_0x5dee5b[_0x434a('0x34')]=_[_0x434a('0x44')](_0x23b80f['model'],qs[_0x434a('0x35')](_0x1d2d22[_0x434a('0x31')][_0x434a('0x35')]));_0x5dee5b['attributes']=_0x5dee5b[_0x434a('0x34')][_0x434a('0x45')]?_0x5dee5b[_0x434a('0x34')]:_0x23b80f[_0x434a('0x2e')];_0x5dee5b[_0x434a('0x36')]=qs[_0x434a('0x37')](_0x1d2d22[_0x434a('0x31')][_0x434a('0x37')]);_0x5dee5b[_0x434a('0x38')]=qs[_0x434a('0x33')](_[_0x434a('0x39')](_0x1d2d22[_0x434a('0x31')],_0x23b80f[_0x434a('0x33')]));if(_0x1d2d22[_0x434a('0x31')][_0x434a('0x3b')]){_0x5dee5b[_0x434a('0x38')]=_[_0x434a('0x3c')](_0x5dee5b['where'],{'$or':_[_0x434a('0x2f')](_0x5dee5b[_0x434a('0x34')],function(_0x1eeac4){var _0x851b00={};_0x851b00[_0x1eeac4]={'$like':'%'+_0x1d2d22['query']['filter']+'%'};return _0x851b00;})});}_0x5dee5b=_[_0x434a('0x3c')]({},_0x5dee5b,_0x1d2d22[_0x434a('0x3d')]);return _0x931dde['getFields'](_0x5dee5b);}})[_0x434a('0x24')](function(_0x117a0b){if(_0x117a0b){_0x42cbb8=_0x117a0b[_0x434a('0x45')];if(!_0x1d2d22[_0x434a('0x31')][_0x434a('0x4b')](_0x434a('0x4c'))){_0x5dee5b[_0x434a('0x1b')]=qs[_0x434a('0x1b')](_0x1d2d22[_0x434a('0x31')][_0x434a('0x1b')]);_0x5dee5b[_0x434a('0x1d')]=qs['offset'](_0x1d2d22[_0x434a('0x31')][_0x434a('0x1d')]);}return _0x931dde[_0x434a('0x4d')](_0x5dee5b);}})[_0x434a('0x24')](function(_0x451970){if(_0x451970){return _0x451970?{'count':_0x42cbb8,'rows':_0x451970}:null;}})[_0x434a('0x24')](respondWithResult(_0x411c5a,null))['catch'](handleError(_0x411c5a,null));};exports[_0x434a('0x4e')]=function(_0x266e64,_0x4a7abc,_0x2574a9){var _0x55d71a={};var _0x500e09={};var _0x3e9896;var _0x297aec;return db[_0x434a('0x3e')][_0x434a('0x4f')]({'where':{'id':_0x266e64[_0x434a('0x4a')]['id']}})[_0x434a('0x24')](handleEntityNotFound(_0x4a7abc,null))['then'](function(_0xd14b52){if(_0xd14b52){_0x3e9896=_0xd14b52;_0x500e09[_0x434a('0x2e')]=_[_0x434a('0x32')](db[_0x434a('0x50')][_0x434a('0x2a')]);_0x500e09['query']=_['keys'](_0x266e64[_0x434a('0x31')]);_0x500e09['filters']=_[_0x434a('0x44')](_0x500e09[_0x434a('0x2e')],_0x500e09[_0x434a('0x31')]);_0x55d71a['attributes']=_[_0x434a('0x44')](_0x500e09[_0x434a('0x2e')],qs[_0x434a('0x35')](_0x266e64['query'][_0x434a('0x35')]));_0x55d71a[_0x434a('0x34')]=_0x55d71a[_0x434a('0x34')]['length']?_0x55d71a[_0x434a('0x34')]:_0x500e09['model'];_0x55d71a[_0x434a('0x36')]=qs[_0x434a('0x37')](_0x266e64[_0x434a('0x31')][_0x434a('0x37')]);_0x55d71a['where']=qs[_0x434a('0x33')](_['pick'](_0x266e64['query'],_0x500e09['filters']));if(_0x266e64['query'][_0x434a('0x3b')]){_0x55d71a[_0x434a('0x38')]=_[_0x434a('0x3c')](_0x55d71a[_0x434a('0x38')],{'$or':_[_0x434a('0x2f')](_0x55d71a[_0x434a('0x34')],function(_0x12b294){var _0x449a5f={};_0x449a5f[_0x12b294]={'$like':'%'+_0x266e64[_0x434a('0x31')]['filter']+'%'};return _0x449a5f;})});}_0x55d71a=_[_0x434a('0x3c')]({},_0x55d71a,_0x266e64['options']);return _0x3e9896[_0x434a('0x4e')](_0x55d71a);}})[_0x434a('0x24')](function(_0x595b23){if(_0x595b23){_0x297aec=_0x595b23['length'];if(!_0x266e64[_0x434a('0x31')][_0x434a('0x4b')](_0x434a('0x4c'))){_0x55d71a[_0x434a('0x1b')]=qs[_0x434a('0x1b')](_0x266e64['query'][_0x434a('0x1b')]);_0x55d71a[_0x434a('0x1d')]=qs[_0x434a('0x1d')](_0x266e64['query']['offset']);}return _0x3e9896[_0x434a('0x4e')](_0x55d71a);}})[_0x434a('0x24')](function(_0x2dded){if(_0x2dded){return _0x2dded?{'count':_0x297aec,'rows':_0x2dded}:null;}})[_0x434a('0x24')](respondWithResult(_0x4a7abc,null))[_0x434a('0x42')](handleError(_0x4a7abc,null));};exports[_0x434a('0x51')]=function(_0x45fa6c,_0x5cad61,_0x1aa7d6){var _0x2bd070={};var _0x117197={};var _0x2441fa;var _0x1b5d4b;return db['VtigerConfiguration'][_0x434a('0x4f')]({'where':{'id':_0x45fa6c['params']['id']}})[_0x434a('0x24')](handleEntityNotFound(_0x5cad61,null))[_0x434a('0x24')](function(_0x284a6a){if(_0x284a6a){_0x2441fa=_0x284a6a;_0x117197[_0x434a('0x2e')]=_[_0x434a('0x32')](db[_0x434a('0x50')][_0x434a('0x2a')]);_0x117197[_0x434a('0x31')]=_[_0x434a('0x32')](_0x45fa6c[_0x434a('0x31')]);_0x117197['filters']=_[_0x434a('0x44')](_0x117197[_0x434a('0x2e')],_0x117197['query']);_0x2bd070[_0x434a('0x34')]=_[_0x434a('0x44')](_0x117197[_0x434a('0x2e')],qs['fields'](_0x45fa6c[_0x434a('0x31')]['fields']));_0x2bd070['attributes']=_0x2bd070[_0x434a('0x34')][_0x434a('0x45')]?_0x2bd070[_0x434a('0x34')]:_0x117197[_0x434a('0x2e')];_0x2bd070[_0x434a('0x36')]=qs['sort'](_0x45fa6c[_0x434a('0x31')][_0x434a('0x37')]);_0x2bd070[_0x434a('0x38')]=qs[_0x434a('0x33')](_[_0x434a('0x39')](_0x45fa6c[_0x434a('0x31')],_0x117197[_0x434a('0x33')]));if(_0x45fa6c[_0x434a('0x31')][_0x434a('0x3b')]){_0x2bd070['where']=_[_0x434a('0x3c')](_0x2bd070[_0x434a('0x38')],{'$or':_[_0x434a('0x2f')](_0x2bd070[_0x434a('0x34')],function(_0x3dac3c){var _0x3080cf={};_0x3080cf[_0x3dac3c]={'$like':'%'+_0x45fa6c[_0x434a('0x31')]['filter']+'%'};return _0x3080cf;})});}_0x2bd070=_[_0x434a('0x3c')]({},_0x2bd070,_0x45fa6c[_0x434a('0x3d')]);return _0x2441fa[_0x434a('0x51')](_0x2bd070);}})[_0x434a('0x24')](function(_0x27423a){if(_0x27423a){_0x1b5d4b=_0x27423a['length'];if(!_0x45fa6c[_0x434a('0x31')][_0x434a('0x4b')](_0x434a('0x4c'))){_0x2bd070['limit']=qs[_0x434a('0x1b')](_0x45fa6c[_0x434a('0x31')][_0x434a('0x1b')]);_0x2bd070[_0x434a('0x1d')]=qs[_0x434a('0x1d')](_0x45fa6c[_0x434a('0x31')][_0x434a('0x1d')]);}return _0x2441fa[_0x434a('0x51')](_0x2bd070);}})[_0x434a('0x24')](function(_0x7f7b9b){if(_0x7f7b9b){return _0x7f7b9b?{'count':_0x1b5d4b,'rows':_0x7f7b9b}:null;}})[_0x434a('0x24')](respondWithResult(_0x5cad61,null))[_0x434a('0x42')](handleError(_0x5cad61,null));};
\ No newline at end of file
+var _0x8a0f=['show','create','body','params','find','findOne','VtigerField','getFields','hasOwnProperty','getSubjects','getDescriptions','nolimit','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','save','update','error','stack','name','send','map','rawAttributes','type','query','keys','intersection','model','attributes','fields','length','order','sort','where','pick','filters','filter','merge','VIRTUAL','options','VtigerConfiguration','then','includeAll','include','findAll','rows','catch'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8a0f,0x1e6));var _0xf8a0=function(_0x5874a3,_0x4f6f41){_0x5874a3=_0x5874a3-0x0;var _0x316116=_0x8a0f[_0x5874a3];return _0x316116;};'use strict';var emlformat=require(_0xf8a0('0x0'));var rimraf=require(_0xf8a0('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf8a0('0x2'));var rp=require(_0xf8a0('0x3'));var moment=require('moment');var BPromise=require(_0xf8a0('0x4'));var Mustache=require(_0xf8a0('0x5'));var util=require(_0xf8a0('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0xf8a0('0x7'));var ejs=require(_0xf8a0('0x8'));var fs=require('fs');var fs_extra=require(_0xf8a0('0x9'));var _=require(_0xf8a0('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xf8a0('0xb'));var deskjs=require(_0xf8a0('0xc'));var toCsv=require(_0xf8a0('0x7'));var querystring=require(_0xf8a0('0xd'));var Papa=require(_0xf8a0('0xe'));var Redis=require(_0xf8a0('0xf'));var authService=require(_0xf8a0('0x10'));var qs=require(_0xf8a0('0x11'));var as=require(_0xf8a0('0x12'));var hardwareService=require(_0xf8a0('0x13'));var logger=require(_0xf8a0('0x14'))(_0xf8a0('0x15'));var utils=require(_0xf8a0('0x16'));var config=require(_0xf8a0('0x17'));var licenseUtil=require(_0xf8a0('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4e11c1,_0x211ff3){_0x211ff3=_0x211ff3||0xcc;return function(_0x325b2a){if(_0x325b2a){return _0x4e11c1[_0xf8a0('0x19')](_0x211ff3);}return _0x4e11c1[_0xf8a0('0x1a')](_0x211ff3)[_0xf8a0('0x1b')]();};}function respondWithResult(_0x505c0d,_0x64ab3c){_0x64ab3c=_0x64ab3c||0xc8;return function(_0x34b771){if(_0x34b771){return _0x505c0d['status'](_0x64ab3c)[_0xf8a0('0x1c')](_0x34b771);}};}function respondWithFilteredResult(_0x4b5d41,_0x471d60){return function(_0x986220){if(_0x986220){var _0x28a6a7=typeof _0x471d60[_0xf8a0('0x1d')]===_0xf8a0('0x1e')&&typeof _0x471d60[_0xf8a0('0x1f')]===_0xf8a0('0x1e');var _0x353aad=_0x986220['count'];var _0x1f31a2=_0x28a6a7?0x0:_0x471d60[_0xf8a0('0x1d')];var _0x4f6904=_0x28a6a7?_0x986220[_0xf8a0('0x20')]:_0x471d60['offset']+_0x471d60[_0xf8a0('0x1f')];var _0x1cc62b;if(_0x4f6904>=_0x353aad){_0x4f6904=_0x353aad;_0x1cc62b=0xc8;}else{_0x1cc62b=0xce;}_0x4b5d41['status'](_0x1cc62b);return _0x4b5d41[_0xf8a0('0x21')](_0xf8a0('0x22'),_0x1f31a2+'-'+_0x4f6904+'/'+_0x353aad)['json'](_0x986220);}return null;};}function patchUpdates(_0x431f93){return function(_0x3ae578){try{jsonpatch['apply'](_0x3ae578,_0x431f93,!![]);}catch(_0x32b549){return BPromise['reject'](_0x32b549);}return _0x3ae578[_0xf8a0('0x23')]();};}function saveUpdates(_0x2909ec,_0x160ac8){return function(_0x2e3947){if(_0x2e3947){return _0x2e3947[_0xf8a0('0x24')](_0x2909ec)['then'](function(_0x3c99ee){return _0x3c99ee;});}return null;};}function removeEntity(_0x2d182c,_0x3a8a17){return function(_0x57c242){if(_0x57c242){return _0x57c242['destroy']()['then'](function(){_0x2d182c[_0xf8a0('0x1a')](0xcc)[_0xf8a0('0x1b')]();});}};}function handleEntityNotFound(_0x17d138,_0xab310d){return function(_0x23436f){if(!_0x23436f){_0x17d138[_0xf8a0('0x19')](0x194);}return _0x23436f;};}function handleError(_0x265694,_0x4a2129){_0x4a2129=_0x4a2129||0x1f4;return function(_0x290145){logger[_0xf8a0('0x25')](_0x290145[_0xf8a0('0x26')]);if(_0x290145[_0xf8a0('0x27')]){delete _0x290145[_0xf8a0('0x27')];}_0x265694[_0xf8a0('0x1a')](_0x4a2129)[_0xf8a0('0x28')](_0x290145);};}exports['index']=function(_0x54586f,_0x5e968e){var _0x1aa7c6={},_0x1a1971={},_0x4044f4={'count':0x0,'rows':[]};var _0x8b7b72=_[_0xf8a0('0x29')](db['VtigerConfiguration'][_0xf8a0('0x2a')],function(_0x4e94f1){return{'name':_0x4e94f1['fieldName'],'type':_0x4e94f1[_0xf8a0('0x2b')]['key']};});_0x1a1971['model']=_[_0xf8a0('0x29')](_0x8b7b72,_0xf8a0('0x27'));_0x1a1971[_0xf8a0('0x2c')]=_[_0xf8a0('0x2d')](_0x54586f[_0xf8a0('0x2c')]);_0x1a1971['filters']=_[_0xf8a0('0x2e')](_0x1a1971[_0xf8a0('0x2f')],_0x1a1971['query']);_0x1aa7c6[_0xf8a0('0x30')]=_[_0xf8a0('0x2e')](_0x1a1971[_0xf8a0('0x2f')],qs[_0xf8a0('0x31')](_0x54586f[_0xf8a0('0x2c')][_0xf8a0('0x31')]));_0x1aa7c6['attributes']=_0x1aa7c6[_0xf8a0('0x30')][_0xf8a0('0x32')]?_0x1aa7c6['attributes']:_0x1a1971['model'];if(!_0x54586f['query']['hasOwnProperty']('nolimit')){_0x1aa7c6[_0xf8a0('0x1f')]=qs[_0xf8a0('0x1f')](_0x54586f[_0xf8a0('0x2c')][_0xf8a0('0x1f')]);_0x1aa7c6[_0xf8a0('0x1d')]=qs[_0xf8a0('0x1d')](_0x54586f[_0xf8a0('0x2c')][_0xf8a0('0x1d')]);}_0x1aa7c6[_0xf8a0('0x33')]=qs[_0xf8a0('0x34')](_0x54586f[_0xf8a0('0x2c')][_0xf8a0('0x34')]);_0x1aa7c6[_0xf8a0('0x35')]=qs['filters'](_[_0xf8a0('0x36')](_0x54586f[_0xf8a0('0x2c')],_0x1a1971[_0xf8a0('0x37')]),_0x8b7b72);if(_0x54586f['query'][_0xf8a0('0x38')]){_0x1aa7c6[_0xf8a0('0x35')]=_[_0xf8a0('0x39')](_0x1aa7c6['where'],{'$or':_[_0xf8a0('0x29')](_0x8b7b72,function(_0x32d015){if(_0x32d015[_0xf8a0('0x2b')]!==_0xf8a0('0x3a')){var _0x1eb63e={};_0x1eb63e[_0x32d015[_0xf8a0('0x27')]]={'$like':'%'+_0x54586f[_0xf8a0('0x2c')][_0xf8a0('0x38')]+'%'};return _0x1eb63e;}})});}_0x1aa7c6=_[_0xf8a0('0x39')]({},_0x1aa7c6,_0x54586f[_0xf8a0('0x3b')]);var _0xa8fa2b={'where':_0x1aa7c6[_0xf8a0('0x35')]};return db[_0xf8a0('0x3c')]['count'](_0xa8fa2b)[_0xf8a0('0x3d')](function(_0x55674c){_0x4044f4[_0xf8a0('0x20')]=_0x55674c;if(_0x54586f[_0xf8a0('0x2c')][_0xf8a0('0x3e')]){_0x1aa7c6[_0xf8a0('0x3f')]=[{'all':!![]}];}return db[_0xf8a0('0x3c')][_0xf8a0('0x40')](_0x1aa7c6);})[_0xf8a0('0x3d')](function(_0x196c88){_0x4044f4[_0xf8a0('0x41')]=_0x196c88;return _0x4044f4;})[_0xf8a0('0x3d')](respondWithFilteredResult(_0x5e968e,_0x1aa7c6))[_0xf8a0('0x42')](handleError(_0x5e968e,null));};exports[_0xf8a0('0x43')]=function(_0x25ec6c,_0x5217ac){var _0x48511f={'raw':![],'where':{'id':_0x25ec6c['params']['id']}},_0xd8260={};_0xd8260['model']=_[_0xf8a0('0x2d')](db['VtigerConfiguration'][_0xf8a0('0x2a')]);_0xd8260[_0xf8a0('0x2c')]=_[_0xf8a0('0x2d')](_0x25ec6c[_0xf8a0('0x2c')]);_0xd8260[_0xf8a0('0x37')]=_['intersection'](_0xd8260[_0xf8a0('0x2f')],_0xd8260[_0xf8a0('0x2c')]);_0x48511f['attributes']=_[_0xf8a0('0x2e')](_0xd8260['model'],qs[_0xf8a0('0x31')](_0x25ec6c[_0xf8a0('0x2c')]['fields']));_0x48511f[_0xf8a0('0x30')]=_0x48511f['attributes'][_0xf8a0('0x32')]?_0x48511f[_0xf8a0('0x30')]:_0xd8260[_0xf8a0('0x2f')];if(_0x25ec6c[_0xf8a0('0x2c')][_0xf8a0('0x3e')]){_0x48511f[_0xf8a0('0x3f')]=[{'all':!![]}];}_0x48511f=_[_0xf8a0('0x39')]({},_0x48511f,_0x25ec6c[_0xf8a0('0x3b')]);return db[_0xf8a0('0x3c')]['find'](_0x48511f)['then'](handleEntityNotFound(_0x5217ac,null))[_0xf8a0('0x3d')](respondWithResult(_0x5217ac,null))[_0xf8a0('0x42')](handleError(_0x5217ac,null));};exports['create']=function(_0x765f5b,_0x211355){return db[_0xf8a0('0x3c')][_0xf8a0('0x44')](_0x765f5b[_0xf8a0('0x45')],{})[_0xf8a0('0x3d')](respondWithResult(_0x211355,0xc9))[_0xf8a0('0x42')](handleError(_0x211355,null));};exports[_0xf8a0('0x24')]=function(_0x1050d8,_0x34fb0a){if(_0x1050d8['body']['id']){delete _0x1050d8['body']['id'];}return db[_0xf8a0('0x3c')]['find']({'where':{'id':_0x1050d8[_0xf8a0('0x46')]['id']}})['then'](handleEntityNotFound(_0x34fb0a,null))[_0xf8a0('0x3d')](saveUpdates(_0x1050d8[_0xf8a0('0x45')],null))[_0xf8a0('0x3d')](respondWithResult(_0x34fb0a,null))[_0xf8a0('0x42')](handleError(_0x34fb0a,null));};exports['destroy']=function(_0x4cc763,_0x33e935){return db[_0xf8a0('0x3c')][_0xf8a0('0x47')]({'where':{'id':_0x4cc763['params']['id']}})[_0xf8a0('0x3d')](handleEntityNotFound(_0x33e935,null))[_0xf8a0('0x3d')](removeEntity(_0x33e935,null))[_0xf8a0('0x42')](handleError(_0x33e935,null));};exports['getFields']=function(_0x3042f3,_0x1918c4,_0x478177){var _0x361113={};var _0x351976={};var _0x346382;var _0x1301f6;return db[_0xf8a0('0x3c')][_0xf8a0('0x48')]({'where':{'id':_0x3042f3[_0xf8a0('0x46')]['id']}})[_0xf8a0('0x3d')](handleEntityNotFound(_0x1918c4,null))['then'](function(_0x507846){if(_0x507846){_0x346382=_0x507846;_0x351976[_0xf8a0('0x2f')]=_[_0xf8a0('0x2d')](db[_0xf8a0('0x49')][_0xf8a0('0x2a')]);_0x351976[_0xf8a0('0x2c')]=_['keys'](_0x3042f3[_0xf8a0('0x2c')]);_0x351976['filters']=_[_0xf8a0('0x2e')](_0x351976[_0xf8a0('0x2f')],_0x351976[_0xf8a0('0x2c')]);_0x361113[_0xf8a0('0x30')]=_['intersection'](_0x351976[_0xf8a0('0x2f')],qs['fields'](_0x3042f3[_0xf8a0('0x2c')][_0xf8a0('0x31')]));_0x361113[_0xf8a0('0x30')]=_0x361113[_0xf8a0('0x30')][_0xf8a0('0x32')]?_0x361113[_0xf8a0('0x30')]:_0x351976[_0xf8a0('0x2f')];_0x361113[_0xf8a0('0x33')]=qs[_0xf8a0('0x34')](_0x3042f3[_0xf8a0('0x2c')][_0xf8a0('0x34')]);_0x361113[_0xf8a0('0x35')]=qs[_0xf8a0('0x37')](_[_0xf8a0('0x36')](_0x3042f3[_0xf8a0('0x2c')],_0x351976['filters']));if(_0x3042f3[_0xf8a0('0x2c')][_0xf8a0('0x38')]){_0x361113[_0xf8a0('0x35')]=_[_0xf8a0('0x39')](_0x361113['where'],{'$or':_[_0xf8a0('0x29')](_0x361113[_0xf8a0('0x30')],function(_0x425732){var _0x16b11d={};_0x16b11d[_0x425732]={'$like':'%'+_0x3042f3['query']['filter']+'%'};return _0x16b11d;})});}_0x361113=_[_0xf8a0('0x39')]({},_0x361113,_0x3042f3['options']);return _0x346382[_0xf8a0('0x4a')](_0x361113);}})[_0xf8a0('0x3d')](function(_0x32ec7d){if(_0x32ec7d){_0x1301f6=_0x32ec7d[_0xf8a0('0x32')];if(!_0x3042f3[_0xf8a0('0x2c')][_0xf8a0('0x4b')]('nolimit')){_0x361113[_0xf8a0('0x1f')]=qs['limit'](_0x3042f3[_0xf8a0('0x2c')][_0xf8a0('0x1f')]);_0x361113[_0xf8a0('0x1d')]=qs['offset'](_0x3042f3[_0xf8a0('0x2c')][_0xf8a0('0x1d')]);}return _0x346382[_0xf8a0('0x4a')](_0x361113);}})[_0xf8a0('0x3d')](function(_0x299990){if(_0x299990){return _0x299990?{'count':_0x1301f6,'rows':_0x299990}:null;}})[_0xf8a0('0x3d')](respondWithResult(_0x1918c4,null))[_0xf8a0('0x42')](handleError(_0x1918c4,null));};exports[_0xf8a0('0x4c')]=function(_0xf308ea,_0x19c2c6,_0x4668fc){var _0x4876a2={};var _0x36de6a={};var _0x41258c;var _0x19e6f5;return db[_0xf8a0('0x3c')][_0xf8a0('0x48')]({'where':{'id':_0xf308ea[_0xf8a0('0x46')]['id']}})[_0xf8a0('0x3d')](handleEntityNotFound(_0x19c2c6,null))[_0xf8a0('0x3d')](function(_0x4c1fda){if(_0x4c1fda){_0x41258c=_0x4c1fda;_0x36de6a[_0xf8a0('0x2f')]=_[_0xf8a0('0x2d')](db[_0xf8a0('0x49')][_0xf8a0('0x2a')]);_0x36de6a[_0xf8a0('0x2c')]=_[_0xf8a0('0x2d')](_0xf308ea[_0xf8a0('0x2c')]);_0x36de6a['filters']=_[_0xf8a0('0x2e')](_0x36de6a['model'],_0x36de6a[_0xf8a0('0x2c')]);_0x4876a2[_0xf8a0('0x30')]=_[_0xf8a0('0x2e')](_0x36de6a[_0xf8a0('0x2f')],qs[_0xf8a0('0x31')](_0xf308ea[_0xf8a0('0x2c')]['fields']));_0x4876a2[_0xf8a0('0x30')]=_0x4876a2['attributes'][_0xf8a0('0x32')]?_0x4876a2[_0xf8a0('0x30')]:_0x36de6a[_0xf8a0('0x2f')];_0x4876a2[_0xf8a0('0x33')]=qs[_0xf8a0('0x34')](_0xf308ea['query'][_0xf8a0('0x34')]);_0x4876a2[_0xf8a0('0x35')]=qs[_0xf8a0('0x37')](_[_0xf8a0('0x36')](_0xf308ea[_0xf8a0('0x2c')],_0x36de6a[_0xf8a0('0x37')]));if(_0xf308ea['query'][_0xf8a0('0x38')]){_0x4876a2[_0xf8a0('0x35')]=_[_0xf8a0('0x39')](_0x4876a2[_0xf8a0('0x35')],{'$or':_[_0xf8a0('0x29')](_0x4876a2['attributes'],function(_0x25142c){var _0x38d53c={};_0x38d53c[_0x25142c]={'$like':'%'+_0xf308ea[_0xf8a0('0x2c')]['filter']+'%'};return _0x38d53c;})});}_0x4876a2=_[_0xf8a0('0x39')]({},_0x4876a2,_0xf308ea[_0xf8a0('0x3b')]);return _0x41258c[_0xf8a0('0x4c')](_0x4876a2);}})[_0xf8a0('0x3d')](function(_0x4254cf){if(_0x4254cf){_0x19e6f5=_0x4254cf[_0xf8a0('0x32')];if(!_0xf308ea['query'][_0xf8a0('0x4b')]('nolimit')){_0x4876a2[_0xf8a0('0x1f')]=qs['limit'](_0xf308ea[_0xf8a0('0x2c')]['limit']);_0x4876a2[_0xf8a0('0x1d')]=qs[_0xf8a0('0x1d')](_0xf308ea['query'][_0xf8a0('0x1d')]);}return _0x41258c[_0xf8a0('0x4c')](_0x4876a2);}})[_0xf8a0('0x3d')](function(_0x544cc1){if(_0x544cc1){return _0x544cc1?{'count':_0x19e6f5,'rows':_0x544cc1}:null;}})[_0xf8a0('0x3d')](respondWithResult(_0x19c2c6,null))[_0xf8a0('0x42')](handleError(_0x19c2c6,null));};exports[_0xf8a0('0x4d')]=function(_0x26611d,_0x3b45b9,_0x4658fd){var _0x54122d={};var _0x2ebb40={};var _0x16e12e;var _0x3a503d;return db['VtigerConfiguration']['findOne']({'where':{'id':_0x26611d[_0xf8a0('0x46')]['id']}})[_0xf8a0('0x3d')](handleEntityNotFound(_0x3b45b9,null))[_0xf8a0('0x3d')](function(_0x56f750){if(_0x56f750){_0x16e12e=_0x56f750;_0x2ebb40[_0xf8a0('0x2f')]=_[_0xf8a0('0x2d')](db['VtigerField']['rawAttributes']);_0x2ebb40[_0xf8a0('0x2c')]=_[_0xf8a0('0x2d')](_0x26611d[_0xf8a0('0x2c')]);_0x2ebb40[_0xf8a0('0x37')]=_[_0xf8a0('0x2e')](_0x2ebb40[_0xf8a0('0x2f')],_0x2ebb40[_0xf8a0('0x2c')]);_0x54122d[_0xf8a0('0x30')]=_[_0xf8a0('0x2e')](_0x2ebb40[_0xf8a0('0x2f')],qs[_0xf8a0('0x31')](_0x26611d[_0xf8a0('0x2c')][_0xf8a0('0x31')]));_0x54122d[_0xf8a0('0x30')]=_0x54122d[_0xf8a0('0x30')][_0xf8a0('0x32')]?_0x54122d['attributes']:_0x2ebb40['model'];_0x54122d[_0xf8a0('0x33')]=qs[_0xf8a0('0x34')](_0x26611d[_0xf8a0('0x2c')]['sort']);_0x54122d['where']=qs[_0xf8a0('0x37')](_[_0xf8a0('0x36')](_0x26611d[_0xf8a0('0x2c')],_0x2ebb40[_0xf8a0('0x37')]));if(_0x26611d[_0xf8a0('0x2c')][_0xf8a0('0x38')]){_0x54122d[_0xf8a0('0x35')]=_[_0xf8a0('0x39')](_0x54122d[_0xf8a0('0x35')],{'$or':_[_0xf8a0('0x29')](_0x54122d['attributes'],function(_0x5607cc){var _0x190f92={};_0x190f92[_0x5607cc]={'$like':'%'+_0x26611d[_0xf8a0('0x2c')]['filter']+'%'};return _0x190f92;})});}_0x54122d=_[_0xf8a0('0x39')]({},_0x54122d,_0x26611d['options']);return _0x16e12e['getDescriptions'](_0x54122d);}})[_0xf8a0('0x3d')](function(_0x59e821){if(_0x59e821){_0x3a503d=_0x59e821['length'];if(!_0x26611d[_0xf8a0('0x2c')][_0xf8a0('0x4b')](_0xf8a0('0x4e'))){_0x54122d[_0xf8a0('0x1f')]=qs['limit'](_0x26611d[_0xf8a0('0x2c')]['limit']);_0x54122d['offset']=qs[_0xf8a0('0x1d')](_0x26611d['query'][_0xf8a0('0x1d')]);}return _0x16e12e[_0xf8a0('0x4d')](_0x54122d);}})[_0xf8a0('0x3d')](function(_0x1e2506){if(_0x1e2506){return _0x1e2506?{'count':_0x3a503d,'rows':_0x1e2506}:null;}})[_0xf8a0('0x3d')](respondWithResult(_0x3b45b9,null))[_0xf8a0('0x42')](handleError(_0x3b45b9,null));};
\ No newline at end of file
index 6da4c2e..5159964 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75d2=['util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intVtigerConfiguration.attributes','define','lodash'];(function(_0x373dee,_0x1a8c45){var _0x46798f=function(_0xc389f0){while(--_0xc389f0){_0x373dee['push'](_0x373dee['shift']());}};_0x46798f(++_0x1a8c45);}(_0x75d2,0x16a));var _0x275d=function(_0x36909d,_0x2795f1){_0x36909d=_0x36909d-0x0;var _0x1fd29d=_0x75d2[_0x36909d];return _0x1fd29d;};'use strict';var _=require(_0x275d('0x0'));var util=require(_0x275d('0x1'));var logger=require(_0x275d('0x2'))(_0x275d('0x3'));var moment=require(_0x275d('0x4'));var BPromise=require(_0x275d('0x5'));var rp=require(_0x275d('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x275d('0x7'));var config=require(_0x275d('0x8'));var attributes=require(_0x275d('0x9'));module['exports']=function(_0x1f54d4,_0x386e53){return _0x1f54d4[_0x275d('0xa')]('VtigerConfiguration',attributes,{'tableName':'int_vtiger_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb27f=['util','api','request-promise','path','rimraf','../../config/environment','./intVtigerConfiguration.attributes','exports','VtigerConfiguration','lodash'];(function(_0x5cff65,_0x1b40de){var _0x45ec8a=function(_0x2c7937){while(--_0x2c7937){_0x5cff65['push'](_0x5cff65['shift']());}};_0x45ec8a(++_0x1b40de);}(_0xb27f,0xd1));var _0xfb27=function(_0x520964,_0x4e13c4){_0x520964=_0x520964-0x0;var _0x29f4e0=_0xb27f[_0x520964];return _0x29f4e0;};'use strict';var _=require(_0xfb27('0x0'));var util=require(_0xfb27('0x1'));var logger=require('../../config/logger')(_0xfb27('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xfb27('0x3'));var fs=require('fs');var path=require(_0xfb27('0x4'));var rimraf=require(_0xfb27('0x5'));var config=require(_0xfb27('0x6'));var attributes=require(_0xfb27('0x7'));module[_0xfb27('0x8')]=function(_0x46f8c9,_0x329bad){return _0x46f8c9['define'](_0xfb27('0x9'),attributes,{'tableName':'int_vtiger_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c86967e..f92b16e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e85=['debug','error','message','result','catch','lodash','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','client','then','info','VtigerConfiguration,\x20%s,\x20%s','request\x20sent'];(function(_0x8a654b,_0x4be2f9){var _0x94bfbb=function(_0x29efa4){while(--_0x29efa4){_0x8a654b['push'](_0x8a654b['shift']());}};_0x94bfbb(++_0x4be2f9);}(_0x3e85,0xd1));var _0x53e8=function(_0x1b81ae,_0x1941f7){_0x1b81ae=_0x1b81ae-0x0;var _0x33ba48=_0x3e85[_0x1b81ae];return _0x33ba48;};'use strict';var _=require(_0x53e8('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x53e8('0x1'));var rs=require(_0x53e8('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x53e8('0x3'))['db'];var utils=require(_0x53e8('0x4'));var logger=require(_0x53e8('0x5'))(_0x53e8('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x53e8('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x196e29,_0x5c7b5b,_0x115bd8){return new BPromise(function(_0xf74f34,_0xc2e1ca){return client['request'](_0x196e29,_0x115bd8)[_0x53e8('0x8')](function(_0x284ddf){logger[_0x53e8('0x9')](_0x53e8('0xa'),_0x5c7b5b,_0x53e8('0xb'));logger[_0x53e8('0xc')]('VtigerConfiguration,\x20%s,\x20%s,\x20%s',_0x5c7b5b,_0x53e8('0xb'),JSON['stringify'](_0x284ddf));if(_0x284ddf[_0x53e8('0xd')]){if(_0x284ddf[_0x53e8('0xd')]['code']===0x1f4){logger['error'](_0x53e8('0xa'),_0x5c7b5b,_0x284ddf[_0x53e8('0xd')][_0x53e8('0xe')]);return _0xc2e1ca(_0x284ddf[_0x53e8('0xd')]['message']);}logger[_0x53e8('0xd')](_0x53e8('0xa'),_0x5c7b5b,_0x284ddf[_0x53e8('0xd')][_0x53e8('0xe')]);return _0xf74f34(_0x284ddf[_0x53e8('0xd')][_0x53e8('0xe')]);}else{logger[_0x53e8('0x9')](_0x53e8('0xa'),_0x5c7b5b,_0x53e8('0xb'));_0xf74f34(_0x284ddf[_0x53e8('0xf')][_0x53e8('0xe')]);}})[_0x53e8('0x10')](function(_0x1d21cd){logger[_0x53e8('0xd')](_0x53e8('0xa'),_0x5c7b5b,_0x1d21cd);_0xc2e1ca(_0x1d21cd);});});}
\ No newline at end of file
+var _0xa101=['lodash','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','jayson/promise','request','then','info','VtigerConfiguration,\x20%s,\x20%s','request\x20sent','debug','VtigerConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch'];(function(_0x3354ac,_0x1ddce2){var _0x5547da=function(_0x227722){while(--_0x227722){_0x3354ac['push'](_0x3354ac['shift']());}};_0x5547da(++_0x1ddce2);}(_0xa101,0x154));var _0x1a10=function(_0xc40b9f,_0x17ec1f){_0xc40b9f=_0xc40b9f-0x0;var _0x535b9c=_0xa101[_0xc40b9f];return _0x535b9c;};'use strict';var _=require(_0x1a10('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x1a10('0x1'));var rs=require(_0x1a10('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1a10('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x1a10('0x4'))(_0x1a10('0x5'));var config=require('../../config/environment');var jayson=require(_0x1a10('0x6'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x545f4e,_0x54bf9b,_0x126bef){return new BPromise(function(_0x32dee4,_0x5bf290){return client[_0x1a10('0x7')](_0x545f4e,_0x126bef)[_0x1a10('0x8')](function(_0xcdd86){logger[_0x1a10('0x9')](_0x1a10('0xa'),_0x54bf9b,_0x1a10('0xb'));logger[_0x1a10('0xc')](_0x1a10('0xd'),_0x54bf9b,_0x1a10('0xb'),JSON[_0x1a10('0xe')](_0xcdd86));if(_0xcdd86['error']){if(_0xcdd86[_0x1a10('0xf')][_0x1a10('0x10')]===0x1f4){logger[_0x1a10('0xf')](_0x1a10('0xa'),_0x54bf9b,_0xcdd86[_0x1a10('0xf')][_0x1a10('0x11')]);return _0x5bf290(_0xcdd86['error'][_0x1a10('0x11')]);}logger['error'](_0x1a10('0xa'),_0x54bf9b,_0xcdd86[_0x1a10('0xf')][_0x1a10('0x11')]);return _0x32dee4(_0xcdd86[_0x1a10('0xf')][_0x1a10('0x11')]);}else{logger[_0x1a10('0x9')](_0x1a10('0xa'),_0x54bf9b,'request\x20sent');_0x32dee4(_0xcdd86[_0x1a10('0x12')]['message']);}})[_0x1a10('0x13')](function(_0x28e932){logger['error']('VtigerConfiguration,\x20%s,\x20%s',_0x54bf9b,_0x28e932);_0x5bf290(_0x28e932);});});}
\ No newline at end of file
index 586839e..6d75f49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60df=['get','isAuthenticated','index','/:id','post','create','put','update','delete','multer','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intVtigerField.controller'];(function(_0x45ec71,_0x31ca8b){var _0x386f82=function(_0x3023ce){while(--_0x3023ce){_0x45ec71['push'](_0x45ec71['shift']());}};_0x386f82(++_0x31ca8b);}(_0x60df,0xf9));var _0xf60d=function(_0x801f4e,_0x341659){_0x801f4e=_0x801f4e-0x0;var _0x2a920e=_0x60df[_0x801f4e];return _0x2a920e;};'use strict';var multer=require(_0xf60d('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xf60d('0x1'));var router=express[_0xf60d('0x2')]();var fs_extra=require(_0xf60d('0x3'));var auth=require(_0xf60d('0x4'));var interaction=require(_0xf60d('0x5'));var config=require('../../config/environment');var controller=require(_0xf60d('0x6'));router[_0xf60d('0x7')]('/',auth[_0xf60d('0x8')](),controller[_0xf60d('0x9')]);router[_0xf60d('0x7')](_0xf60d('0xa'),auth[_0xf60d('0x8')](),controller['show']);router[_0xf60d('0xb')]('/',auth[_0xf60d('0x8')](),controller[_0xf60d('0xc')]);router[_0xf60d('0xd')](_0xf60d('0xa'),auth[_0xf60d('0x8')](),controller[_0xf60d('0xe')]);router[_0xf60d('0xf')](_0xf60d('0xa'),auth[_0xf60d('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xbf51=['destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./intVtigerField.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete'];(function(_0x20e76e,_0x35ae19){var _0x5a9049=function(_0x17e17e){while(--_0x17e17e){_0x20e76e['push'](_0x20e76e['shift']());}};_0x5a9049(++_0x35ae19);}(_0xbf51,0x167));var _0x1bf5=function(_0x2d2c16,_0x4e88b6){_0x2d2c16=_0x2d2c16-0x0;var _0x53f2fb=_0xbf51[_0x2d2c16];return _0x53f2fb;};'use strict';var multer=require(_0x1bf5('0x0'));var util=require(_0x1bf5('0x1'));var path=require(_0x1bf5('0x2'));var timeout=require(_0x1bf5('0x3'));var express=require(_0x1bf5('0x4'));var router=express[_0x1bf5('0x5')]();var fs_extra=require(_0x1bf5('0x6'));var auth=require(_0x1bf5('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x1bf5('0x8'));router[_0x1bf5('0x9')]('/',auth[_0x1bf5('0xa')](),controller[_0x1bf5('0xb')]);router['get'](_0x1bf5('0xc'),auth['isAuthenticated'](),controller[_0x1bf5('0xd')]);router[_0x1bf5('0xe')]('/',auth[_0x1bf5('0xa')](),controller[_0x1bf5('0xf')]);router[_0x1bf5('0x10')](_0x1bf5('0xc'),auth[_0x1bf5('0xa')](),controller[_0x1bf5('0x11')]);router[_0x1bf5('0x12')](_0x1bf5('0xc'),auth[_0x1bf5('0xa')](),controller[_0x1bf5('0x13')]);module[_0x1bf5('0x14')]=router;
\ No newline at end of file
index e7c658a..41e176b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3206=['picklist','STRING','variable','BOOLEAN','sequelize','ENUM','string','customVariable','keyValue'];(function(_0x28fc16,_0x109544){var _0x2eae11=function(_0x1e8bec){while(--_0x1e8bec){_0x28fc16['push'](_0x28fc16['shift']());}};_0x2eae11(++_0x109544);}(_0x3206,0xb8));var _0x6320=function(_0x2f5d1c,_0x89bd){_0x2f5d1c=_0x2f5d1c-0x0;var _0x4d1267=_0x3206[_0x2f5d1c];return _0x4d1267;};'use strict';var Sequelize=require(_0x6320('0x0'));module['exports']={'type':{'type':Sequelize[_0x6320('0x1')](_0x6320('0x2'),'variable',_0x6320('0x3'),_0x6320('0x4'),_0x6320('0x5')),'defaultValue':'string'},'content':{'type':Sequelize[_0x6320('0x6')]},'key':{'type':Sequelize[_0x6320('0x6')]},'keyType':{'type':Sequelize[_0x6320('0x1')](_0x6320('0x2'),_0x6320('0x7'),'customVariable')},'keyContent':{'type':Sequelize[_0x6320('0x6')]},'idField':{'type':Sequelize[_0x6320('0x6')]},'nameField':{'type':Sequelize[_0x6320('0x6')]},'customField':{'type':Sequelize[_0x6320('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x6320('0x6')]}};
\ No newline at end of file
+var _0x8100=['variable','customVariable','keyValue','STRING','BOOLEAN','sequelize','exports','ENUM','string'];(function(_0xdabb35,_0x252235){var _0x1b8e97=function(_0x341116){while(--_0x341116){_0xdabb35['push'](_0xdabb35['shift']());}};_0x1b8e97(++_0x252235);}(_0x8100,0x1e2));var _0x0810=function(_0xe4848d,_0x5e6e4a){_0xe4848d=_0xe4848d-0x0;var _0xed9c92=_0x8100[_0xe4848d];return _0xed9c92;};'use strict';var Sequelize=require(_0x0810('0x0'));module[_0x0810('0x1')]={'type':{'type':Sequelize[_0x0810('0x2')](_0x0810('0x3'),_0x0810('0x4'),_0x0810('0x5'),_0x0810('0x6'),'picklist'),'defaultValue':'string'},'content':{'type':Sequelize[_0x0810('0x7')]},'key':{'type':Sequelize[_0x0810('0x7')]},'keyType':{'type':Sequelize[_0x0810('0x2')](_0x0810('0x3'),'variable','customVariable')},'keyContent':{'type':Sequelize[_0x0810('0x7')]},'idField':{'type':Sequelize[_0x0810('0x7')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x0810('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x0810('0x7')]}};
\ No newline at end of file
index ef93eb5..82901af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3f7=['include','show','params','catch','create','body','find','eml-format','zip-dir','request-promise','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','save','update','then','destroy','end','error','stack','name','send','map','VtigerField','rawAttributes','key','keys','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filter','type','VIRTUAL','merge','options','includeAll'];(function(_0x449445,_0x5275eb){var _0x5c4e60=function(_0x1524c3){while(--_0x1524c3){_0x449445['push'](_0x449445['shift']());}};_0x5c4e60(++_0x5275eb);}(_0xa3f7,0x1f1));var _0x7a3f=function(_0x2721d8,_0x24abc6){_0x2721d8=_0x2721d8-0x0;var _0x4b399e=_0xa3f7[_0x2721d8];return _0x4b399e;};'use strict';var emlformat=require(_0x7a3f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7a3f('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7a3f('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x7a3f('0x3'));var util=require(_0x7a3f('0x4'));var path=require(_0x7a3f('0x5'));var sox=require(_0x7a3f('0x6'));var csv=require(_0x7a3f('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7a3f('0x8'));var _=require('lodash');var squel=require(_0x7a3f('0x9'));var crypto=require(_0x7a3f('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x7a3f('0xb'));var toCsv=require(_0x7a3f('0x7'));var querystring=require(_0x7a3f('0xc'));var Papa=require(_0x7a3f('0xd'));var Redis=require(_0x7a3f('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x7a3f('0xf'));var as=require(_0x7a3f('0x10'));var hardwareService=require(_0x7a3f('0x11'));var logger=require(_0x7a3f('0x12'))(_0x7a3f('0x13'));var utils=require(_0x7a3f('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x7a3f('0x15'));var db=require(_0x7a3f('0x16'))['db'];function respondWithStatusCode(_0x199639,_0x5d8fa0){_0x5d8fa0=_0x5d8fa0||0xcc;return function(_0x547c63){if(_0x547c63){return _0x199639[_0x7a3f('0x17')](_0x5d8fa0);}return _0x199639[_0x7a3f('0x18')](_0x5d8fa0)['end']();};}function respondWithResult(_0x39e527,_0x252c62){_0x252c62=_0x252c62||0xc8;return function(_0x379766){if(_0x379766){return _0x39e527[_0x7a3f('0x18')](_0x252c62)[_0x7a3f('0x19')](_0x379766);}};}function respondWithFilteredResult(_0x3a2426,_0x320310){return function(_0x2af025){if(_0x2af025){var _0x591ec7=typeof _0x320310[_0x7a3f('0x1a')]===_0x7a3f('0x1b')&&typeof _0x320310[_0x7a3f('0x1c')]===_0x7a3f('0x1b');var _0x589094=_0x2af025['count'];var _0x2f48f3=_0x591ec7?0x0:_0x320310['offset'];var _0x4b1ad7=_0x591ec7?_0x2af025[_0x7a3f('0x1d')]:_0x320310[_0x7a3f('0x1a')]+_0x320310['limit'];var _0x509c9d;if(_0x4b1ad7>=_0x589094){_0x4b1ad7=_0x589094;_0x509c9d=0xc8;}else{_0x509c9d=0xce;}_0x3a2426[_0x7a3f('0x18')](_0x509c9d);return _0x3a2426[_0x7a3f('0x1e')](_0x7a3f('0x1f'),_0x2f48f3+'-'+_0x4b1ad7+'/'+_0x589094)['json'](_0x2af025);}return null;};}function patchUpdates(_0x559c35){return function(_0x2578cc){try{jsonpatch['apply'](_0x2578cc,_0x559c35,!![]);}catch(_0x449e4d){return BPromise['reject'](_0x449e4d);}return _0x2578cc[_0x7a3f('0x20')]();};}function saveUpdates(_0x231714,_0x386208){return function(_0x22c0c1){if(_0x22c0c1){return _0x22c0c1[_0x7a3f('0x21')](_0x231714)[_0x7a3f('0x22')](function(_0x1b7aeb){return _0x1b7aeb;});}return null;};}function removeEntity(_0x43667e,_0x1b9ed7){return function(_0x2f0145){if(_0x2f0145){return _0x2f0145[_0x7a3f('0x23')]()[_0x7a3f('0x22')](function(){_0x43667e[_0x7a3f('0x18')](0xcc)[_0x7a3f('0x24')]();});}};}function handleEntityNotFound(_0x3a5a0f,_0x9020bb){return function(_0x12ad86){if(!_0x12ad86){_0x3a5a0f[_0x7a3f('0x17')](0x194);}return _0x12ad86;};}function handleError(_0xf9e82,_0x2bd82a){_0x2bd82a=_0x2bd82a||0x1f4;return function(_0x463e28){logger[_0x7a3f('0x25')](_0x463e28[_0x7a3f('0x26')]);if(_0x463e28[_0x7a3f('0x27')]){delete _0x463e28[_0x7a3f('0x27')];}_0xf9e82[_0x7a3f('0x18')](_0x2bd82a)[_0x7a3f('0x28')](_0x463e28);};}exports['index']=function(_0x2c3d67,_0x36f0f2){var _0x31275d={},_0x428969={},_0x338bf0={'count':0x0,'rows':[]};var _0x1523eb=_[_0x7a3f('0x29')](db[_0x7a3f('0x2a')][_0x7a3f('0x2b')],function(_0x374838){return{'name':_0x374838['fieldName'],'type':_0x374838['type'][_0x7a3f('0x2c')]};});_0x428969['model']=_['map'](_0x1523eb,'name');_0x428969['query']=_[_0x7a3f('0x2d')](_0x2c3d67[_0x7a3f('0x2e')]);_0x428969[_0x7a3f('0x2f')]=_[_0x7a3f('0x30')](_0x428969[_0x7a3f('0x31')],_0x428969[_0x7a3f('0x2e')]);_0x31275d['attributes']=_['intersection'](_0x428969[_0x7a3f('0x31')],qs[_0x7a3f('0x32')](_0x2c3d67['query'][_0x7a3f('0x32')]));_0x31275d[_0x7a3f('0x33')]=_0x31275d[_0x7a3f('0x33')][_0x7a3f('0x34')]?_0x31275d[_0x7a3f('0x33')]:_0x428969['model'];if(!_0x2c3d67[_0x7a3f('0x2e')][_0x7a3f('0x35')](_0x7a3f('0x36'))){_0x31275d[_0x7a3f('0x1c')]=qs['limit'](_0x2c3d67[_0x7a3f('0x2e')][_0x7a3f('0x1c')]);_0x31275d[_0x7a3f('0x1a')]=qs[_0x7a3f('0x1a')](_0x2c3d67[_0x7a3f('0x2e')][_0x7a3f('0x1a')]);}_0x31275d['order']=qs['sort'](_0x2c3d67[_0x7a3f('0x2e')][_0x7a3f('0x37')]);_0x31275d[_0x7a3f('0x38')]=qs[_0x7a3f('0x2f')](_['pick'](_0x2c3d67[_0x7a3f('0x2e')],_0x428969[_0x7a3f('0x2f')]),_0x1523eb);if(_0x2c3d67[_0x7a3f('0x2e')][_0x7a3f('0x39')]){_0x31275d[_0x7a3f('0x38')]=_['merge'](_0x31275d[_0x7a3f('0x38')],{'$or':_['map'](_0x1523eb,function(_0x57e713){if(_0x57e713[_0x7a3f('0x3a')]!==_0x7a3f('0x3b')){var _0x1c2eed={};_0x1c2eed[_0x57e713[_0x7a3f('0x27')]]={'$like':'%'+_0x2c3d67['query']['filter']+'%'};return _0x1c2eed;}})});}_0x31275d=_[_0x7a3f('0x3c')]({},_0x31275d,_0x2c3d67[_0x7a3f('0x3d')]);var _0xce2b94={'where':_0x31275d[_0x7a3f('0x38')]};return db[_0x7a3f('0x2a')][_0x7a3f('0x1d')](_0xce2b94)[_0x7a3f('0x22')](function(_0x4418f0){_0x338bf0[_0x7a3f('0x1d')]=_0x4418f0;if(_0x2c3d67['query'][_0x7a3f('0x3e')]){_0x31275d[_0x7a3f('0x3f')]=[{'all':!![]}];}return db['VtigerField']['findAll'](_0x31275d);})['then'](function(_0x1d7ee6){_0x338bf0['rows']=_0x1d7ee6;return _0x338bf0;})['then'](respondWithFilteredResult(_0x36f0f2,_0x31275d))['catch'](handleError(_0x36f0f2,null));};exports[_0x7a3f('0x40')]=function(_0x1dc3f3,_0xf84190){var _0x5064ef={'raw':!![],'where':{'id':_0x1dc3f3[_0x7a3f('0x41')]['id']}},_0x43ab60={};_0x43ab60['model']=_['keys'](db[_0x7a3f('0x2a')][_0x7a3f('0x2b')]);_0x43ab60[_0x7a3f('0x2e')]=_['keys'](_0x1dc3f3[_0x7a3f('0x2e')]);_0x43ab60['filters']=_[_0x7a3f('0x30')](_0x43ab60[_0x7a3f('0x31')],_0x43ab60[_0x7a3f('0x2e')]);_0x5064ef[_0x7a3f('0x33')]=_['intersection'](_0x43ab60['model'],qs['fields'](_0x1dc3f3[_0x7a3f('0x2e')][_0x7a3f('0x32')]));_0x5064ef['attributes']=_0x5064ef[_0x7a3f('0x33')]['length']?_0x5064ef[_0x7a3f('0x33')]:_0x43ab60[_0x7a3f('0x31')];if(_0x1dc3f3['query'][_0x7a3f('0x3e')]){_0x5064ef[_0x7a3f('0x3f')]=[{'all':!![]}];}_0x5064ef=_[_0x7a3f('0x3c')]({},_0x5064ef,_0x1dc3f3[_0x7a3f('0x3d')]);return db[_0x7a3f('0x2a')]['find'](_0x5064ef)[_0x7a3f('0x22')](handleEntityNotFound(_0xf84190,null))[_0x7a3f('0x22')](respondWithResult(_0xf84190,null))[_0x7a3f('0x42')](handleError(_0xf84190,null));};exports['create']=function(_0x4859b9,_0x20c45f){return db[_0x7a3f('0x2a')][_0x7a3f('0x43')](_0x4859b9[_0x7a3f('0x44')],{})[_0x7a3f('0x22')](respondWithResult(_0x20c45f,0xc9))[_0x7a3f('0x42')](handleError(_0x20c45f,null));};exports[_0x7a3f('0x21')]=function(_0x41eebd,_0x142c60){if(_0x41eebd[_0x7a3f('0x44')]['id']){delete _0x41eebd[_0x7a3f('0x44')]['id'];}return db['VtigerField']['find']({'where':{'id':_0x41eebd[_0x7a3f('0x41')]['id']}})['then'](handleEntityNotFound(_0x142c60,null))[_0x7a3f('0x22')](saveUpdates(_0x41eebd['body'],null))[_0x7a3f('0x22')](respondWithResult(_0x142c60,null))[_0x7a3f('0x42')](handleError(_0x142c60,null));};exports[_0x7a3f('0x23')]=function(_0x4c6429,_0x41291d){return db[_0x7a3f('0x2a')][_0x7a3f('0x45')]({'where':{'id':_0x4c6429[_0x7a3f('0x41')]['id']}})[_0x7a3f('0x22')](handleEntityNotFound(_0x41291d,null))[_0x7a3f('0x22')](removeEntity(_0x41291d,null))[_0x7a3f('0x42')](handleError(_0x41291d,null));};
\ No newline at end of file
+var _0xdfd8=['mustache','path','sox','to-csv','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','then','destroy','sendStatus','error','name','send','index','map','rawAttributes','type','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','options','VtigerField','include','rows','show','params','includeAll','find','catch','body','eml-format','zip-dir','fast-json-patch','moment'];(function(_0x30ca52,_0x4a3403){var _0x4c7cc5=function(_0x41d78f){while(--_0x41d78f){_0x30ca52['push'](_0x30ca52['shift']());}};_0x4c7cc5(++_0x4a3403);}(_0xdfd8,0x1a6));var _0x8dfd=function(_0x8771d2,_0x5b701f){_0x8771d2=_0x8771d2-0x0;var _0x3f9758=_0xdfd8[_0x8771d2];return _0x3f9758;};'use strict';var emlformat=require(_0x8dfd('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8dfd('0x1'));var jsonpatch=require(_0x8dfd('0x2'));var rp=require('request-promise');var moment=require(_0x8dfd('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x8dfd('0x4'));var util=require('util');var path=require(_0x8dfd('0x5'));var sox=require(_0x8dfd('0x6'));var csv=require(_0x8dfd('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8dfd('0x8'));var _=require(_0x8dfd('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x8dfd('0xa'));var deskjs=require(_0x8dfd('0xb'));var toCsv=require(_0x8dfd('0x7'));var querystring=require(_0x8dfd('0xc'));var Papa=require(_0x8dfd('0xd'));var Redis=require('ioredis');var authService=require(_0x8dfd('0xe'));var qs=require(_0x8dfd('0xf'));var as=require(_0x8dfd('0x10'));var hardwareService=require(_0x8dfd('0x11'));var logger=require(_0x8dfd('0x12'))(_0x8dfd('0x13'));var utils=require(_0x8dfd('0x14'));var config=require(_0x8dfd('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x8dfd('0x16'))['db'];function respondWithStatusCode(_0x4cbfa3,_0x1f40e7){_0x1f40e7=_0x1f40e7||0xcc;return function(_0x24f909){if(_0x24f909){return _0x4cbfa3['sendStatus'](_0x1f40e7);}return _0x4cbfa3[_0x8dfd('0x17')](_0x1f40e7)[_0x8dfd('0x18')]();};}function respondWithResult(_0x1bb91c,_0x3d0c9c){_0x3d0c9c=_0x3d0c9c||0xc8;return function(_0xcfae63){if(_0xcfae63){return _0x1bb91c[_0x8dfd('0x17')](_0x3d0c9c)[_0x8dfd('0x19')](_0xcfae63);}};}function respondWithFilteredResult(_0x41699d,_0x3af0be){return function(_0x769278){if(_0x769278){var _0xe5a4eb=typeof _0x3af0be[_0x8dfd('0x1a')]==='undefined'&&typeof _0x3af0be[_0x8dfd('0x1b')]===_0x8dfd('0x1c');var _0x511fb9=_0x769278[_0x8dfd('0x1d')];var _0x23e586=_0xe5a4eb?0x0:_0x3af0be[_0x8dfd('0x1a')];var _0x1bb85c=_0xe5a4eb?_0x769278['count']:_0x3af0be[_0x8dfd('0x1a')]+_0x3af0be[_0x8dfd('0x1b')];var _0x5bc649;if(_0x1bb85c>=_0x511fb9){_0x1bb85c=_0x511fb9;_0x5bc649=0xc8;}else{_0x5bc649=0xce;}_0x41699d[_0x8dfd('0x17')](_0x5bc649);return _0x41699d[_0x8dfd('0x1e')](_0x8dfd('0x1f'),_0x23e586+'-'+_0x1bb85c+'/'+_0x511fb9)[_0x8dfd('0x19')](_0x769278);}return null;};}function patchUpdates(_0x3eeb29){return function(_0x24074d){try{jsonpatch[_0x8dfd('0x20')](_0x24074d,_0x3eeb29,!![]);}catch(_0x5235a7){return BPromise[_0x8dfd('0x21')](_0x5235a7);}return _0x24074d['save']();};}function saveUpdates(_0x5c89c0,_0x3280f8){return function(_0x307a6b){if(_0x307a6b){return _0x307a6b['update'](_0x5c89c0)[_0x8dfd('0x22')](function(_0x2ff729){return _0x2ff729;});}return null;};}function removeEntity(_0x4d835f,_0x36edba){return function(_0xe2cc16){if(_0xe2cc16){return _0xe2cc16[_0x8dfd('0x23')]()[_0x8dfd('0x22')](function(){_0x4d835f[_0x8dfd('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4479be,_0x6e1817){return function(_0x32994f){if(!_0x32994f){_0x4479be[_0x8dfd('0x24')](0x194);}return _0x32994f;};}function handleError(_0x4e5897,_0x21c246){_0x21c246=_0x21c246||0x1f4;return function(_0x39cbcc){logger[_0x8dfd('0x25')](_0x39cbcc['stack']);if(_0x39cbcc[_0x8dfd('0x26')]){delete _0x39cbcc['name'];}_0x4e5897[_0x8dfd('0x17')](_0x21c246)[_0x8dfd('0x27')](_0x39cbcc);};}exports[_0x8dfd('0x28')]=function(_0x4866a1,_0x8fa332){var _0x120766={},_0x2f21fa={},_0x5c8f61={'count':0x0,'rows':[]};var _0x48923b=_[_0x8dfd('0x29')](db['VtigerField'][_0x8dfd('0x2a')],function(_0x58e1d0){return{'name':_0x58e1d0['fieldName'],'type':_0x58e1d0[_0x8dfd('0x2b')][_0x8dfd('0x2c')]};});_0x2f21fa[_0x8dfd('0x2d')]=_[_0x8dfd('0x29')](_0x48923b,_0x8dfd('0x26'));_0x2f21fa['query']=_[_0x8dfd('0x2e')](_0x4866a1[_0x8dfd('0x2f')]);_0x2f21fa['filters']=_[_0x8dfd('0x30')](_0x2f21fa[_0x8dfd('0x2d')],_0x2f21fa[_0x8dfd('0x2f')]);_0x120766[_0x8dfd('0x31')]=_['intersection'](_0x2f21fa[_0x8dfd('0x2d')],qs['fields'](_0x4866a1[_0x8dfd('0x2f')][_0x8dfd('0x32')]));_0x120766[_0x8dfd('0x31')]=_0x120766[_0x8dfd('0x31')][_0x8dfd('0x33')]?_0x120766[_0x8dfd('0x31')]:_0x2f21fa[_0x8dfd('0x2d')];if(!_0x4866a1[_0x8dfd('0x2f')][_0x8dfd('0x34')](_0x8dfd('0x35'))){_0x120766[_0x8dfd('0x1b')]=qs['limit'](_0x4866a1[_0x8dfd('0x2f')][_0x8dfd('0x1b')]);_0x120766[_0x8dfd('0x1a')]=qs[_0x8dfd('0x1a')](_0x4866a1[_0x8dfd('0x2f')][_0x8dfd('0x1a')]);}_0x120766['order']=qs[_0x8dfd('0x36')](_0x4866a1[_0x8dfd('0x2f')][_0x8dfd('0x36')]);_0x120766[_0x8dfd('0x37')]=qs[_0x8dfd('0x38')](_[_0x8dfd('0x39')](_0x4866a1[_0x8dfd('0x2f')],_0x2f21fa['filters']),_0x48923b);if(_0x4866a1['query'][_0x8dfd('0x3a')]){_0x120766['where']=_[_0x8dfd('0x3b')](_0x120766[_0x8dfd('0x37')],{'$or':_[_0x8dfd('0x29')](_0x48923b,function(_0x455c5c){if(_0x455c5c['type']!==_0x8dfd('0x3c')){var _0x30ae03={};_0x30ae03[_0x455c5c[_0x8dfd('0x26')]]={'$like':'%'+_0x4866a1[_0x8dfd('0x2f')][_0x8dfd('0x3a')]+'%'};return _0x30ae03;}})});}_0x120766=_['merge']({},_0x120766,_0x4866a1[_0x8dfd('0x3d')]);var _0x1c1ad0={'where':_0x120766[_0x8dfd('0x37')]};return db[_0x8dfd('0x3e')]['count'](_0x1c1ad0)[_0x8dfd('0x22')](function(_0x4127db){_0x5c8f61[_0x8dfd('0x1d')]=_0x4127db;if(_0x4866a1[_0x8dfd('0x2f')]['includeAll']){_0x120766[_0x8dfd('0x3f')]=[{'all':!![]}];}return db[_0x8dfd('0x3e')]['findAll'](_0x120766);})[_0x8dfd('0x22')](function(_0x3d3348){_0x5c8f61[_0x8dfd('0x40')]=_0x3d3348;return _0x5c8f61;})[_0x8dfd('0x22')](respondWithFilteredResult(_0x8fa332,_0x120766))['catch'](handleError(_0x8fa332,null));};exports[_0x8dfd('0x41')]=function(_0x1a3a5b,_0x1510d5){var _0x41673b={'raw':!![],'where':{'id':_0x1a3a5b[_0x8dfd('0x42')]['id']}},_0x560826={};_0x560826[_0x8dfd('0x2d')]=_['keys'](db[_0x8dfd('0x3e')][_0x8dfd('0x2a')]);_0x560826[_0x8dfd('0x2f')]=_['keys'](_0x1a3a5b['query']);_0x560826['filters']=_['intersection'](_0x560826[_0x8dfd('0x2d')],_0x560826[_0x8dfd('0x2f')]);_0x41673b[_0x8dfd('0x31')]=_[_0x8dfd('0x30')](_0x560826[_0x8dfd('0x2d')],qs[_0x8dfd('0x32')](_0x1a3a5b[_0x8dfd('0x2f')]['fields']));_0x41673b[_0x8dfd('0x31')]=_0x41673b[_0x8dfd('0x31')][_0x8dfd('0x33')]?_0x41673b[_0x8dfd('0x31')]:_0x560826[_0x8dfd('0x2d')];if(_0x1a3a5b[_0x8dfd('0x2f')][_0x8dfd('0x43')]){_0x41673b[_0x8dfd('0x3f')]=[{'all':!![]}];}_0x41673b=_[_0x8dfd('0x3b')]({},_0x41673b,_0x1a3a5b[_0x8dfd('0x3d')]);return db[_0x8dfd('0x3e')][_0x8dfd('0x44')](_0x41673b)['then'](handleEntityNotFound(_0x1510d5,null))[_0x8dfd('0x22')](respondWithResult(_0x1510d5,null))[_0x8dfd('0x45')](handleError(_0x1510d5,null));};exports['create']=function(_0x1b4185,_0x360b74){return db[_0x8dfd('0x3e')]['create'](_0x1b4185[_0x8dfd('0x46')],{})[_0x8dfd('0x22')](respondWithResult(_0x360b74,0xc9))[_0x8dfd('0x45')](handleError(_0x360b74,null));};exports['update']=function(_0x1a82ca,_0x4d3b82){if(_0x1a82ca['body']['id']){delete _0x1a82ca[_0x8dfd('0x46')]['id'];}return db[_0x8dfd('0x3e')][_0x8dfd('0x44')]({'where':{'id':_0x1a82ca[_0x8dfd('0x42')]['id']}})[_0x8dfd('0x22')](handleEntityNotFound(_0x4d3b82,null))[_0x8dfd('0x22')](saveUpdates(_0x1a82ca['body'],null))[_0x8dfd('0x22')](respondWithResult(_0x4d3b82,null))[_0x8dfd('0x45')](handleError(_0x4d3b82,null));};exports[_0x8dfd('0x23')]=function(_0x236ca5,_0x57271c){return db[_0x8dfd('0x3e')]['find']({'where':{'id':_0x236ca5[_0x8dfd('0x42')]['id']}})[_0x8dfd('0x22')](handleEntityNotFound(_0x57271c,null))[_0x8dfd('0x22')](removeEntity(_0x57271c,null))[_0x8dfd('0x45')](handleError(_0x57271c,null));};
\ No newline at end of file
index 947920f..82b8ade 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca76=['api','moment','bluebird','path','rimraf','../../config/environment','./intVtigerField.attributes','define','vtiger_unique_index','FieldId','lodash','util','../../config/logger'];(function(_0x478c8a,_0x9afc92){var _0x3b6b3e=function(_0x37634e){while(--_0x37634e){_0x478c8a['push'](_0x478c8a['shift']());}};_0x3b6b3e(++_0x9afc92);}(_0xca76,0xda));var _0x6ca7=function(_0x59f1e8,_0x32e24d){_0x59f1e8=_0x59f1e8-0x0;var _0x5be9b4=_0xca76[_0x59f1e8];return _0x5be9b4;};'use strict';var _=require(_0x6ca7('0x0'));var util=require(_0x6ca7('0x1'));var logger=require(_0x6ca7('0x2'))(_0x6ca7('0x3'));var moment=require(_0x6ca7('0x4'));var BPromise=require(_0x6ca7('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6ca7('0x6'));var rimraf=require(_0x6ca7('0x7'));var config=require(_0x6ca7('0x8'));var attributes=require(_0x6ca7('0x9'));module['exports']=function(_0x5b1589,_0x4f3a3b){return _0x5b1589[_0x6ca7('0xa')]('VtigerField',attributes,{'tableName':'int_vtiger_fields','paranoid':![],'indexes':[{'name':_0x6ca7('0xb'),'fields':['idField',_0x6ca7('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe6bb=['./intVtigerField.attributes','exports','define','VtigerField','int_vtiger_fields','vtiger_unique_index','idField','FieldId','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0xde7fd6,_0x521d3b){var _0x68bc6e=function(_0x42d671){while(--_0x42d671){_0xde7fd6['push'](_0xde7fd6['shift']());}};_0x68bc6e(++_0x521d3b);}(_0xe6bb,0x1e4));var _0xbe6b=function(_0x21973e,_0x18e525){_0x21973e=_0x21973e-0x0;var _0x51453f=_0xe6bb[_0x21973e];return _0x51453f;};'use strict';var _=require(_0xbe6b('0x0'));var util=require('util');var logger=require(_0xbe6b('0x1'))(_0xbe6b('0x2'));var moment=require(_0xbe6b('0x3'));var BPromise=require(_0xbe6b('0x4'));var rp=require(_0xbe6b('0x5'));var fs=require('fs');var path=require(_0xbe6b('0x6'));var rimraf=require(_0xbe6b('0x7'));var config=require(_0xbe6b('0x8'));var attributes=require(_0xbe6b('0x9'));module[_0xbe6b('0xa')]=function(_0x21065e,_0x4b9b2b){return _0x21065e[_0xbe6b('0xb')](_0xbe6b('0xc'),attributes,{'tableName':_0xbe6b('0xd'),'paranoid':![],'indexes':[{'name':_0xbe6b('0xe'),'fields':[_0xbe6b('0xf'),_0xbe6b('0x10')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 8a22d02..c210168 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe054=['rpc','client','http','request','VtigerField,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x4b075e,_0x57874c){var _0x31385c=function(_0x3ab6ef){while(--_0x3ab6ef){_0x4b075e['push'](_0x4b075e['shift']());}};_0x31385c(++_0x57874c);}(_0xe054,0xbf));var _0x4e05=function(_0x36387e,_0x147217){_0x36387e=_0x36387e-0x0;var _0x42d77f=_0xe054[_0x36387e];return _0x42d77f;};'use strict';var _=require(_0x4e05('0x0'));var util=require('util');var moment=require(_0x4e05('0x1'));var BPromise=require(_0x4e05('0x2'));var rs=require(_0x4e05('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4e05('0x4'))['db'];var utils=require(_0x4e05('0x5'));var logger=require(_0x4e05('0x6'))(_0x4e05('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x4e05('0x8')][_0x4e05('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x18268d,_0x4e6904,_0x49fc63){return new BPromise(function(_0x39df5a,_0x59a858){return client[_0x4e05('0xa')](_0x18268d,_0x49fc63)['then'](function(_0x398a56){logger['info'](_0x4e05('0xb'),_0x4e6904,_0x4e05('0xc'));logger['debug']('VtigerField,\x20%s,\x20%s,\x20%s',_0x4e6904,_0x4e05('0xc'),JSON[_0x4e05('0xd')](_0x398a56));if(_0x398a56[_0x4e05('0xe')]){if(_0x398a56[_0x4e05('0xe')]['code']===0x1f4){logger[_0x4e05('0xe')](_0x4e05('0xb'),_0x4e6904,_0x398a56[_0x4e05('0xe')]['message']);return _0x59a858(_0x398a56[_0x4e05('0xe')][_0x4e05('0xf')]);}logger['error'](_0x4e05('0xb'),_0x4e6904,_0x398a56[_0x4e05('0xe')][_0x4e05('0xf')]);return _0x39df5a(_0x398a56['error'][_0x4e05('0xf')]);}else{logger['info'](_0x4e05('0xb'),_0x4e6904,'request\x20sent');_0x39df5a(_0x398a56[_0x4e05('0x10')][_0x4e05('0xf')]);}})[_0x4e05('0x11')](function(_0x47bfb6){logger[_0x4e05('0xe')](_0x4e05('0xb'),_0x4e6904,_0x47bfb6);_0x59a858(_0x47bfb6);});});}
\ No newline at end of file
+var _0x9d54=['error','message','request\x20sent','result','catch','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','VtigerField,\x20%s,\x20%s','debug','stringify','code'];(function(_0x3850de,_0x2acfca){var _0x3c405f=function(_0x1e0b0d){while(--_0x1e0b0d){_0x3850de['push'](_0x3850de['shift']());}};_0x3c405f(++_0x2acfca);}(_0x9d54,0x155));var _0x49d5=function(_0x56e8c4,_0x1bf06e){_0x56e8c4=_0x56e8c4-0x0;var _0x330e03=_0x9d54[_0x56e8c4];return _0x330e03;};'use strict';var _=require('lodash');var util=require(_0x49d5('0x0'));var moment=require(_0x49d5('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x49d5('0x2'));var db=require(_0x49d5('0x3'))['db'];var utils=require(_0x49d5('0x4'));var logger=require(_0x49d5('0x5'))(_0x49d5('0x6'));var config=require(_0x49d5('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x49d5('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2903fc,_0x5b18b8,_0x386942){return new BPromise(function(_0x50ddc0,_0x4cc598){return client[_0x49d5('0x9')](_0x2903fc,_0x386942)[_0x49d5('0xa')](function(_0x5d66f1){logger[_0x49d5('0xb')](_0x49d5('0xc'),_0x5b18b8,'request\x20sent');logger[_0x49d5('0xd')]('VtigerField,\x20%s,\x20%s,\x20%s',_0x5b18b8,'request\x20sent',JSON[_0x49d5('0xe')](_0x5d66f1));if(_0x5d66f1['error']){if(_0x5d66f1['error'][_0x49d5('0xf')]===0x1f4){logger[_0x49d5('0x10')](_0x49d5('0xc'),_0x5b18b8,_0x5d66f1[_0x49d5('0x10')][_0x49d5('0x11')]);return _0x4cc598(_0x5d66f1['error'][_0x49d5('0x11')]);}logger['error']('VtigerField,\x20%s,\x20%s',_0x5b18b8,_0x5d66f1['error']['message']);return _0x50ddc0(_0x5d66f1[_0x49d5('0x10')]['message']);}else{logger[_0x49d5('0xb')](_0x49d5('0xc'),_0x5b18b8,_0x49d5('0x12'));_0x50ddc0(_0x5d66f1[_0x49d5('0x13')][_0x49d5('0x11')]);}})[_0x49d5('0x14')](function(_0x531388){logger[_0x49d5('0x10')](_0x49d5('0xc'),_0x5b18b8,_0x531388);_0x4cc598(_0x531388);});});}
\ No newline at end of file
index ef0af2d..ff2fc2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1469=['../../components/interaction/service','../../config/environment','./intZendeskAccount.controller','index','get','/:id','isAuthenticated','show','/:id/configurations','getConfigurations','getFields','post','create','put','delete','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x441c79,_0x2fd53d){var _0x378f09=function(_0x55582b){while(--_0x55582b){_0x441c79['push'](_0x441c79['shift']());}};_0x378f09(++_0x2fd53d);}(_0x1469,0x197));var _0x9146=function(_0x5e5163,_0xb2b3e){_0x5e5163=_0x5e5163-0x0;var _0x2d2eaa=_0x1469[_0x5e5163];return _0x2d2eaa;};'use strict';var multer=require(_0x9146('0x0'));var util=require(_0x9146('0x1'));var path=require(_0x9146('0x2'));var timeout=require('connect-timeout');var express=require(_0x9146('0x3'));var router=express[_0x9146('0x4')]();var fs_extra=require(_0x9146('0x5'));var auth=require(_0x9146('0x6'));var interaction=require(_0x9146('0x7'));var config=require(_0x9146('0x8'));var controller=require(_0x9146('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0x9146('0xa')]);router[_0x9146('0xb')](_0x9146('0xc'),auth[_0x9146('0xd')](),controller[_0x9146('0xe')]);router['get'](_0x9146('0xf'),auth[_0x9146('0xd')](),controller[_0x9146('0x10')]);router[_0x9146('0xb')]('/:id/fields',auth[_0x9146('0xd')](),controller[_0x9146('0x11')]);router[_0x9146('0x12')]('/',auth[_0x9146('0xd')](),controller[_0x9146('0x13')]);router['post'](_0x9146('0xf'),auth[_0x9146('0xd')](),controller['addConfiguration']);router[_0x9146('0x14')]('/:id',auth[_0x9146('0xd')](),controller['update']);router[_0x9146('0x15')](_0x9146('0xc'),auth[_0x9146('0xd')](),controller['destroy']);module[_0x9146('0x16')]=router;
\ No newline at end of file
+var _0x1315=['destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intZendeskAccount.controller','get','index','/:id','isAuthenticated','show','/:id/configurations','/:id/fields','post','create','put','delete'];(function(_0x39551a,_0x116007){var _0x4b0b62=function(_0x3d8a12){while(--_0x3d8a12){_0x39551a['push'](_0x39551a['shift']());}};_0x4b0b62(++_0x116007);}(_0x1315,0xdd));var _0x5131=function(_0x1c3331,_0x49ecd7){_0x1c3331=_0x1c3331-0x0;var _0x4a2b9f=_0x1315[_0x1c3331];return _0x4a2b9f;};'use strict';var multer=require(_0x5131('0x0'));var util=require(_0x5131('0x1'));var path=require(_0x5131('0x2'));var timeout=require(_0x5131('0x3'));var express=require(_0x5131('0x4'));var router=express[_0x5131('0x5')]();var fs_extra=require(_0x5131('0x6'));var auth=require(_0x5131('0x7'));var interaction=require(_0x5131('0x8'));var config=require('../../config/environment');var controller=require(_0x5131('0x9'));router[_0x5131('0xa')]('/',auth['isAuthenticated'](),controller[_0x5131('0xb')]);router[_0x5131('0xa')](_0x5131('0xc'),auth[_0x5131('0xd')](),controller[_0x5131('0xe')]);router[_0x5131('0xa')](_0x5131('0xf'),auth[_0x5131('0xd')](),controller['getConfigurations']);router['get'](_0x5131('0x10'),auth['isAuthenticated'](),controller['getFields']);router[_0x5131('0x11')]('/',auth[_0x5131('0xd')](),controller[_0x5131('0x12')]);router[_0x5131('0x11')]('/:id/configurations',auth[_0x5131('0xd')](),controller['addConfiguration']);router[_0x5131('0x13')](_0x5131('0xc'),auth[_0x5131('0xd')](),controller['update']);router[_0x5131('0x14')](_0x5131('0xc'),auth[_0x5131('0xd')](),controller[_0x5131('0x15')]);module['exports']=router;
\ No newline at end of file
index 1599f57..d39fcc0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd117=['remoteUri','ENUM','password','token','newTab','integrationTab','sequelize','exports','STRING','username'];(function(_0x44ad97,_0x5a5d4a){var _0x3550ca=function(_0x37109e){while(--_0x37109e){_0x44ad97['push'](_0x44ad97['shift']());}};_0x3550ca(++_0x5a5d4a);}(_0xd117,0x182));var _0x7d11=function(_0x1f7996,_0x299a14){_0x1f7996=_0x1f7996-0x0;var _0x584609=_0xd117[_0x1f7996];return _0x584609;};'use strict';var Sequelize=require(_0x7d11('0x0'));module[_0x7d11('0x1')]={'name':{'type':Sequelize[_0x7d11('0x2')]},'description':{'type':Sequelize[_0x7d11('0x2')]},'username':{'type':Sequelize[_0x7d11('0x2')],'unique':_0x7d11('0x3')},'password':{'type':Sequelize[_0x7d11('0x2')]},'token':{'type':Sequelize[_0x7d11('0x2')]},'remoteUri':{'type':Sequelize[_0x7d11('0x2')],'unique':_0x7d11('0x4')},'authType':{'type':Sequelize[_0x7d11('0x5')](_0x7d11('0x6'),_0x7d11('0x7')),'defaultValue':_0x7d11('0x6')},'serverUrl':{'type':Sequelize[_0x7d11('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x7d11('0x5')]('integrationTab',_0x7d11('0x8')),'defaultValue':_0x7d11('0x9')}};
\ No newline at end of file
+var _0xb7de=['integrationTab','sequelize','exports','STRING','username','ENUM','password','token','newTab'];(function(_0x2f45ea,_0x15c656){var _0x485a84=function(_0x4a1fe3){while(--_0x4a1fe3){_0x2f45ea['push'](_0x2f45ea['shift']());}};_0x485a84(++_0x15c656);}(_0xb7de,0xc7));var _0xeb7d=function(_0x24237f,_0x4cf32c){_0x24237f=_0x24237f-0x0;var _0x48298e=_0xb7de[_0x24237f];return _0x48298e;};'use strict';var Sequelize=require(_0xeb7d('0x0'));module[_0xeb7d('0x1')]={'name':{'type':Sequelize[_0xeb7d('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xeb7d('0x2')],'unique':_0xeb7d('0x3')},'password':{'type':Sequelize[_0xeb7d('0x2')]},'token':{'type':Sequelize[_0xeb7d('0x2')]},'remoteUri':{'type':Sequelize[_0xeb7d('0x2')],'unique':'remoteUri'},'authType':{'type':Sequelize[_0xeb7d('0x4')](_0xeb7d('0x5'),_0xeb7d('0x6')),'defaultValue':_0xeb7d('0x5')},'serverUrl':{'type':Sequelize[_0xeb7d('0x2')],'allowNull':![]},'type':{'type':Sequelize['ENUM']('integrationTab',_0xeb7d('0x7')),'defaultValue':_0xeb7d('0x8')}};
\ No newline at end of file
index 389d6b7..18ee6b9 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(_0x42e8f3,_0x5c8dba){var _0x47feab=function(_0x35fbf7){while(--_0x35fbf7){_0x42e8f3['push'](_0x42e8f3['shift']());}};_0x47feab(++_0x5c8dba);}(_0x16d2,0x123));var _0x216d=function(_0x258b00,_0x28e9b0){_0x258b00=_0x258b00-0x0;var _0x3ca676=_0x16d2[_0x258b00];return _0x3ca676;};'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 _0xde2c=['error','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','statusCode','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','then','end','stack','name','send','index','map','ZendeskAccount','fieldName','key','model','query','keys','filters','attributes','intersection','fields','length','nolimit','order','sort','where','pick','filter','type','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','params','rawAttributes','find','create','body','update','destroy','getConfigurations','ZendeskConfiguration','hasOwnProperty','addConfiguration','findOne','AccountId','channel','Descriptions','ZendeskField','Subjects','getFields','password','token','authType','remoteUri','slice','substring','lastIndexOf','GET','format','headers','Basic\x20%s','%s:%s','username','base64','%s/token:%s','toString','Sequelize','ValidationError','Unknown\x20authentication\x20type','subject','group','assignee','remove','ticket_fields','includes','position','title','custom_field_options','test'];(function(_0x40c3de,_0x51473e){var _0x4317ec=function(_0x4f39b9){while(--_0x4f39b9){_0x40c3de['push'](_0x40c3de['shift']());}};_0x4317ec(++_0x51473e);}(_0xde2c,0x7f));var _0xcde2=function(_0x48c4ef,_0x319d44){_0x48c4ef=_0x48c4ef-0x0;var _0x435715=_0xde2c[_0x48c4ef];return _0x435715;};'use strict';var emlformat=require(_0xcde2('0x0'));var rimraf=require(_0xcde2('0x1'));var zipdir=require(_0xcde2('0x2'));var jsonpatch=require(_0xcde2('0x3'));var rp=require(_0xcde2('0x4'));var moment=require(_0xcde2('0x5'));var BPromise=require(_0xcde2('0x6'));var Mustache=require(_0xcde2('0x7'));var util=require('util');var path=require(_0xcde2('0x8'));var sox=require(_0xcde2('0x9'));var csv=require(_0xcde2('0xa'));var ejs=require(_0xcde2('0xb'));var fs=require('fs');var fs_extra=require(_0xcde2('0xc'));var _=require('lodash');var squel=require(_0xcde2('0xd'));var crypto=require(_0xcde2('0xe'));var jsforce=require(_0xcde2('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xcde2('0x10'));var Papa=require(_0xcde2('0x11'));var Redis=require('ioredis');var authService=require(_0xcde2('0x12'));var qs=require(_0xcde2('0x13'));var as=require(_0xcde2('0x14'));var hardwareService=require(_0xcde2('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0xcde2('0x16'));var config=require(_0xcde2('0x17'));var licenseUtil=require(_0xcde2('0x18'));var db=require(_0xcde2('0x19'))['db'];var integrations=require(_0xcde2('0x1a'));function respondWithStatusCode(_0x1ea4bb,_0x599294){_0x599294=_0x599294||0xcc;return function(_0x211215){if(_0x211215){return _0x1ea4bb['sendStatus'](_0x599294);}return _0x1ea4bb[_0xcde2('0x1b')](_0x599294)['end']();};}function respondWithResult(_0x4b0e0e,_0x34e079){_0x34e079=_0x34e079||0xc8;return function(_0x1c7103){if(_0x1c7103){return _0x4b0e0e[_0xcde2('0x1b')](_0x34e079)[_0xcde2('0x1c')](_0x1c7103);}};}function respondWithFilteredResult(_0x11665c,_0x5312c7){return function(_0x39b023){if(_0x39b023){var _0x4c558b=typeof _0x5312c7[_0xcde2('0x1d')]===_0xcde2('0x1e')&&typeof _0x5312c7[_0xcde2('0x1f')]===_0xcde2('0x1e');var _0x5223f1=_0x39b023['count'];var _0x4fe586=_0x4c558b?0x0:_0x5312c7[_0xcde2('0x1d')];var _0x582e84=_0x4c558b?_0x39b023[_0xcde2('0x20')]:_0x5312c7[_0xcde2('0x1d')]+_0x5312c7[_0xcde2('0x1f')];var _0x481fc0;if(_0x582e84>=_0x5223f1){_0x582e84=_0x5223f1;_0x481fc0=0xc8;}else{_0x481fc0=0xce;}_0x11665c[_0xcde2('0x1b')](_0x481fc0);return _0x11665c[_0xcde2('0x21')](_0xcde2('0x22'),_0x4fe586+'-'+_0x582e84+'/'+_0x5223f1)[_0xcde2('0x1c')](_0x39b023);}return null;};}function patchUpdates(_0x43df7a){return function(_0x57210d){try{jsonpatch['apply'](_0x57210d,_0x43df7a,!![]);}catch(_0x5a92b9){return BPromise[_0xcde2('0x23')](_0x5a92b9);}return _0x57210d[_0xcde2('0x24')]();};}function saveUpdates(_0x2c9562,_0x4063d4){return function(_0xc86374){if(_0xc86374){return _0xc86374['update'](_0x2c9562)[_0xcde2('0x25')](function(_0x52368b){return _0x52368b;});}return null;};}function removeEntity(_0x280d8c,_0xb2123c){return function(_0x26d18e){if(_0x26d18e){return _0x26d18e['destroy']()['then'](function(){_0x280d8c[_0xcde2('0x1b')](0xcc)[_0xcde2('0x26')]();});}};}function handleEntityNotFound(_0x3e8aaf,_0x217ec9){return function(_0xcadb2){if(!_0xcadb2){_0x3e8aaf['sendStatus'](0x194);}return _0xcadb2;};}function handleError(_0x2d1d17,_0x45275a){_0x45275a=_0x45275a||0x1f4;return function(_0x1dce65){logger['error'](_0x1dce65[_0xcde2('0x27')]);if(_0x1dce65[_0xcde2('0x28')]){delete _0x1dce65[_0xcde2('0x28')];}_0x2d1d17[_0xcde2('0x1b')](_0x45275a)[_0xcde2('0x29')](_0x1dce65);};}exports[_0xcde2('0x2a')]=function(_0x40b12c,_0x3e492f){var _0x5bf1e6={},_0x3c3c01={},_0x4a0826={'count':0x0,'rows':[]};var _0x141072=_[_0xcde2('0x2b')](db[_0xcde2('0x2c')]['rawAttributes'],function(_0xae46dc){return{'name':_0xae46dc[_0xcde2('0x2d')],'type':_0xae46dc['type'][_0xcde2('0x2e')]};});_0x3c3c01[_0xcde2('0x2f')]=_[_0xcde2('0x2b')](_0x141072,_0xcde2('0x28'));_0x3c3c01[_0xcde2('0x30')]=_[_0xcde2('0x31')](_0x40b12c[_0xcde2('0x30')]);_0x3c3c01[_0xcde2('0x32')]=_['intersection'](_0x3c3c01[_0xcde2('0x2f')],_0x3c3c01[_0xcde2('0x30')]);_0x5bf1e6[_0xcde2('0x33')]=_[_0xcde2('0x34')](_0x3c3c01['model'],qs[_0xcde2('0x35')](_0x40b12c[_0xcde2('0x30')][_0xcde2('0x35')]));_0x5bf1e6[_0xcde2('0x33')]=_0x5bf1e6['attributes'][_0xcde2('0x36')]?_0x5bf1e6[_0xcde2('0x33')]:_0x3c3c01[_0xcde2('0x2f')];if(!_0x40b12c[_0xcde2('0x30')]['hasOwnProperty'](_0xcde2('0x37'))){_0x5bf1e6[_0xcde2('0x1f')]=qs[_0xcde2('0x1f')](_0x40b12c[_0xcde2('0x30')][_0xcde2('0x1f')]);_0x5bf1e6['offset']=qs[_0xcde2('0x1d')](_0x40b12c[_0xcde2('0x30')][_0xcde2('0x1d')]);}_0x5bf1e6[_0xcde2('0x38')]=qs['sort'](_0x40b12c['query'][_0xcde2('0x39')]);_0x5bf1e6[_0xcde2('0x3a')]=qs[_0xcde2('0x32')](_[_0xcde2('0x3b')](_0x40b12c[_0xcde2('0x30')],_0x3c3c01[_0xcde2('0x32')]),_0x141072);if(_0x40b12c[_0xcde2('0x30')][_0xcde2('0x3c')]){_0x5bf1e6[_0xcde2('0x3a')]=_['merge'](_0x5bf1e6[_0xcde2('0x3a')],{'$or':_[_0xcde2('0x2b')](_0x141072,function(_0x30f843){if(_0x30f843[_0xcde2('0x3d')]!==_0xcde2('0x3e')){var _0x47b6ee={};_0x47b6ee[_0x30f843['name']]={'$like':'%'+_0x40b12c[_0xcde2('0x30')][_0xcde2('0x3c')]+'%'};return _0x47b6ee;}})});}_0x5bf1e6=_[_0xcde2('0x3f')]({},_0x5bf1e6,_0x40b12c[_0xcde2('0x40')]);var _0x144de9={'where':_0x5bf1e6[_0xcde2('0x3a')]};return db['ZendeskAccount']['count'](_0x144de9)['then'](function(_0x18f723){_0x4a0826[_0xcde2('0x20')]=_0x18f723;if(_0x40b12c[_0xcde2('0x30')][_0xcde2('0x41')]){_0x5bf1e6[_0xcde2('0x42')]=[{'all':!![]}];}return db[_0xcde2('0x2c')][_0xcde2('0x43')](_0x5bf1e6);})['then'](function(_0x48580a){_0x4a0826[_0xcde2('0x44')]=_0x48580a;return _0x4a0826;})['then'](respondWithFilteredResult(_0x3e492f,_0x5bf1e6))[_0xcde2('0x45')](handleError(_0x3e492f,null));};exports['show']=function(_0x1126b2,_0x3239a0){var _0x2cf372={'raw':![],'where':{'id':_0x1126b2[_0xcde2('0x46')]['id']}},_0x5ea9a9={};_0x5ea9a9['model']=_[_0xcde2('0x31')](db[_0xcde2('0x2c')][_0xcde2('0x47')]);_0x5ea9a9[_0xcde2('0x30')]=_[_0xcde2('0x31')](_0x1126b2[_0xcde2('0x30')]);_0x5ea9a9['filters']=_['intersection'](_0x5ea9a9[_0xcde2('0x2f')],_0x5ea9a9['query']);_0x2cf372['attributes']=_[_0xcde2('0x34')](_0x5ea9a9['model'],qs[_0xcde2('0x35')](_0x1126b2[_0xcde2('0x30')]['fields']));_0x2cf372[_0xcde2('0x33')]=_0x2cf372['attributes']['length']?_0x2cf372[_0xcde2('0x33')]:_0x5ea9a9[_0xcde2('0x2f')];if(_0x1126b2['query'][_0xcde2('0x41')]){_0x2cf372['include']=[{'all':!![]}];}_0x2cf372=_[_0xcde2('0x3f')]({},_0x2cf372,_0x1126b2[_0xcde2('0x40')]);return db[_0xcde2('0x2c')][_0xcde2('0x48')](_0x2cf372)[_0xcde2('0x25')](handleEntityNotFound(_0x3239a0,null))['then'](respondWithResult(_0x3239a0,null))[_0xcde2('0x45')](handleError(_0x3239a0,null));};exports[_0xcde2('0x49')]=function(_0x40d14b,_0x2c78a5){return db['ZendeskAccount']['create'](_0x40d14b[_0xcde2('0x4a')],{})['then'](respondWithResult(_0x2c78a5,0xc9))[_0xcde2('0x45')](handleError(_0x2c78a5,null));};exports[_0xcde2('0x4b')]=function(_0x381bd4,_0x16675f){if(_0x381bd4[_0xcde2('0x4a')]['id']){delete _0x381bd4[_0xcde2('0x4a')]['id'];}return db['ZendeskAccount'][_0xcde2('0x48')]({'where':{'id':_0x381bd4['params']['id']}})[_0xcde2('0x25')](handleEntityNotFound(_0x16675f,null))['then'](saveUpdates(_0x381bd4[_0xcde2('0x4a')],null))[_0xcde2('0x25')](respondWithResult(_0x16675f,null))[_0xcde2('0x45')](handleError(_0x16675f,null));};exports[_0xcde2('0x4c')]=function(_0x446cf0,_0x5071ce){return db['ZendeskAccount'][_0xcde2('0x48')]({'where':{'id':_0x446cf0['params']['id']}})[_0xcde2('0x25')](handleEntityNotFound(_0x5071ce,null))[_0xcde2('0x25')](removeEntity(_0x5071ce,null))[_0xcde2('0x45')](handleError(_0x5071ce,null));};exports[_0xcde2('0x4d')]=function(_0x1e1c9e,_0x9067c8,_0x3a0760){var _0x28bd25={};var _0x373cdc={};var _0x21585a;var _0x3c5a17;return db[_0xcde2('0x2c')]['findOne']({'where':{'id':_0x1e1c9e['params']['id']}})['then'](handleEntityNotFound(_0x9067c8,null))[_0xcde2('0x25')](function(_0x59a64d){if(_0x59a64d){_0x21585a=_0x59a64d;_0x373cdc[_0xcde2('0x2f')]=_[_0xcde2('0x31')](db[_0xcde2('0x4e')]['rawAttributes']);_0x373cdc[_0xcde2('0x30')]=_['keys'](_0x1e1c9e[_0xcde2('0x30')]);_0x373cdc['filters']=_[_0xcde2('0x34')](_0x373cdc[_0xcde2('0x2f')],_0x373cdc['query']);_0x28bd25[_0xcde2('0x33')]=_['intersection'](_0x373cdc['model'],qs[_0xcde2('0x35')](_0x1e1c9e[_0xcde2('0x30')][_0xcde2('0x35')]));_0x28bd25[_0xcde2('0x33')]=_0x28bd25[_0xcde2('0x33')][_0xcde2('0x36')]?_0x28bd25['attributes']:_0x373cdc[_0xcde2('0x2f')];_0x28bd25[_0xcde2('0x38')]=qs[_0xcde2('0x39')](_0x1e1c9e[_0xcde2('0x30')][_0xcde2('0x39')]);_0x28bd25[_0xcde2('0x3a')]=qs['filters'](_['pick'](_0x1e1c9e[_0xcde2('0x30')],_0x373cdc[_0xcde2('0x32')]));if(_0x1e1c9e[_0xcde2('0x30')][_0xcde2('0x3c')]){_0x28bd25['where']=_[_0xcde2('0x3f')](_0x28bd25[_0xcde2('0x3a')],{'$or':_[_0xcde2('0x2b')](_0x28bd25[_0xcde2('0x33')],function(_0x5e4733){var _0x35453a={};_0x35453a[_0x5e4733]={'$like':'%'+_0x1e1c9e['query'][_0xcde2('0x3c')]+'%'};return _0x35453a;})});}_0x28bd25=_[_0xcde2('0x3f')]({},_0x28bd25,_0x1e1c9e['options']);return _0x21585a[_0xcde2('0x4d')](_0x28bd25);}})[_0xcde2('0x25')](function(_0x408535){if(_0x408535){_0x3c5a17=_0x408535[_0xcde2('0x36')];if(!_0x1e1c9e[_0xcde2('0x30')][_0xcde2('0x4f')](_0xcde2('0x37'))){_0x28bd25[_0xcde2('0x1f')]=qs[_0xcde2('0x1f')](_0x1e1c9e[_0xcde2('0x30')]['limit']);_0x28bd25[_0xcde2('0x1d')]=qs[_0xcde2('0x1d')](_0x1e1c9e['query'][_0xcde2('0x1d')]);}return _0x21585a[_0xcde2('0x4d')](_0x28bd25);}})[_0xcde2('0x25')](function(_0x5aaa3f){if(_0x5aaa3f){return _0x5aaa3f?{'count':_0x3c5a17,'rows':_0x5aaa3f}:null;}})[_0xcde2('0x25')](respondWithResult(_0x9067c8,null))[_0xcde2('0x45')](handleError(_0x9067c8,null));};exports[_0xcde2('0x50')]=function(_0x3b1ca7,_0x24ddd2,_0x3aa334){if(_0x3b1ca7[_0xcde2('0x4a')]['id']){delete _0x3b1ca7[_0xcde2('0x4a')]['id'];}return db[_0xcde2('0x2c')][_0xcde2('0x51')]({'where':{'id':_0x3b1ca7[_0xcde2('0x46')]['id']}})['then'](handleEntityNotFound(_0x24ddd2,null))['then'](function(_0x39c723){if(_0x39c723){_0x3b1ca7[_0xcde2('0x4a')][_0xcde2('0x52')]=_0x39c723['id'];_0x3b1ca7['body']['Subjects']=integrations['getSubjects'](_0x3b1ca7[_0xcde2('0x4a')][_0xcde2('0x53')],_0x3b1ca7[_0xcde2('0x4a')][_0xcde2('0x3d')]);_0x3b1ca7[_0xcde2('0x4a')][_0xcde2('0x54')]=integrations['getDescriptions'](_0x3b1ca7['body'][_0xcde2('0x53')],_0x3b1ca7[_0xcde2('0x4a')][_0xcde2('0x3d')]);return db[_0xcde2('0x4e')][_0xcde2('0x49')](_0x3b1ca7[_0xcde2('0x4a')],{'include':[{'model':db[_0xcde2('0x55')],'as':_0xcde2('0x56')},{'model':db[_0xcde2('0x55')],'as':_0xcde2('0x54')}]});}return null;})[_0xcde2('0x25')](respondWithResult(_0x24ddd2,null))[_0xcde2('0x45')](handleError(_0x24ddd2,null));};exports[_0xcde2('0x57')]=function(_0x16b6b3,_0x3f46ca,_0xb5e3){var _0x3cf1aa='';return db[_0xcde2('0x2c')][_0xcde2('0x51')]({'where':{'id':_0x16b6b3[_0xcde2('0x46')]['id']},'attributes':['id','username',_0xcde2('0x58'),_0xcde2('0x59'),_0xcde2('0x5a'),_0xcde2('0x5b')]})[_0xcde2('0x25')](handleEntityNotFound(_0x3f46ca,null))['then'](function(_0x2e9714){if(_0x2e9714){_0x3cf1aa=_0x2e9714['remoteUri'];var _0x103932=_0x3cf1aa[_0xcde2('0x5c')](-0x1);if(_0x103932==='/'){_0x3cf1aa=_0x3cf1aa[_0xcde2('0x5d')](0x0,_0x3cf1aa[_0xcde2('0x5e')](_0x103932));}var _0x31815f={'method':_0xcde2('0x5f'),'uri':util[_0xcde2('0x60')]('%s/%s',_0x3cf1aa,'ticket_fields'),'json':!![]};switch(_0x2e9714[_0xcde2('0x5a')]){case'password':_0x31815f[_0xcde2('0x61')]={'Authorization':util[_0xcde2('0x60')](_0xcde2('0x62'),new Buffer(util[_0xcde2('0x60')](_0xcde2('0x63'),_0x2e9714[_0xcde2('0x64')],_0x2e9714[_0xcde2('0x58')]))['toString'](_0xcde2('0x65')))};break;case _0xcde2('0x59'):_0x31815f[_0xcde2('0x61')]={'Authorization':util[_0xcde2('0x60')]('Basic\x20%s',new Buffer(util[_0xcde2('0x60')](_0xcde2('0x66'),_0x2e9714[_0xcde2('0x64')],_0x2e9714[_0xcde2('0x59')]))[_0xcde2('0x67')](_0xcde2('0x65')))};break;default:throw new db[(_0xcde2('0x68'))][(_0xcde2('0x69'))](_0xcde2('0x6a'));}return rp(_0x31815f);}})[_0xcde2('0x25')](function(_0x213901){if(_0x213901){var _0x225ddd=[_0xcde2('0x6b'),'description',_0xcde2('0x6c'),_0xcde2('0x6d')];_[_0xcde2('0x6e')](_0x213901[_0xcde2('0x6f')],function(_0x1f1f71){return _0x225ddd[_0xcde2('0x70')](_0x1f1f71[_0xcde2('0x3d')]);});return{'count':_0x213901[_0xcde2('0x6f')][_0xcde2('0x36')],'rows':_[_0xcde2('0x2b')](_0x213901[_0xcde2('0x6f')],function(_0x18b0a1){return{'id':_0x18b0a1['id'],'name':_0x18b0a1[_0xcde2('0x71')]>0x7?_0x18b0a1[_0xcde2('0x72')]:_0x18b0a1[_0xcde2('0x3d')],'custom':_0x18b0a1[_0xcde2('0x71')]>0x7?!![]:![],'options':_0x18b0a1['system_field_options']?_0x18b0a1['system_field_options']:_0x18b0a1[_0xcde2('0x73')]?_0x18b0a1[_0xcde2('0x73')]:[]};})};}})[_0xcde2('0x25')](respondWithResult(_0x3f46ca,null))[_0xcde2('0x45')](function(_0x4ffd32){var _0x9afade=_0x16b6b3['query'][_0xcde2('0x74')]?0x1f4:_0x4ffd32['statusCode']||0x1f4;logger[_0xcde2('0x75')](_0xcde2('0x76'),'getFields',_0x9afade,JSON[_0xcde2('0x77')](_0x4ffd32));delete _0x4ffd32[_0xcde2('0x28')];if(_0x9afade===0x191){_0x9afade=0x190;}_0x3f46ca[_0xcde2('0x1b')](_0x9afade)['send'](_0x16b6b3[_0xcde2('0x30')][_0xcde2('0x74')]?{'message':_0xcde2('0x78'),'statusCode':_0x4ffd32[_0xcde2('0x79')]}:_0x4ffd32);});};
\ No newline at end of file
index ae5bf70..966f82e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x929a=['rimraf','../../config/environment','../../components/integrations/configuration','exports','ZendeskAccount','int_zendesk_accounts','util','api','bluebird','path'];(function(_0x3a621b,_0xf7452d){var _0x35730b=function(_0xaac66c){while(--_0xaac66c){_0x3a621b['push'](_0x3a621b['shift']());}};_0x35730b(++_0xf7452d);}(_0x929a,0x1a0));var _0xa929=function(_0x45d74a,_0x544b81){_0x45d74a=_0x45d74a-0x0;var _0x42434c=_0x929a[_0x45d74a];return _0x42434c;};'use strict';var _=require('lodash');var util=require(_0xa929('0x0'));var logger=require('../../config/logger')(_0xa929('0x1'));var moment=require('moment');var BPromise=require(_0xa929('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa929('0x3'));var rimraf=require(_0xa929('0x4'));var config=require(_0xa929('0x5'));var attributes=require('./intZendeskAccount.attributes');var integrations=require(_0xa929('0x6'));module[_0xa929('0x7')]=function(_0x4aee20,_0x19a4e9){return _0x4aee20['define'](_0xa929('0x8'),attributes,{'tableName':_0xa929('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6dd2=['request-promise','path','rimraf','../../config/environment','../../components/integrations/configuration','exports','define','int_zendesk_accounts','util','../../config/logger','moment','bluebird'];(function(_0x3a2501,_0x40a515){var _0x4eaf55=function(_0x460380){while(--_0x460380){_0x3a2501['push'](_0x3a2501['shift']());}};_0x4eaf55(++_0x40a515);}(_0x6dd2,0x1f4));var _0x26dd=function(_0x2d3aae,_0x518765){_0x2d3aae=_0x2d3aae-0x0;var _0x47a134=_0x6dd2[_0x2d3aae];return _0x47a134;};'use strict';var _=require('lodash');var util=require(_0x26dd('0x0'));var logger=require(_0x26dd('0x1'))('api');var moment=require(_0x26dd('0x2'));var BPromise=require(_0x26dd('0x3'));var rp=require(_0x26dd('0x4'));var fs=require('fs');var path=require(_0x26dd('0x5'));var rimraf=require(_0x26dd('0x6'));var config=require(_0x26dd('0x7'));var attributes=require('./intZendeskAccount.attributes');var integrations=require(_0x26dd('0x8'));module[_0x26dd('0x9')]=function(_0x2c8136,_0x52578a){return _0x2c8136[_0x26dd('0xa')]('ZendeskAccount',attributes,{'tableName':_0x26dd('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3a1f0da..a6e2152 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1bb2=['stringify','code','error','message','result','GetZendeskAccount','findAll','options','where','attributes','limit','include','map','model','catch','ShowZendeskAccount','ZendeskAccount','raw','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','ZendeskAccount,\x20%s,\x20%s','debug','ZendeskAccount,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x13342f,_0x3d6303){var _0x2fc1fc=function(_0x2d991f){while(--_0x2d991f){_0x13342f['push'](_0x13342f['shift']());}};_0x2fc1fc(++_0x3d6303);}(_0x1bb2,0xc6));var _0x21bb=function(_0x2cd4e5,_0x1d568c){_0x2cd4e5=_0x2cd4e5-0x0;var _0x268b59=_0x1bb2[_0x2cd4e5];return _0x268b59;};'use strict';var _=require('lodash');var util=require(_0x21bb('0x0'));var moment=require(_0x21bb('0x1'));var BPromise=require(_0x21bb('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x21bb('0x3'));var db=require(_0x21bb('0x4'))['db'];var utils=require(_0x21bb('0x5'));var logger=require(_0x21bb('0x6'))(_0x21bb('0x7'));var config=require(_0x21bb('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x21bb('0x9')][_0x21bb('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x31114a,_0x47e288,_0x5ad94a){return new BPromise(function(_0x13021a,_0x494a7d){return client[_0x21bb('0xb')](_0x31114a,_0x5ad94a)[_0x21bb('0xc')](function(_0x2e4e0f){logger[_0x21bb('0xd')](_0x21bb('0xe'),_0x47e288,'request\x20sent');logger[_0x21bb('0xf')](_0x21bb('0x10'),_0x47e288,_0x21bb('0x11'),JSON[_0x21bb('0x12')](_0x2e4e0f));if(_0x2e4e0f['error']){if(_0x2e4e0f['error'][_0x21bb('0x13')]===0x1f4){logger[_0x21bb('0x14')](_0x21bb('0xe'),_0x47e288,_0x2e4e0f[_0x21bb('0x14')][_0x21bb('0x15')]);return _0x494a7d(_0x2e4e0f['error'][_0x21bb('0x15')]);}logger['error'](_0x21bb('0xe'),_0x47e288,_0x2e4e0f[_0x21bb('0x14')][_0x21bb('0x15')]);return _0x13021a(_0x2e4e0f['error'][_0x21bb('0x15')]);}else{logger['info']('ZendeskAccount,\x20%s,\x20%s',_0x47e288,_0x21bb('0x11'));_0x13021a(_0x2e4e0f[_0x21bb('0x16')][_0x21bb('0x15')]);}})['catch'](function(_0x2ff9ae){logger[_0x21bb('0x14')]('ZendeskAccount,\x20%s,\x20%s',_0x47e288,_0x2ff9ae);_0x494a7d(_0x2ff9ae);});});}exports[_0x21bb('0x17')]=function(_0x284baa){var _0x1a5e73=this;return new Promise(function(_0x2d2b40,_0x4d1883){return db['ZendeskAccount'][_0x21bb('0x18')]({'raw':_0x284baa['options']?_0x284baa[_0x21bb('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x284baa[_0x21bb('0x19')]?_0x284baa[_0x21bb('0x19')][_0x21bb('0x1a')]||null:null,'attributes':_0x284baa['options']?_0x284baa[_0x21bb('0x19')][_0x21bb('0x1b')]||null:null,'limit':_0x284baa[_0x21bb('0x19')]?_0x284baa[_0x21bb('0x19')][_0x21bb('0x1c')]||null:null,'include':_0x284baa[_0x21bb('0x19')]?_0x284baa['options'][_0x21bb('0x1d')]?_[_0x21bb('0x1e')](_0x284baa[_0x21bb('0x19')]['include'],function(_0x2079d2){return{'model':db[_0x2079d2[_0x21bb('0x1f')]],'as':_0x2079d2['as'],'attributes':_0x2079d2[_0x21bb('0x1b')],'include':_0x2079d2[_0x21bb('0x1d')]?_[_0x21bb('0x1e')](_0x2079d2[_0x21bb('0x1d')],function(_0x57f088){return{'model':db[_0x57f088[_0x21bb('0x1f')]],'as':_0x57f088['as'],'attributes':_0x57f088[_0x21bb('0x1b')],'include':_0x57f088[_0x21bb('0x1d')]?_[_0x21bb('0x1e')](_0x57f088[_0x21bb('0x1d')],function(_0x52cb7d){return{'model':db[_0x52cb7d['model']],'as':_0x52cb7d['as'],'attributes':_0x52cb7d[_0x21bb('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x21bb('0xc')](function(_0x55b344){logger[_0x21bb('0xd')](_0x21bb('0x17'),_0x284baa);logger[_0x21bb('0xf')]('GetZendeskAccount',_0x284baa,JSON[_0x21bb('0x12')](_0x55b344));_0x2d2b40(_0x55b344);})[_0x21bb('0x20')](function(_0x1991bf){logger[_0x21bb('0x14')](_0x21bb('0x17'),_0x1991bf[_0x21bb('0x15')],_0x284baa);_0x4d1883(_0x1a5e73['error'](0x1f4,_0x1991bf[_0x21bb('0x15')]));});});};exports[_0x21bb('0x21')]=function(_0x5905de){var _0x32d3f4=this;return new Promise(function(_0x126295,_0x254284){return db[_0x21bb('0x22')]['find']({'raw':_0x5905de[_0x21bb('0x19')]?_0x5905de[_0x21bb('0x19')][_0x21bb('0x23')]===undefined?!![]:![]:!![],'where':_0x5905de[_0x21bb('0x19')]?_0x5905de[_0x21bb('0x19')][_0x21bb('0x1a')]||null:null,'attributes':_0x5905de[_0x21bb('0x19')]?_0x5905de[_0x21bb('0x19')][_0x21bb('0x1b')]||null:null,'include':_0x5905de[_0x21bb('0x19')]?_0x5905de[_0x21bb('0x19')][_0x21bb('0x1d')]?_[_0x21bb('0x1e')](_0x5905de[_0x21bb('0x19')]['include'],function(_0x4cf93b){return{'model':db[_0x4cf93b['model']],'as':_0x4cf93b['as'],'attributes':_0x4cf93b['attributes'],'include':_0x4cf93b[_0x21bb('0x1d')]?_[_0x21bb('0x1e')](_0x4cf93b[_0x21bb('0x1d')],function(_0x5ce09b){return{'model':db[_0x5ce09b[_0x21bb('0x1f')]],'as':_0x5ce09b['as'],'attributes':_0x5ce09b[_0x21bb('0x1b')],'include':_0x5ce09b['include']?_['map'](_0x5ce09b['include'],function(_0x55519b){return{'model':db[_0x55519b[_0x21bb('0x1f')]],'as':_0x55519b['as'],'attributes':_0x55519b[_0x21bb('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x21bb('0xc')](function(_0x4e1099){logger['info'](_0x21bb('0x21'),_0x5905de);logger[_0x21bb('0xf')](_0x21bb('0x21'),_0x5905de,JSON[_0x21bb('0x12')](_0x4e1099));_0x126295(_0x4e1099);})[_0x21bb('0x20')](function(_0xd7a76){logger[_0x21bb('0x14')](_0x21bb('0x21'),_0xd7a76[_0x21bb('0x15')],_0x5905de);_0x254284(_0x32d3f4[_0x21bb('0x14')](0x1f4,_0xd7a76['message']));});});};
\ No newline at end of file
+var _0x9439=['lodash','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','ZendeskAccount,\x20%s,\x20%s','debug','ZendeskAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','info','result','ZendeskAccount','findAll','options','raw','where','limit','include','map','model','attributes','GetZendeskAccount','stringify','ShowZendeskAccount','find','catch'];(function(_0x5a3fa6,_0x13eeef){var _0x5d5d93=function(_0xf373fd){while(--_0xf373fd){_0x5a3fa6['push'](_0x5a3fa6['shift']());}};_0x5d5d93(++_0x13eeef);}(_0x9439,0xb4));var _0x9943=function(_0x11ef94,_0x393f87){_0x11ef94=_0x11ef94-0x0;var _0x5e67c3=_0x9439[_0x11ef94];return _0x5e67c3;};'use strict';var _=require(_0x9943('0x0'));var util=require('util');var moment=require(_0x9943('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9943('0x2'));var db=require(_0x9943('0x3'))['db'];var utils=require(_0x9943('0x4'));var logger=require(_0x9943('0x5'))(_0x9943('0x6'));var config=require(_0x9943('0x7'));var jayson=require(_0x9943('0x8'));var client=jayson[_0x9943('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5a815d,_0x5cdf40,_0x2dbc30){return new BPromise(function(_0x4c997b,_0x3fd4db){return client[_0x9943('0xa')](_0x5a815d,_0x2dbc30)[_0x9943('0xb')](function(_0x108058){logger['info'](_0x9943('0xc'),_0x5cdf40,'request\x20sent');logger[_0x9943('0xd')](_0x9943('0xe'),_0x5cdf40,_0x9943('0xf'),JSON['stringify'](_0x108058));if(_0x108058[_0x9943('0x10')]){if(_0x108058[_0x9943('0x10')][_0x9943('0x11')]===0x1f4){logger[_0x9943('0x10')](_0x9943('0xc'),_0x5cdf40,_0x108058[_0x9943('0x10')][_0x9943('0x12')]);return _0x3fd4db(_0x108058[_0x9943('0x10')]['message']);}logger[_0x9943('0x10')]('ZendeskAccount,\x20%s,\x20%s',_0x5cdf40,_0x108058['error']['message']);return _0x4c997b(_0x108058[_0x9943('0x10')][_0x9943('0x12')]);}else{logger[_0x9943('0x13')](_0x9943('0xc'),_0x5cdf40,'request\x20sent');_0x4c997b(_0x108058[_0x9943('0x14')][_0x9943('0x12')]);}})['catch'](function(_0x239cb3){logger[_0x9943('0x10')](_0x9943('0xc'),_0x5cdf40,_0x239cb3);_0x3fd4db(_0x239cb3);});});}exports['GetZendeskAccount']=function(_0x1cea65){var _0x233623=this;return new Promise(function(_0x4408e7,_0x5c0b73){return db[_0x9943('0x15')][_0x9943('0x16')]({'raw':_0x1cea65[_0x9943('0x17')]?_0x1cea65['options'][_0x9943('0x18')]===undefined?!![]:![]:!![],'where':_0x1cea65[_0x9943('0x17')]?_0x1cea65[_0x9943('0x17')][_0x9943('0x19')]||null:null,'attributes':_0x1cea65[_0x9943('0x17')]?_0x1cea65[_0x9943('0x17')]['attributes']||null:null,'limit':_0x1cea65[_0x9943('0x17')]?_0x1cea65[_0x9943('0x17')][_0x9943('0x1a')]||null:null,'include':_0x1cea65[_0x9943('0x17')]?_0x1cea65[_0x9943('0x17')][_0x9943('0x1b')]?_[_0x9943('0x1c')](_0x1cea65[_0x9943('0x17')][_0x9943('0x1b')],function(_0x56b237){return{'model':db[_0x56b237[_0x9943('0x1d')]],'as':_0x56b237['as'],'attributes':_0x56b237[_0x9943('0x1e')],'include':_0x56b237[_0x9943('0x1b')]?_[_0x9943('0x1c')](_0x56b237[_0x9943('0x1b')],function(_0x39058c){return{'model':db[_0x39058c['model']],'as':_0x39058c['as'],'attributes':_0x39058c['attributes'],'include':_0x39058c[_0x9943('0x1b')]?_['map'](_0x39058c[_0x9943('0x1b')],function(_0x3dd294){return{'model':db[_0x3dd294[_0x9943('0x1d')]],'as':_0x3dd294['as'],'attributes':_0x3dd294[_0x9943('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x9943('0xb')](function(_0x3cf9b1){logger[_0x9943('0x13')]('GetZendeskAccount',_0x1cea65);logger[_0x9943('0xd')](_0x9943('0x1f'),_0x1cea65,JSON[_0x9943('0x20')](_0x3cf9b1));_0x4408e7(_0x3cf9b1);})['catch'](function(_0x186741){logger[_0x9943('0x10')]('GetZendeskAccount',_0x186741[_0x9943('0x12')],_0x1cea65);_0x5c0b73(_0x233623['error'](0x1f4,_0x186741[_0x9943('0x12')]));});});};exports[_0x9943('0x21')]=function(_0x469f5a){var _0x389a9d=this;return new Promise(function(_0xe03631,_0x38f4ee){return db[_0x9943('0x15')][_0x9943('0x22')]({'raw':_0x469f5a['options']?_0x469f5a[_0x9943('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x469f5a['options']?_0x469f5a[_0x9943('0x17')][_0x9943('0x19')]||null:null,'attributes':_0x469f5a[_0x9943('0x17')]?_0x469f5a[_0x9943('0x17')][_0x9943('0x1e')]||null:null,'include':_0x469f5a[_0x9943('0x17')]?_0x469f5a['options']['include']?_[_0x9943('0x1c')](_0x469f5a['options'][_0x9943('0x1b')],function(_0x31581f){return{'model':db[_0x31581f[_0x9943('0x1d')]],'as':_0x31581f['as'],'attributes':_0x31581f[_0x9943('0x1e')],'include':_0x31581f[_0x9943('0x1b')]?_[_0x9943('0x1c')](_0x31581f[_0x9943('0x1b')],function(_0xe8f235){return{'model':db[_0xe8f235[_0x9943('0x1d')]],'as':_0xe8f235['as'],'attributes':_0xe8f235[_0x9943('0x1e')],'include':_0xe8f235[_0x9943('0x1b')]?_[_0x9943('0x1c')](_0xe8f235[_0x9943('0x1b')],function(_0xbda969){return{'model':db[_0xbda969[_0x9943('0x1d')]],'as':_0xbda969['as'],'attributes':_0xbda969['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x1ec74e){logger[_0x9943('0x13')](_0x9943('0x21'),_0x469f5a);logger[_0x9943('0xd')](_0x9943('0x21'),_0x469f5a,JSON[_0x9943('0x20')](_0x1ec74e));_0xe03631(_0x1ec74e);})[_0x9943('0x23')](function(_0xa1057){logger[_0x9943('0x10')](_0x9943('0x21'),_0xa1057['message'],_0x469f5a);_0x38f4ee(_0x389a9d[_0x9943('0x10')](0x1f4,_0xa1057[_0x9943('0x12')]));});});};
\ No newline at end of file
index 778e1da..8822639 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa571=['util','path','connect-timeout','Router','fs-extra','../../config/environment','get','isAuthenticated','index','/:id','/:id/fields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','getTags','post','create','put','update','exports','multer'];(function(_0x16e0b8,_0x30148a){var _0x57dc6c=function(_0xa337ce){while(--_0xa337ce){_0x16e0b8['push'](_0x16e0b8['shift']());}};_0x57dc6c(++_0x30148a);}(_0xa571,0x107));var _0x1a57=function(_0x43febc,_0x46449f){_0x43febc=_0x43febc-0x0;var _0x56d914=_0xa571[_0x43febc];return _0x56d914;};'use strict';var multer=require(_0x1a57('0x0'));var util=require(_0x1a57('0x1'));var path=require(_0x1a57('0x2'));var timeout=require(_0x1a57('0x3'));var express=require('express');var router=express[_0x1a57('0x4')]();var fs_extra=require(_0x1a57('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x1a57('0x6'));var controller=require('./intZendeskConfiguration.controller');router[_0x1a57('0x7')]('/',auth[_0x1a57('0x8')](),controller[_0x1a57('0x9')]);router[_0x1a57('0x7')](_0x1a57('0xa'),auth[_0x1a57('0x8')](),controller['show']);router[_0x1a57('0x7')](_0x1a57('0xb'),auth[_0x1a57('0x8')](),controller['getFields']);router[_0x1a57('0x7')](_0x1a57('0xc'),auth[_0x1a57('0x8')](),controller[_0x1a57('0xd')]);router[_0x1a57('0x7')](_0x1a57('0xe'),auth[_0x1a57('0x8')](),controller[_0x1a57('0xf')]);router['get']('/:id/tags',auth[_0x1a57('0x8')](),controller[_0x1a57('0x10')]);router[_0x1a57('0x11')]('/',auth['isAuthenticated'](),controller[_0x1a57('0x12')]);router[_0x1a57('0x11')]('/:id/tags',auth[_0x1a57('0x8')](),controller['setTags']);router[_0x1a57('0x13')](_0x1a57('0xa'),auth[_0x1a57('0x8')](),controller[_0x1a57('0x14')]);router['delete'](_0x1a57('0xa'),auth['isAuthenticated'](),controller['destroy']);module[_0x1a57('0x15')]=router;
\ No newline at end of file
+var _0xe706=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','/:id/tags','getTags','post','create','put','update','delete','exports','multer','util','path','express','Router'];(function(_0x279c9c,_0x308efc){var _0x5497f1=function(_0x29d1f2){while(--_0x29d1f2){_0x279c9c['push'](_0x279c9c['shift']());}};_0x5497f1(++_0x308efc);}(_0xe706,0xa3));var _0x6e70=function(_0x5b311b,_0x3e0280){_0x5b311b=_0x5b311b-0x0;var _0x4fa0de=_0xe706[_0x5b311b];return _0x4fa0de;};'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('0xa')](_0x6e70('0x11'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x12')]);router[_0x6e70('0xa')](_0x6e70('0x13'),auth['isAuthenticated'](),controller['getDescriptions']);router[_0x6e70('0xa')](_0x6e70('0x14'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x15')]);router[_0x6e70('0x16')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0x17')]);router[_0x6e70('0x16')]('/:id/tags',auth['isAuthenticated'](),controller['setTags']);router[_0x6e70('0x18')]('/:id',auth['isAuthenticated'](),controller[_0x6e70('0x19')]);router[_0x6e70('0x1a')]('/:id',auth[_0x6e70('0xb')](),controller['destroy']);module[_0x6e70('0x1b')]=router;
\ No newline at end of file
index 763342b..75576ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ed3=['STRING'];(function(_0x2fc650,_0x24cac6){var _0x2df768=function(_0x14ef8d){while(--_0x14ef8d){_0x2fc650['push'](_0x2fc650['shift']());}};_0x2df768(++_0x24cac6);}(_0x5ed3,0x78));var _0x35ed=function(_0x4f8436,_0x1df454){_0x4f8436=_0x4f8436-0x0;var _0xdbc6d4=_0x5ed3[_0x4f8436];return _0xdbc6d4;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x35ed('0x0')]},'description':{'type':Sequelize[_0x35ed('0x0')]}};
\ No newline at end of file
+var _0xd84e=['STRING','sequelize','exports'];(function(_0x368fb9,_0x1a9895){var _0x4892fb=function(_0x28d735){while(--_0x28d735){_0x368fb9['push'](_0x368fb9['shift']());}};_0x4892fb(++_0x1a9895);}(_0xd84e,0xe8));var _0xed84=function(_0x371db0,_0x2a0961){_0x371db0=_0x371db0-0x0;var _0x359c07=_0xd84e[_0x371db0];return _0x359c07;};'use strict';var Sequelize=require(_0xed84('0x0'));module[_0xed84('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xed84('0x2')]}};
\ No newline at end of file
index 4921825..f36c329 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd08d=['then','destroy','stack','name','send','index','map','ZendeskConfiguration','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','VIRTUAL','options','include','catch','show','params','includeAll','find','update','body','getFields','findOne','ZendeskField','getDescriptions','getTags','setTags','ids','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save'];(function(_0x2fa9cc,_0x4a17f8){var _0xa3ffc7=function(_0x299ff3){while(--_0x299ff3){_0x2fa9cc['push'](_0x2fa9cc['shift']());}};_0xa3ffc7(++_0x4a17f8);}(_0xd08d,0x81));var _0xdd08=function(_0xf51c06,_0x388e5b){_0xf51c06=_0xf51c06-0x0;var _0x1d5420=_0xd08d[_0xf51c06];return _0x1d5420;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xdd08('0x0'));var zipdir=require(_0xdd08('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xdd08('0x2'));var moment=require(_0xdd08('0x3'));var BPromise=require(_0xdd08('0x4'));var Mustache=require('mustache');var util=require(_0xdd08('0x5'));var path=require(_0xdd08('0x6'));var sox=require(_0xdd08('0x7'));var csv=require('to-csv');var ejs=require(_0xdd08('0x8'));var fs=require('fs');var fs_extra=require(_0xdd08('0x9'));var _=require(_0xdd08('0xa'));var squel=require(_0xdd08('0xb'));var crypto=require(_0xdd08('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xdd08('0xd'));var toCsv=require(_0xdd08('0xe'));var querystring=require(_0xdd08('0xf'));var Papa=require('papaparse');var Redis=require(_0xdd08('0x10'));var authService=require(_0xdd08('0x11'));var qs=require(_0xdd08('0x12'));var as=require(_0xdd08('0x13'));var hardwareService=require(_0xdd08('0x14'));var logger=require(_0xdd08('0x15'))(_0xdd08('0x16'));var utils=require(_0xdd08('0x17'));var config=require(_0xdd08('0x18'));var licenseUtil=require(_0xdd08('0x19'));var db=require(_0xdd08('0x1a'))['db'];function respondWithStatusCode(_0x1543c8,_0x4bf79b){_0x4bf79b=_0x4bf79b||0xcc;return function(_0x2ef721){if(_0x2ef721){return _0x1543c8[_0xdd08('0x1b')](_0x4bf79b);}return _0x1543c8[_0xdd08('0x1c')](_0x4bf79b)[_0xdd08('0x1d')]();};}function respondWithResult(_0x415169,_0x3ed0d1){_0x3ed0d1=_0x3ed0d1||0xc8;return function(_0x32a6d5){if(_0x32a6d5){return _0x415169[_0xdd08('0x1c')](_0x3ed0d1)[_0xdd08('0x1e')](_0x32a6d5);}};}function respondWithFilteredResult(_0x11aad3,_0x2fc29c){return function(_0x9a6225){if(_0x9a6225){var _0x784541=typeof _0x2fc29c[_0xdd08('0x1f')]===_0xdd08('0x20')&&typeof _0x2fc29c[_0xdd08('0x21')]===_0xdd08('0x20');var _0x46a36f=_0x9a6225[_0xdd08('0x22')];var _0x212100=_0x784541?0x0:_0x2fc29c[_0xdd08('0x1f')];var _0x562b83=_0x784541?_0x9a6225['count']:_0x2fc29c[_0xdd08('0x1f')]+_0x2fc29c[_0xdd08('0x21')];var _0x4d815e;if(_0x562b83>=_0x46a36f){_0x562b83=_0x46a36f;_0x4d815e=0xc8;}else{_0x4d815e=0xce;}_0x11aad3['status'](_0x4d815e);return _0x11aad3['set'](_0xdd08('0x23'),_0x212100+'-'+_0x562b83+'/'+_0x46a36f)[_0xdd08('0x1e')](_0x9a6225);}return null;};}function patchUpdates(_0x1cfc12){return function(_0x4a587b){try{jsonpatch[_0xdd08('0x24')](_0x4a587b,_0x1cfc12,!![]);}catch(_0x39bb81){return BPromise[_0xdd08('0x25')](_0x39bb81);}return _0x4a587b[_0xdd08('0x26')]();};}function saveUpdates(_0x5c9ebe,_0x4f807b){return function(_0x1ef21d){if(_0x1ef21d){return _0x1ef21d['update'](_0x5c9ebe)[_0xdd08('0x27')](function(_0x33f10c){return _0x33f10c;});}return null;};}function removeEntity(_0x5f0166,_0x4b1be1){return function(_0x2f3361){if(_0x2f3361){return _0x2f3361[_0xdd08('0x28')]()['then'](function(){_0x5f0166[_0xdd08('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1e84d6,_0x3aeffc){return function(_0x4e677d){if(!_0x4e677d){_0x1e84d6[_0xdd08('0x1b')](0x194);}return _0x4e677d;};}function handleError(_0x281ae6,_0x169796){_0x169796=_0x169796||0x1f4;return function(_0x5a8a84){logger['error'](_0x5a8a84[_0xdd08('0x29')]);if(_0x5a8a84[_0xdd08('0x2a')]){delete _0x5a8a84[_0xdd08('0x2a')];}_0x281ae6[_0xdd08('0x1c')](_0x169796)[_0xdd08('0x2b')](_0x5a8a84);};}exports[_0xdd08('0x2c')]=function(_0x566f1e,_0x4956b4){var _0x2aaf75={},_0xbed010={},_0x1639e4={'count':0x0,'rows':[]};var _0x364a64=_[_0xdd08('0x2d')](db[_0xdd08('0x2e')][_0xdd08('0x2f')],function(_0x5d99d6){return{'name':_0x5d99d6[_0xdd08('0x30')],'type':_0x5d99d6[_0xdd08('0x31')][_0xdd08('0x32')]};});_0xbed010[_0xdd08('0x33')]=_[_0xdd08('0x2d')](_0x364a64,_0xdd08('0x2a'));_0xbed010[_0xdd08('0x34')]=_[_0xdd08('0x35')](_0x566f1e['query']);_0xbed010['filters']=_[_0xdd08('0x36')](_0xbed010[_0xdd08('0x33')],_0xbed010[_0xdd08('0x34')]);_0x2aaf75['attributes']=_['intersection'](_0xbed010[_0xdd08('0x33')],qs[_0xdd08('0x37')](_0x566f1e[_0xdd08('0x34')][_0xdd08('0x37')]));_0x2aaf75[_0xdd08('0x38')]=_0x2aaf75[_0xdd08('0x38')][_0xdd08('0x39')]?_0x2aaf75['attributes']:_0xbed010[_0xdd08('0x33')];if(!_0x566f1e[_0xdd08('0x34')][_0xdd08('0x3a')](_0xdd08('0x3b'))){_0x2aaf75[_0xdd08('0x21')]=qs[_0xdd08('0x21')](_0x566f1e[_0xdd08('0x34')]['limit']);_0x2aaf75[_0xdd08('0x1f')]=qs['offset'](_0x566f1e['query']['offset']);}_0x2aaf75[_0xdd08('0x3c')]=qs['sort'](_0x566f1e[_0xdd08('0x34')][_0xdd08('0x3d')]);_0x2aaf75[_0xdd08('0x3e')]=qs['filters'](_[_0xdd08('0x3f')](_0x566f1e['query'],_0xbed010[_0xdd08('0x40')]),_0x364a64);if(_0x566f1e['query'][_0xdd08('0x41')]){_0x2aaf75[_0xdd08('0x3e')]=_[_0xdd08('0x42')](_0x2aaf75[_0xdd08('0x3e')],{'$or':_[_0xdd08('0x2d')](_0x364a64,function(_0x474bc6){if(_0x474bc6['type']!==_0xdd08('0x43')){var _0x1e0573={};_0x1e0573[_0x474bc6[_0xdd08('0x2a')]]={'$like':'%'+_0x566f1e['query']['filter']+'%'};return _0x1e0573;}})});}_0x2aaf75=_[_0xdd08('0x42')]({},_0x2aaf75,_0x566f1e[_0xdd08('0x44')]);var _0x59f1ef={'where':_0x2aaf75['where']};return db['ZendeskConfiguration'][_0xdd08('0x22')](_0x59f1ef)[_0xdd08('0x27')](function(_0x5978f1){_0x1639e4[_0xdd08('0x22')]=_0x5978f1;if(_0x566f1e[_0xdd08('0x34')]['includeAll']){_0x2aaf75[_0xdd08('0x45')]=[{'all':!![]}];}return db[_0xdd08('0x2e')]['findAll'](_0x2aaf75);})[_0xdd08('0x27')](function(_0x58f39e){_0x1639e4['rows']=_0x58f39e;return _0x1639e4;})['then'](respondWithFilteredResult(_0x4956b4,_0x2aaf75))[_0xdd08('0x46')](handleError(_0x4956b4,null));};exports[_0xdd08('0x47')]=function(_0x1d0a9b,_0x246f94){var _0x43c78e={'raw':![],'where':{'id':_0x1d0a9b[_0xdd08('0x48')]['id']}},_0x55d883={};_0x55d883[_0xdd08('0x33')]=_['keys'](db[_0xdd08('0x2e')][_0xdd08('0x2f')]);_0x55d883['query']=_[_0xdd08('0x35')](_0x1d0a9b[_0xdd08('0x34')]);_0x55d883[_0xdd08('0x40')]=_[_0xdd08('0x36')](_0x55d883[_0xdd08('0x33')],_0x55d883['query']);_0x43c78e['attributes']=_[_0xdd08('0x36')](_0x55d883[_0xdd08('0x33')],qs[_0xdd08('0x37')](_0x1d0a9b[_0xdd08('0x34')]['fields']));_0x43c78e[_0xdd08('0x38')]=_0x43c78e[_0xdd08('0x38')][_0xdd08('0x39')]?_0x43c78e[_0xdd08('0x38')]:_0x55d883[_0xdd08('0x33')];if(_0x1d0a9b[_0xdd08('0x34')][_0xdd08('0x49')]){_0x43c78e[_0xdd08('0x45')]=[{'all':!![]}];}_0x43c78e=_[_0xdd08('0x42')]({},_0x43c78e,_0x1d0a9b['options']);return db[_0xdd08('0x2e')][_0xdd08('0x4a')](_0x43c78e)[_0xdd08('0x27')](handleEntityNotFound(_0x246f94,null))['then'](respondWithResult(_0x246f94,null))[_0xdd08('0x46')](handleError(_0x246f94,null));};exports['create']=function(_0x125b5a,_0x590543){return db['ZendeskConfiguration']['create'](_0x125b5a['body'],{})[_0xdd08('0x27')](respondWithResult(_0x590543,0xc9))[_0xdd08('0x46')](handleError(_0x590543,null));};exports[_0xdd08('0x4b')]=function(_0x3351be,_0x58b8f4){if(_0x3351be[_0xdd08('0x4c')]['id']){delete _0x3351be['body']['id'];}return db[_0xdd08('0x2e')][_0xdd08('0x4a')]({'where':{'id':_0x3351be[_0xdd08('0x48')]['id']}})[_0xdd08('0x27')](handleEntityNotFound(_0x58b8f4,null))[_0xdd08('0x27')](saveUpdates(_0x3351be[_0xdd08('0x4c')],null))['then'](respondWithResult(_0x58b8f4,null))[_0xdd08('0x46')](handleError(_0x58b8f4,null));};exports[_0xdd08('0x28')]=function(_0x350614,_0x3b27fd){return db[_0xdd08('0x2e')]['find']({'where':{'id':_0x350614['params']['id']}})[_0xdd08('0x27')](handleEntityNotFound(_0x3b27fd,null))['then'](removeEntity(_0x3b27fd,null))[_0xdd08('0x46')](handleError(_0x3b27fd,null));};exports[_0xdd08('0x4d')]=function(_0x4f7c6e,_0x25a055,_0x2cc0dc){var _0x2bb17a={};var _0xddc945={};var _0x3596dd;var _0x132aba;return db[_0xdd08('0x2e')][_0xdd08('0x4e')]({'where':{'id':_0x4f7c6e[_0xdd08('0x48')]['id']}})['then'](handleEntityNotFound(_0x25a055,null))['then'](function(_0x211485){if(_0x211485){_0x3596dd=_0x211485;_0xddc945[_0xdd08('0x33')]=_[_0xdd08('0x35')](db[_0xdd08('0x4f')][_0xdd08('0x2f')]);_0xddc945['query']=_['keys'](_0x4f7c6e['query']);_0xddc945[_0xdd08('0x40')]=_[_0xdd08('0x36')](_0xddc945[_0xdd08('0x33')],_0xddc945[_0xdd08('0x34')]);_0x2bb17a[_0xdd08('0x38')]=_[_0xdd08('0x36')](_0xddc945[_0xdd08('0x33')],qs[_0xdd08('0x37')](_0x4f7c6e[_0xdd08('0x34')][_0xdd08('0x37')]));_0x2bb17a[_0xdd08('0x38')]=_0x2bb17a[_0xdd08('0x38')][_0xdd08('0x39')]?_0x2bb17a[_0xdd08('0x38')]:_0xddc945['model'];_0x2bb17a['order']=qs[_0xdd08('0x3d')](_0x4f7c6e[_0xdd08('0x34')][_0xdd08('0x3d')]);_0x2bb17a[_0xdd08('0x3e')]=qs[_0xdd08('0x40')](_[_0xdd08('0x3f')](_0x4f7c6e['query'],_0xddc945[_0xdd08('0x40')]));if(_0x4f7c6e['query'][_0xdd08('0x41')]){_0x2bb17a[_0xdd08('0x3e')]=_[_0xdd08('0x42')](_0x2bb17a[_0xdd08('0x3e')],{'$or':_[_0xdd08('0x2d')](_0x2bb17a[_0xdd08('0x38')],function(_0xb2a5a7){var _0x18ba33={};_0x18ba33[_0xb2a5a7]={'$like':'%'+_0x4f7c6e[_0xdd08('0x34')]['filter']+'%'};return _0x18ba33;})});}_0x2bb17a=_[_0xdd08('0x42')]({},_0x2bb17a,_0x4f7c6e[_0xdd08('0x44')]);return _0x3596dd[_0xdd08('0x4d')](_0x2bb17a);}})[_0xdd08('0x27')](function(_0x363404){if(_0x363404){_0x132aba=_0x363404[_0xdd08('0x39')];if(!_0x4f7c6e[_0xdd08('0x34')][_0xdd08('0x3a')](_0xdd08('0x3b'))){_0x2bb17a[_0xdd08('0x21')]=qs[_0xdd08('0x21')](_0x4f7c6e['query'][_0xdd08('0x21')]);_0x2bb17a[_0xdd08('0x1f')]=qs[_0xdd08('0x1f')](_0x4f7c6e['query'][_0xdd08('0x1f')]);}return _0x3596dd[_0xdd08('0x4d')](_0x2bb17a);}})[_0xdd08('0x27')](function(_0x42ee4d){if(_0x42ee4d){return _0x42ee4d?{'count':_0x132aba,'rows':_0x42ee4d}:null;}})[_0xdd08('0x27')](respondWithResult(_0x25a055,null))[_0xdd08('0x46')](handleError(_0x25a055,null));};exports['getSubjects']=function(_0x4fe1a8,_0x329380,_0x912374){var _0x4f6336={};var _0x2e7149={};var _0x501b94;var _0xfdd022;return db[_0xdd08('0x2e')][_0xdd08('0x4e')]({'where':{'id':_0x4fe1a8[_0xdd08('0x48')]['id']}})[_0xdd08('0x27')](handleEntityNotFound(_0x329380,null))[_0xdd08('0x27')](function(_0x4201f7){if(_0x4201f7){_0x501b94=_0x4201f7;_0x2e7149[_0xdd08('0x33')]=_[_0xdd08('0x35')](db[_0xdd08('0x4f')][_0xdd08('0x2f')]);_0x2e7149[_0xdd08('0x34')]=_[_0xdd08('0x35')](_0x4fe1a8[_0xdd08('0x34')]);_0x2e7149[_0xdd08('0x40')]=_['intersection'](_0x2e7149['model'],_0x2e7149[_0xdd08('0x34')]);_0x4f6336[_0xdd08('0x38')]=_['intersection'](_0x2e7149[_0xdd08('0x33')],qs['fields'](_0x4fe1a8[_0xdd08('0x34')][_0xdd08('0x37')]));_0x4f6336[_0xdd08('0x38')]=_0x4f6336[_0xdd08('0x38')][_0xdd08('0x39')]?_0x4f6336['attributes']:_0x2e7149['model'];_0x4f6336[_0xdd08('0x3c')]=qs[_0xdd08('0x3d')](_0x4fe1a8[_0xdd08('0x34')]['sort']);_0x4f6336[_0xdd08('0x3e')]=qs[_0xdd08('0x40')](_['pick'](_0x4fe1a8['query'],_0x2e7149[_0xdd08('0x40')]));if(_0x4fe1a8['query'][_0xdd08('0x41')]){_0x4f6336[_0xdd08('0x3e')]=_[_0xdd08('0x42')](_0x4f6336[_0xdd08('0x3e')],{'$or':_[_0xdd08('0x2d')](_0x4f6336[_0xdd08('0x38')],function(_0x5ea56d){var _0x44a31b={};_0x44a31b[_0x5ea56d]={'$like':'%'+_0x4fe1a8['query'][_0xdd08('0x41')]+'%'};return _0x44a31b;})});}_0x4f6336=_[_0xdd08('0x42')]({},_0x4f6336,_0x4fe1a8[_0xdd08('0x44')]);return _0x501b94['getSubjects'](_0x4f6336);}})[_0xdd08('0x27')](function(_0xf4d59e){if(_0xf4d59e){_0xfdd022=_0xf4d59e[_0xdd08('0x39')];if(!_0x4fe1a8['query'][_0xdd08('0x3a')](_0xdd08('0x3b'))){_0x4f6336[_0xdd08('0x21')]=qs[_0xdd08('0x21')](_0x4fe1a8[_0xdd08('0x34')][_0xdd08('0x21')]);_0x4f6336[_0xdd08('0x1f')]=qs['offset'](_0x4fe1a8[_0xdd08('0x34')][_0xdd08('0x1f')]);}return _0x501b94['getSubjects'](_0x4f6336);}})[_0xdd08('0x27')](function(_0xa32daf){if(_0xa32daf){return _0xa32daf?{'count':_0xfdd022,'rows':_0xa32daf}:null;}})[_0xdd08('0x27')](respondWithResult(_0x329380,null))['catch'](handleError(_0x329380,null));};exports['getDescriptions']=function(_0x3fa3e3,_0x1c2916,_0xda2ad7){var _0xab6baa={};var _0x13cb94={};var _0x343d1c;var _0x5d5a6f;return db[_0xdd08('0x2e')][_0xdd08('0x4e')]({'where':{'id':_0x3fa3e3['params']['id']}})[_0xdd08('0x27')](handleEntityNotFound(_0x1c2916,null))['then'](function(_0x14c3f6){if(_0x14c3f6){_0x343d1c=_0x14c3f6;_0x13cb94[_0xdd08('0x33')]=_[_0xdd08('0x35')](db[_0xdd08('0x4f')][_0xdd08('0x2f')]);_0x13cb94[_0xdd08('0x34')]=_[_0xdd08('0x35')](_0x3fa3e3['query']);_0x13cb94['filters']=_['intersection'](_0x13cb94[_0xdd08('0x33')],_0x13cb94[_0xdd08('0x34')]);_0xab6baa['attributes']=_[_0xdd08('0x36')](_0x13cb94[_0xdd08('0x33')],qs['fields'](_0x3fa3e3[_0xdd08('0x34')]['fields']));_0xab6baa[_0xdd08('0x38')]=_0xab6baa[_0xdd08('0x38')][_0xdd08('0x39')]?_0xab6baa['attributes']:_0x13cb94[_0xdd08('0x33')];_0xab6baa[_0xdd08('0x3c')]=qs[_0xdd08('0x3d')](_0x3fa3e3[_0xdd08('0x34')][_0xdd08('0x3d')]);_0xab6baa[_0xdd08('0x3e')]=qs['filters'](_[_0xdd08('0x3f')](_0x3fa3e3[_0xdd08('0x34')],_0x13cb94[_0xdd08('0x40')]));if(_0x3fa3e3[_0xdd08('0x34')]['filter']){_0xab6baa[_0xdd08('0x3e')]=_[_0xdd08('0x42')](_0xab6baa[_0xdd08('0x3e')],{'$or':_['map'](_0xab6baa['attributes'],function(_0x5b33e5){var _0x4817bc={};_0x4817bc[_0x5b33e5]={'$like':'%'+_0x3fa3e3[_0xdd08('0x34')][_0xdd08('0x41')]+'%'};return _0x4817bc;})});}_0xab6baa=_[_0xdd08('0x42')]({},_0xab6baa,_0x3fa3e3['options']);return _0x343d1c['getDescriptions'](_0xab6baa);}})[_0xdd08('0x27')](function(_0x1604e0){if(_0x1604e0){_0x5d5a6f=_0x1604e0[_0xdd08('0x39')];if(!_0x3fa3e3[_0xdd08('0x34')][_0xdd08('0x3a')](_0xdd08('0x3b'))){_0xab6baa[_0xdd08('0x21')]=qs[_0xdd08('0x21')](_0x3fa3e3['query'][_0xdd08('0x21')]);_0xab6baa[_0xdd08('0x1f')]=qs[_0xdd08('0x1f')](_0x3fa3e3[_0xdd08('0x34')][_0xdd08('0x1f')]);}return _0x343d1c[_0xdd08('0x50')](_0xab6baa);}})[_0xdd08('0x27')](function(_0x4f2c42){if(_0x4f2c42){return _0x4f2c42?{'count':_0x5d5a6f,'rows':_0x4f2c42}:null;}})[_0xdd08('0x27')](respondWithResult(_0x1c2916,null))[_0xdd08('0x46')](handleError(_0x1c2916,null));};exports[_0xdd08('0x51')]=function(_0x1aeb81,_0x4c3a44,_0x298671){var _0x5a4674={};var _0x35cae7={};var _0x30e8cd;var _0x196974;return db[_0xdd08('0x2e')][_0xdd08('0x4e')]({'where':{'id':_0x1aeb81[_0xdd08('0x48')]['id']}})[_0xdd08('0x27')](handleEntityNotFound(_0x4c3a44,null))[_0xdd08('0x27')](function(_0x357197){if(_0x357197){_0x30e8cd=_0x357197;_0x35cae7[_0xdd08('0x33')]=_['keys'](db['Tag']['rawAttributes']);_0x35cae7['query']=_[_0xdd08('0x35')](_0x1aeb81['query']);_0x35cae7[_0xdd08('0x40')]=_['intersection'](_0x35cae7[_0xdd08('0x33')],_0x35cae7[_0xdd08('0x34')]);_0x5a4674[_0xdd08('0x38')]=_['intersection'](_0x35cae7[_0xdd08('0x33')],qs['fields'](_0x1aeb81['query'][_0xdd08('0x37')]));_0x5a4674[_0xdd08('0x38')]=_0x5a4674[_0xdd08('0x38')][_0xdd08('0x39')]?_0x5a4674[_0xdd08('0x38')]:_0x35cae7[_0xdd08('0x33')];_0x5a4674[_0xdd08('0x3c')]=qs[_0xdd08('0x3d')](_0x1aeb81[_0xdd08('0x34')][_0xdd08('0x3d')]);_0x5a4674[_0xdd08('0x3e')]=qs[_0xdd08('0x40')](_[_0xdd08('0x3f')](_0x1aeb81[_0xdd08('0x34')],_0x35cae7['filters']));if(_0x1aeb81[_0xdd08('0x34')]['filter']){_0x5a4674[_0xdd08('0x3e')]=_[_0xdd08('0x42')](_0x5a4674['where'],{'$or':_[_0xdd08('0x2d')](_0x5a4674[_0xdd08('0x38')],function(_0x855f59){var _0x359520={};_0x359520[_0x855f59]={'$like':'%'+_0x1aeb81[_0xdd08('0x34')][_0xdd08('0x41')]+'%'};return _0x359520;})});}_0x5a4674=_[_0xdd08('0x42')]({},_0x5a4674,_0x1aeb81[_0xdd08('0x44')]);return _0x30e8cd[_0xdd08('0x51')](_0x5a4674);}})[_0xdd08('0x27')](function(_0x35d365){if(_0x35d365){_0x196974=_0x35d365['length'];if(!_0x1aeb81[_0xdd08('0x34')][_0xdd08('0x3a')](_0xdd08('0x3b'))){_0x5a4674[_0xdd08('0x21')]=qs[_0xdd08('0x21')](_0x1aeb81[_0xdd08('0x34')][_0xdd08('0x21')]);_0x5a4674[_0xdd08('0x1f')]=qs[_0xdd08('0x1f')](_0x1aeb81[_0xdd08('0x34')][_0xdd08('0x1f')]);}return _0x30e8cd['getTags'](_0x5a4674);}})[_0xdd08('0x27')](function(_0x4606f9){if(_0x4606f9){return _0x4606f9?{'count':_0x196974,'rows':_0x4606f9}:null;}})['then'](respondWithResult(_0x4c3a44,null))[_0xdd08('0x46')](handleError(_0x4c3a44,null));};exports[_0xdd08('0x52')]=function(_0x5c94e4,_0xf02bd4,_0x2573c2){if(_0x5c94e4['body']['id']){delete _0x5c94e4[_0xdd08('0x4c')]['id'];}return db[_0xdd08('0x2e')][_0xdd08('0x4e')]({'where':{'id':_0x5c94e4[_0xdd08('0x48')]['id']}})[_0xdd08('0x27')](handleEntityNotFound(_0xf02bd4,null))[_0xdd08('0x27')](function(_0x16803e){if(_0x16803e){return _0x16803e[_0xdd08('0x52')](_0x5c94e4[_0xdd08('0x4c')][_0xdd08('0x53')]||[]);}return null;})['then'](respondWithResult(_0xf02bd4,null))[_0xdd08('0x46')](handleError(_0xf02bd4,null));};
\ No newline at end of file
+var _0xfe46=['ZendeskField','order','sort','getFields','getSubjects','getDescriptions','setTags','ids','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../config/logger','api','../../config/environment','sendStatus','status','end','json','limit','undefined','count','offset','apply','then','destroy','error','stack','name','send','index','rawAttributes','fieldName','type','model','map','query','keys','filters','intersection','fields','length','hasOwnProperty','nolimit','where','pick','merge','VIRTUAL','filter','options','includeAll','include','ZendeskConfiguration','rows','catch','show','attributes','find','create','body','update','params','findOne'];(function(_0x176e10,_0x5839d7){var _0x216cda=function(_0x4da88b){while(--_0x4da88b){_0x176e10['push'](_0x176e10['shift']());}};_0x216cda(++_0x5839d7);}(_0xfe46,0xa0));var _0x6fe4=function(_0x21e8f9,_0x24ce8e){_0x21e8f9=_0x21e8f9-0x0;var _0x5946e=_0xfe46[_0x21e8f9];return _0x5946e;};'use strict';var emlformat=require(_0x6fe4('0x0'));var rimraf=require(_0x6fe4('0x1'));var zipdir=require(_0x6fe4('0x2'));var jsonpatch=require(_0x6fe4('0x3'));var rp=require(_0x6fe4('0x4'));var moment=require(_0x6fe4('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x6fe4('0x6'));var path=require('path');var sox=require(_0x6fe4('0x7'));var csv=require(_0x6fe4('0x8'));var ejs=require(_0x6fe4('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6fe4('0xa'));var squel=require(_0x6fe4('0xb'));var crypto=require(_0x6fe4('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x6fe4('0xd'));var toCsv=require(_0x6fe4('0x8'));var querystring=require(_0x6fe4('0xe'));var Papa=require(_0x6fe4('0xf'));var Redis=require('ioredis');var authService=require(_0x6fe4('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x6fe4('0x11'))(_0x6fe4('0x12'));var utils=require('../../config/utils');var config=require(_0x6fe4('0x13'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x29d79e,_0x2a936f){_0x2a936f=_0x2a936f||0xcc;return function(_0x59bb3f){if(_0x59bb3f){return _0x29d79e[_0x6fe4('0x14')](_0x2a936f);}return _0x29d79e[_0x6fe4('0x15')](_0x2a936f)[_0x6fe4('0x16')]();};}function respondWithResult(_0x6774da,_0x4ee3a9){_0x4ee3a9=_0x4ee3a9||0xc8;return function(_0x2398aa){if(_0x2398aa){return _0x6774da[_0x6fe4('0x15')](_0x4ee3a9)[_0x6fe4('0x17')](_0x2398aa);}};}function respondWithFilteredResult(_0x2b2537,_0x25d502){return function(_0x1a58ed){if(_0x1a58ed){var _0x1273da=typeof _0x25d502['offset']==='undefined'&&typeof _0x25d502[_0x6fe4('0x18')]===_0x6fe4('0x19');var _0x3c6784=_0x1a58ed[_0x6fe4('0x1a')];var _0x2cdc76=_0x1273da?0x0:_0x25d502[_0x6fe4('0x1b')];var _0x4217c5=_0x1273da?_0x1a58ed['count']:_0x25d502[_0x6fe4('0x1b')]+_0x25d502[_0x6fe4('0x18')];var _0x545efd;if(_0x4217c5>=_0x3c6784){_0x4217c5=_0x3c6784;_0x545efd=0xc8;}else{_0x545efd=0xce;}_0x2b2537[_0x6fe4('0x15')](_0x545efd);return _0x2b2537['set']('Content-Range',_0x2cdc76+'-'+_0x4217c5+'/'+_0x3c6784)['json'](_0x1a58ed);}return null;};}function patchUpdates(_0x2b3536){return function(_0x2a9a58){try{jsonpatch[_0x6fe4('0x1c')](_0x2a9a58,_0x2b3536,!![]);}catch(_0x3af1e2){return BPromise['reject'](_0x3af1e2);}return _0x2a9a58['save']();};}function saveUpdates(_0x34402e,_0x21e2ee){return function(_0x479506){if(_0x479506){return _0x479506['update'](_0x34402e)[_0x6fe4('0x1d')](function(_0x3a0682){return _0x3a0682;});}return null;};}function removeEntity(_0x555aa2,_0x1cfeed){return function(_0x376edd){if(_0x376edd){return _0x376edd[_0x6fe4('0x1e')]()[_0x6fe4('0x1d')](function(){_0x555aa2[_0x6fe4('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3a0ab9,_0x280c77){return function(_0x207783){if(!_0x207783){_0x3a0ab9[_0x6fe4('0x14')](0x194);}return _0x207783;};}function handleError(_0x48e158,_0xb07ecd){_0xb07ecd=_0xb07ecd||0x1f4;return function(_0x3a6cc4){logger[_0x6fe4('0x1f')](_0x3a6cc4[_0x6fe4('0x20')]);if(_0x3a6cc4[_0x6fe4('0x21')]){delete _0x3a6cc4['name'];}_0x48e158['status'](_0xb07ecd)[_0x6fe4('0x22')](_0x3a6cc4);};}exports[_0x6fe4('0x23')]=function(_0x34ca35,_0x417212){var _0x4cfc57={},_0x3fff9e={},_0xe9795c={'count':0x0,'rows':[]};var _0x276eb5=_['map'](db['ZendeskConfiguration'][_0x6fe4('0x24')],function(_0x102dd2){return{'name':_0x102dd2[_0x6fe4('0x25')],'type':_0x102dd2[_0x6fe4('0x26')]['key']};});_0x3fff9e[_0x6fe4('0x27')]=_[_0x6fe4('0x28')](_0x276eb5,_0x6fe4('0x21'));_0x3fff9e[_0x6fe4('0x29')]=_[_0x6fe4('0x2a')](_0x34ca35[_0x6fe4('0x29')]);_0x3fff9e[_0x6fe4('0x2b')]=_[_0x6fe4('0x2c')](_0x3fff9e['model'],_0x3fff9e['query']);_0x4cfc57['attributes']=_['intersection'](_0x3fff9e[_0x6fe4('0x27')],qs['fields'](_0x34ca35[_0x6fe4('0x29')][_0x6fe4('0x2d')]));_0x4cfc57['attributes']=_0x4cfc57['attributes'][_0x6fe4('0x2e')]?_0x4cfc57['attributes']:_0x3fff9e[_0x6fe4('0x27')];if(!_0x34ca35['query'][_0x6fe4('0x2f')](_0x6fe4('0x30'))){_0x4cfc57['limit']=qs[_0x6fe4('0x18')](_0x34ca35[_0x6fe4('0x29')][_0x6fe4('0x18')]);_0x4cfc57[_0x6fe4('0x1b')]=qs[_0x6fe4('0x1b')](_0x34ca35[_0x6fe4('0x29')][_0x6fe4('0x1b')]);}_0x4cfc57['order']=qs['sort'](_0x34ca35[_0x6fe4('0x29')]['sort']);_0x4cfc57[_0x6fe4('0x31')]=qs[_0x6fe4('0x2b')](_[_0x6fe4('0x32')](_0x34ca35[_0x6fe4('0x29')],_0x3fff9e[_0x6fe4('0x2b')]),_0x276eb5);if(_0x34ca35[_0x6fe4('0x29')]['filter']){_0x4cfc57[_0x6fe4('0x31')]=_[_0x6fe4('0x33')](_0x4cfc57[_0x6fe4('0x31')],{'$or':_[_0x6fe4('0x28')](_0x276eb5,function(_0x538c63){if(_0x538c63[_0x6fe4('0x26')]!==_0x6fe4('0x34')){var _0x311b29={};_0x311b29[_0x538c63[_0x6fe4('0x21')]]={'$like':'%'+_0x34ca35[_0x6fe4('0x29')][_0x6fe4('0x35')]+'%'};return _0x311b29;}})});}_0x4cfc57=_[_0x6fe4('0x33')]({},_0x4cfc57,_0x34ca35[_0x6fe4('0x36')]);var _0x29eb62={'where':_0x4cfc57[_0x6fe4('0x31')]};return db['ZendeskConfiguration'][_0x6fe4('0x1a')](_0x29eb62)['then'](function(_0x39c9dc){_0xe9795c[_0x6fe4('0x1a')]=_0x39c9dc;if(_0x34ca35[_0x6fe4('0x29')][_0x6fe4('0x37')]){_0x4cfc57[_0x6fe4('0x38')]=[{'all':!![]}];}return db[_0x6fe4('0x39')]['findAll'](_0x4cfc57);})[_0x6fe4('0x1d')](function(_0x433c6f){_0xe9795c[_0x6fe4('0x3a')]=_0x433c6f;return _0xe9795c;})[_0x6fe4('0x1d')](respondWithFilteredResult(_0x417212,_0x4cfc57))[_0x6fe4('0x3b')](handleError(_0x417212,null));};exports[_0x6fe4('0x3c')]=function(_0x1c6c3f,_0x7a1597){var _0x4a62fb={'raw':![],'where':{'id':_0x1c6c3f['params']['id']}},_0x287c98={};_0x287c98[_0x6fe4('0x27')]=_['keys'](db[_0x6fe4('0x39')]['rawAttributes']);_0x287c98[_0x6fe4('0x29')]=_[_0x6fe4('0x2a')](_0x1c6c3f[_0x6fe4('0x29')]);_0x287c98['filters']=_[_0x6fe4('0x2c')](_0x287c98[_0x6fe4('0x27')],_0x287c98[_0x6fe4('0x29')]);_0x4a62fb[_0x6fe4('0x3d')]=_[_0x6fe4('0x2c')](_0x287c98[_0x6fe4('0x27')],qs[_0x6fe4('0x2d')](_0x1c6c3f['query'][_0x6fe4('0x2d')]));_0x4a62fb['attributes']=_0x4a62fb[_0x6fe4('0x3d')]['length']?_0x4a62fb['attributes']:_0x287c98[_0x6fe4('0x27')];if(_0x1c6c3f['query'][_0x6fe4('0x37')]){_0x4a62fb[_0x6fe4('0x38')]=[{'all':!![]}];}_0x4a62fb=_[_0x6fe4('0x33')]({},_0x4a62fb,_0x1c6c3f[_0x6fe4('0x36')]);return db['ZendeskConfiguration'][_0x6fe4('0x3e')](_0x4a62fb)['then'](handleEntityNotFound(_0x7a1597,null))['then'](respondWithResult(_0x7a1597,null))[_0x6fe4('0x3b')](handleError(_0x7a1597,null));};exports[_0x6fe4('0x3f')]=function(_0x17d486,_0x3f4cff){return db['ZendeskConfiguration']['create'](_0x17d486[_0x6fe4('0x40')],{})[_0x6fe4('0x1d')](respondWithResult(_0x3f4cff,0xc9))[_0x6fe4('0x3b')](handleError(_0x3f4cff,null));};exports[_0x6fe4('0x41')]=function(_0x508ed2,_0x465290){if(_0x508ed2[_0x6fe4('0x40')]['id']){delete _0x508ed2[_0x6fe4('0x40')]['id'];}return db[_0x6fe4('0x39')][_0x6fe4('0x3e')]({'where':{'id':_0x508ed2[_0x6fe4('0x42')]['id']}})[_0x6fe4('0x1d')](handleEntityNotFound(_0x465290,null))['then'](saveUpdates(_0x508ed2[_0x6fe4('0x40')],null))[_0x6fe4('0x1d')](respondWithResult(_0x465290,null))[_0x6fe4('0x3b')](handleError(_0x465290,null));};exports['destroy']=function(_0x1453ea,_0x4dd1c8){return db[_0x6fe4('0x39')][_0x6fe4('0x3e')]({'where':{'id':_0x1453ea[_0x6fe4('0x42')]['id']}})['then'](handleEntityNotFound(_0x4dd1c8,null))[_0x6fe4('0x1d')](removeEntity(_0x4dd1c8,null))[_0x6fe4('0x3b')](handleError(_0x4dd1c8,null));};exports['getFields']=function(_0x493977,_0x142d20,_0x12fc40){var _0x43dca0={};var _0x38c8f9={};var _0xdb0ec2;var _0x126924;return db['ZendeskConfiguration'][_0x6fe4('0x43')]({'where':{'id':_0x493977['params']['id']}})['then'](handleEntityNotFound(_0x142d20,null))['then'](function(_0xddf13f){if(_0xddf13f){_0xdb0ec2=_0xddf13f;_0x38c8f9['model']=_['keys'](db[_0x6fe4('0x44')][_0x6fe4('0x24')]);_0x38c8f9[_0x6fe4('0x29')]=_['keys'](_0x493977[_0x6fe4('0x29')]);_0x38c8f9[_0x6fe4('0x2b')]=_[_0x6fe4('0x2c')](_0x38c8f9[_0x6fe4('0x27')],_0x38c8f9['query']);_0x43dca0['attributes']=_[_0x6fe4('0x2c')](_0x38c8f9[_0x6fe4('0x27')],qs['fields'](_0x493977[_0x6fe4('0x29')][_0x6fe4('0x2d')]));_0x43dca0[_0x6fe4('0x3d')]=_0x43dca0[_0x6fe4('0x3d')]['length']?_0x43dca0[_0x6fe4('0x3d')]:_0x38c8f9['model'];_0x43dca0[_0x6fe4('0x45')]=qs[_0x6fe4('0x46')](_0x493977[_0x6fe4('0x29')][_0x6fe4('0x46')]);_0x43dca0[_0x6fe4('0x31')]=qs[_0x6fe4('0x2b')](_[_0x6fe4('0x32')](_0x493977[_0x6fe4('0x29')],_0x38c8f9['filters']));if(_0x493977[_0x6fe4('0x29')]['filter']){_0x43dca0[_0x6fe4('0x31')]=_[_0x6fe4('0x33')](_0x43dca0[_0x6fe4('0x31')],{'$or':_['map'](_0x43dca0[_0x6fe4('0x3d')],function(_0x813374){var _0x52fe6d={};_0x52fe6d[_0x813374]={'$like':'%'+_0x493977[_0x6fe4('0x29')]['filter']+'%'};return _0x52fe6d;})});}_0x43dca0=_[_0x6fe4('0x33')]({},_0x43dca0,_0x493977[_0x6fe4('0x36')]);return _0xdb0ec2['getFields'](_0x43dca0);}})[_0x6fe4('0x1d')](function(_0x39afe8){if(_0x39afe8){_0x126924=_0x39afe8[_0x6fe4('0x2e')];if(!_0x493977[_0x6fe4('0x29')][_0x6fe4('0x2f')](_0x6fe4('0x30'))){_0x43dca0[_0x6fe4('0x18')]=qs['limit'](_0x493977[_0x6fe4('0x29')][_0x6fe4('0x18')]);_0x43dca0[_0x6fe4('0x1b')]=qs[_0x6fe4('0x1b')](_0x493977[_0x6fe4('0x29')]['offset']);}return _0xdb0ec2[_0x6fe4('0x47')](_0x43dca0);}})[_0x6fe4('0x1d')](function(_0x4055fa){if(_0x4055fa){return _0x4055fa?{'count':_0x126924,'rows':_0x4055fa}:null;}})[_0x6fe4('0x1d')](respondWithResult(_0x142d20,null))[_0x6fe4('0x3b')](handleError(_0x142d20,null));};exports['getSubjects']=function(_0x2fb718,_0x3e5464,_0x39c22d){var _0xf62d04={};var _0x917568={};var _0x1dd38c;var _0x24a911;return db['ZendeskConfiguration'][_0x6fe4('0x43')]({'where':{'id':_0x2fb718[_0x6fe4('0x42')]['id']}})[_0x6fe4('0x1d')](handleEntityNotFound(_0x3e5464,null))[_0x6fe4('0x1d')](function(_0x392dfc){if(_0x392dfc){_0x1dd38c=_0x392dfc;_0x917568[_0x6fe4('0x27')]=_[_0x6fe4('0x2a')](db[_0x6fe4('0x44')][_0x6fe4('0x24')]);_0x917568[_0x6fe4('0x29')]=_[_0x6fe4('0x2a')](_0x2fb718[_0x6fe4('0x29')]);_0x917568[_0x6fe4('0x2b')]=_['intersection'](_0x917568[_0x6fe4('0x27')],_0x917568[_0x6fe4('0x29')]);_0xf62d04[_0x6fe4('0x3d')]=_['intersection'](_0x917568['model'],qs[_0x6fe4('0x2d')](_0x2fb718[_0x6fe4('0x29')][_0x6fe4('0x2d')]));_0xf62d04[_0x6fe4('0x3d')]=_0xf62d04['attributes']['length']?_0xf62d04['attributes']:_0x917568[_0x6fe4('0x27')];_0xf62d04['order']=qs[_0x6fe4('0x46')](_0x2fb718[_0x6fe4('0x29')][_0x6fe4('0x46')]);_0xf62d04[_0x6fe4('0x31')]=qs[_0x6fe4('0x2b')](_[_0x6fe4('0x32')](_0x2fb718[_0x6fe4('0x29')],_0x917568[_0x6fe4('0x2b')]));if(_0x2fb718[_0x6fe4('0x29')][_0x6fe4('0x35')]){_0xf62d04['where']=_['merge'](_0xf62d04[_0x6fe4('0x31')],{'$or':_[_0x6fe4('0x28')](_0xf62d04[_0x6fe4('0x3d')],function(_0x363f1e){var _0x2a382f={};_0x2a382f[_0x363f1e]={'$like':'%'+_0x2fb718['query'][_0x6fe4('0x35')]+'%'};return _0x2a382f;})});}_0xf62d04=_[_0x6fe4('0x33')]({},_0xf62d04,_0x2fb718[_0x6fe4('0x36')]);return _0x1dd38c['getSubjects'](_0xf62d04);}})['then'](function(_0x3d2af3){if(_0x3d2af3){_0x24a911=_0x3d2af3[_0x6fe4('0x2e')];if(!_0x2fb718[_0x6fe4('0x29')]['hasOwnProperty']('nolimit')){_0xf62d04[_0x6fe4('0x18')]=qs[_0x6fe4('0x18')](_0x2fb718[_0x6fe4('0x29')]['limit']);_0xf62d04['offset']=qs[_0x6fe4('0x1b')](_0x2fb718[_0x6fe4('0x29')]['offset']);}return _0x1dd38c[_0x6fe4('0x48')](_0xf62d04);}})[_0x6fe4('0x1d')](function(_0x2655aa){if(_0x2655aa){return _0x2655aa?{'count':_0x24a911,'rows':_0x2655aa}:null;}})['then'](respondWithResult(_0x3e5464,null))[_0x6fe4('0x3b')](handleError(_0x3e5464,null));};exports['getDescriptions']=function(_0x1111d6,_0x2bfff0,_0x8bb869){var _0x61c936={};var _0x2c5b29={};var _0x3a05a3;var _0x1002a9;return db[_0x6fe4('0x39')][_0x6fe4('0x43')]({'where':{'id':_0x1111d6[_0x6fe4('0x42')]['id']}})[_0x6fe4('0x1d')](handleEntityNotFound(_0x2bfff0,null))['then'](function(_0x422df3){if(_0x422df3){_0x3a05a3=_0x422df3;_0x2c5b29[_0x6fe4('0x27')]=_['keys'](db[_0x6fe4('0x44')][_0x6fe4('0x24')]);_0x2c5b29[_0x6fe4('0x29')]=_[_0x6fe4('0x2a')](_0x1111d6[_0x6fe4('0x29')]);_0x2c5b29['filters']=_[_0x6fe4('0x2c')](_0x2c5b29[_0x6fe4('0x27')],_0x2c5b29[_0x6fe4('0x29')]);_0x61c936['attributes']=_['intersection'](_0x2c5b29[_0x6fe4('0x27')],qs[_0x6fe4('0x2d')](_0x1111d6[_0x6fe4('0x29')][_0x6fe4('0x2d')]));_0x61c936[_0x6fe4('0x3d')]=_0x61c936[_0x6fe4('0x3d')][_0x6fe4('0x2e')]?_0x61c936['attributes']:_0x2c5b29[_0x6fe4('0x27')];_0x61c936[_0x6fe4('0x45')]=qs[_0x6fe4('0x46')](_0x1111d6['query']['sort']);_0x61c936[_0x6fe4('0x31')]=qs['filters'](_[_0x6fe4('0x32')](_0x1111d6[_0x6fe4('0x29')],_0x2c5b29[_0x6fe4('0x2b')]));if(_0x1111d6['query'][_0x6fe4('0x35')]){_0x61c936[_0x6fe4('0x31')]=_[_0x6fe4('0x33')](_0x61c936[_0x6fe4('0x31')],{'$or':_[_0x6fe4('0x28')](_0x61c936['attributes'],function(_0x20827d){var _0xeccd77={};_0xeccd77[_0x20827d]={'$like':'%'+_0x1111d6['query'][_0x6fe4('0x35')]+'%'};return _0xeccd77;})});}_0x61c936=_[_0x6fe4('0x33')]({},_0x61c936,_0x1111d6[_0x6fe4('0x36')]);return _0x3a05a3[_0x6fe4('0x49')](_0x61c936);}})[_0x6fe4('0x1d')](function(_0x3e3870){if(_0x3e3870){_0x1002a9=_0x3e3870[_0x6fe4('0x2e')];if(!_0x1111d6['query'][_0x6fe4('0x2f')]('nolimit')){_0x61c936[_0x6fe4('0x18')]=qs[_0x6fe4('0x18')](_0x1111d6['query'][_0x6fe4('0x18')]);_0x61c936[_0x6fe4('0x1b')]=qs['offset'](_0x1111d6[_0x6fe4('0x29')][_0x6fe4('0x1b')]);}return _0x3a05a3[_0x6fe4('0x49')](_0x61c936);}})['then'](function(_0x5253c4){if(_0x5253c4){return _0x5253c4?{'count':_0x1002a9,'rows':_0x5253c4}:null;}})[_0x6fe4('0x1d')](respondWithResult(_0x2bfff0,null))[_0x6fe4('0x3b')](handleError(_0x2bfff0,null));};exports['getTags']=function(_0x10bf38,_0xac955c,_0x542c63){var _0x58638b={};var _0x3fb958={};var _0x3464b7;var _0x15dd72;return db[_0x6fe4('0x39')]['findOne']({'where':{'id':_0x10bf38['params']['id']}})['then'](handleEntityNotFound(_0xac955c,null))[_0x6fe4('0x1d')](function(_0x291099){if(_0x291099){_0x3464b7=_0x291099;_0x3fb958[_0x6fe4('0x27')]=_[_0x6fe4('0x2a')](db['Tag'][_0x6fe4('0x24')]);_0x3fb958[_0x6fe4('0x29')]=_[_0x6fe4('0x2a')](_0x10bf38[_0x6fe4('0x29')]);_0x3fb958[_0x6fe4('0x2b')]=_['intersection'](_0x3fb958[_0x6fe4('0x27')],_0x3fb958[_0x6fe4('0x29')]);_0x58638b[_0x6fe4('0x3d')]=_[_0x6fe4('0x2c')](_0x3fb958[_0x6fe4('0x27')],qs[_0x6fe4('0x2d')](_0x10bf38[_0x6fe4('0x29')][_0x6fe4('0x2d')]));_0x58638b[_0x6fe4('0x3d')]=_0x58638b[_0x6fe4('0x3d')]['length']?_0x58638b[_0x6fe4('0x3d')]:_0x3fb958[_0x6fe4('0x27')];_0x58638b['order']=qs['sort'](_0x10bf38['query'][_0x6fe4('0x46')]);_0x58638b[_0x6fe4('0x31')]=qs['filters'](_[_0x6fe4('0x32')](_0x10bf38[_0x6fe4('0x29')],_0x3fb958[_0x6fe4('0x2b')]));if(_0x10bf38[_0x6fe4('0x29')][_0x6fe4('0x35')]){_0x58638b[_0x6fe4('0x31')]=_[_0x6fe4('0x33')](_0x58638b[_0x6fe4('0x31')],{'$or':_['map'](_0x58638b['attributes'],function(_0x4fff94){var _0x1b72e5={};_0x1b72e5[_0x4fff94]={'$like':'%'+_0x10bf38[_0x6fe4('0x29')]['filter']+'%'};return _0x1b72e5;})});}_0x58638b=_[_0x6fe4('0x33')]({},_0x58638b,_0x10bf38[_0x6fe4('0x36')]);return _0x3464b7['getTags'](_0x58638b);}})[_0x6fe4('0x1d')](function(_0x2c2bb2){if(_0x2c2bb2){_0x15dd72=_0x2c2bb2['length'];if(!_0x10bf38[_0x6fe4('0x29')][_0x6fe4('0x2f')](_0x6fe4('0x30'))){_0x58638b[_0x6fe4('0x18')]=qs['limit'](_0x10bf38[_0x6fe4('0x29')]['limit']);_0x58638b[_0x6fe4('0x1b')]=qs[_0x6fe4('0x1b')](_0x10bf38['query']['offset']);}return _0x3464b7['getTags'](_0x58638b);}})[_0x6fe4('0x1d')](function(_0x1afbc4){if(_0x1afbc4){return _0x1afbc4?{'count':_0x15dd72,'rows':_0x1afbc4}:null;}})[_0x6fe4('0x1d')](respondWithResult(_0xac955c,null))[_0x6fe4('0x3b')](handleError(_0xac955c,null));};exports[_0x6fe4('0x4a')]=function(_0x2a841d,_0x4009f4,_0x4fda01){if(_0x2a841d[_0x6fe4('0x40')]['id']){delete _0x2a841d[_0x6fe4('0x40')]['id'];}return db[_0x6fe4('0x39')][_0x6fe4('0x43')]({'where':{'id':_0x2a841d[_0x6fe4('0x42')]['id']}})[_0x6fe4('0x1d')](handleEntityNotFound(_0x4009f4,null))['then'](function(_0x40735c){if(_0x40735c){return _0x40735c['setTags'](_0x2a841d[_0x6fe4('0x40')][_0x6fe4('0x4b')]||[]);}return null;})[_0x6fe4('0x1d')](respondWithResult(_0x4009f4,null))['catch'](handleError(_0x4009f4,null));};
\ No newline at end of file
index 8dfa50e..a5d40c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7708=['../../config/environment','exports','define','ZendeskConfiguration','int_zendesk_configurations','lodash','util','api','rimraf'];(function(_0x36d0f1,_0x1cdcd8){var _0x471220=function(_0x2d1f5b){while(--_0x2d1f5b){_0x36d0f1['push'](_0x36d0f1['shift']());}};_0x471220(++_0x1cdcd8);}(_0x7708,0x188));var _0x8770=function(_0x4178af,_0x388652){_0x4178af=_0x4178af-0x0;var _0x20f4b1=_0x7708[_0x4178af];return _0x20f4b1;};'use strict';var _=require(_0x8770('0x0'));var util=require(_0x8770('0x1'));var logger=require('../../config/logger')(_0x8770('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x8770('0x3'));var config=require(_0x8770('0x4'));var attributes=require('./intZendeskConfiguration.attributes');module[_0x8770('0x5')]=function(_0x50bab7,_0x31390d){return _0x50bab7[_0x8770('0x6')](_0x8770('0x7'),attributes,{'tableName':_0x8770('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb574=['./intZendeskConfiguration.attributes','lodash','util','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x2a210c,_0x537bcf){var _0x11288c=function(_0x36c042){while(--_0x36c042){_0x2a210c['push'](_0x2a210c['shift']());}};_0x11288c(++_0x537bcf);}(_0xb574,0x106));var _0x4b57=function(_0x4e0322,_0x48e336){_0x4e0322=_0x4e0322-0x0;var _0x221dc7=_0xb574[_0x4e0322];return _0x221dc7;};'use strict';var _=require(_0x4b57('0x0'));var util=require(_0x4b57('0x1'));var logger=require('../../config/logger')(_0x4b57('0x2'));var moment=require(_0x4b57('0x3'));var BPromise=require('bluebird');var rp=require(_0x4b57('0x4'));var fs=require('fs');var path=require(_0x4b57('0x5'));var rimraf=require(_0x4b57('0x6'));var config=require(_0x4b57('0x7'));var attributes=require(_0x4b57('0x8'));module['exports']=function(_0x4eb019,_0x1c97e5){return _0x4eb019['define']('ZendeskConfiguration',attributes,{'tableName':'int_zendesk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5e2cdf4..2d3b4e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f09=['then','info','ZendeskConfiguration,\x20%s,\x20%s','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x285c48,_0x5153de){var _0x54c9a4=function(_0x503465){while(--_0x503465){_0x285c48['push'](_0x285c48['shift']());}};_0x54c9a4(++_0x5153de);}(_0x0f09,0x11d));var _0x90f0=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x0f09[_0x3ab51d];return _0x29a04e;};'use strict';var _=require(_0x90f0('0x0'));var util=require(_0x90f0('0x1'));var moment=require(_0x90f0('0x2'));var BPromise=require(_0x90f0('0x3'));var rs=require(_0x90f0('0x4'));var fs=require('fs');var Redis=require(_0x90f0('0x5'));var db=require(_0x90f0('0x6'))['db'];var utils=require(_0x90f0('0x7'));var logger=require(_0x90f0('0x8'))(_0x90f0('0x9'));var config=require(_0x90f0('0xa'));var jayson=require(_0x90f0('0xb'));var client=jayson[_0x90f0('0xc')][_0x90f0('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x6b745,_0x1b437d,_0x186125){return new BPromise(function(_0x193a57,_0x5514f7){return client[_0x90f0('0xe')](_0x6b745,_0x186125)[_0x90f0('0xf')](function(_0x208b80){logger[_0x90f0('0x10')](_0x90f0('0x11'),_0x1b437d,'request\x20sent');logger['debug'](_0x90f0('0x12'),_0x1b437d,'request\x20sent',JSON[_0x90f0('0x13')](_0x208b80));if(_0x208b80['error']){if(_0x208b80[_0x90f0('0x14')]['code']===0x1f4){logger[_0x90f0('0x14')](_0x90f0('0x11'),_0x1b437d,_0x208b80[_0x90f0('0x14')][_0x90f0('0x15')]);return _0x5514f7(_0x208b80[_0x90f0('0x14')][_0x90f0('0x15')]);}logger['error'](_0x90f0('0x11'),_0x1b437d,_0x208b80[_0x90f0('0x14')]['message']);return _0x193a57(_0x208b80[_0x90f0('0x14')]['message']);}else{logger[_0x90f0('0x10')](_0x90f0('0x11'),_0x1b437d,_0x90f0('0x16'));_0x193a57(_0x208b80[_0x90f0('0x17')]['message']);}})[_0x90f0('0x18')](function(_0x2c4bf2){logger[_0x90f0('0x14')]('ZendeskConfiguration,\x20%s,\x20%s',_0x1b437d,_0x2c4bf2);_0x5514f7(_0x2c4bf2);});});}
\ No newline at end of file
+var _0xbf15=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','debug','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','ZendeskConfiguration,\x20%s,\x20%s','result','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x542c88,_0x5d6405){var _0x141def=function(_0x496314){while(--_0x496314){_0x542c88['push'](_0x542c88['shift']());}};_0x141def(++_0x5d6405);}(_0xbf15,0x167));var _0x5bf1=function(_0xead40a,_0x4d4c36){_0xead40a=_0xead40a-0x0;var _0x49c93b=_0xbf15[_0xead40a];return _0x49c93b;};'use strict';var _=require(_0x5bf1('0x0'));var util=require(_0x5bf1('0x1'));var moment=require(_0x5bf1('0x2'));var BPromise=require(_0x5bf1('0x3'));var rs=require(_0x5bf1('0x4'));var fs=require('fs');var Redis=require(_0x5bf1('0x5'));var db=require(_0x5bf1('0x6'))['db'];var utils=require(_0x5bf1('0x7'));var logger=require(_0x5bf1('0x8'))(_0x5bf1('0x9'));var config=require(_0x5bf1('0xa'));var jayson=require(_0x5bf1('0xb'));var client=jayson[_0x5bf1('0xc')][_0x5bf1('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x462f71,_0x3a5b01,_0x4c48ea){return new BPromise(function(_0x50fda3,_0x19a151){return client['request'](_0x462f71,_0x4c48ea)[_0x5bf1('0xe')](function(_0xd7d3ce){logger[_0x5bf1('0xf')]('ZendeskConfiguration,\x20%s,\x20%s',_0x3a5b01,_0x5bf1('0x10'));logger[_0x5bf1('0x11')](_0x5bf1('0x12'),_0x3a5b01,_0x5bf1('0x10'),JSON[_0x5bf1('0x13')](_0xd7d3ce));if(_0xd7d3ce[_0x5bf1('0x14')]){if(_0xd7d3ce[_0x5bf1('0x14')][_0x5bf1('0x15')]===0x1f4){logger[_0x5bf1('0x14')]('ZendeskConfiguration,\x20%s,\x20%s',_0x3a5b01,_0xd7d3ce[_0x5bf1('0x14')][_0x5bf1('0x16')]);return _0x19a151(_0xd7d3ce[_0x5bf1('0x14')]['message']);}logger['error']('ZendeskConfiguration,\x20%s,\x20%s',_0x3a5b01,_0xd7d3ce[_0x5bf1('0x14')][_0x5bf1('0x16')]);return _0x50fda3(_0xd7d3ce[_0x5bf1('0x14')][_0x5bf1('0x16')]);}else{logger['info'](_0x5bf1('0x17'),_0x3a5b01,'request\x20sent');_0x50fda3(_0xd7d3ce[_0x5bf1('0x18')]['message']);}})[_0x5bf1('0x19')](function(_0x3528b9){logger[_0x5bf1('0x14')](_0x5bf1('0x17'),_0x3a5b01,_0x3528b9);_0x19a151(_0x3528b9);});});}
\ No newline at end of file
index 3a598f3..034b47f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x318e=['destroy','exports','util','express','fs-extra','../../components/auth/service','../../components/interaction/service','./intZendeskField.controller','get','isAuthenticated','/:id','show','post','create','update','delete'];(function(_0x83514c,_0x58fc0b){var _0x737e60=function(_0x2e0fd1){while(--_0x2e0fd1){_0x83514c['push'](_0x83514c['shift']());}};_0x737e60(++_0x58fc0b);}(_0x318e,0x182));var _0xe318=function(_0x7fc11c,_0x4ce78b){_0x7fc11c=_0x7fc11c-0x0;var _0xc7f911=_0x318e[_0x7fc11c];return _0xc7f911;};'use strict';var multer=require('multer');var util=require(_0xe318('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xe318('0x1'));var router=express['Router']();var fs_extra=require(_0xe318('0x2'));var auth=require(_0xe318('0x3'));var interaction=require(_0xe318('0x4'));var config=require('../../config/environment');var controller=require(_0xe318('0x5'));router[_0xe318('0x6')]('/',auth[_0xe318('0x7')](),controller['index']);router[_0xe318('0x6')](_0xe318('0x8'),auth[_0xe318('0x7')](),controller[_0xe318('0x9')]);router[_0xe318('0xa')]('/',auth[_0xe318('0x7')](),controller[_0xe318('0xb')]);router['put'](_0xe318('0x8'),auth[_0xe318('0x7')](),controller[_0xe318('0xc')]);router[_0xe318('0xd')](_0xe318('0x8'),auth[_0xe318('0x7')](),controller[_0xe318('0xe')]);module[_0xe318('0xf')]=router;
\ No newline at end of file
+var _0xc9a3=['express','Router','fs-extra','../../components/auth/service','get','/:id','isAuthenticated','show','post','create','update','delete','destroy','multer','path'];(function(_0x540393,_0x49bd1d){var _0x155384=function(_0x596e3a){while(--_0x596e3a){_0x540393['push'](_0x540393['shift']());}};_0x155384(++_0x49bd1d);}(_0xc9a3,0x1b1));var _0x3c9a=function(_0x5ad400,_0x5ed83d){_0x5ad400=_0x5ad400-0x0;var _0xc635ef=_0xc9a3[_0x5ad400];return _0xc635ef;};'use strict';var multer=require(_0x3c9a('0x0'));var util=require('util');var path=require(_0x3c9a('0x1'));var timeout=require('connect-timeout');var express=require(_0x3c9a('0x2'));var router=express[_0x3c9a('0x3')]();var fs_extra=require(_0x3c9a('0x4'));var auth=require(_0x3c9a('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./intZendeskField.controller');router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x3c9a('0x6')](_0x3c9a('0x7'),auth[_0x3c9a('0x8')](),controller[_0x3c9a('0x9')]);router[_0x3c9a('0xa')]('/',auth['isAuthenticated'](),controller[_0x3c9a('0xb')]);router['put']('/:id',auth[_0x3c9a('0x8')](),controller[_0x3c9a('0xc')]);router[_0x3c9a('0xd')](_0x3c9a('0x7'),auth['isAuthenticated'](),controller[_0x3c9a('0xe')]);module['exports']=router;
\ No newline at end of file
index 9e8c66e..27147f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d65=['variable','BOOLEAN','exports','ENUM','string','customVariable','keyValue','STRING'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x4d65,0xc2));var _0x54d6=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0x4d65[_0x4243a3];return _0x1b2a33;};'use strict';var Sequelize=require('sequelize');module[_0x54d6('0x0')]={'type':{'type':Sequelize[_0x54d6('0x1')](_0x54d6('0x2'),'variable',_0x54d6('0x3'),_0x54d6('0x4'),'picklist'),'defaultValue':_0x54d6('0x2')},'content':{'type':Sequelize[_0x54d6('0x5')]},'key':{'type':Sequelize[_0x54d6('0x5')]},'keyType':{'type':Sequelize[_0x54d6('0x1')](_0x54d6('0x2'),_0x54d6('0x6'),_0x54d6('0x3'))},'keyContent':{'type':Sequelize[_0x54d6('0x5')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x54d6('0x5')]},'customField':{'type':Sequelize[_0x54d6('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xc140=['variable','customVariable','keyValue','picklist','STRING','BOOLEAN','sequelize','ENUM','string'];(function(_0x491cbe,_0x45c8ba){var _0x59449d=function(_0x21b463){while(--_0x21b463){_0x491cbe['push'](_0x491cbe['shift']());}};_0x59449d(++_0x45c8ba);}(_0xc140,0xb1));var _0x0c14=function(_0x37862a,_0x2bc98e){_0x37862a=_0x37862a-0x0;var _0x5b0104=_0xc140[_0x37862a];return _0x5b0104;};'use strict';var Sequelize=require(_0x0c14('0x0'));module['exports']={'type':{'type':Sequelize[_0x0c14('0x1')](_0x0c14('0x2'),_0x0c14('0x3'),_0x0c14('0x4'),_0x0c14('0x5'),_0x0c14('0x6')),'defaultValue':_0x0c14('0x2')},'content':{'type':Sequelize[_0x0c14('0x7')]},'key':{'type':Sequelize[_0x0c14('0x7')]},'keyType':{'type':Sequelize[_0x0c14('0x1')]('string',_0x0c14('0x3'),_0x0c14('0x4'))},'keyContent':{'type':Sequelize[_0x0c14('0x7')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x0c14('0x7')]},'customField':{'type':Sequelize[_0x0c14('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x0c14('0x7')]}};
\ No newline at end of file
index e6baf55..e8b68e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa68=['../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','offset','limit','undefined','count','set','Content-Range','json','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','index','ZendeskField','rawAttributes','fieldName','type','key','model','map','keys','filters','intersection','attributes','fields','query','length','hasOwnProperty','nolimit','order','sort','filter','where','merge','VIRTUAL','options','include','findAll','rows','show','params','includeAll','find','catch','create','body','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs'];(function(_0x333c6e,_0x4b000c){var _0x1444ef=function(_0x4ab019){while(--_0x4ab019){_0x333c6e['push'](_0x333c6e['shift']());}};_0x1444ef(++_0x4b000c);}(_0xfa68,0x86));var _0x8fa6=function(_0x267cbd,_0x536558){_0x267cbd=_0x267cbd-0x0;var _0x3ef360=_0xfa68[_0x267cbd];return _0x3ef360;};'use strict';var emlformat=require(_0x8fa6('0x0'));var rimraf=require(_0x8fa6('0x1'));var zipdir=require(_0x8fa6('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8fa6('0x3'));var moment=require(_0x8fa6('0x4'));var BPromise=require(_0x8fa6('0x5'));var Mustache=require('mustache');var util=require(_0x8fa6('0x6'));var path=require(_0x8fa6('0x7'));var sox=require(_0x8fa6('0x8'));var csv=require(_0x8fa6('0x9'));var ejs=require(_0x8fa6('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8fa6('0xb'));var squel=require(_0x8fa6('0xc'));var crypto=require('crypto');var jsforce=require(_0x8fa6('0xd'));var deskjs=require(_0x8fa6('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x8fa6('0xf'));var Redis=require(_0x8fa6('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x8fa6('0x11'));var as=require(_0x8fa6('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x8fa6('0x13'));var utils=require(_0x8fa6('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x8fa6('0x15'));var db=require(_0x8fa6('0x16'))['db'];function respondWithStatusCode(_0x59b7f9,_0x1ed90e){_0x1ed90e=_0x1ed90e||0xcc;return function(_0x1c621f){if(_0x1c621f){return _0x59b7f9['sendStatus'](_0x1ed90e);}return _0x59b7f9[_0x8fa6('0x17')](_0x1ed90e)[_0x8fa6('0x18')]();};}function respondWithResult(_0x22d83f,_0x86f607){_0x86f607=_0x86f607||0xc8;return function(_0xd2cce0){if(_0xd2cce0){return _0x22d83f['status'](_0x86f607)['json'](_0xd2cce0);}};}function respondWithFilteredResult(_0x3426a7,_0x5eff0e){return function(_0x1425a7){if(_0x1425a7){var _0x22bb50=typeof _0x5eff0e[_0x8fa6('0x19')]==='undefined'&&typeof _0x5eff0e[_0x8fa6('0x1a')]===_0x8fa6('0x1b');var _0x300f68=_0x1425a7['count'];var _0x329f97=_0x22bb50?0x0:_0x5eff0e[_0x8fa6('0x19')];var _0x8de44e=_0x22bb50?_0x1425a7[_0x8fa6('0x1c')]:_0x5eff0e['offset']+_0x5eff0e[_0x8fa6('0x1a')];var _0x516d42;if(_0x8de44e>=_0x300f68){_0x8de44e=_0x300f68;_0x516d42=0xc8;}else{_0x516d42=0xce;}_0x3426a7[_0x8fa6('0x17')](_0x516d42);return _0x3426a7[_0x8fa6('0x1d')](_0x8fa6('0x1e'),_0x329f97+'-'+_0x8de44e+'/'+_0x300f68)[_0x8fa6('0x1f')](_0x1425a7);}return null;};}function patchUpdates(_0x50e633){return function(_0x3072f7){try{jsonpatch[_0x8fa6('0x20')](_0x3072f7,_0x50e633,!![]);}catch(_0x5b6acb){return BPromise[_0x8fa6('0x21')](_0x5b6acb);}return _0x3072f7[_0x8fa6('0x22')]();};}function saveUpdates(_0x29d361,_0x50f8d2){return function(_0x149ace){if(_0x149ace){return _0x149ace[_0x8fa6('0x23')](_0x29d361)[_0x8fa6('0x24')](function(_0x49225a){return _0x49225a;});}return null;};}function removeEntity(_0x59f0b6,_0x588001){return function(_0x283805){if(_0x283805){return _0x283805[_0x8fa6('0x25')]()['then'](function(){_0x59f0b6['status'](0xcc)[_0x8fa6('0x18')]();});}};}function handleEntityNotFound(_0x3f86d8,_0x5775b7){return function(_0x57db95){if(!_0x57db95){_0x3f86d8[_0x8fa6('0x26')](0x194);}return _0x57db95;};}function handleError(_0x1914bc,_0x424546){_0x424546=_0x424546||0x1f4;return function(_0x4efd81){logger[_0x8fa6('0x27')](_0x4efd81[_0x8fa6('0x28')]);if(_0x4efd81['name']){delete _0x4efd81[_0x8fa6('0x29')];}_0x1914bc[_0x8fa6('0x17')](_0x424546)['send'](_0x4efd81);};}exports[_0x8fa6('0x2a')]=function(_0x39cf7c,_0x4cdbdb){var _0x5e1a88={},_0x23fdc9={},_0xbe8f01={'count':0x0,'rows':[]};var _0x5ee7f8=_['map'](db[_0x8fa6('0x2b')][_0x8fa6('0x2c')],function(_0x3f822b){return{'name':_0x3f822b[_0x8fa6('0x2d')],'type':_0x3f822b[_0x8fa6('0x2e')][_0x8fa6('0x2f')]};});_0x23fdc9[_0x8fa6('0x30')]=_[_0x8fa6('0x31')](_0x5ee7f8,'name');_0x23fdc9['query']=_[_0x8fa6('0x32')](_0x39cf7c['query']);_0x23fdc9[_0x8fa6('0x33')]=_[_0x8fa6('0x34')](_0x23fdc9[_0x8fa6('0x30')],_0x23fdc9['query']);_0x5e1a88[_0x8fa6('0x35')]=_[_0x8fa6('0x34')](_0x23fdc9['model'],qs[_0x8fa6('0x36')](_0x39cf7c[_0x8fa6('0x37')][_0x8fa6('0x36')]));_0x5e1a88[_0x8fa6('0x35')]=_0x5e1a88[_0x8fa6('0x35')][_0x8fa6('0x38')]?_0x5e1a88[_0x8fa6('0x35')]:_0x23fdc9[_0x8fa6('0x30')];if(!_0x39cf7c[_0x8fa6('0x37')][_0x8fa6('0x39')](_0x8fa6('0x3a'))){_0x5e1a88[_0x8fa6('0x1a')]=qs['limit'](_0x39cf7c[_0x8fa6('0x37')][_0x8fa6('0x1a')]);_0x5e1a88[_0x8fa6('0x19')]=qs[_0x8fa6('0x19')](_0x39cf7c[_0x8fa6('0x37')][_0x8fa6('0x19')]);}_0x5e1a88[_0x8fa6('0x3b')]=qs['sort'](_0x39cf7c['query'][_0x8fa6('0x3c')]);_0x5e1a88['where']=qs['filters'](_['pick'](_0x39cf7c['query'],_0x23fdc9['filters']),_0x5ee7f8);if(_0x39cf7c['query'][_0x8fa6('0x3d')]){_0x5e1a88[_0x8fa6('0x3e')]=_[_0x8fa6('0x3f')](_0x5e1a88['where'],{'$or':_['map'](_0x5ee7f8,function(_0x423b23){if(_0x423b23[_0x8fa6('0x2e')]!==_0x8fa6('0x40')){var _0x181b19={};_0x181b19[_0x423b23['name']]={'$like':'%'+_0x39cf7c[_0x8fa6('0x37')]['filter']+'%'};return _0x181b19;}})});}_0x5e1a88=_['merge']({},_0x5e1a88,_0x39cf7c[_0x8fa6('0x41')]);var _0x3c9985={'where':_0x5e1a88[_0x8fa6('0x3e')]};return db[_0x8fa6('0x2b')][_0x8fa6('0x1c')](_0x3c9985)[_0x8fa6('0x24')](function(_0x3d41f5){_0xbe8f01[_0x8fa6('0x1c')]=_0x3d41f5;if(_0x39cf7c[_0x8fa6('0x37')]['includeAll']){_0x5e1a88[_0x8fa6('0x42')]=[{'all':!![]}];}return db['ZendeskField'][_0x8fa6('0x43')](_0x5e1a88);})['then'](function(_0x31df03){_0xbe8f01[_0x8fa6('0x44')]=_0x31df03;return _0xbe8f01;})[_0x8fa6('0x24')](respondWithFilteredResult(_0x4cdbdb,_0x5e1a88))['catch'](handleError(_0x4cdbdb,null));};exports[_0x8fa6('0x45')]=function(_0x5a1d1e,_0x254095){var _0x5c8219={'raw':!![],'where':{'id':_0x5a1d1e[_0x8fa6('0x46')]['id']}},_0x1df682={};_0x1df682['model']=_[_0x8fa6('0x32')](db[_0x8fa6('0x2b')][_0x8fa6('0x2c')]);_0x1df682['query']=_[_0x8fa6('0x32')](_0x5a1d1e[_0x8fa6('0x37')]);_0x1df682[_0x8fa6('0x33')]=_[_0x8fa6('0x34')](_0x1df682[_0x8fa6('0x30')],_0x1df682[_0x8fa6('0x37')]);_0x5c8219[_0x8fa6('0x35')]=_[_0x8fa6('0x34')](_0x1df682['model'],qs[_0x8fa6('0x36')](_0x5a1d1e[_0x8fa6('0x37')][_0x8fa6('0x36')]));_0x5c8219[_0x8fa6('0x35')]=_0x5c8219['attributes']['length']?_0x5c8219[_0x8fa6('0x35')]:_0x1df682[_0x8fa6('0x30')];if(_0x5a1d1e[_0x8fa6('0x37')][_0x8fa6('0x47')]){_0x5c8219[_0x8fa6('0x42')]=[{'all':!![]}];}_0x5c8219=_[_0x8fa6('0x3f')]({},_0x5c8219,_0x5a1d1e[_0x8fa6('0x41')]);return db[_0x8fa6('0x2b')][_0x8fa6('0x48')](_0x5c8219)[_0x8fa6('0x24')](handleEntityNotFound(_0x254095,null))[_0x8fa6('0x24')](respondWithResult(_0x254095,null))[_0x8fa6('0x49')](handleError(_0x254095,null));};exports[_0x8fa6('0x4a')]=function(_0x45b277,_0x185ac8){return db[_0x8fa6('0x2b')][_0x8fa6('0x4a')](_0x45b277['body'],{})[_0x8fa6('0x24')](respondWithResult(_0x185ac8,0xc9))[_0x8fa6('0x49')](handleError(_0x185ac8,null));};exports['update']=function(_0x414168,_0x2386c7){if(_0x414168[_0x8fa6('0x4b')]['id']){delete _0x414168['body']['id'];}return db['ZendeskField'][_0x8fa6('0x48')]({'where':{'id':_0x414168['params']['id']}})[_0x8fa6('0x24')](handleEntityNotFound(_0x2386c7,null))[_0x8fa6('0x24')](saveUpdates(_0x414168[_0x8fa6('0x4b')],null))[_0x8fa6('0x24')](respondWithResult(_0x2386c7,null))[_0x8fa6('0x49')](handleError(_0x2386c7,null));};exports['destroy']=function(_0x1289ca,_0x1f90a7){return db['ZendeskField'][_0x8fa6('0x48')]({'where':{'id':_0x1289ca[_0x8fa6('0x46')]['id']}})[_0x8fa6('0x24')](handleEntityNotFound(_0x1f90a7,null))[_0x8fa6('0x24')](removeEntity(_0x1f90a7,null))[_0x8fa6('0x49')](handleError(_0x1f90a7,null));};
\ No newline at end of file
+var _0xd5fe=['update','eml-format','rimraf','fast-json-patch','moment','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','set','Content-Range','apply','save','destroy','then','error','stack','name','send','index','map','ZendeskField','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','nolimit','sort','where','filters','filter','merge','VIRTUAL','options','count','includeAll','include','rows','catch','show','params','length','create','body'];(function(_0x578429,_0x24956f){var _0x40801e=function(_0xce0a24){while(--_0xce0a24){_0x578429['push'](_0x578429['shift']());}};_0x40801e(++_0x24956f);}(_0xd5fe,0x1ab));var _0xed5f=function(_0x3f0b30,_0x159bc8){_0x3f0b30=_0x3f0b30-0x0;var _0x2748a5=_0xd5fe[_0x3f0b30];return _0x2748a5;};'use strict';var emlformat=require(_0xed5f('0x0'));var rimraf=require(_0xed5f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xed5f('0x2'));var rp=require('request-promise');var moment=require(_0xed5f('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xed5f('0x4'));var path=require(_0xed5f('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xed5f('0x6'));var fs=require('fs');var fs_extra=require(_0xed5f('0x7'));var _=require(_0xed5f('0x8'));var squel=require(_0xed5f('0x9'));var crypto=require(_0xed5f('0xa'));var jsforce=require(_0xed5f('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xed5f('0xc'));var querystring=require('querystring');var Papa=require(_0xed5f('0xd'));var Redis=require('ioredis');var authService=require(_0xed5f('0xe'));var qs=require(_0xed5f('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xed5f('0x10'));var logger=require(_0xed5f('0x11'))(_0xed5f('0x12'));var utils=require(_0xed5f('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xed5f('0x14'));var db=require(_0xed5f('0x15'))['db'];function respondWithStatusCode(_0xc738d7,_0x51b774){_0x51b774=_0x51b774||0xcc;return function(_0x5c138b){if(_0x5c138b){return _0xc738d7[_0xed5f('0x16')](_0x51b774);}return _0xc738d7[_0xed5f('0x17')](_0x51b774)[_0xed5f('0x18')]();};}function respondWithResult(_0x3ab39d,_0x35ee0a){_0x35ee0a=_0x35ee0a||0xc8;return function(_0x2e1263){if(_0x2e1263){return _0x3ab39d[_0xed5f('0x17')](_0x35ee0a)[_0xed5f('0x19')](_0x2e1263);}};}function respondWithFilteredResult(_0x229f3b,_0x2f8210){return function(_0x67a4f2){if(_0x67a4f2){var _0x339e09=typeof _0x2f8210[_0xed5f('0x1a')]==='undefined'&&typeof _0x2f8210[_0xed5f('0x1b')]===_0xed5f('0x1c');var _0x4278ec=_0x67a4f2['count'];var _0x1c74a2=_0x339e09?0x0:_0x2f8210[_0xed5f('0x1a')];var _0x3bda83=_0x339e09?_0x67a4f2['count']:_0x2f8210[_0xed5f('0x1a')]+_0x2f8210[_0xed5f('0x1b')];var _0x20f063;if(_0x3bda83>=_0x4278ec){_0x3bda83=_0x4278ec;_0x20f063=0xc8;}else{_0x20f063=0xce;}_0x229f3b[_0xed5f('0x17')](_0x20f063);return _0x229f3b[_0xed5f('0x1d')](_0xed5f('0x1e'),_0x1c74a2+'-'+_0x3bda83+'/'+_0x4278ec)['json'](_0x67a4f2);}return null;};}function patchUpdates(_0x304bd9){return function(_0x5b7359){try{jsonpatch[_0xed5f('0x1f')](_0x5b7359,_0x304bd9,!![]);}catch(_0x488f90){return BPromise['reject'](_0x488f90);}return _0x5b7359[_0xed5f('0x20')]();};}function saveUpdates(_0x53f068,_0x5ecabb){return function(_0x3ed112){if(_0x3ed112){return _0x3ed112['update'](_0x53f068)['then'](function(_0x4f283a){return _0x4f283a;});}return null;};}function removeEntity(_0x1204b5,_0x1df3aa){return function(_0x32b23c){if(_0x32b23c){return _0x32b23c[_0xed5f('0x21')]()[_0xed5f('0x22')](function(){_0x1204b5['status'](0xcc)[_0xed5f('0x18')]();});}};}function handleEntityNotFound(_0x10b632,_0xa232c2){return function(_0x151037){if(!_0x151037){_0x10b632[_0xed5f('0x16')](0x194);}return _0x151037;};}function handleError(_0x96a37b,_0x954bc1){_0x954bc1=_0x954bc1||0x1f4;return function(_0x100c15){logger[_0xed5f('0x23')](_0x100c15[_0xed5f('0x24')]);if(_0x100c15[_0xed5f('0x25')]){delete _0x100c15['name'];}_0x96a37b[_0xed5f('0x17')](_0x954bc1)[_0xed5f('0x26')](_0x100c15);};}exports[_0xed5f('0x27')]=function(_0x3c7906,_0x4dfd02){var _0x5eaa20={},_0xdc354e={},_0x2883db={'count':0x0,'rows':[]};var _0x355a8c=_[_0xed5f('0x28')](db[_0xed5f('0x29')][_0xed5f('0x2a')],function(_0xea7797){return{'name':_0xea7797[_0xed5f('0x2b')],'type':_0xea7797[_0xed5f('0x2c')][_0xed5f('0x2d')]};});_0xdc354e[_0xed5f('0x2e')]=_['map'](_0x355a8c,_0xed5f('0x25'));_0xdc354e[_0xed5f('0x2f')]=_[_0xed5f('0x30')](_0x3c7906[_0xed5f('0x2f')]);_0xdc354e['filters']=_[_0xed5f('0x31')](_0xdc354e[_0xed5f('0x2e')],_0xdc354e['query']);_0x5eaa20[_0xed5f('0x32')]=_['intersection'](_0xdc354e[_0xed5f('0x2e')],qs[_0xed5f('0x33')](_0x3c7906[_0xed5f('0x2f')]['fields']));_0x5eaa20['attributes']=_0x5eaa20[_0xed5f('0x32')]['length']?_0x5eaa20[_0xed5f('0x32')]:_0xdc354e[_0xed5f('0x2e')];if(!_0x3c7906[_0xed5f('0x2f')]['hasOwnProperty'](_0xed5f('0x34'))){_0x5eaa20[_0xed5f('0x1b')]=qs['limit'](_0x3c7906[_0xed5f('0x2f')]['limit']);_0x5eaa20[_0xed5f('0x1a')]=qs[_0xed5f('0x1a')](_0x3c7906['query']['offset']);}_0x5eaa20['order']=qs[_0xed5f('0x35')](_0x3c7906[_0xed5f('0x2f')]['sort']);_0x5eaa20[_0xed5f('0x36')]=qs[_0xed5f('0x37')](_['pick'](_0x3c7906[_0xed5f('0x2f')],_0xdc354e['filters']),_0x355a8c);if(_0x3c7906[_0xed5f('0x2f')][_0xed5f('0x38')]){_0x5eaa20[_0xed5f('0x36')]=_[_0xed5f('0x39')](_0x5eaa20[_0xed5f('0x36')],{'$or':_[_0xed5f('0x28')](_0x355a8c,function(_0x4134a7){if(_0x4134a7[_0xed5f('0x2c')]!==_0xed5f('0x3a')){var _0x53be37={};_0x53be37[_0x4134a7['name']]={'$like':'%'+_0x3c7906[_0xed5f('0x2f')][_0xed5f('0x38')]+'%'};return _0x53be37;}})});}_0x5eaa20=_[_0xed5f('0x39')]({},_0x5eaa20,_0x3c7906[_0xed5f('0x3b')]);var _0xe3bd7c={'where':_0x5eaa20[_0xed5f('0x36')]};return db[_0xed5f('0x29')][_0xed5f('0x3c')](_0xe3bd7c)[_0xed5f('0x22')](function(_0x4d8c7c){_0x2883db[_0xed5f('0x3c')]=_0x4d8c7c;if(_0x3c7906[_0xed5f('0x2f')][_0xed5f('0x3d')]){_0x5eaa20[_0xed5f('0x3e')]=[{'all':!![]}];}return db['ZendeskField']['findAll'](_0x5eaa20);})[_0xed5f('0x22')](function(_0x2494d9){_0x2883db[_0xed5f('0x3f')]=_0x2494d9;return _0x2883db;})[_0xed5f('0x22')](respondWithFilteredResult(_0x4dfd02,_0x5eaa20))[_0xed5f('0x40')](handleError(_0x4dfd02,null));};exports[_0xed5f('0x41')]=function(_0x1fdee9,_0x3374f4){var _0x17649c={'raw':!![],'where':{'id':_0x1fdee9[_0xed5f('0x42')]['id']}},_0x360fb7={};_0x360fb7[_0xed5f('0x2e')]=_[_0xed5f('0x30')](db['ZendeskField'][_0xed5f('0x2a')]);_0x360fb7['query']=_[_0xed5f('0x30')](_0x1fdee9['query']);_0x360fb7[_0xed5f('0x37')]=_[_0xed5f('0x31')](_0x360fb7[_0xed5f('0x2e')],_0x360fb7['query']);_0x17649c[_0xed5f('0x32')]=_[_0xed5f('0x31')](_0x360fb7[_0xed5f('0x2e')],qs[_0xed5f('0x33')](_0x1fdee9[_0xed5f('0x2f')][_0xed5f('0x33')]));_0x17649c[_0xed5f('0x32')]=_0x17649c[_0xed5f('0x32')][_0xed5f('0x43')]?_0x17649c[_0xed5f('0x32')]:_0x360fb7[_0xed5f('0x2e')];if(_0x1fdee9[_0xed5f('0x2f')][_0xed5f('0x3d')]){_0x17649c[_0xed5f('0x3e')]=[{'all':!![]}];}_0x17649c=_[_0xed5f('0x39')]({},_0x17649c,_0x1fdee9[_0xed5f('0x3b')]);return db[_0xed5f('0x29')]['find'](_0x17649c)[_0xed5f('0x22')](handleEntityNotFound(_0x3374f4,null))[_0xed5f('0x22')](respondWithResult(_0x3374f4,null))[_0xed5f('0x40')](handleError(_0x3374f4,null));};exports[_0xed5f('0x44')]=function(_0x5cf862,_0x2f6809){return db[_0xed5f('0x29')][_0xed5f('0x44')](_0x5cf862[_0xed5f('0x45')],{})['then'](respondWithResult(_0x2f6809,0xc9))[_0xed5f('0x40')](handleError(_0x2f6809,null));};exports[_0xed5f('0x46')]=function(_0x5c8473,_0x40a875){if(_0x5c8473['body']['id']){delete _0x5c8473['body']['id'];}return db[_0xed5f('0x29')]['find']({'where':{'id':_0x5c8473['params']['id']}})[_0xed5f('0x22')](handleEntityNotFound(_0x40a875,null))[_0xed5f('0x22')](saveUpdates(_0x5c8473[_0xed5f('0x45')],null))['then'](respondWithResult(_0x40a875,null))[_0xed5f('0x40')](handleError(_0x40a875,null));};exports[_0xed5f('0x21')]=function(_0x52407,_0x84b3c0){return db[_0xed5f('0x29')]['find']({'where':{'id':_0x52407[_0xed5f('0x42')]['id']}})[_0xed5f('0x22')](handleEntityNotFound(_0x84b3c0,null))[_0xed5f('0x22')](removeEntity(_0x84b3c0,null))[_0xed5f('0x40')](handleError(_0x84b3c0,null));};
\ No newline at end of file
index 50b3562..e9d8aa5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa332=['lodash','api','bluebird','request-promise','path','../../config/environment','./intZendeskField.attributes','exports','define','int_zendesk_fields','zendesk_unique_index','idField','FieldId'];(function(_0x282999,_0x4df660){var _0x30681f=function(_0x50e926){while(--_0x50e926){_0x282999['push'](_0x282999['shift']());}};_0x30681f(++_0x4df660);}(_0xa332,0x1ee));var _0x2a33=function(_0x36c329,_0x30809e){_0x36c329=_0x36c329-0x0;var _0x2a6f62=_0xa332[_0x36c329];return _0x2a6f62;};'use strict';var _=require(_0x2a33('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x2a33('0x1'));var moment=require('moment');var BPromise=require(_0x2a33('0x2'));var rp=require(_0x2a33('0x3'));var fs=require('fs');var path=require(_0x2a33('0x4'));var rimraf=require('rimraf');var config=require(_0x2a33('0x5'));var attributes=require(_0x2a33('0x6'));module[_0x2a33('0x7')]=function(_0x243576,_0x3a20c3){return _0x243576[_0x2a33('0x8')]('ZendeskField',attributes,{'tableName':_0x2a33('0x9'),'paranoid':![],'indexes':[{'name':_0x2a33('0xa'),'fields':[_0x2a33('0xb'),_0x2a33('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xabe6=['util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','exports','define','zendesk_unique_index','idField','lodash'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0xabe6,0x14f));var _0x6abe=function(_0x181548,_0x405bbe){_0x181548=_0x181548-0x0;var _0x538253=_0xabe6[_0x181548];return _0x538253;};'use strict';var _=require(_0x6abe('0x0'));var util=require(_0x6abe('0x1'));var logger=require(_0x6abe('0x2'))('api');var moment=require(_0x6abe('0x3'));var BPromise=require(_0x6abe('0x4'));var rp=require(_0x6abe('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6abe('0x6'));var config=require(_0x6abe('0x7'));var attributes=require('./intZendeskField.attributes');module[_0x6abe('0x8')]=function(_0x46a4ef,_0x3184ac){return _0x46a4ef[_0x6abe('0x9')]('ZendeskField',attributes,{'tableName':'int_zendesk_fields','paranoid':![],'indexes':[{'name':_0x6abe('0xa'),'fields':[_0x6abe('0xb'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index c331d30..d1326a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7027=['bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','request','then','info','ZendeskField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','catch','lodash','util','moment'];(function(_0x37c07d,_0xdbdb5f){var _0x10dadc=function(_0x2bafb7){while(--_0x2bafb7){_0x37c07d['push'](_0x37c07d['shift']());}};_0x10dadc(++_0xdbdb5f);}(_0x7027,0xd9));var _0x7702=function(_0x461765,_0x12b099){_0x461765=_0x461765-0x0;var _0x32cdc8=_0x7027[_0x461765];return _0x32cdc8;};'use strict';var _=require(_0x7702('0x0'));var util=require(_0x7702('0x1'));var moment=require(_0x7702('0x2'));var BPromise=require(_0x7702('0x3'));var rs=require(_0x7702('0x4'));var fs=require('fs');var Redis=require(_0x7702('0x5'));var db=require(_0x7702('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x7702('0x7'))('rpc');var config=require(_0x7702('0x8'));var jayson=require(_0x7702('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x238191,_0x32e951,_0x35d2da){return new BPromise(function(_0x39d26e,_0xdac9ea){return client[_0x7702('0xa')](_0x238191,_0x35d2da)[_0x7702('0xb')](function(_0x2eebb5){logger[_0x7702('0xc')](_0x7702('0xd'),_0x32e951,_0x7702('0xe'));logger[_0x7702('0xf')]('ZendeskField,\x20%s,\x20%s,\x20%s',_0x32e951,_0x7702('0xe'),JSON[_0x7702('0x10')](_0x2eebb5));if(_0x2eebb5[_0x7702('0x11')]){if(_0x2eebb5['error']['code']===0x1f4){logger['error'](_0x7702('0xd'),_0x32e951,_0x2eebb5[_0x7702('0x11')][_0x7702('0x12')]);return _0xdac9ea(_0x2eebb5['error'][_0x7702('0x12')]);}logger[_0x7702('0x11')]('ZendeskField,\x20%s,\x20%s',_0x32e951,_0x2eebb5[_0x7702('0x11')][_0x7702('0x12')]);return _0x39d26e(_0x2eebb5[_0x7702('0x11')]['message']);}else{logger[_0x7702('0xc')](_0x7702('0xd'),_0x32e951,_0x7702('0xe'));_0x39d26e(_0x2eebb5['result'][_0x7702('0x12')]);}})[_0x7702('0x13')](function(_0x32ff1b){logger[_0x7702('0x11')]('ZendeskField,\x20%s,\x20%s',_0x32e951,_0x32ff1b);_0xdac9ea(_0x32ff1b);});});}
\ No newline at end of file
+var _0xc0cc=['lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','then','request\x20sent','debug','error','code','ZendeskField,\x20%s,\x20%s','message','info','catch'];(function(_0x1a36a5,_0x746928){var _0x746243=function(_0x481966){while(--_0x481966){_0x1a36a5['push'](_0x1a36a5['shift']());}};_0x746243(++_0x746928);}(_0xc0cc,0x190));var _0xcc0c=function(_0x24a90a,_0x40e57e){_0x24a90a=_0x24a90a-0x0;var _0x1fb916=_0xc0cc[_0x24a90a];return _0x1fb916;};'use strict';var _=require(_0xcc0c('0x0'));var util=require('util');var moment=require(_0xcc0c('0x1'));var BPromise=require(_0xcc0c('0x2'));var rs=require(_0xcc0c('0x3'));var fs=require('fs');var Redis=require(_0xcc0c('0x4'));var db=require(_0xcc0c('0x5'))['db'];var utils=require(_0xcc0c('0x6'));var logger=require('../../config/logger')(_0xcc0c('0x7'));var config=require(_0xcc0c('0x8'));var jayson=require(_0xcc0c('0x9'));var client=jayson['client'][_0xcc0c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1fb8f8,_0x32be23,_0x43225d){return new BPromise(function(_0x3445bb,_0x163f7e){return client['request'](_0x1fb8f8,_0x43225d)[_0xcc0c('0xb')](function(_0x4a7d7b){logger['info']('ZendeskField,\x20%s,\x20%s',_0x32be23,_0xcc0c('0xc'));logger[_0xcc0c('0xd')]('ZendeskField,\x20%s,\x20%s,\x20%s',_0x32be23,'request\x20sent',JSON['stringify'](_0x4a7d7b));if(_0x4a7d7b['error']){if(_0x4a7d7b[_0xcc0c('0xe')][_0xcc0c('0xf')]===0x1f4){logger[_0xcc0c('0xe')](_0xcc0c('0x10'),_0x32be23,_0x4a7d7b[_0xcc0c('0xe')][_0xcc0c('0x11')]);return _0x163f7e(_0x4a7d7b[_0xcc0c('0xe')][_0xcc0c('0x11')]);}logger[_0xcc0c('0xe')]('ZendeskField,\x20%s,\x20%s',_0x32be23,_0x4a7d7b[_0xcc0c('0xe')][_0xcc0c('0x11')]);return _0x3445bb(_0x4a7d7b['error'][_0xcc0c('0x11')]);}else{logger[_0xcc0c('0x12')](_0xcc0c('0x10'),_0x32be23,_0xcc0c('0xc'));_0x3445bb(_0x4a7d7b['result'][_0xcc0c('0x11')]);}})[_0xcc0c('0x13')](function(_0x15621a){logger[_0xcc0c('0xe')](_0xcc0c('0x10'),_0x32be23,_0x15621a);_0x163f7e(_0x15621a);});});}
\ No newline at end of file
index 2ae57c7..ee839a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x622d=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoAccount.controller','get','index','show','/:id/configurations','isAuthenticated','getFields','post','create','update','/:id','exports','util','path','connect-timeout','express'];(function(_0x28c47a,_0x2c7508){var _0x423385=function(_0x420182){while(--_0x420182){_0x28c47a['push'](_0x28c47a['shift']());}};_0x423385(++_0x2c7508);}(_0x622d,0x18b));var _0xd622=function(_0x259735,_0x4cf3ae){_0x259735=_0x259735-0x0;var _0x3848df=_0x622d[_0x259735];return _0x3848df;};'use strict';var multer=require('multer');var util=require(_0xd622('0x0'));var path=require(_0xd622('0x1'));var timeout=require(_0xd622('0x2'));var express=require(_0xd622('0x3'));var router=express[_0xd622('0x4')]();var fs_extra=require(_0xd622('0x5'));var auth=require(_0xd622('0x6'));var interaction=require(_0xd622('0x7'));var config=require(_0xd622('0x8'));var controller=require(_0xd622('0x9'));router[_0xd622('0xa')]('/',auth['isAuthenticated'](),controller[_0xd622('0xb')]);router[_0xd622('0xa')]('/:id',auth['isAuthenticated'](),controller[_0xd622('0xc')]);router[_0xd622('0xa')](_0xd622('0xd'),auth[_0xd622('0xe')](),controller['getConfigurations']);router['get']('/:id/fields',auth[_0xd622('0xe')](),controller[_0xd622('0xf')]);router[_0xd622('0x10')]('/',auth[_0xd622('0xe')](),controller[_0xd622('0x11')]);router[_0xd622('0x10')](_0xd622('0xd'),auth[_0xd622('0xe')](),controller['addConfiguration']);router['put']('/:id',auth[_0xd622('0xe')](),controller[_0xd622('0x12')]);router['delete'](_0xd622('0x13'),auth[_0xd622('0xe')](),controller['destroy']);module[_0xd622('0x14')]=router;
\ No newline at end of file
+var _0xc210=['./intZohoAccount.controller','get','isAuthenticated','index','/:id','/:id/configurations','getConfigurations','/:id/fields','getFields','create','addConfiguration','put','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x45174e,_0x4bc311){var _0xea9b8a=function(_0x535141){while(--_0x535141){_0x45174e['push'](_0x45174e['shift']());}};_0xea9b8a(++_0x4bc311);}(_0xc210,0xfe));var _0x0c21=function(_0x5d2d76,_0x47c4f6){_0x5d2d76=_0x5d2d76-0x0;var _0x56c9fe=_0xc210[_0x5d2d76];return _0x56c9fe;};'use strict';var multer=require(_0x0c21('0x0'));var util=require(_0x0c21('0x1'));var path=require(_0x0c21('0x2'));var timeout=require(_0x0c21('0x3'));var express=require(_0x0c21('0x4'));var router=express[_0x0c21('0x5')]();var fs_extra=require(_0x0c21('0x6'));var auth=require(_0x0c21('0x7'));var interaction=require(_0x0c21('0x8'));var config=require(_0x0c21('0x9'));var controller=require(_0x0c21('0xa'));router[_0x0c21('0xb')]('/',auth[_0x0c21('0xc')](),controller[_0x0c21('0xd')]);router['get'](_0x0c21('0xe'),auth[_0x0c21('0xc')](),controller['show']);router[_0x0c21('0xb')](_0x0c21('0xf'),auth[_0x0c21('0xc')](),controller[_0x0c21('0x10')]);router['get'](_0x0c21('0x11'),auth[_0x0c21('0xc')](),controller[_0x0c21('0x12')]);router['post']('/',auth[_0x0c21('0xc')](),controller[_0x0c21('0x13')]);router['post'](_0x0c21('0xf'),auth[_0x0c21('0xc')](),controller[_0x0c21('0x14')]);router[_0x0c21('0x15')](_0x0c21('0xe'),auth[_0x0c21('0xc')](),controller['update']);router[_0x0c21('0x16')]('/:id',auth[_0x0c21('0xc')](),controller[_0x0c21('0x17')]);module['exports']=router;
\ No newline at end of file
index 4a77477..b678d75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5636=['sequelize','exports','STRING'];(function(_0x4c9553,_0x18b6cd){var _0x169e6f=function(_0x784a22){while(--_0x784a22){_0x4c9553['push'](_0x4c9553['shift']());}};_0x169e6f(++_0x18b6cd);}(_0x5636,0x102));var _0x6563=function(_0x447113,_0x2f6cd7){_0x447113=_0x447113-0x0;var _0x1bc256=_0x5636[_0x447113];return _0x1bc256;};'use strict';var Sequelize=require(_0x6563('0x0'));module[_0x6563('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize['STRING']},'zone':{'type':Sequelize[_0x6563('0x2')]},'clientId':{'type':Sequelize[_0x6563('0x2')]},'clientSecret':{'type':Sequelize[_0x6563('0x2')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'code':{'type':Sequelize[_0x6563('0x2')]},'refreshToken':{'type':Sequelize[_0x6563('0x2')]}};
\ No newline at end of file
+var _0x34e8=['sequelize','exports','STRING'];(function(_0x381372,_0xf0a5a){var _0x4e959a=function(_0x25a897){while(--_0x25a897){_0x381372['push'](_0x381372['shift']());}};_0x4e959a(++_0xf0a5a);}(_0x34e8,0x12c));var _0x834e=function(_0x4c5f04,_0x109ff5){_0x4c5f04=_0x4c5f04-0x0;var _0x32b0ae=_0x34e8[_0x4c5f04];return _0x32b0ae;};'use strict';var Sequelize=require(_0x834e('0x0'));module[_0x834e('0x1')]={'name':{'type':Sequelize[_0x834e('0x2')]},'description':{'type':Sequelize[_0x834e('0x2')]},'host':{'type':Sequelize['STRING']},'zone':{'type':Sequelize[_0x834e('0x2')]},'clientId':{'type':Sequelize[_0x834e('0x2')]},'clientSecret':{'type':Sequelize[_0x834e('0x2')]},'serverUrl':{'type':Sequelize[_0x834e('0x2')],'allowNull':![]},'code':{'type':Sequelize[_0x834e('0x2')]},'refreshToken':{'type':Sequelize[_0x834e('0x2')]}};
\ No newline at end of file
index adda399..6ea8885 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4dc=['message','Owner','Subject','Description','WhoId','Call_Duration','Call_Result','Call_Start_Time','Call_Type','remove','includes','system_mandatory','push','display_label','custom_field','picklist','pick_list_values','test','statusCode','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../components/integrations/configuration','sendStatus','status','end','offset','limit','undefined','count','Content-Range','json','reject','destroy','then','error','name','send','index','map','rawAttributes','fieldName','key','query','intersection','attributes','model','fields','length','nolimit','order','sort','where','filters','filter','merge','type','VIRTUAL','options','ZohoAccount','includeAll','include','rows','catch','show','keys','create','body','find','params','findOne','ZohoConfiguration','pick','getConfigurations','hasOwnProperty','addConfiguration','AccountId','getSubjects','channel','getDescriptions','ZohoField','Subjects','Descriptions','zone','https://accounts.zoho.com','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','/oauth/v2/token','clientId','refresh_token','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','host','clientSecret','serverUrl','code','refreshToken','zoho.eu','com','slice','substring','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','format','response'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xd4dc,0x198));var _0xcd4d=function(_0x45d3f0,_0x4be53f){_0x45d3f0=_0x45d3f0-0x0;var _0x314b79=_0xd4dc[_0x45d3f0];return _0x314b79;};'use strict';var emlformat=require(_0xcd4d('0x0'));var rimraf=require(_0xcd4d('0x1'));var zipdir=require(_0xcd4d('0x2'));var jsonpatch=require(_0xcd4d('0x3'));var rp=require(_0xcd4d('0x4'));var moment=require(_0xcd4d('0x5'));var BPromise=require(_0xcd4d('0x6'));var Mustache=require(_0xcd4d('0x7'));var util=require(_0xcd4d('0x8'));var path=require(_0xcd4d('0x9'));var sox=require('sox');var csv=require(_0xcd4d('0xa'));var ejs=require(_0xcd4d('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xcd4d('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xcd4d('0xd'));var toCsv=require('to-csv');var querystring=require(_0xcd4d('0xe'));var Papa=require('papaparse');var Redis=require(_0xcd4d('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xcd4d('0x10'));var as=require(_0xcd4d('0x11'));var hardwareService=require(_0xcd4d('0x12'));var logger=require(_0xcd4d('0x13'))(_0xcd4d('0x14'));var utils=require(_0xcd4d('0x15'));var config=require(_0xcd4d('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require(_0xcd4d('0x17'));function respondWithStatusCode(_0x52074b,_0x502282){_0x502282=_0x502282||0xcc;return function(_0x2b347d){if(_0x2b347d){return _0x52074b[_0xcd4d('0x18')](_0x502282);}return _0x52074b[_0xcd4d('0x19')](_0x502282)[_0xcd4d('0x1a')]();};}function respondWithResult(_0x55c5f0,_0x594506){_0x594506=_0x594506||0xc8;return function(_0x1e431f){if(_0x1e431f){return _0x55c5f0[_0xcd4d('0x19')](_0x594506)['json'](_0x1e431f);}};}function respondWithFilteredResult(_0x234228,_0x244c42){return function(_0x1fb1ec){if(_0x1fb1ec){var _0x5e5e56=typeof _0x244c42[_0xcd4d('0x1b')]==='undefined'&&typeof _0x244c42[_0xcd4d('0x1c')]===_0xcd4d('0x1d');var _0x5a8664=_0x1fb1ec[_0xcd4d('0x1e')];var _0x6e86af=_0x5e5e56?0x0:_0x244c42[_0xcd4d('0x1b')];var _0x3856c3=_0x5e5e56?_0x1fb1ec[_0xcd4d('0x1e')]:_0x244c42[_0xcd4d('0x1b')]+_0x244c42['limit'];var _0x1887d8;if(_0x3856c3>=_0x5a8664){_0x3856c3=_0x5a8664;_0x1887d8=0xc8;}else{_0x1887d8=0xce;}_0x234228[_0xcd4d('0x19')](_0x1887d8);return _0x234228['set'](_0xcd4d('0x1f'),_0x6e86af+'-'+_0x3856c3+'/'+_0x5a8664)[_0xcd4d('0x20')](_0x1fb1ec);}return null;};}function patchUpdates(_0x258621){return function(_0x428033){try{jsonpatch['apply'](_0x428033,_0x258621,!![]);}catch(_0xc4b869){return BPromise[_0xcd4d('0x21')](_0xc4b869);}return _0x428033['save']();};}function saveUpdates(_0x45c139,_0x4600e4){return function(_0x32e393){if(_0x32e393){return _0x32e393['update'](_0x45c139)['then'](function(_0x16a8d3){return _0x16a8d3;});}return null;};}function removeEntity(_0x23b109,_0x2055b9){return function(_0x5c8730){if(_0x5c8730){return _0x5c8730[_0xcd4d('0x22')]()[_0xcd4d('0x23')](function(){_0x23b109[_0xcd4d('0x19')](0xcc)[_0xcd4d('0x1a')]();});}};}function handleEntityNotFound(_0x4f28a6,_0x180097){return function(_0x28e8aa){if(!_0x28e8aa){_0x4f28a6[_0xcd4d('0x18')](0x194);}return _0x28e8aa;};}function handleError(_0x4062d4,_0x52433f){_0x52433f=_0x52433f||0x1f4;return function(_0x37cd4e){logger[_0xcd4d('0x24')](_0x37cd4e['stack']);if(_0x37cd4e['name']){delete _0x37cd4e[_0xcd4d('0x25')];}_0x4062d4['status'](_0x52433f)[_0xcd4d('0x26')](_0x37cd4e);};}exports[_0xcd4d('0x27')]=function(_0x41586e,_0x5b9ce3){var _0x5f1098={},_0x23aac7={},_0x2b4e3c={'count':0x0,'rows':[]};var _0x288a54=_[_0xcd4d('0x28')](db['ZohoAccount'][_0xcd4d('0x29')],function(_0x50a564){return{'name':_0x50a564[_0xcd4d('0x2a')],'type':_0x50a564['type'][_0xcd4d('0x2b')]};});_0x23aac7['model']=_[_0xcd4d('0x28')](_0x288a54,_0xcd4d('0x25'));_0x23aac7[_0xcd4d('0x2c')]=_['keys'](_0x41586e[_0xcd4d('0x2c')]);_0x23aac7['filters']=_[_0xcd4d('0x2d')](_0x23aac7['model'],_0x23aac7[_0xcd4d('0x2c')]);_0x5f1098[_0xcd4d('0x2e')]=_[_0xcd4d('0x2d')](_0x23aac7[_0xcd4d('0x2f')],qs[_0xcd4d('0x30')](_0x41586e['query']['fields']));_0x5f1098[_0xcd4d('0x2e')]=_0x5f1098[_0xcd4d('0x2e')][_0xcd4d('0x31')]?_0x5f1098[_0xcd4d('0x2e')]:_0x23aac7[_0xcd4d('0x2f')];if(!_0x41586e['query']['hasOwnProperty'](_0xcd4d('0x32'))){_0x5f1098['limit']=qs[_0xcd4d('0x1c')](_0x41586e[_0xcd4d('0x2c')][_0xcd4d('0x1c')]);_0x5f1098[_0xcd4d('0x1b')]=qs[_0xcd4d('0x1b')](_0x41586e['query'][_0xcd4d('0x1b')]);}_0x5f1098[_0xcd4d('0x33')]=qs[_0xcd4d('0x34')](_0x41586e[_0xcd4d('0x2c')][_0xcd4d('0x34')]);_0x5f1098[_0xcd4d('0x35')]=qs[_0xcd4d('0x36')](_['pick'](_0x41586e[_0xcd4d('0x2c')],_0x23aac7[_0xcd4d('0x36')]),_0x288a54);if(_0x41586e[_0xcd4d('0x2c')][_0xcd4d('0x37')]){_0x5f1098['where']=_[_0xcd4d('0x38')](_0x5f1098[_0xcd4d('0x35')],{'$or':_['map'](_0x288a54,function(_0x52269c){if(_0x52269c[_0xcd4d('0x39')]!==_0xcd4d('0x3a')){var _0x49c2b8={};_0x49c2b8[_0x52269c[_0xcd4d('0x25')]]={'$like':'%'+_0x41586e[_0xcd4d('0x2c')][_0xcd4d('0x37')]+'%'};return _0x49c2b8;}})});}_0x5f1098=_[_0xcd4d('0x38')]({},_0x5f1098,_0x41586e[_0xcd4d('0x3b')]);var _0x30685d={'where':_0x5f1098[_0xcd4d('0x35')]};return db[_0xcd4d('0x3c')][_0xcd4d('0x1e')](_0x30685d)[_0xcd4d('0x23')](function(_0x5af591){_0x2b4e3c['count']=_0x5af591;if(_0x41586e[_0xcd4d('0x2c')][_0xcd4d('0x3d')]){_0x5f1098[_0xcd4d('0x3e')]=[{'all':!![]}];}return db[_0xcd4d('0x3c')]['findAll'](_0x5f1098);})[_0xcd4d('0x23')](function(_0x50383a){_0x2b4e3c[_0xcd4d('0x3f')]=_0x50383a;return _0x2b4e3c;})['then'](respondWithFilteredResult(_0x5b9ce3,_0x5f1098))[_0xcd4d('0x40')](handleError(_0x5b9ce3,null));};exports[_0xcd4d('0x41')]=function(_0x52a5dd,_0xd5e2df){var _0x4db0ed={'raw':![],'where':{'id':_0x52a5dd['params']['id']}},_0x402a83={};_0x402a83[_0xcd4d('0x2f')]=_[_0xcd4d('0x42')](db[_0xcd4d('0x3c')][_0xcd4d('0x29')]);_0x402a83['query']=_[_0xcd4d('0x42')](_0x52a5dd[_0xcd4d('0x2c')]);_0x402a83[_0xcd4d('0x36')]=_['intersection'](_0x402a83[_0xcd4d('0x2f')],_0x402a83[_0xcd4d('0x2c')]);_0x4db0ed[_0xcd4d('0x2e')]=_[_0xcd4d('0x2d')](_0x402a83[_0xcd4d('0x2f')],qs[_0xcd4d('0x30')](_0x52a5dd[_0xcd4d('0x2c')][_0xcd4d('0x30')]));_0x4db0ed[_0xcd4d('0x2e')]=_0x4db0ed['attributes'][_0xcd4d('0x31')]?_0x4db0ed[_0xcd4d('0x2e')]:_0x402a83[_0xcd4d('0x2f')];if(_0x52a5dd[_0xcd4d('0x2c')][_0xcd4d('0x3d')]){_0x4db0ed[_0xcd4d('0x3e')]=[{'all':!![]}];}_0x4db0ed=_[_0xcd4d('0x38')]({},_0x4db0ed,_0x52a5dd[_0xcd4d('0x3b')]);return db[_0xcd4d('0x3c')]['find'](_0x4db0ed)[_0xcd4d('0x23')](handleEntityNotFound(_0xd5e2df,null))[_0xcd4d('0x23')](respondWithResult(_0xd5e2df,null))[_0xcd4d('0x40')](handleError(_0xd5e2df,null));};exports[_0xcd4d('0x43')]=function(_0x1da9cf,_0xcc384a){return db[_0xcd4d('0x3c')][_0xcd4d('0x43')](_0x1da9cf[_0xcd4d('0x44')],{})['then'](respondWithResult(_0xcc384a,0xc9))[_0xcd4d('0x40')](handleError(_0xcc384a,null));};exports['update']=function(_0x2dac4b,_0xc41629){if(_0x2dac4b[_0xcd4d('0x44')]['id']){delete _0x2dac4b[_0xcd4d('0x44')]['id'];}return db[_0xcd4d('0x3c')][_0xcd4d('0x45')]({'where':{'id':_0x2dac4b[_0xcd4d('0x46')]['id']}})[_0xcd4d('0x23')](handleEntityNotFound(_0xc41629,null))[_0xcd4d('0x23')](saveUpdates(_0x2dac4b['body'],null))[_0xcd4d('0x23')](respondWithResult(_0xc41629,null))[_0xcd4d('0x40')](handleError(_0xc41629,null));};exports[_0xcd4d('0x22')]=function(_0x35987d,_0x19b0da){return db[_0xcd4d('0x3c')][_0xcd4d('0x45')]({'where':{'id':_0x35987d[_0xcd4d('0x46')]['id']}})[_0xcd4d('0x23')](handleEntityNotFound(_0x19b0da,null))['then'](removeEntity(_0x19b0da,null))[_0xcd4d('0x40')](handleError(_0x19b0da,null));};exports['getConfigurations']=function(_0x270261,_0x4e5459,_0x1266b5){var _0x1e4b56={};var _0xd683f0={};var _0x2bdd2b;var _0x53fbbd;return db[_0xcd4d('0x3c')][_0xcd4d('0x47')]({'where':{'id':_0x270261[_0xcd4d('0x46')]['id']}})[_0xcd4d('0x23')](handleEntityNotFound(_0x4e5459,null))[_0xcd4d('0x23')](function(_0x15f520){if(_0x15f520){_0x2bdd2b=_0x15f520;_0xd683f0['model']=_[_0xcd4d('0x42')](db[_0xcd4d('0x48')][_0xcd4d('0x29')]);_0xd683f0[_0xcd4d('0x2c')]=_[_0xcd4d('0x42')](_0x270261[_0xcd4d('0x2c')]);_0xd683f0[_0xcd4d('0x36')]=_['intersection'](_0xd683f0[_0xcd4d('0x2f')],_0xd683f0[_0xcd4d('0x2c')]);_0x1e4b56['attributes']=_[_0xcd4d('0x2d')](_0xd683f0[_0xcd4d('0x2f')],qs[_0xcd4d('0x30')](_0x270261['query'][_0xcd4d('0x30')]));_0x1e4b56[_0xcd4d('0x2e')]=_0x1e4b56['attributes']['length']?_0x1e4b56[_0xcd4d('0x2e')]:_0xd683f0[_0xcd4d('0x2f')];_0x1e4b56[_0xcd4d('0x33')]=qs['sort'](_0x270261[_0xcd4d('0x2c')][_0xcd4d('0x34')]);_0x1e4b56[_0xcd4d('0x35')]=qs[_0xcd4d('0x36')](_[_0xcd4d('0x49')](_0x270261['query'],_0xd683f0[_0xcd4d('0x36')]));if(_0x270261[_0xcd4d('0x2c')]['filter']){_0x1e4b56[_0xcd4d('0x35')]=_[_0xcd4d('0x38')](_0x1e4b56['where'],{'$or':_[_0xcd4d('0x28')](_0x1e4b56['attributes'],function(_0x190645){var _0x4642cd={};_0x4642cd[_0x190645]={'$like':'%'+_0x270261['query'][_0xcd4d('0x37')]+'%'};return _0x4642cd;})});}_0x1e4b56=_['merge']({},_0x1e4b56,_0x270261[_0xcd4d('0x3b')]);return _0x2bdd2b[_0xcd4d('0x4a')](_0x1e4b56);}})[_0xcd4d('0x23')](function(_0x31a994){if(_0x31a994){_0x53fbbd=_0x31a994['length'];if(!_0x270261[_0xcd4d('0x2c')][_0xcd4d('0x4b')]('nolimit')){_0x1e4b56[_0xcd4d('0x1c')]=qs['limit'](_0x270261['query'][_0xcd4d('0x1c')]);_0x1e4b56['offset']=qs[_0xcd4d('0x1b')](_0x270261['query']['offset']);}return _0x2bdd2b[_0xcd4d('0x4a')](_0x1e4b56);}})[_0xcd4d('0x23')](function(_0x1f58f6){if(_0x1f58f6){return _0x1f58f6?{'count':_0x53fbbd,'rows':_0x1f58f6}:null;}})[_0xcd4d('0x23')](respondWithResult(_0x4e5459,null))[_0xcd4d('0x40')](handleError(_0x4e5459,null));};exports[_0xcd4d('0x4c')]=function(_0x15e1af,_0x13cbed,_0x2b7a5c){if(_0x15e1af[_0xcd4d('0x44')]['id']){delete _0x15e1af[_0xcd4d('0x44')]['id'];}return db[_0xcd4d('0x3c')][_0xcd4d('0x47')]({'where':{'id':_0x15e1af['params']['id']}})[_0xcd4d('0x23')](handleEntityNotFound(_0x13cbed,null))[_0xcd4d('0x23')](function(_0x46539d){if(_0x46539d){_0x15e1af['body'][_0xcd4d('0x4d')]=_0x46539d['id'];_0x15e1af[_0xcd4d('0x44')]['Subjects']=integrations[_0xcd4d('0x4e')](_0x15e1af['body'][_0xcd4d('0x4f')],_0x15e1af[_0xcd4d('0x44')][_0xcd4d('0x39')]);_0x15e1af[_0xcd4d('0x44')]['Descriptions']=integrations[_0xcd4d('0x50')](_0x15e1af['body'][_0xcd4d('0x4f')],_0x15e1af[_0xcd4d('0x44')][_0xcd4d('0x39')]);return db[_0xcd4d('0x48')][_0xcd4d('0x43')](_0x15e1af['body'],{'include':[{'model':db[_0xcd4d('0x51')],'as':_0xcd4d('0x52')},{'model':db['ZohoField'],'as':_0xcd4d('0x53')}]});}return null;})[_0xcd4d('0x23')](respondWithResult(_0x13cbed,null))[_0xcd4d('0x40')](handleError(_0x13cbed,null));};function getAccessToken(_0x18fa37){return new Promise(function(_0x1576c3,_0x132661){var _0x378229;switch(_0x18fa37[_0xcd4d('0x54')]){case'US':_0x378229=_0xcd4d('0x55');break;case'AU':_0x378229='https://accounts.zoho.com.au';break;case'EU':_0x378229=_0xcd4d('0x56');break;case'IN':_0x378229=_0xcd4d('0x57');break;case'CN':_0x378229=_0xcd4d('0x58');break;default:_0x378229=_0xcd4d('0x56');break;}var _0x4a8966={'method':'POST','uri':_0x378229+_0xcd4d('0x59'),'qs':{'refresh_token':_0x18fa37['refreshToken'],'client_id':_0x18fa37[_0xcd4d('0x5a')],'client_secret':_0x18fa37['clientSecret'],'grant_type':_0xcd4d('0x5b')},'json':!![]};return rp(_0x4a8966)[_0xcd4d('0x23')](function(_0x59b4cd){if(_0x59b4cd[_0xcd4d('0x5c')]){_0x1576c3(_0x59b4cd[_0xcd4d('0x5c')]);}else{_0x132661(_0xcd4d('0x5d'));}})[_0xcd4d('0x40')](function(_0xec2ae1){_0x132661(_0xec2ae1);});});}exports[_0xcd4d('0x5e')]=function(_0x258e07,_0x3e70bb,_0x550108){var _0xbd2980,_0x7316aa,_0x53f7c9,_0x3717ca,_0x47d5f8;return db[_0xcd4d('0x3c')][_0xcd4d('0x47')]({'where':{'id':_0x258e07[_0xcd4d('0x46')]['id']},'attributes':['id',_0xcd4d('0x5f'),_0xcd4d('0x54'),'clientId',_0xcd4d('0x60'),_0xcd4d('0x61'),_0xcd4d('0x62'),_0xcd4d('0x63')]})[_0xcd4d('0x23')](handleEntityNotFound(_0x3e70bb,null))['then'](function(_0x5f02d4){_0x47d5f8=_0x5f02d4;_0xbd2980=_0x47d5f8[_0xcd4d('0x5f')];_0x7316aa=_0xbd2980===_0xcd4d('0x64')?'eu':_0xcd4d('0x65');_0x53f7c9=_0x47d5f8[_0xcd4d('0x61')];var _0x1169ad=_0x53f7c9[_0xcd4d('0x66')](-0x1);if(_0x1169ad==='/'||_0x1169ad==='\x5c'||_0x1169ad===':'){_0x53f7c9=_0x53f7c9[_0xcd4d('0x67')](0x0,_0x53f7c9['lastIndexOf'](_0x1169ad));}if(!_0x47d5f8[_0xcd4d('0x63')]){throw new Error(_0xcd4d('0x68'));}return getAccessToken(_0x47d5f8);})['then'](function(_0x271b71){if(_0x271b71){return rp({'method':_0xcd4d('0x69'),'uri':util[_0xcd4d('0x6a')]('https://www.zohoapis.%s/crm/v2/settings/fields',_0x7316aa),'qs':{'module':'Calls'},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x271b71},'json':!![]});}})[_0xcd4d('0x23')](function(_0x3cd5f4){if(_0x3cd5f4){if(_0x3cd5f4[_0xcd4d('0x6b')]&&_0x3cd5f4['response']['error']){throw new Error(_0x3cd5f4[_0xcd4d('0x6b')][_0xcd4d('0x24')][_0xcd4d('0x6c')]);}var _0x1f1d90=[];var _0x2424db=[];var _0x5f0687=[_0xcd4d('0x6d'),_0xcd4d('0x6e'),_0xcd4d('0x6f'),_0xcd4d('0x70'),_0xcd4d('0x71'),_0xcd4d('0x72'),_0xcd4d('0x73'),_0xcd4d('0x74')];_0x2424db=_[_0xcd4d('0x75')](_0x3cd5f4['fields'],function(_0x4a5939){return _0x5f0687[_0xcd4d('0x76')](_0x4a5939['api_name']);});for(var _0x4ae1c4=0x0;_0x4ae1c4<_0x2424db[_0xcd4d('0x31')];_0x4ae1c4++){if(_0x2424db[_0x4ae1c4][_0xcd4d('0x77')]===![]){_0x1f1d90[_0xcd4d('0x78')]({'id':_0x2424db[_0x4ae1c4]['id'],'name':_0x2424db[_0x4ae1c4][_0xcd4d('0x79')],'custom':_0x2424db[_0x4ae1c4][_0xcd4d('0x7a')],'options':_0x2424db[_0x4ae1c4]['data_type']===_0xcd4d('0x7b')&&_0x2424db[_0x4ae1c4][_0xcd4d('0x7c')][_0xcd4d('0x31')]>-0x1?_['map'](_0x2424db[_0x4ae1c4][_0xcd4d('0x7c')],function(_0x51cba9){return{'name':_0x51cba9,'value':_0x51cba9};}):[]});}}return{'count':_0x1f1d90['length'],'rows':_0x1f1d90};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithResult(_0x3e70bb,null))[_0xcd4d('0x40')](function(_0x540a67){var _0x2e8b07=_0x258e07[_0xcd4d('0x2c')][_0xcd4d('0x7d')]?0x1f4:_0x540a67[_0xcd4d('0x7e')]||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s','getFields',_0x2e8b07,JSON[_0xcd4d('0x7f')](_0x540a67));delete _0x540a67['name'];if(_0x2e8b07===0x191){_0x2e8b07=0x190;}_0x3e70bb[_0xcd4d('0x19')](_0x2e8b07)[_0xcd4d('0x26')](_0x258e07['query'][_0xcd4d('0x7d')]?{'message':_0xcd4d('0x80'),'statusCode':_0x540a67[_0xcd4d('0x7e')]}:_0x540a67);});};
\ No newline at end of file
+var _0xc42f=['sendStatus','status','end','offset','undefined','count','limit','Content-Range','json','apply','reject','update','then','destroy','error','name','send','index','map','ZohoAccount','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','sort','pick','filter','merge','where','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','fields','find','body','getConfigurations','findOne','ZohoConfiguration','order','Subjects','getSubjects','channel','Descriptions','getDescriptions','ZohoField','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','refreshToken','clientSecret','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','host','clientId','zoho.eu','serverUrl','slice','substring','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','format','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','Zoho-oauthtoken\x20','response','Owner','Subject','Description','WhoId','Call_Result','Call_Type','remove','includes','api_name','push','display_label','data_type','pick_list_values','test','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','statusCode','eml-format','fast-json-patch','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration'];(function(_0x3799b2,_0x3728da){var _0x1d7571=function(_0x4993b3){while(--_0x4993b3){_0x3799b2['push'](_0x3799b2['shift']());}};_0x1d7571(++_0x3728da);}(_0xc42f,0x65));var _0xfc42=function(_0x311012,_0x1e30b0){_0x311012=_0x311012-0x0;var _0x176a8b=_0xc42f[_0x311012];return _0x176a8b;};'use strict';var emlformat=require(_0xfc42('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xfc42('0x1'));var rp=require('request-promise');var moment=require(_0xfc42('0x2'));var BPromise=require(_0xfc42('0x3'));var Mustache=require(_0xfc42('0x4'));var util=require('util');var path=require(_0xfc42('0x5'));var sox=require(_0xfc42('0x6'));var csv=require('to-csv');var ejs=require(_0xfc42('0x7'));var fs=require('fs');var fs_extra=require(_0xfc42('0x8'));var _=require(_0xfc42('0x9'));var squel=require(_0xfc42('0xa'));var crypto=require('crypto');var jsforce=require(_0xfc42('0xb'));var deskjs=require(_0xfc42('0xc'));var toCsv=require(_0xfc42('0xd'));var querystring=require('querystring');var Papa=require(_0xfc42('0xe'));var Redis=require(_0xfc42('0xf'));var authService=require(_0xfc42('0x10'));var qs=require(_0xfc42('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xfc42('0x12'));var logger=require('../../config/logger')(_0xfc42('0x13'));var utils=require(_0xfc42('0x14'));var config=require(_0xfc42('0x15'));var licenseUtil=require(_0xfc42('0x16'));var db=require(_0xfc42('0x17'))['db'];var integrations=require(_0xfc42('0x18'));function respondWithStatusCode(_0x338aca,_0x2b909d){_0x2b909d=_0x2b909d||0xcc;return function(_0xc8560){if(_0xc8560){return _0x338aca[_0xfc42('0x19')](_0x2b909d);}return _0x338aca[_0xfc42('0x1a')](_0x2b909d)[_0xfc42('0x1b')]();};}function respondWithResult(_0x5aa6bd,_0x45ec6e){_0x45ec6e=_0x45ec6e||0xc8;return function(_0x27c2a5){if(_0x27c2a5){return _0x5aa6bd['status'](_0x45ec6e)['json'](_0x27c2a5);}};}function respondWithFilteredResult(_0x512bc3,_0x48dc42){return function(_0x58046f){if(_0x58046f){var _0x4cbc54=typeof _0x48dc42[_0xfc42('0x1c')]===_0xfc42('0x1d')&&typeof _0x48dc42['limit']===_0xfc42('0x1d');var _0x23764f=_0x58046f[_0xfc42('0x1e')];var _0xd06e0e=_0x4cbc54?0x0:_0x48dc42[_0xfc42('0x1c')];var _0x14ea84=_0x4cbc54?_0x58046f['count']:_0x48dc42[_0xfc42('0x1c')]+_0x48dc42[_0xfc42('0x1f')];var _0x362fca;if(_0x14ea84>=_0x23764f){_0x14ea84=_0x23764f;_0x362fca=0xc8;}else{_0x362fca=0xce;}_0x512bc3[_0xfc42('0x1a')](_0x362fca);return _0x512bc3['set'](_0xfc42('0x20'),_0xd06e0e+'-'+_0x14ea84+'/'+_0x23764f)[_0xfc42('0x21')](_0x58046f);}return null;};}function patchUpdates(_0x544bf1){return function(_0x5f0d0e){try{jsonpatch[_0xfc42('0x22')](_0x5f0d0e,_0x544bf1,!![]);}catch(_0x194a62){return BPromise[_0xfc42('0x23')](_0x194a62);}return _0x5f0d0e['save']();};}function saveUpdates(_0x281f09,_0x369095){return function(_0x1b8a1d){if(_0x1b8a1d){return _0x1b8a1d[_0xfc42('0x24')](_0x281f09)[_0xfc42('0x25')](function(_0x3c2f98){return _0x3c2f98;});}return null;};}function removeEntity(_0x1395b0,_0x2d1d32){return function(_0x488fc7){if(_0x488fc7){return _0x488fc7[_0xfc42('0x26')]()[_0xfc42('0x25')](function(){_0x1395b0[_0xfc42('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x319ce0,_0x53751c){return function(_0x2a9900){if(!_0x2a9900){_0x319ce0[_0xfc42('0x19')](0x194);}return _0x2a9900;};}function handleError(_0x26b0a7,_0x3fc2f6){_0x3fc2f6=_0x3fc2f6||0x1f4;return function(_0x124203){logger[_0xfc42('0x27')](_0x124203['stack']);if(_0x124203['name']){delete _0x124203[_0xfc42('0x28')];}_0x26b0a7[_0xfc42('0x1a')](_0x3fc2f6)[_0xfc42('0x29')](_0x124203);};}exports[_0xfc42('0x2a')]=function(_0x1e320d,_0x55c730){var _0x5c0278={},_0x10c769={},_0x77f286={'count':0x0,'rows':[]};var _0x134f42=_[_0xfc42('0x2b')](db[_0xfc42('0x2c')][_0xfc42('0x2d')],function(_0x119dff){return{'name':_0x119dff[_0xfc42('0x2e')],'type':_0x119dff['type'][_0xfc42('0x2f')]};});_0x10c769[_0xfc42('0x30')]=_[_0xfc42('0x2b')](_0x134f42,_0xfc42('0x28'));_0x10c769[_0xfc42('0x31')]=_[_0xfc42('0x32')](_0x1e320d['query']);_0x10c769[_0xfc42('0x33')]=_[_0xfc42('0x34')](_0x10c769[_0xfc42('0x30')],_0x10c769[_0xfc42('0x31')]);_0x5c0278[_0xfc42('0x35')]=_[_0xfc42('0x34')](_0x10c769[_0xfc42('0x30')],qs['fields'](_0x1e320d[_0xfc42('0x31')]['fields']));_0x5c0278[_0xfc42('0x35')]=_0x5c0278[_0xfc42('0x35')][_0xfc42('0x36')]?_0x5c0278['attributes']:_0x10c769['model'];if(!_0x1e320d[_0xfc42('0x31')][_0xfc42('0x37')](_0xfc42('0x38'))){_0x5c0278[_0xfc42('0x1f')]=qs[_0xfc42('0x1f')](_0x1e320d['query']['limit']);_0x5c0278['offset']=qs[_0xfc42('0x1c')](_0x1e320d['query'][_0xfc42('0x1c')]);}_0x5c0278['order']=qs[_0xfc42('0x39')](_0x1e320d[_0xfc42('0x31')]['sort']);_0x5c0278['where']=qs[_0xfc42('0x33')](_[_0xfc42('0x3a')](_0x1e320d[_0xfc42('0x31')],_0x10c769[_0xfc42('0x33')]),_0x134f42);if(_0x1e320d[_0xfc42('0x31')][_0xfc42('0x3b')]){_0x5c0278['where']=_[_0xfc42('0x3c')](_0x5c0278[_0xfc42('0x3d')],{'$or':_['map'](_0x134f42,function(_0x1588e7){if(_0x1588e7[_0xfc42('0x3e')]!==_0xfc42('0x3f')){var _0x3f28f8={};_0x3f28f8[_0x1588e7[_0xfc42('0x28')]]={'$like':'%'+_0x1e320d[_0xfc42('0x31')][_0xfc42('0x3b')]+'%'};return _0x3f28f8;}})});}_0x5c0278=_[_0xfc42('0x3c')]({},_0x5c0278,_0x1e320d[_0xfc42('0x40')]);var _0xb7ad0b={'where':_0x5c0278[_0xfc42('0x3d')]};return db[_0xfc42('0x2c')][_0xfc42('0x1e')](_0xb7ad0b)['then'](function(_0x458690){_0x77f286[_0xfc42('0x1e')]=_0x458690;if(_0x1e320d[_0xfc42('0x31')][_0xfc42('0x41')]){_0x5c0278[_0xfc42('0x42')]=[{'all':!![]}];}return db[_0xfc42('0x2c')][_0xfc42('0x43')](_0x5c0278);})[_0xfc42('0x25')](function(_0x3b7323){_0x77f286[_0xfc42('0x44')]=_0x3b7323;return _0x77f286;})[_0xfc42('0x25')](respondWithFilteredResult(_0x55c730,_0x5c0278))[_0xfc42('0x45')](handleError(_0x55c730,null));};exports[_0xfc42('0x46')]=function(_0x49dd25,_0x323310){var _0x3255f2={'raw':![],'where':{'id':_0x49dd25[_0xfc42('0x47')]['id']}},_0x20c210={};_0x20c210[_0xfc42('0x30')]=_['keys'](db[_0xfc42('0x2c')][_0xfc42('0x2d')]);_0x20c210['query']=_[_0xfc42('0x32')](_0x49dd25[_0xfc42('0x31')]);_0x20c210['filters']=_['intersection'](_0x20c210['model'],_0x20c210[_0xfc42('0x31')]);_0x3255f2['attributes']=_[_0xfc42('0x34')](_0x20c210[_0xfc42('0x30')],qs[_0xfc42('0x48')](_0x49dd25['query'][_0xfc42('0x48')]));_0x3255f2[_0xfc42('0x35')]=_0x3255f2['attributes'][_0xfc42('0x36')]?_0x3255f2['attributes']:_0x20c210[_0xfc42('0x30')];if(_0x49dd25['query'][_0xfc42('0x41')]){_0x3255f2[_0xfc42('0x42')]=[{'all':!![]}];}_0x3255f2=_['merge']({},_0x3255f2,_0x49dd25[_0xfc42('0x40')]);return db[_0xfc42('0x2c')][_0xfc42('0x49')](_0x3255f2)[_0xfc42('0x25')](handleEntityNotFound(_0x323310,null))[_0xfc42('0x25')](respondWithResult(_0x323310,null))['catch'](handleError(_0x323310,null));};exports['create']=function(_0x188abe,_0x53f2b1){return db[_0xfc42('0x2c')]['create'](_0x188abe[_0xfc42('0x4a')],{})[_0xfc42('0x25')](respondWithResult(_0x53f2b1,0xc9))[_0xfc42('0x45')](handleError(_0x53f2b1,null));};exports[_0xfc42('0x24')]=function(_0x24eb13,_0x14b6bf){if(_0x24eb13[_0xfc42('0x4a')]['id']){delete _0x24eb13[_0xfc42('0x4a')]['id'];}return db[_0xfc42('0x2c')][_0xfc42('0x49')]({'where':{'id':_0x24eb13['params']['id']}})[_0xfc42('0x25')](handleEntityNotFound(_0x14b6bf,null))[_0xfc42('0x25')](saveUpdates(_0x24eb13[_0xfc42('0x4a')],null))[_0xfc42('0x25')](respondWithResult(_0x14b6bf,null))['catch'](handleError(_0x14b6bf,null));};exports[_0xfc42('0x26')]=function(_0x2ea947,_0x20b82a){return db['ZohoAccount'][_0xfc42('0x49')]({'where':{'id':_0x2ea947['params']['id']}})[_0xfc42('0x25')](handleEntityNotFound(_0x20b82a,null))[_0xfc42('0x25')](removeEntity(_0x20b82a,null))['catch'](handleError(_0x20b82a,null));};exports[_0xfc42('0x4b')]=function(_0xf46c0b,_0x4da504,_0x5dac4b){var _0x75a77e={};var _0x507b26={};var _0x23fa53;var _0x2917e0;return db['ZohoAccount'][_0xfc42('0x4c')]({'where':{'id':_0xf46c0b['params']['id']}})['then'](handleEntityNotFound(_0x4da504,null))[_0xfc42('0x25')](function(_0x1775f3){if(_0x1775f3){_0x23fa53=_0x1775f3;_0x507b26[_0xfc42('0x30')]=_[_0xfc42('0x32')](db[_0xfc42('0x4d')][_0xfc42('0x2d')]);_0x507b26[_0xfc42('0x31')]=_[_0xfc42('0x32')](_0xf46c0b['query']);_0x507b26['filters']=_[_0xfc42('0x34')](_0x507b26[_0xfc42('0x30')],_0x507b26[_0xfc42('0x31')]);_0x75a77e[_0xfc42('0x35')]=_[_0xfc42('0x34')](_0x507b26['model'],qs['fields'](_0xf46c0b['query'][_0xfc42('0x48')]));_0x75a77e[_0xfc42('0x35')]=_0x75a77e[_0xfc42('0x35')][_0xfc42('0x36')]?_0x75a77e[_0xfc42('0x35')]:_0x507b26[_0xfc42('0x30')];_0x75a77e[_0xfc42('0x4e')]=qs['sort'](_0xf46c0b[_0xfc42('0x31')][_0xfc42('0x39')]);_0x75a77e[_0xfc42('0x3d')]=qs['filters'](_[_0xfc42('0x3a')](_0xf46c0b['query'],_0x507b26[_0xfc42('0x33')]));if(_0xf46c0b[_0xfc42('0x31')]['filter']){_0x75a77e[_0xfc42('0x3d')]=_['merge'](_0x75a77e['where'],{'$or':_[_0xfc42('0x2b')](_0x75a77e['attributes'],function(_0x44bf87){var _0x4a3187={};_0x4a3187[_0x44bf87]={'$like':'%'+_0xf46c0b[_0xfc42('0x31')][_0xfc42('0x3b')]+'%'};return _0x4a3187;})});}_0x75a77e=_[_0xfc42('0x3c')]({},_0x75a77e,_0xf46c0b[_0xfc42('0x40')]);return _0x23fa53[_0xfc42('0x4b')](_0x75a77e);}})[_0xfc42('0x25')](function(_0x59460c){if(_0x59460c){_0x2917e0=_0x59460c[_0xfc42('0x36')];if(!_0xf46c0b[_0xfc42('0x31')]['hasOwnProperty']('nolimit')){_0x75a77e[_0xfc42('0x1f')]=qs[_0xfc42('0x1f')](_0xf46c0b[_0xfc42('0x31')]['limit']);_0x75a77e[_0xfc42('0x1c')]=qs[_0xfc42('0x1c')](_0xf46c0b[_0xfc42('0x31')][_0xfc42('0x1c')]);}return _0x23fa53['getConfigurations'](_0x75a77e);}})[_0xfc42('0x25')](function(_0xa0c89){if(_0xa0c89){return _0xa0c89?{'count':_0x2917e0,'rows':_0xa0c89}:null;}})['then'](respondWithResult(_0x4da504,null))[_0xfc42('0x45')](handleError(_0x4da504,null));};exports['addConfiguration']=function(_0x5d0952,_0x2e4a21,_0x23cf70){if(_0x5d0952[_0xfc42('0x4a')]['id']){delete _0x5d0952[_0xfc42('0x4a')]['id'];}return db[_0xfc42('0x2c')][_0xfc42('0x4c')]({'where':{'id':_0x5d0952['params']['id']}})[_0xfc42('0x25')](handleEntityNotFound(_0x2e4a21,null))[_0xfc42('0x25')](function(_0x351e7d){if(_0x351e7d){_0x5d0952[_0xfc42('0x4a')]['AccountId']=_0x351e7d['id'];_0x5d0952[_0xfc42('0x4a')][_0xfc42('0x4f')]=integrations[_0xfc42('0x50')](_0x5d0952[_0xfc42('0x4a')][_0xfc42('0x51')],_0x5d0952[_0xfc42('0x4a')][_0xfc42('0x3e')]);_0x5d0952[_0xfc42('0x4a')][_0xfc42('0x52')]=integrations[_0xfc42('0x53')](_0x5d0952[_0xfc42('0x4a')][_0xfc42('0x51')],_0x5d0952[_0xfc42('0x4a')][_0xfc42('0x3e')]);return db['ZohoConfiguration']['create'](_0x5d0952[_0xfc42('0x4a')],{'include':[{'model':db[_0xfc42('0x54')],'as':_0xfc42('0x4f')},{'model':db[_0xfc42('0x54')],'as':_0xfc42('0x52')}]});}return null;})[_0xfc42('0x25')](respondWithResult(_0x2e4a21,null))[_0xfc42('0x45')](handleError(_0x2e4a21,null));};function getAccessToken(_0x4fb02b){return new Promise(function(_0x1dc138,_0x5a1ab9){var _0x208be9;switch(_0x4fb02b['zone']){case'US':_0x208be9=_0xfc42('0x55');break;case'AU':_0x208be9=_0xfc42('0x56');break;case'EU':_0x208be9='https://accounts.zoho.eu';break;case'IN':_0x208be9=_0xfc42('0x57');break;case'CN':_0x208be9=_0xfc42('0x58');break;default:_0x208be9=_0xfc42('0x59');break;}var _0x938b7c={'method':_0xfc42('0x5a'),'uri':_0x208be9+'/oauth/v2/token','qs':{'refresh_token':_0x4fb02b[_0xfc42('0x5b')],'client_id':_0x4fb02b['clientId'],'client_secret':_0x4fb02b[_0xfc42('0x5c')],'grant_type':'refresh_token'},'json':!![]};return rp(_0x938b7c)[_0xfc42('0x25')](function(_0x293be0){if(_0x293be0[_0xfc42('0x5d')]){_0x1dc138(_0x293be0[_0xfc42('0x5d')]);}else{_0x5a1ab9(_0xfc42('0x5e'));}})[_0xfc42('0x45')](function(_0x5f014b){_0x5a1ab9(_0x5f014b);});});}exports[_0xfc42('0x5f')]=function(_0x341c19,_0x18d01e,_0x32c0ed){var _0x493f82,_0x1396d6,_0x3dff76,_0x262fb4,_0xe8fac9;return db[_0xfc42('0x2c')][_0xfc42('0x4c')]({'where':{'id':_0x341c19[_0xfc42('0x47')]['id']},'attributes':['id',_0xfc42('0x60'),'zone',_0xfc42('0x61'),_0xfc42('0x5c'),'serverUrl','code',_0xfc42('0x5b')]})['then'](handleEntityNotFound(_0x18d01e,null))[_0xfc42('0x25')](function(_0x31c9fb){_0xe8fac9=_0x31c9fb;_0x493f82=_0xe8fac9[_0xfc42('0x60')];_0x1396d6=_0x493f82===_0xfc42('0x62')?'eu':'com';_0x3dff76=_0xe8fac9[_0xfc42('0x63')];var _0x136dc8=_0x3dff76[_0xfc42('0x64')](-0x1);if(_0x136dc8==='/'||_0x136dc8==='\x5c'||_0x136dc8===':'){_0x3dff76=_0x3dff76[_0xfc42('0x65')](0x0,_0x3dff76['lastIndexOf'](_0x136dc8));}if(!_0xe8fac9[_0xfc42('0x5b')]){throw new Error(_0xfc42('0x66'));}return getAccessToken(_0xe8fac9);})['then'](function(_0x129ee4){if(_0x129ee4){return rp({'method':_0xfc42('0x67'),'uri':util[_0xfc42('0x68')](_0xfc42('0x69'),_0x1396d6),'qs':{'module':_0xfc42('0x6a')},'headers':{'Authorization':_0xfc42('0x6b')+_0x129ee4},'json':!![]});}})[_0xfc42('0x25')](function(_0xa7612d){if(_0xa7612d){if(_0xa7612d['response']&&_0xa7612d['response']['error']){throw new Error(_0xa7612d[_0xfc42('0x6c')]['error']['message']);}var _0x482ce0=[];var _0x6e2d0b=[];var _0x5efecb=[_0xfc42('0x6d'),_0xfc42('0x6e'),_0xfc42('0x6f'),_0xfc42('0x70'),'Call_Duration',_0xfc42('0x71'),'Call_Start_Time',_0xfc42('0x72')];_0x6e2d0b=_[_0xfc42('0x73')](_0xa7612d[_0xfc42('0x48')],function(_0x401a64){return _0x5efecb[_0xfc42('0x74')](_0x401a64[_0xfc42('0x75')]);});for(var _0x31cbe9=0x0;_0x31cbe9<_0x6e2d0b['length'];_0x31cbe9++){if(_0x6e2d0b[_0x31cbe9]['system_mandatory']===![]){_0x482ce0[_0xfc42('0x76')]({'id':_0x6e2d0b[_0x31cbe9]['id'],'name':_0x6e2d0b[_0x31cbe9][_0xfc42('0x77')],'custom':_0x6e2d0b[_0x31cbe9]['custom_field'],'options':_0x6e2d0b[_0x31cbe9][_0xfc42('0x78')]==='picklist'&&_0x6e2d0b[_0x31cbe9][_0xfc42('0x79')]['length']>-0x1?_[_0xfc42('0x2b')](_0x6e2d0b[_0x31cbe9][_0xfc42('0x79')],function(_0x41f249){return{'name':_0x41f249,'value':_0x41f249};}):[]});}}return{'count':_0x482ce0[_0xfc42('0x36')],'rows':_0x482ce0};}else{return{'count':0x0,'rows':[]};}})[_0xfc42('0x25')](respondWithResult(_0x18d01e,null))[_0xfc42('0x45')](function(_0x99afab){var _0x28a93a=_0x341c19[_0xfc42('0x31')][_0xfc42('0x7a')]?0x1f4:_0x99afab['statusCode']||0x1f4;logger[_0xfc42('0x27')](_0xfc42('0x7b'),_0xfc42('0x5f'),_0x28a93a,JSON['stringify'](_0x99afab));delete _0x99afab['name'];if(_0x28a93a===0x191){_0x28a93a=0x190;}_0x18d01e[_0xfc42('0x1a')](_0x28a93a)['send'](_0x341c19[_0xfc42('0x31')][_0xfc42('0x7a')]?{'message':_0xfc42('0x7c'),'statusCode':_0x99afab[_0xfc42('0x7d')]}:_0x99afab);});};
\ No newline at end of file
index 0a659cb..d62ba62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf1aa=['then','parse','refresh_token','refreshToken','info','format','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','name','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','inspect','catch','error','host','lastIndexOf','lodash','util','../../config/logger','api','bluebird','request-promise','path','../../config/environment','./intZohoAccount.attributes','../../components/integrations/configuration','exports','define','ZohoAccount','int_zoho_accounts','changed','zone','serverUrl','clientId','clientSecret','code','slice','substring','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','/oauth/v2/token','application/x-www-form-urlencoded'];(function(_0x11c431,_0x31025a){var _0x427deb=function(_0x23fb48){while(--_0x23fb48){_0x11c431['push'](_0x11c431['shift']());}};_0x427deb(++_0x31025a);}(_0xf1aa,0x116));var _0xaf1a=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xf1aa[_0x42cae2];return _0x5f256f;};'use strict';var _=require(_0xaf1a('0x0'));var util=require(_0xaf1a('0x1'));var logger=require(_0xaf1a('0x2'))(_0xaf1a('0x3'));var moment=require('moment');var BPromise=require(_0xaf1a('0x4'));var rp=require(_0xaf1a('0x5'));var fs=require('fs');var path=require(_0xaf1a('0x6'));var rimraf=require('rimraf');var config=require(_0xaf1a('0x7'));var attributes=require(_0xaf1a('0x8'));var integrations=require(_0xaf1a('0x9'));module[_0xaf1a('0xa')]=function(_0xdcf301,_0x13707b){return _0xdcf301[_0xaf1a('0xb')](_0xaf1a('0xc'),attributes,{'tableName':_0xaf1a('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x397b47,_0x2f111f,_0x3d645a){if(_0x397b47[_0xaf1a('0xe')](_0xaf1a('0xf'))||_0x397b47[_0xaf1a('0xe')](_0xaf1a('0x10'))||_0x397b47['changed'](_0xaf1a('0x11'))||_0x397b47[_0xaf1a('0xe')](_0xaf1a('0x12'))||_0x397b47[_0xaf1a('0xe')](_0xaf1a('0x13'))||_0x397b47[_0xaf1a('0xe')]('host')){var _0xfa660c,_0x42910c;_0xfa660c=_0x397b47[_0xaf1a('0x10')];var _0x51ea64=_0xfa660c[_0xaf1a('0x14')](-0x1);if(_0x51ea64==='/'||_0x51ea64==='\x5c'||_0x51ea64===':'){_0xfa660c=_0xfa660c[_0xaf1a('0x15')](0x0,_0xfa660c['lastIndexOf'](_0x51ea64));}switch(_0x397b47['zone']){case'US':_0x42910c=_0xaf1a('0x16');break;case'AU':_0x42910c=_0xaf1a('0x17');break;case'IN':_0x42910c=_0xaf1a('0x18');break;case'CN':_0x42910c=_0xaf1a('0x19');break;default:_0x42910c=_0xaf1a('0x1a');break;}var _0x50c04e={'method':_0xaf1a('0x1b'),'uri':_0x42910c+_0xaf1a('0x1c'),'form':{'grant_type':'authorization_code','client_id':_0x397b47['clientId'],'client_secret':_0x397b47[_0xaf1a('0x12')],'redirect_uri':_0x397b47[_0xaf1a('0x10')],'code':_0x397b47[_0xaf1a('0x13')]},'headers':{'Content-Type':_0xaf1a('0x1d')}};return rp(_0x50c04e)[_0xaf1a('0x1e')](function(_0x3b267e){var _0x2c16a0=JSON[_0xaf1a('0x1f')](_0x3b267e);if(_0x2c16a0[_0xaf1a('0x20')]){_0x397b47[_0xaf1a('0x21')]=_0x2c16a0['refresh_token'];logger[_0xaf1a('0x22')](util[_0xaf1a('0x23')](_0xaf1a('0x24'),_0x397b47[_0xaf1a('0x25')],_0x397b47['id']));}else{logger['error'](util[_0xaf1a('0x23')](_0xaf1a('0x26'),_0x397b47[_0xaf1a('0x25')],_0x397b47['id']),util[_0xaf1a('0x27')](_0x2c16a0,{'showHidden':![],'depth':null}));}return _0x3d645a(null,_0x2f111f);})[_0xaf1a('0x28')](function(_0x2e328f){logger[_0xaf1a('0x29')](util['format']('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x397b47[_0xaf1a('0x25')],_0x397b47['id']),util[_0xaf1a('0x27')](parsedResult,{'showHidden':![],'depth':null}));return _0x3d645a(_0x2e328f);});}else{return _0x3d645a(null,_0x2f111f);}},'beforeUpdate':function(_0x59c9da,_0x57a0fe,_0x2e0a16){if(_0x59c9da[_0xaf1a('0xe')](_0xaf1a('0xf'))||_0x59c9da[_0xaf1a('0xe')](_0xaf1a('0x10'))||_0x59c9da[_0xaf1a('0xe')]('clientId')||_0x59c9da[_0xaf1a('0xe')]('clientSecret')||_0x59c9da['changed'](_0xaf1a('0x13'))||_0x59c9da['changed'](_0xaf1a('0x2a'))){var _0x51d92a,_0x36c312;_0x51d92a=_0x59c9da['serverUrl'];var _0x4d0958=_0x51d92a[_0xaf1a('0x14')](-0x1);if(_0x4d0958==='/'||_0x4d0958==='\x5c'||_0x4d0958===':'){_0x51d92a=_0x51d92a[_0xaf1a('0x15')](0x0,_0x51d92a[_0xaf1a('0x2b')](_0x4d0958));}switch(_0x59c9da['zone']){case'US':_0x36c312=_0xaf1a('0x16');break;case'AU':_0x36c312=_0xaf1a('0x17');break;case'IN':_0x36c312='https://accounts.zoho.in';break;case'CN':_0x36c312=_0xaf1a('0x19');break;default:_0x36c312=_0xaf1a('0x1a');break;}var _0x3e4af0={'method':_0xaf1a('0x1b'),'uri':_0x36c312+_0xaf1a('0x1c'),'form':{'grant_type':'authorization_code','client_id':_0x59c9da[_0xaf1a('0x11')],'client_secret':_0x59c9da[_0xaf1a('0x12')],'redirect_uri':_0x59c9da['serverUrl'],'code':_0x59c9da[_0xaf1a('0x13')]},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0x3e4af0)[_0xaf1a('0x1e')](function(_0x568d8c){var _0xfb32ce=JSON[_0xaf1a('0x1f')](_0x568d8c);if(_0xfb32ce[_0xaf1a('0x20')]){_0x59c9da[_0xaf1a('0x21')]=_0xfb32ce[_0xaf1a('0x20')];logger['info'](util[_0xaf1a('0x23')]('ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d',_0x59c9da[_0xaf1a('0x25')],_0x59c9da['id']));}else{logger[_0xaf1a('0x29')](util[_0xaf1a('0x23')](_0xaf1a('0x26'),_0x59c9da['name'],_0x59c9da['id']),util[_0xaf1a('0x27')](_0xfb32ce,{'showHidden':![],'depth':null}));}return _0x2e0a16(null,_0x57a0fe);})[_0xaf1a('0x28')](function(_0x5cfd87){logger[_0xaf1a('0x29')](util[_0xaf1a('0x23')](_0xaf1a('0x26'),_0x59c9da[_0xaf1a('0x25')],_0x59c9da['id']),util[_0xaf1a('0x27')](parsedResult,{'showHidden':![],'depth':null}));return _0x2e0a16(_0x5cfd87);});}else{return _0x2e0a16(null,_0x57a0fe);}}}});};
\ No newline at end of file
+var _0x5450=['rimraf','./intZohoAccount.attributes','../../components/integrations/configuration','define','ZohoAccount','int_zoho_accounts','changed','zone','serverUrl','clientId','clientSecret','code','host','slice','lastIndexOf','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','authorization_code','then','refresh_token','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','catch','inspect','substring','application/x-www-form-urlencoded','parse','lodash','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x3e38d8,_0x470860){var _0x33e5ac=function(_0x25fd68){while(--_0x25fd68){_0x3e38d8['push'](_0x3e38d8['shift']());}};_0x33e5ac(++_0x470860);}(_0x5450,0xf5));var _0x0545=function(_0x3ff085,_0x27c92e){_0x3ff085=_0x3ff085-0x0;var _0x2b68c3=_0x5450[_0x3ff085];return _0x2b68c3;};'use strict';var _=require(_0x0545('0x0'));var util=require('util');var logger=require(_0x0545('0x1'))(_0x0545('0x2'));var moment=require(_0x0545('0x3'));var BPromise=require(_0x0545('0x4'));var rp=require(_0x0545('0x5'));var fs=require('fs');var path=require(_0x0545('0x6'));var rimraf=require(_0x0545('0x7'));var config=require('../../config/environment');var attributes=require(_0x0545('0x8'));var integrations=require(_0x0545('0x9'));module['exports']=function(_0x4588b8,_0xcc1109){return _0x4588b8[_0x0545('0xa')](_0x0545('0xb'),attributes,{'tableName':_0x0545('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x445f85,_0xd01d53,_0x592380){if(_0x445f85[_0x0545('0xd')](_0x0545('0xe'))||_0x445f85[_0x0545('0xd')](_0x0545('0xf'))||_0x445f85[_0x0545('0xd')](_0x0545('0x10'))||_0x445f85[_0x0545('0xd')](_0x0545('0x11'))||_0x445f85[_0x0545('0xd')](_0x0545('0x12'))||_0x445f85[_0x0545('0xd')](_0x0545('0x13'))){var _0x199ab4,_0x2842d0;_0x199ab4=_0x445f85[_0x0545('0xf')];var _0x5b3997=_0x199ab4[_0x0545('0x14')](-0x1);if(_0x5b3997==='/'||_0x5b3997==='\x5c'||_0x5b3997===':'){_0x199ab4=_0x199ab4['substring'](0x0,_0x199ab4[_0x0545('0x15')](_0x5b3997));}switch(_0x445f85[_0x0545('0xe')]){case'US':_0x2842d0=_0x0545('0x16');break;case'AU':_0x2842d0=_0x0545('0x17');break;case'IN':_0x2842d0=_0x0545('0x18');break;case'CN':_0x2842d0=_0x0545('0x19');break;default:_0x2842d0=_0x0545('0x1a');break;}var _0x12bb2b={'method':'POST','uri':_0x2842d0+_0x0545('0x1b'),'form':{'grant_type':_0x0545('0x1c'),'client_id':_0x445f85['clientId'],'client_secret':_0x445f85[_0x0545('0x11')],'redirect_uri':_0x445f85[_0x0545('0xf')],'code':_0x445f85[_0x0545('0x12')]},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0x12bb2b)[_0x0545('0x1d')](function(_0x1e29ed){var _0x21ebda=JSON['parse'](_0x1e29ed);if(_0x21ebda['refresh_token']){_0x445f85['refreshToken']=_0x21ebda[_0x0545('0x1e')];logger[_0x0545('0x1f')](util[_0x0545('0x20')](_0x0545('0x21'),_0x445f85[_0x0545('0x22')],_0x445f85['id']));}else{logger[_0x0545('0x23')](util[_0x0545('0x20')](_0x0545('0x24'),_0x445f85[_0x0545('0x22')],_0x445f85['id']),util['inspect'](_0x21ebda,{'showHidden':![],'depth':null}));}return _0x592380(null,_0xd01d53);})[_0x0545('0x25')](function(_0x5f2fb6){logger[_0x0545('0x23')](util[_0x0545('0x20')](_0x0545('0x24'),_0x445f85[_0x0545('0x22')],_0x445f85['id']),util[_0x0545('0x26')](parsedResult,{'showHidden':![],'depth':null}));return _0x592380(_0x5f2fb6);});}else{return _0x592380(null,_0xd01d53);}},'beforeUpdate':function(_0x550beb,_0x58df31,_0x30317d){if(_0x550beb[_0x0545('0xd')](_0x0545('0xe'))||_0x550beb[_0x0545('0xd')]('serverUrl')||_0x550beb[_0x0545('0xd')]('clientId')||_0x550beb[_0x0545('0xd')](_0x0545('0x11'))||_0x550beb[_0x0545('0xd')](_0x0545('0x12'))||_0x550beb[_0x0545('0xd')](_0x0545('0x13'))){var _0x1eb6b1,_0x2959ce;_0x1eb6b1=_0x550beb[_0x0545('0xf')];var _0x475a7c=_0x1eb6b1[_0x0545('0x14')](-0x1);if(_0x475a7c==='/'||_0x475a7c==='\x5c'||_0x475a7c===':'){_0x1eb6b1=_0x1eb6b1[_0x0545('0x27')](0x0,_0x1eb6b1['lastIndexOf'](_0x475a7c));}switch(_0x550beb[_0x0545('0xe')]){case'US':_0x2959ce=_0x0545('0x16');break;case'AU':_0x2959ce=_0x0545('0x17');break;case'IN':_0x2959ce='https://accounts.zoho.in';break;case'CN':_0x2959ce=_0x0545('0x19');break;default:_0x2959ce=_0x0545('0x1a');break;}var _0x3e33a2={'method':'POST','uri':_0x2959ce+_0x0545('0x1b'),'form':{'grant_type':'authorization_code','client_id':_0x550beb['clientId'],'client_secret':_0x550beb['clientSecret'],'redirect_uri':_0x550beb['serverUrl'],'code':_0x550beb[_0x0545('0x12')]},'headers':{'Content-Type':_0x0545('0x28')}};return rp(_0x3e33a2)['then'](function(_0x52ba32){var _0x48fbdd=JSON[_0x0545('0x29')](_0x52ba32);if(_0x48fbdd[_0x0545('0x1e')]){_0x550beb['refreshToken']=_0x48fbdd[_0x0545('0x1e')];logger[_0x0545('0x1f')](util[_0x0545('0x20')](_0x0545('0x21'),_0x550beb[_0x0545('0x22')],_0x550beb['id']));}else{logger['error'](util[_0x0545('0x20')](_0x0545('0x24'),_0x550beb[_0x0545('0x22')],_0x550beb['id']),util['inspect'](_0x48fbdd,{'showHidden':![],'depth':null}));}return _0x30317d(null,_0x58df31);})[_0x0545('0x25')](function(_0x24a8c7){logger['error'](util[_0x0545('0x20')](_0x0545('0x24'),_0x550beb[_0x0545('0x22')],_0x550beb['id']),util[_0x0545('0x26')](parsedResult,{'showHidden':![],'depth':null}));return _0x30317d(_0x24a8c7);});}else{return _0x30317d(null,_0x58df31);}}}});};
\ No newline at end of file
index 31534f1..51dae6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0760=['GetZohoAccount','catch','ShowZohoAccount','find','lodash','moment','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','then','ZohoAccount,\x20%s,\x20%s','request\x20sent','debug','ZohoAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','ZohoAccount','findAll','options','raw','where','attributes','limit','include','map','model','info'];(function(_0x56a8bd,_0x201ffb){var _0x45b334=function(_0xb4b3eb){while(--_0xb4b3eb){_0x56a8bd['push'](_0x56a8bd['shift']());}};_0x45b334(++_0x201ffb);}(_0x0760,0xa9));var _0x0076=function(_0x3d1a29,_0x353748){_0x3d1a29=_0x3d1a29-0x0;var _0x1b650c=_0x0760[_0x3d1a29];return _0x1b650c;};'use strict';var _=require(_0x0076('0x0'));var util=require('util');var moment=require(_0x0076('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0076('0x2'))['db'];var utils=require(_0x0076('0x3'));var logger=require(_0x0076('0x4'))(_0x0076('0x5'));var config=require(_0x0076('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x0076('0x7')][_0x0076('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1b7f29,_0x9b8b1a,_0x1d61d6){return new BPromise(function(_0x5b4c91,_0x411b4b){return client['request'](_0x1b7f29,_0x1d61d6)[_0x0076('0x9')](function(_0x31ad28){logger['info'](_0x0076('0xa'),_0x9b8b1a,_0x0076('0xb'));logger[_0x0076('0xc')](_0x0076('0xd'),_0x9b8b1a,_0x0076('0xb'),JSON[_0x0076('0xe')](_0x31ad28));if(_0x31ad28['error']){if(_0x31ad28[_0x0076('0xf')][_0x0076('0x10')]===0x1f4){logger[_0x0076('0xf')](_0x0076('0xa'),_0x9b8b1a,_0x31ad28[_0x0076('0xf')][_0x0076('0x11')]);return _0x411b4b(_0x31ad28[_0x0076('0xf')][_0x0076('0x11')]);}logger[_0x0076('0xf')](_0x0076('0xa'),_0x9b8b1a,_0x31ad28[_0x0076('0xf')]['message']);return _0x5b4c91(_0x31ad28[_0x0076('0xf')]['message']);}else{logger['info'](_0x0076('0xa'),_0x9b8b1a,_0x0076('0xb'));_0x5b4c91(_0x31ad28['result'][_0x0076('0x11')]);}})['catch'](function(_0x2ff722){logger[_0x0076('0xf')]('ZohoAccount,\x20%s,\x20%s',_0x9b8b1a,_0x2ff722);_0x411b4b(_0x2ff722);});});}exports['GetZohoAccount']=function(_0x5761a4){var _0xc0a663=this;return new Promise(function(_0x30fb20,_0x1fb63f){return db[_0x0076('0x12')][_0x0076('0x13')]({'raw':_0x5761a4[_0x0076('0x14')]?_0x5761a4[_0x0076('0x14')][_0x0076('0x15')]===undefined?!![]:![]:!![],'where':_0x5761a4[_0x0076('0x14')]?_0x5761a4[_0x0076('0x14')][_0x0076('0x16')]||null:null,'attributes':_0x5761a4[_0x0076('0x14')]?_0x5761a4[_0x0076('0x14')][_0x0076('0x17')]||null:null,'limit':_0x5761a4['options']?_0x5761a4[_0x0076('0x14')][_0x0076('0x18')]||null:null,'include':_0x5761a4[_0x0076('0x14')]?_0x5761a4['options'][_0x0076('0x19')]?_[_0x0076('0x1a')](_0x5761a4[_0x0076('0x14')][_0x0076('0x19')],function(_0x250f57){return{'model':db[_0x250f57['model']],'as':_0x250f57['as'],'attributes':_0x250f57[_0x0076('0x17')],'include':_0x250f57[_0x0076('0x19')]?_[_0x0076('0x1a')](_0x250f57[_0x0076('0x19')],function(_0x2c7def){return{'model':db[_0x2c7def[_0x0076('0x1b')]],'as':_0x2c7def['as'],'attributes':_0x2c7def['attributes'],'include':_0x2c7def[_0x0076('0x19')]?_[_0x0076('0x1a')](_0x2c7def[_0x0076('0x19')],function(_0x187827){return{'model':db[_0x187827[_0x0076('0x1b')]],'as':_0x187827['as'],'attributes':_0x187827['attributes']};}):[]};}):[]};}):[]:[]})[_0x0076('0x9')](function(_0x712db9){logger[_0x0076('0x1c')](_0x0076('0x1d'),_0x5761a4);logger[_0x0076('0xc')](_0x0076('0x1d'),_0x5761a4,JSON[_0x0076('0xe')](_0x712db9));_0x30fb20(_0x712db9);})[_0x0076('0x1e')](function(_0x2bc8b7){logger[_0x0076('0xf')]('GetZohoAccount',_0x2bc8b7[_0x0076('0x11')],_0x5761a4);_0x1fb63f(_0xc0a663[_0x0076('0xf')](0x1f4,_0x2bc8b7[_0x0076('0x11')]));});});};exports[_0x0076('0x1f')]=function(_0x365049){var _0x501b23=this;return new Promise(function(_0x522273,_0x170881){return db[_0x0076('0x12')][_0x0076('0x20')]({'raw':_0x365049[_0x0076('0x14')]?_0x365049['options']['raw']===undefined?!![]:![]:!![],'where':_0x365049[_0x0076('0x14')]?_0x365049[_0x0076('0x14')][_0x0076('0x16')]||null:null,'attributes':_0x365049['options']?_0x365049[_0x0076('0x14')][_0x0076('0x17')]||null:null,'include':_0x365049[_0x0076('0x14')]?_0x365049[_0x0076('0x14')][_0x0076('0x19')]?_[_0x0076('0x1a')](_0x365049[_0x0076('0x14')][_0x0076('0x19')],function(_0x15cdc8){return{'model':db[_0x15cdc8[_0x0076('0x1b')]],'as':_0x15cdc8['as'],'attributes':_0x15cdc8[_0x0076('0x17')],'include':_0x15cdc8['include']?_[_0x0076('0x1a')](_0x15cdc8[_0x0076('0x19')],function(_0x308515){return{'model':db[_0x308515[_0x0076('0x1b')]],'as':_0x308515['as'],'attributes':_0x308515[_0x0076('0x17')],'include':_0x308515[_0x0076('0x19')]?_[_0x0076('0x1a')](_0x308515['include'],function(_0x3012ff){return{'model':db[_0x3012ff[_0x0076('0x1b')]],'as':_0x3012ff['as'],'attributes':_0x3012ff[_0x0076('0x17')]};}):[]};}):[]};}):[]:[]})[_0x0076('0x9')](function(_0x4a4cff){logger[_0x0076('0x1c')]('ShowZohoAccount',_0x365049);logger[_0x0076('0xc')](_0x0076('0x1f'),_0x365049,JSON[_0x0076('0xe')](_0x4a4cff));_0x522273(_0x4a4cff);})[_0x0076('0x1e')](function(_0x3ac727){logger[_0x0076('0xf')](_0x0076('0x1f'),_0x3ac727[_0x0076('0x11')],_0x365049);_0x170881(_0x501b23[_0x0076('0xf')](0x1f4,_0x3ac727[_0x0076('0x11')]));});});};
\ No newline at end of file
+var _0x8cad=['stringify','error','code','message','info','result','catch','GetZohoAccount','findAll','options','raw','attributes','limit','map','include','model','then','find','where','ShowZohoAccount','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','ZohoAccount,\x20%s,\x20%s','request\x20sent','debug','ZohoAccount,\x20%s,\x20%s,\x20%s'];(function(_0x1e4360,_0x930b9b){var _0x31e6b4=function(_0x49dd8e){while(--_0x49dd8e){_0x1e4360['push'](_0x1e4360['shift']());}};_0x31e6b4(++_0x930b9b);}(_0x8cad,0xfe));var _0xd8ca=function(_0x46d0c9,_0x526bfa){_0x46d0c9=_0x46d0c9-0x0;var _0x174506=_0x8cad[_0x46d0c9];return _0x174506;};'use strict';var _=require(_0xd8ca('0x0'));var util=require(_0xd8ca('0x1'));var moment=require(_0xd8ca('0x2'));var BPromise=require(_0xd8ca('0x3'));var rs=require(_0xd8ca('0x4'));var fs=require('fs');var Redis=require(_0xd8ca('0x5'));var db=require(_0xd8ca('0x6'))['db'];var utils=require(_0xd8ca('0x7'));var logger=require(_0xd8ca('0x8'))(_0xd8ca('0x9'));var config=require(_0xd8ca('0xa'));var jayson=require(_0xd8ca('0xb'));var client=jayson[_0xd8ca('0xc')][_0xd8ca('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x48709f,_0x23e864,_0x125ae9){return new BPromise(function(_0x1ba551,_0x2bcb4a){return client[_0xd8ca('0xe')](_0x48709f,_0x125ae9)['then'](function(_0x461039){logger['info'](_0xd8ca('0xf'),_0x23e864,_0xd8ca('0x10'));logger[_0xd8ca('0x11')](_0xd8ca('0x12'),_0x23e864,_0xd8ca('0x10'),JSON[_0xd8ca('0x13')](_0x461039));if(_0x461039['error']){if(_0x461039[_0xd8ca('0x14')][_0xd8ca('0x15')]===0x1f4){logger[_0xd8ca('0x14')](_0xd8ca('0xf'),_0x23e864,_0x461039[_0xd8ca('0x14')][_0xd8ca('0x16')]);return _0x2bcb4a(_0x461039[_0xd8ca('0x14')][_0xd8ca('0x16')]);}logger[_0xd8ca('0x14')]('ZohoAccount,\x20%s,\x20%s',_0x23e864,_0x461039[_0xd8ca('0x14')][_0xd8ca('0x16')]);return _0x1ba551(_0x461039[_0xd8ca('0x14')][_0xd8ca('0x16')]);}else{logger[_0xd8ca('0x17')](_0xd8ca('0xf'),_0x23e864,_0xd8ca('0x10'));_0x1ba551(_0x461039[_0xd8ca('0x18')][_0xd8ca('0x16')]);}})[_0xd8ca('0x19')](function(_0x5c5c41){logger[_0xd8ca('0x14')](_0xd8ca('0xf'),_0x23e864,_0x5c5c41);_0x2bcb4a(_0x5c5c41);});});}exports[_0xd8ca('0x1a')]=function(_0x437ac5){var _0x4ef034=this;return new Promise(function(_0x47e368,_0x37fdc3){return db['ZohoAccount'][_0xd8ca('0x1b')]({'raw':_0x437ac5[_0xd8ca('0x1c')]?_0x437ac5[_0xd8ca('0x1c')][_0xd8ca('0x1d')]===undefined?!![]:![]:!![],'where':_0x437ac5[_0xd8ca('0x1c')]?_0x437ac5[_0xd8ca('0x1c')]['where']||null:null,'attributes':_0x437ac5[_0xd8ca('0x1c')]?_0x437ac5[_0xd8ca('0x1c')][_0xd8ca('0x1e')]||null:null,'limit':_0x437ac5[_0xd8ca('0x1c')]?_0x437ac5['options'][_0xd8ca('0x1f')]||null:null,'include':_0x437ac5[_0xd8ca('0x1c')]?_0x437ac5[_0xd8ca('0x1c')]['include']?_[_0xd8ca('0x20')](_0x437ac5[_0xd8ca('0x1c')][_0xd8ca('0x21')],function(_0xbf3254){return{'model':db[_0xbf3254[_0xd8ca('0x22')]],'as':_0xbf3254['as'],'attributes':_0xbf3254[_0xd8ca('0x1e')],'include':_0xbf3254[_0xd8ca('0x21')]?_['map'](_0xbf3254[_0xd8ca('0x21')],function(_0x3f8e42){return{'model':db[_0x3f8e42['model']],'as':_0x3f8e42['as'],'attributes':_0x3f8e42[_0xd8ca('0x1e')],'include':_0x3f8e42[_0xd8ca('0x21')]?_[_0xd8ca('0x20')](_0x3f8e42[_0xd8ca('0x21')],function(_0x15a71d){return{'model':db[_0x15a71d[_0xd8ca('0x22')]],'as':_0x15a71d['as'],'attributes':_0x15a71d['attributes']};}):[]};}):[]};}):[]:[]})[_0xd8ca('0x23')](function(_0x49b14c){logger[_0xd8ca('0x17')](_0xd8ca('0x1a'),_0x437ac5);logger['debug']('GetZohoAccount',_0x437ac5,JSON[_0xd8ca('0x13')](_0x49b14c));_0x47e368(_0x49b14c);})[_0xd8ca('0x19')](function(_0x3b1098){logger[_0xd8ca('0x14')](_0xd8ca('0x1a'),_0x3b1098[_0xd8ca('0x16')],_0x437ac5);_0x37fdc3(_0x4ef034[_0xd8ca('0x14')](0x1f4,_0x3b1098[_0xd8ca('0x16')]));});});};exports['ShowZohoAccount']=function(_0x405265){var _0x33bfe0=this;return new Promise(function(_0x216c8b,_0x58bcd7){return db['ZohoAccount'][_0xd8ca('0x24')]({'raw':_0x405265[_0xd8ca('0x1c')]?_0x405265[_0xd8ca('0x1c')][_0xd8ca('0x1d')]===undefined?!![]:![]:!![],'where':_0x405265[_0xd8ca('0x1c')]?_0x405265[_0xd8ca('0x1c')][_0xd8ca('0x25')]||null:null,'attributes':_0x405265[_0xd8ca('0x1c')]?_0x405265['options'][_0xd8ca('0x1e')]||null:null,'include':_0x405265[_0xd8ca('0x1c')]?_0x405265[_0xd8ca('0x1c')][_0xd8ca('0x21')]?_[_0xd8ca('0x20')](_0x405265[_0xd8ca('0x1c')][_0xd8ca('0x21')],function(_0x353b42){return{'model':db[_0x353b42['model']],'as':_0x353b42['as'],'attributes':_0x353b42[_0xd8ca('0x1e')],'include':_0x353b42[_0xd8ca('0x21')]?_[_0xd8ca('0x20')](_0x353b42['include'],function(_0x3fcf94){return{'model':db[_0x3fcf94[_0xd8ca('0x22')]],'as':_0x3fcf94['as'],'attributes':_0x3fcf94[_0xd8ca('0x1e')],'include':_0x3fcf94['include']?_[_0xd8ca('0x20')](_0x3fcf94['include'],function(_0x275557){return{'model':db[_0x275557['model']],'as':_0x275557['as'],'attributes':_0x275557[_0xd8ca('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xd8ca('0x23')](function(_0x9e3e49){logger['info'](_0xd8ca('0x26'),_0x405265);logger[_0xd8ca('0x11')]('ShowZohoAccount',_0x405265,JSON[_0xd8ca('0x13')](_0x9e3e49));_0x216c8b(_0x9e3e49);})[_0xd8ca('0x19')](function(_0x57c573){logger[_0xd8ca('0x14')](_0xd8ca('0x26'),_0x57c573['message'],_0x405265);_0x58bcd7(_0x33bfe0[_0xd8ca('0x14')](0x1f4,_0x57c573[_0xd8ca('0x16')]));});});};
\ No newline at end of file
index 1503cdf..375adb0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bae=['../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoConfiguration.controller','get','isAuthenticated','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','delete','exports','multer','util','path','connect-timeout','Router','fs-extra'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x0bae,0xb2));var _0xe0ba=function(_0x3f0860,_0x3f8a86){_0x3f0860=_0x3f0860-0x0;var _0x26ecb1=_0x0bae[_0x3f0860];return _0x26ecb1;};'use strict';var multer=require(_0xe0ba('0x0'));var util=require(_0xe0ba('0x1'));var path=require(_0xe0ba('0x2'));var timeout=require(_0xe0ba('0x3'));var express=require('express');var router=express[_0xe0ba('0x4')]();var fs_extra=require(_0xe0ba('0x5'));var auth=require(_0xe0ba('0x6'));var interaction=require(_0xe0ba('0x7'));var config=require(_0xe0ba('0x8'));var controller=require(_0xe0ba('0x9'));router[_0xe0ba('0xa')]('/',auth[_0xe0ba('0xb')](),controller['index']);router[_0xe0ba('0xa')](_0xe0ba('0xc'),auth['isAuthenticated'](),controller[_0xe0ba('0xd')]);router[_0xe0ba('0xa')](_0xe0ba('0xe'),auth[_0xe0ba('0xb')](),controller[_0xe0ba('0xf')]);router[_0xe0ba('0xa')](_0xe0ba('0x10'),auth[_0xe0ba('0xb')](),controller[_0xe0ba('0x11')]);router[_0xe0ba('0xa')](_0xe0ba('0x12'),auth[_0xe0ba('0xb')](),controller[_0xe0ba('0x13')]);router[_0xe0ba('0x14')]('/',auth[_0xe0ba('0xb')](),controller['create']);router['put'](_0xe0ba('0xc'),auth[_0xe0ba('0xb')](),controller['update']);router[_0xe0ba('0x15')](_0xe0ba('0xc'),auth[_0xe0ba('0xb')](),controller['destroy']);module[_0xe0ba('0x16')]=router;
\ No newline at end of file
+var _0xa4d3=['getSubjects','/:id/descriptions','getDescriptions','post','put','update','delete','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intZohoConfiguration.controller','isAuthenticated','get','/:id','show','/:id/fields','getFields','/:id/subjects'];(function(_0x21c6b8,_0x16d6f6){var _0x39d474=function(_0x27dbf5){while(--_0x27dbf5){_0x21c6b8['push'](_0x21c6b8['shift']());}};_0x39d474(++_0x16d6f6);}(_0xa4d3,0x1bd));var _0x3a4d=function(_0x167aa2,_0x402b14){_0x167aa2=_0x167aa2-0x0;var _0xc92931=_0xa4d3[_0x167aa2];return _0xc92931;};'use strict';var multer=require(_0x3a4d('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x3a4d('0x1'));var express=require(_0x3a4d('0x2'));var router=express[_0x3a4d('0x3')]();var fs_extra=require(_0x3a4d('0x4'));var auth=require(_0x3a4d('0x5'));var interaction=require(_0x3a4d('0x6'));var config=require('../../config/environment');var controller=require(_0x3a4d('0x7'));router['get']('/',auth[_0x3a4d('0x8')](),controller['index']);router[_0x3a4d('0x9')](_0x3a4d('0xa'),auth['isAuthenticated'](),controller[_0x3a4d('0xb')]);router[_0x3a4d('0x9')](_0x3a4d('0xc'),auth[_0x3a4d('0x8')](),controller[_0x3a4d('0xd')]);router[_0x3a4d('0x9')](_0x3a4d('0xe'),auth[_0x3a4d('0x8')](),controller[_0x3a4d('0xf')]);router[_0x3a4d('0x9')](_0x3a4d('0x10'),auth[_0x3a4d('0x8')](),controller[_0x3a4d('0x11')]);router[_0x3a4d('0x12')]('/',auth[_0x3a4d('0x8')](),controller['create']);router[_0x3a4d('0x13')]('/:id',auth['isAuthenticated'](),controller[_0x3a4d('0x14')]);router[_0x3a4d('0x15')](_0x3a4d('0xa'),auth[_0x3a4d('0x8')](),controller['destroy']);module[_0x3a4d('0x16')]=router;
\ No newline at end of file
index 7113b8f..c89dd18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd2c=['exports','ENUM','lead','contact','contact_lead','STRING'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xcd2c,0xc6));var _0xccd2=function(_0x21c222,_0x406d0a){_0x21c222=_0x21c222-0x0;var _0x5ec82a=_0xcd2c[_0x21c222];return _0x5ec82a;};'use strict';var Sequelize=require('sequelize');module[_0xccd2('0x0')]={'name':{'type':Sequelize['STRING']},'moduleCreate':{'type':Sequelize[_0xccd2('0x1')](_0xccd2('0x2'),_0xccd2('0x3'),'nothing'),'defaultValue':'lead'},'moduleSearch':{'type':Sequelize['ENUM'](_0xccd2('0x4'),_0xccd2('0x3'),_0xccd2('0x2')),'defaultValue':_0xccd2('0x4')},'description':{'type':Sequelize[_0xccd2('0x5')]}};
\ No newline at end of file
+var _0xb143=['lead','sequelize','STRING','ENUM','contact','contact_lead'];(function(_0x251202,_0x2b55da){var _0x1043c0=function(_0x23f401){while(--_0x23f401){_0x251202['push'](_0x251202['shift']());}};_0x1043c0(++_0x2b55da);}(_0xb143,0x1c3));var _0x3b14=function(_0x632270,_0x24cba0){_0x632270=_0x632270-0x0;var _0x395fc5=_0xb143[_0x632270];return _0x395fc5;};'use strict';var Sequelize=require(_0x3b14('0x0'));module['exports']={'name':{'type':Sequelize[_0x3b14('0x1')]},'moduleCreate':{'type':Sequelize[_0x3b14('0x2')]('lead',_0x3b14('0x3'),'nothing'),'defaultValue':'lead'},'moduleSearch':{'type':Sequelize[_0x3b14('0x2')](_0x3b14('0x4'),_0x3b14('0x3'),_0x3b14('0x5')),'defaultValue':'contact_lead'},'description':{'type':Sequelize[_0x3b14('0x1')]}};
\ No newline at end of file
index c4dd2f0..badb62d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5098=['sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','keys','create','body','find','getFields','findOne','ZohoField','length','getSubjects','nolimit','getDescriptions','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','json','offset','limit','count','status','set','Content-Range','reject','save','update','then','destroy','end','error','stack','name','index','ZohoConfiguration','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','fields','attributes','hasOwnProperty','order'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5098,0x6c));var _0x8509=function(_0x1e7823,_0x48fd00){_0x1e7823=_0x1e7823-0x0;var _0x12ac82=_0x5098[_0x1e7823];return _0x12ac82;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8509('0x0'));var zipdir=require(_0x8509('0x1'));var jsonpatch=require(_0x8509('0x2'));var rp=require(_0x8509('0x3'));var moment=require(_0x8509('0x4'));var BPromise=require(_0x8509('0x5'));var Mustache=require(_0x8509('0x6'));var util=require(_0x8509('0x7'));var path=require(_0x8509('0x8'));var sox=require(_0x8509('0x9'));var csv=require(_0x8509('0xa'));var ejs=require(_0x8509('0xb'));var fs=require('fs');var fs_extra=require(_0x8509('0xc'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x8509('0xd'));var jsforce=require(_0x8509('0xe'));var deskjs=require(_0x8509('0xf'));var toCsv=require(_0x8509('0xa'));var querystring=require(_0x8509('0x10'));var Papa=require(_0x8509('0x11'));var Redis=require(_0x8509('0x12'));var authService=require(_0x8509('0x13'));var qs=require(_0x8509('0x14'));var as=require(_0x8509('0x15'));var hardwareService=require(_0x8509('0x16'));var logger=require(_0x8509('0x17'))(_0x8509('0x18'));var utils=require(_0x8509('0x19'));var config=require(_0x8509('0x1a'));var licenseUtil=require(_0x8509('0x1b'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2cbe82,_0x2477b6){_0x2477b6=_0x2477b6||0xcc;return function(_0x3a6789){if(_0x3a6789){return _0x2cbe82[_0x8509('0x1c')](_0x2477b6);}return _0x2cbe82['status'](_0x2477b6)['end']();};}function respondWithResult(_0x59d0bb,_0x34e9f7){_0x34e9f7=_0x34e9f7||0xc8;return function(_0x26c61e){if(_0x26c61e){return _0x59d0bb['status'](_0x34e9f7)[_0x8509('0x1d')](_0x26c61e);}};}function respondWithFilteredResult(_0x3df965,_0x41c284){return function(_0x36806b){if(_0x36806b){var _0x38992a=typeof _0x41c284[_0x8509('0x1e')]==='undefined'&&typeof _0x41c284[_0x8509('0x1f')]==='undefined';var _0x41b814=_0x36806b[_0x8509('0x20')];var _0x3efb7e=_0x38992a?0x0:_0x41c284['offset'];var _0x3bcf41=_0x38992a?_0x36806b[_0x8509('0x20')]:_0x41c284[_0x8509('0x1e')]+_0x41c284[_0x8509('0x1f')];var _0x1b11e3;if(_0x3bcf41>=_0x41b814){_0x3bcf41=_0x41b814;_0x1b11e3=0xc8;}else{_0x1b11e3=0xce;}_0x3df965[_0x8509('0x21')](_0x1b11e3);return _0x3df965[_0x8509('0x22')](_0x8509('0x23'),_0x3efb7e+'-'+_0x3bcf41+'/'+_0x41b814)[_0x8509('0x1d')](_0x36806b);}return null;};}function patchUpdates(_0x18ebab){return function(_0x570eec){try{jsonpatch['apply'](_0x570eec,_0x18ebab,!![]);}catch(_0x5c2dd1){return BPromise[_0x8509('0x24')](_0x5c2dd1);}return _0x570eec[_0x8509('0x25')]();};}function saveUpdates(_0x1835d1,_0x3e0e65){return function(_0x2d27b9){if(_0x2d27b9){return _0x2d27b9[_0x8509('0x26')](_0x1835d1)[_0x8509('0x27')](function(_0x60c1c1){return _0x60c1c1;});}return null;};}function removeEntity(_0x50017e,_0x49d89d){return function(_0x2da4b5){if(_0x2da4b5){return _0x2da4b5[_0x8509('0x28')]()[_0x8509('0x27')](function(){_0x50017e[_0x8509('0x21')](0xcc)[_0x8509('0x29')]();});}};}function handleEntityNotFound(_0x466e5f,_0x2fa181){return function(_0x39e50f){if(!_0x39e50f){_0x466e5f['sendStatus'](0x194);}return _0x39e50f;};}function handleError(_0x4e80a9,_0xd5f5aa){_0xd5f5aa=_0xd5f5aa||0x1f4;return function(_0x3ef288){logger[_0x8509('0x2a')](_0x3ef288[_0x8509('0x2b')]);if(_0x3ef288[_0x8509('0x2c')]){delete _0x3ef288[_0x8509('0x2c')];}_0x4e80a9[_0x8509('0x21')](_0xd5f5aa)['send'](_0x3ef288);};}exports[_0x8509('0x2d')]=function(_0x10af72,_0x3180ab){var _0x2d6ed4={},_0x340ffd={},_0x28ebc6={'count':0x0,'rows':[]};var _0x28d5f4=_['map'](db[_0x8509('0x2e')][_0x8509('0x2f')],function(_0x111d1a){return{'name':_0x111d1a[_0x8509('0x30')],'type':_0x111d1a[_0x8509('0x31')][_0x8509('0x32')]};});_0x340ffd[_0x8509('0x33')]=_[_0x8509('0x34')](_0x28d5f4,_0x8509('0x2c'));_0x340ffd[_0x8509('0x35')]=_['keys'](_0x10af72[_0x8509('0x35')]);_0x340ffd[_0x8509('0x36')]=_[_0x8509('0x37')](_0x340ffd[_0x8509('0x33')],_0x340ffd['query']);_0x2d6ed4['attributes']=_['intersection'](_0x340ffd['model'],qs[_0x8509('0x38')](_0x10af72[_0x8509('0x35')]['fields']));_0x2d6ed4[_0x8509('0x39')]=_0x2d6ed4[_0x8509('0x39')]['length']?_0x2d6ed4[_0x8509('0x39')]:_0x340ffd[_0x8509('0x33')];if(!_0x10af72[_0x8509('0x35')][_0x8509('0x3a')]('nolimit')){_0x2d6ed4[_0x8509('0x1f')]=qs[_0x8509('0x1f')](_0x10af72[_0x8509('0x35')][_0x8509('0x1f')]);_0x2d6ed4[_0x8509('0x1e')]=qs[_0x8509('0x1e')](_0x10af72['query'][_0x8509('0x1e')]);}_0x2d6ed4[_0x8509('0x3b')]=qs[_0x8509('0x3c')](_0x10af72[_0x8509('0x35')][_0x8509('0x3c')]);_0x2d6ed4[_0x8509('0x3d')]=qs[_0x8509('0x36')](_[_0x8509('0x3e')](_0x10af72[_0x8509('0x35')],_0x340ffd[_0x8509('0x36')]),_0x28d5f4);if(_0x10af72[_0x8509('0x35')][_0x8509('0x3f')]){_0x2d6ed4[_0x8509('0x3d')]=_[_0x8509('0x40')](_0x2d6ed4[_0x8509('0x3d')],{'$or':_['map'](_0x28d5f4,function(_0x2d77a3){if(_0x2d77a3[_0x8509('0x31')]!==_0x8509('0x41')){var _0x3349bf={};_0x3349bf[_0x2d77a3[_0x8509('0x2c')]]={'$like':'%'+_0x10af72[_0x8509('0x35')][_0x8509('0x3f')]+'%'};return _0x3349bf;}})});}_0x2d6ed4=_[_0x8509('0x40')]({},_0x2d6ed4,_0x10af72[_0x8509('0x42')]);var _0x4588df={'where':_0x2d6ed4[_0x8509('0x3d')]};return db[_0x8509('0x2e')][_0x8509('0x20')](_0x4588df)['then'](function(_0xfa7495){_0x28ebc6['count']=_0xfa7495;if(_0x10af72[_0x8509('0x35')][_0x8509('0x43')]){_0x2d6ed4[_0x8509('0x44')]=[{'all':!![]}];}return db[_0x8509('0x2e')]['findAll'](_0x2d6ed4);})[_0x8509('0x27')](function(_0x277c58){_0x28ebc6[_0x8509('0x45')]=_0x277c58;return _0x28ebc6;})[_0x8509('0x27')](respondWithFilteredResult(_0x3180ab,_0x2d6ed4))[_0x8509('0x46')](handleError(_0x3180ab,null));};exports[_0x8509('0x47')]=function(_0xf43652,_0x3affd9){var _0x1915c6={'raw':![],'where':{'id':_0xf43652[_0x8509('0x48')]['id']}},_0x26e181={};_0x26e181[_0x8509('0x33')]=_['keys'](db[_0x8509('0x2e')][_0x8509('0x2f')]);_0x26e181[_0x8509('0x35')]=_[_0x8509('0x49')](_0xf43652[_0x8509('0x35')]);_0x26e181[_0x8509('0x36')]=_['intersection'](_0x26e181[_0x8509('0x33')],_0x26e181[_0x8509('0x35')]);_0x1915c6['attributes']=_[_0x8509('0x37')](_0x26e181['model'],qs[_0x8509('0x38')](_0xf43652[_0x8509('0x35')][_0x8509('0x38')]));_0x1915c6['attributes']=_0x1915c6['attributes']['length']?_0x1915c6['attributes']:_0x26e181[_0x8509('0x33')];if(_0xf43652[_0x8509('0x35')][_0x8509('0x43')]){_0x1915c6['include']=[{'all':!![]}];}_0x1915c6=_[_0x8509('0x40')]({},_0x1915c6,_0xf43652[_0x8509('0x42')]);return db['ZohoConfiguration']['find'](_0x1915c6)[_0x8509('0x27')](handleEntityNotFound(_0x3affd9,null))[_0x8509('0x27')](respondWithResult(_0x3affd9,null))[_0x8509('0x46')](handleError(_0x3affd9,null));};exports[_0x8509('0x4a')]=function(_0x19295f,_0x5b7466){return db[_0x8509('0x2e')]['create'](_0x19295f[_0x8509('0x4b')],{})[_0x8509('0x27')](respondWithResult(_0x5b7466,0xc9))[_0x8509('0x46')](handleError(_0x5b7466,null));};exports['update']=function(_0x5ef6dc,_0x4289bb){if(_0x5ef6dc[_0x8509('0x4b')]['id']){delete _0x5ef6dc[_0x8509('0x4b')]['id'];}return db['ZohoConfiguration'][_0x8509('0x4c')]({'where':{'id':_0x5ef6dc['params']['id']}})['then'](handleEntityNotFound(_0x4289bb,null))[_0x8509('0x27')](saveUpdates(_0x5ef6dc[_0x8509('0x4b')],null))['then'](respondWithResult(_0x4289bb,null))['catch'](handleError(_0x4289bb,null));};exports['destroy']=function(_0x554e55,_0x26bbce){return db[_0x8509('0x2e')]['find']({'where':{'id':_0x554e55['params']['id']}})['then'](handleEntityNotFound(_0x26bbce,null))[_0x8509('0x27')](removeEntity(_0x26bbce,null))[_0x8509('0x46')](handleError(_0x26bbce,null));};exports[_0x8509('0x4d')]=function(_0x107438,_0x491a52,_0x5874aa){var _0x5e96bb={};var _0x363d65={};var _0x1fe2b2;var _0x369e98;return db[_0x8509('0x2e')][_0x8509('0x4e')]({'where':{'id':_0x107438[_0x8509('0x48')]['id']}})[_0x8509('0x27')](handleEntityNotFound(_0x491a52,null))[_0x8509('0x27')](function(_0x49d791){if(_0x49d791){_0x1fe2b2=_0x49d791;_0x363d65[_0x8509('0x33')]=_[_0x8509('0x49')](db[_0x8509('0x4f')][_0x8509('0x2f')]);_0x363d65[_0x8509('0x35')]=_[_0x8509('0x49')](_0x107438['query']);_0x363d65['filters']=_[_0x8509('0x37')](_0x363d65['model'],_0x363d65['query']);_0x5e96bb[_0x8509('0x39')]=_[_0x8509('0x37')](_0x363d65['model'],qs[_0x8509('0x38')](_0x107438['query'][_0x8509('0x38')]));_0x5e96bb[_0x8509('0x39')]=_0x5e96bb['attributes'][_0x8509('0x50')]?_0x5e96bb[_0x8509('0x39')]:_0x363d65[_0x8509('0x33')];_0x5e96bb[_0x8509('0x3b')]=qs[_0x8509('0x3c')](_0x107438['query'][_0x8509('0x3c')]);_0x5e96bb[_0x8509('0x3d')]=qs['filters'](_[_0x8509('0x3e')](_0x107438[_0x8509('0x35')],_0x363d65[_0x8509('0x36')]));if(_0x107438['query'][_0x8509('0x3f')]){_0x5e96bb[_0x8509('0x3d')]=_[_0x8509('0x40')](_0x5e96bb[_0x8509('0x3d')],{'$or':_[_0x8509('0x34')](_0x5e96bb[_0x8509('0x39')],function(_0x5c151e){var _0x3fed66={};_0x3fed66[_0x5c151e]={'$like':'%'+_0x107438[_0x8509('0x35')][_0x8509('0x3f')]+'%'};return _0x3fed66;})});}_0x5e96bb=_[_0x8509('0x40')]({},_0x5e96bb,_0x107438[_0x8509('0x42')]);return _0x1fe2b2[_0x8509('0x4d')](_0x5e96bb);}})['then'](function(_0x51a554){if(_0x51a554){_0x369e98=_0x51a554[_0x8509('0x50')];if(!_0x107438[_0x8509('0x35')][_0x8509('0x3a')]('nolimit')){_0x5e96bb['limit']=qs['limit'](_0x107438[_0x8509('0x35')]['limit']);_0x5e96bb[_0x8509('0x1e')]=qs[_0x8509('0x1e')](_0x107438['query'][_0x8509('0x1e')]);}return _0x1fe2b2[_0x8509('0x4d')](_0x5e96bb);}})[_0x8509('0x27')](function(_0x3cac33){if(_0x3cac33){return _0x3cac33?{'count':_0x369e98,'rows':_0x3cac33}:null;}})['then'](respondWithResult(_0x491a52,null))[_0x8509('0x46')](handleError(_0x491a52,null));};exports['getSubjects']=function(_0xda4505,_0x5f0e1a,_0x4408b5){var _0x2eebee={};var _0x34e8af={};var _0x2f18ab;var _0x4b33f8;return db[_0x8509('0x2e')][_0x8509('0x4e')]({'where':{'id':_0xda4505['params']['id']}})['then'](handleEntityNotFound(_0x5f0e1a,null))[_0x8509('0x27')](function(_0x2e861b){if(_0x2e861b){_0x2f18ab=_0x2e861b;_0x34e8af[_0x8509('0x33')]=_['keys'](db[_0x8509('0x4f')][_0x8509('0x2f')]);_0x34e8af[_0x8509('0x35')]=_[_0x8509('0x49')](_0xda4505['query']);_0x34e8af[_0x8509('0x36')]=_[_0x8509('0x37')](_0x34e8af[_0x8509('0x33')],_0x34e8af[_0x8509('0x35')]);_0x2eebee[_0x8509('0x39')]=_[_0x8509('0x37')](_0x34e8af['model'],qs[_0x8509('0x38')](_0xda4505[_0x8509('0x35')]['fields']));_0x2eebee['attributes']=_0x2eebee[_0x8509('0x39')][_0x8509('0x50')]?_0x2eebee[_0x8509('0x39')]:_0x34e8af[_0x8509('0x33')];_0x2eebee[_0x8509('0x3b')]=qs[_0x8509('0x3c')](_0xda4505[_0x8509('0x35')][_0x8509('0x3c')]);_0x2eebee['where']=qs[_0x8509('0x36')](_['pick'](_0xda4505[_0x8509('0x35')],_0x34e8af[_0x8509('0x36')]));if(_0xda4505[_0x8509('0x35')][_0x8509('0x3f')]){_0x2eebee[_0x8509('0x3d')]=_[_0x8509('0x40')](_0x2eebee[_0x8509('0x3d')],{'$or':_['map'](_0x2eebee[_0x8509('0x39')],function(_0x4e0db6){var _0x3f01db={};_0x3f01db[_0x4e0db6]={'$like':'%'+_0xda4505[_0x8509('0x35')][_0x8509('0x3f')]+'%'};return _0x3f01db;})});}_0x2eebee=_[_0x8509('0x40')]({},_0x2eebee,_0xda4505[_0x8509('0x42')]);return _0x2f18ab[_0x8509('0x51')](_0x2eebee);}})['then'](function(_0xc101ed){if(_0xc101ed){_0x4b33f8=_0xc101ed[_0x8509('0x50')];if(!_0xda4505[_0x8509('0x35')][_0x8509('0x3a')](_0x8509('0x52'))){_0x2eebee[_0x8509('0x1f')]=qs[_0x8509('0x1f')](_0xda4505[_0x8509('0x35')]['limit']);_0x2eebee[_0x8509('0x1e')]=qs[_0x8509('0x1e')](_0xda4505[_0x8509('0x35')][_0x8509('0x1e')]);}return _0x2f18ab[_0x8509('0x51')](_0x2eebee);}})[_0x8509('0x27')](function(_0x2a60f4){if(_0x2a60f4){return _0x2a60f4?{'count':_0x4b33f8,'rows':_0x2a60f4}:null;}})['then'](respondWithResult(_0x5f0e1a,null))['catch'](handleError(_0x5f0e1a,null));};exports['getDescriptions']=function(_0x467815,_0x499bdf,_0x3a2eed){var _0x212c0e={};var _0x11ab3d={};var _0x171a46;var _0x3afc5e;return db[_0x8509('0x2e')][_0x8509('0x4e')]({'where':{'id':_0x467815[_0x8509('0x48')]['id']}})[_0x8509('0x27')](handleEntityNotFound(_0x499bdf,null))[_0x8509('0x27')](function(_0x2281a6){if(_0x2281a6){_0x171a46=_0x2281a6;_0x11ab3d[_0x8509('0x33')]=_[_0x8509('0x49')](db[_0x8509('0x4f')][_0x8509('0x2f')]);_0x11ab3d[_0x8509('0x35')]=_['keys'](_0x467815['query']);_0x11ab3d[_0x8509('0x36')]=_['intersection'](_0x11ab3d['model'],_0x11ab3d['query']);_0x212c0e[_0x8509('0x39')]=_['intersection'](_0x11ab3d[_0x8509('0x33')],qs[_0x8509('0x38')](_0x467815['query'][_0x8509('0x38')]));_0x212c0e[_0x8509('0x39')]=_0x212c0e['attributes'][_0x8509('0x50')]?_0x212c0e[_0x8509('0x39')]:_0x11ab3d[_0x8509('0x33')];_0x212c0e[_0x8509('0x3b')]=qs[_0x8509('0x3c')](_0x467815['query']['sort']);_0x212c0e[_0x8509('0x3d')]=qs[_0x8509('0x36')](_[_0x8509('0x3e')](_0x467815['query'],_0x11ab3d['filters']));if(_0x467815[_0x8509('0x35')][_0x8509('0x3f')]){_0x212c0e[_0x8509('0x3d')]=_['merge'](_0x212c0e[_0x8509('0x3d')],{'$or':_['map'](_0x212c0e['attributes'],function(_0x7f62f2){var _0x2a0b3c={};_0x2a0b3c[_0x7f62f2]={'$like':'%'+_0x467815[_0x8509('0x35')]['filter']+'%'};return _0x2a0b3c;})});}_0x212c0e=_['merge']({},_0x212c0e,_0x467815['options']);return _0x171a46[_0x8509('0x53')](_0x212c0e);}})['then'](function(_0x56efbf){if(_0x56efbf){_0x3afc5e=_0x56efbf[_0x8509('0x50')];if(!_0x467815[_0x8509('0x35')][_0x8509('0x3a')](_0x8509('0x52'))){_0x212c0e[_0x8509('0x1f')]=qs[_0x8509('0x1f')](_0x467815['query'][_0x8509('0x1f')]);_0x212c0e[_0x8509('0x1e')]=qs[_0x8509('0x1e')](_0x467815[_0x8509('0x35')][_0x8509('0x1e')]);}return _0x171a46[_0x8509('0x53')](_0x212c0e);}})['then'](function(_0x41529e){if(_0x41529e){return _0x41529e?{'count':_0x3afc5e,'rows':_0x41529e}:null;}})[_0x8509('0x27')](respondWithResult(_0x499bdf,null))[_0x8509('0x46')](handleError(_0x499bdf,null));};
\ No newline at end of file
+var _0xb9ac=['../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','limit','undefined','count','set','apply','reject','save','update','then','destroy','stack','name','send','ZohoConfiguration','rawAttributes','type','key','model','map','keys','query','filters','intersection','attributes','hasOwnProperty','nolimit','order','sort','filter','merge','where','VIRTUAL','options','includeAll','include','findAll','rows','catch','fields','length','create','body','params','getFields','findOne','ZohoField','pick','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb9ac,0x1d7));var _0xcb9a=function(_0x7ed4c7,_0x114694){_0x7ed4c7=_0x7ed4c7-0x0;var _0x27e894=_0xb9ac[_0x7ed4c7];return _0x27e894;};'use strict';var emlformat=require(_0xcb9a('0x0'));var rimraf=require(_0xcb9a('0x1'));var zipdir=require(_0xcb9a('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xcb9a('0x3'));var BPromise=require(_0xcb9a('0x4'));var Mustache=require('mustache');var util=require(_0xcb9a('0x5'));var path=require(_0xcb9a('0x6'));var sox=require(_0xcb9a('0x7'));var csv=require(_0xcb9a('0x8'));var ejs=require(_0xcb9a('0x9'));var fs=require('fs');var fs_extra=require(_0xcb9a('0xa'));var _=require(_0xcb9a('0xb'));var squel=require(_0xcb9a('0xc'));var crypto=require(_0xcb9a('0xd'));var jsforce=require(_0xcb9a('0xe'));var deskjs=require(_0xcb9a('0xf'));var toCsv=require(_0xcb9a('0x8'));var querystring=require(_0xcb9a('0x10'));var Papa=require(_0xcb9a('0x11'));var Redis=require(_0xcb9a('0x12'));var authService=require(_0xcb9a('0x13'));var qs=require(_0xcb9a('0x14'));var as=require(_0xcb9a('0x15'));var hardwareService=require(_0xcb9a('0x16'));var logger=require('../../config/logger')(_0xcb9a('0x17'));var utils=require(_0xcb9a('0x18'));var config=require(_0xcb9a('0x19'));var licenseUtil=require(_0xcb9a('0x1a'));var db=require(_0xcb9a('0x1b'))['db'];function respondWithStatusCode(_0x5437f1,_0xdabfe6){_0xdabfe6=_0xdabfe6||0xcc;return function(_0x164fd0){if(_0x164fd0){return _0x5437f1[_0xcb9a('0x1c')](_0xdabfe6);}return _0x5437f1['status'](_0xdabfe6)[_0xcb9a('0x1d')]();};}function respondWithResult(_0x343cc9,_0x3653e8){_0x3653e8=_0x3653e8||0xc8;return function(_0x56ddb8){if(_0x56ddb8){return _0x343cc9[_0xcb9a('0x1e')](_0x3653e8)[_0xcb9a('0x1f')](_0x56ddb8);}};}function respondWithFilteredResult(_0x906f8c,_0x146712){return function(_0x46697e){if(_0x46697e){var _0x25c7b3=typeof _0x146712[_0xcb9a('0x20')]==='undefined'&&typeof _0x146712[_0xcb9a('0x21')]===_0xcb9a('0x22');var _0x128d63=_0x46697e['count'];var _0x242643=_0x25c7b3?0x0:_0x146712[_0xcb9a('0x20')];var _0x459d06=_0x25c7b3?_0x46697e[_0xcb9a('0x23')]:_0x146712[_0xcb9a('0x20')]+_0x146712[_0xcb9a('0x21')];var _0x473234;if(_0x459d06>=_0x128d63){_0x459d06=_0x128d63;_0x473234=0xc8;}else{_0x473234=0xce;}_0x906f8c[_0xcb9a('0x1e')](_0x473234);return _0x906f8c[_0xcb9a('0x24')]('Content-Range',_0x242643+'-'+_0x459d06+'/'+_0x128d63)['json'](_0x46697e);}return null;};}function patchUpdates(_0x47c399){return function(_0x19a4a5){try{jsonpatch[_0xcb9a('0x25')](_0x19a4a5,_0x47c399,!![]);}catch(_0x53f08f){return BPromise[_0xcb9a('0x26')](_0x53f08f);}return _0x19a4a5[_0xcb9a('0x27')]();};}function saveUpdates(_0x5077b2,_0x2ebc88){return function(_0x3000a0){if(_0x3000a0){return _0x3000a0[_0xcb9a('0x28')](_0x5077b2)[_0xcb9a('0x29')](function(_0x524a47){return _0x524a47;});}return null;};}function removeEntity(_0x3cefc9,_0xe7fee3){return function(_0xab4c4){if(_0xab4c4){return _0xab4c4[_0xcb9a('0x2a')]()[_0xcb9a('0x29')](function(){_0x3cefc9[_0xcb9a('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x37edd5,_0x5bb7c5){return function(_0x364f98){if(!_0x364f98){_0x37edd5['sendStatus'](0x194);}return _0x364f98;};}function handleError(_0x29dcb6,_0x4fed7d){_0x4fed7d=_0x4fed7d||0x1f4;return function(_0x4b6226){logger['error'](_0x4b6226[_0xcb9a('0x2b')]);if(_0x4b6226['name']){delete _0x4b6226[_0xcb9a('0x2c')];}_0x29dcb6[_0xcb9a('0x1e')](_0x4fed7d)[_0xcb9a('0x2d')](_0x4b6226);};}exports['index']=function(_0x22219e,_0x57f9fe){var _0x318868={},_0x465ad5={},_0x2630b3={'count':0x0,'rows':[]};var _0x34d637=_['map'](db[_0xcb9a('0x2e')][_0xcb9a('0x2f')],function(_0x468420){return{'name':_0x468420['fieldName'],'type':_0x468420[_0xcb9a('0x30')][_0xcb9a('0x31')]};});_0x465ad5[_0xcb9a('0x32')]=_[_0xcb9a('0x33')](_0x34d637,'name');_0x465ad5['query']=_[_0xcb9a('0x34')](_0x22219e[_0xcb9a('0x35')]);_0x465ad5[_0xcb9a('0x36')]=_[_0xcb9a('0x37')](_0x465ad5[_0xcb9a('0x32')],_0x465ad5[_0xcb9a('0x35')]);_0x318868['attributes']=_['intersection'](_0x465ad5[_0xcb9a('0x32')],qs['fields'](_0x22219e[_0xcb9a('0x35')]['fields']));_0x318868[_0xcb9a('0x38')]=_0x318868[_0xcb9a('0x38')]['length']?_0x318868['attributes']:_0x465ad5[_0xcb9a('0x32')];if(!_0x22219e[_0xcb9a('0x35')][_0xcb9a('0x39')](_0xcb9a('0x3a'))){_0x318868['limit']=qs[_0xcb9a('0x21')](_0x22219e[_0xcb9a('0x35')][_0xcb9a('0x21')]);_0x318868[_0xcb9a('0x20')]=qs['offset'](_0x22219e[_0xcb9a('0x35')][_0xcb9a('0x20')]);}_0x318868[_0xcb9a('0x3b')]=qs['sort'](_0x22219e[_0xcb9a('0x35')][_0xcb9a('0x3c')]);_0x318868['where']=qs['filters'](_['pick'](_0x22219e[_0xcb9a('0x35')],_0x465ad5[_0xcb9a('0x36')]),_0x34d637);if(_0x22219e[_0xcb9a('0x35')][_0xcb9a('0x3d')]){_0x318868['where']=_[_0xcb9a('0x3e')](_0x318868[_0xcb9a('0x3f')],{'$or':_[_0xcb9a('0x33')](_0x34d637,function(_0x562581){if(_0x562581['type']!==_0xcb9a('0x40')){var _0x2b8873={};_0x2b8873[_0x562581[_0xcb9a('0x2c')]]={'$like':'%'+_0x22219e['query']['filter']+'%'};return _0x2b8873;}})});}_0x318868=_[_0xcb9a('0x3e')]({},_0x318868,_0x22219e[_0xcb9a('0x41')]);var _0xd581f2={'where':_0x318868[_0xcb9a('0x3f')]};return db[_0xcb9a('0x2e')][_0xcb9a('0x23')](_0xd581f2)[_0xcb9a('0x29')](function(_0x2c1f2b){_0x2630b3['count']=_0x2c1f2b;if(_0x22219e[_0xcb9a('0x35')][_0xcb9a('0x42')]){_0x318868[_0xcb9a('0x43')]=[{'all':!![]}];}return db[_0xcb9a('0x2e')][_0xcb9a('0x44')](_0x318868);})[_0xcb9a('0x29')](function(_0x56cb0f){_0x2630b3[_0xcb9a('0x45')]=_0x56cb0f;return _0x2630b3;})['then'](respondWithFilteredResult(_0x57f9fe,_0x318868))[_0xcb9a('0x46')](handleError(_0x57f9fe,null));};exports['show']=function(_0x766653,_0x140187){var _0x432921={'raw':![],'where':{'id':_0x766653['params']['id']}},_0x4b7f3f={};_0x4b7f3f[_0xcb9a('0x32')]=_['keys'](db[_0xcb9a('0x2e')][_0xcb9a('0x2f')]);_0x4b7f3f[_0xcb9a('0x35')]=_[_0xcb9a('0x34')](_0x766653[_0xcb9a('0x35')]);_0x4b7f3f[_0xcb9a('0x36')]=_['intersection'](_0x4b7f3f[_0xcb9a('0x32')],_0x4b7f3f[_0xcb9a('0x35')]);_0x432921[_0xcb9a('0x38')]=_['intersection'](_0x4b7f3f[_0xcb9a('0x32')],qs[_0xcb9a('0x47')](_0x766653[_0xcb9a('0x35')][_0xcb9a('0x47')]));_0x432921[_0xcb9a('0x38')]=_0x432921[_0xcb9a('0x38')][_0xcb9a('0x48')]?_0x432921['attributes']:_0x4b7f3f['model'];if(_0x766653[_0xcb9a('0x35')]['includeAll']){_0x432921['include']=[{'all':!![]}];}_0x432921=_[_0xcb9a('0x3e')]({},_0x432921,_0x766653[_0xcb9a('0x41')]);return db['ZohoConfiguration']['find'](_0x432921)[_0xcb9a('0x29')](handleEntityNotFound(_0x140187,null))[_0xcb9a('0x29')](respondWithResult(_0x140187,null))[_0xcb9a('0x46')](handleError(_0x140187,null));};exports[_0xcb9a('0x49')]=function(_0xb4dba5,_0x477941){return db['ZohoConfiguration']['create'](_0xb4dba5[_0xcb9a('0x4a')],{})[_0xcb9a('0x29')](respondWithResult(_0x477941,0xc9))[_0xcb9a('0x46')](handleError(_0x477941,null));};exports['update']=function(_0x4752ce,_0x3106d8){if(_0x4752ce[_0xcb9a('0x4a')]['id']){delete _0x4752ce[_0xcb9a('0x4a')]['id'];}return db[_0xcb9a('0x2e')]['find']({'where':{'id':_0x4752ce[_0xcb9a('0x4b')]['id']}})[_0xcb9a('0x29')](handleEntityNotFound(_0x3106d8,null))['then'](saveUpdates(_0x4752ce[_0xcb9a('0x4a')],null))['then'](respondWithResult(_0x3106d8,null))['catch'](handleError(_0x3106d8,null));};exports[_0xcb9a('0x2a')]=function(_0x4edf0a,_0x523ca5){return db[_0xcb9a('0x2e')]['find']({'where':{'id':_0x4edf0a[_0xcb9a('0x4b')]['id']}})[_0xcb9a('0x29')](handleEntityNotFound(_0x523ca5,null))[_0xcb9a('0x29')](removeEntity(_0x523ca5,null))[_0xcb9a('0x46')](handleError(_0x523ca5,null));};exports[_0xcb9a('0x4c')]=function(_0x29cb97,_0x4ede80,_0x3aa3fa){var _0x10f905={};var _0x53adda={};var _0x1b0a1a;var _0x3ca09b;return db[_0xcb9a('0x2e')][_0xcb9a('0x4d')]({'where':{'id':_0x29cb97[_0xcb9a('0x4b')]['id']}})[_0xcb9a('0x29')](handleEntityNotFound(_0x4ede80,null))[_0xcb9a('0x29')](function(_0x165467){if(_0x165467){_0x1b0a1a=_0x165467;_0x53adda[_0xcb9a('0x32')]=_[_0xcb9a('0x34')](db[_0xcb9a('0x4e')]['rawAttributes']);_0x53adda[_0xcb9a('0x35')]=_['keys'](_0x29cb97[_0xcb9a('0x35')]);_0x53adda[_0xcb9a('0x36')]=_['intersection'](_0x53adda[_0xcb9a('0x32')],_0x53adda[_0xcb9a('0x35')]);_0x10f905['attributes']=_[_0xcb9a('0x37')](_0x53adda['model'],qs[_0xcb9a('0x47')](_0x29cb97[_0xcb9a('0x35')]['fields']));_0x10f905[_0xcb9a('0x38')]=_0x10f905[_0xcb9a('0x38')]['length']?_0x10f905[_0xcb9a('0x38')]:_0x53adda[_0xcb9a('0x32')];_0x10f905[_0xcb9a('0x3b')]=qs[_0xcb9a('0x3c')](_0x29cb97[_0xcb9a('0x35')][_0xcb9a('0x3c')]);_0x10f905[_0xcb9a('0x3f')]=qs[_0xcb9a('0x36')](_[_0xcb9a('0x4f')](_0x29cb97[_0xcb9a('0x35')],_0x53adda[_0xcb9a('0x36')]));if(_0x29cb97['query'][_0xcb9a('0x3d')]){_0x10f905['where']=_[_0xcb9a('0x3e')](_0x10f905['where'],{'$or':_['map'](_0x10f905['attributes'],function(_0x2017de){var _0x42f3f0={};_0x42f3f0[_0x2017de]={'$like':'%'+_0x29cb97[_0xcb9a('0x35')][_0xcb9a('0x3d')]+'%'};return _0x42f3f0;})});}_0x10f905=_[_0xcb9a('0x3e')]({},_0x10f905,_0x29cb97[_0xcb9a('0x41')]);return _0x1b0a1a[_0xcb9a('0x4c')](_0x10f905);}})['then'](function(_0x183493){if(_0x183493){_0x3ca09b=_0x183493[_0xcb9a('0x48')];if(!_0x29cb97['query']['hasOwnProperty'](_0xcb9a('0x3a'))){_0x10f905[_0xcb9a('0x21')]=qs[_0xcb9a('0x21')](_0x29cb97['query']['limit']);_0x10f905[_0xcb9a('0x20')]=qs[_0xcb9a('0x20')](_0x29cb97[_0xcb9a('0x35')][_0xcb9a('0x20')]);}return _0x1b0a1a[_0xcb9a('0x4c')](_0x10f905);}})['then'](function(_0x137e36){if(_0x137e36){return _0x137e36?{'count':_0x3ca09b,'rows':_0x137e36}:null;}})['then'](respondWithResult(_0x4ede80,null))[_0xcb9a('0x46')](handleError(_0x4ede80,null));};exports['getSubjects']=function(_0x347365,_0x43ff92,_0xdb8ae0){var _0x473832={};var _0x16bee5={};var _0x27dbf4;var _0x3f1c10;return db[_0xcb9a('0x2e')]['findOne']({'where':{'id':_0x347365[_0xcb9a('0x4b')]['id']}})[_0xcb9a('0x29')](handleEntityNotFound(_0x43ff92,null))[_0xcb9a('0x29')](function(_0x832077){if(_0x832077){_0x27dbf4=_0x832077;_0x16bee5[_0xcb9a('0x32')]=_[_0xcb9a('0x34')](db[_0xcb9a('0x4e')][_0xcb9a('0x2f')]);_0x16bee5[_0xcb9a('0x35')]=_['keys'](_0x347365['query']);_0x16bee5['filters']=_[_0xcb9a('0x37')](_0x16bee5[_0xcb9a('0x32')],_0x16bee5['query']);_0x473832[_0xcb9a('0x38')]=_[_0xcb9a('0x37')](_0x16bee5[_0xcb9a('0x32')],qs[_0xcb9a('0x47')](_0x347365[_0xcb9a('0x35')][_0xcb9a('0x47')]));_0x473832[_0xcb9a('0x38')]=_0x473832[_0xcb9a('0x38')][_0xcb9a('0x48')]?_0x473832[_0xcb9a('0x38')]:_0x16bee5[_0xcb9a('0x32')];_0x473832[_0xcb9a('0x3b')]=qs[_0xcb9a('0x3c')](_0x347365[_0xcb9a('0x35')][_0xcb9a('0x3c')]);_0x473832[_0xcb9a('0x3f')]=qs[_0xcb9a('0x36')](_[_0xcb9a('0x4f')](_0x347365[_0xcb9a('0x35')],_0x16bee5[_0xcb9a('0x36')]));if(_0x347365[_0xcb9a('0x35')][_0xcb9a('0x3d')]){_0x473832[_0xcb9a('0x3f')]=_[_0xcb9a('0x3e')](_0x473832['where'],{'$or':_[_0xcb9a('0x33')](_0x473832[_0xcb9a('0x38')],function(_0x27b56e){var _0x139832={};_0x139832[_0x27b56e]={'$like':'%'+_0x347365[_0xcb9a('0x35')][_0xcb9a('0x3d')]+'%'};return _0x139832;})});}_0x473832=_[_0xcb9a('0x3e')]({},_0x473832,_0x347365[_0xcb9a('0x41')]);return _0x27dbf4[_0xcb9a('0x50')](_0x473832);}})[_0xcb9a('0x29')](function(_0x2700bb){if(_0x2700bb){_0x3f1c10=_0x2700bb[_0xcb9a('0x48')];if(!_0x347365[_0xcb9a('0x35')][_0xcb9a('0x39')]('nolimit')){_0x473832[_0xcb9a('0x21')]=qs[_0xcb9a('0x21')](_0x347365[_0xcb9a('0x35')][_0xcb9a('0x21')]);_0x473832[_0xcb9a('0x20')]=qs[_0xcb9a('0x20')](_0x347365['query'][_0xcb9a('0x20')]);}return _0x27dbf4[_0xcb9a('0x50')](_0x473832);}})[_0xcb9a('0x29')](function(_0x5d8e30){if(_0x5d8e30){return _0x5d8e30?{'count':_0x3f1c10,'rows':_0x5d8e30}:null;}})[_0xcb9a('0x29')](respondWithResult(_0x43ff92,null))[_0xcb9a('0x46')](handleError(_0x43ff92,null));};exports[_0xcb9a('0x51')]=function(_0x4fdafa,_0x490035,_0x8aeda2){var _0x25faf2={};var _0x6b3fb9={};var _0x8c0d3b;var _0x894d60;return db['ZohoConfiguration']['findOne']({'where':{'id':_0x4fdafa[_0xcb9a('0x4b')]['id']}})['then'](handleEntityNotFound(_0x490035,null))[_0xcb9a('0x29')](function(_0x38edc4){if(_0x38edc4){_0x8c0d3b=_0x38edc4;_0x6b3fb9[_0xcb9a('0x32')]=_[_0xcb9a('0x34')](db['ZohoField'][_0xcb9a('0x2f')]);_0x6b3fb9[_0xcb9a('0x35')]=_[_0xcb9a('0x34')](_0x4fdafa['query']);_0x6b3fb9['filters']=_[_0xcb9a('0x37')](_0x6b3fb9[_0xcb9a('0x32')],_0x6b3fb9[_0xcb9a('0x35')]);_0x25faf2[_0xcb9a('0x38')]=_[_0xcb9a('0x37')](_0x6b3fb9['model'],qs[_0xcb9a('0x47')](_0x4fdafa['query'][_0xcb9a('0x47')]));_0x25faf2[_0xcb9a('0x38')]=_0x25faf2[_0xcb9a('0x38')][_0xcb9a('0x48')]?_0x25faf2[_0xcb9a('0x38')]:_0x6b3fb9[_0xcb9a('0x32')];_0x25faf2['order']=qs[_0xcb9a('0x3c')](_0x4fdafa[_0xcb9a('0x35')][_0xcb9a('0x3c')]);_0x25faf2[_0xcb9a('0x3f')]=qs[_0xcb9a('0x36')](_[_0xcb9a('0x4f')](_0x4fdafa[_0xcb9a('0x35')],_0x6b3fb9[_0xcb9a('0x36')]));if(_0x4fdafa[_0xcb9a('0x35')][_0xcb9a('0x3d')]){_0x25faf2[_0xcb9a('0x3f')]=_[_0xcb9a('0x3e')](_0x25faf2[_0xcb9a('0x3f')],{'$or':_[_0xcb9a('0x33')](_0x25faf2['attributes'],function(_0x173b84){var _0x1eb809={};_0x1eb809[_0x173b84]={'$like':'%'+_0x4fdafa[_0xcb9a('0x35')][_0xcb9a('0x3d')]+'%'};return _0x1eb809;})});}_0x25faf2=_['merge']({},_0x25faf2,_0x4fdafa[_0xcb9a('0x41')]);return _0x8c0d3b[_0xcb9a('0x51')](_0x25faf2);}})['then'](function(_0x1a5297){if(_0x1a5297){_0x894d60=_0x1a5297[_0xcb9a('0x48')];if(!_0x4fdafa[_0xcb9a('0x35')]['hasOwnProperty'](_0xcb9a('0x3a'))){_0x25faf2[_0xcb9a('0x21')]=qs['limit'](_0x4fdafa[_0xcb9a('0x35')][_0xcb9a('0x21')]);_0x25faf2[_0xcb9a('0x20')]=qs[_0xcb9a('0x20')](_0x4fdafa[_0xcb9a('0x35')]['offset']);}return _0x8c0d3b['getDescriptions'](_0x25faf2);}})[_0xcb9a('0x29')](function(_0x5d1b53){if(_0x5d1b53){return _0x5d1b53?{'count':_0x894d60,'rows':_0x5d1b53}:null;}})[_0xcb9a('0x29')](respondWithResult(_0x490035,null))[_0xcb9a('0x46')](handleError(_0x490035,null));};
\ No newline at end of file
index b27db2d..84d856e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb96=['bluebird','request-promise','rimraf','./intZohoConfiguration.attributes','ZohoConfiguration','int_zoho_configurations','lodash','util','../../config/logger'];(function(_0x2b63c0,_0x290383){var _0x232713=function(_0xb8dc1a){while(--_0xb8dc1a){_0x2b63c0['push'](_0x2b63c0['shift']());}};_0x232713(++_0x290383);}(_0xeb96,0xde));var _0x6eb9=function(_0x17b82f,_0x24b69e){_0x17b82f=_0x17b82f-0x0;var _0x3822a8=_0xeb96[_0x17b82f];return _0x3822a8;};'use strict';var _=require(_0x6eb9('0x0'));var util=require(_0x6eb9('0x1'));var logger=require(_0x6eb9('0x2'))('api');var moment=require('moment');var BPromise=require(_0x6eb9('0x3'));var rp=require(_0x6eb9('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6eb9('0x5'));var config=require('../../config/environment');var attributes=require(_0x6eb9('0x6'));module['exports']=function(_0x2f45b2,_0x551c61){return _0x2f45b2['define'](_0x6eb9('0x7'),attributes,{'tableName':_0x6eb9('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd27e=['./intZohoConfiguration.attributes','exports','ZohoConfiguration','lodash','util','../../config/logger','api','moment','path','../../config/environment'];(function(_0x455c6c,_0x1e78b7){var _0x488242=function(_0x3e8fb0){while(--_0x3e8fb0){_0x455c6c['push'](_0x455c6c['shift']());}};_0x488242(++_0x1e78b7);}(_0xd27e,0x7b));var _0xed27=function(_0x138adb,_0x193fee){_0x138adb=_0x138adb-0x0;var _0x1b27f2=_0xd27e[_0x138adb];return _0x1b27f2;};'use strict';var _=require(_0xed27('0x0'));var util=require(_0xed27('0x1'));var logger=require(_0xed27('0x2'))(_0xed27('0x3'));var moment=require(_0xed27('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xed27('0x5'));var rimraf=require('rimraf');var config=require(_0xed27('0x6'));var attributes=require(_0xed27('0x7'));module[_0xed27('0x8')]=function(_0x2d9a4b,_0x394c38){return _0x2d9a4b['define'](_0xed27('0x9'),attributes,{'tableName':'int_zoho_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e81ecb3..061c056 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3216=['../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','request\x20sent','debug','ZohoConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','ZohoConfiguration,\x20%s,\x20%s','catch','util','randomstring','ioredis','../../mysqldb'];(function(_0x56219b,_0xac9104){var _0x295fe2=function(_0x2bc287){while(--_0x2bc287){_0x56219b['push'](_0x56219b['shift']());}};_0x295fe2(++_0xac9104);}(_0x3216,0x188));var _0x6321=function(_0x3742c7,_0x1a572a){_0x3742c7=_0x3742c7-0x0;var _0x5b4843=_0x3216[_0x3742c7];return _0x5b4843;};'use strict';var _=require('lodash');var util=require(_0x6321('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x6321('0x1'));var fs=require('fs');var Redis=require(_0x6321('0x2'));var db=require(_0x6321('0x3'))['db'];var utils=require(_0x6321('0x4'));var logger=require(_0x6321('0x5'))(_0x6321('0x6'));var config=require(_0x6321('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x6321('0x8')][_0x6321('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x46696e,_0x5a358a,_0x33d718){return new BPromise(function(_0x3d1c2d,_0x41fe8a){return client[_0x6321('0xa')](_0x46696e,_0x33d718)[_0x6321('0xb')](function(_0x5b1965){logger[_0x6321('0xc')]('ZohoConfiguration,\x20%s,\x20%s',_0x5a358a,_0x6321('0xd'));logger[_0x6321('0xe')](_0x6321('0xf'),_0x5a358a,'request\x20sent',JSON[_0x6321('0x10')](_0x5b1965));if(_0x5b1965[_0x6321('0x11')]){if(_0x5b1965[_0x6321('0x11')][_0x6321('0x12')]===0x1f4){logger[_0x6321('0x11')]('ZohoConfiguration,\x20%s,\x20%s',_0x5a358a,_0x5b1965[_0x6321('0x11')][_0x6321('0x13')]);return _0x41fe8a(_0x5b1965[_0x6321('0x11')][_0x6321('0x13')]);}logger[_0x6321('0x11')](_0x6321('0x14'),_0x5a358a,_0x5b1965[_0x6321('0x11')][_0x6321('0x13')]);return _0x3d1c2d(_0x5b1965[_0x6321('0x11')][_0x6321('0x13')]);}else{logger[_0x6321('0xc')](_0x6321('0x14'),_0x5a358a,_0x6321('0xd'));_0x3d1c2d(_0x5b1965['result']['message']);}})[_0x6321('0x15')](function(_0x4cf2f5){logger[_0x6321('0x11')](_0x6321('0x14'),_0x5a358a,_0x4cf2f5);_0x41fe8a(_0x4cf2f5);});});}
\ No newline at end of file
+var _0xe448=['ZohoConfiguration,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','http','then','info','ZohoConfiguration,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe448,0x194));var _0x8e44=function(_0xa78723,_0x1b2cc7){_0xa78723=_0xa78723-0x0;var _0x4d9d4c=_0xe448[_0xa78723];return _0x4d9d4c;};'use strict';var _=require(_0x8e44('0x0'));var util=require(_0x8e44('0x1'));var moment=require(_0x8e44('0x2'));var BPromise=require(_0x8e44('0x3'));var rs=require(_0x8e44('0x4'));var fs=require('fs');var Redis=require(_0x8e44('0x5'));var db=require(_0x8e44('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x8e44('0x7'))(_0x8e44('0x8'));var config=require('../../config/environment');var jayson=require(_0x8e44('0x9'));var client=jayson['client'][_0x8e44('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2417e3,_0x15f795,_0x12130d){return new BPromise(function(_0x93a8e0,_0x11b9a7){return client['request'](_0x2417e3,_0x12130d)[_0x8e44('0xb')](function(_0x5aad6c){logger[_0x8e44('0xc')](_0x8e44('0xd'),_0x15f795,_0x8e44('0xe'));logger[_0x8e44('0xf')](_0x8e44('0x10'),_0x15f795,_0x8e44('0xe'),JSON['stringify'](_0x5aad6c));if(_0x5aad6c[_0x8e44('0x11')]){if(_0x5aad6c[_0x8e44('0x11')]['code']===0x1f4){logger[_0x8e44('0x11')]('ZohoConfiguration,\x20%s,\x20%s',_0x15f795,_0x5aad6c[_0x8e44('0x11')][_0x8e44('0x12')]);return _0x11b9a7(_0x5aad6c['error'][_0x8e44('0x12')]);}logger['error'](_0x8e44('0xd'),_0x15f795,_0x5aad6c[_0x8e44('0x11')][_0x8e44('0x12')]);return _0x93a8e0(_0x5aad6c[_0x8e44('0x11')][_0x8e44('0x12')]);}else{logger[_0x8e44('0xc')](_0x8e44('0xd'),_0x15f795,'request\x20sent');_0x93a8e0(_0x5aad6c[_0x8e44('0x13')][_0x8e44('0x12')]);}})[_0x8e44('0x14')](function(_0x330e13){logger[_0x8e44('0x11')](_0x8e44('0xd'),_0x15f795,_0x330e13);_0x11b9a7(_0x330e13);});});}
\ No newline at end of file
index 7884e31..e966ab7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd322=['delete','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoField.controller','get','isAuthenticated','index','/:id','create','put'];(function(_0xbf5159,_0x5c3ba5){var _0x58fc04=function(_0x3f53b0){while(--_0x3f53b0){_0xbf5159['push'](_0xbf5159['shift']());}};_0x58fc04(++_0x5c3ba5);}(_0xd322,0x1ab));var _0x2d32=function(_0x43121e,_0x4fbb32){_0x43121e=_0x43121e-0x0;var _0x59c44c=_0xd322[_0x43121e];return _0x59c44c;};'use strict';var multer=require(_0x2d32('0x0'));var util=require(_0x2d32('0x1'));var path=require('path');var timeout=require(_0x2d32('0x2'));var express=require('express');var router=express[_0x2d32('0x3')]();var fs_extra=require(_0x2d32('0x4'));var auth=require(_0x2d32('0x5'));var interaction=require(_0x2d32('0x6'));var config=require(_0x2d32('0x7'));var controller=require(_0x2d32('0x8'));router[_0x2d32('0x9')]('/',auth[_0x2d32('0xa')](),controller[_0x2d32('0xb')]);router[_0x2d32('0x9')](_0x2d32('0xc'),auth[_0x2d32('0xa')](),controller['show']);router['post']('/',auth[_0x2d32('0xa')](),controller[_0x2d32('0xd')]);router[_0x2d32('0xe')](_0x2d32('0xc'),auth[_0x2d32('0xa')](),controller['update']);router[_0x2d32('0xf')](_0x2d32('0xc'),auth['isAuthenticated'](),controller['destroy']);module[_0x2d32('0x10')]=router;
\ No newline at end of file
+var _0x06b2=['fs-extra','../../components/auth/service','../../config/environment','./intZohoField.controller','get','isAuthenticated','index','/:id','show','post','create','put','delete','multer','util','path','connect-timeout','express'];(function(_0x1679e8,_0x427dad){var _0xcb8835=function(_0x4748db){while(--_0x4748db){_0x1679e8['push'](_0x1679e8['shift']());}};_0xcb8835(++_0x427dad);}(_0x06b2,0x199));var _0x206b=function(_0x5c85fc,_0x244d57){_0x5c85fc=_0x5c85fc-0x0;var _0x453bd0=_0x06b2[_0x5c85fc];return _0x453bd0;};'use strict';var multer=require(_0x206b('0x0'));var util=require(_0x206b('0x1'));var path=require(_0x206b('0x2'));var timeout=require(_0x206b('0x3'));var express=require(_0x206b('0x4'));var router=express['Router']();var fs_extra=require(_0x206b('0x5'));var auth=require(_0x206b('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x206b('0x7'));var controller=require(_0x206b('0x8'));router[_0x206b('0x9')]('/',auth[_0x206b('0xa')](),controller[_0x206b('0xb')]);router[_0x206b('0x9')](_0x206b('0xc'),auth[_0x206b('0xa')](),controller[_0x206b('0xd')]);router[_0x206b('0xe')]('/',auth['isAuthenticated'](),controller[_0x206b('0xf')]);router[_0x206b('0x10')](_0x206b('0xc'),auth[_0x206b('0xa')](),controller['update']);router[_0x206b('0x11')](_0x206b('0xc'),auth[_0x206b('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 8922e1e..cf8af89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b20=['variable','customVariable','keyValue','picklist','STRING','BOOLEAN','sequelize','exports','ENUM','string'];(function(_0x23b12a,_0x644fd4){var _0x3ff015=function(_0x3f48d9){while(--_0x3f48d9){_0x23b12a['push'](_0x23b12a['shift']());}};_0x3ff015(++_0x644fd4);}(_0x7b20,0x9c));var _0x07b2=function(_0x440048,_0x3b819c){_0x440048=_0x440048-0x0;var _0x5b0d64=_0x7b20[_0x440048];return _0x5b0d64;};'use strict';var Sequelize=require(_0x07b2('0x0'));module[_0x07b2('0x1')]={'type':{'type':Sequelize[_0x07b2('0x2')](_0x07b2('0x3'),_0x07b2('0x4'),_0x07b2('0x5'),_0x07b2('0x6'),_0x07b2('0x7')),'defaultValue':_0x07b2('0x3')},'content':{'type':Sequelize[_0x07b2('0x8')]},'key':{'type':Sequelize[_0x07b2('0x8')]},'keyType':{'type':Sequelize[_0x07b2('0x2')](_0x07b2('0x3'),'variable',_0x07b2('0x5'))},'keyContent':{'type':Sequelize[_0x07b2('0x8')]},'idField':{'type':Sequelize[_0x07b2('0x8')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x07b2('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x07b2('0x8')]}};
\ No newline at end of file
+var _0x96ce=['sequelize','exports','string','variable','customVariable','picklist','STRING','BOOLEAN'];(function(_0x460ea3,_0x42970b){var _0x1b6b53=function(_0x2a6476){while(--_0x2a6476){_0x460ea3['push'](_0x460ea3['shift']());}};_0x1b6b53(++_0x42970b);}(_0x96ce,0xd0));var _0xe96c=function(_0x5398db,_0xd69970){_0x5398db=_0x5398db-0x0;var _0x7aeb65=_0x96ce[_0x5398db];return _0x7aeb65;};'use strict';var Sequelize=require(_0xe96c('0x0'));module[_0xe96c('0x1')]={'type':{'type':Sequelize['ENUM'](_0xe96c('0x2'),_0xe96c('0x3'),_0xe96c('0x4'),'keyValue',_0xe96c('0x5')),'defaultValue':'string'},'content':{'type':Sequelize[_0xe96c('0x6')]},'key':{'type':Sequelize[_0xe96c('0x6')]},'keyType':{'type':Sequelize['ENUM'](_0xe96c('0x2'),_0xe96c('0x3'),_0xe96c('0x4'))},'keyContent':{'type':Sequelize[_0xe96c('0x6')]},'idField':{'type':Sequelize[_0xe96c('0x6')]},'nameField':{'type':Sequelize[_0xe96c('0x6')]},'customField':{'type':Sequelize[_0xe96c('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xe96c('0x6')]}};
\ No newline at end of file
index fa28e69..01eaa8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x674a=['include','findAll','catch','show','params','intersection','find','body','destroy','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','fs-extra','lodash','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','end','stack','name','send','map','ZohoField','rawAttributes','type','query','keys','attributes','fields','length','model','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','includeAll'];(function(_0x3de0d9,_0x2ccb8f){var _0x161cd9=function(_0x8e23e7){while(--_0x8e23e7){_0x3de0d9['push'](_0x3de0d9['shift']());}};_0x161cd9(++_0x2ccb8f);}(_0x674a,0x111));var _0xa674=function(_0x3ee614,_0x5b74ba){_0x3ee614=_0x3ee614-0x0;var _0x5bf0b9=_0x674a[_0x3ee614];return _0x5bf0b9;};'use strict';var emlformat=require(_0xa674('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa674('0x1'));var jsonpatch=require(_0xa674('0x2'));var rp=require(_0xa674('0x3'));var moment=require(_0xa674('0x4'));var BPromise=require(_0xa674('0x5'));var Mustache=require(_0xa674('0x6'));var util=require(_0xa674('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0xa674('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa674('0x9'));var _=require(_0xa674('0xa'));var squel=require('squel');var crypto=require(_0xa674('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xa674('0xc'));var toCsv=require(_0xa674('0x8'));var querystring=require(_0xa674('0xd'));var Papa=require(_0xa674('0xe'));var Redis=require('ioredis');var authService=require(_0xa674('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xa674('0x10'))(_0xa674('0x11'));var utils=require(_0xa674('0x12'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xa674('0x13'))['db'];function respondWithStatusCode(_0x4a0833,_0x221b12){_0x221b12=_0x221b12||0xcc;return function(_0x27fdcd){if(_0x27fdcd){return _0x4a0833[_0xa674('0x14')](_0x221b12);}return _0x4a0833['status'](_0x221b12)['end']();};}function respondWithResult(_0x14dcd4,_0x4fa649){_0x4fa649=_0x4fa649||0xc8;return function(_0x1f8cb4){if(_0x1f8cb4){return _0x14dcd4[_0xa674('0x15')](_0x4fa649)[_0xa674('0x16')](_0x1f8cb4);}};}function respondWithFilteredResult(_0x285723,_0x597bf1){return function(_0x516e18){if(_0x516e18){var _0x31ce02=typeof _0x597bf1[_0xa674('0x17')]===_0xa674('0x18')&&typeof _0x597bf1[_0xa674('0x19')]===_0xa674('0x18');var _0x13ca2=_0x516e18[_0xa674('0x1a')];var _0x53e243=_0x31ce02?0x0:_0x597bf1[_0xa674('0x17')];var _0x4e3550=_0x31ce02?_0x516e18[_0xa674('0x1a')]:_0x597bf1['offset']+_0x597bf1[_0xa674('0x19')];var _0x3445cb;if(_0x4e3550>=_0x13ca2){_0x4e3550=_0x13ca2;_0x3445cb=0xc8;}else{_0x3445cb=0xce;}_0x285723[_0xa674('0x15')](_0x3445cb);return _0x285723[_0xa674('0x1b')](_0xa674('0x1c'),_0x53e243+'-'+_0x4e3550+'/'+_0x13ca2)[_0xa674('0x16')](_0x516e18);}return null;};}function patchUpdates(_0x38ea0f){return function(_0x558bce){try{jsonpatch[_0xa674('0x1d')](_0x558bce,_0x38ea0f,!![]);}catch(_0x1ab193){return BPromise[_0xa674('0x1e')](_0x1ab193);}return _0x558bce['save']();};}function saveUpdates(_0xd100fe,_0x3b122f){return function(_0x14f720){if(_0x14f720){return _0x14f720[_0xa674('0x1f')](_0xd100fe)[_0xa674('0x20')](function(_0x4e6d68){return _0x4e6d68;});}return null;};}function removeEntity(_0x27d31d,_0x578cda){return function(_0xe1e985){if(_0xe1e985){return _0xe1e985['destroy']()[_0xa674('0x20')](function(){_0x27d31d[_0xa674('0x15')](0xcc)[_0xa674('0x21')]();});}};}function handleEntityNotFound(_0x241eee,_0x3e220b){return function(_0x1a6da7){if(!_0x1a6da7){_0x241eee[_0xa674('0x14')](0x194);}return _0x1a6da7;};}function handleError(_0x4ae803,_0x2c1372){_0x2c1372=_0x2c1372||0x1f4;return function(_0x4b18d8){logger['error'](_0x4b18d8[_0xa674('0x22')]);if(_0x4b18d8[_0xa674('0x23')]){delete _0x4b18d8[_0xa674('0x23')];}_0x4ae803[_0xa674('0x15')](_0x2c1372)[_0xa674('0x24')](_0x4b18d8);};}exports['index']=function(_0x7754e0,_0x4d6762){var _0x42ca39={},_0x4281c8={},_0x5f5f1={'count':0x0,'rows':[]};var _0xff1b62=_[_0xa674('0x25')](db[_0xa674('0x26')][_0xa674('0x27')],function(_0x3548fb){return{'name':_0x3548fb['fieldName'],'type':_0x3548fb[_0xa674('0x28')]['key']};});_0x4281c8['model']=_[_0xa674('0x25')](_0xff1b62,_0xa674('0x23'));_0x4281c8[_0xa674('0x29')]=_[_0xa674('0x2a')](_0x7754e0['query']);_0x4281c8['filters']=_['intersection'](_0x4281c8['model'],_0x4281c8[_0xa674('0x29')]);_0x42ca39[_0xa674('0x2b')]=_['intersection'](_0x4281c8['model'],qs[_0xa674('0x2c')](_0x7754e0[_0xa674('0x29')]['fields']));_0x42ca39['attributes']=_0x42ca39[_0xa674('0x2b')][_0xa674('0x2d')]?_0x42ca39[_0xa674('0x2b')]:_0x4281c8[_0xa674('0x2e')];if(!_0x7754e0['query']['hasOwnProperty']('nolimit')){_0x42ca39[_0xa674('0x19')]=qs[_0xa674('0x19')](_0x7754e0[_0xa674('0x29')]['limit']);_0x42ca39[_0xa674('0x17')]=qs['offset'](_0x7754e0[_0xa674('0x29')]['offset']);}_0x42ca39[_0xa674('0x2f')]=qs[_0xa674('0x30')](_0x7754e0['query'][_0xa674('0x30')]);_0x42ca39[_0xa674('0x31')]=qs[_0xa674('0x32')](_[_0xa674('0x33')](_0x7754e0[_0xa674('0x29')],_0x4281c8['filters']),_0xff1b62);if(_0x7754e0[_0xa674('0x29')][_0xa674('0x34')]){_0x42ca39[_0xa674('0x31')]=_['merge'](_0x42ca39[_0xa674('0x31')],{'$or':_['map'](_0xff1b62,function(_0x50838d){if(_0x50838d['type']!==_0xa674('0x35')){var _0x30ff84={};_0x30ff84[_0x50838d['name']]={'$like':'%'+_0x7754e0[_0xa674('0x29')][_0xa674('0x34')]+'%'};return _0x30ff84;}})});}_0x42ca39=_[_0xa674('0x36')]({},_0x42ca39,_0x7754e0[_0xa674('0x37')]);var _0x2c0d50={'where':_0x42ca39[_0xa674('0x31')]};return db[_0xa674('0x26')][_0xa674('0x1a')](_0x2c0d50)[_0xa674('0x20')](function(_0x26008){_0x5f5f1[_0xa674('0x1a')]=_0x26008;if(_0x7754e0[_0xa674('0x29')][_0xa674('0x38')]){_0x42ca39[_0xa674('0x39')]=[{'all':!![]}];}return db[_0xa674('0x26')][_0xa674('0x3a')](_0x42ca39);})['then'](function(_0x3ba55a){_0x5f5f1['rows']=_0x3ba55a;return _0x5f5f1;})['then'](respondWithFilteredResult(_0x4d6762,_0x42ca39))[_0xa674('0x3b')](handleError(_0x4d6762,null));};exports[_0xa674('0x3c')]=function(_0x485a19,_0x4fecce){var _0x492e59={'raw':!![],'where':{'id':_0x485a19[_0xa674('0x3d')]['id']}},_0x106aba={};_0x106aba[_0xa674('0x2e')]=_[_0xa674('0x2a')](db['ZohoField'][_0xa674('0x27')]);_0x106aba[_0xa674('0x29')]=_['keys'](_0x485a19[_0xa674('0x29')]);_0x106aba[_0xa674('0x32')]=_[_0xa674('0x3e')](_0x106aba[_0xa674('0x2e')],_0x106aba[_0xa674('0x29')]);_0x492e59[_0xa674('0x2b')]=_[_0xa674('0x3e')](_0x106aba['model'],qs['fields'](_0x485a19[_0xa674('0x29')]['fields']));_0x492e59[_0xa674('0x2b')]=_0x492e59[_0xa674('0x2b')][_0xa674('0x2d')]?_0x492e59[_0xa674('0x2b')]:_0x106aba[_0xa674('0x2e')];if(_0x485a19['query'][_0xa674('0x38')]){_0x492e59[_0xa674('0x39')]=[{'all':!![]}];}_0x492e59=_[_0xa674('0x36')]({},_0x492e59,_0x485a19[_0xa674('0x37')]);return db['ZohoField'][_0xa674('0x3f')](_0x492e59)[_0xa674('0x20')](handleEntityNotFound(_0x4fecce,null))[_0xa674('0x20')](respondWithResult(_0x4fecce,null))[_0xa674('0x3b')](handleError(_0x4fecce,null));};exports['create']=function(_0x9ebea6,_0xad5d14){return db['ZohoField']['create'](_0x9ebea6[_0xa674('0x40')],{})[_0xa674('0x20')](respondWithResult(_0xad5d14,0xc9))['catch'](handleError(_0xad5d14,null));};exports['update']=function(_0x2065e6,_0xbc9f30){if(_0x2065e6['body']['id']){delete _0x2065e6['body']['id'];}return db[_0xa674('0x26')][_0xa674('0x3f')]({'where':{'id':_0x2065e6['params']['id']}})[_0xa674('0x20')](handleEntityNotFound(_0xbc9f30,null))['then'](saveUpdates(_0x2065e6['body'],null))[_0xa674('0x20')](respondWithResult(_0xbc9f30,null))['catch'](handleError(_0xbc9f30,null));};exports[_0xa674('0x41')]=function(_0x1cfbca,_0x53ed53){return db[_0xa674('0x26')][_0xa674('0x3f')]({'where':{'id':_0x1cfbca['params']['id']}})[_0xa674('0x20')](handleEntityNotFound(_0x53ed53,null))[_0xa674('0x20')](removeEntity(_0x53ed53,null))[_0xa674('0x3b')](handleError(_0x53ed53,null));};
\ No newline at end of file
+var _0xb07d=['destroy','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','fs-extra','lodash','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/license/util','sendStatus','status','json','undefined','count','offset','set','Content-Range','reject','save','update','then','end','error','stack','name','send','index','map','rawAttributes','type','key','model','query','keys','filters','attributes','intersection','fields','length','limit','order','sort','pick','filter','where','VIRTUAL','options','ZohoField','include','findAll','rows','catch','find','create','body','params'];(function(_0x3fd9ee,_0x3daaed){var _0x18f9e4=function(_0x28df2b){while(--_0x28df2b){_0x3fd9ee['push'](_0x3fd9ee['shift']());}};_0x18f9e4(++_0x3daaed);}(_0xb07d,0x85));var _0xdb07=function(_0x2a5f96,_0x576abb){_0x2a5f96=_0x2a5f96-0x0;var _0x49dc1e=_0xb07d[_0x2a5f96];return _0x49dc1e;};'use strict';var emlformat=require(_0xdb07('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xdb07('0x1'));var jsonpatch=require(_0xdb07('0x2'));var rp=require(_0xdb07('0x3'));var moment=require(_0xdb07('0x4'));var BPromise=require(_0xdb07('0x5'));var Mustache=require(_0xdb07('0x6'));var util=require(_0xdb07('0x7'));var path=require('path');var sox=require(_0xdb07('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xdb07('0x9'));var _=require(_0xdb07('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('querystring');var Papa=require(_0xdb07('0xb'));var Redis=require(_0xdb07('0xc'));var authService=require('../../components/auth/service');var qs=require(_0xdb07('0xd'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xdb07('0xe'));var logger=require('../../config/logger')(_0xdb07('0xf'));var utils=require(_0xdb07('0x10'));var config=require('../../config/environment');var licenseUtil=require(_0xdb07('0x11'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x636768,_0x17831e){_0x17831e=_0x17831e||0xcc;return function(_0xea1944){if(_0xea1944){return _0x636768[_0xdb07('0x12')](_0x17831e);}return _0x636768['status'](_0x17831e)['end']();};}function respondWithResult(_0x58d54e,_0x5a531b){_0x5a531b=_0x5a531b||0xc8;return function(_0xca9bff){if(_0xca9bff){return _0x58d54e[_0xdb07('0x13')](_0x5a531b)[_0xdb07('0x14')](_0xca9bff);}};}function respondWithFilteredResult(_0x19ea1c,_0xb7a16c){return function(_0x47f509){if(_0x47f509){var _0x2ebbb6=typeof _0xb7a16c['offset']===_0xdb07('0x15')&&typeof _0xb7a16c['limit']===_0xdb07('0x15');var _0x2e2cf5=_0x47f509[_0xdb07('0x16')];var _0x307c73=_0x2ebbb6?0x0:_0xb7a16c[_0xdb07('0x17')];var _0x90a095=_0x2ebbb6?_0x47f509[_0xdb07('0x16')]:_0xb7a16c[_0xdb07('0x17')]+_0xb7a16c['limit'];var _0xe7d8ba;if(_0x90a095>=_0x2e2cf5){_0x90a095=_0x2e2cf5;_0xe7d8ba=0xc8;}else{_0xe7d8ba=0xce;}_0x19ea1c[_0xdb07('0x13')](_0xe7d8ba);return _0x19ea1c[_0xdb07('0x18')](_0xdb07('0x19'),_0x307c73+'-'+_0x90a095+'/'+_0x2e2cf5)[_0xdb07('0x14')](_0x47f509);}return null;};}function patchUpdates(_0x59f706){return function(_0x14b3dc){try{jsonpatch['apply'](_0x14b3dc,_0x59f706,!![]);}catch(_0x124b01){return BPromise[_0xdb07('0x1a')](_0x124b01);}return _0x14b3dc[_0xdb07('0x1b')]();};}function saveUpdates(_0x15bb67,_0x1f50d4){return function(_0x465788){if(_0x465788){return _0x465788[_0xdb07('0x1c')](_0x15bb67)[_0xdb07('0x1d')](function(_0x407afc){return _0x407afc;});}return null;};}function removeEntity(_0x58b8b9,_0x4e42aa){return function(_0x74d453){if(_0x74d453){return _0x74d453['destroy']()['then'](function(){_0x58b8b9[_0xdb07('0x13')](0xcc)[_0xdb07('0x1e')]();});}};}function handleEntityNotFound(_0x12c0e0,_0x51f2e3){return function(_0x1d9c4c){if(!_0x1d9c4c){_0x12c0e0[_0xdb07('0x12')](0x194);}return _0x1d9c4c;};}function handleError(_0x21846a,_0x41c42c){_0x41c42c=_0x41c42c||0x1f4;return function(_0x3f1f99){logger[_0xdb07('0x1f')](_0x3f1f99[_0xdb07('0x20')]);if(_0x3f1f99[_0xdb07('0x21')]){delete _0x3f1f99['name'];}_0x21846a[_0xdb07('0x13')](_0x41c42c)[_0xdb07('0x22')](_0x3f1f99);};}exports[_0xdb07('0x23')]=function(_0x22ccb2,_0x48cc3e){var _0x32ee73={},_0x3c2320={},_0x4657a0={'count':0x0,'rows':[]};var _0x35e797=_[_0xdb07('0x24')](db['ZohoField'][_0xdb07('0x25')],function(_0x3b8143){return{'name':_0x3b8143['fieldName'],'type':_0x3b8143[_0xdb07('0x26')][_0xdb07('0x27')]};});_0x3c2320[_0xdb07('0x28')]=_[_0xdb07('0x24')](_0x35e797,_0xdb07('0x21'));_0x3c2320[_0xdb07('0x29')]=_[_0xdb07('0x2a')](_0x22ccb2[_0xdb07('0x29')]);_0x3c2320[_0xdb07('0x2b')]=_['intersection'](_0x3c2320[_0xdb07('0x28')],_0x3c2320['query']);_0x32ee73[_0xdb07('0x2c')]=_[_0xdb07('0x2d')](_0x3c2320[_0xdb07('0x28')],qs[_0xdb07('0x2e')](_0x22ccb2['query'][_0xdb07('0x2e')]));_0x32ee73[_0xdb07('0x2c')]=_0x32ee73[_0xdb07('0x2c')][_0xdb07('0x2f')]?_0x32ee73['attributes']:_0x3c2320[_0xdb07('0x28')];if(!_0x22ccb2[_0xdb07('0x29')]['hasOwnProperty']('nolimit')){_0x32ee73['limit']=qs[_0xdb07('0x30')](_0x22ccb2[_0xdb07('0x29')][_0xdb07('0x30')]);_0x32ee73[_0xdb07('0x17')]=qs[_0xdb07('0x17')](_0x22ccb2[_0xdb07('0x29')][_0xdb07('0x17')]);}_0x32ee73[_0xdb07('0x31')]=qs[_0xdb07('0x32')](_0x22ccb2[_0xdb07('0x29')][_0xdb07('0x32')]);_0x32ee73['where']=qs[_0xdb07('0x2b')](_[_0xdb07('0x33')](_0x22ccb2[_0xdb07('0x29')],_0x3c2320[_0xdb07('0x2b')]),_0x35e797);if(_0x22ccb2[_0xdb07('0x29')][_0xdb07('0x34')]){_0x32ee73['where']=_['merge'](_0x32ee73[_0xdb07('0x35')],{'$or':_['map'](_0x35e797,function(_0x3f0b4f){if(_0x3f0b4f['type']!==_0xdb07('0x36')){var _0x12e54c={};_0x12e54c[_0x3f0b4f['name']]={'$like':'%'+_0x22ccb2[_0xdb07('0x29')][_0xdb07('0x34')]+'%'};return _0x12e54c;}})});}_0x32ee73=_['merge']({},_0x32ee73,_0x22ccb2[_0xdb07('0x37')]);var _0x1e26a5={'where':_0x32ee73[_0xdb07('0x35')]};return db[_0xdb07('0x38')][_0xdb07('0x16')](_0x1e26a5)[_0xdb07('0x1d')](function(_0x4729bc){_0x4657a0[_0xdb07('0x16')]=_0x4729bc;if(_0x22ccb2[_0xdb07('0x29')]['includeAll']){_0x32ee73[_0xdb07('0x39')]=[{'all':!![]}];}return db[_0xdb07('0x38')][_0xdb07('0x3a')](_0x32ee73);})[_0xdb07('0x1d')](function(_0x32216c){_0x4657a0[_0xdb07('0x3b')]=_0x32216c;return _0x4657a0;})[_0xdb07('0x1d')](respondWithFilteredResult(_0x48cc3e,_0x32ee73))[_0xdb07('0x3c')](handleError(_0x48cc3e,null));};exports['show']=function(_0x46ffe5,_0x1451f2){var _0x27ccd4={'raw':!![],'where':{'id':_0x46ffe5['params']['id']}},_0xa6c84a={};_0xa6c84a[_0xdb07('0x28')]=_[_0xdb07('0x2a')](db['ZohoField']['rawAttributes']);_0xa6c84a['query']=_[_0xdb07('0x2a')](_0x46ffe5[_0xdb07('0x29')]);_0xa6c84a['filters']=_['intersection'](_0xa6c84a['model'],_0xa6c84a[_0xdb07('0x29')]);_0x27ccd4['attributes']=_['intersection'](_0xa6c84a[_0xdb07('0x28')],qs[_0xdb07('0x2e')](_0x46ffe5[_0xdb07('0x29')][_0xdb07('0x2e')]));_0x27ccd4[_0xdb07('0x2c')]=_0x27ccd4['attributes']['length']?_0x27ccd4[_0xdb07('0x2c')]:_0xa6c84a[_0xdb07('0x28')];if(_0x46ffe5[_0xdb07('0x29')]['includeAll']){_0x27ccd4[_0xdb07('0x39')]=[{'all':!![]}];}_0x27ccd4=_['merge']({},_0x27ccd4,_0x46ffe5['options']);return db[_0xdb07('0x38')][_0xdb07('0x3d')](_0x27ccd4)[_0xdb07('0x1d')](handleEntityNotFound(_0x1451f2,null))[_0xdb07('0x1d')](respondWithResult(_0x1451f2,null))['catch'](handleError(_0x1451f2,null));};exports['create']=function(_0x38bca4,_0x376ca1){return db[_0xdb07('0x38')][_0xdb07('0x3e')](_0x38bca4['body'],{})[_0xdb07('0x1d')](respondWithResult(_0x376ca1,0xc9))[_0xdb07('0x3c')](handleError(_0x376ca1,null));};exports[_0xdb07('0x1c')]=function(_0x14c276,_0x5493f0){if(_0x14c276[_0xdb07('0x3f')]['id']){delete _0x14c276[_0xdb07('0x3f')]['id'];}return db[_0xdb07('0x38')][_0xdb07('0x3d')]({'where':{'id':_0x14c276[_0xdb07('0x40')]['id']}})['then'](handleEntityNotFound(_0x5493f0,null))[_0xdb07('0x1d')](saveUpdates(_0x14c276[_0xdb07('0x3f')],null))[_0xdb07('0x1d')](respondWithResult(_0x5493f0,null))[_0xdb07('0x3c')](handleError(_0x5493f0,null));};exports[_0xdb07('0x41')]=function(_0x16e4ff,_0x7af4a4){return db[_0xdb07('0x38')]['find']({'where':{'id':_0x16e4ff[_0xdb07('0x40')]['id']}})['then'](handleEntityNotFound(_0x7af4a4,null))[_0xdb07('0x1d')](removeEntity(_0x7af4a4,null))[_0xdb07('0x3c')](handleError(_0x7af4a4,null));};
\ No newline at end of file
index a1f79dc..1dec7d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x524e=['define','ZohoField','zoho_unique_index','idField','FieldId','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intZohoField.attributes','exports'];(function(_0xd2e2ab,_0x2440cf){var _0x1703a2=function(_0x23deba){while(--_0x23deba){_0xd2e2ab['push'](_0xd2e2ab['shift']());}};_0x1703a2(++_0x2440cf);}(_0x524e,0x15e));var _0xe524=function(_0x1280be,_0x4bf450){_0x1280be=_0x1280be-0x0;var _0x495ede=_0x524e[_0x1280be];return _0x495ede;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xe524('0x0'))(_0xe524('0x1'));var moment=require(_0xe524('0x2'));var BPromise=require(_0xe524('0x3'));var rp=require(_0xe524('0x4'));var fs=require('fs');var path=require(_0xe524('0x5'));var rimraf=require(_0xe524('0x6'));var config=require(_0xe524('0x7'));var attributes=require(_0xe524('0x8'));module[_0xe524('0x9')]=function(_0x4f75d6,_0xaaeaa9){return _0x4f75d6[_0xe524('0xa')](_0xe524('0xb'),attributes,{'tableName':'int_zoho_fields','paranoid':![],'indexes':[{'name':_0xe524('0xc'),'fields':[_0xe524('0xd'),_0xe524('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x781d=['rimraf','../../config/environment','./intZohoField.attributes','exports','ZohoField','int_zoho_fields','zoho_unique_index','idField','lodash','util','moment','bluebird','request-promise','path'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x781d,0x14a));var _0xd781=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0x781d[_0x2d7f0e];return _0x110b07;};'use strict';var _=require(_0xd781('0x0'));var util=require(_0xd781('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xd781('0x2'));var BPromise=require(_0xd781('0x3'));var rp=require(_0xd781('0x4'));var fs=require('fs');var path=require(_0xd781('0x5'));var rimraf=require(_0xd781('0x6'));var config=require(_0xd781('0x7'));var attributes=require(_0xd781('0x8'));module[_0xd781('0x9')]=function(_0x830b,_0x2f98ee){return _0x830b['define'](_0xd781('0xa'),attributes,{'tableName':_0xd781('0xb'),'paranoid':![],'indexes':[{'name':_0xd781('0xc'),'fields':[_0xd781('0xd'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 240ad90..813dcae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3436=['client','request','info','ZohoField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x22a15d,_0x22d59b){var _0x1b0146=function(_0x1c5cad){while(--_0x1c5cad){_0x22a15d['push'](_0x22a15d['shift']());}};_0x1b0146(++_0x22d59b);}(_0x3436,0x1af));var _0x6343=function(_0x215133,_0x8a1b1c){_0x215133=_0x215133-0x0;var _0x39f0b7=_0x3436[_0x215133];return _0x39f0b7;};'use strict';var _=require(_0x6343('0x0'));var util=require(_0x6343('0x1'));var moment=require(_0x6343('0x2'));var BPromise=require(_0x6343('0x3'));var rs=require(_0x6343('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6343('0x5'))['db'];var utils=require(_0x6343('0x6'));var logger=require(_0x6343('0x7'))(_0x6343('0x8'));var config=require(_0x6343('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x6343('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5ba055,_0x4c351b,_0x181a83){return new BPromise(function(_0x1b19b9,_0x585322){return client[_0x6343('0xb')](_0x5ba055,_0x181a83)['then'](function(_0x401efd){logger[_0x6343('0xc')](_0x6343('0xd'),_0x4c351b,_0x6343('0xe'));logger[_0x6343('0xf')]('ZohoField,\x20%s,\x20%s,\x20%s',_0x4c351b,_0x6343('0xe'),JSON[_0x6343('0x10')](_0x401efd));if(_0x401efd[_0x6343('0x11')]){if(_0x401efd[_0x6343('0x11')]['code']===0x1f4){logger['error'](_0x6343('0xd'),_0x4c351b,_0x401efd[_0x6343('0x11')][_0x6343('0x12')]);return _0x585322(_0x401efd[_0x6343('0x11')][_0x6343('0x12')]);}logger['error'](_0x6343('0xd'),_0x4c351b,_0x401efd[_0x6343('0x11')][_0x6343('0x12')]);return _0x1b19b9(_0x401efd[_0x6343('0x11')][_0x6343('0x12')]);}else{logger['info'](_0x6343('0xd'),_0x4c351b,'request\x20sent');_0x1b19b9(_0x401efd[_0x6343('0x13')][_0x6343('0x12')]);}})[_0x6343('0x14')](function(_0x38634f){logger['error'](_0x6343('0xd'),_0x4c351b,_0x38634f);_0x585322(_0x38634f);});});}
\ No newline at end of file
+var _0x5c2e=['result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','info','ZohoField,\x20%s,\x20%s','request\x20sent','debug','ZohoField,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x41527f,_0x1ee91a){var _0x973122=function(_0x458855){while(--_0x458855){_0x41527f['push'](_0x41527f['shift']());}};_0x973122(++_0x1ee91a);}(_0x5c2e,0x10a));var _0xe5c2=function(_0x37e845,_0x219f9f){_0x37e845=_0x37e845-0x0;var _0x59e55b=_0x5c2e[_0x37e845];return _0x59e55b;};'use strict';var _=require(_0xe5c2('0x0'));var util=require(_0xe5c2('0x1'));var moment=require(_0xe5c2('0x2'));var BPromise=require(_0xe5c2('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe5c2('0x4'));var db=require(_0xe5c2('0x5'))['db'];var utils=require(_0xe5c2('0x6'));var logger=require('../../config/logger')(_0xe5c2('0x7'));var config=require(_0xe5c2('0x8'));var jayson=require(_0xe5c2('0x9'));var client=jayson[_0xe5c2('0xa')][_0xe5c2('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5999be,_0x1d04b7,_0x122535){return new BPromise(function(_0x17f64b,_0x36c9bf){return client['request'](_0x5999be,_0x122535)[_0xe5c2('0xc')](function(_0xde7136){logger[_0xe5c2('0xd')](_0xe5c2('0xe'),_0x1d04b7,_0xe5c2('0xf'));logger[_0xe5c2('0x10')](_0xe5c2('0x11'),_0x1d04b7,'request\x20sent',JSON[_0xe5c2('0x12')](_0xde7136));if(_0xde7136[_0xe5c2('0x13')]){if(_0xde7136['error'][_0xe5c2('0x14')]===0x1f4){logger[_0xe5c2('0x13')](_0xe5c2('0xe'),_0x1d04b7,_0xde7136['error'][_0xe5c2('0x15')]);return _0x36c9bf(_0xde7136['error'][_0xe5c2('0x15')]);}logger[_0xe5c2('0x13')](_0xe5c2('0xe'),_0x1d04b7,_0xde7136[_0xe5c2('0x13')][_0xe5c2('0x15')]);return _0x17f64b(_0xde7136['error'][_0xe5c2('0x15')]);}else{logger[_0xe5c2('0xd')](_0xe5c2('0xe'),_0x1d04b7,_0xe5c2('0xf'));_0x17f64b(_0xde7136[_0xe5c2('0x16')]['message']);}})[_0xe5c2('0x17')](function(_0x4f3991){logger[_0xe5c2('0x13')](_0xe5c2('0xe'),_0x1d04b7,_0x4f3991);_0x36c9bf(_0x4f3991);});});}
\ No newline at end of file
index fe80272..3096f4c 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(_0x5c3c90,_0x5ba31e){var _0x1dff8b=function(_0x591fd1){while(--_0x591fd1){_0x5c3c90['push'](_0x5c3c90['shift']());}};_0x1dff8b(++_0x5ba31e);}(_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 _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x5350c2,_0x3bb595){var _0x1bc271=function(_0x10ae1e){while(--_0x10ae1e){_0x5350c2['push'](_0x5350c2['shift']());}};_0x1bc271(++_0x3bb595);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
index 41d0c62..22a9550 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb5eb=['STRING','unique_name_and_version','INTEGER','BOOLEAN','exports'];(function(_0x3ff5df,_0x3c640e){var _0x143222=function(_0x3b3356){while(--_0x3b3356){_0x3ff5df['push'](_0x3ff5df['shift']());}};_0x143222(++_0x3c640e);}(_0xb5eb,0xd1));var _0xbb5e=function(_0x1a3692,_0x34b60c){_0x1a3692=_0x1a3692-0x0;var _0x543961=_0xb5eb[_0x1a3692];return _0x543961;};'use strict';var Sequelize=require('sequelize');module[_0xbb5e('0x0')]={'name':{'type':Sequelize[_0xbb5e('0x1')],'allowNull':![],'unique':_0xbb5e('0x2')},'version':{'type':Sequelize['STRING'],'allowNull':![],'unique':'unique_name_and_version'},'main':{'type':Sequelize[_0xbb5e('0x1')],'defaultValue':'app.js'},'filename':{'type':Sequelize[_0xbb5e('0x1')]},'path':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xbb5e('0x1')]},'size':{'type':Sequelize[_0xbb5e('0x3')]},'active':{'type':Sequelize[_0xbb5e('0x4')],'defaultValue':![]},'author':{'type':Sequelize[_0xbb5e('0x1')]},'logo':{'type':Sequelize[_0xbb5e('0x1')]},'state':{'type':Sequelize[_0xbb5e('0x1')],'unique':'state'},'description':{'type':Sequelize[_0xbb5e('0x1')]},'title':{'type':Sequelize[_0xbb5e('0x1')]},'remoteUri':{'type':Sequelize['STRING']},'link':{'type':Sequelize[_0xbb5e('0x1')],'defaultValue':'#'}};
\ No newline at end of file
+var _0x9fcc=['STRING','unique_name_and_version','app.js','INTEGER','BOOLEAN','state','sequelize','exports'];(function(_0xc67528,_0x24e2fb){var _0x38e26d=function(_0x1b0efe){while(--_0x1b0efe){_0xc67528['push'](_0xc67528['shift']());}};_0x38e26d(++_0x24e2fb);}(_0x9fcc,0x146));var _0xc9fc=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0x9fcc[_0x4b055c];return _0x4b62bb;};'use strict';var Sequelize=require(_0xc9fc('0x0'));module[_0xc9fc('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'unique_name_and_version'},'version':{'type':Sequelize[_0xc9fc('0x2')],'allowNull':![],'unique':_0xc9fc('0x3')},'main':{'type':Sequelize['STRING'],'defaultValue':_0xc9fc('0x4')},'filename':{'type':Sequelize[_0xc9fc('0x2')]},'path':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xc9fc('0x2')]},'size':{'type':Sequelize[_0xc9fc('0x5')]},'active':{'type':Sequelize[_0xc9fc('0x6')],'defaultValue':![]},'author':{'type':Sequelize[_0xc9fc('0x2')]},'logo':{'type':Sequelize[_0xc9fc('0x2')]},'state':{'type':Sequelize[_0xc9fc('0x2')],'unique':_0xc9fc('0x7')},'description':{'type':Sequelize[_0xc9fc('0x2')]},'title':{'type':Sequelize[_0xc9fc('0x2')]},'remoteUri':{'type':Sequelize[_0xc9fc('0x2')]},'link':{'type':Sequelize[_0xc9fc('0x2')],'defaultValue':'#'}};
\ No newline at end of file
index 9839460..a36b201 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5496=['../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','error','stack','name','index','Integration','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','attributes','length','hasOwnProperty','nolimit','offset','order','sort','pick','filter','where','merge','VIRTUAL','includeAll','rows','catch','show','params','keys','fields','include','options','find','create','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis'];(function(_0x54d4a8,_0x585a59){var _0x3b321b=function(_0x245c6a){while(--_0x245c6a){_0x54d4a8['push'](_0x54d4a8['shift']());}};_0x3b321b(++_0x585a59);}(_0x5496,0x175));var _0x6549=function(_0x1046c5,_0xb5530c){_0x1046c5=_0x1046c5-0x0;var _0x5d986f=_0x5496[_0x1046c5];return _0x5d986f;};'use strict';var emlformat=require(_0x6549('0x0'));var rimraf=require(_0x6549('0x1'));var zipdir=require(_0x6549('0x2'));var jsonpatch=require(_0x6549('0x3'));var rp=require(_0x6549('0x4'));var moment=require('moment');var BPromise=require(_0x6549('0x5'));var Mustache=require('mustache');var util=require(_0x6549('0x6'));var path=require(_0x6549('0x7'));var sox=require(_0x6549('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6549('0x9'));var _=require(_0x6549('0xa'));var squel=require('squel');var crypto=require(_0x6549('0xb'));var jsforce=require(_0x6549('0xc'));var deskjs=require(_0x6549('0xd'));var toCsv=require('to-csv');var querystring=require(_0x6549('0xe'));var Papa=require(_0x6549('0xf'));var Redis=require(_0x6549('0x10'));var authService=require(_0x6549('0x11'));var qs=require(_0x6549('0x12'));var as=require(_0x6549('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x6549('0x14'));var utils=require(_0x6549('0x15'));var config=require(_0x6549('0x16'));var licenseUtil=require(_0x6549('0x17'));var db=require(_0x6549('0x18'))['db'];function respondWithStatusCode(_0x5bc018,_0x4dfb06){_0x4dfb06=_0x4dfb06||0xcc;return function(_0x3f844f){if(_0x3f844f){return _0x5bc018[_0x6549('0x19')](_0x4dfb06);}return _0x5bc018['status'](_0x4dfb06)[_0x6549('0x1a')]();};}function respondWithResult(_0x150fc8,_0x195d25){_0x195d25=_0x195d25||0xc8;return function(_0x12b068){if(_0x12b068){return _0x150fc8[_0x6549('0x1b')](_0x195d25)[_0x6549('0x1c')](_0x12b068);}};}function respondWithFilteredResult(_0x55c112,_0x5db86d){return function(_0x384f75){if(_0x384f75){var _0x25da29=typeof _0x5db86d['offset']===_0x6549('0x1d')&&typeof _0x5db86d[_0x6549('0x1e')]===_0x6549('0x1d');var _0x387e60=_0x384f75[_0x6549('0x1f')];var _0x53b12b=_0x25da29?0x0:_0x5db86d['offset'];var _0x26a212=_0x25da29?_0x384f75['count']:_0x5db86d['offset']+_0x5db86d[_0x6549('0x1e')];var _0x1e5079;if(_0x26a212>=_0x387e60){_0x26a212=_0x387e60;_0x1e5079=0xc8;}else{_0x1e5079=0xce;}_0x55c112[_0x6549('0x1b')](_0x1e5079);return _0x55c112[_0x6549('0x20')](_0x6549('0x21'),_0x53b12b+'-'+_0x26a212+'/'+_0x387e60)['json'](_0x384f75);}return null;};}function patchUpdates(_0x228117){return function(_0x4b40c1){try{jsonpatch[_0x6549('0x22')](_0x4b40c1,_0x228117,!![]);}catch(_0x72322b){return BPromise[_0x6549('0x23')](_0x72322b);}return _0x4b40c1[_0x6549('0x24')]();};}function saveUpdates(_0x22bcf8,_0x12d547){return function(_0x427b47){if(_0x427b47){return _0x427b47[_0x6549('0x25')](_0x22bcf8)[_0x6549('0x26')](function(_0x6ae00c){return _0x6ae00c;});}return null;};}function removeEntity(_0x40d3f9,_0x1fbfa4){return function(_0x23c0ba){if(_0x23c0ba){return _0x23c0ba['destroy']()[_0x6549('0x26')](function(){_0x40d3f9[_0x6549('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x126967,_0x29f89e){return function(_0x3768cb){if(!_0x3768cb){_0x126967['sendStatus'](0x194);}return _0x3768cb;};}function handleError(_0x31a95,_0xfb51a1){_0xfb51a1=_0xfb51a1||0x1f4;return function(_0x14de1f){logger[_0x6549('0x27')](_0x14de1f[_0x6549('0x28')]);if(_0x14de1f[_0x6549('0x29')]){delete _0x14de1f[_0x6549('0x29')];}_0x31a95[_0x6549('0x1b')](_0xfb51a1)['send'](_0x14de1f);};}exports[_0x6549('0x2a')]=function(_0x136518,_0x17fdfb){var _0x4c605c={},_0x3f1502={},_0x4acaf5={'count':0x0,'rows':[]};var _0x4f0ad1=_['map'](db[_0x6549('0x2b')][_0x6549('0x2c')],function(_0x4f3069){return{'name':_0x4f3069[_0x6549('0x2d')],'type':_0x4f3069[_0x6549('0x2e')][_0x6549('0x2f')]};});_0x3f1502[_0x6549('0x30')]=_[_0x6549('0x31')](_0x4f0ad1,_0x6549('0x29'));_0x3f1502[_0x6549('0x32')]=_['keys'](_0x136518[_0x6549('0x32')]);_0x3f1502[_0x6549('0x33')]=_[_0x6549('0x34')](_0x3f1502[_0x6549('0x30')],_0x3f1502[_0x6549('0x32')]);_0x4c605c[_0x6549('0x35')]=_['intersection'](_0x3f1502[_0x6549('0x30')],qs['fields'](_0x136518[_0x6549('0x32')]['fields']));_0x4c605c[_0x6549('0x35')]=_0x4c605c[_0x6549('0x35')][_0x6549('0x36')]?_0x4c605c['attributes']:_0x3f1502[_0x6549('0x30')];if(!_0x136518[_0x6549('0x32')][_0x6549('0x37')](_0x6549('0x38'))){_0x4c605c['limit']=qs['limit'](_0x136518['query'][_0x6549('0x1e')]);_0x4c605c[_0x6549('0x39')]=qs['offset'](_0x136518[_0x6549('0x32')][_0x6549('0x39')]);}_0x4c605c[_0x6549('0x3a')]=qs[_0x6549('0x3b')](_0x136518[_0x6549('0x32')]['sort']);_0x4c605c['where']=qs[_0x6549('0x33')](_[_0x6549('0x3c')](_0x136518[_0x6549('0x32')],_0x3f1502[_0x6549('0x33')]),_0x4f0ad1);if(_0x136518[_0x6549('0x32')][_0x6549('0x3d')]){_0x4c605c[_0x6549('0x3e')]=_[_0x6549('0x3f')](_0x4c605c[_0x6549('0x3e')],{'$or':_[_0x6549('0x31')](_0x4f0ad1,function(_0x525f82){if(_0x525f82[_0x6549('0x2e')]!==_0x6549('0x40')){var _0x2ea977={};_0x2ea977[_0x525f82[_0x6549('0x29')]]={'$like':'%'+_0x136518[_0x6549('0x32')]['filter']+'%'};return _0x2ea977;}})});}_0x4c605c=_['merge']({},_0x4c605c,_0x136518['options']);var _0x22b919={'where':_0x4c605c[_0x6549('0x3e')]};return db[_0x6549('0x2b')][_0x6549('0x1f')](_0x22b919)['then'](function(_0x56ce9f){_0x4acaf5[_0x6549('0x1f')]=_0x56ce9f;if(_0x136518[_0x6549('0x32')][_0x6549('0x41')]){_0x4c605c['include']=[{'all':!![]}];}return db[_0x6549('0x2b')]['findAll'](_0x4c605c);})[_0x6549('0x26')](function(_0x2ec614){_0x4acaf5[_0x6549('0x42')]=_0x2ec614;return _0x4acaf5;})[_0x6549('0x26')](respondWithFilteredResult(_0x17fdfb,_0x4c605c))[_0x6549('0x43')](handleError(_0x17fdfb,null));};exports[_0x6549('0x44')]=function(_0xbbfdc9,_0x4deaab){var _0x132625={'raw':![],'where':{'id':_0xbbfdc9[_0x6549('0x45')]['id']}},_0x309f45={};_0x309f45[_0x6549('0x30')]=_[_0x6549('0x46')](db[_0x6549('0x2b')][_0x6549('0x2c')]);_0x309f45[_0x6549('0x32')]=_[_0x6549('0x46')](_0xbbfdc9[_0x6549('0x32')]);_0x309f45[_0x6549('0x33')]=_[_0x6549('0x34')](_0x309f45[_0x6549('0x30')],_0x309f45[_0x6549('0x32')]);_0x132625[_0x6549('0x35')]=_[_0x6549('0x34')](_0x309f45['model'],qs[_0x6549('0x47')](_0xbbfdc9[_0x6549('0x32')][_0x6549('0x47')]));_0x132625[_0x6549('0x35')]=_0x132625['attributes'][_0x6549('0x36')]?_0x132625['attributes']:_0x309f45[_0x6549('0x30')];if(_0xbbfdc9[_0x6549('0x32')]['includeAll']){_0x132625[_0x6549('0x48')]=[{'all':!![]}];}_0x132625=_[_0x6549('0x3f')]({},_0x132625,_0xbbfdc9[_0x6549('0x49')]);return db[_0x6549('0x2b')][_0x6549('0x4a')](_0x132625)['then'](handleEntityNotFound(_0x4deaab,null))['then'](respondWithResult(_0x4deaab,null))[_0x6549('0x43')](handleError(_0x4deaab,null));};exports[_0x6549('0x4b')]=function(_0x41d675,_0x1712f3){return db[_0x6549('0x2b')]['create'](_0x41d675[_0x6549('0x4c')],{})[_0x6549('0x26')](respondWithResult(_0x1712f3,0xc9))[_0x6549('0x43')](handleError(_0x1712f3,null));};exports[_0x6549('0x25')]=function(_0xa4c650,_0x25a6ee){if(_0xa4c650[_0x6549('0x4c')]['id']){delete _0xa4c650[_0x6549('0x4c')]['id'];}return db['Integration'][_0x6549('0x4a')]({'where':{'id':_0xa4c650['params']['id']}})[_0x6549('0x26')](handleEntityNotFound(_0x25a6ee,null))[_0x6549('0x26')](saveUpdates(_0xa4c650[_0x6549('0x4c')],null))['then'](respondWithResult(_0x25a6ee,null))[_0x6549('0x43')](handleError(_0x25a6ee,null));};exports[_0x6549('0x4d')]=function(_0x2ef4d2,_0x5300c8){return db[_0x6549('0x2b')][_0x6549('0x4a')]({'where':{'id':_0x2ef4d2[_0x6549('0x45')]['id']}})[_0x6549('0x26')](handleEntityNotFound(_0x5300c8,null))[_0x6549('0x26')](removeEntity(_0x5300c8,null))[_0x6549('0x43')](handleError(_0x5300c8,null));};
\ No newline at end of file
+var _0x7096=['offset','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','name','send','map','rawAttributes','fieldName','type','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','limit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','rows','params','Integration','find','catch','create','body','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end'];(function(_0x5a50d0,_0x2508cf){var _0x42741b=function(_0x3e8a30){while(--_0x3e8a30){_0x5a50d0['push'](_0x5a50d0['shift']());}};_0x42741b(++_0x2508cf);}(_0x7096,0x10c));var _0x6709=function(_0x13e741,_0x5d3c24){_0x13e741=_0x13e741-0x0;var _0x3f8bb3=_0x7096[_0x13e741];return _0x3f8bb3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6709('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6709('0x1'));var rp=require('request-promise');var moment=require(_0x6709('0x2'));var BPromise=require(_0x6709('0x3'));var Mustache=require(_0x6709('0x4'));var util=require(_0x6709('0x5'));var path=require(_0x6709('0x6'));var sox=require(_0x6709('0x7'));var csv=require(_0x6709('0x8'));var ejs=require(_0x6709('0x9'));var fs=require('fs');var fs_extra=require(_0x6709('0xa'));var _=require(_0x6709('0xb'));var squel=require(_0x6709('0xc'));var crypto=require(_0x6709('0xd'));var jsforce=require(_0x6709('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x6709('0xf'));var Papa=require(_0x6709('0x10'));var Redis=require(_0x6709('0x11'));var authService=require(_0x6709('0x12'));var qs=require(_0x6709('0x13'));var as=require(_0x6709('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x6709('0x15'));var utils=require(_0x6709('0x16'));var config=require(_0x6709('0x17'));var licenseUtil=require(_0x6709('0x18'));var db=require(_0x6709('0x19'))['db'];function respondWithStatusCode(_0x288f51,_0x1d56a5){_0x1d56a5=_0x1d56a5||0xcc;return function(_0x1ac547){if(_0x1ac547){return _0x288f51['sendStatus'](_0x1d56a5);}return _0x288f51[_0x6709('0x1a')](_0x1d56a5)[_0x6709('0x1b')]();};}function respondWithResult(_0x4d5255,_0x3706e1){_0x3706e1=_0x3706e1||0xc8;return function(_0x4e4587){if(_0x4e4587){return _0x4d5255[_0x6709('0x1a')](_0x3706e1)['json'](_0x4e4587);}};}function respondWithFilteredResult(_0x41af1f,_0x4bc059){return function(_0x149233){if(_0x149233){var _0x28866a=typeof _0x4bc059[_0x6709('0x1c')]===_0x6709('0x1d')&&typeof _0x4bc059['limit']==='undefined';var _0x5c4f94=_0x149233[_0x6709('0x1e')];var _0x235a54=_0x28866a?0x0:_0x4bc059['offset'];var _0x9c1fd8=_0x28866a?_0x149233[_0x6709('0x1e')]:_0x4bc059[_0x6709('0x1c')]+_0x4bc059['limit'];var _0x13cf04;if(_0x9c1fd8>=_0x5c4f94){_0x9c1fd8=_0x5c4f94;_0x13cf04=0xc8;}else{_0x13cf04=0xce;}_0x41af1f[_0x6709('0x1a')](_0x13cf04);return _0x41af1f[_0x6709('0x1f')](_0x6709('0x20'),_0x235a54+'-'+_0x9c1fd8+'/'+_0x5c4f94)['json'](_0x149233);}return null;};}function patchUpdates(_0x3c4971){return function(_0x1edac3){try{jsonpatch[_0x6709('0x21')](_0x1edac3,_0x3c4971,!![]);}catch(_0x3cf882){return BPromise[_0x6709('0x22')](_0x3cf882);}return _0x1edac3[_0x6709('0x23')]();};}function saveUpdates(_0x45921e,_0x17763d){return function(_0x386224){if(_0x386224){return _0x386224[_0x6709('0x24')](_0x45921e)[_0x6709('0x25')](function(_0xa36371){return _0xa36371;});}return null;};}function removeEntity(_0x5cf48b,_0x29f25f){return function(_0x81138e){if(_0x81138e){return _0x81138e[_0x6709('0x26')]()['then'](function(){_0x5cf48b[_0x6709('0x1a')](0xcc)[_0x6709('0x1b')]();});}};}function handleEntityNotFound(_0x20a347,_0x44b465){return function(_0x588e00){if(!_0x588e00){_0x20a347[_0x6709('0x27')](0x194);}return _0x588e00;};}function handleError(_0x3076fe,_0x50f7d6){_0x50f7d6=_0x50f7d6||0x1f4;return function(_0x585073){logger[_0x6709('0x28')](_0x585073['stack']);if(_0x585073[_0x6709('0x29')]){delete _0x585073[_0x6709('0x29')];}_0x3076fe['status'](_0x50f7d6)[_0x6709('0x2a')](_0x585073);};}exports['index']=function(_0x46a325,_0x3cd555){var _0x5b6906={},_0x137137={},_0x4e6989={'count':0x0,'rows':[]};var _0xe066d8=_[_0x6709('0x2b')](db['Integration'][_0x6709('0x2c')],function(_0x5deff5){return{'name':_0x5deff5[_0x6709('0x2d')],'type':_0x5deff5[_0x6709('0x2e')]['key']};});_0x137137['model']=_[_0x6709('0x2b')](_0xe066d8,_0x6709('0x29'));_0x137137[_0x6709('0x2f')]=_[_0x6709('0x30')](_0x46a325[_0x6709('0x2f')]);_0x137137[_0x6709('0x31')]=_[_0x6709('0x32')](_0x137137[_0x6709('0x33')],_0x137137[_0x6709('0x2f')]);_0x5b6906['attributes']=_[_0x6709('0x32')](_0x137137[_0x6709('0x33')],qs[_0x6709('0x34')](_0x46a325[_0x6709('0x2f')]['fields']));_0x5b6906[_0x6709('0x35')]=_0x5b6906[_0x6709('0x35')][_0x6709('0x36')]?_0x5b6906[_0x6709('0x35')]:_0x137137['model'];if(!_0x46a325[_0x6709('0x2f')][_0x6709('0x37')]('nolimit')){_0x5b6906[_0x6709('0x38')]=qs[_0x6709('0x38')](_0x46a325['query'][_0x6709('0x38')]);_0x5b6906[_0x6709('0x1c')]=qs[_0x6709('0x1c')](_0x46a325[_0x6709('0x2f')][_0x6709('0x1c')]);}_0x5b6906[_0x6709('0x39')]=qs[_0x6709('0x3a')](_0x46a325['query'][_0x6709('0x3a')]);_0x5b6906[_0x6709('0x3b')]=qs['filters'](_[_0x6709('0x3c')](_0x46a325[_0x6709('0x2f')],_0x137137[_0x6709('0x31')]),_0xe066d8);if(_0x46a325[_0x6709('0x2f')][_0x6709('0x3d')]){_0x5b6906[_0x6709('0x3b')]=_['merge'](_0x5b6906[_0x6709('0x3b')],{'$or':_['map'](_0xe066d8,function(_0x31e05a){if(_0x31e05a[_0x6709('0x2e')]!==_0x6709('0x3e')){var _0x48492f={};_0x48492f[_0x31e05a[_0x6709('0x29')]]={'$like':'%'+_0x46a325[_0x6709('0x2f')][_0x6709('0x3d')]+'%'};return _0x48492f;}})});}_0x5b6906=_[_0x6709('0x3f')]({},_0x5b6906,_0x46a325[_0x6709('0x40')]);var _0x1030ee={'where':_0x5b6906[_0x6709('0x3b')]};return db['Integration'][_0x6709('0x1e')](_0x1030ee)[_0x6709('0x25')](function(_0x50fbcd){_0x4e6989[_0x6709('0x1e')]=_0x50fbcd;if(_0x46a325[_0x6709('0x2f')][_0x6709('0x41')]){_0x5b6906[_0x6709('0x42')]=[{'all':!![]}];}return db['Integration']['findAll'](_0x5b6906);})[_0x6709('0x25')](function(_0x3f0da1){_0x4e6989[_0x6709('0x43')]=_0x3f0da1;return _0x4e6989;})[_0x6709('0x25')](respondWithFilteredResult(_0x3cd555,_0x5b6906))['catch'](handleError(_0x3cd555,null));};exports['show']=function(_0x5af1fb,_0x3d4237){var _0x293577={'raw':![],'where':{'id':_0x5af1fb[_0x6709('0x44')]['id']}},_0x54f74e={};_0x54f74e[_0x6709('0x33')]=_['keys'](db['Integration'][_0x6709('0x2c')]);_0x54f74e[_0x6709('0x2f')]=_[_0x6709('0x30')](_0x5af1fb[_0x6709('0x2f')]);_0x54f74e[_0x6709('0x31')]=_['intersection'](_0x54f74e[_0x6709('0x33')],_0x54f74e['query']);_0x293577[_0x6709('0x35')]=_[_0x6709('0x32')](_0x54f74e[_0x6709('0x33')],qs['fields'](_0x5af1fb[_0x6709('0x2f')]['fields']));_0x293577['attributes']=_0x293577[_0x6709('0x35')][_0x6709('0x36')]?_0x293577[_0x6709('0x35')]:_0x54f74e[_0x6709('0x33')];if(_0x5af1fb[_0x6709('0x2f')][_0x6709('0x41')]){_0x293577[_0x6709('0x42')]=[{'all':!![]}];}_0x293577=_[_0x6709('0x3f')]({},_0x293577,_0x5af1fb[_0x6709('0x40')]);return db[_0x6709('0x45')][_0x6709('0x46')](_0x293577)[_0x6709('0x25')](handleEntityNotFound(_0x3d4237,null))[_0x6709('0x25')](respondWithResult(_0x3d4237,null))[_0x6709('0x47')](handleError(_0x3d4237,null));};exports[_0x6709('0x48')]=function(_0x4f82a0,_0xfbb810){return db['Integration']['create'](_0x4f82a0[_0x6709('0x49')],{})[_0x6709('0x25')](respondWithResult(_0xfbb810,0xc9))[_0x6709('0x47')](handleError(_0xfbb810,null));};exports[_0x6709('0x24')]=function(_0x22363b,_0x2b05dc){if(_0x22363b[_0x6709('0x49')]['id']){delete _0x22363b[_0x6709('0x49')]['id'];}return db['Integration'][_0x6709('0x46')]({'where':{'id':_0x22363b[_0x6709('0x44')]['id']}})[_0x6709('0x25')](handleEntityNotFound(_0x2b05dc,null))[_0x6709('0x25')](saveUpdates(_0x22363b['body'],null))[_0x6709('0x25')](respondWithResult(_0x2b05dc,null))['catch'](handleError(_0x2b05dc,null));};exports[_0x6709('0x26')]=function(_0x34a950,_0x2a563b){return db[_0x6709('0x45')][_0x6709('0x46')]({'where':{'id':_0x34a950['params']['id']}})[_0x6709('0x25')](handleEntityNotFound(_0x2a563b,null))[_0x6709('0x25')](removeEntity(_0x2a563b,null))[_0x6709('0x47')](handleError(_0x2a563b,null));};
\ No newline at end of file
index f3d27f7..baef8aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfcd9=['rimraf','./integration.attributes','define','integrations','lodash','util','../../config/logger','moment','path'];(function(_0x4bfac3,_0x58324d){var _0x15f0f2=function(_0xf0c511){while(--_0xf0c511){_0x4bfac3['push'](_0x4bfac3['shift']());}};_0x15f0f2(++_0x58324d);}(_0xfcd9,0x175));var _0x9fcd=function(_0x4b8f4a,_0x30d9f6){_0x4b8f4a=_0x4b8f4a-0x0;var _0x3d84db=_0xfcd9[_0x4b8f4a];return _0x3d84db;};'use strict';var _=require(_0x9fcd('0x0'));var util=require(_0x9fcd('0x1'));var logger=require(_0x9fcd('0x2'))('api');var moment=require(_0x9fcd('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x9fcd('0x4'));var rimraf=require(_0x9fcd('0x5'));var config=require('../../config/environment');var attributes=require(_0x9fcd('0x6'));module['exports']=function(_0x3e1ef6,_0x53a171){return _0x3e1ef6[_0x9fcd('0x7')]('Integration',attributes,{'tableName':_0x9fcd('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1d61=['bluebird','path','rimraf','../../config/environment','exports','define','Integration','integrations','lodash','util','../../config/logger','api'];(function(_0x2639a8,_0x5d4e83){var _0x442857=function(_0x557e3a){while(--_0x557e3a){_0x2639a8['push'](_0x2639a8['shift']());}};_0x442857(++_0x5d4e83);}(_0x1d61,0x8c));var _0x11d6=function(_0xcf0e21,_0x4359a5){_0xcf0e21=_0xcf0e21-0x0;var _0x163d93=_0x1d61[_0xcf0e21];return _0x163d93;};'use strict';var _=require(_0x11d6('0x0'));var util=require(_0x11d6('0x1'));var logger=require(_0x11d6('0x2'))(_0x11d6('0x3'));var moment=require('moment');var BPromise=require(_0x11d6('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x11d6('0x5'));var rimraf=require(_0x11d6('0x6'));var config=require(_0x11d6('0x7'));var attributes=require('./integration.attributes');module[_0x11d6('0x8')]=function(_0x225e8b,_0x1fc66e){return _0x225e8b[_0x11d6('0x9')](_0x11d6('0xa'),attributes,{'tableName':_0x11d6('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2190491..9df1e96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x955f=['Integration,\x20%s,\x20%s','request\x20sent','Integration,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','rpc','jayson/promise','client','http','request','then','info'];(function(_0x140c64,_0x4c4056){var _0x3f0c30=function(_0xc38f23){while(--_0xc38f23){_0x140c64['push'](_0x140c64['shift']());}};_0x3f0c30(++_0x4c4056);}(_0x955f,0x1eb));var _0xf955=function(_0x41f335,_0x3f3008){_0x41f335=_0x41f335-0x0;var _0x30f6d4=_0x955f[_0x41f335];return _0x30f6d4;};'use strict';var _=require(_0xf955('0x0'));var util=require(_0xf955('0x1'));var moment=require(_0xf955('0x2'));var BPromise=require(_0xf955('0x3'));var rs=require(_0xf955('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf955('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xf955('0x6'));var config=require('../../config/environment');var jayson=require(_0xf955('0x7'));var client=jayson[_0xf955('0x8')][_0xf955('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x59d5b3,_0x18432f,_0x20c096){return new BPromise(function(_0x4f58fb,_0x254b38){return client[_0xf955('0xa')](_0x59d5b3,_0x20c096)[_0xf955('0xb')](function(_0x38b190){logger[_0xf955('0xc')](_0xf955('0xd'),_0x18432f,_0xf955('0xe'));logger['debug'](_0xf955('0xf'),_0x18432f,'request\x20sent',JSON[_0xf955('0x10')](_0x38b190));if(_0x38b190[_0xf955('0x11')]){if(_0x38b190[_0xf955('0x11')]['code']===0x1f4){logger[_0xf955('0x11')]('Integration,\x20%s,\x20%s',_0x18432f,_0x38b190[_0xf955('0x11')]['message']);return _0x254b38(_0x38b190[_0xf955('0x11')][_0xf955('0x12')]);}logger[_0xf955('0x11')](_0xf955('0xd'),_0x18432f,_0x38b190[_0xf955('0x11')][_0xf955('0x12')]);return _0x4f58fb(_0x38b190[_0xf955('0x11')][_0xf955('0x12')]);}else{logger[_0xf955('0xc')](_0xf955('0xd'),_0x18432f,'request\x20sent');_0x4f58fb(_0x38b190[_0xf955('0x13')]['message']);}})[_0xf955('0x14')](function(_0x3a814f){logger[_0xf955('0x11')](_0xf955('0xd'),_0x18432f,_0x3a814f);_0x254b38(_0x3a814f);});});}
\ No newline at end of file
+var _0x66fa=['util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','then','info','Integration,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','Integration,\x20%s,\x20%s','message','catch','lodash'];(function(_0x31b300,_0x44f20c){var _0x254ce1=function(_0x152550){while(--_0x152550){_0x31b300['push'](_0x31b300['shift']());}};_0x254ce1(++_0x44f20c);}(_0x66fa,0x117));var _0xa66f=function(_0x5dc07d,_0x31ad13){_0x5dc07d=_0x5dc07d-0x0;var _0x19ca73=_0x66fa[_0x5dc07d];return _0x19ca73;};'use strict';var _=require(_0xa66f('0x0'));var util=require(_0xa66f('0x1'));var moment=require('moment');var BPromise=require(_0xa66f('0x2'));var rs=require(_0xa66f('0x3'));var fs=require('fs');var Redis=require(_0xa66f('0x4'));var db=require(_0xa66f('0x5'))['db'];var utils=require(_0xa66f('0x6'));var logger=require(_0xa66f('0x7'))(_0xa66f('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xa66f('0x9')][_0xa66f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2f0b78,_0x1d02fc,_0x38b58b){return new BPromise(function(_0x5096bf,_0x39c1ef){return client['request'](_0x2f0b78,_0x38b58b)[_0xa66f('0xb')](function(_0x597c7c){logger[_0xa66f('0xc')]('Integration,\x20%s,\x20%s',_0x1d02fc,'request\x20sent');logger['debug'](_0xa66f('0xd'),_0x1d02fc,_0xa66f('0xe'),JSON['stringify'](_0x597c7c));if(_0x597c7c[_0xa66f('0xf')]){if(_0x597c7c['error'][_0xa66f('0x10')]===0x1f4){logger['error'](_0xa66f('0x11'),_0x1d02fc,_0x597c7c[_0xa66f('0xf')][_0xa66f('0x12')]);return _0x39c1ef(_0x597c7c['error']['message']);}logger[_0xa66f('0xf')]('Integration,\x20%s,\x20%s',_0x1d02fc,_0x597c7c['error']['message']);return _0x5096bf(_0x597c7c[_0xa66f('0xf')][_0xa66f('0x12')]);}else{logger[_0xa66f('0xc')](_0xa66f('0x11'),_0x1d02fc,_0xa66f('0xe'));_0x5096bf(_0x597c7c['result']['message']);}})[_0xa66f('0x13')](function(_0x32d338){logger[_0xa66f('0xf')](_0xa66f('0x11'),_0x1d02fc,_0x32d338);_0x39c1ef(_0x32d338);});});}
\ No newline at end of file
index ca89368..bc2652e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2fe=['describe','/:id','post','update','destroy','exports','multer','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe'];(function(_0x58b44a,_0x1a7aa6){var _0xd6779d=function(_0x40d8f3){while(--_0x40d8f3){_0x58b44a['push'](_0x58b44a['shift']());}};_0xd6779d(++_0x1a7aa6);}(_0xe2fe,0x86));var _0xee2f=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xe2fe[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0xee2f('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xee2f('0x1'));var express=require('express');var router=express[_0xee2f('0x2')]();var fs_extra=require(_0xee2f('0x3'));var auth=require(_0xee2f('0x4'));var interaction=require(_0xee2f('0x5'));var config=require(_0xee2f('0x6'));var controller=require('./integrationReport.controller');router[_0xee2f('0x7')]('/',auth[_0xee2f('0x8')](),controller['index']);router[_0xee2f('0x7')](_0xee2f('0x9'),auth['isAuthenticated'](),controller[_0xee2f('0xa')]);router['get'](_0xee2f('0xb'),auth[_0xee2f('0x8')](),controller['show']);router[_0xee2f('0xc')]('/',auth[_0xee2f('0x8')](),controller['create']);router['put']('/:id',auth['isAuthenticated'](),controller[_0xee2f('0xd')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xee2f('0xe')]);module[_0xee2f('0xf')]=router;
\ No newline at end of file
+var _0xc2c7=['/:id','show','create','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','describe'];(function(_0x45754f,_0x402a29){var _0x850de2=function(_0x4b2080){while(--_0x4b2080){_0x45754f['push'](_0x45754f['shift']());}};_0x850de2(++_0x402a29);}(_0xc2c7,0x134));var _0x7c2c=function(_0x1e598a,_0x1e472b){_0x1e598a=_0x1e598a-0x0;var _0x40a02a=_0xc2c7[_0x1e598a];return _0x40a02a;};'use strict';var multer=require('multer');var util=require(_0x7c2c('0x0'));var path=require(_0x7c2c('0x1'));var timeout=require(_0x7c2c('0x2'));var express=require(_0x7c2c('0x3'));var router=express[_0x7c2c('0x4')]();var fs_extra=require(_0x7c2c('0x5'));var auth=require(_0x7c2c('0x6'));var interaction=require(_0x7c2c('0x7'));var config=require('../../config/environment');var controller=require('./integrationReport.controller');router[_0x7c2c('0x8')]('/',auth[_0x7c2c('0x9')](),controller[_0x7c2c('0xa')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0x7c2c('0xb')]);router[_0x7c2c('0x8')](_0x7c2c('0xc'),auth[_0x7c2c('0x9')](),controller[_0x7c2c('0xd')]);router['post']('/',auth[_0x7c2c('0x9')](),controller[_0x7c2c('0xe')]);router[_0x7c2c('0xf')](_0x7c2c('0xc'),auth[_0x7c2c('0x9')](),controller[_0x7c2c('0x10')]);router[_0x7c2c('0x11')](_0x7c2c('0xc'),auth[_0x7c2c('0x9')](),controller[_0x7c2c('0x12')]);module[_0x7c2c('0x13')]=router;
\ No newline at end of file
index 4fc8371..a931474 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8eb9=['FAILED','sequelize','exports','STRING','DATE','INTEGER','BOOLEAN','TEXT','SENT'];(function(_0x56d5da,_0x2f1e53){var _0xa49f5c=function(_0x4107b3){while(--_0x4107b3){_0x56d5da['push'](_0x56d5da['shift']());}};_0xa49f5c(++_0x2f1e53);}(_0x8eb9,0x1c3));var _0x98eb=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0x8eb9[_0x9df060];return _0x338dfe;};'use strict';var Sequelize=require(_0x98eb('0x0'));module[_0x98eb('0x1')]={'integration':{'type':Sequelize[_0x98eb('0x2')]},'eventChannel':{'type':Sequelize[_0x98eb('0x2')]},'exitStatus':{'type':Sequelize[_0x98eb('0x2')]},'ticketId':{'type':Sequelize[_0x98eb('0x2')]},'integrationId':{'type':Sequelize['INTEGER']},'contacts':{'type':Sequelize[_0x98eb('0x2')]},'uniqueid':{'type':Sequelize[_0x98eb('0x2')]},'calleridnum':{'type':Sequelize[_0x98eb('0x2')]},'calleridname':{'type':Sequelize[_0x98eb('0x2')]},'queue':{'type':Sequelize[_0x98eb('0x2')]},'interface':{'type':Sequelize[_0x98eb('0x2')]},'membername':{'type':Sequelize['STRING']},'agentcalledAt':{'type':Sequelize[_0x98eb('0x3')]},'agentconnectAt':{'type':Sequelize[_0x98eb('0x3')]},'holdtime':{'type':Sequelize[_0x98eb('0x4')]},'agentcomplete':{'type':Sequelize[_0x98eb('0x5')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize['DATE']},'talktime':{'type':Sequelize[_0x98eb('0x4')]},'agentacw':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'acwtime':{'type':Sequelize['INTEGER']},'reason':{'type':Sequelize[_0x98eb('0x2')]},'agentringnoanswer':{'type':Sequelize[_0x98eb('0x5')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0x98eb('0x3')]},'agentdump':{'type':Sequelize[_0x98eb('0x5')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0x98eb('0x3')]},'lastevent':{'type':Sequelize[_0x98eb('0x2')]},'channel':{'type':Sequelize[_0x98eb('0x2')]},'channelstate':{'type':Sequelize[_0x98eb('0x4')]},'channelstatedesc':{'type':Sequelize[_0x98eb('0x2')]},'connectedlinenum':{'type':Sequelize[_0x98eb('0x2')]},'connectedlinename':{'type':Sequelize[_0x98eb('0x2')]},'language':{'type':Sequelize[_0x98eb('0x2')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x98eb('0x2')]},'exten':{'type':Sequelize[_0x98eb('0x2')]},'priority':{'type':Sequelize[_0x98eb('0x2')]},'destchannel':{'type':Sequelize[_0x98eb('0x2')]},'destchannelstate':{'type':Sequelize[_0x98eb('0x4')]},'destchannelstatedesc':{'type':Sequelize[_0x98eb('0x2')]},'destcalleridnum':{'type':Sequelize[_0x98eb('0x2')]},'destcalleridname':{'type':Sequelize[_0x98eb('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0x98eb('0x2')]},'destconnectedlinename':{'type':Sequelize[_0x98eb('0x2')]},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize[_0x98eb('0x2')]},'destcontext':{'type':Sequelize[_0x98eb('0x2')]},'destexten':{'type':Sequelize[_0x98eb('0x2')]},'destpriority':{'type':Sequelize[_0x98eb('0x2')]},'destuniqueid':{'type':Sequelize[_0x98eb('0x2')]},'messageId':{'type':Sequelize[_0x98eb('0x2')]},'inReplyTo':{'type':Sequelize[_0x98eb('0x2')]},'subject':{'type':Sequelize['STRING']},'from':{'type':Sequelize[_0x98eb('0x2')]},'to':{'type':Sequelize[_0x98eb('0x2')]},'cc':{'type':Sequelize[_0x98eb('0x2')]},'attachment':{'type':Sequelize['TEXT']},'html':{'type':Sequelize['TEXT']},'text':{'type':Sequelize[_0x98eb('0x6')]},'status':{'type':Sequelize['ENUM'](_0x98eb('0x7'),'SENDING','RECEIVED',_0x98eb('0x8'))},'url':{'type':Sequelize[_0x98eb('0x2')]},'app':{'type':Sequelize[_0x98eb('0x2')]},'appdata':{'type':Sequelize[_0x98eb('0x2')]},'projectId':{'type':Sequelize[_0x98eb('0x4')]}};
\ No newline at end of file
+var _0x8c77=['STRING','INTEGER','DATE','BOOLEAN','TEXT','ENUM','SENT','SENDING','RECEIVED','sequelize'];(function(_0xe6e557,_0x4f724b){var _0x15f8a1=function(_0x50a1cf){while(--_0x50a1cf){_0xe6e557['push'](_0xe6e557['shift']());}};_0x15f8a1(++_0x4f724b);}(_0x8c77,0xf9));var _0x78c7=function(_0x5b8a1d,_0x2ab127){_0x5b8a1d=_0x5b8a1d-0x0;var _0x33b270=_0x8c77[_0x5b8a1d];return _0x33b270;};'use strict';var Sequelize=require(_0x78c7('0x0'));module['exports']={'integration':{'type':Sequelize['STRING']},'eventChannel':{'type':Sequelize['STRING']},'exitStatus':{'type':Sequelize[_0x78c7('0x1')]},'ticketId':{'type':Sequelize[_0x78c7('0x1')]},'integrationId':{'type':Sequelize[_0x78c7('0x2')]},'contacts':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x78c7('0x1')]},'calleridnum':{'type':Sequelize[_0x78c7('0x1')]},'calleridname':{'type':Sequelize[_0x78c7('0x1')]},'queue':{'type':Sequelize[_0x78c7('0x1')]},'interface':{'type':Sequelize[_0x78c7('0x1')]},'membername':{'type':Sequelize[_0x78c7('0x1')]},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize[_0x78c7('0x2')]},'agentcomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0x78c7('0x3')]},'talktime':{'type':Sequelize[_0x78c7('0x2')]},'agentacw':{'type':Sequelize[_0x78c7('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x78c7('0x2')]},'reason':{'type':Sequelize['STRING']},'agentringnoanswer':{'type':Sequelize[_0x78c7('0x4')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize['DATE']},'agentdump':{'type':Sequelize[_0x78c7('0x4')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize['DATE']},'lastevent':{'type':Sequelize[_0x78c7('0x1')]},'channel':{'type':Sequelize[_0x78c7('0x1')]},'channelstate':{'type':Sequelize[_0x78c7('0x2')]},'channelstatedesc':{'type':Sequelize[_0x78c7('0x1')]},'connectedlinenum':{'type':Sequelize[_0x78c7('0x1')]},'connectedlinename':{'type':Sequelize[_0x78c7('0x1')]},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x78c7('0x1')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x78c7('0x1')]},'priority':{'type':Sequelize[_0x78c7('0x1')]},'destchannel':{'type':Sequelize[_0x78c7('0x1')]},'destchannelstate':{'type':Sequelize[_0x78c7('0x2')]},'destchannelstatedesc':{'type':Sequelize[_0x78c7('0x1')]},'destcalleridnum':{'type':Sequelize[_0x78c7('0x1')]},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0x78c7('0x1')]},'destconnectedlinename':{'type':Sequelize[_0x78c7('0x1')]},'destlanguage':{'type':Sequelize[_0x78c7('0x1')]},'destaccountcode':{'type':Sequelize[_0x78c7('0x1')]},'destcontext':{'type':Sequelize[_0x78c7('0x1')]},'destexten':{'type':Sequelize[_0x78c7('0x1')]},'destpriority':{'type':Sequelize[_0x78c7('0x1')]},'destuniqueid':{'type':Sequelize[_0x78c7('0x1')]},'messageId':{'type':Sequelize[_0x78c7('0x1')]},'inReplyTo':{'type':Sequelize[_0x78c7('0x1')]},'subject':{'type':Sequelize[_0x78c7('0x1')]},'from':{'type':Sequelize[_0x78c7('0x1')]},'to':{'type':Sequelize[_0x78c7('0x1')]},'cc':{'type':Sequelize['STRING']},'attachment':{'type':Sequelize['TEXT']},'html':{'type':Sequelize['TEXT']},'text':{'type':Sequelize[_0x78c7('0x5')]},'status':{'type':Sequelize[_0x78c7('0x6')](_0x78c7('0x7'),_0x78c7('0x8'),_0x78c7('0x9'),'FAILED')},'url':{'type':Sequelize[_0x78c7('0x1')]},'app':{'type':Sequelize['STRING']},'appdata':{'type':Sequelize[_0x78c7('0x1')]},'projectId':{'type':Sequelize[_0x78c7('0x2')]}};
\ No newline at end of file
index 3c35371..9104b31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38bd=['set','Content-Range','reject','save','update','then','destroy','end','sendStatus','error','stack','name','send','index','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','IntegrationReport','rows','params','keys','catch','create','body','find','describe','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','status','json','offset','undefined','count','limit'];(function(_0x21fe32,_0x4aaf24){var _0x378359=function(_0x5639a7){while(--_0x5639a7){_0x21fe32['push'](_0x21fe32['shift']());}};_0x378359(++_0x4aaf24);}(_0x38bd,0x19c));var _0xd38b=function(_0x56db6b,_0x1a8ad3){_0x56db6b=_0x56db6b-0x0;var _0x507d77=_0x38bd[_0x56db6b];return _0x507d77;};'use strict';var emlformat=require(_0xd38b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd38b('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xd38b('0x2'));var moment=require(_0xd38b('0x3'));var BPromise=require(_0xd38b('0x4'));var Mustache=require(_0xd38b('0x5'));var util=require(_0xd38b('0x6'));var path=require(_0xd38b('0x7'));var sox=require(_0xd38b('0x8'));var csv=require(_0xd38b('0x9'));var ejs=require(_0xd38b('0xa'));var fs=require('fs');var fs_extra=require(_0xd38b('0xb'));var _=require('lodash');var squel=require(_0xd38b('0xc'));var crypto=require('crypto');var jsforce=require(_0xd38b('0xd'));var deskjs=require(_0xd38b('0xe'));var toCsv=require(_0xd38b('0x9'));var querystring=require(_0xd38b('0xf'));var Papa=require(_0xd38b('0x10'));var Redis=require(_0xd38b('0x11'));var authService=require(_0xd38b('0x12'));var qs=require(_0xd38b('0x13'));var as=require(_0xd38b('0x14'));var hardwareService=require(_0xd38b('0x15'));var logger=require(_0xd38b('0x16'))(_0xd38b('0x17'));var utils=require('../../config/utils');var config=require(_0xd38b('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xd38b('0x19'))['db'];function respondWithStatusCode(_0x19bc3b,_0x56fc52){_0x56fc52=_0x56fc52||0xcc;return function(_0x4cad47){if(_0x4cad47){return _0x19bc3b['sendStatus'](_0x56fc52);}return _0x19bc3b[_0xd38b('0x1a')](_0x56fc52)['end']();};}function respondWithResult(_0x2b4f7b,_0x3a5e24){_0x3a5e24=_0x3a5e24||0xc8;return function(_0x516843){if(_0x516843){return _0x2b4f7b[_0xd38b('0x1a')](_0x3a5e24)[_0xd38b('0x1b')](_0x516843);}};}function respondWithFilteredResult(_0x341e09,_0xf8a163){return function(_0x1fdbf7){if(_0x1fdbf7){var _0xea72bc=typeof _0xf8a163[_0xd38b('0x1c')]===_0xd38b('0x1d')&&typeof _0xf8a163['limit']==='undefined';var _0x570006=_0x1fdbf7['count'];var _0x5a34da=_0xea72bc?0x0:_0xf8a163[_0xd38b('0x1c')];var _0x27324c=_0xea72bc?_0x1fdbf7[_0xd38b('0x1e')]:_0xf8a163[_0xd38b('0x1c')]+_0xf8a163[_0xd38b('0x1f')];var _0x4e2dbd;if(_0x27324c>=_0x570006){_0x27324c=_0x570006;_0x4e2dbd=0xc8;}else{_0x4e2dbd=0xce;}_0x341e09['status'](_0x4e2dbd);return _0x341e09[_0xd38b('0x20')](_0xd38b('0x21'),_0x5a34da+'-'+_0x27324c+'/'+_0x570006)[_0xd38b('0x1b')](_0x1fdbf7);}return null;};}function patchUpdates(_0x129b3a){return function(_0x57cf31){try{jsonpatch['apply'](_0x57cf31,_0x129b3a,!![]);}catch(_0x1d2bd0){return BPromise[_0xd38b('0x22')](_0x1d2bd0);}return _0x57cf31[_0xd38b('0x23')]();};}function saveUpdates(_0x4c8c01,_0x470d52){return function(_0x2ab341){if(_0x2ab341){return _0x2ab341[_0xd38b('0x24')](_0x4c8c01)[_0xd38b('0x25')](function(_0x47153e){return _0x47153e;});}return null;};}function removeEntity(_0x12a529,_0x95bbde){return function(_0xd57bf9){if(_0xd57bf9){return _0xd57bf9[_0xd38b('0x26')]()[_0xd38b('0x25')](function(){_0x12a529[_0xd38b('0x1a')](0xcc)[_0xd38b('0x27')]();});}};}function handleEntityNotFound(_0x5d157d,_0x577fab){return function(_0x5b69a7){if(!_0x5b69a7){_0x5d157d[_0xd38b('0x28')](0x194);}return _0x5b69a7;};}function handleError(_0x78c81c,_0x3416d0){_0x3416d0=_0x3416d0||0x1f4;return function(_0x255656){logger[_0xd38b('0x29')](_0x255656[_0xd38b('0x2a')]);if(_0x255656['name']){delete _0x255656[_0xd38b('0x2b')];}_0x78c81c[_0xd38b('0x1a')](_0x3416d0)[_0xd38b('0x2c')](_0x255656);};}exports[_0xd38b('0x2d')]=function(_0x2d6d97,_0x5ce298){var _0xb37bdd={},_0x4cb5fe={},_0x126278={'count':0x0,'rows':[]};var _0x2d25a2=_['map'](db['IntegrationReport']['rawAttributes'],function(_0x39d417){return{'name':_0x39d417['fieldName'],'type':_0x39d417[_0xd38b('0x2e')][_0xd38b('0x2f')]};});_0x4cb5fe['model']=_['map'](_0x2d25a2,_0xd38b('0x2b'));_0x4cb5fe['query']=_['keys'](_0x2d6d97[_0xd38b('0x30')]);_0x4cb5fe[_0xd38b('0x31')]=_[_0xd38b('0x32')](_0x4cb5fe[_0xd38b('0x33')],_0x4cb5fe[_0xd38b('0x30')]);_0xb37bdd[_0xd38b('0x34')]=_[_0xd38b('0x32')](_0x4cb5fe[_0xd38b('0x33')],qs['fields'](_0x2d6d97[_0xd38b('0x30')][_0xd38b('0x35')]));_0xb37bdd[_0xd38b('0x34')]=_0xb37bdd[_0xd38b('0x34')][_0xd38b('0x36')]?_0xb37bdd[_0xd38b('0x34')]:_0x4cb5fe['model'];if(!_0x2d6d97[_0xd38b('0x30')][_0xd38b('0x37')](_0xd38b('0x38'))){_0xb37bdd[_0xd38b('0x1f')]=qs[_0xd38b('0x1f')](_0x2d6d97[_0xd38b('0x30')][_0xd38b('0x1f')]);_0xb37bdd['offset']=qs[_0xd38b('0x1c')](_0x2d6d97[_0xd38b('0x30')]['offset']);}_0xb37bdd[_0xd38b('0x39')]=qs['sort'](_0x2d6d97['query'][_0xd38b('0x3a')]);_0xb37bdd[_0xd38b('0x3b')]=qs[_0xd38b('0x31')](_[_0xd38b('0x3c')](_0x2d6d97[_0xd38b('0x30')],_0x4cb5fe[_0xd38b('0x31')]),_0x2d25a2);if(_0x2d6d97[_0xd38b('0x30')][_0xd38b('0x3d')]){_0xb37bdd['where']=_[_0xd38b('0x3e')](_0xb37bdd[_0xd38b('0x3b')],{'$or':_['map'](_0x2d25a2,function(_0x538d82){if(_0x538d82[_0xd38b('0x2e')]!==_0xd38b('0x3f')){var _0x32465b={};_0x32465b[_0x538d82[_0xd38b('0x2b')]]={'$like':'%'+_0x2d6d97[_0xd38b('0x30')][_0xd38b('0x3d')]+'%'};return _0x32465b;}})});}_0xb37bdd=_[_0xd38b('0x3e')]({},_0xb37bdd,_0x2d6d97[_0xd38b('0x40')]);var _0x2de98a={'where':_0xb37bdd[_0xd38b('0x3b')]};return db[_0xd38b('0x41')][_0xd38b('0x1e')](_0x2de98a)[_0xd38b('0x25')](function(_0x569d90){_0x126278[_0xd38b('0x1e')]=_0x569d90;if(_0x2d6d97[_0xd38b('0x30')]['includeAll']){_0xb37bdd['include']=[{'all':!![]}];}return db['IntegrationReport']['findAll'](_0xb37bdd);})['then'](function(_0x3c27bd){_0x126278[_0xd38b('0x42')]=_0x3c27bd;return _0x126278;})[_0xd38b('0x25')](respondWithFilteredResult(_0x5ce298,_0xb37bdd))['catch'](handleError(_0x5ce298,null));};exports['show']=function(_0x47bf21,_0x56193a){var _0x4d0d1b={'raw':![],'where':{'id':_0x47bf21[_0xd38b('0x43')]['id']}},_0xbe494f={};_0xbe494f[_0xd38b('0x33')]=_[_0xd38b('0x44')](db[_0xd38b('0x41')]['rawAttributes']);_0xbe494f[_0xd38b('0x30')]=_['keys'](_0x47bf21[_0xd38b('0x30')]);_0xbe494f[_0xd38b('0x31')]=_[_0xd38b('0x32')](_0xbe494f[_0xd38b('0x33')],_0xbe494f[_0xd38b('0x30')]);_0x4d0d1b[_0xd38b('0x34')]=_[_0xd38b('0x32')](_0xbe494f[_0xd38b('0x33')],qs[_0xd38b('0x35')](_0x47bf21['query']['fields']));_0x4d0d1b[_0xd38b('0x34')]=_0x4d0d1b[_0xd38b('0x34')][_0xd38b('0x36')]?_0x4d0d1b[_0xd38b('0x34')]:_0xbe494f['model'];if(_0x47bf21['query']['includeAll']){_0x4d0d1b['include']=[{'all':!![]}];}_0x4d0d1b=_[_0xd38b('0x3e')]({},_0x4d0d1b,_0x47bf21[_0xd38b('0x40')]);return db['IntegrationReport']['find'](_0x4d0d1b)['then'](handleEntityNotFound(_0x56193a,null))[_0xd38b('0x25')](respondWithResult(_0x56193a,null))[_0xd38b('0x45')](handleError(_0x56193a,null));};exports[_0xd38b('0x46')]=function(_0x395672,_0x30cda2){return db[_0xd38b('0x41')]['create'](_0x395672[_0xd38b('0x47')],{})[_0xd38b('0x25')](respondWithResult(_0x30cda2,0xc9))[_0xd38b('0x45')](handleError(_0x30cda2,null));};exports[_0xd38b('0x24')]=function(_0x19fa7a,_0x22e264){if(_0x19fa7a['body']['id']){delete _0x19fa7a['body']['id'];}return db['IntegrationReport'][_0xd38b('0x48')]({'where':{'id':_0x19fa7a[_0xd38b('0x43')]['id']}})['then'](handleEntityNotFound(_0x22e264,null))[_0xd38b('0x25')](saveUpdates(_0x19fa7a['body'],null))['then'](respondWithResult(_0x22e264,null))[_0xd38b('0x45')](handleError(_0x22e264,null));};exports['destroy']=function(_0x1f1608,_0x14adf5){return db[_0xd38b('0x41')]['find']({'where':{'id':_0x1f1608['params']['id']}})[_0xd38b('0x25')](handleEntityNotFound(_0x14adf5,null))[_0xd38b('0x25')](removeEntity(_0x14adf5,null))[_0xd38b('0x45')](handleError(_0x14adf5,null));};exports[_0xd38b('0x49')]=function(_0x207a5c,_0xb046eb){return db[_0xd38b('0x41')]['describe']()[_0xd38b('0x25')](respondWithResult(_0xb046eb,null))[_0xd38b('0x45')](handleError(_0xb046eb,null));};
\ No newline at end of file
+var _0xe2bf=['fieldName','model','query','filters','intersection','attributes','length','hasOwnProperty','nolimit','limit','sort','where','pick','filter','type','VIRTUAL','merge','options','includeAll','include','rows','show','params','keys','fields','find','catch','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','count','offset','set','reject','save','update','then','destroy','end','error','stack','name','send','index','map','IntegrationReport','rawAttributes'];(function(_0x152a11,_0x3b638d){var _0x4e5666=function(_0x2cefff){while(--_0x2cefff){_0x152a11['push'](_0x152a11['shift']());}};_0x4e5666(++_0x3b638d);}(_0xe2bf,0x18b));var _0xfe2b=function(_0x3b6897,_0xe8f61d){_0x3b6897=_0x3b6897-0x0;var _0x5dde49=_0xe2bf[_0x3b6897];return _0x5dde49;};'use strict';var emlformat=require(_0xfe2b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xfe2b('0x1'));var jsonpatch=require(_0xfe2b('0x2'));var rp=require(_0xfe2b('0x3'));var moment=require(_0xfe2b('0x4'));var BPromise=require(_0xfe2b('0x5'));var Mustache=require(_0xfe2b('0x6'));var util=require('util');var path=require('path');var sox=require(_0xfe2b('0x7'));var csv=require(_0xfe2b('0x8'));var ejs=require(_0xfe2b('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xfe2b('0xa'));var deskjs=require(_0xfe2b('0xb'));var toCsv=require(_0xfe2b('0x8'));var querystring=require('querystring');var Papa=require(_0xfe2b('0xc'));var Redis=require(_0xfe2b('0xd'));var authService=require(_0xfe2b('0xe'));var qs=require(_0xfe2b('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xfe2b('0x10'));var logger=require(_0xfe2b('0x11'))(_0xfe2b('0x12'));var utils=require(_0xfe2b('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xfe2b('0x14'));var db=require(_0xfe2b('0x15'))['db'];function respondWithStatusCode(_0x32f883,_0x2079e5){_0x2079e5=_0x2079e5||0xcc;return function(_0x2f3f6a){if(_0x2f3f6a){return _0x32f883[_0xfe2b('0x16')](_0x2079e5);}return _0x32f883[_0xfe2b('0x17')](_0x2079e5)['end']();};}function respondWithResult(_0x57a7d1,_0x510b9e){_0x510b9e=_0x510b9e||0xc8;return function(_0x525952){if(_0x525952){return _0x57a7d1['status'](_0x510b9e)[_0xfe2b('0x18')](_0x525952);}};}function respondWithFilteredResult(_0x49f0b2,_0x3b1d0c){return function(_0x119768){if(_0x119768){var _0x336543=typeof _0x3b1d0c['offset']===_0xfe2b('0x19')&&typeof _0x3b1d0c['limit']===_0xfe2b('0x19');var _0x52464a=_0x119768[_0xfe2b('0x1a')];var _0x49464=_0x336543?0x0:_0x3b1d0c[_0xfe2b('0x1b')];var _0x2ea0fb=_0x336543?_0x119768[_0xfe2b('0x1a')]:_0x3b1d0c[_0xfe2b('0x1b')]+_0x3b1d0c['limit'];var _0x3d66be;if(_0x2ea0fb>=_0x52464a){_0x2ea0fb=_0x52464a;_0x3d66be=0xc8;}else{_0x3d66be=0xce;}_0x49f0b2[_0xfe2b('0x17')](_0x3d66be);return _0x49f0b2[_0xfe2b('0x1c')]('Content-Range',_0x49464+'-'+_0x2ea0fb+'/'+_0x52464a)[_0xfe2b('0x18')](_0x119768);}return null;};}function patchUpdates(_0x3de367){return function(_0xfb2ada){try{jsonpatch['apply'](_0xfb2ada,_0x3de367,!![]);}catch(_0x53a7ff){return BPromise[_0xfe2b('0x1d')](_0x53a7ff);}return _0xfb2ada[_0xfe2b('0x1e')]();};}function saveUpdates(_0x37915a,_0xe17768){return function(_0x19fc5d){if(_0x19fc5d){return _0x19fc5d[_0xfe2b('0x1f')](_0x37915a)[_0xfe2b('0x20')](function(_0xeda1f4){return _0xeda1f4;});}return null;};}function removeEntity(_0x36974f,_0x1b13a9){return function(_0xca629a){if(_0xca629a){return _0xca629a[_0xfe2b('0x21')]()[_0xfe2b('0x20')](function(){_0x36974f[_0xfe2b('0x17')](0xcc)[_0xfe2b('0x22')]();});}};}function handleEntityNotFound(_0x11e474,_0x3cc63c){return function(_0x3296de){if(!_0x3296de){_0x11e474[_0xfe2b('0x16')](0x194);}return _0x3296de;};}function handleError(_0x19d4a3,_0x59887e){_0x59887e=_0x59887e||0x1f4;return function(_0x174ed9){logger[_0xfe2b('0x23')](_0x174ed9[_0xfe2b('0x24')]);if(_0x174ed9[_0xfe2b('0x25')]){delete _0x174ed9['name'];}_0x19d4a3[_0xfe2b('0x17')](_0x59887e)[_0xfe2b('0x26')](_0x174ed9);};}exports[_0xfe2b('0x27')]=function(_0x1830a4,_0x1310d5){var _0x286268={},_0x11f189={},_0x3c3b00={'count':0x0,'rows':[]};var _0x38fc5f=_[_0xfe2b('0x28')](db[_0xfe2b('0x29')][_0xfe2b('0x2a')],function(_0x2c267b){return{'name':_0x2c267b[_0xfe2b('0x2b')],'type':_0x2c267b['type']['key']};});_0x11f189[_0xfe2b('0x2c')]=_[_0xfe2b('0x28')](_0x38fc5f,_0xfe2b('0x25'));_0x11f189[_0xfe2b('0x2d')]=_['keys'](_0x1830a4[_0xfe2b('0x2d')]);_0x11f189[_0xfe2b('0x2e')]=_[_0xfe2b('0x2f')](_0x11f189['model'],_0x11f189['query']);_0x286268['attributes']=_[_0xfe2b('0x2f')](_0x11f189[_0xfe2b('0x2c')],qs['fields'](_0x1830a4[_0xfe2b('0x2d')]['fields']));_0x286268[_0xfe2b('0x30')]=_0x286268[_0xfe2b('0x30')][_0xfe2b('0x31')]?_0x286268[_0xfe2b('0x30')]:_0x11f189['model'];if(!_0x1830a4[_0xfe2b('0x2d')][_0xfe2b('0x32')](_0xfe2b('0x33'))){_0x286268['limit']=qs[_0xfe2b('0x34')](_0x1830a4[_0xfe2b('0x2d')][_0xfe2b('0x34')]);_0x286268[_0xfe2b('0x1b')]=qs['offset'](_0x1830a4[_0xfe2b('0x2d')]['offset']);}_0x286268['order']=qs[_0xfe2b('0x35')](_0x1830a4['query'][_0xfe2b('0x35')]);_0x286268[_0xfe2b('0x36')]=qs[_0xfe2b('0x2e')](_[_0xfe2b('0x37')](_0x1830a4[_0xfe2b('0x2d')],_0x11f189[_0xfe2b('0x2e')]),_0x38fc5f);if(_0x1830a4['query'][_0xfe2b('0x38')]){_0x286268[_0xfe2b('0x36')]=_['merge'](_0x286268['where'],{'$or':_[_0xfe2b('0x28')](_0x38fc5f,function(_0x15000f){if(_0x15000f[_0xfe2b('0x39')]!==_0xfe2b('0x3a')){var _0x39f513={};_0x39f513[_0x15000f[_0xfe2b('0x25')]]={'$like':'%'+_0x1830a4[_0xfe2b('0x2d')][_0xfe2b('0x38')]+'%'};return _0x39f513;}})});}_0x286268=_[_0xfe2b('0x3b')]({},_0x286268,_0x1830a4[_0xfe2b('0x3c')]);var _0x5d36fb={'where':_0x286268['where']};return db[_0xfe2b('0x29')][_0xfe2b('0x1a')](_0x5d36fb)[_0xfe2b('0x20')](function(_0x2cb134){_0x3c3b00[_0xfe2b('0x1a')]=_0x2cb134;if(_0x1830a4['query'][_0xfe2b('0x3d')]){_0x286268[_0xfe2b('0x3e')]=[{'all':!![]}];}return db[_0xfe2b('0x29')]['findAll'](_0x286268);})[_0xfe2b('0x20')](function(_0xd0af1c){_0x3c3b00[_0xfe2b('0x3f')]=_0xd0af1c;return _0x3c3b00;})[_0xfe2b('0x20')](respondWithFilteredResult(_0x1310d5,_0x286268))['catch'](handleError(_0x1310d5,null));};exports[_0xfe2b('0x40')]=function(_0xdd0028,_0x502a39){var _0x37b48d={'raw':![],'where':{'id':_0xdd0028[_0xfe2b('0x41')]['id']}},_0x320470={};_0x320470[_0xfe2b('0x2c')]=_[_0xfe2b('0x42')](db[_0xfe2b('0x29')][_0xfe2b('0x2a')]);_0x320470[_0xfe2b('0x2d')]=_[_0xfe2b('0x42')](_0xdd0028['query']);_0x320470[_0xfe2b('0x2e')]=_[_0xfe2b('0x2f')](_0x320470[_0xfe2b('0x2c')],_0x320470[_0xfe2b('0x2d')]);_0x37b48d[_0xfe2b('0x30')]=_['intersection'](_0x320470[_0xfe2b('0x2c')],qs[_0xfe2b('0x43')](_0xdd0028[_0xfe2b('0x2d')][_0xfe2b('0x43')]));_0x37b48d[_0xfe2b('0x30')]=_0x37b48d[_0xfe2b('0x30')][_0xfe2b('0x31')]?_0x37b48d[_0xfe2b('0x30')]:_0x320470['model'];if(_0xdd0028[_0xfe2b('0x2d')][_0xfe2b('0x3d')]){_0x37b48d[_0xfe2b('0x3e')]=[{'all':!![]}];}_0x37b48d=_[_0xfe2b('0x3b')]({},_0x37b48d,_0xdd0028[_0xfe2b('0x3c')]);return db[_0xfe2b('0x29')][_0xfe2b('0x44')](_0x37b48d)[_0xfe2b('0x20')](handleEntityNotFound(_0x502a39,null))[_0xfe2b('0x20')](respondWithResult(_0x502a39,null))[_0xfe2b('0x45')](handleError(_0x502a39,null));};exports['create']=function(_0x197ee0,_0x285180){return db[_0xfe2b('0x29')][_0xfe2b('0x46')](_0x197ee0[_0xfe2b('0x47')],{})['then'](respondWithResult(_0x285180,0xc9))[_0xfe2b('0x45')](handleError(_0x285180,null));};exports[_0xfe2b('0x1f')]=function(_0x4c9d2f,_0x29a928){if(_0x4c9d2f[_0xfe2b('0x47')]['id']){delete _0x4c9d2f[_0xfe2b('0x47')]['id'];}return db[_0xfe2b('0x29')][_0xfe2b('0x44')]({'where':{'id':_0x4c9d2f[_0xfe2b('0x41')]['id']}})[_0xfe2b('0x20')](handleEntityNotFound(_0x29a928,null))['then'](saveUpdates(_0x4c9d2f[_0xfe2b('0x47')],null))[_0xfe2b('0x20')](respondWithResult(_0x29a928,null))[_0xfe2b('0x45')](handleError(_0x29a928,null));};exports[_0xfe2b('0x21')]=function(_0x5b15a7,_0x3ae276){return db[_0xfe2b('0x29')][_0xfe2b('0x44')]({'where':{'id':_0x5b15a7[_0xfe2b('0x41')]['id']}})[_0xfe2b('0x20')](handleEntityNotFound(_0x3ae276,null))[_0xfe2b('0x20')](removeEntity(_0x3ae276,null))[_0xfe2b('0x45')](handleError(_0x3ae276,null));};exports['describe']=function(_0x462fc1,_0x5d54be){return db[_0xfe2b('0x29')][_0xfe2b('0x48')]()[_0xfe2b('0x20')](respondWithResult(_0x5d54be,null))[_0xfe2b('0x45')](handleError(_0x5d54be,null));};
\ No newline at end of file
index adb2a84..a4cf4ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80ac=['../../config/environment','./integrationReport.attributes','define','IntegrationReport','report_integration','lodash','util','../../config/logger','api','bluebird','request-promise','rimraf'];(function(_0xe5c04e,_0x28b502){var _0x40a21a=function(_0x31154f){while(--_0x31154f){_0xe5c04e['push'](_0xe5c04e['shift']());}};_0x40a21a(++_0x28b502);}(_0x80ac,0x65));var _0xc80a=function(_0x2cd04b,_0x4f1164){_0x2cd04b=_0x2cd04b-0x0;var _0x1636e3=_0x80ac[_0x2cd04b];return _0x1636e3;};'use strict';var _=require(_0xc80a('0x0'));var util=require(_0xc80a('0x1'));var logger=require(_0xc80a('0x2'))(_0xc80a('0x3'));var moment=require('moment');var BPromise=require(_0xc80a('0x4'));var rp=require(_0xc80a('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc80a('0x6'));var config=require(_0xc80a('0x7'));var attributes=require(_0xc80a('0x8'));module['exports']=function(_0x2a61b0,_0x52a9c9){return _0x2a61b0[_0xc80a('0x9')](_0xc80a('0xa'),attributes,{'tableName':_0xc80a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbbf2=['./integrationReport.attributes','exports','define','IntegrationReport','report_integration','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x4b6c5a,_0x9bb3b5){var _0x4026d0=function(_0x37c4b5){while(--_0x37c4b5){_0x4b6c5a['push'](_0x4b6c5a['shift']());}};_0x4026d0(++_0x9bb3b5);}(_0xbbf2,0x14f));var _0x2bbf=function(_0x35da42,_0x5c2610){_0x35da42=_0x35da42-0x0;var _0x370035=_0xbbf2[_0x35da42];return _0x370035;};'use strict';var _=require(_0x2bbf('0x0'));var util=require(_0x2bbf('0x1'));var logger=require(_0x2bbf('0x2'))(_0x2bbf('0x3'));var moment=require(_0x2bbf('0x4'));var BPromise=require(_0x2bbf('0x5'));var rp=require(_0x2bbf('0x6'));var fs=require('fs');var path=require(_0x2bbf('0x7'));var rimraf=require(_0x2bbf('0x8'));var config=require(_0x2bbf('0x9'));var attributes=require(_0x2bbf('0xa'));module[_0x2bbf('0xb')]=function(_0x15d8f6,_0x2bed0b){return _0x15d8f6[_0x2bbf('0xc')](_0x2bbf('0xd'),attributes,{'tableName':_0x2bbf('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2c309ad..0e3c705 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(_0x4bd984,_0x1cbbe3){var _0x20cc4d=function(_0x195e42){while(--_0x195e42){_0x4bd984['push'](_0x4bd984['shift']());}};_0x20cc4d(++_0x1cbbe3);}(_0xda19,0xd5));var _0x9da1=function(_0x2cbb78,_0x282b39){_0x2cbb78=_0x2cbb78-0x0;var _0x53ee5e=_0xda19[_0x2cbb78];return _0x53ee5e;};'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 _0x53ec=['error','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','client','request','then','info','IntegrationReport,\x20%s,\x20%s','request\x20sent','debug','stringify','code'];(function(_0x36ed48,_0x1ee0d4){var _0x51c63a=function(_0x2d0a40){while(--_0x2d0a40){_0x36ed48['push'](_0x36ed48['shift']());}};_0x51c63a(++_0x1ee0d4);}(_0x53ec,0x192));var _0xc53e=function(_0x4d5308,_0x268d72){_0x4d5308=_0x4d5308-0x0;var _0x56635a=_0x53ec[_0x4d5308];return _0x56635a;};'use strict';var _=require(_0xc53e('0x0'));var util=require(_0xc53e('0x1'));var moment=require(_0xc53e('0x2'));var BPromise=require(_0xc53e('0x3'));var rs=require(_0xc53e('0x4'));var fs=require('fs');var Redis=require(_0xc53e('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xc53e('0x6'));var logger=require('../../config/logger')(_0xc53e('0x7'));var config=require(_0xc53e('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xc53e('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x41a9e8,_0x2de88b,_0x5d3b28){return new BPromise(function(_0x1616ac,_0x1ac6c0){return client[_0xc53e('0xa')](_0x41a9e8,_0x5d3b28)[_0xc53e('0xb')](function(_0xd9612){logger[_0xc53e('0xc')](_0xc53e('0xd'),_0x2de88b,_0xc53e('0xe'));logger[_0xc53e('0xf')]('IntegrationReport,\x20%s,\x20%s,\x20%s',_0x2de88b,'request\x20sent',JSON[_0xc53e('0x10')](_0xd9612));if(_0xd9612['error']){if(_0xd9612['error'][_0xc53e('0x11')]===0x1f4){logger[_0xc53e('0x12')](_0xc53e('0xd'),_0x2de88b,_0xd9612[_0xc53e('0x12')]['message']);return _0x1ac6c0(_0xd9612['error'][_0xc53e('0x13')]);}logger[_0xc53e('0x12')](_0xc53e('0xd'),_0x2de88b,_0xd9612[_0xc53e('0x12')][_0xc53e('0x13')]);return _0x1616ac(_0xd9612[_0xc53e('0x12')][_0xc53e('0x13')]);}else{logger[_0xc53e('0xc')](_0xc53e('0xd'),_0x2de88b,_0xc53e('0xe'));_0x1616ac(_0xd9612['result'][_0xc53e('0x13')]);}})[_0xc53e('0x14')](function(_0x535cd4){logger[_0xc53e('0x12')](_0xc53e('0xd'),_0x2de88b,_0x535cd4);_0x1ac6c0(_0x535cd4);});});}
\ No newline at end of file
index 0493775..ea5353f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d2f=['multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./interval.controller','get','index','isAuthenticated','show','/:id/sub_intervals','post','create','/:id/sub_intervals/create_many','addIntervals','put','/:id','update','delete','exports'];(function(_0x23aaec,_0x26ded9){var _0x3b571b=function(_0x582c9f){while(--_0x582c9f){_0x23aaec['push'](_0x23aaec['shift']());}};_0x3b571b(++_0x26ded9);}(_0x3d2f,0x78));var _0xf3d2=function(_0xb1bd34,_0xf015f3){_0xb1bd34=_0xb1bd34-0x0;var _0xa97119=_0x3d2f[_0xb1bd34];return _0xa97119;};'use strict';var multer=require(_0xf3d2('0x0'));var util=require(_0xf3d2('0x1'));var path=require(_0xf3d2('0x2'));var timeout=require(_0xf3d2('0x3'));var express=require(_0xf3d2('0x4'));var router=express['Router']();var fs_extra=require(_0xf3d2('0x5'));var auth=require(_0xf3d2('0x6'));var interaction=require(_0xf3d2('0x7'));var config=require(_0xf3d2('0x8'));var controller=require(_0xf3d2('0x9'));router[_0xf3d2('0xa')]('/',auth['isAuthenticated'](),controller[_0xf3d2('0xb')]);router[_0xf3d2('0xa')]('/:id',auth[_0xf3d2('0xc')](),controller[_0xf3d2('0xd')]);router[_0xf3d2('0xa')](_0xf3d2('0xe'),auth['isAuthenticated'](),controller['getIntervals']);router[_0xf3d2('0xf')]('/',auth[_0xf3d2('0xc')](),controller[_0xf3d2('0x10')]);router[_0xf3d2('0xf')](_0xf3d2('0xe'),auth[_0xf3d2('0xc')](),controller['addInterval']);router['post'](_0xf3d2('0x11'),auth['isAuthenticated'](),controller[_0xf3d2('0x12')]);router[_0xf3d2('0x13')](_0xf3d2('0x14'),auth[_0xf3d2('0xc')](),controller[_0xf3d2('0x15')]);router[_0xf3d2('0x16')](_0xf3d2('0x14'),auth['isAuthenticated'](),controller['destroy']);module[_0xf3d2('0x17')]=router;
\ No newline at end of file
+var _0xaf3e=['getIntervals','create','post','addInterval','/:id/sub_intervals/create_many','addIntervals','put','delete','destroy','multer','util','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./interval.controller','get','isAuthenticated','/:id','show','/:id/sub_intervals'];(function(_0x514030,_0x45aa55){var _0x5aab41=function(_0x4c255d){while(--_0x4c255d){_0x514030['push'](_0x514030['shift']());}};_0x5aab41(++_0x45aa55);}(_0xaf3e,0xcf));var _0xeaf3=function(_0x845505,_0x19e5f3){_0x845505=_0x845505-0x0;var _0x2513b9=_0xaf3e[_0x845505];return _0x2513b9;};'use strict';var multer=require(_0xeaf3('0x0'));var util=require(_0xeaf3('0x1'));var path=require('path');var timeout=require(_0xeaf3('0x2'));var express=require('express');var router=express[_0xeaf3('0x3')]();var fs_extra=require(_0xeaf3('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xeaf3('0x5'));var config=require(_0xeaf3('0x6'));var controller=require(_0xeaf3('0x7'));router[_0xeaf3('0x8')]('/',auth[_0xeaf3('0x9')](),controller['index']);router[_0xeaf3('0x8')](_0xeaf3('0xa'),auth[_0xeaf3('0x9')](),controller[_0xeaf3('0xb')]);router[_0xeaf3('0x8')](_0xeaf3('0xc'),auth['isAuthenticated'](),controller[_0xeaf3('0xd')]);router['post']('/',auth[_0xeaf3('0x9')](),controller[_0xeaf3('0xe')]);router[_0xeaf3('0xf')]('/:id/sub_intervals',auth[_0xeaf3('0x9')](),controller[_0xeaf3('0x10')]);router['post'](_0xeaf3('0x11'),auth['isAuthenticated'](),controller[_0xeaf3('0x12')]);router[_0xeaf3('0x13')](_0xeaf3('0xa'),auth[_0xeaf3('0x9')](),controller['update']);router[_0xeaf3('0x14')](_0xeaf3('0xa'),auth[_0xeaf3('0x9')](),controller[_0xeaf3('0x15')]);module['exports']=router;
\ No newline at end of file
index c85b496..7becaca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa674=['STRING','sequelize','exports'];(function(_0x2c63a2,_0x3ff8a2){var _0x5e3921=function(_0x28ce20){while(--_0x28ce20){_0x2c63a2['push'](_0x2c63a2['shift']());}};_0x5e3921(++_0x3ff8a2);}(_0xa674,0x88));var _0x4a67=function(_0x2cd5fc,_0x5c8583){_0x2cd5fc=_0x2cd5fc-0x0;var _0x5e52d0=_0xa674[_0x2cd5fc];return _0x5e52d0;};'use strict';var Sequelize=require(_0x4a67('0x0'));module[_0x4a67('0x1')]={'name':{'type':Sequelize[_0x4a67('0x2')]},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x4a67('0x2')],'allowNull':!![]}};
\ No newline at end of file
+var _0xa84f=['STRING','sequelize','exports'];(function(_0x3afb9f,_0x47489d){var _0x53b96c=function(_0x15da12){while(--_0x15da12){_0x3afb9f['push'](_0x3afb9f['shift']());}};_0x53b96c(++_0x47489d);}(_0xa84f,0xdf));var _0xfa84=function(_0x55ae99,_0x5ab789){_0x55ae99=_0x55ae99-0x0;var _0x4297e1=_0xa84f[_0x55ae99];return _0x4297e1;};'use strict';var Sequelize=require(_0xfa84('0x0'));module[_0xfa84('0x1')]={'name':{'type':Sequelize[_0xfa84('0x2')]},'description':{'type':Sequelize[_0xfa84('0x2')]},'interval':{'type':Sequelize[_0xfa84('0x2')],'allowNull':!![]}};
\ No newline at end of file
index a5188dd..9b1880e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6bd2=['sendStatus','end','status','offset','undefined','count','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','get','UserProfileResource','error','stack','name','send','index','map','Interval','rawAttributes','fieldName','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','filter','merge','type','VIRTUAL','options','include','rows','catch','show','params','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Intervals','userProfileId','autoAssociation','addInterval','IntervalId','getIntervals','findOne','pick','addIntervals','sequelize','transaction','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/license/util','../../components/extensions/rewrite'];(function(_0x10ee97,_0x314f76){var _0x2575c6=function(_0x1928a6){while(--_0x1928a6){_0x10ee97['push'](_0x10ee97['shift']());}};_0x2575c6(++_0x314f76);}(_0x6bd2,0x14b));var _0x26bd=function(_0xeedc37,_0x471981){_0xeedc37=_0xeedc37-0x0;var _0x3a4bcd=_0x6bd2[_0xeedc37];return _0x3a4bcd;};'use strict';var emlformat=require(_0x26bd('0x0'));var rimraf=require(_0x26bd('0x1'));var zipdir=require(_0x26bd('0x2'));var jsonpatch=require(_0x26bd('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x26bd('0x4'));var Mustache=require('mustache');var util=require(_0x26bd('0x5'));var path=require(_0x26bd('0x6'));var sox=require(_0x26bd('0x7'));var csv=require(_0x26bd('0x8'));var ejs=require(_0x26bd('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x26bd('0xa'));var squel=require('squel');var crypto=require(_0x26bd('0xb'));var jsforce=require(_0x26bd('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x26bd('0x8'));var querystring=require('querystring');var Papa=require(_0x26bd('0xd'));var Redis=require(_0x26bd('0xe'));var authService=require(_0x26bd('0xf'));var qs=require(_0x26bd('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x26bd('0x11'));var logger=require('../../config/logger')('api');var utils=require(_0x26bd('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x26bd('0x13'));var db=require('../../mysqldb')['db'];var extensions=require(_0x26bd('0x14'));function respondWithStatusCode(_0x377190,_0xbbe53b){_0xbbe53b=_0xbbe53b||0xcc;return function(_0x2baebc){if(_0x2baebc){return _0x377190[_0x26bd('0x15')](_0xbbe53b);}return _0x377190['status'](_0xbbe53b)[_0x26bd('0x16')]();};}function respondWithResult(_0xbcd2fa,_0x42b31c){_0x42b31c=_0x42b31c||0xc8;return function(_0xaf09a0){if(_0xaf09a0){return _0xbcd2fa[_0x26bd('0x17')](_0x42b31c)['json'](_0xaf09a0);}};}function respondWithFilteredResult(_0x2148c3,_0xad771d){return function(_0x11327d){if(_0x11327d){var _0x1d2406=typeof _0xad771d[_0x26bd('0x18')]===_0x26bd('0x19')&&typeof _0xad771d['limit']===_0x26bd('0x19');var _0x53030a=_0x11327d[_0x26bd('0x1a')];var _0x1e85e4=_0x1d2406?0x0:_0xad771d['offset'];var _0x2996f5=_0x1d2406?_0x11327d[_0x26bd('0x1a')]:_0xad771d[_0x26bd('0x18')]+_0xad771d[_0x26bd('0x1b')];var _0x1edadf;if(_0x2996f5>=_0x53030a){_0x2996f5=_0x53030a;_0x1edadf=0xc8;}else{_0x1edadf=0xce;}_0x2148c3[_0x26bd('0x17')](_0x1edadf);return _0x2148c3[_0x26bd('0x1c')](_0x26bd('0x1d'),_0x1e85e4+'-'+_0x2996f5+'/'+_0x53030a)[_0x26bd('0x1e')](_0x11327d);}return null;};}function patchUpdates(_0x44bad5){return function(_0x2a6185){try{jsonpatch[_0x26bd('0x1f')](_0x2a6185,_0x44bad5,!![]);}catch(_0x5ccd1e){return BPromise[_0x26bd('0x20')](_0x5ccd1e);}return _0x2a6185[_0x26bd('0x21')]();};}function saveUpdates(_0x23f968,_0x4acfd0){return function(_0x25e431){if(_0x25e431){return _0x25e431[_0x26bd('0x22')](_0x23f968)[_0x26bd('0x23')](function(_0x474ead){return _0x474ead;});}return null;};}function removeEntity(_0x1ebbfd,_0x2dcaf4){return function(_0x2a5ee8){if(_0x2a5ee8){return _0x2a5ee8[_0x26bd('0x24')]()[_0x26bd('0x23')](function(){var _0x1beb0b=_0x2a5ee8[_0x26bd('0x25')]({'plain':!![]});var _0x19808d='Intervals';return db[_0x26bd('0x26')][_0x26bd('0x24')]({'where':{'type':_0x19808d,'resourceId':_0x1beb0b['id']}})[_0x26bd('0x23')](function(){return _0x2a5ee8;});})[_0x26bd('0x23')](function(){_0x1ebbfd[_0x26bd('0x17')](0xcc)[_0x26bd('0x16')]();});}};}function handleEntityNotFound(_0x11c5e6,_0x325e2e){return function(_0x511fff){if(!_0x511fff){_0x11c5e6[_0x26bd('0x15')](0x194);}return _0x511fff;};}function handleError(_0x3ab55d,_0x39151f){_0x39151f=_0x39151f||0x1f4;return function(_0x2c6ce6){logger[_0x26bd('0x27')](_0x2c6ce6[_0x26bd('0x28')]);if(_0x2c6ce6['name']){delete _0x2c6ce6[_0x26bd('0x29')];}_0x3ab55d[_0x26bd('0x17')](_0x39151f)[_0x26bd('0x2a')](_0x2c6ce6);};}exports[_0x26bd('0x2b')]=function(_0x352ef2,_0x3d793e){var _0x2b91cb={},_0x14f697={},_0x3ae415={'count':0x0,'rows':[]};var _0x5c4be2=_[_0x26bd('0x2c')](db[_0x26bd('0x2d')][_0x26bd('0x2e')],function(_0x335e58){return{'name':_0x335e58[_0x26bd('0x2f')],'type':_0x335e58['type']['key']};});_0x14f697[_0x26bd('0x30')]=_[_0x26bd('0x2c')](_0x5c4be2,_0x26bd('0x29'));_0x14f697[_0x26bd('0x31')]=_[_0x26bd('0x32')](_0x352ef2[_0x26bd('0x31')]);_0x14f697['filters']=_[_0x26bd('0x33')](_0x14f697[_0x26bd('0x30')],_0x14f697['query']);_0x2b91cb[_0x26bd('0x34')]=_[_0x26bd('0x33')](_0x14f697[_0x26bd('0x30')],qs[_0x26bd('0x35')](_0x352ef2[_0x26bd('0x31')][_0x26bd('0x35')]));_0x2b91cb[_0x26bd('0x34')]=_0x2b91cb[_0x26bd('0x34')][_0x26bd('0x36')]?_0x2b91cb[_0x26bd('0x34')]:_0x14f697[_0x26bd('0x30')];if(!_0x352ef2[_0x26bd('0x31')][_0x26bd('0x37')](_0x26bd('0x38'))){_0x2b91cb['limit']=qs[_0x26bd('0x1b')](_0x352ef2['query'][_0x26bd('0x1b')]);_0x2b91cb[_0x26bd('0x18')]=qs['offset'](_0x352ef2[_0x26bd('0x31')][_0x26bd('0x18')]);}_0x2b91cb['order']=qs[_0x26bd('0x39')](_0x352ef2[_0x26bd('0x31')][_0x26bd('0x39')]);_0x2b91cb[_0x26bd('0x3a')]=qs[_0x26bd('0x3b')](_['pick'](_0x352ef2[_0x26bd('0x31')],_0x14f697[_0x26bd('0x3b')]),_0x5c4be2);if(_0x352ef2[_0x26bd('0x31')][_0x26bd('0x3c')]){_0x2b91cb[_0x26bd('0x3a')]=_[_0x26bd('0x3d')](_0x2b91cb[_0x26bd('0x3a')],{'$or':_[_0x26bd('0x2c')](_0x5c4be2,function(_0x13df34){if(_0x13df34[_0x26bd('0x3e')]!==_0x26bd('0x3f')){var _0x42e742={};_0x42e742[_0x13df34['name']]={'$like':'%'+_0x352ef2[_0x26bd('0x31')][_0x26bd('0x3c')]+'%'};return _0x42e742;}})});}_0x2b91cb=_['merge']({},_0x2b91cb,_0x352ef2[_0x26bd('0x40')]);var _0x43235f={'where':_0x2b91cb[_0x26bd('0x3a')]};return db[_0x26bd('0x2d')][_0x26bd('0x1a')](_0x43235f)['then'](function(_0x49ada4){_0x3ae415[_0x26bd('0x1a')]=_0x49ada4;if(_0x352ef2[_0x26bd('0x31')]['includeAll']){_0x2b91cb[_0x26bd('0x41')]=[{'all':!![]}];}return db['Interval']['findAll'](_0x2b91cb);})[_0x26bd('0x23')](function(_0x51911c){_0x3ae415[_0x26bd('0x42')]=_0x51911c;return _0x3ae415;})[_0x26bd('0x23')](respondWithFilteredResult(_0x3d793e,_0x2b91cb))[_0x26bd('0x43')](handleError(_0x3d793e,null));};exports[_0x26bd('0x44')]=function(_0x5095e0,_0x590bff){var _0x1c8b72={'raw':!![],'where':{'id':_0x5095e0[_0x26bd('0x45')]['id']}},_0x10baf3={};_0x10baf3[_0x26bd('0x30')]=_[_0x26bd('0x32')](db['Interval'][_0x26bd('0x2e')]);_0x10baf3['query']=_[_0x26bd('0x32')](_0x5095e0[_0x26bd('0x31')]);_0x10baf3[_0x26bd('0x3b')]=_['intersection'](_0x10baf3['model'],_0x10baf3[_0x26bd('0x31')]);_0x1c8b72['attributes']=_['intersection'](_0x10baf3[_0x26bd('0x30')],qs[_0x26bd('0x35')](_0x5095e0[_0x26bd('0x31')][_0x26bd('0x35')]));_0x1c8b72[_0x26bd('0x34')]=_0x1c8b72[_0x26bd('0x34')][_0x26bd('0x36')]?_0x1c8b72[_0x26bd('0x34')]:_0x10baf3[_0x26bd('0x30')];if(_0x5095e0['query'][_0x26bd('0x46')]){_0x1c8b72[_0x26bd('0x41')]=[{'all':!![]}];}_0x1c8b72=_[_0x26bd('0x3d')]({},_0x1c8b72,_0x5095e0[_0x26bd('0x40')]);return db[_0x26bd('0x2d')][_0x26bd('0x47')](_0x1c8b72)[_0x26bd('0x23')](handleEntityNotFound(_0x590bff,null))['then'](respondWithResult(_0x590bff,null))['catch'](handleError(_0x590bff,null));};exports[_0x26bd('0x48')]=function(_0x2c47a5,_0x5e5317){return db[_0x26bd('0x2d')][_0x26bd('0x48')](_0x2c47a5[_0x26bd('0x49')],{})[_0x26bd('0x23')](function(_0x5b2b39){var _0x207eac=_0x2c47a5[_0x26bd('0x4a')]['get']({'plain':!![]});if(!_0x207eac)throw new Error(_0x26bd('0x4b'));if(_0x207eac[_0x26bd('0x4c')]===_0x26bd('0x4a')){var _0x3c7672=_0x5b2b39[_0x26bd('0x25')]({'plain':!![]});var _0x2c23ed=_0x26bd('0x4d');return db['UserProfileSection'][_0x26bd('0x47')]({'where':{'name':_0x2c23ed,'userProfileId':_0x207eac[_0x26bd('0x4e')]},'raw':!![]})[_0x26bd('0x23')](function(_0x5d638d){if(_0x5d638d&&_0x5d638d[_0x26bd('0x4f')]===0x0){return db['UserProfileResource'][_0x26bd('0x48')]({'name':_0x3c7672[_0x26bd('0x29')],'resourceId':_0x3c7672['id'],'type':_0x5d638d[_0x26bd('0x29')],'sectionId':_0x5d638d['id']},{})[_0x26bd('0x23')](function(){return _0x5b2b39;});}else{return _0x5b2b39;}})[_0x26bd('0x43')](function(_0x4a2619){logger[_0x26bd('0x27')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4a2619);throw _0x4a2619;});}return _0x5b2b39;})[_0x26bd('0x23')](respondWithResult(_0x5e5317,0xc9))[_0x26bd('0x43')](handleError(_0x5e5317,null));};exports[_0x26bd('0x22')]=function(_0x3892ff,_0x2f7543){if(_0x3892ff[_0x26bd('0x49')]['id']){delete _0x3892ff['body']['id'];}return db[_0x26bd('0x2d')][_0x26bd('0x47')]({'where':{'id':_0x3892ff[_0x26bd('0x45')]['id']}})[_0x26bd('0x23')](handleEntityNotFound(_0x2f7543,null))[_0x26bd('0x23')](saveUpdates(_0x3892ff[_0x26bd('0x49')],null))[_0x26bd('0x23')](respondWithResult(_0x2f7543,null))[_0x26bd('0x43')](handleError(_0x2f7543,null));};exports[_0x26bd('0x24')]=function(_0x4e46a5,_0x13bfac){return db[_0x26bd('0x2d')][_0x26bd('0x47')]({'where':{'id':_0x4e46a5['params']['id']}})[_0x26bd('0x23')](handleEntityNotFound(_0x13bfac,null))[_0x26bd('0x23')](removeEntity(_0x13bfac,null))[_0x26bd('0x43')](handleError(_0x13bfac,null));};exports[_0x26bd('0x50')]=function(_0x1da8c6,_0x4ad584,_0x21b2b6){if(_0x1da8c6[_0x26bd('0x49')]['id']){delete _0x1da8c6[_0x26bd('0x49')]['id'];}return db[_0x26bd('0x2d')][_0x26bd('0x47')]({'where':{'id':_0x1da8c6['params']['id']}})['then'](handleEntityNotFound(_0x4ad584,null))['then'](function(_0xb264a){if(_0xb264a){_0x1da8c6[_0x26bd('0x49')][_0x26bd('0x51')]=_0xb264a['id'];return db[_0x26bd('0x2d')]['create'](_0x1da8c6[_0x26bd('0x49')]);}})['then'](respondWithResult(_0x4ad584,null))[_0x26bd('0x43')](handleError(_0x4ad584,null));};exports[_0x26bd('0x52')]=function(_0x3ed44c,_0x3be6e8,_0x1d2d00){var _0x56383f={};var _0x11db57={};var _0x58102a;var _0x169595;return db[_0x26bd('0x2d')][_0x26bd('0x53')]({'where':{'id':_0x3ed44c[_0x26bd('0x45')]['id']}})['then'](handleEntityNotFound(_0x3be6e8,null))[_0x26bd('0x23')](function(_0x2f193d){if(_0x2f193d){_0x58102a=_0x2f193d;_0x11db57[_0x26bd('0x30')]=_[_0x26bd('0x32')](db[_0x26bd('0x2d')][_0x26bd('0x2e')]);_0x11db57['query']=_[_0x26bd('0x32')](_0x3ed44c['query']);_0x11db57[_0x26bd('0x3b')]=_['intersection'](_0x11db57['model'],_0x11db57[_0x26bd('0x31')]);_0x56383f[_0x26bd('0x34')]=_[_0x26bd('0x33')](_0x11db57[_0x26bd('0x30')],qs[_0x26bd('0x35')](_0x3ed44c[_0x26bd('0x31')][_0x26bd('0x35')]));_0x56383f[_0x26bd('0x34')]=_0x56383f['attributes']['length']?_0x56383f['attributes']:_0x11db57[_0x26bd('0x30')];_0x56383f['order']=qs[_0x26bd('0x39')](_0x3ed44c[_0x26bd('0x31')][_0x26bd('0x39')]);_0x56383f[_0x26bd('0x3a')]=qs[_0x26bd('0x3b')](_[_0x26bd('0x54')](_0x3ed44c['query'],_0x11db57[_0x26bd('0x3b')]));if(_0x3ed44c[_0x26bd('0x31')][_0x26bd('0x3c')]){_0x56383f['where']=_[_0x26bd('0x3d')](_0x56383f[_0x26bd('0x3a')],{'$or':_[_0x26bd('0x2c')](_0x56383f[_0x26bd('0x34')],function(_0x51fe9c){var _0x4e4972={};_0x4e4972[_0x51fe9c]={'$like':'%'+_0x3ed44c[_0x26bd('0x31')]['filter']+'%'};return _0x4e4972;})});}_0x56383f=_['merge']({},_0x56383f,_0x3ed44c[_0x26bd('0x40')]);return _0x58102a['getIntervals'](_0x56383f);}})[_0x26bd('0x23')](function(_0x51651c){if(_0x51651c){_0x169595=_0x51651c[_0x26bd('0x36')];if(!_0x3ed44c[_0x26bd('0x31')][_0x26bd('0x37')](_0x26bd('0x38'))){_0x56383f[_0x26bd('0x1b')]=qs[_0x26bd('0x1b')](_0x3ed44c[_0x26bd('0x31')]['limit']);_0x56383f[_0x26bd('0x18')]=qs[_0x26bd('0x18')](_0x3ed44c[_0x26bd('0x31')]['offset']);}return _0x58102a['getIntervals'](_0x56383f);}})[_0x26bd('0x23')](function(_0x3a2f38){if(_0x3a2f38){return _0x3a2f38?{'count':_0x169595,'rows':_0x3a2f38}:null;}})[_0x26bd('0x23')](respondWithResult(_0x3be6e8,null))[_0x26bd('0x43')](handleError(_0x3be6e8,null));};exports[_0x26bd('0x55')]=function(_0x58539d,_0x468f64,_0xce30ee){return db[_0x26bd('0x2d')][_0x26bd('0x53')]({'where':{'id':_0x58539d[_0x26bd('0x45')]['id']}})[_0x26bd('0x23')](handleEntityNotFound(_0x468f64,null))[_0x26bd('0x23')](function(_0x1c8b9e){if(_0x1c8b9e){return db[_0x26bd('0x56')][_0x26bd('0x57')](function(_0x435364){return db[_0x26bd('0x2d')][_0x26bd('0x24')]({'where':{'IntervalId':_0x58539d[_0x26bd('0x45')]['id']},'transaction':_0x435364})[_0x26bd('0x23')](function(_0x3b1a36){var _0x1e4873=_[_0x26bd('0x2c')](_0x58539d['body'],function(_0x15727a){delete _0x15727a['id'];_0x15727a['IntervalId']=_0x58539d['params']['id'];return _0x15727a;});return db[_0x26bd('0x2d')]['bulkCreate'](_0x1e4873,{'transaction':_0x435364});});})[_0x26bd('0x23')](function(){return db['Interval']['findAll']({'where':{'IntervalId':_0x58539d['params']['id']}});});}})[_0x26bd('0x23')](respondWithResult(_0x468f64,null))[_0x26bd('0x43')](handleError(_0x468f64,null));};
\ No newline at end of file
+var _0xf02b=['json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','then','get','Intervals','UserProfileResource','destroy','error','stack','name','index','map','Interval','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','type','VIRTUAL','filter','options','includeAll','include','findAll','rows','show','params','find','catch','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','addInterval','IntervalId','getIntervals','sequelize','bulkCreate','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','../../components/extensions/rewrite','sendStatus','status','end'];(function(_0x4a3082,_0x5ad01b){var _0x4bae90=function(_0x5ee3a0){while(--_0x5ee3a0){_0x4a3082['push'](_0x4a3082['shift']());}};_0x4bae90(++_0x5ad01b);}(_0xf02b,0x9e));var _0xbf02=function(_0x57f7d7,_0x41443c){_0x57f7d7=_0x57f7d7-0x0;var _0x11b297=_0xf02b[_0x57f7d7];return _0x11b297;};'use strict';var emlformat=require(_0xbf02('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbf02('0x1'));var jsonpatch=require(_0xbf02('0x2'));var rp=require(_0xbf02('0x3'));var moment=require(_0xbf02('0x4'));var BPromise=require(_0xbf02('0x5'));var Mustache=require('mustache');var util=require(_0xbf02('0x6'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xbf02('0x7'));var squel=require(_0xbf02('0x8'));var crypto=require(_0xbf02('0x9'));var jsforce=require(_0xbf02('0xa'));var deskjs=require(_0xbf02('0xb'));var toCsv=require(_0xbf02('0xc'));var querystring=require(_0xbf02('0xd'));var Papa=require(_0xbf02('0xe'));var Redis=require(_0xbf02('0xf'));var authService=require(_0xbf02('0x10'));var qs=require(_0xbf02('0x11'));var as=require(_0xbf02('0x12'));var hardwareService=require(_0xbf02('0x13'));var logger=require('../../config/logger')(_0xbf02('0x14'));var utils=require(_0xbf02('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xbf02('0x16'));var db=require(_0xbf02('0x17'))['db'];var extensions=require(_0xbf02('0x18'));function respondWithStatusCode(_0x1929a2,_0x13ccc6){_0x13ccc6=_0x13ccc6||0xcc;return function(_0xffaa7b){if(_0xffaa7b){return _0x1929a2[_0xbf02('0x19')](_0x13ccc6);}return _0x1929a2[_0xbf02('0x1a')](_0x13ccc6)[_0xbf02('0x1b')]();};}function respondWithResult(_0xcf8948,_0x151a6c){_0x151a6c=_0x151a6c||0xc8;return function(_0x16a84e){if(_0x16a84e){return _0xcf8948[_0xbf02('0x1a')](_0x151a6c)[_0xbf02('0x1c')](_0x16a84e);}};}function respondWithFilteredResult(_0x55ec08,_0x8b8921){return function(_0x3aed19){if(_0x3aed19){var _0x192858=typeof _0x8b8921[_0xbf02('0x1d')]==='undefined'&&typeof _0x8b8921[_0xbf02('0x1e')]===_0xbf02('0x1f');var _0xc4ba03=_0x3aed19[_0xbf02('0x20')];var _0x4571f6=_0x192858?0x0:_0x8b8921[_0xbf02('0x1d')];var _0x59f3de=_0x192858?_0x3aed19[_0xbf02('0x20')]:_0x8b8921[_0xbf02('0x1d')]+_0x8b8921[_0xbf02('0x1e')];var _0x5e3761;if(_0x59f3de>=_0xc4ba03){_0x59f3de=_0xc4ba03;_0x5e3761=0xc8;}else{_0x5e3761=0xce;}_0x55ec08[_0xbf02('0x1a')](_0x5e3761);return _0x55ec08[_0xbf02('0x21')](_0xbf02('0x22'),_0x4571f6+'-'+_0x59f3de+'/'+_0xc4ba03)['json'](_0x3aed19);}return null;};}function patchUpdates(_0x37b637){return function(_0x1d9f89){try{jsonpatch[_0xbf02('0x23')](_0x1d9f89,_0x37b637,!![]);}catch(_0x59b58d){return BPromise[_0xbf02('0x24')](_0x59b58d);}return _0x1d9f89[_0xbf02('0x25')]();};}function saveUpdates(_0x5f016d,_0x191d0a){return function(_0x20b9c8){if(_0x20b9c8){return _0x20b9c8['update'](_0x5f016d)['then'](function(_0x26f0ed){return _0x26f0ed;});}return null;};}function removeEntity(_0x4e738f,_0x52ad96){return function(_0x4c3d40){if(_0x4c3d40){return _0x4c3d40['destroy']()[_0xbf02('0x26')](function(){var _0x245fd3=_0x4c3d40[_0xbf02('0x27')]({'plain':!![]});var _0x4b9431=_0xbf02('0x28');return db[_0xbf02('0x29')][_0xbf02('0x2a')]({'where':{'type':_0x4b9431,'resourceId':_0x245fd3['id']}})[_0xbf02('0x26')](function(){return _0x4c3d40;});})[_0xbf02('0x26')](function(){_0x4e738f[_0xbf02('0x1a')](0xcc)[_0xbf02('0x1b')]();});}};}function handleEntityNotFound(_0xa167e6,_0x1133c1){return function(_0x498f70){if(!_0x498f70){_0xa167e6['sendStatus'](0x194);}return _0x498f70;};}function handleError(_0x20cadb,_0x286697){_0x286697=_0x286697||0x1f4;return function(_0xbcec4){logger[_0xbf02('0x2b')](_0xbcec4[_0xbf02('0x2c')]);if(_0xbcec4['name']){delete _0xbcec4[_0xbf02('0x2d')];}_0x20cadb[_0xbf02('0x1a')](_0x286697)['send'](_0xbcec4);};}exports[_0xbf02('0x2e')]=function(_0x98bc4d,_0x2442f6){var _0xcc2353={},_0x43908f={},_0x5b4d54={'count':0x0,'rows':[]};var _0x528437=_[_0xbf02('0x2f')](db[_0xbf02('0x30')][_0xbf02('0x31')],function(_0x6f95b9){return{'name':_0x6f95b9[_0xbf02('0x32')],'type':_0x6f95b9['type'][_0xbf02('0x33')]};});_0x43908f[_0xbf02('0x34')]=_[_0xbf02('0x2f')](_0x528437,'name');_0x43908f[_0xbf02('0x35')]=_[_0xbf02('0x36')](_0x98bc4d[_0xbf02('0x35')]);_0x43908f[_0xbf02('0x37')]=_[_0xbf02('0x38')](_0x43908f[_0xbf02('0x34')],_0x43908f[_0xbf02('0x35')]);_0xcc2353[_0xbf02('0x39')]=_[_0xbf02('0x38')](_0x43908f['model'],qs[_0xbf02('0x3a')](_0x98bc4d[_0xbf02('0x35')][_0xbf02('0x3a')]));_0xcc2353[_0xbf02('0x39')]=_0xcc2353[_0xbf02('0x39')][_0xbf02('0x3b')]?_0xcc2353[_0xbf02('0x39')]:_0x43908f[_0xbf02('0x34')];if(!_0x98bc4d['query'][_0xbf02('0x3c')](_0xbf02('0x3d'))){_0xcc2353[_0xbf02('0x1e')]=qs['limit'](_0x98bc4d['query'][_0xbf02('0x1e')]);_0xcc2353[_0xbf02('0x1d')]=qs[_0xbf02('0x1d')](_0x98bc4d['query'][_0xbf02('0x1d')]);}_0xcc2353[_0xbf02('0x3e')]=qs['sort'](_0x98bc4d['query'][_0xbf02('0x3f')]);_0xcc2353[_0xbf02('0x40')]=qs[_0xbf02('0x37')](_['pick'](_0x98bc4d[_0xbf02('0x35')],_0x43908f[_0xbf02('0x37')]),_0x528437);if(_0x98bc4d[_0xbf02('0x35')]['filter']){_0xcc2353[_0xbf02('0x40')]=_[_0xbf02('0x41')](_0xcc2353[_0xbf02('0x40')],{'$or':_[_0xbf02('0x2f')](_0x528437,function(_0x332861){if(_0x332861[_0xbf02('0x42')]!==_0xbf02('0x43')){var _0x20dd97={};_0x20dd97[_0x332861[_0xbf02('0x2d')]]={'$like':'%'+_0x98bc4d[_0xbf02('0x35')][_0xbf02('0x44')]+'%'};return _0x20dd97;}})});}_0xcc2353=_[_0xbf02('0x41')]({},_0xcc2353,_0x98bc4d[_0xbf02('0x45')]);var _0x3607b2={'where':_0xcc2353[_0xbf02('0x40')]};return db[_0xbf02('0x30')]['count'](_0x3607b2)['then'](function(_0x3ddbf0){_0x5b4d54['count']=_0x3ddbf0;if(_0x98bc4d[_0xbf02('0x35')][_0xbf02('0x46')]){_0xcc2353[_0xbf02('0x47')]=[{'all':!![]}];}return db[_0xbf02('0x30')][_0xbf02('0x48')](_0xcc2353);})[_0xbf02('0x26')](function(_0x5c7fe6){_0x5b4d54[_0xbf02('0x49')]=_0x5c7fe6;return _0x5b4d54;})[_0xbf02('0x26')](respondWithFilteredResult(_0x2442f6,_0xcc2353))['catch'](handleError(_0x2442f6,null));};exports[_0xbf02('0x4a')]=function(_0x2f53cf,_0x1b257a){var _0x35c58f={'raw':!![],'where':{'id':_0x2f53cf[_0xbf02('0x4b')]['id']}},_0x57a6ab={};_0x57a6ab[_0xbf02('0x34')]=_[_0xbf02('0x36')](db['Interval']['rawAttributes']);_0x57a6ab['query']=_[_0xbf02('0x36')](_0x2f53cf['query']);_0x57a6ab['filters']=_[_0xbf02('0x38')](_0x57a6ab['model'],_0x57a6ab[_0xbf02('0x35')]);_0x35c58f[_0xbf02('0x39')]=_[_0xbf02('0x38')](_0x57a6ab['model'],qs['fields'](_0x2f53cf[_0xbf02('0x35')][_0xbf02('0x3a')]));_0x35c58f[_0xbf02('0x39')]=_0x35c58f['attributes'][_0xbf02('0x3b')]?_0x35c58f[_0xbf02('0x39')]:_0x57a6ab['model'];if(_0x2f53cf[_0xbf02('0x35')][_0xbf02('0x46')]){_0x35c58f[_0xbf02('0x47')]=[{'all':!![]}];}_0x35c58f=_['merge']({},_0x35c58f,_0x2f53cf[_0xbf02('0x45')]);return db['Interval'][_0xbf02('0x4c')](_0x35c58f)[_0xbf02('0x26')](handleEntityNotFound(_0x1b257a,null))['then'](respondWithResult(_0x1b257a,null))[_0xbf02('0x4d')](handleError(_0x1b257a,null));};exports[_0xbf02('0x4e')]=function(_0x12810d,_0x134aa0){return db['Interval']['create'](_0x12810d['body'],{})[_0xbf02('0x26')](function(_0x1da8cb){var _0x278361=_0x12810d[_0xbf02('0x4f')][_0xbf02('0x27')]({'plain':!![]});if(!_0x278361)throw new Error(_0xbf02('0x50'));if(_0x278361[_0xbf02('0x51')]===_0xbf02('0x4f')){var _0x145cf0=_0x1da8cb[_0xbf02('0x27')]({'plain':!![]});var _0x4c66a6='Intervals';return db[_0xbf02('0x52')][_0xbf02('0x4c')]({'where':{'name':_0x4c66a6,'userProfileId':_0x278361[_0xbf02('0x53')]},'raw':!![]})[_0xbf02('0x26')](function(_0x4ac7a2){if(_0x4ac7a2&&_0x4ac7a2[_0xbf02('0x54')]===0x0){return db[_0xbf02('0x29')][_0xbf02('0x4e')]({'name':_0x145cf0[_0xbf02('0x2d')],'resourceId':_0x145cf0['id'],'type':_0x4ac7a2[_0xbf02('0x2d')],'sectionId':_0x4ac7a2['id']},{})['then'](function(){return _0x1da8cb;});}else{return _0x1da8cb;}})['catch'](function(_0x7ec26d){logger['error'](_0xbf02('0x55'),_0x7ec26d);throw _0x7ec26d;});}return _0x1da8cb;})['then'](respondWithResult(_0x134aa0,0xc9))[_0xbf02('0x4d')](handleError(_0x134aa0,null));};exports[_0xbf02('0x56')]=function(_0x568dad,_0x5e1b1a){if(_0x568dad[_0xbf02('0x57')]['id']){delete _0x568dad['body']['id'];}return db['Interval'][_0xbf02('0x4c')]({'where':{'id':_0x568dad[_0xbf02('0x4b')]['id']}})[_0xbf02('0x26')](handleEntityNotFound(_0x5e1b1a,null))['then'](saveUpdates(_0x568dad['body'],null))[_0xbf02('0x26')](respondWithResult(_0x5e1b1a,null))[_0xbf02('0x4d')](handleError(_0x5e1b1a,null));};exports[_0xbf02('0x2a')]=function(_0x1a4a46,_0x1d613e){return db[_0xbf02('0x30')][_0xbf02('0x4c')]({'where':{'id':_0x1a4a46[_0xbf02('0x4b')]['id']}})['then'](handleEntityNotFound(_0x1d613e,null))[_0xbf02('0x26')](removeEntity(_0x1d613e,null))[_0xbf02('0x4d')](handleError(_0x1d613e,null));};exports[_0xbf02('0x58')]=function(_0x2966d0,_0x42c9f0,_0x4730b2){if(_0x2966d0[_0xbf02('0x57')]['id']){delete _0x2966d0[_0xbf02('0x57')]['id'];}return db[_0xbf02('0x30')][_0xbf02('0x4c')]({'where':{'id':_0x2966d0[_0xbf02('0x4b')]['id']}})[_0xbf02('0x26')](handleEntityNotFound(_0x42c9f0,null))['then'](function(_0x5b364f){if(_0x5b364f){_0x2966d0[_0xbf02('0x57')][_0xbf02('0x59')]=_0x5b364f['id'];return db[_0xbf02('0x30')]['create'](_0x2966d0['body']);}})[_0xbf02('0x26')](respondWithResult(_0x42c9f0,null))['catch'](handleError(_0x42c9f0,null));};exports[_0xbf02('0x5a')]=function(_0x92f3be,_0x11e905,_0x1d28d5){var _0x1155ae={};var _0x21f17a={};var _0x41ad19;var _0x33a652;return db[_0xbf02('0x30')]['findOne']({'where':{'id':_0x92f3be[_0xbf02('0x4b')]['id']}})[_0xbf02('0x26')](handleEntityNotFound(_0x11e905,null))[_0xbf02('0x26')](function(_0x18185c){if(_0x18185c){_0x41ad19=_0x18185c;_0x21f17a[_0xbf02('0x34')]=_[_0xbf02('0x36')](db[_0xbf02('0x30')][_0xbf02('0x31')]);_0x21f17a['query']=_[_0xbf02('0x36')](_0x92f3be[_0xbf02('0x35')]);_0x21f17a[_0xbf02('0x37')]=_['intersection'](_0x21f17a['model'],_0x21f17a['query']);_0x1155ae[_0xbf02('0x39')]=_[_0xbf02('0x38')](_0x21f17a['model'],qs[_0xbf02('0x3a')](_0x92f3be[_0xbf02('0x35')][_0xbf02('0x3a')]));_0x1155ae[_0xbf02('0x39')]=_0x1155ae['attributes']['length']?_0x1155ae[_0xbf02('0x39')]:_0x21f17a[_0xbf02('0x34')];_0x1155ae[_0xbf02('0x3e')]=qs['sort'](_0x92f3be['query'][_0xbf02('0x3f')]);_0x1155ae[_0xbf02('0x40')]=qs[_0xbf02('0x37')](_['pick'](_0x92f3be[_0xbf02('0x35')],_0x21f17a[_0xbf02('0x37')]));if(_0x92f3be[_0xbf02('0x35')][_0xbf02('0x44')]){_0x1155ae[_0xbf02('0x40')]=_['merge'](_0x1155ae[_0xbf02('0x40')],{'$or':_[_0xbf02('0x2f')](_0x1155ae[_0xbf02('0x39')],function(_0x19aa5f){var _0x37eb6a={};_0x37eb6a[_0x19aa5f]={'$like':'%'+_0x92f3be[_0xbf02('0x35')][_0xbf02('0x44')]+'%'};return _0x37eb6a;})});}_0x1155ae=_['merge']({},_0x1155ae,_0x92f3be[_0xbf02('0x45')]);return _0x41ad19['getIntervals'](_0x1155ae);}})[_0xbf02('0x26')](function(_0x10cb47){if(_0x10cb47){_0x33a652=_0x10cb47[_0xbf02('0x3b')];if(!_0x92f3be[_0xbf02('0x35')][_0xbf02('0x3c')](_0xbf02('0x3d'))){_0x1155ae['limit']=qs[_0xbf02('0x1e')](_0x92f3be['query'][_0xbf02('0x1e')]);_0x1155ae[_0xbf02('0x1d')]=qs[_0xbf02('0x1d')](_0x92f3be['query'][_0xbf02('0x1d')]);}return _0x41ad19['getIntervals'](_0x1155ae);}})[_0xbf02('0x26')](function(_0x1cb1fb){if(_0x1cb1fb){return _0x1cb1fb?{'count':_0x33a652,'rows':_0x1cb1fb}:null;}})[_0xbf02('0x26')](respondWithResult(_0x11e905,null))[_0xbf02('0x4d')](handleError(_0x11e905,null));};exports['addIntervals']=function(_0x22425b,_0x8ac57c,_0x595460){return db[_0xbf02('0x30')]['findOne']({'where':{'id':_0x22425b[_0xbf02('0x4b')]['id']}})[_0xbf02('0x26')](handleEntityNotFound(_0x8ac57c,null))[_0xbf02('0x26')](function(_0xc9f3b8){if(_0xc9f3b8){return db[_0xbf02('0x5b')]['transaction'](function(_0x459461){return db[_0xbf02('0x30')]['destroy']({'where':{'IntervalId':_0x22425b['params']['id']},'transaction':_0x459461})[_0xbf02('0x26')](function(_0x208249){var _0x854d5a=_['map'](_0x22425b[_0xbf02('0x57')],function(_0x3ba15a){delete _0x3ba15a['id'];_0x3ba15a[_0xbf02('0x59')]=_0x22425b[_0xbf02('0x4b')]['id'];return _0x3ba15a;});return db[_0xbf02('0x30')][_0xbf02('0x5c')](_0x854d5a,{'transaction':_0x459461});});})[_0xbf02('0x26')](function(){return db['Interval'][_0xbf02('0x48')]({'where':{'IntervalId':_0x22425b[_0xbf02('0x4b')]['id']}});});}})[_0xbf02('0x26')](respondWithResult(_0x8ac57c,null))['catch'](handleError(_0x8ac57c,null));};
\ No newline at end of file
index 72741ab..8f498eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36d2=['api','moment','request-promise','path','../../config/environment','./interval.attributes','../../components/extensions/rewrite','define','rewrite','util'];(function(_0x13746a,_0x111b8f){var _0x46f0fa=function(_0x395842){while(--_0x395842){_0x13746a['push'](_0x13746a['shift']());}};_0x46f0fa(++_0x111b8f);}(_0x36d2,0x1b7));var _0x236d=function(_0xa4928c,_0x16b89c){_0xa4928c=_0xa4928c-0x0;var _0x27cc29=_0x36d2[_0xa4928c];return _0x27cc29;};'use strict';var _=require('lodash');var util=require(_0x236d('0x0'));var logger=require('../../config/logger')(_0x236d('0x1'));var moment=require(_0x236d('0x2'));var BPromise=require('bluebird');var rp=require(_0x236d('0x3'));var fs=require('fs');var path=require(_0x236d('0x4'));var rimraf=require('rimraf');var config=require(_0x236d('0x5'));var attributes=require(_0x236d('0x6'));var extensions=require(_0x236d('0x7'));module['exports']=function(_0x3905a1,_0x26331c){return _0x3905a1[_0x236d('0x8')]('Interval',attributes,{'tableName':'tools_intervals','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x58b994,_0x3e0965){extensions[_0x236d('0x9')](_0x3905a1,_0x58b994);},'afterBulkCreate':function(_0x10819d,_0xb28b1a,_0x429840){_0x429840();extensions[_0x236d('0x9')](_0x3905a1,_0x10819d[0x0]);},'afterUpdate':function(_0x1de722,_0x5729ff){extensions['rewrite'](_0x3905a1,_0x1de722);},'afterDestroy':function(_0x39632d,_0x17f838){extensions[_0x236d('0x9')](_0x3905a1,_0x39632d);}}});};
\ No newline at end of file
+var _0x5907=['lodash','../../config/logger','api','path','rimraf','../../config/environment','../../components/extensions/rewrite','exports','define','Interval','tools_intervals','rewrite'];(function(_0x4e1bd3,_0xda464d){var _0x234e83=function(_0x144f4d){while(--_0x144f4d){_0x4e1bd3['push'](_0x4e1bd3['shift']());}};_0x234e83(++_0xda464d);}(_0x5907,0xa8));var _0x7590=function(_0x1ee14b,_0x3e2f6e){_0x1ee14b=_0x1ee14b-0x0;var _0x51f54f=_0x5907[_0x1ee14b];return _0x51f54f;};'use strict';var _=require(_0x7590('0x0'));var util=require('util');var logger=require(_0x7590('0x1'))(_0x7590('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x7590('0x3'));var rimraf=require(_0x7590('0x4'));var config=require(_0x7590('0x5'));var attributes=require('./interval.attributes');var extensions=require(_0x7590('0x6'));module[_0x7590('0x7')]=function(_0x10298a,_0x3e9c07){return _0x10298a[_0x7590('0x8')](_0x7590('0x9'),attributes,{'tableName':_0x7590('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x211bd1,_0x468728){extensions[_0x7590('0xb')](_0x10298a,_0x211bd1);},'afterBulkCreate':function(_0x18c887,_0x350772,_0x561f54){_0x561f54();extensions[_0x7590('0xb')](_0x10298a,_0x18c887[0x0]);},'afterUpdate':function(_0x41ede6,_0x234e9f){extensions['rewrite'](_0x10298a,_0x41ede6);},'afterDestroy':function(_0x324452,_0x118892){extensions[_0x7590('0xb')](_0x10298a,_0x324452);}}});};
\ No newline at end of file
index 103412d..a0f741a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['code','error','message','result','catch','Interval','findAll','options','raw','where','attributes','include','map','model','GetInterval','stringify','ShowInterval','find','then','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','Interval,\x20%s,\x20%s','request\x20sent','debug','Interval,\x20%s,\x20%s,\x20%s'];(function(_0x565c49,_0x54acd0){var _0x20ca34=function(_0x42f7e1){while(--_0x42f7e1){_0x565c49['push'](_0x565c49['shift']());}};_0x20ca34(++_0x54acd0);}(_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);});});}exports['GetInterval']=function(_0x459eb1){var _0x478723=this;return new Promise(function(_0x106033,_0x205fd6){return db[_0x0a9e('0x14')][_0x0a9e('0x15')]({'raw':_0x459eb1[_0x0a9e('0x16')]?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x17')]===undefined?!![]:![]:!![],'where':_0x459eb1[_0x0a9e('0x16')]?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x18')]||null:null,'attributes':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x19')]||null:null,'limit':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')]['limit']||null:null,'include':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x459eb1[_0x0a9e('0x16')]['include'],function(_0xfb6e48){return{'model':db[_0xfb6e48[_0x0a9e('0x1c')]],'as':_0xfb6e48['as'],'attributes':_0xfb6e48[_0x0a9e('0x19')],'include':_0xfb6e48[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0xfb6e48[_0x0a9e('0x1a')],function(_0x16b1ca){return{'model':db[_0x16b1ca['model']],'as':_0x16b1ca['as'],'attributes':_0x16b1ca['attributes'],'include':_0x16b1ca[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x16b1ca[_0x0a9e('0x1a')],function(_0x33161b){return{'model':db[_0x33161b['model']],'as':_0x33161b['as'],'attributes':_0x33161b[_0x0a9e('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x45a1e7){logger['info'](_0x0a9e('0x1d'),_0x459eb1);logger[_0x0a9e('0xd')](_0x0a9e('0x1d'),_0x459eb1,JSON[_0x0a9e('0x1e')](_0x45a1e7));_0x106033(_0x45a1e7);})[_0x0a9e('0x13')](function(_0x1538a4){logger[_0x0a9e('0x10')](_0x0a9e('0x1d'),_0x1538a4['message'],_0x459eb1);_0x205fd6(_0x478723[_0x0a9e('0x10')](0x1f4,_0x1538a4[_0x0a9e('0x11')]));});});};exports[_0x0a9e('0x1f')]=function(_0x2ec755){var _0x5c877d=this;return new Promise(function(_0x15b200,_0x40e7a3){return db[_0x0a9e('0x14')][_0x0a9e('0x20')]({'raw':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')][_0x0a9e('0x17')]===undefined?!![]:![]:!![],'where':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')]['where']||null:null,'attributes':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755['options'][_0x0a9e('0x19')]||null:null,'include':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')][_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x2ec755['options'][_0x0a9e('0x1a')],function(_0x46f0a5){return{'model':db[_0x46f0a5[_0x0a9e('0x1c')]],'as':_0x46f0a5['as'],'attributes':_0x46f0a5[_0x0a9e('0x19')],'include':_0x46f0a5[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x46f0a5[_0x0a9e('0x1a')],function(_0x39e565){return{'model':db[_0x39e565['model']],'as':_0x39e565['as'],'attributes':_0x39e565[_0x0a9e('0x19')],'include':_0x39e565['include']?_[_0x0a9e('0x1b')](_0x39e565[_0x0a9e('0x1a')],function(_0x2b7e7f){return{'model':db[_0x2b7e7f[_0x0a9e('0x1c')]],'as':_0x2b7e7f['as'],'attributes':_0x2b7e7f['attributes']};}):[]};}):[]};}):[]:[]})[_0x0a9e('0x21')](function(_0xd1836d){logger[_0x0a9e('0xa')](_0x0a9e('0x1f'),_0x2ec755);logger['debug']('ShowInterval',_0x2ec755,JSON[_0x0a9e('0x1e')](_0xd1836d));_0x15b200(_0xd1836d);})['catch'](function(_0x24936a){logger[_0x0a9e('0x10')](_0x0a9e('0x1f'),_0x24936a[_0x0a9e('0x11')],_0x2ec755);_0x40e7a3(_0x5c877d['error'](0x1f4,_0x24936a[_0x0a9e('0x11')]));});});};
\ No newline at end of file
+var _0xa9e0=['code','error','message','result','catch','Interval','findAll','options','raw','where','attributes','include','map','model','GetInterval','stringify','ShowInterval','find','then','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','Interval,\x20%s,\x20%s','request\x20sent','debug','Interval,\x20%s,\x20%s,\x20%s'];(function(_0x56825b,_0x172b8d){var _0x69ce77=function(_0x348a1c){while(--_0x348a1c){_0x56825b['push'](_0x56825b['shift']());}};_0x69ce77(++_0x172b8d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2f3848,_0x48564d){_0x2f3848=_0x2f3848-0x0;var _0x102668=_0xa9e0[_0x2f3848];return _0x102668;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}exports['GetInterval']=function(_0x459eb1){var _0x478723=this;return new Promise(function(_0x106033,_0x205fd6){return db[_0x0a9e('0x14')][_0x0a9e('0x15')]({'raw':_0x459eb1[_0x0a9e('0x16')]?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x17')]===undefined?!![]:![]:!![],'where':_0x459eb1[_0x0a9e('0x16')]?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x18')]||null:null,'attributes':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x19')]||null:null,'limit':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')]['limit']||null:null,'include':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x459eb1[_0x0a9e('0x16')]['include'],function(_0xfb6e48){return{'model':db[_0xfb6e48[_0x0a9e('0x1c')]],'as':_0xfb6e48['as'],'attributes':_0xfb6e48[_0x0a9e('0x19')],'include':_0xfb6e48[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0xfb6e48[_0x0a9e('0x1a')],function(_0x16b1ca){return{'model':db[_0x16b1ca['model']],'as':_0x16b1ca['as'],'attributes':_0x16b1ca['attributes'],'include':_0x16b1ca[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x16b1ca[_0x0a9e('0x1a')],function(_0x33161b){return{'model':db[_0x33161b['model']],'as':_0x33161b['as'],'attributes':_0x33161b[_0x0a9e('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x45a1e7){logger['info'](_0x0a9e('0x1d'),_0x459eb1);logger[_0x0a9e('0xd')](_0x0a9e('0x1d'),_0x459eb1,JSON[_0x0a9e('0x1e')](_0x45a1e7));_0x106033(_0x45a1e7);})[_0x0a9e('0x13')](function(_0x1538a4){logger[_0x0a9e('0x10')](_0x0a9e('0x1d'),_0x1538a4['message'],_0x459eb1);_0x205fd6(_0x478723[_0x0a9e('0x10')](0x1f4,_0x1538a4[_0x0a9e('0x11')]));});});};exports[_0x0a9e('0x1f')]=function(_0x2ec755){var _0x5c877d=this;return new Promise(function(_0x15b200,_0x40e7a3){return db[_0x0a9e('0x14')][_0x0a9e('0x20')]({'raw':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')][_0x0a9e('0x17')]===undefined?!![]:![]:!![],'where':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')]['where']||null:null,'attributes':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755['options'][_0x0a9e('0x19')]||null:null,'include':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')][_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x2ec755['options'][_0x0a9e('0x1a')],function(_0x46f0a5){return{'model':db[_0x46f0a5[_0x0a9e('0x1c')]],'as':_0x46f0a5['as'],'attributes':_0x46f0a5[_0x0a9e('0x19')],'include':_0x46f0a5[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x46f0a5[_0x0a9e('0x1a')],function(_0x39e565){return{'model':db[_0x39e565['model']],'as':_0x39e565['as'],'attributes':_0x39e565[_0x0a9e('0x19')],'include':_0x39e565['include']?_[_0x0a9e('0x1b')](_0x39e565[_0x0a9e('0x1a')],function(_0x2b7e7f){return{'model':db[_0x2b7e7f[_0x0a9e('0x1c')]],'as':_0x2b7e7f['as'],'attributes':_0x2b7e7f['attributes']};}):[]};}):[]};}):[]:[]})[_0x0a9e('0x21')](function(_0xd1836d){logger[_0x0a9e('0xa')](_0x0a9e('0x1f'),_0x2ec755);logger['debug']('ShowInterval',_0x2ec755,JSON[_0x0a9e('0x1e')](_0xd1836d));_0x15b200(_0xd1836d);})['catch'](function(_0x24936a){logger[_0x0a9e('0x10')](_0x0a9e('0x1f'),_0x24936a[_0x0a9e('0x11')],_0x2ec755);_0x40e7a3(_0x5c877d['error'](0x1f4,_0x24936a[_0x0a9e('0x11')]));});});};
\ No newline at end of file
index cbfd287..815c003 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['post','isAuthenticated','exports','Router','./jira.controller'];(function(_0x4fb58b,_0x3106ad){var _0x2c8161=function(_0x439ec2){while(--_0x439ec2){_0x4fb58b['push'](_0x4fb58b['shift']());}};_0x2c8161(++_0x3106ad);}(_0xadb5,0xad));var _0x5adb=function(_0x244883,_0x5937b7){_0x244883=_0x244883-0x0;var _0x11107f=_0xadb5[_0x244883];return _0x11107f;};'use strict';var express=require('express');var router=express[_0x5adb('0x0')]();var auth=require('../../components/auth/service');var controller=require(_0x5adb('0x1'));router[_0x5adb('0x2')]('/',auth[_0x5adb('0x3')](),controller['send']);module[_0x5adb('0x4')]=router;
\ No newline at end of file
+var _0xadb5=['post','isAuthenticated','exports','Router','./jira.controller'];(function(_0x209fd0,_0x103307){var _0x4d26fe=function(_0x14633d){while(--_0x14633d){_0x209fd0['push'](_0x209fd0['shift']());}};_0x4d26fe(++_0x103307);}(_0xadb5,0xad));var _0x5adb=function(_0x152aad,_0x204de8){_0x152aad=_0x152aad-0x0;var _0x363bb4=_0xadb5[_0x152aad];return _0x363bb4;};'use strict';var express=require('express');var router=express[_0x5adb('0x0')]();var auth=require('../../components/auth/service');var controller=require(_0x5adb('0x1'));router[_0x5adb('0x2')]('/',auth[_0x5adb('0x3')](),controller['send']);module[_0x5adb('0x4')]=router;
\ No newline at end of file
index 022110d..84ed116 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ed5=['data','end','status','statusCode','json','parse','error','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','api.jira','write','openIssue','send','body','headers','x-forwarded-for','connection','remoteAddress','socket','bluebird','https','../../config/logger','api','support','key','MOTGUI','Report','\x20from\x20','description','stringify','issuetype','fields','customfield_11500','email','customfield_11501','oldToken','customfield_11502','customfield_11503','name','customfield_11504','customfield_10102','track.xcallymotion.com','/rest/api/2/issue','application/json','Basic\x20','toString','request','setEncoding','utf8'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0x0ed5,0x132));var _0x50ed=function(_0x42e173,_0x3235a2){_0x42e173=_0x42e173-0x0;var _0x4ff924=_0x0ed5[_0x42e173];return _0x4ff924;};'use strict';var BPromise=require(_0x50ed('0x0'));var https=require(_0x50ed('0x1'));var logger=require(_0x50ed('0x2'))(_0x50ed('0x3'));var USERNAME=_0x50ed('0x4');var PASSWORD='3eAmWpBVP0';function openIssue(_0x3b60e2,_0x16a76f){var _0x4e9feb={'fields':{'project':{'key':_0x3b60e2[_0x50ed('0x5')]||_0x50ed('0x6')},'summary':(_0x3b60e2['summary']||_0x50ed('0x7'))+_0x50ed('0x8')+_0x3b60e2['ip'],'description':_0x3b60e2[_0x50ed('0x9')]||JSON[_0x50ed('0xa')](_0x3b60e2),'issuetype':{'name':_0x3b60e2[_0x50ed('0xb')]||'Bug'}}};_0x4e9feb[_0x50ed('0xc')][_0x50ed('0xd')]=_0x3b60e2[_0x50ed('0xe')];_0x4e9feb[_0x50ed('0xc')][_0x50ed('0xf')]=_0x3b60e2[_0x50ed('0x10')];_0x4e9feb[_0x50ed('0xc')][_0x50ed('0x11')]=_0x3b60e2['newToken'];_0x4e9feb['fields'][_0x50ed('0x12')]=_0x3b60e2[_0x50ed('0x13')];_0x4e9feb[_0x50ed('0xc')][_0x50ed('0x14')]=_0x3b60e2['reason'];_0x4e9feb[_0x50ed('0xc')][_0x50ed('0x15')]=_0x3b60e2['ip'];var _0x5368b0={'host':_0x50ed('0x16'),'port':0x1bb,'path':_0x50ed('0x17'),'method':'POST','timeout':0x4e20,'headers':{'Content-Type':_0x50ed('0x18'),'Authorization':_0x50ed('0x19')+new Buffer(USERNAME+':'+PASSWORD)[_0x50ed('0x1a')]('base64')}};var _0x237a38=JSON['stringify'](_0x4e9feb);var _0x415972=https[_0x50ed('0x1b')](_0x5368b0,function(_0x5d6c4d){_0x5d6c4d[_0x50ed('0x1c')](_0x50ed('0x1d'));var _0x38056a='';_0x5d6c4d['on'](_0x50ed('0x1e'),function(_0x2af2b0){_0x38056a+=_0x2af2b0;});_0x5d6c4d['on'](_0x50ed('0x1f'),function(){if(_0x16a76f){return _0x16a76f[_0x50ed('0x20')](_0x5d6c4d[_0x50ed('0x21')])[_0x50ed('0x22')](JSON[_0x50ed('0x23')](_0x38056a));}});});_0x415972['on'](_0x50ed('0x24'),function(_0x2caf65){if(_0x16a76f){return _0x16a76f['status'](0x1f4)[_0x50ed('0x22')]({'errors':[{'message':_0x50ed('0x25'),'type':_0x50ed('0x26')}]});}});_0x415972[_0x50ed('0x27')](_0x237a38);_0x415972[_0x50ed('0x1f')]();}exports[_0x50ed('0x28')]=openIssue;exports[_0x50ed('0x29')]=function(_0x539a54,_0x3a46e5){_0x539a54[_0x50ed('0x2a')]['ip']=_0x539a54[_0x50ed('0x2b')][_0x50ed('0x2c')]||_0x539a54[_0x50ed('0x2d')][_0x50ed('0x2e')]||_0x539a54[_0x50ed('0x2f')]['remoteAddress']||_0x539a54[_0x50ed('0x2d')][_0x50ed('0x2f')][_0x50ed('0x2e')];return openIssue(_0x539a54[_0x50ed('0x2a')],_0x3a46e5);};
\ No newline at end of file
+var _0xa76a=['send','body','headers','x-forwarded-for','connection','remoteAddress','socket','bluebird','https','api','support','MOTGUI','summary','Report','description','stringify','issuetype','Bug','fields','customfield_11500','email','customfield_11501','oldToken','newToken','customfield_11503','name','customfield_11504','reason','application/json','Basic\x20','toString','base64','setEncoding','utf8','data','end','status','statusCode','json','parse','error','api.jira','write','openIssue'];(function(_0x1531f6,_0x55f1c1){var _0x586be1=function(_0x263ad4){while(--_0x263ad4){_0x1531f6['push'](_0x1531f6['shift']());}};_0x586be1(++_0x55f1c1);}(_0xa76a,0x1bf));var _0xaa76=function(_0x3fb9dd,_0x174fff){_0x3fb9dd=_0x3fb9dd-0x0;var _0x20136a=_0xa76a[_0x3fb9dd];return _0x20136a;};'use strict';var BPromise=require(_0xaa76('0x0'));var https=require(_0xaa76('0x1'));var logger=require('../../config/logger')(_0xaa76('0x2'));var USERNAME=_0xaa76('0x3');var PASSWORD='3eAmWpBVP0';function openIssue(_0x13764f,_0x5b144b){var _0x5df6dd={'fields':{'project':{'key':_0x13764f['key']||_0xaa76('0x4')},'summary':(_0x13764f[_0xaa76('0x5')]||_0xaa76('0x6'))+'\x20from\x20'+_0x13764f['ip'],'description':_0x13764f[_0xaa76('0x7')]||JSON[_0xaa76('0x8')](_0x13764f),'issuetype':{'name':_0x13764f[_0xaa76('0x9')]||_0xaa76('0xa')}}};_0x5df6dd[_0xaa76('0xb')][_0xaa76('0xc')]=_0x13764f[_0xaa76('0xd')];_0x5df6dd['fields'][_0xaa76('0xe')]=_0x13764f[_0xaa76('0xf')];_0x5df6dd[_0xaa76('0xb')]['customfield_11502']=_0x13764f[_0xaa76('0x10')];_0x5df6dd[_0xaa76('0xb')][_0xaa76('0x11')]=_0x13764f[_0xaa76('0x12')];_0x5df6dd[_0xaa76('0xb')][_0xaa76('0x13')]=_0x13764f[_0xaa76('0x14')];_0x5df6dd['fields']['customfield_10102']=_0x13764f['ip'];var _0x4dde12={'host':'track.xcallymotion.com','port':0x1bb,'path':'/rest/api/2/issue','method':'POST','timeout':0x4e20,'headers':{'Content-Type':_0xaa76('0x15'),'Authorization':_0xaa76('0x16')+new Buffer(USERNAME+':'+PASSWORD)[_0xaa76('0x17')](_0xaa76('0x18'))}};var _0x3dd8b6=JSON[_0xaa76('0x8')](_0x5df6dd);var _0x4cde91=https['request'](_0x4dde12,function(_0x56c98e){_0x56c98e[_0xaa76('0x19')](_0xaa76('0x1a'));var _0x58bb44='';_0x56c98e['on'](_0xaa76('0x1b'),function(_0x33928f){_0x58bb44+=_0x33928f;});_0x56c98e['on'](_0xaa76('0x1c'),function(){if(_0x5b144b){return _0x5b144b[_0xaa76('0x1d')](_0x56c98e[_0xaa76('0x1e')])[_0xaa76('0x1f')](JSON[_0xaa76('0x20')](_0x58bb44));}});});_0x4cde91['on'](_0xaa76('0x21'),function(_0x2f4369){if(_0x5b144b){return _0x5b144b[_0xaa76('0x1d')](0x1f4)[_0xaa76('0x1f')]({'errors':[{'message':'Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','type':_0xaa76('0x22')}]});}});_0x4cde91[_0xaa76('0x23')](_0x3dd8b6);_0x4cde91[_0xaa76('0x1c')]();}exports[_0xaa76('0x24')]=openIssue;exports[_0xaa76('0x25')]=function(_0x47b41c,_0x600d26){_0x47b41c[_0xaa76('0x26')]['ip']=_0x47b41c[_0xaa76('0x27')][_0xaa76('0x28')]||_0x47b41c[_0xaa76('0x29')][_0xaa76('0x2a')]||_0x47b41c['socket']['remoteAddress']||_0x47b41c[_0xaa76('0x29')][_0xaa76('0x2b')][_0xaa76('0x2a')];return openIssue(_0x47b41c['body'],_0x600d26);};
\ No newline at end of file
index 2946414..a4086c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4483=['exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./jscriptyAnswerReport.controller','get','isAuthenticated','index','/describe','describe','show','post','create','put','/:id','update','delete'];(function(_0x4907de,_0x5bbdc6){var _0x482054=function(_0x39ecf6){while(--_0x39ecf6){_0x4907de['push'](_0x4907de['shift']());}};_0x482054(++_0x5bbdc6);}(_0x4483,0x1a3));var _0x3448=function(_0x44e864,_0x10641a){_0x44e864=_0x44e864-0x0;var _0x44e092=_0x4483[_0x44e864];return _0x44e092;};'use strict';var multer=require(_0x3448('0x0'));var util=require(_0x3448('0x1'));var path=require(_0x3448('0x2'));var timeout=require('connect-timeout');var express=require(_0x3448('0x3'));var router=express[_0x3448('0x4')]();var fs_extra=require(_0x3448('0x5'));var auth=require(_0x3448('0x6'));var interaction=require(_0x3448('0x7'));var config=require('../../config/environment');var controller=require(_0x3448('0x8'));router[_0x3448('0x9')]('/',auth[_0x3448('0xa')](),controller[_0x3448('0xb')]);router[_0x3448('0x9')](_0x3448('0xc'),auth[_0x3448('0xa')](),controller[_0x3448('0xd')]);router['get']('/:id',auth[_0x3448('0xa')](),controller[_0x3448('0xe')]);router[_0x3448('0xf')]('/',auth[_0x3448('0xa')](),controller[_0x3448('0x10')]);router[_0x3448('0x11')](_0x3448('0x12'),auth[_0x3448('0xa')](),controller[_0x3448('0x13')]);router[_0x3448('0x14')](_0x3448('0x12'),auth['isAuthenticated'](),controller['destroy']);module[_0x3448('0x15')]=router;
\ No newline at end of file
+var _0xf3cd=['delete','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','show','post','create','put','/:id','update'];(function(_0x235a88,_0x4fca20){var _0x1d8323=function(_0xb85a8b){while(--_0xb85a8b){_0x235a88['push'](_0x235a88['shift']());}};_0x1d8323(++_0x4fca20);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xf3cd[_0x5b644e];return _0x49c6bf;};'use strict';var multer=require(_0xdf3c('0x0'));var util=require(_0xdf3c('0x1'));var path=require(_0xdf3c('0x2'));var timeout=require(_0xdf3c('0x3'));var express=require(_0xdf3c('0x4'));var router=express[_0xdf3c('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xdf3c('0x6'));var interaction=require(_0xdf3c('0x7'));var config=require(_0xdf3c('0x8'));var controller=require('./jscriptyAnswerReport.controller');router[_0xdf3c('0x9')]('/',auth[_0xdf3c('0xa')](),controller[_0xdf3c('0xb')]);router[_0xdf3c('0x9')](_0xdf3c('0xc'),auth[_0xdf3c('0xa')](),controller['describe']);router[_0xdf3c('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xdf3c('0xd')]);router[_0xdf3c('0xe')]('/',auth['isAuthenticated'](),controller[_0xdf3c('0xf')]);router[_0xdf3c('0x10')](_0xdf3c('0x11'),auth[_0xdf3c('0xa')](),controller[_0xdf3c('0x12')]);router[_0xdf3c('0x13')](_0xdf3c('0x11'),auth[_0xdf3c('0xa')](),controller['destroy']);module[_0xdf3c('0x14')]=router;
\ No newline at end of file
index 791e5d4..582ee50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x7a54,0x106));var _0x47a5=function(_0x58c101,_0x558d07){_0x58c101=_0x58c101-0x0;var _0x4cf100=_0x7a54[_0x58c101];return _0x4cf100;};'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(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0x7a54,0x106));var _0x47a5=function(_0x7d10cf,_0x209a3a){_0x7d10cf=_0x7d10cf-0x0;var _0x396a1b=_0x7a54[_0x7d10cf];return _0x396a1b;};'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 8c12d08..3817dbd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc76=['send','index','map','JscriptyAnswerReport','rawAttributes','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','offset','undefined','limit','count','set','Content-Range','save','update','destroy','then','end','error','stack','name'];(function(_0x20450e,_0x405ed5){var _0x3b838f=function(_0x55e99d){while(--_0x55e99d){_0x20450e['push'](_0x20450e['shift']());}};_0x3b838f(++_0x405ed5);}(_0xfc76,0xb5));var _0x6fc7=function(_0x516d83,_0x2f157d){_0x516d83=_0x516d83-0x0;var _0x52f05c=_0xfc76[_0x516d83];return _0x52f05c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6fc7('0x0'));var zipdir=require(_0x6fc7('0x1'));var jsonpatch=require(_0x6fc7('0x2'));var rp=require(_0x6fc7('0x3'));var moment=require(_0x6fc7('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x6fc7('0x5'));var util=require(_0x6fc7('0x6'));var path=require('path');var sox=require(_0x6fc7('0x7'));var csv=require('to-csv');var ejs=require(_0x6fc7('0x8'));var fs=require('fs');var fs_extra=require(_0x6fc7('0x9'));var _=require(_0x6fc7('0xa'));var squel=require('squel');var crypto=require(_0x6fc7('0xb'));var jsforce=require(_0x6fc7('0xc'));var deskjs=require(_0x6fc7('0xd'));var toCsv=require(_0x6fc7('0xe'));var querystring=require(_0x6fc7('0xf'));var Papa=require(_0x6fc7('0x10'));var Redis=require('ioredis');var authService=require(_0x6fc7('0x11'));var qs=require(_0x6fc7('0x12'));var as=require(_0x6fc7('0x13'));var hardwareService=require(_0x6fc7('0x14'));var logger=require(_0x6fc7('0x15'))(_0x6fc7('0x16'));var utils=require('../../config/utils');var config=require(_0x6fc7('0x17'));var licenseUtil=require(_0x6fc7('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x433adc,_0x2c32b8){_0x2c32b8=_0x2c32b8||0xcc;return function(_0x5f438d){if(_0x5f438d){return _0x433adc[_0x6fc7('0x19')](_0x2c32b8);}return _0x433adc[_0x6fc7('0x1a')](_0x2c32b8)['end']();};}function respondWithResult(_0x44d8e0,_0x3c107f){_0x3c107f=_0x3c107f||0xc8;return function(_0x10a482){if(_0x10a482){return _0x44d8e0['status'](_0x3c107f)['json'](_0x10a482);}};}function respondWithFilteredResult(_0xbb4a3e,_0x45d585){return function(_0x499bcc){if(_0x499bcc){var _0x2b0122=typeof _0x45d585[_0x6fc7('0x1b')]===_0x6fc7('0x1c')&&typeof _0x45d585[_0x6fc7('0x1d')]==='undefined';var _0x816704=_0x499bcc[_0x6fc7('0x1e')];var _0x280c69=_0x2b0122?0x0:_0x45d585[_0x6fc7('0x1b')];var _0x12be21=_0x2b0122?_0x499bcc[_0x6fc7('0x1e')]:_0x45d585['offset']+_0x45d585[_0x6fc7('0x1d')];var _0x124893;if(_0x12be21>=_0x816704){_0x12be21=_0x816704;_0x124893=0xc8;}else{_0x124893=0xce;}_0xbb4a3e[_0x6fc7('0x1a')](_0x124893);return _0xbb4a3e[_0x6fc7('0x1f')](_0x6fc7('0x20'),_0x280c69+'-'+_0x12be21+'/'+_0x816704)['json'](_0x499bcc);}return null;};}function patchUpdates(_0x277f9e){return function(_0x2427a){try{jsonpatch['apply'](_0x2427a,_0x277f9e,!![]);}catch(_0x17b9e3){return BPromise['reject'](_0x17b9e3);}return _0x2427a[_0x6fc7('0x21')]();};}function saveUpdates(_0x4f583c,_0x11b359){return function(_0xdb5974){if(_0xdb5974){return _0xdb5974[_0x6fc7('0x22')](_0x4f583c)['then'](function(_0x45e53e){return _0x45e53e;});}return null;};}function removeEntity(_0x4a4cdf,_0x2dd21a){return function(_0xdd4827){if(_0xdd4827){return _0xdd4827[_0x6fc7('0x23')]()[_0x6fc7('0x24')](function(){_0x4a4cdf[_0x6fc7('0x1a')](0xcc)[_0x6fc7('0x25')]();});}};}function handleEntityNotFound(_0x190680,_0x817221){return function(_0x2b6b55){if(!_0x2b6b55){_0x190680[_0x6fc7('0x19')](0x194);}return _0x2b6b55;};}function handleError(_0xaa2687,_0x426872){_0x426872=_0x426872||0x1f4;return function(_0x4612d4){logger[_0x6fc7('0x26')](_0x4612d4[_0x6fc7('0x27')]);if(_0x4612d4['name']){delete _0x4612d4[_0x6fc7('0x28')];}_0xaa2687[_0x6fc7('0x1a')](_0x426872)[_0x6fc7('0x29')](_0x4612d4);};}exports[_0x6fc7('0x2a')]=function(_0x5c1fd3,_0xfff989){var _0x30e579={},_0xa93a4f={},_0x2aa91c={'count':0x0,'rows':[]};var _0x34bf7f=_[_0x6fc7('0x2b')](db[_0x6fc7('0x2c')][_0x6fc7('0x2d')],function(_0x59a70e){return{'name':_0x59a70e['fieldName'],'type':_0x59a70e[_0x6fc7('0x2e')][_0x6fc7('0x2f')]};});_0xa93a4f[_0x6fc7('0x30')]=_[_0x6fc7('0x2b')](_0x34bf7f,_0x6fc7('0x28'));_0xa93a4f[_0x6fc7('0x31')]=_['keys'](_0x5c1fd3[_0x6fc7('0x31')]);_0xa93a4f[_0x6fc7('0x32')]=_[_0x6fc7('0x33')](_0xa93a4f[_0x6fc7('0x30')],_0xa93a4f['query']);_0x30e579['attributes']=_['intersection'](_0xa93a4f[_0x6fc7('0x30')],qs[_0x6fc7('0x34')](_0x5c1fd3[_0x6fc7('0x31')][_0x6fc7('0x34')]));_0x30e579[_0x6fc7('0x35')]=_0x30e579[_0x6fc7('0x35')][_0x6fc7('0x36')]?_0x30e579[_0x6fc7('0x35')]:_0xa93a4f[_0x6fc7('0x30')];if(!_0x5c1fd3['query'][_0x6fc7('0x37')]('nolimit')){_0x30e579[_0x6fc7('0x1d')]=qs[_0x6fc7('0x1d')](_0x5c1fd3[_0x6fc7('0x31')][_0x6fc7('0x1d')]);_0x30e579['offset']=qs[_0x6fc7('0x1b')](_0x5c1fd3[_0x6fc7('0x31')][_0x6fc7('0x1b')]);}_0x30e579[_0x6fc7('0x38')]=qs['sort'](_0x5c1fd3[_0x6fc7('0x31')]['sort']);_0x30e579[_0x6fc7('0x39')]=qs['filters'](_['pick'](_0x5c1fd3['query'],_0xa93a4f[_0x6fc7('0x32')]),_0x34bf7f);if(_0x5c1fd3['query'][_0x6fc7('0x3a')]){_0x30e579[_0x6fc7('0x39')]=_[_0x6fc7('0x3b')](_0x30e579[_0x6fc7('0x39')],{'$or':_[_0x6fc7('0x2b')](_0x34bf7f,function(_0xc1fbf7){if(_0xc1fbf7[_0x6fc7('0x2e')]!==_0x6fc7('0x3c')){var _0x18e6f7={};_0x18e6f7[_0xc1fbf7[_0x6fc7('0x28')]]={'$like':'%'+_0x5c1fd3[_0x6fc7('0x31')][_0x6fc7('0x3a')]+'%'};return _0x18e6f7;}})});}_0x30e579=_[_0x6fc7('0x3b')]({},_0x30e579,_0x5c1fd3[_0x6fc7('0x3d')]);var _0x3ac76e={'where':_0x30e579[_0x6fc7('0x39')]};return db[_0x6fc7('0x2c')][_0x6fc7('0x1e')](_0x3ac76e)['then'](function(_0x490f2e){_0x2aa91c[_0x6fc7('0x1e')]=_0x490f2e;if(_0x5c1fd3[_0x6fc7('0x31')][_0x6fc7('0x3e')]){_0x30e579[_0x6fc7('0x3f')]=[{'all':!![]}];}return db['JscriptyAnswerReport'][_0x6fc7('0x40')](_0x30e579);})[_0x6fc7('0x24')](function(_0x27f6dc){_0x2aa91c[_0x6fc7('0x41')]=_0x27f6dc;return _0x2aa91c;})[_0x6fc7('0x24')](respondWithFilteredResult(_0xfff989,_0x30e579))[_0x6fc7('0x42')](handleError(_0xfff989,null));};exports[_0x6fc7('0x43')]=function(_0x4754da,_0x1e33cd){var _0x2d8ca4={'raw':!![],'where':{'id':_0x4754da[_0x6fc7('0x44')]['id']}},_0x20bc07={};_0x20bc07['model']=_[_0x6fc7('0x45')](db[_0x6fc7('0x2c')]['rawAttributes']);_0x20bc07[_0x6fc7('0x31')]=_[_0x6fc7('0x45')](_0x4754da[_0x6fc7('0x31')]);_0x20bc07[_0x6fc7('0x32')]=_[_0x6fc7('0x33')](_0x20bc07[_0x6fc7('0x30')],_0x20bc07[_0x6fc7('0x31')]);_0x2d8ca4[_0x6fc7('0x35')]=_[_0x6fc7('0x33')](_0x20bc07[_0x6fc7('0x30')],qs['fields'](_0x4754da[_0x6fc7('0x31')][_0x6fc7('0x34')]));_0x2d8ca4['attributes']=_0x2d8ca4['attributes'][_0x6fc7('0x36')]?_0x2d8ca4[_0x6fc7('0x35')]:_0x20bc07[_0x6fc7('0x30')];if(_0x4754da['query'][_0x6fc7('0x3e')]){_0x2d8ca4[_0x6fc7('0x3f')]=[{'all':!![]}];}_0x2d8ca4=_['merge']({},_0x2d8ca4,_0x4754da[_0x6fc7('0x3d')]);return db[_0x6fc7('0x2c')][_0x6fc7('0x46')](_0x2d8ca4)[_0x6fc7('0x24')](handleEntityNotFound(_0x1e33cd,null))[_0x6fc7('0x24')](respondWithResult(_0x1e33cd,null))[_0x6fc7('0x42')](handleError(_0x1e33cd,null));};exports[_0x6fc7('0x47')]=function(_0xb6cf9b,_0x357d7a){return db[_0x6fc7('0x2c')][_0x6fc7('0x47')](_0xb6cf9b['body'],{})['then'](respondWithResult(_0x357d7a,0xc9))['catch'](handleError(_0x357d7a,null));};exports['update']=function(_0x22a0c5,_0x5d4d40){if(_0x22a0c5[_0x6fc7('0x48')]['id']){delete _0x22a0c5[_0x6fc7('0x48')]['id'];}return db[_0x6fc7('0x2c')][_0x6fc7('0x46')]({'where':{'id':_0x22a0c5[_0x6fc7('0x44')]['id']}})[_0x6fc7('0x24')](handleEntityNotFound(_0x5d4d40,null))['then'](saveUpdates(_0x22a0c5[_0x6fc7('0x48')],null))[_0x6fc7('0x24')](respondWithResult(_0x5d4d40,null))['catch'](handleError(_0x5d4d40,null));};exports[_0x6fc7('0x23')]=function(_0x24bf3e,_0x3b2506){return db[_0x6fc7('0x2c')][_0x6fc7('0x46')]({'where':{'id':_0x24bf3e[_0x6fc7('0x44')]['id']}})[_0x6fc7('0x24')](handleEntityNotFound(_0x3b2506,null))[_0x6fc7('0x24')](removeEntity(_0x3b2506,null))[_0x6fc7('0x42')](handleError(_0x3b2506,null));};exports[_0x6fc7('0x49')]=function(_0x4ced40,_0x4684bd){return db[_0x6fc7('0x2c')][_0x6fc7('0x49')]()['then'](respondWithResult(_0x4684bd,null))[_0x6fc7('0x42')](handleError(_0x4684bd,null));};
\ No newline at end of file
+var _0xae1c=['send','index','map','JscriptyAnswerReport','rawAttributes','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','merge','filter','includeAll','include','findAll','rows','catch','show','params','options','find','create','body','describe','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name'];(function(_0x390733,_0x1e3d32){var _0x33beb9=function(_0x4491a3){while(--_0x4491a3){_0x390733['push'](_0x390733['shift']());}};_0x33beb9(++_0x1e3d32);}(_0xae1c,0xff));var _0xcae1=function(_0x1d8d01,_0x709a1b){_0x1d8d01=_0x1d8d01-0x0;var _0x51a8ec=_0xae1c[_0x1d8d01];return _0x51a8ec;};'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(_0xcae1('0x0'));var moment=require(_0xcae1('0x1'));var BPromise=require(_0xcae1('0x2'));var Mustache=require(_0xcae1('0x3'));var util=require(_0xcae1('0x4'));var path=require(_0xcae1('0x5'));var sox=require(_0xcae1('0x6'));var csv=require(_0xcae1('0x7'));var ejs=require(_0xcae1('0x8'));var fs=require('fs');var fs_extra=require(_0xcae1('0x9'));var _=require(_0xcae1('0xa'));var squel=require(_0xcae1('0xb'));var crypto=require(_0xcae1('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xcae1('0x7'));var querystring=require(_0xcae1('0xd'));var Papa=require(_0xcae1('0xe'));var Redis=require('ioredis');var authService=require(_0xcae1('0xf'));var qs=require(_0xcae1('0x10'));var as=require(_0xcae1('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xcae1('0x12'))(_0xcae1('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xcae1('0x14'));var db=require(_0xcae1('0x15'))['db'];function respondWithStatusCode(_0x340bdc,_0x27cbd9){_0x27cbd9=_0x27cbd9||0xcc;return function(_0x41d7bb){if(_0x41d7bb){return _0x340bdc[_0xcae1('0x16')](_0x27cbd9);}return _0x340bdc[_0xcae1('0x17')](_0x27cbd9)[_0xcae1('0x18')]();};}function respondWithResult(_0x41fd7a,_0x277c6d){_0x277c6d=_0x277c6d||0xc8;return function(_0x13ad2c){if(_0x13ad2c){return _0x41fd7a[_0xcae1('0x17')](_0x277c6d)[_0xcae1('0x19')](_0x13ad2c);}};}function respondWithFilteredResult(_0x12d6cb,_0x2ac1ea){return function(_0x54ab10){if(_0x54ab10){var _0x4743b4=typeof _0x2ac1ea[_0xcae1('0x1a')]==='undefined'&&typeof _0x2ac1ea['limit']===_0xcae1('0x1b');var _0x143c21=_0x54ab10['count'];var _0x5f18d5=_0x4743b4?0x0:_0x2ac1ea[_0xcae1('0x1a')];var _0x4dcd4b=_0x4743b4?_0x54ab10[_0xcae1('0x1c')]:_0x2ac1ea[_0xcae1('0x1a')]+_0x2ac1ea[_0xcae1('0x1d')];var _0x14cd02;if(_0x4dcd4b>=_0x143c21){_0x4dcd4b=_0x143c21;_0x14cd02=0xc8;}else{_0x14cd02=0xce;}_0x12d6cb[_0xcae1('0x17')](_0x14cd02);return _0x12d6cb[_0xcae1('0x1e')](_0xcae1('0x1f'),_0x5f18d5+'-'+_0x4dcd4b+'/'+_0x143c21)[_0xcae1('0x19')](_0x54ab10);}return null;};}function patchUpdates(_0x11fda8){return function(_0x33e1af){try{jsonpatch[_0xcae1('0x20')](_0x33e1af,_0x11fda8,!![]);}catch(_0x401659){return BPromise[_0xcae1('0x21')](_0x401659);}return _0x33e1af[_0xcae1('0x22')]();};}function saveUpdates(_0x480365,_0x1f8beb){return function(_0x17f9f4){if(_0x17f9f4){return _0x17f9f4[_0xcae1('0x23')](_0x480365)[_0xcae1('0x24')](function(_0x514501){return _0x514501;});}return null;};}function removeEntity(_0x137a21,_0x2227e4){return function(_0x737966){if(_0x737966){return _0x737966[_0xcae1('0x25')]()[_0xcae1('0x24')](function(){_0x137a21[_0xcae1('0x17')](0xcc)[_0xcae1('0x18')]();});}};}function handleEntityNotFound(_0x9fac02,_0x556f45){return function(_0x285b9a){if(!_0x285b9a){_0x9fac02['sendStatus'](0x194);}return _0x285b9a;};}function handleError(_0x22710b,_0x300758){_0x300758=_0x300758||0x1f4;return function(_0x5bb602){logger[_0xcae1('0x26')](_0x5bb602[_0xcae1('0x27')]);if(_0x5bb602[_0xcae1('0x28')]){delete _0x5bb602['name'];}_0x22710b['status'](_0x300758)[_0xcae1('0x29')](_0x5bb602);};}exports[_0xcae1('0x2a')]=function(_0xbba4eb,_0x3be989){var _0x38b76d={},_0x2348df={},_0x3e7b1d={'count':0x0,'rows':[]};var _0x4ed7d8=_[_0xcae1('0x2b')](db[_0xcae1('0x2c')][_0xcae1('0x2d')],function(_0x5defb0){return{'name':_0x5defb0['fieldName'],'type':_0x5defb0[_0xcae1('0x2e')]['key']};});_0x2348df[_0xcae1('0x2f')]=_[_0xcae1('0x2b')](_0x4ed7d8,_0xcae1('0x28'));_0x2348df[_0xcae1('0x30')]=_[_0xcae1('0x31')](_0xbba4eb[_0xcae1('0x30')]);_0x2348df[_0xcae1('0x32')]=_[_0xcae1('0x33')](_0x2348df[_0xcae1('0x2f')],_0x2348df[_0xcae1('0x30')]);_0x38b76d['attributes']=_[_0xcae1('0x33')](_0x2348df[_0xcae1('0x2f')],qs[_0xcae1('0x34')](_0xbba4eb[_0xcae1('0x30')]['fields']));_0x38b76d[_0xcae1('0x35')]=_0x38b76d['attributes'][_0xcae1('0x36')]?_0x38b76d['attributes']:_0x2348df[_0xcae1('0x2f')];if(!_0xbba4eb[_0xcae1('0x30')][_0xcae1('0x37')](_0xcae1('0x38'))){_0x38b76d[_0xcae1('0x1d')]=qs[_0xcae1('0x1d')](_0xbba4eb[_0xcae1('0x30')][_0xcae1('0x1d')]);_0x38b76d[_0xcae1('0x1a')]=qs[_0xcae1('0x1a')](_0xbba4eb['query'][_0xcae1('0x1a')]);}_0x38b76d['order']=qs[_0xcae1('0x39')](_0xbba4eb['query'][_0xcae1('0x39')]);_0x38b76d[_0xcae1('0x3a')]=qs['filters'](_[_0xcae1('0x3b')](_0xbba4eb[_0xcae1('0x30')],_0x2348df[_0xcae1('0x32')]),_0x4ed7d8);if(_0xbba4eb[_0xcae1('0x30')]['filter']){_0x38b76d[_0xcae1('0x3a')]=_[_0xcae1('0x3c')](_0x38b76d['where'],{'$or':_[_0xcae1('0x2b')](_0x4ed7d8,function(_0xb5e255){if(_0xb5e255[_0xcae1('0x2e')]!=='VIRTUAL'){var _0x16295b={};_0x16295b[_0xb5e255['name']]={'$like':'%'+_0xbba4eb[_0xcae1('0x30')][_0xcae1('0x3d')]+'%'};return _0x16295b;}})});}_0x38b76d=_[_0xcae1('0x3c')]({},_0x38b76d,_0xbba4eb['options']);var _0xcd95de={'where':_0x38b76d[_0xcae1('0x3a')]};return db[_0xcae1('0x2c')][_0xcae1('0x1c')](_0xcd95de)[_0xcae1('0x24')](function(_0x237201){_0x3e7b1d['count']=_0x237201;if(_0xbba4eb[_0xcae1('0x30')][_0xcae1('0x3e')]){_0x38b76d[_0xcae1('0x3f')]=[{'all':!![]}];}return db[_0xcae1('0x2c')][_0xcae1('0x40')](_0x38b76d);})[_0xcae1('0x24')](function(_0x349a18){_0x3e7b1d[_0xcae1('0x41')]=_0x349a18;return _0x3e7b1d;})[_0xcae1('0x24')](respondWithFilteredResult(_0x3be989,_0x38b76d))[_0xcae1('0x42')](handleError(_0x3be989,null));};exports[_0xcae1('0x43')]=function(_0x47b77e,_0x296d31){var _0x2f6d1b={'raw':!![],'where':{'id':_0x47b77e[_0xcae1('0x44')]['id']}},_0x1df5f0={};_0x1df5f0[_0xcae1('0x2f')]=_[_0xcae1('0x31')](db[_0xcae1('0x2c')]['rawAttributes']);_0x1df5f0[_0xcae1('0x30')]=_[_0xcae1('0x31')](_0x47b77e[_0xcae1('0x30')]);_0x1df5f0[_0xcae1('0x32')]=_['intersection'](_0x1df5f0['model'],_0x1df5f0['query']);_0x2f6d1b[_0xcae1('0x35')]=_[_0xcae1('0x33')](_0x1df5f0[_0xcae1('0x2f')],qs[_0xcae1('0x34')](_0x47b77e[_0xcae1('0x30')][_0xcae1('0x34')]));_0x2f6d1b['attributes']=_0x2f6d1b[_0xcae1('0x35')][_0xcae1('0x36')]?_0x2f6d1b['attributes']:_0x1df5f0[_0xcae1('0x2f')];if(_0x47b77e[_0xcae1('0x30')][_0xcae1('0x3e')]){_0x2f6d1b['include']=[{'all':!![]}];}_0x2f6d1b=_['merge']({},_0x2f6d1b,_0x47b77e[_0xcae1('0x45')]);return db[_0xcae1('0x2c')][_0xcae1('0x46')](_0x2f6d1b)[_0xcae1('0x24')](handleEntityNotFound(_0x296d31,null))[_0xcae1('0x24')](respondWithResult(_0x296d31,null))[_0xcae1('0x42')](handleError(_0x296d31,null));};exports[_0xcae1('0x47')]=function(_0x168c0f,_0x417f9f){return db[_0xcae1('0x2c')][_0xcae1('0x47')](_0x168c0f[_0xcae1('0x48')],{})['then'](respondWithResult(_0x417f9f,0xc9))[_0xcae1('0x42')](handleError(_0x417f9f,null));};exports[_0xcae1('0x23')]=function(_0x3bf8b0,_0x258630){if(_0x3bf8b0[_0xcae1('0x48')]['id']){delete _0x3bf8b0[_0xcae1('0x48')]['id'];}return db[_0xcae1('0x2c')][_0xcae1('0x46')]({'where':{'id':_0x3bf8b0[_0xcae1('0x44')]['id']}})[_0xcae1('0x24')](handleEntityNotFound(_0x258630,null))[_0xcae1('0x24')](saveUpdates(_0x3bf8b0[_0xcae1('0x48')],null))['then'](respondWithResult(_0x258630,null))[_0xcae1('0x42')](handleError(_0x258630,null));};exports[_0xcae1('0x25')]=function(_0x3a203f,_0x58c63c){return db[_0xcae1('0x2c')][_0xcae1('0x46')]({'where':{'id':_0x3a203f[_0xcae1('0x44')]['id']}})[_0xcae1('0x24')](handleEntityNotFound(_0x58c63c,null))['then'](removeEntity(_0x58c63c,null))[_0xcae1('0x42')](handleError(_0x58c63c,null));};exports[_0xcae1('0x49')]=function(_0x1b40b9,_0x4b195a){return db[_0xcae1('0x2c')][_0xcae1('0x49')]()[_0xcae1('0x24')](respondWithResult(_0x4b195a,null))['catch'](handleError(_0x4b195a,null));};
\ No newline at end of file
index 39d5fa5..0a4ca6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x886e=['JscriptyAnswerReport','report_jscripty_answers','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./jscriptyAnswerReport.attributes','define'];(function(_0xc8a11,_0x347a33){var _0x55a500=function(_0x288d05){while(--_0x288d05){_0xc8a11['push'](_0xc8a11['shift']());}};_0x55a500(++_0x347a33);}(_0x886e,0x154));var _0xe886=function(_0x3bb700,_0x17b527){_0x3bb700=_0x3bb700-0x0;var _0x56bd84=_0x886e[_0x3bb700];return _0x56bd84;};'use strict';var _=require(_0xe886('0x0'));var util=require(_0xe886('0x1'));var logger=require(_0xe886('0x2'))(_0xe886('0x3'));var moment=require(_0xe886('0x4'));var BPromise=require('bluebird');var rp=require(_0xe886('0x5'));var fs=require('fs');var path=require(_0xe886('0x6'));var rimraf=require(_0xe886('0x7'));var config=require(_0xe886('0x8'));var attributes=require(_0xe886('0x9'));module['exports']=function(_0xed2d0d,_0x688539){return _0xed2d0d[_0xe886('0xa')](_0xe886('0xb'),attributes,{'tableName':_0xe886('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb411=['JscriptyAnswerReport','report_jscripty_answers','util','../../config/logger','request-promise','rimraf','../../config/environment','exports','define'];(function(_0x1be370,_0xfb6985){var _0x4610ac=function(_0x407172){while(--_0x407172){_0x1be370['push'](_0x1be370['shift']());}};_0x4610ac(++_0xfb6985);}(_0xb411,0x12b));var _0x1b41=function(_0x541e7e,_0x1e773d){_0x541e7e=_0x541e7e-0x0;var _0x2e8b57=_0xb411[_0x541e7e];return _0x2e8b57;};'use strict';var _=require('lodash');var util=require(_0x1b41('0x0'));var logger=require(_0x1b41('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x1b41('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1b41('0x3'));var config=require(_0x1b41('0x4'));var attributes=require('./jscriptyAnswerReport.attributes');module[_0x1b41('0x5')]=function(_0x4021fa,_0x3925eb){return _0x4021fa[_0x1b41('0x6')](_0x1b41('0x7'),attributes,{'tableName':_0x1b41('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 34748df..851b700 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x221c=['http','request','then','info','JscriptyAnswerReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x3db045,_0x155b0e){var _0x2ebeca=function(_0x3ad0d8){while(--_0x3ad0d8){_0x3db045['push'](_0x3db045['shift']());}};_0x2ebeca(++_0x155b0e);}(_0x221c,0x17c));var _0xc221=function(_0x256db6,_0x3031cd){_0x256db6=_0x256db6-0x0;var _0x5b8e1f=_0x221c[_0x256db6];return _0x5b8e1f;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xc221('0x0'));var BPromise=require(_0xc221('0x1'));var rs=require(_0xc221('0x2'));var fs=require('fs');var Redis=require(_0xc221('0x3'));var db=require(_0xc221('0x4'))['db'];var utils=require(_0xc221('0x5'));var logger=require(_0xc221('0x6'))(_0xc221('0x7'));var config=require(_0xc221('0x8'));var jayson=require(_0xc221('0x9'));var client=jayson[_0xc221('0xa')][_0xc221('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5d4b9d,_0x160646,_0x22be13){return new BPromise(function(_0x4d5c2c,_0x55a6da){return client[_0xc221('0xc')](_0x5d4b9d,_0x22be13)[_0xc221('0xd')](function(_0x5eba65){logger[_0xc221('0xe')](_0xc221('0xf'),_0x160646,_0xc221('0x10'));logger['debug']('JscriptyAnswerReport,\x20%s,\x20%s,\x20%s',_0x160646,_0xc221('0x10'),JSON[_0xc221('0x11')](_0x5eba65));if(_0x5eba65[_0xc221('0x12')]){if(_0x5eba65['error'][_0xc221('0x13')]===0x1f4){logger[_0xc221('0x12')](_0xc221('0xf'),_0x160646,_0x5eba65[_0xc221('0x12')][_0xc221('0x14')]);return _0x55a6da(_0x5eba65[_0xc221('0x12')][_0xc221('0x14')]);}logger['error'](_0xc221('0xf'),_0x160646,_0x5eba65[_0xc221('0x12')]['message']);return _0x4d5c2c(_0x5eba65[_0xc221('0x12')][_0xc221('0x14')]);}else{logger[_0xc221('0xe')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x160646,_0xc221('0x10'));_0x4d5c2c(_0x5eba65[_0xc221('0x15')]['message']);}})[_0xc221('0x16')](function(_0x56d0dc){logger['error']('JscriptyAnswerReport,\x20%s,\x20%s',_0x160646,_0x56d0dc);_0x55a6da(_0x56d0dc);});});}
\ No newline at end of file
+var _0xa6c8=['result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','http','request','then','request\x20sent','stringify','error','code','JscriptyAnswerReport,\x20%s,\x20%s','message','info'];(function(_0x2014b8,_0x13ba7a){var _0x42d592=function(_0x293ef5){while(--_0x293ef5){_0x2014b8['push'](_0x2014b8['shift']());}};_0x42d592(++_0x13ba7a);}(_0xa6c8,0xaa));var _0x8a6c=function(_0x48f422,_0xcaa83a){_0x48f422=_0x48f422-0x0;var _0x369538=_0xa6c8[_0x48f422];return _0x369538;};'use strict';var _=require(_0x8a6c('0x0'));var util=require(_0x8a6c('0x1'));var moment=require('moment');var BPromise=require(_0x8a6c('0x2'));var rs=require(_0x8a6c('0x3'));var fs=require('fs');var Redis=require(_0x8a6c('0x4'));var db=require(_0x8a6c('0x5'))['db'];var utils=require(_0x8a6c('0x6'));var logger=require('../../config/logger')(_0x8a6c('0x7'));var config=require('../../config/environment');var jayson=require(_0x8a6c('0x8'));var client=jayson['client'][_0x8a6c('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x14f91f,_0x4690aa,_0x18f911){return new BPromise(function(_0xaa1e97,_0xe0d4f5){return client[_0x8a6c('0xa')](_0x14f91f,_0x18f911)[_0x8a6c('0xb')](function(_0x227708){logger['info']('JscriptyAnswerReport,\x20%s,\x20%s',_0x4690aa,_0x8a6c('0xc'));logger['debug']('JscriptyAnswerReport,\x20%s,\x20%s,\x20%s',_0x4690aa,'request\x20sent',JSON[_0x8a6c('0xd')](_0x227708));if(_0x227708['error']){if(_0x227708[_0x8a6c('0xe')][_0x8a6c('0xf')]===0x1f4){logger['error'](_0x8a6c('0x10'),_0x4690aa,_0x227708[_0x8a6c('0xe')]['message']);return _0xe0d4f5(_0x227708['error'][_0x8a6c('0x11')]);}logger[_0x8a6c('0xe')](_0x8a6c('0x10'),_0x4690aa,_0x227708[_0x8a6c('0xe')][_0x8a6c('0x11')]);return _0xaa1e97(_0x227708[_0x8a6c('0xe')]['message']);}else{logger[_0x8a6c('0x12')](_0x8a6c('0x10'),_0x4690aa,_0x8a6c('0xc'));_0xaa1e97(_0x227708[_0x8a6c('0x13')][_0x8a6c('0x11')]);}})[_0x8a6c('0x14')](function(_0x4cb59c){logger['error'](_0x8a6c('0x10'),_0x4690aa,_0x4cb59c);_0xe0d4f5(_0x4cb59c);});});}
\ No newline at end of file
index a2c2a4a..a7cb85f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b25=['getSummary','post','create','put','/:id','update','delete','multer','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./jscriptyProject.controller','get','isAuthenticated','getSessions','/:id/answers','getAnswers','/:id/summary','30s'];(function(_0x25e2e7,_0x301a17){var _0x33fe39=function(_0x5913a0){while(--_0x5913a0){_0x25e2e7['push'](_0x25e2e7['shift']());}};_0x33fe39(++_0x301a17);}(_0x4b25,0x75));var _0x54b2=function(_0x59c4b3,_0x3a7ebc){_0x59c4b3=_0x59c4b3-0x0;var _0x5a81a2=_0x4b25[_0x59c4b3];return _0x5a81a2;};'use strict';var multer=require(_0x54b2('0x0'));var util=require('util');var path=require(_0x54b2('0x1'));var timeout=require('connect-timeout');var express=require(_0x54b2('0x2'));var router=express[_0x54b2('0x3')]();var fs_extra=require(_0x54b2('0x4'));var auth=require(_0x54b2('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x54b2('0x6'));var controller=require(_0x54b2('0x7'));router[_0x54b2('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x54b2('0x8')]('/:id',auth[_0x54b2('0x9')](),controller['show']);router[_0x54b2('0x8')]('/:id/sessions',auth[_0x54b2('0x9')](),controller[_0x54b2('0xa')]);router[_0x54b2('0x8')](_0x54b2('0xb'),auth['isAuthenticated'](),controller[_0x54b2('0xc')]);router['get'](_0x54b2('0xd'),auth[_0x54b2('0x9')](),timeout(_0x54b2('0xe')),controller[_0x54b2('0xf')]);router[_0x54b2('0x10')]('/',auth[_0x54b2('0x9')](),controller[_0x54b2('0x11')]);router[_0x54b2('0x10')]('/:id/clone',auth[_0x54b2('0x9')](),controller['clone']);router[_0x54b2('0x12')](_0x54b2('0x13'),auth[_0x54b2('0x9')](),controller[_0x54b2('0x14')]);router[_0x54b2('0x15')]('/:id',auth[_0x54b2('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x5b0e=['/:id','update','delete','destroy','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','get','isAuthenticated','index','getSessions','/:id/answers','/:id/summary','30s','getSummary','post','create','/:id/clone','clone','put'];(function(_0x21b52,_0x317ebd){var _0x52a154=function(_0x5b773b){while(--_0x5b773b){_0x21b52['push'](_0x21b52['shift']());}};_0x52a154(++_0x317ebd);}(_0x5b0e,0x1c7));var _0xe5b0=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0x5b0e[_0x160c73];return _0xd9302;};'use strict';var multer=require('multer');var util=require(_0xe5b0('0x0'));var path=require(_0xe5b0('0x1'));var timeout=require(_0xe5b0('0x2'));var express=require(_0xe5b0('0x3'));var router=express[_0xe5b0('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xe5b0('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xe5b0('0x6'));var controller=require('./jscriptyProject.controller');router[_0xe5b0('0x7')]('/',auth[_0xe5b0('0x8')](),controller[_0xe5b0('0x9')]);router[_0xe5b0('0x7')]('/:id',auth[_0xe5b0('0x8')](),controller['show']);router['get']('/:id/sessions',auth['isAuthenticated'](),controller[_0xe5b0('0xa')]);router[_0xe5b0('0x7')](_0xe5b0('0xb'),auth[_0xe5b0('0x8')](),controller['getAnswers']);router['get'](_0xe5b0('0xc'),auth['isAuthenticated'](),timeout(_0xe5b0('0xd')),controller[_0xe5b0('0xe')]);router[_0xe5b0('0xf')]('/',auth['isAuthenticated'](),controller[_0xe5b0('0x10')]);router['post'](_0xe5b0('0x11'),auth[_0xe5b0('0x8')](),controller[_0xe5b0('0x12')]);router[_0xe5b0('0x13')](_0xe5b0('0x14'),auth[_0xe5b0('0x8')](),controller[_0xe5b0('0x15')]);router[_0xe5b0('0x16')](_0xe5b0('0x14'),auth[_0xe5b0('0x8')](),controller[_0xe5b0('0x17')]);module[_0xe5b0('0x18')]=router;
\ No newline at end of file
index dae6f11..f2e87c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc917=['{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','description','BOOLEAN','sequelize','lodash','util','exports','STRING','TEXT','long','isObjectLike','formData','stringify','isString','setDataValue','format'];(function(_0x4787cc,_0x224c63){var _0x2801fb=function(_0x46c253){while(--_0x46c253){_0x4787cc['push'](_0x4787cc['shift']());}};_0x2801fb(++_0x224c63);}(_0xc917,0x17a));var _0x7c91=function(_0x506a19,_0x1aa991){_0x506a19=_0x506a19-0x0;var _0x23f2b5=_0xc917[_0x506a19];return _0x23f2b5;};'use strict';var Sequelize=require(_0x7c91('0x0'));var _=require(_0x7c91('0x1'));var util=require(_0x7c91('0x2'));module[_0x7c91('0x3')]={'name':{'type':Sequelize[_0x7c91('0x4')],'unique':'name'},'description':{'type':Sequelize[_0x7c91('0x4')]},'formData':{'type':Sequelize[_0x7c91('0x5')](_0x7c91('0x6')),'set':function(_0x58d474){if(_[_0x7c91('0x7')](_0x58d474)){this['setDataValue'](_0x7c91('0x8'),JSON[_0x7c91('0x9')](_0x58d474));}else if(_[_0x7c91('0xa')](_0x58d474)){this['setDataValue']('formData',_0x58d474);}else{this[_0x7c91('0xb')](_0x7c91('0x8'),util[_0x7c91('0xc')](_0x7c91('0xd'),this[_0x7c91('0xe')]('name')||'',this[_0x7c91('0xe')](_0x7c91('0xf'))||''));}}},'enableUncompleteSave':{'type':Sequelize[_0x7c91('0x10')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0x7c91('0x10')],'defaultValue':![]}};
\ No newline at end of file
+var _0x3c03=['setDataValue','format','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','description','BOOLEAN','sequelize','util','exports','STRING','name','isObjectLike','formData','isString'];(function(_0x55336a,_0x240d59){var _0x28ceb3=function(_0x399d5c){while(--_0x399d5c){_0x55336a['push'](_0x55336a['shift']());}};_0x28ceb3(++_0x240d59);}(_0x3c03,0x13a));var _0x33c0=function(_0x39096d,_0x51f8a0){_0x39096d=_0x39096d-0x0;var _0x13da4f=_0x3c03[_0x39096d];return _0x13da4f;};'use strict';var Sequelize=require(_0x33c0('0x0'));var _=require('lodash');var util=require(_0x33c0('0x1'));module[_0x33c0('0x2')]={'name':{'type':Sequelize[_0x33c0('0x3')],'unique':_0x33c0('0x4')},'description':{'type':Sequelize['STRING']},'formData':{'type':Sequelize['TEXT']('long'),'set':function(_0x430dc8){if(_[_0x33c0('0x5')](_0x430dc8)){this['setDataValue'](_0x33c0('0x6'),JSON['stringify'](_0x430dc8));}else if(_[_0x33c0('0x7')](_0x430dc8)){this[_0x33c0('0x8')](_0x33c0('0x6'),_0x430dc8);}else{this['setDataValue'](_0x33c0('0x6'),util[_0x33c0('0x9')](_0x33c0('0xa'),this[_0x33c0('0xb')](_0x33c0('0x4'))||'',this['getDataValue'](_0x33c0('0xc'))||''));}}},'enableUncompleteSave':{'type':Sequelize[_0x33c0('0xd')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 5b85bb4..d2df4a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x09ef=['path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','get','UserProfileResource','error','stack','name','JscriptyProject','rawAttributes','fieldName','type','key','model','map','query','keys','intersection','attributes','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','fields','length','find','create','body','user','Projects','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','updatedAt','createdAt','userProfileId','getSessions','findOne','JscriptySessionReport','findAll','getAnswers','JscriptyAnswerReport','ProjectId','number','toString','indexOf','getSummary','startTime','starttime','parse','JscriptyQuestionReport','-createdAt','questionId','question','format','answer','push','isEmpty','now','writeFileSync','/tmp/Jscripty_Project_%d_Summary_%s.csv','setHeader','Content-disposition','attachment;\x20filename=','Jscripty_Project_%d_Summary_%s.csv','Content-type','download','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache'];(function(_0x47aa64,_0xfb8a07){var _0x549c7a=function(_0x266165){while(--_0x266165){_0x47aa64['push'](_0x47aa64['shift']());}};_0x549c7a(++_0xfb8a07);}(_0x09ef,0x15e));var _0xf09e=function(_0x5988f6,_0x2bdb32){_0x5988f6=_0x5988f6-0x0;var _0x5c2b0a=_0x09ef[_0x5988f6];return _0x5c2b0a;};'use strict';var emlformat=require(_0xf09e('0x0'));var rimraf=require(_0xf09e('0x1'));var zipdir=require(_0xf09e('0x2'));var jsonpatch=require(_0xf09e('0x3'));var rp=require(_0xf09e('0x4'));var moment=require(_0xf09e('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xf09e('0x6'));var util=require('util');var path=require(_0xf09e('0x7'));var sox=require(_0xf09e('0x8'));var csv=require(_0xf09e('0x9'));var ejs=require(_0xf09e('0xa'));var fs=require('fs');var fs_extra=require(_0xf09e('0xb'));var _=require(_0xf09e('0xc'));var squel=require(_0xf09e('0xd'));var crypto=require(_0xf09e('0xe'));var jsforce=require(_0xf09e('0xf'));var deskjs=require(_0xf09e('0x10'));var toCsv=require('to-csv');var querystring=require(_0xf09e('0x11'));var Papa=require(_0xf09e('0x12'));var Redis=require(_0xf09e('0x13'));var authService=require(_0xf09e('0x14'));var qs=require(_0xf09e('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xf09e('0x16'))(_0xf09e('0x17'));var utils=require('../../config/utils');var config=require(_0xf09e('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xf09e('0x19'))['db'];function respondWithStatusCode(_0xcea7b1,_0x2d974f){_0x2d974f=_0x2d974f||0xcc;return function(_0x12ecc3){if(_0x12ecc3){return _0xcea7b1[_0xf09e('0x1a')](_0x2d974f);}return _0xcea7b1[_0xf09e('0x1b')](_0x2d974f)['end']();};}function respondWithResult(_0x43e7e9,_0x505b6d){_0x505b6d=_0x505b6d||0xc8;return function(_0x38f7de){if(_0x38f7de){return _0x43e7e9[_0xf09e('0x1b')](_0x505b6d)[_0xf09e('0x1c')](_0x38f7de);}};}function respondWithFilteredResult(_0x4a3c58,_0x17b604){return function(_0x3a6bd0){if(_0x3a6bd0){var _0x4f88f1=typeof _0x17b604[_0xf09e('0x1d')]===_0xf09e('0x1e')&&typeof _0x17b604[_0xf09e('0x1f')]===_0xf09e('0x1e');var _0x3abeae=_0x3a6bd0['count'];var _0x21d713=_0x4f88f1?0x0:_0x17b604[_0xf09e('0x1d')];var _0x435bb8=_0x4f88f1?_0x3a6bd0[_0xf09e('0x20')]:_0x17b604[_0xf09e('0x1d')]+_0x17b604[_0xf09e('0x1f')];var _0x105934;if(_0x435bb8>=_0x3abeae){_0x435bb8=_0x3abeae;_0x105934=0xc8;}else{_0x105934=0xce;}_0x4a3c58[_0xf09e('0x1b')](_0x105934);return _0x4a3c58[_0xf09e('0x21')](_0xf09e('0x22'),_0x21d713+'-'+_0x435bb8+'/'+_0x3abeae)[_0xf09e('0x1c')](_0x3a6bd0);}return null;};}function patchUpdates(_0x4c5a1f){return function(_0x19c044){try{jsonpatch[_0xf09e('0x23')](_0x19c044,_0x4c5a1f,!![]);}catch(_0x3a24ba){return BPromise[_0xf09e('0x24')](_0x3a24ba);}return _0x19c044['save']();};}function saveUpdates(_0x454133,_0x5e95cb){return function(_0x4533c5){if(_0x4533c5){return _0x4533c5[_0xf09e('0x25')](_0x454133)[_0xf09e('0x26')](function(_0x1dea86){return _0x1dea86;});}return null;};}function removeEntity(_0x18bd4f,_0xb9f4c3){return function(_0x5bb343){if(_0x5bb343){return _0x5bb343[_0xf09e('0x27')]()[_0xf09e('0x26')](function(){var _0x300bc5=_0x5bb343[_0xf09e('0x28')]({'plain':!![]});var _0x5d6d27='Projects';return db[_0xf09e('0x29')][_0xf09e('0x27')]({'where':{'type':_0x5d6d27,'resourceId':_0x300bc5['id']}})['then'](function(){return _0x5bb343;});})[_0xf09e('0x26')](function(){_0x18bd4f[_0xf09e('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x7f76b0,_0x1a698f){return function(_0xf49fc4){if(!_0xf49fc4){_0x7f76b0['sendStatus'](0x194);}return _0xf49fc4;};}function handleError(_0x125717,_0xfa0588){_0xfa0588=_0xfa0588||0x1f4;return function(_0x2fc707){logger[_0xf09e('0x2a')](_0x2fc707[_0xf09e('0x2b')]);if(_0x2fc707['name']){delete _0x2fc707[_0xf09e('0x2c')];}_0x125717[_0xf09e('0x1b')](_0xfa0588)['send'](_0x2fc707);};}exports['index']=function(_0x5efdb9,_0x3e3da0){var _0x32214c={},_0x32e492={},_0x3eeff9={'count':0x0,'rows':[]};var _0x1c787e=_['map'](db[_0xf09e('0x2d')][_0xf09e('0x2e')],function(_0x41a2a0){return{'name':_0x41a2a0[_0xf09e('0x2f')],'type':_0x41a2a0[_0xf09e('0x30')][_0xf09e('0x31')]};});_0x32e492[_0xf09e('0x32')]=_[_0xf09e('0x33')](_0x1c787e,_0xf09e('0x2c'));_0x32e492[_0xf09e('0x34')]=_[_0xf09e('0x35')](_0x5efdb9[_0xf09e('0x34')]);_0x32e492['filters']=_[_0xf09e('0x36')](_0x32e492[_0xf09e('0x32')],_0x32e492[_0xf09e('0x34')]);_0x32214c[_0xf09e('0x37')]=_[_0xf09e('0x36')](_0x32e492[_0xf09e('0x32')],qs['fields'](_0x5efdb9[_0xf09e('0x34')]['fields']));_0x32214c['attributes']=_0x32214c[_0xf09e('0x37')]['length']?_0x32214c[_0xf09e('0x37')]:_0x32e492[_0xf09e('0x32')];if(!_0x5efdb9[_0xf09e('0x34')][_0xf09e('0x38')](_0xf09e('0x39'))){_0x32214c['limit']=qs[_0xf09e('0x1f')](_0x5efdb9['query']['limit']);_0x32214c['offset']=qs[_0xf09e('0x1d')](_0x5efdb9[_0xf09e('0x34')]['offset']);}_0x32214c[_0xf09e('0x3a')]=qs[_0xf09e('0x3b')](_0x5efdb9[_0xf09e('0x34')]['sort']);_0x32214c['where']=qs[_0xf09e('0x3c')](_[_0xf09e('0x3d')](_0x5efdb9['query'],_0x32e492[_0xf09e('0x3c')]),_0x1c787e);if(_0x5efdb9[_0xf09e('0x34')][_0xf09e('0x3e')]){_0x32214c[_0xf09e('0x3f')]=_[_0xf09e('0x40')](_0x32214c[_0xf09e('0x3f')],{'$or':_[_0xf09e('0x33')](_0x1c787e,function(_0x5dc2f8){if(_0x5dc2f8[_0xf09e('0x30')]!==_0xf09e('0x41')){var _0x540fc9={};_0x540fc9[_0x5dc2f8[_0xf09e('0x2c')]]={'$like':'%'+_0x5efdb9[_0xf09e('0x34')][_0xf09e('0x3e')]+'%'};return _0x540fc9;}})});}_0x32214c=_[_0xf09e('0x40')]({},_0x32214c,_0x5efdb9[_0xf09e('0x42')]);var _0x1807fa={'where':_0x32214c[_0xf09e('0x3f')]};return db['JscriptyProject'][_0xf09e('0x20')](_0x1807fa)['then'](function(_0x34cc5f){_0x3eeff9['count']=_0x34cc5f;if(_0x5efdb9[_0xf09e('0x34')][_0xf09e('0x43')]){_0x32214c[_0xf09e('0x44')]=[{'all':!![]}];}return db['JscriptyProject']['findAll'](_0x32214c);})[_0xf09e('0x26')](function(_0x3a5cf4){_0x3eeff9[_0xf09e('0x45')]=_0x3a5cf4;return _0x3eeff9;})[_0xf09e('0x26')](respondWithFilteredResult(_0x3e3da0,_0x32214c))[_0xf09e('0x46')](handleError(_0x3e3da0,null));};exports[_0xf09e('0x47')]=function(_0x369714,_0x5b5bee){var _0x454371={'raw':![],'where':{'id':_0x369714[_0xf09e('0x48')]['id']}},_0x2e3e9f={};_0x2e3e9f['model']=_[_0xf09e('0x35')](db[_0xf09e('0x2d')][_0xf09e('0x2e')]);_0x2e3e9f[_0xf09e('0x34')]=_[_0xf09e('0x35')](_0x369714[_0xf09e('0x34')]);_0x2e3e9f[_0xf09e('0x3c')]=_['intersection'](_0x2e3e9f['model'],_0x2e3e9f[_0xf09e('0x34')]);_0x454371[_0xf09e('0x37')]=_['intersection'](_0x2e3e9f['model'],qs[_0xf09e('0x49')](_0x369714['query'][_0xf09e('0x49')]));_0x454371[_0xf09e('0x37')]=_0x454371[_0xf09e('0x37')][_0xf09e('0x4a')]?_0x454371[_0xf09e('0x37')]:_0x2e3e9f[_0xf09e('0x32')];if(_0x369714[_0xf09e('0x34')][_0xf09e('0x43')]){_0x454371[_0xf09e('0x44')]=[{'all':!![]}];}_0x454371=_[_0xf09e('0x40')]({},_0x454371,_0x369714[_0xf09e('0x42')]);return db['JscriptyProject'][_0xf09e('0x4b')](_0x454371)['then'](handleEntityNotFound(_0x5b5bee,null))[_0xf09e('0x26')](respondWithResult(_0x5b5bee,null))[_0xf09e('0x46')](handleError(_0x5b5bee,null));};exports[_0xf09e('0x4c')]=function(_0x5a27a5,_0x3150e5){return db[_0xf09e('0x2d')][_0xf09e('0x4c')](_0x5a27a5[_0xf09e('0x4d')],{})['then'](function(_0x49563e){var _0x11ae3a=_0x5a27a5['user'][_0xf09e('0x28')]({'plain':!![]});if(!_0x11ae3a)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x11ae3a['role']===_0xf09e('0x4e')){var _0x5c1e65=_0x49563e['get']({'plain':!![]});var _0xf652d6=_0xf09e('0x4f');return db[_0xf09e('0x50')][_0xf09e('0x4b')]({'where':{'name':_0xf652d6,'userProfileId':_0x11ae3a['userProfileId']},'raw':!![]})[_0xf09e('0x26')](function(_0x439a79){if(_0x439a79&&_0x439a79[_0xf09e('0x51')]===0x0){return db[_0xf09e('0x29')][_0xf09e('0x4c')]({'name':_0x5c1e65[_0xf09e('0x2c')],'resourceId':_0x5c1e65['id'],'type':_0x439a79[_0xf09e('0x2c')],'sectionId':_0x439a79['id']},{})[_0xf09e('0x26')](function(){return _0x49563e;});}else{return _0x49563e;}})[_0xf09e('0x46')](function(_0x1f5551){logger[_0xf09e('0x2a')](_0xf09e('0x52'),_0x1f5551);throw _0x1f5551;});}return _0x49563e;})['then'](respondWithResult(_0x3150e5,0xc9))[_0xf09e('0x46')](handleError(_0x3150e5,null));};exports[_0xf09e('0x53')]=function(_0x319b82,_0x3214cb){var _0x4e364d={'where':{'id':_0x319b82[_0xf09e('0x48')]['id']}},_0x3b51f7={};_0x3b51f7['model']=_[_0xf09e('0x35')](db['JscriptyProject'][_0xf09e('0x2e')]);_0x4e364d['attributes']=_[_0xf09e('0x36')](_0x3b51f7[_0xf09e('0x32')],qs['fields'](_0x319b82[_0xf09e('0x34')][_0xf09e('0x49')]));_0x4e364d[_0xf09e('0x37')]=_0x4e364d[_0xf09e('0x37')][_0xf09e('0x4a')]?_0x4e364d[_0xf09e('0x37')]:_0x3b51f7['model'];if(_0x319b82[_0xf09e('0x34')][_0xf09e('0x43')]){_0x4e364d[_0xf09e('0x44')]=[{'all':!![]}];}_0x4e364d=_[_0xf09e('0x40')]({},_0x4e364d,_0x319b82[_0xf09e('0x42')]);return db[_0xf09e('0x2d')][_0xf09e('0x4b')](_0x4e364d)['then'](handleEntityNotFound(_0x3214cb,null))[_0xf09e('0x26')](function(_0x111542){if(_0x111542){var _0x467b56=_0x111542[_0xf09e('0x28')]({'plain':!![]});_0x467b56=qs[_0xf09e('0x54')](_0x467b56,['id','createdAt',_0xf09e('0x55')]);_0x319b82['body']=_[_0xf09e('0x54')](_0x319b82[_0xf09e('0x4d')],['id',_0xf09e('0x56'),_0xf09e('0x55')]);return db[_0xf09e('0x2d')][_0xf09e('0x4c')](_[_0xf09e('0x40')](_0x467b56,_0x319b82[_0xf09e('0x4d')]),{'include':_0x319b82[_0xf09e('0x34')]['includeAll']?[{'all':!![]}]:undefined})[_0xf09e('0x26')](function(_0x351c77){var _0x15e371=_0x319b82[_0xf09e('0x4e')][_0xf09e('0x28')]({'plain':!![]});if(!_0x15e371)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x15e371['role']===_0xf09e('0x4e')){var _0xef0ba6=_0x351c77['get']({'plain':!![]});var _0x28e51b='Projects';return db[_0xf09e('0x50')][_0xf09e('0x4b')]({'where':{'name':_0x28e51b,'userProfileId':_0x15e371[_0xf09e('0x57')]},'raw':!![]})[_0xf09e('0x26')](function(_0xc0b477){if(_0xc0b477&&_0xc0b477[_0xf09e('0x51')]===0x0){return db[_0xf09e('0x29')][_0xf09e('0x4c')]({'name':_0xef0ba6[_0xf09e('0x2c')],'resourceId':_0xef0ba6['id'],'type':_0xc0b477[_0xf09e('0x2c')],'sectionId':_0xc0b477['id']},{})['then'](function(){return _0x351c77;});}else{return _0x351c77;}})['catch'](function(_0x329540){logger[_0xf09e('0x2a')](_0xf09e('0x52'),_0x329540);throw _0x329540;});}return _0x351c77;});}})['then'](respondWithResult(_0x3214cb,0xc9))[_0xf09e('0x46')](handleError(_0x3214cb,null));};exports[_0xf09e('0x25')]=function(_0x10f4b2,_0x4775d1){if(_0x10f4b2['body']['id']){delete _0x10f4b2[_0xf09e('0x4d')]['id'];}return db[_0xf09e('0x2d')][_0xf09e('0x4b')]({'where':{'id':_0x10f4b2['params']['id']}})[_0xf09e('0x26')](handleEntityNotFound(_0x4775d1,null))[_0xf09e('0x26')](saveUpdates(_0x10f4b2[_0xf09e('0x4d')],null))[_0xf09e('0x26')](respondWithResult(_0x4775d1,null))['catch'](handleError(_0x4775d1,null));};exports['destroy']=function(_0x2545e2,_0x33ee1b){return db[_0xf09e('0x2d')][_0xf09e('0x4b')]({'where':{'id':_0x2545e2[_0xf09e('0x48')]['id']}})['then'](handleEntityNotFound(_0x33ee1b,null))[_0xf09e('0x26')](removeEntity(_0x33ee1b,null))[_0xf09e('0x46')](handleError(_0x33ee1b,null));};exports[_0xf09e('0x58')]=function(_0x8a9d36,_0x4e1b9a,_0x561081){var _0x2a1def={'raw':!![],'where':{}};var _0x2a7017={};var _0x3d9d9d={'count':0x0,'rows':[]};return db[_0xf09e('0x2d')][_0xf09e('0x59')]({'where':{'id':_0x8a9d36[_0xf09e('0x48')]['id']}})['then'](handleEntityNotFound(_0x4e1b9a,null))[_0xf09e('0x26')](function(_0x892b28){if(_0x892b28){_0x2a7017['model']=_[_0xf09e('0x35')](db[_0xf09e('0x5a')][_0xf09e('0x2e')]);_0x2a7017[_0xf09e('0x34')]=_['keys'](_0x8a9d36['query']);_0x2a7017[_0xf09e('0x3c')]=_[_0xf09e('0x36')](_0x2a7017['model'],_0x2a7017['query']);_0x2a1def['attributes']=_[_0xf09e('0x36')](_0x2a7017[_0xf09e('0x32')],qs[_0xf09e('0x49')](_0x8a9d36[_0xf09e('0x34')][_0xf09e('0x49')]));_0x2a1def['attributes']=_0x2a1def[_0xf09e('0x37')][_0xf09e('0x4a')]?_0x2a1def[_0xf09e('0x37')]:_0x2a7017[_0xf09e('0x32')];if(!_0x8a9d36[_0xf09e('0x34')][_0xf09e('0x38')]('nolimit')){_0x2a1def['limit']=qs[_0xf09e('0x1f')](_0x8a9d36[_0xf09e('0x34')]['limit']);_0x2a1def[_0xf09e('0x1d')]=qs[_0xf09e('0x1d')](_0x8a9d36['query'][_0xf09e('0x1d')]);}_0x2a1def[_0xf09e('0x3a')]=qs[_0xf09e('0x3b')](_0x8a9d36[_0xf09e('0x34')][_0xf09e('0x3b')]);_0x2a1def[_0xf09e('0x3f')]=qs[_0xf09e('0x3c')](_['pick'](_0x8a9d36[_0xf09e('0x34')],_0x2a7017['filters']));_0x2a1def['where']['ProjectId']=_0x892b28['id'];if(_0x8a9d36[_0xf09e('0x34')][_0xf09e('0x3e')]){_0x2a1def[_0xf09e('0x3f')]=_[_0xf09e('0x40')](_0x2a1def[_0xf09e('0x3f')],{'$or':_[_0xf09e('0x33')](_0x2a1def[_0xf09e('0x37')],function(_0x16e6f0){var _0x293fa3={};_0x293fa3[_0x16e6f0]={'$like':'%'+_0x8a9d36[_0xf09e('0x34')][_0xf09e('0x3e')]+'%'};return _0x293fa3;})});}_0x2a1def=_[_0xf09e('0x40')]({},_0x2a1def,_0x8a9d36[_0xf09e('0x42')]);return db[_0xf09e('0x5a')][_0xf09e('0x20')]({'where':_0x2a1def[_0xf09e('0x3f')]})[_0xf09e('0x26')](function(_0x3a4b07){_0x3d9d9d[_0xf09e('0x20')]=_0x3a4b07;if(_0x8a9d36['query'][_0xf09e('0x43')]){_0x2a1def[_0xf09e('0x44')]=[{'all':!![]}];}return db[_0xf09e('0x5a')][_0xf09e('0x5b')](_0x2a1def);})[_0xf09e('0x26')](function(_0x15d178){_0x3d9d9d[_0xf09e('0x45')]=_0x15d178;return _0x3d9d9d;});}})[_0xf09e('0x26')](respondWithFilteredResult(_0x4e1b9a,_0x2a1def))['catch'](handleError(_0x4e1b9a,null));};exports[_0xf09e('0x5c')]=function(_0x3ee14a,_0x1b83a3,_0x34caeb){var _0x3c8c6d={'raw':!![],'where':{}};var _0x513143={};var _0x3a068f={'count':0x0,'rows':[]};return db[_0xf09e('0x2d')][_0xf09e('0x59')]({'where':{'id':_0x3ee14a[_0xf09e('0x48')]['id']}})['then'](handleEntityNotFound(_0x1b83a3,null))[_0xf09e('0x26')](function(_0x4ca72d){if(_0x4ca72d){_0x513143[_0xf09e('0x32')]=_[_0xf09e('0x35')](db[_0xf09e('0x5d')][_0xf09e('0x2e')]);_0x513143[_0xf09e('0x34')]=_[_0xf09e('0x35')](_0x3ee14a[_0xf09e('0x34')]);_0x513143['filters']=_[_0xf09e('0x36')](_0x513143[_0xf09e('0x32')],_0x513143['query']);_0x3c8c6d[_0xf09e('0x37')]=_[_0xf09e('0x36')](_0x513143['model'],qs[_0xf09e('0x49')](_0x3ee14a[_0xf09e('0x34')]['fields']));_0x3c8c6d[_0xf09e('0x37')]=_0x3c8c6d[_0xf09e('0x37')][_0xf09e('0x4a')]?_0x3c8c6d['attributes']:_0x513143[_0xf09e('0x32')];if(!_0x3ee14a[_0xf09e('0x34')][_0xf09e('0x38')](_0xf09e('0x39'))){_0x3c8c6d['limit']=qs[_0xf09e('0x1f')](_0x3ee14a[_0xf09e('0x34')][_0xf09e('0x1f')]);_0x3c8c6d['offset']=qs['offset'](_0x3ee14a[_0xf09e('0x34')][_0xf09e('0x1d')]);}_0x3c8c6d[_0xf09e('0x3a')]=qs[_0xf09e('0x3b')](_0x3ee14a[_0xf09e('0x34')][_0xf09e('0x3b')]);_0x3c8c6d[_0xf09e('0x3f')]=qs[_0xf09e('0x3c')](_[_0xf09e('0x3d')](_0x3ee14a[_0xf09e('0x34')],_0x513143[_0xf09e('0x3c')]));_0x3c8c6d[_0xf09e('0x3f')][_0xf09e('0x5e')]=_0x4ca72d['id'];if(_0x3ee14a[_0xf09e('0x34')]['filter']){_0x3c8c6d['where']=_[_0xf09e('0x40')](_0x3c8c6d[_0xf09e('0x3f')],{'$or':_[_0xf09e('0x33')](_0x3c8c6d[_0xf09e('0x37')],function(_0x21fe79){var _0xe76c68={};_0xe76c68[_0x21fe79]={'$like':'%'+_0x3ee14a[_0xf09e('0x34')][_0xf09e('0x3e')]+'%'};return _0xe76c68;})});}_0x3c8c6d=_[_0xf09e('0x40')]({},_0x3c8c6d,_0x3ee14a[_0xf09e('0x42')]);return db[_0xf09e('0x5d')][_0xf09e('0x20')]({'where':_0x3c8c6d[_0xf09e('0x3f')]})['then'](function(_0x8930b9){_0x3a068f['count']=_0x8930b9;if(_0x3ee14a[_0xf09e('0x34')][_0xf09e('0x43')]){_0x3c8c6d[_0xf09e('0x44')]=[{'all':!![]}];}return db[_0xf09e('0x5d')][_0xf09e('0x5b')](_0x3c8c6d);})[_0xf09e('0x26')](function(_0x2bf284){_0x3a068f[_0xf09e('0x45')]=_0x2bf284;return _0x3a068f;});}})[_0xf09e('0x26')](respondWithFilteredResult(_0x1b83a3,_0x3c8c6d))[_0xf09e('0x46')](handleError(_0x1b83a3,null));};function char(_0x303d5a){return _0xf09e('0x5f')===typeof _0x303d5a?String['fromCharCode']['apply'](null,arguments):_0x303d5a;}function needsEncapsulation(_0x2e376c){return!!_0x2e376c&&(_0x2e376c[_0xf09e('0x60')]()['indexOf'](char(0xd))>=0x0||_0x2e376c[_0xf09e('0x60')]()[_0xf09e('0x61')](char(0xa))>=0x0||_0x2e376c[_0xf09e('0x60')]()[_0xf09e('0x61')](char(0x2c))>=0x0||_0x2e376c[_0xf09e('0x60')]()['indexOf'](char(0x22))>=0x0);}function encapsulate(_0x4baefe){var _0x217d47=char(0x22),_0x38aebd='\x5c'+char(0x22),_0x3142a1=_0x4baefe[_0xf09e('0x60')]()['replace'](new RegExp(_0x217d47,'g'),_0x38aebd);return _0x217d47+_0x3142a1+_0x217d47;}exports[_0xf09e('0x62')]=function(_0x3b567b,_0x5bc686,_0x59bdf0){var _0x30d82a,_0x24dc1d;var _0x18666d={'where':{'ProjectId':_0x3b567b[_0xf09e('0x48')]['id']}};if(_0x3b567b['query'][_0xf09e('0x63')]){_0x18666d[_0xf09e('0x3f')][_0xf09e('0x64')]=JSON[_0xf09e('0x65')](_0x3b567b[_0xf09e('0x34')][_0xf09e('0x63')]);}return db['JscriptySessionReport'][_0xf09e('0x5b')](_0x18666d)[_0xf09e('0x26')](handleEntityNotFound(_0x5bc686,null))[_0xf09e('0x26')](function(_0x433205){if(_0x433205){_0x30d82a=_0x433205;return db[_0xf09e('0x66')]['findAll']({'where':{'SessionId':{'$in':_[_0xf09e('0x33')](_0x30d82a,'id')},'ProjectId':_0x3b567b[_0xf09e('0x48')]['id']},'order':_0xf09e('0x67')});}})[_0xf09e('0x26')](handleEntityNotFound(_0x5bc686,null))[_0xf09e('0x26')](function(_0x167355){if(_0x167355){_0x24dc1d=_0x167355;var _0x1a69b8={};for(var _0x57c53c=0x0,_0x161c85=_0x24dc1d['length'];_0x57c53c<_0x161c85;_0x57c53c++){if(!_0x1a69b8[_0xf09e('0x38')](_0x24dc1d[_0x57c53c][_0xf09e('0x68')])){_0x1a69b8[_0x24dc1d[_0x57c53c][_0xf09e('0x68')]]=needsEncapsulation(_0x24dc1d[_0x57c53c][_0xf09e('0x69')])?encapsulate(_0x24dc1d[_0x57c53c]['question']):_0x24dc1d[_0x57c53c][_0xf09e('0x69')];}}var _0x1cc119=[],_0x208dba={};for(var _0x30ce21=0x0,_0xede0f3=_0x30d82a[_0xf09e('0x4a')];_0x30ce21<_0xede0f3;_0x30ce21++){_0x208dba={'ProjectId':_0x3b567b['params']['id'],'SessionId':_0x30d82a[_0x30ce21]['id'],'StartTime':moment(_0x30d82a[_0x30ce21][_0xf09e('0x64')])[_0xf09e('0x6a')]('YYYY-MM-DD\x20HH:mm:ss')};for(var _0x452e4d=0x0,_0x5552d5=_0x24dc1d['length'];_0x452e4d<_0x5552d5;_0x452e4d++){if(_0x24dc1d[_0x452e4d]['SessionId']==_0x30d82a[_0x30ce21]['id']&&_0x1a69b8['hasOwnProperty'](_0x24dc1d[_0x452e4d]['questionId'])){_0x208dba[_0x1a69b8[_0x24dc1d[_0x452e4d][_0xf09e('0x68')]]]=_0x24dc1d[_0x452e4d][_0xf09e('0x6b')];}}for(var _0x485da5 in _0x1a69b8){if(!_0x208dba[_0xf09e('0x38')](_0x1a69b8[_0x485da5])){_0x208dba[_0x1a69b8[_0x485da5]]=null;}}_0x1cc119[_0xf09e('0x6c')](_0x208dba);}return _0x1cc119;}})[_0xf09e('0x26')](function(_0x4d4503){if(!_[_0xf09e('0x6d')](_0x4d4503)){var _0x189084=toCsv(_0x4d4503);var _0x340cc6=Date[_0xf09e('0x6e')]();fs[_0xf09e('0x6f')](util['format'](_0xf09e('0x70'),_0x3b567b[_0xf09e('0x48')]['id'],_0x340cc6),_0x189084);_0x5bc686[_0xf09e('0x71')](_0xf09e('0x72'),_0xf09e('0x73')+util[_0xf09e('0x6a')](_0xf09e('0x74'),_0x3b567b[_0xf09e('0x48')]['id'],_0x340cc6));_0x5bc686[_0xf09e('0x71')](_0xf09e('0x75'),'text/csv');return _0x5bc686[_0xf09e('0x76')](util[_0xf09e('0x6a')](_0xf09e('0x70'),_0x3b567b[_0xf09e('0x48')]['id'],_0x340cc6));}else{return _0x5bc686[_0xf09e('0x1a')](0xcc);}})[_0xf09e('0x46')](handleError(_0x5bc686,null));};
\ No newline at end of file
+var _0xf3e2=['ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','Projects','UserProfileResource','sendStatus','stack','send','map','JscriptyProject','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','name','options','include','catch','show','params','includeAll','find','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','rawAttributes','createdAt','updatedAt','Unable\x20to\x20retrieve\x20the\x20current\x20user','getSessions','JscriptySessionReport','nolimit','order','ProjectId','rows','getAnswers','findOne','JscriptyAnswerReport','fromCharCode','toString','indexOf','getSummary','startTime','parse','findAll','JscriptyQuestionReport','-createdAt','questionId','question','starttime','format','YYYY-MM-DD\x20HH:mm:ss','SessionId','answer','push','isEmpty','now','writeFileSync','/tmp/Jscripty_Project_%d_Summary_%s.csv','setHeader','Content-disposition','Jscripty_Project_%d_Summary_%s.csv','Content-type','text/csv','download','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring'];(function(_0x2eb9d4,_0x169887){var _0x40afb4=function(_0x7d12e7){while(--_0x7d12e7){_0x2eb9d4['push'](_0x2eb9d4['shift']());}};_0x40afb4(++_0x169887);}(_0xf3e2,0x168));var _0x2f3e=function(_0x53e9b3,_0x10ebad){_0x53e9b3=_0x53e9b3-0x0;var _0x1c394e=_0xf3e2[_0x53e9b3];return _0x1c394e;};'use strict';var emlformat=require(_0x2f3e('0x0'));var rimraf=require(_0x2f3e('0x1'));var zipdir=require(_0x2f3e('0x2'));var jsonpatch=require(_0x2f3e('0x3'));var rp=require(_0x2f3e('0x4'));var moment=require(_0x2f3e('0x5'));var BPromise=require(_0x2f3e('0x6'));var Mustache=require(_0x2f3e('0x7'));var util=require('util');var path=require(_0x2f3e('0x8'));var sox=require('sox');var csv=require(_0x2f3e('0x9'));var ejs=require(_0x2f3e('0xa'));var fs=require('fs');var fs_extra=require(_0x2f3e('0xb'));var _=require(_0x2f3e('0xc'));var squel=require(_0x2f3e('0xd'));var crypto=require(_0x2f3e('0xe'));var jsforce=require(_0x2f3e('0xf'));var deskjs=require(_0x2f3e('0x10'));var toCsv=require('to-csv');var querystring=require(_0x2f3e('0x11'));var Papa=require('papaparse');var Redis=require(_0x2f3e('0x12'));var authService=require(_0x2f3e('0x13'));var qs=require(_0x2f3e('0x14'));var as=require(_0x2f3e('0x15'));var hardwareService=require(_0x2f3e('0x16'));var logger=require(_0x2f3e('0x17'))(_0x2f3e('0x18'));var utils=require(_0x2f3e('0x19'));var config=require(_0x2f3e('0x1a'));var licenseUtil=require(_0x2f3e('0x1b'));var db=require(_0x2f3e('0x1c'))['db'];function respondWithStatusCode(_0x105ea6,_0x507078){_0x507078=_0x507078||0xcc;return function(_0x25b913){if(_0x25b913){return _0x105ea6['sendStatus'](_0x507078);}return _0x105ea6[_0x2f3e('0x1d')](_0x507078)[_0x2f3e('0x1e')]();};}function respondWithResult(_0x5f3734,_0x536f5e){_0x536f5e=_0x536f5e||0xc8;return function(_0x1ad130){if(_0x1ad130){return _0x5f3734[_0x2f3e('0x1d')](_0x536f5e)[_0x2f3e('0x1f')](_0x1ad130);}};}function respondWithFilteredResult(_0x14a2a1,_0x38ac85){return function(_0xd6710){if(_0xd6710){var _0x4ecd41=typeof _0x38ac85[_0x2f3e('0x20')]===_0x2f3e('0x21')&&typeof _0x38ac85[_0x2f3e('0x22')]===_0x2f3e('0x21');var _0x52ab9c=_0xd6710[_0x2f3e('0x23')];var _0x480aa4=_0x4ecd41?0x0:_0x38ac85[_0x2f3e('0x20')];var _0x452bd8=_0x4ecd41?_0xd6710[_0x2f3e('0x23')]:_0x38ac85[_0x2f3e('0x20')]+_0x38ac85[_0x2f3e('0x22')];var _0x3f0cd1;if(_0x452bd8>=_0x52ab9c){_0x452bd8=_0x52ab9c;_0x3f0cd1=0xc8;}else{_0x3f0cd1=0xce;}_0x14a2a1[_0x2f3e('0x1d')](_0x3f0cd1);return _0x14a2a1[_0x2f3e('0x24')](_0x2f3e('0x25'),_0x480aa4+'-'+_0x452bd8+'/'+_0x52ab9c)[_0x2f3e('0x1f')](_0xd6710);}return null;};}function patchUpdates(_0x2ef1eb){return function(_0x14113e){try{jsonpatch[_0x2f3e('0x26')](_0x14113e,_0x2ef1eb,!![]);}catch(_0x44404a){return BPromise[_0x2f3e('0x27')](_0x44404a);}return _0x14113e[_0x2f3e('0x28')]();};}function saveUpdates(_0x37a48a,_0x2c4db5){return function(_0x22dd45){if(_0x22dd45){return _0x22dd45[_0x2f3e('0x29')](_0x37a48a)[_0x2f3e('0x2a')](function(_0x3bd446){return _0x3bd446;});}return null;};}function removeEntity(_0x16c8fc,_0x1217b9){return function(_0x5b4d8d){if(_0x5b4d8d){return _0x5b4d8d[_0x2f3e('0x2b')]()[_0x2f3e('0x2a')](function(){var _0x54970b=_0x5b4d8d[_0x2f3e('0x2c')]({'plain':!![]});var _0x43a4c8=_0x2f3e('0x2d');return db[_0x2f3e('0x2e')]['destroy']({'where':{'type':_0x43a4c8,'resourceId':_0x54970b['id']}})['then'](function(){return _0x5b4d8d;});})[_0x2f3e('0x2a')](function(){_0x16c8fc[_0x2f3e('0x1d')](0xcc)[_0x2f3e('0x1e')]();});}};}function handleEntityNotFound(_0x192edf,_0x1699bf){return function(_0x5bce49){if(!_0x5bce49){_0x192edf[_0x2f3e('0x2f')](0x194);}return _0x5bce49;};}function handleError(_0x4aa4a0,_0x593181){_0x593181=_0x593181||0x1f4;return function(_0x13d8a7){logger['error'](_0x13d8a7[_0x2f3e('0x30')]);if(_0x13d8a7['name']){delete _0x13d8a7['name'];}_0x4aa4a0[_0x2f3e('0x1d')](_0x593181)[_0x2f3e('0x31')](_0x13d8a7);};}exports['index']=function(_0x3f5735,_0x290ec7){var _0x2e9e39={},_0x3760c4={},_0x3ab758={'count':0x0,'rows':[]};var _0x52f2f1=_[_0x2f3e('0x32')](db[_0x2f3e('0x33')]['rawAttributes'],function(_0xd166ef){return{'name':_0xd166ef[_0x2f3e('0x34')],'type':_0xd166ef[_0x2f3e('0x35')][_0x2f3e('0x36')]};});_0x3760c4[_0x2f3e('0x37')]=_['map'](_0x52f2f1,'name');_0x3760c4[_0x2f3e('0x38')]=_[_0x2f3e('0x39')](_0x3f5735[_0x2f3e('0x38')]);_0x3760c4[_0x2f3e('0x3a')]=_[_0x2f3e('0x3b')](_0x3760c4[_0x2f3e('0x37')],_0x3760c4['query']);_0x2e9e39[_0x2f3e('0x3c')]=_['intersection'](_0x3760c4[_0x2f3e('0x37')],qs[_0x2f3e('0x3d')](_0x3f5735[_0x2f3e('0x38')][_0x2f3e('0x3d')]));_0x2e9e39[_0x2f3e('0x3c')]=_0x2e9e39[_0x2f3e('0x3c')][_0x2f3e('0x3e')]?_0x2e9e39[_0x2f3e('0x3c')]:_0x3760c4['model'];if(!_0x3f5735[_0x2f3e('0x38')][_0x2f3e('0x3f')]('nolimit')){_0x2e9e39[_0x2f3e('0x22')]=qs['limit'](_0x3f5735['query'][_0x2f3e('0x22')]);_0x2e9e39[_0x2f3e('0x20')]=qs['offset'](_0x3f5735[_0x2f3e('0x38')][_0x2f3e('0x20')]);}_0x2e9e39['order']=qs['sort'](_0x3f5735[_0x2f3e('0x38')][_0x2f3e('0x40')]);_0x2e9e39[_0x2f3e('0x41')]=qs[_0x2f3e('0x3a')](_[_0x2f3e('0x42')](_0x3f5735[_0x2f3e('0x38')],_0x3760c4[_0x2f3e('0x3a')]),_0x52f2f1);if(_0x3f5735[_0x2f3e('0x38')][_0x2f3e('0x43')]){_0x2e9e39[_0x2f3e('0x41')]=_[_0x2f3e('0x44')](_0x2e9e39[_0x2f3e('0x41')],{'$or':_[_0x2f3e('0x32')](_0x52f2f1,function(_0x436e13){if(_0x436e13[_0x2f3e('0x35')]!=='VIRTUAL'){var _0x3f7676={};_0x3f7676[_0x436e13[_0x2f3e('0x45')]]={'$like':'%'+_0x3f5735[_0x2f3e('0x38')]['filter']+'%'};return _0x3f7676;}})});}_0x2e9e39=_[_0x2f3e('0x44')]({},_0x2e9e39,_0x3f5735[_0x2f3e('0x46')]);var _0x98bf0b={'where':_0x2e9e39[_0x2f3e('0x41')]};return db[_0x2f3e('0x33')][_0x2f3e('0x23')](_0x98bf0b)[_0x2f3e('0x2a')](function(_0x326493){_0x3ab758[_0x2f3e('0x23')]=_0x326493;if(_0x3f5735[_0x2f3e('0x38')]['includeAll']){_0x2e9e39[_0x2f3e('0x47')]=[{'all':!![]}];}return db[_0x2f3e('0x33')]['findAll'](_0x2e9e39);})[_0x2f3e('0x2a')](function(_0x16d83b){_0x3ab758['rows']=_0x16d83b;return _0x3ab758;})[_0x2f3e('0x2a')](respondWithFilteredResult(_0x290ec7,_0x2e9e39))[_0x2f3e('0x48')](handleError(_0x290ec7,null));};exports[_0x2f3e('0x49')]=function(_0x51d89f,_0xf48c39){var _0x14f230={'raw':![],'where':{'id':_0x51d89f[_0x2f3e('0x4a')]['id']}},_0x3d878c={};_0x3d878c['model']=_[_0x2f3e('0x39')](db[_0x2f3e('0x33')]['rawAttributes']);_0x3d878c[_0x2f3e('0x38')]=_['keys'](_0x51d89f[_0x2f3e('0x38')]);_0x3d878c[_0x2f3e('0x3a')]=_[_0x2f3e('0x3b')](_0x3d878c[_0x2f3e('0x37')],_0x3d878c[_0x2f3e('0x38')]);_0x14f230[_0x2f3e('0x3c')]=_[_0x2f3e('0x3b')](_0x3d878c[_0x2f3e('0x37')],qs['fields'](_0x51d89f['query']['fields']));_0x14f230['attributes']=_0x14f230[_0x2f3e('0x3c')][_0x2f3e('0x3e')]?_0x14f230[_0x2f3e('0x3c')]:_0x3d878c[_0x2f3e('0x37')];if(_0x51d89f['query'][_0x2f3e('0x4b')]){_0x14f230[_0x2f3e('0x47')]=[{'all':!![]}];}_0x14f230=_['merge']({},_0x14f230,_0x51d89f['options']);return db[_0x2f3e('0x33')][_0x2f3e('0x4c')](_0x14f230)[_0x2f3e('0x2a')](handleEntityNotFound(_0xf48c39,null))[_0x2f3e('0x2a')](respondWithResult(_0xf48c39,null))[_0x2f3e('0x48')](handleError(_0xf48c39,null));};exports[_0x2f3e('0x4d')]=function(_0x45cf90,_0x12b9a8){return db['JscriptyProject'][_0x2f3e('0x4d')](_0x45cf90[_0x2f3e('0x4e')],{})[_0x2f3e('0x2a')](function(_0x88fa23){var _0x474e69=_0x45cf90[_0x2f3e('0x4f')][_0x2f3e('0x2c')]({'plain':!![]});if(!_0x474e69)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x474e69[_0x2f3e('0x50')]===_0x2f3e('0x4f')){var _0x5c93e6=_0x88fa23[_0x2f3e('0x2c')]({'plain':!![]});var _0x3bc22e=_0x2f3e('0x2d');return db[_0x2f3e('0x51')][_0x2f3e('0x4c')]({'where':{'name':_0x3bc22e,'userProfileId':_0x474e69[_0x2f3e('0x52')]},'raw':!![]})['then'](function(_0x59474e){if(_0x59474e&&_0x59474e[_0x2f3e('0x53')]===0x0){return db[_0x2f3e('0x2e')][_0x2f3e('0x4d')]({'name':_0x5c93e6[_0x2f3e('0x45')],'resourceId':_0x5c93e6['id'],'type':_0x59474e[_0x2f3e('0x45')],'sectionId':_0x59474e['id']},{})['then'](function(){return _0x88fa23;});}else{return _0x88fa23;}})['catch'](function(_0x19376a){logger[_0x2f3e('0x54')](_0x2f3e('0x55'),_0x19376a);throw _0x19376a;});}return _0x88fa23;})[_0x2f3e('0x2a')](respondWithResult(_0x12b9a8,0xc9))['catch'](handleError(_0x12b9a8,null));};exports['clone']=function(_0x52cef2,_0x4d3745){var _0x513eb0={'where':{'id':_0x52cef2[_0x2f3e('0x4a')]['id']}},_0x2f2643={};_0x2f2643[_0x2f3e('0x37')]=_['keys'](db[_0x2f3e('0x33')][_0x2f3e('0x56')]);_0x513eb0[_0x2f3e('0x3c')]=_['intersection'](_0x2f2643[_0x2f3e('0x37')],qs[_0x2f3e('0x3d')](_0x52cef2[_0x2f3e('0x38')][_0x2f3e('0x3d')]));_0x513eb0['attributes']=_0x513eb0[_0x2f3e('0x3c')][_0x2f3e('0x3e')]?_0x513eb0[_0x2f3e('0x3c')]:_0x2f2643[_0x2f3e('0x37')];if(_0x52cef2['query']['includeAll']){_0x513eb0[_0x2f3e('0x47')]=[{'all':!![]}];}_0x513eb0=_[_0x2f3e('0x44')]({},_0x513eb0,_0x52cef2[_0x2f3e('0x46')]);return db[_0x2f3e('0x33')][_0x2f3e('0x4c')](_0x513eb0)[_0x2f3e('0x2a')](handleEntityNotFound(_0x4d3745,null))['then'](function(_0x1701f3){if(_0x1701f3){var _0x361a60=_0x1701f3[_0x2f3e('0x2c')]({'plain':!![]});_0x361a60=qs['omit'](_0x361a60,['id',_0x2f3e('0x57'),_0x2f3e('0x58')]);_0x52cef2['body']=_['omit'](_0x52cef2[_0x2f3e('0x4e')],['id','createdAt','updatedAt']);return db[_0x2f3e('0x33')][_0x2f3e('0x4d')](_[_0x2f3e('0x44')](_0x361a60,_0x52cef2[_0x2f3e('0x4e')]),{'include':_0x52cef2['query'][_0x2f3e('0x4b')]?[{'all':!![]}]:undefined})[_0x2f3e('0x2a')](function(_0x5cf850){var _0x54cb38=_0x52cef2[_0x2f3e('0x4f')]['get']({'plain':!![]});if(!_0x54cb38)throw new Error(_0x2f3e('0x59'));if(_0x54cb38[_0x2f3e('0x50')]==='user'){var _0x361cda=_0x5cf850[_0x2f3e('0x2c')]({'plain':!![]});var _0x3bba04=_0x2f3e('0x2d');return db[_0x2f3e('0x51')][_0x2f3e('0x4c')]({'where':{'name':_0x3bba04,'userProfileId':_0x54cb38[_0x2f3e('0x52')]},'raw':!![]})[_0x2f3e('0x2a')](function(_0x174db5){if(_0x174db5&&_0x174db5[_0x2f3e('0x53')]===0x0){return db[_0x2f3e('0x2e')][_0x2f3e('0x4d')]({'name':_0x361cda[_0x2f3e('0x45')],'resourceId':_0x361cda['id'],'type':_0x174db5['name'],'sectionId':_0x174db5['id']},{})[_0x2f3e('0x2a')](function(){return _0x5cf850;});}else{return _0x5cf850;}})[_0x2f3e('0x48')](function(_0x349037){logger['error'](_0x2f3e('0x55'),_0x349037);throw _0x349037;});}return _0x5cf850;});}})[_0x2f3e('0x2a')](respondWithResult(_0x4d3745,0xc9))[_0x2f3e('0x48')](handleError(_0x4d3745,null));};exports[_0x2f3e('0x29')]=function(_0x40e8cd,_0x3c541d){if(_0x40e8cd[_0x2f3e('0x4e')]['id']){delete _0x40e8cd[_0x2f3e('0x4e')]['id'];}return db[_0x2f3e('0x33')]['find']({'where':{'id':_0x40e8cd[_0x2f3e('0x4a')]['id']}})[_0x2f3e('0x2a')](handleEntityNotFound(_0x3c541d,null))[_0x2f3e('0x2a')](saveUpdates(_0x40e8cd[_0x2f3e('0x4e')],null))[_0x2f3e('0x2a')](respondWithResult(_0x3c541d,null))[_0x2f3e('0x48')](handleError(_0x3c541d,null));};exports[_0x2f3e('0x2b')]=function(_0x25e677,_0x54535d){return db['JscriptyProject'][_0x2f3e('0x4c')]({'where':{'id':_0x25e677[_0x2f3e('0x4a')]['id']}})[_0x2f3e('0x2a')](handleEntityNotFound(_0x54535d,null))[_0x2f3e('0x2a')](removeEntity(_0x54535d,null))['catch'](handleError(_0x54535d,null));};exports[_0x2f3e('0x5a')]=function(_0x3d7b09,_0x1fb565,_0x5b58e9){var _0x382a27={'raw':!![],'where':{}};var _0x3f6319={};var _0x51f8ef={'count':0x0,'rows':[]};return db['JscriptyProject']['findOne']({'where':{'id':_0x3d7b09[_0x2f3e('0x4a')]['id']}})[_0x2f3e('0x2a')](handleEntityNotFound(_0x1fb565,null))['then'](function(_0x282c7c){if(_0x282c7c){_0x3f6319[_0x2f3e('0x37')]=_[_0x2f3e('0x39')](db[_0x2f3e('0x5b')]['rawAttributes']);_0x3f6319[_0x2f3e('0x38')]=_[_0x2f3e('0x39')](_0x3d7b09[_0x2f3e('0x38')]);_0x3f6319['filters']=_['intersection'](_0x3f6319[_0x2f3e('0x37')],_0x3f6319[_0x2f3e('0x38')]);_0x382a27[_0x2f3e('0x3c')]=_[_0x2f3e('0x3b')](_0x3f6319[_0x2f3e('0x37')],qs['fields'](_0x3d7b09[_0x2f3e('0x38')][_0x2f3e('0x3d')]));_0x382a27[_0x2f3e('0x3c')]=_0x382a27[_0x2f3e('0x3c')][_0x2f3e('0x3e')]?_0x382a27[_0x2f3e('0x3c')]:_0x3f6319[_0x2f3e('0x37')];if(!_0x3d7b09[_0x2f3e('0x38')][_0x2f3e('0x3f')](_0x2f3e('0x5c'))){_0x382a27[_0x2f3e('0x22')]=qs['limit'](_0x3d7b09[_0x2f3e('0x38')]['limit']);_0x382a27[_0x2f3e('0x20')]=qs['offset'](_0x3d7b09[_0x2f3e('0x38')][_0x2f3e('0x20')]);}_0x382a27[_0x2f3e('0x5d')]=qs['sort'](_0x3d7b09[_0x2f3e('0x38')][_0x2f3e('0x40')]);_0x382a27[_0x2f3e('0x41')]=qs[_0x2f3e('0x3a')](_['pick'](_0x3d7b09[_0x2f3e('0x38')],_0x3f6319[_0x2f3e('0x3a')]));_0x382a27[_0x2f3e('0x41')][_0x2f3e('0x5e')]=_0x282c7c['id'];if(_0x3d7b09[_0x2f3e('0x38')][_0x2f3e('0x43')]){_0x382a27[_0x2f3e('0x41')]=_[_0x2f3e('0x44')](_0x382a27['where'],{'$or':_[_0x2f3e('0x32')](_0x382a27[_0x2f3e('0x3c')],function(_0x12fff9){var _0x266128={};_0x266128[_0x12fff9]={'$like':'%'+_0x3d7b09[_0x2f3e('0x38')][_0x2f3e('0x43')]+'%'};return _0x266128;})});}_0x382a27=_[_0x2f3e('0x44')]({},_0x382a27,_0x3d7b09[_0x2f3e('0x46')]);return db[_0x2f3e('0x5b')][_0x2f3e('0x23')]({'where':_0x382a27[_0x2f3e('0x41')]})[_0x2f3e('0x2a')](function(_0x44640f){_0x51f8ef[_0x2f3e('0x23')]=_0x44640f;if(_0x3d7b09[_0x2f3e('0x38')]['includeAll']){_0x382a27[_0x2f3e('0x47')]=[{'all':!![]}];}return db['JscriptySessionReport']['findAll'](_0x382a27);})[_0x2f3e('0x2a')](function(_0xd18361){_0x51f8ef[_0x2f3e('0x5f')]=_0xd18361;return _0x51f8ef;});}})['then'](respondWithFilteredResult(_0x1fb565,_0x382a27))['catch'](handleError(_0x1fb565,null));};exports[_0x2f3e('0x60')]=function(_0x42bef9,_0x2787e4,_0x21e60f){var _0x3f84fb={'raw':!![],'where':{}};var _0x325acc={};var _0x4a1f48={'count':0x0,'rows':[]};return db[_0x2f3e('0x33')][_0x2f3e('0x61')]({'where':{'id':_0x42bef9['params']['id']}})[_0x2f3e('0x2a')](handleEntityNotFound(_0x2787e4,null))[_0x2f3e('0x2a')](function(_0x3bd18d){if(_0x3bd18d){_0x325acc[_0x2f3e('0x37')]=_[_0x2f3e('0x39')](db[_0x2f3e('0x62')][_0x2f3e('0x56')]);_0x325acc[_0x2f3e('0x38')]=_['keys'](_0x42bef9['query']);_0x325acc[_0x2f3e('0x3a')]=_['intersection'](_0x325acc['model'],_0x325acc[_0x2f3e('0x38')]);_0x3f84fb[_0x2f3e('0x3c')]=_[_0x2f3e('0x3b')](_0x325acc[_0x2f3e('0x37')],qs[_0x2f3e('0x3d')](_0x42bef9[_0x2f3e('0x38')][_0x2f3e('0x3d')]));_0x3f84fb['attributes']=_0x3f84fb['attributes'][_0x2f3e('0x3e')]?_0x3f84fb['attributes']:_0x325acc[_0x2f3e('0x37')];if(!_0x42bef9[_0x2f3e('0x38')]['hasOwnProperty'](_0x2f3e('0x5c'))){_0x3f84fb['limit']=qs['limit'](_0x42bef9[_0x2f3e('0x38')][_0x2f3e('0x22')]);_0x3f84fb[_0x2f3e('0x20')]=qs['offset'](_0x42bef9['query'][_0x2f3e('0x20')]);}_0x3f84fb[_0x2f3e('0x5d')]=qs[_0x2f3e('0x40')](_0x42bef9[_0x2f3e('0x38')]['sort']);_0x3f84fb[_0x2f3e('0x41')]=qs['filters'](_[_0x2f3e('0x42')](_0x42bef9[_0x2f3e('0x38')],_0x325acc[_0x2f3e('0x3a')]));_0x3f84fb[_0x2f3e('0x41')]['ProjectId']=_0x3bd18d['id'];if(_0x42bef9[_0x2f3e('0x38')][_0x2f3e('0x43')]){_0x3f84fb[_0x2f3e('0x41')]=_[_0x2f3e('0x44')](_0x3f84fb[_0x2f3e('0x41')],{'$or':_['map'](_0x3f84fb['attributes'],function(_0x343040){var _0x244f55={};_0x244f55[_0x343040]={'$like':'%'+_0x42bef9[_0x2f3e('0x38')][_0x2f3e('0x43')]+'%'};return _0x244f55;})});}_0x3f84fb=_['merge']({},_0x3f84fb,_0x42bef9[_0x2f3e('0x46')]);return db['JscriptyAnswerReport'][_0x2f3e('0x23')]({'where':_0x3f84fb[_0x2f3e('0x41')]})[_0x2f3e('0x2a')](function(_0x143568){_0x4a1f48['count']=_0x143568;if(_0x42bef9[_0x2f3e('0x38')]['includeAll']){_0x3f84fb[_0x2f3e('0x47')]=[{'all':!![]}];}return db['JscriptyAnswerReport']['findAll'](_0x3f84fb);})[_0x2f3e('0x2a')](function(_0x5a50cb){_0x4a1f48['rows']=_0x5a50cb;return _0x4a1f48;});}})['then'](respondWithFilteredResult(_0x2787e4,_0x3f84fb))[_0x2f3e('0x48')](handleError(_0x2787e4,null));};function char(_0x30eebb){return'number'===typeof _0x30eebb?String[_0x2f3e('0x63')][_0x2f3e('0x26')](null,arguments):_0x30eebb;}function needsEncapsulation(_0x114957){return!!_0x114957&&(_0x114957[_0x2f3e('0x64')]()[_0x2f3e('0x65')](char(0xd))>=0x0||_0x114957[_0x2f3e('0x64')]()[_0x2f3e('0x65')](char(0xa))>=0x0||_0x114957[_0x2f3e('0x64')]()[_0x2f3e('0x65')](char(0x2c))>=0x0||_0x114957['toString']()['indexOf'](char(0x22))>=0x0);}function encapsulate(_0x5bfedc){var _0xb29d8f=char(0x22),_0x267ca7='\x5c'+char(0x22),_0x3b232c=_0x5bfedc['toString']()['replace'](new RegExp(_0xb29d8f,'g'),_0x267ca7);return _0xb29d8f+_0x3b232c+_0xb29d8f;}exports[_0x2f3e('0x66')]=function(_0x8063a5,_0x1163de,_0x301022){var _0x2afcd3,_0x23fb52;var _0x1cf6de={'where':{'ProjectId':_0x8063a5[_0x2f3e('0x4a')]['id']}};if(_0x8063a5[_0x2f3e('0x38')][_0x2f3e('0x67')]){_0x1cf6de[_0x2f3e('0x41')]['starttime']=JSON[_0x2f3e('0x68')](_0x8063a5[_0x2f3e('0x38')]['startTime']);}return db[_0x2f3e('0x5b')][_0x2f3e('0x69')](_0x1cf6de)[_0x2f3e('0x2a')](handleEntityNotFound(_0x1163de,null))[_0x2f3e('0x2a')](function(_0x55f19b){if(_0x55f19b){_0x2afcd3=_0x55f19b;return db[_0x2f3e('0x6a')][_0x2f3e('0x69')]({'where':{'SessionId':{'$in':_['map'](_0x2afcd3,'id')},'ProjectId':_0x8063a5[_0x2f3e('0x4a')]['id']},'order':_0x2f3e('0x6b')});}})[_0x2f3e('0x2a')](handleEntityNotFound(_0x1163de,null))[_0x2f3e('0x2a')](function(_0xacee03){if(_0xacee03){_0x23fb52=_0xacee03;var _0x173d83={};for(var _0x3c7165=0x0,_0x37caf0=_0x23fb52['length'];_0x3c7165<_0x37caf0;_0x3c7165++){if(!_0x173d83[_0x2f3e('0x3f')](_0x23fb52[_0x3c7165][_0x2f3e('0x6c')])){_0x173d83[_0x23fb52[_0x3c7165][_0x2f3e('0x6c')]]=needsEncapsulation(_0x23fb52[_0x3c7165]['question'])?encapsulate(_0x23fb52[_0x3c7165][_0x2f3e('0x6d')]):_0x23fb52[_0x3c7165]['question'];}}var _0x7e942a=[],_0x59a91f={};for(var _0x32564c=0x0,_0x52123a=_0x2afcd3['length'];_0x32564c<_0x52123a;_0x32564c++){_0x59a91f={'ProjectId':_0x8063a5[_0x2f3e('0x4a')]['id'],'SessionId':_0x2afcd3[_0x32564c]['id'],'StartTime':moment(_0x2afcd3[_0x32564c][_0x2f3e('0x6e')])[_0x2f3e('0x6f')](_0x2f3e('0x70'))};for(var _0x224aca=0x0,_0x449ea9=_0x23fb52[_0x2f3e('0x3e')];_0x224aca<_0x449ea9;_0x224aca++){if(_0x23fb52[_0x224aca][_0x2f3e('0x71')]==_0x2afcd3[_0x32564c]['id']&&_0x173d83[_0x2f3e('0x3f')](_0x23fb52[_0x224aca][_0x2f3e('0x6c')])){_0x59a91f[_0x173d83[_0x23fb52[_0x224aca]['questionId']]]=_0x23fb52[_0x224aca][_0x2f3e('0x72')];}}for(var _0x55d6b2 in _0x173d83){if(!_0x59a91f[_0x2f3e('0x3f')](_0x173d83[_0x55d6b2])){_0x59a91f[_0x173d83[_0x55d6b2]]=null;}}_0x7e942a[_0x2f3e('0x73')](_0x59a91f);}return _0x7e942a;}})[_0x2f3e('0x2a')](function(_0x249fae){if(!_[_0x2f3e('0x74')](_0x249fae)){var _0x441d1c=toCsv(_0x249fae);var _0x2c98b3=Date[_0x2f3e('0x75')]();fs[_0x2f3e('0x76')](util[_0x2f3e('0x6f')](_0x2f3e('0x77'),_0x8063a5['params']['id'],_0x2c98b3),_0x441d1c);_0x1163de[_0x2f3e('0x78')](_0x2f3e('0x79'),'attachment;\x20filename='+util[_0x2f3e('0x6f')](_0x2f3e('0x7a'),_0x8063a5[_0x2f3e('0x4a')]['id'],_0x2c98b3));_0x1163de[_0x2f3e('0x78')](_0x2f3e('0x7b'),_0x2f3e('0x7c'));return _0x1163de[_0x2f3e('0x7d')](util[_0x2f3e('0x6f')]('/tmp/Jscripty_Project_%d_Summary_%s.csv',_0x8063a5[_0x2f3e('0x4a')]['id'],_0x2c98b3));}else{return _0x1163de[_0x2f3e('0x2f')](0xcc);}})[_0x2f3e('0x48')](handleError(_0x1163de,null));};
\ No newline at end of file
index 818dca8..aa6b35b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9973=['define','JscriptyProject','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./jscriptyProject.attributes'];(function(_0x4bb66f,_0x3cd682){var _0xf2772f=function(_0x2e3698){while(--_0x2e3698){_0x4bb66f['push'](_0x4bb66f['shift']());}};_0xf2772f(++_0x3cd682);}(_0x9973,0x157));var _0x3997=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x9973[_0x20a584];return _0x4b41a8;};'use strict';var _=require('lodash');var util=require(_0x3997('0x0'));var logger=require(_0x3997('0x1'))('api');var moment=require(_0x3997('0x2'));var BPromise=require(_0x3997('0x3'));var rp=require(_0x3997('0x4'));var fs=require('fs');var path=require(_0x3997('0x5'));var rimraf=require(_0x3997('0x6'));var config=require(_0x3997('0x7'));var attributes=require(_0x3997('0x8'));module['exports']=function(_0x48c26c,_0x320340){return _0x48c26c[_0x3997('0x9')](_0x3997('0xa'),attributes,{'tableName':'jscripty_projects','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbe52=['../../config/environment','./jscriptyProject.attributes','exports','define','JscriptyProject','jscripty_projects','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf'];(function(_0x228fc2,_0x782cb5){var _0x5f3a50=function(_0x16f9ef){while(--_0x16f9ef){_0x228fc2['push'](_0x228fc2['shift']());}};_0x5f3a50(++_0x782cb5);}(_0xbe52,0x164));var _0x2be5=function(_0x515c3c,_0x204e4c){_0x515c3c=_0x515c3c-0x0;var _0x13d935=_0xbe52[_0x515c3c];return _0x13d935;};'use strict';var _=require(_0x2be5('0x0'));var util=require(_0x2be5('0x1'));var logger=require(_0x2be5('0x2'))(_0x2be5('0x3'));var moment=require(_0x2be5('0x4'));var BPromise=require('bluebird');var rp=require(_0x2be5('0x5'));var fs=require('fs');var path=require(_0x2be5('0x6'));var rimraf=require(_0x2be5('0x7'));var config=require(_0x2be5('0x8'));var attributes=require(_0x2be5('0x9'));module[_0x2be5('0xa')]=function(_0x39dc18,_0x13fadf){return _0x39dc18[_0x2be5('0xb')](_0x2be5('0xc'),attributes,{'tableName':_0x2be5('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 83ba6f9..5fee4d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['JscriptyProject,\x20%s,\x20%s','request\x20sent','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x59ac74,_0x15382d){var _0x1b391f=function(_0x295ed5){while(--_0x295ed5){_0x59ac74['push'](_0x59ac74['shift']());}};_0x1b391f(++_0x15382d);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x3071('0x0'));var BPromise=require(_0x3071('0x1'));var rs=require(_0x3071('0x2'));var fs=require('fs');var Redis=require(_0x3071('0x3'));var db=require(_0x3071('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x3071('0x5'))(_0x3071('0x6'));var config=require(_0x3071('0x7'));var jayson=require(_0x3071('0x8'));var client=jayson[_0x3071('0x9')][_0x3071('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1d3dd6,_0x2f1e87,_0xbd737f){return new BPromise(function(_0x22274c,_0x3e9a5e){return client[_0x3071('0xb')](_0x1d3dd6,_0xbd737f)[_0x3071('0xc')](function(_0x4a36ec){logger[_0x3071('0xd')](_0x3071('0xe'),_0x2f1e87,_0x3071('0xf'));logger[_0x3071('0x10')](_0x3071('0x11'),_0x2f1e87,'request\x20sent',JSON[_0x3071('0x12')](_0x4a36ec));if(_0x4a36ec[_0x3071('0x13')]){if(_0x4a36ec[_0x3071('0x13')][_0x3071('0x14')]===0x1f4){logger[_0x3071('0x13')]('JscriptyProject,\x20%s,\x20%s',_0x2f1e87,_0x4a36ec['error'][_0x3071('0x15')]);return _0x3e9a5e(_0x4a36ec['error'][_0x3071('0x15')]);}logger[_0x3071('0x13')]('JscriptyProject,\x20%s,\x20%s',_0x2f1e87,_0x4a36ec[_0x3071('0x13')]['message']);return _0x22274c(_0x4a36ec[_0x3071('0x13')][_0x3071('0x15')]);}else{logger[_0x3071('0xd')](_0x3071('0xe'),_0x2f1e87,_0x3071('0xf'));_0x22274c(_0x4a36ec[_0x3071('0x16')][_0x3071('0x15')]);}})[_0x3071('0x17')](function(_0x21aad3){logger[_0x3071('0x13')]('JscriptyProject,\x20%s,\x20%s',_0x2f1e87,_0x21aad3);_0x3e9a5e(_0x21aad3);});});}
\ No newline at end of file
+var _0x0713=['JscriptyProject,\x20%s,\x20%s','request\x20sent','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x43b9b5,_0x3d8f95){var _0x3d6c8f=function(_0x1e538e){while(--_0x1e538e){_0x43b9b5['push'](_0x43b9b5['shift']());}};_0x3d6c8f(++_0x3d8f95);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x3071('0x0'));var BPromise=require(_0x3071('0x1'));var rs=require(_0x3071('0x2'));var fs=require('fs');var Redis=require(_0x3071('0x3'));var db=require(_0x3071('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x3071('0x5'))(_0x3071('0x6'));var config=require(_0x3071('0x7'));var jayson=require(_0x3071('0x8'));var client=jayson[_0x3071('0x9')][_0x3071('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1d3dd6,_0x2f1e87,_0xbd737f){return new BPromise(function(_0x22274c,_0x3e9a5e){return client[_0x3071('0xb')](_0x1d3dd6,_0xbd737f)[_0x3071('0xc')](function(_0x4a36ec){logger[_0x3071('0xd')](_0x3071('0xe'),_0x2f1e87,_0x3071('0xf'));logger[_0x3071('0x10')](_0x3071('0x11'),_0x2f1e87,'request\x20sent',JSON[_0x3071('0x12')](_0x4a36ec));if(_0x4a36ec[_0x3071('0x13')]){if(_0x4a36ec[_0x3071('0x13')][_0x3071('0x14')]===0x1f4){logger[_0x3071('0x13')]('JscriptyProject,\x20%s,\x20%s',_0x2f1e87,_0x4a36ec['error'][_0x3071('0x15')]);return _0x3e9a5e(_0x4a36ec['error'][_0x3071('0x15')]);}logger[_0x3071('0x13')]('JscriptyProject,\x20%s,\x20%s',_0x2f1e87,_0x4a36ec[_0x3071('0x13')]['message']);return _0x22274c(_0x4a36ec[_0x3071('0x13')][_0x3071('0x15')]);}else{logger[_0x3071('0xd')](_0x3071('0xe'),_0x2f1e87,_0x3071('0xf'));_0x22274c(_0x4a36ec[_0x3071('0x16')][_0x3071('0x15')]);}})[_0x3071('0x17')](function(_0x21aad3){logger[_0x3071('0x13')]('JscriptyProject,\x20%s,\x20%s',_0x2f1e87,_0x21aad3);_0x3e9a5e(_0x21aad3);});});}
\ No newline at end of file
index 5b31ae3..747698e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ecb=['path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyQuestionReport.controller','isAuthenticated','index','/describe','get','/:id','put','delete','exports','multer','util'];(function(_0x4e7d25,_0x58285f){var _0x526fe6=function(_0x4f0aec){while(--_0x4f0aec){_0x4e7d25['push'](_0x4e7d25['shift']());}};_0x526fe6(++_0x58285f);}(_0x8ecb,0x11f));var _0xb8ec=function(_0x5bd426,_0x4878e5){_0x5bd426=_0x5bd426-0x0;var _0x23a7eb=_0x8ecb[_0x5bd426];return _0x23a7eb;};'use strict';var multer=require(_0xb8ec('0x0'));var util=require(_0xb8ec('0x1'));var path=require(_0xb8ec('0x2'));var timeout=require('connect-timeout');var express=require(_0xb8ec('0x3'));var router=express[_0xb8ec('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xb8ec('0x5'));var interaction=require(_0xb8ec('0x6'));var config=require(_0xb8ec('0x7'));var controller=require(_0xb8ec('0x8'));router['get']('/',auth[_0xb8ec('0x9')](),controller[_0xb8ec('0xa')]);router['get'](_0xb8ec('0xb'),auth['isAuthenticated'](),controller['describe']);router[_0xb8ec('0xc')](_0xb8ec('0xd'),auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0xb8ec('0x9')](),controller['create']);router[_0xb8ec('0xe')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0xb8ec('0xf')](_0xb8ec('0xd'),auth['isAuthenticated'](),controller['destroy']);module[_0xb8ec('0x10')]=router;
\ No newline at end of file
+var _0xb3b0=['/describe','describe','post','create','put','update','delete','/:id','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./jscriptyQuestionReport.controller','get','isAuthenticated','index'];(function(_0x157aa9,_0x11340f){var _0x519af8=function(_0x4f060f){while(--_0x4f060f){_0x157aa9['push'](_0x157aa9['shift']());}};_0x519af8(++_0x11340f);}(_0xb3b0,0x1ac));var _0x0b3b=function(_0x115155,_0x12a890){_0x115155=_0x115155-0x0;var _0x181d09=_0xb3b0[_0x115155];return _0x181d09;};'use strict';var multer=require(_0x0b3b('0x0'));var util=require(_0x0b3b('0x1'));var path=require(_0x0b3b('0x2'));var timeout=require(_0x0b3b('0x3'));var express=require(_0x0b3b('0x4'));var router=express[_0x0b3b('0x5')]();var fs_extra=require(_0x0b3b('0x6'));var auth=require(_0x0b3b('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x0b3b('0x8'));router[_0x0b3b('0x9')]('/',auth[_0x0b3b('0xa')](),controller[_0x0b3b('0xb')]);router[_0x0b3b('0x9')](_0x0b3b('0xc'),auth[_0x0b3b('0xa')](),controller[_0x0b3b('0xd')]);router[_0x0b3b('0x9')]('/:id',auth[_0x0b3b('0xa')](),controller['show']);router[_0x0b3b('0xe')]('/',auth[_0x0b3b('0xa')](),controller[_0x0b3b('0xf')]);router[_0x0b3b('0x10')]('/:id',auth[_0x0b3b('0xa')](),controller[_0x0b3b('0x11')]);router[_0x0b3b('0x12')](_0x0b3b('0x13'),auth[_0x0b3b('0xa')](),controller[_0x0b3b('0x14')]);module[_0x0b3b('0x15')]=router;
\ No newline at end of file
index ff36a78..fc611c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x4a747d,_0x3b747f){var _0x3a5b5c=function(_0x4b3e81){while(--_0x4b3e81){_0x4a747d['push'](_0x4a747d['shift']());}};_0x3a5b5c(++_0x3b747f);}(_0x7a54,0x106));var _0x47a5=function(_0x1672fb,_0x3dc206){_0x1672fb=_0x1672fb-0x0;var _0x5d7f8f=_0x7a54[_0x1672fb];return _0x5d7f8f;};'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(_0x1969a7,_0x5a133a){var _0x3d665f=function(_0x39c64b){while(--_0x39c64b){_0x1969a7['push'](_0x1969a7['shift']());}};_0x3d665f(++_0x5a133a);}(_0x7a54,0x106));var _0x47a5=function(_0x1b10bd,_0x14d05f){_0x1b10bd=_0x1b10bd-0x0;var _0x4780a9=_0x7a54[_0x1b10bd];return _0x4780a9;};'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 bf6672a..a9bd389 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0f9=['../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','update','then','error','stack','name','index','fieldName','type','key','map','query','keys','filters','intersection','attributes','model','fields','length','order','sort','pick','filter','merge','VIRTUAL','options','JscriptyQuestionReport','includeAll','include','findAll','rows','catch','show','params','find','create','body','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment'];(function(_0x3fc1ea,_0x2fa686){var _0x2a972d=function(_0x23690c){while(--_0x23690c){_0x3fc1ea['push'](_0x3fc1ea['shift']());}};_0x2a972d(++_0x2fa686);}(_0xc0f9,0xc5));var _0x9c0f=function(_0x4f53a6,_0x582ff5){_0x4f53a6=_0x4f53a6-0x0;var _0x30e4b7=_0xc0f9[_0x4f53a6];return _0x30e4b7;};'use strict';var emlformat=require(_0x9c0f('0x0'));var rimraf=require(_0x9c0f('0x1'));var zipdir=require(_0x9c0f('0x2'));var jsonpatch=require(_0x9c0f('0x3'));var rp=require(_0x9c0f('0x4'));var moment=require(_0x9c0f('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x9c0f('0x6'));var util=require(_0x9c0f('0x7'));var path=require(_0x9c0f('0x8'));var sox=require('sox');var csv=require(_0x9c0f('0x9'));var ejs=require(_0x9c0f('0xa'));var fs=require('fs');var fs_extra=require(_0x9c0f('0xb'));var _=require(_0x9c0f('0xc'));var squel=require('squel');var crypto=require(_0x9c0f('0xd'));var jsforce=require(_0x9c0f('0xe'));var deskjs=require(_0x9c0f('0xf'));var toCsv=require(_0x9c0f('0x9'));var querystring=require('querystring');var Papa=require(_0x9c0f('0x10'));var Redis=require(_0x9c0f('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x9c0f('0x12'));var as=require(_0x9c0f('0x13'));var hardwareService=require(_0x9c0f('0x14'));var logger=require(_0x9c0f('0x15'))(_0x9c0f('0x16'));var utils=require(_0x9c0f('0x17'));var config=require(_0x9c0f('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x9c0f('0x19'))['db'];function respondWithStatusCode(_0x31b2b6,_0x2c269c){_0x2c269c=_0x2c269c||0xcc;return function(_0x150d35){if(_0x150d35){return _0x31b2b6[_0x9c0f('0x1a')](_0x2c269c);}return _0x31b2b6[_0x9c0f('0x1b')](_0x2c269c)[_0x9c0f('0x1c')]();};}function respondWithResult(_0x2daf5c,_0x14a724){_0x14a724=_0x14a724||0xc8;return function(_0x1201db){if(_0x1201db){return _0x2daf5c[_0x9c0f('0x1b')](_0x14a724)['json'](_0x1201db);}};}function respondWithFilteredResult(_0xa3d1a9,_0x484f8f){return function(_0x392de2){if(_0x392de2){var _0x4d2611=typeof _0x484f8f[_0x9c0f('0x1d')]===_0x9c0f('0x1e')&&typeof _0x484f8f[_0x9c0f('0x1f')]==='undefined';var _0x58a631=_0x392de2[_0x9c0f('0x20')];var _0x339c47=_0x4d2611?0x0:_0x484f8f[_0x9c0f('0x1d')];var _0x40ac5c=_0x4d2611?_0x392de2[_0x9c0f('0x20')]:_0x484f8f['offset']+_0x484f8f[_0x9c0f('0x1f')];var _0x2aa887;if(_0x40ac5c>=_0x58a631){_0x40ac5c=_0x58a631;_0x2aa887=0xc8;}else{_0x2aa887=0xce;}_0xa3d1a9[_0x9c0f('0x1b')](_0x2aa887);return _0xa3d1a9[_0x9c0f('0x21')]('Content-Range',_0x339c47+'-'+_0x40ac5c+'/'+_0x58a631)[_0x9c0f('0x22')](_0x392de2);}return null;};}function patchUpdates(_0x24a892){return function(_0x27fbed){try{jsonpatch[_0x9c0f('0x23')](_0x27fbed,_0x24a892,!![]);}catch(_0x2485dc){return BPromise['reject'](_0x2485dc);}return _0x27fbed['save']();};}function saveUpdates(_0xd84d31,_0x1b4dc8){return function(_0x3b16dc){if(_0x3b16dc){return _0x3b16dc[_0x9c0f('0x24')](_0xd84d31)[_0x9c0f('0x25')](function(_0x4f5f61){return _0x4f5f61;});}return null;};}function removeEntity(_0x5a2277,_0x43856e){return function(_0x463ea6){if(_0x463ea6){return _0x463ea6['destroy']()[_0x9c0f('0x25')](function(){_0x5a2277[_0x9c0f('0x1b')](0xcc)[_0x9c0f('0x1c')]();});}};}function handleEntityNotFound(_0x1af538,_0x56e12e){return function(_0x540842){if(!_0x540842){_0x1af538[_0x9c0f('0x1a')](0x194);}return _0x540842;};}function handleError(_0x3d1dc7,_0xe2f0f5){_0xe2f0f5=_0xe2f0f5||0x1f4;return function(_0x46fef1){logger[_0x9c0f('0x26')](_0x46fef1[_0x9c0f('0x27')]);if(_0x46fef1[_0x9c0f('0x28')]){delete _0x46fef1[_0x9c0f('0x28')];}_0x3d1dc7[_0x9c0f('0x1b')](_0xe2f0f5)['send'](_0x46fef1);};}exports[_0x9c0f('0x29')]=function(_0x497f24,_0xe724b){var _0x22a88d={},_0x1622ba={},_0x3bbc35={'count':0x0,'rows':[]};var _0x4fdd61=_['map'](db['JscriptyQuestionReport']['rawAttributes'],function(_0x222d97){return{'name':_0x222d97[_0x9c0f('0x2a')],'type':_0x222d97[_0x9c0f('0x2b')][_0x9c0f('0x2c')]};});_0x1622ba['model']=_[_0x9c0f('0x2d')](_0x4fdd61,'name');_0x1622ba[_0x9c0f('0x2e')]=_[_0x9c0f('0x2f')](_0x497f24['query']);_0x1622ba[_0x9c0f('0x30')]=_[_0x9c0f('0x31')](_0x1622ba['model'],_0x1622ba[_0x9c0f('0x2e')]);_0x22a88d[_0x9c0f('0x32')]=_[_0x9c0f('0x31')](_0x1622ba[_0x9c0f('0x33')],qs[_0x9c0f('0x34')](_0x497f24[_0x9c0f('0x2e')]['fields']));_0x22a88d[_0x9c0f('0x32')]=_0x22a88d['attributes'][_0x9c0f('0x35')]?_0x22a88d[_0x9c0f('0x32')]:_0x1622ba[_0x9c0f('0x33')];if(!_0x497f24[_0x9c0f('0x2e')]['hasOwnProperty']('nolimit')){_0x22a88d['limit']=qs['limit'](_0x497f24[_0x9c0f('0x2e')][_0x9c0f('0x1f')]);_0x22a88d['offset']=qs[_0x9c0f('0x1d')](_0x497f24[_0x9c0f('0x2e')][_0x9c0f('0x1d')]);}_0x22a88d[_0x9c0f('0x36')]=qs[_0x9c0f('0x37')](_0x497f24['query'][_0x9c0f('0x37')]);_0x22a88d['where']=qs[_0x9c0f('0x30')](_[_0x9c0f('0x38')](_0x497f24[_0x9c0f('0x2e')],_0x1622ba[_0x9c0f('0x30')]),_0x4fdd61);if(_0x497f24[_0x9c0f('0x2e')][_0x9c0f('0x39')]){_0x22a88d['where']=_[_0x9c0f('0x3a')](_0x22a88d['where'],{'$or':_[_0x9c0f('0x2d')](_0x4fdd61,function(_0x4e36be){if(_0x4e36be[_0x9c0f('0x2b')]!==_0x9c0f('0x3b')){var _0x145790={};_0x145790[_0x4e36be[_0x9c0f('0x28')]]={'$like':'%'+_0x497f24['query'][_0x9c0f('0x39')]+'%'};return _0x145790;}})});}_0x22a88d=_[_0x9c0f('0x3a')]({},_0x22a88d,_0x497f24[_0x9c0f('0x3c')]);var _0x59cf7f={'where':_0x22a88d['where']};return db[_0x9c0f('0x3d')]['count'](_0x59cf7f)[_0x9c0f('0x25')](function(_0x132193){_0x3bbc35['count']=_0x132193;if(_0x497f24[_0x9c0f('0x2e')][_0x9c0f('0x3e')]){_0x22a88d[_0x9c0f('0x3f')]=[{'all':!![]}];}return db[_0x9c0f('0x3d')][_0x9c0f('0x40')](_0x22a88d);})['then'](function(_0x25af2b){_0x3bbc35[_0x9c0f('0x41')]=_0x25af2b;return _0x3bbc35;})[_0x9c0f('0x25')](respondWithFilteredResult(_0xe724b,_0x22a88d))[_0x9c0f('0x42')](handleError(_0xe724b,null));};exports[_0x9c0f('0x43')]=function(_0x2bc11c,_0x5f2340){var _0x2c397a={'raw':!![],'where':{'id':_0x2bc11c[_0x9c0f('0x44')]['id']}},_0x59696a={};_0x59696a[_0x9c0f('0x33')]=_[_0x9c0f('0x2f')](db['JscriptyQuestionReport']['rawAttributes']);_0x59696a[_0x9c0f('0x2e')]=_[_0x9c0f('0x2f')](_0x2bc11c['query']);_0x59696a[_0x9c0f('0x30')]=_['intersection'](_0x59696a[_0x9c0f('0x33')],_0x59696a[_0x9c0f('0x2e')]);_0x2c397a[_0x9c0f('0x32')]=_[_0x9c0f('0x31')](_0x59696a[_0x9c0f('0x33')],qs['fields'](_0x2bc11c[_0x9c0f('0x2e')][_0x9c0f('0x34')]));_0x2c397a[_0x9c0f('0x32')]=_0x2c397a[_0x9c0f('0x32')][_0x9c0f('0x35')]?_0x2c397a['attributes']:_0x59696a['model'];if(_0x2bc11c[_0x9c0f('0x2e')][_0x9c0f('0x3e')]){_0x2c397a[_0x9c0f('0x3f')]=[{'all':!![]}];}_0x2c397a=_[_0x9c0f('0x3a')]({},_0x2c397a,_0x2bc11c[_0x9c0f('0x3c')]);return db[_0x9c0f('0x3d')][_0x9c0f('0x45')](_0x2c397a)[_0x9c0f('0x25')](handleEntityNotFound(_0x5f2340,null))[_0x9c0f('0x25')](respondWithResult(_0x5f2340,null))[_0x9c0f('0x42')](handleError(_0x5f2340,null));};exports['create']=function(_0x41cbee,_0x42afb0){return db[_0x9c0f('0x3d')][_0x9c0f('0x46')](_0x41cbee[_0x9c0f('0x47')],{})[_0x9c0f('0x25')](respondWithResult(_0x42afb0,0xc9))[_0x9c0f('0x42')](handleError(_0x42afb0,null));};exports['update']=function(_0x26f562,_0x1ab16c){if(_0x26f562[_0x9c0f('0x47')]['id']){delete _0x26f562[_0x9c0f('0x47')]['id'];}return db[_0x9c0f('0x3d')][_0x9c0f('0x45')]({'where':{'id':_0x26f562[_0x9c0f('0x44')]['id']}})[_0x9c0f('0x25')](handleEntityNotFound(_0x1ab16c,null))[_0x9c0f('0x25')](saveUpdates(_0x26f562[_0x9c0f('0x47')],null))[_0x9c0f('0x25')](respondWithResult(_0x1ab16c,null))[_0x9c0f('0x42')](handleError(_0x1ab16c,null));};exports[_0x9c0f('0x48')]=function(_0x127b51,_0x155b54){return db[_0x9c0f('0x3d')]['find']({'where':{'id':_0x127b51[_0x9c0f('0x44')]['id']}})[_0x9c0f('0x25')](handleEntityNotFound(_0x155b54,null))[_0x9c0f('0x25')](removeEntity(_0x155b54,null))['catch'](handleError(_0x155b54,null));};exports[_0x9c0f('0x49')]=function(_0x283c08,_0x6f7da7){return db[_0x9c0f('0x3d')][_0x9c0f('0x49')]()[_0x9c0f('0x25')](respondWithResult(_0x6f7da7,null))[_0x9c0f('0x42')](handleError(_0x6f7da7,null));};
\ No newline at end of file
+var _0x9407=['desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','then','error','stack','name','send','index','JscriptyQuestionReport','rawAttributes','fieldName','type','key','model','map','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','where','pick','filters','filter','VIRTUAL','merge','options','include','findAll','rows','catch','show','params','find','create','body','update','describe','eml-format','zip-dir','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce'];(function(_0x475300,_0x382015){var _0x581269=function(_0x35d175){while(--_0x35d175){_0x475300['push'](_0x475300['shift']());}};_0x581269(++_0x382015);}(_0x9407,0x8b));var _0x7940=function(_0x44ce86,_0x4c152e){_0x44ce86=_0x44ce86-0x0;var _0x5b4576=_0x9407[_0x44ce86];return _0x5b4576;};'use strict';var emlformat=require(_0x7940('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7940('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7940('0x2'));var moment=require(_0x7940('0x3'));var BPromise=require(_0x7940('0x4'));var Mustache=require(_0x7940('0x5'));var util=require('util');var path=require('path');var sox=require(_0x7940('0x6'));var csv=require(_0x7940('0x7'));var ejs=require(_0x7940('0x8'));var fs=require('fs');var fs_extra=require(_0x7940('0x9'));var _=require(_0x7940('0xa'));var squel=require(_0x7940('0xb'));var crypto=require('crypto');var jsforce=require(_0x7940('0xc'));var deskjs=require(_0x7940('0xd'));var toCsv=require(_0x7940('0x7'));var querystring=require(_0x7940('0xe'));var Papa=require(_0x7940('0xf'));var Redis=require(_0x7940('0x10'));var authService=require(_0x7940('0x11'));var qs=require(_0x7940('0x12'));var as=require(_0x7940('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7940('0x14'))(_0x7940('0x15'));var utils=require(_0x7940('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x7940('0x17'));var db=require(_0x7940('0x18'))['db'];function respondWithStatusCode(_0xcbd2c9,_0x1bcb12){_0x1bcb12=_0x1bcb12||0xcc;return function(_0x48949e){if(_0x48949e){return _0xcbd2c9[_0x7940('0x19')](_0x1bcb12);}return _0xcbd2c9[_0x7940('0x1a')](_0x1bcb12)[_0x7940('0x1b')]();};}function respondWithResult(_0x44f085,_0x507900){_0x507900=_0x507900||0xc8;return function(_0xa2e164){if(_0xa2e164){return _0x44f085['status'](_0x507900)[_0x7940('0x1c')](_0xa2e164);}};}function respondWithFilteredResult(_0x34863a,_0x4728dd){return function(_0x22bbb2){if(_0x22bbb2){var _0x14cccb=typeof _0x4728dd[_0x7940('0x1d')]===_0x7940('0x1e')&&typeof _0x4728dd[_0x7940('0x1f')]===_0x7940('0x1e');var _0x17d78e=_0x22bbb2[_0x7940('0x20')];var _0x44299f=_0x14cccb?0x0:_0x4728dd[_0x7940('0x1d')];var _0x1e7b19=_0x14cccb?_0x22bbb2[_0x7940('0x20')]:_0x4728dd[_0x7940('0x1d')]+_0x4728dd[_0x7940('0x1f')];var _0x14648e;if(_0x1e7b19>=_0x17d78e){_0x1e7b19=_0x17d78e;_0x14648e=0xc8;}else{_0x14648e=0xce;}_0x34863a[_0x7940('0x1a')](_0x14648e);return _0x34863a['set'](_0x7940('0x21'),_0x44299f+'-'+_0x1e7b19+'/'+_0x17d78e)[_0x7940('0x1c')](_0x22bbb2);}return null;};}function patchUpdates(_0x45e205){return function(_0xcebfa8){try{jsonpatch[_0x7940('0x22')](_0xcebfa8,_0x45e205,!![]);}catch(_0x447e22){return BPromise[_0x7940('0x23')](_0x447e22);}return _0xcebfa8['save']();};}function saveUpdates(_0x4baab6,_0x3039ca){return function(_0x5179e8){if(_0x5179e8){return _0x5179e8['update'](_0x4baab6)[_0x7940('0x24')](function(_0x1ea0bd){return _0x1ea0bd;});}return null;};}function removeEntity(_0x2faa87,_0x453dc4){return function(_0x5d114b){if(_0x5d114b){return _0x5d114b['destroy']()[_0x7940('0x24')](function(){_0x2faa87[_0x7940('0x1a')](0xcc)[_0x7940('0x1b')]();});}};}function handleEntityNotFound(_0x16484c,_0x21816a){return function(_0x5a90eb){if(!_0x5a90eb){_0x16484c[_0x7940('0x19')](0x194);}return _0x5a90eb;};}function handleError(_0x15c2b4,_0x218d3b){_0x218d3b=_0x218d3b||0x1f4;return function(_0x51faa9){logger[_0x7940('0x25')](_0x51faa9[_0x7940('0x26')]);if(_0x51faa9['name']){delete _0x51faa9[_0x7940('0x27')];}_0x15c2b4[_0x7940('0x1a')](_0x218d3b)[_0x7940('0x28')](_0x51faa9);};}exports[_0x7940('0x29')]=function(_0x41a0a3,_0x93ab44){var _0x44f9ea={},_0x468ba4={},_0x362a6b={'count':0x0,'rows':[]};var _0x40137e=_['map'](db[_0x7940('0x2a')][_0x7940('0x2b')],function(_0x404048){return{'name':_0x404048[_0x7940('0x2c')],'type':_0x404048[_0x7940('0x2d')][_0x7940('0x2e')]};});_0x468ba4[_0x7940('0x2f')]=_[_0x7940('0x30')](_0x40137e,_0x7940('0x27'));_0x468ba4[_0x7940('0x31')]=_[_0x7940('0x32')](_0x41a0a3['query']);_0x468ba4['filters']=_[_0x7940('0x33')](_0x468ba4[_0x7940('0x2f')],_0x468ba4[_0x7940('0x31')]);_0x44f9ea['attributes']=_[_0x7940('0x33')](_0x468ba4[_0x7940('0x2f')],qs[_0x7940('0x34')](_0x41a0a3[_0x7940('0x31')][_0x7940('0x34')]));_0x44f9ea[_0x7940('0x35')]=_0x44f9ea[_0x7940('0x35')][_0x7940('0x36')]?_0x44f9ea[_0x7940('0x35')]:_0x468ba4[_0x7940('0x2f')];if(!_0x41a0a3['query'][_0x7940('0x37')](_0x7940('0x38'))){_0x44f9ea[_0x7940('0x1f')]=qs[_0x7940('0x1f')](_0x41a0a3['query'][_0x7940('0x1f')]);_0x44f9ea[_0x7940('0x1d')]=qs[_0x7940('0x1d')](_0x41a0a3[_0x7940('0x31')][_0x7940('0x1d')]);}_0x44f9ea[_0x7940('0x39')]=qs['sort'](_0x41a0a3['query']['sort']);_0x44f9ea[_0x7940('0x3a')]=qs['filters'](_[_0x7940('0x3b')](_0x41a0a3[_0x7940('0x31')],_0x468ba4[_0x7940('0x3c')]),_0x40137e);if(_0x41a0a3['query'][_0x7940('0x3d')]){_0x44f9ea['where']=_['merge'](_0x44f9ea[_0x7940('0x3a')],{'$or':_[_0x7940('0x30')](_0x40137e,function(_0x304868){if(_0x304868['type']!==_0x7940('0x3e')){var _0x3021f2={};_0x3021f2[_0x304868[_0x7940('0x27')]]={'$like':'%'+_0x41a0a3[_0x7940('0x31')][_0x7940('0x3d')]+'%'};return _0x3021f2;}})});}_0x44f9ea=_[_0x7940('0x3f')]({},_0x44f9ea,_0x41a0a3[_0x7940('0x40')]);var _0x1a3b05={'where':_0x44f9ea[_0x7940('0x3a')]};return db['JscriptyQuestionReport'][_0x7940('0x20')](_0x1a3b05)[_0x7940('0x24')](function(_0x2f2bdd){_0x362a6b[_0x7940('0x20')]=_0x2f2bdd;if(_0x41a0a3[_0x7940('0x31')]['includeAll']){_0x44f9ea[_0x7940('0x41')]=[{'all':!![]}];}return db['JscriptyQuestionReport'][_0x7940('0x42')](_0x44f9ea);})['then'](function(_0x3f55a9){_0x362a6b[_0x7940('0x43')]=_0x3f55a9;return _0x362a6b;})[_0x7940('0x24')](respondWithFilteredResult(_0x93ab44,_0x44f9ea))[_0x7940('0x44')](handleError(_0x93ab44,null));};exports[_0x7940('0x45')]=function(_0x6cde2d,_0x9792a0){var _0x4aec8c={'raw':!![],'where':{'id':_0x6cde2d[_0x7940('0x46')]['id']}},_0xe9c024={};_0xe9c024[_0x7940('0x2f')]=_[_0x7940('0x32')](db[_0x7940('0x2a')][_0x7940('0x2b')]);_0xe9c024['query']=_['keys'](_0x6cde2d[_0x7940('0x31')]);_0xe9c024[_0x7940('0x3c')]=_[_0x7940('0x33')](_0xe9c024['model'],_0xe9c024[_0x7940('0x31')]);_0x4aec8c['attributes']=_['intersection'](_0xe9c024[_0x7940('0x2f')],qs[_0x7940('0x34')](_0x6cde2d[_0x7940('0x31')]['fields']));_0x4aec8c[_0x7940('0x35')]=_0x4aec8c[_0x7940('0x35')][_0x7940('0x36')]?_0x4aec8c['attributes']:_0xe9c024['model'];if(_0x6cde2d['query']['includeAll']){_0x4aec8c['include']=[{'all':!![]}];}_0x4aec8c=_[_0x7940('0x3f')]({},_0x4aec8c,_0x6cde2d[_0x7940('0x40')]);return db[_0x7940('0x2a')][_0x7940('0x47')](_0x4aec8c)[_0x7940('0x24')](handleEntityNotFound(_0x9792a0,null))[_0x7940('0x24')](respondWithResult(_0x9792a0,null))[_0x7940('0x44')](handleError(_0x9792a0,null));};exports[_0x7940('0x48')]=function(_0x56756f,_0x45e143){return db[_0x7940('0x2a')]['create'](_0x56756f[_0x7940('0x49')],{})['then'](respondWithResult(_0x45e143,0xc9))[_0x7940('0x44')](handleError(_0x45e143,null));};exports[_0x7940('0x4a')]=function(_0x55bdcb,_0x5e8ab1){if(_0x55bdcb[_0x7940('0x49')]['id']){delete _0x55bdcb[_0x7940('0x49')]['id'];}return db[_0x7940('0x2a')][_0x7940('0x47')]({'where':{'id':_0x55bdcb[_0x7940('0x46')]['id']}})[_0x7940('0x24')](handleEntityNotFound(_0x5e8ab1,null))[_0x7940('0x24')](saveUpdates(_0x55bdcb['body'],null))[_0x7940('0x24')](respondWithResult(_0x5e8ab1,null))[_0x7940('0x44')](handleError(_0x5e8ab1,null));};exports['destroy']=function(_0x344d1f,_0x3474db){return db[_0x7940('0x2a')][_0x7940('0x47')]({'where':{'id':_0x344d1f[_0x7940('0x46')]['id']}})[_0x7940('0x24')](handleEntityNotFound(_0x3474db,null))[_0x7940('0x24')](removeEntity(_0x3474db,null))[_0x7940('0x44')](handleError(_0x3474db,null));};exports[_0x7940('0x4b')]=function(_0x49081f,_0x39b359){return db[_0x7940('0x2a')][_0x7940('0x4b')]()[_0x7940('0x24')](respondWithResult(_0x39b359,null))[_0x7940('0x44')](handleError(_0x39b359,null));};
\ No newline at end of file
index c90a0ac..7b7dc34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc12f=['bluebird','path','rimraf','exports','define','JscriptyQuestionReport','report_jscripty_questions','../../config/logger','api'];(function(_0x6d2195,_0x606f25){var _0x370562=function(_0x388eb6){while(--_0x388eb6){_0x6d2195['push'](_0x6d2195['shift']());}};_0x370562(++_0x606f25);}(_0xc12f,0xf1));var _0xfc12=function(_0x271060,_0x3f86b1){_0x271060=_0x271060-0x0;var _0x40540b=_0xc12f[_0x271060];return _0x40540b;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xfc12('0x0'))(_0xfc12('0x1'));var moment=require('moment');var BPromise=require(_0xfc12('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xfc12('0x3'));var rimraf=require(_0xfc12('0x4'));var config=require('../../config/environment');var attributes=require('./jscriptyQuestionReport.attributes');module[_0xfc12('0x5')]=function(_0x657e99,_0xed4593){return _0x657e99[_0xfc12('0x6')](_0xfc12('0x7'),attributes,{'tableName':_0xfc12('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc33d=['api','moment','bluebird','request-promise','rimraf','../../config/environment','./jscriptyQuestionReport.attributes','exports','define','report_jscripty_questions','lodash','util'];(function(_0x2a829f,_0x1b0c15){var _0x5737c3=function(_0x2376f9){while(--_0x2376f9){_0x2a829f['push'](_0x2a829f['shift']());}};_0x5737c3(++_0x1b0c15);}(_0xc33d,0x166));var _0xdc33=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc33d[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xdc33('0x0'));var util=require(_0xdc33('0x1'));var logger=require('../../config/logger')(_0xdc33('0x2'));var moment=require(_0xdc33('0x3'));var BPromise=require(_0xdc33('0x4'));var rp=require(_0xdc33('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xdc33('0x6'));var config=require(_0xdc33('0x7'));var attributes=require(_0xdc33('0x8'));module[_0xdc33('0x9')]=function(_0x455e91,_0x443ea5){return _0x455e91[_0xdc33('0xa')]('JscriptyQuestionReport',attributes,{'tableName':_0xdc33('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f4ba742..2295d32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc237=['../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','JscriptyQuestionReport,\x20%s,\x20%s','debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x2f4fea,_0x29fc96){var _0x5a677e=function(_0x22a446){while(--_0x22a446){_0x2f4fea['push'](_0x2f4fea['shift']());}};_0x5a677e(++_0x29fc96);}(_0xc237,0x17f));var _0x7c23=function(_0xc7fa04,_0x174884){_0xc7fa04=_0xc7fa04-0x0;var _0x1174e4=_0xc237[_0xc7fa04];return _0x1174e4;};'use strict';var _=require(_0x7c23('0x0'));var util=require(_0x7c23('0x1'));var moment=require(_0x7c23('0x2'));var BPromise=require(_0x7c23('0x3'));var rs=require(_0x7c23('0x4'));var fs=require('fs');var Redis=require(_0x7c23('0x5'));var db=require(_0x7c23('0x6'))['db'];var utils=require(_0x7c23('0x7'));var logger=require(_0x7c23('0x8'))('rpc');var config=require(_0x7c23('0x9'));var jayson=require(_0x7c23('0xa'));var client=jayson[_0x7c23('0xb')][_0x7c23('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2db183,_0x5644fc,_0x167cfd){return new BPromise(function(_0x3d85d2,_0x54bf2c){return client[_0x7c23('0xd')](_0x2db183,_0x167cfd)[_0x7c23('0xe')](function(_0x47aff6){logger[_0x7c23('0xf')](_0x7c23('0x10'),_0x5644fc,'request\x20sent');logger[_0x7c23('0x11')](_0x7c23('0x12'),_0x5644fc,_0x7c23('0x13'),JSON['stringify'](_0x47aff6));if(_0x47aff6[_0x7c23('0x14')]){if(_0x47aff6[_0x7c23('0x14')]['code']===0x1f4){logger[_0x7c23('0x14')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x5644fc,_0x47aff6[_0x7c23('0x14')][_0x7c23('0x15')]);return _0x54bf2c(_0x47aff6['error'][_0x7c23('0x15')]);}logger['error'](_0x7c23('0x10'),_0x5644fc,_0x47aff6[_0x7c23('0x14')][_0x7c23('0x15')]);return _0x3d85d2(_0x47aff6[_0x7c23('0x14')][_0x7c23('0x15')]);}else{logger[_0x7c23('0xf')](_0x7c23('0x10'),_0x5644fc,_0x7c23('0x13'));_0x3d85d2(_0x47aff6['result']['message']);}})[_0x7c23('0x16')](function(_0x4f4bbc){logger[_0x7c23('0x14')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x5644fc,_0x4f4bbc);_0x54bf2c(_0x4f4bbc);});});}
\ No newline at end of file
+var _0x49d1=['JscriptyQuestionReport,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','info','catch','lodash','moment','../../config/logger','../../config/environment','jayson/promise','then'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x49d1,0xcc));var _0x149d=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x49d1[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x149d('0x0'));var util=require('util');var moment=require(_0x149d('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x149d('0x2'))('rpc');var config=require(_0x149d('0x3'));var jayson=require(_0x149d('0x4'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3c025b,_0x3ce2ed,_0x23090c){return new BPromise(function(_0x4acda0,_0x53f4cc){return client['request'](_0x3c025b,_0x23090c)[_0x149d('0x5')](function(_0x1175f9){logger['info'](_0x149d('0x6'),_0x3ce2ed,'request\x20sent');logger['debug']('JscriptyQuestionReport,\x20%s,\x20%s,\x20%s',_0x3ce2ed,_0x149d('0x7'),JSON[_0x149d('0x8')](_0x1175f9));if(_0x1175f9['error']){if(_0x1175f9['error'][_0x149d('0x9')]===0x1f4){logger[_0x149d('0xa')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x3ce2ed,_0x1175f9['error'][_0x149d('0xb')]);return _0x53f4cc(_0x1175f9[_0x149d('0xa')][_0x149d('0xb')]);}logger['error']('JscriptyQuestionReport,\x20%s,\x20%s',_0x3ce2ed,_0x1175f9[_0x149d('0xa')][_0x149d('0xb')]);return _0x4acda0(_0x1175f9[_0x149d('0xa')]['message']);}else{logger[_0x149d('0xc')](_0x149d('0x6'),_0x3ce2ed,'request\x20sent');_0x4acda0(_0x1175f9['result'][_0x149d('0xb')]);}})[_0x149d('0xd')](function(_0x3c390c){logger[_0x149d('0xa')](_0x149d('0x6'),_0x3ce2ed,_0x3c390c);_0x53f4cc(_0x3c390c);});});}
\ No newline at end of file
index 51b10fb..89fe201 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d8e=['get','/describe','describe','show','/:id/questions','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','isAuthenticated','index'];(function(_0x396e90,_0x4c7718){var _0xaf7e4c=function(_0x2a96bc){while(--_0x2a96bc){_0x396e90['push'](_0x396e90['shift']());}};_0xaf7e4c(++_0x4c7718);}(_0x3d8e,0x1d9));var _0xe3d8=function(_0x432fca,_0xb0b1b5){_0x432fca=_0x432fca-0x0;var _0x3adba4=_0x3d8e[_0x432fca];return _0x3adba4;};'use strict';var multer=require(_0xe3d8('0x0'));var util=require(_0xe3d8('0x1'));var path=require(_0xe3d8('0x2'));var timeout=require(_0xe3d8('0x3'));var express=require(_0xe3d8('0x4'));var router=express[_0xe3d8('0x5')]();var fs_extra=require(_0xe3d8('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xe3d8('0x7'));var config=require(_0xe3d8('0x8'));var controller=require('./jscriptySessionReport.controller');router['get']('/',auth[_0xe3d8('0x9')](),controller[_0xe3d8('0xa')]);router[_0xe3d8('0xb')](_0xe3d8('0xc'),auth[_0xe3d8('0x9')](),controller[_0xe3d8('0xd')]);router[_0xe3d8('0xb')]('/:id',auth[_0xe3d8('0x9')](),controller[_0xe3d8('0xe')]);router[_0xe3d8('0xb')](_0xe3d8('0xf'),auth[_0xe3d8('0x9')](),controller['getQuestions']);router['post']('/',auth[_0xe3d8('0x9')](),controller['create']);router[_0xe3d8('0x10')](_0xe3d8('0x11'),auth['isAuthenticated'](),controller[_0xe3d8('0x12')]);router[_0xe3d8('0x13')]('/:id',auth[_0xe3d8('0x9')](),controller[_0xe3d8('0x14')]);module[_0xe3d8('0x15')]=router;
\ No newline at end of file
+var _0x7c83=['/describe','isAuthenticated','describe','/:id','show','/:id/questions','getQuestions','post','create','put','update','delete','destroy','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','./jscriptySessionReport.controller','get','index'];(function(_0x208d47,_0xa4c52f){var _0x5d537f=function(_0x1554f1){while(--_0x1554f1){_0x208d47['push'](_0x208d47['shift']());}};_0x5d537f(++_0xa4c52f);}(_0x7c83,0xa7));var _0x37c8=function(_0xd7e8b0,_0x11be47){_0xd7e8b0=_0xd7e8b0-0x0;var _0x1db786=_0x7c83[_0xd7e8b0];return _0x1db786;};'use strict';var multer=require(_0x37c8('0x0'));var util=require('util');var path=require(_0x37c8('0x1'));var timeout=require(_0x37c8('0x2'));var express=require('express');var router=express[_0x37c8('0x3')]();var fs_extra=require(_0x37c8('0x4'));var auth=require(_0x37c8('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x37c8('0x6'));router[_0x37c8('0x7')]('/',auth['isAuthenticated'](),controller[_0x37c8('0x8')]);router['get'](_0x37c8('0x9'),auth[_0x37c8('0xa')](),controller[_0x37c8('0xb')]);router[_0x37c8('0x7')](_0x37c8('0xc'),auth[_0x37c8('0xa')](),controller[_0x37c8('0xd')]);router[_0x37c8('0x7')](_0x37c8('0xe'),auth[_0x37c8('0xa')](),controller[_0x37c8('0xf')]);router[_0x37c8('0x10')]('/',auth[_0x37c8('0xa')](),controller[_0x37c8('0x11')]);router[_0x37c8('0x12')](_0x37c8('0xc'),auth['isAuthenticated'](),controller[_0x37c8('0x13')]);router[_0x37c8('0x14')]('/:id',auth[_0x37c8('0xa')](),controller[_0x37c8('0x15')]);module['exports']=router;
\ No newline at end of file
index 76a8a54..58be2b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6931=['YYYY-MM-DD\x20HH:mm:ss','STRING','moment','sequelize','exports','DATE','setDataValue','starttime','format'];(function(_0x5f49c0,_0x27a1b4){var _0x5ab653=function(_0x4de962){while(--_0x4de962){_0x5f49c0['push'](_0x5f49c0['shift']());}};_0x5ab653(++_0x27a1b4);}(_0x6931,0x1a9));var _0x1693=function(_0x194d9e,_0x5d4cc8){_0x194d9e=_0x194d9e-0x0;var _0x2122b2=_0x6931[_0x194d9e];return _0x2122b2;};'use strict';var moment=require(_0x1693('0x0'));var Sequelize=require(_0x1693('0x1'));module[_0x1693('0x2')]={'starttime':{'type':Sequelize[_0x1693('0x3')],'set':function(_0x369854){this[_0x1693('0x4')](_0x1693('0x5'),_0x369854);this[_0x1693('0x4')]('endtime',moment()[_0x1693('0x6')](_0x1693('0x7')));}},'endtime':{'type':Sequelize[_0x1693('0x3')]},'membername':{'type':Sequelize[_0x1693('0x8')]},'projectname':{'type':Sequelize[_0x1693('0x8')]},'queue':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x1693('0x8')]},'calleridname':{'type':Sequelize[_0x1693('0x8')]},'calleridnum':{'type':Sequelize[_0x1693('0x8')]},'completed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x1507=['YYYY-MM-DD\x20HH:mm:ss','STRING','sequelize','exports','DATE','endtime','format'];(function(_0x5d2507,_0x556fac){var _0x198c07=function(_0x2e2b6b){while(--_0x2e2b6b){_0x5d2507['push'](_0x5d2507['shift']());}};_0x198c07(++_0x556fac);}(_0x1507,0x121));var _0x7150=function(_0x1406c8,_0x40a801){_0x1406c8=_0x1406c8-0x0;var _0x3ec6f8=_0x1507[_0x1406c8];return _0x3ec6f8;};'use strict';var moment=require('moment');var Sequelize=require(_0x7150('0x0'));module[_0x7150('0x1')]={'starttime':{'type':Sequelize[_0x7150('0x2')],'set':function(_0x502001){this['setDataValue']('starttime',_0x502001);this['setDataValue'](_0x7150('0x3'),moment()[_0x7150('0x4')](_0x7150('0x5')));}},'endtime':{'type':Sequelize[_0x7150('0x2')]},'membername':{'type':Sequelize[_0x7150('0x6')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x7150('0x6')]},'calleridname':{'type':Sequelize[_0x7150('0x6')]},'calleridnum':{'type':Sequelize[_0x7150('0x6')]},'completed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 8e68173..6c4283a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce8d=['count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','send','index','map','JscriptySessionReport','fieldName','type','key','model','name','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','VIRTUAL','filter','merge','includeAll','include','findAll','rows','catch','show','params','rawAttributes','keys','options','create','body','find','describe','getQuestions','findOne','JscriptyQuestionReport','nolimit','pick','SessionId','rimraf','zip-dir','fast-json-patch','moment','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit'];(function(_0xd1d19a,_0x1933f0){var _0x52a79d=function(_0x5199e2){while(--_0x5199e2){_0xd1d19a['push'](_0xd1d19a['shift']());}};_0x52a79d(++_0x1933f0);}(_0xce8d,0x128));var _0xdce8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xce8d[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xdce8('0x0'));var zipdir=require(_0xdce8('0x1'));var jsonpatch=require(_0xdce8('0x2'));var rp=require('request-promise');var moment=require(_0xdce8('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xdce8('0x4'));var csv=require(_0xdce8('0x5'));var ejs=require(_0xdce8('0x6'));var fs=require('fs');var fs_extra=require(_0xdce8('0x7'));var _=require(_0xdce8('0x8'));var squel=require('squel');var crypto=require(_0xdce8('0x9'));var jsforce=require(_0xdce8('0xa'));var deskjs=require(_0xdce8('0xb'));var toCsv=require(_0xdce8('0x5'));var querystring=require(_0xdce8('0xc'));var Papa=require(_0xdce8('0xd'));var Redis=require(_0xdce8('0xe'));var authService=require(_0xdce8('0xf'));var qs=require(_0xdce8('0x10'));var as=require(_0xdce8('0x11'));var hardwareService=require(_0xdce8('0x12'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0xdce8('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0xdce8('0x14'))['db'];function respondWithStatusCode(_0x54baf2,_0x1da50c){_0x1da50c=_0x1da50c||0xcc;return function(_0x2b41b9){if(_0x2b41b9){return _0x54baf2[_0xdce8('0x15')](_0x1da50c);}return _0x54baf2[_0xdce8('0x16')](_0x1da50c)[_0xdce8('0x17')]();};}function respondWithResult(_0x529f65,_0x5d00a2){_0x5d00a2=_0x5d00a2||0xc8;return function(_0x3a1b40){if(_0x3a1b40){return _0x529f65[_0xdce8('0x16')](_0x5d00a2)[_0xdce8('0x18')](_0x3a1b40);}};}function respondWithFilteredResult(_0x2bccd3,_0x3a5af5){return function(_0x39cb0e){if(_0x39cb0e){var _0xc86a60=typeof _0x3a5af5[_0xdce8('0x19')]===_0xdce8('0x1a')&&typeof _0x3a5af5[_0xdce8('0x1b')]===_0xdce8('0x1a');var _0x5c6154=_0x39cb0e[_0xdce8('0x1c')];var _0x4b219d=_0xc86a60?0x0:_0x3a5af5[_0xdce8('0x19')];var _0x55e436=_0xc86a60?_0x39cb0e[_0xdce8('0x1c')]:_0x3a5af5[_0xdce8('0x19')]+_0x3a5af5[_0xdce8('0x1b')];var _0x198c05;if(_0x55e436>=_0x5c6154){_0x55e436=_0x5c6154;_0x198c05=0xc8;}else{_0x198c05=0xce;}_0x2bccd3[_0xdce8('0x16')](_0x198c05);return _0x2bccd3[_0xdce8('0x1d')](_0xdce8('0x1e'),_0x4b219d+'-'+_0x55e436+'/'+_0x5c6154)[_0xdce8('0x18')](_0x39cb0e);}return null;};}function patchUpdates(_0x2cdf2a){return function(_0x11eefd){try{jsonpatch[_0xdce8('0x1f')](_0x11eefd,_0x2cdf2a,!![]);}catch(_0x4750b0){return BPromise[_0xdce8('0x20')](_0x4750b0);}return _0x11eefd[_0xdce8('0x21')]();};}function saveUpdates(_0x4c2b3c,_0x1d48c6){return function(_0x1f90d4){if(_0x1f90d4){return _0x1f90d4[_0xdce8('0x22')](_0x4c2b3c)[_0xdce8('0x23')](function(_0x138f59){return _0x138f59;});}return null;};}function removeEntity(_0xedc217,_0x2c6f6d){return function(_0x510d02){if(_0x510d02){return _0x510d02[_0xdce8('0x24')]()['then'](function(){_0xedc217['status'](0xcc)[_0xdce8('0x17')]();});}};}function handleEntityNotFound(_0x52307f,_0x2c2075){return function(_0x18c4e3){if(!_0x18c4e3){_0x52307f[_0xdce8('0x15')](0x194);}return _0x18c4e3;};}function handleError(_0x407157,_0x3b441d){_0x3b441d=_0x3b441d||0x1f4;return function(_0x32634f){logger[_0xdce8('0x25')](_0x32634f[_0xdce8('0x26')]);if(_0x32634f['name']){delete _0x32634f['name'];}_0x407157[_0xdce8('0x16')](_0x3b441d)[_0xdce8('0x27')](_0x32634f);};}exports[_0xdce8('0x28')]=function(_0x2a385f,_0x2d166a){var _0x50c8c1={},_0x138520={},_0x5c2972={'count':0x0,'rows':[]};var _0x3855ab=_[_0xdce8('0x29')](db[_0xdce8('0x2a')]['rawAttributes'],function(_0x5cb52b){return{'name':_0x5cb52b[_0xdce8('0x2b')],'type':_0x5cb52b[_0xdce8('0x2c')][_0xdce8('0x2d')]};});_0x138520[_0xdce8('0x2e')]=_[_0xdce8('0x29')](_0x3855ab,_0xdce8('0x2f'));_0x138520[_0xdce8('0x30')]=_['keys'](_0x2a385f[_0xdce8('0x30')]);_0x138520[_0xdce8('0x31')]=_[_0xdce8('0x32')](_0x138520[_0xdce8('0x2e')],_0x138520['query']);_0x50c8c1['attributes']=_[_0xdce8('0x32')](_0x138520['model'],qs['fields'](_0x2a385f[_0xdce8('0x30')][_0xdce8('0x33')]));_0x50c8c1['attributes']=_0x50c8c1[_0xdce8('0x34')][_0xdce8('0x35')]?_0x50c8c1[_0xdce8('0x34')]:_0x138520[_0xdce8('0x2e')];if(!_0x2a385f[_0xdce8('0x30')][_0xdce8('0x36')]('nolimit')){_0x50c8c1[_0xdce8('0x1b')]=qs['limit'](_0x2a385f[_0xdce8('0x30')]['limit']);_0x50c8c1[_0xdce8('0x19')]=qs['offset'](_0x2a385f['query'][_0xdce8('0x19')]);}_0x50c8c1[_0xdce8('0x37')]=qs['sort'](_0x2a385f[_0xdce8('0x30')][_0xdce8('0x38')]);_0x50c8c1[_0xdce8('0x39')]=qs['filters'](_['pick'](_0x2a385f[_0xdce8('0x30')],_0x138520[_0xdce8('0x31')]),_0x3855ab);if(_0x2a385f[_0xdce8('0x30')]['filter']){_0x50c8c1[_0xdce8('0x39')]=_['merge'](_0x50c8c1['where'],{'$or':_['map'](_0x3855ab,function(_0x2f927f){if(_0x2f927f['type']!==_0xdce8('0x3a')){var _0x31e547={};_0x31e547[_0x2f927f[_0xdce8('0x2f')]]={'$like':'%'+_0x2a385f['query'][_0xdce8('0x3b')]+'%'};return _0x31e547;}})});}_0x50c8c1=_[_0xdce8('0x3c')]({},_0x50c8c1,_0x2a385f['options']);var _0x149ac5={'where':_0x50c8c1[_0xdce8('0x39')]};return db[_0xdce8('0x2a')][_0xdce8('0x1c')](_0x149ac5)['then'](function(_0x19ff78){_0x5c2972['count']=_0x19ff78;if(_0x2a385f['query'][_0xdce8('0x3d')]){_0x50c8c1[_0xdce8('0x3e')]=[{'all':!![]}];}return db[_0xdce8('0x2a')][_0xdce8('0x3f')](_0x50c8c1);})['then'](function(_0x3999a2){_0x5c2972[_0xdce8('0x40')]=_0x3999a2;return _0x5c2972;})['then'](respondWithFilteredResult(_0x2d166a,_0x50c8c1))[_0xdce8('0x41')](handleError(_0x2d166a,null));};exports[_0xdce8('0x42')]=function(_0x299473,_0x5acb3d){var _0x4e1c7f={'raw':!![],'where':{'id':_0x299473[_0xdce8('0x43')]['id']}},_0x5da7ab={};_0x5da7ab['model']=_['keys'](db[_0xdce8('0x2a')][_0xdce8('0x44')]);_0x5da7ab[_0xdce8('0x30')]=_[_0xdce8('0x45')](_0x299473[_0xdce8('0x30')]);_0x5da7ab[_0xdce8('0x31')]=_[_0xdce8('0x32')](_0x5da7ab[_0xdce8('0x2e')],_0x5da7ab[_0xdce8('0x30')]);_0x4e1c7f[_0xdce8('0x34')]=_[_0xdce8('0x32')](_0x5da7ab[_0xdce8('0x2e')],qs[_0xdce8('0x33')](_0x299473[_0xdce8('0x30')][_0xdce8('0x33')]));_0x4e1c7f[_0xdce8('0x34')]=_0x4e1c7f[_0xdce8('0x34')]['length']?_0x4e1c7f[_0xdce8('0x34')]:_0x5da7ab[_0xdce8('0x2e')];if(_0x299473['query'][_0xdce8('0x3d')]){_0x4e1c7f['include']=[{'all':!![]}];}_0x4e1c7f=_[_0xdce8('0x3c')]({},_0x4e1c7f,_0x299473[_0xdce8('0x46')]);return db[_0xdce8('0x2a')]['find'](_0x4e1c7f)[_0xdce8('0x23')](handleEntityNotFound(_0x5acb3d,null))['then'](respondWithResult(_0x5acb3d,null))[_0xdce8('0x41')](handleError(_0x5acb3d,null));};exports['create']=function(_0x5519c0,_0x58faee){return db[_0xdce8('0x2a')][_0xdce8('0x47')](_0x5519c0[_0xdce8('0x48')],{})[_0xdce8('0x23')](respondWithResult(_0x58faee,0xc9))[_0xdce8('0x41')](handleError(_0x58faee,null));};exports[_0xdce8('0x22')]=function(_0x33bf28,_0x37ebb0){if(_0x33bf28['body']['id']){delete _0x33bf28[_0xdce8('0x48')]['id'];}return db[_0xdce8('0x2a')]['find']({'where':{'id':_0x33bf28[_0xdce8('0x43')]['id']}})[_0xdce8('0x23')](handleEntityNotFound(_0x37ebb0,null))['then'](saveUpdates(_0x33bf28[_0xdce8('0x48')],null))[_0xdce8('0x23')](respondWithResult(_0x37ebb0,null))[_0xdce8('0x41')](handleError(_0x37ebb0,null));};exports[_0xdce8('0x24')]=function(_0x19d5e5,_0x484bbb){return db['JscriptySessionReport'][_0xdce8('0x49')]({'where':{'id':_0x19d5e5[_0xdce8('0x43')]['id']}})[_0xdce8('0x23')](handleEntityNotFound(_0x484bbb,null))[_0xdce8('0x23')](removeEntity(_0x484bbb,null))[_0xdce8('0x41')](handleError(_0x484bbb,null));};exports[_0xdce8('0x4a')]=function(_0x33a007,_0x2cd7f4){return db[_0xdce8('0x2a')][_0xdce8('0x4a')]()['then'](respondWithResult(_0x2cd7f4,null))['catch'](handleError(_0x2cd7f4,null));};exports[_0xdce8('0x4b')]=function(_0x26ab8c,_0x2227a7,_0x314740){var _0x3f40a8={'raw':!![],'where':{}};var _0x4668f8={};var _0x611ebc={'count':0x0,'rows':[]};return db[_0xdce8('0x2a')][_0xdce8('0x4c')]({'where':{'id':_0x26ab8c[_0xdce8('0x43')]['id']}})[_0xdce8('0x23')](handleEntityNotFound(_0x2227a7,null))['then'](function(_0xc7b48b){if(_0xc7b48b){_0x4668f8[_0xdce8('0x2e')]=_['keys'](db[_0xdce8('0x4d')][_0xdce8('0x44')]);_0x4668f8[_0xdce8('0x30')]=_[_0xdce8('0x45')](_0x26ab8c[_0xdce8('0x30')]);_0x4668f8[_0xdce8('0x31')]=_['intersection'](_0x4668f8['model'],_0x4668f8[_0xdce8('0x30')]);_0x3f40a8[_0xdce8('0x34')]=_[_0xdce8('0x32')](_0x4668f8[_0xdce8('0x2e')],qs[_0xdce8('0x33')](_0x26ab8c[_0xdce8('0x30')]['fields']));_0x3f40a8['attributes']=_0x3f40a8[_0xdce8('0x34')][_0xdce8('0x35')]?_0x3f40a8[_0xdce8('0x34')]:_0x4668f8[_0xdce8('0x2e')];if(!_0x26ab8c['query'][_0xdce8('0x36')](_0xdce8('0x4e'))){_0x3f40a8[_0xdce8('0x1b')]=qs['limit'](_0x26ab8c[_0xdce8('0x30')][_0xdce8('0x1b')]);_0x3f40a8[_0xdce8('0x19')]=qs['offset'](_0x26ab8c[_0xdce8('0x30')]['offset']);}_0x3f40a8[_0xdce8('0x37')]=qs[_0xdce8('0x38')](_0x26ab8c['query'][_0xdce8('0x38')]);_0x3f40a8[_0xdce8('0x39')]=qs[_0xdce8('0x31')](_[_0xdce8('0x4f')](_0x26ab8c['query'],_0x4668f8[_0xdce8('0x31')]));_0x3f40a8['where'][_0xdce8('0x50')]=_0xc7b48b['id'];if(_0x26ab8c['query'][_0xdce8('0x3b')]){_0x3f40a8[_0xdce8('0x39')]=_[_0xdce8('0x3c')](_0x3f40a8[_0xdce8('0x39')],{'$or':_['map'](_0x3f40a8[_0xdce8('0x34')],function(_0x308de8){var _0x466be8={};_0x466be8[_0x308de8]={'$like':'%'+_0x26ab8c[_0xdce8('0x30')]['filter']+'%'};return _0x466be8;})});}_0x3f40a8=_[_0xdce8('0x3c')]({},_0x3f40a8,_0x26ab8c['options']);return db[_0xdce8('0x4d')]['count']({'where':_0x3f40a8['where']})['then'](function(_0x24396e){_0x611ebc[_0xdce8('0x1c')]=_0x24396e;if(_0x26ab8c[_0xdce8('0x30')][_0xdce8('0x3d')]){_0x3f40a8[_0xdce8('0x3e')]=[{'all':!![]}];}return db[_0xdce8('0x4d')][_0xdce8('0x3f')](_0x3f40a8);})[_0xdce8('0x23')](function(_0x5914){_0x611ebc[_0xdce8('0x40')]=_0x5914;return _0x611ebc;});}})['then'](respondWithFilteredResult(_0x2227a7,_0x3f40a8))[_0xdce8('0x41')](handleError(_0x2227a7,null));};
\ No newline at end of file
+var _0xb74e=['keys','filters','intersection','model','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','fields','find','create','body','update','params','describe','getQuestions','JscriptyQuestionReport','SessionId','eml-format','rimraf','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/environment','../../config/license/util','sendStatus','json','offset','undefined','limit','count','apply','reject','save','then','destroy','status','end','error','stack','name','send','index','map','JscriptySessionReport','rawAttributes','type','key','query'];(function(_0x39e736,_0x55ba66){var _0x49270d=function(_0x47e110){while(--_0x47e110){_0x39e736['push'](_0x39e736['shift']());}};_0x49270d(++_0x55ba66);}(_0xb74e,0x163));var _0xeb74=function(_0x4509a3,_0x40fdd6){_0x4509a3=_0x4509a3-0x0;var _0x1f6003=_0xb74e[_0x4509a3];return _0x1f6003;};'use strict';var emlformat=require(_0xeb74('0x0'));var rimraf=require(_0xeb74('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xeb74('0x2'));var moment=require(_0xeb74('0x3'));var BPromise=require(_0xeb74('0x4'));var Mustache=require(_0xeb74('0x5'));var util=require(_0xeb74('0x6'));var path=require(_0xeb74('0x7'));var sox=require(_0xeb74('0x8'));var csv=require(_0xeb74('0x9'));var ejs=require(_0xeb74('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xeb74('0xb'));var squel=require(_0xeb74('0xc'));var crypto=require(_0xeb74('0xd'));var jsforce=require(_0xeb74('0xe'));var deskjs=require(_0xeb74('0xf'));var toCsv=require(_0xeb74('0x9'));var querystring=require(_0xeb74('0x10'));var Papa=require(_0xeb74('0x11'));var Redis=require(_0xeb74('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xeb74('0x13'));var as=require(_0xeb74('0x14'));var hardwareService=require(_0xeb74('0x15'));var logger=require(_0xeb74('0x16'))(_0xeb74('0x17'));var utils=require('../../config/utils');var config=require(_0xeb74('0x18'));var licenseUtil=require(_0xeb74('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3b0507,_0x475a3d){_0x475a3d=_0x475a3d||0xcc;return function(_0x4d87b6){if(_0x4d87b6){return _0x3b0507[_0xeb74('0x1a')](_0x475a3d);}return _0x3b0507['status'](_0x475a3d)['end']();};}function respondWithResult(_0x23543b,_0x3c6907){_0x3c6907=_0x3c6907||0xc8;return function(_0x3f3faf){if(_0x3f3faf){return _0x23543b['status'](_0x3c6907)[_0xeb74('0x1b')](_0x3f3faf);}};}function respondWithFilteredResult(_0x44f9a4,_0x1775f5){return function(_0x3b108b){if(_0x3b108b){var _0xe62978=typeof _0x1775f5[_0xeb74('0x1c')]===_0xeb74('0x1d')&&typeof _0x1775f5[_0xeb74('0x1e')]===_0xeb74('0x1d');var _0x2d1112=_0x3b108b[_0xeb74('0x1f')];var _0x5d09e4=_0xe62978?0x0:_0x1775f5[_0xeb74('0x1c')];var _0x4e8ccd=_0xe62978?_0x3b108b[_0xeb74('0x1f')]:_0x1775f5['offset']+_0x1775f5['limit'];var _0x5f2b4c;if(_0x4e8ccd>=_0x2d1112){_0x4e8ccd=_0x2d1112;_0x5f2b4c=0xc8;}else{_0x5f2b4c=0xce;}_0x44f9a4['status'](_0x5f2b4c);return _0x44f9a4['set']('Content-Range',_0x5d09e4+'-'+_0x4e8ccd+'/'+_0x2d1112)[_0xeb74('0x1b')](_0x3b108b);}return null;};}function patchUpdates(_0x2cd972){return function(_0x2db6f1){try{jsonpatch[_0xeb74('0x20')](_0x2db6f1,_0x2cd972,!![]);}catch(_0x50eb61){return BPromise[_0xeb74('0x21')](_0x50eb61);}return _0x2db6f1[_0xeb74('0x22')]();};}function saveUpdates(_0x4a4b2f,_0x2320d8){return function(_0x5bb50a){if(_0x5bb50a){return _0x5bb50a['update'](_0x4a4b2f)[_0xeb74('0x23')](function(_0x563392){return _0x563392;});}return null;};}function removeEntity(_0x3da8b5,_0x3438ba){return function(_0x263c58){if(_0x263c58){return _0x263c58[_0xeb74('0x24')]()[_0xeb74('0x23')](function(){_0x3da8b5[_0xeb74('0x25')](0xcc)[_0xeb74('0x26')]();});}};}function handleEntityNotFound(_0x9f836d,_0xe4f34d){return function(_0xadf2b6){if(!_0xadf2b6){_0x9f836d['sendStatus'](0x194);}return _0xadf2b6;};}function handleError(_0x206a3f,_0x13be27){_0x13be27=_0x13be27||0x1f4;return function(_0x3ed0bf){logger[_0xeb74('0x27')](_0x3ed0bf[_0xeb74('0x28')]);if(_0x3ed0bf[_0xeb74('0x29')]){delete _0x3ed0bf[_0xeb74('0x29')];}_0x206a3f[_0xeb74('0x25')](_0x13be27)[_0xeb74('0x2a')](_0x3ed0bf);};}exports[_0xeb74('0x2b')]=function(_0x2b4c15,_0xc73055){var _0x1f1cf2={},_0xa6baa0={},_0x23d81c={'count':0x0,'rows':[]};var _0x1baa85=_[_0xeb74('0x2c')](db[_0xeb74('0x2d')][_0xeb74('0x2e')],function(_0x1fef5b){return{'name':_0x1fef5b['fieldName'],'type':_0x1fef5b[_0xeb74('0x2f')][_0xeb74('0x30')]};});_0xa6baa0['model']=_[_0xeb74('0x2c')](_0x1baa85,_0xeb74('0x29'));_0xa6baa0[_0xeb74('0x31')]=_[_0xeb74('0x32')](_0x2b4c15[_0xeb74('0x31')]);_0xa6baa0[_0xeb74('0x33')]=_[_0xeb74('0x34')](_0xa6baa0[_0xeb74('0x35')],_0xa6baa0[_0xeb74('0x31')]);_0x1f1cf2['attributes']=_[_0xeb74('0x34')](_0xa6baa0[_0xeb74('0x35')],qs['fields'](_0x2b4c15[_0xeb74('0x31')]['fields']));_0x1f1cf2[_0xeb74('0x36')]=_0x1f1cf2[_0xeb74('0x36')][_0xeb74('0x37')]?_0x1f1cf2[_0xeb74('0x36')]:_0xa6baa0[_0xeb74('0x35')];if(!_0x2b4c15['query'][_0xeb74('0x38')](_0xeb74('0x39'))){_0x1f1cf2[_0xeb74('0x1e')]=qs['limit'](_0x2b4c15['query'][_0xeb74('0x1e')]);_0x1f1cf2[_0xeb74('0x1c')]=qs[_0xeb74('0x1c')](_0x2b4c15[_0xeb74('0x31')][_0xeb74('0x1c')]);}_0x1f1cf2[_0xeb74('0x3a')]=qs[_0xeb74('0x3b')](_0x2b4c15[_0xeb74('0x31')][_0xeb74('0x3b')]);_0x1f1cf2[_0xeb74('0x3c')]=qs[_0xeb74('0x33')](_[_0xeb74('0x3d')](_0x2b4c15[_0xeb74('0x31')],_0xa6baa0[_0xeb74('0x33')]),_0x1baa85);if(_0x2b4c15['query'][_0xeb74('0x3e')]){_0x1f1cf2[_0xeb74('0x3c')]=_[_0xeb74('0x3f')](_0x1f1cf2[_0xeb74('0x3c')],{'$or':_[_0xeb74('0x2c')](_0x1baa85,function(_0x40d1d7){if(_0x40d1d7[_0xeb74('0x2f')]!==_0xeb74('0x40')){var _0x5af173={};_0x5af173[_0x40d1d7[_0xeb74('0x29')]]={'$like':'%'+_0x2b4c15[_0xeb74('0x31')][_0xeb74('0x3e')]+'%'};return _0x5af173;}})});}_0x1f1cf2=_['merge']({},_0x1f1cf2,_0x2b4c15[_0xeb74('0x41')]);var _0x5831b2={'where':_0x1f1cf2[_0xeb74('0x3c')]};return db[_0xeb74('0x2d')][_0xeb74('0x1f')](_0x5831b2)[_0xeb74('0x23')](function(_0x28cf61){_0x23d81c['count']=_0x28cf61;if(_0x2b4c15[_0xeb74('0x31')][_0xeb74('0x42')]){_0x1f1cf2[_0xeb74('0x43')]=[{'all':!![]}];}return db[_0xeb74('0x2d')][_0xeb74('0x44')](_0x1f1cf2);})[_0xeb74('0x23')](function(_0x152042){_0x23d81c['rows']=_0x152042;return _0x23d81c;})[_0xeb74('0x23')](respondWithFilteredResult(_0xc73055,_0x1f1cf2))[_0xeb74('0x45')](handleError(_0xc73055,null));};exports[_0xeb74('0x46')]=function(_0x9f35dd,_0x310802){var _0xc07899={'raw':!![],'where':{'id':_0x9f35dd['params']['id']}},_0x24be2e={};_0x24be2e[_0xeb74('0x35')]=_[_0xeb74('0x32')](db[_0xeb74('0x2d')][_0xeb74('0x2e')]);_0x24be2e[_0xeb74('0x31')]=_['keys'](_0x9f35dd['query']);_0x24be2e[_0xeb74('0x33')]=_[_0xeb74('0x34')](_0x24be2e[_0xeb74('0x35')],_0x24be2e[_0xeb74('0x31')]);_0xc07899[_0xeb74('0x36')]=_[_0xeb74('0x34')](_0x24be2e[_0xeb74('0x35')],qs[_0xeb74('0x47')](_0x9f35dd['query']['fields']));_0xc07899[_0xeb74('0x36')]=_0xc07899['attributes'][_0xeb74('0x37')]?_0xc07899[_0xeb74('0x36')]:_0x24be2e['model'];if(_0x9f35dd[_0xeb74('0x31')]['includeAll']){_0xc07899[_0xeb74('0x43')]=[{'all':!![]}];}_0xc07899=_[_0xeb74('0x3f')]({},_0xc07899,_0x9f35dd[_0xeb74('0x41')]);return db['JscriptySessionReport'][_0xeb74('0x48')](_0xc07899)[_0xeb74('0x23')](handleEntityNotFound(_0x310802,null))['then'](respondWithResult(_0x310802,null))[_0xeb74('0x45')](handleError(_0x310802,null));};exports['create']=function(_0x2fd615,_0x19c81c){return db[_0xeb74('0x2d')][_0xeb74('0x49')](_0x2fd615[_0xeb74('0x4a')],{})[_0xeb74('0x23')](respondWithResult(_0x19c81c,0xc9))[_0xeb74('0x45')](handleError(_0x19c81c,null));};exports[_0xeb74('0x4b')]=function(_0x5d4923,_0x460ee8){if(_0x5d4923['body']['id']){delete _0x5d4923[_0xeb74('0x4a')]['id'];}return db['JscriptySessionReport'][_0xeb74('0x48')]({'where':{'id':_0x5d4923[_0xeb74('0x4c')]['id']}})[_0xeb74('0x23')](handleEntityNotFound(_0x460ee8,null))[_0xeb74('0x23')](saveUpdates(_0x5d4923[_0xeb74('0x4a')],null))[_0xeb74('0x23')](respondWithResult(_0x460ee8,null))['catch'](handleError(_0x460ee8,null));};exports[_0xeb74('0x24')]=function(_0x5454b6,_0x4ee2fc){return db[_0xeb74('0x2d')][_0xeb74('0x48')]({'where':{'id':_0x5454b6[_0xeb74('0x4c')]['id']}})[_0xeb74('0x23')](handleEntityNotFound(_0x4ee2fc,null))[_0xeb74('0x23')](removeEntity(_0x4ee2fc,null))[_0xeb74('0x45')](handleError(_0x4ee2fc,null));};exports[_0xeb74('0x4d')]=function(_0x43c270,_0x1eba72){return db[_0xeb74('0x2d')][_0xeb74('0x4d')]()[_0xeb74('0x23')](respondWithResult(_0x1eba72,null))[_0xeb74('0x45')](handleError(_0x1eba72,null));};exports[_0xeb74('0x4e')]=function(_0x5ee3f3,_0x4fc509,_0x4ccdef){var _0x443dec={'raw':!![],'where':{}};var _0x42c21b={};var _0x23de7b={'count':0x0,'rows':[]};return db[_0xeb74('0x2d')]['findOne']({'where':{'id':_0x5ee3f3[_0xeb74('0x4c')]['id']}})['then'](handleEntityNotFound(_0x4fc509,null))[_0xeb74('0x23')](function(_0x1dd97e){if(_0x1dd97e){_0x42c21b[_0xeb74('0x35')]=_['keys'](db[_0xeb74('0x4f')][_0xeb74('0x2e')]);_0x42c21b[_0xeb74('0x31')]=_[_0xeb74('0x32')](_0x5ee3f3['query']);_0x42c21b[_0xeb74('0x33')]=_[_0xeb74('0x34')](_0x42c21b['model'],_0x42c21b[_0xeb74('0x31')]);_0x443dec[_0xeb74('0x36')]=_[_0xeb74('0x34')](_0x42c21b[_0xeb74('0x35')],qs[_0xeb74('0x47')](_0x5ee3f3[_0xeb74('0x31')][_0xeb74('0x47')]));_0x443dec['attributes']=_0x443dec['attributes'][_0xeb74('0x37')]?_0x443dec[_0xeb74('0x36')]:_0x42c21b[_0xeb74('0x35')];if(!_0x5ee3f3['query'][_0xeb74('0x38')](_0xeb74('0x39'))){_0x443dec[_0xeb74('0x1e')]=qs['limit'](_0x5ee3f3[_0xeb74('0x31')][_0xeb74('0x1e')]);_0x443dec[_0xeb74('0x1c')]=qs[_0xeb74('0x1c')](_0x5ee3f3[_0xeb74('0x31')][_0xeb74('0x1c')]);}_0x443dec[_0xeb74('0x3a')]=qs[_0xeb74('0x3b')](_0x5ee3f3[_0xeb74('0x31')][_0xeb74('0x3b')]);_0x443dec['where']=qs['filters'](_[_0xeb74('0x3d')](_0x5ee3f3[_0xeb74('0x31')],_0x42c21b['filters']));_0x443dec[_0xeb74('0x3c')][_0xeb74('0x50')]=_0x1dd97e['id'];if(_0x5ee3f3['query']['filter']){_0x443dec[_0xeb74('0x3c')]=_['merge'](_0x443dec[_0xeb74('0x3c')],{'$or':_[_0xeb74('0x2c')](_0x443dec[_0xeb74('0x36')],function(_0x9f5847){var _0x1f96d5={};_0x1f96d5[_0x9f5847]={'$like':'%'+_0x5ee3f3[_0xeb74('0x31')][_0xeb74('0x3e')]+'%'};return _0x1f96d5;})});}_0x443dec=_[_0xeb74('0x3f')]({},_0x443dec,_0x5ee3f3[_0xeb74('0x41')]);return db['JscriptyQuestionReport'][_0xeb74('0x1f')]({'where':_0x443dec[_0xeb74('0x3c')]})[_0xeb74('0x23')](function(_0x201f71){_0x23de7b['count']=_0x201f71;if(_0x5ee3f3['query'][_0xeb74('0x42')]){_0x443dec[_0xeb74('0x43')]=[{'all':!![]}];}return db['JscriptyQuestionReport']['findAll'](_0x443dec);})[_0xeb74('0x23')](function(_0x401fe3){_0x23de7b['rows']=_0x401fe3;return _0x23de7b;});}})[_0xeb74('0x23')](respondWithFilteredResult(_0x4fc509,_0x443dec))[_0xeb74('0x45')](handleError(_0x4fc509,null));};
\ No newline at end of file
index 4400849..7e31cd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x741c=['../../config/logger','api','moment','bluebird','rimraf','./jscriptySessionReport.attributes','exports','define','JscriptySessionReport','report_jscripty_sessions','lodash','util'];(function(_0x27206e,_0x33ae01){var _0x48a9f2=function(_0x258909){while(--_0x258909){_0x27206e['push'](_0x27206e['shift']());}};_0x48a9f2(++_0x33ae01);}(_0x741c,0x196));var _0xc741=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x741c[_0x42cae2];return _0x5f256f;};'use strict';var _=require(_0xc741('0x0'));var util=require(_0xc741('0x1'));var logger=require(_0xc741('0x2'))(_0xc741('0x3'));var moment=require(_0xc741('0x4'));var BPromise=require(_0xc741('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xc741('0x6'));var config=require('../../config/environment');var attributes=require(_0xc741('0x7'));module[_0xc741('0x8')]=function(_0x3708ae,_0x133bc4){return _0x3708ae[_0xc741('0x9')](_0xc741('0xa'),attributes,{'tableName':_0xc741('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb091=['moment','request-promise','../../config/environment','./jscriptySessionReport.attributes','define','report_jscripty_sessions','util','../../config/logger','api'];(function(_0x5a613b,_0x4b2515){var _0x2fd179=function(_0x48c0d8){while(--_0x48c0d8){_0x5a613b['push'](_0x5a613b['shift']());}};_0x2fd179(++_0x4b2515);}(_0xb091,0x16e));var _0x1b09=function(_0x4988e8,_0x58761a){_0x4988e8=_0x4988e8-0x0;var _0x4b17ea=_0xb091[_0x4988e8];return _0x4b17ea;};'use strict';var _=require('lodash');var util=require(_0x1b09('0x0'));var logger=require(_0x1b09('0x1'))(_0x1b09('0x2'));var moment=require(_0x1b09('0x3'));var BPromise=require('bluebird');var rp=require(_0x1b09('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x1b09('0x5'));var attributes=require(_0x1b09('0x6'));module['exports']=function(_0xda8caa,_0x5fa348){return _0xda8caa[_0x1b09('0x7')]('JscriptySessionReport',attributes,{'tableName':_0x1b09('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a145ff8..c0eab8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7096=['code','message','result','catch','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','JscriptySessionReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error'];(function(_0x593752,_0xfc3827){var _0x4612be=function(_0x2d64c6){while(--_0x2d64c6){_0x593752['push'](_0x593752['shift']());}};_0x4612be(++_0xfc3827);}(_0x7096,0x10c));var _0x6709=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0x7096[_0x1035c1];return _0x308d67;};'use strict';var _=require('lodash');var util=require(_0x6709('0x0'));var moment=require('moment');var BPromise=require(_0x6709('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6709('0x2'));var db=require(_0x6709('0x3'))['db'];var utils=require(_0x6709('0x4'));var logger=require(_0x6709('0x5'))(_0x6709('0x6'));var config=require(_0x6709('0x7'));var jayson=require(_0x6709('0x8'));var client=jayson[_0x6709('0x9')][_0x6709('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3e2223,_0x11ad23,_0x985814){return new BPromise(function(_0x30147f,_0x513ab6){return client['request'](_0x3e2223,_0x985814)[_0x6709('0xb')](function(_0x2d8c0b){logger[_0x6709('0xc')](_0x6709('0xd'),_0x11ad23,_0x6709('0xe'));logger[_0x6709('0xf')]('JscriptySessionReport,\x20%s,\x20%s,\x20%s',_0x11ad23,'request\x20sent',JSON[_0x6709('0x10')](_0x2d8c0b));if(_0x2d8c0b[_0x6709('0x11')]){if(_0x2d8c0b[_0x6709('0x11')][_0x6709('0x12')]===0x1f4){logger[_0x6709('0x11')](_0x6709('0xd'),_0x11ad23,_0x2d8c0b[_0x6709('0x11')][_0x6709('0x13')]);return _0x513ab6(_0x2d8c0b['error'][_0x6709('0x13')]);}logger[_0x6709('0x11')](_0x6709('0xd'),_0x11ad23,_0x2d8c0b[_0x6709('0x11')]['message']);return _0x30147f(_0x2d8c0b[_0x6709('0x11')]['message']);}else{logger[_0x6709('0xc')]('JscriptySessionReport,\x20%s,\x20%s',_0x11ad23,_0x6709('0xe'));_0x30147f(_0x2d8c0b[_0x6709('0x14')][_0x6709('0x13')]);}})[_0x6709('0x15')](function(_0x4cab30){logger['error']('JscriptySessionReport,\x20%s,\x20%s',_0x11ad23,_0x4cab30);_0x513ab6(_0x4cab30);});});}
\ No newline at end of file
+var _0xa6b0=['client','http','request','info','JscriptySessionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptySessionReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x128aae,_0x32427d){var _0x1f2a2e=function(_0x161054){while(--_0x161054){_0x128aae['push'](_0x128aae['shift']());}};_0x1f2a2e(++_0x32427d);}(_0xa6b0,0xaf));var _0x0a6b=function(_0x5b1384,_0x3d9019){_0x5b1384=_0x5b1384-0x0;var _0x40e880=_0xa6b0[_0x5b1384];return _0x40e880;};'use strict';var _=require(_0x0a6b('0x0'));var util=require(_0x0a6b('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x0a6b('0x2'));var fs=require('fs');var Redis=require(_0x0a6b('0x3'));var db=require(_0x0a6b('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x0a6b('0x5'))(_0x0a6b('0x6'));var config=require(_0x0a6b('0x7'));var jayson=require(_0x0a6b('0x8'));var client=jayson[_0x0a6b('0x9')][_0x0a6b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1b5fb5,_0xa908dd,_0x26f761){return new BPromise(function(_0x340a33,_0x8e89f){return client[_0x0a6b('0xb')](_0x1b5fb5,_0x26f761)['then'](function(_0x493948){logger[_0x0a6b('0xc')](_0x0a6b('0xd'),_0xa908dd,_0x0a6b('0xe'));logger[_0x0a6b('0xf')](_0x0a6b('0x10'),_0xa908dd,_0x0a6b('0xe'),JSON[_0x0a6b('0x11')](_0x493948));if(_0x493948[_0x0a6b('0x12')]){if(_0x493948[_0x0a6b('0x12')][_0x0a6b('0x13')]===0x1f4){logger[_0x0a6b('0x12')](_0x0a6b('0xd'),_0xa908dd,_0x493948[_0x0a6b('0x12')][_0x0a6b('0x14')]);return _0x8e89f(_0x493948['error']['message']);}logger[_0x0a6b('0x12')](_0x0a6b('0xd'),_0xa908dd,_0x493948[_0x0a6b('0x12')][_0x0a6b('0x14')]);return _0x340a33(_0x493948[_0x0a6b('0x12')][_0x0a6b('0x14')]);}else{logger[_0x0a6b('0xc')](_0x0a6b('0xd'),_0xa908dd,_0x0a6b('0xe'));_0x340a33(_0x493948[_0x0a6b('0x15')]['message']);}})[_0x0a6b('0x16')](function(_0x1538f4){logger['error'](_0x0a6b('0xd'),_0xa908dd,_0x1538f4);_0x8e89f(_0x1538f4);});});}
\ No newline at end of file
index b167003..82e10c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf632=['/:id','isAuthenticated','update','/download_log_file','downloadLogFile','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./license.controller','get','index','put'];(function(_0x119d5a,_0x19b457){var _0x15bff4=function(_0x1b7c78){while(--_0x1b7c78){_0x119d5a['push'](_0x119d5a['shift']());}};_0x15bff4(++_0x19b457);}(_0xf632,0xd2));var _0x2f63=function(_0x22c6b6,_0x4be83d){_0x22c6b6=_0x22c6b6-0x0;var _0x3fca16=_0xf632[_0x22c6b6];return _0x3fca16;};'use strict';var multer=require('multer');var util=require(_0x2f63('0x0'));var path=require(_0x2f63('0x1'));var timeout=require(_0x2f63('0x2'));var express=require(_0x2f63('0x3'));var router=express[_0x2f63('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x2f63('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x2f63('0x6'));var controller=require(_0x2f63('0x7'));router[_0x2f63('0x8')]('/',controller[_0x2f63('0x9')]);router[_0x2f63('0xa')](_0x2f63('0xb'),auth[_0x2f63('0xc')](),controller[_0x2f63('0xd')]);router[_0x2f63('0x8')](_0x2f63('0xe'),auth['isAuthenticated'](),controller[_0x2f63('0xf')]);module[_0x2f63('0x10')]=router;
\ No newline at end of file
+var _0xf837=['multer','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./license.controller','get','index','put','/:id','isAuthenticated','update','downloadLogFile','exports'];(function(_0x2889fb,_0x1471b1){var _0x1bab24=function(_0x54b8cd){while(--_0x54b8cd){_0x2889fb['push'](_0x2889fb['shift']());}};_0x1bab24(++_0x1471b1);}(_0xf837,0x1c2));var _0x7f83=function(_0x4c7cc9,_0x816b07){_0x4c7cc9=_0x4c7cc9-0x0;var _0x19560b=_0xf837[_0x4c7cc9];return _0x19560b;};'use strict';var multer=require(_0x7f83('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x7f83('0x1'));var router=express[_0x7f83('0x2')]();var fs_extra=require(_0x7f83('0x3'));var auth=require(_0x7f83('0x4'));var interaction=require(_0x7f83('0x5'));var config=require('../../config/environment');var controller=require(_0x7f83('0x6'));router[_0x7f83('0x7')]('/',controller[_0x7f83('0x8')]);router[_0x7f83('0x9')](_0x7f83('0xa'),auth[_0x7f83('0xb')](),controller[_0x7f83('0xc')]);router['get']('/download_log_file',auth[_0x7f83('0xb')](),controller[_0x7f83('0xd')]);module[_0x7f83('0xe')]=router;
\ No newline at end of file
index fa2b1f2..3967def 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa27b=['INTEGER','sequelize','exports','TEXT','STRING'];(function(_0x1bee9c,_0x326740){var _0x5f57f1=function(_0x2fb8e7){while(--_0x2fb8e7){_0x1bee9c['push'](_0x1bee9c['shift']());}};_0x5f57f1(++_0x326740);}(_0xa27b,0xce));var _0xba27=function(_0x2cde74,_0x55cf68){_0x2cde74=_0x2cde74-0x0;var _0x39ee49=_0xa27b[_0x2cde74];return _0x39ee49;};'use strict';var Sequelize=require(_0xba27('0x0'));module[_0xba27('0x1')]={'license':{'type':Sequelize[_0xba27('0x2')]},'data1':{'type':Sequelize[_0xba27('0x3')]},'data2':{'type':Sequelize['STRING']},'chatLicenseExceeded':{'type':Sequelize[_0xba27('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x5455=['sequelize','exports','STRING'];(function(_0xb650a3,_0x190cc6){var _0x4bf041=function(_0x3c9938){while(--_0x3c9938){_0xb650a3['push'](_0xb650a3['shift']());}};_0x4bf041(++_0x190cc6);}(_0x5455,0x7e));var _0x5545=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x5455[_0x3ab51d];return _0x29a04e;};'use strict';var Sequelize=require(_0x5545('0x0'));module[_0x5545('0x1')]={'license':{'type':Sequelize['TEXT']},'data1':{'type':Sequelize[_0x5545('0x2')]},'data2':{'type':Sequelize[_0x5545('0x2')]},'chatLicenseExceeded':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index ae97f17..536238b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb65e=['sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','error','name','send','../../config/license/util','index','License','rawAttributes','query','keys','filters','intersection','model','fields','attributes','length','merge','catch','body','find','params','get','checkLicense','demo','downloadLogFile','join','/var','log','setHeader','attachment;\x20filename=','set','Content-Type','download','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path'];(function(_0x42d6e,_0x11bd86){var _0x5a5b25=function(_0x4d1cb3){while(--_0x4d1cb3){_0x42d6e['push'](_0x42d6e['shift']());}};_0x5a5b25(++_0x11bd86);}(_0xb65e,0x15e));var _0xeb65=function(_0x34820f,_0x5cf381){_0x34820f=_0x34820f-0x0;var _0x1539c4=_0xb65e[_0x34820f];return _0x1539c4;};'use strict';var emlformat=require(_0xeb65('0x0'));var rimraf=require(_0xeb65('0x1'));var zipdir=require(_0xeb65('0x2'));var jsonpatch=require(_0xeb65('0x3'));var rp=require(_0xeb65('0x4'));var moment=require(_0xeb65('0x5'));var BPromise=require(_0xeb65('0x6'));var Mustache=require(_0xeb65('0x7'));var util=require(_0xeb65('0x8'));var path=require(_0xeb65('0x9'));var sox=require(_0xeb65('0xa'));var csv=require('to-csv');var ejs=require(_0xeb65('0xb'));var fs=require('fs');var fs_extra=require(_0xeb65('0xc'));var _=require(_0xeb65('0xd'));var squel=require('squel');var crypto=require(_0xeb65('0xe'));var jsforce=require(_0xeb65('0xf'));var deskjs=require(_0xeb65('0x10'));var toCsv=require(_0xeb65('0x11'));var querystring=require(_0xeb65('0x12'));var Papa=require(_0xeb65('0x13'));var Redis=require('ioredis');var authService=require(_0xeb65('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xeb65('0x15'));var hardwareService=require(_0xeb65('0x16'));var logger=require(_0xeb65('0x17'))('api');var utils=require('../../config/utils');var config=require(_0xeb65('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x277e4e,_0x4736c9){_0x4736c9=_0x4736c9||0xcc;return function(_0xac39c1){if(_0xac39c1){return _0x277e4e[_0xeb65('0x19')](_0x4736c9);}return _0x277e4e['status'](_0x4736c9)[_0xeb65('0x1a')]();};}function respondWithResult(_0xbbcc98,_0x2f0820){_0x2f0820=_0x2f0820||0xc8;return function(_0x11b150){if(_0x11b150){return _0xbbcc98[_0xeb65('0x1b')](_0x2f0820)[_0xeb65('0x1c')](_0x11b150);}};}function respondWithFilteredResult(_0x2e11fd,_0x3d32f){return function(_0x58949a){if(_0x58949a){var _0x13d4e5=typeof _0x3d32f[_0xeb65('0x1d')]===_0xeb65('0x1e')&&typeof _0x3d32f[_0xeb65('0x1f')]===_0xeb65('0x1e');var _0x35ebb2=_0x58949a['count'];var _0xa8ad63=_0x13d4e5?0x0:_0x3d32f[_0xeb65('0x1d')];var _0x5b0fc3=_0x13d4e5?_0x58949a[_0xeb65('0x20')]:_0x3d32f[_0xeb65('0x1d')]+_0x3d32f['limit'];var _0xc45c82;if(_0x5b0fc3>=_0x35ebb2){_0x5b0fc3=_0x35ebb2;_0xc45c82=0xc8;}else{_0xc45c82=0xce;}_0x2e11fd['status'](_0xc45c82);return _0x2e11fd['set'](_0xeb65('0x21'),_0xa8ad63+'-'+_0x5b0fc3+'/'+_0x35ebb2)[_0xeb65('0x1c')](_0x58949a);}return null;};}function patchUpdates(_0x555d60){return function(_0x7092ac){try{jsonpatch[_0xeb65('0x22')](_0x7092ac,_0x555d60,!![]);}catch(_0x227675){return BPromise[_0xeb65('0x23')](_0x227675);}return _0x7092ac[_0xeb65('0x24')]();};}function saveUpdates(_0x1bb4a4,_0x1e9e07){return function(_0x49446a){if(_0x49446a){return _0x49446a[_0xeb65('0x25')](_0x1bb4a4)[_0xeb65('0x26')](function(_0x3150d0){return _0x3150d0;});}return null;};}function removeEntity(_0xcb8f81,_0x524073){return function(_0x5959e0){if(_0x5959e0){return _0x5959e0[_0xeb65('0x27')]()['then'](function(){_0xcb8f81[_0xeb65('0x1b')](0xcc)[_0xeb65('0x1a')]();});}};}function handleEntityNotFound(_0x5c886d,_0x2e050c){return function(_0x163778){if(!_0x163778){_0x5c886d['sendStatus'](0x194);}return _0x163778;};}function handleError(_0x40bbb2,_0x16b3ed){_0x16b3ed=_0x16b3ed||0x1f4;return function(_0x1cefb2){logger[_0xeb65('0x28')](_0x1cefb2['stack']);if(_0x1cefb2[_0xeb65('0x29')]){delete _0x1cefb2[_0xeb65('0x29')];}_0x40bbb2[_0xeb65('0x1b')](_0x16b3ed)[_0xeb65('0x2a')](_0x1cefb2);};}var utilLicense=require(_0xeb65('0x2b'));exports[_0xeb65('0x2c')]=function(_0x1e1b35,_0x2041c9){var _0x586c9a={'raw':!![],'where':{'id':0x1}},_0x478f38={};_0x478f38['model']=_['keys'](db[_0xeb65('0x2d')][_0xeb65('0x2e')]);_0x478f38[_0xeb65('0x2f')]=_[_0xeb65('0x30')](_0x1e1b35[_0xeb65('0x2f')]);_0x478f38[_0xeb65('0x31')]=_[_0xeb65('0x32')](_0x478f38[_0xeb65('0x33')],_0x478f38[_0xeb65('0x2f')]);_0x586c9a['attributes']=_[_0xeb65('0x32')](_0x478f38[_0xeb65('0x33')],qs[_0xeb65('0x34')](_0x1e1b35[_0xeb65('0x2f')][_0xeb65('0x34')]));_0x586c9a[_0xeb65('0x35')]=_0x586c9a[_0xeb65('0x35')][_0xeb65('0x36')]?_0x586c9a['attributes']:_0x478f38[_0xeb65('0x33')];_0x586c9a=_[_0xeb65('0x37')]({},_0x586c9a,_0x1e1b35['options']);return utilLicense['getLicense'](_0x586c9a)['then'](respondWithResult(_0x2041c9,null))[_0xeb65('0x38')](handleError(_0x2041c9,null));};exports[_0xeb65('0x25')]=function(_0x1aa6f8,_0x41b55e){if(_0x1aa6f8[_0xeb65('0x39')]['id']){delete _0x1aa6f8['body']['id'];}return db[_0xeb65('0x2d')][_0xeb65('0x3a')]({'where':{'id':_0x1aa6f8[_0xeb65('0x3b')]['id']}})[_0xeb65('0x26')](handleEntityNotFound(_0x41b55e,null))[_0xeb65('0x26')](function(_0x2be7d8){var _0x579c2b=_0x2be7d8[_0xeb65('0x3c')]({'plain':!![]});return utilLicense[_0xeb65('0x3d')](_0x579c2b,_0x1aa6f8['body']['key']);})[_0xeb65('0x26')](function(_0x4148f1){if(!_0x4148f1[_0xeb65('0x3e')]){return saveUpdates(_0x1aa6f8[_0xeb65('0x39')],null);}return _0x4148f1;})[_0xeb65('0x26')](respondWithResult(_0x41b55e,null))['catch'](handleError(_0x41b55e,null));};exports[_0xeb65('0x3f')]=function(_0x30301b,_0xa40f53){var _0x46568a='license-info.log';var _0x4fbfa9=path[_0xeb65('0x40')](_0xeb65('0x41'),_0xeb65('0x42'),'xcally',_0x46568a);_0xa40f53[_0xeb65('0x43')]('Content-disposition',_0xeb65('0x44')+_0x46568a);_0xa40f53[_0xeb65('0x45')](_0xeb65('0x46'),'text/plain');_0xa40f53[_0xeb65('0x47')](_0x4fbfa9);};
\ No newline at end of file
+var _0xde8b=['util','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','undefined','limit','count','set','apply','save','then','error','stack','name','send','index','model','keys','query','intersection','attributes','fields','length','options','getLicense','catch','update','body','License','params','get','checkLicense','key','downloadLogFile','license-info.log','join','xcally','attachment;\x20filename=','Content-Type','text/plain','download','eml-format','rimraf','request-promise','bluebird','mustache'];(function(_0x578616,_0x3fdb48){var _0x4fe109=function(_0x326b42){while(--_0x326b42){_0x578616['push'](_0x578616['shift']());}};_0x4fe109(++_0x3fdb48);}(_0xde8b,0x140));var _0xbde8=function(_0x39c793,_0x8e253e){_0x39c793=_0x39c793-0x0;var _0x4e2769=_0xde8b[_0x39c793];return _0x4e2769;};'use strict';var emlformat=require(_0xbde8('0x0'));var rimraf=require(_0xbde8('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xbde8('0x2'));var moment=require('moment');var BPromise=require(_0xbde8('0x3'));var Mustache=require(_0xbde8('0x4'));var util=require(_0xbde8('0x5'));var path=require('path');var sox=require(_0xbde8('0x6'));var csv=require(_0xbde8('0x7'));var ejs=require(_0xbde8('0x8'));var fs=require('fs');var fs_extra=require(_0xbde8('0x9'));var _=require(_0xbde8('0xa'));var squel=require('squel');var crypto=require(_0xbde8('0xb'));var jsforce=require(_0xbde8('0xc'));var deskjs=require(_0xbde8('0xd'));var toCsv=require(_0xbde8('0x7'));var querystring=require('querystring');var Papa=require(_0xbde8('0xe'));var Redis=require(_0xbde8('0xf'));var authService=require(_0xbde8('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xbde8('0x11'));var hardwareService=require(_0xbde8('0x12'));var logger=require('../../config/logger')(_0xbde8('0x13'));var utils=require(_0xbde8('0x14'));var config=require(_0xbde8('0x15'));var licenseUtil=require(_0xbde8('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5e9fa1,_0xe716cd){_0xe716cd=_0xe716cd||0xcc;return function(_0x579ab7){if(_0x579ab7){return _0x5e9fa1[_0xbde8('0x17')](_0xe716cd);}return _0x5e9fa1['status'](_0xe716cd)[_0xbde8('0x18')]();};}function respondWithResult(_0x3d88f8,_0x4acc70){_0x4acc70=_0x4acc70||0xc8;return function(_0x31c374){if(_0x31c374){return _0x3d88f8[_0xbde8('0x19')](_0x4acc70)[_0xbde8('0x1a')](_0x31c374);}};}function respondWithFilteredResult(_0x1e2ec2,_0x3fe3a0){return function(_0x1e2d0d){if(_0x1e2d0d){var _0xa124a2=typeof _0x3fe3a0[_0xbde8('0x1b')]===_0xbde8('0x1c')&&typeof _0x3fe3a0[_0xbde8('0x1d')]===_0xbde8('0x1c');var _0x520134=_0x1e2d0d[_0xbde8('0x1e')];var _0x2a07d8=_0xa124a2?0x0:_0x3fe3a0['offset'];var _0x1f5074=_0xa124a2?_0x1e2d0d[_0xbde8('0x1e')]:_0x3fe3a0[_0xbde8('0x1b')]+_0x3fe3a0[_0xbde8('0x1d')];var _0x18f2ac;if(_0x1f5074>=_0x520134){_0x1f5074=_0x520134;_0x18f2ac=0xc8;}else{_0x18f2ac=0xce;}_0x1e2ec2[_0xbde8('0x19')](_0x18f2ac);return _0x1e2ec2[_0xbde8('0x1f')]('Content-Range',_0x2a07d8+'-'+_0x1f5074+'/'+_0x520134)['json'](_0x1e2d0d);}return null;};}function patchUpdates(_0x461772){return function(_0x3c6cad){try{jsonpatch[_0xbde8('0x20')](_0x3c6cad,_0x461772,!![]);}catch(_0x289a5c){return BPromise['reject'](_0x289a5c);}return _0x3c6cad[_0xbde8('0x21')]();};}function saveUpdates(_0x2d1e4a,_0x50b22f){return function(_0x3290e2){if(_0x3290e2){return _0x3290e2['update'](_0x2d1e4a)[_0xbde8('0x22')](function(_0xac0ab4){return _0xac0ab4;});}return null;};}function removeEntity(_0x115a7f,_0x3733eb){return function(_0x94cf8b){if(_0x94cf8b){return _0x94cf8b['destroy']()[_0xbde8('0x22')](function(){_0x115a7f[_0xbde8('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x292c42,_0x38b9fd){return function(_0x34f2ee){if(!_0x34f2ee){_0x292c42[_0xbde8('0x17')](0x194);}return _0x34f2ee;};}function handleError(_0x1ba7a2,_0x41ae60){_0x41ae60=_0x41ae60||0x1f4;return function(_0x22e055){logger[_0xbde8('0x23')](_0x22e055[_0xbde8('0x24')]);if(_0x22e055[_0xbde8('0x25')]){delete _0x22e055[_0xbde8('0x25')];}_0x1ba7a2['status'](_0x41ae60)[_0xbde8('0x26')](_0x22e055);};}var utilLicense=require(_0xbde8('0x16'));exports[_0xbde8('0x27')]=function(_0x307281,_0xd30713){var _0x1e9b6e={'raw':!![],'where':{'id':0x1}},_0x1b04d7={};_0x1b04d7[_0xbde8('0x28')]=_[_0xbde8('0x29')](db['License']['rawAttributes']);_0x1b04d7[_0xbde8('0x2a')]=_['keys'](_0x307281[_0xbde8('0x2a')]);_0x1b04d7['filters']=_[_0xbde8('0x2b')](_0x1b04d7[_0xbde8('0x28')],_0x1b04d7['query']);_0x1e9b6e[_0xbde8('0x2c')]=_[_0xbde8('0x2b')](_0x1b04d7[_0xbde8('0x28')],qs['fields'](_0x307281[_0xbde8('0x2a')][_0xbde8('0x2d')]));_0x1e9b6e['attributes']=_0x1e9b6e[_0xbde8('0x2c')][_0xbde8('0x2e')]?_0x1e9b6e[_0xbde8('0x2c')]:_0x1b04d7[_0xbde8('0x28')];_0x1e9b6e=_['merge']({},_0x1e9b6e,_0x307281[_0xbde8('0x2f')]);return utilLicense[_0xbde8('0x30')](_0x1e9b6e)[_0xbde8('0x22')](respondWithResult(_0xd30713,null))[_0xbde8('0x31')](handleError(_0xd30713,null));};exports[_0xbde8('0x32')]=function(_0x2b1518,_0x484977){if(_0x2b1518['body']['id']){delete _0x2b1518[_0xbde8('0x33')]['id'];}return db[_0xbde8('0x34')]['find']({'where':{'id':_0x2b1518[_0xbde8('0x35')]['id']}})[_0xbde8('0x22')](handleEntityNotFound(_0x484977,null))['then'](function(_0xe3e981){var _0x16981e=_0xe3e981[_0xbde8('0x36')]({'plain':!![]});return utilLicense[_0xbde8('0x37')](_0x16981e,_0x2b1518[_0xbde8('0x33')][_0xbde8('0x38')]);})['then'](function(_0x121d49){if(!_0x121d49['demo']){return saveUpdates(_0x2b1518['body'],null);}return _0x121d49;})[_0xbde8('0x22')](respondWithResult(_0x484977,null))[_0xbde8('0x31')](handleError(_0x484977,null));};exports[_0xbde8('0x39')]=function(_0x53a27e,_0x5d90c5){var _0x50f991=_0xbde8('0x3a');var _0x25462e=path[_0xbde8('0x3b')]('/var','log',_0xbde8('0x3c'),_0x50f991);_0x5d90c5['setHeader']('Content-disposition',_0xbde8('0x3d')+_0x50f991);_0x5d90c5['set'](_0xbde8('0x3e'),_0xbde8('0x3f'));_0x5d90c5[_0xbde8('0x40')](_0x25462e);};
\ No newline at end of file
index 43c5d28..be78d77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2815=['util','../../config/logger','api','moment','request-promise','path','../../config/environment','./license.attributes','exports','define','License','lodash'];(function(_0x33f96,_0x7ec9c6){var _0x130652=function(_0x6ff938){while(--_0x6ff938){_0x33f96['push'](_0x33f96['shift']());}};_0x130652(++_0x7ec9c6);}(_0x2815,0x17f));var _0x5281=function(_0x7c70fd,_0x17a993){_0x7c70fd=_0x7c70fd-0x0;var _0x8e75a6=_0x2815[_0x7c70fd];return _0x8e75a6;};'use strict';var _=require(_0x5281('0x0'));var util=require(_0x5281('0x1'));var logger=require(_0x5281('0x2'))(_0x5281('0x3'));var moment=require(_0x5281('0x4'));var BPromise=require('bluebird');var rp=require(_0x5281('0x5'));var fs=require('fs');var path=require(_0x5281('0x6'));var rimraf=require('rimraf');var config=require(_0x5281('0x7'));var attributes=require(_0x5281('0x8'));module[_0x5281('0x9')]=function(_0x28ecde,_0x1c89bf){return _0x28ecde[_0x5281('0xa')](_0x5281('0xb'),attributes,{'tableName':'license','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x204e=['path','rimraf','../../config/environment','exports','define','License','lodash','util','../../config/logger','api','bluebird','request-promise'];(function(_0x582d60,_0x1da061){var _0x1ce1f6=function(_0x435b9c){while(--_0x435b9c){_0x582d60['push'](_0x582d60['shift']());}};_0x1ce1f6(++_0x1da061);}(_0x204e,0x19e));var _0xe204=function(_0x591b79,_0x5dced5){_0x591b79=_0x591b79-0x0;var _0x3ed768=_0x204e[_0x591b79];return _0x3ed768;};'use strict';var _=require(_0xe204('0x0'));var util=require(_0xe204('0x1'));var logger=require(_0xe204('0x2'))(_0xe204('0x3'));var moment=require('moment');var BPromise=require(_0xe204('0x4'));var rp=require(_0xe204('0x5'));var fs=require('fs');var path=require(_0xe204('0x6'));var rimraf=require(_0xe204('0x7'));var config=require(_0xe204('0x8'));var attributes=require('./license.attributes');module[_0xe204('0x9')]=function(_0x5e4316,_0xcfa43f){return _0x5e4316[_0xe204('0xa')](_0xe204('0xb'),attributes,{'tableName':'license','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e9eb357..9d73afe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02ca=['randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','then','info','debug','License,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','License,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird'];(function(_0x34c20d,_0x3f602b){var _0xebb223=function(_0x1e6a79){while(--_0x1e6a79){_0x34c20d['push'](_0x34c20d['shift']());}};_0xebb223(++_0x3f602b);}(_0x02ca,0x194));var _0xa02c=function(_0x3b1d16,_0x13f7ff){_0x3b1d16=_0x3b1d16-0x0;var _0x3df7db=_0x02ca[_0x3b1d16];return _0x3df7db;};'use strict';var _=require(_0xa02c('0x0'));var util=require(_0xa02c('0x1'));var moment=require(_0xa02c('0x2'));var BPromise=require(_0xa02c('0x3'));var rs=require(_0xa02c('0x4'));var fs=require('fs');var Redis=require(_0xa02c('0x5'));var db=require(_0xa02c('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xa02c('0x7'))(_0xa02c('0x8'));var config=require('../../config/environment');var jayson=require(_0xa02c('0x9'));var client=jayson[_0xa02c('0xa')][_0xa02c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4bb1f9,_0x199e5b,_0x2db21f){return new BPromise(function(_0x2f6d4a,_0x275869){return client['request'](_0x4bb1f9,_0x2db21f)[_0xa02c('0xc')](function(_0x3ec84e){logger[_0xa02c('0xd')]('License,\x20%s,\x20%s',_0x199e5b,'request\x20sent');logger[_0xa02c('0xe')](_0xa02c('0xf'),_0x199e5b,_0xa02c('0x10'),JSON[_0xa02c('0x11')](_0x3ec84e));if(_0x3ec84e[_0xa02c('0x12')]){if(_0x3ec84e[_0xa02c('0x12')][_0xa02c('0x13')]===0x1f4){logger[_0xa02c('0x12')](_0xa02c('0x14'),_0x199e5b,_0x3ec84e[_0xa02c('0x12')][_0xa02c('0x15')]);return _0x275869(_0x3ec84e[_0xa02c('0x12')][_0xa02c('0x15')]);}logger['error'](_0xa02c('0x14'),_0x199e5b,_0x3ec84e['error'][_0xa02c('0x15')]);return _0x2f6d4a(_0x3ec84e[_0xa02c('0x12')][_0xa02c('0x15')]);}else{logger[_0xa02c('0xd')]('License,\x20%s,\x20%s',_0x199e5b,'request\x20sent');_0x2f6d4a(_0x3ec84e[_0xa02c('0x16')][_0xa02c('0x15')]);}})[_0xa02c('0x17')](function(_0x1b6ec7){logger[_0xa02c('0x12')](_0xa02c('0x14'),_0x199e5b,_0x1b6ec7);_0x275869(_0x1b6ec7);});});}
\ No newline at end of file
+var _0x51ff=['info','License,\x20%s,\x20%s','request\x20sent','debug','License,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then'];(function(_0x32e6fc,_0x8249f4){var _0x364f7c=function(_0x2bb4ee){while(--_0x2bb4ee){_0x32e6fc['push'](_0x32e6fc['shift']());}};_0x364f7c(++_0x8249f4);}(_0x51ff,0x1d5));var _0xf51f=function(_0x335923,_0x554711){_0x335923=_0x335923-0x0;var _0x53892b=_0x51ff[_0x335923];return _0x53892b;};'use strict';var _=require(_0xf51f('0x0'));var util=require(_0xf51f('0x1'));var moment=require(_0xf51f('0x2'));var BPromise=require(_0xf51f('0x3'));var rs=require(_0xf51f('0x4'));var fs=require('fs');var Redis=require(_0xf51f('0x5'));var db=require(_0xf51f('0x6'))['db'];var utils=require(_0xf51f('0x7'));var logger=require(_0xf51f('0x8'))(_0xf51f('0x9'));var config=require('../../config/environment');var jayson=require(_0xf51f('0xa'));var client=jayson[_0xf51f('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5d3eca,_0x321b51,_0x134798){return new BPromise(function(_0x2757c2,_0x2e5fb8){return client[_0xf51f('0xc')](_0x5d3eca,_0x134798)[_0xf51f('0xd')](function(_0x1c7888){logger[_0xf51f('0xe')](_0xf51f('0xf'),_0x321b51,_0xf51f('0x10'));logger[_0xf51f('0x11')](_0xf51f('0x12'),_0x321b51,_0xf51f('0x10'),JSON['stringify'](_0x1c7888));if(_0x1c7888['error']){if(_0x1c7888[_0xf51f('0x13')]['code']===0x1f4){logger[_0xf51f('0x13')](_0xf51f('0xf'),_0x321b51,_0x1c7888['error']['message']);return _0x2e5fb8(_0x1c7888[_0xf51f('0x13')][_0xf51f('0x14')]);}logger[_0xf51f('0x13')](_0xf51f('0xf'),_0x321b51,_0x1c7888[_0xf51f('0x13')][_0xf51f('0x14')]);return _0x2757c2(_0x1c7888[_0xf51f('0x13')][_0xf51f('0x14')]);}else{logger[_0xf51f('0xe')](_0xf51f('0xf'),_0x321b51,_0xf51f('0x10'));_0x2757c2(_0x1c7888[_0xf51f('0x15')][_0xf51f('0x14')]);}})[_0xf51f('0x16')](function(_0x5cf67c){logger[_0xf51f('0x13')](_0xf51f('0xf'),_0x321b51,_0x5cf67c);_0x2e5fb8(_0x5cf67c);});});}
\ No newline at end of file
index a283927..255beea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80e7=['getImap','getSmtp','/:id/interactions','getInteractions','getApplications','/:id/messages','getMessages','/:id/users','getAgents','post','addDisposition','addAnswer','create','addImap','/:id/out_servers','addSmtp','addInteraction','addApplications','/:id/send','addAgents','put','update','delete','removeAnswers','removeImap','removeSmtp','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','./mailAccount.controller','get','isAuthenticated','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','/:id/in_servers'];(function(_0x51d26e,_0x5bc3ae){var _0x10c10a=function(_0x21a675){while(--_0x21a675){_0x51d26e['push'](_0x51d26e['shift']());}};_0x10c10a(++_0x5bc3ae);}(_0x80e7,0x75));var _0x780e=function(_0x1b1cec,_0x529fe2){_0x1b1cec=_0x1b1cec-0x0;var _0x52c256=_0x80e7[_0x1b1cec];return _0x52c256;};'use strict';var multer=require(_0x780e('0x0'));var util=require(_0x780e('0x1'));var path=require(_0x780e('0x2'));var timeout=require(_0x780e('0x3'));var express=require(_0x780e('0x4'));var router=express[_0x780e('0x5')]();var fs_extra=require(_0x780e('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x780e('0x7'));router[_0x780e('0x8')]('/',auth[_0x780e('0x9')](),controller['index']);router[_0x780e('0x8')](_0x780e('0xa'),auth[_0x780e('0x9')](),controller[_0x780e('0xb')]);router[_0x780e('0x8')](_0x780e('0xc'),auth['isAuthenticated'](),controller[_0x780e('0xd')]);router[_0x780e('0x8')](_0x780e('0xe'),auth[_0x780e('0x9')](),controller[_0x780e('0xf')]);router[_0x780e('0x8')](_0x780e('0x10'),auth['isAuthenticated'](),controller['getAnswers']);router[_0x780e('0x8')](_0x780e('0x11'),auth[_0x780e('0x9')](),controller[_0x780e('0x12')]);router[_0x780e('0x8')]('/:id/out_servers',auth[_0x780e('0x9')](),controller[_0x780e('0x13')]);router[_0x780e('0x8')](_0x780e('0x14'),auth['isAuthenticated'](),controller[_0x780e('0x15')]);router[_0x780e('0x8')]('/:id/applications',auth[_0x780e('0x9')](),controller[_0x780e('0x16')]);router[_0x780e('0x8')](_0x780e('0x17'),auth['isAuthenticated'](),controller[_0x780e('0x18')]);router['get']('/:id/verify',auth[_0x780e('0x9')](),controller['verifySmtp']);router[_0x780e('0x8')](_0x780e('0x19'),auth[_0x780e('0x9')](),controller[_0x780e('0x1a')]);router[_0x780e('0x1b')](_0x780e('0xe'),auth['isAuthenticated'](),controller[_0x780e('0x1c')]);router[_0x780e('0x1b')](_0x780e('0x10'),auth['isAuthenticated'](),controller[_0x780e('0x1d')]);router[_0x780e('0x1b')]('/',auth[_0x780e('0x9')](),controller[_0x780e('0x1e')]);router['post'](_0x780e('0x11'),auth[_0x780e('0x9')](),controller[_0x780e('0x1f')]);router[_0x780e('0x1b')](_0x780e('0x20'),auth[_0x780e('0x9')](),controller[_0x780e('0x21')]);router[_0x780e('0x1b')](_0x780e('0x14'),auth['isAuthenticated'](),controller[_0x780e('0x22')]);router[_0x780e('0x1b')]('/:id/applications',auth[_0x780e('0x9')](),controller[_0x780e('0x23')]);router[_0x780e('0x1b')](_0x780e('0x24'),auth['isAuthenticated'](),controller['send']);router[_0x780e('0x1b')](_0x780e('0x19'),auth[_0x780e('0x9')](),controller[_0x780e('0x25')]);router[_0x780e('0x26')]('/:id',auth[_0x780e('0x9')](),controller[_0x780e('0x27')]);router[_0x780e('0x28')](_0x780e('0xe'),auth[_0x780e('0x9')](),controller['removeDispositions']);router[_0x780e('0x28')](_0x780e('0x10'),auth['isAuthenticated'](),controller[_0x780e('0x29')]);router[_0x780e('0x28')](_0x780e('0x11'),auth[_0x780e('0x9')](),controller[_0x780e('0x2a')]);router[_0x780e('0x28')](_0x780e('0x20'),auth[_0x780e('0x9')](),controller[_0x780e('0x2b')]);router['delete'](_0x780e('0xc'),auth['isAuthenticated'](),controller[_0x780e('0x2c')]);router['delete'](_0x780e('0x19'),auth[_0x780e('0x9')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
+var _0x8cbe=['../../components/auth/service','../../components/interaction/service','../../config/environment','./mailAccount.controller','get','isAuthenticated','index','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','getImap','/:id/out_servers','getSmtp','/:id/interactions','getInteractions','/:id/applications','getApplications','/:id/messages','/:id/verify','verifySmtp','/:id/users','addDisposition','post','addAnswer','create','/:id/in_servers','addImap','addInteraction','addApplications','/:id/send','addAgents','put','update','delete','removeDispositions','removeAnswers','removeImap','removeSmtp','removeAgents','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x2d28d9,_0x5488dc){var _0x11f240=function(_0x5fae97){while(--_0x5fae97){_0x2d28d9['push'](_0x2d28d9['shift']());}};_0x11f240(++_0x5488dc);}(_0x8cbe,0xc2));var _0xe8cb=function(_0x1b1432,_0x4672d6){_0x1b1432=_0x1b1432-0x0;var _0x1c41b7=_0x8cbe[_0x1b1432];return _0x1c41b7;};'use strict';var multer=require(_0xe8cb('0x0'));var util=require(_0xe8cb('0x1'));var path=require(_0xe8cb('0x2'));var timeout=require(_0xe8cb('0x3'));var express=require(_0xe8cb('0x4'));var router=express[_0xe8cb('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xe8cb('0x6'));var interaction=require(_0xe8cb('0x7'));var config=require(_0xe8cb('0x8'));var controller=require(_0xe8cb('0x9'));router[_0xe8cb('0xa')]('/',auth[_0xe8cb('0xb')](),controller[_0xe8cb('0xc')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0xe8cb('0xd')]);router[_0xe8cb('0xa')](_0xe8cb('0xe'),auth[_0xe8cb('0xb')](),controller[_0xe8cb('0xf')]);router[_0xe8cb('0xa')](_0xe8cb('0x10'),auth[_0xe8cb('0xb')](),controller[_0xe8cb('0x11')]);router['get'](_0xe8cb('0x12'),auth[_0xe8cb('0xb')](),controller[_0xe8cb('0x13')]);router[_0xe8cb('0xa')]('/:id/in_servers',auth[_0xe8cb('0xb')](),controller[_0xe8cb('0x14')]);router['get'](_0xe8cb('0x15'),auth['isAuthenticated'](),controller[_0xe8cb('0x16')]);router['get'](_0xe8cb('0x17'),auth[_0xe8cb('0xb')](),controller[_0xe8cb('0x18')]);router[_0xe8cb('0xa')](_0xe8cb('0x19'),auth[_0xe8cb('0xb')](),controller[_0xe8cb('0x1a')]);router['get'](_0xe8cb('0x1b'),auth['isAuthenticated'](),controller['getMessages']);router['get'](_0xe8cb('0x1c'),auth[_0xe8cb('0xb')](),controller[_0xe8cb('0x1d')]);router['get'](_0xe8cb('0x1e'),auth[_0xe8cb('0xb')](),controller['getAgents']);router['post'](_0xe8cb('0x10'),auth['isAuthenticated'](),controller[_0xe8cb('0x1f')]);router[_0xe8cb('0x20')](_0xe8cb('0x12'),auth['isAuthenticated'](),controller[_0xe8cb('0x21')]);router[_0xe8cb('0x20')]('/',auth[_0xe8cb('0xb')](),controller[_0xe8cb('0x22')]);router[_0xe8cb('0x20')](_0xe8cb('0x23'),auth[_0xe8cb('0xb')](),controller[_0xe8cb('0x24')]);router[_0xe8cb('0x20')]('/:id/out_servers',auth[_0xe8cb('0xb')](),controller['addSmtp']);router[_0xe8cb('0x20')](_0xe8cb('0x17'),auth['isAuthenticated'](),controller[_0xe8cb('0x25')]);router[_0xe8cb('0x20')]('/:id/applications',auth[_0xe8cb('0xb')](),controller[_0xe8cb('0x26')]);router['post'](_0xe8cb('0x27'),auth['isAuthenticated'](),controller['send']);router['post']('/:id/users',auth['isAuthenticated'](),controller[_0xe8cb('0x28')]);router[_0xe8cb('0x29')](_0xe8cb('0xe'),auth[_0xe8cb('0xb')](),controller[_0xe8cb('0x2a')]);router[_0xe8cb('0x2b')](_0xe8cb('0x10'),auth[_0xe8cb('0xb')](),controller[_0xe8cb('0x2c')]);router[_0xe8cb('0x2b')](_0xe8cb('0x12'),auth[_0xe8cb('0xb')](),controller[_0xe8cb('0x2d')]);router[_0xe8cb('0x2b')]('/:id/in_servers',auth[_0xe8cb('0xb')](),controller[_0xe8cb('0x2e')]);router['delete'](_0xe8cb('0x15'),auth[_0xe8cb('0xb')](),controller[_0xe8cb('0x2f')]);router[_0xe8cb('0x2b')](_0xe8cb('0xe'),auth['isAuthenticated'](),controller['destroy']);router[_0xe8cb('0x2b')](_0xe8cb('0x1e'),auth[_0xe8cb('0xb')](),controller[_0xe8cb('0x30')]);module[_0xe8cb('0x31')]=router;
\ No newline at end of file
index 488c52e..49253ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1452=['provider','custom','sequelize','STRING','BOOLEAN','TEXT','Arial,Helvetica,sans-serif','INTEGER','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','ENUM','gmail','getDataValue'];(function(_0x41e88d,_0x2e2d1b){var _0x5ce8e4=function(_0x18f474){while(--_0x18f474){_0x41e88d['push'](_0x41e88d['shift']());}};_0x5ce8e4(++_0x2e2d1b);}(_0x1452,0x162));var _0x2145=function(_0x528907,_0x5a5648){_0x528907=_0x528907-0x0;var _0x25dfd7=_0x1452[_0x528907];return _0x25dfd7;};'use strict';var Sequelize=require(_0x2145('0x0'));module['exports']={'description':{'type':Sequelize['STRING']},'name':{'type':Sequelize[_0x2145('0x1')],'allowNull':![]},'service':{'type':Sequelize[_0x2145('0x2')],'defaultValue':![]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0x2145('0x2')],'defaultValue':!![]},'key':{'type':Sequelize[_0x2145('0x1')],'allowNull':![]},'template':{'type':Sequelize[_0x2145('0x3')]},'markAsUnread':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0x2145('0x1')],'allowNull':![],'defaultValue':_0x2145('0x4')},'fontSize':{'type':Sequelize[_0x2145('0x5')](0x2)['UNSIGNED'],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0x2145('0x3')],'defaultValue':function(){return _0x2145('0x6');}},'notificationSound':{'type':Sequelize[_0x2145('0x2')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x2145('0x2')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x2145('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x2145('0x2')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x2145('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x2145('0x2')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x2145('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x2145('0x5')],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x2145('0x2')],'defaultValue':![],'comment':_0x2145('0x7'),'set':function(_0x1134d1){if(!_0x1134d1)this[_0x2145('0x8')](_0x2145('0x9'),null);this[_0x2145('0x8')](_0x2145('0xa'),_0x1134d1);}},'provider':{'type':Sequelize[_0x2145('0xb')](_0x2145('0xc'),'hotmail','yahoo','outlook365'),'defaultValue':null,'get':function(){if(!this[_0x2145('0xd')](_0x2145('0xe')))return _0x2145('0xf');return this[_0x2145('0xd')](_0x2145('0xe'));},'set':function(_0x27e772){if(_0x27e772===_0x2145('0xf'))_0x27e772=null;return this[_0x2145('0x8')](_0x2145('0xe'),_0x27e772);}}};
\ No newline at end of file
+var _0x50ea=['outlook365','provider','custom','getDataValue','sequelize','exports','BOOLEAN','STRING','TEXT','Arial,Helvetica,sans-serif','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','setDataValue','mandatoryDispositionPauseId','ENUM','gmail','hotmail'];(function(_0x2967c1,_0x202a72){var _0x103397=function(_0x14b5cc){while(--_0x14b5cc){_0x2967c1['push'](_0x2967c1['shift']());}};_0x103397(++_0x202a72);}(_0x50ea,0x89));var _0xa50e=function(_0x4a4f6e,_0x41dc09){_0x4a4f6e=_0x4a4f6e-0x0;var _0x1a69fc=_0x50ea[_0x4a4f6e];return _0x1a69fc;};'use strict';var Sequelize=require(_0xa50e('0x0'));module[_0xa50e('0x1')]={'description':{'type':Sequelize['STRING']},'name':{'type':Sequelize['STRING'],'allowNull':![]},'service':{'type':Sequelize[_0xa50e('0x2')],'defaultValue':![]},'email':{'type':Sequelize[_0xa50e('0x3')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0xa50e('0x2')],'defaultValue':!![]},'key':{'type':Sequelize[_0xa50e('0x3')],'allowNull':![]},'template':{'type':Sequelize[_0xa50e('0x4')]},'markAsUnread':{'type':Sequelize[_0xa50e('0x2')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0xa50e('0x3')],'allowNull':![],'defaultValue':_0xa50e('0x5')},'fontSize':{'type':Sequelize[_0xa50e('0x6')](0x2)[_0xa50e('0x7')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0xa50e('0x4')],'defaultValue':function(){return _0xa50e('0x8');}},'notificationSound':{'type':Sequelize[_0xa50e('0x2')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xa50e('0x2')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xa50e('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xa50e('0x2')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xa50e('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xa50e('0x2')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xa50e('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xa50e('0x6')],'allowNull':!![],'defaultValue':null,'comment':_0xa50e('0x9')},'mandatoryDisposition':{'type':Sequelize[_0xa50e('0x2')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x2f7dfc){if(!_0x2f7dfc)this[_0xa50e('0xa')](_0xa50e('0xb'),null);this[_0xa50e('0xa')]('mandatoryDisposition',_0x2f7dfc);}},'provider':{'type':Sequelize[_0xa50e('0xc')](_0xa50e('0xd'),_0xa50e('0xe'),'yahoo',_0xa50e('0xf')),'defaultValue':null,'get':function(){if(!this['getDataValue'](_0xa50e('0x10')))return _0xa50e('0x11');return this[_0xa50e('0x12')]('provider');},'set':function(_0x29c513){if(_0x29c513===_0xa50e('0x11'))_0x29c513=null;return this[_0xa50e('0xa')]('provider',_0x29c513);}}};
\ No newline at end of file
index df7b05c..0489197 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x022f=['limit','count','offset','set','Content-Range','update','destroy','get','MailAccounts','UserProfileResource','stack','name','send','imap.gmail.com','yahoo','imap.mail.yahoo.com','hotmail','imap-mail.outlook.com','outlook365','Unknown\x20email\x20service\x20provider','gmail','smtp.gmail.com','smtp-mail.outlook.com','smtp.office365.com','user','username','password','modernAuthentication','CloudProviderId','pass','port','secure','service','authentication','host','Imap','Smtp','index','MailServerIn','MailServerOut','Pause','MailAccount','rawAttributes','type','key','map','keys','filters','intersection','model','query','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','includeAll','findAll','rows','show','params','include','options','body','provider','custom','find','mandatoryDispositionPause','Mail\x20Account\x20not\x20found','describe','MailAccountId','Disposition','findOne','nolimit','removeDispositions','ids','addAnswer','create','getAnswers','CannedAnswer','removeAnswers','email','ListId','isNil','active','description','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','addImap','removeImap','getSmtp','addSmtp','removeSmtp','setSmtp','addInteraction','MailInteraction','omit','getInteractions','CmContact','User','fullname','internal','Tag','tag','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','MailApplication','bulkCreate','findAndCountAll','priority','finally','getApplications','getMessages','MailMessage','$gte','split','true','CmList','List','Contacts','updatedAt','CloudProvider','Smtp\x20configuration\x20not\x20found','from','format','attachments','join','root','basename','getSmtpOptions','SendMail','sendMail','List\x20not\x20found','messageId','out','YYYY-MM-DD\x20HH:mm:ss','Interaction','Messages','verifySmtp','Sequelize','ValidationError','addAgents','spread','removeAgents','isArray','emit','userMailAccount:remove','getAgents','moment','util','path','lodash','juice','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','defaults','redis','localhost','socket.io-emitter','./mailAccount.socket','register','jayson/promise','client','http','then','info','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','error','MailAccount,\x20%s,\x20%s','message','result','catch','sendStatus','status','end','json','undefined'];(function(_0x53af66,_0x3e93a0){var _0x52412e=function(_0x5541fb){while(--_0x5541fb){_0x53af66['push'](_0x53af66['shift']());}};_0x52412e(++_0x3e93a0);}(_0x022f,0x162));var _0xf022=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x022f[_0x20a584];return _0x4b41a8;};'use strict';var moment=require(_0xf022('0x0'));var BPromise=require('bluebird');var util=require(_0xf022('0x1'));var path=require(_0xf022('0x2'));var _=require(_0xf022('0x3'));var juice=require(_0xf022('0x4'));var Redis=require(_0xf022('0x5'));var qs=require(_0xf022('0x6'));var logger=require(_0xf022('0x7'))(_0xf022('0x8'));var config=require(_0xf022('0x9'));var db=require('../../mysqldb')['db'];config['redis']=_[_0xf022('0xa')](config[_0xf022('0xb')],{'host':_0xf022('0xc'),'port':0x18eb});var socket=require(_0xf022('0xd'))(new Redis(config['redis']));require(_0xf022('0xe'))[_0xf022('0xf')](socket);var jayson=require(_0xf022('0x10'));var client=jayson[_0xf022('0x11')][_0xf022('0x12')]({'port':0x232b});function respondWithRpcPromise(_0x4b8360,_0x48e9cd,_0x1d1ce6,_0x1c02eb){return new BPromise(function(_0x2d8cfe,_0x50ca6e){var _0x332616=_0x1c02eb||client;return _0x332616['request'](_0x4b8360,_0x1d1ce6)[_0xf022('0x13')](function(_0x518917){logger[_0xf022('0x14')]('MailAccount,\x20%s,\x20%s',_0x48e9cd,_0xf022('0x15'));logger[_0xf022('0x16')](_0xf022('0x17'),_0x48e9cd,'request\x20sent',JSON['stringify'](_0x518917));if(_0x518917['error']){if(_0x518917[_0xf022('0x18')]['code']===0x1f4){logger['error'](_0xf022('0x19'),_0x48e9cd,_0x518917[_0xf022('0x18')][_0xf022('0x1a')]);return _0x50ca6e(_0x518917['error'][_0xf022('0x1a')]);}logger[_0xf022('0x18')](_0xf022('0x19'),_0x48e9cd,_0x518917[_0xf022('0x18')]['message']);return _0x2d8cfe(_0x518917['error'][_0xf022('0x1a')]);}else{logger['info']('MailAccount,\x20%s,\x20%s',_0x48e9cd,'request\x20sent');_0x2d8cfe(_0x518917[_0xf022('0x1b')][_0xf022('0x1a')]);}})[_0xf022('0x1c')](function(_0x5b902f){logger['error'](_0xf022('0x19'),_0x48e9cd,_0x5b902f);_0x50ca6e(_0x5b902f);});});}function respondWithStatusCode(_0x434dc6,_0x336296){_0x336296=_0x336296||0xcc;return function(_0x188d62){if(_0x188d62){return _0x434dc6[_0xf022('0x1d')](_0x336296);}return _0x434dc6[_0xf022('0x1e')](_0x336296)[_0xf022('0x1f')]();};}function respondWithResult(_0x4cdd92,_0x451845){_0x451845=_0x451845||0xc8;return function(_0x41b25e){if(_0x41b25e){return _0x4cdd92['status'](_0x451845)[_0xf022('0x20')](_0x41b25e);}};}function respondWithFilteredResult(_0x3b6a48,_0x4027e1){return function(_0x4d04c9){if(_0x4d04c9){var _0x436506=typeof _0x4027e1['offset']===_0xf022('0x21')&&typeof _0x4027e1[_0xf022('0x22')]===_0xf022('0x21');var _0x23ea96=_0x4d04c9[_0xf022('0x23')];var _0x45153b=_0x436506?0x0:_0x4027e1[_0xf022('0x24')];var _0x5e3ec5=_0x436506?_0x4d04c9[_0xf022('0x23')]:_0x4027e1['offset']+_0x4027e1[_0xf022('0x22')];var _0xb92324;if(_0x5e3ec5>=_0x23ea96){_0x5e3ec5=_0x23ea96;_0xb92324=0xc8;}else{_0xb92324=0xce;}_0x3b6a48[_0xf022('0x1e')](_0xb92324);return _0x3b6a48[_0xf022('0x25')](_0xf022('0x26'),_0x45153b+'-'+_0x5e3ec5+'/'+_0x23ea96)[_0xf022('0x20')](_0x4d04c9);}return null;};}function saveUpdates(_0x1ab898){return function(_0x5e8fa4){if(_0x5e8fa4){return _0x5e8fa4[_0xf022('0x27')](_0x1ab898)['then'](function(_0x2fa2c9){return _0x2fa2c9;});}return null;};}function removeEntity(_0x26f59f){return function(_0x4193d2){if(_0x4193d2){return _0x4193d2[_0xf022('0x28')]()['then'](function(){var _0x4aa208=_0x4193d2[_0xf022('0x29')]({'plain':!![]});var _0x2e819a=_0xf022('0x2a');return db[_0xf022('0x2b')][_0xf022('0x28')]({'where':{'type':_0x2e819a,'resourceId':_0x4aa208['id']}})[_0xf022('0x13')](function(){return _0x4193d2;});})[_0xf022('0x13')](function(){_0x26f59f['status'](0xcc)[_0xf022('0x1f')]();});}};}function handleEntityNotFound(_0x3f8464){return function(_0x1246e7){if(!_0x1246e7){_0x3f8464[_0xf022('0x1d')](0x194);}return _0x1246e7;};}function handleError(_0x1114af,_0x217008){_0x217008=_0x217008||0x1f4;return function(_0x3ea6ad){logger[_0xf022('0x18')](_0x3ea6ad[_0xf022('0x2c')]);if(_0x3ea6ad[_0xf022('0x2d')]){delete _0x3ea6ad[_0xf022('0x2d')];}_0x1114af[_0xf022('0x1e')](_0x217008)[_0xf022('0x2e')](_0x3ea6ad);};}function getImapHost(_0x1bee8f){switch(_0x1bee8f){case'gmail':return _0xf022('0x2f');case _0xf022('0x30'):return _0xf022('0x31');case _0xf022('0x32'):return _0xf022('0x33');case _0xf022('0x34'):return'outlook.office365.com';}throw new Error(_0xf022('0x35'),_0x1bee8f);}function getSmtpHost(_0x1fc48f){switch(_0x1fc48f){case _0xf022('0x36'):return _0xf022('0x37');case _0xf022('0x30'):return'smtp.mail.yahoo.com';case _0xf022('0x32'):return _0xf022('0x38');case _0xf022('0x34'):return _0xf022('0x39');}throw new Error(_0xf022('0x35'),_0x1fc48f);}function getAuthenticationOptions(_0x1da833,_0x399d0c){var _0x575c37={};var _0xac704={};if(_0x1da833){_0x575c37[_0xf022('0x3a')]=_0xac704[_0xf022('0x3a')]=_0x399d0c[_0xf022('0x3b')];_0x575c37[_0xf022('0x3c')]=_0xac704['pass']=_0x399d0c[_0xf022('0x3c')];if(_0x399d0c[_0xf022('0x3d')]){_0x575c37['modernAuthentication']=_0xac704['modernAuthentication']=!![];_0x575c37['CloudProviderId']=_0xac704[_0xf022('0x3e')]=_0x399d0c[_0xf022('0x3e')];_0x575c37[_0xf022('0x3c')]=_0xac704[_0xf022('0x3f')]=null;}else{_0x575c37[_0xf022('0x3e')]=_0xac704[_0xf022('0x3e')]=null;}_0x575c37['host']=getImapHost(_0x1da833);_0x575c37[_0xf022('0x40')]=0x3e1;_0xac704['host']=getSmtpHost(_0x1da833);_0xac704[_0xf022('0x40')]=0x24b;_0xac704[_0xf022('0x41')]=![];_0x575c37['service']=_0xac704[_0xf022('0x42')]=null;}else{if(_0x399d0c['authentication']){_0x575c37[_0xf022('0x3a')]=_0xac704['user']=_0x399d0c[_0xf022('0x3b')];_0x575c37['password']=_0xac704['pass']=_0x399d0c['password'];}else{_0x575c37[_0xf022('0x43')]=_0xac704['authentication']=![];_0x575c37[_0xf022('0x3a')]=_0xac704['user']=null;_0x575c37['password']=_0xac704[_0xf022('0x3f')]=null;}_0x575c37[_0xf022('0x44')]=_0x399d0c[_0xf022('0x45')][_0xf022('0x44')];_0x575c37[_0xf022('0x40')]=_0x399d0c[_0xf022('0x45')][_0xf022('0x40')];_0xac704['host']=_0x399d0c['Smtp']['host'];_0xac704[_0xf022('0x40')]=_0x399d0c[_0xf022('0x46')][_0xf022('0x40')];}return{'Imap':_0x575c37,'Smtp':_0xac704};}exports[_0xf022('0x47')]=function(_0x2257cc,_0x45acb2){var _0x1e715b={'include':[{'model':db[_0xf022('0x48')],'as':_0xf022('0x45')},{'model':db[_0xf022('0x49')],'as':_0xf022('0x46')},{'model':db[_0xf022('0x4a')],'as':'mandatoryDispositionPause'}]},_0x3957a7={},_0x338410={'count':0x0,'rows':[]};var _0x5a1916=_['map'](db[_0xf022('0x4b')][_0xf022('0x4c')],function(_0x539d00){return{'name':_0x539d00['fieldName'],'type':_0x539d00[_0xf022('0x4d')][_0xf022('0x4e')]};});_0x3957a7['model']=_[_0xf022('0x4f')](_0x5a1916,_0xf022('0x2d'));_0x3957a7['query']=_[_0xf022('0x50')](_0x2257cc['query']);_0x3957a7[_0xf022('0x51')]=_[_0xf022('0x52')](_0x3957a7[_0xf022('0x53')],_0x3957a7[_0xf022('0x54')]);_0x1e715b['attributes']=_[_0xf022('0x52')](_0x3957a7[_0xf022('0x53')],qs[_0xf022('0x55')](_0x2257cc[_0xf022('0x54')][_0xf022('0x55')]));_0x1e715b['attributes']=_0x1e715b[_0xf022('0x56')][_0xf022('0x57')]?_0x1e715b['attributes']:_0x3957a7[_0xf022('0x53')];if(!_0x2257cc['query'][_0xf022('0x58')]('nolimit')){_0x1e715b['limit']=qs[_0xf022('0x22')](_0x2257cc[_0xf022('0x54')]['limit']);_0x1e715b[_0xf022('0x24')]=qs[_0xf022('0x24')](_0x2257cc[_0xf022('0x54')]['offset']);}_0x1e715b[_0xf022('0x59')]=qs[_0xf022('0x5a')](_0x2257cc['query'][_0xf022('0x5a')]);_0x1e715b[_0xf022('0x5b')]=qs[_0xf022('0x51')](_[_0xf022('0x5c')](_0x2257cc[_0xf022('0x54')],_0x3957a7['filters']),_0x5a1916);if(_0x2257cc[_0xf022('0x54')][_0xf022('0x5d')]){_0x1e715b[_0xf022('0x5b')]=_[_0xf022('0x5e')](_0x1e715b['where'],{'$or':_['map'](_0x5a1916,function(_0xe3c9c8){if(_0xe3c9c8[_0xf022('0x4d')]!=='VIRTUAL'){var _0x2c3605={};_0x2c3605[_0xe3c9c8[_0xf022('0x2d')]]={'$like':'%'+_0x2257cc['query']['filter']+'%'};return _0x2c3605;}})});}_0x1e715b=_[_0xf022('0x5e')]({},_0x1e715b,_0x2257cc['options']);var _0x1c0b3e={'where':_0x1e715b['where']};return db[_0xf022('0x4b')]['count'](_0x1c0b3e)[_0xf022('0x13')](function(_0x353c34){_0x338410[_0xf022('0x23')]=_0x353c34;if(_0x2257cc[_0xf022('0x54')][_0xf022('0x5f')]){_0x1e715b['include']=[{'all':!![]}];}return db[_0xf022('0x4b')][_0xf022('0x60')](_0x1e715b);})[_0xf022('0x13')](function(_0x44a00f){_0x338410[_0xf022('0x61')]=_0x44a00f;return _0x338410;})[_0xf022('0x13')](respondWithFilteredResult(_0x45acb2,_0x1e715b))[_0xf022('0x1c')](handleError(_0x45acb2,null));};exports[_0xf022('0x62')]=function(_0x8e3e31,_0x27b5fd){var _0x239484={'raw':![],'where':{'id':_0x8e3e31[_0xf022('0x63')]['id']},'include':[{'model':db[_0xf022('0x48')],'as':_0xf022('0x45')},{'model':db['MailServerOut'],'as':_0xf022('0x46')},{'model':db[_0xf022('0x4a')],'as':'mandatoryDispositionPause'}]},_0x5886e2={};_0x5886e2['model']=_[_0xf022('0x50')](db[_0xf022('0x4b')][_0xf022('0x4c')]);_0x5886e2['query']=_[_0xf022('0x50')](_0x8e3e31[_0xf022('0x54')]);_0x5886e2[_0xf022('0x51')]=_['intersection'](_0x5886e2[_0xf022('0x53')],_0x5886e2[_0xf022('0x54')]);_0x239484[_0xf022('0x56')]=_[_0xf022('0x52')](_0x5886e2[_0xf022('0x53')],qs[_0xf022('0x55')](_0x8e3e31[_0xf022('0x54')]['fields']));_0x239484['attributes']=_0x239484[_0xf022('0x56')]['length']?_0x239484[_0xf022('0x56')]:_0x5886e2[_0xf022('0x53')];if(_0x8e3e31[_0xf022('0x54')][_0xf022('0x5f')]){_0x239484[_0xf022('0x64')]=[{'all':!![]}];}_0x239484=_[_0xf022('0x5e')]({},_0x239484,_0x8e3e31[_0xf022('0x65')]);return db[_0xf022('0x4b')]['find'](_0x239484)[_0xf022('0x13')](handleEntityNotFound(_0x27b5fd,null))[_0xf022('0x13')](respondWithResult(_0x27b5fd,null))[_0xf022('0x1c')](handleError(_0x27b5fd,null));};exports[_0xf022('0x27')]=function(_0x1ae22f,_0x3f4a74){if(_0x1ae22f[_0xf022('0x66')]['id']){delete _0x1ae22f[_0xf022('0x66')]['id'];}var _0x1915c5=_0x1ae22f[_0xf022('0x66')][_0xf022('0x67')]===_0xf022('0x68')?null:_0x1ae22f[_0xf022('0x66')][_0xf022('0x67')];var _0x38f985=_0x1ae22f[_0xf022('0x66')][_0xf022('0x45')]||{};var _0x45a6b0=_0x1ae22f[_0xf022('0x66')][_0xf022('0x46')]||{};if(_0x1915c5){_0x38f985['host']=getImapHost(_0x1915c5);_0x38f985['port']=0x3e1;_0x45a6b0[_0xf022('0x44')]=getSmtpHost(_0x1915c5);_0x45a6b0[_0xf022('0x40')]=0x24b;_0x45a6b0[_0xf022('0x41')]=![];}if(_0x45a6b0[_0xf022('0x3d')]){_0x45a6b0['secure']=![];}else{_0x45a6b0[_0xf022('0x3e')]=null;}if(!_0x38f985[_0xf022('0x3d')])_0x38f985[_0xf022('0x3e')]=null;_0x1ae22f[_0xf022('0x66')][_0xf022('0x45')]=_0x38f985;_0x1ae22f[_0xf022('0x66')]['Smtp']=_0x45a6b0;return db[_0xf022('0x4b')][_0xf022('0x69')]({'where':{'id':_0x1ae22f[_0xf022('0x63')]['id']},'include':[{'model':db[_0xf022('0x48')],'as':_0xf022('0x45')},{'model':db[_0xf022('0x49')],'as':_0xf022('0x46')},{'model':db[_0xf022('0x4a')],'as':_0xf022('0x6a')}]})[_0xf022('0x13')](handleEntityNotFound(_0x3f4a74,null))[_0xf022('0x13')](function(_0x2adc5a){if(!_0x2adc5a)throw new Error(_0xf022('0x6b'));if(_0x2adc5a[_0xf022('0x42')])delete _0x1ae22f['body'][_0xf022('0x45')];return _0x2adc5a;})[_0xf022('0x13')](saveUpdates(_0x1ae22f['body'],null))[_0xf022('0x13')](function(_0x357897){if(!_0x1ae22f['body'][_0xf022('0x45')])return _0x357897;return db[_0xf022('0x48')][_0xf022('0x27')](_0x1ae22f[_0xf022('0x66')][_0xf022('0x45')],{'where':{'MailAccountId':_0x357897['id']}})[_0xf022('0x13')](function(){return _0x357897;});})[_0xf022('0x13')](function(_0x2520d4){if(!_0x1ae22f['body'][_0xf022('0x46')])return _0x2520d4;return db[_0xf022('0x49')]['update'](_0x1ae22f[_0xf022('0x66')][_0xf022('0x46')],{'where':{'MailAccountId':_0x2520d4['id']}})[_0xf022('0x13')](function(){return _0x2520d4;});})[_0xf022('0x13')](respondWithResult(_0x3f4a74,null))[_0xf022('0x1c')](handleError(_0x3f4a74,null));};exports['describe']=function(_0x3d21b7,_0x3371fd){return db[_0xf022('0x4b')][_0xf022('0x6c')]()['then'](respondWithResult(_0x3371fd,null))[_0xf022('0x1c')](handleError(_0x3371fd,null));};exports['addDisposition']=function(_0x2fe256,_0x10fd16){if(_0x2fe256[_0xf022('0x66')]['id']){delete _0x2fe256[_0xf022('0x66')]['id'];}return db[_0xf022('0x4b')]['find']({'where':{'id':_0x2fe256[_0xf022('0x63')]['id']}})[_0xf022('0x13')](handleEntityNotFound(_0x10fd16,null))[_0xf022('0x13')](function(_0x34e8eb){if(_0x34e8eb){_0x2fe256[_0xf022('0x66')][_0xf022('0x6d')]=_0x34e8eb['id'];return db[_0xf022('0x6e')]['create'](_0x2fe256[_0xf022('0x66')]);}})['then'](respondWithResult(_0x10fd16,null))[_0xf022('0x1c')](handleError(_0x10fd16,null));};exports['getDispositions']=function(_0xea878b,_0x2218aa){var _0xc2f1f8={'raw':![],'where':{}};var _0x2f216c={};var _0x1fd04d={'count':0x0,'rows':[]};return db[_0xf022('0x4b')][_0xf022('0x6f')]({'where':{'id':_0xea878b[_0xf022('0x63')]['id']}})[_0xf022('0x13')](handleEntityNotFound(_0x2218aa,null))[_0xf022('0x13')](function(_0x5c61f0){if(_0x5c61f0){_0x2f216c[_0xf022('0x53')]=_[_0xf022('0x50')](db[_0xf022('0x6e')]['rawAttributes']);_0x2f216c[_0xf022('0x54')]=_[_0xf022('0x50')](_0xea878b[_0xf022('0x54')]);_0x2f216c[_0xf022('0x51')]=_['intersection'](_0x2f216c['model'],_0x2f216c['query']);_0xc2f1f8[_0xf022('0x56')]=_[_0xf022('0x52')](_0x2f216c['model'],qs['fields'](_0xea878b['query'][_0xf022('0x55')]));_0xc2f1f8[_0xf022('0x56')]=_0xc2f1f8['attributes'][_0xf022('0x57')]?_0xc2f1f8[_0xf022('0x56')]:_0x2f216c[_0xf022('0x53')];if(!_0xea878b[_0xf022('0x54')][_0xf022('0x58')](_0xf022('0x70'))){_0xc2f1f8[_0xf022('0x22')]=qs[_0xf022('0x22')](_0xea878b[_0xf022('0x54')][_0xf022('0x22')]);_0xc2f1f8[_0xf022('0x24')]=qs[_0xf022('0x24')](_0xea878b['query']['offset']);}_0xc2f1f8[_0xf022('0x59')]=qs[_0xf022('0x5a')](_0xea878b['query'][_0xf022('0x5a')]);_0xc2f1f8[_0xf022('0x5b')]=qs['filters'](_[_0xf022('0x5c')](_0xea878b[_0xf022('0x54')],_0x2f216c[_0xf022('0x51')]));_0xc2f1f8[_0xf022('0x5b')]['MailAccountId']=_0x5c61f0['id'];if(_0xea878b[_0xf022('0x54')][_0xf022('0x5d')]){_0xc2f1f8[_0xf022('0x5b')]=_[_0xf022('0x5e')](_0xc2f1f8[_0xf022('0x5b')],{'$or':_[_0xf022('0x4f')](_0xc2f1f8[_0xf022('0x56')],function(_0x378d0c){var _0x42cccc={};_0x42cccc[_0x378d0c]={'$like':'%'+_0xea878b[_0xf022('0x54')][_0xf022('0x5d')]+'%'};return _0x42cccc;})});}_0xc2f1f8=_[_0xf022('0x5e')]({},_0xc2f1f8,_0xea878b[_0xf022('0x65')]);return db[_0xf022('0x6e')][_0xf022('0x23')]({'where':_0xc2f1f8[_0xf022('0x5b')]})[_0xf022('0x13')](function(_0x428792){_0x1fd04d[_0xf022('0x23')]=_0x428792;if(_0xea878b[_0xf022('0x54')][_0xf022('0x5f')]){_0xc2f1f8[_0xf022('0x64')]=[{'all':!![]}];}return db[_0xf022('0x6e')][_0xf022('0x60')](_0xc2f1f8);})[_0xf022('0x13')](function(_0x21197c){_0x1fd04d[_0xf022('0x61')]=_0x21197c;return _0x1fd04d;});}})['then'](respondWithFilteredResult(_0x2218aa,_0xc2f1f8))[_0xf022('0x1c')](handleError(_0x2218aa,null));};exports['removeDispositions']=function(_0xf88699,_0x511177){return db[_0xf022('0x4b')][_0xf022('0x69')]({'where':{'id':_0xf88699[_0xf022('0x63')]['id']}})[_0xf022('0x13')](handleEntityNotFound(_0x511177,null))[_0xf022('0x13')](function(_0x15bd6f){if(_0x15bd6f){return _0x15bd6f[_0xf022('0x71')](_0xf88699[_0xf022('0x54')][_0xf022('0x72')]);}})['then'](respondWithStatusCode(_0x511177,null))[_0xf022('0x1c')](handleError(_0x511177,null));};exports[_0xf022('0x73')]=function(_0x4fe733,_0x56ab53){if(_0x4fe733[_0xf022('0x66')]['id']){delete _0x4fe733[_0xf022('0x66')]['id'];}return db['MailAccount'][_0xf022('0x69')]({'where':{'id':_0x4fe733[_0xf022('0x63')]['id']}})[_0xf022('0x13')](handleEntityNotFound(_0x56ab53,null))['then'](function(_0x1a2e8c){if(_0x1a2e8c){_0x4fe733[_0xf022('0x66')][_0xf022('0x6d')]=_0x1a2e8c['id'];return db['CannedAnswer'][_0xf022('0x74')](_0x4fe733[_0xf022('0x66')]);}})[_0xf022('0x13')](respondWithResult(_0x56ab53,null))[_0xf022('0x1c')](handleError(_0x56ab53,null));};exports[_0xf022('0x75')]=function(_0x422d32,_0x3f7c29){var _0x1fd0fd={'raw':![],'where':{}};var _0x1b6f56={};var _0x560aee={'count':0x0,'rows':[]};return db[_0xf022('0x4b')]['findOne']({'where':{'id':_0x422d32[_0xf022('0x63')]['id']}})[_0xf022('0x13')](handleEntityNotFound(_0x3f7c29,null))[_0xf022('0x13')](function(_0x10d925){if(_0x10d925){_0x1b6f56[_0xf022('0x53')]=_[_0xf022('0x50')](db[_0xf022('0x76')][_0xf022('0x4c')]);_0x1b6f56['query']=_[_0xf022('0x50')](_0x422d32[_0xf022('0x54')]);_0x1b6f56[_0xf022('0x51')]=_[_0xf022('0x52')](_0x1b6f56[_0xf022('0x53')],_0x1b6f56[_0xf022('0x54')]);_0x1fd0fd[_0xf022('0x56')]=_[_0xf022('0x52')](_0x1b6f56[_0xf022('0x53')],qs['fields'](_0x422d32[_0xf022('0x54')][_0xf022('0x55')]));_0x1fd0fd[_0xf022('0x56')]=_0x1fd0fd[_0xf022('0x56')]['length']?_0x1fd0fd[_0xf022('0x56')]:_0x1b6f56['model'];if(!_0x422d32['query'][_0xf022('0x58')](_0xf022('0x70'))){_0x1fd0fd['limit']=qs['limit'](_0x422d32['query'][_0xf022('0x22')]);_0x1fd0fd['offset']=qs['offset'](_0x422d32[_0xf022('0x54')][_0xf022('0x24')]);}_0x1fd0fd[_0xf022('0x59')]=qs[_0xf022('0x5a')](_0x422d32[_0xf022('0x54')]['sort']);_0x1fd0fd['where']=qs[_0xf022('0x51')](_[_0xf022('0x5c')](_0x422d32[_0xf022('0x54')],_0x1b6f56['filters']));_0x1fd0fd['where'][_0xf022('0x6d')]=_0x10d925['id'];if(_0x422d32['query'][_0xf022('0x5d')]){_0x1fd0fd[_0xf022('0x5b')]=_[_0xf022('0x5e')](_0x1fd0fd[_0xf022('0x5b')],{'$or':_['map'](_0x1fd0fd[_0xf022('0x56')],function(_0x4a4842){var _0x4a429c={};_0x4a429c[_0x4a4842]={'$like':'%'+_0x422d32[_0xf022('0x54')][_0xf022('0x5d')]+'%'};return _0x4a429c;})});}_0x1fd0fd=_[_0xf022('0x5e')]({},_0x1fd0fd,_0x422d32[_0xf022('0x65')]);return db[_0xf022('0x76')][_0xf022('0x23')]({'where':_0x1fd0fd['where']})['then'](function(_0x4414b4){_0x560aee['count']=_0x4414b4;if(_0x422d32[_0xf022('0x54')][_0xf022('0x5f')]){_0x1fd0fd[_0xf022('0x64')]=[{'all':!![]}];}return db[_0xf022('0x76')][_0xf022('0x60')](_0x1fd0fd);})['then'](function(_0x51bf19){_0x560aee['rows']=_0x51bf19;return _0x560aee;});}})[_0xf022('0x13')](respondWithFilteredResult(_0x3f7c29,_0x1fd0fd))[_0xf022('0x1c')](handleError(_0x3f7c29,null));};exports[_0xf022('0x77')]=function(_0x4e54cf,_0x5839f0){return db[_0xf022('0x4b')]['find']({'where':{'id':_0x4e54cf[_0xf022('0x63')]['id']}})['then'](handleEntityNotFound(_0x5839f0,null))['then'](function(_0x1189c9){if(_0x1189c9){return _0x1189c9[_0xf022('0x77')](_0x4e54cf[_0xf022('0x54')][_0xf022('0x72')]);}})[_0xf022('0x13')](respondWithStatusCode(_0x5839f0,null))[_0xf022('0x1c')](handleError(_0x5839f0,null));};exports['create']=function(_0x259617,_0x1cd738){var _0xd70ba7={'name':_0x259617[_0xf022('0x66')][_0xf022('0x2d')],'key':_0x259617[_0xf022('0x66')][_0xf022('0x4e')],'provider':_0x259617[_0xf022('0x66')][_0xf022('0x67')]===_0xf022('0x68')?null:_0x259617[_0xf022('0x66')]['provider'],'email':_0x259617[_0xf022('0x66')][_0xf022('0x78')],'ListId':_0x259617[_0xf022('0x66')][_0xf022('0x79')],'active':!_[_0xf022('0x7a')](_0x259617[_0xf022('0x66')][_0xf022('0x7b')])?_0x259617[_0xf022('0x66')]['active']:!![],'description':_0x259617[_0xf022('0x66')][_0xf022('0x7c')]||null};var _0x2ffcde=getAuthenticationOptions(_0xd70ba7['provider'],_0x259617[_0xf022('0x66')]);_0xd70ba7['Imap']=_0x2ffcde['Imap'];_0xd70ba7[_0xf022('0x46')]=_0x2ffcde[_0xf022('0x46')];return db[_0xf022('0x4b')][_0xf022('0x74')](_0xd70ba7,{'include':[{'model':db[_0xf022('0x49')],'as':_0xf022('0x46')},{'model':db[_0xf022('0x48')],'as':'Imap'}]})[_0xf022('0x13')](function(_0x4cc6ba){var _0x57e4e7=_0x259617[_0xf022('0x3a')][_0xf022('0x29')]({'plain':!![]});if(!_0x57e4e7)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x57e4e7[_0xf022('0x7d')]==='user'){var _0x435ed4=_0x4cc6ba['get']({'plain':!![]});return db[_0xf022('0x7e')]['find']({'where':{'name':_0xf022('0x2a'),'userProfileId':_0x57e4e7[_0xf022('0x7f')]},'raw':!![]})[_0xf022('0x13')](function(_0x2cc979){if(_0x2cc979&&_0x2cc979['autoAssociation']===0x0){return db[_0xf022('0x2b')][_0xf022('0x74')]({'name':_0x435ed4[_0xf022('0x2d')],'resourceId':_0x435ed4['id'],'type':_0x2cc979[_0xf022('0x2d')],'sectionId':_0x2cc979['id']},{})[_0xf022('0x13')](function(){return _0x4cc6ba;});}else{return _0x4cc6ba;}})[_0xf022('0x1c')](function(_0x1f5952){logger[_0xf022('0x18')](_0xf022('0x80'),_0x1f5952);throw _0x1f5952;});}return _0x4cc6ba;})['then'](respondWithResult(_0x1cd738,0xc9))[_0xf022('0x1c')](handleError(_0x1cd738,null));};exports['getImap']=function(_0x20bcb6,_0xb0a363){return db[_0xf022('0x4b')][_0xf022('0x6f')]({'where':{'id':_0x20bcb6[_0xf022('0x63')]['id']}})['then'](handleEntityNotFound(_0xb0a363,null))[_0xf022('0x13')](function(_0xcd7a8d){if(_0xcd7a8d){return _0xcd7a8d[_0xf022('0x81')]();}return null;})[_0xf022('0x13')](respondWithResult(_0xb0a363,null))[_0xf022('0x1c')](handleError(_0xb0a363,null));};exports[_0xf022('0x82')]=function(_0x50e05a,_0x553c26){if(_0x50e05a[_0xf022('0x66')]['id']){delete _0x50e05a[_0xf022('0x66')]['id'];}return db[_0xf022('0x4b')]['find']({'where':{'id':_0x50e05a[_0xf022('0x63')]['id']}})[_0xf022('0x13')](handleEntityNotFound(_0x553c26,null))[_0xf022('0x13')](function(_0x2ec738){if(_0x2ec738){_0x50e05a[_0xf022('0x66')][_0xf022('0x6d')]=_0x2ec738['id'];return db[_0xf022('0x48')][_0xf022('0x74')](_0x50e05a[_0xf022('0x66')]);}})[_0xf022('0x13')](respondWithResult(_0x553c26,null))[_0xf022('0x1c')](handleError(_0x553c26,null));};exports[_0xf022('0x83')]=function(_0x26e9a7,_0x297244){return db['MailAccount'][_0xf022('0x6f')]({'where':{'id':_0x26e9a7[_0xf022('0x63')]['id']}})[_0xf022('0x13')](handleEntityNotFound(_0x297244,null))[_0xf022('0x13')](function(_0x1ee32b){if(_0x1ee32b){return _0x1ee32b['setImap'](null);}return null;})['then'](respondWithStatusCode(_0x297244,null))[_0xf022('0x1c')](handleError(_0x297244,null));};exports[_0xf022('0x84')]=function(_0x16002b,_0x7c2bb4){return db[_0xf022('0x4b')][_0xf022('0x6f')]({'where':{'id':_0x16002b[_0xf022('0x63')]['id']}})[_0xf022('0x13')](handleEntityNotFound(_0x7c2bb4,null))[_0xf022('0x13')](function(_0x4cb07a){if(_0x4cb07a){return _0x4cb07a[_0xf022('0x84')]();}return null;})['then'](respondWithResult(_0x7c2bb4,null))[_0xf022('0x1c')](handleError(_0x7c2bb4,null));};exports[_0xf022('0x85')]=function(_0x5b0fd6,_0x270da7){if(_0x5b0fd6[_0xf022('0x66')]['id']){delete _0x5b0fd6[_0xf022('0x66')]['id'];}return db[_0xf022('0x4b')][_0xf022('0x69')]({'where':{'id':_0x5b0fd6[_0xf022('0x63')]['id']}})[_0xf022('0x13')](handleEntityNotFound(_0x270da7,null))[_0xf022('0x13')](function(_0x45a48e){if(_0x45a48e){_0x5b0fd6[_0xf022('0x66')][_0xf022('0x6d')]=_0x45a48e['id'];return db[_0xf022('0x49')][_0xf022('0x74')](_0x5b0fd6[_0xf022('0x66')]);}})['then'](respondWithResult(_0x270da7,null))['catch'](handleError(_0x270da7,null));};exports[_0xf022('0x86')]=function(_0x10e014,_0x2f5e14){return db[_0xf022('0x4b')][_0xf022('0x6f')]({'where':{'id':_0x10e014[_0xf022('0x63')]['id']}})[_0xf022('0x13')](handleEntityNotFound(_0x2f5e14,null))['then'](function(_0x92474){if(_0x92474){return _0x92474[_0xf022('0x87')](null);}return null;})['then'](respondWithStatusCode(_0x2f5e14,null))[_0xf022('0x1c')](handleError(_0x2f5e14,null));};exports[_0xf022('0x88')]=function(_0x3f9bbb,_0x16c3df){return db[_0xf022('0x89')]['find']({'where':{'id':_0x3f9bbb['params']['id']}})[_0xf022('0x13')](handleEntityNotFound(_0x16c3df,null))[_0xf022('0x13')](function(_0x2cf3d1){if(_0x2cf3d1){return _0x2cf3d1['addInteraction'](_0x3f9bbb[_0xf022('0x66')]['ids'],_[_0xf022('0x8a')](_0x3f9bbb['body'],[_0xf022('0x72'),'id'])||{});}})[_0xf022('0x13')](respondWithResult(_0x16c3df,null))[_0xf022('0x1c')](handleError(_0x16c3df,null));};exports[_0xf022('0x8b')]=function(_0x446b7c,_0x3cc1a6){var _0x4d5e02={'raw':![],'where':{}};var _0x535d0a={};var _0x492985={'count':0x0,'rows':[]};return db[_0xf022('0x4b')][_0xf022('0x6f')]({'where':{'id':_0x446b7c[_0xf022('0x63')]['id']}})[_0xf022('0x13')](handleEntityNotFound(_0x3cc1a6,null))[_0xf022('0x13')](function(_0x1c0b3d){if(_0x1c0b3d){_0x535d0a[_0xf022('0x53')]=_[_0xf022('0x50')](db[_0xf022('0x89')][_0xf022('0x4c')]);_0x535d0a[_0xf022('0x54')]=_[_0xf022('0x50')](_0x446b7c[_0xf022('0x54')]);_0x535d0a['filters']=_['intersection'](_0x535d0a[_0xf022('0x53')],_0x535d0a[_0xf022('0x54')]);_0x4d5e02[_0xf022('0x56')]=_[_0xf022('0x52')](_0x535d0a[_0xf022('0x53')],qs[_0xf022('0x55')](_0x446b7c['query'][_0xf022('0x55')]));_0x4d5e02['attributes']=_0x4d5e02[_0xf022('0x56')]['length']?_0x4d5e02[_0xf022('0x56')]:_0x535d0a['model'];if(!_0x446b7c[_0xf022('0x54')][_0xf022('0x58')](_0xf022('0x70'))){_0x4d5e02['limit']=qs[_0xf022('0x22')](_0x446b7c['query']['limit']);_0x4d5e02['offset']=qs[_0xf022('0x24')](_0x446b7c[_0xf022('0x54')]['offset']);}_0x4d5e02[_0xf022('0x59')]=qs[_0xf022('0x5a')](_0x446b7c[_0xf022('0x54')][_0xf022('0x5a')]);_0x4d5e02['where']=qs[_0xf022('0x51')](_[_0xf022('0x5c')](_0x446b7c[_0xf022('0x54')],_0x535d0a[_0xf022('0x51')]));_0x4d5e02['where'][_0xf022('0x6d')]=_0x1c0b3d['id'];if(_0x446b7c[_0xf022('0x54')]['filter']){_0x4d5e02[_0xf022('0x5b')]=_['merge'](_0x4d5e02[_0xf022('0x5b')],{'$or':_['map'](_0x4d5e02[_0xf022('0x56')],function(_0x1561a9){var _0x2a6f93={};_0x2a6f93[_0x1561a9]={'$like':'%'+_0x446b7c[_0xf022('0x54')][_0xf022('0x5d')]+'%'};return _0x2a6f93;})});}_0x4d5e02=_[_0xf022('0x5e')]({},_0x4d5e02,_0x446b7c[_0xf022('0x65')]);return db[_0xf022('0x89')][_0xf022('0x23')]({'where':_0x4d5e02[_0xf022('0x5b')]})[_0xf022('0x13')](function(_0x27a083){_0x492985[_0xf022('0x23')]=_0x27a083;if(_0x446b7c[_0xf022('0x54')]['includeAll']){_0x4d5e02['include']=[{'model':db[_0xf022('0x8c')],'as':'Contact','required':![]},{'model':db[_0xf022('0x8d')],'as':'Owner','attributes':[_0xf022('0x2d'),_0xf022('0x8e'),_0xf022('0x8f')],'required':![]},{'model':db[_0xf022('0x90')],'as':'Tags','attributes':['id',_0xf022('0x2d'),'color'],'where':_0x446b7c[_0xf022('0x54')][_0xf022('0x91')]?{'id':_0x446b7c['query'][_0xf022('0x91')]}:undefined,'required':_0x446b7c['query'][_0xf022('0x91')]?!![]:![]}];}return db[_0xf022('0x89')][_0xf022('0x60')](_0x4d5e02);})[_0xf022('0x13')](function(_0x249ac4){_0x492985[_0xf022('0x61')]=_0x249ac4;return _0x492985;});}})[_0xf022('0x13')](respondWithFilteredResult(_0x3cc1a6,_0x4d5e02))[_0xf022('0x1c')](handleError(_0x3cc1a6,null));};exports[_0xf022('0x92')]=function addApplications(_0x40a5a2,_0x5c9f9f){var _0x15b58a=_0x40a5a2[_0xf022('0x63')]['id'];var _0x374275=_0x40a5a2[_0xf022('0x66')];var _0x2fad82=0xc8;var _0x115ccf=null;return db[_0xf022('0x93')][_0xf022('0x94')]({'isolationLevel':db[_0xf022('0x93')][_0xf022('0x95')][_0xf022('0x96')][_0xf022('0x97')]},function(_0x5304ec){return db[_0xf022('0x4b')]['findOne']({'where':{'id':_0x15b58a},'transaction':_0x5304ec})['then'](function(_0x669e51){if(_0x669e51){return db[_0xf022('0x98')]['destroy']({'where':{'MailAccountId':_0x15b58a},'transaction':_0x5304ec})[_0xf022('0x13')](function(){var _0x2c56d8=_[_0xf022('0x4f')](_0x374275,function(_0x867cf7){_0x867cf7[_0xf022('0x6d')]=_0x15b58a;return _0x867cf7;});return db[_0xf022('0x98')][_0xf022('0x99')](_0x2c56d8,{'transaction':_0x5304ec});});}else{_0x2fad82=0x194;_0x115ccf=[];}});})[_0xf022('0x13')](function(){if(_0x2fad82!==0x194){return db[_0xf022('0x98')][_0xf022('0x9a')]({'where':{'MailAccountId':_0x15b58a},'order':_0xf022('0x9b')})[_0xf022('0x13')](function(_0x1f83e2){_0x115ccf=_0x1f83e2;});}})[_0xf022('0x1c')](function(_0x53c328){_0x2fad82=0x1f4;logger['error'](_0x53c328[_0xf022('0x2c')]);if(_0x53c328[_0xf022('0x2d')]){delete _0x53c328['name'];}_0x115ccf=_0x53c328;})[_0xf022('0x9c')](function(){if(_0x115ccf===null){_0x5c9f9f['sendStatus'](_0x2fad82);}else{if(_0x2fad82===0x1f4){_0x5c9f9f[_0xf022('0x1e')](_0x2fad82)['send'](_0x115ccf);}else{_0x5c9f9f['status'](_0x2fad82)[_0xf022('0x20')](_0x115ccf);}}});};exports[_0xf022('0x9d')]=function(_0x3dfa83,_0x5c40cd){var _0x363b39={};var _0x11f492={};var _0x552c13;var _0x2d04bc;return db[_0xf022('0x4b')][_0xf022('0x6f')]({'where':{'id':_0x3dfa83['params']['id']}})[_0xf022('0x13')](handleEntityNotFound(_0x5c40cd,null))[_0xf022('0x13')](function(_0x1a25c5){if(_0x1a25c5){_0x552c13=_0x1a25c5;_0x11f492[_0xf022('0x53')]=_['keys'](db[_0xf022('0x98')]['rawAttributes']);_0x11f492[_0xf022('0x54')]=_['keys'](_0x3dfa83[_0xf022('0x54')]);_0x11f492[_0xf022('0x51')]=_['intersection'](_0x11f492[_0xf022('0x53')],_0x11f492[_0xf022('0x54')]);_0x363b39[_0xf022('0x56')]=_[_0xf022('0x52')](_0x11f492['model'],qs['fields'](_0x3dfa83[_0xf022('0x54')][_0xf022('0x55')]));_0x363b39['attributes']=_0x363b39[_0xf022('0x56')][_0xf022('0x57')]?_0x363b39[_0xf022('0x56')]:_0x11f492[_0xf022('0x53')];_0x363b39[_0xf022('0x59')]=qs[_0xf022('0x5a')](_0x3dfa83[_0xf022('0x54')][_0xf022('0x5a')]);_0x363b39[_0xf022('0x5b')]=qs[_0xf022('0x51')](_[_0xf022('0x5c')](_0x3dfa83[_0xf022('0x54')],_0x11f492[_0xf022('0x51')]));if(_0x3dfa83[_0xf022('0x54')][_0xf022('0x5d')]){_0x363b39[_0xf022('0x5b')]=_[_0xf022('0x5e')](_0x363b39[_0xf022('0x5b')],{'$or':_[_0xf022('0x4f')](_0x363b39['attributes'],function(_0x5b5936){var _0x2339c3={};_0x2339c3[_0x5b5936]={'$like':'%'+_0x3dfa83[_0xf022('0x54')]['filter']+'%'};return _0x2339c3;})});}_0x363b39=_[_0xf022('0x5e')]({},_0x363b39,_0x3dfa83['options']);return _0x552c13[_0xf022('0x9d')](_0x363b39);}})[_0xf022('0x13')](function(_0x45c4b2){if(_0x45c4b2){_0x2d04bc=_0x45c4b2[_0xf022('0x57')];if(!_0x3dfa83[_0xf022('0x54')][_0xf022('0x58')]('nolimit')){_0x363b39[_0xf022('0x22')]=qs['limit'](_0x3dfa83['query']['limit']);_0x363b39['offset']=qs[_0xf022('0x24')](_0x3dfa83['query'][_0xf022('0x24')]);}return _0x552c13['getApplications'](_0x363b39);}})[_0xf022('0x13')](function(_0x2d27ae){if(_0x2d27ae){return _0x2d27ae?{'count':_0x2d04bc,'rows':_0x2d27ae}:null;}})['then'](respondWithResult(_0x5c40cd,null))[_0xf022('0x1c')](handleError(_0x5c40cd,null));};exports[_0xf022('0x9e')]=function(_0x54f3c4,_0x346067){var _0xbccc1d={'raw':!![],'where':{}};var _0x56b139={};var _0x4cd9f9={'count':0x0,'rows':[]};return db[_0xf022('0x4b')][_0xf022('0x6f')]({'where':{'id':_0x54f3c4[_0xf022('0x63')]['id']}})[_0xf022('0x13')](handleEntityNotFound(_0x346067,null))[_0xf022('0x13')](function(_0x1393bc){if(_0x1393bc){_0x56b139[_0xf022('0x53')]=_[_0xf022('0x50')](db[_0xf022('0x9f')][_0xf022('0x4c')]);_0x56b139[_0xf022('0x54')]=_[_0xf022('0x50')](_0x54f3c4['query']);_0x56b139[_0xf022('0x51')]=_['intersection'](_0x56b139[_0xf022('0x53')],_0x56b139['query']);_0xbccc1d['attributes']=_[_0xf022('0x52')](_0x56b139['model'],qs['fields'](_0x54f3c4[_0xf022('0x54')][_0xf022('0x55')]));_0xbccc1d['attributes']=_0xbccc1d['attributes']['length']?_0xbccc1d['attributes']:_0x56b139['model'];if(!_0x54f3c4['query'][_0xf022('0x58')]('nolimit')){_0xbccc1d[_0xf022('0x22')]=qs[_0xf022('0x22')](_0x54f3c4['query'][_0xf022('0x22')]);_0xbccc1d['offset']=qs[_0xf022('0x24')](_0x54f3c4[_0xf022('0x54')][_0xf022('0x24')]);}_0xbccc1d[_0xf022('0x59')]=qs['sort'](_0x54f3c4['query']['sort']);_0xbccc1d[_0xf022('0x5b')]=qs['filters'](_[_0xf022('0x5c')](_0x54f3c4[_0xf022('0x54')],_0x56b139[_0xf022('0x51')]));_0xbccc1d[_0xf022('0x5b')]['MailAccountId']=_0x1393bc['id'];if(_0x54f3c4[_0xf022('0x54')]['filter']){_0xbccc1d['where']=_[_0xf022('0x5e')](_0xbccc1d[_0xf022('0x5b')],{'$or':_[_0xf022('0x4f')](_0xbccc1d[_0xf022('0x56')],function(_0x1ff840){var _0x37c7d0={};_0x37c7d0[_0x1ff840]={'$like':'%'+_0x54f3c4[_0xf022('0x54')][_0xf022('0x5d')]+'%'};return _0x37c7d0;})});}if(_0x54f3c4[_0xf022('0x54')]['$gte']){var _0x20281e=_0x54f3c4[_0xf022('0x54')][_0xf022('0xa0')][_0xf022('0xa1')](',');var _0x26363f={};_0x26363f[_0x20281e[0x0]]={'$gte':moment(_0x20281e[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0xbccc1d[_0xf022('0x5b')]=_[_0xf022('0x5e')](_0xbccc1d[_0xf022('0x5b')],_0x26363f);}_0xbccc1d=_[_0xf022('0x5e')]({},_0xbccc1d,_0x54f3c4[_0xf022('0x65')]);return db['MailMessage'][_0xf022('0x23')]({'where':_0xbccc1d[_0xf022('0x5b')]})[_0xf022('0x13')](function(_0x34185d){_0x4cd9f9[_0xf022('0x23')]=_0x34185d;if(_0x54f3c4[_0xf022('0x54')][_0xf022('0x5f')]){_0xbccc1d[_0xf022('0x64')]=[{'all':!![]}];}return db['MailMessage']['findAll'](_0xbccc1d);})[_0xf022('0x13')](function(_0x18013e){if(_0x54f3c4[_0xf022('0x54')]['inlineCss']===_0xf022('0xa2')){for(var _0x435c35=0x0;_0x435c35<_0x18013e[_0xf022('0x57')];_0x435c35++){_0x18013e[_0x435c35]['body']=juice(_0x18013e[_0x435c35][_0xf022('0x66')]);}}_0x4cd9f9['rows']=_0x18013e;return _0x4cd9f9;});}})[_0xf022('0x13')](respondWithFilteredResult(_0x346067,_0xbccc1d))['catch'](handleError(_0x346067,null));};exports[_0xf022('0x2e')]=function(_0x4cd263,_0x566751){var _0x64275e,_0x4223f6={},_0x357e87;if(_0x4cd263['body']['to']){_0x357e87=_0x4cd263['body']['to'][_0xf022('0xa1')](',')[0x0];}return db['MailAccount'][_0xf022('0x69')]({'where':{'id':_0x4cd263[_0xf022('0x63')]['id']},'include':[{'model':db[_0xf022('0xa3')],'as':_0xf022('0xa4'),'include':[{'model':db[_0xf022('0x8c')],'as':_0xf022('0xa5'),'where':{'email':_0x357e87},'limit':0x1,'order':[[_0xf022('0xa6'),'DESC']]}]},{'model':db[_0xf022('0x49')],'as':_0xf022('0x46'),'raw':!![],'include':[{'model':db['CloudProvider'],'as':_0xf022('0xa7'),'raw':!![]}]}]})[_0xf022('0x13')](handleEntityNotFound(_0x566751,null))[_0xf022('0x13')](function(_0x3377b9){if(!_0x3377b9)return;_0x64275e=_0x3377b9;if(!_0x3377b9[_0xf022('0x46')])throw new Error(_0xf022('0xa8'));if(_['isNil'](_0x4cd263[_0xf022('0x66')][_0xf022('0xa9')])){_0x4cd263['body'][_0xf022('0xa9')]=util[_0xf022('0xaa')]('%s\x20<%s>',_0x3377b9[_0xf022('0x2d')],_0x3377b9[_0xf022('0x78')]||_0x3377b9[_0xf022('0x46')][_0xf022('0x3a')]);}if(_0x4cd263[_0xf022('0x66')]['attachments']&&_0x4cd263[_0xf022('0x66')][_0xf022('0xab')][_0xf022('0x57')]){for(var _0x1eafe2=0x0;_0x1eafe2<_0x4cd263[_0xf022('0x66')][_0xf022('0xab')][_0xf022('0x57')];_0x1eafe2+=0x1){_0x4cd263[_0xf022('0x66')]['attachments'][_0x1eafe2]={'filename':_0x4cd263[_0xf022('0x66')][_0xf022('0xab')][_0x1eafe2]['name'],'path':path[_0xf022('0xac')](config[_0xf022('0xad')],'server/files/attachments',_0x4cd263[_0xf022('0x66')][_0xf022('0xab')][_0x1eafe2][_0xf022('0xae')])};}}var _0xde6860=_0x3377b9[_0xf022('0xaf')]();return respondWithRpcPromise(_0xf022('0xb0'),_0xf022('0xb1'),{'account':_0xde6860,'message':_0x4cd263[_0xf022('0x66')]});})['then'](function(_0x16df90){if(!_0x16df90)return;_0x4223f6=_0x16df90;if(!_0x64275e[_0xf022('0xa4')])throw new Error(_0xf022('0xb2'));if(_0x64275e[_0xf022('0xa4')]['Contacts'][_0xf022('0x57')])return _0x64275e[_0xf022('0xa4')]['Contacts'][0x0];return db[_0xf022('0x8c')][_0xf022('0x74')](_[_0xf022('0xa')](_0x4cd263[_0xf022('0x66')],{'firstName':_0x4cd263['body']['to'],'email':_0x4cd263[_0xf022('0x66')]['to'],'phone':_0x4cd263[_0xf022('0x66')]['to'],'ListId':_0x64275e[_0xf022('0x79')]}));})['then'](function(_0x557e89){if(!_0x557e89)return;var _0x28bd6e={'UserId':_0x4cd263['user']['id'],'ContactId':_0x557e89['id'],'MailAccountId':_0x64275e['id'],'inReplyTo':_0x4223f6[_0xf022('0xb3')],'to':_0x4cd263[_0xf022('0x66')][_0xf022('0xa9')],'cc':_0x4cd263[_0xf022('0x66')]['cc'],'subject':_0x4cd263[_0xf022('0x66')]['subject'],'attach':_0x4cd263[_0xf022('0x66')]['attach'],'firstMsgDirection':_0xf022('0xb4'),'lastMsgAt':moment()[_0xf022('0xaa')](_0xf022('0xb5')),'lastMsgDirection':_0xf022('0xb4'),'Messages':[_[_0xf022('0x5e')](_0x4cd263[_0xf022('0x66')],{'messageId':_0x4223f6['messageId'],'sentAt':moment()['format'](_0xf022('0xb5')),'read':!![],'MailAccountId':_0x64275e['id'],'UserId':_0x4cd263[_0xf022('0x3a')]['id'],'ContactId':_0x557e89['id']})]};if(_0x4cd263[_0xf022('0x66')]['Interaction']){_0x28bd6e=_[_0xf022('0x5e')](_0x28bd6e,_0x4cd263[_0xf022('0x66')][_0xf022('0xb6')]);}return db['MailInteraction'][_0xf022('0x74')](_0x28bd6e,{'include':[{'model':db['MailMessage'],'as':_0xf022('0xb7')}]});})[_0xf022('0x13')](respondWithResult(_0x566751,null))[_0xf022('0x1c')](handleError(_0x566751,null));};exports[_0xf022('0xb8')]=function(_0x5662b5,_0x384e19){return db['MailAccount'][_0xf022('0x69')]({'where':{'id':_0x5662b5[_0xf022('0x63')]['id']},'include':[{'model':db[_0xf022('0x49')],'as':_0xf022('0x46'),'raw':!![],'include':[{'model':db['CloudProvider'],'as':_0xf022('0xa7'),'raw':!![]}]}]})[_0xf022('0x13')](handleEntityNotFound(_0x384e19,null))[_0xf022('0x13')](function(_0x5666d5){if(!_0x5666d5[_0xf022('0x46')])return;var _0x4624ff=_0x5666d5[_0xf022('0xaf')]();return respondWithRpcPromise('VerifySmtp',_0xf022('0xb8'),{'account':_0x4624ff});})['then'](respondWithResult(_0x384e19,null))[_0xf022('0x1c')](handleError(_0x384e19,null));};exports[_0xf022('0x28')]=function(_0x2b2c29,_0x4c66b9){return db['MailAccount']['find']({'where':{'id':_0x2b2c29[_0xf022('0x63')]['id']}})[_0xf022('0x13')](handleEntityNotFound(_0x4c66b9,null))[_0xf022('0x13')](function(_0x5674de){if(_0x5674de&&_0x5674de[_0xf022('0x42')]){throw new db[(_0xf022('0xb9'))][(_0xf022('0xba'))]('You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account');}return _0x5674de;})[_0xf022('0x13')](removeEntity(_0x4c66b9,null))[_0xf022('0x1c')](handleError(_0x4c66b9,null));};exports[_0xf022('0xbb')]=function(_0x2651a1,_0x4868bc){return db[_0xf022('0x4b')][_0xf022('0x69')]({'where':{'id':_0x2651a1['params']['id']}})[_0xf022('0x13')](handleEntityNotFound(_0x4868bc,null))[_0xf022('0x13')](function(_0x35a83c){if(_0x35a83c){return _0x35a83c[_0xf022('0xbb')](_0x2651a1['body'][_0xf022('0x72')],_[_0xf022('0x8a')](_0x2651a1[_0xf022('0x66')],[_0xf022('0x72'),'id'])||{})[_0xf022('0xbc')](function(_0x179d2e){for(var _0x262961=0x0;_0x262961<_0x2651a1[_0xf022('0x66')][_0xf022('0x72')][_0xf022('0x57')];_0x262961+=0x1){socket['emit']('userMailAccount:save',{'UserId':Number(_0x2651a1[_0xf022('0x66')][_0xf022('0x72')][_0x262961]),'MailAccountId':Number(_0x2651a1[_0xf022('0x63')]['id'])});}return _0x179d2e;});}})[_0xf022('0x13')](respondWithResult(_0x4868bc,null))[_0xf022('0x1c')](handleError(_0x4868bc,null));};exports[_0xf022('0xbd')]=function(_0x5a0a8e,_0x1c4752){return db['MailAccount'][_0xf022('0x69')]({'where':{'id':_0x5a0a8e[_0xf022('0x63')]['id']}})['then'](handleEntityNotFound(_0x1c4752,null))['then'](function(_0x2265c6){if(_0x2265c6){return _0x2265c6['removeAgents'](_0x5a0a8e['query'][_0xf022('0x72')])['then'](function(){if(_[_0xf022('0xbe')](_0x5a0a8e['query'][_0xf022('0x72')])){for(var _0x3fdd72=0x0;_0x3fdd72<_0x5a0a8e[_0xf022('0x54')][_0xf022('0x72')][_0xf022('0x57')];_0x3fdd72+=0x1){socket[_0xf022('0xbf')](_0xf022('0xc0'),{'UserId':Number(_0x5a0a8e[_0xf022('0x54')][_0xf022('0x72')][_0x3fdd72]),'MailAccountId':Number(_0x5a0a8e['params']['id'])});}}else{socket[_0xf022('0xbf')](_0xf022('0xc0'),{'UserId':Number(_0x5a0a8e['query'][_0xf022('0x72')]),'MailAccountId':Number(_0x5a0a8e[_0xf022('0x63')]['id'])});}});}})['then'](respondWithStatusCode(_0x1c4752,null))[_0xf022('0x1c')](handleError(_0x1c4752,null));};exports[_0xf022('0xc1')]=function(_0x3bcb45,_0x219ba2){var _0x5bc42c={};var _0x1f6a64={};var _0x4c0412;var _0x551dd8;return db[_0xf022('0x4b')][_0xf022('0x6f')]({'where':{'id':_0x3bcb45['params']['id']}})[_0xf022('0x13')](handleEntityNotFound(_0x219ba2,null))[_0xf022('0x13')](function(_0x29165a){if(_0x29165a){_0x4c0412=_0x29165a;_0x1f6a64['model']=_[_0xf022('0x50')](db[_0xf022('0x8d')][_0xf022('0x4c')]);_0x1f6a64[_0xf022('0x54')]=_[_0xf022('0x50')](_0x3bcb45[_0xf022('0x54')]);_0x1f6a64['filters']=_[_0xf022('0x52')](_0x1f6a64[_0xf022('0x53')],_0x1f6a64[_0xf022('0x54')]);_0x5bc42c[_0xf022('0x56')]=_[_0xf022('0x52')](_0x1f6a64[_0xf022('0x53')],qs[_0xf022('0x55')](_0x3bcb45[_0xf022('0x54')][_0xf022('0x55')]));_0x5bc42c['attributes']=_0x5bc42c[_0xf022('0x56')][_0xf022('0x57')]?_0x5bc42c['attributes']:_0x1f6a64[_0xf022('0x53')];_0x5bc42c['order']=qs['sort'](_0x3bcb45[_0xf022('0x54')][_0xf022('0x5a')]);_0x5bc42c[_0xf022('0x5b')]=qs['filters'](_['pick'](_0x3bcb45[_0xf022('0x54')],_0x1f6a64[_0xf022('0x51')]));if(_0x3bcb45[_0xf022('0x54')]['filter']){_0x5bc42c['where']=_['merge'](_0x5bc42c['where'],{'$or':_[_0xf022('0x4f')](_0x5bc42c[_0xf022('0x56')],function(_0x50a5c6){var _0x2cabb0={};_0x2cabb0[_0x50a5c6]={'$like':'%'+_0x3bcb45[_0xf022('0x54')][_0xf022('0x5d')]+'%'};return _0x2cabb0;})});}_0x5bc42c=_['merge']({},_0x5bc42c,_0x3bcb45[_0xf022('0x65')]);return _0x4c0412[_0xf022('0xc1')](_0x5bc42c);}})['then'](function(_0x54c437){if(_0x54c437){_0x551dd8=_0x54c437[_0xf022('0x57')];if(!_0x3bcb45[_0xf022('0x54')][_0xf022('0x58')]('nolimit')){_0x5bc42c[_0xf022('0x22')]=qs[_0xf022('0x22')](_0x3bcb45[_0xf022('0x54')][_0xf022('0x22')]);_0x5bc42c[_0xf022('0x24')]=qs['offset'](_0x3bcb45['query'][_0xf022('0x24')]);}return _0x4c0412[_0xf022('0xc1')](_0x5bc42c);}})['then'](function(_0x9cd8e0){if(_0x9cd8e0){return _0x9cd8e0?{'count':_0x551dd8,'rows':_0x9cd8e0}:null;}})['then'](respondWithResult(_0x219ba2,null))[_0xf022('0x1c')](handleError(_0x219ba2,null));};
\ No newline at end of file
+var _0xd0ea=['juice','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','redis','defaults','socket.io-emitter','register','jayson/promise','client','request','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','error','code','message','catch','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','destroy','get','MailAccounts','stack','name','gmail','yahoo','imap.mail.yahoo.com','hotmail','outlook365','outlook.office365.com','Unknown\x20email\x20service\x20provider','smtp.gmail.com','smtp-mail.outlook.com','smtp.office365.com','user','username','pass','password','modernAuthentication','CloudProviderId','host','port','secure','service','authentication','Imap','Smtp','MailServerIn','Pause','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','limit','order','sort','where','pick','merge','VIRTUAL','filter','options','MailAccount','includeAll','include','findAll','show','params','MailServerOut','mandatoryDispositionPause','find','body','provider','update','Disposition','create','findOne','length','nolimit','rows','removeDispositions','ids','addAnswer','getAnswers','MailAccountId','CannedAnswer','removeAnswers','email','ListId','isNil','active','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','addImap','removeImap','setImap','getSmtp','removeSmtp','setSmtp','MailInteraction','addInteraction','omit','getInteractions','CmContact','Contact','Owner','internal','Tag','Tags','tag','sequelize','ISOLATION_LEVELS','MailApplication','bulkCreate','findAndCountAll','priority','finally','send','getApplications','getMessages','MailMessage','inlineCss','true','split','CmList','List','Contacts','updatedAt','DESC','CloudProvider','Smtp\x20configuration\x20not\x20found','from','format','%s\x20<%s>','attachments','join','root','server/files/attachments','basename','getSmtpOptions','SendMail','sendMail','List\x20not\x20found','messageId','subject','attach','out','YYYY-MM-DD\x20HH:mm:ss','Interaction','Messages','verifySmtp','Sequelize','ValidationError','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','spread','emit','removeAgents','isArray','userMailAccount:remove','User','getAgents','bluebird','util','path'];(function(_0x4d8ab0,_0x27a098){var _0x13b5bc=function(_0x29c817){while(--_0x29c817){_0x4d8ab0['push'](_0x4d8ab0['shift']());}};_0x13b5bc(++_0x27a098);}(_0xd0ea,0x17b));var _0xad0e=function(_0x62b58e,_0x46fe1e){_0x62b58e=_0x62b58e-0x0;var _0x37fe84=_0xd0ea[_0x62b58e];return _0x37fe84;};'use strict';var moment=require('moment');var BPromise=require(_0xad0e('0x0'));var util=require(_0xad0e('0x1'));var path=require(_0xad0e('0x2'));var _=require('lodash');var juice=require(_0xad0e('0x3'));var Redis=require(_0xad0e('0x4'));var qs=require(_0xad0e('0x5'));var logger=require(_0xad0e('0x6'))(_0xad0e('0x7'));var config=require(_0xad0e('0x8'));var db=require('../../mysqldb')['db'];config[_0xad0e('0x9')]=_[_0xad0e('0xa')](config[_0xad0e('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0xad0e('0xb'))(new Redis(config['redis']));require('./mailAccount.socket')[_0xad0e('0xc')](socket);var jayson=require(_0xad0e('0xd'));var client=jayson[_0xad0e('0xe')]['http']({'port':0x232b});function respondWithRpcPromise(_0x5c9332,_0x250086,_0x1e27f2,_0x3e1b0e){return new BPromise(function(_0xf4607d,_0x3ef8f9){var _0x1240ea=_0x3e1b0e||client;return _0x1240ea[_0xad0e('0xf')](_0x5c9332,_0x1e27f2)[_0xad0e('0x10')](function(_0x4e8db2){logger[_0xad0e('0x11')](_0xad0e('0x12'),_0x250086,_0xad0e('0x13'));logger[_0xad0e('0x14')](_0xad0e('0x15'),_0x250086,_0xad0e('0x13'),JSON['stringify'](_0x4e8db2));if(_0x4e8db2['error']){if(_0x4e8db2[_0xad0e('0x16')][_0xad0e('0x17')]===0x1f4){logger[_0xad0e('0x16')](_0xad0e('0x12'),_0x250086,_0x4e8db2[_0xad0e('0x16')][_0xad0e('0x18')]);return _0x3ef8f9(_0x4e8db2[_0xad0e('0x16')]['message']);}logger[_0xad0e('0x16')]('MailAccount,\x20%s,\x20%s',_0x250086,_0x4e8db2[_0xad0e('0x16')][_0xad0e('0x18')]);return _0xf4607d(_0x4e8db2[_0xad0e('0x16')][_0xad0e('0x18')]);}else{logger[_0xad0e('0x11')](_0xad0e('0x12'),_0x250086,'request\x20sent');_0xf4607d(_0x4e8db2['result'][_0xad0e('0x18')]);}})[_0xad0e('0x19')](function(_0xd2764){logger[_0xad0e('0x16')](_0xad0e('0x12'),_0x250086,_0xd2764);_0x3ef8f9(_0xd2764);});});}function respondWithStatusCode(_0x56f751,_0x53989b){_0x53989b=_0x53989b||0xcc;return function(_0x3cd81f){if(_0x3cd81f){return _0x56f751[_0xad0e('0x1a')](_0x53989b);}return _0x56f751[_0xad0e('0x1b')](_0x53989b)[_0xad0e('0x1c')]();};}function respondWithResult(_0x5c259a,_0x49f5bc){_0x49f5bc=_0x49f5bc||0xc8;return function(_0x59bc87){if(_0x59bc87){return _0x5c259a[_0xad0e('0x1b')](_0x49f5bc)[_0xad0e('0x1d')](_0x59bc87);}};}function respondWithFilteredResult(_0x38cb3c,_0x19a273){return function(_0x51ee73){if(_0x51ee73){var _0x1ed1e8=typeof _0x19a273[_0xad0e('0x1e')]===_0xad0e('0x1f')&&typeof _0x19a273['limit']===_0xad0e('0x1f');var _0x355d9e=_0x51ee73['count'];var _0x4172b9=_0x1ed1e8?0x0:_0x19a273[_0xad0e('0x1e')];var _0x193871=_0x1ed1e8?_0x51ee73[_0xad0e('0x20')]:_0x19a273[_0xad0e('0x1e')]+_0x19a273['limit'];var _0x41370f;if(_0x193871>=_0x355d9e){_0x193871=_0x355d9e;_0x41370f=0xc8;}else{_0x41370f=0xce;}_0x38cb3c['status'](_0x41370f);return _0x38cb3c[_0xad0e('0x21')](_0xad0e('0x22'),_0x4172b9+'-'+_0x193871+'/'+_0x355d9e)[_0xad0e('0x1d')](_0x51ee73);}return null;};}function saveUpdates(_0x18f157){return function(_0xd3944a){if(_0xd3944a){return _0xd3944a['update'](_0x18f157)[_0xad0e('0x10')](function(_0x12d585){return _0x12d585;});}return null;};}function removeEntity(_0x51e008){return function(_0x4157b2){if(_0x4157b2){return _0x4157b2[_0xad0e('0x23')]()[_0xad0e('0x10')](function(){var _0x4ea7cd=_0x4157b2[_0xad0e('0x24')]({'plain':!![]});var _0x51f9e2=_0xad0e('0x25');return db['UserProfileResource'][_0xad0e('0x23')]({'where':{'type':_0x51f9e2,'resourceId':_0x4ea7cd['id']}})[_0xad0e('0x10')](function(){return _0x4157b2;});})[_0xad0e('0x10')](function(){_0x51e008[_0xad0e('0x1b')](0xcc)[_0xad0e('0x1c')]();});}};}function handleEntityNotFound(_0x2a67d4){return function(_0x4b5247){if(!_0x4b5247){_0x2a67d4[_0xad0e('0x1a')](0x194);}return _0x4b5247;};}function handleError(_0x432148,_0x47873e){_0x47873e=_0x47873e||0x1f4;return function(_0x491fc0){logger['error'](_0x491fc0[_0xad0e('0x26')]);if(_0x491fc0[_0xad0e('0x27')]){delete _0x491fc0[_0xad0e('0x27')];}_0x432148[_0xad0e('0x1b')](_0x47873e)['send'](_0x491fc0);};}function getImapHost(_0x192711){switch(_0x192711){case _0xad0e('0x28'):return'imap.gmail.com';case _0xad0e('0x29'):return _0xad0e('0x2a');case _0xad0e('0x2b'):return'imap-mail.outlook.com';case _0xad0e('0x2c'):return _0xad0e('0x2d');}throw new Error(_0xad0e('0x2e'),_0x192711);}function getSmtpHost(_0x313672){switch(_0x313672){case'gmail':return _0xad0e('0x2f');case _0xad0e('0x29'):return'smtp.mail.yahoo.com';case'hotmail':return _0xad0e('0x30');case _0xad0e('0x2c'):return _0xad0e('0x31');}throw new Error(_0xad0e('0x2e'),_0x313672);}function getAuthenticationOptions(_0x2a5229,_0x53760b){var _0x44af65={};var _0x6c1ccc={};if(_0x2a5229){_0x44af65[_0xad0e('0x32')]=_0x6c1ccc[_0xad0e('0x32')]=_0x53760b[_0xad0e('0x33')];_0x44af65['password']=_0x6c1ccc[_0xad0e('0x34')]=_0x53760b[_0xad0e('0x35')];if(_0x53760b[_0xad0e('0x36')]){_0x44af65['modernAuthentication']=_0x6c1ccc[_0xad0e('0x36')]=!![];_0x44af65[_0xad0e('0x37')]=_0x6c1ccc[_0xad0e('0x37')]=_0x53760b[_0xad0e('0x37')];_0x44af65[_0xad0e('0x35')]=_0x6c1ccc[_0xad0e('0x34')]=null;}else{_0x44af65[_0xad0e('0x37')]=_0x6c1ccc[_0xad0e('0x37')]=null;}_0x44af65[_0xad0e('0x38')]=getImapHost(_0x2a5229);_0x44af65[_0xad0e('0x39')]=0x3e1;_0x6c1ccc[_0xad0e('0x38')]=getSmtpHost(_0x2a5229);_0x6c1ccc[_0xad0e('0x39')]=0x24b;_0x6c1ccc[_0xad0e('0x3a')]=![];_0x44af65[_0xad0e('0x3b')]=_0x6c1ccc[_0xad0e('0x3b')]=null;}else{if(_0x53760b[_0xad0e('0x3c')]){_0x44af65[_0xad0e('0x32')]=_0x6c1ccc[_0xad0e('0x32')]=_0x53760b[_0xad0e('0x33')];_0x44af65['password']=_0x6c1ccc[_0xad0e('0x34')]=_0x53760b[_0xad0e('0x35')];}else{_0x44af65[_0xad0e('0x3c')]=_0x6c1ccc[_0xad0e('0x3c')]=![];_0x44af65[_0xad0e('0x32')]=_0x6c1ccc[_0xad0e('0x32')]=null;_0x44af65[_0xad0e('0x35')]=_0x6c1ccc[_0xad0e('0x34')]=null;}_0x44af65[_0xad0e('0x38')]=_0x53760b['Imap'][_0xad0e('0x38')];_0x44af65[_0xad0e('0x39')]=_0x53760b[_0xad0e('0x3d')][_0xad0e('0x39')];_0x6c1ccc[_0xad0e('0x38')]=_0x53760b[_0xad0e('0x3e')][_0xad0e('0x38')];_0x6c1ccc['port']=_0x53760b[_0xad0e('0x3e')][_0xad0e('0x39')];}return{'Imap':_0x44af65,'Smtp':_0x6c1ccc};}exports['index']=function(_0x3afd7a,_0x5f20d7){var _0x366c67={'include':[{'model':db[_0xad0e('0x3f')],'as':_0xad0e('0x3d')},{'model':db['MailServerOut'],'as':_0xad0e('0x3e')},{'model':db[_0xad0e('0x40')],'as':'mandatoryDispositionPause'}]},_0x2f0de2={},_0x40114f={'count':0x0,'rows':[]};var _0x3ca061=_[_0xad0e('0x41')](db['MailAccount'][_0xad0e('0x42')],function(_0x8c09ae){return{'name':_0x8c09ae[_0xad0e('0x43')],'type':_0x8c09ae[_0xad0e('0x44')][_0xad0e('0x45')]};});_0x2f0de2[_0xad0e('0x46')]=_[_0xad0e('0x41')](_0x3ca061,'name');_0x2f0de2[_0xad0e('0x47')]=_[_0xad0e('0x48')](_0x3afd7a[_0xad0e('0x47')]);_0x2f0de2[_0xad0e('0x49')]=_[_0xad0e('0x4a')](_0x2f0de2[_0xad0e('0x46')],_0x2f0de2[_0xad0e('0x47')]);_0x366c67[_0xad0e('0x4b')]=_[_0xad0e('0x4a')](_0x2f0de2[_0xad0e('0x46')],qs[_0xad0e('0x4c')](_0x3afd7a[_0xad0e('0x47')][_0xad0e('0x4c')]));_0x366c67[_0xad0e('0x4b')]=_0x366c67[_0xad0e('0x4b')]['length']?_0x366c67[_0xad0e('0x4b')]:_0x2f0de2[_0xad0e('0x46')];if(!_0x3afd7a[_0xad0e('0x47')][_0xad0e('0x4d')]('nolimit')){_0x366c67[_0xad0e('0x4e')]=qs[_0xad0e('0x4e')](_0x3afd7a['query'][_0xad0e('0x4e')]);_0x366c67[_0xad0e('0x1e')]=qs[_0xad0e('0x1e')](_0x3afd7a[_0xad0e('0x47')][_0xad0e('0x1e')]);}_0x366c67[_0xad0e('0x4f')]=qs['sort'](_0x3afd7a[_0xad0e('0x47')][_0xad0e('0x50')]);_0x366c67[_0xad0e('0x51')]=qs[_0xad0e('0x49')](_[_0xad0e('0x52')](_0x3afd7a[_0xad0e('0x47')],_0x2f0de2['filters']),_0x3ca061);if(_0x3afd7a['query']['filter']){_0x366c67[_0xad0e('0x51')]=_[_0xad0e('0x53')](_0x366c67[_0xad0e('0x51')],{'$or':_[_0xad0e('0x41')](_0x3ca061,function(_0x2e5d97){if(_0x2e5d97['type']!==_0xad0e('0x54')){var _0x31b6c9={};_0x31b6c9[_0x2e5d97[_0xad0e('0x27')]]={'$like':'%'+_0x3afd7a[_0xad0e('0x47')][_0xad0e('0x55')]+'%'};return _0x31b6c9;}})});}_0x366c67=_[_0xad0e('0x53')]({},_0x366c67,_0x3afd7a[_0xad0e('0x56')]);var _0x27a495={'where':_0x366c67[_0xad0e('0x51')]};return db[_0xad0e('0x57')][_0xad0e('0x20')](_0x27a495)[_0xad0e('0x10')](function(_0x285507){_0x40114f[_0xad0e('0x20')]=_0x285507;if(_0x3afd7a[_0xad0e('0x47')][_0xad0e('0x58')]){_0x366c67[_0xad0e('0x59')]=[{'all':!![]}];}return db[_0xad0e('0x57')][_0xad0e('0x5a')](_0x366c67);})['then'](function(_0x17683b){_0x40114f['rows']=_0x17683b;return _0x40114f;})[_0xad0e('0x10')](respondWithFilteredResult(_0x5f20d7,_0x366c67))[_0xad0e('0x19')](handleError(_0x5f20d7,null));};exports[_0xad0e('0x5b')]=function(_0x15e081,_0x1d2e88){var _0x39f239={'raw':![],'where':{'id':_0x15e081[_0xad0e('0x5c')]['id']},'include':[{'model':db['MailServerIn'],'as':'Imap'},{'model':db[_0xad0e('0x5d')],'as':_0xad0e('0x3e')},{'model':db[_0xad0e('0x40')],'as':_0xad0e('0x5e')}]},_0x203b78={};_0x203b78[_0xad0e('0x46')]=_[_0xad0e('0x48')](db[_0xad0e('0x57')][_0xad0e('0x42')]);_0x203b78['query']=_['keys'](_0x15e081[_0xad0e('0x47')]);_0x203b78[_0xad0e('0x49')]=_[_0xad0e('0x4a')](_0x203b78[_0xad0e('0x46')],_0x203b78[_0xad0e('0x47')]);_0x39f239[_0xad0e('0x4b')]=_[_0xad0e('0x4a')](_0x203b78[_0xad0e('0x46')],qs['fields'](_0x15e081['query'][_0xad0e('0x4c')]));_0x39f239[_0xad0e('0x4b')]=_0x39f239[_0xad0e('0x4b')]['length']?_0x39f239[_0xad0e('0x4b')]:_0x203b78[_0xad0e('0x46')];if(_0x15e081[_0xad0e('0x47')]['includeAll']){_0x39f239[_0xad0e('0x59')]=[{'all':!![]}];}_0x39f239=_[_0xad0e('0x53')]({},_0x39f239,_0x15e081[_0xad0e('0x56')]);return db['MailAccount'][_0xad0e('0x5f')](_0x39f239)['then'](handleEntityNotFound(_0x1d2e88,null))[_0xad0e('0x10')](respondWithResult(_0x1d2e88,null))[_0xad0e('0x19')](handleError(_0x1d2e88,null));};exports['update']=function(_0xa6917,_0x180a25){if(_0xa6917['body']['id']){delete _0xa6917[_0xad0e('0x60')]['id'];}var _0x2110b7=_0xa6917[_0xad0e('0x60')][_0xad0e('0x61')]==='custom'?null:_0xa6917[_0xad0e('0x60')][_0xad0e('0x61')];var _0x537ebb=_0xa6917[_0xad0e('0x60')][_0xad0e('0x3d')]||{};var _0x3a2675=_0xa6917[_0xad0e('0x60')][_0xad0e('0x3e')]||{};if(_0x2110b7){_0x537ebb[_0xad0e('0x38')]=getImapHost(_0x2110b7);_0x537ebb['port']=0x3e1;_0x3a2675[_0xad0e('0x38')]=getSmtpHost(_0x2110b7);_0x3a2675[_0xad0e('0x39')]=0x24b;_0x3a2675[_0xad0e('0x3a')]=![];}if(_0x3a2675[_0xad0e('0x36')]){_0x3a2675['secure']=![];}else{_0x3a2675[_0xad0e('0x37')]=null;}if(!_0x537ebb[_0xad0e('0x36')])_0x537ebb[_0xad0e('0x37')]=null;_0xa6917['body'][_0xad0e('0x3d')]=_0x537ebb;_0xa6917[_0xad0e('0x60')]['Smtp']=_0x3a2675;return db[_0xad0e('0x57')][_0xad0e('0x5f')]({'where':{'id':_0xa6917[_0xad0e('0x5c')]['id']},'include':[{'model':db[_0xad0e('0x3f')],'as':_0xad0e('0x3d')},{'model':db[_0xad0e('0x5d')],'as':'Smtp'},{'model':db[_0xad0e('0x40')],'as':_0xad0e('0x5e')}]})['then'](handleEntityNotFound(_0x180a25,null))[_0xad0e('0x10')](function(_0x2a2e07){if(!_0x2a2e07)throw new Error('Mail\x20Account\x20not\x20found');if(_0x2a2e07[_0xad0e('0x3b')])delete _0xa6917[_0xad0e('0x60')][_0xad0e('0x3d')];return _0x2a2e07;})[_0xad0e('0x10')](saveUpdates(_0xa6917[_0xad0e('0x60')],null))[_0xad0e('0x10')](function(_0x51569c){if(!_0xa6917[_0xad0e('0x60')][_0xad0e('0x3d')])return _0x51569c;return db['MailServerIn']['update'](_0xa6917[_0xad0e('0x60')][_0xad0e('0x3d')],{'where':{'MailAccountId':_0x51569c['id']}})[_0xad0e('0x10')](function(){return _0x51569c;});})[_0xad0e('0x10')](function(_0x39f67a){if(!_0xa6917[_0xad0e('0x60')][_0xad0e('0x3e')])return _0x39f67a;return db[_0xad0e('0x5d')][_0xad0e('0x62')](_0xa6917['body'][_0xad0e('0x3e')],{'where':{'MailAccountId':_0x39f67a['id']}})[_0xad0e('0x10')](function(){return _0x39f67a;});})[_0xad0e('0x10')](respondWithResult(_0x180a25,null))[_0xad0e('0x19')](handleError(_0x180a25,null));};exports['describe']=function(_0x4f7295,_0xa8594a){return db[_0xad0e('0x57')]['describe']()['then'](respondWithResult(_0xa8594a,null))[_0xad0e('0x19')](handleError(_0xa8594a,null));};exports['addDisposition']=function(_0x368f9e,_0x2df0dd){if(_0x368f9e[_0xad0e('0x60')]['id']){delete _0x368f9e[_0xad0e('0x60')]['id'];}return db[_0xad0e('0x57')][_0xad0e('0x5f')]({'where':{'id':_0x368f9e['params']['id']}})[_0xad0e('0x10')](handleEntityNotFound(_0x2df0dd,null))[_0xad0e('0x10')](function(_0x30de6e){if(_0x30de6e){_0x368f9e['body']['MailAccountId']=_0x30de6e['id'];return db[_0xad0e('0x63')][_0xad0e('0x64')](_0x368f9e[_0xad0e('0x60')]);}})[_0xad0e('0x10')](respondWithResult(_0x2df0dd,null))['catch'](handleError(_0x2df0dd,null));};exports['getDispositions']=function(_0x42b403,_0x47d10c){var _0x479d96={'raw':![],'where':{}};var _0x5e9c18={};var _0x3dc612={'count':0x0,'rows':[]};return db['MailAccount'][_0xad0e('0x65')]({'where':{'id':_0x42b403['params']['id']}})['then'](handleEntityNotFound(_0x47d10c,null))[_0xad0e('0x10')](function(_0x580712){if(_0x580712){_0x5e9c18['model']=_[_0xad0e('0x48')](db[_0xad0e('0x63')][_0xad0e('0x42')]);_0x5e9c18['query']=_[_0xad0e('0x48')](_0x42b403[_0xad0e('0x47')]);_0x5e9c18['filters']=_['intersection'](_0x5e9c18[_0xad0e('0x46')],_0x5e9c18[_0xad0e('0x47')]);_0x479d96[_0xad0e('0x4b')]=_[_0xad0e('0x4a')](_0x5e9c18['model'],qs[_0xad0e('0x4c')](_0x42b403[_0xad0e('0x47')]['fields']));_0x479d96[_0xad0e('0x4b')]=_0x479d96[_0xad0e('0x4b')][_0xad0e('0x66')]?_0x479d96[_0xad0e('0x4b')]:_0x5e9c18[_0xad0e('0x46')];if(!_0x42b403['query'][_0xad0e('0x4d')](_0xad0e('0x67'))){_0x479d96[_0xad0e('0x4e')]=qs[_0xad0e('0x4e')](_0x42b403[_0xad0e('0x47')][_0xad0e('0x4e')]);_0x479d96[_0xad0e('0x1e')]=qs[_0xad0e('0x1e')](_0x42b403[_0xad0e('0x47')]['offset']);}_0x479d96[_0xad0e('0x4f')]=qs[_0xad0e('0x50')](_0x42b403['query'][_0xad0e('0x50')]);_0x479d96[_0xad0e('0x51')]=qs[_0xad0e('0x49')](_[_0xad0e('0x52')](_0x42b403['query'],_0x5e9c18['filters']));_0x479d96[_0xad0e('0x51')]['MailAccountId']=_0x580712['id'];if(_0x42b403[_0xad0e('0x47')][_0xad0e('0x55')]){_0x479d96[_0xad0e('0x51')]=_[_0xad0e('0x53')](_0x479d96[_0xad0e('0x51')],{'$or':_['map'](_0x479d96['attributes'],function(_0x19b91c){var _0x567e52={};_0x567e52[_0x19b91c]={'$like':'%'+_0x42b403[_0xad0e('0x47')][_0xad0e('0x55')]+'%'};return _0x567e52;})});}_0x479d96=_[_0xad0e('0x53')]({},_0x479d96,_0x42b403['options']);return db[_0xad0e('0x63')][_0xad0e('0x20')]({'where':_0x479d96[_0xad0e('0x51')]})['then'](function(_0x173110){_0x3dc612['count']=_0x173110;if(_0x42b403[_0xad0e('0x47')][_0xad0e('0x58')]){_0x479d96[_0xad0e('0x59')]=[{'all':!![]}];}return db[_0xad0e('0x63')]['findAll'](_0x479d96);})[_0xad0e('0x10')](function(_0x4f2537){_0x3dc612[_0xad0e('0x68')]=_0x4f2537;return _0x3dc612;});}})[_0xad0e('0x10')](respondWithFilteredResult(_0x47d10c,_0x479d96))[_0xad0e('0x19')](handleError(_0x47d10c,null));};exports[_0xad0e('0x69')]=function(_0x89fdc,_0x5b68a8){return db[_0xad0e('0x57')][_0xad0e('0x5f')]({'where':{'id':_0x89fdc[_0xad0e('0x5c')]['id']}})[_0xad0e('0x10')](handleEntityNotFound(_0x5b68a8,null))['then'](function(_0x70ab73){if(_0x70ab73){return _0x70ab73[_0xad0e('0x69')](_0x89fdc[_0xad0e('0x47')][_0xad0e('0x6a')]);}})[_0xad0e('0x10')](respondWithStatusCode(_0x5b68a8,null))[_0xad0e('0x19')](handleError(_0x5b68a8,null));};exports[_0xad0e('0x6b')]=function(_0x4eea48,_0x1f89f6){if(_0x4eea48[_0xad0e('0x60')]['id']){delete _0x4eea48['body']['id'];}return db[_0xad0e('0x57')]['find']({'where':{'id':_0x4eea48[_0xad0e('0x5c')]['id']}})['then'](handleEntityNotFound(_0x1f89f6,null))[_0xad0e('0x10')](function(_0x3dec21){if(_0x3dec21){_0x4eea48['body']['MailAccountId']=_0x3dec21['id'];return db['CannedAnswer'][_0xad0e('0x64')](_0x4eea48[_0xad0e('0x60')]);}})[_0xad0e('0x10')](respondWithResult(_0x1f89f6,null))[_0xad0e('0x19')](handleError(_0x1f89f6,null));};exports[_0xad0e('0x6c')]=function(_0x41fd62,_0x582d30){var _0x286b92={'raw':![],'where':{}};var _0x228a95={};var _0x37faf0={'count':0x0,'rows':[]};return db[_0xad0e('0x57')]['findOne']({'where':{'id':_0x41fd62[_0xad0e('0x5c')]['id']}})[_0xad0e('0x10')](handleEntityNotFound(_0x582d30,null))[_0xad0e('0x10')](function(_0x245a96){if(_0x245a96){_0x228a95['model']=_[_0xad0e('0x48')](db['CannedAnswer'][_0xad0e('0x42')]);_0x228a95[_0xad0e('0x47')]=_['keys'](_0x41fd62[_0xad0e('0x47')]);_0x228a95['filters']=_['intersection'](_0x228a95[_0xad0e('0x46')],_0x228a95[_0xad0e('0x47')]);_0x286b92[_0xad0e('0x4b')]=_['intersection'](_0x228a95[_0xad0e('0x46')],qs[_0xad0e('0x4c')](_0x41fd62[_0xad0e('0x47')]['fields']));_0x286b92['attributes']=_0x286b92[_0xad0e('0x4b')][_0xad0e('0x66')]?_0x286b92[_0xad0e('0x4b')]:_0x228a95['model'];if(!_0x41fd62['query'][_0xad0e('0x4d')](_0xad0e('0x67'))){_0x286b92['limit']=qs[_0xad0e('0x4e')](_0x41fd62['query'][_0xad0e('0x4e')]);_0x286b92[_0xad0e('0x1e')]=qs[_0xad0e('0x1e')](_0x41fd62[_0xad0e('0x47')][_0xad0e('0x1e')]);}_0x286b92[_0xad0e('0x4f')]=qs[_0xad0e('0x50')](_0x41fd62[_0xad0e('0x47')][_0xad0e('0x50')]);_0x286b92['where']=qs[_0xad0e('0x49')](_[_0xad0e('0x52')](_0x41fd62[_0xad0e('0x47')],_0x228a95[_0xad0e('0x49')]));_0x286b92[_0xad0e('0x51')][_0xad0e('0x6d')]=_0x245a96['id'];if(_0x41fd62['query']['filter']){_0x286b92['where']=_['merge'](_0x286b92[_0xad0e('0x51')],{'$or':_[_0xad0e('0x41')](_0x286b92['attributes'],function(_0x515575){var _0x805128={};_0x805128[_0x515575]={'$like':'%'+_0x41fd62['query']['filter']+'%'};return _0x805128;})});}_0x286b92=_[_0xad0e('0x53')]({},_0x286b92,_0x41fd62['options']);return db['CannedAnswer'][_0xad0e('0x20')]({'where':_0x286b92[_0xad0e('0x51')]})['then'](function(_0x378330){_0x37faf0[_0xad0e('0x20')]=_0x378330;if(_0x41fd62[_0xad0e('0x47')][_0xad0e('0x58')]){_0x286b92[_0xad0e('0x59')]=[{'all':!![]}];}return db[_0xad0e('0x6e')]['findAll'](_0x286b92);})[_0xad0e('0x10')](function(_0x354dca){_0x37faf0[_0xad0e('0x68')]=_0x354dca;return _0x37faf0;});}})['then'](respondWithFilteredResult(_0x582d30,_0x286b92))['catch'](handleError(_0x582d30,null));};exports[_0xad0e('0x6f')]=function(_0x4130eb,_0x123fcb){return db['MailAccount'][_0xad0e('0x5f')]({'where':{'id':_0x4130eb['params']['id']}})[_0xad0e('0x10')](handleEntityNotFound(_0x123fcb,null))[_0xad0e('0x10')](function(_0x436e10){if(_0x436e10){return _0x436e10['removeAnswers'](_0x4130eb[_0xad0e('0x47')][_0xad0e('0x6a')]);}})['then'](respondWithStatusCode(_0x123fcb,null))[_0xad0e('0x19')](handleError(_0x123fcb,null));};exports[_0xad0e('0x64')]=function(_0x4fcf3d,_0x351827){var _0x42484d={'name':_0x4fcf3d['body'][_0xad0e('0x27')],'key':_0x4fcf3d[_0xad0e('0x60')][_0xad0e('0x45')],'provider':_0x4fcf3d['body'][_0xad0e('0x61')]==='custom'?null:_0x4fcf3d[_0xad0e('0x60')][_0xad0e('0x61')],'email':_0x4fcf3d['body'][_0xad0e('0x70')],'ListId':_0x4fcf3d[_0xad0e('0x60')][_0xad0e('0x71')],'active':!_[_0xad0e('0x72')](_0x4fcf3d[_0xad0e('0x60')][_0xad0e('0x73')])?_0x4fcf3d[_0xad0e('0x60')][_0xad0e('0x73')]:!![],'description':_0x4fcf3d[_0xad0e('0x60')]['description']||null};var _0x2064cf=getAuthenticationOptions(_0x42484d[_0xad0e('0x61')],_0x4fcf3d[_0xad0e('0x60')]);_0x42484d[_0xad0e('0x3d')]=_0x2064cf[_0xad0e('0x3d')];_0x42484d[_0xad0e('0x3e')]=_0x2064cf[_0xad0e('0x3e')];return db['MailAccount']['create'](_0x42484d,{'include':[{'model':db[_0xad0e('0x5d')],'as':_0xad0e('0x3e')},{'model':db[_0xad0e('0x3f')],'as':_0xad0e('0x3d')}]})[_0xad0e('0x10')](function(_0x3cd43a){var _0x10b178=_0x4fcf3d[_0xad0e('0x32')][_0xad0e('0x24')]({'plain':!![]});if(!_0x10b178)throw new Error(_0xad0e('0x74'));if(_0x10b178[_0xad0e('0x75')]===_0xad0e('0x32')){var _0x3b1596=_0x3cd43a[_0xad0e('0x24')]({'plain':!![]});return db['UserProfileSection']['find']({'where':{'name':'MailAccounts','userProfileId':_0x10b178['userProfileId']},'raw':!![]})[_0xad0e('0x10')](function(_0x1c26b9){if(_0x1c26b9&&_0x1c26b9[_0xad0e('0x76')]===0x0){return db[_0xad0e('0x77')][_0xad0e('0x64')]({'name':_0x3b1596[_0xad0e('0x27')],'resourceId':_0x3b1596['id'],'type':_0x1c26b9['name'],'sectionId':_0x1c26b9['id']},{})[_0xad0e('0x10')](function(){return _0x3cd43a;});}else{return _0x3cd43a;}})[_0xad0e('0x19')](function(_0x5a8b63){logger[_0xad0e('0x16')](_0xad0e('0x78'),_0x5a8b63);throw _0x5a8b63;});}return _0x3cd43a;})[_0xad0e('0x10')](respondWithResult(_0x351827,0xc9))['catch'](handleError(_0x351827,null));};exports['getImap']=function(_0xf03f8d,_0xb4e73f){return db[_0xad0e('0x57')][_0xad0e('0x65')]({'where':{'id':_0xf03f8d[_0xad0e('0x5c')]['id']}})[_0xad0e('0x10')](handleEntityNotFound(_0xb4e73f,null))['then'](function(_0x5c9aff){if(_0x5c9aff){return _0x5c9aff[_0xad0e('0x79')]();}return null;})[_0xad0e('0x10')](respondWithResult(_0xb4e73f,null))['catch'](handleError(_0xb4e73f,null));};exports[_0xad0e('0x7a')]=function(_0x218de6,_0x2ce226){if(_0x218de6[_0xad0e('0x60')]['id']){delete _0x218de6['body']['id'];}return db[_0xad0e('0x57')][_0xad0e('0x5f')]({'where':{'id':_0x218de6[_0xad0e('0x5c')]['id']}})[_0xad0e('0x10')](handleEntityNotFound(_0x2ce226,null))[_0xad0e('0x10')](function(_0x5e1cbd){if(_0x5e1cbd){_0x218de6['body'][_0xad0e('0x6d')]=_0x5e1cbd['id'];return db['MailServerIn']['create'](_0x218de6['body']);}})[_0xad0e('0x10')](respondWithResult(_0x2ce226,null))[_0xad0e('0x19')](handleError(_0x2ce226,null));};exports[_0xad0e('0x7b')]=function(_0x135c3a,_0x13cb6b){return db[_0xad0e('0x57')][_0xad0e('0x65')]({'where':{'id':_0x135c3a[_0xad0e('0x5c')]['id']}})['then'](handleEntityNotFound(_0x13cb6b,null))['then'](function(_0xf30139){if(_0xf30139){return _0xf30139[_0xad0e('0x7c')](null);}return null;})[_0xad0e('0x10')](respondWithStatusCode(_0x13cb6b,null))[_0xad0e('0x19')](handleError(_0x13cb6b,null));};exports['getSmtp']=function(_0x1c31fb,_0x3798a9){return db['MailAccount'][_0xad0e('0x65')]({'where':{'id':_0x1c31fb[_0xad0e('0x5c')]['id']}})[_0xad0e('0x10')](handleEntityNotFound(_0x3798a9,null))[_0xad0e('0x10')](function(_0xc0bc57){if(_0xc0bc57){return _0xc0bc57[_0xad0e('0x7d')]();}return null;})[_0xad0e('0x10')](respondWithResult(_0x3798a9,null))[_0xad0e('0x19')](handleError(_0x3798a9,null));};exports['addSmtp']=function(_0x58bd48,_0x44c23c){if(_0x58bd48['body']['id']){delete _0x58bd48['body']['id'];}return db[_0xad0e('0x57')][_0xad0e('0x5f')]({'where':{'id':_0x58bd48['params']['id']}})[_0xad0e('0x10')](handleEntityNotFound(_0x44c23c,null))[_0xad0e('0x10')](function(_0x67f0ef){if(_0x67f0ef){_0x58bd48[_0xad0e('0x60')]['MailAccountId']=_0x67f0ef['id'];return db[_0xad0e('0x5d')]['create'](_0x58bd48['body']);}})[_0xad0e('0x10')](respondWithResult(_0x44c23c,null))['catch'](handleError(_0x44c23c,null));};exports[_0xad0e('0x7e')]=function(_0x4591df,_0x19590d){return db[_0xad0e('0x57')]['findOne']({'where':{'id':_0x4591df['params']['id']}})[_0xad0e('0x10')](handleEntityNotFound(_0x19590d,null))['then'](function(_0x3b8892){if(_0x3b8892){return _0x3b8892[_0xad0e('0x7f')](null);}return null;})[_0xad0e('0x10')](respondWithStatusCode(_0x19590d,null))[_0xad0e('0x19')](handleError(_0x19590d,null));};exports['addInteraction']=function(_0x18f10e,_0xd4029c){return db[_0xad0e('0x80')][_0xad0e('0x5f')]({'where':{'id':_0x18f10e['params']['id']}})[_0xad0e('0x10')](handleEntityNotFound(_0xd4029c,null))[_0xad0e('0x10')](function(_0x1ca8e1){if(_0x1ca8e1){return _0x1ca8e1[_0xad0e('0x81')](_0x18f10e['body'][_0xad0e('0x6a')],_[_0xad0e('0x82')](_0x18f10e['body'],['ids','id'])||{});}})[_0xad0e('0x10')](respondWithResult(_0xd4029c,null))['catch'](handleError(_0xd4029c,null));};exports[_0xad0e('0x83')]=function(_0x48ebda,_0x268207){var _0x2fc643={'raw':![],'where':{}};var _0x1e495e={};var _0x2f3e88={'count':0x0,'rows':[]};return db[_0xad0e('0x57')]['findOne']({'where':{'id':_0x48ebda[_0xad0e('0x5c')]['id']}})['then'](handleEntityNotFound(_0x268207,null))['then'](function(_0x5e5c9c){if(_0x5e5c9c){_0x1e495e[_0xad0e('0x46')]=_[_0xad0e('0x48')](db[_0xad0e('0x80')][_0xad0e('0x42')]);_0x1e495e[_0xad0e('0x47')]=_['keys'](_0x48ebda[_0xad0e('0x47')]);_0x1e495e['filters']=_[_0xad0e('0x4a')](_0x1e495e[_0xad0e('0x46')],_0x1e495e[_0xad0e('0x47')]);_0x2fc643['attributes']=_[_0xad0e('0x4a')](_0x1e495e[_0xad0e('0x46')],qs[_0xad0e('0x4c')](_0x48ebda[_0xad0e('0x47')][_0xad0e('0x4c')]));_0x2fc643[_0xad0e('0x4b')]=_0x2fc643[_0xad0e('0x4b')]['length']?_0x2fc643[_0xad0e('0x4b')]:_0x1e495e[_0xad0e('0x46')];if(!_0x48ebda[_0xad0e('0x47')]['hasOwnProperty']('nolimit')){_0x2fc643[_0xad0e('0x4e')]=qs[_0xad0e('0x4e')](_0x48ebda['query'][_0xad0e('0x4e')]);_0x2fc643[_0xad0e('0x1e')]=qs[_0xad0e('0x1e')](_0x48ebda[_0xad0e('0x47')][_0xad0e('0x1e')]);}_0x2fc643[_0xad0e('0x4f')]=qs[_0xad0e('0x50')](_0x48ebda[_0xad0e('0x47')]['sort']);_0x2fc643['where']=qs[_0xad0e('0x49')](_[_0xad0e('0x52')](_0x48ebda[_0xad0e('0x47')],_0x1e495e[_0xad0e('0x49')]));_0x2fc643['where'][_0xad0e('0x6d')]=_0x5e5c9c['id'];if(_0x48ebda[_0xad0e('0x47')][_0xad0e('0x55')]){_0x2fc643[_0xad0e('0x51')]=_[_0xad0e('0x53')](_0x2fc643[_0xad0e('0x51')],{'$or':_[_0xad0e('0x41')](_0x2fc643['attributes'],function(_0x4651fa){var _0x5e0a50={};_0x5e0a50[_0x4651fa]={'$like':'%'+_0x48ebda['query'][_0xad0e('0x55')]+'%'};return _0x5e0a50;})});}_0x2fc643=_['merge']({},_0x2fc643,_0x48ebda['options']);return db[_0xad0e('0x80')][_0xad0e('0x20')]({'where':_0x2fc643[_0xad0e('0x51')]})['then'](function(_0x3df240){_0x2f3e88[_0xad0e('0x20')]=_0x3df240;if(_0x48ebda[_0xad0e('0x47')][_0xad0e('0x58')]){_0x2fc643[_0xad0e('0x59')]=[{'model':db[_0xad0e('0x84')],'as':_0xad0e('0x85'),'required':![]},{'model':db['User'],'as':_0xad0e('0x86'),'attributes':[_0xad0e('0x27'),'fullname',_0xad0e('0x87')],'required':![]},{'model':db[_0xad0e('0x88')],'as':_0xad0e('0x89'),'attributes':['id',_0xad0e('0x27'),'color'],'where':_0x48ebda[_0xad0e('0x47')][_0xad0e('0x8a')]?{'id':_0x48ebda[_0xad0e('0x47')]['tag']}:undefined,'required':_0x48ebda[_0xad0e('0x47')][_0xad0e('0x8a')]?!![]:![]}];}return db[_0xad0e('0x80')][_0xad0e('0x5a')](_0x2fc643);})[_0xad0e('0x10')](function(_0x38f703){_0x2f3e88[_0xad0e('0x68')]=_0x38f703;return _0x2f3e88;});}})[_0xad0e('0x10')](respondWithFilteredResult(_0x268207,_0x2fc643))[_0xad0e('0x19')](handleError(_0x268207,null));};exports['addApplications']=function addApplications(_0x1beb99,_0x43f07b){var _0x202a70=_0x1beb99['params']['id'];var _0x3e40a4=_0x1beb99[_0xad0e('0x60')];var _0x1e685c=0xc8;var _0x572cf5=null;return db[_0xad0e('0x8b')]['transaction']({'isolationLevel':db[_0xad0e('0x8b')]['Transaction'][_0xad0e('0x8c')]['READ_COMMITTED']},function(_0x39036f){return db['MailAccount']['findOne']({'where':{'id':_0x202a70},'transaction':_0x39036f})['then'](function(_0x9defcb){if(_0x9defcb){return db[_0xad0e('0x8d')][_0xad0e('0x23')]({'where':{'MailAccountId':_0x202a70},'transaction':_0x39036f})['then'](function(){var _0x7f0a9f=_[_0xad0e('0x41')](_0x3e40a4,function(_0x46170e){_0x46170e[_0xad0e('0x6d')]=_0x202a70;return _0x46170e;});return db['MailApplication'][_0xad0e('0x8e')](_0x7f0a9f,{'transaction':_0x39036f});});}else{_0x1e685c=0x194;_0x572cf5=[];}});})[_0xad0e('0x10')](function(){if(_0x1e685c!==0x194){return db[_0xad0e('0x8d')][_0xad0e('0x8f')]({'where':{'MailAccountId':_0x202a70},'order':_0xad0e('0x90')})[_0xad0e('0x10')](function(_0x3f9985){_0x572cf5=_0x3f9985;});}})['catch'](function(_0x3e8d4e){_0x1e685c=0x1f4;logger[_0xad0e('0x16')](_0x3e8d4e[_0xad0e('0x26')]);if(_0x3e8d4e['name']){delete _0x3e8d4e['name'];}_0x572cf5=_0x3e8d4e;})[_0xad0e('0x91')](function(){if(_0x572cf5===null){_0x43f07b['sendStatus'](_0x1e685c);}else{if(_0x1e685c===0x1f4){_0x43f07b[_0xad0e('0x1b')](_0x1e685c)[_0xad0e('0x92')](_0x572cf5);}else{_0x43f07b[_0xad0e('0x1b')](_0x1e685c)['json'](_0x572cf5);}}});};exports['getApplications']=function(_0x54489f,_0xb76aa){var _0x1154b1={};var _0x3ed1e7={};var _0x2841f1;var _0x5543bd;return db['MailAccount'][_0xad0e('0x65')]({'where':{'id':_0x54489f[_0xad0e('0x5c')]['id']}})[_0xad0e('0x10')](handleEntityNotFound(_0xb76aa,null))[_0xad0e('0x10')](function(_0x28b47f){if(_0x28b47f){_0x2841f1=_0x28b47f;_0x3ed1e7[_0xad0e('0x46')]=_[_0xad0e('0x48')](db[_0xad0e('0x8d')][_0xad0e('0x42')]);_0x3ed1e7[_0xad0e('0x47')]=_['keys'](_0x54489f[_0xad0e('0x47')]);_0x3ed1e7[_0xad0e('0x49')]=_[_0xad0e('0x4a')](_0x3ed1e7[_0xad0e('0x46')],_0x3ed1e7['query']);_0x1154b1[_0xad0e('0x4b')]=_[_0xad0e('0x4a')](_0x3ed1e7[_0xad0e('0x46')],qs['fields'](_0x54489f[_0xad0e('0x47')][_0xad0e('0x4c')]));_0x1154b1[_0xad0e('0x4b')]=_0x1154b1[_0xad0e('0x4b')]['length']?_0x1154b1[_0xad0e('0x4b')]:_0x3ed1e7[_0xad0e('0x46')];_0x1154b1[_0xad0e('0x4f')]=qs[_0xad0e('0x50')](_0x54489f[_0xad0e('0x47')][_0xad0e('0x50')]);_0x1154b1[_0xad0e('0x51')]=qs[_0xad0e('0x49')](_['pick'](_0x54489f[_0xad0e('0x47')],_0x3ed1e7[_0xad0e('0x49')]));if(_0x54489f[_0xad0e('0x47')]['filter']){_0x1154b1[_0xad0e('0x51')]=_['merge'](_0x1154b1['where'],{'$or':_['map'](_0x1154b1[_0xad0e('0x4b')],function(_0x2535f9){var _0x1efb25={};_0x1efb25[_0x2535f9]={'$like':'%'+_0x54489f[_0xad0e('0x47')][_0xad0e('0x55')]+'%'};return _0x1efb25;})});}_0x1154b1=_[_0xad0e('0x53')]({},_0x1154b1,_0x54489f[_0xad0e('0x56')]);return _0x2841f1[_0xad0e('0x93')](_0x1154b1);}})[_0xad0e('0x10')](function(_0x1d839b){if(_0x1d839b){_0x5543bd=_0x1d839b['length'];if(!_0x54489f['query']['hasOwnProperty'](_0xad0e('0x67'))){_0x1154b1[_0xad0e('0x4e')]=qs[_0xad0e('0x4e')](_0x54489f[_0xad0e('0x47')][_0xad0e('0x4e')]);_0x1154b1['offset']=qs['offset'](_0x54489f[_0xad0e('0x47')][_0xad0e('0x1e')]);}return _0x2841f1[_0xad0e('0x93')](_0x1154b1);}})[_0xad0e('0x10')](function(_0x2faf6b){if(_0x2faf6b){return _0x2faf6b?{'count':_0x5543bd,'rows':_0x2faf6b}:null;}})[_0xad0e('0x10')](respondWithResult(_0xb76aa,null))[_0xad0e('0x19')](handleError(_0xb76aa,null));};exports[_0xad0e('0x94')]=function(_0x3cdc70,_0x5927ab){var _0x334933={'raw':!![],'where':{}};var _0x5d7392={};var _0x266e21={'count':0x0,'rows':[]};return db[_0xad0e('0x57')][_0xad0e('0x65')]({'where':{'id':_0x3cdc70[_0xad0e('0x5c')]['id']}})[_0xad0e('0x10')](handleEntityNotFound(_0x5927ab,null))['then'](function(_0x284f55){if(_0x284f55){_0x5d7392[_0xad0e('0x46')]=_[_0xad0e('0x48')](db[_0xad0e('0x95')][_0xad0e('0x42')]);_0x5d7392[_0xad0e('0x47')]=_['keys'](_0x3cdc70[_0xad0e('0x47')]);_0x5d7392[_0xad0e('0x49')]=_[_0xad0e('0x4a')](_0x5d7392[_0xad0e('0x46')],_0x5d7392['query']);_0x334933[_0xad0e('0x4b')]=_['intersection'](_0x5d7392[_0xad0e('0x46')],qs[_0xad0e('0x4c')](_0x3cdc70[_0xad0e('0x47')]['fields']));_0x334933[_0xad0e('0x4b')]=_0x334933['attributes'][_0xad0e('0x66')]?_0x334933[_0xad0e('0x4b')]:_0x5d7392[_0xad0e('0x46')];if(!_0x3cdc70[_0xad0e('0x47')][_0xad0e('0x4d')](_0xad0e('0x67'))){_0x334933[_0xad0e('0x4e')]=qs[_0xad0e('0x4e')](_0x3cdc70[_0xad0e('0x47')][_0xad0e('0x4e')]);_0x334933[_0xad0e('0x1e')]=qs[_0xad0e('0x1e')](_0x3cdc70[_0xad0e('0x47')]['offset']);}_0x334933[_0xad0e('0x4f')]=qs[_0xad0e('0x50')](_0x3cdc70[_0xad0e('0x47')][_0xad0e('0x50')]);_0x334933[_0xad0e('0x51')]=qs[_0xad0e('0x49')](_[_0xad0e('0x52')](_0x3cdc70[_0xad0e('0x47')],_0x5d7392['filters']));_0x334933[_0xad0e('0x51')][_0xad0e('0x6d')]=_0x284f55['id'];if(_0x3cdc70[_0xad0e('0x47')]['filter']){_0x334933['where']=_['merge'](_0x334933[_0xad0e('0x51')],{'$or':_['map'](_0x334933['attributes'],function(_0x4494db){var _0x552e53={};_0x552e53[_0x4494db]={'$like':'%'+_0x3cdc70[_0xad0e('0x47')][_0xad0e('0x55')]+'%'};return _0x552e53;})});}if(_0x3cdc70[_0xad0e('0x47')]['$gte']){var _0x395055=_0x3cdc70['query']['$gte']['split'](',');var _0x50349f={};_0x50349f[_0x395055[0x0]]={'$gte':moment(_0x395055[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x334933[_0xad0e('0x51')]=_[_0xad0e('0x53')](_0x334933[_0xad0e('0x51')],_0x50349f);}_0x334933=_[_0xad0e('0x53')]({},_0x334933,_0x3cdc70[_0xad0e('0x56')]);return db[_0xad0e('0x95')][_0xad0e('0x20')]({'where':_0x334933[_0xad0e('0x51')]})[_0xad0e('0x10')](function(_0x320735){_0x266e21['count']=_0x320735;if(_0x3cdc70[_0xad0e('0x47')][_0xad0e('0x58')]){_0x334933[_0xad0e('0x59')]=[{'all':!![]}];}return db[_0xad0e('0x95')][_0xad0e('0x5a')](_0x334933);})[_0xad0e('0x10')](function(_0x4f3620){if(_0x3cdc70[_0xad0e('0x47')][_0xad0e('0x96')]===_0xad0e('0x97')){for(var _0x210d21=0x0;_0x210d21<_0x4f3620[_0xad0e('0x66')];_0x210d21++){_0x4f3620[_0x210d21][_0xad0e('0x60')]=juice(_0x4f3620[_0x210d21][_0xad0e('0x60')]);}}_0x266e21['rows']=_0x4f3620;return _0x266e21;});}})[_0xad0e('0x10')](respondWithFilteredResult(_0x5927ab,_0x334933))[_0xad0e('0x19')](handleError(_0x5927ab,null));};exports[_0xad0e('0x92')]=function(_0x2c5b78,_0x621a0c){var _0x242569,_0x470b46={},_0x230d46;if(_0x2c5b78[_0xad0e('0x60')]['to']){_0x230d46=_0x2c5b78[_0xad0e('0x60')]['to'][_0xad0e('0x98')](',')[0x0];}return db[_0xad0e('0x57')][_0xad0e('0x5f')]({'where':{'id':_0x2c5b78[_0xad0e('0x5c')]['id']},'include':[{'model':db[_0xad0e('0x99')],'as':_0xad0e('0x9a'),'include':[{'model':db['CmContact'],'as':_0xad0e('0x9b'),'where':{'email':_0x230d46},'limit':0x1,'order':[[_0xad0e('0x9c'),_0xad0e('0x9d')]]}]},{'model':db[_0xad0e('0x5d')],'as':'Smtp','raw':!![],'include':[{'model':db['CloudProvider'],'as':_0xad0e('0x9e'),'raw':!![]}]}]})[_0xad0e('0x10')](handleEntityNotFound(_0x621a0c,null))[_0xad0e('0x10')](function(_0x3ad8db){if(!_0x3ad8db)return;_0x242569=_0x3ad8db;if(!_0x3ad8db[_0xad0e('0x3e')])throw new Error(_0xad0e('0x9f'));if(_[_0xad0e('0x72')](_0x2c5b78[_0xad0e('0x60')][_0xad0e('0xa0')])){_0x2c5b78[_0xad0e('0x60')][_0xad0e('0xa0')]=util[_0xad0e('0xa1')](_0xad0e('0xa2'),_0x3ad8db['name'],_0x3ad8db[_0xad0e('0x70')]||_0x3ad8db[_0xad0e('0x3e')][_0xad0e('0x32')]);}if(_0x2c5b78[_0xad0e('0x60')]['attachments']&&_0x2c5b78['body'][_0xad0e('0xa3')][_0xad0e('0x66')]){for(var _0x47510c=0x0;_0x47510c<_0x2c5b78[_0xad0e('0x60')][_0xad0e('0xa3')][_0xad0e('0x66')];_0x47510c+=0x1){_0x2c5b78[_0xad0e('0x60')][_0xad0e('0xa3')][_0x47510c]={'filename':_0x2c5b78[_0xad0e('0x60')][_0xad0e('0xa3')][_0x47510c]['name'],'path':path[_0xad0e('0xa4')](config[_0xad0e('0xa5')],_0xad0e('0xa6'),_0x2c5b78[_0xad0e('0x60')][_0xad0e('0xa3')][_0x47510c][_0xad0e('0xa7')])};}}var _0x4f1fe5=_0x3ad8db[_0xad0e('0xa8')]();return respondWithRpcPromise(_0xad0e('0xa9'),_0xad0e('0xaa'),{'account':_0x4f1fe5,'message':_0x2c5b78[_0xad0e('0x60')]});})[_0xad0e('0x10')](function(_0x4be0b4){if(!_0x4be0b4)return;_0x470b46=_0x4be0b4;if(!_0x242569['List'])throw new Error(_0xad0e('0xab'));if(_0x242569['List'][_0xad0e('0x9b')][_0xad0e('0x66')])return _0x242569[_0xad0e('0x9a')][_0xad0e('0x9b')][0x0];return db[_0xad0e('0x84')][_0xad0e('0x64')](_[_0xad0e('0xa')](_0x2c5b78[_0xad0e('0x60')],{'firstName':_0x2c5b78['body']['to'],'email':_0x2c5b78[_0xad0e('0x60')]['to'],'phone':_0x2c5b78[_0xad0e('0x60')]['to'],'ListId':_0x242569['ListId']}));})[_0xad0e('0x10')](function(_0x68bc35){if(!_0x68bc35)return;var _0x267d47={'UserId':_0x2c5b78['user']['id'],'ContactId':_0x68bc35['id'],'MailAccountId':_0x242569['id'],'inReplyTo':_0x470b46[_0xad0e('0xac')],'to':_0x2c5b78[_0xad0e('0x60')][_0xad0e('0xa0')],'cc':_0x2c5b78['body']['cc'],'subject':_0x2c5b78[_0xad0e('0x60')][_0xad0e('0xad')],'attach':_0x2c5b78[_0xad0e('0x60')][_0xad0e('0xae')],'firstMsgDirection':_0xad0e('0xaf'),'lastMsgAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':_0xad0e('0xaf'),'Messages':[_[_0xad0e('0x53')](_0x2c5b78[_0xad0e('0x60')],{'messageId':_0x470b46[_0xad0e('0xac')],'sentAt':moment()['format'](_0xad0e('0xb0')),'read':!![],'MailAccountId':_0x242569['id'],'UserId':_0x2c5b78[_0xad0e('0x32')]['id'],'ContactId':_0x68bc35['id']})]};if(_0x2c5b78[_0xad0e('0x60')][_0xad0e('0xb1')]){_0x267d47=_[_0xad0e('0x53')](_0x267d47,_0x2c5b78[_0xad0e('0x60')][_0xad0e('0xb1')]);}return db[_0xad0e('0x80')][_0xad0e('0x64')](_0x267d47,{'include':[{'model':db[_0xad0e('0x95')],'as':_0xad0e('0xb2')}]});})[_0xad0e('0x10')](respondWithResult(_0x621a0c,null))[_0xad0e('0x19')](handleError(_0x621a0c,null));};exports[_0xad0e('0xb3')]=function(_0x4f9774,_0xafc6f9){return db[_0xad0e('0x57')]['find']({'where':{'id':_0x4f9774[_0xad0e('0x5c')]['id']},'include':[{'model':db[_0xad0e('0x5d')],'as':_0xad0e('0x3e'),'raw':!![],'include':[{'model':db[_0xad0e('0x9e')],'as':_0xad0e('0x9e'),'raw':!![]}]}]})[_0xad0e('0x10')](handleEntityNotFound(_0xafc6f9,null))[_0xad0e('0x10')](function(_0x2286c2){if(!_0x2286c2[_0xad0e('0x3e')])return;var _0x5188c5=_0x2286c2['getSmtpOptions']();return respondWithRpcPromise('VerifySmtp','verifySmtp',{'account':_0x5188c5});})[_0xad0e('0x10')](respondWithResult(_0xafc6f9,null))['catch'](handleError(_0xafc6f9,null));};exports[_0xad0e('0x23')]=function(_0x250681,_0x5aca24){return db[_0xad0e('0x57')][_0xad0e('0x5f')]({'where':{'id':_0x250681[_0xad0e('0x5c')]['id']}})[_0xad0e('0x10')](handleEntityNotFound(_0x5aca24,null))['then'](function(_0x522d72){if(_0x522d72&&_0x522d72[_0xad0e('0x3b')]){throw new db[(_0xad0e('0xb4'))][(_0xad0e('0xb5'))](_0xad0e('0xb6'));}return _0x522d72;})[_0xad0e('0x10')](removeEntity(_0x5aca24,null))['catch'](handleError(_0x5aca24,null));};exports['addAgents']=function(_0x279e12,_0x46cc2b){return db[_0xad0e('0x57')][_0xad0e('0x5f')]({'where':{'id':_0x279e12[_0xad0e('0x5c')]['id']}})[_0xad0e('0x10')](handleEntityNotFound(_0x46cc2b,null))[_0xad0e('0x10')](function(_0x4b1a61){if(_0x4b1a61){return _0x4b1a61[_0xad0e('0xb7')](_0x279e12[_0xad0e('0x60')][_0xad0e('0x6a')],_[_0xad0e('0x82')](_0x279e12[_0xad0e('0x60')],[_0xad0e('0x6a'),'id'])||{})[_0xad0e('0xb8')](function(_0x5562cd){for(var _0x3fb250=0x0;_0x3fb250<_0x279e12[_0xad0e('0x60')]['ids'][_0xad0e('0x66')];_0x3fb250+=0x1){socket[_0xad0e('0xb9')]('userMailAccount:save',{'UserId':Number(_0x279e12['body']['ids'][_0x3fb250]),'MailAccountId':Number(_0x279e12[_0xad0e('0x5c')]['id'])});}return _0x5562cd;});}})['then'](respondWithResult(_0x46cc2b,null))[_0xad0e('0x19')](handleError(_0x46cc2b,null));};exports[_0xad0e('0xba')]=function(_0x46f16,_0x205919){return db[_0xad0e('0x57')]['find']({'where':{'id':_0x46f16['params']['id']}})[_0xad0e('0x10')](handleEntityNotFound(_0x205919,null))['then'](function(_0x3e40a8){if(_0x3e40a8){return _0x3e40a8[_0xad0e('0xba')](_0x46f16[_0xad0e('0x47')][_0xad0e('0x6a')])[_0xad0e('0x10')](function(){if(_[_0xad0e('0xbb')](_0x46f16[_0xad0e('0x47')][_0xad0e('0x6a')])){for(var _0x9d1a35=0x0;_0x9d1a35<_0x46f16[_0xad0e('0x47')][_0xad0e('0x6a')][_0xad0e('0x66')];_0x9d1a35+=0x1){socket[_0xad0e('0xb9')](_0xad0e('0xbc'),{'UserId':Number(_0x46f16['query'][_0xad0e('0x6a')][_0x9d1a35]),'MailAccountId':Number(_0x46f16[_0xad0e('0x5c')]['id'])});}}else{socket[_0xad0e('0xb9')](_0xad0e('0xbc'),{'UserId':Number(_0x46f16['query'][_0xad0e('0x6a')]),'MailAccountId':Number(_0x46f16[_0xad0e('0x5c')]['id'])});}});}})[_0xad0e('0x10')](respondWithStatusCode(_0x205919,null))[_0xad0e('0x19')](handleError(_0x205919,null));};exports['getAgents']=function(_0x317c3e,_0x2ebe08){var _0x489c88={};var _0x10442e={};var _0x413e14;var _0x2e2484;return db[_0xad0e('0x57')][_0xad0e('0x65')]({'where':{'id':_0x317c3e[_0xad0e('0x5c')]['id']}})['then'](handleEntityNotFound(_0x2ebe08,null))['then'](function(_0x3a96f0){if(_0x3a96f0){_0x413e14=_0x3a96f0;_0x10442e[_0xad0e('0x46')]=_[_0xad0e('0x48')](db[_0xad0e('0xbd')][_0xad0e('0x42')]);_0x10442e[_0xad0e('0x47')]=_[_0xad0e('0x48')](_0x317c3e[_0xad0e('0x47')]);_0x10442e[_0xad0e('0x49')]=_[_0xad0e('0x4a')](_0x10442e[_0xad0e('0x46')],_0x10442e[_0xad0e('0x47')]);_0x489c88['attributes']=_[_0xad0e('0x4a')](_0x10442e[_0xad0e('0x46')],qs['fields'](_0x317c3e[_0xad0e('0x47')][_0xad0e('0x4c')]));_0x489c88[_0xad0e('0x4b')]=_0x489c88['attributes'][_0xad0e('0x66')]?_0x489c88[_0xad0e('0x4b')]:_0x10442e[_0xad0e('0x46')];_0x489c88[_0xad0e('0x4f')]=qs[_0xad0e('0x50')](_0x317c3e['query']['sort']);_0x489c88[_0xad0e('0x51')]=qs[_0xad0e('0x49')](_[_0xad0e('0x52')](_0x317c3e['query'],_0x10442e[_0xad0e('0x49')]));if(_0x317c3e[_0xad0e('0x47')][_0xad0e('0x55')]){_0x489c88[_0xad0e('0x51')]=_[_0xad0e('0x53')](_0x489c88['where'],{'$or':_[_0xad0e('0x41')](_0x489c88[_0xad0e('0x4b')],function(_0x25f7cb){var _0x39b1cf={};_0x39b1cf[_0x25f7cb]={'$like':'%'+_0x317c3e['query'][_0xad0e('0x55')]+'%'};return _0x39b1cf;})});}_0x489c88=_[_0xad0e('0x53')]({},_0x489c88,_0x317c3e['options']);return _0x413e14['getAgents'](_0x489c88);}})[_0xad0e('0x10')](function(_0x5e6208){if(_0x5e6208){_0x2e2484=_0x5e6208['length'];if(!_0x317c3e['query']['hasOwnProperty'](_0xad0e('0x67'))){_0x489c88[_0xad0e('0x4e')]=qs[_0xad0e('0x4e')](_0x317c3e[_0xad0e('0x47')]['limit']);_0x489c88[_0xad0e('0x1e')]=qs[_0xad0e('0x1e')](_0x317c3e['query']['offset']);}return _0x413e14[_0xad0e('0xbe')](_0x489c88);}})[_0xad0e('0x10')](function(_0x4b722d){if(_0x4b722d){return _0x4b722d?{'count':_0x2e2484,'rows':_0x4b722d}:null;}})[_0xad0e('0x10')](respondWithResult(_0x2ebe08,null))[_0xad0e('0x19')](handleError(_0x2ebe08,null));};
\ No newline at end of file
index a4aa64a..d937843 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1ef=['save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners'];(function(_0xd8d46,_0x1e8829){var _0x30b60e=function(_0x2d776d){while(--_0x2d776d){_0xd8d46['push'](_0xd8d46['shift']());}};_0x30b60e(++_0x1e8829);}(_0xb1ef,0x93));var _0xfb1e=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xb1ef[_0x321bb2];return _0x9c12ed;};'use strict';var EventEmitter=require(_0xfb1e('0x0'));var MailAccount=require(_0xfb1e('0x1'))['db']['MailAccount'];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0xfb1e('0x2')](0x0);var events={'afterCreate':_0xfb1e('0x3'),'afterUpdate':_0xfb1e('0x4'),'afterDestroy':_0xfb1e('0x5')};function emitEvent(_0xb70c57){return function(_0x1ce096,_0x477ee0,_0x4b7622){MailAccountEvents['emit'](_0xb70c57+':'+_0x1ce096['id'],_0x1ce096);MailAccountEvents[_0xfb1e('0x6')](_0xb70c57,_0x1ce096);_0x4b7622(null);};}for(var e in events){if(events[_0xfb1e('0x7')](e)){var event=events[e];MailAccount[_0xfb1e('0x8')](e,emitEvent(event));}}module[_0xfb1e('0x9')]=MailAccountEvents;
\ No newline at end of file
+var _0x29eb=['hasOwnProperty','hook','exports','events','../../mysqldb','MailAccount','save','update','remove','emit'];(function(_0x1b63ad,_0x4b2d70){var _0xff794a=function(_0x36af61){while(--_0x36af61){_0x1b63ad['push'](_0x1b63ad['shift']());}};_0xff794a(++_0x4b2d70);}(_0x29eb,0x1c5));var _0xb29e=function(_0x458cc9,_0x339c9c){_0x458cc9=_0x458cc9-0x0;var _0x2ed851=_0x29eb[_0x458cc9];return _0x2ed851;};'use strict';var EventEmitter=require(_0xb29e('0x0'));var MailAccount=require(_0xb29e('0x1'))['db'][_0xb29e('0x2')];var MailAccountEvents=new EventEmitter();MailAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xb29e('0x3'),'afterUpdate':_0xb29e('0x4'),'afterDestroy':_0xb29e('0x5')};function emitEvent(_0x4a9b91){return function(_0x29356f,_0x4c648e,_0x14c35b){MailAccountEvents[_0xb29e('0x6')](_0x4a9b91+':'+_0x29356f['id'],_0x29356f);MailAccountEvents[_0xb29e('0x6')](_0x4a9b91,_0x29356f);_0x14c35b(null);};}for(var e in events){if(events[_0xb29e('0x7')](e)){var event=events[e];MailAccount[_0xb29e('0x8')](e,emitEvent(event));}}module[_0xb29e('0x9')]=MailAccountEvents;
\ No newline at end of file
index 0e61436..350ddb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e8a=['exports','provider','custom','Smtp','port','secure','authentication','modernAuthentication','CloudProvider','Cloud\x20Provider\x20configuration\x20not\x20found','auth','user','pass'];(function(_0x39e2f2,_0x292945){var _0x2f931=function(_0x49f523){while(--_0x49f523){_0x39e2f2['push'](_0x39e2f2['shift']());}};_0x2f931(++_0x292945);}(_0x2e8a,0x1e1));var _0xa2e8=function(_0x93942f,_0xb48547){_0x93942f=_0x93942f-0x0;var _0x23fcd8=_0x2e8a[_0x93942f];return _0x23fcd8;};'use strict';var attributes=require('./mailAccount.attributes');module[_0xa2e8('0x0')]=function(_0x490afb){return _0x490afb['define']('MailAccount',attributes,{'tableName':'mail_accounts','paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getSmtpOptions':function(){var _0x332e08=this;var _0x568b5f={'id':_0x332e08['id'],'tls':{'rejectUnauthorized':![]}};if(_0x332e08[_0xa2e8('0x1')]!==_0xa2e8('0x2')){_0x568b5f['service']=_0x332e08[_0xa2e8('0x1')];}else{_0x568b5f['host']=_0x332e08['Smtp']['host'];_0x568b5f['port']=_0x332e08[_0xa2e8('0x3')][_0xa2e8('0x4')];_0x568b5f[_0xa2e8('0x5')]=_0x332e08[_0xa2e8('0x3')][_0xa2e8('0x5')];}if(_0x332e08[_0xa2e8('0x3')][_0xa2e8('0x6')]){if(_0x332e08['Smtp'][_0xa2e8('0x7')]){if(!_0x332e08[_0xa2e8('0x3')][_0xa2e8('0x8')])throw new Error(_0xa2e8('0x9'));_0x568b5f[_0xa2e8('0xa')]={'type':'OAuth2','user':_0x332e08[_0xa2e8('0x3')][_0xa2e8('0xb')],'accessToken':_0x332e08[_0xa2e8('0x3')][_0xa2e8('0x8')]['data5']};}else{_0x568b5f[_0xa2e8('0xa')]={'user':_0x332e08['Smtp'][_0xa2e8('0xb')],'pass':_0x332e08['Smtp'][_0xa2e8('0xc')]};}}return _0x568b5f;}}});};
\ No newline at end of file
+var _0xaf35=['data5','auth','pass','./mailAccount.attributes','exports','MailAccount','provider','service','host','Smtp','port','secure','authentication','CloudProvider','OAuth2','user'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xaf35,0x1d3));var _0x5af3=function(_0x1db481,_0x1627b2){_0x1db481=_0x1db481-0x0;var _0x3db95b=_0xaf35[_0x1db481];return _0x3db95b;};'use strict';var attributes=require(_0x5af3('0x0'));module[_0x5af3('0x1')]=function(_0x480d87){return _0x480d87['define'](_0x5af3('0x2'),attributes,{'tableName':'mail_accounts','paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getSmtpOptions':function(){var _0x8d10dc=this;var _0x535742={'id':_0x8d10dc['id'],'tls':{'rejectUnauthorized':![]}};if(_0x8d10dc[_0x5af3('0x3')]!=='custom'){_0x535742[_0x5af3('0x4')]=_0x8d10dc[_0x5af3('0x3')];}else{_0x535742['host']=_0x8d10dc['Smtp'][_0x5af3('0x5')];_0x535742['port']=_0x8d10dc[_0x5af3('0x6')][_0x5af3('0x7')];_0x535742[_0x5af3('0x8')]=_0x8d10dc[_0x5af3('0x6')][_0x5af3('0x8')];}if(_0x8d10dc['Smtp'][_0x5af3('0x9')]){if(_0x8d10dc[_0x5af3('0x6')]['modernAuthentication']){if(!_0x8d10dc['Smtp'][_0x5af3('0xa')])throw new Error('Cloud\x20Provider\x20configuration\x20not\x20found');_0x535742['auth']={'type':_0x5af3('0xb'),'user':_0x8d10dc[_0x5af3('0x6')][_0x5af3('0xc')],'accessToken':_0x8d10dc[_0x5af3('0x6')]['CloudProvider'][_0x5af3('0xd')]};}else{_0x535742[_0x5af3('0xe')]={'user':_0x8d10dc[_0x5af3('0x6')][_0x5af3('0xc')],'pass':_0x8d10dc[_0x5af3('0x6')][_0x5af3('0xf')]};}}return _0x535742;}}});};
\ No newline at end of file
index 7625777..9f4c8b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57ca=['setDataValue','getSmtpOptions','NotifyMailAccount','body','mail','difference','keys','CmContact','createdAt','isNil','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','from','account','CmList','Contacts','updatedAt','DESC','MailApplication','Applications','List','omit','applications','list','orderBy','asc','push','length','close','*,*,*,*','ListId','contact','messageId','subject','attach','format','YYYY-MM-DD\x20HH:mm:ss','MailMessage','Messages','inReplyTo','MailInteraction','create','Contact\x20not\x20found','spread','update','interaction','get','created','originCc','bcc','Email','Attachment','Attachments','UserId','User','unshift','name','waitForTheAssignedAgent','startRouting','Start','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','register','then','MailAccount,\x20%s,\x20%s','debug','MailAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetMailAccount','findAll','options','raw','where','attributes','limit','include','map','model','info','ShowMailAccount','MailAccount','find'];(function(_0x3d184c,_0x1eddec){var _0xf54365=function(_0x24df76){while(--_0x24df76){_0x3d184c['push'](_0x3d184c['shift']());}};_0xf54365(++_0x1eddec);}(_0x57ca,0x108));var _0xa57c=function(_0x364419,_0x3eb3ce){_0x364419=_0x364419-0x0;var _0x3a7331=_0x57ca[_0x364419];return _0x3a7331;};'use strict';var _=require('lodash');var moment=require(_0xa57c('0x0'));var BPromise=require(_0xa57c('0x1'));var rs=require('randomstring');var Redis=require(_0xa57c('0x2'));var db=require(_0xa57c('0x3'))['db'];var logger=require(_0xa57c('0x4'))(_0xa57c('0x5'));var config=require(_0xa57c('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xa57c('0x7')][_0xa57c('0x8')]({'port':0x232c});config[_0xa57c('0x9')]=_[_0xa57c('0xa')](config[_0xa57c('0x9')],{'host':_0xa57c('0xb'),'port':0x18eb});var socket=require(_0xa57c('0xc'))(new Redis(config[_0xa57c('0x9')]));require('./mailAccount.socket')[_0xa57c('0xd')](socket);function respondWithRpcPromise(_0x4b51d8,_0x46ba92,_0x932dcc){return new BPromise(function(_0x4fa5ed,_0x156bca){return client['request'](_0x4b51d8,_0x932dcc)[_0xa57c('0xe')](function(_0x44b221){logger['info'](_0xa57c('0xf'),_0x46ba92,'request\x20sent');logger[_0xa57c('0x10')](_0xa57c('0x11'),_0x46ba92,_0xa57c('0x12'),JSON[_0xa57c('0x13')](_0x44b221));if(_0x44b221[_0xa57c('0x14')]){if(_0x44b221['error'][_0xa57c('0x15')]===0x1f4){logger['error'](_0xa57c('0xf'),_0x46ba92,_0x44b221[_0xa57c('0x14')][_0xa57c('0x16')]);return _0x156bca(_0x44b221[_0xa57c('0x14')][_0xa57c('0x16')]);}logger[_0xa57c('0x14')](_0xa57c('0xf'),_0x46ba92,_0x44b221['error'][_0xa57c('0x16')]);return _0x4fa5ed(_0x44b221[_0xa57c('0x14')][_0xa57c('0x16')]);}else{logger['info'](_0xa57c('0xf'),_0x46ba92,'request\x20sent');_0x4fa5ed(_0x44b221[_0xa57c('0x17')][_0xa57c('0x16')]);}})[_0xa57c('0x18')](function(_0xe3d505){logger[_0xa57c('0x14')](_0xa57c('0xf'),_0x46ba92,_0xe3d505);_0x156bca(_0xe3d505);});});}exports[_0xa57c('0x19')]=function(_0x595c7a){var _0x4e4399=this;return new Promise(function(_0x8a8856,_0x4a53ab){return db['MailAccount'][_0xa57c('0x1a')]({'raw':_0x595c7a[_0xa57c('0x1b')]?_0x595c7a[_0xa57c('0x1b')][_0xa57c('0x1c')]===undefined?!![]:![]:!![],'where':_0x595c7a['options']?_0x595c7a[_0xa57c('0x1b')][_0xa57c('0x1d')]||null:null,'attributes':_0x595c7a[_0xa57c('0x1b')]?_0x595c7a[_0xa57c('0x1b')][_0xa57c('0x1e')]||null:null,'limit':_0x595c7a[_0xa57c('0x1b')]?_0x595c7a[_0xa57c('0x1b')][_0xa57c('0x1f')]||null:null,'include':_0x595c7a[_0xa57c('0x1b')]?_0x595c7a[_0xa57c('0x1b')][_0xa57c('0x20')]?_[_0xa57c('0x21')](_0x595c7a[_0xa57c('0x1b')][_0xa57c('0x20')],function(_0x431bec){return{'model':db[_0x431bec['model']],'as':_0x431bec['as'],'attributes':_0x431bec[_0xa57c('0x1e')],'include':_0x431bec[_0xa57c('0x20')]?_[_0xa57c('0x21')](_0x431bec[_0xa57c('0x20')],function(_0x315ad7){return{'model':db[_0x315ad7[_0xa57c('0x22')]],'as':_0x315ad7['as'],'attributes':_0x315ad7[_0xa57c('0x1e')],'include':_0x315ad7[_0xa57c('0x20')]?_[_0xa57c('0x21')](_0x315ad7[_0xa57c('0x20')],function(_0x57ebe0){return{'model':db[_0x57ebe0[_0xa57c('0x22')]],'as':_0x57ebe0['as'],'attributes':_0x57ebe0['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x257661){logger[_0xa57c('0x23')]('GetMailAccount',_0x595c7a);logger[_0xa57c('0x10')](_0xa57c('0x19'),_0x595c7a,JSON[_0xa57c('0x13')](_0x257661));_0x8a8856(_0x257661);})['catch'](function(_0xd779f1){logger['error'](_0xa57c('0x19'),_0xd779f1['message'],_0x595c7a);_0x4a53ab(_0x4e4399[_0xa57c('0x14')](0x1f4,_0xd779f1['message']));});});};exports[_0xa57c('0x24')]=function(_0x532164){var _0x9e02bb=this;return new Promise(function(_0x1d82d9,_0x43c8f3){return db[_0xa57c('0x25')][_0xa57c('0x26')]({'raw':_0x532164[_0xa57c('0x1b')]?_0x532164[_0xa57c('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x532164[_0xa57c('0x1b')]?_0x532164['options'][_0xa57c('0x1d')]||null:null,'attributes':_0x532164[_0xa57c('0x1b')]?_0x532164[_0xa57c('0x1b')]['attributes']||null:null,'include':_0x532164[_0xa57c('0x1b')]?_0x532164['options'][_0xa57c('0x20')]?_['map'](_0x532164[_0xa57c('0x1b')]['include'],function(_0x433116){return{'model':db[_0x433116[_0xa57c('0x22')]],'as':_0x433116['as'],'attributes':_0x433116['attributes'],'include':_0x433116[_0xa57c('0x20')]?_['map'](_0x433116[_0xa57c('0x20')],function(_0x5c56d3){return{'model':db[_0x5c56d3[_0xa57c('0x22')]],'as':_0x5c56d3['as'],'attributes':_0x5c56d3[_0xa57c('0x1e')],'include':_0x5c56d3[_0xa57c('0x20')]?_[_0xa57c('0x21')](_0x5c56d3[_0xa57c('0x20')],function(_0x44350f){return{'model':db[_0x44350f['model']],'as':_0x44350f['as'],'attributes':_0x44350f['attributes']};}):[]};}):[]};}):[]:[]})[_0xa57c('0xe')](function(_0x13e390){if(_0x532164[_0xa57c('0x1b')]['smtp']===!![])_0x13e390[_0xa57c('0x27')]('smtpOptions',_0x13e390[_0xa57c('0x28')]());logger[_0xa57c('0x23')]('ShowMailAccount',_0x532164);logger['debug']('ShowMailAccount',_0x532164,JSON[_0xa57c('0x13')](_0x13e390));_0x1d82d9(_0x13e390);})[_0xa57c('0x18')](function(_0x269a19){logger[_0xa57c('0x14')](_0xa57c('0x24'),_0x269a19[_0xa57c('0x16')],_0x532164);_0x43c8f3(_0x9e02bb['error'](0x1f4,_0x269a19[_0xa57c('0x16')]));});});};exports[_0xa57c('0x29')]=function(_0x5a5490){var _0x5ed42d=this;return new Promise(function(_0x5e10b,_0x203375){var _0x5af5e9={'body':_0x5a5490[_0xa57c('0x2a')],'channel':_0xa57c('0x2b')};var _0x2112b7=_[_0xa57c('0x2c')](_[_0xa57c('0x2d')](db[_0xa57c('0x2e')]['rawAttributes']),[_0xa57c('0x2f'),'updatedAt','CompanyId','ListId']);var _0x520383=![];if(_0x5a5490['body']['id']){delete _0x5a5490[_0xa57c('0x2a')]['id'];}if(_[_0xa57c('0x30')](_0x5a5490[_0xa57c('0x2a')]['from'])){return _0x203375(_0x5ed42d['error'](0x1f4,'from\x20is\x20mandatory'));}if(_[_0xa57c('0x30')](_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x2a')])||_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x2a')]===''){return _0x203375(_0x5ed42d[_0xa57c('0x14')](0x1f4,'body\x20is\x20mandatory\x20and\x20not\x20empty'));}if(_[_0xa57c('0x30')](_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x31')])){return _0x203375(_0x5ed42d[_0xa57c('0x14')](0x1f4,_0xa57c('0x32')+_0x2112b7));}if(!_[_0xa57c('0x33')](_0x2112b7,_0x5a5490['body'][_0xa57c('0x31')])){return _0x203375(_0x5ed42d[_0xa57c('0x14')](0x1f4,_0xa57c('0x34')+_0x2112b7));}var _0x14e943={};_0x14e943[_0x5a5490[_0xa57c('0x2a')]['mapKey']]=_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x35')];return db[_0xa57c('0x25')][_0xa57c('0x26')]({'where':{'id':_0x5a5490[_0xa57c('0x36')]['id']},'include':[{'model':db[_0xa57c('0x37')],'as':'List','include':[{'model':db[_0xa57c('0x2e')],'as':_0xa57c('0x38'),'where':_0x14e943,'limit':0x1,'order':[[_0xa57c('0x39'),_0xa57c('0x3a')]]}]},{'model':db[_0xa57c('0x3b')],'as':_0xa57c('0x3c')},{'model':db['MailServerOut'],'as':'Smtp','include':[{'model':db['CloudProvider'],'as':'CloudProvider'}]}]})[_0xa57c('0xe')](function(_0x49492f){if(_0x49492f&&_0x49492f[_0xa57c('0x3d')]){var _0xae87=_0x49492f['get']({'plain':!![]});_0x5af5e9[_0xa57c('0x36')]=_[_0xa57c('0x3e')](_0xae87,[_0xa57c('0x3c'),_0xa57c('0x3d')]);_0x5af5e9[_0xa57c('0x36')]['smtpOptions']=_0x49492f[_0xa57c('0x28')]();_0x5af5e9[_0xa57c('0x3f')]=_0xae87[_0xa57c('0x3c')];_0x5af5e9[_0xa57c('0x40')]=_0xae87[_0xa57c('0x3d')];_0x5af5e9['applications']=_[_0xa57c('0x41')](_0x5af5e9['applications'],['priority'],[_0xa57c('0x42')]);if(_0x5af5e9[_0xa57c('0x36')]&&_0x5af5e9[_0xa57c('0x36')]['autoclose']){_0x5af5e9['applications'][_0xa57c('0x43')]({'id':0x0,'priority':_0x5af5e9[_0xa57c('0x3f')][_0xa57c('0x44')]+0x1,'app':_0xa57c('0x45'),'appdata':'autoclose','interval':_0xa57c('0x46')});}if(_0x5af5e9[_0xa57c('0x36')][_0xa57c('0x3c')]){delete _0x5af5e9['account']['Applications'];}if(_0x5af5e9[_0xa57c('0x36')][_0xa57c('0x3d')]){delete _0x5af5e9['account'][_0xa57c('0x3d')];}if(_0xae87[_0xa57c('0x3d')][_0xa57c('0x38')][_0xa57c('0x44')]){return _0xae87[_0xa57c('0x3d')][_0xa57c('0x38')][0x0];}var _0x4fc413=_['defaults'](_0x5a5490['body'],{'firstName':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x35')],'ListId':_0xae87[_0xa57c('0x47')]});_0x4fc413[_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x31')]]=_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x35')];return db[_0xa57c('0x2e')]['create'](_0x4fc413);}else{throw new Error('List\x20not\x20found');}})[_0xa57c('0xe')](function(_0x4e18ad){_0x5af5e9[_0xa57c('0x48')]=_0x4e18ad;if(_0x4e18ad){if(!_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')]['messageId']){_0x5a5490[_0xa57c('0x2a')]['message'][_0xa57c('0x49')]=rs['generate']()+'\x20'+_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')][_0xa57c('0x35')];}var _0x26a8e1={'ContactId':_0x4e18ad['id'],'MailAccountId':_0x5a5490['account']['id'],'inReplyTo':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')][_0xa57c('0x49')],'to':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')]['from'],'cc':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')]['cc'],'subject':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')][_0xa57c('0x4a')],'attach':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')][_0xa57c('0x4b')],'lastMsgAt':moment()[_0xa57c('0x4c')](_0xa57c('0x4d')),'lastMsgDirection':'in'};return db['MailInteraction'][_0xa57c('0x26')]({'where':{'closed':![],'MailAccountId':_0x5a5490[_0xa57c('0x36')]['id']},'include':[{'model':db[_0xa57c('0x4e')],'as':_0xa57c('0x4f'),'attributes':[_0xa57c('0x49')],'where':{'messageId':_0x5a5490[_0xa57c('0x2a')]['message'][_0xa57c('0x50')]}}]})[_0xa57c('0xe')](function(_0x521acc){if(_0x521acc){return[_0x521acc,![]];}return db[_0xa57c('0x51')][_0xa57c('0x52')](_0x26a8e1)[_0xa57c('0xe')](function(_0xa78a75){return[_0xa78a75,!![]];});});}else{throw new Error(_0xa57c('0x53'));}})[_0xa57c('0x54')](function(_0x24efa0,_0x5e1103){if(_0x24efa0){_0x520383=_0x5e1103;if(!_0x5e1103){return _0x24efa0[_0xa57c('0x55')]({'inReplyTo':_0x5a5490['body'][_0xa57c('0x16')]['messageId'],'to':_0x5a5490[_0xa57c('0x2a')]['message'][_0xa57c('0x35')],'cc':_0x5a5490[_0xa57c('0x2a')]['message']['cc'],'subject':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')][_0xa57c('0x4a')],'attach':_0x24efa0[_0xa57c('0x4b')]?_0x24efa0['attach']:_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')][_0xa57c('0x4b')],'substatus':null,'substatusAt':moment()[_0xa57c('0x4c')](_0xa57c('0x4d')),'lastMsgAt':moment()[_0xa57c('0x4c')](_0xa57c('0x4d')),'lastMsgDirection':'in'});}else{return _0x24efa0;}}})[_0xa57c('0xe')](function(_0x11c13e){_0x5af5e9[_0xa57c('0x56')]=_0x11c13e[_0xa57c('0x57')]({'plain':!![]});_0x5af5e9[_0xa57c('0x56')][_0xa57c('0x58')]=_0x520383;return db[_0xa57c('0x4e')][_0xa57c('0x52')]({'body':_0x5a5490[_0xa57c('0x2a')]['body'],'MailAccountId':_0x5a5490[_0xa57c('0x36')]['id'],'MailInteractionId':_0x11c13e['id'],'direction':'in','ContactId':_0x5af5e9['contact']['id'],'messageId':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')][_0xa57c('0x49')],'from':_0x5a5490['body'][_0xa57c('0x16')][_0xa57c('0x35')],'to':_0x5a5490[_0xa57c('0x2a')]['message']['to'],'cc':_0x5a5490['body'][_0xa57c('0x16')]['cc'],'subject':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')][_0xa57c('0x4a')],'attach':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')][_0xa57c('0x4b')],'Attachments':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')]['attachments'],'originTo':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')]['originTo'],'originCc':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')][_0xa57c('0x59')],'bcc':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')][_0xa57c('0x5a')],'ChatWebsiteId':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')]['ChatWebsiteId']||null,'originChannel':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')]['originChannel']||_0xa57c('0x5b'),'ChatOfflineMessageId':_0x5a5490[_0xa57c('0x2a')]['message']['ChatOfflineMessageId']||null},{'include':[{'model':db[_0xa57c('0x5c')],'as':_0xa57c('0x5d')}]});})[_0xa57c('0xe')](function(_0x1604d6){_0x5af5e9[_0xa57c('0x16')]=_0x1604d6;if(_0x5af5e9['interaction'][_0xa57c('0x5e')]){return db[_0xa57c('0x5f')][_0xa57c('0x26')]({'attributes':['id','name'],'where':{'id':_0x5af5e9[_0xa57c('0x56')]['UserId']}})[_0xa57c('0xe')](function(_0x2963cb){if(_0x2963cb){_0x5af5e9[_0xa57c('0x3f')][_0xa57c('0x60')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x2963cb[_0xa57c('0x61')]+','+(_0x5af5e9[_0xa57c('0x36')][_0xa57c('0x62')]||0xa),'interval':_0xa57c('0x46')});}return respondWithRpcPromise('Start',_0xa57c('0x63'),_0x5af5e9);});}return respondWithRpcPromise(_0xa57c('0x64'),_0xa57c('0x63'),_0x5af5e9);})['then'](function(_0x3da413){_0x5e10b(_0x3da413);})[_0xa57c('0x18')](function(_0x2ed4f4){_0x203375(_0x5ed42d['error'](0x1f4,_0x2ed4f4[_0xa57c('0x16')]));});});};
\ No newline at end of file
+var _0xd943=['MailServerOut','Smtp','CloudProvider','get','account','omit','smtpOptions','applications','list','asc','autoclose','close','Contacts','length','defaults','ListId','List\x20not\x20found','contact','messageId','generate','subject','format','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','Messages','create','spread','attach','interaction','created','attachments','originTo','originCc','ChatWebsiteId','originChannel','Email','ChatOfflineMessageId','Attachment','Attachments','UserId','User','name','agent','waitForTheAssignedAgent','Start','startRouting','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','redis','socket.io-emitter','then','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','MailAccount','findAll','options','where','attributes','limit','include','map','model','stringify','GetMailAccount','ShowMailAccount','smtp','setDataValue','getSmtpOptions','NotifyMailAccount','body','mail','difference','keys','CmContact','updatedAt','CompanyId','isNil','from','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','find','List','DESC','MailApplication','Applications'];(function(_0x12d79d,_0x461854){var _0x517f74=function(_0x43e855){while(--_0x43e855){_0x12d79d['push'](_0x12d79d['shift']());}};_0x517f74(++_0x461854);}(_0xd943,0x15d));var _0x3d94=function(_0x50f4ac,_0x220208){_0x50f4ac=_0x50f4ac-0x0;var _0x13db18=_0xd943[_0x50f4ac];return _0x13db18;};'use strict';var _=require(_0x3d94('0x0'));var moment=require(_0x3d94('0x1'));var BPromise=require(_0x3d94('0x2'));var rs=require(_0x3d94('0x3'));var Redis=require('ioredis');var db=require(_0x3d94('0x4'))['db'];var logger=require(_0x3d94('0x5'))(_0x3d94('0x6'));var config=require(_0x3d94('0x7'));var jayson=require(_0x3d94('0x8'));var client=jayson['client']['http']({'port':0x232c});config[_0x3d94('0x9')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x3d94('0xa'))(new Redis(config[_0x3d94('0x9')]));require('./mailAccount.socket')['register'](socket);function respondWithRpcPromise(_0x3984a3,_0x27e381,_0x1cc58c){return new BPromise(function(_0x5908a7,_0x182066){return client['request'](_0x3984a3,_0x1cc58c)[_0x3d94('0xb')](function(_0x301536){logger['info'](_0x3d94('0xc'),_0x27e381,_0x3d94('0xd'));logger[_0x3d94('0xe')](_0x3d94('0xf'),_0x27e381,_0x3d94('0xd'),JSON['stringify'](_0x301536));if(_0x301536[_0x3d94('0x10')]){if(_0x301536[_0x3d94('0x10')][_0x3d94('0x11')]===0x1f4){logger['error'](_0x3d94('0xc'),_0x27e381,_0x301536[_0x3d94('0x10')][_0x3d94('0x12')]);return _0x182066(_0x301536['error'][_0x3d94('0x12')]);}logger[_0x3d94('0x10')](_0x3d94('0xc'),_0x27e381,_0x301536[_0x3d94('0x10')][_0x3d94('0x12')]);return _0x5908a7(_0x301536[_0x3d94('0x10')][_0x3d94('0x12')]);}else{logger[_0x3d94('0x13')]('MailAccount,\x20%s,\x20%s',_0x27e381,_0x3d94('0xd'));_0x5908a7(_0x301536[_0x3d94('0x14')][_0x3d94('0x12')]);}})[_0x3d94('0x15')](function(_0x4afc92){logger[_0x3d94('0x10')](_0x3d94('0xc'),_0x27e381,_0x4afc92);_0x182066(_0x4afc92);});});}exports['GetMailAccount']=function(_0x9bca24){var _0x59b741=this;return new Promise(function(_0x28bead,_0x193934){return db[_0x3d94('0x16')][_0x3d94('0x17')]({'raw':_0x9bca24[_0x3d94('0x18')]?_0x9bca24['options']['raw']===undefined?!![]:![]:!![],'where':_0x9bca24[_0x3d94('0x18')]?_0x9bca24[_0x3d94('0x18')][_0x3d94('0x19')]||null:null,'attributes':_0x9bca24['options']?_0x9bca24[_0x3d94('0x18')][_0x3d94('0x1a')]||null:null,'limit':_0x9bca24[_0x3d94('0x18')]?_0x9bca24[_0x3d94('0x18')][_0x3d94('0x1b')]||null:null,'include':_0x9bca24[_0x3d94('0x18')]?_0x9bca24[_0x3d94('0x18')][_0x3d94('0x1c')]?_[_0x3d94('0x1d')](_0x9bca24[_0x3d94('0x18')][_0x3d94('0x1c')],function(_0x192839){return{'model':db[_0x192839[_0x3d94('0x1e')]],'as':_0x192839['as'],'attributes':_0x192839[_0x3d94('0x1a')],'include':_0x192839[_0x3d94('0x1c')]?_['map'](_0x192839[_0x3d94('0x1c')],function(_0x558fd2){return{'model':db[_0x558fd2[_0x3d94('0x1e')]],'as':_0x558fd2['as'],'attributes':_0x558fd2[_0x3d94('0x1a')],'include':_0x558fd2[_0x3d94('0x1c')]?_[_0x3d94('0x1d')](_0x558fd2[_0x3d94('0x1c')],function(_0x82b568){return{'model':db[_0x82b568[_0x3d94('0x1e')]],'as':_0x82b568['as'],'attributes':_0x82b568['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x362642){logger['info']('GetMailAccount',_0x9bca24);logger[_0x3d94('0xe')]('GetMailAccount',_0x9bca24,JSON[_0x3d94('0x1f')](_0x362642));_0x28bead(_0x362642);})[_0x3d94('0x15')](function(_0x32403a){logger['error'](_0x3d94('0x20'),_0x32403a['message'],_0x9bca24);_0x193934(_0x59b741[_0x3d94('0x10')](0x1f4,_0x32403a['message']));});});};exports[_0x3d94('0x21')]=function(_0x215ad7){var _0x29b1ff=this;return new Promise(function(_0x246f88,_0x50560c){return db[_0x3d94('0x16')]['find']({'raw':_0x215ad7[_0x3d94('0x18')]?_0x215ad7[_0x3d94('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x215ad7['options']?_0x215ad7[_0x3d94('0x18')][_0x3d94('0x19')]||null:null,'attributes':_0x215ad7[_0x3d94('0x18')]?_0x215ad7['options'][_0x3d94('0x1a')]||null:null,'include':_0x215ad7[_0x3d94('0x18')]?_0x215ad7['options'][_0x3d94('0x1c')]?_[_0x3d94('0x1d')](_0x215ad7[_0x3d94('0x18')][_0x3d94('0x1c')],function(_0x782c1){return{'model':db[_0x782c1['model']],'as':_0x782c1['as'],'attributes':_0x782c1[_0x3d94('0x1a')],'include':_0x782c1[_0x3d94('0x1c')]?_[_0x3d94('0x1d')](_0x782c1[_0x3d94('0x1c')],function(_0xb493f1){return{'model':db[_0xb493f1[_0x3d94('0x1e')]],'as':_0xb493f1['as'],'attributes':_0xb493f1['attributes'],'include':_0xb493f1['include']?_[_0x3d94('0x1d')](_0xb493f1[_0x3d94('0x1c')],function(_0x1c1b25){return{'model':db[_0x1c1b25[_0x3d94('0x1e')]],'as':_0x1c1b25['as'],'attributes':_0x1c1b25[_0x3d94('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x3d94('0xb')](function(_0x2ef743){if(_0x215ad7[_0x3d94('0x18')][_0x3d94('0x22')]===!![])_0x2ef743[_0x3d94('0x23')]('smtpOptions',_0x2ef743[_0x3d94('0x24')]());logger[_0x3d94('0x13')](_0x3d94('0x21'),_0x215ad7);logger[_0x3d94('0xe')]('ShowMailAccount',_0x215ad7,JSON[_0x3d94('0x1f')](_0x2ef743));_0x246f88(_0x2ef743);})[_0x3d94('0x15')](function(_0x35e0e6){logger[_0x3d94('0x10')](_0x3d94('0x21'),_0x35e0e6['message'],_0x215ad7);_0x50560c(_0x29b1ff[_0x3d94('0x10')](0x1f4,_0x35e0e6[_0x3d94('0x12')]));});});};exports[_0x3d94('0x25')]=function(_0x485066){var _0x4eee4d=this;return new Promise(function(_0x4d8a8f,_0x47905e){var _0x3b3550={'body':_0x485066[_0x3d94('0x26')],'channel':_0x3d94('0x27')};var _0x146ccb=_[_0x3d94('0x28')](_[_0x3d94('0x29')](db[_0x3d94('0x2a')]['rawAttributes']),['createdAt',_0x3d94('0x2b'),_0x3d94('0x2c'),'ListId']);var _0x2d0aa2=![];if(_0x485066['body']['id']){delete _0x485066[_0x3d94('0x26')]['id'];}if(_[_0x3d94('0x2d')](_0x485066[_0x3d94('0x26')][_0x3d94('0x2e')])){return _0x47905e(_0x4eee4d[_0x3d94('0x10')](0x1f4,'from\x20is\x20mandatory'));}if(_[_0x3d94('0x2d')](_0x485066[_0x3d94('0x26')][_0x3d94('0x26')])||_0x485066['body'][_0x3d94('0x26')]===''){return _0x47905e(_0x4eee4d['error'](0x1f4,'body\x20is\x20mandatory\x20and\x20not\x20empty'));}if(_[_0x3d94('0x2d')](_0x485066[_0x3d94('0x26')][_0x3d94('0x2f')])){return _0x47905e(_0x4eee4d[_0x3d94('0x10')](0x1f4,'mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x146ccb));}if(!_[_0x3d94('0x30')](_0x146ccb,_0x485066['body'][_0x3d94('0x2f')])){return _0x47905e(_0x4eee4d[_0x3d94('0x10')](0x1f4,_0x3d94('0x31')+_0x146ccb));}var _0x15c8e7={};_0x15c8e7[_0x485066[_0x3d94('0x26')][_0x3d94('0x2f')]]=_0x485066[_0x3d94('0x26')]['from'];return db[_0x3d94('0x16')][_0x3d94('0x32')]({'where':{'id':_0x485066['account']['id']},'include':[{'model':db['CmList'],'as':_0x3d94('0x33'),'include':[{'model':db[_0x3d94('0x2a')],'as':'Contacts','where':_0x15c8e7,'limit':0x1,'order':[[_0x3d94('0x2b'),_0x3d94('0x34')]]}]},{'model':db[_0x3d94('0x35')],'as':_0x3d94('0x36')},{'model':db[_0x3d94('0x37')],'as':_0x3d94('0x38'),'include':[{'model':db[_0x3d94('0x39')],'as':_0x3d94('0x39')}]}]})[_0x3d94('0xb')](function(_0x2429bc){if(_0x2429bc&&_0x2429bc[_0x3d94('0x33')]){var _0x29682b=_0x2429bc[_0x3d94('0x3a')]({'plain':!![]});_0x3b3550[_0x3d94('0x3b')]=_[_0x3d94('0x3c')](_0x29682b,['Applications',_0x3d94('0x33')]);_0x3b3550[_0x3d94('0x3b')][_0x3d94('0x3d')]=_0x2429bc[_0x3d94('0x24')]();_0x3b3550[_0x3d94('0x3e')]=_0x29682b[_0x3d94('0x36')];_0x3b3550[_0x3d94('0x3f')]=_0x29682b[_0x3d94('0x33')];_0x3b3550[_0x3d94('0x3e')]=_['orderBy'](_0x3b3550[_0x3d94('0x3e')],['priority'],[_0x3d94('0x40')]);if(_0x3b3550[_0x3d94('0x3b')]&&_0x3b3550['account'][_0x3d94('0x41')]){_0x3b3550['applications']['push']({'id':0x0,'priority':_0x3b3550[_0x3d94('0x3e')]['length']+0x1,'app':_0x3d94('0x42'),'appdata':_0x3d94('0x41'),'interval':'*,*,*,*'});}if(_0x3b3550[_0x3d94('0x3b')]['Applications']){delete _0x3b3550['account'][_0x3d94('0x36')];}if(_0x3b3550[_0x3d94('0x3b')][_0x3d94('0x33')]){delete _0x3b3550[_0x3d94('0x3b')][_0x3d94('0x33')];}if(_0x29682b[_0x3d94('0x33')][_0x3d94('0x43')][_0x3d94('0x44')]){return _0x29682b[_0x3d94('0x33')]['Contacts'][0x0];}var _0x28cfbb=_[_0x3d94('0x45')](_0x485066[_0x3d94('0x26')],{'firstName':_0x485066[_0x3d94('0x26')][_0x3d94('0x2e')],'ListId':_0x29682b[_0x3d94('0x46')]});_0x28cfbb[_0x485066[_0x3d94('0x26')][_0x3d94('0x2f')]]=_0x485066[_0x3d94('0x26')][_0x3d94('0x2e')];return db[_0x3d94('0x2a')]['create'](_0x28cfbb);}else{throw new Error(_0x3d94('0x47'));}})['then'](function(_0x709841){_0x3b3550[_0x3d94('0x48')]=_0x709841;if(_0x709841){if(!_0x485066[_0x3d94('0x26')][_0x3d94('0x12')][_0x3d94('0x49')]){_0x485066[_0x3d94('0x26')][_0x3d94('0x12')][_0x3d94('0x49')]=rs[_0x3d94('0x4a')]()+'\x20'+_0x485066['body']['message'][_0x3d94('0x2e')];}var _0x4bd97c={'ContactId':_0x709841['id'],'MailAccountId':_0x485066[_0x3d94('0x3b')]['id'],'inReplyTo':_0x485066[_0x3d94('0x26')]['message'][_0x3d94('0x49')],'to':_0x485066[_0x3d94('0x26')][_0x3d94('0x12')][_0x3d94('0x2e')],'cc':_0x485066[_0x3d94('0x26')][_0x3d94('0x12')]['cc'],'subject':_0x485066[_0x3d94('0x26')]['message'][_0x3d94('0x4b')],'attach':_0x485066[_0x3d94('0x26')][_0x3d94('0x12')]['attach'],'lastMsgAt':moment()[_0x3d94('0x4c')](_0x3d94('0x4d')),'lastMsgDirection':'in'};return db[_0x3d94('0x4e')][_0x3d94('0x32')]({'where':{'closed':![],'MailAccountId':_0x485066['account']['id']},'include':[{'model':db['MailMessage'],'as':_0x3d94('0x4f'),'attributes':[_0x3d94('0x49')],'where':{'messageId':_0x485066[_0x3d94('0x26')][_0x3d94('0x12')]['inReplyTo']}}]})[_0x3d94('0xb')](function(_0x1c99d1){if(_0x1c99d1){return[_0x1c99d1,![]];}return db['MailInteraction'][_0x3d94('0x50')](_0x4bd97c)[_0x3d94('0xb')](function(_0x336e36){return[_0x336e36,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0x3d94('0x51')](function(_0x227372,_0x585531){if(_0x227372){_0x2d0aa2=_0x585531;if(!_0x585531){return _0x227372['update']({'inReplyTo':_0x485066[_0x3d94('0x26')][_0x3d94('0x12')]['messageId'],'to':_0x485066['body']['message'][_0x3d94('0x2e')],'cc':_0x485066[_0x3d94('0x26')][_0x3d94('0x12')]['cc'],'subject':_0x485066[_0x3d94('0x26')][_0x3d94('0x12')]['subject'],'attach':_0x227372[_0x3d94('0x52')]?_0x227372[_0x3d94('0x52')]:_0x485066[_0x3d94('0x26')][_0x3d94('0x12')][_0x3d94('0x52')],'substatus':null,'substatusAt':moment()[_0x3d94('0x4c')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgAt':moment()[_0x3d94('0x4c')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':'in'});}else{return _0x227372;}}})[_0x3d94('0xb')](function(_0x41d561){_0x3b3550[_0x3d94('0x53')]=_0x41d561[_0x3d94('0x3a')]({'plain':!![]});_0x3b3550[_0x3d94('0x53')][_0x3d94('0x54')]=_0x2d0aa2;return db['MailMessage']['create']({'body':_0x485066[_0x3d94('0x26')]['body'],'MailAccountId':_0x485066['account']['id'],'MailInteractionId':_0x41d561['id'],'direction':'in','ContactId':_0x3b3550['contact']['id'],'messageId':_0x485066[_0x3d94('0x26')][_0x3d94('0x12')][_0x3d94('0x49')],'from':_0x485066[_0x3d94('0x26')][_0x3d94('0x12')][_0x3d94('0x2e')],'to':_0x485066[_0x3d94('0x26')][_0x3d94('0x12')]['to'],'cc':_0x485066['body'][_0x3d94('0x12')]['cc'],'subject':_0x485066['body'][_0x3d94('0x12')][_0x3d94('0x4b')],'attach':_0x485066[_0x3d94('0x26')]['message']['attach'],'Attachments':_0x485066['body'][_0x3d94('0x12')][_0x3d94('0x55')],'originTo':_0x485066[_0x3d94('0x26')][_0x3d94('0x12')][_0x3d94('0x56')],'originCc':_0x485066['body']['message'][_0x3d94('0x57')],'bcc':_0x485066[_0x3d94('0x26')][_0x3d94('0x12')]['bcc'],'ChatWebsiteId':_0x485066[_0x3d94('0x26')]['message'][_0x3d94('0x58')]||null,'originChannel':_0x485066[_0x3d94('0x26')][_0x3d94('0x12')][_0x3d94('0x59')]||_0x3d94('0x5a'),'ChatOfflineMessageId':_0x485066[_0x3d94('0x26')][_0x3d94('0x12')][_0x3d94('0x5b')]||null},{'include':[{'model':db[_0x3d94('0x5c')],'as':_0x3d94('0x5d')}]});})[_0x3d94('0xb')](function(_0xe6cfd1){_0x3b3550[_0x3d94('0x12')]=_0xe6cfd1;if(_0x3b3550['interaction'][_0x3d94('0x5e')]){return db[_0x3d94('0x5f')][_0x3d94('0x32')]({'attributes':['id',_0x3d94('0x60')],'where':{'id':_0x3b3550['interaction'][_0x3d94('0x5e')]}})['then'](function(_0x4f217f){if(_0x4f217f){_0x3b3550[_0x3d94('0x3e')]['unshift']({'id':0x0,'priority':0x0,'app':_0x3d94('0x61'),'appdata':_0x4f217f[_0x3d94('0x60')]+','+(_0x3b3550['account'][_0x3d94('0x62')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0x3d94('0x63'),_0x3d94('0x64'),_0x3b3550);});}return respondWithRpcPromise('Start','startRouting',_0x3b3550);})['then'](function(_0x833d96){_0x4d8a8f(_0x833d96);})['catch'](function(_0x5a8114){_0x47905e(_0x4eee4d[_0x3d94('0x10')](0x1f4,_0x5a8114[_0x3d94('0x12')]));});});};
\ No newline at end of file
index a638060..4e4b32f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d06=['removeListener','register','length','mailAccount:','./mailAccount.events','save','remove','update','emit'];(function(_0x1fcaef,_0x2e2847){var _0x340a3d=function(_0x3336b4){while(--_0x3336b4){_0x1fcaef['push'](_0x1fcaef['shift']());}};_0x340a3d(++_0x2e2847);}(_0x4d06,0x100));var _0x64d0=function(_0x155c64,_0x26ff95){_0x155c64=_0x155c64-0x0;var _0x1f154a=_0x4d06[_0x155c64];return _0x1f154a;};'use strict';var MailAccountEvents=require(_0x64d0('0x0'));var events=[_0x64d0('0x1'),_0x64d0('0x2'),_0x64d0('0x3')];function createListener(_0x5550e1,_0x4fe0ac){return function(_0xb51e48){_0x4fe0ac[_0x64d0('0x4')](_0x5550e1,_0xb51e48);};}function removeListener(_0x46f69d,_0x5371fa){return function(){MailAccountEvents[_0x64d0('0x5')](_0x46f69d,_0x5371fa);};}exports[_0x64d0('0x6')]=function(_0x2f2984){for(var _0x17978f=0x0,_0x112809=events[_0x64d0('0x7')];_0x17978f<_0x112809;_0x17978f++){var _0x504748=events[_0x17978f];var _0x43b026=createListener(_0x64d0('0x8')+_0x504748,_0x2f2984);MailAccountEvents['on'](_0x504748,_0x43b026);}};
\ No newline at end of file
+var _0x1e7b=['./mailAccount.events','save','update','emit','register','length','mailAccount:'];(function(_0x1a46c6,_0xdc9de2){var _0x4de97e=function(_0x74b2f3){while(--_0x74b2f3){_0x1a46c6['push'](_0x1a46c6['shift']());}};_0x4de97e(++_0xdc9de2);}(_0x1e7b,0x12d));var _0xb1e7=function(_0x2c0dc0,_0x19900d){_0x2c0dc0=_0x2c0dc0-0x0;var _0x4c0990=_0x1e7b[_0x2c0dc0];return _0x4c0990;};'use strict';var MailAccountEvents=require(_0xb1e7('0x0'));var events=[_0xb1e7('0x1'),'remove',_0xb1e7('0x2')];function createListener(_0x173016,_0x4ffad7){return function(_0x8105ca){_0x4ffad7[_0xb1e7('0x3')](_0x173016,_0x8105ca);};}function removeListener(_0x41ab3e,_0x2222eb){return function(){MailAccountEvents['removeListener'](_0x41ab3e,_0x2222eb);};}exports[_0xb1e7('0x4')]=function(_0x2f733c){for(var _0x3bc43b=0x0,_0x35c43c=events[_0xb1e7('0x5')];_0x3bc43b<_0x35c43c;_0x3bc43b++){var _0x578f37=events[_0x3bc43b];var _0x161376=createListener(_0xb1e7('0x6')+_0x578f37,_0x2f733c);MailAccountEvents['on'](_0x578f37,_0x161376);}};
\ No newline at end of file
index 064acfe..a647f67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc194=['put','update','delete','/:id','destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./mailApplication.controller','get','isAuthenticated','show'];(function(_0x46df25,_0xf64212){var _0x1bf6d6=function(_0x3f27b3){while(--_0x3f27b3){_0x46df25['push'](_0x46df25['shift']());}};_0x1bf6d6(++_0xf64212);}(_0xc194,0xb0));var _0x4c19=function(_0x391b12,_0x871022){_0x391b12=_0x391b12-0x0;var _0x2156be=_0xc194[_0x391b12];return _0x2156be;};'use strict';var multer=require(_0x4c19('0x0'));var util=require('util');var path=require(_0x4c19('0x1'));var timeout=require(_0x4c19('0x2'));var express=require('express');var router=express[_0x4c19('0x3')]();var fs_extra=require(_0x4c19('0x4'));var auth=require(_0x4c19('0x5'));var interaction=require(_0x4c19('0x6'));var config=require('../../config/environment');var controller=require(_0x4c19('0x7'));router[_0x4c19('0x8')]('/:id',auth[_0x4c19('0x9')](),controller[_0x4c19('0xa')]);router[_0x4c19('0xb')]('/:id',auth['isAuthenticated'](),controller[_0x4c19('0xc')]);router[_0x4c19('0xd')](_0x4c19('0xe'),auth['isAuthenticated'](),controller[_0x4c19('0xf')]);module[_0x4c19('0x10')]=router;
\ No newline at end of file
+var _0x3b26=['../../components/auth/service','../../components/interaction/service','../../config/environment','./mailApplication.controller','get','/:id','isAuthenticated','show','put','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra'];(function(_0x32a2f5,_0x4758b3){var _0x437b=function(_0x21bf05){while(--_0x21bf05){_0x32a2f5['push'](_0x32a2f5['shift']());}};_0x437b(++_0x4758b3);}(_0x3b26,0x189));var _0x63b2=function(_0x55f581,_0x391cca){_0x55f581=_0x55f581-0x0;var _0x5156b6=_0x3b26[_0x55f581];return _0x5156b6;};'use strict';var multer=require(_0x63b2('0x0'));var util=require(_0x63b2('0x1'));var path=require(_0x63b2('0x2'));var timeout=require('connect-timeout');var express=require(_0x63b2('0x3'));var router=express[_0x63b2('0x4')]();var fs_extra=require(_0x63b2('0x5'));var auth=require(_0x63b2('0x6'));var interaction=require(_0x63b2('0x7'));var config=require(_0x63b2('0x8'));var controller=require(_0x63b2('0x9'));router[_0x63b2('0xa')](_0x63b2('0xb'),auth[_0x63b2('0xc')](),controller[_0x63b2('0xd')]);router[_0x63b2('0xe')](_0x63b2('0xb'),auth[_0x63b2('0xc')](),controller[_0x63b2('0xf')]);router[_0x63b2('0x10')](_0x63b2('0xb'),auth[_0x63b2('0xc')](),controller[_0x63b2('0x11')]);module[_0x63b2('0x12')]=router;
\ No newline at end of file
index 203f825..2257c05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26a1=['*,*,*,*','sequelize','exports','INTEGER','STRING','noop'];(function(_0x34f3c3,_0x569fe6){var _0x4275dc=function(_0x25e227){while(--_0x25e227){_0x34f3c3['push'](_0x34f3c3['shift']());}};_0x4275dc(++_0x569fe6);}(_0x26a1,0xa3));var _0x126a=function(_0x4bb66f,_0x3cd682){_0x4bb66f=_0x4bb66f-0x0;var _0xf2772f=_0x26a1[_0x4bb66f];return _0xf2772f;};'use strict';var Sequelize=require(_0x126a('0x0'));module[_0x126a('0x1')]={'priority':{'type':Sequelize[_0x126a('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x126a('0x3')],'allowNull':![],'defaultValue':_0x126a('0x4')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x126a('0x3')]},'interval':{'type':Sequelize[_0x126a('0x3')],'defaultValue':_0x126a('0x5')}};
\ No newline at end of file
+var _0x2357=['*,*,*,*','exports','INTEGER','STRING','noop','TEXT'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0x2357,0xa9));var _0x7235=function(_0x4c8fa9,_0x2a1337){_0x4c8fa9=_0x4c8fa9-0x0;var _0x192648=_0x2357[_0x4c8fa9];return _0x192648;};'use strict';var Sequelize=require('sequelize');module[_0x7235('0x0')]={'priority':{'type':Sequelize[_0x7235('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x7235('0x2')],'allowNull':![],'defaultValue':_0x7235('0x3')},'appdata':{'type':Sequelize[_0x7235('0x4')]()},'description':{'type':Sequelize[_0x7235('0x2')]},'interval':{'type':Sequelize[_0x7235('0x2')],'defaultValue':_0x7235('0x5')}};
\ No newline at end of file
index 2b42f6f..34bafd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bde=['../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','save','then','destroy','error','name','send','show','model','keys','MailApplication','rawAttributes','query','filters','intersection','attributes','fields','length','includeAll','include','merge','options','find','catch','update','body','params','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment'];(function(_0x3dae49,_0x300a62){var _0x1d5745=function(_0x436772){while(--_0x436772){_0x3dae49['push'](_0x3dae49['shift']());}};_0x1d5745(++_0x300a62);}(_0x9bde,0xe1));var _0xe9bd=function(_0x42581d,_0x56233b){_0x42581d=_0x42581d-0x0;var _0x3bbfdf=_0x9bde[_0x42581d];return _0x3bbfdf;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe9bd('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe9bd('0x1'));var rp=require('request-promise');var moment=require(_0xe9bd('0x2'));var BPromise=require(_0xe9bd('0x3'));var Mustache=require(_0xe9bd('0x4'));var util=require(_0xe9bd('0x5'));var path=require(_0xe9bd('0x6'));var sox=require(_0xe9bd('0x7'));var csv=require(_0xe9bd('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe9bd('0x9'));var _=require(_0xe9bd('0xa'));var squel=require(_0xe9bd('0xb'));var crypto=require(_0xe9bd('0xc'));var jsforce=require(_0xe9bd('0xd'));var deskjs=require(_0xe9bd('0xe'));var toCsv=require(_0xe9bd('0x8'));var querystring=require(_0xe9bd('0xf'));var Papa=require(_0xe9bd('0x10'));var Redis=require(_0xe9bd('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xe9bd('0x12'));var hardwareService=require(_0xe9bd('0x13'));var logger=require(_0xe9bd('0x14'))('api');var utils=require(_0xe9bd('0x15'));var config=require(_0xe9bd('0x16'));var licenseUtil=require(_0xe9bd('0x17'));var db=require(_0xe9bd('0x18'))['db'];function respondWithStatusCode(_0x5e022a,_0x2c1d98){_0x2c1d98=_0x2c1d98||0xcc;return function(_0x4ac319){if(_0x4ac319){return _0x5e022a[_0xe9bd('0x19')](_0x2c1d98);}return _0x5e022a[_0xe9bd('0x1a')](_0x2c1d98)[_0xe9bd('0x1b')]();};}function respondWithResult(_0x51109f,_0x47ba5e){_0x47ba5e=_0x47ba5e||0xc8;return function(_0x46a95e){if(_0x46a95e){return _0x51109f[_0xe9bd('0x1a')](_0x47ba5e)[_0xe9bd('0x1c')](_0x46a95e);}};}function respondWithFilteredResult(_0x46a59b,_0x3360bd){return function(_0x389e7b){if(_0x389e7b){var _0x45a9f2=typeof _0x3360bd['offset']===_0xe9bd('0x1d')&&typeof _0x3360bd[_0xe9bd('0x1e')]===_0xe9bd('0x1d');var _0x494b27=_0x389e7b[_0xe9bd('0x1f')];var _0x3bae08=_0x45a9f2?0x0:_0x3360bd[_0xe9bd('0x20')];var _0x330733=_0x45a9f2?_0x389e7b['count']:_0x3360bd[_0xe9bd('0x20')]+_0x3360bd['limit'];var _0xc6b661;if(_0x330733>=_0x494b27){_0x330733=_0x494b27;_0xc6b661=0xc8;}else{_0xc6b661=0xce;}_0x46a59b['status'](_0xc6b661);return _0x46a59b[_0xe9bd('0x21')](_0xe9bd('0x22'),_0x3bae08+'-'+_0x330733+'/'+_0x494b27)[_0xe9bd('0x1c')](_0x389e7b);}return null;};}function patchUpdates(_0x3dda13){return function(_0x1acb82){try{jsonpatch[_0xe9bd('0x23')](_0x1acb82,_0x3dda13,!![]);}catch(_0x6593ce){return BPromise['reject'](_0x6593ce);}return _0x1acb82[_0xe9bd('0x24')]();};}function saveUpdates(_0x28cd17,_0x4ecaf5){return function(_0x37aec1){if(_0x37aec1){return _0x37aec1['update'](_0x28cd17)[_0xe9bd('0x25')](function(_0x1b9cc9){return _0x1b9cc9;});}return null;};}function removeEntity(_0x36f8c0,_0xf02209){return function(_0x5bc4bf){if(_0x5bc4bf){return _0x5bc4bf[_0xe9bd('0x26')]()[_0xe9bd('0x25')](function(){_0x36f8c0[_0xe9bd('0x1a')](0xcc)[_0xe9bd('0x1b')]();});}};}function handleEntityNotFound(_0x2641be,_0xb52d45){return function(_0x399f3c){if(!_0x399f3c){_0x2641be[_0xe9bd('0x19')](0x194);}return _0x399f3c;};}function handleError(_0x1ae889,_0x5987af){_0x5987af=_0x5987af||0x1f4;return function(_0x3c211a){logger[_0xe9bd('0x27')](_0x3c211a['stack']);if(_0x3c211a[_0xe9bd('0x28')]){delete _0x3c211a[_0xe9bd('0x28')];}_0x1ae889[_0xe9bd('0x1a')](_0x5987af)[_0xe9bd('0x29')](_0x3c211a);};}exports[_0xe9bd('0x2a')]=function(_0x183601,_0x519f48){var _0x5b7f1d={'raw':!![],'where':{'id':_0x183601['params']['id']}},_0x1de54c={};_0x1de54c[_0xe9bd('0x2b')]=_[_0xe9bd('0x2c')](db[_0xe9bd('0x2d')][_0xe9bd('0x2e')]);_0x1de54c[_0xe9bd('0x2f')]=_['keys'](_0x183601['query']);_0x1de54c[_0xe9bd('0x30')]=_[_0xe9bd('0x31')](_0x1de54c[_0xe9bd('0x2b')],_0x1de54c[_0xe9bd('0x2f')]);_0x5b7f1d[_0xe9bd('0x32')]=_[_0xe9bd('0x31')](_0x1de54c[_0xe9bd('0x2b')],qs[_0xe9bd('0x33')](_0x183601[_0xe9bd('0x2f')]['fields']));_0x5b7f1d[_0xe9bd('0x32')]=_0x5b7f1d[_0xe9bd('0x32')][_0xe9bd('0x34')]?_0x5b7f1d['attributes']:_0x1de54c['model'];if(_0x183601[_0xe9bd('0x2f')][_0xe9bd('0x35')]){_0x5b7f1d[_0xe9bd('0x36')]=[{'all':!![]}];}_0x5b7f1d=_[_0xe9bd('0x37')]({},_0x5b7f1d,_0x183601[_0xe9bd('0x38')]);return db[_0xe9bd('0x2d')][_0xe9bd('0x39')](_0x5b7f1d)[_0xe9bd('0x25')](handleEntityNotFound(_0x519f48,null))[_0xe9bd('0x25')](respondWithResult(_0x519f48,null))[_0xe9bd('0x3a')](handleError(_0x519f48,null));};exports[_0xe9bd('0x3b')]=function(_0x549dd1,_0x2ad46e){if(_0x549dd1[_0xe9bd('0x3c')]['id']){delete _0x549dd1[_0xe9bd('0x3c')]['id'];}return db[_0xe9bd('0x2d')][_0xe9bd('0x39')]({'where':{'id':_0x549dd1[_0xe9bd('0x3d')]['id']}})['then'](handleEntityNotFound(_0x2ad46e,null))[_0xe9bd('0x25')](saveUpdates(_0x549dd1[_0xe9bd('0x3c')],null))['then'](respondWithResult(_0x2ad46e,null))[_0xe9bd('0x3a')](handleError(_0x2ad46e,null));};exports[_0xe9bd('0x26')]=function(_0x4c7d47,_0x4b1da0){return db[_0xe9bd('0x2d')][_0xe9bd('0x39')]({'where':{'id':_0x4c7d47['params']['id']}})[_0xe9bd('0x25')](handleEntityNotFound(_0x4b1da0,null))[_0xe9bd('0x25')](removeEntity(_0x4b1da0,null))[_0xe9bd('0x3a')](handleError(_0x4b1da0,null));};
\ No newline at end of file
+var _0xb43b=['name','status','send','show','params','keys','MailApplication','rawAttributes','query','intersection','model','fields','attributes','length','includeAll','merge','options','find','then','catch','body','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','fs-extra','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','end','undefined','count','offset','limit','set','Content-Range','json','apply','reject','update','destroy','sendStatus'];(function(_0x5e73a9,_0x4fde31){var _0x58e9b6=function(_0x201638){while(--_0x201638){_0x5e73a9['push'](_0x5e73a9['shift']());}};_0x58e9b6(++_0x4fde31);}(_0xb43b,0x1b2));var _0xbb43=function(_0x2f9b61,_0x19c09a){_0x2f9b61=_0x2f9b61-0x0;var _0x14f41f=_0xb43b[_0x2f9b61];return _0x14f41f;};'use strict';var emlformat=require(_0xbb43('0x0'));var rimraf=require(_0xbb43('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xbb43('0x2'));var rp=require(_0xbb43('0x3'));var moment=require(_0xbb43('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xbb43('0x5'));var util=require(_0xbb43('0x6'));var path=require(_0xbb43('0x7'));var sox=require(_0xbb43('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbb43('0x9'));var _=require('lodash');var squel=require(_0xbb43('0xa'));var crypto=require(_0xbb43('0xb'));var jsforce=require(_0xbb43('0xc'));var deskjs=require(_0xbb43('0xd'));var toCsv=require(_0xbb43('0xe'));var querystring=require('querystring');var Papa=require(_0xbb43('0xf'));var Redis=require(_0xbb43('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xbb43('0x11'));var as=require(_0xbb43('0x12'));var hardwareService=require(_0xbb43('0x13'));var logger=require(_0xbb43('0x14'))(_0xbb43('0x15'));var utils=require(_0xbb43('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xbb43('0x17'));var db=require(_0xbb43('0x18'))['db'];function respondWithStatusCode(_0x50e2c0,_0x578392){_0x578392=_0x578392||0xcc;return function(_0x41e7e5){if(_0x41e7e5){return _0x50e2c0['sendStatus'](_0x578392);}return _0x50e2c0['status'](_0x578392)[_0xbb43('0x19')]();};}function respondWithResult(_0x5a509f,_0x68d45d){_0x68d45d=_0x68d45d||0xc8;return function(_0x43021d){if(_0x43021d){return _0x5a509f['status'](_0x68d45d)['json'](_0x43021d);}};}function respondWithFilteredResult(_0x4d5bcf,_0x338120){return function(_0x2abce0){if(_0x2abce0){var _0x57bd1d=typeof _0x338120['offset']===_0xbb43('0x1a')&&typeof _0x338120['limit']==='undefined';var _0x2b0797=_0x2abce0[_0xbb43('0x1b')];var _0x2e3b43=_0x57bd1d?0x0:_0x338120['offset'];var _0x1c16d7=_0x57bd1d?_0x2abce0['count']:_0x338120[_0xbb43('0x1c')]+_0x338120[_0xbb43('0x1d')];var _0x4dfc54;if(_0x1c16d7>=_0x2b0797){_0x1c16d7=_0x2b0797;_0x4dfc54=0xc8;}else{_0x4dfc54=0xce;}_0x4d5bcf['status'](_0x4dfc54);return _0x4d5bcf[_0xbb43('0x1e')](_0xbb43('0x1f'),_0x2e3b43+'-'+_0x1c16d7+'/'+_0x2b0797)[_0xbb43('0x20')](_0x2abce0);}return null;};}function patchUpdates(_0x2bf2d4){return function(_0x5bcce7){try{jsonpatch[_0xbb43('0x21')](_0x5bcce7,_0x2bf2d4,!![]);}catch(_0x5f4416){return BPromise[_0xbb43('0x22')](_0x5f4416);}return _0x5bcce7['save']();};}function saveUpdates(_0x2f5e31,_0x565256){return function(_0x3f323e){if(_0x3f323e){return _0x3f323e[_0xbb43('0x23')](_0x2f5e31)['then'](function(_0x1d0768){return _0x1d0768;});}return null;};}function removeEntity(_0x4dfb7f,_0xf24e60){return function(_0x298ce2){if(_0x298ce2){return _0x298ce2[_0xbb43('0x24')]()['then'](function(){_0x4dfb7f['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x269ca5,_0x32d7f0){return function(_0x5d8310){if(!_0x5d8310){_0x269ca5[_0xbb43('0x25')](0x194);}return _0x5d8310;};}function handleError(_0x2da653,_0x226827){_0x226827=_0x226827||0x1f4;return function(_0x3874fb){logger['error'](_0x3874fb['stack']);if(_0x3874fb[_0xbb43('0x26')]){delete _0x3874fb[_0xbb43('0x26')];}_0x2da653[_0xbb43('0x27')](_0x226827)[_0xbb43('0x28')](_0x3874fb);};}exports[_0xbb43('0x29')]=function(_0x40b04b,_0x21d386){var _0x473828={'raw':!![],'where':{'id':_0x40b04b[_0xbb43('0x2a')]['id']}},_0x539730={};_0x539730['model']=_[_0xbb43('0x2b')](db[_0xbb43('0x2c')][_0xbb43('0x2d')]);_0x539730[_0xbb43('0x2e')]=_['keys'](_0x40b04b[_0xbb43('0x2e')]);_0x539730['filters']=_['intersection'](_0x539730['model'],_0x539730[_0xbb43('0x2e')]);_0x473828['attributes']=_[_0xbb43('0x2f')](_0x539730[_0xbb43('0x30')],qs[_0xbb43('0x31')](_0x40b04b['query'][_0xbb43('0x31')]));_0x473828[_0xbb43('0x32')]=_0x473828[_0xbb43('0x32')][_0xbb43('0x33')]?_0x473828[_0xbb43('0x32')]:_0x539730[_0xbb43('0x30')];if(_0x40b04b[_0xbb43('0x2e')][_0xbb43('0x34')]){_0x473828['include']=[{'all':!![]}];}_0x473828=_[_0xbb43('0x35')]({},_0x473828,_0x40b04b[_0xbb43('0x36')]);return db[_0xbb43('0x2c')][_0xbb43('0x37')](_0x473828)[_0xbb43('0x38')](handleEntityNotFound(_0x21d386,null))[_0xbb43('0x38')](respondWithResult(_0x21d386,null))[_0xbb43('0x39')](handleError(_0x21d386,null));};exports[_0xbb43('0x23')]=function(_0x349a83,_0x57105c){if(_0x349a83[_0xbb43('0x3a')]['id']){delete _0x349a83[_0xbb43('0x3a')]['id'];}return db[_0xbb43('0x2c')][_0xbb43('0x37')]({'where':{'id':_0x349a83[_0xbb43('0x2a')]['id']}})[_0xbb43('0x38')](handleEntityNotFound(_0x57105c,null))['then'](saveUpdates(_0x349a83[_0xbb43('0x3a')],null))[_0xbb43('0x38')](respondWithResult(_0x57105c,null))['catch'](handleError(_0x57105c,null));};exports[_0xbb43('0x24')]=function(_0x2c9a7c,_0x11d384){return db['MailApplication']['find']({'where':{'id':_0x2c9a7c['params']['id']}})[_0xbb43('0x38')](handleEntityNotFound(_0x11d384,null))[_0xbb43('0x38')](removeEntity(_0x11d384,null))['catch'](handleError(_0x11d384,null));};
\ No newline at end of file
index 2990780..ba08e95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefe1=['util','../../config/logger','moment','request-promise','rimraf','../../config/environment','define','MailApplication','mail_applications','utf8mb4','utf8mb4_unicode_ci','lodash'];(function(_0x373595,_0x552011){var _0x22808e=function(_0x2597d8){while(--_0x2597d8){_0x373595['push'](_0x373595['shift']());}};_0x22808e(++_0x552011);}(_0xefe1,0xb3));var _0x1efe=function(_0x13b8f3,_0x442821){_0x13b8f3=_0x13b8f3-0x0;var _0x1a6d06=_0xefe1[_0x13b8f3];return _0x1a6d06;};'use strict';var _=require(_0x1efe('0x0'));var util=require(_0x1efe('0x1'));var logger=require(_0x1efe('0x2'))('api');var moment=require(_0x1efe('0x3'));var BPromise=require('bluebird');var rp=require(_0x1efe('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1efe('0x5'));var config=require(_0x1efe('0x6'));var attributes=require('./mailApplication.attributes');module['exports']=function(_0x478a70,_0x4cc0c7){return _0x478a70[_0x1efe('0x7')](_0x1efe('0x8'),attributes,{'tableName':_0x1efe('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x1efe('0xa'),'collate':_0x1efe('0xb')});};
\ No newline at end of file
+var _0x55a8=['mail_applications','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailApplication.attributes','exports','define'];(function(_0x470252,_0x457603){var _0xeec8b4=function(_0x2cca72){while(--_0x2cca72){_0x470252['push'](_0x470252['shift']());}};_0xeec8b4(++_0x457603);}(_0x55a8,0x13d));var _0x855a=function(_0x130ac6,_0x4df135){_0x130ac6=_0x130ac6-0x0;var _0x4eefd7=_0x55a8[_0x130ac6];return _0x4eefd7;};'use strict';var _=require(_0x855a('0x0'));var util=require(_0x855a('0x1'));var logger=require(_0x855a('0x2'))(_0x855a('0x3'));var moment=require(_0x855a('0x4'));var BPromise=require(_0x855a('0x5'));var rp=require(_0x855a('0x6'));var fs=require('fs');var path=require(_0x855a('0x7'));var rimraf=require(_0x855a('0x8'));var config=require(_0x855a('0x9'));var attributes=require(_0x855a('0xa'));module[_0x855a('0xb')]=function(_0x3fd7ec,_0x96ca5a){return _0x3fd7ec[_0x855a('0xc')]('MailApplication',attributes,{'tableName':_0x855a('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x855a('0xe')});};
\ No newline at end of file
index fc8862d..67b884b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe280=['then','info','MailApplication,\x20%s,\x20%s','debug','request\x20sent','error','code','message','result','catch','UpdateMailApplication','update','body','options','raw','where','attributes','limit','stringify','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request'];(function(_0x1b4c04,_0x8d961d){var _0x374f5d=function(_0x11dc31){while(--_0x11dc31){_0x1b4c04['push'](_0x1b4c04['shift']());}};_0x374f5d(++_0x8d961d);}(_0xe280,0x1b3));var _0x0e28=function(_0x38537f,_0x252124){_0x38537f=_0x38537f-0x0;var _0x141e23=_0xe280[_0x38537f];return _0x141e23;};'use strict';var _=require(_0x0e28('0x0'));var util=require(_0x0e28('0x1'));var moment=require(_0x0e28('0x2'));var BPromise=require('bluebird');var rs=require(_0x0e28('0x3'));var fs=require('fs');var Redis=require(_0x0e28('0x4'));var db=require(_0x0e28('0x5'))['db'];var utils=require(_0x0e28('0x6'));var logger=require(_0x0e28('0x7'))(_0x0e28('0x8'));var config=require('../../config/environment');var jayson=require(_0x0e28('0x9'));var client=jayson[_0x0e28('0xa')][_0x0e28('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3af59b,_0x421cb7,_0x3decc9){return new BPromise(function(_0x1a823a,_0x462d2e){return client[_0x0e28('0xc')](_0x3af59b,_0x3decc9)[_0x0e28('0xd')](function(_0x4521e1){logger[_0x0e28('0xe')](_0x0e28('0xf'),_0x421cb7,'request\x20sent');logger[_0x0e28('0x10')]('MailApplication,\x20%s,\x20%s,\x20%s',_0x421cb7,_0x0e28('0x11'),JSON['stringify'](_0x4521e1));if(_0x4521e1[_0x0e28('0x12')]){if(_0x4521e1[_0x0e28('0x12')][_0x0e28('0x13')]===0x1f4){logger[_0x0e28('0x12')](_0x0e28('0xf'),_0x421cb7,_0x4521e1['error'][_0x0e28('0x14')]);return _0x462d2e(_0x4521e1['error']['message']);}logger[_0x0e28('0x12')](_0x0e28('0xf'),_0x421cb7,_0x4521e1[_0x0e28('0x12')][_0x0e28('0x14')]);return _0x1a823a(_0x4521e1['error'][_0x0e28('0x14')]);}else{logger[_0x0e28('0xe')](_0x0e28('0xf'),_0x421cb7,'request\x20sent');_0x1a823a(_0x4521e1[_0x0e28('0x15')][_0x0e28('0x14')]);}})[_0x0e28('0x16')](function(_0x2f14f6){logger[_0x0e28('0x12')](_0x0e28('0xf'),_0x421cb7,_0x2f14f6);_0x462d2e(_0x2f14f6);});});}exports[_0x0e28('0x17')]=function(_0x3a059f){var _0x51a9ae=this;return new Promise(function(_0x29aa21,_0x2f59b7){return db['MailApplication'][_0x0e28('0x18')](_0x3a059f[_0x0e28('0x19')],{'raw':_0x3a059f['options']?_0x3a059f[_0x0e28('0x1a')][_0x0e28('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3a059f[_0x0e28('0x1a')]?_0x3a059f['options'][_0x0e28('0x1c')]||null:null,'attributes':_0x3a059f[_0x0e28('0x1a')]?_0x3a059f['options'][_0x0e28('0x1d')]||null:null,'limit':_0x3a059f[_0x0e28('0x1a')]?_0x3a059f['options'][_0x0e28('0x1e')]||null:null})['then'](function(_0x16ad0f){logger[_0x0e28('0xe')](_0x0e28('0x17'),_0x3a059f);logger['debug'](_0x0e28('0x17'),_0x3a059f,JSON[_0x0e28('0x1f')](_0x16ad0f));_0x29aa21(_0x16ad0f);})[_0x0e28('0x16')](function(_0x155e51){logger[_0x0e28('0x12')]('UpdateMailApplication',_0x155e51['message'],_0x3a059f);_0x2f59b7(_0x51a9ae[_0x0e28('0x12')](0x1f4,_0x155e51[_0x0e28('0x14')]));});});};
\ No newline at end of file
+var _0x5b33=['debug','request\x20sent','error','code','MailApplication,\x20%s,\x20%s','message','result','catch','UpdateMailApplication','update','body','options','raw','stringify','lodash','moment','ioredis','rpc','../../config/environment','jayson/promise','client','then','info'];(function(_0x298fbb,_0x53a4ac){var _0x41470a=function(_0x40f4d4){while(--_0x40f4d4){_0x298fbb['push'](_0x298fbb['shift']());}};_0x41470a(++_0x53a4ac);}(_0x5b33,0xaf));var _0x35b3=function(_0x44dc4c,_0x357e6a){_0x44dc4c=_0x44dc4c-0x0;var _0x4e644e=_0x5b33[_0x44dc4c];return _0x4e644e;};'use strict';var _=require(_0x35b3('0x0'));var util=require('util');var moment=require(_0x35b3('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x35b3('0x2'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x35b3('0x3'));var config=require(_0x35b3('0x4'));var jayson=require(_0x35b3('0x5'));var client=jayson[_0x35b3('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5e5821,_0x3d823,_0x442638){return new BPromise(function(_0x5cfb30,_0x5ec9da){return client['request'](_0x5e5821,_0x442638)[_0x35b3('0x7')](function(_0x5f191e){logger[_0x35b3('0x8')]('MailApplication,\x20%s,\x20%s',_0x3d823,'request\x20sent');logger[_0x35b3('0x9')]('MailApplication,\x20%s,\x20%s,\x20%s',_0x3d823,_0x35b3('0xa'),JSON['stringify'](_0x5f191e));if(_0x5f191e['error']){if(_0x5f191e[_0x35b3('0xb')][_0x35b3('0xc')]===0x1f4){logger[_0x35b3('0xb')](_0x35b3('0xd'),_0x3d823,_0x5f191e[_0x35b3('0xb')][_0x35b3('0xe')]);return _0x5ec9da(_0x5f191e[_0x35b3('0xb')]['message']);}logger['error']('MailApplication,\x20%s,\x20%s',_0x3d823,_0x5f191e[_0x35b3('0xb')][_0x35b3('0xe')]);return _0x5cfb30(_0x5f191e['error']['message']);}else{logger[_0x35b3('0x8')](_0x35b3('0xd'),_0x3d823,_0x35b3('0xa'));_0x5cfb30(_0x5f191e[_0x35b3('0xf')]['message']);}})[_0x35b3('0x10')](function(_0x279255){logger[_0x35b3('0xb')](_0x35b3('0xd'),_0x3d823,_0x279255);_0x5ec9da(_0x279255);});});}exports[_0x35b3('0x11')]=function(_0x2a85a8){var _0x33d076=this;return new Promise(function(_0x2dd999,_0x4b6906){return db['MailApplication'][_0x35b3('0x12')](_0x2a85a8[_0x35b3('0x13')],{'raw':_0x2a85a8[_0x35b3('0x14')]?_0x2a85a8[_0x35b3('0x14')][_0x35b3('0x15')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2a85a8['options']?_0x2a85a8['options']['where']||null:null,'attributes':_0x2a85a8[_0x35b3('0x14')]?_0x2a85a8[_0x35b3('0x14')]['attributes']||null:null,'limit':_0x2a85a8[_0x35b3('0x14')]?_0x2a85a8['options']['limit']||null:null})[_0x35b3('0x7')](function(_0x31d1e5){logger[_0x35b3('0x8')](_0x35b3('0x11'),_0x2a85a8);logger['debug'](_0x35b3('0x11'),_0x2a85a8,JSON[_0x35b3('0x16')](_0x31d1e5));_0x2dd999(_0x31d1e5);})[_0x35b3('0x10')](function(_0xff00d){logger[_0x35b3('0xb')]('UpdateMailApplication',_0xff00d[_0x35b3('0xe')],_0x2a85a8);_0x4b6906(_0x33d076[_0x35b3('0xb')](0x1f4,_0xff00d[_0x35b3('0xe')]));});});};
\ No newline at end of file
index da88417..0c0abfc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf806=['mailinteraction:update','update','delete','mailinteraction:destroy','destroy','exports','express','Router','../../components/auth/service','get','isAuthenticated','index','/:id','show','/:id/messages','getMessages','/:id/download','post','create','addMessage','/:id/tags','tracked','mail','addTags'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf806,0x1e6));var _0x6f80=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf806[_0x3dd15e];return _0x231fd0;};'use strict';var express=require(_0x6f80('0x0'));var router=express[_0x6f80('0x1')]();var auth=require(_0x6f80('0x2'));var interaction=require('../../components/interaction/service');var controller=require('./mailInteraction.controller');router[_0x6f80('0x3')]('/',auth[_0x6f80('0x4')](),controller[_0x6f80('0x5')]);router[_0x6f80('0x3')]('/describe',auth[_0x6f80('0x4')](),controller['describe']);router[_0x6f80('0x3')](_0x6f80('0x6'),auth[_0x6f80('0x4')](),controller[_0x6f80('0x7')]);router[_0x6f80('0x3')](_0x6f80('0x8'),auth[_0x6f80('0x4')](),controller[_0x6f80('0x9')]);router[_0x6f80('0x3')](_0x6f80('0xa'),auth[_0x6f80('0x4')](),controller['download']);router[_0x6f80('0xb')]('/',auth[_0x6f80('0x4')](),controller[_0x6f80('0xc')]);router[_0x6f80('0xb')]('/:id/messages',auth[_0x6f80('0x4')](),controller[_0x6f80('0xd')]);router['post'](_0x6f80('0xe'),auth[_0x6f80('0x4')](),interaction[_0x6f80('0xf')](_0x6f80('0x10'),'mailinteraction:addtags'),controller[_0x6f80('0x11')]);router['put'](_0x6f80('0x6'),auth['isAuthenticated'](),interaction[_0x6f80('0xf')](_0x6f80('0x10'),_0x6f80('0x12')),controller[_0x6f80('0x13')]);router[_0x6f80('0x14')](_0x6f80('0x6'),auth[_0x6f80('0x4')](),interaction['tracked'](_0x6f80('0x10'),_0x6f80('0x15')),controller[_0x6f80('0x16')]);router[_0x6f80('0x14')](_0x6f80('0xe'),auth[_0x6f80('0x4')](),controller['removeTags']);module[_0x6f80('0x17')]=router;
\ No newline at end of file
+var _0x4e4c=['put','mail','delete','removeTags','express','Router','../../components/auth/service','../../components/interaction/service','get','index','/:id','show','/:id/messages','getMessages','/:id/download','isAuthenticated','download','post','addMessage','/:id/tags','tracked','mailinteraction:addtags','addTags'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4e4c,0x1b9));var _0xc4e4=function(_0x67edc0,_0x1f079f){_0x67edc0=_0x67edc0-0x0;var _0x46712f=_0x4e4c[_0x67edc0];return _0x46712f;};'use strict';var express=require(_0xc4e4('0x0'));var router=express[_0xc4e4('0x1')]();var auth=require(_0xc4e4('0x2'));var interaction=require(_0xc4e4('0x3'));var controller=require('./mailInteraction.controller');router[_0xc4e4('0x4')]('/',auth['isAuthenticated'](),controller[_0xc4e4('0x5')]);router['get']('/describe',auth['isAuthenticated'](),controller['describe']);router[_0xc4e4('0x4')](_0xc4e4('0x6'),auth['isAuthenticated'](),controller[_0xc4e4('0x7')]);router[_0xc4e4('0x4')](_0xc4e4('0x8'),auth['isAuthenticated'](),controller[_0xc4e4('0x9')]);router['get'](_0xc4e4('0xa'),auth[_0xc4e4('0xb')](),controller[_0xc4e4('0xc')]);router[_0xc4e4('0xd')]('/',auth[_0xc4e4('0xb')](),controller['create']);router[_0xc4e4('0xd')]('/:id/messages',auth[_0xc4e4('0xb')](),controller[_0xc4e4('0xe')]);router[_0xc4e4('0xd')](_0xc4e4('0xf'),auth[_0xc4e4('0xb')](),interaction[_0xc4e4('0x10')]('mail',_0xc4e4('0x11')),controller[_0xc4e4('0x12')]);router[_0xc4e4('0x13')](_0xc4e4('0x6'),auth[_0xc4e4('0xb')](),interaction['tracked'](_0xc4e4('0x14'),'mailinteraction:update'),controller['update']);router[_0xc4e4('0x15')](_0xc4e4('0x6'),auth[_0xc4e4('0xb')](),interaction[_0xc4e4('0x10')](_0xc4e4('0x14'),'mailinteraction:destroy'),controller['destroy']);router[_0xc4e4('0x15')](_0xc4e4('0xf'),auth[_0xc4e4('0xb')](),controller[_0xc4e4('0x16')]);module['exports']=router;
\ No newline at end of file
index 8bb1419..0df7076 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e13=['TEXT','long','DATE','ENUM','out','sequelize','iconv','BOOLEAN','STRING'];(function(_0x495cb5,_0x6412cb){var _0x880020=function(_0x51dfbb){while(--_0x51dfbb){_0x495cb5['push'](_0x495cb5['shift']());}};_0x880020(++_0x6412cb);}(_0x8e13,0x1ac));var _0x38e1=function(_0xd36d6c,_0x2629e9){_0xd36d6c=_0xd36d6c-0x0;var _0x4df97d=_0x8e13[_0xd36d6c];return _0x4df97d;};'use strict';var Sequelize=require(_0x38e1('0x0'));var iconv=require(_0x38e1('0x1'));module['exports']={'closed':{'type':Sequelize[_0x38e1('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x38e1('0x3')]},'secondDisposition':{'type':Sequelize[_0x38e1('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x38e1('0x3')]},'inReplyTo':{'type':Sequelize[_0x38e1('0x3')](0x1fe)},'to':{'type':Sequelize[_0x38e1('0x3')]},'cc':{'type':Sequelize[_0x38e1('0x4')](_0x38e1('0x5'))},'subject':{'type':Sequelize[_0x38e1('0x4')]()},'attach':{'type':Sequelize[_0x38e1('0x2')],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0x38e1('0x6')]},'substatus':{'type':Sequelize[_0x38e1('0x3')](0x3c)},'substatusAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0x38e1('0x7')]('in',_0x38e1('0x8')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x38e1('0x6')]},'lastMsgDirection':{'type':Sequelize[_0x38e1('0x7')]('in',_0x38e1('0x8')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x8ad8=['long','out','ENUM','iconv','exports','BOOLEAN','DATE','STRING','TEXT'];(function(_0xc22619,_0x4321f9){var _0x3782c9=function(_0x1152a1){while(--_0x1152a1){_0xc22619['push'](_0xc22619['shift']());}};_0x3782c9(++_0x4321f9);}(_0x8ad8,0x17d));var _0x88ad=function(_0x3c0c4c,_0x3a02e8){_0x3c0c4c=_0x3c0c4c-0x0;var _0x5b6428=_0x8ad8[_0x3c0c4c];return _0x5b6428;};'use strict';var Sequelize=require('sequelize');var iconv=require(_0x88ad('0x0'));module[_0x88ad('0x1')]={'closed':{'type':Sequelize[_0x88ad('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x88ad('0x3')]},'disposition':{'type':Sequelize[_0x88ad('0x4')]},'secondDisposition':{'type':Sequelize[_0x88ad('0x4')]},'thirdDisposition':{'type':Sequelize[_0x88ad('0x4')]},'note':{'type':Sequelize[_0x88ad('0x4')]},'inReplyTo':{'type':Sequelize[_0x88ad('0x4')](0x1fe)},'to':{'type':Sequelize[_0x88ad('0x4')]},'cc':{'type':Sequelize[_0x88ad('0x5')](_0x88ad('0x6'))},'subject':{'type':Sequelize[_0x88ad('0x5')]()},'attach':{'type':Sequelize[_0x88ad('0x2')],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0x88ad('0x3')]},'substatus':{'type':Sequelize[_0x88ad('0x4')](0x3c)},'substatusAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0x88ad('0x7')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x88ad('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x88ad('0x8')]('in',_0x88ad('0x7')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x88ad('0x2')],'defaultValue':![]}};
\ No newline at end of file
index e223701..4d730b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x627a=['removeTags','download','toString','join','server','files','transcript-%d-%s.zip','attachments','push','Attachment','Attachments','Messages','from','bcc','subject','createdAt','get','each','missing.recipient@your.company.com','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','basename','existsSync','readFileSync','unlinkSync','eml-format','moment','bluebird','util','lodash','juice','ioredis','../../components/parsers/qs','api','../../config/environment','../../mysqldb','html-entities','redis','localhost','socket.io-emitter','./mailInteraction.socket','sendStatus','status','json','offset','count','limit','set','Content-Range','then','end','error','name','send','index','MailInteraction','fieldName','type','key','getOptions','mail','query','user','catch','show','keys','filters','intersection','model','attributes','fields','length','include','merge','options','find','create','body','update','params','describe','addMessage','MailMessage','ids','omit','getMessages','findOne','rawAttributes','order','sort','where','pick','filter','map','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','findAll','inlineCss','true','setTags','spread','color','emit','mailInteractionTags:save'];(function(_0x32486a,_0x516951){var _0x4f6126=function(_0x5e4295){while(--_0x5e4295){_0x32486a['push'](_0x32486a['shift']());}};_0x4f6126(++_0x516951);}(_0x627a,0x1c6));var _0xa627=function(_0x24223e,_0x5e8d76){_0x24223e=_0x24223e-0x0;var _0x47fea3=_0x627a[_0x24223e];return _0x47fea3;};'use strict';var emlformat=require(_0xa627('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var moment=require(_0xa627('0x1'));var BPromise=require(_0xa627('0x2'));var util=require(_0xa627('0x3'));var path=require('path');var fs=require('fs');var _=require(_0xa627('0x4'));var juice=require(_0xa627('0x5'));var Redis=require(_0xa627('0x6'));var interaction=require('../../components/interaction/service');var qs=require(_0xa627('0x7'));var logger=require('../../config/logger')(_0xa627('0x8'));var config=require(_0xa627('0x9'));var db=require(_0xa627('0xa'))['db'];var htmlEntities=require(_0xa627('0xb'));config[_0xa627('0xc')]=_['defaults'](config[_0xa627('0xc')],{'host':_0xa627('0xd'),'port':0x18eb});var socket=require(_0xa627('0xe'))(new Redis(config[_0xa627('0xc')]));require(_0xa627('0xf'))['register'](socket);function respondWithStatusCode(_0x50e6fa,_0x15c910){_0x15c910=_0x15c910||0xcc;return function(_0x2fd214){if(_0x2fd214){return _0x50e6fa[_0xa627('0x10')](_0x15c910);}return _0x50e6fa['status'](_0x15c910)['end']();};}function respondWithResult(_0x7a9237,_0x89c004){_0x89c004=_0x89c004||0xc8;return function(_0x55b61e){if(_0x55b61e){return _0x7a9237[_0xa627('0x11')](_0x89c004)[_0xa627('0x12')](_0x55b61e);}};}function respondWithFilteredResult(_0x4cd82f,_0x273a80){return function(_0x372d33){if(_0x372d33){var _0x3c0709=typeof _0x273a80[_0xa627('0x13')]==='undefined'&&typeof _0x273a80['limit']==='undefined';var _0x4f0f87=_0x372d33['count'];var _0x2025af=_0x3c0709?0x0:_0x273a80[_0xa627('0x13')];var _0x2b57f0=_0x3c0709?_0x372d33[_0xa627('0x14')]:_0x273a80['offset']+_0x273a80[_0xa627('0x15')];var _0x2363e4;if(_0x2b57f0>=_0x4f0f87){_0x2b57f0=_0x4f0f87;_0x2363e4=0xc8;}else{_0x2363e4=0xce;}_0x4cd82f['status'](_0x2363e4);return _0x4cd82f[_0xa627('0x16')](_0xa627('0x17'),_0x2025af+'-'+_0x2b57f0+'/'+_0x4f0f87)[_0xa627('0x12')](_0x372d33);}return null;};}function saveUpdates(_0x23b445){return function(_0x3142e5){if(_0x3142e5){return _0x3142e5['update'](_0x23b445)[_0xa627('0x18')](function(_0x55d7f5){return _0x55d7f5;});}return null;};}function removeEntity(_0x35ae84){return function(_0x295cfe){if(_0x295cfe){return _0x295cfe['destroy']()['then'](function(){_0x35ae84['status'](0xcc)[_0xa627('0x19')]();});}};}function handleEntityNotFound(_0x1c9b2a){return function(_0x2e34cf){if(!_0x2e34cf){_0x1c9b2a[_0xa627('0x10')](0x194);}return _0x2e34cf;};}function handleError(_0x80c11,_0x318080){_0x318080=_0x318080||0x1f4;return function(_0x134282){logger[_0xa627('0x1a')](_0x134282['stack']);if(_0x134282[_0xa627('0x1b')]){delete _0x134282['name'];}_0x80c11[_0xa627('0x11')](_0x318080)[_0xa627('0x1c')](_0x134282);};}exports[_0xa627('0x1d')]=function(_0x159cde,_0x1e86c9){var _0x1c17eb={};var _0x38f62f=_['map'](db[_0xa627('0x1e')]['rawAttributes'],function(_0x45c3e4){return{'name':_0x45c3e4[_0xa627('0x1f')],'type':_0x45c3e4[_0xa627('0x20')][_0xa627('0x21')]};});_0x1c17eb=qs[_0xa627('0x22')](_0x38f62f,_0x159cde);return interaction['findAll'](_0xa627('0x23'),_0x159cde[_0xa627('0x24')],_0x159cde[_0xa627('0x25')],_0x1c17eb,_0x38f62f)[_0xa627('0x18')](respondWithFilteredResult(_0x1e86c9,_0x1c17eb))[_0xa627('0x26')](handleError(_0x1e86c9,null));};exports[_0xa627('0x27')]=function(_0x15a08c,_0x9cf145){var _0x4a4d99={'raw':![],'where':{'id':_0x15a08c['params']['id']}},_0x2401cb={};_0x2401cb['model']=_['keys'](db[_0xa627('0x1e')]['rawAttributes']);_0x2401cb[_0xa627('0x24')]=_[_0xa627('0x28')](_0x15a08c[_0xa627('0x24')]);_0x2401cb[_0xa627('0x29')]=_[_0xa627('0x2a')](_0x2401cb[_0xa627('0x2b')],_0x2401cb[_0xa627('0x24')]);_0x4a4d99[_0xa627('0x2c')]=_[_0xa627('0x2a')](_0x2401cb[_0xa627('0x2b')],qs[_0xa627('0x2d')](_0x15a08c[_0xa627('0x24')][_0xa627('0x2d')]));_0x4a4d99[_0xa627('0x2c')]=_0x4a4d99[_0xa627('0x2c')][_0xa627('0x2e')]?_0x4a4d99[_0xa627('0x2c')]:_0x2401cb[_0xa627('0x2b')];if(_0x15a08c[_0xa627('0x24')]['includeAll']){_0x4a4d99[_0xa627('0x2f')]=[{'all':!![]}];}_0x4a4d99=_[_0xa627('0x30')]({},_0x4a4d99,_0x15a08c[_0xa627('0x31')]);return db['MailInteraction'][_0xa627('0x32')](_0x4a4d99)[_0xa627('0x18')](handleEntityNotFound(_0x9cf145,null))[_0xa627('0x18')](respondWithResult(_0x9cf145,null))[_0xa627('0x26')](handleError(_0x9cf145,null));};exports['create']=function(_0x3dde47,_0x5ebd51){return db['MailInteraction'][_0xa627('0x33')](_0x3dde47[_0xa627('0x34')],{})[_0xa627('0x18')](respondWithResult(_0x5ebd51,0xc9))[_0xa627('0x26')](handleError(_0x5ebd51,null));};exports[_0xa627('0x35')]=function(_0xb15b8c,_0x505da9){if(_0xb15b8c[_0xa627('0x34')]['id']){delete _0xb15b8c[_0xa627('0x34')]['id'];}return db[_0xa627('0x1e')][_0xa627('0x32')]({'where':{'id':_0xb15b8c[_0xa627('0x36')]['id']}})[_0xa627('0x18')](handleEntityNotFound(_0x505da9,null))[_0xa627('0x18')](saveUpdates(_0xb15b8c[_0xa627('0x34')],null))[_0xa627('0x18')](respondWithResult(_0x505da9,null))[_0xa627('0x26')](handleError(_0x505da9,null));};exports['destroy']=function(_0x59101b,_0x5e3137){return db['MailInteraction'][_0xa627('0x32')]({'where':{'id':_0x59101b['params']['id']}})[_0xa627('0x18')](handleEntityNotFound(_0x5e3137,null))[_0xa627('0x18')](removeEntity(_0x5e3137,null))['catch'](handleError(_0x5e3137,null));};exports[_0xa627('0x37')]=function(_0x58b72e,_0x3bc2c5){return db[_0xa627('0x1e')][_0xa627('0x37')]()[_0xa627('0x18')](respondWithResult(_0x3bc2c5,null))[_0xa627('0x26')](handleError(_0x3bc2c5,null));};exports[_0xa627('0x38')]=function(_0x1cfa86,_0x326d2e){return db[_0xa627('0x39')][_0xa627('0x32')]({'where':{'id':_0x1cfa86[_0xa627('0x36')]['id']}})[_0xa627('0x18')](handleEntityNotFound(_0x326d2e,null))[_0xa627('0x18')](function(_0x92a832){if(_0x92a832){return _0x92a832[_0xa627('0x38')](_0x1cfa86[_0xa627('0x34')][_0xa627('0x3a')],_[_0xa627('0x3b')](_0x1cfa86[_0xa627('0x34')],[_0xa627('0x3a'),'id'])||{});}})[_0xa627('0x18')](respondWithResult(_0x326d2e,null))['catch'](handleError(_0x326d2e,null));};exports[_0xa627('0x3c')]=function(_0x2aee31,_0x5b9ee3){var _0x32c9ae={'raw':![],'where':{}};var _0x324c41={};var _0x494b55={'count':0x0,'rows':[]};return db[_0xa627('0x1e')][_0xa627('0x3d')]({'where':{'id':_0x2aee31[_0xa627('0x36')]['id']}})[_0xa627('0x18')](handleEntityNotFound(_0x5b9ee3,null))[_0xa627('0x18')](function(_0xbb02bb){if(_0xbb02bb){_0x324c41[_0xa627('0x2b')]=_[_0xa627('0x28')](db[_0xa627('0x39')][_0xa627('0x3e')]);_0x324c41[_0xa627('0x24')]=_['keys'](_0x2aee31[_0xa627('0x24')]);_0x324c41[_0xa627('0x29')]=_[_0xa627('0x2a')](_0x324c41['model'],_0x324c41[_0xa627('0x24')]);_0x32c9ae[_0xa627('0x2c')]=_[_0xa627('0x2a')](_0x324c41[_0xa627('0x2b')],qs[_0xa627('0x2d')](_0x2aee31[_0xa627('0x24')]['fields']));_0x32c9ae[_0xa627('0x2c')]=_0x32c9ae[_0xa627('0x2c')][_0xa627('0x2e')]?_0x32c9ae[_0xa627('0x2c')]:_0x324c41[_0xa627('0x2b')];if(!_0x2aee31[_0xa627('0x24')]['hasOwnProperty']('nolimit')){_0x32c9ae['limit']=qs[_0xa627('0x15')](_0x2aee31[_0xa627('0x24')]['limit']);_0x32c9ae[_0xa627('0x13')]=qs[_0xa627('0x13')](_0x2aee31[_0xa627('0x24')][_0xa627('0x13')]);}_0x32c9ae[_0xa627('0x3f')]=qs[_0xa627('0x40')](_0x2aee31[_0xa627('0x24')][_0xa627('0x40')]);_0x32c9ae[_0xa627('0x41')]=qs[_0xa627('0x29')](_[_0xa627('0x42')](_0x2aee31[_0xa627('0x24')],_0x324c41['filters']));_0x32c9ae[_0xa627('0x41')]['MailInteractionId']=_0xbb02bb['id'];if(_0x2aee31[_0xa627('0x24')][_0xa627('0x43')]){_0x32c9ae['where']=_[_0xa627('0x30')](_0x32c9ae['where'],{'$or':_[_0xa627('0x44')](_0x32c9ae[_0xa627('0x2c')],function(_0x1b2998){var _0x3665f5={};_0x3665f5[_0x1b2998]={'$like':'%'+_0x2aee31['query'][_0xa627('0x43')]+'%'};return _0x3665f5;})});}if(_0x2aee31[_0xa627('0x24')][_0xa627('0x45')]){var _0x4004a1=_0x2aee31[_0xa627('0x24')][_0xa627('0x45')][_0xa627('0x46')](',');var _0x28d595={};_0x28d595[_0x4004a1[0x0]]={'$gte':moment(_0x4004a1[0x1])[_0xa627('0x47')](_0xa627('0x48'))};_0x32c9ae[_0xa627('0x41')]=_['merge'](_0x32c9ae[_0xa627('0x41')],_0x28d595);}_0x32c9ae=_[_0xa627('0x30')]({},_0x32c9ae,_0x2aee31[_0xa627('0x31')]);return db['MailMessage'][_0xa627('0x14')]({'where':_0x32c9ae[_0xa627('0x41')]})[_0xa627('0x18')](function(_0x126f2c){_0x494b55[_0xa627('0x14')]=_0x126f2c;if(_0x2aee31[_0xa627('0x24')]['includeAll']){_0x32c9ae[_0xa627('0x2f')]=[{'all':!![]}];}return db[_0xa627('0x39')][_0xa627('0x49')](_0x32c9ae);})[_0xa627('0x18')](function(_0x152f09){if(_0x2aee31[_0xa627('0x24')][_0xa627('0x4a')]===_0xa627('0x4b')){for(var _0x561b0b=0x0;_0x561b0b<_0x152f09[_0xa627('0x2e')];_0x561b0b++){_0x152f09[_0x561b0b][_0xa627('0x34')]=juice(_0x152f09[_0x561b0b][_0xa627('0x34')]);}}_0x494b55['rows']=_0x152f09;return _0x494b55;});}})['then'](respondWithFilteredResult(_0x5b9ee3,_0x32c9ae))['catch'](handleError(_0x5b9ee3,null));};exports['addTags']=function(_0x3b1701,_0x1831a2){return db[_0xa627('0x1e')][_0xa627('0x32')]({'where':{'id':_0x3b1701[_0xa627('0x36')]['id']}})[_0xa627('0x18')](handleEntityNotFound(_0x1831a2,null))[_0xa627('0x18')](function(_0x2dd5d8){if(_0x2dd5d8){return _0x2dd5d8[_0xa627('0x4c')](_0x3b1701[_0xa627('0x34')][_0xa627('0x3a')],_[_0xa627('0x3b')](_0x3b1701[_0xa627('0x34')],[_0xa627('0x3a'),'id'])||{})[_0xa627('0x4d')](function(){return db['Tag']['findAll']({'attributes':['id',_0xa627('0x1b'),_0xa627('0x4e')],'where':{'id':_0x3b1701[_0xa627('0x34')][_0xa627('0x3a')]}});})[_0xa627('0x18')](function(_0x3cc5a9){socket[_0xa627('0x4f')](_0xa627('0x50'),{'id':Number(_0x3b1701['params']['id']),'tags':_0x3cc5a9||[]});return{'id':Number(_0x3b1701[_0xa627('0x36')]['id']),'tags':_0x3cc5a9||[]};});}})[_0xa627('0x18')](respondWithResult(_0x1831a2,null))[_0xa627('0x26')](handleError(_0x1831a2,null));};exports[_0xa627('0x51')]=function(_0x4ac696,_0x530f28){return db[_0xa627('0x1e')][_0xa627('0x32')]({'where':{'id':_0x4ac696['params']['id']}})['then'](handleEntityNotFound(_0x530f28,null))[_0xa627('0x18')](function(_0x5d27e0){if(_0x5d27e0){return _0x5d27e0[_0xa627('0x51')](_0x4ac696[_0xa627('0x24')][_0xa627('0x3a')]);}})[_0xa627('0x18')](respondWithStatusCode(_0x530f28,null))[_0xa627('0x26')](handleError(_0x530f28,null));};exports[_0xa627('0x52')]=function(_0x379bd4,_0x36639c){var _0x2919c4=moment()['unix']()[_0xa627('0x53')]();var _0x1feb04=path[_0xa627('0x54')](config['root'],_0xa627('0x55'),'files','tmp');var _0x2f70e7=path[_0xa627('0x54')](config['root'],_0xa627('0x55'),_0xa627('0x56'),'attachments');var _0x340a61=path[_0xa627('0x54')](_0x1feb04,_0x2919c4);var _0xe85871=util['format'](_0xa627('0x57'),_0x379bd4['params']['id'],_0x2919c4);var _0x4d390d=path[_0xa627('0x54')](_0x1feb04,_0xe85871);var _0x989b44=[];if(_0x379bd4[_0xa627('0x24')][_0xa627('0x58')]){_0x989b44[_0xa627('0x59')]({'model':db[_0xa627('0x5a')],'as':_0xa627('0x5b'),'raw':!![]});}var _0x10ab2f=[{'model':db['MailMessage'],'as':_0xa627('0x5c'),'attributes':['id','body',_0xa627('0x5d'),'to','cc',_0xa627('0x5e'),_0xa627('0x5f'),_0xa627('0x60')],'where':{'secret':![]},'order':qs[_0xa627('0x40')]('id'),'include':_0x989b44}];return db['MailInteraction'][_0xa627('0x32')]({'where':{'id':_0x379bd4[_0xa627('0x36')]['id']},'include':_0x10ab2f})[_0xa627('0x18')](handleEntityNotFound(_0x36639c,null))[_0xa627('0x18')](function(_0x21e061){if(_0x21e061&&_0x21e061['Messages']){var _0x2a704f=_0x21e061[_0xa627('0x61')]({'plain':!![]});fs['mkdirSync'](_0x340a61);return BPromise[_0xa627('0x62')](_0x2a704f[_0xa627('0x5c')],function(_0x48d42d,_0x45108c){var _0xfa295e={'from':_0x48d42d[_0xa627('0x5d')],'to':_0x48d42d['to']||_0xa627('0x63'),'subject':_0x48d42d[_0xa627('0x5f')],'html':htmlEntities[_0xa627('0x64')](_0x48d42d[_0xa627('0x34')]),'headers':{'Date':moment(_0x48d42d[_0xa627('0x60')])['format'](_0xa627('0x65'))},'attachments':[]};if(_0x48d42d['cc']){_0xfa295e[_0xa627('0x66')]['Cc']=_0x48d42d['cc'];}if(_0x48d42d[_0xa627('0x5e')]){_0xfa295e[_0xa627('0x66')]['Bcc']=_0x48d42d[_0xa627('0x5e')];}return new BPromise(function(_0x1a55a6,_0x554477){if(_0x48d42d[_0xa627('0x5b')]){for(var _0x2f56ee=0x0;_0x2f56ee<_0x48d42d[_0xa627('0x5b')]['length'];_0x2f56ee++){var _0x4b9eec=_0x48d42d[_0xa627('0x5b')][_0x2f56ee];var _0x511d68=path[_0xa627('0x54')](_0x2f70e7,_0x4b9eec[_0xa627('0x67')]);if(fs[_0xa627('0x68')](_0x511d68)){_0xfa295e[_0xa627('0x58')][_0xa627('0x59')]({'name':_0x4b9eec[_0xa627('0x1b')],'contentType':_0x4b9eec['type'],'data':fs[_0xa627('0x69')](_0x511d68)});}}}emlformat['build'](_0xfa295e,function(_0x2ef319,_0x1fc3fa){if(_0x2ef319)return _0x554477(_0x2ef319);fs['writeFileSync'](path[_0xa627('0x54')](_0x340a61,util[_0xa627('0x47')]('message%d.eml',_0x45108c)),_0x1fc3fa);return _0x1a55a6(_0x1fc3fa);});});})['then'](function(){return new BPromise(function(_0x188a30,_0x1d69ad){zipdir(_0x340a61,{'saveTo':_0x4d390d},function(_0x1ea1d3,_0x2ce5bb){if(_0x1ea1d3)return _0x1d69ad(_0x1ea1d3);return _0x188a30(_0x2ce5bb);});})[_0xa627('0x18')](function(){return new BPromise(function(_0x19445d,_0x5aa29b){rimraf(_0x340a61,function(_0x1ce475){if(_0x1ce475)_0x5aa29b(_0x1ce475);return _0x19445d();});});})[_0xa627('0x18')](function(){return _0x36639c[_0xa627('0x52')](_0x4d390d,_0xe85871,function(_0x29cd4c){if(!_0x29cd4c)fs[_0xa627('0x6a')](_0x4d390d);});});});}else{return _0x36639c[_0xa627('0x10')](0xc8);}})[_0xa627('0x26')](handleError(_0x36639c,null));};
\ No newline at end of file
+var _0xe538=['getMessages','findOne','filters','hasOwnProperty','order','sort','where','MailInteractionId','filter','$gte','format','YYYY-MM-DD\x20HH:mm:ss','true','rows','addTags','omit','spread','Tag','color','emit','mailInteractionTags:save','removeTags','download','unix','toString','join','server','root','files','attachments','Attachment','Attachments','Messages','get','missing.recipient@your.company.com','subject','decode','createdAt','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','bcc','Bcc','basename','existsSync','push','readFileSync','build','writeFileSync','message%d.eml','unlinkSync','rimraf','zip-dir','bluebird','path','lodash','juice','ioredis','../../components/interaction/service','../../config/logger','api','redis','defaults','localhost','./mailInteraction.socket','register','sendStatus','end','status','json','undefined','limit','count','offset','set','update','then','destroy','error','name','send','map','rawAttributes','type','key','getOptions','findAll','mail','catch','model','query','keys','intersection','attributes','fields','length','includeAll','include','merge','options','MailInteraction','find','body','params','describe','addMessage','MailMessage','ids'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xe538,0x173));var _0x8e53=function(_0x33a21a,_0x22d1a8){_0x33a21a=_0x33a21a-0x0;var _0x4c628e=_0xe538[_0x33a21a];return _0x4c628e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8e53('0x0'));var zipdir=require(_0x8e53('0x1'));var moment=require('moment');var BPromise=require(_0x8e53('0x2'));var util=require('util');var path=require(_0x8e53('0x3'));var fs=require('fs');var _=require(_0x8e53('0x4'));var juice=require(_0x8e53('0x5'));var Redis=require(_0x8e53('0x6'));var interaction=require(_0x8e53('0x7'));var qs=require('../../components/parsers/qs');var logger=require(_0x8e53('0x8'))(_0x8e53('0x9'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];var htmlEntities=require('html-entities');config[_0x8e53('0xa')]=_[_0x8e53('0xb')](config[_0x8e53('0xa')],{'host':_0x8e53('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x8e53('0xa')]));require(_0x8e53('0xd'))[_0x8e53('0xe')](socket);function respondWithStatusCode(_0x35c41b,_0x59928f){_0x59928f=_0x59928f||0xcc;return function(_0x35973d){if(_0x35973d){return _0x35c41b[_0x8e53('0xf')](_0x59928f);}return _0x35c41b['status'](_0x59928f)[_0x8e53('0x10')]();};}function respondWithResult(_0x3c031c,_0x209482){_0x209482=_0x209482||0xc8;return function(_0x589369){if(_0x589369){return _0x3c031c[_0x8e53('0x11')](_0x209482)[_0x8e53('0x12')](_0x589369);}};}function respondWithFilteredResult(_0x43fbc8,_0x41688d){return function(_0x4ef3aa){if(_0x4ef3aa){var _0x274dec=typeof _0x41688d['offset']===_0x8e53('0x13')&&typeof _0x41688d[_0x8e53('0x14')]===_0x8e53('0x13');var _0x3601b8=_0x4ef3aa[_0x8e53('0x15')];var _0x3f5097=_0x274dec?0x0:_0x41688d['offset'];var _0x2d50c6=_0x274dec?_0x4ef3aa[_0x8e53('0x15')]:_0x41688d[_0x8e53('0x16')]+_0x41688d['limit'];var _0x81be29;if(_0x2d50c6>=_0x3601b8){_0x2d50c6=_0x3601b8;_0x81be29=0xc8;}else{_0x81be29=0xce;}_0x43fbc8[_0x8e53('0x11')](_0x81be29);return _0x43fbc8[_0x8e53('0x17')]('Content-Range',_0x3f5097+'-'+_0x2d50c6+'/'+_0x3601b8)['json'](_0x4ef3aa);}return null;};}function saveUpdates(_0x45efa3){return function(_0x1ce726){if(_0x1ce726){return _0x1ce726[_0x8e53('0x18')](_0x45efa3)[_0x8e53('0x19')](function(_0x33f49d){return _0x33f49d;});}return null;};}function removeEntity(_0x2af34b){return function(_0xd39987){if(_0xd39987){return _0xd39987[_0x8e53('0x1a')]()[_0x8e53('0x19')](function(){_0x2af34b[_0x8e53('0x11')](0xcc)[_0x8e53('0x10')]();});}};}function handleEntityNotFound(_0x209f75){return function(_0x54b557){if(!_0x54b557){_0x209f75['sendStatus'](0x194);}return _0x54b557;};}function handleError(_0x4bd77b,_0x10c894){_0x10c894=_0x10c894||0x1f4;return function(_0x15910f){logger[_0x8e53('0x1b')](_0x15910f['stack']);if(_0x15910f[_0x8e53('0x1c')]){delete _0x15910f[_0x8e53('0x1c')];}_0x4bd77b['status'](_0x10c894)[_0x8e53('0x1d')](_0x15910f);};}exports['index']=function(_0x706e0f,_0x1799c1){var _0x365da0={};var _0x337bbf=_[_0x8e53('0x1e')](db['MailInteraction'][_0x8e53('0x1f')],function(_0x2b3c23){return{'name':_0x2b3c23['fieldName'],'type':_0x2b3c23[_0x8e53('0x20')][_0x8e53('0x21')]};});_0x365da0=qs[_0x8e53('0x22')](_0x337bbf,_0x706e0f);return interaction[_0x8e53('0x23')](_0x8e53('0x24'),_0x706e0f['query'],_0x706e0f['user'],_0x365da0,_0x337bbf)[_0x8e53('0x19')](respondWithFilteredResult(_0x1799c1,_0x365da0))[_0x8e53('0x25')](handleError(_0x1799c1,null));};exports['show']=function(_0x201702,_0x8212e7){var _0x30ef0b={'raw':![],'where':{'id':_0x201702['params']['id']}},_0x46e023={};_0x46e023[_0x8e53('0x26')]=_['keys'](db['MailInteraction'][_0x8e53('0x1f')]);_0x46e023[_0x8e53('0x27')]=_[_0x8e53('0x28')](_0x201702[_0x8e53('0x27')]);_0x46e023['filters']=_[_0x8e53('0x29')](_0x46e023[_0x8e53('0x26')],_0x46e023['query']);_0x30ef0b[_0x8e53('0x2a')]=_[_0x8e53('0x29')](_0x46e023[_0x8e53('0x26')],qs[_0x8e53('0x2b')](_0x201702[_0x8e53('0x27')][_0x8e53('0x2b')]));_0x30ef0b[_0x8e53('0x2a')]=_0x30ef0b[_0x8e53('0x2a')][_0x8e53('0x2c')]?_0x30ef0b[_0x8e53('0x2a')]:_0x46e023[_0x8e53('0x26')];if(_0x201702[_0x8e53('0x27')][_0x8e53('0x2d')]){_0x30ef0b[_0x8e53('0x2e')]=[{'all':!![]}];}_0x30ef0b=_[_0x8e53('0x2f')]({},_0x30ef0b,_0x201702[_0x8e53('0x30')]);return db[_0x8e53('0x31')][_0x8e53('0x32')](_0x30ef0b)[_0x8e53('0x19')](handleEntityNotFound(_0x8212e7,null))['then'](respondWithResult(_0x8212e7,null))[_0x8e53('0x25')](handleError(_0x8212e7,null));};exports['create']=function(_0x285ce2,_0x3cbeaa){return db['MailInteraction']['create'](_0x285ce2[_0x8e53('0x33')],{})[_0x8e53('0x19')](respondWithResult(_0x3cbeaa,0xc9))[_0x8e53('0x25')](handleError(_0x3cbeaa,null));};exports['update']=function(_0xaa5053,_0x4aabf6){if(_0xaa5053[_0x8e53('0x33')]['id']){delete _0xaa5053[_0x8e53('0x33')]['id'];}return db[_0x8e53('0x31')][_0x8e53('0x32')]({'where':{'id':_0xaa5053[_0x8e53('0x34')]['id']}})[_0x8e53('0x19')](handleEntityNotFound(_0x4aabf6,null))[_0x8e53('0x19')](saveUpdates(_0xaa5053[_0x8e53('0x33')],null))[_0x8e53('0x19')](respondWithResult(_0x4aabf6,null))[_0x8e53('0x25')](handleError(_0x4aabf6,null));};exports[_0x8e53('0x1a')]=function(_0x2d0345,_0x4412ac){return db[_0x8e53('0x31')][_0x8e53('0x32')]({'where':{'id':_0x2d0345[_0x8e53('0x34')]['id']}})[_0x8e53('0x19')](handleEntityNotFound(_0x4412ac,null))[_0x8e53('0x19')](removeEntity(_0x4412ac,null))[_0x8e53('0x25')](handleError(_0x4412ac,null));};exports[_0x8e53('0x35')]=function(_0x2f11f5,_0x55f328){return db['MailInteraction'][_0x8e53('0x35')]()['then'](respondWithResult(_0x55f328,null))[_0x8e53('0x25')](handleError(_0x55f328,null));};exports[_0x8e53('0x36')]=function(_0x414a9b,_0x496a94){return db[_0x8e53('0x37')]['find']({'where':{'id':_0x414a9b[_0x8e53('0x34')]['id']}})[_0x8e53('0x19')](handleEntityNotFound(_0x496a94,null))[_0x8e53('0x19')](function(_0x290440){if(_0x290440){return _0x290440[_0x8e53('0x36')](_0x414a9b[_0x8e53('0x33')][_0x8e53('0x38')],_['omit'](_0x414a9b[_0x8e53('0x33')],[_0x8e53('0x38'),'id'])||{});}})[_0x8e53('0x19')](respondWithResult(_0x496a94,null))[_0x8e53('0x25')](handleError(_0x496a94,null));};exports[_0x8e53('0x39')]=function(_0x179fbf,_0x15ff9e){var _0x44beb6={'raw':![],'where':{}};var _0x49b1e8={};var _0x1de2d5={'count':0x0,'rows':[]};return db['MailInteraction'][_0x8e53('0x3a')]({'where':{'id':_0x179fbf[_0x8e53('0x34')]['id']}})['then'](handleEntityNotFound(_0x15ff9e,null))[_0x8e53('0x19')](function(_0x2213cf){if(_0x2213cf){_0x49b1e8['model']=_['keys'](db[_0x8e53('0x37')][_0x8e53('0x1f')]);_0x49b1e8[_0x8e53('0x27')]=_[_0x8e53('0x28')](_0x179fbf[_0x8e53('0x27')]);_0x49b1e8[_0x8e53('0x3b')]=_[_0x8e53('0x29')](_0x49b1e8[_0x8e53('0x26')],_0x49b1e8['query']);_0x44beb6['attributes']=_[_0x8e53('0x29')](_0x49b1e8[_0x8e53('0x26')],qs[_0x8e53('0x2b')](_0x179fbf[_0x8e53('0x27')]['fields']));_0x44beb6[_0x8e53('0x2a')]=_0x44beb6[_0x8e53('0x2a')][_0x8e53('0x2c')]?_0x44beb6['attributes']:_0x49b1e8[_0x8e53('0x26')];if(!_0x179fbf[_0x8e53('0x27')][_0x8e53('0x3c')]('nolimit')){_0x44beb6[_0x8e53('0x14')]=qs[_0x8e53('0x14')](_0x179fbf['query'][_0x8e53('0x14')]);_0x44beb6[_0x8e53('0x16')]=qs[_0x8e53('0x16')](_0x179fbf['query']['offset']);}_0x44beb6[_0x8e53('0x3d')]=qs[_0x8e53('0x3e')](_0x179fbf['query'][_0x8e53('0x3e')]);_0x44beb6[_0x8e53('0x3f')]=qs[_0x8e53('0x3b')](_['pick'](_0x179fbf[_0x8e53('0x27')],_0x49b1e8[_0x8e53('0x3b')]));_0x44beb6['where'][_0x8e53('0x40')]=_0x2213cf['id'];if(_0x179fbf[_0x8e53('0x27')][_0x8e53('0x41')]){_0x44beb6['where']=_[_0x8e53('0x2f')](_0x44beb6[_0x8e53('0x3f')],{'$or':_[_0x8e53('0x1e')](_0x44beb6[_0x8e53('0x2a')],function(_0x1691fd){var _0x2acf0c={};_0x2acf0c[_0x1691fd]={'$like':'%'+_0x179fbf['query'][_0x8e53('0x41')]+'%'};return _0x2acf0c;})});}if(_0x179fbf[_0x8e53('0x27')][_0x8e53('0x42')]){var _0x20f8ce=_0x179fbf[_0x8e53('0x27')]['$gte']['split'](',');var _0x54ed2d={};_0x54ed2d[_0x20f8ce[0x0]]={'$gte':moment(_0x20f8ce[0x1])[_0x8e53('0x43')](_0x8e53('0x44'))};_0x44beb6[_0x8e53('0x3f')]=_['merge'](_0x44beb6[_0x8e53('0x3f')],_0x54ed2d);}_0x44beb6=_[_0x8e53('0x2f')]({},_0x44beb6,_0x179fbf[_0x8e53('0x30')]);return db[_0x8e53('0x37')][_0x8e53('0x15')]({'where':_0x44beb6[_0x8e53('0x3f')]})['then'](function(_0x295c6b){_0x1de2d5['count']=_0x295c6b;if(_0x179fbf[_0x8e53('0x27')]['includeAll']){_0x44beb6[_0x8e53('0x2e')]=[{'all':!![]}];}return db[_0x8e53('0x37')][_0x8e53('0x23')](_0x44beb6);})[_0x8e53('0x19')](function(_0x122b17){if(_0x179fbf[_0x8e53('0x27')]['inlineCss']===_0x8e53('0x45')){for(var _0x2ca935=0x0;_0x2ca935<_0x122b17[_0x8e53('0x2c')];_0x2ca935++){_0x122b17[_0x2ca935][_0x8e53('0x33')]=juice(_0x122b17[_0x2ca935][_0x8e53('0x33')]);}}_0x1de2d5[_0x8e53('0x46')]=_0x122b17;return _0x1de2d5;});}})['then'](respondWithFilteredResult(_0x15ff9e,_0x44beb6))[_0x8e53('0x25')](handleError(_0x15ff9e,null));};exports[_0x8e53('0x47')]=function(_0x3d2fd4,_0x20b5e2){return db[_0x8e53('0x31')][_0x8e53('0x32')]({'where':{'id':_0x3d2fd4[_0x8e53('0x34')]['id']}})['then'](handleEntityNotFound(_0x20b5e2,null))[_0x8e53('0x19')](function(_0x557b5c){if(_0x557b5c){return _0x557b5c['setTags'](_0x3d2fd4[_0x8e53('0x33')]['ids'],_[_0x8e53('0x48')](_0x3d2fd4[_0x8e53('0x33')],[_0x8e53('0x38'),'id'])||{})[_0x8e53('0x49')](function(){return db[_0x8e53('0x4a')][_0x8e53('0x23')]({'attributes':['id',_0x8e53('0x1c'),_0x8e53('0x4b')],'where':{'id':_0x3d2fd4[_0x8e53('0x33')][_0x8e53('0x38')]}});})[_0x8e53('0x19')](function(_0x378c71){socket[_0x8e53('0x4c')](_0x8e53('0x4d'),{'id':Number(_0x3d2fd4[_0x8e53('0x34')]['id']),'tags':_0x378c71||[]});return{'id':Number(_0x3d2fd4[_0x8e53('0x34')]['id']),'tags':_0x378c71||[]};});}})[_0x8e53('0x19')](respondWithResult(_0x20b5e2,null))[_0x8e53('0x25')](handleError(_0x20b5e2,null));};exports[_0x8e53('0x4e')]=function(_0x3ea4a5,_0x10ca36){return db[_0x8e53('0x31')][_0x8e53('0x32')]({'where':{'id':_0x3ea4a5[_0x8e53('0x34')]['id']}})[_0x8e53('0x19')](handleEntityNotFound(_0x10ca36,null))['then'](function(_0x2e52bc){if(_0x2e52bc){return _0x2e52bc['removeTags'](_0x3ea4a5[_0x8e53('0x27')][_0x8e53('0x38')]);}})[_0x8e53('0x19')](respondWithStatusCode(_0x10ca36,null))[_0x8e53('0x25')](handleError(_0x10ca36,null));};exports[_0x8e53('0x4f')]=function(_0x4f51b7,_0x1647e6){var _0x3d63c4=moment()[_0x8e53('0x50')]()[_0x8e53('0x51')]();var _0x431fe9=path[_0x8e53('0x52')](config['root'],_0x8e53('0x53'),'files','tmp');var _0x2f1027=path[_0x8e53('0x52')](config[_0x8e53('0x54')],_0x8e53('0x53'),_0x8e53('0x55'),_0x8e53('0x56'));var _0x50cc33=path[_0x8e53('0x52')](_0x431fe9,_0x3d63c4);var _0x149bb9=util['format']('transcript-%d-%s.zip',_0x4f51b7['params']['id'],_0x3d63c4);var _0x50d4d7=path['join'](_0x431fe9,_0x149bb9);var _0x4c62ae=[];if(_0x4f51b7[_0x8e53('0x27')][_0x8e53('0x56')]){_0x4c62ae['push']({'model':db[_0x8e53('0x57')],'as':_0x8e53('0x58'),'raw':!![]});}var _0x3344f8=[{'model':db[_0x8e53('0x37')],'as':_0x8e53('0x59'),'attributes':['id',_0x8e53('0x33'),'from','to','cc','bcc','subject','createdAt'],'where':{'secret':![]},'order':qs[_0x8e53('0x3e')]('id'),'include':_0x4c62ae}];return db['MailInteraction']['find']({'where':{'id':_0x4f51b7[_0x8e53('0x34')]['id']},'include':_0x3344f8})['then'](handleEntityNotFound(_0x1647e6,null))[_0x8e53('0x19')](function(_0x25580e){if(_0x25580e&&_0x25580e[_0x8e53('0x59')]){var _0x275bab=_0x25580e[_0x8e53('0x5a')]({'plain':!![]});fs['mkdirSync'](_0x50cc33);return BPromise['each'](_0x275bab[_0x8e53('0x59')],function(_0x12f484,_0x30e520){var _0x4a4028={'from':_0x12f484['from'],'to':_0x12f484['to']||_0x8e53('0x5b'),'subject':_0x12f484[_0x8e53('0x5c')],'html':htmlEntities[_0x8e53('0x5d')](_0x12f484[_0x8e53('0x33')]),'headers':{'Date':moment(_0x12f484[_0x8e53('0x5e')])[_0x8e53('0x43')](_0x8e53('0x5f'))},'attachments':[]};if(_0x12f484['cc']){_0x4a4028[_0x8e53('0x60')]['Cc']=_0x12f484['cc'];}if(_0x12f484[_0x8e53('0x61')]){_0x4a4028[_0x8e53('0x60')][_0x8e53('0x62')]=_0x12f484[_0x8e53('0x61')];}return new BPromise(function(_0x38f589,_0x5ec6ce){if(_0x12f484[_0x8e53('0x58')]){for(var _0x42c7e9=0x0;_0x42c7e9<_0x12f484[_0x8e53('0x58')]['length'];_0x42c7e9++){var _0x30344a=_0x12f484[_0x8e53('0x58')][_0x42c7e9];var _0x4a75f7=path[_0x8e53('0x52')](_0x2f1027,_0x30344a[_0x8e53('0x63')]);if(fs[_0x8e53('0x64')](_0x4a75f7)){_0x4a4028['attachments'][_0x8e53('0x65')]({'name':_0x30344a['name'],'contentType':_0x30344a[_0x8e53('0x20')],'data':fs[_0x8e53('0x66')](_0x4a75f7)});}}}emlformat[_0x8e53('0x67')](_0x4a4028,function(_0x56b61b,_0x1b3ccb){if(_0x56b61b)return _0x5ec6ce(_0x56b61b);fs[_0x8e53('0x68')](path[_0x8e53('0x52')](_0x50cc33,util[_0x8e53('0x43')](_0x8e53('0x69'),_0x30e520)),_0x1b3ccb);return _0x38f589(_0x1b3ccb);});});})[_0x8e53('0x19')](function(){return new BPromise(function(_0x2aa9a0,_0x49bf58){zipdir(_0x50cc33,{'saveTo':_0x50d4d7},function(_0x40789b,_0x368ced){if(_0x40789b)return _0x49bf58(_0x40789b);return _0x2aa9a0(_0x368ced);});})[_0x8e53('0x19')](function(){return new BPromise(function(_0x7fe85a,_0x9dbb09){rimraf(_0x50cc33,function(_0x3e88cd){if(_0x3e88cd)_0x9dbb09(_0x3e88cd);return _0x7fe85a();});});})[_0x8e53('0x19')](function(){return _0x1647e6[_0x8e53('0x4f')](_0x50d4d7,_0x149bb9,function(_0x40fd63){if(!_0x40fd63)fs[_0x8e53('0x6a')](_0x50d4d7);});});});}else{return _0x1647e6[_0x8e53('0xf')](0xc8);}})[_0x8e53('0x25')](handleError(_0x1647e6,null));};
\ No newline at end of file
index 4fea15f..fadc8fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x546a=['remove','getUsers','setDataValue','Users','then','unreadMessages','emit','catch','hasOwnProperty','hook','MailInteraction','MailMessage','setMaxListeners','update'];(function(_0x1bb495,_0x510a8b){var _0x383b36=function(_0x4eff7e){while(--_0x4eff7e){_0x1bb495['push'](_0x1bb495['shift']());}};_0x383b36(++_0x510a8b);}(_0x546a,0x114));var _0xa546=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x546a[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require('events');var MailInteraction=require('../../mysqldb')['db'][_0xa546('0x0')];var MailMessage=require('../../mysqldb')['db'][_0xa546('0x1')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0xa546('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xa546('0x3'),'afterDestroy':_0xa546('0x4')};function emitEvent(_0x3409ee){return function(_0x236c25,_0x1afe15,_0x5ded14){_0x236c25[_0xa546('0x5')]({'attributes':['id'],'raw':!![]})['then'](function(_0x249148){_0x236c25[_0xa546('0x6')](_0xa546('0x7'),_0x249148['map'](function(_0x5ee8f5){return{'id':_0x5ee8f5['id']};}));return MailMessage['findAll']({'where':{'MailInteractionId':_0x236c25['id'],'direction':'in','read':![]},'raw':!![]});})[_0xa546('0x8')](function(_0x2feeaf){_0x236c25[_0xa546('0x6')](_0xa546('0x9'),_0x2feeaf['length']);MailInteractionEvents[_0xa546('0xa')](_0x3409ee+':'+_0x236c25['id'],_0x236c25);MailInteractionEvents['emit'](_0x3409ee,_0x236c25);_0x5ded14(null);})[_0xa546('0xb')](_0x5ded14(null));};}for(var e in events){if(events[_0xa546('0xc')](e)){var event=events[e];MailInteraction[_0xa546('0xd')](e,emitEvent(event));}}module['exports']=MailInteractionEvents;
\ No newline at end of file
+var _0x4b0e=['exports','events','../../mysqldb','MailInteraction','MailMessage','setMaxListeners','save','getUsers','Users','map','then','setDataValue','length','emit','catch','hasOwnProperty','hook'];(function(_0x34ebde,_0x3c3000){var _0x5669df=function(_0x291b24){while(--_0x291b24){_0x34ebde['push'](_0x34ebde['shift']());}};_0x5669df(++_0x3c3000);}(_0x4b0e,0x188));var _0xe4b0=function(_0x5e373e,_0x4ca21a){_0x5e373e=_0x5e373e-0x0;var _0x36bd2e=_0x4b0e[_0x5e373e];return _0x36bd2e;};'use strict';var EventEmitter=require(_0xe4b0('0x0'));var MailInteraction=require(_0xe4b0('0x1'))['db'][_0xe4b0('0x2')];var MailMessage=require(_0xe4b0('0x1'))['db'][_0xe4b0('0x3')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0xe4b0('0x4')](0x0);var events={'afterCreate':_0xe4b0('0x5'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x2fc74e){return function(_0x1ea662,_0x1829c3,_0x62b9c3){_0x1ea662[_0xe4b0('0x6')]({'attributes':['id'],'raw':!![]})['then'](function(_0x385a81){_0x1ea662['setDataValue'](_0xe4b0('0x7'),_0x385a81[_0xe4b0('0x8')](function(_0x3a2233){return{'id':_0x3a2233['id']};}));return MailMessage['findAll']({'where':{'MailInteractionId':_0x1ea662['id'],'direction':'in','read':![]},'raw':!![]});})[_0xe4b0('0x9')](function(_0xe4abd){_0x1ea662[_0xe4b0('0xa')]('unreadMessages',_0xe4abd[_0xe4b0('0xb')]);MailInteractionEvents[_0xe4b0('0xc')](_0x2fc74e+':'+_0x1ea662['id'],_0x1ea662);MailInteractionEvents[_0xe4b0('0xc')](_0x2fc74e,_0x1ea662);_0x62b9c3(null);})[_0xe4b0('0xd')](_0x62b9c3(null));};}for(var e in events){if(events[_0xe4b0('0xe')](e)){var event=events[e];MailInteraction[_0xe4b0('0xf')](e,emitEvent(event));}}module[_0xe4b0('0x10')]=MailInteractionEvents;
\ No newline at end of file
index 42dcdd6..82dc4df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3f3=['substatusAt','format','closedAt','YYYY-MM-DD\x20HH:mm:ss','closed','models','MailMessage','update','then','catch','utf8mb4_unicode_ci','lodash','../../config/logger','api','bluebird','request-promise','path','rimraf','exports','define','MailInteraction','mail_interactions','fti_mail_interactions','subject','FULLTEXT','substatus'];(function(_0x7c1bc1,_0x251f0f){var _0x550a7c=function(_0x4ad2fe){while(--_0x4ad2fe){_0x7c1bc1['push'](_0x7c1bc1['shift']());}};_0x550a7c(++_0x251f0f);}(_0xf3f3,0xf5));var _0x3f3f=function(_0x16d10f,_0x2ba2d5){_0x16d10f=_0x16d10f-0x0;var _0x50c823=_0xf3f3[_0x16d10f];return _0x50c823;};'use strict';var _=require(_0x3f3f('0x0'));var util=require('util');var logger=require(_0x3f3f('0x1'))(_0x3f3f('0x2'));var moment=require('moment');var BPromise=require(_0x3f3f('0x3'));var rp=require(_0x3f3f('0x4'));var fs=require('fs');var path=require(_0x3f3f('0x5'));var rimraf=require(_0x3f3f('0x6'));var config=require('../../config/environment');var attributes=require('./mailInteraction.attributes');module[_0x3f3f('0x7')]=function(_0x5d5394,_0x490db8){return _0x5d5394[_0x3f3f('0x8')](_0x3f3f('0x9'),attributes,{'tableName':_0x3f3f('0xa'),'paranoid':![],'indexes':[{'name':_0x3f3f('0xb'),'fields':[_0x3f3f('0xc'),'to'],'type':_0x3f3f('0xd')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x4fa55e,_0x4d1f4c,_0x2e12da){if(_0x4fa55e[_0x3f3f('0xe')]){_0x4fa55e[_0x3f3f('0xf')]=moment()[_0x3f3f('0x10')]('YYYY-MM-DD\x20HH:mm:ss');}if(_0x4fa55e['closed']){_0x4fa55e[_0x3f3f('0x11')]=moment()[_0x3f3f('0x10')](_0x3f3f('0x12'));}_0x2e12da(null,_0x4d1f4c);},'beforeUpdate':function(_0x349fac,_0x34ce52,_0x5e906e){if(_0x349fac['changed'](_0x3f3f('0xe'))){_0x349fac[_0x3f3f('0xf')]=_0x349fac['substatus']?moment()[_0x3f3f('0x10')](_0x3f3f('0x12')):null;}if(_0x349fac['changed'](_0x3f3f('0x13'))){_0x349fac[_0x3f3f('0x11')]=moment()[_0x3f3f('0x10')](_0x3f3f('0x12'));_0x349fac[_0x3f3f('0xe')]=null;_0x349fac[_0x3f3f('0xf')]=null;}_0x5e906e(null,_0x349fac);},'afterUpdate':function(_0x357116,_0x31a1be,_0x5c7346){var _0xebc14e=_0x5d5394[_0x3f3f('0x14')];var _0x1b3d84=_0x357116['get']({'plain':!![]});if(_0x1b3d84['closed']){return _0xebc14e[_0x3f3f('0x15')][_0x3f3f('0x16')]({'read':!![]},{'where':{'MailInteractionId':_0x1b3d84['id']}})[_0x3f3f('0x17')](function(){_0x5c7346();})[_0x3f3f('0x18')](function(_0x3c00de){_0x5c7346(_0x3c00de);});}else{_0x5c7346();}}},'charset':'utf8mb4','collate':_0x3f3f('0x19')});};
\ No newline at end of file
+var _0xb30c=['changed','YYYY-MM-DD\x20HH:mm:ss','closedAt','models','get','MailMessage','update','catch','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailInteraction.attributes','exports','mail_interactions','fti_mail_interactions','subject','FULLTEXT','substatus','substatusAt','closed','format'];(function(_0x4e4eea,_0x1cebc8){var _0x584206=function(_0x28c0ca){while(--_0x28c0ca){_0x4e4eea['push'](_0x4e4eea['shift']());}};_0x584206(++_0x1cebc8);}(_0xb30c,0x1da));var _0xcb30=function(_0x53f6b8,_0x161198){_0x53f6b8=_0x53f6b8-0x0;var _0x973445=_0xb30c[_0x53f6b8];return _0x973445;};'use strict';var _=require(_0xcb30('0x0'));var util=require(_0xcb30('0x1'));var logger=require('../../config/logger')(_0xcb30('0x2'));var moment=require(_0xcb30('0x3'));var BPromise=require(_0xcb30('0x4'));var rp=require(_0xcb30('0x5'));var fs=require('fs');var path=require(_0xcb30('0x6'));var rimraf=require(_0xcb30('0x7'));var config=require(_0xcb30('0x8'));var attributes=require(_0xcb30('0x9'));module[_0xcb30('0xa')]=function(_0x18106e,_0x4d6c4a){return _0x18106e['define']('MailInteraction',attributes,{'tableName':_0xcb30('0xb'),'paranoid':![],'indexes':[{'name':_0xcb30('0xc'),'fields':[_0xcb30('0xd'),'to'],'type':_0xcb30('0xe')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x2e899b,_0x5dbbb1,_0x5ac64c){if(_0x2e899b[_0xcb30('0xf')]){_0x2e899b[_0xcb30('0x10')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}if(_0x2e899b[_0xcb30('0x11')]){_0x2e899b['closedAt']=moment()[_0xcb30('0x12')]('YYYY-MM-DD\x20HH:mm:ss');}_0x5ac64c(null,_0x5dbbb1);},'beforeUpdate':function(_0x3940ec,_0x1b7eb0,_0x107f06){if(_0x3940ec[_0xcb30('0x13')](_0xcb30('0xf'))){_0x3940ec['substatusAt']=_0x3940ec[_0xcb30('0xf')]?moment()[_0xcb30('0x12')](_0xcb30('0x14')):null;}if(_0x3940ec['changed'](_0xcb30('0x11'))){_0x3940ec[_0xcb30('0x15')]=moment()[_0xcb30('0x12')](_0xcb30('0x14'));_0x3940ec[_0xcb30('0xf')]=null;_0x3940ec[_0xcb30('0x10')]=null;}_0x107f06(null,_0x3940ec);},'afterUpdate':function(_0x54a144,_0x2da7c8,_0x152cb0){var _0x397a51=_0x18106e[_0xcb30('0x16')];var _0x3805ea=_0x54a144[_0xcb30('0x17')]({'plain':!![]});if(_0x3805ea['closed']){return _0x397a51[_0xcb30('0x18')][_0xcb30('0x19')]({'read':!![]},{'where':{'MailInteractionId':_0x3805ea['id']}})['then'](function(){_0x152cb0();})[_0xcb30('0x1a')](function(_0x29c9c9){_0x152cb0(_0x29c9c9);});}else{_0x152cb0();}}},'charset':_0xcb30('0x1b'),'collate':_0xcb30('0x1c')});};
\ No newline at end of file
index 9f947e0..8b18575 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa36b=['then','info','request\x20sent','debug','stringify','error','code','message','MailInteraction,\x20%s,\x20%s','result','catch','UpdateMailInteraction','MailInteraction','options','raw','where','attributes','limit','AddTagsToMailInteraction','find','ids','omit','body','spread','AddTags','util','moment','bluebird','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register'];(function(_0x6487e3,_0x3ef5ac){var _0x4c1f77=function(_0x63f9e0){while(--_0x63f9e0){_0x6487e3['push'](_0x6487e3['shift']());}};_0x4c1f77(++_0x3ef5ac);}(_0xa36b,0x149));var _0xba36=function(_0x43f12a,_0x3b37bf){_0x43f12a=_0x43f12a-0x0;var _0x570d86=_0xa36b[_0x43f12a];return _0x570d86;};'use strict';var _=require('lodash');var util=require(_0xba36('0x0'));var moment=require(_0xba36('0x1'));var BPromise=require(_0xba36('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xba36('0x3'))(_0xba36('0x4'));var config=require('../../config/environment');var jayson=require(_0xba36('0x5'));var client=jayson[_0xba36('0x6')][_0xba36('0x7')]({'port':0x232a});config[_0xba36('0x8')]=_[_0xba36('0x9')](config['redis'],{'host':_0xba36('0xa'),'port':0x18eb});var socket=require(_0xba36('0xb'))(new Redis(config[_0xba36('0x8')]));require('./mailInteraction.socket')[_0xba36('0xc')](socket);function respondWithRpcPromise(_0x115648,_0x3f8c23,_0x3d5804){return new BPromise(function(_0x49f405,_0x28714f){return client['request'](_0x115648,_0x3d5804)[_0xba36('0xd')](function(_0x8115f5){logger[_0xba36('0xe')]('MailInteraction,\x20%s,\x20%s',_0x3f8c23,_0xba36('0xf'));logger[_0xba36('0x10')]('MailInteraction,\x20%s,\x20%s,\x20%s',_0x3f8c23,_0xba36('0xf'),JSON[_0xba36('0x11')](_0x8115f5));if(_0x8115f5['error']){if(_0x8115f5[_0xba36('0x12')][_0xba36('0x13')]===0x1f4){logger[_0xba36('0x12')]('MailInteraction,\x20%s,\x20%s',_0x3f8c23,_0x8115f5['error'][_0xba36('0x14')]);return _0x28714f(_0x8115f5[_0xba36('0x12')][_0xba36('0x14')]);}logger['error'](_0xba36('0x15'),_0x3f8c23,_0x8115f5[_0xba36('0x12')][_0xba36('0x14')]);return _0x49f405(_0x8115f5['error'][_0xba36('0x14')]);}else{logger[_0xba36('0xe')](_0xba36('0x15'),_0x3f8c23,_0xba36('0xf'));_0x49f405(_0x8115f5[_0xba36('0x16')][_0xba36('0x14')]);}})[_0xba36('0x17')](function(_0x4db33a){logger[_0xba36('0x12')]('MailInteraction,\x20%s,\x20%s',_0x3f8c23,_0x4db33a);_0x28714f(_0x4db33a);});});}exports[_0xba36('0x18')]=function(_0x3740b7){var _0x253ff0=this;return new Promise(function(_0x7ab342,_0x2f8931){return db[_0xba36('0x19')]['update'](_0x3740b7['body'],{'raw':_0x3740b7['options']?_0x3740b7[_0xba36('0x1a')][_0xba36('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3740b7[_0xba36('0x1a')]?_0x3740b7[_0xba36('0x1a')][_0xba36('0x1c')]||null:null,'attributes':_0x3740b7[_0xba36('0x1a')]?_0x3740b7[_0xba36('0x1a')][_0xba36('0x1d')]||null:null,'limit':_0x3740b7[_0xba36('0x1a')]?_0x3740b7[_0xba36('0x1a')][_0xba36('0x1e')]||null:null})[_0xba36('0xd')](function(_0x26803a){logger[_0xba36('0xe')](_0xba36('0x18'),_0x3740b7);logger[_0xba36('0x10')](_0xba36('0x18'),_0x3740b7,JSON['stringify'](_0x26803a));_0x7ab342(_0x26803a);})[_0xba36('0x17')](function(_0x29c816){logger[_0xba36('0x12')](_0xba36('0x18'),_0x29c816[_0xba36('0x14')],_0x3740b7);_0x2f8931(_0x253ff0[_0xba36('0x12')](0x1f4,_0x29c816[_0xba36('0x14')]));});});};exports[_0xba36('0x1f')]=function(_0x1142a6){return new Promise(function(_0x21f142,_0x3891fd){return db[_0xba36('0x19')][_0xba36('0x20')]({'where':_0x1142a6[_0xba36('0x1a')]?_0x1142a6['options']['where']||null:null})[_0xba36('0xd')](function(_0x3c4697){if(_0x3c4697){return _0x3c4697['addTags'](_0x1142a6['body'][_0xba36('0x21')],_[_0xba36('0x22')](_0x1142a6[_0xba36('0x23')],['ids','id'])||{});}})[_0xba36('0x24')](function(_0x1a3ad4){logger[_0xba36('0xe')]('AddTags',_0x1142a6);logger['debug'](_0xba36('0x25'),_0x1142a6,JSON[_0xba36('0x11')](_0x1a3ad4));_0x21f142(_0x1a3ad4);})[_0xba36('0x17')](function(_0x1379be){logger['error'](_0xba36('0x25'),_0x1379be[_0xba36('0x14')],_0x1142a6);_0x3891fd(_this[_0xba36('0x12')](0x1f4,_0x1379be[_0xba36('0x14')]));});});};
\ No newline at end of file
+var _0x9208=['request','info','request\x20sent','debug','error','code','MailInteraction,\x20%s,\x20%s','message','result','catch','UpdateMailInteraction','update','body','options','where','attributes','then','stringify','AddTagsToMailInteraction','MailInteraction','find','addTags','spread','AddTags','lodash','util','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./mailInteraction.socket','register'];(function(_0x52f798,_0x566906){var _0x4f05fd=function(_0x434e1f){while(--_0x434e1f){_0x52f798['push'](_0x52f798['shift']());}};_0x4f05fd(++_0x566906);}(_0x9208,0x108));var _0x8920=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x9208[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x8920('0x0'));var util=require(_0x8920('0x1'));var moment=require('moment');var BPromise=require(_0x8920('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8920('0x3'))['db'];var utils=require(_0x8920('0x4'));var logger=require(_0x8920('0x5'))(_0x8920('0x6'));var config=require('../../config/environment');var jayson=require(_0x8920('0x7'));var client=jayson[_0x8920('0x8')][_0x8920('0x9')]({'port':0x232a});config['redis']=_[_0x8920('0xa')](config[_0x8920('0xb')],{'host':_0x8920('0xc'),'port':0x18eb});var socket=require(_0x8920('0xd'))(new Redis(config[_0x8920('0xb')]));require(_0x8920('0xe'))[_0x8920('0xf')](socket);function respondWithRpcPromise(_0x35fb8f,_0x5055aa,_0x2de879){return new BPromise(function(_0xf815e,_0x2fb0cb){return client[_0x8920('0x10')](_0x35fb8f,_0x2de879)['then'](function(_0x355dc8){logger[_0x8920('0x11')]('MailInteraction,\x20%s,\x20%s',_0x5055aa,_0x8920('0x12'));logger[_0x8920('0x13')]('MailInteraction,\x20%s,\x20%s,\x20%s',_0x5055aa,_0x8920('0x12'),JSON['stringify'](_0x355dc8));if(_0x355dc8[_0x8920('0x14')]){if(_0x355dc8[_0x8920('0x14')][_0x8920('0x15')]===0x1f4){logger[_0x8920('0x14')](_0x8920('0x16'),_0x5055aa,_0x355dc8[_0x8920('0x14')][_0x8920('0x17')]);return _0x2fb0cb(_0x355dc8[_0x8920('0x14')][_0x8920('0x17')]);}logger[_0x8920('0x14')]('MailInteraction,\x20%s,\x20%s',_0x5055aa,_0x355dc8[_0x8920('0x14')][_0x8920('0x17')]);return _0xf815e(_0x355dc8[_0x8920('0x14')]['message']);}else{logger[_0x8920('0x11')](_0x8920('0x16'),_0x5055aa,'request\x20sent');_0xf815e(_0x355dc8[_0x8920('0x18')][_0x8920('0x17')]);}})[_0x8920('0x19')](function(_0x19d9b1){logger[_0x8920('0x14')](_0x8920('0x16'),_0x5055aa,_0x19d9b1);_0x2fb0cb(_0x19d9b1);});});}exports[_0x8920('0x1a')]=function(_0x3db0b0){var _0x34ed57=this;return new Promise(function(_0xf26e7c,_0x50cc12){return db['MailInteraction'][_0x8920('0x1b')](_0x3db0b0[_0x8920('0x1c')],{'raw':_0x3db0b0['options']?_0x3db0b0['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3db0b0[_0x8920('0x1d')]?_0x3db0b0[_0x8920('0x1d')][_0x8920('0x1e')]||null:null,'attributes':_0x3db0b0[_0x8920('0x1d')]?_0x3db0b0['options'][_0x8920('0x1f')]||null:null,'limit':_0x3db0b0[_0x8920('0x1d')]?_0x3db0b0[_0x8920('0x1d')]['limit']||null:null})[_0x8920('0x20')](function(_0x2ed29a){logger[_0x8920('0x11')](_0x8920('0x1a'),_0x3db0b0);logger[_0x8920('0x13')](_0x8920('0x1a'),_0x3db0b0,JSON[_0x8920('0x21')](_0x2ed29a));_0xf26e7c(_0x2ed29a);})[_0x8920('0x19')](function(_0x5b1ffe){logger[_0x8920('0x14')](_0x8920('0x1a'),_0x5b1ffe['message'],_0x3db0b0);_0x50cc12(_0x34ed57['error'](0x1f4,_0x5b1ffe[_0x8920('0x17')]));});});};exports[_0x8920('0x22')]=function(_0x255d79){return new Promise(function(_0x3c2611,_0x93c798){return db[_0x8920('0x23')][_0x8920('0x24')]({'where':_0x255d79[_0x8920('0x1d')]?_0x255d79[_0x8920('0x1d')][_0x8920('0x1e')]||null:null})[_0x8920('0x20')](function(_0x5910ad){if(_0x5910ad){return _0x5910ad[_0x8920('0x25')](_0x255d79[_0x8920('0x1c')]['ids'],_['omit'](_0x255d79['body'],['ids','id'])||{});}})[_0x8920('0x26')](function(_0x5116fd){logger[_0x8920('0x11')](_0x8920('0x27'),_0x255d79);logger[_0x8920('0x13')](_0x8920('0x27'),_0x255d79,JSON[_0x8920('0x21')](_0x5116fd));_0x3c2611(_0x5116fd);})[_0x8920('0x19')](function(_0xdcaca9){logger[_0x8920('0x14')]('AddTags',_0xdcaca9['message'],_0x255d79);_0x93c798(_this[_0x8920('0x14')](0x1f4,_0xdcaca9[_0x8920('0x17')]));});});};
\ No newline at end of file
index b1cdfd6..4c1b397 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e25=['mailInteraction:','./mailInteraction.events','save','update','emit','register'];(function(_0x593dc9,_0x4766cc){var _0x32c7ee=function(_0x4d2835){while(--_0x4d2835){_0x593dc9['push'](_0x593dc9['shift']());}};_0x32c7ee(++_0x4766cc);}(_0x9e25,0x151));var _0x59e2=function(_0x44739b,_0x48e78b){_0x44739b=_0x44739b-0x0;var _0x335f94=_0x9e25[_0x44739b];return _0x335f94;};'use strict';var MailInteractionEvents=require(_0x59e2('0x0'));var events=[_0x59e2('0x1'),'remove',_0x59e2('0x2')];function createListener(_0x3ff9fb,_0x20b5d5){return function(_0x102b52){_0x20b5d5[_0x59e2('0x3')](_0x3ff9fb,_0x102b52);};}function removeListener(_0x1c0b9c,_0x537e31){return function(){MailInteractionEvents['removeListener'](_0x1c0b9c,_0x537e31);};}exports[_0x59e2('0x4')]=function(_0x1f3af3){for(var _0xde97b4=0x0,_0x41faa5=events['length'];_0xde97b4<_0x41faa5;_0xde97b4++){var _0x3edb30=events[_0xde97b4];var _0x27f3c1=createListener(_0x59e2('0x5')+_0x3edb30,_0x1f3af3);MailInteractionEvents['on'](_0x3edb30,_0x27f3c1);}};
\ No newline at end of file
+var _0x600f=['length','mailInteraction:','./mailInteraction.events','save','remove','update','register'];(function(_0x299206,_0x4e7a52){var _0xd6c05d=function(_0x34025f){while(--_0x34025f){_0x299206['push'](_0x299206['shift']());}};_0xd6c05d(++_0x4e7a52);}(_0x600f,0xf7));var _0xf600=function(_0x915de9,_0xabf9e5){_0x915de9=_0x915de9-0x0;var _0x274129=_0x600f[_0x915de9];return _0x274129;};'use strict';var MailInteractionEvents=require(_0xf600('0x0'));var events=[_0xf600('0x1'),_0xf600('0x2'),_0xf600('0x3')];function createListener(_0x7327ef,_0x9c62e7){return function(_0xec4127){_0x9c62e7['emit'](_0x7327ef,_0xec4127);};}function removeListener(_0x520818,_0x5e4cff){return function(){MailInteractionEvents['removeListener'](_0x520818,_0x5e4cff);};}exports[_0xf600('0x4')]=function(_0x5d04ae){for(var _0x3d2fbf=0x0,_0x3b8e8f=events[_0xf600('0x5')];_0x3d2fbf<_0x3b8e8f;_0x3d2fbf++){var _0x3256d4=events[_0x3d2fbf];var _0x411a93=createListener(_0xf600('0x6')+_0x3256d4,_0x5d04ae);MailInteractionEvents['on'](_0x3256d4,_0x411a93);}};
\ No newline at end of file
index 5982654..207164d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb58=['exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailMessage.controller','get','/describe','describe','/:id','isAuthenticated','show','/:id/download','post','tracked','mailmessage:create','create','update','put','/:id/accept','/:id/reject','delete','destroy'];(function(_0x490634,_0xd29c2e){var _0x3fbdcb=function(_0xd03b2c){while(--_0xd03b2c){_0x490634['push'](_0x490634['shift']());}};_0x3fbdcb(++_0xd29c2e);}(_0xbb58,0x17b));var _0x8bb5=function(_0x30ae0e,_0x227a9f){_0x30ae0e=_0x30ae0e-0x0;var _0x3aa2eb=_0xbb58[_0x30ae0e];return _0x3aa2eb;};'use strict';var multer=require('multer');var util=require(_0x8bb5('0x0'));var path=require(_0x8bb5('0x1'));var timeout=require(_0x8bb5('0x2'));var express=require(_0x8bb5('0x3'));var router=express[_0x8bb5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x8bb5('0x5'));var interaction=require(_0x8bb5('0x6'));var config=require(_0x8bb5('0x7'));var controller=require(_0x8bb5('0x8'));router[_0x8bb5('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x8bb5('0x9')](_0x8bb5('0xa'),auth['isAuthenticated'](),controller[_0x8bb5('0xb')]);router[_0x8bb5('0x9')](_0x8bb5('0xc'),auth[_0x8bb5('0xd')](),controller[_0x8bb5('0xe')]);router['get'](_0x8bb5('0xf'),auth[_0x8bb5('0xd')](),controller['download']);router[_0x8bb5('0x10')]('/',auth[_0x8bb5('0xd')](),interaction[_0x8bb5('0x11')]('mail',_0x8bb5('0x12')),controller[_0x8bb5('0x13')]);router['put'](_0x8bb5('0xc'),auth[_0x8bb5('0xd')](),controller[_0x8bb5('0x14')]);router[_0x8bb5('0x15')](_0x8bb5('0x16'),auth[_0x8bb5('0xd')](),controller['accept']);router['put'](_0x8bb5('0x17'),auth[_0x8bb5('0xd')](),controller['reject']);router[_0x8bb5('0x18')](_0x8bb5('0xc'),auth[_0x8bb5('0xd')](),controller[_0x8bb5('0x19')]);module[_0x8bb5('0x1a')]=router;
\ No newline at end of file
+var _0x1b0b=['/:id','update','/:id/accept','accept','reject','destroy','exports','multer','util','path','express','Router','fs-extra','./mailMessage.controller','get','isAuthenticated','index','/describe','describe','/:id/download','download','post','tracked','mailmessage:create','create','put'];(function(_0x43f79b,_0x1297f8){var _0x24727c=function(_0x4f165c){while(--_0x4f165c){_0x43f79b['push'](_0x43f79b['shift']());}};_0x24727c(++_0x1297f8);}(_0x1b0b,0x173));var _0xb1b0=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x1b0b[_0xfae23b];return _0x200640;};'use strict';var multer=require(_0xb1b0('0x0'));var util=require(_0xb1b0('0x1'));var path=require(_0xb1b0('0x2'));var timeout=require('connect-timeout');var express=require(_0xb1b0('0x3'));var router=express[_0xb1b0('0x4')]();var fs_extra=require(_0xb1b0('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xb1b0('0x6'));router[_0xb1b0('0x7')]('/',auth[_0xb1b0('0x8')](),controller[_0xb1b0('0x9')]);router[_0xb1b0('0x7')](_0xb1b0('0xa'),auth[_0xb1b0('0x8')](),controller[_0xb1b0('0xb')]);router[_0xb1b0('0x7')]('/:id',auth[_0xb1b0('0x8')](),controller['show']);router['get'](_0xb1b0('0xc'),auth[_0xb1b0('0x8')](),controller[_0xb1b0('0xd')]);router[_0xb1b0('0xe')]('/',auth[_0xb1b0('0x8')](),interaction[_0xb1b0('0xf')]('mail',_0xb1b0('0x10')),controller[_0xb1b0('0x11')]);router[_0xb1b0('0x12')](_0xb1b0('0x13'),auth[_0xb1b0('0x8')](),controller[_0xb1b0('0x14')]);router[_0xb1b0('0x12')](_0xb1b0('0x15'),auth[_0xb1b0('0x8')](),controller[_0xb1b0('0x16')]);router[_0xb1b0('0x12')]('/:id/reject',auth[_0xb1b0('0x8')](),controller[_0xb1b0('0x17')]);router['delete'](_0xb1b0('0x13'),auth[_0xb1b0('0x8')](),controller[_0xb1b0('0x18')]);module[_0xb1b0('0x19')]=router;
\ No newline at end of file
index 72587f8..c85b6fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e22=['DATE','INTEGER','Email','sequelize','lodash','exports','TEXT','medium','BOOLEAN','ENUM','out','STRING','long'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x1e22,0x85));var _0x21e2=function(_0x1f1a97,_0xadfc15){_0x1f1a97=_0x1f1a97-0x0;var _0x29fc6a=_0x1e22[_0x1f1a97];return _0x29fc6a;};'use strict';var Sequelize=require(_0x21e2('0x0'));var _=require(_0x21e2('0x1'));module[_0x21e2('0x2')]={'body':{'type':Sequelize[_0x21e2('0x3')]('long'),'allowNull':![]},'plainBody':{'type':Sequelize[_0x21e2('0x3')](_0x21e2('0x4'))},'read':{'type':Sequelize[_0x21e2('0x5')],'defaultValue':![]},'direction':{'type':Sequelize[_0x21e2('0x6')]('in',_0x21e2('0x7')),'defaultValue':_0x21e2('0x7'),'allowNull':![]},'messageId':{'type':Sequelize['STRING'](0x1fe)},'from':{'type':Sequelize[_0x21e2('0x8')]},'to':{'type':Sequelize['TEXT'](_0x21e2('0x9'))},'cc':{'type':Sequelize[_0x21e2('0x3')]('long')},'bcc':{'type':Sequelize['TEXT'](_0x21e2('0x9'))},'subject':{'type':Sequelize[_0x21e2('0x3')]},'sentAt':{'type':Sequelize[_0x21e2('0xa')]},'attach':{'type':Sequelize[_0x21e2('0xb')],'defaultValue':0x0},'secret':{'type':Sequelize[_0x21e2('0x5')],'defaultValue':![]},'readAt':{'type':Sequelize['DATE']},'originTo':{'type':Sequelize[_0x21e2('0x3')](_0x21e2('0x9'))},'originCc':{'type':Sequelize['TEXT'](_0x21e2('0x9'))},'originChannel':{'type':Sequelize['ENUM'](_0x21e2('0xc'),'Chat'),'defaultValue':_0x21e2('0xc'),'allowNull':![]}};
\ No newline at end of file
+var _0x8f22=['ENUM','out','STRING','DATE','INTEGER','Email','Chat','sequelize','lodash','exports','TEXT','long','medium','BOOLEAN'];(function(_0x4321a9,_0xb05630){var _0x2daccc=function(_0x348898){while(--_0x348898){_0x4321a9['push'](_0x4321a9['shift']());}};_0x2daccc(++_0xb05630);}(_0x8f22,0x1e3));var _0x28f2=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x8f22[_0x3ab51d];return _0x29a04e;};'use strict';var Sequelize=require(_0x28f2('0x0'));var _=require(_0x28f2('0x1'));module[_0x28f2('0x2')]={'body':{'type':Sequelize[_0x28f2('0x3')](_0x28f2('0x4')),'allowNull':![]},'plainBody':{'type':Sequelize[_0x28f2('0x3')](_0x28f2('0x5'))},'read':{'type':Sequelize[_0x28f2('0x6')],'defaultValue':![]},'direction':{'type':Sequelize[_0x28f2('0x7')]('in',_0x28f2('0x8')),'defaultValue':_0x28f2('0x8'),'allowNull':![]},'messageId':{'type':Sequelize[_0x28f2('0x9')](0x1fe)},'from':{'type':Sequelize[_0x28f2('0x9')]},'to':{'type':Sequelize[_0x28f2('0x3')](_0x28f2('0x4'))},'cc':{'type':Sequelize[_0x28f2('0x3')]('long')},'bcc':{'type':Sequelize['TEXT']('long')},'subject':{'type':Sequelize[_0x28f2('0x3')]},'sentAt':{'type':Sequelize[_0x28f2('0xa')]},'attach':{'type':Sequelize[_0x28f2('0xb')],'defaultValue':0x0},'secret':{'type':Sequelize[_0x28f2('0x6')],'defaultValue':![]},'readAt':{'type':Sequelize[_0x28f2('0xa')]},'originTo':{'type':Sequelize[_0x28f2('0x3')]('long')},'originCc':{'type':Sequelize[_0x28f2('0x3')]('long')},'originChannel':{'type':Sequelize[_0x28f2('0x7')](_0x28f2('0xc'),_0x28f2('0xd')),'defaultValue':'Email','allowNull':![]}};
\ No newline at end of file
index b6f0abf..f1fc1d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x923b=['updatedAt','DESC','MailServerOut','Smtp','CloudProvider','getSmtpOptions','attachments','join','root','server/files/attachments','defaults','List\x20not\x20found','SendMail','sendMail','format','YYYY-MM-DD\x20HH:mm:ss','stringify','mail','read','readAt','UserId','user','agent','get','MailInteraction','MailInteractionId','isNil','read1stAt','interaction','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','SELECT','contact','User','fullname','manual','interface','channel','motionChannel','event','accept','fromString','EventManager','acceptmessage','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','RejectMessage','rejectMessage','sequelize','Sequelize','QueryTypes','email','internal','SIP/%s','reject','rejectmessage','download','unix','toString','server','files','tmp','message-%s.eml','from','bcc','subject','createdAt','Attachment','Attachments','decode','headers','basename','existsSync','push','readFileSync','writeFileSync','unlinkSync','eml-format','moment','bluebird','util','lodash','ioredis','html-to-text','../../config/logger','api','mail-interactions','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','html-entities','register','client','http','request','then','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','status','json','undefined','limit','count','offset','set','Content-Range','update','end','sendStatus','stack','name','send','index','map','MailMessage','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','options','include','findAll','show','params','length','find','body','destroy','describe','create','direction','out','MailAccount','MailAccountId','List','CmContact','Contacts'];(function(_0x4aa210,_0x15c988){var _0x5dfa23=function(_0x5d6b21){while(--_0x5d6b21){_0x4aa210['push'](_0x4aa210['shift']());}};_0x5dfa23(++_0x15c988);}(_0x923b,0xf3));var _0xb923=function(_0x2c5340,_0x5c86e5){_0x2c5340=_0x2c5340-0x0;var _0x3c505e=_0x923b[_0x2c5340];return _0x3c505e;};'use strict';var emlformat=require(_0xb923('0x0'));var moment=require(_0xb923('0x1'));var BPromise=require(_0xb923('0x2'));var util=require(_0xb923('0x3'));var path=require('path');var fs=require('fs');var _=require(_0xb923('0x4'));var Redis=require(_0xb923('0x5'));var htmlToText=require(_0xb923('0x6'));var qs=require('../../components/parsers/qs');var logger=require(_0xb923('0x7'))(_0xb923('0x8'));var interaction_log=require(_0xb923('0x7'))(_0xb923('0x9'));var config=require(_0xb923('0xa'));var db=require(_0xb923('0xb'))['db'];config[_0xb923('0xc')]=_['defaults'](config[_0xb923('0xc')],{'host':_0xb923('0xd'),'port':0x18eb});var socket=require(_0xb923('0xe'))(new Redis(config[_0xb923('0xc')]));var htmlEntities=require(_0xb923('0xf'));require('./mailMessage.socket')[_0xb923('0x10')](socket);var jayson=require('jayson/promise');var client=jayson[_0xb923('0x11')][_0xb923('0x12')]({'port':0x232c});var client9003=jayson[_0xb923('0x11')][_0xb923('0x12')]({'port':0x232b});var client9002=jayson[_0xb923('0x11')][_0xb923('0x12')]({'port':0x232a});function respondWithRpcPromise(_0x3de82d,_0x4fae22,_0x914eeb,_0x8778f5){return new BPromise(function(_0x371490,_0x5462c7){var _0x498c0c=_0x8778f5||client;return _0x498c0c[_0xb923('0x13')](_0x3de82d,_0x914eeb)[_0xb923('0x14')](function(_0x2122d5){logger['info'](_0xb923('0x15'),_0x4fae22,_0xb923('0x16'));logger[_0xb923('0x17')](_0xb923('0x18'),_0x4fae22,_0xb923('0x16'),JSON['stringify'](_0x2122d5));if(_0x2122d5['error']){if(_0x2122d5[_0xb923('0x19')][_0xb923('0x1a')]===0x1f4){logger[_0xb923('0x19')](_0xb923('0x15'),_0x4fae22,_0x2122d5[_0xb923('0x19')]['message']);return _0x5462c7(_0x2122d5[_0xb923('0x19')][_0xb923('0x1b')]);}logger[_0xb923('0x19')]('MailMessage,\x20%s,\x20%s',_0x4fae22,_0x2122d5[_0xb923('0x19')]['message']);return _0x371490(_0x2122d5[_0xb923('0x19')]['message']);}else{logger[_0xb923('0x1c')]('MailMessage,\x20%s,\x20%s',_0x4fae22,'request\x20sent');_0x371490(_0x2122d5[_0xb923('0x1d')][_0xb923('0x1b')]);}})[_0xb923('0x1e')](function(_0x4673a7){logger[_0xb923('0x19')](_0xb923('0x15'),_0x4fae22,_0x4673a7);_0x5462c7(_0x4673a7);});});}function respondWithResult(_0x180ef2,_0x245826){_0x245826=_0x245826||0xc8;return function(_0x362e3d){if(_0x362e3d){return _0x180ef2[_0xb923('0x1f')](_0x245826)[_0xb923('0x20')](_0x362e3d);}};}function respondWithFilteredResult(_0x383955,_0x2fde1f){return function(_0x108046){if(_0x108046){var _0x2b4167=typeof _0x2fde1f['offset']===_0xb923('0x21')&&typeof _0x2fde1f[_0xb923('0x22')]===_0xb923('0x21');var _0x2a6e85=_0x108046[_0xb923('0x23')];var _0x541d0c=_0x2b4167?0x0:_0x2fde1f[_0xb923('0x24')];var _0x4a3246=_0x2b4167?_0x108046[_0xb923('0x23')]:_0x2fde1f[_0xb923('0x24')]+_0x2fde1f[_0xb923('0x22')];var _0x303464;if(_0x4a3246>=_0x2a6e85){_0x4a3246=_0x2a6e85;_0x303464=0xc8;}else{_0x303464=0xce;}_0x383955[_0xb923('0x1f')](_0x303464);return _0x383955[_0xb923('0x25')](_0xb923('0x26'),_0x541d0c+'-'+_0x4a3246+'/'+_0x2a6e85)[_0xb923('0x20')](_0x108046);}return null;};}function saveUpdates(_0xb3313a){return function(_0x3893f7){if(_0x3893f7){return _0x3893f7[_0xb923('0x27')](_0xb3313a)['then'](function(_0x125fbe){return _0x125fbe;});}return null;};}function removeEntity(_0x5a961e){return function(_0xb10eed){if(_0xb10eed){return _0xb10eed['destroy']()['then'](function(){_0x5a961e[_0xb923('0x1f')](0xcc)[_0xb923('0x28')]();});}};}function handleEntityNotFound(_0x3fb2db){return function(_0xe21c26){if(!_0xe21c26){_0x3fb2db[_0xb923('0x29')](0x194);}return _0xe21c26;};}function handleError(_0x246c3f,_0x50b117){_0x50b117=_0x50b117||0x1f4;return function(_0x32b6ea){logger['error'](_0x32b6ea[_0xb923('0x2a')]);if(_0x32b6ea[_0xb923('0x2b')]){delete _0x32b6ea[_0xb923('0x2b')];}_0x246c3f[_0xb923('0x1f')](_0x50b117)[_0xb923('0x2c')](_0x32b6ea);};}exports[_0xb923('0x2d')]=function(_0x55952a,_0x550626){var _0x2ae66b={},_0x1b0340={},_0x5dad91={'count':0x0,'rows':[]};var _0x4069ba=_[_0xb923('0x2e')](db[_0xb923('0x2f')][_0xb923('0x30')],function(_0xf2c5f1){return{'name':_0xf2c5f1[_0xb923('0x31')],'type':_0xf2c5f1[_0xb923('0x32')][_0xb923('0x33')]};});_0x1b0340[_0xb923('0x34')]=_[_0xb923('0x2e')](_0x4069ba,_0xb923('0x2b'));_0x1b0340[_0xb923('0x35')]=_[_0xb923('0x36')](_0x55952a[_0xb923('0x35')]);_0x1b0340['filters']=_[_0xb923('0x37')](_0x1b0340[_0xb923('0x34')],_0x1b0340[_0xb923('0x35')]);_0x2ae66b['attributes']=_[_0xb923('0x37')](_0x1b0340[_0xb923('0x34')],qs[_0xb923('0x38')](_0x55952a[_0xb923('0x35')][_0xb923('0x38')]));_0x2ae66b[_0xb923('0x39')]=_0x2ae66b['attributes']['length']?_0x2ae66b[_0xb923('0x39')]:_0x1b0340['model'];if(!_0x55952a['query'][_0xb923('0x3a')](_0xb923('0x3b'))){_0x2ae66b['limit']=qs[_0xb923('0x22')](_0x55952a[_0xb923('0x35')][_0xb923('0x22')]);_0x2ae66b[_0xb923('0x24')]=qs[_0xb923('0x24')](_0x55952a[_0xb923('0x35')]['offset']);}_0x2ae66b['order']=qs[_0xb923('0x3c')](_0x55952a[_0xb923('0x35')][_0xb923('0x3c')]);_0x2ae66b[_0xb923('0x3d')]=qs[_0xb923('0x3e')](_[_0xb923('0x3f')](_0x55952a[_0xb923('0x35')],_0x1b0340[_0xb923('0x3e')]),_0x4069ba);if(_0x55952a['query'][_0xb923('0x40')]){_0x2ae66b[_0xb923('0x3d')]=_[_0xb923('0x41')](_0x2ae66b['where'],{'$or':_[_0xb923('0x2e')](_0x4069ba,function(_0x30705a){if(_0x30705a['type']!==_0xb923('0x42')){var _0xdf7064={};_0xdf7064[_0x30705a['name']]={'$like':'%'+_0x55952a['query'][_0xb923('0x40')]+'%'};return _0xdf7064;}})});}_0x2ae66b=_[_0xb923('0x41')]({},_0x2ae66b,_0x55952a[_0xb923('0x43')]);var _0x42b911={'where':_0x2ae66b[_0xb923('0x3d')]};return db[_0xb923('0x2f')][_0xb923('0x23')](_0x42b911)[_0xb923('0x14')](function(_0x3c570b){_0x5dad91[_0xb923('0x23')]=_0x3c570b;if(_0x55952a[_0xb923('0x35')]['includeAll']){_0x2ae66b[_0xb923('0x44')]=[{'all':!![]}];}return db[_0xb923('0x2f')][_0xb923('0x45')](_0x2ae66b);})[_0xb923('0x14')](function(_0x1ab093){_0x5dad91['rows']=_0x1ab093;return _0x5dad91;})[_0xb923('0x14')](respondWithFilteredResult(_0x550626,_0x2ae66b))[_0xb923('0x1e')](handleError(_0x550626,null));};exports[_0xb923('0x46')]=function(_0x5d6c03,_0x27082b){var _0x9f17b7={'raw':!![],'where':{'id':_0x5d6c03[_0xb923('0x47')]['id']}},_0x55a247={};_0x55a247['model']=_[_0xb923('0x36')](db[_0xb923('0x2f')][_0xb923('0x30')]);_0x55a247['query']=_['keys'](_0x5d6c03[_0xb923('0x35')]);_0x55a247[_0xb923('0x3e')]=_['intersection'](_0x55a247[_0xb923('0x34')],_0x55a247['query']);_0x9f17b7['attributes']=_[_0xb923('0x37')](_0x55a247[_0xb923('0x34')],qs[_0xb923('0x38')](_0x5d6c03[_0xb923('0x35')][_0xb923('0x38')]));_0x9f17b7['attributes']=_0x9f17b7[_0xb923('0x39')][_0xb923('0x48')]?_0x9f17b7['attributes']:_0x55a247[_0xb923('0x34')];if(_0x5d6c03[_0xb923('0x35')]['includeAll']){_0x9f17b7[_0xb923('0x44')]=[{'all':!![]}];}_0x9f17b7=_[_0xb923('0x41')]({},_0x9f17b7,_0x5d6c03['options']);return db[_0xb923('0x2f')][_0xb923('0x49')](_0x9f17b7)[_0xb923('0x14')](handleEntityNotFound(_0x27082b,null))[_0xb923('0x14')](respondWithResult(_0x27082b,null))[_0xb923('0x1e')](handleError(_0x27082b,null));};exports['update']=function(_0x33758,_0x7ce4ed){if(_0x33758[_0xb923('0x4a')]['id']){delete _0x33758[_0xb923('0x4a')]['id'];}return db[_0xb923('0x2f')][_0xb923('0x49')]({'where':{'id':_0x33758[_0xb923('0x47')]['id']}})[_0xb923('0x14')](handleEntityNotFound(_0x7ce4ed,null))[_0xb923('0x14')](saveUpdates(_0x33758[_0xb923('0x4a')],null))[_0xb923('0x14')](respondWithResult(_0x7ce4ed,null))[_0xb923('0x1e')](handleError(_0x7ce4ed,null));};exports[_0xb923('0x4b')]=function(_0x2221d6,_0x2d8045){return db[_0xb923('0x2f')][_0xb923('0x49')]({'where':{'id':_0x2221d6['params']['id']}})[_0xb923('0x14')](handleEntityNotFound(_0x2d8045,null))['then'](removeEntity(_0x2d8045,null))['catch'](handleError(_0x2d8045,null));};exports[_0xb923('0x4c')]=function(_0x1dae66,_0x372330){return db[_0xb923('0x2f')][_0xb923('0x4c')]()[_0xb923('0x14')](respondWithResult(_0x372330,null))[_0xb923('0x1e')](handleError(_0x372330,null));};exports[_0xb923('0x4d')]=function(_0x176909,_0x35ea51){return db['MailMessage']['create'](_0x176909[_0xb923('0x4a')])[_0xb923('0x14')](function(_0x2773c7){if(_0x2773c7){if(_0x2773c7[_0xb923('0x4e')]===_0xb923('0x4f')&&!_0x2773c7['secret']){var _0x44c1d9,_0x2f73ae,_0x5007cb;if(_0x176909['body']['to']){_0x2f73ae=_0x176909[_0xb923('0x4a')]['to']['split'](',')[0x0];}return db[_0xb923('0x50')]['findOne']({'where':{'id':_0x2773c7[_0xb923('0x51')]},'include':[{'model':db['CmList'],'as':_0xb923('0x52'),'include':[{'model':db[_0xb923('0x53')],'as':_0xb923('0x54'),'where':{'email':_0x2f73ae},'limit':0x1,'order':[[_0xb923('0x55'),_0xb923('0x56')]]}]},{'model':db[_0xb923('0x57')],'as':_0xb923('0x58'),'raw':!![],'include':[{'model':db[_0xb923('0x59')],'as':_0xb923('0x59'),'raw':!![]}]}]})[_0xb923('0x14')](function(_0x49d6e3){_0x44c1d9=_0x49d6e3;if(!_0x44c1d9||!_0x44c1d9[_0xb923('0x58')])return;var _0x5202a2=_0x44c1d9[_0xb923('0x5a')]();if(_0x176909[_0xb923('0x4a')][_0xb923('0x5b')]&&_0x176909[_0xb923('0x4a')][_0xb923('0x5b')][_0xb923('0x48')]){for(var _0x395d78=0x0;_0x395d78<_0x176909['body'][_0xb923('0x5b')]['length'];_0x395d78+=0x1){_0x176909[_0xb923('0x4a')][_0xb923('0x5b')][_0x395d78]={'filename':_0x176909[_0xb923('0x4a')][_0xb923('0x5b')][_0x395d78]['name'],'path':path[_0xb923('0x5c')](config[_0xb923('0x5d')],_0xb923('0x5e'),_0x176909[_0xb923('0x4a')]['attachments'][_0x395d78]['basename'])};}}_0x5007cb={'account':_0x5202a2,'message':_0x176909[_0xb923('0x4a')]};return;})['then'](function(){if(_0x44c1d9[_0xb923('0x52')]){if(_0x44c1d9[_0xb923('0x52')]['Contacts']['length']){return _0x44c1d9[_0xb923('0x52')][_0xb923('0x54')][0x0];}else{return db['CmContact'][_0xb923('0x4d')](_[_0xb923('0x5f')](_0x176909['body'],{'firstName':_0x176909[_0xb923('0x4a')]['to'],'email':_0x176909['body']['to'],'phone':_0x176909[_0xb923('0x4a')]['to'],'ListId':_0x44c1d9['ListId']}));}}else{throw new Error(_0xb923('0x60'));}})[_0xb923('0x14')](function(){if(_0x5007cb){return respondWithRpcPromise(_0xb923('0x61'),_0xb923('0x62'),_0x5007cb,client9003)[_0xb923('0x14')](function(_0x3dd853){return _0x2773c7['update']({'read':!![],'messageId':_0x3dd853['messageId'],'sentAt':moment()[_0xb923('0x63')](_0xb923('0x64'))});})[_0xb923('0x1e')](function(_0x864f73){logger[_0xb923('0x19')]('%s',JSON[_0xb923('0x65')](_0x864f73));return _0x2773c7;});}return _0x2773c7;});}return _0x2773c7;}})['then'](respondWithResult(_0x35ea51,0xc9))[_0xb923('0x1e')](handleError(_0x35ea51,null));};exports['accept']=function(_0x1850c7,_0x5ec578){var _0x5951ae={'agent':{},'channel':_0xb923('0x66')};if(_0x1850c7['body']['id']){delete _0x1850c7[_0xb923('0x4a')]['id'];}_0x1850c7[_0xb923('0x4a')][_0xb923('0x67')]=!![];_0x1850c7['body'][_0xb923('0x68')]=moment()['format'](_0xb923('0x64'));_0x1850c7[_0xb923('0x4a')][_0xb923('0x69')]=_0x1850c7[_0xb923('0x4a')][_0xb923('0x69')]||_0x1850c7[_0xb923('0x6a')]['id'];_0x5951ae[_0xb923('0x6b')]['id']=_0x1850c7['body'][_0xb923('0x69')];return db[_0xb923('0x2f')][_0xb923('0x49')]({'where':{'id':_0x1850c7['params']['id'],'UserId':null}})[_0xb923('0x14')](handleEntityNotFound(_0x5ec578,null))[_0xb923('0x14')](saveUpdates(_0x1850c7['body'],null))['then'](function(_0x4c235c){if(_0x4c235c){_0x5951ae[_0xb923('0x1b')]=_0x4c235c[_0xb923('0x6c')]({'plain':!![]});return db[_0xb923('0x6d')][_0xb923('0x49')]({'where':{'id':_0x4c235c[_0xb923('0x6e')]}});}return null;})['then'](handleEntityNotFound(_0x5ec578,null))[_0xb923('0x14')](function(_0x7972d7){if(_0x7972d7){return _0x7972d7['update']({'UserId':_0x1850c7[_0xb923('0x4a')][_0xb923('0x69')],'read1stAt':_[_0xb923('0x6f')](_0x7972d7[_0xb923('0x70')])?moment()['format'](_0xb923('0x64')):undefined});}return null;})[_0xb923('0x14')](function(_0x20c29a){if(_0x20c29a){_0x5951ae[_0xb923('0x71')]=_0x20c29a[_0xb923('0x6c')]({'plain':!![]});interaction_log[_0xb923('0x1c')]('[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x1850c7[_0xb923('0x6a')]['id'],_0x1850c7['user'][_0xb923('0x2b')],_0x1850c7['user']['role'],_0x5951ae['interaction']['id'],_0x1850c7[_0xb923('0x4a')]?JSON[_0xb923('0x65')](_0x1850c7[_0xb923('0x4a')]):'null');return respondWithRpcPromise('AcceptMessage',_0xb923('0x72'),_0x5951ae);}return null;})[_0xb923('0x14')](function(_0x29205d){var _0x2242e5=_0xb923('0x73')+_0x29205d[_0xb923('0x1b')][_0xb923('0x74')];return db['sequelize']['query'](_0x2242e5,{'type':db['Sequelize']['QueryTypes'][_0xb923('0x75')],'raw':!![]})['then'](function(_0x2d6490){return _0x2d6490;});})[_0xb923('0x14')](function(_0xbdecd9){if(_0xbdecd9){_0x5951ae[_0xb923('0x1b')][_0xb923('0x76')]=_0xbdecd9[0x0];if(!_0x1850c7[_0xb923('0x4a')][_0xb923('0x69')])return;return db[_0xb923('0x77')][_0xb923('0x49')]({'where':{'id':_0x1850c7[_0xb923('0x4a')]['UserId'],'role':_0xb923('0x6b')},'attributes':['id',_0xb923('0x2b'),_0xb923('0x78'),'email','internal'],'raw':!![]});}return null;})[_0xb923('0x14')](function(_0x3cf467){if(!_0x3cf467)return null;_0x5951ae[_0xb923('0x1b')][_0xb923('0x6b')]=_0x3cf467;return _0x5951ae;})[_0xb923('0x14')](function(_0x44e38f){if(_0x44e38f){if(_0x1850c7[_0xb923('0x4a')][_0xb923('0x79')]){_0x5951ae[_0xb923('0x1b')][_0xb923('0x7a')]=util[_0xb923('0x63')]('SIP/%s',_0x1850c7[_0xb923('0x6a')][_0xb923('0x2b')]);_0x5951ae[_0xb923('0x1b')][_0xb923('0x7b')]=_0x5951ae['channel'];_0x5951ae['message'][_0xb923('0x7c')]=_0x5951ae[_0xb923('0x7b')];_0x5951ae[_0xb923('0x1b')][_0xb923('0x7d')]=_0xb923('0x7e');_0x5951ae[_0xb923('0x1b')][_0xb923('0x4a')]=htmlToText[_0xb923('0x7f')](_0x5951ae[_0xb923('0x1b')][_0xb923('0x4a')]);return respondWithRpcPromise(_0xb923('0x80'),'EventManager',{'event':_0xb923('0x81'),'message':_0x5951ae[_0xb923('0x1b')]},client9002)[_0xb923('0x14')](function(){return _0x5951ae;});}return _0x5951ae;}return null;})[_0xb923('0x14')](respondWithResult(_0x5ec578,null))[_0xb923('0x1e')](handleError(_0x5ec578,null));};exports['reject']=function(_0x3f5a82,_0x2bdc57){var _0x4b39b6={'agent':{},'channel':_0xb923('0x66')};if(_0x3f5a82['body']['id']){delete _0x3f5a82['body']['id'];}_0x3f5a82[_0xb923('0x4a')][_0xb923('0x69')]=_0x3f5a82[_0xb923('0x4a')][_0xb923('0x69')]||_0x3f5a82[_0xb923('0x6a')]['id'];_0x4b39b6[_0xb923('0x6b')]['id']=_0x3f5a82[_0xb923('0x4a')][_0xb923('0x69')];return db[_0xb923('0x2f')][_0xb923('0x49')]({'where':{'id':_0x3f5a82[_0xb923('0x47')]['id'],'UserId':null}})[_0xb923('0x14')](handleEntityNotFound(_0x2bdc57,null))['then'](function(_0x2f7a6f){if(_0x2f7a6f){_0x4b39b6['message']=_0x2f7a6f[_0xb923('0x6c')]({'plain':!![]});return db[_0xb923('0x6d')][_0xb923('0x49')]({'where':{'id':_0x2f7a6f[_0xb923('0x6e')]}});}return null;})[_0xb923('0x14')](handleEntityNotFound(_0x2bdc57,null))['then'](function(_0x1a89c4){if(_0x1a89c4){_0x4b39b6[_0xb923('0x71')]=_0x1a89c4['get']({'plain':!![]});interaction_log[_0xb923('0x1c')](_0xb923('0x82'),_0x3f5a82['user']['id'],_0x3f5a82[_0xb923('0x6a')][_0xb923('0x2b')],_0x3f5a82['user'][_0xb923('0x83')],_0x4b39b6['interaction']['id'],_0x3f5a82[_0xb923('0x4a')]?JSON[_0xb923('0x65')](_0x3f5a82[_0xb923('0x4a')]):_0xb923('0x84'));return respondWithRpcPromise(_0xb923('0x85'),_0xb923('0x86'),_0x4b39b6);}return null;})[_0xb923('0x14')](function(_0x4ee286){var _0x205158=_0xb923('0x73')+_0x4ee286['message'][_0xb923('0x74')];return db[_0xb923('0x87')][_0xb923('0x35')](_0x205158,{'type':db[_0xb923('0x88')][_0xb923('0x89')]['SELECT'],'raw':!![]})[_0xb923('0x14')](function(_0x49a66e){return _0x49a66e;});})[_0xb923('0x14')](function(_0x55bbe9){if(_0x55bbe9){_0x4b39b6['message'][_0xb923('0x76')]=_0x55bbe9[0x0];if(!_0x3f5a82[_0xb923('0x4a')][_0xb923('0x69')])return;return db[_0xb923('0x77')]['find']({'where':{'id':_0x3f5a82[_0xb923('0x4a')]['UserId'],'role':_0xb923('0x6b')},'attributes':['id',_0xb923('0x2b'),_0xb923('0x78'),_0xb923('0x8a'),_0xb923('0x8b')],'raw':!![]});}return null;})[_0xb923('0x14')](function(_0x38fd3b){if(!_0x38fd3b)return null;_0x4b39b6[_0xb923('0x1b')][_0xb923('0x6b')]=_0x38fd3b;return _0x4b39b6;})[_0xb923('0x14')](function(_0x59a097){if(_0x59a097){_0x59a097[_0xb923('0x1b')][_0xb923('0x7a')]=util[_0xb923('0x63')](_0xb923('0x8c'),_0x3f5a82[_0xb923('0x6a')][_0xb923('0x2b')]);_0x59a097[_0xb923('0x1b')][_0xb923('0x7b')]=_0x4b39b6[_0xb923('0x7b')];_0x59a097[_0xb923('0x1b')][_0xb923('0x7c')]=_0x4b39b6[_0xb923('0x7b')];_0x59a097['message']['event']=_0xb923('0x8d');_0x59a097[_0xb923('0x1b')]['body']=htmlToText[_0xb923('0x7f')](_0x4b39b6[_0xb923('0x1b')][_0xb923('0x4a')]);respondWithRpcPromise(_0xb923('0x80'),_0xb923('0x80'),{'event':_0xb923('0x8e'),'message':_0x59a097[_0xb923('0x1b')]},client9002);return _0x4b39b6;}return null;})[_0xb923('0x14')](respondWithResult(_0x2bdc57,null))[_0xb923('0x1e')](handleError(_0x2bdc57,null));};exports[_0xb923('0x8f')]=function(_0x2d3ee6,_0x145575){var _0x43ec78=moment()[_0xb923('0x90')]()[_0xb923('0x91')]();var _0x34ceee=path[_0xb923('0x5c')](config['root'],_0xb923('0x92'),_0xb923('0x93'),_0xb923('0x94'));var _0x6c5922=path[_0xb923('0x5c')](config[_0xb923('0x5d')],_0xb923('0x92'),_0xb923('0x93'),_0xb923('0x5b'));var _0x2b78c8=util['format'](_0xb923('0x95'),_0x43ec78);return db[_0xb923('0x2f')][_0xb923('0x49')]({'where':{'id':_0x2d3ee6[_0xb923('0x47')]['id']},'attributes':['id',_0xb923('0x4a'),_0xb923('0x96'),'to','cc',_0xb923('0x97'),_0xb923('0x98'),_0xb923('0x99')],'include':_0x2d3ee6[_0xb923('0x35')][_0xb923('0x5b')]?[{'model':db[_0xb923('0x9a')],'as':_0xb923('0x9b')}]:undefined})[_0xb923('0x14')](handleEntityNotFound(_0x145575,null))[_0xb923('0x14')](function(_0x9109f5){if(_0x9109f5){var _0x548306=_0x9109f5;var _0x5d1edb={'from':_0x548306['from'],'to':_0x548306['to'],'subject':_0x548306['subject'],'html':htmlEntities[_0xb923('0x9c')](_0x548306['body']),'headers':{'Date':moment(_0x548306['createdAt'])['format']('ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ')},'attachments':[]};if(_0x9109f5['cc']){_0x5d1edb[_0xb923('0x9d')]['Cc']=_0x9109f5['cc'];}if(_0x9109f5[_0xb923('0x97')]){_0x5d1edb['headers']['Bcc']=_0x9109f5[_0xb923('0x97')];}return new BPromise(function(_0x18d859,_0x25f306){if(_0x9109f5[_0xb923('0x9b')]){for(var _0x456148=0x0;_0x456148<_0x9109f5['Attachments'][_0xb923('0x48')];_0x456148++){var _0x3f98b1=_0x9109f5[_0xb923('0x9b')][_0x456148];var _0x1fd253=path[_0xb923('0x5c')](_0x6c5922,_0x3f98b1[_0xb923('0x9e')]);if(fs[_0xb923('0x9f')](_0x1fd253)){_0x5d1edb[_0xb923('0x5b')][_0xb923('0xa0')]({'name':_0x3f98b1[_0xb923('0x2b')],'contentType':_0x3f98b1[_0xb923('0x32')],'data':fs[_0xb923('0xa1')](_0x1fd253)});}}}emlformat['build'](_0x5d1edb,function(_0x20c2cf,_0x2cd63c){if(_0x20c2cf)return _0x25f306(_0x20c2cf);fs[_0xb923('0xa2')](path[_0xb923('0x5c')](_0x34ceee,_0x2b78c8),_0x2cd63c);return _0x18d859(_0x2cd63c);});});}})[_0xb923('0x14')](function(_0x55dcac){if(_0x55dcac){return _0x145575[_0xb923('0x8f')](path[_0xb923('0x5c')](_0x34ceee,_0x2b78c8),_0x2b78c8,function(_0x539405){if(!_0x539405)fs[_0xb923('0xa3')](path[_0xb923('0x5c')](_0x34ceee,_0x2b78c8));});}})[_0xb923('0x1e')](handleError(_0x145575,null));};
\ No newline at end of file
+var _0x49b3=['filter','merge','VIRTUAL','options','includeAll','rows','show','params','keys','rawAttributes','include','body','find','describe','create','direction','secret','split','findOne','MailAccountId','CmList','List','CmContact','updatedAt','DESC','MailServerOut','Smtp','getSmtpOptions','attachments','root','basename','Contacts','ListId','List\x20not\x20found','sendMail','messageId','format','YYYY-MM-DD\x20HH:mm:ss','read','readAt','UserId','user','agent','MailInteraction','MailInteractionId','read1stAt','interaction','get','role','AcceptMessage','acceptMessage','sequelize','Sequelize','QueryTypes','SELECT','User','fullname','email','internal','manual','channel','motionChannel','event','accept','EventManager','acceptmessage','reject','mail','null','RejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','interface','SIP/%s','fromString','rejectmessage','download','join','files','tmp','server','message-%s.eml','from','bcc','subject','createdAt','Attachment','Attachments','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','push','readFileSync','build','writeFileSync','unlinkSync','eml-format','moment','bluebird','util','path','ioredis','../../components/parsers/qs','../../config/logger','api','mail-interactions','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./mailMessage.socket','register','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','code','MailMessage,\x20%s,\x20%s','message','result','catch','status','json','offset','undefined','count','limit','set','Content-Range','update','destroy','end','stack','name','index','map','MailMessage','fieldName','type','key','filters','intersection','model','query','attributes','fields','length','hasOwnProperty','nolimit','sort','where'];(function(_0x3aa129,_0x1bf02c){var _0x52af5a=function(_0x1b1b89){while(--_0x1b1b89){_0x3aa129['push'](_0x3aa129['shift']());}};_0x52af5a(++_0x1bf02c);}(_0x49b3,0x101));var _0x349b=function(_0x15bc81,_0x4d4f77){_0x15bc81=_0x15bc81-0x0;var _0x59440e=_0x49b3[_0x15bc81];return _0x59440e;};'use strict';var emlformat=require(_0x349b('0x0'));var moment=require(_0x349b('0x1'));var BPromise=require(_0x349b('0x2'));var util=require(_0x349b('0x3'));var path=require(_0x349b('0x4'));var fs=require('fs');var _=require('lodash');var Redis=require(_0x349b('0x5'));var htmlToText=require('html-to-text');var qs=require(_0x349b('0x6'));var logger=require(_0x349b('0x7'))(_0x349b('0x8'));var interaction_log=require(_0x349b('0x7'))(_0x349b('0x9'));var config=require(_0x349b('0xa'));var db=require(_0x349b('0xb'))['db'];config[_0x349b('0xc')]=_[_0x349b('0xd')](config[_0x349b('0xc')],{'host':_0x349b('0xe'),'port':0x18eb});var socket=require(_0x349b('0xf'))(new Redis(config['redis']));var htmlEntities=require('html-entities');require(_0x349b('0x10'))[_0x349b('0x11')](socket);var jayson=require(_0x349b('0x12'));var client=jayson[_0x349b('0x13')][_0x349b('0x14')]({'port':0x232c});var client9003=jayson[_0x349b('0x13')][_0x349b('0x14')]({'port':0x232b});var client9002=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0xc4d0b0,_0x50ba1e,_0x2aa4e5,_0x3c268f){return new BPromise(function(_0x25e4db,_0x3c49f4){var _0x2c9a8d=_0x3c268f||client;return _0x2c9a8d[_0x349b('0x15')](_0xc4d0b0,_0x2aa4e5)[_0x349b('0x16')](function(_0x340e38){logger[_0x349b('0x17')]('MailMessage,\x20%s,\x20%s',_0x50ba1e,_0x349b('0x18'));logger[_0x349b('0x19')]('MailMessage,\x20%s,\x20%s,\x20%s',_0x50ba1e,_0x349b('0x18'),JSON[_0x349b('0x1a')](_0x340e38));if(_0x340e38[_0x349b('0x1b')]){if(_0x340e38[_0x349b('0x1b')][_0x349b('0x1c')]===0x1f4){logger[_0x349b('0x1b')](_0x349b('0x1d'),_0x50ba1e,_0x340e38[_0x349b('0x1b')][_0x349b('0x1e')]);return _0x3c49f4(_0x340e38[_0x349b('0x1b')][_0x349b('0x1e')]);}logger[_0x349b('0x1b')](_0x349b('0x1d'),_0x50ba1e,_0x340e38['error'][_0x349b('0x1e')]);return _0x25e4db(_0x340e38[_0x349b('0x1b')]['message']);}else{logger['info'](_0x349b('0x1d'),_0x50ba1e,_0x349b('0x18'));_0x25e4db(_0x340e38[_0x349b('0x1f')][_0x349b('0x1e')]);}})[_0x349b('0x20')](function(_0x5612e2){logger[_0x349b('0x1b')](_0x349b('0x1d'),_0x50ba1e,_0x5612e2);_0x3c49f4(_0x5612e2);});});}function respondWithResult(_0x4d4d18,_0x138a86){_0x138a86=_0x138a86||0xc8;return function(_0xef0166){if(_0xef0166){return _0x4d4d18[_0x349b('0x21')](_0x138a86)[_0x349b('0x22')](_0xef0166);}};}function respondWithFilteredResult(_0x34c487,_0x20a667){return function(_0x5871ea){if(_0x5871ea){var _0x4bc03a=typeof _0x20a667[_0x349b('0x23')]===_0x349b('0x24')&&typeof _0x20a667['limit']===_0x349b('0x24');var _0x2f9b18=_0x5871ea[_0x349b('0x25')];var _0x474844=_0x4bc03a?0x0:_0x20a667[_0x349b('0x23')];var _0x3631ff=_0x4bc03a?_0x5871ea[_0x349b('0x25')]:_0x20a667[_0x349b('0x23')]+_0x20a667[_0x349b('0x26')];var _0x2e26a4;if(_0x3631ff>=_0x2f9b18){_0x3631ff=_0x2f9b18;_0x2e26a4=0xc8;}else{_0x2e26a4=0xce;}_0x34c487[_0x349b('0x21')](_0x2e26a4);return _0x34c487[_0x349b('0x27')](_0x349b('0x28'),_0x474844+'-'+_0x3631ff+'/'+_0x2f9b18)['json'](_0x5871ea);}return null;};}function saveUpdates(_0x58b39d){return function(_0x26ff07){if(_0x26ff07){return _0x26ff07[_0x349b('0x29')](_0x58b39d)[_0x349b('0x16')](function(_0x4718f2){return _0x4718f2;});}return null;};}function removeEntity(_0x303395){return function(_0x3de811){if(_0x3de811){return _0x3de811[_0x349b('0x2a')]()['then'](function(){_0x303395[_0x349b('0x21')](0xcc)[_0x349b('0x2b')]();});}};}function handleEntityNotFound(_0x3d4701){return function(_0x24b7d2){if(!_0x24b7d2){_0x3d4701['sendStatus'](0x194);}return _0x24b7d2;};}function handleError(_0x44846c,_0x59d28f){_0x59d28f=_0x59d28f||0x1f4;return function(_0x4a8906){logger[_0x349b('0x1b')](_0x4a8906[_0x349b('0x2c')]);if(_0x4a8906[_0x349b('0x2d')]){delete _0x4a8906[_0x349b('0x2d')];}_0x44846c[_0x349b('0x21')](_0x59d28f)['send'](_0x4a8906);};}exports[_0x349b('0x2e')]=function(_0x372280,_0xd740ba){var _0x15c561={},_0x5dc8ce={},_0xed8ef={'count':0x0,'rows':[]};var _0x5d1966=_[_0x349b('0x2f')](db[_0x349b('0x30')]['rawAttributes'],function(_0x154d35){return{'name':_0x154d35[_0x349b('0x31')],'type':_0x154d35[_0x349b('0x32')][_0x349b('0x33')]};});_0x5dc8ce['model']=_[_0x349b('0x2f')](_0x5d1966,_0x349b('0x2d'));_0x5dc8ce['query']=_['keys'](_0x372280['query']);_0x5dc8ce[_0x349b('0x34')]=_[_0x349b('0x35')](_0x5dc8ce[_0x349b('0x36')],_0x5dc8ce[_0x349b('0x37')]);_0x15c561[_0x349b('0x38')]=_[_0x349b('0x35')](_0x5dc8ce[_0x349b('0x36')],qs['fields'](_0x372280[_0x349b('0x37')][_0x349b('0x39')]));_0x15c561[_0x349b('0x38')]=_0x15c561['attributes'][_0x349b('0x3a')]?_0x15c561[_0x349b('0x38')]:_0x5dc8ce[_0x349b('0x36')];if(!_0x372280[_0x349b('0x37')][_0x349b('0x3b')](_0x349b('0x3c'))){_0x15c561[_0x349b('0x26')]=qs[_0x349b('0x26')](_0x372280['query']['limit']);_0x15c561[_0x349b('0x23')]=qs[_0x349b('0x23')](_0x372280[_0x349b('0x37')][_0x349b('0x23')]);}_0x15c561['order']=qs[_0x349b('0x3d')](_0x372280[_0x349b('0x37')]['sort']);_0x15c561[_0x349b('0x3e')]=qs[_0x349b('0x34')](_['pick'](_0x372280['query'],_0x5dc8ce[_0x349b('0x34')]),_0x5d1966);if(_0x372280[_0x349b('0x37')][_0x349b('0x3f')]){_0x15c561[_0x349b('0x3e')]=_[_0x349b('0x40')](_0x15c561[_0x349b('0x3e')],{'$or':_[_0x349b('0x2f')](_0x5d1966,function(_0x5cf0c4){if(_0x5cf0c4['type']!==_0x349b('0x41')){var _0x2bc51b={};_0x2bc51b[_0x5cf0c4['name']]={'$like':'%'+_0x372280[_0x349b('0x37')]['filter']+'%'};return _0x2bc51b;}})});}_0x15c561=_[_0x349b('0x40')]({},_0x15c561,_0x372280[_0x349b('0x42')]);var _0x3e6af2={'where':_0x15c561[_0x349b('0x3e')]};return db['MailMessage'][_0x349b('0x25')](_0x3e6af2)[_0x349b('0x16')](function(_0x2ef179){_0xed8ef[_0x349b('0x25')]=_0x2ef179;if(_0x372280[_0x349b('0x37')][_0x349b('0x43')]){_0x15c561['include']=[{'all':!![]}];}return db[_0x349b('0x30')]['findAll'](_0x15c561);})[_0x349b('0x16')](function(_0x38555a){_0xed8ef[_0x349b('0x44')]=_0x38555a;return _0xed8ef;})[_0x349b('0x16')](respondWithFilteredResult(_0xd740ba,_0x15c561))[_0x349b('0x20')](handleError(_0xd740ba,null));};exports[_0x349b('0x45')]=function(_0x5e186d,_0x240539){var _0x552778={'raw':!![],'where':{'id':_0x5e186d[_0x349b('0x46')]['id']}},_0x49f58f={};_0x49f58f['model']=_[_0x349b('0x47')](db['MailMessage'][_0x349b('0x48')]);_0x49f58f[_0x349b('0x37')]=_[_0x349b('0x47')](_0x5e186d[_0x349b('0x37')]);_0x49f58f[_0x349b('0x34')]=_[_0x349b('0x35')](_0x49f58f[_0x349b('0x36')],_0x49f58f[_0x349b('0x37')]);_0x552778[_0x349b('0x38')]=_['intersection'](_0x49f58f[_0x349b('0x36')],qs[_0x349b('0x39')](_0x5e186d[_0x349b('0x37')][_0x349b('0x39')]));_0x552778[_0x349b('0x38')]=_0x552778[_0x349b('0x38')]['length']?_0x552778['attributes']:_0x49f58f[_0x349b('0x36')];if(_0x5e186d[_0x349b('0x37')][_0x349b('0x43')]){_0x552778[_0x349b('0x49')]=[{'all':!![]}];}_0x552778=_[_0x349b('0x40')]({},_0x552778,_0x5e186d[_0x349b('0x42')]);return db[_0x349b('0x30')]['find'](_0x552778)[_0x349b('0x16')](handleEntityNotFound(_0x240539,null))[_0x349b('0x16')](respondWithResult(_0x240539,null))[_0x349b('0x20')](handleError(_0x240539,null));};exports['update']=function(_0x33562b,_0x87e616){if(_0x33562b[_0x349b('0x4a')]['id']){delete _0x33562b[_0x349b('0x4a')]['id'];}return db['MailMessage'][_0x349b('0x4b')]({'where':{'id':_0x33562b[_0x349b('0x46')]['id']}})[_0x349b('0x16')](handleEntityNotFound(_0x87e616,null))['then'](saveUpdates(_0x33562b[_0x349b('0x4a')],null))['then'](respondWithResult(_0x87e616,null))[_0x349b('0x20')](handleError(_0x87e616,null));};exports[_0x349b('0x2a')]=function(_0x51e4bc,_0x890867){return db[_0x349b('0x30')][_0x349b('0x4b')]({'where':{'id':_0x51e4bc[_0x349b('0x46')]['id']}})[_0x349b('0x16')](handleEntityNotFound(_0x890867,null))[_0x349b('0x16')](removeEntity(_0x890867,null))[_0x349b('0x20')](handleError(_0x890867,null));};exports['describe']=function(_0x2097a2,_0x225944){return db['MailMessage'][_0x349b('0x4c')]()['then'](respondWithResult(_0x225944,null))[_0x349b('0x20')](handleError(_0x225944,null));};exports[_0x349b('0x4d')]=function(_0x395df7,_0x3c53b8){return db[_0x349b('0x30')][_0x349b('0x4d')](_0x395df7[_0x349b('0x4a')])[_0x349b('0x16')](function(_0x1e4e99){if(_0x1e4e99){if(_0x1e4e99[_0x349b('0x4e')]==='out'&&!_0x1e4e99[_0x349b('0x4f')]){var _0x443592,_0x56b43e,_0x2191cb;if(_0x395df7[_0x349b('0x4a')]['to']){_0x56b43e=_0x395df7[_0x349b('0x4a')]['to'][_0x349b('0x50')](',')[0x0];}return db['MailAccount'][_0x349b('0x51')]({'where':{'id':_0x1e4e99[_0x349b('0x52')]},'include':[{'model':db[_0x349b('0x53')],'as':_0x349b('0x54'),'include':[{'model':db[_0x349b('0x55')],'as':'Contacts','where':{'email':_0x56b43e},'limit':0x1,'order':[[_0x349b('0x56'),_0x349b('0x57')]]}]},{'model':db[_0x349b('0x58')],'as':_0x349b('0x59'),'raw':!![],'include':[{'model':db['CloudProvider'],'as':'CloudProvider','raw':!![]}]}]})[_0x349b('0x16')](function(_0xa7035c){_0x443592=_0xa7035c;if(!_0x443592||!_0x443592[_0x349b('0x59')])return;var _0x51de63=_0x443592[_0x349b('0x5a')]();if(_0x395df7[_0x349b('0x4a')][_0x349b('0x5b')]&&_0x395df7[_0x349b('0x4a')][_0x349b('0x5b')][_0x349b('0x3a')]){for(var _0xc406ee=0x0;_0xc406ee<_0x395df7[_0x349b('0x4a')][_0x349b('0x5b')][_0x349b('0x3a')];_0xc406ee+=0x1){_0x395df7[_0x349b('0x4a')][_0x349b('0x5b')][_0xc406ee]={'filename':_0x395df7['body'][_0x349b('0x5b')][_0xc406ee][_0x349b('0x2d')],'path':path['join'](config[_0x349b('0x5c')],'server/files/attachments',_0x395df7[_0x349b('0x4a')][_0x349b('0x5b')][_0xc406ee][_0x349b('0x5d')])};}}_0x2191cb={'account':_0x51de63,'message':_0x395df7[_0x349b('0x4a')]};return;})[_0x349b('0x16')](function(){if(_0x443592[_0x349b('0x54')]){if(_0x443592[_0x349b('0x54')][_0x349b('0x5e')]['length']){return _0x443592['List'][_0x349b('0x5e')][0x0];}else{return db['CmContact']['create'](_[_0x349b('0xd')](_0x395df7[_0x349b('0x4a')],{'firstName':_0x395df7[_0x349b('0x4a')]['to'],'email':_0x395df7[_0x349b('0x4a')]['to'],'phone':_0x395df7[_0x349b('0x4a')]['to'],'ListId':_0x443592[_0x349b('0x5f')]}));}}else{throw new Error(_0x349b('0x60'));}})['then'](function(){if(_0x2191cb){return respondWithRpcPromise('SendMail',_0x349b('0x61'),_0x2191cb,client9003)[_0x349b('0x16')](function(_0x10b191){return _0x1e4e99[_0x349b('0x29')]({'read':!![],'messageId':_0x10b191[_0x349b('0x62')],'sentAt':moment()[_0x349b('0x63')](_0x349b('0x64'))});})[_0x349b('0x20')](function(_0x2a0bf6){logger[_0x349b('0x1b')]('%s',JSON['stringify'](_0x2a0bf6));return _0x1e4e99;});}return _0x1e4e99;});}return _0x1e4e99;}})[_0x349b('0x16')](respondWithResult(_0x3c53b8,0xc9))['catch'](handleError(_0x3c53b8,null));};exports['accept']=function(_0x38a9a6,_0x3b6eb6){var _0x2c71b3={'agent':{},'channel':'mail'};if(_0x38a9a6[_0x349b('0x4a')]['id']){delete _0x38a9a6[_0x349b('0x4a')]['id'];}_0x38a9a6[_0x349b('0x4a')][_0x349b('0x65')]=!![];_0x38a9a6[_0x349b('0x4a')][_0x349b('0x66')]=moment()['format'](_0x349b('0x64'));_0x38a9a6[_0x349b('0x4a')][_0x349b('0x67')]=_0x38a9a6[_0x349b('0x4a')][_0x349b('0x67')]||_0x38a9a6[_0x349b('0x68')]['id'];_0x2c71b3[_0x349b('0x69')]['id']=_0x38a9a6[_0x349b('0x4a')][_0x349b('0x67')];return db[_0x349b('0x30')]['find']({'where':{'id':_0x38a9a6[_0x349b('0x46')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x3b6eb6,null))['then'](saveUpdates(_0x38a9a6[_0x349b('0x4a')],null))[_0x349b('0x16')](function(_0x2c617b){if(_0x2c617b){_0x2c71b3['message']=_0x2c617b['get']({'plain':!![]});return db[_0x349b('0x6a')]['find']({'where':{'id':_0x2c617b[_0x349b('0x6b')]}});}return null;})[_0x349b('0x16')](handleEntityNotFound(_0x3b6eb6,null))['then'](function(_0x4829e5){if(_0x4829e5){return _0x4829e5['update']({'UserId':_0x38a9a6[_0x349b('0x4a')]['UserId'],'read1stAt':_['isNil'](_0x4829e5[_0x349b('0x6c')])?moment()[_0x349b('0x63')](_0x349b('0x64')):undefined});}return null;})[_0x349b('0x16')](function(_0x1c75ac){if(_0x1c75ac){_0x2c71b3[_0x349b('0x6d')]=_0x1c75ac[_0x349b('0x6e')]({'plain':!![]});interaction_log[_0x349b('0x17')]('[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x38a9a6['user']['id'],_0x38a9a6[_0x349b('0x68')][_0x349b('0x2d')],_0x38a9a6['user'][_0x349b('0x6f')],_0x2c71b3['interaction']['id'],_0x38a9a6[_0x349b('0x4a')]?JSON[_0x349b('0x1a')](_0x38a9a6['body']):'null');return respondWithRpcPromise(_0x349b('0x70'),_0x349b('0x71'),_0x2c71b3);}return null;})[_0x349b('0x16')](function(_0xea3a5c){var _0x1ca702='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0xea3a5c['message']['ContactId'];return db[_0x349b('0x72')]['query'](_0x1ca702,{'type':db[_0x349b('0x73')][_0x349b('0x74')][_0x349b('0x75')],'raw':!![]})['then'](function(_0x176de1){return _0x176de1;});})[_0x349b('0x16')](function(_0x95f2af){if(_0x95f2af){_0x2c71b3[_0x349b('0x1e')]['contact']=_0x95f2af[0x0];if(!_0x38a9a6[_0x349b('0x4a')][_0x349b('0x67')])return;return db[_0x349b('0x76')]['find']({'where':{'id':_0x38a9a6[_0x349b('0x4a')][_0x349b('0x67')],'role':'agent'},'attributes':['id',_0x349b('0x2d'),_0x349b('0x77'),_0x349b('0x78'),_0x349b('0x79')],'raw':!![]});}return null;})[_0x349b('0x16')](function(_0x2bb668){if(!_0x2bb668)return null;_0x2c71b3[_0x349b('0x1e')]['agent']=_0x2bb668;return _0x2c71b3;})[_0x349b('0x16')](function(_0x43f6c6){if(_0x43f6c6){if(_0x38a9a6[_0x349b('0x4a')][_0x349b('0x7a')]){_0x2c71b3[_0x349b('0x1e')]['interface']=util[_0x349b('0x63')]('SIP/%s',_0x38a9a6['user'][_0x349b('0x2d')]);_0x2c71b3[_0x349b('0x1e')][_0x349b('0x7b')]=_0x2c71b3[_0x349b('0x7b')];_0x2c71b3[_0x349b('0x1e')][_0x349b('0x7c')]=_0x2c71b3[_0x349b('0x7b')];_0x2c71b3['message'][_0x349b('0x7d')]=_0x349b('0x7e');_0x2c71b3[_0x349b('0x1e')][_0x349b('0x4a')]=htmlToText['fromString'](_0x2c71b3[_0x349b('0x1e')]['body']);return respondWithRpcPromise(_0x349b('0x7f'),_0x349b('0x7f'),{'event':_0x349b('0x80'),'message':_0x2c71b3[_0x349b('0x1e')]},client9002)[_0x349b('0x16')](function(){return _0x2c71b3;});}return _0x2c71b3;}return null;})[_0x349b('0x16')](respondWithResult(_0x3b6eb6,null))[_0x349b('0x20')](handleError(_0x3b6eb6,null));};exports[_0x349b('0x81')]=function(_0x4385fb,_0x280726){var _0x5f1fa6={'agent':{},'channel':_0x349b('0x82')};if(_0x4385fb[_0x349b('0x4a')]['id']){delete _0x4385fb[_0x349b('0x4a')]['id'];}_0x4385fb[_0x349b('0x4a')][_0x349b('0x67')]=_0x4385fb['body']['UserId']||_0x4385fb[_0x349b('0x68')]['id'];_0x5f1fa6[_0x349b('0x69')]['id']=_0x4385fb[_0x349b('0x4a')]['UserId'];return db[_0x349b('0x30')][_0x349b('0x4b')]({'where':{'id':_0x4385fb['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x280726,null))[_0x349b('0x16')](function(_0x4c3269){if(_0x4c3269){_0x5f1fa6[_0x349b('0x1e')]=_0x4c3269[_0x349b('0x6e')]({'plain':!![]});return db[_0x349b('0x6a')]['find']({'where':{'id':_0x4c3269[_0x349b('0x6b')]}});}return null;})[_0x349b('0x16')](handleEntityNotFound(_0x280726,null))[_0x349b('0x16')](function(_0x82b6bd){if(_0x82b6bd){_0x5f1fa6['interaction']=_0x82b6bd[_0x349b('0x6e')]({'plain':!![]});interaction_log[_0x349b('0x17')]('[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x4385fb['user']['id'],_0x4385fb[_0x349b('0x68')][_0x349b('0x2d')],_0x4385fb[_0x349b('0x68')][_0x349b('0x6f')],_0x5f1fa6[_0x349b('0x6d')]['id'],_0x4385fb[_0x349b('0x4a')]?JSON[_0x349b('0x1a')](_0x4385fb[_0x349b('0x4a')]):_0x349b('0x83'));return respondWithRpcPromise(_0x349b('0x84'),'rejectMessage',_0x5f1fa6);}return null;})['then'](function(_0xfbc04c){var _0x50bf5c=_0x349b('0x85')+_0xfbc04c[_0x349b('0x1e')][_0x349b('0x86')];return db[_0x349b('0x72')]['query'](_0x50bf5c,{'type':db[_0x349b('0x73')][_0x349b('0x74')]['SELECT'],'raw':!![]})[_0x349b('0x16')](function(_0x377de8){return _0x377de8;});})['then'](function(_0x2a0037){if(_0x2a0037){_0x5f1fa6[_0x349b('0x1e')]['contact']=_0x2a0037[0x0];if(!_0x4385fb[_0x349b('0x4a')][_0x349b('0x67')])return;return db[_0x349b('0x76')][_0x349b('0x4b')]({'where':{'id':_0x4385fb[_0x349b('0x4a')][_0x349b('0x67')],'role':'agent'},'attributes':['id',_0x349b('0x2d'),_0x349b('0x77'),_0x349b('0x78'),_0x349b('0x79')],'raw':!![]});}return null;})[_0x349b('0x16')](function(_0x3c35b6){if(!_0x3c35b6)return null;_0x5f1fa6['message']['agent']=_0x3c35b6;return _0x5f1fa6;})['then'](function(_0x24b2fc){if(_0x24b2fc){_0x24b2fc['message'][_0x349b('0x87')]=util['format'](_0x349b('0x88'),_0x4385fb[_0x349b('0x68')][_0x349b('0x2d')]);_0x24b2fc[_0x349b('0x1e')][_0x349b('0x7b')]=_0x5f1fa6[_0x349b('0x7b')];_0x24b2fc[_0x349b('0x1e')]['motionChannel']=_0x5f1fa6[_0x349b('0x7b')];_0x24b2fc[_0x349b('0x1e')][_0x349b('0x7d')]=_0x349b('0x81');_0x24b2fc[_0x349b('0x1e')][_0x349b('0x4a')]=htmlToText[_0x349b('0x89')](_0x5f1fa6['message']['body']);respondWithRpcPromise(_0x349b('0x7f'),_0x349b('0x7f'),{'event':_0x349b('0x8a'),'message':_0x24b2fc[_0x349b('0x1e')]},client9002);return _0x5f1fa6;}return null;})[_0x349b('0x16')](respondWithResult(_0x280726,null))['catch'](handleError(_0x280726,null));};exports[_0x349b('0x8b')]=function(_0x1c0d86,_0x4c03d1){var _0x7df1fa=moment()['unix']()['toString']();var _0x2cc5bb=path[_0x349b('0x8c')](config[_0x349b('0x5c')],'server',_0x349b('0x8d'),_0x349b('0x8e'));var _0x9b1ba5=path[_0x349b('0x8c')](config[_0x349b('0x5c')],_0x349b('0x8f'),_0x349b('0x8d'),'attachments');var _0x4093c4=util[_0x349b('0x63')](_0x349b('0x90'),_0x7df1fa);return db[_0x349b('0x30')][_0x349b('0x4b')]({'where':{'id':_0x1c0d86[_0x349b('0x46')]['id']},'attributes':['id',_0x349b('0x4a'),_0x349b('0x91'),'to','cc',_0x349b('0x92'),_0x349b('0x93'),_0x349b('0x94')],'include':_0x1c0d86['query'][_0x349b('0x5b')]?[{'model':db[_0x349b('0x95')],'as':_0x349b('0x96')}]:undefined})[_0x349b('0x16')](handleEntityNotFound(_0x4c03d1,null))['then'](function(_0x201410){if(_0x201410){var _0x497335=_0x201410;var _0x1e5572={'from':_0x497335[_0x349b('0x91')],'to':_0x497335['to'],'subject':_0x497335[_0x349b('0x93')],'html':htmlEntities[_0x349b('0x97')](_0x497335[_0x349b('0x4a')]),'headers':{'Date':moment(_0x497335[_0x349b('0x94')])[_0x349b('0x63')](_0x349b('0x98'))},'attachments':[]};if(_0x201410['cc']){_0x1e5572[_0x349b('0x99')]['Cc']=_0x201410['cc'];}if(_0x201410['bcc']){_0x1e5572['headers'][_0x349b('0x9a')]=_0x201410[_0x349b('0x92')];}return new BPromise(function(_0x47505f,_0x2eb306){if(_0x201410['Attachments']){for(var _0x31ee45=0x0;_0x31ee45<_0x201410[_0x349b('0x96')][_0x349b('0x3a')];_0x31ee45++){var _0x1c0783=_0x201410[_0x349b('0x96')][_0x31ee45];var _0x55ff55=path['join'](_0x9b1ba5,_0x1c0783[_0x349b('0x5d')]);if(fs['existsSync'](_0x55ff55)){_0x1e5572['attachments'][_0x349b('0x9b')]({'name':_0x1c0783[_0x349b('0x2d')],'contentType':_0x1c0783[_0x349b('0x32')],'data':fs[_0x349b('0x9c')](_0x55ff55)});}}}emlformat[_0x349b('0x9d')](_0x1e5572,function(_0x92ecd0,_0x2f6923){if(_0x92ecd0)return _0x2eb306(_0x92ecd0);fs[_0x349b('0x9e')](path[_0x349b('0x8c')](_0x2cc5bb,_0x4093c4),_0x2f6923);return _0x47505f(_0x2f6923);});});}})['then'](function(_0x2d797f){if(_0x2d797f){return _0x4c03d1[_0x349b('0x8b')](path[_0x349b('0x8c')](_0x2cc5bb,_0x4093c4),_0x4093c4,function(_0x1879a3){if(!_0x1879a3)fs[_0x349b('0x9f')](path[_0x349b('0x8c')](_0x2cc5bb,_0x4093c4));});}})[_0x349b('0x20')](handleError(_0x4c03d1,null));};
\ No newline at end of file
index 6f43ff1..6d10811 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7dbb=['../../mysqldb','setMaxListeners','save','remove','emit','hasOwnProperty','hook','exports','events'];(function(_0x426f43,_0x25b455){var _0x1301e3=function(_0x5d26a5){while(--_0x5d26a5){_0x426f43['push'](_0x426f43['shift']());}};_0x1301e3(++_0x25b455);}(_0x7dbb,0x18b));var _0xb7db=function(_0x3e33d9,_0xdcf132){_0x3e33d9=_0x3e33d9-0x0;var _0x481d50=_0x7dbb[_0x3e33d9];return _0x481d50;};'use strict';var EventEmitter=require(_0xb7db('0x0'));var MailMessage=require(_0xb7db('0x1'))['db']['MailMessage'];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0xb7db('0x2')](0x0);var events={'afterCreate':_0xb7db('0x3'),'afterUpdate':'update','afterDestroy':_0xb7db('0x4')};function emitEvent(_0x3d8ae1){return function(_0x334e72,_0x225b0a,_0x4424a3){MailMessageEvents[_0xb7db('0x5')](_0x3d8ae1+':'+_0x334e72['id'],_0x334e72);MailMessageEvents['emit'](_0x3d8ae1,_0x334e72);_0x4424a3(null);};}for(var e in events){if(events[_0xb7db('0x6')](e)){var event=events[e];MailMessage[_0xb7db('0x7')](e,emitEvent(event));}}module[_0xb7db('0x8')]=MailMessageEvents;
\ No newline at end of file
+var _0x2775=['exports','events','../../mysqldb','MailMessage','save','update','remove','hook'];(function(_0x30a52d,_0x422634){var _0xf938f3=function(_0x39502f){while(--_0x39502f){_0x30a52d['push'](_0x30a52d['shift']());}};_0xf938f3(++_0x422634);}(_0x2775,0xd9));var _0x5277=function(_0x3e44fa,_0x75ed2a){_0x3e44fa=_0x3e44fa-0x0;var _0x2a0aba=_0x2775[_0x3e44fa];return _0x2a0aba;};'use strict';var EventEmitter=require(_0x5277('0x0'));var MailMessage=require(_0x5277('0x1'))['db'][_0x5277('0x2')];var MailMessageEvents=new EventEmitter();MailMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x5277('0x3'),'afterUpdate':_0x5277('0x4'),'afterDestroy':_0x5277('0x5')};function emitEvent(_0x56709c){return function(_0x41e806,_0x53d7d6,_0x4acde3){MailMessageEvents['emit'](_0x56709c+':'+_0x41e806['id'],_0x41e806);MailMessageEvents['emit'](_0x56709c,_0x41e806);_0x4acde3(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailMessage[_0x5277('0x6')](e,emitEvent(event));}}module[_0x5277('0x7')]=MailMessageEvents;
\ No newline at end of file
index 3b8636e..0df34ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb943=['define','MailMessage','mail_messages','messageId','fti_mail_messages','plainBody','subject','FULLTEXT','body','fromString','models','direction','toLowerCase','out','secret','isNil','UserId','MailInteraction','findOne','MailInteractionId','update','createdAt','error','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','request-promise','html-to-text','path','rimraf','../../config/environment','./mailMessage.attributes'];(function(_0x161144,_0x33be61){var _0x167c1e=function(_0x101c2b){while(--_0x101c2b){_0x161144['push'](_0x161144['shift']());}};_0x167c1e(++_0x33be61);}(_0xb943,0xea));var _0x3b94=function(_0x1b7a21,_0x50a484){_0x1b7a21=_0x1b7a21-0x0;var _0x797ca1=_0xb943[_0x1b7a21];return _0x797ca1;};'use strict';var _=require(_0x3b94('0x0'));var util=require(_0x3b94('0x1'));var logger=require(_0x3b94('0x2'))(_0x3b94('0x3'));var moment=require(_0x3b94('0x4'));var BPromise=require('bluebird');var rp=require(_0x3b94('0x5'));var htmlToText=require(_0x3b94('0x6'));var fs=require('fs');var path=require(_0x3b94('0x7'));var rimraf=require(_0x3b94('0x8'));var config=require(_0x3b94('0x9'));var attributes=require(_0x3b94('0xa'));module['exports']=function(_0x1ac2a3,_0x550672){return _0x1ac2a3[_0x3b94('0xb')](_0x3b94('0xc'),attributes,{'tableName':_0x3b94('0xd'),'paranoid':![],'indexes':[{'name':_0x3b94('0xe'),'fields':[_0x3b94('0xe')]},{'name':_0x3b94('0xf'),'fields':[_0x3b94('0x10'),_0x3b94('0x11')],'type':_0x3b94('0x12')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x32b80e,_0x5e5776,_0x3a1356){if(_0x32b80e[_0x3b94('0x13')]){_0x32b80e['plainBody']=htmlToText[_0x3b94('0x14')](_0x32b80e[_0x3b94('0x13')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x3a1356(null,_0x5e5776);},'afterCreate':function(_0x2aa032,_0x434701,_0x251c58){var _0x162590=_0x1ac2a3[_0x3b94('0x15')];var _0x4d4727=_0x2aa032['get']({'plain':!![]});if(_0x4d4727[_0x3b94('0x16')][_0x3b94('0x17')]()==='in'||_0x4d4727[_0x3b94('0x16')][_0x3b94('0x17')]()===_0x3b94('0x18')&&!_0x4d4727[_0x3b94('0x19')]&&!_[_0x3b94('0x1a')](_0x4d4727[_0x3b94('0x1b')])){_0x162590[_0x3b94('0x1c')][_0x3b94('0x1d')]({'where':{'id':_0x4d4727[_0x3b94('0x1e')]}})['then'](function(_0x4103ce){if(_0x4103ce){_0x4103ce[_0x3b94('0x1f')]({'lastMsgAt':_0x4d4727[_0x3b94('0x20')],'lastMsgDirection':_0x4d4727['direction'][_0x3b94('0x17')]()});}})['catch'](function(_0x45f995){console[_0x3b94('0x21')](_0x45f995);});}_0x251c58();}},'charset':'utf8mb4','collate':_0x3b94('0x22')});};
\ No newline at end of file
+var _0xc551=['secret','isNil','UserId','MailInteraction','findOne','MailInteractionId','then','update','createdAt','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','api','bluebird','html-to-text','path','rimraf','exports','MailMessage','mail_messages','messageId','fti_mail_messages','plainBody','FULLTEXT','body','fromString','models','get','toLowerCase','direction','out'];(function(_0x1de75c,_0x326a1b){var _0x48fe19=function(_0x258e25){while(--_0x258e25){_0x1de75c['push'](_0x1de75c['shift']());}};_0x48fe19(++_0x326a1b);}(_0xc551,0x1a5));var _0x1c55=function(_0x5a5c80,_0x579447){_0x5a5c80=_0x5a5c80-0x0;var _0x2ac2ec=_0xc551[_0x5a5c80];return _0x2ac2ec;};'use strict';var _=require(_0x1c55('0x0'));var util=require('util');var logger=require(_0x1c55('0x1'))(_0x1c55('0x2'));var moment=require('moment');var BPromise=require(_0x1c55('0x3'));var rp=require('request-promise');var htmlToText=require(_0x1c55('0x4'));var fs=require('fs');var path=require(_0x1c55('0x5'));var rimraf=require(_0x1c55('0x6'));var config=require('../../config/environment');var attributes=require('./mailMessage.attributes');module[_0x1c55('0x7')]=function(_0x3075c6,_0x436885){return _0x3075c6['define'](_0x1c55('0x8'),attributes,{'tableName':_0x1c55('0x9'),'paranoid':![],'indexes':[{'name':_0x1c55('0xa'),'fields':[_0x1c55('0xa')]},{'name':_0x1c55('0xb'),'fields':[_0x1c55('0xc'),'subject'],'type':_0x1c55('0xd')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x453863,_0x1f16cc,_0x1beffc){if(_0x453863[_0x1c55('0xe')]){_0x453863[_0x1c55('0xc')]=htmlToText[_0x1c55('0xf')](_0x453863[_0x1c55('0xe')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x1beffc(null,_0x1f16cc);},'afterCreate':function(_0x45f0d3,_0x418b5a,_0x4d7062){var _0x2c2155=_0x3075c6[_0x1c55('0x10')];var _0x1a7750=_0x45f0d3[_0x1c55('0x11')]({'plain':!![]});if(_0x1a7750['direction'][_0x1c55('0x12')]()==='in'||_0x1a7750[_0x1c55('0x13')][_0x1c55('0x12')]()===_0x1c55('0x14')&&!_0x1a7750[_0x1c55('0x15')]&&!_[_0x1c55('0x16')](_0x1a7750[_0x1c55('0x17')])){_0x2c2155[_0x1c55('0x18')][_0x1c55('0x19')]({'where':{'id':_0x1a7750[_0x1c55('0x1a')]}})[_0x1c55('0x1b')](function(_0x32bd28){if(_0x32bd28){_0x32bd28[_0x1c55('0x1c')]({'lastMsgAt':_0x1a7750[_0x1c55('0x1d')],'lastMsgDirection':_0x1a7750[_0x1c55('0x13')]['toLowerCase']()});}})[_0x1c55('0x1e')](function(_0x3e88c7){console[_0x1c55('0x1f')](_0x3e88c7);});}_0x4d7062();}},'charset':_0x1c55('0x20'),'collate':_0x1c55('0x21')});};
\ No newline at end of file
index 68240c6..25abb0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2cf=['MailMessage,\x20%s,\x20%s','request\x20sent','error','message','result','CreateMailMessage','MailMessage','create','options','debug','stringify','catch','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','redis','defaults','socket.io-emitter','./mailMessage.socket','request','then','info'];(function(_0x12a610,_0x5175f5){var _0x68942d=function(_0x1d6dc2){while(--_0x1d6dc2){_0x12a610['push'](_0x12a610['shift']());}};_0x68942d(++_0x5175f5);}(_0xe2cf,0x1a1));var _0xfe2c=function(_0x1a4cac,_0x116f47){_0x1a4cac=_0x1a4cac-0x0;var _0x142f2f=_0xe2cf[_0x1a4cac];return _0x142f2f;};'use strict';var _=require('lodash');var util=require(_0xfe2c('0x0'));var moment=require('moment');var BPromise=require(_0xfe2c('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xfe2c('0x2'));var db=require(_0xfe2c('0x3'))['db'];var utils=require(_0xfe2c('0x4'));var logger=require(_0xfe2c('0x5'))('rpc');var config=require(_0xfe2c('0x6'));var jayson=require(_0xfe2c('0x7'));var client=jayson['client']['http']({'port':0x232a});config[_0xfe2c('0x8')]=_[_0xfe2c('0x9')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xfe2c('0xa'))(new Redis(config[_0xfe2c('0x8')]));require(_0xfe2c('0xb'))['register'](socket);function respondWithRpcPromise(_0x5b616c,_0x396912,_0x15421e){return new BPromise(function(_0x495513,_0x22278c){return client[_0xfe2c('0xc')](_0x5b616c,_0x15421e)[_0xfe2c('0xd')](function(_0xa176e9){logger[_0xfe2c('0xe')](_0xfe2c('0xf'),_0x396912,_0xfe2c('0x10'));logger['debug']('MailMessage,\x20%s,\x20%s,\x20%s',_0x396912,'request\x20sent',JSON['stringify'](_0xa176e9));if(_0xa176e9[_0xfe2c('0x11')]){if(_0xa176e9['error']['code']===0x1f4){logger[_0xfe2c('0x11')](_0xfe2c('0xf'),_0x396912,_0xa176e9[_0xfe2c('0x11')][_0xfe2c('0x12')]);return _0x22278c(_0xa176e9['error']['message']);}logger[_0xfe2c('0x11')](_0xfe2c('0xf'),_0x396912,_0xa176e9[_0xfe2c('0x11')][_0xfe2c('0x12')]);return _0x495513(_0xa176e9['error'][_0xfe2c('0x12')]);}else{logger[_0xfe2c('0xe')](_0xfe2c('0xf'),_0x396912,_0xfe2c('0x10'));_0x495513(_0xa176e9[_0xfe2c('0x13')][_0xfe2c('0x12')]);}})['catch'](function(_0x22481a){logger[_0xfe2c('0x11')](_0xfe2c('0xf'),_0x396912,_0x22481a);_0x22278c(_0x22481a);});});}exports[_0xfe2c('0x14')]=function(_0x55f751){var _0x1139fe=this;return new Promise(function(_0x59bdeb,_0x4e9137){return db[_0xfe2c('0x15')][_0xfe2c('0x16')](_0x55f751['body'],{'raw':_0x55f751[_0xfe2c('0x17')]?_0x55f751[_0xfe2c('0x17')]['raw']===undefined?!![]:![]:!![]})[_0xfe2c('0xd')](function(_0x5dd54b){logger[_0xfe2c('0xe')](_0xfe2c('0x14'),_0x55f751);logger[_0xfe2c('0x18')](_0xfe2c('0x14'),_0x55f751,JSON[_0xfe2c('0x19')](_0x5dd54b));_0x59bdeb(_0x5dd54b);})[_0xfe2c('0x1a')](function(_0x57cd6d){logger[_0xfe2c('0x11')](_0xfe2c('0x14'),_0x57cd6d[_0xfe2c('0x12')],_0x55f751);_0x4e9137(_0x1139fe[_0xfe2c('0x11')](0x1f4,_0x57cd6d[_0xfe2c('0x12')]));});});};
\ No newline at end of file
+var _0x9582=['client','http','redis','defaults','register','request','then','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateMailMessage','MailMessage','options','raw','info','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x53d985,_0x1cd580){var _0x34bdde=function(_0x34d312){while(--_0x34d312){_0x53d985['push'](_0x53d985['shift']());}};_0x34bdde(++_0x1cd580);}(_0x9582,0x95));var _0x2958=function(_0x3abbf3,_0x272622){_0x3abbf3=_0x3abbf3-0x0;var _0x4808c7=_0x9582[_0x3abbf3];return _0x4808c7;};'use strict';var _=require(_0x2958('0x0'));var util=require(_0x2958('0x1'));var moment=require(_0x2958('0x2'));var BPromise=require(_0x2958('0x3'));var rs=require(_0x2958('0x4'));var fs=require('fs');var Redis=require(_0x2958('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x2958('0x6'));var logger=require(_0x2958('0x7'))(_0x2958('0x8'));var config=require(_0x2958('0x9'));var jayson=require(_0x2958('0xa'));var client=jayson[_0x2958('0xb')][_0x2958('0xc')]({'port':0x232a});config[_0x2958('0xd')]=_[_0x2958('0xe')](config[_0x2958('0xd')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2958('0xd')]));require('./mailMessage.socket')[_0x2958('0xf')](socket);function respondWithRpcPromise(_0x51e460,_0x44cccc,_0x5ef23c){return new BPromise(function(_0x3aacfa,_0x29776c){return client[_0x2958('0x10')](_0x51e460,_0x5ef23c)[_0x2958('0x11')](function(_0x11ec8d){logger['info'](_0x2958('0x12'),_0x44cccc,_0x2958('0x13'));logger[_0x2958('0x14')](_0x2958('0x15'),_0x44cccc,_0x2958('0x13'),JSON[_0x2958('0x16')](_0x11ec8d));if(_0x11ec8d[_0x2958('0x17')]){if(_0x11ec8d[_0x2958('0x17')]['code']===0x1f4){logger[_0x2958('0x17')](_0x2958('0x12'),_0x44cccc,_0x11ec8d['error']['message']);return _0x29776c(_0x11ec8d[_0x2958('0x17')][_0x2958('0x18')]);}logger['error'](_0x2958('0x12'),_0x44cccc,_0x11ec8d['error']['message']);return _0x3aacfa(_0x11ec8d[_0x2958('0x17')][_0x2958('0x18')]);}else{logger['info']('MailMessage,\x20%s,\x20%s',_0x44cccc,_0x2958('0x13'));_0x3aacfa(_0x11ec8d[_0x2958('0x19')][_0x2958('0x18')]);}})[_0x2958('0x1a')](function(_0x27599c){logger['error'](_0x2958('0x12'),_0x44cccc,_0x27599c);_0x29776c(_0x27599c);});});}exports[_0x2958('0x1b')]=function(_0x1a12fa){var _0x57b6c5=this;return new Promise(function(_0x1e77eb,_0x53b100){return db[_0x2958('0x1c')]['create'](_0x1a12fa['body'],{'raw':_0x1a12fa[_0x2958('0x1d')]?_0x1a12fa[_0x2958('0x1d')][_0x2958('0x1e')]===undefined?!![]:![]:!![]})[_0x2958('0x11')](function(_0x2202f8){logger[_0x2958('0x1f')](_0x2958('0x1b'),_0x1a12fa);logger[_0x2958('0x14')](_0x2958('0x1b'),_0x1a12fa,JSON[_0x2958('0x16')](_0x2202f8));_0x1e77eb(_0x2202f8);})[_0x2958('0x1a')](function(_0xd58ae1){logger[_0x2958('0x17')](_0x2958('0x1b'),_0xd58ae1[_0x2958('0x18')],_0x1a12fa);_0x53b100(_0x57b6c5['error'](0x1f4,_0xd58ae1['message']));});});};
\ No newline at end of file
index 670c24e..2b3f344 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7a4=['length','./mailMessage.events','save','remove','emit','register'];(function(_0x2574fe,_0x1ec95c){var _0x1aa14f=function(_0x3c858a){while(--_0x3c858a){_0x2574fe['push'](_0x2574fe['shift']());}};_0x1aa14f(++_0x1ec95c);}(_0xc7a4,0x8b));var _0x4c7a=function(_0x42edf3,_0x41719){_0x42edf3=_0x42edf3-0x0;var _0x70e878=_0xc7a4[_0x42edf3];return _0x70e878;};'use strict';var MailMessageEvents=require(_0x4c7a('0x0'));var events=[_0x4c7a('0x1'),_0x4c7a('0x2'),'update'];function createListener(_0x49f855,_0xffe7ef){return function(_0x306ce8){_0xffe7ef[_0x4c7a('0x3')](_0x49f855,_0x306ce8);};}function removeListener(_0x161dd3,_0x44b53f){return function(){MailMessageEvents['removeListener'](_0x161dd3,_0x44b53f);};}exports[_0x4c7a('0x4')]=function(_0x15e6ed){for(var _0x351507=0x0,_0x31b213=events[_0x4c7a('0x5')];_0x351507<_0x31b213;_0x351507++){var _0x5b246a=events[_0x351507];var _0x2ac39b=createListener('mailMessage:'+_0x5b246a,_0x15e6ed);MailMessageEvents['on'](_0x5b246a,_0x2ac39b);}};
\ No newline at end of file
+var _0x0f93=['update','emit','removeListener','register','length','mailMessage:','save','remove'];(function(_0x311a00,_0x14f9b8){var _0x5ae163=function(_0x19cd2c){while(--_0x19cd2c){_0x311a00['push'](_0x311a00['shift']());}};_0x5ae163(++_0x14f9b8);}(_0x0f93,0x66));var _0x30f9=function(_0xeb2d28,_0x5150fd){_0xeb2d28=_0xeb2d28-0x0;var _0xefd115=_0x0f93[_0xeb2d28];return _0xefd115;};'use strict';var MailMessageEvents=require('./mailMessage.events');var events=[_0x30f9('0x0'),_0x30f9('0x1'),_0x30f9('0x2')];function createListener(_0x43e3be,_0x1ca80f){return function(_0x193be5){_0x1ca80f[_0x30f9('0x3')](_0x43e3be,_0x193be5);};}function removeListener(_0x3ef34b,_0x443add){return function(){MailMessageEvents[_0x30f9('0x4')](_0x3ef34b,_0x443add);};}exports[_0x30f9('0x5')]=function(_0x4d6276){for(var _0xaad949=0x0,_0x2c3442=events[_0x30f9('0x6')];_0xaad949<_0x2c3442;_0xaad949++){var _0x554ef5=events[_0xaad949];var _0x48e098=createListener(_0x30f9('0x7')+_0x554ef5,_0x4d6276);MailMessageEvents['on'](_0x554ef5,_0x48e098);}};
\ No newline at end of file
index 646613e..c46448a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb455=['/:id','destroy','removeTeams','removeAgents','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','addTeams','put','update','delete'];(function(_0x516044,_0x3677f7){var _0x31684b=function(_0x80be21){while(--_0x80be21){_0x516044['push'](_0x516044['shift']());}};_0x31684b(++_0x3677f7);}(_0xb455,0xd0));var _0x5b45=function(_0x1338b4,_0x4be31b){_0x1338b4=_0x1338b4-0x0;var _0x3a1b7f=_0xb455[_0x1338b4];return _0x3a1b7f;};'use strict';var multer=require(_0x5b45('0x0'));var util=require('util');var path=require(_0x5b45('0x1'));var timeout=require(_0x5b45('0x2'));var express=require(_0x5b45('0x3'));var router=express['Router']();var fs_extra=require(_0x5b45('0x4'));var auth=require(_0x5b45('0x5'));var interaction=require(_0x5b45('0x6'));var config=require(_0x5b45('0x7'));var controller=require('./mailQueue.controller');router[_0x5b45('0x8')]('/',auth[_0x5b45('0x9')](),controller[_0x5b45('0xa')]);router[_0x5b45('0x8')]('/describe',auth[_0x5b45('0x9')](),controller[_0x5b45('0xb')]);router[_0x5b45('0x8')]('/:id',auth[_0x5b45('0x9')](),controller[_0x5b45('0xc')]);router[_0x5b45('0x8')](_0x5b45('0xd'),auth[_0x5b45('0x9')](),controller[_0x5b45('0xe')]);router[_0x5b45('0x8')](_0x5b45('0xf'),auth[_0x5b45('0x9')](),controller[_0x5b45('0x10')]);router['get'](_0x5b45('0x11'),auth[_0x5b45('0x9')](),controller[_0x5b45('0x12')]);router[_0x5b45('0x13')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/teams',auth[_0x5b45('0x9')](),controller[_0x5b45('0x14')]);router[_0x5b45('0x13')](_0x5b45('0x11'),auth[_0x5b45('0x9')](),controller['addAgents']);router[_0x5b45('0x15')]('/:id',auth[_0x5b45('0x9')](),controller[_0x5b45('0x16')]);router[_0x5b45('0x17')](_0x5b45('0x18'),auth[_0x5b45('0x9')](),controller[_0x5b45('0x19')]);router[_0x5b45('0x17')](_0x5b45('0xf'),auth['isAuthenticated'](),controller[_0x5b45('0x1a')]);router[_0x5b45('0x17')](_0x5b45('0x11'),auth['isAuthenticated'](),controller[_0x5b45('0x1b')]);module[_0x5b45('0x1c')]=router;
\ No newline at end of file
+var _0xc731=['create','addTeams','addAgents','put','update','delete','/:id/users','removeAgents','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','getAgents','post'];(function(_0xdea41a,_0x552987){var _0x15d0d8=function(_0x1e0d0b){while(--_0x1e0d0b){_0xdea41a['push'](_0xdea41a['shift']());}};_0x15d0d8(++_0x552987);}(_0xc731,0x169));var _0x1c73=function(_0x326215,_0x596e40){_0x326215=_0x326215-0x0;var _0x4807e5=_0xc731[_0x326215];return _0x4807e5;};'use strict';var multer=require(_0x1c73('0x0'));var util=require(_0x1c73('0x1'));var path=require(_0x1c73('0x2'));var timeout=require('connect-timeout');var express=require(_0x1c73('0x3'));var router=express[_0x1c73('0x4')]();var fs_extra=require(_0x1c73('0x5'));var auth=require(_0x1c73('0x6'));var interaction=require(_0x1c73('0x7'));var config=require(_0x1c73('0x8'));var controller=require(_0x1c73('0x9'));router[_0x1c73('0xa')]('/',auth[_0x1c73('0xb')](),controller[_0x1c73('0xc')]);router[_0x1c73('0xa')](_0x1c73('0xd'),auth[_0x1c73('0xb')](),controller[_0x1c73('0xe')]);router[_0x1c73('0xa')](_0x1c73('0xf'),auth[_0x1c73('0xb')](),controller[_0x1c73('0x10')]);router[_0x1c73('0xa')](_0x1c73('0x11'),auth[_0x1c73('0xb')](),controller[_0x1c73('0x12')]);router['get'](_0x1c73('0x13'),auth[_0x1c73('0xb')](),controller[_0x1c73('0x14')]);router['get']('/:id/users',auth[_0x1c73('0xb')](),controller[_0x1c73('0x15')]);router[_0x1c73('0x16')]('/',auth['isAuthenticated'](),controller[_0x1c73('0x17')]);router[_0x1c73('0x16')]('/:id/teams',auth[_0x1c73('0xb')](),controller[_0x1c73('0x18')]);router['post']('/:id/users',auth[_0x1c73('0xb')](),controller[_0x1c73('0x19')]);router[_0x1c73('0x1a')](_0x1c73('0xf'),auth[_0x1c73('0xb')](),controller[_0x1c73('0x1b')]);router[_0x1c73('0x1c')](_0x1c73('0xf'),auth[_0x1c73('0xb')](),controller['destroy']);router[_0x1c73('0x1c')](_0x1c73('0x13'),auth[_0x1c73('0xb')](),controller['removeTeams']);router[_0x1c73('0x1c')](_0x1c73('0x1d'),auth[_0x1c73('0xb')](),controller[_0x1c73('0x1e')]);module[_0x1c73('0x1f')]=router;
\ No newline at end of file
index bff38fa..22199a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b42=['name','INTEGER','ENUM','rrmemory','sequelize','STRING'];(function(_0x3176f1,_0xb3309){var _0x283aec=function(_0x1700dc){while(--_0x1700dc){_0x3176f1['push'](_0x3176f1['shift']());}};_0x283aec(++_0xb3309);}(_0x7b42,0x100));var _0x27b4=function(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0x7b42[_0x30ae5e];return _0x1f2e93;};'use strict';var Sequelize=require(_0x27b4('0x0'));module['exports']={'name':{'type':Sequelize[_0x27b4('0x1')],'unique':_0x27b4('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x27b4('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x27b4('0x4')](_0x27b4('0x5'),'beepall','roundrobin')}};
\ No newline at end of file
+var _0x4146=['sequelize','exports','STRING','name','INTEGER','beepall'];(function(_0x2a415b,_0x462501){var _0x1d9847=function(_0x4756f2){while(--_0x4756f2){_0x2a415b['push'](_0x2a415b['shift']());}};_0x1d9847(++_0x462501);}(_0x4146,0x8a));var _0x6414=function(_0x414825,_0x7b33cd){_0x414825=_0x414825-0x0;var _0x3568b1=_0x4146[_0x414825];return _0x3568b1;};'use strict';var Sequelize=require(_0x6414('0x0'));module[_0x6414('0x1')]={'name':{'type':Sequelize[_0x6414('0x2')],'unique':_0x6414('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x6414('0x2')]},'timeout':{'type':Sequelize[_0x6414('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM']('rrmemory',_0x6414('0x5'),'roundrobin')}};
\ No newline at end of file
index 05e9b1d..900db4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8cec=['squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','end','status','undefined','limit','offset','count','set','Content-Range','json','apply','reject','save','then','get','UserProfileResource','destroy','error','name','send','map','MailQueue','rawAttributes','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','merge','type','options','includeAll','include','findAll','rows','params','catch','create','body','user','role','UserProfileSection','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','getMembers','UserMailQueue','order','pick','filter','User','findAndCountAll','UserId','agent','mailPause','updatedAt','format','%s/%s','getTeams','addTeams','ids','Team','Agents','voicePause','interface','flatMap','sequelize','transaction','each','findOrCreate','forEach','emit','userMailQueue:save','removeTeams','select','field','tq.TeamId','from','team_has_mail_queues','join','user_has_teams','MailQueueId\x20=\x20?','clone','push','QueryTypes','SELECT','every','TeamId','all','union','compact','isEmpty','removeAgents','userMailQueue:remove','addAgents','isArray','getAgents','eml-format','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash'];(function(_0x667081,_0x1d02b8){var _0x1c1e88=function(_0x4231c2){while(--_0x4231c2){_0x667081['push'](_0x667081['shift']());}};_0x1c1e88(++_0x1d02b8);}(_0x8cec,0x104));var _0xc8ce=function(_0x4149dd,_0xc0f8be){_0x4149dd=_0x4149dd-0x0;var _0x44b890=_0x8cec[_0x4149dd];return _0x44b890;};'use strict';var emlformat=require(_0xc8ce('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc8ce('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xc8ce('0x2'));var BPromise=require(_0xc8ce('0x3'));var Mustache=require(_0xc8ce('0x4'));var util=require(_0xc8ce('0x5'));var path=require(_0xc8ce('0x6'));var sox=require(_0xc8ce('0x7'));var csv=require(_0xc8ce('0x8'));var ejs=require(_0xc8ce('0x9'));var fs=require('fs');var fs_extra=require(_0xc8ce('0xa'));var _=require(_0xc8ce('0xb'));var squel=require(_0xc8ce('0xc'));var crypto=require(_0xc8ce('0xd'));var jsforce=require(_0xc8ce('0xe'));var deskjs=require(_0xc8ce('0xf'));var toCsv=require(_0xc8ce('0x8'));var querystring=require(_0xc8ce('0x10'));var Papa=require(_0xc8ce('0x11'));var Redis=require(_0xc8ce('0x12'));var authService=require(_0xc8ce('0x13'));var qs=require(_0xc8ce('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xc8ce('0x15'))(_0xc8ce('0x16'));var utils=require(_0xc8ce('0x17'));var config=require(_0xc8ce('0x18'));var licenseUtil=require(_0xc8ce('0x19'));var db=require(_0xc8ce('0x1a'))['db'];config[_0xc8ce('0x1b')]=_[_0xc8ce('0x1c')](config['redis'],{'host':_0xc8ce('0x1d'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./mailQueue.socket')['register'](socket);function respondWithStatusCode(_0x546459,_0x24c275){_0x24c275=_0x24c275||0xcc;return function(_0x14e005){if(_0x14e005){return _0x546459['sendStatus'](_0x24c275);}return _0x546459['status'](_0x24c275)[_0xc8ce('0x1e')]();};}function respondWithResult(_0x2268f7,_0x228659){_0x228659=_0x228659||0xc8;return function(_0x2ea21b){if(_0x2ea21b){return _0x2268f7[_0xc8ce('0x1f')](_0x228659)['json'](_0x2ea21b);}};}function respondWithFilteredResult(_0x5b3e35,_0x259faf){return function(_0x4afb66){if(_0x4afb66){var _0x5792a0=typeof _0x259faf['offset']===_0xc8ce('0x20')&&typeof _0x259faf[_0xc8ce('0x21')]==='undefined';var _0x450864=_0x4afb66['count'];var _0x5603f5=_0x5792a0?0x0:_0x259faf[_0xc8ce('0x22')];var _0x19ddaa=_0x5792a0?_0x4afb66[_0xc8ce('0x23')]:_0x259faf[_0xc8ce('0x22')]+_0x259faf[_0xc8ce('0x21')];var _0x7baee0;if(_0x19ddaa>=_0x450864){_0x19ddaa=_0x450864;_0x7baee0=0xc8;}else{_0x7baee0=0xce;}_0x5b3e35[_0xc8ce('0x1f')](_0x7baee0);return _0x5b3e35[_0xc8ce('0x24')](_0xc8ce('0x25'),_0x5603f5+'-'+_0x19ddaa+'/'+_0x450864)[_0xc8ce('0x26')](_0x4afb66);}return null;};}function patchUpdates(_0x2ccb60){return function(_0x34dbed){try{jsonpatch[_0xc8ce('0x27')](_0x34dbed,_0x2ccb60,!![]);}catch(_0x405fab){return BPromise[_0xc8ce('0x28')](_0x405fab);}return _0x34dbed[_0xc8ce('0x29')]();};}function saveUpdates(_0x3ca477,_0x711fc0){return function(_0x2f6847){if(_0x2f6847){return _0x2f6847['update'](_0x3ca477)['then'](function(_0x221824){return _0x221824;});}return null;};}function removeEntity(_0x3691b1,_0xe1c50b){return function(_0x5648e8){if(_0x5648e8){return _0x5648e8['destroy']()[_0xc8ce('0x2a')](function(){var _0x4bac49=_0x5648e8[_0xc8ce('0x2b')]({'plain':!![]});var _0x51c9c9='MailQueues';return db[_0xc8ce('0x2c')][_0xc8ce('0x2d')]({'where':{'type':_0x51c9c9,'resourceId':_0x4bac49['id']}})[_0xc8ce('0x2a')](function(){return _0x5648e8;});})[_0xc8ce('0x2a')](function(){_0x3691b1[_0xc8ce('0x1f')](0xcc)[_0xc8ce('0x1e')]();});}};}function handleEntityNotFound(_0xa6530d,_0x3ed015){return function(_0xdf7458){if(!_0xdf7458){_0xa6530d['sendStatus'](0x194);}return _0xdf7458;};}function handleError(_0x3aca53,_0x850a5c){_0x850a5c=_0x850a5c||0x1f4;return function(_0x2ad516){logger[_0xc8ce('0x2e')](_0x2ad516['stack']);if(_0x2ad516[_0xc8ce('0x2f')]){delete _0x2ad516['name'];}_0x3aca53[_0xc8ce('0x1f')](_0x850a5c)[_0xc8ce('0x30')](_0x2ad516);};}exports['index']=function(_0x46c2a9,_0x44ca51){var _0x24b62b={},_0x1979b1={},_0xa2f5f1={'count':0x0,'rows':[]};var _0x3d7ccf=_[_0xc8ce('0x31')](db[_0xc8ce('0x32')][_0xc8ce('0x33')],function(_0x10fec6){return{'name':_0x10fec6['fieldName'],'type':_0x10fec6['type'][_0xc8ce('0x34')]};});_0x1979b1[_0xc8ce('0x35')]=_[_0xc8ce('0x31')](_0x3d7ccf,'name');_0x1979b1[_0xc8ce('0x36')]=_[_0xc8ce('0x37')](_0x46c2a9[_0xc8ce('0x36')]);_0x1979b1[_0xc8ce('0x38')]=_[_0xc8ce('0x39')](_0x1979b1[_0xc8ce('0x35')],_0x1979b1['query']);_0x24b62b['attributes']=_[_0xc8ce('0x39')](_0x1979b1[_0xc8ce('0x35')],qs['fields'](_0x46c2a9[_0xc8ce('0x36')][_0xc8ce('0x3a')]));_0x24b62b[_0xc8ce('0x3b')]=_0x24b62b[_0xc8ce('0x3b')][_0xc8ce('0x3c')]?_0x24b62b[_0xc8ce('0x3b')]:_0x1979b1[_0xc8ce('0x35')];if(!_0x46c2a9[_0xc8ce('0x36')][_0xc8ce('0x3d')](_0xc8ce('0x3e'))){_0x24b62b['limit']=qs[_0xc8ce('0x21')](_0x46c2a9[_0xc8ce('0x36')][_0xc8ce('0x21')]);_0x24b62b[_0xc8ce('0x22')]=qs[_0xc8ce('0x22')](_0x46c2a9[_0xc8ce('0x36')][_0xc8ce('0x22')]);}_0x24b62b['order']=qs[_0xc8ce('0x3f')](_0x46c2a9[_0xc8ce('0x36')][_0xc8ce('0x3f')]);_0x24b62b[_0xc8ce('0x40')]=qs[_0xc8ce('0x38')](_['pick'](_0x46c2a9[_0xc8ce('0x36')],_0x1979b1[_0xc8ce('0x38')]),_0x3d7ccf);if(_0x46c2a9[_0xc8ce('0x36')]['filter']){_0x24b62b['where']=_[_0xc8ce('0x41')](_0x24b62b[_0xc8ce('0x40')],{'$or':_[_0xc8ce('0x31')](_0x3d7ccf,function(_0x37eea7){if(_0x37eea7[_0xc8ce('0x42')]!=='VIRTUAL'){var _0x28cc92={};_0x28cc92[_0x37eea7[_0xc8ce('0x2f')]]={'$like':'%'+_0x46c2a9['query']['filter']+'%'};return _0x28cc92;}})});}_0x24b62b=_[_0xc8ce('0x41')]({},_0x24b62b,_0x46c2a9[_0xc8ce('0x43')]);var _0x264597={'where':_0x24b62b['where']};return db[_0xc8ce('0x32')][_0xc8ce('0x23')](_0x264597)[_0xc8ce('0x2a')](function(_0xfce7b5){_0xa2f5f1[_0xc8ce('0x23')]=_0xfce7b5;if(_0x46c2a9['query'][_0xc8ce('0x44')]){_0x24b62b[_0xc8ce('0x45')]=[{'all':!![]}];}return db['MailQueue'][_0xc8ce('0x46')](_0x24b62b);})[_0xc8ce('0x2a')](function(_0x5f05ea){_0xa2f5f1[_0xc8ce('0x47')]=_0x5f05ea;return _0xa2f5f1;})[_0xc8ce('0x2a')](respondWithFilteredResult(_0x44ca51,_0x24b62b))['catch'](handleError(_0x44ca51,null));};exports['show']=function(_0x250bad,_0x5ce96f){var _0x3bafc1={'raw':!![],'where':{'id':_0x250bad[_0xc8ce('0x48')]['id']}},_0x7d2bd0={};_0x7d2bd0[_0xc8ce('0x35')]=_[_0xc8ce('0x37')](db[_0xc8ce('0x32')][_0xc8ce('0x33')]);_0x7d2bd0[_0xc8ce('0x36')]=_[_0xc8ce('0x37')](_0x250bad[_0xc8ce('0x36')]);_0x7d2bd0[_0xc8ce('0x38')]=_['intersection'](_0x7d2bd0[_0xc8ce('0x35')],_0x7d2bd0[_0xc8ce('0x36')]);_0x3bafc1[_0xc8ce('0x3b')]=_['intersection'](_0x7d2bd0[_0xc8ce('0x35')],qs[_0xc8ce('0x3a')](_0x250bad[_0xc8ce('0x36')][_0xc8ce('0x3a')]));_0x3bafc1['attributes']=_0x3bafc1[_0xc8ce('0x3b')]['length']?_0x3bafc1[_0xc8ce('0x3b')]:_0x7d2bd0['model'];if(_0x250bad[_0xc8ce('0x36')][_0xc8ce('0x44')]){_0x3bafc1[_0xc8ce('0x45')]=[{'all':!![]}];}_0x3bafc1=_['merge']({},_0x3bafc1,_0x250bad['options']);return db['MailQueue']['find'](_0x3bafc1)['then'](handleEntityNotFound(_0x5ce96f,null))[_0xc8ce('0x2a')](respondWithResult(_0x5ce96f,null))[_0xc8ce('0x49')](handleError(_0x5ce96f,null));};exports[_0xc8ce('0x4a')]=function(_0x323b95,_0x488d78){return db[_0xc8ce('0x32')]['create'](_0x323b95[_0xc8ce('0x4b')],{})[_0xc8ce('0x2a')](function(_0x35e625){var _0xb2cce1=_0x323b95[_0xc8ce('0x4c')]['get']({'plain':!![]});if(!_0xb2cce1)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xb2cce1[_0xc8ce('0x4d')]===_0xc8ce('0x4c')){var _0x1dddb2=_0x35e625[_0xc8ce('0x2b')]({'plain':!![]});var _0x120054='MailQueues';return db[_0xc8ce('0x4e')][_0xc8ce('0x4f')]({'where':{'name':_0x120054,'userProfileId':_0xb2cce1[_0xc8ce('0x50')]},'raw':!![]})[_0xc8ce('0x2a')](function(_0x2cbcc4){if(_0x2cbcc4&&_0x2cbcc4['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x1dddb2[_0xc8ce('0x2f')],'resourceId':_0x1dddb2['id'],'type':_0x2cbcc4[_0xc8ce('0x2f')],'sectionId':_0x2cbcc4['id']},{})[_0xc8ce('0x2a')](function(){return _0x35e625;});}else{return _0x35e625;}})[_0xc8ce('0x49')](function(_0x4e0690){logger[_0xc8ce('0x2e')](_0xc8ce('0x51'),_0x4e0690);throw _0x4e0690;});}return _0x35e625;})[_0xc8ce('0x2a')](respondWithResult(_0x488d78,0xc9))['catch'](handleError(_0x488d78,null));};exports[_0xc8ce('0x52')]=function(_0xb18f5,_0x3a88b3){if(_0xb18f5[_0xc8ce('0x4b')]['id']){delete _0xb18f5[_0xc8ce('0x4b')]['id'];}return db[_0xc8ce('0x32')][_0xc8ce('0x4f')]({'where':{'id':_0xb18f5['params']['id']}})[_0xc8ce('0x2a')](handleEntityNotFound(_0x3a88b3,null))[_0xc8ce('0x2a')](saveUpdates(_0xb18f5[_0xc8ce('0x4b')],null))['then'](respondWithResult(_0x3a88b3,null))['catch'](handleError(_0x3a88b3,null));};exports[_0xc8ce('0x2d')]=function(_0x583b29,_0x8be81){return db[_0xc8ce('0x32')]['find']({'where':{'id':_0x583b29[_0xc8ce('0x48')]['id']}})[_0xc8ce('0x2a')](handleEntityNotFound(_0x8be81,null))['then'](removeEntity(_0x8be81,null))[_0xc8ce('0x49')](handleError(_0x8be81,null));};exports['describe']=function(_0x5b2f39,_0x55eb67){return db[_0xc8ce('0x32')][_0xc8ce('0x53')]()['then'](respondWithResult(_0x55eb67,null))[_0xc8ce('0x49')](handleError(_0x55eb67,null));};exports[_0xc8ce('0x54')]=function(_0x1b6733,_0x13a785,_0x36f02f){var _0x5abeac={'raw':!![],'where':{}},_0x170a3f={},_0x30f4d2;return db[_0xc8ce('0x32')]['findOne']({'where':{'id':_0x1b6733['params']['id']}})[_0xc8ce('0x2a')](handleEntityNotFound(_0x13a785,null))[_0xc8ce('0x2a')](function(_0x3b2498){if(_0x3b2498){_0x30f4d2=_0x3b2498[_0xc8ce('0x2b')]({'plain':!![]});_0x170a3f[_0xc8ce('0x35')]=_[_0xc8ce('0x37')](db[_0xc8ce('0x55')][_0xc8ce('0x33')]);_0x170a3f[_0xc8ce('0x36')]=_[_0xc8ce('0x37')](_0x1b6733[_0xc8ce('0x36')]);_0x170a3f[_0xc8ce('0x38')]=_[_0xc8ce('0x39')](_0x170a3f[_0xc8ce('0x35')],_0x170a3f['query']);_0x5abeac[_0xc8ce('0x3b')]=_[_0xc8ce('0x39')](_0x170a3f[_0xc8ce('0x35')],qs[_0xc8ce('0x3a')](_0x1b6733['query'][_0xc8ce('0x3a')]));_0x5abeac[_0xc8ce('0x3b')]=_0x5abeac[_0xc8ce('0x3b')]['length']?_0x5abeac['attributes']:_0x170a3f[_0xc8ce('0x35')];if(!_0x1b6733[_0xc8ce('0x36')]['hasOwnProperty'](_0xc8ce('0x3e'))){_0x5abeac[_0xc8ce('0x21')]=qs[_0xc8ce('0x21')](_0x1b6733[_0xc8ce('0x36')][_0xc8ce('0x21')]);_0x5abeac[_0xc8ce('0x22')]=qs['offset'](_0x1b6733[_0xc8ce('0x36')][_0xc8ce('0x22')]);}_0x5abeac[_0xc8ce('0x56')]=qs[_0xc8ce('0x3f')](_0x1b6733[_0xc8ce('0x36')][_0xc8ce('0x3f')]);_0x5abeac[_0xc8ce('0x40')]=qs[_0xc8ce('0x38')](_[_0xc8ce('0x57')](_0x1b6733[_0xc8ce('0x36')],_0x170a3f[_0xc8ce('0x38')]));_0x5abeac[_0xc8ce('0x40')]['MailQueueId']=_0x3b2498['id'];if(_0x1b6733['query'][_0xc8ce('0x58')]){_0x5abeac[_0xc8ce('0x40')]=_[_0xc8ce('0x41')](_0x5abeac[_0xc8ce('0x40')],{'$or':_[_0xc8ce('0x31')](_0x5abeac['attributes'],function(_0x339659){var _0x3b5597={};_0x3b5597[_0x339659]={'$like':'%'+_0x1b6733['query']['filter']+'%'};return _0x3b5597;})});}_0x5abeac=_['merge']({},_0x5abeac,_0x1b6733[_0xc8ce('0x43')]);return db[_0xc8ce('0x55')]['findAll'](_0x5abeac);}})[_0xc8ce('0x2a')](function(_0xd54c1){if(_0xd54c1){return db[_0xc8ce('0x59')][_0xc8ce('0x5a')]({'where':{'id':_[_0xc8ce('0x31')](_0xd54c1,_0xc8ce('0x5b')),'role':_0xc8ce('0x5c')},'attributes':['id',_0xc8ce('0x2f'),_0xc8ce('0x5d'),_0xc8ce('0x5e'),'createdAt']});}})['then'](function(_0xc41195){if(_0xc41195){return{'count':_0xc41195[_0xc8ce('0x23')],'rows':_[_0xc8ce('0x31')](_0xc41195[_0xc8ce('0x47')],function(_0x21a791){return{'membername':_0x21a791[_0xc8ce('0x2f')],'UserId':_0x21a791['id'],'queue_name':_0x30f4d2['name'],'MailQueueId':_0x30f4d2['id'],'interface':util[_0xc8ce('0x5f')](_0xc8ce('0x60'),'SIP',_0x21a791[_0xc8ce('0x2f')]),'penalty':0x0,'paused':_0x21a791[_0xc8ce('0x5d')],'createdAt':_0x21a791['createdAt'],'updatedAt':_0x21a791['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0xc8ce('0x2a')](respondWithFilteredResult(_0x13a785,_0x5abeac))[_0xc8ce('0x49')](handleError(_0x13a785,null));};exports[_0xc8ce('0x61')]=function(_0x50b55d,_0x6b759d,_0x507a20){var _0x140cd7={};var _0x56e079={};var _0x4e5c6d;var _0x4fbf30;return db[_0xc8ce('0x32')]['findOne']({'where':{'id':_0x50b55d[_0xc8ce('0x48')]['id']}})[_0xc8ce('0x2a')](handleEntityNotFound(_0x6b759d,null))['then'](function(_0x1894bb){if(_0x1894bb){_0x4e5c6d=_0x1894bb;_0x56e079['model']=_[_0xc8ce('0x37')](db['Team'][_0xc8ce('0x33')]);_0x56e079[_0xc8ce('0x36')]=_[_0xc8ce('0x37')](_0x50b55d[_0xc8ce('0x36')]);_0x56e079['filters']=_[_0xc8ce('0x39')](_0x56e079[_0xc8ce('0x35')],_0x56e079[_0xc8ce('0x36')]);_0x140cd7[_0xc8ce('0x3b')]=_['intersection'](_0x56e079[_0xc8ce('0x35')],qs[_0xc8ce('0x3a')](_0x50b55d[_0xc8ce('0x36')][_0xc8ce('0x3a')]));_0x140cd7[_0xc8ce('0x3b')]=_0x140cd7[_0xc8ce('0x3b')][_0xc8ce('0x3c')]?_0x140cd7[_0xc8ce('0x3b')]:_0x56e079[_0xc8ce('0x35')];_0x140cd7[_0xc8ce('0x56')]=qs[_0xc8ce('0x3f')](_0x50b55d[_0xc8ce('0x36')][_0xc8ce('0x3f')]);_0x140cd7[_0xc8ce('0x40')]=qs[_0xc8ce('0x38')](_[_0xc8ce('0x57')](_0x50b55d['query'],_0x56e079[_0xc8ce('0x38')]));if(_0x50b55d[_0xc8ce('0x36')][_0xc8ce('0x58')]){_0x140cd7[_0xc8ce('0x40')]=_['merge'](_0x140cd7[_0xc8ce('0x40')],{'$or':_[_0xc8ce('0x31')](_0x140cd7[_0xc8ce('0x3b')],function(_0x1f02ef){var _0x149064={};_0x149064[_0x1f02ef]={'$like':'%'+_0x50b55d[_0xc8ce('0x36')][_0xc8ce('0x58')]+'%'};return _0x149064;})});}_0x140cd7=_[_0xc8ce('0x41')]({},_0x140cd7,_0x50b55d[_0xc8ce('0x43')]);return _0x4e5c6d[_0xc8ce('0x61')](_0x140cd7);}})[_0xc8ce('0x2a')](function(_0x39bac3){if(_0x39bac3){_0x4fbf30=_0x39bac3[_0xc8ce('0x3c')];if(!_0x50b55d[_0xc8ce('0x36')][_0xc8ce('0x3d')](_0xc8ce('0x3e'))){_0x140cd7[_0xc8ce('0x21')]=qs[_0xc8ce('0x21')](_0x50b55d['query']['limit']);_0x140cd7[_0xc8ce('0x22')]=qs[_0xc8ce('0x22')](_0x50b55d[_0xc8ce('0x36')][_0xc8ce('0x22')]);}return _0x4e5c6d['getTeams'](_0x140cd7);}})['then'](function(_0x51dda2){if(_0x51dda2){return _0x51dda2?{'count':_0x4fbf30,'rows':_0x51dda2}:null;}})['then'](respondWithResult(_0x6b759d,null))[_0xc8ce('0x49')](handleError(_0x6b759d,null));};exports[_0xc8ce('0x62')]=function(_0x2bfc34,_0x21e0da,_0x2c68e8){var _0x2802e1=_0x2bfc34[_0xc8ce('0x4b')][_0xc8ce('0x63')];return db[_0xc8ce('0x64')][_0xc8ce('0x46')]({'where':{'id':_0x2802e1},'attributes':['id'],'include':[{'model':db[_0xc8ce('0x59')],'as':_0xc8ce('0x65'),'attributes':['id',_0xc8ce('0x2f'),'online',_0xc8ce('0x66'),_0xc8ce('0x67')],'raw':!![]}]})['then'](function(_0x2c4229){if(_0x2c4229){var _0xec18db=_[_0xc8ce('0x68')](_0x2c4229,function(_0x34a133){var _0xa56a43=_0x34a133['get']({'plain':!![]});return _0xa56a43['Agents'];});return db[_0xc8ce('0x32')][_0xc8ce('0x4f')]({'where':{'id':_0x2bfc34[_0xc8ce('0x48')]['id']}})[_0xc8ce('0x2a')](function(_0x488385){return db[_0xc8ce('0x69')][_0xc8ce('0x6a')](function(_0x40a1f3){return _0x488385[_0xc8ce('0x62')](_0x2802e1,{'transaction':_0x40a1f3})[_0xc8ce('0x2a')](function(){return BPromise[_0xc8ce('0x6b')](_0xec18db,function(_0x4610be){return db[_0xc8ce('0x55')][_0xc8ce('0x6c')]({'where':{'UserId':_0x4610be['id'],'MailQueueId':_0x2bfc34['params']['id']},'transaction':_0x40a1f3});});})[_0xc8ce('0x2a')](function(){_0xec18db[_0xc8ce('0x6d')](function(_0x2d4006){socket[_0xc8ce('0x6e')](_0xc8ce('0x6f'),{'UserId':_0x2d4006['id'],'MailQueueId':_0x488385['id']});});});});});}})[_0xc8ce('0x2a')](respondWithStatusCode(_0x21e0da,null))[_0xc8ce('0x49')](handleError(_0x21e0da,null));};exports[_0xc8ce('0x70')]=function(_0x1f4cc8,_0x8c49f0,_0x1b3089){return db[_0xc8ce('0x64')][_0xc8ce('0x46')]({'where':{'id':_0x1f4cc8['query']['ids']},'attributes':['id'],'include':[{'model':db[_0xc8ce('0x59')],'as':_0xc8ce('0x65'),'attributes':['id'],'raw':!![]}]})[_0xc8ce('0x2a')](handleEntityNotFound(_0x8c49f0,null))[_0xc8ce('0x2a')](function(_0x563824){var _0x777197=_[_0xc8ce('0x31')](_0x563824,'id');var _0x4ee2d0=[];var _0x5a5029=[];var _0x3327f9=squel[_0xc8ce('0x71')]();_0x3327f9[_0xc8ce('0x72')](_0xc8ce('0x73'))[_0xc8ce('0x74')](_0xc8ce('0x75'),'tq')[_0xc8ce('0x76')](_0xc8ce('0x77'),'ut','ut.TeamId\x20=\x20tq.TeamId')['where'](_0xc8ce('0x78'),_0x1f4cc8[_0xc8ce('0x48')]['id']);for(var _0x42cd18=0x0;_0x42cd18<_0x563824['length'];_0x42cd18+=0x1){let _0x43caa0=_0x563824[_0x42cd18];for(var _0x16b252=0x0;_0x16b252<_0x43caa0[_0xc8ce('0x65')][_0xc8ce('0x3c')];_0x16b252+=0x1){let _0x424e4f=_0x43caa0['Agents'][_0x16b252];var _0x3f681b=_0x3327f9[_0xc8ce('0x79')]();_0x3f681b[_0xc8ce('0x40')]('ut.UserId\x20=\x20?',_0x424e4f['id']);_0x5a5029[_0xc8ce('0x7a')](db[_0xc8ce('0x69')]['query'](_0x3f681b['toString'](),{'type':db[_0xc8ce('0x69')][_0xc8ce('0x7b')][_0xc8ce('0x7c')]})[_0xc8ce('0x2a')](function(_0x5f0752){if(_0x5f0752[_0xc8ce('0x3c')]===0x1){return _0x424e4f['id'];}else{var _0x2b9537=_[_0xc8ce('0x7d')](_[_0xc8ce('0x31')](_0x5f0752,_0xc8ce('0x7e')),function(_0x46b09f){return _['includes'](_0x777197,_0x46b09f);});if(_0x2b9537){return _0x424e4f['id'];}}}));}}return BPromise[_0xc8ce('0x7f')](_0x5a5029)[_0xc8ce('0x2a')](function(_0x35de64){_0x4ee2d0=_(_0x4ee2d0)[_0xc8ce('0x80')](_0x35de64)[_0xc8ce('0x81')]()['value']();return db[_0xc8ce('0x32')][_0xc8ce('0x4f')]({'where':{'id':_0x1f4cc8[_0xc8ce('0x48')]['id']}})[_0xc8ce('0x2a')](function(_0x3cfa44){return db[_0xc8ce('0x69')][_0xc8ce('0x6a')](function(_0x5215e5){return _0x3cfa44[_0xc8ce('0x70')](_0x1f4cc8[_0xc8ce('0x36')][_0xc8ce('0x63')],{'transaction':_0x5215e5})[_0xc8ce('0x2a')](function(){if(!_[_0xc8ce('0x82')](_0x4ee2d0)){return _0x3cfa44[_0xc8ce('0x83')](_0x4ee2d0,{'transaction':_0x5215e5});}})['then'](function(){_0x4ee2d0[_0xc8ce('0x6d')](function(_0x20a18c){socket[_0xc8ce('0x6e')](_0xc8ce('0x84'),{'UserId':_0x20a18c,'MailQueueId':_0x3cfa44['id']});});});});});});})[_0xc8ce('0x2a')](respondWithStatusCode(_0x8c49f0,null))['catch'](handleError(_0x8c49f0,null));};exports[_0xc8ce('0x85')]=function(_0x48fd8e,_0x331fd9,_0x547263){return db['MailQueue'][_0xc8ce('0x4f')]({'where':{'id':_0x48fd8e[_0xc8ce('0x48')]['id']}})[_0xc8ce('0x2a')](handleEntityNotFound(_0x331fd9,null))['then'](function(_0x311cdd){if(_0x311cdd){return _0x311cdd['addAgents'](_0x48fd8e[_0xc8ce('0x4b')][_0xc8ce('0x63')],_['omit'](_0x48fd8e[_0xc8ce('0x4b')],[_0xc8ce('0x63'),'id'])||{})['spread'](function(_0x223baf){for(var _0x45bd6b=0x0;_0x45bd6b<_0x48fd8e['body']['ids'][_0xc8ce('0x3c')];_0x45bd6b+=0x1){socket[_0xc8ce('0x6e')](_0xc8ce('0x6f'),{'UserId':Number(_0x48fd8e['body'][_0xc8ce('0x63')][_0x45bd6b]),'MailQueueId':Number(_0x48fd8e[_0xc8ce('0x48')]['id'])});}return _0x223baf;});}})[_0xc8ce('0x2a')](respondWithResult(_0x331fd9,null))[_0xc8ce('0x49')](handleError(_0x331fd9,null));};exports['removeAgents']=function(_0x4b9de2,_0x11709c,_0x4711d5){return db['MailQueue'][_0xc8ce('0x4f')]({'where':{'id':_0x4b9de2['params']['id']}})[_0xc8ce('0x2a')](handleEntityNotFound(_0x11709c,null))[_0xc8ce('0x2a')](function(_0x52c843){if(_0x52c843){return _0x52c843[_0xc8ce('0x83')](_0x4b9de2[_0xc8ce('0x36')][_0xc8ce('0x63')])[_0xc8ce('0x2a')](function(){if(_[_0xc8ce('0x86')](_0x4b9de2[_0xc8ce('0x36')][_0xc8ce('0x63')])){for(var _0x437a1e=0x0;_0x437a1e<_0x4b9de2[_0xc8ce('0x36')][_0xc8ce('0x63')]['length'];_0x437a1e+=0x1){socket['emit']('userMailQueue:remove',{'UserId':Number(_0x4b9de2[_0xc8ce('0x36')]['ids'][_0x437a1e]),'MailQueueId':Number(_0x4b9de2[_0xc8ce('0x48')]['id'])});}}else{socket[_0xc8ce('0x6e')](_0xc8ce('0x84'),{'UserId':Number(_0x4b9de2[_0xc8ce('0x36')][_0xc8ce('0x63')]),'MailQueueId':Number(_0x4b9de2[_0xc8ce('0x48')]['id'])});}});}})['then'](respondWithStatusCode(_0x11709c,null))[_0xc8ce('0x49')](handleError(_0x11709c,null));};exports[_0xc8ce('0x87')]=function(_0x21cfb7,_0x342968,_0x3ba5d4){var _0x14e6a4={};var _0x457b53={};var _0x35fa19;var _0x2a7b3b;return db[_0xc8ce('0x32')]['findOne']({'where':{'id':_0x21cfb7['params']['id']}})[_0xc8ce('0x2a')](handleEntityNotFound(_0x342968,null))[_0xc8ce('0x2a')](function(_0x1889bc){if(_0x1889bc){_0x35fa19=_0x1889bc;_0x457b53[_0xc8ce('0x35')]=_[_0xc8ce('0x37')](db[_0xc8ce('0x59')]['rawAttributes']);_0x457b53[_0xc8ce('0x36')]=_['keys'](_0x21cfb7[_0xc8ce('0x36')]);_0x457b53[_0xc8ce('0x38')]=_[_0xc8ce('0x39')](_0x457b53['model'],_0x457b53[_0xc8ce('0x36')]);_0x14e6a4[_0xc8ce('0x3b')]=_[_0xc8ce('0x39')](_0x457b53[_0xc8ce('0x35')],qs[_0xc8ce('0x3a')](_0x21cfb7[_0xc8ce('0x36')][_0xc8ce('0x3a')]));_0x14e6a4[_0xc8ce('0x3b')]=_0x14e6a4[_0xc8ce('0x3b')][_0xc8ce('0x3c')]?_0x14e6a4[_0xc8ce('0x3b')]:_0x457b53[_0xc8ce('0x35')];_0x14e6a4[_0xc8ce('0x56')]=qs[_0xc8ce('0x3f')](_0x21cfb7['query'][_0xc8ce('0x3f')]);_0x14e6a4[_0xc8ce('0x40')]=qs[_0xc8ce('0x38')](_[_0xc8ce('0x57')](_0x21cfb7[_0xc8ce('0x36')],_0x457b53[_0xc8ce('0x38')]));if(_0x21cfb7['query'][_0xc8ce('0x58')]){_0x14e6a4[_0xc8ce('0x40')]=_[_0xc8ce('0x41')](_0x14e6a4['where'],{'$or':_[_0xc8ce('0x31')](_0x14e6a4[_0xc8ce('0x3b')],function(_0x27bf20){var _0x5e1d6a={};_0x5e1d6a[_0x27bf20]={'$like':'%'+_0x21cfb7[_0xc8ce('0x36')][_0xc8ce('0x58')]+'%'};return _0x5e1d6a;})});}_0x14e6a4=_[_0xc8ce('0x41')]({},_0x14e6a4,_0x21cfb7[_0xc8ce('0x43')]);return _0x35fa19[_0xc8ce('0x87')](_0x14e6a4);}})['then'](function(_0x5dd4f8){if(_0x5dd4f8){_0x2a7b3b=_0x5dd4f8[_0xc8ce('0x3c')];if(!_0x21cfb7[_0xc8ce('0x36')][_0xc8ce('0x3d')](_0xc8ce('0x3e'))){_0x14e6a4[_0xc8ce('0x21')]=qs[_0xc8ce('0x21')](_0x21cfb7[_0xc8ce('0x36')][_0xc8ce('0x21')]);_0x14e6a4[_0xc8ce('0x22')]=qs[_0xc8ce('0x22')](_0x21cfb7[_0xc8ce('0x36')]['offset']);}return _0x35fa19[_0xc8ce('0x87')](_0x14e6a4);}})[_0xc8ce('0x2a')](function(_0xe4c2c1){if(_0xe4c2c1){return _0xe4c2c1?{'count':_0x2a7b3b,'rows':_0xe4c2c1}:null;}})[_0xc8ce('0x2a')](respondWithResult(_0x342968,null))['catch'](handleError(_0x342968,null));};
\ No newline at end of file
+var _0x5fc7=['Team','addTeams','ids','Agents','voicePause','interface','flatMap','sequelize','transaction','each','forEach','select','field','tq.TeamId','from','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','MailQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','includes','all','union','compact','value','removeTeams','isEmpty','removeAgents','userMailQueue:remove','addAgents','omit','emit','userMailQueue:save','isArray','getAgents','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/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','./mailQueue.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','then','UserProfileResource','destroy','error','name','send','map','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','merge','options','MailQueue','includeAll','findAll','rows','catch','show','params','include','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','MailQueues','UserProfileSection','find','userProfileId','autoAssociation','update','describe','getMembers','findOne','hasOwnProperty','pick','UserMailQueue','User','findAndCountAll','UserId','agent','mailPause','updatedAt','createdAt','format','%s/%s','getTeams'];(function(_0x14e202,_0x4bcff8){var _0x26f66e=function(_0x5ce60c){while(--_0x5ce60c){_0x14e202['push'](_0x14e202['shift']());}};_0x26f66e(++_0x4bcff8);}(_0x5fc7,0x1e1));var _0x75fc=function(_0x264b9b,_0xa1181e){_0x264b9b=_0x264b9b-0x0;var _0x4c7a0e=_0x5fc7[_0x264b9b];return _0x4c7a0e;};'use strict';var emlformat=require(_0x75fc('0x0'));var rimraf=require(_0x75fc('0x1'));var zipdir=require(_0x75fc('0x2'));var jsonpatch=require(_0x75fc('0x3'));var rp=require(_0x75fc('0x4'));var moment=require(_0x75fc('0x5'));var BPromise=require(_0x75fc('0x6'));var Mustache=require(_0x75fc('0x7'));var util=require(_0x75fc('0x8'));var path=require(_0x75fc('0x9'));var sox=require(_0x75fc('0xa'));var csv=require(_0x75fc('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x75fc('0xc'));var _=require(_0x75fc('0xd'));var squel=require(_0x75fc('0xe'));var crypto=require(_0x75fc('0xf'));var jsforce=require(_0x75fc('0x10'));var deskjs=require(_0x75fc('0x11'));var toCsv=require(_0x75fc('0xb'));var querystring=require(_0x75fc('0x12'));var Papa=require(_0x75fc('0x13'));var Redis=require(_0x75fc('0x14'));var authService=require('../../components/auth/service');var qs=require(_0x75fc('0x15'));var as=require(_0x75fc('0x16'));var hardwareService=require(_0x75fc('0x17'));var logger=require(_0x75fc('0x18'))('api');var utils=require(_0x75fc('0x19'));var config=require(_0x75fc('0x1a'));var licenseUtil=require(_0x75fc('0x1b'));var db=require(_0x75fc('0x1c'))['db'];config[_0x75fc('0x1d')]=_[_0x75fc('0x1e')](config[_0x75fc('0x1d')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x75fc('0x1f'))[_0x75fc('0x20')](socket);function respondWithStatusCode(_0x2e073b,_0x2cb4ed){_0x2cb4ed=_0x2cb4ed||0xcc;return function(_0x2a8725){if(_0x2a8725){return _0x2e073b[_0x75fc('0x21')](_0x2cb4ed);}return _0x2e073b[_0x75fc('0x22')](_0x2cb4ed)[_0x75fc('0x23')]();};}function respondWithResult(_0x53f23d,_0xf3dec8){_0xf3dec8=_0xf3dec8||0xc8;return function(_0x382201){if(_0x382201){return _0x53f23d['status'](_0xf3dec8)[_0x75fc('0x24')](_0x382201);}};}function respondWithFilteredResult(_0x9a1359,_0x5a3311){return function(_0x5cdf1e){if(_0x5cdf1e){var _0x25b52b=typeof _0x5a3311[_0x75fc('0x25')]===_0x75fc('0x26')&&typeof _0x5a3311[_0x75fc('0x27')]===_0x75fc('0x26');var _0x47123f=_0x5cdf1e['count'];var _0x3b7d6c=_0x25b52b?0x0:_0x5a3311['offset'];var _0xb47e2c=_0x25b52b?_0x5cdf1e[_0x75fc('0x28')]:_0x5a3311[_0x75fc('0x25')]+_0x5a3311[_0x75fc('0x27')];var _0x518945;if(_0xb47e2c>=_0x47123f){_0xb47e2c=_0x47123f;_0x518945=0xc8;}else{_0x518945=0xce;}_0x9a1359[_0x75fc('0x22')](_0x518945);return _0x9a1359[_0x75fc('0x29')]('Content-Range',_0x3b7d6c+'-'+_0xb47e2c+'/'+_0x47123f)[_0x75fc('0x24')](_0x5cdf1e);}return null;};}function patchUpdates(_0x3ed9d5){return function(_0x4d5346){try{jsonpatch[_0x75fc('0x2a')](_0x4d5346,_0x3ed9d5,!![]);}catch(_0x5a79e0){return BPromise[_0x75fc('0x2b')](_0x5a79e0);}return _0x4d5346[_0x75fc('0x2c')]();};}function saveUpdates(_0x54b684,_0xd8b8e1){return function(_0x151046){if(_0x151046){return _0x151046['update'](_0x54b684)[_0x75fc('0x2d')](function(_0x2418be){return _0x2418be;});}return null;};}function removeEntity(_0x53fcd2,_0x5774bb){return function(_0x10a59a){if(_0x10a59a){return _0x10a59a['destroy']()[_0x75fc('0x2d')](function(){var _0x4268ed=_0x10a59a['get']({'plain':!![]});var _0x56a7a4='MailQueues';return db[_0x75fc('0x2e')][_0x75fc('0x2f')]({'where':{'type':_0x56a7a4,'resourceId':_0x4268ed['id']}})[_0x75fc('0x2d')](function(){return _0x10a59a;});})[_0x75fc('0x2d')](function(){_0x53fcd2[_0x75fc('0x22')](0xcc)[_0x75fc('0x23')]();});}};}function handleEntityNotFound(_0x337058,_0x54bcd5){return function(_0x23aa27){if(!_0x23aa27){_0x337058[_0x75fc('0x21')](0x194);}return _0x23aa27;};}function handleError(_0x17b0c0,_0x1be47b){_0x1be47b=_0x1be47b||0x1f4;return function(_0x5c8adb){logger[_0x75fc('0x30')](_0x5c8adb['stack']);if(_0x5c8adb[_0x75fc('0x31')]){delete _0x5c8adb[_0x75fc('0x31')];}_0x17b0c0[_0x75fc('0x22')](_0x1be47b)[_0x75fc('0x32')](_0x5c8adb);};}exports['index']=function(_0x26fdf0,_0x4d5981){var _0xaddfc9={},_0x2cdd21={},_0x5e4cdb={'count':0x0,'rows':[]};var _0x1131d5=_[_0x75fc('0x33')](db['MailQueue'][_0x75fc('0x34')],function(_0xdeacca){return{'name':_0xdeacca[_0x75fc('0x35')],'type':_0xdeacca[_0x75fc('0x36')][_0x75fc('0x37')]};});_0x2cdd21[_0x75fc('0x38')]=_[_0x75fc('0x33')](_0x1131d5,_0x75fc('0x31'));_0x2cdd21['query']=_[_0x75fc('0x39')](_0x26fdf0[_0x75fc('0x3a')]);_0x2cdd21[_0x75fc('0x3b')]=_[_0x75fc('0x3c')](_0x2cdd21[_0x75fc('0x38')],_0x2cdd21[_0x75fc('0x3a')]);_0xaddfc9[_0x75fc('0x3d')]=_[_0x75fc('0x3c')](_0x2cdd21[_0x75fc('0x38')],qs[_0x75fc('0x3e')](_0x26fdf0[_0x75fc('0x3a')][_0x75fc('0x3e')]));_0xaddfc9[_0x75fc('0x3d')]=_0xaddfc9['attributes'][_0x75fc('0x3f')]?_0xaddfc9[_0x75fc('0x3d')]:_0x2cdd21[_0x75fc('0x38')];if(!_0x26fdf0[_0x75fc('0x3a')]['hasOwnProperty'](_0x75fc('0x40'))){_0xaddfc9[_0x75fc('0x27')]=qs[_0x75fc('0x27')](_0x26fdf0[_0x75fc('0x3a')][_0x75fc('0x27')]);_0xaddfc9[_0x75fc('0x25')]=qs[_0x75fc('0x25')](_0x26fdf0[_0x75fc('0x3a')]['offset']);}_0xaddfc9[_0x75fc('0x41')]=qs[_0x75fc('0x42')](_0x26fdf0[_0x75fc('0x3a')][_0x75fc('0x42')]);_0xaddfc9[_0x75fc('0x43')]=qs[_0x75fc('0x3b')](_['pick'](_0x26fdf0[_0x75fc('0x3a')],_0x2cdd21[_0x75fc('0x3b')]),_0x1131d5);if(_0x26fdf0['query'][_0x75fc('0x44')]){_0xaddfc9[_0x75fc('0x43')]=_[_0x75fc('0x45')](_0xaddfc9[_0x75fc('0x43')],{'$or':_[_0x75fc('0x33')](_0x1131d5,function(_0x5736e8){if(_0x5736e8[_0x75fc('0x36')]!=='VIRTUAL'){var _0x42c3ae={};_0x42c3ae[_0x5736e8[_0x75fc('0x31')]]={'$like':'%'+_0x26fdf0[_0x75fc('0x3a')][_0x75fc('0x44')]+'%'};return _0x42c3ae;}})});}_0xaddfc9=_[_0x75fc('0x45')]({},_0xaddfc9,_0x26fdf0[_0x75fc('0x46')]);var _0x23df91={'where':_0xaddfc9[_0x75fc('0x43')]};return db[_0x75fc('0x47')]['count'](_0x23df91)[_0x75fc('0x2d')](function(_0x3e8ec6){_0x5e4cdb[_0x75fc('0x28')]=_0x3e8ec6;if(_0x26fdf0[_0x75fc('0x3a')][_0x75fc('0x48')]){_0xaddfc9['include']=[{'all':!![]}];}return db[_0x75fc('0x47')][_0x75fc('0x49')](_0xaddfc9);})[_0x75fc('0x2d')](function(_0x58a94e){_0x5e4cdb[_0x75fc('0x4a')]=_0x58a94e;return _0x5e4cdb;})[_0x75fc('0x2d')](respondWithFilteredResult(_0x4d5981,_0xaddfc9))[_0x75fc('0x4b')](handleError(_0x4d5981,null));};exports[_0x75fc('0x4c')]=function(_0x387f33,_0x2fcd4b){var _0x3a2f92={'raw':!![],'where':{'id':_0x387f33[_0x75fc('0x4d')]['id']}},_0x592211={};_0x592211[_0x75fc('0x38')]=_['keys'](db[_0x75fc('0x47')][_0x75fc('0x34')]);_0x592211[_0x75fc('0x3a')]=_['keys'](_0x387f33[_0x75fc('0x3a')]);_0x592211['filters']=_['intersection'](_0x592211['model'],_0x592211[_0x75fc('0x3a')]);_0x3a2f92[_0x75fc('0x3d')]=_[_0x75fc('0x3c')](_0x592211['model'],qs[_0x75fc('0x3e')](_0x387f33['query'][_0x75fc('0x3e')]));_0x3a2f92[_0x75fc('0x3d')]=_0x3a2f92[_0x75fc('0x3d')][_0x75fc('0x3f')]?_0x3a2f92['attributes']:_0x592211[_0x75fc('0x38')];if(_0x387f33[_0x75fc('0x3a')][_0x75fc('0x48')]){_0x3a2f92[_0x75fc('0x4e')]=[{'all':!![]}];}_0x3a2f92=_[_0x75fc('0x45')]({},_0x3a2f92,_0x387f33[_0x75fc('0x46')]);return db[_0x75fc('0x47')]['find'](_0x3a2f92)[_0x75fc('0x2d')](handleEntityNotFound(_0x2fcd4b,null))['then'](respondWithResult(_0x2fcd4b,null))[_0x75fc('0x4b')](handleError(_0x2fcd4b,null));};exports[_0x75fc('0x4f')]=function(_0x1da347,_0x2bff37){return db[_0x75fc('0x47')][_0x75fc('0x4f')](_0x1da347[_0x75fc('0x50')],{})[_0x75fc('0x2d')](function(_0x11eade){var _0x55af83=_0x1da347[_0x75fc('0x51')][_0x75fc('0x52')]({'plain':!![]});if(!_0x55af83)throw new Error(_0x75fc('0x53'));if(_0x55af83[_0x75fc('0x54')]==='user'){var _0x4c4082=_0x11eade[_0x75fc('0x52')]({'plain':!![]});var _0x491e7c=_0x75fc('0x55');return db[_0x75fc('0x56')][_0x75fc('0x57')]({'where':{'name':_0x491e7c,'userProfileId':_0x55af83[_0x75fc('0x58')]},'raw':!![]})[_0x75fc('0x2d')](function(_0xee6e51){if(_0xee6e51&&_0xee6e51[_0x75fc('0x59')]===0x0){return db[_0x75fc('0x2e')][_0x75fc('0x4f')]({'name':_0x4c4082[_0x75fc('0x31')],'resourceId':_0x4c4082['id'],'type':_0xee6e51['name'],'sectionId':_0xee6e51['id']},{})[_0x75fc('0x2d')](function(){return _0x11eade;});}else{return _0x11eade;}})[_0x75fc('0x4b')](function(_0x1518bf){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1518bf);throw _0x1518bf;});}return _0x11eade;})[_0x75fc('0x2d')](respondWithResult(_0x2bff37,0xc9))[_0x75fc('0x4b')](handleError(_0x2bff37,null));};exports[_0x75fc('0x5a')]=function(_0x7e65e1,_0x4f6d63){if(_0x7e65e1[_0x75fc('0x50')]['id']){delete _0x7e65e1[_0x75fc('0x50')]['id'];}return db['MailQueue'][_0x75fc('0x57')]({'where':{'id':_0x7e65e1['params']['id']}})[_0x75fc('0x2d')](handleEntityNotFound(_0x4f6d63,null))[_0x75fc('0x2d')](saveUpdates(_0x7e65e1[_0x75fc('0x50')],null))['then'](respondWithResult(_0x4f6d63,null))[_0x75fc('0x4b')](handleError(_0x4f6d63,null));};exports[_0x75fc('0x2f')]=function(_0x3c5e96,_0x3c01c0){return db[_0x75fc('0x47')][_0x75fc('0x57')]({'where':{'id':_0x3c5e96[_0x75fc('0x4d')]['id']}})[_0x75fc('0x2d')](handleEntityNotFound(_0x3c01c0,null))[_0x75fc('0x2d')](removeEntity(_0x3c01c0,null))['catch'](handleError(_0x3c01c0,null));};exports['describe']=function(_0x40ce47,_0x5f0717){return db[_0x75fc('0x47')][_0x75fc('0x5b')]()['then'](respondWithResult(_0x5f0717,null))[_0x75fc('0x4b')](handleError(_0x5f0717,null));};exports[_0x75fc('0x5c')]=function(_0x5b749b,_0x10fcb3,_0x3217f4){var _0x441e02={'raw':!![],'where':{}},_0x4f1ace={},_0x2eb4a7;return db[_0x75fc('0x47')][_0x75fc('0x5d')]({'where':{'id':_0x5b749b[_0x75fc('0x4d')]['id']}})[_0x75fc('0x2d')](handleEntityNotFound(_0x10fcb3,null))[_0x75fc('0x2d')](function(_0x4709ca){if(_0x4709ca){_0x2eb4a7=_0x4709ca['get']({'plain':!![]});_0x4f1ace[_0x75fc('0x38')]=_['keys'](db['UserMailQueue']['rawAttributes']);_0x4f1ace[_0x75fc('0x3a')]=_[_0x75fc('0x39')](_0x5b749b[_0x75fc('0x3a')]);_0x4f1ace[_0x75fc('0x3b')]=_['intersection'](_0x4f1ace[_0x75fc('0x38')],_0x4f1ace[_0x75fc('0x3a')]);_0x441e02['attributes']=_[_0x75fc('0x3c')](_0x4f1ace[_0x75fc('0x38')],qs['fields'](_0x5b749b[_0x75fc('0x3a')][_0x75fc('0x3e')]));_0x441e02[_0x75fc('0x3d')]=_0x441e02[_0x75fc('0x3d')][_0x75fc('0x3f')]?_0x441e02[_0x75fc('0x3d')]:_0x4f1ace[_0x75fc('0x38')];if(!_0x5b749b[_0x75fc('0x3a')][_0x75fc('0x5e')](_0x75fc('0x40'))){_0x441e02['limit']=qs[_0x75fc('0x27')](_0x5b749b[_0x75fc('0x3a')][_0x75fc('0x27')]);_0x441e02[_0x75fc('0x25')]=qs[_0x75fc('0x25')](_0x5b749b['query'][_0x75fc('0x25')]);}_0x441e02[_0x75fc('0x41')]=qs['sort'](_0x5b749b['query']['sort']);_0x441e02[_0x75fc('0x43')]=qs[_0x75fc('0x3b')](_[_0x75fc('0x5f')](_0x5b749b[_0x75fc('0x3a')],_0x4f1ace[_0x75fc('0x3b')]));_0x441e02[_0x75fc('0x43')]['MailQueueId']=_0x4709ca['id'];if(_0x5b749b['query'][_0x75fc('0x44')]){_0x441e02[_0x75fc('0x43')]=_['merge'](_0x441e02['where'],{'$or':_[_0x75fc('0x33')](_0x441e02[_0x75fc('0x3d')],function(_0x32f71b){var _0x12f4a9={};_0x12f4a9[_0x32f71b]={'$like':'%'+_0x5b749b['query']['filter']+'%'};return _0x12f4a9;})});}_0x441e02=_[_0x75fc('0x45')]({},_0x441e02,_0x5b749b['options']);return db[_0x75fc('0x60')][_0x75fc('0x49')](_0x441e02);}})[_0x75fc('0x2d')](function(_0x4274a3){if(_0x4274a3){return db[_0x75fc('0x61')][_0x75fc('0x62')]({'where':{'id':_[_0x75fc('0x33')](_0x4274a3,_0x75fc('0x63')),'role':_0x75fc('0x64')},'attributes':['id','name',_0x75fc('0x65'),_0x75fc('0x66'),_0x75fc('0x67')]});}})[_0x75fc('0x2d')](function(_0x3d8f1f){if(_0x3d8f1f){return{'count':_0x3d8f1f['count'],'rows':_[_0x75fc('0x33')](_0x3d8f1f['rows'],function(_0x41c38c){return{'membername':_0x41c38c[_0x75fc('0x31')],'UserId':_0x41c38c['id'],'queue_name':_0x2eb4a7[_0x75fc('0x31')],'MailQueueId':_0x2eb4a7['id'],'interface':util[_0x75fc('0x68')](_0x75fc('0x69'),'SIP',_0x41c38c[_0x75fc('0x31')]),'penalty':0x0,'paused':_0x41c38c[_0x75fc('0x65')],'createdAt':_0x41c38c[_0x75fc('0x67')],'updatedAt':_0x41c38c[_0x75fc('0x66')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x75fc('0x2d')](respondWithFilteredResult(_0x10fcb3,_0x441e02))['catch'](handleError(_0x10fcb3,null));};exports[_0x75fc('0x6a')]=function(_0x16d3b3,_0x3a3100,_0x1514ab){var _0x29b8f7={};var _0x1b24ee={};var _0x53f918;var _0x5e8ddf;return db[_0x75fc('0x47')][_0x75fc('0x5d')]({'where':{'id':_0x16d3b3[_0x75fc('0x4d')]['id']}})[_0x75fc('0x2d')](handleEntityNotFound(_0x3a3100,null))[_0x75fc('0x2d')](function(_0x1a2594){if(_0x1a2594){_0x53f918=_0x1a2594;_0x1b24ee[_0x75fc('0x38')]=_[_0x75fc('0x39')](db[_0x75fc('0x6b')]['rawAttributes']);_0x1b24ee[_0x75fc('0x3a')]=_[_0x75fc('0x39')](_0x16d3b3[_0x75fc('0x3a')]);_0x1b24ee['filters']=_['intersection'](_0x1b24ee[_0x75fc('0x38')],_0x1b24ee[_0x75fc('0x3a')]);_0x29b8f7[_0x75fc('0x3d')]=_[_0x75fc('0x3c')](_0x1b24ee[_0x75fc('0x38')],qs[_0x75fc('0x3e')](_0x16d3b3['query'][_0x75fc('0x3e')]));_0x29b8f7[_0x75fc('0x3d')]=_0x29b8f7[_0x75fc('0x3d')][_0x75fc('0x3f')]?_0x29b8f7['attributes']:_0x1b24ee[_0x75fc('0x38')];_0x29b8f7[_0x75fc('0x41')]=qs['sort'](_0x16d3b3[_0x75fc('0x3a')][_0x75fc('0x42')]);_0x29b8f7[_0x75fc('0x43')]=qs[_0x75fc('0x3b')](_[_0x75fc('0x5f')](_0x16d3b3[_0x75fc('0x3a')],_0x1b24ee[_0x75fc('0x3b')]));if(_0x16d3b3['query'][_0x75fc('0x44')]){_0x29b8f7['where']=_['merge'](_0x29b8f7[_0x75fc('0x43')],{'$or':_['map'](_0x29b8f7[_0x75fc('0x3d')],function(_0xeac7a1){var _0x4eb52a={};_0x4eb52a[_0xeac7a1]={'$like':'%'+_0x16d3b3[_0x75fc('0x3a')][_0x75fc('0x44')]+'%'};return _0x4eb52a;})});}_0x29b8f7=_[_0x75fc('0x45')]({},_0x29b8f7,_0x16d3b3['options']);return _0x53f918[_0x75fc('0x6a')](_0x29b8f7);}})[_0x75fc('0x2d')](function(_0x45bb96){if(_0x45bb96){_0x5e8ddf=_0x45bb96[_0x75fc('0x3f')];if(!_0x16d3b3[_0x75fc('0x3a')]['hasOwnProperty']('nolimit')){_0x29b8f7[_0x75fc('0x27')]=qs['limit'](_0x16d3b3[_0x75fc('0x3a')]['limit']);_0x29b8f7[_0x75fc('0x25')]=qs[_0x75fc('0x25')](_0x16d3b3[_0x75fc('0x3a')]['offset']);}return _0x53f918[_0x75fc('0x6a')](_0x29b8f7);}})[_0x75fc('0x2d')](function(_0x2f3ae2){if(_0x2f3ae2){return _0x2f3ae2?{'count':_0x5e8ddf,'rows':_0x2f3ae2}:null;}})[_0x75fc('0x2d')](respondWithResult(_0x3a3100,null))[_0x75fc('0x4b')](handleError(_0x3a3100,null));};exports[_0x75fc('0x6c')]=function(_0x3b07f0,_0x245ae6,_0x147185){var _0x30cb1b=_0x3b07f0[_0x75fc('0x50')][_0x75fc('0x6d')];return db[_0x75fc('0x6b')][_0x75fc('0x49')]({'where':{'id':_0x30cb1b},'attributes':['id'],'include':[{'model':db[_0x75fc('0x61')],'as':_0x75fc('0x6e'),'attributes':['id',_0x75fc('0x31'),'online',_0x75fc('0x6f'),_0x75fc('0x70')],'raw':!![]}]})['then'](function(_0x4e1f1d){if(_0x4e1f1d){var _0x45d640=_[_0x75fc('0x71')](_0x4e1f1d,function(_0x118738){var _0x1267a2=_0x118738[_0x75fc('0x52')]({'plain':!![]});return _0x1267a2[_0x75fc('0x6e')];});return db[_0x75fc('0x47')][_0x75fc('0x57')]({'where':{'id':_0x3b07f0[_0x75fc('0x4d')]['id']}})[_0x75fc('0x2d')](function(_0x3ce96a){return db[_0x75fc('0x72')][_0x75fc('0x73')](function(_0x5bf55b){return _0x3ce96a[_0x75fc('0x6c')](_0x30cb1b,{'transaction':_0x5bf55b})[_0x75fc('0x2d')](function(){return BPromise[_0x75fc('0x74')](_0x45d640,function(_0x6fcb6e){return db[_0x75fc('0x60')]['findOrCreate']({'where':{'UserId':_0x6fcb6e['id'],'MailQueueId':_0x3b07f0[_0x75fc('0x4d')]['id']},'transaction':_0x5bf55b});});})[_0x75fc('0x2d')](function(){_0x45d640[_0x75fc('0x75')](function(_0x5c5300){socket['emit']('userMailQueue:save',{'UserId':_0x5c5300['id'],'MailQueueId':_0x3ce96a['id']});});});});});}})[_0x75fc('0x2d')](respondWithStatusCode(_0x245ae6,null))[_0x75fc('0x4b')](handleError(_0x245ae6,null));};exports['removeTeams']=function(_0x30ddc4,_0x119c25,_0x1ddd4e){return db[_0x75fc('0x6b')]['findAll']({'where':{'id':_0x30ddc4['query'][_0x75fc('0x6d')]},'attributes':['id'],'include':[{'model':db[_0x75fc('0x61')],'as':_0x75fc('0x6e'),'attributes':['id'],'raw':!![]}]})[_0x75fc('0x2d')](handleEntityNotFound(_0x119c25,null))[_0x75fc('0x2d')](function(_0x42c0cd){var _0x17b17e=_[_0x75fc('0x33')](_0x42c0cd,'id');var _0x211526=[];var _0x52a163=[];var _0x548d89=squel[_0x75fc('0x76')]();_0x548d89[_0x75fc('0x77')](_0x75fc('0x78'))[_0x75fc('0x79')]('team_has_mail_queues','tq')[_0x75fc('0x7a')](_0x75fc('0x7b'),'ut',_0x75fc('0x7c'))[_0x75fc('0x43')](_0x75fc('0x7d'),_0x30ddc4['params']['id']);for(var _0x5e19b5=0x0;_0x5e19b5<_0x42c0cd[_0x75fc('0x3f')];_0x5e19b5+=0x1){let _0x535a89=_0x42c0cd[_0x5e19b5];for(var _0x4db6b4=0x0;_0x4db6b4<_0x535a89[_0x75fc('0x6e')]['length'];_0x4db6b4+=0x1){let _0x462108=_0x535a89[_0x75fc('0x6e')][_0x4db6b4];var _0x486ae3=_0x548d89['clone']();_0x486ae3[_0x75fc('0x43')](_0x75fc('0x7e'),_0x462108['id']);_0x52a163[_0x75fc('0x7f')](db[_0x75fc('0x72')][_0x75fc('0x3a')](_0x486ae3[_0x75fc('0x80')](),{'type':db[_0x75fc('0x72')][_0x75fc('0x81')][_0x75fc('0x82')]})['then'](function(_0x1b3588){if(_0x1b3588[_0x75fc('0x3f')]===0x1){return _0x462108['id'];}else{var _0x252401=_[_0x75fc('0x83')](_['map'](_0x1b3588,'TeamId'),function(_0x43b1c3){return _[_0x75fc('0x84')](_0x17b17e,_0x43b1c3);});if(_0x252401){return _0x462108['id'];}}}));}}return BPromise[_0x75fc('0x85')](_0x52a163)[_0x75fc('0x2d')](function(_0x5a339f){_0x211526=_(_0x211526)[_0x75fc('0x86')](_0x5a339f)[_0x75fc('0x87')]()[_0x75fc('0x88')]();return db['MailQueue'][_0x75fc('0x57')]({'where':{'id':_0x30ddc4[_0x75fc('0x4d')]['id']}})['then'](function(_0x31b0da){return db[_0x75fc('0x72')]['transaction'](function(_0x3518d1){return _0x31b0da[_0x75fc('0x89')](_0x30ddc4[_0x75fc('0x3a')][_0x75fc('0x6d')],{'transaction':_0x3518d1})['then'](function(){if(!_[_0x75fc('0x8a')](_0x211526)){return _0x31b0da[_0x75fc('0x8b')](_0x211526,{'transaction':_0x3518d1});}})[_0x75fc('0x2d')](function(){_0x211526[_0x75fc('0x75')](function(_0x494e88){socket['emit'](_0x75fc('0x8c'),{'UserId':_0x494e88,'MailQueueId':_0x31b0da['id']});});});});});});})[_0x75fc('0x2d')](respondWithStatusCode(_0x119c25,null))['catch'](handleError(_0x119c25,null));};exports[_0x75fc('0x8d')]=function(_0x2efc42,_0xe66511,_0x412e84){return db[_0x75fc('0x47')][_0x75fc('0x57')]({'where':{'id':_0x2efc42['params']['id']}})[_0x75fc('0x2d')](handleEntityNotFound(_0xe66511,null))[_0x75fc('0x2d')](function(_0xa5a5d1){if(_0xa5a5d1){return _0xa5a5d1[_0x75fc('0x8d')](_0x2efc42[_0x75fc('0x50')][_0x75fc('0x6d')],_[_0x75fc('0x8e')](_0x2efc42[_0x75fc('0x50')],['ids','id'])||{})['spread'](function(_0x12fca5){for(var _0x50723c=0x0;_0x50723c<_0x2efc42[_0x75fc('0x50')][_0x75fc('0x6d')][_0x75fc('0x3f')];_0x50723c+=0x1){socket[_0x75fc('0x8f')](_0x75fc('0x90'),{'UserId':Number(_0x2efc42[_0x75fc('0x50')][_0x75fc('0x6d')][_0x50723c]),'MailQueueId':Number(_0x2efc42[_0x75fc('0x4d')]['id'])});}return _0x12fca5;});}})[_0x75fc('0x2d')](respondWithResult(_0xe66511,null))[_0x75fc('0x4b')](handleError(_0xe66511,null));};exports[_0x75fc('0x8b')]=function(_0x1a4a8f,_0x259edc,_0x22cf7b){return db[_0x75fc('0x47')][_0x75fc('0x57')]({'where':{'id':_0x1a4a8f[_0x75fc('0x4d')]['id']}})[_0x75fc('0x2d')](handleEntityNotFound(_0x259edc,null))['then'](function(_0x1aa16a){if(_0x1aa16a){return _0x1aa16a[_0x75fc('0x8b')](_0x1a4a8f['query'][_0x75fc('0x6d')])[_0x75fc('0x2d')](function(){if(_[_0x75fc('0x91')](_0x1a4a8f['query']['ids'])){for(var _0x4f7dc2=0x0;_0x4f7dc2<_0x1a4a8f[_0x75fc('0x3a')]['ids'][_0x75fc('0x3f')];_0x4f7dc2+=0x1){socket[_0x75fc('0x8f')](_0x75fc('0x8c'),{'UserId':Number(_0x1a4a8f[_0x75fc('0x3a')]['ids'][_0x4f7dc2]),'MailQueueId':Number(_0x1a4a8f['params']['id'])});}}else{socket['emit'](_0x75fc('0x8c'),{'UserId':Number(_0x1a4a8f[_0x75fc('0x3a')]['ids']),'MailQueueId':Number(_0x1a4a8f[_0x75fc('0x4d')]['id'])});}});}})['then'](respondWithStatusCode(_0x259edc,null))[_0x75fc('0x4b')](handleError(_0x259edc,null));};exports[_0x75fc('0x92')]=function(_0x2ed08e,_0x5401e0,_0x354f4b){var _0x2ebae2={};var _0x26925a={};var _0x3a4657;var _0x5e227c;return db[_0x75fc('0x47')][_0x75fc('0x5d')]({'where':{'id':_0x2ed08e[_0x75fc('0x4d')]['id']}})[_0x75fc('0x2d')](handleEntityNotFound(_0x5401e0,null))[_0x75fc('0x2d')](function(_0x2cb73a){if(_0x2cb73a){_0x3a4657=_0x2cb73a;_0x26925a['model']=_[_0x75fc('0x39')](db['User'][_0x75fc('0x34')]);_0x26925a['query']=_[_0x75fc('0x39')](_0x2ed08e[_0x75fc('0x3a')]);_0x26925a[_0x75fc('0x3b')]=_[_0x75fc('0x3c')](_0x26925a['model'],_0x26925a['query']);_0x2ebae2['attributes']=_[_0x75fc('0x3c')](_0x26925a[_0x75fc('0x38')],qs[_0x75fc('0x3e')](_0x2ed08e[_0x75fc('0x3a')][_0x75fc('0x3e')]));_0x2ebae2[_0x75fc('0x3d')]=_0x2ebae2[_0x75fc('0x3d')]['length']?_0x2ebae2['attributes']:_0x26925a['model'];_0x2ebae2[_0x75fc('0x41')]=qs['sort'](_0x2ed08e[_0x75fc('0x3a')][_0x75fc('0x42')]);_0x2ebae2[_0x75fc('0x43')]=qs['filters'](_['pick'](_0x2ed08e['query'],_0x26925a[_0x75fc('0x3b')]));if(_0x2ed08e[_0x75fc('0x3a')]['filter']){_0x2ebae2[_0x75fc('0x43')]=_[_0x75fc('0x45')](_0x2ebae2[_0x75fc('0x43')],{'$or':_['map'](_0x2ebae2[_0x75fc('0x3d')],function(_0x46c8f5){var _0x17f2c9={};_0x17f2c9[_0x46c8f5]={'$like':'%'+_0x2ed08e[_0x75fc('0x3a')][_0x75fc('0x44')]+'%'};return _0x17f2c9;})});}_0x2ebae2=_[_0x75fc('0x45')]({},_0x2ebae2,_0x2ed08e[_0x75fc('0x46')]);return _0x3a4657[_0x75fc('0x92')](_0x2ebae2);}})[_0x75fc('0x2d')](function(_0x10cd7e){if(_0x10cd7e){_0x5e227c=_0x10cd7e['length'];if(!_0x2ed08e['query'][_0x75fc('0x5e')]('nolimit')){_0x2ebae2[_0x75fc('0x27')]=qs['limit'](_0x2ed08e[_0x75fc('0x3a')]['limit']);_0x2ebae2['offset']=qs[_0x75fc('0x25')](_0x2ed08e[_0x75fc('0x3a')][_0x75fc('0x25')]);}return _0x3a4657[_0x75fc('0x92')](_0x2ebae2);}})[_0x75fc('0x2d')](function(_0x440d76){if(_0x440d76){return _0x440d76?{'count':_0x5e227c,'rows':_0x440d76}:null;}})[_0x75fc('0x2d')](respondWithResult(_0x5401e0,null))[_0x75fc('0x4b')](handleError(_0x5401e0,null));};
\ No newline at end of file
index a2ed6ad..f9416c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb3f0=['../../mysqldb','MailQueue','save','emit','hasOwnProperty','hook','events'];(function(_0x32a0a0,_0x4cce5c){var _0x26ea66=function(_0x370e96){while(--_0x370e96){_0x32a0a0['push'](_0x32a0a0['shift']());}};_0x26ea66(++_0x4cce5c);}(_0xb3f0,0x11e));var _0x0b3f=function(_0x3ab9ee,_0x4a74b8){_0x3ab9ee=_0x3ab9ee-0x0;var _0x82ee88=_0xb3f0[_0x3ab9ee];return _0x82ee88;};'use strict';var EventEmitter=require(_0x0b3f('0x0'));var MailQueue=require(_0x0b3f('0x1'))['db'][_0x0b3f('0x2')];var MailQueueEvents=new EventEmitter();MailQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x0b3f('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0xcfe2d3){return function(_0x24621f,_0x41bfdc,_0x561c8d){MailQueueEvents[_0x0b3f('0x4')](_0xcfe2d3+':'+_0x24621f['id'],_0x24621f);MailQueueEvents[_0x0b3f('0x4')](_0xcfe2d3,_0x24621f);_0x561c8d(null);};}for(var e in events){if(events[_0x0b3f('0x5')](e)){var event=events[e];MailQueue[_0x0b3f('0x6')](e,emitEvent(event));}}module['exports']=MailQueueEvents;
\ No newline at end of file
+var _0x828a=['../../mysqldb','MailQueue','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x1518d6,_0x5a398f){var _0x561551=function(_0x4b75a6){while(--_0x4b75a6){_0x1518d6['push'](_0x1518d6['shift']());}};_0x561551(++_0x5a398f);}(_0x828a,0x1b0));var _0xa828=function(_0x18cc2f,_0x46f507){_0x18cc2f=_0x18cc2f-0x0;var _0x4685f6=_0x828a[_0x18cc2f];return _0x4685f6;};'use strict';var EventEmitter=require('events');var MailQueue=require(_0xa828('0x0'))['db'][_0xa828('0x1')];var MailQueueEvents=new EventEmitter();MailQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xa828('0x2'),'afterDestroy':_0xa828('0x3')};function emitEvent(_0x3ee23f){return function(_0x5c4bef,_0x4b9b70,_0x51e5c3){MailQueueEvents[_0xa828('0x4')](_0x3ee23f+':'+_0x5c4bef['id'],_0x5c4bef);MailQueueEvents[_0xa828('0x4')](_0x3ee23f,_0x5c4bef);_0x51e5c3(null);};}for(var e in events){if(events[_0xa828('0x5')](e)){var event=events[e];MailQueue[_0xa828('0x6')](e,emitEvent(event));}}module[_0xa828('0x7')]=MailQueueEvents;
\ No newline at end of file
index f83038d..956d4f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb8f0=['path','rimraf','../../config/environment','./mailQueue.attributes','exports','MailQueue','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x2fe74e,_0x23edc3){var _0x2e5d3a=function(_0x45a359){while(--_0x45a359){_0x2fe74e['push'](_0x2fe74e['shift']());}};_0x2e5d3a(++_0x23edc3);}(_0xb8f0,0x15b));var _0x0b8f=function(_0x4ef73a,_0x1906de){_0x4ef73a=_0x4ef73a-0x0;var _0x15c9a4=_0xb8f0[_0x4ef73a];return _0x15c9a4;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x0b8f('0x0'))(_0x0b8f('0x1'));var moment=require(_0x0b8f('0x2'));var BPromise=require(_0x0b8f('0x3'));var rp=require(_0x0b8f('0x4'));var fs=require('fs');var path=require(_0x0b8f('0x5'));var rimraf=require(_0x0b8f('0x6'));var config=require(_0x0b8f('0x7'));var attributes=require(_0x0b8f('0x8'));module[_0x0b8f('0x9')]=function(_0x486154,_0x3c1890){return _0x486154['define'](_0x0b8f('0xa'),attributes,{'tableName':'mail_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc103=['mail_queues','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','MailQueue'];(function(_0x5f0c39,_0x191cff){var _0x7e6ca3=function(_0x41da98){while(--_0x41da98){_0x5f0c39['push'](_0x5f0c39['shift']());}};_0x7e6ca3(++_0x191cff);}(_0xc103,0xe8));var _0x3c10=function(_0xedf622,_0x5a854d){_0xedf622=_0xedf622-0x0;var _0x245b71=_0xc103[_0xedf622];return _0x245b71;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x3c10('0x0'))(_0x3c10('0x1'));var moment=require(_0x3c10('0x2'));var BPromise=require(_0x3c10('0x3'));var rp=require(_0x3c10('0x4'));var fs=require('fs');var path=require(_0x3c10('0x5'));var rimraf=require(_0x3c10('0x6'));var config=require(_0x3c10('0x7'));var attributes=require('./mailQueue.attributes');module[_0x3c10('0x8')]=function(_0x8a334a,_0x1b1e89){return _0x8a334a['define'](_0x3c10('0x9'),attributes,{'tableName':_0x3c10('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e7b66dc..ac62102 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f1e=['util','bluebird','../../config/utils','../../config/logger','rpc','../../config/environment','http','defaults','redis','socket.io-emitter','./mailQueue.socket','register','request','then','info','MailQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','GetMailQueue','MailQueue','findAll','options','where','attributes','limit','include','model','map','catch','find','raw','ShowMailQueue','lodash'];(function(_0x3348b6,_0x3d52bb){var _0x167547=function(_0xd87991){while(--_0xd87991){_0x3348b6['push'](_0x3348b6['shift']());}};_0x167547(++_0x3d52bb);}(_0x6f1e,0x1e0));var _0xe6f1=function(_0x1826fa,_0x391e3a){_0x1826fa=_0x1826fa-0x0;var _0x1316f6=_0x6f1e[_0x1826fa];return _0x1316f6;};'use strict';var _=require(_0xe6f1('0x0'));var util=require(_0xe6f1('0x1'));var moment=require('moment');var BPromise=require(_0xe6f1('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xe6f1('0x3'));var logger=require(_0xe6f1('0x4'))(_0xe6f1('0x5'));var config=require(_0xe6f1('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0xe6f1('0x7')]({'port':0x232a});config['redis']=_[_0xe6f1('0x8')](config[_0xe6f1('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0xe6f1('0xa'))(new Redis(config[_0xe6f1('0x9')]));require(_0xe6f1('0xb'))[_0xe6f1('0xc')](socket);function respondWithRpcPromise(_0x4564b5,_0xfd577b,_0x5db7fc){return new BPromise(function(_0x78eea3,_0x52c91a){return client[_0xe6f1('0xd')](_0x4564b5,_0x5db7fc)[_0xe6f1('0xe')](function(_0x50f0bb){logger[_0xe6f1('0xf')](_0xe6f1('0x10'),_0xfd577b,_0xe6f1('0x11'));logger[_0xe6f1('0x12')]('MailQueue,\x20%s,\x20%s,\x20%s',_0xfd577b,'request\x20sent',JSON[_0xe6f1('0x13')](_0x50f0bb));if(_0x50f0bb[_0xe6f1('0x14')]){if(_0x50f0bb[_0xe6f1('0x14')][_0xe6f1('0x15')]===0x1f4){logger['error'](_0xe6f1('0x10'),_0xfd577b,_0x50f0bb[_0xe6f1('0x14')][_0xe6f1('0x16')]);return _0x52c91a(_0x50f0bb['error'][_0xe6f1('0x16')]);}logger['error'](_0xe6f1('0x10'),_0xfd577b,_0x50f0bb[_0xe6f1('0x14')][_0xe6f1('0x16')]);return _0x78eea3(_0x50f0bb[_0xe6f1('0x14')]['message']);}else{logger[_0xe6f1('0xf')](_0xe6f1('0x10'),_0xfd577b,'request\x20sent');_0x78eea3(_0x50f0bb['result'][_0xe6f1('0x16')]);}})['catch'](function(_0x3fde30){logger[_0xe6f1('0x14')]('MailQueue,\x20%s,\x20%s',_0xfd577b,_0x3fde30);_0x52c91a(_0x3fde30);});});}exports[_0xe6f1('0x17')]=function(_0x50e1f0){var _0x42d521=this;return new Promise(function(_0x64b537,_0x15843e){return db[_0xe6f1('0x18')][_0xe6f1('0x19')]({'raw':_0x50e1f0[_0xe6f1('0x1a')]?_0x50e1f0[_0xe6f1('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x50e1f0[_0xe6f1('0x1a')]?_0x50e1f0['options'][_0xe6f1('0x1b')]||null:null,'attributes':_0x50e1f0[_0xe6f1('0x1a')]?_0x50e1f0['options'][_0xe6f1('0x1c')]||null:null,'limit':_0x50e1f0['options']?_0x50e1f0[_0xe6f1('0x1a')][_0xe6f1('0x1d')]||null:null,'include':_0x50e1f0[_0xe6f1('0x1a')]?_0x50e1f0[_0xe6f1('0x1a')][_0xe6f1('0x1e')]?_['map'](_0x50e1f0[_0xe6f1('0x1a')]['include'],function(_0x461007){return{'model':db[_0x461007[_0xe6f1('0x1f')]],'as':_0x461007['as'],'attributes':_0x461007[_0xe6f1('0x1c')],'include':_0x461007[_0xe6f1('0x1e')]?_[_0xe6f1('0x20')](_0x461007[_0xe6f1('0x1e')],function(_0xfe8bdb){return{'model':db[_0xfe8bdb[_0xe6f1('0x1f')]],'as':_0xfe8bdb['as'],'attributes':_0xfe8bdb[_0xe6f1('0x1c')],'include':_0xfe8bdb[_0xe6f1('0x1e')]?_[_0xe6f1('0x20')](_0xfe8bdb[_0xe6f1('0x1e')],function(_0x40afd8){return{'model':db[_0x40afd8['model']],'as':_0x40afd8['as'],'attributes':_0x40afd8[_0xe6f1('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x202505){logger['info'](_0xe6f1('0x17'),_0x50e1f0);logger[_0xe6f1('0x12')]('GetMailQueue',_0x50e1f0,JSON[_0xe6f1('0x13')](_0x202505));_0x64b537(_0x202505);})[_0xe6f1('0x21')](function(_0x3eb90f){logger['error'](_0xe6f1('0x17'),_0x3eb90f[_0xe6f1('0x16')],_0x50e1f0);_0x15843e(_0x42d521[_0xe6f1('0x14')](0x1f4,_0x3eb90f['message']));});});};exports['ShowMailQueue']=function(_0x1ca897){var _0x494055=this;return new Promise(function(_0x1b3158,_0x28c013){return db[_0xe6f1('0x18')][_0xe6f1('0x22')]({'raw':_0x1ca897[_0xe6f1('0x1a')]?_0x1ca897['options'][_0xe6f1('0x23')]===undefined?!![]:![]:!![],'where':_0x1ca897[_0xe6f1('0x1a')]?_0x1ca897[_0xe6f1('0x1a')][_0xe6f1('0x1b')]||null:null,'attributes':_0x1ca897[_0xe6f1('0x1a')]?_0x1ca897['options'][_0xe6f1('0x1c')]||null:null,'include':_0x1ca897['options']?_0x1ca897['options']['include']?_[_0xe6f1('0x20')](_0x1ca897[_0xe6f1('0x1a')][_0xe6f1('0x1e')],function(_0x42005f){return{'model':db[_0x42005f[_0xe6f1('0x1f')]],'as':_0x42005f['as'],'attributes':_0x42005f[_0xe6f1('0x1c')],'include':_0x42005f[_0xe6f1('0x1e')]?_[_0xe6f1('0x20')](_0x42005f['include'],function(_0x5f04f9){return{'model':db[_0x5f04f9[_0xe6f1('0x1f')]],'as':_0x5f04f9['as'],'attributes':_0x5f04f9[_0xe6f1('0x1c')],'include':_0x5f04f9['include']?_[_0xe6f1('0x20')](_0x5f04f9[_0xe6f1('0x1e')],function(_0x36b7c5){return{'model':db[_0x36b7c5[_0xe6f1('0x1f')]],'as':_0x36b7c5['as'],'attributes':_0x36b7c5[_0xe6f1('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xe6f1('0xe')](function(_0x16858d){logger[_0xe6f1('0xf')](_0xe6f1('0x24'),_0x1ca897);logger[_0xe6f1('0x12')](_0xe6f1('0x24'),_0x1ca897,JSON[_0xe6f1('0x13')](_0x16858d));_0x1b3158(_0x16858d);})[_0xe6f1('0x21')](function(_0xbb198){logger[_0xe6f1('0x14')]('ShowMailQueue',_0xbb198[_0xe6f1('0x16')],_0x1ca897);_0x28c013(_0x494055['error'](0x1f4,_0xbb198['message']));});});};
\ No newline at end of file
+var _0xc6fe=['MailQueue,\x20%s,\x20%s,\x20%s','stringify','code','error','message','MailQueue,\x20%s,\x20%s','result','catch','MailQueue','findAll','options','where','attributes','limit','include','map','model','GetMailQueue','find','ShowMailQueue','lodash','util','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./mailQueue.socket','register','request','then','info','request\x20sent','debug'];(function(_0x1deb49,_0x4411fb){var _0x1d3310=function(_0x17fc17){while(--_0x17fc17){_0x1deb49['push'](_0x1deb49['shift']());}};_0x1d3310(++_0x4411fb);}(_0xc6fe,0xbc));var _0xec6f=function(_0x9c2c7c,_0x2257e3){_0x9c2c7c=_0x9c2c7c-0x0;var _0x1348dd=_0xc6fe[_0x9c2c7c];return _0x1348dd;};'use strict';var _=require(_0xec6f('0x0'));var util=require(_0xec6f('0x1'));var moment=require('moment');var BPromise=require(_0xec6f('0x2'));var rs=require(_0xec6f('0x3'));var fs=require('fs');var Redis=require(_0xec6f('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xec6f('0x5'));var logger=require('../../config/logger')(_0xec6f('0x6'));var config=require(_0xec6f('0x7'));var jayson=require(_0xec6f('0x8'));var client=jayson[_0xec6f('0x9')][_0xec6f('0xa')]({'port':0x232a});config[_0xec6f('0xb')]=_[_0xec6f('0xc')](config[_0xec6f('0xb')],{'host':_0xec6f('0xd'),'port':0x18eb});var socket=require(_0xec6f('0xe'))(new Redis(config['redis']));require(_0xec6f('0xf'))[_0xec6f('0x10')](socket);function respondWithRpcPromise(_0x3ef099,_0x138d0b,_0x39d545){return new BPromise(function(_0x1dab3a,_0x35e7e1){return client[_0xec6f('0x11')](_0x3ef099,_0x39d545)[_0xec6f('0x12')](function(_0x294650){logger[_0xec6f('0x13')]('MailQueue,\x20%s,\x20%s',_0x138d0b,_0xec6f('0x14'));logger[_0xec6f('0x15')](_0xec6f('0x16'),_0x138d0b,_0xec6f('0x14'),JSON[_0xec6f('0x17')](_0x294650));if(_0x294650['error']){if(_0x294650['error'][_0xec6f('0x18')]===0x1f4){logger[_0xec6f('0x19')]('MailQueue,\x20%s,\x20%s',_0x138d0b,_0x294650['error'][_0xec6f('0x1a')]);return _0x35e7e1(_0x294650[_0xec6f('0x19')]['message']);}logger['error'](_0xec6f('0x1b'),_0x138d0b,_0x294650[_0xec6f('0x19')][_0xec6f('0x1a')]);return _0x1dab3a(_0x294650[_0xec6f('0x19')]['message']);}else{logger['info'](_0xec6f('0x1b'),_0x138d0b,_0xec6f('0x14'));_0x1dab3a(_0x294650[_0xec6f('0x1c')][_0xec6f('0x1a')]);}})[_0xec6f('0x1d')](function(_0x434a0b){logger[_0xec6f('0x19')](_0xec6f('0x1b'),_0x138d0b,_0x434a0b);_0x35e7e1(_0x434a0b);});});}exports['GetMailQueue']=function(_0x8d5a48){var _0x179b2c=this;return new Promise(function(_0x29720a,_0x38e72b){return db[_0xec6f('0x1e')][_0xec6f('0x1f')]({'raw':_0x8d5a48['options']?_0x8d5a48[_0xec6f('0x20')]['raw']===undefined?!![]:![]:!![],'where':_0x8d5a48[_0xec6f('0x20')]?_0x8d5a48[_0xec6f('0x20')][_0xec6f('0x21')]||null:null,'attributes':_0x8d5a48[_0xec6f('0x20')]?_0x8d5a48['options'][_0xec6f('0x22')]||null:null,'limit':_0x8d5a48['options']?_0x8d5a48[_0xec6f('0x20')][_0xec6f('0x23')]||null:null,'include':_0x8d5a48[_0xec6f('0x20')]?_0x8d5a48[_0xec6f('0x20')][_0xec6f('0x24')]?_[_0xec6f('0x25')](_0x8d5a48['options'][_0xec6f('0x24')],function(_0x2251fe){return{'model':db[_0x2251fe[_0xec6f('0x26')]],'as':_0x2251fe['as'],'attributes':_0x2251fe[_0xec6f('0x22')],'include':_0x2251fe[_0xec6f('0x24')]?_[_0xec6f('0x25')](_0x2251fe[_0xec6f('0x24')],function(_0x5a78e6){return{'model':db[_0x5a78e6[_0xec6f('0x26')]],'as':_0x5a78e6['as'],'attributes':_0x5a78e6[_0xec6f('0x22')],'include':_0x5a78e6[_0xec6f('0x24')]?_[_0xec6f('0x25')](_0x5a78e6[_0xec6f('0x24')],function(_0x29e06a){return{'model':db[_0x29e06a['model']],'as':_0x29e06a['as'],'attributes':_0x29e06a['attributes']};}):[]};}):[]};}):[]:[]})[_0xec6f('0x12')](function(_0x47eccb){logger[_0xec6f('0x13')](_0xec6f('0x27'),_0x8d5a48);logger[_0xec6f('0x15')](_0xec6f('0x27'),_0x8d5a48,JSON[_0xec6f('0x17')](_0x47eccb));_0x29720a(_0x47eccb);})['catch'](function(_0x10fa1a){logger['error'](_0xec6f('0x27'),_0x10fa1a[_0xec6f('0x1a')],_0x8d5a48);_0x38e72b(_0x179b2c[_0xec6f('0x19')](0x1f4,_0x10fa1a[_0xec6f('0x1a')]));});});};exports['ShowMailQueue']=function(_0x60e05c){var _0x2766c9=this;return new Promise(function(_0x409704,_0x82643a){return db[_0xec6f('0x1e')][_0xec6f('0x28')]({'raw':_0x60e05c[_0xec6f('0x20')]?_0x60e05c[_0xec6f('0x20')]['raw']===undefined?!![]:![]:!![],'where':_0x60e05c[_0xec6f('0x20')]?_0x60e05c[_0xec6f('0x20')][_0xec6f('0x21')]||null:null,'attributes':_0x60e05c[_0xec6f('0x20')]?_0x60e05c['options']['attributes']||null:null,'include':_0x60e05c[_0xec6f('0x20')]?_0x60e05c[_0xec6f('0x20')][_0xec6f('0x24')]?_['map'](_0x60e05c[_0xec6f('0x20')][_0xec6f('0x24')],function(_0x51176d){return{'model':db[_0x51176d[_0xec6f('0x26')]],'as':_0x51176d['as'],'attributes':_0x51176d['attributes'],'include':_0x51176d['include']?_[_0xec6f('0x25')](_0x51176d[_0xec6f('0x24')],function(_0x5dc4ea){return{'model':db[_0x5dc4ea[_0xec6f('0x26')]],'as':_0x5dc4ea['as'],'attributes':_0x5dc4ea[_0xec6f('0x22')],'include':_0x5dc4ea[_0xec6f('0x24')]?_[_0xec6f('0x25')](_0x5dc4ea['include'],function(_0x1bd50a){return{'model':db[_0x1bd50a[_0xec6f('0x26')]],'as':_0x1bd50a['as'],'attributes':_0x1bd50a['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x7bcaeb){logger[_0xec6f('0x13')](_0xec6f('0x29'),_0x60e05c);logger[_0xec6f('0x15')](_0xec6f('0x29'),_0x60e05c,JSON[_0xec6f('0x17')](_0x7bcaeb));_0x409704(_0x7bcaeb);})[_0xec6f('0x1d')](function(_0x1f8f97){logger[_0xec6f('0x19')](_0xec6f('0x29'),_0x1f8f97[_0xec6f('0x1a')],_0x60e05c);_0x82643a(_0x2766c9[_0xec6f('0x19')](0x1f4,_0x1f8f97['message']));});});};
\ No newline at end of file
index 8a93720..c7c3822 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76cc=['emit','removeListener','mailQueue:','./mailQueue.events','save','update'];(function(_0x4cb2cb,_0x3a1d53){var _0xb097be=function(_0x78c434){while(--_0x78c434){_0x4cb2cb['push'](_0x4cb2cb['shift']());}};_0xb097be(++_0x3a1d53);}(_0x76cc,0x117));var _0xc76c=function(_0x3525b7,_0x4b788a){_0x3525b7=_0x3525b7-0x0;var _0x3f66e3=_0x76cc[_0x3525b7];return _0x3f66e3;};'use strict';var MailQueueEvents=require(_0xc76c('0x0'));var events=[_0xc76c('0x1'),'remove',_0xc76c('0x2')];function createListener(_0x40d490,_0x2651eb){return function(_0x4de00c){_0x2651eb[_0xc76c('0x3')](_0x40d490,_0x4de00c);};}function removeListener(_0x3dad62,_0x209273){return function(){MailQueueEvents[_0xc76c('0x4')](_0x3dad62,_0x209273);};}exports['register']=function(_0x2a08f6){for(var _0x25e3c1=0x0,_0x417a99=events['length'];_0x25e3c1<_0x417a99;_0x25e3c1++){var _0x5476c4=events[_0x25e3c1];var _0x925174=createListener(_0xc76c('0x5')+_0x5476c4,_0x2a08f6);MailQueueEvents['on'](_0x5476c4,_0x925174);}};
\ No newline at end of file
+var _0xcdb4=['emit','removeListener','register','length','./mailQueue.events'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xcdb4,0x1f3));var _0x4cdb=function(_0x254ed9,_0x297d5f){_0x254ed9=_0x254ed9-0x0;var _0x36c055=_0xcdb4[_0x254ed9];return _0x36c055;};'use strict';var MailQueueEvents=require(_0x4cdb('0x0'));var events=['save','remove','update'];function createListener(_0x126130,_0x2cfe4c){return function(_0x387aff){_0x2cfe4c[_0x4cdb('0x1')](_0x126130,_0x387aff);};}function removeListener(_0x3807f6,_0x208819){return function(){MailQueueEvents[_0x4cdb('0x2')](_0x3807f6,_0x208819);};}exports[_0x4cdb('0x3')]=function(_0x4a81c3){for(var _0x57a171=0x0,_0x5d0a21=events[_0x4cdb('0x4')];_0x57a171<_0x5d0a21;_0x57a171++){var _0x4985c1=events[_0x57a171];var _0x3df0f0=createListener('mailQueue:'+_0x4985c1,_0x4a81c3);MailQueueEvents['on'](_0x4985c1,_0x3df0f0);}};
\ No newline at end of file
index feca48b..e7bab32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44d3=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailQueueReport.controller','get','index','/describe','isAuthenticated','describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','path'];(function(_0x3b4823,_0x5c8e7a){var _0x15c670=function(_0x3cd81a){while(--_0x3cd81a){_0x3b4823['push'](_0x3b4823['shift']());}};_0x15c670(++_0x5c8e7a);}(_0x44d3,0x1de));var _0x344d=function(_0x4f5044,_0x29d658){_0x4f5044=_0x4f5044-0x0;var _0x4a2190=_0x44d3[_0x4f5044];return _0x4a2190;};'use strict';var multer=require(_0x344d('0x0'));var util=require('util');var path=require(_0x344d('0x1'));var timeout=require(_0x344d('0x2'));var express=require(_0x344d('0x3'));var router=express[_0x344d('0x4')]();var fs_extra=require(_0x344d('0x5'));var auth=require(_0x344d('0x6'));var interaction=require(_0x344d('0x7'));var config=require(_0x344d('0x8'));var controller=require(_0x344d('0x9'));router[_0x344d('0xa')]('/',auth['isAuthenticated'](),controller[_0x344d('0xb')]);router[_0x344d('0xa')](_0x344d('0xc'),auth[_0x344d('0xd')](),controller[_0x344d('0xe')]);router[_0x344d('0xa')](_0x344d('0xf'),auth[_0x344d('0xd')](),controller[_0x344d('0x10')]);router[_0x344d('0x11')]('/',auth['isAuthenticated'](),controller[_0x344d('0x12')]);router[_0x344d('0x13')](_0x344d('0xf'),auth[_0x344d('0xd')](),controller[_0x344d('0x14')]);router[_0x344d('0x15')](_0x344d('0xf'),auth[_0x344d('0xd')](),controller[_0x344d('0x16')]);module[_0x344d('0x17')]=router;
\ No newline at end of file
+var _0xdea5=['get','/describe','isAuthenticated','post','create','put','/:id','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x3cd133,_0x222fcb){var _0x2512c8=function(_0x484491){while(--_0x484491){_0x3cd133['push'](_0x3cd133['shift']());}};_0x2512c8(++_0x222fcb);}(_0xdea5,0x199));var _0x5dea=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xdea5[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x5dea('0x0'));var util=require(_0x5dea('0x1'));var path=require(_0x5dea('0x2'));var timeout=require('connect-timeout');var express=require(_0x5dea('0x3'));var router=express[_0x5dea('0x4')]();var fs_extra=require(_0x5dea('0x5'));var auth=require(_0x5dea('0x6'));var interaction=require(_0x5dea('0x7'));var config=require(_0x5dea('0x8'));var controller=require('./mailQueueReport.controller');router[_0x5dea('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x5dea('0x9')](_0x5dea('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x5dea('0x9')]('/:id',auth[_0x5dea('0xb')](),controller['show']);router[_0x5dea('0xc')]('/',auth[_0x5dea('0xb')](),controller[_0x5dea('0xd')]);router[_0x5dea('0xe')](_0x5dea('0xf'),auth[_0x5dea('0xb')](),controller['update']);router[_0x5dea('0x10')](_0x5dea('0xf'),auth[_0x5dea('0xb')](),controller[_0x5dea('0x11')]);module[_0x5dea('0x12')]=router;
\ No newline at end of file
index 0a33f82..851e7d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80ab=['sequelize','STRING','DATE','moment'];(function(_0x364048,_0x34dea3){var _0x591678=function(_0x239c0a){while(--_0x239c0a){_0x364048['push'](_0x364048['shift']());}};_0x591678(++_0x34dea3);}(_0x80ab,0x143));var _0xb80a=function(_0x18d866,_0x472999){_0x18d866=_0x18d866-0x0;var _0x10ea5f=_0x80ab[_0x18d866];return _0x10ea5f;};'use strict';var moment=require(_0xb80a('0x0'));var Sequelize=require(_0xb80a('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0xb80a('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0xb80a('0x2')]},'joinAt':{'type':Sequelize[_0xb80a('0x3')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0xb80a('0x3')]},'exitAt':{'type':Sequelize[_0xb80a('0x3')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xffaa=['DATE','moment','sequelize','STRING'];(function(_0x5a7d7c,_0x9ae68a){var _0x239238=function(_0x32777a){while(--_0x32777a){_0x5a7d7c['push'](_0x5a7d7c['shift']());}};_0x239238(++_0x9ae68a);}(_0xffaa,0xb1));var _0xaffa=function(_0x4188a9,_0x1a5e63){_0x4188a9=_0x4188a9-0x0;var _0x25d468=_0xffaa[_0x4188a9];return _0x25d468;};'use strict';var moment=require(_0xaffa('0x0'));var Sequelize=require(_0xaffa('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0xaffa('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0xaffa('0x2')]},'joinAt':{'type':Sequelize[_0xaffa('0x3')]},'leaveAt':{'type':Sequelize[_0xaffa('0x3')]},'acceptAt':{'type':Sequelize[_0xaffa('0x3')]},'exitAt':{'type':Sequelize[_0xaffa('0x3')]},'reason':{'type':Sequelize[_0xaffa('0x2')]}};
\ No newline at end of file
index 7a4120d..afe9c4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68b3=['path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','then','destroy','error','stack','name','send','index','map','MailQueueReport','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','options','includeAll','findAll','rows','catch','params','length','include','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util'];(function(_0x5d9f14,_0x2856b2){var _0x14485d=function(_0xec5013){while(--_0xec5013){_0x5d9f14['push'](_0x5d9f14['shift']());}};_0x14485d(++_0x2856b2);}(_0x68b3,0x1d8));var _0x368b=function(_0x3f3c3f,_0x59caf0){_0x3f3c3f=_0x3f3c3f-0x0;var _0x4de6b5=_0x68b3[_0x3f3c3f];return _0x4de6b5;};'use strict';var emlformat=require(_0x368b('0x0'));var rimraf=require(_0x368b('0x1'));var zipdir=require(_0x368b('0x2'));var jsonpatch=require(_0x368b('0x3'));var rp=require(_0x368b('0x4'));var moment=require('moment');var BPromise=require(_0x368b('0x5'));var Mustache=require(_0x368b('0x6'));var util=require(_0x368b('0x7'));var path=require(_0x368b('0x8'));var sox=require('sox');var csv=require(_0x368b('0x9'));var ejs=require(_0x368b('0xa'));var fs=require('fs');var fs_extra=require(_0x368b('0xb'));var _=require(_0x368b('0xc'));var squel=require(_0x368b('0xd'));var crypto=require(_0x368b('0xe'));var jsforce=require(_0x368b('0xf'));var deskjs=require(_0x368b('0x10'));var toCsv=require(_0x368b('0x9'));var querystring=require(_0x368b('0x11'));var Papa=require(_0x368b('0x12'));var Redis=require('ioredis');var authService=require(_0x368b('0x13'));var qs=require(_0x368b('0x14'));var as=require(_0x368b('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x368b('0x16'))(_0x368b('0x17'));var utils=require(_0x368b('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x368b('0x19'));var db=require(_0x368b('0x1a'))['db'];function respondWithStatusCode(_0x514dc7,_0x109a90){_0x109a90=_0x109a90||0xcc;return function(_0x250697){if(_0x250697){return _0x514dc7[_0x368b('0x1b')](_0x109a90);}return _0x514dc7[_0x368b('0x1c')](_0x109a90)[_0x368b('0x1d')]();};}function respondWithResult(_0x4fffe5,_0x2b326c){_0x2b326c=_0x2b326c||0xc8;return function(_0x40faa0){if(_0x40faa0){return _0x4fffe5['status'](_0x2b326c)[_0x368b('0x1e')](_0x40faa0);}};}function respondWithFilteredResult(_0x2aabb9,_0x30c245){return function(_0x515350){if(_0x515350){var _0x220cd5=typeof _0x30c245[_0x368b('0x1f')]===_0x368b('0x20')&&typeof _0x30c245['limit']===_0x368b('0x20');var _0x1b9e65=_0x515350[_0x368b('0x21')];var _0x540f57=_0x220cd5?0x0:_0x30c245['offset'];var _0x3e2e9f=_0x220cd5?_0x515350[_0x368b('0x21')]:_0x30c245[_0x368b('0x1f')]+_0x30c245[_0x368b('0x22')];var _0x1a4f20;if(_0x3e2e9f>=_0x1b9e65){_0x3e2e9f=_0x1b9e65;_0x1a4f20=0xc8;}else{_0x1a4f20=0xce;}_0x2aabb9['status'](_0x1a4f20);return _0x2aabb9[_0x368b('0x23')](_0x368b('0x24'),_0x540f57+'-'+_0x3e2e9f+'/'+_0x1b9e65)[_0x368b('0x1e')](_0x515350);}return null;};}function patchUpdates(_0x1c927f){return function(_0x23da8f){try{jsonpatch[_0x368b('0x25')](_0x23da8f,_0x1c927f,!![]);}catch(_0x397185){return BPromise[_0x368b('0x26')](_0x397185);}return _0x23da8f['save']();};}function saveUpdates(_0x13e750,_0x2f08d9){return function(_0x18869a){if(_0x18869a){return _0x18869a[_0x368b('0x27')](_0x13e750)[_0x368b('0x28')](function(_0x4c2fca){return _0x4c2fca;});}return null;};}function removeEntity(_0x286641,_0x1ca429){return function(_0x3a22bd){if(_0x3a22bd){return _0x3a22bd[_0x368b('0x29')]()[_0x368b('0x28')](function(){_0x286641[_0x368b('0x1c')](0xcc)[_0x368b('0x1d')]();});}};}function handleEntityNotFound(_0x11ea2d,_0x3123c1){return function(_0x3f7f89){if(!_0x3f7f89){_0x11ea2d[_0x368b('0x1b')](0x194);}return _0x3f7f89;};}function handleError(_0x344d8a,_0xceec4b){_0xceec4b=_0xceec4b||0x1f4;return function(_0x376e61){logger[_0x368b('0x2a')](_0x376e61[_0x368b('0x2b')]);if(_0x376e61[_0x368b('0x2c')]){delete _0x376e61[_0x368b('0x2c')];}_0x344d8a[_0x368b('0x1c')](_0xceec4b)[_0x368b('0x2d')](_0x376e61);};}exports[_0x368b('0x2e')]=function(_0xc12627,_0x107d2f){var _0x3c80b5={},_0x5db0b4={},_0x4af77a={'count':0x0,'rows':[]};var _0x381324=_[_0x368b('0x2f')](db[_0x368b('0x30')][_0x368b('0x31')],function(_0x5d6ebf){return{'name':_0x5d6ebf[_0x368b('0x32')],'type':_0x5d6ebf[_0x368b('0x33')][_0x368b('0x34')]};});_0x5db0b4[_0x368b('0x35')]=_[_0x368b('0x2f')](_0x381324,'name');_0x5db0b4[_0x368b('0x36')]=_[_0x368b('0x37')](_0xc12627[_0x368b('0x36')]);_0x5db0b4[_0x368b('0x38')]=_['intersection'](_0x5db0b4['model'],_0x5db0b4['query']);_0x3c80b5[_0x368b('0x39')]=_[_0x368b('0x3a')](_0x5db0b4[_0x368b('0x35')],qs[_0x368b('0x3b')](_0xc12627[_0x368b('0x36')]['fields']));_0x3c80b5[_0x368b('0x39')]=_0x3c80b5[_0x368b('0x39')]['length']?_0x3c80b5[_0x368b('0x39')]:_0x5db0b4[_0x368b('0x35')];if(!_0xc12627['query'][_0x368b('0x3c')](_0x368b('0x3d'))){_0x3c80b5['limit']=qs[_0x368b('0x22')](_0xc12627['query']['limit']);_0x3c80b5['offset']=qs[_0x368b('0x1f')](_0xc12627[_0x368b('0x36')][_0x368b('0x1f')]);}_0x3c80b5[_0x368b('0x3e')]=qs[_0x368b('0x3f')](_0xc12627[_0x368b('0x36')][_0x368b('0x3f')]);_0x3c80b5[_0x368b('0x40')]=qs[_0x368b('0x38')](_[_0x368b('0x41')](_0xc12627['query'],_0x5db0b4[_0x368b('0x38')]),_0x381324);if(_0xc12627[_0x368b('0x36')]['filter']){_0x3c80b5[_0x368b('0x40')]=_[_0x368b('0x42')](_0x3c80b5[_0x368b('0x40')],{'$or':_[_0x368b('0x2f')](_0x381324,function(_0x248b2b){if(_0x248b2b['type']!==_0x368b('0x43')){var _0x4287c6={};_0x4287c6[_0x248b2b[_0x368b('0x2c')]]={'$like':'%'+_0xc12627[_0x368b('0x36')]['filter']+'%'};return _0x4287c6;}})});}_0x3c80b5=_['merge']({},_0x3c80b5,_0xc12627[_0x368b('0x44')]);var _0x3d00f9={'where':_0x3c80b5[_0x368b('0x40')]};return db[_0x368b('0x30')][_0x368b('0x21')](_0x3d00f9)[_0x368b('0x28')](function(_0x1d990c){_0x4af77a[_0x368b('0x21')]=_0x1d990c;if(_0xc12627[_0x368b('0x36')][_0x368b('0x45')]){_0x3c80b5['include']=[{'all':!![]}];}return db[_0x368b('0x30')][_0x368b('0x46')](_0x3c80b5);})['then'](function(_0x25e713){_0x4af77a[_0x368b('0x47')]=_0x25e713;return _0x4af77a;})[_0x368b('0x28')](respondWithFilteredResult(_0x107d2f,_0x3c80b5))[_0x368b('0x48')](handleError(_0x107d2f,null));};exports['show']=function(_0x490eb6,_0x151711){var _0x4a0275={'raw':!![],'where':{'id':_0x490eb6[_0x368b('0x49')]['id']}},_0x91bb0b={};_0x91bb0b[_0x368b('0x35')]=_['keys'](db[_0x368b('0x30')][_0x368b('0x31')]);_0x91bb0b[_0x368b('0x36')]=_['keys'](_0x490eb6['query']);_0x91bb0b[_0x368b('0x38')]=_[_0x368b('0x3a')](_0x91bb0b['model'],_0x91bb0b[_0x368b('0x36')]);_0x4a0275[_0x368b('0x39')]=_[_0x368b('0x3a')](_0x91bb0b[_0x368b('0x35')],qs[_0x368b('0x3b')](_0x490eb6[_0x368b('0x36')][_0x368b('0x3b')]));_0x4a0275[_0x368b('0x39')]=_0x4a0275[_0x368b('0x39')][_0x368b('0x4a')]?_0x4a0275[_0x368b('0x39')]:_0x91bb0b[_0x368b('0x35')];if(_0x490eb6[_0x368b('0x36')]['includeAll']){_0x4a0275[_0x368b('0x4b')]=[{'all':!![]}];}_0x4a0275=_[_0x368b('0x42')]({},_0x4a0275,_0x490eb6[_0x368b('0x44')]);return db[_0x368b('0x30')][_0x368b('0x4c')](_0x4a0275)['then'](handleEntityNotFound(_0x151711,null))['then'](respondWithResult(_0x151711,null))[_0x368b('0x48')](handleError(_0x151711,null));};exports[_0x368b('0x4d')]=function(_0x1c8755,_0x5a9d70){return db[_0x368b('0x30')][_0x368b('0x4d')](_0x1c8755[_0x368b('0x4e')],{})[_0x368b('0x28')](respondWithResult(_0x5a9d70,0xc9))[_0x368b('0x48')](handleError(_0x5a9d70,null));};exports[_0x368b('0x27')]=function(_0x8f35b,_0x1174fa){if(_0x8f35b[_0x368b('0x4e')]['id']){delete _0x8f35b[_0x368b('0x4e')]['id'];}return db['MailQueueReport'][_0x368b('0x4c')]({'where':{'id':_0x8f35b['params']['id']}})[_0x368b('0x28')](handleEntityNotFound(_0x1174fa,null))['then'](saveUpdates(_0x8f35b[_0x368b('0x4e')],null))['then'](respondWithResult(_0x1174fa,null))[_0x368b('0x48')](handleError(_0x1174fa,null));};exports[_0x368b('0x29')]=function(_0x3b8a12,_0x458d9a){return db['MailQueueReport'][_0x368b('0x4c')]({'where':{'id':_0x3b8a12[_0x368b('0x49')]['id']}})[_0x368b('0x28')](handleEntityNotFound(_0x458d9a,null))[_0x368b('0x28')](removeEntity(_0x458d9a,null))[_0x368b('0x48')](handleError(_0x458d9a,null));};exports[_0x368b('0x4f')]=function(_0x3898a8,_0x15078b){return db[_0x368b('0x30')]['describe']()[_0x368b('0x28')](respondWithResult(_0x15078b,null))[_0x368b('0x48')](handleError(_0x15078b,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(_0x39a6f5,_0x4f0afb){var _0x1ee0a2=function(_0x3445ac){while(--_0x3445ac){_0x39a6f5['push'](_0x39a6f5['shift']());}};_0x1ee0a2(++_0x4f0afb);}(_0xc1c6,0xf7));var _0x6c1c=function(_0x521d33,_0x5bbfdd){_0x521d33=_0x521d33-0x0;var _0x3748c2=_0xc1c6[_0x521d33];return _0x3748c2;};'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 d54bc78..bcd39ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8fd9=['util','api','moment','request-promise','path','rimraf','../../config/environment','./mailQueueReport.attributes','exports','MailQueueReport','uniqueid'];(function(_0x18f4bf,_0x4acb98){var _0x9cc4f9=function(_0x9c0cc){while(--_0x9c0cc){_0x18f4bf['push'](_0x18f4bf['shift']());}};_0x9cc4f9(++_0x4acb98);}(_0x8fd9,0x1ce));var _0x98fd=function(_0x245772,_0x2c0818){_0x245772=_0x245772-0x0;var _0x1a1c3b=_0x8fd9[_0x245772];return _0x1a1c3b;};'use strict';var _=require('lodash');var util=require(_0x98fd('0x0'));var logger=require('../../config/logger')(_0x98fd('0x1'));var moment=require(_0x98fd('0x2'));var BPromise=require('bluebird');var rp=require(_0x98fd('0x3'));var fs=require('fs');var path=require(_0x98fd('0x4'));var rimraf=require(_0x98fd('0x5'));var config=require(_0x98fd('0x6'));var attributes=require(_0x98fd('0x7'));module[_0x98fd('0x8')]=function(_0x2790cd,_0x19a2b0){return _0x2790cd['define'](_0x98fd('0x9'),attributes,{'tableName':'report_mail_queue','paranoid':![],'indexes':[{'name':_0x98fd('0xa'),'fields':[_0x98fd('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa683=['report_mail_queue','uniqueid','lodash','../../config/logger','bluebird','request-promise','path','exports','MailQueueReport'];(function(_0x26df48,_0x22aa50){var _0x209047=function(_0x1d068b){while(--_0x1d068b){_0x26df48['push'](_0x26df48['shift']());}};_0x209047(++_0x22aa50);}(_0xa683,0xda));var _0x3a68=function(_0x5c17bf,_0x3c97e7){_0x5c17bf=_0x5c17bf-0x0;var _0x1781b2=_0xa683[_0x5c17bf];return _0x1781b2;};'use strict';var _=require(_0x3a68('0x0'));var util=require('util');var logger=require(_0x3a68('0x1'))('api');var moment=require('moment');var BPromise=require(_0x3a68('0x2'));var rp=require(_0x3a68('0x3'));var fs=require('fs');var path=require(_0x3a68('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./mailQueueReport.attributes');module[_0x3a68('0x5')]=function(_0x292546,_0x41dfdf){return _0x292546['define'](_0x3a68('0x6'),attributes,{'tableName':_0x3a68('0x7'),'paranoid':![],'indexes':[{'name':_0x3a68('0x8'),'fields':[_0x3a68('0x8')]}],'timestamps':!![]});};
\ No newline at end of file
index 6a3949c..0cdeb9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['create','body','options','raw','update','where','attributes','limit','UpdateMailQueueReport','stringify','lodash','util','moment','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','request','then','MailQueueReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','catch','CreateMailQueueReport','MailQueueReport'];(function(_0x23e52f,_0x5e255f){var _0x47c8a0=function(_0x106fdc){while(--_0x106fdc){_0x23e52f['push'](_0x23e52f['shift']());}};_0x47c8a0(++_0x5e255f);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xc4aa[_0x3ab51d];return _0x29a04e;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var moment=require(_0xac4a('0x2'));var BPromise=require(_0xac4a('0x3'));var rs=require(_0xac4a('0x4'));var fs=require('fs');var Redis=require(_0xac4a('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xac4a('0x6'));var config=require(_0xac4a('0x7'));var jayson=require(_0xac4a('0x8'));var client=jayson[_0xac4a('0x9')][_0xac4a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x15cd34,_0x3ef77c,_0x10525b){return new BPromise(function(_0x5c6179,_0x5b8339){return client[_0xac4a('0xb')](_0x15cd34,_0x10525b)[_0xac4a('0xc')](function(_0x26ec84){logger['info'](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));logger[_0xac4a('0xf')]('MailQueueReport,\x20%s,\x20%s,\x20%s',_0x3ef77c,_0xac4a('0xe'),JSON['stringify'](_0x26ec84));if(_0x26ec84[_0xac4a('0x10')]){if(_0x26ec84['error'][_0xac4a('0x11')]===0x1f4){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84['error'][_0xac4a('0x12')]);return _0x5b8339(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);return _0x5c6179(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}else{logger[_0xac4a('0x13')](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));_0x5c6179(_0x26ec84['result'][_0xac4a('0x12')]);}})[_0xac4a('0x14')](function(_0x23eb66){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x23eb66);_0x5b8339(_0x23eb66);});});}exports[_0xac4a('0x15')]=function(_0x28e304){var _0x44ec59=this;return new Promise(function(_0x546c5d,_0x5ac21e){return db[_0xac4a('0x16')][_0xac4a('0x17')](_0x28e304[_0xac4a('0x18')],{'raw':_0x28e304['options']?_0x28e304[_0xac4a('0x19')][_0xac4a('0x1a')]===undefined?!![]:![]:!![]})[_0xac4a('0xc')](function(_0x3a3cdb){logger[_0xac4a('0x13')](_0xac4a('0x15'),_0x28e304);logger[_0xac4a('0xf')](_0xac4a('0x15'),_0x28e304,JSON['stringify'](_0x3a3cdb));_0x546c5d(_0x3a3cdb);})[_0xac4a('0x14')](function(_0x3204ad){logger['error'](_0xac4a('0x15'),_0x3204ad[_0xac4a('0x12')],_0x28e304);_0x5ac21e(_0x44ec59[_0xac4a('0x10')](0x1f4,_0x3204ad[_0xac4a('0x12')]));});});};exports['UpdateMailQueueReport']=function(_0x1b7998){var _0x2503d8=this;return new Promise(function(_0x15435c,_0x412494){return db[_0xac4a('0x16')][_0xac4a('0x1b')](_0x1b7998[_0xac4a('0x18')],{'raw':_0x1b7998[_0xac4a('0x19')]?_0x1b7998[_0xac4a('0x19')][_0xac4a('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1b7998[_0xac4a('0x19')]?_0x1b7998[_0xac4a('0x19')][_0xac4a('0x1c')]||null:null,'attributes':_0x1b7998[_0xac4a('0x19')]?_0x1b7998[_0xac4a('0x19')][_0xac4a('0x1d')]||null:null,'limit':_0x1b7998['options']?_0x1b7998[_0xac4a('0x19')][_0xac4a('0x1e')]||null:null})[_0xac4a('0xc')](function(_0x2772fe){logger[_0xac4a('0x13')]('UpdateMailQueueReport',_0x1b7998);logger['debug'](_0xac4a('0x1f'),_0x1b7998,JSON[_0xac4a('0x20')](_0x2772fe));_0x15435c(_0x2772fe);})[_0xac4a('0x14')](function(_0x546b65){logger['error'](_0xac4a('0x1f'),_0x546b65[_0xac4a('0x12')],_0x1b7998);_0x412494(_0x2503d8[_0xac4a('0x10')](0x1f4,_0x546b65[_0xac4a('0x12')]));});});};
\ No newline at end of file
+var _0x2ef3=['options','raw','UpdateMailQueueReport','where','attributes','debug','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','request','then','info','MailQueueReport,\x20%s,\x20%s','MailQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','CreateMailQueueReport','MailQueueReport','body'];(function(_0x53785b,_0x14b386){var _0x2ae6da=function(_0x262d6b){while(--_0x262d6b){_0x53785b['push'](_0x53785b['shift']());}};_0x2ae6da(++_0x14b386);}(_0x2ef3,0xba));var _0x32ef=function(_0x128578,_0x19f2ce){_0x128578=_0x128578-0x0;var _0xd1fb4e=_0x2ef3[_0x128578];return _0xd1fb4e;};'use strict';var _=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var moment=require(_0x32ef('0x2'));var BPromise=require(_0x32ef('0x3'));var rs=require(_0x32ef('0x4'));var fs=require('fs');var Redis=require(_0x32ef('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x32ef('0x6'));var logger=require(_0x32ef('0x7'))('rpc');var config=require(_0x32ef('0x8'));var jayson=require(_0x32ef('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2c0089,_0x4bfcf8,_0x367c39){return new BPromise(function(_0x2fb8eb,_0x234863){return client[_0x32ef('0xa')](_0x2c0089,_0x367c39)[_0x32ef('0xb')](function(_0x2bbb50){logger[_0x32ef('0xc')](_0x32ef('0xd'),_0x4bfcf8,'request\x20sent');logger['debug'](_0x32ef('0xe'),_0x4bfcf8,_0x32ef('0xf'),JSON[_0x32ef('0x10')](_0x2bbb50));if(_0x2bbb50[_0x32ef('0x11')]){if(_0x2bbb50['error'][_0x32ef('0x12')]===0x1f4){logger['error'](_0x32ef('0xd'),_0x4bfcf8,_0x2bbb50['error'][_0x32ef('0x13')]);return _0x234863(_0x2bbb50[_0x32ef('0x11')]['message']);}logger['error'](_0x32ef('0xd'),_0x4bfcf8,_0x2bbb50['error'][_0x32ef('0x13')]);return _0x2fb8eb(_0x2bbb50[_0x32ef('0x11')][_0x32ef('0x13')]);}else{logger[_0x32ef('0xc')]('MailQueueReport,\x20%s,\x20%s',_0x4bfcf8,'request\x20sent');_0x2fb8eb(_0x2bbb50['result'][_0x32ef('0x13')]);}})[_0x32ef('0x14')](function(_0xb5aed2){logger['error']('MailQueueReport,\x20%s,\x20%s',_0x4bfcf8,_0xb5aed2);_0x234863(_0xb5aed2);});});}exports[_0x32ef('0x15')]=function(_0x1a9476){var _0x286bfb=this;return new Promise(function(_0x57863c,_0xbe37f6){return db[_0x32ef('0x16')]['create'](_0x1a9476[_0x32ef('0x17')],{'raw':_0x1a9476[_0x32ef('0x18')]?_0x1a9476[_0x32ef('0x18')][_0x32ef('0x19')]===undefined?!![]:![]:!![]})[_0x32ef('0xb')](function(_0x3aec05){logger['info'](_0x32ef('0x15'),_0x1a9476);logger['debug'](_0x32ef('0x15'),_0x1a9476,JSON[_0x32ef('0x10')](_0x3aec05));_0x57863c(_0x3aec05);})['catch'](function(_0x1af371){logger[_0x32ef('0x11')](_0x32ef('0x15'),_0x1af371['message'],_0x1a9476);_0xbe37f6(_0x286bfb['error'](0x1f4,_0x1af371[_0x32ef('0x13')]));});});};exports[_0x32ef('0x1a')]=function(_0x225feb){var _0x478bef=this;return new Promise(function(_0x59585f,_0x19ea6){return db['MailQueueReport']['update'](_0x225feb[_0x32ef('0x17')],{'raw':_0x225feb[_0x32ef('0x18')]?_0x225feb[_0x32ef('0x18')][_0x32ef('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x225feb[_0x32ef('0x18')]?_0x225feb[_0x32ef('0x18')][_0x32ef('0x1b')]||null:null,'attributes':_0x225feb[_0x32ef('0x18')]?_0x225feb[_0x32ef('0x18')][_0x32ef('0x1c')]||null:null,'limit':_0x225feb[_0x32ef('0x18')]?_0x225feb[_0x32ef('0x18')]['limit']||null:null})[_0x32ef('0xb')](function(_0x2f5d06){logger['info'](_0x32ef('0x1a'),_0x225feb);logger[_0x32ef('0x1d')](_0x32ef('0x1a'),_0x225feb,JSON[_0x32ef('0x10')](_0x2f5d06));_0x59585f(_0x2f5d06);})['catch'](function(_0x10e38c){logger[_0x32ef('0x11')](_0x32ef('0x1a'),_0x10e38c[_0x32ef('0x13')],_0x225feb);_0x19ea6(_0x478bef[_0x32ef('0x11')](0x1f4,_0x10e38c[_0x32ef('0x13')]));});});};
\ No newline at end of file
index fb5dce5..3b36fe0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x4474c7,_0x15f886){var _0x479d3a=function(_0x141e4b){while(--_0x141e4b){_0x4474c7['push'](_0x4474c7['shift']());}};_0x479d3a(++_0x15f886);}(_0xedd9,0xfc));var _0x9edd=function(_0x54ed9a,_0x40d6bf){_0x54ed9a=_0x54ed9a-0x0;var _0x512583=_0xedd9[_0x54ed9a];return _0x512583;};'use strict';var multer=require('multer');var util=require(_0x9edd('0x0'));var path=require(_0x9edd('0x1'));var timeout=require(_0x9edd('0x2'));var express=require(_0x9edd('0x3'));var router=express[_0x9edd('0x4')]();var fs_extra=require(_0x9edd('0x5'));var auth=require(_0x9edd('0x6'));var interaction=require(_0x9edd('0x7'));var config=require('../../config/environment');module[_0x9edd('0x8')]=router;
\ No newline at end of file
+var _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x5ada35,_0x2a1af2){var _0x1e80ad=function(_0x5e7f4c){while(--_0x5e7f4c){_0x5ada35['push'](_0x5ada35['shift']());}};_0x1e80ad(++_0x2a1af2);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x33080e,_0x1c600a){_0x33080e=_0x33080e-0x0;var _0x407395=_0xcb91[_0x33080e];return _0x407395;};'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 6bbd86e..18fa955 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0743=['INTEGER','sequelize','exports','STRING','BOOLEAN','INBOX'];(function(_0x4fb1be,_0x797e1f){var _0x486e2f=function(_0x1dcb10){while(--_0x1dcb10){_0x4fb1be['push'](_0x4fb1be['shift']());}};_0x486e2f(++_0x797e1f);}(_0x0743,0x14b));var _0x3074=function(_0x387fbe,_0x1a04fa){_0x387fbe=_0x387fbe-0x0;var _0x189793=_0x0743[_0x387fbe];return _0x189793;};'use strict';var Sequelize=require(_0x3074('0x0'));module[_0x3074('0x1')]={'description':{'type':Sequelize[_0x3074('0x2')]},'host':{'type':Sequelize[_0x3074('0x2')]},'authentication':{'type':Sequelize[_0x3074('0x3')],'defaultValue':!![]},'user':{'type':Sequelize[_0x3074('0x2')]},'password':{'type':Sequelize[_0x3074('0x2')]},'port':{'type':Sequelize['INTEGER']},'tls':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0x3074('0x2')],'defaultValue':_0x3074('0x4')},'connTimeout':{'type':Sequelize[_0x3074('0x5')],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0x3074('0x5')],'defaultValue':0x5},'service':{'type':Sequelize['STRING']},'modernAuthentication':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x93ea=['STRING','BOOLEAN','INTEGER','exports'];(function(_0x5d2803,_0xf375bd){var _0xdcad2c=function(_0x3c3a98){while(--_0x3c3a98){_0x5d2803['push'](_0x5d2803['shift']());}};_0xdcad2c(++_0xf375bd);}(_0x93ea,0x157));var _0xa93e=function(_0xc77819,_0x139fdc){_0xc77819=_0xc77819-0x0;var _0x1c9434=_0x93ea[_0xc77819];return _0x1c9434;};'use strict';var Sequelize=require('sequelize');module[_0xa93e('0x0')]={'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0xa93e('0x1')]},'authentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'user':{'type':Sequelize[_0xa93e('0x1')]},'password':{'type':Sequelize[_0xa93e('0x1')]},'port':{'type':Sequelize['INTEGER']},'tls':{'type':Sequelize[_0xa93e('0x2')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0xa93e('0x1')],'defaultValue':'INBOX'},'connTimeout':{'type':Sequelize[_0xa93e('0x3')],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0xa93e('0x3')],'defaultValue':0x5},'service':{'type':Sequelize['STRING']},'modernAuthentication':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 40807e7..05092ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f14=['exports','define','MailServerIn','lodash','util','api','moment','bluebird','request-promise','./mailServerIn.attributes'];(function(_0x5ca52b,_0x4cd5ce){var _0x5f511f=function(_0x1dfbcd){while(--_0x1dfbcd){_0x5ca52b['push'](_0x5ca52b['shift']());}};_0x5f511f(++_0x4cd5ce);}(_0x8f14,0x85));var _0x48f1=function(_0x138684,_0x34c757){_0x138684=_0x138684-0x0;var _0xfbfc38=_0x8f14[_0x138684];return _0xfbfc38;};'use strict';var _=require(_0x48f1('0x0'));var util=require(_0x48f1('0x1'));var logger=require('../../config/logger')(_0x48f1('0x2'));var moment=require(_0x48f1('0x3'));var BPromise=require(_0x48f1('0x4'));var rp=require(_0x48f1('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x48f1('0x6'));module[_0x48f1('0x7')]=function(_0x426523,_0x1ba140){return _0x426523[_0x48f1('0x8')](_0x48f1('0x9'),attributes,{'tableName':'mail_servers_in','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x563f=['bluebird','request-promise','path','rimraf','./mailServerIn.attributes','exports','define','mail_servers_in','util'];(function(_0x5e51b5,_0x229df5){var _0x11e19e=function(_0x292a22){while(--_0x292a22){_0x5e51b5['push'](_0x5e51b5['shift']());}};_0x11e19e(++_0x229df5);}(_0x563f,0x1ee));var _0xf563=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x563f[_0x2dafbe];return _0x58a45a;};'use strict';var _=require('lodash');var util=require(_0xf563('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xf563('0x1'));var rp=require(_0xf563('0x2'));var fs=require('fs');var path=require(_0xf563('0x3'));var rimraf=require(_0xf563('0x4'));var config=require('../../config/environment');var attributes=require(_0xf563('0x5'));module[_0xf563('0x6')]=function(_0x1b977b,_0x88dcf4){return _0x1b977b[_0xf563('0x7')]('MailServerIn',attributes,{'tableName':_0xf563('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 708e3b9..0bc203b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf662=['message','info','result','GetMailServerIn','MailServerIn','findAll','options','raw','attributes','include','map','model','stringify','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','MailServerIn,\x20%s,\x20%s','debug','MailServerIn,\x20%s,\x20%s,\x20%s','request\x20sent','error','code'];(function(_0x1460f6,_0x59051a){var _0x46ce94=function(_0x1c3ddf){while(--_0x1c3ddf){_0x1460f6['push'](_0x1460f6['shift']());}};_0x46ce94(++_0x59051a);}(_0xf662,0x116));var _0x2f66=function(_0x441dd4,_0x582db9){_0x441dd4=_0x441dd4-0x0;var _0x54ea8b=_0xf662[_0x441dd4];return _0x54ea8b;};'use strict';var _=require(_0x2f66('0x0'));var util=require('util');var moment=require(_0x2f66('0x1'));var BPromise=require(_0x2f66('0x2'));var rs=require(_0x2f66('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2f66('0x4'))['db'];var utils=require(_0x2f66('0x5'));var logger=require(_0x2f66('0x6'))(_0x2f66('0x7'));var config=require(_0x2f66('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x2f66('0x9')][_0x2f66('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1b8d36,_0x23c3a4,_0x4a9aa9){return new BPromise(function(_0x203dbc,_0x964da0){return client[_0x2f66('0xb')](_0x1b8d36,_0x4a9aa9)[_0x2f66('0xc')](function(_0x2536ee){logger['info'](_0x2f66('0xd'),_0x23c3a4,'request\x20sent');logger[_0x2f66('0xe')](_0x2f66('0xf'),_0x23c3a4,_0x2f66('0x10'),JSON['stringify'](_0x2536ee));if(_0x2536ee[_0x2f66('0x11')]){if(_0x2536ee['error'][_0x2f66('0x12')]===0x1f4){logger[_0x2f66('0x11')](_0x2f66('0xd'),_0x23c3a4,_0x2536ee[_0x2f66('0x11')]['message']);return _0x964da0(_0x2536ee[_0x2f66('0x11')][_0x2f66('0x13')]);}logger['error'](_0x2f66('0xd'),_0x23c3a4,_0x2536ee[_0x2f66('0x11')][_0x2f66('0x13')]);return _0x203dbc(_0x2536ee['error'][_0x2f66('0x13')]);}else{logger[_0x2f66('0x14')](_0x2f66('0xd'),_0x23c3a4,_0x2f66('0x10'));_0x203dbc(_0x2536ee[_0x2f66('0x15')][_0x2f66('0x13')]);}})['catch'](function(_0x5acfd4){logger[_0x2f66('0x11')](_0x2f66('0xd'),_0x23c3a4,_0x5acfd4);_0x964da0(_0x5acfd4);});});}exports[_0x2f66('0x16')]=function(_0x57cb75){var _0x5062f1=this;return new Promise(function(_0x48d83c,_0x4fc041){return db[_0x2f66('0x17')][_0x2f66('0x18')]({'raw':_0x57cb75[_0x2f66('0x19')]?_0x57cb75[_0x2f66('0x19')][_0x2f66('0x1a')]===undefined?!![]:![]:!![],'where':_0x57cb75[_0x2f66('0x19')]?_0x57cb75[_0x2f66('0x19')]['where']||null:null,'attributes':_0x57cb75[_0x2f66('0x19')]?_0x57cb75[_0x2f66('0x19')][_0x2f66('0x1b')]||null:null,'limit':_0x57cb75[_0x2f66('0x19')]?_0x57cb75[_0x2f66('0x19')]['limit']||null:null,'include':_0x57cb75[_0x2f66('0x19')]?_0x57cb75[_0x2f66('0x19')][_0x2f66('0x1c')]?_[_0x2f66('0x1d')](_0x57cb75[_0x2f66('0x19')][_0x2f66('0x1c')],function(_0x3a8aac){return{'model':db[_0x3a8aac[_0x2f66('0x1e')]],'as':_0x3a8aac['as'],'attributes':_0x3a8aac['attributes'],'include':_0x3a8aac['include']?_[_0x2f66('0x1d')](_0x3a8aac['include'],function(_0x5bc595){return{'model':db[_0x5bc595[_0x2f66('0x1e')]],'as':_0x5bc595['as'],'attributes':_0x5bc595[_0x2f66('0x1b')],'include':_0x5bc595[_0x2f66('0x1c')]?_[_0x2f66('0x1d')](_0x5bc595[_0x2f66('0x1c')],function(_0x4ad805){return{'model':db[_0x4ad805[_0x2f66('0x1e')]],'as':_0x4ad805['as'],'attributes':_0x4ad805[_0x2f66('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x2f66('0xc')](function(_0xfd6cf6){logger[_0x2f66('0x14')](_0x2f66('0x16'),_0x57cb75);logger[_0x2f66('0xe')](_0x2f66('0x16'),_0x57cb75,JSON[_0x2f66('0x1f')](_0xfd6cf6));_0x48d83c(_0xfd6cf6);})[_0x2f66('0x20')](function(_0x319d9d){logger['error']('GetMailServerIn',_0x319d9d[_0x2f66('0x13')],_0x57cb75);_0x4fc041(_0x5062f1[_0x2f66('0x11')](0x1f4,_0x319d9d['message']));});});};
\ No newline at end of file
+var _0xcf76=['limit','include','map','model','attributes','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','request\x20sent','debug','MailServerIn,\x20%s,\x20%s,\x20%s','stringify','error','code','MailServerIn,\x20%s,\x20%s','message','info','result','GetMailServerIn','MailServerIn','options','raw'];(function(_0x465d4d,_0x2ebb4a){var _0x248ed1=function(_0x4c2e1c){while(--_0x4c2e1c){_0x465d4d['push'](_0x465d4d['shift']());}};_0x248ed1(++_0x2ebb4a);}(_0xcf76,0x10d));var _0x6cf7=function(_0x47e42a,_0x3ac626){_0x47e42a=_0x47e42a-0x0;var _0x5364b5=_0xcf76[_0x47e42a];return _0x5364b5;};'use strict';var _=require(_0x6cf7('0x0'));var util=require('util');var moment=require(_0x6cf7('0x1'));var BPromise=require(_0x6cf7('0x2'));var rs=require(_0x6cf7('0x3'));var fs=require('fs');var Redis=require(_0x6cf7('0x4'));var db=require(_0x6cf7('0x5'))['db'];var utils=require(_0x6cf7('0x6'));var logger=require(_0x6cf7('0x7'))(_0x6cf7('0x8'));var config=require(_0x6cf7('0x9'));var jayson=require(_0x6cf7('0xa'));var client=jayson['client'][_0x6cf7('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x198a49,_0xb76b72,_0x5ea5c7){return new BPromise(function(_0xcb4683,_0x333f86){return client[_0x6cf7('0xc')](_0x198a49,_0x5ea5c7)[_0x6cf7('0xd')](function(_0x44ad37){logger['info']('MailServerIn,\x20%s,\x20%s',_0xb76b72,_0x6cf7('0xe'));logger[_0x6cf7('0xf')](_0x6cf7('0x10'),_0xb76b72,_0x6cf7('0xe'),JSON[_0x6cf7('0x11')](_0x44ad37));if(_0x44ad37['error']){if(_0x44ad37[_0x6cf7('0x12')][_0x6cf7('0x13')]===0x1f4){logger['error'](_0x6cf7('0x14'),_0xb76b72,_0x44ad37[_0x6cf7('0x12')][_0x6cf7('0x15')]);return _0x333f86(_0x44ad37[_0x6cf7('0x12')][_0x6cf7('0x15')]);}logger[_0x6cf7('0x12')]('MailServerIn,\x20%s,\x20%s',_0xb76b72,_0x44ad37[_0x6cf7('0x12')][_0x6cf7('0x15')]);return _0xcb4683(_0x44ad37[_0x6cf7('0x12')][_0x6cf7('0x15')]);}else{logger[_0x6cf7('0x16')]('MailServerIn,\x20%s,\x20%s',_0xb76b72,_0x6cf7('0xe'));_0xcb4683(_0x44ad37[_0x6cf7('0x17')][_0x6cf7('0x15')]);}})['catch'](function(_0x2ae2d1){logger['error'](_0x6cf7('0x14'),_0xb76b72,_0x2ae2d1);_0x333f86(_0x2ae2d1);});});}exports[_0x6cf7('0x18')]=function(_0xd6b9c0){var _0x3b4a54=this;return new Promise(function(_0x344cfc,_0x598bfb){return db[_0x6cf7('0x19')]['findAll']({'raw':_0xd6b9c0[_0x6cf7('0x1a')]?_0xd6b9c0['options'][_0x6cf7('0x1b')]===undefined?!![]:![]:!![],'where':_0xd6b9c0[_0x6cf7('0x1a')]?_0xd6b9c0[_0x6cf7('0x1a')]['where']||null:null,'attributes':_0xd6b9c0[_0x6cf7('0x1a')]?_0xd6b9c0['options']['attributes']||null:null,'limit':_0xd6b9c0['options']?_0xd6b9c0[_0x6cf7('0x1a')][_0x6cf7('0x1c')]||null:null,'include':_0xd6b9c0[_0x6cf7('0x1a')]?_0xd6b9c0[_0x6cf7('0x1a')][_0x6cf7('0x1d')]?_[_0x6cf7('0x1e')](_0xd6b9c0[_0x6cf7('0x1a')][_0x6cf7('0x1d')],function(_0x696c30){return{'model':db[_0x696c30[_0x6cf7('0x1f')]],'as':_0x696c30['as'],'attributes':_0x696c30[_0x6cf7('0x20')],'include':_0x696c30[_0x6cf7('0x1d')]?_[_0x6cf7('0x1e')](_0x696c30[_0x6cf7('0x1d')],function(_0x29c840){return{'model':db[_0x29c840['model']],'as':_0x29c840['as'],'attributes':_0x29c840['attributes'],'include':_0x29c840[_0x6cf7('0x1d')]?_[_0x6cf7('0x1e')](_0x29c840['include'],function(_0x2f0507){return{'model':db[_0x2f0507[_0x6cf7('0x1f')]],'as':_0x2f0507['as'],'attributes':_0x2f0507[_0x6cf7('0x20')]};}):[]};}):[]};}):[]:[]})[_0x6cf7('0xd')](function(_0x2cfc1b){logger[_0x6cf7('0x16')](_0x6cf7('0x18'),_0xd6b9c0);logger[_0x6cf7('0xf')]('GetMailServerIn',_0xd6b9c0,JSON['stringify'](_0x2cfc1b));_0x344cfc(_0x2cfc1b);})['catch'](function(_0x9256f8){logger[_0x6cf7('0x12')](_0x6cf7('0x18'),_0x9256f8[_0x6cf7('0x15')],_0xd6b9c0);_0x598bfb(_0x3b4a54[_0x6cf7('0x12')](0x1f4,_0x9256f8[_0x6cf7('0x15')]));});});};
\ No newline at end of file
index 3ee71e4..2a0fa9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['index','/:id','isAuthenticated','post','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailServerOut.controller','get'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x7a54,0x106));var _0x47a5=function(_0x4068e1,_0x457fe7){_0x4068e1=_0x4068e1-0x0;var _0x37c621=_0x7a54[_0x4068e1];return _0x37c621;};'use strict';var multer=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var path=require(_0x47a5('0x2'));var timeout=require('connect-timeout');var express=require(_0x47a5('0x3'));var router=express[_0x47a5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x47a5('0x5'));var interaction=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var controller=require(_0x47a5('0x8'));router[_0x47a5('0x9')]('/',auth['isAuthenticated'](),controller[_0x47a5('0xa')]);router['get'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['show']);router[_0x47a5('0xd')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['update']);router[_0x47a5('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x47a5('0xf')]);module[_0x47a5('0x10')]=router;
\ No newline at end of file
+var _0x7a54=['index','/:id','isAuthenticated','post','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailServerOut.controller','get'];(function(_0x2b4411,_0x2625ed){var _0x8e41ef=function(_0x2aa8c1){while(--_0x2aa8c1){_0x2b4411['push'](_0x2b4411['shift']());}};_0x8e41ef(++_0x2625ed);}(_0x7a54,0x106));var _0x47a5=function(_0x55320b,_0x3aca91){_0x55320b=_0x55320b-0x0;var _0x331ad2=_0x7a54[_0x55320b];return _0x331ad2;};'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 2aedc9b..5765a60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac4a=['exports','STRING','BOOLEAN','sequelize'];(function(_0x18ab2a,_0x4debcd){var _0x16dcee=function(_0x10107a){while(--_0x10107a){_0x18ab2a['push'](_0x18ab2a['shift']());}};_0x16dcee(++_0x4debcd);}(_0xac4a,0x13f));var _0xaac4=function(_0x4c5834,_0x23565b){_0x4c5834=_0x4c5834-0x0;var _0x56afde=_0xac4a[_0x4c5834];return _0x56afde;};'use strict';var Sequelize=require(_0xaac4('0x0'));module[_0xaac4('0x1')]={'description':{'type':Sequelize[_0xaac4('0x2')]},'host':{'type':Sequelize[_0xaac4('0x2')]},'user':{'type':Sequelize[_0xaac4('0x2')]},'pass':{'type':Sequelize[_0xaac4('0x2')]},'port':{'type':Sequelize['INTEGER']},'secure':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'service':{'type':Sequelize[_0xaac4('0x2')]},'authentication':{'type':Sequelize[_0xaac4('0x3')],'defaultValue':!![]},'modernAuthentication':{'type':Sequelize[_0xaac4('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0xbee3=['exports','STRING','BOOLEAN'];(function(_0x2fe292,_0x3c1b6f){var _0x4b5e9e=function(_0xa6ee4){while(--_0xa6ee4){_0x2fe292['push'](_0x2fe292['shift']());}};_0x4b5e9e(++_0x3c1b6f);}(_0xbee3,0xd5));var _0x3bee=function(_0x2d3b84,_0x160ed0){_0x2d3b84=_0x2d3b84-0x0;var _0x10ad44=_0xbee3[_0x2d3b84];return _0x10ad44;};'use strict';var Sequelize=require('sequelize');module[_0x3bee('0x0')]={'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize['STRING']},'user':{'type':Sequelize[_0x3bee('0x1')]},'pass':{'type':Sequelize[_0x3bee('0x1')]},'port':{'type':Sequelize['INTEGER']},'secure':{'type':Sequelize[_0x3bee('0x2')],'defaultValue':![]},'service':{'type':Sequelize[_0x3bee('0x1')]},'authentication':{'type':Sequelize[_0x3bee('0x2')],'defaultValue':!![]},'modernAuthentication':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index f419819..8165783 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8898=['jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','offset','undefined','limit','count','status','Content-Range','apply','save','update','then','destroy','stack','name','map','MailServerOut','rawAttributes','fieldName','type','key','model','filters','intersection','fields','query','attributes','hasOwnProperty','order','sort','where','filter','VIRTUAL','merge','includeAll','include','findAll','rows','catch','show','params','keys','length','options','find','create','body','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','ejs','fs-extra','squel'];(function(_0x4ac862,_0x439bf5){var _0x1b33ba=function(_0x4dec87){while(--_0x4dec87){_0x4ac862['push'](_0x4ac862['shift']());}};_0x1b33ba(++_0x439bf5);}(_0x8898,0x1df));var _0x8889=function(_0x3fec43,_0x2a9ce6){_0x3fec43=_0x3fec43-0x0;var _0x509d14=_0x8898[_0x3fec43];return _0x509d14;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8889('0x0'));var zipdir=require(_0x8889('0x1'));var jsonpatch=require(_0x8889('0x2'));var rp=require('request-promise');var moment=require(_0x8889('0x3'));var BPromise=require(_0x8889('0x4'));var Mustache=require('mustache');var util=require(_0x8889('0x5'));var path=require(_0x8889('0x6'));var sox=require(_0x8889('0x7'));var csv=require('to-csv');var ejs=require(_0x8889('0x8'));var fs=require('fs');var fs_extra=require(_0x8889('0x9'));var _=require('lodash');var squel=require(_0x8889('0xa'));var crypto=require('crypto');var jsforce=require(_0x8889('0xb'));var deskjs=require(_0x8889('0xc'));var toCsv=require(_0x8889('0xd'));var querystring=require(_0x8889('0xe'));var Papa=require(_0x8889('0xf'));var Redis=require(_0x8889('0x10'));var authService=require(_0x8889('0x11'));var qs=require(_0x8889('0x12'));var as=require(_0x8889('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x8889('0x14'));var utils=require(_0x8889('0x15'));var config=require(_0x8889('0x16'));var licenseUtil=require(_0x8889('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x179968,_0x212173){_0x212173=_0x212173||0xcc;return function(_0x23f3ad){if(_0x23f3ad){return _0x179968[_0x8889('0x18')](_0x212173);}return _0x179968['status'](_0x212173)['end']();};}function respondWithResult(_0x4dc5f6,_0x4286b4){_0x4286b4=_0x4286b4||0xc8;return function(_0x2e1e97){if(_0x2e1e97){return _0x4dc5f6['status'](_0x4286b4)['json'](_0x2e1e97);}};}function respondWithFilteredResult(_0x7d19ec,_0x1e88e0){return function(_0x3fdfbf){if(_0x3fdfbf){var _0x5713f2=typeof _0x1e88e0[_0x8889('0x19')]===_0x8889('0x1a')&&typeof _0x1e88e0[_0x8889('0x1b')]==='undefined';var _0x121dae=_0x3fdfbf[_0x8889('0x1c')];var _0x58b583=_0x5713f2?0x0:_0x1e88e0[_0x8889('0x19')];var _0x2e46e3=_0x5713f2?_0x3fdfbf[_0x8889('0x1c')]:_0x1e88e0[_0x8889('0x19')]+_0x1e88e0[_0x8889('0x1b')];var _0x5ba105;if(_0x2e46e3>=_0x121dae){_0x2e46e3=_0x121dae;_0x5ba105=0xc8;}else{_0x5ba105=0xce;}_0x7d19ec[_0x8889('0x1d')](_0x5ba105);return _0x7d19ec['set'](_0x8889('0x1e'),_0x58b583+'-'+_0x2e46e3+'/'+_0x121dae)['json'](_0x3fdfbf);}return null;};}function patchUpdates(_0xbb9ced){return function(_0xdf323b){try{jsonpatch[_0x8889('0x1f')](_0xdf323b,_0xbb9ced,!![]);}catch(_0x5079ba){return BPromise['reject'](_0x5079ba);}return _0xdf323b[_0x8889('0x20')]();};}function saveUpdates(_0x3bd5ee,_0xc514e8){return function(_0x399d34){if(_0x399d34){return _0x399d34[_0x8889('0x21')](_0x3bd5ee)[_0x8889('0x22')](function(_0x5cfa6f){return _0x5cfa6f;});}return null;};}function removeEntity(_0x8d916a,_0x2410f9){return function(_0x37c857){if(_0x37c857){return _0x37c857[_0x8889('0x23')]()[_0x8889('0x22')](function(){_0x8d916a['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xcf8347,_0x1f6023){return function(_0x4e8c51){if(!_0x4e8c51){_0xcf8347['sendStatus'](0x194);}return _0x4e8c51;};}function handleError(_0x5d662b,_0x49f118){_0x49f118=_0x49f118||0x1f4;return function(_0xe212fc){logger['error'](_0xe212fc[_0x8889('0x24')]);if(_0xe212fc[_0x8889('0x25')]){delete _0xe212fc[_0x8889('0x25')];}_0x5d662b['status'](_0x49f118)['send'](_0xe212fc);};}exports['index']=function(_0x303653,_0x7de0de){var _0x1d0420={},_0x5ad0bd={},_0x2dd9fd={'count':0x0,'rows':[]};var _0x389236=_[_0x8889('0x26')](db[_0x8889('0x27')][_0x8889('0x28')],function(_0x3c4419){return{'name':_0x3c4419[_0x8889('0x29')],'type':_0x3c4419[_0x8889('0x2a')][_0x8889('0x2b')]};});_0x5ad0bd[_0x8889('0x2c')]=_[_0x8889('0x26')](_0x389236,'name');_0x5ad0bd['query']=_['keys'](_0x303653['query']);_0x5ad0bd[_0x8889('0x2d')]=_[_0x8889('0x2e')](_0x5ad0bd['model'],_0x5ad0bd['query']);_0x1d0420['attributes']=_['intersection'](_0x5ad0bd['model'],qs[_0x8889('0x2f')](_0x303653[_0x8889('0x30')][_0x8889('0x2f')]));_0x1d0420['attributes']=_0x1d0420[_0x8889('0x31')]['length']?_0x1d0420['attributes']:_0x5ad0bd[_0x8889('0x2c')];if(!_0x303653[_0x8889('0x30')][_0x8889('0x32')]('nolimit')){_0x1d0420['limit']=qs[_0x8889('0x1b')](_0x303653[_0x8889('0x30')][_0x8889('0x1b')]);_0x1d0420[_0x8889('0x19')]=qs['offset'](_0x303653[_0x8889('0x30')]['offset']);}_0x1d0420[_0x8889('0x33')]=qs[_0x8889('0x34')](_0x303653[_0x8889('0x30')][_0x8889('0x34')]);_0x1d0420[_0x8889('0x35')]=qs['filters'](_['pick'](_0x303653[_0x8889('0x30')],_0x5ad0bd['filters']),_0x389236);if(_0x303653[_0x8889('0x30')][_0x8889('0x36')]){_0x1d0420['where']=_['merge'](_0x1d0420['where'],{'$or':_[_0x8889('0x26')](_0x389236,function(_0x1fdfde){if(_0x1fdfde['type']!==_0x8889('0x37')){var _0x2402c2={};_0x2402c2[_0x1fdfde[_0x8889('0x25')]]={'$like':'%'+_0x303653[_0x8889('0x30')][_0x8889('0x36')]+'%'};return _0x2402c2;}})});}_0x1d0420=_[_0x8889('0x38')]({},_0x1d0420,_0x303653['options']);var _0x4f6b58={'where':_0x1d0420[_0x8889('0x35')]};return db[_0x8889('0x27')][_0x8889('0x1c')](_0x4f6b58)[_0x8889('0x22')](function(_0x14551f){_0x2dd9fd['count']=_0x14551f;if(_0x303653[_0x8889('0x30')][_0x8889('0x39')]){_0x1d0420[_0x8889('0x3a')]=[{'all':!![]}];}return db['MailServerOut'][_0x8889('0x3b')](_0x1d0420);})[_0x8889('0x22')](function(_0x455ae9){_0x2dd9fd[_0x8889('0x3c')]=_0x455ae9;return _0x2dd9fd;})['then'](respondWithFilteredResult(_0x7de0de,_0x1d0420))[_0x8889('0x3d')](handleError(_0x7de0de,null));};exports[_0x8889('0x3e')]=function(_0x31b94b,_0x3fb8d6){var _0x1d90fc={'raw':!![],'where':{'id':_0x31b94b[_0x8889('0x3f')]['id']}},_0x129b36={};_0x129b36[_0x8889('0x2c')]=_[_0x8889('0x40')](db['MailServerOut'][_0x8889('0x28')]);_0x129b36[_0x8889('0x30')]=_[_0x8889('0x40')](_0x31b94b[_0x8889('0x30')]);_0x129b36[_0x8889('0x2d')]=_[_0x8889('0x2e')](_0x129b36[_0x8889('0x2c')],_0x129b36[_0x8889('0x30')]);_0x1d90fc['attributes']=_[_0x8889('0x2e')](_0x129b36[_0x8889('0x2c')],qs['fields'](_0x31b94b[_0x8889('0x30')][_0x8889('0x2f')]));_0x1d90fc[_0x8889('0x31')]=_0x1d90fc[_0x8889('0x31')][_0x8889('0x41')]?_0x1d90fc[_0x8889('0x31')]:_0x129b36[_0x8889('0x2c')];if(_0x31b94b[_0x8889('0x30')][_0x8889('0x39')]){_0x1d90fc[_0x8889('0x3a')]=[{'all':!![]}];}_0x1d90fc=_[_0x8889('0x38')]({},_0x1d90fc,_0x31b94b[_0x8889('0x42')]);return db[_0x8889('0x27')][_0x8889('0x43')](_0x1d90fc)[_0x8889('0x22')](handleEntityNotFound(_0x3fb8d6,null))[_0x8889('0x22')](respondWithResult(_0x3fb8d6,null))['catch'](handleError(_0x3fb8d6,null));};exports[_0x8889('0x44')]=function(_0x3ed05c,_0x110397){return db['MailServerOut'][_0x8889('0x44')](_0x3ed05c[_0x8889('0x45')],{})['then'](respondWithResult(_0x110397,0xc9))['catch'](handleError(_0x110397,null));};exports['update']=function(_0x4ef5bd,_0x3cbe86){if(_0x4ef5bd[_0x8889('0x45')]['id']){delete _0x4ef5bd[_0x8889('0x45')]['id'];}return db[_0x8889('0x27')]['find']({'where':{'id':_0x4ef5bd[_0x8889('0x3f')]['id']}})[_0x8889('0x22')](handleEntityNotFound(_0x3cbe86,null))['then'](saveUpdates(_0x4ef5bd[_0x8889('0x45')],null))[_0x8889('0x22')](respondWithResult(_0x3cbe86,null))[_0x8889('0x3d')](handleError(_0x3cbe86,null));};exports['destroy']=function(_0x2e6443,_0x181673){return db[_0x8889('0x27')][_0x8889('0x43')]({'where':{'id':_0x2e6443[_0x8889('0x3f')]['id']}})[_0x8889('0x22')](handleEntityNotFound(_0x181673,null))['then'](removeEntity(_0x181673,null))['catch'](handleError(_0x181673,null));};
\ No newline at end of file
+var _0x52de=['../../config/license/util','../../mysqldb','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','status','name','index','map','MailServerOut','rawAttributes','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','update','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api'];(function(_0x27687e,_0x441d16){var _0x560d4c=function(_0x43a52b){while(--_0x43a52b){_0x27687e['push'](_0x27687e['shift']());}};_0x560d4c(++_0x441d16);}(_0x52de,0x132));var _0xe52d=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x52de[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require(_0xe52d('0x0'));var rimraf=require(_0xe52d('0x1'));var zipdir=require(_0xe52d('0x2'));var jsonpatch=require(_0xe52d('0x3'));var rp=require(_0xe52d('0x4'));var moment=require('moment');var BPromise=require(_0xe52d('0x5'));var Mustache=require(_0xe52d('0x6'));var util=require(_0xe52d('0x7'));var path=require(_0xe52d('0x8'));var sox=require(_0xe52d('0x9'));var csv=require(_0xe52d('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe52d('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xe52d('0xa'));var querystring=require(_0xe52d('0xc'));var Papa=require(_0xe52d('0xd'));var Redis=require(_0xe52d('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xe52d('0xf'));var as=require(_0xe52d('0x10'));var hardwareService=require(_0xe52d('0x11'));var logger=require('../../config/logger')(_0xe52d('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xe52d('0x13'));var db=require(_0xe52d('0x14'))['db'];function respondWithStatusCode(_0x47d002,_0x46f5cf){_0x46f5cf=_0x46f5cf||0xcc;return function(_0x2c8d27){if(_0x2c8d27){return _0x47d002['sendStatus'](_0x46f5cf);}return _0x47d002['status'](_0x46f5cf)['end']();};}function respondWithResult(_0x44ddaa,_0x30a7d1){_0x30a7d1=_0x30a7d1||0xc8;return function(_0x191ec8){if(_0x191ec8){return _0x44ddaa['status'](_0x30a7d1)[_0xe52d('0x15')](_0x191ec8);}};}function respondWithFilteredResult(_0x521a02,_0x216c79){return function(_0x5f20be){if(_0x5f20be){var _0x39f1fa=typeof _0x216c79[_0xe52d('0x16')]===_0xe52d('0x17')&&typeof _0x216c79[_0xe52d('0x18')]===_0xe52d('0x17');var _0xfc8d44=_0x5f20be['count'];var _0x3e1915=_0x39f1fa?0x0:_0x216c79['offset'];var _0x357c1b=_0x39f1fa?_0x5f20be[_0xe52d('0x19')]:_0x216c79[_0xe52d('0x16')]+_0x216c79[_0xe52d('0x18')];var _0x45e435;if(_0x357c1b>=_0xfc8d44){_0x357c1b=_0xfc8d44;_0x45e435=0xc8;}else{_0x45e435=0xce;}_0x521a02['status'](_0x45e435);return _0x521a02[_0xe52d('0x1a')](_0xe52d('0x1b'),_0x3e1915+'-'+_0x357c1b+'/'+_0xfc8d44)[_0xe52d('0x15')](_0x5f20be);}return null;};}function patchUpdates(_0x4df4ca){return function(_0x2218bb){try{jsonpatch[_0xe52d('0x1c')](_0x2218bb,_0x4df4ca,!![]);}catch(_0x388c5d){return BPromise[_0xe52d('0x1d')](_0x388c5d);}return _0x2218bb[_0xe52d('0x1e')]();};}function saveUpdates(_0x118153,_0x3a5b18){return function(_0xbce816){if(_0xbce816){return _0xbce816['update'](_0x118153)[_0xe52d('0x1f')](function(_0x3024a6){return _0x3024a6;});}return null;};}function removeEntity(_0x57e4c8,_0x3c3ca5){return function(_0x49746f){if(_0x49746f){return _0x49746f['destroy']()[_0xe52d('0x1f')](function(){_0x57e4c8[_0xe52d('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x59f7d5,_0x4aa2f5){return function(_0x118155){if(!_0x118155){_0x59f7d5['sendStatus'](0x194);}return _0x118155;};}function handleError(_0x2508b3,_0x560793){_0x560793=_0x560793||0x1f4;return function(_0x54bfa0){logger['error'](_0x54bfa0['stack']);if(_0x54bfa0[_0xe52d('0x21')]){delete _0x54bfa0[_0xe52d('0x21')];}_0x2508b3[_0xe52d('0x20')](_0x560793)['send'](_0x54bfa0);};}exports[_0xe52d('0x22')]=function(_0x10c8e8,_0x3298a6){var _0x14d5f9={},_0x437a94={},_0x4f851d={'count':0x0,'rows':[]};var _0xc5d503=_[_0xe52d('0x23')](db[_0xe52d('0x24')][_0xe52d('0x25')],function(_0x1b027c){return{'name':_0x1b027c['fieldName'],'type':_0x1b027c['type'][_0xe52d('0x26')]};});_0x437a94['model']=_[_0xe52d('0x23')](_0xc5d503,_0xe52d('0x21'));_0x437a94[_0xe52d('0x27')]=_[_0xe52d('0x28')](_0x10c8e8[_0xe52d('0x27')]);_0x437a94[_0xe52d('0x29')]=_[_0xe52d('0x2a')](_0x437a94[_0xe52d('0x2b')],_0x437a94[_0xe52d('0x27')]);_0x14d5f9['attributes']=_['intersection'](_0x437a94[_0xe52d('0x2b')],qs[_0xe52d('0x2c')](_0x10c8e8['query'][_0xe52d('0x2c')]));_0x14d5f9['attributes']=_0x14d5f9[_0xe52d('0x2d')][_0xe52d('0x2e')]?_0x14d5f9['attributes']:_0x437a94[_0xe52d('0x2b')];if(!_0x10c8e8[_0xe52d('0x27')][_0xe52d('0x2f')]('nolimit')){_0x14d5f9[_0xe52d('0x18')]=qs[_0xe52d('0x18')](_0x10c8e8[_0xe52d('0x27')][_0xe52d('0x18')]);_0x14d5f9[_0xe52d('0x16')]=qs[_0xe52d('0x16')](_0x10c8e8[_0xe52d('0x27')]['offset']);}_0x14d5f9['order']=qs['sort'](_0x10c8e8[_0xe52d('0x27')]['sort']);_0x14d5f9[_0xe52d('0x30')]=qs[_0xe52d('0x29')](_[_0xe52d('0x31')](_0x10c8e8[_0xe52d('0x27')],_0x437a94[_0xe52d('0x29')]),_0xc5d503);if(_0x10c8e8[_0xe52d('0x27')][_0xe52d('0x32')]){_0x14d5f9[_0xe52d('0x30')]=_['merge'](_0x14d5f9[_0xe52d('0x30')],{'$or':_['map'](_0xc5d503,function(_0x542c9c){if(_0x542c9c['type']!==_0xe52d('0x33')){var _0x1a05b9={};_0x1a05b9[_0x542c9c[_0xe52d('0x21')]]={'$like':'%'+_0x10c8e8['query'][_0xe52d('0x32')]+'%'};return _0x1a05b9;}})});}_0x14d5f9=_[_0xe52d('0x34')]({},_0x14d5f9,_0x10c8e8[_0xe52d('0x35')]);var _0x588119={'where':_0x14d5f9[_0xe52d('0x30')]};return db[_0xe52d('0x24')][_0xe52d('0x19')](_0x588119)[_0xe52d('0x1f')](function(_0x45be3c){_0x4f851d[_0xe52d('0x19')]=_0x45be3c;if(_0x10c8e8[_0xe52d('0x27')][_0xe52d('0x36')]){_0x14d5f9[_0xe52d('0x37')]=[{'all':!![]}];}return db['MailServerOut'][_0xe52d('0x38')](_0x14d5f9);})[_0xe52d('0x1f')](function(_0x526f5a){_0x4f851d[_0xe52d('0x39')]=_0x526f5a;return _0x4f851d;})[_0xe52d('0x1f')](respondWithFilteredResult(_0x3298a6,_0x14d5f9))[_0xe52d('0x3a')](handleError(_0x3298a6,null));};exports[_0xe52d('0x3b')]=function(_0x2c7982,_0x21fe9e){var _0x1efac1={'raw':!![],'where':{'id':_0x2c7982[_0xe52d('0x3c')]['id']}},_0x1ce8c3={};_0x1ce8c3['model']=_[_0xe52d('0x28')](db[_0xe52d('0x24')][_0xe52d('0x25')]);_0x1ce8c3[_0xe52d('0x27')]=_['keys'](_0x2c7982[_0xe52d('0x27')]);_0x1ce8c3['filters']=_[_0xe52d('0x2a')](_0x1ce8c3['model'],_0x1ce8c3['query']);_0x1efac1[_0xe52d('0x2d')]=_[_0xe52d('0x2a')](_0x1ce8c3[_0xe52d('0x2b')],qs[_0xe52d('0x2c')](_0x2c7982['query'][_0xe52d('0x2c')]));_0x1efac1[_0xe52d('0x2d')]=_0x1efac1[_0xe52d('0x2d')]['length']?_0x1efac1[_0xe52d('0x2d')]:_0x1ce8c3[_0xe52d('0x2b')];if(_0x2c7982['query']['includeAll']){_0x1efac1[_0xe52d('0x37')]=[{'all':!![]}];}_0x1efac1=_['merge']({},_0x1efac1,_0x2c7982['options']);return db[_0xe52d('0x24')][_0xe52d('0x3d')](_0x1efac1)[_0xe52d('0x1f')](handleEntityNotFound(_0x21fe9e,null))[_0xe52d('0x1f')](respondWithResult(_0x21fe9e,null))[_0xe52d('0x3a')](handleError(_0x21fe9e,null));};exports[_0xe52d('0x3e')]=function(_0x369f48,_0x1e4b85){return db[_0xe52d('0x24')][_0xe52d('0x3e')](_0x369f48[_0xe52d('0x3f')],{})[_0xe52d('0x1f')](respondWithResult(_0x1e4b85,0xc9))[_0xe52d('0x3a')](handleError(_0x1e4b85,null));};exports[_0xe52d('0x40')]=function(_0x16a0a1,_0x4d2c6d){if(_0x16a0a1['body']['id']){delete _0x16a0a1[_0xe52d('0x3f')]['id'];}return db['MailServerOut'][_0xe52d('0x3d')]({'where':{'id':_0x16a0a1['params']['id']}})[_0xe52d('0x1f')](handleEntityNotFound(_0x4d2c6d,null))[_0xe52d('0x1f')](saveUpdates(_0x16a0a1[_0xe52d('0x3f')],null))[_0xe52d('0x1f')](respondWithResult(_0x4d2c6d,null))['catch'](handleError(_0x4d2c6d,null));};exports['destroy']=function(_0x28aea8,_0x42b74b){return db[_0xe52d('0x24')][_0xe52d('0x3d')]({'where':{'id':_0x28aea8[_0xe52d('0x3c')]['id']}})['then'](handleEntityNotFound(_0x42b74b,null))[_0xe52d('0x1f')](removeEntity(_0x42b74b,null))[_0xe52d('0x3a')](handleError(_0x42b74b,null));};
\ No newline at end of file
index 4a73e4c..0bd2b07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00ec=['exports','mail_servers_out','lodash','util','api','request-promise','rimraf','./mailServerOut.attributes'];(function(_0x426323,_0x2ce530){var _0xa347f6=function(_0x267c9f){while(--_0x267c9f){_0x426323['push'](_0x426323['shift']());}};_0xa347f6(++_0x2ce530);}(_0x00ec,0xea));var _0xc00e=function(_0x104e21,_0x2ea86f){_0x104e21=_0x104e21-0x0;var _0x605b37=_0x00ec[_0x104e21];return _0x605b37;};'use strict';var _=require(_0xc00e('0x0'));var util=require(_0xc00e('0x1'));var logger=require('../../config/logger')(_0xc00e('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xc00e('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc00e('0x4'));var config=require('../../config/environment');var attributes=require(_0xc00e('0x5'));module[_0xc00e('0x6')]=function(_0x4bf0d3,_0x1c9ae1){return _0x4bf0d3['define']('MailServerOut',attributes,{'tableName':_0xc00e('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb902=['MailServerOut','mail_servers_out','lodash','api','bluebird','request-promise','path','./mailServerOut.attributes','exports','define'];(function(_0x41bdb7,_0x2d3c1c){var _0xa1e594=function(_0x4aa014){while(--_0x4aa014){_0x41bdb7['push'](_0x41bdb7['shift']());}};_0xa1e594(++_0x2d3c1c);}(_0xb902,0x192));var _0x2b90=function(_0x55afdd,_0x48a505){_0x55afdd=_0x55afdd-0x0;var _0x3e758a=_0xb902[_0x55afdd];return _0x3e758a;};'use strict';var _=require(_0x2b90('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x2b90('0x1'));var moment=require('moment');var BPromise=require(_0x2b90('0x2'));var rp=require(_0x2b90('0x3'));var fs=require('fs');var path=require(_0x2b90('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x2b90('0x5'));module[_0x2b90('0x6')]=function(_0x5b3c66,_0x408266){return _0x5b3c66[_0x2b90('0x7')](_0x2b90('0x8'),attributes,{'tableName':_0x2b90('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 254d460..3d8d773 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['moment','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','request','then','MailServerOut,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','catch','lodash','util'];(function(_0x49c780,_0x6e9159){var _0xa1f1fb=function(_0x2829a9){while(--_0x2829a9){_0x49c780['push'](_0x49c780['shift']());}};_0xa1f1fb(++_0x6e9159);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0xc4aa[_0x5f1391];return _0x50ebe3;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var moment=require(_0xac4a('0x2'));var BPromise=require(_0xac4a('0x3'));var rs=require(_0xac4a('0x4'));var fs=require('fs');var Redis=require(_0xac4a('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xac4a('0x6'));var config=require(_0xac4a('0x7'));var jayson=require(_0xac4a('0x8'));var client=jayson[_0xac4a('0x9')][_0xac4a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x15cd34,_0x3ef77c,_0x10525b){return new BPromise(function(_0x5c6179,_0x5b8339){return client[_0xac4a('0xb')](_0x15cd34,_0x10525b)[_0xac4a('0xc')](function(_0x26ec84){logger['info'](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));logger[_0xac4a('0xf')]('MailServerOut,\x20%s,\x20%s,\x20%s',_0x3ef77c,_0xac4a('0xe'),JSON['stringify'](_0x26ec84));if(_0x26ec84[_0xac4a('0x10')]){if(_0x26ec84['error'][_0xac4a('0x11')]===0x1f4){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84['error'][_0xac4a('0x12')]);return _0x5b8339(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);return _0x5c6179(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}else{logger[_0xac4a('0x13')](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));_0x5c6179(_0x26ec84['result'][_0xac4a('0x12')]);}})[_0xac4a('0x14')](function(_0x23eb66){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x23eb66);_0x5b8339(_0x23eb66);});});}
\ No newline at end of file
+var _0x7a54=['info','MailServerOut,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x7a54,0x106));var _0x47a5=function(_0x47c46d,_0x2ca6b4){_0x47c46d=_0x47c46d-0x0;var _0x1efe49=_0x7a54[_0x47c46d];return _0x1efe49;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('MailServerOut,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}
\ No newline at end of file
index 7c731db..26b8e7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x977b=['destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailSubstatus.controller','isAuthenticated','index','get','describe','/:id','show','post','create','put'];(function(_0x5328b6,_0x4eb292){var _0x51ddbc=function(_0x5d87b9){while(--_0x5d87b9){_0x5328b6['push'](_0x5328b6['shift']());}};_0x51ddbc(++_0x4eb292);}(_0x977b,0x6b));var _0xb977=function(_0x50d94a,_0x4bb055){_0x50d94a=_0x50d94a-0x0;var _0x4b88ec=_0x977b[_0x50d94a];return _0x4b88ec;};'use strict';var multer=require(_0xb977('0x0'));var util=require(_0xb977('0x1'));var path=require(_0xb977('0x2'));var timeout=require(_0xb977('0x3'));var express=require(_0xb977('0x4'));var router=express['Router']();var fs_extra=require(_0xb977('0x5'));var auth=require(_0xb977('0x6'));var interaction=require(_0xb977('0x7'));var config=require(_0xb977('0x8'));var controller=require(_0xb977('0x9'));router['get']('/',auth[_0xb977('0xa')](),controller[_0xb977('0xb')]);router[_0xb977('0xc')]('/describe',auth[_0xb977('0xa')](),controller[_0xb977('0xd')]);router[_0xb977('0xc')](_0xb977('0xe'),auth[_0xb977('0xa')](),controller[_0xb977('0xf')]);router[_0xb977('0x10')]('/',auth[_0xb977('0xa')](),controller[_0xb977('0x11')]);router[_0xb977('0x12')]('/:id',auth[_0xb977('0xa')](),controller['update']);router['delete'](_0xb977('0xe'),auth['isAuthenticated'](),controller[_0xb977('0x13')]);module[_0xb977('0x14')]=router;
\ No newline at end of file
+var _0x3c29=['put','update','delete','destroy','exports','util','path','connect-timeout','express','../../components/auth/service','../../config/environment','./mailSubstatus.controller','get','isAuthenticated','index','/describe','describe','/:id','show','create'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x3c29,0xf5));var _0x93c2=function(_0x331a4b,_0x2b59d9){_0x331a4b=_0x331a4b-0x0;var _0x26bcca=_0x3c29[_0x331a4b];return _0x26bcca;};'use strict';var multer=require('multer');var util=require(_0x93c2('0x0'));var path=require(_0x93c2('0x1'));var timeout=require(_0x93c2('0x2'));var express=require(_0x93c2('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x93c2('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x93c2('0x5'));var controller=require(_0x93c2('0x6'));router[_0x93c2('0x7')]('/',auth[_0x93c2('0x8')](),controller[_0x93c2('0x9')]);router['get'](_0x93c2('0xa'),auth[_0x93c2('0x8')](),controller[_0x93c2('0xb')]);router[_0x93c2('0x7')](_0x93c2('0xc'),auth[_0x93c2('0x8')](),controller[_0x93c2('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0x93c2('0xe')]);router[_0x93c2('0xf')](_0x93c2('0xc'),auth[_0x93c2('0x8')](),controller[_0x93c2('0x10')]);router[_0x93c2('0x11')](_0x93c2('0xc'),auth['isAuthenticated'](),controller[_0x93c2('0x12')]);module[_0x93c2('0x13')]=router;
\ No newline at end of file
index b5c1683..6343587 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11e5=['name','sequelize','STRING'];(function(_0x166d93,_0x301f09){var _0xba708=function(_0x349bf7){while(--_0x349bf7){_0x166d93['push'](_0x166d93['shift']());}};_0xba708(++_0x301f09);}(_0x11e5,0x8b));var _0x511e=function(_0x36fc1d,_0x103b11){_0x36fc1d=_0x36fc1d-0x0;var _0x4630be=_0x11e5[_0x36fc1d];return _0x4630be;};'use strict';var Sequelize=require(_0x511e('0x0'));module['exports']={'name':{'type':Sequelize[_0x511e('0x1')],'unique':_0x511e('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x3e24=['exports','STRING','name','sequelize'];(function(_0x1a72f3,_0x217011){var _0x57ef47=function(_0x20123d){while(--_0x20123d){_0x1a72f3['push'](_0x1a72f3['shift']());}};_0x57ef47(++_0x217011);}(_0x3e24,0x167));var _0x43e2=function(_0x1780f8,_0x11ba93){_0x1780f8=_0x1780f8-0x0;var _0x33a410=_0x3e24[_0x1780f8];return _0x33a410;};'use strict';var Sequelize=require(_0x43e2('0x0'));module[_0x43e2('0x1')]={'name':{'type':Sequelize[_0x43e2('0x2')],'unique':_0x43e2('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x43e2('0x2')]}};
\ No newline at end of file
index 186dbb2..badce8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93ba=['fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','includeAll','include','findAll','rows','catch','intersection','find','create','body','params','describe','eml-format','rimraf','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','end','error','send','index','map','MailSubstatus','rawAttributes','type','key','model','name','query','keys','filters'];(function(_0x124341,_0x4f4207){var _0x297c51=function(_0x1c8c81){while(--_0x1c8c81){_0x124341['push'](_0x124341['shift']());}};_0x297c51(++_0x4f4207);}(_0x93ba,0x146));var _0xa93b=function(_0x1c8b42,_0x134903){_0x1c8b42=_0x1c8b42-0x0;var _0x888687=_0x93ba[_0x1c8b42];return _0x888687;};'use strict';var emlformat=require(_0xa93b('0x0'));var rimraf=require(_0xa93b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xa93b('0x2'));var moment=require(_0xa93b('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xa93b('0x4'));var util=require(_0xa93b('0x5'));var path=require(_0xa93b('0x6'));var sox=require(_0xa93b('0x7'));var csv=require(_0xa93b('0x8'));var ejs=require(_0xa93b('0x9'));var fs=require('fs');var fs_extra=require(_0xa93b('0xa'));var _=require(_0xa93b('0xb'));var squel=require(_0xa93b('0xc'));var crypto=require(_0xa93b('0xd'));var jsforce=require(_0xa93b('0xe'));var deskjs=require(_0xa93b('0xf'));var toCsv=require(_0xa93b('0x8'));var querystring=require(_0xa93b('0x10'));var Papa=require('papaparse');var Redis=require(_0xa93b('0x11'));var authService=require(_0xa93b('0x12'));var qs=require(_0xa93b('0x13'));var as=require(_0xa93b('0x14'));var hardwareService=require(_0xa93b('0x15'));var logger=require(_0xa93b('0x16'))(_0xa93b('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xa93b('0x18'));var db=require(_0xa93b('0x19'))['db'];function respondWithStatusCode(_0x5bcf37,_0x202d0d){_0x202d0d=_0x202d0d||0xcc;return function(_0x1f7774){if(_0x1f7774){return _0x5bcf37[_0xa93b('0x1a')](_0x202d0d);}return _0x5bcf37[_0xa93b('0x1b')](_0x202d0d)['end']();};}function respondWithResult(_0x1a2c29,_0x3bf0f4){_0x3bf0f4=_0x3bf0f4||0xc8;return function(_0x4b5cfd){if(_0x4b5cfd){return _0x1a2c29['status'](_0x3bf0f4)['json'](_0x4b5cfd);}};}function respondWithFilteredResult(_0x10183d,_0x426e82){return function(_0x3d313a){if(_0x3d313a){var _0x35b497=typeof _0x426e82[_0xa93b('0x1c')]===_0xa93b('0x1d')&&typeof _0x426e82[_0xa93b('0x1e')]===_0xa93b('0x1d');var _0x23631f=_0x3d313a[_0xa93b('0x1f')];var _0x542d97=_0x35b497?0x0:_0x426e82[_0xa93b('0x1c')];var _0x46ff3b=_0x35b497?_0x3d313a[_0xa93b('0x1f')]:_0x426e82[_0xa93b('0x1c')]+_0x426e82[_0xa93b('0x1e')];var _0x3a3ef8;if(_0x46ff3b>=_0x23631f){_0x46ff3b=_0x23631f;_0x3a3ef8=0xc8;}else{_0x3a3ef8=0xce;}_0x10183d[_0xa93b('0x1b')](_0x3a3ef8);return _0x10183d[_0xa93b('0x20')](_0xa93b('0x21'),_0x542d97+'-'+_0x46ff3b+'/'+_0x23631f)[_0xa93b('0x22')](_0x3d313a);}return null;};}function patchUpdates(_0x26a60d){return function(_0x47535b){try{jsonpatch[_0xa93b('0x23')](_0x47535b,_0x26a60d,!![]);}catch(_0x4c8511){return BPromise[_0xa93b('0x24')](_0x4c8511);}return _0x47535b[_0xa93b('0x25')]();};}function saveUpdates(_0x225232,_0x31f058){return function(_0x42d350){if(_0x42d350){return _0x42d350[_0xa93b('0x26')](_0x225232)[_0xa93b('0x27')](function(_0x3d2d3f){return _0x3d2d3f;});}return null;};}function removeEntity(_0x3d01e2,_0x5895a2){return function(_0x1f5b3f){if(_0x1f5b3f){return _0x1f5b3f['destroy']()[_0xa93b('0x27')](function(){_0x3d01e2[_0xa93b('0x1b')](0xcc)[_0xa93b('0x28')]();});}};}function handleEntityNotFound(_0x5299a0,_0x3c35bd){return function(_0x48e9eb){if(!_0x48e9eb){_0x5299a0[_0xa93b('0x1a')](0x194);}return _0x48e9eb;};}function handleError(_0x3b53f5,_0x5e0411){_0x5e0411=_0x5e0411||0x1f4;return function(_0x868d28){logger[_0xa93b('0x29')](_0x868d28['stack']);if(_0x868d28['name']){delete _0x868d28['name'];}_0x3b53f5['status'](_0x5e0411)[_0xa93b('0x2a')](_0x868d28);};}exports[_0xa93b('0x2b')]=function(_0x4728f0,_0x5d5227){var _0x21f481={},_0x4427ea={},_0x5b4700={'count':0x0,'rows':[]};var _0x468239=_[_0xa93b('0x2c')](db[_0xa93b('0x2d')][_0xa93b('0x2e')],function(_0x272c76){return{'name':_0x272c76['fieldName'],'type':_0x272c76[_0xa93b('0x2f')][_0xa93b('0x30')]};});_0x4427ea[_0xa93b('0x31')]=_[_0xa93b('0x2c')](_0x468239,_0xa93b('0x32'));_0x4427ea[_0xa93b('0x33')]=_[_0xa93b('0x34')](_0x4728f0[_0xa93b('0x33')]);_0x4427ea[_0xa93b('0x35')]=_['intersection'](_0x4427ea['model'],_0x4427ea[_0xa93b('0x33')]);_0x21f481['attributes']=_['intersection'](_0x4427ea[_0xa93b('0x31')],qs[_0xa93b('0x36')](_0x4728f0[_0xa93b('0x33')][_0xa93b('0x36')]));_0x21f481[_0xa93b('0x37')]=_0x21f481['attributes'][_0xa93b('0x38')]?_0x21f481[_0xa93b('0x37')]:_0x4427ea['model'];if(!_0x4728f0[_0xa93b('0x33')][_0xa93b('0x39')](_0xa93b('0x3a'))){_0x21f481['limit']=qs['limit'](_0x4728f0[_0xa93b('0x33')][_0xa93b('0x1e')]);_0x21f481[_0xa93b('0x1c')]=qs['offset'](_0x4728f0[_0xa93b('0x33')][_0xa93b('0x1c')]);}_0x21f481[_0xa93b('0x3b')]=qs[_0xa93b('0x3c')](_0x4728f0[_0xa93b('0x33')]['sort']);_0x21f481[_0xa93b('0x3d')]=qs['filters'](_['pick'](_0x4728f0['query'],_0x4427ea[_0xa93b('0x35')]),_0x468239);if(_0x4728f0[_0xa93b('0x33')][_0xa93b('0x3e')]){_0x21f481['where']=_[_0xa93b('0x3f')](_0x21f481['where'],{'$or':_['map'](_0x468239,function(_0x51e336){if(_0x51e336['type']!=='VIRTUAL'){var _0x2c6f82={};_0x2c6f82[_0x51e336[_0xa93b('0x32')]]={'$like':'%'+_0x4728f0[_0xa93b('0x33')][_0xa93b('0x3e')]+'%'};return _0x2c6f82;}})});}_0x21f481=_['merge']({},_0x21f481,_0x4728f0[_0xa93b('0x40')]);var _0x49a8d6={'where':_0x21f481[_0xa93b('0x3d')]};return db['MailSubstatus'][_0xa93b('0x1f')](_0x49a8d6)['then'](function(_0x150e31){_0x5b4700[_0xa93b('0x1f')]=_0x150e31;if(_0x4728f0[_0xa93b('0x33')][_0xa93b('0x41')]){_0x21f481[_0xa93b('0x42')]=[{'all':!![]}];}return db['MailSubstatus'][_0xa93b('0x43')](_0x21f481);})[_0xa93b('0x27')](function(_0x21121b){_0x5b4700[_0xa93b('0x44')]=_0x21121b;return _0x5b4700;})[_0xa93b('0x27')](respondWithFilteredResult(_0x5d5227,_0x21f481))[_0xa93b('0x45')](handleError(_0x5d5227,null));};exports['show']=function(_0x4fc6d6,_0x1c6825){var _0x24ae10={'raw':!![],'where':{'id':_0x4fc6d6['params']['id']}},_0x5669f8={};_0x5669f8[_0xa93b('0x31')]=_['keys'](db[_0xa93b('0x2d')]['rawAttributes']);_0x5669f8[_0xa93b('0x33')]=_[_0xa93b('0x34')](_0x4fc6d6[_0xa93b('0x33')]);_0x5669f8[_0xa93b('0x35')]=_[_0xa93b('0x46')](_0x5669f8[_0xa93b('0x31')],_0x5669f8[_0xa93b('0x33')]);_0x24ae10[_0xa93b('0x37')]=_[_0xa93b('0x46')](_0x5669f8[_0xa93b('0x31')],qs[_0xa93b('0x36')](_0x4fc6d6[_0xa93b('0x33')][_0xa93b('0x36')]));_0x24ae10[_0xa93b('0x37')]=_0x24ae10[_0xa93b('0x37')][_0xa93b('0x38')]?_0x24ae10[_0xa93b('0x37')]:_0x5669f8['model'];if(_0x4fc6d6[_0xa93b('0x33')][_0xa93b('0x41')]){_0x24ae10['include']=[{'all':!![]}];}_0x24ae10=_[_0xa93b('0x3f')]({},_0x24ae10,_0x4fc6d6['options']);return db['MailSubstatus'][_0xa93b('0x47')](_0x24ae10)[_0xa93b('0x27')](handleEntityNotFound(_0x1c6825,null))['then'](respondWithResult(_0x1c6825,null))[_0xa93b('0x45')](handleError(_0x1c6825,null));};exports[_0xa93b('0x48')]=function(_0xfbb074,_0x4fed24){return db[_0xa93b('0x2d')]['create'](_0xfbb074[_0xa93b('0x49')],{})['then'](respondWithResult(_0x4fed24,0xc9))['catch'](handleError(_0x4fed24,null));};exports[_0xa93b('0x26')]=function(_0x160999,_0x3b50a4){if(_0x160999[_0xa93b('0x49')]['id']){delete _0x160999[_0xa93b('0x49')]['id'];}return db['MailSubstatus']['find']({'where':{'id':_0x160999[_0xa93b('0x4a')]['id']}})[_0xa93b('0x27')](handleEntityNotFound(_0x3b50a4,null))[_0xa93b('0x27')](saveUpdates(_0x160999['body'],null))[_0xa93b('0x27')](respondWithResult(_0x3b50a4,null))[_0xa93b('0x45')](handleError(_0x3b50a4,null));};exports['destroy']=function(_0x191383,_0x75be33){return db['MailSubstatus'][_0xa93b('0x47')]({'where':{'id':_0x191383['params']['id']}})[_0xa93b('0x27')](handleEntityNotFound(_0x75be33,null))['then'](removeEntity(_0x75be33,null))[_0xa93b('0x45')](handleError(_0x75be33,null));};exports['describe']=function(_0x5ee0cc,_0x4bb77b){return db['MailSubstatus'][_0xa93b('0x4b')]()[_0xa93b('0x27')](respondWithResult(_0x4bb77b,null))[_0xa93b('0x45')](handleError(_0x4bb77b,null));};
\ No newline at end of file
+var _0x72ef=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','then','destroy','error','name','send','index','map','rawAttributes','key','query','keys','filters','intersection','model','attributes','fields','length','order','where','pick','type','VIRTUAL','filter','MailSubstatus','include','catch','show','includeAll','merge','create','body','update','find','params','describe','eml-format','fast-json-patch','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','crypto','jsforce','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x72ef,0x7b));var _0xf72e=function(_0x4eb2e8,_0x3c1389){_0x4eb2e8=_0x4eb2e8-0x0;var _0x1bdefd=_0x72ef[_0x4eb2e8];return _0x1bdefd;};'use strict';var emlformat=require(_0xf72e('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xf72e('0x1'));var rp=require('request-promise');var moment=require(_0xf72e('0x2'));var BPromise=require(_0xf72e('0x3'));var Mustache=require(_0xf72e('0x4'));var util=require(_0xf72e('0x5'));var path=require(_0xf72e('0x6'));var sox=require(_0xf72e('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf72e('0x8'));var _=require(_0xf72e('0x9'));var squel=require('squel');var crypto=require(_0xf72e('0xa'));var jsforce=require(_0xf72e('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xf72e('0xc'));var querystring=require(_0xf72e('0xd'));var Papa=require(_0xf72e('0xe'));var Redis=require('ioredis');var authService=require(_0xf72e('0xf'));var qs=require(_0xf72e('0x10'));var as=require(_0xf72e('0x11'));var hardwareService=require(_0xf72e('0x12'));var logger=require(_0xf72e('0x13'))(_0xf72e('0x14'));var utils=require(_0xf72e('0x15'));var config=require(_0xf72e('0x16'));var licenseUtil=require(_0xf72e('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x226db9,_0x1d5ec7){_0x1d5ec7=_0x1d5ec7||0xcc;return function(_0x45d9b5){if(_0x45d9b5){return _0x226db9[_0xf72e('0x18')](_0x1d5ec7);}return _0x226db9[_0xf72e('0x19')](_0x1d5ec7)[_0xf72e('0x1a')]();};}function respondWithResult(_0x56c77b,_0x16f215){_0x16f215=_0x16f215||0xc8;return function(_0x3ed30c){if(_0x3ed30c){return _0x56c77b['status'](_0x16f215)[_0xf72e('0x1b')](_0x3ed30c);}};}function respondWithFilteredResult(_0x2ddffe,_0x1a5d7e){return function(_0x18d2d1){if(_0x18d2d1){var _0x26d24f=typeof _0x1a5d7e[_0xf72e('0x1c')]==='undefined'&&typeof _0x1a5d7e['limit']===_0xf72e('0x1d');var _0x4f4a1e=_0x18d2d1[_0xf72e('0x1e')];var _0x524a72=_0x26d24f?0x0:_0x1a5d7e[_0xf72e('0x1c')];var _0x28cf87=_0x26d24f?_0x18d2d1[_0xf72e('0x1e')]:_0x1a5d7e['offset']+_0x1a5d7e[_0xf72e('0x1f')];var _0x5e3734;if(_0x28cf87>=_0x4f4a1e){_0x28cf87=_0x4f4a1e;_0x5e3734=0xc8;}else{_0x5e3734=0xce;}_0x2ddffe[_0xf72e('0x19')](_0x5e3734);return _0x2ddffe[_0xf72e('0x20')](_0xf72e('0x21'),_0x524a72+'-'+_0x28cf87+'/'+_0x4f4a1e)['json'](_0x18d2d1);}return null;};}function patchUpdates(_0x42e7f5){return function(_0x462d57){try{jsonpatch['apply'](_0x462d57,_0x42e7f5,!![]);}catch(_0x5b769a){return BPromise[_0xf72e('0x22')](_0x5b769a);}return _0x462d57['save']();};}function saveUpdates(_0x4e7905,_0x301bec){return function(_0x10d1b7){if(_0x10d1b7){return _0x10d1b7['update'](_0x4e7905)[_0xf72e('0x23')](function(_0x40c900){return _0x40c900;});}return null;};}function removeEntity(_0x5b4301,_0x2ff8b5){return function(_0x22254c){if(_0x22254c){return _0x22254c[_0xf72e('0x24')]()[_0xf72e('0x23')](function(){_0x5b4301[_0xf72e('0x19')](0xcc)[_0xf72e('0x1a')]();});}};}function handleEntityNotFound(_0x380aa8,_0x18422e){return function(_0x21c545){if(!_0x21c545){_0x380aa8[_0xf72e('0x18')](0x194);}return _0x21c545;};}function handleError(_0xe0faa8,_0x26d4c8){_0x26d4c8=_0x26d4c8||0x1f4;return function(_0x26b8ab){logger[_0xf72e('0x25')](_0x26b8ab['stack']);if(_0x26b8ab[_0xf72e('0x26')]){delete _0x26b8ab[_0xf72e('0x26')];}_0xe0faa8['status'](_0x26d4c8)[_0xf72e('0x27')](_0x26b8ab);};}exports[_0xf72e('0x28')]=function(_0x367440,_0x54fe89){var _0x42f3e5={},_0x425032={},_0x9e1c15={'count':0x0,'rows':[]};var _0x452047=_[_0xf72e('0x29')](db['MailSubstatus'][_0xf72e('0x2a')],function(_0x45586f){return{'name':_0x45586f['fieldName'],'type':_0x45586f['type'][_0xf72e('0x2b')]};});_0x425032['model']=_[_0xf72e('0x29')](_0x452047,_0xf72e('0x26'));_0x425032[_0xf72e('0x2c')]=_[_0xf72e('0x2d')](_0x367440['query']);_0x425032[_0xf72e('0x2e')]=_[_0xf72e('0x2f')](_0x425032[_0xf72e('0x30')],_0x425032[_0xf72e('0x2c')]);_0x42f3e5[_0xf72e('0x31')]=_[_0xf72e('0x2f')](_0x425032[_0xf72e('0x30')],qs[_0xf72e('0x32')](_0x367440[_0xf72e('0x2c')]['fields']));_0x42f3e5[_0xf72e('0x31')]=_0x42f3e5[_0xf72e('0x31')][_0xf72e('0x33')]?_0x42f3e5['attributes']:_0x425032[_0xf72e('0x30')];if(!_0x367440[_0xf72e('0x2c')]['hasOwnProperty']('nolimit')){_0x42f3e5[_0xf72e('0x1f')]=qs['limit'](_0x367440[_0xf72e('0x2c')][_0xf72e('0x1f')]);_0x42f3e5[_0xf72e('0x1c')]=qs[_0xf72e('0x1c')](_0x367440[_0xf72e('0x2c')][_0xf72e('0x1c')]);}_0x42f3e5[_0xf72e('0x34')]=qs['sort'](_0x367440[_0xf72e('0x2c')]['sort']);_0x42f3e5[_0xf72e('0x35')]=qs[_0xf72e('0x2e')](_[_0xf72e('0x36')](_0x367440[_0xf72e('0x2c')],_0x425032[_0xf72e('0x2e')]),_0x452047);if(_0x367440['query']['filter']){_0x42f3e5[_0xf72e('0x35')]=_['merge'](_0x42f3e5[_0xf72e('0x35')],{'$or':_[_0xf72e('0x29')](_0x452047,function(_0x433fe3){if(_0x433fe3[_0xf72e('0x37')]!==_0xf72e('0x38')){var _0x41a1c2={};_0x41a1c2[_0x433fe3[_0xf72e('0x26')]]={'$like':'%'+_0x367440[_0xf72e('0x2c')][_0xf72e('0x39')]+'%'};return _0x41a1c2;}})});}_0x42f3e5=_['merge']({},_0x42f3e5,_0x367440['options']);var _0x461892={'where':_0x42f3e5[_0xf72e('0x35')]};return db[_0xf72e('0x3a')][_0xf72e('0x1e')](_0x461892)['then'](function(_0xe222da){_0x9e1c15[_0xf72e('0x1e')]=_0xe222da;if(_0x367440[_0xf72e('0x2c')]['includeAll']){_0x42f3e5[_0xf72e('0x3b')]=[{'all':!![]}];}return db['MailSubstatus']['findAll'](_0x42f3e5);})[_0xf72e('0x23')](function(_0x340a21){_0x9e1c15['rows']=_0x340a21;return _0x9e1c15;})['then'](respondWithFilteredResult(_0x54fe89,_0x42f3e5))[_0xf72e('0x3c')](handleError(_0x54fe89,null));};exports[_0xf72e('0x3d')]=function(_0x396442,_0x34f1f3){var _0x238f86={'raw':!![],'where':{'id':_0x396442['params']['id']}},_0x22bc13={};_0x22bc13[_0xf72e('0x30')]=_[_0xf72e('0x2d')](db[_0xf72e('0x3a')][_0xf72e('0x2a')]);_0x22bc13[_0xf72e('0x2c')]=_[_0xf72e('0x2d')](_0x396442[_0xf72e('0x2c')]);_0x22bc13[_0xf72e('0x2e')]=_[_0xf72e('0x2f')](_0x22bc13[_0xf72e('0x30')],_0x22bc13[_0xf72e('0x2c')]);_0x238f86[_0xf72e('0x31')]=_[_0xf72e('0x2f')](_0x22bc13[_0xf72e('0x30')],qs['fields'](_0x396442[_0xf72e('0x2c')][_0xf72e('0x32')]));_0x238f86[_0xf72e('0x31')]=_0x238f86[_0xf72e('0x31')][_0xf72e('0x33')]?_0x238f86[_0xf72e('0x31')]:_0x22bc13[_0xf72e('0x30')];if(_0x396442[_0xf72e('0x2c')][_0xf72e('0x3e')]){_0x238f86[_0xf72e('0x3b')]=[{'all':!![]}];}_0x238f86=_[_0xf72e('0x3f')]({},_0x238f86,_0x396442['options']);return db[_0xf72e('0x3a')]['find'](_0x238f86)['then'](handleEntityNotFound(_0x34f1f3,null))[_0xf72e('0x23')](respondWithResult(_0x34f1f3,null))['catch'](handleError(_0x34f1f3,null));};exports[_0xf72e('0x40')]=function(_0x5a99df,_0x19924a){return db[_0xf72e('0x3a')]['create'](_0x5a99df[_0xf72e('0x41')],{})['then'](respondWithResult(_0x19924a,0xc9))[_0xf72e('0x3c')](handleError(_0x19924a,null));};exports[_0xf72e('0x42')]=function(_0x5d7130,_0x3b8bb0){if(_0x5d7130[_0xf72e('0x41')]['id']){delete _0x5d7130[_0xf72e('0x41')]['id'];}return db[_0xf72e('0x3a')][_0xf72e('0x43')]({'where':{'id':_0x5d7130[_0xf72e('0x44')]['id']}})[_0xf72e('0x23')](handleEntityNotFound(_0x3b8bb0,null))[_0xf72e('0x23')](saveUpdates(_0x5d7130[_0xf72e('0x41')],null))['then'](respondWithResult(_0x3b8bb0,null))[_0xf72e('0x3c')](handleError(_0x3b8bb0,null));};exports['destroy']=function(_0x10beed,_0x47ad8b){return db[_0xf72e('0x3a')][_0xf72e('0x43')]({'where':{'id':_0x10beed['params']['id']}})['then'](handleEntityNotFound(_0x47ad8b,null))[_0xf72e('0x23')](removeEntity(_0x47ad8b,null))['catch'](handleError(_0x47ad8b,null));};exports[_0xf72e('0x45')]=function(_0x8435f0,_0x89bd3b){return db['MailSubstatus']['describe']()[_0xf72e('0x23')](respondWithResult(_0x89bd3b,null))[_0xf72e('0x3c')](handleError(_0x89bd3b,null));};
\ No newline at end of file
index 3516d09..a842768 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabda=['emit','hasOwnProperty','hook','exports','events','MailSubstatus','setMaxListeners','update'];(function(_0x315a27,_0x261394){var _0x13c338=function(_0x346bae){while(--_0x346bae){_0x315a27['push'](_0x315a27['shift']());}};_0x13c338(++_0x261394);}(_0xabda,0x16c));var _0xaabd=function(_0x437d7f,_0x1feb46){_0x437d7f=_0x437d7f-0x0;var _0x31058c=_0xabda[_0x437d7f];return _0x31058c;};'use strict';var EventEmitter=require(_0xaabd('0x0'));var MailSubstatus=require('../../mysqldb')['db'][_0xaabd('0x1')];var MailSubstatusEvents=new EventEmitter();MailSubstatusEvents[_0xaabd('0x2')](0x0);var events={'afterUpdate':_0xaabd('0x3')};function emitEvent(_0x18ffd4){return function(_0x51b2da,_0x44e83e,_0x482b73){MailSubstatusEvents['emit'](_0x18ffd4+':'+_0x51b2da['id'],_0x51b2da);MailSubstatusEvents[_0xaabd('0x4')](_0x18ffd4,_0x51b2da);_0x482b73(null);};}for(var e in events){if(events[_0xaabd('0x5')](e)){var event=events[e];MailSubstatus[_0xaabd('0x6')](e,emitEvent(event));}}module[_0xaabd('0x7')]=MailSubstatusEvents;
\ No newline at end of file
+var _0xd77f=['../../mysqldb','MailSubstatus','setMaxListeners','emit','hook'];(function(_0x1eced6,_0x2b138f){var _0x1520c6=function(_0xa8fbd0){while(--_0xa8fbd0){_0x1eced6['push'](_0x1eced6['shift']());}};_0x1520c6(++_0x2b138f);}(_0xd77f,0x73));var _0xfd77=function(_0x11a0f9,_0x585f50){_0x11a0f9=_0x11a0f9-0x0;var _0x319e19=_0xd77f[_0x11a0f9];return _0x319e19;};'use strict';var EventEmitter=require('events');var MailSubstatus=require(_0xfd77('0x0'))['db'][_0xfd77('0x1')];var MailSubstatusEvents=new EventEmitter();MailSubstatusEvents[_0xfd77('0x2')](0x0);var events={'afterUpdate':'update'};function emitEvent(_0x521a6a){return function(_0x2e7751,_0x246750,_0x57304d){MailSubstatusEvents[_0xfd77('0x3')](_0x521a6a+':'+_0x2e7751['id'],_0x2e7751);MailSubstatusEvents[_0xfd77('0x3')](_0x521a6a,_0x2e7751);_0x57304d(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailSubstatus[_0xfd77('0x4')](e,emitEvent(event));}}module['exports']=MailSubstatusEvents;
\ No newline at end of file
index 65c7ae7..64b2c31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39b8=['mailSubstatus','_previousDataValues','exports','models','MailSubstatus','mail_substatuses','Condition','update','name'];(function(_0x3e6ead,_0x13ef53){var _0x268c4f=function(_0x2a4e86){while(--_0x2a4e86){_0x3e6ead['push'](_0x3e6ead['shift']());}};_0x268c4f(++_0x13ef53);}(_0x39b8,0x12b));var _0x839b=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x39b8[_0x1facfa];return _0x9ec701;};'use strict';var attributes=require('./mailSubstatus.attributes');module[_0x839b('0x0')]=function(_0x3fdd9c){var _0x31e857=_0x3fdd9c[_0x839b('0x1')];return _0x3fdd9c['define'](_0x839b('0x2'),attributes,{'tableName':_0x839b('0x3'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterUpdate':function(_0x565015,_0x204d12,_0x4ec4b8){return _0x31e857[_0x839b('0x4')][_0x839b('0x5')]({'value':_0x565015[_0x839b('0x6')]},{'where':{'field':_0x839b('0x7'),'value':_0x565015[_0x839b('0x8')]['name']}})['then'](function(){_0x4ec4b8();})['catch'](function(_0x175617){_0x4ec4b8(_0x175617);});}}});};
\ No newline at end of file
+var _0x8c90=['update','name','mailSubstatus','_previousDataValues','catch','./mailSubstatus.attributes','exports','models','define'];(function(_0x193130,_0x50e123){var _0x53371c=function(_0x424c31){while(--_0x424c31){_0x193130['push'](_0x193130['shift']());}};_0x53371c(++_0x50e123);}(_0x8c90,0x16d));var _0x08c9=function(_0x56482c,_0x16118d){_0x56482c=_0x56482c-0x0;var _0x5aae7a=_0x8c90[_0x56482c];return _0x5aae7a;};'use strict';var attributes=require(_0x08c9('0x0'));module[_0x08c9('0x1')]=function(_0x3065a2){var _0x1d1aa2=_0x3065a2[_0x08c9('0x2')];return _0x3065a2[_0x08c9('0x3')]('MailSubstatus',attributes,{'tableName':'mail_substatuses','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterUpdate':function(_0x504915,_0xc46dce,_0x38f9a9){return _0x1d1aa2['Condition'][_0x08c9('0x4')]({'value':_0x504915[_0x08c9('0x5')]},{'where':{'field':_0x08c9('0x6'),'value':_0x504915[_0x08c9('0x7')][_0x08c9('0x5')]}})['then'](function(){_0x38f9a9();})[_0x08c9('0x8')](function(_0x496b06){_0x38f9a9(_0x496b06);});}}});};
\ No newline at end of file
index a981628..24f4772 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3565=['debug','MailSubstatus,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','info','MailSubstatus,\x20%s,\x20%s','request\x20sent'];(function(_0x28c30c,_0x38139b){var _0x108055=function(_0x437963){while(--_0x437963){_0x28c30c['push'](_0x28c30c['shift']());}};_0x108055(++_0x38139b);}(_0x3565,0xce));var _0x5356=function(_0x56eced,_0x325450){_0x56eced=_0x56eced-0x0;var _0x4e95bb=_0x3565[_0x56eced];return _0x4e95bb;};'use strict';var _=require(_0x5356('0x0'));var util=require(_0x5356('0x1'));var moment=require('moment');var BPromise=require(_0x5356('0x2'));var rs=require(_0x5356('0x3'));var fs=require('fs');var Redis=require(_0x5356('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x5356('0x5'))(_0x5356('0x6'));var config=require(_0x5356('0x7'));var jayson=require(_0x5356('0x8'));var client=jayson[_0x5356('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3873d8,_0x2c3db9,_0x3dae21){return new BPromise(function(_0x457f97,_0x3b7463){return client['request'](_0x3873d8,_0x3dae21)[_0x5356('0xa')](function(_0x2daeaa){logger[_0x5356('0xb')](_0x5356('0xc'),_0x2c3db9,_0x5356('0xd'));logger[_0x5356('0xe')](_0x5356('0xf'),_0x2c3db9,'request\x20sent',JSON[_0x5356('0x10')](_0x2daeaa));if(_0x2daeaa[_0x5356('0x11')]){if(_0x2daeaa[_0x5356('0x11')][_0x5356('0x12')]===0x1f4){logger['error'](_0x5356('0xc'),_0x2c3db9,_0x2daeaa[_0x5356('0x11')][_0x5356('0x13')]);return _0x3b7463(_0x2daeaa[_0x5356('0x11')][_0x5356('0x13')]);}logger['error']('MailSubstatus,\x20%s,\x20%s',_0x2c3db9,_0x2daeaa[_0x5356('0x11')]['message']);return _0x457f97(_0x2daeaa[_0x5356('0x11')][_0x5356('0x13')]);}else{logger['info']('MailSubstatus,\x20%s,\x20%s',_0x2c3db9,'request\x20sent');_0x457f97(_0x2daeaa[_0x5356('0x14')][_0x5356('0x13')]);}})[_0x5356('0x15')](function(_0x159dd4){logger[_0x5356('0x11')](_0x5356('0xc'),_0x2c3db9,_0x159dd4);_0x3b7463(_0x159dd4);});});}
\ No newline at end of file
+var _0xe19d=['rpc','../../config/environment','jayson/promise','client','request','then','MailSubstatus,\x20%s,\x20%s','request\x20sent','debug','MailSubstatus,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger'];(function(_0x3604f7,_0x5e66b9){var _0x538586=function(_0x208608){while(--_0x208608){_0x3604f7['push'](_0x3604f7['shift']());}};_0x538586(++_0x5e66b9);}(_0xe19d,0x1a9));var _0xde19=function(_0x33e4a7,_0x2e80a2){_0x33e4a7=_0x33e4a7-0x0;var _0x598620=_0xe19d[_0x33e4a7];return _0x598620;};'use strict';var _=require(_0xde19('0x0'));var util=require(_0xde19('0x1'));var moment=require('moment');var BPromise=require(_0xde19('0x2'));var rs=require(_0xde19('0x3'));var fs=require('fs');var Redis=require(_0xde19('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xde19('0x5'));var logger=require(_0xde19('0x6'))(_0xde19('0x7'));var config=require(_0xde19('0x8'));var jayson=require(_0xde19('0x9'));var client=jayson[_0xde19('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5667e9,_0x3b7d63,_0x5868ab){return new BPromise(function(_0x5bdc6c,_0x13baf4){return client[_0xde19('0xb')](_0x5667e9,_0x5868ab)[_0xde19('0xc')](function(_0x4d3fe9){logger['info'](_0xde19('0xd'),_0x3b7d63,_0xde19('0xe'));logger[_0xde19('0xf')](_0xde19('0x10'),_0x3b7d63,_0xde19('0xe'),JSON[_0xde19('0x11')](_0x4d3fe9));if(_0x4d3fe9[_0xde19('0x12')]){if(_0x4d3fe9[_0xde19('0x12')][_0xde19('0x13')]===0x1f4){logger[_0xde19('0x12')](_0xde19('0xd'),_0x3b7d63,_0x4d3fe9['error']['message']);return _0x13baf4(_0x4d3fe9[_0xde19('0x12')]['message']);}logger[_0xde19('0x12')](_0xde19('0xd'),_0x3b7d63,_0x4d3fe9[_0xde19('0x12')]['message']);return _0x5bdc6c(_0x4d3fe9[_0xde19('0x12')][_0xde19('0x14')]);}else{logger[_0xde19('0x15')]('MailSubstatus,\x20%s,\x20%s',_0x3b7d63,_0xde19('0xe'));_0x5bdc6c(_0x4d3fe9[_0xde19('0x16')][_0xde19('0x14')]);}})[_0xde19('0x17')](function(_0x266242){logger[_0xde19('0x12')]('MailSubstatus,\x20%s,\x20%s',_0x3b7d63,_0x266242);_0x13baf4(_0x266242);});});}
\ No newline at end of file
index 4c1095a..1d69b67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x410a=['../../config/environment','./mailTransferReport.controller','get','isAuthenticated','describe','/:id','show','post','create','put','update','delete','destroy','exports','util','path','express','Router','fs-extra','../../components/interaction/service'];(function(_0x166744,_0x1ae2e6){var _0x4068b5=function(_0x5ecc92){while(--_0x5ecc92){_0x166744['push'](_0x166744['shift']());}};_0x4068b5(++_0x1ae2e6);}(_0x410a,0x1da));var _0xa410=function(_0x3cdd29,_0x47dbdc){_0x3cdd29=_0x3cdd29-0x0;var _0xf52aec=_0x410a[_0x3cdd29];return _0xf52aec;};'use strict';var multer=require('multer');var util=require(_0xa410('0x0'));var path=require(_0xa410('0x1'));var timeout=require('connect-timeout');var express=require(_0xa410('0x2'));var router=express[_0xa410('0x3')]();var fs_extra=require(_0xa410('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xa410('0x5'));var config=require(_0xa410('0x6'));var controller=require(_0xa410('0x7'));router[_0xa410('0x8')]('/',auth[_0xa410('0x9')](),controller['index']);router[_0xa410('0x8')]('/describe',auth[_0xa410('0x9')](),controller[_0xa410('0xa')]);router[_0xa410('0x8')](_0xa410('0xb'),auth[_0xa410('0x9')](),controller[_0xa410('0xc')]);router[_0xa410('0xd')]('/',auth[_0xa410('0x9')](),controller[_0xa410('0xe')]);router[_0xa410('0xf')](_0xa410('0xb'),auth[_0xa410('0x9')](),controller[_0xa410('0x10')]);router[_0xa410('0x11')](_0xa410('0xb'),auth[_0xa410('0x9')](),controller[_0xa410('0x12')]);module[_0xa410('0x13')]=router;
\ No newline at end of file
+var _0xb617=['/describe','describe','/:id','post','create','put','update','delete','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated'];(function(_0x56be45,_0x10cd0e){var _0x1b75d3=function(_0x314616){while(--_0x314616){_0x56be45['push'](_0x56be45['shift']());}};_0x1b75d3(++_0x10cd0e);}(_0xb617,0xda));var _0x7b61=function(_0x55f87f,_0x30fe00){_0x55f87f=_0x55f87f-0x0;var _0x3a99b7=_0xb617[_0x55f87f];return _0x3a99b7;};'use strict';var multer=require(_0x7b61('0x0'));var util=require(_0x7b61('0x1'));var path=require(_0x7b61('0x2'));var timeout=require('connect-timeout');var express=require(_0x7b61('0x3'));var router=express[_0x7b61('0x4')]();var fs_extra=require(_0x7b61('0x5'));var auth=require(_0x7b61('0x6'));var interaction=require(_0x7b61('0x7'));var config=require('../../config/environment');var controller=require('./mailTransferReport.controller');router[_0x7b61('0x8')]('/',auth[_0x7b61('0x9')](),controller['index']);router['get'](_0x7b61('0xa'),auth[_0x7b61('0x9')](),controller[_0x7b61('0xb')]);router['get'](_0x7b61('0xc'),auth[_0x7b61('0x9')](),controller['show']);router[_0x7b61('0xd')]('/',auth['isAuthenticated'](),controller[_0x7b61('0xe')]);router[_0x7b61('0xf')](_0x7b61('0xc'),auth[_0x7b61('0x9')](),controller[_0x7b61('0x10')]);router[_0x7b61('0x11')]('/:id',auth[_0x7b61('0x9')](),controller['destroy']);module[_0x7b61('0x12')]=router;
\ No newline at end of file
index 6afb169..eea047c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4eb=['NOW','moment','account','queue','DATE'];(function(_0x1c003b,_0x493ceb){var _0x11a3ee=function(_0x1e6fa4){while(--_0x1e6fa4){_0x1c003b['push'](_0x1c003b['shift']());}};_0x11a3ee(++_0x493ceb);}(_0xf4eb,0xec));var _0xbf4e=function(_0x51099c,_0x251399){_0x51099c=_0x51099c-0x0;var _0x33d7cd=_0xf4eb[_0x51099c];return _0x33d7cd;};'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 _0xedd9=['account','agent','queue','NOW','sequelize','exports','STRING','ENUM'];(function(_0x27c679,_0x5d53f2){var _0x478c05=function(_0x1bd35a){while(--_0x1bd35a){_0x27c679['push'](_0x27c679['shift']());}};_0x478c05(++_0x5d53f2);}(_0xedd9,0xfc));var _0x9edd=function(_0x40c611,_0x13febe){_0x40c611=_0x40c611-0x0;var _0x126bc0=_0xedd9[_0x40c611];return _0x126bc0;};'use strict';var moment=require('moment');var Sequelize=require(_0x9edd('0x0'));module[_0x9edd('0x1')]={'uniqueid':{'type':Sequelize[_0x9edd('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x9edd('0x3')](_0x9edd('0x4'),_0x9edd('0x5'),_0x9edd('0x6')),'allowNull':![],'defaultValue':_0x9edd('0x6')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x9edd('0x7')]}};
\ No newline at end of file
index 557f3c7..625bca6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c10=['../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','limit','undefined','count','offset','set','apply','save','update','destroy','then','error','name','send','index','MailTransferReport','fieldName','model','map','keys','attributes','intersection','fields','query','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','type','options','includeAll','include','show','params','rawAttributes','find','catch','create','body','describe','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x58a239,_0x54c4d3){var _0x1d185a=function(_0x240ef2){while(--_0x240ef2){_0x58a239['push'](_0x58a239['shift']());}};_0x1d185a(++_0x54c4d3);}(_0x5c10,0xd0));var _0x05c1=function(_0x324b28,_0x43c12e){_0x324b28=_0x324b28-0x0;var _0x2cac3d=_0x5c10[_0x324b28];return _0x2cac3d;};'use strict';var emlformat=require(_0x05c1('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x05c1('0x1'));var rp=require(_0x05c1('0x2'));var moment=require(_0x05c1('0x3'));var BPromise=require(_0x05c1('0x4'));var Mustache=require(_0x05c1('0x5'));var util=require(_0x05c1('0x6'));var path=require(_0x05c1('0x7'));var sox=require('sox');var csv=require(_0x05c1('0x8'));var ejs=require(_0x05c1('0x9'));var fs=require('fs');var fs_extra=require(_0x05c1('0xa'));var _=require(_0x05c1('0xb'));var squel=require(_0x05c1('0xc'));var crypto=require(_0x05c1('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x05c1('0xe'));var toCsv=require(_0x05c1('0x8'));var querystring=require('querystring');var Papa=require(_0x05c1('0xf'));var Redis=require(_0x05c1('0x10'));var authService=require(_0x05c1('0x11'));var qs=require(_0x05c1('0x12'));var as=require(_0x05c1('0x13'));var hardwareService=require(_0x05c1('0x14'));var logger=require(_0x05c1('0x15'))(_0x05c1('0x16'));var utils=require(_0x05c1('0x17'));var config=require(_0x05c1('0x18'));var licenseUtil=require(_0x05c1('0x19'));var db=require(_0x05c1('0x1a'))['db'];function respondWithStatusCode(_0x3adcbf,_0x1d1435){_0x1d1435=_0x1d1435||0xcc;return function(_0x323704){if(_0x323704){return _0x3adcbf[_0x05c1('0x1b')](_0x1d1435);}return _0x3adcbf[_0x05c1('0x1c')](_0x1d1435)[_0x05c1('0x1d')]();};}function respondWithResult(_0x3e4fbb,_0x3328ae){_0x3328ae=_0x3328ae||0xc8;return function(_0x490a46){if(_0x490a46){return _0x3e4fbb[_0x05c1('0x1c')](_0x3328ae)[_0x05c1('0x1e')](_0x490a46);}};}function respondWithFilteredResult(_0x480424,_0x144f1c){return function(_0x282022){if(_0x282022){var _0x30a40c=typeof _0x144f1c['offset']==='undefined'&&typeof _0x144f1c[_0x05c1('0x1f')]===_0x05c1('0x20');var _0x2ada03=_0x282022[_0x05c1('0x21')];var _0x46de2d=_0x30a40c?0x0:_0x144f1c['offset'];var _0x2d9cbf=_0x30a40c?_0x282022[_0x05c1('0x21')]:_0x144f1c[_0x05c1('0x22')]+_0x144f1c[_0x05c1('0x1f')];var _0x2a7120;if(_0x2d9cbf>=_0x2ada03){_0x2d9cbf=_0x2ada03;_0x2a7120=0xc8;}else{_0x2a7120=0xce;}_0x480424[_0x05c1('0x1c')](_0x2a7120);return _0x480424[_0x05c1('0x23')]('Content-Range',_0x46de2d+'-'+_0x2d9cbf+'/'+_0x2ada03)[_0x05c1('0x1e')](_0x282022);}return null;};}function patchUpdates(_0x3641a1){return function(_0x5db977){try{jsonpatch[_0x05c1('0x24')](_0x5db977,_0x3641a1,!![]);}catch(_0x1cc5b3){return BPromise['reject'](_0x1cc5b3);}return _0x5db977[_0x05c1('0x25')]();};}function saveUpdates(_0x4dbe13,_0x323515){return function(_0x142f7f){if(_0x142f7f){return _0x142f7f[_0x05c1('0x26')](_0x4dbe13)['then'](function(_0x2ad3c0){return _0x2ad3c0;});}return null;};}function removeEntity(_0x40ddcc,_0xf6447a){return function(_0x15180b){if(_0x15180b){return _0x15180b[_0x05c1('0x27')]()[_0x05c1('0x28')](function(){_0x40ddcc['status'](0xcc)[_0x05c1('0x1d')]();});}};}function handleEntityNotFound(_0x137844,_0x23d1ef){return function(_0x36b3f5){if(!_0x36b3f5){_0x137844[_0x05c1('0x1b')](0x194);}return _0x36b3f5;};}function handleError(_0x3ee0c2,_0x39f050){_0x39f050=_0x39f050||0x1f4;return function(_0x3a3bf0){logger[_0x05c1('0x29')](_0x3a3bf0['stack']);if(_0x3a3bf0[_0x05c1('0x2a')]){delete _0x3a3bf0[_0x05c1('0x2a')];}_0x3ee0c2['status'](_0x39f050)[_0x05c1('0x2b')](_0x3a3bf0);};}exports[_0x05c1('0x2c')]=function(_0x2a7a44,_0x59103d){var _0x4e96c5={},_0x22a469={},_0xe83bf2={'count':0x0,'rows':[]};var _0x404006=_['map'](db[_0x05c1('0x2d')]['rawAttributes'],function(_0x56c4fb){return{'name':_0x56c4fb[_0x05c1('0x2e')],'type':_0x56c4fb['type']['key']};});_0x22a469[_0x05c1('0x2f')]=_[_0x05c1('0x30')](_0x404006,'name');_0x22a469['query']=_[_0x05c1('0x31')](_0x2a7a44['query']);_0x22a469['filters']=_['intersection'](_0x22a469[_0x05c1('0x2f')],_0x22a469['query']);_0x4e96c5[_0x05c1('0x32')]=_[_0x05c1('0x33')](_0x22a469[_0x05c1('0x2f')],qs[_0x05c1('0x34')](_0x2a7a44[_0x05c1('0x35')][_0x05c1('0x34')]));_0x4e96c5['attributes']=_0x4e96c5[_0x05c1('0x32')][_0x05c1('0x36')]?_0x4e96c5['attributes']:_0x22a469['model'];if(!_0x2a7a44[_0x05c1('0x35')][_0x05c1('0x37')](_0x05c1('0x38'))){_0x4e96c5['limit']=qs['limit'](_0x2a7a44['query'][_0x05c1('0x1f')]);_0x4e96c5[_0x05c1('0x22')]=qs['offset'](_0x2a7a44[_0x05c1('0x35')][_0x05c1('0x22')]);}_0x4e96c5[_0x05c1('0x39')]=qs[_0x05c1('0x3a')](_0x2a7a44['query']['sort']);_0x4e96c5[_0x05c1('0x3b')]=qs[_0x05c1('0x3c')](_[_0x05c1('0x3d')](_0x2a7a44[_0x05c1('0x35')],_0x22a469['filters']),_0x404006);if(_0x2a7a44[_0x05c1('0x35')][_0x05c1('0x3e')]){_0x4e96c5[_0x05c1('0x3b')]=_[_0x05c1('0x3f')](_0x4e96c5[_0x05c1('0x3b')],{'$or':_[_0x05c1('0x30')](_0x404006,function(_0x4df4c3){if(_0x4df4c3[_0x05c1('0x40')]!=='VIRTUAL'){var _0x5dd46b={};_0x5dd46b[_0x4df4c3[_0x05c1('0x2a')]]={'$like':'%'+_0x2a7a44[_0x05c1('0x35')]['filter']+'%'};return _0x5dd46b;}})});}_0x4e96c5=_['merge']({},_0x4e96c5,_0x2a7a44[_0x05c1('0x41')]);var _0x3a0d32={'where':_0x4e96c5[_0x05c1('0x3b')]};return db[_0x05c1('0x2d')]['count'](_0x3a0d32)[_0x05c1('0x28')](function(_0x3bd1f0){_0xe83bf2[_0x05c1('0x21')]=_0x3bd1f0;if(_0x2a7a44[_0x05c1('0x35')][_0x05c1('0x42')]){_0x4e96c5[_0x05c1('0x43')]=[{'all':!![]}];}return db['MailTransferReport']['findAll'](_0x4e96c5);})[_0x05c1('0x28')](function(_0x52d4fd){_0xe83bf2['rows']=_0x52d4fd;return _0xe83bf2;})[_0x05c1('0x28')](respondWithFilteredResult(_0x59103d,_0x4e96c5))['catch'](handleError(_0x59103d,null));};exports[_0x05c1('0x44')]=function(_0x2112e8,_0x3375b2){var _0x4ac10d={'raw':!![],'where':{'id':_0x2112e8[_0x05c1('0x45')]['id']}},_0x55a034={};_0x55a034['model']=_[_0x05c1('0x31')](db[_0x05c1('0x2d')][_0x05c1('0x46')]);_0x55a034[_0x05c1('0x35')]=_[_0x05c1('0x31')](_0x2112e8['query']);_0x55a034['filters']=_['intersection'](_0x55a034[_0x05c1('0x2f')],_0x55a034['query']);_0x4ac10d[_0x05c1('0x32')]=_[_0x05c1('0x33')](_0x55a034[_0x05c1('0x2f')],qs[_0x05c1('0x34')](_0x2112e8[_0x05c1('0x35')][_0x05c1('0x34')]));_0x4ac10d[_0x05c1('0x32')]=_0x4ac10d[_0x05c1('0x32')][_0x05c1('0x36')]?_0x4ac10d[_0x05c1('0x32')]:_0x55a034[_0x05c1('0x2f')];if(_0x2112e8['query'][_0x05c1('0x42')]){_0x4ac10d[_0x05c1('0x43')]=[{'all':!![]}];}_0x4ac10d=_[_0x05c1('0x3f')]({},_0x4ac10d,_0x2112e8[_0x05c1('0x41')]);return db[_0x05c1('0x2d')][_0x05c1('0x47')](_0x4ac10d)[_0x05c1('0x28')](handleEntityNotFound(_0x3375b2,null))[_0x05c1('0x28')](respondWithResult(_0x3375b2,null))[_0x05c1('0x48')](handleError(_0x3375b2,null));};exports[_0x05c1('0x49')]=function(_0x7c301e,_0x39697e){return db['MailTransferReport'][_0x05c1('0x49')](_0x7c301e['body'],{})[_0x05c1('0x28')](respondWithResult(_0x39697e,0xc9))[_0x05c1('0x48')](handleError(_0x39697e,null));};exports[_0x05c1('0x26')]=function(_0x262e2f,_0x22a1ed){if(_0x262e2f[_0x05c1('0x4a')]['id']){delete _0x262e2f['body']['id'];}return db[_0x05c1('0x2d')][_0x05c1('0x47')]({'where':{'id':_0x262e2f[_0x05c1('0x45')]['id']}})['then'](handleEntityNotFound(_0x22a1ed,null))['then'](saveUpdates(_0x262e2f[_0x05c1('0x4a')],null))['then'](respondWithResult(_0x22a1ed,null))[_0x05c1('0x48')](handleError(_0x22a1ed,null));};exports[_0x05c1('0x27')]=function(_0x5413f8,_0x365930){return db['MailTransferReport'][_0x05c1('0x47')]({'where':{'id':_0x5413f8['params']['id']}})['then'](handleEntityNotFound(_0x365930,null))[_0x05c1('0x28')](removeEntity(_0x365930,null))[_0x05c1('0x48')](handleError(_0x365930,null));};exports[_0x05c1('0x4b')]=function(_0x3e2a1c,_0x135a39){return db[_0x05c1('0x2d')][_0x05c1('0x4b')]()[_0x05c1('0x28')](respondWithResult(_0x135a39,null))[_0x05c1('0x48')](handleError(_0x135a39,null));};
\ No newline at end of file
+var _0x7da0=['../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','apply','save','update','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','hasOwnProperty','nolimit','sort','where','pick','filters','filter','merge','VIRTUAL','options','MailTransferReport','then','includeAll','include','rows','show','params','length','create','body','find','catch','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x37bd26,_0x5ad346){var _0xe83dc4=function(_0x1ac229){while(--_0x1ac229){_0x37bd26['push'](_0x37bd26['shift']());}};_0xe83dc4(++_0x5ad346);}(_0x7da0,0xd2));var _0x07da=function(_0x24b0de,_0x5f34db){_0x24b0de=_0x24b0de-0x0;var _0x5b71c5=_0x7da0[_0x24b0de];return _0x5b71c5;};'use strict';var emlformat=require(_0x07da('0x0'));var rimraf=require(_0x07da('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x07da('0x2'));var rp=require(_0x07da('0x3'));var moment=require(_0x07da('0x4'));var BPromise=require(_0x07da('0x5'));var Mustache=require(_0x07da('0x6'));var util=require(_0x07da('0x7'));var path=require(_0x07da('0x8'));var sox=require('sox');var csv=require(_0x07da('0x9'));var ejs=require(_0x07da('0xa'));var fs=require('fs');var fs_extra=require(_0x07da('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x07da('0xc'));var jsforce=require(_0x07da('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x07da('0x9'));var querystring=require(_0x07da('0xe'));var Papa=require(_0x07da('0xf'));var Redis=require(_0x07da('0x10'));var authService=require(_0x07da('0x11'));var qs=require(_0x07da('0x12'));var as=require(_0x07da('0x13'));var hardwareService=require(_0x07da('0x14'));var logger=require(_0x07da('0x15'))(_0x07da('0x16'));var utils=require(_0x07da('0x17'));var config=require(_0x07da('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3e92fa,_0x30c41c){_0x30c41c=_0x30c41c||0xcc;return function(_0x34f729){if(_0x34f729){return _0x3e92fa[_0x07da('0x19')](_0x30c41c);}return _0x3e92fa[_0x07da('0x1a')](_0x30c41c)[_0x07da('0x1b')]();};}function respondWithResult(_0x267ba2,_0x363776){_0x363776=_0x363776||0xc8;return function(_0x1355dc){if(_0x1355dc){return _0x267ba2[_0x07da('0x1a')](_0x363776)[_0x07da('0x1c')](_0x1355dc);}};}function respondWithFilteredResult(_0x2cba85,_0x1a7414){return function(_0x28c2d5){if(_0x28c2d5){var _0x2fdedc=typeof _0x1a7414[_0x07da('0x1d')]==='undefined'&&typeof _0x1a7414['limit']===_0x07da('0x1e');var _0x2498b8=_0x28c2d5[_0x07da('0x1f')];var _0x3031c0=_0x2fdedc?0x0:_0x1a7414['offset'];var _0x2a4e27=_0x2fdedc?_0x28c2d5[_0x07da('0x1f')]:_0x1a7414[_0x07da('0x1d')]+_0x1a7414[_0x07da('0x20')];var _0x425d4c;if(_0x2a4e27>=_0x2498b8){_0x2a4e27=_0x2498b8;_0x425d4c=0xc8;}else{_0x425d4c=0xce;}_0x2cba85[_0x07da('0x1a')](_0x425d4c);return _0x2cba85['set'](_0x07da('0x21'),_0x3031c0+'-'+_0x2a4e27+'/'+_0x2498b8)[_0x07da('0x1c')](_0x28c2d5);}return null;};}function patchUpdates(_0x269485){return function(_0x2bc015){try{jsonpatch[_0x07da('0x22')](_0x2bc015,_0x269485,!![]);}catch(_0x1a0e13){return BPromise['reject'](_0x1a0e13);}return _0x2bc015[_0x07da('0x23')]();};}function saveUpdates(_0x27b804,_0x10fbd7){return function(_0xcaef31){if(_0xcaef31){return _0xcaef31[_0x07da('0x24')](_0x27b804)['then'](function(_0x75ad23){return _0x75ad23;});}return null;};}function removeEntity(_0x53ed9f,_0x241e55){return function(_0x461503){if(_0x461503){return _0x461503[_0x07da('0x25')]()['then'](function(){_0x53ed9f[_0x07da('0x1a')](0xcc)[_0x07da('0x1b')]();});}};}function handleEntityNotFound(_0x4e32e0,_0x809d61){return function(_0x508b5f){if(!_0x508b5f){_0x4e32e0[_0x07da('0x19')](0x194);}return _0x508b5f;};}function handleError(_0x19f626,_0x53d9af){_0x53d9af=_0x53d9af||0x1f4;return function(_0x2912dd){logger[_0x07da('0x26')](_0x2912dd[_0x07da('0x27')]);if(_0x2912dd[_0x07da('0x28')]){delete _0x2912dd[_0x07da('0x28')];}_0x19f626[_0x07da('0x1a')](_0x53d9af)[_0x07da('0x29')](_0x2912dd);};}exports[_0x07da('0x2a')]=function(_0x3a3bfa,_0x3dec1c){var _0x506d0b={},_0x3dfdfd={},_0x6b4ba8={'count':0x0,'rows':[]};var _0x16d589=_[_0x07da('0x2b')](db['MailTransferReport'][_0x07da('0x2c')],function(_0x32726e){return{'name':_0x32726e[_0x07da('0x2d')],'type':_0x32726e[_0x07da('0x2e')][_0x07da('0x2f')]};});_0x3dfdfd[_0x07da('0x30')]=_[_0x07da('0x2b')](_0x16d589,'name');_0x3dfdfd[_0x07da('0x31')]=_[_0x07da('0x32')](_0x3a3bfa[_0x07da('0x31')]);_0x3dfdfd['filters']=_[_0x07da('0x33')](_0x3dfdfd['model'],_0x3dfdfd['query']);_0x506d0b['attributes']=_[_0x07da('0x33')](_0x3dfdfd[_0x07da('0x30')],qs[_0x07da('0x34')](_0x3a3bfa[_0x07da('0x31')][_0x07da('0x34')]));_0x506d0b['attributes']=_0x506d0b[_0x07da('0x35')]['length']?_0x506d0b[_0x07da('0x35')]:_0x3dfdfd[_0x07da('0x30')];if(!_0x3a3bfa[_0x07da('0x31')][_0x07da('0x36')](_0x07da('0x37'))){_0x506d0b[_0x07da('0x20')]=qs[_0x07da('0x20')](_0x3a3bfa[_0x07da('0x31')][_0x07da('0x20')]);_0x506d0b[_0x07da('0x1d')]=qs['offset'](_0x3a3bfa[_0x07da('0x31')][_0x07da('0x1d')]);}_0x506d0b['order']=qs[_0x07da('0x38')](_0x3a3bfa['query'][_0x07da('0x38')]);_0x506d0b[_0x07da('0x39')]=qs['filters'](_[_0x07da('0x3a')](_0x3a3bfa[_0x07da('0x31')],_0x3dfdfd[_0x07da('0x3b')]),_0x16d589);if(_0x3a3bfa['query'][_0x07da('0x3c')]){_0x506d0b[_0x07da('0x39')]=_[_0x07da('0x3d')](_0x506d0b[_0x07da('0x39')],{'$or':_[_0x07da('0x2b')](_0x16d589,function(_0x3a8128){if(_0x3a8128[_0x07da('0x2e')]!==_0x07da('0x3e')){var _0x211d3b={};_0x211d3b[_0x3a8128[_0x07da('0x28')]]={'$like':'%'+_0x3a3bfa['query']['filter']+'%'};return _0x211d3b;}})});}_0x506d0b=_[_0x07da('0x3d')]({},_0x506d0b,_0x3a3bfa[_0x07da('0x3f')]);var _0x58a283={'where':_0x506d0b['where']};return db[_0x07da('0x40')][_0x07da('0x1f')](_0x58a283)[_0x07da('0x41')](function(_0x37454d){_0x6b4ba8[_0x07da('0x1f')]=_0x37454d;if(_0x3a3bfa[_0x07da('0x31')][_0x07da('0x42')]){_0x506d0b[_0x07da('0x43')]=[{'all':!![]}];}return db[_0x07da('0x40')]['findAll'](_0x506d0b);})['then'](function(_0x2db334){_0x6b4ba8[_0x07da('0x44')]=_0x2db334;return _0x6b4ba8;})[_0x07da('0x41')](respondWithFilteredResult(_0x3dec1c,_0x506d0b))['catch'](handleError(_0x3dec1c,null));};exports[_0x07da('0x45')]=function(_0x4a9d68,_0x5f0a2e){var _0x154543={'raw':!![],'where':{'id':_0x4a9d68[_0x07da('0x46')]['id']}},_0x4ab22f={};_0x4ab22f[_0x07da('0x30')]=_['keys'](db[_0x07da('0x40')][_0x07da('0x2c')]);_0x4ab22f[_0x07da('0x31')]=_[_0x07da('0x32')](_0x4a9d68[_0x07da('0x31')]);_0x4ab22f[_0x07da('0x3b')]=_[_0x07da('0x33')](_0x4ab22f['model'],_0x4ab22f[_0x07da('0x31')]);_0x154543[_0x07da('0x35')]=_[_0x07da('0x33')](_0x4ab22f[_0x07da('0x30')],qs[_0x07da('0x34')](_0x4a9d68[_0x07da('0x31')][_0x07da('0x34')]));_0x154543['attributes']=_0x154543['attributes'][_0x07da('0x47')]?_0x154543['attributes']:_0x4ab22f[_0x07da('0x30')];if(_0x4a9d68[_0x07da('0x31')][_0x07da('0x42')]){_0x154543['include']=[{'all':!![]}];}_0x154543=_[_0x07da('0x3d')]({},_0x154543,_0x4a9d68[_0x07da('0x3f')]);return db[_0x07da('0x40')]['find'](_0x154543)[_0x07da('0x41')](handleEntityNotFound(_0x5f0a2e,null))['then'](respondWithResult(_0x5f0a2e,null))['catch'](handleError(_0x5f0a2e,null));};exports[_0x07da('0x48')]=function(_0x554ecd,_0x478bf3){return db[_0x07da('0x40')][_0x07da('0x48')](_0x554ecd[_0x07da('0x49')],{})['then'](respondWithResult(_0x478bf3,0xc9))['catch'](handleError(_0x478bf3,null));};exports['update']=function(_0x9996a0,_0x235b60){if(_0x9996a0[_0x07da('0x49')]['id']){delete _0x9996a0['body']['id'];}return db['MailTransferReport'][_0x07da('0x4a')]({'where':{'id':_0x9996a0[_0x07da('0x46')]['id']}})[_0x07da('0x41')](handleEntityNotFound(_0x235b60,null))[_0x07da('0x41')](saveUpdates(_0x9996a0['body'],null))[_0x07da('0x41')](respondWithResult(_0x235b60,null))[_0x07da('0x4b')](handleError(_0x235b60,null));};exports['destroy']=function(_0x5bc524,_0x20ff4c){return db['MailTransferReport'][_0x07da('0x4a')]({'where':{'id':_0x5bc524[_0x07da('0x46')]['id']}})[_0x07da('0x41')](handleEntityNotFound(_0x20ff4c,null))[_0x07da('0x41')](removeEntity(_0x20ff4c,null))[_0x07da('0x4b')](handleError(_0x20ff4c,null));};exports['describe']=function(_0x1899be,_0x5b9c51){return db['MailTransferReport'][_0x07da('0x4c')]()['then'](respondWithResult(_0x5b9c51,null))[_0x07da('0x4b')](handleError(_0x5b9c51,null));};
\ No newline at end of file
index 00ea839..a455190 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5270=['define','MailTransferReport','uniqueid','lodash','util','api','moment','bluebird','path','rimraf','../../config/environment','./mailTransferReport.attributes'];(function(_0x427c90,_0x3babf9){var _0x200955=function(_0x231fc1){while(--_0x231fc1){_0x427c90['push'](_0x427c90['shift']());}};_0x200955(++_0x3babf9);}(_0x5270,0xab));var _0x0527=function(_0x573117,_0x1334c0){_0x573117=_0x573117-0x0;var _0x388d11=_0x5270[_0x573117];return _0x388d11;};'use strict';var _=require(_0x0527('0x0'));var util=require(_0x0527('0x1'));var logger=require('../../config/logger')(_0x0527('0x2'));var moment=require(_0x0527('0x3'));var BPromise=require(_0x0527('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0527('0x5'));var rimraf=require(_0x0527('0x6'));var config=require(_0x0527('0x7'));var attributes=require(_0x0527('0x8'));module['exports']=function(_0x3dd3b9,_0x3dd735){return _0x3dd3b9[_0x0527('0x9')](_0x0527('0xa'),attributes,{'tableName':'report_mail_transfer','paranoid':![],'indexes':[{'name':_0x0527('0xb'),'fields':[_0x0527('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3c17=['bluebird','request-promise','rimraf','../../config/environment','./mailTransferReport.attributes','exports','MailTransferReport','report_mail_transfer','uniqueid','lodash','../../config/logger','moment'];(function(_0x4bdedc,_0x1b0aab){var _0x3d3453=function(_0x77972d){while(--_0x77972d){_0x4bdedc['push'](_0x4bdedc['shift']());}};_0x3d3453(++_0x1b0aab);}(_0x3c17,0x1a1));var _0x73c1=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0x3c17[_0x47b58b];return _0x46bebe;};'use strict';var _=require(_0x73c1('0x0'));var util=require('util');var logger=require(_0x73c1('0x1'))('api');var moment=require(_0x73c1('0x2'));var BPromise=require(_0x73c1('0x3'));var rp=require(_0x73c1('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x73c1('0x5'));var config=require(_0x73c1('0x6'));var attributes=require(_0x73c1('0x7'));module[_0x73c1('0x8')]=function(_0x48c943,_0x382f82){return _0x48c943['define'](_0x73c1('0x9'),attributes,{'tableName':_0x73c1('0xa'),'paranoid':![],'indexes':[{'name':_0x73c1('0xb'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 64940ec..160130a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x315b=['../../config/utils','../../config/logger','rpc','jayson/promise','http','request','MailTransferReport,\x20%s,\x20%s','request\x20sent','MailTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','moment','bluebird','ioredis'];(function(_0xf6694a,_0x33a067){var _0x1fe025=function(_0xd4e581){while(--_0xd4e581){_0xf6694a['push'](_0xf6694a['shift']());}};_0x1fe025(++_0x33a067);}(_0x315b,0xb0));var _0xb315=function(_0x1de5bb,_0x651241){_0x1de5bb=_0x1de5bb-0x0;var _0x4c51e5=_0x315b[_0x1de5bb];return _0x4c51e5;};'use strict';var _=require(_0xb315('0x0'));var util=require('util');var moment=require(_0xb315('0x1'));var BPromise=require(_0xb315('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb315('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xb315('0x4'));var logger=require(_0xb315('0x5'))(_0xb315('0x6'));var config=require('../../config/environment');var jayson=require(_0xb315('0x7'));var client=jayson['client'][_0xb315('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x15b6f0,_0x88d673,_0x5f28dc){return new BPromise(function(_0xc04e7d,_0x32cb9d){return client[_0xb315('0x9')](_0x15b6f0,_0x5f28dc)['then'](function(_0x4a1cf8){logger['info'](_0xb315('0xa'),_0x88d673,_0xb315('0xb'));logger['debug'](_0xb315('0xc'),_0x88d673,_0xb315('0xb'),JSON[_0xb315('0xd')](_0x4a1cf8));if(_0x4a1cf8[_0xb315('0xe')]){if(_0x4a1cf8[_0xb315('0xe')][_0xb315('0xf')]===0x1f4){logger[_0xb315('0xe')](_0xb315('0xa'),_0x88d673,_0x4a1cf8[_0xb315('0xe')][_0xb315('0x10')]);return _0x32cb9d(_0x4a1cf8['error']['message']);}logger['error'](_0xb315('0xa'),_0x88d673,_0x4a1cf8['error'][_0xb315('0x10')]);return _0xc04e7d(_0x4a1cf8[_0xb315('0xe')][_0xb315('0x10')]);}else{logger[_0xb315('0x11')](_0xb315('0xa'),_0x88d673,_0xb315('0xb'));_0xc04e7d(_0x4a1cf8[_0xb315('0x12')][_0xb315('0x10')]);}})[_0xb315('0x13')](function(_0xaed474){logger[_0xb315('0xe')](_0xb315('0xa'),_0x88d673,_0xaed474);_0x32cb9d(_0xaed474);});});}
\ No newline at end of file
+var _0x0222=['bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','MailTransferReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','catch','lodash','util'];(function(_0x4ae6ef,_0xc2af80){var _0x3cbb4e=function(_0x569ad5){while(--_0x569ad5){_0x4ae6ef['push'](_0x4ae6ef['shift']());}};_0x3cbb4e(++_0xc2af80);}(_0x0222,0x1b7));var _0x2022=function(_0x90909d,_0x8dc805){_0x90909d=_0x90909d-0x0;var _0x5e802d=_0x0222[_0x90909d];return _0x5e802d;};'use strict';var _=require(_0x2022('0x0'));var util=require(_0x2022('0x1'));var moment=require('moment');var BPromise=require(_0x2022('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2022('0x3'));var db=require(_0x2022('0x4'))['db'];var utils=require(_0x2022('0x5'));var logger=require(_0x2022('0x6'))(_0x2022('0x7'));var config=require(_0x2022('0x8'));var jayson=require(_0x2022('0x9'));var client=jayson['client'][_0x2022('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x70ccfe,_0x65fa2a,_0x52432f){return new BPromise(function(_0x2a28ac,_0x360575){return client[_0x2022('0xb')](_0x70ccfe,_0x52432f)[_0x2022('0xc')](function(_0x1795d2){logger[_0x2022('0xd')](_0x2022('0xe'),_0x65fa2a,_0x2022('0xf'));logger[_0x2022('0x10')]('MailTransferReport,\x20%s,\x20%s,\x20%s',_0x65fa2a,_0x2022('0xf'),JSON['stringify'](_0x1795d2));if(_0x1795d2[_0x2022('0x11')]){if(_0x1795d2[_0x2022('0x11')][_0x2022('0x12')]===0x1f4){logger[_0x2022('0x11')](_0x2022('0xe'),_0x65fa2a,_0x1795d2[_0x2022('0x11')]['message']);return _0x360575(_0x1795d2[_0x2022('0x11')]['message']);}logger[_0x2022('0x11')]('MailTransferReport,\x20%s,\x20%s',_0x65fa2a,_0x1795d2[_0x2022('0x11')][_0x2022('0x13')]);return _0x2a28ac(_0x1795d2['error'][_0x2022('0x13')]);}else{logger[_0x2022('0xd')](_0x2022('0xe'),_0x65fa2a,'request\x20sent');_0x2a28ac(_0x1795d2['result'][_0x2022('0x13')]);}})[_0x2022('0x14')](function(_0x209e50){logger['error'](_0x2022('0xe'),_0x65fa2a,_0x209e50);_0x360575(_0x209e50);});});}
\ No newline at end of file
index ec326d9..b3d2a4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81fa=['/describe','get','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./memberReport.controller','isAuthenticated','index'];(function(_0x2e3f40,_0x39859c){var _0x50f5ee=function(_0x2cf411){while(--_0x2cf411){_0x2e3f40['push'](_0x2e3f40['shift']());}};_0x50f5ee(++_0x39859c);}(_0x81fa,0x129));var _0xa81f=function(_0x4f3da4,_0x121375){_0x4f3da4=_0x4f3da4-0x0;var _0x1df1a1=_0x81fa[_0x4f3da4];return _0x1df1a1;};'use strict';var multer=require(_0xa81f('0x0'));var util=require(_0xa81f('0x1'));var path=require(_0xa81f('0x2'));var timeout=require(_0xa81f('0x3'));var express=require(_0xa81f('0x4'));var router=express[_0xa81f('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xa81f('0x6'));var interaction=require(_0xa81f('0x7'));var config=require('../../config/environment');var controller=require(_0xa81f('0x8'));router['get']('/',auth[_0xa81f('0x9')](),controller[_0xa81f('0xa')]);router['get'](_0xa81f('0xb'),auth[_0xa81f('0x9')](),controller['describe']);router[_0xa81f('0xc')](_0xa81f('0xd'),auth[_0xa81f('0x9')](),controller[_0xa81f('0xe')]);router[_0xa81f('0xf')]('/',auth[_0xa81f('0x9')](),controller[_0xa81f('0x10')]);router[_0xa81f('0x11')]('/:id',auth['isAuthenticated'](),controller[_0xa81f('0x12')]);router[_0xa81f('0x13')](_0xa81f('0xd'),auth[_0xa81f('0x9')](),controller[_0xa81f('0x14')]);module[_0xa81f('0x15')]=router;
\ No newline at end of file
+var _0x8f12=['isAuthenticated','index','/describe','describe','/:id','post','create','put','update','delete','destroy','exports','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./memberReport.controller','get'];(function(_0xf29fa8,_0x4e2f6b){var _0x5a7b84=function(_0x42ae62){while(--_0x42ae62){_0xf29fa8['push'](_0xf29fa8['shift']());}};_0x5a7b84(++_0x4e2f6b);}(_0x8f12,0x15c));var _0x28f1=function(_0x5dc2fa,_0x56279d){_0x5dc2fa=_0x5dc2fa-0x0;var _0x16eaf9=_0x8f12[_0x5dc2fa];return _0x16eaf9;};'use strict';var multer=require('multer');var util=require(_0x28f1('0x0'));var path=require(_0x28f1('0x1'));var timeout=require(_0x28f1('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x28f1('0x3'));var auth=require(_0x28f1('0x4'));var interaction=require(_0x28f1('0x5'));var config=require(_0x28f1('0x6'));var controller=require(_0x28f1('0x7'));router[_0x28f1('0x8')]('/',auth[_0x28f1('0x9')](),controller[_0x28f1('0xa')]);router[_0x28f1('0x8')](_0x28f1('0xb'),auth[_0x28f1('0x9')](),controller[_0x28f1('0xc')]);router['get'](_0x28f1('0xd'),auth[_0x28f1('0x9')](),controller['show']);router[_0x28f1('0xe')]('/',auth['isAuthenticated'](),controller[_0x28f1('0xf')]);router[_0x28f1('0x10')](_0x28f1('0xd'),auth[_0x28f1('0x9')](),controller[_0x28f1('0x11')]);router[_0x28f1('0x12')](_0x28f1('0xd'),auth[_0x28f1('0x9')](),controller[_0x28f1('0x13')]);module[_0x28f1('0x14')]=router;
\ No newline at end of file
index 3edeb74..0a0bc72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1db9=['INTEGER','sequelize','moment','STRING','LOGIN,\x20PAUSE,\x20TALKING','DATE','getDataValue','enterAt','diff','seconds','setDataValue','exitAt','duration','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[start]','talk:[destination]','talk:[queue]'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1db9,0x122));var _0x91db=function(_0x136c33,_0x420093){_0x136c33=_0x136c33-0x0;var _0x59af99=_0x1db9[_0x136c33];return _0x59af99;};'use strict';var Sequelize=require(_0x91db('0x0'));var moment=require(_0x91db('0x1'));module['exports']={'channel':{'type':Sequelize[_0x91db('0x2')]},'membername':{'type':Sequelize[_0x91db('0x2')]},'interface':{'type':Sequelize[_0x91db('0x2')]},'type':{'type':Sequelize['STRING'],'defaultValue':'DEFAULT\x20PAUSE','comment':_0x91db('0x3')},'duration':{'type':Sequelize['INTEGER']},'enterAt':{'type':Sequelize[_0x91db('0x4')]},'exitAt':{'type':Sequelize[_0x91db('0x4')],'set':function(_0xf1dff0){var _0x5302dc=moment(_0xf1dff0);var _0x5de2e0=moment(this[_0x91db('0x5')](_0x91db('0x6')));var _0x42bbf7=_0x5302dc[_0x91db('0x7')](_0x5de2e0,_0x91db('0x8'));this[_0x91db('0x9')](_0x91db('0xa'),_0xf1dff0);this['setDataValue'](_0x91db('0xb'),_0x42bbf7>=0x0?_0x42bbf7:null);}},'data1':{'type':Sequelize[_0x91db('0x2')],'comment':_0x91db('0xc')},'data2':{'type':Sequelize[_0x91db('0x2')],'comment':_0x91db('0xd')},'data3':{'type':Sequelize[_0x91db('0x2')],'comment':_0x91db('0xe')},'data4':{'type':Sequelize[_0x91db('0x2')],'comment':'talk:[dial\x20string]'},'data5':{'type':Sequelize['STRING'],'comment':_0x91db('0xf')},'role':{'type':Sequelize[_0x91db('0x2')]},'internal':{'type':Sequelize[_0x91db('0x10')]},'uniqueid':{'type':Sequelize[_0x91db('0x2')]}};
\ No newline at end of file
+var _0x487e=['INTEGER','DATE','getDataValue','diff','seconds','setDataValue','duration','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[start]','talk:[destination]','talk:[dial\x20string]','sequelize','exports','STRING','DEFAULT\x20PAUSE'];(function(_0x1a27f3,_0x1c082d){var _0x3ce222=function(_0x3f93e1){while(--_0x3f93e1){_0x1a27f3['push'](_0x1a27f3['shift']());}};_0x3ce222(++_0x1c082d);}(_0x487e,0xbf));var _0xe487=function(_0x4fb263,_0x4bc9b6){_0x4fb263=_0x4fb263-0x0;var _0x280529=_0x487e[_0x4fb263];return _0x280529;};'use strict';var Sequelize=require(_0xe487('0x0'));var moment=require('moment');module[_0xe487('0x1')]={'channel':{'type':Sequelize['STRING']},'membername':{'type':Sequelize['STRING']},'interface':{'type':Sequelize[_0xe487('0x2')]},'type':{'type':Sequelize['STRING'],'defaultValue':_0xe487('0x3'),'comment':'LOGIN,\x20PAUSE,\x20TALKING'},'duration':{'type':Sequelize[_0xe487('0x4')]},'enterAt':{'type':Sequelize[_0xe487('0x5')]},'exitAt':{'type':Sequelize[_0xe487('0x5')],'set':function(_0x2c92b5){var _0x2173e9=moment(_0x2c92b5);var _0x317e53=moment(this[_0xe487('0x6')]('enterAt'));var _0x9d00e8=_0x2173e9[_0xe487('0x7')](_0x317e53,_0xe487('0x8'));this[_0xe487('0x9')]('exitAt',_0x2c92b5);this[_0xe487('0x9')](_0xe487('0xa'),_0x9d00e8>=0x0?_0x9d00e8:null);}},'data1':{'type':Sequelize['STRING'],'comment':_0xe487('0xb')},'data2':{'type':Sequelize[_0xe487('0x2')],'comment':_0xe487('0xc')},'data3':{'type':Sequelize['STRING'],'comment':_0xe487('0xd')},'data4':{'type':Sequelize[_0xe487('0x2')],'comment':_0xe487('0xe')},'data5':{'type':Sequelize[_0xe487('0x2')],'comment':'talk:[queue]'},'role':{'type':Sequelize['STRING']},'internal':{'type':Sequelize[_0xe487('0x4')]},'uniqueid':{'type':Sequelize[_0xe487('0x2')]}};
\ No newline at end of file
index 1f42c63..90e5e10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0x55ca,0x126));var _0xa55c=function(_0x378830,_0xb532d7){_0x378830=_0x378830-0x0;var _0x4e4348=_0x55ca[_0x378830];return _0x4e4348;};'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
+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(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x55ca,0x126));var _0xa55c=function(_0xd056f7,_0xedbba9){_0xd056f7=_0xd056f7-0x0;var _0xbcb407=_0x55ca[_0xd056f7];return _0xbcb407;};'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 77cc072..d63f9c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf375=['request-promise','path','rimraf','../../config/environment','./memberReport.attributes','exports','membername_interface','interface','api','moment','bluebird'];(function(_0x111e94,_0x31c837){var _0x3de107=function(_0x65bd1e){while(--_0x65bd1e){_0x111e94['push'](_0x111e94['shift']());}};_0x3de107(++_0x31c837);}(_0xf375,0x19f));var _0x5f37=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xf375[_0x3947c9];return _0x2e7871;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x5f37('0x0'));var moment=require(_0x5f37('0x1'));var BPromise=require(_0x5f37('0x2'));var rp=require(_0x5f37('0x3'));var fs=require('fs');var path=require(_0x5f37('0x4'));var rimraf=require(_0x5f37('0x5'));var config=require(_0x5f37('0x6'));var attributes=require(_0x5f37('0x7'));module[_0x5f37('0x8')]=function(_0x3b4fda,_0x589859){return _0x3b4fda['define']('MemberReport',attributes,{'tableName':'report_member','paranoid':![],'indexes':[{'name':_0x5f37('0x9'),'fields':['membername',_0x5f37('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x34d2=['path','rimraf','exports','define','MemberReport','report_member','membername_interface','interface','util','bluebird'];(function(_0x5d5979,_0x3b4921){var _0x237182=function(_0xbd4df7){while(--_0xbd4df7){_0x5d5979['push'](_0x5d5979['shift']());}};_0x237182(++_0x3b4921);}(_0x34d2,0x12a));var _0x234d=function(_0x2319ff,_0x43805f){_0x2319ff=_0x2319ff-0x0;var _0xf5c03d=_0x34d2[_0x2319ff];return _0xf5c03d;};'use strict';var _=require('lodash');var util=require(_0x234d('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x234d('0x1'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x234d('0x2'));var rimraf=require(_0x234d('0x3'));var config=require('../../config/environment');var attributes=require('./memberReport.attributes');module[_0x234d('0x4')]=function(_0x51b0bd,_0x567456){return _0x51b0bd[_0x234d('0x5')](_0x234d('0x6'),attributes,{'tableName':_0x234d('0x7'),'paranoid':![],'indexes':[{'name':_0x234d('0x8'),'fields':['membername',_0x234d('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index 5aa1c05..f19a1b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7be=['UpdateMemberReport','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','MemberReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','MemberReport','findAll','options','raw','limit','include','map','attributes','model','GetMemberReport','CreateMemberReport','create','body'];(function(_0x468cec,_0x5b28c7){var _0x2b65aa=function(_0x2067f7){while(--_0x2067f7){_0x468cec['push'](_0x468cec['shift']());}};_0x2b65aa(++_0x5b28c7);}(_0xa7be,0xfd));var _0xea7b=function(_0x53df44,_0x2ff5ed){_0x53df44=_0x53df44-0x0;var _0x15abbd=_0xa7be[_0x53df44];return _0x15abbd;};'use strict';var _=require(_0xea7b('0x0'));var util=require(_0xea7b('0x1'));var moment=require(_0xea7b('0x2'));var BPromise=require(_0xea7b('0x3'));var rs=require(_0xea7b('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xea7b('0x5'));var logger=require(_0xea7b('0x6'))(_0xea7b('0x7'));var config=require('../../config/environment');var jayson=require(_0xea7b('0x8'));var client=jayson[_0xea7b('0x9')][_0xea7b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x211831,_0x25a8e9,_0x3601b3){return new BPromise(function(_0x1c789e,_0x2a477c){return client[_0xea7b('0xb')](_0x211831,_0x3601b3)[_0xea7b('0xc')](function(_0x4a39a3){logger[_0xea7b('0xd')](_0xea7b('0xe'),_0x25a8e9,_0xea7b('0xf'));logger[_0xea7b('0x10')]('MemberReport,\x20%s,\x20%s,\x20%s',_0x25a8e9,_0xea7b('0xf'),JSON[_0xea7b('0x11')](_0x4a39a3));if(_0x4a39a3['error']){if(_0x4a39a3[_0xea7b('0x12')][_0xea7b('0x13')]===0x1f4){logger[_0xea7b('0x12')](_0xea7b('0xe'),_0x25a8e9,_0x4a39a3[_0xea7b('0x12')][_0xea7b('0x14')]);return _0x2a477c(_0x4a39a3[_0xea7b('0x12')][_0xea7b('0x14')]);}logger['error']('MemberReport,\x20%s,\x20%s',_0x25a8e9,_0x4a39a3[_0xea7b('0x12')]['message']);return _0x1c789e(_0x4a39a3[_0xea7b('0x12')][_0xea7b('0x14')]);}else{logger['info']('MemberReport,\x20%s,\x20%s',_0x25a8e9,_0xea7b('0xf'));_0x1c789e(_0x4a39a3['result'][_0xea7b('0x14')]);}})[_0xea7b('0x15')](function(_0x1c4701){logger[_0xea7b('0x12')](_0xea7b('0xe'),_0x25a8e9,_0x1c4701);_0x2a477c(_0x1c4701);});});}exports['GetMemberReport']=function(_0x3e2f5e){var _0x8a7b05=this;return new Promise(function(_0x1d0cd0,_0x4cd355){return db[_0xea7b('0x16')][_0xea7b('0x17')]({'raw':_0x3e2f5e['options']?_0x3e2f5e[_0xea7b('0x18')][_0xea7b('0x19')]===undefined?!![]:![]:!![],'where':_0x3e2f5e[_0xea7b('0x18')]?_0x3e2f5e['options']['where']||null:null,'attributes':_0x3e2f5e[_0xea7b('0x18')]?_0x3e2f5e[_0xea7b('0x18')]['attributes']||null:null,'limit':_0x3e2f5e[_0xea7b('0x18')]?_0x3e2f5e[_0xea7b('0x18')][_0xea7b('0x1a')]||null:null,'include':_0x3e2f5e['options']?_0x3e2f5e['options'][_0xea7b('0x1b')]?_[_0xea7b('0x1c')](_0x3e2f5e[_0xea7b('0x18')]['include'],function(_0x574b2c){return{'model':db[_0x574b2c['model']],'as':_0x574b2c['as'],'attributes':_0x574b2c[_0xea7b('0x1d')],'include':_0x574b2c['include']?_['map'](_0x574b2c['include'],function(_0x2f60d7){return{'model':db[_0x2f60d7[_0xea7b('0x1e')]],'as':_0x2f60d7['as'],'attributes':_0x2f60d7['attributes'],'include':_0x2f60d7['include']?_[_0xea7b('0x1c')](_0x2f60d7[_0xea7b('0x1b')],function(_0x29c834){return{'model':db[_0x29c834[_0xea7b('0x1e')]],'as':_0x29c834['as'],'attributes':_0x29c834[_0xea7b('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xea7b('0xc')](function(_0x45ea56){logger[_0xea7b('0xd')]('GetMemberReport',_0x3e2f5e);logger[_0xea7b('0x10')](_0xea7b('0x1f'),_0x3e2f5e,JSON[_0xea7b('0x11')](_0x45ea56));_0x1d0cd0(_0x45ea56);})[_0xea7b('0x15')](function(_0x36275a){logger[_0xea7b('0x12')](_0xea7b('0x1f'),_0x36275a[_0xea7b('0x14')],_0x3e2f5e);_0x4cd355(_0x8a7b05[_0xea7b('0x12')](0x1f4,_0x36275a['message']));});});};exports[_0xea7b('0x20')]=function(_0x1979be){var _0x3a7ee4=this;return new Promise(function(_0x1c6d97,_0x35bdbf){return db[_0xea7b('0x16')][_0xea7b('0x21')](_0x1979be[_0xea7b('0x22')],{'raw':_0x1979be['options']?_0x1979be[_0xea7b('0x18')][_0xea7b('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x438dd0){logger[_0xea7b('0xd')](_0xea7b('0x20'),_0x1979be);logger['debug'](_0xea7b('0x20'),_0x1979be,JSON['stringify'](_0x438dd0));_0x1c6d97(_0x438dd0);})['catch'](function(_0x2b06fa){logger[_0xea7b('0x12')]('CreateMemberReport',_0x2b06fa[_0xea7b('0x14')],_0x1979be);_0x35bdbf(_0x3a7ee4[_0xea7b('0x12')](0x1f4,_0x2b06fa[_0xea7b('0x14')]));});});};exports[_0xea7b('0x23')]=function(_0x207675){var _0x577605=this;return new Promise(function(_0x10e928,_0x2d3991){return db[_0xea7b('0x16')]['update'](_0x207675['body'],{'raw':_0x207675[_0xea7b('0x18')]?_0x207675[_0xea7b('0x18')][_0xea7b('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x207675[_0xea7b('0x18')]?_0x207675[_0xea7b('0x18')]['where']||null:null,'attributes':_0x207675[_0xea7b('0x18')]?_0x207675[_0xea7b('0x18')]['attributes']||null:null,'limit':_0x207675[_0xea7b('0x18')]?_0x207675[_0xea7b('0x18')][_0xea7b('0x1a')]||null:null})[_0xea7b('0xc')](function(_0x3c939c){logger['info'](_0xea7b('0x23'),_0x207675);logger['debug'](_0xea7b('0x23'),_0x207675,JSON[_0xea7b('0x11')](_0x3c939c));_0x10e928(_0x3c939c);})[_0xea7b('0x15')](function(_0x1430b0){logger[_0xea7b('0x12')]('UpdateMemberReport',_0x1430b0[_0xea7b('0x14')],_0x207675);_0x2d3991(_0x577605[_0xea7b('0x12')](0x1f4,_0x1430b0[_0xea7b('0x14')]));});});};
\ No newline at end of file
+var _0x91c6=['http','request','info','MemberReport,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','GetMemberReport','MemberReport','raw','options','attributes','limit','map','include','model','debug','CreateMemberReport','create','body','then','UpdateMemberReport','update','where','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x91c6,0xf9));var _0x691c=function(_0x5e548c,_0x143ad9){_0x5e548c=_0x5e548c-0x0;var _0xbf0b87=_0x91c6[_0x5e548c];return _0xbf0b87;};'use strict';var _=require(_0x691c('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x691c('0x1'));var rs=require(_0x691c('0x2'));var fs=require('fs');var Redis=require(_0x691c('0x3'));var db=require(_0x691c('0x4'))['db'];var utils=require(_0x691c('0x5'));var logger=require('../../config/logger')(_0x691c('0x6'));var config=require(_0x691c('0x7'));var jayson=require(_0x691c('0x8'));var client=jayson[_0x691c('0x9')][_0x691c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x29876a,_0x5ccbe0,_0x93b7b0){return new BPromise(function(_0x40629a,_0xda904f){return client[_0x691c('0xb')](_0x29876a,_0x93b7b0)['then'](function(_0x2cfa1f){logger[_0x691c('0xc')](_0x691c('0xd'),_0x5ccbe0,'request\x20sent');logger['debug']('MemberReport,\x20%s,\x20%s,\x20%s',_0x5ccbe0,_0x691c('0xe'),JSON[_0x691c('0xf')](_0x2cfa1f));if(_0x2cfa1f[_0x691c('0x10')]){if(_0x2cfa1f[_0x691c('0x10')]['code']===0x1f4){logger['error'](_0x691c('0xd'),_0x5ccbe0,_0x2cfa1f[_0x691c('0x10')][_0x691c('0x11')]);return _0xda904f(_0x2cfa1f[_0x691c('0x10')][_0x691c('0x11')]);}logger[_0x691c('0x10')](_0x691c('0xd'),_0x5ccbe0,_0x2cfa1f[_0x691c('0x10')]['message']);return _0x40629a(_0x2cfa1f[_0x691c('0x10')][_0x691c('0x11')]);}else{logger[_0x691c('0xc')](_0x691c('0xd'),_0x5ccbe0,_0x691c('0xe'));_0x40629a(_0x2cfa1f[_0x691c('0x12')][_0x691c('0x11')]);}})[_0x691c('0x13')](function(_0x482351){logger[_0x691c('0x10')](_0x691c('0xd'),_0x5ccbe0,_0x482351);_0xda904f(_0x482351);});});}exports[_0x691c('0x14')]=function(_0x299653){var _0x436951=this;return new Promise(function(_0x522ad0,_0x11e7b5){return db[_0x691c('0x15')]['findAll']({'raw':_0x299653['options']?_0x299653['options'][_0x691c('0x16')]===undefined?!![]:![]:!![],'where':_0x299653['options']?_0x299653[_0x691c('0x17')]['where']||null:null,'attributes':_0x299653['options']?_0x299653[_0x691c('0x17')][_0x691c('0x18')]||null:null,'limit':_0x299653[_0x691c('0x17')]?_0x299653[_0x691c('0x17')][_0x691c('0x19')]||null:null,'include':_0x299653['options']?_0x299653[_0x691c('0x17')]['include']?_[_0x691c('0x1a')](_0x299653['options'][_0x691c('0x1b')],function(_0x52abf){return{'model':db[_0x52abf[_0x691c('0x1c')]],'as':_0x52abf['as'],'attributes':_0x52abf[_0x691c('0x18')],'include':_0x52abf[_0x691c('0x1b')]?_['map'](_0x52abf[_0x691c('0x1b')],function(_0x5a1635){return{'model':db[_0x5a1635[_0x691c('0x1c')]],'as':_0x5a1635['as'],'attributes':_0x5a1635[_0x691c('0x18')],'include':_0x5a1635[_0x691c('0x1b')]?_[_0x691c('0x1a')](_0x5a1635[_0x691c('0x1b')],function(_0x4281ad){return{'model':db[_0x4281ad[_0x691c('0x1c')]],'as':_0x4281ad['as'],'attributes':_0x4281ad[_0x691c('0x18')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x7a07ec){logger[_0x691c('0xc')](_0x691c('0x14'),_0x299653);logger[_0x691c('0x1d')]('GetMemberReport',_0x299653,JSON['stringify'](_0x7a07ec));_0x522ad0(_0x7a07ec);})[_0x691c('0x13')](function(_0xcceaa){logger['error'](_0x691c('0x14'),_0xcceaa['message'],_0x299653);_0x11e7b5(_0x436951[_0x691c('0x10')](0x1f4,_0xcceaa['message']));});});};exports[_0x691c('0x1e')]=function(_0x2cb3ab){var _0x21c531=this;return new Promise(function(_0x5cebbd,_0x547db9){return db[_0x691c('0x15')][_0x691c('0x1f')](_0x2cb3ab[_0x691c('0x20')],{'raw':_0x2cb3ab[_0x691c('0x17')]?_0x2cb3ab[_0x691c('0x17')][_0x691c('0x16')]===undefined?!![]:![]:!![]})[_0x691c('0x21')](function(_0x5b1259){logger[_0x691c('0xc')](_0x691c('0x1e'),_0x2cb3ab);logger['debug'](_0x691c('0x1e'),_0x2cb3ab,JSON[_0x691c('0xf')](_0x5b1259));_0x5cebbd(_0x5b1259);})[_0x691c('0x13')](function(_0x4367cc){logger['error'](_0x691c('0x1e'),_0x4367cc[_0x691c('0x11')],_0x2cb3ab);_0x547db9(_0x21c531[_0x691c('0x10')](0x1f4,_0x4367cc['message']));});});};exports[_0x691c('0x22')]=function(_0x37a7da){var _0x8cbbf7=this;return new Promise(function(_0x2ca9d4,_0x278f65){return db['MemberReport'][_0x691c('0x23')](_0x37a7da[_0x691c('0x20')],{'raw':_0x37a7da[_0x691c('0x17')]?_0x37a7da[_0x691c('0x17')][_0x691c('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x37a7da[_0x691c('0x17')]?_0x37a7da['options'][_0x691c('0x24')]||null:null,'attributes':_0x37a7da['options']?_0x37a7da['options'][_0x691c('0x18')]||null:null,'limit':_0x37a7da[_0x691c('0x17')]?_0x37a7da[_0x691c('0x17')][_0x691c('0x19')]||null:null})['then'](function(_0x41dfb5){logger[_0x691c('0xc')](_0x691c('0x22'),_0x37a7da);logger[_0x691c('0x1d')](_0x691c('0x22'),_0x37a7da,JSON[_0x691c('0xf')](_0x41dfb5));_0x2ca9d4(_0x41dfb5);})[_0x691c('0x13')](function(_0x2c2cc4){logger[_0x691c('0x10')](_0x691c('0x22'),_0x2c2cc4[_0x691c('0x11')],_0x37a7da);_0x278f65(_0x8cbbf7['error'](0x1f4,_0x2c2cc4[_0x691c('0x11')]));});});};
\ No newline at end of file
index 8051036..fa02198 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x993f=['connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./migration.controller','get','index','exports','multer','util','path'];(function(_0x1af655,_0x28b928){var _0x29da01=function(_0x508209){while(--_0x508209){_0x1af655['push'](_0x1af655['shift']());}};_0x29da01(++_0x28b928);}(_0x993f,0x129));var _0xf993=function(_0x1b0b69,_0x5e1995){_0x1b0b69=_0x1b0b69-0x0;var _0xc181d1=_0x993f[_0x1b0b69];return _0xc181d1;};'use strict';var multer=require(_0xf993('0x0'));var util=require(_0xf993('0x1'));var path=require(_0xf993('0x2'));var timeout=require(_0xf993('0x3'));var express=require('express');var router=express[_0xf993('0x4')]();var fs_extra=require(_0xf993('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xf993('0x6'));var config=require(_0xf993('0x7'));var controller=require(_0xf993('0x8'));router[_0xf993('0x9')]('/',controller[_0xf993('0xa')]);module[_0xf993('0xb')]=router;
\ No newline at end of file
+var _0xf0a2=['util','path','connect-timeout','express','fs-extra','../../components/auth/service','./migration.controller','index','multer'];(function(_0x1ab21c,_0x446e99){var _0x53dcb1=function(_0x482a6f){while(--_0x482a6f){_0x1ab21c['push'](_0x1ab21c['shift']());}};_0x53dcb1(++_0x446e99);}(_0xf0a2,0x1ca));var _0x2f0a=function(_0x813f9e,_0x1a7588){_0x813f9e=_0x813f9e-0x0;var _0x7c37e7=_0xf0a2[_0x813f9e];return _0x7c37e7;};'use strict';var multer=require(_0x2f0a('0x0'));var util=require(_0x2f0a('0x1'));var path=require(_0x2f0a('0x2'));var timeout=require(_0x2f0a('0x3'));var express=require(_0x2f0a('0x4'));var router=express['Router']();var fs_extra=require(_0x2f0a('0x5'));var auth=require(_0x2f0a('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x2f0a('0x7'));router['get']('/',controller[_0x2f0a('0x8')]);module['exports']=router;
\ No newline at end of file
index b7ff254..64097de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x690f=['exports','STRING','version','sequelize'];(function(_0x3bceea,_0x58af75){var _0x30a8d3=function(_0x1550b5){while(--_0x1550b5){_0x3bceea['push'](_0x3bceea['shift']());}};_0x30a8d3(++_0x58af75);}(_0x690f,0x1ab));var _0xf690=function(_0x5eb6fb,_0xa2305c){_0x5eb6fb=_0x5eb6fb-0x0;var _0x17e437=_0x690f[_0x5eb6fb];return _0x17e437;};'use strict';var Sequelize=require(_0xf690('0x0'));module[_0xf690('0x1')]={'version':{'type':Sequelize[_0xf690('0x2')],'unique':_0xf690('0x3')}};
\ No newline at end of file
+var _0x8299=['STRING','version','sequelize','exports'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x8299,0x96));var _0x9829=function(_0x364780,_0x5ae20a){_0x364780=_0x364780-0x0;var _0x2dfcd8=_0x8299[_0x364780];return _0x2dfcd8;};'use strict';var Sequelize=require(_0x9829('0x0'));module[_0x9829('0x1')]={'version':{'type':Sequelize[_0x9829('0x2')],'unique':_0x9829('0x3')}};
\ No newline at end of file
index 699b1e5..7f8a8eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d70=['nolimit','offset','sort','where','pick','filter','merge','include','findAll','rows','catch','eml-format','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','count','set','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','Migration','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0x0d70,0x91));var _0x00d7=function(_0x2637c1,_0x3bddbb){_0x2637c1=_0x2637c1-0x0;var _0x10cdf0=_0x0d70[_0x2637c1];return _0x10cdf0;};'use strict';var emlformat=require(_0x00d7('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x00d7('0x1'));var moment=require(_0x00d7('0x2'));var BPromise=require(_0x00d7('0x3'));var Mustache=require(_0x00d7('0x4'));var util=require('util');var path=require('path');var sox=require(_0x00d7('0x5'));var csv=require(_0x00d7('0x6'));var ejs=require(_0x00d7('0x7'));var fs=require('fs');var fs_extra=require(_0x00d7('0x8'));var _=require(_0x00d7('0x9'));var squel=require('squel');var crypto=require(_0x00d7('0xa'));var jsforce=require(_0x00d7('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x00d7('0x6'));var querystring=require(_0x00d7('0xc'));var Papa=require(_0x00d7('0xd'));var Redis=require('ioredis');var authService=require(_0x00d7('0xe'));var qs=require(_0x00d7('0xf'));var as=require(_0x00d7('0x10'));var hardwareService=require(_0x00d7('0x11'));var logger=require(_0x00d7('0x12'))(_0x00d7('0x13'));var utils=require(_0x00d7('0x14'));var config=require(_0x00d7('0x15'));var licenseUtil=require(_0x00d7('0x16'));var db=require(_0x00d7('0x17'))['db'];function respondWithStatusCode(_0x5a1129,_0x5d95f0){_0x5d95f0=_0x5d95f0||0xcc;return function(_0x307d87){if(_0x307d87){return _0x5a1129[_0x00d7('0x18')](_0x5d95f0);}return _0x5a1129['status'](_0x5d95f0)[_0x00d7('0x19')]();};}function respondWithResult(_0xe966c6,_0x56ca14){_0x56ca14=_0x56ca14||0xc8;return function(_0x25c99c){if(_0x25c99c){return _0xe966c6[_0x00d7('0x1a')](_0x56ca14)[_0x00d7('0x1b')](_0x25c99c);}};}function respondWithFilteredResult(_0x13a408,_0x4c06f8){return function(_0x6cc916){if(_0x6cc916){var _0x23a35f=typeof _0x4c06f8['offset']===_0x00d7('0x1c')&&typeof _0x4c06f8[_0x00d7('0x1d')]==='undefined';var _0x195210=_0x6cc916[_0x00d7('0x1e')];var _0x55854a=_0x23a35f?0x0:_0x4c06f8['offset'];var _0x226ab6=_0x23a35f?_0x6cc916[_0x00d7('0x1e')]:_0x4c06f8['offset']+_0x4c06f8[_0x00d7('0x1d')];var _0x42ed6e;if(_0x226ab6>=_0x195210){_0x226ab6=_0x195210;_0x42ed6e=0xc8;}else{_0x42ed6e=0xce;}_0x13a408['status'](_0x42ed6e);return _0x13a408[_0x00d7('0x1f')]('Content-Range',_0x55854a+'-'+_0x226ab6+'/'+_0x195210)['json'](_0x6cc916);}return null;};}function patchUpdates(_0x4bc480){return function(_0x321740){try{jsonpatch[_0x00d7('0x20')](_0x321740,_0x4bc480,!![]);}catch(_0x4307e8){return BPromise[_0x00d7('0x21')](_0x4307e8);}return _0x321740[_0x00d7('0x22')]();};}function saveUpdates(_0x3b6406,_0xb71eb8){return function(_0x57aca6){if(_0x57aca6){return _0x57aca6[_0x00d7('0x23')](_0x3b6406)[_0x00d7('0x24')](function(_0x478437){return _0x478437;});}return null;};}function removeEntity(_0x4abf1e,_0x23f3b8){return function(_0x31bdff){if(_0x31bdff){return _0x31bdff[_0x00d7('0x25')]()[_0x00d7('0x24')](function(){_0x4abf1e[_0x00d7('0x1a')](0xcc)[_0x00d7('0x19')]();});}};}function handleEntityNotFound(_0x878a12,_0x2c62d4){return function(_0x53f6e6){if(!_0x53f6e6){_0x878a12[_0x00d7('0x18')](0x194);}return _0x53f6e6;};}function handleError(_0x47eb46,_0x2dda57){_0x2dda57=_0x2dda57||0x1f4;return function(_0x240dcc){logger[_0x00d7('0x26')](_0x240dcc[_0x00d7('0x27')]);if(_0x240dcc[_0x00d7('0x28')]){delete _0x240dcc['name'];}_0x47eb46[_0x00d7('0x1a')](_0x2dda57)[_0x00d7('0x29')](_0x240dcc);};}exports[_0x00d7('0x2a')]=function(_0x24acad,_0x274a3c){var _0x247a58={},_0x3b256e={},_0x391fce={'count':0x0,'rows':[]};var _0x428263=_[_0x00d7('0x2b')](db[_0x00d7('0x2c')][_0x00d7('0x2d')],function(_0x3b7851){return{'name':_0x3b7851[_0x00d7('0x2e')],'type':_0x3b7851[_0x00d7('0x2f')][_0x00d7('0x30')]};});_0x3b256e[_0x00d7('0x31')]=_[_0x00d7('0x2b')](_0x428263,_0x00d7('0x28'));_0x3b256e[_0x00d7('0x32')]=_['keys'](_0x24acad['query']);_0x3b256e[_0x00d7('0x33')]=_[_0x00d7('0x34')](_0x3b256e['model'],_0x3b256e[_0x00d7('0x32')]);_0x247a58[_0x00d7('0x35')]=_[_0x00d7('0x34')](_0x3b256e[_0x00d7('0x31')],qs[_0x00d7('0x36')](_0x24acad['query'][_0x00d7('0x36')]));_0x247a58[_0x00d7('0x35')]=_0x247a58[_0x00d7('0x35')][_0x00d7('0x37')]?_0x247a58[_0x00d7('0x35')]:_0x3b256e[_0x00d7('0x31')];if(!_0x24acad[_0x00d7('0x32')]['hasOwnProperty'](_0x00d7('0x38'))){_0x247a58[_0x00d7('0x1d')]=qs[_0x00d7('0x1d')](_0x24acad[_0x00d7('0x32')][_0x00d7('0x1d')]);_0x247a58[_0x00d7('0x39')]=qs[_0x00d7('0x39')](_0x24acad[_0x00d7('0x32')]['offset']);}_0x247a58['order']=qs[_0x00d7('0x3a')](_0x24acad['query'][_0x00d7('0x3a')]);_0x247a58[_0x00d7('0x3b')]=qs['filters'](_[_0x00d7('0x3c')](_0x24acad[_0x00d7('0x32')],_0x3b256e[_0x00d7('0x33')]),_0x428263);if(_0x24acad[_0x00d7('0x32')][_0x00d7('0x3d')]){_0x247a58[_0x00d7('0x3b')]=_[_0x00d7('0x3e')](_0x247a58[_0x00d7('0x3b')],{'$or':_[_0x00d7('0x2b')](_0x428263,function(_0x18f011){if(_0x18f011['type']!=='VIRTUAL'){var _0x3889d0={};_0x3889d0[_0x18f011[_0x00d7('0x28')]]={'$like':'%'+_0x24acad[_0x00d7('0x32')][_0x00d7('0x3d')]+'%'};return _0x3889d0;}})});}_0x247a58=_['merge']({},_0x247a58,_0x24acad['options']);var _0xe78f2b={'where':_0x247a58[_0x00d7('0x3b')]};return db[_0x00d7('0x2c')][_0x00d7('0x1e')](_0xe78f2b)[_0x00d7('0x24')](function(_0x40d02e){_0x391fce[_0x00d7('0x1e')]=_0x40d02e;if(_0x24acad[_0x00d7('0x32')]['includeAll']){_0x247a58[_0x00d7('0x3f')]=[{'all':!![]}];}return db[_0x00d7('0x2c')][_0x00d7('0x40')](_0x247a58);})[_0x00d7('0x24')](function(_0x2e888c){_0x391fce[_0x00d7('0x41')]=_0x2e888c;return _0x391fce;})[_0x00d7('0x24')](respondWithFilteredResult(_0x274a3c,_0x247a58))[_0x00d7('0x42')](handleError(_0x274a3c,null));};
\ No newline at end of file
+var _0x37b4=['includeAll','include','findAll','rows','catch','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','save','update','then','destroy','stack','send','index','map','rawAttributes','fieldName','type','key','model','name','query','intersection','attributes','fields','length','hasOwnProperty','sort','where','filters','merge','VIRTUAL','filter','options','Migration'];(function(_0x5067c6,_0x3f1e9e){var _0xb5daa3=function(_0x45337e){while(--_0x45337e){_0x5067c6['push'](_0x5067c6['shift']());}};_0xb5daa3(++_0x3f1e9e);}(_0x37b4,0x16d));var _0x437b=function(_0x5b3ce1,_0xedd65b){_0x5b3ce1=_0x5b3ce1-0x0;var _0x38b358=_0x37b4[_0x5b3ce1];return _0x38b358;};'use strict';var emlformat=require(_0x437b('0x0'));var rimraf=require(_0x437b('0x1'));var zipdir=require(_0x437b('0x2'));var jsonpatch=require(_0x437b('0x3'));var rp=require(_0x437b('0x4'));var moment=require(_0x437b('0x5'));var BPromise=require(_0x437b('0x6'));var Mustache=require(_0x437b('0x7'));var util=require(_0x437b('0x8'));var path=require(_0x437b('0x9'));var sox=require(_0x437b('0xa'));var csv=require(_0x437b('0xb'));var ejs=require(_0x437b('0xc'));var fs=require('fs');var fs_extra=require(_0x437b('0xd'));var _=require(_0x437b('0xe'));var squel=require(_0x437b('0xf'));var crypto=require(_0x437b('0x10'));var jsforce=require(_0x437b('0x11'));var deskjs=require(_0x437b('0x12'));var toCsv=require(_0x437b('0xb'));var querystring=require(_0x437b('0x13'));var Papa=require(_0x437b('0x14'));var Redis=require(_0x437b('0x15'));var authService=require(_0x437b('0x16'));var qs=require(_0x437b('0x17'));var as=require(_0x437b('0x18'));var hardwareService=require(_0x437b('0x19'));var logger=require('../../config/logger')(_0x437b('0x1a'));var utils=require(_0x437b('0x1b'));var config=require(_0x437b('0x1c'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x572a46,_0x3ff94e){_0x3ff94e=_0x3ff94e||0xcc;return function(_0x185ba4){if(_0x185ba4){return _0x572a46[_0x437b('0x1d')](_0x3ff94e);}return _0x572a46[_0x437b('0x1e')](_0x3ff94e)[_0x437b('0x1f')]();};}function respondWithResult(_0x5122ad,_0x4910db){_0x4910db=_0x4910db||0xc8;return function(_0x4c5b93){if(_0x4c5b93){return _0x5122ad[_0x437b('0x1e')](_0x4910db)[_0x437b('0x20')](_0x4c5b93);}};}function respondWithFilteredResult(_0x47aada,_0x216152){return function(_0x4e5419){if(_0x4e5419){var _0x4f9a9b=typeof _0x216152[_0x437b('0x21')]===_0x437b('0x22')&&typeof _0x216152[_0x437b('0x23')]==='undefined';var _0x4a1a67=_0x4e5419['count'];var _0x484971=_0x4f9a9b?0x0:_0x216152[_0x437b('0x21')];var _0xa4af68=_0x4f9a9b?_0x4e5419[_0x437b('0x24')]:_0x216152[_0x437b('0x21')]+_0x216152[_0x437b('0x23')];var _0x5e66e7;if(_0xa4af68>=_0x4a1a67){_0xa4af68=_0x4a1a67;_0x5e66e7=0xc8;}else{_0x5e66e7=0xce;}_0x47aada[_0x437b('0x1e')](_0x5e66e7);return _0x47aada[_0x437b('0x25')](_0x437b('0x26'),_0x484971+'-'+_0xa4af68+'/'+_0x4a1a67)[_0x437b('0x20')](_0x4e5419);}return null;};}function patchUpdates(_0x540ecd){return function(_0x3d27fb){try{jsonpatch['apply'](_0x3d27fb,_0x540ecd,!![]);}catch(_0x375790){return BPromise['reject'](_0x375790);}return _0x3d27fb[_0x437b('0x27')]();};}function saveUpdates(_0x26de4d,_0x7bd7a1){return function(_0x39924e){if(_0x39924e){return _0x39924e[_0x437b('0x28')](_0x26de4d)[_0x437b('0x29')](function(_0x47395b){return _0x47395b;});}return null;};}function removeEntity(_0x7739a0,_0x13746a){return function(_0x1d617f){if(_0x1d617f){return _0x1d617f[_0x437b('0x2a')]()['then'](function(){_0x7739a0[_0x437b('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x287996,_0x4ecdb3){return function(_0x2400c7){if(!_0x2400c7){_0x287996[_0x437b('0x1d')](0x194);}return _0x2400c7;};}function handleError(_0x2c2199,_0x4c77fc){_0x4c77fc=_0x4c77fc||0x1f4;return function(_0x44ff83){logger['error'](_0x44ff83[_0x437b('0x2b')]);if(_0x44ff83['name']){delete _0x44ff83['name'];}_0x2c2199['status'](_0x4c77fc)[_0x437b('0x2c')](_0x44ff83);};}exports[_0x437b('0x2d')]=function(_0x1c4801,_0xecd8e7){var _0x1816bd={},_0x2f30aa={},_0x2dc6ad={'count':0x0,'rows':[]};var _0x43594d=_[_0x437b('0x2e')](db['Migration'][_0x437b('0x2f')],function(_0x4cde46){return{'name':_0x4cde46[_0x437b('0x30')],'type':_0x4cde46[_0x437b('0x31')][_0x437b('0x32')]};});_0x2f30aa[_0x437b('0x33')]=_[_0x437b('0x2e')](_0x43594d,_0x437b('0x34'));_0x2f30aa[_0x437b('0x35')]=_['keys'](_0x1c4801[_0x437b('0x35')]);_0x2f30aa['filters']=_[_0x437b('0x36')](_0x2f30aa[_0x437b('0x33')],_0x2f30aa[_0x437b('0x35')]);_0x1816bd[_0x437b('0x37')]=_[_0x437b('0x36')](_0x2f30aa['model'],qs[_0x437b('0x38')](_0x1c4801['query'][_0x437b('0x38')]));_0x1816bd[_0x437b('0x37')]=_0x1816bd['attributes'][_0x437b('0x39')]?_0x1816bd[_0x437b('0x37')]:_0x2f30aa[_0x437b('0x33')];if(!_0x1c4801[_0x437b('0x35')][_0x437b('0x3a')]('nolimit')){_0x1816bd[_0x437b('0x23')]=qs[_0x437b('0x23')](_0x1c4801[_0x437b('0x35')][_0x437b('0x23')]);_0x1816bd[_0x437b('0x21')]=qs[_0x437b('0x21')](_0x1c4801['query'][_0x437b('0x21')]);}_0x1816bd['order']=qs[_0x437b('0x3b')](_0x1c4801[_0x437b('0x35')][_0x437b('0x3b')]);_0x1816bd[_0x437b('0x3c')]=qs['filters'](_['pick'](_0x1c4801['query'],_0x2f30aa[_0x437b('0x3d')]),_0x43594d);if(_0x1c4801[_0x437b('0x35')]['filter']){_0x1816bd[_0x437b('0x3c')]=_[_0x437b('0x3e')](_0x1816bd[_0x437b('0x3c')],{'$or':_[_0x437b('0x2e')](_0x43594d,function(_0x31d421){if(_0x31d421[_0x437b('0x31')]!==_0x437b('0x3f')){var _0x13e37d={};_0x13e37d[_0x31d421['name']]={'$like':'%'+_0x1c4801['query'][_0x437b('0x40')]+'%'};return _0x13e37d;}})});}_0x1816bd=_[_0x437b('0x3e')]({},_0x1816bd,_0x1c4801[_0x437b('0x41')]);var _0x2fd486={'where':_0x1816bd[_0x437b('0x3c')]};return db[_0x437b('0x42')][_0x437b('0x24')](_0x2fd486)[_0x437b('0x29')](function(_0x4f0057){_0x2dc6ad[_0x437b('0x24')]=_0x4f0057;if(_0x1c4801[_0x437b('0x35')][_0x437b('0x43')]){_0x1816bd[_0x437b('0x44')]=[{'all':!![]}];}return db[_0x437b('0x42')][_0x437b('0x45')](_0x1816bd);})[_0x437b('0x29')](function(_0x24b532){_0x2dc6ad[_0x437b('0x46')]=_0x24b532;return _0x2dc6ad;})[_0x437b('0x29')](respondWithFilteredResult(_0xecd8e7,_0x1816bd))[_0x437b('0x47')](handleError(_0xecd8e7,null));};
\ No newline at end of file
index 62c32f5..11420d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f27=['../../config/environment','./migration.attributes','exports','define','Migration','migrations','util','moment','bluebird','request-promise','path','rimraf'];(function(_0x483fb9,_0x457348){var _0x27eaf0=function(_0x5bc4a0){while(--_0x5bc4a0){_0x483fb9['push'](_0x483fb9['shift']());}};_0x27eaf0(++_0x457348);}(_0x7f27,0xd2));var _0x77f2=function(_0x2af4ab,_0x91b5de){_0x2af4ab=_0x2af4ab-0x0;var _0x405d34=_0x7f27[_0x2af4ab];return _0x405d34;};'use strict';var _=require('lodash');var util=require(_0x77f2('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x77f2('0x1'));var BPromise=require(_0x77f2('0x2'));var rp=require(_0x77f2('0x3'));var fs=require('fs');var path=require(_0x77f2('0x4'));var rimraf=require(_0x77f2('0x5'));var config=require(_0x77f2('0x6'));var attributes=require(_0x77f2('0x7'));module[_0x77f2('0x8')]=function(_0x33f2fd,_0x527d9c){return _0x33f2fd[_0x77f2('0x9')](_0x77f2('0xa'),attributes,{'tableName':_0x77f2('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1bd8=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','Migration','lodash','../../config/logger'];(function(_0x5007f6,_0x1ab6d9){var _0x1d686f=function(_0x12a0fc){while(--_0x12a0fc){_0x5007f6['push'](_0x5007f6['shift']());}};_0x1d686f(++_0x1ab6d9);}(_0x1bd8,0x15a));var _0x81bd=function(_0x3c87b0,_0x25ad68){_0x3c87b0=_0x3c87b0-0x0;var _0x1da20c=_0x1bd8[_0x3c87b0];return _0x1da20c;};'use strict';var _=require(_0x81bd('0x0'));var util=require('util');var logger=require(_0x81bd('0x1'))(_0x81bd('0x2'));var moment=require(_0x81bd('0x3'));var BPromise=require(_0x81bd('0x4'));var rp=require(_0x81bd('0x5'));var fs=require('fs');var path=require(_0x81bd('0x6'));var rimraf=require(_0x81bd('0x7'));var config=require(_0x81bd('0x8'));var attributes=require('./migration.attributes');module[_0x81bd('0x9')]=function(_0x334be1,_0x596d2a){return _0x334be1[_0x81bd('0xa')](_0x81bd('0xb'),attributes,{'tableName':'migrations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ed9cf60..b0cd64f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d58=['util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','Migration,\x20%s,\x20%s','debug','Migration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','catch','lodash'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x2d58,0x186));var _0x82d5=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x2d58[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0x82d5('0x0'));var util=require(_0x82d5('0x1'));var moment=require(_0x82d5('0x2'));var BPromise=require('bluebird');var rs=require(_0x82d5('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x82d5('0x4'))['db'];var utils=require(_0x82d5('0x5'));var logger=require(_0x82d5('0x6'))(_0x82d5('0x7'));var config=require(_0x82d5('0x8'));var jayson=require(_0x82d5('0x9'));var client=jayson[_0x82d5('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0xd636fe,_0x2f5257,_0x24c9cb){return new BPromise(function(_0x3dea8b,_0x3ff208){return client[_0x82d5('0xb')](_0xd636fe,_0x24c9cb)[_0x82d5('0xc')](function(_0x19d045){logger[_0x82d5('0xd')](_0x82d5('0xe'),_0x2f5257,'request\x20sent');logger[_0x82d5('0xf')](_0x82d5('0x10'),_0x2f5257,_0x82d5('0x11'),JSON[_0x82d5('0x12')](_0x19d045));if(_0x19d045['error']){if(_0x19d045['error'][_0x82d5('0x13')]===0x1f4){logger[_0x82d5('0x14')]('Migration,\x20%s,\x20%s',_0x2f5257,_0x19d045[_0x82d5('0x14')]['message']);return _0x3ff208(_0x19d045[_0x82d5('0x14')][_0x82d5('0x15')]);}logger[_0x82d5('0x14')](_0x82d5('0xe'),_0x2f5257,_0x19d045[_0x82d5('0x14')][_0x82d5('0x15')]);return _0x3dea8b(_0x19d045[_0x82d5('0x14')][_0x82d5('0x15')]);}else{logger['info'](_0x82d5('0xe'),_0x2f5257,_0x82d5('0x11'));_0x3dea8b(_0x19d045['result'][_0x82d5('0x15')]);}})[_0x82d5('0x16')](function(_0x421d58){logger[_0x82d5('0x14')](_0x82d5('0xe'),_0x2f5257,_0x421d58);_0x3ff208(_0x421d58);});});}
\ No newline at end of file
+var _0x1d90=['message','result','catch','lodash','moment','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','then','info','request\x20sent','debug','Migration,\x20%s,\x20%s,\x20%s','stringify','error','code','Migration,\x20%s,\x20%s'];(function(_0x2e4aa2,_0x11956a){var _0x5e6092=function(_0x4c12c2){while(--_0x4c12c2){_0x2e4aa2['push'](_0x2e4aa2['shift']());}};_0x5e6092(++_0x11956a);}(_0x1d90,0x13e));var _0x01d9=function(_0x32874f,_0x2b45c6){_0x32874f=_0x32874f-0x0;var _0x5a89c6=_0x1d90[_0x32874f];return _0x5a89c6;};'use strict';var _=require(_0x01d9('0x0'));var util=require('util');var moment=require(_0x01d9('0x1'));var BPromise=require('bluebird');var rs=require(_0x01d9('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x01d9('0x3'))['db'];var utils=require(_0x01d9('0x4'));var logger=require('../../config/logger')(_0x01d9('0x5'));var config=require(_0x01d9('0x6'));var jayson=require(_0x01d9('0x7'));var client=jayson['client'][_0x01d9('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1664eb,_0x31c11d,_0x598409){return new BPromise(function(_0xef9d5b,_0x479447){return client['request'](_0x1664eb,_0x598409)[_0x01d9('0x9')](function(_0x2b8e06){logger[_0x01d9('0xa')]('Migration,\x20%s,\x20%s',_0x31c11d,_0x01d9('0xb'));logger[_0x01d9('0xc')](_0x01d9('0xd'),_0x31c11d,'request\x20sent',JSON[_0x01d9('0xe')](_0x2b8e06));if(_0x2b8e06[_0x01d9('0xf')]){if(_0x2b8e06[_0x01d9('0xf')][_0x01d9('0x10')]===0x1f4){logger[_0x01d9('0xf')](_0x01d9('0x11'),_0x31c11d,_0x2b8e06[_0x01d9('0xf')][_0x01d9('0x12')]);return _0x479447(_0x2b8e06[_0x01d9('0xf')][_0x01d9('0x12')]);}logger[_0x01d9('0xf')](_0x01d9('0x11'),_0x31c11d,_0x2b8e06['error'][_0x01d9('0x12')]);return _0xef9d5b(_0x2b8e06[_0x01d9('0xf')][_0x01d9('0x12')]);}else{logger[_0x01d9('0xa')]('Migration,\x20%s,\x20%s',_0x31c11d,_0x01d9('0xb'));_0xef9d5b(_0x2b8e06[_0x01d9('0x13')][_0x01d9('0x12')]);}})[_0x01d9('0x14')](function(_0x147911){logger['error'](_0x01d9('0x11'),_0x31c11d,_0x147911);_0x479447(_0x147911);});});}
\ No newline at end of file
index c68c4e5..e1e61e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeaab=['exports','multer','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./network.controller','get','isAuthenticated','index','/:id','show','post','put','update','delete'];(function(_0x243b2f,_0x30aa15){var _0xcb3c2d=function(_0x213bb2){while(--_0x213bb2){_0x243b2f['push'](_0x243b2f['shift']());}};_0xcb3c2d(++_0x30aa15);}(_0xeaab,0xd9));var _0xbeaa=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xeaab[_0x432682];return _0x463d05;};'use strict';var multer=require(_0xbeaa('0x0'));var util=require('util');var path=require(_0xbeaa('0x1'));var timeout=require(_0xbeaa('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xbeaa('0x3'));var auth=require(_0xbeaa('0x4'));var interaction=require(_0xbeaa('0x5'));var config=require(_0xbeaa('0x6'));var controller=require(_0xbeaa('0x7'));router[_0xbeaa('0x8')]('/',auth[_0xbeaa('0x9')](),controller[_0xbeaa('0xa')]);router[_0xbeaa('0x8')](_0xbeaa('0xb'),auth[_0xbeaa('0x9')](),controller[_0xbeaa('0xc')]);router[_0xbeaa('0xd')]('/',auth[_0xbeaa('0x9')](),controller['create']);router[_0xbeaa('0xe')](_0xbeaa('0xb'),auth[_0xbeaa('0x9')](),controller[_0xbeaa('0xf')]);router[_0xbeaa('0x10')](_0xbeaa('0xb'),auth[_0xbeaa('0x9')](),controller['destroy']);module[_0xbeaa('0x11')]=router;
\ No newline at end of file
+var _0xf496=['../../config/environment','./network.controller','get','isAuthenticated','/:id','put','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service'];(function(_0x136619,_0x31c9b2){var _0x38c4a5=function(_0x10b74d){while(--_0x10b74d){_0x136619['push'](_0x136619['shift']());}};_0x38c4a5(++_0x31c9b2);}(_0xf496,0x1c7));var _0x6f49=function(_0x3f06b6,_0x551f6c){_0x3f06b6=_0x3f06b6-0x0;var _0xaae9b3=_0xf496[_0x3f06b6];return _0xaae9b3;};'use strict';var multer=require(_0x6f49('0x0'));var util=require(_0x6f49('0x1'));var path=require(_0x6f49('0x2'));var timeout=require(_0x6f49('0x3'));var express=require(_0x6f49('0x4'));var router=express['Router']();var fs_extra=require(_0x6f49('0x5'));var auth=require(_0x6f49('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x6f49('0x7'));var controller=require(_0x6f49('0x8'));router[_0x6f49('0x9')]('/',auth[_0x6f49('0xa')](),controller['index']);router[_0x6f49('0x9')](_0x6f49('0xb'),auth[_0x6f49('0xa')](),controller['show']);router['post']('/',auth[_0x6f49('0xa')](),controller['create']);router[_0x6f49('0xc')]('/:id',auth['isAuthenticated'](),controller['update']);router['delete'](_0x6f49('0xb'),auth[_0x6f49('0xa')](),controller['destroy']);module[_0x6f49('0xd')]=router;
\ No newline at end of file
index 484384a..1f19c6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14cf=['stun','turn','STRING','sequelize','ENUM','localnet','externip'];(function(_0x5f56f4,_0x545544){var _0x661cfe=function(_0x4ce8af){while(--_0x4ce8af){_0x5f56f4['push'](_0x5f56f4['shift']());}};_0x661cfe(++_0x545544);}(_0x14cf,0x176));var _0xf14c=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0x14cf[_0x1035c1];return _0x308d67;};'use strict';var Sequelize=require(_0xf14c('0x0'));module['exports']={'type':{'type':Sequelize[_0xf14c('0x1')](_0xf14c('0x2'),_0xf14c('0x3'),_0xf14c('0x4'),_0xf14c('0x5'))},'value':{'type':Sequelize[_0xf14c('0x6')]},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0xf14c('0x6')]}};
\ No newline at end of file
+var _0x5d01=['stun','turn','STRING','ENUM','localnet','externip'];(function(_0x475eea,_0x58ee9a){var _0x38f868=function(_0x39e7e0){while(--_0x39e7e0){_0x475eea['push'](_0x475eea['shift']());}};_0x38f868(++_0x58ee9a);}(_0x5d01,0x1d7));var _0x15d0=function(_0x5e8677,_0x12cb22){_0x5e8677=_0x5e8677-0x0;var _0x531614=_0x5d01[_0x5e8677];return _0x531614;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize[_0x15d0('0x0')](_0x15d0('0x1'),_0x15d0('0x2'),_0x15d0('0x3'),_0x15d0('0x4'))},'value':{'type':Sequelize[_0x15d0('0x5')]},'username':{'type':Sequelize[_0x15d0('0x5')]},'password':{'type':Sequelize[_0x15d0('0x5')]}};
\ No newline at end of file
index a07ad60..8016d46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e31=['server/files/templates/network.ejs','format','path','ejs','lodash','../../components/parsers/qs','../../config/logger','../../config/environment','../../mysqldb','jayson/promise','client','request','then','info','Network,\x20%s,\x20%s','Network,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','status','json','offset','limit','undefined','count','set','Content-Range','update','destroy','end','sendStatus','stack','name','send','index','map','Network','fieldName','type','key','keys','filters','intersection','query','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','filter','merge','options','includeAll','include','findAll','show','rawAttributes','find','create','body','toUpperCase','STUN','join','server/files/templates/stun_multiple.ejs','utf8','render','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','readFileSync','root','server/files/templates/turn_multiple.ejs','/etc/asterisk/turn_xcally.conf','res_stun_monitor.so','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','chan_sip.so','params','TURN'];(function(_0x3200ba,_0x44da92){var _0x4c015c=function(_0x3eacf5){while(--_0x3eacf5){_0x3200ba['push'](_0x3200ba['shift']());}};_0x4c015c(++_0x44da92);}(_0x1e31,0x1ba));var _0x11e3=function(_0x4abe7c,_0x16f1a5){_0x4abe7c=_0x4abe7c-0x0;var _0x16f044=_0x1e31[_0x4abe7c];return _0x16f044;};'use strict';var util=require('util');var path=require(_0x11e3('0x0'));var ejs=require(_0x11e3('0x1'));var fs=require('fs');var _=require(_0x11e3('0x2'));var qs=require(_0x11e3('0x3'));var logger=require(_0x11e3('0x4'))('api');var config=require(_0x11e3('0x5'));var db=require(_0x11e3('0x6'))['db'];var jayson=require(_0x11e3('0x7'));var client=jayson[_0x11e3('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x518259,_0x477fd6,_0x435c36,_0x15c2cb){return new Promise(function(_0x2f6699,_0x292534){var _0x4349c7=_0x15c2cb||client;return _0x4349c7[_0x11e3('0x9')](_0x518259,_0x435c36)[_0x11e3('0xa')](function(_0x256898){logger[_0x11e3('0xb')](_0x11e3('0xc'),_0x477fd6,'request\x20sent');logger['debug'](_0x11e3('0xd'),_0x477fd6,_0x11e3('0xe'),JSON[_0x11e3('0xf')](_0x256898));if(_0x256898[_0x11e3('0x10')]){if(_0x256898[_0x11e3('0x10')][_0x11e3('0x11')]===0x1f4){logger[_0x11e3('0x10')](_0x11e3('0xc'),_0x477fd6,_0x256898[_0x11e3('0x10')][_0x11e3('0x12')]);return _0x292534(_0x256898['error'][_0x11e3('0x12')]);}logger[_0x11e3('0x10')](_0x11e3('0xc'),_0x477fd6,_0x256898['error'][_0x11e3('0x12')]);return _0x2f6699(_0x256898[_0x11e3('0x10')][_0x11e3('0x12')]);}else{logger[_0x11e3('0xb')](_0x11e3('0xc'),_0x477fd6,'request\x20sent');_0x2f6699(_0x256898['result'][_0x11e3('0x12')]);}})[_0x11e3('0x13')](function(_0x573d72){logger[_0x11e3('0x10')](_0x11e3('0xc'),_0x477fd6,_0x573d72);_0x292534(_0x573d72);});});}function respondWithResult(_0x253cfb,_0x12571c){_0x12571c=_0x12571c||0xc8;return function(_0x415522){if(_0x415522){return _0x253cfb[_0x11e3('0x14')](_0x12571c)[_0x11e3('0x15')](_0x415522);}};}function respondWithFilteredResult(_0x26e9ad,_0x11a9dd){return function(_0x39af4b){if(_0x39af4b){var _0x2d9eaf=typeof _0x11a9dd[_0x11e3('0x16')]==='undefined'&&typeof _0x11a9dd[_0x11e3('0x17')]===_0x11e3('0x18');var _0x17d9fa=_0x39af4b['count'];var _0x149524=_0x2d9eaf?0x0:_0x11a9dd[_0x11e3('0x16')];var _0xb64b4c=_0x2d9eaf?_0x39af4b[_0x11e3('0x19')]:_0x11a9dd[_0x11e3('0x16')]+_0x11a9dd[_0x11e3('0x17')];var _0x380137;if(_0xb64b4c>=_0x17d9fa){_0xb64b4c=_0x17d9fa;_0x380137=0xc8;}else{_0x380137=0xce;}_0x26e9ad[_0x11e3('0x14')](_0x380137);return _0x26e9ad[_0x11e3('0x1a')](_0x11e3('0x1b'),_0x149524+'-'+_0xb64b4c+'/'+_0x17d9fa)[_0x11e3('0x15')](_0x39af4b);}return null;};}function saveUpdates(_0x1508fa){return function(_0x3f4dc6){if(_0x3f4dc6){return _0x3f4dc6[_0x11e3('0x1c')](_0x1508fa)[_0x11e3('0xa')](function(_0x293ece){return _0x293ece;});}return null;};}function removeEntity(_0x4e743e){return function(_0x3b7900){if(_0x3b7900){return _0x3b7900[_0x11e3('0x1d')]()['then'](function(){_0x4e743e[_0x11e3('0x14')](0xcc)[_0x11e3('0x1e')]();});}};}function handleEntityNotFound(_0x8d5c62){return function(_0xaf0527){if(!_0xaf0527){_0x8d5c62[_0x11e3('0x1f')](0x194);}return _0xaf0527;};}function handleError(_0x4e3209,_0x3290a2){_0x3290a2=_0x3290a2||0x1f4;return function(_0x509e2a){logger[_0x11e3('0x10')](_0x509e2a[_0x11e3('0x20')]);if(_0x509e2a[_0x11e3('0x21')]){delete _0x509e2a[_0x11e3('0x21')];}_0x4e3209['status'](_0x3290a2)[_0x11e3('0x22')](_0x509e2a);};}exports[_0x11e3('0x23')]=function(_0x55b54a,_0x303044){var _0x31bbac={},_0x36a6a4={},_0x3327ac={'count':0x0,'rows':[]};var _0x1301f4=_[_0x11e3('0x24')](db[_0x11e3('0x25')]['rawAttributes'],function(_0x396e62){return{'name':_0x396e62[_0x11e3('0x26')],'type':_0x396e62[_0x11e3('0x27')][_0x11e3('0x28')]};});_0x36a6a4['model']=_[_0x11e3('0x24')](_0x1301f4,_0x11e3('0x21'));_0x36a6a4['query']=_[_0x11e3('0x29')](_0x55b54a['query']);_0x36a6a4[_0x11e3('0x2a')]=_[_0x11e3('0x2b')](_0x36a6a4['model'],_0x36a6a4[_0x11e3('0x2c')]);_0x31bbac[_0x11e3('0x2d')]=_[_0x11e3('0x2b')](_0x36a6a4[_0x11e3('0x2e')],qs['fields'](_0x55b54a[_0x11e3('0x2c')][_0x11e3('0x2f')]));_0x31bbac[_0x11e3('0x2d')]=_0x31bbac[_0x11e3('0x2d')][_0x11e3('0x30')]?_0x31bbac[_0x11e3('0x2d')]:_0x36a6a4['model'];if(!_0x55b54a[_0x11e3('0x2c')][_0x11e3('0x31')](_0x11e3('0x32'))){_0x31bbac[_0x11e3('0x17')]=qs[_0x11e3('0x17')](_0x55b54a[_0x11e3('0x2c')]['limit']);_0x31bbac['offset']=qs['offset'](_0x55b54a[_0x11e3('0x2c')][_0x11e3('0x16')]);}_0x31bbac[_0x11e3('0x33')]=qs[_0x11e3('0x34')](_0x55b54a[_0x11e3('0x2c')][_0x11e3('0x34')]);_0x31bbac[_0x11e3('0x35')]=qs[_0x11e3('0x2a')](_[_0x11e3('0x36')](_0x55b54a[_0x11e3('0x2c')],_0x36a6a4[_0x11e3('0x2a')]),_0x1301f4);if(_0x55b54a[_0x11e3('0x2c')]['filter']){_0x31bbac[_0x11e3('0x35')]=_['merge'](_0x31bbac[_0x11e3('0x35')],{'$or':_[_0x11e3('0x24')](_0x1301f4,function(_0x495c1a){if(_0x495c1a[_0x11e3('0x27')]!==_0x11e3('0x37')){var _0x3ba7b6={};_0x3ba7b6[_0x495c1a[_0x11e3('0x21')]]={'$like':'%'+_0x55b54a[_0x11e3('0x2c')][_0x11e3('0x38')]+'%'};return _0x3ba7b6;}})});}_0x31bbac=_[_0x11e3('0x39')]({},_0x31bbac,_0x55b54a[_0x11e3('0x3a')]);var _0x59f086={'where':_0x31bbac[_0x11e3('0x35')]};return db[_0x11e3('0x25')]['count'](_0x59f086)[_0x11e3('0xa')](function(_0x5aa8b6){_0x3327ac[_0x11e3('0x19')]=_0x5aa8b6;if(_0x55b54a[_0x11e3('0x2c')][_0x11e3('0x3b')]){_0x31bbac[_0x11e3('0x3c')]=[{'all':!![]}];}return db[_0x11e3('0x25')][_0x11e3('0x3d')](_0x31bbac);})[_0x11e3('0xa')](function(_0x37053d){_0x3327ac['rows']=_0x37053d;return _0x3327ac;})[_0x11e3('0xa')](respondWithFilteredResult(_0x303044,_0x31bbac))[_0x11e3('0x13')](handleError(_0x303044,null));};exports[_0x11e3('0x3e')]=function(_0x1f9c4f,_0x220b75){var _0x4c4ac4={'raw':!![],'where':{'id':_0x1f9c4f['params']['id']}},_0x588c5e={};_0x588c5e['model']=_[_0x11e3('0x29')](db['Network'][_0x11e3('0x3f')]);_0x588c5e[_0x11e3('0x2c')]=_['keys'](_0x1f9c4f['query']);_0x588c5e['filters']=_['intersection'](_0x588c5e['model'],_0x588c5e[_0x11e3('0x2c')]);_0x4c4ac4['attributes']=_[_0x11e3('0x2b')](_0x588c5e[_0x11e3('0x2e')],qs[_0x11e3('0x2f')](_0x1f9c4f[_0x11e3('0x2c')][_0x11e3('0x2f')]));_0x4c4ac4[_0x11e3('0x2d')]=_0x4c4ac4[_0x11e3('0x2d')][_0x11e3('0x30')]?_0x4c4ac4[_0x11e3('0x2d')]:_0x588c5e['model'];if(_0x1f9c4f[_0x11e3('0x2c')][_0x11e3('0x3b')]){_0x4c4ac4[_0x11e3('0x3c')]=[{'all':!![]}];}_0x4c4ac4=_[_0x11e3('0x39')]({},_0x4c4ac4,_0x1f9c4f[_0x11e3('0x3a')]);return db[_0x11e3('0x25')][_0x11e3('0x40')](_0x4c4ac4)[_0x11e3('0xa')](handleEntityNotFound(_0x220b75,null))[_0x11e3('0xa')](respondWithResult(_0x220b75,null))[_0x11e3('0x13')](handleError(_0x220b75,null));};exports[_0x11e3('0x41')]=function(_0x57b953,_0x3a31d0){var _0x9fc7fb;return db['Network'][_0x11e3('0x41')](_0x57b953['body'],{'raw':!![]})['then'](function(_0x61d514){_0x9fc7fb=_0x61d514;return db[_0x11e3('0x25')][_0x11e3('0x3d')]({'where':{'type':_0x57b953[_0x11e3('0x42')][_0x11e3('0x27')]},'raw':!![]});})[_0x11e3('0xa')](function(_0x48340b){if(_0x9fc7fb['type'][_0x11e3('0x43')]()==_0x11e3('0x44')){var _0x40ffae=fs['readFileSync'](path[_0x11e3('0x45')](config['root'],_0x11e3('0x46')),_0x11e3('0x47'));var _0x585e53=ejs[_0x11e3('0x48')](_0x40ffae,{'networks':_0x48340b||[]});fs[_0x11e3('0x49')](_0x11e3('0x4a'),_0x585e53);return respondWithRpcPromise(_0x11e3('0x4b'),_0x11e3('0x41'),{'module':'res_stun_monitor.so'});}else if(_0x9fc7fb[_0x11e3('0x27')][_0x11e3('0x43')]()=='TURN'){var _0x1fa503=fs[_0x11e3('0x4c')](path[_0x11e3('0x45')](config[_0x11e3('0x4d')],_0x11e3('0x4e')),_0x11e3('0x47'));var _0x43307e=ejs[_0x11e3('0x48')](_0x1fa503,{'networks':_0x48340b||[]});fs[_0x11e3('0x49')](_0x11e3('0x4f'),_0x43307e);return respondWithRpcPromise(_0x11e3('0x4b'),'create',{'module':_0x11e3('0x50')});}else{var _0x3556a2=fs[_0x11e3('0x4c')](path[_0x11e3('0x45')](config[_0x11e3('0x4d')],'server/files/templates/network.ejs'),_0x11e3('0x47'));var _0x2de498=ejs[_0x11e3('0x48')](_0x3556a2,{'networks':_0x48340b||[]});fs[_0x11e3('0x49')](util['format'](_0x11e3('0x51'),_0x57b953['body']['type'][_0x11e3('0x52')]()),_0x2de498);return respondWithRpcPromise('Reload',_0x11e3('0x41'),{'module':_0x11e3('0x53')});}})['then'](function(){return _0x9fc7fb;})[_0x11e3('0xa')](respondWithResult(_0x3a31d0,0xc9))[_0x11e3('0x13')](handleError(_0x3a31d0,null));};exports[_0x11e3('0x1c')]=function(_0x26ecec,_0x1d06d4){var _0xe00d4;return db[_0x11e3('0x25')][_0x11e3('0x40')]({'where':{'id':_0x26ecec[_0x11e3('0x54')]['id']}})[_0x11e3('0xa')](handleEntityNotFound(_0x1d06d4,null))[_0x11e3('0xa')](saveUpdates(_0x26ecec[_0x11e3('0x42')],null))[_0x11e3('0xa')](function(_0x36bdbb){if(_0x36bdbb){_0xe00d4=_0x36bdbb;return db[_0x11e3('0x25')]['findAll']({'where':{'type':_0xe00d4[_0x11e3('0x27')]},'raw':!![]});}return null;})['then'](function(_0x23ebef){if(_0xe00d4[_0x11e3('0x27')][_0x11e3('0x43')]()==_0x11e3('0x44')){var _0x7d6a15=fs[_0x11e3('0x4c')](path['join'](config[_0x11e3('0x4d')],'server/files/templates/stun_multiple.ejs'),_0x11e3('0x47'));var _0x2edd4d=ejs[_0x11e3('0x48')](_0x7d6a15,{'networks':_0x23ebef||[]});fs[_0x11e3('0x49')](_0x11e3('0x4a'),_0x2edd4d);return respondWithRpcPromise(_0x11e3('0x4b'),_0x11e3('0x1c'),{'module':_0x11e3('0x50')});}else if(_0xe00d4[_0x11e3('0x27')][_0x11e3('0x43')]()==_0x11e3('0x55')){var _0x459265=fs[_0x11e3('0x4c')](path['join'](config[_0x11e3('0x4d')],_0x11e3('0x4e')),_0x11e3('0x47'));var _0x16e8bf=ejs[_0x11e3('0x48')](_0x459265,{'networks':_0x23ebef||[]});fs[_0x11e3('0x49')]('/etc/asterisk/turn_xcally.conf',_0x16e8bf);return respondWithRpcPromise(_0x11e3('0x4b'),_0x11e3('0x1c'),{'module':_0x11e3('0x50')});}else{var _0x2c2108=fs[_0x11e3('0x4c')](path[_0x11e3('0x45')](config[_0x11e3('0x4d')],_0x11e3('0x56')),_0x11e3('0x47'));var _0x4b37fe=ejs[_0x11e3('0x48')](_0x2c2108,{'networks':_0x23ebef||[]});fs[_0x11e3('0x49')](util[_0x11e3('0x57')](_0x11e3('0x51'),_0x26ecec[_0x11e3('0x42')][_0x11e3('0x27')]['toLowerCase']()),_0x4b37fe);return respondWithRpcPromise(_0x11e3('0x4b'),_0x11e3('0x1c'),{'module':_0x11e3('0x53')});}})['then'](function(_0x2de934){if(_0x2de934){return _0xe00d4;}return null;})[_0x11e3('0xa')](respondWithResult(_0x1d06d4,null))[_0x11e3('0x13')](handleError(_0x1d06d4,null));};exports[_0x11e3('0x1d')]=function(_0x3b1842,_0x2ed98e){var _0x504d1b;return db[_0x11e3('0x25')]['find']({'where':{'id':_0x3b1842['params']['id']}})[_0x11e3('0xa')](function(_0x4018cf){_0x504d1b=_0x4018cf;return _0x4018cf;})[_0x11e3('0xa')](handleEntityNotFound(_0x2ed98e,null))[_0x11e3('0xa')](removeEntity(_0x2ed98e,null))[_0x11e3('0xa')](function(){if(_0x504d1b){return db[_0x11e3('0x25')][_0x11e3('0x3d')]({'where':{'type':_0x504d1b[_0x11e3('0x27')]},'raw':!![]});}})['then'](function(_0x595520){if(_0x504d1b[_0x11e3('0x27')][_0x11e3('0x43')]()==_0x11e3('0x44')){var _0x4ef829=fs[_0x11e3('0x4c')](path[_0x11e3('0x45')](config[_0x11e3('0x4d')],_0x11e3('0x46')),_0x11e3('0x47'));var _0x25dea6=ejs['render'](_0x4ef829,{'networks':_0x595520||[]});fs[_0x11e3('0x49')](_0x11e3('0x4a'),_0x25dea6);return respondWithRpcPromise('Reload',_0x11e3('0x1d'),{'module':_0x11e3('0x50')});}else if(_0x504d1b[_0x11e3('0x27')][_0x11e3('0x43')]()==_0x11e3('0x55')){var _0x1522df=fs[_0x11e3('0x4c')](path[_0x11e3('0x45')](config[_0x11e3('0x4d')],'server/files/templates/turn_multiple.ejs'),_0x11e3('0x47'));var _0x27839d=ejs[_0x11e3('0x48')](_0x1522df,{'networks':_0x595520||[]});fs['writeFileSync']('/etc/asterisk/turn_xcally.conf',_0x27839d);return respondWithRpcPromise(_0x11e3('0x4b'),_0x11e3('0x1d'),{'module':_0x11e3('0x50')});}else{var _0x26a565=fs[_0x11e3('0x4c')](path[_0x11e3('0x45')](config['root'],_0x11e3('0x56')),_0x11e3('0x47'));var _0x14b4d9=ejs[_0x11e3('0x48')](_0x26a565,{'networks':_0x595520||[]});fs[_0x11e3('0x49')](util[_0x11e3('0x57')](_0x11e3('0x51'),_0x504d1b[_0x11e3('0x27')][_0x11e3('0x52')]()),_0x14b4d9);return respondWithRpcPromise(_0x11e3('0x4b'),_0x11e3('0x1d'),{'module':_0x11e3('0x53')});}})[_0x11e3('0x13')](handleError(_0x2ed98e,null));};
\ No newline at end of file
+var _0x89b9=['order','sort','pick','filter','where','merge','type','VIRTUAL','options','includeAll','rows','show','include','find','create','body','findAll','toUpperCase','STUN','readFileSync','join','root','utf8','render','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','TURN','res_stun_monitor.so','format','toLowerCase','update','params','server/files/templates/stun_multiple.ejs','server/files/templates/turn_multiple.ejs','/etc/asterisk/turn_xcally.conf','chan_sip.so','destroy','/etc/asterisk/sip_xcally_%s.conf','util','path','ejs','../../components/parsers/qs','../../config/environment','../../mysqldb','jayson/promise','client','http','request','then','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','error','code','message','info','catch','offset','undefined','count','status','set','Content-Range','json','sendStatus','stack','name','send','index','map','Network','rawAttributes','fieldName','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit'];(function(_0x22d74f,_0x39ca52){var _0x53c78d=function(_0x5eb51){while(--_0x5eb51){_0x22d74f['push'](_0x22d74f['shift']());}};_0x53c78d(++_0x39ca52);}(_0x89b9,0x7d));var _0x989b=function(_0x1dcc84,_0x341ab8){_0x1dcc84=_0x1dcc84-0x0;var _0x564262=_0x89b9[_0x1dcc84];return _0x564262;};'use strict';var util=require(_0x989b('0x0'));var path=require(_0x989b('0x1'));var ejs=require(_0x989b('0x2'));var fs=require('fs');var _=require('lodash');var qs=require(_0x989b('0x3'));var logger=require('../../config/logger')('api');var config=require(_0x989b('0x4'));var db=require(_0x989b('0x5'))['db'];var jayson=require(_0x989b('0x6'));var client=jayson[_0x989b('0x7')][_0x989b('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4dc042,_0x5b88a7,_0x4fd0df,_0x51f512){return new Promise(function(_0x4d0de7,_0x4c7291){var _0x9fc27c=_0x51f512||client;return _0x9fc27c[_0x989b('0x9')](_0x4dc042,_0x4fd0df)[_0x989b('0xa')](function(_0x1f3cfa){logger['info'](_0x989b('0xb'),_0x5b88a7,_0x989b('0xc'));logger[_0x989b('0xd')](_0x989b('0xe'),_0x5b88a7,_0x989b('0xc'),JSON['stringify'](_0x1f3cfa));if(_0x1f3cfa[_0x989b('0xf')]){if(_0x1f3cfa[_0x989b('0xf')][_0x989b('0x10')]===0x1f4){logger[_0x989b('0xf')](_0x989b('0xb'),_0x5b88a7,_0x1f3cfa[_0x989b('0xf')][_0x989b('0x11')]);return _0x4c7291(_0x1f3cfa['error']['message']);}logger[_0x989b('0xf')]('Network,\x20%s,\x20%s',_0x5b88a7,_0x1f3cfa[_0x989b('0xf')][_0x989b('0x11')]);return _0x4d0de7(_0x1f3cfa['error'][_0x989b('0x11')]);}else{logger[_0x989b('0x12')](_0x989b('0xb'),_0x5b88a7,_0x989b('0xc'));_0x4d0de7(_0x1f3cfa['result'][_0x989b('0x11')]);}})[_0x989b('0x13')](function(_0x38487b){logger[_0x989b('0xf')]('Network,\x20%s,\x20%s',_0x5b88a7,_0x38487b);_0x4c7291(_0x38487b);});});}function respondWithResult(_0x47fb22,_0x240f47){_0x240f47=_0x240f47||0xc8;return function(_0x454e4d){if(_0x454e4d){return _0x47fb22['status'](_0x240f47)['json'](_0x454e4d);}};}function respondWithFilteredResult(_0x12648e,_0x393ef5){return function(_0x21d2f4){if(_0x21d2f4){var _0x93af09=typeof _0x393ef5[_0x989b('0x14')]===_0x989b('0x15')&&typeof _0x393ef5['limit']===_0x989b('0x15');var _0x4e38c6=_0x21d2f4[_0x989b('0x16')];var _0x5bf072=_0x93af09?0x0:_0x393ef5[_0x989b('0x14')];var _0x3246bd=_0x93af09?_0x21d2f4[_0x989b('0x16')]:_0x393ef5[_0x989b('0x14')]+_0x393ef5['limit'];var _0x366e5f;if(_0x3246bd>=_0x4e38c6){_0x3246bd=_0x4e38c6;_0x366e5f=0xc8;}else{_0x366e5f=0xce;}_0x12648e[_0x989b('0x17')](_0x366e5f);return _0x12648e[_0x989b('0x18')](_0x989b('0x19'),_0x5bf072+'-'+_0x3246bd+'/'+_0x4e38c6)[_0x989b('0x1a')](_0x21d2f4);}return null;};}function saveUpdates(_0x56a433){return function(_0x327a64){if(_0x327a64){return _0x327a64['update'](_0x56a433)[_0x989b('0xa')](function(_0x22f447){return _0x22f447;});}return null;};}function removeEntity(_0x3808b1){return function(_0x1cf472){if(_0x1cf472){return _0x1cf472['destroy']()[_0x989b('0xa')](function(){_0x3808b1['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x11d566){return function(_0xa7945d){if(!_0xa7945d){_0x11d566[_0x989b('0x1b')](0x194);}return _0xa7945d;};}function handleError(_0x24e1f0,_0x53c0ee){_0x53c0ee=_0x53c0ee||0x1f4;return function(_0x33bdce){logger['error'](_0x33bdce[_0x989b('0x1c')]);if(_0x33bdce[_0x989b('0x1d')]){delete _0x33bdce[_0x989b('0x1d')];}_0x24e1f0[_0x989b('0x17')](_0x53c0ee)[_0x989b('0x1e')](_0x33bdce);};}exports[_0x989b('0x1f')]=function(_0x24be78,_0x5a388c){var _0x12e7ae={},_0x2a5ffe={},_0xeef2dc={'count':0x0,'rows':[]};var _0x186275=_[_0x989b('0x20')](db[_0x989b('0x21')][_0x989b('0x22')],function(_0x393b4f){return{'name':_0x393b4f[_0x989b('0x23')],'type':_0x393b4f['type']['key']};});_0x2a5ffe[_0x989b('0x24')]=_['map'](_0x186275,'name');_0x2a5ffe['query']=_[_0x989b('0x25')](_0x24be78[_0x989b('0x26')]);_0x2a5ffe[_0x989b('0x27')]=_[_0x989b('0x28')](_0x2a5ffe[_0x989b('0x24')],_0x2a5ffe['query']);_0x12e7ae[_0x989b('0x29')]=_[_0x989b('0x28')](_0x2a5ffe['model'],qs['fields'](_0x24be78[_0x989b('0x26')][_0x989b('0x2a')]));_0x12e7ae[_0x989b('0x29')]=_0x12e7ae[_0x989b('0x29')][_0x989b('0x2b')]?_0x12e7ae[_0x989b('0x29')]:_0x2a5ffe[_0x989b('0x24')];if(!_0x24be78[_0x989b('0x26')][_0x989b('0x2c')](_0x989b('0x2d'))){_0x12e7ae[_0x989b('0x2e')]=qs[_0x989b('0x2e')](_0x24be78[_0x989b('0x26')][_0x989b('0x2e')]);_0x12e7ae[_0x989b('0x14')]=qs[_0x989b('0x14')](_0x24be78['query'][_0x989b('0x14')]);}_0x12e7ae[_0x989b('0x2f')]=qs[_0x989b('0x30')](_0x24be78[_0x989b('0x26')][_0x989b('0x30')]);_0x12e7ae['where']=qs[_0x989b('0x27')](_[_0x989b('0x31')](_0x24be78[_0x989b('0x26')],_0x2a5ffe['filters']),_0x186275);if(_0x24be78[_0x989b('0x26')][_0x989b('0x32')]){_0x12e7ae[_0x989b('0x33')]=_[_0x989b('0x34')](_0x12e7ae[_0x989b('0x33')],{'$or':_['map'](_0x186275,function(_0x4fd984){if(_0x4fd984[_0x989b('0x35')]!==_0x989b('0x36')){var _0x15d596={};_0x15d596[_0x4fd984['name']]={'$like':'%'+_0x24be78[_0x989b('0x26')][_0x989b('0x32')]+'%'};return _0x15d596;}})});}_0x12e7ae=_[_0x989b('0x34')]({},_0x12e7ae,_0x24be78[_0x989b('0x37')]);var _0x2bfc9a={'where':_0x12e7ae[_0x989b('0x33')]};return db['Network'][_0x989b('0x16')](_0x2bfc9a)[_0x989b('0xa')](function(_0x24eae6){_0xeef2dc['count']=_0x24eae6;if(_0x24be78[_0x989b('0x26')][_0x989b('0x38')]){_0x12e7ae['include']=[{'all':!![]}];}return db['Network']['findAll'](_0x12e7ae);})[_0x989b('0xa')](function(_0x3662d3){_0xeef2dc[_0x989b('0x39')]=_0x3662d3;return _0xeef2dc;})[_0x989b('0xa')](respondWithFilteredResult(_0x5a388c,_0x12e7ae))['catch'](handleError(_0x5a388c,null));};exports[_0x989b('0x3a')]=function(_0x50d911,_0x4a571e){var _0x4b4c84={'raw':!![],'where':{'id':_0x50d911['params']['id']}},_0x422528={};_0x422528[_0x989b('0x24')]=_[_0x989b('0x25')](db[_0x989b('0x21')][_0x989b('0x22')]);_0x422528[_0x989b('0x26')]=_[_0x989b('0x25')](_0x50d911[_0x989b('0x26')]);_0x422528['filters']=_['intersection'](_0x422528[_0x989b('0x24')],_0x422528['query']);_0x4b4c84[_0x989b('0x29')]=_[_0x989b('0x28')](_0x422528[_0x989b('0x24')],qs['fields'](_0x50d911[_0x989b('0x26')]['fields']));_0x4b4c84[_0x989b('0x29')]=_0x4b4c84[_0x989b('0x29')][_0x989b('0x2b')]?_0x4b4c84['attributes']:_0x422528[_0x989b('0x24')];if(_0x50d911[_0x989b('0x26')][_0x989b('0x38')]){_0x4b4c84[_0x989b('0x3b')]=[{'all':!![]}];}_0x4b4c84=_['merge']({},_0x4b4c84,_0x50d911[_0x989b('0x37')]);return db[_0x989b('0x21')][_0x989b('0x3c')](_0x4b4c84)[_0x989b('0xa')](handleEntityNotFound(_0x4a571e,null))[_0x989b('0xa')](respondWithResult(_0x4a571e,null))['catch'](handleError(_0x4a571e,null));};exports[_0x989b('0x3d')]=function(_0x39df17,_0x2d75f3){var _0x413b48;return db[_0x989b('0x21')]['create'](_0x39df17[_0x989b('0x3e')],{'raw':!![]})['then'](function(_0x778e2c){_0x413b48=_0x778e2c;return db[_0x989b('0x21')][_0x989b('0x3f')]({'where':{'type':_0x39df17[_0x989b('0x3e')][_0x989b('0x35')]},'raw':!![]});})['then'](function(_0x24638e){if(_0x413b48[_0x989b('0x35')][_0x989b('0x40')]()==_0x989b('0x41')){var _0x58897b=fs[_0x989b('0x42')](path[_0x989b('0x43')](config[_0x989b('0x44')],'server/files/templates/stun_multiple.ejs'),_0x989b('0x45'));var _0x43ee2d=ejs[_0x989b('0x46')](_0x58897b,{'networks':_0x24638e||[]});fs[_0x989b('0x47')](_0x989b('0x48'),_0x43ee2d);return respondWithRpcPromise(_0x989b('0x49'),_0x989b('0x3d'),{'module':'res_stun_monitor.so'});}else if(_0x413b48[_0x989b('0x35')]['toUpperCase']()==_0x989b('0x4a')){var _0x406174=fs['readFileSync'](path['join'](config['root'],'server/files/templates/turn_multiple.ejs'),_0x989b('0x45'));var _0x11eeda=ejs[_0x989b('0x46')](_0x406174,{'networks':_0x24638e||[]});fs['writeFileSync']('/etc/asterisk/turn_xcally.conf',_0x11eeda);return respondWithRpcPromise(_0x989b('0x49'),'create',{'module':_0x989b('0x4b')});}else{var _0x2aa619=fs[_0x989b('0x42')](path[_0x989b('0x43')](config[_0x989b('0x44')],'server/files/templates/network.ejs'),'utf8');var _0x457143=ejs[_0x989b('0x46')](_0x2aa619,{'networks':_0x24638e||[]});fs['writeFileSync'](util[_0x989b('0x4c')]('/etc/asterisk/sip_xcally_%s.conf',_0x39df17[_0x989b('0x3e')]['type'][_0x989b('0x4d')]()),_0x457143);return respondWithRpcPromise(_0x989b('0x49'),_0x989b('0x3d'),{'module':'chan_sip.so'});}})[_0x989b('0xa')](function(){return _0x413b48;})[_0x989b('0xa')](respondWithResult(_0x2d75f3,0xc9))['catch'](handleError(_0x2d75f3,null));};exports[_0x989b('0x4e')]=function(_0x269de2,_0x4c20fe){var _0x12a3db;return db[_0x989b('0x21')][_0x989b('0x3c')]({'where':{'id':_0x269de2[_0x989b('0x4f')]['id']}})[_0x989b('0xa')](handleEntityNotFound(_0x4c20fe,null))[_0x989b('0xa')](saveUpdates(_0x269de2[_0x989b('0x3e')],null))[_0x989b('0xa')](function(_0xf35d4){if(_0xf35d4){_0x12a3db=_0xf35d4;return db[_0x989b('0x21')][_0x989b('0x3f')]({'where':{'type':_0x12a3db[_0x989b('0x35')]},'raw':!![]});}return null;})[_0x989b('0xa')](function(_0x7a9778){if(_0x12a3db[_0x989b('0x35')][_0x989b('0x40')]()=='STUN'){var _0x496ef6=fs['readFileSync'](path[_0x989b('0x43')](config[_0x989b('0x44')],_0x989b('0x50')),_0x989b('0x45'));var _0x13cfc1=ejs[_0x989b('0x46')](_0x496ef6,{'networks':_0x7a9778||[]});fs[_0x989b('0x47')](_0x989b('0x48'),_0x13cfc1);return respondWithRpcPromise(_0x989b('0x49'),_0x989b('0x4e'),{'module':'res_stun_monitor.so'});}else if(_0x12a3db['type'][_0x989b('0x40')]()==_0x989b('0x4a')){var _0x48d8dc=fs[_0x989b('0x42')](path[_0x989b('0x43')](config['root'],_0x989b('0x51')),'utf8');var _0x683e1b=ejs[_0x989b('0x46')](_0x48d8dc,{'networks':_0x7a9778||[]});fs[_0x989b('0x47')](_0x989b('0x52'),_0x683e1b);return respondWithRpcPromise(_0x989b('0x49'),_0x989b('0x4e'),{'module':'res_stun_monitor.so'});}else{var _0x5d448d=fs[_0x989b('0x42')](path[_0x989b('0x43')](config[_0x989b('0x44')],'server/files/templates/network.ejs'),'utf8');var _0x22de2c=ejs[_0x989b('0x46')](_0x5d448d,{'networks':_0x7a9778||[]});fs[_0x989b('0x47')](util['format']('/etc/asterisk/sip_xcally_%s.conf',_0x269de2[_0x989b('0x3e')][_0x989b('0x35')][_0x989b('0x4d')]()),_0x22de2c);return respondWithRpcPromise('Reload','update',{'module':_0x989b('0x53')});}})[_0x989b('0xa')](function(_0x2645b5){if(_0x2645b5){return _0x12a3db;}return null;})[_0x989b('0xa')](respondWithResult(_0x4c20fe,null))['catch'](handleError(_0x4c20fe,null));};exports[_0x989b('0x54')]=function(_0x10cc96,_0x271da4){var _0x36d8a9;return db[_0x989b('0x21')]['find']({'where':{'id':_0x10cc96[_0x989b('0x4f')]['id']}})['then'](function(_0x22ba68){_0x36d8a9=_0x22ba68;return _0x22ba68;})['then'](handleEntityNotFound(_0x271da4,null))[_0x989b('0xa')](removeEntity(_0x271da4,null))[_0x989b('0xa')](function(){if(_0x36d8a9){return db[_0x989b('0x21')]['findAll']({'where':{'type':_0x36d8a9['type']},'raw':!![]});}})['then'](function(_0xa112a){if(_0x36d8a9[_0x989b('0x35')][_0x989b('0x40')]()=='STUN'){var _0x58776c=fs[_0x989b('0x42')](path[_0x989b('0x43')](config['root'],_0x989b('0x50')),_0x989b('0x45'));var _0x2bab9f=ejs[_0x989b('0x46')](_0x58776c,{'networks':_0xa112a||[]});fs[_0x989b('0x47')]('/etc/asterisk/stun_xcally.conf',_0x2bab9f);return respondWithRpcPromise(_0x989b('0x49'),'destroy',{'module':_0x989b('0x4b')});}else if(_0x36d8a9[_0x989b('0x35')][_0x989b('0x40')]()==_0x989b('0x4a')){var _0x2ef1a9=fs[_0x989b('0x42')](path[_0x989b('0x43')](config[_0x989b('0x44')],_0x989b('0x51')),_0x989b('0x45'));var _0x375881=ejs[_0x989b('0x46')](_0x2ef1a9,{'networks':_0xa112a||[]});fs[_0x989b('0x47')](_0x989b('0x52'),_0x375881);return respondWithRpcPromise(_0x989b('0x49'),'destroy',{'module':_0x989b('0x4b')});}else{var _0xabc363=fs[_0x989b('0x42')](path[_0x989b('0x43')](config['root'],'server/files/templates/network.ejs'),_0x989b('0x45'));var _0x9b1698=ejs[_0x989b('0x46')](_0xabc363,{'networks':_0xa112a||[]});fs[_0x989b('0x47')](util['format'](_0x989b('0x55'),_0x36d8a9[_0x989b('0x35')][_0x989b('0x4d')]()),_0x9b1698);return respondWithRpcPromise(_0x989b('0x49'),_0x989b('0x54'),{'module':'chan_sip.so'});}})[_0x989b('0x13')](handleError(_0x271da4,null));};
\ No newline at end of file
index a1659dd..388c3fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4483=['define','Network','network','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','./network.attributes','exports'];(function(_0x2edfcc,_0x5d49c0){var _0x969509=function(_0x4bba63){while(--_0x4bba63){_0x2edfcc['push'](_0x2edfcc['shift']());}};_0x969509(++_0x5d49c0);}(_0x4483,0x1a3));var _0x3448=function(_0x3846b3,_0x574329){_0x3846b3=_0x3846b3-0x0;var _0x1ae4f9=_0x4483[_0x3846b3];return _0x1ae4f9;};'use strict';var _=require(_0x3448('0x0'));var util=require(_0x3448('0x1'));var logger=require(_0x3448('0x2'))('api');var moment=require(_0x3448('0x3'));var BPromise=require(_0x3448('0x4'));var rp=require(_0x3448('0x5'));var fs=require('fs');var path=require(_0x3448('0x6'));var rimraf=require(_0x3448('0x7'));var config=require('../../config/environment');var attributes=require(_0x3448('0x8'));module[_0x3448('0x9')]=function(_0x1b05db,_0xd3606d){return _0x1b05db[_0x3448('0xa')](_0x3448('0xb'),attributes,{'tableName':_0x3448('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xee5b=['request-promise','path','rimraf','exports','define','lodash','../../config/logger','api','bluebird'];(function(_0x3ab761,_0x49fe89){var _0x218ba3=function(_0xa2ac1c){while(--_0xa2ac1c){_0x3ab761['push'](_0x3ab761['shift']());}};_0x218ba3(++_0x49fe89);}(_0xee5b,0x1f4));var _0xbee5=function(_0x5d710,_0x4771c2){_0x5d710=_0x5d710-0x0;var _0x18287c=_0xee5b[_0x5d710];return _0x18287c;};'use strict';var _=require(_0xbee5('0x0'));var util=require('util');var logger=require(_0xbee5('0x1'))(_0xbee5('0x2'));var moment=require('moment');var BPromise=require(_0xbee5('0x3'));var rp=require(_0xbee5('0x4'));var fs=require('fs');var path=require(_0xbee5('0x5'));var rimraf=require(_0xbee5('0x6'));var config=require('../../config/environment');var attributes=require('./network.attributes');module[_0xbee5('0x7')]=function(_0x2c0bde,_0xab6e4d){return _0x2c0bde[_0xbee5('0x8')]('Network',attributes,{'tableName':'network','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9b79019..638c82f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['info','Network,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x7a54,0x106));var _0x47a5=function(_0x4f828b,_0x16b0c0){_0x4f828b=_0x4f828b-0x0;var _0x581c13=_0x7a54[_0x4f828b];return _0x581c13;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('Network,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}
\ No newline at end of file
+var _0x9957=['message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x5f2a1d,_0x3e2050){var _0x7ca519=function(_0xd1679b){while(--_0xd1679b){_0x5f2a1d['push'](_0x5f2a1d['shift']());}};_0x7ca519(++_0x3e2050);}(_0x9957,0x93));var _0x7995=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0x9957[_0x618414];return _0x21c19a;};'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 5a60f4d..7e80564 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbde=['Router','fs-extra','../../components/auth/service','./openchannelAccount.controller','get','isAuthenticated','index','/describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','/:id/interactions','getInteractions','/:id/users','getAgents','create','post','addAnswer','/:id/notify','notify','addApplications','addAgents','/:id/send','send','put','delete','destroy','removeDispositions','removeAnswers','removeAgents','multer','util','connect-timeout'];(function(_0x3607c0,_0x452a6e){var _0x489705=function(_0x4c8b99){while(--_0x4c8b99){_0x3607c0['push'](_0x3607c0['shift']());}};_0x489705(++_0x452a6e);}(_0xbbde,0x194));var _0xebbd=function(_0x504df1,_0x289598){_0x504df1=_0x504df1-0x0;var _0x1063b5=_0xbbde[_0x504df1];return _0x1063b5;};'use strict';var multer=require(_0xebbd('0x0'));var util=require(_0xebbd('0x1'));var path=require('path');var timeout=require(_0xebbd('0x2'));var express=require('express');var router=express[_0xebbd('0x3')]();var fs_extra=require(_0xebbd('0x4'));var auth=require(_0xebbd('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xebbd('0x6'));router[_0xebbd('0x7')]('/',auth[_0xebbd('0x8')](),controller[_0xebbd('0x9')]);router[_0xebbd('0x7')](_0xebbd('0xa'),auth[_0xebbd('0x8')](),controller['describe']);router[_0xebbd('0x7')](_0xebbd('0xb'),auth[_0xebbd('0x8')](),controller[_0xebbd('0xc')]);router['get'](_0xebbd('0xd'),auth['isAuthenticated'](),controller[_0xebbd('0xe')]);router[_0xebbd('0x7')](_0xebbd('0xf'),auth[_0xebbd('0x8')](),controller[_0xebbd('0x10')]);router[_0xebbd('0x7')](_0xebbd('0x11'),auth[_0xebbd('0x8')](),controller['getApplications']);router[_0xebbd('0x7')](_0xebbd('0x12'),auth[_0xebbd('0x8')](),controller[_0xebbd('0x13')]);router['get'](_0xebbd('0x14'),auth[_0xebbd('0x8')](),controller[_0xebbd('0x15')]);router['post']('/',auth[_0xebbd('0x8')](),controller[_0xebbd('0x16')]);router[_0xebbd('0x17')]('/:id/dispositions',auth[_0xebbd('0x8')](),controller['addDisposition']);router[_0xebbd('0x17')](_0xebbd('0xf'),auth[_0xebbd('0x8')](),controller[_0xebbd('0x18')]);router[_0xebbd('0x17')](_0xebbd('0x19'),controller[_0xebbd('0x1a')]);router[_0xebbd('0x17')]('/:id/applications',auth[_0xebbd('0x8')](),controller[_0xebbd('0x1b')]);router[_0xebbd('0x17')](_0xebbd('0x14'),auth['isAuthenticated'](),controller[_0xebbd('0x1c')]);router['post'](_0xebbd('0x1d'),auth[_0xebbd('0x8')](),controller[_0xebbd('0x1e')]);router[_0xebbd('0x1f')]('/:id',auth[_0xebbd('0x8')](),controller['update']);router[_0xebbd('0x20')](_0xebbd('0xb'),auth['isAuthenticated'](),controller[_0xebbd('0x21')]);router[_0xebbd('0x20')](_0xebbd('0xd'),auth[_0xebbd('0x8')](),controller[_0xebbd('0x22')]);router[_0xebbd('0x20')](_0xebbd('0xf'),auth['isAuthenticated'](),controller[_0xebbd('0x23')]);router[_0xebbd('0x20')](_0xebbd('0x14'),auth['isAuthenticated'](),controller[_0xebbd('0x24')]);module['exports']=router;
\ No newline at end of file
+var _0xc277=['/describe','describe','get','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','getApplications','getInteractions','/:id/users','getAgents','post','addDisposition','/:id/notify','notify','/:id/applications','addAgents','/:id/send','send','put','/:id','delete','destroy','removeDispositions','removeAnswers','removeAgents','exports','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','isAuthenticated','index'];(function(_0x5d4e95,_0x578112){var _0x475873=function(_0x1c0d29){while(--_0x1c0d29){_0x5d4e95['push'](_0x5d4e95['shift']());}};_0x475873(++_0x578112);}(_0xc277,0x169));var _0x7c27=function(_0x33faeb,_0x1f33a4){_0x33faeb=_0x33faeb-0x0;var _0x3a8f5e=_0xc277[_0x33faeb];return _0x3a8f5e;};'use strict';var multer=require('multer');var util=require(_0x7c27('0x0'));var path=require(_0x7c27('0x1'));var timeout=require(_0x7c27('0x2'));var express=require(_0x7c27('0x3'));var router=express['Router']();var fs_extra=require(_0x7c27('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x7c27('0x5'));var config=require(_0x7c27('0x6'));var controller=require('./openchannelAccount.controller');router['get']('/',auth[_0x7c27('0x7')](),controller[_0x7c27('0x8')]);router['get'](_0x7c27('0x9'),auth[_0x7c27('0x7')](),controller[_0x7c27('0xa')]);router[_0x7c27('0xb')]('/:id',auth[_0x7c27('0x7')](),controller[_0x7c27('0xc')]);router[_0x7c27('0xb')](_0x7c27('0xd'),auth['isAuthenticated'](),controller[_0x7c27('0xe')]);router[_0x7c27('0xb')](_0x7c27('0xf'),auth[_0x7c27('0x7')](),controller[_0x7c27('0x10')]);router[_0x7c27('0xb')]('/:id/applications',auth['isAuthenticated'](),controller[_0x7c27('0x11')]);router[_0x7c27('0xb')]('/:id/interactions',auth['isAuthenticated'](),controller[_0x7c27('0x12')]);router['get'](_0x7c27('0x13'),auth['isAuthenticated'](),controller[_0x7c27('0x14')]);router[_0x7c27('0x15')]('/',auth['isAuthenticated'](),controller['create']);router[_0x7c27('0x15')]('/:id/dispositions',auth[_0x7c27('0x7')](),controller[_0x7c27('0x16')]);router['post'](_0x7c27('0xf'),auth['isAuthenticated'](),controller['addAnswer']);router['post'](_0x7c27('0x17'),controller[_0x7c27('0x18')]);router[_0x7c27('0x15')](_0x7c27('0x19'),auth[_0x7c27('0x7')](),controller['addApplications']);router[_0x7c27('0x15')](_0x7c27('0x13'),auth[_0x7c27('0x7')](),controller[_0x7c27('0x1a')]);router[_0x7c27('0x15')](_0x7c27('0x1b'),auth[_0x7c27('0x7')](),controller[_0x7c27('0x1c')]);router[_0x7c27('0x1d')](_0x7c27('0x1e'),auth[_0x7c27('0x7')](),controller['update']);router[_0x7c27('0x1f')](_0x7c27('0x1e'),auth[_0x7c27('0x7')](),controller[_0x7c27('0x20')]);router['delete'](_0x7c27('0xd'),auth['isAuthenticated'](),controller[_0x7c27('0x21')]);router[_0x7c27('0x1f')](_0x7c27('0xf'),auth[_0x7c27('0x7')](),controller[_0x7c27('0x22')]);router['delete'](_0x7c27('0x13'),auth['isAuthenticated'](),controller[_0x7c27('0x23')]);module[_0x7c27('0x24')]=router;
\ No newline at end of file
index 57e78b2..7089d9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ef0=['mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring','name','STRING','generate','TEXT','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue'];(function(_0x3d742d,_0xa75d8e){var _0x2bbb89=function(_0x3c9500){while(--_0x3c9500){_0x3d742d['push'](_0x3d742d['shift']());}};_0x2bbb89(++_0xa75d8e);}(_0x7ef0,0x1ee));var _0x07ef=function(_0x5c028d,_0x3e2367){_0x5c028d=_0x5c028d-0x0;var _0x3b78ac=_0x7ef0[_0x5c028d];return _0x3b78ac;};'use strict';var Sequelize=require(_0x07ef('0x0'));var rs=require(_0x07ef('0x1'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x07ef('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0x07ef('0x3')]},'token':{'type':Sequelize[_0x07ef('0x3')],'defaultValue':function(){return rs[_0x07ef('0x4')]();}},'replyUri':{'type':Sequelize[_0x07ef('0x3')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0x07ef('0x3')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x07ef('0x5')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0x07ef('0x6')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x07ef('0x6')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x07ef('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0x07ef('0x3')]},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x07ef('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x07ef('0x6')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x07ef('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x07ef('0x7')],'allowNull':!![],'defaultValue':null,'comment':_0x07ef('0x8')},'mandatoryDisposition':{'type':Sequelize[_0x07ef('0x6')],'defaultValue':![],'comment':_0x07ef('0x9'),'set':function(_0x1519e){if(!_0x1519e)this['setDataValue'](_0x07ef('0xa'),null);this['setDataValue'](_0x07ef('0xb'),_0x1519e);}}};
\ No newline at end of file
+var _0x6fcc=['randomstring','exports','STRING','generate','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDisposition','sequelize'];(function(_0x5f39d5,_0x376bc9){var _0x1e47e7=function(_0x14460a){while(--_0x14460a){_0x5f39d5['push'](_0x5f39d5['shift']());}};_0x1e47e7(++_0x376bc9);}(_0x6fcc,0x175));var _0xc6fc=function(_0x25e323,_0x20e141){_0x25e323=_0x25e323-0x0;var _0xb39acf=_0x6fcc[_0x25e323];return _0xb39acf;};'use strict';var Sequelize=require(_0xc6fc('0x0'));var rs=require(_0xc6fc('0x1'));module[_0xc6fc('0x2')]={'name':{'type':Sequelize[_0xc6fc('0x3')],'unique':'name','allowNull':![]},'description':{'type':Sequelize[_0xc6fc('0x3')]},'token':{'type':Sequelize[_0xc6fc('0x3')],'defaultValue':function(){return rs[_0xc6fc('0x4')]();}},'replyUri':{'type':Sequelize[_0xc6fc('0x3')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0xc6fc('0x3')],'allowNull':![]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0xc6fc('0x5');}},'notificationSound':{'type':Sequelize[_0xc6fc('0x6')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xc6fc('0x6')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0xc6fc('0x3')]},'queueTransfer':{'type':Sequelize[_0xc6fc('0x6')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xc6fc('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xc6fc('0x6')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xc6fc('0x7')],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0xc6fc('0x8'),'set':function(_0x4e624e){if(!_0x4e624e)this[_0xc6fc('0x9')]('mandatoryDispositionPauseId',null);this[_0xc6fc('0x9')](_0xc6fc('0xa'),_0x4e624e);}}};
\ No newline at end of file
index 7230ab5..1eaea6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0fc2=['merge','VIRTUAL','options','includeAll','include','rows','show','params','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','describe','addDisposition','Disposition','getDispositions','hasOwnProperty','nolimit','OpenchannelAccountId','findAll','removeDispositions','CannedAnswer','removeAnswers','notify','openchannel','CmContact','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','isNil','from','Sequelize','ValidationError','from\x20is\x20mandatory','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','DESC','OpenchannelApplication','Applications','List','account','applications','list','orderBy','priority','asc','Contacts','contact','threadId','OpenchannelInteraction','externalUrl','ContactId','spread','firstName','messageId','interaction','created','autoclose','push','close','unmanaged','UserId','User','unshift','agent','waitForTheAssignedAgent','Start','startRouting','EventManager','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','findOne','bulkCreate','findAndCountAll','getApplications','getInteractions','Contact','Owner','fullname','Tag','Tags','color','tag','addAgents','ids','omit','userOpenchannelAccount:save','removeAgents','emit','userOpenchannelAccount:remove','getAgents','out','OpenchannelMessage','Messages','dataValues','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','socket.io-emitter','./openchannelAccount.socket','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','result','catch','status','end','json','undefined','limit','count','offset','set','apply','reject','save','destroy','get','OpenchannelAccounts','UserProfileResource','sendStatus','stack','name','send','Pause','mandatoryDispositionPause','map','OpenchannelAccount','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','length','attributes','order','sort','where','pick','filter'];(function(_0x2dd5d8,_0x2e01a6){var _0x1b3345=function(_0xae1370){while(--_0xae1370){_0x2dd5d8['push'](_0x2dd5d8['shift']());}};_0x1b3345(++_0x2e01a6);}(_0x0fc2,0x6e));var _0x20fc=function(_0x4b16e5,_0x57229d){_0x4b16e5=_0x4b16e5-0x0;var _0x171dbc=_0x0fc2[_0x4b16e5];return _0x171dbc;};'use strict';var emlformat=require(_0x20fc('0x0'));var rimraf=require(_0x20fc('0x1'));var zipdir=require(_0x20fc('0x2'));var jsonpatch=require(_0x20fc('0x3'));var rp=require('request-promise');var moment=require(_0x20fc('0x4'));var BPromise=require(_0x20fc('0x5'));var Mustache=require(_0x20fc('0x6'));var util=require(_0x20fc('0x7'));var path=require(_0x20fc('0x8'));var sox=require(_0x20fc('0x9'));var csv=require(_0x20fc('0xa'));var ejs=require(_0x20fc('0xb'));var fs=require('fs');var fs_extra=require(_0x20fc('0xc'));var _=require(_0x20fc('0xd'));var squel=require(_0x20fc('0xe'));var crypto=require(_0x20fc('0xf'));var jsforce=require(_0x20fc('0x10'));var deskjs=require(_0x20fc('0x11'));var toCsv=require(_0x20fc('0xa'));var querystring=require(_0x20fc('0x12'));var Papa=require('papaparse');var Redis=require(_0x20fc('0x13'));var authService=require(_0x20fc('0x14'));var qs=require(_0x20fc('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x20fc('0x16'));var logger=require(_0x20fc('0x17'))(_0x20fc('0x18'));var utils=require(_0x20fc('0x19'));var config=require(_0x20fc('0x1a'));var licenseUtil=require(_0x20fc('0x1b'));var db=require(_0x20fc('0x1c'))['db'];config[_0x20fc('0x1d')]=_['defaults'](config[_0x20fc('0x1d')],{'host':'localhost','port':0x18eb});var socket=require(_0x20fc('0x1e'))(new Redis(config['redis']));require(_0x20fc('0x1f'))['register'](socket);var jayson=require(_0x20fc('0x20'));var client=jayson[_0x20fc('0x21')][_0x20fc('0x22')]({'port':0x232c});var client9002=jayson[_0x20fc('0x21')][_0x20fc('0x22')]({'port':0x232a});function respondWithRpcPromise(_0x511e79,_0x29fe77,_0x368662,_0x480878){return new BPromise(function(_0x56eaf4,_0x4569c2){var _0x3dbdc0=_0x480878||client;return _0x3dbdc0[_0x20fc('0x23')](_0x511e79,_0x368662)[_0x20fc('0x24')](function(_0x4d5e00){logger[_0x20fc('0x25')](_0x20fc('0x26'),_0x29fe77,_0x20fc('0x27'));logger[_0x20fc('0x28')](_0x20fc('0x29'),_0x29fe77,_0x20fc('0x27'),JSON[_0x20fc('0x2a')](_0x4d5e00));if(_0x4d5e00[_0x20fc('0x2b')]){if(_0x4d5e00[_0x20fc('0x2b')][_0x20fc('0x2c')]===0x1f4){logger['error'](_0x20fc('0x26'),_0x29fe77,_0x4d5e00[_0x20fc('0x2b')]['message']);return _0x4569c2(_0x4d5e00[_0x20fc('0x2b')][_0x20fc('0x2d')]);}logger[_0x20fc('0x2b')](_0x20fc('0x26'),_0x29fe77,_0x4d5e00[_0x20fc('0x2b')][_0x20fc('0x2d')]);return _0x56eaf4(_0x4d5e00[_0x20fc('0x2b')]['message']);}else{logger[_0x20fc('0x25')](_0x20fc('0x26'),_0x29fe77,'request\x20sent');_0x56eaf4(_0x4d5e00[_0x20fc('0x2e')][_0x20fc('0x2d')]);}})[_0x20fc('0x2f')](function(_0x2ed63f){logger['error'](_0x20fc('0x26'),_0x29fe77,_0x2ed63f);_0x4569c2(_0x2ed63f);});});}function respondWithStatusCode(_0x5dbded,_0x4f9b49){_0x4f9b49=_0x4f9b49||0xcc;return function(_0x1b80f){if(_0x1b80f){return _0x5dbded['sendStatus'](_0x4f9b49);}return _0x5dbded[_0x20fc('0x30')](_0x4f9b49)[_0x20fc('0x31')]();};}function respondWithResult(_0x43e310,_0x5eae37){_0x5eae37=_0x5eae37||0xc8;return function(_0x4fd3ba){if(_0x4fd3ba){return _0x43e310['status'](_0x5eae37)[_0x20fc('0x32')](_0x4fd3ba);}};}function respondWithFilteredResult(_0x295f9a,_0x171d14){return function(_0x2c6408){if(_0x2c6408){var _0x5d705f=typeof _0x171d14['offset']===_0x20fc('0x33')&&typeof _0x171d14[_0x20fc('0x34')]==='undefined';var _0x5923b1=_0x2c6408[_0x20fc('0x35')];var _0x539268=_0x5d705f?0x0:_0x171d14[_0x20fc('0x36')];var _0x40fe37=_0x5d705f?_0x2c6408[_0x20fc('0x35')]:_0x171d14[_0x20fc('0x36')]+_0x171d14[_0x20fc('0x34')];var _0x2ddb7d;if(_0x40fe37>=_0x5923b1){_0x40fe37=_0x5923b1;_0x2ddb7d=0xc8;}else{_0x2ddb7d=0xce;}_0x295f9a['status'](_0x2ddb7d);return _0x295f9a[_0x20fc('0x37')]('Content-Range',_0x539268+'-'+_0x40fe37+'/'+_0x5923b1)['json'](_0x2c6408);}return null;};}function patchUpdates(_0x10f891){return function(_0x4bbe53){try{jsonpatch[_0x20fc('0x38')](_0x4bbe53,_0x10f891,!![]);}catch(_0x2e2bbd){return BPromise[_0x20fc('0x39')](_0x2e2bbd);}return _0x4bbe53[_0x20fc('0x3a')]();};}function saveUpdates(_0x299aa2,_0x578f98){return function(_0x6c398e){if(_0x6c398e){return _0x6c398e['update'](_0x299aa2)[_0x20fc('0x24')](function(_0x179f08){return _0x179f08;});}return null;};}function removeEntity(_0x47c03e,_0x2faaab){return function(_0x4d532f){if(_0x4d532f){return _0x4d532f[_0x20fc('0x3b')]()['then'](function(){var _0x4b2f3a=_0x4d532f[_0x20fc('0x3c')]({'plain':!![]});var _0xd5e0d3=_0x20fc('0x3d');return db[_0x20fc('0x3e')][_0x20fc('0x3b')]({'where':{'type':_0xd5e0d3,'resourceId':_0x4b2f3a['id']}})[_0x20fc('0x24')](function(){return _0x4d532f;});})['then'](function(){_0x47c03e[_0x20fc('0x30')](0xcc)[_0x20fc('0x31')]();});}};}function handleEntityNotFound(_0x20400d,_0x1ca486){return function(_0x1ceee3){if(!_0x1ceee3){_0x20400d[_0x20fc('0x3f')](0x194);}return _0x1ceee3;};}function handleError(_0x24ea0e,_0x269f37){_0x269f37=_0x269f37||0x1f4;return function(_0x4992a5){logger[_0x20fc('0x2b')](_0x4992a5[_0x20fc('0x40')]);if(_0x4992a5[_0x20fc('0x41')]){delete _0x4992a5[_0x20fc('0x41')];}_0x24ea0e[_0x20fc('0x30')](_0x269f37)[_0x20fc('0x42')](_0x4992a5);};}exports['index']=function(_0x5024f7,_0x4ee5a8){var _0x3def34={'include':[{'model':db[_0x20fc('0x43')],'as':_0x20fc('0x44')}]},_0x4f7690={},_0x297ab3={'count':0x0,'rows':[]};var _0x49ed2c=_[_0x20fc('0x45')](db[_0x20fc('0x46')][_0x20fc('0x47')],function(_0xecf581){return{'name':_0xecf581[_0x20fc('0x48')],'type':_0xecf581[_0x20fc('0x49')][_0x20fc('0x4a')]};});_0x4f7690[_0x20fc('0x4b')]=_[_0x20fc('0x45')](_0x49ed2c,_0x20fc('0x41'));_0x4f7690[_0x20fc('0x4c')]=_[_0x20fc('0x4d')](_0x5024f7['query']);_0x4f7690[_0x20fc('0x4e')]=_[_0x20fc('0x4f')](_0x4f7690[_0x20fc('0x4b')],_0x4f7690[_0x20fc('0x4c')]);_0x3def34['attributes']=_['intersection'](_0x4f7690[_0x20fc('0x4b')],qs[_0x20fc('0x50')](_0x5024f7[_0x20fc('0x4c')][_0x20fc('0x50')]));_0x3def34['attributes']=_0x3def34['attributes'][_0x20fc('0x51')]?_0x3def34[_0x20fc('0x52')]:_0x4f7690[_0x20fc('0x4b')];if(!_0x5024f7[_0x20fc('0x4c')]['hasOwnProperty']('nolimit')){_0x3def34[_0x20fc('0x34')]=qs[_0x20fc('0x34')](_0x5024f7[_0x20fc('0x4c')][_0x20fc('0x34')]);_0x3def34[_0x20fc('0x36')]=qs['offset'](_0x5024f7[_0x20fc('0x4c')]['offset']);}_0x3def34[_0x20fc('0x53')]=qs[_0x20fc('0x54')](_0x5024f7[_0x20fc('0x4c')][_0x20fc('0x54')]);_0x3def34[_0x20fc('0x55')]=qs[_0x20fc('0x4e')](_[_0x20fc('0x56')](_0x5024f7[_0x20fc('0x4c')],_0x4f7690[_0x20fc('0x4e')]),_0x49ed2c);if(_0x5024f7[_0x20fc('0x4c')][_0x20fc('0x57')]){_0x3def34[_0x20fc('0x55')]=_[_0x20fc('0x58')](_0x3def34[_0x20fc('0x55')],{'$or':_[_0x20fc('0x45')](_0x49ed2c,function(_0x25d728){if(_0x25d728['type']!==_0x20fc('0x59')){var _0x46eb17={};_0x46eb17[_0x25d728[_0x20fc('0x41')]]={'$like':'%'+_0x5024f7[_0x20fc('0x4c')][_0x20fc('0x57')]+'%'};return _0x46eb17;}})});}_0x3def34=_[_0x20fc('0x58')]({},_0x3def34,_0x5024f7[_0x20fc('0x5a')]);var _0x2a2897={'where':_0x3def34[_0x20fc('0x55')]};return db[_0x20fc('0x46')][_0x20fc('0x35')](_0x2a2897)['then'](function(_0x41482f){_0x297ab3[_0x20fc('0x35')]=_0x41482f;if(_0x5024f7[_0x20fc('0x4c')][_0x20fc('0x5b')]){_0x3def34[_0x20fc('0x5c')]=[{'all':!![]}];}return db[_0x20fc('0x46')]['findAll'](_0x3def34);})[_0x20fc('0x24')](function(_0x236628){_0x297ab3[_0x20fc('0x5d')]=_0x236628;return _0x297ab3;})[_0x20fc('0x24')](respondWithFilteredResult(_0x4ee5a8,_0x3def34))[_0x20fc('0x2f')](handleError(_0x4ee5a8,null));};exports[_0x20fc('0x5e')]=function(_0x2aaf4a,_0x1c2977){var _0x47cacc={'raw':![],'where':{'id':_0x2aaf4a[_0x20fc('0x5f')]['id']},'include':[{'model':db[_0x20fc('0x43')],'as':_0x20fc('0x44')}]},_0x4bf571={};_0x4bf571[_0x20fc('0x4b')]=_['keys'](db['OpenchannelAccount']['rawAttributes']);_0x4bf571[_0x20fc('0x4c')]=_[_0x20fc('0x4d')](_0x2aaf4a[_0x20fc('0x4c')]);_0x4bf571['filters']=_[_0x20fc('0x4f')](_0x4bf571[_0x20fc('0x4b')],_0x4bf571[_0x20fc('0x4c')]);_0x47cacc[_0x20fc('0x52')]=_['intersection'](_0x4bf571[_0x20fc('0x4b')],qs[_0x20fc('0x50')](_0x2aaf4a[_0x20fc('0x4c')]['fields']));_0x47cacc[_0x20fc('0x52')]=_0x47cacc[_0x20fc('0x52')][_0x20fc('0x51')]?_0x47cacc[_0x20fc('0x52')]:_0x4bf571[_0x20fc('0x4b')];if(_0x2aaf4a[_0x20fc('0x4c')][_0x20fc('0x5b')]){_0x47cacc[_0x20fc('0x5c')]=[{'all':!![]}];}_0x47cacc=_[_0x20fc('0x58')]({},_0x47cacc,_0x2aaf4a[_0x20fc('0x5a')]);return db[_0x20fc('0x46')]['find'](_0x47cacc)[_0x20fc('0x24')](handleEntityNotFound(_0x1c2977,null))[_0x20fc('0x24')](respondWithResult(_0x1c2977,null))[_0x20fc('0x2f')](handleError(_0x1c2977,null));};exports[_0x20fc('0x60')]=function(_0x5b6d42,_0x3bb80c){return db[_0x20fc('0x46')][_0x20fc('0x60')](_0x5b6d42[_0x20fc('0x61')],{})['then'](function(_0x4ace65){var _0x365b93=_0x5b6d42[_0x20fc('0x62')][_0x20fc('0x3c')]({'plain':!![]});if(!_0x365b93)throw new Error(_0x20fc('0x63'));if(_0x365b93[_0x20fc('0x64')]==='user'){var _0x49d595=_0x4ace65[_0x20fc('0x3c')]({'plain':!![]});var _0x150793=_0x20fc('0x3d');return db[_0x20fc('0x65')]['find']({'where':{'name':_0x150793,'userProfileId':_0x365b93[_0x20fc('0x66')]},'raw':!![]})['then'](function(_0x11f99c){if(_0x11f99c&&_0x11f99c[_0x20fc('0x67')]===0x0){return db[_0x20fc('0x3e')][_0x20fc('0x60')]({'name':_0x49d595[_0x20fc('0x41')],'resourceId':_0x49d595['id'],'type':_0x11f99c[_0x20fc('0x41')],'sectionId':_0x11f99c['id']},{})[_0x20fc('0x24')](function(){return _0x4ace65;});}else{return _0x4ace65;}})['catch'](function(_0x4e4de3){logger['error'](_0x20fc('0x68'),_0x4e4de3);throw _0x4e4de3;});}return _0x4ace65;})['then'](respondWithResult(_0x3bb80c,0xc9))[_0x20fc('0x2f')](handleError(_0x3bb80c,null));};exports['update']=function(_0x3608fd,_0x21121e){if(_0x3608fd['body']['id']){delete _0x3608fd[_0x20fc('0x61')]['id'];}return db[_0x20fc('0x46')][_0x20fc('0x69')]({'where':{'id':_0x3608fd[_0x20fc('0x5f')]['id']},'include':[{'model':db[_0x20fc('0x43')],'as':'mandatoryDispositionPause'}]})['then'](handleEntityNotFound(_0x21121e,null))[_0x20fc('0x24')](saveUpdates(_0x3608fd[_0x20fc('0x61')],null))[_0x20fc('0x24')](respondWithResult(_0x21121e,null))[_0x20fc('0x2f')](handleError(_0x21121e,null));};exports[_0x20fc('0x3b')]=function(_0x39e2bc,_0x3ae9b3){return db[_0x20fc('0x46')][_0x20fc('0x69')]({'where':{'id':_0x39e2bc['params']['id']}})[_0x20fc('0x24')](handleEntityNotFound(_0x3ae9b3,null))[_0x20fc('0x24')](removeEntity(_0x3ae9b3,null))[_0x20fc('0x2f')](handleError(_0x3ae9b3,null));};exports[_0x20fc('0x6a')]=function(_0x20103b,_0x734ad7){return db[_0x20fc('0x46')][_0x20fc('0x6a')]()['then'](respondWithResult(_0x734ad7,null))[_0x20fc('0x2f')](handleError(_0x734ad7,null));};exports[_0x20fc('0x6b')]=function(_0x7f88a5,_0x344c9f,_0x1ac554){if(_0x7f88a5[_0x20fc('0x61')]['id']){delete _0x7f88a5[_0x20fc('0x61')]['id'];}return db[_0x20fc('0x46')][_0x20fc('0x69')]({'where':{'id':_0x7f88a5[_0x20fc('0x5f')]['id']}})[_0x20fc('0x24')](handleEntityNotFound(_0x344c9f,null))['then'](function(_0x550dba){if(_0x550dba){_0x7f88a5['body']['OpenchannelAccountId']=_0x550dba['id'];return db[_0x20fc('0x6c')][_0x20fc('0x60')](_0x7f88a5[_0x20fc('0x61')]);}})['then'](respondWithResult(_0x344c9f,null))['catch'](handleError(_0x344c9f,null));};exports[_0x20fc('0x6d')]=function(_0x20ab52,_0x5552d0,_0x5eaeaf){var _0x2f07f5={'raw':![],'where':{}};var _0x441aaa={};var _0xd8c1de={'count':0x0,'rows':[]};return db[_0x20fc('0x46')]['findOne']({'where':{'id':_0x20ab52['params']['id']}})[_0x20fc('0x24')](handleEntityNotFound(_0x5552d0,null))[_0x20fc('0x24')](function(_0x237ab2){if(_0x237ab2){_0x441aaa[_0x20fc('0x4b')]=_[_0x20fc('0x4d')](db[_0x20fc('0x6c')][_0x20fc('0x47')]);_0x441aaa[_0x20fc('0x4c')]=_['keys'](_0x20ab52['query']);_0x441aaa[_0x20fc('0x4e')]=_[_0x20fc('0x4f')](_0x441aaa[_0x20fc('0x4b')],_0x441aaa[_0x20fc('0x4c')]);_0x2f07f5[_0x20fc('0x52')]=_[_0x20fc('0x4f')](_0x441aaa[_0x20fc('0x4b')],qs[_0x20fc('0x50')](_0x20ab52[_0x20fc('0x4c')][_0x20fc('0x50')]));_0x2f07f5[_0x20fc('0x52')]=_0x2f07f5[_0x20fc('0x52')][_0x20fc('0x51')]?_0x2f07f5['attributes']:_0x441aaa[_0x20fc('0x4b')];if(!_0x20ab52[_0x20fc('0x4c')][_0x20fc('0x6e')](_0x20fc('0x6f'))){_0x2f07f5[_0x20fc('0x34')]=qs[_0x20fc('0x34')](_0x20ab52[_0x20fc('0x4c')][_0x20fc('0x34')]);_0x2f07f5['offset']=qs['offset'](_0x20ab52[_0x20fc('0x4c')]['offset']);}_0x2f07f5[_0x20fc('0x53')]=qs[_0x20fc('0x54')](_0x20ab52['query'][_0x20fc('0x54')]);_0x2f07f5[_0x20fc('0x55')]=qs[_0x20fc('0x4e')](_[_0x20fc('0x56')](_0x20ab52[_0x20fc('0x4c')],_0x441aaa[_0x20fc('0x4e')]));_0x2f07f5[_0x20fc('0x55')][_0x20fc('0x70')]=_0x237ab2['id'];if(_0x20ab52[_0x20fc('0x4c')][_0x20fc('0x57')]){_0x2f07f5[_0x20fc('0x55')]=_[_0x20fc('0x58')](_0x2f07f5['where'],{'$or':_[_0x20fc('0x45')](_0x2f07f5[_0x20fc('0x52')],function(_0xf07096){var _0x5407e5={};_0x5407e5[_0xf07096]={'$like':'%'+_0x20ab52['query'][_0x20fc('0x57')]+'%'};return _0x5407e5;})});}_0x2f07f5=_[_0x20fc('0x58')]({},_0x2f07f5,_0x20ab52[_0x20fc('0x5a')]);return db[_0x20fc('0x6c')][_0x20fc('0x35')]({'where':_0x2f07f5[_0x20fc('0x55')]})[_0x20fc('0x24')](function(_0x2c3359){_0xd8c1de[_0x20fc('0x35')]=_0x2c3359;if(_0x20ab52[_0x20fc('0x4c')]['includeAll']){_0x2f07f5[_0x20fc('0x5c')]=[{'all':!![]}];}return db[_0x20fc('0x6c')][_0x20fc('0x71')](_0x2f07f5);})['then'](function(_0x42243a){_0xd8c1de[_0x20fc('0x5d')]=_0x42243a;return _0xd8c1de;});}})[_0x20fc('0x24')](respondWithFilteredResult(_0x5552d0,_0x2f07f5))[_0x20fc('0x2f')](handleError(_0x5552d0,null));};exports[_0x20fc('0x72')]=function(_0x4eb012,_0xc7dae8,_0xca8ef2){return db[_0x20fc('0x46')][_0x20fc('0x69')]({'where':{'id':_0x4eb012[_0x20fc('0x5f')]['id']}})[_0x20fc('0x24')](handleEntityNotFound(_0xc7dae8,null))[_0x20fc('0x24')](function(_0x44bbc3){if(_0x44bbc3){return _0x44bbc3['removeDispositions'](_0x4eb012[_0x20fc('0x4c')]['ids']);}})[_0x20fc('0x24')](respondWithStatusCode(_0xc7dae8,null))[_0x20fc('0x2f')](handleError(_0xc7dae8,null));};exports['addAnswer']=function(_0x55df37,_0x5a9956,_0x355765){if(_0x55df37[_0x20fc('0x61')]['id']){delete _0x55df37[_0x20fc('0x61')]['id'];}return db['OpenchannelAccount'][_0x20fc('0x69')]({'where':{'id':_0x55df37[_0x20fc('0x5f')]['id']}})['then'](handleEntityNotFound(_0x5a9956,null))[_0x20fc('0x24')](function(_0x59601f){if(_0x59601f){_0x55df37['body']['OpenchannelAccountId']=_0x59601f['id'];return db['CannedAnswer'][_0x20fc('0x60')](_0x55df37['body']);}})['then'](respondWithResult(_0x5a9956,null))[_0x20fc('0x2f')](handleError(_0x5a9956,null));};exports['getAnswers']=function(_0x5de345,_0x2045c1,_0x557d41){var _0x32c849={'raw':![],'where':{}};var _0x252518={};var _0x205f84={'count':0x0,'rows':[]};return db['OpenchannelAccount']['findOne']({'where':{'id':_0x5de345[_0x20fc('0x5f')]['id']}})[_0x20fc('0x24')](handleEntityNotFound(_0x2045c1,null))[_0x20fc('0x24')](function(_0x309f3d){if(_0x309f3d){_0x252518[_0x20fc('0x4b')]=_[_0x20fc('0x4d')](db[_0x20fc('0x73')]['rawAttributes']);_0x252518[_0x20fc('0x4c')]=_['keys'](_0x5de345[_0x20fc('0x4c')]);_0x252518[_0x20fc('0x4e')]=_[_0x20fc('0x4f')](_0x252518[_0x20fc('0x4b')],_0x252518['query']);_0x32c849[_0x20fc('0x52')]=_[_0x20fc('0x4f')](_0x252518[_0x20fc('0x4b')],qs[_0x20fc('0x50')](_0x5de345['query'][_0x20fc('0x50')]));_0x32c849[_0x20fc('0x52')]=_0x32c849[_0x20fc('0x52')][_0x20fc('0x51')]?_0x32c849[_0x20fc('0x52')]:_0x252518[_0x20fc('0x4b')];if(!_0x5de345[_0x20fc('0x4c')]['hasOwnProperty'](_0x20fc('0x6f'))){_0x32c849[_0x20fc('0x34')]=qs[_0x20fc('0x34')](_0x5de345['query'][_0x20fc('0x34')]);_0x32c849[_0x20fc('0x36')]=qs[_0x20fc('0x36')](_0x5de345[_0x20fc('0x4c')][_0x20fc('0x36')]);}_0x32c849[_0x20fc('0x53')]=qs[_0x20fc('0x54')](_0x5de345['query'][_0x20fc('0x54')]);_0x32c849[_0x20fc('0x55')]=qs[_0x20fc('0x4e')](_['pick'](_0x5de345['query'],_0x252518['filters']));_0x32c849[_0x20fc('0x55')]['OpenchannelAccountId']=_0x309f3d['id'];if(_0x5de345[_0x20fc('0x4c')]['filter']){_0x32c849[_0x20fc('0x55')]=_[_0x20fc('0x58')](_0x32c849['where'],{'$or':_['map'](_0x32c849['attributes'],function(_0x12688a){var _0x1aa667={};_0x1aa667[_0x12688a]={'$like':'%'+_0x5de345['query'][_0x20fc('0x57')]+'%'};return _0x1aa667;})});}_0x32c849=_[_0x20fc('0x58')]({},_0x32c849,_0x5de345[_0x20fc('0x5a')]);return db[_0x20fc('0x73')][_0x20fc('0x35')]({'where':_0x32c849[_0x20fc('0x55')]})['then'](function(_0x117ef5){_0x205f84['count']=_0x117ef5;if(_0x5de345[_0x20fc('0x4c')][_0x20fc('0x5b')]){_0x32c849['include']=[{'all':!![]}];}return db[_0x20fc('0x73')][_0x20fc('0x71')](_0x32c849);})['then'](function(_0x6cb070){_0x205f84[_0x20fc('0x5d')]=_0x6cb070;return _0x205f84;});}})['then'](respondWithFilteredResult(_0x2045c1,_0x32c849))['catch'](handleError(_0x2045c1,null));};exports[_0x20fc('0x74')]=function(_0x5da4e4,_0x4eac38,_0xb40ec6){return db[_0x20fc('0x46')][_0x20fc('0x69')]({'where':{'id':_0x5da4e4['params']['id']}})['then'](handleEntityNotFound(_0x4eac38,null))[_0x20fc('0x24')](function(_0xcc3a33){if(_0xcc3a33){return _0xcc3a33[_0x20fc('0x74')](_0x5da4e4[_0x20fc('0x4c')]['ids']);}})[_0x20fc('0x24')](respondWithStatusCode(_0x4eac38,null))[_0x20fc('0x2f')](handleError(_0x4eac38,null));};exports[_0x20fc('0x75')]=function(_0x3437d0,_0xdda714,_0x3c20e4){var _0x557373={'body':_0x3437d0['body'],'channel':_0x20fc('0x76')};var _0x5e15f1=[];var _0x4154f8=[];var _0x99f69c={};var _0x56fb8d=![];return db[_0x20fc('0x77')][_0x20fc('0x6a')]()['then'](function(_0x55209d){if(!_0x55209d){throw new db['Sequelize']['ValidationError'](_0x20fc('0x78'));}_0x5e15f1=_[_0x20fc('0x79')](_[_0x20fc('0x4d')](_0x55209d),[_0x20fc('0x7a'),_0x20fc('0x7b')]);_0x4154f8=_[_0x20fc('0x79')](_[_0x20fc('0x4d')](_0x55209d),['createdAt',_0x20fc('0x7b'),_0x20fc('0x7c'),_0x20fc('0x7d')]);if(_0x3437d0[_0x20fc('0x61')]['id']){delete _0x3437d0[_0x20fc('0x61')]['id'];}if(_[_0x20fc('0x7e')](_0x3437d0[_0x20fc('0x61')][_0x20fc('0x7f')])){throw new db[(_0x20fc('0x80'))][(_0x20fc('0x81'))](_0x20fc('0x82'));}if(_[_0x20fc('0x7e')](_0x3437d0[_0x20fc('0x61')][_0x20fc('0x61')])||_0x3437d0['body']['body']===''){throw new db[(_0x20fc('0x80'))][(_0x20fc('0x81'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_['isNil'](_0x3437d0[_0x20fc('0x61')][_0x20fc('0x83')])){throw new db[(_0x20fc('0x80'))][(_0x20fc('0x81'))](_0x20fc('0x84')+_0x4154f8);}if(!_[_0x20fc('0x85')](_0x4154f8,_0x3437d0[_0x20fc('0x61')][_0x20fc('0x83')])){throw new db[(_0x20fc('0x80'))][(_0x20fc('0x81'))](_0x20fc('0x86')+_0x4154f8);}_0x99f69c[_0x3437d0[_0x20fc('0x61')][_0x20fc('0x83')]]=_0x3437d0[_0x20fc('0x61')][_0x20fc('0x7f')];})[_0x20fc('0x24')](function(){return db[_0x20fc('0x46')][_0x20fc('0x69')]({'where':{'id':_0x3437d0[_0x20fc('0x5f')]['id']},'include':[{'model':db[_0x20fc('0x87')],'as':'List','include':[{'model':db[_0x20fc('0x77')],'as':'Contacts','where':_0x99f69c,'limit':0x1,'order':[[_0x20fc('0x7b'),_0x20fc('0x88')]]}]},{'model':db[_0x20fc('0x89')],'as':_0x20fc('0x8a')}]});})['then'](handleEntityNotFound(_0xdda714,null))[_0x20fc('0x24')](function(_0x9a225e){if(_0x9a225e&&_0x9a225e[_0x20fc('0x8b')]){_0x557373[_0x20fc('0x8c')]=_0x9a225e;_0x557373[_0x20fc('0x8d')]=_0x9a225e[_0x20fc('0x8a')];_0x557373[_0x20fc('0x8e')]=_0x9a225e[_0x20fc('0x8b')];_0x557373[_0x20fc('0x8d')]=_[_0x20fc('0x8f')](_0x557373[_0x20fc('0x8d')],[_0x20fc('0x90')],[_0x20fc('0x91')]);if(_0x557373[_0x20fc('0x8c')][_0x20fc('0x8a')]){delete _0x557373[_0x20fc('0x8c')][_0x20fc('0x8a')];}if(_0x557373[_0x20fc('0x8c')][_0x20fc('0x8b')]&&_0x557373[_0x20fc('0x8c')][_0x20fc('0x8b')][_0x20fc('0x92')][_0x20fc('0x51')]){return _0x557373['account'][_0x20fc('0x8b')][_0x20fc('0x92')][0x0];}var _0xe07c9d=_['defaults'](_0x3437d0[_0x20fc('0x61')],{'firstName':_0x3437d0[_0x20fc('0x61')]['from'],'ListId':_0x9a225e['ListId']});_0xe07c9d[_0x3437d0[_0x20fc('0x61')]['mapKey']]=_0x3437d0['body']['from'];return db[_0x20fc('0x77')][_0x20fc('0x60')](_0xe07c9d,{'fields':_0x5e15f1,'raw':!![]});}})['then'](handleEntityNotFound(_0xdda714,null))[_0x20fc('0x24')](function(_0x5a45d1){_0x557373[_0x20fc('0x93')]=_0x5a45d1;if(_0x5a45d1){var _0x249e38={'ContactId':_0x5a45d1['id'],'OpenchannelAccountId':_0x3437d0[_0x20fc('0x5f')]['id'],'from':(_0x5a45d1['firstName']||'')+'\x20'+(_0x5a45d1['lastName']||'')};var _0x2e7206={'OpenchannelAccountId':_0x3437d0[_0x20fc('0x5f')]['id'],'closed':![]};if(_0x3437d0['body'][_0x20fc('0x94')]){_0x2e7206[_0x20fc('0x94')]=_0x3437d0[_0x20fc('0x61')][_0x20fc('0x94')];return db[_0x20fc('0x95')]['find']({'where':_0x2e7206})[_0x20fc('0x24')](function(_0xbc7148){if(_0xbc7148){return[_0xbc7148,![]];}_0x249e38[_0x20fc('0x94')]=_0x3437d0[_0x20fc('0x61')]['threadId'];_0x249e38[_0x20fc('0x96')]=_0x3437d0[_0x20fc('0x61')]['externalUrl'];return db[_0x20fc('0x95')][_0x20fc('0x60')](_0x249e38)[_0x20fc('0x24')](function(_0x18c283){return[_0x18c283,!![]];});});}else{_0x2e7206[_0x20fc('0x94')]=null;}_0x2e7206[_0x20fc('0x97')]=_0x5a45d1['id'];return db[_0x20fc('0x95')][_0x20fc('0x69')]({'where':_0x2e7206})[_0x20fc('0x24')](function(_0xa43d1e){if(_0xa43d1e){return[_0xa43d1e,![]];}return db['OpenchannelInteraction'][_0x20fc('0x60')](_0x249e38)[_0x20fc('0x24')](function(_0x333cc6){return[_0x333cc6,!![]];});});}})[_0x20fc('0x98')](function(_0xc1a6f9,_0x25ed55){if(_0xc1a6f9){_0x56fb8d=_0x25ed55;if(!_0x25ed55){var _0x332fbd={'from':(_0x557373[_0x20fc('0x93')][_0x20fc('0x99')]||'')+'\x20'+(_0x557373['contact']['lastName']||'')};if(_0x3437d0['body'][_0x20fc('0x94')]&&_0x3437d0['body']['messageId']&&_0x3437d0['body']['threadId']!=_0x3437d0[_0x20fc('0x61')]['messageId']){_0x332fbd[_0x20fc('0x94')]=_0x3437d0['body'][_0x20fc('0x9a')];}return _0xc1a6f9['update'](_0x332fbd);}else{return _0xc1a6f9;}}})[_0x20fc('0x24')](function(_0x50dd02){_0x557373['interaction']=_0x50dd02[_0x20fc('0x3c')]({'plain':!![]});_0x557373[_0x20fc('0x9b')][_0x20fc('0x9c')]=_0x56fb8d;if(_0x557373[_0x20fc('0x9b')][_0x20fc('0x9c')]){if(_0x557373['account'][_0x20fc('0x9d')]){_0x557373[_0x20fc('0x8d')][_0x20fc('0x9e')]({'id':0x0,'priority':_0x557373[_0x20fc('0x8d')][_0x20fc('0x51')]+0x1,'app':_0x20fc('0x9f'),'appdata':_0x20fc('0xa0'),'interval':'*,*,*,*'});}}return db['OpenchannelMessage'][_0x20fc('0x60')]({'body':_0x3437d0[_0x20fc('0x61')][_0x20fc('0x61')],'OpenchannelAccountId':_0x3437d0[_0x20fc('0x5f')]['id'],'OpenchannelInteractionId':_0x50dd02['id'],'direction':'in','ContactId':_0x557373['contact']['id'],'AttachmentId':_0x3437d0[_0x20fc('0x61')]['AttachmentId']});})['then'](function(_0x171982){_0x557373[_0x20fc('0x2d')]=_0x171982;if(_0x557373[_0x20fc('0x9b')][_0x20fc('0xa1')]){return db[_0x20fc('0xa2')][_0x20fc('0x69')]({'attributes':['id','name'],'where':{'id':_0x557373[_0x20fc('0x9b')][_0x20fc('0xa1')]}})['then'](function(_0x483f8c){if(_0x483f8c){_0x557373[_0x20fc('0x8d')][_0x20fc('0xa3')]({'id':0x0,'priority':0x0,'app':_0x20fc('0xa4'),'appdata':_0x483f8c[_0x20fc('0x41')]+','+(_0x557373[_0x20fc('0x8c')][_0x20fc('0xa5')]||0xa),'interval':'*,*,*,*'});_0x557373['forcedOwnership']=![];}return respondWithRpcPromise(_0x20fc('0xa6'),_0x20fc('0xa7'),_0x557373);});}return respondWithRpcPromise('Start',_0x20fc('0xa7'),_0x557373);})['then'](function(_0x4c7f86){respondWithRpcPromise(_0x20fc('0xa8'),_0x20fc('0xa8'),{'event':_0x20fc('0x75'),'message':_0x4c7f86},client9002);return _0x4c7f86;})[_0x20fc('0x24')](respondWithResult(_0xdda714,null))[_0x20fc('0x2f')](handleError(_0xdda714,null));};exports['addApplications']=function(_0xd4bcda,_0x209e7c){var _0x29b6cd=_0xd4bcda[_0x20fc('0x5f')]['id'];var _0xb68822=_0xd4bcda[_0x20fc('0x61')];var _0x1f3e28=0xc8;var _0x2ace1b=null;return db[_0x20fc('0xa9')][_0x20fc('0xaa')]({'isolationLevel':db['sequelize'][_0x20fc('0xab')][_0x20fc('0xac')][_0x20fc('0xad')]},function(_0x18a5f8){return db[_0x20fc('0x46')][_0x20fc('0xae')]({'where':{'id':_0x29b6cd},'transaction':_0x18a5f8})[_0x20fc('0x24')](function(_0x13d1e6){if(_0x13d1e6){return db[_0x20fc('0x89')][_0x20fc('0x3b')]({'where':{'OpenchannelAccountId':_0x29b6cd},'transaction':_0x18a5f8})[_0x20fc('0x24')](function(){var _0x38d855=_[_0x20fc('0x45')](_0xb68822,function(_0x390ea7){_0x390ea7[_0x20fc('0x70')]=_0x29b6cd;return _0x390ea7;});return db[_0x20fc('0x89')][_0x20fc('0xaf')](_0x38d855,{'transaction':_0x18a5f8});});}else{_0x1f3e28=0x194;_0x2ace1b=[];}});})[_0x20fc('0x24')](function(){if(_0x1f3e28!==0x194){return db[_0x20fc('0x89')][_0x20fc('0xb0')]({'where':{'OpenchannelAccountId':_0x29b6cd},'order':_0x20fc('0x90')})[_0x20fc('0x24')](function(_0x21d17a){_0x2ace1b=_0x21d17a;});}})['catch'](function(_0x91a11){_0x1f3e28=0x1f4;logger['error'](_0x91a11[_0x20fc('0x40')]);if(_0x91a11['name']){delete _0x91a11[_0x20fc('0x41')];}_0x2ace1b=_0x91a11;})['finally'](function(){if(_0x2ace1b===null){_0x209e7c[_0x20fc('0x3f')](_0x1f3e28);}else{if(_0x1f3e28===0x1f4){_0x209e7c[_0x20fc('0x30')](_0x1f3e28)['send'](_0x2ace1b);}else{_0x209e7c[_0x20fc('0x30')](_0x1f3e28)['json'](_0x2ace1b);}}});};exports[_0x20fc('0xb1')]=function(_0x557384,_0x40cf0f,_0x15cfdc){var _0x44d84c={};var _0x5a37c9={};var _0x31571b;var _0x1666ff;return db[_0x20fc('0x46')][_0x20fc('0xae')]({'where':{'id':_0x557384['params']['id']}})[_0x20fc('0x24')](handleEntityNotFound(_0x40cf0f,null))[_0x20fc('0x24')](function(_0x12928b){if(_0x12928b){_0x31571b=_0x12928b;_0x5a37c9[_0x20fc('0x4b')]=_[_0x20fc('0x4d')](db[_0x20fc('0x89')]['rawAttributes']);_0x5a37c9['query']=_['keys'](_0x557384[_0x20fc('0x4c')]);_0x5a37c9[_0x20fc('0x4e')]=_[_0x20fc('0x4f')](_0x5a37c9[_0x20fc('0x4b')],_0x5a37c9[_0x20fc('0x4c')]);_0x44d84c[_0x20fc('0x52')]=_['intersection'](_0x5a37c9['model'],qs[_0x20fc('0x50')](_0x557384[_0x20fc('0x4c')][_0x20fc('0x50')]));_0x44d84c[_0x20fc('0x52')]=_0x44d84c[_0x20fc('0x52')]['length']?_0x44d84c[_0x20fc('0x52')]:_0x5a37c9['model'];_0x44d84c['order']=qs[_0x20fc('0x54')](_0x557384[_0x20fc('0x4c')][_0x20fc('0x54')]);_0x44d84c[_0x20fc('0x55')]=qs[_0x20fc('0x4e')](_[_0x20fc('0x56')](_0x557384[_0x20fc('0x4c')],_0x5a37c9['filters']));if(_0x557384[_0x20fc('0x4c')][_0x20fc('0x57')]){_0x44d84c[_0x20fc('0x55')]=_['merge'](_0x44d84c['where'],{'$or':_[_0x20fc('0x45')](_0x44d84c[_0x20fc('0x52')],function(_0x1cb133){var _0x24d000={};_0x24d000[_0x1cb133]={'$like':'%'+_0x557384[_0x20fc('0x4c')][_0x20fc('0x57')]+'%'};return _0x24d000;})});}_0x44d84c=_[_0x20fc('0x58')]({},_0x44d84c,_0x557384['options']);return _0x31571b[_0x20fc('0xb1')](_0x44d84c);}})[_0x20fc('0x24')](function(_0x1a6497){if(_0x1a6497){_0x1666ff=_0x1a6497[_0x20fc('0x51')];if(!_0x557384[_0x20fc('0x4c')][_0x20fc('0x6e')]('nolimit')){_0x44d84c[_0x20fc('0x34')]=qs[_0x20fc('0x34')](_0x557384[_0x20fc('0x4c')][_0x20fc('0x34')]);_0x44d84c[_0x20fc('0x36')]=qs[_0x20fc('0x36')](_0x557384[_0x20fc('0x4c')][_0x20fc('0x36')]);}return _0x31571b[_0x20fc('0xb1')](_0x44d84c);}})[_0x20fc('0x24')](function(_0x59be35){if(_0x59be35){return _0x59be35?{'count':_0x1666ff,'rows':_0x59be35}:null;}})['then'](respondWithResult(_0x40cf0f,null))[_0x20fc('0x2f')](handleError(_0x40cf0f,null));};exports[_0x20fc('0xb2')]=function(_0x419218,_0x32038d,_0xe1f0f7){var _0x974017={'raw':![],'where':{}};var _0xc9d842={};var _0x12a4d3={'count':0x0,'rows':[]};return db[_0x20fc('0x46')]['findOne']({'where':{'id':_0x419218[_0x20fc('0x5f')]['id']}})[_0x20fc('0x24')](handleEntityNotFound(_0x32038d,null))[_0x20fc('0x24')](function(_0x4f8f67){if(_0x4f8f67){_0xc9d842[_0x20fc('0x4b')]=_[_0x20fc('0x4d')](db[_0x20fc('0x95')][_0x20fc('0x47')]);_0xc9d842['query']=_[_0x20fc('0x4d')](_0x419218[_0x20fc('0x4c')]);_0xc9d842[_0x20fc('0x4e')]=_[_0x20fc('0x4f')](_0xc9d842[_0x20fc('0x4b')],_0xc9d842[_0x20fc('0x4c')]);_0x974017['attributes']=_[_0x20fc('0x4f')](_0xc9d842['model'],qs[_0x20fc('0x50')](_0x419218[_0x20fc('0x4c')][_0x20fc('0x50')]));_0x974017['attributes']=_0x974017['attributes']['length']?_0x974017[_0x20fc('0x52')]:_0xc9d842['model'];if(!_0x419218[_0x20fc('0x4c')][_0x20fc('0x6e')](_0x20fc('0x6f'))){_0x974017['limit']=qs[_0x20fc('0x34')](_0x419218[_0x20fc('0x4c')][_0x20fc('0x34')]);_0x974017['offset']=qs[_0x20fc('0x36')](_0x419218[_0x20fc('0x4c')][_0x20fc('0x36')]);}_0x974017[_0x20fc('0x53')]=qs['sort'](_0x419218['query'][_0x20fc('0x54')]);_0x974017[_0x20fc('0x55')]=qs[_0x20fc('0x4e')](_['pick'](_0x419218['query'],_0xc9d842['filters']));_0x974017[_0x20fc('0x55')][_0x20fc('0x70')]=_0x4f8f67['id'];if(_0x419218['query']['filter']){_0x974017[_0x20fc('0x55')]=_[_0x20fc('0x58')](_0x974017[_0x20fc('0x55')],{'$or':_[_0x20fc('0x45')](_0x974017[_0x20fc('0x52')],function(_0x3b6d6a){var _0x2995e2={};_0x2995e2[_0x3b6d6a]={'$like':'%'+_0x419218[_0x20fc('0x4c')][_0x20fc('0x57')]+'%'};return _0x2995e2;})});}_0x974017=_['merge']({},_0x974017,_0x419218[_0x20fc('0x5a')]);return db[_0x20fc('0x95')][_0x20fc('0x35')]({'where':_0x974017['where']})['then'](function(_0x1e4b38){_0x12a4d3[_0x20fc('0x35')]=_0x1e4b38;if(_0x419218['query'][_0x20fc('0x5b')]){_0x974017['include']=[{'model':db['CmContact'],'as':_0x20fc('0xb3'),'required':![]},{'model':db[_0x20fc('0xa2')],'as':_0x20fc('0xb4'),'attributes':[_0x20fc('0x41'),_0x20fc('0xb5'),'internal'],'required':![]},{'model':db[_0x20fc('0xb6')],'as':_0x20fc('0xb7'),'attributes':['id',_0x20fc('0x41'),_0x20fc('0xb8')],'where':_0x419218[_0x20fc('0x4c')][_0x20fc('0xb9')]?{'id':_0x419218[_0x20fc('0x4c')]['tag']}:undefined,'required':_0x419218[_0x20fc('0x4c')][_0x20fc('0xb9')]?!![]:![]}];}return db[_0x20fc('0x95')][_0x20fc('0x71')](_0x974017);})['then'](function(_0x5b81a1){_0x12a4d3[_0x20fc('0x5d')]=_0x5b81a1;return _0x12a4d3;});}})[_0x20fc('0x24')](respondWithFilteredResult(_0x32038d,_0x974017))['catch'](handleError(_0x32038d,null));};exports[_0x20fc('0xba')]=function(_0x5ea05c,_0x448201,_0x32df6f){return db[_0x20fc('0x46')][_0x20fc('0x69')]({'where':{'id':_0x5ea05c[_0x20fc('0x5f')]['id']}})[_0x20fc('0x24')](handleEntityNotFound(_0x448201,null))[_0x20fc('0x24')](function(_0x3eba75){if(_0x3eba75){return _0x3eba75[_0x20fc('0xba')](_0x5ea05c['body'][_0x20fc('0xbb')],_[_0x20fc('0xbc')](_0x5ea05c[_0x20fc('0x61')],[_0x20fc('0xbb'),'id'])||{})[_0x20fc('0x98')](function(_0x4c7813){for(var _0x5e4fde=0x0;_0x5e4fde<_0x5ea05c[_0x20fc('0x61')][_0x20fc('0xbb')][_0x20fc('0x51')];_0x5e4fde+=0x1){socket['emit'](_0x20fc('0xbd'),{'UserId':Number(_0x5ea05c['body'][_0x20fc('0xbb')][_0x5e4fde]),'OpenchannelAccountId':Number(_0x5ea05c[_0x20fc('0x5f')]['id'])});}return _0x4c7813;});}})[_0x20fc('0x24')](respondWithResult(_0x448201,null))[_0x20fc('0x2f')](handleError(_0x448201,null));};exports[_0x20fc('0xbe')]=function(_0x22afc2,_0x44f707,_0x4aee3a){return db[_0x20fc('0x46')][_0x20fc('0x69')]({'where':{'id':_0x22afc2[_0x20fc('0x5f')]['id']}})[_0x20fc('0x24')](handleEntityNotFound(_0x44f707,null))[_0x20fc('0x24')](function(_0x1e468b){if(_0x1e468b){return _0x1e468b[_0x20fc('0xbe')](_0x22afc2['query'][_0x20fc('0xbb')])['then'](function(){if(_['isArray'](_0x22afc2[_0x20fc('0x4c')][_0x20fc('0xbb')])){for(var _0x204dbf=0x0;_0x204dbf<_0x22afc2['query'][_0x20fc('0xbb')][_0x20fc('0x51')];_0x204dbf+=0x1){socket[_0x20fc('0xbf')](_0x20fc('0xc0'),{'UserId':Number(_0x22afc2['query']['ids'][_0x204dbf]),'OpenchannelAccountId':Number(_0x22afc2['params']['id'])});}}else{socket[_0x20fc('0xbf')](_0x20fc('0xc0'),{'UserId':Number(_0x22afc2['query'][_0x20fc('0xbb')]),'OpenchannelAccountId':Number(_0x22afc2[_0x20fc('0x5f')]['id'])});}});}})['then'](respondWithStatusCode(_0x44f707,null))['catch'](handleError(_0x44f707,null));};exports[_0x20fc('0xc1')]=function(_0x3f89d4,_0x5a2a6a,_0x29cb8f){var _0x5c6f9c={};var _0x41167d={};var _0x27c31e;var _0x4d8481;return db[_0x20fc('0x46')]['findOne']({'where':{'id':_0x3f89d4[_0x20fc('0x5f')]['id']}})[_0x20fc('0x24')](handleEntityNotFound(_0x5a2a6a,null))[_0x20fc('0x24')](function(_0x52d70c){if(_0x52d70c){_0x27c31e=_0x52d70c;_0x41167d[_0x20fc('0x4b')]=_[_0x20fc('0x4d')](db[_0x20fc('0xa2')]['rawAttributes']);_0x41167d[_0x20fc('0x4c')]=_['keys'](_0x3f89d4[_0x20fc('0x4c')]);_0x41167d[_0x20fc('0x4e')]=_[_0x20fc('0x4f')](_0x41167d[_0x20fc('0x4b')],_0x41167d[_0x20fc('0x4c')]);_0x5c6f9c[_0x20fc('0x52')]=_[_0x20fc('0x4f')](_0x41167d[_0x20fc('0x4b')],qs[_0x20fc('0x50')](_0x3f89d4[_0x20fc('0x4c')][_0x20fc('0x50')]));_0x5c6f9c['attributes']=_0x5c6f9c[_0x20fc('0x52')][_0x20fc('0x51')]?_0x5c6f9c['attributes']:_0x41167d[_0x20fc('0x4b')];_0x5c6f9c['order']=qs[_0x20fc('0x54')](_0x3f89d4[_0x20fc('0x4c')][_0x20fc('0x54')]);_0x5c6f9c['where']=qs['filters'](_[_0x20fc('0x56')](_0x3f89d4[_0x20fc('0x4c')],_0x41167d[_0x20fc('0x4e')]));if(_0x3f89d4[_0x20fc('0x4c')][_0x20fc('0x57')]){_0x5c6f9c['where']=_['merge'](_0x5c6f9c['where'],{'$or':_[_0x20fc('0x45')](_0x5c6f9c[_0x20fc('0x52')],function(_0x58ead1){var _0x568be9={};_0x568be9[_0x58ead1]={'$like':'%'+_0x3f89d4[_0x20fc('0x4c')][_0x20fc('0x57')]+'%'};return _0x568be9;})});}_0x5c6f9c=_[_0x20fc('0x58')]({},_0x5c6f9c,_0x3f89d4[_0x20fc('0x5a')]);return _0x27c31e[_0x20fc('0xc1')](_0x5c6f9c);}})[_0x20fc('0x24')](function(_0x5943a9){if(_0x5943a9){_0x4d8481=_0x5943a9['length'];if(!_0x3f89d4[_0x20fc('0x4c')][_0x20fc('0x6e')](_0x20fc('0x6f'))){_0x5c6f9c[_0x20fc('0x34')]=qs['limit'](_0x3f89d4['query'][_0x20fc('0x34')]);_0x5c6f9c[_0x20fc('0x36')]=qs[_0x20fc('0x36')](_0x3f89d4['query']['offset']);}return _0x27c31e['getAgents'](_0x5c6f9c);}})[_0x20fc('0x24')](function(_0x57a3e9){if(_0x57a3e9){return _0x57a3e9?{'count':_0x4d8481,'rows':_0x57a3e9}:null;}})['then'](respondWithResult(_0x5a2a6a,null))[_0x20fc('0x2f')](handleError(_0x5a2a6a,null));};exports['send']=function(_0x374cfa,_0x4f3c76,_0x51fff5){var _0x2ab9cf,_0x48f14a,_0x4bb377;if(_[_0x20fc('0x7e')](_0x374cfa[_0x20fc('0x61')][_0x20fc('0x61')])||_0x374cfa[_0x20fc('0x61')][_0x20fc('0x61')]===''){throw new db[(_0x20fc('0x80'))][(_0x20fc('0x81'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_['isNil'](_0x374cfa[_0x20fc('0x61')]['to'])){}_0x2ab9cf=_0x374cfa[_0x20fc('0x61')]['to'];return db['OpenchannelAccount'][_0x20fc('0xae')]({'where':{'id':_0x374cfa['params']['id']}})[_0x20fc('0x24')](handleEntityNotFound(_0x4f3c76,null))['then'](function(_0x2e16c5){if(_0x2e16c5){return db[_0x20fc('0x46')]['find']({'where':{'id':_0x2e16c5['id']},'include':[{'model':db[_0x20fc('0x87')],'as':'List','include':[{'model':db[_0x20fc('0x77')],'as':_0x20fc('0x92'),'where':{[_0x2e16c5[_0x20fc('0x83')]]:_0x2ab9cf},'limit':0x1,'order':[[_0x20fc('0x7b'),_0x20fc('0x88')]]}]}]})['then'](handleEntityNotFound(_0x4f3c76,null))['then'](function(_0x58d5b5){if(_0x58d5b5&&_0x58d5b5[_0x20fc('0x8b')]){_0x48f14a=_0x58d5b5['get']({'plain':!![]});if(_0x48f14a[_0x20fc('0x8b')]&&_0x48f14a[_0x20fc('0x8b')][_0x20fc('0x92')][_0x20fc('0x51')]){return _0x48f14a[_0x20fc('0x8b')][_0x20fc('0x92')][0x0];}return db['CmContact'][_0x20fc('0x60')](_['defaults'](_0x374cfa[_0x20fc('0x61')],{'firstName':_0x2ab9cf,[_0x58d5b5['mapKey']]:_0x2ab9cf,'phone':_0x2ab9cf,'ListId':_0x48f14a[_0x20fc('0x7d')]}));}})['then'](handleEntityNotFound(_0x4f3c76,null))['then'](function(_0x2d5c01){if(_0x2d5c01){_0x4bb377=_0x2d5c01;return db[_0x20fc('0x95')][_0x20fc('0x69')]({'where':{'ContactId':_0x4bb377['id'],'closed':![],'OpenchannelAccountId':_0x48f14a['id']}})[_0x20fc('0x24')](function(_0x2bd833){if(_0x2bd833){return[_0x2bd833,![]];}return db['OpenchannelInteraction'][_0x20fc('0x60')]({'UserId':_0x374cfa[_0x20fc('0x62')]['id'],'ContactId':_0x4bb377['id'],'OpenchannelAccountId':_0x48f14a['id'],'lastMsgDirection':'out','firstMsgDirection':_0x20fc('0xc2'),'Messages':[_[_0x20fc('0x58')](_0x374cfa[_0x20fc('0x61')],{'read':![],'body':_0x374cfa[_0x20fc('0x61')][_0x20fc('0x61')],'OpenchannelAccountId':_0x48f14a['id'],'UserId':_0x374cfa[_0x20fc('0x62')]['id'],'ContactId':_0x4bb377['id']})]},{'include':[{'model':db[_0x20fc('0xc3')],'as':_0x20fc('0xc4')}]})[_0x20fc('0x24')](function(_0x33f063){return[_0x33f063,!![]];});});}})[_0x20fc('0x98')](function(_0x1863bd,_0x1cbeb3){if(_0x1cbeb3){return _0x1863bd;}return db[_0x20fc('0xc3')][_0x20fc('0x60')](_[_0x20fc('0x58')](_0x374cfa[_0x20fc('0x61')],{'read':![],'body':_0x374cfa[_0x20fc('0x61')][_0x20fc('0x61')],'OpenchannelAccountId':_0x48f14a['id'],'OpenchannelInteractionId':_0x1863bd['id'],'UserId':_0x374cfa[_0x20fc('0x62')]['id'],'ContactId':_0x4bb377['id']}))[_0x20fc('0x24')](function(_0x407882){_0x1863bd['dataValues'][_0x20fc('0xc4')]=[];_0x1863bd[_0x20fc('0xc5')][_0x20fc('0xc4')][_0x20fc('0x9e')](_0x407882[_0x20fc('0xc5')]);return _0x1863bd;});});}})['then'](respondWithResult(_0x4f3c76,null))[_0x20fc('0x2f')](handleError(_0x4f3c76,null));};
\ No newline at end of file
+var _0xbeff=['catch','sendStatus','status','end','json','offset','undefined','limit','count','apply','save','update','destroy','get','OpenchannelAccounts','UserProfileResource','then','stack','name','send','index','mandatoryDispositionPause','map','OpenchannelAccount','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','pick','filter','where','VIRTUAL','merge','includeAll','include','findAll','rows','show','params','Pause','find','create','body','user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','getDispositions','findOne','Disposition','hasOwnProperty','OpenchannelAccountId','options','removeDispositions','CannedAnswer','removeAnswers','ids','notify','openchannel','CmContact','Sequelize','difference','createdAt','updatedAt','CompanyId','ListId','from','ValidationError','isNil','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','List','OpenchannelApplication','account','applications','Applications','list','orderBy','priority','asc','Contacts','contact','firstName','threadId','OpenchannelInteraction','externalUrl','spread','messageId','interaction','created','push','unmanaged','*,*,*,*','AttachmentId','UserId','User','unshift','waitForTheAssignedAgent','startRouting','Start','EventManager','addApplications','transaction','ISOLATION_LEVELS','READ_COMMITTED','bulkCreate','getApplications','Contact','Owner','Tag','Tags','color','tag','addAgents','omit','userOpenchannelAccount:save','removeAgents','emit','userOpenchannelAccount:remove','getAgents','DESC','out','OpenchannelMessage','dataValues','Messages','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','http','client','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x55715d,_0xba2ede){var _0x514d01=function(_0x53e2fc){while(--_0x53e2fc){_0x55715d['push'](_0x55715d['shift']());}};_0x514d01(++_0xba2ede);}(_0xbeff,0x8e));var _0xfbef=function(_0x496671,_0x3da759){_0x496671=_0x496671-0x0;var _0x477a1e=_0xbeff[_0x496671];return _0x477a1e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfbef('0x0'));var zipdir=require(_0xfbef('0x1'));var jsonpatch=require(_0xfbef('0x2'));var rp=require(_0xfbef('0x3'));var moment=require(_0xfbef('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xfbef('0x5'));var path=require(_0xfbef('0x6'));var sox=require(_0xfbef('0x7'));var csv=require(_0xfbef('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xfbef('0x9'));var _=require(_0xfbef('0xa'));var squel=require('squel');var crypto=require(_0xfbef('0xb'));var jsforce=require(_0xfbef('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xfbef('0x8'));var querystring=require('querystring');var Papa=require(_0xfbef('0xd'));var Redis=require('ioredis');var authService=require(_0xfbef('0xe'));var qs=require(_0xfbef('0xf'));var as=require(_0xfbef('0x10'));var hardwareService=require(_0xfbef('0x11'));var logger=require(_0xfbef('0x12'))(_0xfbef('0x13'));var utils=require(_0xfbef('0x14'));var config=require(_0xfbef('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xfbef('0x16'))['db'];config[_0xfbef('0x17')]=_[_0xfbef('0x18')](config[_0xfbef('0x17')],{'host':_0xfbef('0x19'),'port':0x18eb});var socket=require(_0xfbef('0x1a'))(new Redis(config[_0xfbef('0x17')]));require('./openchannelAccount.socket')['register'](socket);var jayson=require('jayson/promise');var client=jayson['client'][_0xfbef('0x1b')]({'port':0x232c});var client9002=jayson[_0xfbef('0x1c')][_0xfbef('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x4d74eb,_0x1e9a88,_0x2b24ff,_0x385eb){return new BPromise(function(_0x10b3fd,_0x1bad94){var _0x1fc8ac=_0x385eb||client;return _0x1fc8ac['request'](_0x4d74eb,_0x2b24ff)['then'](function(_0x4004dc){logger[_0xfbef('0x1d')](_0xfbef('0x1e'),_0x1e9a88,_0xfbef('0x1f'));logger['debug'](_0xfbef('0x20'),_0x1e9a88,_0xfbef('0x1f'),JSON[_0xfbef('0x21')](_0x4004dc));if(_0x4004dc[_0xfbef('0x22')]){if(_0x4004dc[_0xfbef('0x22')][_0xfbef('0x23')]===0x1f4){logger['error'](_0xfbef('0x1e'),_0x1e9a88,_0x4004dc[_0xfbef('0x22')]['message']);return _0x1bad94(_0x4004dc[_0xfbef('0x22')]['message']);}logger[_0xfbef('0x22')](_0xfbef('0x1e'),_0x1e9a88,_0x4004dc[_0xfbef('0x22')][_0xfbef('0x24')]);return _0x10b3fd(_0x4004dc[_0xfbef('0x22')][_0xfbef('0x24')]);}else{logger['info'](_0xfbef('0x1e'),_0x1e9a88,_0xfbef('0x1f'));_0x10b3fd(_0x4004dc[_0xfbef('0x25')][_0xfbef('0x24')]);}})[_0xfbef('0x26')](function(_0x561e7c){logger[_0xfbef('0x22')](_0xfbef('0x1e'),_0x1e9a88,_0x561e7c);_0x1bad94(_0x561e7c);});});}function respondWithStatusCode(_0x3a4212,_0x4dc7a4){_0x4dc7a4=_0x4dc7a4||0xcc;return function(_0x3f7010){if(_0x3f7010){return _0x3a4212[_0xfbef('0x27')](_0x4dc7a4);}return _0x3a4212[_0xfbef('0x28')](_0x4dc7a4)[_0xfbef('0x29')]();};}function respondWithResult(_0x31f5dc,_0x4fe0ed){_0x4fe0ed=_0x4fe0ed||0xc8;return function(_0x3776e4){if(_0x3776e4){return _0x31f5dc[_0xfbef('0x28')](_0x4fe0ed)[_0xfbef('0x2a')](_0x3776e4);}};}function respondWithFilteredResult(_0x30faae,_0x1384ee){return function(_0x2c6a75){if(_0x2c6a75){var _0x590180=typeof _0x1384ee[_0xfbef('0x2b')]===_0xfbef('0x2c')&&typeof _0x1384ee[_0xfbef('0x2d')]===_0xfbef('0x2c');var _0x6250bc=_0x2c6a75['count'];var _0xf0cfd9=_0x590180?0x0:_0x1384ee['offset'];var _0x396a05=_0x590180?_0x2c6a75[_0xfbef('0x2e')]:_0x1384ee[_0xfbef('0x2b')]+_0x1384ee[_0xfbef('0x2d')];var _0x39e1e2;if(_0x396a05>=_0x6250bc){_0x396a05=_0x6250bc;_0x39e1e2=0xc8;}else{_0x39e1e2=0xce;}_0x30faae[_0xfbef('0x28')](_0x39e1e2);return _0x30faae['set']('Content-Range',_0xf0cfd9+'-'+_0x396a05+'/'+_0x6250bc)[_0xfbef('0x2a')](_0x2c6a75);}return null;};}function patchUpdates(_0xc730df){return function(_0x4dfe5c){try{jsonpatch[_0xfbef('0x2f')](_0x4dfe5c,_0xc730df,!![]);}catch(_0x27a8ca){return BPromise['reject'](_0x27a8ca);}return _0x4dfe5c[_0xfbef('0x30')]();};}function saveUpdates(_0x1b7ef9,_0x52aefb){return function(_0x1d2889){if(_0x1d2889){return _0x1d2889[_0xfbef('0x31')](_0x1b7ef9)['then'](function(_0x353268){return _0x353268;});}return null;};}function removeEntity(_0x473444,_0x3a427f){return function(_0x52a242){if(_0x52a242){return _0x52a242[_0xfbef('0x32')]()['then'](function(){var _0x25d97b=_0x52a242[_0xfbef('0x33')]({'plain':!![]});var _0x58b42e=_0xfbef('0x34');return db[_0xfbef('0x35')]['destroy']({'where':{'type':_0x58b42e,'resourceId':_0x25d97b['id']}})[_0xfbef('0x36')](function(){return _0x52a242;});})[_0xfbef('0x36')](function(){_0x473444[_0xfbef('0x28')](0xcc)[_0xfbef('0x29')]();});}};}function handleEntityNotFound(_0x5cdb49,_0x3be688){return function(_0x46e4cf){if(!_0x46e4cf){_0x5cdb49[_0xfbef('0x27')](0x194);}return _0x46e4cf;};}function handleError(_0x45c796,_0x1741a8){_0x1741a8=_0x1741a8||0x1f4;return function(_0x25bcd2){logger['error'](_0x25bcd2[_0xfbef('0x37')]);if(_0x25bcd2[_0xfbef('0x38')]){delete _0x25bcd2[_0xfbef('0x38')];}_0x45c796[_0xfbef('0x28')](_0x1741a8)[_0xfbef('0x39')](_0x25bcd2);};}exports[_0xfbef('0x3a')]=function(_0x585589,_0x4381e6){var _0x32dfb6={'include':[{'model':db['Pause'],'as':_0xfbef('0x3b')}]},_0x156dd9={},_0x19c57a={'count':0x0,'rows':[]};var _0x23496e=_[_0xfbef('0x3c')](db[_0xfbef('0x3d')][_0xfbef('0x3e')],function(_0x40cd33){return{'name':_0x40cd33[_0xfbef('0x3f')],'type':_0x40cd33[_0xfbef('0x40')][_0xfbef('0x41')]};});_0x156dd9[_0xfbef('0x42')]=_[_0xfbef('0x3c')](_0x23496e,'name');_0x156dd9[_0xfbef('0x43')]=_[_0xfbef('0x44')](_0x585589[_0xfbef('0x43')]);_0x156dd9[_0xfbef('0x45')]=_[_0xfbef('0x46')](_0x156dd9[_0xfbef('0x42')],_0x156dd9[_0xfbef('0x43')]);_0x32dfb6['attributes']=_[_0xfbef('0x46')](_0x156dd9[_0xfbef('0x42')],qs[_0xfbef('0x47')](_0x585589[_0xfbef('0x43')][_0xfbef('0x47')]));_0x32dfb6['attributes']=_0x32dfb6[_0xfbef('0x48')][_0xfbef('0x49')]?_0x32dfb6['attributes']:_0x156dd9[_0xfbef('0x42')];if(!_0x585589[_0xfbef('0x43')]['hasOwnProperty'](_0xfbef('0x4a'))){_0x32dfb6[_0xfbef('0x2d')]=qs['limit'](_0x585589['query'][_0xfbef('0x2d')]);_0x32dfb6[_0xfbef('0x2b')]=qs[_0xfbef('0x2b')](_0x585589[_0xfbef('0x43')][_0xfbef('0x2b')]);}_0x32dfb6[_0xfbef('0x4b')]=qs[_0xfbef('0x4c')](_0x585589[_0xfbef('0x43')][_0xfbef('0x4c')]);_0x32dfb6['where']=qs[_0xfbef('0x45')](_[_0xfbef('0x4d')](_0x585589['query'],_0x156dd9['filters']),_0x23496e);if(_0x585589[_0xfbef('0x43')][_0xfbef('0x4e')]){_0x32dfb6[_0xfbef('0x4f')]=_['merge'](_0x32dfb6['where'],{'$or':_['map'](_0x23496e,function(_0x57b80f){if(_0x57b80f['type']!==_0xfbef('0x50')){var _0x5e5205={};_0x5e5205[_0x57b80f[_0xfbef('0x38')]]={'$like':'%'+_0x585589[_0xfbef('0x43')][_0xfbef('0x4e')]+'%'};return _0x5e5205;}})});}_0x32dfb6=_[_0xfbef('0x51')]({},_0x32dfb6,_0x585589['options']);var _0x280c9c={'where':_0x32dfb6[_0xfbef('0x4f')]};return db[_0xfbef('0x3d')][_0xfbef('0x2e')](_0x280c9c)['then'](function(_0x36cbac){_0x19c57a[_0xfbef('0x2e')]=_0x36cbac;if(_0x585589[_0xfbef('0x43')][_0xfbef('0x52')]){_0x32dfb6[_0xfbef('0x53')]=[{'all':!![]}];}return db[_0xfbef('0x3d')][_0xfbef('0x54')](_0x32dfb6);})[_0xfbef('0x36')](function(_0x4d86e8){_0x19c57a[_0xfbef('0x55')]=_0x4d86e8;return _0x19c57a;})[_0xfbef('0x36')](respondWithFilteredResult(_0x4381e6,_0x32dfb6))[_0xfbef('0x26')](handleError(_0x4381e6,null));};exports[_0xfbef('0x56')]=function(_0x5d678f,_0x52350e){var _0x28b000={'raw':![],'where':{'id':_0x5d678f[_0xfbef('0x57')]['id']},'include':[{'model':db[_0xfbef('0x58')],'as':_0xfbef('0x3b')}]},_0x2f19df={};_0x2f19df[_0xfbef('0x42')]=_['keys'](db[_0xfbef('0x3d')][_0xfbef('0x3e')]);_0x2f19df[_0xfbef('0x43')]=_[_0xfbef('0x44')](_0x5d678f[_0xfbef('0x43')]);_0x2f19df[_0xfbef('0x45')]=_[_0xfbef('0x46')](_0x2f19df[_0xfbef('0x42')],_0x2f19df[_0xfbef('0x43')]);_0x28b000[_0xfbef('0x48')]=_['intersection'](_0x2f19df[_0xfbef('0x42')],qs['fields'](_0x5d678f[_0xfbef('0x43')]['fields']));_0x28b000['attributes']=_0x28b000[_0xfbef('0x48')][_0xfbef('0x49')]?_0x28b000[_0xfbef('0x48')]:_0x2f19df[_0xfbef('0x42')];if(_0x5d678f[_0xfbef('0x43')][_0xfbef('0x52')]){_0x28b000[_0xfbef('0x53')]=[{'all':!![]}];}_0x28b000=_['merge']({},_0x28b000,_0x5d678f['options']);return db[_0xfbef('0x3d')][_0xfbef('0x59')](_0x28b000)[_0xfbef('0x36')](handleEntityNotFound(_0x52350e,null))[_0xfbef('0x36')](respondWithResult(_0x52350e,null))[_0xfbef('0x26')](handleError(_0x52350e,null));};exports[_0xfbef('0x5a')]=function(_0x5b2a,_0x578dda){return db['OpenchannelAccount'][_0xfbef('0x5a')](_0x5b2a[_0xfbef('0x5b')],{})[_0xfbef('0x36')](function(_0x32ee04){var _0x3a58ed=_0x5b2a[_0xfbef('0x5c')][_0xfbef('0x33')]({'plain':!![]});if(!_0x3a58ed)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3a58ed[_0xfbef('0x5d')]===_0xfbef('0x5c')){var _0x1d9659=_0x32ee04['get']({'plain':!![]});var _0x4dea27=_0xfbef('0x34');return db[_0xfbef('0x5e')][_0xfbef('0x59')]({'where':{'name':_0x4dea27,'userProfileId':_0x3a58ed[_0xfbef('0x5f')]},'raw':!![]})[_0xfbef('0x36')](function(_0x5f1a70){if(_0x5f1a70&&_0x5f1a70['autoAssociation']===0x0){return db[_0xfbef('0x35')][_0xfbef('0x5a')]({'name':_0x1d9659[_0xfbef('0x38')],'resourceId':_0x1d9659['id'],'type':_0x5f1a70[_0xfbef('0x38')],'sectionId':_0x5f1a70['id']},{})[_0xfbef('0x36')](function(){return _0x32ee04;});}else{return _0x32ee04;}})[_0xfbef('0x26')](function(_0x55f116){logger['error'](_0xfbef('0x60'),_0x55f116);throw _0x55f116;});}return _0x32ee04;})[_0xfbef('0x36')](respondWithResult(_0x578dda,0xc9))[_0xfbef('0x26')](handleError(_0x578dda,null));};exports[_0xfbef('0x31')]=function(_0x242390,_0x4c0268){if(_0x242390[_0xfbef('0x5b')]['id']){delete _0x242390['body']['id'];}return db['OpenchannelAccount'][_0xfbef('0x59')]({'where':{'id':_0x242390[_0xfbef('0x57')]['id']},'include':[{'model':db[_0xfbef('0x58')],'as':_0xfbef('0x3b')}]})[_0xfbef('0x36')](handleEntityNotFound(_0x4c0268,null))[_0xfbef('0x36')](saveUpdates(_0x242390[_0xfbef('0x5b')],null))['then'](respondWithResult(_0x4c0268,null))[_0xfbef('0x26')](handleError(_0x4c0268,null));};exports[_0xfbef('0x32')]=function(_0x4040df,_0x5e516b){return db[_0xfbef('0x3d')][_0xfbef('0x59')]({'where':{'id':_0x4040df[_0xfbef('0x57')]['id']}})[_0xfbef('0x36')](handleEntityNotFound(_0x5e516b,null))[_0xfbef('0x36')](removeEntity(_0x5e516b,null))['catch'](handleError(_0x5e516b,null));};exports[_0xfbef('0x61')]=function(_0x2667aa,_0x2b55ac){return db['OpenchannelAccount'][_0xfbef('0x61')]()[_0xfbef('0x36')](respondWithResult(_0x2b55ac,null))[_0xfbef('0x26')](handleError(_0x2b55ac,null));};exports[_0xfbef('0x62')]=function(_0x58625a,_0x6aac82,_0x428c16){if(_0x58625a[_0xfbef('0x5b')]['id']){delete _0x58625a['body']['id'];}return db[_0xfbef('0x3d')]['find']({'where':{'id':_0x58625a[_0xfbef('0x57')]['id']}})['then'](handleEntityNotFound(_0x6aac82,null))[_0xfbef('0x36')](function(_0x162ac9){if(_0x162ac9){_0x58625a[_0xfbef('0x5b')]['OpenchannelAccountId']=_0x162ac9['id'];return db['Disposition'][_0xfbef('0x5a')](_0x58625a['body']);}})[_0xfbef('0x36')](respondWithResult(_0x6aac82,null))[_0xfbef('0x26')](handleError(_0x6aac82,null));};exports[_0xfbef('0x63')]=function(_0x44f002,_0x5bf4bb,_0xc247ae){var _0x1bc503={'raw':![],'where':{}};var _0x24f511={};var _0x107ffe={'count':0x0,'rows':[]};return db[_0xfbef('0x3d')][_0xfbef('0x64')]({'where':{'id':_0x44f002[_0xfbef('0x57')]['id']}})['then'](handleEntityNotFound(_0x5bf4bb,null))[_0xfbef('0x36')](function(_0x122811){if(_0x122811){_0x24f511[_0xfbef('0x42')]=_[_0xfbef('0x44')](db[_0xfbef('0x65')][_0xfbef('0x3e')]);_0x24f511[_0xfbef('0x43')]=_[_0xfbef('0x44')](_0x44f002['query']);_0x24f511['filters']=_['intersection'](_0x24f511[_0xfbef('0x42')],_0x24f511[_0xfbef('0x43')]);_0x1bc503[_0xfbef('0x48')]=_[_0xfbef('0x46')](_0x24f511[_0xfbef('0x42')],qs[_0xfbef('0x47')](_0x44f002['query']['fields']));_0x1bc503[_0xfbef('0x48')]=_0x1bc503[_0xfbef('0x48')]['length']?_0x1bc503[_0xfbef('0x48')]:_0x24f511['model'];if(!_0x44f002['query'][_0xfbef('0x66')](_0xfbef('0x4a'))){_0x1bc503[_0xfbef('0x2d')]=qs[_0xfbef('0x2d')](_0x44f002['query'][_0xfbef('0x2d')]);_0x1bc503['offset']=qs[_0xfbef('0x2b')](_0x44f002['query']['offset']);}_0x1bc503[_0xfbef('0x4b')]=qs[_0xfbef('0x4c')](_0x44f002[_0xfbef('0x43')][_0xfbef('0x4c')]);_0x1bc503[_0xfbef('0x4f')]=qs[_0xfbef('0x45')](_[_0xfbef('0x4d')](_0x44f002[_0xfbef('0x43')],_0x24f511[_0xfbef('0x45')]));_0x1bc503['where'][_0xfbef('0x67')]=_0x122811['id'];if(_0x44f002[_0xfbef('0x43')]['filter']){_0x1bc503[_0xfbef('0x4f')]=_[_0xfbef('0x51')](_0x1bc503[_0xfbef('0x4f')],{'$or':_[_0xfbef('0x3c')](_0x1bc503[_0xfbef('0x48')],function(_0xcadaf3){var _0x332b29={};_0x332b29[_0xcadaf3]={'$like':'%'+_0x44f002[_0xfbef('0x43')]['filter']+'%'};return _0x332b29;})});}_0x1bc503=_[_0xfbef('0x51')]({},_0x1bc503,_0x44f002[_0xfbef('0x68')]);return db[_0xfbef('0x65')]['count']({'where':_0x1bc503[_0xfbef('0x4f')]})[_0xfbef('0x36')](function(_0x4a5985){_0x107ffe[_0xfbef('0x2e')]=_0x4a5985;if(_0x44f002['query'][_0xfbef('0x52')]){_0x1bc503[_0xfbef('0x53')]=[{'all':!![]}];}return db[_0xfbef('0x65')][_0xfbef('0x54')](_0x1bc503);})[_0xfbef('0x36')](function(_0x20f75f){_0x107ffe[_0xfbef('0x55')]=_0x20f75f;return _0x107ffe;});}})['then'](respondWithFilteredResult(_0x5bf4bb,_0x1bc503))[_0xfbef('0x26')](handleError(_0x5bf4bb,null));};exports[_0xfbef('0x69')]=function(_0x2a1cd4,_0x10a1e0,_0x111e5b){return db[_0xfbef('0x3d')]['find']({'where':{'id':_0x2a1cd4['params']['id']}})[_0xfbef('0x36')](handleEntityNotFound(_0x10a1e0,null))[_0xfbef('0x36')](function(_0x12be21){if(_0x12be21){return _0x12be21['removeDispositions'](_0x2a1cd4[_0xfbef('0x43')]['ids']);}})[_0xfbef('0x36')](respondWithStatusCode(_0x10a1e0,null))[_0xfbef('0x26')](handleError(_0x10a1e0,null));};exports['addAnswer']=function(_0x4da21f,_0x724e4c,_0x532722){if(_0x4da21f[_0xfbef('0x5b')]['id']){delete _0x4da21f['body']['id'];}return db[_0xfbef('0x3d')]['find']({'where':{'id':_0x4da21f['params']['id']}})[_0xfbef('0x36')](handleEntityNotFound(_0x724e4c,null))['then'](function(_0x5e48ee){if(_0x5e48ee){_0x4da21f[_0xfbef('0x5b')][_0xfbef('0x67')]=_0x5e48ee['id'];return db[_0xfbef('0x6a')]['create'](_0x4da21f[_0xfbef('0x5b')]);}})['then'](respondWithResult(_0x724e4c,null))[_0xfbef('0x26')](handleError(_0x724e4c,null));};exports['getAnswers']=function(_0x45cc66,_0x2a691b,_0x37f0b1){var _0x267e5a={'raw':![],'where':{}};var _0x128312={};var _0x1fc9d0={'count':0x0,'rows':[]};return db[_0xfbef('0x3d')][_0xfbef('0x64')]({'where':{'id':_0x45cc66['params']['id']}})[_0xfbef('0x36')](handleEntityNotFound(_0x2a691b,null))[_0xfbef('0x36')](function(_0x55422a){if(_0x55422a){_0x128312[_0xfbef('0x42')]=_[_0xfbef('0x44')](db['CannedAnswer'][_0xfbef('0x3e')]);_0x128312[_0xfbef('0x43')]=_[_0xfbef('0x44')](_0x45cc66[_0xfbef('0x43')]);_0x128312[_0xfbef('0x45')]=_['intersection'](_0x128312[_0xfbef('0x42')],_0x128312[_0xfbef('0x43')]);_0x267e5a[_0xfbef('0x48')]=_[_0xfbef('0x46')](_0x128312[_0xfbef('0x42')],qs[_0xfbef('0x47')](_0x45cc66[_0xfbef('0x43')][_0xfbef('0x47')]));_0x267e5a[_0xfbef('0x48')]=_0x267e5a[_0xfbef('0x48')][_0xfbef('0x49')]?_0x267e5a[_0xfbef('0x48')]:_0x128312[_0xfbef('0x42')];if(!_0x45cc66[_0xfbef('0x43')][_0xfbef('0x66')](_0xfbef('0x4a'))){_0x267e5a[_0xfbef('0x2d')]=qs[_0xfbef('0x2d')](_0x45cc66[_0xfbef('0x43')][_0xfbef('0x2d')]);_0x267e5a[_0xfbef('0x2b')]=qs[_0xfbef('0x2b')](_0x45cc66[_0xfbef('0x43')][_0xfbef('0x2b')]);}_0x267e5a[_0xfbef('0x4b')]=qs[_0xfbef('0x4c')](_0x45cc66[_0xfbef('0x43')]['sort']);_0x267e5a[_0xfbef('0x4f')]=qs['filters'](_[_0xfbef('0x4d')](_0x45cc66['query'],_0x128312[_0xfbef('0x45')]));_0x267e5a[_0xfbef('0x4f')][_0xfbef('0x67')]=_0x55422a['id'];if(_0x45cc66[_0xfbef('0x43')]['filter']){_0x267e5a[_0xfbef('0x4f')]=_['merge'](_0x267e5a['where'],{'$or':_[_0xfbef('0x3c')](_0x267e5a[_0xfbef('0x48')],function(_0x424b28){var _0x150fd9={};_0x150fd9[_0x424b28]={'$like':'%'+_0x45cc66[_0xfbef('0x43')][_0xfbef('0x4e')]+'%'};return _0x150fd9;})});}_0x267e5a=_['merge']({},_0x267e5a,_0x45cc66['options']);return db[_0xfbef('0x6a')][_0xfbef('0x2e')]({'where':_0x267e5a['where']})['then'](function(_0x3a36af){_0x1fc9d0[_0xfbef('0x2e')]=_0x3a36af;if(_0x45cc66[_0xfbef('0x43')][_0xfbef('0x52')]){_0x267e5a[_0xfbef('0x53')]=[{'all':!![]}];}return db[_0xfbef('0x6a')]['findAll'](_0x267e5a);})[_0xfbef('0x36')](function(_0x4f2c74){_0x1fc9d0[_0xfbef('0x55')]=_0x4f2c74;return _0x1fc9d0;});}})[_0xfbef('0x36')](respondWithFilteredResult(_0x2a691b,_0x267e5a))[_0xfbef('0x26')](handleError(_0x2a691b,null));};exports[_0xfbef('0x6b')]=function(_0x5a8923,_0x2a6a53,_0x5ecb6a){return db[_0xfbef('0x3d')][_0xfbef('0x59')]({'where':{'id':_0x5a8923[_0xfbef('0x57')]['id']}})[_0xfbef('0x36')](handleEntityNotFound(_0x2a6a53,null))['then'](function(_0x258028){if(_0x258028){return _0x258028[_0xfbef('0x6b')](_0x5a8923['query'][_0xfbef('0x6c')]);}})[_0xfbef('0x36')](respondWithStatusCode(_0x2a6a53,null))['catch'](handleError(_0x2a6a53,null));};exports[_0xfbef('0x6d')]=function(_0x4e9d2b,_0x371455,_0x2fcda7){var _0xe3924f={'body':_0x4e9d2b[_0xfbef('0x5b')],'channel':_0xfbef('0x6e')};var _0x59c02c=[];var _0xa34ea6=[];var _0x6dfd11={};var _0x3aef78=![];return db[_0xfbef('0x6f')][_0xfbef('0x61')]()[_0xfbef('0x36')](function(_0x4dc32b){if(!_0x4dc32b){throw new db[(_0xfbef('0x70'))]['ValidationError']('no\x20available\x20attributes');}_0x59c02c=_[_0xfbef('0x71')](_[_0xfbef('0x44')](_0x4dc32b),[_0xfbef('0x72'),_0xfbef('0x73')]);_0xa34ea6=_[_0xfbef('0x71')](_[_0xfbef('0x44')](_0x4dc32b),[_0xfbef('0x72'),_0xfbef('0x73'),_0xfbef('0x74'),_0xfbef('0x75')]);if(_0x4e9d2b[_0xfbef('0x5b')]['id']){delete _0x4e9d2b['body']['id'];}if(_['isNil'](_0x4e9d2b[_0xfbef('0x5b')][_0xfbef('0x76')])){throw new db[(_0xfbef('0x70'))][(_0xfbef('0x77'))]('from\x20is\x20mandatory');}if(_[_0xfbef('0x78')](_0x4e9d2b['body'][_0xfbef('0x5b')])||_0x4e9d2b[_0xfbef('0x5b')][_0xfbef('0x5b')]===''){throw new db[(_0xfbef('0x70'))][(_0xfbef('0x77'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0xfbef('0x78')](_0x4e9d2b[_0xfbef('0x5b')]['mapKey'])){throw new db['Sequelize']['ValidationError'](_0xfbef('0x79')+_0xa34ea6);}if(!_[_0xfbef('0x7a')](_0xa34ea6,_0x4e9d2b[_0xfbef('0x5b')][_0xfbef('0x7b')])){throw new db[(_0xfbef('0x70'))]['ValidationError'](_0xfbef('0x7c')+_0xa34ea6);}_0x6dfd11[_0x4e9d2b['body'][_0xfbef('0x7b')]]=_0x4e9d2b[_0xfbef('0x5b')][_0xfbef('0x76')];})[_0xfbef('0x36')](function(){return db[_0xfbef('0x3d')][_0xfbef('0x59')]({'where':{'id':_0x4e9d2b[_0xfbef('0x57')]['id']},'include':[{'model':db[_0xfbef('0x7d')],'as':_0xfbef('0x7e'),'include':[{'model':db['CmContact'],'as':'Contacts','where':_0x6dfd11,'limit':0x1,'order':[[_0xfbef('0x73'),'DESC']]}]},{'model':db[_0xfbef('0x7f')],'as':'Applications'}]});})[_0xfbef('0x36')](handleEntityNotFound(_0x371455,null))['then'](function(_0xf49b66){if(_0xf49b66&&_0xf49b66['List']){_0xe3924f[_0xfbef('0x80')]=_0xf49b66;_0xe3924f[_0xfbef('0x81')]=_0xf49b66[_0xfbef('0x82')];_0xe3924f[_0xfbef('0x83')]=_0xf49b66[_0xfbef('0x7e')];_0xe3924f[_0xfbef('0x81')]=_[_0xfbef('0x84')](_0xe3924f[_0xfbef('0x81')],[_0xfbef('0x85')],[_0xfbef('0x86')]);if(_0xe3924f[_0xfbef('0x80')][_0xfbef('0x82')]){delete _0xe3924f[_0xfbef('0x80')][_0xfbef('0x82')];}if(_0xe3924f[_0xfbef('0x80')][_0xfbef('0x7e')]&&_0xe3924f[_0xfbef('0x80')][_0xfbef('0x7e')]['Contacts'][_0xfbef('0x49')]){return _0xe3924f[_0xfbef('0x80')][_0xfbef('0x7e')][_0xfbef('0x87')][0x0];}var _0x5bd862=_[_0xfbef('0x18')](_0x4e9d2b[_0xfbef('0x5b')],{'firstName':_0x4e9d2b[_0xfbef('0x5b')][_0xfbef('0x76')],'ListId':_0xf49b66[_0xfbef('0x75')]});_0x5bd862[_0x4e9d2b[_0xfbef('0x5b')][_0xfbef('0x7b')]]=_0x4e9d2b['body'][_0xfbef('0x76')];return db['CmContact']['create'](_0x5bd862,{'fields':_0x59c02c,'raw':!![]});}})[_0xfbef('0x36')](handleEntityNotFound(_0x371455,null))[_0xfbef('0x36')](function(_0x5bd9cb){_0xe3924f[_0xfbef('0x88')]=_0x5bd9cb;if(_0x5bd9cb){var _0x1306b7={'ContactId':_0x5bd9cb['id'],'OpenchannelAccountId':_0x4e9d2b['params']['id'],'from':(_0x5bd9cb[_0xfbef('0x89')]||'')+'\x20'+(_0x5bd9cb['lastName']||'')};var _0x1e7757={'OpenchannelAccountId':_0x4e9d2b[_0xfbef('0x57')]['id'],'closed':![]};if(_0x4e9d2b[_0xfbef('0x5b')][_0xfbef('0x8a')]){_0x1e7757[_0xfbef('0x8a')]=_0x4e9d2b[_0xfbef('0x5b')][_0xfbef('0x8a')];return db[_0xfbef('0x8b')][_0xfbef('0x59')]({'where':_0x1e7757})[_0xfbef('0x36')](function(_0x192f23){if(_0x192f23){return[_0x192f23,![]];}_0x1306b7[_0xfbef('0x8a')]=_0x4e9d2b[_0xfbef('0x5b')][_0xfbef('0x8a')];_0x1306b7[_0xfbef('0x8c')]=_0x4e9d2b[_0xfbef('0x5b')][_0xfbef('0x8c')];return db['OpenchannelInteraction']['create'](_0x1306b7)[_0xfbef('0x36')](function(_0x167fea){return[_0x167fea,!![]];});});}else{_0x1e7757[_0xfbef('0x8a')]=null;}_0x1e7757['ContactId']=_0x5bd9cb['id'];return db['OpenchannelInteraction'][_0xfbef('0x59')]({'where':_0x1e7757})[_0xfbef('0x36')](function(_0x5d079f){if(_0x5d079f){return[_0x5d079f,![]];}return db['OpenchannelInteraction'][_0xfbef('0x5a')](_0x1306b7)[_0xfbef('0x36')](function(_0x2fe142){return[_0x2fe142,!![]];});});}})[_0xfbef('0x8d')](function(_0x1a1349,_0x21ee3d){if(_0x1a1349){_0x3aef78=_0x21ee3d;if(!_0x21ee3d){var _0x2d607e={'from':(_0xe3924f[_0xfbef('0x88')][_0xfbef('0x89')]||'')+'\x20'+(_0xe3924f[_0xfbef('0x88')]['lastName']||'')};if(_0x4e9d2b[_0xfbef('0x5b')][_0xfbef('0x8a')]&&_0x4e9d2b[_0xfbef('0x5b')][_0xfbef('0x8e')]&&_0x4e9d2b[_0xfbef('0x5b')][_0xfbef('0x8a')]!=_0x4e9d2b[_0xfbef('0x5b')]['messageId']){_0x2d607e['threadId']=_0x4e9d2b[_0xfbef('0x5b')]['messageId'];}return _0x1a1349[_0xfbef('0x31')](_0x2d607e);}else{return _0x1a1349;}}})[_0xfbef('0x36')](function(_0x3f97f4){_0xe3924f[_0xfbef('0x8f')]=_0x3f97f4[_0xfbef('0x33')]({'plain':!![]});_0xe3924f[_0xfbef('0x8f')][_0xfbef('0x90')]=_0x3aef78;if(_0xe3924f[_0xfbef('0x8f')][_0xfbef('0x90')]){if(_0xe3924f[_0xfbef('0x80')]['autoclose']){_0xe3924f[_0xfbef('0x81')][_0xfbef('0x91')]({'id':0x0,'priority':_0xe3924f[_0xfbef('0x81')]['length']+0x1,'app':'close','appdata':_0xfbef('0x92'),'interval':_0xfbef('0x93')});}}return db['OpenchannelMessage'][_0xfbef('0x5a')]({'body':_0x4e9d2b['body'][_0xfbef('0x5b')],'OpenchannelAccountId':_0x4e9d2b[_0xfbef('0x57')]['id'],'OpenchannelInteractionId':_0x3f97f4['id'],'direction':'in','ContactId':_0xe3924f['contact']['id'],'AttachmentId':_0x4e9d2b[_0xfbef('0x5b')][_0xfbef('0x94')]});})[_0xfbef('0x36')](function(_0x4a237e){_0xe3924f[_0xfbef('0x24')]=_0x4a237e;if(_0xe3924f[_0xfbef('0x8f')][_0xfbef('0x95')]){return db[_0xfbef('0x96')][_0xfbef('0x59')]({'attributes':['id',_0xfbef('0x38')],'where':{'id':_0xe3924f[_0xfbef('0x8f')][_0xfbef('0x95')]}})[_0xfbef('0x36')](function(_0x54c5cc){if(_0x54c5cc){_0xe3924f[_0xfbef('0x81')][_0xfbef('0x97')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x54c5cc[_0xfbef('0x38')]+','+(_0xe3924f['account'][_0xfbef('0x98')]||0xa),'interval':_0xfbef('0x93')});_0xe3924f['forcedOwnership']=![];}return respondWithRpcPromise('Start',_0xfbef('0x99'),_0xe3924f);});}return respondWithRpcPromise(_0xfbef('0x9a'),_0xfbef('0x99'),_0xe3924f);})[_0xfbef('0x36')](function(_0x24f5f7){respondWithRpcPromise(_0xfbef('0x9b'),_0xfbef('0x9b'),{'event':'notify','message':_0x24f5f7},client9002);return _0x24f5f7;})[_0xfbef('0x36')](respondWithResult(_0x371455,null))[_0xfbef('0x26')](handleError(_0x371455,null));};exports[_0xfbef('0x9c')]=function(_0x385b54,_0x245e03){var _0x39f492=_0x385b54[_0xfbef('0x57')]['id'];var _0x1d3d00=_0x385b54['body'];var _0x2b42a3=0xc8;var _0x124f16=null;return db['sequelize'][_0xfbef('0x9d')]({'isolationLevel':db['sequelize']['Transaction'][_0xfbef('0x9e')][_0xfbef('0x9f')]},function(_0x4f76e5){return db['OpenchannelAccount'][_0xfbef('0x64')]({'where':{'id':_0x39f492},'transaction':_0x4f76e5})[_0xfbef('0x36')](function(_0x28fea0){if(_0x28fea0){return db[_0xfbef('0x7f')][_0xfbef('0x32')]({'where':{'OpenchannelAccountId':_0x39f492},'transaction':_0x4f76e5})[_0xfbef('0x36')](function(){var _0x1766b9=_['map'](_0x1d3d00,function(_0x4bfb0f){_0x4bfb0f[_0xfbef('0x67')]=_0x39f492;return _0x4bfb0f;});return db[_0xfbef('0x7f')][_0xfbef('0xa0')](_0x1766b9,{'transaction':_0x4f76e5});});}else{_0x2b42a3=0x194;_0x124f16=[];}});})[_0xfbef('0x36')](function(){if(_0x2b42a3!==0x194){return db[_0xfbef('0x7f')]['findAndCountAll']({'where':{'OpenchannelAccountId':_0x39f492},'order':_0xfbef('0x85')})[_0xfbef('0x36')](function(_0x37a16d){_0x124f16=_0x37a16d;});}})[_0xfbef('0x26')](function(_0x70eb95){_0x2b42a3=0x1f4;logger[_0xfbef('0x22')](_0x70eb95[_0xfbef('0x37')]);if(_0x70eb95[_0xfbef('0x38')]){delete _0x70eb95[_0xfbef('0x38')];}_0x124f16=_0x70eb95;})['finally'](function(){if(_0x124f16===null){_0x245e03[_0xfbef('0x27')](_0x2b42a3);}else{if(_0x2b42a3===0x1f4){_0x245e03[_0xfbef('0x28')](_0x2b42a3)[_0xfbef('0x39')](_0x124f16);}else{_0x245e03[_0xfbef('0x28')](_0x2b42a3)[_0xfbef('0x2a')](_0x124f16);}}});};exports[_0xfbef('0xa1')]=function(_0x3c5422,_0x56b295,_0x1f9d58){var _0x17b704={};var _0x2a1db8={};var _0xaba93f;var _0x55076c;return db[_0xfbef('0x3d')][_0xfbef('0x64')]({'where':{'id':_0x3c5422[_0xfbef('0x57')]['id']}})['then'](handleEntityNotFound(_0x56b295,null))[_0xfbef('0x36')](function(_0x489a00){if(_0x489a00){_0xaba93f=_0x489a00;_0x2a1db8[_0xfbef('0x42')]=_[_0xfbef('0x44')](db[_0xfbef('0x7f')][_0xfbef('0x3e')]);_0x2a1db8['query']=_[_0xfbef('0x44')](_0x3c5422[_0xfbef('0x43')]);_0x2a1db8['filters']=_[_0xfbef('0x46')](_0x2a1db8[_0xfbef('0x42')],_0x2a1db8[_0xfbef('0x43')]);_0x17b704[_0xfbef('0x48')]=_[_0xfbef('0x46')](_0x2a1db8['model'],qs[_0xfbef('0x47')](_0x3c5422['query']['fields']));_0x17b704[_0xfbef('0x48')]=_0x17b704[_0xfbef('0x48')][_0xfbef('0x49')]?_0x17b704[_0xfbef('0x48')]:_0x2a1db8[_0xfbef('0x42')];_0x17b704[_0xfbef('0x4b')]=qs['sort'](_0x3c5422[_0xfbef('0x43')][_0xfbef('0x4c')]);_0x17b704[_0xfbef('0x4f')]=qs[_0xfbef('0x45')](_[_0xfbef('0x4d')](_0x3c5422[_0xfbef('0x43')],_0x2a1db8[_0xfbef('0x45')]));if(_0x3c5422[_0xfbef('0x43')][_0xfbef('0x4e')]){_0x17b704[_0xfbef('0x4f')]=_[_0xfbef('0x51')](_0x17b704[_0xfbef('0x4f')],{'$or':_[_0xfbef('0x3c')](_0x17b704['attributes'],function(_0x24af1f){var _0x190c99={};_0x190c99[_0x24af1f]={'$like':'%'+_0x3c5422[_0xfbef('0x43')][_0xfbef('0x4e')]+'%'};return _0x190c99;})});}_0x17b704=_[_0xfbef('0x51')]({},_0x17b704,_0x3c5422[_0xfbef('0x68')]);return _0xaba93f[_0xfbef('0xa1')](_0x17b704);}})[_0xfbef('0x36')](function(_0x4bebdb){if(_0x4bebdb){_0x55076c=_0x4bebdb[_0xfbef('0x49')];if(!_0x3c5422[_0xfbef('0x43')]['hasOwnProperty']('nolimit')){_0x17b704[_0xfbef('0x2d')]=qs[_0xfbef('0x2d')](_0x3c5422[_0xfbef('0x43')]['limit']);_0x17b704[_0xfbef('0x2b')]=qs[_0xfbef('0x2b')](_0x3c5422['query'][_0xfbef('0x2b')]);}return _0xaba93f[_0xfbef('0xa1')](_0x17b704);}})[_0xfbef('0x36')](function(_0x5aa92c){if(_0x5aa92c){return _0x5aa92c?{'count':_0x55076c,'rows':_0x5aa92c}:null;}})[_0xfbef('0x36')](respondWithResult(_0x56b295,null))['catch'](handleError(_0x56b295,null));};exports['getInteractions']=function(_0x22a4e3,_0x85a2a7,_0x1ad31e){var _0x4976f9={'raw':![],'where':{}};var _0x2c5f60={};var _0x3df10f={'count':0x0,'rows':[]};return db['OpenchannelAccount']['findOne']({'where':{'id':_0x22a4e3[_0xfbef('0x57')]['id']}})[_0xfbef('0x36')](handleEntityNotFound(_0x85a2a7,null))[_0xfbef('0x36')](function(_0x55ab25){if(_0x55ab25){_0x2c5f60[_0xfbef('0x42')]=_[_0xfbef('0x44')](db['OpenchannelInteraction']['rawAttributes']);_0x2c5f60[_0xfbef('0x43')]=_[_0xfbef('0x44')](_0x22a4e3[_0xfbef('0x43')]);_0x2c5f60[_0xfbef('0x45')]=_[_0xfbef('0x46')](_0x2c5f60['model'],_0x2c5f60[_0xfbef('0x43')]);_0x4976f9[_0xfbef('0x48')]=_['intersection'](_0x2c5f60[_0xfbef('0x42')],qs[_0xfbef('0x47')](_0x22a4e3[_0xfbef('0x43')][_0xfbef('0x47')]));_0x4976f9['attributes']=_0x4976f9[_0xfbef('0x48')][_0xfbef('0x49')]?_0x4976f9[_0xfbef('0x48')]:_0x2c5f60[_0xfbef('0x42')];if(!_0x22a4e3[_0xfbef('0x43')][_0xfbef('0x66')](_0xfbef('0x4a'))){_0x4976f9[_0xfbef('0x2d')]=qs['limit'](_0x22a4e3[_0xfbef('0x43')][_0xfbef('0x2d')]);_0x4976f9['offset']=qs[_0xfbef('0x2b')](_0x22a4e3['query']['offset']);}_0x4976f9['order']=qs['sort'](_0x22a4e3[_0xfbef('0x43')][_0xfbef('0x4c')]);_0x4976f9[_0xfbef('0x4f')]=qs[_0xfbef('0x45')](_['pick'](_0x22a4e3[_0xfbef('0x43')],_0x2c5f60[_0xfbef('0x45')]));_0x4976f9[_0xfbef('0x4f')][_0xfbef('0x67')]=_0x55ab25['id'];if(_0x22a4e3[_0xfbef('0x43')][_0xfbef('0x4e')]){_0x4976f9['where']=_[_0xfbef('0x51')](_0x4976f9['where'],{'$or':_[_0xfbef('0x3c')](_0x4976f9[_0xfbef('0x48')],function(_0x4d73b5){var _0x3811a4={};_0x3811a4[_0x4d73b5]={'$like':'%'+_0x22a4e3[_0xfbef('0x43')][_0xfbef('0x4e')]+'%'};return _0x3811a4;})});}_0x4976f9=_[_0xfbef('0x51')]({},_0x4976f9,_0x22a4e3[_0xfbef('0x68')]);return db[_0xfbef('0x8b')][_0xfbef('0x2e')]({'where':_0x4976f9[_0xfbef('0x4f')]})[_0xfbef('0x36')](function(_0x49f146){_0x3df10f['count']=_0x49f146;if(_0x22a4e3[_0xfbef('0x43')][_0xfbef('0x52')]){_0x4976f9[_0xfbef('0x53')]=[{'model':db[_0xfbef('0x6f')],'as':_0xfbef('0xa2'),'required':![]},{'model':db[_0xfbef('0x96')],'as':_0xfbef('0xa3'),'attributes':[_0xfbef('0x38'),'fullname','internal'],'required':![]},{'model':db[_0xfbef('0xa4')],'as':_0xfbef('0xa5'),'attributes':['id',_0xfbef('0x38'),_0xfbef('0xa6')],'where':_0x22a4e3['query'][_0xfbef('0xa7')]?{'id':_0x22a4e3[_0xfbef('0x43')]['tag']}:undefined,'required':_0x22a4e3['query'][_0xfbef('0xa7')]?!![]:![]}];}return db[_0xfbef('0x8b')]['findAll'](_0x4976f9);})[_0xfbef('0x36')](function(_0x75267f){_0x3df10f[_0xfbef('0x55')]=_0x75267f;return _0x3df10f;});}})['then'](respondWithFilteredResult(_0x85a2a7,_0x4976f9))['catch'](handleError(_0x85a2a7,null));};exports[_0xfbef('0xa8')]=function(_0x1fb74b,_0x5c96ef,_0x3d4f83){return db[_0xfbef('0x3d')][_0xfbef('0x59')]({'where':{'id':_0x1fb74b[_0xfbef('0x57')]['id']}})[_0xfbef('0x36')](handleEntityNotFound(_0x5c96ef,null))[_0xfbef('0x36')](function(_0x356576){if(_0x356576){return _0x356576[_0xfbef('0xa8')](_0x1fb74b[_0xfbef('0x5b')][_0xfbef('0x6c')],_[_0xfbef('0xa9')](_0x1fb74b[_0xfbef('0x5b')],[_0xfbef('0x6c'),'id'])||{})[_0xfbef('0x8d')](function(_0x32f0fe){for(var _0x18ba43=0x0;_0x18ba43<_0x1fb74b[_0xfbef('0x5b')]['ids'][_0xfbef('0x49')];_0x18ba43+=0x1){socket['emit'](_0xfbef('0xaa'),{'UserId':Number(_0x1fb74b[_0xfbef('0x5b')][_0xfbef('0x6c')][_0x18ba43]),'OpenchannelAccountId':Number(_0x1fb74b[_0xfbef('0x57')]['id'])});}return _0x32f0fe;});}})['then'](respondWithResult(_0x5c96ef,null))[_0xfbef('0x26')](handleError(_0x5c96ef,null));};exports[_0xfbef('0xab')]=function(_0x46e546,_0x3445d3,_0x3407dc){return db[_0xfbef('0x3d')][_0xfbef('0x59')]({'where':{'id':_0x46e546[_0xfbef('0x57')]['id']}})[_0xfbef('0x36')](handleEntityNotFound(_0x3445d3,null))[_0xfbef('0x36')](function(_0x5519f5){if(_0x5519f5){return _0x5519f5[_0xfbef('0xab')](_0x46e546[_0xfbef('0x43')][_0xfbef('0x6c')])['then'](function(){if(_['isArray'](_0x46e546[_0xfbef('0x43')][_0xfbef('0x6c')])){for(var _0x3c6f59=0x0;_0x3c6f59<_0x46e546[_0xfbef('0x43')]['ids']['length'];_0x3c6f59+=0x1){socket[_0xfbef('0xac')](_0xfbef('0xad'),{'UserId':Number(_0x46e546[_0xfbef('0x43')][_0xfbef('0x6c')][_0x3c6f59]),'OpenchannelAccountId':Number(_0x46e546['params']['id'])});}}else{socket[_0xfbef('0xac')](_0xfbef('0xad'),{'UserId':Number(_0x46e546[_0xfbef('0x43')][_0xfbef('0x6c')]),'OpenchannelAccountId':Number(_0x46e546['params']['id'])});}});}})[_0xfbef('0x36')](respondWithStatusCode(_0x3445d3,null))[_0xfbef('0x26')](handleError(_0x3445d3,null));};exports[_0xfbef('0xae')]=function(_0x3c127c,_0x359d2e,_0x2ae1eb){var _0x286a5b={};var _0x4ebfde={};var _0xa3564c;var _0xe84558;return db[_0xfbef('0x3d')][_0xfbef('0x64')]({'where':{'id':_0x3c127c['params']['id']}})[_0xfbef('0x36')](handleEntityNotFound(_0x359d2e,null))[_0xfbef('0x36')](function(_0x361945){if(_0x361945){_0xa3564c=_0x361945;_0x4ebfde[_0xfbef('0x42')]=_['keys'](db[_0xfbef('0x96')][_0xfbef('0x3e')]);_0x4ebfde[_0xfbef('0x43')]=_[_0xfbef('0x44')](_0x3c127c[_0xfbef('0x43')]);_0x4ebfde[_0xfbef('0x45')]=_[_0xfbef('0x46')](_0x4ebfde[_0xfbef('0x42')],_0x4ebfde[_0xfbef('0x43')]);_0x286a5b[_0xfbef('0x48')]=_[_0xfbef('0x46')](_0x4ebfde[_0xfbef('0x42')],qs[_0xfbef('0x47')](_0x3c127c[_0xfbef('0x43')][_0xfbef('0x47')]));_0x286a5b[_0xfbef('0x48')]=_0x286a5b[_0xfbef('0x48')]['length']?_0x286a5b[_0xfbef('0x48')]:_0x4ebfde['model'];_0x286a5b[_0xfbef('0x4b')]=qs[_0xfbef('0x4c')](_0x3c127c[_0xfbef('0x43')][_0xfbef('0x4c')]);_0x286a5b[_0xfbef('0x4f')]=qs[_0xfbef('0x45')](_['pick'](_0x3c127c[_0xfbef('0x43')],_0x4ebfde[_0xfbef('0x45')]));if(_0x3c127c['query']['filter']){_0x286a5b[_0xfbef('0x4f')]=_[_0xfbef('0x51')](_0x286a5b[_0xfbef('0x4f')],{'$or':_[_0xfbef('0x3c')](_0x286a5b[_0xfbef('0x48')],function(_0x4fbc1c){var _0xd0bd3f={};_0xd0bd3f[_0x4fbc1c]={'$like':'%'+_0x3c127c[_0xfbef('0x43')][_0xfbef('0x4e')]+'%'};return _0xd0bd3f;})});}_0x286a5b=_['merge']({},_0x286a5b,_0x3c127c[_0xfbef('0x68')]);return _0xa3564c[_0xfbef('0xae')](_0x286a5b);}})['then'](function(_0x3221e5){if(_0x3221e5){_0xe84558=_0x3221e5[_0xfbef('0x49')];if(!_0x3c127c[_0xfbef('0x43')][_0xfbef('0x66')]('nolimit')){_0x286a5b[_0xfbef('0x2d')]=qs[_0xfbef('0x2d')](_0x3c127c[_0xfbef('0x43')][_0xfbef('0x2d')]);_0x286a5b[_0xfbef('0x2b')]=qs[_0xfbef('0x2b')](_0x3c127c['query'][_0xfbef('0x2b')]);}return _0xa3564c[_0xfbef('0xae')](_0x286a5b);}})[_0xfbef('0x36')](function(_0x131f26){if(_0x131f26){return _0x131f26?{'count':_0xe84558,'rows':_0x131f26}:null;}})[_0xfbef('0x36')](respondWithResult(_0x359d2e,null))['catch'](handleError(_0x359d2e,null));};exports[_0xfbef('0x39')]=function(_0x3a644c,_0x1781ea,_0x36a182){var _0x51c77f,_0x2130b4,_0x42fd04;if(_['isNil'](_0x3a644c[_0xfbef('0x5b')][_0xfbef('0x5b')])||_0x3a644c[_0xfbef('0x5b')]['body']===''){throw new db[(_0xfbef('0x70'))]['ValidationError']('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0xfbef('0x78')](_0x3a644c[_0xfbef('0x5b')]['to'])){}_0x51c77f=_0x3a644c['body']['to'];return db['OpenchannelAccount'][_0xfbef('0x64')]({'where':{'id':_0x3a644c[_0xfbef('0x57')]['id']}})[_0xfbef('0x36')](handleEntityNotFound(_0x1781ea,null))[_0xfbef('0x36')](function(_0x39d259){if(_0x39d259){return db[_0xfbef('0x3d')][_0xfbef('0x59')]({'where':{'id':_0x39d259['id']},'include':[{'model':db[_0xfbef('0x7d')],'as':_0xfbef('0x7e'),'include':[{'model':db[_0xfbef('0x6f')],'as':_0xfbef('0x87'),'where':{[_0x39d259[_0xfbef('0x7b')]]:_0x51c77f},'limit':0x1,'order':[[_0xfbef('0x73'),_0xfbef('0xaf')]]}]}]})['then'](handleEntityNotFound(_0x1781ea,null))[_0xfbef('0x36')](function(_0x301e73){if(_0x301e73&&_0x301e73[_0xfbef('0x7e')]){_0x2130b4=_0x301e73[_0xfbef('0x33')]({'plain':!![]});if(_0x2130b4[_0xfbef('0x7e')]&&_0x2130b4[_0xfbef('0x7e')]['Contacts'][_0xfbef('0x49')]){return _0x2130b4['List'][_0xfbef('0x87')][0x0];}return db['CmContact'][_0xfbef('0x5a')](_['defaults'](_0x3a644c['body'],{'firstName':_0x51c77f,[_0x301e73[_0xfbef('0x7b')]]:_0x51c77f,'phone':_0x51c77f,'ListId':_0x2130b4[_0xfbef('0x75')]}));}})[_0xfbef('0x36')](handleEntityNotFound(_0x1781ea,null))[_0xfbef('0x36')](function(_0x33d228){if(_0x33d228){_0x42fd04=_0x33d228;return db[_0xfbef('0x8b')][_0xfbef('0x59')]({'where':{'ContactId':_0x42fd04['id'],'closed':![],'OpenchannelAccountId':_0x2130b4['id']}})[_0xfbef('0x36')](function(_0x3f3660){if(_0x3f3660){return[_0x3f3660,![]];}return db['OpenchannelInteraction'][_0xfbef('0x5a')]({'UserId':_0x3a644c['user']['id'],'ContactId':_0x42fd04['id'],'OpenchannelAccountId':_0x2130b4['id'],'lastMsgDirection':_0xfbef('0xb0'),'firstMsgDirection':_0xfbef('0xb0'),'Messages':[_[_0xfbef('0x51')](_0x3a644c[_0xfbef('0x5b')],{'read':![],'body':_0x3a644c['body'][_0xfbef('0x5b')],'OpenchannelAccountId':_0x2130b4['id'],'UserId':_0x3a644c[_0xfbef('0x5c')]['id'],'ContactId':_0x42fd04['id']})]},{'include':[{'model':db[_0xfbef('0xb1')],'as':'Messages'}]})['then'](function(_0x173e1f){return[_0x173e1f,!![]];});});}})[_0xfbef('0x8d')](function(_0x1cd593,_0x10e699){if(_0x10e699){return _0x1cd593;}return db[_0xfbef('0xb1')][_0xfbef('0x5a')](_[_0xfbef('0x51')](_0x3a644c[_0xfbef('0x5b')],{'read':![],'body':_0x3a644c[_0xfbef('0x5b')]['body'],'OpenchannelAccountId':_0x2130b4['id'],'OpenchannelInteractionId':_0x1cd593['id'],'UserId':_0x3a644c['user']['id'],'ContactId':_0x42fd04['id']}))[_0xfbef('0x36')](function(_0x2aaebb){_0x1cd593[_0xfbef('0xb2')][_0xfbef('0xb3')]=[];_0x1cd593[_0xfbef('0xb2')][_0xfbef('0xb3')]['push'](_0x2aaebb[_0xfbef('0xb2')]);return _0x1cd593;});});}})[_0xfbef('0x36')](respondWithResult(_0x1781ea,null))[_0xfbef('0x26')](handleError(_0x1781ea,null));};
\ No newline at end of file
index 3155995..938edc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa88=['../../mysqldb','OpenchannelAccount','setMaxListeners','update','remove','hasOwnProperty','exports','events'];(function(_0x44f4ea,_0x328067){var _0x28bf57=function(_0x36f45e){while(--_0x36f45e){_0x44f4ea['push'](_0x44f4ea['shift']());}};_0x28bf57(++_0x328067);}(_0xaa88,0x137));var _0x8aa8=function(_0x2967c1,_0x202a72){_0x2967c1=_0x2967c1-0x0;var _0x103397=_0xaa88[_0x2967c1];return _0x103397;};'use strict';var EventEmitter=require(_0x8aa8('0x0'));var OpenchannelAccount=require(_0x8aa8('0x1'))['db'][_0x8aa8('0x2')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents[_0x8aa8('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x8aa8('0x4'),'afterDestroy':_0x8aa8('0x5')};function emitEvent(_0x43f7e4){return function(_0x3b2c88,_0x3e3b70,_0x350e8b){OpenchannelAccountEvents['emit'](_0x43f7e4+':'+_0x3b2c88['id'],_0x3b2c88);OpenchannelAccountEvents['emit'](_0x43f7e4,_0x3b2c88);_0x350e8b(null);};}for(var e in events){if(events[_0x8aa8('0x6')](e)){var event=events[e];OpenchannelAccount['hook'](e,emitEvent(event));}}module[_0x8aa8('0x7')]=OpenchannelAccountEvents;
\ No newline at end of file
+var _0x668b=['remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners','save'];(function(_0x1e17eb,_0x2e15c5){var _0x4de4c7=function(_0x52d003){while(--_0x52d003){_0x1e17eb['push'](_0x1e17eb['shift']());}};_0x4de4c7(++_0x2e15c5);}(_0x668b,0x140));var _0xb668=function(_0x179b53,_0x31f6fe){_0x179b53=_0x179b53-0x0;var _0x38a146=_0x668b[_0x179b53];return _0x38a146;};'use strict';var EventEmitter=require(_0xb668('0x0'));var OpenchannelAccount=require(_0xb668('0x1'))['db']['OpenchannelAccount'];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents[_0xb668('0x2')](0x0);var events={'afterCreate':_0xb668('0x3'),'afterUpdate':'update','afterDestroy':_0xb668('0x4')};function emitEvent(_0x5e2e83){return function(_0x2fab11,_0x4092a6,_0x2960f5){OpenchannelAccountEvents['emit'](_0x5e2e83+':'+_0x2fab11['id'],_0x2fab11);OpenchannelAccountEvents[_0xb668('0x5')](_0x5e2e83,_0x2fab11);_0x2960f5(null);};}for(var e in events){if(events[_0xb668('0x6')](e)){var event=events[e];OpenchannelAccount[_0xb668('0x7')](e,emitEvent(event));}}module[_0xb668('0x8')]=OpenchannelAccountEvents;
\ No newline at end of file
index 496216d..e8043ca 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(_0x1ab92c,_0x159d37){var _0x827dbf=function(_0x3792f0){while(--_0x3792f0){_0x1ab92c['push'](_0x1ab92c['shift']());}};_0x827dbf(++_0x159d37);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4fc9e6,_0xc51915){_0x4fc9e6=_0x4fc9e6-0x0;var _0x551d28=_0xa9e0[_0x4fc9e6];return _0x551d28;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var 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(_0x25e8f3,_0x17de7a){var _0x5da1c4=function(_0x14fce5){while(--_0x14fce5){_0x25e8f3['push'](_0x25e8f3['shift']());}};_0x5da1c4(++_0x17de7a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4fc9e6,_0xc51915){_0x4fc9e6=_0x4fc9e6-0x0;var _0x551d28=_0xa9e0[_0x4fc9e6];return _0x551d28;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var 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 9559c18..0ffafa8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6599=['request\x20sent','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','jayson/promise','client','http','redis','localhost','register','then','info','OpenchannelAccount,\x20%s,\x20%s'];(function(_0x785e75,_0x5ef8da){var _0x3c53c6=function(_0x58e145){while(--_0x58e145){_0x785e75['push'](_0x785e75['shift']());}};_0x3c53c6(++_0x5ef8da);}(_0x6599,0xb0));var _0x9659=function(_0xa60623,_0x2d4e4f){_0xa60623=_0xa60623-0x0;var _0x4a6487=_0x6599[_0xa60623];return _0x4a6487;};'use strict';var _=require('lodash');var util=require(_0x9659('0x0'));var moment=require(_0x9659('0x1'));var BPromise=require(_0x9659('0x2'));var rs=require(_0x9659('0x3'));var fs=require('fs');var Redis=require(_0x9659('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x9659('0x5'));var logger=require('../../config/logger')(_0x9659('0x6'));var config=require('../../config/environment');var jayson=require(_0x9659('0x7'));var client=jayson[_0x9659('0x8')][_0x9659('0x9')]({'port':0x232a});config['redis']=_['defaults'](config[_0x9659('0xa')],{'host':_0x9659('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9659('0xa')]));require('./openchannelAccount.socket')[_0x9659('0xc')](socket);function respondWithRpcPromise(_0x194d48,_0x58552a,_0x147cac){return new BPromise(function(_0x25a460,_0x349cfb){return client['request'](_0x194d48,_0x147cac)[_0x9659('0xd')](function(_0x520848){logger[_0x9659('0xe')](_0x9659('0xf'),_0x58552a,_0x9659('0x10'));logger['debug'](_0x9659('0x11'),_0x58552a,_0x9659('0x10'),JSON[_0x9659('0x12')](_0x520848));if(_0x520848[_0x9659('0x13')]){if(_0x520848[_0x9659('0x13')][_0x9659('0x14')]===0x1f4){logger[_0x9659('0x13')](_0x9659('0xf'),_0x58552a,_0x520848[_0x9659('0x13')][_0x9659('0x15')]);return _0x349cfb(_0x520848[_0x9659('0x13')][_0x9659('0x15')]);}logger[_0x9659('0x13')](_0x9659('0xf'),_0x58552a,_0x520848['error'][_0x9659('0x15')]);return _0x25a460(_0x520848[_0x9659('0x13')][_0x9659('0x15')]);}else{logger[_0x9659('0xe')](_0x9659('0xf'),_0x58552a,_0x9659('0x10'));_0x25a460(_0x520848[_0x9659('0x16')][_0x9659('0x15')]);}})[_0x9659('0x17')](function(_0x525d27){logger[_0x9659('0x13')](_0x9659('0xf'),_0x58552a,_0x525d27);_0x349cfb(_0x525d27);});});}
\ No newline at end of file
+var _0x51c5=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util'];(function(_0x16fb52,_0xd7d1bd){var _0x2bb121=function(_0x3d18ab){while(--_0x3d18ab){_0x16fb52['push'](_0x16fb52['shift']());}};_0x2bb121(++_0xd7d1bd);}(_0x51c5,0x8f));var _0x551c=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x51c5[_0x57b54c];return _0x59cc19;};'use strict';var _=require(_0x551c('0x0'));var util=require(_0x551c('0x1'));var moment=require(_0x551c('0x2'));var BPromise=require(_0x551c('0x3'));var rs=require(_0x551c('0x4'));var fs=require('fs');var Redis=require(_0x551c('0x5'));var db=require(_0x551c('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x551c('0x7'))(_0x551c('0x8'));var config=require(_0x551c('0x9'));var jayson=require(_0x551c('0xa'));var client=jayson[_0x551c('0xb')][_0x551c('0xc')]({'port':0x232a});config[_0x551c('0xd')]=_[_0x551c('0xe')](config['redis'],{'host':_0x551c('0xf'),'port':0x18eb});var socket=require(_0x551c('0x10'))(new Redis(config[_0x551c('0xd')]));require('./openchannelAccount.socket')[_0x551c('0x11')](socket);function respondWithRpcPromise(_0x5c0257,_0x5682ef,_0x5ed459){return new BPromise(function(_0x1a92a3,_0x5cad27){return client[_0x551c('0x12')](_0x5c0257,_0x5ed459)[_0x551c('0x13')](function(_0xe61359){logger[_0x551c('0x14')](_0x551c('0x15'),_0x5682ef,_0x551c('0x16'));logger['debug'](_0x551c('0x17'),_0x5682ef,_0x551c('0x16'),JSON[_0x551c('0x18')](_0xe61359));if(_0xe61359['error']){if(_0xe61359[_0x551c('0x19')][_0x551c('0x1a')]===0x1f4){logger['error'](_0x551c('0x15'),_0x5682ef,_0xe61359['error'][_0x551c('0x1b')]);return _0x5cad27(_0xe61359[_0x551c('0x19')][_0x551c('0x1b')]);}logger[_0x551c('0x19')]('OpenchannelAccount,\x20%s,\x20%s',_0x5682ef,_0xe61359['error'][_0x551c('0x1b')]);return _0x1a92a3(_0xe61359[_0x551c('0x19')]['message']);}else{logger[_0x551c('0x14')](_0x551c('0x15'),_0x5682ef,_0x551c('0x16'));_0x1a92a3(_0xe61359[_0x551c('0x1c')]['message']);}})['catch'](function(_0x491fec){logger[_0x551c('0x19')]('OpenchannelAccount,\x20%s,\x20%s',_0x5682ef,_0x491fec);_0x5cad27(_0x491fec);});});}
\ No newline at end of file
index 9283be1..ba3e7f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc03=['removeListener','register','openchannelAccount:','./openchannelAccount.events','remove','update','emit'];(function(_0x1a12c8,_0x2df4dc){var _0x305109=function(_0x438bfb){while(--_0x438bfb){_0x1a12c8['push'](_0x1a12c8['shift']());}};_0x305109(++_0x2df4dc);}(_0xfc03,0x16f));var _0x3fc0=function(_0x8a969d,_0x339d9f){_0x8a969d=_0x8a969d-0x0;var _0x1d8dc7=_0xfc03[_0x8a969d];return _0x1d8dc7;};'use strict';var OpenchannelAccountEvents=require(_0x3fc0('0x0'));var events=['save',_0x3fc0('0x1'),_0x3fc0('0x2')];function createListener(_0x4a3641,_0x39420d){return function(_0x47eb14){_0x39420d[_0x3fc0('0x3')](_0x4a3641,_0x47eb14);};}function removeListener(_0x1eeb62,_0x390f7e){return function(){OpenchannelAccountEvents[_0x3fc0('0x4')](_0x1eeb62,_0x390f7e);};}exports[_0x3fc0('0x5')]=function(_0x389bfb){for(var _0x2b4ef6=0x0,_0xeeb912=events['length'];_0x2b4ef6<_0xeeb912;_0x2b4ef6++){var _0x2fb1a6=events[_0x2b4ef6];var _0x5f52b5=createListener(_0x3fc0('0x6')+_0x2fb1a6,_0x389bfb);OpenchannelAccountEvents['on'](_0x2fb1a6,_0x5f52b5);}};
\ No newline at end of file
+var _0x6931=['./openchannelAccount.events','save','removeListener','length','openchannelAccount:'];(function(_0x479a46,_0x5e79a1){var _0x3638d5=function(_0x140317){while(--_0x140317){_0x479a46['push'](_0x479a46['shift']());}};_0x3638d5(++_0x5e79a1);}(_0x6931,0xa5));var _0x1693=function(_0x46d69c,_0x3cc674){_0x46d69c=_0x46d69c-0x0;var _0x4fd642=_0x6931[_0x46d69c];return _0x4fd642;};'use strict';var OpenchannelAccountEvents=require(_0x1693('0x0'));var events=[_0x1693('0x1'),'remove','update'];function createListener(_0x7828b9,_0x190052){return function(_0x37c53b){_0x190052['emit'](_0x7828b9,_0x37c53b);};}function removeListener(_0x1c8ac6,_0x3ea966){return function(){OpenchannelAccountEvents[_0x1693('0x2')](_0x1c8ac6,_0x3ea966);};}exports['register']=function(_0x361381){for(var _0x4bd166=0x0,_0x3594e0=events[_0x1693('0x3')];_0x4bd166<_0x3594e0;_0x4bd166++){var _0x328cfc=events[_0x4bd166];var _0x2ab0a0=createListener(_0x1693('0x4')+_0x328cfc,_0x361381);OpenchannelAccountEvents['on'](_0x328cfc,_0x2ab0a0);}};
\ No newline at end of file
index fbd95e2..9cf5187 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x182d=['put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','get','isAuthenticated','/:id','show','post','create'];(function(_0x5e271d,_0x3686a7){var _0x48160c=function(_0x252e76){while(--_0x252e76){_0x5e271d['push'](_0x5e271d['shift']());}};_0x48160c(++_0x3686a7);}(_0x182d,0x1ea));var _0xd182=function(_0x491588,_0x121652){_0x491588=_0x491588-0x0;var _0x5a6cd2=_0x182d[_0x491588];return _0x5a6cd2;};'use strict';var multer=require(_0xd182('0x0'));var util=require(_0xd182('0x1'));var path=require(_0xd182('0x2'));var timeout=require(_0xd182('0x3'));var express=require(_0xd182('0x4'));var router=express[_0xd182('0x5')]();var fs_extra=require(_0xd182('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xd182('0x7'));var config=require('../../config/environment');var controller=require('./openchannelApplication.controller');router[_0xd182('0x8')]('/',auth[_0xd182('0x9')](),controller['index']);router[_0xd182('0x8')](_0xd182('0xa'),auth[_0xd182('0x9')](),controller[_0xd182('0xb')]);router[_0xd182('0xc')]('/',auth[_0xd182('0x9')](),controller[_0xd182('0xd')]);router[_0xd182('0xe')](_0xd182('0xa'),auth['isAuthenticated'](),controller[_0xd182('0xf')]);router['delete'](_0xd182('0xa'),auth[_0xd182('0x9')](),controller[_0xd182('0x10')]);module[_0xd182('0x11')]=router;
\ No newline at end of file
+var _0x83a6=['/:id','update','delete','destroy','exports','multer','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelApplication.controller','get','isAuthenticated','index','show','post','create','put'];(function(_0x1f5d2f,_0x21f19e){var _0x4dbf1b=function(_0x406c9b){while(--_0x406c9b){_0x1f5d2f['push'](_0x1f5d2f['shift']());}};_0x4dbf1b(++_0x21f19e);}(_0x83a6,0xe1));var _0x683a=function(_0x2beabe,_0x399f59){_0x2beabe=_0x2beabe-0x0;var _0x1cc8cd=_0x83a6[_0x2beabe];return _0x1cc8cd;};'use strict';var multer=require(_0x683a('0x0'));var util=require('util');var path=require(_0x683a('0x1'));var timeout=require(_0x683a('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x683a('0x3'));var auth=require(_0x683a('0x4'));var interaction=require(_0x683a('0x5'));var config=require(_0x683a('0x6'));var controller=require(_0x683a('0x7'));router[_0x683a('0x8')]('/',auth[_0x683a('0x9')](),controller[_0x683a('0xa')]);router[_0x683a('0x8')]('/:id',auth[_0x683a('0x9')](),controller[_0x683a('0xb')]);router[_0x683a('0xc')]('/',auth[_0x683a('0x9')](),controller[_0x683a('0xd')]);router[_0x683a('0xe')](_0x683a('0xf'),auth[_0x683a('0x9')](),controller[_0x683a('0x10')]);router[_0x683a('0x11')]('/:id',auth[_0x683a('0x9')](),controller[_0x683a('0x12')]);module[_0x683a('0x13')]=router;
\ No newline at end of file
index c628ae2..c93135a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd9c=['TEXT','*,*,*,*','sequelize','exports','INTEGER','STRING','noop'];(function(_0x4a65a8,_0x366421){var _0x2c9cf0=function(_0x566395){while(--_0x566395){_0x4a65a8['push'](_0x4a65a8['shift']());}};_0x2c9cf0(++_0x366421);}(_0xbd9c,0x175));var _0xcbd9=function(_0x3a2e49,_0x21ebea){_0x3a2e49=_0x3a2e49-0x0;var _0x257140=_0xbd9c[_0x3a2e49];return _0x257140;};'use strict';var Sequelize=require(_0xcbd9('0x0'));module[_0xcbd9('0x1')]={'priority':{'type':Sequelize[_0xcbd9('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xcbd9('0x3')],'allowNull':![],'defaultValue':_0xcbd9('0x4')},'appdata':{'type':Sequelize[_0xcbd9('0x5')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize['STRING'],'defaultValue':_0xcbd9('0x6')}};
\ No newline at end of file
+var _0x2a26=['exports','INTEGER','STRING','noop','TEXT','sequelize'];(function(_0x2b965b,_0x227f85){var _0x35e5a3=function(_0x5dd30){while(--_0x5dd30){_0x2b965b['push'](_0x2b965b['shift']());}};_0x35e5a3(++_0x227f85);}(_0x2a26,0x19d));var _0x62a2=function(_0x5b7963,_0x10bff5){_0x5b7963=_0x5b7963-0x0;var _0x57f611=_0x2a26[_0x5b7963];return _0x57f611;};'use strict';var Sequelize=require(_0x62a2('0x0'));module[_0x62a2('0x1')]={'priority':{'type':Sequelize[_0x62a2('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x62a2('0x3')],'allowNull':![],'defaultValue':_0x62a2('0x4')},'appdata':{'type':Sequelize[_0x62a2('0x5')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x62a2('0x3')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index 28f7e16..a68a2e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85d0=['where','filter','merge','VIRTUAL','options','findAll','rows','show','params','catch','create','body','find','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','undefined','count','Content-Range','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','OpenchannelApplication','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort'];(function(_0x79ea32,_0x1d8ea0){var _0x42b0c1=function(_0x3e7c6c){while(--_0x3e7c6c){_0x79ea32['push'](_0x79ea32['shift']());}};_0x42b0c1(++_0x1d8ea0);}(_0x85d0,0xeb));var _0x085d=function(_0x2a319e,_0x2358e1){_0x2a319e=_0x2a319e-0x0;var _0x5dc35d=_0x85d0[_0x2a319e];return _0x5dc35d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x085d('0x0'));var zipdir=require(_0x085d('0x1'));var jsonpatch=require(_0x085d('0x2'));var rp=require('request-promise');var moment=require(_0x085d('0x3'));var BPromise=require(_0x085d('0x4'));var Mustache=require(_0x085d('0x5'));var util=require('util');var path=require(_0x085d('0x6'));var sox=require(_0x085d('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x085d('0x8'));var squel=require(_0x085d('0x9'));var crypto=require(_0x085d('0xa'));var jsforce=require(_0x085d('0xb'));var deskjs=require(_0x085d('0xc'));var toCsv=require(_0x085d('0xd'));var querystring=require(_0x085d('0xe'));var Papa=require(_0x085d('0xf'));var Redis=require(_0x085d('0x10'));var authService=require(_0x085d('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x085d('0x12'));var hardwareService=require(_0x085d('0x13'));var logger=require(_0x085d('0x14'))('api');var utils=require(_0x085d('0x15'));var config=require(_0x085d('0x16'));var licenseUtil=require(_0x085d('0x17'));var db=require(_0x085d('0x18'))['db'];function respondWithStatusCode(_0x252d62,_0x453311){_0x453311=_0x453311||0xcc;return function(_0xc5a9e3){if(_0xc5a9e3){return _0x252d62['sendStatus'](_0x453311);}return _0x252d62[_0x085d('0x19')](_0x453311)[_0x085d('0x1a')]();};}function respondWithResult(_0x3feee9,_0x206133){_0x206133=_0x206133||0xc8;return function(_0x57dc7b){if(_0x57dc7b){return _0x3feee9[_0x085d('0x19')](_0x206133)[_0x085d('0x1b')](_0x57dc7b);}};}function respondWithFilteredResult(_0x478bcd,_0x4440d5){return function(_0x3452cb){if(_0x3452cb){var _0x4a7a80=typeof _0x4440d5[_0x085d('0x1c')]==='undefined'&&typeof _0x4440d5[_0x085d('0x1d')]===_0x085d('0x1e');var _0x12e30f=_0x3452cb[_0x085d('0x1f')];var _0x35362c=_0x4a7a80?0x0:_0x4440d5[_0x085d('0x1c')];var _0x462fb2=_0x4a7a80?_0x3452cb['count']:_0x4440d5['offset']+_0x4440d5[_0x085d('0x1d')];var _0x40ab43;if(_0x462fb2>=_0x12e30f){_0x462fb2=_0x12e30f;_0x40ab43=0xc8;}else{_0x40ab43=0xce;}_0x478bcd[_0x085d('0x19')](_0x40ab43);return _0x478bcd['set'](_0x085d('0x20'),_0x35362c+'-'+_0x462fb2+'/'+_0x12e30f)[_0x085d('0x1b')](_0x3452cb);}return null;};}function patchUpdates(_0x1d4974){return function(_0x5dfc60){try{jsonpatch['apply'](_0x5dfc60,_0x1d4974,!![]);}catch(_0x4ef65c){return BPromise[_0x085d('0x21')](_0x4ef65c);}return _0x5dfc60[_0x085d('0x22')]();};}function saveUpdates(_0xef96e8,_0x9c33c1){return function(_0x2a88b2){if(_0x2a88b2){return _0x2a88b2[_0x085d('0x23')](_0xef96e8)[_0x085d('0x24')](function(_0x253c52){return _0x253c52;});}return null;};}function removeEntity(_0x4e228f,_0x1b3b96){return function(_0x1cfb0d){if(_0x1cfb0d){return _0x1cfb0d[_0x085d('0x25')]()[_0x085d('0x24')](function(){_0x4e228f[_0x085d('0x19')](0xcc)[_0x085d('0x1a')]();});}};}function handleEntityNotFound(_0x2899cb,_0x21adbd){return function(_0x3a4328){if(!_0x3a4328){_0x2899cb[_0x085d('0x26')](0x194);}return _0x3a4328;};}function handleError(_0x2f46f3,_0x2b3c73){_0x2b3c73=_0x2b3c73||0x1f4;return function(_0x51c95b){logger[_0x085d('0x27')](_0x51c95b[_0x085d('0x28')]);if(_0x51c95b['name']){delete _0x51c95b[_0x085d('0x29')];}_0x2f46f3[_0x085d('0x19')](_0x2b3c73)[_0x085d('0x2a')](_0x51c95b);};}exports[_0x085d('0x2b')]=function(_0x2e3e8d,_0x143612){var _0x1447a5={},_0x16ccbb={},_0x1a792a={'count':0x0,'rows':[]};var _0x581a82=_[_0x085d('0x2c')](db[_0x085d('0x2d')][_0x085d('0x2e')],function(_0x22395e){return{'name':_0x22395e['fieldName'],'type':_0x22395e[_0x085d('0x2f')][_0x085d('0x30')]};});_0x16ccbb[_0x085d('0x31')]=_[_0x085d('0x2c')](_0x581a82,_0x085d('0x29'));_0x16ccbb[_0x085d('0x32')]=_[_0x085d('0x33')](_0x2e3e8d['query']);_0x16ccbb[_0x085d('0x34')]=_[_0x085d('0x35')](_0x16ccbb[_0x085d('0x31')],_0x16ccbb['query']);_0x1447a5[_0x085d('0x36')]=_['intersection'](_0x16ccbb[_0x085d('0x31')],qs['fields'](_0x2e3e8d['query'][_0x085d('0x37')]));_0x1447a5['attributes']=_0x1447a5[_0x085d('0x36')][_0x085d('0x38')]?_0x1447a5[_0x085d('0x36')]:_0x16ccbb[_0x085d('0x31')];if(!_0x2e3e8d[_0x085d('0x32')][_0x085d('0x39')](_0x085d('0x3a'))){_0x1447a5[_0x085d('0x1d')]=qs[_0x085d('0x1d')](_0x2e3e8d['query'][_0x085d('0x1d')]);_0x1447a5[_0x085d('0x1c')]=qs['offset'](_0x2e3e8d[_0x085d('0x32')][_0x085d('0x1c')]);}_0x1447a5[_0x085d('0x3b')]=qs[_0x085d('0x3c')](_0x2e3e8d['query'][_0x085d('0x3c')]);_0x1447a5[_0x085d('0x3d')]=qs[_0x085d('0x34')](_['pick'](_0x2e3e8d[_0x085d('0x32')],_0x16ccbb['filters']),_0x581a82);if(_0x2e3e8d[_0x085d('0x32')][_0x085d('0x3e')]){_0x1447a5['where']=_[_0x085d('0x3f')](_0x1447a5['where'],{'$or':_[_0x085d('0x2c')](_0x581a82,function(_0x5e6b61){if(_0x5e6b61['type']!==_0x085d('0x40')){var _0xeb972c={};_0xeb972c[_0x5e6b61[_0x085d('0x29')]]={'$like':'%'+_0x2e3e8d[_0x085d('0x32')][_0x085d('0x3e')]+'%'};return _0xeb972c;}})});}_0x1447a5=_[_0x085d('0x3f')]({},_0x1447a5,_0x2e3e8d[_0x085d('0x41')]);var _0x10f22a={'where':_0x1447a5[_0x085d('0x3d')]};return db['OpenchannelApplication'][_0x085d('0x1f')](_0x10f22a)[_0x085d('0x24')](function(_0x51fe08){_0x1a792a['count']=_0x51fe08;if(_0x2e3e8d[_0x085d('0x32')]['includeAll']){_0x1447a5['include']=[{'all':!![]}];}return db['OpenchannelApplication'][_0x085d('0x42')](_0x1447a5);})[_0x085d('0x24')](function(_0x3fbb3b){_0x1a792a[_0x085d('0x43')]=_0x3fbb3b;return _0x1a792a;})['then'](respondWithFilteredResult(_0x143612,_0x1447a5))['catch'](handleError(_0x143612,null));};exports[_0x085d('0x44')]=function(_0x41d7fe,_0xc3ce84){var _0x24df30={'raw':!![],'where':{'id':_0x41d7fe[_0x085d('0x45')]['id']}},_0x41eff4={};_0x41eff4['model']=_[_0x085d('0x33')](db[_0x085d('0x2d')][_0x085d('0x2e')]);_0x41eff4[_0x085d('0x32')]=_[_0x085d('0x33')](_0x41d7fe['query']);_0x41eff4[_0x085d('0x34')]=_[_0x085d('0x35')](_0x41eff4[_0x085d('0x31')],_0x41eff4[_0x085d('0x32')]);_0x24df30[_0x085d('0x36')]=_['intersection'](_0x41eff4['model'],qs['fields'](_0x41d7fe[_0x085d('0x32')]['fields']));_0x24df30['attributes']=_0x24df30[_0x085d('0x36')]['length']?_0x24df30['attributes']:_0x41eff4[_0x085d('0x31')];if(_0x41d7fe['query']['includeAll']){_0x24df30['include']=[{'all':!![]}];}_0x24df30=_[_0x085d('0x3f')]({},_0x24df30,_0x41d7fe[_0x085d('0x41')]);return db[_0x085d('0x2d')]['find'](_0x24df30)[_0x085d('0x24')](handleEntityNotFound(_0xc3ce84,null))[_0x085d('0x24')](respondWithResult(_0xc3ce84,null))[_0x085d('0x46')](handleError(_0xc3ce84,null));};exports[_0x085d('0x47')]=function(_0x49b4d5,_0x594853){return db[_0x085d('0x2d')][_0x085d('0x47')](_0x49b4d5[_0x085d('0x48')],{})[_0x085d('0x24')](respondWithResult(_0x594853,0xc9))[_0x085d('0x46')](handleError(_0x594853,null));};exports[_0x085d('0x23')]=function(_0x29a0a1,_0x817e32){if(_0x29a0a1[_0x085d('0x48')]['id']){delete _0x29a0a1[_0x085d('0x48')]['id'];}return db[_0x085d('0x2d')][_0x085d('0x49')]({'where':{'id':_0x29a0a1[_0x085d('0x45')]['id']}})['then'](handleEntityNotFound(_0x817e32,null))[_0x085d('0x24')](saveUpdates(_0x29a0a1['body'],null))[_0x085d('0x24')](respondWithResult(_0x817e32,null))[_0x085d('0x46')](handleError(_0x817e32,null));};exports[_0x085d('0x25')]=function(_0x1046b2,_0x5cf72e){return db[_0x085d('0x2d')][_0x085d('0x49')]({'where':{'id':_0x1046b2[_0x085d('0x45')]['id']}})[_0x085d('0x24')](handleEntityNotFound(_0x5cf72e,null))['then'](removeEntity(_0x5cf72e,null))[_0x085d('0x46')](handleError(_0x5cf72e,null));};
\ No newline at end of file
+var _0x99bd=['api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','set','save','update','destroy','then','end','error','name','index','map','OpenchannelApplication','rawAttributes','fieldName','key','model','keys','query','filters','intersection','attributes','fields','length','nolimit','sort','where','filter','merge','VIRTUAL','options','count','includeAll','include','findAll','rows','catch','show','params','find','create','body','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','sox','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x21aec3,_0x5c97e9){var _0x288bbc=function(_0x2283fe){while(--_0x2283fe){_0x21aec3['push'](_0x21aec3['shift']());}};_0x288bbc(++_0x5c97e9);}(_0x99bd,0x1ca));var _0xd99b=function(_0x485b5a,_0x2b289b){_0x485b5a=_0x485b5a-0x0;var _0xd2b34d=_0x99bd[_0x485b5a];return _0xd2b34d;};'use strict';var emlformat=require(_0xd99b('0x0'));var rimraf=require(_0xd99b('0x1'));var zipdir=require(_0xd99b('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xd99b('0x3'));var moment=require('moment');var BPromise=require(_0xd99b('0x4'));var Mustache=require(_0xd99b('0x5'));var util=require(_0xd99b('0x6'));var path=require('path');var sox=require(_0xd99b('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd99b('0x8'));var squel=require('squel');var crypto=require(_0xd99b('0x9'));var jsforce=require(_0xd99b('0xa'));var deskjs=require(_0xd99b('0xb'));var toCsv=require(_0xd99b('0xc'));var querystring=require(_0xd99b('0xd'));var Papa=require(_0xd99b('0xe'));var Redis=require(_0xd99b('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xd99b('0x10'));var hardwareService=require(_0xd99b('0x11'));var logger=require('../../config/logger')(_0xd99b('0x12'));var utils=require(_0xd99b('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xd99b('0x14'));var db=require(_0xd99b('0x15'))['db'];function respondWithStatusCode(_0x54b1c9,_0x47f199){_0x47f199=_0x47f199||0xcc;return function(_0x531c31){if(_0x531c31){return _0x54b1c9[_0xd99b('0x16')](_0x47f199);}return _0x54b1c9[_0xd99b('0x17')](_0x47f199)['end']();};}function respondWithResult(_0x3e4296,_0x20c554){_0x20c554=_0x20c554||0xc8;return function(_0x39c437){if(_0x39c437){return _0x3e4296[_0xd99b('0x17')](_0x20c554)[_0xd99b('0x18')](_0x39c437);}};}function respondWithFilteredResult(_0x60f2da,_0x3a4d8f){return function(_0x2de586){if(_0x2de586){var _0x5e533a=typeof _0x3a4d8f[_0xd99b('0x19')]===_0xd99b('0x1a')&&typeof _0x3a4d8f[_0xd99b('0x1b')]===_0xd99b('0x1a');var _0x43817c=_0x2de586['count'];var _0x4b3e49=_0x5e533a?0x0:_0x3a4d8f[_0xd99b('0x19')];var _0x2dc000=_0x5e533a?_0x2de586['count']:_0x3a4d8f[_0xd99b('0x19')]+_0x3a4d8f['limit'];var _0x127a1f;if(_0x2dc000>=_0x43817c){_0x2dc000=_0x43817c;_0x127a1f=0xc8;}else{_0x127a1f=0xce;}_0x60f2da[_0xd99b('0x17')](_0x127a1f);return _0x60f2da[_0xd99b('0x1c')]('Content-Range',_0x4b3e49+'-'+_0x2dc000+'/'+_0x43817c)[_0xd99b('0x18')](_0x2de586);}return null;};}function patchUpdates(_0x131243){return function(_0x39f7e7){try{jsonpatch['apply'](_0x39f7e7,_0x131243,!![]);}catch(_0x3795c9){return BPromise['reject'](_0x3795c9);}return _0x39f7e7[_0xd99b('0x1d')]();};}function saveUpdates(_0x3bf247,_0x4edc9d){return function(_0x4f24bd){if(_0x4f24bd){return _0x4f24bd[_0xd99b('0x1e')](_0x3bf247)['then'](function(_0x4e517a){return _0x4e517a;});}return null;};}function removeEntity(_0x269644,_0x25d7ed){return function(_0x24e252){if(_0x24e252){return _0x24e252[_0xd99b('0x1f')]()[_0xd99b('0x20')](function(){_0x269644[_0xd99b('0x17')](0xcc)[_0xd99b('0x21')]();});}};}function handleEntityNotFound(_0x35faa9,_0x40cf4b){return function(_0x4386fd){if(!_0x4386fd){_0x35faa9['sendStatus'](0x194);}return _0x4386fd;};}function handleError(_0x39573e,_0x487233){_0x487233=_0x487233||0x1f4;return function(_0x1d63ac){logger[_0xd99b('0x22')](_0x1d63ac['stack']);if(_0x1d63ac['name']){delete _0x1d63ac[_0xd99b('0x23')];}_0x39573e[_0xd99b('0x17')](_0x487233)['send'](_0x1d63ac);};}exports[_0xd99b('0x24')]=function(_0x127ff2,_0x268c1c){var _0x293acd={},_0x4a9690={},_0x30514f={'count':0x0,'rows':[]};var _0x579cc5=_[_0xd99b('0x25')](db[_0xd99b('0x26')][_0xd99b('0x27')],function(_0x188bcd){return{'name':_0x188bcd[_0xd99b('0x28')],'type':_0x188bcd['type'][_0xd99b('0x29')]};});_0x4a9690[_0xd99b('0x2a')]=_[_0xd99b('0x25')](_0x579cc5,_0xd99b('0x23'));_0x4a9690['query']=_[_0xd99b('0x2b')](_0x127ff2[_0xd99b('0x2c')]);_0x4a9690[_0xd99b('0x2d')]=_[_0xd99b('0x2e')](_0x4a9690['model'],_0x4a9690[_0xd99b('0x2c')]);_0x293acd[_0xd99b('0x2f')]=_[_0xd99b('0x2e')](_0x4a9690['model'],qs[_0xd99b('0x30')](_0x127ff2['query']['fields']));_0x293acd[_0xd99b('0x2f')]=_0x293acd[_0xd99b('0x2f')][_0xd99b('0x31')]?_0x293acd[_0xd99b('0x2f')]:_0x4a9690[_0xd99b('0x2a')];if(!_0x127ff2['query']['hasOwnProperty'](_0xd99b('0x32'))){_0x293acd[_0xd99b('0x1b')]=qs[_0xd99b('0x1b')](_0x127ff2['query'][_0xd99b('0x1b')]);_0x293acd['offset']=qs['offset'](_0x127ff2[_0xd99b('0x2c')][_0xd99b('0x19')]);}_0x293acd['order']=qs[_0xd99b('0x33')](_0x127ff2[_0xd99b('0x2c')]['sort']);_0x293acd[_0xd99b('0x34')]=qs[_0xd99b('0x2d')](_['pick'](_0x127ff2[_0xd99b('0x2c')],_0x4a9690['filters']),_0x579cc5);if(_0x127ff2[_0xd99b('0x2c')][_0xd99b('0x35')]){_0x293acd[_0xd99b('0x34')]=_[_0xd99b('0x36')](_0x293acd[_0xd99b('0x34')],{'$or':_[_0xd99b('0x25')](_0x579cc5,function(_0x1818d0){if(_0x1818d0['type']!==_0xd99b('0x37')){var _0x37129a={};_0x37129a[_0x1818d0[_0xd99b('0x23')]]={'$like':'%'+_0x127ff2[_0xd99b('0x2c')]['filter']+'%'};return _0x37129a;}})});}_0x293acd=_['merge']({},_0x293acd,_0x127ff2[_0xd99b('0x38')]);var _0x45ec3d={'where':_0x293acd['where']};return db[_0xd99b('0x26')][_0xd99b('0x39')](_0x45ec3d)[_0xd99b('0x20')](function(_0x1e0fd7){_0x30514f[_0xd99b('0x39')]=_0x1e0fd7;if(_0x127ff2[_0xd99b('0x2c')][_0xd99b('0x3a')]){_0x293acd[_0xd99b('0x3b')]=[{'all':!![]}];}return db['OpenchannelApplication'][_0xd99b('0x3c')](_0x293acd);})[_0xd99b('0x20')](function(_0x48efa2){_0x30514f[_0xd99b('0x3d')]=_0x48efa2;return _0x30514f;})[_0xd99b('0x20')](respondWithFilteredResult(_0x268c1c,_0x293acd))[_0xd99b('0x3e')](handleError(_0x268c1c,null));};exports[_0xd99b('0x3f')]=function(_0xf6933,_0x23ef67){var _0x18a1dd={'raw':!![],'where':{'id':_0xf6933[_0xd99b('0x40')]['id']}},_0x266a10={};_0x266a10[_0xd99b('0x2a')]=_[_0xd99b('0x2b')](db['OpenchannelApplication'][_0xd99b('0x27')]);_0x266a10[_0xd99b('0x2c')]=_[_0xd99b('0x2b')](_0xf6933[_0xd99b('0x2c')]);_0x266a10[_0xd99b('0x2d')]=_[_0xd99b('0x2e')](_0x266a10[_0xd99b('0x2a')],_0x266a10[_0xd99b('0x2c')]);_0x18a1dd[_0xd99b('0x2f')]=_[_0xd99b('0x2e')](_0x266a10[_0xd99b('0x2a')],qs['fields'](_0xf6933[_0xd99b('0x2c')][_0xd99b('0x30')]));_0x18a1dd['attributes']=_0x18a1dd[_0xd99b('0x2f')][_0xd99b('0x31')]?_0x18a1dd['attributes']:_0x266a10[_0xd99b('0x2a')];if(_0xf6933[_0xd99b('0x2c')][_0xd99b('0x3a')]){_0x18a1dd[_0xd99b('0x3b')]=[{'all':!![]}];}_0x18a1dd=_[_0xd99b('0x36')]({},_0x18a1dd,_0xf6933[_0xd99b('0x38')]);return db['OpenchannelApplication'][_0xd99b('0x41')](_0x18a1dd)[_0xd99b('0x20')](handleEntityNotFound(_0x23ef67,null))[_0xd99b('0x20')](respondWithResult(_0x23ef67,null))[_0xd99b('0x3e')](handleError(_0x23ef67,null));};exports[_0xd99b('0x42')]=function(_0x4913cc,_0x46d2ec){return db['OpenchannelApplication'][_0xd99b('0x42')](_0x4913cc[_0xd99b('0x43')],{})[_0xd99b('0x20')](respondWithResult(_0x46d2ec,0xc9))[_0xd99b('0x3e')](handleError(_0x46d2ec,null));};exports[_0xd99b('0x1e')]=function(_0x8c73c,_0x1b41b4){if(_0x8c73c[_0xd99b('0x43')]['id']){delete _0x8c73c[_0xd99b('0x43')]['id'];}return db[_0xd99b('0x26')][_0xd99b('0x41')]({'where':{'id':_0x8c73c[_0xd99b('0x40')]['id']}})[_0xd99b('0x20')](handleEntityNotFound(_0x1b41b4,null))['then'](saveUpdates(_0x8c73c[_0xd99b('0x43')],null))[_0xd99b('0x20')](respondWithResult(_0x1b41b4,null))['catch'](handleError(_0x1b41b4,null));};exports['destroy']=function(_0x593fb9,_0xaf95a5){return db[_0xd99b('0x26')][_0xd99b('0x41')]({'where':{'id':_0x593fb9[_0xd99b('0x40')]['id']}})[_0xd99b('0x20')](handleEntityNotFound(_0xaf95a5,null))[_0xd99b('0x20')](removeEntity(_0xaf95a5,null))[_0xd99b('0x3e')](handleError(_0xaf95a5,null));};
\ No newline at end of file
index b97c357..e2a8642 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa318=['exports','define','OpenchannelApplication','lodash','util','../../config/logger','moment','request-promise','rimraf','../../config/environment','./openchannelApplication.attributes'];(function(_0x1db251,_0xf0443d){var _0x56685a=function(_0x6ec6b7){while(--_0x6ec6b7){_0x1db251['push'](_0x1db251['shift']());}};_0x56685a(++_0xf0443d);}(_0xa318,0x7c));var _0x8a31=function(_0x378b0b,_0x5eaf1a){_0x378b0b=_0x378b0b-0x0;var _0x1d19ad=_0xa318[_0x378b0b];return _0x1d19ad;};'use strict';var _=require(_0x8a31('0x0'));var util=require(_0x8a31('0x1'));var logger=require(_0x8a31('0x2'))('api');var moment=require(_0x8a31('0x3'));var BPromise=require('bluebird');var rp=require(_0x8a31('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8a31('0x5'));var config=require(_0x8a31('0x6'));var attributes=require(_0x8a31('0x7'));module[_0x8a31('0x8')]=function(_0x316838,_0x3d1e7a){return _0x316838[_0x8a31('0x9')](_0x8a31('0xa'),attributes,{'tableName':'openchannel_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x151a=['exports','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x24aa5c,_0x4ee4d3){var _0x19eb18=function(_0xf3b56b){while(--_0xf3b56b){_0x24aa5c['push'](_0x24aa5c['shift']());}};_0x19eb18(++_0x4ee4d3);}(_0x151a,0xff));var _0xa151=function(_0xa96436,_0x656eb1){_0xa96436=_0xa96436-0x0;var _0x310513=_0x151a[_0xa96436];return _0x310513;};'use strict';var _=require(_0xa151('0x0'));var util=require(_0xa151('0x1'));var logger=require(_0xa151('0x2'))(_0xa151('0x3'));var moment=require(_0xa151('0x4'));var BPromise=require('bluebird');var rp=require(_0xa151('0x5'));var fs=require('fs');var path=require(_0xa151('0x6'));var rimraf=require(_0xa151('0x7'));var config=require(_0xa151('0x8'));var attributes=require('./openchannelApplication.attributes');module[_0xa151('0x9')]=function(_0x5c581d,_0xbd4b1b){return _0x5c581d['define']('OpenchannelApplication',attributes,{'tableName':'openchannel_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xa151('0xa'),'collate':_0xa151('0xb')});};
\ No newline at end of file
index ab2865f..9f343ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3736=['result','catch','OpenchannelApplication','update','body','options','raw','where','attributes','UpdateOpenchannelApplication','bluebird','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','OpenchannelApplication,\x20%s,\x20%s','message'];(function(_0x15f6a0,_0x5b34fc){var _0x10f8c7=function(_0x5b7d95){while(--_0x5b7d95){_0x15f6a0['push'](_0x15f6a0['shift']());}};_0x10f8c7(++_0x5b34fc);}(_0x3736,0xe2));var _0x6373=function(_0x4e78c0,_0x2d4fbf){_0x4e78c0=_0x4e78c0-0x0;var _0x1d832c=_0x3736[_0x4e78c0];return _0x1d832c;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x6373('0x0'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6373('0x1'));var db=require('../../mysqldb')['db'];var utils=require(_0x6373('0x2'));var logger=require('../../config/logger')(_0x6373('0x3'));var config=require(_0x6373('0x4'));var jayson=require(_0x6373('0x5'));var client=jayson[_0x6373('0x6')][_0x6373('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x2745f8,_0x1987c,_0x3e3591){return new BPromise(function(_0x3a431b,_0xedcdf9){return client[_0x6373('0x8')](_0x2745f8,_0x3e3591)[_0x6373('0x9')](function(_0x5ee0de){logger[_0x6373('0xa')]('OpenchannelApplication,\x20%s,\x20%s',_0x1987c,_0x6373('0xb'));logger[_0x6373('0xc')]('OpenchannelApplication,\x20%s,\x20%s,\x20%s',_0x1987c,_0x6373('0xb'),JSON[_0x6373('0xd')](_0x5ee0de));if(_0x5ee0de[_0x6373('0xe')]){if(_0x5ee0de[_0x6373('0xe')]['code']===0x1f4){logger['error'](_0x6373('0xf'),_0x1987c,_0x5ee0de[_0x6373('0xe')][_0x6373('0x10')]);return _0xedcdf9(_0x5ee0de[_0x6373('0xe')][_0x6373('0x10')]);}logger['error'](_0x6373('0xf'),_0x1987c,_0x5ee0de[_0x6373('0xe')][_0x6373('0x10')]);return _0x3a431b(_0x5ee0de[_0x6373('0xe')][_0x6373('0x10')]);}else{logger[_0x6373('0xa')](_0x6373('0xf'),_0x1987c,'request\x20sent');_0x3a431b(_0x5ee0de[_0x6373('0x11')]['message']);}})[_0x6373('0x12')](function(_0x2ed2b9){logger[_0x6373('0xe')](_0x6373('0xf'),_0x1987c,_0x2ed2b9);_0xedcdf9(_0x2ed2b9);});});}exports['UpdateOpenchannelApplication']=function(_0x2cd224){var _0x59b1ec=this;return new Promise(function(_0x1d0be1,_0x2cbc45){return db[_0x6373('0x13')][_0x6373('0x14')](_0x2cd224[_0x6373('0x15')],{'raw':_0x2cd224['options']?_0x2cd224[_0x6373('0x16')][_0x6373('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2cd224[_0x6373('0x16')]?_0x2cd224[_0x6373('0x16')][_0x6373('0x18')]||null:null,'attributes':_0x2cd224[_0x6373('0x16')]?_0x2cd224[_0x6373('0x16')][_0x6373('0x19')]||null:null,'limit':_0x2cd224['options']?_0x2cd224[_0x6373('0x16')]['limit']||null:null})[_0x6373('0x9')](function(_0x13f2a6){logger[_0x6373('0xa')](_0x6373('0x1a'),_0x2cd224);logger[_0x6373('0xc')](_0x6373('0x1a'),_0x2cd224,JSON[_0x6373('0xd')](_0x13f2a6));_0x1d0be1(_0x13f2a6);})[_0x6373('0x12')](function(_0x3f82c3){logger[_0x6373('0xe')](_0x6373('0x1a'),_0x3f82c3[_0x6373('0x10')],_0x2cd224);_0x2cbc45(_0x59b1ec[_0x6373('0xe')](0x1f4,_0x3f82c3[_0x6373('0x10')]));});});};
\ No newline at end of file
+var _0x5a66=['request\x20sent','OpenchannelApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','UpdateOpenchannelApplication','OpenchannelApplication','update','body','options','raw','where','attributes','limit','catch','lodash','util','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','info','OpenchannelApplication,\x20%s,\x20%s'];(function(_0x575057,_0x14baf3){var _0x49dbc8=function(_0x23599a){while(--_0x23599a){_0x575057['push'](_0x575057['shift']());}};_0x49dbc8(++_0x14baf3);}(_0x5a66,0x15b));var _0x65a6=function(_0x4e6766,_0x43c16a){_0x4e6766=_0x4e6766-0x0;var _0x13fc37=_0x5a66[_0x4e6766];return _0x13fc37;};'use strict';var _=require(_0x65a6('0x0'));var util=require(_0x65a6('0x1'));var moment=require('moment');var BPromise=require(_0x65a6('0x2'));var rs=require(_0x65a6('0x3'));var fs=require('fs');var Redis=require(_0x65a6('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x65a6('0x5'))(_0x65a6('0x6'));var config=require(_0x65a6('0x7'));var jayson=require(_0x65a6('0x8'));var client=jayson['client'][_0x65a6('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x20e94e,_0x3881e6,_0x7a7246){return new BPromise(function(_0x4ecdb6,_0x33bc7b){return client['request'](_0x20e94e,_0x7a7246)[_0x65a6('0xa')](function(_0x1fc0b1){logger[_0x65a6('0xb')](_0x65a6('0xc'),_0x3881e6,_0x65a6('0xd'));logger['debug'](_0x65a6('0xe'),_0x3881e6,_0x65a6('0xd'),JSON[_0x65a6('0xf')](_0x1fc0b1));if(_0x1fc0b1[_0x65a6('0x10')]){if(_0x1fc0b1[_0x65a6('0x10')][_0x65a6('0x11')]===0x1f4){logger[_0x65a6('0x10')](_0x65a6('0xc'),_0x3881e6,_0x1fc0b1[_0x65a6('0x10')][_0x65a6('0x12')]);return _0x33bc7b(_0x1fc0b1[_0x65a6('0x10')][_0x65a6('0x12')]);}logger['error'](_0x65a6('0xc'),_0x3881e6,_0x1fc0b1[_0x65a6('0x10')][_0x65a6('0x12')]);return _0x4ecdb6(_0x1fc0b1[_0x65a6('0x10')][_0x65a6('0x12')]);}else{logger[_0x65a6('0xb')](_0x65a6('0xc'),_0x3881e6,_0x65a6('0xd'));_0x4ecdb6(_0x1fc0b1[_0x65a6('0x13')][_0x65a6('0x12')]);}})['catch'](function(_0x32b146){logger[_0x65a6('0x10')](_0x65a6('0xc'),_0x3881e6,_0x32b146);_0x33bc7b(_0x32b146);});});}exports[_0x65a6('0x14')]=function(_0x4bc2db){var _0x17d26c=this;return new Promise(function(_0x172772,_0x26fe31){return db[_0x65a6('0x15')][_0x65a6('0x16')](_0x4bc2db[_0x65a6('0x17')],{'raw':_0x4bc2db[_0x65a6('0x18')]?_0x4bc2db['options'][_0x65a6('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4bc2db['options']?_0x4bc2db[_0x65a6('0x18')][_0x65a6('0x1a')]||null:null,'attributes':_0x4bc2db['options']?_0x4bc2db[_0x65a6('0x18')][_0x65a6('0x1b')]||null:null,'limit':_0x4bc2db[_0x65a6('0x18')]?_0x4bc2db[_0x65a6('0x18')][_0x65a6('0x1c')]||null:null})[_0x65a6('0xa')](function(_0x4c2d83){logger[_0x65a6('0xb')]('UpdateOpenchannelApplication',_0x4bc2db);logger['debug'](_0x65a6('0x14'),_0x4bc2db,JSON[_0x65a6('0xf')](_0x4c2d83));_0x172772(_0x4c2d83);})[_0x65a6('0x1d')](function(_0x3d909a){logger['error'](_0x65a6('0x14'),_0x3d909a[_0x65a6('0x12')],_0x4bc2db);_0x26fe31(_0x17d26c[_0x65a6('0x10')](0x1f4,_0x3d909a[_0x65a6('0x12')]));});});};
\ No newline at end of file
index 9f35c94..23664ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x414e=['multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./openchannelInteraction.controller','isAuthenticated','index','get','/describe','describe','/:id','show','/:id/messages','getMessages','/:id/download','post','create','/:id/tags','addTags','openchannel','openchannelinteraction:update','update','tracked','openchannelinteraction:destroy','destroy','delete','removeTags','exports'];(function(_0x2892da,_0x191a40){var _0x28cff2=function(_0x57023d){while(--_0x57023d){_0x2892da['push'](_0x2892da['shift']());}};_0x28cff2(++_0x191a40);}(_0x414e,0xd9));var _0xe414=function(_0x40a909,_0x2d887e){_0x40a909=_0x40a909-0x0;var _0x488189=_0x414e[_0x40a909];return _0x488189;};'use strict';var multer=require(_0xe414('0x0'));var util=require('util');var path=require(_0xe414('0x1'));var timeout=require(_0xe414('0x2'));var express=require('express');var router=express[_0xe414('0x3')]();var fs_extra=require(_0xe414('0x4'));var auth=require(_0xe414('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xe414('0x6'));var controller=require(_0xe414('0x7'));router['get']('/',auth[_0xe414('0x8')](),controller[_0xe414('0x9')]);router[_0xe414('0xa')](_0xe414('0xb'),auth[_0xe414('0x8')](),controller[_0xe414('0xc')]);router[_0xe414('0xa')](_0xe414('0xd'),auth['isAuthenticated'](),controller[_0xe414('0xe')]);router['get'](_0xe414('0xf'),auth['isAuthenticated'](),controller[_0xe414('0x10')]);router[_0xe414('0xa')](_0xe414('0x11'),auth[_0xe414('0x8')](),controller['download']);router[_0xe414('0x12')]('/',auth['isAuthenticated'](),controller[_0xe414('0x13')]);router[_0xe414('0x12')](_0xe414('0xf'),auth[_0xe414('0x8')](),controller['addMessage']);router[_0xe414('0x12')](_0xe414('0x14'),auth[_0xe414('0x8')](),interaction['tracked']('openchannel','openchannelinteraction:addtags'),controller[_0xe414('0x15')]);router['put'](_0xe414('0xd'),auth[_0xe414('0x8')](),interaction['tracked'](_0xe414('0x16'),_0xe414('0x17')),controller[_0xe414('0x18')]);router['delete'](_0xe414('0xd'),auth[_0xe414('0x8')](),interaction[_0xe414('0x19')]('openchannel',_0xe414('0x1a')),controller[_0xe414('0x1b')]);router[_0xe414('0x1c')](_0xe414('0x14'),auth[_0xe414('0x8')](),controller[_0xe414('0x1d')]);module[_0xe414('0x1e')]=router;
\ No newline at end of file
+var _0x7467=['openchannelinteraction:addtags','addTags','put','tracked','openchannelinteraction:update','update','delete','openchannelinteraction:destroy','destroy','multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/describe','describe','/:id','isAuthenticated','show','/:id/messages','/:id/download','download','post','create','addMessage','/:id/tags','openchannel'];(function(_0x49c67a,_0x40f325){var _0x4e078c=function(_0x4468fe){while(--_0x4468fe){_0x49c67a['push'](_0x49c67a['shift']());}};_0x4e078c(++_0x40f325);}(_0x7467,0x69));var _0x7746=function(_0x283b00,_0x2c0bac){_0x283b00=_0x283b00-0x0;var _0x1042e1=_0x7467[_0x283b00];return _0x1042e1;};'use strict';var multer=require(_0x7746('0x0'));var util=require(_0x7746('0x1'));var path=require(_0x7746('0x2'));var timeout=require('connect-timeout');var express=require(_0x7746('0x3'));var router=express['Router']();var fs_extra=require(_0x7746('0x4'));var auth=require(_0x7746('0x5'));var interaction=require(_0x7746('0x6'));var config=require(_0x7746('0x7'));var controller=require('./openchannelInteraction.controller');router[_0x7746('0x8')]('/',auth['isAuthenticated'](),controller[_0x7746('0x9')]);router[_0x7746('0x8')](_0x7746('0xa'),auth['isAuthenticated'](),controller[_0x7746('0xb')]);router[_0x7746('0x8')](_0x7746('0xc'),auth[_0x7746('0xd')](),controller[_0x7746('0xe')]);router[_0x7746('0x8')](_0x7746('0xf'),auth[_0x7746('0xd')](),controller['getMessages']);router[_0x7746('0x8')](_0x7746('0x10'),auth['isAuthenticated'](),controller[_0x7746('0x11')]);router[_0x7746('0x12')]('/',auth[_0x7746('0xd')](),controller[_0x7746('0x13')]);router[_0x7746('0x12')]('/:id/messages',auth['isAuthenticated'](),controller[_0x7746('0x14')]);router[_0x7746('0x12')](_0x7746('0x15'),auth['isAuthenticated'](),interaction['tracked'](_0x7746('0x16'),_0x7746('0x17')),controller[_0x7746('0x18')]);router[_0x7746('0x19')](_0x7746('0xc'),auth['isAuthenticated'](),interaction[_0x7746('0x1a')]('openchannel',_0x7746('0x1b')),controller[_0x7746('0x1c')]);router[_0x7746('0x1d')](_0x7746('0xc'),auth[_0x7746('0xd')](),interaction[_0x7746('0x1a')](_0x7746('0x16'),_0x7746('0x1e')),controller[_0x7746('0x1f')]);router[_0x7746('0x1d')](_0x7746('0x15'),auth[_0x7746('0xd')](),controller['removeTags']);module['exports']=router;
\ No newline at end of file
index 101b601..4d28d1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99e9=['exports','BOOLEAN','DATE','STRING','ENUM','out'];(function(_0x49524d,_0x5ae7a9){var _0x221976=function(_0x28aa71){while(--_0x28aa71){_0x49524d['push'](_0x49524d['shift']());}};_0x221976(++_0x5ae7a9);}(_0x99e9,0xb4));var _0x999e=function(_0x53f897,_0x539857){_0x53f897=_0x53f897-0x0;var _0x6879f8=_0x99e9[_0x53f897];return _0x6879f8;};'use strict';var Sequelize=require('sequelize');module[_0x999e('0x0')]={'closed':{'type':Sequelize[_0x999e('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x999e('0x2')]},'disposition':{'type':Sequelize[_0x999e('0x3')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x999e('0x3')]},'note':{'type':Sequelize[_0x999e('0x3')]},'read1stAt':{'type':Sequelize[_0x999e('0x2')]},'threadId':{'type':Sequelize['STRING']},'externalUrl':{'type':Sequelize[_0x999e('0x3')]},'lastMsgAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0x999e('0x4')]('in',_0x999e('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgDirection':{'type':Sequelize[_0x999e('0x4')]('in',_0x999e('0x5')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize['STRING']},'autoreplyExecuted':{'type':Sequelize[_0x999e('0x1')],'defaultValue':![]}};
\ No newline at end of file
+var _0x1d25=['DATE','STRING','ENUM','out','sequelize','exports','BOOLEAN'];(function(_0x361782,_0x683927){var _0x3887e8=function(_0x39f1eb){while(--_0x39f1eb){_0x361782['push'](_0x361782['shift']());}};_0x3887e8(++_0x683927);}(_0x1d25,0xba));var _0x51d2=function(_0x3d4ef1,_0x5a957c){_0x3d4ef1=_0x3d4ef1-0x0;var _0x409423=_0x1d25[_0x3d4ef1];return _0x409423;};'use strict';var Sequelize=require(_0x51d2('0x0'));module[_0x51d2('0x1')]={'closed':{'type':Sequelize[_0x51d2('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x51d2('0x3')]},'disposition':{'type':Sequelize[_0x51d2('0x4')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x51d2('0x4')]},'note':{'type':Sequelize[_0x51d2('0x4')]},'read1stAt':{'type':Sequelize['DATE']},'threadId':{'type':Sequelize[_0x51d2('0x4')]},'externalUrl':{'type':Sequelize[_0x51d2('0x4')]},'lastMsgAt':{'type':Sequelize[_0x51d2('0x3')]},'firstMsgDirection':{'type':Sequelize[_0x51d2('0x5')]('in',_0x51d2('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgDirection':{'type':Sequelize[_0x51d2('0x5')]('in','out'),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0x51d2('0x4')]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 72615fb..b66e9c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48d2=['type','from','params','filters','model','attributes','intersection','fields','length','includeAll','include','merge','options','find','catch','create','body','describe','OpenchannelMessage','ids','omit','getMessages','findOne','keys','hasOwnProperty','order','sort','where','pick','OpenchannelInteractionId','filter','$gte','split','YYYY-MM-DD\x20HH:mm:ss','addTags','setTags','spread','Tag','color','emit','openchannelInteractionTags:save','removeTags','download','unix','toString','root','server','files','join','attachments','format','transcript-%d-%s.zip','push','User','fullname','CmContact','Contact','firstName','lastName','Attachment','Messages','createdAt','direction','secret','read','OpenchannelAccount','Owner','mkdirSync','Openchannel','Account','N.A.','closed','closedAt','disposition','threadId','Public','existsSync','pipe','createWriteStream','out','System','basename','views','downloadInteraction.ejs','.pdf','rimraf','moment','util','path','lodash','../../components/interaction/service','../../config/logger','api','../../mysqldb','redis','defaults','socket.io-emitter','./openchannelInteraction.socket','register','sendStatus','status','end','undefined','limit','count','offset','set','json','update','then','destroy','error','stack','name','send','index','map','OpenchannelInteraction','rawAttributes','key','findAll','openchannel','show','query'];(function(_0x1f5c0a,_0x58001f){var _0x95db4e=function(_0x495214){while(--_0x495214){_0x1f5c0a['push'](_0x1f5c0a['shift']());}};_0x95db4e(++_0x58001f);}(_0x48d2,0x1c9));var _0x248d=function(_0x31cb5f,_0x2df766){_0x31cb5f=_0x31cb5f-0x0;var _0x586042=_0x48d2[_0x31cb5f];return _0x586042;};'use strict';var rimraf=require(_0x248d('0x0'));var zipdir=require('zip-dir');var moment=require(_0x248d('0x1'));var util=require(_0x248d('0x2'));var path=require(_0x248d('0x3'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x248d('0x4'));var Redis=require('ioredis');var interaction=require(_0x248d('0x5'));var qs=require('../../components/parsers/qs');var pdf=require('../../components/export/pdf');var logger=require(_0x248d('0x6'))(_0x248d('0x7'));var config=require('../../config/environment');var db=require(_0x248d('0x8'))['db'];config[_0x248d('0x9')]=_[_0x248d('0xa')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x248d('0xb'))(new Redis(config[_0x248d('0x9')]));require(_0x248d('0xc'))[_0x248d('0xd')](socket);function respondWithStatusCode(_0x23fdec,_0x3394e6){_0x3394e6=_0x3394e6||0xcc;return function(_0xc5c7f4){if(_0xc5c7f4){return _0x23fdec[_0x248d('0xe')](_0x3394e6);}return _0x23fdec[_0x248d('0xf')](_0x3394e6)[_0x248d('0x10')]();};}function respondWithResult(_0x553947,_0x2f4b7a){_0x2f4b7a=_0x2f4b7a||0xc8;return function(_0x4ef454){if(_0x4ef454){return _0x553947[_0x248d('0xf')](_0x2f4b7a)['json'](_0x4ef454);}};}function respondWithFilteredResult(_0x6c9bda,_0x1cddf5){return function(_0x5536d1){if(_0x5536d1){var _0x1c3beb=typeof _0x1cddf5['offset']===_0x248d('0x11')&&typeof _0x1cddf5[_0x248d('0x12')]===_0x248d('0x11');var _0x5e5673=_0x5536d1[_0x248d('0x13')];var _0x18145c=_0x1c3beb?0x0:_0x1cddf5[_0x248d('0x14')];var _0x34a232=_0x1c3beb?_0x5536d1['count']:_0x1cddf5[_0x248d('0x14')]+_0x1cddf5[_0x248d('0x12')];var _0xdf25d2;if(_0x34a232>=_0x5e5673){_0x34a232=_0x5e5673;_0xdf25d2=0xc8;}else{_0xdf25d2=0xce;}_0x6c9bda[_0x248d('0xf')](_0xdf25d2);return _0x6c9bda[_0x248d('0x15')]('Content-Range',_0x18145c+'-'+_0x34a232+'/'+_0x5e5673)[_0x248d('0x16')](_0x5536d1);}return null;};}function saveUpdates(_0x54053e){return function(_0xfda299){if(_0xfda299){return _0xfda299[_0x248d('0x17')](_0x54053e)[_0x248d('0x18')](function(_0x59a1f7){return _0x59a1f7;});}return null;};}function removeEntity(_0x2b4417){return function(_0x31cfaf){if(_0x31cfaf){return _0x31cfaf[_0x248d('0x19')]()['then'](function(){_0x2b4417[_0x248d('0xf')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2d83db){return function(_0x2073c0){if(!_0x2073c0){_0x2d83db[_0x248d('0xe')](0x194);}return _0x2073c0;};}function handleError(_0x3c91c6,_0x4c2782){_0x4c2782=_0x4c2782||0x1f4;return function(_0x5056a4){logger[_0x248d('0x1a')](_0x5056a4[_0x248d('0x1b')]);if(_0x5056a4['name']){delete _0x5056a4[_0x248d('0x1c')];}_0x3c91c6[_0x248d('0xf')](_0x4c2782)[_0x248d('0x1d')](_0x5056a4);};}exports[_0x248d('0x1e')]=function(_0x2c8af2,_0x20e74d){var _0x43ca50={};var _0x57ea84=_[_0x248d('0x1f')](db[_0x248d('0x20')][_0x248d('0x21')],function(_0x392e40){return{'name':_0x392e40['fieldName'],'type':_0x392e40['type'][_0x248d('0x22')]};});_0x43ca50=qs['getOptions'](_0x57ea84,_0x2c8af2);return interaction[_0x248d('0x23')](_0x248d('0x24'),_0x2c8af2['query'],_0x2c8af2['user'],_0x43ca50,_0x57ea84)[_0x248d('0x18')](respondWithFilteredResult(_0x20e74d,_0x43ca50))['catch'](handleError(_0x20e74d,null));};exports[_0x248d('0x25')]=function(_0x4d5e03,_0x4e1360){var _0x1b6bfd={};if(_0x4d5e03[_0x248d('0x26')]['type']&&_0x4d5e03['query'][_0x248d('0x27')]===_0x248d('0x28')){_0x1b6bfd[_0x248d('0x28')]=_0x4d5e03[_0x248d('0x29')]['id'];}else{_0x1b6bfd['id']=_0x4d5e03['params']['id'];}var _0x156511={'raw':![],'where':_0x1b6bfd},_0x279ba0={};_0x279ba0['model']=_['keys'](db['OpenchannelInteraction']['rawAttributes']);_0x279ba0[_0x248d('0x26')]=_['keys'](_0x4d5e03[_0x248d('0x26')]);_0x279ba0[_0x248d('0x2a')]=_['intersection'](_0x279ba0[_0x248d('0x2b')],_0x279ba0['query']);_0x156511[_0x248d('0x2c')]=_[_0x248d('0x2d')](_0x279ba0[_0x248d('0x2b')],qs[_0x248d('0x2e')](_0x4d5e03[_0x248d('0x26')][_0x248d('0x2e')]));_0x156511[_0x248d('0x2c')]=_0x156511['attributes'][_0x248d('0x2f')]?_0x156511['attributes']:_0x279ba0[_0x248d('0x2b')];if(_0x4d5e03[_0x248d('0x26')][_0x248d('0x30')]){_0x156511[_0x248d('0x31')]=[{'all':!![]}];}_0x156511=_[_0x248d('0x32')]({},_0x156511,_0x4d5e03[_0x248d('0x33')]);return db[_0x248d('0x20')][_0x248d('0x34')](_0x156511)[_0x248d('0x18')](handleEntityNotFound(_0x4e1360,null))['then'](respondWithResult(_0x4e1360,null))[_0x248d('0x35')](handleError(_0x4e1360,null));};exports[_0x248d('0x36')]=function(_0x2f40da,_0x5b65e0){return db[_0x248d('0x20')][_0x248d('0x36')](_0x2f40da[_0x248d('0x37')],{})[_0x248d('0x18')](respondWithResult(_0x5b65e0,0xc9))[_0x248d('0x35')](handleError(_0x5b65e0,null));};exports[_0x248d('0x17')]=function(_0x312022,_0x15afa9){if(_0x312022['body']['id']){delete _0x312022['body']['id'];}return db[_0x248d('0x20')]['find']({'where':{'id':_0x312022[_0x248d('0x29')]['id']}})[_0x248d('0x18')](handleEntityNotFound(_0x15afa9,null))['then'](saveUpdates(_0x312022[_0x248d('0x37')],null))[_0x248d('0x18')](respondWithResult(_0x15afa9,null))[_0x248d('0x35')](handleError(_0x15afa9,null));};exports[_0x248d('0x19')]=function(_0x49146d,_0x269861){return db[_0x248d('0x20')]['find']({'where':{'id':_0x49146d[_0x248d('0x29')]['id']}})[_0x248d('0x18')](handleEntityNotFound(_0x269861,null))[_0x248d('0x18')](removeEntity(_0x269861,null))[_0x248d('0x35')](handleError(_0x269861,null));};exports[_0x248d('0x38')]=function(_0x5d665d,_0x1951df){return db[_0x248d('0x20')][_0x248d('0x38')]()[_0x248d('0x18')](respondWithResult(_0x1951df,null))[_0x248d('0x35')](handleError(_0x1951df,null));};exports['addMessage']=function(_0x2d66be,_0x475348){return db[_0x248d('0x39')][_0x248d('0x34')]({'where':{'id':_0x2d66be[_0x248d('0x29')]['id']}})[_0x248d('0x18')](handleEntityNotFound(_0x475348,null))['then'](function(_0x152aa3){if(_0x152aa3){return _0x152aa3['addMessage'](_0x2d66be[_0x248d('0x37')][_0x248d('0x3a')],_[_0x248d('0x3b')](_0x2d66be[_0x248d('0x37')],[_0x248d('0x3a'),'id'])||{});}})[_0x248d('0x18')](respondWithResult(_0x475348,null))[_0x248d('0x35')](handleError(_0x475348,null));};exports[_0x248d('0x3c')]=function(_0x211039,_0x4c336a){var _0xea335c={'raw':![],'where':{}};var _0x58ea36={};var _0x1ddf50={'count':0x0,'rows':[]};return db[_0x248d('0x20')][_0x248d('0x3d')]({'where':{'id':_0x211039[_0x248d('0x29')]['id']}})['then'](handleEntityNotFound(_0x4c336a,null))[_0x248d('0x18')](function(_0x532462){if(_0x532462){_0x58ea36[_0x248d('0x2b')]=_[_0x248d('0x3e')](db['OpenchannelMessage'][_0x248d('0x21')]);_0x58ea36['query']=_['keys'](_0x211039[_0x248d('0x26')]);_0x58ea36['filters']=_[_0x248d('0x2d')](_0x58ea36[_0x248d('0x2b')],_0x58ea36[_0x248d('0x26')]);_0xea335c[_0x248d('0x2c')]=_[_0x248d('0x2d')](_0x58ea36[_0x248d('0x2b')],qs[_0x248d('0x2e')](_0x211039[_0x248d('0x26')][_0x248d('0x2e')]));_0xea335c['attributes']=_0xea335c[_0x248d('0x2c')][_0x248d('0x2f')]?_0xea335c[_0x248d('0x2c')]:_0x58ea36[_0x248d('0x2b')];if(!_0x211039[_0x248d('0x26')][_0x248d('0x3f')]('nolimit')){_0xea335c[_0x248d('0x12')]=qs[_0x248d('0x12')](_0x211039[_0x248d('0x26')][_0x248d('0x12')]);_0xea335c[_0x248d('0x14')]=qs['offset'](_0x211039[_0x248d('0x26')][_0x248d('0x14')]);}_0xea335c[_0x248d('0x40')]=qs['sort'](_0x211039[_0x248d('0x26')][_0x248d('0x41')]);_0xea335c[_0x248d('0x42')]=qs[_0x248d('0x2a')](_[_0x248d('0x43')](_0x211039[_0x248d('0x26')],_0x58ea36[_0x248d('0x2a')]));_0xea335c[_0x248d('0x42')][_0x248d('0x44')]=_0x532462['id'];if(_0x211039['query'][_0x248d('0x45')]){_0xea335c[_0x248d('0x42')]=_['merge'](_0xea335c['where'],{'$or':_[_0x248d('0x1f')](_0xea335c[_0x248d('0x2c')],function(_0x273704){var _0x34bbed={};_0x34bbed[_0x273704]={'$like':'%'+_0x211039[_0x248d('0x26')][_0x248d('0x45')]+'%'};return _0x34bbed;})});}if(_0x211039['query'][_0x248d('0x46')]){var _0x58d795=_0x211039[_0x248d('0x26')]['$gte'][_0x248d('0x47')](',');var _0x1e6ed1={};_0x1e6ed1[_0x58d795[0x0]]={'$gte':moment(_0x58d795[0x1])['format'](_0x248d('0x48'))};_0xea335c[_0x248d('0x42')]=_[_0x248d('0x32')](_0xea335c[_0x248d('0x42')],_0x1e6ed1);}_0xea335c=_[_0x248d('0x32')]({},_0xea335c,_0x211039[_0x248d('0x33')]);return db[_0x248d('0x39')][_0x248d('0x13')]({'where':_0xea335c['where']})[_0x248d('0x18')](function(_0x3ccb81){_0x1ddf50[_0x248d('0x13')]=_0x3ccb81;if(_0x211039[_0x248d('0x26')][_0x248d('0x30')]){_0xea335c[_0x248d('0x31')]=[{'all':!![]}];}return db[_0x248d('0x39')][_0x248d('0x23')](_0xea335c);})['then'](function(_0x3169bf){_0x1ddf50['rows']=_0x3169bf;return _0x1ddf50;});}})['then'](respondWithFilteredResult(_0x4c336a,_0xea335c))[_0x248d('0x35')](handleError(_0x4c336a,null));};exports[_0x248d('0x49')]=function(_0x30d531,_0x381e1c){return db[_0x248d('0x20')][_0x248d('0x34')]({'where':{'id':_0x30d531['params']['id']}})['then'](handleEntityNotFound(_0x381e1c,null))['then'](function(_0x1aaa64){if(_0x1aaa64){return _0x1aaa64[_0x248d('0x4a')](_0x30d531[_0x248d('0x37')][_0x248d('0x3a')],_['omit'](_0x30d531[_0x248d('0x37')],[_0x248d('0x3a'),'id'])||{})[_0x248d('0x4b')](function(){return db[_0x248d('0x4c')][_0x248d('0x23')]({'attributes':['id',_0x248d('0x1c'),_0x248d('0x4d')],'where':{'id':_0x30d531[_0x248d('0x37')][_0x248d('0x3a')]}});})[_0x248d('0x18')](function(_0x15675e){socket[_0x248d('0x4e')](_0x248d('0x4f'),{'id':Number(_0x30d531[_0x248d('0x29')]['id']),'tags':_0x15675e||[]});return{'id':Number(_0x30d531[_0x248d('0x29')]['id']),'tags':_0x15675e||[]};});}})[_0x248d('0x18')](respondWithResult(_0x381e1c,null))[_0x248d('0x35')](handleError(_0x381e1c,null));};exports['removeTags']=function(_0x261302,_0x1ba48a){return db[_0x248d('0x20')][_0x248d('0x34')]({'where':{'id':_0x261302[_0x248d('0x29')]['id']}})['then'](handleEntityNotFound(_0x1ba48a,null))[_0x248d('0x18')](function(_0x4982dd){if(_0x4982dd){return _0x4982dd[_0x248d('0x50')](_0x261302[_0x248d('0x26')]['ids']);}})[_0x248d('0x18')](respondWithStatusCode(_0x1ba48a,null))[_0x248d('0x35')](handleError(_0x1ba48a,null));};exports[_0x248d('0x51')]=function(_0x4201a8,_0x45e2e9){var _0x2bdd12=moment()[_0x248d('0x52')]()[_0x248d('0x53')]();var _0x464306=path['join'](config[_0x248d('0x54')],_0x248d('0x55'),_0x248d('0x56'),'tmp');var _0x4c9dec=path[_0x248d('0x57')](config[_0x248d('0x54')],'server',_0x248d('0x56'),_0x248d('0x58'));var _0x423bcd=path[_0x248d('0x57')](_0x464306,_0x2bdd12);var _0x59567d=util[_0x248d('0x59')](_0x248d('0x5a'),_0x4201a8[_0x248d('0x29')]['id'],_0x2bdd12);var _0x23bab0=path[_0x248d('0x57')](_0x464306,_0x59567d);var _0x28f76c=[];_0x28f76c[_0x248d('0x5b')]({'model':db[_0x248d('0x5c')],'as':'User','attributes':['id',_0x248d('0x5d')],'raw':!![]});_0x28f76c[_0x248d('0x5b')]({'model':db[_0x248d('0x5e')],'as':_0x248d('0x5f'),'attributes':['id',_0x248d('0x60'),_0x248d('0x61')],'raw':!![]});if(_0x4201a8['query']['attachments']){_0x28f76c['push']({'model':db[_0x248d('0x62')],'as':_0x248d('0x62'),'raw':!![]});}var _0x31e47c=[{'model':db[_0x248d('0x39')],'as':_0x248d('0x63'),'attributes':['id',_0x248d('0x37'),_0x248d('0x64'),_0x248d('0x65'),_0x248d('0x66'),_0x248d('0x67')],'include':_0x28f76c}];_0x31e47c['push']({'model':db[_0x248d('0x68')],'as':'Account','attributes':['id',_0x248d('0x1c')]});_0x31e47c['push']({'model':db[_0x248d('0x5c')],'as':_0x248d('0x69'),'attributes':['id',_0x248d('0x5d')]});return db[_0x248d('0x20')][_0x248d('0x34')]({'where':{'id':_0x4201a8['params']['id']},'include':_0x31e47c})[_0x248d('0x18')](handleEntityNotFound(_0x45e2e9,null))['then'](function(_0x34741b){if(_0x34741b){var _0x38000b=_0x34741b['get']({'plain':!![]});fs[_0x248d('0x6a')](_0x423bcd);var _0x41637e={'channel':_0x248d('0x6b'),'account':_0x38000b[_0x248d('0x6c')][_0x248d('0x1c')],'agent':_0x38000b[_0x248d('0x69')]?_0x38000b['Owner'][_0x248d('0x5d')]:_0x248d('0x6d'),'createdAt':moment(_0x38000b[_0x248d('0x64')])['format']('YYYY-MM-DD\x20HH:mm:ss')['toString'](),'closedAt':_0x38000b[_0x248d('0x6e')]?moment(_0x38000b[_0x248d('0x6f')])[_0x248d('0x59')]('YYYY-MM-DD\x20HH:mm:ss')[_0x248d('0x53')]():'','disposition':_0x38000b[_0x248d('0x70')],'visibility':_0x38000b[_0x248d('0x71')]?_0x248d('0x72'):'Private','messages':_(_0x38000b[_0x248d('0x63')])['filter']({'secret':![]})[_0x248d('0x1f')](function(_0x2b20d4){if(_0x2b20d4[_0x248d('0x62')]){var _0x21b96e=path[_0x248d('0x57')](_0x4c9dec,_0x2b20d4['Attachment']['basename']);if(fs[_0x248d('0x73')](_0x21b96e)){fs['createReadStream'](_0x21b96e)[_0x248d('0x74')](fs[_0x248d('0x75')](path[_0x248d('0x57')](_0x423bcd,_0x2b20d4[_0x248d('0x62')]['basename'])));}}return{'date':moment(_0x2b20d4[_0x248d('0x64')])[_0x248d('0x59')](_0x248d('0x48'))[_0x248d('0x53')](),'sender':_0x2b20d4[_0x248d('0x65')]===_0x248d('0x76')?_0x2b20d4[_0x248d('0x5c')]?_0x2b20d4[_0x248d('0x5c')][_0x248d('0x5d')]:_0x248d('0x77'):_0x2b20d4[_0x248d('0x5f')]['firstName']+(_0x2b20d4[_0x248d('0x5f')][_0x248d('0x61')]?'\x20'+_0x2b20d4[_0x248d('0x5f')]['lastName']:''),'body':_0x2b20d4[_0x248d('0x62')]?_0x2b20d4['Attachment'][_0x248d('0x78')]:_0x2b20d4['body'],'direction':_0x2b20d4[_0x248d('0x65')]===_0x248d('0x76')?'A':'C','secret':_0x2b20d4[_0x248d('0x66')],'read':_0x2b20d4['read'],'attachment':_0x2b20d4[_0x248d('0x62')]};})['value']()};return ejs['renderFile'](path[_0x248d('0x57')](config[_0x248d('0x54')],_0x248d('0x55'),_0x248d('0x79'),_0x248d('0x7a')),{'interaction':_0x41637e})[_0x248d('0x18')](function(_0x4175b6){var _0x239cc2=path[_0x248d('0x57')](_0x423bcd,'transcript-'+_0x38000b['id']+'-'+_0x2bdd12+_0x248d('0x7b'));var _0x204cc6={'path':_0x239cc2,'channel':_0x248d('0x6b'),'interactionId':_0x38000b['id']};return pdf['createPdfFromHTML'](_0x4175b6,_0x204cc6);})['then'](function(){return new Promise(function(_0x5c1e28,_0x3aaadd){zipdir(_0x423bcd,{'saveTo':_0x23bab0},function(_0x1ed815,_0x5dcc2f){if(_0x1ed815)return _0x3aaadd(_0x1ed815);return _0x5c1e28(_0x5dcc2f);});})['then'](function(){return new Promise(function(_0x46b0bb,_0x531fe4){rimraf(_0x423bcd,function(_0x5397f3){if(_0x5397f3)_0x531fe4(_0x5397f3);return _0x46b0bb();});});})[_0x248d('0x18')](function(){return _0x45e2e9[_0x248d('0x51')](_0x23bab0,_0x59567d,function(_0x294623){if(_0x294623){logger[_0x248d('0x1a')]('Unable\x20to\x20delete\x20zip\x20file',_0x294623);}else{fs['unlinkSync'](_0x23bab0);}});});});}else{return _0x45e2e9[_0x248d('0xe')](0xc8);}})[_0x248d('0x35')](handleError(_0x45e2e9,null));};
\ No newline at end of file
+var _0x2fb3=['attributes','fields','length','includeAll','include','options','find','catch','create','body','describe','addMessage','OpenchannelMessage','ids','omit','getMessages','filters','hasOwnProperty','nolimit','order','sort','where','OpenchannelInteractionId','filter','merge','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','count','rows','addTags','color','emit','openchannelInteractionTags:save','removeTags','download','unix','join','root','server','tmp','attachments','transcript-%d-%s.zip','push','User','fullname','firstName','lastName','Attachment','Messages','createdAt','direction','secret','read','OpenchannelAccount','Account','Owner','mkdirSync','N.A.','toString','closedAt','disposition','threadId','Public','Private','existsSync','createReadStream','createWriteStream','basename','out','System','Contact','value','renderFile','views','downloadInteraction.ejs','transcript-','Openchannel','createPdfFromHTML','error','Unable\x20to\x20delete\x20zip\x20file','unlinkSync','rimraf','zip-dir','moment','util','path','ejs','lodash','ioredis','../../components/interaction/service','../../components/export/pdf','api','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./openchannelInteraction.socket','register','sendStatus','status','end','offset','undefined','limit','set','Content-Range','update','then','destroy','stack','name','send','index','map','OpenchannelInteraction','rawAttributes','fieldName','type','findAll','openchannel','query','user','show','from','params','keys','intersection','model'];(function(_0x2f41ce,_0x23208a){var _0x25dde4=function(_0x15c15f){while(--_0x15c15f){_0x2f41ce['push'](_0x2f41ce['shift']());}};_0x25dde4(++_0x23208a);}(_0x2fb3,0x1dc));var _0x32fb=function(_0x25260e,_0x4ea9f9){_0x25260e=_0x25260e-0x0;var _0x5d19c6=_0x2fb3[_0x25260e];return _0x5d19c6;};'use strict';var rimraf=require(_0x32fb('0x0'));var zipdir=require(_0x32fb('0x1'));var moment=require(_0x32fb('0x2'));var util=require(_0x32fb('0x3'));var path=require(_0x32fb('0x4'));var ejs=require(_0x32fb('0x5'));var fs=require('fs');var _=require(_0x32fb('0x6'));var Redis=require(_0x32fb('0x7'));var interaction=require(_0x32fb('0x8'));var qs=require('../../components/parsers/qs');var pdf=require(_0x32fb('0x9'));var logger=require('../../config/logger')(_0x32fb('0xa'));var config=require('../../config/environment');var db=require(_0x32fb('0xb'))['db'];config[_0x32fb('0xc')]=_[_0x32fb('0xd')](config[_0x32fb('0xc')],{'host':_0x32fb('0xe'),'port':0x18eb});var socket=require(_0x32fb('0xf'))(new Redis(config[_0x32fb('0xc')]));require(_0x32fb('0x10'))[_0x32fb('0x11')](socket);function respondWithStatusCode(_0x50592c,_0x2b6b5c){_0x2b6b5c=_0x2b6b5c||0xcc;return function(_0x1f98de){if(_0x1f98de){return _0x50592c[_0x32fb('0x12')](_0x2b6b5c);}return _0x50592c[_0x32fb('0x13')](_0x2b6b5c)[_0x32fb('0x14')]();};}function respondWithResult(_0x330157,_0x325db2){_0x325db2=_0x325db2||0xc8;return function(_0x26259c){if(_0x26259c){return _0x330157[_0x32fb('0x13')](_0x325db2)['json'](_0x26259c);}};}function respondWithFilteredResult(_0x917e75,_0x3fa49f){return function(_0x39a474){if(_0x39a474){var _0x48976d=typeof _0x3fa49f[_0x32fb('0x15')]===_0x32fb('0x16')&&typeof _0x3fa49f['limit']===_0x32fb('0x16');var _0x4b3d8a=_0x39a474['count'];var _0x481fa1=_0x48976d?0x0:_0x3fa49f[_0x32fb('0x15')];var _0x5c786c=_0x48976d?_0x39a474['count']:_0x3fa49f[_0x32fb('0x15')]+_0x3fa49f[_0x32fb('0x17')];var _0x8ed24c;if(_0x5c786c>=_0x4b3d8a){_0x5c786c=_0x4b3d8a;_0x8ed24c=0xc8;}else{_0x8ed24c=0xce;}_0x917e75[_0x32fb('0x13')](_0x8ed24c);return _0x917e75[_0x32fb('0x18')](_0x32fb('0x19'),_0x481fa1+'-'+_0x5c786c+'/'+_0x4b3d8a)['json'](_0x39a474);}return null;};}function saveUpdates(_0x3a1ee2){return function(_0x5563ab){if(_0x5563ab){return _0x5563ab[_0x32fb('0x1a')](_0x3a1ee2)[_0x32fb('0x1b')](function(_0x3237f2){return _0x3237f2;});}return null;};}function removeEntity(_0x1cbfd5){return function(_0x790a24){if(_0x790a24){return _0x790a24[_0x32fb('0x1c')]()[_0x32fb('0x1b')](function(){_0x1cbfd5[_0x32fb('0x13')](0xcc)[_0x32fb('0x14')]();});}};}function handleEntityNotFound(_0x804186){return function(_0x5ddf79){if(!_0x5ddf79){_0x804186[_0x32fb('0x12')](0x194);}return _0x5ddf79;};}function handleError(_0xc0e24b,_0x1b37af){_0x1b37af=_0x1b37af||0x1f4;return function(_0x4b17e1){logger['error'](_0x4b17e1[_0x32fb('0x1d')]);if(_0x4b17e1[_0x32fb('0x1e')]){delete _0x4b17e1[_0x32fb('0x1e')];}_0xc0e24b[_0x32fb('0x13')](_0x1b37af)[_0x32fb('0x1f')](_0x4b17e1);};}exports[_0x32fb('0x20')]=function(_0x4866eb,_0x37d512){var _0xab97ce={};var _0x3fff1=_[_0x32fb('0x21')](db[_0x32fb('0x22')][_0x32fb('0x23')],function(_0x4069e4){return{'name':_0x4069e4[_0x32fb('0x24')],'type':_0x4069e4[_0x32fb('0x25')]['key']};});_0xab97ce=qs['getOptions'](_0x3fff1,_0x4866eb);return interaction[_0x32fb('0x26')](_0x32fb('0x27'),_0x4866eb[_0x32fb('0x28')],_0x4866eb[_0x32fb('0x29')],_0xab97ce,_0x3fff1)[_0x32fb('0x1b')](respondWithFilteredResult(_0x37d512,_0xab97ce))['catch'](handleError(_0x37d512,null));};exports[_0x32fb('0x2a')]=function(_0x2d2fbb,_0x42a080){var _0x3c0aed={};if(_0x2d2fbb['query'][_0x32fb('0x25')]&&_0x2d2fbb[_0x32fb('0x28')][_0x32fb('0x25')]===_0x32fb('0x2b')){_0x3c0aed['from']=_0x2d2fbb['params']['id'];}else{_0x3c0aed['id']=_0x2d2fbb[_0x32fb('0x2c')]['id'];}var _0x3a6d56={'raw':![],'where':_0x3c0aed},_0x4008d7={};_0x4008d7['model']=_[_0x32fb('0x2d')](db[_0x32fb('0x22')][_0x32fb('0x23')]);_0x4008d7['query']=_[_0x32fb('0x2d')](_0x2d2fbb[_0x32fb('0x28')]);_0x4008d7['filters']=_[_0x32fb('0x2e')](_0x4008d7[_0x32fb('0x2f')],_0x4008d7[_0x32fb('0x28')]);_0x3a6d56[_0x32fb('0x30')]=_[_0x32fb('0x2e')](_0x4008d7['model'],qs[_0x32fb('0x31')](_0x2d2fbb['query']['fields']));_0x3a6d56[_0x32fb('0x30')]=_0x3a6d56[_0x32fb('0x30')][_0x32fb('0x32')]?_0x3a6d56[_0x32fb('0x30')]:_0x4008d7[_0x32fb('0x2f')];if(_0x2d2fbb['query'][_0x32fb('0x33')]){_0x3a6d56[_0x32fb('0x34')]=[{'all':!![]}];}_0x3a6d56=_['merge']({},_0x3a6d56,_0x2d2fbb[_0x32fb('0x35')]);return db['OpenchannelInteraction'][_0x32fb('0x36')](_0x3a6d56)[_0x32fb('0x1b')](handleEntityNotFound(_0x42a080,null))[_0x32fb('0x1b')](respondWithResult(_0x42a080,null))[_0x32fb('0x37')](handleError(_0x42a080,null));};exports[_0x32fb('0x38')]=function(_0x3e5a54,_0x345409){return db[_0x32fb('0x22')][_0x32fb('0x38')](_0x3e5a54[_0x32fb('0x39')],{})[_0x32fb('0x1b')](respondWithResult(_0x345409,0xc9))[_0x32fb('0x37')](handleError(_0x345409,null));};exports[_0x32fb('0x1a')]=function(_0xce750,_0x4e4558){if(_0xce750[_0x32fb('0x39')]['id']){delete _0xce750[_0x32fb('0x39')]['id'];}return db[_0x32fb('0x22')][_0x32fb('0x36')]({'where':{'id':_0xce750[_0x32fb('0x2c')]['id']}})['then'](handleEntityNotFound(_0x4e4558,null))['then'](saveUpdates(_0xce750[_0x32fb('0x39')],null))[_0x32fb('0x1b')](respondWithResult(_0x4e4558,null))[_0x32fb('0x37')](handleError(_0x4e4558,null));};exports[_0x32fb('0x1c')]=function(_0x23f84a,_0x9275b0){return db['OpenchannelInteraction'][_0x32fb('0x36')]({'where':{'id':_0x23f84a[_0x32fb('0x2c')]['id']}})[_0x32fb('0x1b')](handleEntityNotFound(_0x9275b0,null))[_0x32fb('0x1b')](removeEntity(_0x9275b0,null))[_0x32fb('0x37')](handleError(_0x9275b0,null));};exports['describe']=function(_0x39ec80,_0x493101){return db[_0x32fb('0x22')][_0x32fb('0x3a')]()[_0x32fb('0x1b')](respondWithResult(_0x493101,null))['catch'](handleError(_0x493101,null));};exports[_0x32fb('0x3b')]=function(_0x1cd449,_0x29db28){return db[_0x32fb('0x3c')][_0x32fb('0x36')]({'where':{'id':_0x1cd449[_0x32fb('0x2c')]['id']}})[_0x32fb('0x1b')](handleEntityNotFound(_0x29db28,null))['then'](function(_0x1b6f73){if(_0x1b6f73){return _0x1b6f73[_0x32fb('0x3b')](_0x1cd449[_0x32fb('0x39')][_0x32fb('0x3d')],_[_0x32fb('0x3e')](_0x1cd449[_0x32fb('0x39')],[_0x32fb('0x3d'),'id'])||{});}})[_0x32fb('0x1b')](respondWithResult(_0x29db28,null))['catch'](handleError(_0x29db28,null));};exports[_0x32fb('0x3f')]=function(_0x488ed4,_0x687452){var _0x4ff4cc={'raw':![],'where':{}};var _0x18fe96={};var _0x582236={'count':0x0,'rows':[]};return db['OpenchannelInteraction']['findOne']({'where':{'id':_0x488ed4[_0x32fb('0x2c')]['id']}})['then'](handleEntityNotFound(_0x687452,null))[_0x32fb('0x1b')](function(_0x26d85c){if(_0x26d85c){_0x18fe96[_0x32fb('0x2f')]=_['keys'](db[_0x32fb('0x3c')][_0x32fb('0x23')]);_0x18fe96['query']=_[_0x32fb('0x2d')](_0x488ed4[_0x32fb('0x28')]);_0x18fe96[_0x32fb('0x40')]=_[_0x32fb('0x2e')](_0x18fe96['model'],_0x18fe96[_0x32fb('0x28')]);_0x4ff4cc[_0x32fb('0x30')]=_['intersection'](_0x18fe96[_0x32fb('0x2f')],qs[_0x32fb('0x31')](_0x488ed4['query'][_0x32fb('0x31')]));_0x4ff4cc[_0x32fb('0x30')]=_0x4ff4cc[_0x32fb('0x30')][_0x32fb('0x32')]?_0x4ff4cc[_0x32fb('0x30')]:_0x18fe96[_0x32fb('0x2f')];if(!_0x488ed4[_0x32fb('0x28')][_0x32fb('0x41')](_0x32fb('0x42'))){_0x4ff4cc[_0x32fb('0x17')]=qs[_0x32fb('0x17')](_0x488ed4[_0x32fb('0x28')]['limit']);_0x4ff4cc[_0x32fb('0x15')]=qs[_0x32fb('0x15')](_0x488ed4[_0x32fb('0x28')][_0x32fb('0x15')]);}_0x4ff4cc[_0x32fb('0x43')]=qs[_0x32fb('0x44')](_0x488ed4[_0x32fb('0x28')][_0x32fb('0x44')]);_0x4ff4cc[_0x32fb('0x45')]=qs[_0x32fb('0x40')](_['pick'](_0x488ed4['query'],_0x18fe96[_0x32fb('0x40')]));_0x4ff4cc[_0x32fb('0x45')][_0x32fb('0x46')]=_0x26d85c['id'];if(_0x488ed4[_0x32fb('0x28')][_0x32fb('0x47')]){_0x4ff4cc[_0x32fb('0x45')]=_[_0x32fb('0x48')](_0x4ff4cc['where'],{'$or':_['map'](_0x4ff4cc[_0x32fb('0x30')],function(_0x43f417){var _0x47d416={};_0x47d416[_0x43f417]={'$like':'%'+_0x488ed4[_0x32fb('0x28')][_0x32fb('0x47')]+'%'};return _0x47d416;})});}if(_0x488ed4[_0x32fb('0x28')][_0x32fb('0x49')]){var _0x9a8ce1=_0x488ed4[_0x32fb('0x28')]['$gte'][_0x32fb('0x4a')](',');var _0x17926a={};_0x17926a[_0x9a8ce1[0x0]]={'$gte':moment(_0x9a8ce1[0x1])[_0x32fb('0x4b')](_0x32fb('0x4c'))};_0x4ff4cc['where']=_['merge'](_0x4ff4cc['where'],_0x17926a);}_0x4ff4cc=_[_0x32fb('0x48')]({},_0x4ff4cc,_0x488ed4['options']);return db[_0x32fb('0x3c')][_0x32fb('0x4d')]({'where':_0x4ff4cc[_0x32fb('0x45')]})[_0x32fb('0x1b')](function(_0x30455f){_0x582236['count']=_0x30455f;if(_0x488ed4[_0x32fb('0x28')][_0x32fb('0x33')]){_0x4ff4cc[_0x32fb('0x34')]=[{'all':!![]}];}return db[_0x32fb('0x3c')][_0x32fb('0x26')](_0x4ff4cc);})[_0x32fb('0x1b')](function(_0x1a58cd){_0x582236[_0x32fb('0x4e')]=_0x1a58cd;return _0x582236;});}})['then'](respondWithFilteredResult(_0x687452,_0x4ff4cc))[_0x32fb('0x37')](handleError(_0x687452,null));};exports[_0x32fb('0x4f')]=function(_0x10e1c5,_0x1a614c){return db[_0x32fb('0x22')][_0x32fb('0x36')]({'where':{'id':_0x10e1c5[_0x32fb('0x2c')]['id']}})[_0x32fb('0x1b')](handleEntityNotFound(_0x1a614c,null))['then'](function(_0x421191){if(_0x421191){return _0x421191['setTags'](_0x10e1c5[_0x32fb('0x39')][_0x32fb('0x3d')],_[_0x32fb('0x3e')](_0x10e1c5[_0x32fb('0x39')],[_0x32fb('0x3d'),'id'])||{})['spread'](function(){return db['Tag'][_0x32fb('0x26')]({'attributes':['id','name',_0x32fb('0x50')],'where':{'id':_0x10e1c5[_0x32fb('0x39')][_0x32fb('0x3d')]}});})[_0x32fb('0x1b')](function(_0x55d473){socket[_0x32fb('0x51')](_0x32fb('0x52'),{'id':Number(_0x10e1c5[_0x32fb('0x2c')]['id']),'tags':_0x55d473||[]});return{'id':Number(_0x10e1c5['params']['id']),'tags':_0x55d473||[]};});}})[_0x32fb('0x1b')](respondWithResult(_0x1a614c,null))['catch'](handleError(_0x1a614c,null));};exports['removeTags']=function(_0x46158e,_0x44c00b){return db['OpenchannelInteraction'][_0x32fb('0x36')]({'where':{'id':_0x46158e[_0x32fb('0x2c')]['id']}})[_0x32fb('0x1b')](handleEntityNotFound(_0x44c00b,null))['then'](function(_0x4555e2){if(_0x4555e2){return _0x4555e2[_0x32fb('0x53')](_0x46158e[_0x32fb('0x28')][_0x32fb('0x3d')]);}})[_0x32fb('0x1b')](respondWithStatusCode(_0x44c00b,null))[_0x32fb('0x37')](handleError(_0x44c00b,null));};exports[_0x32fb('0x54')]=function(_0x1d3c5a,_0x49f38c){var _0x42cc2e=moment()[_0x32fb('0x55')]()['toString']();var _0x5a80ac=path[_0x32fb('0x56')](config[_0x32fb('0x57')],_0x32fb('0x58'),'files',_0x32fb('0x59'));var _0x946a30=path[_0x32fb('0x56')](config['root'],_0x32fb('0x58'),'files',_0x32fb('0x5a'));var _0x4d966d=path['join'](_0x5a80ac,_0x42cc2e);var _0x114df3=util[_0x32fb('0x4b')](_0x32fb('0x5b'),_0x1d3c5a[_0x32fb('0x2c')]['id'],_0x42cc2e);var _0x4d68a4=path['join'](_0x5a80ac,_0x114df3);var _0x433cd1=[];_0x433cd1[_0x32fb('0x5c')]({'model':db['User'],'as':_0x32fb('0x5d'),'attributes':['id',_0x32fb('0x5e')],'raw':!![]});_0x433cd1[_0x32fb('0x5c')]({'model':db['CmContact'],'as':'Contact','attributes':['id',_0x32fb('0x5f'),_0x32fb('0x60')],'raw':!![]});if(_0x1d3c5a[_0x32fb('0x28')][_0x32fb('0x5a')]){_0x433cd1[_0x32fb('0x5c')]({'model':db[_0x32fb('0x61')],'as':'Attachment','raw':!![]});}var _0x1095fd=[{'model':db[_0x32fb('0x3c')],'as':_0x32fb('0x62'),'attributes':['id',_0x32fb('0x39'),_0x32fb('0x63'),_0x32fb('0x64'),_0x32fb('0x65'),_0x32fb('0x66')],'include':_0x433cd1}];_0x1095fd[_0x32fb('0x5c')]({'model':db[_0x32fb('0x67')],'as':_0x32fb('0x68'),'attributes':['id',_0x32fb('0x1e')]});_0x1095fd[_0x32fb('0x5c')]({'model':db[_0x32fb('0x5d')],'as':_0x32fb('0x69'),'attributes':['id','fullname']});return db[_0x32fb('0x22')][_0x32fb('0x36')]({'where':{'id':_0x1d3c5a[_0x32fb('0x2c')]['id']},'include':_0x1095fd})[_0x32fb('0x1b')](handleEntityNotFound(_0x49f38c,null))['then'](function(_0x5cc0e1){if(_0x5cc0e1){var _0x40512c=_0x5cc0e1['get']({'plain':!![]});fs[_0x32fb('0x6a')](_0x4d966d);var _0x224852={'channel':'Openchannel','account':_0x40512c['Account']['name'],'agent':_0x40512c[_0x32fb('0x69')]?_0x40512c[_0x32fb('0x69')][_0x32fb('0x5e')]:_0x32fb('0x6b'),'createdAt':moment(_0x40512c[_0x32fb('0x63')])[_0x32fb('0x4b')](_0x32fb('0x4c'))[_0x32fb('0x6c')](),'closedAt':_0x40512c['closed']?moment(_0x40512c[_0x32fb('0x6d')])[_0x32fb('0x4b')](_0x32fb('0x4c'))[_0x32fb('0x6c')]():'','disposition':_0x40512c[_0x32fb('0x6e')],'visibility':_0x40512c[_0x32fb('0x6f')]?_0x32fb('0x70'):_0x32fb('0x71'),'messages':_(_0x40512c[_0x32fb('0x62')])[_0x32fb('0x47')]({'secret':![]})[_0x32fb('0x21')](function(_0x78619){if(_0x78619[_0x32fb('0x61')]){var _0x3e4ec7=path['join'](_0x946a30,_0x78619['Attachment']['basename']);if(fs[_0x32fb('0x72')](_0x3e4ec7)){fs[_0x32fb('0x73')](_0x3e4ec7)['pipe'](fs[_0x32fb('0x74')](path[_0x32fb('0x56')](_0x4d966d,_0x78619[_0x32fb('0x61')][_0x32fb('0x75')])));}}return{'date':moment(_0x78619[_0x32fb('0x63')])[_0x32fb('0x4b')](_0x32fb('0x4c'))[_0x32fb('0x6c')](),'sender':_0x78619['direction']===_0x32fb('0x76')?_0x78619[_0x32fb('0x5d')]?_0x78619[_0x32fb('0x5d')][_0x32fb('0x5e')]:_0x32fb('0x77'):_0x78619[_0x32fb('0x78')]['firstName']+(_0x78619[_0x32fb('0x78')][_0x32fb('0x60')]?'\x20'+_0x78619[_0x32fb('0x78')][_0x32fb('0x60')]:''),'body':_0x78619[_0x32fb('0x61')]?_0x78619[_0x32fb('0x61')]['basename']:_0x78619[_0x32fb('0x39')],'direction':_0x78619[_0x32fb('0x64')]===_0x32fb('0x76')?'A':'C','secret':_0x78619[_0x32fb('0x65')],'read':_0x78619[_0x32fb('0x66')],'attachment':_0x78619['Attachment']};})[_0x32fb('0x79')]()};return ejs[_0x32fb('0x7a')](path['join'](config[_0x32fb('0x57')],_0x32fb('0x58'),_0x32fb('0x7b'),_0x32fb('0x7c')),{'interaction':_0x224852})[_0x32fb('0x1b')](function(_0x9b93bc){var _0x140218=path[_0x32fb('0x56')](_0x4d966d,_0x32fb('0x7d')+_0x40512c['id']+'-'+_0x42cc2e+'.pdf');var _0x22d3b6={'path':_0x140218,'channel':_0x32fb('0x7e'),'interactionId':_0x40512c['id']};return pdf[_0x32fb('0x7f')](_0x9b93bc,_0x22d3b6);})['then'](function(){return new Promise(function(_0x2feaad,_0xea61c){zipdir(_0x4d966d,{'saveTo':_0x4d68a4},function(_0x4df0ae,_0x1d2bd3){if(_0x4df0ae)return _0xea61c(_0x4df0ae);return _0x2feaad(_0x1d2bd3);});})['then'](function(){return new Promise(function(_0x313b44,_0x15abcc){rimraf(_0x4d966d,function(_0x2d0e53){if(_0x2d0e53)_0x15abcc(_0x2d0e53);return _0x313b44();});});})[_0x32fb('0x1b')](function(){return _0x49f38c[_0x32fb('0x54')](_0x4d68a4,_0x114df3,function(_0x4a9392){if(_0x4a9392){logger[_0x32fb('0x80')](_0x32fb('0x81'),_0x4a9392);}else{fs[_0x32fb('0x82')](_0x4d68a4);}});});});}else{return _0x49f38c[_0x32fb('0x12')](0xc8);}})[_0x32fb('0x37')](handleError(_0x49f38c,null));};
\ No newline at end of file
index d59ea46..e7dd40c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7288=['../../mysqldb','OpenchannelInteraction','setMaxListeners','save','update','getUsers','Users','map','findAll','unreadMessages','length','emit','catch','hasOwnProperty','exports'];(function(_0x2a50f7,_0x4c5ed1){var _0x5123ec=function(_0x552d41){while(--_0x552d41){_0x2a50f7['push'](_0x2a50f7['shift']());}};_0x5123ec(++_0x4c5ed1);}(_0x7288,0x1c2));var _0x8728=function(_0x1cc2c3,_0x8e376c){_0x1cc2c3=_0x1cc2c3-0x0;var _0x50abb0=_0x7288[_0x1cc2c3];return _0x50abb0;};'use strict';var EventEmitter=require('events');var OpenchannelInteraction=require(_0x8728('0x0'))['db'][_0x8728('0x1')];var OpenchannelMessage=require('../../mysqldb')['db']['OpenchannelMessage'];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0x8728('0x2')](0x0);var events={'afterCreate':_0x8728('0x3'),'afterUpdate':_0x8728('0x4'),'afterDestroy':'remove'};function emitEvent(_0x3a57d1){return function(_0x461a08,_0x2b5295,_0xa4b29c){_0x461a08[_0x8728('0x5')]({'attributes':['id'],'raw':!![]})['then'](function(_0x3e85a1){_0x461a08['setDataValue'](_0x8728('0x6'),_0x3e85a1[_0x8728('0x7')](function(_0x29a83b){return{'id':_0x29a83b['id']};}));return OpenchannelMessage[_0x8728('0x8')]({'where':{'OpenchannelInteractionId':_0x461a08['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x10f1c8){_0x461a08['setDataValue'](_0x8728('0x9'),_0x10f1c8[_0x8728('0xa')]);OpenchannelInteractionEvents[_0x8728('0xb')](_0x3a57d1+':'+_0x461a08['id'],_0x461a08);OpenchannelInteractionEvents[_0x8728('0xb')](_0x3a57d1,_0x461a08);_0xa4b29c(null);})[_0x8728('0xc')](_0xa4b29c(null));};}for(var e in events){if(events[_0x8728('0xd')](e)){var event=events[e];OpenchannelInteraction['hook'](e,emitEvent(event));}}module[_0x8728('0xe')]=OpenchannelInteractionEvents;
\ No newline at end of file
+var _0xe6df=['setDataValue','Users','map','findAll','unreadMessages','emit','catch','hasOwnProperty','hook','exports','OpenchannelInteraction','update','getUsers'];(function(_0x3c99dd,_0x1aa50d){var _0x5ef455=function(_0x2d01d0){while(--_0x2d01d0){_0x3c99dd['push'](_0x3c99dd['shift']());}};_0x5ef455(++_0x1aa50d);}(_0xe6df,0x10e));var _0xfe6d=function(_0x980ddd,_0x5cbc5e){_0x980ddd=_0x980ddd-0x0;var _0x32575a=_0xe6df[_0x980ddd];return _0x32575a;};'use strict';var EventEmitter=require('events');var OpenchannelInteraction=require('../../mysqldb')['db'][_0xfe6d('0x0')];var OpenchannelMessage=require('../../mysqldb')['db']['OpenchannelMessage'];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xfe6d('0x1'),'afterDestroy':'remove'};function emitEvent(_0x1c9d5d){return function(_0x4f2e05,_0xcfbd82,_0x42933c){_0x4f2e05[_0xfe6d('0x2')]({'attributes':['id'],'raw':!![]})['then'](function(_0x6667a5){_0x4f2e05[_0xfe6d('0x3')](_0xfe6d('0x4'),_0x6667a5[_0xfe6d('0x5')](function(_0x308fe1){return{'id':_0x308fe1['id']};}));return OpenchannelMessage[_0xfe6d('0x6')]({'where':{'OpenchannelInteractionId':_0x4f2e05['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x35a7d6){_0x4f2e05[_0xfe6d('0x3')](_0xfe6d('0x7'),_0x35a7d6['length']);OpenchannelInteractionEvents['emit'](_0x1c9d5d+':'+_0x4f2e05['id'],_0x4f2e05);OpenchannelInteractionEvents[_0xfe6d('0x8')](_0x1c9d5d,_0x4f2e05);_0x42933c(null);})[_0xfe6d('0x9')](_0x42933c(null));};}for(var e in events){if(events[_0xfe6d('0xa')](e)){var event=events[e];OpenchannelInteraction[_0xfe6d('0xb')](e,emitEvent(event));}}module[_0xfe6d('0xc')]=OpenchannelInteractionEvents;
\ No newline at end of file
index 162d5c3..ec3824e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x354e=['OpenchannelInteraction','openchannel_interactions','changed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','api','moment','request-promise','path','rimraf','./openchannelInteraction.attributes','exports','define'];(function(_0x3965e3,_0x1700e0){var _0x4b7dd4=function(_0x48c9a9){while(--_0x48c9a9){_0x3965e3['push'](_0x3965e3['shift']());}};_0x4b7dd4(++_0x1700e0);}(_0x354e,0x186));var _0xe354=function(_0x29dc1f,_0x266ad9){_0x29dc1f=_0x29dc1f-0x0;var _0x3be5f6=_0x354e[_0x29dc1f];return _0x3be5f6;};'use strict';var _=require(_0xe354('0x0'));var util=require(_0xe354('0x1'));var logger=require('../../config/logger')(_0xe354('0x2'));var moment=require(_0xe354('0x3'));var BPromise=require('bluebird');var rp=require(_0xe354('0x4'));var fs=require('fs');var path=require(_0xe354('0x5'));var rimraf=require(_0xe354('0x6'));var config=require('../../config/environment');var attributes=require(_0xe354('0x7'));module[_0xe354('0x8')]=function(_0x3dcbe6,_0x4b908a){return _0x3dcbe6[_0xe354('0x9')](_0xe354('0xa'),attributes,{'tableName':_0xe354('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci','hooks':{'beforeUpdate':function(_0x1ad5a3,_0x27e10a,_0x3a5121){if(_0x1ad5a3[_0xe354('0xc')]('closed')){_0x1ad5a3[_0xe354('0xd')]=moment()[_0xe354('0xe')](_0xe354('0xf'));}_0x3a5121(null,_0x1ad5a3);}}});};
\ No newline at end of file
+var _0x75bc=['../../config/environment','./openchannelInteraction.attributes','exports','define','OpenchannelInteraction','openchannel_interactions','utf8mb4','utf8mb4_unicode_ci','changed','closedAt','format','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x5df99e,_0x235d0f){var _0x24d7a0=function(_0xce6efa){while(--_0xce6efa){_0x5df99e['push'](_0x5df99e['shift']());}};_0x24d7a0(++_0x235d0f);}(_0x75bc,0x10f));var _0xc75b=function(_0x3d3179,_0x5e3c51){_0x3d3179=_0x3d3179-0x0;var _0x5bde8e=_0x75bc[_0x3d3179];return _0x5bde8e;};'use strict';var _=require(_0xc75b('0x0'));var util=require(_0xc75b('0x1'));var logger=require(_0xc75b('0x2'))(_0xc75b('0x3'));var moment=require(_0xc75b('0x4'));var BPromise=require(_0xc75b('0x5'));var rp=require(_0xc75b('0x6'));var fs=require('fs');var path=require(_0xc75b('0x7'));var rimraf=require(_0xc75b('0x8'));var config=require(_0xc75b('0x9'));var attributes=require(_0xc75b('0xa'));module[_0xc75b('0xb')]=function(_0x2f7861,_0x2b008){return _0x2f7861[_0xc75b('0xc')](_0xc75b('0xd'),attributes,{'tableName':_0xc75b('0xe'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xc75b('0xf'),'collate':_0xc75b('0x10'),'hooks':{'beforeUpdate':function(_0x979d2b,_0x400d6e,_0x4fd9d4){if(_0x979d2b[_0xc75b('0x11')]('closed')){_0x979d2b[_0xc75b('0x12')]=moment()[_0xc75b('0x13')]('YYYY-MM-DD\x20HH:mm:ss');}_0x4fd9d4(null,_0x979d2b);}}});};
\ No newline at end of file
index f727748..daec472 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6bb6=['bluebird','randomstring','ioredis','../../config/utils','../../config/environment','jayson/promise','defaults','redis','./openchannelInteraction.socket','register','request','then','info','OpenchannelInteraction,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','OpenchannelInteraction','update','body','options','raw','where','limit','UpdateOpenchannelInteraction','debug','AddTagsToOpenchannelInteraction','find','addTags','ids','omit','spread','AddTags','lodash','util','moment'];(function(_0x1c8e23,_0x26885e){var _0x369ac8=function(_0x503578){while(--_0x503578){_0x1c8e23['push'](_0x1c8e23['shift']());}};_0x369ac8(++_0x26885e);}(_0x6bb6,0x9d));var _0x66bb=function(_0x41e25f,_0x36a937){_0x41e25f=_0x41e25f-0x0;var _0x337a8e=_0x6bb6[_0x41e25f];return _0x337a8e;};'use strict';var _=require(_0x66bb('0x0'));var util=require(_0x66bb('0x1'));var moment=require(_0x66bb('0x2'));var BPromise=require(_0x66bb('0x3'));var rs=require(_0x66bb('0x4'));var fs=require('fs');var Redis=require(_0x66bb('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x66bb('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x66bb('0x7'));var jayson=require(_0x66bb('0x8'));var client=jayson['client']['http']({'port':0x232a});config['redis']=_[_0x66bb('0x9')](config[_0x66bb('0xa')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x66bb('0xb'))[_0x66bb('0xc')](socket);function respondWithRpcPromise(_0x5d0d60,_0x295471,_0x56e9cc){return new BPromise(function(_0x117ddb,_0x591643){return client[_0x66bb('0xd')](_0x5d0d60,_0x56e9cc)[_0x66bb('0xe')](function(_0x33a0b3){logger[_0x66bb('0xf')](_0x66bb('0x10'),_0x295471,_0x66bb('0x11'));logger['debug']('OpenchannelInteraction,\x20%s,\x20%s,\x20%s',_0x295471,_0x66bb('0x11'),JSON[_0x66bb('0x12')](_0x33a0b3));if(_0x33a0b3[_0x66bb('0x13')]){if(_0x33a0b3[_0x66bb('0x13')][_0x66bb('0x14')]===0x1f4){logger['error']('OpenchannelInteraction,\x20%s,\x20%s',_0x295471,_0x33a0b3[_0x66bb('0x13')][_0x66bb('0x15')]);return _0x591643(_0x33a0b3[_0x66bb('0x13')][_0x66bb('0x15')]);}logger[_0x66bb('0x13')](_0x66bb('0x10'),_0x295471,_0x33a0b3[_0x66bb('0x13')]['message']);return _0x117ddb(_0x33a0b3[_0x66bb('0x13')][_0x66bb('0x15')]);}else{logger[_0x66bb('0xf')](_0x66bb('0x10'),_0x295471,_0x66bb('0x11'));_0x117ddb(_0x33a0b3[_0x66bb('0x16')]['message']);}})[_0x66bb('0x17')](function(_0x35b1e8){logger['error'](_0x66bb('0x10'),_0x295471,_0x35b1e8);_0x591643(_0x35b1e8);});});}exports['UpdateOpenchannelInteraction']=function(_0x2784e6){var _0x24f8b6=this;return new Promise(function(_0x44e17c,_0x473117){return db[_0x66bb('0x18')][_0x66bb('0x19')](_0x2784e6[_0x66bb('0x1a')],{'raw':_0x2784e6[_0x66bb('0x1b')]?_0x2784e6[_0x66bb('0x1b')][_0x66bb('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2784e6['options']?_0x2784e6[_0x66bb('0x1b')][_0x66bb('0x1d')]||null:null,'attributes':_0x2784e6[_0x66bb('0x1b')]?_0x2784e6[_0x66bb('0x1b')]['attributes']||null:null,'limit':_0x2784e6[_0x66bb('0x1b')]?_0x2784e6['options'][_0x66bb('0x1e')]||null:null})[_0x66bb('0xe')](function(_0x54f2fd){logger[_0x66bb('0xf')](_0x66bb('0x1f'),_0x2784e6);logger[_0x66bb('0x20')](_0x66bb('0x1f'),_0x2784e6,JSON[_0x66bb('0x12')](_0x54f2fd));_0x44e17c(_0x54f2fd);})[_0x66bb('0x17')](function(_0x3989f9){logger[_0x66bb('0x13')](_0x66bb('0x1f'),_0x3989f9[_0x66bb('0x15')],_0x2784e6);_0x473117(_0x24f8b6[_0x66bb('0x13')](0x1f4,_0x3989f9['message']));});});};exports[_0x66bb('0x21')]=function(_0x2a140a){return new Promise(function(_0x1feba3,_0x5c434e){return db[_0x66bb('0x18')][_0x66bb('0x22')]({'where':_0x2a140a['options']?_0x2a140a['options'][_0x66bb('0x1d')]||null:null})[_0x66bb('0xe')](function(_0x4a959f){if(_0x4a959f){return _0x4a959f[_0x66bb('0x23')](_0x2a140a['body'][_0x66bb('0x24')],_[_0x66bb('0x25')](_0x2a140a[_0x66bb('0x1a')],[_0x66bb('0x24'),'id'])||{});}})[_0x66bb('0x26')](function(_0x2e03f0){logger[_0x66bb('0xf')](_0x66bb('0x27'),_0x2a140a);logger[_0x66bb('0x20')](_0x66bb('0x27'),_0x2a140a,JSON['stringify'](_0x2e03f0));_0x1feba3(_0x2e03f0);})[_0x66bb('0x17')](function(_0x34e146){logger['error'](_0x66bb('0x27'),_0x34e146[_0x66bb('0x15')],_0x2a140a);_0x5c434e(_this[_0x66bb('0x13')](0x1f4,_0x34e146['message']));});});};
\ No newline at end of file
+var _0x5819=['stringify','error','code','message','catch','UpdateOpenchannelInteraction','OpenchannelInteraction','update','body','options','raw','where','attributes','limit','addTags','ids','omit','spread','AddTags','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','info','OpenchannelInteraction,\x20%s,\x20%s','request\x20sent','debug','OpenchannelInteraction,\x20%s,\x20%s,\x20%s'];(function(_0x319311,_0x4242a4){var _0x4f6bf3=function(_0xb4358b){while(--_0xb4358b){_0x319311['push'](_0x319311['shift']());}};_0x4f6bf3(++_0x4242a4);}(_0x5819,0x6b));var _0x9581=function(_0x372b9d,_0x547e8c){_0x372b9d=_0x372b9d-0x0;var _0x48cb9b=_0x5819[_0x372b9d];return _0x48cb9b;};'use strict';var _=require(_0x9581('0x0'));var util=require(_0x9581('0x1'));var moment=require(_0x9581('0x2'));var BPromise=require(_0x9581('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9581('0x4'));var db=require(_0x9581('0x5'))['db'];var utils=require(_0x9581('0x6'));var logger=require(_0x9581('0x7'))(_0x9581('0x8'));var config=require(_0x9581('0x9'));var jayson=require(_0x9581('0xa'));var client=jayson[_0x9581('0xb')][_0x9581('0xc')]({'port':0x232a});config[_0x9581('0xd')]=_[_0x9581('0xe')](config['redis'],{'host':_0x9581('0xf'),'port':0x18eb});var socket=require(_0x9581('0x10'))(new Redis(config[_0x9581('0xd')]));require('./openchannelInteraction.socket')[_0x9581('0x11')](socket);function respondWithRpcPromise(_0x52918d,_0x48723e,_0x3d7b3b){return new BPromise(function(_0x4ec5fc,_0x7310da){return client[_0x9581('0x12')](_0x52918d,_0x3d7b3b)[_0x9581('0x13')](function(_0x1bc3ab){logger[_0x9581('0x14')](_0x9581('0x15'),_0x48723e,_0x9581('0x16'));logger[_0x9581('0x17')](_0x9581('0x18'),_0x48723e,_0x9581('0x16'),JSON[_0x9581('0x19')](_0x1bc3ab));if(_0x1bc3ab['error']){if(_0x1bc3ab[_0x9581('0x1a')][_0x9581('0x1b')]===0x1f4){logger[_0x9581('0x1a')](_0x9581('0x15'),_0x48723e,_0x1bc3ab[_0x9581('0x1a')][_0x9581('0x1c')]);return _0x7310da(_0x1bc3ab[_0x9581('0x1a')]['message']);}logger[_0x9581('0x1a')](_0x9581('0x15'),_0x48723e,_0x1bc3ab[_0x9581('0x1a')][_0x9581('0x1c')]);return _0x4ec5fc(_0x1bc3ab[_0x9581('0x1a')][_0x9581('0x1c')]);}else{logger['info']('OpenchannelInteraction,\x20%s,\x20%s',_0x48723e,'request\x20sent');_0x4ec5fc(_0x1bc3ab['result'][_0x9581('0x1c')]);}})[_0x9581('0x1d')](function(_0x3bc512){logger[_0x9581('0x1a')]('OpenchannelInteraction,\x20%s,\x20%s',_0x48723e,_0x3bc512);_0x7310da(_0x3bc512);});});}exports[_0x9581('0x1e')]=function(_0x6707e3){var _0x45ebcd=this;return new Promise(function(_0x3700c2,_0x2cefa7){return db[_0x9581('0x1f')][_0x9581('0x20')](_0x6707e3[_0x9581('0x21')],{'raw':_0x6707e3[_0x9581('0x22')]?_0x6707e3[_0x9581('0x22')][_0x9581('0x23')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x6707e3[_0x9581('0x22')]?_0x6707e3[_0x9581('0x22')][_0x9581('0x24')]||null:null,'attributes':_0x6707e3[_0x9581('0x22')]?_0x6707e3[_0x9581('0x22')][_0x9581('0x25')]||null:null,'limit':_0x6707e3[_0x9581('0x22')]?_0x6707e3[_0x9581('0x22')][_0x9581('0x26')]||null:null})[_0x9581('0x13')](function(_0x3af26f){logger['info']('UpdateOpenchannelInteraction',_0x6707e3);logger[_0x9581('0x17')](_0x9581('0x1e'),_0x6707e3,JSON[_0x9581('0x19')](_0x3af26f));_0x3700c2(_0x3af26f);})[_0x9581('0x1d')](function(_0x5a3df7){logger[_0x9581('0x1a')](_0x9581('0x1e'),_0x5a3df7[_0x9581('0x1c')],_0x6707e3);_0x2cefa7(_0x45ebcd[_0x9581('0x1a')](0x1f4,_0x5a3df7['message']));});});};exports['AddTagsToOpenchannelInteraction']=function(_0x37be13){return new Promise(function(_0x10936e,_0x54dfeb){return db[_0x9581('0x1f')]['find']({'where':_0x37be13[_0x9581('0x22')]?_0x37be13['options'][_0x9581('0x24')]||null:null})['then'](function(_0x1d7144){if(_0x1d7144){return _0x1d7144[_0x9581('0x27')](_0x37be13['body'][_0x9581('0x28')],_[_0x9581('0x29')](_0x37be13[_0x9581('0x21')],['ids','id'])||{});}})[_0x9581('0x2a')](function(_0x5278d2){logger[_0x9581('0x14')](_0x9581('0x2b'),_0x37be13);logger['debug'](_0x9581('0x2b'),_0x37be13,JSON['stringify'](_0x5278d2));_0x10936e(_0x5278d2);})[_0x9581('0x1d')](function(_0x4659c8){logger[_0x9581('0x1a')](_0x9581('0x2b'),_0x4659c8['message'],_0x37be13);_0x54dfeb(_this[_0x9581('0x1a')](0x1f4,_0x4659c8['message']));});});};
\ No newline at end of file
index 0a2f74b..600f364 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc16c=['remove','removeListener','register','length','./openchannelInteraction.events','save'];(function(_0x2910fa,_0x1552d7){var _0x17181b=function(_0x1b6122){while(--_0x1b6122){_0x2910fa['push'](_0x2910fa['shift']());}};_0x17181b(++_0x1552d7);}(_0xc16c,0xa6));var _0xcc16=function(_0xce6e82,_0x24e177){_0xce6e82=_0xce6e82-0x0;var _0x2ba1f7=_0xc16c[_0xce6e82];return _0x2ba1f7;};'use strict';var OpenchannelInteractionEvents=require(_0xcc16('0x0'));var events=[_0xcc16('0x1'),_0xcc16('0x2'),'update'];function createListener(_0x361ae4,_0x2d0902){return function(_0x4bfb5a){_0x2d0902['emit'](_0x361ae4,_0x4bfb5a);};}function removeListener(_0x17e2df,_0x45f16b){return function(){OpenchannelInteractionEvents[_0xcc16('0x3')](_0x17e2df,_0x45f16b);};}exports[_0xcc16('0x4')]=function(_0x353585){for(var _0xb810a4=0x0,_0x3cf088=events[_0xcc16('0x5')];_0xb810a4<_0x3cf088;_0xb810a4++){var _0x430d9c=events[_0xb810a4];var _0x308e5f=createListener('openchannelInteraction:'+_0x430d9c,_0x353585);OpenchannelInteractionEvents['on'](_0x430d9c,_0x308e5f);}};
\ No newline at end of file
+var _0xafb4=['save','remove','update','emit','register','length','./openchannelInteraction.events'];(function(_0x5565ef,_0x557acf){var _0x29c3df=function(_0xe21cd3){while(--_0xe21cd3){_0x5565ef['push'](_0x5565ef['shift']());}};_0x29c3df(++_0x557acf);}(_0xafb4,0xb5));var _0x4afb=function(_0x2fca9d,_0x1acd79){_0x2fca9d=_0x2fca9d-0x0;var _0x3cb2e9=_0xafb4[_0x2fca9d];return _0x3cb2e9;};'use strict';var OpenchannelInteractionEvents=require(_0x4afb('0x0'));var events=[_0x4afb('0x1'),_0x4afb('0x2'),_0x4afb('0x3')];function createListener(_0x30f5b7,_0x5a748b){return function(_0x446c20){_0x5a748b[_0x4afb('0x4')](_0x30f5b7,_0x446c20);};}function removeListener(_0x156f44,_0x2cc767){return function(){OpenchannelInteractionEvents['removeListener'](_0x156f44,_0x2cc767);};}exports[_0x4afb('0x5')]=function(_0x21bf9c){for(var _0x49cad8=0x0,_0x570434=events[_0x4afb('0x6')];_0x49cad8<_0x570434;_0x49cad8++){var _0xea3004=events[_0x49cad8];var _0xd30172=createListener('openchannelInteraction:'+_0xea3004,_0x21bf9c);OpenchannelInteractionEvents['on'](_0xea3004,_0xd30172);}};
\ No newline at end of file
index 977ec85..9abe2ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['openchannelmessage:create','put','update','/:id/reject','reject','destroy','exports','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./openchannelMessage.controller','get','index','isAuthenticated','describe','/:id','post','tracked','openchannel'];(function(_0x4aaff3,_0x18b012){var _0x3a20f3=function(_0x550df8){while(--_0x550df8){_0x4aaff3['push'](_0x4aaff3['shift']());}};_0x3a20f3(++_0x18b012);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x51cc1d,_0xaa88ae){_0x51cc1d=_0x51cc1d-0x0;var _0x2eb9f2=_0xcb91[_0x51cc1d];return _0x2eb9f2;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');var controller=require(_0x1cb9('0x6'));router[_0x1cb9('0x7')]('/',auth['isAuthenticated'](),controller[_0x1cb9('0x8')]);router[_0x1cb9('0x7')]('/describe',auth[_0x1cb9('0x9')](),controller[_0x1cb9('0xa')]);router['get'](_0x1cb9('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x1cb9('0xc')]('/',auth[_0x1cb9('0x9')](),interaction[_0x1cb9('0xd')](_0x1cb9('0xe'),_0x1cb9('0xf')),controller['create']);router[_0x1cb9('0x10')](_0x1cb9('0xb'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0x11')]);router[_0x1cb9('0x10')]('/:id/accept',auth['isAuthenticated'](),controller['accept']);router[_0x1cb9('0x10')](_0x1cb9('0x12'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0x13')]);router['delete'](_0x1cb9('0xb'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0x14')]);module[_0x1cb9('0x15')]=router;
\ No newline at end of file
+var _0xcb91=['openchannelmessage:create','put','update','/:id/reject','reject','destroy','exports','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./openchannelMessage.controller','get','index','isAuthenticated','describe','/:id','post','tracked','openchannel'];(function(_0x221a9f,_0x2a5e1c){var _0x5976c7=function(_0x1c2055){while(--_0x1c2055){_0x221a9f['push'](_0x221a9f['shift']());}};_0x5976c7(++_0x2a5e1c);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x50f0a9,_0x2b0c57){_0x50f0a9=_0x50f0a9-0x0;var _0x5a33d9=_0xcb91[_0x50f0a9];return _0x5a33d9;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');var controller=require(_0x1cb9('0x6'));router[_0x1cb9('0x7')]('/',auth['isAuthenticated'](),controller[_0x1cb9('0x8')]);router[_0x1cb9('0x7')]('/describe',auth[_0x1cb9('0x9')](),controller[_0x1cb9('0xa')]);router['get'](_0x1cb9('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x1cb9('0xc')]('/',auth[_0x1cb9('0x9')](),interaction[_0x1cb9('0xd')](_0x1cb9('0xe'),_0x1cb9('0xf')),controller['create']);router[_0x1cb9('0x10')](_0x1cb9('0xb'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0x11')]);router[_0x1cb9('0x10')]('/:id/accept',auth['isAuthenticated'](),controller['accept']);router[_0x1cb9('0x10')](_0x1cb9('0x12'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0x13')]);router['delete'](_0x1cb9('0xb'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0x14')]);module[_0x1cb9('0x15')]=router;
\ No newline at end of file
index 559c6dd..f2354cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1bd1=['BOOLEAN','DATE','STRING','sequelize','exports','TEXT'];(function(_0x5da388,_0x2841af){var _0x57bc7a=function(_0x48820e){while(--_0x48820e){_0x5da388['push'](_0x5da388['shift']());}};_0x57bc7a(++_0x2841af);}(_0x1bd1,0x123));var _0x11bd=function(_0x2ef529,_0x3fd12e){_0x2ef529=_0x2ef529-0x0;var _0x119dde=_0x1bd1[_0x2ef529];return _0x119dde;};'use strict';var Sequelize=require(_0x11bd('0x0'));module[_0x11bd('0x1')]={'body':{'type':Sequelize[_0x11bd('0x2')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x11bd('0x3')],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'out','allowNull':![]},'readAt':{'type':Sequelize[_0x11bd('0x4')]},'providerName':{'type':Sequelize[_0x11bd('0x5')]},'providerResponse':{'type':Sequelize[_0x11bd('0x2')]}};
\ No newline at end of file
+var _0x0647=['medium','BOOLEAN','ENUM','DATE','STRING','sequelize','TEXT'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x0647,0xd0));var _0x7064=function(_0xbeb808,_0x881ddf){_0xbeb808=_0xbeb808-0x0;var _0x5d6909=_0x0647[_0xbeb808];return _0x5d6909;};'use strict';var Sequelize=require(_0x7064('0x0'));module['exports']={'body':{'type':Sequelize[_0x7064('0x1')](_0x7064('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x7064('0x3')],'defaultValue':![]},'secret':{'type':Sequelize[_0x7064('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x7064('0x4')]('in','out'),'defaultValue':'out','allowNull':![]},'readAt':{'type':Sequelize[_0x7064('0x5')]},'providerName':{'type':Sequelize[_0x7064('0x6')]},'providerResponse':{'type':Sequelize[_0x7064('0x1')]}};
\ No newline at end of file
index 6d6148f..8d74284 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf07=['crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./openchannelMessage.socket','register','jayson/promise','client','http','then','info','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','destroy','stack','name','index','map','OpenchannelMessage','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','limit','order','where','filter','options','includeAll','include','findAll','rows','show','params','rawAttributes','find','create','body','describe','accept','openchannel','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','OpenchannelInteraction','read1stAt','interaction','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','SELECT','contact','fullname','email','internal','manual','interface','SIP/%s','channel','motionChannel','EventManager','acceptmessage','role','RejectMessage','rejectMessage','ContactId','User','event','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','sox','lodash'];(function(_0x1f8155,_0x38250c){var _0x3e187e=function(_0x2b29e4){while(--_0x2b29e4){_0x1f8155['push'](_0x1f8155['shift']());}};_0x3e187e(++_0x38250c);}(_0xbf07,0x77));var _0x7bf0=function(_0x2afbb0,_0x44f16d){_0x2afbb0=_0x2afbb0-0x0;var _0x411ff2=_0xbf07[_0x2afbb0];return _0x411ff2;};'use strict';var emlformat=require(_0x7bf0('0x0'));var rimraf=require(_0x7bf0('0x1'));var zipdir=require(_0x7bf0('0x2'));var jsonpatch=require(_0x7bf0('0x3'));var rp=require('request-promise');var moment=require(_0x7bf0('0x4'));var BPromise=require(_0x7bf0('0x5'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x7bf0('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7bf0('0x7'));var squel=require('squel');var crypto=require(_0x7bf0('0x8'));var jsforce=require('jsforce');var deskjs=require(_0x7bf0('0x9'));var toCsv=require(_0x7bf0('0xa'));var querystring=require(_0x7bf0('0xb'));var Papa=require(_0x7bf0('0xc'));var Redis=require(_0x7bf0('0xd'));var authService=require(_0x7bf0('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x7bf0('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7bf0('0x10'))(_0x7bf0('0x11'));var utils=require(_0x7bf0('0x12'));var config=require(_0x7bf0('0x13'));var licenseUtil=require(_0x7bf0('0x14'));var db=require(_0x7bf0('0x15'))['db'];config[_0x7bf0('0x16')]=_[_0x7bf0('0x17')](config[_0x7bf0('0x16')],{'host':_0x7bf0('0x18'),'port':0x18eb});var socket=require(_0x7bf0('0x19'))(new Redis(config[_0x7bf0('0x16')]));require(_0x7bf0('0x1a'))[_0x7bf0('0x1b')](socket);var jayson=require(_0x7bf0('0x1c'));var client=jayson[_0x7bf0('0x1d')][_0x7bf0('0x1e')]({'port':0x232c});var client9002=jayson[_0x7bf0('0x1d')][_0x7bf0('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x182df9,_0x4f551c,_0x319809,_0x26e6b6){return new BPromise(function(_0x187489,_0x1c2bbe){var _0x13c9bb=_0x26e6b6||client;return _0x13c9bb['request'](_0x182df9,_0x319809)[_0x7bf0('0x1f')](function(_0x3a1c6e){logger[_0x7bf0('0x20')](_0x7bf0('0x21'),_0x4f551c,_0x7bf0('0x22'));logger[_0x7bf0('0x23')](_0x7bf0('0x24'),_0x4f551c,_0x7bf0('0x22'),JSON[_0x7bf0('0x25')](_0x3a1c6e));if(_0x3a1c6e[_0x7bf0('0x26')]){if(_0x3a1c6e['error'][_0x7bf0('0x27')]===0x1f4){logger[_0x7bf0('0x26')](_0x7bf0('0x21'),_0x4f551c,_0x3a1c6e[_0x7bf0('0x26')][_0x7bf0('0x28')]);return _0x1c2bbe(_0x3a1c6e[_0x7bf0('0x26')]['message']);}logger['error'](_0x7bf0('0x21'),_0x4f551c,_0x3a1c6e[_0x7bf0('0x26')]['message']);return _0x187489(_0x3a1c6e[_0x7bf0('0x26')]['message']);}else{logger[_0x7bf0('0x20')](_0x7bf0('0x21'),_0x4f551c,_0x7bf0('0x22'));_0x187489(_0x3a1c6e[_0x7bf0('0x29')][_0x7bf0('0x28')]);}})[_0x7bf0('0x2a')](function(_0x2e4994){logger[_0x7bf0('0x26')](_0x7bf0('0x21'),_0x4f551c,_0x2e4994);_0x1c2bbe(_0x2e4994);});});}function respondWithStatusCode(_0x336572,_0x1e0f7f){_0x1e0f7f=_0x1e0f7f||0xcc;return function(_0x573ab4){if(_0x573ab4){return _0x336572[_0x7bf0('0x2b')](_0x1e0f7f);}return _0x336572[_0x7bf0('0x2c')](_0x1e0f7f)[_0x7bf0('0x2d')]();};}function respondWithResult(_0x368f9f,_0x2ba0a3){_0x2ba0a3=_0x2ba0a3||0xc8;return function(_0x59cb00){if(_0x59cb00){return _0x368f9f[_0x7bf0('0x2c')](_0x2ba0a3)[_0x7bf0('0x2e')](_0x59cb00);}};}function respondWithFilteredResult(_0x4d1b7a,_0x145f54){return function(_0x540e84){if(_0x540e84){var _0x1393f7=typeof _0x145f54[_0x7bf0('0x2f')]===_0x7bf0('0x30')&&typeof _0x145f54['limit']===_0x7bf0('0x30');var _0x37655b=_0x540e84[_0x7bf0('0x31')];var _0x5ad9c9=_0x1393f7?0x0:_0x145f54[_0x7bf0('0x2f')];var _0x318c1f=_0x1393f7?_0x540e84[_0x7bf0('0x31')]:_0x145f54[_0x7bf0('0x2f')]+_0x145f54['limit'];var _0x37942;if(_0x318c1f>=_0x37655b){_0x318c1f=_0x37655b;_0x37942=0xc8;}else{_0x37942=0xce;}_0x4d1b7a[_0x7bf0('0x2c')](_0x37942);return _0x4d1b7a[_0x7bf0('0x32')](_0x7bf0('0x33'),_0x5ad9c9+'-'+_0x318c1f+'/'+_0x37655b)[_0x7bf0('0x2e')](_0x540e84);}return null;};}function patchUpdates(_0x4eac51){return function(_0x1c9910){try{jsonpatch[_0x7bf0('0x34')](_0x1c9910,_0x4eac51,!![]);}catch(_0x5f39dc){return BPromise[_0x7bf0('0x35')](_0x5f39dc);}return _0x1c9910[_0x7bf0('0x36')]();};}function saveUpdates(_0x5ce8f4,_0x4227ec){return function(_0x29f774){if(_0x29f774){return _0x29f774[_0x7bf0('0x37')](_0x5ce8f4)[_0x7bf0('0x1f')](function(_0x1ee014){return _0x1ee014;});}return null;};}function removeEntity(_0x206312,_0x13dc1b){return function(_0x36b25f){if(_0x36b25f){return _0x36b25f[_0x7bf0('0x38')]()[_0x7bf0('0x1f')](function(){_0x206312[_0x7bf0('0x2c')](0xcc)[_0x7bf0('0x2d')]();});}};}function handleEntityNotFound(_0xbf6610,_0x19848f){return function(_0xebe907){if(!_0xebe907){_0xbf6610['sendStatus'](0x194);}return _0xebe907;};}function handleError(_0x2e3852,_0x857ddc){_0x857ddc=_0x857ddc||0x1f4;return function(_0x351336){logger[_0x7bf0('0x26')](_0x351336[_0x7bf0('0x39')]);if(_0x351336['name']){delete _0x351336[_0x7bf0('0x3a')];}_0x2e3852[_0x7bf0('0x2c')](_0x857ddc)['send'](_0x351336);};}exports[_0x7bf0('0x3b')]=function(_0x4d8197,_0x426466){var _0x3e6ed3={},_0x2d7e2c={},_0x32a185={'count':0x0,'rows':[]};var _0x172d35=_[_0x7bf0('0x3c')](db[_0x7bf0('0x3d')]['rawAttributes'],function(_0x519cd6){return{'name':_0x519cd6[_0x7bf0('0x3e')],'type':_0x519cd6[_0x7bf0('0x3f')][_0x7bf0('0x40')]};});_0x2d7e2c['model']=_[_0x7bf0('0x3c')](_0x172d35,_0x7bf0('0x3a'));_0x2d7e2c[_0x7bf0('0x41')]=_[_0x7bf0('0x42')](_0x4d8197[_0x7bf0('0x41')]);_0x2d7e2c[_0x7bf0('0x43')]=_[_0x7bf0('0x44')](_0x2d7e2c['model'],_0x2d7e2c[_0x7bf0('0x41')]);_0x3e6ed3['attributes']=_[_0x7bf0('0x44')](_0x2d7e2c[_0x7bf0('0x45')],qs[_0x7bf0('0x46')](_0x4d8197[_0x7bf0('0x41')][_0x7bf0('0x46')]));_0x3e6ed3[_0x7bf0('0x47')]=_0x3e6ed3[_0x7bf0('0x47')][_0x7bf0('0x48')]?_0x3e6ed3[_0x7bf0('0x47')]:_0x2d7e2c[_0x7bf0('0x45')];if(!_0x4d8197[_0x7bf0('0x41')][_0x7bf0('0x49')]('nolimit')){_0x3e6ed3['limit']=qs[_0x7bf0('0x4a')](_0x4d8197[_0x7bf0('0x41')][_0x7bf0('0x4a')]);_0x3e6ed3[_0x7bf0('0x2f')]=qs['offset'](_0x4d8197[_0x7bf0('0x41')][_0x7bf0('0x2f')]);}_0x3e6ed3[_0x7bf0('0x4b')]=qs['sort'](_0x4d8197['query']['sort']);_0x3e6ed3[_0x7bf0('0x4c')]=qs[_0x7bf0('0x43')](_['pick'](_0x4d8197[_0x7bf0('0x41')],_0x2d7e2c[_0x7bf0('0x43')]),_0x172d35);if(_0x4d8197[_0x7bf0('0x41')]['filter']){_0x3e6ed3['where']=_['merge'](_0x3e6ed3['where'],{'$or':_[_0x7bf0('0x3c')](_0x172d35,function(_0x4da701){if(_0x4da701['type']!=='VIRTUAL'){var _0x25e0d0={};_0x25e0d0[_0x4da701[_0x7bf0('0x3a')]]={'$like':'%'+_0x4d8197[_0x7bf0('0x41')][_0x7bf0('0x4d')]+'%'};return _0x25e0d0;}})});}_0x3e6ed3=_['merge']({},_0x3e6ed3,_0x4d8197[_0x7bf0('0x4e')]);var _0x465b07={'where':_0x3e6ed3[_0x7bf0('0x4c')]};return db['OpenchannelMessage']['count'](_0x465b07)[_0x7bf0('0x1f')](function(_0x3bb7a7){_0x32a185[_0x7bf0('0x31')]=_0x3bb7a7;if(_0x4d8197[_0x7bf0('0x41')][_0x7bf0('0x4f')]){_0x3e6ed3[_0x7bf0('0x50')]=[{'all':!![]}];}return db[_0x7bf0('0x3d')][_0x7bf0('0x51')](_0x3e6ed3);})[_0x7bf0('0x1f')](function(_0x371e0a){_0x32a185[_0x7bf0('0x52')]=_0x371e0a;return _0x32a185;})[_0x7bf0('0x1f')](respondWithFilteredResult(_0x426466,_0x3e6ed3))[_0x7bf0('0x2a')](handleError(_0x426466,null));};exports[_0x7bf0('0x53')]=function(_0x5dfde8,_0x5c2a84){var _0x5c4cb2={'raw':!![],'where':{'id':_0x5dfde8[_0x7bf0('0x54')]['id']}},_0x24dfea={};_0x24dfea[_0x7bf0('0x45')]=_[_0x7bf0('0x42')](db[_0x7bf0('0x3d')][_0x7bf0('0x55')]);_0x24dfea[_0x7bf0('0x41')]=_[_0x7bf0('0x42')](_0x5dfde8[_0x7bf0('0x41')]);_0x24dfea[_0x7bf0('0x43')]=_['intersection'](_0x24dfea['model'],_0x24dfea['query']);_0x5c4cb2[_0x7bf0('0x47')]=_[_0x7bf0('0x44')](_0x24dfea[_0x7bf0('0x45')],qs[_0x7bf0('0x46')](_0x5dfde8[_0x7bf0('0x41')][_0x7bf0('0x46')]));_0x5c4cb2[_0x7bf0('0x47')]=_0x5c4cb2[_0x7bf0('0x47')]['length']?_0x5c4cb2['attributes']:_0x24dfea[_0x7bf0('0x45')];if(_0x5dfde8[_0x7bf0('0x41')]['includeAll']){_0x5c4cb2[_0x7bf0('0x50')]=[{'all':!![]}];}_0x5c4cb2=_['merge']({},_0x5c4cb2,_0x5dfde8[_0x7bf0('0x4e')]);return db[_0x7bf0('0x3d')][_0x7bf0('0x56')](_0x5c4cb2)[_0x7bf0('0x1f')](handleEntityNotFound(_0x5c2a84,null))['then'](respondWithResult(_0x5c2a84,null))[_0x7bf0('0x2a')](handleError(_0x5c2a84,null));};exports['create']=function(_0x452540,_0x294b9e){return db['OpenchannelMessage'][_0x7bf0('0x57')](_0x452540['body'],{})[_0x7bf0('0x1f')](respondWithResult(_0x294b9e,0xc9))[_0x7bf0('0x2a')](handleError(_0x294b9e,null));};exports[_0x7bf0('0x37')]=function(_0x4f0967,_0x842e1c){if(_0x4f0967[_0x7bf0('0x58')]['id']){delete _0x4f0967['body']['id'];}return db[_0x7bf0('0x3d')][_0x7bf0('0x56')]({'where':{'id':_0x4f0967[_0x7bf0('0x54')]['id']}})[_0x7bf0('0x1f')](handleEntityNotFound(_0x842e1c,null))[_0x7bf0('0x1f')](saveUpdates(_0x4f0967[_0x7bf0('0x58')],null))[_0x7bf0('0x1f')](respondWithResult(_0x842e1c,null))[_0x7bf0('0x2a')](handleError(_0x842e1c,null));};exports['destroy']=function(_0x3affd0,_0x34a93f){return db[_0x7bf0('0x3d')][_0x7bf0('0x56')]({'where':{'id':_0x3affd0[_0x7bf0('0x54')]['id']}})[_0x7bf0('0x1f')](handleEntityNotFound(_0x34a93f,null))[_0x7bf0('0x1f')](removeEntity(_0x34a93f,null))['catch'](handleError(_0x34a93f,null));};exports[_0x7bf0('0x59')]=function(_0x57f1d7,_0x166c91){return db[_0x7bf0('0x3d')][_0x7bf0('0x59')]()[_0x7bf0('0x1f')](respondWithResult(_0x166c91,null))['catch'](handleError(_0x166c91,null));};var interaction_log=require(_0x7bf0('0x10'))('openchannel-interactions');exports[_0x7bf0('0x5a')]=function(_0x59fb61,_0x37a8c8,_0x4bafec){var _0x4de958={'agent':{},'channel':_0x7bf0('0x5b')};if(_0x59fb61[_0x7bf0('0x58')]['id']){delete _0x59fb61[_0x7bf0('0x58')]['id'];}_0x59fb61[_0x7bf0('0x58')][_0x7bf0('0x5c')]=!![];_0x59fb61[_0x7bf0('0x58')][_0x7bf0('0x5d')]=moment()[_0x7bf0('0x5e')](_0x7bf0('0x5f'));_0x59fb61[_0x7bf0('0x58')]['UserId']=_0x59fb61[_0x7bf0('0x58')][_0x7bf0('0x60')]||_0x59fb61[_0x7bf0('0x61')]['id'];_0x4de958[_0x7bf0('0x62')]['id']=_0x59fb61['body'][_0x7bf0('0x60')];return db[_0x7bf0('0x3d')][_0x7bf0('0x56')]({'where':{'id':_0x59fb61[_0x7bf0('0x54')]['id'],'UserId':null}})[_0x7bf0('0x1f')](handleEntityNotFound(_0x37a8c8,null))['then'](saveUpdates(_0x59fb61[_0x7bf0('0x58')],null))[_0x7bf0('0x1f')](function(_0x2ecf4a){if(_0x2ecf4a){_0x4de958[_0x7bf0('0x28')]=_0x2ecf4a[_0x7bf0('0x63')]({'plain':!![]});return db[_0x7bf0('0x64')][_0x7bf0('0x56')]({'where':{'id':_0x2ecf4a['OpenchannelInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x37a8c8,null))[_0x7bf0('0x1f')](function(_0x57a842){if(_0x57a842){return _0x57a842[_0x7bf0('0x37')]({'UserId':_0x59fb61[_0x7bf0('0x58')][_0x7bf0('0x60')],'read1stAt':_['isNil'](_0x57a842[_0x7bf0('0x65')])?moment()[_0x7bf0('0x5e')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x7bf0('0x1f')](function(_0x190a23){if(_0x190a23){_0x4de958[_0x7bf0('0x66')]=_0x190a23[_0x7bf0('0x63')]({'plain':!![]});interaction_log[_0x7bf0('0x20')](_0x7bf0('0x67'),_0x59fb61[_0x7bf0('0x61')]['id'],_0x59fb61[_0x7bf0('0x61')][_0x7bf0('0x3a')],_0x59fb61[_0x7bf0('0x61')]['role'],_0x4de958[_0x7bf0('0x66')]['id'],_0x59fb61[_0x7bf0('0x58')]?JSON[_0x7bf0('0x25')](_0x59fb61[_0x7bf0('0x58')]):_0x7bf0('0x68'));return respondWithRpcPromise(_0x7bf0('0x69'),'acceptMessage',_0x4de958);}return null;})[_0x7bf0('0x1f')](function(_0x55273e){var _0xba54f8=_0x7bf0('0x6a')+_0x55273e['message']['ContactId'];return db[_0x7bf0('0x6b')][_0x7bf0('0x41')](_0xba54f8,{'type':db[_0x7bf0('0x6c')]['QueryTypes'][_0x7bf0('0x6d')],'raw':!![]})[_0x7bf0('0x1f')](function(_0x494e33){return _0x494e33;});})[_0x7bf0('0x1f')](function(_0x58b003){if(_0x58b003){_0x4de958[_0x7bf0('0x28')][_0x7bf0('0x6e')]=_0x58b003[0x0];if(!_0x59fb61[_0x7bf0('0x58')][_0x7bf0('0x60')])return;return db['User'][_0x7bf0('0x56')]({'where':{'id':_0x59fb61[_0x7bf0('0x58')][_0x7bf0('0x60')],'role':_0x7bf0('0x62')},'attributes':['id',_0x7bf0('0x3a'),_0x7bf0('0x6f'),_0x7bf0('0x70'),_0x7bf0('0x71')],'raw':!![]});}return null;})[_0x7bf0('0x1f')](function(_0x44fe2f){if(!_0x44fe2f)return null;_0x4de958['message']['agent']=_0x44fe2f;return _0x4de958;})['then'](function(_0x708e7c){if(_0x708e7c){if(_0x59fb61[_0x7bf0('0x58')][_0x7bf0('0x72')]){_0x4de958[_0x7bf0('0x28')][_0x7bf0('0x73')]=util[_0x7bf0('0x5e')](_0x7bf0('0x74'),_0x59fb61[_0x7bf0('0x61')][_0x7bf0('0x3a')]);_0x4de958[_0x7bf0('0x28')][_0x7bf0('0x75')]=_0x4de958[_0x7bf0('0x75')];_0x4de958['message'][_0x7bf0('0x76')]=_0x4de958['channel'];_0x4de958[_0x7bf0('0x28')]['event']='accept';return respondWithRpcPromise(_0x7bf0('0x77'),_0x7bf0('0x77'),{'event':_0x7bf0('0x78'),'message':_0x4de958[_0x7bf0('0x28')]},client9002)[_0x7bf0('0x1f')](function(){return _0x4de958;});}return _0x4de958;}return null;})[_0x7bf0('0x1f')](respondWithResult(_0x37a8c8,null))['catch'](handleError(_0x37a8c8,null));};var interaction_log=require(_0x7bf0('0x10'))('openchannel-interactions');exports['reject']=function(_0x5c1117,_0x28f7cb,_0x44ff1f){var _0x311b24={'agent':{},'channel':_0x7bf0('0x5b')};if(_0x5c1117['body']['id']){delete _0x5c1117['body']['id'];}_0x5c1117['body']['UserId']=_0x5c1117[_0x7bf0('0x58')]['UserId']||_0x5c1117[_0x7bf0('0x61')]['id'];_0x311b24[_0x7bf0('0x62')]['id']=_0x5c1117[_0x7bf0('0x58')][_0x7bf0('0x60')];return db['OpenchannelMessage'][_0x7bf0('0x56')]({'where':{'id':_0x5c1117['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x28f7cb,null))[_0x7bf0('0x1f')](function(_0x2bcf9e){if(_0x2bcf9e){_0x311b24[_0x7bf0('0x28')]=_0x2bcf9e['get']({'plain':!![]});return db[_0x7bf0('0x64')]['find']({'where':{'id':_0x2bcf9e['OpenchannelInteractionId']}});}return null;})[_0x7bf0('0x1f')](handleEntityNotFound(_0x28f7cb,null))[_0x7bf0('0x1f')](function(_0x1591dd){if(_0x1591dd){_0x311b24['interaction']=_0x1591dd['get']({'plain':!![]});interaction_log['info']('[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x5c1117[_0x7bf0('0x61')]['id'],_0x5c1117['user'][_0x7bf0('0x3a')],_0x5c1117[_0x7bf0('0x61')][_0x7bf0('0x79')],_0x311b24[_0x7bf0('0x66')]['id'],_0x5c1117['body']?JSON[_0x7bf0('0x25')](_0x5c1117[_0x7bf0('0x58')]):_0x7bf0('0x68'));return respondWithRpcPromise(_0x7bf0('0x7a'),_0x7bf0('0x7b'),_0x311b24);}return null;})[_0x7bf0('0x1f')](function(_0x479451){var _0x41d1ea='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x479451['message'][_0x7bf0('0x7c')];return db[_0x7bf0('0x6b')]['query'](_0x41d1ea,{'type':db[_0x7bf0('0x6c')]['QueryTypes'][_0x7bf0('0x6d')],'raw':!![]})[_0x7bf0('0x1f')](function(_0xc96482){return _0xc96482;});})[_0x7bf0('0x1f')](function(_0x252633){if(_0x252633){_0x311b24[_0x7bf0('0x28')][_0x7bf0('0x6e')]=_0x252633[0x0];if(!_0x5c1117[_0x7bf0('0x58')][_0x7bf0('0x60')])return;return db[_0x7bf0('0x7d')][_0x7bf0('0x56')]({'where':{'id':_0x5c1117['body'][_0x7bf0('0x60')],'role':_0x7bf0('0x62')},'attributes':['id',_0x7bf0('0x3a'),'fullname',_0x7bf0('0x70'),_0x7bf0('0x71')],'raw':!![]});}return null;})[_0x7bf0('0x1f')](function(_0x3c0c03){if(!_0x3c0c03)return null;_0x311b24[_0x7bf0('0x28')][_0x7bf0('0x62')]=_0x3c0c03;return _0x311b24;})[_0x7bf0('0x1f')](function(_0x40b8ed){if(_0x40b8ed){_0x40b8ed['message'][_0x7bf0('0x73')]=util[_0x7bf0('0x5e')](_0x7bf0('0x74'),_0x5c1117[_0x7bf0('0x61')][_0x7bf0('0x3a')]);_0x40b8ed['message']['channel']=_0x311b24[_0x7bf0('0x75')];_0x40b8ed[_0x7bf0('0x28')][_0x7bf0('0x76')]=_0x311b24[_0x7bf0('0x75')];_0x40b8ed[_0x7bf0('0x28')][_0x7bf0('0x7e')]=_0x7bf0('0x35');respondWithRpcPromise('EventManager',_0x7bf0('0x77'),{'event':'rejectmessage','message':_0x40b8ed['message']},client9002);return _0x311b24;}return null;})[_0x7bf0('0x1f')](respondWithResult(_0x28f7cb,null))[_0x7bf0('0x2a')](handleError(_0x28f7cb,null));};
\ No newline at end of file
+var _0x8be6=['stringify','error','code','message','result','catch','end','status','json','undefined','limit','offset','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','name','send','index','OpenchannelMessage','rawAttributes','fieldName','type','key','model','map','keys','filters','intersection','fields','query','attributes','length','hasOwnProperty','order','where','pick','filter','merge','options','count','include','findAll','rows','show','includeAll','find','create','body','params','describe','openchannel-interactions','accept','openchannel','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','get','OpenchannelInteraction','OpenchannelInteractionId','isNil','read1stAt','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','interaction','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','User','agent','fullname','internal','channel','event','EventManager','acceptmessage','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','email','interface','SIP/%s','motionChannel','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/environment','redis','defaults','localhost','socket.io-emitter','./openchannelMessage.socket','register','client','http','request','info','OpenchannelMessage,\x20%s,\x20%s'];(function(_0x28669c,_0x1f62c4){var _0x4a3af6=function(_0x3e25d5){while(--_0x3e25d5){_0x28669c['push'](_0x28669c['shift']());}};_0x4a3af6(++_0x1f62c4);}(_0x8be6,0x1e9));var _0x68be=function(_0x4022b6,_0x122806){_0x4022b6=_0x4022b6-0x0;var _0x4c8ffa=_0x8be6[_0x4022b6];return _0x4c8ffa;};'use strict';var emlformat=require(_0x68be('0x0'));var rimraf=require(_0x68be('0x1'));var zipdir=require(_0x68be('0x2'));var jsonpatch=require(_0x68be('0x3'));var rp=require(_0x68be('0x4'));var moment=require(_0x68be('0x5'));var BPromise=require(_0x68be('0x6'));var Mustache=require(_0x68be('0x7'));var util=require(_0x68be('0x8'));var path=require(_0x68be('0x9'));var sox=require(_0x68be('0xa'));var csv=require(_0x68be('0xb'));var ejs=require(_0x68be('0xc'));var fs=require('fs');var fs_extra=require(_0x68be('0xd'));var _=require(_0x68be('0xe'));var squel=require(_0x68be('0xf'));var crypto=require(_0x68be('0x10'));var jsforce=require('jsforce');var deskjs=require(_0x68be('0x11'));var toCsv=require(_0x68be('0xb'));var querystring=require(_0x68be('0x12'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x68be('0x13'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x68be('0x14'));var logger=require(_0x68be('0x15'))(_0x68be('0x16'));var utils=require('../../config/utils');var config=require(_0x68be('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x68be('0x18')]=_[_0x68be('0x19')](config[_0x68be('0x18')],{'host':_0x68be('0x1a'),'port':0x18eb});var socket=require(_0x68be('0x1b'))(new Redis(config[_0x68be('0x18')]));require(_0x68be('0x1c'))[_0x68be('0x1d')](socket);var jayson=require('jayson/promise');var client=jayson[_0x68be('0x1e')][_0x68be('0x1f')]({'port':0x232c});var client9002=jayson['client'][_0x68be('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x3c458f,_0x5f1269,_0x2c6451,_0xbfa545){return new BPromise(function(_0x44597c,_0x590cad){var _0x483163=_0xbfa545||client;return _0x483163[_0x68be('0x20')](_0x3c458f,_0x2c6451)['then'](function(_0x5a8508){logger[_0x68be('0x21')](_0x68be('0x22'),_0x5f1269,'request\x20sent');logger['debug']('OpenchannelMessage,\x20%s,\x20%s,\x20%s',_0x5f1269,'request\x20sent',JSON[_0x68be('0x23')](_0x5a8508));if(_0x5a8508[_0x68be('0x24')]){if(_0x5a8508['error'][_0x68be('0x25')]===0x1f4){logger[_0x68be('0x24')](_0x68be('0x22'),_0x5f1269,_0x5a8508['error'][_0x68be('0x26')]);return _0x590cad(_0x5a8508[_0x68be('0x24')][_0x68be('0x26')]);}logger[_0x68be('0x24')]('OpenchannelMessage,\x20%s,\x20%s',_0x5f1269,_0x5a8508[_0x68be('0x24')][_0x68be('0x26')]);return _0x44597c(_0x5a8508[_0x68be('0x24')]['message']);}else{logger['info'](_0x68be('0x22'),_0x5f1269,'request\x20sent');_0x44597c(_0x5a8508[_0x68be('0x27')][_0x68be('0x26')]);}})[_0x68be('0x28')](function(_0x1c28ad){logger[_0x68be('0x24')]('OpenchannelMessage,\x20%s,\x20%s',_0x5f1269,_0x1c28ad);_0x590cad(_0x1c28ad);});});}function respondWithStatusCode(_0x124dcb,_0x25ecf3){_0x25ecf3=_0x25ecf3||0xcc;return function(_0x3c04fa){if(_0x3c04fa){return _0x124dcb['sendStatus'](_0x25ecf3);}return _0x124dcb['status'](_0x25ecf3)[_0x68be('0x29')]();};}function respondWithResult(_0x5185dc,_0x3a3974){_0x3a3974=_0x3a3974||0xc8;return function(_0x2e0559){if(_0x2e0559){return _0x5185dc[_0x68be('0x2a')](_0x3a3974)[_0x68be('0x2b')](_0x2e0559);}};}function respondWithFilteredResult(_0xbac983,_0x2176bf){return function(_0x181340){if(_0x181340){var _0x9ef7c2=typeof _0x2176bf['offset']===_0x68be('0x2c')&&typeof _0x2176bf[_0x68be('0x2d')]===_0x68be('0x2c');var _0x1ec592=_0x181340['count'];var _0x1fff0b=_0x9ef7c2?0x0:_0x2176bf[_0x68be('0x2e')];var _0x3a68de=_0x9ef7c2?_0x181340['count']:_0x2176bf[_0x68be('0x2e')]+_0x2176bf['limit'];var _0x486594;if(_0x3a68de>=_0x1ec592){_0x3a68de=_0x1ec592;_0x486594=0xc8;}else{_0x486594=0xce;}_0xbac983[_0x68be('0x2a')](_0x486594);return _0xbac983[_0x68be('0x2f')](_0x68be('0x30'),_0x1fff0b+'-'+_0x3a68de+'/'+_0x1ec592)[_0x68be('0x2b')](_0x181340);}return null;};}function patchUpdates(_0x20caf2){return function(_0x171601){try{jsonpatch[_0x68be('0x31')](_0x171601,_0x20caf2,!![]);}catch(_0x31c095){return BPromise[_0x68be('0x32')](_0x31c095);}return _0x171601[_0x68be('0x33')]();};}function saveUpdates(_0x56830e,_0xdbbce6){return function(_0x4a46c6){if(_0x4a46c6){return _0x4a46c6[_0x68be('0x34')](_0x56830e)[_0x68be('0x35')](function(_0x56c97f){return _0x56c97f;});}return null;};}function removeEntity(_0x55c9a8,_0x479d4d){return function(_0x5aeea0){if(_0x5aeea0){return _0x5aeea0[_0x68be('0x36')]()['then'](function(){_0x55c9a8[_0x68be('0x2a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5092cc,_0x2b3762){return function(_0x24339a){if(!_0x24339a){_0x5092cc[_0x68be('0x37')](0x194);}return _0x24339a;};}function handleError(_0x52353c,_0xf1480a){_0xf1480a=_0xf1480a||0x1f4;return function(_0x46bf17){logger[_0x68be('0x24')](_0x46bf17['stack']);if(_0x46bf17[_0x68be('0x38')]){delete _0x46bf17[_0x68be('0x38')];}_0x52353c[_0x68be('0x2a')](_0xf1480a)[_0x68be('0x39')](_0x46bf17);};}exports[_0x68be('0x3a')]=function(_0x594266,_0x167ffb){var _0x4a4181={},_0x43b507={},_0x4f064f={'count':0x0,'rows':[]};var _0x1ddf54=_['map'](db[_0x68be('0x3b')][_0x68be('0x3c')],function(_0x489f84){return{'name':_0x489f84[_0x68be('0x3d')],'type':_0x489f84[_0x68be('0x3e')][_0x68be('0x3f')]};});_0x43b507[_0x68be('0x40')]=_[_0x68be('0x41')](_0x1ddf54,_0x68be('0x38'));_0x43b507['query']=_[_0x68be('0x42')](_0x594266['query']);_0x43b507[_0x68be('0x43')]=_[_0x68be('0x44')](_0x43b507[_0x68be('0x40')],_0x43b507['query']);_0x4a4181['attributes']=_[_0x68be('0x44')](_0x43b507[_0x68be('0x40')],qs[_0x68be('0x45')](_0x594266[_0x68be('0x46')][_0x68be('0x45')]));_0x4a4181[_0x68be('0x47')]=_0x4a4181['attributes'][_0x68be('0x48')]?_0x4a4181[_0x68be('0x47')]:_0x43b507[_0x68be('0x40')];if(!_0x594266[_0x68be('0x46')][_0x68be('0x49')]('nolimit')){_0x4a4181[_0x68be('0x2d')]=qs['limit'](_0x594266['query'][_0x68be('0x2d')]);_0x4a4181[_0x68be('0x2e')]=qs['offset'](_0x594266[_0x68be('0x46')]['offset']);}_0x4a4181[_0x68be('0x4a')]=qs['sort'](_0x594266['query']['sort']);_0x4a4181[_0x68be('0x4b')]=qs[_0x68be('0x43')](_[_0x68be('0x4c')](_0x594266['query'],_0x43b507[_0x68be('0x43')]),_0x1ddf54);if(_0x594266[_0x68be('0x46')][_0x68be('0x4d')]){_0x4a4181[_0x68be('0x4b')]=_[_0x68be('0x4e')](_0x4a4181[_0x68be('0x4b')],{'$or':_['map'](_0x1ddf54,function(_0xcb9924){if(_0xcb9924['type']!=='VIRTUAL'){var _0x32e49e={};_0x32e49e[_0xcb9924[_0x68be('0x38')]]={'$like':'%'+_0x594266[_0x68be('0x46')][_0x68be('0x4d')]+'%'};return _0x32e49e;}})});}_0x4a4181=_[_0x68be('0x4e')]({},_0x4a4181,_0x594266[_0x68be('0x4f')]);var _0xf1d495={'where':_0x4a4181[_0x68be('0x4b')]};return db[_0x68be('0x3b')][_0x68be('0x50')](_0xf1d495)[_0x68be('0x35')](function(_0x1ccf36){_0x4f064f[_0x68be('0x50')]=_0x1ccf36;if(_0x594266[_0x68be('0x46')]['includeAll']){_0x4a4181[_0x68be('0x51')]=[{'all':!![]}];}return db[_0x68be('0x3b')][_0x68be('0x52')](_0x4a4181);})[_0x68be('0x35')](function(_0x1e15c8){_0x4f064f[_0x68be('0x53')]=_0x1e15c8;return _0x4f064f;})[_0x68be('0x35')](respondWithFilteredResult(_0x167ffb,_0x4a4181))['catch'](handleError(_0x167ffb,null));};exports[_0x68be('0x54')]=function(_0x287c27,_0x30bad5){var _0x59447b={'raw':!![],'where':{'id':_0x287c27['params']['id']}},_0x5ef977={};_0x5ef977[_0x68be('0x40')]=_[_0x68be('0x42')](db[_0x68be('0x3b')][_0x68be('0x3c')]);_0x5ef977[_0x68be('0x46')]=_[_0x68be('0x42')](_0x287c27[_0x68be('0x46')]);_0x5ef977['filters']=_['intersection'](_0x5ef977[_0x68be('0x40')],_0x5ef977[_0x68be('0x46')]);_0x59447b[_0x68be('0x47')]=_[_0x68be('0x44')](_0x5ef977['model'],qs[_0x68be('0x45')](_0x287c27[_0x68be('0x46')]['fields']));_0x59447b[_0x68be('0x47')]=_0x59447b[_0x68be('0x47')][_0x68be('0x48')]?_0x59447b[_0x68be('0x47')]:_0x5ef977[_0x68be('0x40')];if(_0x287c27['query'][_0x68be('0x55')]){_0x59447b[_0x68be('0x51')]=[{'all':!![]}];}_0x59447b=_['merge']({},_0x59447b,_0x287c27[_0x68be('0x4f')]);return db[_0x68be('0x3b')][_0x68be('0x56')](_0x59447b)['then'](handleEntityNotFound(_0x30bad5,null))[_0x68be('0x35')](respondWithResult(_0x30bad5,null))[_0x68be('0x28')](handleError(_0x30bad5,null));};exports['create']=function(_0x480022,_0x587b34){return db[_0x68be('0x3b')][_0x68be('0x57')](_0x480022[_0x68be('0x58')],{})[_0x68be('0x35')](respondWithResult(_0x587b34,0xc9))[_0x68be('0x28')](handleError(_0x587b34,null));};exports[_0x68be('0x34')]=function(_0x5e816c,_0x1afa59){if(_0x5e816c[_0x68be('0x58')]['id']){delete _0x5e816c[_0x68be('0x58')]['id'];}return db[_0x68be('0x3b')]['find']({'where':{'id':_0x5e816c[_0x68be('0x59')]['id']}})[_0x68be('0x35')](handleEntityNotFound(_0x1afa59,null))['then'](saveUpdates(_0x5e816c['body'],null))[_0x68be('0x35')](respondWithResult(_0x1afa59,null))['catch'](handleError(_0x1afa59,null));};exports['destroy']=function(_0x2ad1c0,_0x3babef){return db['OpenchannelMessage'][_0x68be('0x56')]({'where':{'id':_0x2ad1c0[_0x68be('0x59')]['id']}})[_0x68be('0x35')](handleEntityNotFound(_0x3babef,null))[_0x68be('0x35')](removeEntity(_0x3babef,null))['catch'](handleError(_0x3babef,null));};exports[_0x68be('0x5a')]=function(_0xb5611a,_0x69899e){return db['OpenchannelMessage']['describe']()[_0x68be('0x35')](respondWithResult(_0x69899e,null))[_0x68be('0x28')](handleError(_0x69899e,null));};var interaction_log=require(_0x68be('0x15'))(_0x68be('0x5b'));exports[_0x68be('0x5c')]=function(_0x259fdb,_0x1ae6b4,_0x8090bc){var _0x2a5ac8={'agent':{},'channel':_0x68be('0x5d')};if(_0x259fdb[_0x68be('0x58')]['id']){delete _0x259fdb[_0x68be('0x58')]['id'];}_0x259fdb[_0x68be('0x58')]['read']=!![];_0x259fdb[_0x68be('0x58')]['readAt']=moment()[_0x68be('0x5e')](_0x68be('0x5f'));_0x259fdb[_0x68be('0x58')]['UserId']=_0x259fdb['body'][_0x68be('0x60')]||_0x259fdb[_0x68be('0x61')]['id'];_0x2a5ac8['agent']['id']=_0x259fdb['body'][_0x68be('0x60')];return db[_0x68be('0x3b')][_0x68be('0x56')]({'where':{'id':_0x259fdb['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x1ae6b4,null))['then'](saveUpdates(_0x259fdb['body'],null))['then'](function(_0xdc9df7){if(_0xdc9df7){_0x2a5ac8[_0x68be('0x26')]=_0xdc9df7[_0x68be('0x62')]({'plain':!![]});return db[_0x68be('0x63')][_0x68be('0x56')]({'where':{'id':_0xdc9df7[_0x68be('0x64')]}});}return null;})[_0x68be('0x35')](handleEntityNotFound(_0x1ae6b4,null))[_0x68be('0x35')](function(_0xc6d61d){if(_0xc6d61d){return _0xc6d61d[_0x68be('0x34')]({'UserId':_0x259fdb['body'][_0x68be('0x60')],'read1stAt':_[_0x68be('0x65')](_0xc6d61d[_0x68be('0x66')])?moment()[_0x68be('0x5e')](_0x68be('0x5f')):undefined});}return null;})[_0x68be('0x35')](function(_0x737b29){if(_0x737b29){_0x2a5ac8['interaction']=_0x737b29[_0x68be('0x62')]({'plain':!![]});interaction_log['info'](_0x68be('0x67'),_0x259fdb[_0x68be('0x61')]['id'],_0x259fdb[_0x68be('0x61')]['name'],_0x259fdb[_0x68be('0x61')][_0x68be('0x68')],_0x2a5ac8[_0x68be('0x69')]['id'],_0x259fdb[_0x68be('0x58')]?JSON[_0x68be('0x23')](_0x259fdb[_0x68be('0x58')]):_0x68be('0x6a'));return respondWithRpcPromise(_0x68be('0x6b'),_0x68be('0x6c'),_0x2a5ac8);}return null;})[_0x68be('0x35')](function(_0x2e1b8a){var _0x38a227=_0x68be('0x6d')+_0x2e1b8a[_0x68be('0x26')][_0x68be('0x6e')];return db[_0x68be('0x6f')][_0x68be('0x46')](_0x38a227,{'type':db[_0x68be('0x70')][_0x68be('0x71')][_0x68be('0x72')],'raw':!![]})[_0x68be('0x35')](function(_0x11dfbb){return _0x11dfbb;});})[_0x68be('0x35')](function(_0x35a70f){if(_0x35a70f){_0x2a5ac8[_0x68be('0x26')][_0x68be('0x73')]=_0x35a70f[0x0];if(!_0x259fdb[_0x68be('0x58')][_0x68be('0x60')])return;return db[_0x68be('0x74')][_0x68be('0x56')]({'where':{'id':_0x259fdb[_0x68be('0x58')][_0x68be('0x60')],'role':_0x68be('0x75')},'attributes':['id',_0x68be('0x38'),_0x68be('0x76'),'email',_0x68be('0x77')],'raw':!![]});}return null;})[_0x68be('0x35')](function(_0x3d6546){if(!_0x3d6546)return null;_0x2a5ac8[_0x68be('0x26')]['agent']=_0x3d6546;return _0x2a5ac8;})[_0x68be('0x35')](function(_0x567e0e){if(_0x567e0e){if(_0x259fdb['body']['manual']){_0x2a5ac8[_0x68be('0x26')]['interface']=util[_0x68be('0x5e')]('SIP/%s',_0x259fdb['user'][_0x68be('0x38')]);_0x2a5ac8[_0x68be('0x26')]['channel']=_0x2a5ac8['channel'];_0x2a5ac8[_0x68be('0x26')]['motionChannel']=_0x2a5ac8[_0x68be('0x78')];_0x2a5ac8[_0x68be('0x26')][_0x68be('0x79')]=_0x68be('0x5c');return respondWithRpcPromise(_0x68be('0x7a'),_0x68be('0x7a'),{'event':_0x68be('0x7b'),'message':_0x2a5ac8[_0x68be('0x26')]},client9002)['then'](function(){return _0x2a5ac8;});}return _0x2a5ac8;}return null;})['then'](respondWithResult(_0x1ae6b4,null))[_0x68be('0x28')](handleError(_0x1ae6b4,null));};var interaction_log=require(_0x68be('0x15'))(_0x68be('0x5b'));exports['reject']=function(_0x106002,_0x1518cd,_0x481ac1){var _0x431058={'agent':{},'channel':_0x68be('0x5d')};if(_0x106002[_0x68be('0x58')]['id']){delete _0x106002['body']['id'];}_0x106002[_0x68be('0x58')][_0x68be('0x60')]=_0x106002[_0x68be('0x58')][_0x68be('0x60')]||_0x106002[_0x68be('0x61')]['id'];_0x431058[_0x68be('0x75')]['id']=_0x106002['body'][_0x68be('0x60')];return db[_0x68be('0x3b')][_0x68be('0x56')]({'where':{'id':_0x106002['params']['id'],'UserId':null}})[_0x68be('0x35')](handleEntityNotFound(_0x1518cd,null))['then'](function(_0x42876e){if(_0x42876e){_0x431058[_0x68be('0x26')]=_0x42876e[_0x68be('0x62')]({'plain':!![]});return db[_0x68be('0x63')][_0x68be('0x56')]({'where':{'id':_0x42876e[_0x68be('0x64')]}});}return null;})[_0x68be('0x35')](handleEntityNotFound(_0x1518cd,null))[_0x68be('0x35')](function(_0x1e6254){if(_0x1e6254){_0x431058['interaction']=_0x1e6254[_0x68be('0x62')]({'plain':!![]});interaction_log[_0x68be('0x21')](_0x68be('0x7c'),_0x106002[_0x68be('0x61')]['id'],_0x106002['user'][_0x68be('0x38')],_0x106002[_0x68be('0x61')][_0x68be('0x68')],_0x431058['interaction']['id'],_0x106002[_0x68be('0x58')]?JSON[_0x68be('0x23')](_0x106002[_0x68be('0x58')]):_0x68be('0x6a'));return respondWithRpcPromise(_0x68be('0x7d'),_0x68be('0x7e'),_0x431058);}return null;})[_0x68be('0x35')](function(_0x317599){var _0x3c8aba=_0x68be('0x6d')+_0x317599[_0x68be('0x26')][_0x68be('0x6e')];return db['sequelize'][_0x68be('0x46')](_0x3c8aba,{'type':db[_0x68be('0x70')][_0x68be('0x71')]['SELECT'],'raw':!![]})['then'](function(_0x2aa5e9){return _0x2aa5e9;});})[_0x68be('0x35')](function(_0x147269){if(_0x147269){_0x431058[_0x68be('0x26')]['contact']=_0x147269[0x0];if(!_0x106002[_0x68be('0x58')][_0x68be('0x60')])return;return db[_0x68be('0x74')][_0x68be('0x56')]({'where':{'id':_0x106002[_0x68be('0x58')]['UserId'],'role':'agent'},'attributes':['id','name',_0x68be('0x76'),_0x68be('0x7f'),_0x68be('0x77')],'raw':!![]});}return null;})[_0x68be('0x35')](function(_0x20dcf9){if(!_0x20dcf9)return null;_0x431058[_0x68be('0x26')]['agent']=_0x20dcf9;return _0x431058;})[_0x68be('0x35')](function(_0x5d0bb0){if(_0x5d0bb0){_0x5d0bb0['message'][_0x68be('0x80')]=util[_0x68be('0x5e')](_0x68be('0x81'),_0x106002[_0x68be('0x61')][_0x68be('0x38')]);_0x5d0bb0[_0x68be('0x26')]['channel']=_0x431058[_0x68be('0x78')];_0x5d0bb0[_0x68be('0x26')][_0x68be('0x82')]=_0x431058[_0x68be('0x78')];_0x5d0bb0[_0x68be('0x26')][_0x68be('0x79')]=_0x68be('0x32');respondWithRpcPromise(_0x68be('0x7a'),_0x68be('0x7a'),{'event':'rejectmessage','message':_0x5d0bb0[_0x68be('0x26')]},client9002);return _0x431058;}return null;})[_0x68be('0x35')](respondWithResult(_0x1518cd,null))[_0x68be('0x28')](handleError(_0x1518cd,null));};
\ No newline at end of file
index f6e97f0..14e426f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c7b=['hasOwnProperty','hook','exports','events','../../mysqldb','save','remove','emit'];(function(_0x3d0710,_0x1298ed){var _0x208399=function(_0x2fb4f7){while(--_0x2fb4f7){_0x3d0710['push'](_0x3d0710['shift']());}};_0x208399(++_0x1298ed);}(_0x2c7b,0xc3));var _0xb2c7=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x2c7b[_0x3b380d];return _0x54502b;};'use strict';var EventEmitter=require(_0xb2c7('0x0'));var OpenchannelMessage=require(_0xb2c7('0x1'))['db']['OpenchannelMessage'];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xb2c7('0x2'),'afterUpdate':'update','afterDestroy':_0xb2c7('0x3')};function emitEvent(_0x4145ea){return function(_0x447192,_0x14f1cf,_0x47409e){OpenchannelMessageEvents['emit'](_0x4145ea+':'+_0x447192['id'],_0x447192);OpenchannelMessageEvents[_0xb2c7('0x4')](_0x4145ea,_0x447192);_0x47409e(null);};}for(var e in events){if(events[_0xb2c7('0x5')](e)){var event=events[e];OpenchannelMessage[_0xb2c7('0x6')](e,emitEvent(event));}}module[_0xb2c7('0x7')]=OpenchannelMessageEvents;
\ No newline at end of file
+var _0x3c50=['setMaxListeners','save','update','emit','hook','exports','events','../../mysqldb','OpenchannelMessage'];(function(_0x29b609,_0x19d388){var _0x54c952=function(_0xb3c38d){while(--_0xb3c38d){_0x29b609['push'](_0x29b609['shift']());}};_0x54c952(++_0x19d388);}(_0x3c50,0x9f));var _0x03c5=function(_0x5ce391,_0x193c64){_0x5ce391=_0x5ce391-0x0;var _0x3e6c1e=_0x3c50[_0x5ce391];return _0x3e6c1e;};'use strict';var EventEmitter=require(_0x03c5('0x0'));var OpenchannelMessage=require(_0x03c5('0x1'))['db'][_0x03c5('0x2')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0x03c5('0x3')](0x0);var events={'afterCreate':_0x03c5('0x4'),'afterUpdate':_0x03c5('0x5'),'afterDestroy':'remove'};function emitEvent(_0x47422c){return function(_0x25991a,_0x4ebbbb,_0x1ae91b){OpenchannelMessageEvents[_0x03c5('0x6')](_0x47422c+':'+_0x25991a['id'],_0x25991a);OpenchannelMessageEvents[_0x03c5('0x6')](_0x47422c,_0x25991a);_0x1ae91b(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelMessage[_0x03c5('0x7')](e,emitEvent(event));}}module[_0x03c5('0x8')]=OpenchannelMessageEvents;
\ No newline at end of file
index 3a8ae61..bceb222 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb14=['info','OpenchannelMessage,\x20%s,\x20%s','afterCreate','Forwarding\x20message\x20%d\x20to\x20%s','Interactions','length','Interaction','omit','POST','method','GET','body','format','Message\x20%d\x20forwarded\x20to\x20%s','threadId','inspect','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','OpenchannelMessage','openchannel_messages','fti_openchannel_messages','models','get','toLowerCase','direction','out','secret','isNil','UserId','OpenchannelInteraction','OpenchannelInteractionId','then','update','createdAt','catch','error','CmContact','describe','OpenchannelAccountId','Contact','keys','replyUri'];(function(_0x500785,_0x15e5ff){var _0x1f8bcc=function(_0x406983){while(--_0x406983){_0x500785['push'](_0x500785['shift']());}};_0x1f8bcc(++_0x15e5ff);}(_0xcb14,0x194));var _0x4cb1=function(_0x506cfa,_0x2e301){_0x506cfa=_0x506cfa-0x0;var _0x23c230=_0xcb14[_0x506cfa];return _0x23c230;};'use strict';var _=require(_0x4cb1('0x0'));var util=require(_0x4cb1('0x1'));var logger=require(_0x4cb1('0x2'))(_0x4cb1('0x3'));var moment=require(_0x4cb1('0x4'));var BPromise=require(_0x4cb1('0x5'));var rp=require(_0x4cb1('0x6'));var fs=require('fs');var path=require(_0x4cb1('0x7'));var rimraf=require(_0x4cb1('0x8'));var config=require(_0x4cb1('0x9'));var attributes=require('./openchannelMessage.attributes');module[_0x4cb1('0xa')]=function(_0x4627fc,_0x5a461f){return _0x4627fc[_0x4cb1('0xb')](_0x4cb1('0xc'),attributes,{'tableName':_0x4cb1('0xd'),'paranoid':![],'indexes':[{'name':_0x4cb1('0xe'),'fields':['body'],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x28a119,_0x1250fb,_0x1ac636){var _0x48e1a6=_0x4627fc[_0x4cb1('0xf')];var _0x3261b1=_0x28a119[_0x4cb1('0x10')]({'plain':!![]});if(_0x3261b1['direction'][_0x4cb1('0x11')]()==='in'||_0x3261b1[_0x4cb1('0x12')][_0x4cb1('0x11')]()===_0x4cb1('0x13')&&!_0x3261b1[_0x4cb1('0x14')]&&!_[_0x4cb1('0x15')](_0x3261b1[_0x4cb1('0x16')])){_0x48e1a6[_0x4cb1('0x17')]['findOne']({'where':{'id':_0x3261b1[_0x4cb1('0x18')]}})[_0x4cb1('0x19')](function(_0x5d62bf){if(_0x5d62bf){_0x5d62bf[_0x4cb1('0x1a')]({'lastMsgAt':_0x3261b1[_0x4cb1('0x1b')],'lastMsgDirection':_0x3261b1[_0x4cb1('0x12')]['toLowerCase']()});}})[_0x4cb1('0x1c')](function(_0x275754){console[_0x4cb1('0x1d')](_0x275754);});}if(_0x3261b1[_0x4cb1('0x12')]===_0x4cb1('0x13')&&!_0x3261b1[_0x4cb1('0x14')]){var _0x35d30a;_0x48e1a6[_0x4cb1('0x1e')][_0x4cb1('0x1f')]()[_0x4cb1('0x19')](function(_0x2a1838){return _0x48e1a6['OpenchannelAccount']['find']({'where':{'id':_0x3261b1[_0x4cb1('0x20')]},'include':[{'model':_0x48e1a6[_0x4cb1('0x17')],'as':'Interactions','where':{'id':_0x3261b1['OpenchannelInteractionId']},'limit':0x1,'include':[{'model':_0x48e1a6['CmContact'],'as':_0x4cb1('0x21'),'attributes':_[_0x4cb1('0x22')](_0x2a1838)}]}]});})[_0x4cb1('0x19')](function(_0x41f4f9){_0x35d30a=_0x41f4f9['get']({'plain':!![]});if(_0x35d30a&&_0x35d30a[_0x4cb1('0x23')]){logger[_0x4cb1('0x24')](_0x4cb1('0x25'),_0x4cb1('0x26'),util['format'](_0x4cb1('0x27'),_0x3261b1['id'],_0x35d30a[_0x4cb1('0x23')]));if(_0x35d30a['Interactions']&&_0x35d30a[_0x4cb1('0x28')][_0x4cb1('0x29')]){_0x3261b1[_0x4cb1('0x2a')]=_[_0x4cb1('0x2b')](_0x35d30a[_0x4cb1('0x28')][0x0],_0x4cb1('0x21'));_0x3261b1[_0x4cb1('0x21')]=_0x35d30a['Interactions'][0x0]['Contact'];}var _0x1250fb={'method':_0x4cb1('0x2c'),'uri':encodeURI(_0x35d30a[_0x4cb1('0x23')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x1250fb[_0x4cb1('0x2d')]){case _0x4cb1('0x2e'):_0x1250fb['qs']=_0x3261b1;break;case _0x4cb1('0x2c'):_0x1250fb[_0x4cb1('0x2f')]=_0x3261b1;break;}return rp(_0x1250fb)['then'](function(_0x57fb8a){logger[_0x4cb1('0x24')](_0x4cb1('0x25'),_0x4cb1('0x26'),util[_0x4cb1('0x30')](_0x4cb1('0x31'),_0x3261b1['id'],_0x35d30a[_0x4cb1('0x23')]));if(_0x57fb8a[_0x4cb1('0x2f')][_0x4cb1('0x32')]&&_0x57fb8a[_0x4cb1('0x2f')][_0x4cb1('0x32')]!=_0x3261b1[_0x4cb1('0x2a')][_0x4cb1('0x32')]){return _0x48e1a6[_0x4cb1('0x17')][_0x4cb1('0x1a')]({'threadId':_0x57fb8a[_0x4cb1('0x2f')][_0x4cb1('0x32')]},{'where':{'id':_0x3261b1[_0x4cb1('0x2a')]['id']}});}else{return;}})[_0x4cb1('0x19')](function(){return _0x28a119['update']({'read':!![]});})['catch'](function(_0x3bb552){logger[_0x4cb1('0x1d')](_0x4cb1('0x25'),_0x4cb1('0x26'),util[_0x4cb1('0x33')](_0x3bb552,{'showHidden':![],'depth':null}));_0x1ac636();});}else{_0x1ac636();}})[_0x4cb1('0x34')](function(){_0x1ac636();});}else{_0x1ac636();}}},'charset':_0x4cb1('0x35'),'collate':_0x4cb1('0x36')});};
\ No newline at end of file
+var _0x1adb=['out','secret','isNil','UserId','OpenchannelInteraction','findOne','OpenchannelInteractionId','then','update','createdAt','error','CmContact','OpenchannelAccount','find','Interactions','Contact','keys','replyUri','info','afterCreate','format','Forwarding\x20message\x20%d\x20to\x20%s','omit','method','Message\x20%d\x20forwarded\x20to\x20%s','threadId','Interaction','catch','OpenchannelMessage,\x20%s,\x20%s','inspect','finally','moment','bluebird','request-promise','path','exports','define','OpenchannelMessage','openchannel_messages','fti_openchannel_messages','body','FULLTEXT','models','get','direction','toLowerCase'];(function(_0x3b3466,_0x228276){var _0x16157f=function(_0x51a1af){while(--_0x51a1af){_0x3b3466['push'](_0x3b3466['shift']());}};_0x16157f(++_0x228276);}(_0x1adb,0x7b));var _0xb1ad=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x1adb[_0x3ab51d];return _0x29a04e;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xb1ad('0x0'));var BPromise=require(_0xb1ad('0x1'));var rp=require(_0xb1ad('0x2'));var fs=require('fs');var path=require(_0xb1ad('0x3'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./openchannelMessage.attributes');module[_0xb1ad('0x4')]=function(_0x5ef30b,_0x4f2d84){return _0x5ef30b[_0xb1ad('0x5')](_0xb1ad('0x6'),attributes,{'tableName':_0xb1ad('0x7'),'paranoid':![],'indexes':[{'name':_0xb1ad('0x8'),'fields':[_0xb1ad('0x9')],'type':_0xb1ad('0xa')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x3be1cc,_0x22d8e6,_0x22e410){var _0xbfa95d=_0x5ef30b[_0xb1ad('0xb')];var _0x5f4610=_0x3be1cc[_0xb1ad('0xc')]({'plain':!![]});if(_0x5f4610[_0xb1ad('0xd')][_0xb1ad('0xe')]()==='in'||_0x5f4610[_0xb1ad('0xd')][_0xb1ad('0xe')]()===_0xb1ad('0xf')&&!_0x5f4610[_0xb1ad('0x10')]&&!_[_0xb1ad('0x11')](_0x5f4610[_0xb1ad('0x12')])){_0xbfa95d[_0xb1ad('0x13')][_0xb1ad('0x14')]({'where':{'id':_0x5f4610[_0xb1ad('0x15')]}})[_0xb1ad('0x16')](function(_0x46df5a){if(_0x46df5a){_0x46df5a[_0xb1ad('0x17')]({'lastMsgAt':_0x5f4610[_0xb1ad('0x18')],'lastMsgDirection':_0x5f4610['direction'][_0xb1ad('0xe')]()});}})['catch'](function(_0x4cb2c4){console[_0xb1ad('0x19')](_0x4cb2c4);});}if(_0x5f4610[_0xb1ad('0xd')]===_0xb1ad('0xf')&&!_0x5f4610[_0xb1ad('0x10')]){var _0x12089d;_0xbfa95d[_0xb1ad('0x1a')]['describe']()[_0xb1ad('0x16')](function(_0x18bc7b){return _0xbfa95d[_0xb1ad('0x1b')][_0xb1ad('0x1c')]({'where':{'id':_0x5f4610['OpenchannelAccountId']},'include':[{'model':_0xbfa95d['OpenchannelInteraction'],'as':_0xb1ad('0x1d'),'where':{'id':_0x5f4610[_0xb1ad('0x15')]},'limit':0x1,'include':[{'model':_0xbfa95d['CmContact'],'as':_0xb1ad('0x1e'),'attributes':_[_0xb1ad('0x1f')](_0x18bc7b)}]}]});})[_0xb1ad('0x16')](function(_0x5e08ee){_0x12089d=_0x5e08ee['get']({'plain':!![]});if(_0x12089d&&_0x12089d[_0xb1ad('0x20')]){logger[_0xb1ad('0x21')]('OpenchannelMessage,\x20%s,\x20%s',_0xb1ad('0x22'),util[_0xb1ad('0x23')](_0xb1ad('0x24'),_0x5f4610['id'],_0x12089d['replyUri']));if(_0x12089d[_0xb1ad('0x1d')]&&_0x12089d[_0xb1ad('0x1d')]['length']){_0x5f4610['Interaction']=_[_0xb1ad('0x25')](_0x12089d[_0xb1ad('0x1d')][0x0],'Contact');_0x5f4610[_0xb1ad('0x1e')]=_0x12089d[_0xb1ad('0x1d')][0x0]['Contact'];}var _0x22d8e6={'method':'POST','uri':encodeURI(_0x12089d[_0xb1ad('0x20')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x22d8e6[_0xb1ad('0x26')]){case'GET':_0x22d8e6['qs']=_0x5f4610;break;case'POST':_0x22d8e6[_0xb1ad('0x9')]=_0x5f4610;break;}return rp(_0x22d8e6)[_0xb1ad('0x16')](function(_0x2efcc4){logger['info']('OpenchannelMessage,\x20%s,\x20%s',_0xb1ad('0x22'),util[_0xb1ad('0x23')](_0xb1ad('0x27'),_0x5f4610['id'],_0x12089d[_0xb1ad('0x20')]));if(_0x2efcc4['body']['threadId']&&_0x2efcc4[_0xb1ad('0x9')]['threadId']!=_0x5f4610['Interaction'][_0xb1ad('0x28')]){return _0xbfa95d[_0xb1ad('0x13')][_0xb1ad('0x17')]({'threadId':_0x2efcc4[_0xb1ad('0x9')]['threadId']},{'where':{'id':_0x5f4610[_0xb1ad('0x29')]['id']}});}else{return;}})[_0xb1ad('0x16')](function(){return _0x3be1cc[_0xb1ad('0x17')]({'read':!![]});})[_0xb1ad('0x2a')](function(_0x371463){logger['error'](_0xb1ad('0x2b'),_0xb1ad('0x22'),util[_0xb1ad('0x2c')](_0x371463,{'showHidden':![],'depth':null}));_0x22e410();});}else{_0x22e410();}})[_0xb1ad('0x2d')](function(){_0x22e410();});}else{_0x22e410();}}},'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 5282feb..453e4d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','OpenchannelMessage','create','options','raw','CreateOpenchannelMessage','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','then','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x2ccebc,_0xda027){var _0x297edc=function(_0x52dc39){while(--_0x52dc39){_0x2ccebc['push'](_0x2ccebc['shift']());}};_0x297edc(++_0xda027);}(_0x5f2f,0x73));var _0xf5f2=function(_0x4ac63b,_0x1cab02){_0x4ac63b=_0x4ac63b-0x0;var _0x14efb5=_0x5f2f[_0x4ac63b];return _0x14efb5;};'use strict';var _=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var moment=require(_0xf5f2('0x2'));var BPromise=require(_0xf5f2('0x3'));var rs=require(_0xf5f2('0x4'));var fs=require('fs');var Redis=require(_0xf5f2('0x5'));var db=require(_0xf5f2('0x6'))['db'];var utils=require(_0xf5f2('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0xf5f2('0x8'));var jayson=require(_0xf5f2('0x9'));var client=jayson[_0xf5f2('0xa')][_0xf5f2('0xb')]({'port':0x232a});config[_0xf5f2('0xc')]=_[_0xf5f2('0xd')](config['redis'],{'host':_0xf5f2('0xe'),'port':0x18eb});var socket=require(_0xf5f2('0xf'))(new Redis(config[_0xf5f2('0xc')]));require('./openchannelMessage.socket')[_0xf5f2('0x10')](socket);function respondWithRpcPromise(_0x15dd7c,_0x218ae3,_0x4e0e6b){return new BPromise(function(_0x977a59,_0x4ebbbe){return client['request'](_0x15dd7c,_0x4e0e6b)[_0xf5f2('0x11')](function(_0x151aba){logger['info'](_0xf5f2('0x12'),_0x218ae3,_0xf5f2('0x13'));logger[_0xf5f2('0x14')](_0xf5f2('0x15'),_0x218ae3,_0xf5f2('0x13'),JSON[_0xf5f2('0x16')](_0x151aba));if(_0x151aba['error']){if(_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x18')]===0x1f4){logger[_0xf5f2('0x17')](_0xf5f2('0x12'),_0x218ae3,_0x151aba[_0xf5f2('0x17')]['message']);return _0x4ebbbe(_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x19')]);}logger[_0xf5f2('0x17')](_0xf5f2('0x12'),_0x218ae3,_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x19')]);return _0x977a59(_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x19')]);}else{logger[_0xf5f2('0x1a')](_0xf5f2('0x12'),_0x218ae3,_0xf5f2('0x13'));_0x977a59(_0x151aba[_0xf5f2('0x1b')][_0xf5f2('0x19')]);}})[_0xf5f2('0x1c')](function(_0x3cf5ea){logger[_0xf5f2('0x17')](_0xf5f2('0x12'),_0x218ae3,_0x3cf5ea);_0x4ebbbe(_0x3cf5ea);});});}exports['CreateOpenchannelMessage']=function(_0x34706d){var _0x47101e=this;return new Promise(function(_0x49dac2,_0x47acfc){return db[_0xf5f2('0x1d')][_0xf5f2('0x1e')](_0x34706d['body'],{'raw':_0x34706d[_0xf5f2('0x1f')]?_0x34706d[_0xf5f2('0x1f')][_0xf5f2('0x20')]===undefined?!![]:![]:!![]})[_0xf5f2('0x11')](function(_0x36f1cb){logger['info'](_0xf5f2('0x21'),_0x34706d);logger[_0xf5f2('0x14')](_0xf5f2('0x21'),_0x34706d,JSON[_0xf5f2('0x16')](_0x36f1cb));_0x49dac2(_0x36f1cb);})[_0xf5f2('0x1c')](function(_0x5bdf4a){logger['error'](_0xf5f2('0x21'),_0x5bdf4a[_0xf5f2('0x19')],_0x34706d);_0x47acfc(_0x47101e[_0xf5f2('0x17')](0x1f4,_0x5bdf4a[_0xf5f2('0x19')]));});});};
\ No newline at end of file
+var _0x5f2f=['OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','OpenchannelMessage','create','options','raw','CreateOpenchannelMessage','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','then','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x240662,_0x38d5e2){var _0x5c7bd7=function(_0x2a8e98){while(--_0x2a8e98){_0x240662['push'](_0x240662['shift']());}};_0x5c7bd7(++_0x38d5e2);}(_0x5f2f,0x73));var _0xf5f2=function(_0x3dd812,_0x5af958){_0x3dd812=_0x3dd812-0x0;var _0x21f70c=_0x5f2f[_0x3dd812];return _0x21f70c;};'use strict';var _=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var moment=require(_0xf5f2('0x2'));var BPromise=require(_0xf5f2('0x3'));var rs=require(_0xf5f2('0x4'));var fs=require('fs');var Redis=require(_0xf5f2('0x5'));var db=require(_0xf5f2('0x6'))['db'];var utils=require(_0xf5f2('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0xf5f2('0x8'));var jayson=require(_0xf5f2('0x9'));var client=jayson[_0xf5f2('0xa')][_0xf5f2('0xb')]({'port':0x232a});config[_0xf5f2('0xc')]=_[_0xf5f2('0xd')](config['redis'],{'host':_0xf5f2('0xe'),'port':0x18eb});var socket=require(_0xf5f2('0xf'))(new Redis(config[_0xf5f2('0xc')]));require('./openchannelMessage.socket')[_0xf5f2('0x10')](socket);function respondWithRpcPromise(_0x15dd7c,_0x218ae3,_0x4e0e6b){return new BPromise(function(_0x977a59,_0x4ebbbe){return client['request'](_0x15dd7c,_0x4e0e6b)[_0xf5f2('0x11')](function(_0x151aba){logger['info'](_0xf5f2('0x12'),_0x218ae3,_0xf5f2('0x13'));logger[_0xf5f2('0x14')](_0xf5f2('0x15'),_0x218ae3,_0xf5f2('0x13'),JSON[_0xf5f2('0x16')](_0x151aba));if(_0x151aba['error']){if(_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x18')]===0x1f4){logger[_0xf5f2('0x17')](_0xf5f2('0x12'),_0x218ae3,_0x151aba[_0xf5f2('0x17')]['message']);return _0x4ebbbe(_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x19')]);}logger[_0xf5f2('0x17')](_0xf5f2('0x12'),_0x218ae3,_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x19')]);return _0x977a59(_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x19')]);}else{logger[_0xf5f2('0x1a')](_0xf5f2('0x12'),_0x218ae3,_0xf5f2('0x13'));_0x977a59(_0x151aba[_0xf5f2('0x1b')][_0xf5f2('0x19')]);}})[_0xf5f2('0x1c')](function(_0x3cf5ea){logger[_0xf5f2('0x17')](_0xf5f2('0x12'),_0x218ae3,_0x3cf5ea);_0x4ebbbe(_0x3cf5ea);});});}exports['CreateOpenchannelMessage']=function(_0x34706d){var _0x47101e=this;return new Promise(function(_0x49dac2,_0x47acfc){return db[_0xf5f2('0x1d')][_0xf5f2('0x1e')](_0x34706d['body'],{'raw':_0x34706d[_0xf5f2('0x1f')]?_0x34706d[_0xf5f2('0x1f')][_0xf5f2('0x20')]===undefined?!![]:![]:!![]})[_0xf5f2('0x11')](function(_0x36f1cb){logger['info'](_0xf5f2('0x21'),_0x34706d);logger[_0xf5f2('0x14')](_0xf5f2('0x21'),_0x34706d,JSON[_0xf5f2('0x16')](_0x36f1cb));_0x49dac2(_0x36f1cb);})[_0xf5f2('0x1c')](function(_0x5bdf4a){logger['error'](_0xf5f2('0x21'),_0x5bdf4a[_0xf5f2('0x19')],_0x34706d);_0x47acfc(_0x47101e[_0xf5f2('0x17')](0x1f4,_0x5bdf4a[_0xf5f2('0x19')]));});});};
\ No newline at end of file
index 4e6722b..a36316c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['removeListener','register','length','openchannelMessage:','./openchannelMessage.events','save','remove','update','emit'];(function(_0x4d2993,_0x1c9473){var _0x427374=function(_0x149dfd){while(--_0x149dfd){_0x4d2993['push'](_0x4d2993['shift']());}};_0x427374(++_0x1c9473);}(_0x814b,0x1a2));var _0xb814=function(_0x298064,_0x1d2bfb){_0x298064=_0x298064-0x0;var _0x2512ea=_0x814b[_0x298064];return _0x2512ea;};'use strict';var OpenchannelMessageEvents=require(_0xb814('0x0'));var events=[_0xb814('0x1'),_0xb814('0x2'),_0xb814('0x3')];function createListener(_0xfbb64b,_0x477725){return function(_0x4a98af){_0x477725[_0xb814('0x4')](_0xfbb64b,_0x4a98af);};}function removeListener(_0x3e1e9,_0x258866){return function(){OpenchannelMessageEvents[_0xb814('0x5')](_0x3e1e9,_0x258866);};}exports[_0xb814('0x6')]=function(_0x322a70){for(var _0x53e507=0x0,_0x3b0829=events[_0xb814('0x7')];_0x53e507<_0x3b0829;_0x53e507++){var _0x5c8539=events[_0x53e507];var _0x271af9=createListener(_0xb814('0x8')+_0x5c8539,_0x322a70);OpenchannelMessageEvents['on'](_0x5c8539,_0x271af9);}};
\ No newline at end of file
+var _0xd61c=['register','openchannelMessage:','save','remove','update','emit','removeListener'];(function(_0x424bd6,_0xbcd2ba){var _0x227767=function(_0x2517bc){while(--_0x2517bc){_0x424bd6['push'](_0x424bd6['shift']());}};_0x227767(++_0xbcd2ba);}(_0xd61c,0x6b));var _0xcd61=function(_0x54249b,_0xfdbe9a){_0x54249b=_0x54249b-0x0;var _0x57ef0d=_0xd61c[_0x54249b];return _0x57ef0d;};'use strict';var OpenchannelMessageEvents=require('./openchannelMessage.events');var events=[_0xcd61('0x0'),_0xcd61('0x1'),_0xcd61('0x2')];function createListener(_0x33c015,_0x444580){return function(_0x2443df){_0x444580[_0xcd61('0x3')](_0x33c015,_0x2443df);};}function removeListener(_0x1cdcd1,_0x53b293){return function(){OpenchannelMessageEvents[_0xcd61('0x4')](_0x1cdcd1,_0x53b293);};}exports[_0xcd61('0x5')]=function(_0x3d1d05){for(var _0x90ef3d=0x0,_0x191440=events['length'];_0x90ef3d<_0x191440;_0x90ef3d++){var _0x338d86=events[_0x90ef3d];var _0x754876=createListener(_0xcd61('0x6')+_0x338d86,_0x3d1d05);OpenchannelMessageEvents['on'](_0x338d86,_0x754876);}};
\ No newline at end of file
index 220ef2e..24645c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x367f=['exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','update','delete','destroy','removeAgents'];(function(_0x24aa3c,_0x159da9){var _0x18aefa=function(_0xff058d){while(--_0xff058d){_0x24aa3c['push'](_0x24aa3c['shift']());}};_0x18aefa(++_0x159da9);}(_0x367f,0x121));var _0xf367=function(_0x39e130,_0x5acabc){_0x39e130=_0x39e130-0x0;var _0x132d61=_0x367f[_0x39e130];return _0x132d61;};'use strict';var multer=require(_0xf367('0x0'));var util=require(_0xf367('0x1'));var path=require('path');var timeout=require(_0xf367('0x2'));var express=require(_0xf367('0x3'));var router=express[_0xf367('0x4')]();var fs_extra=require(_0xf367('0x5'));var auth=require(_0xf367('0x6'));var interaction=require(_0xf367('0x7'));var config=require(_0xf367('0x8'));var controller=require(_0xf367('0x9'));router[_0xf367('0xa')]('/',auth[_0xf367('0xb')](),controller[_0xf367('0xc')]);router[_0xf367('0xa')](_0xf367('0xd'),auth[_0xf367('0xb')](),controller[_0xf367('0xe')]);router[_0xf367('0xa')](_0xf367('0xf'),auth[_0xf367('0xb')](),controller[_0xf367('0x10')]);router[_0xf367('0xa')](_0xf367('0x11'),auth[_0xf367('0xb')](),controller[_0xf367('0x12')]);router[_0xf367('0xa')](_0xf367('0x13'),auth[_0xf367('0xb')](),controller[_0xf367('0x14')]);router[_0xf367('0xa')](_0xf367('0x15'),auth['isAuthenticated'](),controller[_0xf367('0x16')]);router[_0xf367('0x17')]('/',auth['isAuthenticated'](),controller[_0xf367('0x18')]);router[_0xf367('0x17')](_0xf367('0x13'),auth[_0xf367('0xb')](),controller[_0xf367('0x19')]);router[_0xf367('0x17')](_0xf367('0x15'),auth[_0xf367('0xb')](),controller[_0xf367('0x1a')]);router['put'](_0xf367('0xf'),auth[_0xf367('0xb')](),controller[_0xf367('0x1b')]);router[_0xf367('0x1c')](_0xf367('0xf'),auth[_0xf367('0xb')](),controller[_0xf367('0x1d')]);router[_0xf367('0x1c')](_0xf367('0x13'),auth['isAuthenticated'](),controller['removeTeams']);router[_0xf367('0x1c')](_0xf367('0x15'),auth[_0xf367('0xb')](),controller[_0xf367('0x1e')]);module[_0xf367('0x1f')]=router;
\ No newline at end of file
+var _0x07ef=['show','getMembers','getTeams','/:id/users','post','create','/:id/teams','addAgents','put','delete','removeTeams','removeAgents','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueue.controller','get','index','/describe','isAuthenticated','describe','/:id'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x07ef,0x99));var _0xf07e=function(_0x4854d6,_0x2f1264){_0x4854d6=_0x4854d6-0x0;var _0x3885c0=_0x07ef[_0x4854d6];return _0x3885c0;};'use strict';var multer=require(_0xf07e('0x0'));var util=require(_0xf07e('0x1'));var path=require(_0xf07e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xf07e('0x3')]();var fs_extra=require(_0xf07e('0x4'));var auth=require(_0xf07e('0x5'));var interaction=require(_0xf07e('0x6'));var config=require(_0xf07e('0x7'));var controller=require(_0xf07e('0x8'));router[_0xf07e('0x9')]('/',auth['isAuthenticated'](),controller[_0xf07e('0xa')]);router['get'](_0xf07e('0xb'),auth[_0xf07e('0xc')](),controller[_0xf07e('0xd')]);router[_0xf07e('0x9')](_0xf07e('0xe'),auth[_0xf07e('0xc')](),controller[_0xf07e('0xf')]);router[_0xf07e('0x9')]('/:id/members',auth[_0xf07e('0xc')](),controller[_0xf07e('0x10')]);router['get']('/:id/teams',auth[_0xf07e('0xc')](),controller[_0xf07e('0x11')]);router[_0xf07e('0x9')](_0xf07e('0x12'),auth['isAuthenticated'](),controller['getAgents']);router[_0xf07e('0x13')]('/',auth[_0xf07e('0xc')](),controller[_0xf07e('0x14')]);router[_0xf07e('0x13')](_0xf07e('0x15'),auth['isAuthenticated'](),controller['addTeams']);router[_0xf07e('0x13')](_0xf07e('0x12'),auth['isAuthenticated'](),controller[_0xf07e('0x16')]);router[_0xf07e('0x17')](_0xf07e('0xe'),auth[_0xf07e('0xc')](),controller['update']);router[_0xf07e('0x18')]('/:id',auth['isAuthenticated'](),controller['destroy']);router[_0xf07e('0x18')](_0xf07e('0x15'),auth[_0xf07e('0xc')](),controller[_0xf07e('0x19')]);router[_0xf07e('0x18')](_0xf07e('0x12'),auth[_0xf07e('0xc')](),controller[_0xf07e('0x1a')]);module[_0xf07e('0x1b')]=router;
\ No newline at end of file
index 2cbc2cd..f2984cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb8f=['roundrobin','sequelize','name','STRING','INTEGER','beepall'];(function(_0xd8323,_0x28a00e){var _0x583d69=function(_0x286db9){while(--_0x286db9){_0xd8323['push'](_0xd8323['shift']());}};_0x583d69(++_0x28a00e);}(_0xbb8f,0xbb));var _0xfbb8=function(_0x2af4ab,_0x1ef402){_0x2af4ab=_0x2af4ab-0x0;var _0x451cfb=_0xbb8f[_0x2af4ab];return _0x451cfb;};'use strict';var Sequelize=require(_0xfbb8('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0xfbb8('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xfbb8('0x2')]},'timeout':{'type':Sequelize[_0xfbb8('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM']('rrmemory',_0xfbb8('0x4'),_0xfbb8('0x5'))}};
\ No newline at end of file
+var _0x0b99=['exports','STRING','INTEGER','ENUM','rrmemory','beepall','roundrobin'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x0b99,0xd2));var _0x90b9=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x0b99[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require('sequelize');module[_0x90b9('0x0')]={'name':{'type':Sequelize['STRING'],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x90b9('0x1')]},'timeout':{'type':Sequelize[_0x90b9('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x90b9('0x3')](_0x90b9('0x4'),_0x90b9('0x5'),_0x90b9('0x6'))}};
\ No newline at end of file
index 1801a54..7523fd4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc8c3=['each','findOrCreate','forEach','emit','userOpenchannelQueue:save','removeTeams','select','field','tq.TeamId','from','team_has_openchannel_queues','join','user_has_teams','OpenchannelQueueId\x20=\x20?','clone','push','QueryTypes','SELECT','every','TeamId','all','value','transaction','isEmpty','removeAgents','userOpenchannelQueue:remove','addAgents','omit','spread','isArray','getAgents','fast-json-patch','request-promise','moment','mustache','util','path','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','./openchannelQueue.socket','status','end','json','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','get','OpenchannelQueues','UserProfileResource','error','stack','name','index','OpenchannelQueue','fieldName','key','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','offset','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','keys','rawAttributes','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','findOne','UserOpenchannelQueue','OpenchannelQueueId','User','findAndCountAll','UserId','agent','openchannelPause','updatedAt','%s/%s','SIP','createdAt','getTeams','Team','addTeams','ids','Agents','voicePause','flatMap','sequelize'];(function(_0x45cda1,_0x2ee1d5){var _0x2a5ad3=function(_0x3865d2){while(--_0x3865d2){_0x45cda1['push'](_0x45cda1['shift']());}};_0x2a5ad3(++_0x2ee1d5);}(_0xc8c3,0x1c3));var _0x3c8c=function(_0x5c18ef,_0xa2e81d){_0x5c18ef=_0x5c18ef-0x0;var _0x33789d=_0xc8c3[_0x5c18ef];return _0x33789d;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x3c8c('0x0'));var rp=require(_0x3c8c('0x1'));var moment=require(_0x3c8c('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x3c8c('0x3'));var util=require(_0x3c8c('0x4'));var path=require(_0x3c8c('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x3c8c('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3c8c('0x7'));var squel=require(_0x3c8c('0x8'));var crypto=require(_0x3c8c('0x9'));var jsforce=require(_0x3c8c('0xa'));var deskjs=require(_0x3c8c('0xb'));var toCsv=require(_0x3c8c('0xc'));var querystring=require(_0x3c8c('0xd'));var Papa=require(_0x3c8c('0xe'));var Redis=require(_0x3c8c('0xf'));var authService=require(_0x3c8c('0x10'));var qs=require(_0x3c8c('0x11'));var as=require(_0x3c8c('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3c8c('0x13'))(_0x3c8c('0x14'));var utils=require(_0x3c8c('0x15'));var config=require(_0x3c8c('0x16'));var licenseUtil=require(_0x3c8c('0x17'));var db=require(_0x3c8c('0x18'))['db'];config['redis']=_[_0x3c8c('0x19')](config[_0x3c8c('0x1a')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x3c8c('0x1a')]));require(_0x3c8c('0x1b'))['register'](socket);function respondWithStatusCode(_0x28efb1,_0x382bc7){_0x382bc7=_0x382bc7||0xcc;return function(_0x306ba5){if(_0x306ba5){return _0x28efb1['sendStatus'](_0x382bc7);}return _0x28efb1[_0x3c8c('0x1c')](_0x382bc7)[_0x3c8c('0x1d')]();};}function respondWithResult(_0x3d0c3d,_0x4e8d4d){_0x4e8d4d=_0x4e8d4d||0xc8;return function(_0x4835fd){if(_0x4835fd){return _0x3d0c3d[_0x3c8c('0x1c')](_0x4e8d4d)[_0x3c8c('0x1e')](_0x4835fd);}};}function respondWithFilteredResult(_0x19cdf8,_0x4e35c1){return function(_0x416f01){if(_0x416f01){var _0x1f5cec=typeof _0x4e35c1['offset']===_0x3c8c('0x1f')&&typeof _0x4e35c1['limit']===_0x3c8c('0x1f');var _0x29398e=_0x416f01[_0x3c8c('0x20')];var _0x42a9ba=_0x1f5cec?0x0:_0x4e35c1['offset'];var _0x547eaf=_0x1f5cec?_0x416f01['count']:_0x4e35c1['offset']+_0x4e35c1[_0x3c8c('0x21')];var _0x80fe9c;if(_0x547eaf>=_0x29398e){_0x547eaf=_0x29398e;_0x80fe9c=0xc8;}else{_0x80fe9c=0xce;}_0x19cdf8['status'](_0x80fe9c);return _0x19cdf8[_0x3c8c('0x22')](_0x3c8c('0x23'),_0x42a9ba+'-'+_0x547eaf+'/'+_0x29398e)['json'](_0x416f01);}return null;};}function patchUpdates(_0x460d61){return function(_0x2a61be){try{jsonpatch[_0x3c8c('0x24')](_0x2a61be,_0x460d61,!![]);}catch(_0x41fba8){return BPromise[_0x3c8c('0x25')](_0x41fba8);}return _0x2a61be[_0x3c8c('0x26')]();};}function saveUpdates(_0x2e1579,_0x15a78c){return function(_0xf68079){if(_0xf68079){return _0xf68079[_0x3c8c('0x27')](_0x2e1579)[_0x3c8c('0x28')](function(_0x327cf0){return _0x327cf0;});}return null;};}function removeEntity(_0x2ccd83,_0x24c949){return function(_0x5e3b1b){if(_0x5e3b1b){return _0x5e3b1b[_0x3c8c('0x29')]()['then'](function(){var _0xc88a7c=_0x5e3b1b[_0x3c8c('0x2a')]({'plain':!![]});var _0xc1d49f=_0x3c8c('0x2b');return db[_0x3c8c('0x2c')][_0x3c8c('0x29')]({'where':{'type':_0xc1d49f,'resourceId':_0xc88a7c['id']}})['then'](function(){return _0x5e3b1b;});})['then'](function(){_0x2ccd83[_0x3c8c('0x1c')](0xcc)[_0x3c8c('0x1d')]();});}};}function handleEntityNotFound(_0x3ec5b1,_0x3e017e){return function(_0x38630e){if(!_0x38630e){_0x3ec5b1['sendStatus'](0x194);}return _0x38630e;};}function handleError(_0x57d1c6,_0x47989b){_0x47989b=_0x47989b||0x1f4;return function(_0x5efafe){logger[_0x3c8c('0x2d')](_0x5efafe[_0x3c8c('0x2e')]);if(_0x5efafe[_0x3c8c('0x2f')]){delete _0x5efafe[_0x3c8c('0x2f')];}_0x57d1c6[_0x3c8c('0x1c')](_0x47989b)['send'](_0x5efafe);};}exports[_0x3c8c('0x30')]=function(_0x1ad770,_0x32498c){var _0x1fa2ba={},_0x16d4d2={},_0x286b70={'count':0x0,'rows':[]};var _0x494ac8=_['map'](db[_0x3c8c('0x31')]['rawAttributes'],function(_0x53d440){return{'name':_0x53d440[_0x3c8c('0x32')],'type':_0x53d440['type'][_0x3c8c('0x33')]};});_0x16d4d2[_0x3c8c('0x34')]=_[_0x3c8c('0x35')](_0x494ac8,_0x3c8c('0x2f'));_0x16d4d2[_0x3c8c('0x36')]=_['keys'](_0x1ad770[_0x3c8c('0x36')]);_0x16d4d2[_0x3c8c('0x37')]=_[_0x3c8c('0x38')](_0x16d4d2['model'],_0x16d4d2[_0x3c8c('0x36')]);_0x1fa2ba[_0x3c8c('0x39')]=_['intersection'](_0x16d4d2['model'],qs['fields'](_0x1ad770[_0x3c8c('0x36')][_0x3c8c('0x3a')]));_0x1fa2ba[_0x3c8c('0x39')]=_0x1fa2ba[_0x3c8c('0x39')][_0x3c8c('0x3b')]?_0x1fa2ba[_0x3c8c('0x39')]:_0x16d4d2[_0x3c8c('0x34')];if(!_0x1ad770[_0x3c8c('0x36')][_0x3c8c('0x3c')](_0x3c8c('0x3d'))){_0x1fa2ba[_0x3c8c('0x21')]=qs[_0x3c8c('0x21')](_0x1ad770[_0x3c8c('0x36')][_0x3c8c('0x21')]);_0x1fa2ba[_0x3c8c('0x3e')]=qs[_0x3c8c('0x3e')](_0x1ad770[_0x3c8c('0x36')][_0x3c8c('0x3e')]);}_0x1fa2ba[_0x3c8c('0x3f')]=qs[_0x3c8c('0x40')](_0x1ad770['query'][_0x3c8c('0x40')]);_0x1fa2ba[_0x3c8c('0x41')]=qs[_0x3c8c('0x37')](_[_0x3c8c('0x42')](_0x1ad770[_0x3c8c('0x36')],_0x16d4d2['filters']),_0x494ac8);if(_0x1ad770['query'][_0x3c8c('0x43')]){_0x1fa2ba[_0x3c8c('0x41')]=_[_0x3c8c('0x44')](_0x1fa2ba[_0x3c8c('0x41')],{'$or':_['map'](_0x494ac8,function(_0x3a7a18){if(_0x3a7a18['type']!==_0x3c8c('0x45')){var _0x80ecbd={};_0x80ecbd[_0x3a7a18[_0x3c8c('0x2f')]]={'$like':'%'+_0x1ad770[_0x3c8c('0x36')][_0x3c8c('0x43')]+'%'};return _0x80ecbd;}})});}_0x1fa2ba=_[_0x3c8c('0x44')]({},_0x1fa2ba,_0x1ad770[_0x3c8c('0x46')]);var _0x1b4ade={'where':_0x1fa2ba[_0x3c8c('0x41')]};return db[_0x3c8c('0x31')]['count'](_0x1b4ade)['then'](function(_0x40f26c){_0x286b70['count']=_0x40f26c;if(_0x1ad770['query'][_0x3c8c('0x47')]){_0x1fa2ba[_0x3c8c('0x48')]=[{'all':!![]}];}return db[_0x3c8c('0x31')][_0x3c8c('0x49')](_0x1fa2ba);})[_0x3c8c('0x28')](function(_0x1daa73){_0x286b70[_0x3c8c('0x4a')]=_0x1daa73;return _0x286b70;})[_0x3c8c('0x28')](respondWithFilteredResult(_0x32498c,_0x1fa2ba))[_0x3c8c('0x4b')](handleError(_0x32498c,null));};exports[_0x3c8c('0x4c')]=function(_0x1b41da,_0x4d788b){var _0x2be023={'raw':!![],'where':{'id':_0x1b41da['params']['id']}},_0x3cc7a0={};_0x3cc7a0['model']=_[_0x3c8c('0x4d')](db[_0x3c8c('0x31')][_0x3c8c('0x4e')]);_0x3cc7a0[_0x3c8c('0x36')]=_[_0x3c8c('0x4d')](_0x1b41da[_0x3c8c('0x36')]);_0x3cc7a0[_0x3c8c('0x37')]=_[_0x3c8c('0x38')](_0x3cc7a0['model'],_0x3cc7a0[_0x3c8c('0x36')]);_0x2be023['attributes']=_[_0x3c8c('0x38')](_0x3cc7a0['model'],qs[_0x3c8c('0x3a')](_0x1b41da[_0x3c8c('0x36')][_0x3c8c('0x3a')]));_0x2be023[_0x3c8c('0x39')]=_0x2be023[_0x3c8c('0x39')][_0x3c8c('0x3b')]?_0x2be023['attributes']:_0x3cc7a0[_0x3c8c('0x34')];if(_0x1b41da[_0x3c8c('0x36')][_0x3c8c('0x47')]){_0x2be023['include']=[{'all':!![]}];}_0x2be023=_['merge']({},_0x2be023,_0x1b41da['options']);return db[_0x3c8c('0x31')]['find'](_0x2be023)['then'](handleEntityNotFound(_0x4d788b,null))[_0x3c8c('0x28')](respondWithResult(_0x4d788b,null))[_0x3c8c('0x4b')](handleError(_0x4d788b,null));};exports[_0x3c8c('0x4f')]=function(_0x46e530,_0x5c1754){return db[_0x3c8c('0x31')][_0x3c8c('0x4f')](_0x46e530[_0x3c8c('0x50')],{})[_0x3c8c('0x28')](function(_0x1fbdaf){var _0x1c2e03=_0x46e530[_0x3c8c('0x51')][_0x3c8c('0x2a')]({'plain':!![]});if(!_0x1c2e03)throw new Error(_0x3c8c('0x52'));if(_0x1c2e03[_0x3c8c('0x53')]===_0x3c8c('0x51')){var _0xe0ddda=_0x1fbdaf['get']({'plain':!![]});var _0x45adb3=_0x3c8c('0x2b');return db[_0x3c8c('0x54')][_0x3c8c('0x55')]({'where':{'name':_0x45adb3,'userProfileId':_0x1c2e03['userProfileId']},'raw':!![]})[_0x3c8c('0x28')](function(_0x3330e5){if(_0x3330e5&&_0x3330e5['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0xe0ddda[_0x3c8c('0x2f')],'resourceId':_0xe0ddda['id'],'type':_0x3330e5['name'],'sectionId':_0x3330e5['id']},{})[_0x3c8c('0x28')](function(){return _0x1fbdaf;});}else{return _0x1fbdaf;}})[_0x3c8c('0x4b')](function(_0x29962d){logger[_0x3c8c('0x2d')](_0x3c8c('0x56'),_0x29962d);throw _0x29962d;});}return _0x1fbdaf;})['then'](respondWithResult(_0x5c1754,0xc9))[_0x3c8c('0x4b')](handleError(_0x5c1754,null));};exports[_0x3c8c('0x27')]=function(_0xdd926d,_0x332138){if(_0xdd926d[_0x3c8c('0x50')]['id']){delete _0xdd926d[_0x3c8c('0x50')]['id'];}return db[_0x3c8c('0x31')][_0x3c8c('0x55')]({'where':{'id':_0xdd926d['params']['id']}})[_0x3c8c('0x28')](handleEntityNotFound(_0x332138,null))[_0x3c8c('0x28')](saveUpdates(_0xdd926d[_0x3c8c('0x50')],null))[_0x3c8c('0x28')](respondWithResult(_0x332138,null))[_0x3c8c('0x4b')](handleError(_0x332138,null));};exports[_0x3c8c('0x29')]=function(_0x5c9afc,_0x475c38){return db[_0x3c8c('0x31')]['find']({'where':{'id':_0x5c9afc[_0x3c8c('0x57')]['id']}})[_0x3c8c('0x28')](handleEntityNotFound(_0x475c38,null))[_0x3c8c('0x28')](removeEntity(_0x475c38,null))[_0x3c8c('0x4b')](handleError(_0x475c38,null));};exports[_0x3c8c('0x58')]=function(_0x4b9540,_0x3ec0a9){return db[_0x3c8c('0x31')][_0x3c8c('0x58')]()[_0x3c8c('0x28')](respondWithResult(_0x3ec0a9,null))[_0x3c8c('0x4b')](handleError(_0x3ec0a9,null));};exports['getMembers']=function(_0x386265,_0x12c87b,_0x36d3f9){var _0x33e64f={'raw':!![],'where':{}},_0x31ba26={},_0x1b55e4;return db[_0x3c8c('0x31')][_0x3c8c('0x59')]({'where':{'id':_0x386265[_0x3c8c('0x57')]['id']}})[_0x3c8c('0x28')](handleEntityNotFound(_0x12c87b,null))[_0x3c8c('0x28')](function(_0x28f648){if(_0x28f648){_0x1b55e4=_0x28f648['get']({'plain':!![]});_0x31ba26[_0x3c8c('0x34')]=_[_0x3c8c('0x4d')](db[_0x3c8c('0x5a')][_0x3c8c('0x4e')]);_0x31ba26[_0x3c8c('0x36')]=_[_0x3c8c('0x4d')](_0x386265[_0x3c8c('0x36')]);_0x31ba26[_0x3c8c('0x37')]=_[_0x3c8c('0x38')](_0x31ba26[_0x3c8c('0x34')],_0x31ba26[_0x3c8c('0x36')]);_0x33e64f[_0x3c8c('0x39')]=_[_0x3c8c('0x38')](_0x31ba26['model'],qs['fields'](_0x386265[_0x3c8c('0x36')][_0x3c8c('0x3a')]));_0x33e64f['attributes']=_0x33e64f[_0x3c8c('0x39')][_0x3c8c('0x3b')]?_0x33e64f['attributes']:_0x31ba26[_0x3c8c('0x34')];if(!_0x386265['query']['hasOwnProperty']('nolimit')){_0x33e64f[_0x3c8c('0x21')]=qs['limit'](_0x386265[_0x3c8c('0x36')][_0x3c8c('0x21')]);_0x33e64f[_0x3c8c('0x3e')]=qs[_0x3c8c('0x3e')](_0x386265[_0x3c8c('0x36')][_0x3c8c('0x3e')]);}_0x33e64f[_0x3c8c('0x3f')]=qs[_0x3c8c('0x40')](_0x386265[_0x3c8c('0x36')][_0x3c8c('0x40')]);_0x33e64f[_0x3c8c('0x41')]=qs[_0x3c8c('0x37')](_[_0x3c8c('0x42')](_0x386265['query'],_0x31ba26[_0x3c8c('0x37')]));_0x33e64f[_0x3c8c('0x41')][_0x3c8c('0x5b')]=_0x28f648['id'];if(_0x386265[_0x3c8c('0x36')][_0x3c8c('0x43')]){_0x33e64f[_0x3c8c('0x41')]=_[_0x3c8c('0x44')](_0x33e64f[_0x3c8c('0x41')],{'$or':_['map'](_0x33e64f[_0x3c8c('0x39')],function(_0x5cf7c9){var _0x1c8847={};_0x1c8847[_0x5cf7c9]={'$like':'%'+_0x386265[_0x3c8c('0x36')][_0x3c8c('0x43')]+'%'};return _0x1c8847;})});}_0x33e64f=_[_0x3c8c('0x44')]({},_0x33e64f,_0x386265[_0x3c8c('0x46')]);return db[_0x3c8c('0x5a')][_0x3c8c('0x49')](_0x33e64f);}})[_0x3c8c('0x28')](function(_0x5b83a5){if(_0x5b83a5){return db[_0x3c8c('0x5c')][_0x3c8c('0x5d')]({'where':{'id':_[_0x3c8c('0x35')](_0x5b83a5,_0x3c8c('0x5e')),'role':_0x3c8c('0x5f')},'attributes':['id',_0x3c8c('0x2f'),_0x3c8c('0x60'),_0x3c8c('0x61'),'createdAt']});}})[_0x3c8c('0x28')](function(_0x57039f){if(_0x57039f){return{'count':_0x57039f[_0x3c8c('0x20')],'rows':_['map'](_0x57039f[_0x3c8c('0x4a')],function(_0x2d4448){return{'membername':_0x2d4448[_0x3c8c('0x2f')],'UserId':_0x2d4448['id'],'queue_name':_0x1b55e4[_0x3c8c('0x2f')],'OpenchannelQueueId':_0x1b55e4['id'],'interface':util['format'](_0x3c8c('0x62'),_0x3c8c('0x63'),_0x2d4448[_0x3c8c('0x2f')]),'penalty':0x0,'paused':_0x2d4448[_0x3c8c('0x60')],'createdAt':_0x2d4448[_0x3c8c('0x64')],'updatedAt':_0x2d4448[_0x3c8c('0x61')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x3c8c('0x28')](respondWithFilteredResult(_0x12c87b,_0x33e64f))['catch'](handleError(_0x12c87b,null));};exports[_0x3c8c('0x65')]=function(_0x5c51a,_0x4d383c,_0x51c7e0){var _0x368ec9={};var _0x57878f={};var _0xbd318b;var _0x481612;return db[_0x3c8c('0x31')][_0x3c8c('0x59')]({'where':{'id':_0x5c51a[_0x3c8c('0x57')]['id']}})[_0x3c8c('0x28')](handleEntityNotFound(_0x4d383c,null))[_0x3c8c('0x28')](function(_0x4a336a){if(_0x4a336a){_0xbd318b=_0x4a336a;_0x57878f['model']=_['keys'](db[_0x3c8c('0x66')]['rawAttributes']);_0x57878f[_0x3c8c('0x36')]=_['keys'](_0x5c51a[_0x3c8c('0x36')]);_0x57878f[_0x3c8c('0x37')]=_[_0x3c8c('0x38')](_0x57878f[_0x3c8c('0x34')],_0x57878f[_0x3c8c('0x36')]);_0x368ec9[_0x3c8c('0x39')]=_['intersection'](_0x57878f[_0x3c8c('0x34')],qs[_0x3c8c('0x3a')](_0x5c51a[_0x3c8c('0x36')][_0x3c8c('0x3a')]));_0x368ec9[_0x3c8c('0x39')]=_0x368ec9[_0x3c8c('0x39')]['length']?_0x368ec9[_0x3c8c('0x39')]:_0x57878f[_0x3c8c('0x34')];_0x368ec9[_0x3c8c('0x3f')]=qs[_0x3c8c('0x40')](_0x5c51a[_0x3c8c('0x36')][_0x3c8c('0x40')]);_0x368ec9[_0x3c8c('0x41')]=qs[_0x3c8c('0x37')](_[_0x3c8c('0x42')](_0x5c51a['query'],_0x57878f[_0x3c8c('0x37')]));if(_0x5c51a[_0x3c8c('0x36')][_0x3c8c('0x43')]){_0x368ec9[_0x3c8c('0x41')]=_[_0x3c8c('0x44')](_0x368ec9[_0x3c8c('0x41')],{'$or':_[_0x3c8c('0x35')](_0x368ec9[_0x3c8c('0x39')],function(_0x2261b8){var _0x3774e1={};_0x3774e1[_0x2261b8]={'$like':'%'+_0x5c51a[_0x3c8c('0x36')][_0x3c8c('0x43')]+'%'};return _0x3774e1;})});}_0x368ec9=_[_0x3c8c('0x44')]({},_0x368ec9,_0x5c51a[_0x3c8c('0x46')]);return _0xbd318b[_0x3c8c('0x65')](_0x368ec9);}})[_0x3c8c('0x28')](function(_0x591c67){if(_0x591c67){_0x481612=_0x591c67[_0x3c8c('0x3b')];if(!_0x5c51a[_0x3c8c('0x36')]['hasOwnProperty'](_0x3c8c('0x3d'))){_0x368ec9['limit']=qs[_0x3c8c('0x21')](_0x5c51a['query'][_0x3c8c('0x21')]);_0x368ec9['offset']=qs[_0x3c8c('0x3e')](_0x5c51a[_0x3c8c('0x36')][_0x3c8c('0x3e')]);}return _0xbd318b[_0x3c8c('0x65')](_0x368ec9);}})[_0x3c8c('0x28')](function(_0x5c8eb9){if(_0x5c8eb9){return _0x5c8eb9?{'count':_0x481612,'rows':_0x5c8eb9}:null;}})[_0x3c8c('0x28')](respondWithResult(_0x4d383c,null))['catch'](handleError(_0x4d383c,null));};exports[_0x3c8c('0x67')]=function(_0x3b2ae2,_0x37156b,_0x729d0e){var _0x445317=_0x3b2ae2[_0x3c8c('0x50')][_0x3c8c('0x68')];return db[_0x3c8c('0x66')][_0x3c8c('0x49')]({'where':{'id':_0x445317},'attributes':['id'],'include':[{'model':db['User'],'as':_0x3c8c('0x69'),'attributes':['id','name','online',_0x3c8c('0x6a'),'interface'],'raw':!![]}]})[_0x3c8c('0x28')](function(_0x4469c3){if(_0x4469c3){var _0x5c3105=_[_0x3c8c('0x6b')](_0x4469c3,function(_0x225cda){var _0x5a40b4=_0x225cda[_0x3c8c('0x2a')]({'plain':!![]});return _0x5a40b4[_0x3c8c('0x69')];});return db[_0x3c8c('0x31')][_0x3c8c('0x55')]({'where':{'id':_0x3b2ae2['params']['id']}})['then'](function(_0x586130){return db[_0x3c8c('0x6c')]['transaction'](function(_0x33781b){return _0x586130[_0x3c8c('0x67')](_0x445317,{'transaction':_0x33781b})[_0x3c8c('0x28')](function(){return BPromise[_0x3c8c('0x6d')](_0x5c3105,function(_0x4ac5de){return db[_0x3c8c('0x5a')][_0x3c8c('0x6e')]({'where':{'UserId':_0x4ac5de['id'],'OpenchannelQueueId':_0x3b2ae2[_0x3c8c('0x57')]['id']},'transaction':_0x33781b});});})['then'](function(){_0x5c3105[_0x3c8c('0x6f')](function(_0x9fffc8){socket[_0x3c8c('0x70')](_0x3c8c('0x71'),{'UserId':_0x9fffc8['id'],'OpenchannelQueueId':_0x586130['id']});});});});});}})['then'](respondWithStatusCode(_0x37156b,null))[_0x3c8c('0x4b')](handleError(_0x37156b,null));};exports[_0x3c8c('0x72')]=function(_0x4aaade,_0x593344,_0x444d83){return db[_0x3c8c('0x66')][_0x3c8c('0x49')]({'where':{'id':_0x4aaade[_0x3c8c('0x36')][_0x3c8c('0x68')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x3c8c('0x69'),'attributes':['id'],'raw':!![]}]})[_0x3c8c('0x28')](handleEntityNotFound(_0x593344,null))[_0x3c8c('0x28')](function(_0x1dd3ff){var _0x35436a=_['map'](_0x1dd3ff,'id');var _0x46a289=[];var _0x2f528b=[];var _0x1fe82b=squel[_0x3c8c('0x73')]();_0x1fe82b[_0x3c8c('0x74')](_0x3c8c('0x75'))[_0x3c8c('0x76')](_0x3c8c('0x77'),'tq')[_0x3c8c('0x78')](_0x3c8c('0x79'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x3c8c('0x41')](_0x3c8c('0x7a'),_0x4aaade[_0x3c8c('0x57')]['id']);for(var _0x4cc78b=0x0;_0x4cc78b<_0x1dd3ff[_0x3c8c('0x3b')];_0x4cc78b+=0x1){let _0x10ea83=_0x1dd3ff[_0x4cc78b];for(var _0x5c868f=0x0;_0x5c868f<_0x10ea83['Agents'][_0x3c8c('0x3b')];_0x5c868f+=0x1){let _0x55259e=_0x10ea83[_0x3c8c('0x69')][_0x5c868f];var _0x4edfc0=_0x1fe82b[_0x3c8c('0x7b')]();_0x4edfc0['where']('ut.UserId\x20=\x20?',_0x55259e['id']);_0x2f528b[_0x3c8c('0x7c')](db[_0x3c8c('0x6c')][_0x3c8c('0x36')](_0x4edfc0['toString'](),{'type':db['sequelize'][_0x3c8c('0x7d')][_0x3c8c('0x7e')]})['then'](function(_0x2a7c47){if(_0x2a7c47[_0x3c8c('0x3b')]===0x1){return _0x55259e['id'];}else{var _0x45f030=_[_0x3c8c('0x7f')](_[_0x3c8c('0x35')](_0x2a7c47,_0x3c8c('0x80')),function(_0x17ff66){return _['includes'](_0x35436a,_0x17ff66);});if(_0x45f030){return _0x55259e['id'];}}}));}}return BPromise[_0x3c8c('0x81')](_0x2f528b)['then'](function(_0x49c805){_0x46a289=_(_0x46a289)['union'](_0x49c805)['compact']()[_0x3c8c('0x82')]();return db['OpenchannelQueue'][_0x3c8c('0x55')]({'where':{'id':_0x4aaade[_0x3c8c('0x57')]['id']}})[_0x3c8c('0x28')](function(_0x1f98d7){return db[_0x3c8c('0x6c')][_0x3c8c('0x83')](function(_0x2facf9){return _0x1f98d7['removeTeams'](_0x4aaade[_0x3c8c('0x36')]['ids'],{'transaction':_0x2facf9})[_0x3c8c('0x28')](function(){if(!_[_0x3c8c('0x84')](_0x46a289)){return _0x1f98d7[_0x3c8c('0x85')](_0x46a289,{'transaction':_0x2facf9});}})['then'](function(){_0x46a289['forEach'](function(_0x5cce37){socket[_0x3c8c('0x70')](_0x3c8c('0x86'),{'UserId':_0x5cce37,'OpenchannelQueueId':_0x1f98d7['id']});});});});});});})[_0x3c8c('0x28')](respondWithStatusCode(_0x593344,null))[_0x3c8c('0x4b')](handleError(_0x593344,null));};exports[_0x3c8c('0x87')]=function(_0x31d223,_0x3b9718,_0x1bcc83){return db[_0x3c8c('0x31')]['find']({'where':{'id':_0x31d223[_0x3c8c('0x57')]['id']}})[_0x3c8c('0x28')](handleEntityNotFound(_0x3b9718,null))[_0x3c8c('0x28')](function(_0x3e4166){if(_0x3e4166){return _0x3e4166[_0x3c8c('0x87')](_0x31d223[_0x3c8c('0x50')]['ids'],_[_0x3c8c('0x88')](_0x31d223[_0x3c8c('0x50')],[_0x3c8c('0x68'),'id'])||{})[_0x3c8c('0x89')](function(_0x3a3e4e){for(var _0x31ce2f=0x0;_0x31ce2f<_0x31d223['body'][_0x3c8c('0x68')][_0x3c8c('0x3b')];_0x31ce2f+=0x1){socket[_0x3c8c('0x70')](_0x3c8c('0x71'),{'UserId':Number(_0x31d223[_0x3c8c('0x50')][_0x3c8c('0x68')][_0x31ce2f]),'OpenchannelQueueId':Number(_0x31d223[_0x3c8c('0x57')]['id'])});}return _0x3a3e4e;});}})['then'](respondWithResult(_0x3b9718,null))[_0x3c8c('0x4b')](handleError(_0x3b9718,null));};exports[_0x3c8c('0x85')]=function(_0x1d9cb8,_0x593612,_0x5cc246){return db[_0x3c8c('0x31')][_0x3c8c('0x55')]({'where':{'id':_0x1d9cb8[_0x3c8c('0x57')]['id']}})[_0x3c8c('0x28')](handleEntityNotFound(_0x593612,null))[_0x3c8c('0x28')](function(_0x58c7a4){if(_0x58c7a4){return _0x58c7a4['removeAgents'](_0x1d9cb8[_0x3c8c('0x36')]['ids'])[_0x3c8c('0x28')](function(){if(_[_0x3c8c('0x8a')](_0x1d9cb8[_0x3c8c('0x36')]['ids'])){for(var _0x1b246d=0x0;_0x1b246d<_0x1d9cb8[_0x3c8c('0x36')][_0x3c8c('0x68')]['length'];_0x1b246d+=0x1){socket['emit'](_0x3c8c('0x86'),{'UserId':Number(_0x1d9cb8[_0x3c8c('0x36')][_0x3c8c('0x68')][_0x1b246d]),'OpenchannelQueueId':Number(_0x1d9cb8[_0x3c8c('0x57')]['id'])});}}else{socket[_0x3c8c('0x70')](_0x3c8c('0x86'),{'UserId':Number(_0x1d9cb8[_0x3c8c('0x36')][_0x3c8c('0x68')]),'OpenchannelQueueId':Number(_0x1d9cb8[_0x3c8c('0x57')]['id'])});}});}})[_0x3c8c('0x28')](respondWithStatusCode(_0x593612,null))['catch'](handleError(_0x593612,null));};exports[_0x3c8c('0x8b')]=function(_0x281df5,_0x4c2954,_0x5b9dc1){var _0x29f211={};var _0x11ea4b={};var _0x26fd59;var _0x1203a9;return db['OpenchannelQueue'][_0x3c8c('0x59')]({'where':{'id':_0x281df5[_0x3c8c('0x57')]['id']}})[_0x3c8c('0x28')](handleEntityNotFound(_0x4c2954,null))[_0x3c8c('0x28')](function(_0x11f54d){if(_0x11f54d){_0x26fd59=_0x11f54d;_0x11ea4b[_0x3c8c('0x34')]=_[_0x3c8c('0x4d')](db[_0x3c8c('0x5c')][_0x3c8c('0x4e')]);_0x11ea4b[_0x3c8c('0x36')]=_['keys'](_0x281df5['query']);_0x11ea4b[_0x3c8c('0x37')]=_['intersection'](_0x11ea4b[_0x3c8c('0x34')],_0x11ea4b[_0x3c8c('0x36')]);_0x29f211['attributes']=_['intersection'](_0x11ea4b[_0x3c8c('0x34')],qs[_0x3c8c('0x3a')](_0x281df5['query'][_0x3c8c('0x3a')]));_0x29f211['attributes']=_0x29f211[_0x3c8c('0x39')][_0x3c8c('0x3b')]?_0x29f211[_0x3c8c('0x39')]:_0x11ea4b['model'];_0x29f211[_0x3c8c('0x3f')]=qs['sort'](_0x281df5[_0x3c8c('0x36')]['sort']);_0x29f211[_0x3c8c('0x41')]=qs[_0x3c8c('0x37')](_['pick'](_0x281df5[_0x3c8c('0x36')],_0x11ea4b[_0x3c8c('0x37')]));if(_0x281df5[_0x3c8c('0x36')][_0x3c8c('0x43')]){_0x29f211[_0x3c8c('0x41')]=_[_0x3c8c('0x44')](_0x29f211[_0x3c8c('0x41')],{'$or':_[_0x3c8c('0x35')](_0x29f211[_0x3c8c('0x39')],function(_0x249787){var _0x51e022={};_0x51e022[_0x249787]={'$like':'%'+_0x281df5[_0x3c8c('0x36')][_0x3c8c('0x43')]+'%'};return _0x51e022;})});}_0x29f211=_[_0x3c8c('0x44')]({},_0x29f211,_0x281df5[_0x3c8c('0x46')]);return _0x26fd59[_0x3c8c('0x8b')](_0x29f211);}})[_0x3c8c('0x28')](function(_0x4198b5){if(_0x4198b5){_0x1203a9=_0x4198b5['length'];if(!_0x281df5[_0x3c8c('0x36')][_0x3c8c('0x3c')]('nolimit')){_0x29f211[_0x3c8c('0x21')]=qs['limit'](_0x281df5['query'][_0x3c8c('0x21')]);_0x29f211['offset']=qs[_0x3c8c('0x3e')](_0x281df5[_0x3c8c('0x36')][_0x3c8c('0x3e')]);}return _0x26fd59['getAgents'](_0x29f211);}})[_0x3c8c('0x28')](function(_0xd07cdb){if(_0xd07cdb){return _0xd07cdb?{'count':_0x1203a9,'rows':_0xd07cdb}:null;}})[_0x3c8c('0x28')](respondWithResult(_0x4c2954,null))['catch'](handleError(_0x4c2954,null));};
\ No newline at end of file
+var _0x2fa4=['fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','register','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','then','destroy','get','OpenchannelQueues','UserProfileResource','error','stack','name','send','index','map','OpenchannelQueue','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','includeAll','include','rows','catch','show','params','keys','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','update','describe','findOne','rawAttributes','OpenchannelQueueId','UserOpenchannelQueue','findAll','User','findAndCountAll','UserId','agent','openchannelPause','updatedAt','createdAt','%s/%s','SIP','Team','getTeams','addTeams','ids','online','interface','flatMap','Agents','sequelize','transaction','each','forEach','removeTeams','tq.TeamId','from','team_has_openchannel_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','OpenchannelQueueId\x20=\x20?','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','every','TeamId','includes','compact','value','isEmpty','removeAgents','omit','spread','emit','userOpenchannelQueue:save','isArray','userOpenchannelQueue:remove','getAgents','eml-format','rimraf','zip-dir'];(function(_0x99ed02,_0x2fb1d7){var _0x5b2335=function(_0x5f54ea){while(--_0x5f54ea){_0x99ed02['push'](_0x99ed02['shift']());}};_0x5b2335(++_0x2fb1d7);}(_0x2fa4,0x11d));var _0x42fa=function(_0x2588dd,_0x16f4cb){_0x2588dd=_0x2588dd-0x0;var _0x3bc258=_0x2fa4[_0x2588dd];return _0x3bc258;};'use strict';var emlformat=require(_0x42fa('0x0'));var rimraf=require(_0x42fa('0x1'));var zipdir=require(_0x42fa('0x2'));var jsonpatch=require(_0x42fa('0x3'));var rp=require('request-promise');var moment=require(_0x42fa('0x4'));var BPromise=require(_0x42fa('0x5'));var Mustache=require('mustache');var util=require(_0x42fa('0x6'));var path=require(_0x42fa('0x7'));var sox=require(_0x42fa('0x8'));var csv=require(_0x42fa('0x9'));var ejs=require(_0x42fa('0xa'));var fs=require('fs');var fs_extra=require(_0x42fa('0xb'));var _=require('lodash');var squel=require(_0x42fa('0xc'));var crypto=require(_0x42fa('0xd'));var jsforce=require(_0x42fa('0xe'));var deskjs=require(_0x42fa('0xf'));var toCsv=require(_0x42fa('0x9'));var querystring=require(_0x42fa('0x10'));var Papa=require(_0x42fa('0x11'));var Redis=require(_0x42fa('0x12'));var authService=require(_0x42fa('0x13'));var qs=require(_0x42fa('0x14'));var as=require(_0x42fa('0x15'));var hardwareService=require(_0x42fa('0x16'));var logger=require('../../config/logger')(_0x42fa('0x17'));var utils=require(_0x42fa('0x18'));var config=require(_0x42fa('0x19'));var licenseUtil=require(_0x42fa('0x1a'));var db=require(_0x42fa('0x1b'))['db'];config['redis']=_['defaults'](config[_0x42fa('0x1c')],{'host':_0x42fa('0x1d'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x42fa('0x1c')]));require('./openchannelQueue.socket')[_0x42fa('0x1e')](socket);function respondWithStatusCode(_0x190ea5,_0x349944){_0x349944=_0x349944||0xcc;return function(_0x218eeb){if(_0x218eeb){return _0x190ea5[_0x42fa('0x1f')](_0x349944);}return _0x190ea5[_0x42fa('0x20')](_0x349944)[_0x42fa('0x21')]();};}function respondWithResult(_0x575f3f,_0x124d25){_0x124d25=_0x124d25||0xc8;return function(_0x27213f){if(_0x27213f){return _0x575f3f[_0x42fa('0x20')](_0x124d25)[_0x42fa('0x22')](_0x27213f);}};}function respondWithFilteredResult(_0x4fbd30,_0x2795d7){return function(_0x6fe383){if(_0x6fe383){var _0x418159=typeof _0x2795d7[_0x42fa('0x23')]===_0x42fa('0x24')&&typeof _0x2795d7[_0x42fa('0x25')]===_0x42fa('0x24');var _0x63258e=_0x6fe383[_0x42fa('0x26')];var _0x129114=_0x418159?0x0:_0x2795d7[_0x42fa('0x23')];var _0x225d6d=_0x418159?_0x6fe383[_0x42fa('0x26')]:_0x2795d7[_0x42fa('0x23')]+_0x2795d7[_0x42fa('0x25')];var _0x4fba63;if(_0x225d6d>=_0x63258e){_0x225d6d=_0x63258e;_0x4fba63=0xc8;}else{_0x4fba63=0xce;}_0x4fbd30[_0x42fa('0x20')](_0x4fba63);return _0x4fbd30[_0x42fa('0x27')]('Content-Range',_0x129114+'-'+_0x225d6d+'/'+_0x63258e)[_0x42fa('0x22')](_0x6fe383);}return null;};}function patchUpdates(_0x397787){return function(_0x457b89){try{jsonpatch[_0x42fa('0x28')](_0x457b89,_0x397787,!![]);}catch(_0x156749){return BPromise[_0x42fa('0x29')](_0x156749);}return _0x457b89[_0x42fa('0x2a')]();};}function saveUpdates(_0x179761,_0x206238){return function(_0x71af2f){if(_0x71af2f){return _0x71af2f['update'](_0x179761)[_0x42fa('0x2b')](function(_0x2b1c03){return _0x2b1c03;});}return null;};}function removeEntity(_0x235a58,_0x185166){return function(_0x3d341c){if(_0x3d341c){return _0x3d341c[_0x42fa('0x2c')]()[_0x42fa('0x2b')](function(){var _0x39dfcb=_0x3d341c[_0x42fa('0x2d')]({'plain':!![]});var _0x3bb8db=_0x42fa('0x2e');return db[_0x42fa('0x2f')][_0x42fa('0x2c')]({'where':{'type':_0x3bb8db,'resourceId':_0x39dfcb['id']}})['then'](function(){return _0x3d341c;});})[_0x42fa('0x2b')](function(){_0x235a58['status'](0xcc)[_0x42fa('0x21')]();});}};}function handleEntityNotFound(_0x1205cd,_0x3e9fec){return function(_0x37643a){if(!_0x37643a){_0x1205cd[_0x42fa('0x1f')](0x194);}return _0x37643a;};}function handleError(_0x18534e,_0x16d5fe){_0x16d5fe=_0x16d5fe||0x1f4;return function(_0x2071c3){logger[_0x42fa('0x30')](_0x2071c3[_0x42fa('0x31')]);if(_0x2071c3[_0x42fa('0x32')]){delete _0x2071c3['name'];}_0x18534e[_0x42fa('0x20')](_0x16d5fe)[_0x42fa('0x33')](_0x2071c3);};}exports[_0x42fa('0x34')]=function(_0x48e8ac,_0x87dbdc){var _0x11a11b={},_0x49881e={},_0x22b36b={'count':0x0,'rows':[]};var _0x394152=_[_0x42fa('0x35')](db[_0x42fa('0x36')]['rawAttributes'],function(_0xae4bf8){return{'name':_0xae4bf8[_0x42fa('0x37')],'type':_0xae4bf8[_0x42fa('0x38')][_0x42fa('0x39')]};});_0x49881e[_0x42fa('0x3a')]=_['map'](_0x394152,_0x42fa('0x32'));_0x49881e[_0x42fa('0x3b')]=_['keys'](_0x48e8ac[_0x42fa('0x3b')]);_0x49881e[_0x42fa('0x3c')]=_[_0x42fa('0x3d')](_0x49881e[_0x42fa('0x3a')],_0x49881e['query']);_0x11a11b[_0x42fa('0x3e')]=_[_0x42fa('0x3d')](_0x49881e['model'],qs[_0x42fa('0x3f')](_0x48e8ac[_0x42fa('0x3b')][_0x42fa('0x3f')]));_0x11a11b[_0x42fa('0x3e')]=_0x11a11b[_0x42fa('0x3e')][_0x42fa('0x40')]?_0x11a11b[_0x42fa('0x3e')]:_0x49881e['model'];if(!_0x48e8ac[_0x42fa('0x3b')][_0x42fa('0x41')](_0x42fa('0x42'))){_0x11a11b[_0x42fa('0x25')]=qs['limit'](_0x48e8ac[_0x42fa('0x3b')][_0x42fa('0x25')]);_0x11a11b[_0x42fa('0x23')]=qs['offset'](_0x48e8ac[_0x42fa('0x3b')]['offset']);}_0x11a11b[_0x42fa('0x43')]=qs[_0x42fa('0x44')](_0x48e8ac[_0x42fa('0x3b')][_0x42fa('0x44')]);_0x11a11b['where']=qs[_0x42fa('0x3c')](_[_0x42fa('0x45')](_0x48e8ac[_0x42fa('0x3b')],_0x49881e[_0x42fa('0x3c')]),_0x394152);if(_0x48e8ac[_0x42fa('0x3b')][_0x42fa('0x46')]){_0x11a11b[_0x42fa('0x47')]=_[_0x42fa('0x48')](_0x11a11b[_0x42fa('0x47')],{'$or':_[_0x42fa('0x35')](_0x394152,function(_0x4b3468){if(_0x4b3468['type']!==_0x42fa('0x49')){var _0x530b17={};_0x530b17[_0x4b3468[_0x42fa('0x32')]]={'$like':'%'+_0x48e8ac[_0x42fa('0x3b')][_0x42fa('0x46')]+'%'};return _0x530b17;}})});}_0x11a11b=_[_0x42fa('0x48')]({},_0x11a11b,_0x48e8ac['options']);var _0x21bb70={'where':_0x11a11b[_0x42fa('0x47')]};return db[_0x42fa('0x36')][_0x42fa('0x26')](_0x21bb70)[_0x42fa('0x2b')](function(_0x4af921){_0x22b36b[_0x42fa('0x26')]=_0x4af921;if(_0x48e8ac[_0x42fa('0x3b')][_0x42fa('0x4a')]){_0x11a11b[_0x42fa('0x4b')]=[{'all':!![]}];}return db[_0x42fa('0x36')]['findAll'](_0x11a11b);})['then'](function(_0x17aa8f){_0x22b36b[_0x42fa('0x4c')]=_0x17aa8f;return _0x22b36b;})[_0x42fa('0x2b')](respondWithFilteredResult(_0x87dbdc,_0x11a11b))[_0x42fa('0x4d')](handleError(_0x87dbdc,null));};exports[_0x42fa('0x4e')]=function(_0x19b131,_0x4e3351){var _0x193414={'raw':!![],'where':{'id':_0x19b131[_0x42fa('0x4f')]['id']}},_0x231882={};_0x231882[_0x42fa('0x3a')]=_[_0x42fa('0x50')](db[_0x42fa('0x36')]['rawAttributes']);_0x231882['query']=_[_0x42fa('0x50')](_0x19b131[_0x42fa('0x3b')]);_0x231882[_0x42fa('0x3c')]=_[_0x42fa('0x3d')](_0x231882['model'],_0x231882[_0x42fa('0x3b')]);_0x193414[_0x42fa('0x3e')]=_[_0x42fa('0x3d')](_0x231882['model'],qs[_0x42fa('0x3f')](_0x19b131[_0x42fa('0x3b')][_0x42fa('0x3f')]));_0x193414[_0x42fa('0x3e')]=_0x193414[_0x42fa('0x3e')][_0x42fa('0x40')]?_0x193414['attributes']:_0x231882['model'];if(_0x19b131[_0x42fa('0x3b')]['includeAll']){_0x193414[_0x42fa('0x4b')]=[{'all':!![]}];}_0x193414=_['merge']({},_0x193414,_0x19b131[_0x42fa('0x51')]);return db['OpenchannelQueue'][_0x42fa('0x52')](_0x193414)[_0x42fa('0x2b')](handleEntityNotFound(_0x4e3351,null))['then'](respondWithResult(_0x4e3351,null))[_0x42fa('0x4d')](handleError(_0x4e3351,null));};exports['create']=function(_0x18c023,_0x5cf17c){return db[_0x42fa('0x36')][_0x42fa('0x53')](_0x18c023[_0x42fa('0x54')],{})[_0x42fa('0x2b')](function(_0x253fff){var _0x3c9db7=_0x18c023[_0x42fa('0x55')][_0x42fa('0x2d')]({'plain':!![]});if(!_0x3c9db7)throw new Error(_0x42fa('0x56'));if(_0x3c9db7[_0x42fa('0x57')]===_0x42fa('0x55')){var _0x50f8ef=_0x253fff[_0x42fa('0x2d')]({'plain':!![]});var _0x376749='OpenchannelQueues';return db['UserProfileSection'][_0x42fa('0x52')]({'where':{'name':_0x376749,'userProfileId':_0x3c9db7[_0x42fa('0x58')]},'raw':!![]})['then'](function(_0x1dbcde){if(_0x1dbcde&&_0x1dbcde[_0x42fa('0x59')]===0x0){return db[_0x42fa('0x2f')]['create']({'name':_0x50f8ef[_0x42fa('0x32')],'resourceId':_0x50f8ef['id'],'type':_0x1dbcde[_0x42fa('0x32')],'sectionId':_0x1dbcde['id']},{})[_0x42fa('0x2b')](function(){return _0x253fff;});}else{return _0x253fff;}})[_0x42fa('0x4d')](function(_0x3bd348){logger[_0x42fa('0x30')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3bd348);throw _0x3bd348;});}return _0x253fff;})['then'](respondWithResult(_0x5cf17c,0xc9))[_0x42fa('0x4d')](handleError(_0x5cf17c,null));};exports[_0x42fa('0x5a')]=function(_0x4846e3,_0xf92936){if(_0x4846e3[_0x42fa('0x54')]['id']){delete _0x4846e3[_0x42fa('0x54')]['id'];}return db[_0x42fa('0x36')]['find']({'where':{'id':_0x4846e3[_0x42fa('0x4f')]['id']}})[_0x42fa('0x2b')](handleEntityNotFound(_0xf92936,null))[_0x42fa('0x2b')](saveUpdates(_0x4846e3['body'],null))[_0x42fa('0x2b')](respondWithResult(_0xf92936,null))[_0x42fa('0x4d')](handleError(_0xf92936,null));};exports[_0x42fa('0x2c')]=function(_0xdd1b91,_0x116870){return db[_0x42fa('0x36')]['find']({'where':{'id':_0xdd1b91[_0x42fa('0x4f')]['id']}})[_0x42fa('0x2b')](handleEntityNotFound(_0x116870,null))[_0x42fa('0x2b')](removeEntity(_0x116870,null))[_0x42fa('0x4d')](handleError(_0x116870,null));};exports[_0x42fa('0x5b')]=function(_0x41fd5a,_0xecd5e2){return db[_0x42fa('0x36')][_0x42fa('0x5b')]()[_0x42fa('0x2b')](respondWithResult(_0xecd5e2,null))['catch'](handleError(_0xecd5e2,null));};exports['getMembers']=function(_0xba9bc2,_0x26550e,_0x30f172){var _0x2eb050={'raw':!![],'where':{}},_0x25f85d={},_0xb0eb65;return db[_0x42fa('0x36')][_0x42fa('0x5c')]({'where':{'id':_0xba9bc2[_0x42fa('0x4f')]['id']}})[_0x42fa('0x2b')](handleEntityNotFound(_0x26550e,null))[_0x42fa('0x2b')](function(_0x2e04ac){if(_0x2e04ac){_0xb0eb65=_0x2e04ac[_0x42fa('0x2d')]({'plain':!![]});_0x25f85d[_0x42fa('0x3a')]=_['keys'](db['UserOpenchannelQueue'][_0x42fa('0x5d')]);_0x25f85d[_0x42fa('0x3b')]=_[_0x42fa('0x50')](_0xba9bc2[_0x42fa('0x3b')]);_0x25f85d[_0x42fa('0x3c')]=_[_0x42fa('0x3d')](_0x25f85d[_0x42fa('0x3a')],_0x25f85d[_0x42fa('0x3b')]);_0x2eb050[_0x42fa('0x3e')]=_[_0x42fa('0x3d')](_0x25f85d['model'],qs[_0x42fa('0x3f')](_0xba9bc2[_0x42fa('0x3b')][_0x42fa('0x3f')]));_0x2eb050[_0x42fa('0x3e')]=_0x2eb050[_0x42fa('0x3e')]['length']?_0x2eb050[_0x42fa('0x3e')]:_0x25f85d[_0x42fa('0x3a')];if(!_0xba9bc2['query'][_0x42fa('0x41')](_0x42fa('0x42'))){_0x2eb050[_0x42fa('0x25')]=qs[_0x42fa('0x25')](_0xba9bc2['query'][_0x42fa('0x25')]);_0x2eb050[_0x42fa('0x23')]=qs[_0x42fa('0x23')](_0xba9bc2[_0x42fa('0x3b')]['offset']);}_0x2eb050[_0x42fa('0x43')]=qs[_0x42fa('0x44')](_0xba9bc2[_0x42fa('0x3b')][_0x42fa('0x44')]);_0x2eb050[_0x42fa('0x47')]=qs['filters'](_[_0x42fa('0x45')](_0xba9bc2['query'],_0x25f85d['filters']));_0x2eb050[_0x42fa('0x47')][_0x42fa('0x5e')]=_0x2e04ac['id'];if(_0xba9bc2[_0x42fa('0x3b')]['filter']){_0x2eb050[_0x42fa('0x47')]=_[_0x42fa('0x48')](_0x2eb050[_0x42fa('0x47')],{'$or':_[_0x42fa('0x35')](_0x2eb050[_0x42fa('0x3e')],function(_0x148fd8){var _0x4ce09f={};_0x4ce09f[_0x148fd8]={'$like':'%'+_0xba9bc2[_0x42fa('0x3b')][_0x42fa('0x46')]+'%'};return _0x4ce09f;})});}_0x2eb050=_[_0x42fa('0x48')]({},_0x2eb050,_0xba9bc2[_0x42fa('0x51')]);return db[_0x42fa('0x5f')][_0x42fa('0x60')](_0x2eb050);}})[_0x42fa('0x2b')](function(_0x62eb37){if(_0x62eb37){return db[_0x42fa('0x61')][_0x42fa('0x62')]({'where':{'id':_[_0x42fa('0x35')](_0x62eb37,_0x42fa('0x63')),'role':_0x42fa('0x64')},'attributes':['id','name',_0x42fa('0x65'),_0x42fa('0x66'),_0x42fa('0x67')]});}})[_0x42fa('0x2b')](function(_0x12696e){if(_0x12696e){return{'count':_0x12696e[_0x42fa('0x26')],'rows':_[_0x42fa('0x35')](_0x12696e[_0x42fa('0x4c')],function(_0x2910e6){return{'membername':_0x2910e6[_0x42fa('0x32')],'UserId':_0x2910e6['id'],'queue_name':_0xb0eb65[_0x42fa('0x32')],'OpenchannelQueueId':_0xb0eb65['id'],'interface':util['format'](_0x42fa('0x68'),_0x42fa('0x69'),_0x2910e6[_0x42fa('0x32')]),'penalty':0x0,'paused':_0x2910e6[_0x42fa('0x65')],'createdAt':_0x2910e6['createdAt'],'updatedAt':_0x2910e6['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x26550e,_0x2eb050))[_0x42fa('0x4d')](handleError(_0x26550e,null));};exports['getTeams']=function(_0x915a78,_0x3b4985,_0x25e356){var _0x5db07d={};var _0x711ab2={};var _0x11b86d;var _0x3938a5;return db[_0x42fa('0x36')]['findOne']({'where':{'id':_0x915a78[_0x42fa('0x4f')]['id']}})['then'](handleEntityNotFound(_0x3b4985,null))[_0x42fa('0x2b')](function(_0x154c85){if(_0x154c85){_0x11b86d=_0x154c85;_0x711ab2[_0x42fa('0x3a')]=_[_0x42fa('0x50')](db[_0x42fa('0x6a')][_0x42fa('0x5d')]);_0x711ab2['query']=_[_0x42fa('0x50')](_0x915a78[_0x42fa('0x3b')]);_0x711ab2[_0x42fa('0x3c')]=_[_0x42fa('0x3d')](_0x711ab2[_0x42fa('0x3a')],_0x711ab2[_0x42fa('0x3b')]);_0x5db07d[_0x42fa('0x3e')]=_[_0x42fa('0x3d')](_0x711ab2[_0x42fa('0x3a')],qs[_0x42fa('0x3f')](_0x915a78[_0x42fa('0x3b')]['fields']));_0x5db07d[_0x42fa('0x3e')]=_0x5db07d[_0x42fa('0x3e')][_0x42fa('0x40')]?_0x5db07d[_0x42fa('0x3e')]:_0x711ab2[_0x42fa('0x3a')];_0x5db07d[_0x42fa('0x43')]=qs[_0x42fa('0x44')](_0x915a78['query']['sort']);_0x5db07d[_0x42fa('0x47')]=qs[_0x42fa('0x3c')](_[_0x42fa('0x45')](_0x915a78[_0x42fa('0x3b')],_0x711ab2[_0x42fa('0x3c')]));if(_0x915a78['query'][_0x42fa('0x46')]){_0x5db07d[_0x42fa('0x47')]=_['merge'](_0x5db07d[_0x42fa('0x47')],{'$or':_[_0x42fa('0x35')](_0x5db07d[_0x42fa('0x3e')],function(_0x53f4d9){var _0x2c830b={};_0x2c830b[_0x53f4d9]={'$like':'%'+_0x915a78['query']['filter']+'%'};return _0x2c830b;})});}_0x5db07d=_[_0x42fa('0x48')]({},_0x5db07d,_0x915a78[_0x42fa('0x51')]);return _0x11b86d[_0x42fa('0x6b')](_0x5db07d);}})['then'](function(_0x27c45f){if(_0x27c45f){_0x3938a5=_0x27c45f[_0x42fa('0x40')];if(!_0x915a78[_0x42fa('0x3b')][_0x42fa('0x41')](_0x42fa('0x42'))){_0x5db07d['limit']=qs['limit'](_0x915a78['query'][_0x42fa('0x25')]);_0x5db07d[_0x42fa('0x23')]=qs[_0x42fa('0x23')](_0x915a78[_0x42fa('0x3b')][_0x42fa('0x23')]);}return _0x11b86d[_0x42fa('0x6b')](_0x5db07d);}})[_0x42fa('0x2b')](function(_0x514a89){if(_0x514a89){return _0x514a89?{'count':_0x3938a5,'rows':_0x514a89}:null;}})[_0x42fa('0x2b')](respondWithResult(_0x3b4985,null))['catch'](handleError(_0x3b4985,null));};exports[_0x42fa('0x6c')]=function(_0xc1ed35,_0x3e34b4,_0x2f9d31){var _0x578855=_0xc1ed35[_0x42fa('0x54')][_0x42fa('0x6d')];return db['Team'][_0x42fa('0x60')]({'where':{'id':_0x578855},'attributes':['id'],'include':[{'model':db[_0x42fa('0x61')],'as':'Agents','attributes':['id','name',_0x42fa('0x6e'),'voicePause',_0x42fa('0x6f')],'raw':!![]}]})['then'](function(_0x2e4801){if(_0x2e4801){var _0x4ff8e2=_[_0x42fa('0x70')](_0x2e4801,function(_0x28647a){var _0x3a8357=_0x28647a['get']({'plain':!![]});return _0x3a8357[_0x42fa('0x71')];});return db['OpenchannelQueue'][_0x42fa('0x52')]({'where':{'id':_0xc1ed35[_0x42fa('0x4f')]['id']}})[_0x42fa('0x2b')](function(_0x899d1c){return db[_0x42fa('0x72')][_0x42fa('0x73')](function(_0x278a18){return _0x899d1c[_0x42fa('0x6c')](_0x578855,{'transaction':_0x278a18})[_0x42fa('0x2b')](function(){return BPromise[_0x42fa('0x74')](_0x4ff8e2,function(_0xcdd22d){return db[_0x42fa('0x5f')]['findOrCreate']({'where':{'UserId':_0xcdd22d['id'],'OpenchannelQueueId':_0xc1ed35[_0x42fa('0x4f')]['id']},'transaction':_0x278a18});});})[_0x42fa('0x2b')](function(){_0x4ff8e2[_0x42fa('0x75')](function(_0x596f30){socket['emit']('userOpenchannelQueue:save',{'UserId':_0x596f30['id'],'OpenchannelQueueId':_0x899d1c['id']});});});});});}})[_0x42fa('0x2b')](respondWithStatusCode(_0x3e34b4,null))[_0x42fa('0x4d')](handleError(_0x3e34b4,null));};exports[_0x42fa('0x76')]=function(_0x165834,_0x48e96d,_0x5b8b05){return db[_0x42fa('0x6a')]['findAll']({'where':{'id':_0x165834[_0x42fa('0x3b')][_0x42fa('0x6d')]},'attributes':['id'],'include':[{'model':db[_0x42fa('0x61')],'as':_0x42fa('0x71'),'attributes':['id'],'raw':!![]}]})[_0x42fa('0x2b')](handleEntityNotFound(_0x48e96d,null))['then'](function(_0x2d99df){var _0x1e542f=_[_0x42fa('0x35')](_0x2d99df,'id');var _0x255e20=[];var _0x1ad793=[];var _0x49f93e=squel['select']();_0x49f93e['field'](_0x42fa('0x77'))[_0x42fa('0x78')](_0x42fa('0x79'),'tq')[_0x42fa('0x7a')](_0x42fa('0x7b'),'ut',_0x42fa('0x7c'))[_0x42fa('0x47')](_0x42fa('0x7d'),_0x165834[_0x42fa('0x4f')]['id']);for(var _0x38d8f9=0x0;_0x38d8f9<_0x2d99df['length'];_0x38d8f9+=0x1){let _0x3365c4=_0x2d99df[_0x38d8f9];for(var _0xa0362b=0x0;_0xa0362b<_0x3365c4[_0x42fa('0x71')]['length'];_0xa0362b+=0x1){let _0x428750=_0x3365c4['Agents'][_0xa0362b];var _0x576340=_0x49f93e['clone']();_0x576340[_0x42fa('0x47')](_0x42fa('0x7e'),_0x428750['id']);_0x1ad793['push'](db[_0x42fa('0x72')]['query'](_0x576340[_0x42fa('0x7f')](),{'type':db[_0x42fa('0x72')][_0x42fa('0x80')][_0x42fa('0x81')]})[_0x42fa('0x2b')](function(_0x5ee393){if(_0x5ee393[_0x42fa('0x40')]===0x1){return _0x428750['id'];}else{var _0x2423ee=_[_0x42fa('0x82')](_[_0x42fa('0x35')](_0x5ee393,_0x42fa('0x83')),function(_0x290fed){return _[_0x42fa('0x84')](_0x1e542f,_0x290fed);});if(_0x2423ee){return _0x428750['id'];}}}));}}return BPromise['all'](_0x1ad793)[_0x42fa('0x2b')](function(_0x2157de){_0x255e20=_(_0x255e20)['union'](_0x2157de)[_0x42fa('0x85')]()[_0x42fa('0x86')]();return db[_0x42fa('0x36')][_0x42fa('0x52')]({'where':{'id':_0x165834[_0x42fa('0x4f')]['id']}})[_0x42fa('0x2b')](function(_0x1cb56a){return db[_0x42fa('0x72')][_0x42fa('0x73')](function(_0x5e0f8f){return _0x1cb56a[_0x42fa('0x76')](_0x165834['query'][_0x42fa('0x6d')],{'transaction':_0x5e0f8f})[_0x42fa('0x2b')](function(){if(!_[_0x42fa('0x87')](_0x255e20)){return _0x1cb56a[_0x42fa('0x88')](_0x255e20,{'transaction':_0x5e0f8f});}})[_0x42fa('0x2b')](function(){_0x255e20['forEach'](function(_0x19e1ec){socket['emit']('userOpenchannelQueue:remove',{'UserId':_0x19e1ec,'OpenchannelQueueId':_0x1cb56a['id']});});});});});});})[_0x42fa('0x2b')](respondWithStatusCode(_0x48e96d,null))[_0x42fa('0x4d')](handleError(_0x48e96d,null));};exports['addAgents']=function(_0x11f299,_0x2549e4,_0x5b1ef8){return db['OpenchannelQueue'][_0x42fa('0x52')]({'where':{'id':_0x11f299[_0x42fa('0x4f')]['id']}})[_0x42fa('0x2b')](handleEntityNotFound(_0x2549e4,null))[_0x42fa('0x2b')](function(_0x18690d){if(_0x18690d){return _0x18690d['addAgents'](_0x11f299[_0x42fa('0x54')][_0x42fa('0x6d')],_[_0x42fa('0x89')](_0x11f299[_0x42fa('0x54')],['ids','id'])||{})[_0x42fa('0x8a')](function(_0x48d257){for(var _0x2a6704=0x0;_0x2a6704<_0x11f299[_0x42fa('0x54')][_0x42fa('0x6d')][_0x42fa('0x40')];_0x2a6704+=0x1){socket[_0x42fa('0x8b')](_0x42fa('0x8c'),{'UserId':Number(_0x11f299['body'][_0x42fa('0x6d')][_0x2a6704]),'OpenchannelQueueId':Number(_0x11f299['params']['id'])});}return _0x48d257;});}})[_0x42fa('0x2b')](respondWithResult(_0x2549e4,null))[_0x42fa('0x4d')](handleError(_0x2549e4,null));};exports['removeAgents']=function(_0x1dad17,_0x3ce253,_0x3f9f0e){return db[_0x42fa('0x36')][_0x42fa('0x52')]({'where':{'id':_0x1dad17[_0x42fa('0x4f')]['id']}})[_0x42fa('0x2b')](handleEntityNotFound(_0x3ce253,null))['then'](function(_0xb05074){if(_0xb05074){return _0xb05074[_0x42fa('0x88')](_0x1dad17[_0x42fa('0x3b')][_0x42fa('0x6d')])[_0x42fa('0x2b')](function(){if(_[_0x42fa('0x8d')](_0x1dad17[_0x42fa('0x3b')][_0x42fa('0x6d')])){for(var _0x2b5cb8=0x0;_0x2b5cb8<_0x1dad17['query'][_0x42fa('0x6d')]['length'];_0x2b5cb8+=0x1){socket['emit'](_0x42fa('0x8e'),{'UserId':Number(_0x1dad17[_0x42fa('0x3b')][_0x42fa('0x6d')][_0x2b5cb8]),'OpenchannelQueueId':Number(_0x1dad17[_0x42fa('0x4f')]['id'])});}}else{socket[_0x42fa('0x8b')](_0x42fa('0x8e'),{'UserId':Number(_0x1dad17[_0x42fa('0x3b')]['ids']),'OpenchannelQueueId':Number(_0x1dad17[_0x42fa('0x4f')]['id'])});}});}})[_0x42fa('0x2b')](respondWithStatusCode(_0x3ce253,null))[_0x42fa('0x4d')](handleError(_0x3ce253,null));};exports['getAgents']=function(_0x4de3a4,_0xead5c3,_0x76d1ed){var _0x31949d={};var _0x297a19={};var _0x2b9cd4;var _0x2dd42a;return db[_0x42fa('0x36')][_0x42fa('0x5c')]({'where':{'id':_0x4de3a4[_0x42fa('0x4f')]['id']}})[_0x42fa('0x2b')](handleEntityNotFound(_0xead5c3,null))[_0x42fa('0x2b')](function(_0x5dcf66){if(_0x5dcf66){_0x2b9cd4=_0x5dcf66;_0x297a19[_0x42fa('0x3a')]=_[_0x42fa('0x50')](db['User'][_0x42fa('0x5d')]);_0x297a19['query']=_['keys'](_0x4de3a4[_0x42fa('0x3b')]);_0x297a19['filters']=_[_0x42fa('0x3d')](_0x297a19[_0x42fa('0x3a')],_0x297a19[_0x42fa('0x3b')]);_0x31949d[_0x42fa('0x3e')]=_[_0x42fa('0x3d')](_0x297a19[_0x42fa('0x3a')],qs[_0x42fa('0x3f')](_0x4de3a4[_0x42fa('0x3b')][_0x42fa('0x3f')]));_0x31949d[_0x42fa('0x3e')]=_0x31949d[_0x42fa('0x3e')][_0x42fa('0x40')]?_0x31949d['attributes']:_0x297a19['model'];_0x31949d['order']=qs[_0x42fa('0x44')](_0x4de3a4['query'][_0x42fa('0x44')]);_0x31949d[_0x42fa('0x47')]=qs[_0x42fa('0x3c')](_[_0x42fa('0x45')](_0x4de3a4[_0x42fa('0x3b')],_0x297a19[_0x42fa('0x3c')]));if(_0x4de3a4[_0x42fa('0x3b')]['filter']){_0x31949d[_0x42fa('0x47')]=_[_0x42fa('0x48')](_0x31949d[_0x42fa('0x47')],{'$or':_['map'](_0x31949d[_0x42fa('0x3e')],function(_0x734e34){var _0x1e1e08={};_0x1e1e08[_0x734e34]={'$like':'%'+_0x4de3a4['query'][_0x42fa('0x46')]+'%'};return _0x1e1e08;})});}_0x31949d=_[_0x42fa('0x48')]({},_0x31949d,_0x4de3a4[_0x42fa('0x51')]);return _0x2b9cd4[_0x42fa('0x8f')](_0x31949d);}})[_0x42fa('0x2b')](function(_0x47de3f){if(_0x47de3f){_0x2dd42a=_0x47de3f[_0x42fa('0x40')];if(!_0x4de3a4['query'][_0x42fa('0x41')](_0x42fa('0x42'))){_0x31949d[_0x42fa('0x25')]=qs[_0x42fa('0x25')](_0x4de3a4[_0x42fa('0x3b')][_0x42fa('0x25')]);_0x31949d['offset']=qs['offset'](_0x4de3a4['query'][_0x42fa('0x23')]);}return _0x2b9cd4['getAgents'](_0x31949d);}})['then'](function(_0x5f52e0){if(_0x5f52e0){return _0x5f52e0?{'count':_0x2dd42a,'rows':_0x5f52e0}:null;}})['then'](respondWithResult(_0xead5c3,null))[_0x42fa('0x4d')](handleError(_0xead5c3,null));};
\ No newline at end of file
index 81a857c..99f08e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41c0=['remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners','save','update'];(function(_0x329808,_0x343255){var _0x1bbad0=function(_0x458c5b){while(--_0x458c5b){_0x329808['push'](_0x329808['shift']());}};_0x1bbad0(++_0x343255);}(_0x41c0,0x1d1));var _0x041c=function(_0x509273,_0x13fc9f){_0x509273=_0x509273-0x0;var _0x38ef40=_0x41c0[_0x509273];return _0x38ef40;};'use strict';var EventEmitter=require(_0x041c('0x0'));var OpenchannelQueue=require(_0x041c('0x1'))['db']['OpenchannelQueue'];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0x041c('0x2')](0x0);var events={'afterCreate':_0x041c('0x3'),'afterUpdate':_0x041c('0x4'),'afterDestroy':_0x041c('0x5')};function emitEvent(_0x14f642){return function(_0x17ba75,_0x29ebc9,_0xaa1863){OpenchannelQueueEvents[_0x041c('0x6')](_0x14f642+':'+_0x17ba75['id'],_0x17ba75);OpenchannelQueueEvents[_0x041c('0x6')](_0x14f642,_0x17ba75);_0xaa1863(null);};}for(var e in events){if(events[_0x041c('0x7')](e)){var event=events[e];OpenchannelQueue[_0x041c('0x8')](e,emitEvent(event));}}module[_0x041c('0x9')]=OpenchannelQueueEvents;
\ No newline at end of file
+var _0x8144=['events','update','remove','emit'];(function(_0x589d21,_0x133829){var _0x4aff74=function(_0x52141f){while(--_0x52141f){_0x589d21['push'](_0x589d21['shift']());}};_0x4aff74(++_0x133829);}(_0x8144,0x17c));var _0x4814=function(_0x1c7c46,_0x290fec){_0x1c7c46=_0x1c7c46-0x0;var _0x54192f=_0x8144[_0x1c7c46];return _0x54192f;};'use strict';var EventEmitter=require(_0x4814('0x0'));var OpenchannelQueue=require('../../mysqldb')['db']['OpenchannelQueue'];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x4814('0x1'),'afterDestroy':_0x4814('0x2')};function emitEvent(_0x383535){return function(_0x35bf5d,_0x32b2ab,_0x172001){OpenchannelQueueEvents[_0x4814('0x3')](_0x383535+':'+_0x35bf5d['id'],_0x35bf5d);OpenchannelQueueEvents['emit'](_0x383535,_0x35bf5d);_0x172001(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelQueue['hook'](e,emitEvent(event));}}module['exports']=OpenchannelQueueEvents;
\ No newline at end of file
index f1fc221..f3cd450 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00f2=['lodash','util','../../config/logger','moment','bluebird','request-promise','path','./openchannelQueue.attributes','openchannel_queues'];(function(_0x3cd9ca,_0x37f8b8){var _0x19b9c6=function(_0x494399){while(--_0x494399){_0x3cd9ca['push'](_0x3cd9ca['shift']());}};_0x19b9c6(++_0x37f8b8);}(_0x00f2,0xe1));var _0x200f=function(_0x4f4282,_0x49b66e){_0x4f4282=_0x4f4282-0x0;var _0x5ad5f4=_0x00f2[_0x4f4282];return _0x5ad5f4;};'use strict';var _=require(_0x200f('0x0'));var util=require(_0x200f('0x1'));var logger=require(_0x200f('0x2'))('api');var moment=require(_0x200f('0x3'));var BPromise=require(_0x200f('0x4'));var rp=require(_0x200f('0x5'));var fs=require('fs');var path=require(_0x200f('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x200f('0x7'));module['exports']=function(_0x235a1e,_0x37a321){return _0x235a1e['define']('OpenchannelQueue',attributes,{'tableName':_0x200f('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x17e4=['OpenchannelQueue','openchannel_queues','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelQueue.attributes','exports','define'];(function(_0xc7ae13,_0x1b887b){var _0x327671=function(_0x4c230d){while(--_0x4c230d){_0xc7ae13['push'](_0xc7ae13['shift']());}};_0x327671(++_0x1b887b);}(_0x17e4,0x110));var _0x417e=function(_0x4d0d48,_0xa5f54f){_0x4d0d48=_0x4d0d48-0x0;var _0x40fa4b=_0x17e4[_0x4d0d48];return _0x40fa4b;};'use strict';var _=require(_0x417e('0x0'));var util=require(_0x417e('0x1'));var logger=require(_0x417e('0x2'))(_0x417e('0x3'));var moment=require(_0x417e('0x4'));var BPromise=require(_0x417e('0x5'));var rp=require(_0x417e('0x6'));var fs=require('fs');var path=require(_0x417e('0x7'));var rimraf=require(_0x417e('0x8'));var config=require(_0x417e('0x9'));var attributes=require(_0x417e('0xa'));module[_0x417e('0xb')]=function(_0x16dd74,_0x41a8d9){return _0x16dd74[_0x417e('0xc')](_0x417e('0xd'),attributes,{'tableName':_0x417e('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 03a1b27..f6d3e20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x257d=['map','model','debug','catch','ShowOpenchannelQueue','find','raw','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./openchannelQueue.socket','request','then','OpenchannelQueue,\x20%s,\x20%s','request\x20sent','OpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','GetOpenchannelQueue','OpenchannelQueue','findAll','options','where','attributes','limit','include'];(function(_0x236d24,_0x29e80a){var _0x1574cf=function(_0x5d1dad){while(--_0x5d1dad){_0x236d24['push'](_0x236d24['shift']());}};_0x1574cf(++_0x29e80a);}(_0x257d,0x1ab));var _0xd257=function(_0x3b0c88,_0x4d7067){_0x3b0c88=_0x3b0c88-0x0;var _0x6e53a=_0x257d[_0x3b0c88];return _0x6e53a;};'use strict';var _=require('lodash');var util=require(_0xd257('0x0'));var moment=require(_0xd257('0x1'));var BPromise=require(_0xd257('0x2'));var rs=require(_0xd257('0x3'));var fs=require('fs');var Redis=require(_0xd257('0x4'));var db=require(_0xd257('0x5'))['db'];var utils=require(_0xd257('0x6'));var logger=require(_0xd257('0x7'))('rpc');var config=require(_0xd257('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xd257('0x9')][_0xd257('0xa')]({'port':0x232a});config[_0xd257('0xb')]=_[_0xd257('0xc')](config[_0xd257('0xb')],{'host':_0xd257('0xd'),'port':0x18eb});var socket=require(_0xd257('0xe'))(new Redis(config[_0xd257('0xb')]));require(_0xd257('0xf'))['register'](socket);function respondWithRpcPromise(_0xbb5b83,_0x1bd318,_0x1c625e){return new BPromise(function(_0x58e1fa,_0x1333b3){return client[_0xd257('0x10')](_0xbb5b83,_0x1c625e)[_0xd257('0x11')](function(_0xaca617){logger['info'](_0xd257('0x12'),_0x1bd318,_0xd257('0x13'));logger['debug'](_0xd257('0x14'),_0x1bd318,_0xd257('0x13'),JSON[_0xd257('0x15')](_0xaca617));if(_0xaca617[_0xd257('0x16')]){if(_0xaca617[_0xd257('0x16')][_0xd257('0x17')]===0x1f4){logger[_0xd257('0x16')](_0xd257('0x12'),_0x1bd318,_0xaca617[_0xd257('0x16')][_0xd257('0x18')]);return _0x1333b3(_0xaca617[_0xd257('0x16')][_0xd257('0x18')]);}logger[_0xd257('0x16')](_0xd257('0x12'),_0x1bd318,_0xaca617['error']['message']);return _0x58e1fa(_0xaca617[_0xd257('0x16')]['message']);}else{logger[_0xd257('0x19')](_0xd257('0x12'),_0x1bd318,_0xd257('0x13'));_0x58e1fa(_0xaca617[_0xd257('0x1a')]['message']);}})['catch'](function(_0x1c033e){logger[_0xd257('0x16')](_0xd257('0x12'),_0x1bd318,_0x1c033e);_0x1333b3(_0x1c033e);});});}exports[_0xd257('0x1b')]=function(_0x1d8d27){var _0x21ce14=this;return new Promise(function(_0x3331b1,_0x33c0ad){return db[_0xd257('0x1c')][_0xd257('0x1d')]({'raw':_0x1d8d27[_0xd257('0x1e')]?_0x1d8d27[_0xd257('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x1d8d27[_0xd257('0x1e')]?_0x1d8d27['options'][_0xd257('0x1f')]||null:null,'attributes':_0x1d8d27[_0xd257('0x1e')]?_0x1d8d27[_0xd257('0x1e')][_0xd257('0x20')]||null:null,'limit':_0x1d8d27['options']?_0x1d8d27[_0xd257('0x1e')][_0xd257('0x21')]||null:null,'include':_0x1d8d27[_0xd257('0x1e')]?_0x1d8d27[_0xd257('0x1e')][_0xd257('0x22')]?_[_0xd257('0x23')](_0x1d8d27[_0xd257('0x1e')]['include'],function(_0x24698b){return{'model':db[_0x24698b['model']],'as':_0x24698b['as'],'attributes':_0x24698b[_0xd257('0x20')],'include':_0x24698b[_0xd257('0x22')]?_['map'](_0x24698b[_0xd257('0x22')],function(_0x309a0d){return{'model':db[_0x309a0d[_0xd257('0x24')]],'as':_0x309a0d['as'],'attributes':_0x309a0d['attributes'],'include':_0x309a0d[_0xd257('0x22')]?_[_0xd257('0x23')](_0x309a0d[_0xd257('0x22')],function(_0x29aae3){return{'model':db[_0x29aae3['model']],'as':_0x29aae3['as'],'attributes':_0x29aae3['attributes']};}):[]};}):[]};}):[]:[]})[_0xd257('0x11')](function(_0x529e1d){logger[_0xd257('0x19')](_0xd257('0x1b'),_0x1d8d27);logger[_0xd257('0x25')](_0xd257('0x1b'),_0x1d8d27,JSON[_0xd257('0x15')](_0x529e1d));_0x3331b1(_0x529e1d);})[_0xd257('0x26')](function(_0x527498){logger[_0xd257('0x16')](_0xd257('0x1b'),_0x527498[_0xd257('0x18')],_0x1d8d27);_0x33c0ad(_0x21ce14[_0xd257('0x16')](0x1f4,_0x527498['message']));});});};exports[_0xd257('0x27')]=function(_0x3c9281){var _0x208dab=this;return new Promise(function(_0x3466b2,_0xdff4c3){return db['OpenchannelQueue'][_0xd257('0x28')]({'raw':_0x3c9281[_0xd257('0x1e')]?_0x3c9281['options'][_0xd257('0x29')]===undefined?!![]:![]:!![],'where':_0x3c9281['options']?_0x3c9281[_0xd257('0x1e')][_0xd257('0x1f')]||null:null,'attributes':_0x3c9281['options']?_0x3c9281[_0xd257('0x1e')][_0xd257('0x20')]||null:null,'include':_0x3c9281[_0xd257('0x1e')]?_0x3c9281[_0xd257('0x1e')]['include']?_[_0xd257('0x23')](_0x3c9281['options'][_0xd257('0x22')],function(_0x600f80){return{'model':db[_0x600f80[_0xd257('0x24')]],'as':_0x600f80['as'],'attributes':_0x600f80[_0xd257('0x20')],'include':_0x600f80[_0xd257('0x22')]?_[_0xd257('0x23')](_0x600f80[_0xd257('0x22')],function(_0x4c07ea){return{'model':db[_0x4c07ea[_0xd257('0x24')]],'as':_0x4c07ea['as'],'attributes':_0x4c07ea[_0xd257('0x20')],'include':_0x4c07ea['include']?_[_0xd257('0x23')](_0x4c07ea[_0xd257('0x22')],function(_0xf23eda){return{'model':db[_0xf23eda[_0xd257('0x24')]],'as':_0xf23eda['as'],'attributes':_0xf23eda[_0xd257('0x20')]};}):[]};}):[]};}):[]:[]})[_0xd257('0x11')](function(_0x19012b){logger[_0xd257('0x19')](_0xd257('0x27'),_0x3c9281);logger['debug'](_0xd257('0x27'),_0x3c9281,JSON['stringify'](_0x19012b));_0x3466b2(_0x19012b);})[_0xd257('0x26')](function(_0x4ad0e0){logger[_0xd257('0x16')](_0xd257('0x27'),_0x4ad0e0[_0xd257('0x18')],_0x3c9281);_0xdff4c3(_0x208dab[_0xd257('0x16')](0x1f4,_0x4ad0e0['message']));});});};
\ No newline at end of file
+var _0x20e5=['options','attributes','include','map','model','GetOpenchannelQueue','ShowOpenchannelQueue','where','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','http','redis','defaults','socket.io-emitter','./openchannelQueue.socket','register','request','then','info','OpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug','OpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','OpenchannelQueue','findAll','raw'];(function(_0x347391,_0x858b74){var _0x4b9469=function(_0x4c89ba){while(--_0x4c89ba){_0x347391['push'](_0x347391['shift']());}};_0x4b9469(++_0x858b74);}(_0x20e5,0x113));var _0x520e=function(_0x8f28c5,_0x1a264b){_0x8f28c5=_0x8f28c5-0x0;var _0x1c88f1=_0x20e5[_0x8f28c5];return _0x1c88f1;};'use strict';var _=require(_0x520e('0x0'));var util=require(_0x520e('0x1'));var moment=require(_0x520e('0x2'));var BPromise=require(_0x520e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x520e('0x4'));var db=require(_0x520e('0x5'))['db'];var utils=require(_0x520e('0x6'));var logger=require('../../config/logger')(_0x520e('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x520e('0x8')]({'port':0x232a});config[_0x520e('0x9')]=_[_0x520e('0xa')](config[_0x520e('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x520e('0xb'))(new Redis(config[_0x520e('0x9')]));require(_0x520e('0xc'))[_0x520e('0xd')](socket);function respondWithRpcPromise(_0x14895d,_0x49be1a,_0x1e7291){return new BPromise(function(_0x4e1dff,_0x4808c9){return client[_0x520e('0xe')](_0x14895d,_0x1e7291)[_0x520e('0xf')](function(_0x240abf){logger[_0x520e('0x10')](_0x520e('0x11'),_0x49be1a,_0x520e('0x12'));logger[_0x520e('0x13')](_0x520e('0x14'),_0x49be1a,_0x520e('0x12'),JSON[_0x520e('0x15')](_0x240abf));if(_0x240abf[_0x520e('0x16')]){if(_0x240abf[_0x520e('0x16')][_0x520e('0x17')]===0x1f4){logger[_0x520e('0x16')](_0x520e('0x11'),_0x49be1a,_0x240abf[_0x520e('0x16')][_0x520e('0x18')]);return _0x4808c9(_0x240abf[_0x520e('0x16')][_0x520e('0x18')]);}logger[_0x520e('0x16')]('OpenchannelQueue,\x20%s,\x20%s',_0x49be1a,_0x240abf['error']['message']);return _0x4e1dff(_0x240abf[_0x520e('0x16')]['message']);}else{logger[_0x520e('0x10')]('OpenchannelQueue,\x20%s,\x20%s',_0x49be1a,_0x520e('0x12'));_0x4e1dff(_0x240abf[_0x520e('0x19')][_0x520e('0x18')]);}})['catch'](function(_0x4dffe6){logger[_0x520e('0x16')](_0x520e('0x11'),_0x49be1a,_0x4dffe6);_0x4808c9(_0x4dffe6);});});}exports['GetOpenchannelQueue']=function(_0x4d4f79){var _0x4fb15e=this;return new Promise(function(_0x5cca67,_0x3a0305){return db[_0x520e('0x1a')][_0x520e('0x1b')]({'raw':_0x4d4f79['options']?_0x4d4f79['options'][_0x520e('0x1c')]===undefined?!![]:![]:!![],'where':_0x4d4f79[_0x520e('0x1d')]?_0x4d4f79[_0x520e('0x1d')]['where']||null:null,'attributes':_0x4d4f79[_0x520e('0x1d')]?_0x4d4f79[_0x520e('0x1d')][_0x520e('0x1e')]||null:null,'limit':_0x4d4f79['options']?_0x4d4f79[_0x520e('0x1d')]['limit']||null:null,'include':_0x4d4f79['options']?_0x4d4f79[_0x520e('0x1d')][_0x520e('0x1f')]?_[_0x520e('0x20')](_0x4d4f79['options'][_0x520e('0x1f')],function(_0x3ed201){return{'model':db[_0x3ed201['model']],'as':_0x3ed201['as'],'attributes':_0x3ed201['attributes'],'include':_0x3ed201['include']?_[_0x520e('0x20')](_0x3ed201[_0x520e('0x1f')],function(_0x24886c){return{'model':db[_0x24886c[_0x520e('0x21')]],'as':_0x24886c['as'],'attributes':_0x24886c[_0x520e('0x1e')],'include':_0x24886c[_0x520e('0x1f')]?_[_0x520e('0x20')](_0x24886c[_0x520e('0x1f')],function(_0x25c9a4){return{'model':db[_0x25c9a4[_0x520e('0x21')]],'as':_0x25c9a4['as'],'attributes':_0x25c9a4[_0x520e('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x520e('0xf')](function(_0x46f62b){logger[_0x520e('0x10')](_0x520e('0x22'),_0x4d4f79);logger[_0x520e('0x13')](_0x520e('0x22'),_0x4d4f79,JSON['stringify'](_0x46f62b));_0x5cca67(_0x46f62b);})['catch'](function(_0x3542b8){logger[_0x520e('0x16')](_0x520e('0x22'),_0x3542b8[_0x520e('0x18')],_0x4d4f79);_0x3a0305(_0x4fb15e[_0x520e('0x16')](0x1f4,_0x3542b8['message']));});});};exports[_0x520e('0x23')]=function(_0x4ee51a){var _0x25ceff=this;return new Promise(function(_0x489eaf,_0x1d4d09){return db[_0x520e('0x1a')]['find']({'raw':_0x4ee51a[_0x520e('0x1d')]?_0x4ee51a['options'][_0x520e('0x1c')]===undefined?!![]:![]:!![],'where':_0x4ee51a[_0x520e('0x1d')]?_0x4ee51a[_0x520e('0x1d')][_0x520e('0x24')]||null:null,'attributes':_0x4ee51a[_0x520e('0x1d')]?_0x4ee51a[_0x520e('0x1d')]['attributes']||null:null,'include':_0x4ee51a[_0x520e('0x1d')]?_0x4ee51a[_0x520e('0x1d')]['include']?_[_0x520e('0x20')](_0x4ee51a['options'][_0x520e('0x1f')],function(_0x51ec42){return{'model':db[_0x51ec42['model']],'as':_0x51ec42['as'],'attributes':_0x51ec42[_0x520e('0x1e')],'include':_0x51ec42[_0x520e('0x1f')]?_['map'](_0x51ec42[_0x520e('0x1f')],function(_0x52885e){return{'model':db[_0x52885e[_0x520e('0x21')]],'as':_0x52885e['as'],'attributes':_0x52885e[_0x520e('0x1e')],'include':_0x52885e[_0x520e('0x1f')]?_[_0x520e('0x20')](_0x52885e['include'],function(_0x59ad61){return{'model':db[_0x59ad61[_0x520e('0x21')]],'as':_0x59ad61['as'],'attributes':_0x59ad61['attributes']};}):[]};}):[]};}):[]:[]})[_0x520e('0xf')](function(_0x3afccb){logger[_0x520e('0x10')](_0x520e('0x23'),_0x4ee51a);logger['debug'](_0x520e('0x23'),_0x4ee51a,JSON[_0x520e('0x15')](_0x3afccb));_0x489eaf(_0x3afccb);})[_0x520e('0x25')](function(_0x21de17){logger['error'](_0x520e('0x23'),_0x21de17[_0x520e('0x18')],_0x4ee51a);_0x1d4d09(_0x25ceff[_0x520e('0x16')](0x1f4,_0x21de17[_0x520e('0x18')]));});});};
\ No newline at end of file
index 5c98210..d1a60f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4486=['length','openchannelQueue:','./openchannelQueue.events','save','remove','update','emit','removeListener','register'];(function(_0x52d543,_0x4982e1){var _0x572ca0=function(_0x4af633){while(--_0x4af633){_0x52d543['push'](_0x52d543['shift']());}};_0x572ca0(++_0x4982e1);}(_0x4486,0x14f));var _0x6448=function(_0x2742db,_0x58e00c){_0x2742db=_0x2742db-0x0;var _0x18659e=_0x4486[_0x2742db];return _0x18659e;};'use strict';var OpenchannelQueueEvents=require(_0x6448('0x0'));var events=[_0x6448('0x1'),_0x6448('0x2'),_0x6448('0x3')];function createListener(_0x459ee6,_0x2eff6e){return function(_0x5853fe){_0x2eff6e[_0x6448('0x4')](_0x459ee6,_0x5853fe);};}function removeListener(_0x22152c,_0x43ade6){return function(){OpenchannelQueueEvents[_0x6448('0x5')](_0x22152c,_0x43ade6);};}exports[_0x6448('0x6')]=function(_0x40e922){for(var _0x4ec0e5=0x0,_0xadf4a2=events[_0x6448('0x7')];_0x4ec0e5<_0xadf4a2;_0x4ec0e5++){var _0x26694a=events[_0x4ec0e5];var _0x57c53c=createListener(_0x6448('0x8')+_0x26694a,_0x40e922);OpenchannelQueueEvents['on'](_0x26694a,_0x57c53c);}};
\ No newline at end of file
+var _0xf249=['openchannelQueue:','./openchannelQueue.events','save','remove','emit','register','length'];(function(_0x53cf8e,_0x3d290f){var _0x459197=function(_0x67073c){while(--_0x67073c){_0x53cf8e['push'](_0x53cf8e['shift']());}};_0x459197(++_0x3d290f);}(_0xf249,0xa2));var _0x9f24=function(_0x32078a,_0x4dea31){_0x32078a=_0x32078a-0x0;var _0x14e1ec=_0xf249[_0x32078a];return _0x14e1ec;};'use strict';var OpenchannelQueueEvents=require(_0x9f24('0x0'));var events=[_0x9f24('0x1'),_0x9f24('0x2'),'update'];function createListener(_0xea42e9,_0x58c0f7){return function(_0x2b964f){_0x58c0f7[_0x9f24('0x3')](_0xea42e9,_0x2b964f);};}function removeListener(_0x1cc531,_0x21fae2){return function(){OpenchannelQueueEvents['removeListener'](_0x1cc531,_0x21fae2);};}exports[_0x9f24('0x4')]=function(_0x38cdd7){for(var _0x3cdac5=0x0,_0x5db150=events[_0x9f24('0x5')];_0x3cdac5<_0x5db150;_0x3cdac5++){var _0x4c6921=events[_0x3cdac5];var _0x498ada=createListener(_0x9f24('0x6')+_0x4c6921,_0x38cdd7);OpenchannelQueueEvents['on'](_0x4c6921,_0x498ada);}};
\ No newline at end of file
index c96ce76..973eea0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c13=['multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueueReport.controller','get','isAuthenticated','index','/:id','show','post','put','delete','destroy'];(function(_0x48cab1,_0xb87e2b){var _0x5674e0=function(_0x5dd839){while(--_0x5dd839){_0x48cab1['push'](_0x48cab1['shift']());}};_0x5674e0(++_0xb87e2b);}(_0x4c13,0xd8));var _0x34c1=function(_0x4ac4ab,_0x88d7cc){_0x4ac4ab=_0x4ac4ab-0x0;var _0x4ab2e4=_0x4c13[_0x4ac4ab];return _0x4ab2e4;};'use strict';var multer=require(_0x34c1('0x0'));var util=require('util');var path=require(_0x34c1('0x1'));var timeout=require('connect-timeout');var express=require(_0x34c1('0x2'));var router=express[_0x34c1('0x3')]();var fs_extra=require(_0x34c1('0x4'));var auth=require(_0x34c1('0x5'));var interaction=require(_0x34c1('0x6'));var config=require(_0x34c1('0x7'));var controller=require(_0x34c1('0x8'));router[_0x34c1('0x9')]('/',auth[_0x34c1('0xa')](),controller[_0x34c1('0xb')]);router[_0x34c1('0x9')]('/describe',auth[_0x34c1('0xa')](),controller['describe']);router[_0x34c1('0x9')](_0x34c1('0xc'),auth['isAuthenticated'](),controller[_0x34c1('0xd')]);router[_0x34c1('0xe')]('/',auth[_0x34c1('0xa')](),controller['create']);router[_0x34c1('0xf')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0x34c1('0x10')]('/:id',auth[_0x34c1('0xa')](),controller[_0x34c1('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x74cf=['describe','/:id','show','post','create','put','update','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueueReport.controller','get','isAuthenticated','index','/describe'];(function(_0x56ce3e,_0x5258b0){var _0x436171=function(_0x945748){while(--_0x945748){_0x56ce3e['push'](_0x56ce3e['shift']());}};_0x436171(++_0x5258b0);}(_0x74cf,0x14b));var _0xf74c=function(_0x421446,_0x19af26){_0x421446=_0x421446-0x0;var _0x40e2a6=_0x74cf[_0x421446];return _0x40e2a6;};'use strict';var multer=require(_0xf74c('0x0'));var util=require(_0xf74c('0x1'));var path=require(_0xf74c('0x2'));var timeout=require('connect-timeout');var express=require(_0xf74c('0x3'));var router=express[_0xf74c('0x4')]();var fs_extra=require(_0xf74c('0x5'));var auth=require(_0xf74c('0x6'));var interaction=require(_0xf74c('0x7'));var config=require(_0xf74c('0x8'));var controller=require(_0xf74c('0x9'));router[_0xf74c('0xa')]('/',auth[_0xf74c('0xb')](),controller[_0xf74c('0xc')]);router[_0xf74c('0xa')](_0xf74c('0xd'),auth['isAuthenticated'](),controller[_0xf74c('0xe')]);router[_0xf74c('0xa')](_0xf74c('0xf'),auth[_0xf74c('0xb')](),controller[_0xf74c('0x10')]);router[_0xf74c('0x11')]('/',auth['isAuthenticated'](),controller[_0xf74c('0x12')]);router[_0xf74c('0x13')](_0xf74c('0xf'),auth['isAuthenticated'](),controller[_0xf74c('0x14')]);router['delete'](_0xf74c('0xf'),auth['isAuthenticated'](),controller[_0xf74c('0x15')]);module[_0xf74c('0x16')]=router;
\ No newline at end of file
index d4a5f8c..9b0dcab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4082=['moment','sequelize','exports','STRING','DATE'];(function(_0x7d62cb,_0x7622c){var _0x3a6266=function(_0x1cc5fa){while(--_0x1cc5fa){_0x7d62cb['push'](_0x7d62cb['shift']());}};_0x3a6266(++_0x7622c);}(_0x4082,0x118));var _0x2408=function(_0x4e9628,_0x250573){_0x4e9628=_0x4e9628-0x0;var _0x27bc8c=_0x4082[_0x4e9628];return _0x27bc8c;};'use strict';var moment=require(_0x2408('0x0'));var Sequelize=require(_0x2408('0x1'));module[_0x2408('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0x2408('0x3')]},'joinAt':{'type':Sequelize[_0x2408('0x4')]},'leaveAt':{'type':Sequelize[_0x2408('0x4')]},'acceptAt':{'type':Sequelize[_0x2408('0x4')]},'exitAt':{'type':Sequelize[_0x2408('0x4')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xdbcd=['sequelize','STRING','DATE'];(function(_0x352d28,_0x444033){var _0x387d7e=function(_0x40be0e){while(--_0x40be0e){_0x352d28['push'](_0x352d28['shift']());}};_0x387d7e(++_0x444033);}(_0xdbcd,0x1bc));var _0xddbc=function(_0x47d493,_0x3bedfb){_0x47d493=_0x47d493-0x0;var _0x50242a=_0xdbcd[_0x47d493];return _0x50242a;};'use strict';var moment=require('moment');var Sequelize=require(_0xddbc('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xddbc('0x1')],'allowNull':![]},'from':{'type':Sequelize[_0xddbc('0x1')]},'joinAt':{'type':Sequelize[_0xddbc('0x2')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0xddbc('0x2')]},'exitAt':{'type':Sequelize[_0xddbc('0x2')]},'reason':{'type':Sequelize[_0xddbc('0x1')]}};
\ No newline at end of file
index 2510144..ce2bb86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d95=['fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','filter','options','include','findAll','then','show','params','includeAll','create','body','find','catch','destroy','describe','eml-format','rimraf','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','reject','update','error','stack','name','send','index','map','OpenchannelQueueReport','rawAttributes'];(function(_0x454809,_0x58b683){var _0x2cb4ab=function(_0x2b2b4a){while(--_0x2b2b4a){_0x454809['push'](_0x454809['shift']());}};_0x2cb4ab(++_0x58b683);}(_0x8d95,0x6c));var _0x58d9=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x8d95[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0x58d9('0x0'));var rimraf=require(_0x58d9('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x58d9('0x2'));var rp=require('request-promise');var moment=require(_0x58d9('0x3'));var BPromise=require(_0x58d9('0x4'));var Mustache=require('mustache');var util=require(_0x58d9('0x5'));var path=require(_0x58d9('0x6'));var sox=require(_0x58d9('0x7'));var csv=require(_0x58d9('0x8'));var ejs=require(_0x58d9('0x9'));var fs=require('fs');var fs_extra=require(_0x58d9('0xa'));var _=require(_0x58d9('0xb'));var squel=require(_0x58d9('0xc'));var crypto=require(_0x58d9('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x58d9('0xe'));var toCsv=require(_0x58d9('0x8'));var querystring=require(_0x58d9('0xf'));var Papa=require(_0x58d9('0x10'));var Redis=require(_0x58d9('0x11'));var authService=require(_0x58d9('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x58d9('0x13'))(_0x58d9('0x14'));var utils=require('../../config/utils');var config=require(_0x58d9('0x15'));var licenseUtil=require(_0x58d9('0x16'));var db=require(_0x58d9('0x17'))['db'];function respondWithStatusCode(_0x47c26e,_0x11f0b3){_0x11f0b3=_0x11f0b3||0xcc;return function(_0x4068a7){if(_0x4068a7){return _0x47c26e[_0x58d9('0x18')](_0x11f0b3);}return _0x47c26e[_0x58d9('0x19')](_0x11f0b3)[_0x58d9('0x1a')]();};}function respondWithResult(_0x3e3eb1,_0x31bd3f){_0x31bd3f=_0x31bd3f||0xc8;return function(_0x28a677){if(_0x28a677){return _0x3e3eb1['status'](_0x31bd3f)['json'](_0x28a677);}};}function respondWithFilteredResult(_0x3da286,_0x206ada){return function(_0x40f507){if(_0x40f507){var _0x1bcbf5=typeof _0x206ada[_0x58d9('0x1b')]===_0x58d9('0x1c')&&typeof _0x206ada[_0x58d9('0x1d')]===_0x58d9('0x1c');var _0x4d3d9d=_0x40f507[_0x58d9('0x1e')];var _0x3721b8=_0x1bcbf5?0x0:_0x206ada[_0x58d9('0x1b')];var _0x2353fe=_0x1bcbf5?_0x40f507[_0x58d9('0x1e')]:_0x206ada[_0x58d9('0x1b')]+_0x206ada[_0x58d9('0x1d')];var _0x4eec85;if(_0x2353fe>=_0x4d3d9d){_0x2353fe=_0x4d3d9d;_0x4eec85=0xc8;}else{_0x4eec85=0xce;}_0x3da286[_0x58d9('0x19')](_0x4eec85);return _0x3da286[_0x58d9('0x1f')]('Content-Range',_0x3721b8+'-'+_0x2353fe+'/'+_0x4d3d9d)[_0x58d9('0x20')](_0x40f507);}return null;};}function patchUpdates(_0x585970){return function(_0x4918f6){try{jsonpatch[_0x58d9('0x21')](_0x4918f6,_0x585970,!![]);}catch(_0x4021ca){return BPromise[_0x58d9('0x22')](_0x4021ca);}return _0x4918f6['save']();};}function saveUpdates(_0x219a9f,_0x417e76){return function(_0x4f203e){if(_0x4f203e){return _0x4f203e[_0x58d9('0x23')](_0x219a9f)['then'](function(_0x2acddb){return _0x2acddb;});}return null;};}function removeEntity(_0x9fe5ee,_0x319769){return function(_0x2b3a5e){if(_0x2b3a5e){return _0x2b3a5e['destroy']()['then'](function(){_0x9fe5ee[_0x58d9('0x19')](0xcc)[_0x58d9('0x1a')]();});}};}function handleEntityNotFound(_0x350eca,_0x69e6ad){return function(_0x371432){if(!_0x371432){_0x350eca[_0x58d9('0x18')](0x194);}return _0x371432;};}function handleError(_0x52d91d,_0x117cfd){_0x117cfd=_0x117cfd||0x1f4;return function(_0x219c10){logger[_0x58d9('0x24')](_0x219c10[_0x58d9('0x25')]);if(_0x219c10[_0x58d9('0x26')]){delete _0x219c10[_0x58d9('0x26')];}_0x52d91d[_0x58d9('0x19')](_0x117cfd)[_0x58d9('0x27')](_0x219c10);};}exports[_0x58d9('0x28')]=function(_0x57397d,_0x485e65){var _0x2d2534={},_0x528eec={},_0x10528d={'count':0x0,'rows':[]};var _0x36a29f=_[_0x58d9('0x29')](db[_0x58d9('0x2a')][_0x58d9('0x2b')],function(_0x5b3eab){return{'name':_0x5b3eab[_0x58d9('0x2c')],'type':_0x5b3eab[_0x58d9('0x2d')][_0x58d9('0x2e')]};});_0x528eec[_0x58d9('0x2f')]=_[_0x58d9('0x29')](_0x36a29f,_0x58d9('0x26'));_0x528eec['query']=_[_0x58d9('0x30')](_0x57397d[_0x58d9('0x31')]);_0x528eec[_0x58d9('0x32')]=_[_0x58d9('0x33')](_0x528eec[_0x58d9('0x2f')],_0x528eec[_0x58d9('0x31')]);_0x2d2534[_0x58d9('0x34')]=_[_0x58d9('0x33')](_0x528eec[_0x58d9('0x2f')],qs[_0x58d9('0x35')](_0x57397d['query'][_0x58d9('0x35')]));_0x2d2534[_0x58d9('0x34')]=_0x2d2534['attributes'][_0x58d9('0x36')]?_0x2d2534[_0x58d9('0x34')]:_0x528eec[_0x58d9('0x2f')];if(!_0x57397d['query'][_0x58d9('0x37')](_0x58d9('0x38'))){_0x2d2534[_0x58d9('0x1d')]=qs['limit'](_0x57397d[_0x58d9('0x31')][_0x58d9('0x1d')]);_0x2d2534[_0x58d9('0x1b')]=qs['offset'](_0x57397d[_0x58d9('0x31')]['offset']);}_0x2d2534['order']=qs[_0x58d9('0x39')](_0x57397d[_0x58d9('0x31')]['sort']);_0x2d2534[_0x58d9('0x3a')]=qs[_0x58d9('0x32')](_[_0x58d9('0x3b')](_0x57397d[_0x58d9('0x31')],_0x528eec[_0x58d9('0x32')]),_0x36a29f);if(_0x57397d[_0x58d9('0x31')]['filter']){_0x2d2534[_0x58d9('0x3a')]=_[_0x58d9('0x3c')](_0x2d2534[_0x58d9('0x3a')],{'$or':_[_0x58d9('0x29')](_0x36a29f,function(_0x4b8efe){if(_0x4b8efe['type']!==_0x58d9('0x3d')){var _0x4aa265={};_0x4aa265[_0x4b8efe[_0x58d9('0x26')]]={'$like':'%'+_0x57397d[_0x58d9('0x31')][_0x58d9('0x3e')]+'%'};return _0x4aa265;}})});}_0x2d2534=_['merge']({},_0x2d2534,_0x57397d[_0x58d9('0x3f')]);var _0x5712db={'where':_0x2d2534[_0x58d9('0x3a')]};return db[_0x58d9('0x2a')][_0x58d9('0x1e')](_0x5712db)['then'](function(_0x28296f){_0x10528d[_0x58d9('0x1e')]=_0x28296f;if(_0x57397d[_0x58d9('0x31')]['includeAll']){_0x2d2534[_0x58d9('0x40')]=[{'all':!![]}];}return db['OpenchannelQueueReport'][_0x58d9('0x41')](_0x2d2534);})[_0x58d9('0x42')](function(_0x547431){_0x10528d['rows']=_0x547431;return _0x10528d;})[_0x58d9('0x42')](respondWithFilteredResult(_0x485e65,_0x2d2534))['catch'](handleError(_0x485e65,null));};exports[_0x58d9('0x43')]=function(_0x5bf955,_0x414e80){var _0x4bad53={'raw':!![],'where':{'id':_0x5bf955[_0x58d9('0x44')]['id']}},_0x42eb19={};_0x42eb19['model']=_[_0x58d9('0x30')](db[_0x58d9('0x2a')][_0x58d9('0x2b')]);_0x42eb19[_0x58d9('0x31')]=_[_0x58d9('0x30')](_0x5bf955[_0x58d9('0x31')]);_0x42eb19[_0x58d9('0x32')]=_['intersection'](_0x42eb19['model'],_0x42eb19[_0x58d9('0x31')]);_0x4bad53['attributes']=_[_0x58d9('0x33')](_0x42eb19['model'],qs[_0x58d9('0x35')](_0x5bf955['query'][_0x58d9('0x35')]));_0x4bad53['attributes']=_0x4bad53[_0x58d9('0x34')]['length']?_0x4bad53[_0x58d9('0x34')]:_0x42eb19[_0x58d9('0x2f')];if(_0x5bf955[_0x58d9('0x31')][_0x58d9('0x45')]){_0x4bad53[_0x58d9('0x40')]=[{'all':!![]}];}_0x4bad53=_[_0x58d9('0x3c')]({},_0x4bad53,_0x5bf955['options']);return db[_0x58d9('0x2a')]['find'](_0x4bad53)['then'](handleEntityNotFound(_0x414e80,null))[_0x58d9('0x42')](respondWithResult(_0x414e80,null))['catch'](handleError(_0x414e80,null));};exports[_0x58d9('0x46')]=function(_0x4e18ce,_0x59ceda){return db['OpenchannelQueueReport']['create'](_0x4e18ce['body'],{})[_0x58d9('0x42')](respondWithResult(_0x59ceda,0xc9))['catch'](handleError(_0x59ceda,null));};exports[_0x58d9('0x23')]=function(_0x27adb0,_0x5c7931){if(_0x27adb0[_0x58d9('0x47')]['id']){delete _0x27adb0[_0x58d9('0x47')]['id'];}return db[_0x58d9('0x2a')][_0x58d9('0x48')]({'where':{'id':_0x27adb0['params']['id']}})[_0x58d9('0x42')](handleEntityNotFound(_0x5c7931,null))[_0x58d9('0x42')](saveUpdates(_0x27adb0[_0x58d9('0x47')],null))['then'](respondWithResult(_0x5c7931,null))[_0x58d9('0x49')](handleError(_0x5c7931,null));};exports[_0x58d9('0x4a')]=function(_0x5c0767,_0x33e3fa){return db[_0x58d9('0x2a')][_0x58d9('0x48')]({'where':{'id':_0x5c0767[_0x58d9('0x44')]['id']}})[_0x58d9('0x42')](handleEntityNotFound(_0x33e3fa,null))[_0x58d9('0x42')](removeEntity(_0x33e3fa,null))[_0x58d9('0x49')](handleError(_0x33e3fa,null));};exports[_0x58d9('0x4b')]=function(_0x3388d4,_0x3a2e62){return db[_0x58d9('0x2a')]['describe']()[_0x58d9('0x42')](respondWithResult(_0x3a2e62,null))[_0x58d9('0x49')](handleError(_0x3a2e62,null));};
\ No newline at end of file
+var _0x9adf=['ejs','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','update','then','destroy','error','stack','name','send','index','rawAttributes','type','key','map','query','keys','filters','model','attributes','intersection','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','OpenchannelQueueReport','includeAll','include','findAll','rows','show','params','find','catch','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','path','sox'];(function(_0xc7e95,_0x12f060){var _0x384e14=function(_0x298d0a){while(--_0x298d0a){_0xc7e95['push'](_0xc7e95['shift']());}};_0x384e14(++_0x12f060);}(_0x9adf,0x1ae));var _0xf9ad=function(_0x573f83,_0x1f3cd3){_0x573f83=_0x573f83-0x0;var _0xe89cd1=_0x9adf[_0x573f83];return _0xe89cd1;};'use strict';var emlformat=require(_0xf9ad('0x0'));var rimraf=require(_0xf9ad('0x1'));var zipdir=require(_0xf9ad('0x2'));var jsonpatch=require(_0xf9ad('0x3'));var rp=require(_0xf9ad('0x4'));var moment=require(_0xf9ad('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xf9ad('0x6'));var sox=require(_0xf9ad('0x7'));var csv=require('to-csv');var ejs=require(_0xf9ad('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0xf9ad('0x9'));var jsforce=require(_0xf9ad('0xa'));var deskjs=require(_0xf9ad('0xb'));var toCsv=require(_0xf9ad('0xc'));var querystring=require(_0xf9ad('0xd'));var Papa=require(_0xf9ad('0xe'));var Redis=require(_0xf9ad('0xf'));var authService=require(_0xf9ad('0x10'));var qs=require(_0xf9ad('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf9ad('0x12'));var logger=require('../../config/logger')(_0xf9ad('0x13'));var utils=require('../../config/utils');var config=require(_0xf9ad('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xf9ad('0x15'))['db'];function respondWithStatusCode(_0x56ad76,_0x5aeb78){_0x5aeb78=_0x5aeb78||0xcc;return function(_0x4017c1){if(_0x4017c1){return _0x56ad76[_0xf9ad('0x16')](_0x5aeb78);}return _0x56ad76[_0xf9ad('0x17')](_0x5aeb78)[_0xf9ad('0x18')]();};}function respondWithResult(_0x37afbe,_0x15493b){_0x15493b=_0x15493b||0xc8;return function(_0x713ee1){if(_0x713ee1){return _0x37afbe[_0xf9ad('0x17')](_0x15493b)[_0xf9ad('0x19')](_0x713ee1);}};}function respondWithFilteredResult(_0x2b2fc8,_0x24c5a1){return function(_0x186c85){if(_0x186c85){var _0x3c86d9=typeof _0x24c5a1[_0xf9ad('0x1a')]===_0xf9ad('0x1b')&&typeof _0x24c5a1[_0xf9ad('0x1c')]==='undefined';var _0x22e716=_0x186c85[_0xf9ad('0x1d')];var _0x5a603c=_0x3c86d9?0x0:_0x24c5a1[_0xf9ad('0x1a')];var _0x162767=_0x3c86d9?_0x186c85[_0xf9ad('0x1d')]:_0x24c5a1[_0xf9ad('0x1a')]+_0x24c5a1['limit'];var _0x4b985c;if(_0x162767>=_0x22e716){_0x162767=_0x22e716;_0x4b985c=0xc8;}else{_0x4b985c=0xce;}_0x2b2fc8[_0xf9ad('0x17')](_0x4b985c);return _0x2b2fc8['set'](_0xf9ad('0x1e'),_0x5a603c+'-'+_0x162767+'/'+_0x22e716)[_0xf9ad('0x19')](_0x186c85);}return null;};}function patchUpdates(_0x7e05b9){return function(_0x6197eb){try{jsonpatch[_0xf9ad('0x1f')](_0x6197eb,_0x7e05b9,!![]);}catch(_0x47ff01){return BPromise['reject'](_0x47ff01);}return _0x6197eb['save']();};}function saveUpdates(_0x1ce14e,_0x3d211e){return function(_0x263741){if(_0x263741){return _0x263741[_0xf9ad('0x20')](_0x1ce14e)[_0xf9ad('0x21')](function(_0x19ad7b){return _0x19ad7b;});}return null;};}function removeEntity(_0x206211,_0x195036){return function(_0x5ea9ce){if(_0x5ea9ce){return _0x5ea9ce[_0xf9ad('0x22')]()[_0xf9ad('0x21')](function(){_0x206211[_0xf9ad('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x253c8b,_0x51bad8){return function(_0x2fa544){if(!_0x2fa544){_0x253c8b[_0xf9ad('0x16')](0x194);}return _0x2fa544;};}function handleError(_0x1d9202,_0x5f2676){_0x5f2676=_0x5f2676||0x1f4;return function(_0x13414d){logger[_0xf9ad('0x23')](_0x13414d[_0xf9ad('0x24')]);if(_0x13414d[_0xf9ad('0x25')]){delete _0x13414d[_0xf9ad('0x25')];}_0x1d9202[_0xf9ad('0x17')](_0x5f2676)[_0xf9ad('0x26')](_0x13414d);};}exports[_0xf9ad('0x27')]=function(_0x590427,_0x5744a8){var _0x39d867={},_0x2efd8e={},_0x2ddc07={'count':0x0,'rows':[]};var _0x6edcb2=_['map'](db['OpenchannelQueueReport'][_0xf9ad('0x28')],function(_0x55afba){return{'name':_0x55afba['fieldName'],'type':_0x55afba[_0xf9ad('0x29')][_0xf9ad('0x2a')]};});_0x2efd8e['model']=_[_0xf9ad('0x2b')](_0x6edcb2,_0xf9ad('0x25'));_0x2efd8e[_0xf9ad('0x2c')]=_[_0xf9ad('0x2d')](_0x590427['query']);_0x2efd8e[_0xf9ad('0x2e')]=_['intersection'](_0x2efd8e[_0xf9ad('0x2f')],_0x2efd8e[_0xf9ad('0x2c')]);_0x39d867[_0xf9ad('0x30')]=_[_0xf9ad('0x31')](_0x2efd8e[_0xf9ad('0x2f')],qs['fields'](_0x590427[_0xf9ad('0x2c')][_0xf9ad('0x32')]));_0x39d867['attributes']=_0x39d867[_0xf9ad('0x30')][_0xf9ad('0x33')]?_0x39d867[_0xf9ad('0x30')]:_0x2efd8e['model'];if(!_0x590427[_0xf9ad('0x2c')]['hasOwnProperty'](_0xf9ad('0x34'))){_0x39d867[_0xf9ad('0x1c')]=qs[_0xf9ad('0x1c')](_0x590427['query'][_0xf9ad('0x1c')]);_0x39d867['offset']=qs[_0xf9ad('0x1a')](_0x590427['query'][_0xf9ad('0x1a')]);}_0x39d867[_0xf9ad('0x35')]=qs[_0xf9ad('0x36')](_0x590427[_0xf9ad('0x2c')][_0xf9ad('0x36')]);_0x39d867[_0xf9ad('0x37')]=qs[_0xf9ad('0x2e')](_[_0xf9ad('0x38')](_0x590427['query'],_0x2efd8e[_0xf9ad('0x2e')]),_0x6edcb2);if(_0x590427[_0xf9ad('0x2c')][_0xf9ad('0x39')]){_0x39d867[_0xf9ad('0x37')]=_[_0xf9ad('0x3a')](_0x39d867[_0xf9ad('0x37')],{'$or':_[_0xf9ad('0x2b')](_0x6edcb2,function(_0x4b0cd7){if(_0x4b0cd7[_0xf9ad('0x29')]!==_0xf9ad('0x3b')){var _0x2ce58d={};_0x2ce58d[_0x4b0cd7[_0xf9ad('0x25')]]={'$like':'%'+_0x590427[_0xf9ad('0x2c')]['filter']+'%'};return _0x2ce58d;}})});}_0x39d867=_[_0xf9ad('0x3a')]({},_0x39d867,_0x590427[_0xf9ad('0x3c')]);var _0x3d441d={'where':_0x39d867[_0xf9ad('0x37')]};return db[_0xf9ad('0x3d')][_0xf9ad('0x1d')](_0x3d441d)[_0xf9ad('0x21')](function(_0x58d667){_0x2ddc07[_0xf9ad('0x1d')]=_0x58d667;if(_0x590427[_0xf9ad('0x2c')][_0xf9ad('0x3e')]){_0x39d867[_0xf9ad('0x3f')]=[{'all':!![]}];}return db['OpenchannelQueueReport'][_0xf9ad('0x40')](_0x39d867);})[_0xf9ad('0x21')](function(_0x239de2){_0x2ddc07[_0xf9ad('0x41')]=_0x239de2;return _0x2ddc07;})[_0xf9ad('0x21')](respondWithFilteredResult(_0x5744a8,_0x39d867))['catch'](handleError(_0x5744a8,null));};exports[_0xf9ad('0x42')]=function(_0x4d5dfd,_0x2d2119){var _0x37c433={'raw':!![],'where':{'id':_0x4d5dfd[_0xf9ad('0x43')]['id']}},_0x24367a={};_0x24367a[_0xf9ad('0x2f')]=_[_0xf9ad('0x2d')](db[_0xf9ad('0x3d')][_0xf9ad('0x28')]);_0x24367a[_0xf9ad('0x2c')]=_['keys'](_0x4d5dfd[_0xf9ad('0x2c')]);_0x24367a['filters']=_[_0xf9ad('0x31')](_0x24367a[_0xf9ad('0x2f')],_0x24367a[_0xf9ad('0x2c')]);_0x37c433[_0xf9ad('0x30')]=_[_0xf9ad('0x31')](_0x24367a['model'],qs[_0xf9ad('0x32')](_0x4d5dfd[_0xf9ad('0x2c')][_0xf9ad('0x32')]));_0x37c433[_0xf9ad('0x30')]=_0x37c433['attributes']['length']?_0x37c433[_0xf9ad('0x30')]:_0x24367a[_0xf9ad('0x2f')];if(_0x4d5dfd[_0xf9ad('0x2c')][_0xf9ad('0x3e')]){_0x37c433['include']=[{'all':!![]}];}_0x37c433=_['merge']({},_0x37c433,_0x4d5dfd[_0xf9ad('0x3c')]);return db['OpenchannelQueueReport'][_0xf9ad('0x44')](_0x37c433)[_0xf9ad('0x21')](handleEntityNotFound(_0x2d2119,null))[_0xf9ad('0x21')](respondWithResult(_0x2d2119,null))[_0xf9ad('0x45')](handleError(_0x2d2119,null));};exports['create']=function(_0x2fce03,_0x129f4b){return db[_0xf9ad('0x3d')][_0xf9ad('0x46')](_0x2fce03[_0xf9ad('0x47')],{})[_0xf9ad('0x21')](respondWithResult(_0x129f4b,0xc9))['catch'](handleError(_0x129f4b,null));};exports[_0xf9ad('0x20')]=function(_0x311e3a,_0x537b56){if(_0x311e3a['body']['id']){delete _0x311e3a[_0xf9ad('0x47')]['id'];}return db[_0xf9ad('0x3d')][_0xf9ad('0x44')]({'where':{'id':_0x311e3a[_0xf9ad('0x43')]['id']}})['then'](handleEntityNotFound(_0x537b56,null))['then'](saveUpdates(_0x311e3a[_0xf9ad('0x47')],null))[_0xf9ad('0x21')](respondWithResult(_0x537b56,null))['catch'](handleError(_0x537b56,null));};exports['destroy']=function(_0x20d24f,_0xf15797){return db[_0xf9ad('0x3d')][_0xf9ad('0x44')]({'where':{'id':_0x20d24f['params']['id']}})[_0xf9ad('0x21')](handleEntityNotFound(_0xf15797,null))[_0xf9ad('0x21')](removeEntity(_0xf15797,null))['catch'](handleError(_0xf15797,null));};exports['describe']=function(_0x277cdc,_0x266ab3){return db[_0xf9ad('0x3d')][_0xf9ad('0x48')]()[_0xf9ad('0x21')](respondWithResult(_0x266ab3,null))[_0xf9ad('0x45')](handleError(_0x266ab3,null));};
\ No newline at end of file
index 776da38..2a79f59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelQueueReport.attributes','define','report_openchannel_queue','uniqueid','util'];(function(_0x47b38c,_0x1787be){var _0x243402=function(_0x465583){while(--_0x465583){_0x47b38c['push'](_0x47b38c['shift']());}};_0x243402(++_0x1787be);}(_0x1261,0x144));var _0x1126=function(_0x319a03,_0x4456d4){_0x319a03=_0x319a03-0x0;var _0x3b6704=_0x1261[_0x319a03];return _0x3b6704;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var logger=require(_0x1126('0x1'))(_0x1126('0x2'));var moment=require(_0x1126('0x3'));var BPromise=require(_0x1126('0x4'));var rp=require(_0x1126('0x5'));var fs=require('fs');var path=require(_0x1126('0x6'));var rimraf=require(_0x1126('0x7'));var config=require(_0x1126('0x8'));var attributes=require(_0x1126('0x9'));module['exports']=function(_0x5c68c8,_0x40ba58){return _0x5c68c8[_0x1126('0xa')]('OpenchannelQueueReport',attributes,{'tableName':_0x1126('0xb'),'paranoid':![],'indexes':[{'name':_0x1126('0xc'),'fields':[_0x1126('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1261=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelQueueReport.attributes','define','report_openchannel_queue','uniqueid','util'];(function(_0x1780cc,_0x12b63f){var _0x153bd0=function(_0x45e9fe){while(--_0x45e9fe){_0x1780cc['push'](_0x1780cc['shift']());}};_0x153bd0(++_0x12b63f);}(_0x1261,0x144));var _0x1126=function(_0x3452eb,_0x44035e){_0x3452eb=_0x3452eb-0x0;var _0x4244fd=_0x1261[_0x3452eb];return _0x4244fd;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var logger=require(_0x1126('0x1'))(_0x1126('0x2'));var moment=require(_0x1126('0x3'));var BPromise=require(_0x1126('0x4'));var rp=require(_0x1126('0x5'));var fs=require('fs');var path=require(_0x1126('0x6'));var rimraf=require(_0x1126('0x7'));var config=require(_0x1126('0x8'));var attributes=require(_0x1126('0x9'));module['exports']=function(_0x5c68c8,_0x40ba58){return _0x5c68c8[_0x1126('0xa')]('OpenchannelQueueReport',attributes,{'tableName':_0x1126('0xb'),'paranoid':![],'indexes':[{'name':_0x1126('0xc'),'fields':[_0x1126('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index fc58ff6..df28e9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cae=['catch','CreateOpenchannelQueueReport','OpenchannelQueueReport','options','UpdateOpenchannelQueueReport','update','raw','where','attributes','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','http','request','then','info','OpenchannelQueueReport,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message'];(function(_0x52bd41,_0x41902a){var _0x2e2ef7=function(_0x479a3e){while(--_0x479a3e){_0x52bd41['push'](_0x52bd41['shift']());}};_0x2e2ef7(++_0x41902a);}(_0x3cae,0x117));var _0xe3ca=function(_0x1d558c,_0x1e497c){_0x1d558c=_0x1d558c-0x0;var _0x15767d=_0x3cae[_0x1d558c];return _0x15767d;};'use strict';var _=require(_0xe3ca('0x0'));var util=require(_0xe3ca('0x1'));var moment=require(_0xe3ca('0x2'));var BPromise=require(_0xe3ca('0x3'));var rs=require(_0xe3ca('0x4'));var fs=require('fs');var Redis=require(_0xe3ca('0x5'));var db=require(_0xe3ca('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xe3ca('0x7'))(_0xe3ca('0x8'));var config=require('../../config/environment');var jayson=require(_0xe3ca('0x9'));var client=jayson['client'][_0xe3ca('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x7fafb4,_0x36d17a,_0x578178){return new BPromise(function(_0x2c4863,_0x100c20){return client[_0xe3ca('0xb')](_0x7fafb4,_0x578178)[_0xe3ca('0xc')](function(_0x1ae7bf){logger[_0xe3ca('0xd')](_0xe3ca('0xe'),_0x36d17a,'request\x20sent');logger[_0xe3ca('0xf')]('OpenchannelQueueReport,\x20%s,\x20%s,\x20%s',_0x36d17a,_0xe3ca('0x10'),JSON[_0xe3ca('0x11')](_0x1ae7bf));if(_0x1ae7bf[_0xe3ca('0x12')]){if(_0x1ae7bf[_0xe3ca('0x12')][_0xe3ca('0x13')]===0x1f4){logger['error']('OpenchannelQueueReport,\x20%s,\x20%s',_0x36d17a,_0x1ae7bf[_0xe3ca('0x12')]['message']);return _0x100c20(_0x1ae7bf[_0xe3ca('0x12')][_0xe3ca('0x14')]);}logger['error'](_0xe3ca('0xe'),_0x36d17a,_0x1ae7bf[_0xe3ca('0x12')][_0xe3ca('0x14')]);return _0x2c4863(_0x1ae7bf[_0xe3ca('0x12')][_0xe3ca('0x14')]);}else{logger[_0xe3ca('0xd')](_0xe3ca('0xe'),_0x36d17a,_0xe3ca('0x10'));_0x2c4863(_0x1ae7bf['result']['message']);}})[_0xe3ca('0x15')](function(_0x4296ae){logger[_0xe3ca('0x12')](_0xe3ca('0xe'),_0x36d17a,_0x4296ae);_0x100c20(_0x4296ae);});});}exports[_0xe3ca('0x16')]=function(_0x2d73d9){var _0x5bb8d8=this;return new Promise(function(_0x2eafde,_0xda5841){return db[_0xe3ca('0x17')]['create'](_0x2d73d9['body'],{'raw':_0x2d73d9['options']?_0x2d73d9[_0xe3ca('0x18')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x3b7591){logger[_0xe3ca('0xd')](_0xe3ca('0x16'),_0x2d73d9);logger[_0xe3ca('0xf')](_0xe3ca('0x16'),_0x2d73d9,JSON['stringify'](_0x3b7591));_0x2eafde(_0x3b7591);})[_0xe3ca('0x15')](function(_0x3ab26e){logger['error'](_0xe3ca('0x16'),_0x3ab26e[_0xe3ca('0x14')],_0x2d73d9);_0xda5841(_0x5bb8d8[_0xe3ca('0x12')](0x1f4,_0x3ab26e[_0xe3ca('0x14')]));});});};exports[_0xe3ca('0x19')]=function(_0x392bdb){var _0x2b571f=this;return new Promise(function(_0x25b39e,_0x477ec7){return db[_0xe3ca('0x17')][_0xe3ca('0x1a')](_0x392bdb['body'],{'raw':_0x392bdb[_0xe3ca('0x18')]?_0x392bdb['options'][_0xe3ca('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x392bdb[_0xe3ca('0x18')]?_0x392bdb[_0xe3ca('0x18')][_0xe3ca('0x1c')]||null:null,'attributes':_0x392bdb['options']?_0x392bdb['options'][_0xe3ca('0x1d')]||null:null,'limit':_0x392bdb[_0xe3ca('0x18')]?_0x392bdb[_0xe3ca('0x18')]['limit']||null:null})[_0xe3ca('0xc')](function(_0x39dd6e){logger[_0xe3ca('0xd')](_0xe3ca('0x19'),_0x392bdb);logger['debug']('UpdateOpenchannelQueueReport',_0x392bdb,JSON[_0xe3ca('0x11')](_0x39dd6e));_0x25b39e(_0x39dd6e);})['catch'](function(_0x24d40a){logger['error']('UpdateOpenchannelQueueReport',_0x24d40a[_0xe3ca('0x14')],_0x392bdb);_0x477ec7(_0x2b571f[_0xe3ca('0x12')](0x1f4,_0x24d40a[_0xe3ca('0x14')]));});});};
\ No newline at end of file
+var _0x896e=['message','info','catch','CreateOpenchannelQueueReport','OpenchannelQueueReport','create','body','options','raw','UpdateOpenchannelQueueReport','where','attributes','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','OpenchannelQueueReport,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0x896e,0x1e9));var _0xe896=function(_0x56eeaa,_0x57d9db){_0x56eeaa=_0x56eeaa-0x0;var _0x3b9edf=_0x896e[_0x56eeaa];return _0x3b9edf;};'use strict';var _=require(_0xe896('0x0'));var util=require(_0xe896('0x1'));var moment=require(_0xe896('0x2'));var BPromise=require(_0xe896('0x3'));var rs=require(_0xe896('0x4'));var fs=require('fs');var Redis=require(_0xe896('0x5'));var db=require(_0xe896('0x6'))['db'];var utils=require(_0xe896('0x7'));var logger=require(_0xe896('0x8'))(_0xe896('0x9'));var config=require(_0xe896('0xa'));var jayson=require(_0xe896('0xb'));var client=jayson['client'][_0xe896('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x7a0721,_0x3b902c,_0x264eeb){return new BPromise(function(_0x43c619,_0x5a1909){return client[_0xe896('0xd')](_0x7a0721,_0x264eeb)[_0xe896('0xe')](function(_0x37a90d){logger['info'](_0xe896('0xf'),_0x3b902c,'request\x20sent');logger[_0xe896('0x10')]('OpenchannelQueueReport,\x20%s,\x20%s,\x20%s',_0x3b902c,_0xe896('0x11'),JSON[_0xe896('0x12')](_0x37a90d));if(_0x37a90d[_0xe896('0x13')]){if(_0x37a90d['error'][_0xe896('0x14')]===0x1f4){logger[_0xe896('0x13')](_0xe896('0xf'),_0x3b902c,_0x37a90d['error'][_0xe896('0x15')]);return _0x5a1909(_0x37a90d[_0xe896('0x13')][_0xe896('0x15')]);}logger['error'](_0xe896('0xf'),_0x3b902c,_0x37a90d[_0xe896('0x13')][_0xe896('0x15')]);return _0x43c619(_0x37a90d['error']['message']);}else{logger[_0xe896('0x16')](_0xe896('0xf'),_0x3b902c,'request\x20sent');_0x43c619(_0x37a90d['result'][_0xe896('0x15')]);}})[_0xe896('0x17')](function(_0x57f04b){logger[_0xe896('0x13')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x3b902c,_0x57f04b);_0x5a1909(_0x57f04b);});});}exports[_0xe896('0x18')]=function(_0x32f86d){var _0x2d4cf0=this;return new Promise(function(_0x5dc89d,_0x782813){return db[_0xe896('0x19')][_0xe896('0x1a')](_0x32f86d[_0xe896('0x1b')],{'raw':_0x32f86d[_0xe896('0x1c')]?_0x32f86d[_0xe896('0x1c')][_0xe896('0x1d')]===undefined?!![]:![]:!![]})[_0xe896('0xe')](function(_0x49547b){logger[_0xe896('0x16')]('CreateOpenchannelQueueReport',_0x32f86d);logger['debug'](_0xe896('0x18'),_0x32f86d,JSON[_0xe896('0x12')](_0x49547b));_0x5dc89d(_0x49547b);})[_0xe896('0x17')](function(_0xeeec7c){logger['error'](_0xe896('0x18'),_0xeeec7c['message'],_0x32f86d);_0x782813(_0x2d4cf0['error'](0x1f4,_0xeeec7c[_0xe896('0x15')]));});});};exports[_0xe896('0x1e')]=function(_0x1e952a){var _0x2e2c10=this;return new Promise(function(_0x20e295,_0x4d9f03){return db[_0xe896('0x19')]['update'](_0x1e952a[_0xe896('0x1b')],{'raw':_0x1e952a[_0xe896('0x1c')]?_0x1e952a[_0xe896('0x1c')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1e952a[_0xe896('0x1c')]?_0x1e952a[_0xe896('0x1c')][_0xe896('0x1f')]||null:null,'attributes':_0x1e952a[_0xe896('0x1c')]?_0x1e952a[_0xe896('0x1c')][_0xe896('0x20')]||null:null,'limit':_0x1e952a['options']?_0x1e952a[_0xe896('0x1c')][_0xe896('0x21')]||null:null})[_0xe896('0xe')](function(_0xbfb15b){logger[_0xe896('0x16')]('UpdateOpenchannelQueueReport',_0x1e952a);logger['debug']('UpdateOpenchannelQueueReport',_0x1e952a,JSON['stringify'](_0xbfb15b));_0x20e295(_0xbfb15b);})['catch'](function(_0x291290){logger[_0xe896('0x13')](_0xe896('0x1e'),_0x291290[_0xe896('0x15')],_0x1e952a);_0x4d9f03(_0x2e2c10[_0xe896('0x13')](0x1f4,_0x291290[_0xe896('0x15')]));});});};
\ No newline at end of file
index a284237..c1e390a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13d3=['exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelTransferReport.controller','index','/describe','isAuthenticated','describe','post','create','/:id','update','destroy'];(function(_0x1f62c3,_0x1ff95b){var _0x385c1c=function(_0x1db580){while(--_0x1db580){_0x1f62c3['push'](_0x1f62c3['shift']());}};_0x385c1c(++_0x1ff95b);}(_0x13d3,0x1e1));var _0x313d=function(_0x24e230,_0x3a73d6){_0x24e230=_0x24e230-0x0;var _0x2cbf0d=_0x13d3[_0x24e230];return _0x2cbf0d;};'use strict';var multer=require(_0x313d('0x0'));var util=require(_0x313d('0x1'));var path=require(_0x313d('0x2'));var timeout=require('connect-timeout');var express=require(_0x313d('0x3'));var router=express[_0x313d('0x4')]();var fs_extra=require(_0x313d('0x5'));var auth=require(_0x313d('0x6'));var interaction=require(_0x313d('0x7'));var config=require(_0x313d('0x8'));var controller=require(_0x313d('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0x313d('0xa')]);router['get'](_0x313d('0xb'),auth[_0x313d('0xc')](),controller[_0x313d('0xd')]);router['get']('/:id',auth[_0x313d('0xc')](),controller['show']);router[_0x313d('0xe')]('/',auth[_0x313d('0xc')](),controller[_0x313d('0xf')]);router['put'](_0x313d('0x10'),auth[_0x313d('0xc')](),controller[_0x313d('0x11')]);router['delete'](_0x313d('0x10'),auth['isAuthenticated'](),controller[_0x313d('0x12')]);module[_0x313d('0x13')]=router;
\ No newline at end of file
+var _0x80ba=['create','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./openchannelTransferReport.controller','get','isAuthenticated','index','/describe','/:id','show','post'];(function(_0x2992fa,_0x16f488){var _0x1b3b58=function(_0x176225){while(--_0x176225){_0x2992fa['push'](_0x2992fa['shift']());}};_0x1b3b58(++_0x16f488);}(_0x80ba,0x6e));var _0xa80b=function(_0x2be082,_0x45e1df){_0x2be082=_0x2be082-0x0;var _0x3606c7=_0x80ba[_0x2be082];return _0x3606c7;};'use strict';var multer=require(_0xa80b('0x0'));var util=require('util');var path=require(_0xa80b('0x1'));var timeout=require(_0xa80b('0x2'));var express=require(_0xa80b('0x3'));var router=express[_0xa80b('0x4')]();var fs_extra=require(_0xa80b('0x5'));var auth=require(_0xa80b('0x6'));var interaction=require(_0xa80b('0x7'));var config=require('../../config/environment');var controller=require(_0xa80b('0x8'));router[_0xa80b('0x9')]('/',auth[_0xa80b('0xa')](),controller[_0xa80b('0xb')]);router['get'](_0xa80b('0xc'),auth[_0xa80b('0xa')](),controller['describe']);router[_0xa80b('0x9')](_0xa80b('0xd'),auth[_0xa80b('0xa')](),controller[_0xa80b('0xe')]);router[_0xa80b('0xf')]('/',auth[_0xa80b('0xa')](),controller[_0xa80b('0x10')]);router['put'](_0xa80b('0xd'),auth['isAuthenticated'](),controller[_0xa80b('0x11')]);router[_0xa80b('0x12')](_0xa80b('0xd'),auth[_0xa80b('0xa')](),controller[_0xa80b('0x13')]);module[_0xa80b('0x14')]=router;
\ No newline at end of file
index 47553d8..c2f6b7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54ef=['agent','queue','DATE','NOW','moment','sequelize','exports','ENUM','account'];(function(_0x51ec5c,_0x3506ef){var _0x5b04b8=function(_0x2e741f){while(--_0x2e741f){_0x51ec5c['push'](_0x51ec5c['shift']());}};_0x5b04b8(++_0x3506ef);}(_0x54ef,0x112));var _0xf54e=function(_0x55d195,_0x2eb23c){_0x55d195=_0x55d195-0x0;var _0x4bce4e=_0x54ef[_0x55d195];return _0x4bce4e;};'use strict';var moment=require(_0xf54e('0x0'));var Sequelize=require(_0xf54e('0x1'));module[_0xf54e('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xf54e('0x3')](_0xf54e('0x4'),_0xf54e('0x5'),_0xf54e('0x6')),'allowNull':![],'defaultValue':_0xf54e('0x6')},'transferredAt':{'type':Sequelize[_0xf54e('0x7')],'allowNull':![],'defaultValue':Sequelize[_0xf54e('0x8')]}};
\ No newline at end of file
+var _0xb43b=['DATE','NOW','moment','sequelize','STRING','ENUM','account','queue'];(function(_0x548d7d,_0x2d41fc){var _0xb1c878=function(_0x570f09){while(--_0x570f09){_0x548d7d['push'](_0x548d7d['shift']());}};_0xb1c878(++_0x2d41fc);}(_0xb43b,0x1b2));var _0xbb43=function(_0x40e85f,_0x7dda8){_0x40e85f=_0x40e85f-0x0;var _0x3889ea=_0xb43b[_0x40e85f];return _0x3889ea;};'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 b27c7c0..44e6171 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e04=['body','find','describe','eml-format','zip-dir','bluebird','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','status','end','json','offset','limit','count','set','Content-Range','apply','update','then','destroy','error','stack','name','index','OpenchannelTransferReport','fieldName','type','key','model','map','keys','query','intersection','fields','attributes','length','hasOwnProperty','sort','where','filters','pick','filter','merge','options','includeAll','findAll','show','params','rawAttributes','catch','create'];(function(_0x4b676e,_0xd54452){var _0x22dadf=function(_0x883bb3){while(--_0x883bb3){_0x4b676e['push'](_0x4b676e['shift']());}};_0x22dadf(++_0xd54452);}(_0x8e04,0x183));var _0x48e0=function(_0x3e274d,_0x35f95f){_0x3e274d=_0x3e274d-0x0;var _0x352bf9=_0x8e04[_0x3e274d];return _0x352bf9;};'use strict';var emlformat=require(_0x48e0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x48e0('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x48e0('0x2'));var Mustache=require('mustache');var util=require(_0x48e0('0x3'));var path=require(_0x48e0('0x4'));var sox=require(_0x48e0('0x5'));var csv=require(_0x48e0('0x6'));var ejs=require(_0x48e0('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x48e0('0x8'));var squel=require('squel');var crypto=require(_0x48e0('0x9'));var jsforce=require(_0x48e0('0xa'));var deskjs=require(_0x48e0('0xb'));var toCsv=require('to-csv');var querystring=require(_0x48e0('0xc'));var Papa=require('papaparse');var Redis=require(_0x48e0('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x48e0('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x48e0('0xf'))('api');var utils=require(_0x48e0('0x10'));var config=require(_0x48e0('0x11'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5d060d,_0x23f9c3){_0x23f9c3=_0x23f9c3||0xcc;return function(_0x279203){if(_0x279203){return _0x5d060d['sendStatus'](_0x23f9c3);}return _0x5d060d[_0x48e0('0x12')](_0x23f9c3)[_0x48e0('0x13')]();};}function respondWithResult(_0x968184,_0x68e9a1){_0x68e9a1=_0x68e9a1||0xc8;return function(_0x5975e4){if(_0x5975e4){return _0x968184['status'](_0x68e9a1)[_0x48e0('0x14')](_0x5975e4);}};}function respondWithFilteredResult(_0x8c45f9,_0x5ccade){return function(_0x56497e){if(_0x56497e){var _0x329db3=typeof _0x5ccade[_0x48e0('0x15')]==='undefined'&&typeof _0x5ccade[_0x48e0('0x16')]==='undefined';var _0x381d00=_0x56497e[_0x48e0('0x17')];var _0x356cf8=_0x329db3?0x0:_0x5ccade['offset'];var _0x132cbb=_0x329db3?_0x56497e[_0x48e0('0x17')]:_0x5ccade['offset']+_0x5ccade[_0x48e0('0x16')];var _0x179f68;if(_0x132cbb>=_0x381d00){_0x132cbb=_0x381d00;_0x179f68=0xc8;}else{_0x179f68=0xce;}_0x8c45f9['status'](_0x179f68);return _0x8c45f9[_0x48e0('0x18')](_0x48e0('0x19'),_0x356cf8+'-'+_0x132cbb+'/'+_0x381d00)[_0x48e0('0x14')](_0x56497e);}return null;};}function patchUpdates(_0x2c8de7){return function(_0x589d8f){try{jsonpatch[_0x48e0('0x1a')](_0x589d8f,_0x2c8de7,!![]);}catch(_0x2e3046){return BPromise['reject'](_0x2e3046);}return _0x589d8f['save']();};}function saveUpdates(_0x4b1523,_0x5b0bff){return function(_0x3a95ac){if(_0x3a95ac){return _0x3a95ac[_0x48e0('0x1b')](_0x4b1523)[_0x48e0('0x1c')](function(_0x5ef56d){return _0x5ef56d;});}return null;};}function removeEntity(_0x415b16,_0x23a3c8){return function(_0x493bac){if(_0x493bac){return _0x493bac[_0x48e0('0x1d')]()[_0x48e0('0x1c')](function(){_0x415b16[_0x48e0('0x12')](0xcc)[_0x48e0('0x13')]();});}};}function handleEntityNotFound(_0x3a46b0,_0x556676){return function(_0x3f729a){if(!_0x3f729a){_0x3a46b0['sendStatus'](0x194);}return _0x3f729a;};}function handleError(_0x397599,_0x24e3bf){_0x24e3bf=_0x24e3bf||0x1f4;return function(_0x1ab9d0){logger[_0x48e0('0x1e')](_0x1ab9d0[_0x48e0('0x1f')]);if(_0x1ab9d0[_0x48e0('0x20')]){delete _0x1ab9d0[_0x48e0('0x20')];}_0x397599[_0x48e0('0x12')](_0x24e3bf)['send'](_0x1ab9d0);};}exports[_0x48e0('0x21')]=function(_0x25d0d5,_0x553924){var _0x5ad5d9={},_0x91061c={},_0x15a8a={'count':0x0,'rows':[]};var _0x4a2d98=_['map'](db[_0x48e0('0x22')]['rawAttributes'],function(_0x536cdd){return{'name':_0x536cdd[_0x48e0('0x23')],'type':_0x536cdd[_0x48e0('0x24')][_0x48e0('0x25')]};});_0x91061c[_0x48e0('0x26')]=_[_0x48e0('0x27')](_0x4a2d98,'name');_0x91061c['query']=_[_0x48e0('0x28')](_0x25d0d5[_0x48e0('0x29')]);_0x91061c['filters']=_[_0x48e0('0x2a')](_0x91061c[_0x48e0('0x26')],_0x91061c[_0x48e0('0x29')]);_0x5ad5d9['attributes']=_['intersection'](_0x91061c[_0x48e0('0x26')],qs[_0x48e0('0x2b')](_0x25d0d5[_0x48e0('0x29')]['fields']));_0x5ad5d9[_0x48e0('0x2c')]=_0x5ad5d9[_0x48e0('0x2c')][_0x48e0('0x2d')]?_0x5ad5d9[_0x48e0('0x2c')]:_0x91061c[_0x48e0('0x26')];if(!_0x25d0d5[_0x48e0('0x29')][_0x48e0('0x2e')]('nolimit')){_0x5ad5d9['limit']=qs[_0x48e0('0x16')](_0x25d0d5['query'][_0x48e0('0x16')]);_0x5ad5d9[_0x48e0('0x15')]=qs['offset'](_0x25d0d5['query'][_0x48e0('0x15')]);}_0x5ad5d9['order']=qs['sort'](_0x25d0d5[_0x48e0('0x29')][_0x48e0('0x2f')]);_0x5ad5d9[_0x48e0('0x30')]=qs[_0x48e0('0x31')](_[_0x48e0('0x32')](_0x25d0d5['query'],_0x91061c['filters']),_0x4a2d98);if(_0x25d0d5['query'][_0x48e0('0x33')]){_0x5ad5d9['where']=_[_0x48e0('0x34')](_0x5ad5d9[_0x48e0('0x30')],{'$or':_[_0x48e0('0x27')](_0x4a2d98,function(_0x474962){if(_0x474962['type']!=='VIRTUAL'){var _0x1e88e9={};_0x1e88e9[_0x474962[_0x48e0('0x20')]]={'$like':'%'+_0x25d0d5[_0x48e0('0x29')][_0x48e0('0x33')]+'%'};return _0x1e88e9;}})});}_0x5ad5d9=_[_0x48e0('0x34')]({},_0x5ad5d9,_0x25d0d5[_0x48e0('0x35')]);var _0x14ba11={'where':_0x5ad5d9[_0x48e0('0x30')]};return db[_0x48e0('0x22')]['count'](_0x14ba11)[_0x48e0('0x1c')](function(_0x476199){_0x15a8a[_0x48e0('0x17')]=_0x476199;if(_0x25d0d5[_0x48e0('0x29')][_0x48e0('0x36')]){_0x5ad5d9['include']=[{'all':!![]}];}return db[_0x48e0('0x22')][_0x48e0('0x37')](_0x5ad5d9);})[_0x48e0('0x1c')](function(_0x1a36ba){_0x15a8a['rows']=_0x1a36ba;return _0x15a8a;})['then'](respondWithFilteredResult(_0x553924,_0x5ad5d9))['catch'](handleError(_0x553924,null));};exports[_0x48e0('0x38')]=function(_0x11da60,_0x2fd169){var _0x1aac1c={'raw':!![],'where':{'id':_0x11da60[_0x48e0('0x39')]['id']}},_0x4f22ed={};_0x4f22ed[_0x48e0('0x26')]=_[_0x48e0('0x28')](db[_0x48e0('0x22')][_0x48e0('0x3a')]);_0x4f22ed[_0x48e0('0x29')]=_[_0x48e0('0x28')](_0x11da60[_0x48e0('0x29')]);_0x4f22ed[_0x48e0('0x31')]=_[_0x48e0('0x2a')](_0x4f22ed[_0x48e0('0x26')],_0x4f22ed['query']);_0x1aac1c['attributes']=_[_0x48e0('0x2a')](_0x4f22ed[_0x48e0('0x26')],qs[_0x48e0('0x2b')](_0x11da60['query']['fields']));_0x1aac1c[_0x48e0('0x2c')]=_0x1aac1c[_0x48e0('0x2c')][_0x48e0('0x2d')]?_0x1aac1c['attributes']:_0x4f22ed[_0x48e0('0x26')];if(_0x11da60[_0x48e0('0x29')]['includeAll']){_0x1aac1c['include']=[{'all':!![]}];}_0x1aac1c=_[_0x48e0('0x34')]({},_0x1aac1c,_0x11da60[_0x48e0('0x35')]);return db[_0x48e0('0x22')]['find'](_0x1aac1c)[_0x48e0('0x1c')](handleEntityNotFound(_0x2fd169,null))['then'](respondWithResult(_0x2fd169,null))[_0x48e0('0x3b')](handleError(_0x2fd169,null));};exports[_0x48e0('0x3c')]=function(_0x4dc4b2,_0x38d7fe){return db[_0x48e0('0x22')]['create'](_0x4dc4b2[_0x48e0('0x3d')],{})[_0x48e0('0x1c')](respondWithResult(_0x38d7fe,0xc9))[_0x48e0('0x3b')](handleError(_0x38d7fe,null));};exports[_0x48e0('0x1b')]=function(_0x493da1,_0x24eff8){if(_0x493da1[_0x48e0('0x3d')]['id']){delete _0x493da1['body']['id'];}return db[_0x48e0('0x22')][_0x48e0('0x3e')]({'where':{'id':_0x493da1[_0x48e0('0x39')]['id']}})[_0x48e0('0x1c')](handleEntityNotFound(_0x24eff8,null))[_0x48e0('0x1c')](saveUpdates(_0x493da1[_0x48e0('0x3d')],null))[_0x48e0('0x1c')](respondWithResult(_0x24eff8,null))[_0x48e0('0x3b')](handleError(_0x24eff8,null));};exports['destroy']=function(_0x2340c0,_0x52bfb5){return db[_0x48e0('0x22')][_0x48e0('0x3e')]({'where':{'id':_0x2340c0['params']['id']}})[_0x48e0('0x1c')](handleEntityNotFound(_0x52bfb5,null))['then'](removeEntity(_0x52bfb5,null))[_0x48e0('0x3b')](handleError(_0x52bfb5,null));};exports[_0x48e0('0x3f')]=function(_0x56f787,_0x1fd260){return db['OpenchannelTransferReport'][_0x48e0('0x3f')]()[_0x48e0('0x1c')](respondWithResult(_0x1fd260,null))[_0x48e0('0x3b')](handleError(_0x1fd260,null));};
\ No newline at end of file
+var _0x463a=['merge','filter','options','OpenchannelTransferReport','includeAll','findAll','catch','show','params','length','include','create','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','offset','undefined','limit','count','status','apply','update','then','destroy','error','name','send','index','rawAttributes','type','key','model','map','keys','query','filters','attributes','intersection','fields','hasOwnProperty','nolimit','sort','where','pick'];(function(_0x19d2b9,_0x18f98f){var _0x170eb8=function(_0x28e16d){while(--_0x28e16d){_0x19d2b9['push'](_0x19d2b9['shift']());}};_0x170eb8(++_0x18f98f);}(_0x463a,0xa5));var _0xa463=function(_0x4ae625,_0xf396d0){_0x4ae625=_0x4ae625-0x0;var _0x31accf=_0x463a[_0x4ae625];return _0x31accf;};'use strict';var emlformat=require(_0xa463('0x0'));var rimraf=require(_0xa463('0x1'));var zipdir=require(_0xa463('0x2'));var jsonpatch=require(_0xa463('0x3'));var rp=require(_0xa463('0x4'));var moment=require(_0xa463('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xa463('0x6'));var util=require(_0xa463('0x7'));var path=require('path');var sox=require(_0xa463('0x8'));var csv=require(_0xa463('0x9'));var ejs=require(_0xa463('0xa'));var fs=require('fs');var fs_extra=require(_0xa463('0xb'));var _=require(_0xa463('0xc'));var squel=require(_0xa463('0xd'));var crypto=require(_0xa463('0xe'));var jsforce=require(_0xa463('0xf'));var deskjs=require(_0xa463('0x10'));var toCsv=require('to-csv');var querystring=require(_0xa463('0x11'));var Papa=require(_0xa463('0x12'));var Redis=require(_0xa463('0x13'));var authService=require(_0xa463('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xa463('0x15'));var hardwareService=require(_0xa463('0x16'));var logger=require(_0xa463('0x17'))(_0xa463('0x18'));var utils=require(_0xa463('0x19'));var config=require(_0xa463('0x1a'));var licenseUtil=require(_0xa463('0x1b'));var db=require(_0xa463('0x1c'))['db'];function respondWithStatusCode(_0x37124f,_0x3bd8a2){_0x3bd8a2=_0x3bd8a2||0xcc;return function(_0x23aa93){if(_0x23aa93){return _0x37124f[_0xa463('0x1d')](_0x3bd8a2);}return _0x37124f['status'](_0x3bd8a2)[_0xa463('0x1e')]();};}function respondWithResult(_0x4e8864,_0x3d4ec1){_0x3d4ec1=_0x3d4ec1||0xc8;return function(_0x36d406){if(_0x36d406){return _0x4e8864['status'](_0x3d4ec1)['json'](_0x36d406);}};}function respondWithFilteredResult(_0x291c60,_0x3401d6){return function(_0x10d606){if(_0x10d606){var _0xc266d7=typeof _0x3401d6[_0xa463('0x1f')]===_0xa463('0x20')&&typeof _0x3401d6[_0xa463('0x21')]===_0xa463('0x20');var _0x45ae9d=_0x10d606['count'];var _0x5f2930=_0xc266d7?0x0:_0x3401d6[_0xa463('0x1f')];var _0x43810d=_0xc266d7?_0x10d606[_0xa463('0x22')]:_0x3401d6[_0xa463('0x1f')]+_0x3401d6[_0xa463('0x21')];var _0xcfc839;if(_0x43810d>=_0x45ae9d){_0x43810d=_0x45ae9d;_0xcfc839=0xc8;}else{_0xcfc839=0xce;}_0x291c60[_0xa463('0x23')](_0xcfc839);return _0x291c60['set']('Content-Range',_0x5f2930+'-'+_0x43810d+'/'+_0x45ae9d)['json'](_0x10d606);}return null;};}function patchUpdates(_0x39dfba){return function(_0xf72f48){try{jsonpatch[_0xa463('0x24')](_0xf72f48,_0x39dfba,!![]);}catch(_0x44633c){return BPromise['reject'](_0x44633c);}return _0xf72f48['save']();};}function saveUpdates(_0x42ece6,_0x4bca8a){return function(_0x5b79a3){if(_0x5b79a3){return _0x5b79a3[_0xa463('0x25')](_0x42ece6)[_0xa463('0x26')](function(_0x48d6fb){return _0x48d6fb;});}return null;};}function removeEntity(_0x4e0b81,_0x2f7ab0){return function(_0x22baeb){if(_0x22baeb){return _0x22baeb[_0xa463('0x27')]()[_0xa463('0x26')](function(){_0x4e0b81['status'](0xcc)[_0xa463('0x1e')]();});}};}function handleEntityNotFound(_0x3cc9ad,_0x5e7b0a){return function(_0x10abf7){if(!_0x10abf7){_0x3cc9ad[_0xa463('0x1d')](0x194);}return _0x10abf7;};}function handleError(_0x4d647e,_0x2e3163){_0x2e3163=_0x2e3163||0x1f4;return function(_0x57acf6){logger[_0xa463('0x28')](_0x57acf6['stack']);if(_0x57acf6[_0xa463('0x29')]){delete _0x57acf6[_0xa463('0x29')];}_0x4d647e[_0xa463('0x23')](_0x2e3163)[_0xa463('0x2a')](_0x57acf6);};}exports[_0xa463('0x2b')]=function(_0x4febe2,_0x4a34be){var _0x3d2c7e={},_0xb7f4c7={},_0x479c17={'count':0x0,'rows':[]};var _0x33b0cc=_['map'](db['OpenchannelTransferReport'][_0xa463('0x2c')],function(_0x1bf5f2){return{'name':_0x1bf5f2['fieldName'],'type':_0x1bf5f2[_0xa463('0x2d')][_0xa463('0x2e')]};});_0xb7f4c7[_0xa463('0x2f')]=_[_0xa463('0x30')](_0x33b0cc,_0xa463('0x29'));_0xb7f4c7['query']=_[_0xa463('0x31')](_0x4febe2[_0xa463('0x32')]);_0xb7f4c7[_0xa463('0x33')]=_['intersection'](_0xb7f4c7[_0xa463('0x2f')],_0xb7f4c7[_0xa463('0x32')]);_0x3d2c7e[_0xa463('0x34')]=_[_0xa463('0x35')](_0xb7f4c7[_0xa463('0x2f')],qs[_0xa463('0x36')](_0x4febe2[_0xa463('0x32')]['fields']));_0x3d2c7e[_0xa463('0x34')]=_0x3d2c7e[_0xa463('0x34')]['length']?_0x3d2c7e[_0xa463('0x34')]:_0xb7f4c7['model'];if(!_0x4febe2[_0xa463('0x32')][_0xa463('0x37')](_0xa463('0x38'))){_0x3d2c7e[_0xa463('0x21')]=qs[_0xa463('0x21')](_0x4febe2[_0xa463('0x32')][_0xa463('0x21')]);_0x3d2c7e[_0xa463('0x1f')]=qs['offset'](_0x4febe2[_0xa463('0x32')][_0xa463('0x1f')]);}_0x3d2c7e['order']=qs['sort'](_0x4febe2['query'][_0xa463('0x39')]);_0x3d2c7e[_0xa463('0x3a')]=qs[_0xa463('0x33')](_[_0xa463('0x3b')](_0x4febe2[_0xa463('0x32')],_0xb7f4c7[_0xa463('0x33')]),_0x33b0cc);if(_0x4febe2[_0xa463('0x32')]['filter']){_0x3d2c7e[_0xa463('0x3a')]=_[_0xa463('0x3c')](_0x3d2c7e[_0xa463('0x3a')],{'$or':_[_0xa463('0x30')](_0x33b0cc,function(_0x4dd15d){if(_0x4dd15d['type']!=='VIRTUAL'){var _0x335bc7={};_0x335bc7[_0x4dd15d[_0xa463('0x29')]]={'$like':'%'+_0x4febe2[_0xa463('0x32')][_0xa463('0x3d')]+'%'};return _0x335bc7;}})});}_0x3d2c7e=_[_0xa463('0x3c')]({},_0x3d2c7e,_0x4febe2[_0xa463('0x3e')]);var _0x13cdc6={'where':_0x3d2c7e[_0xa463('0x3a')]};return db[_0xa463('0x3f')][_0xa463('0x22')](_0x13cdc6)['then'](function(_0x4acb69){_0x479c17[_0xa463('0x22')]=_0x4acb69;if(_0x4febe2['query'][_0xa463('0x40')]){_0x3d2c7e['include']=[{'all':!![]}];}return db['OpenchannelTransferReport'][_0xa463('0x41')](_0x3d2c7e);})[_0xa463('0x26')](function(_0x3048b1){_0x479c17['rows']=_0x3048b1;return _0x479c17;})[_0xa463('0x26')](respondWithFilteredResult(_0x4a34be,_0x3d2c7e))[_0xa463('0x42')](handleError(_0x4a34be,null));};exports[_0xa463('0x43')]=function(_0x587341,_0x154872){var _0x3a84a4={'raw':!![],'where':{'id':_0x587341[_0xa463('0x44')]['id']}},_0x379b5d={};_0x379b5d[_0xa463('0x2f')]=_[_0xa463('0x31')](db['OpenchannelTransferReport'][_0xa463('0x2c')]);_0x379b5d[_0xa463('0x32')]=_['keys'](_0x587341['query']);_0x379b5d[_0xa463('0x33')]=_['intersection'](_0x379b5d[_0xa463('0x2f')],_0x379b5d[_0xa463('0x32')]);_0x3a84a4[_0xa463('0x34')]=_[_0xa463('0x35')](_0x379b5d[_0xa463('0x2f')],qs['fields'](_0x587341[_0xa463('0x32')]['fields']));_0x3a84a4[_0xa463('0x34')]=_0x3a84a4[_0xa463('0x34')][_0xa463('0x45')]?_0x3a84a4[_0xa463('0x34')]:_0x379b5d['model'];if(_0x587341['query'][_0xa463('0x40')]){_0x3a84a4[_0xa463('0x46')]=[{'all':!![]}];}_0x3a84a4=_[_0xa463('0x3c')]({},_0x3a84a4,_0x587341[_0xa463('0x3e')]);return db[_0xa463('0x3f')]['find'](_0x3a84a4)[_0xa463('0x26')](handleEntityNotFound(_0x154872,null))[_0xa463('0x26')](respondWithResult(_0x154872,null))[_0xa463('0x42')](handleError(_0x154872,null));};exports['create']=function(_0x4f2965,_0x434365){return db['OpenchannelTransferReport'][_0xa463('0x47')](_0x4f2965['body'],{})['then'](respondWithResult(_0x434365,0xc9))[_0xa463('0x42')](handleError(_0x434365,null));};exports[_0xa463('0x25')]=function(_0x4eee21,_0x51dc34){if(_0x4eee21[_0xa463('0x48')]['id']){delete _0x4eee21[_0xa463('0x48')]['id'];}return db[_0xa463('0x3f')][_0xa463('0x49')]({'where':{'id':_0x4eee21[_0xa463('0x44')]['id']}})[_0xa463('0x26')](handleEntityNotFound(_0x51dc34,null))[_0xa463('0x26')](saveUpdates(_0x4eee21['body'],null))[_0xa463('0x26')](respondWithResult(_0x51dc34,null))[_0xa463('0x42')](handleError(_0x51dc34,null));};exports[_0xa463('0x27')]=function(_0x8c740c,_0x35acca){return db[_0xa463('0x3f')][_0xa463('0x49')]({'where':{'id':_0x8c740c[_0xa463('0x44')]['id']}})[_0xa463('0x26')](handleEntityNotFound(_0x35acca,null))[_0xa463('0x26')](removeEntity(_0x35acca,null))[_0xa463('0x42')](handleError(_0x35acca,null));};exports[_0xa463('0x4a')]=function(_0x55ebd7,_0x406e54){return db[_0xa463('0x3f')]['describe']()['then'](respondWithResult(_0x406e54,null))[_0xa463('0x42')](handleError(_0x406e54,null));};
\ No newline at end of file
index 1b17c66..2fab54b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab8d=['util','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','OpenchannelTransferReport','uniqueid'];(function(_0x27c7c6,_0x12974a){var _0x17a8ae=function(_0xbf3605){while(--_0xbf3605){_0x27c7c6['push'](_0x27c7c6['shift']());}};_0x17a8ae(++_0x12974a);}(_0xab8d,0xf2));var _0xdab8=function(_0x22f8ab,_0x15d8ff){_0x22f8ab=_0x22f8ab-0x0;var _0x2a70e5=_0xab8d[_0x22f8ab];return _0x2a70e5;};'use strict';var _=require('lodash');var util=require(_0xdab8('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xdab8('0x1'));var BPromise=require(_0xdab8('0x2'));var rp=require(_0xdab8('0x3'));var fs=require('fs');var path=require(_0xdab8('0x4'));var rimraf=require(_0xdab8('0x5'));var config=require(_0xdab8('0x6'));var attributes=require('./openchannelTransferReport.attributes');module[_0xdab8('0x7')]=function(_0x28e50d,_0x47142b){return _0x28e50d[_0xdab8('0x8')](_0xdab8('0x9'),attributes,{'tableName':'report_openchannel_transfer','paranoid':![],'indexes':[{'name':_0xdab8('0xa'),'fields':[_0xdab8('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x85d2=['OpenchannelTransferReport','uniqueid','lodash','../../config/logger','moment','bluebird','request-promise','rimraf','./openchannelTransferReport.attributes','exports','define'];(function(_0x3e82ae,_0x43b42f){var _0x4bffb6=function(_0x1ea15a){while(--_0x1ea15a){_0x3e82ae['push'](_0x3e82ae['shift']());}};_0x4bffb6(++_0x43b42f);}(_0x85d2,0x120));var _0x285d=function(_0x26d957,_0x1c32ee){_0x26d957=_0x26d957-0x0;var _0x3cf793=_0x85d2[_0x26d957];return _0x3cf793;};'use strict';var _=require(_0x285d('0x0'));var util=require('util');var logger=require(_0x285d('0x1'))('api');var moment=require(_0x285d('0x2'));var BPromise=require(_0x285d('0x3'));var rp=require(_0x285d('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x285d('0x5'));var config=require('../../config/environment');var attributes=require(_0x285d('0x6'));module[_0x285d('0x7')]=function(_0x5a5109,_0x2b16dc){return _0x5a5109[_0x285d('0x8')](_0x285d('0x9'),attributes,{'tableName':'report_openchannel_transfer','paranoid':![],'indexes':[{'name':_0x285d('0xa'),'fields':[_0x285d('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 2389d4c..51312c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc18a=['code','message','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','OpenchannelTransferReport,\x20%s,\x20%s','request\x20sent','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','error'];(function(_0x2221f2,_0x4acdaa){var _0x4ba58a=function(_0x502677){while(--_0x502677){_0x2221f2['push'](_0x2221f2['shift']());}};_0x4ba58a(++_0x4acdaa);}(_0xc18a,0x1cf));var _0xac18=function(_0xdddc0c,_0x1f0bd9){_0xdddc0c=_0xdddc0c-0x0;var _0x3c91d9=_0xc18a[_0xdddc0c];return _0x3c91d9;};'use strict';var _=require(_0xac18('0x0'));var util=require(_0xac18('0x1'));var moment=require(_0xac18('0x2'));var BPromise=require(_0xac18('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xac18('0x4'));var db=require(_0xac18('0x5'))['db'];var utils=require(_0xac18('0x6'));var logger=require(_0xac18('0x7'))(_0xac18('0x8'));var config=require(_0xac18('0x9'));var jayson=require(_0xac18('0xa'));var client=jayson[_0xac18('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0xab6cb,_0x268fa1,_0x542a9){return new BPromise(function(_0x2bf4b8,_0xd3c4bc){return client[_0xac18('0xc')](_0xab6cb,_0x542a9)[_0xac18('0xd')](function(_0x223d7f){logger[_0xac18('0xe')](_0xac18('0xf'),_0x268fa1,_0xac18('0x10'));logger[_0xac18('0x11')](_0xac18('0x12'),_0x268fa1,_0xac18('0x10'),JSON['stringify'](_0x223d7f));if(_0x223d7f[_0xac18('0x13')]){if(_0x223d7f['error'][_0xac18('0x14')]===0x1f4){logger['error']('OpenchannelTransferReport,\x20%s,\x20%s',_0x268fa1,_0x223d7f[_0xac18('0x13')]['message']);return _0xd3c4bc(_0x223d7f['error'][_0xac18('0x15')]);}logger[_0xac18('0x13')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x268fa1,_0x223d7f[_0xac18('0x13')][_0xac18('0x15')]);return _0x2bf4b8(_0x223d7f['error'][_0xac18('0x15')]);}else{logger['info'](_0xac18('0xf'),_0x268fa1,'request\x20sent');_0x2bf4b8(_0x223d7f['result'][_0xac18('0x15')]);}})[_0xac18('0x16')](function(_0x519c07){logger['error'](_0xac18('0xf'),_0x268fa1,_0x519c07);_0xd3c4bc(_0x519c07);});});}
\ No newline at end of file
+var _0x86f4=['info','OpenchannelTransferReport,\x20%s,\x20%s','request\x20sent','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','then'];(function(_0x3a0d7a,_0x24c558){var _0x205b24=function(_0x5984e4){while(--_0x5984e4){_0x3a0d7a['push'](_0x3a0d7a['shift']());}};_0x205b24(++_0x24c558);}(_0x86f4,0x18a));var _0x486f=function(_0x300f18,_0x530c55){_0x300f18=_0x300f18-0x0;var _0x46147b=_0x86f4[_0x300f18];return _0x46147b;};'use strict';var _=require(_0x486f('0x0'));var util=require(_0x486f('0x1'));var moment=require(_0x486f('0x2'));var BPromise=require(_0x486f('0x3'));var rs=require(_0x486f('0x4'));var fs=require('fs');var Redis=require(_0x486f('0x5'));var db=require(_0x486f('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x486f('0x7'))(_0x486f('0x8'));var config=require('../../config/environment');var jayson=require(_0x486f('0x9'));var client=jayson[_0x486f('0xa')][_0x486f('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x207201,_0x3c6469,_0x3a0791){return new BPromise(function(_0x5bfabc,_0x33363d){return client[_0x486f('0xc')](_0x207201,_0x3a0791)[_0x486f('0xd')](function(_0x468a82){logger[_0x486f('0xe')](_0x486f('0xf'),_0x3c6469,_0x486f('0x10'));logger[_0x486f('0x11')](_0x486f('0x12'),_0x3c6469,_0x486f('0x10'),JSON[_0x486f('0x13')](_0x468a82));if(_0x468a82[_0x486f('0x14')]){if(_0x468a82[_0x486f('0x14')][_0x486f('0x15')]===0x1f4){logger[_0x486f('0x14')](_0x486f('0xf'),_0x3c6469,_0x468a82[_0x486f('0x14')]['message']);return _0x33363d(_0x468a82[_0x486f('0x14')]['message']);}logger[_0x486f('0x14')](_0x486f('0xf'),_0x3c6469,_0x468a82[_0x486f('0x14')]['message']);return _0x5bfabc(_0x468a82['error'][_0x486f('0x16')]);}else{logger[_0x486f('0xe')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x3c6469,_0x486f('0x10'));_0x5bfabc(_0x468a82[_0x486f('0x17')][_0x486f('0x16')]);}})['catch'](function(_0x53561a){logger[_0x486f('0x14')](_0x486f('0xf'),_0x3c6469,_0x53561a);_0x33363d(_0x53561a);});});}
\ No newline at end of file
index 9e828ef..eb0943c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a80=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated','show','put','update','delete','destroy'];(function(_0x5f20c7,_0x15f2c6){var _0x255adc=function(_0x24c2fa){while(--_0x24c2fa){_0x5f20c7['push'](_0x5f20c7['shift']());}};_0x255adc(++_0x15f2c6);}(_0x7a80,0x10a));var _0x07a8=function(_0x29d94e,_0xf386d6){_0x29d94e=_0x29d94e-0x0;var _0x106237=_0x7a80[_0x29d94e];return _0x106237;};'use strict';var multer=require(_0x07a8('0x0'));var util=require(_0x07a8('0x1'));var path=require(_0x07a8('0x2'));var timeout=require(_0x07a8('0x3'));var express=require(_0x07a8('0x4'));var router=express[_0x07a8('0x5')]();var fs_extra=require(_0x07a8('0x6'));var auth=require(_0x07a8('0x7'));var interaction=require(_0x07a8('0x8'));var config=require(_0x07a8('0x9'));var controller=require('./pause.controller');router[_0x07a8('0xa')]('/',auth['isAuthenticated'](),controller[_0x07a8('0xb')]);router[_0x07a8('0xa')](_0x07a8('0xc'),auth[_0x07a8('0xd')](),controller[_0x07a8('0xe')]);router['post']('/',auth[_0x07a8('0xd')](),controller['create']);router[_0x07a8('0xf')](_0x07a8('0xc'),auth[_0x07a8('0xd')](),controller[_0x07a8('0x10')]);router[_0x07a8('0x11')](_0x07a8('0xc'),auth[_0x07a8('0xd')](),controller[_0x07a8('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x065f=['isAuthenticated','show','create','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','./pause.controller','index','get','/:id'];(function(_0x3c49dd,_0x209048){var _0x532558=function(_0x155ceb){while(--_0x155ceb){_0x3c49dd['push'](_0x3c49dd['shift']());}};_0x532558(++_0x209048);}(_0x065f,0x85));var _0xf065=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x065f[_0x17d9e3];return _0x14192d;};'use strict';var multer=require(_0xf065('0x0'));var util=require(_0xf065('0x1'));var path=require(_0xf065('0x2'));var timeout=require(_0xf065('0x3'));var express=require(_0xf065('0x4'));var router=express[_0xf065('0x5')]();var fs_extra=require(_0xf065('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xf065('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0xf065('0x8')]);router[_0xf065('0x9')](_0xf065('0xa'),auth[_0xf065('0xb')](),controller[_0xf065('0xc')]);router['post']('/',auth[_0xf065('0xb')](),controller[_0xf065('0xd')]);router[_0xf065('0xe')](_0xf065('0xa'),auth[_0xf065('0xb')](),controller[_0xf065('0xf')]);router['delete'](_0xf065('0xa'),auth[_0xf065('0xb')](),controller[_0xf065('0x10')]);module[_0xf065('0x11')]=router;
\ No newline at end of file
index 523f105..7b23b09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x587d=['name','exports','STRING'];(function(_0x1712f0,_0x4310fc){var _0x24947c=function(_0x10ae3e){while(--_0x10ae3e){_0x1712f0['push'](_0x1712f0['shift']());}};_0x24947c(++_0x4310fc);}(_0x587d,0x1e7));var _0xd587=function(_0x59a0e0,_0x32baef){_0x59a0e0=_0x59a0e0-0x0;var _0x2e0667=_0x587d[_0x59a0e0];return _0x2e0667;};'use strict';var Sequelize=require('sequelize');module[_0xd587('0x0')]={'name':{'type':Sequelize[_0xd587('0x1')],'unique':_0xd587('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0xd587('0x1')]}};
\ No newline at end of file
+var _0xb164=['STRING','sequelize','exports','name'];(function(_0x4f0f9b,_0x4e963e){var _0x970f94=function(_0xdde68a){while(--_0xdde68a){_0x4f0f9b['push'](_0x4f0f9b['shift']());}};_0x970f94(++_0x4e963e);}(_0xb164,0x1d9));var _0x4b16=function(_0x1c5d53,_0x1029a2){_0x1c5d53=_0x1c5d53-0x0;var _0x2ef0f8=_0xb164[_0x1c5d53];return _0x2ef0f8;};'use strict';var Sequelize=require(_0x4b16('0x0'));module[_0x4b16('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x4b16('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0x4b16('0x3')]}};
\ No newline at end of file
index 3d05cb1..e0056ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbdda=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','count','set','Content-Range','apply','reject','save','then','Pauses','UserProfileResource','sendStatus','error','stack','name','send','index','Pause','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filter','merge','map','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','get','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x356e91,_0x45592c){var _0x5559dc=function(_0x2034d7){while(--_0x2034d7){_0x356e91['push'](_0x356e91['shift']());}};_0x5559dc(++_0x45592c);}(_0xbdda,0x94));var _0xabdd=function(_0x40a178,_0x4aa6ea){_0x40a178=_0x40a178-0x0;var _0x2d2dd7=_0xbdda[_0x40a178];return _0x2d2dd7;};'use strict';var emlformat=require(_0xabdd('0x0'));var rimraf=require(_0xabdd('0x1'));var zipdir=require(_0xabdd('0x2'));var jsonpatch=require(_0xabdd('0x3'));var rp=require(_0xabdd('0x4'));var moment=require(_0xabdd('0x5'));var BPromise=require(_0xabdd('0x6'));var Mustache=require('mustache');var util=require(_0xabdd('0x7'));var path=require('path');var sox=require(_0xabdd('0x8'));var csv=require('to-csv');var ejs=require(_0xabdd('0x9'));var fs=require('fs');var fs_extra=require(_0xabdd('0xa'));var _=require(_0xabdd('0xb'));var squel=require(_0xabdd('0xc'));var crypto=require(_0xabdd('0xd'));var jsforce=require(_0xabdd('0xe'));var deskjs=require(_0xabdd('0xf'));var toCsv=require(_0xabdd('0x10'));var querystring=require(_0xabdd('0x11'));var Papa=require(_0xabdd('0x12'));var Redis=require(_0xabdd('0x13'));var authService=require(_0xabdd('0x14'));var qs=require(_0xabdd('0x15'));var as=require(_0xabdd('0x16'));var hardwareService=require(_0xabdd('0x17'));var logger=require(_0xabdd('0x18'))(_0xabdd('0x19'));var utils=require(_0xabdd('0x1a'));var config=require(_0xabdd('0x1b'));var licenseUtil=require(_0xabdd('0x1c'));var db=require(_0xabdd('0x1d'))['db'];function respondWithStatusCode(_0x4a327f,_0x3d51db){_0x3d51db=_0x3d51db||0xcc;return function(_0x542b4d){if(_0x542b4d){return _0x4a327f['sendStatus'](_0x3d51db);}return _0x4a327f[_0xabdd('0x1e')](_0x3d51db)[_0xabdd('0x1f')]();};}function respondWithResult(_0xb20b77,_0x24318a){_0x24318a=_0x24318a||0xc8;return function(_0x59572f){if(_0x59572f){return _0xb20b77[_0xabdd('0x1e')](_0x24318a)[_0xabdd('0x20')](_0x59572f);}};}function respondWithFilteredResult(_0x356ae2,_0x5e51ef){return function(_0x289d6e){if(_0x289d6e){var _0x4b8642=typeof _0x5e51ef[_0xabdd('0x21')]==='undefined'&&typeof _0x5e51ef[_0xabdd('0x22')]==='undefined';var _0x5b05c1=_0x289d6e['count'];var _0x4e5ae6=_0x4b8642?0x0:_0x5e51ef[_0xabdd('0x21')];var _0x2a9c38=_0x4b8642?_0x289d6e[_0xabdd('0x23')]:_0x5e51ef['offset']+_0x5e51ef[_0xabdd('0x22')];var _0x2d510d;if(_0x2a9c38>=_0x5b05c1){_0x2a9c38=_0x5b05c1;_0x2d510d=0xc8;}else{_0x2d510d=0xce;}_0x356ae2[_0xabdd('0x1e')](_0x2d510d);return _0x356ae2[_0xabdd('0x24')](_0xabdd('0x25'),_0x4e5ae6+'-'+_0x2a9c38+'/'+_0x5b05c1)[_0xabdd('0x20')](_0x289d6e);}return null;};}function patchUpdates(_0x1ccc29){return function(_0x4088f4){try{jsonpatch[_0xabdd('0x26')](_0x4088f4,_0x1ccc29,!![]);}catch(_0x382278){return BPromise[_0xabdd('0x27')](_0x382278);}return _0x4088f4[_0xabdd('0x28')]();};}function saveUpdates(_0x99b953,_0x375a8f){return function(_0x550c0b){if(_0x550c0b){return _0x550c0b['update'](_0x99b953)[_0xabdd('0x29')](function(_0x495228){return _0x495228;});}return null;};}function removeEntity(_0x24e808,_0x50ad24){return function(_0x18eade){if(_0x18eade){return _0x18eade['destroy']()[_0xabdd('0x29')](function(){var _0x588080=_0x18eade['get']({'plain':!![]});var _0x5a0714=_0xabdd('0x2a');return db[_0xabdd('0x2b')]['destroy']({'where':{'type':_0x5a0714,'resourceId':_0x588080['id']}})[_0xabdd('0x29')](function(){return _0x18eade;});})[_0xabdd('0x29')](function(){_0x24e808[_0xabdd('0x1e')](0xcc)[_0xabdd('0x1f')]();});}};}function handleEntityNotFound(_0x44290b,_0x181d7e){return function(_0x273293){if(!_0x273293){_0x44290b[_0xabdd('0x2c')](0x194);}return _0x273293;};}function handleError(_0x72c49e,_0x1e9074){_0x1e9074=_0x1e9074||0x1f4;return function(_0x71757b){logger[_0xabdd('0x2d')](_0x71757b[_0xabdd('0x2e')]);if(_0x71757b[_0xabdd('0x2f')]){delete _0x71757b['name'];}_0x72c49e[_0xabdd('0x1e')](_0x1e9074)[_0xabdd('0x30')](_0x71757b);};}exports[_0xabdd('0x31')]=function(_0xf005f7,_0x23e57f){var _0x28c7d6={},_0x47afb5={},_0x451a46={'count':0x0,'rows':[]};var _0x2f827f=_['map'](db[_0xabdd('0x32')]['rawAttributes'],function(_0x4a1d6e){return{'name':_0x4a1d6e['fieldName'],'type':_0x4a1d6e[_0xabdd('0x33')]['key']};});_0x47afb5[_0xabdd('0x34')]=_['map'](_0x2f827f,_0xabdd('0x2f'));_0x47afb5[_0xabdd('0x35')]=_[_0xabdd('0x36')](_0xf005f7['query']);_0x47afb5[_0xabdd('0x37')]=_[_0xabdd('0x38')](_0x47afb5['model'],_0x47afb5['query']);_0x28c7d6['attributes']=_[_0xabdd('0x38')](_0x47afb5['model'],qs['fields'](_0xf005f7['query'][_0xabdd('0x39')]));_0x28c7d6['attributes']=_0x28c7d6[_0xabdd('0x3a')][_0xabdd('0x3b')]?_0x28c7d6[_0xabdd('0x3a')]:_0x47afb5[_0xabdd('0x34')];if(!_0xf005f7['query'][_0xabdd('0x3c')](_0xabdd('0x3d'))){_0x28c7d6[_0xabdd('0x22')]=qs[_0xabdd('0x22')](_0xf005f7['query']['limit']);_0x28c7d6['offset']=qs[_0xabdd('0x21')](_0xf005f7['query'][_0xabdd('0x21')]);}_0x28c7d6['order']=qs[_0xabdd('0x3e')](_0xf005f7[_0xabdd('0x35')]['sort']);_0x28c7d6[_0xabdd('0x3f')]=qs['filters'](_['pick'](_0xf005f7[_0xabdd('0x35')],_0x47afb5['filters']),_0x2f827f);if(_0xf005f7[_0xabdd('0x35')][_0xabdd('0x40')]){_0x28c7d6[_0xabdd('0x3f')]=_[_0xabdd('0x41')](_0x28c7d6[_0xabdd('0x3f')],{'$or':_[_0xabdd('0x42')](_0x2f827f,function(_0x2d6142){if(_0x2d6142[_0xabdd('0x33')]!==_0xabdd('0x43')){var _0x3154a0={};_0x3154a0[_0x2d6142[_0xabdd('0x2f')]]={'$like':'%'+_0xf005f7[_0xabdd('0x35')][_0xabdd('0x40')]+'%'};return _0x3154a0;}})});}_0x28c7d6=_[_0xabdd('0x41')]({},_0x28c7d6,_0xf005f7[_0xabdd('0x44')]);var _0x1bbee3={'where':_0x28c7d6['where']};return db[_0xabdd('0x32')][_0xabdd('0x23')](_0x1bbee3)[_0xabdd('0x29')](function(_0x546413){_0x451a46['count']=_0x546413;if(_0xf005f7[_0xabdd('0x35')][_0xabdd('0x45')]){_0x28c7d6[_0xabdd('0x46')]=[{'all':!![]}];}return db['Pause'][_0xabdd('0x47')](_0x28c7d6);})[_0xabdd('0x29')](function(_0x79265a){_0x451a46[_0xabdd('0x48')]=_0x79265a;return _0x451a46;})[_0xabdd('0x29')](respondWithFilteredResult(_0x23e57f,_0x28c7d6))[_0xabdd('0x49')](handleError(_0x23e57f,null));};exports[_0xabdd('0x4a')]=function(_0x50b9b9,_0x41cc2b){var _0x10a944={'raw':!![],'where':{'id':_0x50b9b9[_0xabdd('0x4b')]['id']}},_0x18e70c={};_0x18e70c['model']=_[_0xabdd('0x36')](db[_0xabdd('0x32')]['rawAttributes']);_0x18e70c['query']=_[_0xabdd('0x36')](_0x50b9b9['query']);_0x18e70c[_0xabdd('0x37')]=_['intersection'](_0x18e70c[_0xabdd('0x34')],_0x18e70c[_0xabdd('0x35')]);_0x10a944[_0xabdd('0x3a')]=_[_0xabdd('0x38')](_0x18e70c[_0xabdd('0x34')],qs['fields'](_0x50b9b9['query'][_0xabdd('0x39')]));_0x10a944['attributes']=_0x10a944['attributes']['length']?_0x10a944['attributes']:_0x18e70c[_0xabdd('0x34')];if(_0x50b9b9[_0xabdd('0x35')][_0xabdd('0x45')]){_0x10a944['include']=[{'all':!![]}];}_0x10a944=_[_0xabdd('0x41')]({},_0x10a944,_0x50b9b9[_0xabdd('0x44')]);return db['Pause'][_0xabdd('0x4c')](_0x10a944)[_0xabdd('0x29')](handleEntityNotFound(_0x41cc2b,null))[_0xabdd('0x29')](respondWithResult(_0x41cc2b,null))['catch'](handleError(_0x41cc2b,null));};exports[_0xabdd('0x4d')]=function(_0x10dfc6,_0x14fc89){return db[_0xabdd('0x32')][_0xabdd('0x4d')](_0x10dfc6[_0xabdd('0x4e')],{})[_0xabdd('0x29')](function(_0x88b0a9){var _0x23db60=_0x10dfc6[_0xabdd('0x4f')][_0xabdd('0x50')]({'plain':!![]});if(!_0x23db60)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x23db60['role']==='user'){var _0x524f7f=_0x88b0a9['get']({'plain':!![]});var _0x373b68='Pauses';return db['UserProfileSection']['find']({'where':{'name':_0x373b68,'userProfileId':_0x23db60['userProfileId']},'raw':!![]})[_0xabdd('0x29')](function(_0x53f686){if(_0x53f686&&_0x53f686[_0xabdd('0x51')]===0x0){return db[_0xabdd('0x2b')]['create']({'name':_0x524f7f[_0xabdd('0x2f')],'resourceId':_0x524f7f['id'],'type':_0x53f686['name'],'sectionId':_0x53f686['id']},{})[_0xabdd('0x29')](function(){return _0x88b0a9;});}else{return _0x88b0a9;}})[_0xabdd('0x49')](function(_0x3c18a4){logger['error'](_0xabdd('0x52'),_0x3c18a4);throw _0x3c18a4;});}return _0x88b0a9;})[_0xabdd('0x29')](respondWithResult(_0x14fc89,0xc9))[_0xabdd('0x49')](handleError(_0x14fc89,null));};exports[_0xabdd('0x53')]=function(_0x5e7300,_0x10d7ed){if(_0x5e7300[_0xabdd('0x4e')]['id']){delete _0x5e7300[_0xabdd('0x4e')]['id'];}return db[_0xabdd('0x32')][_0xabdd('0x4c')]({'where':{'id':_0x5e7300[_0xabdd('0x4b')]['id']}})[_0xabdd('0x29')](handleEntityNotFound(_0x10d7ed,null))['then'](saveUpdates(_0x5e7300[_0xabdd('0x4e')],null))[_0xabdd('0x29')](respondWithResult(_0x10d7ed,null))[_0xabdd('0x49')](handleError(_0x10d7ed,null));};exports[_0xabdd('0x54')]=function(_0x189330,_0x260fb0){return db['Pause'][_0xabdd('0x4c')]({'where':{'id':_0x189330[_0xabdd('0x4b')]['id']}})[_0xabdd('0x29')](handleEntityNotFound(_0x260fb0,null))[_0xabdd('0x29')](removeEntity(_0x260fb0,null))['catch'](handleError(_0x260fb0,null));};
\ No newline at end of file
+var _0xfee9=['map','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','options','Pause','include','findAll','rows','catch','show','params','keys','includeAll','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','sendStatus','json','offset','undefined','limit','count','status','set','apply','save','update','then','destroy','get','Pauses','UserProfileResource','error','stack','name','index'];(function(_0x18ab2a,_0x4debcd){var _0x16dcee=function(_0x10107a){while(--_0x10107a){_0x18ab2a['push'](_0x18ab2a['shift']());}};_0x16dcee(++_0x4debcd);}(_0xfee9,0x11d));var _0x9fee=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xfee9[_0x40a045];return _0x1a687c;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x9fee('0x0'));var jsonpatch=require(_0x9fee('0x1'));var rp=require(_0x9fee('0x2'));var moment=require(_0x9fee('0x3'));var BPromise=require(_0x9fee('0x4'));var Mustache=require(_0x9fee('0x5'));var util=require(_0x9fee('0x6'));var path=require(_0x9fee('0x7'));var sox=require(_0x9fee('0x8'));var csv=require(_0x9fee('0x9'));var ejs=require(_0x9fee('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x9fee('0xb'));var crypto=require(_0x9fee('0xc'));var jsforce=require(_0x9fee('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x9fee('0x9'));var querystring=require(_0x9fee('0xe'));var Papa=require(_0x9fee('0xf'));var Redis=require(_0x9fee('0x10'));var authService=require(_0x9fee('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x9fee('0x12'));var hardwareService=require(_0x9fee('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0x9fee('0x14'));var config=require(_0x9fee('0x15'));var licenseUtil=require(_0x9fee('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x56ca98,_0x4b1b3b){_0x4b1b3b=_0x4b1b3b||0xcc;return function(_0x4bef2a){if(_0x4bef2a){return _0x56ca98[_0x9fee('0x17')](_0x4b1b3b);}return _0x56ca98['status'](_0x4b1b3b)['end']();};}function respondWithResult(_0x5b8827,_0x180185){_0x180185=_0x180185||0xc8;return function(_0x3f98df){if(_0x3f98df){return _0x5b8827['status'](_0x180185)[_0x9fee('0x18')](_0x3f98df);}};}function respondWithFilteredResult(_0x439b4d,_0x1d3d0b){return function(_0x1ad3d4){if(_0x1ad3d4){var _0x42207a=typeof _0x1d3d0b[_0x9fee('0x19')]===_0x9fee('0x1a')&&typeof _0x1d3d0b[_0x9fee('0x1b')]===_0x9fee('0x1a');var _0x40aee4=_0x1ad3d4[_0x9fee('0x1c')];var _0x228bb9=_0x42207a?0x0:_0x1d3d0b[_0x9fee('0x19')];var _0x5489f4=_0x42207a?_0x1ad3d4[_0x9fee('0x1c')]:_0x1d3d0b['offset']+_0x1d3d0b['limit'];var _0x9b2a2;if(_0x5489f4>=_0x40aee4){_0x5489f4=_0x40aee4;_0x9b2a2=0xc8;}else{_0x9b2a2=0xce;}_0x439b4d[_0x9fee('0x1d')](_0x9b2a2);return _0x439b4d[_0x9fee('0x1e')]('Content-Range',_0x228bb9+'-'+_0x5489f4+'/'+_0x40aee4)[_0x9fee('0x18')](_0x1ad3d4);}return null;};}function patchUpdates(_0x52a9e8){return function(_0x53a955){try{jsonpatch[_0x9fee('0x1f')](_0x53a955,_0x52a9e8,!![]);}catch(_0x1c779f){return BPromise['reject'](_0x1c779f);}return _0x53a955[_0x9fee('0x20')]();};}function saveUpdates(_0xeb4322,_0x25bc95){return function(_0x4feb1d){if(_0x4feb1d){return _0x4feb1d[_0x9fee('0x21')](_0xeb4322)[_0x9fee('0x22')](function(_0x591def){return _0x591def;});}return null;};}function removeEntity(_0x519cd0,_0x40af98){return function(_0x2fe77e){if(_0x2fe77e){return _0x2fe77e[_0x9fee('0x23')]()[_0x9fee('0x22')](function(){var _0x7ada9c=_0x2fe77e[_0x9fee('0x24')]({'plain':!![]});var _0x38fa70=_0x9fee('0x25');return db[_0x9fee('0x26')][_0x9fee('0x23')]({'where':{'type':_0x38fa70,'resourceId':_0x7ada9c['id']}})[_0x9fee('0x22')](function(){return _0x2fe77e;});})[_0x9fee('0x22')](function(){_0x519cd0['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x680b7a,_0x22badf){return function(_0x27f6d9){if(!_0x27f6d9){_0x680b7a['sendStatus'](0x194);}return _0x27f6d9;};}function handleError(_0x561278,_0x53a3da){_0x53a3da=_0x53a3da||0x1f4;return function(_0x5de76b){logger[_0x9fee('0x27')](_0x5de76b[_0x9fee('0x28')]);if(_0x5de76b[_0x9fee('0x29')]){delete _0x5de76b[_0x9fee('0x29')];}_0x561278[_0x9fee('0x1d')](_0x53a3da)['send'](_0x5de76b);};}exports[_0x9fee('0x2a')]=function(_0x422591,_0x6442cd){var _0x2bda52={},_0x4bafff={},_0x5cce79={'count':0x0,'rows':[]};var _0x3fa272=_[_0x9fee('0x2b')](db['Pause'][_0x9fee('0x2c')],function(_0x2fd9e5){return{'name':_0x2fd9e5[_0x9fee('0x2d')],'type':_0x2fd9e5[_0x9fee('0x2e')][_0x9fee('0x2f')]};});_0x4bafff['model']=_[_0x9fee('0x2b')](_0x3fa272,_0x9fee('0x29'));_0x4bafff[_0x9fee('0x30')]=_['keys'](_0x422591[_0x9fee('0x30')]);_0x4bafff[_0x9fee('0x31')]=_[_0x9fee('0x32')](_0x4bafff[_0x9fee('0x33')],_0x4bafff[_0x9fee('0x30')]);_0x2bda52[_0x9fee('0x34')]=_[_0x9fee('0x32')](_0x4bafff[_0x9fee('0x33')],qs[_0x9fee('0x35')](_0x422591[_0x9fee('0x30')][_0x9fee('0x35')]));_0x2bda52[_0x9fee('0x34')]=_0x2bda52[_0x9fee('0x34')][_0x9fee('0x36')]?_0x2bda52[_0x9fee('0x34')]:_0x4bafff[_0x9fee('0x33')];if(!_0x422591['query']['hasOwnProperty'](_0x9fee('0x37'))){_0x2bda52[_0x9fee('0x1b')]=qs[_0x9fee('0x1b')](_0x422591['query'][_0x9fee('0x1b')]);_0x2bda52[_0x9fee('0x19')]=qs[_0x9fee('0x19')](_0x422591['query'][_0x9fee('0x19')]);}_0x2bda52[_0x9fee('0x38')]=qs[_0x9fee('0x39')](_0x422591[_0x9fee('0x30')][_0x9fee('0x39')]);_0x2bda52[_0x9fee('0x3a')]=qs['filters'](_[_0x9fee('0x3b')](_0x422591[_0x9fee('0x30')],_0x4bafff[_0x9fee('0x31')]),_0x3fa272);if(_0x422591[_0x9fee('0x30')][_0x9fee('0x3c')]){_0x2bda52[_0x9fee('0x3a')]=_[_0x9fee('0x3d')](_0x2bda52[_0x9fee('0x3a')],{'$or':_[_0x9fee('0x2b')](_0x3fa272,function(_0x3f723d){if(_0x3f723d[_0x9fee('0x2e')]!=='VIRTUAL'){var _0x5129c4={};_0x5129c4[_0x3f723d[_0x9fee('0x29')]]={'$like':'%'+_0x422591[_0x9fee('0x30')][_0x9fee('0x3c')]+'%'};return _0x5129c4;}})});}_0x2bda52=_['merge']({},_0x2bda52,_0x422591[_0x9fee('0x3e')]);var _0x25c79c={'where':_0x2bda52['where']};return db[_0x9fee('0x3f')][_0x9fee('0x1c')](_0x25c79c)[_0x9fee('0x22')](function(_0x19f67f){_0x5cce79[_0x9fee('0x1c')]=_0x19f67f;if(_0x422591[_0x9fee('0x30')]['includeAll']){_0x2bda52[_0x9fee('0x40')]=[{'all':!![]}];}return db[_0x9fee('0x3f')][_0x9fee('0x41')](_0x2bda52);})['then'](function(_0x165f39){_0x5cce79[_0x9fee('0x42')]=_0x165f39;return _0x5cce79;})['then'](respondWithFilteredResult(_0x6442cd,_0x2bda52))[_0x9fee('0x43')](handleError(_0x6442cd,null));};exports[_0x9fee('0x44')]=function(_0x4fdf59,_0x41910a){var _0x2b60f5={'raw':!![],'where':{'id':_0x4fdf59[_0x9fee('0x45')]['id']}},_0x21fdd0={};_0x21fdd0['model']=_[_0x9fee('0x46')](db[_0x9fee('0x3f')][_0x9fee('0x2c')]);_0x21fdd0[_0x9fee('0x30')]=_['keys'](_0x4fdf59[_0x9fee('0x30')]);_0x21fdd0[_0x9fee('0x31')]=_[_0x9fee('0x32')](_0x21fdd0[_0x9fee('0x33')],_0x21fdd0[_0x9fee('0x30')]);_0x2b60f5[_0x9fee('0x34')]=_[_0x9fee('0x32')](_0x21fdd0[_0x9fee('0x33')],qs[_0x9fee('0x35')](_0x4fdf59[_0x9fee('0x30')][_0x9fee('0x35')]));_0x2b60f5[_0x9fee('0x34')]=_0x2b60f5[_0x9fee('0x34')][_0x9fee('0x36')]?_0x2b60f5[_0x9fee('0x34')]:_0x21fdd0[_0x9fee('0x33')];if(_0x4fdf59['query'][_0x9fee('0x47')]){_0x2b60f5[_0x9fee('0x40')]=[{'all':!![]}];}_0x2b60f5=_[_0x9fee('0x3d')]({},_0x2b60f5,_0x4fdf59[_0x9fee('0x3e')]);return db['Pause']['find'](_0x2b60f5)['then'](handleEntityNotFound(_0x41910a,null))[_0x9fee('0x22')](respondWithResult(_0x41910a,null))['catch'](handleError(_0x41910a,null));};exports[_0x9fee('0x48')]=function(_0x3dc81f,_0x2eb5f7){return db[_0x9fee('0x3f')]['create'](_0x3dc81f[_0x9fee('0x49')],{})[_0x9fee('0x22')](function(_0xbd2170){var _0x3d5eaa=_0x3dc81f[_0x9fee('0x4a')][_0x9fee('0x24')]({'plain':!![]});if(!_0x3d5eaa)throw new Error(_0x9fee('0x4b'));if(_0x3d5eaa[_0x9fee('0x4c')]==='user'){var _0x4aa071=_0xbd2170['get']({'plain':!![]});var _0xad9d61=_0x9fee('0x25');return db[_0x9fee('0x4d')][_0x9fee('0x4e')]({'where':{'name':_0xad9d61,'userProfileId':_0x3d5eaa[_0x9fee('0x4f')]},'raw':!![]})[_0x9fee('0x22')](function(_0x42c3b2){if(_0x42c3b2&&_0x42c3b2[_0x9fee('0x50')]===0x0){return db[_0x9fee('0x26')]['create']({'name':_0x4aa071[_0x9fee('0x29')],'resourceId':_0x4aa071['id'],'type':_0x42c3b2[_0x9fee('0x29')],'sectionId':_0x42c3b2['id']},{})['then'](function(){return _0xbd2170;});}else{return _0xbd2170;}})['catch'](function(_0x242ba4){logger[_0x9fee('0x27')](_0x9fee('0x51'),_0x242ba4);throw _0x242ba4;});}return _0xbd2170;})[_0x9fee('0x22')](respondWithResult(_0x2eb5f7,0xc9))[_0x9fee('0x43')](handleError(_0x2eb5f7,null));};exports['update']=function(_0x3556e3,_0xe05d0e){if(_0x3556e3['body']['id']){delete _0x3556e3[_0x9fee('0x49')]['id'];}return db[_0x9fee('0x3f')]['find']({'where':{'id':_0x3556e3[_0x9fee('0x45')]['id']}})['then'](handleEntityNotFound(_0xe05d0e,null))[_0x9fee('0x22')](saveUpdates(_0x3556e3[_0x9fee('0x49')],null))['then'](respondWithResult(_0xe05d0e,null))[_0x9fee('0x43')](handleError(_0xe05d0e,null));};exports[_0x9fee('0x23')]=function(_0x121edf,_0xe38786){return db[_0x9fee('0x3f')][_0x9fee('0x4e')]({'where':{'id':_0x121edf['params']['id']}})['then'](handleEntityNotFound(_0xe38786,null))[_0x9fee('0x22')](removeEntity(_0xe38786,null))[_0x9fee('0x43')](handleError(_0xe38786,null));};
\ No newline at end of file
index 1dd4c89..704db42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf494=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./pause.attributes','exports','define','lodash','util'];(function(_0x10d688,_0x2fe87e){var _0x42aaa5=function(_0x521f7b){while(--_0x521f7b){_0x10d688['push'](_0x10d688['shift']());}};_0x42aaa5(++_0x2fe87e);}(_0xf494,0x1c6));var _0x4f49=function(_0x2afbc1,_0x2737c6){_0x2afbc1=_0x2afbc1-0x0;var _0x51bffc=_0xf494[_0x2afbc1];return _0x51bffc;};'use strict';var _=require(_0x4f49('0x0'));var util=require(_0x4f49('0x1'));var logger=require(_0x4f49('0x2'))('api');var moment=require(_0x4f49('0x3'));var BPromise=require(_0x4f49('0x4'));var rp=require(_0x4f49('0x5'));var fs=require('fs');var path=require(_0x4f49('0x6'));var rimraf=require(_0x4f49('0x7'));var config=require(_0x4f49('0x8'));var attributes=require(_0x4f49('0x9'));module[_0x4f49('0xa')]=function(_0xc5e778,_0x413530){return _0xc5e778[_0x4f49('0xb')]('Pause',attributes,{'tableName':'tools_pauses','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7217=['../../config/environment','./pause.attributes','exports','define','Pause','tools_pauses','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x19b84f,_0x48765e){var _0x18067b=function(_0x1c69aa){while(--_0x1c69aa){_0x19b84f['push'](_0x19b84f['shift']());}};_0x18067b(++_0x48765e);}(_0x7217,0x19e));var _0x7721=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0x7217[_0x4154a6];return _0x3b2786;};'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 41117b7..609a342 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(_0x39d3b8,_0x4d0a66){var _0x42d8c4=function(_0x2108cd){while(--_0x2108cd){_0x39d3b8['push'](_0x39d3b8['shift']());}};_0x42d8c4(++_0x4d0a66);}(_0x7a54,0x106));var _0x47a5=function(_0x282808,_0x25c83e){_0x282808=_0x282808-0x0;var _0x286c98=_0x7a54[_0x282808];return _0x286c98;};'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(_0x3d69ea,_0x53d86b){var _0x4dfb17=function(_0x57017d){while(--_0x57017d){_0x3d69ea['push'](_0x3d69ea['shift']());}};_0x4dfb17(++_0x53d86b);}(_0x7a54,0x106));var _0x47a5=function(_0x479e34,_0x246ea8){_0x479e34=_0x479e34-0x0;var _0xea1c47=_0x7a54[_0x479e34];return _0xea1c47;};'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 c5781b1..9d32d1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14d=['isAuthenticated','index','webhookGet','/:id','show','/:id/download','diskStorage','join','root','server/files/plugins','originalname','replace','format','%s-%s%s','extname','now','post','single','file','upload','/webhook','webhookPost','put','update','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./plugin.controller','get'];(function(_0x3e5a94,_0x280c20){var _0x431dc5=function(_0x494918){while(--_0x494918){_0x3e5a94['push'](_0x3e5a94['shift']());}};_0x431dc5(++_0x280c20);}(_0xe14d,0x1ee));var _0xde14=function(_0x4fde08,_0x463a36){_0x4fde08=_0x4fde08-0x0;var _0x12e725=_0xe14d[_0x4fde08];return _0x12e725;};'use strict';var multer=require(_0xde14('0x0'));var util=require(_0xde14('0x1'));var path=require(_0xde14('0x2'));var timeout=require(_0xde14('0x3'));var express=require('express');var router=express[_0xde14('0x4')]();var fs_extra=require(_0xde14('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xde14('0x6'));var config=require(_0xde14('0x7'));var controller=require(_0xde14('0x8'));router[_0xde14('0x9')]('/',auth[_0xde14('0xa')](),controller[_0xde14('0xb')]);router['get']('/webhook',controller[_0xde14('0xc')]);router[_0xde14('0x9')](_0xde14('0xd'),auth[_0xde14('0xa')](),controller[_0xde14('0xe')]);router[_0xde14('0x9')](_0xde14('0xf'),auth[_0xde14('0xa')](),controller['download']);var upload=multer({'storage':multer[_0xde14('0x10')]({'destination':function(_0xe785fb,_0x417269,_0x4357c7){_0x4357c7(null,path[_0xde14('0x11')](config[_0xde14('0x12')],_0xde14('0x13')));},'filename':function(_0x3d5a29,_0x34e28f,_0x29e3ca){_0x34e28f[_0xde14('0x14')]=_0x34e28f[_0xde14('0x14')][_0xde14('0x15')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x29e3ca(null,util[_0xde14('0x16')](_0xde14('0x17'),path['basename'](_0x34e28f['originalname'],path[_0xde14('0x18')](_0x34e28f[_0xde14('0x14')])),Date[_0xde14('0x19')](),path['extname'](_0x34e28f[_0xde14('0x14')])));}})});router[_0xde14('0x1a')]('/',upload[_0xde14('0x1b')](_0xde14('0x1c')),controller[_0xde14('0x1d')]);router[_0xde14('0x1a')](_0xde14('0x1e'),controller[_0xde14('0x1f')]);router[_0xde14('0x20')](_0xde14('0xd'),auth['isAuthenticated'](),controller[_0xde14('0x21')]);router[_0xde14('0x22')](_0xde14('0xd'),auth[_0xde14('0xa')](),controller['delete']);module[_0xde14('0x23')]=router;
\ No newline at end of file
+var _0x303a=['show','/:id/download','download','join','server/files/plugins','originalname','replace','format','%s-%s%s','basename','extname','now','post','single','file','upload','webhookPost','/:id','update','delete','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./plugin.controller','get','isAuthenticated','index','/webhook'];(function(_0x533310,_0x1bad41){var _0x4f3d61=function(_0x58c795){while(--_0x58c795){_0x533310['push'](_0x533310['shift']());}};_0x4f3d61(++_0x1bad41);}(_0x303a,0x1a0));var _0xa303=function(_0x47bbd5,_0xfab6bc){_0x47bbd5=_0x47bbd5-0x0;var _0xea2a13=_0x303a[_0x47bbd5];return _0xea2a13;};'use strict';var multer=require(_0xa303('0x0'));var util=require('util');var path=require(_0xa303('0x1'));var timeout=require(_0xa303('0x2'));var express=require(_0xa303('0x3'));var router=express[_0xa303('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xa303('0x5'));var interaction=require(_0xa303('0x6'));var config=require(_0xa303('0x7'));var controller=require(_0xa303('0x8'));router[_0xa303('0x9')]('/',auth[_0xa303('0xa')](),controller[_0xa303('0xb')]);router[_0xa303('0x9')](_0xa303('0xc'),controller['webhookGet']);router['get']('/:id',auth[_0xa303('0xa')](),controller[_0xa303('0xd')]);router['get'](_0xa303('0xe'),auth['isAuthenticated'](),controller[_0xa303('0xf')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x29cd60,_0x17dfcd,_0x382cfd){_0x382cfd(null,path[_0xa303('0x10')](config['root'],_0xa303('0x11')));},'filename':function(_0x4c0169,_0xf5df1e,_0x43a054){_0xf5df1e[_0xa303('0x12')]=_0xf5df1e['originalname'][_0xa303('0x13')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x43a054(null,util[_0xa303('0x14')](_0xa303('0x15'),path[_0xa303('0x16')](_0xf5df1e[_0xa303('0x12')],path[_0xa303('0x17')](_0xf5df1e[_0xa303('0x12')])),Date[_0xa303('0x18')](),path['extname'](_0xf5df1e[_0xa303('0x12')])));}})});router[_0xa303('0x19')]('/',upload[_0xa303('0x1a')](_0xa303('0x1b')),controller[_0xa303('0x1c')]);router[_0xa303('0x19')]('/webhook',controller[_0xa303('0x1d')]);router['put'](_0xa303('0x1e'),auth['isAuthenticated'](),controller[_0xa303('0x1f')]);router['delete'](_0xa303('0x1e'),auth[_0xa303('0xa')](),controller[_0xa303('0x20')]);module['exports']=router;
\ No newline at end of file
index f1dc2e1..01d8331 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2060=['always','never','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','exports','TEXT','STRING','BOOLEAN','Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','adminOnly','agentOnly'];(function(_0x4e90e3,_0x570a1d){var _0x295e5b=function(_0x754043){while(--_0x754043){_0x4e90e3['push'](_0x4e90e3['shift']());}};_0x295e5b(++_0x570a1d);}(_0x2060,0xa3));var _0x0206=function(_0x141b89,_0x3fae3b){_0x141b89=_0x141b89-0x0;var _0xd360de=_0x2060[_0x141b89];return _0xd360de;};'use strict';var Sequelize=require('sequelize');module[_0x0206('0x0')]={'name':{'type':Sequelize['STRING']},'type':{'type':Sequelize['ENUM']('html','script')},'description':{'type':Sequelize[_0x0206('0x1')]},'version':{'type':Sequelize[_0x0206('0x1')]},'path':{'type':Sequelize[_0x0206('0x2')],'comment':'The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.'},'active':{'type':Sequelize[_0x0206('0x3')],'defaultValue':0x0,'comment':_0x0206('0x4')},'sidebar':{'type':Sequelize['ENUM'](_0x0206('0x5'),_0x0206('0x6'),_0x0206('0x7'),_0x0206('0x8')),'defaultValue':'always','comment':_0x0206('0x9')},'icon':{'type':Sequelize[_0x0206('0x2')]},'adminUrl':{'type':Sequelize['STRING']},'agentUrl':{'type':Sequelize[_0x0206('0x2')]},'scriptName':{'type':Sequelize[_0x0206('0x2')]},'scriptPath':{'type':Sequelize[_0x0206('0x2')]}};
\ No newline at end of file
+var _0x3f4d=['Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','agentOnly','never','always','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','sequelize','exports','STRING','ENUM','html','TEXT','The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.','BOOLEAN'];(function(_0x264b9b,_0xa1181e){var _0x4c7a0e=function(_0x4b77a0){while(--_0x4b77a0){_0x264b9b['push'](_0x264b9b['shift']());}};_0x4c7a0e(++_0xa1181e);}(_0x3f4d,0x17e));var _0xd3f4=function(_0x575818,_0xa55f3f){_0x575818=_0x575818-0x0;var _0x13bd05=_0x3f4d[_0x575818];return _0x13bd05;};'use strict';var Sequelize=require(_0xd3f4('0x0'));module[_0xd3f4('0x1')]={'name':{'type':Sequelize[_0xd3f4('0x2')]},'type':{'type':Sequelize[_0xd3f4('0x3')](_0xd3f4('0x4'),'script')},'description':{'type':Sequelize[_0xd3f4('0x5')]},'version':{'type':Sequelize['TEXT']},'path':{'type':Sequelize['STRING'],'comment':_0xd3f4('0x6')},'active':{'type':Sequelize[_0xd3f4('0x7')],'defaultValue':0x0,'comment':_0xd3f4('0x8')},'sidebar':{'type':Sequelize[_0xd3f4('0x3')]('adminOnly',_0xd3f4('0x9'),'always',_0xd3f4('0xa')),'defaultValue':_0xd3f4('0xb'),'comment':_0xd3f4('0xc')},'icon':{'type':Sequelize[_0xd3f4('0x2')]},'adminUrl':{'type':Sequelize[_0xd3f4('0x2')]},'agentUrl':{'type':Sequelize[_0xd3f4('0x2')]},'scriptName':{'type':Sequelize[_0xd3f4('0x2')]},'scriptPath':{'type':Sequelize[_0xd3f4('0x2')]}};
\ No newline at end of file
index 0cb1982..6112aae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a1b=['Warning:\x20admin\x20view\x20not\x20specified','test','Warning:\x20agent\x20view\x20not\x20specified','create','body','role','user','UserProfileSection','Plugins','autoAssociation','Zip\x20archive\x20removed','delete','resolve','port','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','http://localhost:','encoding','method','%s%s','headers','content-length','content-type','endsWith','statusCode','webhookPost','\x27PATH\x27\x20parameter\x20not\x20specified','eml-format','zip-dir','moment','util','path','to-csv','ejs','fs-extra','crypto','desk.js','querystring','extract-zip','rimraf','archiver','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','UserProfileResource','error','stack','send','index','map','Plugin','rawAttributes','fieldName','type','key','model','name','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','where','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','download','find','root','server/files/plugins','format','%s.zip','basename','createWriteStream','zip','warning','Sequelize','Error','glob','**/*','join','dirname','node_modules/**/*','attachments/**/*','finalize','close','existsSync','unlinkSync','Download\x20completed','info','Temporary\x20file\x20removed','upload','file','filename','Plugin\x20upload\x20filepath:\x20%s','chmodSync','0777','readdirSync','Invalid\x20plugin\x20structure','lstatSync','isFile','isDirectory','some','manifest.json','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','agent','scriptName','Invalid\x20manifest:\x20script\x20name\x20missing','scriptPath','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','sidebar','icon','icon-apps','version','plugins'];(function(_0xa6cc5c,_0x239c99){var _0x44803d=function(_0x515b6e){while(--_0x515b6e){_0xa6cc5c['push'](_0xa6cc5c['shift']());}};_0x44803d(++_0x239c99);}(_0x4a1b,0x15f));var _0xb4a1=function(_0x5b47d9,_0x1327ce){_0x5b47d9=_0x5b47d9-0x0;var _0x4151f0=_0x4a1b[_0x5b47d9];return _0x4151f0;};'use strict';var emlformat=require(_0xb4a1('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb4a1('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xb4a1('0x2'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xb4a1('0x3'));var path=require(_0xb4a1('0x4'));var sox=require('sox');var csv=require(_0xb4a1('0x5'));var ejs=require(_0xb4a1('0x6'));var fs=require('fs');var fs_extra=require(_0xb4a1('0x7'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xb4a1('0x8'));var jsforce=require('jsforce');var deskjs=require(_0xb4a1('0x9'));var toCsv=require('to-csv');var querystring=require(_0xb4a1('0xa'));var Papa=require('papaparse');var extract=require(_0xb4a1('0xb'));var rimraf=require(_0xb4a1('0xc'));var archiver=require(_0xb4a1('0xd'));var Redis=require(_0xb4a1('0xe'));var authService=require(_0xb4a1('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb4a1('0x10'));var logger=require(_0xb4a1('0x11'))('api');var utils=require(_0xb4a1('0x12'));var config=require(_0xb4a1('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0xb4a1('0x14'))['db'];config[_0xb4a1('0x15')]=_[_0xb4a1('0x16')](config[_0xb4a1('0x15')],{'host':_0xb4a1('0x17'),'port':0x18eb});var socket=require(_0xb4a1('0x18'))(new Redis(config[_0xb4a1('0x15')]));require('./plugin.socket')[_0xb4a1('0x19')](socket);function respondWithStatusCode(_0x387e41,_0x17958c){_0x17958c=_0x17958c||0xcc;return function(_0x2eae44){if(_0x2eae44){return _0x387e41[_0xb4a1('0x1a')](_0x17958c);}return _0x387e41[_0xb4a1('0x1b')](_0x17958c)[_0xb4a1('0x1c')]();};}function respondWithResult(_0x15686b,_0x4175de){_0x4175de=_0x4175de||0xc8;return function(_0x4da78b){if(_0x4da78b){return _0x15686b[_0xb4a1('0x1b')](_0x4175de)[_0xb4a1('0x1d')](_0x4da78b);}};}function respondWithFilteredResult(_0x3aa85e,_0x5a96f5){return function(_0x15e795){if(_0x15e795){var _0x46d051=typeof _0x5a96f5[_0xb4a1('0x1e')]===_0xb4a1('0x1f')&&typeof _0x5a96f5[_0xb4a1('0x20')]==='undefined';var _0x33b10f=_0x15e795[_0xb4a1('0x21')];var _0x561fc8=_0x46d051?0x0:_0x5a96f5[_0xb4a1('0x1e')];var _0x4d4a3a=_0x46d051?_0x15e795['count']:_0x5a96f5[_0xb4a1('0x1e')]+_0x5a96f5['limit'];var _0x39488b;if(_0x4d4a3a>=_0x33b10f){_0x4d4a3a=_0x33b10f;_0x39488b=0xc8;}else{_0x39488b=0xce;}_0x3aa85e[_0xb4a1('0x1b')](_0x39488b);return _0x3aa85e[_0xb4a1('0x22')](_0xb4a1('0x23'),_0x561fc8+'-'+_0x4d4a3a+'/'+_0x33b10f)['json'](_0x15e795);}return null;};}function patchUpdates(_0x4beba6){return function(_0x44f7c2){try{jsonpatch[_0xb4a1('0x24')](_0x44f7c2,_0x4beba6,!![]);}catch(_0x187ab8){return BPromise[_0xb4a1('0x25')](_0x187ab8);}return _0x44f7c2[_0xb4a1('0x26')]();};}function saveUpdates(_0x40369c,_0x186144){return function(_0x30cf0c){if(_0x30cf0c){return _0x30cf0c[_0xb4a1('0x27')](_0x40369c)[_0xb4a1('0x28')](function(_0x45e39c){return _0x45e39c;});}return null;};}function removeEntity(_0x3ef026,_0x5fb628){return function(_0x248559){if(_0x248559){return _0x248559[_0xb4a1('0x29')]()[_0xb4a1('0x28')](function(){var _0x473db8=_0x248559[_0xb4a1('0x2a')]({'plain':!![]});var _0x299a12='Plugins';return db[_0xb4a1('0x2b')][_0xb4a1('0x29')]({'where':{'type':_0x299a12,'resourceId':_0x473db8['id']}})[_0xb4a1('0x28')](function(){return _0x248559;});})[_0xb4a1('0x28')](function(){_0x3ef026[_0xb4a1('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5001de,_0x42178e){return function(_0x2ff8f2){if(!_0x2ff8f2){_0x5001de[_0xb4a1('0x1a')](0x194);}return _0x2ff8f2;};}function handleError(_0x230b63,_0x1b8b77){_0x1b8b77=_0x1b8b77||0x1f4;return function(_0x1298b8){logger[_0xb4a1('0x2c')](_0x1298b8[_0xb4a1('0x2d')]);if(_0x1298b8['name']){delete _0x1298b8['name'];}_0x230b63[_0xb4a1('0x1b')](_0x1b8b77)[_0xb4a1('0x2e')](_0x1298b8);};}exports[_0xb4a1('0x2f')]=function(_0x26907f,_0x1b0b58){var _0x1ce014={},_0x5aaef9={},_0x5d2c8e={'count':0x0,'rows':[]};var _0x30ecf0=_[_0xb4a1('0x30')](db[_0xb4a1('0x31')][_0xb4a1('0x32')],function(_0x152a7d){return{'name':_0x152a7d[_0xb4a1('0x33')],'type':_0x152a7d[_0xb4a1('0x34')][_0xb4a1('0x35')]};});_0x5aaef9[_0xb4a1('0x36')]=_[_0xb4a1('0x30')](_0x30ecf0,_0xb4a1('0x37'));_0x5aaef9[_0xb4a1('0x38')]=_[_0xb4a1('0x39')](_0x26907f[_0xb4a1('0x38')]);_0x5aaef9[_0xb4a1('0x3a')]=_[_0xb4a1('0x3b')](_0x5aaef9[_0xb4a1('0x36')],_0x5aaef9['query']);_0x1ce014[_0xb4a1('0x3c')]=_[_0xb4a1('0x3b')](_0x5aaef9['model'],qs['fields'](_0x26907f[_0xb4a1('0x38')][_0xb4a1('0x3d')]));_0x1ce014[_0xb4a1('0x3c')]=_0x1ce014[_0xb4a1('0x3c')][_0xb4a1('0x3e')]?_0x1ce014[_0xb4a1('0x3c')]:_0x5aaef9[_0xb4a1('0x36')];if(!_0x26907f[_0xb4a1('0x38')]['hasOwnProperty'](_0xb4a1('0x3f'))){_0x1ce014[_0xb4a1('0x20')]=qs[_0xb4a1('0x20')](_0x26907f[_0xb4a1('0x38')][_0xb4a1('0x20')]);_0x1ce014[_0xb4a1('0x1e')]=qs['offset'](_0x26907f[_0xb4a1('0x38')][_0xb4a1('0x1e')]);}_0x1ce014['order']=qs['sort'](_0x26907f['query'][_0xb4a1('0x40')]);_0x1ce014[_0xb4a1('0x41')]=qs[_0xb4a1('0x3a')](_['pick'](_0x26907f[_0xb4a1('0x38')],_0x5aaef9[_0xb4a1('0x3a')]),_0x30ecf0);if(_0x26907f['query'][_0xb4a1('0x42')]){_0x1ce014[_0xb4a1('0x41')]=_['merge'](_0x1ce014[_0xb4a1('0x41')],{'$or':_[_0xb4a1('0x30')](_0x30ecf0,function(_0xe77880){if(_0xe77880[_0xb4a1('0x34')]!==_0xb4a1('0x43')){var _0x4acdf8={};_0x4acdf8[_0xe77880[_0xb4a1('0x37')]]={'$like':'%'+_0x26907f[_0xb4a1('0x38')][_0xb4a1('0x42')]+'%'};return _0x4acdf8;}})});}_0x1ce014=_[_0xb4a1('0x44')]({},_0x1ce014,_0x26907f[_0xb4a1('0x45')]);var _0x29a12a={'where':_0x1ce014['where']};return db['Plugin'][_0xb4a1('0x21')](_0x29a12a)[_0xb4a1('0x28')](function(_0x46088c){_0x5d2c8e[_0xb4a1('0x21')]=_0x46088c;if(_0x26907f[_0xb4a1('0x38')][_0xb4a1('0x46')]){_0x1ce014[_0xb4a1('0x47')]=[{'all':!![]}];}return db[_0xb4a1('0x31')][_0xb4a1('0x48')](_0x1ce014);})[_0xb4a1('0x28')](function(_0x5dcf4c){_0x5d2c8e[_0xb4a1('0x49')]=_0x5dcf4c;return _0x5d2c8e;})[_0xb4a1('0x28')](respondWithFilteredResult(_0x1b0b58,_0x1ce014))[_0xb4a1('0x4a')](handleError(_0x1b0b58,null));};exports[_0xb4a1('0x4b')]=function(_0x5e6029,_0x7341f6){var _0x1f28aa={'raw':!![],'where':{'id':_0x5e6029[_0xb4a1('0x4c')]['id']}},_0x1d66f5={};_0x1d66f5['model']=_[_0xb4a1('0x39')](db[_0xb4a1('0x31')][_0xb4a1('0x32')]);_0x1d66f5['query']=_[_0xb4a1('0x39')](_0x5e6029['query']);_0x1d66f5['filters']=_[_0xb4a1('0x3b')](_0x1d66f5['model'],_0x1d66f5[_0xb4a1('0x38')]);_0x1f28aa[_0xb4a1('0x3c')]=_[_0xb4a1('0x3b')](_0x1d66f5['model'],qs[_0xb4a1('0x3d')](_0x5e6029['query'][_0xb4a1('0x3d')]));_0x1f28aa[_0xb4a1('0x3c')]=_0x1f28aa[_0xb4a1('0x3c')][_0xb4a1('0x3e')]?_0x1f28aa[_0xb4a1('0x3c')]:_0x1d66f5[_0xb4a1('0x36')];if(_0x5e6029[_0xb4a1('0x38')][_0xb4a1('0x46')]){_0x1f28aa[_0xb4a1('0x47')]=[{'all':!![]}];}_0x1f28aa=_[_0xb4a1('0x44')]({},_0x1f28aa,_0x5e6029['options']);return db['Plugin']['find'](_0x1f28aa)[_0xb4a1('0x28')](handleEntityNotFound(_0x7341f6,null))[_0xb4a1('0x28')](respondWithResult(_0x7341f6,null))['catch'](handleError(_0x7341f6,null));};exports[_0xb4a1('0x4d')]=function(_0x39fcc5,_0x4ef277,_0x40248a){return db[_0xb4a1('0x31')][_0xb4a1('0x4e')]({'where':{'id':_0x39fcc5[_0xb4a1('0x4c')]['id']},'attributes':['name',_0xb4a1('0x4')],'raw':!![]})[_0xb4a1('0x28')](handleEntityNotFound(_0x4ef277,null))[_0xb4a1('0x28')](function(_0x59f132){if(_0x59f132){var _0x8b0041=path['join'](config[_0xb4a1('0x4f')],_0xb4a1('0x50'),util[_0xb4a1('0x51')](_0xb4a1('0x52'),path[_0xb4a1('0x53')](_0x59f132[_0xb4a1('0x4')])));var _0x3c604f=fs[_0xb4a1('0x54')](_0x8b0041);var _0x45631f=archiver(_0xb4a1('0x55'),{'zlib':{'level':0x9}});_0x45631f['on'](_0xb4a1('0x56'),function(_0x48e555){if(_0x48e555['code']==='ENOENT'){logger[_0xb4a1('0x2c')](_0x48e555);}else{throw new db[(_0xb4a1('0x57'))][(_0xb4a1('0x58'))]('Error\x20while\x20generating\x20the\x20zip\x20archive');}});_0x45631f['on']('error',function(_0x441dca){throw new db[(_0xb4a1('0x57'))][(_0xb4a1('0x58'))]('Error\x20while\x20generating\x20the\x20zip\x20archive');});_0x45631f['pipe'](_0x3c604f);_0x45631f[_0xb4a1('0x59')](_0xb4a1('0x5a'),{'cwd':path[_0xb4a1('0x5b')](config['root'],'server/files/plugins',path[_0xb4a1('0x5c')](_0x59f132[_0xb4a1('0x4')])),'ignore':[path[_0xb4a1('0x5b')](path['basename'](_0x59f132[_0xb4a1('0x4')]),_0xb4a1('0x5d')),path[_0xb4a1('0x5b')](path[_0xb4a1('0x53')](_0x59f132['path']),_0xb4a1('0x5e'))],'nodir':!![]})[_0xb4a1('0x5f')]();_0x3c604f['on'](_0xb4a1('0x60'),function(){if(!fs[_0xb4a1('0x61')](_0x8b0041)){throw new db[(_0xb4a1('0x57'))]['Error']('Plugin\x20not\x20found');}return _0x4ef277[_0xb4a1('0x4d')](_0x8b0041,util[_0xb4a1('0x51')](_0xb4a1('0x52'),path['basename'](_0x59f132['path'])),function(_0x4c47cc){if(_0x4c47cc){throw new db[(_0xb4a1('0x57'))][(_0xb4a1('0x58'))]('Error\x20while\x20downloading\x20the\x20plugin');}fs[_0xb4a1('0x62')](_0x8b0041);logger['info'](_0xb4a1('0x63'));logger[_0xb4a1('0x64')](_0xb4a1('0x65'));});});}return null;})[_0xb4a1('0x4a')](handleError(_0x4ef277,null));};exports[_0xb4a1('0x66')]=function(_0x453804,_0xdc531e,_0x2be7af){var _0x15ac8e=path[_0xb4a1('0x53')](_0x453804[_0xb4a1('0x67')][_0xb4a1('0x68')],path['extname'](_0x453804[_0xb4a1('0x67')][_0xb4a1('0x68')]));var _0x4c8ba3=path[_0xb4a1('0x5b')](config[_0xb4a1('0x4f')],_0xb4a1('0x50'),_0x453804[_0xb4a1('0x67')][_0xb4a1('0x68')]);var _0x5c5d6f=path[_0xb4a1('0x5b')](config[_0xb4a1('0x4f')],_0xb4a1('0x50'),_0x15ac8e);logger[_0xb4a1('0x64')](_0xb4a1('0x69'),_0x4c8ba3);logger[_0xb4a1('0x64')]('Plugin\x20upload\x20destination:\x20%s',_0x5c5d6f);try{fs[_0xb4a1('0x6a')](_0x4c8ba3,parseInt(_0xb4a1('0x6b'),0x8));extract(_0x4c8ba3,{'dir':_0x5c5d6f},function(_0x44839d){if(_0x44839d){logger[_0xb4a1('0x2c')](_0x44839d);handleError(_0x44839d,!![]);};var _0x59acd2=fs[_0xb4a1('0x6c')](_0x5c5d6f);if(_0x59acd2[_0xb4a1('0x3e')]>0x1){removeReferences(_0x4c8ba3,_0x5c5d6f);logger['error'](_0xb4a1('0x6d'));return _0x2be7af(new Error(_0xb4a1('0x6d')));}var _0x2af1bd=fs[_0xb4a1('0x6e')](path[_0xb4a1('0x5b')](_0x5c5d6f,_0x59acd2[0x0]));if(_0x2af1bd[_0xb4a1('0x6f')]()){removeReferences(_0x4c8ba3,_0x5c5d6f);logger[_0xb4a1('0x2c')](_0xb4a1('0x6d'));return _0x2be7af(new Error(_0xb4a1('0x6d')));}if(_0x2af1bd[_0xb4a1('0x70')]()){var _0x17c3b1=fs[_0xb4a1('0x6c')](path[_0xb4a1('0x5b')](_0x5c5d6f,_0x59acd2[0x0]));if(_0x17c3b1[_0xb4a1('0x3e')]===0x0){removeReferences(_0x4c8ba3,_0x5c5d6f);logger[_0xb4a1('0x2c')](_0xb4a1('0x6d'));return _0x2be7af(new Error(_0xb4a1('0x6d')));}var _0x571322=_0x17c3b1[_0xb4a1('0x71')](function(_0x3e8141){return _0x3e8141===_0xb4a1('0x72');});if(!_0x571322){return _0x2be7af(new Error('Plugin\x20manifest\x20missing'));}var _0x2f3250=fs['readFileSync'](path['join'](_0x5c5d6f,_0x59acd2[0x0],_0xb4a1('0x72')));var _0x4c6a45=JSON['parse'](_0x2f3250);if(_0xb4a1('0x1f')==typeof _0x4c6a45[_0xb4a1('0x37')]){return _0x2be7af(new Error(_0xb4a1('0x73')));}if(_0xb4a1('0x1f')==typeof _0x4c6a45[_0xb4a1('0x34')]){return _0x2be7af(new Error(_0xb4a1('0x74')));}if(_0xb4a1('0x1f')==typeof _0x4c6a45['version']){return _0x2be7af(new Error(_0xb4a1('0x75')));}if(_0xb4a1('0x1f')==typeof _0x4c6a45[_0xb4a1('0x76')]){return _0x2be7af(new Error(_0xb4a1('0x77')));}if(_0x4c6a45['type']===_0xb4a1('0x78')){if(_0xb4a1('0x1f')==typeof _0x4c6a45[_0xb4a1('0x76')][_0xb4a1('0x79')]){return _0x2be7af(new Error(_0xb4a1('0x7a')));}if(_0xb4a1('0x1f')==typeof _0x4c6a45[_0xb4a1('0x76')][_0xb4a1('0x79')][_0xb4a1('0x7b')]&&_0xb4a1('0x1f')==typeof _0x4c6a45['parameters']['views'][_0xb4a1('0x7c')]){return _0x2be7af(new Error('Invalid\x20manifest:\x20no\x20view\x20specified'));}}else if(_0x4c6a45[_0xb4a1('0x34')]==='script'){if(_0xb4a1('0x1f')==typeof _0x4c6a45[_0xb4a1('0x76')][_0xb4a1('0x7d')]){return _0x2be7af(new Error(_0xb4a1('0x7e')));}if(_0xb4a1('0x1f')==typeof _0x4c6a45['parameters'][_0xb4a1('0x7f')]){return _0x2be7af(new Error(_0xb4a1('0x80')));}}else{return _0x2be7af(new Error(_0xb4a1('0x81')));}var _0x32e59c=_0x4c6a45[_0xb4a1('0x37')];var _0x24ea70=_0x4c6a45['description'];var _0x5bd9e0=_0x4c6a45['type'];var _0xf21188=_0x4c6a45[_0xb4a1('0x82')]?_0x4c6a45[_0xb4a1('0x82')]:'always';var _0x3c65fa=_0x4c6a45[_0xb4a1('0x83')]?_0x4c6a45[_0xb4a1('0x83')]:_0xb4a1('0x84');var _0x4855c4='';var _0x4a4720='';var _0x5809ab='';var _0x5de8b1='';var _0x283293=_0x4c6a45[_0xb4a1('0x85')];if(_0x5bd9e0===_0xb4a1('0x78')){if('undefined'!=typeof _0x4c6a45[_0xb4a1('0x76')][_0xb4a1('0x79')][_0xb4a1('0x7b')]){var _0x1c4625=_0x4c6a45[_0xb4a1('0x76')]['views']['admin'];if(!/^(f|ht)tps?:\/\//i['test'](_0x1c4625)){_0x4855c4=path[_0xb4a1('0x5b')](_0xb4a1('0x86'),_0x15ac8e,_0x59acd2[0x0],_0x1c4625);}else{_0x4855c4=_0x1c4625;}}else{logger['info'](_0xb4a1('0x87'));}if(_0xb4a1('0x1f')!=typeof _0x4c6a45[_0xb4a1('0x76')][_0xb4a1('0x79')][_0xb4a1('0x7c')]){var _0x1f9221=_0x4c6a45[_0xb4a1('0x76')][_0xb4a1('0x79')][_0xb4a1('0x7c')];if(!/^(f|ht)tps?:\/\//i[_0xb4a1('0x88')](_0x1f9221)){_0x4a4720=path[_0xb4a1('0x5b')](_0xb4a1('0x86'),_0x15ac8e,_0x59acd2[0x0],_0x1f9221);}else{_0x4a4720=_0x1f9221;}}else{logger[_0xb4a1('0x64')](_0xb4a1('0x89'));}}else if(_0x5bd9e0==='script'){_0x5809ab=_0x4c6a45[_0xb4a1('0x76')][_0xb4a1('0x7d')];_0x5de8b1=_0x4c6a45[_0xb4a1('0x76')]['scriptPath'];if('undefined'!=typeof _0x4c6a45[_0xb4a1('0x76')][_0xb4a1('0x79')]){if('undefined'!=typeof _0x4c6a45[_0xb4a1('0x76')][_0xb4a1('0x79')][_0xb4a1('0x7b')]){var _0x1c4625=_0x4c6a45[_0xb4a1('0x76')][_0xb4a1('0x79')][_0xb4a1('0x7b')];if(!/^(f|ht)tps?:\/\//i[_0xb4a1('0x88')](_0x1c4625)){_0x4855c4=path[_0xb4a1('0x5b')](_0xb4a1('0x86'),_0x15ac8e,_0x59acd2[0x0],_0x1c4625);}else{_0x4855c4=_0x1c4625;}}if(_0xb4a1('0x1f')!=typeof _0x4c6a45[_0xb4a1('0x76')][_0xb4a1('0x79')][_0xb4a1('0x7c')]){var _0x1f9221=_0x4c6a45['parameters'][_0xb4a1('0x79')][_0xb4a1('0x7c')];if(!/^(f|ht)tps?:\/\//i[_0xb4a1('0x88')](_0x1f9221)){_0x4a4720=path[_0xb4a1('0x5b')](_0xb4a1('0x86'),_0x15ac8e,_0x59acd2[0x0],_0x1f9221);}else{_0x4a4720=_0x1f9221;}}}}var _0x19473e={'name':_0x32e59c,'description':_0x24ea70,'path':path[_0xb4a1('0x5b')](_0x15ac8e,_0x59acd2[0x0]),'type':_0x5bd9e0,'sidebar':_0xf21188,'icon':_0x3c65fa,'adminUrl':_0x4855c4,'agentUrl':_0x4a4720,'scriptName':_0x5809ab,'scriptPath':_0x5de8b1,'version':_0x283293};removeReferences(_0x4c8ba3,null);return db['Plugin'][_0xb4a1('0x8a')](_0x19473e)['then'](function(_0xde52f8){var _0x527ce1={'role':_0x453804[_0xb4a1('0x8b')][_0xb4a1('0x8c')],'userProfileId':_0x453804['body']['userProfileId']};if(!_0x527ce1)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x527ce1[_0xb4a1('0x8c')]===_0xb4a1('0x8d')){var _0x19654d=_0xde52f8['get']({'plain':!![]});return db[_0xb4a1('0x8e')][_0xb4a1('0x4e')]({'where':{'name':_0xb4a1('0x8f'),'userProfileId':_0x527ce1['userProfileId']},'raw':!![]})[_0xb4a1('0x28')](function(_0x40a783){if(_0x40a783&&_0x40a783[_0xb4a1('0x90')]===0x0){return db[_0xb4a1('0x2b')][_0xb4a1('0x8a')]({'name':_0x19654d[_0xb4a1('0x37')],'resourceId':_0x19654d['id'],'type':_0x40a783[_0xb4a1('0x37')],'sectionId':_0x40a783['id']},{})[_0xb4a1('0x28')](function(){return _0xde52f8;});}else{return _0xde52f8;}})[_0xb4a1('0x4a')](function(_0x5e4941){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5e4941);throw _0x5e4941;});}return _0xde52f8;})[_0xb4a1('0x28')](respondWithResult(_0xdc531e,null))[_0xb4a1('0x4a')](handleError(_0xdc531e,null));}});}catch(_0x3fd3d0){_0xdc531e['status'](0x1f4)[_0xb4a1('0x2e')](_0x3fd3d0);}};function removeReferences(_0x57d100,_0x24a0bd){try{if(_0x57d100){fs[_0xb4a1('0x62')](_0x57d100);logger[_0xb4a1('0x64')](_0xb4a1('0x91'));}if(_0x24a0bd){rimraf(_0x24a0bd,function(){});logger[_0xb4a1('0x64')]('Extracted\x20folder\x20removed');}}catch(_0x192f09){logger[_0xb4a1('0x2c')](_0x192f09);}}exports[_0xb4a1('0x27')]=function(_0x17c9d5,_0x2a1511,_0x166288){return db['Plugin'][_0xb4a1('0x4e')]({'where':{'id':_0x17c9d5[_0xb4a1('0x4c')]['id']}})[_0xb4a1('0x28')](handleEntityNotFound(_0x2a1511,null))['then'](saveUpdates(_0x17c9d5[_0xb4a1('0x8b')],null))[_0xb4a1('0x28')](respondWithResult(_0x2a1511,null))[_0xb4a1('0x4a')](handleError(_0x2a1511,null));};exports[_0xb4a1('0x92')]=function(_0x2d3ed8,_0x3d4596,_0x44c43a){return db[_0xb4a1('0x31')]['find']({'where':{'id':_0x2d3ed8[_0xb4a1('0x4c')]['id']}})[_0xb4a1('0x28')](function(_0x47d500){if(_0x47d500){return _0x47d500['destroy']();}})[_0xb4a1('0x28')](function(_0x5a4c66){rimraf(path[_0xb4a1('0x5b')](config[_0xb4a1('0x4f')],_0xb4a1('0x50'),path[_0xb4a1('0x5c')](_0x5a4c66['path'])),function(){});return _0x5a4c66;})[_0xb4a1('0x28')](handleEntityNotFound(_0x3d4596,null))['then'](respondWithStatusCode(_0x3d4596,null))[_0xb4a1('0x4a')](handleError(_0x3d4596,null));};exports['webhookGet']=function(_0x15f1ce,_0x2634ac,_0x594243){return BPromise[_0xb4a1('0x93')]()['then'](function(){if(!_0x15f1ce[_0xb4a1('0x38')]['path']){throw new Error('\x27PATH\x27\x20parameter\x20not\x20specified');}if(!_0x15f1ce[_0xb4a1('0x38')][_0xb4a1('0x94')]){throw new Error(_0xb4a1('0x95'));}var _0xfb6cb3=_0x15f1ce['query'][_0xb4a1('0x96')]?_0x15f1ce[_0xb4a1('0x38')][_0xb4a1('0x96')]+':'+_0x15f1ce[_0xb4a1('0x38')]['port']:_0xb4a1('0x97')+_0x15f1ce['query'][_0xb4a1('0x94')];var _0x290672=_0x15f1ce[_0xb4a1('0x38')][_0xb4a1('0x1d')]?_0x15f1ce[_0xb4a1('0x38')][_0xb4a1('0x1d')]:!![];var _0x570ea1=_0x15f1ce[_0xb4a1('0x38')][_0xb4a1('0x98')]?_0x15f1ce[_0xb4a1('0x38')]['encoding']:null;var _0x14ad8b={'method':_0x15f1ce[_0xb4a1('0x99')],'uri':util[_0xb4a1('0x51')](_0xb4a1('0x9a'),_0xfb6cb3,_0x15f1ce[_0xb4a1('0x38')][_0xb4a1('0x4')]),'json':_0x290672,'resolveWithFullResponse':!![],'encoding':_0x570ea1,'qs':_0x15f1ce['query']};if(_0x15f1ce[_0xb4a1('0x9b')]){_0x14ad8b[_0xb4a1('0x9b')]=_0x15f1ce[_0xb4a1('0x9b')];if(_0x14ad8b[_0xb4a1('0x9b')][_0xb4a1('0x9c')]){delete _0x14ad8b['headers'][_0xb4a1('0x9c')];}}if(_0x14ad8b[_0xb4a1('0x9b')][_0xb4a1('0x9d')]){delete _0x14ad8b[_0xb4a1('0x9b')][_0xb4a1('0x9d')];}return rp(_0x14ad8b);})[_0xb4a1('0x28')](function(_0x4524dc){if(_0x4524dc){_0x2634ac[_0xb4a1('0x22')](_0x4524dc[_0xb4a1('0x9b')]);logger[_0xb4a1('0x64')](_0x4524dc[_0xb4a1('0x8b')]);if(_[_0xb4a1('0x9e')](_0x15f1ce[_0xb4a1('0x38')][_0xb4a1('0x4')],_0xb4a1('0x4d'))&&_0x4524dc[_0xb4a1('0x9f')]==0x1f4){return _0x2634ac[_0xb4a1('0x1a')](_0x4524dc[_0xb4a1('0x9f')]);}else{return _0x2634ac['status'](_0x4524dc[_0xb4a1('0x9f')])[_0xb4a1('0x2e')](_0x4524dc[_0xb4a1('0x8b')]);}}else{return _0x2634ac[_0xb4a1('0x1a')](0xc8);}})[_0xb4a1('0x4a')](handleError(_0x2634ac,null));};exports[_0xb4a1('0xa0')]=function(_0x5e2896,_0x4ee4a8,_0x3f9f0){return BPromise['resolve']()[_0xb4a1('0x28')](function(){if(!_0x5e2896[_0xb4a1('0x38')][_0xb4a1('0x4')]){throw new Error(_0xb4a1('0xa1'));}if(!_0x5e2896[_0xb4a1('0x38')]['port']){throw new Error(_0xb4a1('0x95'));}var _0x3a7fb1=_0x5e2896[_0xb4a1('0x38')][_0xb4a1('0x96')]?_0x5e2896[_0xb4a1('0x38')]['hostname']+':'+_0x5e2896[_0xb4a1('0x38')]['port']:'http://localhost:'+_0x5e2896[_0xb4a1('0x38')][_0xb4a1('0x94')];var _0x3d556b=_0x5e2896[_0xb4a1('0x38')][_0xb4a1('0x1d')]?_0x5e2896[_0xb4a1('0x38')][_0xb4a1('0x1d')]:!![];var _0x38bea0=_0x5e2896[_0xb4a1('0x38')]['encoding']?_0x5e2896[_0xb4a1('0x38')][_0xb4a1('0x98')]:null;var _0x449308={'method':_0x5e2896[_0xb4a1('0x99')],'uri':util[_0xb4a1('0x51')](_0xb4a1('0x9a'),_0x3a7fb1,_0x5e2896['query'][_0xb4a1('0x4')]),'json':_0x3d556b,'resolveWithFullResponse':!![],'encoding':_0x38bea0,'body':_0x5e2896['body']};if(_0x5e2896[_0xb4a1('0x9b')]){_0x449308[_0xb4a1('0x9b')]=_0x5e2896[_0xb4a1('0x9b')];if(_0x449308[_0xb4a1('0x9b')][_0xb4a1('0x9c')]){delete _0x449308[_0xb4a1('0x9b')][_0xb4a1('0x9c')];}}if(_0x449308[_0xb4a1('0x9b')][_0xb4a1('0x9d')]){delete _0x449308[_0xb4a1('0x9b')]['content-type'];}return rp(_0x449308);})[_0xb4a1('0x28')](function(_0x53c045){if(_0x53c045){_0x4ee4a8['set'](_0x53c045[_0xb4a1('0x9b')]);logger[_0xb4a1('0x64')](_0x53c045[_0xb4a1('0x8b')]);return _0x4ee4a8[_0xb4a1('0x1b')](_0x53c045[_0xb4a1('0x9f')])[_0xb4a1('0x2e')](_0x53c045[_0xb4a1('0x8b')]);}else{return _0x4ee4a8['sendStatus'](0xc8);}})[_0xb4a1('0x4a')](handleError(_0x4ee4a8,null));};
\ No newline at end of file
+var _0xe91f=['includeAll','include','findAll','rows','catch','show','params','find','download','path','root','server/files/plugins','%s.zip','basename','zip','warning','code','ENOENT','error','Sequelize','Error\x20while\x20generating\x20the\x20zip\x20archive','Error','pipe','glob','dirname','join','attachments/**/*','finalize','close','existsSync','Plugin\x20not\x20found','format','Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','info','Download\x20completed','Temporary\x20file\x20removed','upload','file','filename','extname','Plugin\x20upload\x20filepath:\x20%s','Plugin\x20upload\x20destination:\x20%s','0777','readdirSync','Invalid\x20plugin\x20structure','lstatSync','isFile','some','manifest.json','Plugin\x20manifest\x20missing','readFileSync','parse','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','version','Invalid\x20manifest:\x20version\x20not\x20specified','parameters','html','views','admin','agent','Invalid\x20manifest:\x20no\x20view\x20specified','script','scriptName','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','description','sidebar','always','icon','icon-apps','test','Warning:\x20admin\x20view\x20not\x20specified','scriptPath','plugins','create','body','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','autoAssociation','Zip\x20archive\x20removed','update','delete','webhookGet','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','port','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','http://localhost:','encoding','method','%s%s','headers','content-length','content-type','endsWith','statusCode','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','squel','crypto','desk.js','querystring','papaparse','extract-zip','rimraf','archiver','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./plugin.socket','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','then','destroy','get','Plugins','UserProfileResource','sendStatus','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','filter','merge','VIRTUAL','options','Plugin'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0xe91f,0x65));var _0xfe91=function(_0x56600e,_0x2b398d){_0x56600e=_0x56600e-0x0;var _0x48670a=_0xe91f[_0x56600e];return _0x48670a;};'use strict';var emlformat=require(_0xfe91('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xfe91('0x1'));var jsonpatch=require(_0xfe91('0x2'));var rp=require(_0xfe91('0x3'));var moment=require(_0xfe91('0x4'));var BPromise=require(_0xfe91('0x5'));var Mustache=require(_0xfe91('0x6'));var util=require(_0xfe91('0x7'));var path=require('path');var sox=require(_0xfe91('0x8'));var csv=require(_0xfe91('0x9'));var ejs=require(_0xfe91('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xfe91('0xb'));var crypto=require(_0xfe91('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xfe91('0xd'));var toCsv=require(_0xfe91('0x9'));var querystring=require(_0xfe91('0xe'));var Papa=require(_0xfe91('0xf'));var extract=require(_0xfe91('0x10'));var rimraf=require(_0xfe91('0x11'));var archiver=require(_0xfe91('0x12'));var Redis=require(_0xfe91('0x13'));var authService=require(_0xfe91('0x14'));var qs=require(_0xfe91('0x15'));var as=require(_0xfe91('0x16'));var hardwareService=require(_0xfe91('0x17'));var logger=require(_0xfe91('0x18'))('api');var utils=require(_0xfe91('0x19'));var config=require(_0xfe91('0x1a'));var licenseUtil=require(_0xfe91('0x1b'));var db=require('../../mysqldb')['db'];config[_0xfe91('0x1c')]=_[_0xfe91('0x1d')](config[_0xfe91('0x1c')],{'host':_0xfe91('0x1e'),'port':0x18eb});var socket=require(_0xfe91('0x1f'))(new Redis(config[_0xfe91('0x1c')]));require(_0xfe91('0x20'))['register'](socket);function respondWithStatusCode(_0x3a1d67,_0x577a91){_0x577a91=_0x577a91||0xcc;return function(_0x3e9791){if(_0x3e9791){return _0x3a1d67['sendStatus'](_0x577a91);}return _0x3a1d67['status'](_0x577a91)[_0xfe91('0x21')]();};}function respondWithResult(_0x34c76c,_0xf555d0){_0xf555d0=_0xf555d0||0xc8;return function(_0x4daf74){if(_0x4daf74){return _0x34c76c[_0xfe91('0x22')](_0xf555d0)[_0xfe91('0x23')](_0x4daf74);}};}function respondWithFilteredResult(_0x4a78db,_0x42d227){return function(_0x513a4a){if(_0x513a4a){var _0x460bc9=typeof _0x42d227[_0xfe91('0x24')]===_0xfe91('0x25')&&typeof _0x42d227[_0xfe91('0x26')]==='undefined';var _0x218ab4=_0x513a4a[_0xfe91('0x27')];var _0x178d52=_0x460bc9?0x0:_0x42d227[_0xfe91('0x24')];var _0x43eb86=_0x460bc9?_0x513a4a['count']:_0x42d227['offset']+_0x42d227[_0xfe91('0x26')];var _0x29b307;if(_0x43eb86>=_0x218ab4){_0x43eb86=_0x218ab4;_0x29b307=0xc8;}else{_0x29b307=0xce;}_0x4a78db[_0xfe91('0x22')](_0x29b307);return _0x4a78db[_0xfe91('0x28')](_0xfe91('0x29'),_0x178d52+'-'+_0x43eb86+'/'+_0x218ab4)[_0xfe91('0x23')](_0x513a4a);}return null;};}function patchUpdates(_0x4c4dc8){return function(_0xde70cb){try{jsonpatch[_0xfe91('0x2a')](_0xde70cb,_0x4c4dc8,!![]);}catch(_0x523396){return BPromise['reject'](_0x523396);}return _0xde70cb[_0xfe91('0x2b')]();};}function saveUpdates(_0x385c84,_0x458c7c){return function(_0x46efd9){if(_0x46efd9){return _0x46efd9['update'](_0x385c84)[_0xfe91('0x2c')](function(_0x5cbfb2){return _0x5cbfb2;});}return null;};}function removeEntity(_0x3c6132,_0x4ebf7d){return function(_0x30b289){if(_0x30b289){return _0x30b289[_0xfe91('0x2d')]()[_0xfe91('0x2c')](function(){var _0x2fa445=_0x30b289[_0xfe91('0x2e')]({'plain':!![]});var _0x22734f=_0xfe91('0x2f');return db[_0xfe91('0x30')][_0xfe91('0x2d')]({'where':{'type':_0x22734f,'resourceId':_0x2fa445['id']}})[_0xfe91('0x2c')](function(){return _0x30b289;});})[_0xfe91('0x2c')](function(){_0x3c6132['status'](0xcc)[_0xfe91('0x21')]();});}};}function handleEntityNotFound(_0x5bcf33,_0x4e7959){return function(_0xc4978){if(!_0xc4978){_0x5bcf33[_0xfe91('0x31')](0x194);}return _0xc4978;};}function handleError(_0x313c44,_0x189a07){_0x189a07=_0x189a07||0x1f4;return function(_0x4a2873){logger['error'](_0x4a2873[_0xfe91('0x32')]);if(_0x4a2873[_0xfe91('0x33')]){delete _0x4a2873[_0xfe91('0x33')];}_0x313c44[_0xfe91('0x22')](_0x189a07)[_0xfe91('0x34')](_0x4a2873);};}exports[_0xfe91('0x35')]=function(_0xc14805,_0x2ed8e2){var _0x1e1249={},_0x11c210={},_0x174c29={'count':0x0,'rows':[]};var _0x1d334a=_[_0xfe91('0x36')](db['Plugin'][_0xfe91('0x37')],function(_0x4a5994){return{'name':_0x4a5994[_0xfe91('0x38')],'type':_0x4a5994[_0xfe91('0x39')][_0xfe91('0x3a')]};});_0x11c210[_0xfe91('0x3b')]=_['map'](_0x1d334a,_0xfe91('0x33'));_0x11c210[_0xfe91('0x3c')]=_[_0xfe91('0x3d')](_0xc14805['query']);_0x11c210[_0xfe91('0x3e')]=_[_0xfe91('0x3f')](_0x11c210['model'],_0x11c210[_0xfe91('0x3c')]);_0x1e1249['attributes']=_[_0xfe91('0x3f')](_0x11c210[_0xfe91('0x3b')],qs[_0xfe91('0x40')](_0xc14805[_0xfe91('0x3c')][_0xfe91('0x40')]));_0x1e1249[_0xfe91('0x41')]=_0x1e1249[_0xfe91('0x41')][_0xfe91('0x42')]?_0x1e1249[_0xfe91('0x41')]:_0x11c210[_0xfe91('0x3b')];if(!_0xc14805[_0xfe91('0x3c')][_0xfe91('0x43')]('nolimit')){_0x1e1249['limit']=qs['limit'](_0xc14805[_0xfe91('0x3c')][_0xfe91('0x26')]);_0x1e1249[_0xfe91('0x24')]=qs[_0xfe91('0x24')](_0xc14805[_0xfe91('0x3c')][_0xfe91('0x24')]);}_0x1e1249[_0xfe91('0x44')]=qs[_0xfe91('0x45')](_0xc14805[_0xfe91('0x3c')][_0xfe91('0x45')]);_0x1e1249[_0xfe91('0x46')]=qs[_0xfe91('0x3e')](_['pick'](_0xc14805[_0xfe91('0x3c')],_0x11c210[_0xfe91('0x3e')]),_0x1d334a);if(_0xc14805['query'][_0xfe91('0x47')]){_0x1e1249[_0xfe91('0x46')]=_[_0xfe91('0x48')](_0x1e1249[_0xfe91('0x46')],{'$or':_[_0xfe91('0x36')](_0x1d334a,function(_0x272e6){if(_0x272e6[_0xfe91('0x39')]!==_0xfe91('0x49')){var _0x1262ae={};_0x1262ae[_0x272e6[_0xfe91('0x33')]]={'$like':'%'+_0xc14805[_0xfe91('0x3c')][_0xfe91('0x47')]+'%'};return _0x1262ae;}})});}_0x1e1249=_[_0xfe91('0x48')]({},_0x1e1249,_0xc14805[_0xfe91('0x4a')]);var _0x3315a6={'where':_0x1e1249[_0xfe91('0x46')]};return db[_0xfe91('0x4b')][_0xfe91('0x27')](_0x3315a6)[_0xfe91('0x2c')](function(_0x1b0e67){_0x174c29[_0xfe91('0x27')]=_0x1b0e67;if(_0xc14805[_0xfe91('0x3c')][_0xfe91('0x4c')]){_0x1e1249[_0xfe91('0x4d')]=[{'all':!![]}];}return db[_0xfe91('0x4b')][_0xfe91('0x4e')](_0x1e1249);})[_0xfe91('0x2c')](function(_0x46c20a){_0x174c29[_0xfe91('0x4f')]=_0x46c20a;return _0x174c29;})[_0xfe91('0x2c')](respondWithFilteredResult(_0x2ed8e2,_0x1e1249))[_0xfe91('0x50')](handleError(_0x2ed8e2,null));};exports[_0xfe91('0x51')]=function(_0x18e0e1,_0x2b9ad9){var _0x16b1c9={'raw':!![],'where':{'id':_0x18e0e1[_0xfe91('0x52')]['id']}},_0x45781e={};_0x45781e[_0xfe91('0x3b')]=_[_0xfe91('0x3d')](db[_0xfe91('0x4b')][_0xfe91('0x37')]);_0x45781e['query']=_[_0xfe91('0x3d')](_0x18e0e1[_0xfe91('0x3c')]);_0x45781e[_0xfe91('0x3e')]=_[_0xfe91('0x3f')](_0x45781e['model'],_0x45781e[_0xfe91('0x3c')]);_0x16b1c9[_0xfe91('0x41')]=_[_0xfe91('0x3f')](_0x45781e[_0xfe91('0x3b')],qs['fields'](_0x18e0e1[_0xfe91('0x3c')][_0xfe91('0x40')]));_0x16b1c9[_0xfe91('0x41')]=_0x16b1c9[_0xfe91('0x41')][_0xfe91('0x42')]?_0x16b1c9[_0xfe91('0x41')]:_0x45781e[_0xfe91('0x3b')];if(_0x18e0e1[_0xfe91('0x3c')][_0xfe91('0x4c')]){_0x16b1c9[_0xfe91('0x4d')]=[{'all':!![]}];}_0x16b1c9=_[_0xfe91('0x48')]({},_0x16b1c9,_0x18e0e1[_0xfe91('0x4a')]);return db[_0xfe91('0x4b')][_0xfe91('0x53')](_0x16b1c9)[_0xfe91('0x2c')](handleEntityNotFound(_0x2b9ad9,null))[_0xfe91('0x2c')](respondWithResult(_0x2b9ad9,null))[_0xfe91('0x50')](handleError(_0x2b9ad9,null));};exports[_0xfe91('0x54')]=function(_0x2e4cfc,_0x2a81fa,_0x2175f9){return db[_0xfe91('0x4b')]['find']({'where':{'id':_0x2e4cfc['params']['id']},'attributes':[_0xfe91('0x33'),_0xfe91('0x55')],'raw':!![]})[_0xfe91('0x2c')](handleEntityNotFound(_0x2a81fa,null))[_0xfe91('0x2c')](function(_0x52cbe9){if(_0x52cbe9){var _0x270df2=path['join'](config[_0xfe91('0x56')],_0xfe91('0x57'),util['format'](_0xfe91('0x58'),path[_0xfe91('0x59')](_0x52cbe9[_0xfe91('0x55')])));var _0x46d8ef=fs['createWriteStream'](_0x270df2);var _0x3ba730=archiver(_0xfe91('0x5a'),{'zlib':{'level':0x9}});_0x3ba730['on'](_0xfe91('0x5b'),function(_0x3783f9){if(_0x3783f9[_0xfe91('0x5c')]===_0xfe91('0x5d')){logger[_0xfe91('0x5e')](_0x3783f9);}else{throw new db[(_0xfe91('0x5f'))]['Error'](_0xfe91('0x60'));}});_0x3ba730['on'](_0xfe91('0x5e'),function(_0x2d3936){throw new db[(_0xfe91('0x5f'))][(_0xfe91('0x61'))](_0xfe91('0x60'));});_0x3ba730[_0xfe91('0x62')](_0x46d8ef);_0x3ba730[_0xfe91('0x63')]('**/*',{'cwd':path['join'](config[_0xfe91('0x56')],_0xfe91('0x57'),path[_0xfe91('0x64')](_0x52cbe9['path'])),'ignore':[path[_0xfe91('0x65')](path[_0xfe91('0x59')](_0x52cbe9[_0xfe91('0x55')]),'node_modules/**/*'),path['join'](path[_0xfe91('0x59')](_0x52cbe9[_0xfe91('0x55')]),_0xfe91('0x66'))],'nodir':!![]})[_0xfe91('0x67')]();_0x46d8ef['on'](_0xfe91('0x68'),function(){if(!fs[_0xfe91('0x69')](_0x270df2)){throw new db[(_0xfe91('0x5f'))][(_0xfe91('0x61'))](_0xfe91('0x6a'));}return _0x2a81fa['download'](_0x270df2,util[_0xfe91('0x6b')](_0xfe91('0x58'),path['basename'](_0x52cbe9[_0xfe91('0x55')])),function(_0x47b787){if(_0x47b787){throw new db[(_0xfe91('0x5f'))][(_0xfe91('0x61'))](_0xfe91('0x6c'));}fs[_0xfe91('0x6d')](_0x270df2);logger[_0xfe91('0x6e')](_0xfe91('0x6f'));logger[_0xfe91('0x6e')](_0xfe91('0x70'));});});}return null;})[_0xfe91('0x50')](handleError(_0x2a81fa,null));};exports[_0xfe91('0x71')]=function(_0x16a1b8,_0x242fbf,_0x3ea59c){var _0x2cda27=path[_0xfe91('0x59')](_0x16a1b8[_0xfe91('0x72')][_0xfe91('0x73')],path[_0xfe91('0x74')](_0x16a1b8[_0xfe91('0x72')][_0xfe91('0x73')]));var _0x5d449d=path[_0xfe91('0x65')](config[_0xfe91('0x56')],_0xfe91('0x57'),_0x16a1b8[_0xfe91('0x72')][_0xfe91('0x73')]);var _0x43403f=path[_0xfe91('0x65')](config['root'],'server/files/plugins',_0x2cda27);logger[_0xfe91('0x6e')](_0xfe91('0x75'),_0x5d449d);logger[_0xfe91('0x6e')](_0xfe91('0x76'),_0x43403f);try{fs['chmodSync'](_0x5d449d,parseInt(_0xfe91('0x77'),0x8));extract(_0x5d449d,{'dir':_0x43403f},function(_0x4780ce){if(_0x4780ce){logger['error'](_0x4780ce);handleError(_0x4780ce,!![]);};var _0x369d3a=fs[_0xfe91('0x78')](_0x43403f);if(_0x369d3a[_0xfe91('0x42')]>0x1){removeReferences(_0x5d449d,_0x43403f);logger[_0xfe91('0x5e')]('Invalid\x20plugin\x20structure');return _0x3ea59c(new Error(_0xfe91('0x79')));}var _0x29cef3=fs[_0xfe91('0x7a')](path[_0xfe91('0x65')](_0x43403f,_0x369d3a[0x0]));if(_0x29cef3[_0xfe91('0x7b')]()){removeReferences(_0x5d449d,_0x43403f);logger[_0xfe91('0x5e')](_0xfe91('0x79'));return _0x3ea59c(new Error(_0xfe91('0x79')));}if(_0x29cef3['isDirectory']()){var _0x5868ec=fs[_0xfe91('0x78')](path[_0xfe91('0x65')](_0x43403f,_0x369d3a[0x0]));if(_0x5868ec[_0xfe91('0x42')]===0x0){removeReferences(_0x5d449d,_0x43403f);logger['error'](_0xfe91('0x79'));return _0x3ea59c(new Error('Invalid\x20plugin\x20structure'));}var _0x2d3b20=_0x5868ec[_0xfe91('0x7c')](function(_0x4157fe){return _0x4157fe===_0xfe91('0x7d');});if(!_0x2d3b20){return _0x3ea59c(new Error(_0xfe91('0x7e')));}var _0x2cdd91=fs[_0xfe91('0x7f')](path['join'](_0x43403f,_0x369d3a[0x0],'manifest.json'));var _0x1a64e5=JSON[_0xfe91('0x80')](_0x2cdd91);if('undefined'==typeof _0x1a64e5[_0xfe91('0x33')]){return _0x3ea59c(new Error(_0xfe91('0x81')));}if(_0xfe91('0x25')==typeof _0x1a64e5[_0xfe91('0x39')]){return _0x3ea59c(new Error(_0xfe91('0x82')));}if('undefined'==typeof _0x1a64e5[_0xfe91('0x83')]){return _0x3ea59c(new Error(_0xfe91('0x84')));}if(_0xfe91('0x25')==typeof _0x1a64e5[_0xfe91('0x85')]){return _0x3ea59c(new Error('Invalid\x20manifest:\x20parameters\x20missing'));}if(_0x1a64e5[_0xfe91('0x39')]===_0xfe91('0x86')){if(_0xfe91('0x25')==typeof _0x1a64e5['parameters'][_0xfe91('0x87')]){return _0x3ea59c(new Error('Invalid\x20manifest:\x20views\x20missing'));}if(_0xfe91('0x25')==typeof _0x1a64e5[_0xfe91('0x85')][_0xfe91('0x87')][_0xfe91('0x88')]&&_0xfe91('0x25')==typeof _0x1a64e5[_0xfe91('0x85')][_0xfe91('0x87')][_0xfe91('0x89')]){return _0x3ea59c(new Error(_0xfe91('0x8a')));}}else if(_0x1a64e5[_0xfe91('0x39')]===_0xfe91('0x8b')){if(_0xfe91('0x25')==typeof _0x1a64e5[_0xfe91('0x85')][_0xfe91('0x8c')]){return _0x3ea59c(new Error('Invalid\x20manifest:\x20script\x20name\x20missing'));}if(_0xfe91('0x25')==typeof _0x1a64e5[_0xfe91('0x85')]['scriptPath']){return _0x3ea59c(new Error(_0xfe91('0x8d')));}}else{return _0x3ea59c(new Error(_0xfe91('0x8e')));}var _0x1b9220=_0x1a64e5[_0xfe91('0x33')];var _0x4d9284=_0x1a64e5[_0xfe91('0x8f')];var _0x5c1aa4=_0x1a64e5[_0xfe91('0x39')];var _0x16740d=_0x1a64e5[_0xfe91('0x90')]?_0x1a64e5[_0xfe91('0x90')]:_0xfe91('0x91');var _0x189573=_0x1a64e5[_0xfe91('0x92')]?_0x1a64e5[_0xfe91('0x92')]:_0xfe91('0x93');var _0x1be2b0='';var _0x17a5ff='';var _0x1b15c5='';var _0x31453c='';var _0x3a0a52=_0x1a64e5[_0xfe91('0x83')];if(_0x5c1aa4===_0xfe91('0x86')){if(_0xfe91('0x25')!=typeof _0x1a64e5[_0xfe91('0x85')]['views'][_0xfe91('0x88')]){var _0x5ebe4f=_0x1a64e5['parameters'][_0xfe91('0x87')]['admin'];if(!/^(f|ht)tps?:\/\//i[_0xfe91('0x94')](_0x5ebe4f)){_0x1be2b0=path['join']('plugins',_0x2cda27,_0x369d3a[0x0],_0x5ebe4f);}else{_0x1be2b0=_0x5ebe4f;}}else{logger[_0xfe91('0x6e')](_0xfe91('0x95'));}if('undefined'!=typeof _0x1a64e5[_0xfe91('0x85')][_0xfe91('0x87')][_0xfe91('0x89')]){var _0x7e3a47=_0x1a64e5[_0xfe91('0x85')][_0xfe91('0x87')]['agent'];if(!/^(f|ht)tps?:\/\//i[_0xfe91('0x94')](_0x7e3a47)){_0x17a5ff=path[_0xfe91('0x65')]('plugins',_0x2cda27,_0x369d3a[0x0],_0x7e3a47);}else{_0x17a5ff=_0x7e3a47;}}else{logger['info']('Warning:\x20agent\x20view\x20not\x20specified');}}else if(_0x5c1aa4==='script'){_0x1b15c5=_0x1a64e5[_0xfe91('0x85')]['scriptName'];_0x31453c=_0x1a64e5['parameters'][_0xfe91('0x96')];if(_0xfe91('0x25')!=typeof _0x1a64e5[_0xfe91('0x85')][_0xfe91('0x87')]){if(_0xfe91('0x25')!=typeof _0x1a64e5[_0xfe91('0x85')][_0xfe91('0x87')][_0xfe91('0x88')]){var _0x5ebe4f=_0x1a64e5['parameters'][_0xfe91('0x87')][_0xfe91('0x88')];if(!/^(f|ht)tps?:\/\//i['test'](_0x5ebe4f)){_0x1be2b0=path[_0xfe91('0x65')](_0xfe91('0x97'),_0x2cda27,_0x369d3a[0x0],_0x5ebe4f);}else{_0x1be2b0=_0x5ebe4f;}}if(_0xfe91('0x25')!=typeof _0x1a64e5['parameters']['views']['agent']){var _0x7e3a47=_0x1a64e5[_0xfe91('0x85')][_0xfe91('0x87')][_0xfe91('0x89')];if(!/^(f|ht)tps?:\/\//i[_0xfe91('0x94')](_0x7e3a47)){_0x17a5ff=path[_0xfe91('0x65')](_0xfe91('0x97'),_0x2cda27,_0x369d3a[0x0],_0x7e3a47);}else{_0x17a5ff=_0x7e3a47;}}}}var _0x219aa2={'name':_0x1b9220,'description':_0x4d9284,'path':path[_0xfe91('0x65')](_0x2cda27,_0x369d3a[0x0]),'type':_0x5c1aa4,'sidebar':_0x16740d,'icon':_0x189573,'adminUrl':_0x1be2b0,'agentUrl':_0x17a5ff,'scriptName':_0x1b15c5,'scriptPath':_0x31453c,'version':_0x3a0a52};removeReferences(_0x5d449d,null);return db[_0xfe91('0x4b')][_0xfe91('0x98')](_0x219aa2)[_0xfe91('0x2c')](function(_0x37b770){var _0x234d6f={'role':_0x16a1b8[_0xfe91('0x99')]['role'],'userProfileId':_0x16a1b8[_0xfe91('0x99')][_0xfe91('0x9a')]};if(!_0x234d6f)throw new Error(_0xfe91('0x9b'));if(_0x234d6f[_0xfe91('0x9c')]===_0xfe91('0x9d')){var _0x5e4695=_0x37b770['get']({'plain':!![]});return db['UserProfileSection'][_0xfe91('0x53')]({'where':{'name':_0xfe91('0x2f'),'userProfileId':_0x234d6f['userProfileId']},'raw':!![]})[_0xfe91('0x2c')](function(_0x17b194){if(_0x17b194&&_0x17b194[_0xfe91('0x9e')]===0x0){return db[_0xfe91('0x30')][_0xfe91('0x98')]({'name':_0x5e4695['name'],'resourceId':_0x5e4695['id'],'type':_0x17b194['name'],'sectionId':_0x17b194['id']},{})[_0xfe91('0x2c')](function(){return _0x37b770;});}else{return _0x37b770;}})[_0xfe91('0x50')](function(_0x2e79dd){logger[_0xfe91('0x5e')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2e79dd);throw _0x2e79dd;});}return _0x37b770;})[_0xfe91('0x2c')](respondWithResult(_0x242fbf,null))[_0xfe91('0x50')](handleError(_0x242fbf,null));}});}catch(_0x564971){_0x242fbf[_0xfe91('0x22')](0x1f4)[_0xfe91('0x34')](_0x564971);}};function removeReferences(_0x41a408,_0x45e308){try{if(_0x41a408){fs[_0xfe91('0x6d')](_0x41a408);logger[_0xfe91('0x6e')](_0xfe91('0x9f'));}if(_0x45e308){rimraf(_0x45e308,function(){});logger[_0xfe91('0x6e')]('Extracted\x20folder\x20removed');}}catch(_0x5f5a21){logger[_0xfe91('0x5e')](_0x5f5a21);}}exports[_0xfe91('0xa0')]=function(_0x1e117d,_0x2c7cd7,_0x546728){return db['Plugin'][_0xfe91('0x53')]({'where':{'id':_0x1e117d['params']['id']}})[_0xfe91('0x2c')](handleEntityNotFound(_0x2c7cd7,null))[_0xfe91('0x2c')](saveUpdates(_0x1e117d['body'],null))[_0xfe91('0x2c')](respondWithResult(_0x2c7cd7,null))['catch'](handleError(_0x2c7cd7,null));};exports[_0xfe91('0xa1')]=function(_0x4bc111,_0x56af73,_0x3ff0e3){return db[_0xfe91('0x4b')][_0xfe91('0x53')]({'where':{'id':_0x4bc111[_0xfe91('0x52')]['id']}})['then'](function(_0x1759f3){if(_0x1759f3){return _0x1759f3[_0xfe91('0x2d')]();}})[_0xfe91('0x2c')](function(_0x1b6f7c){rimraf(path[_0xfe91('0x65')](config['root'],_0xfe91('0x57'),path[_0xfe91('0x64')](_0x1b6f7c[_0xfe91('0x55')])),function(){});return _0x1b6f7c;})['then'](handleEntityNotFound(_0x56af73,null))[_0xfe91('0x2c')](respondWithStatusCode(_0x56af73,null))[_0xfe91('0x50')](handleError(_0x56af73,null));};exports[_0xfe91('0xa2')]=function(_0x5548ba,_0x266f01,_0x8e0317){return BPromise[_0xfe91('0xa3')]()[_0xfe91('0x2c')](function(){if(!_0x5548ba['query'][_0xfe91('0x55')]){throw new Error(_0xfe91('0xa4'));}if(!_0x5548ba[_0xfe91('0x3c')][_0xfe91('0xa5')]){throw new Error(_0xfe91('0xa6'));}var _0x1e7715=_0x5548ba[_0xfe91('0x3c')][_0xfe91('0xa7')]?_0x5548ba['query']['hostname']+':'+_0x5548ba[_0xfe91('0x3c')]['port']:_0xfe91('0xa8')+_0x5548ba[_0xfe91('0x3c')][_0xfe91('0xa5')];var _0x242959=_0x5548ba['query'][_0xfe91('0x23')]?_0x5548ba[_0xfe91('0x3c')]['json']:!![];var _0x1c0ef1=_0x5548ba[_0xfe91('0x3c')][_0xfe91('0xa9')]?_0x5548ba[_0xfe91('0x3c')][_0xfe91('0xa9')]:null;var _0x1d686e={'method':_0x5548ba[_0xfe91('0xaa')],'uri':util['format'](_0xfe91('0xab'),_0x1e7715,_0x5548ba[_0xfe91('0x3c')]['path']),'json':_0x242959,'resolveWithFullResponse':!![],'encoding':_0x1c0ef1,'qs':_0x5548ba[_0xfe91('0x3c')]};if(_0x5548ba[_0xfe91('0xac')]){_0x1d686e[_0xfe91('0xac')]=_0x5548ba['headers'];if(_0x1d686e[_0xfe91('0xac')][_0xfe91('0xad')]){delete _0x1d686e[_0xfe91('0xac')]['content-length'];}}if(_0x1d686e[_0xfe91('0xac')]['content-type']){delete _0x1d686e[_0xfe91('0xac')][_0xfe91('0xae')];}return rp(_0x1d686e);})['then'](function(_0x10f15f){if(_0x10f15f){_0x266f01[_0xfe91('0x28')](_0x10f15f[_0xfe91('0xac')]);logger[_0xfe91('0x6e')](_0x10f15f[_0xfe91('0x99')]);if(_[_0xfe91('0xaf')](_0x5548ba[_0xfe91('0x3c')][_0xfe91('0x55')],'download')&&_0x10f15f['statusCode']==0x1f4){return _0x266f01[_0xfe91('0x31')](_0x10f15f[_0xfe91('0xb0')]);}else{return _0x266f01[_0xfe91('0x22')](_0x10f15f[_0xfe91('0xb0')])['send'](_0x10f15f[_0xfe91('0x99')]);}}else{return _0x266f01['sendStatus'](0xc8);}})[_0xfe91('0x50')](handleError(_0x266f01,null));};exports['webhookPost']=function(_0x588cad,_0x29ccc7,_0x1c2cac){return BPromise[_0xfe91('0xa3')]()['then'](function(){if(!_0x588cad[_0xfe91('0x3c')][_0xfe91('0x55')]){throw new Error(_0xfe91('0xa4'));}if(!_0x588cad[_0xfe91('0x3c')][_0xfe91('0xa5')]){throw new Error(_0xfe91('0xa6'));}var _0x3d8441=_0x588cad['query'][_0xfe91('0xa7')]?_0x588cad[_0xfe91('0x3c')][_0xfe91('0xa7')]+':'+_0x588cad[_0xfe91('0x3c')]['port']:_0xfe91('0xa8')+_0x588cad['query'][_0xfe91('0xa5')];var _0x753c15=_0x588cad[_0xfe91('0x3c')][_0xfe91('0x23')]?_0x588cad[_0xfe91('0x3c')][_0xfe91('0x23')]:!![];var _0x3b5338=_0x588cad['query'][_0xfe91('0xa9')]?_0x588cad['query']['encoding']:null;var _0x27cce7={'method':_0x588cad['method'],'uri':util[_0xfe91('0x6b')](_0xfe91('0xab'),_0x3d8441,_0x588cad['query'][_0xfe91('0x55')]),'json':_0x753c15,'resolveWithFullResponse':!![],'encoding':_0x3b5338,'body':_0x588cad[_0xfe91('0x99')]};if(_0x588cad[_0xfe91('0xac')]){_0x27cce7['headers']=_0x588cad[_0xfe91('0xac')];if(_0x27cce7[_0xfe91('0xac')][_0xfe91('0xad')]){delete _0x27cce7[_0xfe91('0xac')][_0xfe91('0xad')];}}if(_0x27cce7[_0xfe91('0xac')][_0xfe91('0xae')]){delete _0x27cce7[_0xfe91('0xac')][_0xfe91('0xae')];}return rp(_0x27cce7);})[_0xfe91('0x2c')](function(_0x2c5954){if(_0x2c5954){_0x29ccc7[_0xfe91('0x28')](_0x2c5954[_0xfe91('0xac')]);logger[_0xfe91('0x6e')](_0x2c5954[_0xfe91('0x99')]);return _0x29ccc7['status'](_0x2c5954['statusCode'])['send'](_0x2c5954[_0xfe91('0x99')]);}else{return _0x29ccc7['sendStatus'](0xc8);}})[_0xfe91('0x50')](handleError(_0x29ccc7,null));};
\ No newline at end of file
index 89d12a1..803ebc3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9303=['events','setMaxListeners','update','emit','hasOwnProperty'];(function(_0x52fc4c,_0x4d5093){var _0x159b18=function(_0x4e68a2){while(--_0x4e68a2){_0x52fc4c['push'](_0x52fc4c['shift']());}};_0x159b18(++_0x4d5093);}(_0x9303,0xd7));var _0x3930=function(_0x28da10,_0x29470c){_0x28da10=_0x28da10-0x0;var _0x298372=_0x9303[_0x28da10];return _0x298372;};'use strict';var EventEmitter=require(_0x3930('0x0'));var Plugin=require('../../mysqldb')['db']['Plugin'];var PluginEvents=new EventEmitter();PluginEvents[_0x3930('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x3930('0x2'),'afterDestroy':'remove'};function emitEvent(_0x4fd19e){return function(_0x3e9314,_0x2dddd0,_0x1fb17){PluginEvents[_0x3930('0x3')](_0x4fd19e+':'+_0x3e9314['id'],_0x3e9314);PluginEvents['emit'](_0x4fd19e,_0x3e9314);_0x1fb17(null);};}for(var e in events){if(events[_0x3930('0x4')](e)){var event=events[e];Plugin['hook'](e,emitEvent(event));}}module['exports']=PluginEvents;
\ No newline at end of file
+var _0x8ac9=['remove','emit','exports','events','../../mysqldb','Plugin','update'];(function(_0x179023,_0x5121f4){var _0x389b31=function(_0x2306cc){while(--_0x2306cc){_0x179023['push'](_0x179023['shift']());}};_0x389b31(++_0x5121f4);}(_0x8ac9,0x199));var _0x98ac=function(_0x414516,_0x340222){_0x414516=_0x414516-0x0;var _0x44d8b9=_0x8ac9[_0x414516];return _0x44d8b9;};'use strict';var EventEmitter=require(_0x98ac('0x0'));var Plugin=require(_0x98ac('0x1'))['db'][_0x98ac('0x2')];var PluginEvents=new EventEmitter();PluginEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x98ac('0x3'),'afterDestroy':_0x98ac('0x4')};function emitEvent(_0xd555bb){return function(_0x59f76b,_0x4bac60,_0x18968a){PluginEvents[_0x98ac('0x5')](_0xd555bb+':'+_0x59f76b['id'],_0x59f76b);PluginEvents[_0x98ac('0x5')](_0xd555bb,_0x59f76b);_0x18968a(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Plugin['hook'](e,emitEvent(event));}}module[_0x98ac('0x6')]=PluginEvents;
\ No newline at end of file
index 9524ebd..ea62612 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x905c=['../../config/logger','api','request-promise','path','rimraf','../../config/environment','exports','define','Plugin','plugins','lodash','util'];(function(_0x22bb9f,_0x56da5c){var _0x5aaae5=function(_0x270252){while(--_0x270252){_0x22bb9f['push'](_0x22bb9f['shift']());}};_0x5aaae5(++_0x56da5c);}(_0x905c,0x14e));var _0xc905=function(_0x2fa42f,_0x587463){_0x2fa42f=_0x2fa42f-0x0;var _0x3e30f5=_0x905c[_0x2fa42f];return _0x3e30f5;};'use strict';var _=require(_0xc905('0x0'));var util=require(_0xc905('0x1'));var logger=require(_0xc905('0x2'))(_0xc905('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xc905('0x4'));var fs=require('fs');var path=require(_0xc905('0x5'));var rimraf=require(_0xc905('0x6'));var config=require(_0xc905('0x7'));var attributes=require('./plugin.attributes');module[_0xc905('0x8')]=function(_0x1a4087,_0x3ab135){return _0x1a4087[_0xc905('0x9')](_0xc905('0xa'),attributes,{'tableName':_0xc905('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9566=['bluebird','request-promise','rimraf','../../config/environment','exports','plugins','lodash','util','api','moment'];(function(_0x58cbde,_0x4b0f62){var _0x5799f3=function(_0x326eca){while(--_0x326eca){_0x58cbde['push'](_0x58cbde['shift']());}};_0x5799f3(++_0x4b0f62);}(_0x9566,0x92));var _0x6956=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x9566[_0x59ee6f];return _0x4c0979;};'use strict';var _=require(_0x6956('0x0'));var util=require(_0x6956('0x1'));var logger=require('../../config/logger')(_0x6956('0x2'));var moment=require(_0x6956('0x3'));var BPromise=require(_0x6956('0x4'));var rp=require(_0x6956('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6956('0x6'));var config=require(_0x6956('0x7'));var attributes=require('./plugin.attributes');module[_0x6956('0x8')]=function(_0x8f895e,_0x202a3b){return _0x8f895e['define']('Plugin',attributes,{'tableName':_0x6956('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 41beaa7..465efa4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa552=['bluebird','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./plugin.socket','register','request','then','info','request\x20sent','debug','error','code','Plugin,\x20%s,\x20%s','message','result','catch','CreatePlugin','create','body','options','stringify','lodash','util','moment'];(function(_0x38954c,_0x357891){var _0x19fd62=function(_0x5a390d){while(--_0x5a390d){_0x38954c['push'](_0x38954c['shift']());}};_0x19fd62(++_0x357891);}(_0xa552,0x147));var _0x2a55=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa552[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x2a55('0x0'));var util=require(_0x2a55('0x1'));var moment=require(_0x2a55('0x2'));var BPromise=require(_0x2a55('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2a55('0x4'));var db=require(_0x2a55('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x2a55('0x6'));var config=require(_0x2a55('0x7'));var jayson=require(_0x2a55('0x8'));var client=jayson[_0x2a55('0x9')][_0x2a55('0xa')]({'port':0x232a});config[_0x2a55('0xb')]=_[_0x2a55('0xc')](config['redis'],{'host':_0x2a55('0xd'),'port':0x18eb});var socket=require(_0x2a55('0xe'))(new Redis(config['redis']));require(_0x2a55('0xf'))[_0x2a55('0x10')](socket);function respondWithRpcPromise(_0x5ea39b,_0x4d7001,_0xb71862){return new BPromise(function(_0x378ca7,_0x11289c){return client[_0x2a55('0x11')](_0x5ea39b,_0xb71862)[_0x2a55('0x12')](function(_0x1539d8){logger[_0x2a55('0x13')]('Plugin,\x20%s,\x20%s',_0x4d7001,_0x2a55('0x14'));logger[_0x2a55('0x15')]('Plugin,\x20%s,\x20%s,\x20%s',_0x4d7001,_0x2a55('0x14'),JSON['stringify'](_0x1539d8));if(_0x1539d8['error']){if(_0x1539d8[_0x2a55('0x16')][_0x2a55('0x17')]===0x1f4){logger[_0x2a55('0x16')]('Plugin,\x20%s,\x20%s',_0x4d7001,_0x1539d8[_0x2a55('0x16')]['message']);return _0x11289c(_0x1539d8['error']['message']);}logger[_0x2a55('0x16')](_0x2a55('0x18'),_0x4d7001,_0x1539d8[_0x2a55('0x16')]['message']);return _0x378ca7(_0x1539d8[_0x2a55('0x16')][_0x2a55('0x19')]);}else{logger['info'](_0x2a55('0x18'),_0x4d7001,'request\x20sent');_0x378ca7(_0x1539d8[_0x2a55('0x1a')]['message']);}})[_0x2a55('0x1b')](function(_0x145c89){logger[_0x2a55('0x16')]('Plugin,\x20%s,\x20%s',_0x4d7001,_0x145c89);_0x11289c(_0x145c89);});});}exports[_0x2a55('0x1c')]=function(_0x24161c){var _0x167385=this;return new Promise(function(_0xc01aa7,_0x4b1cc5){return db['Plugin'][_0x2a55('0x1d')](_0x24161c[_0x2a55('0x1e')],{'raw':_0x24161c['options']?_0x24161c[_0x2a55('0x1f')]['raw']===undefined?!![]:![]:!![]})[_0x2a55('0x12')](function(_0x2db552){logger[_0x2a55('0x13')]('CreatePlugin',_0x24161c);logger[_0x2a55('0x15')](_0x2a55('0x1c'),_0x24161c,JSON[_0x2a55('0x20')](_0x2db552));_0xc01aa7(_0x2db552);})[_0x2a55('0x1b')](function(_0x580057){logger[_0x2a55('0x16')]('CreatePlugin',_0x580057[_0x2a55('0x19')],_0x24161c);_0x4b1cc5(_0x167385[_0x2a55('0x16')](0x1f4,_0x580057[_0x2a55('0x19')]));});});};
\ No newline at end of file
+var _0x3b72=['CreatePlugin','Plugin','create','body','options','raw','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','request','info','Plugin,\x20%s,\x20%s','request\x20sent','debug','Plugin,\x20%s,\x20%s,\x20%s','error','code','message','result'];(function(_0xb25cef,_0x3aa37b){var _0x4eda5b=function(_0x3bcf4d){while(--_0x3bcf4d){_0xb25cef['push'](_0xb25cef['shift']());}};_0x4eda5b(++_0x3aa37b);}(_0x3b72,0x93));var _0x23b7=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x3b72[_0x397e5f];return _0x5302b8;};'use strict';var _=require(_0x23b7('0x0'));var util=require(_0x23b7('0x1'));var moment=require(_0x23b7('0x2'));var BPromise=require(_0x23b7('0x3'));var rs=require(_0x23b7('0x4'));var fs=require('fs');var Redis=require(_0x23b7('0x5'));var db=require(_0x23b7('0x6'))['db'];var utils=require(_0x23b7('0x7'));var logger=require(_0x23b7('0x8'))(_0x23b7('0x9'));var config=require(_0x23b7('0xa'));var jayson=require(_0x23b7('0xb'));var client=jayson[_0x23b7('0xc')][_0x23b7('0xd')]({'port':0x232a});config[_0x23b7('0xe')]=_[_0x23b7('0xf')](config['redis'],{'host':_0x23b7('0x10'),'port':0x18eb});var socket=require(_0x23b7('0x11'))(new Redis(config[_0x23b7('0xe')]));require('./plugin.socket')['register'](socket);function respondWithRpcPromise(_0x3dc563,_0x1139b3,_0xb6a907){return new BPromise(function(_0x7c021e,_0x56f93a){return client[_0x23b7('0x12')](_0x3dc563,_0xb6a907)['then'](function(_0x301553){logger[_0x23b7('0x13')](_0x23b7('0x14'),_0x1139b3,_0x23b7('0x15'));logger[_0x23b7('0x16')](_0x23b7('0x17'),_0x1139b3,_0x23b7('0x15'),JSON['stringify'](_0x301553));if(_0x301553['error']){if(_0x301553[_0x23b7('0x18')][_0x23b7('0x19')]===0x1f4){logger[_0x23b7('0x18')]('Plugin,\x20%s,\x20%s',_0x1139b3,_0x301553[_0x23b7('0x18')][_0x23b7('0x1a')]);return _0x56f93a(_0x301553[_0x23b7('0x18')][_0x23b7('0x1a')]);}logger[_0x23b7('0x18')](_0x23b7('0x14'),_0x1139b3,_0x301553['error'][_0x23b7('0x1a')]);return _0x7c021e(_0x301553['error'][_0x23b7('0x1a')]);}else{logger['info'](_0x23b7('0x14'),_0x1139b3,_0x23b7('0x15'));_0x7c021e(_0x301553[_0x23b7('0x1b')][_0x23b7('0x1a')]);}})['catch'](function(_0x2dc040){logger[_0x23b7('0x18')](_0x23b7('0x14'),_0x1139b3,_0x2dc040);_0x56f93a(_0x2dc040);});});}exports[_0x23b7('0x1c')]=function(_0x9126fb){var _0x92c285=this;return new Promise(function(_0x4858db,_0x18b1da){return db[_0x23b7('0x1d')][_0x23b7('0x1e')](_0x9126fb[_0x23b7('0x1f')],{'raw':_0x9126fb[_0x23b7('0x20')]?_0x9126fb[_0x23b7('0x20')][_0x23b7('0x21')]===undefined?!![]:![]:!![]})['then'](function(_0x102cbf){logger[_0x23b7('0x13')](_0x23b7('0x1c'),_0x9126fb);logger['debug'](_0x23b7('0x1c'),_0x9126fb,JSON['stringify'](_0x102cbf));_0x4858db(_0x102cbf);})[_0x23b7('0x22')](function(_0x2130f0){logger[_0x23b7('0x18')]('CreatePlugin',_0x2130f0[_0x23b7('0x1a')],_0x9126fb);_0x18b1da(_0x92c285[_0x23b7('0x18')](0x1f4,_0x2130f0[_0x23b7('0x1a')]));});});};
\ No newline at end of file
index 873f74a..52fb1fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5600=['save','remove','update','emit','removeListener','register','plugin:'];(function(_0x154a27,_0x8fee08){var _0x201b9c=function(_0x42b3b6){while(--_0x42b3b6){_0x154a27['push'](_0x154a27['shift']());}};_0x201b9c(++_0x8fee08);}(_0x5600,0x150));var _0x0560=function(_0x33975c,_0x50d085){_0x33975c=_0x33975c-0x0;var _0x1c15ab=_0x5600[_0x33975c];return _0x1c15ab;};'use strict';var PluginEvents=require('./plugin.events');var events=[_0x0560('0x0'),_0x0560('0x1'),_0x0560('0x2')];function createListener(_0x2d33e0,_0x3f536f){return function(_0x1a02cd){_0x3f536f[_0x0560('0x3')](_0x2d33e0,_0x1a02cd);};}function removeListener(_0x271ef5,_0x473ed3){return function(){PluginEvents[_0x0560('0x4')](_0x271ef5,_0x473ed3);};}exports[_0x0560('0x5')]=function(_0x26dcb4){for(var _0x4f191b=0x0,_0x240b18=events['length'];_0x4f191b<_0x240b18;_0x4f191b++){var _0x4e86f2=events[_0x4f191b];var _0x1d853f=createListener(_0x0560('0x6')+_0x4e86f2,_0x26dcb4);PluginEvents['on'](_0x4e86f2,_0x1d853f);}};
\ No newline at end of file
+var _0x184f=['remove','emit','removeListener','register','length','plugin:','save'];(function(_0x5234a4,_0x1c3c78){var _0x485968=function(_0x2049ea){while(--_0x2049ea){_0x5234a4['push'](_0x5234a4['shift']());}};_0x485968(++_0x1c3c78);}(_0x184f,0x179));var _0xf184=function(_0xb8cfbe,_0x2e81b6){_0xb8cfbe=_0xb8cfbe-0x0;var _0x227d51=_0x184f[_0xb8cfbe];return _0x227d51;};'use strict';var PluginEvents=require('./plugin.events');var events=[_0xf184('0x0'),_0xf184('0x1'),'update'];function createListener(_0x4d9153,_0x2abb5a){return function(_0x3570d8){_0x2abb5a[_0xf184('0x2')](_0x4d9153,_0x3570d8);};}function removeListener(_0x3227df,_0x2e383c){return function(){PluginEvents[_0xf184('0x3')](_0x3227df,_0x2e383c);};}exports[_0xf184('0x4')]=function(_0x5b888b){for(var _0x71341f=0x0,_0x5421d0=events[_0xf184('0x5')];_0x71341f<_0x5421d0;_0x71341f++){var _0x271ec4=events[_0x71341f];var _0x5d7c76=createListener(_0xf184('0x6')+_0x271ec4,_0x5b888b);PluginEvents['on'](_0x271ec4,_0x5d7c76);}};
\ No newline at end of file
index f2d326c..a0a583f 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(_0x5821b7,_0x21697a){var _0x12dcf9=function(_0x563d52){while(--_0x563d52){_0x5821b7['push'](_0x5821b7['shift']());}};_0x12dcf9(++_0x21697a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x45e98e,_0x169b60){_0x45e98e=_0x45e98e-0x0;var _0x374dba=_0xa9e0[_0x45e98e];return _0x374dba;};'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(_0x26b08b,_0x83950c){var _0x2df6ba=function(_0x3c6e53){while(--_0x3c6e53){_0x26b08b['push'](_0x26b08b['shift']());}};_0x2df6ba(++_0x83950c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2160a9,_0x3cbd9e){_0x2160a9=_0x2160a9-0x0;var _0xa88cf7=_0xa9e0[_0x2160a9];return _0xa88cf7;};'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 8771d88..9262da9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ea3=['dirname','start','dump','send','Missing\x20name\x20and/or\x20path','update','destroy','lodash','../../config/pm2','../../config/logger','api','child_process','bluebird','sendStatus','status','json','error','name','npm\x20install','info','index','list','then','reject','express','length','catch','show','describe','params','create','body','script','../../files/plugins','chdir'];(function(_0x10fde7,_0x45be17){var _0x224407=function(_0x171330){while(--_0x171330){_0x10fde7['push'](_0x10fde7['shift']());}};_0x224407(++_0x45be17);}(_0x4ea3,0x70));var _0x34ea=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x4ea3[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x34ea('0x0'));var pm2=require(_0x34ea('0x1'));var logger=require(_0x34ea('0x2'))(_0x34ea('0x3'));var path=require('path');var exec=require(_0x34ea('0x4'))['exec'];var BPromise=require(_0x34ea('0x5'));function handleEntityNotFound(_0x571f1b,_0x5e5a84){return function(_0x2ce955){if(!_0x2ce955){_0x571f1b[_0x34ea('0x6')](0x194);;}return _0x2ce955;};}function respondWithResult(_0x962596,_0x123d48){_0x123d48=_0x123d48||0xc8;return function(_0x40434e){if(_0x40434e){return _0x962596[_0x34ea('0x7')](_0x123d48)[_0x34ea('0x8')](_0x40434e);}return null;};}function handleError(_0x5bec7c,_0x341727){_0x341727=_0x341727||0x1f4;return function(_0x6e9ccc){logger[_0x34ea('0x9')](_0x6e9ccc['stack']);if(_0x6e9ccc[_0x34ea('0xa')]){delete _0x6e9ccc[_0x34ea('0xa')];}_0x5bec7c['status'](_0x341727)['send'](_0x6e9ccc);};}function execChildProcess(){return new BPromise(function(_0x5bd8b6,_0x346287){exec(_0x34ea('0xb'),function(_0x58bb0d,_0x11229e,_0x29a5c8){logger[_0x34ea('0xc')](_0x11229e);logger[_0x34ea('0xc')](_0x29a5c8);if(_0x58bb0d){logger[_0x34ea('0x9')](_0x58bb0d);return _0x346287(_0x58bb0d);}return _0x5bd8b6(_0x11229e);});});}exports[_0x34ea('0xd')]=function(_0x37e1b4,_0x36af43){return pm2[_0x34ea('0xe')]()[_0x34ea('0xf')](function(_0x36a4c6){if(_0x36a4c6){var _0x5ef9ae=_[_0x34ea('0x10')](_0x36a4c6,function(_0x89e3f2){return _0x89e3f2[_0x34ea('0xa')]===_0x34ea('0x11')||_0x89e3f2[_0x34ea('0xa')]==='motion2';});return{'rows':_0x5ef9ae,'count':_0x5ef9ae[_0x34ea('0x12')]};}return null;})[_0x34ea('0xf')](respondWithResult(_0x36af43,null))[_0x34ea('0x13')](handleError(_0x36af43,null));};exports[_0x34ea('0x14')]=function(_0x5f420f,_0x2680e0){return pm2[_0x34ea('0x15')](_0x5f420f[_0x34ea('0x16')]['id'])['then'](respondWithResult(_0x2680e0,null))[_0x34ea('0xf')](handleEntityNotFound(_0x2680e0,null))[_0x34ea('0x13')](handleError(_0x2680e0,null));};exports[_0x34ea('0x17')]=function(_0x127308,_0x52af16){if(_0x127308[_0x34ea('0x18')][_0x34ea('0xa')]&&_0x127308[_0x34ea('0x18')][_0x34ea('0x19')]){var _0x4fc1a2=path['join'](__dirname,_0x34ea('0x1a'),_0x127308[_0x34ea('0x18')][_0x34ea('0x19')]);var _0x51022f=process['cwd']();process[_0x34ea('0x1b')](path[_0x34ea('0x1c')](_0x4fc1a2));return execChildProcess()[_0x34ea('0xf')](function(_0x30c4b0){process[_0x34ea('0x1b')](_0x51022f);return pm2[_0x34ea('0x1d')]({'name':_0x127308['body'][_0x34ea('0xa')],'script':_0x4fc1a2});})[_0x34ea('0xf')](function(_0x3c0983){pm2[_0x34ea('0x1e')]();return _0x3c0983[0x0];})['then'](respondWithResult(_0x52af16,0xc9))['catch'](handleError(_0x52af16,null));}else{return _0x52af16['status'](0x1f4)[_0x34ea('0x1f')]({'message':_0x34ea('0x20')});}};exports[_0x34ea('0x21')]=function(_0x4204d7,_0x5b8b3e){if(_0x4204d7[_0x34ea('0x18')]['id']){delete _0x4204d7[_0x34ea('0x18')]['id'];}var _0x27c6f7={'online':'restart','stopped':'stop'};if(_0x27c6f7['hasOwnProperty'](_0x4204d7['body'][_0x34ea('0x7')])){return pm2[_0x27c6f7[_0x4204d7[_0x34ea('0x18')][_0x34ea('0x7')]]](_0x4204d7[_0x34ea('0x16')]['id'])['then'](respondWithResult(_0x5b8b3e,0xc8))[_0x34ea('0x13')](handleError(_0x5b8b3e,null));}else{return _0x5b8b3e['status'](0x1f4)[_0x34ea('0x1f')]({'message':'Unknown\x20status'});}};exports[_0x34ea('0x22')]=function(_0x14e018,_0x3cb968){if(_0x14e018['body']['id']){delete _0x14e018[_0x34ea('0x18')]['id'];}if(_0x14e018[_0x34ea('0x16')]['id']){return pm2['delete'](_0x14e018[_0x34ea('0x16')]['id'])['then'](function(_0x1392b6){pm2[_0x34ea('0x1e')]();return _0x1392b6[0x0];})[_0x34ea('0xf')](respondWithResult(_0x3cb968,null))['catch'](handleError(_0x3cb968,null));}else{return _0x3cb968['status'](0x1f4)[_0x34ea('0x1f')]({'message':'Unknown\x20id'});}};
\ No newline at end of file
+var _0xbee3=['sendStatus','status','json','error','name','send','info','index','then','reject','length','describe','params','catch','create','body','join','script','cwd','chdir','dirname','start','dump','Missing\x20name\x20and/or\x20path','restart','stop','Unknown\x20id','../../config/pm2','path','child_process','bluebird'];(function(_0x481bf7,_0x437f69){var _0x461787=function(_0xb3bc9d){while(--_0xb3bc9d){_0x481bf7['push'](_0x481bf7['shift']());}};_0x461787(++_0x437f69);}(_0xbee3,0xd5));var _0x3bee=function(_0x3c59d4,_0x4f3e06){_0x3c59d4=_0x3c59d4-0x0;var _0x189167=_0xbee3[_0x3c59d4];return _0x189167;};'use strict';var _=require('lodash');var pm2=require(_0x3bee('0x0'));var logger=require('../../config/logger')('api');var path=require(_0x3bee('0x1'));var exec=require(_0x3bee('0x2'))['exec'];var BPromise=require(_0x3bee('0x3'));function handleEntityNotFound(_0x1956c1,_0x1cf379){return function(_0x507c6a){if(!_0x507c6a){_0x1956c1[_0x3bee('0x4')](0x194);;}return _0x507c6a;};}function respondWithResult(_0x3baf77,_0x4c5ef5){_0x4c5ef5=_0x4c5ef5||0xc8;return function(_0x2fdeec){if(_0x2fdeec){return _0x3baf77[_0x3bee('0x5')](_0x4c5ef5)[_0x3bee('0x6')](_0x2fdeec);}return null;};}function handleError(_0x339223,_0xbdd5d5){_0xbdd5d5=_0xbdd5d5||0x1f4;return function(_0x9aab05){logger[_0x3bee('0x7')](_0x9aab05['stack']);if(_0x9aab05[_0x3bee('0x8')]){delete _0x9aab05[_0x3bee('0x8')];}_0x339223[_0x3bee('0x5')](_0xbdd5d5)[_0x3bee('0x9')](_0x9aab05);};}function execChildProcess(){return new BPromise(function(_0x356fef,_0xc53ada){exec('npm\x20install',function(_0x32c0b,_0x5bb283,_0x2da716){logger[_0x3bee('0xa')](_0x5bb283);logger[_0x3bee('0xa')](_0x2da716);if(_0x32c0b){logger[_0x3bee('0x7')](_0x32c0b);return _0xc53ada(_0x32c0b);}return _0x356fef(_0x5bb283);});});}exports[_0x3bee('0xb')]=function(_0x459129,_0xc8c1f0){return pm2['list']()[_0x3bee('0xc')](function(_0x33504d){if(_0x33504d){var _0x31ac52=_[_0x3bee('0xd')](_0x33504d,function(_0x3a0396){return _0x3a0396['name']==='express'||_0x3a0396[_0x3bee('0x8')]==='motion2';});return{'rows':_0x31ac52,'count':_0x31ac52[_0x3bee('0xe')]};}return null;})[_0x3bee('0xc')](respondWithResult(_0xc8c1f0,null))['catch'](handleError(_0xc8c1f0,null));};exports['show']=function(_0x1582a4,_0x36c5aa){return pm2[_0x3bee('0xf')](_0x1582a4[_0x3bee('0x10')]['id'])['then'](respondWithResult(_0x36c5aa,null))[_0x3bee('0xc')](handleEntityNotFound(_0x36c5aa,null))[_0x3bee('0x11')](handleError(_0x36c5aa,null));};exports[_0x3bee('0x12')]=function(_0x49b32d,_0x33d812){if(_0x49b32d[_0x3bee('0x13')][_0x3bee('0x8')]&&_0x49b32d['body']['script']){var _0x1afd0f=path[_0x3bee('0x14')](__dirname,'../../files/plugins',_0x49b32d[_0x3bee('0x13')][_0x3bee('0x15')]);var _0x2eea75=process[_0x3bee('0x16')]();process[_0x3bee('0x17')](path[_0x3bee('0x18')](_0x1afd0f));return execChildProcess()[_0x3bee('0xc')](function(_0x582fa9){process[_0x3bee('0x17')](_0x2eea75);return pm2[_0x3bee('0x19')]({'name':_0x49b32d[_0x3bee('0x13')][_0x3bee('0x8')],'script':_0x1afd0f});})['then'](function(_0x45249c){pm2[_0x3bee('0x1a')]();return _0x45249c[0x0];})[_0x3bee('0xc')](respondWithResult(_0x33d812,0xc9))['catch'](handleError(_0x33d812,null));}else{return _0x33d812['status'](0x1f4)[_0x3bee('0x9')]({'message':_0x3bee('0x1b')});}};exports['update']=function(_0x2c0e50,_0x1b4ce0){if(_0x2c0e50[_0x3bee('0x13')]['id']){delete _0x2c0e50['body']['id'];}var _0x1984c4={'online':_0x3bee('0x1c'),'stopped':_0x3bee('0x1d')};if(_0x1984c4['hasOwnProperty'](_0x2c0e50[_0x3bee('0x13')][_0x3bee('0x5')])){return pm2[_0x1984c4[_0x2c0e50[_0x3bee('0x13')]['status']]](_0x2c0e50[_0x3bee('0x10')]['id'])[_0x3bee('0xc')](respondWithResult(_0x1b4ce0,0xc8))[_0x3bee('0x11')](handleError(_0x1b4ce0,null));}else{return _0x1b4ce0[_0x3bee('0x5')](0x1f4)[_0x3bee('0x9')]({'message':'Unknown\x20status'});}};exports['destroy']=function(_0x3fbc8c,_0x1e1529){if(_0x3fbc8c[_0x3bee('0x13')]['id']){delete _0x3fbc8c[_0x3bee('0x13')]['id'];}if(_0x3fbc8c['params']['id']){return pm2['delete'](_0x3fbc8c[_0x3bee('0x10')]['id'])[_0x3bee('0xc')](function(_0x4f5b58){pm2['dump']();return _0x4f5b58[0x0];})[_0x3bee('0xc')](respondWithResult(_0x1e1529,null))[_0x3bee('0x11')](handleError(_0x1e1529,null));}else{return _0x1e1529[_0x3bee('0x5')](0x1f4)[_0x3bee('0x9')]({'message':_0x3bee('0x1e')});}};
\ No newline at end of file
index 8f1838b..77c62bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81a5=['express','Router','../../components/auth/service','./realtime.controller','get','/agents','isAuthenticated','getAgents','/queues','exports'];(function(_0x2e04e2,_0xceac3a){var _0x24cdac=function(_0x227328){while(--_0x227328){_0x2e04e2['push'](_0x2e04e2['shift']());}};_0x24cdac(++_0xceac3a);}(_0x81a5,0x17c));var _0x581a=function(_0x35f589,_0x305b30){_0x35f589=_0x35f589-0x0;var _0x17b1d3=_0x81a5[_0x35f589];return _0x17b1d3;};'use strict';var express=require(_0x581a('0x0'));var router=express[_0x581a('0x1')]();var auth=require(_0x581a('0x2'));var controller=require(_0x581a('0x3'));router[_0x581a('0x4')](_0x581a('0x5'),auth[_0x581a('0x6')](),controller[_0x581a('0x7')]);router['get'](_0x581a('0x8'),auth[_0x581a('0x6')](),controller['getQueues']);module[_0x581a('0x9')]=router;
\ No newline at end of file
+var _0xda33=['./realtime.controller','get','/agents','isAuthenticated','getAgents','/queues','getQueues','exports','express','Router','../../components/auth/service'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xda33,0x189));var _0x3da3=function(_0x329ad6,_0x52fff3){_0x329ad6=_0x329ad6-0x0;var _0x4aa935=_0xda33[_0x329ad6];return _0x4aa935;};'use strict';var express=require(_0x3da3('0x0'));var router=express[_0x3da3('0x1')]();var auth=require(_0x3da3('0x2'));var controller=require(_0x3da3('0x3'));router[_0x3da3('0x4')](_0x3da3('0x5'),auth[_0x3da3('0x6')](),controller[_0x3da3('0x7')]);router['get'](_0x3da3('0x8'),auth[_0x3da3('0x6')](),controller[_0x3da3('0x9')]);module[_0x3da3('0xa')]=router;
\ No newline at end of file
index 0932573..cc55393 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b62=['rawAttributes','fieldName','type','role','agent','getOptions','raw','sequelize','FIELD(id,','forEach','where','user','userProfileId','extraQueryConditions','assign','UserProfile','getResources','User','filterAgentAttributes','getAgentStatus','Status','getQueues','startCase','filter','findAndCountAll','all','lodash','api','../../mysqldb','client','http','offset','undefined','count','limit','status','set','Content-Range','json','error','stack','name','voice','request','Queues','then','format','catch','VoiceQueuesChannels','Unable\x20to\x20retrieve\x20voice\x20queues\x20channels','result','loggedIn','available','waiting','talking','paused','outbound','pTalking','originated','message','dialActive','startPredictive','erlangCalls','erlangCallToSecond','erlangBusyFactor','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','predictiveIntervalAvailable','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','get','busy','find','merge','pick','queue','length','some','connectedlinenum','internal','toString','getMembers','UserId','accountcode','online','voiceStatus','agents','push','Queue','Pause','getChannels','includes','toLowerCase','getAgents','query','globalQueueFilter','globalStatusFilter','pause','*pause','resolve','channel','sort','globalStatus','getUpdatedSortOptions','fields','order','getAgentIdsByQueues','getRealtimeAgents','rows','getSortedAgentsIdsByStatus','getAgentIdsByStatus','map'];(function(_0x2de598,_0x1de96d){var _0x5f4564=function(_0x474dd3){while(--_0x474dd3){_0x2de598['push'](_0x2de598['shift']());}};_0x5f4564(++_0x1de96d);}(_0x2b62,0x170));var _0x22b6=function(_0x39f43c,_0x577bed){_0x39f43c=_0x39f43c-0x0;var _0x164132=_0x2b62[_0x39f43c];return _0x164132;};'use strict';var util=require('util');var _=require(_0x22b6('0x0'));var jayson=require('jayson/promise');var rta=require('../../components/realtime/agents');var qs=require('../../components/parsers/qs');var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x22b6('0x1'));var db=require(_0x22b6('0x2'))['db'];var amiClient=jayson[_0x22b6('0x3')][_0x22b6('0x4')]({'port':0x232a});var routingClient=jayson['client'][_0x22b6('0x4')]({'port':0x232c});function respondWithFilteredResult(_0xc632e1,_0x5257a7){return function(_0x4951dc){if(_0x4951dc){var _0x2bf219=typeof _0x5257a7[_0x22b6('0x5')]===_0x22b6('0x6')&&typeof _0x5257a7['limit']===_0x22b6('0x6');var _0x24b9d5=_0x4951dc[_0x22b6('0x7')];var _0x5e48b6=_0x2bf219?0x0:_0x5257a7[_0x22b6('0x5')];var _0x45e4c9=_0x2bf219?_0x4951dc['count']:_0x5257a7[_0x22b6('0x5')]+_0x5257a7[_0x22b6('0x8')];var _0x12d9c5;if(_0x45e4c9>=_0x24b9d5){_0x45e4c9=_0x24b9d5;_0x12d9c5=0xc8;}else{_0x12d9c5=0xce;}_0xc632e1[_0x22b6('0x9')](_0x12d9c5);return _0xc632e1[_0x22b6('0xa')](_0x22b6('0xb'),_0x5e48b6+'-'+_0x45e4c9+'/'+_0x24b9d5)[_0x22b6('0xc')](_0x4951dc);}return null;};}function handleError(_0x576648,_0x2938d6){_0x2938d6=_0x2938d6||0x1f4;return function(_0x57b6c1){logger[_0x22b6('0xd')](_0x57b6c1[_0x22b6('0xe')]);if(_0x57b6c1[_0x22b6('0xf')]){delete _0x57b6c1[_0x22b6('0xf')];}_0x576648[_0x22b6('0x9')](_0x2938d6)['send'](_0x57b6c1);};}function getRealtimeQueues(_0x919f47,_0x4a127b){return new Promise(function(_0x298028,_0x565e4e){var _0x4b2717=_0x4a127b===_0x22b6('0x10')?amiClient:routingClient;return _0x4b2717[_0x22b6('0x11')](_['startCase'](_0x4a127b)+_0x22b6('0x12'),_0x919f47)[_0x22b6('0x13')](function(_0x5515ea){if(_0x5515ea[_0x22b6('0xd')])throw new Error(util[_0x22b6('0x14')]('Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues',_0x4a127b));return _0x298028(_0x5515ea['result']);})[_0x22b6('0x15')](function(_0x46d61){_0x565e4e(_0x46d61);});});}function getRealtimeVoiceQueueChannels(){return new Promise(function(_0x400782,_0x37c9f5){return amiClient[_0x22b6('0x11')](_0x22b6('0x16'),{})[_0x22b6('0x13')](function(_0x4b112d){if(_0x4b112d[_0x22b6('0xd')])throw new Error(_0x22b6('0x17'));return _0x400782(_0x4b112d[_0x22b6('0x18')]);})['catch'](function(_0x2ac6d8){_0x37c9f5(_0x2ac6d8);});});}function initializeQueues(_0x757a6a,_0x43bfff,_0x456c03,_0x10eff1){var _0x5bf077=[_0x22b6('0x19'),_0x22b6('0x1a'),_0x22b6('0x1b'),_0x22b6('0x1c'),_0x22b6('0x1d')];if(_0x456c03===_0x22b6('0x10')&&_0x10eff1===_0x22b6('0x1e')){_0x5bf077['push'](_0x22b6('0x1f'),_0x22b6('0x20'),_0x22b6('0x21'),_0x22b6('0x22'),'dialMethod','Trunk',_0x22b6('0x23'),'startProgressive',_0x22b6('0x24'),_0x22b6('0x25'),'erlangAbandonmentRate',_0x22b6('0x26'),'dialPredictiveInterval',_0x22b6('0x27'),_0x22b6('0x28'),_0x22b6('0x29'),'predictiveIntervalTotalCalls',_0x22b6('0x2a'),'predictiveIntervalDroppedCallsTimeout',_0x22b6('0x2b'),_0x22b6('0x2c'),_0x22b6('0x2d'));}return _0x757a6a['map'](function(_0x53572c){var _0x1452a5=_0x53572c[_0x22b6('0x2e')]({'plain':!![]});_0x1452a5['agents']=[];_0x1452a5[_0x22b6('0x1d')]=0x0;_0x1452a5['loggedInDb']=0x0;_0x1452a5[_0x22b6('0x19')]=0x0;_0x1452a5[_0x22b6('0x1a')]=0x0;_0x1452a5['waiting']=0x0;if(_0x456c03===_0x22b6('0x10')){_0x1452a5['talking']=0x0;_0x1452a5[_0x22b6('0x2f')]=0x0;if(_0x10eff1===_0x22b6('0x1e')){_0x1452a5[_0x22b6('0x1f')]=0x0;_0x1452a5[_0x22b6('0x20')]=0x0;}}var _0x170a4f=_[_0x22b6('0x30')](_0x43bfff,['id',_0x1452a5['id']]);if(_0x170a4f)_[_0x22b6('0x31')](_0x1452a5,_[_0x22b6('0x32')](_0x170a4f,_0x5bf077));return _0x1452a5;});}function updateAgentVoiceStatus(_0x1f8d73,_0x43e370,_0x78a4e9){var _0x27610b=_['filter'](_0x78a4e9,[_0x22b6('0x33'),_0x43e370[_0x22b6('0xf')]]);if(_0x27610b[_0x22b6('0x34')]===0x0)return _0x1f8d73['busy']=!![];if(_[_0x22b6('0x35')](_0x27610b,[_0x22b6('0x36'),_0x1f8d73[_0x22b6('0x37')][_0x22b6('0x38')]()]))return _0x1f8d73[_0x22b6('0x1c')]=!![];if(!_0x1f8d73['talking'])return _0x1f8d73[_0x22b6('0x2f')]=!![];}function getVoiceQueueAgents(_0x462806,_0x1d0512,_0x47b6aa,_0x50d11d){var _0x527a9d=_[_0x22b6('0x30')](_0x1d0512,['id',_0x462806['id']]);if(!_0x527a9d)return _0x462806;return _0x527a9d[_0x22b6('0x39')]({'raw':!![]})[_0x22b6('0x13')](function(_0x23b780){for(var _0x3c0ab5=0x0;_0x3c0ab5<_0x23b780[_0x22b6('0x34')];_0x3c0ab5++){var _0x1f0b70=_[_0x22b6('0x30')](_0x47b6aa,['id',_0x23b780[_0x3c0ab5][_0x22b6('0x3a')]]);if(!_0x1f0b70){_0x1f0b70={'id':_0x23b780[_0x3c0ab5][_0x22b6('0x3a')],'name':_0x23b780[_0x3c0ab5]['UserId'],'accountcode':'','online':![]};}var _0x338fe6={'id':_0x1f0b70['id'],'name':_0x1f0b70[_0x22b6('0xf')],'internal':_0x1f0b70[_0x22b6('0x3b')],'online':Boolean(_0x1f0b70[_0x22b6('0x3c')]),'paused':Boolean(_0x23b780[_0x3c0ab5][_0x22b6('0x1d')])};if(_0x1f0b70[_0x22b6('0x3d')]==='talking')updateAgentVoiceStatus(_0x338fe6,_0x462806,_0x50d11d);if(_0x338fe6[_0x22b6('0x3c')])_0x462806['loggedInDb']++;if(_0x338fe6[_0x22b6('0x2f')])_0x462806[_0x22b6('0x2f')]++;if(_0x338fe6[_0x22b6('0x1d')]&&!_0x338fe6[_0x22b6('0x2f')]&&!_0x338fe6[_0x22b6('0x1c')])_0x462806[_0x22b6('0x1d')]++;_0x462806[_0x22b6('0x3e')][_0x22b6('0x3f')](_0x338fe6);}return _0x462806;});}function getQueueAgents(_0x44bc56,_0x197659,_0x48625c){var _0x2ff321='User'+_['startCase'](_0x48625c)+_0x22b6('0x40');var _0xc8c169=_0x48625c+_0x22b6('0x41');return db[_0x2ff321]['findAll']({'where':{[_['startCase'](_0x48625c)+'QueueId']:_0x44bc56['id']},'raw':!![]})[_0x22b6('0x13')](function(_0x1caf8d){for(var _0x7f920e=0x0;_0x7f920e<_0x1caf8d['length'];_0x7f920e++){var _0x515439=_['find'](_0x197659,['id',_0x1caf8d[_0x7f920e][_0x22b6('0x3a')]]);if(!_0x515439){_0x515439={'id':_0x1caf8d[_0x7f920e][_0x22b6('0x3a')],'name':_0x1caf8d[_0x7f920e][_0x22b6('0x3a')],'online':![],['pauseField']:![]};}var _0x32ba7d={'id':_0x515439['id'],'name':_0x515439[_0x22b6('0xf')],'online':Boolean(_0x515439[_0x22b6('0x3c')]),'paused':Boolean(_0x515439[_0xc8c169])};if(_0x32ba7d[_0x22b6('0x3c')])_0x44bc56['loggedInDb']++;_0x44bc56[_0x22b6('0x3e')][_0x22b6('0x3f')](_0x32ba7d);}return _0x44bc56;});}function validateChannel(_0xdc88c9){var _0x1beb0a=utils[_0x22b6('0x42')]();if(!_[_0x22b6('0x43')](_0x1beb0a,_0xdc88c9['toLowerCase']()))throw new Error('Invalid\x20channel');return _0xdc88c9[_0x22b6('0x44')]();}exports[_0x22b6('0x45')]=function(_0x23f035,_0x243279){var _0x1e1a7b={'count':0x0,'rows':[]};var _0x49829a={};var _0x4ba32f;var _0x3003e1;var _0x41cd08;var _0x327ead;var _0x4530a9=utils[_0x22b6('0x42')]();var _0x1837f7=_0x23f035[_0x22b6('0x46')][_0x22b6('0x47')];var _0x425b71=_0x23f035[_0x22b6('0x46')][_0x22b6('0x48')];var _0x3952ce=_0x23f035[_0x22b6('0x46')]['pauseTypeFilter'];var _0x22aac4=_0x425b71===_0x22b6('0x49')||_0x425b71===_0x22b6('0x4a')?!![]:![];var _0x1935ae=[];var _0x5dc09e;Promise[_0x22b6('0x4b')]()[_0x22b6('0x13')](function(){if(_0x23f035[_0x22b6('0x46')][_0x22b6('0x4c')]){_0x4ba32f=validateChannel(_0x23f035[_0x22b6('0x46')][_0x22b6('0x4c')]);}if(!_0x23f035[_0x22b6('0x46')]['sort']||!_0x23f035[_0x22b6('0x46')][_0x22b6('0x4d')][_0x22b6('0x43')](_0x22b6('0x4e'))){_0x23f035[_0x22b6('0x46')][_0x22b6('0x4d')]=rta['validateSortParameter'](_0x23f035[_0x22b6('0x46')]['sort']);return;}var _0x272101=rta[_0x22b6('0x4f')](_0x23f035[_0x22b6('0x46')]['sort']);_0x23f035['query'][_0x22b6('0x4d')]=_0x272101[_0x22b6('0x50')]['join'](',');_0x3003e1=_0x272101[_0x22b6('0x51')];})[_0x22b6('0x13')](function(){if(!_0x1837f7){return[];}return rta[_0x22b6('0x52')](_0x1837f7,_0x4ba32f);})[_0x22b6('0x13')](function(_0x353cdb){_0x1935ae=_0x353cdb;return rta[_0x22b6('0x53')]();})[_0x22b6('0x13')](function(_0x122599){_0x327ead=_0x122599[_0x22b6('0x54')];if((!_0x425b71||_0x22aac4)&&!_0x3003e1){return _0x1935ae;}if(_0x3003e1&&!_0x425b71){return rta[_0x22b6('0x55')](_0x327ead,_0x1935ae,_0x3003e1);}else{return rta[_0x22b6('0x56')](_0x327ead,_0x1935ae,_0x425b71);}})[_0x22b6('0x13')](function(_0x1495be){_0x1935ae=_0x1495be;var _0x2174a9=![];if(_0x1935ae['length']===0x0){if(_0x1837f7||_0x425b71){_0x2174a9=!![];}if(_0x22aac4){_0x2174a9=![];}}if(_0x2174a9){return _0x1e1a7b;}var _0x816260=_[_0x22b6('0x57')](db['User'][_0x22b6('0x58')],function(_0x4993e8){return{'name':_0x4993e8[_0x22b6('0x59')],'type':_0x4993e8[_0x22b6('0x5a')]['key']};});_0x23f035[_0x22b6('0x46')][_0x22b6('0x5b')]=_0x22b6('0x5c');_0x23f035[_0x22b6('0x46')][_0x22b6('0x3c')]=!![];_0x49829a=qs[_0x22b6('0x5d')](_0x816260,_0x23f035);_0x49829a[_0x22b6('0x5e')]=!![];var _0x128aa0=[];if(_0x1935ae[_0x22b6('0x34')]>0x0){_0x128aa0[_0x22b6('0x3f')]({'id':{'$in':_0x1935ae}});if(_0x3003e1&&!_0x425b71){_0x5dc09e=[db[_0x22b6('0x5f')]['literal'](_0x22b6('0x60')+_0x1935ae+')')];_0x49829a['order']=_0x5dc09e;}}if(_0x22aac4){_0x4530a9[_0x22b6('0x61')](function(_0xbc2983){var _0x15c726=!![];if(_0x425b71==='*pause'&&_0x4ba32f!==_0xbc2983){_0x15c726=![];}_0x128aa0[_0x22b6('0x3f')]({[_0xbc2983+'Pause']:_0x15c726});});if(_0x3952ce){_0x128aa0[_0x22b6('0x3f')]({'pauseType':_0x3952ce});}}else if(_0x425b71){_0x4530a9[_0x22b6('0x61')](function(_0x5e6b36){_0x128aa0['push']({[_0x5e6b36+_0x22b6('0x41')]:![]});});}_0x49829a[_0x22b6('0x62')]=_[_0x22b6('0x31')](_0x49829a['where'],{'$and':_0x128aa0});if(_0x23f035[_0x22b6('0x63')]['role']===_0x22b6('0x63')){var _0xa852e1={'params':{'id':_0x23f035[_0x22b6('0x63')][_0x22b6('0x64')]},'query':{'section':'Agents','role':'agent','online':!![],'raw':!![],'ids':_0x1935ae,'customSorting':_0x5dc09e}};if(_0x22aac4){_0xa852e1[_0x22b6('0x46')][_0x22b6('0x65')]=_0x128aa0;}_0xa852e1[_0x22b6('0x46')]=Object[_0x22b6('0x66')](_0xa852e1[_0x22b6('0x46')],_0x23f035['query']);delete _0xa852e1[_0x22b6('0x46')]['id'];return db[_0x22b6('0x67')][_0x22b6('0x68')](_0xa852e1);}return db[_0x22b6('0x69')]['findAndCountAll'](_0x49829a);})[_0x22b6('0x13')](function(_0x574481){_0x1e1a7b[_0x22b6('0x7')]=_0x574481[_0x22b6('0x7')];_0x41cd08=_0x574481[_0x22b6('0x54')];return _0x41cd08['map'](function(_0xf1463a){var _0x3fa7fd=_[_0x22b6('0x30')](_0x327ead,['id',_0xf1463a['id']]);if(_0x3fa7fd){var _0x1de3fa=rta[_0x22b6('0x6a')](_0x3fa7fd);_[_0x22b6('0x31')](_0xf1463a,_0x1de3fa);}_0xf1463a[_0x22b6('0x4e')]=rta[_0x22b6('0x6b')](_0xf1463a);if(_0xf1463a[_0x22b6('0x4e')][_0x22b6('0x43')](_0x22b6('0x49'))){_0x4530a9['forEach'](function(_0x5c42f9){if(_0xf1463a[_0x5c42f9+_0x22b6('0x41')]){_0xf1463a[_0x5c42f9+_0x22b6('0x6c')]=_0x22b6('0x49');}});}return _0xf1463a;});})[_0x22b6('0x13')](function(_0x5eda53){if(!_0x3003e1||_0x5dc09e){return _0x5eda53;}return rta['sortAgentsByStatus'](_0x5eda53,_0x3003e1);})[_0x22b6('0x13')](function(_0x5b7856){_0x1e1a7b[_0x22b6('0x54')]=_0x5b7856;return _0x1e1a7b;})[_0x22b6('0x13')](respondWithFilteredResult(_0x243279,_0x49829a))['catch'](handleError(_0x243279,null));};exports[_0x22b6('0x6d')]=function(_0x40d666,_0x475058){var _0x78cb84={'count':0x0,'rows':[]},_0x5b0fdc={},_0x2e25d7,_0x795ee9,_0x3f886f,_0x276ebd,_0x3d12e9;Promise['resolve']()[_0x22b6('0x13')](function(){if(_0x40d666[_0x22b6('0x46')][_0x22b6('0x4c')])_0x2e25d7=validateChannel(_0x40d666[_0x22b6('0x46')][_0x22b6('0x4c')]);var _0x2279a4=_['startCase'](_0x2e25d7)+_0x22b6('0x40');var _0xca65fc=_[_0x22b6('0x57')](db[_0x2279a4][_0x22b6('0x58')],function(_0x39d32f){return{'name':_0x39d32f[_0x22b6('0x59')],'type':_0x39d32f['type']['key']};});_0x5b0fdc=qs['getOptions'](_0xca65fc,_0x40d666);if(_0x40d666['user']['role']==='user'){var _0x1f8d97={'params':{'id':_0x40d666[_0x22b6('0x63')]['userProfileId']},'query':{'section':_0x2e25d7===_0x22b6('0x10')&&_0x40d666['query'][_0x22b6('0x5a')]===_0x22b6('0x1e')?'QueueCampaigns':_[_0x22b6('0x6e')](_0x2e25d7)+_0x22b6('0x12'),'type':_0x40d666['query'][_0x22b6('0x5a')],'nolimit':!![],'sort':'name','filter':_0x40d666[_0x22b6('0x46')][_0x22b6('0x6f')]}};return db[_0x22b6('0x67')][_0x22b6('0x68')](_0x1f8d97);}return db[_0x2279a4][_0x22b6('0x70')](_0x5b0fdc);})[_0x22b6('0x13')](function(_0x24cab2){_0x78cb84['count']=_0x24cab2['count'];_0x795ee9=_0x24cab2[_0x22b6('0x54')];return getRealtimeQueues(_0x40d666,_0x2e25d7);})[_0x22b6('0x13')](function(_0x43791a){_0x276ebd=_0x43791a[_0x22b6('0x54')];return rta[_0x22b6('0x53')]();})[_0x22b6('0x13')](function(_0x593bb9){_0x3f886f=_0x593bb9[_0x22b6('0x54')];if(_0x2e25d7!=_0x22b6('0x10'))return;return getRealtimeVoiceQueueChannels();})[_0x22b6('0x13')](function(_0x2e6804){_0x3d12e9=_0x2e6804?_0x2e6804[_0x22b6('0x54')]:[];return initializeQueues(_0x795ee9,_0x276ebd,_0x2e25d7,_0x40d666['query'][_0x22b6('0x5a')]);})['then'](function(_0x4e78a8){var _0x3f17b6=_0x4e78a8['map'](function(_0x319e70){if(_0x2e25d7===_0x22b6('0x10'))return getVoiceQueueAgents(_0x319e70,_0x795ee9,_0x3f886f,_0x3d12e9);else return getQueueAgents(_0x319e70,_0x3f886f,_0x2e25d7);});return Promise[_0x22b6('0x71')](_0x3f17b6);})['then'](function(_0x3984b5){_0x78cb84['rows']=_0x3984b5;return _0x78cb84;})['then'](respondWithFilteredResult(_0x475058,_0x5b0fdc))[_0x22b6('0x15')](handleError(_0x475058,null));};
\ No newline at end of file
+var _0xddd6=['assign','UserProfile','getResources','findAndCountAll','getAgentStatus','globalStatus','sortAgentsByStatus','getOptions','filter','getRealtimeAgents','all','lodash','jayson/promise','../../components/realtime/agents','../../components/parsers/qs','../../config/utils','api','client','http','offset','undefined','count','status','set','json','error','stack','name','send','request','startCase','then','format','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','result','catch','loggedIn','available','waiting','talking','paused','voice','outbound','push','pTalking','message','dialActive','dialMethod','Trunk','startPredictive','startProgressive','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialPredictiveIntervalMinThreshold','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','map','get','agents','busy','originated','find','merge','pick','queue','length','some','connectedlinenum','toString','getMembers','UserId','accountcode','online','voiceStatus','loggedInDb','Queue','findAll','QueueId','getChannels','includes','toLowerCase','query','globalQueueFilter','globalStatusFilter','pauseTypeFilter','pause','resolve','channel','sort','validateSortParameter','fields','join','getAgentIdsByQueues','rows','getSortedAgentsIdsByStatus','getAgentIdsByStatus','User','rawAttributes','fieldName','type','key','role','agent','raw','literal','FIELD(id,','order','forEach','Pause','where','user','userProfileId','Agents','extraQueryConditions'];(function(_0x2f06e0,_0x2e1c2a){var _0xf2711b=function(_0x32036c){while(--_0x32036c){_0x2f06e0['push'](_0x2f06e0['shift']());}};_0xf2711b(++_0x2e1c2a);}(_0xddd6,0x1e3));var _0x6ddd=function(_0x22d9c8,_0x57d2fa){_0x22d9c8=_0x22d9c8-0x0;var _0x2266ac=_0xddd6[_0x22d9c8];return _0x2266ac;};'use strict';var util=require('util');var _=require(_0x6ddd('0x0'));var jayson=require(_0x6ddd('0x1'));var rta=require(_0x6ddd('0x2'));var qs=require(_0x6ddd('0x3'));var utils=require(_0x6ddd('0x4'));var logger=require('../../config/logger')(_0x6ddd('0x5'));var db=require('../../mysqldb')['db'];var amiClient=jayson[_0x6ddd('0x6')][_0x6ddd('0x7')]({'port':0x232a});var routingClient=jayson['client'][_0x6ddd('0x7')]({'port':0x232c});function respondWithFilteredResult(_0x5d7019,_0x1d36be){return function(_0xaa23eb){if(_0xaa23eb){var _0x3a1a59=typeof _0x1d36be[_0x6ddd('0x8')]===_0x6ddd('0x9')&&typeof _0x1d36be['limit']==='undefined';var _0x508209=_0xaa23eb[_0x6ddd('0xa')];var _0x4dc6b1=_0x3a1a59?0x0:_0x1d36be[_0x6ddd('0x8')];var _0x3d73e9=_0x3a1a59?_0xaa23eb['count']:_0x1d36be[_0x6ddd('0x8')]+_0x1d36be['limit'];var _0x4aa2c1;if(_0x3d73e9>=_0x508209){_0x3d73e9=_0x508209;_0x4aa2c1=0xc8;}else{_0x4aa2c1=0xce;}_0x5d7019[_0x6ddd('0xb')](_0x4aa2c1);return _0x5d7019[_0x6ddd('0xc')]('Content-Range',_0x4dc6b1+'-'+_0x3d73e9+'/'+_0x508209)[_0x6ddd('0xd')](_0xaa23eb);}return null;};}function handleError(_0x5bb500,_0x10d721){_0x10d721=_0x10d721||0x1f4;return function(_0x2c2843){logger[_0x6ddd('0xe')](_0x2c2843[_0x6ddd('0xf')]);if(_0x2c2843[_0x6ddd('0x10')]){delete _0x2c2843[_0x6ddd('0x10')];}_0x5bb500['status'](_0x10d721)[_0x6ddd('0x11')](_0x2c2843);};}function getRealtimeQueues(_0x447ae5,_0x1d88ad){return new Promise(function(_0x5281a6,_0x1ac6a1){var _0x445101=_0x1d88ad==='voice'?amiClient:routingClient;return _0x445101[_0x6ddd('0x12')](_[_0x6ddd('0x13')](_0x1d88ad)+'Queues',_0x447ae5)[_0x6ddd('0x14')](function(_0x5de71e){if(_0x5de71e[_0x6ddd('0xe')])throw new Error(util[_0x6ddd('0x15')](_0x6ddd('0x16'),_0x1d88ad));return _0x5281a6(_0x5de71e[_0x6ddd('0x17')]);})['catch'](function(_0x3a89a7){_0x1ac6a1(_0x3a89a7);});});}function getRealtimeVoiceQueueChannels(){return new Promise(function(_0x797c02,_0x5602ad){return amiClient[_0x6ddd('0x12')]('VoiceQueuesChannels',{})[_0x6ddd('0x14')](function(_0x5901e1){if(_0x5901e1['error'])throw new Error('Unable\x20to\x20retrieve\x20voice\x20queues\x20channels');return _0x797c02(_0x5901e1[_0x6ddd('0x17')]);})[_0x6ddd('0x18')](function(_0x2d9d8b){_0x5602ad(_0x2d9d8b);});});}function initializeQueues(_0x87d013,_0x5cdfd4,_0x59b761,_0x3dfdab){var _0x21fc1b=[_0x6ddd('0x19'),_0x6ddd('0x1a'),_0x6ddd('0x1b'),_0x6ddd('0x1c'),_0x6ddd('0x1d')];if(_0x59b761===_0x6ddd('0x1e')&&_0x3dfdab===_0x6ddd('0x1f')){_0x21fc1b[_0x6ddd('0x20')](_0x6ddd('0x21'),'originated',_0x6ddd('0x22'),_0x6ddd('0x23'),_0x6ddd('0x24'),_0x6ddd('0x25'),_0x6ddd('0x26'),_0x6ddd('0x27'),_0x6ddd('0x28'),_0x6ddd('0x29'),_0x6ddd('0x2a'),_0x6ddd('0x2b'),'dialPredictiveInterval','dialPredictiveIntervalMaxThreshold',_0x6ddd('0x2c'),'predictiveIntervalAvailable','predictiveIntervalTotalCalls',_0x6ddd('0x2d'),_0x6ddd('0x2e'),'predictiveIntervalDroppedCallsCallersExit',_0x6ddd('0x2f'),_0x6ddd('0x30'));}return _0x87d013[_0x6ddd('0x31')](function(_0x451824){var _0x18d1f8=_0x451824[_0x6ddd('0x32')]({'plain':!![]});_0x18d1f8[_0x6ddd('0x33')]=[];_0x18d1f8[_0x6ddd('0x1d')]=0x0;_0x18d1f8['loggedInDb']=0x0;_0x18d1f8[_0x6ddd('0x19')]=0x0;_0x18d1f8[_0x6ddd('0x1a')]=0x0;_0x18d1f8['waiting']=0x0;if(_0x59b761===_0x6ddd('0x1e')){_0x18d1f8['talking']=0x0;_0x18d1f8[_0x6ddd('0x34')]=0x0;if(_0x3dfdab===_0x6ddd('0x1f')){_0x18d1f8['pTalking']=0x0;_0x18d1f8[_0x6ddd('0x35')]=0x0;}}var _0x4a9444=_[_0x6ddd('0x36')](_0x5cdfd4,['id',_0x18d1f8['id']]);if(_0x4a9444)_[_0x6ddd('0x37')](_0x18d1f8,_[_0x6ddd('0x38')](_0x4a9444,_0x21fc1b));return _0x18d1f8;});}function updateAgentVoiceStatus(_0xecb103,_0x2d114a,_0x8850c5){var _0xc9644f=_['filter'](_0x8850c5,[_0x6ddd('0x39'),_0x2d114a[_0x6ddd('0x10')]]);if(_0xc9644f[_0x6ddd('0x3a')]===0x0)return _0xecb103[_0x6ddd('0x34')]=!![];if(_[_0x6ddd('0x3b')](_0xc9644f,[_0x6ddd('0x3c'),_0xecb103['internal'][_0x6ddd('0x3d')]()]))return _0xecb103[_0x6ddd('0x1c')]=!![];if(!_0xecb103[_0x6ddd('0x1c')])return _0xecb103[_0x6ddd('0x34')]=!![];}function getVoiceQueueAgents(_0x3ffc1a,_0x2a90d2,_0x3221d2,_0x5b0f6d){var _0x1ca946=_[_0x6ddd('0x36')](_0x2a90d2,['id',_0x3ffc1a['id']]);if(!_0x1ca946)return _0x3ffc1a;return _0x1ca946[_0x6ddd('0x3e')]({'raw':!![]})[_0x6ddd('0x14')](function(_0x2a5900){for(var _0x5c3381=0x0;_0x5c3381<_0x2a5900[_0x6ddd('0x3a')];_0x5c3381++){var _0x482721=_[_0x6ddd('0x36')](_0x3221d2,['id',_0x2a5900[_0x5c3381][_0x6ddd('0x3f')]]);if(!_0x482721){_0x482721={'id':_0x2a5900[_0x5c3381][_0x6ddd('0x3f')],'name':_0x2a5900[_0x5c3381][_0x6ddd('0x3f')],'accountcode':'','online':![]};}var _0x373fc2={'id':_0x482721['id'],'name':_0x482721[_0x6ddd('0x10')],'internal':_0x482721[_0x6ddd('0x40')],'online':Boolean(_0x482721[_0x6ddd('0x41')]),'paused':Boolean(_0x2a5900[_0x5c3381][_0x6ddd('0x1d')])};if(_0x482721[_0x6ddd('0x42')]==='talking')updateAgentVoiceStatus(_0x373fc2,_0x3ffc1a,_0x5b0f6d);if(_0x373fc2[_0x6ddd('0x41')])_0x3ffc1a[_0x6ddd('0x43')]++;if(_0x373fc2[_0x6ddd('0x34')])_0x3ffc1a[_0x6ddd('0x34')]++;if(_0x373fc2[_0x6ddd('0x1d')]&&!_0x373fc2['busy']&&!_0x373fc2[_0x6ddd('0x1c')])_0x3ffc1a[_0x6ddd('0x1d')]++;_0x3ffc1a[_0x6ddd('0x33')][_0x6ddd('0x20')](_0x373fc2);}return _0x3ffc1a;});}function getQueueAgents(_0x301c38,_0x5cbf32,_0x3f6a62){var _0x17201b='User'+_[_0x6ddd('0x13')](_0x3f6a62)+_0x6ddd('0x44');var _0x117f83=_0x3f6a62+'Pause';return db[_0x17201b][_0x6ddd('0x45')]({'where':{[_[_0x6ddd('0x13')](_0x3f6a62)+_0x6ddd('0x46')]:_0x301c38['id']},'raw':!![]})['then'](function(_0x386263){for(var _0x5a8f6b=0x0;_0x5a8f6b<_0x386263[_0x6ddd('0x3a')];_0x5a8f6b++){var _0x5dbfc3=_[_0x6ddd('0x36')](_0x5cbf32,['id',_0x386263[_0x5a8f6b][_0x6ddd('0x3f')]]);if(!_0x5dbfc3){_0x5dbfc3={'id':_0x386263[_0x5a8f6b][_0x6ddd('0x3f')],'name':_0x386263[_0x5a8f6b]['UserId'],'online':![],['pauseField']:![]};}var _0x56c456={'id':_0x5dbfc3['id'],'name':_0x5dbfc3[_0x6ddd('0x10')],'online':Boolean(_0x5dbfc3[_0x6ddd('0x41')]),'paused':Boolean(_0x5dbfc3[_0x117f83])};if(_0x56c456[_0x6ddd('0x41')])_0x301c38[_0x6ddd('0x43')]++;_0x301c38[_0x6ddd('0x33')][_0x6ddd('0x20')](_0x56c456);}return _0x301c38;});}function validateChannel(_0x5b707e){var _0x15024c=utils[_0x6ddd('0x47')]();if(!_[_0x6ddd('0x48')](_0x15024c,_0x5b707e[_0x6ddd('0x49')]()))throw new Error('Invalid\x20channel');return _0x5b707e[_0x6ddd('0x49')]();}exports['getAgents']=function(_0x1d8e87,_0x5bf008){var _0x4493b6={'count':0x0,'rows':[]};var _0x356c93={};var _0x260116;var _0x327d70;var _0x279d93;var _0x45d411;var _0x45ea58=utils[_0x6ddd('0x47')]();var _0x3ad7f0=_0x1d8e87[_0x6ddd('0x4a')][_0x6ddd('0x4b')];var _0xf5f10c=_0x1d8e87[_0x6ddd('0x4a')][_0x6ddd('0x4c')];var _0x492414=_0x1d8e87['query'][_0x6ddd('0x4d')];var _0x190e1a=_0xf5f10c===_0x6ddd('0x4e')||_0xf5f10c==='*pause'?!![]:![];var _0x474d70=[];var _0x4938a1;Promise[_0x6ddd('0x4f')]()['then'](function(){if(_0x1d8e87[_0x6ddd('0x4a')][_0x6ddd('0x50')]){_0x260116=validateChannel(_0x1d8e87[_0x6ddd('0x4a')]['channel']);}if(!_0x1d8e87[_0x6ddd('0x4a')]['sort']||!_0x1d8e87[_0x6ddd('0x4a')][_0x6ddd('0x51')][_0x6ddd('0x48')]('globalStatus')){_0x1d8e87['query'][_0x6ddd('0x51')]=rta[_0x6ddd('0x52')](_0x1d8e87[_0x6ddd('0x4a')][_0x6ddd('0x51')]);return;}var _0x533e1b=rta['getUpdatedSortOptions'](_0x1d8e87[_0x6ddd('0x4a')]['sort']);_0x1d8e87[_0x6ddd('0x4a')]['sort']=_0x533e1b[_0x6ddd('0x53')][_0x6ddd('0x54')](',');_0x327d70=_0x533e1b['order'];})[_0x6ddd('0x14')](function(){if(!_0x3ad7f0){return[];}return rta[_0x6ddd('0x55')](_0x3ad7f0,_0x260116);})[_0x6ddd('0x14')](function(_0x3ec7a6){_0x474d70=_0x3ec7a6;return rta['getRealtimeAgents']();})[_0x6ddd('0x14')](function(_0x329bdd){_0x45d411=_0x329bdd[_0x6ddd('0x56')];if((!_0xf5f10c||_0x190e1a)&&!_0x327d70){return _0x474d70;}if(_0x327d70&&!_0xf5f10c){return rta[_0x6ddd('0x57')](_0x45d411,_0x474d70,_0x327d70);}else{return rta[_0x6ddd('0x58')](_0x45d411,_0x474d70,_0xf5f10c);}})[_0x6ddd('0x14')](function(_0x1a579e){_0x474d70=_0x1a579e;var _0x2fda07=![];if(_0x474d70[_0x6ddd('0x3a')]===0x0){if(_0x3ad7f0||_0xf5f10c){_0x2fda07=!![];}if(_0x190e1a){_0x2fda07=![];}}if(_0x2fda07){return _0x4493b6;}var _0x1427ff=_[_0x6ddd('0x31')](db[_0x6ddd('0x59')][_0x6ddd('0x5a')],function(_0x2c4a6d){return{'name':_0x2c4a6d[_0x6ddd('0x5b')],'type':_0x2c4a6d[_0x6ddd('0x5c')][_0x6ddd('0x5d')]};});_0x1d8e87[_0x6ddd('0x4a')][_0x6ddd('0x5e')]=_0x6ddd('0x5f');_0x1d8e87[_0x6ddd('0x4a')][_0x6ddd('0x41')]=!![];_0x356c93=qs['getOptions'](_0x1427ff,_0x1d8e87);_0x356c93[_0x6ddd('0x60')]=!![];var _0x10eee3=[];if(_0x474d70[_0x6ddd('0x3a')]>0x0){_0x10eee3[_0x6ddd('0x20')]({'id':{'$in':_0x474d70}});if(_0x327d70&&!_0xf5f10c){_0x4938a1=[db['sequelize'][_0x6ddd('0x61')](_0x6ddd('0x62')+_0x474d70+')')];_0x356c93[_0x6ddd('0x63')]=_0x4938a1;}}if(_0x190e1a){_0x45ea58[_0x6ddd('0x64')](function(_0x33f3a2){var _0x43f5cf=!![];if(_0xf5f10c==='*pause'&&_0x260116!==_0x33f3a2){_0x43f5cf=![];}_0x10eee3[_0x6ddd('0x20')]({[_0x33f3a2+_0x6ddd('0x65')]:_0x43f5cf});});if(_0x492414){_0x10eee3[_0x6ddd('0x20')]({'pauseType':_0x492414});}}else if(_0xf5f10c){_0x45ea58['forEach'](function(_0x5956a8){_0x10eee3[_0x6ddd('0x20')]({[_0x5956a8+_0x6ddd('0x65')]:![]});});}_0x356c93['where']=_[_0x6ddd('0x37')](_0x356c93[_0x6ddd('0x66')],{'$and':_0x10eee3});if(_0x1d8e87[_0x6ddd('0x67')][_0x6ddd('0x5e')]===_0x6ddd('0x67')){var _0x4e4587={'params':{'id':_0x1d8e87[_0x6ddd('0x67')][_0x6ddd('0x68')]},'query':{'section':_0x6ddd('0x69'),'role':_0x6ddd('0x5f'),'online':!![],'raw':!![],'ids':_0x474d70,'customSorting':_0x4938a1}};if(_0x190e1a){_0x4e4587[_0x6ddd('0x4a')][_0x6ddd('0x6a')]=_0x10eee3;}_0x4e4587[_0x6ddd('0x4a')]=Object[_0x6ddd('0x6b')](_0x4e4587[_0x6ddd('0x4a')],_0x1d8e87['query']);delete _0x4e4587['query']['id'];return db[_0x6ddd('0x6c')][_0x6ddd('0x6d')](_0x4e4587);}return db[_0x6ddd('0x59')][_0x6ddd('0x6e')](_0x356c93);})['then'](function(_0x4f3d23){_0x4493b6[_0x6ddd('0xa')]=_0x4f3d23['count'];_0x279d93=_0x4f3d23[_0x6ddd('0x56')];return _0x279d93[_0x6ddd('0x31')](function(_0x2c443c){var _0x6ac7ad=_[_0x6ddd('0x36')](_0x45d411,['id',_0x2c443c['id']]);if(_0x6ac7ad){var _0x182bf4=rta['filterAgentAttributes'](_0x6ac7ad);_[_0x6ddd('0x37')](_0x2c443c,_0x182bf4);}_0x2c443c['globalStatus']=rta[_0x6ddd('0x6f')](_0x2c443c);if(_0x2c443c[_0x6ddd('0x70')][_0x6ddd('0x48')]('pause')){_0x45ea58[_0x6ddd('0x64')](function(_0x31949b){if(_0x2c443c[_0x31949b+'Pause']){_0x2c443c[_0x31949b+'Status']='pause';}});}return _0x2c443c;});})[_0x6ddd('0x14')](function(_0x311290){if(!_0x327d70||_0x4938a1){return _0x311290;}return rta[_0x6ddd('0x71')](_0x311290,_0x327d70);})['then'](function(_0x1bcf95){_0x4493b6[_0x6ddd('0x56')]=_0x1bcf95;return _0x4493b6;})[_0x6ddd('0x14')](respondWithFilteredResult(_0x5bf008,_0x356c93))[_0x6ddd('0x18')](handleError(_0x5bf008,null));};exports['getQueues']=function(_0x596e17,_0x15de78){var _0x2d1826={'count':0x0,'rows':[]},_0x463f88={},_0x57b9a1,_0x250cfb,_0x215ee7,_0x48bcf6,_0x10f976;Promise[_0x6ddd('0x4f')]()[_0x6ddd('0x14')](function(){if(_0x596e17[_0x6ddd('0x4a')][_0x6ddd('0x50')])_0x57b9a1=validateChannel(_0x596e17[_0x6ddd('0x4a')]['channel']);var _0x19204e=_[_0x6ddd('0x13')](_0x57b9a1)+_0x6ddd('0x44');var _0x22f9f7=_[_0x6ddd('0x31')](db[_0x19204e][_0x6ddd('0x5a')],function(_0x475936){return{'name':_0x475936[_0x6ddd('0x5b')],'type':_0x475936[_0x6ddd('0x5c')][_0x6ddd('0x5d')]};});_0x463f88=qs[_0x6ddd('0x72')](_0x22f9f7,_0x596e17);if(_0x596e17['user'][_0x6ddd('0x5e')]===_0x6ddd('0x67')){var _0x45262c={'params':{'id':_0x596e17[_0x6ddd('0x67')][_0x6ddd('0x68')]},'query':{'section':_0x57b9a1===_0x6ddd('0x1e')&&_0x596e17[_0x6ddd('0x4a')]['type']===_0x6ddd('0x1f')?'QueueCampaigns':_[_0x6ddd('0x13')](_0x57b9a1)+'Queues','type':_0x596e17[_0x6ddd('0x4a')][_0x6ddd('0x5c')],'nolimit':!![],'sort':_0x6ddd('0x10'),'filter':_0x596e17['query'][_0x6ddd('0x73')]}};return db[_0x6ddd('0x6c')][_0x6ddd('0x6d')](_0x45262c);}return db[_0x19204e][_0x6ddd('0x6e')](_0x463f88);})['then'](function(_0x2f8f1b){_0x2d1826['count']=_0x2f8f1b[_0x6ddd('0xa')];_0x250cfb=_0x2f8f1b[_0x6ddd('0x56')];return getRealtimeQueues(_0x596e17,_0x57b9a1);})[_0x6ddd('0x14')](function(_0x34bea8){_0x48bcf6=_0x34bea8[_0x6ddd('0x56')];return rta[_0x6ddd('0x74')]();})[_0x6ddd('0x14')](function(_0x389c0e){_0x215ee7=_0x389c0e[_0x6ddd('0x56')];if(_0x57b9a1!=_0x6ddd('0x1e'))return;return getRealtimeVoiceQueueChannels();})['then'](function(_0x579435){_0x10f976=_0x579435?_0x579435[_0x6ddd('0x56')]:[];return initializeQueues(_0x250cfb,_0x48bcf6,_0x57b9a1,_0x596e17['query']['type']);})['then'](function(_0xca0299){var _0x3ae540=_0xca0299['map'](function(_0x1b8950){if(_0x57b9a1==='voice')return getVoiceQueueAgents(_0x1b8950,_0x250cfb,_0x215ee7,_0x10f976);else return getQueueAgents(_0x1b8950,_0x215ee7,_0x57b9a1);});return Promise[_0x6ddd('0x75')](_0x3ae540);})[_0x6ddd('0x14')](function(_0x4ca370){_0x2d1826[_0x6ddd('0x56')]=_0x4ca370;return _0x2d1826;})[_0x6ddd('0x14')](respondWithFilteredResult(_0x15de78,_0x463f88))[_0x6ddd('0x18')](handleError(_0x15de78,null));};
\ No newline at end of file
index 32b1874..7add2e8 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(_0x4442cc,_0x4b8f77){var _0x5efbbe=function(_0x12de1a){while(--_0x12de1a){_0x4442cc['push'](_0x4442cc['shift']());}};_0x5efbbe(++_0x4b8f77);}(_0x9c44,0x178));var _0x49c4=function(_0x550d12,_0x5384bd){_0x550d12=_0x550d12-0x0;var _0x12103d=_0x9c44[_0x550d12];return _0x12103d;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
+var _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x2edb85,_0x1fa79c){var _0x2b8337=function(_0x25692f){while(--_0x25692f){_0x2edb85['push'](_0x2edb85['shift']());}};_0x2b8337(++_0x1fa79c);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x1afabf,_0x56fdcc){_0x1afabf=_0x1afabf-0x0;var _0x497ff1=_0xcb91[_0x1afabf];return _0x497ff1;};'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 5793ed7..5b8c8d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8bb=['INTEGER','DATE','STRING','sequelize','exports'];(function(_0x47b8d9,_0x2fd2e0){var _0x48216f=function(_0x3f8421){while(--_0x3f8421){_0x47b8d9['push'](_0x47b8d9['shift']());}};_0x48216f(++_0x2fd2e0);}(_0xf8bb,0x111));var _0xbf8b=function(_0xc817e6,_0x2e1c5d){_0xc817e6=_0xc817e6-0x0;var _0xe29f93=_0xf8bb[_0xc817e6];return _0xe29f93;};'use strict';var Sequelize=require(_0xbf8b('0x0'));module[_0xbf8b('0x1')]={'state':{'type':Sequelize[_0xbf8b('0x2')](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize[_0xbf8b('0x3')]},'uniqueid':{'type':Sequelize[_0xbf8b('0x4')]},'starttime':{'type':Sequelize[_0xbf8b('0x3')]},'responsetime':{'type':Sequelize[_0xbf8b('0x3')]},'ringtime':{'type':Sequelize[_0xbf8b('0x2')],'defaultValue':0x0},'campaign':{'type':Sequelize[_0xbf8b('0x4')]},'campaigntype':{'type':Sequelize[_0xbf8b('0x4')]},'membername':{'type':Sequelize[_0xbf8b('0x4')]}};
\ No newline at end of file
+var _0x55c1=['sequelize','exports','STRING','DATE','INTEGER'];(function(_0x13ea00,_0x12f610){var _0x1f7347=function(_0x34ae63){while(--_0x34ae63){_0x13ea00['push'](_0x13ea00['shift']());}};_0x1f7347(++_0x12f610);}(_0x55c1,0x1e5));var _0x155c=function(_0x10ef69,_0x440695){_0x10ef69=_0x10ef69-0x0;var _0x26c2b7=_0x55c1[_0x10ef69];return _0x26c2b7;};'use strict';var Sequelize=require(_0x155c('0x0'));module[_0x155c('0x1')]={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize['DATE']},'uniqueid':{'type':Sequelize[_0x155c('0x2')]},'starttime':{'type':Sequelize[_0x155c('0x3')]},'responsetime':{'type':Sequelize[_0x155c('0x3')]},'ringtime':{'type':Sequelize[_0x155c('0x4')],'defaultValue':0x0},'campaign':{'type':Sequelize[_0x155c('0x2')]},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0x155c('0x2')]}};
\ No newline at end of file
index fa7d67f..c3ae2a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff39=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./reportAgentPreview.attributes','exports','define','ReportAgentPreview','report_agent_preview','util','../../config/logger'];(function(_0x1ee4d6,_0x26a81d){var _0x2cb60e=function(_0x4e3f31){while(--_0x4e3f31){_0x1ee4d6['push'](_0x1ee4d6['shift']());}};_0x2cb60e(++_0x26a81d);}(_0xff39,0xd0));var _0x9ff3=function(_0xf0cf28,_0x1a5fe2){_0xf0cf28=_0xf0cf28-0x0;var _0x2d367d=_0xff39[_0xf0cf28];return _0x2d367d;};'use strict';var _=require('lodash');var util=require(_0x9ff3('0x0'));var logger=require(_0x9ff3('0x1'))(_0x9ff3('0x2'));var moment=require(_0x9ff3('0x3'));var BPromise=require(_0x9ff3('0x4'));var rp=require(_0x9ff3('0x5'));var fs=require('fs');var path=require(_0x9ff3('0x6'));var rimraf=require(_0x9ff3('0x7'));var config=require(_0x9ff3('0x8'));var attributes=require(_0x9ff3('0x9'));module[_0x9ff3('0xa')]=function(_0x4fefdb,_0x28b815){return _0x4fefdb[_0x9ff3('0xb')](_0x9ff3('0xc'),attributes,{'tableName':_0x9ff3('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x54f9=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./reportAgentPreview.attributes','exports','define','ReportAgentPreview','util','../../config/logger','api'];(function(_0x186273,_0x17c5de){var _0x2edc4f=function(_0x3462ca){while(--_0x3462ca){_0x186273['push'](_0x186273['shift']());}};_0x2edc4f(++_0x17c5de);}(_0x54f9,0x176));var _0x954f=function(_0xe9af67,_0x2f4061){_0xe9af67=_0xe9af67-0x0;var _0x38e106=_0x54f9[_0xe9af67];return _0x38e106;};'use strict';var _=require('lodash');var util=require(_0x954f('0x0'));var logger=require(_0x954f('0x1'))(_0x954f('0x2'));var moment=require(_0x954f('0x3'));var BPromise=require(_0x954f('0x4'));var rp=require(_0x954f('0x5'));var fs=require('fs');var path=require(_0x954f('0x6'));var rimraf=require(_0x954f('0x7'));var config=require(_0x954f('0x8'));var attributes=require(_0x954f('0x9'));module[_0x954f('0xa')]=function(_0x2ead4c,_0x4f9fd5){return _0x2ead4c[_0x954f('0xb')](_0x954f('0xc'),attributes,{'tableName':'report_agent_preview','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index eaf6e01..2fc2aa6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72b7=['request','then','ReportAgentPreview,\x20%s,\x20%s','request\x20sent','debug','ReportAgentPreview,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateReportAgentPreview','create','body','options','raw','info','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http'];(function(_0x350e6f,_0x2d40f2){var _0x24e3de=function(_0x3ce74b){while(--_0x3ce74b){_0x350e6f['push'](_0x350e6f['shift']());}};_0x24e3de(++_0x2d40f2);}(_0x72b7,0xad));var _0x772b=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x72b7[_0x17d9e3];return _0x14192d;};'use strict';var _=require(_0x772b('0x0'));var util=require(_0x772b('0x1'));var moment=require(_0x772b('0x2'));var BPromise=require(_0x772b('0x3'));var rs=require(_0x772b('0x4'));var fs=require('fs');var Redis=require(_0x772b('0x5'));var db=require(_0x772b('0x6'))['db'];var utils=require(_0x772b('0x7'));var logger=require(_0x772b('0x8'))(_0x772b('0x9'));var config=require('../../config/environment');var jayson=require(_0x772b('0xa'));var client=jayson[_0x772b('0xb')][_0x772b('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x3037c0,_0x5c95dd,_0x5de313){return new BPromise(function(_0x829b6c,_0x34902f){return client[_0x772b('0xd')](_0x3037c0,_0x5de313)[_0x772b('0xe')](function(_0x45353e){logger['info'](_0x772b('0xf'),_0x5c95dd,_0x772b('0x10'));logger[_0x772b('0x11')](_0x772b('0x12'),_0x5c95dd,_0x772b('0x10'),JSON[_0x772b('0x13')](_0x45353e));if(_0x45353e['error']){if(_0x45353e[_0x772b('0x14')][_0x772b('0x15')]===0x1f4){logger['error'](_0x772b('0xf'),_0x5c95dd,_0x45353e['error'][_0x772b('0x16')]);return _0x34902f(_0x45353e[_0x772b('0x14')]['message']);}logger[_0x772b('0x14')](_0x772b('0xf'),_0x5c95dd,_0x45353e[_0x772b('0x14')][_0x772b('0x16')]);return _0x829b6c(_0x45353e[_0x772b('0x14')][_0x772b('0x16')]);}else{logger['info'](_0x772b('0xf'),_0x5c95dd,_0x772b('0x10'));_0x829b6c(_0x45353e[_0x772b('0x17')][_0x772b('0x16')]);}})[_0x772b('0x18')](function(_0x2f4148){logger['error'](_0x772b('0xf'),_0x5c95dd,_0x2f4148);_0x34902f(_0x2f4148);});});}exports[_0x772b('0x19')]=function(_0x10d64e){var _0x43034c=this;return new Promise(function(_0x1e4040,_0x49ef60){return db['ReportAgentPreview'][_0x772b('0x1a')](_0x10d64e[_0x772b('0x1b')],{'raw':_0x10d64e['options']?_0x10d64e[_0x772b('0x1c')][_0x772b('0x1d')]===undefined?!![]:![]:!![]})[_0x772b('0xe')](function(_0x3301c7){logger[_0x772b('0x1e')](_0x772b('0x19'),_0x10d64e);logger['debug']('CreateReportAgentPreview',_0x10d64e,JSON[_0x772b('0x13')](_0x3301c7));_0x1e4040(_0x3301c7);})['catch'](function(_0x18b8bd){logger[_0x772b('0x14')]('CreateReportAgentPreview',_0x18b8bd['message'],_0x10d64e);_0x49ef60(_0x43034c[_0x772b('0x14')](0x1f4,_0x18b8bd['message']));});});};
\ No newline at end of file
+var _0x7ec6=['error','code','message','result','CreateReportAgentPreview','ReportAgentPreview','create','body','options','raw','then','stringify','catch','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','info','ReportAgentPreview,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x362882,_0x3012cf){var _0x4632c9=function(_0x1cdbb8){while(--_0x1cdbb8){_0x362882['push'](_0x362882['shift']());}};_0x4632c9(++_0x3012cf);}(_0x7ec6,0xf7));var _0x67ec=function(_0x22d300,_0x23c213){_0x22d300=_0x22d300-0x0;var _0x4d2a92=_0x7ec6[_0x22d300];return _0x4d2a92;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x67ec('0x0'));var rs=require(_0x67ec('0x1'));var fs=require('fs');var Redis=require(_0x67ec('0x2'));var db=require(_0x67ec('0x3'))['db'];var utils=require(_0x67ec('0x4'));var logger=require(_0x67ec('0x5'))('rpc');var config=require(_0x67ec('0x6'));var jayson=require(_0x67ec('0x7'));var client=jayson['client'][_0x67ec('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xce0401,_0x236311,_0x5d8bd5){return new BPromise(function(_0x14da3f,_0x43c015){return client['request'](_0xce0401,_0x5d8bd5)['then'](function(_0x3f7407){logger[_0x67ec('0x9')](_0x67ec('0xa'),_0x236311,_0x67ec('0xb'));logger[_0x67ec('0xc')]('ReportAgentPreview,\x20%s,\x20%s,\x20%s',_0x236311,_0x67ec('0xb'),JSON['stringify'](_0x3f7407));if(_0x3f7407[_0x67ec('0xd')]){if(_0x3f7407[_0x67ec('0xd')][_0x67ec('0xe')]===0x1f4){logger[_0x67ec('0xd')](_0x67ec('0xa'),_0x236311,_0x3f7407[_0x67ec('0xd')]['message']);return _0x43c015(_0x3f7407['error'][_0x67ec('0xf')]);}logger[_0x67ec('0xd')](_0x67ec('0xa'),_0x236311,_0x3f7407[_0x67ec('0xd')]['message']);return _0x14da3f(_0x3f7407[_0x67ec('0xd')][_0x67ec('0xf')]);}else{logger[_0x67ec('0x9')](_0x67ec('0xa'),_0x236311,_0x67ec('0xb'));_0x14da3f(_0x3f7407[_0x67ec('0x10')][_0x67ec('0xf')]);}})['catch'](function(_0x9923c2){logger['error']('ReportAgentPreview,\x20%s,\x20%s',_0x236311,_0x9923c2);_0x43c015(_0x9923c2);});});}exports[_0x67ec('0x11')]=function(_0x3c9461){var _0x38d4de=this;return new Promise(function(_0x3d4e3a,_0x22f1f5){return db[_0x67ec('0x12')][_0x67ec('0x13')](_0x3c9461[_0x67ec('0x14')],{'raw':_0x3c9461[_0x67ec('0x15')]?_0x3c9461[_0x67ec('0x15')][_0x67ec('0x16')]===undefined?!![]:![]:!![]})[_0x67ec('0x17')](function(_0x41efd5){logger['info']('CreateReportAgentPreview',_0x3c9461);logger[_0x67ec('0xc')](_0x67ec('0x11'),_0x3c9461,JSON[_0x67ec('0x18')](_0x41efd5));_0x3d4e3a(_0x41efd5);})[_0x67ec('0x19')](function(_0x13122f){logger[_0x67ec('0xd')](_0x67ec('0x11'),_0x13122f[_0x67ec('0xf')],_0x3c9461);_0x22f1f5(_0x38d4de[_0x67ec('0xd')](0x1f4,_0x13122f[_0x67ec('0xf')]));});});};
\ No newline at end of file
index 76bd939..a66ffd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ff2=['trunks','/campaigns','chatQueuesWaitingInteractions','/mail/queues/waitinginteractions','mailQueuesWaitingInteractions','/openchannel/queues/waitinginteractions','openchannelQueuesWaitingInteractions','/openchannel/queues/:id/waitinginteractions','openchannelQueuesIdWaitingInteractions','/sms/queues/waitinginteractions','/whatsapp/queues/waitinginteractions','/fax/queues/waitinginteractions','queueNotify','mail','/mail/queues/:id','showMailQueues','/chat/queues/:id/notify','chat','showChatQueues','post','/fax/queues/:id/notify','fax','showFaxQueues','/openchannel/queues/:id/notify','/sms/queues/:id/notify','sms','/whatsapp/queues/:id/notify','whatsapp','/whatsapp/queues/:id','/agents/:id/notify','agentNotify','multer','util','express','Router','./rpc.controller','get','isAuthenticated','voiceChannels','/voice/channels/:uniqueid/mixmonitor','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor','voiceChannelStopMixMonitor','/voice/queues','voiceQueues','chatQueues','/mail/queues','mailQueues','mailAccounts','/openchannel/queues','openchannelQueues','/sms/queues','smsQueues','/whatsapp/queues','whatsappQueues','faxQueues','voiceQueuesPreview','/voice/queues/channels','voiceQueuesChannels','/voice/queues/channels/:uniqueid','voiceQueuesChannel','/voice/queues/channels/:uniqueid/hangup','voiceQueuesChannelRedirect','/voice/queues/:id','showVoiceQueues','put','updateVoiceQueue','/outbound','outbound','/outbound/channels','outboundChannels','/agents','agents','telephones','/trunks'];(function(_0x400635,_0x49a764){var _0x5b0c61=function(_0x2cb18a){while(--_0x2cb18a){_0x400635['push'](_0x400635['shift']());}};_0x5b0c61(++_0x49a764);}(_0x2ff2,0x100));var _0x22ff=function(_0x5b5f97,_0x46b15e){_0x5b5f97=_0x5b5f97-0x0;var _0x2f6001=_0x2ff2[_0x5b5f97];return _0x2f6001;};'use strict';var multer=require(_0x22ff('0x0'));var util=require(_0x22ff('0x1'));var path=require('path');var express=require(_0x22ff('0x2'));var router=express[_0x22ff('0x3')]();var auth=require('../../components/auth/service');var controller=require(_0x22ff('0x4'));router[_0x22ff('0x5')]('/voice/channels',auth[_0x22ff('0x6')](),controller[_0x22ff('0x7')]);router[_0x22ff('0x5')](_0x22ff('0x8'),auth[_0x22ff('0x6')](),controller[_0x22ff('0x9')]);router[_0x22ff('0x5')](_0x22ff('0xa'),auth[_0x22ff('0x6')](),controller[_0x22ff('0xb')]);router[_0x22ff('0x5')](_0x22ff('0xc'),auth[_0x22ff('0x6')](),controller[_0x22ff('0xd')]);router[_0x22ff('0x5')]('/chat/queues',auth[_0x22ff('0x6')](),controller[_0x22ff('0xe')]);router['get'](_0x22ff('0xf'),auth[_0x22ff('0x6')](),controller[_0x22ff('0x10')]);router[_0x22ff('0x5')]('/mail/accounts',auth['isAuthenticated'](),controller[_0x22ff('0x11')]);router['get'](_0x22ff('0x12'),auth['isAuthenticated'](),controller[_0x22ff('0x13')]);router[_0x22ff('0x5')](_0x22ff('0x14'),auth[_0x22ff('0x6')](),controller[_0x22ff('0x15')]);router['get'](_0x22ff('0x16'),auth[_0x22ff('0x6')](),controller[_0x22ff('0x17')]);router[_0x22ff('0x5')]('/fax/queues',auth['isAuthenticated'](),controller[_0x22ff('0x18')]);router[_0x22ff('0x5')]('/voice/queues/preview/:id',auth[_0x22ff('0x6')](),controller[_0x22ff('0x19')]);router[_0x22ff('0x5')](_0x22ff('0x1a'),auth[_0x22ff('0x6')](),controller[_0x22ff('0x1b')]);router[_0x22ff('0x5')](_0x22ff('0x1c'),auth[_0x22ff('0x6')](),controller[_0x22ff('0x1d')]);router[_0x22ff('0x5')](_0x22ff('0x1e'),auth[_0x22ff('0x6')](),controller['voiceQueuesChannelHangup']);router[_0x22ff('0x5')]('/voice/queues/channels/:uniqueid/redirect/:exten',auth[_0x22ff('0x6')](),controller[_0x22ff('0x1f')]);router[_0x22ff('0x5')](_0x22ff('0x20'),auth[_0x22ff('0x6')](),controller[_0x22ff('0x21')]);router[_0x22ff('0x22')](_0x22ff('0x20'),auth['isAuthenticated'](),controller[_0x22ff('0x23')]);router['get'](_0x22ff('0x24'),auth[_0x22ff('0x6')](),controller[_0x22ff('0x25')]);router['get'](_0x22ff('0x26'),auth[_0x22ff('0x6')](),controller[_0x22ff('0x27')]);router[_0x22ff('0x5')](_0x22ff('0x28'),auth[_0x22ff('0x6')](),controller[_0x22ff('0x29')]);router['put']('/agents/:id/capacity',auth['isAuthenticated'](),controller['agentCapacity']);router[_0x22ff('0x5')]('/telephones',auth[_0x22ff('0x6')](),controller[_0x22ff('0x2a')]);router[_0x22ff('0x5')](_0x22ff('0x2b'),auth[_0x22ff('0x6')](),controller[_0x22ff('0x2c')]);router[_0x22ff('0x5')](_0x22ff('0x2d'),auth[_0x22ff('0x6')](),controller['campaigns']);router[_0x22ff('0x5')]('/fax/accounts',auth[_0x22ff('0x6')](),controller['faxAccounts']);router[_0x22ff('0x5')]('/chat/queues/waitinginteractions',auth[_0x22ff('0x6')](),controller[_0x22ff('0x2e')]);router[_0x22ff('0x5')](_0x22ff('0x2f'),auth['isAuthenticated'](),controller[_0x22ff('0x30')]);router[_0x22ff('0x5')](_0x22ff('0x31'),auth['isAuthenticated'](),controller[_0x22ff('0x32')]);router[_0x22ff('0x5')](_0x22ff('0x33'),auth['isAuthenticated'](),controller[_0x22ff('0x34')]);router[_0x22ff('0x5')](_0x22ff('0x35'),auth[_0x22ff('0x6')](),controller['smsQueuesWaitingInteractions']);router[_0x22ff('0x5')](_0x22ff('0x36'),auth[_0x22ff('0x6')](),controller['whatsappQueuesWaitingInteractions']);router[_0x22ff('0x5')](_0x22ff('0x37'),auth[_0x22ff('0x6')](),controller['faxQueuesWaitingInteractions']);router['post']('/mail/queues/:id/notify',auth['isAuthenticated'](),controller[_0x22ff('0x38')](_0x22ff('0x39')));router[_0x22ff('0x5')](_0x22ff('0x3a'),auth['isAuthenticated'](),controller[_0x22ff('0x3b')]);router['post'](_0x22ff('0x3c'),auth[_0x22ff('0x6')](),controller[_0x22ff('0x38')](_0x22ff('0x3d')));router[_0x22ff('0x5')]('/chat/queues/:id',auth['isAuthenticated'](),controller[_0x22ff('0x3e')]);router[_0x22ff('0x3f')](_0x22ff('0x40'),auth[_0x22ff('0x6')](),controller[_0x22ff('0x38')](_0x22ff('0x41')));router[_0x22ff('0x5')]('/fax/queues/:id',auth['isAuthenticated'](),controller[_0x22ff('0x42')]);router['post'](_0x22ff('0x43'),auth[_0x22ff('0x6')](),controller[_0x22ff('0x38')]('openchannel'));router[_0x22ff('0x5')]('/openchannel/queues/:id',auth[_0x22ff('0x6')](),controller['showOpenchannelQueues']);router[_0x22ff('0x3f')](_0x22ff('0x44'),auth[_0x22ff('0x6')](),controller[_0x22ff('0x38')](_0x22ff('0x45')));router[_0x22ff('0x3f')](_0x22ff('0x46'),auth[_0x22ff('0x6')](),controller[_0x22ff('0x38')](_0x22ff('0x47')));router[_0x22ff('0x5')]('/sms/queues/:id',auth[_0x22ff('0x6')](),controller['showSmsQueues']);router[_0x22ff('0x5')](_0x22ff('0x48'),auth[_0x22ff('0x6')](),controller['showWhatsappQueues']);router['post'](_0x22ff('0x49'),auth[_0x22ff('0x6')](),controller[_0x22ff('0x4a')]);module['exports']=router;
\ No newline at end of file
+var _0xa8ff=['/voice/queues/channels/:uniqueid','/voice/queues/channels/:uniqueid/hangup','voiceQueuesChannelHangup','/voice/queues/channels/:uniqueid/redirect/:exten','voiceQueuesChannelRedirect','/voice/queues/:id','showVoiceQueues','put','updateVoiceQueue','/outbound','outbound','/outbound/channels','outboundChannels','/agents','agents','agentCapacity','/telephones','/trunks','/fax/accounts','/chat/queues/waitinginteractions','/mail/queues/waitinginteractions','mailQueuesWaitingInteractions','/openchannel/queues/waitinginteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','/whatsapp/queues/waitinginteractions','whatsappQueuesWaitingInteractions','/fax/queues/waitinginteractions','post','/mail/queues/:id/notify','queueNotify','mail','/mail/queues/:id','showMailQueues','/chat/queues/:id/notify','chat','showChatQueues','/fax/queues/:id/notify','/fax/queues/:id','showFaxQueues','/openchannel/queues/:id/notify','openchannel','/openchannel/queues/:id','showOpenchannelQueues','/sms/queues/:id/notify','sms','/whatsapp/queues/:id/notify','whatsapp','/sms/queues/:id','showSmsQueues','/whatsapp/queues/:id','showWhatsappQueues','/agents/:id/notify','exports','multer','util','path','express','../../components/auth/service','get','/voice/channels','isAuthenticated','voiceChannels','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor','/voice/queues','voiceQueues','/mail/queues','/mail/accounts','mailAccounts','/openchannel/queues','openchannelQueues','/sms/queues','smsQueues','/whatsapp/queues','whatsappQueues','/fax/queues','/voice/queues/preview/:id','voiceQueuesPreview','/voice/queues/channels'];(function(_0x3a5141,_0x596d95){var _0xf91431=function(_0x4f3cda){while(--_0x4f3cda){_0x3a5141['push'](_0x3a5141['shift']());}};_0xf91431(++_0x596d95);}(_0xa8ff,0x176));var _0xfa8f=function(_0x40220a,_0x22feb1){_0x40220a=_0x40220a-0x0;var _0x3903cc=_0xa8ff[_0x40220a];return _0x3903cc;};'use strict';var multer=require(_0xfa8f('0x0'));var util=require(_0xfa8f('0x1'));var path=require(_0xfa8f('0x2'));var express=require(_0xfa8f('0x3'));var router=express['Router']();var auth=require(_0xfa8f('0x4'));var controller=require('./rpc.controller');router[_0xfa8f('0x5')](_0xfa8f('0x6'),auth[_0xfa8f('0x7')](),controller[_0xfa8f('0x8')]);router[_0xfa8f('0x5')]('/voice/channels/:uniqueid/mixmonitor',auth[_0xfa8f('0x7')](),controller[_0xfa8f('0x9')]);router[_0xfa8f('0x5')](_0xfa8f('0xa'),auth[_0xfa8f('0x7')](),controller['voiceChannelStopMixMonitor']);router[_0xfa8f('0x5')](_0xfa8f('0xb'),auth['isAuthenticated'](),controller[_0xfa8f('0xc')]);router[_0xfa8f('0x5')]('/chat/queues',auth[_0xfa8f('0x7')](),controller['chatQueues']);router['get'](_0xfa8f('0xd'),auth['isAuthenticated'](),controller['mailQueues']);router[_0xfa8f('0x5')](_0xfa8f('0xe'),auth[_0xfa8f('0x7')](),controller[_0xfa8f('0xf')]);router[_0xfa8f('0x5')](_0xfa8f('0x10'),auth[_0xfa8f('0x7')](),controller[_0xfa8f('0x11')]);router['get'](_0xfa8f('0x12'),auth[_0xfa8f('0x7')](),controller[_0xfa8f('0x13')]);router['get'](_0xfa8f('0x14'),auth[_0xfa8f('0x7')](),controller[_0xfa8f('0x15')]);router[_0xfa8f('0x5')](_0xfa8f('0x16'),auth[_0xfa8f('0x7')](),controller['faxQueues']);router[_0xfa8f('0x5')](_0xfa8f('0x17'),auth[_0xfa8f('0x7')](),controller[_0xfa8f('0x18')]);router['get'](_0xfa8f('0x19'),auth[_0xfa8f('0x7')](),controller['voiceQueuesChannels']);router['get'](_0xfa8f('0x1a'),auth[_0xfa8f('0x7')](),controller['voiceQueuesChannel']);router[_0xfa8f('0x5')](_0xfa8f('0x1b'),auth['isAuthenticated'](),controller[_0xfa8f('0x1c')]);router[_0xfa8f('0x5')](_0xfa8f('0x1d'),auth[_0xfa8f('0x7')](),controller[_0xfa8f('0x1e')]);router['get'](_0xfa8f('0x1f'),auth[_0xfa8f('0x7')](),controller[_0xfa8f('0x20')]);router[_0xfa8f('0x21')]('/voice/queues/:id',auth[_0xfa8f('0x7')](),controller[_0xfa8f('0x22')]);router[_0xfa8f('0x5')](_0xfa8f('0x23'),auth['isAuthenticated'](),controller[_0xfa8f('0x24')]);router[_0xfa8f('0x5')](_0xfa8f('0x25'),auth[_0xfa8f('0x7')](),controller[_0xfa8f('0x26')]);router[_0xfa8f('0x5')](_0xfa8f('0x27'),auth[_0xfa8f('0x7')](),controller[_0xfa8f('0x28')]);router[_0xfa8f('0x21')]('/agents/:id/capacity',auth[_0xfa8f('0x7')](),controller[_0xfa8f('0x29')]);router[_0xfa8f('0x5')](_0xfa8f('0x2a'),auth[_0xfa8f('0x7')](),controller['telephones']);router[_0xfa8f('0x5')](_0xfa8f('0x2b'),auth[_0xfa8f('0x7')](),controller['trunks']);router[_0xfa8f('0x5')]('/campaigns',auth['isAuthenticated'](),controller['campaigns']);router['get'](_0xfa8f('0x2c'),auth[_0xfa8f('0x7')](),controller['faxAccounts']);router[_0xfa8f('0x5')](_0xfa8f('0x2d'),auth[_0xfa8f('0x7')](),controller['chatQueuesWaitingInteractions']);router[_0xfa8f('0x5')](_0xfa8f('0x2e'),auth[_0xfa8f('0x7')](),controller[_0xfa8f('0x2f')]);router['get'](_0xfa8f('0x30'),auth[_0xfa8f('0x7')](),controller[_0xfa8f('0x31')]);router[_0xfa8f('0x5')]('/openchannel/queues/:id/waitinginteractions',auth[_0xfa8f('0x7')](),controller['openchannelQueuesIdWaitingInteractions']);router[_0xfa8f('0x5')]('/sms/queues/waitinginteractions',auth['isAuthenticated'](),controller[_0xfa8f('0x32')]);router['get'](_0xfa8f('0x33'),auth[_0xfa8f('0x7')](),controller[_0xfa8f('0x34')]);router[_0xfa8f('0x5')](_0xfa8f('0x35'),auth[_0xfa8f('0x7')](),controller['faxQueuesWaitingInteractions']);router[_0xfa8f('0x36')](_0xfa8f('0x37'),auth['isAuthenticated'](),controller[_0xfa8f('0x38')](_0xfa8f('0x39')));router['get'](_0xfa8f('0x3a'),auth['isAuthenticated'](),controller[_0xfa8f('0x3b')]);router['post'](_0xfa8f('0x3c'),auth[_0xfa8f('0x7')](),controller['queueNotify'](_0xfa8f('0x3d')));router[_0xfa8f('0x5')]('/chat/queues/:id',auth[_0xfa8f('0x7')](),controller[_0xfa8f('0x3e')]);router[_0xfa8f('0x36')](_0xfa8f('0x3f'),auth[_0xfa8f('0x7')](),controller[_0xfa8f('0x38')]('fax'));router[_0xfa8f('0x5')](_0xfa8f('0x40'),auth['isAuthenticated'](),controller[_0xfa8f('0x41')]);router['post'](_0xfa8f('0x42'),auth['isAuthenticated'](),controller[_0xfa8f('0x38')](_0xfa8f('0x43')));router['get'](_0xfa8f('0x44'),auth[_0xfa8f('0x7')](),controller[_0xfa8f('0x45')]);router[_0xfa8f('0x36')](_0xfa8f('0x46'),auth['isAuthenticated'](),controller[_0xfa8f('0x38')](_0xfa8f('0x47')));router[_0xfa8f('0x36')](_0xfa8f('0x48'),auth[_0xfa8f('0x7')](),controller['queueNotify'](_0xfa8f('0x49')));router['get'](_0xfa8f('0x4a'),auth[_0xfa8f('0x7')](),controller[_0xfa8f('0x4b')]);router[_0xfa8f('0x5')](_0xfa8f('0x4c'),auth[_0xfa8f('0x7')](),controller[_0xfa8f('0x4d')]);router['post'](_0xfa8f('0x4e'),auth[_0xfa8f('0x7')](),controller['agentNotify']);module[_0xfa8f('0x4f')]=router;
\ No newline at end of file
index d28f7d6..cf1ddcb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24ca=['telephones','Telephones','trunks','chatQueues','ChatQueues','mailQueues','MailQueues','showMailQueues','MailAccounts','openchannelQueues','OpenchannelQueues','smsQueues','SmsQueues','showSmsQueues','whatsappQueues','WhatsappQueues','faxQueues','FaxQueues','showFaxQueues','faxAccounts','FaxAccounts','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','OpenchannelQueuesWaitingInteractions','type','filter','map','queue_id','uniq','value','indexOf','smsQueuesWaitingInteractions','SmsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','queueNotify','capitalize','chat','Website','Account','Queue','findOne','\x20Queue\x20not\x20found','Interaction','update','queue','MessageId','InteractionId','From','QueueId','Start','agentNotify','channel','Channel\x20field\x20is\x20mandatory','User','Agent\x20not\x20found','messageId','\x20Message\x20not\x20found','TransferReport','create','agentTransferTimeout','bluebird','lodash','util','../../mysqldb','api','jayson/promise','client','http','request','error','code','message','result','json','sendStatus','stack','status','send','isNil','rows','voiceChannels','VoiceChannels','query','then','VoiceChannelMixMonitor','merge','params','catch','VoiceQueues','showVoiceQueues','updateVoiceQueue','body','voiceQueuesPreview','VoiceQueuesPreview','voiceQueuesChannels','voiceQueuesChannel','VoiceQueuesChannel','voiceQueuesChannelHangup','VoiceQueuesChannelHangup','voiceQueuesChannelRedirect','Outbound','outboundChannels','OutboundChannels','agents','Agents','agentCapacity','interaction','user','name','hasOwnProperty','MemberReport','findAll','INTERACTION','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','findOrCreate','interface','SIP/%s','agent','internal','AgentCapacity','capacity'];(function(_0x4749c9,_0x308f6e){var _0x5c973d=function(_0x20e495){while(--_0x20e495){_0x4749c9['push'](_0x4749c9['shift']());}};_0x5c973d(++_0x308f6e);}(_0x24ca,0x1bc));var _0xa24c=function(_0x420b24,_0x382adc){_0x420b24=_0x420b24-0x0;var _0x4da552=_0x24ca[_0x420b24];return _0x4da552;};'use strict';var BPromise=require(_0xa24c('0x0'));var moment=require('moment');var _=require(_0xa24c('0x1'));var util=require(_0xa24c('0x2'));var db=require(_0xa24c('0x3'))['db'];var logger=require('../../config/logger')(_0xa24c('0x4'));var jayson=require(_0xa24c('0x5'));var amiClient=jayson[_0xa24c('0x6')][_0xa24c('0x7')]({'port':0x232a});var mailClient=jayson[_0xa24c('0x6')][_0xa24c('0x7')]({'port':0x232b});var routingClient=jayson[_0xa24c('0x6')][_0xa24c('0x7')]({'port':0x232c});function respondWithRpcPromise(_0x2dd348,_0x257264,_0x9a5013){return new BPromise(function(_0x481196,_0x42d89c){var _0x3a5727=_0x9a5013?_0x9a5013:amiClient;return _0x3a5727[_0xa24c('0x8')](_0x2dd348,_0x257264)['then'](function(_0x399f32){if(_0x399f32[_0xa24c('0x9')]){if(_0x399f32[_0xa24c('0x9')][_0xa24c('0xa')]===0x1f4){return _0x42d89c(_0x399f32[_0xa24c('0x9')][_0xa24c('0xb')]);}return _0x481196(_0x399f32[_0xa24c('0x9')][_0xa24c('0xb')]);}else{_0x481196(_0x399f32[_0xa24c('0xc')]);}})['catch'](function(_0x43bcd3){_0x42d89c(_0x43bcd3);});});}function respondWithResult(_0x11090c,_0xcee4fe){_0xcee4fe=_0xcee4fe||0xc8;return function(_0x2c2af8){if(_0x2c2af8){return _0x11090c['status'](_0xcee4fe)[_0xa24c('0xd')](_0x2c2af8);}return _0x11090c[_0xa24c('0xe')](0x194);};}function handleError(_0x26ff28,_0x2fcd8b){_0x2fcd8b=_0x2fcd8b||0x1f4;return function(_0x1cb08e){logger[_0xa24c('0x9')](_0x1cb08e[_0xa24c('0xf')]);if(_0x1cb08e['name']){delete _0x1cb08e['name'];}_0x26ff28[_0xa24c('0x10')](_0x2fcd8b)[_0xa24c('0x11')](_0x1cb08e);};}function findById(_0x49ce53){return function(_0x5babb5){if(!_[_0xa24c('0x12')](_0x49ce53)&&!_[_0xa24c('0x12')](_0x5babb5)&&!_['isNil'](_0x5babb5[_0xa24c('0x13')])){return _['find'](_0x5babb5[_0xa24c('0x13')],function(_0x2a610a){return _0x2a610a['id']==_0x49ce53;});}return null;};}exports[_0xa24c('0x14')]=function(_0xefdbd9,_0x4ff97c){return respondWithRpcPromise(_0xa24c('0x15'),_0xefdbd9[_0xa24c('0x16')])[_0xa24c('0x17')](respondWithResult(_0x4ff97c,null))['catch'](handleError(_0x4ff97c,null));};exports['voiceChannelMixMonitor']=function(_0x506424,_0x4cd77e){return respondWithRpcPromise(_0xa24c('0x18'),_[_0xa24c('0x19')](_0x506424[_0xa24c('0x16')],_0x506424[_0xa24c('0x1a')]))['then'](respondWithResult(_0x4cd77e,null))[_0xa24c('0x1b')](handleError(_0x4cd77e,null));};exports['voiceChannelStopMixMonitor']=function(_0x224bca,_0xb81d97){return respondWithRpcPromise('VoiceChannelStopMixMonitor',_[_0xa24c('0x19')](_0x224bca[_0xa24c('0x16')],_0x224bca[_0xa24c('0x1a')]))[_0xa24c('0x17')](respondWithResult(_0xb81d97,null))[_0xa24c('0x1b')](handleError(_0xb81d97,null));};exports['voiceQueues']=function(_0xec9167,_0x5cc9cb){return respondWithRpcPromise(_0xa24c('0x1c'),_0xec9167[_0xa24c('0x16')])[_0xa24c('0x17')](respondWithResult(_0x5cc9cb,null))['catch'](handleError(_0x5cc9cb,null));};exports[_0xa24c('0x1d')]=function(_0x31c4d9,_0x14fd5a){return respondWithRpcPromise(_0xa24c('0x1c'),_0x31c4d9[_0xa24c('0x16')])[_0xa24c('0x17')](findById(_0x31c4d9[_0xa24c('0x1a')]['id']))['then'](respondWithResult(_0x14fd5a,null))[_0xa24c('0x1b')](handleError(_0x14fd5a,null));};exports[_0xa24c('0x1e')]=function(_0x152120,_0x12dbdc){return respondWithRpcPromise('UpdateVoiceQueue',_[_0xa24c('0x19')](_0x152120[_0xa24c('0x1f')],_0x152120[_0xa24c('0x1a')]))['then'](respondWithResult(_0x12dbdc,null))[_0xa24c('0x1b')](handleError(_0x12dbdc,null));};exports[_0xa24c('0x20')]=function(_0x253d83,_0x4ae35c){return respondWithRpcPromise(_0xa24c('0x21'),_['merge'](_0x253d83[_0xa24c('0x16')],_0x253d83[_0xa24c('0x1a')]))[_0xa24c('0x17')](respondWithResult(_0x4ae35c,null))['catch'](handleError(_0x4ae35c,null));};exports[_0xa24c('0x22')]=function(_0x53f90,_0x1d0379){return respondWithRpcPromise('VoiceQueuesChannels',_0x53f90[_0xa24c('0x16')])['then'](respondWithResult(_0x1d0379,null))[_0xa24c('0x1b')](handleError(_0x1d0379,null));};exports[_0xa24c('0x23')]=function(_0x592198,_0x5680f5){return respondWithRpcPromise(_0xa24c('0x24'),_[_0xa24c('0x19')](_0x592198[_0xa24c('0x16')],_0x592198[_0xa24c('0x1a')]))[_0xa24c('0x17')](respondWithResult(_0x5680f5,null))[_0xa24c('0x1b')](handleError(_0x5680f5,null));};exports[_0xa24c('0x25')]=function(_0x4b4dc2,_0x39f146){return respondWithRpcPromise(_0xa24c('0x26'),_[_0xa24c('0x19')](_0x4b4dc2[_0xa24c('0x16')],_0x4b4dc2[_0xa24c('0x1a')]))[_0xa24c('0x17')](respondWithResult(_0x39f146,null))[_0xa24c('0x1b')](handleError(_0x39f146,null));};exports[_0xa24c('0x27')]=function(_0x1ea166,_0x129bb9){return respondWithRpcPromise('VoiceQueuesChannelRedirect',_[_0xa24c('0x19')](_0x1ea166[_0xa24c('0x16')],_0x1ea166[_0xa24c('0x1a')]))[_0xa24c('0x17')](respondWithResult(_0x129bb9,null))['catch'](handleError(_0x129bb9,null));};exports['outbound']=function(_0x19a65f,_0x56ef4d){return respondWithRpcPromise(_0xa24c('0x28'),_0x19a65f[_0xa24c('0x16')])[_0xa24c('0x17')](respondWithResult(_0x56ef4d,null))[_0xa24c('0x1b')](handleError(_0x56ef4d,null));};exports[_0xa24c('0x29')]=function(_0x4c0fb9,_0x532875){return respondWithRpcPromise(_0xa24c('0x2a'),_0x4c0fb9[_0xa24c('0x16')])[_0xa24c('0x17')](respondWithResult(_0x532875,null))[_0xa24c('0x1b')](handleError(_0x532875,null));};exports[_0xa24c('0x2b')]=function(_0x472912,_0x5080d0){var _0x56f392;return respondWithRpcPromise(_0xa24c('0x2c'),_0x472912[_0xa24c('0x16')])[_0xa24c('0x17')](function(_0x2101f8){_0x56f392=_0x2101f8;return respondWithRpcPromise(_0xa24c('0x2c'),_0x472912['query'],routingClient);})[_0xa24c('0x17')](function(_0x7895e){return _['merge']({},_0x7895e,_0x56f392);})['then'](respondWithResult(_0x5080d0,null))[_0xa24c('0x1b')](handleError(_0x5080d0,null));};exports[_0xa24c('0x2d')]=function(_0x231eea,_0x537849){if(_0x231eea['body']&&_0x231eea[_0xa24c('0x1f')][_0xa24c('0x2e')]&&_0x231eea[_0xa24c('0x2f')]&&_0x231eea[_0xa24c('0x2f')][_0xa24c('0x30')]){for(var _0x1b7faf in _0x231eea[_0xa24c('0x1f')][_0xa24c('0x2e')]){if(_0x231eea['body']['interaction'][_0xa24c('0x31')](_0x1b7faf)){db[_0xa24c('0x32')][_0xa24c('0x33')]({'where':{'channel':_0x1b7faf,'membername':_0x231eea['user'][_0xa24c('0x30')],'type':_0xa24c('0x34'),'exitAt':null,'uniqueid':_0x231eea[_0xa24c('0x1f')][_0xa24c('0x2e')][_0x1b7faf]&&_0x231eea[_0xa24c('0x1f')][_0xa24c('0x2e')][_0x1b7faf][_0xa24c('0x35')]?{'$notIn':_0x231eea[_0xa24c('0x1f')][_0xa24c('0x2e')][_0x1b7faf]}:{'$ne':null}}})[_0xa24c('0x17')](function(_0x4bbf93){var _0xb8c7a5=moment()[_0xa24c('0x36')](_0xa24c('0x37'));for(var _0x5aa2b2=0x0,_0x3a85cb=_0x4bbf93[_0xa24c('0x35')];_0x5aa2b2<_0x3a85cb;_0x5aa2b2+=0x1){_0x4bbf93[_0x5aa2b2][_0xa24c('0x38')]({'exitAt':_0xb8c7a5});}});for(var _0x31f05b=0x0;_0x31f05b<_0x231eea[_0xa24c('0x1f')][_0xa24c('0x2e')][_0x1b7faf][_0xa24c('0x35')];_0x31f05b+=0x1){db[_0xa24c('0x32')][_0xa24c('0x39')]({'where':{'channel':_0x1b7faf,'membername':_0x231eea[_0xa24c('0x2f')][_0xa24c('0x30')],'type':'INTERACTION','uniqueid':_0x231eea[_0xa24c('0x1f')][_0xa24c('0x2e')][_0x1b7faf][_0x31f05b],'exitAt':null},'defaults':{'channel':_0x1b7faf,'membername':_0x231eea[_0xa24c('0x2f')][_0xa24c('0x30')],'interface':_[_0xa24c('0x12')](_0x231eea[_0xa24c('0x2f')][_0xa24c('0x3a')])?util[_0xa24c('0x36')](_0xa24c('0x3b'),_0x231eea['user']['name']):_0x231eea[_0xa24c('0x2f')]['interface'],'type':_0xa24c('0x34'),'enterAt':moment()[_0xa24c('0x36')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0xa24c('0x3c'),'internal':_0x231eea[_0xa24c('0x2f')][_0xa24c('0x3d')],'uniqueid':_0x231eea['body']['interaction'][_0x1b7faf][_0x31f05b]}});}}}}return respondWithRpcPromise(_0xa24c('0x3e'),{'id':_0x231eea['params']['id'],'capacity':_0x231eea[_0xa24c('0x1f')][_0xa24c('0x3f')]},routingClient)[_0xa24c('0x17')](respondWithResult(_0x537849,null))[_0xa24c('0x1b')](handleError(_0x537849,null));};exports[_0xa24c('0x40')]=function(_0x1fa739,_0x3f3ce6){return respondWithRpcPromise(_0xa24c('0x41'),_0x1fa739[_0xa24c('0x16')])[_0xa24c('0x17')](respondWithResult(_0x3f3ce6,null))['catch'](handleError(_0x3f3ce6,null));};exports[_0xa24c('0x42')]=function(_0x2759c1,_0x233f8e){return respondWithRpcPromise('Trunks',_0x2759c1['query'])['then'](respondWithResult(_0x233f8e,null))[_0xa24c('0x1b')](handleError(_0x233f8e,null));};exports['campaigns']=function(_0x4757ff,_0x21d0fc){return respondWithRpcPromise('Campaigns',_0x4757ff[_0xa24c('0x16')])[_0xa24c('0x17')](respondWithResult(_0x21d0fc,null))[_0xa24c('0x1b')](handleError(_0x21d0fc,null));};exports[_0xa24c('0x43')]=function(_0x162a11,_0x3a72e3){return respondWithRpcPromise(_0xa24c('0x44'),_0x162a11[_0xa24c('0x16')],routingClient)['then'](respondWithResult(_0x3a72e3,null))[_0xa24c('0x1b')](handleError(_0x3a72e3,null));};exports['showChatQueues']=function(_0x5abd45,_0x565f0a){return respondWithRpcPromise('ChatQueues',_0x5abd45['query'],routingClient)[_0xa24c('0x17')](findById(_0x5abd45['params']['id']))[_0xa24c('0x17')](respondWithResult(_0x565f0a,null))[_0xa24c('0x1b')](handleError(_0x565f0a,null));};exports[_0xa24c('0x45')]=function(_0x1a5f17,_0xa371d2){return respondWithRpcPromise(_0xa24c('0x46'),_0x1a5f17[_0xa24c('0x16')],routingClient)[_0xa24c('0x17')](respondWithResult(_0xa371d2,null))[_0xa24c('0x1b')](handleError(_0xa371d2,null));};exports[_0xa24c('0x47')]=function(_0x303b7d,_0x37dbbd){return respondWithRpcPromise(_0xa24c('0x46'),_0x303b7d[_0xa24c('0x16')],routingClient)[_0xa24c('0x17')](findById(_0x303b7d['params']['id']))[_0xa24c('0x17')](respondWithResult(_0x37dbbd,null))[_0xa24c('0x1b')](handleError(_0x37dbbd,null));};exports['mailAccounts']=function(_0x1e08bb,_0x179ae1){return respondWithRpcPromise(_0xa24c('0x48'),_0x1e08bb[_0xa24c('0x16')],mailClient)['then'](respondWithResult(_0x179ae1,null))['catch'](handleError(_0x179ae1,null));};exports[_0xa24c('0x49')]=function(_0x5e9631,_0x486040){return respondWithRpcPromise(_0xa24c('0x4a'),_0x5e9631[_0xa24c('0x16')],routingClient)[_0xa24c('0x17')](respondWithResult(_0x486040,null))[_0xa24c('0x1b')](handleError(_0x486040,null));};exports['showOpenchannelQueues']=function(_0x48a7b2,_0x29b836){return respondWithRpcPromise('OpenchannelQueues',_0x48a7b2['query'],routingClient)[_0xa24c('0x17')](findById(_0x48a7b2[_0xa24c('0x1a')]['id']))[_0xa24c('0x17')](respondWithResult(_0x29b836,null))['catch'](handleError(_0x29b836,null));};exports[_0xa24c('0x4b')]=function(_0x128e5b,_0x5c3285){return respondWithRpcPromise(_0xa24c('0x4c'),_0x128e5b[_0xa24c('0x16')],routingClient)[_0xa24c('0x17')](respondWithResult(_0x5c3285,null))['catch'](handleError(_0x5c3285,null));};exports[_0xa24c('0x4d')]=function(_0x34e261,_0x21439a){return respondWithRpcPromise(_0xa24c('0x4c'),_0x34e261[_0xa24c('0x16')],routingClient)['then'](findById(_0x34e261[_0xa24c('0x1a')]['id']))[_0xa24c('0x17')](respondWithResult(_0x21439a,null))[_0xa24c('0x1b')](handleError(_0x21439a,null));};exports[_0xa24c('0x4e')]=function(_0xab5260,_0x2ca3fa){return respondWithRpcPromise(_0xa24c('0x4f'),_0xab5260['query'],routingClient)[_0xa24c('0x17')](respondWithResult(_0x2ca3fa,null))[_0xa24c('0x1b')](handleError(_0x2ca3fa,null));};exports['showWhatsappQueues']=function(_0xb1048a,_0x3e455b){return respondWithRpcPromise(_0xa24c('0x4f'),_0xb1048a[_0xa24c('0x16')],routingClient)[_0xa24c('0x17')](findById(_0xb1048a[_0xa24c('0x1a')]['id']))[_0xa24c('0x17')](respondWithResult(_0x3e455b,null))[_0xa24c('0x1b')](handleError(_0x3e455b,null));};exports[_0xa24c('0x50')]=function(_0x32ddc3,_0x50141e){return respondWithRpcPromise(_0xa24c('0x51'),_0x32ddc3[_0xa24c('0x16')],routingClient)[_0xa24c('0x17')](respondWithResult(_0x50141e,null))['catch'](handleError(_0x50141e,null));};exports[_0xa24c('0x52')]=function(_0xfd57fb,_0x2cc592){return respondWithRpcPromise('FaxQueues',_0xfd57fb[_0xa24c('0x16')],routingClient)[_0xa24c('0x17')](findById(_0xfd57fb[_0xa24c('0x1a')]['id']))[_0xa24c('0x17')](respondWithResult(_0x2cc592,null))[_0xa24c('0x1b')](handleError(_0x2cc592,null));};exports[_0xa24c('0x53')]=function(_0x4f9b56,_0x4c374d){return respondWithRpcPromise(_0xa24c('0x54'),_0x4f9b56['query'])[_0xa24c('0x17')](respondWithResult(_0x4c374d,null))[_0xa24c('0x1b')](handleError(_0x4c374d,null));};exports[_0xa24c('0x55')]=function(_0x4073c5,_0x12d715){return respondWithRpcPromise('ChatQueuesWaitingInteractions',_0x4073c5[_0xa24c('0x16')],routingClient)[_0xa24c('0x17')](respondWithResult(_0x12d715,null))[_0xa24c('0x1b')](handleError(_0x12d715,null));};exports[_0xa24c('0x56')]=function(_0x987aca,_0x389c08){return respondWithRpcPromise('MailQueuesWaitingInteractions',_0x987aca[_0xa24c('0x16')],routingClient)[_0xa24c('0x17')](respondWithResult(_0x389c08,null))[_0xa24c('0x1b')](handleError(_0x389c08,null));};exports[_0xa24c('0x57')]=function(_0x5ebdd1,_0x403bf1){return respondWithRpcPromise('OpenchannelQueuesWaitingInteractions',_0x5ebdd1[_0xa24c('0x16')],routingClient)[_0xa24c('0x17')](respondWithResult(_0x403bf1,null))[_0xa24c('0x1b')](handleError(_0x403bf1,null));};exports[_0xa24c('0x58')]=function(_0x5726e1,_0x2e612d){return respondWithRpcPromise(_0xa24c('0x59'),_0x5726e1['query'],routingClient)[_0xa24c('0x17')](function(_0x168a8b){if(_0x5726e1[_0xa24c('0x16')][_0xa24c('0x5a')]!==undefined){var _0x8bd3fb=_(_0x168a8b[_0xa24c('0x13')])[_0xa24c('0x5b')]([_0x5726e1[_0xa24c('0x16')]['type'],_0x5726e1[_0xa24c('0x1a')]['id']])[_0xa24c('0x5c')](_0xa24c('0x5d'))[_0xa24c('0x5e')]()[_0xa24c('0x5f')]();return _0x168a8b[_0xa24c('0x13')][_0xa24c('0x5b')](function(_0x13dbef){return _0x8bd3fb[_0xa24c('0x60')](_0x13dbef[_0xa24c('0x5d')])>-0x1;});}else{return _0x168a8b[_0xa24c('0x13')]['filter'](function(_0x283c5b){return _0x283c5b[_0xa24c('0x5d')]===parseInt(_0x5726e1['params']['id']);});}})[_0xa24c('0x17')](respondWithResult(_0x2e612d,null))[_0xa24c('0x1b')](handleError(_0x2e612d,null));};exports[_0xa24c('0x61')]=function(_0x4f0f11,_0x5b4468){return respondWithRpcPromise(_0xa24c('0x62'),_0x4f0f11[_0xa24c('0x16')],routingClient)['then'](respondWithResult(_0x5b4468,null))[_0xa24c('0x1b')](handleError(_0x5b4468,null));};exports[_0xa24c('0x63')]=function(_0x106178,_0x27a666){return respondWithRpcPromise(_0xa24c('0x64'),_0x106178[_0xa24c('0x16')],routingClient)['then'](respondWithResult(_0x27a666,null))['catch'](handleError(_0x27a666,null));};exports['faxQueuesWaitingInteractions']=function(_0x263dab,_0x521894){return respondWithRpcPromise('FaxQueuesWaitingInteractions',_0x263dab[_0xa24c('0x16')],routingClient)[_0xa24c('0x17')](respondWithResult(_0x521894,null))[_0xa24c('0x1b')](handleError(_0x521894,null));};exports[_0xa24c('0x65')]=function(_0x84ddcc){return function(_0x45b2fe,_0x16f93a){var _0x170b65,_0x2544fc;var _0x4ee10d=_[_0xa24c('0x66')](_0x84ddcc);var _0xa077c8=_0x84ddcc===_0xa24c('0x67')?_0xa24c('0x68'):_0xa24c('0x69');return db[_0x4ee10d+_0xa24c('0x6a')][_0xa24c('0x6b')]({'raw':!![],'where':{'id':_0x45b2fe[_0xa24c('0x1a')]['id']}})[_0xa24c('0x17')](function(_0x3c5495){if(_[_0xa24c('0x12')](_0x3c5495)){throw new Error(_0x4ee10d+_0xa24c('0x6c'));}_0x170b65=_0x3c5495;return db[_0x4ee10d+'Message'][_0xa24c('0x6b')]({'where':{'id':_0x45b2fe[_0xa24c('0x1f')]['messageId']},'include':[{'model':db[_0x4ee10d+_0xa24c('0x6d')],'as':_0xa24c('0x6d')},{'model':db[_0x4ee10d+_0xa077c8],'as':_0xa24c('0x69')}]});})['then'](function(_0x549e07){if(_[_0xa24c('0x12')](_0x549e07)){throw new Error(_0x4ee10d+'\x20Message\x20not\x20found');}_0x2544fc=_0x549e07;return _0x549e07[_0xa24c('0x6e')]({'read':0x0,'readAt':null,'UserId':null});})[_0xa24c('0x17')](function(){var _0x4c108f={'uniqueid':_0x84ddcc+'.'+_0x2544fc['id']+'.'+_0x2544fc['Interaction']['id'],'FromUserId':_0x45b2fe[_0xa24c('0x2f')]['id'],'type':_0xa24c('0x6f')};_0x4c108f[_0x4ee10d+_0xa24c('0x70')]=_0x2544fc['id'];_0x4c108f[_0x4ee10d+_0xa24c('0x71')]=_0x2544fc['Interaction']['id'];_0x4c108f[_0xa24c('0x72')+_0x4ee10d+_0xa077c8+'Id']=_0x2544fc[_0xa24c('0x69')]['id'];_0x4c108f['To'+_0x4ee10d+_0xa24c('0x73')]=_0x170b65['id'];return db[_0x4ee10d+'TransferReport']['create'](_0x4c108f);})[_0xa24c('0x17')](function(){return respondWithRpcPromise(_0xa24c('0x74'),{'channel':_0x84ddcc,'interaction':_0x2544fc[_0xa24c('0x6d')],'message':_0x2544fc,'account':_0x2544fc['Account'],'applications':[{'id':0x0,'priority':0x1,'app':'queue','appdata':_0x170b65[_0xa24c('0x30')]+','+(_0x2544fc['Account']['queueTransferTimeout']||0x12c),'interval':'*,*,*,*'}]},routingClient);})[_0xa24c('0x17')](respondWithResult(_0x16f93a,null))[_0xa24c('0x1b')](handleError(_0x16f93a,null));};};exports[_0xa24c('0x75')]=function(_0xd23eb3,_0x890e15){var _0x12836d,_0x280fa2;if(_[_0xa24c('0x12')](_0xd23eb3[_0xa24c('0x1f')][_0xa24c('0x76')])){throw new Error(_0xa24c('0x77'));}var _0x24b28c=_0xd23eb3['body'][_0xa24c('0x76')];var _0x292c22=_['capitalize'](_0x24b28c);var _0x2fd4a2=_0x24b28c==='chat'?'Website':'Account';return db[_0xa24c('0x78')]['findOne']({'raw':!![],'where':{'id':_0xd23eb3[_0xa24c('0x1a')]['id'],'role':'agent'}})[_0xa24c('0x17')](function(_0x144c3b){if(_['isNil'](_0x144c3b)){throw new Error(_0xa24c('0x79'));}_0x12836d=_0x144c3b;return db[_0x292c22+'Message'][_0xa24c('0x6b')]({'where':{'id':_0xd23eb3[_0xa24c('0x1f')][_0xa24c('0x7a')]},'include':[{'model':db[_0x292c22+_0xa24c('0x6d')],'as':_0xa24c('0x6d')},{'model':db[_0x292c22+_0x2fd4a2],'as':'Account'}]});})[_0xa24c('0x17')](function(_0x5774d2){if(_[_0xa24c('0x12')](_0x5774d2)){throw new Error(_0x292c22+_0xa24c('0x7b'));}_0x280fa2=_0x5774d2;return _0x5774d2[_0xa24c('0x6e')]({'read':0x0,'readAt':null,'UserId':null});})[_0xa24c('0x17')](function(){var _0x4b848d={'uniqueid':_0x24b28c+'.'+_0x280fa2['id']+'.'+_0x280fa2[_0xa24c('0x6d')]['id'],'FromUserId':_0xd23eb3[_0xa24c('0x2f')]['id'],'type':_0xa24c('0x6f'),'ToUserId':_0x12836d['id']};_0x4b848d[_0x292c22+_0xa24c('0x70')]=_0x280fa2['id'];_0x4b848d[_0x292c22+'InteractionId']=_0x280fa2[_0xa24c('0x6d')]['id'];_0x4b848d[_0xa24c('0x72')+_0x292c22+_0x2fd4a2+'Id']=_0x280fa2[_0xa24c('0x69')]['id'];return db[_0x292c22+_0xa24c('0x7c')][_0xa24c('0x7d')](_0x4b848d);})[_0xa24c('0x17')](function(){return respondWithRpcPromise(_0xa24c('0x74'),{'channel':_0x24b28c,'interaction':_0x280fa2[_0xa24c('0x6d')],'message':_0x280fa2,'account':_0x280fa2[_0xa24c('0x69')],'applications':[{'id':0x0,'priority':0x1,'app':_0xa24c('0x3c'),'appdata':_0x12836d[_0xa24c('0x30')]+','+(_0x280fa2[_0xa24c('0x69')][_0xa24c('0x7e')]||0x12c),'interval':'*,*,*,*'}]},routingClient);})[_0xa24c('0x17')](respondWithResult(_0x890e15,null))[_0xa24c('0x1b')](handleError(_0x890e15,null));};
\ No newline at end of file
+var _0xb458=['InteractionId','TransferReport','agentTransferTimeout','bluebird','moment','lodash','../../config/logger','api','jayson/promise','client','http','request','then','error','code','catch','status','json','sendStatus','stack','name','send','isNil','rows','find','voiceChannels','VoiceChannels','voiceChannelMixMonitor','VoiceChannelMixMonitor','merge','query','VoiceChannelStopMixMonitor','params','showVoiceQueues','VoiceQueues','updateVoiceQueue','UpdateVoiceQueue','body','voiceQueuesPreview','VoiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','VoiceQueuesChannel','voiceQueuesChannelHangup','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','outbound','Outbound','outboundChannels','OutboundChannels','Agents','agentCapacity','interaction','user','hasOwnProperty','findAll','INTERACTION','format','YYYY-MM-DD\x20HH:mm:ss','length','updateAttributes','MemberReport','interface','SIP/%s','agent','internal','AgentCapacity','capacity','Telephones','trunks','Trunks','Campaigns','ChatQueues','showChatQueues','MailQueues','showMailQueues','mailAccounts','MailAccounts','openchannelQueues','OpenchannelQueues','smsQueues','SmsQueues','WhatsappQueues','showFaxQueues','FaxQueues','FaxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','type','filter','map','queue_id','uniq','value','indexOf','smsQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','FaxQueuesWaitingInteractions','queueNotify','capitalize','chat','Website','Account','Queue','Message','Interaction','update','queue','MessageId','From','QueueId','create','Start','queueTransferTimeout','*,*,*,*','agentNotify','channel','User','findOne','Agent\x20not\x20found','messageId','\x20Message\x20not\x20found'];(function(_0x366ebd,_0x378e4f){var _0x140bda=function(_0xb8d1b){while(--_0xb8d1b){_0x366ebd['push'](_0x366ebd['shift']());}};_0x140bda(++_0x378e4f);}(_0xb458,0x103));var _0x8b45=function(_0x46ddfa,_0x2583c1){_0x46ddfa=_0x46ddfa-0x0;var _0x21dc9f=_0xb458[_0x46ddfa];return _0x21dc9f;};'use strict';var BPromise=require(_0x8b45('0x0'));var moment=require(_0x8b45('0x1'));var _=require(_0x8b45('0x2'));var util=require('util');var db=require('../../mysqldb')['db'];var logger=require(_0x8b45('0x3'))(_0x8b45('0x4'));var jayson=require(_0x8b45('0x5'));var amiClient=jayson[_0x8b45('0x6')]['http']({'port':0x232a});var mailClient=jayson[_0x8b45('0x6')]['http']({'port':0x232b});var routingClient=jayson['client'][_0x8b45('0x7')]({'port':0x232c});function respondWithRpcPromise(_0x12bd05,_0x2daa9a,_0x3a8ccb){return new BPromise(function(_0x32342f,_0x4d1718){var _0xa54725=_0x3a8ccb?_0x3a8ccb:amiClient;return _0xa54725[_0x8b45('0x8')](_0x12bd05,_0x2daa9a)[_0x8b45('0x9')](function(_0x2bc809){if(_0x2bc809[_0x8b45('0xa')]){if(_0x2bc809['error'][_0x8b45('0xb')]===0x1f4){return _0x4d1718(_0x2bc809[_0x8b45('0xa')]['message']);}return _0x32342f(_0x2bc809['error']['message']);}else{_0x32342f(_0x2bc809['result']);}})[_0x8b45('0xc')](function(_0x285728){_0x4d1718(_0x285728);});});}function respondWithResult(_0x37c220,_0x52c4db){_0x52c4db=_0x52c4db||0xc8;return function(_0x30d38c){if(_0x30d38c){return _0x37c220[_0x8b45('0xd')](_0x52c4db)[_0x8b45('0xe')](_0x30d38c);}return _0x37c220[_0x8b45('0xf')](0x194);};}function handleError(_0x32babc,_0x2ad2ae){_0x2ad2ae=_0x2ad2ae||0x1f4;return function(_0x5f0b20){logger['error'](_0x5f0b20[_0x8b45('0x10')]);if(_0x5f0b20[_0x8b45('0x11')]){delete _0x5f0b20[_0x8b45('0x11')];}_0x32babc[_0x8b45('0xd')](_0x2ad2ae)[_0x8b45('0x12')](_0x5f0b20);};}function findById(_0x27ebb3){return function(_0x902c50){if(!_[_0x8b45('0x13')](_0x27ebb3)&&!_[_0x8b45('0x13')](_0x902c50)&&!_[_0x8b45('0x13')](_0x902c50[_0x8b45('0x14')])){return _[_0x8b45('0x15')](_0x902c50[_0x8b45('0x14')],function(_0x43ffb7){return _0x43ffb7['id']==_0x27ebb3;});}return null;};}exports[_0x8b45('0x16')]=function(_0x31c6b4,_0x23c520){return respondWithRpcPromise(_0x8b45('0x17'),_0x31c6b4['query'])[_0x8b45('0x9')](respondWithResult(_0x23c520,null))[_0x8b45('0xc')](handleError(_0x23c520,null));};exports[_0x8b45('0x18')]=function(_0x46e21a,_0x3e1438){return respondWithRpcPromise(_0x8b45('0x19'),_[_0x8b45('0x1a')](_0x46e21a[_0x8b45('0x1b')],_0x46e21a['params']))['then'](respondWithResult(_0x3e1438,null))[_0x8b45('0xc')](handleError(_0x3e1438,null));};exports['voiceChannelStopMixMonitor']=function(_0x1952fc,_0x3ddb50){return respondWithRpcPromise(_0x8b45('0x1c'),_[_0x8b45('0x1a')](_0x1952fc[_0x8b45('0x1b')],_0x1952fc[_0x8b45('0x1d')]))[_0x8b45('0x9')](respondWithResult(_0x3ddb50,null))['catch'](handleError(_0x3ddb50,null));};exports['voiceQueues']=function(_0x11ffcc,_0x2c2c06){return respondWithRpcPromise('VoiceQueues',_0x11ffcc['query'])[_0x8b45('0x9')](respondWithResult(_0x2c2c06,null))[_0x8b45('0xc')](handleError(_0x2c2c06,null));};exports[_0x8b45('0x1e')]=function(_0x2f37bc,_0x4e84cc){return respondWithRpcPromise(_0x8b45('0x1f'),_0x2f37bc[_0x8b45('0x1b')])[_0x8b45('0x9')](findById(_0x2f37bc[_0x8b45('0x1d')]['id']))[_0x8b45('0x9')](respondWithResult(_0x4e84cc,null))[_0x8b45('0xc')](handleError(_0x4e84cc,null));};exports[_0x8b45('0x20')]=function(_0x234f62,_0x1733a7){return respondWithRpcPromise(_0x8b45('0x21'),_[_0x8b45('0x1a')](_0x234f62[_0x8b45('0x22')],_0x234f62[_0x8b45('0x1d')]))['then'](respondWithResult(_0x1733a7,null))[_0x8b45('0xc')](handleError(_0x1733a7,null));};exports[_0x8b45('0x23')]=function(_0x34eb03,_0x15107a){return respondWithRpcPromise(_0x8b45('0x24'),_[_0x8b45('0x1a')](_0x34eb03[_0x8b45('0x1b')],_0x34eb03[_0x8b45('0x1d')]))['then'](respondWithResult(_0x15107a,null))[_0x8b45('0xc')](handleError(_0x15107a,null));};exports[_0x8b45('0x25')]=function(_0x50302,_0xc2ae94){return respondWithRpcPromise(_0x8b45('0x26'),_0x50302['query'])[_0x8b45('0x9')](respondWithResult(_0xc2ae94,null))['catch'](handleError(_0xc2ae94,null));};exports['voiceQueuesChannel']=function(_0x1f8a11,_0x94e3b6){return respondWithRpcPromise(_0x8b45('0x27'),_[_0x8b45('0x1a')](_0x1f8a11[_0x8b45('0x1b')],_0x1f8a11[_0x8b45('0x1d')]))['then'](respondWithResult(_0x94e3b6,null))[_0x8b45('0xc')](handleError(_0x94e3b6,null));};exports[_0x8b45('0x28')]=function(_0x264be7,_0x1f66a3){return respondWithRpcPromise('VoiceQueuesChannelHangup',_[_0x8b45('0x1a')](_0x264be7[_0x8b45('0x1b')],_0x264be7[_0x8b45('0x1d')]))['then'](respondWithResult(_0x1f66a3,null))[_0x8b45('0xc')](handleError(_0x1f66a3,null));};exports[_0x8b45('0x29')]=function(_0x1571b7,_0x58f32e){return respondWithRpcPromise(_0x8b45('0x2a'),_[_0x8b45('0x1a')](_0x1571b7[_0x8b45('0x1b')],_0x1571b7[_0x8b45('0x1d')]))['then'](respondWithResult(_0x58f32e,null))[_0x8b45('0xc')](handleError(_0x58f32e,null));};exports[_0x8b45('0x2b')]=function(_0x2de02d,_0x15df7c){return respondWithRpcPromise(_0x8b45('0x2c'),_0x2de02d[_0x8b45('0x1b')])['then'](respondWithResult(_0x15df7c,null))['catch'](handleError(_0x15df7c,null));};exports[_0x8b45('0x2d')]=function(_0x179f3b,_0x41d6b5){return respondWithRpcPromise(_0x8b45('0x2e'),_0x179f3b[_0x8b45('0x1b')])['then'](respondWithResult(_0x41d6b5,null))[_0x8b45('0xc')](handleError(_0x41d6b5,null));};exports['agents']=function(_0x67c59a,_0x17e9a8){var _0x5fae26;return respondWithRpcPromise(_0x8b45('0x2f'),_0x67c59a[_0x8b45('0x1b')])[_0x8b45('0x9')](function(_0x14d665){_0x5fae26=_0x14d665;return respondWithRpcPromise(_0x8b45('0x2f'),_0x67c59a[_0x8b45('0x1b')],routingClient);})[_0x8b45('0x9')](function(_0x3a97d5){return _['merge']({},_0x3a97d5,_0x5fae26);})[_0x8b45('0x9')](respondWithResult(_0x17e9a8,null))['catch'](handleError(_0x17e9a8,null));};exports[_0x8b45('0x30')]=function(_0x4eda71,_0x412c53){if(_0x4eda71[_0x8b45('0x22')]&&_0x4eda71[_0x8b45('0x22')][_0x8b45('0x31')]&&_0x4eda71[_0x8b45('0x32')]&&_0x4eda71[_0x8b45('0x32')]['name']){for(var _0x6fbca4 in _0x4eda71['body']['interaction']){if(_0x4eda71[_0x8b45('0x22')][_0x8b45('0x31')][_0x8b45('0x33')](_0x6fbca4)){db['MemberReport'][_0x8b45('0x34')]({'where':{'channel':_0x6fbca4,'membername':_0x4eda71['user'][_0x8b45('0x11')],'type':_0x8b45('0x35'),'exitAt':null,'uniqueid':_0x4eda71[_0x8b45('0x22')][_0x8b45('0x31')][_0x6fbca4]&&_0x4eda71[_0x8b45('0x22')][_0x8b45('0x31')][_0x6fbca4]['length']?{'$notIn':_0x4eda71[_0x8b45('0x22')][_0x8b45('0x31')][_0x6fbca4]}:{'$ne':null}}})[_0x8b45('0x9')](function(_0xee45ac){var _0x1a13dd=moment()[_0x8b45('0x36')](_0x8b45('0x37'));for(var _0x3de3c2=0x0,_0x37b94a=_0xee45ac[_0x8b45('0x38')];_0x3de3c2<_0x37b94a;_0x3de3c2+=0x1){_0xee45ac[_0x3de3c2][_0x8b45('0x39')]({'exitAt':_0x1a13dd});}});for(var _0x3385db=0x0;_0x3385db<_0x4eda71[_0x8b45('0x22')][_0x8b45('0x31')][_0x6fbca4][_0x8b45('0x38')];_0x3385db+=0x1){db[_0x8b45('0x3a')]['findOrCreate']({'where':{'channel':_0x6fbca4,'membername':_0x4eda71['user']['name'],'type':_0x8b45('0x35'),'uniqueid':_0x4eda71[_0x8b45('0x22')][_0x8b45('0x31')][_0x6fbca4][_0x3385db],'exitAt':null},'defaults':{'channel':_0x6fbca4,'membername':_0x4eda71[_0x8b45('0x32')][_0x8b45('0x11')],'interface':_[_0x8b45('0x13')](_0x4eda71[_0x8b45('0x32')][_0x8b45('0x3b')])?util['format'](_0x8b45('0x3c'),_0x4eda71['user'][_0x8b45('0x11')]):_0x4eda71[_0x8b45('0x32')][_0x8b45('0x3b')],'type':_0x8b45('0x35'),'enterAt':moment()['format'](_0x8b45('0x37')),'role':_0x8b45('0x3d'),'internal':_0x4eda71['user'][_0x8b45('0x3e')],'uniqueid':_0x4eda71[_0x8b45('0x22')]['interaction'][_0x6fbca4][_0x3385db]}});}}}}return respondWithRpcPromise(_0x8b45('0x3f'),{'id':_0x4eda71[_0x8b45('0x1d')]['id'],'capacity':_0x4eda71[_0x8b45('0x22')][_0x8b45('0x40')]},routingClient)[_0x8b45('0x9')](respondWithResult(_0x412c53,null))[_0x8b45('0xc')](handleError(_0x412c53,null));};exports['telephones']=function(_0x4b8826,_0x3f7a16){return respondWithRpcPromise(_0x8b45('0x41'),_0x4b8826[_0x8b45('0x1b')])['then'](respondWithResult(_0x3f7a16,null))[_0x8b45('0xc')](handleError(_0x3f7a16,null));};exports[_0x8b45('0x42')]=function(_0x20a68b,_0x3e8a7d){return respondWithRpcPromise(_0x8b45('0x43'),_0x20a68b['query'])[_0x8b45('0x9')](respondWithResult(_0x3e8a7d,null))[_0x8b45('0xc')](handleError(_0x3e8a7d,null));};exports['campaigns']=function(_0x422da0,_0x4c3f38){return respondWithRpcPromise(_0x8b45('0x44'),_0x422da0[_0x8b45('0x1b')])[_0x8b45('0x9')](respondWithResult(_0x4c3f38,null))[_0x8b45('0xc')](handleError(_0x4c3f38,null));};exports['chatQueues']=function(_0xb9f390,_0x423231){return respondWithRpcPromise(_0x8b45('0x45'),_0xb9f390[_0x8b45('0x1b')],routingClient)[_0x8b45('0x9')](respondWithResult(_0x423231,null))[_0x8b45('0xc')](handleError(_0x423231,null));};exports[_0x8b45('0x46')]=function(_0x2a35c1,_0x446fe5){return respondWithRpcPromise(_0x8b45('0x45'),_0x2a35c1[_0x8b45('0x1b')],routingClient)[_0x8b45('0x9')](findById(_0x2a35c1[_0x8b45('0x1d')]['id']))[_0x8b45('0x9')](respondWithResult(_0x446fe5,null))[_0x8b45('0xc')](handleError(_0x446fe5,null));};exports['mailQueues']=function(_0x1744f8,_0x1477bd){return respondWithRpcPromise(_0x8b45('0x47'),_0x1744f8['query'],routingClient)[_0x8b45('0x9')](respondWithResult(_0x1477bd,null))[_0x8b45('0xc')](handleError(_0x1477bd,null));};exports[_0x8b45('0x48')]=function(_0x9eacc1,_0x5795ca){return respondWithRpcPromise(_0x8b45('0x47'),_0x9eacc1[_0x8b45('0x1b')],routingClient)[_0x8b45('0x9')](findById(_0x9eacc1[_0x8b45('0x1d')]['id']))['then'](respondWithResult(_0x5795ca,null))[_0x8b45('0xc')](handleError(_0x5795ca,null));};exports[_0x8b45('0x49')]=function(_0x417778,_0x27503f){return respondWithRpcPromise(_0x8b45('0x4a'),_0x417778['query'],mailClient)[_0x8b45('0x9')](respondWithResult(_0x27503f,null))['catch'](handleError(_0x27503f,null));};exports[_0x8b45('0x4b')]=function(_0x2f7ab0,_0x19152b){return respondWithRpcPromise(_0x8b45('0x4c'),_0x2f7ab0[_0x8b45('0x1b')],routingClient)[_0x8b45('0x9')](respondWithResult(_0x19152b,null))['catch'](handleError(_0x19152b,null));};exports['showOpenchannelQueues']=function(_0x5ace1,_0x2224b7){return respondWithRpcPromise('OpenchannelQueues',_0x5ace1[_0x8b45('0x1b')],routingClient)[_0x8b45('0x9')](findById(_0x5ace1[_0x8b45('0x1d')]['id']))['then'](respondWithResult(_0x2224b7,null))['catch'](handleError(_0x2224b7,null));};exports[_0x8b45('0x4d')]=function(_0x8e5a41,_0x5abc79){return respondWithRpcPromise(_0x8b45('0x4e'),_0x8e5a41['query'],routingClient)[_0x8b45('0x9')](respondWithResult(_0x5abc79,null))['catch'](handleError(_0x5abc79,null));};exports['showSmsQueues']=function(_0x28e57a,_0x7f5a4e){return respondWithRpcPromise('SmsQueues',_0x28e57a[_0x8b45('0x1b')],routingClient)[_0x8b45('0x9')](findById(_0x28e57a[_0x8b45('0x1d')]['id']))[_0x8b45('0x9')](respondWithResult(_0x7f5a4e,null))[_0x8b45('0xc')](handleError(_0x7f5a4e,null));};exports['whatsappQueues']=function(_0x37f580,_0x3b3d21){return respondWithRpcPromise(_0x8b45('0x4f'),_0x37f580['query'],routingClient)['then'](respondWithResult(_0x3b3d21,null))[_0x8b45('0xc')](handleError(_0x3b3d21,null));};exports['showWhatsappQueues']=function(_0x43f031,_0x5a4834){return respondWithRpcPromise('WhatsappQueues',_0x43f031['query'],routingClient)[_0x8b45('0x9')](findById(_0x43f031['params']['id']))[_0x8b45('0x9')](respondWithResult(_0x5a4834,null))[_0x8b45('0xc')](handleError(_0x5a4834,null));};exports['faxQueues']=function(_0x3db84e,_0x1b3890){return respondWithRpcPromise('FaxQueues',_0x3db84e[_0x8b45('0x1b')],routingClient)[_0x8b45('0x9')](respondWithResult(_0x1b3890,null))[_0x8b45('0xc')](handleError(_0x1b3890,null));};exports[_0x8b45('0x50')]=function(_0x15cf9d,_0x877766){return respondWithRpcPromise(_0x8b45('0x51'),_0x15cf9d[_0x8b45('0x1b')],routingClient)[_0x8b45('0x9')](findById(_0x15cf9d[_0x8b45('0x1d')]['id']))[_0x8b45('0x9')](respondWithResult(_0x877766,null))[_0x8b45('0xc')](handleError(_0x877766,null));};exports['faxAccounts']=function(_0x225180,_0x403ee2){return respondWithRpcPromise(_0x8b45('0x52'),_0x225180[_0x8b45('0x1b')])[_0x8b45('0x9')](respondWithResult(_0x403ee2,null))[_0x8b45('0xc')](handleError(_0x403ee2,null));};exports[_0x8b45('0x53')]=function(_0x3d3216,_0x243632){return respondWithRpcPromise(_0x8b45('0x54'),_0x3d3216[_0x8b45('0x1b')],routingClient)[_0x8b45('0x9')](respondWithResult(_0x243632,null))[_0x8b45('0xc')](handleError(_0x243632,null));};exports[_0x8b45('0x55')]=function(_0x562c5f,_0x53143d){return respondWithRpcPromise(_0x8b45('0x56'),_0x562c5f[_0x8b45('0x1b')],routingClient)[_0x8b45('0x9')](respondWithResult(_0x53143d,null))[_0x8b45('0xc')](handleError(_0x53143d,null));};exports[_0x8b45('0x57')]=function(_0xd88538,_0x1ebbca){return respondWithRpcPromise(_0x8b45('0x58'),_0xd88538['query'],routingClient)[_0x8b45('0x9')](respondWithResult(_0x1ebbca,null))[_0x8b45('0xc')](handleError(_0x1ebbca,null));};exports[_0x8b45('0x59')]=function(_0xa22bd0,_0xa44ba5){return respondWithRpcPromise(_0x8b45('0x58'),_0xa22bd0[_0x8b45('0x1b')],routingClient)[_0x8b45('0x9')](function(_0x2a6fee){if(_0xa22bd0[_0x8b45('0x1b')][_0x8b45('0x5a')]!==undefined){var _0x5e54c6=_(_0x2a6fee['rows'])[_0x8b45('0x5b')]([_0xa22bd0[_0x8b45('0x1b')][_0x8b45('0x5a')],_0xa22bd0[_0x8b45('0x1d')]['id']])[_0x8b45('0x5c')](_0x8b45('0x5d'))[_0x8b45('0x5e')]()[_0x8b45('0x5f')]();return _0x2a6fee[_0x8b45('0x14')]['filter'](function(_0x55acf0){return _0x5e54c6[_0x8b45('0x60')](_0x55acf0[_0x8b45('0x5d')])>-0x1;});}else{return _0x2a6fee[_0x8b45('0x14')][_0x8b45('0x5b')](function(_0x55bafb){return _0x55bafb[_0x8b45('0x5d')]===parseInt(_0xa22bd0[_0x8b45('0x1d')]['id']);});}})[_0x8b45('0x9')](respondWithResult(_0xa44ba5,null))[_0x8b45('0xc')](handleError(_0xa44ba5,null));};exports[_0x8b45('0x61')]=function(_0x17588b,_0x4ed113){return respondWithRpcPromise('SmsQueuesWaitingInteractions',_0x17588b[_0x8b45('0x1b')],routingClient)['then'](respondWithResult(_0x4ed113,null))['catch'](handleError(_0x4ed113,null));};exports['whatsappQueuesWaitingInteractions']=function(_0xf602c7,_0x170b95){return respondWithRpcPromise(_0x8b45('0x62'),_0xf602c7[_0x8b45('0x1b')],routingClient)[_0x8b45('0x9')](respondWithResult(_0x170b95,null))[_0x8b45('0xc')](handleError(_0x170b95,null));};exports[_0x8b45('0x63')]=function(_0xc9be77,_0xc89fc6){return respondWithRpcPromise(_0x8b45('0x64'),_0xc9be77[_0x8b45('0x1b')],routingClient)[_0x8b45('0x9')](respondWithResult(_0xc89fc6,null))[_0x8b45('0xc')](handleError(_0xc89fc6,null));};exports[_0x8b45('0x65')]=function(_0x42b192){return function(_0x4a42e1,_0x29bfcc){var _0x91270d,_0x217798;var _0x19a135=_[_0x8b45('0x66')](_0x42b192);var _0x1446b1=_0x42b192===_0x8b45('0x67')?_0x8b45('0x68'):_0x8b45('0x69');return db[_0x19a135+_0x8b45('0x6a')]['findOne']({'raw':!![],'where':{'id':_0x4a42e1[_0x8b45('0x1d')]['id']}})[_0x8b45('0x9')](function(_0x408fff){if(_[_0x8b45('0x13')](_0x408fff)){throw new Error(_0x19a135+'\x20Queue\x20not\x20found');}_0x91270d=_0x408fff;return db[_0x19a135+_0x8b45('0x6b')]['findOne']({'where':{'id':_0x4a42e1[_0x8b45('0x22')]['messageId']},'include':[{'model':db[_0x19a135+_0x8b45('0x6c')],'as':_0x8b45('0x6c')},{'model':db[_0x19a135+_0x1446b1],'as':_0x8b45('0x69')}]});})[_0x8b45('0x9')](function(_0x16bb83){if(_[_0x8b45('0x13')](_0x16bb83)){throw new Error(_0x19a135+'\x20Message\x20not\x20found');}_0x217798=_0x16bb83;return _0x16bb83[_0x8b45('0x6d')]({'read':0x0,'readAt':null,'UserId':null});})[_0x8b45('0x9')](function(){var _0x17364d={'uniqueid':_0x42b192+'.'+_0x217798['id']+'.'+_0x217798[_0x8b45('0x6c')]['id'],'FromUserId':_0x4a42e1['user']['id'],'type':_0x8b45('0x6e')};_0x17364d[_0x19a135+_0x8b45('0x6f')]=_0x217798['id'];_0x17364d[_0x19a135+'InteractionId']=_0x217798['Interaction']['id'];_0x17364d[_0x8b45('0x70')+_0x19a135+_0x1446b1+'Id']=_0x217798[_0x8b45('0x69')]['id'];_0x17364d['To'+_0x19a135+_0x8b45('0x71')]=_0x91270d['id'];return db[_0x19a135+'TransferReport'][_0x8b45('0x72')](_0x17364d);})['then'](function(){return respondWithRpcPromise(_0x8b45('0x73'),{'channel':_0x42b192,'interaction':_0x217798[_0x8b45('0x6c')],'message':_0x217798,'account':_0x217798['Account'],'applications':[{'id':0x0,'priority':0x1,'app':'queue','appdata':_0x91270d[_0x8b45('0x11')]+','+(_0x217798[_0x8b45('0x69')][_0x8b45('0x74')]||0x12c),'interval':_0x8b45('0x75')}]},routingClient);})['then'](respondWithResult(_0x29bfcc,null))[_0x8b45('0xc')](handleError(_0x29bfcc,null));};};exports[_0x8b45('0x76')]=function(_0x376416,_0x1d475c){var _0x2680d5,_0x1abe69;if(_['isNil'](_0x376416[_0x8b45('0x22')][_0x8b45('0x77')])){throw new Error('Channel\x20field\x20is\x20mandatory');}var _0x10a91a=_0x376416[_0x8b45('0x22')]['channel'];var _0x4837af=_['capitalize'](_0x10a91a);var _0x186aa2=_0x10a91a===_0x8b45('0x67')?_0x8b45('0x68'):_0x8b45('0x69');return db[_0x8b45('0x78')][_0x8b45('0x79')]({'raw':!![],'where':{'id':_0x376416[_0x8b45('0x1d')]['id'],'role':'agent'}})[_0x8b45('0x9')](function(_0x3d321f){if(_[_0x8b45('0x13')](_0x3d321f)){throw new Error(_0x8b45('0x7a'));}_0x2680d5=_0x3d321f;return db[_0x4837af+_0x8b45('0x6b')][_0x8b45('0x79')]({'where':{'id':_0x376416['body'][_0x8b45('0x7b')]},'include':[{'model':db[_0x4837af+_0x8b45('0x6c')],'as':_0x8b45('0x6c')},{'model':db[_0x4837af+_0x186aa2],'as':_0x8b45('0x69')}]});})[_0x8b45('0x9')](function(_0x4c3bc9){if(_['isNil'](_0x4c3bc9)){throw new Error(_0x4837af+_0x8b45('0x7c'));}_0x1abe69=_0x4c3bc9;return _0x4c3bc9[_0x8b45('0x6d')]({'read':0x0,'readAt':null,'UserId':null});})[_0x8b45('0x9')](function(){var _0x9993ce={'uniqueid':_0x10a91a+'.'+_0x1abe69['id']+'.'+_0x1abe69[_0x8b45('0x6c')]['id'],'FromUserId':_0x376416['user']['id'],'type':_0x8b45('0x6e'),'ToUserId':_0x2680d5['id']};_0x9993ce[_0x4837af+'MessageId']=_0x1abe69['id'];_0x9993ce[_0x4837af+_0x8b45('0x7d')]=_0x1abe69['Interaction']['id'];_0x9993ce[_0x8b45('0x70')+_0x4837af+_0x186aa2+'Id']=_0x1abe69[_0x8b45('0x69')]['id'];return db[_0x4837af+_0x8b45('0x7e')][_0x8b45('0x72')](_0x9993ce);})[_0x8b45('0x9')](function(){return respondWithRpcPromise(_0x8b45('0x73'),{'channel':_0x10a91a,'interaction':_0x1abe69[_0x8b45('0x6c')],'message':_0x1abe69,'account':_0x1abe69[_0x8b45('0x69')],'applications':[{'id':0x0,'priority':0x1,'app':_0x8b45('0x3d'),'appdata':_0x2680d5[_0x8b45('0x11')]+','+(_0x1abe69[_0x8b45('0x69')][_0x8b45('0x7f')]||0x12c),'interval':_0x8b45('0x75')}]},routingClient);})[_0x8b45('0x9')](respondWithResult(_0x1d475c,null))['catch'](handleError(_0x1d475c,null));};
\ No newline at end of file
index fb1aa50..6bfe7f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1099=['path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./schedule.controller','get','index','/:id','show','/:id/run','run','isAuthenticated','put','destroy','exports','multer'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x1099,0x10d));var _0x9109=function(_0x3532b5,_0x304f91){_0x3532b5=_0x3532b5-0x0;var _0x2a574a=_0x1099[_0x3532b5];return _0x2a574a;};'use strict';var multer=require(_0x9109('0x0'));var util=require('util');var path=require(_0x9109('0x1'));var timeout=require(_0x9109('0x2'));var express=require(_0x9109('0x3'));var router=express[_0x9109('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x9109('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x9109('0x6'));var controller=require(_0x9109('0x7'));router[_0x9109('0x8')]('/',auth['isAuthenticated'](),controller[_0x9109('0x9')]);router['get'](_0x9109('0xa'),auth['isAuthenticated'](),controller[_0x9109('0xb')]);router[_0x9109('0x8')](_0x9109('0xc'),auth['isAuthenticated'](),controller[_0x9109('0xd')]);router['post']('/',auth[_0x9109('0xe')](),controller['create']);router[_0x9109('0xf')]('/:id',auth[_0x9109('0xe')](),controller['update']);router['delete'](_0x9109('0xa'),auth[_0x9109('0xe')](),controller[_0x9109('0x10')]);module[_0x9109('0x11')]=router;
\ No newline at end of file
+var _0xf90d=['/:id/run','run','post','create','put','delete','destroy','exports','util','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated','show'];(function(_0x48a8eb,_0x3ace17){var _0x490c9c=function(_0x307714){while(--_0x307714){_0x48a8eb['push'](_0x48a8eb['shift']());}};_0x490c9c(++_0x3ace17);}(_0xf90d,0x14b));var _0xdf90=function(_0x51cdf6,_0x3695a3){_0x51cdf6=_0x51cdf6-0x0;var _0x2ec836=_0xf90d[_0x51cdf6];return _0x2ec836;};'use strict';var multer=require('multer');var util=require(_0xdf90('0x0'));var path=require('path');var timeout=require(_0xdf90('0x1'));var express=require('express');var router=express[_0xdf90('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xdf90('0x3'));var interaction=require(_0xdf90('0x4'));var config=require(_0xdf90('0x5'));var controller=require('./schedule.controller');router[_0xdf90('0x6')]('/',auth['isAuthenticated'](),controller[_0xdf90('0x7')]);router[_0xdf90('0x6')](_0xdf90('0x8'),auth[_0xdf90('0x9')](),controller[_0xdf90('0xa')]);router[_0xdf90('0x6')](_0xdf90('0xb'),auth[_0xdf90('0x9')](),controller[_0xdf90('0xc')]);router[_0xdf90('0xd')]('/',auth[_0xdf90('0x9')](),controller[_0xdf90('0xe')]);router[_0xdf90('0xf')]('/:id',auth[_0xdf90('0x9')](),controller['update']);router[_0xdf90('0x10')](_0xdf90('0x8'),auth['isAuthenticated'](),controller[_0xdf90('0x11')]);module[_0xdf90('0x12')]=router;
\ No newline at end of file
index 5787c4e..72a4f26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8f9=['months','weeks','days','hours','minutes','csv','pdf','custom','default','BOOLEAN','TEXT','sequelize','exports','STRING','0\x200\x20*\x20*\x20*','DATE','INTEGER','ENUM','years','quarters'];(function(_0x466ae5,_0xbc79){var _0x51f4f4=function(_0x464476){while(--_0x464476){_0x466ae5['push'](_0x466ae5['shift']());}};_0x51f4f4(++_0xbc79);}(_0xf8f9,0x1af));var _0x9f8f=function(_0x1b0512,_0x171dc2){_0x1b0512=_0x1b0512-0x0;var _0x210725=_0xf8f9[_0x1b0512];return _0x210725;};'use strict';var Sequelize=require(_0x9f8f('0x0'));module[_0x9f8f('0x1')]={'name':{'type':Sequelize[_0x9f8f('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x9f8f('0x2')]},'active':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0x9f8f('0x2')],'allowNull':![],'defaultValue':_0x9f8f('0x3')},'startAt':{'type':Sequelize[_0x9f8f('0x4')],'allowNull':![]},'endAt':{'type':Sequelize[_0x9f8f('0x4')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0x9f8f('0x5')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0x9f8f('0x6')](_0x9f8f('0x7'),_0x9f8f('0x8'),_0x9f8f('0x9'),_0x9f8f('0xa'),_0x9f8f('0xb'),_0x9f8f('0xc'),_0x9f8f('0xd')),'allowNull':![],'defaultValue':'days'},'output':{'type':Sequelize[_0x9f8f('0x6')](_0x9f8f('0xe'),_0x9f8f('0xf'),'xlsx'),'allowNull':![],'defaultValue':_0x9f8f('0xe')},'type':{'type':Sequelize['ENUM'](_0x9f8f('0x10'),_0x9f8f('0x11')),'allowNull':![],'defaultValue':_0x9f8f('0x10')},'sendMail':{'type':Sequelize[_0x9f8f('0x12')],'defaultValue':![]},'email':{'type':Sequelize['STRING']},'cc':{'type':Sequelize[_0x9f8f('0x13')]},'bcc':{'type':Sequelize[_0x9f8f('0x13')]},'sendIfEmpty':{'type':Sequelize[_0x9f8f('0x12')],'defaultValue':!![]}};
\ No newline at end of file
+var _0xdbff=['quarters','months','days','hours','minutes','csv','xlsx','default','TEXT','sequelize','exports','STRING','BOOLEAN','0\x200\x20*\x20*\x20*','DATE','ENUM','years'];(function(_0x51020b,_0x38c2c7){var _0x371e47=function(_0x2a538f){while(--_0x2a538f){_0x51020b['push'](_0x51020b['shift']());}};_0x371e47(++_0x38c2c7);}(_0xdbff,0xf7));var _0xfdbf=function(_0x3430aa,_0x57cd92){_0x3430aa=_0x3430aa-0x0;var _0x2ac5c=_0xdbff[_0x3430aa];return _0x2ac5c;};'use strict';var Sequelize=require(_0xfdbf('0x0'));module[_0xfdbf('0x1')]={'name':{'type':Sequelize[_0xfdbf('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xfdbf('0x2')]},'active':{'type':Sequelize[_0xfdbf('0x3')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xfdbf('0x4')},'startAt':{'type':Sequelize[_0xfdbf('0x5')],'allowNull':![]},'endAt':{'type':Sequelize[_0xfdbf('0x5')],'allowNull':![]},'subtractNumber':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0xfdbf('0x6')](_0xfdbf('0x7'),_0xfdbf('0x8'),_0xfdbf('0x9'),'weeks',_0xfdbf('0xa'),_0xfdbf('0xb'),_0xfdbf('0xc')),'allowNull':![],'defaultValue':_0xfdbf('0xa')},'output':{'type':Sequelize[_0xfdbf('0x6')](_0xfdbf('0xd'),'pdf',_0xfdbf('0xe')),'allowNull':![],'defaultValue':_0xfdbf('0xd')},'type':{'type':Sequelize[_0xfdbf('0x6')]('custom',_0xfdbf('0xf')),'allowNull':![],'defaultValue':'custom'},'sendMail':{'type':Sequelize[_0xfdbf('0x3')],'defaultValue':![]},'email':{'type':Sequelize[_0xfdbf('0x2')]},'cc':{'type':Sequelize[_0xfdbf('0x10')]},'bcc':{'type':Sequelize[_0xfdbf('0x10')]},'sendIfEmpty':{'type':Sequelize[_0xfdbf('0x3')],'defaultValue':!![]}};
\ No newline at end of file
index b6f10dd..5c54918 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28a8=['options','includeAll','rows','catch','show','keys','include','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','Scheduler','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','run','../../config/schedule','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','fs-extra','lodash','squel','crypto','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','limit','undefined','count','set','apply','reject','save','update','then','destroy','get','UserProfileResource','stack','index','map','Schedule','rawAttributes','fieldName','type','key','model','name','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','where','pick','filter','merge','VIRTUAL'];(function(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0x28a8,0x10c));var _0x828a=function(_0x57c2f6,_0x1ee1bf){_0x57c2f6=_0x57c2f6-0x0;var _0x1cbd95=_0x28a8[_0x57c2f6];return _0x1cbd95;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x828a('0x0'));var jsonpatch=require(_0x828a('0x1'));var rp=require(_0x828a('0x2'));var moment=require(_0x828a('0x3'));var BPromise=require(_0x828a('0x4'));var Mustache=require(_0x828a('0x5'));var util=require(_0x828a('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(_0x828a('0x7'));var _=require(_0x828a('0x8'));var squel=require(_0x828a('0x9'));var crypto=require(_0x828a('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x828a('0xb'));var querystring=require('querystring');var Papa=require(_0x828a('0xc'));var Redis=require(_0x828a('0xd'));var authService=require(_0x828a('0xe'));var qs=require(_0x828a('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x828a('0x10'));var utils=require('../../config/utils');var config=require(_0x828a('0x11'));var licenseUtil=require(_0x828a('0x12'));var db=require(_0x828a('0x13'))['db'];function respondWithStatusCode(_0x2af144,_0x516856){_0x516856=_0x516856||0xcc;return function(_0x57cece){if(_0x57cece){return _0x2af144[_0x828a('0x14')](_0x516856);}return _0x2af144['status'](_0x516856)[_0x828a('0x15')]();};}function respondWithResult(_0x5ccbcf,_0x226b8e){_0x226b8e=_0x226b8e||0xc8;return function(_0x3bbd66){if(_0x3bbd66){return _0x5ccbcf[_0x828a('0x16')](_0x226b8e)[_0x828a('0x17')](_0x3bbd66);}};}function respondWithFilteredResult(_0x1be083,_0x5b6e3c){return function(_0x181760){if(_0x181760){var _0x445968=typeof _0x5b6e3c[_0x828a('0x18')]==='undefined'&&typeof _0x5b6e3c[_0x828a('0x19')]===_0x828a('0x1a');var _0x11314e=_0x181760[_0x828a('0x1b')];var _0x453398=_0x445968?0x0:_0x5b6e3c[_0x828a('0x18')];var _0x1ad1d0=_0x445968?_0x181760[_0x828a('0x1b')]:_0x5b6e3c[_0x828a('0x18')]+_0x5b6e3c[_0x828a('0x19')];var _0x51308a;if(_0x1ad1d0>=_0x11314e){_0x1ad1d0=_0x11314e;_0x51308a=0xc8;}else{_0x51308a=0xce;}_0x1be083[_0x828a('0x16')](_0x51308a);return _0x1be083[_0x828a('0x1c')]('Content-Range',_0x453398+'-'+_0x1ad1d0+'/'+_0x11314e)[_0x828a('0x17')](_0x181760);}return null;};}function patchUpdates(_0x3e391e){return function(_0x4bda33){try{jsonpatch[_0x828a('0x1d')](_0x4bda33,_0x3e391e,!![]);}catch(_0xd922dd){return BPromise[_0x828a('0x1e')](_0xd922dd);}return _0x4bda33[_0x828a('0x1f')]();};}function saveUpdates(_0x1cfce1,_0x4b7c36){return function(_0x255be9){if(_0x255be9){return _0x255be9[_0x828a('0x20')](_0x1cfce1)[_0x828a('0x21')](function(_0x5884c8){return _0x5884c8;});}return null;};}function removeEntity(_0x336a11,_0x5eb50b){return function(_0x19349e){if(_0x19349e){return _0x19349e[_0x828a('0x22')]()[_0x828a('0x21')](function(){var _0x269974=_0x19349e[_0x828a('0x23')]({'plain':!![]});var _0x2dfe65='Scheduler';return db[_0x828a('0x24')][_0x828a('0x22')]({'where':{'type':_0x2dfe65,'resourceId':_0x269974['id']}})['then'](function(){return _0x19349e;});})['then'](function(){_0x336a11[_0x828a('0x16')](0xcc)[_0x828a('0x15')]();});}};}function handleEntityNotFound(_0x3a179a,_0x3f57ae){return function(_0x2d0c5a){if(!_0x2d0c5a){_0x3a179a['sendStatus'](0x194);}return _0x2d0c5a;};}function handleError(_0x4ad628,_0x106519){_0x106519=_0x106519||0x1f4;return function(_0x1306fa){logger['error'](_0x1306fa[_0x828a('0x25')]);if(_0x1306fa['name']){delete _0x1306fa['name'];}_0x4ad628[_0x828a('0x16')](_0x106519)['send'](_0x1306fa);};}exports[_0x828a('0x26')]=function(_0x3a86a7,_0x588e4e){var _0x213d7c={},_0x402ab4={},_0x3b9905={'count':0x0,'rows':[]};var _0x244536=_[_0x828a('0x27')](db[_0x828a('0x28')][_0x828a('0x29')],function(_0x266512){return{'name':_0x266512[_0x828a('0x2a')],'type':_0x266512[_0x828a('0x2b')][_0x828a('0x2c')]};});_0x402ab4[_0x828a('0x2d')]=_[_0x828a('0x27')](_0x244536,_0x828a('0x2e'));_0x402ab4[_0x828a('0x2f')]=_['keys'](_0x3a86a7[_0x828a('0x2f')]);_0x402ab4[_0x828a('0x30')]=_[_0x828a('0x31')](_0x402ab4[_0x828a('0x2d')],_0x402ab4[_0x828a('0x2f')]);_0x213d7c['attributes']=_[_0x828a('0x31')](_0x402ab4[_0x828a('0x2d')],qs[_0x828a('0x32')](_0x3a86a7[_0x828a('0x2f')]['fields']));_0x213d7c[_0x828a('0x33')]=_0x213d7c['attributes'][_0x828a('0x34')]?_0x213d7c['attributes']:_0x402ab4[_0x828a('0x2d')];if(!_0x3a86a7[_0x828a('0x2f')][_0x828a('0x35')](_0x828a('0x36'))){_0x213d7c[_0x828a('0x19')]=qs['limit'](_0x3a86a7['query'][_0x828a('0x19')]);_0x213d7c[_0x828a('0x18')]=qs[_0x828a('0x18')](_0x3a86a7[_0x828a('0x2f')][_0x828a('0x18')]);}_0x213d7c['order']=qs['sort'](_0x3a86a7[_0x828a('0x2f')]['sort']);_0x213d7c[_0x828a('0x37')]=qs[_0x828a('0x30')](_[_0x828a('0x38')](_0x3a86a7[_0x828a('0x2f')],_0x402ab4[_0x828a('0x30')]),_0x244536);if(_0x3a86a7[_0x828a('0x2f')][_0x828a('0x39')]){_0x213d7c[_0x828a('0x37')]=_[_0x828a('0x3a')](_0x213d7c[_0x828a('0x37')],{'$or':_[_0x828a('0x27')](_0x244536,function(_0x1e18b5){if(_0x1e18b5[_0x828a('0x2b')]!==_0x828a('0x3b')){var _0x1d0c6e={};_0x1d0c6e[_0x1e18b5['name']]={'$like':'%'+_0x3a86a7[_0x828a('0x2f')][_0x828a('0x39')]+'%'};return _0x1d0c6e;}})});}_0x213d7c=_['merge']({},_0x213d7c,_0x3a86a7[_0x828a('0x3c')]);var _0x137e5={'where':_0x213d7c[_0x828a('0x37')]};return db[_0x828a('0x28')]['count'](_0x137e5)[_0x828a('0x21')](function(_0x259971){_0x3b9905[_0x828a('0x1b')]=_0x259971;if(_0x3a86a7[_0x828a('0x2f')][_0x828a('0x3d')]){_0x213d7c['include']=[{'all':!![]}];}return db[_0x828a('0x28')]['findAll'](_0x213d7c);})['then'](function(_0x1c6c81){_0x3b9905[_0x828a('0x3e')]=_0x1c6c81;return _0x3b9905;})[_0x828a('0x21')](respondWithFilteredResult(_0x588e4e,_0x213d7c))[_0x828a('0x3f')](handleError(_0x588e4e,null));};exports[_0x828a('0x40')]=function(_0x45c40c,_0x5abcc1){var _0x88461a={'raw':![],'where':{'id':_0x45c40c['params']['id']}},_0x2e5778={};_0x2e5778[_0x828a('0x2d')]=_['keys'](db['Schedule'][_0x828a('0x29')]);_0x2e5778[_0x828a('0x2f')]=_[_0x828a('0x41')](_0x45c40c[_0x828a('0x2f')]);_0x2e5778[_0x828a('0x30')]=_[_0x828a('0x31')](_0x2e5778[_0x828a('0x2d')],_0x2e5778[_0x828a('0x2f')]);_0x88461a[_0x828a('0x33')]=_[_0x828a('0x31')](_0x2e5778[_0x828a('0x2d')],qs[_0x828a('0x32')](_0x45c40c['query'][_0x828a('0x32')]));_0x88461a[_0x828a('0x33')]=_0x88461a['attributes'][_0x828a('0x34')]?_0x88461a[_0x828a('0x33')]:_0x2e5778[_0x828a('0x2d')];if(_0x45c40c[_0x828a('0x2f')][_0x828a('0x3d')]){_0x88461a[_0x828a('0x42')]=[{'all':!![]}];}_0x88461a=_['merge']({},_0x88461a,_0x45c40c[_0x828a('0x3c')]);return db[_0x828a('0x28')][_0x828a('0x43')](_0x88461a)[_0x828a('0x21')](handleEntityNotFound(_0x5abcc1,null))['then'](respondWithResult(_0x5abcc1,null))['catch'](handleError(_0x5abcc1,null));};exports[_0x828a('0x44')]=function(_0x10385b,_0x26d5ca){return db['Schedule'][_0x828a('0x44')](_0x10385b[_0x828a('0x45')],{})['then'](function(_0x5af729){var _0x1fff1f=_0x10385b['user'][_0x828a('0x23')]({'plain':!![]});if(!_0x1fff1f)throw new Error(_0x828a('0x46'));if(_0x1fff1f[_0x828a('0x47')]===_0x828a('0x48')){var _0x29dff5=_0x5af729[_0x828a('0x23')]({'plain':!![]});var _0x5e7517=_0x828a('0x49');return db[_0x828a('0x4a')][_0x828a('0x43')]({'where':{'name':_0x5e7517,'userProfileId':_0x1fff1f[_0x828a('0x4b')]},'raw':!![]})[_0x828a('0x21')](function(_0x32be39){if(_0x32be39&&_0x32be39[_0x828a('0x4c')]===0x0){return db[_0x828a('0x24')][_0x828a('0x44')]({'name':_0x29dff5[_0x828a('0x2e')],'resourceId':_0x29dff5['id'],'type':_0x32be39[_0x828a('0x2e')],'sectionId':_0x32be39['id']},{})[_0x828a('0x21')](function(){return _0x5af729;});}else{return _0x5af729;}})[_0x828a('0x3f')](function(_0xccca6){logger[_0x828a('0x4d')](_0x828a('0x4e'),_0xccca6);throw _0xccca6;});}return _0x5af729;})[_0x828a('0x21')](respondWithResult(_0x26d5ca,0xc9))[_0x828a('0x3f')](handleError(_0x26d5ca,null));};exports['update']=function(_0x3db351,_0x53fb28){if(_0x3db351[_0x828a('0x45')]['id']){delete _0x3db351['body']['id'];}return db[_0x828a('0x28')][_0x828a('0x43')]({'where':{'id':_0x3db351[_0x828a('0x4f')]['id']}})['then'](handleEntityNotFound(_0x53fb28,null))[_0x828a('0x21')](saveUpdates(_0x3db351[_0x828a('0x45')],null))[_0x828a('0x21')](respondWithResult(_0x53fb28,null))[_0x828a('0x3f')](handleError(_0x53fb28,null));};exports['destroy']=function(_0x53a541,_0x362775){return db[_0x828a('0x28')][_0x828a('0x43')]({'where':{'id':_0x53a541['params']['id']}})[_0x828a('0x21')](handleEntityNotFound(_0x362775,null))['then'](removeEntity(_0x362775,null))[_0x828a('0x3f')](handleError(_0x362775,null));};exports[_0x828a('0x50')]=function(_0x2fba69,_0x31fa62,_0x2f25a7){var _0x3f38c0=require(_0x828a('0x51'));return db['Schedule'][_0x828a('0x43')]({'where':{'id':_0x2fba69[_0x828a('0x4f')]['id']},'raw':!![]})[_0x828a('0x21')](handleEntityNotFound(_0x31fa62,null))[_0x828a('0x21')](function(){_0x3f38c0['run'](_0x2fba69[_0x828a('0x4f')]['id']);})[_0x828a('0x21')](respondWithStatusCode(_0x31fa62,null))[_0x828a('0x3f')](handleError(_0x31fa62,null));};
\ No newline at end of file
+var _0xbaf5=['sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','save','update','then','destroy','get','UserProfileResource','error','name','send','index','map','Schedule','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','Scheduler','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','../../config/schedule','eml-format','fast-json-patch','request-promise','bluebird','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x5c693b,_0x19502d){var _0x4fd6f4=function(_0x433f9b){while(--_0x433f9b){_0x5c693b['push'](_0x5c693b['shift']());}};_0x4fd6f4(++_0x19502d);}(_0xbaf5,0x187));var _0x5baf=function(_0x45bccd,_0x130e52){_0x45bccd=_0x45bccd-0x0;var _0x561467=_0xbaf5[_0x45bccd];return _0x561467;};'use strict';var emlformat=require(_0x5baf('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x5baf('0x1'));var rp=require(_0x5baf('0x2'));var moment=require('moment');var BPromise=require(_0x5baf('0x3'));var Mustache=require('mustache');var util=require(_0x5baf('0x4'));var path=require(_0x5baf('0x5'));var sox=require('sox');var csv=require(_0x5baf('0x6'));var ejs=require(_0x5baf('0x7'));var fs=require('fs');var fs_extra=require(_0x5baf('0x8'));var _=require(_0x5baf('0x9'));var squel=require(_0x5baf('0xa'));var crypto=require(_0x5baf('0xb'));var jsforce=require(_0x5baf('0xc'));var deskjs=require(_0x5baf('0xd'));var toCsv=require('to-csv');var querystring=require(_0x5baf('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x5baf('0xf'));var qs=require(_0x5baf('0x10'));var as=require(_0x5baf('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5baf('0x12'))(_0x5baf('0x13'));var utils=require(_0x5baf('0x14'));var config=require(_0x5baf('0x15'));var licenseUtil=require(_0x5baf('0x16'));var db=require(_0x5baf('0x17'))['db'];function respondWithStatusCode(_0x2c8b4c,_0xa08f86){_0xa08f86=_0xa08f86||0xcc;return function(_0x4546f5){if(_0x4546f5){return _0x2c8b4c[_0x5baf('0x18')](_0xa08f86);}return _0x2c8b4c[_0x5baf('0x19')](_0xa08f86)[_0x5baf('0x1a')]();};}function respondWithResult(_0x4b0903,_0x1cc555){_0x1cc555=_0x1cc555||0xc8;return function(_0x961393){if(_0x961393){return _0x4b0903[_0x5baf('0x19')](_0x1cc555)['json'](_0x961393);}};}function respondWithFilteredResult(_0x1079ac,_0x388d51){return function(_0x2a3377){if(_0x2a3377){var _0x594f58=typeof _0x388d51[_0x5baf('0x1b')]===_0x5baf('0x1c')&&typeof _0x388d51[_0x5baf('0x1d')]==='undefined';var _0x19d525=_0x2a3377[_0x5baf('0x1e')];var _0x58d817=_0x594f58?0x0:_0x388d51['offset'];var _0x3c4165=_0x594f58?_0x2a3377['count']:_0x388d51[_0x5baf('0x1b')]+_0x388d51[_0x5baf('0x1d')];var _0x486380;if(_0x3c4165>=_0x19d525){_0x3c4165=_0x19d525;_0x486380=0xc8;}else{_0x486380=0xce;}_0x1079ac[_0x5baf('0x19')](_0x486380);return _0x1079ac[_0x5baf('0x1f')](_0x5baf('0x20'),_0x58d817+'-'+_0x3c4165+'/'+_0x19d525)[_0x5baf('0x21')](_0x2a3377);}return null;};}function patchUpdates(_0x2861bf){return function(_0x468dfc){try{jsonpatch[_0x5baf('0x22')](_0x468dfc,_0x2861bf,!![]);}catch(_0x244c22){return BPromise['reject'](_0x244c22);}return _0x468dfc[_0x5baf('0x23')]();};}function saveUpdates(_0x19f8ee,_0x3a060f){return function(_0x43d98f){if(_0x43d98f){return _0x43d98f[_0x5baf('0x24')](_0x19f8ee)[_0x5baf('0x25')](function(_0x28d47d){return _0x28d47d;});}return null;};}function removeEntity(_0x5e4380,_0x391a1d){return function(_0xee74a8){if(_0xee74a8){return _0xee74a8[_0x5baf('0x26')]()['then'](function(){var _0x227e24=_0xee74a8[_0x5baf('0x27')]({'plain':!![]});var _0x4d474d='Scheduler';return db[_0x5baf('0x28')][_0x5baf('0x26')]({'where':{'type':_0x4d474d,'resourceId':_0x227e24['id']}})['then'](function(){return _0xee74a8;});})[_0x5baf('0x25')](function(){_0x5e4380[_0x5baf('0x19')](0xcc)[_0x5baf('0x1a')]();});}};}function handleEntityNotFound(_0x132997,_0x363001){return function(_0x4cf0fc){if(!_0x4cf0fc){_0x132997[_0x5baf('0x18')](0x194);}return _0x4cf0fc;};}function handleError(_0x5736f6,_0x3d304d){_0x3d304d=_0x3d304d||0x1f4;return function(_0x378135){logger[_0x5baf('0x29')](_0x378135['stack']);if(_0x378135[_0x5baf('0x2a')]){delete _0x378135[_0x5baf('0x2a')];}_0x5736f6['status'](_0x3d304d)[_0x5baf('0x2b')](_0x378135);};}exports[_0x5baf('0x2c')]=function(_0x2fb2bf,_0x4575d3){var _0x12e10d={},_0x1aa264={},_0xf7ba7c={'count':0x0,'rows':[]};var _0x2d6fa4=_[_0x5baf('0x2d')](db[_0x5baf('0x2e')][_0x5baf('0x2f')],function(_0x314726){return{'name':_0x314726[_0x5baf('0x30')],'type':_0x314726[_0x5baf('0x31')][_0x5baf('0x32')]};});_0x1aa264[_0x5baf('0x33')]=_[_0x5baf('0x2d')](_0x2d6fa4,_0x5baf('0x2a'));_0x1aa264['query']=_[_0x5baf('0x34')](_0x2fb2bf[_0x5baf('0x35')]);_0x1aa264[_0x5baf('0x36')]=_[_0x5baf('0x37')](_0x1aa264[_0x5baf('0x33')],_0x1aa264[_0x5baf('0x35')]);_0x12e10d['attributes']=_[_0x5baf('0x37')](_0x1aa264['model'],qs[_0x5baf('0x38')](_0x2fb2bf[_0x5baf('0x35')]['fields']));_0x12e10d[_0x5baf('0x39')]=_0x12e10d['attributes'][_0x5baf('0x3a')]?_0x12e10d[_0x5baf('0x39')]:_0x1aa264['model'];if(!_0x2fb2bf[_0x5baf('0x35')][_0x5baf('0x3b')](_0x5baf('0x3c'))){_0x12e10d[_0x5baf('0x1d')]=qs['limit'](_0x2fb2bf[_0x5baf('0x35')][_0x5baf('0x1d')]);_0x12e10d['offset']=qs[_0x5baf('0x1b')](_0x2fb2bf[_0x5baf('0x35')][_0x5baf('0x1b')]);}_0x12e10d['order']=qs[_0x5baf('0x3d')](_0x2fb2bf[_0x5baf('0x35')][_0x5baf('0x3d')]);_0x12e10d[_0x5baf('0x3e')]=qs['filters'](_[_0x5baf('0x3f')](_0x2fb2bf[_0x5baf('0x35')],_0x1aa264['filters']),_0x2d6fa4);if(_0x2fb2bf[_0x5baf('0x35')][_0x5baf('0x40')]){_0x12e10d['where']=_[_0x5baf('0x41')](_0x12e10d['where'],{'$or':_[_0x5baf('0x2d')](_0x2d6fa4,function(_0x2e3159){if(_0x2e3159[_0x5baf('0x31')]!=='VIRTUAL'){var _0x143dd3={};_0x143dd3[_0x2e3159['name']]={'$like':'%'+_0x2fb2bf[_0x5baf('0x35')][_0x5baf('0x40')]+'%'};return _0x143dd3;}})});}_0x12e10d=_[_0x5baf('0x41')]({},_0x12e10d,_0x2fb2bf[_0x5baf('0x42')]);var _0x55b4a8={'where':_0x12e10d[_0x5baf('0x3e')]};return db[_0x5baf('0x2e')][_0x5baf('0x1e')](_0x55b4a8)[_0x5baf('0x25')](function(_0x4a0210){_0xf7ba7c[_0x5baf('0x1e')]=_0x4a0210;if(_0x2fb2bf[_0x5baf('0x35')][_0x5baf('0x43')]){_0x12e10d[_0x5baf('0x44')]=[{'all':!![]}];}return db[_0x5baf('0x2e')][_0x5baf('0x45')](_0x12e10d);})['then'](function(_0x157aab){_0xf7ba7c[_0x5baf('0x46')]=_0x157aab;return _0xf7ba7c;})[_0x5baf('0x25')](respondWithFilteredResult(_0x4575d3,_0x12e10d))[_0x5baf('0x47')](handleError(_0x4575d3,null));};exports['show']=function(_0x44dd68,_0x14afab){var _0x9cd388={'raw':![],'where':{'id':_0x44dd68[_0x5baf('0x48')]['id']}},_0x5bc32e={};_0x5bc32e[_0x5baf('0x33')]=_[_0x5baf('0x34')](db['Schedule']['rawAttributes']);_0x5bc32e['query']=_[_0x5baf('0x34')](_0x44dd68[_0x5baf('0x35')]);_0x5bc32e[_0x5baf('0x36')]=_[_0x5baf('0x37')](_0x5bc32e[_0x5baf('0x33')],_0x5bc32e[_0x5baf('0x35')]);_0x9cd388[_0x5baf('0x39')]=_[_0x5baf('0x37')](_0x5bc32e['model'],qs[_0x5baf('0x38')](_0x44dd68['query'][_0x5baf('0x38')]));_0x9cd388[_0x5baf('0x39')]=_0x9cd388[_0x5baf('0x39')]['length']?_0x9cd388[_0x5baf('0x39')]:_0x5bc32e[_0x5baf('0x33')];if(_0x44dd68[_0x5baf('0x35')][_0x5baf('0x43')]){_0x9cd388[_0x5baf('0x44')]=[{'all':!![]}];}_0x9cd388=_[_0x5baf('0x41')]({},_0x9cd388,_0x44dd68[_0x5baf('0x42')]);return db[_0x5baf('0x2e')][_0x5baf('0x49')](_0x9cd388)[_0x5baf('0x25')](handleEntityNotFound(_0x14afab,null))['then'](respondWithResult(_0x14afab,null))[_0x5baf('0x47')](handleError(_0x14afab,null));};exports[_0x5baf('0x4a')]=function(_0x105855,_0x19b1d0){return db[_0x5baf('0x2e')][_0x5baf('0x4a')](_0x105855[_0x5baf('0x4b')],{})[_0x5baf('0x25')](function(_0x245673){var _0x2f00df=_0x105855[_0x5baf('0x4c')][_0x5baf('0x27')]({'plain':!![]});if(!_0x2f00df)throw new Error(_0x5baf('0x4d'));if(_0x2f00df['role']==='user'){var _0x17cd57=_0x245673[_0x5baf('0x27')]({'plain':!![]});var _0x58bd0f=_0x5baf('0x4e');return db[_0x5baf('0x4f')][_0x5baf('0x49')]({'where':{'name':_0x58bd0f,'userProfileId':_0x2f00df['userProfileId']},'raw':!![]})[_0x5baf('0x25')](function(_0x5bce90){if(_0x5bce90&&_0x5bce90[_0x5baf('0x50')]===0x0){return db[_0x5baf('0x28')][_0x5baf('0x4a')]({'name':_0x17cd57['name'],'resourceId':_0x17cd57['id'],'type':_0x5bce90[_0x5baf('0x2a')],'sectionId':_0x5bce90['id']},{})[_0x5baf('0x25')](function(){return _0x245673;});}else{return _0x245673;}})[_0x5baf('0x47')](function(_0x29e04d){logger[_0x5baf('0x29')](_0x5baf('0x51'),_0x29e04d);throw _0x29e04d;});}return _0x245673;})[_0x5baf('0x25')](respondWithResult(_0x19b1d0,0xc9))[_0x5baf('0x47')](handleError(_0x19b1d0,null));};exports[_0x5baf('0x24')]=function(_0x134ab2,_0xfc5e16){if(_0x134ab2[_0x5baf('0x4b')]['id']){delete _0x134ab2[_0x5baf('0x4b')]['id'];}return db[_0x5baf('0x2e')]['find']({'where':{'id':_0x134ab2['params']['id']}})['then'](handleEntityNotFound(_0xfc5e16,null))[_0x5baf('0x25')](saveUpdates(_0x134ab2['body'],null))[_0x5baf('0x25')](respondWithResult(_0xfc5e16,null))[_0x5baf('0x47')](handleError(_0xfc5e16,null));};exports[_0x5baf('0x26')]=function(_0x2f4b66,_0x20b37c){return db[_0x5baf('0x2e')][_0x5baf('0x49')]({'where':{'id':_0x2f4b66[_0x5baf('0x48')]['id']}})['then'](handleEntityNotFound(_0x20b37c,null))['then'](removeEntity(_0x20b37c,null))[_0x5baf('0x47')](handleError(_0x20b37c,null));};exports['run']=function(_0x5afdc8,_0x162d27,_0x104c6a){var _0x44f376=require(_0x5baf('0x52'));return db[_0x5baf('0x2e')][_0x5baf('0x49')]({'where':{'id':_0x5afdc8['params']['id']},'raw':!![]})['then'](handleEntityNotFound(_0x162d27,null))['then'](function(){_0x44f376['run'](_0x5afdc8[_0x5baf('0x48')]['id']);})[_0x5baf('0x25')](respondWithStatusCode(_0x162d27,null))[_0x5baf('0x47')](handleError(_0x162d27,null));};
\ No newline at end of file
index 1fb10b5..c528920 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa995=['../../config/environment','./schedule.attributes','exports','Schedule','tools_schedules','lodash','util','api','moment','bluebird','request-promise','rimraf'];(function(_0x422905,_0x3bce3a){var _0x33dc6c=function(_0x4852c9){while(--_0x4852c9){_0x422905['push'](_0x422905['shift']());}};_0x33dc6c(++_0x3bce3a);}(_0xa995,0xf5));var _0x5a99=function(_0x326e7f,_0xe8da32){_0x326e7f=_0x326e7f-0x0;var _0x5b11fe=_0xa995[_0x326e7f];return _0x5b11fe;};'use strict';var _=require(_0x5a99('0x0'));var util=require(_0x5a99('0x1'));var logger=require('../../config/logger')(_0x5a99('0x2'));var moment=require(_0x5a99('0x3'));var BPromise=require(_0x5a99('0x4'));var rp=require(_0x5a99('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5a99('0x6'));var config=require(_0x5a99('0x7'));var attributes=require(_0x5a99('0x8'));module[_0x5a99('0x9')]=function(_0x135918,_0x5f285b){return _0x135918['define'](_0x5a99('0xa'),attributes,{'tableName':_0x5a99('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x09b6=['rimraf','../../config/environment','./schedule.attributes','exports','define','Schedule','tools_schedules','lodash','moment','bluebird','request-promise'];(function(_0x2f9877,_0x26ecb0){var _0x1466a6=function(_0x13852b){while(--_0x13852b){_0x2f9877['push'](_0x2f9877['shift']());}};_0x1466a6(++_0x26ecb0);}(_0x09b6,0x104));var _0x609b=function(_0x3c7d53,_0x2826d0){_0x3c7d53=_0x3c7d53-0x0;var _0x2c8387=_0x09b6[_0x3c7d53];return _0x2c8387;};'use strict';var _=require(_0x609b('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x609b('0x1'));var BPromise=require(_0x609b('0x2'));var rp=require(_0x609b('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x609b('0x4'));var config=require(_0x609b('0x5'));var attributes=require(_0x609b('0x6'));module[_0x609b('0x7')]=function(_0x145511,_0x3cc739){return _0x145511[_0x609b('0x8')](_0x609b('0x9'),attributes,{'tableName':_0x609b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8bf21bf..3f6b8da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3fb4=['debug','Schedule,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','Schedule,\x20%s,\x20%s','request\x20sent'];(function(_0xd49730,_0x3501b0){var _0x81a7ea=function(_0x58d152){while(--_0x58d152){_0xd49730['push'](_0xd49730['shift']());}};_0x81a7ea(++_0x3501b0);}(_0x3fb4,0xf3));var _0x43fb=function(_0x88cd7b,_0x4c884c){_0x88cd7b=_0x88cd7b-0x0;var _0x56fcc8=_0x3fb4[_0x88cd7b];return _0x56fcc8;};'use strict';var _=require(_0x43fb('0x0'));var util=require(_0x43fb('0x1'));var moment=require('moment');var BPromise=require(_0x43fb('0x2'));var rs=require(_0x43fb('0x3'));var fs=require('fs');var Redis=require(_0x43fb('0x4'));var db=require(_0x43fb('0x5'))['db'];var utils=require(_0x43fb('0x6'));var logger=require(_0x43fb('0x7'))(_0x43fb('0x8'));var config=require(_0x43fb('0x9'));var jayson=require(_0x43fb('0xa'));var client=jayson[_0x43fb('0xb')][_0x43fb('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x474514,_0x3c19eb,_0x497a68){return new BPromise(function(_0x1647b6,_0x59601d){return client[_0x43fb('0xd')](_0x474514,_0x497a68)[_0x43fb('0xe')](function(_0x464586){logger['info'](_0x43fb('0xf'),_0x3c19eb,_0x43fb('0x10'));logger[_0x43fb('0x11')](_0x43fb('0x12'),_0x3c19eb,'request\x20sent',JSON[_0x43fb('0x13')](_0x464586));if(_0x464586[_0x43fb('0x14')]){if(_0x464586[_0x43fb('0x14')][_0x43fb('0x15')]===0x1f4){logger[_0x43fb('0x14')](_0x43fb('0xf'),_0x3c19eb,_0x464586[_0x43fb('0x14')]['message']);return _0x59601d(_0x464586[_0x43fb('0x14')][_0x43fb('0x16')]);}logger[_0x43fb('0x14')](_0x43fb('0xf'),_0x3c19eb,_0x464586[_0x43fb('0x14')][_0x43fb('0x16')]);return _0x1647b6(_0x464586['error'][_0x43fb('0x16')]);}else{logger[_0x43fb('0x17')]('Schedule,\x20%s,\x20%s',_0x3c19eb,'request\x20sent');_0x1647b6(_0x464586[_0x43fb('0x18')][_0x43fb('0x16')]);}})[_0x43fb('0x19')](function(_0x4afa00){logger[_0x43fb('0x14')](_0x43fb('0xf'),_0x3c19eb,_0x4afa00);_0x59601d(_0x4afa00);});});}
\ No newline at end of file
+var _0xdb57=['Schedule,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','result','catch','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','request','then','info','Schedule,\x20%s,\x20%s'];(function(_0x3e0598,_0x209ace){var _0x33e0d3=function(_0x4aba7c){while(--_0x4aba7c){_0x3e0598['push'](_0x3e0598['shift']());}};_0x33e0d3(++_0x209ace);}(_0xdb57,0x9f));var _0x7db5=function(_0x4e1584,_0x3e0d82){_0x4e1584=_0x4e1584-0x0;var _0x1f4d68=_0xdb57[_0x4e1584];return _0x1f4d68;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x7db5('0x0'));var BPromise=require(_0x7db5('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7db5('0x2'));var db=require(_0x7db5('0x3'))['db'];var utils=require(_0x7db5('0x4'));var logger=require(_0x7db5('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x7db5('0x6'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x22dae5,_0x1cd61f,_0x31ac59){return new BPromise(function(_0x501604,_0x4fa775){return client[_0x7db5('0x7')](_0x22dae5,_0x31ac59)[_0x7db5('0x8')](function(_0x550c6f){logger[_0x7db5('0x9')](_0x7db5('0xa'),_0x1cd61f,'request\x20sent');logger['debug'](_0x7db5('0xb'),_0x1cd61f,_0x7db5('0xc'),JSON['stringify'](_0x550c6f));if(_0x550c6f[_0x7db5('0xd')]){if(_0x550c6f['error']['code']===0x1f4){logger['error'](_0x7db5('0xa'),_0x1cd61f,_0x550c6f['error'][_0x7db5('0xe')]);return _0x4fa775(_0x550c6f[_0x7db5('0xd')][_0x7db5('0xe')]);}logger[_0x7db5('0xd')](_0x7db5('0xa'),_0x1cd61f,_0x550c6f[_0x7db5('0xd')]['message']);return _0x501604(_0x550c6f[_0x7db5('0xd')][_0x7db5('0xe')]);}else{logger[_0x7db5('0x9')](_0x7db5('0xa'),_0x1cd61f,_0x7db5('0xc'));_0x501604(_0x550c6f[_0x7db5('0xf')][_0x7db5('0xe')]);}})[_0x7db5('0x10')](function(_0x26916c){logger[_0x7db5('0xd')](_0x7db5('0xa'),_0x1cd61f,_0x26916c);_0x4fa775(_0x26916c);});});}
\ No newline at end of file
index 8916713..21f9c3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecd2=['/:id/download','post','create','update','delete','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./screenRecording.controller','get','/describe','describe','/:id','isAuthenticated'];(function(_0x47623f,_0x148f3a){var _0x282ce8=function(_0x35bca1){while(--_0x35bca1){_0x47623f['push'](_0x47623f['shift']());}};_0x282ce8(++_0x148f3a);}(_0xecd2,0x181));var _0x2ecd=function(_0x3cd9bb,_0x1af2fc){_0x3cd9bb=_0x3cd9bb-0x0;var _0x20433b=_0xecd2[_0x3cd9bb];return _0x20433b;};'use strict';var multer=require(_0x2ecd('0x0'));var util=require('util');var path=require(_0x2ecd('0x1'));var timeout=require(_0x2ecd('0x2'));var express=require(_0x2ecd('0x3'));var router=express['Router']();var fs_extra=require(_0x2ecd('0x4'));var auth=require(_0x2ecd('0x5'));var interaction=require(_0x2ecd('0x6'));var config=require(_0x2ecd('0x7'));var controller=require(_0x2ecd('0x8'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x2ecd('0x9')](_0x2ecd('0xa'),auth['isAuthenticated'](),controller[_0x2ecd('0xb')]);router[_0x2ecd('0x9')](_0x2ecd('0xc'),auth[_0x2ecd('0xd')](),controller['show']);router[_0x2ecd('0x9')](_0x2ecd('0xe'),auth[_0x2ecd('0xd')](),controller['download']);router[_0x2ecd('0xf')]('/',auth[_0x2ecd('0xd')](),controller[_0x2ecd('0x10')]);router['put'](_0x2ecd('0xc'),auth[_0x2ecd('0xd')](),controller[_0x2ecd('0x11')]);router[_0x2ecd('0x12')](_0x2ecd('0xc'),auth[_0x2ecd('0xd')](),controller[_0x2ecd('0x13')]);module[_0x2ecd('0x14')]=router;
\ No newline at end of file
+var _0x4407=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./screenRecording.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/download','download','create','put','update','delete','exports','path','express'];(function(_0x29c691,_0x46f6a2){var _0x3d20ab=function(_0x51295e){while(--_0x51295e){_0x29c691['push'](_0x29c691['shift']());}};_0x3d20ab(++_0x46f6a2);}(_0x4407,0x10f));var _0x7440=function(_0x254d55,_0x58ce75){_0x254d55=_0x254d55-0x0;var _0x42faa2=_0x4407[_0x254d55];return _0x42faa2;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x7440('0x0'));var timeout=require('connect-timeout');var express=require(_0x7440('0x1'));var router=express['Router']();var fs_extra=require(_0x7440('0x2'));var auth=require(_0x7440('0x3'));var interaction=require(_0x7440('0x4'));var config=require(_0x7440('0x5'));var controller=require(_0x7440('0x6'));router[_0x7440('0x7')]('/',auth[_0x7440('0x8')](),controller[_0x7440('0x9')]);router[_0x7440('0x7')](_0x7440('0xa'),auth['isAuthenticated'](),controller[_0x7440('0xb')]);router['get'](_0x7440('0xc'),auth['isAuthenticated'](),controller[_0x7440('0xd')]);router['get'](_0x7440('0xe'),auth['isAuthenticated'](),controller[_0x7440('0xf')]);router['post']('/',auth[_0x7440('0x8')](),controller[_0x7440('0x10')]);router[_0x7440('0x11')](_0x7440('0xc'),auth['isAuthenticated'](),controller[_0x7440('0x12')]);router[_0x7440('0x13')](_0x7440('0xc'),auth[_0x7440('0x8')](),controller['destroy']);module[_0x7440('0x14')]=router;
\ No newline at end of file
index 1e79358..f7eeb4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd786=['extname','STRING','replace','setDataValue','INTEGER','startedAt','closedAt','duration','DATE','format','MM-DD-YYYY\x20HH:mm','toString','createdAt','updatedAt','sequelize','moment','path','../../config/environment','VIRTUAL','getDataValue','value'];(function(_0x1a86f3,_0x21847a){var _0x399b06=function(_0x14c2f6){while(--_0x14c2f6){_0x1a86f3['push'](_0x1a86f3['shift']());}};_0x399b06(++_0x21847a);}(_0xd786,0x1dc));var _0x6d78=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0xd786[_0x465028];return _0xb783d4;};'use strict';var Sequelize=require(_0x6d78('0x0'));var moment=require(_0x6d78('0x1'));var path=require(_0x6d78('0x2'));var config=require(_0x6d78('0x3'));module['exports']={'format':{'type':Sequelize[_0x6d78('0x4')],'get':function(){return this[_0x6d78('0x5')](_0x6d78('0x6'))?path[_0x6d78('0x7')](this[_0x6d78('0x5')](_0x6d78('0x6'))):undefined;}},'interactionid':{'type':Sequelize[_0x6d78('0x8')]},'channel':{'type':Sequelize['STRING']},'value':{'type':Sequelize[_0x6d78('0x8')],'set':function(_0x30e9e5){var _0x5c3f38=_0x30e9e5[_0x6d78('0x9')](/\\/g,'/');this[_0x6d78('0xa')](_0x6d78('0x6'),_0x5c3f38);}},'rating':{'type':Sequelize[_0x6d78('0xb')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize['INTEGER'],'set':function(_0x3198b6){this[_0x6d78('0xa')](_0x6d78('0xc'),moment()['subtract'](_0x3198b6,'ms'));this[_0x6d78('0xa')](_0x6d78('0xd'),moment());this[_0x6d78('0xa')](_0x6d78('0xe'),_0x3198b6);}},'startedAt':{'type':Sequelize[_0x6d78('0xf')],'get':function(){return moment(this[_0x6d78('0x5')](_0x6d78('0xc')))[_0x6d78('0x10')](_0x6d78('0x11'))[_0x6d78('0x12')]();}},'closedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x6d78('0x5')](_0x6d78('0xd')))[_0x6d78('0x10')](_0x6d78('0x11'))[_0x6d78('0x12')]();}},'createdAt':{'type':Sequelize['DATE'],'get':function(){return moment(this['getDataValue'](_0x6d78('0x13')))['format'](_0x6d78('0x11'))['toString']();}},'updatedAt':{'type':Sequelize[_0x6d78('0xf')],'get':function(){return moment(this['getDataValue'](_0x6d78('0x14')))[_0x6d78('0x10')](_0x6d78('0x11'))[_0x6d78('0x12')]();}}};
\ No newline at end of file
+var _0x0c8d=['updatedAt','moment','path','../../config/environment','exports','VIRTUAL','value','STRING','replace','setDataValue','INTEGER','startedAt','subtract','duration','DATE','getDataValue','format','MM-DD-YYYY\x20HH:mm','toString','createdAt'];(function(_0x388b10,_0x43254c){var _0xe4ebf=function(_0x25988a){while(--_0x25988a){_0x388b10['push'](_0x388b10['shift']());}};_0xe4ebf(++_0x43254c);}(_0x0c8d,0x79));var _0xd0c8=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0x0c8d[_0x46e363];return _0x3fb059;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xd0c8('0x0'));var path=require(_0xd0c8('0x1'));var config=require(_0xd0c8('0x2'));module[_0xd0c8('0x3')]={'format':{'type':Sequelize[_0xd0c8('0x4')],'get':function(){return this['getDataValue']('value')?path['extname'](this['getDataValue'](_0xd0c8('0x5'))):undefined;}},'interactionid':{'type':Sequelize[_0xd0c8('0x6')]},'channel':{'type':Sequelize[_0xd0c8('0x6')]},'value':{'type':Sequelize['STRING'],'set':function(_0x16d1c1){var _0x5f0027=_0x16d1c1[_0xd0c8('0x7')](/\\/g,'/');this[_0xd0c8('0x8')](_0xd0c8('0x5'),_0x5f0027);}},'rating':{'type':Sequelize[_0xd0c8('0x9')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0xd0c8('0x9')],'set':function(_0x5678f9){this[_0xd0c8('0x8')](_0xd0c8('0xa'),moment()[_0xd0c8('0xb')](_0x5678f9,'ms'));this[_0xd0c8('0x8')]('closedAt',moment());this['setDataValue'](_0xd0c8('0xc'),_0x5678f9);}},'startedAt':{'type':Sequelize[_0xd0c8('0xd')],'get':function(){return moment(this['getDataValue']('startedAt'))['format']('MM-DD-YYYY\x20HH:mm')['toString']();}},'closedAt':{'type':Sequelize[_0xd0c8('0xd')],'get':function(){return moment(this[_0xd0c8('0xe')]('closedAt'))[_0xd0c8('0xf')](_0xd0c8('0x10'))[_0xd0c8('0x11')]();}},'createdAt':{'type':Sequelize[_0xd0c8('0xd')],'get':function(){return moment(this[_0xd0c8('0xe')](_0xd0c8('0x12')))[_0xd0c8('0xf')](_0xd0c8('0x10'))[_0xd0c8('0x11')]();}},'updatedAt':{'type':Sequelize[_0xd0c8('0xd')],'get':function(){return moment(this[_0xd0c8('0xe')](_0xd0c8('0x13')))['format'](_0xd0c8('0x10'))[_0xd0c8('0x11')]();}}};
\ No newline at end of file
index 8f05867..88535b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d17=['apply','then','error','name','index','map','rawAttributes','type','key','model','differenceBy','format','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','ScreenRecording','count','includeAll','include','findAll','catch','show','find','create','body','update','duration','closedAt','value','params','describe','../../components/encryptor','uniqueid','join','root','%s.cypher','existsSync','decryptFile','secrets','recording','server/files/screen_recordings','Sequelize','ValidationError','filename','download','extname','unlink','Not\x20found','destroy','info','cancellazione\x20fisica\x20documento\x20%s','isNil','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','path','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','offset','limit','set','Content-Range'];(function(_0x4ce04a,_0x1a38be){var _0x22924e=function(_0x34485a){while(--_0x34485a){_0x4ce04a['push'](_0x4ce04a['shift']());}};_0x22924e(++_0x1a38be);}(_0x2d17,0x17e));var _0x72d1=function(_0x1fab27,_0x29543e){_0x1fab27=_0x1fab27-0x0;var _0x1b6881=_0x2d17[_0x1fab27];return _0x1b6881;};'use strict';var emlformat=require(_0x72d1('0x0'));var rimraf=require(_0x72d1('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x72d1('0x2'));var rp=require(_0x72d1('0x3'));var moment=require('moment');var BPromise=require(_0x72d1('0x4'));var Mustache=require(_0x72d1('0x5'));var util=require('util');var path=require(_0x72d1('0x6'));var sox=require('sox');var csv=require(_0x72d1('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x72d1('0x8'));var _=require(_0x72d1('0x9'));var squel=require('squel');var crypto=require(_0x72d1('0xa'));var jsforce=require(_0x72d1('0xb'));var deskjs=require(_0x72d1('0xc'));var toCsv=require('to-csv');var querystring=require(_0x72d1('0xd'));var Papa=require(_0x72d1('0xe'));var Redis=require(_0x72d1('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x72d1('0x10'));var as=require(_0x72d1('0x11'));var hardwareService=require(_0x72d1('0x12'));var logger=require(_0x72d1('0x13'))(_0x72d1('0x14'));var utils=require(_0x72d1('0x15'));var config=require(_0x72d1('0x16'));var licenseUtil=require(_0x72d1('0x17'));var db=require(_0x72d1('0x18'))['db'];function respondWithStatusCode(_0x2f5a78,_0x5ad4df){_0x5ad4df=_0x5ad4df||0xcc;return function(_0x3cd1ae){if(_0x3cd1ae){return _0x2f5a78[_0x72d1('0x19')](_0x5ad4df);}return _0x2f5a78[_0x72d1('0x1a')](_0x5ad4df)[_0x72d1('0x1b')]();};}function respondWithResult(_0x22ac6f,_0x685a27){_0x685a27=_0x685a27||0xc8;return function(_0x143718){if(_0x143718){return _0x22ac6f[_0x72d1('0x1a')](_0x685a27)[_0x72d1('0x1c')](_0x143718);}};}function respondWithFilteredResult(_0x3f190f,_0x21c85e){return function(_0x23a238){if(_0x23a238){var _0x8d458=typeof _0x21c85e['offset']===_0x72d1('0x1d')&&typeof _0x21c85e['limit']===_0x72d1('0x1d');var _0x2c9851=_0x23a238['count'];var _0x1061b7=_0x8d458?0x0:_0x21c85e[_0x72d1('0x1e')];var _0x1ca18d=_0x8d458?_0x23a238['count']:_0x21c85e['offset']+_0x21c85e[_0x72d1('0x1f')];var _0x10d464;if(_0x1ca18d>=_0x2c9851){_0x1ca18d=_0x2c9851;_0x10d464=0xc8;}else{_0x10d464=0xce;}_0x3f190f[_0x72d1('0x1a')](_0x10d464);return _0x3f190f[_0x72d1('0x20')](_0x72d1('0x21'),_0x1061b7+'-'+_0x1ca18d+'/'+_0x2c9851)[_0x72d1('0x1c')](_0x23a238);}return null;};}function patchUpdates(_0x1e2411){return function(_0x5c7982){try{jsonpatch[_0x72d1('0x22')](_0x5c7982,_0x1e2411,!![]);}catch(_0x56e8d3){return BPromise['reject'](_0x56e8d3);}return _0x5c7982['save']();};}function saveUpdates(_0x585243,_0x445985){return function(_0x374602){if(_0x374602){return _0x374602['update'](_0x585243)[_0x72d1('0x23')](function(_0x256dc1){return _0x256dc1;});}return null;};}function removeEntity(_0x492086,_0x1431ee){return function(_0x26fa35){if(_0x26fa35){return _0x26fa35['destroy']()['then'](function(){_0x492086[_0x72d1('0x1a')](0xcc)[_0x72d1('0x1b')]();});}};}function handleEntityNotFound(_0x2f661,_0x2f879f){return function(_0xdf6a69){if(!_0xdf6a69){_0x2f661[_0x72d1('0x19')](0x194);}return _0xdf6a69;};}function handleError(_0x163bec,_0x589f7c){_0x589f7c=_0x589f7c||0x1f4;return function(_0x57ec9e){logger[_0x72d1('0x24')](_0x57ec9e['stack']);if(_0x57ec9e[_0x72d1('0x25')]){delete _0x57ec9e[_0x72d1('0x25')];}_0x163bec[_0x72d1('0x1a')](_0x589f7c)['send'](_0x57ec9e);};}exports[_0x72d1('0x26')]=function(_0x4c4c41,_0x707cd0){var _0x20055f={},_0x32588f={},_0x2cc0c8={'count':0x0,'rows':[]};var _0x51242b=_[_0x72d1('0x27')](db['ScreenRecording'][_0x72d1('0x28')],function(_0x32dc5e){return{'name':_0x32dc5e['fieldName'],'type':_0x32dc5e[_0x72d1('0x29')][_0x72d1('0x2a')]};});_0x32588f[_0x72d1('0x2b')]=_[_0x72d1('0x2c')](_[_0x72d1('0x27')](_0x51242b,'name'),[_0x72d1('0x2d')]);_0x32588f[_0x72d1('0x2e')]=_[_0x72d1('0x2f')](_0x4c4c41['query']);_0x32588f[_0x72d1('0x30')]=_[_0x72d1('0x31')](_0x32588f['model'],_0x32588f[_0x72d1('0x2e')]);_0x20055f[_0x72d1('0x32')]=_[_0x72d1('0x31')](_0x32588f['model'],qs[_0x72d1('0x33')](_0x4c4c41['query'][_0x72d1('0x33')]));_0x20055f[_0x72d1('0x32')]=_0x20055f[_0x72d1('0x32')][_0x72d1('0x34')]?_0x20055f[_0x72d1('0x32')]:_0x32588f[_0x72d1('0x2b')];if(!_0x4c4c41[_0x72d1('0x2e')][_0x72d1('0x35')](_0x72d1('0x36'))){_0x20055f[_0x72d1('0x1f')]=qs[_0x72d1('0x1f')](_0x4c4c41['query'][_0x72d1('0x1f')]);_0x20055f[_0x72d1('0x1e')]=qs[_0x72d1('0x1e')](_0x4c4c41[_0x72d1('0x2e')]['offset']);}_0x20055f[_0x72d1('0x37')]=qs[_0x72d1('0x38')](_0x4c4c41[_0x72d1('0x2e')]['sort']);_0x20055f[_0x72d1('0x39')]=qs[_0x72d1('0x30')](_[_0x72d1('0x3a')](_0x4c4c41['query'],_0x32588f[_0x72d1('0x30')]),_0x51242b);if(_0x4c4c41[_0x72d1('0x2e')][_0x72d1('0x3b')]){_0x20055f['where']=_[_0x72d1('0x3c')](_0x20055f[_0x72d1('0x39')],{'$or':_[_0x72d1('0x27')](_0x51242b,function(_0x14cb3d){if(_0x14cb3d[_0x72d1('0x29')]!==_0x72d1('0x3d')){var _0xd7ec0f={};_0xd7ec0f[_0x14cb3d['name']]={'$like':'%'+_0x4c4c41[_0x72d1('0x2e')][_0x72d1('0x3b')]+'%'};return _0xd7ec0f;}})});}_0x20055f=_[_0x72d1('0x3c')]({},_0x20055f,_0x4c4c41[_0x72d1('0x3e')]);var _0x20fb2f={'where':_0x20055f[_0x72d1('0x39')]};return db[_0x72d1('0x3f')][_0x72d1('0x40')](_0x20fb2f)['then'](function(_0x44d5b2){_0x2cc0c8[_0x72d1('0x40')]=_0x44d5b2;if(_0x4c4c41[_0x72d1('0x2e')][_0x72d1('0x41')]){_0x20055f[_0x72d1('0x42')]=[{'all':!![]}];}return db[_0x72d1('0x3f')][_0x72d1('0x43')](_0x20055f);})[_0x72d1('0x23')](function(_0x5620f0){_0x2cc0c8['rows']=_0x5620f0;return _0x2cc0c8;})[_0x72d1('0x23')](respondWithFilteredResult(_0x707cd0,_0x20055f))[_0x72d1('0x44')](handleError(_0x707cd0,null));};exports[_0x72d1('0x45')]=function(_0x21d361,_0x5a6bc4){var _0x3fe286={'raw':![],'where':{'id':_0x21d361['params']['id']}},_0x3e80e0={};_0x3e80e0[_0x72d1('0x2b')]=_['keys'](db[_0x72d1('0x3f')][_0x72d1('0x28')]);_0x3e80e0['query']=_[_0x72d1('0x2f')](_0x21d361['query']);_0x3e80e0['filters']=_['intersection'](_0x3e80e0[_0x72d1('0x2b')],_0x3e80e0['query']);_0x3fe286[_0x72d1('0x32')]=_[_0x72d1('0x31')](_0x3e80e0[_0x72d1('0x2b')],qs['fields'](_0x21d361['query'][_0x72d1('0x33')]));_0x3fe286['attributes']=_0x3fe286['attributes'][_0x72d1('0x34')]?_0x3fe286[_0x72d1('0x32')]:_0x3e80e0[_0x72d1('0x2b')];if(_0x21d361['query']['includeAll']){_0x3fe286['include']=[{'all':!![]}];}_0x3fe286=_['merge']({},_0x3fe286,_0x21d361[_0x72d1('0x3e')]);return db[_0x72d1('0x3f')][_0x72d1('0x46')](_0x3fe286)[_0x72d1('0x23')](handleEntityNotFound(_0x5a6bc4,null))[_0x72d1('0x23')](respondWithResult(_0x5a6bc4,null))[_0x72d1('0x44')](handleError(_0x5a6bc4,null));};exports[_0x72d1('0x47')]=function(_0x5924c,_0x1e2c11){return db['ScreenRecording'][_0x72d1('0x47')](_0x5924c[_0x72d1('0x48')],{})[_0x72d1('0x23')](respondWithResult(_0x1e2c11,0xc9))['catch'](handleError(_0x1e2c11,null));};exports[_0x72d1('0x49')]=function(_0x29c88f,_0x12ad75){if(_0x29c88f['body']['id']){delete _0x29c88f[_0x72d1('0x48')]['id'];}delete _0x29c88f[_0x72d1('0x48')][_0x72d1('0x4a')];delete _0x29c88f[_0x72d1('0x48')]['createdAt'];delete _0x29c88f['body'][_0x72d1('0x4b')];delete _0x29c88f[_0x72d1('0x48')][_0x72d1('0x4c')];return db['ScreenRecording'][_0x72d1('0x46')]({'where':{'id':_0x29c88f[_0x72d1('0x4d')]['id']}})[_0x72d1('0x23')](handleEntityNotFound(_0x12ad75,null))[_0x72d1('0x23')](saveUpdates(_0x29c88f[_0x72d1('0x48')],null))[_0x72d1('0x23')](respondWithResult(_0x12ad75,null))[_0x72d1('0x44')](handleError(_0x12ad75,null));};exports[_0x72d1('0x4e')]=function(_0x12870c,_0x18f986){return db[_0x72d1('0x3f')]['describe']()[_0x72d1('0x23')](respondWithResult(_0x18f986,null))['catch'](handleError(_0x18f986,null));};exports['download']=function(_0x356196,_0x5f2bba,_0x3c880e){var _0x7e401b=require(_0x72d1('0x4f'));var _0x162248=![];var _0x473a7b={};if(_0x356196[_0x72d1('0x2e')][_0x72d1('0x29')]&&_0x356196[_0x72d1('0x2e')][_0x72d1('0x29')]===_0x72d1('0x50')){_0x473a7b[_0x72d1('0x50')]=_0x356196['params']['id'];}else{_0x473a7b['id']=_0x356196[_0x72d1('0x4d')]['id'];}return db[_0x72d1('0x3f')][_0x72d1('0x46')]({'where':_0x473a7b,'attributes':['id','value'],'raw':!![]})['then'](handleEntityNotFound(_0x5f2bba,null))[_0x72d1('0x23')](function(_0x140f0b){if(_0x140f0b){var _0x16e9e7=path[_0x72d1('0x51')](config[_0x72d1('0x52')],'server/files/screen_recordings',_0x140f0b[_0x72d1('0x4c')]);var _0x48f4a7=util[_0x72d1('0x2d')](_0x72d1('0x53'),_0x16e9e7);if(fs[_0x72d1('0x54')](_0x48f4a7)){_0x162248=!![];return _0x7e401b[_0x72d1('0x55')](_0x48f4a7,_0x16e9e7,config[_0x72d1('0x56')][_0x72d1('0x57')])[_0x72d1('0x23')](function(){return _0x140f0b;});}return _0x140f0b;}})[_0x72d1('0x23')](function(_0x384f0a){if(_0x384f0a){var _0x3a2dfe=path[_0x72d1('0x51')](config[_0x72d1('0x52')],_0x72d1('0x58'),_0x384f0a[_0x72d1('0x4c')]);if(!fs[_0x72d1('0x54')](_0x3a2dfe)){throw new db[(_0x72d1('0x59'))][(_0x72d1('0x5a'))]('ScreenRecording\x20not\x20found');}if(_0x384f0a[_0x72d1('0x5b')]){return _0x5f2bba[_0x72d1('0x5c')](_0x3a2dfe,_0x384f0a[_0x72d1('0x5b')]+path[_0x72d1('0x5d')](_0x3a2dfe),function(){if(_0x162248){fs[_0x72d1('0x5e')](_0x3a2dfe);}});}else{return _0x5f2bba[_0x72d1('0x5c')](_0x3a2dfe,function(_0x4e2d85){if(_0x162248){fs[_0x72d1('0x5e')](_0x3a2dfe);}});}}})[_0x72d1('0x44')](function(_0xb05cd9){if(_0xb05cd9['message']==='ScreenRecording\x20not\x20found'){_0x5f2bba[_0x72d1('0x1a')](0x194)['send'](_0x72d1('0x5f'));}else{return handleError(_0x5f2bba,null);}});};exports[_0x72d1('0x60')]=function(_0x201810,_0x41525c){return db[_0x72d1('0x3f')][_0x72d1('0x46')]({'where':{'id':_0x201810[_0x72d1('0x4d')]['id']}})[_0x72d1('0x23')](function(_0x28e42b){if(_['isNil'](_0x28e42b)){throw new ReferenceError('Entity\x20not\x20found');}return _0x28e42b;})[_0x72d1('0x23')](function(_0x1d44f0){var _0x1bd80b=path['join'](config[_0x72d1('0x52')],_0x72d1('0x58'),_0x1d44f0['value']);logger[_0x72d1('0x61')](_0x72d1('0x62'),_0x1bd80b);if(!_[_0x72d1('0x63')](_0x1d44f0[_0x72d1('0x4c')])&&fs[_0x72d1('0x54')](_0x1bd80b)){logger[_0x72d1('0x61')](_0x72d1('0x64')+_0x1bd80b+_0x72d1('0x65'));fs[_0x72d1('0x66')](_0x1bd80b);}_0x1bd80b=_0x1bd80b+_0x72d1('0x67');if(!_[_0x72d1('0x63')](_0x1d44f0[_0x72d1('0x4c')])&&fs['existsSync'](_0x1bd80b)){logger['info'](_0x72d1('0x64')+_0x1bd80b+_0x72d1('0x65'));fs[_0x72d1('0x66')](_0x1bd80b);}return _0x1d44f0;})[_0x72d1('0x23')](function(_0x2ae8c9){if(!_0x2ae8c9)throw new InternalError();return _0x2ae8c9[_0x72d1('0x60')]();})[_0x72d1('0x23')](function(){_0x41525c[_0x72d1('0x1a')](0xcc)['end']();})[_0x72d1('0x44')](handleError(_0x41525c,null));};
\ No newline at end of file
+var _0xed1f=['zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','../../mysqldb','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject','update','then','destroy','sendStatus','error','stack','name','send','ScreenRecording','rawAttributes','fieldName','type','key','differenceBy','map','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','includeAll','include','findAll','show','params','merge','options','catch','create','body','duration','createdAt','closedAt','value','find','describe','download','../../components/encryptor','uniqueid','join','root','server/files/screen_recordings','format','decryptFile','secrets','recording','existsSync','Sequelize','ValidationError','filename','extname','unlink','message','ScreenRecording\x20not\x20found','Not\x20found','isNil','Entity\x20not\x20found','info','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','.cypher','eml-format','rimraf'];(function(_0x92c236,_0x5c51dd){var _0x367c26=function(_0x47687e){while(--_0x47687e){_0x92c236['push'](_0x92c236['shift']());}};_0x367c26(++_0x5c51dd);}(_0xed1f,0x6a));var _0xfed1=function(_0x29d94e,_0xf386d6){_0x29d94e=_0x29d94e-0x0;var _0x106237=_0xed1f[_0x29d94e];return _0x106237;};'use strict';var emlformat=require(_0xfed1('0x0'));var rimraf=require(_0xfed1('0x1'));var zipdir=require(_0xfed1('0x2'));var jsonpatch=require(_0xfed1('0x3'));var rp=require(_0xfed1('0x4'));var moment=require(_0xfed1('0x5'));var BPromise=require(_0xfed1('0x6'));var Mustache=require(_0xfed1('0x7'));var util=require(_0xfed1('0x8'));var path=require(_0xfed1('0x9'));var sox=require(_0xfed1('0xa'));var csv=require(_0xfed1('0xb'));var ejs=require(_0xfed1('0xc'));var fs=require('fs');var fs_extra=require(_0xfed1('0xd'));var _=require(_0xfed1('0xe'));var squel=require(_0xfed1('0xf'));var crypto=require(_0xfed1('0x10'));var jsforce=require(_0xfed1('0x11'));var deskjs=require('desk.js');var toCsv=require(_0xfed1('0xb'));var querystring=require(_0xfed1('0x12'));var Papa=require('papaparse');var Redis=require(_0xfed1('0x13'));var authService=require(_0xfed1('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xfed1('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xfed1('0x16'))(_0xfed1('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xfed1('0x18'));var db=require(_0xfed1('0x19'))['db'];function respondWithStatusCode(_0x569a6e,_0x17f4fe){_0x17f4fe=_0x17f4fe||0xcc;return function(_0x5a3469){if(_0x5a3469){return _0x569a6e['sendStatus'](_0x17f4fe);}return _0x569a6e[_0xfed1('0x1a')](_0x17f4fe)[_0xfed1('0x1b')]();};}function respondWithResult(_0x532537,_0x2dde3a){_0x2dde3a=_0x2dde3a||0xc8;return function(_0x5b9455){if(_0x5b9455){return _0x532537['status'](_0x2dde3a)[_0xfed1('0x1c')](_0x5b9455);}};}function respondWithFilteredResult(_0x39aa0c,_0x1fbb7a){return function(_0x123c46){if(_0x123c46){var _0x582e67=typeof _0x1fbb7a[_0xfed1('0x1d')]==='undefined'&&typeof _0x1fbb7a[_0xfed1('0x1e')]===_0xfed1('0x1f');var _0x489a0f=_0x123c46[_0xfed1('0x20')];var _0xa72a20=_0x582e67?0x0:_0x1fbb7a['offset'];var _0x59509b=_0x582e67?_0x123c46['count']:_0x1fbb7a[_0xfed1('0x1d')]+_0x1fbb7a['limit'];var _0x201f18;if(_0x59509b>=_0x489a0f){_0x59509b=_0x489a0f;_0x201f18=0xc8;}else{_0x201f18=0xce;}_0x39aa0c[_0xfed1('0x1a')](_0x201f18);return _0x39aa0c['set'](_0xfed1('0x21'),_0xa72a20+'-'+_0x59509b+'/'+_0x489a0f)[_0xfed1('0x1c')](_0x123c46);}return null;};}function patchUpdates(_0x59ee9d){return function(_0x3ce944){try{jsonpatch[_0xfed1('0x22')](_0x3ce944,_0x59ee9d,!![]);}catch(_0xff4842){return BPromise[_0xfed1('0x23')](_0xff4842);}return _0x3ce944['save']();};}function saveUpdates(_0x203cec,_0x59333e){return function(_0x446558){if(_0x446558){return _0x446558[_0xfed1('0x24')](_0x203cec)[_0xfed1('0x25')](function(_0x532ec2){return _0x532ec2;});}return null;};}function removeEntity(_0x41d22c,_0x594917){return function(_0x460555){if(_0x460555){return _0x460555[_0xfed1('0x26')]()[_0xfed1('0x25')](function(){_0x41d22c[_0xfed1('0x1a')](0xcc)[_0xfed1('0x1b')]();});}};}function handleEntityNotFound(_0x1199b7,_0x527fc7){return function(_0x465ce6){if(!_0x465ce6){_0x1199b7[_0xfed1('0x27')](0x194);}return _0x465ce6;};}function handleError(_0x49072b,_0x1d6c72){_0x1d6c72=_0x1d6c72||0x1f4;return function(_0x2b9dd2){logger[_0xfed1('0x28')](_0x2b9dd2[_0xfed1('0x29')]);if(_0x2b9dd2[_0xfed1('0x2a')]){delete _0x2b9dd2[_0xfed1('0x2a')];}_0x49072b['status'](_0x1d6c72)[_0xfed1('0x2b')](_0x2b9dd2);};}exports['index']=function(_0x3106ee,_0x4e5249){var _0x53b0c9={},_0x1cec64={},_0x42c950={'count':0x0,'rows':[]};var _0x2d334e=_['map'](db[_0xfed1('0x2c')][_0xfed1('0x2d')],function(_0x13f414){return{'name':_0x13f414[_0xfed1('0x2e')],'type':_0x13f414[_0xfed1('0x2f')][_0xfed1('0x30')]};});_0x1cec64['model']=_[_0xfed1('0x31')](_[_0xfed1('0x32')](_0x2d334e,'name'),['format']);_0x1cec64[_0xfed1('0x33')]=_[_0xfed1('0x34')](_0x3106ee[_0xfed1('0x33')]);_0x1cec64[_0xfed1('0x35')]=_[_0xfed1('0x36')](_0x1cec64['model'],_0x1cec64[_0xfed1('0x33')]);_0x53b0c9[_0xfed1('0x37')]=_[_0xfed1('0x36')](_0x1cec64[_0xfed1('0x38')],qs[_0xfed1('0x39')](_0x3106ee['query'][_0xfed1('0x39')]));_0x53b0c9['attributes']=_0x53b0c9[_0xfed1('0x37')][_0xfed1('0x3a')]?_0x53b0c9[_0xfed1('0x37')]:_0x1cec64[_0xfed1('0x38')];if(!_0x3106ee[_0xfed1('0x33')][_0xfed1('0x3b')](_0xfed1('0x3c'))){_0x53b0c9[_0xfed1('0x1e')]=qs['limit'](_0x3106ee[_0xfed1('0x33')][_0xfed1('0x1e')]);_0x53b0c9[_0xfed1('0x1d')]=qs[_0xfed1('0x1d')](_0x3106ee['query']['offset']);}_0x53b0c9[_0xfed1('0x3d')]=qs[_0xfed1('0x3e')](_0x3106ee[_0xfed1('0x33')][_0xfed1('0x3e')]);_0x53b0c9[_0xfed1('0x3f')]=qs[_0xfed1('0x35')](_[_0xfed1('0x40')](_0x3106ee[_0xfed1('0x33')],_0x1cec64['filters']),_0x2d334e);if(_0x3106ee['query'][_0xfed1('0x41')]){_0x53b0c9[_0xfed1('0x3f')]=_['merge'](_0x53b0c9[_0xfed1('0x3f')],{'$or':_[_0xfed1('0x32')](_0x2d334e,function(_0x3b0973){if(_0x3b0973[_0xfed1('0x2f')]!==_0xfed1('0x42')){var _0x31ffeb={};_0x31ffeb[_0x3b0973[_0xfed1('0x2a')]]={'$like':'%'+_0x3106ee[_0xfed1('0x33')][_0xfed1('0x41')]+'%'};return _0x31ffeb;}})});}_0x53b0c9=_['merge']({},_0x53b0c9,_0x3106ee['options']);var _0x5598dc={'where':_0x53b0c9[_0xfed1('0x3f')]};return db[_0xfed1('0x2c')][_0xfed1('0x20')](_0x5598dc)['then'](function(_0x3454e6){_0x42c950['count']=_0x3454e6;if(_0x3106ee[_0xfed1('0x33')][_0xfed1('0x43')]){_0x53b0c9[_0xfed1('0x44')]=[{'all':!![]}];}return db['ScreenRecording'][_0xfed1('0x45')](_0x53b0c9);})[_0xfed1('0x25')](function(_0x422433){_0x42c950['rows']=_0x422433;return _0x42c950;})[_0xfed1('0x25')](respondWithFilteredResult(_0x4e5249,_0x53b0c9))['catch'](handleError(_0x4e5249,null));};exports[_0xfed1('0x46')]=function(_0xf1f739,_0x229fc7){var _0x13c087={'raw':![],'where':{'id':_0xf1f739[_0xfed1('0x47')]['id']}},_0x1bfbe8={};_0x1bfbe8[_0xfed1('0x38')]=_[_0xfed1('0x34')](db[_0xfed1('0x2c')]['rawAttributes']);_0x1bfbe8[_0xfed1('0x33')]=_[_0xfed1('0x34')](_0xf1f739[_0xfed1('0x33')]);_0x1bfbe8['filters']=_['intersection'](_0x1bfbe8[_0xfed1('0x38')],_0x1bfbe8[_0xfed1('0x33')]);_0x13c087[_0xfed1('0x37')]=_[_0xfed1('0x36')](_0x1bfbe8[_0xfed1('0x38')],qs[_0xfed1('0x39')](_0xf1f739[_0xfed1('0x33')][_0xfed1('0x39')]));_0x13c087[_0xfed1('0x37')]=_0x13c087[_0xfed1('0x37')][_0xfed1('0x3a')]?_0x13c087[_0xfed1('0x37')]:_0x1bfbe8['model'];if(_0xf1f739[_0xfed1('0x33')][_0xfed1('0x43')]){_0x13c087[_0xfed1('0x44')]=[{'all':!![]}];}_0x13c087=_[_0xfed1('0x48')]({},_0x13c087,_0xf1f739[_0xfed1('0x49')]);return db[_0xfed1('0x2c')]['find'](_0x13c087)[_0xfed1('0x25')](handleEntityNotFound(_0x229fc7,null))[_0xfed1('0x25')](respondWithResult(_0x229fc7,null))[_0xfed1('0x4a')](handleError(_0x229fc7,null));};exports['create']=function(_0x22874a,_0x10f98d){return db[_0xfed1('0x2c')][_0xfed1('0x4b')](_0x22874a['body'],{})[_0xfed1('0x25')](respondWithResult(_0x10f98d,0xc9))[_0xfed1('0x4a')](handleError(_0x10f98d,null));};exports[_0xfed1('0x24')]=function(_0x42761f,_0x14745e){if(_0x42761f[_0xfed1('0x4c')]['id']){delete _0x42761f[_0xfed1('0x4c')]['id'];}delete _0x42761f[_0xfed1('0x4c')][_0xfed1('0x4d')];delete _0x42761f[_0xfed1('0x4c')][_0xfed1('0x4e')];delete _0x42761f[_0xfed1('0x4c')][_0xfed1('0x4f')];delete _0x42761f[_0xfed1('0x4c')][_0xfed1('0x50')];return db[_0xfed1('0x2c')][_0xfed1('0x51')]({'where':{'id':_0x42761f[_0xfed1('0x47')]['id']}})['then'](handleEntityNotFound(_0x14745e,null))['then'](saveUpdates(_0x42761f[_0xfed1('0x4c')],null))[_0xfed1('0x25')](respondWithResult(_0x14745e,null))[_0xfed1('0x4a')](handleError(_0x14745e,null));};exports[_0xfed1('0x52')]=function(_0x5da599,_0x3c2534){return db[_0xfed1('0x2c')]['describe']()['then'](respondWithResult(_0x3c2534,null))['catch'](handleError(_0x3c2534,null));};exports[_0xfed1('0x53')]=function(_0x1aaa3d,_0x15e90f,_0x1d8ef2){var _0x2665c8=require(_0xfed1('0x54'));var _0x1a9f22=![];var _0x144102={};if(_0x1aaa3d[_0xfed1('0x33')][_0xfed1('0x2f')]&&_0x1aaa3d['query']['type']===_0xfed1('0x55')){_0x144102[_0xfed1('0x55')]=_0x1aaa3d[_0xfed1('0x47')]['id'];}else{_0x144102['id']=_0x1aaa3d[_0xfed1('0x47')]['id'];}return db[_0xfed1('0x2c')][_0xfed1('0x51')]({'where':_0x144102,'attributes':['id',_0xfed1('0x50')],'raw':!![]})[_0xfed1('0x25')](handleEntityNotFound(_0x15e90f,null))[_0xfed1('0x25')](function(_0x427fa6){if(_0x427fa6){var _0xbd49dc=path[_0xfed1('0x56')](config[_0xfed1('0x57')],_0xfed1('0x58'),_0x427fa6[_0xfed1('0x50')]);var _0x3a7a42=util[_0xfed1('0x59')]('%s.cypher',_0xbd49dc);if(fs['existsSync'](_0x3a7a42)){_0x1a9f22=!![];return _0x2665c8[_0xfed1('0x5a')](_0x3a7a42,_0xbd49dc,config[_0xfed1('0x5b')][_0xfed1('0x5c')])[_0xfed1('0x25')](function(){return _0x427fa6;});}return _0x427fa6;}})[_0xfed1('0x25')](function(_0x41a22a){if(_0x41a22a){var _0x2ccdc3=path[_0xfed1('0x56')](config[_0xfed1('0x57')],_0xfed1('0x58'),_0x41a22a[_0xfed1('0x50')]);if(!fs[_0xfed1('0x5d')](_0x2ccdc3)){throw new db[(_0xfed1('0x5e'))][(_0xfed1('0x5f'))]('ScreenRecording\x20not\x20found');}if(_0x41a22a[_0xfed1('0x60')]){return _0x15e90f['download'](_0x2ccdc3,_0x41a22a['filename']+path[_0xfed1('0x61')](_0x2ccdc3),function(){if(_0x1a9f22){fs['unlink'](_0x2ccdc3);}});}else{return _0x15e90f[_0xfed1('0x53')](_0x2ccdc3,function(_0x5acc45){if(_0x1a9f22){fs[_0xfed1('0x62')](_0x2ccdc3);}});}}})[_0xfed1('0x4a')](function(_0x53f0ab){if(_0x53f0ab[_0xfed1('0x63')]===_0xfed1('0x64')){_0x15e90f['status'](0x194)[_0xfed1('0x2b')](_0xfed1('0x65'));}else{return handleError(_0x15e90f,null);}});};exports[_0xfed1('0x26')]=function(_0x2f37b9,_0x59a23a){return db[_0xfed1('0x2c')][_0xfed1('0x51')]({'where':{'id':_0x2f37b9[_0xfed1('0x47')]['id']}})[_0xfed1('0x25')](function(_0x23347a){if(_[_0xfed1('0x66')](_0x23347a)){throw new ReferenceError(_0xfed1('0x67'));}return _0x23347a;})[_0xfed1('0x25')](function(_0x5c043d){var _0x2d66ec=path[_0xfed1('0x56')](config[_0xfed1('0x57')],_0xfed1('0x58'),_0x5c043d[_0xfed1('0x50')]);logger[_0xfed1('0x68')]('cancellazione\x20fisica\x20documento\x20%s',_0x2d66ec);if(!_['isNil'](_0x5c043d['value'])&&fs[_0xfed1('0x5d')](_0x2d66ec)){logger[_0xfed1('0x68')](_0xfed1('0x69')+_0x2d66ec+_0xfed1('0x6a'));fs['unlinkSync'](_0x2d66ec);}_0x2d66ec=_0x2d66ec+_0xfed1('0x6b');if(!_['isNil'](_0x5c043d[_0xfed1('0x50')])&&fs[_0xfed1('0x5d')](_0x2d66ec)){logger[_0xfed1('0x68')](_0xfed1('0x69')+_0x2d66ec+_0xfed1('0x6a'));fs['unlinkSync'](_0x2d66ec);}return _0x5c043d;})[_0xfed1('0x25')](function(_0x6b74cb){if(!_0x6b74cb)throw new InternalError();return _0x6b74cb[_0xfed1('0x26')]();})['then'](function(){_0x59a23a[_0xfed1('0x1a')](0xcc)[_0xfed1('0x1b')]();})[_0xfed1('0x4a')](handleError(_0x59a23a,null));};
\ No newline at end of file
index 3e1f992..aadf3eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc17b=['rimraf','../../config/environment','./screenRecording.attributes','exports','define','ScreenRecording','screen_recordings','interactionid','lodash','util','../../config/logger','api','bluebird','path'];(function(_0x1589b6,_0x549292){var _0x168271=function(_0x2d4e95){while(--_0x2d4e95){_0x1589b6['push'](_0x1589b6['shift']());}};_0x168271(++_0x549292);}(_0xc17b,0x174));var _0xbc17=function(_0x50a0c2,_0x4befab){_0x50a0c2=_0x50a0c2-0x0;var _0x5ebadd=_0xc17b[_0x50a0c2];return _0x5ebadd;};'use strict';var _=require(_0xbc17('0x0'));var util=require(_0xbc17('0x1'));var logger=require(_0xbc17('0x2'))(_0xbc17('0x3'));var moment=require('moment');var BPromise=require(_0xbc17('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbc17('0x5'));var rimraf=require(_0xbc17('0x6'));var config=require(_0xbc17('0x7'));var attributes=require(_0xbc17('0x8'));module[_0xbc17('0x9')]=function(_0x450dfb,_0x4903d9){return _0x450dfb[_0xbc17('0xa')](_0xbc17('0xb'),attributes,{'tableName':_0xbc17('0xc'),'paranoid':![],'indexes':[{'name':_0xbc17('0xd'),'fields':[_0xbc17('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf88e=['util','../../config/logger','moment','bluebird','request-promise','path','./screenRecording.attributes','exports','interactionid'];(function(_0x2119fe,_0x4a5aee){var _0x48bbf9=function(_0x5d4dee){while(--_0x5d4dee){_0x2119fe['push'](_0x2119fe['shift']());}};_0x48bbf9(++_0x4a5aee);}(_0xf88e,0x13b));var _0xef88=function(_0x18812f,_0x281b49){_0x18812f=_0x18812f-0x0;var _0x2400ff=_0xf88e[_0x18812f];return _0x2400ff;};'use strict';var _=require('lodash');var util=require(_0xef88('0x0'));var logger=require(_0xef88('0x1'))('api');var moment=require(_0xef88('0x2'));var BPromise=require(_0xef88('0x3'));var rp=require(_0xef88('0x4'));var fs=require('fs');var path=require(_0xef88('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xef88('0x6'));module[_0xef88('0x7')]=function(_0x20fa2f,_0x169dbc){return _0x20fa2f['define']('ScreenRecording',attributes,{'tableName':'screen_recordings','paranoid':![],'indexes':[{'name':_0xef88('0x8'),'fields':[_0xef88('0x8')]}],'timestamps':!![]});};
\ No newline at end of file
index f7ae19d..4e8cbfe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41fd=['client','http','request','then','request\x20sent','debug','stringify','error','code','ScreenRecording,\x20%s,\x20%s','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0xd3235c,_0x27bfce){var _0x2354bb=function(_0xb78930){while(--_0xb78930){_0xd3235c['push'](_0xd3235c['shift']());}};_0x2354bb(++_0x27bfce);}(_0x41fd,0x19e));var _0xd41f=function(_0x3dfd10,_0x512f64){_0x3dfd10=_0x3dfd10-0x0;var _0x590de4=_0x41fd[_0x3dfd10];return _0x590de4;};'use strict';var _=require(_0xd41f('0x0'));var util=require(_0xd41f('0x1'));var moment=require(_0xd41f('0x2'));var BPromise=require(_0xd41f('0x3'));var rs=require(_0xd41f('0x4'));var fs=require('fs');var Redis=require(_0xd41f('0x5'));var db=require(_0xd41f('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xd41f('0x7'))(_0xd41f('0x8'));var config=require(_0xd41f('0x9'));var jayson=require(_0xd41f('0xa'));var client=jayson[_0xd41f('0xb')][_0xd41f('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x3ae43a,_0x871d45,_0x1bdc02){return new BPromise(function(_0x2b2447,_0x346245){return client[_0xd41f('0xd')](_0x3ae43a,_0x1bdc02)[_0xd41f('0xe')](function(_0x5bf4e6){logger['info']('ScreenRecording,\x20%s,\x20%s',_0x871d45,_0xd41f('0xf'));logger[_0xd41f('0x10')]('ScreenRecording,\x20%s,\x20%s,\x20%s',_0x871d45,_0xd41f('0xf'),JSON[_0xd41f('0x11')](_0x5bf4e6));if(_0x5bf4e6['error']){if(_0x5bf4e6[_0xd41f('0x12')][_0xd41f('0x13')]===0x1f4){logger[_0xd41f('0x12')](_0xd41f('0x14'),_0x871d45,_0x5bf4e6[_0xd41f('0x12')][_0xd41f('0x15')]);return _0x346245(_0x5bf4e6[_0xd41f('0x12')]['message']);}logger[_0xd41f('0x12')](_0xd41f('0x14'),_0x871d45,_0x5bf4e6['error']['message']);return _0x2b2447(_0x5bf4e6[_0xd41f('0x12')][_0xd41f('0x15')]);}else{logger[_0xd41f('0x16')]('ScreenRecording,\x20%s,\x20%s',_0x871d45,_0xd41f('0xf'));_0x2b2447(_0x5bf4e6[_0xd41f('0x17')][_0xd41f('0x15')]);}})[_0xd41f('0x18')](function(_0x397cdb){logger[_0xd41f('0x12')]('ScreenRecording,\x20%s,\x20%s',_0x871d45,_0x397cdb);_0x346245(_0x397cdb);});});}
\ No newline at end of file
+var _0xc7c9=['message','info','result','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','ScreenRecording,\x20%s,\x20%s','ScreenRecording,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x5072f9,_0x32d5d4){var _0x411a80=function(_0xeb8f68){while(--_0xeb8f68){_0x5072f9['push'](_0x5072f9['shift']());}};_0x411a80(++_0x32d5d4);}(_0xc7c9,0x96));var _0x9c7c=function(_0x150ef1,_0x5b4d8c){_0x150ef1=_0x150ef1-0x0;var _0x11175f=_0xc7c9[_0x150ef1];return _0x11175f;};'use strict';var _=require(_0x9c7c('0x0'));var util=require('util');var moment=require(_0x9c7c('0x1'));var BPromise=require('bluebird');var rs=require(_0x9c7c('0x2'));var fs=require('fs');var Redis=require(_0x9c7c('0x3'));var db=require(_0x9c7c('0x4'))['db'];var utils=require(_0x9c7c('0x5'));var logger=require(_0x9c7c('0x6'))(_0x9c7c('0x7'));var config=require('../../config/environment');var jayson=require(_0x9c7c('0x8'));var client=jayson[_0x9c7c('0x9')][_0x9c7c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4d5c39,_0x1e6770,_0x44a188){return new BPromise(function(_0x4bd0bb,_0x46cae6){return client[_0x9c7c('0xb')](_0x4d5c39,_0x44a188)[_0x9c7c('0xc')](function(_0x57ef57){logger['info'](_0x9c7c('0xd'),_0x1e6770,'request\x20sent');logger['debug'](_0x9c7c('0xe'),_0x1e6770,_0x9c7c('0xf'),JSON[_0x9c7c('0x10')](_0x57ef57));if(_0x57ef57['error']){if(_0x57ef57[_0x9c7c('0x11')]['code']===0x1f4){logger['error'](_0x9c7c('0xd'),_0x1e6770,_0x57ef57[_0x9c7c('0x11')][_0x9c7c('0x12')]);return _0x46cae6(_0x57ef57['error']['message']);}logger['error'](_0x9c7c('0xd'),_0x1e6770,_0x57ef57[_0x9c7c('0x11')][_0x9c7c('0x12')]);return _0x4bd0bb(_0x57ef57[_0x9c7c('0x11')][_0x9c7c('0x12')]);}else{logger[_0x9c7c('0x13')](_0x9c7c('0xd'),_0x1e6770,'request\x20sent');_0x4bd0bb(_0x57ef57[_0x9c7c('0x14')][_0x9c7c('0x12')]);}})['catch'](function(_0x14554d){logger[_0x9c7c('0x11')](_0x9c7c('0xd'),_0x1e6770,_0x14554d);_0x46cae6(_0x14554d);});});}
\ No newline at end of file
index 84d6a83..1956780 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fa1=['isAuthenticated','/now','getDate','/:id','show','/:id/logo','getLogo','/:id/logo_login','getLogoLogin','getPreferred','/:id/favicon','diskStorage','join','root','format','logo','originalname','post','single','file','addLogo','server/files/images/logos/','%s%s','logologin','extname','addLogoLogin','addPreferred','favicon','addFavicon','put','update','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./setting.controller','get'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x7fa1,0x9d));var _0x17fa=function(_0xbd5f97,_0x4b05c9){_0xbd5f97=_0xbd5f97-0x0;var _0x1fc3d2=_0x7fa1[_0xbd5f97];return _0x1fc3d2;};'use strict';var multer=require(_0x17fa('0x0'));var util=require(_0x17fa('0x1'));var path=require(_0x17fa('0x2'));var timeout=require('connect-timeout');var express=require(_0x17fa('0x3'));var router=express[_0x17fa('0x4')]();var fs_extra=require(_0x17fa('0x5'));var auth=require(_0x17fa('0x6'));var interaction=require(_0x17fa('0x7'));var config=require(_0x17fa('0x8'));var controller=require(_0x17fa('0x9'));router[_0x17fa('0xa')]('/',auth[_0x17fa('0xb')](),controller['index']);router[_0x17fa('0xa')](_0x17fa('0xc'),controller[_0x17fa('0xd')]);router['get'](_0x17fa('0xe'),controller[_0x17fa('0xf')]);router[_0x17fa('0xa')](_0x17fa('0x10'),controller[_0x17fa('0x11')]);router['get'](_0x17fa('0x12'),controller[_0x17fa('0x13')]);router[_0x17fa('0xa')]('/:id/gdpr',controller['gdpr']);router[_0x17fa('0xa')]('/:id/preferred',controller[_0x17fa('0x14')]);router['get'](_0x17fa('0x15'),controller['getFavicon']);var upload=multer({'storage':multer[_0x17fa('0x16')]({'destination':function(_0x1b9004,_0x4a546e,_0x5cd78a){_0x5cd78a(null,path[_0x17fa('0x17')](config[_0x17fa('0x18')],'server/files/images/logos/'));},'filename':function(_0x3a862b,_0x5397c0,_0x3ff9cb){_0x3ff9cb(null,util[_0x17fa('0x19')]('%s%s',_0x17fa('0x1a'),path['extname'](_0x5397c0[_0x17fa('0x1b')])));}})});router[_0x17fa('0x1c')](_0x17fa('0x10'),upload[_0x17fa('0x1d')](_0x17fa('0x1e')),controller[_0x17fa('0x1f')]);var upload=multer({'storage':multer[_0x17fa('0x16')]({'destination':function(_0x84967a,_0x556c32,_0x5c3bce){_0x5c3bce(null,path[_0x17fa('0x17')](config['root'],_0x17fa('0x20')));},'filename':function(_0x17c5d2,_0x219109,_0x51b08a){_0x51b08a(null,util[_0x17fa('0x19')](_0x17fa('0x21'),_0x17fa('0x22'),path[_0x17fa('0x23')](_0x219109[_0x17fa('0x1b')])));}})});router[_0x17fa('0x1c')](_0x17fa('0x12'),upload['single']('file'),controller[_0x17fa('0x24')]);var upload=multer({'storage':multer[_0x17fa('0x16')]({'destination':function(_0x921c95,_0x326646,_0x484b99){_0x484b99(null,path[_0x17fa('0x17')](config[_0x17fa('0x18')],'server/files/images/logos/'));},'filename':function(_0x2a1627,_0x484948,_0x225106){_0x225106(null,util[_0x17fa('0x19')]('%s%s','preferred',path[_0x17fa('0x23')](_0x484948[_0x17fa('0x1b')])));}})});router[_0x17fa('0x1c')]('/:id/preferred',upload[_0x17fa('0x1d')](_0x17fa('0x1e')),controller[_0x17fa('0x25')]);var upload=multer({'storage':multer[_0x17fa('0x16')]({'destination':function(_0x40b9b4,_0x2204a8,_0x3e2e0e){_0x3e2e0e(null,path[_0x17fa('0x17')](config[_0x17fa('0x18')],'server/files/images/logos/'));},'filename':function(_0x52b743,_0x441438,_0x478cf9){_0x478cf9(null,util['format'](_0x17fa('0x21'),_0x17fa('0x26'),path['extname'](_0x441438['originalname'])));}})});router[_0x17fa('0x1c')](_0x17fa('0x15'),upload[_0x17fa('0x1d')](_0x17fa('0x1e')),controller[_0x17fa('0x27')]);router[_0x17fa('0x28')](_0x17fa('0xe'),auth[_0x17fa('0xb')](),controller[_0x17fa('0x29')]);module['exports']=router;
\ No newline at end of file
+var _0xfabe=['root','server/files/images/logos/','format','extname','originalname','post','file','addLogo','%s%s','logologin','single','addLogoLogin','preferred','favicon','addFavicon','put','update','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./setting.controller','get','isAuthenticated','/now','/:id','/:id/logo','getLogo','/:id/logo_login','/:id/gdpr','gdpr','/:id/preferred','getPreferred','/:id/favicon','getFavicon','diskStorage','join'];(function(_0x430185,_0xb3bd00){var _0x412b86=function(_0x5ac609){while(--_0x5ac609){_0x430185['push'](_0x430185['shift']());}};_0x412b86(++_0xb3bd00);}(_0xfabe,0xe4));var _0xefab=function(_0x9289e8,_0x37c8a2){_0x9289e8=_0x9289e8-0x0;var _0x60ef2b=_0xfabe[_0x9289e8];return _0x60ef2b;};'use strict';var multer=require(_0xefab('0x0'));var util=require(_0xefab('0x1'));var path=require('path');var timeout=require(_0xefab('0x2'));var express=require(_0xefab('0x3'));var router=express['Router']();var fs_extra=require(_0xefab('0x4'));var auth=require(_0xefab('0x5'));var interaction=require(_0xefab('0x6'));var config=require(_0xefab('0x7'));var controller=require(_0xefab('0x8'));router[_0xefab('0x9')]('/',auth[_0xefab('0xa')](),controller['index']);router[_0xefab('0x9')](_0xefab('0xb'),controller['getDate']);router['get'](_0xefab('0xc'),controller['show']);router['get'](_0xefab('0xd'),controller[_0xefab('0xe')]);router[_0xefab('0x9')](_0xefab('0xf'),controller['getLogoLogin']);router['get'](_0xefab('0x10'),controller[_0xefab('0x11')]);router[_0xefab('0x9')](_0xefab('0x12'),controller[_0xefab('0x13')]);router['get'](_0xefab('0x14'),controller[_0xefab('0x15')]);var upload=multer({'storage':multer[_0xefab('0x16')]({'destination':function(_0x372075,_0x25936d,_0x1d3c48){_0x1d3c48(null,path[_0xefab('0x17')](config[_0xefab('0x18')],_0xefab('0x19')));},'filename':function(_0x112a00,_0x24d461,_0x59b44a){_0x59b44a(null,util[_0xefab('0x1a')]('%s%s','logo',path[_0xefab('0x1b')](_0x24d461[_0xefab('0x1c')])));}})});router[_0xefab('0x1d')](_0xefab('0xd'),upload['single'](_0xefab('0x1e')),controller[_0xefab('0x1f')]);var upload=multer({'storage':multer[_0xefab('0x16')]({'destination':function(_0x4da849,_0x224b16,_0xf5b551){_0xf5b551(null,path[_0xefab('0x17')](config[_0xefab('0x18')],_0xefab('0x19')));},'filename':function(_0x40b677,_0x4a298b,_0x50f652){_0x50f652(null,util['format'](_0xefab('0x20'),_0xefab('0x21'),path[_0xefab('0x1b')](_0x4a298b['originalname'])));}})});router[_0xefab('0x1d')](_0xefab('0xf'),upload[_0xefab('0x22')](_0xefab('0x1e')),controller[_0xefab('0x23')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x1af939,_0x2e69bc,_0x234062){_0x234062(null,path[_0xefab('0x17')](config[_0xefab('0x18')],_0xefab('0x19')));},'filename':function(_0xcb8f31,_0x16c2ed,_0xcb9ffc){_0xcb9ffc(null,util[_0xefab('0x1a')](_0xefab('0x20'),_0xefab('0x24'),path[_0xefab('0x1b')](_0x16c2ed[_0xefab('0x1c')])));}})});router[_0xefab('0x1d')](_0xefab('0x12'),upload[_0xefab('0x22')](_0xefab('0x1e')),controller['addPreferred']);var upload=multer({'storage':multer[_0xefab('0x16')]({'destination':function(_0x3e41c4,_0x19f4ff,_0x4a4d3b){_0x4a4d3b(null,path[_0xefab('0x17')](config[_0xefab('0x18')],_0xefab('0x19')));},'filename':function(_0x51e9ac,_0x33bf8b,_0x10ec30){_0x10ec30(null,util[_0xefab('0x1a')](_0xefab('0x20'),_0xefab('0x25'),path[_0xefab('0x1b')](_0x33bf8b[_0xefab('0x1c')])));}})});router[_0xefab('0x1d')](_0xefab('0x14'),upload[_0xefab('0x22')](_0xefab('0x1e')),controller[_0xefab('0x26')]);router[_0xefab('0x27')](_0xefab('0xc'),auth[_0xefab('0xa')](),controller[_0xefab('0x28')]);module[_0xefab('0x29')]=router;
\ No newline at end of file
index bd1388f..254111c 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(_0x4aed4f,_0x659e1e){var _0x396ca2=function(_0x20ca6a){while(--_0x20ca6a){_0x4aed4f['push'](_0x4aed4f['shift']());}};_0x396ca2(++_0x659e1e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2763f2,_0x416af8){_0x2763f2=_0x2763f2-0x0;var _0x3ef471=_0xa9e0[_0x2763f2];return _0x3ef471;};'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(_0x101964,_0xeacab3){var _0x564d1e=function(_0x1883ff){while(--_0x1883ff){_0x101964['push'](_0x101964['shift']());}};_0x564d1e(++_0xeacab3);}(_0xa9e0,0x123));var _0x0a9e=function(_0x134c2e,_0x3573c4){_0x134c2e=_0x134c2e-0x0;var _0x2825db=_0xa9e0[_0x134c2e];return _0x2825db;};'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 4e8c0d1..19ea140 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe829=['papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','http','request','then','info','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','code','error','Setting,\x20%s,\x20%s','message','result','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','destroy','name','send','map','Setting','rawAttributes','fieldName','key','model','query','attributes','intersection','fields','length','hasOwnProperty','order','sort','filters','filter','merge','where','type','VIRTUAL','options','includeAll','findAll','catch','params','keys','include','find','body','addLogo','file','filename','logo','addLogoLogin','loginLogo','getLogo','server/files/images/logos','getLicense','favicon','defaultPreferred','defaultFavicon','existsSync','join','toLower','root','default_logo.svg','default','upperFirst','Sequelize','ValidationError','\x20not\x20found','download','getLogoLogin','preferred','defaultLogo','defaultLoginLogo','default_loginLogo.svg','custom','gdpr','default_preferred.png','addFavicon','default_favicon.ico','getDate','utcOffset','now','YYYY-MM-DD\x20HH:mm:ss:SSS','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring'];(function(_0x3a93b7,_0x658183){var _0x2ed891=function(_0x1a60de){while(--_0x1a60de){_0x3a93b7['push'](_0x3a93b7['shift']());}};_0x2ed891(++_0x658183);}(_0xe829,0x1d8));var _0x9e82=function(_0x15876c,_0x510dd4){_0x15876c=_0x15876c-0x0;var _0x39d91b=_0xe829[_0x15876c];return _0x39d91b;};'use strict';var emlformat=require(_0x9e82('0x0'));var rimraf=require(_0x9e82('0x1'));var zipdir=require(_0x9e82('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x9e82('0x3'));var BPromise=require(_0x9e82('0x4'));var Mustache=require(_0x9e82('0x5'));var util=require(_0x9e82('0x6'));var path=require(_0x9e82('0x7'));var sox=require(_0x9e82('0x8'));var csv=require('to-csv');var ejs=require(_0x9e82('0x9'));var fs=require('fs');var fs_extra=require(_0x9e82('0xa'));var _=require(_0x9e82('0xb'));var squel=require(_0x9e82('0xc'));var crypto=require(_0x9e82('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x9e82('0xe'));var toCsv=require('to-csv');var querystring=require(_0x9e82('0xf'));var Papa=require(_0x9e82('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x9e82('0x11'));var as=require(_0x9e82('0x12'));var hardwareService=require(_0x9e82('0x13'));var logger=require(_0x9e82('0x14'))(_0x9e82('0x15'));var utils=require(_0x9e82('0x16'));var config=require(_0x9e82('0x17'));var licenseUtil=require(_0x9e82('0x18'));var db=require(_0x9e82('0x19'))['db'];var jayson=require(_0x9e82('0x1a'));var client=jayson[_0x9e82('0x1b')][_0x9e82('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x5e0c79,_0x4ca4c2,_0xd6b81,_0x1e182b){return new BPromise(function(_0x202d99,_0x7f8584){var _0x508234=_0x1e182b||client;return _0x508234[_0x9e82('0x1d')](_0x5e0c79,_0xd6b81)[_0x9e82('0x1e')](function(_0x39039d){logger[_0x9e82('0x1f')]('Setting,\x20%s,\x20%s',_0x4ca4c2,_0x9e82('0x20'));logger[_0x9e82('0x21')](_0x9e82('0x22'),_0x4ca4c2,_0x9e82('0x20'),JSON['stringify'](_0x39039d));if(_0x39039d['error']){if(_0x39039d['error'][_0x9e82('0x23')]===0x1f4){logger[_0x9e82('0x24')](_0x9e82('0x25'),_0x4ca4c2,_0x39039d[_0x9e82('0x24')][_0x9e82('0x26')]);return _0x7f8584(_0x39039d['error'][_0x9e82('0x26')]);}logger[_0x9e82('0x24')](_0x9e82('0x25'),_0x4ca4c2,_0x39039d[_0x9e82('0x24')]['message']);return _0x202d99(_0x39039d['error'][_0x9e82('0x26')]);}else{logger[_0x9e82('0x1f')](_0x9e82('0x25'),_0x4ca4c2,_0x9e82('0x20'));_0x202d99(_0x39039d[_0x9e82('0x27')][_0x9e82('0x26')]);}})['catch'](function(_0x12a26f){logger[_0x9e82('0x24')](_0x9e82('0x25'),_0x4ca4c2,_0x12a26f);_0x7f8584(_0x12a26f);});});}function respondWithStatusCode(_0x3eb596,_0x3d9bd8){_0x3d9bd8=_0x3d9bd8||0xcc;return function(_0x4e0570){if(_0x4e0570){return _0x3eb596[_0x9e82('0x28')](_0x3d9bd8);}return _0x3eb596['status'](_0x3d9bd8)[_0x9e82('0x29')]();};}function respondWithResult(_0x4d3bbb,_0x277fae){_0x277fae=_0x277fae||0xc8;return function(_0x3911cb){if(_0x3911cb){return _0x4d3bbb[_0x9e82('0x2a')](_0x277fae)[_0x9e82('0x2b')](_0x3911cb);}};}function respondWithFilteredResult(_0x3ef885,_0x3c7d9e){return function(_0x3724cb){if(_0x3724cb){var _0x7743e7=typeof _0x3c7d9e[_0x9e82('0x2c')]===_0x9e82('0x2d')&&typeof _0x3c7d9e[_0x9e82('0x2e')]==='undefined';var _0x3d7932=_0x3724cb[_0x9e82('0x2f')];var _0x221ac0=_0x7743e7?0x0:_0x3c7d9e[_0x9e82('0x2c')];var _0x41c723=_0x7743e7?_0x3724cb[_0x9e82('0x2f')]:_0x3c7d9e[_0x9e82('0x2c')]+_0x3c7d9e[_0x9e82('0x2e')];var _0xa4a754;if(_0x41c723>=_0x3d7932){_0x41c723=_0x3d7932;_0xa4a754=0xc8;}else{_0xa4a754=0xce;}_0x3ef885[_0x9e82('0x2a')](_0xa4a754);return _0x3ef885[_0x9e82('0x30')](_0x9e82('0x31'),_0x221ac0+'-'+_0x41c723+'/'+_0x3d7932)[_0x9e82('0x2b')](_0x3724cb);}return null;};}function patchUpdates(_0x2c7a95){return function(_0x5040a2){try{jsonpatch['apply'](_0x5040a2,_0x2c7a95,!![]);}catch(_0x3d069a){return BPromise[_0x9e82('0x32')](_0x3d069a);}return _0x5040a2[_0x9e82('0x33')]();};}function saveUpdates(_0x32a2d2,_0x133b48){return function(_0x70a276){if(_0x70a276){return _0x70a276[_0x9e82('0x34')](_0x32a2d2)[_0x9e82('0x1e')](function(_0x16ceae){return _0x16ceae;});}return null;};}function removeEntity(_0x265f5d,_0x5d1654){return function(_0x42a8c4){if(_0x42a8c4){return _0x42a8c4[_0x9e82('0x35')]()['then'](function(){_0x265f5d[_0x9e82('0x2a')](0xcc)[_0x9e82('0x29')]();});}};}function handleEntityNotFound(_0x1f744f,_0x3c7a9f){return function(_0xc7bb4d){if(!_0xc7bb4d){_0x1f744f[_0x9e82('0x28')](0x194);}return _0xc7bb4d;};}function handleError(_0x2fe280,_0x5bbedb){_0x5bbedb=_0x5bbedb||0x1f4;return function(_0x2213ad){logger['error'](_0x2213ad['stack']);if(_0x2213ad[_0x9e82('0x36')]){delete _0x2213ad[_0x9e82('0x36')];}_0x2fe280[_0x9e82('0x2a')](_0x5bbedb)[_0x9e82('0x37')](_0x2213ad);};}exports['index']=function(_0x5f11c0,_0x3235e8){var _0x2fe10c={},_0x17bc3a={},_0x3b75ac={'count':0x0,'rows':[]};var _0xbe42f0=_[_0x9e82('0x38')](db[_0x9e82('0x39')][_0x9e82('0x3a')],function(_0x81cc6e){return{'name':_0x81cc6e[_0x9e82('0x3b')],'type':_0x81cc6e['type'][_0x9e82('0x3c')]};});_0x17bc3a[_0x9e82('0x3d')]=_[_0x9e82('0x38')](_0xbe42f0,_0x9e82('0x36'));_0x17bc3a[_0x9e82('0x3e')]=_['keys'](_0x5f11c0['query']);_0x17bc3a['filters']=_['intersection'](_0x17bc3a[_0x9e82('0x3d')],_0x17bc3a[_0x9e82('0x3e')]);_0x2fe10c[_0x9e82('0x3f')]=_[_0x9e82('0x40')](_0x17bc3a[_0x9e82('0x3d')],qs['fields'](_0x5f11c0['query'][_0x9e82('0x41')]));_0x2fe10c[_0x9e82('0x3f')]=_0x2fe10c[_0x9e82('0x3f')][_0x9e82('0x42')]?_0x2fe10c['attributes']:_0x17bc3a[_0x9e82('0x3d')];if(!_0x5f11c0[_0x9e82('0x3e')][_0x9e82('0x43')]('nolimit')){_0x2fe10c['limit']=qs[_0x9e82('0x2e')](_0x5f11c0['query'][_0x9e82('0x2e')]);_0x2fe10c[_0x9e82('0x2c')]=qs['offset'](_0x5f11c0[_0x9e82('0x3e')][_0x9e82('0x2c')]);}_0x2fe10c[_0x9e82('0x44')]=qs[_0x9e82('0x45')](_0x5f11c0[_0x9e82('0x3e')][_0x9e82('0x45')]);_0x2fe10c['where']=qs[_0x9e82('0x46')](_['pick'](_0x5f11c0[_0x9e82('0x3e')],_0x17bc3a[_0x9e82('0x46')]),_0xbe42f0);if(_0x5f11c0[_0x9e82('0x3e')][_0x9e82('0x47')]){_0x2fe10c['where']=_[_0x9e82('0x48')](_0x2fe10c[_0x9e82('0x49')],{'$or':_[_0x9e82('0x38')](_0xbe42f0,function(_0x4d5b2f){if(_0x4d5b2f[_0x9e82('0x4a')]!==_0x9e82('0x4b')){var _0x105e7d={};_0x105e7d[_0x4d5b2f[_0x9e82('0x36')]]={'$like':'%'+_0x5f11c0[_0x9e82('0x3e')]['filter']+'%'};return _0x105e7d;}})});}_0x2fe10c=_[_0x9e82('0x48')]({},_0x2fe10c,_0x5f11c0[_0x9e82('0x4c')]);var _0xca10b4={'where':_0x2fe10c[_0x9e82('0x49')]};return db['Setting']['count'](_0xca10b4)[_0x9e82('0x1e')](function(_0x24fdfe){_0x3b75ac[_0x9e82('0x2f')]=_0x24fdfe;if(_0x5f11c0[_0x9e82('0x3e')][_0x9e82('0x4d')]){_0x2fe10c['include']=[{'all':!![]}];}return db[_0x9e82('0x39')][_0x9e82('0x4e')](_0x2fe10c);})[_0x9e82('0x1e')](function(_0x301e21){_0x3b75ac['rows']=_0x301e21;return _0x3b75ac;})['then'](respondWithFilteredResult(_0x3235e8,_0x2fe10c))[_0x9e82('0x4f')](handleError(_0x3235e8,null));};exports['show']=function(_0x5363a2,_0x4268b6){var _0x7a85b8={'raw':![],'where':{'id':_0x5363a2[_0x9e82('0x50')]['id']}},_0x43322c={};_0x43322c[_0x9e82('0x3d')]=_[_0x9e82('0x51')](db[_0x9e82('0x39')][_0x9e82('0x3a')]);_0x43322c[_0x9e82('0x3e')]=_[_0x9e82('0x51')](_0x5363a2[_0x9e82('0x3e')]);_0x43322c[_0x9e82('0x46')]=_['intersection'](_0x43322c[_0x9e82('0x3d')],_0x43322c['query']);_0x7a85b8[_0x9e82('0x3f')]=_[_0x9e82('0x40')](_0x43322c['model'],qs[_0x9e82('0x41')](_0x5363a2[_0x9e82('0x3e')]['fields']));_0x7a85b8[_0x9e82('0x3f')]=_0x7a85b8[_0x9e82('0x3f')][_0x9e82('0x42')]?_0x7a85b8[_0x9e82('0x3f')]:_0x43322c[_0x9e82('0x3d')];if(_0x5363a2['query']['includeAll']){_0x7a85b8[_0x9e82('0x52')]=[{'all':!![]}];}_0x7a85b8=_['merge']({},_0x7a85b8,_0x5363a2['options']);return db[_0x9e82('0x39')][_0x9e82('0x53')](_0x7a85b8)[_0x9e82('0x1e')](handleEntityNotFound(_0x4268b6,null))[_0x9e82('0x1e')](respondWithResult(_0x4268b6,null))[_0x9e82('0x4f')](handleError(_0x4268b6,null));};exports[_0x9e82('0x34')]=function(_0x32dcdc,_0x51f5a2){if(_0x32dcdc[_0x9e82('0x54')]['id']){delete _0x32dcdc[_0x9e82('0x54')]['id'];}return db['Setting']['find']({'where':{'id':_0x32dcdc[_0x9e82('0x50')]['id']}})[_0x9e82('0x1e')](handleEntityNotFound(_0x51f5a2,null))[_0x9e82('0x1e')](saveUpdates(_0x32dcdc[_0x9e82('0x54')],null))[_0x9e82('0x1e')](respondWithResult(_0x51f5a2,null))[_0x9e82('0x4f')](handleError(_0x51f5a2,null));};exports[_0x9e82('0x55')]=function(_0x334512,_0x4ef528,_0x4da3aa){if(_0x334512[_0x9e82('0x56')]&&_0x334512[_0x9e82('0x56')][_0x9e82('0x57')]){_0x334512[_0x9e82('0x54')][_0x9e82('0x58')]=_0x334512['file'][_0x9e82('0x57')];}return db[_0x9e82('0x39')][_0x9e82('0x53')]({'where':{'id':_0x334512[_0x9e82('0x50')]['id']}})[_0x9e82('0x1e')](handleEntityNotFound(_0x4ef528,null))[_0x9e82('0x1e')](saveUpdates(_0x334512['body'],null))[_0x9e82('0x1e')](respondWithResult(_0x4ef528,null))[_0x9e82('0x4f')](handleError(_0x4ef528,null));};exports[_0x9e82('0x59')]=function(_0x5dd7d3,_0x4bf6a1,_0x298076){if(_0x5dd7d3[_0x9e82('0x56')]&&_0x5dd7d3['file'][_0x9e82('0x57')]){_0x5dd7d3['body'][_0x9e82('0x5a')]=_0x5dd7d3['file'][_0x9e82('0x57')];}return db[_0x9e82('0x39')][_0x9e82('0x53')]({'where':{'id':_0x5dd7d3[_0x9e82('0x50')]['id']}})[_0x9e82('0x1e')](handleEntityNotFound(_0x4bf6a1,null))[_0x9e82('0x1e')](saveUpdates(_0x5dd7d3[_0x9e82('0x54')],null))[_0x9e82('0x1e')](respondWithResult(_0x4bf6a1,null))[_0x9e82('0x4f')](handleError(_0x4bf6a1,null));};var utilLicense=require(_0x9e82('0x18'));exports[_0x9e82('0x5b')]=function(_0x383231,_0x45a6ee,_0x441716){var _0xcd482=_0x9e82('0x5c');var _0x32b90f={'custom':![]};return utilLicense[_0x9e82('0x5d')]()[_0x9e82('0x1e')](function(_0x1a4b98){if(_0x1a4b98){_0x32b90f=_0x1a4b98;}return db[_0x9e82('0x39')][_0x9e82('0x53')]({'where':{'id':_0x383231[_0x9e82('0x50')]['id']},'attributes':[_0x9e82('0x58'),'loginLogo','preferred',_0x9e82('0x5e'),'defaultLogo','defaultLoginLogo',_0x9e82('0x5f'),_0x9e82('0x60')],'raw':!![]});})[_0x9e82('0x1e')](handleEntityNotFound(_0x45a6ee,null))['then'](function(_0x484d3a){if(_0x484d3a){var _0x380d20=_0x484d3a['logo']&&fs[_0x9e82('0x61')](path[_0x9e82('0x62')](config['root'],_0xcd482,_[_0x9e82('0x63')](_0x484d3a[_0x9e82('0x58')])))?path[_0x9e82('0x62')](config[_0x9e82('0x64')],_0xcd482,_[_0x9e82('0x63')](_0x484d3a[_0x9e82('0x58')])):path[_0x9e82('0x62')](config['root'],_0xcd482,_['toLower'](_0x9e82('0x65')));var _0x4ee761=_0x9e82('0x66')+_[_0x9e82('0x67')]('logo');if(_0x484d3a[_0x4ee761]||!_0x32b90f['custom']){_0x380d20=path[_0x9e82('0x62')](config[_0x9e82('0x64')],_0xcd482,_[_0x9e82('0x63')](_0x9e82('0x65')));}if(!fs[_0x9e82('0x61')](_0x380d20)){throw new db[(_0x9e82('0x68'))][(_0x9e82('0x69'))](_['upperFirst'](_0x9e82('0x58'))+_0x9e82('0x6a'));}return _0x45a6ee[_0x9e82('0x6b')](_0x380d20);}})[_0x9e82('0x4f')](handleError(_0x45a6ee,null));};var utilLicense=require(_0x9e82('0x18'));exports[_0x9e82('0x6c')]=function(_0x5153f1,_0x43ca59,_0x254668){var _0x2d4194='server/files/images/logos';var _0x4c1c2b={'custom':![]};return utilLicense[_0x9e82('0x5d')]()[_0x9e82('0x1e')](function(_0x3db951){if(_0x3db951){_0x4c1c2b=_0x3db951;}return db[_0x9e82('0x39')][_0x9e82('0x53')]({'where':{'id':_0x5153f1[_0x9e82('0x50')]['id']},'attributes':[_0x9e82('0x58'),_0x9e82('0x5a'),_0x9e82('0x6d'),_0x9e82('0x5e'),_0x9e82('0x6e'),_0x9e82('0x6f'),_0x9e82('0x5f'),'defaultFavicon'],'raw':!![]});})['then'](handleEntityNotFound(_0x43ca59,null))[_0x9e82('0x1e')](function(_0x71df66){if(_0x71df66){var _0x48b026=_0x71df66[_0x9e82('0x5a')]&&fs['existsSync'](path[_0x9e82('0x62')](config[_0x9e82('0x64')],_0x2d4194,_[_0x9e82('0x63')](_0x71df66['loginLogo'])))?path[_0x9e82('0x62')](config[_0x9e82('0x64')],_0x2d4194,_['toLower'](_0x71df66[_0x9e82('0x5a')])):path[_0x9e82('0x62')](config[_0x9e82('0x64')],_0x2d4194,_['toLower'](_0x9e82('0x70')));var _0x584931=_0x9e82('0x66')+_['upperFirst'](_0x9e82('0x5a'));if(_0x71df66[_0x584931]||!_0x4c1c2b[_0x9e82('0x71')]){_0x48b026=path[_0x9e82('0x62')](config[_0x9e82('0x64')],_0x2d4194,_[_0x9e82('0x63')](_0x9e82('0x70')));}if(!fs[_0x9e82('0x61')](_0x48b026)){throw new db[(_0x9e82('0x68'))][(_0x9e82('0x69'))](_[_0x9e82('0x67')](_0x9e82('0x5a'))+_0x9e82('0x6a'));}return _0x43ca59[_0x9e82('0x6b')](_0x48b026);}})[_0x9e82('0x4f')](handleError(_0x43ca59,null));};exports[_0x9e82('0x72')]=function(_0x14a626,_0x3088af){return db['Setting']['find']({'where':{'id':_0x14a626[_0x9e82('0x50')]['id']},'attributes':['securePassword']})[_0x9e82('0x1e')](respondWithResult(_0x3088af,null))[_0x9e82('0x4f')](handleError(_0x3088af,null));};exports['addPreferred']=function(_0x3eb402,_0xe588d0,_0x43cdc2){if(_0x3eb402[_0x9e82('0x56')]&&_0x3eb402['file'][_0x9e82('0x57')]){_0x3eb402[_0x9e82('0x54')][_0x9e82('0x6d')]=_0x3eb402['file'][_0x9e82('0x57')];}return db[_0x9e82('0x39')][_0x9e82('0x53')]({'where':{'id':_0x3eb402[_0x9e82('0x50')]['id']}})[_0x9e82('0x1e')](handleEntityNotFound(_0xe588d0,null))[_0x9e82('0x1e')](saveUpdates(_0x3eb402[_0x9e82('0x54')],null))[_0x9e82('0x1e')](respondWithResult(_0xe588d0,null))[_0x9e82('0x4f')](handleError(_0xe588d0,null));};var utilLicense=require('../../config/license/util');exports['getPreferred']=function(_0x282e5d,_0x55784e,_0x5b9eb6){var _0x1eeca0=_0x9e82('0x5c');var _0x354282={'custom':![]};return utilLicense['getLicense']()[_0x9e82('0x1e')](function(_0x4e8ee5){if(_0x4e8ee5){_0x354282=_0x4e8ee5;}return db[_0x9e82('0x39')][_0x9e82('0x53')]({'where':{'id':_0x282e5d[_0x9e82('0x50')]['id']},'attributes':['logo',_0x9e82('0x5a'),'preferred',_0x9e82('0x5e'),'defaultLogo',_0x9e82('0x6f'),_0x9e82('0x5f'),'defaultFavicon'],'raw':!![]});})[_0x9e82('0x1e')](handleEntityNotFound(_0x55784e,null))[_0x9e82('0x1e')](function(_0x595f90){if(_0x595f90){var _0x2a8e0e=_0x595f90[_0x9e82('0x6d')]&&fs[_0x9e82('0x61')](path['join'](config[_0x9e82('0x64')],_0x1eeca0,_[_0x9e82('0x63')](_0x595f90[_0x9e82('0x6d')])))?path[_0x9e82('0x62')](config[_0x9e82('0x64')],_0x1eeca0,_['toLower'](_0x595f90[_0x9e82('0x6d')])):path[_0x9e82('0x62')](config[_0x9e82('0x64')],_0x1eeca0,_[_0x9e82('0x63')]('default_preferred.png'));var _0x49f193=_0x9e82('0x66')+_[_0x9e82('0x67')](_0x9e82('0x6d'));if(_0x595f90[_0x49f193]||!_0x354282[_0x9e82('0x71')]||!_0x354282[_0x9e82('0x6d')]){_0x2a8e0e=path['join'](config['root'],_0x1eeca0,_['toLower'](_0x9e82('0x73')));}if(!fs[_0x9e82('0x61')](_0x2a8e0e)){throw new db[(_0x9e82('0x68'))][(_0x9e82('0x69'))](_[_0x9e82('0x67')](_0x9e82('0x6d'))+_0x9e82('0x6a'));}return _0x55784e[_0x9e82('0x6b')](_0x2a8e0e);}})['catch'](handleError(_0x55784e,null));};exports[_0x9e82('0x74')]=function(_0x351fc8,_0x23ee53,_0x397a45){if(_0x351fc8['file']&&_0x351fc8[_0x9e82('0x56')][_0x9e82('0x57')]){_0x351fc8[_0x9e82('0x54')][_0x9e82('0x5e')]=_0x351fc8[_0x9e82('0x56')]['filename'];}return db[_0x9e82('0x39')]['find']({'where':{'id':_0x351fc8[_0x9e82('0x50')]['id']}})[_0x9e82('0x1e')](handleEntityNotFound(_0x23ee53,null))[_0x9e82('0x1e')](saveUpdates(_0x351fc8[_0x9e82('0x54')],null))[_0x9e82('0x1e')](respondWithResult(_0x23ee53,null))[_0x9e82('0x4f')](handleError(_0x23ee53,null));};var utilLicense=require('../../config/license/util');exports['getFavicon']=function(_0x4f73c7,_0x346008,_0x6d84a6){var _0x3c4a16='server/files/images/logos';var _0x1da351={'custom':![]};return utilLicense[_0x9e82('0x5d')]()[_0x9e82('0x1e')](function(_0x1cf028){if(_0x1cf028){_0x1da351=_0x1cf028;}return db[_0x9e82('0x39')][_0x9e82('0x53')]({'where':{'id':_0x4f73c7[_0x9e82('0x50')]['id']},'attributes':[_0x9e82('0x58'),_0x9e82('0x5a'),_0x9e82('0x6d'),'favicon',_0x9e82('0x6e'),_0x9e82('0x6f'),_0x9e82('0x5f'),_0x9e82('0x60')],'raw':!![]});})[_0x9e82('0x1e')](handleEntityNotFound(_0x346008,null))['then'](function(_0x42699c){if(_0x42699c){var _0x224bec=_0x42699c[_0x9e82('0x5e')]&&fs[_0x9e82('0x61')](path['join'](config[_0x9e82('0x64')],_0x3c4a16,_[_0x9e82('0x63')](_0x42699c[_0x9e82('0x5e')])))?path[_0x9e82('0x62')](config['root'],_0x3c4a16,_['toLower'](_0x42699c[_0x9e82('0x5e')])):path['join'](config[_0x9e82('0x64')],_0x3c4a16,_[_0x9e82('0x63')](_0x9e82('0x75')));var _0x35857c='default'+_[_0x9e82('0x67')](_0x9e82('0x5e'));if(_0x42699c[_0x35857c]||!_0x1da351[_0x9e82('0x71')]){_0x224bec=path[_0x9e82('0x62')](config[_0x9e82('0x64')],_0x3c4a16,_['toLower']('default_favicon.ico'));}if(!fs[_0x9e82('0x61')](_0x224bec)){throw new db[(_0x9e82('0x68'))][(_0x9e82('0x69'))](_[_0x9e82('0x67')](_0x9e82('0x5e'))+'\x20not\x20found');}return _0x346008[_0x9e82('0x6b')](_0x224bec);}})[_0x9e82('0x4f')](handleError(_0x346008,null));};exports[_0x9e82('0x76')]=function(_0x10e37c,_0x10d0dd){var _0x3cde90={'offset':moment()[_0x9e82('0x77')]()};_0x3cde90[_0x9e82('0x78')]=moment()[_0x9e82('0x77')](_0x3cde90[_0x9e82('0x2c')])['format'](_0x9e82('0x79'));return _0x10d0dd[_0x9e82('0x2a')](0xc8)[_0x9e82('0x37')](_0x3cde90);};
\ No newline at end of file
+var _0x919d=['Setting,\x20%s,\x20%s','request\x20sent','Setting,\x20%s,\x20%s,\x20%s','error','message','info','result','catch','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','name','send','index','map','Setting','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','options','includeAll','include','findAll','rows','show','params','fields','update','body','find','addLogo','file','filename','logo','addLogoLogin','getLogo','getLicense','loginLogo','favicon','defaultLoginLogo','defaultFavicon','existsSync','join','root','toLower','default_logo.svg','default','custom','Sequelize','ValidationError','\x20not\x20found','download','getLogoLogin','preferred','defaultPreferred','default_loginLogo.svg','upperFirst','securePassword','addPreferred','getPreferred','server/files/images/logos','default_preferred.png','getFavicon','defaultLogo','default_favicon.ico','getDate','utcOffset','format','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','sox','to-csv','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','client','request','then'];(function(_0x574840,_0x5971cd){var _0x30fec8=function(_0x4bb8f5){while(--_0x4bb8f5){_0x574840['push'](_0x574840['shift']());}};_0x30fec8(++_0x5971cd);}(_0x919d,0x1c0));var _0xd919=function(_0x508c01,_0x558094){_0x508c01=_0x508c01-0x0;var _0xbf071b=_0x919d[_0x508c01];return _0xbf071b;};'use strict';var emlformat=require(_0xd919('0x0'));var rimraf=require(_0xd919('0x1'));var zipdir=require(_0xd919('0x2'));var jsonpatch=require(_0xd919('0x3'));var rp=require('request-promise');var moment=require(_0xd919('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xd919('0x5'));var util=require('util');var path=require('path');var sox=require(_0xd919('0x6'));var csv=require(_0xd919('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd919('0x8'));var squel=require(_0xd919('0x9'));var crypto=require(_0xd919('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xd919('0xb'));var toCsv=require(_0xd919('0x7'));var querystring=require(_0xd919('0xc'));var Papa=require(_0xd919('0xd'));var Redis=require(_0xd919('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xd919('0xf'));var as=require(_0xd919('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xd919('0x11'));var utils=require(_0xd919('0x12'));var config=require(_0xd919('0x13'));var licenseUtil=require(_0xd919('0x14'));var db=require('../../mysqldb')['db'];var jayson=require('jayson/promise');var client=jayson[_0xd919('0x15')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2a4c68,_0x2aa278,_0x42a2ce,_0xdcf446){return new BPromise(function(_0x36be2f,_0x1bbb6d){var _0x2bcad8=_0xdcf446||client;return _0x2bcad8[_0xd919('0x16')](_0x2a4c68,_0x42a2ce)[_0xd919('0x17')](function(_0x57e145){logger['info'](_0xd919('0x18'),_0x2aa278,_0xd919('0x19'));logger['debug'](_0xd919('0x1a'),_0x2aa278,_0xd919('0x19'),JSON['stringify'](_0x57e145));if(_0x57e145[_0xd919('0x1b')]){if(_0x57e145[_0xd919('0x1b')]['code']===0x1f4){logger['error'](_0xd919('0x18'),_0x2aa278,_0x57e145['error'][_0xd919('0x1c')]);return _0x1bbb6d(_0x57e145[_0xd919('0x1b')][_0xd919('0x1c')]);}logger[_0xd919('0x1b')](_0xd919('0x18'),_0x2aa278,_0x57e145[_0xd919('0x1b')][_0xd919('0x1c')]);return _0x36be2f(_0x57e145[_0xd919('0x1b')][_0xd919('0x1c')]);}else{logger[_0xd919('0x1d')]('Setting,\x20%s,\x20%s',_0x2aa278,_0xd919('0x19'));_0x36be2f(_0x57e145[_0xd919('0x1e')]['message']);}})[_0xd919('0x1f')](function(_0x21ba69){logger[_0xd919('0x1b')](_0xd919('0x18'),_0x2aa278,_0x21ba69);_0x1bbb6d(_0x21ba69);});});}function respondWithStatusCode(_0x355eb9,_0x57c99e){_0x57c99e=_0x57c99e||0xcc;return function(_0x333f95){if(_0x333f95){return _0x355eb9[_0xd919('0x20')](_0x57c99e);}return _0x355eb9[_0xd919('0x21')](_0x57c99e)['end']();};}function respondWithResult(_0x527ebf,_0x426f59){_0x426f59=_0x426f59||0xc8;return function(_0x1a2672){if(_0x1a2672){return _0x527ebf[_0xd919('0x21')](_0x426f59)[_0xd919('0x22')](_0x1a2672);}};}function respondWithFilteredResult(_0x23530d,_0x223027){return function(_0x39d3eb){if(_0x39d3eb){var _0xb9e6a1=typeof _0x223027[_0xd919('0x23')]===_0xd919('0x24')&&typeof _0x223027[_0xd919('0x25')]===_0xd919('0x24');var _0x3955a8=_0x39d3eb[_0xd919('0x26')];var _0x250c01=_0xb9e6a1?0x0:_0x223027[_0xd919('0x23')];var _0x41a296=_0xb9e6a1?_0x39d3eb[_0xd919('0x26')]:_0x223027[_0xd919('0x23')]+_0x223027[_0xd919('0x25')];var _0x3d0162;if(_0x41a296>=_0x3955a8){_0x41a296=_0x3955a8;_0x3d0162=0xc8;}else{_0x3d0162=0xce;}_0x23530d[_0xd919('0x21')](_0x3d0162);return _0x23530d[_0xd919('0x27')](_0xd919('0x28'),_0x250c01+'-'+_0x41a296+'/'+_0x3955a8)['json'](_0x39d3eb);}return null;};}function patchUpdates(_0x5abe4f){return function(_0x445862){try{jsonpatch[_0xd919('0x29')](_0x445862,_0x5abe4f,!![]);}catch(_0x3b6ffe){return BPromise[_0xd919('0x2a')](_0x3b6ffe);}return _0x445862[_0xd919('0x2b')]();};}function saveUpdates(_0x2c16c2,_0x1ba6cc){return function(_0x5c154d){if(_0x5c154d){return _0x5c154d['update'](_0x2c16c2)[_0xd919('0x17')](function(_0x60a4c7){return _0x60a4c7;});}return null;};}function removeEntity(_0x19cff5,_0x2ae0b9){return function(_0x5115fe){if(_0x5115fe){return _0x5115fe[_0xd919('0x2c')]()['then'](function(){_0x19cff5[_0xd919('0x21')](0xcc)['end']();});}};}function handleEntityNotFound(_0x530b0b,_0x51e5ae){return function(_0x21586a){if(!_0x21586a){_0x530b0b[_0xd919('0x20')](0x194);}return _0x21586a;};}function handleError(_0x41940e,_0xc4438d){_0xc4438d=_0xc4438d||0x1f4;return function(_0xa2afac){logger[_0xd919('0x1b')](_0xa2afac['stack']);if(_0xa2afac['name']){delete _0xa2afac[_0xd919('0x2d')];}_0x41940e[_0xd919('0x21')](_0xc4438d)[_0xd919('0x2e')](_0xa2afac);};}exports[_0xd919('0x2f')]=function(_0x777d8a,_0x312f5a){var _0x2101af={},_0x53c89a={},_0x22f95c={'count':0x0,'rows':[]};var _0x5572f6=_[_0xd919('0x30')](db[_0xd919('0x31')][_0xd919('0x32')],function(_0x39d495){return{'name':_0x39d495[_0xd919('0x33')],'type':_0x39d495[_0xd919('0x34')][_0xd919('0x35')]};});_0x53c89a['model']=_[_0xd919('0x30')](_0x5572f6,_0xd919('0x2d'));_0x53c89a[_0xd919('0x36')]=_[_0xd919('0x37')](_0x777d8a['query']);_0x53c89a[_0xd919('0x38')]=_[_0xd919('0x39')](_0x53c89a[_0xd919('0x3a')],_0x53c89a[_0xd919('0x36')]);_0x2101af['attributes']=_['intersection'](_0x53c89a[_0xd919('0x3a')],qs['fields'](_0x777d8a[_0xd919('0x36')]['fields']));_0x2101af['attributes']=_0x2101af[_0xd919('0x3b')][_0xd919('0x3c')]?_0x2101af[_0xd919('0x3b')]:_0x53c89a[_0xd919('0x3a')];if(!_0x777d8a[_0xd919('0x36')][_0xd919('0x3d')](_0xd919('0x3e'))){_0x2101af[_0xd919('0x25')]=qs[_0xd919('0x25')](_0x777d8a['query'][_0xd919('0x25')]);_0x2101af['offset']=qs[_0xd919('0x23')](_0x777d8a[_0xd919('0x36')][_0xd919('0x23')]);}_0x2101af[_0xd919('0x3f')]=qs[_0xd919('0x40')](_0x777d8a[_0xd919('0x36')]['sort']);_0x2101af['where']=qs[_0xd919('0x38')](_[_0xd919('0x41')](_0x777d8a[_0xd919('0x36')],_0x53c89a['filters']),_0x5572f6);if(_0x777d8a[_0xd919('0x36')][_0xd919('0x42')]){_0x2101af[_0xd919('0x43')]=_['merge'](_0x2101af[_0xd919('0x43')],{'$or':_[_0xd919('0x30')](_0x5572f6,function(_0x5eb3cb){if(_0x5eb3cb[_0xd919('0x34')]!=='VIRTUAL'){var _0x350efc={};_0x350efc[_0x5eb3cb[_0xd919('0x2d')]]={'$like':'%'+_0x777d8a[_0xd919('0x36')][_0xd919('0x42')]+'%'};return _0x350efc;}})});}_0x2101af=_[_0xd919('0x44')]({},_0x2101af,_0x777d8a[_0xd919('0x45')]);var _0x14efc3={'where':_0x2101af['where']};return db['Setting'][_0xd919('0x26')](_0x14efc3)['then'](function(_0xaaf982){_0x22f95c['count']=_0xaaf982;if(_0x777d8a['query'][_0xd919('0x46')]){_0x2101af[_0xd919('0x47')]=[{'all':!![]}];}return db['Setting'][_0xd919('0x48')](_0x2101af);})[_0xd919('0x17')](function(_0x41652e){_0x22f95c[_0xd919('0x49')]=_0x41652e;return _0x22f95c;})['then'](respondWithFilteredResult(_0x312f5a,_0x2101af))[_0xd919('0x1f')](handleError(_0x312f5a,null));};exports[_0xd919('0x4a')]=function(_0x1426b3,_0x17a883){var _0x3c4cfa={'raw':![],'where':{'id':_0x1426b3[_0xd919('0x4b')]['id']}},_0x450640={};_0x450640[_0xd919('0x3a')]=_[_0xd919('0x37')](db['Setting'][_0xd919('0x32')]);_0x450640[_0xd919('0x36')]=_['keys'](_0x1426b3['query']);_0x450640[_0xd919('0x38')]=_[_0xd919('0x39')](_0x450640[_0xd919('0x3a')],_0x450640[_0xd919('0x36')]);_0x3c4cfa[_0xd919('0x3b')]=_['intersection'](_0x450640[_0xd919('0x3a')],qs['fields'](_0x1426b3['query'][_0xd919('0x4c')]));_0x3c4cfa[_0xd919('0x3b')]=_0x3c4cfa[_0xd919('0x3b')][_0xd919('0x3c')]?_0x3c4cfa['attributes']:_0x450640[_0xd919('0x3a')];if(_0x1426b3[_0xd919('0x36')][_0xd919('0x46')]){_0x3c4cfa['include']=[{'all':!![]}];}_0x3c4cfa=_['merge']({},_0x3c4cfa,_0x1426b3[_0xd919('0x45')]);return db[_0xd919('0x31')]['find'](_0x3c4cfa)[_0xd919('0x17')](handleEntityNotFound(_0x17a883,null))[_0xd919('0x17')](respondWithResult(_0x17a883,null))[_0xd919('0x1f')](handleError(_0x17a883,null));};exports[_0xd919('0x4d')]=function(_0x3d7e18,_0x5ae6e5){if(_0x3d7e18[_0xd919('0x4e')]['id']){delete _0x3d7e18['body']['id'];}return db[_0xd919('0x31')][_0xd919('0x4f')]({'where':{'id':_0x3d7e18['params']['id']}})[_0xd919('0x17')](handleEntityNotFound(_0x5ae6e5,null))['then'](saveUpdates(_0x3d7e18[_0xd919('0x4e')],null))[_0xd919('0x17')](respondWithResult(_0x5ae6e5,null))[_0xd919('0x1f')](handleError(_0x5ae6e5,null));};exports[_0xd919('0x50')]=function(_0x284999,_0x234e77,_0x2a654f){if(_0x284999['file']&&_0x284999[_0xd919('0x51')][_0xd919('0x52')]){_0x284999[_0xd919('0x4e')][_0xd919('0x53')]=_0x284999[_0xd919('0x51')]['filename'];}return db[_0xd919('0x31')][_0xd919('0x4f')]({'where':{'id':_0x284999[_0xd919('0x4b')]['id']}})[_0xd919('0x17')](handleEntityNotFound(_0x234e77,null))[_0xd919('0x17')](saveUpdates(_0x284999['body'],null))[_0xd919('0x17')](respondWithResult(_0x234e77,null))[_0xd919('0x1f')](handleError(_0x234e77,null));};exports[_0xd919('0x54')]=function(_0x2f72cc,_0x4eb0a0,_0x589568){if(_0x2f72cc[_0xd919('0x51')]&&_0x2f72cc[_0xd919('0x51')]['filename']){_0x2f72cc['body']['loginLogo']=_0x2f72cc['file'][_0xd919('0x52')];}return db[_0xd919('0x31')][_0xd919('0x4f')]({'where':{'id':_0x2f72cc[_0xd919('0x4b')]['id']}})[_0xd919('0x17')](handleEntityNotFound(_0x4eb0a0,null))[_0xd919('0x17')](saveUpdates(_0x2f72cc[_0xd919('0x4e')],null))['then'](respondWithResult(_0x4eb0a0,null))[_0xd919('0x1f')](handleError(_0x4eb0a0,null));};var utilLicense=require(_0xd919('0x14'));exports[_0xd919('0x55')]=function(_0x56b04e,_0x1eea6c,_0x2d8a23){var _0x493e42='server/files/images/logos';var _0x3b52a1={'custom':![]};return utilLicense[_0xd919('0x56')]()['then'](function(_0x3a78bf){if(_0x3a78bf){_0x3b52a1=_0x3a78bf;}return db[_0xd919('0x31')][_0xd919('0x4f')]({'where':{'id':_0x56b04e[_0xd919('0x4b')]['id']},'attributes':[_0xd919('0x53'),_0xd919('0x57'),'preferred',_0xd919('0x58'),'defaultLogo',_0xd919('0x59'),'defaultPreferred',_0xd919('0x5a')],'raw':!![]});})[_0xd919('0x17')](handleEntityNotFound(_0x1eea6c,null))[_0xd919('0x17')](function(_0x234f70){if(_0x234f70){var _0x531270=_0x234f70[_0xd919('0x53')]&&fs[_0xd919('0x5b')](path[_0xd919('0x5c')](config[_0xd919('0x5d')],_0x493e42,_['toLower'](_0x234f70[_0xd919('0x53')])))?path[_0xd919('0x5c')](config[_0xd919('0x5d')],_0x493e42,_['toLower'](_0x234f70[_0xd919('0x53')])):path[_0xd919('0x5c')](config[_0xd919('0x5d')],_0x493e42,_[_0xd919('0x5e')](_0xd919('0x5f')));var _0x5ee805=_0xd919('0x60')+_['upperFirst'](_0xd919('0x53'));if(_0x234f70[_0x5ee805]||!_0x3b52a1[_0xd919('0x61')]){_0x531270=path['join'](config[_0xd919('0x5d')],_0x493e42,_[_0xd919('0x5e')](_0xd919('0x5f')));}if(!fs[_0xd919('0x5b')](_0x531270)){throw new db[(_0xd919('0x62'))][(_0xd919('0x63'))](_['upperFirst'](_0xd919('0x53'))+_0xd919('0x64'));}return _0x1eea6c[_0xd919('0x65')](_0x531270);}})[_0xd919('0x1f')](handleError(_0x1eea6c,null));};var utilLicense=require('../../config/license/util');exports[_0xd919('0x66')]=function(_0x2ed445,_0x370407,_0x4a20eb){var _0x1f8ed2='server/files/images/logos';var _0x596180={'custom':![]};return utilLicense[_0xd919('0x56')]()[_0xd919('0x17')](function(_0x20aa05){if(_0x20aa05){_0x596180=_0x20aa05;}return db[_0xd919('0x31')][_0xd919('0x4f')]({'where':{'id':_0x2ed445[_0xd919('0x4b')]['id']},'attributes':[_0xd919('0x53'),_0xd919('0x57'),_0xd919('0x67'),_0xd919('0x58'),'defaultLogo',_0xd919('0x59'),_0xd919('0x68'),_0xd919('0x5a')],'raw':!![]});})[_0xd919('0x17')](handleEntityNotFound(_0x370407,null))['then'](function(_0x5b54eb){if(_0x5b54eb){var _0x5324f8=_0x5b54eb[_0xd919('0x57')]&&fs[_0xd919('0x5b')](path[_0xd919('0x5c')](config[_0xd919('0x5d')],_0x1f8ed2,_[_0xd919('0x5e')](_0x5b54eb[_0xd919('0x57')])))?path[_0xd919('0x5c')](config[_0xd919('0x5d')],_0x1f8ed2,_[_0xd919('0x5e')](_0x5b54eb['loginLogo'])):path[_0xd919('0x5c')](config[_0xd919('0x5d')],_0x1f8ed2,_[_0xd919('0x5e')](_0xd919('0x69')));var _0x22c4d5=_0xd919('0x60')+_[_0xd919('0x6a')]('loginLogo');if(_0x5b54eb[_0x22c4d5]||!_0x596180[_0xd919('0x61')]){_0x5324f8=path['join'](config[_0xd919('0x5d')],_0x1f8ed2,_[_0xd919('0x5e')](_0xd919('0x69')));}if(!fs[_0xd919('0x5b')](_0x5324f8)){throw new db[(_0xd919('0x62'))][(_0xd919('0x63'))](_[_0xd919('0x6a')](_0xd919('0x57'))+'\x20not\x20found');}return _0x370407['download'](_0x5324f8);}})['catch'](handleError(_0x370407,null));};exports['gdpr']=function(_0x5cb43c,_0x56d7d6){return db[_0xd919('0x31')][_0xd919('0x4f')]({'where':{'id':_0x5cb43c['params']['id']},'attributes':[_0xd919('0x6b')]})['then'](respondWithResult(_0x56d7d6,null))[_0xd919('0x1f')](handleError(_0x56d7d6,null));};exports[_0xd919('0x6c')]=function(_0x4e0618,_0x135283,_0x5b2c8b){if(_0x4e0618[_0xd919('0x51')]&&_0x4e0618[_0xd919('0x51')][_0xd919('0x52')]){_0x4e0618['body'][_0xd919('0x67')]=_0x4e0618[_0xd919('0x51')]['filename'];}return db[_0xd919('0x31')][_0xd919('0x4f')]({'where':{'id':_0x4e0618[_0xd919('0x4b')]['id']}})[_0xd919('0x17')](handleEntityNotFound(_0x135283,null))[_0xd919('0x17')](saveUpdates(_0x4e0618[_0xd919('0x4e')],null))[_0xd919('0x17')](respondWithResult(_0x135283,null))[_0xd919('0x1f')](handleError(_0x135283,null));};var utilLicense=require(_0xd919('0x14'));exports[_0xd919('0x6d')]=function(_0x347868,_0x4fddfb,_0x521623){var _0x293fe3=_0xd919('0x6e');var _0x318ca8={'custom':![]};return utilLicense[_0xd919('0x56')]()[_0xd919('0x17')](function(_0x1df7e5){if(_0x1df7e5){_0x318ca8=_0x1df7e5;}return db[_0xd919('0x31')]['find']({'where':{'id':_0x347868[_0xd919('0x4b')]['id']},'attributes':[_0xd919('0x53'),_0xd919('0x57'),_0xd919('0x67'),_0xd919('0x58'),'defaultLogo','defaultLoginLogo',_0xd919('0x68'),_0xd919('0x5a')],'raw':!![]});})[_0xd919('0x17')](handleEntityNotFound(_0x4fddfb,null))[_0xd919('0x17')](function(_0x44600a){if(_0x44600a){var _0x42f6ee=_0x44600a[_0xd919('0x67')]&&fs[_0xd919('0x5b')](path['join'](config[_0xd919('0x5d')],_0x293fe3,_[_0xd919('0x5e')](_0x44600a[_0xd919('0x67')])))?path['join'](config['root'],_0x293fe3,_[_0xd919('0x5e')](_0x44600a[_0xd919('0x67')])):path[_0xd919('0x5c')](config[_0xd919('0x5d')],_0x293fe3,_[_0xd919('0x5e')](_0xd919('0x6f')));var _0x224faf=_0xd919('0x60')+_[_0xd919('0x6a')](_0xd919('0x67'));if(_0x44600a[_0x224faf]||!_0x318ca8[_0xd919('0x61')]||!_0x318ca8['preferred']){_0x42f6ee=path['join'](config[_0xd919('0x5d')],_0x293fe3,_[_0xd919('0x5e')](_0xd919('0x6f')));}if(!fs[_0xd919('0x5b')](_0x42f6ee)){throw new db['Sequelize'][(_0xd919('0x63'))](_[_0xd919('0x6a')](_0xd919('0x67'))+_0xd919('0x64'));}return _0x4fddfb[_0xd919('0x65')](_0x42f6ee);}})[_0xd919('0x1f')](handleError(_0x4fddfb,null));};exports['addFavicon']=function(_0x37a65f,_0x2ca26f,_0x33fa70){if(_0x37a65f[_0xd919('0x51')]&&_0x37a65f['file'][_0xd919('0x52')]){_0x37a65f['body']['favicon']=_0x37a65f['file']['filename'];}return db[_0xd919('0x31')]['find']({'where':{'id':_0x37a65f[_0xd919('0x4b')]['id']}})[_0xd919('0x17')](handleEntityNotFound(_0x2ca26f,null))[_0xd919('0x17')](saveUpdates(_0x37a65f[_0xd919('0x4e')],null))[_0xd919('0x17')](respondWithResult(_0x2ca26f,null))[_0xd919('0x1f')](handleError(_0x2ca26f,null));};var utilLicense=require('../../config/license/util');exports[_0xd919('0x70')]=function(_0x2d73e9,_0x17a6e4,_0x54d090){var _0x4de295=_0xd919('0x6e');var _0x51eed0={'custom':![]};return utilLicense[_0xd919('0x56')]()[_0xd919('0x17')](function(_0x2a0d14){if(_0x2a0d14){_0x51eed0=_0x2a0d14;}return db[_0xd919('0x31')]['find']({'where':{'id':_0x2d73e9[_0xd919('0x4b')]['id']},'attributes':[_0xd919('0x53'),_0xd919('0x57'),_0xd919('0x67'),_0xd919('0x58'),_0xd919('0x71'),_0xd919('0x59'),'defaultPreferred',_0xd919('0x5a')],'raw':!![]});})['then'](handleEntityNotFound(_0x17a6e4,null))['then'](function(_0x2d38fd){if(_0x2d38fd){var _0x181b94=_0x2d38fd['favicon']&&fs[_0xd919('0x5b')](path['join'](config[_0xd919('0x5d')],_0x4de295,_[_0xd919('0x5e')](_0x2d38fd[_0xd919('0x58')])))?path[_0xd919('0x5c')](config['root'],_0x4de295,_['toLower'](_0x2d38fd['favicon'])):path[_0xd919('0x5c')](config['root'],_0x4de295,_['toLower'](_0xd919('0x72')));var _0xa808e2=_0xd919('0x60')+_[_0xd919('0x6a')](_0xd919('0x58'));if(_0x2d38fd[_0xa808e2]||!_0x51eed0[_0xd919('0x61')]){_0x181b94=path[_0xd919('0x5c')](config[_0xd919('0x5d')],_0x4de295,_['toLower'](_0xd919('0x72')));}if(!fs[_0xd919('0x5b')](_0x181b94)){throw new db[(_0xd919('0x62'))]['ValidationError'](_[_0xd919('0x6a')]('favicon')+_0xd919('0x64'));}return _0x17a6e4[_0xd919('0x65')](_0x181b94);}})[_0xd919('0x1f')](handleError(_0x17a6e4,null));};exports[_0xd919('0x73')]=function(_0x1cddf9,_0x3214bf){var _0x9dacaf={'offset':moment()[_0xd919('0x74')]()};_0x9dacaf['now']=moment()['utcOffset'](_0x9dacaf[_0xd919('0x23')])[_0xd919('0x75')]('YYYY-MM-DD\x20HH:mm:ss:SSS');return _0x3214bf[_0xd919('0x21')](0xc8)['send'](_0x9dacaf);};
\ No newline at end of file
index d8b2856..2cdfbf0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['settings','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./setting.attributes','exports','Setting'];(function(_0x195740,_0x3d8e1d){var _0x1ff625=function(_0x23bb5c){while(--_0x23bb5c){_0x195740['push'](_0x195740['shift']());}};_0x1ff625(++_0x3d8e1d);}(_0x34e8,0x12c));var _0x834e=function(_0x44aadd,_0x4fa4df){_0x44aadd=_0x44aadd-0x0;var _0x53072d=_0x34e8[_0x44aadd];return _0x53072d;};'use strict';var _=require(_0x834e('0x0'));var util=require(_0x834e('0x1'));var logger=require(_0x834e('0x2'))(_0x834e('0x3'));var moment=require('moment');var BPromise=require(_0x834e('0x4'));var rp=require(_0x834e('0x5'));var fs=require('fs');var path=require(_0x834e('0x6'));var rimraf=require(_0x834e('0x7'));var config=require(_0x834e('0x8'));var attributes=require(_0x834e('0x9'));module[_0x834e('0xa')]=function(_0x4a2018,_0x858aa1){return _0x4a2018['define'](_0x834e('0xb'),attributes,{'tableName':_0x834e('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe14b=['bluebird','path','./setting.attributes','exports','define','Setting','settings','lodash','util','moment'];(function(_0x5ccfb9,_0x14f575){var _0x4a285b=function(_0x5c39d8){while(--_0x5c39d8){_0x5ccfb9['push'](_0x5ccfb9['shift']());}};_0x4a285b(++_0x14f575);}(_0xe14b,0x93));var _0xbe14=function(_0x3fb4bf,_0x8cfc19){_0x3fb4bf=_0x3fb4bf-0x0;var _0x2cc195=_0xe14b[_0x3fb4bf];return _0x2cc195;};'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
index a81b2e5..ccbc728 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb02=['include','map','model','debug','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','Setting,\x20%s,\x20%s','Setting,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','ShowSetting','Setting','find','raw','options','attributes'];(function(_0x556bb1,_0x34830d){var _0x45455f=function(_0x13c6ba){while(--_0x13c6ba){_0x556bb1['push'](_0x556bb1['shift']());}};_0x45455f(++_0x34830d);}(_0xdb02,0x1e5));var _0x2db0=function(_0x3ce3c,_0x319337){_0x3ce3c=_0x3ce3c-0x0;var _0x55a2c9=_0xdb02[_0x3ce3c];return _0x55a2c9;};'use strict';var _=require(_0x2db0('0x0'));var util=require(_0x2db0('0x1'));var moment=require(_0x2db0('0x2'));var BPromise=require(_0x2db0('0x3'));var rs=require(_0x2db0('0x4'));var fs=require('fs');var Redis=require(_0x2db0('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x2db0('0x6'));var logger=require(_0x2db0('0x7'))('rpc');var config=require(_0x2db0('0x8'));var jayson=require(_0x2db0('0x9'));var client=jayson[_0x2db0('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5d8c9e,_0x337295,_0x5a2e30){return new BPromise(function(_0x367f45,_0x1dbbe2){return client[_0x2db0('0xb')](_0x5d8c9e,_0x5a2e30)[_0x2db0('0xc')](function(_0x533e47){logger[_0x2db0('0xd')](_0x2db0('0xe'),_0x337295,'request\x20sent');logger['debug'](_0x2db0('0xf'),_0x337295,_0x2db0('0x10'),JSON[_0x2db0('0x11')](_0x533e47));if(_0x533e47[_0x2db0('0x12')]){if(_0x533e47[_0x2db0('0x12')][_0x2db0('0x13')]===0x1f4){logger[_0x2db0('0x12')](_0x2db0('0xe'),_0x337295,_0x533e47[_0x2db0('0x12')][_0x2db0('0x14')]);return _0x1dbbe2(_0x533e47['error'][_0x2db0('0x14')]);}logger[_0x2db0('0x12')]('Setting,\x20%s,\x20%s',_0x337295,_0x533e47[_0x2db0('0x12')][_0x2db0('0x14')]);return _0x367f45(_0x533e47[_0x2db0('0x12')]['message']);}else{logger[_0x2db0('0xd')](_0x2db0('0xe'),_0x337295,'request\x20sent');_0x367f45(_0x533e47['result']['message']);}})['catch'](function(_0x38b62d){logger[_0x2db0('0x12')](_0x2db0('0xe'),_0x337295,_0x38b62d);_0x1dbbe2(_0x38b62d);});});}exports[_0x2db0('0x15')]=function(_0x514641){var _0x556087=this;return new Promise(function(_0x334fb4,_0x594561){return db[_0x2db0('0x16')][_0x2db0('0x17')]({'raw':_0x514641['options']?_0x514641['options'][_0x2db0('0x18')]===undefined?!![]:![]:!![],'where':_0x514641[_0x2db0('0x19')]?_0x514641['options']['where']||null:null,'attributes':_0x514641['options']?_0x514641['options'][_0x2db0('0x1a')]||null:null,'include':_0x514641[_0x2db0('0x19')]?_0x514641[_0x2db0('0x19')][_0x2db0('0x1b')]?_[_0x2db0('0x1c')](_0x514641['options'][_0x2db0('0x1b')],function(_0x12cda3){return{'model':db[_0x12cda3['model']],'as':_0x12cda3['as'],'attributes':_0x12cda3[_0x2db0('0x1a')],'include':_0x12cda3['include']?_[_0x2db0('0x1c')](_0x12cda3[_0x2db0('0x1b')],function(_0x32a461){return{'model':db[_0x32a461['model']],'as':_0x32a461['as'],'attributes':_0x32a461['attributes'],'include':_0x32a461[_0x2db0('0x1b')]?_[_0x2db0('0x1c')](_0x32a461[_0x2db0('0x1b')],function(_0x46c94c){return{'model':db[_0x46c94c[_0x2db0('0x1d')]],'as':_0x46c94c['as'],'attributes':_0x46c94c[_0x2db0('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x2db0('0xc')](function(_0x3d85ea){logger[_0x2db0('0xd')](_0x2db0('0x15'),_0x514641);logger[_0x2db0('0x1e')](_0x2db0('0x15'),_0x514641,JSON['stringify'](_0x3d85ea));_0x334fb4(_0x3d85ea);})[_0x2db0('0x1f')](function(_0x3ddf93){logger[_0x2db0('0x12')](_0x2db0('0x15'),_0x3ddf93['message'],_0x514641);_0x594561(_0x556087['error'](0x1f4,_0x3ddf93['message']));});});};
\ No newline at end of file
+var _0xddf4=['moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','Setting,\x20%s,\x20%s','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','ShowSetting','Setting','find','options','raw','attributes','include','model','map','stringify','lodash','util'];(function(_0x5f0d26,_0x41640e){var _0x5b6151=function(_0x480028){while(--_0x480028){_0x5f0d26['push'](_0x5f0d26['shift']());}};_0x5b6151(++_0x41640e);}(_0xddf4,0x106));var _0x4ddf=function(_0x3c5572,_0x35cb5b){_0x3c5572=_0x3c5572-0x0;var _0x1e6ee5=_0xddf4[_0x3c5572];return _0x1e6ee5;};'use strict';var _=require(_0x4ddf('0x0'));var util=require(_0x4ddf('0x1'));var moment=require(_0x4ddf('0x2'));var BPromise=require(_0x4ddf('0x3'));var rs=require(_0x4ddf('0x4'));var fs=require('fs');var Redis=require(_0x4ddf('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x4ddf('0x6'))(_0x4ddf('0x7'));var config=require(_0x4ddf('0x8'));var jayson=require(_0x4ddf('0x9'));var client=jayson[_0x4ddf('0xa')][_0x4ddf('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x21b9b1,_0x3bdc90,_0x48a662){return new BPromise(function(_0x5181f4,_0x40ff12){return client['request'](_0x21b9b1,_0x48a662)[_0x4ddf('0xc')](function(_0x33b2d5){logger[_0x4ddf('0xd')](_0x4ddf('0xe'),_0x3bdc90,_0x4ddf('0xf'));logger[_0x4ddf('0x10')](_0x4ddf('0x11'),_0x3bdc90,_0x4ddf('0xf'),JSON['stringify'](_0x33b2d5));if(_0x33b2d5[_0x4ddf('0x12')]){if(_0x33b2d5[_0x4ddf('0x12')][_0x4ddf('0x13')]===0x1f4){logger['error'](_0x4ddf('0xe'),_0x3bdc90,_0x33b2d5['error']['message']);return _0x40ff12(_0x33b2d5[_0x4ddf('0x12')]['message']);}logger[_0x4ddf('0x12')]('Setting,\x20%s,\x20%s',_0x3bdc90,_0x33b2d5[_0x4ddf('0x12')]['message']);return _0x5181f4(_0x33b2d5[_0x4ddf('0x12')][_0x4ddf('0x14')]);}else{logger['info'](_0x4ddf('0xe'),_0x3bdc90,_0x4ddf('0xf'));_0x5181f4(_0x33b2d5[_0x4ddf('0x15')][_0x4ddf('0x14')]);}})[_0x4ddf('0x16')](function(_0x246c61){logger[_0x4ddf('0x12')](_0x4ddf('0xe'),_0x3bdc90,_0x246c61);_0x40ff12(_0x246c61);});});}exports[_0x4ddf('0x17')]=function(_0x5e9853){var _0x442564=this;return new Promise(function(_0x530405,_0x23abb5){return db[_0x4ddf('0x18')][_0x4ddf('0x19')]({'raw':_0x5e9853[_0x4ddf('0x1a')]?_0x5e9853[_0x4ddf('0x1a')][_0x4ddf('0x1b')]===undefined?!![]:![]:!![],'where':_0x5e9853[_0x4ddf('0x1a')]?_0x5e9853[_0x4ddf('0x1a')]['where']||null:null,'attributes':_0x5e9853[_0x4ddf('0x1a')]?_0x5e9853['options'][_0x4ddf('0x1c')]||null:null,'include':_0x5e9853[_0x4ddf('0x1a')]?_0x5e9853['options'][_0x4ddf('0x1d')]?_['map'](_0x5e9853['options'][_0x4ddf('0x1d')],function(_0x5bffe0){return{'model':db[_0x5bffe0[_0x4ddf('0x1e')]],'as':_0x5bffe0['as'],'attributes':_0x5bffe0[_0x4ddf('0x1c')],'include':_0x5bffe0[_0x4ddf('0x1d')]?_[_0x4ddf('0x1f')](_0x5bffe0['include'],function(_0x5713a1){return{'model':db[_0x5713a1[_0x4ddf('0x1e')]],'as':_0x5713a1['as'],'attributes':_0x5713a1['attributes'],'include':_0x5713a1['include']?_[_0x4ddf('0x1f')](_0x5713a1[_0x4ddf('0x1d')],function(_0x18c11a){return{'model':db[_0x18c11a[_0x4ddf('0x1e')]],'as':_0x18c11a['as'],'attributes':_0x18c11a[_0x4ddf('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x4ddf('0xc')](function(_0x143691){logger[_0x4ddf('0xd')](_0x4ddf('0x17'),_0x5e9853);logger['debug'](_0x4ddf('0x17'),_0x5e9853,JSON[_0x4ddf('0x20')](_0x143691));_0x530405(_0x143691);})[_0x4ddf('0x16')](function(_0x440aa6){logger[_0x4ddf('0x12')](_0x4ddf('0x17'),_0x440aa6[_0x4ddf('0x14')],_0x5e9853);_0x23abb5(_0x442564['error'](0x1f4,_0x440aa6[_0x4ddf('0x14')]));});});};
\ No newline at end of file
index e26cdf7..dc20985 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['/:id/send','status','put','update','delete','removeDispositions','removeAnswers','multer','path','connect-timeout','express','Router','fs-extra','../../config/environment','./smsAccount.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','/:id/interactions','getInteractions','/:id/status','statusGet','/:id/users','create','post','/:id/notify','notify','addApplications'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x7217,0x19e));var _0x7721=function(_0xbe200f,_0x4b50eb){_0xbe200f=_0xbe200f-0x0;var _0x192597=_0x7217[_0xbe200f];return _0x192597;};'use strict';var multer=require(_0x7721('0x0'));var util=require('util');var path=require(_0x7721('0x1'));var timeout=require(_0x7721('0x2'));var express=require(_0x7721('0x3'));var router=express[_0x7721('0x4')]();var fs_extra=require(_0x7721('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x7721('0x6'));var controller=require(_0x7721('0x7'));router[_0x7721('0x8')]('/',auth[_0x7721('0x9')](),controller[_0x7721('0xa')]);router[_0x7721('0x8')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller[_0x7721('0xc')]);router[_0x7721('0x8')](_0x7721('0xd'),auth[_0x7721('0x9')](),controller[_0x7721('0xe')]);router[_0x7721('0x8')](_0x7721('0xf'),auth['isAuthenticated'](),controller[_0x7721('0x10')]);router[_0x7721('0x8')](_0x7721('0x11'),auth[_0x7721('0x9')](),controller[_0x7721('0x12')]);router[_0x7721('0x8')](_0x7721('0x13'),auth[_0x7721('0x9')](),controller['getApplications']);router[_0x7721('0x8')](_0x7721('0x14'),auth['isAuthenticated'](),controller[_0x7721('0x15')]);router[_0x7721('0x8')](_0x7721('0x16'),controller[_0x7721('0x17')]);router['get'](_0x7721('0x18'),auth[_0x7721('0x9')](),controller['getAgents']);router['post']('/',auth['isAuthenticated'](),controller[_0x7721('0x19')]);router[_0x7721('0x1a')](_0x7721('0xf'),auth[_0x7721('0x9')](),controller['addDisposition']);router[_0x7721('0x1a')]('/:id/canned_answers',auth[_0x7721('0x9')](),controller['addAnswer']);router[_0x7721('0x1a')](_0x7721('0x1b'),controller[_0x7721('0x1c')]);router[_0x7721('0x1a')](_0x7721('0x13'),auth[_0x7721('0x9')](),controller[_0x7721('0x1d')]);router[_0x7721('0x1a')](_0x7721('0x1e'),auth[_0x7721('0x9')](),controller['send']);router[_0x7721('0x1a')](_0x7721('0x16'),controller[_0x7721('0x1f')]);router[_0x7721('0x1a')]('/:id/users',auth[_0x7721('0x9')](),controller['addAgents']);router[_0x7721('0x20')](_0x7721('0xd'),auth[_0x7721('0x9')](),controller[_0x7721('0x21')]);router[_0x7721('0x22')](_0x7721('0xd'),auth[_0x7721('0x9')](),controller['destroy']);router[_0x7721('0x22')](_0x7721('0xf'),auth[_0x7721('0x9')](),controller[_0x7721('0x23')]);router[_0x7721('0x22')](_0x7721('0x11'),auth[_0x7721('0x9')](),controller[_0x7721('0x24')]);router[_0x7721('0x22')]('/:id/users',auth[_0x7721('0x9')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
+var _0x814b=['/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','/:id/interactions','getInteractions','/:id/status','statusGet','/:id/users','getAgents','post','create','addDisposition','addAnswer','/:id/send','status','addAgents','put','update','destroy','delete','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsAccount.controller','get','isAuthenticated'];(function(_0x2c9f51,_0x2eec01){var _0x12abf9=function(_0x2d463f){while(--_0x2d463f){_0x2c9f51['push'](_0x2c9f51['shift']());}};_0x12abf9(++_0x2eec01);}(_0x814b,0x1a2));var _0xb814=function(_0x3c6125,_0x3b2a9c){_0x3c6125=_0x3c6125-0x0;var _0x2f47b8=_0x814b[_0x3c6125];return _0x2f47b8;};'use strict';var multer=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var path=require(_0xb814('0x2'));var timeout=require(_0xb814('0x3'));var express=require(_0xb814('0x4'));var router=express[_0xb814('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xb814('0x6'));var interaction=require(_0xb814('0x7'));var config=require(_0xb814('0x8'));var controller=require(_0xb814('0x9'));router[_0xb814('0xa')]('/',auth[_0xb814('0xb')](),controller['index']);router[_0xb814('0xa')](_0xb814('0xc'),auth['isAuthenticated'](),controller[_0xb814('0xd')]);router[_0xb814('0xa')](_0xb814('0xe'),auth[_0xb814('0xb')](),controller[_0xb814('0xf')]);router[_0xb814('0xa')](_0xb814('0x10'),auth[_0xb814('0xb')](),controller[_0xb814('0x11')]);router[_0xb814('0xa')](_0xb814('0x12'),auth['isAuthenticated'](),controller[_0xb814('0x13')]);router['get'](_0xb814('0x14'),auth[_0xb814('0xb')](),controller[_0xb814('0x15')]);router[_0xb814('0xa')](_0xb814('0x16'),auth[_0xb814('0xb')](),controller[_0xb814('0x17')]);router[_0xb814('0xa')](_0xb814('0x18'),controller[_0xb814('0x19')]);router[_0xb814('0xa')](_0xb814('0x1a'),auth[_0xb814('0xb')](),controller[_0xb814('0x1b')]);router[_0xb814('0x1c')]('/',auth[_0xb814('0xb')](),controller[_0xb814('0x1d')]);router[_0xb814('0x1c')](_0xb814('0x10'),auth[_0xb814('0xb')](),controller[_0xb814('0x1e')]);router['post'](_0xb814('0x12'),auth['isAuthenticated'](),controller[_0xb814('0x1f')]);router[_0xb814('0x1c')]('/:id/notify',controller['notify']);router['post'](_0xb814('0x14'),auth['isAuthenticated'](),controller['addApplications']);router[_0xb814('0x1c')](_0xb814('0x20'),auth[_0xb814('0xb')](),controller['send']);router[_0xb814('0x1c')]('/:id/status',controller[_0xb814('0x21')]);router[_0xb814('0x1c')](_0xb814('0x1a'),auth[_0xb814('0xb')](),controller[_0xb814('0x22')]);router[_0xb814('0x23')](_0xb814('0xe'),auth['isAuthenticated'](),controller[_0xb814('0x24')]);router['delete'](_0xb814('0xe'),auth[_0xb814('0xb')](),controller[_0xb814('0x25')]);router[_0xb814('0x26')](_0xb814('0x10'),auth[_0xb814('0xb')](),controller[_0xb814('0x27')]);router['delete'](_0xb814('0x12'),auth[_0xb814('0xb')](),controller[_0xb814('0x28')]);router[_0xb814('0x26')](_0xb814('0x1a'),auth[_0xb814('0xb')](),controller[_0xb814('0x29')]);module[_0xb814('0x2a')]=router;
\ No newline at end of file
index 247b6e9..7d90111 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0773=['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','sequelize','STRING','name','generate','ENUM','twilio','skebby','clicksend','plivo','bandwidth','csc','intelepeer'];(function(_0x340749,_0x48d001){var _0x1d0a62=function(_0x187aa5){while(--_0x187aa5){_0x340749['push'](_0x340749['shift']());}};_0x1d0a62(++_0x48d001);}(_0x0773,0xc5));var _0x3077=function(_0x4add35,_0x40fc13){_0x4add35=_0x4add35-0x0;var _0x445333=_0x0773[_0x4add35];return _0x445333;};'use strict';var Sequelize=require(_0x3077('0x0'));var rs=require('randomstring');module['exports']={'name':{'type':Sequelize[_0x3077('0x1')],'unique':_0x3077('0x2'),'allowNull':![]},'key':{'type':Sequelize[_0x3077('0x1')],'allowNull':![]},'remote':{'type':Sequelize[_0x3077('0x1')],'allowNull':![]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0x3077('0x3')]();}},'phone':{'type':Sequelize[_0x3077('0x1')]},'type':{'type':Sequelize[_0x3077('0x4')](_0x3077('0x5'),_0x3077('0x6'),'connectel',_0x3077('0x7'),_0x3077('0x8'),'clickatell',_0x3077('0x9'),_0x3077('0xa'),'infobip',_0x3077('0xb'))},'accountSid':{'type':Sequelize[_0x3077('0x1')]},'authId':{'type':Sequelize['STRING']},'authToken':{'type':Sequelize[_0x3077('0x1')]},'smsMethod':{'type':Sequelize['ENUM']('SI','TI','GP')},'username':{'type':Sequelize[_0x3077('0x1')]},'password':{'type':Sequelize[_0x3077('0x1')]},'apiKey':{'type':Sequelize[_0x3077('0x1')]},'applicationId':{'type':Sequelize[_0x3077('0x1')]},'accountId':{'type':Sequelize[_0x3077('0x1')]},'senderString':{'type':Sequelize[_0x3077('0x1')]},'deliveryReport':{'type':Sequelize[_0x3077('0xc')],'defaultValue':![]},'description':{'type':Sequelize[_0x3077('0x1')]},'notificationTemplate':{'type':Sequelize[_0x3077('0xd')],'defaultValue':function(){return _0x3077('0xe');}},'notificationSound':{'type':Sequelize[_0x3077('0xc')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x3077('0xc')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x3077('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x3077('0xc')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x3077('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x3077('0xc')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x3077('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0x3077('0x1')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x3077('0xf')],'comment':_0x3077('0x10')},'mandatoryDisposition':{'type':Sequelize[_0x3077('0xc')],'defaultValue':![],'comment':_0x3077('0x11'),'set':function(_0x18b20f){if(!_0x18b20f)this['setDataValue']('mandatoryDispositionPauseId',null);this[_0x3077('0x12')]('mandatoryDisposition',_0x18b20f);}}};
\ No newline at end of file
+var _0x56d7=['exports','STRING','name','ENUM','connectel','clicksend','plivo','clickatell','csc','infobip','intelepeer','BOOLEAN','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','INTEGER','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring'];(function(_0x43a9fb,_0x32ccb4){var _0x22198e=function(_0x2e8801){while(--_0x2e8801){_0x43a9fb['push'](_0x43a9fb['shift']());}};_0x22198e(++_0x32ccb4);}(_0x56d7,0x14e));var _0x756d=function(_0x360189,_0x40a134){_0x360189=_0x360189-0x0;var _0x5c148b=_0x56d7[_0x360189];return _0x5c148b;};'use strict';var Sequelize=require(_0x756d('0x0'));var rs=require(_0x756d('0x1'));module[_0x756d('0x2')]={'name':{'type':Sequelize[_0x756d('0x3')],'unique':_0x756d('0x4'),'allowNull':![]},'key':{'type':Sequelize[_0x756d('0x3')],'allowNull':![]},'remote':{'type':Sequelize[_0x756d('0x3')],'allowNull':![]},'token':{'type':Sequelize[_0x756d('0x3')],'defaultValue':function(){return rs['generate']();}},'phone':{'type':Sequelize[_0x756d('0x3')]},'type':{'type':Sequelize[_0x756d('0x5')]('twilio','skebby',_0x756d('0x6'),_0x756d('0x7'),_0x756d('0x8'),_0x756d('0x9'),'bandwidth',_0x756d('0xa'),_0x756d('0xb'),_0x756d('0xc'))},'accountSid':{'type':Sequelize[_0x756d('0x3')]},'authId':{'type':Sequelize[_0x756d('0x3')]},'authToken':{'type':Sequelize['STRING']},'smsMethod':{'type':Sequelize[_0x756d('0x5')]('SI','TI','GP')},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize['STRING']},'apiKey':{'type':Sequelize[_0x756d('0x3')]},'applicationId':{'type':Sequelize['STRING']},'accountId':{'type':Sequelize[_0x756d('0x3')]},'senderString':{'type':Sequelize[_0x756d('0x3')]},'deliveryReport':{'type':Sequelize[_0x756d('0xd')],'defaultValue':![]},'description':{'type':Sequelize[_0x756d('0x3')]},'notificationTemplate':{'type':Sequelize[_0x756d('0xe')],'defaultValue':function(){return _0x756d('0xf');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x756d('0xd')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x756d('0x10')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x756d('0x10')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0x756d('0x3')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x756d('0x10')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x756d('0xd')],'defaultValue':![],'comment':_0x756d('0x11'),'set':function(_0x1a92ec){if(!_0x1a92ec)this[_0x756d('0x12')](_0x756d('0x13'),null);this[_0x756d('0x12')](_0x756d('0x14'),_0x1a92ec);}}};
\ No newline at end of file
index c0c6c32..f78a3e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed1f=['http','request','then','info','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','code','SmsAccount,\x20%s,\x20%s','error','message','result','catch','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','SmsAccounts','destroy','name','index','Pause','mandatoryDispositionPause','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','nolimit','order','sort','where','merge','filter','options','SmsAccount','includeAll','include','rows','params','length','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','autoAssociation','UserProfileResource','describe','addDisposition','Disposition','getDispositions','findOne','hasOwnProperty','pick','SmsAccountId','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','findAll','removeAnswers','notify','sms','Applications','account','applications','orderBy','priority','asc','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','createdAt','updatedAt','difference','ListId','mobile','from','Body','messageId','MessageSid','sender','text','connectel','clicksend','message_id','plivo','From','infobip','results','csc','segmentedMessage','clickatell','fromNumber','replyMessageId','bandwidth','intelepeer','refid','isNil','mapKey','includes','CmList','Contacts','DESC','list','contact','SmsInteraction','spread','interaction','close','unmanaged','SmsMessage','ContactId','AttachmentId','UserId','User','agent','waitForTheAssignedAgent','*,*,*,*','Start','startRouting','receiveMessage','entity\x20found','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','set','Content-Type','text/xml','send','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','addApplications','sequelize','transaction','Transaction','READ_COMMITTED','SmsApplication','bulkCreate','findAndCountAll','stack','finally','sendStatus','getApplications','getInteractions','Contact','Owner','fullname','internal','Tag','Tags','tag','body\x20is\x20mandatory\x20and\x20not\x20empty','to\x20is\x20mandatory','List','out','Messages','dataValues','push','inspect','skebby','skebby_dispatch_id','requestid','statusInt','status_code','groupName','DELIVERED','redif','error_code','DELIVERED_TO_GATEWAY','RECEIVED_BY_RECIPIENT','DELIVRD','ACCEPTD','statusGet','received\x20delivery\x20report\x20from','state','message-id','addAgents','omit','emit','userSmsAccount:save','removeAgents','isArray','userSmsAccount:remove','getAgents','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./smsAccount.socket','jayson/promise','client'];(function(_0x56f4ad,_0x557e1c){var _0x1eb7d2=function(_0x2bdf3b){while(--_0x2bdf3b){_0x56f4ad['push'](_0x56f4ad['shift']());}};_0x1eb7d2(++_0x557e1c);}(_0xed1f,0xcc));var _0xfed1=function(_0x40a825,_0x3bac79){_0x40a825=_0x40a825-0x0;var _0x273a54=_0xed1f[_0x40a825];return _0x273a54;};'use strict';var emlformat=require(_0xfed1('0x0'));var rimraf=require(_0xfed1('0x1'));var zipdir=require(_0xfed1('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xfed1('0x3'));var moment=require(_0xfed1('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xfed1('0x5'));var util=require(_0xfed1('0x6'));var path=require(_0xfed1('0x7'));var sox=require(_0xfed1('0x8'));var csv=require(_0xfed1('0x9'));var ejs=require(_0xfed1('0xa'));var fs=require('fs');var fs_extra=require(_0xfed1('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xfed1('0xc'));var jsforce=require(_0xfed1('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xfed1('0x9'));var querystring=require(_0xfed1('0xe'));var Papa=require('papaparse');var Redis=require(_0xfed1('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xfed1('0x10'));var as=require(_0xfed1('0x11'));var hardwareService=require(_0xfed1('0x12'));var logger=require('../../config/logger')(_0xfed1('0x13'));var utils=require('../../config/utils');var config=require(_0xfed1('0x14'));var licenseUtil=require(_0xfed1('0x15'));var db=require('../../mysqldb')['db'];config[_0xfed1('0x16')]=_[_0xfed1('0x17')](config['redis'],{'host':_0xfed1('0x18'),'port':0x18eb});var socket=require(_0xfed1('0x19'))(new Redis(config[_0xfed1('0x16')]));require(_0xfed1('0x1a'))['register'](socket);var jayson=require(_0xfed1('0x1b'));var client=jayson[_0xfed1('0x1c')][_0xfed1('0x1d')]({'port':0x232c});function respondWithRpcPromise(_0x15dda0,_0x31b53e,_0x23f038,_0xac2b89){return new BPromise(function(_0x257450,_0x477d35){var _0xb05eaf=_0xac2b89||client;return _0xb05eaf[_0xfed1('0x1e')](_0x15dda0,_0x23f038)[_0xfed1('0x1f')](function(_0x30a650){logger[_0xfed1('0x20')]('SmsAccount,\x20%s,\x20%s',_0x31b53e,_0xfed1('0x21'));logger[_0xfed1('0x22')](_0xfed1('0x23'),_0x31b53e,_0xfed1('0x21'),JSON[_0xfed1('0x24')](_0x30a650));if(_0x30a650['error']){if(_0x30a650['error'][_0xfed1('0x25')]===0x1f4){logger['error'](_0xfed1('0x26'),_0x31b53e,_0x30a650[_0xfed1('0x27')][_0xfed1('0x28')]);return _0x477d35(_0x30a650[_0xfed1('0x27')]['message']);}logger[_0xfed1('0x27')](_0xfed1('0x26'),_0x31b53e,_0x30a650[_0xfed1('0x27')][_0xfed1('0x28')]);return _0x257450(_0x30a650['error']['message']);}else{logger[_0xfed1('0x20')](_0xfed1('0x26'),_0x31b53e,_0xfed1('0x21'));_0x257450(_0x30a650[_0xfed1('0x29')][_0xfed1('0x28')]);}})[_0xfed1('0x2a')](function(_0x5620ef){logger[_0xfed1('0x27')](_0xfed1('0x26'),_0x31b53e,_0x5620ef);_0x477d35(_0x5620ef);});});}function respondWithStatusCode(_0x1de475,_0x5ba385){_0x5ba385=_0x5ba385||0xcc;return function(_0x46f77c){if(_0x46f77c){return _0x1de475['sendStatus'](_0x5ba385);}return _0x1de475[_0xfed1('0x2b')](_0x5ba385)[_0xfed1('0x2c')]();};}function respondWithResult(_0x58e449,_0x391491){_0x391491=_0x391491||0xc8;return function(_0x9d673e){if(_0x9d673e){return _0x58e449[_0xfed1('0x2b')](_0x391491)[_0xfed1('0x2d')](_0x9d673e);}};}function respondWithFilteredResult(_0x3b995c,_0x6890a){return function(_0x43c0b8){if(_0x43c0b8){var _0x473751=typeof _0x6890a[_0xfed1('0x2e')]===_0xfed1('0x2f')&&typeof _0x6890a[_0xfed1('0x30')]==='undefined';var _0x2ad2ca=_0x43c0b8[_0xfed1('0x31')];var _0x5a87e9=_0x473751?0x0:_0x6890a[_0xfed1('0x2e')];var _0x4d344a=_0x473751?_0x43c0b8[_0xfed1('0x31')]:_0x6890a[_0xfed1('0x2e')]+_0x6890a['limit'];var _0x3355c9;if(_0x4d344a>=_0x2ad2ca){_0x4d344a=_0x2ad2ca;_0x3355c9=0xc8;}else{_0x3355c9=0xce;}_0x3b995c[_0xfed1('0x2b')](_0x3355c9);return _0x3b995c['set'](_0xfed1('0x32'),_0x5a87e9+'-'+_0x4d344a+'/'+_0x2ad2ca)['json'](_0x43c0b8);}return null;};}function patchUpdates(_0x46fdd6){return function(_0x2ec86c){try{jsonpatch[_0xfed1('0x33')](_0x2ec86c,_0x46fdd6,!![]);}catch(_0x49fdb9){return BPromise[_0xfed1('0x34')](_0x49fdb9);}return _0x2ec86c[_0xfed1('0x35')]();};}function saveUpdates(_0x1fb2dc,_0x56e5bd){return function(_0x55ce83){if(_0x55ce83){return _0x55ce83[_0xfed1('0x36')](_0x1fb2dc)[_0xfed1('0x1f')](function(_0x4890ee){return _0x4890ee;});}return null;};}function removeEntity(_0x3b8870,_0x3c789b){return function(_0x1c380c){if(_0x1c380c){return _0x1c380c['destroy']()['then'](function(){var _0x503e1c=_0x1c380c['get']({'plain':!![]});var _0x2cfb00=_0xfed1('0x37');return db['UserProfileResource'][_0xfed1('0x38')]({'where':{'type':_0x2cfb00,'resourceId':_0x503e1c['id']}})['then'](function(){return _0x1c380c;});})['then'](function(){_0x3b8870['status'](0xcc)[_0xfed1('0x2c')]();});}};}function handleEntityNotFound(_0x209a41,_0x42220b){return function(_0x167bf5){if(!_0x167bf5){_0x209a41['sendStatus'](0x194);}return _0x167bf5;};}function handleError(_0x5290bc,_0x69777c){_0x69777c=_0x69777c||0x1f4;return function(_0x217d64){logger[_0xfed1('0x27')](_0x217d64['stack']);if(_0x217d64[_0xfed1('0x39')]){delete _0x217d64[_0xfed1('0x39')];}_0x5290bc['status'](_0x69777c)['send'](_0x217d64);};}exports[_0xfed1('0x3a')]=function(_0xcb4284,_0x2910b2){var _0xcdf1f9={'include':[{'model':db[_0xfed1('0x3b')],'as':_0xfed1('0x3c')}]},_0x3d6c37={},_0x4c6d21={'count':0x0,'rows':[]};var _0x193c07=_[_0xfed1('0x3d')](db['SmsAccount'][_0xfed1('0x3e')],function(_0x341798){return{'name':_0x341798[_0xfed1('0x3f')],'type':_0x341798[_0xfed1('0x40')][_0xfed1('0x41')]};});_0x3d6c37[_0xfed1('0x42')]=_['map'](_0x193c07,'name');_0x3d6c37[_0xfed1('0x43')]=_[_0xfed1('0x44')](_0xcb4284[_0xfed1('0x43')]);_0x3d6c37[_0xfed1('0x45')]=_[_0xfed1('0x46')](_0x3d6c37['model'],_0x3d6c37[_0xfed1('0x43')]);_0xcdf1f9[_0xfed1('0x47')]=_[_0xfed1('0x46')](_0x3d6c37[_0xfed1('0x42')],qs[_0xfed1('0x48')](_0xcb4284[_0xfed1('0x43')][_0xfed1('0x48')]));_0xcdf1f9[_0xfed1('0x47')]=_0xcdf1f9['attributes']['length']?_0xcdf1f9[_0xfed1('0x47')]:_0x3d6c37[_0xfed1('0x42')];if(!_0xcb4284['query']['hasOwnProperty'](_0xfed1('0x49'))){_0xcdf1f9[_0xfed1('0x30')]=qs['limit'](_0xcb4284[_0xfed1('0x43')][_0xfed1('0x30')]);_0xcdf1f9[_0xfed1('0x2e')]=qs[_0xfed1('0x2e')](_0xcb4284[_0xfed1('0x43')][_0xfed1('0x2e')]);}_0xcdf1f9[_0xfed1('0x4a')]=qs[_0xfed1('0x4b')](_0xcb4284[_0xfed1('0x43')][_0xfed1('0x4b')]);_0xcdf1f9['where']=qs[_0xfed1('0x45')](_['pick'](_0xcb4284[_0xfed1('0x43')],_0x3d6c37[_0xfed1('0x45')]),_0x193c07);if(_0xcb4284[_0xfed1('0x43')]['filter']){_0xcdf1f9[_0xfed1('0x4c')]=_[_0xfed1('0x4d')](_0xcdf1f9[_0xfed1('0x4c')],{'$or':_[_0xfed1('0x3d')](_0x193c07,function(_0x5c745f){if(_0x5c745f[_0xfed1('0x40')]!=='VIRTUAL'){var _0x468d66={};_0x468d66[_0x5c745f['name']]={'$like':'%'+_0xcb4284['query'][_0xfed1('0x4e')]+'%'};return _0x468d66;}})});}_0xcdf1f9=_[_0xfed1('0x4d')]({},_0xcdf1f9,_0xcb4284[_0xfed1('0x4f')]);var _0x328405={'where':_0xcdf1f9[_0xfed1('0x4c')]};return db[_0xfed1('0x50')][_0xfed1('0x31')](_0x328405)[_0xfed1('0x1f')](function(_0x1e12fc){_0x4c6d21[_0xfed1('0x31')]=_0x1e12fc;if(_0xcb4284[_0xfed1('0x43')][_0xfed1('0x51')]){_0xcdf1f9[_0xfed1('0x52')]=[{'all':!![]}];}return db[_0xfed1('0x50')]['findAll'](_0xcdf1f9);})[_0xfed1('0x1f')](function(_0x3339bf){_0x4c6d21[_0xfed1('0x53')]=_0x3339bf;return _0x4c6d21;})[_0xfed1('0x1f')](respondWithFilteredResult(_0x2910b2,_0xcdf1f9))[_0xfed1('0x2a')](handleError(_0x2910b2,null));};exports['show']=function(_0x260a83,_0x31229b){var _0x4d155d={'raw':![],'where':{'id':_0x260a83[_0xfed1('0x54')]['id']},'include':[{'model':db[_0xfed1('0x3b')],'as':'mandatoryDispositionPause'}]},_0x283172={};_0x283172[_0xfed1('0x42')]=_[_0xfed1('0x44')](db[_0xfed1('0x50')]['rawAttributes']);_0x283172[_0xfed1('0x43')]=_[_0xfed1('0x44')](_0x260a83[_0xfed1('0x43')]);_0x283172[_0xfed1('0x45')]=_['intersection'](_0x283172[_0xfed1('0x42')],_0x283172['query']);_0x4d155d[_0xfed1('0x47')]=_[_0xfed1('0x46')](_0x283172[_0xfed1('0x42')],qs[_0xfed1('0x48')](_0x260a83[_0xfed1('0x43')]['fields']));_0x4d155d[_0xfed1('0x47')]=_0x4d155d[_0xfed1('0x47')][_0xfed1('0x55')]?_0x4d155d['attributes']:_0x283172[_0xfed1('0x42')];if(_0x260a83[_0xfed1('0x43')]['includeAll']){_0x4d155d[_0xfed1('0x52')]=[{'all':!![]}];}_0x4d155d=_[_0xfed1('0x4d')]({},_0x4d155d,_0x260a83[_0xfed1('0x4f')]);return db[_0xfed1('0x50')]['find'](_0x4d155d)[_0xfed1('0x1f')](handleEntityNotFound(_0x31229b,null))[_0xfed1('0x1f')](respondWithResult(_0x31229b,null))[_0xfed1('0x2a')](handleError(_0x31229b,null));};exports[_0xfed1('0x56')]=function(_0x666e83,_0x22733d){return db[_0xfed1('0x50')]['create'](_0x666e83[_0xfed1('0x57')],{})[_0xfed1('0x1f')](function(_0x1e0aae){var _0x29e7ce=_0x666e83[_0xfed1('0x58')][_0xfed1('0x59')]({'plain':!![]});if(!_0x29e7ce)throw new Error(_0xfed1('0x5a'));if(_0x29e7ce[_0xfed1('0x5b')]===_0xfed1('0x58')){var _0x18fd29=_0x1e0aae[_0xfed1('0x59')]({'plain':!![]});var _0x385ddf=_0xfed1('0x37');return db[_0xfed1('0x5c')][_0xfed1('0x5d')]({'where':{'name':_0x385ddf,'userProfileId':_0x29e7ce['userProfileId']},'raw':!![]})[_0xfed1('0x1f')](function(_0x54dec0){if(_0x54dec0&&_0x54dec0[_0xfed1('0x5e')]===0x0){return db[_0xfed1('0x5f')][_0xfed1('0x56')]({'name':_0x18fd29[_0xfed1('0x39')],'resourceId':_0x18fd29['id'],'type':_0x54dec0[_0xfed1('0x39')],'sectionId':_0x54dec0['id']},{})[_0xfed1('0x1f')](function(){return _0x1e0aae;});}else{return _0x1e0aae;}})['catch'](function(_0xd6ce08){logger[_0xfed1('0x27')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xd6ce08);throw _0xd6ce08;});}return _0x1e0aae;})[_0xfed1('0x1f')](respondWithResult(_0x22733d,0xc9))[_0xfed1('0x2a')](handleError(_0x22733d,null));};exports['update']=function(_0x141c19,_0x18cb4f){if(_0x141c19[_0xfed1('0x57')]['id']){delete _0x141c19[_0xfed1('0x57')]['id'];}return db[_0xfed1('0x50')][_0xfed1('0x5d')]({'where':{'id':_0x141c19['params']['id']},'include':[{'model':db[_0xfed1('0x3b')],'as':_0xfed1('0x3c')}]})[_0xfed1('0x1f')](handleEntityNotFound(_0x18cb4f,null))[_0xfed1('0x1f')](saveUpdates(_0x141c19[_0xfed1('0x57')],null))[_0xfed1('0x1f')](respondWithResult(_0x18cb4f,null))['catch'](handleError(_0x18cb4f,null));};exports[_0xfed1('0x38')]=function(_0x5be308,_0x2d4330){return db[_0xfed1('0x50')][_0xfed1('0x5d')]({'where':{'id':_0x5be308[_0xfed1('0x54')]['id']}})[_0xfed1('0x1f')](handleEntityNotFound(_0x2d4330,null))[_0xfed1('0x1f')](removeEntity(_0x2d4330,null))[_0xfed1('0x2a')](handleError(_0x2d4330,null));};exports[_0xfed1('0x60')]=function(_0x4bd7b7,_0xbcd7ea){return db[_0xfed1('0x50')][_0xfed1('0x60')]()['then'](respondWithResult(_0xbcd7ea,null))['catch'](handleError(_0xbcd7ea,null));};exports[_0xfed1('0x61')]=function(_0x396502,_0x186568,_0x17dbaf){if(_0x396502['body']['id']){delete _0x396502[_0xfed1('0x57')]['id'];}return db[_0xfed1('0x50')][_0xfed1('0x5d')]({'where':{'id':_0x396502[_0xfed1('0x54')]['id']}})[_0xfed1('0x1f')](handleEntityNotFound(_0x186568,null))[_0xfed1('0x1f')](function(_0x835614){if(_0x835614){_0x396502['body']['SmsAccountId']=_0x835614['id'];return db[_0xfed1('0x62')][_0xfed1('0x56')](_0x396502[_0xfed1('0x57')]);}})[_0xfed1('0x1f')](respondWithResult(_0x186568,null))[_0xfed1('0x2a')](handleError(_0x186568,null));};exports[_0xfed1('0x63')]=function(_0x5f4571,_0x4df045,_0x27302b){var _0x36f8a8={'raw':![],'where':{}};var _0x530b11={};var _0x2d84de={'count':0x0,'rows':[]};return db[_0xfed1('0x50')][_0xfed1('0x64')]({'where':{'id':_0x5f4571['params']['id']}})['then'](handleEntityNotFound(_0x4df045,null))['then'](function(_0x21d264){if(_0x21d264){_0x530b11[_0xfed1('0x42')]=_['keys'](db['Disposition'][_0xfed1('0x3e')]);_0x530b11['query']=_[_0xfed1('0x44')](_0x5f4571[_0xfed1('0x43')]);_0x530b11[_0xfed1('0x45')]=_[_0xfed1('0x46')](_0x530b11[_0xfed1('0x42')],_0x530b11[_0xfed1('0x43')]);_0x36f8a8[_0xfed1('0x47')]=_[_0xfed1('0x46')](_0x530b11[_0xfed1('0x42')],qs[_0xfed1('0x48')](_0x5f4571['query'][_0xfed1('0x48')]));_0x36f8a8[_0xfed1('0x47')]=_0x36f8a8[_0xfed1('0x47')]['length']?_0x36f8a8[_0xfed1('0x47')]:_0x530b11[_0xfed1('0x42')];if(!_0x5f4571['query'][_0xfed1('0x65')](_0xfed1('0x49'))){_0x36f8a8['limit']=qs[_0xfed1('0x30')](_0x5f4571[_0xfed1('0x43')][_0xfed1('0x30')]);_0x36f8a8[_0xfed1('0x2e')]=qs[_0xfed1('0x2e')](_0x5f4571[_0xfed1('0x43')][_0xfed1('0x2e')]);}_0x36f8a8['order']=qs['sort'](_0x5f4571[_0xfed1('0x43')][_0xfed1('0x4b')]);_0x36f8a8[_0xfed1('0x4c')]=qs[_0xfed1('0x45')](_[_0xfed1('0x66')](_0x5f4571[_0xfed1('0x43')],_0x530b11['filters']));_0x36f8a8[_0xfed1('0x4c')][_0xfed1('0x67')]=_0x21d264['id'];if(_0x5f4571[_0xfed1('0x43')][_0xfed1('0x4e')]){_0x36f8a8['where']=_[_0xfed1('0x4d')](_0x36f8a8[_0xfed1('0x4c')],{'$or':_[_0xfed1('0x3d')](_0x36f8a8['attributes'],function(_0x4fd79b){var _0x4b01da={};_0x4b01da[_0x4fd79b]={'$like':'%'+_0x5f4571[_0xfed1('0x43')]['filter']+'%'};return _0x4b01da;})});}_0x36f8a8=_['merge']({},_0x36f8a8,_0x5f4571[_0xfed1('0x4f')]);return db['Disposition'][_0xfed1('0x31')]({'where':_0x36f8a8[_0xfed1('0x4c')]})[_0xfed1('0x1f')](function(_0x30931d){_0x2d84de['count']=_0x30931d;if(_0x5f4571[_0xfed1('0x43')][_0xfed1('0x51')]){_0x36f8a8['include']=[{'all':!![]}];}return db['Disposition']['findAll'](_0x36f8a8);})['then'](function(_0x4ee925){_0x2d84de['rows']=_0x4ee925;return _0x2d84de;});}})[_0xfed1('0x1f')](respondWithFilteredResult(_0x4df045,_0x36f8a8))[_0xfed1('0x2a')](handleError(_0x4df045,null));};exports[_0xfed1('0x68')]=function(_0x577dad,_0x2bccbc,_0x2d6fb2){return db[_0xfed1('0x50')][_0xfed1('0x5d')]({'where':{'id':_0x577dad['params']['id']}})[_0xfed1('0x1f')](handleEntityNotFound(_0x2bccbc,null))[_0xfed1('0x1f')](function(_0x50dd90){if(_0x50dd90){return _0x50dd90[_0xfed1('0x68')](_0x577dad[_0xfed1('0x43')][_0xfed1('0x69')]);}})[_0xfed1('0x1f')](respondWithStatusCode(_0x2bccbc,null))[_0xfed1('0x2a')](handleError(_0x2bccbc,null));};exports[_0xfed1('0x6a')]=function(_0x1206ac,_0x28536e,_0x3743e4){if(_0x1206ac[_0xfed1('0x57')]['id']){delete _0x1206ac[_0xfed1('0x57')]['id'];}return db[_0xfed1('0x50')][_0xfed1('0x5d')]({'where':{'id':_0x1206ac['params']['id']}})[_0xfed1('0x1f')](handleEntityNotFound(_0x28536e,null))[_0xfed1('0x1f')](function(_0x322df5){if(_0x322df5){_0x1206ac[_0xfed1('0x57')][_0xfed1('0x67')]=_0x322df5['id'];return db[_0xfed1('0x6b')][_0xfed1('0x56')](_0x1206ac[_0xfed1('0x57')]);}})[_0xfed1('0x1f')](respondWithResult(_0x28536e,null))[_0xfed1('0x2a')](handleError(_0x28536e,null));};exports[_0xfed1('0x6c')]=function(_0x392c7e,_0xd17478,_0x445640){var _0x5f25b0={'raw':![],'where':{}};var _0x4d77f2={};var _0x3aa35c={'count':0x0,'rows':[]};return db['SmsAccount'][_0xfed1('0x64')]({'where':{'id':_0x392c7e[_0xfed1('0x54')]['id']}})[_0xfed1('0x1f')](handleEntityNotFound(_0xd17478,null))[_0xfed1('0x1f')](function(_0x9a7a95){if(_0x9a7a95){_0x4d77f2[_0xfed1('0x42')]=_['keys'](db[_0xfed1('0x6b')][_0xfed1('0x3e')]);_0x4d77f2[_0xfed1('0x43')]=_[_0xfed1('0x44')](_0x392c7e['query']);_0x4d77f2[_0xfed1('0x45')]=_[_0xfed1('0x46')](_0x4d77f2[_0xfed1('0x42')],_0x4d77f2['query']);_0x5f25b0[_0xfed1('0x47')]=_[_0xfed1('0x46')](_0x4d77f2[_0xfed1('0x42')],qs['fields'](_0x392c7e[_0xfed1('0x43')][_0xfed1('0x48')]));_0x5f25b0[_0xfed1('0x47')]=_0x5f25b0[_0xfed1('0x47')][_0xfed1('0x55')]?_0x5f25b0['attributes']:_0x4d77f2[_0xfed1('0x42')];if(!_0x392c7e[_0xfed1('0x43')][_0xfed1('0x65')](_0xfed1('0x49'))){_0x5f25b0[_0xfed1('0x30')]=qs[_0xfed1('0x30')](_0x392c7e['query'][_0xfed1('0x30')]);_0x5f25b0[_0xfed1('0x2e')]=qs[_0xfed1('0x2e')](_0x392c7e['query']['offset']);}_0x5f25b0[_0xfed1('0x4a')]=qs['sort'](_0x392c7e[_0xfed1('0x43')]['sort']);_0x5f25b0[_0xfed1('0x4c')]=qs[_0xfed1('0x45')](_[_0xfed1('0x66')](_0x392c7e[_0xfed1('0x43')],_0x4d77f2[_0xfed1('0x45')]));_0x5f25b0[_0xfed1('0x4c')]['SmsAccountId']=_0x9a7a95['id'];if(_0x392c7e[_0xfed1('0x43')][_0xfed1('0x4e')]){_0x5f25b0[_0xfed1('0x4c')]=_[_0xfed1('0x4d')](_0x5f25b0['where'],{'$or':_[_0xfed1('0x3d')](_0x5f25b0['attributes'],function(_0x2a5ecd){var _0x29f1ca={};_0x29f1ca[_0x2a5ecd]={'$like':'%'+_0x392c7e[_0xfed1('0x43')][_0xfed1('0x4e')]+'%'};return _0x29f1ca;})});}_0x5f25b0=_[_0xfed1('0x4d')]({},_0x5f25b0,_0x392c7e[_0xfed1('0x4f')]);return db[_0xfed1('0x6b')][_0xfed1('0x31')]({'where':_0x5f25b0[_0xfed1('0x4c')]})[_0xfed1('0x1f')](function(_0x4e5f50){_0x3aa35c[_0xfed1('0x31')]=_0x4e5f50;if(_0x392c7e[_0xfed1('0x43')][_0xfed1('0x51')]){_0x5f25b0[_0xfed1('0x52')]=[{'all':!![]}];}return db[_0xfed1('0x6b')][_0xfed1('0x6d')](_0x5f25b0);})[_0xfed1('0x1f')](function(_0x3ed514){_0x3aa35c['rows']=_0x3ed514;return _0x3aa35c;});}})[_0xfed1('0x1f')](respondWithFilteredResult(_0xd17478,_0x5f25b0))[_0xfed1('0x2a')](handleError(_0xd17478,null));};exports['removeAnswers']=function(_0x45039f,_0x539bfa,_0x32e726){return db[_0xfed1('0x50')][_0xfed1('0x5d')]({'where':{'id':_0x45039f[_0xfed1('0x54')]['id']}})[_0xfed1('0x1f')](handleEntityNotFound(_0x539bfa,null))[_0xfed1('0x1f')](function(_0x1b0f0b){if(_0x1b0f0b){return _0x1b0f0b[_0xfed1('0x6e')](_0x45039f[_0xfed1('0x43')]['ids']);}})[_0xfed1('0x1f')](respondWithStatusCode(_0x539bfa,null))[_0xfed1('0x2a')](handleError(_0x539bfa,null));};exports[_0xfed1('0x6f')]=function(_0x2ece23,_0x4759d7,_0xcea642){var _0x2a5a4d={'channel':_0xfed1('0x70')};var _0x2ccb88=[];var _0x108b5d=[];var _0x20b731={};return db['SmsAccount']['find']({'where':{'id':_0x2ece23[_0xfed1('0x54')]['id']},'include':[{'model':db['SmsApplication'],'as':_0xfed1('0x71')}]})[_0xfed1('0x1f')](handleEntityNotFound(_0x4759d7,null))[_0xfed1('0x1f')](function(_0x141f48){_0x2a5a4d[_0xfed1('0x72')]=_0x141f48;_0x2a5a4d[_0xfed1('0x73')]=_[_0xfed1('0x74')](_0x141f48[_0xfed1('0x71')],[_0xfed1('0x75')],[_0xfed1('0x76')]);if(_0x2a5a4d[_0xfed1('0x72')][_0xfed1('0x71')]){delete _0x2a5a4d[_0xfed1('0x72')][_0xfed1('0x71')];}return db[_0xfed1('0x77')][_0xfed1('0x60')]();})[_0xfed1('0x1f')](function(_0x42c489){if(!_0x42c489){throw new db[(_0xfed1('0x78'))][(_0xfed1('0x79'))](_0xfed1('0x7a'));}_0x2ccb88=_['difference'](_[_0xfed1('0x44')](_0x42c489),[_0xfed1('0x7b'),_0xfed1('0x7c')]);_0x108b5d=_[_0xfed1('0x7d')](_[_0xfed1('0x44')](_0x42c489),[_0xfed1('0x7b'),_0xfed1('0x7c'),'CompanyId',_0xfed1('0x7e')]);_0x2a5a4d[_0xfed1('0x57')]={'mapKey':_0xfed1('0x7f')};if(_0x2a5a4d['account'][_0xfed1('0x40')]){switch(_0x2a5a4d[_0xfed1('0x72')]['type']){case'twilio':_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x80')]=_0x2ece23['body']['From'];_0x2a5a4d['body']['body']=_0x2ece23['body'][_0xfed1('0x81')];_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x82')]=_0x2ece23[_0xfed1('0x57')][_0xfed1('0x83')];break;case'skebby':_0x2a5a4d['body'][_0xfed1('0x80')]='+'+_0x2ece23[_0xfed1('0x57')][_0xfed1('0x84')];_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x57')]=_0x2ece23['body'][_0xfed1('0x85')];break;case _0xfed1('0x86'):_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x80')]=_0x2ece23[_0xfed1('0x57')][_0xfed1('0x80')];_0x2a5a4d[_0xfed1('0x57')]['body']=_0x2ece23[_0xfed1('0x57')][_0xfed1('0x28')];break;case _0xfed1('0x87'):_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x80')]=_0x2ece23[_0xfed1('0x57')]['from'];_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x57')]=_0x2ece23[_0xfed1('0x57')][_0xfed1('0x57')];_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x82')]=_0x2ece23[_0xfed1('0x57')][_0xfed1('0x88')];break;case _0xfed1('0x89'):_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x80')]=_0x2ece23[_0xfed1('0x57')][_0xfed1('0x8a')];_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x57')]=_0x2ece23[_0xfed1('0x57')]['Text'];_0x2a5a4d[_0xfed1('0x57')]['messageId']=_0x2ece23[_0xfed1('0x57')]['MessageUUID'];break;case _0xfed1('0x8b'):_0x2a5a4d['body'][_0xfed1('0x80')]='+'+_0x2ece23[_0xfed1('0x57')][_0xfed1('0x8c')][0x0]['from'];_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x57')]=_0x2ece23[_0xfed1('0x57')][_0xfed1('0x8c')][0x0][_0xfed1('0x85')];_0x2a5a4d[_0xfed1('0x57')]['messageId']=_0x2ece23[_0xfed1('0x57')][_0xfed1('0x8c')][0x0]['messageId'];break;case _0xfed1('0x8d'):_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x80')]=_0x2ece23[_0xfed1('0x57')]['originatingAddress'];_0x2a5a4d[_0xfed1('0x57')]['body']=_0x2ece23[_0xfed1('0x57')][_0xfed1('0x8e')][_0xfed1('0x28')];break;case _0xfed1('0x8f'):_0x2a5a4d['body']['from']=_0x2ece23[_0xfed1('0x57')][_0xfed1('0x90')];_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x57')]=_0x2ece23[_0xfed1('0x57')][_0xfed1('0x85')];_0x2a5a4d['body']['messageId']=_0x2ece23[_0xfed1('0x57')][_0xfed1('0x91')];break;case _0xfed1('0x92'):_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x82')]=_0x2ece23['body'][0x0][_0xfed1('0x28')]['id'];_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x80')]=_0x2ece23['body'][0x0][_0xfed1('0x28')][_0xfed1('0x80')];_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x57')]=_0x2ece23[_0xfed1('0x57')][0x0][_0xfed1('0x28')][_0xfed1('0x85')];break;case _0xfed1('0x93'):_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x80')]=_0x2ece23[_0xfed1('0x57')][_0xfed1('0x80')];_0x2a5a4d[_0xfed1('0x57')]['body']=_0x2ece23['body'][_0xfed1('0x28')];_0x2a5a4d[_0xfed1('0x57')]['messageId']=_0x2ece23[_0xfed1('0x57')][_0xfed1('0x94')];break;}}if(_0x2a5a4d[_0xfed1('0x57')]['id']){delete _0x2a5a4d[_0xfed1('0x57')]['id'];}if(_[_0xfed1('0x95')](_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x80')])){throw new db[(_0xfed1('0x78'))][(_0xfed1('0x79'))]('from\x20is\x20mandatory');}if(_[_0xfed1('0x95')](_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x57')])||_0x2a5a4d['body'][_0xfed1('0x57')]===''){throw new db[(_0xfed1('0x78'))][(_0xfed1('0x79'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0xfed1('0x95')](_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x96')])){throw new db[(_0xfed1('0x78'))]['ValidationError']('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x108b5d);}if(!_[_0xfed1('0x97')](_0x108b5d,_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x96')])){throw new db[(_0xfed1('0x78'))][(_0xfed1('0x79'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x108b5d);}_0x20b731[_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x96')]]=_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x80')];return db[_0xfed1('0x98')][_0xfed1('0x5d')]({'where':{'id':_0x2a5a4d[_0xfed1('0x72')][_0xfed1('0x7e')]},'include':[{'model':db[_0xfed1('0x77')],'as':_0xfed1('0x99'),'where':_0x20b731,'limit':0x1,'order':[['updatedAt',_0xfed1('0x9a')]]}]});})[_0xfed1('0x1f')](handleEntityNotFound(_0x4759d7,null))['then'](function(_0x436b7c){if(_0x436b7c){_0x2a5a4d[_0xfed1('0x9b')]=_['omit'](_0x436b7c,[_0xfed1('0x99')]);if(_0x436b7c['Contacts'][_0xfed1('0x55')]){return _0x436b7c[_0xfed1('0x99')][0x0];}var _0x31b752=_[_0xfed1('0x17')](_0x2a5a4d[_0xfed1('0x57')],{'firstName':_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x80')],'ListId':_0x436b7c['id']});_0x31b752[_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x96')]]=_0x2a5a4d[_0xfed1('0x57')]['from'];return db[_0xfed1('0x77')][_0xfed1('0x56')](_0x31b752,{'fields':_0x2ccb88,'raw':!![]});}})[_0xfed1('0x1f')](handleEntityNotFound(_0x4759d7,null))['then'](function(_0x46f079){if(_0x46f079){_0x2a5a4d[_0xfed1('0x9c')]=_0x46f079;var _0x1dbf65={'ContactId':_0x46f079['id'],'phone':_0x2a5a4d[_0xfed1('0x57')]['from'],'SmsAccountId':_0x2ece23['params']['id']};var _0x3fcdec={'ContactId':_0x46f079['id'],'SmsAccountId':_0x2ece23[_0xfed1('0x54')]['id'],'closed':![]};return db[_0xfed1('0x9d')]['find']({'where':_0x3fcdec})[_0xfed1('0x1f')](function(_0x4276bf){if(_0x4276bf){return[_0x4276bf,![]];}return db[_0xfed1('0x9d')]['create'](_0x1dbf65)['then'](function(_0x23b47c){return[_0x23b47c,!![]];});});}})[_0xfed1('0x9e')](function(_0x2186d9,_0x59d5dc){_0x2a5a4d[_0xfed1('0x9f')]=_0x2186d9[_0xfed1('0x59')]({'plain':!![]});_0x2a5a4d[_0xfed1('0x9f')]['created']=![];if(_0x59d5dc){if(_0x2a5a4d[_0xfed1('0x72')]['autoclose']){_0x2a5a4d[_0xfed1('0x73')]['push']({'id':0x0,'priority':_0x2a5a4d[_0xfed1('0x73')][_0xfed1('0x55')]+0x1,'app':_0xfed1('0xa0'),'appdata':_0xfed1('0xa1'),'interval':'*,*,*,*'});}_0x2a5a4d['interaction']['created']=!![];}return db[_0xfed1('0xa2')][_0xfed1('0x56')]({'phone':_0x2a5a4d[_0xfed1('0x57')]['from'],'messageId':_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x82')],'body':_0x2a5a4d[_0xfed1('0x57')]['body'],'SmsAccountId':_0x2ece23[_0xfed1('0x54')]['id'],'SmsInteractionId':_0x2186d9['id'],'direction':'in','ContactId':_0x2186d9[_0xfed1('0xa3')],'AttachmentId':_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0xa4')]});})[_0xfed1('0x1f')](function(_0x491a6c){_0x2a5a4d[_0xfed1('0x28')]=_0x491a6c;if(_0x2a5a4d[_0xfed1('0x9f')][_0xfed1('0xa5')]){return db[_0xfed1('0xa6')][_0xfed1('0x5d')]({'attributes':['id',_0xfed1('0x39')],'where':{'id':_0x2a5a4d['interaction'][_0xfed1('0xa5')]}})['then'](function(_0x2c394a){if(_0x2c394a){_0x2a5a4d[_0xfed1('0x73')]['unshift']({'id':0x0,'priority':0x0,'app':_0xfed1('0xa7'),'appdata':_0x2c394a['name']+','+(_0x2a5a4d[_0xfed1('0x72')][_0xfed1('0xa8')]||0xa),'interval':_0xfed1('0xa9')});}return respondWithRpcPromise(_0xfed1('0xaa'),_0xfed1('0xab'),_0x2a5a4d);});}return respondWithRpcPromise(_0xfed1('0xaa'),_0xfed1('0xab'),_0x2a5a4d);})['then'](function(_0x5998e2){if(_0x5998e2){var _0x5b753d=0xc8;var _0x563c3e=_0xfed1('0xac');logger['info']('SmsAccount,\x20%s,\x20%s,\x20%s',_0x563c3e,_0x5b753d,_0xfed1('0xad'));logger[_0xfed1('0x22')](_0xfed1('0xae'),_0x563c3e,_0x5b753d,'entity\x20found',JSON[_0xfed1('0x24')](_0x5998e2));if(_0x2a5a4d[_0xfed1('0x72')][_0xfed1('0x40')]==='twilio'){return _0x4759d7[_0xfed1('0x2b')](_0x5b753d)[_0xfed1('0xaf')](_0xfed1('0xb0'),_0xfed1('0xb1'))[_0xfed1('0xb2')](_0xfed1('0xb3'));}else{return _0x4759d7[_0xfed1('0x2b')](_0x5b753d)[_0xfed1('0x2d')](_0x5998e2);}}})['catch'](handleError(_0x4759d7,null));};exports[_0xfed1('0xb4')]=function(_0x24ef21,_0x3942d4){var _0x14e046=_0x24ef21[_0xfed1('0x54')]['id'];var _0x1fd932=_0x24ef21[_0xfed1('0x57')];var _0x6886b4=0xc8;var _0x58b4a3=null;return db[_0xfed1('0xb5')][_0xfed1('0xb6')]({'isolationLevel':db[_0xfed1('0xb5')][_0xfed1('0xb7')]['ISOLATION_LEVELS'][_0xfed1('0xb8')]},function(_0x3e060c){return db[_0xfed1('0x50')]['findOne']({'where':{'id':_0x14e046},'transaction':_0x3e060c})[_0xfed1('0x1f')](function(_0x704716){if(_0x704716){return db[_0xfed1('0xb9')][_0xfed1('0x38')]({'where':{'SmsAccountId':_0x14e046},'transaction':_0x3e060c})['then'](function(){var _0x182ad=_[_0xfed1('0x3d')](_0x1fd932,function(_0x3570c9){_0x3570c9['SmsAccountId']=_0x14e046;return _0x3570c9;});return db[_0xfed1('0xb9')][_0xfed1('0xba')](_0x182ad,{'transaction':_0x3e060c});});}else{_0x6886b4=0x194;_0x58b4a3=[];}});})[_0xfed1('0x1f')](function(){if(_0x6886b4!==0x194){return db[_0xfed1('0xb9')][_0xfed1('0xbb')]({'where':{'SmsAccountId':_0x14e046},'order':_0xfed1('0x75')})[_0xfed1('0x1f')](function(_0x28e635){_0x58b4a3=_0x28e635;});}})[_0xfed1('0x2a')](function(_0x364011){_0x6886b4=0x1f4;logger['error'](_0x364011[_0xfed1('0xbc')]);if(_0x364011['name']){delete _0x364011[_0xfed1('0x39')];}_0x58b4a3=_0x364011;})[_0xfed1('0xbd')](function(){if(_0x58b4a3===null){_0x3942d4[_0xfed1('0xbe')](_0x6886b4);}else{if(_0x6886b4===0x1f4){_0x3942d4[_0xfed1('0x2b')](_0x6886b4)['send'](_0x58b4a3);}else{_0x3942d4[_0xfed1('0x2b')](_0x6886b4)['json'](_0x58b4a3);}}});};exports[_0xfed1('0xbf')]=function(_0x1193f5,_0x16dd8e,_0x56a611){var _0x415cc6={};var _0x4cf79e={};var _0x1f3574;var _0x512fe6;return db[_0xfed1('0x50')][_0xfed1('0x64')]({'where':{'id':_0x1193f5[_0xfed1('0x54')]['id']}})[_0xfed1('0x1f')](handleEntityNotFound(_0x16dd8e,null))[_0xfed1('0x1f')](function(_0x491e36){if(_0x491e36){_0x1f3574=_0x491e36;_0x4cf79e['model']=_['keys'](db[_0xfed1('0xb9')][_0xfed1('0x3e')]);_0x4cf79e['query']=_[_0xfed1('0x44')](_0x1193f5[_0xfed1('0x43')]);_0x4cf79e['filters']=_[_0xfed1('0x46')](_0x4cf79e[_0xfed1('0x42')],_0x4cf79e[_0xfed1('0x43')]);_0x415cc6['attributes']=_[_0xfed1('0x46')](_0x4cf79e['model'],qs[_0xfed1('0x48')](_0x1193f5[_0xfed1('0x43')]['fields']));_0x415cc6[_0xfed1('0x47')]=_0x415cc6[_0xfed1('0x47')][_0xfed1('0x55')]?_0x415cc6[_0xfed1('0x47')]:_0x4cf79e['model'];_0x415cc6[_0xfed1('0x4a')]=qs['sort'](_0x1193f5[_0xfed1('0x43')][_0xfed1('0x4b')]);_0x415cc6[_0xfed1('0x4c')]=qs[_0xfed1('0x45')](_[_0xfed1('0x66')](_0x1193f5['query'],_0x4cf79e[_0xfed1('0x45')]));if(_0x1193f5[_0xfed1('0x43')][_0xfed1('0x4e')]){_0x415cc6[_0xfed1('0x4c')]=_[_0xfed1('0x4d')](_0x415cc6['where'],{'$or':_['map'](_0x415cc6[_0xfed1('0x47')],function(_0x1c2781){var _0x2a2c52={};_0x2a2c52[_0x1c2781]={'$like':'%'+_0x1193f5['query'][_0xfed1('0x4e')]+'%'};return _0x2a2c52;})});}_0x415cc6=_[_0xfed1('0x4d')]({},_0x415cc6,_0x1193f5[_0xfed1('0x4f')]);return _0x1f3574[_0xfed1('0xbf')](_0x415cc6);}})[_0xfed1('0x1f')](function(_0x1c36cd){if(_0x1c36cd){_0x512fe6=_0x1c36cd[_0xfed1('0x55')];if(!_0x1193f5[_0xfed1('0x43')]['hasOwnProperty'](_0xfed1('0x49'))){_0x415cc6[_0xfed1('0x30')]=qs[_0xfed1('0x30')](_0x1193f5[_0xfed1('0x43')][_0xfed1('0x30')]);_0x415cc6[_0xfed1('0x2e')]=qs[_0xfed1('0x2e')](_0x1193f5[_0xfed1('0x43')]['offset']);}return _0x1f3574[_0xfed1('0xbf')](_0x415cc6);}})[_0xfed1('0x1f')](function(_0x5ee501){if(_0x5ee501){return _0x5ee501?{'count':_0x512fe6,'rows':_0x5ee501}:null;}})[_0xfed1('0x1f')](respondWithResult(_0x16dd8e,null))['catch'](handleError(_0x16dd8e,null));};exports[_0xfed1('0xc0')]=function(_0x4a2d24,_0x1d9779,_0x1df274){var _0x4da59f={'raw':![],'where':{}};var _0x2bd039={};var _0x42707b={'count':0x0,'rows':[]};return db[_0xfed1('0x50')][_0xfed1('0x64')]({'where':{'id':_0x4a2d24['params']['id']}})['then'](handleEntityNotFound(_0x1d9779,null))[_0xfed1('0x1f')](function(_0x15a8e4){if(_0x15a8e4){_0x2bd039['model']=_['keys'](db[_0xfed1('0x9d')][_0xfed1('0x3e')]);_0x2bd039[_0xfed1('0x43')]=_[_0xfed1('0x44')](_0x4a2d24[_0xfed1('0x43')]);_0x2bd039[_0xfed1('0x45')]=_[_0xfed1('0x46')](_0x2bd039['model'],_0x2bd039['query']);_0x4da59f[_0xfed1('0x47')]=_[_0xfed1('0x46')](_0x2bd039[_0xfed1('0x42')],qs[_0xfed1('0x48')](_0x4a2d24[_0xfed1('0x43')]['fields']));_0x4da59f[_0xfed1('0x47')]=_0x4da59f[_0xfed1('0x47')][_0xfed1('0x55')]?_0x4da59f[_0xfed1('0x47')]:_0x2bd039[_0xfed1('0x42')];if(!_0x4a2d24[_0xfed1('0x43')][_0xfed1('0x65')]('nolimit')){_0x4da59f[_0xfed1('0x30')]=qs[_0xfed1('0x30')](_0x4a2d24[_0xfed1('0x43')][_0xfed1('0x30')]);_0x4da59f['offset']=qs[_0xfed1('0x2e')](_0x4a2d24[_0xfed1('0x43')][_0xfed1('0x2e')]);}_0x4da59f[_0xfed1('0x4a')]=qs[_0xfed1('0x4b')](_0x4a2d24['query'][_0xfed1('0x4b')]);_0x4da59f[_0xfed1('0x4c')]=qs[_0xfed1('0x45')](_[_0xfed1('0x66')](_0x4a2d24[_0xfed1('0x43')],_0x2bd039['filters']));_0x4da59f['where'][_0xfed1('0x67')]=_0x15a8e4['id'];if(_0x4a2d24[_0xfed1('0x43')][_0xfed1('0x4e')]){_0x4da59f[_0xfed1('0x4c')]=_['merge'](_0x4da59f[_0xfed1('0x4c')],{'$or':_[_0xfed1('0x3d')](_0x4da59f[_0xfed1('0x47')],function(_0x489ce1){var _0x4ffd69={};_0x4ffd69[_0x489ce1]={'$like':'%'+_0x4a2d24[_0xfed1('0x43')][_0xfed1('0x4e')]+'%'};return _0x4ffd69;})});}_0x4da59f=_[_0xfed1('0x4d')]({},_0x4da59f,_0x4a2d24[_0xfed1('0x4f')]);return db['SmsInteraction'][_0xfed1('0x31')]({'where':_0x4da59f[_0xfed1('0x4c')]})[_0xfed1('0x1f')](function(_0x362fb7){_0x42707b['count']=_0x362fb7;if(_0x4a2d24[_0xfed1('0x43')][_0xfed1('0x51')]){_0x4da59f[_0xfed1('0x52')]=[{'model':db[_0xfed1('0x77')],'as':_0xfed1('0xc1'),'required':![]},{'model':db[_0xfed1('0xa6')],'as':_0xfed1('0xc2'),'attributes':['name',_0xfed1('0xc3'),_0xfed1('0xc4')],'required':![]},{'model':db[_0xfed1('0xc5')],'as':_0xfed1('0xc6'),'attributes':['id',_0xfed1('0x39'),'color'],'where':_0x4a2d24[_0xfed1('0x43')][_0xfed1('0xc7')]?{'id':_0x4a2d24[_0xfed1('0x43')][_0xfed1('0xc7')]}:undefined,'required':_0x4a2d24[_0xfed1('0x43')]['tag']?!![]:![]}];}return db[_0xfed1('0x9d')][_0xfed1('0x6d')](_0x4da59f);})[_0xfed1('0x1f')](function(_0x5387b2){_0x42707b[_0xfed1('0x53')]=_0x5387b2;return _0x42707b;});}})[_0xfed1('0x1f')](respondWithFilteredResult(_0x1d9779,_0x4da59f))['catch'](handleError(_0x1d9779,null));};exports[_0xfed1('0xb2')]=function(_0x160dd3,_0xdb2e11,_0x2f5b10){var _0x7a8499,_0x4b1676,_0x4cee47;if(_['isNil'](_0x160dd3[_0xfed1('0x57')]['body'])||_0x160dd3[_0xfed1('0x57')][_0xfed1('0x57')]===''){throw new db[(_0xfed1('0x78'))]['ValidationError'](_0xfed1('0xc8'));}if(_[_0xfed1('0x95')](_0x160dd3[_0xfed1('0x57')]['to'])){throw new db[(_0xfed1('0x78'))]['ValidationError'](_0xfed1('0xc9'));}_0x7a8499=_0x160dd3[_0xfed1('0x57')]['to'];return db[_0xfed1('0x50')][_0xfed1('0x5d')]({'where':{'id':_0x160dd3[_0xfed1('0x54')]['id']},'include':[{'model':db[_0xfed1('0x98')],'as':_0xfed1('0xca'),'include':[{'model':db[_0xfed1('0x77')],'as':_0xfed1('0x99'),'where':{'mobile':_0x7a8499},'limit':0x1,'order':[[_0xfed1('0x7c'),_0xfed1('0x9a')]]}]}]})[_0xfed1('0x1f')](handleEntityNotFound(_0xdb2e11,null))[_0xfed1('0x1f')](function(_0x31ed2b){if(_0x31ed2b&&_0x31ed2b[_0xfed1('0xca')]){_0x4b1676=_0x31ed2b['get']({'plain':!![]});if(_0x4b1676[_0xfed1('0xca')]&&_0x4b1676['List']['Contacts'][_0xfed1('0x55')]){return _0x4b1676[_0xfed1('0xca')][_0xfed1('0x99')][0x0];}return db['CmContact']['create'](_[_0xfed1('0x17')](_0x160dd3[_0xfed1('0x57')],{'firstName':_0x7a8499,'mobile':_0x7a8499,'phone':_0x7a8499,'ListId':_0x4b1676[_0xfed1('0x7e')]}));}})[_0xfed1('0x1f')](handleEntityNotFound(_0xdb2e11,null))[_0xfed1('0x1f')](function(_0x3fc069){if(_0x3fc069){_0x4cee47=_0x3fc069;return db[_0xfed1('0x9d')][_0xfed1('0x5d')]({'where':{'ContactId':_0x4cee47['id'],'closed':![],'SmsAccountId':_0x4b1676['id']}})[_0xfed1('0x1f')](function(_0xa05cf7){if(_0xa05cf7){return[_0xa05cf7,![]];}return db[_0xfed1('0x9d')][_0xfed1('0x56')]({'UserId':_0x160dd3['user']['id'],'ContactId':_0x4cee47['id'],'SmsAccountId':_0x4b1676['id'],'phone':_0x7a8499,'firstMsgDirection':_0xfed1('0xcb'),'Messages':[_['merge'](_0x160dd3[_0xfed1('0x57')],{'read':![],'body':_0x160dd3['body'][_0xfed1('0x57')],'phone':_0x7a8499,'SmsAccountId':_0x4b1676['id'],'UserId':_0x160dd3[_0xfed1('0x58')]['id'],'ContactId':_0x4cee47['id']})]},{'include':[{'model':db['SmsMessage'],'as':'Messages'}]})[_0xfed1('0x1f')](function(_0x145839){return[_0x145839,!![]];});});}})[_0xfed1('0x9e')](function(_0x2c1a18,_0x4dccf1){if(_0x4dccf1){return _0x2c1a18;}return db[_0xfed1('0xa2')][_0xfed1('0x56')](_[_0xfed1('0x4d')](_0x160dd3['body'],{'read':![],'body':_0x160dd3['body']['body'],'phone':_0x7a8499,'SmsAccountId':_0x4b1676['id'],'SmsInteractionId':_0x2c1a18['id'],'UserId':_0x160dd3[_0xfed1('0x58')]['id'],'ContactId':_0x4cee47['id']}))[_0xfed1('0x1f')](function(_0x40dff3){_0x2c1a18['dataValues'][_0xfed1('0xcc')]=[];_0x2c1a18[_0xfed1('0xcd')][_0xfed1('0xcc')][_0xfed1('0xce')](_0x40dff3['dataValues']);return _0x2c1a18;});})[_0xfed1('0x1f')](respondWithResult(_0xdb2e11,null))['catch'](handleError(_0xdb2e11,null));};exports[_0xfed1('0x2b')]=function(_0x315f37,_0x5ab079,_0x58cd8a){if(_0x315f37[_0xfed1('0x57')]['id']){delete _0x315f37[_0xfed1('0x57')]['id'];}var _0x54352f,_0x25df87,_0x5ef28e;return db[_0xfed1('0x50')]['find']({'where':{'id':_0x315f37['params']['id']}})[_0xfed1('0x1f')](handleEntityNotFound(_0x5ab079,null))[_0xfed1('0x1f')](function(_0x909e04){if(_0x909e04){_0x5ef28e=_0x909e04;logger['debug'](_0xfed1('0x23'),'status','received\x20delivery\x20report\x20from',_0x909e04[_0xfed1('0x40')],util[_0xfed1('0xcf')](_0x315f37[_0xfed1('0x57')],{'showHidden':![],'depth':null}));switch(_0x909e04[_0xfed1('0x40')]){case _0xfed1('0xd0'):if(_0x315f37['body']['skebby_dispatch_id']&&_0x315f37['body'][_0xfed1('0x2b')]){_0x25df87=_0x315f37[_0xfed1('0x57')][_0xfed1('0x2b')];return db[_0xfed1('0xa2')][_0xfed1('0x5d')]({'where':{'messageId':_0x315f37['body'][_0xfed1('0xd1')]}});}break;case _0xfed1('0x86'):if(_0x315f37[_0xfed1('0x57')][_0xfed1('0xd2')]&&_0x315f37[_0xfed1('0x57')]['statusInt']){_0x25df87=_0x315f37[_0xfed1('0x57')][_0xfed1('0xd3')];return db[_0xfed1('0xa2')][_0xfed1('0x5d')]({'where':{'messageId':_0x315f37[_0xfed1('0x57')][_0xfed1('0xd2')]}});}break;case _0xfed1('0x87'):if(_0x315f37[_0xfed1('0x57')][_0xfed1('0x88')]&&_0x315f37['body'][_0xfed1('0xd4')]){_0x25df87=_0x315f37[_0xfed1('0x57')][_0xfed1('0xd4')];return db[_0xfed1('0xa2')][_0xfed1('0x5d')]({'where':{'messageId':_0x315f37['body'][_0xfed1('0x88')]}});}break;case _0xfed1('0x8b'):var _0x374b7c=_0x315f37[_0xfed1('0x57')][_0xfed1('0x8c')][0x0];if(_0x374b7c[_0xfed1('0x82')]&&_0x374b7c['status'][_0xfed1('0xd5')]===_0xfed1('0xd6')){_0x25df87=_0x374b7c[_0xfed1('0x2b')][_0xfed1('0xd5')];return db[_0xfed1('0xa2')][_0xfed1('0x5d')]({'where':{'messageId':_0x374b7c[_0xfed1('0x82')]}});}break;case _0xfed1('0x8f'):if(_0x315f37[_0xfed1('0x57')][_0xfed1('0x82')]&&_0x315f37[_0xfed1('0x57')][_0xfed1('0x2b')]){_0x25df87=_0x315f37[_0xfed1('0x57')][_0xfed1('0x2b')];return db['SmsMessage'][_0xfed1('0x5d')]({'where':{'messageId':_0x315f37[_0xfed1('0x57')][_0xfed1('0x82')]}});}break;case'bandwidth':if(_0x315f37[_0xfed1('0x57')][0x0][_0xfed1('0x28')]['id']){_0x25df87=_0x315f37['body'][0x0]['type'];return db['SmsMessage'][_0xfed1('0x5d')]({'where':{'messageId':_0x315f37[_0xfed1('0x57')][0x0]['message']['id']}});}break;case _0xfed1('0x93'):if(_0x315f37[_0xfed1('0x57')][_0xfed1('0xd7')]&&_0x315f37['body'][_0xfed1('0x2b')]){_0x25df87=_0x315f37['body'][_0xfed1('0x2b')];return db[_0xfed1('0xa2')][_0xfed1('0x5d')]({'where':{'messageId':_0x315f37[_0xfed1('0x57')][_0xfed1('0xd7')]}});}break;}}})['then'](handleEntityNotFound(_0x5ab079,null))[_0xfed1('0x1f')](function(_0x536578){if(_0x536578){_0x54352f=_0x536578;switch(_0x5ef28e[_0xfed1('0x40')]){case _0xfed1('0xd0'):if(_0x25df87===_0xfed1('0xd6')){return _0x54352f['update']({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s',_0xfed1('0x2b'),_0xfed1('0xd0'),util[_0xfed1('0xcf')](_0x315f37[_0xfed1('0x57')],{'showHidden':![],'depth':null}));}break;case'connectel':if(_0x25df87==='1'){return _0x54352f[_0xfed1('0x36')]({'read':!![]});}else{logger[_0xfed1('0x27')](_0xfed1('0x23'),_0xfed1('0x2b'),_0xfed1('0xd0'),util['inspect'](_0x315f37[_0xfed1('0x57')],{'showHidden':![],'depth':null}));}break;case _0xfed1('0x87'):if(!_0x315f37[_0xfed1('0x57')][_0xfed1('0xd8')]&&_0x25df87>=0xc8&&_0x25df87<=0xce){return _0x54352f[_0xfed1('0x36')]({'read':!![]});}else{logger[_0xfed1('0x27')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xfed1('0x2b'),_0xfed1('0x87'),util['inspect'](_0x315f37['body'],{'showHidden':![],'depth':null}));}break;case _0xfed1('0x8b'):var _0x441014=_0x315f37[_0xfed1('0x57')]['results'][0x0];if(_0x441014[_0xfed1('0x2b')][_0xfed1('0xd5')]==='DELIVERED'){return _0x54352f['update']({'read':!![]});}else{logger[_0xfed1('0x27')](_0xfed1('0x23'),_0xfed1('0x2b'),_0xfed1('0x8b'),util[_0xfed1('0xcf')](_0x315f37['body'],{'showHidden':![],'depth':null}));}break;case'clickatell':if(_0x25df87==_0xfed1('0xd9')||_0x25df87==_0xfed1('0xda')){return _0x54352f[_0xfed1('0x36')]({'read':!![]});}else{logger[_0xfed1('0x27')](_0xfed1('0x23'),_0xfed1('0x2b'),_0xfed1('0x8f'),util['inspect'](_0x315f37[_0xfed1('0x57')],{'showHidden':![],'depth':null}));}break;case _0xfed1('0x92'):if(_0x25df87=='message-delivered'){return _0x54352f[_0xfed1('0x36')]({'read':!![]});}else{logger[_0xfed1('0x27')](_0xfed1('0x23'),_0xfed1('0x2b'),'bandwidth',util[_0xfed1('0xcf')](_0x315f37['body'],{'showHidden':![],'depth':null}));}break;case'intelepeer':if(_0x25df87===_0xfed1('0xdb')||_0x25df87===_0xfed1('0xdc')){return _0x54352f[_0xfed1('0x36')]({'read':!![]});}else{logger[_0xfed1('0x27')](_0xfed1('0x23'),_0xfed1('0x2b'),_0xfed1('0x93'),util['inspect'](_0x315f37['body'],{'showHidden':![],'depth':null}));}break;}return _0x54352f;}})[_0xfed1('0x1f')](respondWithResult(_0x5ab079,null))['catch'](handleError(_0x5ab079,null));};exports[_0xfed1('0xdd')]=function(_0x2ab30a,_0xf2a76c,_0x4fcc5f){var _0x270510,_0x230e31,_0x5dd05c;return db[_0xfed1('0x50')][_0xfed1('0x5d')]({'where':{'id':_0x2ab30a[_0xfed1('0x54')]['id']}})[_0xfed1('0x1f')](handleEntityNotFound(_0xf2a76c,null))['then'](function(_0x48c21f){if(_0x48c21f){_0x5dd05c=_0x48c21f;logger[_0xfed1('0x22')](_0xfed1('0x23'),_0xfed1('0x2b'),_0xfed1('0xde'),_0x48c21f[_0xfed1('0x40')],util[_0xfed1('0xcf')](_0x2ab30a['query'],{'showHidden':![],'depth':null}));switch(_0x48c21f[_0xfed1('0x40')]){case'csc':if(_0x2ab30a[_0xfed1('0x43')]['message-id']&&_0x2ab30a['query']['state']){_0x230e31=_0x2ab30a['query'][_0xfed1('0xdf')];return db[_0xfed1('0xa2')][_0xfed1('0x5d')]({'where':{'messageId':_0x2ab30a[_0xfed1('0x43')][_0xfed1('0xe0')]}});}break;}}})['then'](handleEntityNotFound(_0xf2a76c,null))[_0xfed1('0x1f')](function(_0x45a088){if(_0x45a088){_0x270510=_0x45a088;switch(_0x5dd05c['type']){case _0xfed1('0x8d'):if(_0x230e31==='2'||_0x230e31==='6'){return _0x270510[_0xfed1('0x36')]({'read':!![]});}else{logger['error'](_0xfed1('0x23'),_0xfed1('0x2b'),_0xfed1('0x8d'),util[_0xfed1('0xcf')](_0x2ab30a[_0xfed1('0x43')],{'showHidden':![],'depth':null}));};break;}return _0x270510;}})['then'](respondWithResult(_0xf2a76c,null))[_0xfed1('0x2a')](handleError(_0xf2a76c,null));};exports[_0xfed1('0xe1')]=function(_0x44d73d,_0x700f5d,_0x228ca6){return db[_0xfed1('0x50')]['find']({'where':{'id':_0x44d73d[_0xfed1('0x54')]['id']}})['then'](handleEntityNotFound(_0x700f5d,null))['then'](function(_0x318053){if(_0x318053){return _0x318053[_0xfed1('0xe1')](_0x44d73d['body']['ids'],_[_0xfed1('0xe2')](_0x44d73d['body'],[_0xfed1('0x69'),'id'])||{})[_0xfed1('0x9e')](function(_0x463eaa){for(var _0x3fdde4=0x0;_0x3fdde4<_0x44d73d[_0xfed1('0x57')][_0xfed1('0x69')][_0xfed1('0x55')];_0x3fdde4+=0x1){socket[_0xfed1('0xe3')](_0xfed1('0xe4'),{'UserId':Number(_0x44d73d[_0xfed1('0x57')][_0xfed1('0x69')][_0x3fdde4]),'SmsAccountId':Number(_0x44d73d[_0xfed1('0x54')]['id'])});}return _0x463eaa;});}})[_0xfed1('0x1f')](respondWithResult(_0x700f5d,null))[_0xfed1('0x2a')](handleError(_0x700f5d,null));};exports['removeAgents']=function(_0x4cbc96,_0x399f35,_0x5bd480){return db[_0xfed1('0x50')][_0xfed1('0x5d')]({'where':{'id':_0x4cbc96[_0xfed1('0x54')]['id']}})[_0xfed1('0x1f')](handleEntityNotFound(_0x399f35,null))[_0xfed1('0x1f')](function(_0x3a8ffa){if(_0x3a8ffa){return _0x3a8ffa[_0xfed1('0xe5')](_0x4cbc96['query'][_0xfed1('0x69')])['then'](function(){if(_[_0xfed1('0xe6')](_0x4cbc96[_0xfed1('0x43')][_0xfed1('0x69')])){for(var _0x285c7c=0x0;_0x285c7c<_0x4cbc96[_0xfed1('0x43')]['ids'][_0xfed1('0x55')];_0x285c7c+=0x1){socket['emit']('userSmsAccount:remove',{'UserId':Number(_0x4cbc96[_0xfed1('0x43')]['ids'][_0x285c7c]),'SmsAccountId':Number(_0x4cbc96['params']['id'])});}}else{socket['emit'](_0xfed1('0xe7'),{'UserId':Number(_0x4cbc96['query'][_0xfed1('0x69')]),'SmsAccountId':Number(_0x4cbc96[_0xfed1('0x54')]['id'])});}});}})[_0xfed1('0x1f')](respondWithStatusCode(_0x399f35,null))[_0xfed1('0x2a')](handleError(_0x399f35,null));};exports[_0xfed1('0xe8')]=function(_0x122c51,_0x18ad15,_0x3d9ef4){var _0x897c8c={};var _0x2f80fa={};var _0x2bd964;var _0x5216a2;return db[_0xfed1('0x50')]['findOne']({'where':{'id':_0x122c51[_0xfed1('0x54')]['id']}})[_0xfed1('0x1f')](handleEntityNotFound(_0x18ad15,null))[_0xfed1('0x1f')](function(_0x2e17e8){if(_0x2e17e8){_0x2bd964=_0x2e17e8;_0x2f80fa[_0xfed1('0x42')]=_[_0xfed1('0x44')](db[_0xfed1('0xa6')][_0xfed1('0x3e')]);_0x2f80fa[_0xfed1('0x43')]=_[_0xfed1('0x44')](_0x122c51[_0xfed1('0x43')]);_0x2f80fa[_0xfed1('0x45')]=_[_0xfed1('0x46')](_0x2f80fa[_0xfed1('0x42')],_0x2f80fa[_0xfed1('0x43')]);_0x897c8c['attributes']=_[_0xfed1('0x46')](_0x2f80fa['model'],qs[_0xfed1('0x48')](_0x122c51[_0xfed1('0x43')]['fields']));_0x897c8c[_0xfed1('0x47')]=_0x897c8c[_0xfed1('0x47')][_0xfed1('0x55')]?_0x897c8c[_0xfed1('0x47')]:_0x2f80fa['model'];_0x897c8c[_0xfed1('0x4a')]=qs[_0xfed1('0x4b')](_0x122c51['query'][_0xfed1('0x4b')]);_0x897c8c['where']=qs[_0xfed1('0x45')](_[_0xfed1('0x66')](_0x122c51[_0xfed1('0x43')],_0x2f80fa[_0xfed1('0x45')]));if(_0x122c51[_0xfed1('0x43')]['filter']){_0x897c8c[_0xfed1('0x4c')]=_[_0xfed1('0x4d')](_0x897c8c[_0xfed1('0x4c')],{'$or':_[_0xfed1('0x3d')](_0x897c8c['attributes'],function(_0x251791){var _0x22205e={};_0x22205e[_0x251791]={'$like':'%'+_0x122c51[_0xfed1('0x43')][_0xfed1('0x4e')]+'%'};return _0x22205e;})});}_0x897c8c=_[_0xfed1('0x4d')]({},_0x897c8c,_0x122c51[_0xfed1('0x4f')]);return _0x2bd964[_0xfed1('0xe8')](_0x897c8c);}})[_0xfed1('0x1f')](function(_0x38d690){if(_0x38d690){_0x5216a2=_0x38d690[_0xfed1('0x55')];if(!_0x122c51[_0xfed1('0x43')][_0xfed1('0x65')]('nolimit')){_0x897c8c[_0xfed1('0x30')]=qs[_0xfed1('0x30')](_0x122c51['query'][_0xfed1('0x30')]);_0x897c8c[_0xfed1('0x2e')]=qs[_0xfed1('0x2e')](_0x122c51[_0xfed1('0x43')][_0xfed1('0x2e')]);}return _0x2bd964[_0xfed1('0xe8')](_0x897c8c);}})[_0xfed1('0x1f')](function(_0x4caca1){if(_0x4caca1){return _0x4caca1?{'count':_0x5216a2,'rows':_0x4caca1}:null;}})[_0xfed1('0x1f')](respondWithResult(_0x18ad15,null))[_0xfed1('0x2a')](handleError(_0x18ad15,null));};
\ No newline at end of file
+var _0x3271=['dataValues','received\x20delivery\x20report\x20from','inspect','skebby_dispatch_id','statusInt','requestid','status_code','groupName','bandwidth','redif','DELIVERED','error_code','DELIVERED_TO_GATEWAY','RECEIVED_BY_RECIPIENT','message-delivered','DELIVRD','ACCEPTD','statusGet','message-id','state','addAgents','emit','isArray','userSmsAccount:remove','getAgents','User','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./smsAccount.socket','register','jayson/promise','client','http','request','then','info','SmsAccount,\x20%s,\x20%s','SmsAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','reject','save','update','SmsAccounts','destroy','name','send','index','Pause','mandatoryDispositionPause','SmsAccount','rawAttributes','fieldName','type','key','model','map','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','keys','include','find','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','SmsAccountId','Disposition','getDispositions','findOne','count','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','notify','sms','Applications','account','applications','orderBy','asc','CmContact','ValidationError','no\x20available\x20attributes','createdAt','CompanyId','mobile','twilio','from','Body','messageId','skebby','sender','connectel','clicksend','message_id','plivo','From','Text','MessageUUID','infobip','results','text','csc','originatingAddress','segmentedMessage','clickatell','fromNumber','replyMessageId','intelepeer','refid','isNil','from\x20is\x20mandatory','mapKey','Sequelize','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','ListId','list','omit','Contacts','SmsInteraction','spread','interaction','created','push','close','unmanaged','SmsMessage','ContactId','AttachmentId','UserId','unshift','agent','waitForTheAssignedAgent','Start','startRouting','entity\x20found','debug','Content-Type','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','addApplications','sequelize','transaction','Transaction','READ_COMMITTED','SmsApplication','bulkCreate','priority','stack','getApplications','getInteractions','Contact','Owner','fullname','internal','Tag','Tags','color','tag','body\x20is\x20mandatory\x20and\x20not\x20empty','to\x20is\x20mandatory','updatedAt','DESC','List','user','Messages'];(function(_0x479e58,_0x2af8da){var _0x101d43=function(_0x3f1f29){while(--_0x3f1f29){_0x479e58['push'](_0x479e58['shift']());}};_0x101d43(++_0x2af8da);}(_0x3271,0x106));var _0x1327=function(_0x50b689,_0x3cb56d){_0x50b689=_0x50b689-0x0;var _0x36b7ac=_0x3271[_0x50b689];return _0x36b7ac;};'use strict';var emlformat=require(_0x1327('0x0'));var rimraf=require(_0x1327('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x1327('0x2'));var rp=require(_0x1327('0x3'));var moment=require('moment');var BPromise=require(_0x1327('0x4'));var Mustache=require(_0x1327('0x5'));var util=require(_0x1327('0x6'));var path=require(_0x1327('0x7'));var sox=require(_0x1327('0x8'));var csv=require(_0x1327('0x9'));var ejs=require(_0x1327('0xa'));var fs=require('fs');var fs_extra=require(_0x1327('0xb'));var _=require(_0x1327('0xc'));var squel=require('squel');var crypto=require(_0x1327('0xd'));var jsforce=require(_0x1327('0xe'));var deskjs=require(_0x1327('0xf'));var toCsv=require(_0x1327('0x9'));var querystring=require(_0x1327('0x10'));var Papa=require(_0x1327('0x11'));var Redis=require(_0x1327('0x12'));var authService=require(_0x1327('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x1327('0x14'));var hardwareService=require(_0x1327('0x15'));var logger=require(_0x1327('0x16'))('api');var utils=require('../../config/utils');var config=require(_0x1327('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x1327('0x18'))['db'];config[_0x1327('0x19')]=_[_0x1327('0x1a')](config[_0x1327('0x19')],{'host':_0x1327('0x1b'),'port':0x18eb});var socket=require(_0x1327('0x1c'))(new Redis(config[_0x1327('0x19')]));require(_0x1327('0x1d'))[_0x1327('0x1e')](socket);var jayson=require(_0x1327('0x1f'));var client=jayson[_0x1327('0x20')][_0x1327('0x21')]({'port':0x232c});function respondWithRpcPromise(_0x2bcf9d,_0x4d3d89,_0x14b4b1,_0x2c7dd0){return new BPromise(function(_0x140420,_0x449635){var _0x6c86d3=_0x2c7dd0||client;return _0x6c86d3[_0x1327('0x22')](_0x2bcf9d,_0x14b4b1)[_0x1327('0x23')](function(_0xa753af){logger[_0x1327('0x24')](_0x1327('0x25'),_0x4d3d89,'request\x20sent');logger['debug'](_0x1327('0x26'),_0x4d3d89,_0x1327('0x27'),JSON[_0x1327('0x28')](_0xa753af));if(_0xa753af[_0x1327('0x29')]){if(_0xa753af[_0x1327('0x29')]['code']===0x1f4){logger['error'](_0x1327('0x25'),_0x4d3d89,_0xa753af[_0x1327('0x29')][_0x1327('0x2a')]);return _0x449635(_0xa753af[_0x1327('0x29')]['message']);}logger[_0x1327('0x29')]('SmsAccount,\x20%s,\x20%s',_0x4d3d89,_0xa753af[_0x1327('0x29')][_0x1327('0x2a')]);return _0x140420(_0xa753af[_0x1327('0x29')][_0x1327('0x2a')]);}else{logger[_0x1327('0x24')]('SmsAccount,\x20%s,\x20%s',_0x4d3d89,_0x1327('0x27'));_0x140420(_0xa753af['result'][_0x1327('0x2a')]);}})['catch'](function(_0x35fafd){logger[_0x1327('0x29')](_0x1327('0x25'),_0x4d3d89,_0x35fafd);_0x449635(_0x35fafd);});});}function respondWithStatusCode(_0x2267a2,_0x5f54c6){_0x5f54c6=_0x5f54c6||0xcc;return function(_0x482b95){if(_0x482b95){return _0x2267a2[_0x1327('0x2b')](_0x5f54c6);}return _0x2267a2[_0x1327('0x2c')](_0x5f54c6)[_0x1327('0x2d')]();};}function respondWithResult(_0x4ac6b1,_0x86b49d){_0x86b49d=_0x86b49d||0xc8;return function(_0xa326b0){if(_0xa326b0){return _0x4ac6b1[_0x1327('0x2c')](_0x86b49d)[_0x1327('0x2e')](_0xa326b0);}};}function respondWithFilteredResult(_0xc2a5a2,_0x5eb8fa){return function(_0xa68d07){if(_0xa68d07){var _0xd700f8=typeof _0x5eb8fa[_0x1327('0x2f')]==='undefined'&&typeof _0x5eb8fa['limit']===_0x1327('0x30');var _0x9f49c4=_0xa68d07['count'];var _0x2668ae=_0xd700f8?0x0:_0x5eb8fa['offset'];var _0x3ecf50=_0xd700f8?_0xa68d07['count']:_0x5eb8fa[_0x1327('0x2f')]+_0x5eb8fa[_0x1327('0x31')];var _0x1950a3;if(_0x3ecf50>=_0x9f49c4){_0x3ecf50=_0x9f49c4;_0x1950a3=0xc8;}else{_0x1950a3=0xce;}_0xc2a5a2[_0x1327('0x2c')](_0x1950a3);return _0xc2a5a2[_0x1327('0x32')](_0x1327('0x33'),_0x2668ae+'-'+_0x3ecf50+'/'+_0x9f49c4)['json'](_0xa68d07);}return null;};}function patchUpdates(_0x317e3b){return function(_0xa74756){try{jsonpatch['apply'](_0xa74756,_0x317e3b,!![]);}catch(_0x91c79b){return BPromise[_0x1327('0x34')](_0x91c79b);}return _0xa74756[_0x1327('0x35')]();};}function saveUpdates(_0x5cadeb,_0x46de06){return function(_0x30977d){if(_0x30977d){return _0x30977d[_0x1327('0x36')](_0x5cadeb)[_0x1327('0x23')](function(_0x618a97){return _0x618a97;});}return null;};}function removeEntity(_0x21f06b,_0x32b95b){return function(_0x181d6a){if(_0x181d6a){return _0x181d6a['destroy']()[_0x1327('0x23')](function(){var _0x21465c=_0x181d6a['get']({'plain':!![]});var _0x329e2=_0x1327('0x37');return db['UserProfileResource'][_0x1327('0x38')]({'where':{'type':_0x329e2,'resourceId':_0x21465c['id']}})[_0x1327('0x23')](function(){return _0x181d6a;});})[_0x1327('0x23')](function(){_0x21f06b[_0x1327('0x2c')](0xcc)[_0x1327('0x2d')]();});}};}function handleEntityNotFound(_0x2039ad,_0x53d13c){return function(_0x4218b0){if(!_0x4218b0){_0x2039ad[_0x1327('0x2b')](0x194);}return _0x4218b0;};}function handleError(_0x4fd6f,_0x53edff){_0x53edff=_0x53edff||0x1f4;return function(_0x418cbf){logger['error'](_0x418cbf['stack']);if(_0x418cbf[_0x1327('0x39')]){delete _0x418cbf[_0x1327('0x39')];}_0x4fd6f[_0x1327('0x2c')](_0x53edff)[_0x1327('0x3a')](_0x418cbf);};}exports[_0x1327('0x3b')]=function(_0x1a159c,_0xead623){var _0x35f3d6={'include':[{'model':db[_0x1327('0x3c')],'as':_0x1327('0x3d')}]},_0x3dd97c={},_0x224006={'count':0x0,'rows':[]};var _0x3a5012=_['map'](db[_0x1327('0x3e')][_0x1327('0x3f')],function(_0x25b8a9){return{'name':_0x25b8a9[_0x1327('0x40')],'type':_0x25b8a9[_0x1327('0x41')][_0x1327('0x42')]};});_0x3dd97c[_0x1327('0x43')]=_[_0x1327('0x44')](_0x3a5012,_0x1327('0x39'));_0x3dd97c[_0x1327('0x45')]=_['keys'](_0x1a159c['query']);_0x3dd97c['filters']=_[_0x1327('0x46')](_0x3dd97c[_0x1327('0x43')],_0x3dd97c['query']);_0x35f3d6[_0x1327('0x47')]=_['intersection'](_0x3dd97c['model'],qs[_0x1327('0x48')](_0x1a159c['query']['fields']));_0x35f3d6[_0x1327('0x47')]=_0x35f3d6['attributes'][_0x1327('0x49')]?_0x35f3d6[_0x1327('0x47')]:_0x3dd97c[_0x1327('0x43')];if(!_0x1a159c[_0x1327('0x45')][_0x1327('0x4a')](_0x1327('0x4b'))){_0x35f3d6[_0x1327('0x31')]=qs[_0x1327('0x31')](_0x1a159c[_0x1327('0x45')]['limit']);_0x35f3d6[_0x1327('0x2f')]=qs[_0x1327('0x2f')](_0x1a159c[_0x1327('0x45')][_0x1327('0x2f')]);}_0x35f3d6[_0x1327('0x4c')]=qs[_0x1327('0x4d')](_0x1a159c[_0x1327('0x45')][_0x1327('0x4d')]);_0x35f3d6[_0x1327('0x4e')]=qs[_0x1327('0x4f')](_[_0x1327('0x50')](_0x1a159c[_0x1327('0x45')],_0x3dd97c[_0x1327('0x4f')]),_0x3a5012);if(_0x1a159c[_0x1327('0x45')][_0x1327('0x51')]){_0x35f3d6[_0x1327('0x4e')]=_[_0x1327('0x52')](_0x35f3d6[_0x1327('0x4e')],{'$or':_[_0x1327('0x44')](_0x3a5012,function(_0x2aedce){if(_0x2aedce['type']!==_0x1327('0x53')){var _0xf0ce5e={};_0xf0ce5e[_0x2aedce[_0x1327('0x39')]]={'$like':'%'+_0x1a159c[_0x1327('0x45')]['filter']+'%'};return _0xf0ce5e;}})});}_0x35f3d6=_['merge']({},_0x35f3d6,_0x1a159c[_0x1327('0x54')]);var _0x334068={'where':_0x35f3d6[_0x1327('0x4e')]};return db[_0x1327('0x3e')]['count'](_0x334068)['then'](function(_0x4282f0){_0x224006['count']=_0x4282f0;if(_0x1a159c[_0x1327('0x45')][_0x1327('0x55')]){_0x35f3d6['include']=[{'all':!![]}];}return db[_0x1327('0x3e')][_0x1327('0x56')](_0x35f3d6);})[_0x1327('0x23')](function(_0x51f588){_0x224006[_0x1327('0x57')]=_0x51f588;return _0x224006;})[_0x1327('0x23')](respondWithFilteredResult(_0xead623,_0x35f3d6))[_0x1327('0x58')](handleError(_0xead623,null));};exports[_0x1327('0x59')]=function(_0x517d57,_0x5c33a5){var _0x27ce43={'raw':![],'where':{'id':_0x517d57[_0x1327('0x5a')]['id']},'include':[{'model':db[_0x1327('0x3c')],'as':_0x1327('0x3d')}]},_0x208938={};_0x208938[_0x1327('0x43')]=_[_0x1327('0x5b')](db[_0x1327('0x3e')][_0x1327('0x3f')]);_0x208938['query']=_[_0x1327('0x5b')](_0x517d57[_0x1327('0x45')]);_0x208938[_0x1327('0x4f')]=_['intersection'](_0x208938[_0x1327('0x43')],_0x208938[_0x1327('0x45')]);_0x27ce43[_0x1327('0x47')]=_[_0x1327('0x46')](_0x208938[_0x1327('0x43')],qs['fields'](_0x517d57['query'][_0x1327('0x48')]));_0x27ce43[_0x1327('0x47')]=_0x27ce43[_0x1327('0x47')]['length']?_0x27ce43[_0x1327('0x47')]:_0x208938['model'];if(_0x517d57[_0x1327('0x45')][_0x1327('0x55')]){_0x27ce43[_0x1327('0x5c')]=[{'all':!![]}];}_0x27ce43=_['merge']({},_0x27ce43,_0x517d57[_0x1327('0x54')]);return db[_0x1327('0x3e')][_0x1327('0x5d')](_0x27ce43)['then'](handleEntityNotFound(_0x5c33a5,null))[_0x1327('0x23')](respondWithResult(_0x5c33a5,null))[_0x1327('0x58')](handleError(_0x5c33a5,null));};exports['create']=function(_0x5df4a6,_0x3f4695){return db['SmsAccount'][_0x1327('0x5e')](_0x5df4a6[_0x1327('0x5f')],{})[_0x1327('0x23')](function(_0x4d5bad){var _0x313cf2=_0x5df4a6['user'][_0x1327('0x60')]({'plain':!![]});if(!_0x313cf2)throw new Error(_0x1327('0x61'));if(_0x313cf2[_0x1327('0x62')]==='user'){var _0x402626=_0x4d5bad[_0x1327('0x60')]({'plain':!![]});var _0x42833b=_0x1327('0x37');return db[_0x1327('0x63')][_0x1327('0x5d')]({'where':{'name':_0x42833b,'userProfileId':_0x313cf2['userProfileId']},'raw':!![]})[_0x1327('0x23')](function(_0x1f0e5e){if(_0x1f0e5e&&_0x1f0e5e[_0x1327('0x64')]===0x0){return db[_0x1327('0x65')][_0x1327('0x5e')]({'name':_0x402626[_0x1327('0x39')],'resourceId':_0x402626['id'],'type':_0x1f0e5e[_0x1327('0x39')],'sectionId':_0x1f0e5e['id']},{})[_0x1327('0x23')](function(){return _0x4d5bad;});}else{return _0x4d5bad;}})[_0x1327('0x58')](function(_0x1aadab){logger[_0x1327('0x29')](_0x1327('0x66'),_0x1aadab);throw _0x1aadab;});}return _0x4d5bad;})[_0x1327('0x23')](respondWithResult(_0x3f4695,0xc9))['catch'](handleError(_0x3f4695,null));};exports[_0x1327('0x36')]=function(_0x311c2f,_0x18e235){if(_0x311c2f[_0x1327('0x5f')]['id']){delete _0x311c2f[_0x1327('0x5f')]['id'];}return db[_0x1327('0x3e')]['find']({'where':{'id':_0x311c2f[_0x1327('0x5a')]['id']},'include':[{'model':db['Pause'],'as':_0x1327('0x3d')}]})[_0x1327('0x23')](handleEntityNotFound(_0x18e235,null))[_0x1327('0x23')](saveUpdates(_0x311c2f['body'],null))[_0x1327('0x23')](respondWithResult(_0x18e235,null))[_0x1327('0x58')](handleError(_0x18e235,null));};exports[_0x1327('0x38')]=function(_0x1aed61,_0x5c4b13){return db[_0x1327('0x3e')]['find']({'where':{'id':_0x1aed61[_0x1327('0x5a')]['id']}})[_0x1327('0x23')](handleEntityNotFound(_0x5c4b13,null))['then'](removeEntity(_0x5c4b13,null))[_0x1327('0x58')](handleError(_0x5c4b13,null));};exports[_0x1327('0x67')]=function(_0x4ba5a6,_0x5a0d1c){return db[_0x1327('0x3e')][_0x1327('0x67')]()[_0x1327('0x23')](respondWithResult(_0x5a0d1c,null))[_0x1327('0x58')](handleError(_0x5a0d1c,null));};exports[_0x1327('0x68')]=function(_0x42cf76,_0x2e1c09,_0x4c9103){if(_0x42cf76[_0x1327('0x5f')]['id']){delete _0x42cf76[_0x1327('0x5f')]['id'];}return db[_0x1327('0x3e')][_0x1327('0x5d')]({'where':{'id':_0x42cf76[_0x1327('0x5a')]['id']}})['then'](handleEntityNotFound(_0x2e1c09,null))[_0x1327('0x23')](function(_0x42ab50){if(_0x42ab50){_0x42cf76['body'][_0x1327('0x69')]=_0x42ab50['id'];return db[_0x1327('0x6a')][_0x1327('0x5e')](_0x42cf76[_0x1327('0x5f')]);}})[_0x1327('0x23')](respondWithResult(_0x2e1c09,null))['catch'](handleError(_0x2e1c09,null));};exports[_0x1327('0x6b')]=function(_0xd64a78,_0x4f5cff,_0x3dc4ca){var _0x5f3f3c={'raw':![],'where':{}};var _0x3ba1ba={};var _0x2b1945={'count':0x0,'rows':[]};return db[_0x1327('0x3e')][_0x1327('0x6c')]({'where':{'id':_0xd64a78[_0x1327('0x5a')]['id']}})['then'](handleEntityNotFound(_0x4f5cff,null))[_0x1327('0x23')](function(_0x5f3f54){if(_0x5f3f54){_0x3ba1ba[_0x1327('0x43')]=_['keys'](db[_0x1327('0x6a')][_0x1327('0x3f')]);_0x3ba1ba[_0x1327('0x45')]=_[_0x1327('0x5b')](_0xd64a78['query']);_0x3ba1ba[_0x1327('0x4f')]=_[_0x1327('0x46')](_0x3ba1ba[_0x1327('0x43')],_0x3ba1ba[_0x1327('0x45')]);_0x5f3f3c[_0x1327('0x47')]=_['intersection'](_0x3ba1ba[_0x1327('0x43')],qs[_0x1327('0x48')](_0xd64a78[_0x1327('0x45')]['fields']));_0x5f3f3c[_0x1327('0x47')]=_0x5f3f3c[_0x1327('0x47')][_0x1327('0x49')]?_0x5f3f3c['attributes']:_0x3ba1ba[_0x1327('0x43')];if(!_0xd64a78[_0x1327('0x45')][_0x1327('0x4a')]('nolimit')){_0x5f3f3c['limit']=qs[_0x1327('0x31')](_0xd64a78['query'][_0x1327('0x31')]);_0x5f3f3c[_0x1327('0x2f')]=qs['offset'](_0xd64a78['query'][_0x1327('0x2f')]);}_0x5f3f3c[_0x1327('0x4c')]=qs[_0x1327('0x4d')](_0xd64a78[_0x1327('0x45')]['sort']);_0x5f3f3c['where']=qs[_0x1327('0x4f')](_[_0x1327('0x50')](_0xd64a78[_0x1327('0x45')],_0x3ba1ba[_0x1327('0x4f')]));_0x5f3f3c['where']['SmsAccountId']=_0x5f3f54['id'];if(_0xd64a78['query'][_0x1327('0x51')]){_0x5f3f3c[_0x1327('0x4e')]=_[_0x1327('0x52')](_0x5f3f3c[_0x1327('0x4e')],{'$or':_[_0x1327('0x44')](_0x5f3f3c[_0x1327('0x47')],function(_0x4bbcbb){var _0x37711a={};_0x37711a[_0x4bbcbb]={'$like':'%'+_0xd64a78[_0x1327('0x45')][_0x1327('0x51')]+'%'};return _0x37711a;})});}_0x5f3f3c=_['merge']({},_0x5f3f3c,_0xd64a78[_0x1327('0x54')]);return db[_0x1327('0x6a')][_0x1327('0x6d')]({'where':_0x5f3f3c['where']})[_0x1327('0x23')](function(_0x101909){_0x2b1945[_0x1327('0x6d')]=_0x101909;if(_0xd64a78['query'][_0x1327('0x55')]){_0x5f3f3c[_0x1327('0x5c')]=[{'all':!![]}];}return db[_0x1327('0x6a')][_0x1327('0x56')](_0x5f3f3c);})[_0x1327('0x23')](function(_0x3f1dba){_0x2b1945[_0x1327('0x57')]=_0x3f1dba;return _0x2b1945;});}})[_0x1327('0x23')](respondWithFilteredResult(_0x4f5cff,_0x5f3f3c))[_0x1327('0x58')](handleError(_0x4f5cff,null));};exports[_0x1327('0x6e')]=function(_0x27f122,_0x5a9db4,_0x23827a){return db[_0x1327('0x3e')][_0x1327('0x5d')]({'where':{'id':_0x27f122[_0x1327('0x5a')]['id']}})['then'](handleEntityNotFound(_0x5a9db4,null))[_0x1327('0x23')](function(_0x584c1b){if(_0x584c1b){return _0x584c1b[_0x1327('0x6e')](_0x27f122[_0x1327('0x45')][_0x1327('0x6f')]);}})['then'](respondWithStatusCode(_0x5a9db4,null))[_0x1327('0x58')](handleError(_0x5a9db4,null));};exports[_0x1327('0x70')]=function(_0x554e13,_0x34e663,_0x3d7496){if(_0x554e13[_0x1327('0x5f')]['id']){delete _0x554e13[_0x1327('0x5f')]['id'];}return db[_0x1327('0x3e')][_0x1327('0x5d')]({'where':{'id':_0x554e13[_0x1327('0x5a')]['id']}})[_0x1327('0x23')](handleEntityNotFound(_0x34e663,null))[_0x1327('0x23')](function(_0x2d7d2c){if(_0x2d7d2c){_0x554e13[_0x1327('0x5f')][_0x1327('0x69')]=_0x2d7d2c['id'];return db[_0x1327('0x71')]['create'](_0x554e13['body']);}})[_0x1327('0x23')](respondWithResult(_0x34e663,null))[_0x1327('0x58')](handleError(_0x34e663,null));};exports[_0x1327('0x72')]=function(_0x29fa02,_0x31366c,_0x5a2c18){var _0x30129e={'raw':![],'where':{}};var _0x5220f3={};var _0x16ccf5={'count':0x0,'rows':[]};return db['SmsAccount'][_0x1327('0x6c')]({'where':{'id':_0x29fa02['params']['id']}})[_0x1327('0x23')](handleEntityNotFound(_0x31366c,null))[_0x1327('0x23')](function(_0x35897c){if(_0x35897c){_0x5220f3[_0x1327('0x43')]=_[_0x1327('0x5b')](db['CannedAnswer'][_0x1327('0x3f')]);_0x5220f3[_0x1327('0x45')]=_[_0x1327('0x5b')](_0x29fa02[_0x1327('0x45')]);_0x5220f3[_0x1327('0x4f')]=_[_0x1327('0x46')](_0x5220f3[_0x1327('0x43')],_0x5220f3[_0x1327('0x45')]);_0x30129e[_0x1327('0x47')]=_[_0x1327('0x46')](_0x5220f3[_0x1327('0x43')],qs['fields'](_0x29fa02[_0x1327('0x45')][_0x1327('0x48')]));_0x30129e[_0x1327('0x47')]=_0x30129e[_0x1327('0x47')][_0x1327('0x49')]?_0x30129e[_0x1327('0x47')]:_0x5220f3[_0x1327('0x43')];if(!_0x29fa02[_0x1327('0x45')][_0x1327('0x4a')]('nolimit')){_0x30129e['limit']=qs[_0x1327('0x31')](_0x29fa02[_0x1327('0x45')][_0x1327('0x31')]);_0x30129e['offset']=qs[_0x1327('0x2f')](_0x29fa02[_0x1327('0x45')][_0x1327('0x2f')]);}_0x30129e[_0x1327('0x4c')]=qs['sort'](_0x29fa02[_0x1327('0x45')]['sort']);_0x30129e[_0x1327('0x4e')]=qs[_0x1327('0x4f')](_[_0x1327('0x50')](_0x29fa02['query'],_0x5220f3[_0x1327('0x4f')]));_0x30129e[_0x1327('0x4e')][_0x1327('0x69')]=_0x35897c['id'];if(_0x29fa02[_0x1327('0x45')][_0x1327('0x51')]){_0x30129e[_0x1327('0x4e')]=_[_0x1327('0x52')](_0x30129e[_0x1327('0x4e')],{'$or':_[_0x1327('0x44')](_0x30129e['attributes'],function(_0x263615){var _0x10bb66={};_0x10bb66[_0x263615]={'$like':'%'+_0x29fa02[_0x1327('0x45')][_0x1327('0x51')]+'%'};return _0x10bb66;})});}_0x30129e=_[_0x1327('0x52')]({},_0x30129e,_0x29fa02['options']);return db[_0x1327('0x71')][_0x1327('0x6d')]({'where':_0x30129e[_0x1327('0x4e')]})[_0x1327('0x23')](function(_0x484f9c){_0x16ccf5[_0x1327('0x6d')]=_0x484f9c;if(_0x29fa02[_0x1327('0x45')]['includeAll']){_0x30129e[_0x1327('0x5c')]=[{'all':!![]}];}return db[_0x1327('0x71')][_0x1327('0x56')](_0x30129e);})[_0x1327('0x23')](function(_0x4a20d7){_0x16ccf5[_0x1327('0x57')]=_0x4a20d7;return _0x16ccf5;});}})[_0x1327('0x23')](respondWithFilteredResult(_0x31366c,_0x30129e))[_0x1327('0x58')](handleError(_0x31366c,null));};exports[_0x1327('0x73')]=function(_0x193ccb,_0x4ae2b7,_0x12b4d5){return db[_0x1327('0x3e')][_0x1327('0x5d')]({'where':{'id':_0x193ccb[_0x1327('0x5a')]['id']}})[_0x1327('0x23')](handleEntityNotFound(_0x4ae2b7,null))[_0x1327('0x23')](function(_0xc7e36e){if(_0xc7e36e){return _0xc7e36e['removeAnswers'](_0x193ccb[_0x1327('0x45')][_0x1327('0x6f')]);}})['then'](respondWithStatusCode(_0x4ae2b7,null))[_0x1327('0x58')](handleError(_0x4ae2b7,null));};exports[_0x1327('0x74')]=function(_0x4cab04,_0xd7a428,_0x514748){var _0x41f13c={'channel':_0x1327('0x75')};var _0x7d23e3=[];var _0x498931=[];var _0x5d9e74={};return db[_0x1327('0x3e')][_0x1327('0x5d')]({'where':{'id':_0x4cab04[_0x1327('0x5a')]['id']},'include':[{'model':db['SmsApplication'],'as':_0x1327('0x76')}]})[_0x1327('0x23')](handleEntityNotFound(_0xd7a428,null))['then'](function(_0x4fa5a5){_0x41f13c[_0x1327('0x77')]=_0x4fa5a5;_0x41f13c[_0x1327('0x78')]=_[_0x1327('0x79')](_0x4fa5a5[_0x1327('0x76')],['priority'],[_0x1327('0x7a')]);if(_0x41f13c[_0x1327('0x77')]['Applications']){delete _0x41f13c[_0x1327('0x77')][_0x1327('0x76')];}return db[_0x1327('0x7b')]['describe']();})[_0x1327('0x23')](function(_0xc685c7){if(!_0xc685c7){throw new db['Sequelize'][(_0x1327('0x7c'))](_0x1327('0x7d'));}_0x7d23e3=_['difference'](_[_0x1327('0x5b')](_0xc685c7),[_0x1327('0x7e'),'updatedAt']);_0x498931=_['difference'](_['keys'](_0xc685c7),['createdAt','updatedAt',_0x1327('0x7f'),'ListId']);_0x41f13c['body']={'mapKey':_0x1327('0x80')};if(_0x41f13c['account'][_0x1327('0x41')]){switch(_0x41f13c[_0x1327('0x77')][_0x1327('0x41')]){case _0x1327('0x81'):_0x41f13c[_0x1327('0x5f')][_0x1327('0x82')]=_0x4cab04[_0x1327('0x5f')]['From'];_0x41f13c[_0x1327('0x5f')]['body']=_0x4cab04['body'][_0x1327('0x83')];_0x41f13c['body'][_0x1327('0x84')]=_0x4cab04[_0x1327('0x5f')]['MessageSid'];break;case _0x1327('0x85'):_0x41f13c[_0x1327('0x5f')][_0x1327('0x82')]='+'+_0x4cab04[_0x1327('0x5f')][_0x1327('0x86')];_0x41f13c[_0x1327('0x5f')]['body']=_0x4cab04['body']['text'];break;case _0x1327('0x87'):_0x41f13c[_0x1327('0x5f')][_0x1327('0x82')]=_0x4cab04[_0x1327('0x5f')][_0x1327('0x82')];_0x41f13c[_0x1327('0x5f')][_0x1327('0x5f')]=_0x4cab04[_0x1327('0x5f')][_0x1327('0x2a')];break;case _0x1327('0x88'):_0x41f13c[_0x1327('0x5f')][_0x1327('0x82')]=_0x4cab04[_0x1327('0x5f')]['from'];_0x41f13c['body']['body']=_0x4cab04[_0x1327('0x5f')][_0x1327('0x5f')];_0x41f13c[_0x1327('0x5f')][_0x1327('0x84')]=_0x4cab04['body'][_0x1327('0x89')];break;case _0x1327('0x8a'):_0x41f13c[_0x1327('0x5f')]['from']=_0x4cab04['body'][_0x1327('0x8b')];_0x41f13c['body']['body']=_0x4cab04[_0x1327('0x5f')][_0x1327('0x8c')];_0x41f13c[_0x1327('0x5f')]['messageId']=_0x4cab04[_0x1327('0x5f')][_0x1327('0x8d')];break;case _0x1327('0x8e'):_0x41f13c[_0x1327('0x5f')]['from']='+'+_0x4cab04[_0x1327('0x5f')][_0x1327('0x8f')][0x0][_0x1327('0x82')];_0x41f13c[_0x1327('0x5f')][_0x1327('0x5f')]=_0x4cab04[_0x1327('0x5f')]['results'][0x0][_0x1327('0x90')];_0x41f13c[_0x1327('0x5f')]['messageId']=_0x4cab04[_0x1327('0x5f')][_0x1327('0x8f')][0x0][_0x1327('0x84')];break;case _0x1327('0x91'):_0x41f13c[_0x1327('0x5f')][_0x1327('0x82')]=_0x4cab04[_0x1327('0x5f')][_0x1327('0x92')];_0x41f13c['body'][_0x1327('0x5f')]=_0x4cab04['body'][_0x1327('0x93')][_0x1327('0x2a')];break;case _0x1327('0x94'):_0x41f13c[_0x1327('0x5f')][_0x1327('0x82')]=_0x4cab04[_0x1327('0x5f')][_0x1327('0x95')];_0x41f13c[_0x1327('0x5f')]['body']=_0x4cab04[_0x1327('0x5f')]['text'];_0x41f13c['body'][_0x1327('0x84')]=_0x4cab04[_0x1327('0x5f')][_0x1327('0x96')];break;case'bandwidth':_0x41f13c[_0x1327('0x5f')][_0x1327('0x84')]=_0x4cab04[_0x1327('0x5f')][0x0][_0x1327('0x2a')]['id'];_0x41f13c[_0x1327('0x5f')][_0x1327('0x82')]=_0x4cab04[_0x1327('0x5f')][0x0][_0x1327('0x2a')]['from'];_0x41f13c[_0x1327('0x5f')]['body']=_0x4cab04[_0x1327('0x5f')][0x0][_0x1327('0x2a')]['text'];break;case _0x1327('0x97'):_0x41f13c[_0x1327('0x5f')]['from']=_0x4cab04[_0x1327('0x5f')][_0x1327('0x82')];_0x41f13c[_0x1327('0x5f')]['body']=_0x4cab04[_0x1327('0x5f')]['message'];_0x41f13c[_0x1327('0x5f')][_0x1327('0x84')]=_0x4cab04[_0x1327('0x5f')][_0x1327('0x98')];break;}}if(_0x41f13c['body']['id']){delete _0x41f13c[_0x1327('0x5f')]['id'];}if(_[_0x1327('0x99')](_0x41f13c[_0x1327('0x5f')][_0x1327('0x82')])){throw new db['Sequelize'][(_0x1327('0x7c'))](_0x1327('0x9a'));}if(_[_0x1327('0x99')](_0x41f13c[_0x1327('0x5f')][_0x1327('0x5f')])||_0x41f13c[_0x1327('0x5f')][_0x1327('0x5f')]===''){throw new db['Sequelize'][(_0x1327('0x7c'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x1327('0x99')](_0x41f13c['body'][_0x1327('0x9b')])){throw new db[(_0x1327('0x9c'))][(_0x1327('0x7c'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x498931);}if(!_[_0x1327('0x9d')](_0x498931,_0x41f13c['body'][_0x1327('0x9b')])){throw new db[(_0x1327('0x9c'))][(_0x1327('0x7c'))](_0x1327('0x9e')+_0x498931);}_0x5d9e74[_0x41f13c[_0x1327('0x5f')][_0x1327('0x9b')]]=_0x41f13c['body'][_0x1327('0x82')];return db[_0x1327('0x9f')]['find']({'where':{'id':_0x41f13c[_0x1327('0x77')][_0x1327('0xa0')]},'include':[{'model':db[_0x1327('0x7b')],'as':'Contacts','where':_0x5d9e74,'limit':0x1,'order':[['updatedAt','DESC']]}]});})[_0x1327('0x23')](handleEntityNotFound(_0xd7a428,null))[_0x1327('0x23')](function(_0x18920e){if(_0x18920e){_0x41f13c[_0x1327('0xa1')]=_[_0x1327('0xa2')](_0x18920e,[_0x1327('0xa3')]);if(_0x18920e[_0x1327('0xa3')][_0x1327('0x49')]){return _0x18920e[_0x1327('0xa3')][0x0];}var _0x44b438=_[_0x1327('0x1a')](_0x41f13c[_0x1327('0x5f')],{'firstName':_0x41f13c[_0x1327('0x5f')][_0x1327('0x82')],'ListId':_0x18920e['id']});_0x44b438[_0x41f13c[_0x1327('0x5f')]['mapKey']]=_0x41f13c[_0x1327('0x5f')]['from'];return db['CmContact'][_0x1327('0x5e')](_0x44b438,{'fields':_0x7d23e3,'raw':!![]});}})[_0x1327('0x23')](handleEntityNotFound(_0xd7a428,null))[_0x1327('0x23')](function(_0x210494){if(_0x210494){_0x41f13c['contact']=_0x210494;var _0x2b7618={'ContactId':_0x210494['id'],'phone':_0x41f13c[_0x1327('0x5f')][_0x1327('0x82')],'SmsAccountId':_0x4cab04[_0x1327('0x5a')]['id']};var _0x318265={'ContactId':_0x210494['id'],'SmsAccountId':_0x4cab04[_0x1327('0x5a')]['id'],'closed':![]};return db[_0x1327('0xa4')][_0x1327('0x5d')]({'where':_0x318265})[_0x1327('0x23')](function(_0x482ac4){if(_0x482ac4){return[_0x482ac4,![]];}return db['SmsInteraction'][_0x1327('0x5e')](_0x2b7618)[_0x1327('0x23')](function(_0x540d63){return[_0x540d63,!![]];});});}})[_0x1327('0xa5')](function(_0x4615d3,_0x4dee46){_0x41f13c[_0x1327('0xa6')]=_0x4615d3['get']({'plain':!![]});_0x41f13c[_0x1327('0xa6')][_0x1327('0xa7')]=![];if(_0x4dee46){if(_0x41f13c[_0x1327('0x77')]['autoclose']){_0x41f13c[_0x1327('0x78')][_0x1327('0xa8')]({'id':0x0,'priority':_0x41f13c['applications']['length']+0x1,'app':_0x1327('0xa9'),'appdata':_0x1327('0xaa'),'interval':'*,*,*,*'});}_0x41f13c[_0x1327('0xa6')][_0x1327('0xa7')]=!![];}return db[_0x1327('0xab')][_0x1327('0x5e')]({'phone':_0x41f13c[_0x1327('0x5f')]['from'],'messageId':_0x41f13c[_0x1327('0x5f')][_0x1327('0x84')],'body':_0x41f13c[_0x1327('0x5f')][_0x1327('0x5f')],'SmsAccountId':_0x4cab04[_0x1327('0x5a')]['id'],'SmsInteractionId':_0x4615d3['id'],'direction':'in','ContactId':_0x4615d3[_0x1327('0xac')],'AttachmentId':_0x41f13c[_0x1327('0x5f')][_0x1327('0xad')]});})[_0x1327('0x23')](function(_0x431d76){_0x41f13c[_0x1327('0x2a')]=_0x431d76;if(_0x41f13c[_0x1327('0xa6')]['UserId']){return db['User'][_0x1327('0x5d')]({'attributes':['id',_0x1327('0x39')],'where':{'id':_0x41f13c[_0x1327('0xa6')][_0x1327('0xae')]}})[_0x1327('0x23')](function(_0x2741da){if(_0x2741da){_0x41f13c[_0x1327('0x78')][_0x1327('0xaf')]({'id':0x0,'priority':0x0,'app':_0x1327('0xb0'),'appdata':_0x2741da[_0x1327('0x39')]+','+(_0x41f13c[_0x1327('0x77')][_0x1327('0xb1')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0x1327('0xb2'),_0x1327('0xb3'),_0x41f13c);});}return respondWithRpcPromise('Start',_0x1327('0xb3'),_0x41f13c);})[_0x1327('0x23')](function(_0x10eac6){if(_0x10eac6){var _0x37c213=0xc8;var _0x2f99f0='receiveMessage';logger[_0x1327('0x24')](_0x1327('0x26'),_0x2f99f0,_0x37c213,_0x1327('0xb4'));logger[_0x1327('0xb5')]('SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s',_0x2f99f0,_0x37c213,'entity\x20found',JSON[_0x1327('0x28')](_0x10eac6));if(_0x41f13c[_0x1327('0x77')][_0x1327('0x41')]===_0x1327('0x81')){return _0xd7a428[_0x1327('0x2c')](_0x37c213)[_0x1327('0x32')](_0x1327('0xb6'),'text/xml')[_0x1327('0x3a')](_0x1327('0xb7'));}else{return _0xd7a428['status'](_0x37c213)[_0x1327('0x2e')](_0x10eac6);}}})['catch'](handleError(_0xd7a428,null));};exports[_0x1327('0xb8')]=function(_0x3dd3a0,_0x1f6ea7){var _0xeed5eb=_0x3dd3a0['params']['id'];var _0x27e260=_0x3dd3a0[_0x1327('0x5f')];var _0x5f11e0=0xc8;var _0xfd1c8d=null;return db[_0x1327('0xb9')][_0x1327('0xba')]({'isolationLevel':db[_0x1327('0xb9')][_0x1327('0xbb')]['ISOLATION_LEVELS'][_0x1327('0xbc')]},function(_0x123237){return db[_0x1327('0x3e')]['findOne']({'where':{'id':_0xeed5eb},'transaction':_0x123237})['then'](function(_0x4ab952){if(_0x4ab952){return db[_0x1327('0xbd')]['destroy']({'where':{'SmsAccountId':_0xeed5eb},'transaction':_0x123237})[_0x1327('0x23')](function(){var _0x48a8fe=_[_0x1327('0x44')](_0x27e260,function(_0x3a1e5e){_0x3a1e5e['SmsAccountId']=_0xeed5eb;return _0x3a1e5e;});return db[_0x1327('0xbd')][_0x1327('0xbe')](_0x48a8fe,{'transaction':_0x123237});});}else{_0x5f11e0=0x194;_0xfd1c8d=[];}});})[_0x1327('0x23')](function(){if(_0x5f11e0!==0x194){return db[_0x1327('0xbd')]['findAndCountAll']({'where':{'SmsAccountId':_0xeed5eb},'order':_0x1327('0xbf')})[_0x1327('0x23')](function(_0x269553){_0xfd1c8d=_0x269553;});}})[_0x1327('0x58')](function(_0x2ef4c2){_0x5f11e0=0x1f4;logger[_0x1327('0x29')](_0x2ef4c2[_0x1327('0xc0')]);if(_0x2ef4c2[_0x1327('0x39')]){delete _0x2ef4c2[_0x1327('0x39')];}_0xfd1c8d=_0x2ef4c2;})['finally'](function(){if(_0xfd1c8d===null){_0x1f6ea7[_0x1327('0x2b')](_0x5f11e0);}else{if(_0x5f11e0===0x1f4){_0x1f6ea7['status'](_0x5f11e0)[_0x1327('0x3a')](_0xfd1c8d);}else{_0x1f6ea7[_0x1327('0x2c')](_0x5f11e0)[_0x1327('0x2e')](_0xfd1c8d);}}});};exports[_0x1327('0xc1')]=function(_0x21754e,_0x42ce09,_0x5b4602){var _0x2d6aa8={};var _0x321bfd={};var _0x32042a;var _0x19a5c7;return db[_0x1327('0x3e')]['findOne']({'where':{'id':_0x21754e[_0x1327('0x5a')]['id']}})[_0x1327('0x23')](handleEntityNotFound(_0x42ce09,null))[_0x1327('0x23')](function(_0x4ba364){if(_0x4ba364){_0x32042a=_0x4ba364;_0x321bfd['model']=_[_0x1327('0x5b')](db[_0x1327('0xbd')][_0x1327('0x3f')]);_0x321bfd[_0x1327('0x45')]=_[_0x1327('0x5b')](_0x21754e['query']);_0x321bfd[_0x1327('0x4f')]=_[_0x1327('0x46')](_0x321bfd[_0x1327('0x43')],_0x321bfd[_0x1327('0x45')]);_0x2d6aa8[_0x1327('0x47')]=_[_0x1327('0x46')](_0x321bfd['model'],qs[_0x1327('0x48')](_0x21754e[_0x1327('0x45')][_0x1327('0x48')]));_0x2d6aa8['attributes']=_0x2d6aa8['attributes'][_0x1327('0x49')]?_0x2d6aa8['attributes']:_0x321bfd[_0x1327('0x43')];_0x2d6aa8[_0x1327('0x4c')]=qs['sort'](_0x21754e[_0x1327('0x45')][_0x1327('0x4d')]);_0x2d6aa8[_0x1327('0x4e')]=qs[_0x1327('0x4f')](_[_0x1327('0x50')](_0x21754e['query'],_0x321bfd['filters']));if(_0x21754e[_0x1327('0x45')][_0x1327('0x51')]){_0x2d6aa8['where']=_['merge'](_0x2d6aa8[_0x1327('0x4e')],{'$or':_[_0x1327('0x44')](_0x2d6aa8[_0x1327('0x47')],function(_0x2503b4){var _0x461bbd={};_0x461bbd[_0x2503b4]={'$like':'%'+_0x21754e[_0x1327('0x45')][_0x1327('0x51')]+'%'};return _0x461bbd;})});}_0x2d6aa8=_[_0x1327('0x52')]({},_0x2d6aa8,_0x21754e[_0x1327('0x54')]);return _0x32042a[_0x1327('0xc1')](_0x2d6aa8);}})[_0x1327('0x23')](function(_0x5dd60b){if(_0x5dd60b){_0x19a5c7=_0x5dd60b[_0x1327('0x49')];if(!_0x21754e[_0x1327('0x45')][_0x1327('0x4a')](_0x1327('0x4b'))){_0x2d6aa8['limit']=qs[_0x1327('0x31')](_0x21754e[_0x1327('0x45')][_0x1327('0x31')]);_0x2d6aa8['offset']=qs[_0x1327('0x2f')](_0x21754e[_0x1327('0x45')][_0x1327('0x2f')]);}return _0x32042a[_0x1327('0xc1')](_0x2d6aa8);}})[_0x1327('0x23')](function(_0x4ae2af){if(_0x4ae2af){return _0x4ae2af?{'count':_0x19a5c7,'rows':_0x4ae2af}:null;}})[_0x1327('0x23')](respondWithResult(_0x42ce09,null))[_0x1327('0x58')](handleError(_0x42ce09,null));};exports[_0x1327('0xc2')]=function(_0x113dc2,_0x5fcbee,_0x1f1b9a){var _0xc347fc={'raw':![],'where':{}};var _0x25b291={};var _0x9f38ae={'count':0x0,'rows':[]};return db[_0x1327('0x3e')][_0x1327('0x6c')]({'where':{'id':_0x113dc2[_0x1327('0x5a')]['id']}})['then'](handleEntityNotFound(_0x5fcbee,null))[_0x1327('0x23')](function(_0x199c79){if(_0x199c79){_0x25b291[_0x1327('0x43')]=_[_0x1327('0x5b')](db[_0x1327('0xa4')][_0x1327('0x3f')]);_0x25b291[_0x1327('0x45')]=_[_0x1327('0x5b')](_0x113dc2[_0x1327('0x45')]);_0x25b291[_0x1327('0x4f')]=_[_0x1327('0x46')](_0x25b291[_0x1327('0x43')],_0x25b291['query']);_0xc347fc[_0x1327('0x47')]=_[_0x1327('0x46')](_0x25b291[_0x1327('0x43')],qs[_0x1327('0x48')](_0x113dc2[_0x1327('0x45')][_0x1327('0x48')]));_0xc347fc[_0x1327('0x47')]=_0xc347fc[_0x1327('0x47')][_0x1327('0x49')]?_0xc347fc[_0x1327('0x47')]:_0x25b291[_0x1327('0x43')];if(!_0x113dc2[_0x1327('0x45')][_0x1327('0x4a')](_0x1327('0x4b'))){_0xc347fc[_0x1327('0x31')]=qs[_0x1327('0x31')](_0x113dc2[_0x1327('0x45')][_0x1327('0x31')]);_0xc347fc[_0x1327('0x2f')]=qs[_0x1327('0x2f')](_0x113dc2['query'][_0x1327('0x2f')]);}_0xc347fc[_0x1327('0x4c')]=qs[_0x1327('0x4d')](_0x113dc2[_0x1327('0x45')]['sort']);_0xc347fc[_0x1327('0x4e')]=qs[_0x1327('0x4f')](_[_0x1327('0x50')](_0x113dc2['query'],_0x25b291[_0x1327('0x4f')]));_0xc347fc[_0x1327('0x4e')][_0x1327('0x69')]=_0x199c79['id'];if(_0x113dc2['query'][_0x1327('0x51')]){_0xc347fc['where']=_['merge'](_0xc347fc[_0x1327('0x4e')],{'$or':_[_0x1327('0x44')](_0xc347fc['attributes'],function(_0x2bd68b){var _0xaf2446={};_0xaf2446[_0x2bd68b]={'$like':'%'+_0x113dc2[_0x1327('0x45')][_0x1327('0x51')]+'%'};return _0xaf2446;})});}_0xc347fc=_[_0x1327('0x52')]({},_0xc347fc,_0x113dc2[_0x1327('0x54')]);return db[_0x1327('0xa4')][_0x1327('0x6d')]({'where':_0xc347fc['where']})[_0x1327('0x23')](function(_0x22a74d){_0x9f38ae['count']=_0x22a74d;if(_0x113dc2[_0x1327('0x45')][_0x1327('0x55')]){_0xc347fc[_0x1327('0x5c')]=[{'model':db[_0x1327('0x7b')],'as':_0x1327('0xc3'),'required':![]},{'model':db['User'],'as':_0x1327('0xc4'),'attributes':[_0x1327('0x39'),_0x1327('0xc5'),_0x1327('0xc6')],'required':![]},{'model':db[_0x1327('0xc7')],'as':_0x1327('0xc8'),'attributes':['id',_0x1327('0x39'),_0x1327('0xc9')],'where':_0x113dc2[_0x1327('0x45')]['tag']?{'id':_0x113dc2['query'][_0x1327('0xca')]}:undefined,'required':_0x113dc2[_0x1327('0x45')][_0x1327('0xca')]?!![]:![]}];}return db[_0x1327('0xa4')][_0x1327('0x56')](_0xc347fc);})[_0x1327('0x23')](function(_0x109a66){_0x9f38ae[_0x1327('0x57')]=_0x109a66;return _0x9f38ae;});}})[_0x1327('0x23')](respondWithFilteredResult(_0x5fcbee,_0xc347fc))[_0x1327('0x58')](handleError(_0x5fcbee,null));};exports[_0x1327('0x3a')]=function(_0x277011,_0x23908f,_0x3e3bc4){var _0x3a17fa,_0x5675c1,_0x524c35;if(_['isNil'](_0x277011['body']['body'])||_0x277011[_0x1327('0x5f')][_0x1327('0x5f')]===''){throw new db['Sequelize'][(_0x1327('0x7c'))](_0x1327('0xcb'));}if(_[_0x1327('0x99')](_0x277011['body']['to'])){throw new db[(_0x1327('0x9c'))][(_0x1327('0x7c'))](_0x1327('0xcc'));}_0x3a17fa=_0x277011[_0x1327('0x5f')]['to'];return db[_0x1327('0x3e')]['find']({'where':{'id':_0x277011[_0x1327('0x5a')]['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db['CmContact'],'as':'Contacts','where':{'mobile':_0x3a17fa},'limit':0x1,'order':[[_0x1327('0xcd'),_0x1327('0xce')]]}]}]})[_0x1327('0x23')](handleEntityNotFound(_0x23908f,null))[_0x1327('0x23')](function(_0x4dbaa3){if(_0x4dbaa3&&_0x4dbaa3[_0x1327('0xcf')]){_0x5675c1=_0x4dbaa3[_0x1327('0x60')]({'plain':!![]});if(_0x5675c1[_0x1327('0xcf')]&&_0x5675c1[_0x1327('0xcf')][_0x1327('0xa3')][_0x1327('0x49')]){return _0x5675c1[_0x1327('0xcf')][_0x1327('0xa3')][0x0];}return db[_0x1327('0x7b')][_0x1327('0x5e')](_[_0x1327('0x1a')](_0x277011['body'],{'firstName':_0x3a17fa,'mobile':_0x3a17fa,'phone':_0x3a17fa,'ListId':_0x5675c1['ListId']}));}})[_0x1327('0x23')](handleEntityNotFound(_0x23908f,null))[_0x1327('0x23')](function(_0x19f576){if(_0x19f576){_0x524c35=_0x19f576;return db[_0x1327('0xa4')][_0x1327('0x5d')]({'where':{'ContactId':_0x524c35['id'],'closed':![],'SmsAccountId':_0x5675c1['id']}})['then'](function(_0x4f0264){if(_0x4f0264){return[_0x4f0264,![]];}return db[_0x1327('0xa4')]['create']({'UserId':_0x277011[_0x1327('0xd0')]['id'],'ContactId':_0x524c35['id'],'SmsAccountId':_0x5675c1['id'],'phone':_0x3a17fa,'firstMsgDirection':'out','Messages':[_[_0x1327('0x52')](_0x277011[_0x1327('0x5f')],{'read':![],'body':_0x277011['body']['body'],'phone':_0x3a17fa,'SmsAccountId':_0x5675c1['id'],'UserId':_0x277011['user']['id'],'ContactId':_0x524c35['id']})]},{'include':[{'model':db['SmsMessage'],'as':_0x1327('0xd1')}]})[_0x1327('0x23')](function(_0x4f03cb){return[_0x4f03cb,!![]];});});}})[_0x1327('0xa5')](function(_0x3aa1e2,_0x4cfa59){if(_0x4cfa59){return _0x3aa1e2;}return db[_0x1327('0xab')][_0x1327('0x5e')](_[_0x1327('0x52')](_0x277011['body'],{'read':![],'body':_0x277011['body']['body'],'phone':_0x3a17fa,'SmsAccountId':_0x5675c1['id'],'SmsInteractionId':_0x3aa1e2['id'],'UserId':_0x277011[_0x1327('0xd0')]['id'],'ContactId':_0x524c35['id']}))['then'](function(_0x12e645){_0x3aa1e2[_0x1327('0xd2')][_0x1327('0xd1')]=[];_0x3aa1e2['dataValues'][_0x1327('0xd1')][_0x1327('0xa8')](_0x12e645['dataValues']);return _0x3aa1e2;});})[_0x1327('0x23')](respondWithResult(_0x23908f,null))[_0x1327('0x58')](handleError(_0x23908f,null));};exports['status']=function(_0xa43aaf,_0x4e41d3,_0x3fd7bf){if(_0xa43aaf['body']['id']){delete _0xa43aaf[_0x1327('0x5f')]['id'];}var _0x425b2d,_0x348d7c,_0x3a3a26;return db[_0x1327('0x3e')][_0x1327('0x5d')]({'where':{'id':_0xa43aaf['params']['id']}})[_0x1327('0x23')](handleEntityNotFound(_0x4e41d3,null))[_0x1327('0x23')](function(_0x5a6bdd){if(_0x5a6bdd){_0x3a3a26=_0x5a6bdd;logger[_0x1327('0xb5')](_0x1327('0x26'),_0x1327('0x2c'),_0x1327('0xd3'),_0x5a6bdd[_0x1327('0x41')],util[_0x1327('0xd4')](_0xa43aaf[_0x1327('0x5f')],{'showHidden':![],'depth':null}));switch(_0x5a6bdd[_0x1327('0x41')]){case _0x1327('0x85'):if(_0xa43aaf[_0x1327('0x5f')][_0x1327('0xd5')]&&_0xa43aaf[_0x1327('0x5f')][_0x1327('0x2c')]){_0x348d7c=_0xa43aaf[_0x1327('0x5f')]['status'];return db[_0x1327('0xab')]['find']({'where':{'messageId':_0xa43aaf[_0x1327('0x5f')][_0x1327('0xd5')]}});}break;case _0x1327('0x87'):if(_0xa43aaf[_0x1327('0x5f')]['requestid']&&_0xa43aaf[_0x1327('0x5f')][_0x1327('0xd6')]){_0x348d7c=_0xa43aaf[_0x1327('0x5f')][_0x1327('0xd6')];return db[_0x1327('0xab')][_0x1327('0x5d')]({'where':{'messageId':_0xa43aaf[_0x1327('0x5f')][_0x1327('0xd7')]}});}break;case _0x1327('0x88'):if(_0xa43aaf['body'][_0x1327('0x89')]&&_0xa43aaf['body'][_0x1327('0xd8')]){_0x348d7c=_0xa43aaf['body']['status_code'];return db[_0x1327('0xab')][_0x1327('0x5d')]({'where':{'messageId':_0xa43aaf[_0x1327('0x5f')][_0x1327('0x89')]}});}break;case _0x1327('0x8e'):var _0x456e75=_0xa43aaf[_0x1327('0x5f')][_0x1327('0x8f')][0x0];if(_0x456e75['messageId']&&_0x456e75['status']['groupName']==='DELIVERED'){_0x348d7c=_0x456e75['status'][_0x1327('0xd9')];return db[_0x1327('0xab')][_0x1327('0x5d')]({'where':{'messageId':_0x456e75[_0x1327('0x84')]}});}break;case _0x1327('0x94'):if(_0xa43aaf[_0x1327('0x5f')][_0x1327('0x84')]&&_0xa43aaf[_0x1327('0x5f')][_0x1327('0x2c')]){_0x348d7c=_0xa43aaf[_0x1327('0x5f')][_0x1327('0x2c')];return db[_0x1327('0xab')][_0x1327('0x5d')]({'where':{'messageId':_0xa43aaf[_0x1327('0x5f')][_0x1327('0x84')]}});}break;case _0x1327('0xda'):if(_0xa43aaf[_0x1327('0x5f')][0x0][_0x1327('0x2a')]['id']){_0x348d7c=_0xa43aaf[_0x1327('0x5f')][0x0][_0x1327('0x41')];return db[_0x1327('0xab')]['find']({'where':{'messageId':_0xa43aaf['body'][0x0][_0x1327('0x2a')]['id']}});}break;case _0x1327('0x97'):if(_0xa43aaf[_0x1327('0x5f')][_0x1327('0xdb')]&&_0xa43aaf[_0x1327('0x5f')][_0x1327('0x2c')]){_0x348d7c=_0xa43aaf[_0x1327('0x5f')][_0x1327('0x2c')];return db[_0x1327('0xab')]['find']({'where':{'messageId':_0xa43aaf['body']['redif']}});}break;}}})[_0x1327('0x23')](handleEntityNotFound(_0x4e41d3,null))[_0x1327('0x23')](function(_0x1437cc){if(_0x1437cc){_0x425b2d=_0x1437cc;switch(_0x3a3a26['type']){case _0x1327('0x85'):if(_0x348d7c===_0x1327('0xdc')){return _0x425b2d[_0x1327('0x36')]({'read':!![]});}else{logger[_0x1327('0x29')](_0x1327('0x26'),_0x1327('0x2c'),_0x1327('0x85'),util['inspect'](_0xa43aaf['body'],{'showHidden':![],'depth':null}));}break;case'connectel':if(_0x348d7c==='1'){return _0x425b2d['update']({'read':!![]});}else{logger[_0x1327('0x29')](_0x1327('0x26'),_0x1327('0x2c'),_0x1327('0x85'),util[_0x1327('0xd4')](_0xa43aaf[_0x1327('0x5f')],{'showHidden':![],'depth':null}));}break;case _0x1327('0x88'):if(!_0xa43aaf[_0x1327('0x5f')][_0x1327('0xdd')]&&_0x348d7c>=0xc8&&_0x348d7c<=0xce){return _0x425b2d[_0x1327('0x36')]({'read':!![]});}else{logger[_0x1327('0x29')](_0x1327('0x26'),_0x1327('0x2c'),_0x1327('0x88'),util[_0x1327('0xd4')](_0xa43aaf[_0x1327('0x5f')],{'showHidden':![],'depth':null}));}break;case _0x1327('0x8e'):var _0x5eb211=_0xa43aaf['body'][_0x1327('0x8f')][0x0];if(_0x5eb211[_0x1327('0x2c')]['groupName']===_0x1327('0xdc')){return _0x425b2d[_0x1327('0x36')]({'read':!![]});}else{logger['error'](_0x1327('0x26'),'status',_0x1327('0x8e'),util['inspect'](_0xa43aaf[_0x1327('0x5f')],{'showHidden':![],'depth':null}));}break;case _0x1327('0x94'):if(_0x348d7c==_0x1327('0xde')||_0x348d7c==_0x1327('0xdf')){return _0x425b2d[_0x1327('0x36')]({'read':!![]});}else{logger['error'](_0x1327('0x26'),'status',_0x1327('0x94'),util[_0x1327('0xd4')](_0xa43aaf['body'],{'showHidden':![],'depth':null}));}break;case'bandwidth':if(_0x348d7c==_0x1327('0xe0')){return _0x425b2d['update']({'read':!![]});}else{logger['error'](_0x1327('0x26'),_0x1327('0x2c'),_0x1327('0xda'),util[_0x1327('0xd4')](_0xa43aaf[_0x1327('0x5f')],{'showHidden':![],'depth':null}));}break;case _0x1327('0x97'):if(_0x348d7c===_0x1327('0xe1')||_0x348d7c===_0x1327('0xe2')){return _0x425b2d['update']({'read':!![]});}else{logger[_0x1327('0x29')](_0x1327('0x26'),_0x1327('0x2c'),_0x1327('0x97'),util[_0x1327('0xd4')](_0xa43aaf[_0x1327('0x5f')],{'showHidden':![],'depth':null}));}break;}return _0x425b2d;}})[_0x1327('0x23')](respondWithResult(_0x4e41d3,null))[_0x1327('0x58')](handleError(_0x4e41d3,null));};exports[_0x1327('0xe3')]=function(_0x2bbfc7,_0x2bc54b,_0x4366b1){var _0x52df6e,_0x2a9f9d,_0x202fdb;return db[_0x1327('0x3e')][_0x1327('0x5d')]({'where':{'id':_0x2bbfc7[_0x1327('0x5a')]['id']}})['then'](handleEntityNotFound(_0x2bc54b,null))[_0x1327('0x23')](function(_0x96da5f){if(_0x96da5f){_0x202fdb=_0x96da5f;logger[_0x1327('0xb5')](_0x1327('0x26'),'status',_0x1327('0xd3'),_0x96da5f[_0x1327('0x41')],util['inspect'](_0x2bbfc7['query'],{'showHidden':![],'depth':null}));switch(_0x96da5f[_0x1327('0x41')]){case'csc':if(_0x2bbfc7[_0x1327('0x45')][_0x1327('0xe4')]&&_0x2bbfc7[_0x1327('0x45')]['state']){_0x2a9f9d=_0x2bbfc7[_0x1327('0x45')][_0x1327('0xe5')];return db[_0x1327('0xab')][_0x1327('0x5d')]({'where':{'messageId':_0x2bbfc7[_0x1327('0x45')][_0x1327('0xe4')]}});}break;}}})[_0x1327('0x23')](handleEntityNotFound(_0x2bc54b,null))['then'](function(_0x1e5332){if(_0x1e5332){_0x52df6e=_0x1e5332;switch(_0x202fdb[_0x1327('0x41')]){case _0x1327('0x91'):if(_0x2a9f9d==='2'||_0x2a9f9d==='6'){return _0x52df6e['update']({'read':!![]});}else{logger[_0x1327('0x29')](_0x1327('0x26'),_0x1327('0x2c'),_0x1327('0x91'),util[_0x1327('0xd4')](_0x2bbfc7[_0x1327('0x45')],{'showHidden':![],'depth':null}));};break;}return _0x52df6e;}})[_0x1327('0x23')](respondWithResult(_0x2bc54b,null))[_0x1327('0x58')](handleError(_0x2bc54b,null));};exports[_0x1327('0xe6')]=function(_0x21963f,_0xea17de,_0x3fd76f){return db[_0x1327('0x3e')]['find']({'where':{'id':_0x21963f['params']['id']}})[_0x1327('0x23')](handleEntityNotFound(_0xea17de,null))[_0x1327('0x23')](function(_0x22984f){if(_0x22984f){return _0x22984f[_0x1327('0xe6')](_0x21963f[_0x1327('0x5f')][_0x1327('0x6f')],_[_0x1327('0xa2')](_0x21963f[_0x1327('0x5f')],[_0x1327('0x6f'),'id'])||{})[_0x1327('0xa5')](function(_0x5f5daa){for(var _0x34fbcc=0x0;_0x34fbcc<_0x21963f[_0x1327('0x5f')][_0x1327('0x6f')]['length'];_0x34fbcc+=0x1){socket[_0x1327('0xe7')]('userSmsAccount:save',{'UserId':Number(_0x21963f[_0x1327('0x5f')][_0x1327('0x6f')][_0x34fbcc]),'SmsAccountId':Number(_0x21963f[_0x1327('0x5a')]['id'])});}return _0x5f5daa;});}})[_0x1327('0x23')](respondWithResult(_0xea17de,null))['catch'](handleError(_0xea17de,null));};exports['removeAgents']=function(_0x45f4b6,_0x3246ba,_0x3cf8fd){return db[_0x1327('0x3e')]['find']({'where':{'id':_0x45f4b6[_0x1327('0x5a')]['id']}})[_0x1327('0x23')](handleEntityNotFound(_0x3246ba,null))[_0x1327('0x23')](function(_0x318737){if(_0x318737){return _0x318737['removeAgents'](_0x45f4b6[_0x1327('0x45')]['ids'])[_0x1327('0x23')](function(){if(_[_0x1327('0xe8')](_0x45f4b6[_0x1327('0x45')]['ids'])){for(var _0xca2974=0x0;_0xca2974<_0x45f4b6[_0x1327('0x45')]['ids'][_0x1327('0x49')];_0xca2974+=0x1){socket[_0x1327('0xe7')](_0x1327('0xe9'),{'UserId':Number(_0x45f4b6[_0x1327('0x45')][_0x1327('0x6f')][_0xca2974]),'SmsAccountId':Number(_0x45f4b6[_0x1327('0x5a')]['id'])});}}else{socket['emit'](_0x1327('0xe9'),{'UserId':Number(_0x45f4b6[_0x1327('0x45')][_0x1327('0x6f')]),'SmsAccountId':Number(_0x45f4b6[_0x1327('0x5a')]['id'])});}});}})[_0x1327('0x23')](respondWithStatusCode(_0x3246ba,null))[_0x1327('0x58')](handleError(_0x3246ba,null));};exports[_0x1327('0xea')]=function(_0x55703d,_0x1883e7,_0x4e77eb){var _0x37dbff={};var _0x3f1dc2={};var _0x54eeab;var _0x46a70f;return db[_0x1327('0x3e')][_0x1327('0x6c')]({'where':{'id':_0x55703d[_0x1327('0x5a')]['id']}})['then'](handleEntityNotFound(_0x1883e7,null))['then'](function(_0x5c2722){if(_0x5c2722){_0x54eeab=_0x5c2722;_0x3f1dc2[_0x1327('0x43')]=_[_0x1327('0x5b')](db[_0x1327('0xeb')][_0x1327('0x3f')]);_0x3f1dc2['query']=_['keys'](_0x55703d[_0x1327('0x45')]);_0x3f1dc2[_0x1327('0x4f')]=_[_0x1327('0x46')](_0x3f1dc2[_0x1327('0x43')],_0x3f1dc2[_0x1327('0x45')]);_0x37dbff['attributes']=_[_0x1327('0x46')](_0x3f1dc2[_0x1327('0x43')],qs[_0x1327('0x48')](_0x55703d[_0x1327('0x45')][_0x1327('0x48')]));_0x37dbff['attributes']=_0x37dbff[_0x1327('0x47')][_0x1327('0x49')]?_0x37dbff[_0x1327('0x47')]:_0x3f1dc2[_0x1327('0x43')];_0x37dbff[_0x1327('0x4c')]=qs['sort'](_0x55703d['query'][_0x1327('0x4d')]);_0x37dbff['where']=qs['filters'](_[_0x1327('0x50')](_0x55703d[_0x1327('0x45')],_0x3f1dc2['filters']));if(_0x55703d[_0x1327('0x45')][_0x1327('0x51')]){_0x37dbff[_0x1327('0x4e')]=_[_0x1327('0x52')](_0x37dbff[_0x1327('0x4e')],{'$or':_[_0x1327('0x44')](_0x37dbff[_0x1327('0x47')],function(_0x322fc8){var _0x25ad7e={};_0x25ad7e[_0x322fc8]={'$like':'%'+_0x55703d[_0x1327('0x45')][_0x1327('0x51')]+'%'};return _0x25ad7e;})});}_0x37dbff=_[_0x1327('0x52')]({},_0x37dbff,_0x55703d['options']);return _0x54eeab[_0x1327('0xea')](_0x37dbff);}})[_0x1327('0x23')](function(_0x49c2f2){if(_0x49c2f2){_0x46a70f=_0x49c2f2[_0x1327('0x49')];if(!_0x55703d['query']['hasOwnProperty'](_0x1327('0x4b'))){_0x37dbff['limit']=qs['limit'](_0x55703d[_0x1327('0x45')][_0x1327('0x31')]);_0x37dbff[_0x1327('0x2f')]=qs[_0x1327('0x2f')](_0x55703d['query']['offset']);}return _0x54eeab['getAgents'](_0x37dbff);}})['then'](function(_0x2317ba){if(_0x2317ba){return _0x2317ba?{'count':_0x46a70f,'rows':_0x2317ba}:null;}})[_0x1327('0x23')](respondWithResult(_0x1883e7,null))[_0x1327('0x58')](handleError(_0x1883e7,null));};
\ No newline at end of file
index eb1ef71..778c480 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda31=['SmsAccount','save','update','remove','emit','hasOwnProperty','hook','events'];(function(_0x3885b7,_0x3371a5){var _0x123132=function(_0x2065e4){while(--_0x2065e4){_0x3885b7['push'](_0x3885b7['shift']());}};_0x123132(++_0x3371a5);}(_0xda31,0x6f));var _0x1da3=function(_0x3774f5,_0x46ea55){_0x3774f5=_0x3774f5-0x0;var _0x144072=_0xda31[_0x3774f5];return _0x144072;};'use strict';var EventEmitter=require(_0x1da3('0x0'));var SmsAccount=require('../../mysqldb')['db'][_0x1da3('0x1')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x1da3('0x2'),'afterUpdate':_0x1da3('0x3'),'afterDestroy':_0x1da3('0x4')};function emitEvent(_0x37e932){return function(_0x40d134,_0x3a1182,_0x596994){SmsAccountEvents[_0x1da3('0x5')](_0x37e932+':'+_0x40d134['id'],_0x40d134);SmsAccountEvents['emit'](_0x37e932,_0x40d134);_0x596994(null);};}for(var e in events){if(events[_0x1da3('0x6')](e)){var event=events[e];SmsAccount[_0x1da3('0x7')](e,emitEvent(event));}}module['exports']=SmsAccountEvents;
\ No newline at end of file
+var _0x7e56=['hasOwnProperty','hook','exports','events','../../mysqldb','SmsAccount','setMaxListeners','save','update','emit'];(function(_0x2100fc,_0x3b4ab3){var _0x270aa7=function(_0x42e5b3){while(--_0x42e5b3){_0x2100fc['push'](_0x2100fc['shift']());}};_0x270aa7(++_0x3b4ab3);}(_0x7e56,0x1c5));var _0x67e5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7e56[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0x67e5('0x0'));var SmsAccount=require(_0x67e5('0x1'))['db'][_0x67e5('0x2')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0x67e5('0x3')](0x0);var events={'afterCreate':_0x67e5('0x4'),'afterUpdate':_0x67e5('0x5'),'afterDestroy':'remove'};function emitEvent(_0x423994){return function(_0x1561a6,_0x205d5b,_0x39c0a7){SmsAccountEvents[_0x67e5('0x6')](_0x423994+':'+_0x1561a6['id'],_0x1561a6);SmsAccountEvents['emit'](_0x423994,_0x1561a6);_0x39c0a7(null);};}for(var e in events){if(events[_0x67e5('0x7')](e)){var event=events[e];SmsAccount[_0x67e5('0x8')](e,emitEvent(event));}}module[_0x67e5('0x9')]=SmsAccountEvents;
\ No newline at end of file
index d8acbb0..1c55f50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25d2=['exports','define','SmsAccount','sms_accounts','lodash','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./smsAccount.attributes'];(function(_0x4e521f,_0x6f8090){var _0x38d101=function(_0x355485){while(--_0x355485){_0x4e521f['push'](_0x4e521f['shift']());}};_0x38d101(++_0x6f8090);}(_0x25d2,0x16c));var _0x225d=function(_0x5ad08a,_0x2f5f0b){_0x5ad08a=_0x5ad08a-0x0;var _0xb433a4=_0x25d2[_0x5ad08a];return _0xb433a4;};'use strict';var _=require(_0x225d('0x0'));var util=require('util');var logger=require(_0x225d('0x1'))(_0x225d('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x225d('0x3'));var fs=require('fs');var path=require(_0x225d('0x4'));var rimraf=require(_0x225d('0x5'));var config=require(_0x225d('0x6'));var attributes=require(_0x225d('0x7'));module[_0x225d('0x8')]=function(_0x1d7536,_0x683fd4){return _0x1d7536[_0x225d('0x9')](_0x225d('0xa'),attributes,{'tableName':_0x225d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0a3e=['sms_accounts','lodash','../../config/logger','api','moment','bluebird','request-promise','path','./smsAccount.attributes','SmsAccount'];(function(_0x24f2e7,_0x300abd){var _0x4571d0=function(_0x48dfc9){while(--_0x48dfc9){_0x24f2e7['push'](_0x24f2e7['shift']());}};_0x4571d0(++_0x300abd);}(_0x0a3e,0x79));var _0xe0a3=function(_0x13722d,_0x4c3404){_0x13722d=_0x13722d-0x0;var _0x5d9a5a=_0x0a3e[_0x13722d];return _0x5d9a5a;};'use strict';var _=require(_0xe0a3('0x0'));var util=require('util');var logger=require(_0xe0a3('0x1'))(_0xe0a3('0x2'));var moment=require(_0xe0a3('0x3'));var BPromise=require(_0xe0a3('0x4'));var rp=require(_0xe0a3('0x5'));var fs=require('fs');var path=require(_0xe0a3('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xe0a3('0x7'));module['exports']=function(_0x4745d9,_0x56c082){return _0x4745d9['define'](_0xe0a3('0x8'),attributes,{'tableName':_0xe0a3('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8f8443d..5c2cc7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9978=['info','SmsAccount,\x20%s,\x20%s','debug','SmsAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','ShowSmsAccount','SmsAccount','find','options','raw','where','include','map','attributes','model','then','stringify','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./smsAccount.socket','register'];(function(_0x2a84dd,_0xe3c8ba){var _0x5e9879=function(_0x1c9e54){while(--_0x1c9e54){_0x2a84dd['push'](_0x2a84dd['shift']());}};_0x5e9879(++_0xe3c8ba);}(_0x9978,0xb2));var _0x8997=function(_0x290c0e,_0x4d8a04){_0x290c0e=_0x290c0e-0x0;var _0x513c4f=_0x9978[_0x290c0e];return _0x513c4f;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x8997('0x0'));var BPromise=require('bluebird');var rs=require(_0x8997('0x1'));var fs=require('fs');var Redis=require(_0x8997('0x2'));var db=require(_0x8997('0x3'))['db'];var utils=require(_0x8997('0x4'));var logger=require(_0x8997('0x5'))(_0x8997('0x6'));var config=require(_0x8997('0x7'));var jayson=require(_0x8997('0x8'));var client=jayson[_0x8997('0x9')][_0x8997('0xa')]({'port':0x232a});config[_0x8997('0xb')]=_[_0x8997('0xc')](config[_0x8997('0xb')],{'host':_0x8997('0xd'),'port':0x18eb});var socket=require(_0x8997('0xe'))(new Redis(config[_0x8997('0xb')]));require(_0x8997('0xf'))[_0x8997('0x10')](socket);function respondWithRpcPromise(_0x13f003,_0x46870d,_0x532f27){return new BPromise(function(_0x2ea3b9,_0x22dd44){return client['request'](_0x13f003,_0x532f27)['then'](function(_0x52a29c){logger[_0x8997('0x11')](_0x8997('0x12'),_0x46870d,'request\x20sent');logger[_0x8997('0x13')](_0x8997('0x14'),_0x46870d,_0x8997('0x15'),JSON['stringify'](_0x52a29c));if(_0x52a29c[_0x8997('0x16')]){if(_0x52a29c[_0x8997('0x16')][_0x8997('0x17')]===0x1f4){logger['error'](_0x8997('0x12'),_0x46870d,_0x52a29c[_0x8997('0x16')]['message']);return _0x22dd44(_0x52a29c[_0x8997('0x16')][_0x8997('0x18')]);}logger['error'](_0x8997('0x12'),_0x46870d,_0x52a29c['error'][_0x8997('0x18')]);return _0x2ea3b9(_0x52a29c['error'][_0x8997('0x18')]);}else{logger[_0x8997('0x11')](_0x8997('0x12'),_0x46870d,_0x8997('0x15'));_0x2ea3b9(_0x52a29c[_0x8997('0x19')]['message']);}})[_0x8997('0x1a')](function(_0x47f7c2){logger[_0x8997('0x16')](_0x8997('0x12'),_0x46870d,_0x47f7c2);_0x22dd44(_0x47f7c2);});});}exports[_0x8997('0x1b')]=function(_0x5240a4){var _0x37d9e8=this;return new Promise(function(_0x19951e,_0x130b55){return db[_0x8997('0x1c')][_0x8997('0x1d')]({'raw':_0x5240a4['options']?_0x5240a4[_0x8997('0x1e')][_0x8997('0x1f')]===undefined?!![]:![]:!![],'where':_0x5240a4['options']?_0x5240a4[_0x8997('0x1e')][_0x8997('0x20')]||null:null,'attributes':_0x5240a4[_0x8997('0x1e')]?_0x5240a4[_0x8997('0x1e')]['attributes']||null:null,'include':_0x5240a4[_0x8997('0x1e')]?_0x5240a4[_0x8997('0x1e')][_0x8997('0x21')]?_[_0x8997('0x22')](_0x5240a4[_0x8997('0x1e')]['include'],function(_0x363270){return{'model':db[_0x363270['model']],'as':_0x363270['as'],'attributes':_0x363270[_0x8997('0x23')],'include':_0x363270[_0x8997('0x21')]?_[_0x8997('0x22')](_0x363270['include'],function(_0x34b380){return{'model':db[_0x34b380[_0x8997('0x24')]],'as':_0x34b380['as'],'attributes':_0x34b380['attributes'],'include':_0x34b380[_0x8997('0x21')]?_['map'](_0x34b380[_0x8997('0x21')],function(_0x57b289){return{'model':db[_0x57b289[_0x8997('0x24')]],'as':_0x57b289['as'],'attributes':_0x57b289[_0x8997('0x23')]};}):[]};}):[]};}):[]:[]})[_0x8997('0x25')](function(_0x31b26c){logger[_0x8997('0x11')]('ShowSmsAccount',_0x5240a4);logger[_0x8997('0x13')](_0x8997('0x1b'),_0x5240a4,JSON[_0x8997('0x26')](_0x31b26c));_0x19951e(_0x31b26c);})[_0x8997('0x1a')](function(_0x15bc43){logger['error'](_0x8997('0x1b'),_0x15bc43[_0x8997('0x18')],_0x5240a4);_0x130b55(_0x37d9e8[_0x8997('0x16')](0x1f4,_0x15bc43[_0x8997('0x18')]));});});};
\ No newline at end of file
+var _0x7e8e=['./smsAccount.socket','request','then','info','SmsAccount,\x20%s,\x20%s','debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','ShowSmsAccount','SmsAccount','find','options','attributes','include','map','model','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults'];(function(_0x5bfa44,_0x76dacc){var _0x43815f=function(_0x307fca){while(--_0x307fca){_0x5bfa44['push'](_0x5bfa44['shift']());}};_0x43815f(++_0x76dacc);}(_0x7e8e,0x1e9));var _0xe7e8=function(_0x171fa7,_0x587eca){_0x171fa7=_0x171fa7-0x0;var _0xc894e1=_0x7e8e[_0x171fa7];return _0xc894e1;};'use strict';var _=require(_0xe7e8('0x0'));var util=require(_0xe7e8('0x1'));var moment=require(_0xe7e8('0x2'));var BPromise=require(_0xe7e8('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe7e8('0x4'));var db=require(_0xe7e8('0x5'))['db'];var utils=require(_0xe7e8('0x6'));var logger=require(_0xe7e8('0x7'))(_0xe7e8('0x8'));var config=require(_0xe7e8('0x9'));var jayson=require(_0xe7e8('0xa'));var client=jayson[_0xe7e8('0xb')][_0xe7e8('0xc')]({'port':0x232a});config[_0xe7e8('0xd')]=_[_0xe7e8('0xe')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe7e8('0xd')]));require(_0xe7e8('0xf'))['register'](socket);function respondWithRpcPromise(_0xbe841c,_0x301236,_0x416145){return new BPromise(function(_0x3c904f,_0x107dfa){return client[_0xe7e8('0x10')](_0xbe841c,_0x416145)[_0xe7e8('0x11')](function(_0x18e463){logger[_0xe7e8('0x12')](_0xe7e8('0x13'),_0x301236,'request\x20sent');logger[_0xe7e8('0x14')](_0xe7e8('0x15'),_0x301236,'request\x20sent',JSON[_0xe7e8('0x16')](_0x18e463));if(_0x18e463[_0xe7e8('0x17')]){if(_0x18e463[_0xe7e8('0x17')]['code']===0x1f4){logger[_0xe7e8('0x17')](_0xe7e8('0x13'),_0x301236,_0x18e463['error'][_0xe7e8('0x18')]);return _0x107dfa(_0x18e463[_0xe7e8('0x17')][_0xe7e8('0x18')]);}logger[_0xe7e8('0x17')](_0xe7e8('0x13'),_0x301236,_0x18e463[_0xe7e8('0x17')][_0xe7e8('0x18')]);return _0x3c904f(_0x18e463[_0xe7e8('0x17')][_0xe7e8('0x18')]);}else{logger[_0xe7e8('0x12')]('SmsAccount,\x20%s,\x20%s',_0x301236,_0xe7e8('0x19'));_0x3c904f(_0x18e463[_0xe7e8('0x1a')]['message']);}})['catch'](function(_0x5785a3){logger['error'](_0xe7e8('0x13'),_0x301236,_0x5785a3);_0x107dfa(_0x5785a3);});});}exports[_0xe7e8('0x1b')]=function(_0x27c826){var _0x57ea51=this;return new Promise(function(_0x1f4e30,_0x3af429){return db[_0xe7e8('0x1c')][_0xe7e8('0x1d')]({'raw':_0x27c826['options']?_0x27c826['options']['raw']===undefined?!![]:![]:!![],'where':_0x27c826[_0xe7e8('0x1e')]?_0x27c826[_0xe7e8('0x1e')]['where']||null:null,'attributes':_0x27c826[_0xe7e8('0x1e')]?_0x27c826['options'][_0xe7e8('0x1f')]||null:null,'include':_0x27c826['options']?_0x27c826[_0xe7e8('0x1e')][_0xe7e8('0x20')]?_[_0xe7e8('0x21')](_0x27c826[_0xe7e8('0x1e')]['include'],function(_0x578e5b){return{'model':db[_0x578e5b[_0xe7e8('0x22')]],'as':_0x578e5b['as'],'attributes':_0x578e5b[_0xe7e8('0x1f')],'include':_0x578e5b[_0xe7e8('0x20')]?_[_0xe7e8('0x21')](_0x578e5b[_0xe7e8('0x20')],function(_0x34b5fe){return{'model':db[_0x34b5fe['model']],'as':_0x34b5fe['as'],'attributes':_0x34b5fe['attributes'],'include':_0x34b5fe[_0xe7e8('0x20')]?_[_0xe7e8('0x21')](_0x34b5fe[_0xe7e8('0x20')],function(_0x1f3905){return{'model':db[_0x1f3905['model']],'as':_0x1f3905['as'],'attributes':_0x1f3905[_0xe7e8('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xe7e8('0x11')](function(_0x4a604b){logger['info']('ShowSmsAccount',_0x27c826);logger[_0xe7e8('0x14')](_0xe7e8('0x1b'),_0x27c826,JSON['stringify'](_0x4a604b));_0x1f4e30(_0x4a604b);})[_0xe7e8('0x23')](function(_0x20df9d){logger[_0xe7e8('0x17')]('ShowSmsAccount',_0x20df9d['message'],_0x27c826);_0x3af429(_0x57ea51[_0xe7e8('0x17')](0x1f4,_0x20df9d[_0xe7e8('0x18')]));});});};
\ No newline at end of file
index 17b4d76..ad1633d 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(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0xa9e0,0x123));var _0x0a9e=function(_0x43d11d,_0xccff91){_0x43d11d=_0x43d11d-0x0;var _0x38cd08=_0xa9e0[_0x43d11d];return _0x38cd08;};'use strict';var SmsAccountEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){SmsAccountEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);SmsAccountEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
+var _0xa9e0=['register','length','smsAccount:','./smsAccount.events','save','remove','emit','removeListener'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x13ea00,_0x12f610){_0x13ea00=_0x13ea00-0x0;var _0x1f7347=_0xa9e0[_0x13ea00];return _0x1f7347;};'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 b31d28f..2230e2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['update','delete','/:id','destroy','exports','multer','util','Router','fs-extra','../../components/interaction/service','../../config/environment','./smsApplication.controller','get','isAuthenticated','index','show','create'];(function(_0xa5991b,_0x39b0b9){var _0x392487=function(_0x2fcb2a){while(--_0x2fcb2a){_0xa5991b['push'](_0xa5991b['shift']());}};_0x392487(++_0x39b0b9);}(_0x55ca,0x126));var _0xa55c=function(_0x4a055e,_0x59b80a){_0x4a055e=_0x4a055e-0x0;var _0x328a29=_0x55ca[_0x4a055e];return _0x328a29;};'use strict';var multer=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa55c('0x2')]();var fs_extra=require(_0xa55c('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xa55c('0x4'));var config=require(_0xa55c('0x5'));var controller=require(_0xa55c('0x6'));router[_0xa55c('0x7')]('/',auth[_0xa55c('0x8')](),controller[_0xa55c('0x9')]);router[_0xa55c('0x7')]('/:id',auth[_0xa55c('0x8')](),controller[_0xa55c('0xa')]);router['post']('/',auth[_0xa55c('0x8')](),controller[_0xa55c('0xb')]);router['put']('/:id',auth[_0xa55c('0x8')](),controller[_0xa55c('0xc')]);router[_0xa55c('0xd')](_0xa55c('0xe'),auth[_0xa55c('0x8')](),controller[_0xa55c('0xf')]);module[_0xa55c('0x10')]=router;
\ No newline at end of file
+var _0x34e8=['../../config/environment','./smsApplication.controller','get','index','/:id','isAuthenticated','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x29c2bb,_0x1bde54){var _0x5446f1=function(_0x106117){while(--_0x106117){_0x29c2bb['push'](_0x29c2bb['shift']());}};_0x5446f1(++_0x1bde54);}(_0x34e8,0x12c));var _0x834e=function(_0x1611d9,_0x3a6ab0){_0x1611d9=_0x1611d9-0x0;var _0x1f4230=_0x34e8[_0x1611d9];return _0x1f4230;};'use strict';var multer=require(_0x834e('0x0'));var util=require(_0x834e('0x1'));var path=require(_0x834e('0x2'));var timeout=require(_0x834e('0x3'));var express=require('express');var router=express[_0x834e('0x4')]();var fs_extra=require(_0x834e('0x5'));var auth=require(_0x834e('0x6'));var interaction=require(_0x834e('0x7'));var config=require(_0x834e('0x8'));var controller=require(_0x834e('0x9'));router[_0x834e('0xa')]('/',auth['isAuthenticated'](),controller[_0x834e('0xb')]);router['get'](_0x834e('0xc'),auth[_0x834e('0xd')](),controller[_0x834e('0xe')]);router[_0x834e('0xf')]('/',auth[_0x834e('0xd')](),controller[_0x834e('0x10')]);router[_0x834e('0x11')](_0x834e('0xc'),auth[_0x834e('0xd')](),controller[_0x834e('0x12')]);router[_0x834e('0x13')](_0x834e('0xc'),auth[_0x834e('0xd')](),controller[_0x834e('0x14')]);module[_0x834e('0x15')]=router;
\ No newline at end of file
index 2a1a4d7..f87454c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8312=['noop','TEXT','*,*,*,*','sequelize','INTEGER','STRING'];(function(_0x3213c7,_0x1ec702){var _0x1f1e58=function(_0x4c5401){while(--_0x4c5401){_0x3213c7['push'](_0x3213c7['shift']());}};_0x1f1e58(++_0x1ec702);}(_0x8312,0xe7));var _0x2831=function(_0x826fae,_0x7a32ce){_0x826fae=_0x826fae-0x0;var _0x53ed77=_0x8312[_0x826fae];return _0x53ed77;};'use strict';var Sequelize=require(_0x2831('0x0'));module['exports']={'priority':{'type':Sequelize[_0x2831('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x2831('0x2')],'allowNull':![],'defaultValue':_0x2831('0x3')},'appdata':{'type':Sequelize[_0x2831('0x4')]()},'description':{'type':Sequelize[_0x2831('0x2')]},'interval':{'type':Sequelize[_0x2831('0x2')],'defaultValue':_0x2831('0x5')}};
\ No newline at end of file
+var _0x3b76=['STRING','noop','TEXT','*,*,*,*','sequelize','exports'];(function(_0x273c39,_0x1052e6){var _0x46d6b5=function(_0x44f1fb){while(--_0x44f1fb){_0x273c39['push'](_0x273c39['shift']());}};_0x46d6b5(++_0x1052e6);}(_0x3b76,0x160));var _0x63b7=function(_0x2b3ff4,_0x571d5d){_0x2b3ff4=_0x2b3ff4-0x0;var _0x3bfec9=_0x3b76[_0x2b3ff4];return _0x3bfec9;};'use strict';var Sequelize=require(_0x63b7('0x0'));module[_0x63b7('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x63b7('0x2')],'allowNull':![],'defaultValue':_0x63b7('0x3')},'appdata':{'type':Sequelize[_0x63b7('0x4')]()},'description':{'type':Sequelize[_0x63b7('0x2')]},'interval':{'type':Sequelize[_0x63b7('0x2')],'defaultValue':_0x63b7('0x5')}};
\ No newline at end of file
index c36ea58..2e0a181 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe186=['crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','destroy','error','stack','name','send','map','SmsApplication','rawAttributes','fieldName','type','key','model','keys','filters','intersection','query','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','options','includeAll','include','findAll','then','catch','show','params','find','create','body','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','squel'];(function(_0x3e2d1c,_0x3ef174){var _0x2e2f15=function(_0xfafd3b){while(--_0xfafd3b){_0x3e2d1c['push'](_0x3e2d1c['shift']());}};_0x2e2f15(++_0x3ef174);}(_0xe186,0x174));var _0x6e18=function(_0x37760a,_0x327c5e){_0x37760a=_0x37760a-0x0;var _0x1684ff=_0xe186[_0x37760a];return _0x1684ff;};'use strict';var emlformat=require(_0x6e18('0x0'));var rimraf=require(_0x6e18('0x1'));var zipdir=require(_0x6e18('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6e18('0x3'));var moment=require(_0x6e18('0x4'));var BPromise=require(_0x6e18('0x5'));var Mustache=require('mustache');var util=require(_0x6e18('0x6'));var path=require(_0x6e18('0x7'));var sox=require(_0x6e18('0x8'));var csv=require('to-csv');var ejs=require(_0x6e18('0x9'));var fs=require('fs');var fs_extra=require(_0x6e18('0xa'));var _=require(_0x6e18('0xb'));var squel=require(_0x6e18('0xc'));var crypto=require(_0x6e18('0xd'));var jsforce=require(_0x6e18('0xe'));var deskjs=require(_0x6e18('0xf'));var toCsv=require('to-csv');var querystring=require(_0x6e18('0x10'));var Papa=require(_0x6e18('0x11'));var Redis=require('ioredis');var authService=require(_0x6e18('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6e18('0x13'));var logger=require('../../config/logger')(_0x6e18('0x14'));var utils=require(_0x6e18('0x15'));var config=require(_0x6e18('0x16'));var licenseUtil=require(_0x6e18('0x17'));var db=require(_0x6e18('0x18'))['db'];function respondWithStatusCode(_0x1b770a,_0x435485){_0x435485=_0x435485||0xcc;return function(_0x20bb71){if(_0x20bb71){return _0x1b770a[_0x6e18('0x19')](_0x435485);}return _0x1b770a[_0x6e18('0x1a')](_0x435485)[_0x6e18('0x1b')]();};}function respondWithResult(_0x2bbf2,_0x52adb7){_0x52adb7=_0x52adb7||0xc8;return function(_0x1c9a22){if(_0x1c9a22){return _0x2bbf2[_0x6e18('0x1a')](_0x52adb7)['json'](_0x1c9a22);}};}function respondWithFilteredResult(_0x1998ed,_0x182c36){return function(_0x3cc632){if(_0x3cc632){var _0x47f76c=typeof _0x182c36[_0x6e18('0x1c')]===_0x6e18('0x1d')&&typeof _0x182c36[_0x6e18('0x1e')]===_0x6e18('0x1d');var _0x1a809d=_0x3cc632[_0x6e18('0x1f')];var _0x9143ac=_0x47f76c?0x0:_0x182c36[_0x6e18('0x1c')];var _0x195b4d=_0x47f76c?_0x3cc632[_0x6e18('0x1f')]:_0x182c36[_0x6e18('0x1c')]+_0x182c36[_0x6e18('0x1e')];var _0x5cf9fe;if(_0x195b4d>=_0x1a809d){_0x195b4d=_0x1a809d;_0x5cf9fe=0xc8;}else{_0x5cf9fe=0xce;}_0x1998ed[_0x6e18('0x1a')](_0x5cf9fe);return _0x1998ed[_0x6e18('0x20')](_0x6e18('0x21'),_0x9143ac+'-'+_0x195b4d+'/'+_0x1a809d)[_0x6e18('0x22')](_0x3cc632);}return null;};}function patchUpdates(_0x3d7779){return function(_0x260f95){try{jsonpatch[_0x6e18('0x23')](_0x260f95,_0x3d7779,!![]);}catch(_0x9ee2d5){return BPromise[_0x6e18('0x24')](_0x9ee2d5);}return _0x260f95[_0x6e18('0x25')]();};}function saveUpdates(_0x52ef3d,_0x1217d5){return function(_0x1df395){if(_0x1df395){return _0x1df395[_0x6e18('0x26')](_0x52ef3d)['then'](function(_0x423681){return _0x423681;});}return null;};}function removeEntity(_0x5dd5f6,_0x3cfc30){return function(_0x43fe97){if(_0x43fe97){return _0x43fe97[_0x6e18('0x27')]()['then'](function(){_0x5dd5f6['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5b0f31,_0x538553){return function(_0x5e91c1){if(!_0x5e91c1){_0x5b0f31['sendStatus'](0x194);}return _0x5e91c1;};}function handleError(_0x2a79dd,_0x458e77){_0x458e77=_0x458e77||0x1f4;return function(_0x562bfa){logger[_0x6e18('0x28')](_0x562bfa[_0x6e18('0x29')]);if(_0x562bfa[_0x6e18('0x2a')]){delete _0x562bfa[_0x6e18('0x2a')];}_0x2a79dd['status'](_0x458e77)[_0x6e18('0x2b')](_0x562bfa);};}exports['index']=function(_0x29d973,_0x35eee6){var _0x4f52b5={},_0x40a10a={},_0x528f0a={'count':0x0,'rows':[]};var _0x4d78ad=_[_0x6e18('0x2c')](db[_0x6e18('0x2d')][_0x6e18('0x2e')],function(_0x23f9f4){return{'name':_0x23f9f4[_0x6e18('0x2f')],'type':_0x23f9f4[_0x6e18('0x30')][_0x6e18('0x31')]};});_0x40a10a[_0x6e18('0x32')]=_[_0x6e18('0x2c')](_0x4d78ad,'name');_0x40a10a['query']=_[_0x6e18('0x33')](_0x29d973['query']);_0x40a10a[_0x6e18('0x34')]=_[_0x6e18('0x35')](_0x40a10a[_0x6e18('0x32')],_0x40a10a[_0x6e18('0x36')]);_0x4f52b5['attributes']=_['intersection'](_0x40a10a[_0x6e18('0x32')],qs[_0x6e18('0x37')](_0x29d973[_0x6e18('0x36')][_0x6e18('0x37')]));_0x4f52b5[_0x6e18('0x38')]=_0x4f52b5[_0x6e18('0x38')][_0x6e18('0x39')]?_0x4f52b5[_0x6e18('0x38')]:_0x40a10a[_0x6e18('0x32')];if(!_0x29d973[_0x6e18('0x36')][_0x6e18('0x3a')](_0x6e18('0x3b'))){_0x4f52b5[_0x6e18('0x1e')]=qs[_0x6e18('0x1e')](_0x29d973['query'][_0x6e18('0x1e')]);_0x4f52b5[_0x6e18('0x1c')]=qs[_0x6e18('0x1c')](_0x29d973[_0x6e18('0x36')]['offset']);}_0x4f52b5[_0x6e18('0x3c')]=qs[_0x6e18('0x3d')](_0x29d973['query'][_0x6e18('0x3d')]);_0x4f52b5['where']=qs['filters'](_[_0x6e18('0x3e')](_0x29d973[_0x6e18('0x36')],_0x40a10a[_0x6e18('0x34')]),_0x4d78ad);if(_0x29d973[_0x6e18('0x36')][_0x6e18('0x3f')]){_0x4f52b5[_0x6e18('0x40')]=_[_0x6e18('0x41')](_0x4f52b5[_0x6e18('0x40')],{'$or':_[_0x6e18('0x2c')](_0x4d78ad,function(_0x41ae2e){if(_0x41ae2e[_0x6e18('0x30')]!=='VIRTUAL'){var _0x3050da={};_0x3050da[_0x41ae2e[_0x6e18('0x2a')]]={'$like':'%'+_0x29d973[_0x6e18('0x36')][_0x6e18('0x3f')]+'%'};return _0x3050da;}})});}_0x4f52b5=_['merge']({},_0x4f52b5,_0x29d973[_0x6e18('0x42')]);var _0x3ad3d6={'where':_0x4f52b5[_0x6e18('0x40')]};return db['SmsApplication']['count'](_0x3ad3d6)['then'](function(_0x13b620){_0x528f0a[_0x6e18('0x1f')]=_0x13b620;if(_0x29d973['query'][_0x6e18('0x43')]){_0x4f52b5[_0x6e18('0x44')]=[{'all':!![]}];}return db[_0x6e18('0x2d')][_0x6e18('0x45')](_0x4f52b5);})['then'](function(_0x573084){_0x528f0a['rows']=_0x573084;return _0x528f0a;})[_0x6e18('0x46')](respondWithFilteredResult(_0x35eee6,_0x4f52b5))[_0x6e18('0x47')](handleError(_0x35eee6,null));};exports[_0x6e18('0x48')]=function(_0x3b3742,_0x1747b5){var _0x49a7e9={'raw':!![],'where':{'id':_0x3b3742[_0x6e18('0x49')]['id']}},_0x5f2436={};_0x5f2436['model']=_['keys'](db['SmsApplication'][_0x6e18('0x2e')]);_0x5f2436[_0x6e18('0x36')]=_[_0x6e18('0x33')](_0x3b3742[_0x6e18('0x36')]);_0x5f2436['filters']=_['intersection'](_0x5f2436['model'],_0x5f2436[_0x6e18('0x36')]);_0x49a7e9['attributes']=_[_0x6e18('0x35')](_0x5f2436[_0x6e18('0x32')],qs[_0x6e18('0x37')](_0x3b3742[_0x6e18('0x36')]['fields']));_0x49a7e9[_0x6e18('0x38')]=_0x49a7e9[_0x6e18('0x38')][_0x6e18('0x39')]?_0x49a7e9['attributes']:_0x5f2436['model'];if(_0x3b3742[_0x6e18('0x36')][_0x6e18('0x43')]){_0x49a7e9['include']=[{'all':!![]}];}_0x49a7e9=_[_0x6e18('0x41')]({},_0x49a7e9,_0x3b3742[_0x6e18('0x42')]);return db[_0x6e18('0x2d')][_0x6e18('0x4a')](_0x49a7e9)[_0x6e18('0x46')](handleEntityNotFound(_0x1747b5,null))['then'](respondWithResult(_0x1747b5,null))[_0x6e18('0x47')](handleError(_0x1747b5,null));};exports['create']=function(_0x2d54e5,_0xf350c5){return db['SmsApplication'][_0x6e18('0x4b')](_0x2d54e5['body'],{})['then'](respondWithResult(_0xf350c5,0xc9))[_0x6e18('0x47')](handleError(_0xf350c5,null));};exports[_0x6e18('0x26')]=function(_0x4fc3d3,_0x1b6df7){if(_0x4fc3d3[_0x6e18('0x4c')]['id']){delete _0x4fc3d3['body']['id'];}return db[_0x6e18('0x2d')][_0x6e18('0x4a')]({'where':{'id':_0x4fc3d3[_0x6e18('0x49')]['id']}})[_0x6e18('0x46')](handleEntityNotFound(_0x1b6df7,null))[_0x6e18('0x46')](saveUpdates(_0x4fc3d3[_0x6e18('0x4c')],null))[_0x6e18('0x46')](respondWithResult(_0x1b6df7,null))[_0x6e18('0x47')](handleError(_0x1b6df7,null));};exports['destroy']=function(_0x5aacb3,_0x4d8418){return db[_0x6e18('0x2d')][_0x6e18('0x4a')]({'where':{'id':_0x5aacb3[_0x6e18('0x49')]['id']}})[_0x6e18('0x46')](handleEntityNotFound(_0x4d8418,null))[_0x6e18('0x46')](removeEntity(_0x4d8418,null))[_0x6e18('0x47')](handleError(_0x4d8418,null));};
\ No newline at end of file
+var _0x5fe8=['error','stack','name','index','map','SmsApplication','rawAttributes','fieldName','key','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','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','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','json','apply','save','update','destroy','then'];(function(_0x19cd25,_0x86e97d){var _0x1d0668=function(_0xe5165b){while(--_0xe5165b){_0x19cd25['push'](_0x19cd25['shift']());}};_0x1d0668(++_0x86e97d);}(_0x5fe8,0xbc));var _0x85fe=function(_0x4a7767,_0x46a70b){_0x4a7767=_0x4a7767-0x0;var _0x1ef8f7=_0x5fe8[_0x4a7767];return _0x1ef8f7;};'use strict';var emlformat=require(_0x85fe('0x0'));var rimraf=require(_0x85fe('0x1'));var zipdir=require(_0x85fe('0x2'));var jsonpatch=require(_0x85fe('0x3'));var rp=require(_0x85fe('0x4'));var moment=require(_0x85fe('0x5'));var BPromise=require(_0x85fe('0x6'));var Mustache=require('mustache');var util=require(_0x85fe('0x7'));var path=require(_0x85fe('0x8'));var sox=require(_0x85fe('0x9'));var csv=require('to-csv');var ejs=require(_0x85fe('0xa'));var fs=require('fs');var fs_extra=require(_0x85fe('0xb'));var _=require(_0x85fe('0xc'));var squel=require('squel');var crypto=require(_0x85fe('0xd'));var jsforce=require(_0x85fe('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x85fe('0xf'));var Papa=require(_0x85fe('0x10'));var Redis=require(_0x85fe('0x11'));var authService=require(_0x85fe('0x12'));var qs=require(_0x85fe('0x13'));var as=require(_0x85fe('0x14'));var hardwareService=require(_0x85fe('0x15'));var logger=require('../../config/logger')(_0x85fe('0x16'));var utils=require(_0x85fe('0x17'));var config=require(_0x85fe('0x18'));var licenseUtil=require(_0x85fe('0x19'));var db=require(_0x85fe('0x1a'))['db'];function respondWithStatusCode(_0x6ad98f,_0x5b3cc0){_0x5b3cc0=_0x5b3cc0||0xcc;return function(_0x1de8f0){if(_0x1de8f0){return _0x6ad98f[_0x85fe('0x1b')](_0x5b3cc0);}return _0x6ad98f[_0x85fe('0x1c')](_0x5b3cc0)[_0x85fe('0x1d')]();};}function respondWithResult(_0x3f8c6b,_0x282d04){_0x282d04=_0x282d04||0xc8;return function(_0xf4d1){if(_0xf4d1){return _0x3f8c6b[_0x85fe('0x1c')](_0x282d04)['json'](_0xf4d1);}};}function respondWithFilteredResult(_0x110f2d,_0x280860){return function(_0x273cdb){if(_0x273cdb){var _0x463c74=typeof _0x280860[_0x85fe('0x1e')]===_0x85fe('0x1f')&&typeof _0x280860[_0x85fe('0x20')]===_0x85fe('0x1f');var _0x39bc99=_0x273cdb['count'];var _0x941f08=_0x463c74?0x0:_0x280860['offset'];var _0x5ad915=_0x463c74?_0x273cdb[_0x85fe('0x21')]:_0x280860[_0x85fe('0x1e')]+_0x280860[_0x85fe('0x20')];var _0x200783;if(_0x5ad915>=_0x39bc99){_0x5ad915=_0x39bc99;_0x200783=0xc8;}else{_0x200783=0xce;}_0x110f2d[_0x85fe('0x1c')](_0x200783);return _0x110f2d['set']('Content-Range',_0x941f08+'-'+_0x5ad915+'/'+_0x39bc99)[_0x85fe('0x22')](_0x273cdb);}return null;};}function patchUpdates(_0x289822){return function(_0x215a1b){try{jsonpatch[_0x85fe('0x23')](_0x215a1b,_0x289822,!![]);}catch(_0x500f0d){return BPromise['reject'](_0x500f0d);}return _0x215a1b[_0x85fe('0x24')]();};}function saveUpdates(_0x180def,_0x269d03){return function(_0x40df6e){if(_0x40df6e){return _0x40df6e[_0x85fe('0x25')](_0x180def)['then'](function(_0x258fdc){return _0x258fdc;});}return null;};}function removeEntity(_0x47b31c,_0x1564f3){return function(_0x501eed){if(_0x501eed){return _0x501eed[_0x85fe('0x26')]()[_0x85fe('0x27')](function(){_0x47b31c[_0x85fe('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x323838,_0x1b5016){return function(_0x206dc7){if(!_0x206dc7){_0x323838[_0x85fe('0x1b')](0x194);}return _0x206dc7;};}function handleError(_0x5e3afd,_0x543bcf){_0x543bcf=_0x543bcf||0x1f4;return function(_0x2a0765){logger[_0x85fe('0x28')](_0x2a0765[_0x85fe('0x29')]);if(_0x2a0765[_0x85fe('0x2a')]){delete _0x2a0765[_0x85fe('0x2a')];}_0x5e3afd['status'](_0x543bcf)['send'](_0x2a0765);};}exports[_0x85fe('0x2b')]=function(_0x30246d,_0x598c51){var _0x463b71={},_0x1f84e3={},_0x4867cc={'count':0x0,'rows':[]};var _0x2e4f37=_[_0x85fe('0x2c')](db[_0x85fe('0x2d')][_0x85fe('0x2e')],function(_0x5ec635){return{'name':_0x5ec635[_0x85fe('0x2f')],'type':_0x5ec635['type'][_0x85fe('0x30')]};});_0x1f84e3['model']=_[_0x85fe('0x2c')](_0x2e4f37,_0x85fe('0x2a'));_0x1f84e3[_0x85fe('0x31')]=_['keys'](_0x30246d[_0x85fe('0x31')]);_0x1f84e3[_0x85fe('0x32')]=_[_0x85fe('0x33')](_0x1f84e3['model'],_0x1f84e3[_0x85fe('0x31')]);_0x463b71['attributes']=_['intersection'](_0x1f84e3[_0x85fe('0x34')],qs[_0x85fe('0x35')](_0x30246d[_0x85fe('0x31')][_0x85fe('0x35')]));_0x463b71['attributes']=_0x463b71[_0x85fe('0x36')][_0x85fe('0x37')]?_0x463b71[_0x85fe('0x36')]:_0x1f84e3[_0x85fe('0x34')];if(!_0x30246d['query'][_0x85fe('0x38')](_0x85fe('0x39'))){_0x463b71[_0x85fe('0x20')]=qs[_0x85fe('0x20')](_0x30246d['query'][_0x85fe('0x20')]);_0x463b71[_0x85fe('0x1e')]=qs[_0x85fe('0x1e')](_0x30246d[_0x85fe('0x31')][_0x85fe('0x1e')]);}_0x463b71[_0x85fe('0x3a')]=qs[_0x85fe('0x3b')](_0x30246d['query']['sort']);_0x463b71['where']=qs[_0x85fe('0x32')](_[_0x85fe('0x3c')](_0x30246d[_0x85fe('0x31')],_0x1f84e3[_0x85fe('0x32')]),_0x2e4f37);if(_0x30246d[_0x85fe('0x31')][_0x85fe('0x3d')]){_0x463b71[_0x85fe('0x3e')]=_[_0x85fe('0x3f')](_0x463b71[_0x85fe('0x3e')],{'$or':_['map'](_0x2e4f37,function(_0x3055f5){if(_0x3055f5['type']!=='VIRTUAL'){var _0x435abb={};_0x435abb[_0x3055f5[_0x85fe('0x2a')]]={'$like':'%'+_0x30246d['query'][_0x85fe('0x3d')]+'%'};return _0x435abb;}})});}_0x463b71=_[_0x85fe('0x3f')]({},_0x463b71,_0x30246d[_0x85fe('0x40')]);var _0x30d6a2={'where':_0x463b71['where']};return db[_0x85fe('0x2d')][_0x85fe('0x21')](_0x30d6a2)[_0x85fe('0x27')](function(_0x3ff46e){_0x4867cc[_0x85fe('0x21')]=_0x3ff46e;if(_0x30246d[_0x85fe('0x31')][_0x85fe('0x41')]){_0x463b71[_0x85fe('0x42')]=[{'all':!![]}];}return db[_0x85fe('0x2d')][_0x85fe('0x43')](_0x463b71);})['then'](function(_0x5c4038){_0x4867cc[_0x85fe('0x44')]=_0x5c4038;return _0x4867cc;})[_0x85fe('0x27')](respondWithFilteredResult(_0x598c51,_0x463b71))[_0x85fe('0x45')](handleError(_0x598c51,null));};exports[_0x85fe('0x46')]=function(_0x24836b,_0x4147f1){var _0x2e0c2f={'raw':!![],'where':{'id':_0x24836b[_0x85fe('0x47')]['id']}},_0x15559c={};_0x15559c[_0x85fe('0x34')]=_[_0x85fe('0x48')](db[_0x85fe('0x2d')][_0x85fe('0x2e')]);_0x15559c[_0x85fe('0x31')]=_['keys'](_0x24836b[_0x85fe('0x31')]);_0x15559c[_0x85fe('0x32')]=_[_0x85fe('0x33')](_0x15559c[_0x85fe('0x34')],_0x15559c[_0x85fe('0x31')]);_0x2e0c2f[_0x85fe('0x36')]=_['intersection'](_0x15559c[_0x85fe('0x34')],qs[_0x85fe('0x35')](_0x24836b['query'][_0x85fe('0x35')]));_0x2e0c2f[_0x85fe('0x36')]=_0x2e0c2f['attributes'][_0x85fe('0x37')]?_0x2e0c2f[_0x85fe('0x36')]:_0x15559c[_0x85fe('0x34')];if(_0x24836b[_0x85fe('0x31')][_0x85fe('0x41')]){_0x2e0c2f['include']=[{'all':!![]}];}_0x2e0c2f=_[_0x85fe('0x3f')]({},_0x2e0c2f,_0x24836b[_0x85fe('0x40')]);return db[_0x85fe('0x2d')][_0x85fe('0x49')](_0x2e0c2f)['then'](handleEntityNotFound(_0x4147f1,null))[_0x85fe('0x27')](respondWithResult(_0x4147f1,null))[_0x85fe('0x45')](handleError(_0x4147f1,null));};exports[_0x85fe('0x4a')]=function(_0x393f06,_0x5a054d){return db['SmsApplication'][_0x85fe('0x4a')](_0x393f06['body'],{})[_0x85fe('0x27')](respondWithResult(_0x5a054d,0xc9))[_0x85fe('0x45')](handleError(_0x5a054d,null));};exports['update']=function(_0x3aee55,_0x5c1eec){if(_0x3aee55['body']['id']){delete _0x3aee55[_0x85fe('0x4b')]['id'];}return db[_0x85fe('0x2d')]['find']({'where':{'id':_0x3aee55[_0x85fe('0x47')]['id']}})[_0x85fe('0x27')](handleEntityNotFound(_0x5c1eec,null))['then'](saveUpdates(_0x3aee55['body'],null))[_0x85fe('0x27')](respondWithResult(_0x5c1eec,null))[_0x85fe('0x45')](handleError(_0x5c1eec,null));};exports[_0x85fe('0x26')]=function(_0x49940d,_0x1fb847){return db[_0x85fe('0x2d')]['find']({'where':{'id':_0x49940d[_0x85fe('0x47')]['id']}})['then'](handleEntityNotFound(_0x1fb847,null))[_0x85fe('0x27')](removeEntity(_0x1fb847,null))['catch'](handleError(_0x1fb847,null));};
\ No newline at end of file
index 1fa9e45..719a692 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfee0=['exports','define','sms_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','request-promise','path','../../config/environment'];(function(_0x3e5086,_0x48f4a2){var _0xfeb102=function(_0x5a945f){while(--_0x5a945f){_0x3e5086['push'](_0x3e5086['shift']());}};_0xfeb102(++_0x48f4a2);}(_0xfee0,0x131));var _0x0fee=function(_0x166e33,_0x127e77){_0x166e33=_0x166e33-0x0;var _0x1a2409=_0xfee0[_0x166e33];return _0x1a2409;};'use strict';var _=require(_0x0fee('0x0'));var util=require(_0x0fee('0x1'));var logger=require('../../config/logger')(_0x0fee('0x2'));var moment=require(_0x0fee('0x3'));var BPromise=require('bluebird');var rp=require(_0x0fee('0x4'));var fs=require('fs');var path=require(_0x0fee('0x5'));var rimraf=require('rimraf');var config=require(_0x0fee('0x6'));var attributes=require('./smsApplication.attributes');module[_0x0fee('0x7')]=function(_0x3961e8,_0x5a97ec){return _0x3961e8[_0x0fee('0x8')]('SmsApplication',attributes,{'tableName':_0x0fee('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x0fee('0xa'),'collate':_0x0fee('0xb')});};
\ No newline at end of file
+var _0x1679=['sms_applications','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./smsApplication.attributes','exports','define','SmsApplication'];(function(_0x565c49,_0x54acd0){var _0x20ca34=function(_0x42f7e1){while(--_0x42f7e1){_0x565c49['push'](_0x565c49['shift']());}};_0x20ca34(++_0x54acd0);}(_0x1679,0x193));var _0x9167=function(_0x197739,_0x173ebf){_0x197739=_0x197739-0x0;var _0x225043=_0x1679[_0x197739];return _0x225043;};'use strict';var _=require('lodash');var util=require(_0x9167('0x0'));var logger=require(_0x9167('0x1'))(_0x9167('0x2'));var moment=require(_0x9167('0x3'));var BPromise=require(_0x9167('0x4'));var rp=require(_0x9167('0x5'));var fs=require('fs');var path=require(_0x9167('0x6'));var rimraf=require(_0x9167('0x7'));var config=require(_0x9167('0x8'));var attributes=require(_0x9167('0x9'));module[_0x9167('0xa')]=function(_0x183368,_0x3b83a1){return _0x183368[_0x9167('0xb')](_0x9167('0xc'),attributes,{'tableName':_0x9167('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x9167('0xe'),'collate':_0x9167('0xf')});};
\ No newline at end of file
index dd7aea4..6cd9ad9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1619=['result','catch','moment','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','http','request','SmsApplication,\x20%s,\x20%s','request\x20sent','debug','SmsApplication,\x20%s,\x20%s,\x20%s','stringify','error','message'];(function(_0x2c699e,_0x5e9d6c){var _0x5844e3=function(_0x45b361){while(--_0x45b361){_0x2c699e['push'](_0x2c699e['shift']());}};_0x5844e3(++_0x5e9d6c);}(_0x1619,0x189));var _0x9161=function(_0x3b85c7,_0x1c341c){_0x3b85c7=_0x3b85c7-0x0;var _0x137c8a=_0x1619[_0x3b85c7];return _0x137c8a;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x9161('0x0'));var BPromise=require('bluebird');var rs=require(_0x9161('0x1'));var fs=require('fs');var Redis=require(_0x9161('0x2'));var db=require(_0x9161('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x9161('0x4'))('rpc');var config=require(_0x9161('0x5'));var jayson=require('jayson/promise');var client=jayson['client'][_0x9161('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x280562,_0x4a0ec2,_0xb212e4){return new BPromise(function(_0x1f8240,_0x4f3e87){return client[_0x9161('0x7')](_0x280562,_0xb212e4)['then'](function(_0x3d6e0b){logger['info'](_0x9161('0x8'),_0x4a0ec2,_0x9161('0x9'));logger[_0x9161('0xa')](_0x9161('0xb'),_0x4a0ec2,_0x9161('0x9'),JSON[_0x9161('0xc')](_0x3d6e0b));if(_0x3d6e0b[_0x9161('0xd')]){if(_0x3d6e0b['error']['code']===0x1f4){logger['error']('SmsApplication,\x20%s,\x20%s',_0x4a0ec2,_0x3d6e0b[_0x9161('0xd')]['message']);return _0x4f3e87(_0x3d6e0b[_0x9161('0xd')][_0x9161('0xe')]);}logger[_0x9161('0xd')](_0x9161('0x8'),_0x4a0ec2,_0x3d6e0b[_0x9161('0xd')][_0x9161('0xe')]);return _0x1f8240(_0x3d6e0b[_0x9161('0xd')][_0x9161('0xe')]);}else{logger['info'](_0x9161('0x8'),_0x4a0ec2,_0x9161('0x9'));_0x1f8240(_0x3d6e0b[_0x9161('0xf')]['message']);}})[_0x9161('0x10')](function(_0x2a7261){logger[_0x9161('0xd')]('SmsApplication,\x20%s,\x20%s',_0x4a0ec2,_0x2a7261);_0x4f3e87(_0x2a7261);});});}
\ No newline at end of file
+var _0xffc0=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','info','SmsApplication,\x20%s,\x20%s','request\x20sent','debug','SmsApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','util','bluebird'];(function(_0x313b92,_0x48c2b5){var _0x421fd8=function(_0x667f84){while(--_0x667f84){_0x313b92['push'](_0x313b92['shift']());}};_0x421fd8(++_0x48c2b5);}(_0xffc0,0x1a0));var _0x0ffc=function(_0x58c1f1,_0x18ee73){_0x58c1f1=_0x58c1f1-0x0;var _0x590e00=_0xffc0[_0x58c1f1];return _0x590e00;};'use strict';var _=require('lodash');var util=require(_0x0ffc('0x0'));var moment=require('moment');var BPromise=require(_0x0ffc('0x1'));var rs=require(_0x0ffc('0x2'));var fs=require('fs');var Redis=require(_0x0ffc('0x3'));var db=require(_0x0ffc('0x4'))['db'];var utils=require(_0x0ffc('0x5'));var logger=require(_0x0ffc('0x6'))(_0x0ffc('0x7'));var config=require('../../config/environment');var jayson=require(_0x0ffc('0x8'));var client=jayson[_0x0ffc('0x9')][_0x0ffc('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4bbe45,_0x5f25b3,_0x292a77){return new BPromise(function(_0x3db9d4,_0x14a0a1){return client[_0x0ffc('0xb')](_0x4bbe45,_0x292a77)['then'](function(_0x18ebe){logger[_0x0ffc('0xc')](_0x0ffc('0xd'),_0x5f25b3,_0x0ffc('0xe'));logger[_0x0ffc('0xf')](_0x0ffc('0x10'),_0x5f25b3,_0x0ffc('0xe'),JSON[_0x0ffc('0x11')](_0x18ebe));if(_0x18ebe['error']){if(_0x18ebe[_0x0ffc('0x12')][_0x0ffc('0x13')]===0x1f4){logger['error'](_0x0ffc('0xd'),_0x5f25b3,_0x18ebe[_0x0ffc('0x12')][_0x0ffc('0x14')]);return _0x14a0a1(_0x18ebe['error'][_0x0ffc('0x14')]);}logger[_0x0ffc('0x12')]('SmsApplication,\x20%s,\x20%s',_0x5f25b3,_0x18ebe[_0x0ffc('0x12')][_0x0ffc('0x14')]);return _0x3db9d4(_0x18ebe[_0x0ffc('0x12')][_0x0ffc('0x14')]);}else{logger[_0x0ffc('0xc')]('SmsApplication,\x20%s,\x20%s',_0x5f25b3,_0x0ffc('0xe'));_0x3db9d4(_0x18ebe['result'][_0x0ffc('0x14')]);}})[_0x0ffc('0x15')](function(_0x4abd72){logger[_0x0ffc('0x12')]('SmsApplication,\x20%s,\x20%s',_0x5f25b3,_0x4abd72);_0x14a0a1(_0x4abd72);});});}
\ No newline at end of file
index da25abf..0b651f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3423=['/:id','/:id/messages','download','post','addMessage','/:id/tags','tracked','sms','smsinteraction:addtags','put','delete','smsinteraction:destroy','destroy','removeTags','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsInteraction.controller','get','isAuthenticated','index','/describe','describe'];(function(_0x24061a,_0x1c9f4d){var _0x82054e=function(_0x2ec346){while(--_0x2ec346){_0x24061a['push'](_0x24061a['shift']());}};_0x82054e(++_0x1c9f4d);}(_0x3423,0x188));var _0x3342=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3423[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3342('0x0'));var timeout=require(_0x3342('0x1'));var express=require(_0x3342('0x2'));var router=express[_0x3342('0x3')]();var fs_extra=require(_0x3342('0x4'));var auth=require(_0x3342('0x5'));var interaction=require(_0x3342('0x6'));var config=require(_0x3342('0x7'));var controller=require(_0x3342('0x8'));router[_0x3342('0x9')]('/',auth[_0x3342('0xa')](),controller[_0x3342('0xb')]);router[_0x3342('0x9')](_0x3342('0xc'),auth[_0x3342('0xa')](),controller[_0x3342('0xd')]);router[_0x3342('0x9')](_0x3342('0xe'),auth[_0x3342('0xa')](),controller['show']);router['get'](_0x3342('0xf'),auth['isAuthenticated'](),controller['getMessages']);router['get']('/:id/download',auth[_0x3342('0xa')](),controller[_0x3342('0x10')]);router['post']('/',auth[_0x3342('0xa')](),controller['create']);router[_0x3342('0x11')](_0x3342('0xf'),auth['isAuthenticated'](),controller[_0x3342('0x12')]);router[_0x3342('0x11')](_0x3342('0x13'),auth[_0x3342('0xa')](),interaction[_0x3342('0x14')](_0x3342('0x15'),_0x3342('0x16')),controller['addTags']);router[_0x3342('0x17')](_0x3342('0xe'),auth['isAuthenticated'](),interaction[_0x3342('0x14')](_0x3342('0x15'),'smsinteraction:update'),controller['update']);router[_0x3342('0x18')](_0x3342('0xe'),auth[_0x3342('0xa')](),interaction[_0x3342('0x14')](_0x3342('0x15'),_0x3342('0x19')),controller[_0x3342('0x1a')]);router[_0x3342('0x18')](_0x3342('0x13'),auth['isAuthenticated'](),controller[_0x3342('0x1b')]);module[_0x3342('0x1c')]=router;
\ No newline at end of file
+var _0x3266=['isAuthenticated','index','get','/:id','show','getMessages','/:id/download','download','post','create','addMessage','sms','smsinteraction:addtags','addTags','put','smsinteraction:destroy','destroy','removeTags','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./smsInteraction.controller'];(function(_0x193ef8,_0x1127ab){var _0x52617c=function(_0x5b8c4a){while(--_0x5b8c4a){_0x193ef8['push'](_0x193ef8['shift']());}};_0x52617c(++_0x1127ab);}(_0x3266,0x6a));var _0x6326=function(_0x4c6d6f,_0x291557){_0x4c6d6f=_0x4c6d6f-0x0;var _0x2d4478=_0x3266[_0x4c6d6f];return _0x2d4478;};'use strict';var multer=require(_0x6326('0x0'));var util=require(_0x6326('0x1'));var path=require(_0x6326('0x2'));var timeout=require(_0x6326('0x3'));var express=require(_0x6326('0x4'));var router=express[_0x6326('0x5')]();var fs_extra=require(_0x6326('0x6'));var auth=require(_0x6326('0x7'));var interaction=require(_0x6326('0x8'));var config=require('../../config/environment');var controller=require(_0x6326('0x9'));router['get']('/',auth[_0x6326('0xa')](),controller[_0x6326('0xb')]);router[_0x6326('0xc')]('/describe',auth[_0x6326('0xa')](),controller['describe']);router[_0x6326('0xc')](_0x6326('0xd'),auth[_0x6326('0xa')](),controller[_0x6326('0xe')]);router[_0x6326('0xc')]('/:id/messages',auth[_0x6326('0xa')](),controller[_0x6326('0xf')]);router[_0x6326('0xc')](_0x6326('0x10'),auth[_0x6326('0xa')](),controller[_0x6326('0x11')]);router[_0x6326('0x12')]('/',auth[_0x6326('0xa')](),controller[_0x6326('0x13')]);router[_0x6326('0x12')]('/:id/messages',auth['isAuthenticated'](),controller[_0x6326('0x14')]);router[_0x6326('0x12')]('/:id/tags',auth[_0x6326('0xa')](),interaction['tracked'](_0x6326('0x15'),_0x6326('0x16')),controller[_0x6326('0x17')]);router[_0x6326('0x18')](_0x6326('0xd'),auth[_0x6326('0xa')](),interaction['tracked'](_0x6326('0x15'),'smsinteraction:update'),controller['update']);router['delete']('/:id',auth['isAuthenticated'](),interaction['tracked'](_0x6326('0x15'),_0x6326('0x19')),controller[_0x6326('0x1a')]);router['delete']('/:id/tags',auth[_0x6326('0xa')](),controller[_0x6326('0x1b')]);module[_0x6326('0x1c')]=router;
\ No newline at end of file
index 7844fc5..d69cad8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe548=['DATE','out','ENUM','sequelize','moment','exports','BOOLEAN'];(function(_0x1d6a82,_0x37c315){var _0x5834ac=function(_0x2402ba){while(--_0x2402ba){_0x1d6a82['push'](_0x1d6a82['shift']());}};_0x5834ac(++_0x37c315);}(_0xe548,0x184));var _0x8e54=function(_0x3b3a82,_0x53b5e0){_0x3b3a82=_0x3b3a82-0x0;var _0x267063=_0xe548[_0x3b3a82];return _0x267063;};'use strict';var Sequelize=require(_0x8e54('0x0'));var moment=require(_0x8e54('0x1'));module[_0x8e54('0x2')]={'closed':{'type':Sequelize[_0x8e54('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x8e54('0x4')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize['STRING']},'phone':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x8e54('0x4')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0x8e54('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0x8e54('0x6')]('in',_0x8e54('0x5')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x8e54('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x254a=['sequelize','moment','exports','DATE','STRING','ENUM','out','BOOLEAN'];(function(_0x48f583,_0xfd71d9){var _0x2306c3=function(_0x167c05){while(--_0x167c05){_0x48f583['push'](_0x48f583['shift']());}};_0x2306c3(++_0xfd71d9);}(_0x254a,0x138));var _0xa254=function(_0x2b84d5,_0x428914){_0x2b84d5=_0x2b84d5-0x0;var _0x51452a=_0x254a[_0x2b84d5];return _0x51452a;};'use strict';var Sequelize=require(_0xa254('0x0'));var moment=require(_0xa254('0x1'));module[_0xa254('0x2')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xa254('0x3')]},'disposition':{'type':Sequelize[_0xa254('0x4')]},'secondDisposition':{'type':Sequelize[_0xa254('0x4')]},'thirdDisposition':{'type':Sequelize[_0xa254('0x4')]},'note':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0xa254('0x4')]},'read1stAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0xa254('0x5')]('in',_0xa254('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xa254('0x3')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0xa254('0x7')],'defaultValue':![]}};
\ No newline at end of file
index eb124a8..4d2c8b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde7b=['query','user','catch','show','params','keys','filters','intersection','model','attributes','length','includeAll','include','options','create','body','find','describe','addMessage','SmsMessage','ids','omit','getMessages','findOne','fields','hasOwnProperty','nolimit','order','sort','where','merge','filter','$gte','split','YYYY-MM-DD\x20HH:mm:ss','rows','addTags','setTags','spread','color','emit','smsInteractionTags:save','removeTags','download','server','files','tmp','join','format','transcript-%d-%s.zip','push','User','CmContact','lastName','Messages','secret','read','SmsAccount','Account','get','mkdirSync','Sms','Owner','N.A.','createdAt','toString','closed','closedAt','direction','fullname','System','Contact','out','value','renderFile','root','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','log','unlinkSync','zip-dir','moment','bluebird','path','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./smsInteraction.socket','register','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','update','then','destroy','error','name','send','map','SmsInteraction','rawAttributes','fieldName','type','key','getOptions','findAll','sms'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0xde7b,0x14a));var _0xbde7=function(_0x1b6186,_0x1ec7f2){_0x1b6186=_0x1b6186-0x0;var _0x186121=_0xde7b[_0x1b6186];return _0x186121;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0xbde7('0x0'));var moment=require(_0xbde7('0x1'));var BPromise=require(_0xbde7('0x2'));var util=require('util');var path=require(_0xbde7('0x3'));var ejs=require('ejs');var fs=require('fs');var _=require(_0xbde7('0x4'));var Redis=require(_0xbde7('0x5'));var interaction=require(_0xbde7('0x6'));var qs=require(_0xbde7('0x7'));var pdf=require(_0xbde7('0x8'));var logger=require(_0xbde7('0x9'))(_0xbde7('0xa'));var config=require(_0xbde7('0xb'));var db=require(_0xbde7('0xc'))['db'];config[_0xbde7('0xd')]=_[_0xbde7('0xe')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xbde7('0xf'))(new Redis(config[_0xbde7('0xd')]));require(_0xbde7('0x10'))[_0xbde7('0x11')](socket);function respondWithStatusCode(_0x25215f,_0x45110d){_0x45110d=_0x45110d||0xcc;return function(_0x3a5614){if(_0x3a5614){return _0x25215f[_0xbde7('0x12')](_0x45110d);}return _0x25215f[_0xbde7('0x13')](_0x45110d)['end']();};}function respondWithResult(_0x2fab58,_0x206c8e){_0x206c8e=_0x206c8e||0xc8;return function(_0x449375){if(_0x449375){return _0x2fab58[_0xbde7('0x13')](_0x206c8e)['json'](_0x449375);}};}function respondWithFilteredResult(_0x3410d0,_0x20d823){return function(_0x2e86f5){if(_0x2e86f5){var _0x41c089=typeof _0x20d823[_0xbde7('0x14')]===_0xbde7('0x15')&&typeof _0x20d823[_0xbde7('0x16')]===_0xbde7('0x15');var _0x1ea5f0=_0x2e86f5[_0xbde7('0x17')];var _0x27902f=_0x41c089?0x0:_0x20d823[_0xbde7('0x14')];var _0x1bc7f7=_0x41c089?_0x2e86f5[_0xbde7('0x17')]:_0x20d823[_0xbde7('0x14')]+_0x20d823['limit'];var _0x125897;if(_0x1bc7f7>=_0x1ea5f0){_0x1bc7f7=_0x1ea5f0;_0x125897=0xc8;}else{_0x125897=0xce;}_0x3410d0[_0xbde7('0x13')](_0x125897);return _0x3410d0[_0xbde7('0x18')](_0xbde7('0x19'),_0x27902f+'-'+_0x1bc7f7+'/'+_0x1ea5f0)[_0xbde7('0x1a')](_0x2e86f5);}return null;};}function saveUpdates(_0x4b49c6){return function(_0x3254b7){if(_0x3254b7){return _0x3254b7[_0xbde7('0x1b')](_0x4b49c6)[_0xbde7('0x1c')](function(_0x4753a5){return _0x4753a5;});}return null;};}function removeEntity(_0x1dc591){return function(_0x4919d7){if(_0x4919d7){return _0x4919d7[_0xbde7('0x1d')]()[_0xbde7('0x1c')](function(){_0x1dc591[_0xbde7('0x13')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2645aa){return function(_0x49cf82){if(!_0x49cf82){_0x2645aa[_0xbde7('0x12')](0x194);}return _0x49cf82;};}function handleError(_0x2ff6ea,_0x24a641){_0x24a641=_0x24a641||0x1f4;return function(_0x4f84b9){logger[_0xbde7('0x1e')](_0x4f84b9['stack']);if(_0x4f84b9[_0xbde7('0x1f')]){delete _0x4f84b9[_0xbde7('0x1f')];}_0x2ff6ea['status'](_0x24a641)[_0xbde7('0x20')](_0x4f84b9);};}exports['index']=function(_0x2b8fa1,_0x552beb){var _0x3b5753={};var _0x26a34f=_[_0xbde7('0x21')](db[_0xbde7('0x22')][_0xbde7('0x23')],function(_0x593058){return{'name':_0x593058[_0xbde7('0x24')],'type':_0x593058[_0xbde7('0x25')][_0xbde7('0x26')]};});_0x3b5753=qs[_0xbde7('0x27')](_0x26a34f,_0x2b8fa1);return interaction[_0xbde7('0x28')](_0xbde7('0x29'),_0x2b8fa1[_0xbde7('0x2a')],_0x2b8fa1[_0xbde7('0x2b')],_0x3b5753,_0x26a34f)['then'](respondWithFilteredResult(_0x552beb,_0x3b5753))[_0xbde7('0x2c')](handleError(_0x552beb,null));};exports[_0xbde7('0x2d')]=function(_0x4b47e3,_0x3a74ca){var _0x5687cb={'raw':![],'where':{'id':_0x4b47e3[_0xbde7('0x2e')]['id']}},_0x4611d2={};_0x4611d2['model']=_[_0xbde7('0x2f')](db['SmsInteraction'][_0xbde7('0x23')]);_0x4611d2[_0xbde7('0x2a')]=_['keys'](_0x4b47e3[_0xbde7('0x2a')]);_0x4611d2[_0xbde7('0x30')]=_[_0xbde7('0x31')](_0x4611d2[_0xbde7('0x32')],_0x4611d2[_0xbde7('0x2a')]);_0x5687cb[_0xbde7('0x33')]=_[_0xbde7('0x31')](_0x4611d2[_0xbde7('0x32')],qs['fields'](_0x4b47e3[_0xbde7('0x2a')]['fields']));_0x5687cb[_0xbde7('0x33')]=_0x5687cb[_0xbde7('0x33')][_0xbde7('0x34')]?_0x5687cb[_0xbde7('0x33')]:_0x4611d2[_0xbde7('0x32')];if(_0x4b47e3[_0xbde7('0x2a')][_0xbde7('0x35')]){_0x5687cb[_0xbde7('0x36')]=[{'all':!![]}];}_0x5687cb=_['merge']({},_0x5687cb,_0x4b47e3[_0xbde7('0x37')]);return db[_0xbde7('0x22')]['find'](_0x5687cb)['then'](handleEntityNotFound(_0x3a74ca,null))[_0xbde7('0x1c')](respondWithResult(_0x3a74ca,null))[_0xbde7('0x2c')](handleError(_0x3a74ca,null));};exports[_0xbde7('0x38')]=function(_0x5ee020,_0x216977){return db['SmsInteraction'][_0xbde7('0x38')](_0x5ee020[_0xbde7('0x39')],{})[_0xbde7('0x1c')](respondWithResult(_0x216977,0xc9))[_0xbde7('0x2c')](handleError(_0x216977,null));};exports[_0xbde7('0x1b')]=function(_0xde7f84,_0x5b9bb3){if(_0xde7f84[_0xbde7('0x39')]['id']){delete _0xde7f84['body']['id'];}return db[_0xbde7('0x22')][_0xbde7('0x3a')]({'where':{'id':_0xde7f84[_0xbde7('0x2e')]['id']}})[_0xbde7('0x1c')](handleEntityNotFound(_0x5b9bb3,null))[_0xbde7('0x1c')](saveUpdates(_0xde7f84[_0xbde7('0x39')],null))[_0xbde7('0x1c')](respondWithResult(_0x5b9bb3,null))[_0xbde7('0x2c')](handleError(_0x5b9bb3,null));};exports['destroy']=function(_0x1df554,_0x2159ca){return db[_0xbde7('0x22')][_0xbde7('0x3a')]({'where':{'id':_0x1df554[_0xbde7('0x2e')]['id']}})[_0xbde7('0x1c')](handleEntityNotFound(_0x2159ca,null))[_0xbde7('0x1c')](removeEntity(_0x2159ca,null))[_0xbde7('0x2c')](handleError(_0x2159ca,null));};exports[_0xbde7('0x3b')]=function(_0x241ade,_0x372988){return db[_0xbde7('0x22')][_0xbde7('0x3b')]()[_0xbde7('0x1c')](respondWithResult(_0x372988,null))[_0xbde7('0x2c')](handleError(_0x372988,null));};exports[_0xbde7('0x3c')]=function(_0xe5eff4,_0x5d8b08){return db[_0xbde7('0x3d')][_0xbde7('0x3a')]({'where':{'id':_0xe5eff4[_0xbde7('0x2e')]['id']}})[_0xbde7('0x1c')](handleEntityNotFound(_0x5d8b08,null))[_0xbde7('0x1c')](function(_0x1b6079){if(_0x1b6079){return _0x1b6079[_0xbde7('0x3c')](_0xe5eff4[_0xbde7('0x39')][_0xbde7('0x3e')],_[_0xbde7('0x3f')](_0xe5eff4['body'],['ids','id'])||{});}})[_0xbde7('0x1c')](respondWithResult(_0x5d8b08,null))[_0xbde7('0x2c')](handleError(_0x5d8b08,null));};exports[_0xbde7('0x40')]=function(_0x463d92,_0x496223){var _0x334414={'raw':![],'where':{}};var _0x9c3b18={};var _0x44ffd1={'count':0x0,'rows':[]};return db[_0xbde7('0x22')][_0xbde7('0x41')]({'where':{'id':_0x463d92[_0xbde7('0x2e')]['id']}})[_0xbde7('0x1c')](handleEntityNotFound(_0x496223,null))[_0xbde7('0x1c')](function(_0x681f3d){if(_0x681f3d){_0x9c3b18[_0xbde7('0x32')]=_[_0xbde7('0x2f')](db[_0xbde7('0x3d')][_0xbde7('0x23')]);_0x9c3b18[_0xbde7('0x2a')]=_[_0xbde7('0x2f')](_0x463d92[_0xbde7('0x2a')]);_0x9c3b18[_0xbde7('0x30')]=_[_0xbde7('0x31')](_0x9c3b18[_0xbde7('0x32')],_0x9c3b18[_0xbde7('0x2a')]);_0x334414[_0xbde7('0x33')]=_[_0xbde7('0x31')](_0x9c3b18[_0xbde7('0x32')],qs[_0xbde7('0x42')](_0x463d92['query'][_0xbde7('0x42')]));_0x334414['attributes']=_0x334414[_0xbde7('0x33')]['length']?_0x334414[_0xbde7('0x33')]:_0x9c3b18[_0xbde7('0x32')];if(!_0x463d92['query'][_0xbde7('0x43')](_0xbde7('0x44'))){_0x334414['limit']=qs[_0xbde7('0x16')](_0x463d92['query'][_0xbde7('0x16')]);_0x334414[_0xbde7('0x14')]=qs[_0xbde7('0x14')](_0x463d92['query']['offset']);}_0x334414[_0xbde7('0x45')]=qs[_0xbde7('0x46')](_0x463d92[_0xbde7('0x2a')]['sort']);_0x334414['where']=qs[_0xbde7('0x30')](_['pick'](_0x463d92[_0xbde7('0x2a')],_0x9c3b18['filters']));_0x334414[_0xbde7('0x47')]['SmsInteractionId']=_0x681f3d['id'];if(_0x463d92['query']['filter']){_0x334414[_0xbde7('0x47')]=_[_0xbde7('0x48')](_0x334414[_0xbde7('0x47')],{'$or':_[_0xbde7('0x21')](_0x334414[_0xbde7('0x33')],function(_0x12e8f6){var _0x1fda53={};_0x1fda53[_0x12e8f6]={'$like':'%'+_0x463d92[_0xbde7('0x2a')][_0xbde7('0x49')]+'%'};return _0x1fda53;})});}if(_0x463d92[_0xbde7('0x2a')][_0xbde7('0x4a')]){var _0x5bf943=_0x463d92[_0xbde7('0x2a')]['$gte'][_0xbde7('0x4b')](',');var _0x238d0f={};_0x238d0f[_0x5bf943[0x0]]={'$gte':moment(_0x5bf943[0x1])['format'](_0xbde7('0x4c'))};_0x334414['where']=_[_0xbde7('0x48')](_0x334414[_0xbde7('0x47')],_0x238d0f);}_0x334414=_[_0xbde7('0x48')]({},_0x334414,_0x463d92[_0xbde7('0x37')]);return db[_0xbde7('0x3d')][_0xbde7('0x17')]({'where':_0x334414[_0xbde7('0x47')]})[_0xbde7('0x1c')](function(_0xdf6f99){_0x44ffd1[_0xbde7('0x17')]=_0xdf6f99;if(_0x463d92[_0xbde7('0x2a')][_0xbde7('0x35')]){_0x334414[_0xbde7('0x36')]=[{'all':!![]}];}return db[_0xbde7('0x3d')][_0xbde7('0x28')](_0x334414);})[_0xbde7('0x1c')](function(_0x45e1fe){_0x44ffd1[_0xbde7('0x4d')]=_0x45e1fe;return _0x44ffd1;});}})[_0xbde7('0x1c')](respondWithFilteredResult(_0x496223,_0x334414))[_0xbde7('0x2c')](handleError(_0x496223,null));};exports[_0xbde7('0x4e')]=function(_0x1cf23c,_0x5c4a20){return db[_0xbde7('0x22')]['find']({'where':{'id':_0x1cf23c[_0xbde7('0x2e')]['id']}})[_0xbde7('0x1c')](handleEntityNotFound(_0x5c4a20,null))[_0xbde7('0x1c')](function(_0xaf9866){if(_0xaf9866){return _0xaf9866[_0xbde7('0x4f')](_0x1cf23c['body'][_0xbde7('0x3e')],_[_0xbde7('0x3f')](_0x1cf23c[_0xbde7('0x39')],['ids','id'])||{})[_0xbde7('0x50')](function(){return db['Tag'][_0xbde7('0x28')]({'attributes':['id',_0xbde7('0x1f'),_0xbde7('0x51')],'where':{'id':_0x1cf23c[_0xbde7('0x39')][_0xbde7('0x3e')]}});})[_0xbde7('0x1c')](function(_0x179b27){socket[_0xbde7('0x52')](_0xbde7('0x53'),{'id':Number(_0x1cf23c[_0xbde7('0x2e')]['id']),'tags':_0x179b27||[]});return{'id':Number(_0x1cf23c['params']['id']),'tags':_0x179b27||[]};});}})[_0xbde7('0x1c')](respondWithResult(_0x5c4a20,null))[_0xbde7('0x2c')](handleError(_0x5c4a20,null));};exports['removeTags']=function(_0x12e45c,_0x9406b6){return db[_0xbde7('0x22')][_0xbde7('0x3a')]({'where':{'id':_0x12e45c[_0xbde7('0x2e')]['id']}})['then'](handleEntityNotFound(_0x9406b6,null))[_0xbde7('0x1c')](function(_0x17a6ba){if(_0x17a6ba){return _0x17a6ba[_0xbde7('0x54')](_0x12e45c[_0xbde7('0x2a')][_0xbde7('0x3e')]);}})[_0xbde7('0x1c')](respondWithStatusCode(_0x9406b6,null))['catch'](handleError(_0x9406b6,null));};exports[_0xbde7('0x55')]=function(_0x485539,_0x52ccf1){var _0x26776b=moment()['unix']()['toString']();var _0x1d705e=path['join'](config['root'],_0xbde7('0x56'),_0xbde7('0x57'),_0xbde7('0x58'));var _0x4fbbca=path[_0xbde7('0x59')](_0x1d705e,_0x26776b);var _0x5e142a=util[_0xbde7('0x5a')](_0xbde7('0x5b'),_0x485539[_0xbde7('0x2e')]['id'],_0x26776b);var _0x519f63=path[_0xbde7('0x59')](_0x1d705e,_0x5e142a);var _0x3c4d8c=[];_0x3c4d8c[_0xbde7('0x5c')]({'model':db[_0xbde7('0x5d')],'as':_0xbde7('0x5d'),'attributes':['id','fullname'],'raw':!![]});_0x3c4d8c[_0xbde7('0x5c')]({'model':db[_0xbde7('0x5e')],'as':'Contact','attributes':['id','firstName',_0xbde7('0x5f')],'raw':!![]});var _0x28a083=[{'model':db[_0xbde7('0x3d')],'as':_0xbde7('0x60'),'attributes':['id',_0xbde7('0x39'),'createdAt','direction',_0xbde7('0x61'),_0xbde7('0x62')],'include':_0x3c4d8c}];_0x28a083[_0xbde7('0x5c')]({'model':db[_0xbde7('0x63')],'as':_0xbde7('0x64'),'attributes':['id','name']});_0x28a083[_0xbde7('0x5c')]({'model':db[_0xbde7('0x5d')],'as':'Owner','attributes':['id','fullname']});return db[_0xbde7('0x22')][_0xbde7('0x3a')]({'where':{'id':_0x485539[_0xbde7('0x2e')]['id']},'include':_0x28a083})[_0xbde7('0x1c')](handleEntityNotFound(_0x52ccf1,null))[_0xbde7('0x1c')](function(_0xdcb91b){if(_0xdcb91b){var _0x4a1b7c=_0xdcb91b[_0xbde7('0x65')]({'plain':!![]});fs[_0xbde7('0x66')](_0x4fbbca);var _0x3c9655={'channel':_0xbde7('0x67'),'account':_0x4a1b7c[_0xbde7('0x64')]['name'],'agent':_0x4a1b7c[_0xbde7('0x68')]?_0x4a1b7c[_0xbde7('0x68')]['fullname']:_0xbde7('0x69'),'createdAt':moment(_0x4a1b7c[_0xbde7('0x6a')])[_0xbde7('0x5a')](_0xbde7('0x4c'))[_0xbde7('0x6b')](),'closedAt':_0x4a1b7c[_0xbde7('0x6c')]?moment(_0x4a1b7c[_0xbde7('0x6d')])[_0xbde7('0x5a')](_0xbde7('0x4c'))[_0xbde7('0x6b')]():'','disposition':_0x4a1b7c['disposition'],'messages':_(_0x4a1b7c[_0xbde7('0x60')])['filter']({'secret':![]})[_0xbde7('0x21')](function(_0xcb8f43){return{'date':moment(_0xcb8f43[_0xbde7('0x6a')])['format'](_0xbde7('0x4c'))[_0xbde7('0x6b')](),'sender':_0xcb8f43[_0xbde7('0x6e')]==='out'?_0xcb8f43[_0xbde7('0x5d')]?_0xcb8f43['User'][_0xbde7('0x6f')]:_0xbde7('0x70'):_0xcb8f43[_0xbde7('0x71')]['firstName']+(_0xcb8f43[_0xbde7('0x71')]['lastName']?'\x20'+_0xcb8f43[_0xbde7('0x71')][_0xbde7('0x5f')]:''),'body':_0xcb8f43[_0xbde7('0x39')],'direction':_0xcb8f43[_0xbde7('0x6e')]===_0xbde7('0x72')?'A':'C','secret':_0xcb8f43[_0xbde7('0x61')],'read':_0xcb8f43['read']};})[_0xbde7('0x73')]()};return ejs[_0xbde7('0x74')](path['join'](config[_0xbde7('0x75')],_0xbde7('0x56'),'views',_0xbde7('0x76')),{'interaction':_0x3c9655})[_0xbde7('0x1c')](function(_0xbecaf2){var _0x4f4464=path[_0xbde7('0x59')](_0x4fbbca,_0xbde7('0x77')+_0x4a1b7c['id']+'-'+_0x26776b+_0xbde7('0x78'));var _0x442a74={'path':_0x4f4464,'channel':_0xbde7('0x67'),'interactionId':_0x4a1b7c['id']};return pdf[_0xbde7('0x79')](_0xbecaf2,_0x442a74);})[_0xbde7('0x1c')](function(){return new BPromise(function(_0x167b59,_0x18bb9e){zipdir(_0x4fbbca,{'saveTo':_0x519f63},function(_0x293743,_0x5be9fa){if(_0x293743)return _0x18bb9e(_0x293743);return _0x167b59(_0x5be9fa);});})[_0xbde7('0x1c')](function(){return new BPromise(function(_0x5ef1b9,_0x3c6c14){rimraf(_0x4fbbca,function(_0x464d80){if(_0x464d80)_0x3c6c14(_0x464d80);return _0x5ef1b9();});});})[_0xbde7('0x1c')](function(){return _0x52ccf1[_0xbde7('0x55')](_0x519f63,_0x5e142a,function(_0x20c6ef){if(_0x20c6ef){console[_0xbde7('0x7a')]('err',_0x20c6ef);}else{fs[_0xbde7('0x7b')](_0x519f63);}});});});}else{return _0x52ccf1['sendStatus'](0xc8);}})[_0xbde7('0x2c')](handleError(_0x52ccf1,null));};
\ No newline at end of file
+var _0xfbb2=['model','SmsInteraction','rawAttributes','query','intersection','attributes','fields','include','find','create','body','params','describe','addMessage','ids','omit','getMessages','keys','SmsMessage','filters','hasOwnProperty','nolimit','order','sort','pick','where','SmsInteractionId','filter','map','$gte','split','YYYY-MM-DD\x20HH:mm:ss','includeAll','findAll','rows','addTags','setTags','Tag','color','emit','smsInteractionTags:save','removeTags','download','unix','toString','root','server','tmp','join','format','transcript-%d-%s.zip','push','User','CmContact','Contact','firstName','lastName','Messages','createdAt','read','SmsAccount','Owner','fullname','get','mkdirSync','Account','N.A.','closed','closedAt','disposition','direction','secret','value','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','Sms','createPdfFromHTML','unlinkSync','zip-dir','moment','bluebird','util','path','ejs','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../mysqldb','localhost','socket.io-emitter','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','error','name','send','index','fieldName','key','catch','show'];(function(_0x522078,_0x5b69ee){var _0x55d7d1=function(_0x1d25f7){while(--_0x1d25f7){_0x522078['push'](_0x522078['shift']());}};_0x55d7d1(++_0x5b69ee);}(_0xfbb2,0xc7));var _0x2fbb=function(_0x2b9ac8,_0xf820cb){_0x2b9ac8=_0x2b9ac8-0x0;var _0x3ceea9=_0xfbb2[_0x2b9ac8];return _0x3ceea9;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0x2fbb('0x0'));var moment=require(_0x2fbb('0x1'));var BPromise=require(_0x2fbb('0x2'));var util=require(_0x2fbb('0x3'));var path=require(_0x2fbb('0x4'));var ejs=require(_0x2fbb('0x5'));var fs=require('fs');var _=require(_0x2fbb('0x6'));var Redis=require(_0x2fbb('0x7'));var interaction=require(_0x2fbb('0x8'));var qs=require(_0x2fbb('0x9'));var pdf=require('../../components/export/pdf');var logger=require(_0x2fbb('0xa'))(_0x2fbb('0xb'));var config=require('../../config/environment');var db=require(_0x2fbb('0xc'))['db'];config['redis']=_['defaults'](config['redis'],{'host':_0x2fbb('0xd'),'port':0x18eb});var socket=require(_0x2fbb('0xe'))(new Redis(config['redis']));require('./smsInteraction.socket')[_0x2fbb('0xf')](socket);function respondWithStatusCode(_0x51f86e,_0xb7b608){_0xb7b608=_0xb7b608||0xcc;return function(_0x151819){if(_0x151819){return _0x51f86e[_0x2fbb('0x10')](_0xb7b608);}return _0x51f86e[_0x2fbb('0x11')](_0xb7b608)[_0x2fbb('0x12')]();};}function respondWithResult(_0x3ff335,_0xe31e41){_0xe31e41=_0xe31e41||0xc8;return function(_0x187282){if(_0x187282){return _0x3ff335[_0x2fbb('0x11')](_0xe31e41)[_0x2fbb('0x13')](_0x187282);}};}function respondWithFilteredResult(_0x1c631b,_0xe77520){return function(_0x51342b){if(_0x51342b){var _0x41f9bb=typeof _0xe77520[_0x2fbb('0x14')]===_0x2fbb('0x15')&&typeof _0xe77520[_0x2fbb('0x16')]===_0x2fbb('0x15');var _0x81959a=_0x51342b['count'];var _0x474acb=_0x41f9bb?0x0:_0xe77520[_0x2fbb('0x14')];var _0x3ac70e=_0x41f9bb?_0x51342b[_0x2fbb('0x17')]:_0xe77520['offset']+_0xe77520['limit'];var _0x27dd19;if(_0x3ac70e>=_0x81959a){_0x3ac70e=_0x81959a;_0x27dd19=0xc8;}else{_0x27dd19=0xce;}_0x1c631b['status'](_0x27dd19);return _0x1c631b[_0x2fbb('0x18')](_0x2fbb('0x19'),_0x474acb+'-'+_0x3ac70e+'/'+_0x81959a)[_0x2fbb('0x13')](_0x51342b);}return null;};}function saveUpdates(_0x6398b){return function(_0x30b13c){if(_0x30b13c){return _0x30b13c[_0x2fbb('0x1a')](_0x6398b)[_0x2fbb('0x1b')](function(_0x51f1d4){return _0x51f1d4;});}return null;};}function removeEntity(_0x221906){return function(_0x14857d){if(_0x14857d){return _0x14857d[_0x2fbb('0x1c')]()[_0x2fbb('0x1b')](function(){_0x221906[_0x2fbb('0x11')](0xcc)['end']();});}};}function handleEntityNotFound(_0xdefae8){return function(_0x172c6b){if(!_0x172c6b){_0xdefae8[_0x2fbb('0x10')](0x194);}return _0x172c6b;};}function handleError(_0x58a07a,_0x1b8855){_0x1b8855=_0x1b8855||0x1f4;return function(_0x30da53){logger[_0x2fbb('0x1d')](_0x30da53['stack']);if(_0x30da53[_0x2fbb('0x1e')]){delete _0x30da53[_0x2fbb('0x1e')];}_0x58a07a[_0x2fbb('0x11')](_0x1b8855)[_0x2fbb('0x1f')](_0x30da53);};}exports[_0x2fbb('0x20')]=function(_0x1448ae,_0xb244a7){var _0x1e4efa={};var _0x3361dc=_['map'](db['SmsInteraction']['rawAttributes'],function(_0x25ec30){return{'name':_0x25ec30[_0x2fbb('0x21')],'type':_0x25ec30['type'][_0x2fbb('0x22')]};});_0x1e4efa=qs['getOptions'](_0x3361dc,_0x1448ae);return interaction['findAll']('sms',_0x1448ae['query'],_0x1448ae['user'],_0x1e4efa,_0x3361dc)[_0x2fbb('0x1b')](respondWithFilteredResult(_0xb244a7,_0x1e4efa))[_0x2fbb('0x23')](handleError(_0xb244a7,null));};exports[_0x2fbb('0x24')]=function(_0x335c47,_0x490ce3){var _0x1be210={'raw':![],'where':{'id':_0x335c47['params']['id']}},_0x4150cf={};_0x4150cf[_0x2fbb('0x25')]=_['keys'](db[_0x2fbb('0x26')][_0x2fbb('0x27')]);_0x4150cf[_0x2fbb('0x28')]=_['keys'](_0x335c47[_0x2fbb('0x28')]);_0x4150cf['filters']=_[_0x2fbb('0x29')](_0x4150cf['model'],_0x4150cf[_0x2fbb('0x28')]);_0x1be210[_0x2fbb('0x2a')]=_[_0x2fbb('0x29')](_0x4150cf['model'],qs['fields'](_0x335c47[_0x2fbb('0x28')][_0x2fbb('0x2b')]));_0x1be210[_0x2fbb('0x2a')]=_0x1be210[_0x2fbb('0x2a')]['length']?_0x1be210[_0x2fbb('0x2a')]:_0x4150cf[_0x2fbb('0x25')];if(_0x335c47['query']['includeAll']){_0x1be210[_0x2fbb('0x2c')]=[{'all':!![]}];}_0x1be210=_['merge']({},_0x1be210,_0x335c47['options']);return db[_0x2fbb('0x26')][_0x2fbb('0x2d')](_0x1be210)[_0x2fbb('0x1b')](handleEntityNotFound(_0x490ce3,null))['then'](respondWithResult(_0x490ce3,null))[_0x2fbb('0x23')](handleError(_0x490ce3,null));};exports[_0x2fbb('0x2e')]=function(_0x4de573,_0x49778d){return db[_0x2fbb('0x26')][_0x2fbb('0x2e')](_0x4de573['body'],{})['then'](respondWithResult(_0x49778d,0xc9))['catch'](handleError(_0x49778d,null));};exports[_0x2fbb('0x1a')]=function(_0x4055e6,_0x421f28){if(_0x4055e6[_0x2fbb('0x2f')]['id']){delete _0x4055e6[_0x2fbb('0x2f')]['id'];}return db[_0x2fbb('0x26')][_0x2fbb('0x2d')]({'where':{'id':_0x4055e6['params']['id']}})[_0x2fbb('0x1b')](handleEntityNotFound(_0x421f28,null))[_0x2fbb('0x1b')](saveUpdates(_0x4055e6[_0x2fbb('0x2f')],null))[_0x2fbb('0x1b')](respondWithResult(_0x421f28,null))['catch'](handleError(_0x421f28,null));};exports[_0x2fbb('0x1c')]=function(_0x194813,_0x2d1206){return db[_0x2fbb('0x26')][_0x2fbb('0x2d')]({'where':{'id':_0x194813[_0x2fbb('0x30')]['id']}})['then'](handleEntityNotFound(_0x2d1206,null))['then'](removeEntity(_0x2d1206,null))[_0x2fbb('0x23')](handleError(_0x2d1206,null));};exports[_0x2fbb('0x31')]=function(_0x4e2dda,_0x4f3147){return db['SmsInteraction'][_0x2fbb('0x31')]()[_0x2fbb('0x1b')](respondWithResult(_0x4f3147,null))['catch'](handleError(_0x4f3147,null));};exports[_0x2fbb('0x32')]=function(_0x3799ff,_0x4be01d){return db['SmsMessage']['find']({'where':{'id':_0x3799ff[_0x2fbb('0x30')]['id']}})[_0x2fbb('0x1b')](handleEntityNotFound(_0x4be01d,null))['then'](function(_0x23e47a){if(_0x23e47a){return _0x23e47a[_0x2fbb('0x32')](_0x3799ff[_0x2fbb('0x2f')][_0x2fbb('0x33')],_[_0x2fbb('0x34')](_0x3799ff[_0x2fbb('0x2f')],[_0x2fbb('0x33'),'id'])||{});}})[_0x2fbb('0x1b')](respondWithResult(_0x4be01d,null))[_0x2fbb('0x23')](handleError(_0x4be01d,null));};exports[_0x2fbb('0x35')]=function(_0x92b68c,_0x49c90a){var _0x177e93={'raw':![],'where':{}};var _0x4d0816={};var _0x3f116e={'count':0x0,'rows':[]};return db[_0x2fbb('0x26')]['findOne']({'where':{'id':_0x92b68c[_0x2fbb('0x30')]['id']}})[_0x2fbb('0x1b')](handleEntityNotFound(_0x49c90a,null))['then'](function(_0x93dd3b){if(_0x93dd3b){_0x4d0816['model']=_[_0x2fbb('0x36')](db[_0x2fbb('0x37')]['rawAttributes']);_0x4d0816[_0x2fbb('0x28')]=_[_0x2fbb('0x36')](_0x92b68c['query']);_0x4d0816[_0x2fbb('0x38')]=_[_0x2fbb('0x29')](_0x4d0816['model'],_0x4d0816[_0x2fbb('0x28')]);_0x177e93[_0x2fbb('0x2a')]=_['intersection'](_0x4d0816[_0x2fbb('0x25')],qs[_0x2fbb('0x2b')](_0x92b68c['query'][_0x2fbb('0x2b')]));_0x177e93['attributes']=_0x177e93[_0x2fbb('0x2a')]['length']?_0x177e93[_0x2fbb('0x2a')]:_0x4d0816[_0x2fbb('0x25')];if(!_0x92b68c[_0x2fbb('0x28')][_0x2fbb('0x39')](_0x2fbb('0x3a'))){_0x177e93['limit']=qs[_0x2fbb('0x16')](_0x92b68c[_0x2fbb('0x28')][_0x2fbb('0x16')]);_0x177e93[_0x2fbb('0x14')]=qs[_0x2fbb('0x14')](_0x92b68c[_0x2fbb('0x28')][_0x2fbb('0x14')]);}_0x177e93[_0x2fbb('0x3b')]=qs[_0x2fbb('0x3c')](_0x92b68c['query'][_0x2fbb('0x3c')]);_0x177e93['where']=qs[_0x2fbb('0x38')](_[_0x2fbb('0x3d')](_0x92b68c[_0x2fbb('0x28')],_0x4d0816[_0x2fbb('0x38')]));_0x177e93[_0x2fbb('0x3e')][_0x2fbb('0x3f')]=_0x93dd3b['id'];if(_0x92b68c[_0x2fbb('0x28')][_0x2fbb('0x40')]){_0x177e93[_0x2fbb('0x3e')]=_['merge'](_0x177e93['where'],{'$or':_[_0x2fbb('0x41')](_0x177e93[_0x2fbb('0x2a')],function(_0x2f9d15){var _0x3ba892={};_0x3ba892[_0x2f9d15]={'$like':'%'+_0x92b68c[_0x2fbb('0x28')][_0x2fbb('0x40')]+'%'};return _0x3ba892;})});}if(_0x92b68c[_0x2fbb('0x28')][_0x2fbb('0x42')]){var _0x1d41ec=_0x92b68c[_0x2fbb('0x28')][_0x2fbb('0x42')][_0x2fbb('0x43')](',');var _0x17442c={};_0x17442c[_0x1d41ec[0x0]]={'$gte':moment(_0x1d41ec[0x1])['format'](_0x2fbb('0x44'))};_0x177e93[_0x2fbb('0x3e')]=_['merge'](_0x177e93[_0x2fbb('0x3e')],_0x17442c);}_0x177e93=_['merge']({},_0x177e93,_0x92b68c['options']);return db[_0x2fbb('0x37')][_0x2fbb('0x17')]({'where':_0x177e93[_0x2fbb('0x3e')]})[_0x2fbb('0x1b')](function(_0x5919ae){_0x3f116e[_0x2fbb('0x17')]=_0x5919ae;if(_0x92b68c[_0x2fbb('0x28')][_0x2fbb('0x45')]){_0x177e93[_0x2fbb('0x2c')]=[{'all':!![]}];}return db[_0x2fbb('0x37')][_0x2fbb('0x46')](_0x177e93);})[_0x2fbb('0x1b')](function(_0x4dd7d1){_0x3f116e[_0x2fbb('0x47')]=_0x4dd7d1;return _0x3f116e;});}})[_0x2fbb('0x1b')](respondWithFilteredResult(_0x49c90a,_0x177e93))[_0x2fbb('0x23')](handleError(_0x49c90a,null));};exports[_0x2fbb('0x48')]=function(_0x2ca841,_0x1d8fc1){return db['SmsInteraction'][_0x2fbb('0x2d')]({'where':{'id':_0x2ca841[_0x2fbb('0x30')]['id']}})[_0x2fbb('0x1b')](handleEntityNotFound(_0x1d8fc1,null))[_0x2fbb('0x1b')](function(_0x4b8187){if(_0x4b8187){return _0x4b8187[_0x2fbb('0x49')](_0x2ca841[_0x2fbb('0x2f')][_0x2fbb('0x33')],_[_0x2fbb('0x34')](_0x2ca841['body'],[_0x2fbb('0x33'),'id'])||{})['spread'](function(){return db[_0x2fbb('0x4a')]['findAll']({'attributes':['id',_0x2fbb('0x1e'),_0x2fbb('0x4b')],'where':{'id':_0x2ca841[_0x2fbb('0x2f')][_0x2fbb('0x33')]}});})[_0x2fbb('0x1b')](function(_0x13be4a){socket[_0x2fbb('0x4c')](_0x2fbb('0x4d'),{'id':Number(_0x2ca841['params']['id']),'tags':_0x13be4a||[]});return{'id':Number(_0x2ca841[_0x2fbb('0x30')]['id']),'tags':_0x13be4a||[]};});}})[_0x2fbb('0x1b')](respondWithResult(_0x1d8fc1,null))[_0x2fbb('0x23')](handleError(_0x1d8fc1,null));};exports[_0x2fbb('0x4e')]=function(_0x13bea7,_0x35d171){return db['SmsInteraction'][_0x2fbb('0x2d')]({'where':{'id':_0x13bea7[_0x2fbb('0x30')]['id']}})[_0x2fbb('0x1b')](handleEntityNotFound(_0x35d171,null))[_0x2fbb('0x1b')](function(_0x28ed75){if(_0x28ed75){return _0x28ed75[_0x2fbb('0x4e')](_0x13bea7['query'][_0x2fbb('0x33')]);}})[_0x2fbb('0x1b')](respondWithStatusCode(_0x35d171,null))['catch'](handleError(_0x35d171,null));};exports[_0x2fbb('0x4f')]=function(_0xbfc6f7,_0x29726f){var _0x3ae1b7=moment()[_0x2fbb('0x50')]()[_0x2fbb('0x51')]();var _0x3db60e=path['join'](config[_0x2fbb('0x52')],_0x2fbb('0x53'),'files',_0x2fbb('0x54'));var _0xeb88e0=path[_0x2fbb('0x55')](_0x3db60e,_0x3ae1b7);var _0x501e1b=util[_0x2fbb('0x56')](_0x2fbb('0x57'),_0xbfc6f7[_0x2fbb('0x30')]['id'],_0x3ae1b7);var _0x60c9ab=path['join'](_0x3db60e,_0x501e1b);var _0xd69fd3=[];_0xd69fd3[_0x2fbb('0x58')]({'model':db[_0x2fbb('0x59')],'as':_0x2fbb('0x59'),'attributes':['id','fullname'],'raw':!![]});_0xd69fd3[_0x2fbb('0x58')]({'model':db[_0x2fbb('0x5a')],'as':_0x2fbb('0x5b'),'attributes':['id',_0x2fbb('0x5c'),_0x2fbb('0x5d')],'raw':!![]});var _0x21ea9e=[{'model':db[_0x2fbb('0x37')],'as':_0x2fbb('0x5e'),'attributes':['id',_0x2fbb('0x2f'),_0x2fbb('0x5f'),'direction','secret',_0x2fbb('0x60')],'include':_0xd69fd3}];_0x21ea9e[_0x2fbb('0x58')]({'model':db[_0x2fbb('0x61')],'as':'Account','attributes':['id','name']});_0x21ea9e[_0x2fbb('0x58')]({'model':db[_0x2fbb('0x59')],'as':_0x2fbb('0x62'),'attributes':['id',_0x2fbb('0x63')]});return db[_0x2fbb('0x26')]['find']({'where':{'id':_0xbfc6f7[_0x2fbb('0x30')]['id']},'include':_0x21ea9e})['then'](handleEntityNotFound(_0x29726f,null))[_0x2fbb('0x1b')](function(_0x469035){if(_0x469035){var _0xededa8=_0x469035[_0x2fbb('0x64')]({'plain':!![]});fs[_0x2fbb('0x65')](_0xeb88e0);var _0x32f715={'channel':'Sms','account':_0xededa8[_0x2fbb('0x66')][_0x2fbb('0x1e')],'agent':_0xededa8['Owner']?_0xededa8[_0x2fbb('0x62')][_0x2fbb('0x63')]:_0x2fbb('0x67'),'createdAt':moment(_0xededa8[_0x2fbb('0x5f')])[_0x2fbb('0x56')](_0x2fbb('0x44'))['toString'](),'closedAt':_0xededa8[_0x2fbb('0x68')]?moment(_0xededa8[_0x2fbb('0x69')])[_0x2fbb('0x56')]('YYYY-MM-DD\x20HH:mm:ss')[_0x2fbb('0x51')]():'','disposition':_0xededa8[_0x2fbb('0x6a')],'messages':_(_0xededa8['Messages'])[_0x2fbb('0x40')]({'secret':![]})[_0x2fbb('0x41')](function(_0x5808cf){return{'date':moment(_0x5808cf[_0x2fbb('0x5f')])[_0x2fbb('0x56')](_0x2fbb('0x44'))[_0x2fbb('0x51')](),'sender':_0x5808cf[_0x2fbb('0x6b')]==='out'?_0x5808cf[_0x2fbb('0x59')]?_0x5808cf['User']['fullname']:'System':_0x5808cf[_0x2fbb('0x5b')]['firstName']+(_0x5808cf[_0x2fbb('0x5b')]['lastName']?'\x20'+_0x5808cf[_0x2fbb('0x5b')][_0x2fbb('0x5d')]:''),'body':_0x5808cf[_0x2fbb('0x2f')],'direction':_0x5808cf[_0x2fbb('0x6b')]==='out'?'A':'C','secret':_0x5808cf[_0x2fbb('0x6c')],'read':_0x5808cf[_0x2fbb('0x60')]};})[_0x2fbb('0x6d')]()};return ejs[_0x2fbb('0x6e')](path[_0x2fbb('0x55')](config[_0x2fbb('0x52')],'server',_0x2fbb('0x6f'),_0x2fbb('0x70')),{'interaction':_0x32f715})[_0x2fbb('0x1b')](function(_0x3142f4){var _0x492a94=path[_0x2fbb('0x55')](_0xeb88e0,_0x2fbb('0x71')+_0xededa8['id']+'-'+_0x3ae1b7+_0x2fbb('0x72'));var _0x4aa354={'path':_0x492a94,'channel':_0x2fbb('0x73'),'interactionId':_0xededa8['id']};return pdf[_0x2fbb('0x74')](_0x3142f4,_0x4aa354);})[_0x2fbb('0x1b')](function(){return new BPromise(function(_0x3dd350,_0x1a9194){zipdir(_0xeb88e0,{'saveTo':_0x60c9ab},function(_0xd85558,_0x2e3b73){if(_0xd85558)return _0x1a9194(_0xd85558);return _0x3dd350(_0x2e3b73);});})[_0x2fbb('0x1b')](function(){return new BPromise(function(_0x7d69d,_0x339915){rimraf(_0xeb88e0,function(_0x30d79c){if(_0x30d79c)_0x339915(_0x30d79c);return _0x7d69d();});});})[_0x2fbb('0x1b')](function(){return _0x29726f[_0x2fbb('0x4f')](_0x60c9ab,_0x501e1b,function(_0x582167){if(_0x582167){console['log']('err',_0x582167);}else{fs[_0x2fbb('0x75')](_0x60c9ab);}});});});}else{return _0x29726f['sendStatus'](0xc8);}})[_0x2fbb('0x23')](handleError(_0x29726f,null));};
\ No newline at end of file
index 7a2fe71..7109b7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['catch','hasOwnProperty','exports','events','../../mysqldb','SmsInteraction','SmsMessage','setMaxListeners','save','update','getUsers','then','Users','map','setDataValue','length'];(function(_0x3fcf69,_0x147154){var _0x2555bc=function(_0x90dd1f){while(--_0x90dd1f){_0x3fcf69['push'](_0x3fcf69['shift']());}};_0x2555bc(++_0x147154);}(_0x5f2f,0x73));var _0xf5f2=function(_0xe3a293,_0x59d4bd){_0xe3a293=_0xe3a293-0x0;var _0x6df86f=_0x5f2f[_0xe3a293];return _0x6df86f;};'use strict';var EventEmitter=require(_0xf5f2('0x0'));var SmsInteraction=require(_0xf5f2('0x1'))['db'][_0xf5f2('0x2')];var SmsMessage=require(_0xf5f2('0x1'))['db'][_0xf5f2('0x3')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0xf5f2('0x4')](0x0);var events={'afterCreate':_0xf5f2('0x5'),'afterUpdate':_0xf5f2('0x6'),'afterDestroy':'remove'};function emitEvent(_0x4854b6){return function(_0x1665c7,_0x192215,_0xad7f65){_0x1665c7[_0xf5f2('0x7')]({'attributes':['id'],'raw':!![]})[_0xf5f2('0x8')](function(_0x473100){_0x1665c7['setDataValue'](_0xf5f2('0x9'),_0x473100[_0xf5f2('0xa')](function(_0x2ec345){return{'id':_0x2ec345['id']};}));return SmsMessage['findAll']({'where':{'SmsInteractionId':_0x1665c7['id'],'direction':'in','read':![]},'raw':!![]});})[_0xf5f2('0x8')](function(_0x15dd7c){_0x1665c7[_0xf5f2('0xb')]('unreadMessages',_0x15dd7c[_0xf5f2('0xc')]);SmsInteractionEvents['emit'](_0x4854b6+':'+_0x1665c7['id'],_0x1665c7);SmsInteractionEvents['emit'](_0x4854b6,_0x1665c7);_0xad7f65(null);})[_0xf5f2('0xd')](_0xad7f65(null));};}for(var e in events){if(events[_0xf5f2('0xe')](e)){var event=events[e];SmsInteraction['hook'](e,emitEvent(event));}}module[_0xf5f2('0xf')]=SmsInteractionEvents;
\ No newline at end of file
+var _0x47c5=['setMaxListeners','update','remove','getUsers','then','setDataValue','Users','map','findAll','unreadMessages','length','emit','catch','hasOwnProperty','exports','events','../../mysqldb','SmsInteraction','SmsMessage'];(function(_0x51edca,_0x18ad70){var _0x2b77ec=function(_0x55a549){while(--_0x55a549){_0x51edca['push'](_0x51edca['shift']());}};_0x2b77ec(++_0x18ad70);}(_0x47c5,0x165));var _0x547c=function(_0x581b6f,_0xb342ec){_0x581b6f=_0x581b6f-0x0;var _0x20aea0=_0x47c5[_0x581b6f];return _0x20aea0;};'use strict';var EventEmitter=require(_0x547c('0x0'));var SmsInteraction=require(_0x547c('0x1'))['db'][_0x547c('0x2')];var SmsMessage=require(_0x547c('0x1'))['db'][_0x547c('0x3')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0x547c('0x4')](0x0);var events={'afterCreate':'save','afterUpdate':_0x547c('0x5'),'afterDestroy':_0x547c('0x6')};function emitEvent(_0x5b48c9){return function(_0x3e827e,_0x468220,_0x51ab7f){_0x3e827e[_0x547c('0x7')]({'attributes':['id'],'raw':!![]})[_0x547c('0x8')](function(_0x381f2e){_0x3e827e[_0x547c('0x9')](_0x547c('0xa'),_0x381f2e[_0x547c('0xb')](function(_0x3e2279){return{'id':_0x3e2279['id']};}));return SmsMessage[_0x547c('0xc')]({'where':{'SmsInteractionId':_0x3e827e['id'],'direction':'in','read':![]},'raw':!![]});})[_0x547c('0x8')](function(_0x44a581){_0x3e827e[_0x547c('0x9')](_0x547c('0xd'),_0x44a581[_0x547c('0xe')]);SmsInteractionEvents[_0x547c('0xf')](_0x5b48c9+':'+_0x3e827e['id'],_0x3e827e);SmsInteractionEvents[_0x547c('0xf')](_0x5b48c9,_0x3e827e);_0x51ab7f(null);})[_0x547c('0x10')](_0x51ab7f(null));};}for(var e in events){if(events[_0x547c('0x11')](e)){var event=events[e];SmsInteraction['hook'](e,emitEvent(event));}}module[_0x547c('0x12')]=SmsInteractionEvents;
\ No newline at end of file
index 2622a71..4fe5000 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7afb=['format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','./smsInteraction.attributes','SmsInteraction','sms_interactions','changed','closed','closedAt'];(function(_0x59dc02,_0x120477){var _0x556178=function(_0x583273){while(--_0x583273){_0x59dc02['push'](_0x59dc02['shift']());}};_0x556178(++_0x120477);}(_0x7afb,0x122));var _0xb7af=function(_0x43d406,_0x23780e){_0x43d406=_0x43d406-0x0;var _0x310887=_0x7afb[_0x43d406];return _0x310887;};'use strict';var _=require(_0xb7af('0x0'));var util=require(_0xb7af('0x1'));var logger=require(_0xb7af('0x2'))('api');var moment=require(_0xb7af('0x3'));var BPromise=require(_0xb7af('0x4'));var rp=require(_0xb7af('0x5'));var fs=require('fs');var path=require(_0xb7af('0x6'));var rimraf=require(_0xb7af('0x7'));var config=require('../../config/environment');var attributes=require(_0xb7af('0x8'));module['exports']=function(_0x4df3a3,_0x5d5cd5){return _0x4df3a3['define'](_0xb7af('0x9'),attributes,{'tableName':_0xb7af('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x55a480,_0x7a094c,_0x208b37){if(_0x55a480[_0xb7af('0xb')](_0xb7af('0xc'))){_0x55a480[_0xb7af('0xd')]=moment()[_0xb7af('0xe')](_0xb7af('0xf'));}_0x208b37(null,_0x55a480);}}});};
\ No newline at end of file
+var _0x4ecd=['closedAt','format','YYYY-MM-DD\x20HH:mm:ss','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','SmsInteraction','sms_interactions','changed'];(function(_0xea897b,_0x269096){var _0x8a736e=function(_0x2b13b6){while(--_0x2b13b6){_0xea897b['push'](_0xea897b['shift']());}};_0x8a736e(++_0x269096);}(_0x4ecd,0x113));var _0xd4ec=function(_0x24ba26,_0x47a285){_0x24ba26=_0x24ba26-0x0;var _0x1dfe90=_0x4ecd[_0x24ba26];return _0x1dfe90;};'use strict';var _=require('lodash');var util=require(_0xd4ec('0x0'));var logger=require('../../config/logger')(_0xd4ec('0x1'));var moment=require(_0xd4ec('0x2'));var BPromise=require(_0xd4ec('0x3'));var rp=require(_0xd4ec('0x4'));var fs=require('fs');var path=require(_0xd4ec('0x5'));var rimraf=require(_0xd4ec('0x6'));var config=require(_0xd4ec('0x7'));var attributes=require('./smsInteraction.attributes');module[_0xd4ec('0x8')]=function(_0x26004d,_0x4c1a7){return _0x26004d[_0xd4ec('0x9')](_0xd4ec('0xa'),attributes,{'tableName':_0xd4ec('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x7d3d4c,_0x2b1191,_0x4f81f3){if(_0x7d3d4c[_0xd4ec('0xc')]('closed')){_0x7d3d4c[_0xd4ec('0xd')]=moment()[_0xd4ec('0xe')](_0xd4ec('0xf'));}_0x4f81f3(null,_0x7d3d4c);}}});};
\ No newline at end of file
index 8b8e150..80d8bc5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f43=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','./smsInteraction.socket','register','request','then','info','SmsInteraction,\x20%s,\x20%s','debug','SmsInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','update','body','options','where','UpdateSmsInteraction','SmsInteraction','ids','omit','spread','AddTags','catch','lodash','util','moment','bluebird','ioredis'];(function(_0xa28b1a,_0x384f4b){var _0x4c9b78=function(_0x3cf640){while(--_0x3cf640){_0xa28b1a['push'](_0xa28b1a['shift']());}};_0x4c9b78(++_0x384f4b);}(_0x6f43,0x1db));var _0x36f4=function(_0x25c988,_0xce8221){_0x25c988=_0x25c988-0x0;var _0x45fcc2=_0x6f43[_0x25c988];return _0x45fcc2;};'use strict';var _=require(_0x36f4('0x0'));var util=require(_0x36f4('0x1'));var moment=require(_0x36f4('0x2'));var BPromise=require(_0x36f4('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x36f4('0x4'));var db=require(_0x36f4('0x5'))['db'];var utils=require(_0x36f4('0x6'));var logger=require(_0x36f4('0x7'))(_0x36f4('0x8'));var config=require(_0x36f4('0x9'));var jayson=require(_0x36f4('0xa'));var client=jayson[_0x36f4('0xb')][_0x36f4('0xc')]({'port':0x232a});config[_0x36f4('0xd')]=_['defaults'](config['redis'],{'host':_0x36f4('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x36f4('0xd')]));require(_0x36f4('0xf'))[_0x36f4('0x10')](socket);function respondWithRpcPromise(_0x1cc090,_0x59c01b,_0x553eda){return new BPromise(function(_0x4eeb66,_0x12da0d){return client[_0x36f4('0x11')](_0x1cc090,_0x553eda)[_0x36f4('0x12')](function(_0xb8773e){logger[_0x36f4('0x13')](_0x36f4('0x14'),_0x59c01b,'request\x20sent');logger[_0x36f4('0x15')](_0x36f4('0x16'),_0x59c01b,_0x36f4('0x17'),JSON[_0x36f4('0x18')](_0xb8773e));if(_0xb8773e[_0x36f4('0x19')]){if(_0xb8773e[_0x36f4('0x19')][_0x36f4('0x1a')]===0x1f4){logger[_0x36f4('0x19')](_0x36f4('0x14'),_0x59c01b,_0xb8773e['error'][_0x36f4('0x1b')]);return _0x12da0d(_0xb8773e[_0x36f4('0x19')][_0x36f4('0x1b')]);}logger['error']('SmsInteraction,\x20%s,\x20%s',_0x59c01b,_0xb8773e[_0x36f4('0x19')][_0x36f4('0x1b')]);return _0x4eeb66(_0xb8773e[_0x36f4('0x19')][_0x36f4('0x1b')]);}else{logger[_0x36f4('0x13')](_0x36f4('0x14'),_0x59c01b,_0x36f4('0x17'));_0x4eeb66(_0xb8773e[_0x36f4('0x1c')][_0x36f4('0x1b')]);}})['catch'](function(_0x1df808){logger['error'](_0x36f4('0x14'),_0x59c01b,_0x1df808);_0x12da0d(_0x1df808);});});}exports['UpdateSmsInteraction']=function(_0x2994ef){var _0xf39dcd=this;return new Promise(function(_0x113e60,_0x5c78d1){return db['SmsInteraction'][_0x36f4('0x1d')](_0x2994ef[_0x36f4('0x1e')],{'raw':_0x2994ef[_0x36f4('0x1f')]?_0x2994ef[_0x36f4('0x1f')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2994ef[_0x36f4('0x1f')]?_0x2994ef[_0x36f4('0x1f')][_0x36f4('0x20')]||null:null,'attributes':_0x2994ef[_0x36f4('0x1f')]?_0x2994ef[_0x36f4('0x1f')]['attributes']||null:null,'limit':_0x2994ef[_0x36f4('0x1f')]?_0x2994ef[_0x36f4('0x1f')]['limit']||null:null})[_0x36f4('0x12')](function(_0x2d0ce8){logger['info'](_0x36f4('0x21'),_0x2994ef);logger[_0x36f4('0x15')]('UpdateSmsInteraction',_0x2994ef,JSON['stringify'](_0x2d0ce8));_0x113e60(_0x2d0ce8);})['catch'](function(_0x10b31d){logger[_0x36f4('0x19')](_0x36f4('0x21'),_0x10b31d[_0x36f4('0x1b')],_0x2994ef);_0x5c78d1(_0xf39dcd[_0x36f4('0x19')](0x1f4,_0x10b31d[_0x36f4('0x1b')]));});});};exports['AddTagsToSmsInteraction']=function(_0x3c9484){return new Promise(function(_0x1a5b3e,_0x5acf2a){return db[_0x36f4('0x22')]['find']({'where':_0x3c9484[_0x36f4('0x1f')]?_0x3c9484[_0x36f4('0x1f')][_0x36f4('0x20')]||null:null})[_0x36f4('0x12')](function(_0x322e27){if(_0x322e27){return _0x322e27['addTags'](_0x3c9484['body'][_0x36f4('0x23')],_[_0x36f4('0x24')](_0x3c9484[_0x36f4('0x1e')],[_0x36f4('0x23'),'id'])||{});}})[_0x36f4('0x25')](function(_0x1bede4){logger['info'](_0x36f4('0x26'),_0x3c9484);logger[_0x36f4('0x15')](_0x36f4('0x26'),_0x3c9484,JSON[_0x36f4('0x18')](_0x1bede4));_0x1a5b3e(_0x1bede4);})[_0x36f4('0x27')](function(_0x309333){logger['error'](_0x36f4('0x26'),_0x309333[_0x36f4('0x1b')],_0x3c9484);_0x5acf2a(_this['error'](0x1f4,_0x309333[_0x36f4('0x1b')]));});});};
\ No newline at end of file
+var _0x98c9=['http','redis','defaults','localhost','./smsInteraction.socket','register','request','info','request\x20sent','debug','SmsInteraction,\x20%s,\x20%s,\x20%s','error','code','SmsInteraction,\x20%s,\x20%s','message','result','catch','UpdateSmsInteraction','SmsInteraction','update','body','options','where','attributes','limit','then','stringify','AddTagsToSmsInteraction','ids','spread','AddTags','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x436bc5,_0x47b676){var _0x3795fc=function(_0x12daa5){while(--_0x12daa5){_0x436bc5['push'](_0x436bc5['shift']());}};_0x3795fc(++_0x47b676);}(_0x98c9,0x9d));var _0x998c=function(_0x31cb5f,_0x2df766){_0x31cb5f=_0x31cb5f-0x0;var _0x586042=_0x98c9[_0x31cb5f];return _0x586042;};'use strict';var _=require(_0x998c('0x0'));var util=require(_0x998c('0x1'));var moment=require('moment');var BPromise=require(_0x998c('0x2'));var rs=require(_0x998c('0x3'));var fs=require('fs');var Redis=require(_0x998c('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x998c('0x5'));var logger=require(_0x998c('0x6'))(_0x998c('0x7'));var config=require(_0x998c('0x8'));var jayson=require(_0x998c('0x9'));var client=jayson[_0x998c('0xa')][_0x998c('0xb')]({'port':0x232a});config[_0x998c('0xc')]=_[_0x998c('0xd')](config['redis'],{'host':_0x998c('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x998c('0xf'))[_0x998c('0x10')](socket);function respondWithRpcPromise(_0x549ea4,_0x11fc69,_0x1514a6){return new BPromise(function(_0x4af9c4,_0x197707){return client[_0x998c('0x11')](_0x549ea4,_0x1514a6)['then'](function(_0x35e5a3){logger[_0x998c('0x12')]('SmsInteraction,\x20%s,\x20%s',_0x11fc69,_0x998c('0x13'));logger[_0x998c('0x14')](_0x998c('0x15'),_0x11fc69,_0x998c('0x13'),JSON['stringify'](_0x35e5a3));if(_0x35e5a3[_0x998c('0x16')]){if(_0x35e5a3[_0x998c('0x16')][_0x998c('0x17')]===0x1f4){logger['error'](_0x998c('0x18'),_0x11fc69,_0x35e5a3[_0x998c('0x16')][_0x998c('0x19')]);return _0x197707(_0x35e5a3[_0x998c('0x16')][_0x998c('0x19')]);}logger[_0x998c('0x16')](_0x998c('0x18'),_0x11fc69,_0x35e5a3[_0x998c('0x16')][_0x998c('0x19')]);return _0x4af9c4(_0x35e5a3[_0x998c('0x16')][_0x998c('0x19')]);}else{logger['info'](_0x998c('0x18'),_0x11fc69,_0x998c('0x13'));_0x4af9c4(_0x35e5a3[_0x998c('0x1a')][_0x998c('0x19')]);}})[_0x998c('0x1b')](function(_0x56fc48){logger['error']('SmsInteraction,\x20%s,\x20%s',_0x11fc69,_0x56fc48);_0x197707(_0x56fc48);});});}exports[_0x998c('0x1c')]=function(_0x4eafb6){var _0x546881=this;return new Promise(function(_0x43438a,_0x2fd479){return db[_0x998c('0x1d')][_0x998c('0x1e')](_0x4eafb6[_0x998c('0x1f')],{'raw':_0x4eafb6['options']?_0x4eafb6[_0x998c('0x20')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4eafb6[_0x998c('0x20')]?_0x4eafb6[_0x998c('0x20')][_0x998c('0x21')]||null:null,'attributes':_0x4eafb6[_0x998c('0x20')]?_0x4eafb6[_0x998c('0x20')][_0x998c('0x22')]||null:null,'limit':_0x4eafb6[_0x998c('0x20')]?_0x4eafb6[_0x998c('0x20')][_0x998c('0x23')]||null:null})[_0x998c('0x24')](function(_0x504910){logger[_0x998c('0x12')](_0x998c('0x1c'),_0x4eafb6);logger['debug']('UpdateSmsInteraction',_0x4eafb6,JSON[_0x998c('0x25')](_0x504910));_0x43438a(_0x504910);})[_0x998c('0x1b')](function(_0x4cafc2){logger['error'](_0x998c('0x1c'),_0x4cafc2['message'],_0x4eafb6);_0x2fd479(_0x546881[_0x998c('0x16')](0x1f4,_0x4cafc2[_0x998c('0x19')]));});});};exports[_0x998c('0x26')]=function(_0x42ba93){return new Promise(function(_0x2234b2,_0x59ec2b){return db[_0x998c('0x1d')]['find']({'where':_0x42ba93[_0x998c('0x20')]?_0x42ba93['options']['where']||null:null})['then'](function(_0xeaaaac){if(_0xeaaaac){return _0xeaaaac['addTags'](_0x42ba93[_0x998c('0x1f')][_0x998c('0x27')],_['omit'](_0x42ba93[_0x998c('0x1f')],[_0x998c('0x27'),'id'])||{});}})[_0x998c('0x28')](function(_0x13ccf8){logger[_0x998c('0x12')](_0x998c('0x29'),_0x42ba93);logger[_0x998c('0x14')](_0x998c('0x29'),_0x42ba93,JSON[_0x998c('0x25')](_0x13ccf8));_0x2234b2(_0x13ccf8);})['catch'](function(_0x8ef152){logger[_0x998c('0x16')]('AddTags',_0x8ef152['message'],_0x42ba93);_0x59ec2b(_this[_0x998c('0x16')](0x1f4,_0x8ef152[_0x998c('0x19')]));});});};
\ No newline at end of file
index 43d358d..7ee1936 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89cc=['./smsInteraction.events','remove','update','removeListener','register','smsInteraction:'];(function(_0x31c910,_0x1c056d){var _0x29cfb3=function(_0x24b79b){while(--_0x24b79b){_0x31c910['push'](_0x31c910['shift']());}};_0x29cfb3(++_0x1c056d);}(_0x89cc,0x168));var _0xc89c=function(_0x1a828e,_0x55aa8d){_0x1a828e=_0x1a828e-0x0;var _0x4a03d9=_0x89cc[_0x1a828e];return _0x4a03d9;};'use strict';var SmsInteractionEvents=require(_0xc89c('0x0'));var events=['save',_0xc89c('0x1'),_0xc89c('0x2')];function createListener(_0x31c5c2,_0x4c5b6d){return function(_0x1c85e9){_0x4c5b6d['emit'](_0x31c5c2,_0x1c85e9);};}function removeListener(_0x16b544,_0x422155){return function(){SmsInteractionEvents[_0xc89c('0x3')](_0x16b544,_0x422155);};}exports[_0xc89c('0x4')]=function(_0x4432e6){for(var _0x346f59=0x0,_0x36955d=events['length'];_0x346f59<_0x36955d;_0x346f59++){var _0x5ed184=events[_0x346f59];var _0x165ed0=createListener(_0xc89c('0x5')+_0x5ed184,_0x4432e6);SmsInteractionEvents['on'](_0x5ed184,_0x165ed0);}};
\ No newline at end of file
+var _0x3cbd=['remove','update','removeListener','register','length','smsInteraction:','./smsInteraction.events','save'];(function(_0x26a351,_0x5dd04c){var _0x1ef7fe=function(_0x4ea269){while(--_0x4ea269){_0x26a351['push'](_0x26a351['shift']());}};_0x1ef7fe(++_0x5dd04c);}(_0x3cbd,0xae));var _0xd3cb=function(_0x1a65ee,_0x249675){_0x1a65ee=_0x1a65ee-0x0;var _0x5f23a1=_0x3cbd[_0x1a65ee];return _0x5f23a1;};'use strict';var SmsInteractionEvents=require(_0xd3cb('0x0'));var events=[_0xd3cb('0x1'),_0xd3cb('0x2'),_0xd3cb('0x3')];function createListener(_0x2207d1,_0x3c0d1a){return function(_0x494f2a){_0x3c0d1a['emit'](_0x2207d1,_0x494f2a);};}function removeListener(_0x28a1a3,_0x2706c8){return function(){SmsInteractionEvents[_0xd3cb('0x4')](_0x28a1a3,_0x2706c8);};}exports[_0xd3cb('0x5')]=function(_0x482c71){for(var _0x526168=0x0,_0x585a51=events[_0xd3cb('0x6')];_0x526168<_0x585a51;_0x526168++){var _0x311f2b=events[_0x526168];var _0x7b1968=createListener(_0xd3cb('0x7')+_0x311f2b,_0x482c71);SmsInteractionEvents['on'](_0x311f2b,_0x7b1968);}};
\ No newline at end of file
index 9c8c92e..8dbbcaa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99d4=['show','post','tracked','sms','smsmessage:create','/:id/status','status','put','accept','/:id/reject','reject','delete','destroy','exports','multer','path','Router','fs-extra','./smsMessage.controller','get','isAuthenticated','/describe','/:id'];(function(_0x20afc3,_0x2f189a){var _0x4cbb43=function(_0x647042){while(--_0x647042){_0x20afc3['push'](_0x20afc3['shift']());}};_0x4cbb43(++_0x2f189a);}(_0x99d4,0x122));var _0x499d=function(_0x1bb3a1,_0x559613){_0x1bb3a1=_0x1bb3a1-0x0;var _0x18bf71=_0x99d4[_0x1bb3a1];return _0x18bf71;};'use strict';var multer=require(_0x499d('0x0'));var util=require('util');var path=require(_0x499d('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x499d('0x2')]();var fs_extra=require(_0x499d('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x499d('0x4'));router[_0x499d('0x5')]('/',auth[_0x499d('0x6')](),controller['index']);router[_0x499d('0x5')](_0x499d('0x7'),auth[_0x499d('0x6')](),controller['describe']);router['get'](_0x499d('0x8'),auth[_0x499d('0x6')](),controller[_0x499d('0x9')]);router[_0x499d('0xa')]('/',auth[_0x499d('0x6')](),interaction[_0x499d('0xb')](_0x499d('0xc'),_0x499d('0xd')),controller['create']);router[_0x499d('0xa')](_0x499d('0xe'),controller[_0x499d('0xf')]);router[_0x499d('0x10')](_0x499d('0x8'),auth[_0x499d('0x6')](),controller['update']);router[_0x499d('0x10')]('/:id/accept',auth[_0x499d('0x6')](),controller[_0x499d('0x11')]);router[_0x499d('0x10')](_0x499d('0x12'),auth[_0x499d('0x6')](),controller[_0x499d('0x13')]);router[_0x499d('0x14')]('/:id',auth[_0x499d('0x6')](),controller[_0x499d('0x15')]);module[_0x499d('0x16')]=router;
\ No newline at end of file
+var _0x8a17=['exports','multer','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./smsMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','post','tracked','sms','smsmessage:create','create','/:id/status','put','update','/:id/accept','/:id/reject','reject','delete','destroy'];(function(_0xd1fa62,_0x2fa46d){var _0x44bcbc=function(_0x2dd5c7){while(--_0x2dd5c7){_0xd1fa62['push'](_0xd1fa62['shift']());}};_0x44bcbc(++_0x2fa46d);}(_0x8a17,0x135));var _0x78a1=function(_0x2211ed,_0x1bca0b){_0x2211ed=_0x2211ed-0x0;var _0x4d78cc=_0x8a17[_0x2211ed];return _0x4d78cc;};'use strict';var multer=require(_0x78a1('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x78a1('0x1'));var express=require(_0x78a1('0x2'));var router=express[_0x78a1('0x3')]();var fs_extra=require(_0x78a1('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x78a1('0x5'));var config=require(_0x78a1('0x6'));var controller=require(_0x78a1('0x7'));router[_0x78a1('0x8')]('/',auth[_0x78a1('0x9')](),controller[_0x78a1('0xa')]);router[_0x78a1('0x8')](_0x78a1('0xb'),auth['isAuthenticated'](),controller[_0x78a1('0xc')]);router[_0x78a1('0x8')](_0x78a1('0xd'),auth[_0x78a1('0x9')](),controller['show']);router[_0x78a1('0xe')]('/',auth[_0x78a1('0x9')](),interaction[_0x78a1('0xf')](_0x78a1('0x10'),_0x78a1('0x11')),controller[_0x78a1('0x12')]);router[_0x78a1('0xe')](_0x78a1('0x13'),controller['status']);router[_0x78a1('0x14')](_0x78a1('0xd'),auth['isAuthenticated'](),controller[_0x78a1('0x15')]);router['put'](_0x78a1('0x16'),auth[_0x78a1('0x9')](),controller['accept']);router[_0x78a1('0x14')](_0x78a1('0x17'),auth[_0x78a1('0x9')](),controller[_0x78a1('0x18')]);router[_0x78a1('0x19')](_0x78a1('0xd'),auth[_0x78a1('0x9')](),controller[_0x78a1('0x1a')]);module[_0x78a1('0x1b')]=router;
\ No newline at end of file
index a192325..f31a962 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9787=['DATE','BOOLEAN','sequelize','exports','TEXT','medium','ENUM','out','STRING'];(function(_0x5b794c,_0x27a019){var _0x4caadf=function(_0x563fec){while(--_0x563fec){_0x5b794c['push'](_0x5b794c['shift']());}};_0x4caadf(++_0x27a019);}(_0x9787,0x122));var _0x7978=function(_0x37bcd8,_0x27bed9){_0x37bcd8=_0x37bcd8-0x0;var _0x422480=_0x9787[_0x37bcd8];return _0x422480;};'use strict';var Sequelize=require(_0x7978('0x0'));module[_0x7978('0x1')]={'body':{'type':Sequelize[_0x7978('0x2')](_0x7978('0x3')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x7978('0x4')]('in',_0x7978('0x5')),'defaultValue':_0x7978('0x5'),'allowNull':![]},'messageId':{'type':Sequelize[_0x7978('0x6')](0xbe)},'phone':{'type':Sequelize['STRING']},'readAt':{'type':Sequelize[_0x7978('0x7')]},'secret':{'type':Sequelize[_0x7978('0x8')],'defaultValue':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0x7978('0x2')]}};
\ No newline at end of file
+var _0x86e7=['sequelize','exports','TEXT','medium','ENUM','out','STRING','DATE'];(function(_0x4c12ec,_0x2e9103){var _0x3ae42c=function(_0x5a728f){while(--_0x5a728f){_0x4c12ec['push'](_0x4c12ec['shift']());}};_0x3ae42c(++_0x2e9103);}(_0x86e7,0x130));var _0x786e=function(_0x13e741,_0x5d3c24){_0x13e741=_0x13e741-0x0;var _0x3f8bb3=_0x86e7[_0x13e741];return _0x3f8bb3;};'use strict';var Sequelize=require(_0x786e('0x0'));module[_0x786e('0x1')]={'body':{'type':Sequelize[_0x786e('0x2')](_0x786e('0x3')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x786e('0x4')]('in',_0x786e('0x5')),'defaultValue':_0x786e('0x5'),'allowNull':![]},'messageId':{'type':Sequelize[_0x786e('0x6')](0xbe)},'phone':{'type':Sequelize[_0x786e('0x6')]},'readAt':{'type':Sequelize[_0x786e('0x7')]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'providerName':{'type':Sequelize[_0x786e('0x6')]},'providerResponse':{'type':Sequelize[_0x786e('0x2')]}};
\ No newline at end of file
index afe5366..aa07da3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5f9=['merge','options','SmsMessage','includeAll','include','findAll','rows','catch','show','params','length','find','create','body','describe','sms-interactions','accept','sms','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','SmsInteraction','SmsInteractionId','isNil','read1stAt','role','null','AcceptMessage','ContactId','Sequelize','contact','User','agent','fullname','email','internal','manual','interface','motionChannel','channel','event','EventManager','get','interaction','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','QueryTypes','SIP/%s','rejectmessage','SmsAccount','SmsAccountId','SmsMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','messageId','SmsAccount,\x20%s,\x20%s,\x20%s','plivo','MessageUUID','sent','Status','plivio','infobip','results','groupName','DELIVERED','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./smsMessage.socket','client','http','request','then','info','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','sendStatus','status','end','json','undefined','count','offset','limit','set','reject','save','update','destroy','stack','name','send','map','rawAttributes','type','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','where','filter','VIRTUAL'];(function(_0x4e9e24,_0x34b638){var _0x3ef905=function(_0x479207){while(--_0x479207){_0x4e9e24['push'](_0x4e9e24['shift']());}};_0x3ef905(++_0x34b638);}(_0xd5f9,0x1f1));var _0x9d5f=function(_0x237da8,_0x37b77a){_0x237da8=_0x237da8-0x0;var _0x558825=_0xd5f9[_0x237da8];return _0x558825;};'use strict';var emlformat=require(_0x9d5f('0x0'));var rimraf=require(_0x9d5f('0x1'));var zipdir=require(_0x9d5f('0x2'));var jsonpatch=require(_0x9d5f('0x3'));var rp=require('request-promise');var moment=require(_0x9d5f('0x4'));var BPromise=require(_0x9d5f('0x5'));var Mustache=require(_0x9d5f('0x6'));var util=require(_0x9d5f('0x7'));var path=require(_0x9d5f('0x8'));var sox=require(_0x9d5f('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9d5f('0xa'));var squel=require(_0x9d5f('0xb'));var crypto=require('crypto');var jsforce=require(_0x9d5f('0xc'));var deskjs=require(_0x9d5f('0xd'));var toCsv=require('to-csv');var querystring=require(_0x9d5f('0xe'));var Papa=require(_0x9d5f('0xf'));var Redis=require('ioredis');var authService=require(_0x9d5f('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x9d5f('0x11'));var hardwareService=require(_0x9d5f('0x12'));var logger=require(_0x9d5f('0x13'))(_0x9d5f('0x14'));var utils=require(_0x9d5f('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x9d5f('0x16'));var db=require(_0x9d5f('0x17'))['db'];config[_0x9d5f('0x18')]=_[_0x9d5f('0x19')](config[_0x9d5f('0x18')],{'host':_0x9d5f('0x1a'),'port':0x18eb});var socket=require(_0x9d5f('0x1b'))(new Redis(config[_0x9d5f('0x18')]));require(_0x9d5f('0x1c'))['register'](socket);var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232c});var client9002=jayson[_0x9d5f('0x1d')][_0x9d5f('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x5d5f1b,_0x23ca6f,_0x10f7d5,_0x34da46){return new BPromise(function(_0x3a9220,_0xdf88d0){var _0x54de1e=_0x34da46||client;return _0x54de1e[_0x9d5f('0x1f')](_0x5d5f1b,_0x10f7d5)[_0x9d5f('0x20')](function(_0xbfb436){logger[_0x9d5f('0x21')](_0x9d5f('0x22'),_0x23ca6f,_0x9d5f('0x23'));logger[_0x9d5f('0x24')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x23ca6f,_0x9d5f('0x23'),JSON[_0x9d5f('0x25')](_0xbfb436));if(_0xbfb436[_0x9d5f('0x26')]){if(_0xbfb436['error']['code']===0x1f4){logger[_0x9d5f('0x26')](_0x9d5f('0x22'),_0x23ca6f,_0xbfb436[_0x9d5f('0x26')][_0x9d5f('0x27')]);return _0xdf88d0(_0xbfb436['error'][_0x9d5f('0x27')]);}logger['error'](_0x9d5f('0x22'),_0x23ca6f,_0xbfb436['error'][_0x9d5f('0x27')]);return _0x3a9220(_0xbfb436[_0x9d5f('0x26')][_0x9d5f('0x27')]);}else{logger[_0x9d5f('0x21')](_0x9d5f('0x22'),_0x23ca6f,'request\x20sent');_0x3a9220(_0xbfb436[_0x9d5f('0x28')][_0x9d5f('0x27')]);}})['catch'](function(_0x2a032a){logger[_0x9d5f('0x26')](_0x9d5f('0x22'),_0x23ca6f,_0x2a032a);_0xdf88d0(_0x2a032a);});});}function respondWithStatusCode(_0x3ccb94,_0x3da35c){_0x3da35c=_0x3da35c||0xcc;return function(_0x507f95){if(_0x507f95){return _0x3ccb94[_0x9d5f('0x29')](_0x3da35c);}return _0x3ccb94[_0x9d5f('0x2a')](_0x3da35c)[_0x9d5f('0x2b')]();};}function respondWithResult(_0x4afdd7,_0x5f8281){_0x5f8281=_0x5f8281||0xc8;return function(_0x4e084a){if(_0x4e084a){return _0x4afdd7[_0x9d5f('0x2a')](_0x5f8281)[_0x9d5f('0x2c')](_0x4e084a);}};}function respondWithFilteredResult(_0x59118d,_0x45465a){return function(_0x1a2b71){if(_0x1a2b71){var _0x3def92=typeof _0x45465a['offset']==='undefined'&&typeof _0x45465a['limit']===_0x9d5f('0x2d');var _0x3e4090=_0x1a2b71[_0x9d5f('0x2e')];var _0x4fafae=_0x3def92?0x0:_0x45465a[_0x9d5f('0x2f')];var _0x4c15e4=_0x3def92?_0x1a2b71[_0x9d5f('0x2e')]:_0x45465a[_0x9d5f('0x2f')]+_0x45465a[_0x9d5f('0x30')];var _0x35f433;if(_0x4c15e4>=_0x3e4090){_0x4c15e4=_0x3e4090;_0x35f433=0xc8;}else{_0x35f433=0xce;}_0x59118d[_0x9d5f('0x2a')](_0x35f433);return _0x59118d[_0x9d5f('0x31')]('Content-Range',_0x4fafae+'-'+_0x4c15e4+'/'+_0x3e4090)[_0x9d5f('0x2c')](_0x1a2b71);}return null;};}function patchUpdates(_0x1cd296){return function(_0x422d88){try{jsonpatch['apply'](_0x422d88,_0x1cd296,!![]);}catch(_0x570476){return BPromise[_0x9d5f('0x32')](_0x570476);}return _0x422d88[_0x9d5f('0x33')]();};}function saveUpdates(_0x297552,_0x18d914){return function(_0x14ac51){if(_0x14ac51){return _0x14ac51[_0x9d5f('0x34')](_0x297552)[_0x9d5f('0x20')](function(_0x3b37e9){return _0x3b37e9;});}return null;};}function removeEntity(_0x233d96,_0x419712){return function(_0x28731e){if(_0x28731e){return _0x28731e[_0x9d5f('0x35')]()[_0x9d5f('0x20')](function(){_0x233d96[_0x9d5f('0x2a')](0xcc)[_0x9d5f('0x2b')]();});}};}function handleEntityNotFound(_0x1a3803,_0xefc4bd){return function(_0x118406){if(!_0x118406){_0x1a3803[_0x9d5f('0x29')](0x194);}return _0x118406;};}function handleError(_0x39d935,_0x27a0d4){_0x27a0d4=_0x27a0d4||0x1f4;return function(_0x4bd128){logger['error'](_0x4bd128[_0x9d5f('0x36')]);if(_0x4bd128[_0x9d5f('0x37')]){delete _0x4bd128[_0x9d5f('0x37')];}_0x39d935[_0x9d5f('0x2a')](_0x27a0d4)[_0x9d5f('0x38')](_0x4bd128);};}exports['index']=function(_0x5548d6,_0x468736){var _0x574350={},_0x2cf184={},_0x59b528={'count':0x0,'rows':[]};var _0xfdde7c=_[_0x9d5f('0x39')](db['SmsMessage'][_0x9d5f('0x3a')],function(_0xe0d1e5){return{'name':_0xe0d1e5['fieldName'],'type':_0xe0d1e5[_0x9d5f('0x3b')]['key']};});_0x2cf184['model']=_[_0x9d5f('0x39')](_0xfdde7c,_0x9d5f('0x37'));_0x2cf184[_0x9d5f('0x3c')]=_[_0x9d5f('0x3d')](_0x5548d6[_0x9d5f('0x3c')]);_0x2cf184[_0x9d5f('0x3e')]=_[_0x9d5f('0x3f')](_0x2cf184[_0x9d5f('0x40')],_0x2cf184[_0x9d5f('0x3c')]);_0x574350[_0x9d5f('0x41')]=_[_0x9d5f('0x3f')](_0x2cf184[_0x9d5f('0x40')],qs[_0x9d5f('0x42')](_0x5548d6[_0x9d5f('0x3c')][_0x9d5f('0x42')]));_0x574350['attributes']=_0x574350[_0x9d5f('0x41')]['length']?_0x574350[_0x9d5f('0x41')]:_0x2cf184[_0x9d5f('0x40')];if(!_0x5548d6['query'][_0x9d5f('0x43')]('nolimit')){_0x574350['limit']=qs[_0x9d5f('0x30')](_0x5548d6[_0x9d5f('0x3c')][_0x9d5f('0x30')]);_0x574350['offset']=qs[_0x9d5f('0x2f')](_0x5548d6[_0x9d5f('0x3c')][_0x9d5f('0x2f')]);}_0x574350['order']=qs['sort'](_0x5548d6[_0x9d5f('0x3c')]['sort']);_0x574350[_0x9d5f('0x44')]=qs[_0x9d5f('0x3e')](_['pick'](_0x5548d6['query'],_0x2cf184[_0x9d5f('0x3e')]),_0xfdde7c);if(_0x5548d6[_0x9d5f('0x3c')][_0x9d5f('0x45')]){_0x574350['where']=_['merge'](_0x574350[_0x9d5f('0x44')],{'$or':_[_0x9d5f('0x39')](_0xfdde7c,function(_0x8e9708){if(_0x8e9708[_0x9d5f('0x3b')]!==_0x9d5f('0x46')){var _0x2e17c0={};_0x2e17c0[_0x8e9708[_0x9d5f('0x37')]]={'$like':'%'+_0x5548d6['query'][_0x9d5f('0x45')]+'%'};return _0x2e17c0;}})});}_0x574350=_[_0x9d5f('0x47')]({},_0x574350,_0x5548d6[_0x9d5f('0x48')]);var _0xdfdf64={'where':_0x574350[_0x9d5f('0x44')]};return db[_0x9d5f('0x49')][_0x9d5f('0x2e')](_0xdfdf64)['then'](function(_0x469ad9){_0x59b528[_0x9d5f('0x2e')]=_0x469ad9;if(_0x5548d6[_0x9d5f('0x3c')][_0x9d5f('0x4a')]){_0x574350[_0x9d5f('0x4b')]=[{'all':!![]}];}return db[_0x9d5f('0x49')][_0x9d5f('0x4c')](_0x574350);})['then'](function(_0x48aca4){_0x59b528[_0x9d5f('0x4d')]=_0x48aca4;return _0x59b528;})[_0x9d5f('0x20')](respondWithFilteredResult(_0x468736,_0x574350))[_0x9d5f('0x4e')](handleError(_0x468736,null));};exports[_0x9d5f('0x4f')]=function(_0x573ef0,_0x562356){var _0x2980a9={'raw':!![],'where':{'id':_0x573ef0[_0x9d5f('0x50')]['id']}},_0x5a6700={};_0x5a6700[_0x9d5f('0x40')]=_['keys'](db['SmsMessage']['rawAttributes']);_0x5a6700['query']=_[_0x9d5f('0x3d')](_0x573ef0['query']);_0x5a6700[_0x9d5f('0x3e')]=_[_0x9d5f('0x3f')](_0x5a6700[_0x9d5f('0x40')],_0x5a6700[_0x9d5f('0x3c')]);_0x2980a9[_0x9d5f('0x41')]=_[_0x9d5f('0x3f')](_0x5a6700['model'],qs[_0x9d5f('0x42')](_0x573ef0[_0x9d5f('0x3c')][_0x9d5f('0x42')]));_0x2980a9[_0x9d5f('0x41')]=_0x2980a9['attributes'][_0x9d5f('0x51')]?_0x2980a9[_0x9d5f('0x41')]:_0x5a6700[_0x9d5f('0x40')];if(_0x573ef0['query'][_0x9d5f('0x4a')]){_0x2980a9[_0x9d5f('0x4b')]=[{'all':!![]}];}_0x2980a9=_[_0x9d5f('0x47')]({},_0x2980a9,_0x573ef0[_0x9d5f('0x48')]);return db[_0x9d5f('0x49')][_0x9d5f('0x52')](_0x2980a9)[_0x9d5f('0x20')](handleEntityNotFound(_0x562356,null))[_0x9d5f('0x20')](respondWithResult(_0x562356,null))['catch'](handleError(_0x562356,null));};exports[_0x9d5f('0x53')]=function(_0xf230ee,_0x2f46be){return db['SmsMessage']['create'](_0xf230ee[_0x9d5f('0x54')],{})[_0x9d5f('0x20')](respondWithResult(_0x2f46be,0xc9))[_0x9d5f('0x4e')](handleError(_0x2f46be,null));};exports['update']=function(_0x2992d7,_0x9dcf01){if(_0x2992d7[_0x9d5f('0x54')]['id']){delete _0x2992d7[_0x9d5f('0x54')]['id'];}return db[_0x9d5f('0x49')][_0x9d5f('0x52')]({'where':{'id':_0x2992d7['params']['id']}})[_0x9d5f('0x20')](handleEntityNotFound(_0x9dcf01,null))[_0x9d5f('0x20')](saveUpdates(_0x2992d7[_0x9d5f('0x54')],null))[_0x9d5f('0x20')](respondWithResult(_0x9dcf01,null))[_0x9d5f('0x4e')](handleError(_0x9dcf01,null));};exports['destroy']=function(_0x1f25dd,_0x4c3926){return db[_0x9d5f('0x49')][_0x9d5f('0x52')]({'where':{'id':_0x1f25dd[_0x9d5f('0x50')]['id']}})[_0x9d5f('0x20')](handleEntityNotFound(_0x4c3926,null))[_0x9d5f('0x20')](removeEntity(_0x4c3926,null))['catch'](handleError(_0x4c3926,null));};exports[_0x9d5f('0x55')]=function(_0x2fb366,_0x23d71e){return db[_0x9d5f('0x49')][_0x9d5f('0x55')]()['then'](respondWithResult(_0x23d71e,null))[_0x9d5f('0x4e')](handleError(_0x23d71e,null));};var interaction_log=require(_0x9d5f('0x13'))(_0x9d5f('0x56'));exports[_0x9d5f('0x57')]=function(_0x1b4c38,_0x59f273,_0x1ac2cf){var _0x232eb5={'agent':{},'channel':_0x9d5f('0x58')};if(_0x1b4c38[_0x9d5f('0x54')]['id']){delete _0x1b4c38[_0x9d5f('0x54')]['id'];}_0x1b4c38['body'][_0x9d5f('0x59')]=!![];_0x1b4c38[_0x9d5f('0x54')][_0x9d5f('0x5a')]=moment()[_0x9d5f('0x5b')](_0x9d5f('0x5c'));_0x1b4c38[_0x9d5f('0x54')]['UserId']=_0x1b4c38['body'][_0x9d5f('0x5d')]||_0x1b4c38[_0x9d5f('0x5e')]['id'];_0x232eb5['agent']['id']=_0x1b4c38[_0x9d5f('0x54')]['UserId'];return db['SmsMessage'][_0x9d5f('0x52')]({'where':{'id':_0x1b4c38['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x59f273,null))['then'](saveUpdates(_0x1b4c38[_0x9d5f('0x54')],null))['then'](function(_0x2ee5fd){if(_0x2ee5fd){_0x232eb5['message']=_0x2ee5fd['get']({'plain':!![]});return db[_0x9d5f('0x5f')][_0x9d5f('0x52')]({'where':{'id':_0x2ee5fd[_0x9d5f('0x60')]}});}return null;})[_0x9d5f('0x20')](handleEntityNotFound(_0x59f273,null))['then'](function(_0x10d283){if(_0x10d283){return _0x10d283['update']({'UserId':_0x1b4c38['body'][_0x9d5f('0x5d')],'read1stAt':_[_0x9d5f('0x61')](_0x10d283[_0x9d5f('0x62')])?moment()[_0x9d5f('0x5b')](_0x9d5f('0x5c')):undefined});}return null;})['then'](function(_0x5a7c00){if(_0x5a7c00){_0x232eb5['interaction']=_0x5a7c00['get']({'plain':!![]});interaction_log['info']('[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x1b4c38[_0x9d5f('0x5e')]['id'],_0x1b4c38[_0x9d5f('0x5e')][_0x9d5f('0x37')],_0x1b4c38[_0x9d5f('0x5e')][_0x9d5f('0x63')],_0x232eb5['interaction']['id'],_0x1b4c38[_0x9d5f('0x54')]?JSON['stringify'](_0x1b4c38['body']):_0x9d5f('0x64'));return respondWithRpcPromise(_0x9d5f('0x65'),'acceptMessage',_0x232eb5);}return null;})[_0x9d5f('0x20')](function(_0x11a247){var _0x14a323='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x11a247[_0x9d5f('0x27')][_0x9d5f('0x66')];return db['sequelize'][_0x9d5f('0x3c')](_0x14a323,{'type':db[_0x9d5f('0x67')]['QueryTypes']['SELECT'],'raw':!![]})['then'](function(_0x2267bd){return _0x2267bd;});})[_0x9d5f('0x20')](function(_0x56b7d6){if(_0x56b7d6){_0x232eb5[_0x9d5f('0x27')][_0x9d5f('0x68')]=_0x56b7d6[0x0];if(!_0x1b4c38[_0x9d5f('0x54')][_0x9d5f('0x5d')])return;return db[_0x9d5f('0x69')][_0x9d5f('0x52')]({'where':{'id':_0x1b4c38[_0x9d5f('0x54')][_0x9d5f('0x5d')],'role':_0x9d5f('0x6a')},'attributes':['id','name',_0x9d5f('0x6b'),_0x9d5f('0x6c'),_0x9d5f('0x6d')],'raw':!![]});}return null;})[_0x9d5f('0x20')](function(_0x8fc895){if(!_0x8fc895)return null;_0x232eb5[_0x9d5f('0x27')][_0x9d5f('0x6a')]=_0x8fc895;return _0x232eb5;})[_0x9d5f('0x20')](function(_0x599874){if(_0x599874){if(_0x1b4c38[_0x9d5f('0x54')][_0x9d5f('0x6e')]){_0x232eb5[_0x9d5f('0x27')][_0x9d5f('0x6f')]=util[_0x9d5f('0x5b')]('SIP/%s',_0x1b4c38['user']['name']);_0x232eb5[_0x9d5f('0x27')]['channel']=_0x232eb5['channel'];_0x232eb5[_0x9d5f('0x27')][_0x9d5f('0x70')]=_0x232eb5[_0x9d5f('0x71')];_0x232eb5[_0x9d5f('0x27')][_0x9d5f('0x72')]=_0x9d5f('0x57');return respondWithRpcPromise(_0x9d5f('0x73'),'EventManager',{'event':'acceptmessage','message':_0x232eb5[_0x9d5f('0x27')]},client9002)[_0x9d5f('0x20')](function(){return _0x232eb5;});}return _0x232eb5;}return null;})[_0x9d5f('0x20')](respondWithResult(_0x59f273,null))[_0x9d5f('0x4e')](handleError(_0x59f273,null));};var interaction_log=require(_0x9d5f('0x13'))(_0x9d5f('0x56'));exports['reject']=function(_0x3fabe9,_0x19049f,_0x42fc08){var _0x51a4aa={'agent':{},'channel':_0x9d5f('0x58')};if(_0x3fabe9[_0x9d5f('0x54')]['id']){delete _0x3fabe9[_0x9d5f('0x54')]['id'];}_0x3fabe9[_0x9d5f('0x54')]['UserId']=_0x3fabe9[_0x9d5f('0x54')][_0x9d5f('0x5d')]||_0x3fabe9[_0x9d5f('0x5e')]['id'];_0x51a4aa[_0x9d5f('0x6a')]['id']=_0x3fabe9[_0x9d5f('0x54')]['UserId'];return db[_0x9d5f('0x49')][_0x9d5f('0x52')]({'where':{'id':_0x3fabe9['params']['id'],'UserId':null}})[_0x9d5f('0x20')](handleEntityNotFound(_0x19049f,null))['then'](function(_0x307e0e){if(_0x307e0e){_0x51a4aa['message']=_0x307e0e[_0x9d5f('0x74')]({'plain':!![]});return db['SmsInteraction'][_0x9d5f('0x52')]({'where':{'id':_0x307e0e[_0x9d5f('0x60')]}});}return null;})['then'](handleEntityNotFound(_0x19049f,null))[_0x9d5f('0x20')](function(_0x29d412){if(_0x29d412){_0x51a4aa[_0x9d5f('0x75')]=_0x29d412[_0x9d5f('0x74')]({'plain':!![]});interaction_log[_0x9d5f('0x21')](_0x9d5f('0x76'),_0x3fabe9[_0x9d5f('0x5e')]['id'],_0x3fabe9['user'][_0x9d5f('0x37')],_0x3fabe9['user']['role'],_0x51a4aa[_0x9d5f('0x75')]['id'],_0x3fabe9[_0x9d5f('0x54')]?JSON[_0x9d5f('0x25')](_0x3fabe9['body']):_0x9d5f('0x64'));return respondWithRpcPromise(_0x9d5f('0x77'),'rejectMessage',_0x51a4aa);}return null;})[_0x9d5f('0x20')](function(_0x3d261a){var _0x4e093b=_0x9d5f('0x78')+_0x3d261a['message'][_0x9d5f('0x66')];return db['sequelize'][_0x9d5f('0x3c')](_0x4e093b,{'type':db[_0x9d5f('0x67')][_0x9d5f('0x79')]['SELECT'],'raw':!![]})[_0x9d5f('0x20')](function(_0x317f63){return _0x317f63;});})[_0x9d5f('0x20')](function(_0x899c62){if(_0x899c62){_0x51a4aa[_0x9d5f('0x27')][_0x9d5f('0x68')]=_0x899c62[0x0];if(!_0x3fabe9[_0x9d5f('0x54')][_0x9d5f('0x5d')])return;return db[_0x9d5f('0x69')][_0x9d5f('0x52')]({'where':{'id':_0x3fabe9[_0x9d5f('0x54')][_0x9d5f('0x5d')],'role':_0x9d5f('0x6a')},'attributes':['id',_0x9d5f('0x37'),_0x9d5f('0x6b'),_0x9d5f('0x6c'),_0x9d5f('0x6d')],'raw':!![]});}return null;})[_0x9d5f('0x20')](function(_0x2a5b42){if(!_0x2a5b42)return null;_0x51a4aa[_0x9d5f('0x27')][_0x9d5f('0x6a')]=_0x2a5b42;return _0x51a4aa;})[_0x9d5f('0x20')](function(_0x533e2c){if(_0x533e2c){_0x533e2c[_0x9d5f('0x27')][_0x9d5f('0x6f')]=util[_0x9d5f('0x5b')](_0x9d5f('0x7a'),_0x3fabe9[_0x9d5f('0x5e')][_0x9d5f('0x37')]);_0x533e2c['message'][_0x9d5f('0x71')]=_0x51a4aa['channel'];_0x533e2c[_0x9d5f('0x27')][_0x9d5f('0x70')]=_0x51a4aa[_0x9d5f('0x71')];_0x533e2c[_0x9d5f('0x27')][_0x9d5f('0x72')]='reject';respondWithRpcPromise(_0x9d5f('0x73'),'EventManager',{'event':_0x9d5f('0x7b'),'message':_0x533e2c['message']},client9002);return _0x51a4aa;}return null;})['then'](respondWithResult(_0x19049f,null))[_0x9d5f('0x4e')](handleError(_0x19049f,null));};exports[_0x9d5f('0x2a')]=function(_0x752fa4,_0x292d2f,_0x263581){if(_0x752fa4[_0x9d5f('0x54')]['id']){delete _0x752fa4[_0x9d5f('0x54')]['id'];}var _0x4e05ce;return db['SmsMessage'][_0x9d5f('0x52')]({'where':{'id':_0x752fa4[_0x9d5f('0x50')]['id']}})[_0x9d5f('0x20')](handleEntityNotFound(_0x292d2f,null))[_0x9d5f('0x20')](function(_0x502f88){if(_0x502f88){_0x4e05ce=_0x502f88;return db[_0x9d5f('0x7c')]['find']({'where':{'id':_0x502f88[_0x9d5f('0x7d')]}});}})[_0x9d5f('0x20')](handleEntityNotFound(_0x292d2f,null))['then'](function(_0x58edfa){if(_0x58edfa){logger[_0x9d5f('0x24')](_0x9d5f('0x7e'),_0x9d5f('0x2a'),_0x9d5f('0x7f'),_0x58edfa[_0x9d5f('0x3b')],util[_0x9d5f('0x80')](_0x752fa4[_0x9d5f('0x54')],{'showHidden':![],'depth':null}));switch(_0x58edfa[_0x9d5f('0x3b')]){case _0x9d5f('0x81'):if(_0x752fa4[_0x9d5f('0x54')][_0x9d5f('0x82')]&&_0x752fa4[_0x9d5f('0x54')][_0x9d5f('0x82')]===_0x4e05ce[_0x9d5f('0x83')]){return _0x4e05ce['update']({'read':!![]});}else{logger['error'](_0x9d5f('0x84'),_0x9d5f('0x2a'),_0x9d5f('0x81'),util[_0x9d5f('0x80')](_0x752fa4[_0x9d5f('0x54')],{'showHidden':![],'depth':null}));}break;case _0x9d5f('0x85'):if(_0x752fa4[_0x9d5f('0x54')][_0x9d5f('0x86')]&&_0x752fa4[_0x9d5f('0x54')][_0x9d5f('0x86')]===_0x4e05ce[_0x9d5f('0x83')]&&_['indexOf']([_0x9d5f('0x87'),'delivered'],_0x752fa4[_0x9d5f('0x54')][_0x9d5f('0x88')])>=0x0){return _0x4e05ce[_0x9d5f('0x34')]({'read':!![]});}else{logger[_0x9d5f('0x26')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x9d5f('0x2a'),_0x9d5f('0x89'),util[_0x9d5f('0x80')](_0x752fa4[_0x9d5f('0x54')],{'showHidden':![],'depth':null}));}break;case _0x9d5f('0x8a'):var _0x5cfaf1=_0x752fa4[_0x9d5f('0x54')][_0x9d5f('0x8b')][0x0];if(_0x5cfaf1[_0x9d5f('0x2a')][_0x9d5f('0x8c')]===_0x9d5f('0x8d')){return _0x4e05ce[_0x9d5f('0x34')]({'read':!![]});}else{logger[_0x9d5f('0x26')](_0x9d5f('0x84'),'status',_0x9d5f('0x8a'),util[_0x9d5f('0x80')](_0x752fa4['body'],{'showHidden':![],'depth':null}));}break;}return _0x4e05ce;}})[_0x9d5f('0x20')](respondWithResult(_0x292d2f,null))[_0x9d5f('0x4e')](handleError(_0x292d2f,null));};
\ No newline at end of file
+var _0x9582=['eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','jayson/promise','client','http','then','info','SmsMessage,\x20%s,\x20%s','request\x20sent','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','status','json','limit','undefined','count','offset','set','reject','save','update','destroy','end','sendStatus','stack','name','send','index','map','SmsMessage','rawAttributes','fieldName','type','key','model','keys','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','filters','filter','where','merge','VIRTUAL','includeAll','findAll','rows','show','params','include','find','create','body','describe','sms-interactions','sms','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','SmsInteraction','SmsInteractionId','read1stAt','format','interaction','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','Sequelize','QueryTypes','SELECT','contact','User','fullname','email','internal','manual','interface','SIP/%s','channel','motionChannel','event','accept','EventManager','acceptmessage','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','rejectMessage','sequelize','rejectmessage','SmsAccount','SmsAccountId','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','messageId','SmsAccount,\x20%s,\x20%s,\x20%s','plivo','MessageUUID','indexOf','delivered','Status','plivio','results','DELIVERED'];(function(_0x3bfd5b,_0x100e29){var _0xba6715=function(_0xb5a163){while(--_0xb5a163){_0x3bfd5b['push'](_0x3bfd5b['shift']());}};_0xba6715(++_0x100e29);}(_0x9582,0x95));var _0x2958=function(_0x350b70,_0x3cbb76){_0x350b70=_0x350b70-0x0;var _0x447b42=_0x9582[_0x350b70];return _0x447b42;};'use strict';var emlformat=require(_0x2958('0x0'));var rimraf=require(_0x2958('0x1'));var zipdir=require(_0x2958('0x2'));var jsonpatch=require(_0x2958('0x3'));var rp=require(_0x2958('0x4'));var moment=require(_0x2958('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x2958('0x6'));var util=require(_0x2958('0x7'));var path=require(_0x2958('0x8'));var sox=require(_0x2958('0x9'));var csv=require(_0x2958('0xa'));var ejs=require(_0x2958('0xb'));var fs=require('fs');var fs_extra=require(_0x2958('0xc'));var _=require(_0x2958('0xd'));var squel=require(_0x2958('0xe'));var crypto=require(_0x2958('0xf'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x2958('0xa'));var querystring=require('querystring');var Papa=require(_0x2958('0x10'));var Redis=require('ioredis');var authService=require(_0x2958('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x2958('0x12'));var hardwareService=require(_0x2958('0x13'));var logger=require(_0x2958('0x14'))(_0x2958('0x15'));var utils=require(_0x2958('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x2958('0x17'));var db=require(_0x2958('0x18'))['db'];config[_0x2958('0x19')]=_[_0x2958('0x1a')](config[_0x2958('0x19')],{'host':_0x2958('0x1b'),'port':0x18eb});var socket=require(_0x2958('0x1c'))(new Redis(config[_0x2958('0x19')]));require('./smsMessage.socket')[_0x2958('0x1d')](socket);var jayson=require(_0x2958('0x1e'));var client=jayson['client']['http']({'port':0x232c});var client9002=jayson[_0x2958('0x1f')][_0x2958('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x5f06b1,_0x3bef50,_0x544563,_0x5c3ac3){return new BPromise(function(_0x429d42,_0x55779b){var _0x55e261=_0x5c3ac3||client;return _0x55e261['request'](_0x5f06b1,_0x544563)[_0x2958('0x21')](function(_0x160949){logger[_0x2958('0x22')](_0x2958('0x23'),_0x3bef50,_0x2958('0x24'));logger['debug'](_0x2958('0x25'),_0x3bef50,_0x2958('0x24'),JSON[_0x2958('0x26')](_0x160949));if(_0x160949['error']){if(_0x160949[_0x2958('0x27')]['code']===0x1f4){logger[_0x2958('0x27')]('SmsMessage,\x20%s,\x20%s',_0x3bef50,_0x160949['error'][_0x2958('0x28')]);return _0x55779b(_0x160949[_0x2958('0x27')][_0x2958('0x28')]);}logger[_0x2958('0x27')](_0x2958('0x23'),_0x3bef50,_0x160949[_0x2958('0x27')][_0x2958('0x28')]);return _0x429d42(_0x160949[_0x2958('0x27')][_0x2958('0x28')]);}else{logger[_0x2958('0x22')](_0x2958('0x23'),_0x3bef50,_0x2958('0x24'));_0x429d42(_0x160949[_0x2958('0x29')][_0x2958('0x28')]);}})[_0x2958('0x2a')](function(_0x4f811a){logger['error'](_0x2958('0x23'),_0x3bef50,_0x4f811a);_0x55779b(_0x4f811a);});});}function respondWithStatusCode(_0x33c5b0,_0x28c1f5){_0x28c1f5=_0x28c1f5||0xcc;return function(_0x43cf73){if(_0x43cf73){return _0x33c5b0['sendStatus'](_0x28c1f5);}return _0x33c5b0[_0x2958('0x2b')](_0x28c1f5)['end']();};}function respondWithResult(_0x402d97,_0x40adce){_0x40adce=_0x40adce||0xc8;return function(_0x30a137){if(_0x30a137){return _0x402d97[_0x2958('0x2b')](_0x40adce)[_0x2958('0x2c')](_0x30a137);}};}function respondWithFilteredResult(_0x36e2a5,_0x153958){return function(_0x5d1dfc){if(_0x5d1dfc){var _0x21b919=typeof _0x153958['offset']==='undefined'&&typeof _0x153958[_0x2958('0x2d')]===_0x2958('0x2e');var _0x973486=_0x5d1dfc[_0x2958('0x2f')];var _0x584179=_0x21b919?0x0:_0x153958[_0x2958('0x30')];var _0x222b83=_0x21b919?_0x5d1dfc[_0x2958('0x2f')]:_0x153958['offset']+_0x153958[_0x2958('0x2d')];var _0x32e366;if(_0x222b83>=_0x973486){_0x222b83=_0x973486;_0x32e366=0xc8;}else{_0x32e366=0xce;}_0x36e2a5['status'](_0x32e366);return _0x36e2a5[_0x2958('0x31')]('Content-Range',_0x584179+'-'+_0x222b83+'/'+_0x973486)[_0x2958('0x2c')](_0x5d1dfc);}return null;};}function patchUpdates(_0x56d9fd){return function(_0x3492c0){try{jsonpatch['apply'](_0x3492c0,_0x56d9fd,!![]);}catch(_0x4477b5){return BPromise[_0x2958('0x32')](_0x4477b5);}return _0x3492c0[_0x2958('0x33')]();};}function saveUpdates(_0x301ee1,_0x171fee){return function(_0x3a124a){if(_0x3a124a){return _0x3a124a[_0x2958('0x34')](_0x301ee1)[_0x2958('0x21')](function(_0x274573){return _0x274573;});}return null;};}function removeEntity(_0x58f9c3,_0x3d4586){return function(_0x5e990d){if(_0x5e990d){return _0x5e990d[_0x2958('0x35')]()['then'](function(){_0x58f9c3[_0x2958('0x2b')](0xcc)[_0x2958('0x36')]();});}};}function handleEntityNotFound(_0x35df90,_0x36088c){return function(_0x3302ab){if(!_0x3302ab){_0x35df90[_0x2958('0x37')](0x194);}return _0x3302ab;};}function handleError(_0x3e6873,_0x468b8e){_0x468b8e=_0x468b8e||0x1f4;return function(_0x15e541){logger[_0x2958('0x27')](_0x15e541[_0x2958('0x38')]);if(_0x15e541[_0x2958('0x39')]){delete _0x15e541[_0x2958('0x39')];}_0x3e6873['status'](_0x468b8e)[_0x2958('0x3a')](_0x15e541);};}exports[_0x2958('0x3b')]=function(_0x281817,_0x27edd6){var _0x4e0db4={},_0x2f9a28={},_0x121db1={'count':0x0,'rows':[]};var _0xd6e850=_[_0x2958('0x3c')](db[_0x2958('0x3d')][_0x2958('0x3e')],function(_0x1ed89b){return{'name':_0x1ed89b[_0x2958('0x3f')],'type':_0x1ed89b[_0x2958('0x40')][_0x2958('0x41')]};});_0x2f9a28[_0x2958('0x42')]=_[_0x2958('0x3c')](_0xd6e850,_0x2958('0x39'));_0x2f9a28['query']=_[_0x2958('0x43')](_0x281817[_0x2958('0x44')]);_0x2f9a28['filters']=_['intersection'](_0x2f9a28[_0x2958('0x42')],_0x2f9a28[_0x2958('0x44')]);_0x4e0db4[_0x2958('0x45')]=_[_0x2958('0x46')](_0x2f9a28[_0x2958('0x42')],qs[_0x2958('0x47')](_0x281817[_0x2958('0x44')][_0x2958('0x47')]));_0x4e0db4[_0x2958('0x45')]=_0x4e0db4[_0x2958('0x45')][_0x2958('0x48')]?_0x4e0db4[_0x2958('0x45')]:_0x2f9a28[_0x2958('0x42')];if(!_0x281817['query'][_0x2958('0x49')](_0x2958('0x4a'))){_0x4e0db4[_0x2958('0x2d')]=qs[_0x2958('0x2d')](_0x281817['query'][_0x2958('0x2d')]);_0x4e0db4['offset']=qs['offset'](_0x281817[_0x2958('0x44')][_0x2958('0x30')]);}_0x4e0db4[_0x2958('0x4b')]=qs[_0x2958('0x4c')](_0x281817[_0x2958('0x44')][_0x2958('0x4c')]);_0x4e0db4['where']=qs[_0x2958('0x4d')](_['pick'](_0x281817['query'],_0x2f9a28[_0x2958('0x4d')]),_0xd6e850);if(_0x281817['query'][_0x2958('0x4e')]){_0x4e0db4[_0x2958('0x4f')]=_[_0x2958('0x50')](_0x4e0db4[_0x2958('0x4f')],{'$or':_[_0x2958('0x3c')](_0xd6e850,function(_0x266eea){if(_0x266eea[_0x2958('0x40')]!==_0x2958('0x51')){var _0x48ea43={};_0x48ea43[_0x266eea[_0x2958('0x39')]]={'$like':'%'+_0x281817[_0x2958('0x44')][_0x2958('0x4e')]+'%'};return _0x48ea43;}})});}_0x4e0db4=_[_0x2958('0x50')]({},_0x4e0db4,_0x281817['options']);var _0x4663f2={'where':_0x4e0db4[_0x2958('0x4f')]};return db['SmsMessage'][_0x2958('0x2f')](_0x4663f2)[_0x2958('0x21')](function(_0x39dc94){_0x121db1[_0x2958('0x2f')]=_0x39dc94;if(_0x281817[_0x2958('0x44')][_0x2958('0x52')]){_0x4e0db4['include']=[{'all':!![]}];}return db[_0x2958('0x3d')][_0x2958('0x53')](_0x4e0db4);})[_0x2958('0x21')](function(_0x43a270){_0x121db1[_0x2958('0x54')]=_0x43a270;return _0x121db1;})[_0x2958('0x21')](respondWithFilteredResult(_0x27edd6,_0x4e0db4))[_0x2958('0x2a')](handleError(_0x27edd6,null));};exports[_0x2958('0x55')]=function(_0x2e0fc7,_0x329652){var _0x1bac46={'raw':!![],'where':{'id':_0x2e0fc7[_0x2958('0x56')]['id']}},_0x11e1da={};_0x11e1da[_0x2958('0x42')]=_[_0x2958('0x43')](db[_0x2958('0x3d')][_0x2958('0x3e')]);_0x11e1da['query']=_[_0x2958('0x43')](_0x2e0fc7['query']);_0x11e1da[_0x2958('0x4d')]=_[_0x2958('0x46')](_0x11e1da[_0x2958('0x42')],_0x11e1da['query']);_0x1bac46['attributes']=_[_0x2958('0x46')](_0x11e1da[_0x2958('0x42')],qs[_0x2958('0x47')](_0x2e0fc7['query']['fields']));_0x1bac46[_0x2958('0x45')]=_0x1bac46[_0x2958('0x45')][_0x2958('0x48')]?_0x1bac46[_0x2958('0x45')]:_0x11e1da[_0x2958('0x42')];if(_0x2e0fc7[_0x2958('0x44')][_0x2958('0x52')]){_0x1bac46[_0x2958('0x57')]=[{'all':!![]}];}_0x1bac46=_[_0x2958('0x50')]({},_0x1bac46,_0x2e0fc7['options']);return db[_0x2958('0x3d')][_0x2958('0x58')](_0x1bac46)['then'](handleEntityNotFound(_0x329652,null))[_0x2958('0x21')](respondWithResult(_0x329652,null))[_0x2958('0x2a')](handleError(_0x329652,null));};exports[_0x2958('0x59')]=function(_0x34ef15,_0x253d7f){return db[_0x2958('0x3d')]['create'](_0x34ef15[_0x2958('0x5a')],{})[_0x2958('0x21')](respondWithResult(_0x253d7f,0xc9))[_0x2958('0x2a')](handleError(_0x253d7f,null));};exports['update']=function(_0x595738,_0x3ee558){if(_0x595738['body']['id']){delete _0x595738[_0x2958('0x5a')]['id'];}return db['SmsMessage'][_0x2958('0x58')]({'where':{'id':_0x595738[_0x2958('0x56')]['id']}})[_0x2958('0x21')](handleEntityNotFound(_0x3ee558,null))[_0x2958('0x21')](saveUpdates(_0x595738[_0x2958('0x5a')],null))['then'](respondWithResult(_0x3ee558,null))['catch'](handleError(_0x3ee558,null));};exports[_0x2958('0x35')]=function(_0x3e11eb,_0xfa171d){return db['SmsMessage']['find']({'where':{'id':_0x3e11eb[_0x2958('0x56')]['id']}})[_0x2958('0x21')](handleEntityNotFound(_0xfa171d,null))[_0x2958('0x21')](removeEntity(_0xfa171d,null))[_0x2958('0x2a')](handleError(_0xfa171d,null));};exports[_0x2958('0x5b')]=function(_0x2d9104,_0x46738c){return db[_0x2958('0x3d')][_0x2958('0x5b')]()[_0x2958('0x21')](respondWithResult(_0x46738c,null))[_0x2958('0x2a')](handleError(_0x46738c,null));};var interaction_log=require(_0x2958('0x14'))(_0x2958('0x5c'));exports['accept']=function(_0x3a4ad9,_0x8c7203,_0x370555){var _0x19e419={'agent':{},'channel':_0x2958('0x5d')};if(_0x3a4ad9[_0x2958('0x5a')]['id']){delete _0x3a4ad9[_0x2958('0x5a')]['id'];}_0x3a4ad9[_0x2958('0x5a')][_0x2958('0x5e')]=!![];_0x3a4ad9['body'][_0x2958('0x5f')]=moment()['format'](_0x2958('0x60'));_0x3a4ad9[_0x2958('0x5a')][_0x2958('0x61')]=_0x3a4ad9['body']['UserId']||_0x3a4ad9['user']['id'];_0x19e419[_0x2958('0x62')]['id']=_0x3a4ad9[_0x2958('0x5a')][_0x2958('0x61')];return db[_0x2958('0x3d')][_0x2958('0x58')]({'where':{'id':_0x3a4ad9[_0x2958('0x56')]['id'],'UserId':null}})[_0x2958('0x21')](handleEntityNotFound(_0x8c7203,null))[_0x2958('0x21')](saveUpdates(_0x3a4ad9['body'],null))['then'](function(_0x42717b){if(_0x42717b){_0x19e419[_0x2958('0x28')]=_0x42717b[_0x2958('0x63')]({'plain':!![]});return db[_0x2958('0x64')]['find']({'where':{'id':_0x42717b[_0x2958('0x65')]}});}return null;})[_0x2958('0x21')](handleEntityNotFound(_0x8c7203,null))[_0x2958('0x21')](function(_0x20ca93){if(_0x20ca93){return _0x20ca93['update']({'UserId':_0x3a4ad9['body']['UserId'],'read1stAt':_['isNil'](_0x20ca93[_0x2958('0x66')])?moment()[_0x2958('0x67')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x2958('0x21')](function(_0x8d4694){if(_0x8d4694){_0x19e419[_0x2958('0x68')]=_0x8d4694[_0x2958('0x63')]({'plain':!![]});interaction_log[_0x2958('0x22')](_0x2958('0x69'),_0x3a4ad9['user']['id'],_0x3a4ad9[_0x2958('0x6a')][_0x2958('0x39')],_0x3a4ad9[_0x2958('0x6a')]['role'],_0x19e419[_0x2958('0x68')]['id'],_0x3a4ad9['body']?JSON['stringify'](_0x3a4ad9['body']):'null');return respondWithRpcPromise(_0x2958('0x6b'),'acceptMessage',_0x19e419);}return null;})[_0x2958('0x21')](function(_0x1bfa77){var _0x39a95d=_0x2958('0x6c')+_0x1bfa77[_0x2958('0x28')][_0x2958('0x6d')];return db['sequelize'][_0x2958('0x44')](_0x39a95d,{'type':db[_0x2958('0x6e')][_0x2958('0x6f')][_0x2958('0x70')],'raw':!![]})[_0x2958('0x21')](function(_0x294acf){return _0x294acf;});})[_0x2958('0x21')](function(_0x3674b3){if(_0x3674b3){_0x19e419[_0x2958('0x28')][_0x2958('0x71')]=_0x3674b3[0x0];if(!_0x3a4ad9[_0x2958('0x5a')][_0x2958('0x61')])return;return db[_0x2958('0x72')][_0x2958('0x58')]({'where':{'id':_0x3a4ad9[_0x2958('0x5a')][_0x2958('0x61')],'role':_0x2958('0x62')},'attributes':['id',_0x2958('0x39'),_0x2958('0x73'),_0x2958('0x74'),_0x2958('0x75')],'raw':!![]});}return null;})['then'](function(_0x831f42){if(!_0x831f42)return null;_0x19e419[_0x2958('0x28')][_0x2958('0x62')]=_0x831f42;return _0x19e419;})[_0x2958('0x21')](function(_0x24e4db){if(_0x24e4db){if(_0x3a4ad9['body'][_0x2958('0x76')]){_0x19e419[_0x2958('0x28')][_0x2958('0x77')]=util[_0x2958('0x67')](_0x2958('0x78'),_0x3a4ad9[_0x2958('0x6a')][_0x2958('0x39')]);_0x19e419[_0x2958('0x28')][_0x2958('0x79')]=_0x19e419[_0x2958('0x79')];_0x19e419[_0x2958('0x28')][_0x2958('0x7a')]=_0x19e419[_0x2958('0x79')];_0x19e419[_0x2958('0x28')][_0x2958('0x7b')]=_0x2958('0x7c');return respondWithRpcPromise(_0x2958('0x7d'),_0x2958('0x7d'),{'event':_0x2958('0x7e'),'message':_0x19e419[_0x2958('0x28')]},client9002)[_0x2958('0x21')](function(){return _0x19e419;});}return _0x19e419;}return null;})[_0x2958('0x21')](respondWithResult(_0x8c7203,null))[_0x2958('0x2a')](handleError(_0x8c7203,null));};var interaction_log=require(_0x2958('0x14'))('sms-interactions');exports[_0x2958('0x32')]=function(_0x1ca4f1,_0x23c634,_0x21948f){var _0x1f3894={'agent':{},'channel':_0x2958('0x5d')};if(_0x1ca4f1[_0x2958('0x5a')]['id']){delete _0x1ca4f1[_0x2958('0x5a')]['id'];}_0x1ca4f1[_0x2958('0x5a')][_0x2958('0x61')]=_0x1ca4f1[_0x2958('0x5a')][_0x2958('0x61')]||_0x1ca4f1['user']['id'];_0x1f3894[_0x2958('0x62')]['id']=_0x1ca4f1[_0x2958('0x5a')][_0x2958('0x61')];return db[_0x2958('0x3d')][_0x2958('0x58')]({'where':{'id':_0x1ca4f1[_0x2958('0x56')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x23c634,null))[_0x2958('0x21')](function(_0x331a4f){if(_0x331a4f){_0x1f3894[_0x2958('0x28')]=_0x331a4f[_0x2958('0x63')]({'plain':!![]});return db[_0x2958('0x64')]['find']({'where':{'id':_0x331a4f[_0x2958('0x65')]}});}return null;})[_0x2958('0x21')](handleEntityNotFound(_0x23c634,null))[_0x2958('0x21')](function(_0x171717){if(_0x171717){_0x1f3894[_0x2958('0x68')]=_0x171717[_0x2958('0x63')]({'plain':!![]});interaction_log[_0x2958('0x22')](_0x2958('0x7f'),_0x1ca4f1[_0x2958('0x6a')]['id'],_0x1ca4f1[_0x2958('0x6a')][_0x2958('0x39')],_0x1ca4f1['user'][_0x2958('0x80')],_0x1f3894[_0x2958('0x68')]['id'],_0x1ca4f1['body']?JSON['stringify'](_0x1ca4f1[_0x2958('0x5a')]):_0x2958('0x81'));return respondWithRpcPromise('RejectMessage',_0x2958('0x82'),_0x1f3894);}return null;})[_0x2958('0x21')](function(_0x3e520a){var _0x5674ce=_0x2958('0x6c')+_0x3e520a[_0x2958('0x28')][_0x2958('0x6d')];return db[_0x2958('0x83')][_0x2958('0x44')](_0x5674ce,{'type':db[_0x2958('0x6e')]['QueryTypes'][_0x2958('0x70')],'raw':!![]})[_0x2958('0x21')](function(_0x65e58b){return _0x65e58b;});})[_0x2958('0x21')](function(_0x5bb046){if(_0x5bb046){_0x1f3894['message']['contact']=_0x5bb046[0x0];if(!_0x1ca4f1[_0x2958('0x5a')]['UserId'])return;return db[_0x2958('0x72')]['find']({'where':{'id':_0x1ca4f1['body'][_0x2958('0x61')],'role':_0x2958('0x62')},'attributes':['id','name',_0x2958('0x73'),_0x2958('0x74'),_0x2958('0x75')],'raw':!![]});}return null;})[_0x2958('0x21')](function(_0x37b94a){if(!_0x37b94a)return null;_0x1f3894['message'][_0x2958('0x62')]=_0x37b94a;return _0x1f3894;})[_0x2958('0x21')](function(_0xce2def){if(_0xce2def){_0xce2def[_0x2958('0x28')][_0x2958('0x77')]=util[_0x2958('0x67')](_0x2958('0x78'),_0x1ca4f1[_0x2958('0x6a')][_0x2958('0x39')]);_0xce2def['message'][_0x2958('0x79')]=_0x1f3894[_0x2958('0x79')];_0xce2def[_0x2958('0x28')]['motionChannel']=_0x1f3894[_0x2958('0x79')];_0xce2def[_0x2958('0x28')][_0x2958('0x7b')]=_0x2958('0x32');respondWithRpcPromise(_0x2958('0x7d'),_0x2958('0x7d'),{'event':_0x2958('0x84'),'message':_0xce2def[_0x2958('0x28')]},client9002);return _0x1f3894;}return null;})[_0x2958('0x21')](respondWithResult(_0x23c634,null))[_0x2958('0x2a')](handleError(_0x23c634,null));};exports['status']=function(_0x3077ef,_0x5d9ad0,_0x57ae87){if(_0x3077ef[_0x2958('0x5a')]['id']){delete _0x3077ef[_0x2958('0x5a')]['id'];}var _0x561ecc;return db['SmsMessage']['find']({'where':{'id':_0x3077ef[_0x2958('0x56')]['id']}})[_0x2958('0x21')](handleEntityNotFound(_0x5d9ad0,null))['then'](function(_0x3876cb){if(_0x3876cb){_0x561ecc=_0x3876cb;return db[_0x2958('0x85')][_0x2958('0x58')]({'where':{'id':_0x3876cb[_0x2958('0x86')]}});}})[_0x2958('0x21')](handleEntityNotFound(_0x5d9ad0,null))[_0x2958('0x21')](function(_0x35d68c){if(_0x35d68c){logger['debug'](_0x2958('0x25'),_0x2958('0x2b'),_0x2958('0x87'),_0x35d68c[_0x2958('0x40')],util[_0x2958('0x88')](_0x3077ef[_0x2958('0x5a')],{'showHidden':![],'depth':null}));switch(_0x35d68c[_0x2958('0x40')]){case _0x2958('0x89'):if(_0x3077ef[_0x2958('0x5a')][_0x2958('0x8a')]&&_0x3077ef['body']['MessageSid']===_0x561ecc[_0x2958('0x8b')]){return _0x561ecc['update']({'read':!![]});}else{logger[_0x2958('0x27')](_0x2958('0x8c'),_0x2958('0x2b'),_0x2958('0x89'),util[_0x2958('0x88')](_0x3077ef[_0x2958('0x5a')],{'showHidden':![],'depth':null}));}break;case _0x2958('0x8d'):if(_0x3077ef['body'][_0x2958('0x8e')]&&_0x3077ef[_0x2958('0x5a')][_0x2958('0x8e')]===_0x561ecc[_0x2958('0x8b')]&&_[_0x2958('0x8f')](['sent',_0x2958('0x90')],_0x3077ef[_0x2958('0x5a')][_0x2958('0x91')])>=0x0){return _0x561ecc['update']({'read':!![]});}else{logger[_0x2958('0x27')](_0x2958('0x8c'),_0x2958('0x2b'),_0x2958('0x92'),util[_0x2958('0x88')](_0x3077ef[_0x2958('0x5a')],{'showHidden':![],'depth':null}));}break;case'infobip':var _0x5f4622=_0x3077ef[_0x2958('0x5a')][_0x2958('0x93')][0x0];if(_0x5f4622[_0x2958('0x2b')]['groupName']===_0x2958('0x94')){return _0x561ecc['update']({'read':!![]});}else{logger[_0x2958('0x27')](_0x2958('0x8c'),_0x2958('0x2b'),'infobip',util[_0x2958('0x88')](_0x3077ef[_0x2958('0x5a')],{'showHidden':![],'depth':null}));}break;}return _0x561ecc;}})[_0x2958('0x21')](respondWithResult(_0x5d9ad0,null))[_0x2958('0x2a')](handleError(_0x5d9ad0,null));};
\ No newline at end of file
index 47b2ccc..2b4568e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x424d=['remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','SmsMessage','setMaxListeners','save','update'];(function(_0x245afe,_0x319cde){var _0x4eefde=function(_0x15a1fa){while(--_0x15a1fa){_0x245afe['push'](_0x245afe['shift']());}};_0x4eefde(++_0x319cde);}(_0x424d,0x1a7));var _0xd424=function(_0x8cd627,_0x1bf5ca){_0x8cd627=_0x8cd627-0x0;var _0x7e454=_0x424d[_0x8cd627];return _0x7e454;};'use strict';var EventEmitter=require(_0xd424('0x0'));var SmsMessage=require(_0xd424('0x1'))['db'][_0xd424('0x2')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0xd424('0x3')](0x0);var events={'afterCreate':_0xd424('0x4'),'afterUpdate':_0xd424('0x5'),'afterDestroy':_0xd424('0x6')};function emitEvent(_0x3f88bd){return function(_0x4f1f9e,_0x5e8624,_0x403759){SmsMessageEvents[_0xd424('0x7')](_0x3f88bd+':'+_0x4f1f9e['id'],_0x4f1f9e);SmsMessageEvents[_0xd424('0x7')](_0x3f88bd,_0x4f1f9e);_0x403759(null);};}for(var e in events){if(events[_0xd424('0x8')](e)){var event=events[e];SmsMessage[_0xd424('0x9')](e,emitEvent(event));}}module[_0xd424('0xa')]=SmsMessageEvents;
\ No newline at end of file
+var _0x1710=['exports','events','../../mysqldb','SmsMessage','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x5907d2,_0x170409){var _0x342ef2=function(_0x542cb0){while(--_0x542cb0){_0x5907d2['push'](_0x5907d2['shift']());}};_0x342ef2(++_0x170409);}(_0x1710,0x1ae));var _0x0171=function(_0x132a0d,_0x33ceaf){_0x132a0d=_0x132a0d-0x0;var _0x5df20a=_0x1710[_0x132a0d];return _0x5df20a;};'use strict';var EventEmitter=require(_0x0171('0x0'));var SmsMessage=require(_0x0171('0x1'))['db'][_0x0171('0x2')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0x0171('0x3')](0x0);var events={'afterCreate':_0x0171('0x4'),'afterUpdate':_0x0171('0x5'),'afterDestroy':_0x0171('0x6')};function emitEvent(_0x284510){return function(_0x354fab,_0x189bac,_0x445d1a){SmsMessageEvents[_0x0171('0x7')](_0x284510+':'+_0x354fab['id'],_0x354fab);SmsMessageEvents[_0x0171('0x7')](_0x284510,_0x354fab);_0x445d1a(null);};}for(var e in events){if(events[_0x0171('0x8')](e)){var event=events[e];SmsMessage[_0x0171('0x9')](e,emitEvent(event));}}module[_0x0171('0xa')]=SmsMessageEvents;
\ No newline at end of file
index 37f3c0a..df0018e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb08e=['bandwidth','https://messaging.bandwidth.com/api/v2/users/','accountId','/messages','applicationId','toString','intelepeer','https://api.intelepeer.com/_rest/v4/app/sms/send','Bearer\x20','code','message','refid','status','Token\x20not\x20received','finally','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','SmsMessage','sms_messages','fti_sms_messages','body','models','get','direction','toLowerCase','out','secret','isNil','UserId','SmsInteractionId','findOne','then','createdAt','catch','error','SmsAccount','find','SmsAccountId','type','twilio','accountSid','authToken','phone','messages','create','remote','/status?token=','token','sid','update','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','skebby','username','password','smsMethod','login?username=','&password=','GET','split','sms','POST','session_key','total_sent','internal_order_id','deliveryReport','read','Missing\x20parameters:\x20username,\x20password','connectel','https://smsapi.connectel.se/api/v2/send/','requestid','Missing\x20parameters:\x20authToken','senderString','format','%s:%s','https://rest.clicksend.com/v3/sms/send','Basic\x20%s','base64','http_code','data','queued_count','head','message_id','clickSend','plivo','authId','/api/sms/messages/','https://api.plivo.com/v1/Account/%s/Message/','baseUrl','/sms/2/text/advanced','application/json','IBSSO\x20','messageId','infobip','Missing\x20parameters:\x20base_url','csc','crypto','apiKey','login','sender','timestamp','keys','sort','length','md5','digest','hex','/external/get/send.php?','Missing\x20parameters:\x20apiKey','UTF-8','clickatell'];(function(_0x474d97,_0x5909ce){var _0x1edf25=function(_0x2831df){while(--_0x2831df){_0x474d97['push'](_0x474d97['shift']());}};_0x1edf25(++_0x5909ce);}(_0xb08e,0x182));var _0xeb08=function(_0x376836,_0x2ea4b8){_0x376836=_0x376836-0x0;var _0xc2805a=_0xb08e[_0x376836];return _0xc2805a;};'use strict';var _=require('lodash');var util=require(_0xeb08('0x0'));var logger=require(_0xeb08('0x1'))('api');var moment=require(_0xeb08('0x2'));var BPromise=require(_0xeb08('0x3'));var rp=require(_0xeb08('0x4'));var fs=require('fs');var path=require(_0xeb08('0x5'));var rimraf=require(_0xeb08('0x6'));var config=require(_0xeb08('0x7'));var attributes=require('./smsMessage.attributes');module[_0xeb08('0x8')]=function(_0x2d878d,_0xe5c9e3){return _0x2d878d[_0xeb08('0x9')](_0xeb08('0xa'),attributes,{'tableName':_0xeb08('0xb'),'paranoid':![],'indexes':[{'name':'messageId','fields':['messageId']},{'name':_0xeb08('0xc'),'fields':[_0xeb08('0xd')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x89094b,_0xd056c0,_0x3badb9){var _0x2b8104=_0x2d878d[_0xeb08('0xe')];var _0x40dbfb=_0x89094b[_0xeb08('0xf')]({'plain':!![]});if(_0x40dbfb[_0xeb08('0x10')]['toLowerCase']()==='in'||_0x40dbfb[_0xeb08('0x10')][_0xeb08('0x11')]()===_0xeb08('0x12')&&!_0x40dbfb[_0xeb08('0x13')]&&!_[_0xeb08('0x14')](_0x40dbfb[_0xeb08('0x15')])&&!_[_0xeb08('0x14')](_0x40dbfb[_0xeb08('0x16')])){_0x2b8104['SmsInteraction'][_0xeb08('0x17')]({'where':{'id':_0x40dbfb[_0xeb08('0x16')]}})[_0xeb08('0x18')](function(_0x120028){if(_0x120028){_0x120028['update']({'lastMsgAt':_0x40dbfb[_0xeb08('0x19')],'lastMsgDirection':_0x40dbfb[_0xeb08('0x10')]['toLowerCase']()});}})[_0xeb08('0x1a')](function(_0x3f091c){console[_0xeb08('0x1b')](_0x3f091c);});}if(_0x40dbfb[_0xeb08('0x10')]===_0xeb08('0x12')&&!_0x40dbfb[_0xeb08('0x13')]){var _0x4306f5;_0x2b8104[_0xeb08('0x1c')][_0xeb08('0x1d')]({'where':{'id':_0x40dbfb[_0xeb08('0x1e')]},'raw':!![]})[_0xeb08('0x18')](function(_0x5bde79){_0x4306f5=_0x5bde79;if(_0x4306f5&&_0x4306f5[_0xeb08('0x1f')]){switch(_0x4306f5[_0xeb08('0x1f')]){case _0xeb08('0x20'):var _0x4e727a=require('twilio');if(_0x4306f5[_0xeb08('0x21')]&&_0x4306f5[_0xeb08('0x22')]&&_0x4306f5[_0xeb08('0x23')]){var _0x297945=new _0x4e727a(_0x4306f5[_0xeb08('0x21')],_0x4306f5[_0xeb08('0x22')]);_0x297945[_0xeb08('0x24')][_0xeb08('0x25')]({'body':_0x40dbfb[_0xeb08('0xd')],'to':_0x40dbfb['phone'],'from':_0x4306f5[_0xeb08('0x23')],'statusCallback':_0x4306f5[_0xeb08('0x26')]+'/api/sms/messages/'+_0x40dbfb['id']+_0xeb08('0x27')+_0x4306f5[_0xeb08('0x28')]})[_0xeb08('0x18')](function(_0x1c1467){if(_0x1c1467[_0xeb08('0x29')]){return _0x89094b[_0xeb08('0x2a')]({'messageId':_0x1c1467['sid']});}})[_0xeb08('0x1a')](function(_0x1f212c){logger[_0xeb08('0x1b')](_0xeb08('0x2b'),_0xeb08('0x2c'),'twilio',util[_0xeb08('0x2d')](_0x1f212c,{'showHidden':![],'depth':null}));});}else{logger[_0xeb08('0x1b')](_0xeb08('0x2b'),'afterCreate',_0xeb08('0x20'),_0xeb08('0x2e'));}break;case _0xeb08('0x2f'):var _0xdb4e2f='https://api.skebby.it/API/v1.0/REST/';if(_0x4306f5[_0xeb08('0x30')]&&_0x4306f5[_0xeb08('0x31')]){var _0x40ab54={'recipient':[_0x40dbfb[_0xeb08('0x23')]],'message':_0x40dbfb[_0xeb08('0xd')],'message_type':_0x4306f5['smsMethod']};if(_0x4306f5[_0xeb08('0x32')]&&_0x4306f5['smsMethod']!=='SI'){_0x40ab54['sender']=_0x4306f5[_0xeb08('0x23')];}var _0x190a06={'url':_0xdb4e2f+_0xeb08('0x33')+_0x4306f5[_0xeb08('0x30')]+_0xeb08('0x34')+_0x4306f5[_0xeb08('0x31')],'method':_0xeb08('0x35')};rp(_0x190a06)[_0xeb08('0x18')](function(_0x594416){var _0x2ca6d9=_0x594416[_0xeb08('0x36')](';');var _0xaca8ba={'user_key':_0x2ca6d9[0x0],'session_key':_0x2ca6d9[0x1]};_0x190a06={'url':_0xdb4e2f+_0xeb08('0x37'),'method':_0xeb08('0x38'),'headers':{'user_key':_0xaca8ba['user_key'],'Session_key':_0xaca8ba[_0xeb08('0x39')]},'json':!![],'body':_0x40ab54};return rp(_0x190a06);})[_0xeb08('0x18')](function(_0x4f96dd){if(_0x4f96dd[_0xeb08('0x3a')]>=0x1){var _0x149284={'messageId':_0x4f96dd[_0xeb08('0x3b')]};if(_0x4306f5['smsMethod']!=='GP'||!_0x4306f5[_0xeb08('0x3c')]){_0x149284[_0xeb08('0x3d')]=!![];}return _0x89094b[_0xeb08('0x2a')](_0x149284);}else{return logger[_0xeb08('0x1b')](_0xeb08('0x2b'),'afterCreate',_0xeb08('0x2f'),util['inspect'](_0x4f96dd,{'showHidden':![],'depth':null}));}})[_0xeb08('0x1a')](function(_0x9dd247){return logger['error'](_0xeb08('0x2b'),_0xeb08('0x2c'),'skebby',util[_0xeb08('0x2d')](_0x9dd247,{'showHidden':![],'depth':null}));});}else{logger[_0xeb08('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xeb08('0x2c'),_0xeb08('0x2f'),_0xeb08('0x3e'));}break;case _0xeb08('0x3f'):if(_0x4306f5[_0xeb08('0x22')]){var _0x580074={'recipient':_0x40dbfb[_0xeb08('0x23')],'message':_0x40dbfb[_0xeb08('0xd')],'sender':_0x4306f5['senderString']||_0x4306f5[_0xeb08('0x23')],'authorization':_0x4306f5[_0xeb08('0x22')]};var _0xd056c0={'method':'POST','uri':_0xeb08('0x40'),'body':_0x580074,'json':!![]};rp(_0xd056c0)['then'](function(_0x30dd92){var _0x3cf430={'messageId':_0x30dd92[_0xeb08('0x41')]};if(!_0x4306f5[_0xeb08('0x3c')]){_0x3cf430['read']=!![];}return _0x89094b[_0xeb08('0x2a')](_0x3cf430);})[_0xeb08('0x1a')](function(_0x397a67){logger[_0xeb08('0x1b')](_0xeb08('0x2b'),_0xeb08('0x2c'),'connectel',util[_0xeb08('0x2d')](_0x397a67,{'showHidden':![],'depth':null}));});}else{logger[_0xeb08('0x1b')](_0xeb08('0x2b'),_0xeb08('0x2c'),_0xeb08('0x3f'),_0xeb08('0x42'));}break;case'clicksend':if(_0x4306f5[_0xeb08('0x30')]&&_0x4306f5[_0xeb08('0x31')]){var _0x580074={'messages':[{'source':'xCALLY\x20Motion','to':_0x40dbfb[_0xeb08('0x23')],'body':_0x40dbfb['body'],'from':_0x4306f5[_0xeb08('0x43')]||_0x4306f5[_0xeb08('0x23')]}]};var _0x3c0e7f=util[_0xeb08('0x44')](_0xeb08('0x45'),_0x4306f5[_0xeb08('0x30')],_0x4306f5[_0xeb08('0x31')]);var _0xd056c0={'method':_0xeb08('0x38'),'uri':_0xeb08('0x46'),'body':_0x580074,'headers':{'Authorization':util[_0xeb08('0x44')](_0xeb08('0x47'),new Buffer(_0x3c0e7f)['toString'](_0xeb08('0x48')))},'json':!![]};rp(_0xd056c0)[_0xeb08('0x18')](function(_0x2da032){if(_0x2da032[_0xeb08('0x49')]>=0xc8&&_0x2da032['http_code']<=0xce){if(_0x2da032['data']&&_0x2da032[_0xeb08('0x4a')][_0xeb08('0x4b')]>0x0){var _0x457f0e=_[_0xeb08('0x4c')](_0x2da032[_0xeb08('0x4a')][_0xeb08('0x24')]);var _0x29fd6d={'messageId':_0x457f0e[_0xeb08('0x4d')]};if(!_0x4306f5[_0xeb08('0x3c')]){_0x29fd6d[_0xeb08('0x3d')]=!![];}return _0x89094b[_0xeb08('0x2a')](_0x29fd6d);}else{logger['error'](_0xeb08('0x2b'),_0xeb08('0x2c'),_0xeb08('0x4e'),util[_0xeb08('0x2d')](_0x2da032,{'showHidden':![],'depth':null}));}}else{logger[_0xeb08('0x1b')](_0xeb08('0x2b'),_0xeb08('0x2c'),_0xeb08('0x4e'),util[_0xeb08('0x2d')](_0x2da032,{'showHidden':![],'depth':null}));}})[_0xeb08('0x1a')](function(_0x93cc02){logger[_0xeb08('0x1b')](_0xeb08('0x2b'),_0xeb08('0x2c'),_0xeb08('0x4e'),util[_0xeb08('0x2d')](_0x93cc02,{'showHidden':![],'depth':null}));});}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0xeb08('0x2c'),'clickSend',_0xeb08('0x3e'));}break;case _0xeb08('0x4f'):if(_0x4306f5[_0xeb08('0x50')]&&_0x4306f5[_0xeb08('0x22')]){var _0x580074={'dst':_0x40dbfb['phone'],'text':_0x40dbfb[_0xeb08('0xd')],'src':_0x4306f5[_0xeb08('0x43')]||_0x4306f5['phone'],'url':_0x4306f5['remote']+_0xeb08('0x51')+_0x40dbfb['id']+'/status?token='+_0x4306f5[_0xeb08('0x28')]};var _0x3c0e7f=util[_0xeb08('0x44')](_0xeb08('0x45'),_0x4306f5[_0xeb08('0x50')],_0x4306f5[_0xeb08('0x22')]);var _0xd056c0={'method':_0xeb08('0x38'),'uri':util[_0xeb08('0x44')](_0xeb08('0x52'),_0x4306f5[_0xeb08('0x50')]),'body':_0x580074,'headers':{'Authorization':util[_0xeb08('0x44')](_0xeb08('0x47'),new Buffer(_0x3c0e7f)['toString'](_0xeb08('0x48')))},'json':!![]};rp(_0xd056c0)[_0xeb08('0x18')](function(_0x3a9b60){var _0xf39500={'messageId':_0x3a9b60['message_uuid'][0x0]};return _0x89094b[_0xeb08('0x2a')](_0xf39500);})[_0xeb08('0x1a')](function(_0x449ad1){logger['error'](_0xeb08('0x2b'),_0xeb08('0x2c'),_0xeb08('0x4f'),util[_0xeb08('0x2d')](_0x449ad1,{'showHidden':![],'depth':null}));});}else{logger[_0xeb08('0x1b')](_0xeb08('0x2b'),_0xeb08('0x2c'),'plivo','Missing\x20parameters:\x20authId,\x20authToken');}break;case'infobip':if(_0x4306f5[_0xeb08('0x30')]&&_0x4306f5[_0xeb08('0x31')]){if(_0x4306f5['baseUrl']){var _0x1d51ae={'method':_0xeb08('0x38'),'uri':_0x4306f5[_0xeb08('0x53')]+'/auth/1/session','body':{'username':_0x4306f5['username'],'password':_0x4306f5[_0xeb08('0x31')]},'json':!![]};return rp(_0x1d51ae)[_0xeb08('0x18')](function(_0x5ba320){var _0x5bcb5d={'method':_0xeb08('0x38'),'uri':_0x4306f5['baseUrl']+_0xeb08('0x54'),'body':{'messages':[{'from':_0x4306f5['phone'],'destinations':[{'to':_0x40dbfb[_0xeb08('0x23')]}],'text':_0x40dbfb[_0xeb08('0xd')],'notifyUrl':_0x4306f5[_0xeb08('0x26')]+_0xeb08('0x51')+_0x40dbfb['id']+_0xeb08('0x27')+_0x4306f5['token'],'notifyContentType':_0xeb08('0x55'),'callbackData':_0x4306f5[_0xeb08('0x23')]+';'+_0x40dbfb[_0xeb08('0xd')]}]},'headers':{'Authorization':_0xeb08('0x56')+_0x5ba320[_0xeb08('0x28')]},'json':!![]};return rp(_0x5bcb5d)[_0xeb08('0x18')](function(_0x2d153f){if(_0x2d153f[_0xeb08('0x24')]){var _0x111198={'messageId':_0x2d153f[_0xeb08('0x24')][0x0][_0xeb08('0x57')]};if(!_0x4306f5[_0xeb08('0x3c')]){_0x111198[_0xeb08('0x3d')]=!![];}return _0x89094b['update'](_0x111198);}else{return logger['error'](_0xeb08('0x2b'),_0xeb08('0x2c'),'infobip',util['inspect'](_0x2d153f,{'showHidden':![],'depth':null}));}});})[_0xeb08('0x1a')](function(_0x1604b7){return logger[_0xeb08('0x1b')](_0xeb08('0x2b'),_0xeb08('0x2c'),_0xeb08('0x58'),util[_0xeb08('0x2d')](_0x1604b7,{'showHidden':![],'depth':null}));});}else{logger[_0xeb08('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xeb08('0x2c'),_0xeb08('0x58'),_0xeb08('0x59'));}}else{logger[_0xeb08('0x1b')](_0xeb08('0x2b'),_0xeb08('0x2c'),_0xeb08('0x58'),_0xeb08('0x3e'));}break;case _0xeb08('0x5a'):var _0x13bdec=require(_0xeb08('0x5b'));if(_0x4306f5[_0xeb08('0x5c')]){var _0x10e74e={};_0x10e74e[_0xeb08('0x5d')]=_0x4306f5['username'];_0x10e74e[_0xeb08('0x23')]=_0x40dbfb[_0xeb08('0x23')];_0x10e74e[_0xeb08('0x5e')]=_0x4306f5['phone'];_0x10e74e['text']=_0x40dbfb[_0xeb08('0xd')];_0x10e74e[_0xeb08('0x5f')]=+new Date();var _0xb9d6b1='';var _0x208a64='';var _0x3c2a4f=Object[_0xeb08('0x60')](_0x10e74e);_0x3c2a4f[_0xeb08('0x61')]();for(var _0xa4dca6=0x0;_0xa4dca6<_0x3c2a4f[_0xeb08('0x62')];_0xa4dca6++){if(_0xb9d6b1!=''){_0xb9d6b1+='&';}_0xb9d6b1+=_0x3c2a4f[_0xa4dca6]+'='+encodeURIComponent(_0x10e74e[_0x3c2a4f[_0xa4dca6]]);_0x208a64+=_0x10e74e[_0x3c2a4f[_0xa4dca6]];}_0x208a64+=_0x4306f5[_0xeb08('0x5c')];_0x208a64=_0x13bdec['createHash'](_0xeb08('0x63'))[_0xeb08('0x2a')](_0x208a64)[_0xeb08('0x64')](_0xeb08('0x65'));if(_0xb9d6b1!==''){_0xb9d6b1+='&';}_0xb9d6b1+='signature='+_0x208a64;var _0x190a06={'method':_0xeb08('0x35'),'uri':_0x4306f5[_0xeb08('0x53')]+_0xeb08('0x66')+_0xb9d6b1,'json':!![]};return rp(_0x190a06)[_0xeb08('0x18')](function(_0x409417){var _0x5550b6=Object[_0xeb08('0x60')](_0x409417);if(_0x409417[_0x5550b6[0x0]]['error']&&parseInt(_0x409417[_0x5550b6[0x0]][_0xeb08('0x1b')])===0x0){var _0x30f903={'messageId':_0x409417[_0x5550b6[0x0]]['id_sms']};if(!_0x4306f5[_0xeb08('0x3c')]){_0x30f903[_0xeb08('0x3d')]=!![];}return _0x89094b[_0xeb08('0x2a')](_0x30f903);}else{return logger['error'](_0xeb08('0x2b'),'afterCreate','csc',util[_0xeb08('0x2d')](_0x409417[_0xeb08('0x1b')],{'showHidden':![],'depth':null}));}})[_0xeb08('0x1a')](function(_0x5cd62){return logger[_0xeb08('0x1b')](_0xeb08('0x2b'),'afterCreate',_0xeb08('0x5a'),util[_0xeb08('0x2d')](_0x5cd62,{'showHidden':![],'depth':null}));});}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0xeb08('0x2c'),_0xeb08('0x5a'),_0xeb08('0x67'));}break;case'clickatell':if(_0x4306f5[_0xeb08('0x5c')]){var _0x2cd2dd={'method':_0xeb08('0x38'),'uri':'https://platform.clickatell.com/messages','headers':{'Authorization':_0x4306f5[_0xeb08('0x5c')]},'body':{'content':_0x40dbfb['body'],'to':[_0x40dbfb['phone']],'from':_0x4306f5[_0xeb08('0x23')],'binary':![],'clientMessageId':'uuid','charset':_0xeb08('0x68')},'json':!![]};rp(_0x2cd2dd)['then'](function(_0xc00ebe){if(!_0xc00ebe[_0xeb08('0x1b')]){var _0x2d6e9={'messageId':_0xc00ebe[_0xeb08('0x24')][0x0]['apiMessageId']};if(!_0x4306f5[_0xeb08('0x3c')]){_0x2d6e9[_0xeb08('0x3d')]=!![];}return _0x89094b[_0xeb08('0x2a')](_0x2d6e9);}else{return logger[_0xeb08('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xeb08('0x2c'),_0xeb08('0x69'),util['inspect'](_0xc00ebe[_0xeb08('0x1b')],{'showHidden':![],'depth':null}));}})[_0xeb08('0x1a')](function(_0x5aa623){return logger[_0xeb08('0x1b')](_0xeb08('0x2b'),_0xeb08('0x2c'),_0xeb08('0x69'),util['inspect'](_0x5aa623,{'showHidden':![],'depth':null}));});}else{logger[_0xeb08('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xeb08('0x2c'),'clickatell','Missing\x20parameters:\x20apiKey');}break;case _0xeb08('0x6a'):if(_0x4306f5['username']&&_0x4306f5[_0xeb08('0x31')]){var _0x3c0e7f=util[_0xeb08('0x44')]('%s:%s',_0x4306f5[_0xeb08('0x30')],_0x4306f5['password']);var _0xd056c0={'method':'POST','uri':_0xeb08('0x6b')+_0x4306f5[_0xeb08('0x6c')]+_0xeb08('0x6d'),'body':{'to':[_0x40dbfb[_0xeb08('0x23')]],'text':_0x40dbfb[_0xeb08('0xd')],'from':_0x4306f5[_0xeb08('0x23')],'applicationId':_0x4306f5[_0xeb08('0x6e')]},'headers':{'Authorization':util['format'](_0xeb08('0x47'),new Buffer(_0x3c0e7f)[_0xeb08('0x6f')](_0xeb08('0x48')))},'json':!![]};rp(_0xd056c0)['then'](function(_0x5110e1){if(_0x5110e1['id']){var _0x44e643={'messageId':_0x5110e1['id']};return _0x89094b[_0xeb08('0x2a')](_0x44e643);}else{logger[_0xeb08('0x1b')](_0xeb08('0x2b'),_0xeb08('0x2c'),_0xeb08('0x6a'),util['inspect'](_0x5110e1,{'showHidden':![],'depth':null}));}})['catch'](function(_0x4dd40b){logger[_0xeb08('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xeb08('0x2c'),_0xeb08('0x6a'),util['inspect'](_0x4dd40b,{'showHidden':![],'depth':null}));});}else{logger[_0xeb08('0x1b')](_0xeb08('0x2b'),_0xeb08('0x2c'),_0xeb08('0x6a'),_0xeb08('0x3e'));}break;case _0xeb08('0x70'):if(_0x4306f5[_0xeb08('0x5c')]){var _0x1f8be8={};var _0x190a06={'method':_0xeb08('0x38'),'uri':_0xeb08('0x71'),'headers':{'Authorization':_0xeb08('0x72')+_0x4306f5['apiKey'],'Content-Type':'application/json'},'body':{'from':_0x4306f5[_0xeb08('0x23')],'to':_0x40dbfb[_0xeb08('0x23')],'text':_0x40dbfb[_0xeb08('0xd')]},'json':!![]};return rp(_0x190a06)[_0xeb08('0x18')](function(_0x14bab7){if(_0x14bab7[_0xeb08('0x73')]==0xca){_0x1f8be8[_0xeb08('0x74')]=_0x14bab7;var _0x536ab2={'method':_0xeb08('0x38'),'uri':'https://api.intelepeer.com/_rest/v4/app/sms/mdr','headers':{'Authorization':'Bearer\x20'+_0x4306f5[_0xeb08('0x5c')],'Content-Type':_0xeb08('0x55')},'body':{'refid':_0x1f8be8['message'][_0xeb08('0x75')]},'json':!![]};return rp(_0x536ab2)[_0xeb08('0x18')](function(_0xb2ea5d){_0x1f8be8[_0xeb08('0x76')]=_0xb2ea5d;var _0x564b20={'messageId':_0x1f8be8[_0xeb08('0x74')][_0xeb08('0x75')],'read':!![]};return _0x89094b['update'](_0x564b20);});}else{return logger[_0xeb08('0x1b')](_0xeb08('0x2b'),'afterCreate','intelepeer',util[_0xeb08('0x2d')](_0x14bab7,{'showHidden':![],'depth':null}));}})['catch'](function(_0x1de37c){return logger[_0xeb08('0x1b')](_0xeb08('0x2b'),_0xeb08('0x2c'),_0xeb08('0x70'),util[_0xeb08('0x2d')](_0x1de37c,{'showHidden':![],'depth':null}));});}else{return logger[_0xeb08('0x1b')](_0xeb08('0x2b'),_0xeb08('0x2c'),'intelepeer',_0xeb08('0x77'));}break;}}})[_0xeb08('0x78')](function(){_0x3badb9();});}else{_0x3badb9();}}},'charset':_0xeb08('0x79'),'collate':_0xeb08('0x7a')});};
\ No newline at end of file
+var _0x6e19=['hex','GET','/external/get/send.php?','id_sms','Missing\x20parameters:\x20apiKey','clickatell','uuid','UTF-8','apiMessageId','bandwidth','https://messaging.bandwidth.com/api/v2/users/','accountId','applicationId','base64','https://api.intelepeer.com/_rest/v4/app/sms/send','code','message','https://api.intelepeer.com/_rest/v4/app/sms/mdr','application/json','refid','status','intelepeer','Token\x20not\x20received','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./smsMessage.attributes','define','SmsMessage','sms_messages','messageId','fti_sms_messages','body','FULLTEXT','models','get','direction','toLowerCase','out','UserId','isNil','SmsInteractionId','SmsInteraction','then','update','catch','error','secret','SmsAccount','find','SmsAccountId','type','twilio','accountSid','authToken','phone','messages','create','/api/sms/messages/','/status?token=','sid','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','skebby','https://api.skebby.it/API/v1.0/REST/','password','smsMethod','sender','&password=','sms','POST','user_key','session_key','total_sent','internal_order_id','deliveryReport','Missing\x20parameters:\x20username,\x20password','connectel','senderString','https://smsapi.connectel.se/api/v2/send/','read','clicksend','username','xCALLY\x20Motion','format','https://rest.clicksend.com/v3/sms/send','Basic\x20%s','http_code','queued_count','head','data','message_id','clickSend','plivo','authId','remote','token','%s:%s','https://api.plivo.com/v1/Account/%s/Message/','toString','message_uuid','Missing\x20parameters:\x20authId,\x20authToken','infobip','baseUrl','/auth/1/session','/sms/2/text/advanced','IBSSO\x20','Missing\x20parameters:\x20base_url','csc','crypto','apiKey','login','text','timestamp','keys','sort','md5','digest'];(function(_0x4d613c,_0x55f220){var _0x301fe3=function(_0x5eec0b){while(--_0x5eec0b){_0x4d613c['push'](_0x4d613c['shift']());}};_0x301fe3(++_0x55f220);}(_0x6e19,0x19a));var _0x96e1=function(_0x17c536,_0x5126fa){_0x17c536=_0x17c536-0x0;var _0x42318e=_0x6e19[_0x17c536];return _0x42318e;};'use strict';var _=require(_0x96e1('0x0'));var util=require(_0x96e1('0x1'));var logger=require(_0x96e1('0x2'))('api');var moment=require(_0x96e1('0x3'));var BPromise=require(_0x96e1('0x4'));var rp=require(_0x96e1('0x5'));var fs=require('fs');var path=require(_0x96e1('0x6'));var rimraf=require(_0x96e1('0x7'));var config=require(_0x96e1('0x8'));var attributes=require(_0x96e1('0x9'));module['exports']=function(_0x4e5203,_0x20086a){return _0x4e5203[_0x96e1('0xa')](_0x96e1('0xb'),attributes,{'tableName':_0x96e1('0xc'),'paranoid':![],'indexes':[{'name':_0x96e1('0xd'),'fields':['messageId']},{'name':_0x96e1('0xe'),'fields':[_0x96e1('0xf')],'type':_0x96e1('0x10')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4bab81,_0x33a9d6,_0x31ba42){var _0xf40bb1=_0x4e5203[_0x96e1('0x11')];var _0x3e400c=_0x4bab81[_0x96e1('0x12')]({'plain':!![]});if(_0x3e400c['direction']['toLowerCase']()==='in'||_0x3e400c[_0x96e1('0x13')][_0x96e1('0x14')]()===_0x96e1('0x15')&&!_0x3e400c['secret']&&!_['isNil'](_0x3e400c[_0x96e1('0x16')])&&!_[_0x96e1('0x17')](_0x3e400c[_0x96e1('0x18')])){_0xf40bb1[_0x96e1('0x19')]['findOne']({'where':{'id':_0x3e400c['SmsInteractionId']}})[_0x96e1('0x1a')](function(_0x72bbda){if(_0x72bbda){_0x72bbda[_0x96e1('0x1b')]({'lastMsgAt':_0x3e400c['createdAt'],'lastMsgDirection':_0x3e400c[_0x96e1('0x13')][_0x96e1('0x14')]()});}})[_0x96e1('0x1c')](function(_0x4f2c37){console[_0x96e1('0x1d')](_0x4f2c37);});}if(_0x3e400c[_0x96e1('0x13')]===_0x96e1('0x15')&&!_0x3e400c[_0x96e1('0x1e')]){var _0x49915a;_0xf40bb1[_0x96e1('0x1f')][_0x96e1('0x20')]({'where':{'id':_0x3e400c[_0x96e1('0x21')]},'raw':!![]})['then'](function(_0x56ffb9){_0x49915a=_0x56ffb9;if(_0x49915a&&_0x49915a['type']){switch(_0x49915a[_0x96e1('0x22')]){case _0x96e1('0x23'):var _0xada863=require(_0x96e1('0x23'));if(_0x49915a[_0x96e1('0x24')]&&_0x49915a[_0x96e1('0x25')]&&_0x49915a[_0x96e1('0x26')]){var _0x2baf68=new _0xada863(_0x49915a[_0x96e1('0x24')],_0x49915a[_0x96e1('0x25')]);_0x2baf68[_0x96e1('0x27')][_0x96e1('0x28')]({'body':_0x3e400c['body'],'to':_0x3e400c[_0x96e1('0x26')],'from':_0x49915a[_0x96e1('0x26')],'statusCallback':_0x49915a['remote']+_0x96e1('0x29')+_0x3e400c['id']+_0x96e1('0x2a')+_0x49915a['token']})['then'](function(_0x2a7a99){if(_0x2a7a99[_0x96e1('0x2b')]){return _0x4bab81[_0x96e1('0x1b')]({'messageId':_0x2a7a99['sid']});}})[_0x96e1('0x1c')](function(_0x4a44a3){logger[_0x96e1('0x1d')](_0x96e1('0x2c'),_0x96e1('0x2d'),_0x96e1('0x23'),util[_0x96e1('0x2e')](_0x4a44a3,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x96e1('0x2c'),_0x96e1('0x2d'),'twilio','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;case _0x96e1('0x2f'):var _0x11a0f7=_0x96e1('0x30');if(_0x49915a['username']&&_0x49915a[_0x96e1('0x31')]){var _0xb4da3a={'recipient':[_0x3e400c[_0x96e1('0x26')]],'message':_0x3e400c[_0x96e1('0xf')],'message_type':_0x49915a[_0x96e1('0x32')]};if(_0x49915a[_0x96e1('0x32')]&&_0x49915a[_0x96e1('0x32')]!=='SI'){_0xb4da3a[_0x96e1('0x33')]=_0x49915a['phone'];}var _0x3242da={'url':_0x11a0f7+'login?username='+_0x49915a['username']+_0x96e1('0x34')+_0x49915a[_0x96e1('0x31')],'method':'GET'};rp(_0x3242da)[_0x96e1('0x1a')](function(_0x5865a1){var _0x2a9fea=_0x5865a1['split'](';');var _0x3f98a3={'user_key':_0x2a9fea[0x0],'session_key':_0x2a9fea[0x1]};_0x3242da={'url':_0x11a0f7+_0x96e1('0x35'),'method':_0x96e1('0x36'),'headers':{'user_key':_0x3f98a3[_0x96e1('0x37')],'Session_key':_0x3f98a3[_0x96e1('0x38')]},'json':!![],'body':_0xb4da3a};return rp(_0x3242da);})[_0x96e1('0x1a')](function(_0x56b607){if(_0x56b607[_0x96e1('0x39')]>=0x1){var _0x3f3ef5={'messageId':_0x56b607[_0x96e1('0x3a')]};if(_0x49915a[_0x96e1('0x32')]!=='GP'||!_0x49915a[_0x96e1('0x3b')]){_0x3f3ef5['read']=!![];}return _0x4bab81['update'](_0x3f3ef5);}else{return logger[_0x96e1('0x1d')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x96e1('0x2f'),util[_0x96e1('0x2e')](_0x56b607,{'showHidden':![],'depth':null}));}})[_0x96e1('0x1c')](function(_0x1f4a86){return logger[_0x96e1('0x1d')](_0x96e1('0x2c'),_0x96e1('0x2d'),'skebby',util[_0x96e1('0x2e')](_0x1f4a86,{'showHidden':![],'depth':null}));});}else{logger[_0x96e1('0x1d')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x96e1('0x2d'),_0x96e1('0x2f'),_0x96e1('0x3c'));}break;case _0x96e1('0x3d'):if(_0x49915a[_0x96e1('0x25')]){var _0x3b6b73={'recipient':_0x3e400c['phone'],'message':_0x3e400c[_0x96e1('0xf')],'sender':_0x49915a[_0x96e1('0x3e')]||_0x49915a[_0x96e1('0x26')],'authorization':_0x49915a['authToken']};var _0x33a9d6={'method':_0x96e1('0x36'),'uri':_0x96e1('0x3f'),'body':_0x3b6b73,'json':!![]};rp(_0x33a9d6)['then'](function(_0x51772f){var _0x499ea7={'messageId':_0x51772f['requestid']};if(!_0x49915a[_0x96e1('0x3b')]){_0x499ea7[_0x96e1('0x40')]=!![];}return _0x4bab81['update'](_0x499ea7);})[_0x96e1('0x1c')](function(_0x51f57c){logger[_0x96e1('0x1d')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x96e1('0x2d'),_0x96e1('0x3d'),util['inspect'](_0x51f57c,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x96e1('0x2c'),_0x96e1('0x2d'),_0x96e1('0x3d'),'Missing\x20parameters:\x20authToken');}break;case _0x96e1('0x41'):if(_0x49915a[_0x96e1('0x42')]&&_0x49915a[_0x96e1('0x31')]){var _0x3b6b73={'messages':[{'source':_0x96e1('0x43'),'to':_0x3e400c[_0x96e1('0x26')],'body':_0x3e400c[_0x96e1('0xf')],'from':_0x49915a[_0x96e1('0x3e')]||_0x49915a['phone']}]};var _0x49f194=util[_0x96e1('0x44')]('%s:%s',_0x49915a[_0x96e1('0x42')],_0x49915a[_0x96e1('0x31')]);var _0x33a9d6={'method':_0x96e1('0x36'),'uri':_0x96e1('0x45'),'body':_0x3b6b73,'headers':{'Authorization':util['format'](_0x96e1('0x46'),new Buffer(_0x49f194)['toString']('base64'))},'json':!![]};rp(_0x33a9d6)[_0x96e1('0x1a')](function(_0x8a08bf){if(_0x8a08bf[_0x96e1('0x47')]>=0xc8&&_0x8a08bf[_0x96e1('0x47')]<=0xce){if(_0x8a08bf['data']&&_0x8a08bf['data'][_0x96e1('0x48')]>0x0){var _0x1dfdb7=_[_0x96e1('0x49')](_0x8a08bf[_0x96e1('0x4a')]['messages']);var _0x1aab20={'messageId':_0x1dfdb7[_0x96e1('0x4b')]};if(!_0x49915a[_0x96e1('0x3b')]){_0x1aab20[_0x96e1('0x40')]=!![];}return _0x4bab81[_0x96e1('0x1b')](_0x1aab20);}else{logger[_0x96e1('0x1d')](_0x96e1('0x2c'),_0x96e1('0x2d'),_0x96e1('0x4c'),util[_0x96e1('0x2e')](_0x8a08bf,{'showHidden':![],'depth':null}));}}else{logger[_0x96e1('0x1d')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x96e1('0x2d'),_0x96e1('0x4c'),util[_0x96e1('0x2e')](_0x8a08bf,{'showHidden':![],'depth':null}));}})[_0x96e1('0x1c')](function(_0x274d22){logger['error'](_0x96e1('0x2c'),'afterCreate','clickSend',util[_0x96e1('0x2e')](_0x274d22,{'showHidden':![],'depth':null}));});}else{logger[_0x96e1('0x1d')](_0x96e1('0x2c'),_0x96e1('0x2d'),_0x96e1('0x4c'),_0x96e1('0x3c'));}break;case _0x96e1('0x4d'):if(_0x49915a[_0x96e1('0x4e')]&&_0x49915a[_0x96e1('0x25')]){var _0x3b6b73={'dst':_0x3e400c['phone'],'text':_0x3e400c[_0x96e1('0xf')],'src':_0x49915a[_0x96e1('0x3e')]||_0x49915a[_0x96e1('0x26')],'url':_0x49915a[_0x96e1('0x4f')]+_0x96e1('0x29')+_0x3e400c['id']+_0x96e1('0x2a')+_0x49915a[_0x96e1('0x50')]};var _0x49f194=util[_0x96e1('0x44')](_0x96e1('0x51'),_0x49915a[_0x96e1('0x4e')],_0x49915a['authToken']);var _0x33a9d6={'method':'POST','uri':util[_0x96e1('0x44')](_0x96e1('0x52'),_0x49915a[_0x96e1('0x4e')]),'body':_0x3b6b73,'headers':{'Authorization':util[_0x96e1('0x44')](_0x96e1('0x46'),new Buffer(_0x49f194)[_0x96e1('0x53')]('base64'))},'json':!![]};rp(_0x33a9d6)[_0x96e1('0x1a')](function(_0x2809bd){var _0x44e7a4={'messageId':_0x2809bd[_0x96e1('0x54')][0x0]};return _0x4bab81[_0x96e1('0x1b')](_0x44e7a4);})[_0x96e1('0x1c')](function(_0x24946c){logger[_0x96e1('0x1d')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x96e1('0x2d'),_0x96e1('0x4d'),util[_0x96e1('0x2e')](_0x24946c,{'showHidden':![],'depth':null}));});}else{logger[_0x96e1('0x1d')](_0x96e1('0x2c'),'afterCreate',_0x96e1('0x4d'),_0x96e1('0x55'));}break;case _0x96e1('0x56'):if(_0x49915a[_0x96e1('0x42')]&&_0x49915a[_0x96e1('0x31')]){if(_0x49915a[_0x96e1('0x57')]){var _0x378ca8={'method':'POST','uri':_0x49915a[_0x96e1('0x57')]+_0x96e1('0x58'),'body':{'username':_0x49915a[_0x96e1('0x42')],'password':_0x49915a[_0x96e1('0x31')]},'json':!![]};return rp(_0x378ca8)[_0x96e1('0x1a')](function(_0xd9a288){var _0x4862bb={'method':_0x96e1('0x36'),'uri':_0x49915a[_0x96e1('0x57')]+_0x96e1('0x59'),'body':{'messages':[{'from':_0x49915a[_0x96e1('0x26')],'destinations':[{'to':_0x3e400c[_0x96e1('0x26')]}],'text':_0x3e400c[_0x96e1('0xf')],'notifyUrl':_0x49915a[_0x96e1('0x4f')]+_0x96e1('0x29')+_0x3e400c['id']+_0x96e1('0x2a')+_0x49915a[_0x96e1('0x50')],'notifyContentType':'application/json','callbackData':_0x49915a['phone']+';'+_0x3e400c['body']}]},'headers':{'Authorization':_0x96e1('0x5a')+_0xd9a288[_0x96e1('0x50')]},'json':!![]};return rp(_0x4862bb)[_0x96e1('0x1a')](function(_0x12239e){if(_0x12239e[_0x96e1('0x27')]){var _0x1c1f3e={'messageId':_0x12239e[_0x96e1('0x27')][0x0][_0x96e1('0xd')]};if(!_0x49915a[_0x96e1('0x3b')]){_0x1c1f3e[_0x96e1('0x40')]=!![];}return _0x4bab81[_0x96e1('0x1b')](_0x1c1f3e);}else{return logger[_0x96e1('0x1d')](_0x96e1('0x2c'),'afterCreate','infobip',util['inspect'](_0x12239e,{'showHidden':![],'depth':null}));}});})['catch'](function(_0x2381cf){return logger['error'](_0x96e1('0x2c'),'afterCreate',_0x96e1('0x56'),util[_0x96e1('0x2e')](_0x2381cf,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x96e1('0x2c'),'afterCreate',_0x96e1('0x56'),_0x96e1('0x5b'));}}else{logger[_0x96e1('0x1d')](_0x96e1('0x2c'),_0x96e1('0x2d'),_0x96e1('0x56'),_0x96e1('0x3c'));}break;case _0x96e1('0x5c'):var _0xe3f561=require(_0x96e1('0x5d'));if(_0x49915a[_0x96e1('0x5e')]){var _0x23f750={};_0x23f750[_0x96e1('0x5f')]=_0x49915a['username'];_0x23f750[_0x96e1('0x26')]=_0x3e400c[_0x96e1('0x26')];_0x23f750[_0x96e1('0x33')]=_0x49915a['phone'];_0x23f750[_0x96e1('0x60')]=_0x3e400c[_0x96e1('0xf')];_0x23f750[_0x96e1('0x61')]=+new Date();var _0x3bfbaf='';var _0x3075cf='';var _0x4def35=Object[_0x96e1('0x62')](_0x23f750);_0x4def35[_0x96e1('0x63')]();for(var _0x5166c9=0x0;_0x5166c9<_0x4def35['length'];_0x5166c9++){if(_0x3bfbaf!=''){_0x3bfbaf+='&';}_0x3bfbaf+=_0x4def35[_0x5166c9]+'='+encodeURIComponent(_0x23f750[_0x4def35[_0x5166c9]]);_0x3075cf+=_0x23f750[_0x4def35[_0x5166c9]];}_0x3075cf+=_0x49915a[_0x96e1('0x5e')];_0x3075cf=_0xe3f561['createHash'](_0x96e1('0x64'))['update'](_0x3075cf)[_0x96e1('0x65')](_0x96e1('0x66'));if(_0x3bfbaf!==''){_0x3bfbaf+='&';}_0x3bfbaf+='signature='+_0x3075cf;var _0x3242da={'method':_0x96e1('0x67'),'uri':_0x49915a[_0x96e1('0x57')]+_0x96e1('0x68')+_0x3bfbaf,'json':!![]};return rp(_0x3242da)[_0x96e1('0x1a')](function(_0x166d8b){var _0x1f0039=Object['keys'](_0x166d8b);if(_0x166d8b[_0x1f0039[0x0]][_0x96e1('0x1d')]&&parseInt(_0x166d8b[_0x1f0039[0x0]][_0x96e1('0x1d')])===0x0){var _0x5adf47={'messageId':_0x166d8b[_0x1f0039[0x0]][_0x96e1('0x69')]};if(!_0x49915a[_0x96e1('0x3b')]){_0x5adf47['read']=!![];}return _0x4bab81[_0x96e1('0x1b')](_0x5adf47);}else{return logger[_0x96e1('0x1d')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x96e1('0x2d'),_0x96e1('0x5c'),util[_0x96e1('0x2e')](_0x166d8b[_0x96e1('0x1d')],{'showHidden':![],'depth':null}));}})[_0x96e1('0x1c')](function(_0x1bb986){return logger[_0x96e1('0x1d')](_0x96e1('0x2c'),'afterCreate',_0x96e1('0x5c'),util[_0x96e1('0x2e')](_0x1bb986,{'showHidden':![],'depth':null}));});}else{logger[_0x96e1('0x1d')](_0x96e1('0x2c'),'afterCreate',_0x96e1('0x5c'),_0x96e1('0x6a'));}break;case _0x96e1('0x6b'):if(_0x49915a[_0x96e1('0x5e')]){var _0x2f4140={'method':_0x96e1('0x36'),'uri':'https://platform.clickatell.com/messages','headers':{'Authorization':_0x49915a[_0x96e1('0x5e')]},'body':{'content':_0x3e400c[_0x96e1('0xf')],'to':[_0x3e400c[_0x96e1('0x26')]],'from':_0x49915a['phone'],'binary':![],'clientMessageId':_0x96e1('0x6c'),'charset':_0x96e1('0x6d')},'json':!![]};rp(_0x2f4140)[_0x96e1('0x1a')](function(_0x310c67){if(!_0x310c67['error']){var _0xbd9aa7={'messageId':_0x310c67[_0x96e1('0x27')][0x0][_0x96e1('0x6e')]};if(!_0x49915a[_0x96e1('0x3b')]){_0xbd9aa7['read']=!![];}return _0x4bab81[_0x96e1('0x1b')](_0xbd9aa7);}else{return logger[_0x96e1('0x1d')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x96e1('0x2d'),'clickatell',util[_0x96e1('0x2e')](_0x310c67[_0x96e1('0x1d')],{'showHidden':![],'depth':null}));}})[_0x96e1('0x1c')](function(_0x851cf0){return logger['error'](_0x96e1('0x2c'),_0x96e1('0x2d'),_0x96e1('0x6b'),util[_0x96e1('0x2e')](_0x851cf0,{'showHidden':![],'depth':null}));});}else{logger[_0x96e1('0x1d')](_0x96e1('0x2c'),'afterCreate',_0x96e1('0x6b'),'Missing\x20parameters:\x20apiKey');}break;case _0x96e1('0x6f'):if(_0x49915a[_0x96e1('0x42')]&&_0x49915a[_0x96e1('0x31')]){var _0x49f194=util[_0x96e1('0x44')]('%s:%s',_0x49915a[_0x96e1('0x42')],_0x49915a[_0x96e1('0x31')]);var _0x33a9d6={'method':'POST','uri':_0x96e1('0x70')+_0x49915a[_0x96e1('0x71')]+'/messages','body':{'to':[_0x3e400c[_0x96e1('0x26')]],'text':_0x3e400c[_0x96e1('0xf')],'from':_0x49915a[_0x96e1('0x26')],'applicationId':_0x49915a[_0x96e1('0x72')]},'headers':{'Authorization':util[_0x96e1('0x44')]('Basic\x20%s',new Buffer(_0x49f194)[_0x96e1('0x53')](_0x96e1('0x73')))},'json':!![]};rp(_0x33a9d6)['then'](function(_0x4ed3eb){if(_0x4ed3eb['id']){var _0x4c9eba={'messageId':_0x4ed3eb['id']};return _0x4bab81[_0x96e1('0x1b')](_0x4c9eba);}else{logger[_0x96e1('0x1d')](_0x96e1('0x2c'),_0x96e1('0x2d'),_0x96e1('0x6f'),util[_0x96e1('0x2e')](_0x4ed3eb,{'showHidden':![],'depth':null}));}})[_0x96e1('0x1c')](function(_0x226794){logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x96e1('0x2d'),_0x96e1('0x6f'),util['inspect'](_0x226794,{'showHidden':![],'depth':null}));});}else{logger[_0x96e1('0x1d')](_0x96e1('0x2c'),_0x96e1('0x2d'),'bandwidth',_0x96e1('0x3c'));}break;case'intelepeer':if(_0x49915a[_0x96e1('0x5e')]){var _0x19f62f={};var _0x3242da={'method':_0x96e1('0x36'),'uri':_0x96e1('0x74'),'headers':{'Authorization':'Bearer\x20'+_0x49915a['apiKey'],'Content-Type':'application/json'},'body':{'from':_0x49915a[_0x96e1('0x26')],'to':_0x3e400c['phone'],'text':_0x3e400c[_0x96e1('0xf')]},'json':!![]};return rp(_0x3242da)[_0x96e1('0x1a')](function(_0x54f460){if(_0x54f460[_0x96e1('0x75')]==0xca){_0x19f62f[_0x96e1('0x76')]=_0x54f460;var _0x2c0978={'method':_0x96e1('0x36'),'uri':_0x96e1('0x77'),'headers':{'Authorization':'Bearer\x20'+_0x49915a[_0x96e1('0x5e')],'Content-Type':_0x96e1('0x78')},'body':{'refid':_0x19f62f[_0x96e1('0x76')][_0x96e1('0x79')]},'json':!![]};return rp(_0x2c0978)[_0x96e1('0x1a')](function(_0xdd228b){_0x19f62f[_0x96e1('0x7a')]=_0xdd228b;var _0x188767={'messageId':_0x19f62f[_0x96e1('0x76')]['refid'],'read':!![]};return _0x4bab81[_0x96e1('0x1b')](_0x188767);});}else{return logger[_0x96e1('0x1d')](_0x96e1('0x2c'),_0x96e1('0x2d'),_0x96e1('0x7b'),util[_0x96e1('0x2e')](_0x54f460,{'showHidden':![],'depth':null}));}})[_0x96e1('0x1c')](function(_0x194e26){return logger[_0x96e1('0x1d')](_0x96e1('0x2c'),_0x96e1('0x2d'),_0x96e1('0x7b'),util[_0x96e1('0x2e')](_0x194e26,{'showHidden':![],'depth':null}));});}else{return logger[_0x96e1('0x1d')](_0x96e1('0x2c'),_0x96e1('0x2d'),'intelepeer',_0x96e1('0x7c'));}break;}}})[_0x96e1('0x7d')](function(){_0x31ba42();});}else{_0x31ba42();}}},'charset':_0x96e1('0x7e'),'collate':_0x96e1('0x7f')});};
\ No newline at end of file
index ec64669..3c897fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb8e=['./smsMessage.socket','register','request','info','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','SmsMessage,\x20%s,\x20%s','message','result','catch','CreateSmsMessage','create','body','raw','then','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','defaults','localhost','socket.io-emitter','redis'];(function(_0xcb19ee,_0x291c41){var _0x243e4c=function(_0x3c8712){while(--_0x3c8712){_0xcb19ee['push'](_0xcb19ee['shift']());}};_0x243e4c(++_0x291c41);}(_0xcb8e,0x1e1));var _0xecb8=function(_0x5727c2,_0x261a07){_0x5727c2=_0x5727c2-0x0;var _0x16d0ed=_0xcb8e[_0x5727c2];return _0x16d0ed;};'use strict';var _=require('lodash');var util=require(_0xecb8('0x0'));var moment=require(_0xecb8('0x1'));var BPromise=require(_0xecb8('0x2'));var rs=require(_0xecb8('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xecb8('0x4'))['db'];var utils=require(_0xecb8('0x5'));var logger=require('../../config/logger')(_0xecb8('0x6'));var config=require(_0xecb8('0x7'));var jayson=require(_0xecb8('0x8'));var client=jayson[_0xecb8('0x9')]['http']({'port':0x232a});config['redis']=_[_0xecb8('0xa')](config['redis'],{'host':_0xecb8('0xb'),'port':0x18eb});var socket=require(_0xecb8('0xc'))(new Redis(config[_0xecb8('0xd')]));require(_0xecb8('0xe'))[_0xecb8('0xf')](socket);function respondWithRpcPromise(_0x31ef81,_0xc7b1a2,_0x4a2a1a){return new BPromise(function(_0x3ac1de,_0x3fb278){return client[_0xecb8('0x10')](_0x31ef81,_0x4a2a1a)['then'](function(_0x4bd88b){logger[_0xecb8('0x11')]('SmsMessage,\x20%s,\x20%s',_0xc7b1a2,_0xecb8('0x12'));logger[_0xecb8('0x13')](_0xecb8('0x14'),_0xc7b1a2,_0xecb8('0x12'),JSON[_0xecb8('0x15')](_0x4bd88b));if(_0x4bd88b[_0xecb8('0x16')]){if(_0x4bd88b[_0xecb8('0x16')][_0xecb8('0x17')]===0x1f4){logger[_0xecb8('0x16')](_0xecb8('0x18'),_0xc7b1a2,_0x4bd88b['error']['message']);return _0x3fb278(_0x4bd88b[_0xecb8('0x16')][_0xecb8('0x19')]);}logger['error'](_0xecb8('0x18'),_0xc7b1a2,_0x4bd88b['error'][_0xecb8('0x19')]);return _0x3ac1de(_0x4bd88b['error']['message']);}else{logger['info']('SmsMessage,\x20%s,\x20%s',_0xc7b1a2,'request\x20sent');_0x3ac1de(_0x4bd88b[_0xecb8('0x1a')][_0xecb8('0x19')]);}})[_0xecb8('0x1b')](function(_0x2982ba){logger[_0xecb8('0x16')](_0xecb8('0x18'),_0xc7b1a2,_0x2982ba);_0x3fb278(_0x2982ba);});});}exports[_0xecb8('0x1c')]=function(_0x1f1ccf){var _0x125c35=this;return new Promise(function(_0x3bd2aa,_0x1565b7){return db['SmsMessage'][_0xecb8('0x1d')](_0x1f1ccf[_0xecb8('0x1e')],{'raw':_0x1f1ccf['options']?_0x1f1ccf['options'][_0xecb8('0x1f')]===undefined?!![]:![]:!![]})[_0xecb8('0x20')](function(_0x507401){logger[_0xecb8('0x11')](_0xecb8('0x1c'),_0x1f1ccf);logger['debug'](_0xecb8('0x1c'),_0x1f1ccf,JSON[_0xecb8('0x15')](_0x507401));_0x3bd2aa(_0x507401);})[_0xecb8('0x1b')](function(_0x3c4b0d){logger[_0xecb8('0x16')](_0xecb8('0x1c'),_0x3c4b0d[_0xecb8('0x19')],_0x1f1ccf);_0x1565b7(_0x125c35[_0xecb8('0x16')](0x1f4,_0x3c4b0d['message']));});});};
\ No newline at end of file
+var _0x48e2=['moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','register','info','SmsMessage,\x20%s,\x20%s','request\x20sent','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateSmsMessage','SmsMessage','create','body','options','then','debug','lodash','util'];(function(_0x2959a6,_0x4b6d0e){var _0x1e350a=function(_0x2cdeab){while(--_0x2cdeab){_0x2959a6['push'](_0x2959a6['shift']());}};_0x1e350a(++_0x4b6d0e);}(_0x48e2,0xa3));var _0x248e=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0x48e2[_0x2b4411];return _0x8e41ef;};'use strict';var _=require(_0x248e('0x0'));var util=require(_0x248e('0x1'));var moment=require(_0x248e('0x2'));var BPromise=require(_0x248e('0x3'));var rs=require(_0x248e('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x248e('0x5'))['db'];var utils=require(_0x248e('0x6'));var logger=require(_0x248e('0x7'))('rpc');var config=require(_0x248e('0x8'));var jayson=require(_0x248e('0x9'));var client=jayson[_0x248e('0xa')][_0x248e('0xb')]({'port':0x232a});config[_0x248e('0xc')]=_['defaults'](config['redis'],{'host':_0x248e('0xd'),'port':0x18eb});var socket=require(_0x248e('0xe'))(new Redis(config[_0x248e('0xc')]));require('./smsMessage.socket')[_0x248e('0xf')](socket);function respondWithRpcPromise(_0x1f34c6,_0x40b7f1,_0x313aae){return new BPromise(function(_0x47296b,_0x4a13b6){return client['request'](_0x1f34c6,_0x313aae)['then'](function(_0x3137d2){logger[_0x248e('0x10')](_0x248e('0x11'),_0x40b7f1,_0x248e('0x12'));logger['debug'](_0x248e('0x13'),_0x40b7f1,'request\x20sent',JSON[_0x248e('0x14')](_0x3137d2));if(_0x3137d2[_0x248e('0x15')]){if(_0x3137d2['error'][_0x248e('0x16')]===0x1f4){logger[_0x248e('0x15')](_0x248e('0x11'),_0x40b7f1,_0x3137d2[_0x248e('0x15')][_0x248e('0x17')]);return _0x4a13b6(_0x3137d2[_0x248e('0x15')][_0x248e('0x17')]);}logger[_0x248e('0x15')]('SmsMessage,\x20%s,\x20%s',_0x40b7f1,_0x3137d2['error'][_0x248e('0x17')]);return _0x47296b(_0x3137d2['error'][_0x248e('0x17')]);}else{logger['info'](_0x248e('0x11'),_0x40b7f1,_0x248e('0x12'));_0x47296b(_0x3137d2[_0x248e('0x18')][_0x248e('0x17')]);}})[_0x248e('0x19')](function(_0x3bd96c){logger[_0x248e('0x15')](_0x248e('0x11'),_0x40b7f1,_0x3bd96c);_0x4a13b6(_0x3bd96c);});});}exports[_0x248e('0x1a')]=function(_0x36974d){var _0x416999=this;return new Promise(function(_0x221828,_0x1763ee){return db[_0x248e('0x1b')][_0x248e('0x1c')](_0x36974d[_0x248e('0x1d')],{'raw':_0x36974d[_0x248e('0x1e')]?_0x36974d['options']['raw']===undefined?!![]:![]:!![]})[_0x248e('0x1f')](function(_0x72fe68){logger[_0x248e('0x10')](_0x248e('0x1a'),_0x36974d);logger[_0x248e('0x20')](_0x248e('0x1a'),_0x36974d,JSON['stringify'](_0x72fe68));_0x221828(_0x72fe68);})['catch'](function(_0xc91f40){logger[_0x248e('0x15')](_0x248e('0x1a'),_0xc91f40[_0x248e('0x17')],_0x36974d);_0x1763ee(_0x416999[_0x248e('0x15')](0x1f4,_0xc91f40[_0x248e('0x17')]));});});};
\ No newline at end of file
index b0ca1c4..79f752c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed62=['length','./smsMessage.events','update','emit','register'];(function(_0x2d1663,_0x40865b){var _0xb6f5a4=function(_0x181811){while(--_0x181811){_0x2d1663['push'](_0x2d1663['shift']());}};_0xb6f5a4(++_0x40865b);}(_0xed62,0xa6));var _0x2ed6=function(_0x23424a,_0x4e8489){_0x23424a=_0x23424a-0x0;var _0x48bc6f=_0xed62[_0x23424a];return _0x48bc6f;};'use strict';var SmsMessageEvents=require(_0x2ed6('0x0'));var events=['save','remove',_0x2ed6('0x1')];function createListener(_0x45c8b4,_0x8ecb79){return function(_0x4babc8){_0x8ecb79[_0x2ed6('0x2')](_0x45c8b4,_0x4babc8);};}function removeListener(_0x17d0de,_0x5d7303){return function(){SmsMessageEvents['removeListener'](_0x17d0de,_0x5d7303);};}exports[_0x2ed6('0x3')]=function(_0x250278){for(var _0x4dc135=0x0,_0x4a4365=events[_0x2ed6('0x4')];_0x4dc135<_0x4a4365;_0x4dc135++){var _0x11a3f3=events[_0x4dc135];var _0x275c0e=createListener('smsMessage:'+_0x11a3f3,_0x250278);SmsMessageEvents['on'](_0x11a3f3,_0x275c0e);}};
\ No newline at end of file
+var _0x2586=['smsMessage:','./smsMessage.events','save','remove','emit','removeListener','length'];(function(_0xb8cfbe,_0x2e81b6){var _0x227d51=function(_0x5cb1ff){while(--_0x5cb1ff){_0xb8cfbe['push'](_0xb8cfbe['shift']());}};_0x227d51(++_0x2e81b6);}(_0x2586,0x104));var _0x6258=function(_0x340178,_0x603ad7){_0x340178=_0x340178-0x0;var _0x546e4e=_0x2586[_0x340178];return _0x546e4e;};'use strict';var SmsMessageEvents=require(_0x6258('0x0'));var events=[_0x6258('0x1'),_0x6258('0x2'),'update'];function createListener(_0x3bde0c,_0x92e1bf){return function(_0xc56f57){_0x92e1bf[_0x6258('0x3')](_0x3bde0c,_0xc56f57);};}function removeListener(_0xb52809,_0xc9f68){return function(){SmsMessageEvents[_0x6258('0x4')](_0xb52809,_0xc9f68);};}exports['register']=function(_0x10de23){for(var _0x1a8d91=0x0,_0x28c1e9=events[_0x6258('0x5')];_0x1a8d91<_0x28c1e9;_0x1a8d91++){var _0x554e5c=events[_0x1a8d91];var _0x30b5a5=createListener(_0x6258('0x6')+_0x554e5c,_0x10de23);SmsMessageEvents['on'](_0x554e5c,_0x30b5a5);}};
\ No newline at end of file
index 9f81c0d..19d51fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0aa=['addAgents','put','update','destroy','delete','removeAgents','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueue.controller','get','index','/describe','isAuthenticated','describe','/:id','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams'];(function(_0x15562d,_0x37752c){var _0x58c422=function(_0x2c2c81){while(--_0x2c2c81){_0x15562d['push'](_0x15562d['shift']());}};_0x58c422(++_0x37752c);}(_0xf0aa,0x16e));var _0xaf0a=function(_0x52d861,_0x1ef924){_0x52d861=_0x52d861-0x0;var _0x5a0eed=_0xf0aa[_0x52d861];return _0x5a0eed;};'use strict';var multer=require(_0xaf0a('0x0'));var util=require('util');var path=require(_0xaf0a('0x1'));var timeout=require(_0xaf0a('0x2'));var express=require(_0xaf0a('0x3'));var router=express[_0xaf0a('0x4')]();var fs_extra=require(_0xaf0a('0x5'));var auth=require(_0xaf0a('0x6'));var interaction=require(_0xaf0a('0x7'));var config=require(_0xaf0a('0x8'));var controller=require(_0xaf0a('0x9'));router[_0xaf0a('0xa')]('/',auth['isAuthenticated'](),controller[_0xaf0a('0xb')]);router[_0xaf0a('0xa')](_0xaf0a('0xc'),auth[_0xaf0a('0xd')](),controller[_0xaf0a('0xe')]);router[_0xaf0a('0xa')](_0xaf0a('0xf'),auth[_0xaf0a('0xd')](),controller['show']);router[_0xaf0a('0xa')]('/:id/members',auth['isAuthenticated'](),controller[_0xaf0a('0x10')]);router[_0xaf0a('0xa')](_0xaf0a('0x11'),auth[_0xaf0a('0xd')](),controller[_0xaf0a('0x12')]);router[_0xaf0a('0xa')](_0xaf0a('0x13'),auth['isAuthenticated'](),controller[_0xaf0a('0x14')]);router[_0xaf0a('0x15')]('/',auth[_0xaf0a('0xd')](),controller[_0xaf0a('0x16')]);router[_0xaf0a('0x15')]('/:id/teams',auth[_0xaf0a('0xd')](),controller[_0xaf0a('0x17')]);router[_0xaf0a('0x15')]('/:id/users',auth['isAuthenticated'](),controller[_0xaf0a('0x18')]);router[_0xaf0a('0x19')](_0xaf0a('0xf'),auth[_0xaf0a('0xd')](),controller[_0xaf0a('0x1a')]);router['delete'](_0xaf0a('0xf'),auth['isAuthenticated'](),controller[_0xaf0a('0x1b')]);router[_0xaf0a('0x1c')](_0xaf0a('0x11'),auth[_0xaf0a('0xd')](),controller['removeTeams']);router[_0xaf0a('0x1c')](_0xaf0a('0x13'),auth[_0xaf0a('0xd')](),controller[_0xaf0a('0x1d')]);module['exports']=router;
\ No newline at end of file
+var _0x70f7=['connect-timeout','express','Router','fs-extra','../../config/environment','./smsQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','/:id/members','getMembers','getTeams','/:id/users','getAgents','post','create','/:id/teams','addAgents','update','delete','destroy','removeTeams','exports','multer','util','path'];(function(_0x381589,_0x27a707){var _0x2a075d=function(_0x4ea19d){while(--_0x4ea19d){_0x381589['push'](_0x381589['shift']());}};_0x2a075d(++_0x27a707);}(_0x70f7,0x193));var _0x770f=function(_0x2fbcf6,_0x2e7155){_0x2fbcf6=_0x2fbcf6-0x0;var _0x3e7265=_0x70f7[_0x2fbcf6];return _0x3e7265;};'use strict';var multer=require(_0x770f('0x0'));var util=require(_0x770f('0x1'));var path=require(_0x770f('0x2'));var timeout=require(_0x770f('0x3'));var express=require(_0x770f('0x4'));var router=express[_0x770f('0x5')]();var fs_extra=require(_0x770f('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x770f('0x7'));var controller=require(_0x770f('0x8'));router[_0x770f('0x9')]('/',auth[_0x770f('0xa')](),controller[_0x770f('0xb')]);router[_0x770f('0x9')](_0x770f('0xc'),auth[_0x770f('0xa')](),controller[_0x770f('0xd')]);router[_0x770f('0x9')](_0x770f('0xe'),auth[_0x770f('0xa')](),controller['show']);router[_0x770f('0x9')](_0x770f('0xf'),auth[_0x770f('0xa')](),controller[_0x770f('0x10')]);router['get']('/:id/teams',auth[_0x770f('0xa')](),controller[_0x770f('0x11')]);router['get'](_0x770f('0x12'),auth[_0x770f('0xa')](),controller[_0x770f('0x13')]);router[_0x770f('0x14')]('/',auth[_0x770f('0xa')](),controller[_0x770f('0x15')]);router[_0x770f('0x14')](_0x770f('0x16'),auth[_0x770f('0xa')](),controller['addTeams']);router['post'](_0x770f('0x12'),auth[_0x770f('0xa')](),controller[_0x770f('0x17')]);router['put'](_0x770f('0xe'),auth['isAuthenticated'](),controller[_0x770f('0x18')]);router[_0x770f('0x19')](_0x770f('0xe'),auth['isAuthenticated'](),controller[_0x770f('0x1a')]);router[_0x770f('0x19')](_0x770f('0x16'),auth[_0x770f('0xa')](),controller[_0x770f('0x1b')]);router[_0x770f('0x19')](_0x770f('0x12'),auth[_0x770f('0xa')](),controller['removeAgents']);module[_0x770f('0x1c')]=router;
\ No newline at end of file
index 9bdf780..59be345 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ceb=['STRING','name','INTEGER','ENUM','rrmemory','beepall','roundrobin','sequelize','exports'];(function(_0x22ffbf,_0x16f31e){var _0x360c17=function(_0x40807f){while(--_0x40807f){_0x22ffbf['push'](_0x22ffbf['shift']());}};_0x360c17(++_0x16f31e);}(_0x2ceb,0x1db));var _0xb2ce=function(_0x165563,_0x382703){_0x165563=_0x165563-0x0;var _0x1c72a9=_0x2ceb[_0x165563];return _0x1c72a9;};'use strict';var Sequelize=require(_0xb2ce('0x0'));module[_0xb2ce('0x1')]={'name':{'type':Sequelize[_0xb2ce('0x2')],'unique':_0xb2ce('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xb2ce('0x2')]},'timeout':{'type':Sequelize[_0xb2ce('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xb2ce('0x5')](_0xb2ce('0x6'),_0xb2ce('0x7'),_0xb2ce('0x8'))}};
\ No newline at end of file
+var _0xfc45=['roundrobin','exports','STRING','ENUM','rrmemory','beepall'];(function(_0x3317bf,_0x2aea02){var _0x5c42da=function(_0x22cef0){while(--_0x22cef0){_0x3317bf['push'](_0x3317bf['shift']());}};_0x5c42da(++_0x2aea02);}(_0xfc45,0x8b));var _0x5fc4=function(_0xc271da,_0x5d23a0){_0xc271da=_0xc271da-0x0;var _0x4afaf2=_0xfc45[_0xc271da];return _0x4afaf2;};'use strict';var Sequelize=require('sequelize');module[_0x5fc4('0x0')]={'name':{'type':Sequelize[_0x5fc4('0x1')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x5fc4('0x1')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x5fc4('0x2')](_0x5fc4('0x3'),_0x5fc4('0x4'),_0x5fc4('0x5'))}};
\ No newline at end of file
index 715f57d..573184b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f2e=['includes','all','union','compact','value','isEmpty','removeAgents','emit','userSmsQueue:remove','addAgents','omit','spread','isArray','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','jsforce','desk.js','to-csv','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','defaults','socket.io-emitter','./smsQueue.socket','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','get','SmsQueues','UserProfileResource','sendStatus','stack','index','map','SmsQueue','rawAttributes','fieldName','key','name','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','merge','type','VIRTUAL','filter','options','includeAll','include','findAll','catch','show','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','getMembers','findOne','order','pick','UserSmsQueue','User','findAndCountAll','agent','smsPause','updatedAt','createdAt','format','%s/%s','SIP','Team','getTeams','ids','interface','sequelize','transaction','findOrCreate','forEach','userSmsQueue:save','removeTeams','Agents','select','field','tq.TeamId','from','join','ut.TeamId\x20=\x20tq.TeamId','SmsQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','TeamId'];(function(_0x7457fe,_0x564a5e){var _0x57a6e4=function(_0x566577){while(--_0x566577){_0x7457fe['push'](_0x7457fe['shift']());}};_0x57a6e4(++_0x564a5e);}(_0x3f2e,0x9d));var _0xe3f2=function(_0x8a2dae,_0x2a21a7){_0x8a2dae=_0x8a2dae-0x0;var _0x308f20=_0x3f2e[_0x8a2dae];return _0x308f20;};'use strict';var emlformat=require(_0xe3f2('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe3f2('0x1'));var jsonpatch=require(_0xe3f2('0x2'));var rp=require(_0xe3f2('0x3'));var moment=require(_0xe3f2('0x4'));var BPromise=require(_0xe3f2('0x5'));var Mustache=require(_0xe3f2('0x6'));var util=require(_0xe3f2('0x7'));var path=require('path');var sox=require(_0xe3f2('0x8'));var csv=require('to-csv');var ejs=require(_0xe3f2('0x9'));var fs=require('fs');var fs_extra=require(_0xe3f2('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xe3f2('0xb'));var deskjs=require(_0xe3f2('0xc'));var toCsv=require(_0xe3f2('0xd'));var querystring=require(_0xe3f2('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xe3f2('0xf'));var qs=require(_0xe3f2('0x10'));var as=require(_0xe3f2('0x11'));var hardwareService=require(_0xe3f2('0x12'));var logger=require(_0xe3f2('0x13'))(_0xe3f2('0x14'));var utils=require(_0xe3f2('0x15'));var config=require(_0xe3f2('0x16'));var licenseUtil=require(_0xe3f2('0x17'));var db=require(_0xe3f2('0x18'))['db'];config[_0xe3f2('0x19')]=_[_0xe3f2('0x1a')](config[_0xe3f2('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0xe3f2('0x1b'))(new Redis(config[_0xe3f2('0x19')]));require(_0xe3f2('0x1c'))['register'](socket);function respondWithStatusCode(_0x5492e7,_0x496d3f){_0x496d3f=_0x496d3f||0xcc;return function(_0xc46f89){if(_0xc46f89){return _0x5492e7['sendStatus'](_0x496d3f);}return _0x5492e7[_0xe3f2('0x1d')](_0x496d3f)[_0xe3f2('0x1e')]();};}function respondWithResult(_0x2eaee4,_0x5bc139){_0x5bc139=_0x5bc139||0xc8;return function(_0x2d24aa){if(_0x2d24aa){return _0x2eaee4[_0xe3f2('0x1d')](_0x5bc139)[_0xe3f2('0x1f')](_0x2d24aa);}};}function respondWithFilteredResult(_0x2d7c99,_0x233aae){return function(_0x335e87){if(_0x335e87){var _0x545530=typeof _0x233aae[_0xe3f2('0x20')]===_0xe3f2('0x21')&&typeof _0x233aae[_0xe3f2('0x22')]===_0xe3f2('0x21');var _0x1a5c21=_0x335e87[_0xe3f2('0x23')];var _0x14eb54=_0x545530?0x0:_0x233aae[_0xe3f2('0x20')];var _0x175ce8=_0x545530?_0x335e87['count']:_0x233aae['offset']+_0x233aae['limit'];var _0xeadeb3;if(_0x175ce8>=_0x1a5c21){_0x175ce8=_0x1a5c21;_0xeadeb3=0xc8;}else{_0xeadeb3=0xce;}_0x2d7c99[_0xe3f2('0x1d')](_0xeadeb3);return _0x2d7c99[_0xe3f2('0x24')](_0xe3f2('0x25'),_0x14eb54+'-'+_0x175ce8+'/'+_0x1a5c21)[_0xe3f2('0x1f')](_0x335e87);}return null;};}function patchUpdates(_0x6bd0c9){return function(_0x27b630){try{jsonpatch[_0xe3f2('0x26')](_0x27b630,_0x6bd0c9,!![]);}catch(_0x4ac647){return BPromise[_0xe3f2('0x27')](_0x4ac647);}return _0x27b630['save']();};}function saveUpdates(_0x55d0df,_0x5c41b5){return function(_0xee7ca9){if(_0xee7ca9){return _0xee7ca9[_0xe3f2('0x28')](_0x55d0df)[_0xe3f2('0x29')](function(_0x707e52){return _0x707e52;});}return null;};}function removeEntity(_0x501563,_0x2a185e){return function(_0x4a19ba){if(_0x4a19ba){return _0x4a19ba[_0xe3f2('0x2a')]()[_0xe3f2('0x29')](function(){var _0x3ae9d7=_0x4a19ba[_0xe3f2('0x2b')]({'plain':!![]});var _0x5def04=_0xe3f2('0x2c');return db[_0xe3f2('0x2d')][_0xe3f2('0x2a')]({'where':{'type':_0x5def04,'resourceId':_0x3ae9d7['id']}})[_0xe3f2('0x29')](function(){return _0x4a19ba;});})[_0xe3f2('0x29')](function(){_0x501563[_0xe3f2('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1ebe8c,_0x4f5483){return function(_0x26b671){if(!_0x26b671){_0x1ebe8c[_0xe3f2('0x2e')](0x194);}return _0x26b671;};}function handleError(_0x576c92,_0x5e5c1c){_0x5e5c1c=_0x5e5c1c||0x1f4;return function(_0x3b6d00){logger['error'](_0x3b6d00[_0xe3f2('0x2f')]);if(_0x3b6d00['name']){delete _0x3b6d00['name'];}_0x576c92[_0xe3f2('0x1d')](_0x5e5c1c)['send'](_0x3b6d00);};}exports[_0xe3f2('0x30')]=function(_0x13b00c,_0x4e3372){var _0x5d53ca={},_0x12d644={},_0x453a49={'count':0x0,'rows':[]};var _0x37174c=_[_0xe3f2('0x31')](db[_0xe3f2('0x32')][_0xe3f2('0x33')],function(_0x344295){return{'name':_0x344295[_0xe3f2('0x34')],'type':_0x344295['type'][_0xe3f2('0x35')]};});_0x12d644['model']=_['map'](_0x37174c,_0xe3f2('0x36'));_0x12d644[_0xe3f2('0x37')]=_[_0xe3f2('0x38')](_0x13b00c[_0xe3f2('0x37')]);_0x12d644[_0xe3f2('0x39')]=_[_0xe3f2('0x3a')](_0x12d644[_0xe3f2('0x3b')],_0x12d644[_0xe3f2('0x37')]);_0x5d53ca[_0xe3f2('0x3c')]=_[_0xe3f2('0x3a')](_0x12d644[_0xe3f2('0x3b')],qs[_0xe3f2('0x3d')](_0x13b00c[_0xe3f2('0x37')]['fields']));_0x5d53ca[_0xe3f2('0x3c')]=_0x5d53ca[_0xe3f2('0x3c')][_0xe3f2('0x3e')]?_0x5d53ca['attributes']:_0x12d644[_0xe3f2('0x3b')];if(!_0x13b00c[_0xe3f2('0x37')][_0xe3f2('0x3f')](_0xe3f2('0x40'))){_0x5d53ca[_0xe3f2('0x22')]=qs[_0xe3f2('0x22')](_0x13b00c[_0xe3f2('0x37')][_0xe3f2('0x22')]);_0x5d53ca[_0xe3f2('0x20')]=qs[_0xe3f2('0x20')](_0x13b00c[_0xe3f2('0x37')][_0xe3f2('0x20')]);}_0x5d53ca['order']=qs['sort'](_0x13b00c[_0xe3f2('0x37')][_0xe3f2('0x41')]);_0x5d53ca['where']=qs[_0xe3f2('0x39')](_['pick'](_0x13b00c[_0xe3f2('0x37')],_0x12d644[_0xe3f2('0x39')]),_0x37174c);if(_0x13b00c[_0xe3f2('0x37')]['filter']){_0x5d53ca[_0xe3f2('0x42')]=_[_0xe3f2('0x43')](_0x5d53ca[_0xe3f2('0x42')],{'$or':_[_0xe3f2('0x31')](_0x37174c,function(_0x3bd4fa){if(_0x3bd4fa[_0xe3f2('0x44')]!==_0xe3f2('0x45')){var _0xaa2206={};_0xaa2206[_0x3bd4fa[_0xe3f2('0x36')]]={'$like':'%'+_0x13b00c['query'][_0xe3f2('0x46')]+'%'};return _0xaa2206;}})});}_0x5d53ca=_[_0xe3f2('0x43')]({},_0x5d53ca,_0x13b00c[_0xe3f2('0x47')]);var _0x1c2a24={'where':_0x5d53ca[_0xe3f2('0x42')]};return db[_0xe3f2('0x32')][_0xe3f2('0x23')](_0x1c2a24)[_0xe3f2('0x29')](function(_0x2f7925){_0x453a49[_0xe3f2('0x23')]=_0x2f7925;if(_0x13b00c[_0xe3f2('0x37')][_0xe3f2('0x48')]){_0x5d53ca[_0xe3f2('0x49')]=[{'all':!![]}];}return db['SmsQueue'][_0xe3f2('0x4a')](_0x5d53ca);})['then'](function(_0x40d051){_0x453a49['rows']=_0x40d051;return _0x453a49;})[_0xe3f2('0x29')](respondWithFilteredResult(_0x4e3372,_0x5d53ca))[_0xe3f2('0x4b')](handleError(_0x4e3372,null));};exports[_0xe3f2('0x4c')]=function(_0x8d0941,_0x5e5667){var _0x3ed254={'raw':!![],'where':{'id':_0x8d0941['params']['id']}},_0x550937={};_0x550937[_0xe3f2('0x3b')]=_[_0xe3f2('0x38')](db['SmsQueue'][_0xe3f2('0x33')]);_0x550937['query']=_[_0xe3f2('0x38')](_0x8d0941['query']);_0x550937[_0xe3f2('0x39')]=_[_0xe3f2('0x3a')](_0x550937[_0xe3f2('0x3b')],_0x550937[_0xe3f2('0x37')]);_0x3ed254[_0xe3f2('0x3c')]=_[_0xe3f2('0x3a')](_0x550937[_0xe3f2('0x3b')],qs[_0xe3f2('0x3d')](_0x8d0941[_0xe3f2('0x37')][_0xe3f2('0x3d')]));_0x3ed254[_0xe3f2('0x3c')]=_0x3ed254[_0xe3f2('0x3c')][_0xe3f2('0x3e')]?_0x3ed254['attributes']:_0x550937['model'];if(_0x8d0941[_0xe3f2('0x37')]['includeAll']){_0x3ed254[_0xe3f2('0x49')]=[{'all':!![]}];}_0x3ed254=_[_0xe3f2('0x43')]({},_0x3ed254,_0x8d0941['options']);return db[_0xe3f2('0x32')][_0xe3f2('0x4d')](_0x3ed254)[_0xe3f2('0x29')](handleEntityNotFound(_0x5e5667,null))['then'](respondWithResult(_0x5e5667,null))['catch'](handleError(_0x5e5667,null));};exports['create']=function(_0x1a7702,_0x1f6d69){return db[_0xe3f2('0x32')][_0xe3f2('0x4e')](_0x1a7702[_0xe3f2('0x4f')],{})[_0xe3f2('0x29')](function(_0x182dd3){var _0x575382=_0x1a7702[_0xe3f2('0x50')][_0xe3f2('0x2b')]({'plain':!![]});if(!_0x575382)throw new Error(_0xe3f2('0x51'));if(_0x575382[_0xe3f2('0x52')]===_0xe3f2('0x50')){var _0x3c136a=_0x182dd3[_0xe3f2('0x2b')]({'plain':!![]});var _0x4b47fb=_0xe3f2('0x2c');return db[_0xe3f2('0x53')]['find']({'where':{'name':_0x4b47fb,'userProfileId':_0x575382[_0xe3f2('0x54')]},'raw':!![]})[_0xe3f2('0x29')](function(_0x993666){if(_0x993666&&_0x993666[_0xe3f2('0x55')]===0x0){return db['UserProfileResource'][_0xe3f2('0x4e')]({'name':_0x3c136a[_0xe3f2('0x36')],'resourceId':_0x3c136a['id'],'type':_0x993666['name'],'sectionId':_0x993666['id']},{})[_0xe3f2('0x29')](function(){return _0x182dd3;});}else{return _0x182dd3;}})[_0xe3f2('0x4b')](function(_0x2388dc){logger[_0xe3f2('0x56')](_0xe3f2('0x57'),_0x2388dc);throw _0x2388dc;});}return _0x182dd3;})[_0xe3f2('0x29')](respondWithResult(_0x1f6d69,0xc9))[_0xe3f2('0x4b')](handleError(_0x1f6d69,null));};exports[_0xe3f2('0x28')]=function(_0x4e5aa2,_0x32b196){if(_0x4e5aa2[_0xe3f2('0x4f')]['id']){delete _0x4e5aa2['body']['id'];}return db['SmsQueue'][_0xe3f2('0x4d')]({'where':{'id':_0x4e5aa2[_0xe3f2('0x58')]['id']}})[_0xe3f2('0x29')](handleEntityNotFound(_0x32b196,null))[_0xe3f2('0x29')](saveUpdates(_0x4e5aa2[_0xe3f2('0x4f')],null))[_0xe3f2('0x29')](respondWithResult(_0x32b196,null))['catch'](handleError(_0x32b196,null));};exports[_0xe3f2('0x2a')]=function(_0x3e3073,_0x576139){return db[_0xe3f2('0x32')][_0xe3f2('0x4d')]({'where':{'id':_0x3e3073['params']['id']}})[_0xe3f2('0x29')](handleEntityNotFound(_0x576139,null))['then'](removeEntity(_0x576139,null))['catch'](handleError(_0x576139,null));};exports[_0xe3f2('0x59')]=function(_0x25662c,_0x150e64){return db[_0xe3f2('0x32')][_0xe3f2('0x59')]()[_0xe3f2('0x29')](respondWithResult(_0x150e64,null))[_0xe3f2('0x4b')](handleError(_0x150e64,null));};exports[_0xe3f2('0x5a')]=function(_0xf3bc4a,_0xc11918,_0xa198b8){var _0x355077={'raw':!![],'where':{}},_0x285669={},_0x4c629e;return db[_0xe3f2('0x32')][_0xe3f2('0x5b')]({'where':{'id':_0xf3bc4a[_0xe3f2('0x58')]['id']}})[_0xe3f2('0x29')](handleEntityNotFound(_0xc11918,null))[_0xe3f2('0x29')](function(_0x3390aa){if(_0x3390aa){_0x4c629e=_0x3390aa[_0xe3f2('0x2b')]({'plain':!![]});_0x285669['model']=_[_0xe3f2('0x38')](db['UserSmsQueue']['rawAttributes']);_0x285669[_0xe3f2('0x37')]=_[_0xe3f2('0x38')](_0xf3bc4a[_0xe3f2('0x37')]);_0x285669[_0xe3f2('0x39')]=_[_0xe3f2('0x3a')](_0x285669[_0xe3f2('0x3b')],_0x285669[_0xe3f2('0x37')]);_0x355077[_0xe3f2('0x3c')]=_[_0xe3f2('0x3a')](_0x285669[_0xe3f2('0x3b')],qs[_0xe3f2('0x3d')](_0xf3bc4a[_0xe3f2('0x37')][_0xe3f2('0x3d')]));_0x355077[_0xe3f2('0x3c')]=_0x355077['attributes'][_0xe3f2('0x3e')]?_0x355077['attributes']:_0x285669[_0xe3f2('0x3b')];if(!_0xf3bc4a[_0xe3f2('0x37')][_0xe3f2('0x3f')]('nolimit')){_0x355077['limit']=qs[_0xe3f2('0x22')](_0xf3bc4a[_0xe3f2('0x37')][_0xe3f2('0x22')]);_0x355077[_0xe3f2('0x20')]=qs['offset'](_0xf3bc4a[_0xe3f2('0x37')][_0xe3f2('0x20')]);}_0x355077[_0xe3f2('0x5c')]=qs[_0xe3f2('0x41')](_0xf3bc4a[_0xe3f2('0x37')][_0xe3f2('0x41')]);_0x355077['where']=qs['filters'](_[_0xe3f2('0x5d')](_0xf3bc4a['query'],_0x285669['filters']));_0x355077['where']['SmsQueueId']=_0x3390aa['id'];if(_0xf3bc4a[_0xe3f2('0x37')][_0xe3f2('0x46')]){_0x355077[_0xe3f2('0x42')]=_['merge'](_0x355077[_0xe3f2('0x42')],{'$or':_['map'](_0x355077[_0xe3f2('0x3c')],function(_0x569fb9){var _0x3f7c90={};_0x3f7c90[_0x569fb9]={'$like':'%'+_0xf3bc4a[_0xe3f2('0x37')][_0xe3f2('0x46')]+'%'};return _0x3f7c90;})});}_0x355077=_[_0xe3f2('0x43')]({},_0x355077,_0xf3bc4a[_0xe3f2('0x47')]);return db[_0xe3f2('0x5e')]['findAll'](_0x355077);}})[_0xe3f2('0x29')](function(_0x33e853){if(_0x33e853){return db[_0xe3f2('0x5f')][_0xe3f2('0x60')]({'where':{'id':_[_0xe3f2('0x31')](_0x33e853,'UserId'),'role':_0xe3f2('0x61')},'attributes':['id','name',_0xe3f2('0x62'),_0xe3f2('0x63'),_0xe3f2('0x64')]});}})[_0xe3f2('0x29')](function(_0x485312){if(_0x485312){return{'count':_0x485312[_0xe3f2('0x23')],'rows':_[_0xe3f2('0x31')](_0x485312['rows'],function(_0x51dcad){return{'membername':_0x51dcad[_0xe3f2('0x36')],'UserId':_0x51dcad['id'],'queue_name':_0x4c629e[_0xe3f2('0x36')],'SmsQueueId':_0x4c629e['id'],'interface':util[_0xe3f2('0x65')](_0xe3f2('0x66'),_0xe3f2('0x67'),_0x51dcad['name']),'penalty':0x0,'paused':_0x51dcad[_0xe3f2('0x62')],'createdAt':_0x51dcad[_0xe3f2('0x64')],'updatedAt':_0x51dcad[_0xe3f2('0x63')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xe3f2('0x29')](respondWithFilteredResult(_0xc11918,_0x355077))[_0xe3f2('0x4b')](handleError(_0xc11918,null));};exports['getTeams']=function(_0x32343f,_0x509271,_0x526583){var _0x18ff39={};var _0x6590ef={};var _0x340752;var _0x48c9e6;return db[_0xe3f2('0x32')][_0xe3f2('0x5b')]({'where':{'id':_0x32343f[_0xe3f2('0x58')]['id']}})[_0xe3f2('0x29')](handleEntityNotFound(_0x509271,null))[_0xe3f2('0x29')](function(_0x404311){if(_0x404311){_0x340752=_0x404311;_0x6590ef[_0xe3f2('0x3b')]=_[_0xe3f2('0x38')](db[_0xe3f2('0x68')][_0xe3f2('0x33')]);_0x6590ef[_0xe3f2('0x37')]=_[_0xe3f2('0x38')](_0x32343f[_0xe3f2('0x37')]);_0x6590ef['filters']=_[_0xe3f2('0x3a')](_0x6590ef[_0xe3f2('0x3b')],_0x6590ef[_0xe3f2('0x37')]);_0x18ff39[_0xe3f2('0x3c')]=_[_0xe3f2('0x3a')](_0x6590ef[_0xe3f2('0x3b')],qs[_0xe3f2('0x3d')](_0x32343f[_0xe3f2('0x37')]['fields']));_0x18ff39[_0xe3f2('0x3c')]=_0x18ff39[_0xe3f2('0x3c')][_0xe3f2('0x3e')]?_0x18ff39[_0xe3f2('0x3c')]:_0x6590ef[_0xe3f2('0x3b')];_0x18ff39[_0xe3f2('0x5c')]=qs[_0xe3f2('0x41')](_0x32343f[_0xe3f2('0x37')]['sort']);_0x18ff39[_0xe3f2('0x42')]=qs[_0xe3f2('0x39')](_[_0xe3f2('0x5d')](_0x32343f[_0xe3f2('0x37')],_0x6590ef[_0xe3f2('0x39')]));if(_0x32343f['query']['filter']){_0x18ff39[_0xe3f2('0x42')]=_['merge'](_0x18ff39[_0xe3f2('0x42')],{'$or':_[_0xe3f2('0x31')](_0x18ff39['attributes'],function(_0x14a64f){var _0x23c353={};_0x23c353[_0x14a64f]={'$like':'%'+_0x32343f[_0xe3f2('0x37')][_0xe3f2('0x46')]+'%'};return _0x23c353;})});}_0x18ff39=_[_0xe3f2('0x43')]({},_0x18ff39,_0x32343f[_0xe3f2('0x47')]);return _0x340752[_0xe3f2('0x69')](_0x18ff39);}})[_0xe3f2('0x29')](function(_0xcc1d11){if(_0xcc1d11){_0x48c9e6=_0xcc1d11[_0xe3f2('0x3e')];if(!_0x32343f[_0xe3f2('0x37')][_0xe3f2('0x3f')](_0xe3f2('0x40'))){_0x18ff39['limit']=qs[_0xe3f2('0x22')](_0x32343f[_0xe3f2('0x37')][_0xe3f2('0x22')]);_0x18ff39[_0xe3f2('0x20')]=qs[_0xe3f2('0x20')](_0x32343f['query'][_0xe3f2('0x20')]);}return _0x340752[_0xe3f2('0x69')](_0x18ff39);}})[_0xe3f2('0x29')](function(_0xff8d44){if(_0xff8d44){return _0xff8d44?{'count':_0x48c9e6,'rows':_0xff8d44}:null;}})['then'](respondWithResult(_0x509271,null))[_0xe3f2('0x4b')](handleError(_0x509271,null));};exports['addTeams']=function(_0x1d09ad,_0x5f4ca4,_0xf335c2){var _0x5ac47d=_0x1d09ad['body'][_0xe3f2('0x6a')];return db['Team'][_0xe3f2('0x4a')]({'where':{'id':_0x5ac47d},'attributes':['id'],'include':[{'model':db[_0xe3f2('0x5f')],'as':'Agents','attributes':['id',_0xe3f2('0x36'),'online','voicePause',_0xe3f2('0x6b')],'raw':!![]}]})['then'](function(_0x15d461){if(_0x15d461){var _0x2dd2ca=_['flatMap'](_0x15d461,function(_0x2f2c78){var _0x4de51f=_0x2f2c78[_0xe3f2('0x2b')]({'plain':!![]});return _0x4de51f['Agents'];});return db['SmsQueue'][_0xe3f2('0x4d')]({'where':{'id':_0x1d09ad[_0xe3f2('0x58')]['id']}})[_0xe3f2('0x29')](function(_0x20c624){return db[_0xe3f2('0x6c')][_0xe3f2('0x6d')](function(_0x505b90){return _0x20c624['addTeams'](_0x5ac47d,{'transaction':_0x505b90})[_0xe3f2('0x29')](function(){return BPromise['each'](_0x2dd2ca,function(_0xd0bb8c){return db[_0xe3f2('0x5e')][_0xe3f2('0x6e')]({'where':{'UserId':_0xd0bb8c['id'],'SmsQueueId':_0x1d09ad[_0xe3f2('0x58')]['id']},'transaction':_0x505b90});});})[_0xe3f2('0x29')](function(){_0x2dd2ca[_0xe3f2('0x6f')](function(_0x1044b6){socket['emit'](_0xe3f2('0x70'),{'UserId':_0x1044b6['id'],'SmsQueueId':_0x20c624['id']});});});});});}})[_0xe3f2('0x29')](respondWithStatusCode(_0x5f4ca4,null))['catch'](handleError(_0x5f4ca4,null));};exports[_0xe3f2('0x71')]=function(_0x8dd99,_0x4263b4,_0xcef54c){return db[_0xe3f2('0x68')][_0xe3f2('0x4a')]({'where':{'id':_0x8dd99['query'][_0xe3f2('0x6a')]},'attributes':['id'],'include':[{'model':db[_0xe3f2('0x5f')],'as':_0xe3f2('0x72'),'attributes':['id'],'raw':!![]}]})[_0xe3f2('0x29')](handleEntityNotFound(_0x4263b4,null))['then'](function(_0xbf542c){var _0x2d5894=_['map'](_0xbf542c,'id');var _0x1b318b=[];var _0x48840e=[];var _0x48dfc0=squel[_0xe3f2('0x73')]();_0x48dfc0[_0xe3f2('0x74')](_0xe3f2('0x75'))[_0xe3f2('0x76')]('team_has_sms_queues','tq')[_0xe3f2('0x77')]('user_has_teams','ut',_0xe3f2('0x78'))['where'](_0xe3f2('0x79'),_0x8dd99[_0xe3f2('0x58')]['id']);for(var _0x3b516a=0x0;_0x3b516a<_0xbf542c['length'];_0x3b516a+=0x1){let _0x19a4a9=_0xbf542c[_0x3b516a];for(var _0x516cad=0x0;_0x516cad<_0x19a4a9[_0xe3f2('0x72')]['length'];_0x516cad+=0x1){let _0x1aad42=_0x19a4a9['Agents'][_0x516cad];var _0x4e7151=_0x48dfc0[_0xe3f2('0x7a')]();_0x4e7151[_0xe3f2('0x42')](_0xe3f2('0x7b'),_0x1aad42['id']);_0x48840e[_0xe3f2('0x7c')](db[_0xe3f2('0x6c')]['query'](_0x4e7151[_0xe3f2('0x7d')](),{'type':db[_0xe3f2('0x6c')][_0xe3f2('0x7e')][_0xe3f2('0x7f')]})[_0xe3f2('0x29')](function(_0x335536){if(_0x335536[_0xe3f2('0x3e')]===0x1){return _0x1aad42['id'];}else{var _0x478db1=_['every'](_[_0xe3f2('0x31')](_0x335536,_0xe3f2('0x80')),function(_0x7c6ad3){return _[_0xe3f2('0x81')](_0x2d5894,_0x7c6ad3);});if(_0x478db1){return _0x1aad42['id'];}}}));}}return BPromise[_0xe3f2('0x82')](_0x48840e)['then'](function(_0x46915d){_0x1b318b=_(_0x1b318b)[_0xe3f2('0x83')](_0x46915d)[_0xe3f2('0x84')]()[_0xe3f2('0x85')]();return db[_0xe3f2('0x32')][_0xe3f2('0x4d')]({'where':{'id':_0x8dd99[_0xe3f2('0x58')]['id']}})['then'](function(_0x54b114){return db[_0xe3f2('0x6c')][_0xe3f2('0x6d')](function(_0x4ac6a7){return _0x54b114[_0xe3f2('0x71')](_0x8dd99[_0xe3f2('0x37')][_0xe3f2('0x6a')],{'transaction':_0x4ac6a7})['then'](function(){if(!_[_0xe3f2('0x86')](_0x1b318b)){return _0x54b114[_0xe3f2('0x87')](_0x1b318b,{'transaction':_0x4ac6a7});}})['then'](function(){_0x1b318b[_0xe3f2('0x6f')](function(_0x303105){socket[_0xe3f2('0x88')](_0xe3f2('0x89'),{'UserId':_0x303105,'SmsQueueId':_0x54b114['id']});});});});});});})[_0xe3f2('0x29')](respondWithStatusCode(_0x4263b4,null))[_0xe3f2('0x4b')](handleError(_0x4263b4,null));};exports[_0xe3f2('0x8a')]=function(_0x31ca69,_0xc831f7,_0x1813ec){return db[_0xe3f2('0x32')][_0xe3f2('0x4d')]({'where':{'id':_0x31ca69['params']['id']}})[_0xe3f2('0x29')](handleEntityNotFound(_0xc831f7,null))[_0xe3f2('0x29')](function(_0x3025de){if(_0x3025de){return _0x3025de[_0xe3f2('0x8a')](_0x31ca69[_0xe3f2('0x4f')]['ids'],_[_0xe3f2('0x8b')](_0x31ca69[_0xe3f2('0x4f')],[_0xe3f2('0x6a'),'id'])||{})[_0xe3f2('0x8c')](function(_0x469243){for(var _0x2de286=0x0;_0x2de286<_0x31ca69['body'][_0xe3f2('0x6a')]['length'];_0x2de286+=0x1){socket[_0xe3f2('0x88')](_0xe3f2('0x70'),{'UserId':Number(_0x31ca69[_0xe3f2('0x4f')][_0xe3f2('0x6a')][_0x2de286]),'SmsQueueId':Number(_0x31ca69['params']['id'])});}return _0x469243;});}})['then'](respondWithResult(_0xc831f7,null))[_0xe3f2('0x4b')](handleError(_0xc831f7,null));};exports[_0xe3f2('0x87')]=function(_0x36cab4,_0x804cf6,_0x246c30){return db[_0xe3f2('0x32')]['find']({'where':{'id':_0x36cab4['params']['id']}})['then'](handleEntityNotFound(_0x804cf6,null))['then'](function(_0x4c5494){if(_0x4c5494){return _0x4c5494['removeAgents'](_0x36cab4[_0xe3f2('0x37')][_0xe3f2('0x6a')])[_0xe3f2('0x29')](function(){if(_[_0xe3f2('0x8d')](_0x36cab4[_0xe3f2('0x37')][_0xe3f2('0x6a')])){for(var _0xad130=0x0;_0xad130<_0x36cab4[_0xe3f2('0x37')][_0xe3f2('0x6a')][_0xe3f2('0x3e')];_0xad130+=0x1){socket['emit'](_0xe3f2('0x89'),{'UserId':Number(_0x36cab4[_0xe3f2('0x37')][_0xe3f2('0x6a')][_0xad130]),'SmsQueueId':Number(_0x36cab4[_0xe3f2('0x58')]['id'])});}}else{socket[_0xe3f2('0x88')](_0xe3f2('0x89'),{'UserId':Number(_0x36cab4['query']['ids']),'SmsQueueId':Number(_0x36cab4[_0xe3f2('0x58')]['id'])});}});}})[_0xe3f2('0x29')](respondWithStatusCode(_0x804cf6,null))[_0xe3f2('0x4b')](handleError(_0x804cf6,null));};exports['getAgents']=function(_0x5c0ea3,_0x20a81a,_0x3a714e){var _0x3ebf55={};var _0x1aecbe={};var _0x580da1;var _0x37fa68;return db[_0xe3f2('0x32')]['findOne']({'where':{'id':_0x5c0ea3[_0xe3f2('0x58')]['id']}})[_0xe3f2('0x29')](handleEntityNotFound(_0x20a81a,null))[_0xe3f2('0x29')](function(_0x1ffefd){if(_0x1ffefd){_0x580da1=_0x1ffefd;_0x1aecbe['model']=_['keys'](db[_0xe3f2('0x5f')][_0xe3f2('0x33')]);_0x1aecbe[_0xe3f2('0x37')]=_[_0xe3f2('0x38')](_0x5c0ea3[_0xe3f2('0x37')]);_0x1aecbe[_0xe3f2('0x39')]=_['intersection'](_0x1aecbe[_0xe3f2('0x3b')],_0x1aecbe['query']);_0x3ebf55[_0xe3f2('0x3c')]=_[_0xe3f2('0x3a')](_0x1aecbe['model'],qs[_0xe3f2('0x3d')](_0x5c0ea3[_0xe3f2('0x37')][_0xe3f2('0x3d')]));_0x3ebf55[_0xe3f2('0x3c')]=_0x3ebf55[_0xe3f2('0x3c')]['length']?_0x3ebf55[_0xe3f2('0x3c')]:_0x1aecbe[_0xe3f2('0x3b')];_0x3ebf55[_0xe3f2('0x5c')]=qs['sort'](_0x5c0ea3[_0xe3f2('0x37')][_0xe3f2('0x41')]);_0x3ebf55['where']=qs['filters'](_[_0xe3f2('0x5d')](_0x5c0ea3['query'],_0x1aecbe['filters']));if(_0x5c0ea3[_0xe3f2('0x37')][_0xe3f2('0x46')]){_0x3ebf55[_0xe3f2('0x42')]=_['merge'](_0x3ebf55[_0xe3f2('0x42')],{'$or':_[_0xe3f2('0x31')](_0x3ebf55[_0xe3f2('0x3c')],function(_0x1f6ecf){var _0x56bd8a={};_0x56bd8a[_0x1f6ecf]={'$like':'%'+_0x5c0ea3[_0xe3f2('0x37')][_0xe3f2('0x46')]+'%'};return _0x56bd8a;})});}_0x3ebf55=_[_0xe3f2('0x43')]({},_0x3ebf55,_0x5c0ea3[_0xe3f2('0x47')]);return _0x580da1[_0xe3f2('0x8e')](_0x3ebf55);}})[_0xe3f2('0x29')](function(_0x44ccb0){if(_0x44ccb0){_0x37fa68=_0x44ccb0['length'];if(!_0x5c0ea3[_0xe3f2('0x37')]['hasOwnProperty'](_0xe3f2('0x40'))){_0x3ebf55[_0xe3f2('0x22')]=qs[_0xe3f2('0x22')](_0x5c0ea3[_0xe3f2('0x37')]['limit']);_0x3ebf55[_0xe3f2('0x20')]=qs['offset'](_0x5c0ea3['query'][_0xe3f2('0x20')]);}return _0x580da1[_0xe3f2('0x8e')](_0x3ebf55);}})['then'](function(_0x4f99cd){if(_0x4f99cd){return _0x4f99cd?{'count':_0x37fa68,'rows':_0x4f99cd}:null;}})[_0xe3f2('0x29')](respondWithResult(_0x20a81a,null))[_0xe3f2('0x4b')](handleError(_0x20a81a,null));};
\ No newline at end of file
+var _0x9ad4=['index','map','fieldName','type','key','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','includeAll','SmsQueue','rows','show','params','rawAttributes','options','find','catch','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','nolimit','SmsQueueId','findAndCountAll','UserId','agent','smsPause','updatedAt','createdAt','%s/%s','SIP','getTeams','Team','addTeams','ids','Agents','online','interface','flatMap','sequelize','transaction','findOrCreate','forEach','emit','userSmsQueue:save','removeTeams','findAll','User','select','field','tq.TeamId','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','every','TeamId','includes','union','compact','value','isEmpty','removeAgents','userSmsQueue:remove','addAgents','spread','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','fs-extra','squel','crypto','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','redis','defaults','localhost','socket.io-emitter','./smsQueue.socket','register','status','end','offset','undefined','limit','count','Content-Range','apply','reject','update','then','SmsQueues','UserProfileResource','destroy','sendStatus','error','name','send'];(function(_0x2049c0,_0x56e173){var _0x32db9c=function(_0x58876a){while(--_0x58876a){_0x2049c0['push'](_0x2049c0['shift']());}};_0x32db9c(++_0x56e173);}(_0x9ad4,0x16a));var _0x49ad=function(_0x33d431,_0xf591fb){_0x33d431=_0x33d431-0x0;var _0xad1bc8=_0x9ad4[_0x33d431];return _0xad1bc8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x49ad('0x0'));var zipdir=require(_0x49ad('0x1'));var jsonpatch=require(_0x49ad('0x2'));var rp=require(_0x49ad('0x3'));var moment=require(_0x49ad('0x4'));var BPromise=require(_0x49ad('0x5'));var Mustache=require(_0x49ad('0x6'));var util=require(_0x49ad('0x7'));var path=require('path');var sox=require(_0x49ad('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x49ad('0x9'));var _=require('lodash');var squel=require(_0x49ad('0xa'));var crypto=require(_0x49ad('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x49ad('0xc'));var querystring=require(_0x49ad('0xd'));var Papa=require(_0x49ad('0xe'));var Redis=require(_0x49ad('0xf'));var authService=require(_0x49ad('0x10'));var qs=require(_0x49ad('0x11'));var as=require(_0x49ad('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x49ad('0x13')]=_[_0x49ad('0x14')](config['redis'],{'host':_0x49ad('0x15'),'port':0x18eb});var socket=require(_0x49ad('0x16'))(new Redis(config[_0x49ad('0x13')]));require(_0x49ad('0x17'))[_0x49ad('0x18')](socket);function respondWithStatusCode(_0x4659f3,_0x2db0fd){_0x2db0fd=_0x2db0fd||0xcc;return function(_0xe41d68){if(_0xe41d68){return _0x4659f3['sendStatus'](_0x2db0fd);}return _0x4659f3[_0x49ad('0x19')](_0x2db0fd)[_0x49ad('0x1a')]();};}function respondWithResult(_0xd23d6e,_0x9efe1c){_0x9efe1c=_0x9efe1c||0xc8;return function(_0x18b195){if(_0x18b195){return _0xd23d6e[_0x49ad('0x19')](_0x9efe1c)['json'](_0x18b195);}};}function respondWithFilteredResult(_0x5a4ddc,_0x40fa4b){return function(_0x2b64c2){if(_0x2b64c2){var _0x388bb4=typeof _0x40fa4b[_0x49ad('0x1b')]===_0x49ad('0x1c')&&typeof _0x40fa4b[_0x49ad('0x1d')]===_0x49ad('0x1c');var _0x4140a4=_0x2b64c2[_0x49ad('0x1e')];var _0x3c72bb=_0x388bb4?0x0:_0x40fa4b[_0x49ad('0x1b')];var _0x41851e=_0x388bb4?_0x2b64c2[_0x49ad('0x1e')]:_0x40fa4b[_0x49ad('0x1b')]+_0x40fa4b[_0x49ad('0x1d')];var _0x26c592;if(_0x41851e>=_0x4140a4){_0x41851e=_0x4140a4;_0x26c592=0xc8;}else{_0x26c592=0xce;}_0x5a4ddc[_0x49ad('0x19')](_0x26c592);return _0x5a4ddc['set'](_0x49ad('0x1f'),_0x3c72bb+'-'+_0x41851e+'/'+_0x4140a4)['json'](_0x2b64c2);}return null;};}function patchUpdates(_0x2c0de1){return function(_0x2828fe){try{jsonpatch[_0x49ad('0x20')](_0x2828fe,_0x2c0de1,!![]);}catch(_0x37f571){return BPromise[_0x49ad('0x21')](_0x37f571);}return _0x2828fe['save']();};}function saveUpdates(_0x36a80a,_0x8c2ba9){return function(_0x58da71){if(_0x58da71){return _0x58da71[_0x49ad('0x22')](_0x36a80a)[_0x49ad('0x23')](function(_0x116a76){return _0x116a76;});}return null;};}function removeEntity(_0x2d0c34,_0x4b751d){return function(_0x215647){if(_0x215647){return _0x215647['destroy']()[_0x49ad('0x23')](function(){var _0x38d020=_0x215647['get']({'plain':!![]});var _0x527350=_0x49ad('0x24');return db[_0x49ad('0x25')][_0x49ad('0x26')]({'where':{'type':_0x527350,'resourceId':_0x38d020['id']}})[_0x49ad('0x23')](function(){return _0x215647;});})['then'](function(){_0x2d0c34[_0x49ad('0x19')](0xcc)[_0x49ad('0x1a')]();});}};}function handleEntityNotFound(_0x468fbd,_0x3679dc){return function(_0x4d36ba){if(!_0x4d36ba){_0x468fbd[_0x49ad('0x27')](0x194);}return _0x4d36ba;};}function handleError(_0x2e1de4,_0x2b84cf){_0x2b84cf=_0x2b84cf||0x1f4;return function(_0x17ca7f){logger[_0x49ad('0x28')](_0x17ca7f['stack']);if(_0x17ca7f['name']){delete _0x17ca7f[_0x49ad('0x29')];}_0x2e1de4[_0x49ad('0x19')](_0x2b84cf)[_0x49ad('0x2a')](_0x17ca7f);};}exports[_0x49ad('0x2b')]=function(_0x2df134,_0x4630f2){var _0x265cff={},_0x77cf6={},_0x5868fc={'count':0x0,'rows':[]};var _0x3826e5=_[_0x49ad('0x2c')](db['SmsQueue']['rawAttributes'],function(_0x3349d1){return{'name':_0x3349d1[_0x49ad('0x2d')],'type':_0x3349d1[_0x49ad('0x2e')][_0x49ad('0x2f')]};});_0x77cf6[_0x49ad('0x30')]=_[_0x49ad('0x2c')](_0x3826e5,_0x49ad('0x29'));_0x77cf6['query']=_[_0x49ad('0x31')](_0x2df134[_0x49ad('0x32')]);_0x77cf6[_0x49ad('0x33')]=_[_0x49ad('0x34')](_0x77cf6[_0x49ad('0x30')],_0x77cf6['query']);_0x265cff['attributes']=_[_0x49ad('0x34')](_0x77cf6[_0x49ad('0x30')],qs['fields'](_0x2df134[_0x49ad('0x32')][_0x49ad('0x35')]));_0x265cff[_0x49ad('0x36')]=_0x265cff[_0x49ad('0x36')][_0x49ad('0x37')]?_0x265cff[_0x49ad('0x36')]:_0x77cf6[_0x49ad('0x30')];if(!_0x2df134[_0x49ad('0x32')][_0x49ad('0x38')]('nolimit')){_0x265cff[_0x49ad('0x1d')]=qs[_0x49ad('0x1d')](_0x2df134['query'][_0x49ad('0x1d')]);_0x265cff[_0x49ad('0x1b')]=qs['offset'](_0x2df134[_0x49ad('0x32')][_0x49ad('0x1b')]);}_0x265cff[_0x49ad('0x39')]=qs[_0x49ad('0x3a')](_0x2df134[_0x49ad('0x32')]['sort']);_0x265cff[_0x49ad('0x3b')]=qs['filters'](_[_0x49ad('0x3c')](_0x2df134['query'],_0x77cf6[_0x49ad('0x33')]),_0x3826e5);if(_0x2df134[_0x49ad('0x32')][_0x49ad('0x3d')]){_0x265cff[_0x49ad('0x3b')]=_['merge'](_0x265cff[_0x49ad('0x3b')],{'$or':_[_0x49ad('0x2c')](_0x3826e5,function(_0x2bf20c){if(_0x2bf20c[_0x49ad('0x2e')]!==_0x49ad('0x3e')){var _0x144c98={};_0x144c98[_0x2bf20c[_0x49ad('0x29')]]={'$like':'%'+_0x2df134[_0x49ad('0x32')][_0x49ad('0x3d')]+'%'};return _0x144c98;}})});}_0x265cff=_[_0x49ad('0x3f')]({},_0x265cff,_0x2df134['options']);var _0x20e2fd={'where':_0x265cff[_0x49ad('0x3b')]};return db['SmsQueue'][_0x49ad('0x1e')](_0x20e2fd)[_0x49ad('0x23')](function(_0x13d43b){_0x5868fc[_0x49ad('0x1e')]=_0x13d43b;if(_0x2df134[_0x49ad('0x32')][_0x49ad('0x40')]){_0x265cff['include']=[{'all':!![]}];}return db[_0x49ad('0x41')]['findAll'](_0x265cff);})[_0x49ad('0x23')](function(_0x159a30){_0x5868fc[_0x49ad('0x42')]=_0x159a30;return _0x5868fc;})[_0x49ad('0x23')](respondWithFilteredResult(_0x4630f2,_0x265cff))['catch'](handleError(_0x4630f2,null));};exports[_0x49ad('0x43')]=function(_0x4f98ec,_0x5d964f){var _0x5a66c3={'raw':!![],'where':{'id':_0x4f98ec[_0x49ad('0x44')]['id']}},_0x5538f3={};_0x5538f3[_0x49ad('0x30')]=_[_0x49ad('0x31')](db[_0x49ad('0x41')][_0x49ad('0x45')]);_0x5538f3[_0x49ad('0x32')]=_[_0x49ad('0x31')](_0x4f98ec[_0x49ad('0x32')]);_0x5538f3[_0x49ad('0x33')]=_[_0x49ad('0x34')](_0x5538f3[_0x49ad('0x30')],_0x5538f3[_0x49ad('0x32')]);_0x5a66c3[_0x49ad('0x36')]=_[_0x49ad('0x34')](_0x5538f3[_0x49ad('0x30')],qs[_0x49ad('0x35')](_0x4f98ec[_0x49ad('0x32')][_0x49ad('0x35')]));_0x5a66c3[_0x49ad('0x36')]=_0x5a66c3[_0x49ad('0x36')][_0x49ad('0x37')]?_0x5a66c3[_0x49ad('0x36')]:_0x5538f3[_0x49ad('0x30')];if(_0x4f98ec[_0x49ad('0x32')][_0x49ad('0x40')]){_0x5a66c3['include']=[{'all':!![]}];}_0x5a66c3=_[_0x49ad('0x3f')]({},_0x5a66c3,_0x4f98ec[_0x49ad('0x46')]);return db[_0x49ad('0x41')][_0x49ad('0x47')](_0x5a66c3)[_0x49ad('0x23')](handleEntityNotFound(_0x5d964f,null))[_0x49ad('0x23')](respondWithResult(_0x5d964f,null))[_0x49ad('0x48')](handleError(_0x5d964f,null));};exports[_0x49ad('0x49')]=function(_0x61dcd4,_0x4e5a2c){return db['SmsQueue'][_0x49ad('0x49')](_0x61dcd4[_0x49ad('0x4a')],{})[_0x49ad('0x23')](function(_0x4b4e17){var _0xc1d8e4=_0x61dcd4[_0x49ad('0x4b')][_0x49ad('0x4c')]({'plain':!![]});if(!_0xc1d8e4)throw new Error(_0x49ad('0x4d'));if(_0xc1d8e4['role']===_0x49ad('0x4b')){var _0x166153=_0x4b4e17[_0x49ad('0x4c')]({'plain':!![]});var _0x161ee0='SmsQueues';return db[_0x49ad('0x4e')][_0x49ad('0x47')]({'where':{'name':_0x161ee0,'userProfileId':_0xc1d8e4[_0x49ad('0x4f')]},'raw':!![]})[_0x49ad('0x23')](function(_0x52e195){if(_0x52e195&&_0x52e195[_0x49ad('0x50')]===0x0){return db[_0x49ad('0x25')]['create']({'name':_0x166153[_0x49ad('0x29')],'resourceId':_0x166153['id'],'type':_0x52e195[_0x49ad('0x29')],'sectionId':_0x52e195['id']},{})[_0x49ad('0x23')](function(){return _0x4b4e17;});}else{return _0x4b4e17;}})['catch'](function(_0x30a824){logger[_0x49ad('0x28')](_0x49ad('0x51'),_0x30a824);throw _0x30a824;});}return _0x4b4e17;})[_0x49ad('0x23')](respondWithResult(_0x4e5a2c,0xc9))['catch'](handleError(_0x4e5a2c,null));};exports['update']=function(_0x1d673e,_0x223517){if(_0x1d673e[_0x49ad('0x4a')]['id']){delete _0x1d673e[_0x49ad('0x4a')]['id'];}return db[_0x49ad('0x41')][_0x49ad('0x47')]({'where':{'id':_0x1d673e[_0x49ad('0x44')]['id']}})[_0x49ad('0x23')](handleEntityNotFound(_0x223517,null))[_0x49ad('0x23')](saveUpdates(_0x1d673e['body'],null))[_0x49ad('0x23')](respondWithResult(_0x223517,null))[_0x49ad('0x48')](handleError(_0x223517,null));};exports[_0x49ad('0x26')]=function(_0x3e3dfa,_0x4c5fe8){return db[_0x49ad('0x41')][_0x49ad('0x47')]({'where':{'id':_0x3e3dfa[_0x49ad('0x44')]['id']}})[_0x49ad('0x23')](handleEntityNotFound(_0x4c5fe8,null))[_0x49ad('0x23')](removeEntity(_0x4c5fe8,null))[_0x49ad('0x48')](handleError(_0x4c5fe8,null));};exports[_0x49ad('0x52')]=function(_0x453bc5,_0x5ec5dd){return db[_0x49ad('0x41')][_0x49ad('0x52')]()[_0x49ad('0x23')](respondWithResult(_0x5ec5dd,null))[_0x49ad('0x48')](handleError(_0x5ec5dd,null));};exports[_0x49ad('0x53')]=function(_0x5ae806,_0x1bc3cf,_0x30f566){var _0x410f12={'raw':!![],'where':{}},_0xe8c215={},_0x563182;return db[_0x49ad('0x41')][_0x49ad('0x54')]({'where':{'id':_0x5ae806[_0x49ad('0x44')]['id']}})[_0x49ad('0x23')](handleEntityNotFound(_0x1bc3cf,null))[_0x49ad('0x23')](function(_0x49a99c){if(_0x49a99c){_0x563182=_0x49a99c[_0x49ad('0x4c')]({'plain':!![]});_0xe8c215['model']=_['keys'](db['UserSmsQueue']['rawAttributes']);_0xe8c215[_0x49ad('0x32')]=_[_0x49ad('0x31')](_0x5ae806[_0x49ad('0x32')]);_0xe8c215[_0x49ad('0x33')]=_[_0x49ad('0x34')](_0xe8c215['model'],_0xe8c215[_0x49ad('0x32')]);_0x410f12['attributes']=_[_0x49ad('0x34')](_0xe8c215['model'],qs[_0x49ad('0x35')](_0x5ae806[_0x49ad('0x32')][_0x49ad('0x35')]));_0x410f12[_0x49ad('0x36')]=_0x410f12[_0x49ad('0x36')]['length']?_0x410f12['attributes']:_0xe8c215[_0x49ad('0x30')];if(!_0x5ae806[_0x49ad('0x32')][_0x49ad('0x38')](_0x49ad('0x55'))){_0x410f12[_0x49ad('0x1d')]=qs[_0x49ad('0x1d')](_0x5ae806[_0x49ad('0x32')][_0x49ad('0x1d')]);_0x410f12['offset']=qs['offset'](_0x5ae806[_0x49ad('0x32')][_0x49ad('0x1b')]);}_0x410f12[_0x49ad('0x39')]=qs[_0x49ad('0x3a')](_0x5ae806[_0x49ad('0x32')][_0x49ad('0x3a')]);_0x410f12[_0x49ad('0x3b')]=qs[_0x49ad('0x33')](_['pick'](_0x5ae806[_0x49ad('0x32')],_0xe8c215[_0x49ad('0x33')]));_0x410f12[_0x49ad('0x3b')][_0x49ad('0x56')]=_0x49a99c['id'];if(_0x5ae806['query'][_0x49ad('0x3d')]){_0x410f12['where']=_[_0x49ad('0x3f')](_0x410f12[_0x49ad('0x3b')],{'$or':_[_0x49ad('0x2c')](_0x410f12[_0x49ad('0x36')],function(_0x3e82b7){var _0x50e99a={};_0x50e99a[_0x3e82b7]={'$like':'%'+_0x5ae806['query']['filter']+'%'};return _0x50e99a;})});}_0x410f12=_[_0x49ad('0x3f')]({},_0x410f12,_0x5ae806[_0x49ad('0x46')]);return db['UserSmsQueue']['findAll'](_0x410f12);}})[_0x49ad('0x23')](function(_0x2381aa){if(_0x2381aa){return db['User'][_0x49ad('0x57')]({'where':{'id':_[_0x49ad('0x2c')](_0x2381aa,_0x49ad('0x58')),'role':_0x49ad('0x59')},'attributes':['id','name',_0x49ad('0x5a'),_0x49ad('0x5b'),_0x49ad('0x5c')]});}})[_0x49ad('0x23')](function(_0x5a0fc9){if(_0x5a0fc9){return{'count':_0x5a0fc9[_0x49ad('0x1e')],'rows':_['map'](_0x5a0fc9[_0x49ad('0x42')],function(_0x23b8bd){return{'membername':_0x23b8bd['name'],'UserId':_0x23b8bd['id'],'queue_name':_0x563182['name'],'SmsQueueId':_0x563182['id'],'interface':util['format'](_0x49ad('0x5d'),_0x49ad('0x5e'),_0x23b8bd['name']),'penalty':0x0,'paused':_0x23b8bd[_0x49ad('0x5a')],'createdAt':_0x23b8bd[_0x49ad('0x5c')],'updatedAt':_0x23b8bd[_0x49ad('0x5b')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x49ad('0x23')](respondWithFilteredResult(_0x1bc3cf,_0x410f12))[_0x49ad('0x48')](handleError(_0x1bc3cf,null));};exports[_0x49ad('0x5f')]=function(_0x4bf0a3,_0x3b1346,_0x33686b){var _0x33c1c0={};var _0x26e451={};var _0x1ca6d3;var _0x1326e5;return db[_0x49ad('0x41')][_0x49ad('0x54')]({'where':{'id':_0x4bf0a3[_0x49ad('0x44')]['id']}})['then'](handleEntityNotFound(_0x3b1346,null))[_0x49ad('0x23')](function(_0x47179b){if(_0x47179b){_0x1ca6d3=_0x47179b;_0x26e451[_0x49ad('0x30')]=_[_0x49ad('0x31')](db[_0x49ad('0x60')]['rawAttributes']);_0x26e451['query']=_['keys'](_0x4bf0a3[_0x49ad('0x32')]);_0x26e451[_0x49ad('0x33')]=_['intersection'](_0x26e451[_0x49ad('0x30')],_0x26e451[_0x49ad('0x32')]);_0x33c1c0['attributes']=_['intersection'](_0x26e451['model'],qs['fields'](_0x4bf0a3[_0x49ad('0x32')][_0x49ad('0x35')]));_0x33c1c0['attributes']=_0x33c1c0['attributes'][_0x49ad('0x37')]?_0x33c1c0[_0x49ad('0x36')]:_0x26e451[_0x49ad('0x30')];_0x33c1c0[_0x49ad('0x39')]=qs[_0x49ad('0x3a')](_0x4bf0a3[_0x49ad('0x32')][_0x49ad('0x3a')]);_0x33c1c0[_0x49ad('0x3b')]=qs[_0x49ad('0x33')](_[_0x49ad('0x3c')](_0x4bf0a3[_0x49ad('0x32')],_0x26e451['filters']));if(_0x4bf0a3[_0x49ad('0x32')][_0x49ad('0x3d')]){_0x33c1c0[_0x49ad('0x3b')]=_[_0x49ad('0x3f')](_0x33c1c0[_0x49ad('0x3b')],{'$or':_[_0x49ad('0x2c')](_0x33c1c0['attributes'],function(_0x48a98c){var _0xca183a={};_0xca183a[_0x48a98c]={'$like':'%'+_0x4bf0a3['query'][_0x49ad('0x3d')]+'%'};return _0xca183a;})});}_0x33c1c0=_[_0x49ad('0x3f')]({},_0x33c1c0,_0x4bf0a3['options']);return _0x1ca6d3[_0x49ad('0x5f')](_0x33c1c0);}})['then'](function(_0x5471ee){if(_0x5471ee){_0x1326e5=_0x5471ee['length'];if(!_0x4bf0a3[_0x49ad('0x32')][_0x49ad('0x38')](_0x49ad('0x55'))){_0x33c1c0[_0x49ad('0x1d')]=qs['limit'](_0x4bf0a3['query'][_0x49ad('0x1d')]);_0x33c1c0[_0x49ad('0x1b')]=qs['offset'](_0x4bf0a3[_0x49ad('0x32')]['offset']);}return _0x1ca6d3[_0x49ad('0x5f')](_0x33c1c0);}})['then'](function(_0x149ca9){if(_0x149ca9){return _0x149ca9?{'count':_0x1326e5,'rows':_0x149ca9}:null;}})['then'](respondWithResult(_0x3b1346,null))[_0x49ad('0x48')](handleError(_0x3b1346,null));};exports[_0x49ad('0x61')]=function(_0x493383,_0x59f06e,_0x3f294e){var _0xc4591=_0x493383['body'][_0x49ad('0x62')];return db['Team']['findAll']({'where':{'id':_0xc4591},'attributes':['id'],'include':[{'model':db['User'],'as':_0x49ad('0x63'),'attributes':['id',_0x49ad('0x29'),_0x49ad('0x64'),'voicePause',_0x49ad('0x65')],'raw':!![]}]})[_0x49ad('0x23')](function(_0x2384d9){if(_0x2384d9){var _0x4e7057=_[_0x49ad('0x66')](_0x2384d9,function(_0x14258e){var _0x4cf84c=_0x14258e['get']({'plain':!![]});return _0x4cf84c[_0x49ad('0x63')];});return db[_0x49ad('0x41')][_0x49ad('0x47')]({'where':{'id':_0x493383[_0x49ad('0x44')]['id']}})[_0x49ad('0x23')](function(_0x37e946){return db[_0x49ad('0x67')][_0x49ad('0x68')](function(_0x398bbb){return _0x37e946['addTeams'](_0xc4591,{'transaction':_0x398bbb})[_0x49ad('0x23')](function(){return BPromise['each'](_0x4e7057,function(_0x46d9a7){return db['UserSmsQueue'][_0x49ad('0x69')]({'where':{'UserId':_0x46d9a7['id'],'SmsQueueId':_0x493383[_0x49ad('0x44')]['id']},'transaction':_0x398bbb});});})[_0x49ad('0x23')](function(){_0x4e7057[_0x49ad('0x6a')](function(_0x55e5cd){socket[_0x49ad('0x6b')](_0x49ad('0x6c'),{'UserId':_0x55e5cd['id'],'SmsQueueId':_0x37e946['id']});});});});});}})[_0x49ad('0x23')](respondWithStatusCode(_0x59f06e,null))['catch'](handleError(_0x59f06e,null));};exports[_0x49ad('0x6d')]=function(_0x4faf27,_0x106525,_0xc31d08){return db['Team'][_0x49ad('0x6e')]({'where':{'id':_0x4faf27[_0x49ad('0x32')]['ids']},'attributes':['id'],'include':[{'model':db[_0x49ad('0x6f')],'as':_0x49ad('0x63'),'attributes':['id'],'raw':!![]}]})[_0x49ad('0x23')](handleEntityNotFound(_0x106525,null))[_0x49ad('0x23')](function(_0x301fef){var _0x4ecb82=_[_0x49ad('0x2c')](_0x301fef,'id');var _0x5f3716=[];var _0x38dc86=[];var _0x3c878a=squel[_0x49ad('0x70')]();_0x3c878a[_0x49ad('0x71')](_0x49ad('0x72'))['from']('team_has_sms_queues','tq')[_0x49ad('0x73')](_0x49ad('0x74'),'ut',_0x49ad('0x75'))['where']('SmsQueueId\x20=\x20?',_0x4faf27[_0x49ad('0x44')]['id']);for(var _0x5a055b=0x0;_0x5a055b<_0x301fef[_0x49ad('0x37')];_0x5a055b+=0x1){let _0x1276d6=_0x301fef[_0x5a055b];for(var _0x255e0d=0x0;_0x255e0d<_0x1276d6[_0x49ad('0x63')]['length'];_0x255e0d+=0x1){let _0x3b6ee7=_0x1276d6['Agents'][_0x255e0d];var _0x354070=_0x3c878a[_0x49ad('0x76')]();_0x354070['where'](_0x49ad('0x77'),_0x3b6ee7['id']);_0x38dc86['push'](db['sequelize'][_0x49ad('0x32')](_0x354070[_0x49ad('0x78')](),{'type':db[_0x49ad('0x67')][_0x49ad('0x79')][_0x49ad('0x7a')]})[_0x49ad('0x23')](function(_0x36a47a){if(_0x36a47a[_0x49ad('0x37')]===0x1){return _0x3b6ee7['id'];}else{var _0x33c03e=_[_0x49ad('0x7b')](_[_0x49ad('0x2c')](_0x36a47a,_0x49ad('0x7c')),function(_0x2399e6){return _[_0x49ad('0x7d')](_0x4ecb82,_0x2399e6);});if(_0x33c03e){return _0x3b6ee7['id'];}}}));}}return BPromise['all'](_0x38dc86)[_0x49ad('0x23')](function(_0x59df6a){_0x5f3716=_(_0x5f3716)[_0x49ad('0x7e')](_0x59df6a)[_0x49ad('0x7f')]()[_0x49ad('0x80')]();return db[_0x49ad('0x41')][_0x49ad('0x47')]({'where':{'id':_0x4faf27[_0x49ad('0x44')]['id']}})[_0x49ad('0x23')](function(_0x2366c5){return db[_0x49ad('0x67')][_0x49ad('0x68')](function(_0x205a0e){return _0x2366c5[_0x49ad('0x6d')](_0x4faf27[_0x49ad('0x32')][_0x49ad('0x62')],{'transaction':_0x205a0e})[_0x49ad('0x23')](function(){if(!_[_0x49ad('0x81')](_0x5f3716)){return _0x2366c5[_0x49ad('0x82')](_0x5f3716,{'transaction':_0x205a0e});}})[_0x49ad('0x23')](function(){_0x5f3716[_0x49ad('0x6a')](function(_0x5a37f0){socket[_0x49ad('0x6b')](_0x49ad('0x83'),{'UserId':_0x5a37f0,'SmsQueueId':_0x2366c5['id']});});});});});});})['then'](respondWithStatusCode(_0x106525,null))[_0x49ad('0x48')](handleError(_0x106525,null));};exports[_0x49ad('0x84')]=function(_0x43872e,_0x55122e,_0x1911e6){return db[_0x49ad('0x41')][_0x49ad('0x47')]({'where':{'id':_0x43872e[_0x49ad('0x44')]['id']}})[_0x49ad('0x23')](handleEntityNotFound(_0x55122e,null))[_0x49ad('0x23')](function(_0x32e6c5){if(_0x32e6c5){return _0x32e6c5['addAgents'](_0x43872e['body'][_0x49ad('0x62')],_['omit'](_0x43872e['body'],[_0x49ad('0x62'),'id'])||{})[_0x49ad('0x85')](function(_0x457c92){for(var _0x4851d3=0x0;_0x4851d3<_0x43872e[_0x49ad('0x4a')][_0x49ad('0x62')][_0x49ad('0x37')];_0x4851d3+=0x1){socket['emit'](_0x49ad('0x6c'),{'UserId':Number(_0x43872e[_0x49ad('0x4a')][_0x49ad('0x62')][_0x4851d3]),'SmsQueueId':Number(_0x43872e['params']['id'])});}return _0x457c92;});}})[_0x49ad('0x23')](respondWithResult(_0x55122e,null))[_0x49ad('0x48')](handleError(_0x55122e,null));};exports[_0x49ad('0x82')]=function(_0x4a810a,_0x2569de,_0x3f44e2){return db[_0x49ad('0x41')][_0x49ad('0x47')]({'where':{'id':_0x4a810a['params']['id']}})[_0x49ad('0x23')](handleEntityNotFound(_0x2569de,null))[_0x49ad('0x23')](function(_0x57f7d6){if(_0x57f7d6){return _0x57f7d6[_0x49ad('0x82')](_0x4a810a[_0x49ad('0x32')][_0x49ad('0x62')])[_0x49ad('0x23')](function(){if(_['isArray'](_0x4a810a[_0x49ad('0x32')][_0x49ad('0x62')])){for(var _0xec3e29=0x0;_0xec3e29<_0x4a810a['query'][_0x49ad('0x62')][_0x49ad('0x37')];_0xec3e29+=0x1){socket[_0x49ad('0x6b')](_0x49ad('0x83'),{'UserId':Number(_0x4a810a[_0x49ad('0x32')][_0x49ad('0x62')][_0xec3e29]),'SmsQueueId':Number(_0x4a810a[_0x49ad('0x44')]['id'])});}}else{socket[_0x49ad('0x6b')](_0x49ad('0x83'),{'UserId':Number(_0x4a810a[_0x49ad('0x32')][_0x49ad('0x62')]),'SmsQueueId':Number(_0x4a810a[_0x49ad('0x44')]['id'])});}});}})[_0x49ad('0x23')](respondWithStatusCode(_0x2569de,null))[_0x49ad('0x48')](handleError(_0x2569de,null));};exports[_0x49ad('0x86')]=function(_0x20fa76,_0x3280af,_0x5199e1){var _0x14337f={};var _0x337853={};var _0x5a0b64;var _0x23cdb7;return db['SmsQueue'][_0x49ad('0x54')]({'where':{'id':_0x20fa76['params']['id']}})[_0x49ad('0x23')](handleEntityNotFound(_0x3280af,null))[_0x49ad('0x23')](function(_0x5581d5){if(_0x5581d5){_0x5a0b64=_0x5581d5;_0x337853[_0x49ad('0x30')]=_[_0x49ad('0x31')](db[_0x49ad('0x6f')][_0x49ad('0x45')]);_0x337853[_0x49ad('0x32')]=_[_0x49ad('0x31')](_0x20fa76['query']);_0x337853[_0x49ad('0x33')]=_[_0x49ad('0x34')](_0x337853[_0x49ad('0x30')],_0x337853[_0x49ad('0x32')]);_0x14337f[_0x49ad('0x36')]=_[_0x49ad('0x34')](_0x337853[_0x49ad('0x30')],qs[_0x49ad('0x35')](_0x20fa76[_0x49ad('0x32')][_0x49ad('0x35')]));_0x14337f[_0x49ad('0x36')]=_0x14337f[_0x49ad('0x36')][_0x49ad('0x37')]?_0x14337f[_0x49ad('0x36')]:_0x337853['model'];_0x14337f[_0x49ad('0x39')]=qs['sort'](_0x20fa76[_0x49ad('0x32')][_0x49ad('0x3a')]);_0x14337f[_0x49ad('0x3b')]=qs[_0x49ad('0x33')](_[_0x49ad('0x3c')](_0x20fa76[_0x49ad('0x32')],_0x337853[_0x49ad('0x33')]));if(_0x20fa76[_0x49ad('0x32')][_0x49ad('0x3d')]){_0x14337f[_0x49ad('0x3b')]=_['merge'](_0x14337f['where'],{'$or':_[_0x49ad('0x2c')](_0x14337f[_0x49ad('0x36')],function(_0x4f03a6){var _0x3dfeec={};_0x3dfeec[_0x4f03a6]={'$like':'%'+_0x20fa76[_0x49ad('0x32')][_0x49ad('0x3d')]+'%'};return _0x3dfeec;})});}_0x14337f=_[_0x49ad('0x3f')]({},_0x14337f,_0x20fa76[_0x49ad('0x46')]);return _0x5a0b64[_0x49ad('0x86')](_0x14337f);}})[_0x49ad('0x23')](function(_0x48cb21){if(_0x48cb21){_0x23cdb7=_0x48cb21['length'];if(!_0x20fa76[_0x49ad('0x32')][_0x49ad('0x38')]('nolimit')){_0x14337f[_0x49ad('0x1d')]=qs[_0x49ad('0x1d')](_0x20fa76['query'][_0x49ad('0x1d')]);_0x14337f[_0x49ad('0x1b')]=qs['offset'](_0x20fa76['query'][_0x49ad('0x1b')]);}return _0x5a0b64['getAgents'](_0x14337f);}})['then'](function(_0x5e097d){if(_0x5e097d){return _0x5e097d?{'count':_0x23cdb7,'rows':_0x5e097d}:null;}})[_0x49ad('0x23')](respondWithResult(_0x3280af,null))[_0x49ad('0x48')](handleError(_0x3280af,null));};
\ No newline at end of file
index 7ffb948..13b2e3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb972=['events','SmsQueue','setMaxListeners','save','remove','emit','hook','exports'];(function(_0x1d05a3,_0x125a86){var _0x48d934=function(_0x44f447){while(--_0x44f447){_0x1d05a3['push'](_0x1d05a3['shift']());}};_0x48d934(++_0x125a86);}(_0xb972,0x100));var _0x2b97=function(_0x3d8240,_0x2663d4){_0x3d8240=_0x3d8240-0x0;var _0x3d0372=_0xb972[_0x3d8240];return _0x3d0372;};'use strict';var EventEmitter=require(_0x2b97('0x0'));var SmsQueue=require('../../mysqldb')['db'][_0x2b97('0x1')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0x2b97('0x2')](0x0);var events={'afterCreate':_0x2b97('0x3'),'afterUpdate':'update','afterDestroy':_0x2b97('0x4')};function emitEvent(_0x1904b6){return function(_0x2a6d75,_0xa45428,_0x1d1d3e){SmsQueueEvents['emit'](_0x1904b6+':'+_0x2a6d75['id'],_0x2a6d75);SmsQueueEvents[_0x2b97('0x5')](_0x1904b6,_0x2a6d75);_0x1d1d3e(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsQueue[_0x2b97('0x6')](e,emitEvent(event));}}module[_0x2b97('0x7')]=SmsQueueEvents;
\ No newline at end of file
+var _0xf733=['setMaxListeners','save','remove','emit','hook','exports','events','../../mysqldb','SmsQueue'];(function(_0x591564,_0x50e154){var _0x915a26=function(_0x3ced93){while(--_0x3ced93){_0x591564['push'](_0x591564['shift']());}};_0x915a26(++_0x50e154);}(_0xf733,0x15c));var _0x3f73=function(_0x525798,_0x77a707){_0x525798=_0x525798-0x0;var _0x57da9a=_0xf733[_0x525798];return _0x57da9a;};'use strict';var EventEmitter=require(_0x3f73('0x0'));var SmsQueue=require(_0x3f73('0x1'))['db'][_0x3f73('0x2')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0x3f73('0x3')](0x0);var events={'afterCreate':_0x3f73('0x4'),'afterUpdate':'update','afterDestroy':_0x3f73('0x5')};function emitEvent(_0x534e1e){return function(_0x32581f,_0x389648,_0x3ac8da){SmsQueueEvents[_0x3f73('0x6')](_0x534e1e+':'+_0x32581f['id'],_0x32581f);SmsQueueEvents[_0x3f73('0x6')](_0x534e1e,_0x32581f);_0x3ac8da(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsQueue[_0x3f73('0x7')](e,emitEvent(event));}}module[_0x3f73('0x8')]=SmsQueueEvents;
\ No newline at end of file
index 43af70e..8ae8110 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07e0=['rimraf','../../config/environment','define','SmsQueue','sms_queues','util','../../config/logger','api','moment','bluebird','path'];(function(_0x56fcc7,_0x10723d){var _0x3b3db5=function(_0x458b39){while(--_0x458b39){_0x56fcc7['push'](_0x56fcc7['shift']());}};_0x3b3db5(++_0x10723d);}(_0x07e0,0xf7));var _0x007e=function(_0x28acd7,_0x2d7d6a){_0x28acd7=_0x28acd7-0x0;var _0x4fcc45=_0x07e0[_0x28acd7];return _0x4fcc45;};'use strict';var _=require('lodash');var util=require(_0x007e('0x0'));var logger=require(_0x007e('0x1'))(_0x007e('0x2'));var moment=require(_0x007e('0x3'));var BPromise=require(_0x007e('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x007e('0x5'));var rimraf=require(_0x007e('0x6'));var config=require(_0x007e('0x7'));var attributes=require('./smsQueue.attributes');module['exports']=function(_0x450f25,_0x288e94){return _0x450f25[_0x007e('0x8')](_0x007e('0x9'),attributes,{'tableName':_0x007e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7c57=['../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./smsQueue.attributes','exports','define','SmsQueue','util'];(function(_0x35ef1d,_0x574202){var _0xc40732=function(_0x11d538){while(--_0x11d538){_0x35ef1d['push'](_0x35ef1d['shift']());}};_0xc40732(++_0x574202);}(_0x7c57,0x1af));var _0x77c5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7c57[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x77c5('0x0'));var logger=require(_0x77c5('0x1'))(_0x77c5('0x2'));var moment=require(_0x77c5('0x3'));var BPromise=require(_0x77c5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x77c5('0x5'));var rimraf=require(_0x77c5('0x6'));var config=require(_0x77c5('0x7'));var attributes=require(_0x77c5('0x8'));module[_0x77c5('0x9')]=function(_0x3c4140,_0x331b0f){return _0x3c4140[_0x77c5('0xa')](_0x77c5('0xb'),attributes,{'tableName':'sms_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a9dd900..42a3e72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc781=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','redis','defaults','socket.io-emitter','./smsQueue.socket','register','request','then','info','SmsQueue,\x20%s,\x20%s','request\x20sent','debug','SmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','result','GetSmsQueue','SmsQueue','options','raw','where','attributes','limit','include','map','model','catch','ShowSmsQueue'];(function(_0x472e9b,_0x39189f){var _0x412bb5=function(_0x291443){while(--_0x291443){_0x472e9b['push'](_0x472e9b['shift']());}};_0x412bb5(++_0x39189f);}(_0xc781,0x118));var _0x1c78=function(_0xbb922,_0x4800c3){_0xbb922=_0xbb922-0x0;var _0x4c4542=_0xc781[_0xbb922];return _0x4c4542;};'use strict';var _=require(_0x1c78('0x0'));var util=require(_0x1c78('0x1'));var moment=require(_0x1c78('0x2'));var BPromise=require(_0x1c78('0x3'));var rs=require(_0x1c78('0x4'));var fs=require('fs');var Redis=require(_0x1c78('0x5'));var db=require(_0x1c78('0x6'))['db'];var utils=require(_0x1c78('0x7'));var logger=require(_0x1c78('0x8'))('rpc');var config=require('../../config/environment');var jayson=require(_0x1c78('0x9'));var client=jayson[_0x1c78('0xa')][_0x1c78('0xb')]({'port':0x232a});config[_0x1c78('0xc')]=_[_0x1c78('0xd')](config[_0x1c78('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x1c78('0xe'))(new Redis(config[_0x1c78('0xc')]));require(_0x1c78('0xf'))[_0x1c78('0x10')](socket);function respondWithRpcPromise(_0x2efe46,_0x2fee5b,_0x1bbe1f){return new BPromise(function(_0xd7cc4e,_0x55fe6a){return client[_0x1c78('0x11')](_0x2efe46,_0x1bbe1f)[_0x1c78('0x12')](function(_0xa48d0e){logger[_0x1c78('0x13')](_0x1c78('0x14'),_0x2fee5b,_0x1c78('0x15'));logger[_0x1c78('0x16')](_0x1c78('0x17'),_0x2fee5b,'request\x20sent',JSON[_0x1c78('0x18')](_0xa48d0e));if(_0xa48d0e['error']){if(_0xa48d0e['error']['code']===0x1f4){logger[_0x1c78('0x19')]('SmsQueue,\x20%s,\x20%s',_0x2fee5b,_0xa48d0e['error'][_0x1c78('0x1a')]);return _0x55fe6a(_0xa48d0e[_0x1c78('0x19')]['message']);}logger[_0x1c78('0x19')](_0x1c78('0x14'),_0x2fee5b,_0xa48d0e[_0x1c78('0x19')][_0x1c78('0x1a')]);return _0xd7cc4e(_0xa48d0e['error'][_0x1c78('0x1a')]);}else{logger[_0x1c78('0x13')](_0x1c78('0x14'),_0x2fee5b,'request\x20sent');_0xd7cc4e(_0xa48d0e[_0x1c78('0x1b')]['message']);}})['catch'](function(_0x2bc63c){logger[_0x1c78('0x19')](_0x1c78('0x14'),_0x2fee5b,_0x2bc63c);_0x55fe6a(_0x2bc63c);});});}exports[_0x1c78('0x1c')]=function(_0x4d9286){var _0x5e996f=this;return new Promise(function(_0x25cbc3,_0x3ab7c1){return db[_0x1c78('0x1d')]['findAll']({'raw':_0x4d9286[_0x1c78('0x1e')]?_0x4d9286[_0x1c78('0x1e')][_0x1c78('0x1f')]===undefined?!![]:![]:!![],'where':_0x4d9286[_0x1c78('0x1e')]?_0x4d9286[_0x1c78('0x1e')][_0x1c78('0x20')]||null:null,'attributes':_0x4d9286[_0x1c78('0x1e')]?_0x4d9286[_0x1c78('0x1e')][_0x1c78('0x21')]||null:null,'limit':_0x4d9286[_0x1c78('0x1e')]?_0x4d9286[_0x1c78('0x1e')][_0x1c78('0x22')]||null:null,'include':_0x4d9286[_0x1c78('0x1e')]?_0x4d9286[_0x1c78('0x1e')][_0x1c78('0x23')]?_[_0x1c78('0x24')](_0x4d9286[_0x1c78('0x1e')]['include'],function(_0x39da29){return{'model':db[_0x39da29[_0x1c78('0x25')]],'as':_0x39da29['as'],'attributes':_0x39da29[_0x1c78('0x21')],'include':_0x39da29[_0x1c78('0x23')]?_[_0x1c78('0x24')](_0x39da29[_0x1c78('0x23')],function(_0x7b9b1a){return{'model':db[_0x7b9b1a['model']],'as':_0x7b9b1a['as'],'attributes':_0x7b9b1a[_0x1c78('0x21')],'include':_0x7b9b1a[_0x1c78('0x23')]?_[_0x1c78('0x24')](_0x7b9b1a[_0x1c78('0x23')],function(_0x4c5fad){return{'model':db[_0x4c5fad[_0x1c78('0x25')]],'as':_0x4c5fad['as'],'attributes':_0x4c5fad[_0x1c78('0x21')]};}):[]};}):[]};}):[]:[]})[_0x1c78('0x12')](function(_0x1f7aa5){logger[_0x1c78('0x13')]('GetSmsQueue',_0x4d9286);logger['debug']('GetSmsQueue',_0x4d9286,JSON['stringify'](_0x1f7aa5));_0x25cbc3(_0x1f7aa5);})[_0x1c78('0x26')](function(_0x47faa3){logger[_0x1c78('0x19')]('GetSmsQueue',_0x47faa3[_0x1c78('0x1a')],_0x4d9286);_0x3ab7c1(_0x5e996f['error'](0x1f4,_0x47faa3[_0x1c78('0x1a')]));});});};exports['ShowSmsQueue']=function(_0x118e2d){var _0x50ef84=this;return new Promise(function(_0x2c73b2,_0x58742f){return db[_0x1c78('0x1d')]['find']({'raw':_0x118e2d[_0x1c78('0x1e')]?_0x118e2d[_0x1c78('0x1e')][_0x1c78('0x1f')]===undefined?!![]:![]:!![],'where':_0x118e2d[_0x1c78('0x1e')]?_0x118e2d[_0x1c78('0x1e')][_0x1c78('0x20')]||null:null,'attributes':_0x118e2d[_0x1c78('0x1e')]?_0x118e2d[_0x1c78('0x1e')][_0x1c78('0x21')]||null:null,'include':_0x118e2d['options']?_0x118e2d[_0x1c78('0x1e')][_0x1c78('0x23')]?_[_0x1c78('0x24')](_0x118e2d[_0x1c78('0x1e')]['include'],function(_0x1aec7a){return{'model':db[_0x1aec7a[_0x1c78('0x25')]],'as':_0x1aec7a['as'],'attributes':_0x1aec7a['attributes'],'include':_0x1aec7a[_0x1c78('0x23')]?_['map'](_0x1aec7a[_0x1c78('0x23')],function(_0x5745c8){return{'model':db[_0x5745c8[_0x1c78('0x25')]],'as':_0x5745c8['as'],'attributes':_0x5745c8[_0x1c78('0x21')],'include':_0x5745c8[_0x1c78('0x23')]?_[_0x1c78('0x24')](_0x5745c8[_0x1c78('0x23')],function(_0x375d21){return{'model':db[_0x375d21[_0x1c78('0x25')]],'as':_0x375d21['as'],'attributes':_0x375d21['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x6f6e2){logger[_0x1c78('0x13')](_0x1c78('0x27'),_0x118e2d);logger['debug']('ShowSmsQueue',_0x118e2d,JSON[_0x1c78('0x18')](_0x6f6e2));_0x2c73b2(_0x6f6e2);})[_0x1c78('0x26')](function(_0x3bb547){logger[_0x1c78('0x19')](_0x1c78('0x27'),_0x3bb547[_0x1c78('0x1a')],_0x118e2d);_0x58742f(_0x50ef84[_0x1c78('0x19')](0x1f4,_0x3bb547[_0x1c78('0x1a')]));});});};
\ No newline at end of file
+var _0x7431=['options','raw','where','attributes','include','map','model','ShowSmsQueue','find','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','./smsQueue.socket','then','info','debug','SmsQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','SmsQueue,\x20%s,\x20%s','message','result','catch','GetSmsQueue','SmsQueue'];(function(_0x44928e,_0x493d13){var _0x38e001=function(_0x535572){while(--_0x535572){_0x44928e['push'](_0x44928e['shift']());}};_0x38e001(++_0x493d13);}(_0x7431,0x1a0));var _0x1743=function(_0x3cdba4,_0x38853d){_0x3cdba4=_0x3cdba4-0x0;var _0x5b35bc=_0x7431[_0x3cdba4];return _0x5b35bc;};'use strict';var _=require('lodash');var util=require(_0x1743('0x0'));var moment=require(_0x1743('0x1'));var BPromise=require(_0x1743('0x2'));var rs=require(_0x1743('0x3'));var fs=require('fs');var Redis=require(_0x1743('0x4'));var db=require(_0x1743('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x1743('0x6'))(_0x1743('0x7'));var config=require(_0x1743('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x1743('0x9')][_0x1743('0xa')]({'port':0x232a});config[_0x1743('0xb')]=_[_0x1743('0xc')](config[_0x1743('0xb')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x1743('0xb')]));require(_0x1743('0xd'))['register'](socket);function respondWithRpcPromise(_0x29f2af,_0x1180ff,_0x57aa1f){return new BPromise(function(_0x466b07,_0x25c12b){return client['request'](_0x29f2af,_0x57aa1f)[_0x1743('0xe')](function(_0x5df94d){logger[_0x1743('0xf')]('SmsQueue,\x20%s,\x20%s',_0x1180ff,'request\x20sent');logger[_0x1743('0x10')](_0x1743('0x11'),_0x1180ff,_0x1743('0x12'),JSON[_0x1743('0x13')](_0x5df94d));if(_0x5df94d[_0x1743('0x14')]){if(_0x5df94d[_0x1743('0x14')][_0x1743('0x15')]===0x1f4){logger[_0x1743('0x14')](_0x1743('0x16'),_0x1180ff,_0x5df94d[_0x1743('0x14')][_0x1743('0x17')]);return _0x25c12b(_0x5df94d[_0x1743('0x14')]['message']);}logger['error'](_0x1743('0x16'),_0x1180ff,_0x5df94d['error'][_0x1743('0x17')]);return _0x466b07(_0x5df94d[_0x1743('0x14')][_0x1743('0x17')]);}else{logger[_0x1743('0xf')]('SmsQueue,\x20%s,\x20%s',_0x1180ff,_0x1743('0x12'));_0x466b07(_0x5df94d[_0x1743('0x18')][_0x1743('0x17')]);}})[_0x1743('0x19')](function(_0x363c3a){logger['error'](_0x1743('0x16'),_0x1180ff,_0x363c3a);_0x25c12b(_0x363c3a);});});}exports[_0x1743('0x1a')]=function(_0x5a8d77){var _0x2da4bd=this;return new Promise(function(_0x577557,_0x24956a){return db[_0x1743('0x1b')]['findAll']({'raw':_0x5a8d77[_0x1743('0x1c')]?_0x5a8d77[_0x1743('0x1c')][_0x1743('0x1d')]===undefined?!![]:![]:!![],'where':_0x5a8d77[_0x1743('0x1c')]?_0x5a8d77[_0x1743('0x1c')][_0x1743('0x1e')]||null:null,'attributes':_0x5a8d77[_0x1743('0x1c')]?_0x5a8d77[_0x1743('0x1c')][_0x1743('0x1f')]||null:null,'limit':_0x5a8d77[_0x1743('0x1c')]?_0x5a8d77[_0x1743('0x1c')]['limit']||null:null,'include':_0x5a8d77[_0x1743('0x1c')]?_0x5a8d77[_0x1743('0x1c')][_0x1743('0x20')]?_[_0x1743('0x21')](_0x5a8d77[_0x1743('0x1c')]['include'],function(_0x2ca430){return{'model':db[_0x2ca430[_0x1743('0x22')]],'as':_0x2ca430['as'],'attributes':_0x2ca430['attributes'],'include':_0x2ca430[_0x1743('0x20')]?_['map'](_0x2ca430[_0x1743('0x20')],function(_0x1d229c){return{'model':db[_0x1d229c['model']],'as':_0x1d229c['as'],'attributes':_0x1d229c[_0x1743('0x1f')],'include':_0x1d229c[_0x1743('0x20')]?_['map'](_0x1d229c[_0x1743('0x20')],function(_0x11f5e2){return{'model':db[_0x11f5e2[_0x1743('0x22')]],'as':_0x11f5e2['as'],'attributes':_0x11f5e2[_0x1743('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x1743('0xe')](function(_0x2af290){logger['info']('GetSmsQueue',_0x5a8d77);logger[_0x1743('0x10')](_0x1743('0x1a'),_0x5a8d77,JSON[_0x1743('0x13')](_0x2af290));_0x577557(_0x2af290);})[_0x1743('0x19')](function(_0x4ee59c){logger['error'](_0x1743('0x1a'),_0x4ee59c[_0x1743('0x17')],_0x5a8d77);_0x24956a(_0x2da4bd[_0x1743('0x14')](0x1f4,_0x4ee59c['message']));});});};exports[_0x1743('0x23')]=function(_0x1b8ea9){var _0x250e7c=this;return new Promise(function(_0x380906,_0x270bb0){return db[_0x1743('0x1b')][_0x1743('0x24')]({'raw':_0x1b8ea9[_0x1743('0x1c')]?_0x1b8ea9[_0x1743('0x1c')][_0x1743('0x1d')]===undefined?!![]:![]:!![],'where':_0x1b8ea9[_0x1743('0x1c')]?_0x1b8ea9[_0x1743('0x1c')][_0x1743('0x1e')]||null:null,'attributes':_0x1b8ea9[_0x1743('0x1c')]?_0x1b8ea9[_0x1743('0x1c')]['attributes']||null:null,'include':_0x1b8ea9[_0x1743('0x1c')]?_0x1b8ea9[_0x1743('0x1c')]['include']?_[_0x1743('0x21')](_0x1b8ea9[_0x1743('0x1c')][_0x1743('0x20')],function(_0x43e8e7){return{'model':db[_0x43e8e7[_0x1743('0x22')]],'as':_0x43e8e7['as'],'attributes':_0x43e8e7[_0x1743('0x1f')],'include':_0x43e8e7['include']?_[_0x1743('0x21')](_0x43e8e7['include'],function(_0x2e83f9){return{'model':db[_0x2e83f9[_0x1743('0x22')]],'as':_0x2e83f9['as'],'attributes':_0x2e83f9[_0x1743('0x1f')],'include':_0x2e83f9[_0x1743('0x20')]?_['map'](_0x2e83f9['include'],function(_0x41017f){return{'model':db[_0x41017f[_0x1743('0x22')]],'as':_0x41017f['as'],'attributes':_0x41017f[_0x1743('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x122641){logger[_0x1743('0xf')](_0x1743('0x23'),_0x1b8ea9);logger['debug'](_0x1743('0x23'),_0x1b8ea9,JSON['stringify'](_0x122641));_0x380906(_0x122641);})[_0x1743('0x19')](function(_0x525eca){logger[_0x1743('0x14')](_0x1743('0x23'),_0x525eca[_0x1743('0x17')],_0x1b8ea9);_0x270bb0(_0x250e7c[_0x1743('0x14')](0x1f4,_0x525eca['message']));});});};
\ No newline at end of file
index 745355c..26e2640 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81cb=['smsQueue:','./smsQueue.events','save','remove','update','emit','removeListener','register'];(function(_0x274dd7,_0x2e6051){var _0x148829=function(_0x4cec98){while(--_0x4cec98){_0x274dd7['push'](_0x274dd7['shift']());}};_0x148829(++_0x2e6051);}(_0x81cb,0x1d9));var _0xb81c=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x81cb[_0x14add3];return _0x4a174f;};'use strict';var SmsQueueEvents=require(_0xb81c('0x0'));var events=[_0xb81c('0x1'),_0xb81c('0x2'),_0xb81c('0x3')];function createListener(_0x187c05,_0x174229){return function(_0x2cb796){_0x174229[_0xb81c('0x4')](_0x187c05,_0x2cb796);};}function removeListener(_0x329285,_0x509471){return function(){SmsQueueEvents[_0xb81c('0x5')](_0x329285,_0x509471);};}exports[_0xb81c('0x6')]=function(_0xbdfd16){for(var _0x2caa3a=0x0,_0x66f70a=events['length'];_0x2caa3a<_0x66f70a;_0x2caa3a++){var _0x28f9b4=events[_0x2caa3a];var _0x2aa38f=createListener(_0xb81c('0x7')+_0x28f9b4,_0xbdfd16);SmsQueueEvents['on'](_0x28f9b4,_0x2aa38f);}};
\ No newline at end of file
+var _0xc354=['length','smsQueue:','./smsQueue.events','save','emit','removeListener','register'];(function(_0xefd519,_0xc62635){var _0x4bb882=function(_0x37e0a1){while(--_0x37e0a1){_0xefd519['push'](_0xefd519['shift']());}};_0x4bb882(++_0xc62635);}(_0xc354,0x14b));var _0x4c35=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xc354[_0x14add3];return _0x4a174f;};'use strict';var SmsQueueEvents=require(_0x4c35('0x0'));var events=[_0x4c35('0x1'),'remove','update'];function createListener(_0x201896,_0x344c36){return function(_0x202b57){_0x344c36[_0x4c35('0x2')](_0x201896,_0x202b57);};}function removeListener(_0x5a6aa9,_0x30292a){return function(){SmsQueueEvents[_0x4c35('0x3')](_0x5a6aa9,_0x30292a);};}exports[_0x4c35('0x4')]=function(_0x512fc3){for(var _0x2585c2=0x0,_0x53df4e=events[_0x4c35('0x5')];_0x2585c2<_0x53df4e;_0x2585c2++){var _0x5b1d85=events[_0x2585c2];var _0x39db6c=createListener(_0x4c35('0x6')+_0x5b1d85,_0x512fc3);SmsQueueEvents['on'](_0x5b1d85,_0x39db6c);}};
\ No newline at end of file
index 921e38b..5e940bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb833=['../../config/environment','./smsQueueReport.controller','get','index','/describe','isAuthenticated','describe','post','create','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x2c87a2,_0x519155){var _0x2b1f02=function(_0x490217){while(--_0x490217){_0x2c87a2['push'](_0x2c87a2['shift']());}};_0x2b1f02(++_0x519155);}(_0xb833,0x168));var _0x3b83=function(_0x32141c,_0x3ad11a){_0x32141c=_0x32141c-0x0;var _0x319b68=_0xb833[_0x32141c];return _0x319b68;};'use strict';var multer=require(_0x3b83('0x0'));var util=require(_0x3b83('0x1'));var path=require(_0x3b83('0x2'));var timeout=require(_0x3b83('0x3'));var express=require(_0x3b83('0x4'));var router=express[_0x3b83('0x5')]();var fs_extra=require(_0x3b83('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x3b83('0x7'));var config=require(_0x3b83('0x8'));var controller=require(_0x3b83('0x9'));router[_0x3b83('0xa')]('/',auth['isAuthenticated'](),controller[_0x3b83('0xb')]);router['get'](_0x3b83('0xc'),auth[_0x3b83('0xd')](),controller[_0x3b83('0xe')]);router[_0x3b83('0xa')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x3b83('0xf')]('/',auth[_0x3b83('0xd')](),controller[_0x3b83('0x10')]);router[_0x3b83('0x11')](_0x3b83('0x12'),auth['isAuthenticated'](),controller[_0x3b83('0x13')]);router[_0x3b83('0x14')](_0x3b83('0x12'),auth[_0x3b83('0xd')](),controller[_0x3b83('0x15')]);module[_0x3b83('0x16')]=router;
\ No newline at end of file
+var _0x58f4=['../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueueReport.controller','get','isAuthenticated','describe','show','post','create','put','/:id','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x4a747d,_0x3b747f){var _0x3a5b5c=function(_0x4b3e81){while(--_0x4b3e81){_0x4a747d['push'](_0x4a747d['shift']());}};_0x3a5b5c(++_0x3b747f);}(_0x58f4,0x1b2));var _0x458f=function(_0x80dc3f,_0x41558d){_0x80dc3f=_0x80dc3f-0x0;var _0x2f64ab=_0x58f4[_0x80dc3f];return _0x2f64ab;};'use strict';var multer=require('multer');var util=require(_0x458f('0x0'));var path=require(_0x458f('0x1'));var timeout=require(_0x458f('0x2'));var express=require(_0x458f('0x3'));var router=express[_0x458f('0x4')]();var fs_extra=require(_0x458f('0x5'));var auth=require(_0x458f('0x6'));var interaction=require(_0x458f('0x7'));var config=require(_0x458f('0x8'));var controller=require(_0x458f('0x9'));router[_0x458f('0xa')]('/',auth[_0x458f('0xb')](),controller['index']);router['get']('/describe',auth['isAuthenticated'](),controller[_0x458f('0xc')]);router[_0x458f('0xa')]('/:id',auth[_0x458f('0xb')](),controller[_0x458f('0xd')]);router[_0x458f('0xe')]('/',auth[_0x458f('0xb')](),controller[_0x458f('0xf')]);router[_0x458f('0x10')](_0x458f('0x11'),auth['isAuthenticated'](),controller[_0x458f('0x12')]);router[_0x458f('0x13')](_0x458f('0x11'),auth[_0x458f('0xb')](),controller[_0x458f('0x14')]);module[_0x458f('0x15')]=router;
\ No newline at end of file
index 19734bf..25aa90f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80aa=['STRING','DATE','moment','sequelize','exports'];(function(_0x491d50,_0x4103b9){var _0x411b44=function(_0x9e2c24){while(--_0x9e2c24){_0x491d50['push'](_0x491d50['shift']());}};_0x411b44(++_0x4103b9);}(_0x80aa,0xb1));var _0xa80a=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x80aa[_0x14add3];return _0x4a174f;};'use strict';var moment=require(_0xa80a('0x0'));var Sequelize=require(_0xa80a('0x1'));module[_0xa80a('0x2')]={'uniqueid':{'type':Sequelize[_0xa80a('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0xa80a('0x3')]},'joinAt':{'type':Sequelize[_0xa80a('0x4')]},'leaveAt':{'type':Sequelize[_0xa80a('0x4')]},'acceptAt':{'type':Sequelize[_0xa80a('0x4')]},'exitAt':{'type':Sequelize[_0xa80a('0x4')]},'reason':{'type':Sequelize[_0xa80a('0x3')]}};
\ No newline at end of file
+var _0xb30b=['DATE','STRING'];(function(_0x272ec2,_0x1a2735){var _0x2af5eb=function(_0x19ff25){while(--_0x19ff25){_0x272ec2['push'](_0x272ec2['shift']());}};_0x2af5eb(++_0x1a2735);}(_0xb30b,0x181));var _0xbb30=function(_0x1c592e,_0x286a36){_0x1c592e=_0x1c592e-0x0;var _0x256c80=_0xb30b[_0x1c592e];return _0x256c80;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0xbb30('0x0')],'allowNull':![]},'from':{'type':Sequelize[_0xbb30('0x0')]},'joinAt':{'type':Sequelize[_0xbb30('0x1')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0xbb30('0x1')]},'exitAt':{'type':Sequelize[_0xbb30('0x1')]},'reason':{'type':Sequelize[_0xbb30('0x0')]}};
\ No newline at end of file
index 1f31f40..538930d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0cac=['../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','apply','reject','save','then','destroy','error','stack','name','index','map','SmsQueueReport','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','rawAttributes','includeAll','create','body','find','describe','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api'];(function(_0x45d456,_0x5ee6a4){var _0x1b3ce5=function(_0x46b6e2){while(--_0x46b6e2){_0x45d456['push'](_0x45d456['shift']());}};_0x1b3ce5(++_0x5ee6a4);}(_0x0cac,0x111));var _0xc0ca=function(_0x1146f7,_0x475356){_0x1146f7=_0x1146f7-0x0;var _0x2e5725=_0x0cac[_0x1146f7];return _0x2e5725;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc0ca('0x0'));var zipdir=require(_0xc0ca('0x1'));var jsonpatch=require(_0xc0ca('0x2'));var rp=require(_0xc0ca('0x3'));var moment=require('moment');var BPromise=require(_0xc0ca('0x4'));var Mustache=require('mustache');var util=require(_0xc0ca('0x5'));var path=require(_0xc0ca('0x6'));var sox=require(_0xc0ca('0x7'));var csv=require(_0xc0ca('0x8'));var ejs=require(_0xc0ca('0x9'));var fs=require('fs');var fs_extra=require(_0xc0ca('0xa'));var _=require(_0xc0ca('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xc0ca('0xc'));var deskjs=require(_0xc0ca('0xd'));var toCsv=require(_0xc0ca('0x8'));var querystring=require(_0xc0ca('0xe'));var Papa=require(_0xc0ca('0xf'));var Redis=require(_0xc0ca('0x10'));var authService=require(_0xc0ca('0x11'));var qs=require(_0xc0ca('0x12'));var as=require(_0xc0ca('0x13'));var hardwareService=require(_0xc0ca('0x14'));var logger=require(_0xc0ca('0x15'))(_0xc0ca('0x16'));var utils=require('../../config/utils');var config=require(_0xc0ca('0x17'));var licenseUtil=require(_0xc0ca('0x18'));var db=require(_0xc0ca('0x19'))['db'];function respondWithStatusCode(_0x3822c5,_0x4a3f40){_0x4a3f40=_0x4a3f40||0xcc;return function(_0x4076f8){if(_0x4076f8){return _0x3822c5['sendStatus'](_0x4a3f40);}return _0x3822c5[_0xc0ca('0x1a')](_0x4a3f40)[_0xc0ca('0x1b')]();};}function respondWithResult(_0x36c75f,_0x30ec1c){_0x30ec1c=_0x30ec1c||0xc8;return function(_0x5b0ab9){if(_0x5b0ab9){return _0x36c75f[_0xc0ca('0x1a')](_0x30ec1c)[_0xc0ca('0x1c')](_0x5b0ab9);}};}function respondWithFilteredResult(_0x3622e2,_0x4a777f){return function(_0x29095d){if(_0x29095d){var _0x21c5d0=typeof _0x4a777f[_0xc0ca('0x1d')]===_0xc0ca('0x1e')&&typeof _0x4a777f[_0xc0ca('0x1f')]===_0xc0ca('0x1e');var _0xaa5d9b=_0x29095d[_0xc0ca('0x20')];var _0x20fd2f=_0x21c5d0?0x0:_0x4a777f['offset'];var _0x1dd32f=_0x21c5d0?_0x29095d[_0xc0ca('0x20')]:_0x4a777f[_0xc0ca('0x1d')]+_0x4a777f[_0xc0ca('0x1f')];var _0x46869e;if(_0x1dd32f>=_0xaa5d9b){_0x1dd32f=_0xaa5d9b;_0x46869e=0xc8;}else{_0x46869e=0xce;}_0x3622e2[_0xc0ca('0x1a')](_0x46869e);return _0x3622e2['set']('Content-Range',_0x20fd2f+'-'+_0x1dd32f+'/'+_0xaa5d9b)[_0xc0ca('0x1c')](_0x29095d);}return null;};}function patchUpdates(_0x5ce1db){return function(_0x14f2b4){try{jsonpatch[_0xc0ca('0x21')](_0x14f2b4,_0x5ce1db,!![]);}catch(_0x4fe0a5){return BPromise[_0xc0ca('0x22')](_0x4fe0a5);}return _0x14f2b4[_0xc0ca('0x23')]();};}function saveUpdates(_0x4fb2ec,_0x3e8e43){return function(_0x47908c){if(_0x47908c){return _0x47908c['update'](_0x4fb2ec)[_0xc0ca('0x24')](function(_0x326bba){return _0x326bba;});}return null;};}function removeEntity(_0x35465b,_0x132490){return function(_0x542189){if(_0x542189){return _0x542189[_0xc0ca('0x25')]()[_0xc0ca('0x24')](function(){_0x35465b[_0xc0ca('0x1a')](0xcc)[_0xc0ca('0x1b')]();});}};}function handleEntityNotFound(_0x1a056a,_0x5adc9c){return function(_0x2d16a1){if(!_0x2d16a1){_0x1a056a['sendStatus'](0x194);}return _0x2d16a1;};}function handleError(_0xc206b2,_0x51f625){_0x51f625=_0x51f625||0x1f4;return function(_0x19eb19){logger[_0xc0ca('0x26')](_0x19eb19[_0xc0ca('0x27')]);if(_0x19eb19['name']){delete _0x19eb19[_0xc0ca('0x28')];}_0xc206b2[_0xc0ca('0x1a')](_0x51f625)['send'](_0x19eb19);};}exports[_0xc0ca('0x29')]=function(_0x208801,_0x1ca117){var _0x473a27={},_0x5098b2={},_0x284d52={'count':0x0,'rows':[]};var _0x42a0cc=_[_0xc0ca('0x2a')](db[_0xc0ca('0x2b')]['rawAttributes'],function(_0x1a662b){return{'name':_0x1a662b['fieldName'],'type':_0x1a662b[_0xc0ca('0x2c')][_0xc0ca('0x2d')]};});_0x5098b2[_0xc0ca('0x2e')]=_[_0xc0ca('0x2a')](_0x42a0cc,'name');_0x5098b2[_0xc0ca('0x2f')]=_[_0xc0ca('0x30')](_0x208801[_0xc0ca('0x2f')]);_0x5098b2[_0xc0ca('0x31')]=_[_0xc0ca('0x32')](_0x5098b2['model'],_0x5098b2[_0xc0ca('0x2f')]);_0x473a27[_0xc0ca('0x33')]=_['intersection'](_0x5098b2[_0xc0ca('0x2e')],qs['fields'](_0x208801['query'][_0xc0ca('0x34')]));_0x473a27[_0xc0ca('0x33')]=_0x473a27[_0xc0ca('0x33')]['length']?_0x473a27[_0xc0ca('0x33')]:_0x5098b2[_0xc0ca('0x2e')];if(!_0x208801[_0xc0ca('0x2f')][_0xc0ca('0x35')](_0xc0ca('0x36'))){_0x473a27[_0xc0ca('0x1f')]=qs['limit'](_0x208801[_0xc0ca('0x2f')][_0xc0ca('0x1f')]);_0x473a27[_0xc0ca('0x1d')]=qs[_0xc0ca('0x1d')](_0x208801[_0xc0ca('0x2f')][_0xc0ca('0x1d')]);}_0x473a27[_0xc0ca('0x37')]=qs[_0xc0ca('0x38')](_0x208801[_0xc0ca('0x2f')][_0xc0ca('0x38')]);_0x473a27[_0xc0ca('0x39')]=qs[_0xc0ca('0x31')](_['pick'](_0x208801[_0xc0ca('0x2f')],_0x5098b2[_0xc0ca('0x31')]),_0x42a0cc);if(_0x208801[_0xc0ca('0x2f')][_0xc0ca('0x3a')]){_0x473a27['where']=_[_0xc0ca('0x3b')](_0x473a27['where'],{'$or':_[_0xc0ca('0x2a')](_0x42a0cc,function(_0x378325){if(_0x378325[_0xc0ca('0x2c')]!==_0xc0ca('0x3c')){var _0x5e09db={};_0x5e09db[_0x378325[_0xc0ca('0x28')]]={'$like':'%'+_0x208801[_0xc0ca('0x2f')]['filter']+'%'};return _0x5e09db;}})});}_0x473a27=_[_0xc0ca('0x3b')]({},_0x473a27,_0x208801[_0xc0ca('0x3d')]);var _0x32fc1d={'where':_0x473a27[_0xc0ca('0x39')]};return db[_0xc0ca('0x2b')][_0xc0ca('0x20')](_0x32fc1d)[_0xc0ca('0x24')](function(_0x5780aa){_0x284d52[_0xc0ca('0x20')]=_0x5780aa;if(_0x208801[_0xc0ca('0x2f')]['includeAll']){_0x473a27[_0xc0ca('0x3e')]=[{'all':!![]}];}return db['SmsQueueReport'][_0xc0ca('0x3f')](_0x473a27);})[_0xc0ca('0x24')](function(_0x1d4e9b){_0x284d52[_0xc0ca('0x40')]=_0x1d4e9b;return _0x284d52;})[_0xc0ca('0x24')](respondWithFilteredResult(_0x1ca117,_0x473a27))[_0xc0ca('0x41')](handleError(_0x1ca117,null));};exports[_0xc0ca('0x42')]=function(_0x260fa8,_0x273573){var _0x4b4638={'raw':!![],'where':{'id':_0x260fa8[_0xc0ca('0x43')]['id']}},_0x125666={};_0x125666[_0xc0ca('0x2e')]=_['keys'](db[_0xc0ca('0x2b')][_0xc0ca('0x44')]);_0x125666[_0xc0ca('0x2f')]=_[_0xc0ca('0x30')](_0x260fa8['query']);_0x125666[_0xc0ca('0x31')]=_[_0xc0ca('0x32')](_0x125666[_0xc0ca('0x2e')],_0x125666[_0xc0ca('0x2f')]);_0x4b4638[_0xc0ca('0x33')]=_[_0xc0ca('0x32')](_0x125666[_0xc0ca('0x2e')],qs[_0xc0ca('0x34')](_0x260fa8[_0xc0ca('0x2f')][_0xc0ca('0x34')]));_0x4b4638[_0xc0ca('0x33')]=_0x4b4638[_0xc0ca('0x33')]['length']?_0x4b4638['attributes']:_0x125666[_0xc0ca('0x2e')];if(_0x260fa8[_0xc0ca('0x2f')][_0xc0ca('0x45')]){_0x4b4638['include']=[{'all':!![]}];}_0x4b4638=_[_0xc0ca('0x3b')]({},_0x4b4638,_0x260fa8[_0xc0ca('0x3d')]);return db[_0xc0ca('0x2b')]['find'](_0x4b4638)[_0xc0ca('0x24')](handleEntityNotFound(_0x273573,null))[_0xc0ca('0x24')](respondWithResult(_0x273573,null))['catch'](handleError(_0x273573,null));};exports[_0xc0ca('0x46')]=function(_0xa3db54,_0x2f1f90){return db[_0xc0ca('0x2b')][_0xc0ca('0x46')](_0xa3db54[_0xc0ca('0x47')],{})[_0xc0ca('0x24')](respondWithResult(_0x2f1f90,0xc9))[_0xc0ca('0x41')](handleError(_0x2f1f90,null));};exports['update']=function(_0x1b60c1,_0x20f354){if(_0x1b60c1[_0xc0ca('0x47')]['id']){delete _0x1b60c1[_0xc0ca('0x47')]['id'];}return db[_0xc0ca('0x2b')]['find']({'where':{'id':_0x1b60c1['params']['id']}})['then'](handleEntityNotFound(_0x20f354,null))[_0xc0ca('0x24')](saveUpdates(_0x1b60c1[_0xc0ca('0x47')],null))[_0xc0ca('0x24')](respondWithResult(_0x20f354,null))[_0xc0ca('0x41')](handleError(_0x20f354,null));};exports[_0xc0ca('0x25')]=function(_0x32f5d4,_0x5aada5){return db['SmsQueueReport'][_0xc0ca('0x48')]({'where':{'id':_0x32f5d4[_0xc0ca('0x43')]['id']}})[_0xc0ca('0x24')](handleEntityNotFound(_0x5aada5,null))[_0xc0ca('0x24')](removeEntity(_0x5aada5,null))[_0xc0ca('0x41')](handleError(_0x5aada5,null));};exports[_0xc0ca('0x49')]=function(_0x5f050a,_0x24bbe6){return db[_0xc0ca('0x2b')][_0xc0ca('0x49')]()[_0xc0ca('0x24')](respondWithResult(_0x24bbe6,null))[_0xc0ca('0x41')](handleError(_0x24bbe6,null));};
\ No newline at end of file
+var _0xd9e4=['name','send','map','SmsQueueReport','rawAttributes','type','key','model','query','intersection','attributes','fields','length','nolimit','limit','filters','where','merge','VIRTUAL','filter','options','include','rows','params','keys','includeAll','find','create','body','catch','describe','eml-format','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','set','Content-Range','reject','save','update','then','destroy','error','stack'];(function(_0x57cd47,_0x519a1c){var _0x149651=function(_0x433212){while(--_0x433212){_0x57cd47['push'](_0x57cd47['shift']());}};_0x149651(++_0x519a1c);}(_0xd9e4,0x18c));var _0x4d9e=function(_0x829616,_0x5d9318){_0x829616=_0x829616-0x0;var _0x35857a=_0xd9e4[_0x829616];return _0x35857a;};'use strict';var emlformat=require(_0x4d9e('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x4d9e('0x1'));var moment=require(_0x4d9e('0x2'));var BPromise=require(_0x4d9e('0x3'));var Mustache=require(_0x4d9e('0x4'));var util=require(_0x4d9e('0x5'));var path=require(_0x4d9e('0x6'));var sox=require(_0x4d9e('0x7'));var csv=require(_0x4d9e('0x8'));var ejs=require(_0x4d9e('0x9'));var fs=require('fs');var fs_extra=require(_0x4d9e('0xa'));var _=require(_0x4d9e('0xb'));var squel=require(_0x4d9e('0xc'));var crypto=require(_0x4d9e('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x4d9e('0xe'));var toCsv=require(_0x4d9e('0x8'));var querystring=require(_0x4d9e('0xf'));var Papa=require('papaparse');var Redis=require(_0x4d9e('0x10'));var authService=require(_0x4d9e('0x11'));var qs=require(_0x4d9e('0x12'));var as=require(_0x4d9e('0x13'));var hardwareService=require(_0x4d9e('0x14'));var logger=require('../../config/logger')(_0x4d9e('0x15'));var utils=require(_0x4d9e('0x16'));var config=require(_0x4d9e('0x17'));var licenseUtil=require(_0x4d9e('0x18'));var db=require(_0x4d9e('0x19'))['db'];function respondWithStatusCode(_0x3cfae7,_0x4ec8fc){_0x4ec8fc=_0x4ec8fc||0xcc;return function(_0x29e665){if(_0x29e665){return _0x3cfae7[_0x4d9e('0x1a')](_0x4ec8fc);}return _0x3cfae7[_0x4d9e('0x1b')](_0x4ec8fc)[_0x4d9e('0x1c')]();};}function respondWithResult(_0x352ecc,_0x2134b6){_0x2134b6=_0x2134b6||0xc8;return function(_0x5b8421){if(_0x5b8421){return _0x352ecc[_0x4d9e('0x1b')](_0x2134b6)[_0x4d9e('0x1d')](_0x5b8421);}};}function respondWithFilteredResult(_0x467b2f,_0x216ebc){return function(_0x56f712){if(_0x56f712){var _0x228a3f=typeof _0x216ebc['offset']===_0x4d9e('0x1e')&&typeof _0x216ebc['limit']==='undefined';var _0x3476a6=_0x56f712[_0x4d9e('0x1f')];var _0x248ae8=_0x228a3f?0x0:_0x216ebc[_0x4d9e('0x20')];var _0x28d724=_0x228a3f?_0x56f712[_0x4d9e('0x1f')]:_0x216ebc[_0x4d9e('0x20')]+_0x216ebc['limit'];var _0x20b29c;if(_0x28d724>=_0x3476a6){_0x28d724=_0x3476a6;_0x20b29c=0xc8;}else{_0x20b29c=0xce;}_0x467b2f[_0x4d9e('0x1b')](_0x20b29c);return _0x467b2f[_0x4d9e('0x21')](_0x4d9e('0x22'),_0x248ae8+'-'+_0x28d724+'/'+_0x3476a6)[_0x4d9e('0x1d')](_0x56f712);}return null;};}function patchUpdates(_0xf493b2){return function(_0x5633e0){try{jsonpatch['apply'](_0x5633e0,_0xf493b2,!![]);}catch(_0x1b1a55){return BPromise[_0x4d9e('0x23')](_0x1b1a55);}return _0x5633e0[_0x4d9e('0x24')]();};}function saveUpdates(_0x13e18f,_0x17cee6){return function(_0x865cc5){if(_0x865cc5){return _0x865cc5[_0x4d9e('0x25')](_0x13e18f)[_0x4d9e('0x26')](function(_0x28e047){return _0x28e047;});}return null;};}function removeEntity(_0x3e1a1a,_0x3b6c37){return function(_0x5c0d9c){if(_0x5c0d9c){return _0x5c0d9c[_0x4d9e('0x27')]()['then'](function(){_0x3e1a1a[_0x4d9e('0x1b')](0xcc)[_0x4d9e('0x1c')]();});}};}function handleEntityNotFound(_0x4774d6,_0x4463c5){return function(_0x2d7ae7){if(!_0x2d7ae7){_0x4774d6[_0x4d9e('0x1a')](0x194);}return _0x2d7ae7;};}function handleError(_0x46ee6c,_0x1163c1){_0x1163c1=_0x1163c1||0x1f4;return function(_0x89a725){logger[_0x4d9e('0x28')](_0x89a725[_0x4d9e('0x29')]);if(_0x89a725[_0x4d9e('0x2a')]){delete _0x89a725[_0x4d9e('0x2a')];}_0x46ee6c[_0x4d9e('0x1b')](_0x1163c1)[_0x4d9e('0x2b')](_0x89a725);};}exports['index']=function(_0xdb2335,_0x3cf970){var _0x238027={},_0x187ef7={},_0x26d0fe={'count':0x0,'rows':[]};var _0x5e2e74=_[_0x4d9e('0x2c')](db[_0x4d9e('0x2d')][_0x4d9e('0x2e')],function(_0x49ccee){return{'name':_0x49ccee['fieldName'],'type':_0x49ccee[_0x4d9e('0x2f')][_0x4d9e('0x30')]};});_0x187ef7[_0x4d9e('0x31')]=_[_0x4d9e('0x2c')](_0x5e2e74,_0x4d9e('0x2a'));_0x187ef7[_0x4d9e('0x32')]=_['keys'](_0xdb2335['query']);_0x187ef7['filters']=_[_0x4d9e('0x33')](_0x187ef7[_0x4d9e('0x31')],_0x187ef7[_0x4d9e('0x32')]);_0x238027[_0x4d9e('0x34')]=_[_0x4d9e('0x33')](_0x187ef7[_0x4d9e('0x31')],qs[_0x4d9e('0x35')](_0xdb2335[_0x4d9e('0x32')][_0x4d9e('0x35')]));_0x238027['attributes']=_0x238027[_0x4d9e('0x34')][_0x4d9e('0x36')]?_0x238027[_0x4d9e('0x34')]:_0x187ef7[_0x4d9e('0x31')];if(!_0xdb2335[_0x4d9e('0x32')]['hasOwnProperty'](_0x4d9e('0x37'))){_0x238027[_0x4d9e('0x38')]=qs[_0x4d9e('0x38')](_0xdb2335[_0x4d9e('0x32')][_0x4d9e('0x38')]);_0x238027[_0x4d9e('0x20')]=qs[_0x4d9e('0x20')](_0xdb2335[_0x4d9e('0x32')][_0x4d9e('0x20')]);}_0x238027['order']=qs['sort'](_0xdb2335['query']['sort']);_0x238027['where']=qs['filters'](_['pick'](_0xdb2335['query'],_0x187ef7[_0x4d9e('0x39')]),_0x5e2e74);if(_0xdb2335['query']['filter']){_0x238027[_0x4d9e('0x3a')]=_[_0x4d9e('0x3b')](_0x238027[_0x4d9e('0x3a')],{'$or':_['map'](_0x5e2e74,function(_0x572866){if(_0x572866['type']!==_0x4d9e('0x3c')){var _0x476ac7={};_0x476ac7[_0x572866[_0x4d9e('0x2a')]]={'$like':'%'+_0xdb2335[_0x4d9e('0x32')][_0x4d9e('0x3d')]+'%'};return _0x476ac7;}})});}_0x238027=_[_0x4d9e('0x3b')]({},_0x238027,_0xdb2335[_0x4d9e('0x3e')]);var _0x232d5d={'where':_0x238027['where']};return db[_0x4d9e('0x2d')]['count'](_0x232d5d)[_0x4d9e('0x26')](function(_0x49a88f){_0x26d0fe[_0x4d9e('0x1f')]=_0x49a88f;if(_0xdb2335[_0x4d9e('0x32')]['includeAll']){_0x238027[_0x4d9e('0x3f')]=[{'all':!![]}];}return db[_0x4d9e('0x2d')]['findAll'](_0x238027);})[_0x4d9e('0x26')](function(_0x298d4a){_0x26d0fe[_0x4d9e('0x40')]=_0x298d4a;return _0x26d0fe;})[_0x4d9e('0x26')](respondWithFilteredResult(_0x3cf970,_0x238027))['catch'](handleError(_0x3cf970,null));};exports['show']=function(_0x95e735,_0x505d02){var _0xe706e9={'raw':!![],'where':{'id':_0x95e735[_0x4d9e('0x41')]['id']}},_0x15967d={};_0x15967d[_0x4d9e('0x31')]=_[_0x4d9e('0x42')](db[_0x4d9e('0x2d')]['rawAttributes']);_0x15967d[_0x4d9e('0x32')]=_[_0x4d9e('0x42')](_0x95e735[_0x4d9e('0x32')]);_0x15967d['filters']=_[_0x4d9e('0x33')](_0x15967d[_0x4d9e('0x31')],_0x15967d[_0x4d9e('0x32')]);_0xe706e9['attributes']=_[_0x4d9e('0x33')](_0x15967d[_0x4d9e('0x31')],qs[_0x4d9e('0x35')](_0x95e735['query'][_0x4d9e('0x35')]));_0xe706e9[_0x4d9e('0x34')]=_0xe706e9[_0x4d9e('0x34')][_0x4d9e('0x36')]?_0xe706e9['attributes']:_0x15967d[_0x4d9e('0x31')];if(_0x95e735[_0x4d9e('0x32')][_0x4d9e('0x43')]){_0xe706e9['include']=[{'all':!![]}];}_0xe706e9=_[_0x4d9e('0x3b')]({},_0xe706e9,_0x95e735['options']);return db['SmsQueueReport'][_0x4d9e('0x44')](_0xe706e9)[_0x4d9e('0x26')](handleEntityNotFound(_0x505d02,null))[_0x4d9e('0x26')](respondWithResult(_0x505d02,null))['catch'](handleError(_0x505d02,null));};exports[_0x4d9e('0x45')]=function(_0x77ed6,_0x264faf){return db['SmsQueueReport'][_0x4d9e('0x45')](_0x77ed6[_0x4d9e('0x46')],{})[_0x4d9e('0x26')](respondWithResult(_0x264faf,0xc9))[_0x4d9e('0x47')](handleError(_0x264faf,null));};exports[_0x4d9e('0x25')]=function(_0xd2a9e3,_0x188136){if(_0xd2a9e3['body']['id']){delete _0xd2a9e3['body']['id'];}return db[_0x4d9e('0x2d')]['find']({'where':{'id':_0xd2a9e3[_0x4d9e('0x41')]['id']}})[_0x4d9e('0x26')](handleEntityNotFound(_0x188136,null))[_0x4d9e('0x26')](saveUpdates(_0xd2a9e3['body'],null))['then'](respondWithResult(_0x188136,null))[_0x4d9e('0x47')](handleError(_0x188136,null));};exports[_0x4d9e('0x27')]=function(_0x58f8ae,_0x2d2e96){return db[_0x4d9e('0x2d')]['find']({'where':{'id':_0x58f8ae[_0x4d9e('0x41')]['id']}})[_0x4d9e('0x26')](handleEntityNotFound(_0x2d2e96,null))[_0x4d9e('0x26')](removeEntity(_0x2d2e96,null))['catch'](handleError(_0x2d2e96,null));};exports['describe']=function(_0x50af74,_0x44c28a){return db[_0x4d9e('0x2d')][_0x4d9e('0x48')]()[_0x4d9e('0x26')](respondWithResult(_0x44c28a,null))[_0x4d9e('0x47')](handleError(_0x44c28a,null));};
\ No newline at end of file
index e029822..7b90221 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['define','SmsQueueReport','uniqueid','lodash','util','../../config/logger','bluebird','path','rimraf','../../config/environment','./smsQueueReport.attributes','exports'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0xa9e0[_0x110c3d];return _0x226d67;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'report_sms_queue','paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x0a9e('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb7e7=['../../config/logger','moment','request-promise','rimraf','../../config/environment','./smsQueueReport.attributes','define','SmsQueueReport','uniqueid','lodash'];(function(_0x3e2636,_0x48c6c7){var _0x34c957=function(_0x220682){while(--_0x220682){_0x3e2636['push'](_0x3e2636['shift']());}};_0x34c957(++_0x48c6c7);}(_0xb7e7,0x121));var _0x7b7e=function(_0x5d80de,_0x2cf15d){_0x5d80de=_0x5d80de-0x0;var _0x1c7556=_0xb7e7[_0x5d80de];return _0x1c7556;};'use strict';var _=require(_0x7b7e('0x0'));var util=require('util');var logger=require(_0x7b7e('0x1'))('api');var moment=require(_0x7b7e('0x2'));var BPromise=require('bluebird');var rp=require(_0x7b7e('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7b7e('0x4'));var config=require(_0x7b7e('0x5'));var attributes=require(_0x7b7e('0x6'));module['exports']=function(_0x53ed64,_0x333fa4){return _0x53ed64[_0x7b7e('0x7')](_0x7b7e('0x8'),attributes,{'tableName':'report_sms_queue','paranoid':![],'indexes':[{'name':_0x7b7e('0x9'),'fields':[_0x7b7e('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index d2f4014..9a542a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7ff=['../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','SmsQueueReport,\x20%s,\x20%s','request\x20sent','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','CreateSmsQueueReport','SmsQueueReport','create','options','raw','stringify','UpdateSmsQueueReport','update','body','where','attributes','limit','lodash','util','moment','randomstring','ioredis'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xd7ff,0xe9));var _0xfd7f=function(_0x5594d3,_0x42e704){_0x5594d3=_0x5594d3-0x0;var _0xf406f6=_0xd7ff[_0x5594d3];return _0xf406f6;};'use strict';var _=require(_0xfd7f('0x0'));var util=require(_0xfd7f('0x1'));var moment=require(_0xfd7f('0x2'));var BPromise=require('bluebird');var rs=require(_0xfd7f('0x3'));var fs=require('fs');var Redis=require(_0xfd7f('0x4'));var db=require(_0xfd7f('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xfd7f('0x6'))(_0xfd7f('0x7'));var config=require(_0xfd7f('0x8'));var jayson=require(_0xfd7f('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x359040,_0x4a173a,_0x10415e){return new BPromise(function(_0x571bd1,_0x5d3be2){return client[_0xfd7f('0xa')](_0x359040,_0x10415e)[_0xfd7f('0xb')](function(_0x3ed5ee){logger[_0xfd7f('0xc')](_0xfd7f('0xd'),_0x4a173a,_0xfd7f('0xe'));logger[_0xfd7f('0xf')](_0xfd7f('0x10'),_0x4a173a,_0xfd7f('0xe'),JSON['stringify'](_0x3ed5ee));if(_0x3ed5ee[_0xfd7f('0x11')]){if(_0x3ed5ee[_0xfd7f('0x11')][_0xfd7f('0x12')]===0x1f4){logger[_0xfd7f('0x11')](_0xfd7f('0xd'),_0x4a173a,_0x3ed5ee[_0xfd7f('0x11')]['message']);return _0x5d3be2(_0x3ed5ee[_0xfd7f('0x11')][_0xfd7f('0x13')]);}logger['error'](_0xfd7f('0xd'),_0x4a173a,_0x3ed5ee[_0xfd7f('0x11')][_0xfd7f('0x13')]);return _0x571bd1(_0x3ed5ee[_0xfd7f('0x11')]['message']);}else{logger[_0xfd7f('0xc')](_0xfd7f('0xd'),_0x4a173a,'request\x20sent');_0x571bd1(_0x3ed5ee[_0xfd7f('0x14')][_0xfd7f('0x13')]);}})[_0xfd7f('0x15')](function(_0x59fb60){logger[_0xfd7f('0x11')](_0xfd7f('0xd'),_0x4a173a,_0x59fb60);_0x5d3be2(_0x59fb60);});});}exports[_0xfd7f('0x16')]=function(_0x1673a1){var _0x4be4c2=this;return new Promise(function(_0xe155b1,_0x41f910){return db[_0xfd7f('0x17')][_0xfd7f('0x18')](_0x1673a1['body'],{'raw':_0x1673a1[_0xfd7f('0x19')]?_0x1673a1[_0xfd7f('0x19')][_0xfd7f('0x1a')]===undefined?!![]:![]:!![]})[_0xfd7f('0xb')](function(_0x2f55d7){logger[_0xfd7f('0xc')](_0xfd7f('0x16'),_0x1673a1);logger[_0xfd7f('0xf')](_0xfd7f('0x16'),_0x1673a1,JSON[_0xfd7f('0x1b')](_0x2f55d7));_0xe155b1(_0x2f55d7);})[_0xfd7f('0x15')](function(_0x40df14){logger[_0xfd7f('0x11')](_0xfd7f('0x16'),_0x40df14['message'],_0x1673a1);_0x41f910(_0x4be4c2[_0xfd7f('0x11')](0x1f4,_0x40df14[_0xfd7f('0x13')]));});});};exports[_0xfd7f('0x1c')]=function(_0x23d1c3){var _0x233ee8=this;return new Promise(function(_0x22427c,_0x6898ef){return db[_0xfd7f('0x17')][_0xfd7f('0x1d')](_0x23d1c3[_0xfd7f('0x1e')],{'raw':_0x23d1c3['options']?_0x23d1c3[_0xfd7f('0x19')][_0xfd7f('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x23d1c3[_0xfd7f('0x19')]?_0x23d1c3[_0xfd7f('0x19')][_0xfd7f('0x1f')]||null:null,'attributes':_0x23d1c3[_0xfd7f('0x19')]?_0x23d1c3[_0xfd7f('0x19')][_0xfd7f('0x20')]||null:null,'limit':_0x23d1c3[_0xfd7f('0x19')]?_0x23d1c3[_0xfd7f('0x19')][_0xfd7f('0x21')]||null:null})[_0xfd7f('0xb')](function(_0x5e35ba){logger[_0xfd7f('0xc')](_0xfd7f('0x1c'),_0x23d1c3);logger['debug'](_0xfd7f('0x1c'),_0x23d1c3,JSON[_0xfd7f('0x1b')](_0x5e35ba));_0x22427c(_0x5e35ba);})['catch'](function(_0x2e51c5){logger[_0xfd7f('0x11')](_0xfd7f('0x1c'),_0x2e51c5[_0xfd7f('0x13')],_0x23d1c3);_0x6898ef(_0x233ee8[_0xfd7f('0x11')](0x1f4,_0x2e51c5['message']));});});};
\ No newline at end of file
+var _0xbfbd=['SmsQueueReport','create','options','stringify','catch','UpdateSmsQueueReport','update','body','raw','where','attributes','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','then','request\x20sent','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','error','code','SmsQueueReport,\x20%s,\x20%s','message','info','result','CreateSmsQueueReport'];(function(_0x1d6958,_0x2b071c){var _0x59e071=function(_0x2cdbac){while(--_0x2cdbac){_0x1d6958['push'](_0x1d6958['shift']());}};_0x59e071(++_0x2b071c);}(_0xbfbd,0x16b));var _0xdbfb=function(_0x38edc7,_0x5d0576){_0x38edc7=_0x38edc7-0x0;var _0x3eb41e=_0xbfbd[_0x38edc7];return _0x3eb41e;};'use strict';var _=require(_0xdbfb('0x0'));var util=require('util');var moment=require(_0xdbfb('0x1'));var BPromise=require('bluebird');var rs=require(_0xdbfb('0x2'));var fs=require('fs');var Redis=require(_0xdbfb('0x3'));var db=require(_0xdbfb('0x4'))['db'];var utils=require(_0xdbfb('0x5'));var logger=require('../../config/logger')(_0xdbfb('0x6'));var config=require(_0xdbfb('0x7'));var jayson=require(_0xdbfb('0x8'));var client=jayson[_0xdbfb('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x22d93f,_0x3a1272,_0x59daea){return new BPromise(function(_0x405400,_0x48c79b){return client['request'](_0x22d93f,_0x59daea)[_0xdbfb('0xa')](function(_0x5d4bbc){logger['info']('SmsQueueReport,\x20%s,\x20%s',_0x3a1272,_0xdbfb('0xb'));logger[_0xdbfb('0xc')](_0xdbfb('0xd'),_0x3a1272,_0xdbfb('0xb'),JSON['stringify'](_0x5d4bbc));if(_0x5d4bbc[_0xdbfb('0xe')]){if(_0x5d4bbc['error'][_0xdbfb('0xf')]===0x1f4){logger[_0xdbfb('0xe')](_0xdbfb('0x10'),_0x3a1272,_0x5d4bbc[_0xdbfb('0xe')]['message']);return _0x48c79b(_0x5d4bbc[_0xdbfb('0xe')][_0xdbfb('0x11')]);}logger['error']('SmsQueueReport,\x20%s,\x20%s',_0x3a1272,_0x5d4bbc[_0xdbfb('0xe')]['message']);return _0x405400(_0x5d4bbc[_0xdbfb('0xe')]['message']);}else{logger[_0xdbfb('0x12')](_0xdbfb('0x10'),_0x3a1272,_0xdbfb('0xb'));_0x405400(_0x5d4bbc[_0xdbfb('0x13')]['message']);}})['catch'](function(_0x132630){logger[_0xdbfb('0xe')](_0xdbfb('0x10'),_0x3a1272,_0x132630);_0x48c79b(_0x132630);});});}exports[_0xdbfb('0x14')]=function(_0x567dbd){var _0x594d74=this;return new Promise(function(_0xd1e0cc,_0x678eb){return db[_0xdbfb('0x15')][_0xdbfb('0x16')](_0x567dbd['body'],{'raw':_0x567dbd['options']?_0x567dbd[_0xdbfb('0x17')]['raw']===undefined?!![]:![]:!![]})[_0xdbfb('0xa')](function(_0x31ead1){logger['info'](_0xdbfb('0x14'),_0x567dbd);logger[_0xdbfb('0xc')](_0xdbfb('0x14'),_0x567dbd,JSON[_0xdbfb('0x18')](_0x31ead1));_0xd1e0cc(_0x31ead1);})[_0xdbfb('0x19')](function(_0x2ea9e5){logger[_0xdbfb('0xe')]('CreateSmsQueueReport',_0x2ea9e5[_0xdbfb('0x11')],_0x567dbd);_0x678eb(_0x594d74['error'](0x1f4,_0x2ea9e5[_0xdbfb('0x11')]));});});};exports[_0xdbfb('0x1a')]=function(_0x22dbd7){var _0x5cf603=this;return new Promise(function(_0x41a15d,_0x2ce06e){return db[_0xdbfb('0x15')][_0xdbfb('0x1b')](_0x22dbd7[_0xdbfb('0x1c')],{'raw':_0x22dbd7[_0xdbfb('0x17')]?_0x22dbd7['options'][_0xdbfb('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x22dbd7['options']?_0x22dbd7[_0xdbfb('0x17')][_0xdbfb('0x1e')]||null:null,'attributes':_0x22dbd7[_0xdbfb('0x17')]?_0x22dbd7['options'][_0xdbfb('0x1f')]||null:null,'limit':_0x22dbd7[_0xdbfb('0x17')]?_0x22dbd7[_0xdbfb('0x17')]['limit']||null:null})[_0xdbfb('0xa')](function(_0x529285){logger['info'](_0xdbfb('0x1a'),_0x22dbd7);logger[_0xdbfb('0xc')](_0xdbfb('0x1a'),_0x22dbd7,JSON[_0xdbfb('0x18')](_0x529285));_0x41a15d(_0x529285);})['catch'](function(_0x53fada){logger[_0xdbfb('0xe')](_0xdbfb('0x1a'),_0x53fada[_0xdbfb('0x11')],_0x22dbd7);_0x2ce06e(_0x5cf603[_0xdbfb('0xe')](0x1f4,_0x53fada[_0xdbfb('0x11')]));});});};
\ No newline at end of file
index 9807d61..dcc603b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c4e=['fs-extra','../../components/auth/service','../../components/interaction/service','./smsTransferReport.controller','isAuthenticated','index','get','/describe','describe','/:id','post','create','put','delete','destroy','multer','path','connect-timeout','express'];(function(_0x11ea3f,_0x317de4){var _0x1f1b86=function(_0x234407){while(--_0x234407){_0x11ea3f['push'](_0x11ea3f['shift']());}};_0x1f1b86(++_0x317de4);}(_0x4c4e,0x152));var _0xe4c4=function(_0x4dbad3,_0x419388){_0x4dbad3=_0x4dbad3-0x0;var _0x22eef4=_0x4c4e[_0x4dbad3];return _0x22eef4;};'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'),auth[_0xe4c4('0x8')](),controller[_0xe4c4('0xc')]);router[_0xe4c4('0xa')](_0xe4c4('0xd'),auth['isAuthenticated'](),controller['show']);router[_0xe4c4('0xe')]('/',auth[_0xe4c4('0x8')](),controller[_0xe4c4('0xf')]);router[_0xe4c4('0x10')](_0xe4c4('0xd'),auth[_0xe4c4('0x8')](),controller['update']);router[_0xe4c4('0x11')](_0xe4c4('0xd'),auth[_0xe4c4('0x8')](),controller[_0xe4c4('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x84ab=['util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./smsTransferReport.controller','get','/describe','describe','isAuthenticated','post','create','update','delete','/:id','destroy','multer'];(function(_0x1efb37,_0x36569f){var _0x154cb0=function(_0x575ea4){while(--_0x575ea4){_0x1efb37['push'](_0x1efb37['shift']());}};_0x154cb0(++_0x36569f);}(_0x84ab,0x12f));var _0xb84a=function(_0x585d81,_0xf6d74f){_0x585d81=_0x585d81-0x0;var _0x1aca0d=_0x84ab[_0x585d81];return _0x1aca0d;};'use strict';var multer=require(_0xb84a('0x0'));var util=require(_0xb84a('0x1'));var path=require(_0xb84a('0x2'));var timeout=require(_0xb84a('0x3'));var express=require(_0xb84a('0x4'));var router=express['Router']();var fs_extra=require(_0xb84a('0x5'));var auth=require(_0xb84a('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xb84a('0x7'));var controller=require(_0xb84a('0x8'));router[_0xb84a('0x9')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xb84a('0xa'),auth['isAuthenticated'](),controller[_0xb84a('0xb')]);router[_0xb84a('0x9')]('/:id',auth[_0xb84a('0xc')](),controller['show']);router[_0xb84a('0xd')]('/',auth[_0xb84a('0xc')](),controller[_0xb84a('0xe')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0xb84a('0xf')]);router[_0xb84a('0x10')](_0xb84a('0x11'),auth[_0xb84a('0xc')](),controller[_0xb84a('0x12')]);module['exports']=router;
\ No newline at end of file
index de5f9f5..c865896 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(_0x4e349d,_0x507d34){var _0x3086ff=function(_0x5d2e34){while(--_0x5d2e34){_0x4e349d['push'](_0x4e349d['shift']());}};_0x3086ff(++_0x507d34);}(_0xaa88,0x137));var _0x8aa8=function(_0x47e7dd,_0x51b041){_0x47e7dd=_0x47e7dd-0x0;var _0x38501f=_0xaa88[_0x47e7dd];return _0x38501f;};'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 _0xedd9=['account','agent','queue','NOW','sequelize','exports','STRING','ENUM'];(function(_0x5ccc7d,_0xb5643b){var _0xa9c8ff=function(_0x30fd86){while(--_0x30fd86){_0x5ccc7d['push'](_0x5ccc7d['shift']());}};_0xa9c8ff(++_0xb5643b);}(_0xedd9,0xfc));var _0x9edd=function(_0x104072,_0x3f331e){_0x104072=_0x104072-0x0;var _0x2a7893=_0xedd9[_0x104072];return _0x2a7893;};'use strict';var moment=require('moment');var Sequelize=require(_0x9edd('0x0'));module[_0x9edd('0x1')]={'uniqueid':{'type':Sequelize[_0x9edd('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x9edd('0x3')](_0x9edd('0x4'),_0x9edd('0x5'),_0x9edd('0x6')),'allowNull':![],'defaultValue':_0x9edd('0x6')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x9edd('0x7')]}};
\ No newline at end of file
index cb5ecd0..0ae2341 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e74=['../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','save','update','then','destroy','end','error','name','send','index','SmsTransferReport','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','nolimit','sort','where','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','rawAttributes','fields','length','options','find','create','body','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x374785,_0x4f71b8){var _0x572c40=function(_0x1cf7b0){while(--_0x1cf7b0){_0x374785['push'](_0x374785['shift']());}};_0x572c40(++_0x4f71b8);}(_0x9e74,0x83));var _0x49e7=function(_0x1aa5bd,_0x14866a){_0x1aa5bd=_0x1aa5bd-0x0;var _0x104b6b=_0x9e74[_0x1aa5bd];return _0x104b6b;};'use strict';var emlformat=require(_0x49e7('0x0'));var rimraf=require(_0x49e7('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x49e7('0x2'));var rp=require(_0x49e7('0x3'));var moment=require(_0x49e7('0x4'));var BPromise=require(_0x49e7('0x5'));var Mustache=require('mustache');var util=require(_0x49e7('0x6'));var path=require(_0x49e7('0x7'));var sox=require(_0x49e7('0x8'));var csv=require(_0x49e7('0x9'));var ejs=require(_0x49e7('0xa'));var fs=require('fs');var fs_extra=require(_0x49e7('0xb'));var _=require(_0x49e7('0xc'));var squel=require(_0x49e7('0xd'));var crypto=require('crypto');var jsforce=require(_0x49e7('0xe'));var deskjs=require(_0x49e7('0xf'));var toCsv=require(_0x49e7('0x9'));var querystring=require(_0x49e7('0x10'));var Papa=require('papaparse');var Redis=require(_0x49e7('0x11'));var authService=require(_0x49e7('0x12'));var qs=require(_0x49e7('0x13'));var as=require(_0x49e7('0x14'));var hardwareService=require(_0x49e7('0x15'));var logger=require(_0x49e7('0x16'))('api');var utils=require('../../config/utils');var config=require(_0x49e7('0x17'));var licenseUtil=require(_0x49e7('0x18'));var db=require(_0x49e7('0x19'))['db'];function respondWithStatusCode(_0x205651,_0x12ce27){_0x12ce27=_0x12ce27||0xcc;return function(_0x4fc306){if(_0x4fc306){return _0x205651[_0x49e7('0x1a')](_0x12ce27);}return _0x205651[_0x49e7('0x1b')](_0x12ce27)['end']();};}function respondWithResult(_0x21b8c8,_0x40cf95){_0x40cf95=_0x40cf95||0xc8;return function(_0x211314){if(_0x211314){return _0x21b8c8['status'](_0x40cf95)['json'](_0x211314);}};}function respondWithFilteredResult(_0x1ce29a,_0x1fd852){return function(_0x26e9ad){if(_0x26e9ad){var _0x144f89=typeof _0x1fd852[_0x49e7('0x1c')]===_0x49e7('0x1d')&&typeof _0x1fd852[_0x49e7('0x1e')]===_0x49e7('0x1d');var _0x1aaae9=_0x26e9ad['count'];var _0x4a03d6=_0x144f89?0x0:_0x1fd852['offset'];var _0x488109=_0x144f89?_0x26e9ad[_0x49e7('0x1f')]:_0x1fd852['offset']+_0x1fd852[_0x49e7('0x1e')];var _0x137bfb;if(_0x488109>=_0x1aaae9){_0x488109=_0x1aaae9;_0x137bfb=0xc8;}else{_0x137bfb=0xce;}_0x1ce29a['status'](_0x137bfb);return _0x1ce29a[_0x49e7('0x20')](_0x49e7('0x21'),_0x4a03d6+'-'+_0x488109+'/'+_0x1aaae9)[_0x49e7('0x22')](_0x26e9ad);}return null;};}function patchUpdates(_0x38fa3b){return function(_0x45f7ea){try{jsonpatch['apply'](_0x45f7ea,_0x38fa3b,!![]);}catch(_0x235209){return BPromise['reject'](_0x235209);}return _0x45f7ea[_0x49e7('0x23')]();};}function saveUpdates(_0x4d8a4c,_0x3b9332){return function(_0x1e68e9){if(_0x1e68e9){return _0x1e68e9[_0x49e7('0x24')](_0x4d8a4c)[_0x49e7('0x25')](function(_0x4071f1){return _0x4071f1;});}return null;};}function removeEntity(_0x1f7585,_0x147ecd){return function(_0x14ff41){if(_0x14ff41){return _0x14ff41[_0x49e7('0x26')]()[_0x49e7('0x25')](function(){_0x1f7585[_0x49e7('0x1b')](0xcc)[_0x49e7('0x27')]();});}};}function handleEntityNotFound(_0xa08022,_0x1d77fd){return function(_0x895a4f){if(!_0x895a4f){_0xa08022['sendStatus'](0x194);}return _0x895a4f;};}function handleError(_0x38a685,_0x208b2e){_0x208b2e=_0x208b2e||0x1f4;return function(_0x2498a0){logger[_0x49e7('0x28')](_0x2498a0['stack']);if(_0x2498a0[_0x49e7('0x29')]){delete _0x2498a0[_0x49e7('0x29')];}_0x38a685[_0x49e7('0x1b')](_0x208b2e)[_0x49e7('0x2a')](_0x2498a0);};}exports[_0x49e7('0x2b')]=function(_0x51ed31,_0x55bd95){var _0x502206={},_0xec89a3={},_0x11b9ad={'count':0x0,'rows':[]};var _0x228cc5=_['map'](db[_0x49e7('0x2c')]['rawAttributes'],function(_0x1bafbc){return{'name':_0x1bafbc[_0x49e7('0x2d')],'type':_0x1bafbc[_0x49e7('0x2e')][_0x49e7('0x2f')]};});_0xec89a3[_0x49e7('0x30')]=_[_0x49e7('0x31')](_0x228cc5,'name');_0xec89a3[_0x49e7('0x32')]=_[_0x49e7('0x33')](_0x51ed31[_0x49e7('0x32')]);_0xec89a3[_0x49e7('0x34')]=_[_0x49e7('0x35')](_0xec89a3[_0x49e7('0x30')],_0xec89a3[_0x49e7('0x32')]);_0x502206[_0x49e7('0x36')]=_[_0x49e7('0x35')](_0xec89a3[_0x49e7('0x30')],qs['fields'](_0x51ed31[_0x49e7('0x32')]['fields']));_0x502206['attributes']=_0x502206[_0x49e7('0x36')]['length']?_0x502206[_0x49e7('0x36')]:_0xec89a3[_0x49e7('0x30')];if(!_0x51ed31[_0x49e7('0x32')]['hasOwnProperty'](_0x49e7('0x37'))){_0x502206['limit']=qs[_0x49e7('0x1e')](_0x51ed31['query'][_0x49e7('0x1e')]);_0x502206[_0x49e7('0x1c')]=qs[_0x49e7('0x1c')](_0x51ed31['query'][_0x49e7('0x1c')]);}_0x502206['order']=qs[_0x49e7('0x38')](_0x51ed31[_0x49e7('0x32')][_0x49e7('0x38')]);_0x502206[_0x49e7('0x39')]=qs[_0x49e7('0x34')](_['pick'](_0x51ed31[_0x49e7('0x32')],_0xec89a3[_0x49e7('0x34')]),_0x228cc5);if(_0x51ed31['query'][_0x49e7('0x3a')]){_0x502206[_0x49e7('0x39')]=_[_0x49e7('0x3b')](_0x502206['where'],{'$or':_[_0x49e7('0x31')](_0x228cc5,function(_0x5ccae9){if(_0x5ccae9[_0x49e7('0x2e')]!==_0x49e7('0x3c')){var _0x1f3e85={};_0x1f3e85[_0x5ccae9[_0x49e7('0x29')]]={'$like':'%'+_0x51ed31[_0x49e7('0x32')]['filter']+'%'};return _0x1f3e85;}})});}_0x502206=_['merge']({},_0x502206,_0x51ed31['options']);var _0x3cdf00={'where':_0x502206[_0x49e7('0x39')]};return db['SmsTransferReport'][_0x49e7('0x1f')](_0x3cdf00)[_0x49e7('0x25')](function(_0x525db3){_0x11b9ad[_0x49e7('0x1f')]=_0x525db3;if(_0x51ed31[_0x49e7('0x32')][_0x49e7('0x3d')]){_0x502206[_0x49e7('0x3e')]=[{'all':!![]}];}return db[_0x49e7('0x2c')][_0x49e7('0x3f')](_0x502206);})['then'](function(_0x610389){_0x11b9ad[_0x49e7('0x40')]=_0x610389;return _0x11b9ad;})[_0x49e7('0x25')](respondWithFilteredResult(_0x55bd95,_0x502206))[_0x49e7('0x41')](handleError(_0x55bd95,null));};exports[_0x49e7('0x42')]=function(_0x5b6b59,_0xe4b671){var _0x196e2d={'raw':!![],'where':{'id':_0x5b6b59[_0x49e7('0x43')]['id']}},_0x183f19={};_0x183f19[_0x49e7('0x30')]=_[_0x49e7('0x33')](db[_0x49e7('0x2c')][_0x49e7('0x44')]);_0x183f19[_0x49e7('0x32')]=_[_0x49e7('0x33')](_0x5b6b59[_0x49e7('0x32')]);_0x183f19['filters']=_[_0x49e7('0x35')](_0x183f19['model'],_0x183f19[_0x49e7('0x32')]);_0x196e2d[_0x49e7('0x36')]=_[_0x49e7('0x35')](_0x183f19[_0x49e7('0x30')],qs[_0x49e7('0x45')](_0x5b6b59[_0x49e7('0x32')][_0x49e7('0x45')]));_0x196e2d[_0x49e7('0x36')]=_0x196e2d[_0x49e7('0x36')][_0x49e7('0x46')]?_0x196e2d[_0x49e7('0x36')]:_0x183f19['model'];if(_0x5b6b59['query']['includeAll']){_0x196e2d[_0x49e7('0x3e')]=[{'all':!![]}];}_0x196e2d=_['merge']({},_0x196e2d,_0x5b6b59[_0x49e7('0x47')]);return db[_0x49e7('0x2c')][_0x49e7('0x48')](_0x196e2d)[_0x49e7('0x25')](handleEntityNotFound(_0xe4b671,null))['then'](respondWithResult(_0xe4b671,null))[_0x49e7('0x41')](handleError(_0xe4b671,null));};exports['create']=function(_0x3cefa6,_0x591dd9){return db['SmsTransferReport'][_0x49e7('0x49')](_0x3cefa6[_0x49e7('0x4a')],{})[_0x49e7('0x25')](respondWithResult(_0x591dd9,0xc9))['catch'](handleError(_0x591dd9,null));};exports[_0x49e7('0x24')]=function(_0x48307c,_0x4b4f4f){if(_0x48307c[_0x49e7('0x4a')]['id']){delete _0x48307c[_0x49e7('0x4a')]['id'];}return db[_0x49e7('0x2c')][_0x49e7('0x48')]({'where':{'id':_0x48307c[_0x49e7('0x43')]['id']}})[_0x49e7('0x25')](handleEntityNotFound(_0x4b4f4f,null))[_0x49e7('0x25')](saveUpdates(_0x48307c[_0x49e7('0x4a')],null))[_0x49e7('0x25')](respondWithResult(_0x4b4f4f,null))[_0x49e7('0x41')](handleError(_0x4b4f4f,null));};exports['destroy']=function(_0x4dedaf,_0x34a44d){return db[_0x49e7('0x2c')]['find']({'where':{'id':_0x4dedaf[_0x49e7('0x43')]['id']}})[_0x49e7('0x25')](handleEntityNotFound(_0x34a44d,null))[_0x49e7('0x25')](removeEntity(_0x34a44d,null))[_0x49e7('0x41')](handleError(_0x34a44d,null));};exports[_0x49e7('0x4b')]=function(_0x2d4a85,_0x2c9f37){return db[_0x49e7('0x2c')]['describe']()[_0x49e7('0x25')](respondWithResult(_0x2c9f37,null))['catch'](handleError(_0x2c9f37,null));};
\ No newline at end of file
+var _0x7ed2=['sendStatus','error','stack','name','send','index','map','SmsTransferReport','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy'];(function(_0x2be8c2,_0x14a4b5){var _0x97f531=function(_0xcee58d){while(--_0xcee58d){_0x2be8c2['push'](_0x2be8c2['shift']());}};_0x97f531(++_0x14a4b5);}(_0x7ed2,0xcb));var _0x27ed=function(_0x2cc04d,_0xa144f){_0x2cc04d=_0x2cc04d-0x0;var _0x37907c=_0x7ed2[_0x2cc04d];return _0x37907c;};'use strict';var emlformat=require(_0x27ed('0x0'));var rimraf=require(_0x27ed('0x1'));var zipdir=require(_0x27ed('0x2'));var jsonpatch=require(_0x27ed('0x3'));var rp=require(_0x27ed('0x4'));var moment=require(_0x27ed('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x27ed('0x6'));var util=require(_0x27ed('0x7'));var path=require(_0x27ed('0x8'));var sox=require(_0x27ed('0x9'));var csv=require(_0x27ed('0xa'));var ejs=require(_0x27ed('0xb'));var fs=require('fs');var fs_extra=require(_0x27ed('0xc'));var _=require(_0x27ed('0xd'));var squel=require(_0x27ed('0xe'));var crypto=require(_0x27ed('0xf'));var jsforce=require(_0x27ed('0x10'));var deskjs=require(_0x27ed('0x11'));var toCsv=require(_0x27ed('0xa'));var querystring=require(_0x27ed('0x12'));var Papa=require(_0x27ed('0x13'));var Redis=require(_0x27ed('0x14'));var authService=require(_0x27ed('0x15'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x27ed('0x16'));var logger=require(_0x27ed('0x17'))(_0x27ed('0x18'));var utils=require(_0x27ed('0x19'));var config=require(_0x27ed('0x1a'));var licenseUtil=require(_0x27ed('0x1b'));var db=require(_0x27ed('0x1c'))['db'];function respondWithStatusCode(_0x4b5934,_0x33dc9f){_0x33dc9f=_0x33dc9f||0xcc;return function(_0x48b916){if(_0x48b916){return _0x4b5934['sendStatus'](_0x33dc9f);}return _0x4b5934[_0x27ed('0x1d')](_0x33dc9f)['end']();};}function respondWithResult(_0x8647,_0x20176e){_0x20176e=_0x20176e||0xc8;return function(_0x2ebfb5){if(_0x2ebfb5){return _0x8647[_0x27ed('0x1d')](_0x20176e)['json'](_0x2ebfb5);}};}function respondWithFilteredResult(_0x22a5a4,_0x5e1112){return function(_0x28538a){if(_0x28538a){var _0x3e641f=typeof _0x5e1112[_0x27ed('0x1e')]===_0x27ed('0x1f')&&typeof _0x5e1112[_0x27ed('0x20')]===_0x27ed('0x1f');var _0x19646b=_0x28538a[_0x27ed('0x21')];var _0x830199=_0x3e641f?0x0:_0x5e1112[_0x27ed('0x1e')];var _0xe0246a=_0x3e641f?_0x28538a[_0x27ed('0x21')]:_0x5e1112[_0x27ed('0x1e')]+_0x5e1112['limit'];var _0x2f76b3;if(_0xe0246a>=_0x19646b){_0xe0246a=_0x19646b;_0x2f76b3=0xc8;}else{_0x2f76b3=0xce;}_0x22a5a4[_0x27ed('0x1d')](_0x2f76b3);return _0x22a5a4[_0x27ed('0x22')](_0x27ed('0x23'),_0x830199+'-'+_0xe0246a+'/'+_0x19646b)[_0x27ed('0x24')](_0x28538a);}return null;};}function patchUpdates(_0xc9a95e){return function(_0xcaf042){try{jsonpatch[_0x27ed('0x25')](_0xcaf042,_0xc9a95e,!![]);}catch(_0x2cef1a){return BPromise[_0x27ed('0x26')](_0x2cef1a);}return _0xcaf042[_0x27ed('0x27')]();};}function saveUpdates(_0x795d8d,_0x1d9cd2){return function(_0x173753){if(_0x173753){return _0x173753[_0x27ed('0x28')](_0x795d8d)[_0x27ed('0x29')](function(_0x27928a){return _0x27928a;});}return null;};}function removeEntity(_0xcb24bd,_0x399225){return function(_0x27264e){if(_0x27264e){return _0x27264e[_0x27ed('0x2a')]()['then'](function(){_0xcb24bd['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2cb73f,_0xa24f70){return function(_0x33c095){if(!_0x33c095){_0x2cb73f[_0x27ed('0x2b')](0x194);}return _0x33c095;};}function handleError(_0x399656,_0x880ef5){_0x880ef5=_0x880ef5||0x1f4;return function(_0x4cbfdf){logger[_0x27ed('0x2c')](_0x4cbfdf[_0x27ed('0x2d')]);if(_0x4cbfdf[_0x27ed('0x2e')]){delete _0x4cbfdf['name'];}_0x399656[_0x27ed('0x1d')](_0x880ef5)[_0x27ed('0x2f')](_0x4cbfdf);};}exports[_0x27ed('0x30')]=function(_0x5e6b04,_0x2fc344){var _0x301e9b={},_0x599f3b={},_0x4be5f9={'count':0x0,'rows':[]};var _0x330a41=_[_0x27ed('0x31')](db[_0x27ed('0x32')][_0x27ed('0x33')],function(_0x3023a1){return{'name':_0x3023a1[_0x27ed('0x34')],'type':_0x3023a1[_0x27ed('0x35')][_0x27ed('0x36')]};});_0x599f3b[_0x27ed('0x37')]=_[_0x27ed('0x31')](_0x330a41,_0x27ed('0x2e'));_0x599f3b[_0x27ed('0x38')]=_['keys'](_0x5e6b04[_0x27ed('0x38')]);_0x599f3b[_0x27ed('0x39')]=_[_0x27ed('0x3a')](_0x599f3b[_0x27ed('0x37')],_0x599f3b['query']);_0x301e9b[_0x27ed('0x3b')]=_['intersection'](_0x599f3b['model'],qs['fields'](_0x5e6b04[_0x27ed('0x38')][_0x27ed('0x3c')]));_0x301e9b[_0x27ed('0x3b')]=_0x301e9b['attributes']['length']?_0x301e9b['attributes']:_0x599f3b['model'];if(!_0x5e6b04[_0x27ed('0x38')][_0x27ed('0x3d')](_0x27ed('0x3e'))){_0x301e9b['limit']=qs[_0x27ed('0x20')](_0x5e6b04[_0x27ed('0x38')][_0x27ed('0x20')]);_0x301e9b[_0x27ed('0x1e')]=qs['offset'](_0x5e6b04[_0x27ed('0x38')]['offset']);}_0x301e9b[_0x27ed('0x3f')]=qs[_0x27ed('0x40')](_0x5e6b04[_0x27ed('0x38')][_0x27ed('0x40')]);_0x301e9b[_0x27ed('0x41')]=qs[_0x27ed('0x39')](_['pick'](_0x5e6b04[_0x27ed('0x38')],_0x599f3b[_0x27ed('0x39')]),_0x330a41);if(_0x5e6b04['query'][_0x27ed('0x42')]){_0x301e9b['where']=_[_0x27ed('0x43')](_0x301e9b[_0x27ed('0x41')],{'$or':_[_0x27ed('0x31')](_0x330a41,function(_0x5132a2){if(_0x5132a2[_0x27ed('0x35')]!==_0x27ed('0x44')){var _0x4ecbc3={};_0x4ecbc3[_0x5132a2[_0x27ed('0x2e')]]={'$like':'%'+_0x5e6b04[_0x27ed('0x38')][_0x27ed('0x42')]+'%'};return _0x4ecbc3;}})});}_0x301e9b=_['merge']({},_0x301e9b,_0x5e6b04[_0x27ed('0x45')]);var _0x2a999f={'where':_0x301e9b[_0x27ed('0x41')]};return db['SmsTransferReport'][_0x27ed('0x21')](_0x2a999f)['then'](function(_0x3da958){_0x4be5f9[_0x27ed('0x21')]=_0x3da958;if(_0x5e6b04[_0x27ed('0x38')][_0x27ed('0x46')]){_0x301e9b[_0x27ed('0x47')]=[{'all':!![]}];}return db['SmsTransferReport'][_0x27ed('0x48')](_0x301e9b);})[_0x27ed('0x29')](function(_0x326dca){_0x4be5f9[_0x27ed('0x49')]=_0x326dca;return _0x4be5f9;})['then'](respondWithFilteredResult(_0x2fc344,_0x301e9b))[_0x27ed('0x4a')](handleError(_0x2fc344,null));};exports[_0x27ed('0x4b')]=function(_0x22fb54,_0x35fdea){var _0x41defb={'raw':!![],'where':{'id':_0x22fb54[_0x27ed('0x4c')]['id']}},_0x1df19c={};_0x1df19c[_0x27ed('0x37')]=_[_0x27ed('0x4d')](db['SmsTransferReport'][_0x27ed('0x33')]);_0x1df19c[_0x27ed('0x38')]=_[_0x27ed('0x4d')](_0x22fb54[_0x27ed('0x38')]);_0x1df19c['filters']=_[_0x27ed('0x3a')](_0x1df19c[_0x27ed('0x37')],_0x1df19c['query']);_0x41defb[_0x27ed('0x3b')]=_[_0x27ed('0x3a')](_0x1df19c[_0x27ed('0x37')],qs['fields'](_0x22fb54[_0x27ed('0x38')][_0x27ed('0x3c')]));_0x41defb[_0x27ed('0x3b')]=_0x41defb[_0x27ed('0x3b')]['length']?_0x41defb['attributes']:_0x1df19c['model'];if(_0x22fb54['query']['includeAll']){_0x41defb[_0x27ed('0x47')]=[{'all':!![]}];}_0x41defb=_[_0x27ed('0x43')]({},_0x41defb,_0x22fb54[_0x27ed('0x45')]);return db['SmsTransferReport'][_0x27ed('0x4e')](_0x41defb)['then'](handleEntityNotFound(_0x35fdea,null))[_0x27ed('0x29')](respondWithResult(_0x35fdea,null))[_0x27ed('0x4a')](handleError(_0x35fdea,null));};exports[_0x27ed('0x4f')]=function(_0x232d45,_0x4e27d6){return db[_0x27ed('0x32')][_0x27ed('0x4f')](_0x232d45['body'],{})[_0x27ed('0x29')](respondWithResult(_0x4e27d6,0xc9))[_0x27ed('0x4a')](handleError(_0x4e27d6,null));};exports['update']=function(_0x13c6f6,_0x2133d7){if(_0x13c6f6[_0x27ed('0x50')]['id']){delete _0x13c6f6[_0x27ed('0x50')]['id'];}return db[_0x27ed('0x32')][_0x27ed('0x4e')]({'where':{'id':_0x13c6f6['params']['id']}})['then'](handleEntityNotFound(_0x2133d7,null))[_0x27ed('0x29')](saveUpdates(_0x13c6f6[_0x27ed('0x50')],null))[_0x27ed('0x29')](respondWithResult(_0x2133d7,null))['catch'](handleError(_0x2133d7,null));};exports[_0x27ed('0x2a')]=function(_0x4e12a8,_0x3ad0b7){return db['SmsTransferReport'][_0x27ed('0x4e')]({'where':{'id':_0x4e12a8[_0x27ed('0x4c')]['id']}})[_0x27ed('0x29')](handleEntityNotFound(_0x3ad0b7,null))[_0x27ed('0x29')](removeEntity(_0x3ad0b7,null))[_0x27ed('0x4a')](handleError(_0x3ad0b7,null));};exports[_0x27ed('0x51')]=function(_0x2373f9,_0x7cbbf3){return db[_0x27ed('0x32')][_0x27ed('0x51')]()[_0x27ed('0x29')](respondWithResult(_0x7cbbf3,null))[_0x27ed('0x4a')](handleError(_0x7cbbf3,null));};
\ No newline at end of file
index e54ca5d..c4ea872 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79a8=['request-promise','rimraf','../../config/environment','./smsTransferReport.attributes','exports','define','SmsTransferReport','uniqueid','lodash','../../config/logger','api','moment'];(function(_0x2cf536,_0x349aba){var _0x1df7a3=function(_0x1cb1ff){while(--_0x1cb1ff){_0x2cf536['push'](_0x2cf536['shift']());}};_0x1df7a3(++_0x349aba);}(_0x79a8,0x1d0));var _0x879a=function(_0x247fa1,_0x4ec37c){_0x247fa1=_0x247fa1-0x0;var _0x244f35=_0x79a8[_0x247fa1];return _0x244f35;};'use strict';var _=require(_0x879a('0x0'));var util=require('util');var logger=require(_0x879a('0x1'))(_0x879a('0x2'));var moment=require(_0x879a('0x3'));var BPromise=require('bluebird');var rp=require(_0x879a('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x879a('0x5'));var config=require(_0x879a('0x6'));var attributes=require(_0x879a('0x7'));module[_0x879a('0x8')]=function(_0x1808f1,_0x3cb89c){return _0x1808f1[_0x879a('0x9')](_0x879a('0xa'),attributes,{'tableName':'report_sms_transfer','paranoid':![],'indexes':[{'name':_0x879a('0xb'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x542b=['bluebird','path','rimraf','./smsTransferReport.attributes','define','uniqueid','lodash','util','api','moment'];(function(_0x2e1777,_0x1f056a){var _0x35628f=function(_0x50499e){while(--_0x50499e){_0x2e1777['push'](_0x2e1777['shift']());}};_0x35628f(++_0x1f056a);}(_0x542b,0xec));var _0xb542=function(_0x51020b,_0x38c2c7){_0x51020b=_0x51020b-0x0;var _0x371e47=_0x542b[_0x51020b];return _0x371e47;};'use strict';var _=require(_0xb542('0x0'));var util=require(_0xb542('0x1'));var logger=require('../../config/logger')(_0xb542('0x2'));var moment=require(_0xb542('0x3'));var BPromise=require(_0xb542('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb542('0x5'));var rimraf=require(_0xb542('0x6'));var config=require('../../config/environment');var attributes=require(_0xb542('0x7'));module['exports']=function(_0x10cf5d,_0x27a259){return _0x10cf5d[_0xb542('0x8')]('SmsTransferReport',attributes,{'tableName':'report_sms_transfer','paranoid':![],'indexes':[{'name':_0xb542('0x9'),'fields':[_0xb542('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index 34ac079..e970c21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf873=['message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','SmsTransferReport,\x20%s,\x20%s','request\x20sent','debug','SmsTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x4b6bee,_0x23f984){var _0x167259=function(_0x419bfc){while(--_0x419bfc){_0x4b6bee['push'](_0x4b6bee['shift']());}};_0x167259(++_0x23f984);}(_0xf873,0xb2));var _0x3f87=function(_0x93eaaa,_0x61bcd5){_0x93eaaa=_0x93eaaa-0x0;var _0x4f5a13=_0xf873[_0x93eaaa];return _0x4f5a13;};'use strict';var _=require('lodash');var util=require(_0x3f87('0x0'));var moment=require(_0x3f87('0x1'));var BPromise=require(_0x3f87('0x2'));var rs=require(_0x3f87('0x3'));var fs=require('fs');var Redis=require(_0x3f87('0x4'));var db=require(_0x3f87('0x5'))['db'];var utils=require(_0x3f87('0x6'));var logger=require(_0x3f87('0x7'))(_0x3f87('0x8'));var config=require('../../config/environment');var jayson=require(_0x3f87('0x9'));var client=jayson[_0x3f87('0xa')][_0x3f87('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5a5e37,_0x8bf89b,_0x2c7ccc){return new BPromise(function(_0x3b8e92,_0x41faf2){return client[_0x3f87('0xc')](_0x5a5e37,_0x2c7ccc)[_0x3f87('0xd')](function(_0x4c3ed4){logger[_0x3f87('0xe')](_0x3f87('0xf'),_0x8bf89b,_0x3f87('0x10'));logger[_0x3f87('0x11')](_0x3f87('0x12'),_0x8bf89b,_0x3f87('0x10'),JSON[_0x3f87('0x13')](_0x4c3ed4));if(_0x4c3ed4[_0x3f87('0x14')]){if(_0x4c3ed4[_0x3f87('0x14')][_0x3f87('0x15')]===0x1f4){logger[_0x3f87('0x14')](_0x3f87('0xf'),_0x8bf89b,_0x4c3ed4[_0x3f87('0x14')][_0x3f87('0x16')]);return _0x41faf2(_0x4c3ed4['error'][_0x3f87('0x16')]);}logger[_0x3f87('0x14')]('SmsTransferReport,\x20%s,\x20%s',_0x8bf89b,_0x4c3ed4[_0x3f87('0x14')][_0x3f87('0x16')]);return _0x3b8e92(_0x4c3ed4[_0x3f87('0x14')][_0x3f87('0x16')]);}else{logger[_0x3f87('0xe')](_0x3f87('0xf'),_0x8bf89b,_0x3f87('0x10'));_0x3b8e92(_0x4c3ed4[_0x3f87('0x17')]['message']);}})[_0x3f87('0x18')](function(_0x3ac7a7){logger[_0x3f87('0x14')]('SmsTransferReport,\x20%s,\x20%s',_0x8bf89b,_0x3ac7a7);_0x41faf2(_0x3ac7a7);});});}
\ No newline at end of file
+var _0x28aa=['debug','SmsTransferReport,\x20%s,\x20%s,\x20%s','error','code','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','SmsTransferReport,\x20%s,\x20%s','request\x20sent'];(function(_0x3575fb,_0x634d3b){var _0x41df19=function(_0x54bdd6){while(--_0x54bdd6){_0x3575fb['push'](_0x3575fb['shift']());}};_0x41df19(++_0x634d3b);}(_0x28aa,0xf8));var _0xa28a=function(_0x387777,_0x356171){_0x387777=_0x387777-0x0;var _0x3f84c0=_0x28aa[_0x387777];return _0x3f84c0;};'use strict';var _=require('lodash');var util=require(_0xa28a('0x0'));var moment=require(_0xa28a('0x1'));var BPromise=require(_0xa28a('0x2'));var rs=require(_0xa28a('0x3'));var fs=require('fs');var Redis=require(_0xa28a('0x4'));var db=require(_0xa28a('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xa28a('0x6'))(_0xa28a('0x7'));var config=require(_0xa28a('0x8'));var jayson=require(_0xa28a('0x9'));var client=jayson['client'][_0xa28a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x33cda2,_0x150568,_0x1d2e08){return new BPromise(function(_0x420947,_0x1d23cc){return client[_0xa28a('0xb')](_0x33cda2,_0x1d2e08)[_0xa28a('0xc')](function(_0x1224e9){logger[_0xa28a('0xd')](_0xa28a('0xe'),_0x150568,_0xa28a('0xf'));logger[_0xa28a('0x10')](_0xa28a('0x11'),_0x150568,_0xa28a('0xf'),JSON['stringify'](_0x1224e9));if(_0x1224e9[_0xa28a('0x12')]){if(_0x1224e9[_0xa28a('0x12')][_0xa28a('0x13')]===0x1f4){logger[_0xa28a('0x12')]('SmsTransferReport,\x20%s,\x20%s',_0x150568,_0x1224e9[_0xa28a('0x12')][_0xa28a('0x14')]);return _0x1d23cc(_0x1224e9['error'][_0xa28a('0x14')]);}logger[_0xa28a('0x12')](_0xa28a('0xe'),_0x150568,_0x1224e9[_0xa28a('0x12')][_0xa28a('0x14')]);return _0x420947(_0x1224e9[_0xa28a('0x12')][_0xa28a('0x14')]);}else{logger[_0xa28a('0xd')](_0xa28a('0xe'),_0x150568,_0xa28a('0xf'));_0x420947(_0x1224e9['result'][_0xa28a('0x14')]);}})[_0xa28a('0x15')](function(_0x15116a){logger['error'](_0xa28a('0xe'),_0x150568,_0x15116a);_0x1d23cc(_0x15116a);});});}
\ No newline at end of file
index 88837c9..0c8366a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff0d=['show','/:id/download','download','root','server/files/sounds/original/','originalname','basename','extname','now','post','file','create','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id'];(function(_0xee994d,_0x5b8f3a){var _0x360861=function(_0x24750a){while(--_0x24750a){_0xee994d['push'](_0xee994d['shift']());}};_0x360861(++_0x5b8f3a);}(_0xff0d,0x101));var _0xdff0=function(_0x324012,_0x23f45f){_0x324012=_0x324012-0x0;var _0x435cf2=_0xff0d[_0x324012];return _0x435cf2;};'use strict';var multer=require(_0xdff0('0x0'));var util=require(_0xdff0('0x1'));var path=require(_0xdff0('0x2'));var timeout=require(_0xdff0('0x3'));var express=require(_0xdff0('0x4'));var router=express[_0xdff0('0x5')]();var fs_extra=require(_0xdff0('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xdff0('0x7'));var config=require(_0xdff0('0x8'));var controller=require('./sound.controller');router[_0xdff0('0x9')]('/',auth[_0xdff0('0xa')](),controller[_0xdff0('0xb')]);router[_0xdff0('0x9')](_0xdff0('0xc'),auth[_0xdff0('0xa')](),controller[_0xdff0('0xd')]);router['get'](_0xdff0('0xe'),auth[_0xdff0('0xa')](),controller[_0xdff0('0xf')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x51240b,_0x1f6fa8,_0x4c22fd){_0x4c22fd(null,path['join'](config[_0xdff0('0x10')],_0xdff0('0x11')));},'filename':function(_0x1467c7,_0x342798,_0x4f5584){_0x342798[_0xdff0('0x12')]=_0x342798['originalname']['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x4f5584(null,util['format']('%s-%s%s',path[_0xdff0('0x13')](_0x342798[_0xdff0('0x12')],path[_0xdff0('0x14')](_0x342798['originalname'])),Date[_0xdff0('0x15')](),path[_0xdff0('0x14')](_0x342798[_0xdff0('0x12')])));}})});router[_0xdff0('0x16')]('/',upload['single'](_0xdff0('0x17')),controller[_0xdff0('0x18')]);router['put'](_0xdff0('0xc'),auth[_0xdff0('0xa')](),controller['update']);router[_0xdff0('0x19')](_0xdff0('0xc'),auth[_0xdff0('0xa')](),controller[_0xdff0('0x19')]);module[_0xdff0('0x1a')]=router;
\ No newline at end of file
+var _0x8e23=['isAuthenticated','index','/:id','/:id/download','download','diskStorage','join','root','originalname','replace','format','%s-%s%s','extname','now','single','file','create','put','update','delete','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','./sound.controller','get'];(function(_0x288f5e,_0x205edd){var _0x476cc9=function(_0x796f53){while(--_0x796f53){_0x288f5e['push'](_0x288f5e['shift']());}};_0x476cc9(++_0x205edd);}(_0x8e23,0xc3));var _0x38e2=function(_0x407823,_0x466c97){_0x407823=_0x407823-0x0;var _0x18c3df=_0x8e23[_0x407823];return _0x18c3df;};'use strict';var multer=require(_0x38e2('0x0'));var util=require(_0x38e2('0x1'));var path=require('path');var timeout=require(_0x38e2('0x2'));var express=require('express');var router=express[_0x38e2('0x3')]();var fs_extra=require(_0x38e2('0x4'));var auth=require(_0x38e2('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x38e2('0x6'));router[_0x38e2('0x7')]('/',auth[_0x38e2('0x8')](),controller[_0x38e2('0x9')]);router[_0x38e2('0x7')](_0x38e2('0xa'),auth[_0x38e2('0x8')](),controller['show']);router[_0x38e2('0x7')](_0x38e2('0xb'),auth[_0x38e2('0x8')](),controller[_0x38e2('0xc')]);var upload=multer({'storage':multer[_0x38e2('0xd')]({'destination':function(_0x67b615,_0x37da1e,_0x4eba40){_0x4eba40(null,path[_0x38e2('0xe')](config[_0x38e2('0xf')],'server/files/sounds/original/'));},'filename':function(_0x14531a,_0x2c8deb,_0x2ba2a4){_0x2c8deb[_0x38e2('0x10')]=_0x2c8deb[_0x38e2('0x10')][_0x38e2('0x11')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x2ba2a4(null,util[_0x38e2('0x12')](_0x38e2('0x13'),path['basename'](_0x2c8deb[_0x38e2('0x10')],path[_0x38e2('0x14')](_0x2c8deb[_0x38e2('0x10')])),Date[_0x38e2('0x15')](),path[_0x38e2('0x14')](_0x2c8deb['originalname'])));}})});router['post']('/',upload[_0x38e2('0x16')](_0x38e2('0x17')),controller[_0x38e2('0x18')]);router[_0x38e2('0x19')](_0x38e2('0xa'),auth['isAuthenticated'](),controller[_0x38e2('0x1a')]);router[_0x38e2('0x1b')]('/:id',auth['isAuthenticated'](),controller['delete']);module[_0x38e2('0x1c')]=router;
\ No newline at end of file
index ce44cc4..5b27da4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4abf=['STRING','FLOAT','BIGINT','INTEGER','sequelize','exports','name'];(function(_0x5d4ca7,_0x19113b){var _0x3efc03=function(_0x59675b){while(--_0x59675b){_0x5d4ca7['push'](_0x5d4ca7['shift']());}};_0x3efc03(++_0x19113b);}(_0x4abf,0xac));var _0xf4ab=function(_0x79288c,_0xdeee0d){_0x79288c=_0x79288c-0x0;var _0x13014d=_0x4abf[_0x79288c];return _0x13014d;};'use strict';var Sequelize=require(_0xf4ab('0x0'));module[_0xf4ab('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xf4ab('0x2'),'allowNull':![]},'save_name':{'type':Sequelize['STRING']},'display_name':{'type':Sequelize['STRING'],'defaultValue':''},'description':{'type':Sequelize['STRING']},'original_format':{'type':Sequelize[_0xf4ab('0x3')]},'original_duration':{'type':Sequelize[_0xf4ab('0x4')]},'original_sampleCount':{'type':Sequelize['BIGINT']},'original_channelCount':{'type':Sequelize['INTEGER']},'original_bitRate':{'type':Sequelize[_0xf4ab('0x5')]},'original_sampleRate':{'type':Sequelize[_0xf4ab('0x6')]},'converted_format':{'type':Sequelize[_0xf4ab('0x3')]},'converted_duration':{'type':Sequelize[_0xf4ab('0x4')]},'converted_sampleCount':{'type':Sequelize['BIGINT']},'converted_channelCount':{'type':Sequelize[_0xf4ab('0x6')]},'converted_bitRate':{'type':Sequelize[_0xf4ab('0x5')]},'converted_sampleRate':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0x41db=['sequelize','exports','STRING','name','FLOAT','BIGINT','INTEGER'];(function(_0x5ccc36,_0x355c08){var _0x19e8cc=function(_0x53128e){while(--_0x53128e){_0x5ccc36['push'](_0x5ccc36['shift']());}};_0x19e8cc(++_0x355c08);}(_0x41db,0xa1));var _0xb41d=function(_0x3e089c,_0x186068){_0x3e089c=_0x3e089c-0x0;var _0x210a47=_0x41db[_0x3e089c];return _0x210a47;};'use strict';var Sequelize=require(_0xb41d('0x0'));module[_0xb41d('0x1')]={'name':{'type':Sequelize[_0xb41d('0x2')],'unique':_0xb41d('0x3'),'allowNull':![]},'save_name':{'type':Sequelize[_0xb41d('0x2')]},'display_name':{'type':Sequelize[_0xb41d('0x2')],'defaultValue':''},'description':{'type':Sequelize[_0xb41d('0x2')]},'original_format':{'type':Sequelize[_0xb41d('0x2')]},'original_duration':{'type':Sequelize[_0xb41d('0x4')]},'original_sampleCount':{'type':Sequelize[_0xb41d('0x5')]},'original_channelCount':{'type':Sequelize[_0xb41d('0x6')]},'original_bitRate':{'type':Sequelize[_0xb41d('0x5')]},'original_sampleRate':{'type':Sequelize[_0xb41d('0x6')]},'converted_format':{'type':Sequelize[_0xb41d('0x2')]},'converted_duration':{'type':Sequelize['FLOAT']},'converted_sampleCount':{'type':Sequelize[_0xb41d('0x5')]},'converted_channelCount':{'type':Sequelize[_0xb41d('0x6')]},'converted_bitRate':{'type':Sequelize[_0xb41d('0x5')]},'converted_sampleRate':{'type':Sequelize[_0xb41d('0x6')]}};
\ No newline at end of file
index 7a5a620..4e6352f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3aee=['request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','end','status','offset','limit','count','set','json','apply','save','Sounds','UserProfileResource','destroy','then','sendStatus','error','stack','name','send','index','map','Sound','fieldName','type','key','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','show','params','rawAttributes','options','find','catch','save_name','converted_format','existsSync','join','root','server/files/sounds/converted','Sequelize','ValidationError','Sound\x20not\x20found','download','format','%s.%s','basename','file','originalname','extname','filename','substring','wav','server/files/sounds/original','info','Sound\x20upload\x20filepath:\x20%s','0777','unlinkSync','src','original_duration','duration','original_sampleCount','sampleCount','original_channelCount','channelCount','original_bitRate','bitRate','sampleRate','converted_duration','converted_sampleCount','converted_channelCount','converted_bitRate','chmodSync','create','body','role','userProfileId','user','get','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start','update','original_format','eml-format','rimraf','zip-dir','fast-json-patch'];(function(_0x5292a9,_0x37f0c5){var _0x32ff30=function(_0x5b081d){while(--_0x5b081d){_0x5292a9['push'](_0x5292a9['shift']());}};_0x32ff30(++_0x37f0c5);}(_0x3aee,0x17f));var _0xe3ae=function(_0x255ac0,_0x3f6645){_0x255ac0=_0x255ac0-0x0;var _0x437bf1=_0x3aee[_0x255ac0];return _0x437bf1;};'use strict';var emlformat=require(_0xe3ae('0x0'));var rimraf=require(_0xe3ae('0x1'));var zipdir=require(_0xe3ae('0x2'));var jsonpatch=require(_0xe3ae('0x3'));var rp=require(_0xe3ae('0x4'));var moment=require('moment');var BPromise=require(_0xe3ae('0x5'));var Mustache=require(_0xe3ae('0x6'));var util=require(_0xe3ae('0x7'));var path=require(_0xe3ae('0x8'));var sox=require(_0xe3ae('0x9'));var csv=require('to-csv');var ejs=require(_0xe3ae('0xa'));var fs=require('fs');var fs_extra=require(_0xe3ae('0xb'));var _=require(_0xe3ae('0xc'));var squel=require(_0xe3ae('0xd'));var crypto=require(_0xe3ae('0xe'));var jsforce=require(_0xe3ae('0xf'));var deskjs=require(_0xe3ae('0x10'));var toCsv=require(_0xe3ae('0x11'));var querystring=require(_0xe3ae('0x12'));var Papa=require(_0xe3ae('0x13'));var Redis=require(_0xe3ae('0x14'));var authService=require(_0xe3ae('0x15'));var qs=require(_0xe3ae('0x16'));var as=require(_0xe3ae('0x17'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe3ae('0x18'))(_0xe3ae('0x19'));var utils=require(_0xe3ae('0x1a'));var config=require(_0xe3ae('0x1b'));var licenseUtil=require('../../config/license/util');var db=require(_0xe3ae('0x1c'))['db'];function respondWithStatusCode(_0x6346da,_0x32c72c){_0x32c72c=_0x32c72c||0xcc;return function(_0x4486da){if(_0x4486da){return _0x6346da['sendStatus'](_0x32c72c);}return _0x6346da['status'](_0x32c72c)[_0xe3ae('0x1d')]();};}function respondWithResult(_0x2b1fb2,_0xc05092){_0xc05092=_0xc05092||0xc8;return function(_0x5c9f92){if(_0x5c9f92){return _0x2b1fb2[_0xe3ae('0x1e')](_0xc05092)['json'](_0x5c9f92);}};}function respondWithFilteredResult(_0x4b1a29,_0x26ee74){return function(_0x1ace72){if(_0x1ace72){var _0x4907f9=typeof _0x26ee74[_0xe3ae('0x1f')]==='undefined'&&typeof _0x26ee74[_0xe3ae('0x20')]==='undefined';var _0x3c1564=_0x1ace72[_0xe3ae('0x21')];var _0x243ddb=_0x4907f9?0x0:_0x26ee74['offset'];var _0x4eae68=_0x4907f9?_0x1ace72[_0xe3ae('0x21')]:_0x26ee74[_0xe3ae('0x1f')]+_0x26ee74[_0xe3ae('0x20')];var _0x150b2f;if(_0x4eae68>=_0x3c1564){_0x4eae68=_0x3c1564;_0x150b2f=0xc8;}else{_0x150b2f=0xce;}_0x4b1a29['status'](_0x150b2f);return _0x4b1a29[_0xe3ae('0x22')]('Content-Range',_0x243ddb+'-'+_0x4eae68+'/'+_0x3c1564)[_0xe3ae('0x23')](_0x1ace72);}return null;};}function patchUpdates(_0x147598){return function(_0xa0449){try{jsonpatch[_0xe3ae('0x24')](_0xa0449,_0x147598,!![]);}catch(_0x1e3aad){return BPromise['reject'](_0x1e3aad);}return _0xa0449[_0xe3ae('0x25')]();};}function saveUpdates(_0x4160d1,_0x483822){return function(_0x550461){if(_0x550461){return _0x550461['update'](_0x4160d1)['then'](function(_0x4c6d5e){return _0x4c6d5e;});}return null;};}function removeEntity(_0x3f04dc,_0x55eab2){return function(_0x24817e){if(_0x24817e){return _0x24817e['destroy']()['then'](function(){var _0x5dbacc=_0x24817e['get']({'plain':!![]});var _0x45184b=_0xe3ae('0x26');return db[_0xe3ae('0x27')][_0xe3ae('0x28')]({'where':{'type':_0x45184b,'resourceId':_0x5dbacc['id']}})[_0xe3ae('0x29')](function(){return _0x24817e;});})['then'](function(){_0x3f04dc[_0xe3ae('0x1e')](0xcc)[_0xe3ae('0x1d')]();});}};}function handleEntityNotFound(_0x4aa7ee,_0x5228c1){return function(_0x348caa){if(!_0x348caa){_0x4aa7ee[_0xe3ae('0x2a')](0x194);}return _0x348caa;};}function handleError(_0x1c1430,_0x46852a){_0x46852a=_0x46852a||0x1f4;return function(_0x34314d){logger[_0xe3ae('0x2b')](_0x34314d[_0xe3ae('0x2c')]);if(_0x34314d['name']){delete _0x34314d[_0xe3ae('0x2d')];}_0x1c1430[_0xe3ae('0x1e')](_0x46852a)[_0xe3ae('0x2e')](_0x34314d);};}exports[_0xe3ae('0x2f')]=function(_0x1a783a,_0x42c5e3){var _0x20677b={},_0x13296f={},_0x3aada1={'count':0x0,'rows':[]};var _0x47552c=_[_0xe3ae('0x30')](db[_0xe3ae('0x31')]['rawAttributes'],function(_0x15f3a9){return{'name':_0x15f3a9[_0xe3ae('0x32')],'type':_0x15f3a9[_0xe3ae('0x33')][_0xe3ae('0x34')]};});_0x13296f['model']=_[_0xe3ae('0x30')](_0x47552c,_0xe3ae('0x2d'));_0x13296f[_0xe3ae('0x35')]=_[_0xe3ae('0x36')](_0x1a783a[_0xe3ae('0x35')]);_0x13296f[_0xe3ae('0x37')]=_['intersection'](_0x13296f[_0xe3ae('0x38')],_0x13296f[_0xe3ae('0x35')]);_0x20677b[_0xe3ae('0x39')]=_[_0xe3ae('0x3a')](_0x13296f[_0xe3ae('0x38')],qs[_0xe3ae('0x3b')](_0x1a783a[_0xe3ae('0x35')][_0xe3ae('0x3b')]));_0x20677b[_0xe3ae('0x39')]=_0x20677b[_0xe3ae('0x39')][_0xe3ae('0x3c')]?_0x20677b[_0xe3ae('0x39')]:_0x13296f[_0xe3ae('0x38')];if(!_0x1a783a[_0xe3ae('0x35')][_0xe3ae('0x3d')]('nolimit')){_0x20677b[_0xe3ae('0x20')]=qs[_0xe3ae('0x20')](_0x1a783a[_0xe3ae('0x35')]['limit']);_0x20677b['offset']=qs[_0xe3ae('0x1f')](_0x1a783a['query'][_0xe3ae('0x1f')]);}_0x20677b['order']=qs[_0xe3ae('0x3e')](_0x1a783a[_0xe3ae('0x35')][_0xe3ae('0x3e')]);_0x20677b[_0xe3ae('0x3f')]=qs[_0xe3ae('0x37')](_[_0xe3ae('0x40')](_0x1a783a[_0xe3ae('0x35')],_0x13296f[_0xe3ae('0x37')]),_0x47552c);if(_0x1a783a[_0xe3ae('0x35')][_0xe3ae('0x41')]){_0x20677b[_0xe3ae('0x3f')]=_[_0xe3ae('0x42')](_0x20677b[_0xe3ae('0x3f')],{'$or':_[_0xe3ae('0x30')](_0x47552c,function(_0x49918e){if(_0x49918e[_0xe3ae('0x33')]!==_0xe3ae('0x43')){var _0x2a652c={};_0x2a652c[_0x49918e[_0xe3ae('0x2d')]]={'$like':'%'+_0x1a783a[_0xe3ae('0x35')][_0xe3ae('0x41')]+'%'};return _0x2a652c;}})});}_0x20677b=_[_0xe3ae('0x42')]({},_0x20677b,_0x1a783a['options']);var _0x30ed6c={'where':_0x20677b[_0xe3ae('0x3f')]};return db[_0xe3ae('0x31')][_0xe3ae('0x21')](_0x30ed6c)[_0xe3ae('0x29')](function(_0x17957a){_0x3aada1[_0xe3ae('0x21')]=_0x17957a;if(_0x1a783a[_0xe3ae('0x35')][_0xe3ae('0x44')]){_0x20677b[_0xe3ae('0x45')]=[{'all':!![]}];}return db[_0xe3ae('0x31')][_0xe3ae('0x46')](_0x20677b);})[_0xe3ae('0x29')](function(_0x40e2ef){_0x3aada1[_0xe3ae('0x47')]=_0x40e2ef;return _0x3aada1;})['then'](respondWithFilteredResult(_0x42c5e3,_0x20677b))['catch'](handleError(_0x42c5e3,null));};exports[_0xe3ae('0x48')]=function(_0x9a0f4f,_0x3487c6){var _0x17cf43={'raw':!![],'where':{'id':_0x9a0f4f[_0xe3ae('0x49')]['id']}},_0x1a1ec9={};_0x1a1ec9[_0xe3ae('0x38')]=_[_0xe3ae('0x36')](db['Sound'][_0xe3ae('0x4a')]);_0x1a1ec9[_0xe3ae('0x35')]=_[_0xe3ae('0x36')](_0x9a0f4f[_0xe3ae('0x35')]);_0x1a1ec9[_0xe3ae('0x37')]=_[_0xe3ae('0x3a')](_0x1a1ec9[_0xe3ae('0x38')],_0x1a1ec9[_0xe3ae('0x35')]);_0x17cf43[_0xe3ae('0x39')]=_['intersection'](_0x1a1ec9[_0xe3ae('0x38')],qs[_0xe3ae('0x3b')](_0x9a0f4f[_0xe3ae('0x35')]['fields']));_0x17cf43['attributes']=_0x17cf43[_0xe3ae('0x39')][_0xe3ae('0x3c')]?_0x17cf43[_0xe3ae('0x39')]:_0x1a1ec9[_0xe3ae('0x38')];if(_0x9a0f4f[_0xe3ae('0x35')]['includeAll']){_0x17cf43[_0xe3ae('0x45')]=[{'all':!![]}];}_0x17cf43=_['merge']({},_0x17cf43,_0x9a0f4f[_0xe3ae('0x4b')]);return db[_0xe3ae('0x31')][_0xe3ae('0x4c')](_0x17cf43)[_0xe3ae('0x29')](handleEntityNotFound(_0x3487c6,null))[_0xe3ae('0x29')](respondWithResult(_0x3487c6,null))[_0xe3ae('0x4d')](handleError(_0x3487c6,null));};exports['download']=function(_0x42c9d6,_0x357088,_0x145f38){return db['Sound'][_0xe3ae('0x4c')]({'where':{'id':_0x42c9d6[_0xe3ae('0x49')]['id']},'attributes':[_0xe3ae('0x2d'),_0xe3ae('0x4e'),_0xe3ae('0x4f')],'raw':!![]})[_0xe3ae('0x29')](handleEntityNotFound(_0x357088,null))[_0xe3ae('0x29')](function(_0x2b0c37){if(_0x2b0c37){if(!fs[_0xe3ae('0x50')](path[_0xe3ae('0x51')](config[_0xe3ae('0x52')],_0xe3ae('0x53'),_0x2b0c37[_0xe3ae('0x4e')]+'.'+_0x2b0c37['converted_format']))){throw new db[(_0xe3ae('0x54'))][(_0xe3ae('0x55'))](_0xe3ae('0x56'));}return _0x357088[_0xe3ae('0x57')](path[_0xe3ae('0x51')](config[_0xe3ae('0x52')],_0xe3ae('0x53'),util[_0xe3ae('0x58')](_0xe3ae('0x59'),_0x2b0c37[_0xe3ae('0x4e')],_0x2b0c37[_0xe3ae('0x4f')])),util[_0xe3ae('0x58')](_0xe3ae('0x59'),_0x2b0c37[_0xe3ae('0x2d')],_0x2b0c37['converted_format']));}return null;})[_0xe3ae('0x4d')](handleError(_0x357088,null));};exports['create']=function(_0x5149c0,_0x4776a9,_0x362a2d){var _0x5f1f1e={'name':path[_0xe3ae('0x5a')](_0x5149c0[_0xe3ae('0x5b')][_0xe3ae('0x5c')],path[_0xe3ae('0x5d')](_0x5149c0[_0xe3ae('0x5b')]['originalname'])),'save_name':path[_0xe3ae('0x5a')](_0x5149c0['file'][_0xe3ae('0x5e')],path['extname'](_0x5149c0['file']['filename'])),'original_format':path['extname'](_0x5149c0[_0xe3ae('0x5b')][_0xe3ae('0x5c')])[_0xe3ae('0x5f')](0x1),'converted_format':_0xe3ae('0x60')};var _0x511c2a=path[_0xe3ae('0x51')](config[_0xe3ae('0x52')],_0xe3ae('0x61'),_0x5149c0[_0xe3ae('0x5b')][_0xe3ae('0x5e')]);var _0x224b42=path[_0xe3ae('0x51')](config[_0xe3ae('0x52')],_0xe3ae('0x53'),util['format']('%s.%s',path[_0xe3ae('0x5a')](_0x5149c0['file']['filename'],path[_0xe3ae('0x5d')](_0x5149c0['file'][_0xe3ae('0x5e')])),_0x5f1f1e[_0xe3ae('0x4f')]));logger[_0xe3ae('0x62')](_0xe3ae('0x63'),_0x511c2a);logger[_0xe3ae('0x62')]('Sound\x20upload\x20destination:\x20%s',_0x224b42);try{fs['chmodSync'](_0x511c2a,parseInt(_0xe3ae('0x64'),0x8));var _0x564c11=sox['transcode'](_0x511c2a,_0x224b42,{'sampleRate':0x1f40,'format':_0xe3ae('0x60'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x564c11['on'](_0xe3ae('0x2b'),function(_0x507e10){fs[_0xe3ae('0x65')](_0x511c2a);_0x4776a9[_0xe3ae('0x1e')](0x1f4)[_0xe3ae('0x2e')](_0x507e10);});_0x564c11['on'](_0xe3ae('0x66'),function(_0x4552f0){_0x5f1f1e[_0xe3ae('0x67')]=isNaN(_0x4552f0[_0xe3ae('0x68')])?null:_0x4552f0[_0xe3ae('0x68')]*0x3e8;_0x5f1f1e[_0xe3ae('0x69')]=isNaN(_0x4552f0[_0xe3ae('0x6a')])?null:_0x4552f0['sampleCount'];_0x5f1f1e[_0xe3ae('0x6b')]=isNaN(_0x4552f0[_0xe3ae('0x6c')])?null:_0x4552f0[_0xe3ae('0x6c')];_0x5f1f1e[_0xe3ae('0x6d')]=isNaN(_0x4552f0['bitRate'])?null:_0x4552f0[_0xe3ae('0x6e')];_0x5f1f1e['original_sampleRate']=isNaN(_0x4552f0[_0xe3ae('0x6f')])?null:_0x4552f0[_0xe3ae('0x6f')];});_0x564c11['on']('dest',function(_0x39daca){_0x5f1f1e[_0xe3ae('0x70')]=isNaN(_0x39daca[_0xe3ae('0x68')])?null:_0x39daca['duration']*0x3e8;_0x5f1f1e[_0xe3ae('0x71')]=isNaN(_0x39daca['sampleCount'])?null:_0x39daca[_0xe3ae('0x6a')];_0x5f1f1e[_0xe3ae('0x72')]=isNaN(_0x39daca[_0xe3ae('0x6c')])?null:_0x39daca['channelCount'];_0x5f1f1e[_0xe3ae('0x73')]=isNaN(_0x39daca['bitRate'])?null:_0x39daca[_0xe3ae('0x6e')];_0x5f1f1e['converted_sampleRate']=isNaN(_0x39daca[_0xe3ae('0x6f')])?null:_0x39daca['sampleRate'];});_0x564c11['on'](_0xe3ae('0x1d'),function(){fs[_0xe3ae('0x74')](_0x224b42,parseInt(_0xe3ae('0x64'),0x8));return db[_0xe3ae('0x31')][_0xe3ae('0x75')](_0x5f1f1e)['then'](function(_0x483846){var _0x1e7202={'role':_0x5149c0[_0xe3ae('0x76')][_0xe3ae('0x77')],'userProfileId':_0x5149c0[_0xe3ae('0x76')][_0xe3ae('0x78')]};if(!_0x1e7202)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1e7202[_0xe3ae('0x77')]===_0xe3ae('0x79')){var _0x30b074=_0x483846[_0xe3ae('0x7a')]({'plain':!![]});return db[_0xe3ae('0x7b')][_0xe3ae('0x4c')]({'where':{'name':_0xe3ae('0x26'),'userProfileId':_0x1e7202[_0xe3ae('0x78')]},'raw':!![]})['then'](function(_0x10f3cc){if(_0x10f3cc&&_0x10f3cc[_0xe3ae('0x7c')]===0x0){return db[_0xe3ae('0x27')][_0xe3ae('0x75')]({'name':_0x30b074[_0xe3ae('0x2d')],'resourceId':_0x30b074['id'],'type':_0x10f3cc[_0xe3ae('0x2d')],'sectionId':_0x10f3cc['id']},{})[_0xe3ae('0x29')](function(){return _0x483846;});}else{return _0x483846;}})[_0xe3ae('0x4d')](function(_0x456f15){logger[_0xe3ae('0x2b')](_0xe3ae('0x7d'),_0x456f15);throw _0x456f15;});}return _0x483846;})[_0xe3ae('0x29')](respondWithResult(_0x4776a9,null))[_0xe3ae('0x4d')](handleError(_0x4776a9,null));});_0x564c11[_0xe3ae('0x7e')]();}catch(_0x3ddac2){_0x4776a9['status'](0x1f4)[_0xe3ae('0x2e')](_0x3ddac2);}};exports[_0xe3ae('0x7f')]=function(_0xa62d64,_0x417361,_0x5a45ba){return db['Sound'][_0xe3ae('0x4c')]({'where':{'id':_0xa62d64[_0xe3ae('0x49')]['id']}})[_0xe3ae('0x29')](handleEntityNotFound(_0x417361,null))[_0xe3ae('0x29')](saveUpdates(_['pick'](_0xa62d64['body'],['name','description']),null))[_0xe3ae('0x29')](respondWithResult(_0x417361,null))[_0xe3ae('0x4d')](handleError(_0x417361,null));};exports['delete']=function(_0x2bf7e5,_0x7c4828,_0x591a70){return db[_0xe3ae('0x31')][_0xe3ae('0x4c')]({'where':{'id':_0x2bf7e5[_0xe3ae('0x49')]['id']}})[_0xe3ae('0x29')](function(_0x5e4ae2){if(_0x5e4ae2){return _0x5e4ae2[_0xe3ae('0x28')]();}})[_0xe3ae('0x29')](function(_0x335274){var _0x5800ab=path[_0xe3ae('0x51')](config[_0xe3ae('0x52')],_0xe3ae('0x61'),util[_0xe3ae('0x58')]('%s.%s',_0x335274[_0xe3ae('0x4e')],_0x335274[_0xe3ae('0x80')]));var _0x679081=path[_0xe3ae('0x51')](config[_0xe3ae('0x52')],_0xe3ae('0x53'),util[_0xe3ae('0x58')](_0xe3ae('0x59'),_0x335274[_0xe3ae('0x4e')],_0x335274[_0xe3ae('0x4f')]));fs[_0xe3ae('0x65')](_0x5800ab);fs['unlinkSync'](_0x679081);return _0x335274;})[_0xe3ae('0x29')](function(_0x5c3df1){if(_0x5c3df1){return _0x7c4828[_0xe3ae('0x1e')](0xcc)[_0xe3ae('0x1d')]();}})[_0xe3ae('0x29')](handleEntityNotFound(_0x7c4828,null))[_0xe3ae('0x4d')](handleError(_0x7c4828,null));};
\ No newline at end of file
+var _0x97b9=['UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start','params','pick','description','delete','unlinkSync','rimraf','fast-json-patch','moment','bluebird','mustache','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','reject','save','update','then','destroy','get','Sounds','error','name','send','map','Sound','rawAttributes','fieldName','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','include','findAll','rows','show','includeAll','options','find','download','converted_format','existsSync','join','root','server/files/sounds/converted','save_name','Sequelize','ValidationError','Sound\x20not\x20found','%s.%s','format','catch','create','basename','file','originalname','extname','filename','substring','wav','server/files/sounds/original','Sound\x20upload\x20filepath:\x20%s','info','Sound\x20upload\x20destination:\x20%s','0777','transcode','src','duration','original_sampleCount','sampleCount','original_channelCount','channelCount','original_bitRate','bitRate','original_sampleRate','dest','converted_duration','converted_sampleCount','converted_channelCount','converted_bitRate','converted_sampleRate','role','body','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','autoAssociation'];(function(_0x54e26b,_0x18219e){var _0x2a82f5=function(_0x3023ac){while(--_0x3023ac){_0x54e26b['push'](_0x54e26b['shift']());}};_0x2a82f5(++_0x18219e);}(_0x97b9,0x17c));var _0x997b=function(_0xc188f6,_0x5925c1){_0xc188f6=_0xc188f6-0x0;var _0x378bd3=_0x97b9[_0xc188f6];return _0x378bd3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x997b('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x997b('0x1'));var rp=require('request-promise');var moment=require(_0x997b('0x2'));var BPromise=require(_0x997b('0x3'));var Mustache=require(_0x997b('0x4'));var util=require('util');var path=require('path');var sox=require(_0x997b('0x5'));var csv=require('to-csv');var ejs=require(_0x997b('0x6'));var fs=require('fs');var fs_extra=require(_0x997b('0x7'));var _=require(_0x997b('0x8'));var squel=require(_0x997b('0x9'));var crypto=require(_0x997b('0xa'));var jsforce=require(_0x997b('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x997b('0xc'));var querystring=require(_0x997b('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x997b('0xe'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x997b('0xf'));var logger=require('../../config/logger')(_0x997b('0x10'));var utils=require(_0x997b('0x11'));var config=require(_0x997b('0x12'));var licenseUtil=require(_0x997b('0x13'));var db=require(_0x997b('0x14'))['db'];function respondWithStatusCode(_0x1acca3,_0x16dde5){_0x16dde5=_0x16dde5||0xcc;return function(_0x5625a4){if(_0x5625a4){return _0x1acca3[_0x997b('0x15')](_0x16dde5);}return _0x1acca3[_0x997b('0x16')](_0x16dde5)[_0x997b('0x17')]();};}function respondWithResult(_0x4dc573,_0x617ba5){_0x617ba5=_0x617ba5||0xc8;return function(_0x2ff7fd){if(_0x2ff7fd){return _0x4dc573[_0x997b('0x16')](_0x617ba5)['json'](_0x2ff7fd);}};}function respondWithFilteredResult(_0x1ea95a,_0x3390bc){return function(_0x3d3c37){if(_0x3d3c37){var _0x269bc6=typeof _0x3390bc[_0x997b('0x18')]===_0x997b('0x19')&&typeof _0x3390bc[_0x997b('0x1a')]===_0x997b('0x19');var _0x1c17f7=_0x3d3c37['count'];var _0x104f91=_0x269bc6?0x0:_0x3390bc['offset'];var _0x4e4518=_0x269bc6?_0x3d3c37[_0x997b('0x1b')]:_0x3390bc[_0x997b('0x18')]+_0x3390bc[_0x997b('0x1a')];var _0x3a33a8;if(_0x4e4518>=_0x1c17f7){_0x4e4518=_0x1c17f7;_0x3a33a8=0xc8;}else{_0x3a33a8=0xce;}_0x1ea95a[_0x997b('0x16')](_0x3a33a8);return _0x1ea95a[_0x997b('0x1c')]('Content-Range',_0x104f91+'-'+_0x4e4518+'/'+_0x1c17f7)[_0x997b('0x1d')](_0x3d3c37);}return null;};}function patchUpdates(_0x542a2c){return function(_0x532cd9){try{jsonpatch[_0x997b('0x1e')](_0x532cd9,_0x542a2c,!![]);}catch(_0x1c8260){return BPromise[_0x997b('0x1f')](_0x1c8260);}return _0x532cd9[_0x997b('0x20')]();};}function saveUpdates(_0x5bf9a1,_0x11342b){return function(_0x28c7be){if(_0x28c7be){return _0x28c7be[_0x997b('0x21')](_0x5bf9a1)[_0x997b('0x22')](function(_0x11e2a9){return _0x11e2a9;});}return null;};}function removeEntity(_0x1b2f13,_0x2a7a73){return function(_0x30a8e5){if(_0x30a8e5){return _0x30a8e5[_0x997b('0x23')]()['then'](function(){var _0x1c9652=_0x30a8e5[_0x997b('0x24')]({'plain':!![]});var _0x57596a=_0x997b('0x25');return db['UserProfileResource']['destroy']({'where':{'type':_0x57596a,'resourceId':_0x1c9652['id']}})['then'](function(){return _0x30a8e5;});})['then'](function(){_0x1b2f13[_0x997b('0x16')](0xcc)[_0x997b('0x17')]();});}};}function handleEntityNotFound(_0x279de2,_0x564359){return function(_0x480c89){if(!_0x480c89){_0x279de2[_0x997b('0x15')](0x194);}return _0x480c89;};}function handleError(_0x49f0d4,_0x12f9b5){_0x12f9b5=_0x12f9b5||0x1f4;return function(_0x18336c){logger[_0x997b('0x26')](_0x18336c['stack']);if(_0x18336c['name']){delete _0x18336c[_0x997b('0x27')];}_0x49f0d4[_0x997b('0x16')](_0x12f9b5)[_0x997b('0x28')](_0x18336c);};}exports['index']=function(_0x3e888f,_0x4ec07a){var _0x443be9={},_0x128a80={},_0x313fbb={'count':0x0,'rows':[]};var _0x2e74a0=_[_0x997b('0x29')](db[_0x997b('0x2a')][_0x997b('0x2b')],function(_0x5a7357){return{'name':_0x5a7357[_0x997b('0x2c')],'type':_0x5a7357['type']['key']};});_0x128a80['model']=_[_0x997b('0x29')](_0x2e74a0,_0x997b('0x27'));_0x128a80[_0x997b('0x2d')]=_[_0x997b('0x2e')](_0x3e888f[_0x997b('0x2d')]);_0x128a80[_0x997b('0x2f')]=_[_0x997b('0x30')](_0x128a80['model'],_0x128a80[_0x997b('0x2d')]);_0x443be9[_0x997b('0x31')]=_[_0x997b('0x30')](_0x128a80[_0x997b('0x32')],qs[_0x997b('0x33')](_0x3e888f['query'][_0x997b('0x33')]));_0x443be9[_0x997b('0x31')]=_0x443be9[_0x997b('0x31')][_0x997b('0x34')]?_0x443be9['attributes']:_0x128a80['model'];if(!_0x3e888f[_0x997b('0x2d')][_0x997b('0x35')](_0x997b('0x36'))){_0x443be9[_0x997b('0x1a')]=qs[_0x997b('0x1a')](_0x3e888f[_0x997b('0x2d')][_0x997b('0x1a')]);_0x443be9[_0x997b('0x18')]=qs[_0x997b('0x18')](_0x3e888f[_0x997b('0x2d')][_0x997b('0x18')]);}_0x443be9[_0x997b('0x37')]=qs['sort'](_0x3e888f['query'][_0x997b('0x38')]);_0x443be9[_0x997b('0x39')]=qs[_0x997b('0x2f')](_['pick'](_0x3e888f[_0x997b('0x2d')],_0x128a80[_0x997b('0x2f')]),_0x2e74a0);if(_0x3e888f[_0x997b('0x2d')][_0x997b('0x3a')]){_0x443be9[_0x997b('0x39')]=_[_0x997b('0x3b')](_0x443be9[_0x997b('0x39')],{'$or':_[_0x997b('0x29')](_0x2e74a0,function(_0x64fd1b){if(_0x64fd1b['type']!=='VIRTUAL'){var _0x43ab0b={};_0x43ab0b[_0x64fd1b[_0x997b('0x27')]]={'$like':'%'+_0x3e888f['query'][_0x997b('0x3a')]+'%'};return _0x43ab0b;}})});}_0x443be9=_[_0x997b('0x3b')]({},_0x443be9,_0x3e888f['options']);var _0x106714={'where':_0x443be9[_0x997b('0x39')]};return db[_0x997b('0x2a')]['count'](_0x106714)[_0x997b('0x22')](function(_0x11dc9a){_0x313fbb['count']=_0x11dc9a;if(_0x3e888f[_0x997b('0x2d')]['includeAll']){_0x443be9[_0x997b('0x3c')]=[{'all':!![]}];}return db[_0x997b('0x2a')][_0x997b('0x3d')](_0x443be9);})[_0x997b('0x22')](function(_0x40739f){_0x313fbb[_0x997b('0x3e')]=_0x40739f;return _0x313fbb;})[_0x997b('0x22')](respondWithFilteredResult(_0x4ec07a,_0x443be9))['catch'](handleError(_0x4ec07a,null));};exports[_0x997b('0x3f')]=function(_0x473847,_0x3a3a65){var _0x47b61d={'raw':!![],'where':{'id':_0x473847['params']['id']}},_0x3a044a={};_0x3a044a[_0x997b('0x32')]=_[_0x997b('0x2e')](db['Sound']['rawAttributes']);_0x3a044a[_0x997b('0x2d')]=_['keys'](_0x473847[_0x997b('0x2d')]);_0x3a044a['filters']=_[_0x997b('0x30')](_0x3a044a[_0x997b('0x32')],_0x3a044a[_0x997b('0x2d')]);_0x47b61d[_0x997b('0x31')]=_[_0x997b('0x30')](_0x3a044a[_0x997b('0x32')],qs[_0x997b('0x33')](_0x473847[_0x997b('0x2d')][_0x997b('0x33')]));_0x47b61d[_0x997b('0x31')]=_0x47b61d[_0x997b('0x31')][_0x997b('0x34')]?_0x47b61d[_0x997b('0x31')]:_0x3a044a[_0x997b('0x32')];if(_0x473847[_0x997b('0x2d')][_0x997b('0x40')]){_0x47b61d[_0x997b('0x3c')]=[{'all':!![]}];}_0x47b61d=_[_0x997b('0x3b')]({},_0x47b61d,_0x473847[_0x997b('0x41')]);return db[_0x997b('0x2a')][_0x997b('0x42')](_0x47b61d)[_0x997b('0x22')](handleEntityNotFound(_0x3a3a65,null))[_0x997b('0x22')](respondWithResult(_0x3a3a65,null))['catch'](handleError(_0x3a3a65,null));};exports[_0x997b('0x43')]=function(_0x5006bd,_0x2e85d8,_0x175045){return db[_0x997b('0x2a')][_0x997b('0x42')]({'where':{'id':_0x5006bd['params']['id']},'attributes':[_0x997b('0x27'),'save_name',_0x997b('0x44')],'raw':!![]})[_0x997b('0x22')](handleEntityNotFound(_0x2e85d8,null))[_0x997b('0x22')](function(_0x43c8df){if(_0x43c8df){if(!fs[_0x997b('0x45')](path[_0x997b('0x46')](config[_0x997b('0x47')],_0x997b('0x48'),_0x43c8df[_0x997b('0x49')]+'.'+_0x43c8df['converted_format']))){throw new db[(_0x997b('0x4a'))][(_0x997b('0x4b'))](_0x997b('0x4c'));}return _0x2e85d8[_0x997b('0x43')](path[_0x997b('0x46')](config[_0x997b('0x47')],_0x997b('0x48'),util['format'](_0x997b('0x4d'),_0x43c8df[_0x997b('0x49')],_0x43c8df[_0x997b('0x44')])),util[_0x997b('0x4e')](_0x997b('0x4d'),_0x43c8df['name'],_0x43c8df[_0x997b('0x44')]));}return null;})[_0x997b('0x4f')](handleError(_0x2e85d8,null));};exports[_0x997b('0x50')]=function(_0x2eba2b,_0x220d2e,_0x1f0926){var _0x2d3a94={'name':path[_0x997b('0x51')](_0x2eba2b[_0x997b('0x52')][_0x997b('0x53')],path[_0x997b('0x54')](_0x2eba2b['file'][_0x997b('0x53')])),'save_name':path[_0x997b('0x51')](_0x2eba2b[_0x997b('0x52')][_0x997b('0x55')],path[_0x997b('0x54')](_0x2eba2b['file'][_0x997b('0x55')])),'original_format':path['extname'](_0x2eba2b[_0x997b('0x52')][_0x997b('0x53')])[_0x997b('0x56')](0x1),'converted_format':_0x997b('0x57')};var _0x3201e8=path[_0x997b('0x46')](config[_0x997b('0x47')],_0x997b('0x58'),_0x2eba2b[_0x997b('0x52')][_0x997b('0x55')]);var _0x41229b=path[_0x997b('0x46')](config[_0x997b('0x47')],_0x997b('0x48'),util[_0x997b('0x4e')]('%s.%s',path[_0x997b('0x51')](_0x2eba2b[_0x997b('0x52')][_0x997b('0x55')],path[_0x997b('0x54')](_0x2eba2b[_0x997b('0x52')][_0x997b('0x55')])),_0x2d3a94['converted_format']));logger['info'](_0x997b('0x59'),_0x3201e8);logger[_0x997b('0x5a')](_0x997b('0x5b'),_0x41229b);try{fs['chmodSync'](_0x3201e8,parseInt(_0x997b('0x5c'),0x8));var _0x170487=sox[_0x997b('0x5d')](_0x3201e8,_0x41229b,{'sampleRate':0x1f40,'format':_0x997b('0x57'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x170487['on'](_0x997b('0x26'),function(_0xef21ae){fs['unlinkSync'](_0x3201e8);_0x220d2e[_0x997b('0x16')](0x1f4)[_0x997b('0x28')](_0xef21ae);});_0x170487['on'](_0x997b('0x5e'),function(_0x30827d){_0x2d3a94['original_duration']=isNaN(_0x30827d[_0x997b('0x5f')])?null:_0x30827d['duration']*0x3e8;_0x2d3a94[_0x997b('0x60')]=isNaN(_0x30827d[_0x997b('0x61')])?null:_0x30827d[_0x997b('0x61')];_0x2d3a94[_0x997b('0x62')]=isNaN(_0x30827d[_0x997b('0x63')])?null:_0x30827d[_0x997b('0x63')];_0x2d3a94[_0x997b('0x64')]=isNaN(_0x30827d['bitRate'])?null:_0x30827d[_0x997b('0x65')];_0x2d3a94[_0x997b('0x66')]=isNaN(_0x30827d['sampleRate'])?null:_0x30827d['sampleRate'];});_0x170487['on'](_0x997b('0x67'),function(_0x44c2c9){_0x2d3a94[_0x997b('0x68')]=isNaN(_0x44c2c9[_0x997b('0x5f')])?null:_0x44c2c9[_0x997b('0x5f')]*0x3e8;_0x2d3a94[_0x997b('0x69')]=isNaN(_0x44c2c9[_0x997b('0x61')])?null:_0x44c2c9[_0x997b('0x61')];_0x2d3a94[_0x997b('0x6a')]=isNaN(_0x44c2c9[_0x997b('0x63')])?null:_0x44c2c9[_0x997b('0x63')];_0x2d3a94[_0x997b('0x6b')]=isNaN(_0x44c2c9[_0x997b('0x65')])?null:_0x44c2c9[_0x997b('0x65')];_0x2d3a94[_0x997b('0x6c')]=isNaN(_0x44c2c9['sampleRate'])?null:_0x44c2c9['sampleRate'];});_0x170487['on'](_0x997b('0x17'),function(){fs['chmodSync'](_0x41229b,parseInt(_0x997b('0x5c'),0x8));return db[_0x997b('0x2a')][_0x997b('0x50')](_0x2d3a94)[_0x997b('0x22')](function(_0x19df7e){var _0x3a072e={'role':_0x2eba2b['body'][_0x997b('0x6d')],'userProfileId':_0x2eba2b[_0x997b('0x6e')][_0x997b('0x6f')]};if(!_0x3a072e)throw new Error(_0x997b('0x70'));if(_0x3a072e[_0x997b('0x6d')]===_0x997b('0x71')){var _0x4dcafd=_0x19df7e['get']({'plain':!![]});return db[_0x997b('0x72')][_0x997b('0x42')]({'where':{'name':_0x997b('0x25'),'userProfileId':_0x3a072e[_0x997b('0x6f')]},'raw':!![]})[_0x997b('0x22')](function(_0x349ecc){if(_0x349ecc&&_0x349ecc[_0x997b('0x73')]===0x0){return db[_0x997b('0x74')][_0x997b('0x50')]({'name':_0x4dcafd[_0x997b('0x27')],'resourceId':_0x4dcafd['id'],'type':_0x349ecc[_0x997b('0x27')],'sectionId':_0x349ecc['id']},{})['then'](function(){return _0x19df7e;});}else{return _0x19df7e;}})[_0x997b('0x4f')](function(_0x39a23a){logger[_0x997b('0x26')](_0x997b('0x75'),_0x39a23a);throw _0x39a23a;});}return _0x19df7e;})[_0x997b('0x22')](respondWithResult(_0x220d2e,null))[_0x997b('0x4f')](handleError(_0x220d2e,null));});_0x170487[_0x997b('0x76')]();}catch(_0x3adac7){_0x220d2e[_0x997b('0x16')](0x1f4)[_0x997b('0x28')](_0x3adac7);}};exports[_0x997b('0x21')]=function(_0x5a2f88,_0x2db9a6,_0xaff1bc){return db[_0x997b('0x2a')][_0x997b('0x42')]({'where':{'id':_0x5a2f88[_0x997b('0x77')]['id']}})[_0x997b('0x22')](handleEntityNotFound(_0x2db9a6,null))[_0x997b('0x22')](saveUpdates(_[_0x997b('0x78')](_0x5a2f88[_0x997b('0x6e')],[_0x997b('0x27'),_0x997b('0x79')]),null))[_0x997b('0x22')](respondWithResult(_0x2db9a6,null))[_0x997b('0x4f')](handleError(_0x2db9a6,null));};exports[_0x997b('0x7a')]=function(_0x5e5629,_0x16f6d9,_0x5675b7){return db[_0x997b('0x2a')][_0x997b('0x42')]({'where':{'id':_0x5e5629[_0x997b('0x77')]['id']}})['then'](function(_0x20c4d7){if(_0x20c4d7){return _0x20c4d7[_0x997b('0x23')]();}})[_0x997b('0x22')](function(_0x512e02){var _0x483552=path[_0x997b('0x46')](config[_0x997b('0x47')],'server/files/sounds/original',util[_0x997b('0x4e')](_0x997b('0x4d'),_0x512e02[_0x997b('0x49')],_0x512e02['original_format']));var _0x467dbd=path['join'](config[_0x997b('0x47')],_0x997b('0x48'),util[_0x997b('0x4e')](_0x997b('0x4d'),_0x512e02[_0x997b('0x49')],_0x512e02[_0x997b('0x44')]));fs[_0x997b('0x7b')](_0x483552);fs['unlinkSync'](_0x467dbd);return _0x512e02;})[_0x997b('0x22')](function(_0x3d20da){if(_0x3d20da){return _0x16f6d9[_0x997b('0x16')](0xcc)[_0x997b('0x17')]();}})['then'](handleEntityNotFound(_0x16f6d9,null))[_0x997b('0x4f')](handleError(_0x16f6d9,null));};
\ No newline at end of file
index f4a1da0..c5ff98e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0586=['../../config/logger','api','request-promise','path','./sound.attributes','exports','define','Sound','tools_sounds','util'];(function(_0x580576,_0x2f107d){var _0x3f55a0=function(_0x2e180b){while(--_0x2e180b){_0x580576['push'](_0x580576['shift']());}};_0x3f55a0(++_0x2f107d);}(_0x0586,0xa9));var _0x6058=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0586[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x6058('0x0'));var logger=require(_0x6058('0x1'))(_0x6058('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x6058('0x3'));var fs=require('fs');var path=require(_0x6058('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x6058('0x5'));module[_0x6058('0x6')]=function(_0x5b9b98,_0x49c0ae){return _0x5b9b98[_0x6058('0x7')](_0x6058('0x8'),attributes,{'tableName':_0x6058('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x105b=['tools_sounds','lodash','moment','request-promise','rimraf','../../config/environment','./sound.attributes','exports','define','Sound'];(function(_0x42f009,_0x5e27b1){var _0x22a1e0=function(_0x297993){while(--_0x297993){_0x42f009['push'](_0x42f009['shift']());}};_0x22a1e0(++_0x5e27b1);}(_0x105b,0xdd));var _0xb105=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x105b[_0x1facfa];return _0x9ec701;};'use strict';var _=require(_0xb105('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xb105('0x1'));var BPromise=require('bluebird');var rp=require(_0xb105('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb105('0x3'));var config=require(_0xb105('0x4'));var attributes=require(_0xb105('0x5'));module[_0xb105('0x6')]=function(_0x2e4a7c,_0x2622ca){return _0x2e4a7c[_0xb105('0x7')](_0xb105('0x8'),attributes,{'tableName':_0xb105('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 91926a9..82f4ec0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe600=['ShowSound','find','options','where','attributes','map','include','model','lodash','util','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Sound,\x20%s,\x20%s','debug','Sound,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch'];(function(_0x8e4279,_0x57d83e){var _0x14950e=function(_0x505e75){while(--_0x505e75){_0x8e4279['push'](_0x8e4279['shift']());}};_0x14950e(++_0x57d83e);}(_0xe600,0x9e));var _0x0e60=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xe600[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x0e60('0x0'));var util=require(_0x0e60('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0e60('0x2'));var db=require(_0x0e60('0x3'))['db'];var utils=require(_0x0e60('0x4'));var logger=require(_0x0e60('0x5'))(_0x0e60('0x6'));var config=require(_0x0e60('0x7'));var jayson=require(_0x0e60('0x8'));var client=jayson['client'][_0x0e60('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5b3559,_0x7d92ab,_0x399830){return new BPromise(function(_0x10eee2,_0x40883d){return client[_0x0e60('0xa')](_0x5b3559,_0x399830)[_0x0e60('0xb')](function(_0x2d401d){logger[_0x0e60('0xc')](_0x0e60('0xd'),_0x7d92ab,'request\x20sent');logger[_0x0e60('0xe')](_0x0e60('0xf'),_0x7d92ab,_0x0e60('0x10'),JSON[_0x0e60('0x11')](_0x2d401d));if(_0x2d401d[_0x0e60('0x12')]){if(_0x2d401d[_0x0e60('0x12')]['code']===0x1f4){logger[_0x0e60('0x12')]('Sound,\x20%s,\x20%s',_0x7d92ab,_0x2d401d['error'][_0x0e60('0x13')]);return _0x40883d(_0x2d401d[_0x0e60('0x12')]['message']);}logger[_0x0e60('0x12')](_0x0e60('0xd'),_0x7d92ab,_0x2d401d[_0x0e60('0x12')]['message']);return _0x10eee2(_0x2d401d[_0x0e60('0x12')][_0x0e60('0x13')]);}else{logger[_0x0e60('0xc')](_0x0e60('0xd'),_0x7d92ab,_0x0e60('0x10'));_0x10eee2(_0x2d401d[_0x0e60('0x14')][_0x0e60('0x13')]);}})[_0x0e60('0x15')](function(_0x5e2ab3){logger[_0x0e60('0x12')](_0x0e60('0xd'),_0x7d92ab,_0x5e2ab3);_0x40883d(_0x5e2ab3);});});}exports[_0x0e60('0x16')]=function(_0x2a84b5){var _0x3eb365=this;return new Promise(function(_0x3e1bab,_0x3185e1){return db['Sound'][_0x0e60('0x17')]({'raw':_0x2a84b5[_0x0e60('0x18')]?_0x2a84b5['options']['raw']===undefined?!![]:![]:!![],'where':_0x2a84b5[_0x0e60('0x18')]?_0x2a84b5[_0x0e60('0x18')][_0x0e60('0x19')]||null:null,'attributes':_0x2a84b5[_0x0e60('0x18')]?_0x2a84b5[_0x0e60('0x18')][_0x0e60('0x1a')]||null:null,'include':_0x2a84b5[_0x0e60('0x18')]?_0x2a84b5[_0x0e60('0x18')]['include']?_[_0x0e60('0x1b')](_0x2a84b5['options'][_0x0e60('0x1c')],function(_0x3a56fe){return{'model':db[_0x3a56fe[_0x0e60('0x1d')]],'as':_0x3a56fe['as'],'attributes':_0x3a56fe[_0x0e60('0x1a')],'include':_0x3a56fe[_0x0e60('0x1c')]?_[_0x0e60('0x1b')](_0x3a56fe[_0x0e60('0x1c')],function(_0x40168c){return{'model':db[_0x40168c['model']],'as':_0x40168c['as'],'attributes':_0x40168c[_0x0e60('0x1a')],'include':_0x40168c[_0x0e60('0x1c')]?_[_0x0e60('0x1b')](_0x40168c[_0x0e60('0x1c')],function(_0x35a5c0){return{'model':db[_0x35a5c0[_0x0e60('0x1d')]],'as':_0x35a5c0['as'],'attributes':_0x35a5c0[_0x0e60('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x0e60('0xb')](function(_0x5261df){logger[_0x0e60('0xc')]('ShowSound',_0x2a84b5);logger[_0x0e60('0xe')](_0x0e60('0x16'),_0x2a84b5,JSON['stringify'](_0x5261df));_0x3e1bab(_0x5261df);})[_0x0e60('0x15')](function(_0x4d0b6d){logger['error'](_0x0e60('0x16'),_0x4d0b6d['message'],_0x2a84b5);_0x3185e1(_0x3eb365[_0x0e60('0x12')](0x1f4,_0x4d0b6d[_0x0e60('0x13')]));});});};
\ No newline at end of file
+var _0xa4bd=['options','raw','where','attributes','include','map','model','ShowSound','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','Sound,\x20%s,\x20%s','debug','Sound,\x20%s,\x20%s,\x20%s','error','code','message','info','request\x20sent','catch','Sound','find'];(function(_0x4d6f3a,_0x534b2e){var _0x175e17=function(_0x25741c){while(--_0x25741c){_0x4d6f3a['push'](_0x4d6f3a['shift']());}};_0x175e17(++_0x534b2e);}(_0xa4bd,0x1d0));var _0xda4b=function(_0x4c4174,_0x3d9e4b){_0x4c4174=_0x4c4174-0x0;var _0x166aae=_0xa4bd[_0x4c4174];return _0x166aae;};'use strict';var _=require(_0xda4b('0x0'));var util=require(_0xda4b('0x1'));var moment=require(_0xda4b('0x2'));var BPromise=require(_0xda4b('0x3'));var rs=require(_0xda4b('0x4'));var fs=require('fs');var Redis=require(_0xda4b('0x5'));var db=require(_0xda4b('0x6'))['db'];var utils=require(_0xda4b('0x7'));var logger=require(_0xda4b('0x8'))(_0xda4b('0x9'));var config=require(_0xda4b('0xa'));var jayson=require('jayson/promise');var client=jayson[_0xda4b('0xb')][_0xda4b('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x117246,_0x3c2264,_0x433e22){return new BPromise(function(_0x199959,_0x50953d){return client[_0xda4b('0xd')](_0x117246,_0x433e22)[_0xda4b('0xe')](function(_0x3cf150){logger['info'](_0xda4b('0xf'),_0x3c2264,'request\x20sent');logger[_0xda4b('0x10')](_0xda4b('0x11'),_0x3c2264,'request\x20sent',JSON['stringify'](_0x3cf150));if(_0x3cf150[_0xda4b('0x12')]){if(_0x3cf150[_0xda4b('0x12')][_0xda4b('0x13')]===0x1f4){logger[_0xda4b('0x12')](_0xda4b('0xf'),_0x3c2264,_0x3cf150[_0xda4b('0x12')][_0xda4b('0x14')]);return _0x50953d(_0x3cf150[_0xda4b('0x12')][_0xda4b('0x14')]);}logger[_0xda4b('0x12')](_0xda4b('0xf'),_0x3c2264,_0x3cf150[_0xda4b('0x12')]['message']);return _0x199959(_0x3cf150[_0xda4b('0x12')][_0xda4b('0x14')]);}else{logger[_0xda4b('0x15')](_0xda4b('0xf'),_0x3c2264,_0xda4b('0x16'));_0x199959(_0x3cf150['result'][_0xda4b('0x14')]);}})[_0xda4b('0x17')](function(_0x351b9f){logger['error'](_0xda4b('0xf'),_0x3c2264,_0x351b9f);_0x50953d(_0x351b9f);});});}exports['ShowSound']=function(_0x407e1b){var _0x4e7f78=this;return new Promise(function(_0x49131a,_0x262ab3){return db[_0xda4b('0x18')][_0xda4b('0x19')]({'raw':_0x407e1b[_0xda4b('0x1a')]?_0x407e1b[_0xda4b('0x1a')][_0xda4b('0x1b')]===undefined?!![]:![]:!![],'where':_0x407e1b['options']?_0x407e1b[_0xda4b('0x1a')][_0xda4b('0x1c')]||null:null,'attributes':_0x407e1b[_0xda4b('0x1a')]?_0x407e1b[_0xda4b('0x1a')][_0xda4b('0x1d')]||null:null,'include':_0x407e1b[_0xda4b('0x1a')]?_0x407e1b[_0xda4b('0x1a')][_0xda4b('0x1e')]?_[_0xda4b('0x1f')](_0x407e1b[_0xda4b('0x1a')][_0xda4b('0x1e')],function(_0x168e2a){return{'model':db[_0x168e2a[_0xda4b('0x20')]],'as':_0x168e2a['as'],'attributes':_0x168e2a['attributes'],'include':_0x168e2a[_0xda4b('0x1e')]?_[_0xda4b('0x1f')](_0x168e2a['include'],function(_0x3e48a6){return{'model':db[_0x3e48a6[_0xda4b('0x20')]],'as':_0x3e48a6['as'],'attributes':_0x3e48a6['attributes'],'include':_0x3e48a6[_0xda4b('0x1e')]?_['map'](_0x3e48a6[_0xda4b('0x1e')],function(_0x35f5e8){return{'model':db[_0x35f5e8[_0xda4b('0x20')]],'as':_0x35f5e8['as'],'attributes':_0x35f5e8['attributes']};}):[]};}):[]};}):[]:[]})[_0xda4b('0xe')](function(_0x5dd4cc){logger[_0xda4b('0x15')](_0xda4b('0x21'),_0x407e1b);logger[_0xda4b('0x10')](_0xda4b('0x21'),_0x407e1b,JSON[_0xda4b('0x22')](_0x5dd4cc));_0x49131a(_0x5dd4cc);})[_0xda4b('0x17')](function(_0x4a91fc){logger[_0xda4b('0x12')](_0xda4b('0x21'),_0x4a91fc['message'],_0x407e1b);_0x262ab3(_0x4e7f78[_0xda4b('0x12')](0x1f4,_0x4a91fc[_0xda4b('0x14')]));});});};
\ No newline at end of file
index 6e2b33e..e90a79e 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(_0x30b992,_0x2bbbe9){var _0x421407=function(_0x5406d5){while(--_0x5406d5){_0x30b992['push'](_0x30b992['shift']());}};_0x421407(++_0x2bbbe9);}(_0x5f66,0x1a0));var _0x65f6=function(_0x278e3c,_0x1c9cfd){_0x278e3c=_0x278e3c-0x0;var _0x3e2d9b=_0x5f66[_0x278e3c];return _0x3e2d9b;};'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 _0x0b0e=['./squareMessage.controller','get','isAuthenticated','index','show','post','create','/:id','delete','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x308944,_0x1c462e){var _0x2bf805=function(_0x1e6564){while(--_0x1e6564){_0x308944['push'](_0x308944['shift']());}};_0x2bf805(++_0x1c462e);}(_0x0b0e,0x187));var _0xe0b0=function(_0x5581ba,_0x268887){_0x5581ba=_0x5581ba-0x0;var _0x1e927f=_0x0b0e[_0x5581ba];return _0x1e927f;};'use strict';var multer=require(_0xe0b0('0x0'));var util=require('util');var path=require(_0xe0b0('0x1'));var timeout=require('connect-timeout');var express=require(_0xe0b0('0x2'));var router=express[_0xe0b0('0x3')]();var fs_extra=require(_0xe0b0('0x4'));var auth=require(_0xe0b0('0x5'));var interaction=require(_0xe0b0('0x6'));var config=require(_0xe0b0('0x7'));var controller=require(_0xe0b0('0x8'));router[_0xe0b0('0x9')]('/',auth[_0xe0b0('0xa')](),controller[_0xe0b0('0xb')]);router[_0xe0b0('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xe0b0('0xc')]);router[_0xe0b0('0xd')]('/',auth[_0xe0b0('0xa')](),controller[_0xe0b0('0xe')]);router['put'](_0xe0b0('0xf'),auth[_0xe0b0('0xa')](),controller['update']);router[_0xe0b0('0x10')](_0xe0b0('0xf'),auth['isAuthenticated'](),controller[_0xe0b0('0x11')]);module[_0xe0b0('0x12')]=router;
\ No newline at end of file
index e8f0ae9..0e8064a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c2a=['out','STRING','medium'];(function(_0x1958b4,_0x54472a){var _0x1c6d76=function(_0x304321){while(--_0x304321){_0x1958b4['push'](_0x1958b4['shift']());}};_0x1c6d76(++_0x54472a);}(_0x9c2a,0x85));var _0xa9c2=function(_0xb98d8d,_0x481423){_0xb98d8d=_0xb98d8d-0x0;var _0x489b15=_0x9c2a[_0xb98d8d];return _0x489b15;};'use strict';var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0xa9c2('0x0')]},'body':{'type':Sequelize['TEXT'](_0xa9c2('0x1')),'allowNull':![]},'direction':{'type':Sequelize['ENUM']('in',_0xa9c2('0x2')),'defaultValue':_0xa9c2('0x2'),'allowNull':![]},'providerName':{'type':Sequelize[_0xa9c2('0x0')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0xd31e=['out','sequelize','STRING','medium','ENUM'];(function(_0x2933cc,_0x315416){var _0x351f85=function(_0x2403d2){while(--_0x2403d2){_0x2933cc['push'](_0x2933cc['shift']());}};_0x351f85(++_0x315416);}(_0xd31e,0x169));var _0xed31=function(_0xa6d191,_0x4d2f54){_0xa6d191=_0xa6d191-0x0;var _0x4f2129=_0xd31e[_0xa6d191];return _0x4f2129;};'use strict';var Sequelize=require(_0xed31('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xed31('0x1')]},'body':{'type':Sequelize['TEXT'](_0xed31('0x2')),'allowNull':![]},'direction':{'type':Sequelize[_0xed31('0x3')]('in',_0xed31('0x4')),'defaultValue':'out','allowNull':![]},'providerName':{'type':Sequelize[_0xed31('0x1')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index a35edb1..11004e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22ea=['name','send','index','map','SquareMessage','rawAttributes','type','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','merge','options','include','show','includeAll','find','create','body','destroy','params','catch','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','error'];(function(_0x220afa,_0xf5f6cc){var _0x1b79d1=function(_0x178a39){while(--_0x178a39){_0x220afa['push'](_0x220afa['shift']());}};_0x1b79d1(++_0xf5f6cc);}(_0x22ea,0xb3));var _0xa22e=function(_0x2c0275,_0x7a6b6d){_0x2c0275=_0x2c0275-0x0;var _0x352cc9=_0x22ea[_0x2c0275];return _0x352cc9;};'use strict';var emlformat=require(_0xa22e('0x0'));var rimraf=require(_0xa22e('0x1'));var zipdir=require(_0xa22e('0x2'));var jsonpatch=require(_0xa22e('0x3'));var rp=require('request-promise');var moment=require(_0xa22e('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xa22e('0x5'));var util=require(_0xa22e('0x6'));var path=require(_0xa22e('0x7'));var sox=require(_0xa22e('0x8'));var csv=require(_0xa22e('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa22e('0xa'));var squel=require(_0xa22e('0xb'));var crypto=require(_0xa22e('0xc'));var jsforce=require(_0xa22e('0xd'));var deskjs=require(_0xa22e('0xe'));var toCsv=require(_0xa22e('0x9'));var querystring=require(_0xa22e('0xf'));var Papa=require(_0xa22e('0x10'));var Redis=require(_0xa22e('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xa22e('0x12'));var as=require(_0xa22e('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa22e('0x14'))(_0xa22e('0x15'));var utils=require(_0xa22e('0x16'));var config=require(_0xa22e('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x16a29b,_0x2a3eea){_0x2a3eea=_0x2a3eea||0xcc;return function(_0x19e3a2){if(_0x19e3a2){return _0x16a29b[_0xa22e('0x18')](_0x2a3eea);}return _0x16a29b[_0xa22e('0x19')](_0x2a3eea)[_0xa22e('0x1a')]();};}function respondWithResult(_0x36d769,_0x365ce6){_0x365ce6=_0x365ce6||0xc8;return function(_0x2cd615){if(_0x2cd615){return _0x36d769[_0xa22e('0x19')](_0x365ce6)[_0xa22e('0x1b')](_0x2cd615);}};}function respondWithFilteredResult(_0x1021cb,_0x2b59a0){return function(_0x433cf0){if(_0x433cf0){var _0xff49da=typeof _0x2b59a0[_0xa22e('0x1c')]===_0xa22e('0x1d')&&typeof _0x2b59a0[_0xa22e('0x1e')]===_0xa22e('0x1d');var _0x6de3ed=_0x433cf0[_0xa22e('0x1f')];var _0x28eef5=_0xff49da?0x0:_0x2b59a0[_0xa22e('0x1c')];var _0x3ea0df=_0xff49da?_0x433cf0[_0xa22e('0x1f')]:_0x2b59a0['offset']+_0x2b59a0[_0xa22e('0x1e')];var _0x39a0bb;if(_0x3ea0df>=_0x6de3ed){_0x3ea0df=_0x6de3ed;_0x39a0bb=0xc8;}else{_0x39a0bb=0xce;}_0x1021cb[_0xa22e('0x19')](_0x39a0bb);return _0x1021cb[_0xa22e('0x20')](_0xa22e('0x21'),_0x28eef5+'-'+_0x3ea0df+'/'+_0x6de3ed)['json'](_0x433cf0);}return null;};}function patchUpdates(_0xc1022e){return function(_0x3b1a9f){try{jsonpatch[_0xa22e('0x22')](_0x3b1a9f,_0xc1022e,!![]);}catch(_0x5a3790){return BPromise[_0xa22e('0x23')](_0x5a3790);}return _0x3b1a9f[_0xa22e('0x24')]();};}function saveUpdates(_0xcccaca,_0x283318){return function(_0x301b30){if(_0x301b30){return _0x301b30[_0xa22e('0x25')](_0xcccaca)['then'](function(_0x5c5717){return _0x5c5717;});}return null;};}function removeEntity(_0x10ed24,_0x17d8d7){return function(_0x364cf0){if(_0x364cf0){return _0x364cf0['destroy']()[_0xa22e('0x26')](function(){_0x10ed24[_0xa22e('0x19')](0xcc)[_0xa22e('0x1a')]();});}};}function handleEntityNotFound(_0x1a7cd8,_0x150f0a){return function(_0x252d24){if(!_0x252d24){_0x1a7cd8['sendStatus'](0x194);}return _0x252d24;};}function handleError(_0x4c34d4,_0x2461da){_0x2461da=_0x2461da||0x1f4;return function(_0x5bfa2e){logger[_0xa22e('0x27')](_0x5bfa2e['stack']);if(_0x5bfa2e[_0xa22e('0x28')]){delete _0x5bfa2e[_0xa22e('0x28')];}_0x4c34d4[_0xa22e('0x19')](_0x2461da)[_0xa22e('0x29')](_0x5bfa2e);};}exports[_0xa22e('0x2a')]=function(_0x49298f,_0x5d7db7){var _0x4251e7={},_0x46124b={},_0x2319bc={'count':0x0,'rows':[]};var _0xcfc075=_[_0xa22e('0x2b')](db[_0xa22e('0x2c')][_0xa22e('0x2d')],function(_0x26d421){return{'name':_0x26d421['fieldName'],'type':_0x26d421[_0xa22e('0x2e')]['key']};});_0x46124b[_0xa22e('0x2f')]=_['map'](_0xcfc075,_0xa22e('0x28'));_0x46124b[_0xa22e('0x30')]=_[_0xa22e('0x31')](_0x49298f[_0xa22e('0x30')]);_0x46124b[_0xa22e('0x32')]=_['intersection'](_0x46124b[_0xa22e('0x2f')],_0x46124b[_0xa22e('0x30')]);_0x4251e7[_0xa22e('0x33')]=_[_0xa22e('0x34')](_0x46124b[_0xa22e('0x2f')],qs[_0xa22e('0x35')](_0x49298f[_0xa22e('0x30')][_0xa22e('0x35')]));_0x4251e7['attributes']=_0x4251e7[_0xa22e('0x33')][_0xa22e('0x36')]?_0x4251e7[_0xa22e('0x33')]:_0x46124b['model'];if(!_0x49298f[_0xa22e('0x30')][_0xa22e('0x37')](_0xa22e('0x38'))){_0x4251e7[_0xa22e('0x1e')]=qs['limit'](_0x49298f[_0xa22e('0x30')][_0xa22e('0x1e')]);_0x4251e7[_0xa22e('0x1c')]=qs['offset'](_0x49298f['query'][_0xa22e('0x1c')]);}_0x4251e7['order']=qs['sort'](_0x49298f[_0xa22e('0x30')][_0xa22e('0x39')]);_0x4251e7[_0xa22e('0x3a')]=qs[_0xa22e('0x32')](_[_0xa22e('0x3b')](_0x49298f['query'],_0x46124b[_0xa22e('0x32')]),_0xcfc075);if(_0x49298f[_0xa22e('0x30')][_0xa22e('0x3c')]){_0x4251e7[_0xa22e('0x3a')]=_['merge'](_0x4251e7[_0xa22e('0x3a')],{'$or':_[_0xa22e('0x2b')](_0xcfc075,function(_0x71db2c){if(_0x71db2c['type']!==_0xa22e('0x3d')){var _0x1bfa32={};_0x1bfa32[_0x71db2c[_0xa22e('0x28')]]={'$like':'%'+_0x49298f[_0xa22e('0x30')][_0xa22e('0x3c')]+'%'};return _0x1bfa32;}})});}_0x4251e7=_[_0xa22e('0x3e')]({},_0x4251e7,_0x49298f[_0xa22e('0x3f')]);var _0x513918={'where':_0x4251e7[_0xa22e('0x3a')]};return db[_0xa22e('0x2c')]['count'](_0x513918)['then'](function(_0x532702){_0x2319bc[_0xa22e('0x1f')]=_0x532702;if(_0x49298f['query']['includeAll']){_0x4251e7[_0xa22e('0x40')]=[{'all':!![]}];}return db[_0xa22e('0x2c')]['findAll'](_0x4251e7);})['then'](function(_0x5af37d){_0x2319bc['rows']=_0x5af37d;return _0x2319bc;})[_0xa22e('0x26')](respondWithFilteredResult(_0x5d7db7,_0x4251e7))['catch'](handleError(_0x5d7db7,null));};exports[_0xa22e('0x41')]=function(_0x841e22,_0x1edaa2){var _0x1b95fa={'raw':!![],'where':{'id':_0x841e22['params']['id']}},_0x9daedc={};_0x9daedc['model']=_['keys'](db['SquareMessage'][_0xa22e('0x2d')]);_0x9daedc[_0xa22e('0x30')]=_[_0xa22e('0x31')](_0x841e22[_0xa22e('0x30')]);_0x9daedc[_0xa22e('0x32')]=_[_0xa22e('0x34')](_0x9daedc[_0xa22e('0x2f')],_0x9daedc[_0xa22e('0x30')]);_0x1b95fa[_0xa22e('0x33')]=_[_0xa22e('0x34')](_0x9daedc[_0xa22e('0x2f')],qs[_0xa22e('0x35')](_0x841e22[_0xa22e('0x30')][_0xa22e('0x35')]));_0x1b95fa[_0xa22e('0x33')]=_0x1b95fa[_0xa22e('0x33')][_0xa22e('0x36')]?_0x1b95fa[_0xa22e('0x33')]:_0x9daedc['model'];if(_0x841e22[_0xa22e('0x30')][_0xa22e('0x42')]){_0x1b95fa[_0xa22e('0x40')]=[{'all':!![]}];}_0x1b95fa=_[_0xa22e('0x3e')]({},_0x1b95fa,_0x841e22[_0xa22e('0x3f')]);return db[_0xa22e('0x2c')][_0xa22e('0x43')](_0x1b95fa)[_0xa22e('0x26')](handleEntityNotFound(_0x1edaa2,null))[_0xa22e('0x26')](respondWithResult(_0x1edaa2,null))['catch'](handleError(_0x1edaa2,null));};exports['create']=function(_0x29931e,_0xf889f0){return db['SquareMessage'][_0xa22e('0x44')](_0x29931e[_0xa22e('0x45')],{})['then'](respondWithResult(_0xf889f0,0xc9))['catch'](handleError(_0xf889f0,null));};exports[_0xa22e('0x25')]=function(_0x5b85e8,_0x1c070a){if(_0x5b85e8[_0xa22e('0x45')]['id']){delete _0x5b85e8[_0xa22e('0x45')]['id'];}return db[_0xa22e('0x2c')][_0xa22e('0x43')]({'where':{'id':_0x5b85e8['params']['id']}})['then'](handleEntityNotFound(_0x1c070a,null))[_0xa22e('0x26')](saveUpdates(_0x5b85e8[_0xa22e('0x45')],null))[_0xa22e('0x26')](respondWithResult(_0x1c070a,null))['catch'](handleError(_0x1c070a,null));};exports[_0xa22e('0x46')]=function(_0x29e302,_0x163c75){return db['SquareMessage']['find']({'where':{'id':_0x29e302[_0xa22e('0x47')]['id']}})['then'](handleEntityNotFound(_0x163c75,null))[_0xa22e('0x26')](removeEntity(_0x163c75,null))[_0xa22e('0x48')](handleError(_0x163c75,null));};
\ No newline at end of file
+var _0x1d21=['end','offset','undefined','limit','count','set','Content-Range','json','reject','update','destroy','then','error','name','send','index','map','SquareMessage','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','include','findAll','rows','catch','show','length','find','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status'];(function(_0x45b7f6,_0x992199){var _0x3e493a=function(_0x3949a8){while(--_0x3949a8){_0x45b7f6['push'](_0x45b7f6['shift']());}};_0x3e493a(++_0x992199);}(_0x1d21,0x158));var _0x11d2=function(_0x623e7,_0x1bef7d){_0x623e7=_0x623e7-0x0;var _0x121131=_0x1d21[_0x623e7];return _0x121131;};'use strict';var emlformat=require(_0x11d2('0x0'));var rimraf=require(_0x11d2('0x1'));var zipdir=require(_0x11d2('0x2'));var jsonpatch=require(_0x11d2('0x3'));var rp=require('request-promise');var moment=require(_0x11d2('0x4'));var BPromise=require(_0x11d2('0x5'));var Mustache=require(_0x11d2('0x6'));var util=require(_0x11d2('0x7'));var path=require('path');var sox=require(_0x11d2('0x8'));var csv=require(_0x11d2('0x9'));var ejs=require(_0x11d2('0xa'));var fs=require('fs');var fs_extra=require(_0x11d2('0xb'));var _=require(_0x11d2('0xc'));var squel=require(_0x11d2('0xd'));var crypto=require(_0x11d2('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x11d2('0xf'));var toCsv=require(_0x11d2('0x9'));var querystring=require('querystring');var Papa=require(_0x11d2('0x10'));var Redis=require('ioredis');var authService=require(_0x11d2('0x11'));var qs=require(_0x11d2('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x11d2('0x13'));var logger=require(_0x11d2('0x14'))(_0x11d2('0x15'));var utils=require(_0x11d2('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x11d2('0x17'))['db'];function respondWithStatusCode(_0x39d0b1,_0x3ab888){_0x3ab888=_0x3ab888||0xcc;return function(_0x5980c5){if(_0x5980c5){return _0x39d0b1[_0x11d2('0x18')](_0x3ab888);}return _0x39d0b1[_0x11d2('0x19')](_0x3ab888)[_0x11d2('0x1a')]();};}function respondWithResult(_0x234139,_0x56ffe8){_0x56ffe8=_0x56ffe8||0xc8;return function(_0xf78df5){if(_0xf78df5){return _0x234139[_0x11d2('0x19')](_0x56ffe8)['json'](_0xf78df5);}};}function respondWithFilteredResult(_0x31b5a2,_0x111b0c){return function(_0x39ce12){if(_0x39ce12){var _0x364e3e=typeof _0x111b0c[_0x11d2('0x1b')]===_0x11d2('0x1c')&&typeof _0x111b0c[_0x11d2('0x1d')]===_0x11d2('0x1c');var _0x233ecb=_0x39ce12[_0x11d2('0x1e')];var _0x255b1e=_0x364e3e?0x0:_0x111b0c[_0x11d2('0x1b')];var _0x3e0721=_0x364e3e?_0x39ce12['count']:_0x111b0c['offset']+_0x111b0c[_0x11d2('0x1d')];var _0x40e203;if(_0x3e0721>=_0x233ecb){_0x3e0721=_0x233ecb;_0x40e203=0xc8;}else{_0x40e203=0xce;}_0x31b5a2['status'](_0x40e203);return _0x31b5a2[_0x11d2('0x1f')](_0x11d2('0x20'),_0x255b1e+'-'+_0x3e0721+'/'+_0x233ecb)[_0x11d2('0x21')](_0x39ce12);}return null;};}function patchUpdates(_0x1e5078){return function(_0xc7ff13){try{jsonpatch['apply'](_0xc7ff13,_0x1e5078,!![]);}catch(_0x29e5a6){return BPromise[_0x11d2('0x22')](_0x29e5a6);}return _0xc7ff13['save']();};}function saveUpdates(_0x1df642,_0x72595c){return function(_0x2e6ecc){if(_0x2e6ecc){return _0x2e6ecc[_0x11d2('0x23')](_0x1df642)['then'](function(_0xd611df){return _0xd611df;});}return null;};}function removeEntity(_0x246203,_0x34b73d){return function(_0x203a5a){if(_0x203a5a){return _0x203a5a[_0x11d2('0x24')]()[_0x11d2('0x25')](function(){_0x246203[_0x11d2('0x19')](0xcc)[_0x11d2('0x1a')]();});}};}function handleEntityNotFound(_0x5dd42a,_0x203ec4){return function(_0xfecd81){if(!_0xfecd81){_0x5dd42a['sendStatus'](0x194);}return _0xfecd81;};}function handleError(_0x41e9af,_0x51d4b6){_0x51d4b6=_0x51d4b6||0x1f4;return function(_0x5ef7ba){logger[_0x11d2('0x26')](_0x5ef7ba['stack']);if(_0x5ef7ba[_0x11d2('0x27')]){delete _0x5ef7ba[_0x11d2('0x27')];}_0x41e9af[_0x11d2('0x19')](_0x51d4b6)[_0x11d2('0x28')](_0x5ef7ba);};}exports[_0x11d2('0x29')]=function(_0x215c54,_0x143a9d){var _0x2152c5={},_0x4dfc84={},_0x190fd2={'count':0x0,'rows':[]};var _0x1f5a88=_[_0x11d2('0x2a')](db[_0x11d2('0x2b')][_0x11d2('0x2c')],function(_0x28f56b){return{'name':_0x28f56b[_0x11d2('0x2d')],'type':_0x28f56b[_0x11d2('0x2e')][_0x11d2('0x2f')]};});_0x4dfc84[_0x11d2('0x30')]=_[_0x11d2('0x2a')](_0x1f5a88,_0x11d2('0x27'));_0x4dfc84[_0x11d2('0x31')]=_[_0x11d2('0x32')](_0x215c54['query']);_0x4dfc84[_0x11d2('0x33')]=_[_0x11d2('0x34')](_0x4dfc84[_0x11d2('0x30')],_0x4dfc84[_0x11d2('0x31')]);_0x2152c5[_0x11d2('0x35')]=_['intersection'](_0x4dfc84[_0x11d2('0x30')],qs[_0x11d2('0x36')](_0x215c54[_0x11d2('0x31')][_0x11d2('0x36')]));_0x2152c5[_0x11d2('0x35')]=_0x2152c5['attributes']['length']?_0x2152c5[_0x11d2('0x35')]:_0x4dfc84[_0x11d2('0x30')];if(!_0x215c54[_0x11d2('0x31')][_0x11d2('0x37')](_0x11d2('0x38'))){_0x2152c5['limit']=qs['limit'](_0x215c54[_0x11d2('0x31')]['limit']);_0x2152c5[_0x11d2('0x1b')]=qs[_0x11d2('0x1b')](_0x215c54['query']['offset']);}_0x2152c5[_0x11d2('0x39')]=qs[_0x11d2('0x3a')](_0x215c54[_0x11d2('0x31')][_0x11d2('0x3a')]);_0x2152c5['where']=qs[_0x11d2('0x33')](_[_0x11d2('0x3b')](_0x215c54['query'],_0x4dfc84['filters']),_0x1f5a88);if(_0x215c54[_0x11d2('0x31')][_0x11d2('0x3c')]){_0x2152c5[_0x11d2('0x3d')]=_[_0x11d2('0x3e')](_0x2152c5[_0x11d2('0x3d')],{'$or':_[_0x11d2('0x2a')](_0x1f5a88,function(_0x12d024){if(_0x12d024[_0x11d2('0x2e')]!==_0x11d2('0x3f')){var _0x491a99={};_0x491a99[_0x12d024[_0x11d2('0x27')]]={'$like':'%'+_0x215c54[_0x11d2('0x31')][_0x11d2('0x3c')]+'%'};return _0x491a99;}})});}_0x2152c5=_[_0x11d2('0x3e')]({},_0x2152c5,_0x215c54['options']);var _0x1cd5be={'where':_0x2152c5[_0x11d2('0x3d')]};return db[_0x11d2('0x2b')][_0x11d2('0x1e')](_0x1cd5be)[_0x11d2('0x25')](function(_0x4aae7d){_0x190fd2['count']=_0x4aae7d;if(_0x215c54['query']['includeAll']){_0x2152c5[_0x11d2('0x40')]=[{'all':!![]}];}return db[_0x11d2('0x2b')][_0x11d2('0x41')](_0x2152c5);})[_0x11d2('0x25')](function(_0x3bf84d){_0x190fd2[_0x11d2('0x42')]=_0x3bf84d;return _0x190fd2;})[_0x11d2('0x25')](respondWithFilteredResult(_0x143a9d,_0x2152c5))[_0x11d2('0x43')](handleError(_0x143a9d,null));};exports[_0x11d2('0x44')]=function(_0xdec612,_0x1997d9){var _0x237938={'raw':!![],'where':{'id':_0xdec612['params']['id']}},_0x3690a1={};_0x3690a1[_0x11d2('0x30')]=_['keys'](db['SquareMessage'][_0x11d2('0x2c')]);_0x3690a1[_0x11d2('0x31')]=_[_0x11d2('0x32')](_0xdec612[_0x11d2('0x31')]);_0x3690a1[_0x11d2('0x33')]=_[_0x11d2('0x34')](_0x3690a1[_0x11d2('0x30')],_0x3690a1[_0x11d2('0x31')]);_0x237938[_0x11d2('0x35')]=_[_0x11d2('0x34')](_0x3690a1[_0x11d2('0x30')],qs[_0x11d2('0x36')](_0xdec612[_0x11d2('0x31')][_0x11d2('0x36')]));_0x237938['attributes']=_0x237938[_0x11d2('0x35')][_0x11d2('0x45')]?_0x237938[_0x11d2('0x35')]:_0x3690a1[_0x11d2('0x30')];if(_0xdec612[_0x11d2('0x31')]['includeAll']){_0x237938[_0x11d2('0x40')]=[{'all':!![]}];}_0x237938=_['merge']({},_0x237938,_0xdec612['options']);return db[_0x11d2('0x2b')][_0x11d2('0x46')](_0x237938)[_0x11d2('0x25')](handleEntityNotFound(_0x1997d9,null))[_0x11d2('0x25')](respondWithResult(_0x1997d9,null))[_0x11d2('0x43')](handleError(_0x1997d9,null));};exports[_0x11d2('0x47')]=function(_0x3bcdbf,_0x524160){return db['SquareMessage'][_0x11d2('0x47')](_0x3bcdbf['body'],{})[_0x11d2('0x25')](respondWithResult(_0x524160,0xc9))[_0x11d2('0x43')](handleError(_0x524160,null));};exports[_0x11d2('0x23')]=function(_0x42039f,_0x4a44cb){if(_0x42039f['body']['id']){delete _0x42039f[_0x11d2('0x48')]['id'];}return db['SquareMessage'][_0x11d2('0x46')]({'where':{'id':_0x42039f[_0x11d2('0x49')]['id']}})['then'](handleEntityNotFound(_0x4a44cb,null))[_0x11d2('0x25')](saveUpdates(_0x42039f[_0x11d2('0x48')],null))[_0x11d2('0x25')](respondWithResult(_0x4a44cb,null))['catch'](handleError(_0x4a44cb,null));};exports[_0x11d2('0x24')]=function(_0x5c193f,_0x58bac9){return db[_0x11d2('0x2b')]['find']({'where':{'id':_0x5c193f['params']['id']}})[_0x11d2('0x25')](handleEntityNotFound(_0x58bac9,null))[_0x11d2('0x25')](removeEntity(_0x58bac9,null))[_0x11d2('0x43')](handleError(_0x58bac9,null));};
\ No newline at end of file
index adf78ba..13b3876 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7148=['lodash','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./squareMessage.attributes','define','square_messages'];(function(_0x53aa73,_0x3306db){var _0x5afcea=function(_0x234ae8){while(--_0x234ae8){_0x53aa73['push'](_0x53aa73['shift']());}};_0x5afcea(++_0x3306db);}(_0x7148,0x64));var _0x8714=function(_0x2bf352,_0x5bcea2){_0x2bf352=_0x2bf352-0x0;var _0xb35dc=_0x7148[_0x2bf352];return _0xb35dc;};'use strict';var _=require(_0x8714('0x0'));var util=require('util');var logger=require(_0x8714('0x1'))(_0x8714('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x8714('0x3'));var fs=require('fs');var path=require(_0x8714('0x4'));var rimraf=require(_0x8714('0x5'));var config=require(_0x8714('0x6'));var attributes=require(_0x8714('0x7'));module['exports']=function(_0x1091f7,_0x23d55c){return _0x1091f7[_0x8714('0x8')]('SquareMessage',attributes,{'tableName':_0x8714('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4ef5=['api','moment','bluebird','request-promise','exports','define','SquareMessage','square_messages','lodash','../../config/logger'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4ef5,0x94));var _0x54ef=function(_0x481f9d,_0x59bef3){_0x481f9d=_0x481f9d-0x0;var _0x60ec94=_0x4ef5[_0x481f9d];return _0x60ec94;};'use strict';var _=require(_0x54ef('0x0'));var util=require('util');var logger=require(_0x54ef('0x1'))(_0x54ef('0x2'));var moment=require(_0x54ef('0x3'));var BPromise=require(_0x54ef('0x4'));var rp=require(_0x54ef('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./squareMessage.attributes');module[_0x54ef('0x6')]=function(_0x322718,_0x3b5989){return _0x322718[_0x54ef('0x7')](_0x54ef('0x8'),attributes,{'tableName':_0x54ef('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0628539..410e10d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ba8=['stringify','error','message','result','catch','CreateSquareMessage','create','body','options','raw','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','jayson/promise','client','request','then','info','SquareMessage,\x20%s,\x20%s','request\x20sent','debug','SquareMessage,\x20%s,\x20%s,\x20%s'];(function(_0x3c6dce,_0x5424dd){var _0x1450e9=function(_0xd51b5c){while(--_0xd51b5c){_0x3c6dce['push'](_0x3c6dce['shift']());}};_0x1450e9(++_0x5424dd);}(_0x7ba8,0x91));var _0x87ba=function(_0x2efd8b,_0x36c86f){_0x2efd8b=_0x2efd8b-0x0;var _0x1c1a0d=_0x7ba8[_0x2efd8b];return _0x1c1a0d;};'use strict';var _=require(_0x87ba('0x0'));var util=require(_0x87ba('0x1'));var moment=require(_0x87ba('0x2'));var BPromise=require(_0x87ba('0x3'));var rs=require(_0x87ba('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x87ba('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x87ba('0x6'))(_0x87ba('0x7'));var config=require('../../config/environment');var jayson=require(_0x87ba('0x8'));var client=jayson[_0x87ba('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4e64bc,_0x341747,_0x56f83e){return new BPromise(function(_0x22ea9e,_0x5d41db){return client[_0x87ba('0xa')](_0x4e64bc,_0x56f83e)[_0x87ba('0xb')](function(_0x3c3785){logger[_0x87ba('0xc')](_0x87ba('0xd'),_0x341747,_0x87ba('0xe'));logger[_0x87ba('0xf')](_0x87ba('0x10'),_0x341747,_0x87ba('0xe'),JSON[_0x87ba('0x11')](_0x3c3785));if(_0x3c3785[_0x87ba('0x12')]){if(_0x3c3785[_0x87ba('0x12')]['code']===0x1f4){logger[_0x87ba('0x12')](_0x87ba('0xd'),_0x341747,_0x3c3785['error'][_0x87ba('0x13')]);return _0x5d41db(_0x3c3785[_0x87ba('0x12')][_0x87ba('0x13')]);}logger[_0x87ba('0x12')]('SquareMessage,\x20%s,\x20%s',_0x341747,_0x3c3785[_0x87ba('0x12')][_0x87ba('0x13')]);return _0x22ea9e(_0x3c3785[_0x87ba('0x12')][_0x87ba('0x13')]);}else{logger[_0x87ba('0xc')]('SquareMessage,\x20%s,\x20%s',_0x341747,_0x87ba('0xe'));_0x22ea9e(_0x3c3785[_0x87ba('0x14')][_0x87ba('0x13')]);}})[_0x87ba('0x15')](function(_0x3f5f1e){logger['error']('SquareMessage,\x20%s,\x20%s',_0x341747,_0x3f5f1e);_0x5d41db(_0x3f5f1e);});});}exports[_0x87ba('0x16')]=function(_0x104df0){var _0x10c741=this;return new Promise(function(_0x3cc7bf,_0x5e4d4a){return db['SquareMessage'][_0x87ba('0x17')](_0x104df0[_0x87ba('0x18')],{'raw':_0x104df0[_0x87ba('0x19')]?_0x104df0[_0x87ba('0x19')][_0x87ba('0x1a')]===undefined?!![]:![]:!![]})[_0x87ba('0xb')](function(_0x514023){logger[_0x87ba('0xc')](_0x87ba('0x16'),_0x104df0);logger[_0x87ba('0xf')](_0x87ba('0x16'),_0x104df0,JSON[_0x87ba('0x11')](_0x514023));_0x3cc7bf(_0x514023);})[_0x87ba('0x15')](function(_0xa8344c){logger[_0x87ba('0x12')](_0x87ba('0x16'),_0xa8344c[_0x87ba('0x13')],_0x104df0);_0x5e4d4a(_0x10c741['error'](0x1f4,_0xa8344c[_0x87ba('0x13')]));});});};
\ No newline at end of file
+var _0x12ba=['raw','then','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','info','SquareMessage,\x20%s,\x20%s','debug','SquareMessage,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','catch','CreateSquareMessage','create','options'];(function(_0x1ae4a9,_0x4c0ed9){var _0x54d0b0=function(_0x4fff20){while(--_0x4fff20){_0x1ae4a9['push'](_0x1ae4a9['shift']());}};_0x54d0b0(++_0x4c0ed9);}(_0x12ba,0x12e));var _0xa12b=function(_0x2d46bb,_0x4f801f){_0x2d46bb=_0x2d46bb-0x0;var _0x4fbeb9=_0x12ba[_0x2d46bb];return _0x4fbeb9;};'use strict';var _=require(_0xa12b('0x0'));var util=require('util');var moment=require(_0xa12b('0x1'));var BPromise=require(_0xa12b('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa12b('0x3'));var db=require(_0xa12b('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xa12b('0x5'))(_0xa12b('0x6'));var config=require(_0xa12b('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xa12b('0x8')][_0xa12b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4215fa,_0xe12136,_0x2b640d){return new BPromise(function(_0x1d1eb3,_0x39e600){return client[_0xa12b('0xa')](_0x4215fa,_0x2b640d)['then'](function(_0x2e0d3e){logger[_0xa12b('0xb')](_0xa12b('0xc'),_0xe12136,'request\x20sent');logger[_0xa12b('0xd')](_0xa12b('0xe'),_0xe12136,_0xa12b('0xf'),JSON['stringify'](_0x2e0d3e));if(_0x2e0d3e[_0xa12b('0x10')]){if(_0x2e0d3e[_0xa12b('0x10')][_0xa12b('0x11')]===0x1f4){logger[_0xa12b('0x10')](_0xa12b('0xc'),_0xe12136,_0x2e0d3e['error'][_0xa12b('0x12')]);return _0x39e600(_0x2e0d3e['error'][_0xa12b('0x12')]);}logger['error']('SquareMessage,\x20%s,\x20%s',_0xe12136,_0x2e0d3e[_0xa12b('0x10')][_0xa12b('0x12')]);return _0x1d1eb3(_0x2e0d3e[_0xa12b('0x10')][_0xa12b('0x12')]);}else{logger[_0xa12b('0xb')](_0xa12b('0xc'),_0xe12136,_0xa12b('0xf'));_0x1d1eb3(_0x2e0d3e['result'][_0xa12b('0x12')]);}})[_0xa12b('0x13')](function(_0x58b854){logger[_0xa12b('0x10')](_0xa12b('0xc'),_0xe12136,_0x58b854);_0x39e600(_0x58b854);});});}exports[_0xa12b('0x14')]=function(_0x319f0c){var _0x3a187b=this;return new Promise(function(_0x33e3b5,_0xc308cf){return db['SquareMessage'][_0xa12b('0x15')](_0x319f0c['body'],{'raw':_0x319f0c[_0xa12b('0x16')]?_0x319f0c[_0xa12b('0x16')][_0xa12b('0x17')]===undefined?!![]:![]:!![]})[_0xa12b('0x18')](function(_0x4e906e){logger[_0xa12b('0xb')](_0xa12b('0x14'),_0x319f0c);logger[_0xa12b('0xd')](_0xa12b('0x14'),_0x319f0c,JSON['stringify'](_0x4e906e));_0x33e3b5(_0x4e906e);})[_0xa12b('0x13')](function(_0x365a0c){logger[_0xa12b('0x10')](_0xa12b('0x14'),_0x365a0c[_0xa12b('0x12')],_0x319f0c);_0xc308cf(_0x3a187b[_0xa12b('0x10')](0x1f4,_0x365a0c[_0xa12b('0x12')]));});});};
\ No newline at end of file
index 0c7b2a8..4a46fc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe33c=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./squareOdbc.controller','get','isAuthenticated','index','/:id','show','/:id/test','test','post','create','update','delete','destroy','exports','util','path','connect-timeout'];(function(_0x3af59e,_0x254370){var _0x53a678=function(_0x338f25){while(--_0x338f25){_0x3af59e['push'](_0x3af59e['shift']());}};_0x53a678(++_0x254370);}(_0xe33c,0x11b));var _0xce33=function(_0x1c74c6,_0x32680b){_0x1c74c6=_0x1c74c6-0x0;var _0x5ce7ac=_0xe33c[_0x1c74c6];return _0x5ce7ac;};'use strict';var multer=require('multer');var util=require(_0xce33('0x0'));var path=require(_0xce33('0x1'));var timeout=require(_0xce33('0x2'));var express=require(_0xce33('0x3'));var router=express[_0xce33('0x4')]();var fs_extra=require(_0xce33('0x5'));var auth=require(_0xce33('0x6'));var interaction=require(_0xce33('0x7'));var config=require('../../config/environment');var controller=require(_0xce33('0x8'));router[_0xce33('0x9')]('/',auth[_0xce33('0xa')](),controller[_0xce33('0xb')]);router[_0xce33('0x9')](_0xce33('0xc'),auth[_0xce33('0xa')](),controller[_0xce33('0xd')]);router[_0xce33('0x9')](_0xce33('0xe'),auth['isAuthenticated'](),timeout('15s'),controller[_0xce33('0xf')]);router[_0xce33('0x10')]('/',auth[_0xce33('0xa')](),controller[_0xce33('0x11')]);router['put'](_0xce33('0xc'),auth[_0xce33('0xa')](),controller[_0xce33('0x12')]);router[_0xce33('0x13')](_0xce33('0xc'),auth[_0xce33('0xa')](),controller[_0xce33('0x14')]);module[_0xce33('0x15')]=router;
\ No newline at end of file
+var _0x36c6=['get','index','/:id','isAuthenticated','show','/:id/test','15s','post','create','put','update','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareOdbc.controller'];(function(_0x18f869,_0xb33a56){var _0x1079cd=function(_0xfcc19f){while(--_0xfcc19f){_0x18f869['push'](_0x18f869['shift']());}};_0x1079cd(++_0xb33a56);}(_0x36c6,0x167));var _0x636c=function(_0x1cbae8,_0x123160){_0x1cbae8=_0x1cbae8-0x0;var _0x1de707=_0x36c6[_0x1cbae8];return _0x1de707;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x636c('0x0'));var timeout=require(_0x636c('0x1'));var express=require(_0x636c('0x2'));var router=express[_0x636c('0x3')]();var fs_extra=require(_0x636c('0x4'));var auth=require(_0x636c('0x5'));var interaction=require(_0x636c('0x6'));var config=require(_0x636c('0x7'));var controller=require(_0x636c('0x8'));router[_0x636c('0x9')]('/',auth['isAuthenticated'](),controller[_0x636c('0xa')]);router[_0x636c('0x9')](_0x636c('0xb'),auth[_0x636c('0xc')](),controller[_0x636c('0xd')]);router['get'](_0x636c('0xe'),auth[_0x636c('0xc')](),timeout(_0x636c('0xf')),controller['test']);router[_0x636c('0x10')]('/',auth[_0x636c('0xc')](),controller[_0x636c('0x11')]);router[_0x636c('0x12')](_0x636c('0xb'),auth[_0x636c('0xc')](),controller[_0x636c('0x13')]);router[_0x636c('0x14')](_0x636c('0xb'),auth[_0x636c('0xc')](),controller[_0x636c('0x15')]);module[_0x636c('0x16')]=router;
\ No newline at end of file
index 91093d8..02eb6ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae51=['sequelize','exports','STRING','name'];(function(_0x178cd1,_0x2e6970){var _0x162978=function(_0x468213){while(--_0x468213){_0x178cd1['push'](_0x178cd1['shift']());}};_0x162978(++_0x2e6970);}(_0xae51,0x174));var _0x1ae5=function(_0x392bfe,_0x50f7a9){_0x392bfe=_0x392bfe-0x0;var _0x1e56d9=_0xae51[_0x392bfe];return _0x1e56d9;};'use strict';var Sequelize=require(_0x1ae5('0x0'));module[_0x1ae5('0x1')]={'name':{'type':Sequelize[_0x1ae5('0x2')],'unique':_0x1ae5('0x3'),'allowNull':![]},'dsn':{'type':Sequelize[_0x1ae5('0x2')]},'description':{'type':Sequelize[_0x1ae5('0x2')]}};
\ No newline at end of file
+var _0x28ef=['exports','STRING','name','sequelize'];(function(_0x319409,_0x6de0e1){var _0x23df44=function(_0x4e21bd){while(--_0x4e21bd){_0x319409['push'](_0x319409['shift']());}};_0x23df44(++_0x6de0e1);}(_0x28ef,0x19b));var _0xf28e=function(_0x3cf3f8,_0x3f67b5){_0x3cf3f8=_0x3cf3f8-0x0;var _0x7f1790=_0x28ef[_0x3cf3f8];return _0x7f1790;};'use strict';var Sequelize=require(_0xf28e('0x0'));module[_0xf28e('0x1')]={'name':{'type':Sequelize[_0xf28e('0x2')],'unique':_0xf28e('0x3'),'allowNull':![]},'dsn':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xf28e('0x2')]}};
\ No newline at end of file
index ba72183..9799459 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ae8=['fs-extra','lodash','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','undefined','offset','limit','set','apply','reject','save','then','destroy','get','UserProfileResource','sendStatus','error','stack','name','send','map','SquareOdbc','rawAttributes','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','merge','where','type','filter','options','count','includeAll','include','findAll','catch','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','update','params','test','dsn','odbc','openSync','closeSync','rimraf','request-promise','bluebird','util','path','sox','to-csv','ejs'];(function(_0x394a83,_0x28bf62){var _0x1527bc=function(_0x7199c5){while(--_0x7199c5){_0x394a83['push'](_0x394a83['shift']());}};_0x1527bc(++_0x28bf62);}(_0x7ae8,0x1e4));var _0x87ae=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x7ae8[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x87ae('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x87ae('0x1'));var moment=require('moment');var BPromise=require(_0x87ae('0x2'));var Mustache=require('mustache');var util=require(_0x87ae('0x3'));var path=require(_0x87ae('0x4'));var sox=require(_0x87ae('0x5'));var csv=require(_0x87ae('0x6'));var ejs=require(_0x87ae('0x7'));var fs=require('fs');var fs_extra=require(_0x87ae('0x8'));var _=require(_0x87ae('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x87ae('0xa'));var deskjs=require(_0x87ae('0xb'));var toCsv=require(_0x87ae('0x6'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x87ae('0xc'));var authService=require(_0x87ae('0xd'));var qs=require(_0x87ae('0xe'));var as=require(_0x87ae('0xf'));var hardwareService=require(_0x87ae('0x10'));var logger=require(_0x87ae('0x11'))(_0x87ae('0x12'));var utils=require(_0x87ae('0x13'));var config=require(_0x87ae('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x87ae('0x15'))['db'];function respondWithStatusCode(_0x4ce3bd,_0x320aa0){_0x320aa0=_0x320aa0||0xcc;return function(_0x12953f){if(_0x12953f){return _0x4ce3bd['sendStatus'](_0x320aa0);}return _0x4ce3bd[_0x87ae('0x16')](_0x320aa0)[_0x87ae('0x17')]();};}function respondWithResult(_0x1e2179,_0x5a7645){_0x5a7645=_0x5a7645||0xc8;return function(_0x3b275f){if(_0x3b275f){return _0x1e2179[_0x87ae('0x16')](_0x5a7645)[_0x87ae('0x18')](_0x3b275f);}};}function respondWithFilteredResult(_0x26411c,_0x345554){return function(_0x1b1b6a){if(_0x1b1b6a){var _0x531f87=typeof _0x345554['offset']===_0x87ae('0x19')&&typeof _0x345554['limit']==='undefined';var _0x54dc40=_0x1b1b6a['count'];var _0x2b6ef3=_0x531f87?0x0:_0x345554['offset'];var _0x4d6360=_0x531f87?_0x1b1b6a['count']:_0x345554[_0x87ae('0x1a')]+_0x345554[_0x87ae('0x1b')];var _0x280858;if(_0x4d6360>=_0x54dc40){_0x4d6360=_0x54dc40;_0x280858=0xc8;}else{_0x280858=0xce;}_0x26411c['status'](_0x280858);return _0x26411c[_0x87ae('0x1c')]('Content-Range',_0x2b6ef3+'-'+_0x4d6360+'/'+_0x54dc40)[_0x87ae('0x18')](_0x1b1b6a);}return null;};}function patchUpdates(_0x1eb81d){return function(_0x47d690){try{jsonpatch[_0x87ae('0x1d')](_0x47d690,_0x1eb81d,!![]);}catch(_0x48b483){return BPromise[_0x87ae('0x1e')](_0x48b483);}return _0x47d690[_0x87ae('0x1f')]();};}function saveUpdates(_0x597db9,_0x1c77b3){return function(_0x4f710c){if(_0x4f710c){return _0x4f710c['update'](_0x597db9)[_0x87ae('0x20')](function(_0x2a9fd6){return _0x2a9fd6;});}return null;};}function removeEntity(_0x597f40,_0xf54f9d){return function(_0x4d3e07){if(_0x4d3e07){return _0x4d3e07[_0x87ae('0x21')]()[_0x87ae('0x20')](function(){var _0x4934d6=_0x4d3e07[_0x87ae('0x22')]({'plain':!![]});var _0x4fc164='ODBC';return db[_0x87ae('0x23')][_0x87ae('0x21')]({'where':{'type':_0x4fc164,'resourceId':_0x4934d6['id']}})[_0x87ae('0x20')](function(){return _0x4d3e07;});})[_0x87ae('0x20')](function(){_0x597f40['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x42c192,_0x389a18){return function(_0x358a9a){if(!_0x358a9a){_0x42c192[_0x87ae('0x24')](0x194);}return _0x358a9a;};}function handleError(_0x50368c,_0x312c7c){_0x312c7c=_0x312c7c||0x1f4;return function(_0x4708c3){logger[_0x87ae('0x25')](_0x4708c3[_0x87ae('0x26')]);if(_0x4708c3[_0x87ae('0x27')]){delete _0x4708c3[_0x87ae('0x27')];}_0x50368c[_0x87ae('0x16')](_0x312c7c)[_0x87ae('0x28')](_0x4708c3);};}exports['index']=function(_0x3e5e3d,_0x2c24ea){var _0x47ce1b={},_0x22eb81={},_0x87d63b={'count':0x0,'rows':[]};var _0x2bac87=_[_0x87ae('0x29')](db[_0x87ae('0x2a')][_0x87ae('0x2b')],function(_0xf73c1c){return{'name':_0xf73c1c['fieldName'],'type':_0xf73c1c['type']['key']};});_0x22eb81[_0x87ae('0x2c')]=_[_0x87ae('0x29')](_0x2bac87,_0x87ae('0x27'));_0x22eb81[_0x87ae('0x2d')]=_[_0x87ae('0x2e')](_0x3e5e3d[_0x87ae('0x2d')]);_0x22eb81[_0x87ae('0x2f')]=_[_0x87ae('0x30')](_0x22eb81[_0x87ae('0x2c')],_0x22eb81[_0x87ae('0x2d')]);_0x47ce1b[_0x87ae('0x31')]=_[_0x87ae('0x30')](_0x22eb81[_0x87ae('0x2c')],qs['fields'](_0x3e5e3d[_0x87ae('0x2d')][_0x87ae('0x32')]));_0x47ce1b[_0x87ae('0x31')]=_0x47ce1b['attributes'][_0x87ae('0x33')]?_0x47ce1b[_0x87ae('0x31')]:_0x22eb81['model'];if(!_0x3e5e3d[_0x87ae('0x2d')][_0x87ae('0x34')](_0x87ae('0x35'))){_0x47ce1b['limit']=qs[_0x87ae('0x1b')](_0x3e5e3d[_0x87ae('0x2d')][_0x87ae('0x1b')]);_0x47ce1b[_0x87ae('0x1a')]=qs[_0x87ae('0x1a')](_0x3e5e3d[_0x87ae('0x2d')][_0x87ae('0x1a')]);}_0x47ce1b[_0x87ae('0x36')]=qs[_0x87ae('0x37')](_0x3e5e3d[_0x87ae('0x2d')][_0x87ae('0x37')]);_0x47ce1b['where']=qs[_0x87ae('0x2f')](_['pick'](_0x3e5e3d['query'],_0x22eb81[_0x87ae('0x2f')]),_0x2bac87);if(_0x3e5e3d[_0x87ae('0x2d')]['filter']){_0x47ce1b['where']=_[_0x87ae('0x38')](_0x47ce1b[_0x87ae('0x39')],{'$or':_[_0x87ae('0x29')](_0x2bac87,function(_0x4fcb32){if(_0x4fcb32[_0x87ae('0x3a')]!=='VIRTUAL'){var _0x2fdbf0={};_0x2fdbf0[_0x4fcb32['name']]={'$like':'%'+_0x3e5e3d[_0x87ae('0x2d')][_0x87ae('0x3b')]+'%'};return _0x2fdbf0;}})});}_0x47ce1b=_['merge']({},_0x47ce1b,_0x3e5e3d[_0x87ae('0x3c')]);var _0x247ada={'where':_0x47ce1b['where']};return db[_0x87ae('0x2a')][_0x87ae('0x3d')](_0x247ada)[_0x87ae('0x20')](function(_0x34fe2a){_0x87d63b[_0x87ae('0x3d')]=_0x34fe2a;if(_0x3e5e3d['query'][_0x87ae('0x3e')]){_0x47ce1b[_0x87ae('0x3f')]=[{'all':!![]}];}return db[_0x87ae('0x2a')][_0x87ae('0x40')](_0x47ce1b);})['then'](function(_0x5d3d09){_0x87d63b['rows']=_0x5d3d09;return _0x87d63b;})[_0x87ae('0x20')](respondWithFilteredResult(_0x2c24ea,_0x47ce1b))[_0x87ae('0x41')](handleError(_0x2c24ea,null));};exports['show']=function(_0x44e7b2,_0x305adf){var _0x1ee8b2={'raw':!![],'where':{'id':_0x44e7b2['params']['id']}},_0x183648={};_0x183648['model']=_[_0x87ae('0x2e')](db[_0x87ae('0x2a')][_0x87ae('0x2b')]);_0x183648[_0x87ae('0x2d')]=_[_0x87ae('0x2e')](_0x44e7b2[_0x87ae('0x2d')]);_0x183648[_0x87ae('0x2f')]=_[_0x87ae('0x30')](_0x183648[_0x87ae('0x2c')],_0x183648[_0x87ae('0x2d')]);_0x1ee8b2[_0x87ae('0x31')]=_[_0x87ae('0x30')](_0x183648['model'],qs['fields'](_0x44e7b2['query']['fields']));_0x1ee8b2[_0x87ae('0x31')]=_0x1ee8b2['attributes'][_0x87ae('0x33')]?_0x1ee8b2['attributes']:_0x183648[_0x87ae('0x2c')];if(_0x44e7b2[_0x87ae('0x2d')]['includeAll']){_0x1ee8b2['include']=[{'all':!![]}];}_0x1ee8b2=_[_0x87ae('0x38')]({},_0x1ee8b2,_0x44e7b2[_0x87ae('0x3c')]);return db[_0x87ae('0x2a')][_0x87ae('0x42')](_0x1ee8b2)['then'](handleEntityNotFound(_0x305adf,null))[_0x87ae('0x20')](respondWithResult(_0x305adf,null))[_0x87ae('0x41')](handleError(_0x305adf,null));};exports[_0x87ae('0x43')]=function(_0x2addff,_0xf55425){return db[_0x87ae('0x2a')][_0x87ae('0x43')](_0x2addff[_0x87ae('0x44')],{})[_0x87ae('0x20')](function(_0x4d7489){var _0x43a809=_0x2addff[_0x87ae('0x45')]['get']({'plain':!![]});if(!_0x43a809)throw new Error(_0x87ae('0x46'));if(_0x43a809[_0x87ae('0x47')]===_0x87ae('0x45')){var _0x1f5d58=_0x4d7489['get']({'plain':!![]});var _0x55f97b='ODBC';return db[_0x87ae('0x48')]['find']({'where':{'name':_0x55f97b,'userProfileId':_0x43a809[_0x87ae('0x49')]},'raw':!![]})['then'](function(_0x54badb){if(_0x54badb&&_0x54badb[_0x87ae('0x4a')]===0x0){return db['UserProfileResource'][_0x87ae('0x43')]({'name':_0x1f5d58['name'],'resourceId':_0x1f5d58['id'],'type':_0x54badb[_0x87ae('0x27')],'sectionId':_0x54badb['id']},{})[_0x87ae('0x20')](function(){return _0x4d7489;});}else{return _0x4d7489;}})['catch'](function(_0x193aec){logger[_0x87ae('0x25')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x193aec);throw _0x193aec;});}return _0x4d7489;})[_0x87ae('0x20')](respondWithResult(_0xf55425,0xc9))[_0x87ae('0x41')](handleError(_0xf55425,null));};exports[_0x87ae('0x4b')]=function(_0x517942,_0x1a9bf5){if(_0x517942[_0x87ae('0x44')]['id']){delete _0x517942[_0x87ae('0x44')]['id'];}return db['SquareOdbc'][_0x87ae('0x42')]({'where':{'id':_0x517942[_0x87ae('0x4c')]['id']}})[_0x87ae('0x20')](handleEntityNotFound(_0x1a9bf5,null))[_0x87ae('0x20')](saveUpdates(_0x517942[_0x87ae('0x44')],null))[_0x87ae('0x20')](respondWithResult(_0x1a9bf5,null))[_0x87ae('0x41')](handleError(_0x1a9bf5,null));};exports['destroy']=function(_0x18a857,_0x14e65e){return db[_0x87ae('0x2a')][_0x87ae('0x42')]({'where':{'id':_0x18a857[_0x87ae('0x4c')]['id']}})[_0x87ae('0x20')](handleEntityNotFound(_0x14e65e,null))[_0x87ae('0x20')](removeEntity(_0x14e65e,null))[_0x87ae('0x41')](handleError(_0x14e65e,null));};exports[_0x87ae('0x4d')]=function(_0x36b3b2,_0xbf8e62,_0x40133f){var _0x112696;return db[_0x87ae('0x2a')]['find']({'where':{'id':_0x36b3b2[_0x87ae('0x4c')]['id']},'attributes':['id',_0x87ae('0x4e')]})[_0x87ae('0x20')](handleEntityNotFound(_0xbf8e62,null))[_0x87ae('0x20')](function(_0x32d563){if(_0x32d563){var _0x1d4dbb=require(_0x87ae('0x4f'))();_0x1d4dbb[_0x87ae('0x50')](_0x32d563[_0x87ae('0x4e')]);_0x1d4dbb[_0x87ae('0x51')]();return _0x32d563;}})['then'](respondWithResult(_0xbf8e62,null))[_0x87ae('0x41')](handleError(_0xbf8e62,null));};
\ No newline at end of file
+var _0x49c7=['squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','Content-Range','apply','reject','save','update','then','get','ODBC','destroy','end','error','stack','name','index','map','SquareOdbc','fieldName','type','key','model','query','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','catch','show','keys','find','create','body','user','UserProfileSection','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','test','dsn','eml-format','rimraf','zip-dir','request-promise','mustache','util','path','to-csv'];(function(_0x16e824,_0x23ab90){var _0x1745ea=function(_0x327e55){while(--_0x327e55){_0x16e824['push'](_0x16e824['shift']());}};_0x1745ea(++_0x23ab90);}(_0x49c7,0x1d2));var _0x749c=function(_0x2e3e46,_0x281f86){_0x2e3e46=_0x2e3e46-0x0;var _0x19925b=_0x49c7[_0x2e3e46];return _0x19925b;};'use strict';var emlformat=require(_0x749c('0x0'));var rimraf=require(_0x749c('0x1'));var zipdir=require(_0x749c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x749c('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x749c('0x4'));var util=require(_0x749c('0x5'));var path=require(_0x749c('0x6'));var sox=require('sox');var csv=require(_0x749c('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x749c('0x8'));var crypto=require(_0x749c('0x9'));var jsforce=require(_0x749c('0xa'));var deskjs=require(_0x749c('0xb'));var toCsv=require(_0x749c('0x7'));var querystring=require('querystring');var Papa=require(_0x749c('0xc'));var Redis=require(_0x749c('0xd'));var authService=require(_0x749c('0xe'));var qs=require(_0x749c('0xf'));var as=require(_0x749c('0x10'));var hardwareService=require(_0x749c('0x11'));var logger=require(_0x749c('0x12'))('api');var utils=require('../../config/utils');var config=require(_0x749c('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x749c('0x14'))['db'];function respondWithStatusCode(_0x28e4bd,_0x4dd98e){_0x4dd98e=_0x4dd98e||0xcc;return function(_0x15b58f){if(_0x15b58f){return _0x28e4bd[_0x749c('0x15')](_0x4dd98e);}return _0x28e4bd['status'](_0x4dd98e)['end']();};}function respondWithResult(_0x1cb9ac,_0x52d889){_0x52d889=_0x52d889||0xc8;return function(_0x4c42b6){if(_0x4c42b6){return _0x1cb9ac[_0x749c('0x16')](_0x52d889)[_0x749c('0x17')](_0x4c42b6);}};}function respondWithFilteredResult(_0x3a0529,_0xe92dab){return function(_0x1b66ea){if(_0x1b66ea){var _0x4c69a3=typeof _0xe92dab[_0x749c('0x18')]==='undefined'&&typeof _0xe92dab[_0x749c('0x19')]===_0x749c('0x1a');var _0x357795=_0x1b66ea['count'];var _0x5d1d2f=_0x4c69a3?0x0:_0xe92dab['offset'];var _0x5740b8=_0x4c69a3?_0x1b66ea[_0x749c('0x1b')]:_0xe92dab[_0x749c('0x18')]+_0xe92dab['limit'];var _0x7d589a;if(_0x5740b8>=_0x357795){_0x5740b8=_0x357795;_0x7d589a=0xc8;}else{_0x7d589a=0xce;}_0x3a0529[_0x749c('0x16')](_0x7d589a);return _0x3a0529['set'](_0x749c('0x1c'),_0x5d1d2f+'-'+_0x5740b8+'/'+_0x357795)[_0x749c('0x17')](_0x1b66ea);}return null;};}function patchUpdates(_0x588dcc){return function(_0x19ad6b){try{jsonpatch[_0x749c('0x1d')](_0x19ad6b,_0x588dcc,!![]);}catch(_0xa4d25a){return BPromise[_0x749c('0x1e')](_0xa4d25a);}return _0x19ad6b[_0x749c('0x1f')]();};}function saveUpdates(_0x48f7c8,_0x44b022){return function(_0x40b586){if(_0x40b586){return _0x40b586[_0x749c('0x20')](_0x48f7c8)[_0x749c('0x21')](function(_0x56ea12){return _0x56ea12;});}return null;};}function removeEntity(_0x5471e5,_0x498b92){return function(_0x51d5f9){if(_0x51d5f9){return _0x51d5f9['destroy']()['then'](function(){var _0x138195=_0x51d5f9[_0x749c('0x22')]({'plain':!![]});var _0x367cb6=_0x749c('0x23');return db['UserProfileResource'][_0x749c('0x24')]({'where':{'type':_0x367cb6,'resourceId':_0x138195['id']}})[_0x749c('0x21')](function(){return _0x51d5f9;});})[_0x749c('0x21')](function(){_0x5471e5[_0x749c('0x16')](0xcc)[_0x749c('0x25')]();});}};}function handleEntityNotFound(_0x14a1ae,_0x4aacf2){return function(_0x4bb276){if(!_0x4bb276){_0x14a1ae['sendStatus'](0x194);}return _0x4bb276;};}function handleError(_0x59ea05,_0x4d8596){_0x4d8596=_0x4d8596||0x1f4;return function(_0x56825c){logger[_0x749c('0x26')](_0x56825c[_0x749c('0x27')]);if(_0x56825c[_0x749c('0x28')]){delete _0x56825c[_0x749c('0x28')];}_0x59ea05[_0x749c('0x16')](_0x4d8596)['send'](_0x56825c);};}exports[_0x749c('0x29')]=function(_0x13acc3,_0xd8fe61){var _0x1fc969={},_0x2ab51c={},_0x5c756e={'count':0x0,'rows':[]};var _0x2deca=_[_0x749c('0x2a')](db[_0x749c('0x2b')]['rawAttributes'],function(_0x6cf2eb){return{'name':_0x6cf2eb[_0x749c('0x2c')],'type':_0x6cf2eb[_0x749c('0x2d')][_0x749c('0x2e')]};});_0x2ab51c[_0x749c('0x2f')]=_['map'](_0x2deca,_0x749c('0x28'));_0x2ab51c[_0x749c('0x30')]=_['keys'](_0x13acc3[_0x749c('0x30')]);_0x2ab51c['filters']=_['intersection'](_0x2ab51c[_0x749c('0x2f')],_0x2ab51c[_0x749c('0x30')]);_0x1fc969[_0x749c('0x31')]=_[_0x749c('0x32')](_0x2ab51c[_0x749c('0x2f')],qs[_0x749c('0x33')](_0x13acc3['query']['fields']));_0x1fc969[_0x749c('0x31')]=_0x1fc969[_0x749c('0x31')][_0x749c('0x34')]?_0x1fc969[_0x749c('0x31')]:_0x2ab51c[_0x749c('0x2f')];if(!_0x13acc3[_0x749c('0x30')][_0x749c('0x35')]('nolimit')){_0x1fc969['limit']=qs['limit'](_0x13acc3[_0x749c('0x30')][_0x749c('0x19')]);_0x1fc969[_0x749c('0x18')]=qs['offset'](_0x13acc3[_0x749c('0x30')][_0x749c('0x18')]);}_0x1fc969[_0x749c('0x36')]=qs[_0x749c('0x37')](_0x13acc3[_0x749c('0x30')]['sort']);_0x1fc969[_0x749c('0x38')]=qs[_0x749c('0x39')](_[_0x749c('0x3a')](_0x13acc3['query'],_0x2ab51c[_0x749c('0x39')]),_0x2deca);if(_0x13acc3[_0x749c('0x30')][_0x749c('0x3b')]){_0x1fc969['where']=_['merge'](_0x1fc969[_0x749c('0x38')],{'$or':_[_0x749c('0x2a')](_0x2deca,function(_0x18ed29){if(_0x18ed29['type']!==_0x749c('0x3c')){var _0x17bfbc={};_0x17bfbc[_0x18ed29[_0x749c('0x28')]]={'$like':'%'+_0x13acc3[_0x749c('0x30')][_0x749c('0x3b')]+'%'};return _0x17bfbc;}})});}_0x1fc969=_[_0x749c('0x3d')]({},_0x1fc969,_0x13acc3[_0x749c('0x3e')]);var _0x4f2dec={'where':_0x1fc969[_0x749c('0x38')]};return db[_0x749c('0x2b')][_0x749c('0x1b')](_0x4f2dec)[_0x749c('0x21')](function(_0xd14d8b){_0x5c756e[_0x749c('0x1b')]=_0xd14d8b;if(_0x13acc3[_0x749c('0x30')][_0x749c('0x3f')]){_0x1fc969[_0x749c('0x40')]=[{'all':!![]}];}return db['SquareOdbc'][_0x749c('0x41')](_0x1fc969);})[_0x749c('0x21')](function(_0x463782){_0x5c756e['rows']=_0x463782;return _0x5c756e;})[_0x749c('0x21')](respondWithFilteredResult(_0xd8fe61,_0x1fc969))[_0x749c('0x42')](handleError(_0xd8fe61,null));};exports[_0x749c('0x43')]=function(_0x473d18,_0x356ef1){var _0x49c8e0={'raw':!![],'where':{'id':_0x473d18['params']['id']}},_0x211968={};_0x211968[_0x749c('0x2f')]=_['keys'](db[_0x749c('0x2b')]['rawAttributes']);_0x211968['query']=_[_0x749c('0x44')](_0x473d18[_0x749c('0x30')]);_0x211968[_0x749c('0x39')]=_[_0x749c('0x32')](_0x211968[_0x749c('0x2f')],_0x211968[_0x749c('0x30')]);_0x49c8e0['attributes']=_[_0x749c('0x32')](_0x211968[_0x749c('0x2f')],qs['fields'](_0x473d18[_0x749c('0x30')]['fields']));_0x49c8e0[_0x749c('0x31')]=_0x49c8e0[_0x749c('0x31')][_0x749c('0x34')]?_0x49c8e0[_0x749c('0x31')]:_0x211968[_0x749c('0x2f')];if(_0x473d18[_0x749c('0x30')]['includeAll']){_0x49c8e0[_0x749c('0x40')]=[{'all':!![]}];}_0x49c8e0=_[_0x749c('0x3d')]({},_0x49c8e0,_0x473d18['options']);return db[_0x749c('0x2b')][_0x749c('0x45')](_0x49c8e0)[_0x749c('0x21')](handleEntityNotFound(_0x356ef1,null))[_0x749c('0x21')](respondWithResult(_0x356ef1,null))[_0x749c('0x42')](handleError(_0x356ef1,null));};exports[_0x749c('0x46')]=function(_0x19feb1,_0x17e46a){return db[_0x749c('0x2b')][_0x749c('0x46')](_0x19feb1[_0x749c('0x47')],{})[_0x749c('0x21')](function(_0x357d14){var _0x38dd24=_0x19feb1[_0x749c('0x48')][_0x749c('0x22')]({'plain':!![]});if(!_0x38dd24)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x38dd24['role']===_0x749c('0x48')){var _0x2bf7ea=_0x357d14[_0x749c('0x22')]({'plain':!![]});var _0x410b7c=_0x749c('0x23');return db[_0x749c('0x49')]['find']({'where':{'name':_0x410b7c,'userProfileId':_0x38dd24['userProfileId']},'raw':!![]})['then'](function(_0x453622){if(_0x453622&&_0x453622['autoAssociation']===0x0){return db[_0x749c('0x4a')][_0x749c('0x46')]({'name':_0x2bf7ea['name'],'resourceId':_0x2bf7ea['id'],'type':_0x453622[_0x749c('0x28')],'sectionId':_0x453622['id']},{})[_0x749c('0x21')](function(){return _0x357d14;});}else{return _0x357d14;}})[_0x749c('0x42')](function(_0x44a46d){logger[_0x749c('0x26')](_0x749c('0x4b'),_0x44a46d);throw _0x44a46d;});}return _0x357d14;})[_0x749c('0x21')](respondWithResult(_0x17e46a,0xc9))[_0x749c('0x42')](handleError(_0x17e46a,null));};exports[_0x749c('0x20')]=function(_0x28c8a1,_0x392de5){if(_0x28c8a1[_0x749c('0x47')]['id']){delete _0x28c8a1[_0x749c('0x47')]['id'];}return db[_0x749c('0x2b')]['find']({'where':{'id':_0x28c8a1[_0x749c('0x4c')]['id']}})['then'](handleEntityNotFound(_0x392de5,null))['then'](saveUpdates(_0x28c8a1[_0x749c('0x47')],null))[_0x749c('0x21')](respondWithResult(_0x392de5,null))['catch'](handleError(_0x392de5,null));};exports[_0x749c('0x24')]=function(_0x37f51b,_0xf7a125){return db[_0x749c('0x2b')][_0x749c('0x45')]({'where':{'id':_0x37f51b[_0x749c('0x4c')]['id']}})['then'](handleEntityNotFound(_0xf7a125,null))[_0x749c('0x21')](removeEntity(_0xf7a125,null))['catch'](handleError(_0xf7a125,null));};exports[_0x749c('0x4d')]=function(_0x4e488b,_0x20225b,_0xa554b7){var _0x33e959;return db['SquareOdbc'][_0x749c('0x45')]({'where':{'id':_0x4e488b[_0x749c('0x4c')]['id']},'attributes':['id',_0x749c('0x4e')]})['then'](handleEntityNotFound(_0x20225b,null))[_0x749c('0x21')](function(_0x53e3aa){if(_0x53e3aa){var _0x4cc4c0=require('odbc')();_0x4cc4c0['openSync'](_0x53e3aa[_0x749c('0x4e')]);_0x4cc4c0['closeSync']();return _0x53e3aa;}})[_0x749c('0x21')](respondWithResult(_0x20225b,null))[_0x749c('0x42')](handleError(_0x20225b,null));};
\ No newline at end of file
index 0880565..8eceaae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5495=['bluebird','request-promise','path','../../config/environment','./squareOdbc.attributes','exports','define','SquareOdbc','lodash','util','api'];(function(_0x4e07c4,_0x20a2cf){var _0x176c64=function(_0x46ae29){while(--_0x46ae29){_0x4e07c4['push'](_0x4e07c4['shift']());}};_0x176c64(++_0x20a2cf);}(_0x5495,0xc3));var _0x5549=function(_0x8d6de9,_0x8daaea){_0x8d6de9=_0x8d6de9-0x0;var _0x1fb1c5=_0x5495[_0x8d6de9];return _0x1fb1c5;};'use strict';var _=require(_0x5549('0x0'));var util=require(_0x5549('0x1'));var logger=require('../../config/logger')(_0x5549('0x2'));var moment=require('moment');var BPromise=require(_0x5549('0x3'));var rp=require(_0x5549('0x4'));var fs=require('fs');var path=require(_0x5549('0x5'));var rimraf=require('rimraf');var config=require(_0x5549('0x6'));var attributes=require(_0x5549('0x7'));module[_0x5549('0x8')]=function(_0x209371,_0x20e0a6){return _0x209371[_0x5549('0x9')](_0x5549('0xa'),attributes,{'tableName':'square_odbc','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x72ce=['path','rimraf','../../config/environment','./squareOdbc.attributes','define','square_odbc','lodash','util','api','moment','request-promise'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x72ce,0x1b3));var _0xe72c=function(_0x3ab66e,_0x2e8219){_0x3ab66e=_0x3ab66e-0x0;var _0x5a18fe=_0x72ce[_0x3ab66e];return _0x5a18fe;};'use strict';var _=require(_0xe72c('0x0'));var util=require(_0xe72c('0x1'));var logger=require('../../config/logger')(_0xe72c('0x2'));var moment=require(_0xe72c('0x3'));var BPromise=require('bluebird');var rp=require(_0xe72c('0x4'));var fs=require('fs');var path=require(_0xe72c('0x5'));var rimraf=require(_0xe72c('0x6'));var config=require(_0xe72c('0x7'));var attributes=require(_0xe72c('0x8'));module['exports']=function(_0x3d5523,_0x39ab26){return _0x3d5523[_0xe72c('0x9')]('SquareOdbc',attributes,{'tableName':_0xe72c('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a7172a7..6cf7934 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f1c=['find','options','raw','where','map','include','model','attributes','ShowSquareOdbc','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','http','request','then','request\x20sent','debug','SquareOdbc,\x20%s,\x20%s,\x20%s','stringify','error','code','SquareOdbc,\x20%s,\x20%s','message','info','catch'];(function(_0xf79bae,_0x263b2a){var _0x5d2cb7=function(_0x27c86b){while(--_0x27c86b){_0xf79bae['push'](_0xf79bae['shift']());}};_0x5d2cb7(++_0x263b2a);}(_0x6f1c,0x189));var _0xc6f1=function(_0x41ded9,_0x281049){_0x41ded9=_0x41ded9-0x0;var _0x178c21=_0x6f1c[_0x41ded9];return _0x178c21;};'use strict';var _=require(_0xc6f1('0x0'));var util=require(_0xc6f1('0x1'));var moment=require(_0xc6f1('0x2'));var BPromise=require(_0xc6f1('0x3'));var rs=require(_0xc6f1('0x4'));var fs=require('fs');var Redis=require(_0xc6f1('0x5'));var db=require(_0xc6f1('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xc6f1('0x7'));var config=require(_0xc6f1('0x8'));var jayson=require(_0xc6f1('0x9'));var client=jayson['client'][_0xc6f1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4880ed,_0x4188f4,_0x59e153){return new BPromise(function(_0x4f9085,_0x32f3d9){return client[_0xc6f1('0xb')](_0x4880ed,_0x59e153)[_0xc6f1('0xc')](function(_0x8ec548){logger['info']('SquareOdbc,\x20%s,\x20%s',_0x4188f4,_0xc6f1('0xd'));logger[_0xc6f1('0xe')](_0xc6f1('0xf'),_0x4188f4,_0xc6f1('0xd'),JSON[_0xc6f1('0x10')](_0x8ec548));if(_0x8ec548[_0xc6f1('0x11')]){if(_0x8ec548[_0xc6f1('0x11')][_0xc6f1('0x12')]===0x1f4){logger[_0xc6f1('0x11')](_0xc6f1('0x13'),_0x4188f4,_0x8ec548[_0xc6f1('0x11')][_0xc6f1('0x14')]);return _0x32f3d9(_0x8ec548[_0xc6f1('0x11')][_0xc6f1('0x14')]);}logger[_0xc6f1('0x11')](_0xc6f1('0x13'),_0x4188f4,_0x8ec548[_0xc6f1('0x11')]['message']);return _0x4f9085(_0x8ec548[_0xc6f1('0x11')][_0xc6f1('0x14')]);}else{logger[_0xc6f1('0x15')]('SquareOdbc,\x20%s,\x20%s',_0x4188f4,'request\x20sent');_0x4f9085(_0x8ec548['result'][_0xc6f1('0x14')]);}})[_0xc6f1('0x16')](function(_0xcca15d){logger[_0xc6f1('0x11')](_0xc6f1('0x13'),_0x4188f4,_0xcca15d);_0x32f3d9(_0xcca15d);});});}exports['ShowSquareOdbc']=function(_0x382acd){var _0x13de47=this;return new Promise(function(_0x13c099,_0x179ad7){return db['SquareOdbc'][_0xc6f1('0x17')]({'raw':_0x382acd['options']?_0x382acd[_0xc6f1('0x18')][_0xc6f1('0x19')]===undefined?!![]:![]:!![],'where':_0x382acd['options']?_0x382acd[_0xc6f1('0x18')][_0xc6f1('0x1a')]||null:null,'attributes':_0x382acd[_0xc6f1('0x18')]?_0x382acd[_0xc6f1('0x18')]['attributes']||null:null,'include':_0x382acd[_0xc6f1('0x18')]?_0x382acd[_0xc6f1('0x18')]['include']?_[_0xc6f1('0x1b')](_0x382acd['options'][_0xc6f1('0x1c')],function(_0x19a08d){return{'model':db[_0x19a08d[_0xc6f1('0x1d')]],'as':_0x19a08d['as'],'attributes':_0x19a08d[_0xc6f1('0x1e')],'include':_0x19a08d[_0xc6f1('0x1c')]?_[_0xc6f1('0x1b')](_0x19a08d[_0xc6f1('0x1c')],function(_0x1b398a){return{'model':db[_0x1b398a[_0xc6f1('0x1d')]],'as':_0x1b398a['as'],'attributes':_0x1b398a[_0xc6f1('0x1e')],'include':_0x1b398a['include']?_[_0xc6f1('0x1b')](_0x1b398a[_0xc6f1('0x1c')],function(_0x1c420f){return{'model':db[_0x1c420f['model']],'as':_0x1c420f['as'],'attributes':_0x1c420f[_0xc6f1('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xc6f1('0xc')](function(_0xf03513){logger[_0xc6f1('0x15')](_0xc6f1('0x1f'),_0x382acd);logger[_0xc6f1('0xe')](_0xc6f1('0x1f'),_0x382acd,JSON[_0xc6f1('0x10')](_0xf03513));_0x13c099(_0xf03513);})[_0xc6f1('0x16')](function(_0x5b6181){logger[_0xc6f1('0x11')](_0xc6f1('0x1f'),_0x5b6181[_0xc6f1('0x14')],_0x382acd);_0x179ad7(_0x13de47['error'](0x1f4,_0x5b6181[_0xc6f1('0x14')]));});});};
\ No newline at end of file
+var _0xcdcc=['attributes','include','map','model','then','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','info','SquareOdbc,\x20%s,\x20%s','debug','SquareOdbc,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','ShowSquareOdbc','SquareOdbc','find','options','raw','where'];(function(_0x1d74b9,_0x5adf3b){var _0x331112=function(_0x169bc2){while(--_0x169bc2){_0x1d74b9['push'](_0x1d74b9['shift']());}};_0x331112(++_0x5adf3b);}(_0xcdcc,0x115));var _0xccdc=function(_0x2daca7,_0x40e8cb){_0x2daca7=_0x2daca7-0x0;var _0x41bb55=_0xcdcc[_0x2daca7];return _0x41bb55;};'use strict';var _=require(_0xccdc('0x0'));var util=require(_0xccdc('0x1'));var moment=require(_0xccdc('0x2'));var BPromise=require(_0xccdc('0x3'));var rs=require(_0xccdc('0x4'));var fs=require('fs');var Redis=require(_0xccdc('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xccdc('0x6'));var logger=require(_0xccdc('0x7'))('rpc');var config=require(_0xccdc('0x8'));var jayson=require(_0xccdc('0x9'));var client=jayson[_0xccdc('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4cb7d5,_0x406b6b,_0x17524e){return new BPromise(function(_0xf1fa47,_0x2c5c14){return client[_0xccdc('0xb')](_0x4cb7d5,_0x17524e)['then'](function(_0x281014){logger[_0xccdc('0xc')](_0xccdc('0xd'),_0x406b6b,'request\x20sent');logger[_0xccdc('0xe')](_0xccdc('0xf'),_0x406b6b,_0xccdc('0x10'),JSON[_0xccdc('0x11')](_0x281014));if(_0x281014[_0xccdc('0x12')]){if(_0x281014[_0xccdc('0x12')][_0xccdc('0x13')]===0x1f4){logger[_0xccdc('0x12')]('SquareOdbc,\x20%s,\x20%s',_0x406b6b,_0x281014[_0xccdc('0x12')][_0xccdc('0x14')]);return _0x2c5c14(_0x281014['error']['message']);}logger['error'](_0xccdc('0xd'),_0x406b6b,_0x281014[_0xccdc('0x12')][_0xccdc('0x14')]);return _0xf1fa47(_0x281014['error'][_0xccdc('0x14')]);}else{logger[_0xccdc('0xc')](_0xccdc('0xd'),_0x406b6b,'request\x20sent');_0xf1fa47(_0x281014[_0xccdc('0x15')][_0xccdc('0x14')]);}})[_0xccdc('0x16')](function(_0x27ff3e){logger[_0xccdc('0x12')](_0xccdc('0xd'),_0x406b6b,_0x27ff3e);_0x2c5c14(_0x27ff3e);});});}exports[_0xccdc('0x17')]=function(_0x5e528d){var _0x379993=this;return new Promise(function(_0x4aeae2,_0x200579){return db[_0xccdc('0x18')][_0xccdc('0x19')]({'raw':_0x5e528d[_0xccdc('0x1a')]?_0x5e528d[_0xccdc('0x1a')][_0xccdc('0x1b')]===undefined?!![]:![]:!![],'where':_0x5e528d[_0xccdc('0x1a')]?_0x5e528d[_0xccdc('0x1a')][_0xccdc('0x1c')]||null:null,'attributes':_0x5e528d[_0xccdc('0x1a')]?_0x5e528d[_0xccdc('0x1a')][_0xccdc('0x1d')]||null:null,'include':_0x5e528d[_0xccdc('0x1a')]?_0x5e528d[_0xccdc('0x1a')][_0xccdc('0x1e')]?_[_0xccdc('0x1f')](_0x5e528d['options'][_0xccdc('0x1e')],function(_0x27fb45){return{'model':db[_0x27fb45[_0xccdc('0x20')]],'as':_0x27fb45['as'],'attributes':_0x27fb45['attributes'],'include':_0x27fb45[_0xccdc('0x1e')]?_[_0xccdc('0x1f')](_0x27fb45[_0xccdc('0x1e')],function(_0x1bab58){return{'model':db[_0x1bab58[_0xccdc('0x20')]],'as':_0x1bab58['as'],'attributes':_0x1bab58[_0xccdc('0x1d')],'include':_0x1bab58['include']?_[_0xccdc('0x1f')](_0x1bab58[_0xccdc('0x1e')],function(_0x28209b){return{'model':db[_0x28209b[_0xccdc('0x20')]],'as':_0x28209b['as'],'attributes':_0x28209b['attributes']};}):[]};}):[]};}):[]:[]})[_0xccdc('0x21')](function(_0x152226){logger[_0xccdc('0xc')]('ShowSquareOdbc',_0x5e528d);logger[_0xccdc('0xe')](_0xccdc('0x17'),_0x5e528d,JSON[_0xccdc('0x11')](_0x152226));_0x4aeae2(_0x152226);})[_0xccdc('0x16')](function(_0x29ed8f){logger[_0xccdc('0x12')]('ShowSquareOdbc',_0x29ed8f['message'],_0x5e528d);_0x200579(_0x379993[_0xccdc('0x12')](0x1f4,_0x29ed8f[_0xccdc('0x14')]));});});};
\ No newline at end of file
index f15b778..b90e2b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee18=['../../config/environment','./squareProject.controller','isAuthenticated','get','show','post','create','put','/:id','update','delete','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service'];(function(_0x366195,_0x50da84){var _0xf37646=function(_0x53a253){while(--_0x53a253){_0x366195['push'](_0x366195['shift']());}};_0xf37646(++_0x50da84);}(_0xee18,0x161));var _0x8ee1=function(_0x1acc01,_0x5cb80c){_0x1acc01=_0x1acc01-0x0;var _0x5603f1=_0xee18[_0x1acc01];return _0x5603f1;};'use strict';var multer=require(_0x8ee1('0x0'));var util=require(_0x8ee1('0x1'));var path=require(_0x8ee1('0x2'));var timeout=require(_0x8ee1('0x3'));var express=require(_0x8ee1('0x4'));var router=express['Router']();var fs_extra=require(_0x8ee1('0x5'));var auth=require(_0x8ee1('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x8ee1('0x7'));var controller=require(_0x8ee1('0x8'));router['get']('/',auth[_0x8ee1('0x9')](),controller['index']);router[_0x8ee1('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x8ee1('0xb')]);router[_0x8ee1('0xc')]('/',auth[_0x8ee1('0x9')](),controller[_0x8ee1('0xd')]);router[_0x8ee1('0xe')](_0x8ee1('0xf'),auth['isAuthenticated'](),controller[_0x8ee1('0x10')]);router[_0x8ee1('0x11')](_0x8ee1('0xf'),auth[_0x8ee1('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x7ae8=['update','delete','/:id','exports','multer','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareProject.controller','get','isAuthenticated','post','create','put'];(function(_0x1bb2c5,_0x5a3a8f){var _0x50782b=function(_0x59ede6){while(--_0x59ede6){_0x1bb2c5['push'](_0x1bb2c5['shift']());}};_0x50782b(++_0x5a3a8f);}(_0x7ae8,0x125));var _0x87ae=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x7ae8[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0x87ae('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x87ae('0x1'));var router=express[_0x87ae('0x2')]();var fs_extra=require(_0x87ae('0x3'));var auth=require(_0x87ae('0x4'));var interaction=require(_0x87ae('0x5'));var config=require(_0x87ae('0x6'));var controller=require(_0x87ae('0x7'));router[_0x87ae('0x8')]('/',auth[_0x87ae('0x9')](),controller['index']);router['get']('/:id',auth[_0x87ae('0x9')](),controller['show']);router[_0x87ae('0xa')]('/',auth[_0x87ae('0x9')](),controller[_0x87ae('0xb')]);router[_0x87ae('0xc')]('/:id',auth[_0x87ae('0x9')](),controller[_0x87ae('0xd')]);router[_0x87ae('0xe')](_0x87ae('0xf'),auth[_0x87ae('0x9')](),controller['destroy']);module[_0x87ae('0x10')]=router;
\ No newline at end of file
index f6c874f..e1e92f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabb2=['sequelize','exports','STRING','name','BLOB','long','getDataValue','preproduction','toString','utf8','production','DATE'];(function(_0xff2e2f,_0x579ae7){var _0x548fee=function(_0x55551c){while(--_0x55551c){_0xff2e2f['push'](_0xff2e2f['shift']());}};_0x548fee(++_0x579ae7);}(_0xabb2,0xa8));var _0x2abb=function(_0x27c24e,_0x5db1c7){_0x27c24e=_0x27c24e-0x0;var _0x39004a=_0xabb2[_0x27c24e];return _0x39004a;};'use strict';var Sequelize=require(_0x2abb('0x0'));module[_0x2abb('0x1')]={'name':{'type':Sequelize[_0x2abb('0x2')],'unique':_0x2abb('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0x2abb('0x2')]},'notes':{'type':Sequelize['TEXT']},'preproduction':{'type':Sequelize[_0x2abb('0x4')](_0x2abb('0x5')),'get':function(){if(this[_0x2abb('0x6')](_0x2abb('0x7'))){return this[_0x2abb('0x6')]('preproduction')[_0x2abb('0x8')](_0x2abb('0x9'));}}},'production':{'type':Sequelize[_0x2abb('0x4')]('long'),'get':function(){if(this['getDataValue'](_0x2abb('0xa'))){return this[_0x2abb('0x6')]('production')[_0x2abb('0x8')]('utf8');}}},'savedAt':{'type':Sequelize[_0x2abb('0xb')]},'publishedAt':{'type':Sequelize[_0x2abb('0xb')]}};
\ No newline at end of file
+var _0xf508=['getDataValue','preproduction','utf8','BLOB','production','toString','DATE','exports','STRING','name','TEXT','long'];(function(_0xf10277,_0x358eb4){var _0x5e5cf0=function(_0xfa5a3e){while(--_0xfa5a3e){_0xf10277['push'](_0xf10277['shift']());}};_0x5e5cf0(++_0x358eb4);}(_0xf508,0xa3));var _0x8f50=function(_0x42a214,_0x4a6828){_0x42a214=_0x42a214-0x0;var _0x4001ab=_0xf508[_0x42a214];return _0x4001ab;};'use strict';var Sequelize=require('sequelize');module[_0x8f50('0x0')]={'name':{'type':Sequelize[_0x8f50('0x1')],'unique':_0x8f50('0x2'),'allowNull':![]},'description':{'type':Sequelize['STRING']},'notes':{'type':Sequelize[_0x8f50('0x3')]},'preproduction':{'type':Sequelize['BLOB'](_0x8f50('0x4')),'get':function(){if(this[_0x8f50('0x5')](_0x8f50('0x6'))){return this[_0x8f50('0x5')](_0x8f50('0x6'))['toString'](_0x8f50('0x7'));}}},'production':{'type':Sequelize[_0x8f50('0x8')](_0x8f50('0x4')),'get':function(){if(this[_0x8f50('0x5')](_0x8f50('0x9'))){return this['getDataValue']('production')[_0x8f50('0xa')](_0x8f50('0x7'));}}},'savedAt':{'type':Sequelize[_0x8f50('0xb')]},'publishedAt':{'type':Sequelize[_0x8f50('0xb')]}};
\ No newline at end of file
index eb9a7b5..7a384eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30e3=['find','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','production','ioredis','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./squareProject.socket','register','status','json','offset','undefined','limit','count','set','Content-Range','then','destroy','get','SquareProjects','UserProfileResource','publish','stringify','end','name','send','map','SquareProject','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','where','filters','pick','filter','merge','type','VIRTUAL','options','includeAll','include','rows','catch','show','create','body','user','role','UserProfileSection'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x30e3,0x11c));var _0x330e=function(_0x1dac1f,_0xfefec9){_0x1dac1f=_0x1dac1f-0x0;var _0x44f6de=_0x30e3[_0x1dac1f];return _0x44f6de;};'use strict';var _=require('lodash');var Redis=require(_0x330e('0x0'));var qs=require('../../components/parsers/qs');var logger=require(_0x330e('0x1'))(_0x330e('0x2'));var config=require(_0x330e('0x3'));var db=require(_0x330e('0x4'))['db'];config[_0x330e('0x5')]=_[_0x330e('0x6')](config[_0x330e('0x5')],{'host':'localhost','port':0x18eb});var socket=require(_0x330e('0x7'))(new Redis(config[_0x330e('0x5')]));require(_0x330e('0x8'))[_0x330e('0x9')](socket);function respondWithResult(_0x2f0fdd,_0x867720){_0x867720=_0x867720||0xc8;return function(_0x1fff12){if(_0x1fff12){return _0x2f0fdd[_0x330e('0xa')](_0x867720)[_0x330e('0xb')](_0x1fff12);}};}function respondWithFilteredResult(_0x59387f,_0x3b793e){return function(_0x4fd371){if(_0x4fd371){var _0x3ff73d=typeof _0x3b793e[_0x330e('0xc')]===_0x330e('0xd')&&typeof _0x3b793e[_0x330e('0xe')]===_0x330e('0xd');var _0x3a4f33=_0x4fd371[_0x330e('0xf')];var _0x4f26e9=_0x3ff73d?0x0:_0x3b793e[_0x330e('0xc')];var _0x95c6cc=_0x3ff73d?_0x4fd371[_0x330e('0xf')]:_0x3b793e['offset']+_0x3b793e['limit'];var _0xe2855b;if(_0x95c6cc>=_0x3a4f33){_0x95c6cc=_0x3a4f33;_0xe2855b=0xc8;}else{_0xe2855b=0xce;}_0x59387f[_0x330e('0xa')](_0xe2855b);return _0x59387f[_0x330e('0x10')](_0x330e('0x11'),_0x4f26e9+'-'+_0x95c6cc+'/'+_0x3a4f33)[_0x330e('0xb')](_0x4fd371);}return null;};}function saveUpdates(_0x3260f9){return function(_0x13224d){if(_0x13224d){return _0x13224d['update'](_0x3260f9)[_0x330e('0x12')](function(_0xbfd6ec){return _0xbfd6ec;});}return null;};}function removeEntity(_0x435c32){return function(_0x47196f){if(_0x47196f){return _0x47196f[_0x330e('0x13')]()[_0x330e('0x12')](function(){var _0xf6e55e=_0x47196f[_0x330e('0x14')]({'plain':!![]});var _0x46567c=_0x330e('0x15');return db[_0x330e('0x16')][_0x330e('0x13')]({'where':{'type':_0x46567c,'resourceId':_0xf6e55e['id']}})[_0x330e('0x12')](function(){return _0x47196f;});})[_0x330e('0x12')](function(){var _0x3f56e6=new Redis(config['redis']);_0x3f56e6[_0x330e('0x17')]('agi',JSON[_0x330e('0x18')]({'id':_0x47196f['id'],'deleted':!![]}));})[_0x330e('0x12')](function(){_0x435c32[_0x330e('0xa')](0xcc)[_0x330e('0x19')]();});}};}function handleEntityNotFound(_0x502ada){return function(_0x3bcd60){if(!_0x3bcd60){_0x502ada['sendStatus'](0x194);}return _0x3bcd60;};}function handleError(_0x27953b,_0x6c9785){_0x6c9785=_0x6c9785||0x1f4;return function(_0x1ae98d){logger['error'](_0x1ae98d['stack']);if(_0x1ae98d[_0x330e('0x1a')]){delete _0x1ae98d['name'];}_0x27953b[_0x330e('0xa')](_0x6c9785)[_0x330e('0x1b')](_0x1ae98d);};}exports['index']=function(_0x2cb279,_0x146a63){var _0x3c2a4f={},_0x3f4f15={},_0x31b05f={'count':0x0,'rows':[]};var _0x7934d6=_[_0x330e('0x1c')](db[_0x330e('0x1d')][_0x330e('0x1e')],function(_0x604683){return{'name':_0x604683[_0x330e('0x1f')],'type':_0x604683['type'][_0x330e('0x20')]};});_0x3f4f15[_0x330e('0x21')]=_[_0x330e('0x1c')](_0x7934d6,_0x330e('0x1a'));_0x3f4f15[_0x330e('0x22')]=_[_0x330e('0x23')](_0x2cb279[_0x330e('0x22')]);_0x3f4f15['filters']=_[_0x330e('0x24')](_0x3f4f15[_0x330e('0x21')],_0x3f4f15[_0x330e('0x22')]);_0x3c2a4f[_0x330e('0x25')]=_[_0x330e('0x24')](_0x3f4f15[_0x330e('0x21')],qs[_0x330e('0x26')](_0x2cb279[_0x330e('0x22')][_0x330e('0x26')]));_0x3c2a4f['attributes']=_0x3c2a4f[_0x330e('0x25')][_0x330e('0x27')]?_0x3c2a4f[_0x330e('0x25')]:_0x3f4f15[_0x330e('0x21')];if(!_0x2cb279['query'][_0x330e('0x28')](_0x330e('0x29'))){_0x3c2a4f['limit']=qs['limit'](_0x2cb279[_0x330e('0x22')]['limit']);_0x3c2a4f[_0x330e('0xc')]=qs[_0x330e('0xc')](_0x2cb279[_0x330e('0x22')][_0x330e('0xc')]);}_0x3c2a4f[_0x330e('0x2a')]=qs['sort'](_0x2cb279[_0x330e('0x22')]['sort']);_0x3c2a4f[_0x330e('0x2b')]=qs[_0x330e('0x2c')](_[_0x330e('0x2d')](_0x2cb279[_0x330e('0x22')],_0x3f4f15[_0x330e('0x2c')]),_0x7934d6);if(_0x2cb279[_0x330e('0x22')][_0x330e('0x2e')]){_0x3c2a4f[_0x330e('0x2b')]=_[_0x330e('0x2f')](_0x3c2a4f[_0x330e('0x2b')],{'$or':_[_0x330e('0x1c')](_0x7934d6,function(_0x40dbf4){if(_0x40dbf4[_0x330e('0x30')]!==_0x330e('0x31')){var _0x260508={};_0x260508[_0x40dbf4['name']]={'$like':'%'+_0x2cb279[_0x330e('0x22')][_0x330e('0x2e')]+'%'};return _0x260508;}})});}_0x3c2a4f=_[_0x330e('0x2f')]({},_0x3c2a4f,_0x2cb279[_0x330e('0x32')]);var _0x425879={'where':_0x3c2a4f['where']};return db[_0x330e('0x1d')][_0x330e('0xf')](_0x425879)[_0x330e('0x12')](function(_0x91ae68){_0x31b05f[_0x330e('0xf')]=_0x91ae68;if(_0x2cb279[_0x330e('0x22')][_0x330e('0x33')]){_0x3c2a4f[_0x330e('0x34')]=[{'all':!![]}];}return db[_0x330e('0x1d')]['findAll'](_0x3c2a4f);})[_0x330e('0x12')](function(_0x200a41){_0x31b05f[_0x330e('0x35')]=_0x200a41;return _0x31b05f;})[_0x330e('0x12')](respondWithFilteredResult(_0x146a63,_0x3c2a4f))[_0x330e('0x36')](handleError(_0x146a63,null));};exports[_0x330e('0x37')]=function(_0x366262,_0x157f4b){var _0x1c93c1={'raw':![],'where':{'id':_0x366262['params']['id']}},_0x36d94a={};_0x36d94a[_0x330e('0x21')]=_[_0x330e('0x23')](db[_0x330e('0x1d')][_0x330e('0x1e')]);_0x36d94a[_0x330e('0x22')]=_['keys'](_0x366262[_0x330e('0x22')]);_0x36d94a['filters']=_['intersection'](_0x36d94a[_0x330e('0x21')],_0x36d94a[_0x330e('0x22')]);_0x1c93c1[_0x330e('0x25')]=_[_0x330e('0x24')](_0x36d94a[_0x330e('0x21')],qs[_0x330e('0x26')](_0x366262[_0x330e('0x22')][_0x330e('0x26')]));_0x1c93c1[_0x330e('0x25')]=_0x1c93c1[_0x330e('0x25')][_0x330e('0x27')]?_0x1c93c1[_0x330e('0x25')]:_0x36d94a[_0x330e('0x21')];if(_0x366262[_0x330e('0x22')][_0x330e('0x33')]){_0x1c93c1[_0x330e('0x34')]=[{'all':!![]}];}_0x1c93c1=_['merge']({},_0x1c93c1,_0x366262[_0x330e('0x32')]);return db[_0x330e('0x1d')]['find'](_0x1c93c1)['then'](handleEntityNotFound(_0x157f4b,null))[_0x330e('0x12')](respondWithResult(_0x157f4b,null))[_0x330e('0x36')](handleError(_0x157f4b,null));};exports[_0x330e('0x38')]=function(_0x1d663e,_0x1e123b){return db[_0x330e('0x1d')]['create'](_0x1d663e[_0x330e('0x39')],{})[_0x330e('0x12')](function(_0x1a302b){var _0x4ddb0f=_0x1d663e[_0x330e('0x3a')]['get']({'plain':!![]});if(!_0x4ddb0f)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4ddb0f[_0x330e('0x3b')]==='user'){var _0x1e218c=_0x1a302b[_0x330e('0x14')]({'plain':!![]});var _0x5b48d5=_0x330e('0x15');return db[_0x330e('0x3c')][_0x330e('0x3d')]({'where':{'name':_0x5b48d5,'userProfileId':_0x4ddb0f[_0x330e('0x3e')]},'raw':!![]})['then'](function(_0x15128a){if(_0x15128a&&_0x15128a[_0x330e('0x3f')]===0x0){return db[_0x330e('0x16')]['create']({'name':_0x1e218c[_0x330e('0x1a')],'resourceId':_0x1e218c['id'],'type':_0x15128a[_0x330e('0x1a')],'sectionId':_0x15128a['id']},{})['then'](function(){return _0x1a302b;});}else{return _0x1a302b;}})[_0x330e('0x36')](function(_0x443465){logger[_0x330e('0x40')](_0x330e('0x41'),_0x443465);throw _0x443465;});}return _0x1a302b;})[_0x330e('0x12')](respondWithResult(_0x1e123b,0xc9))[_0x330e('0x36')](handleError(_0x1e123b,null));};exports[_0x330e('0x42')]=function(_0x6ddb51,_0x58cb9b){if(_0x6ddb51[_0x330e('0x39')]['id']){delete _0x6ddb51[_0x330e('0x39')]['id'];}return db[_0x330e('0x1d')][_0x330e('0x3d')]({'where':{'id':_0x6ddb51[_0x330e('0x43')]['id']}})[_0x330e('0x12')](handleEntityNotFound(_0x58cb9b,null))[_0x330e('0x12')](saveUpdates(_0x6ddb51[_0x330e('0x39')],null))[_0x330e('0x12')](function(_0x3f28d2){if(!_0x3f28d2)return;var _0x289d5f=_0x3f28d2[_0x330e('0x14')]({'plain':!![]});return _0x289d5f;})[_0x330e('0x12')](function(_0x377b72){var _0x4002ef=new Redis(config[_0x330e('0x5')]);_0x4002ef[_0x330e('0x17')]('agi',JSON[_0x330e('0x18')](_['pick'](_0x377b72,['id',_0x330e('0x1a'),_0x330e('0x44')])));return _0x377b72;})[_0x330e('0x12')](respondWithResult(_0x58cb9b,null))['catch'](handleError(_0x58cb9b,null));};exports[_0x330e('0x13')]=function(_0x45e1e9,_0x386251){return db[_0x330e('0x1d')]['find']({'where':{'id':_0x45e1e9[_0x330e('0x43')]['id']}})[_0x330e('0x12')](handleEntityNotFound(_0x386251,null))[_0x330e('0x12')](removeEntity(_0x386251,null))[_0x330e('0x36')](handleError(_0x386251,null));};
\ No newline at end of file
+var _0xa4ba=['where','pick','type','VIRTUAL','filter','merge','options','includeAll','include','catch','show','params','SquareProject','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','stringify','lodash','ioredis','../../config/logger','api','../../config/environment','../../mysqldb','defaults','redis','localhost','./squareProject.socket','status','offset','undefined','count','limit','set','then','get','SquareProjects','UserProfileResource','destroy','publish','agi','end','sendStatus','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort'];(function(_0x42a532,_0x2baa85){var _0x85d8d8=function(_0x233b1f){while(--_0x233b1f){_0x42a532['push'](_0x42a532['shift']());}};_0x85d8d8(++_0x2baa85);}(_0xa4ba,0x170));var _0xaa4b=function(_0x1e4360,_0x930b9b){_0x1e4360=_0x1e4360-0x0;var _0x31e6b4=_0xa4ba[_0x1e4360];return _0x31e6b4;};'use strict';var _=require(_0xaa4b('0x0'));var Redis=require(_0xaa4b('0x1'));var qs=require('../../components/parsers/qs');var logger=require(_0xaa4b('0x2'))(_0xaa4b('0x3'));var config=require(_0xaa4b('0x4'));var db=require(_0xaa4b('0x5'))['db'];config['redis']=_[_0xaa4b('0x6')](config[_0xaa4b('0x7')],{'host':_0xaa4b('0x8'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xaa4b('0x7')]));require(_0xaa4b('0x9'))['register'](socket);function respondWithResult(_0x3b32db,_0x25277a){_0x25277a=_0x25277a||0xc8;return function(_0x2003e6){if(_0x2003e6){return _0x3b32db[_0xaa4b('0xa')](_0x25277a)['json'](_0x2003e6);}};}function respondWithFilteredResult(_0x480d66,_0x414fbd){return function(_0x16666c){if(_0x16666c){var _0x118d0d=typeof _0x414fbd[_0xaa4b('0xb')]===_0xaa4b('0xc')&&typeof _0x414fbd['limit']==='undefined';var _0x31be56=_0x16666c[_0xaa4b('0xd')];var _0x43aadb=_0x118d0d?0x0:_0x414fbd['offset'];var _0x27c501=_0x118d0d?_0x16666c[_0xaa4b('0xd')]:_0x414fbd[_0xaa4b('0xb')]+_0x414fbd[_0xaa4b('0xe')];var _0xcb1577;if(_0x27c501>=_0x31be56){_0x27c501=_0x31be56;_0xcb1577=0xc8;}else{_0xcb1577=0xce;}_0x480d66[_0xaa4b('0xa')](_0xcb1577);return _0x480d66[_0xaa4b('0xf')]('Content-Range',_0x43aadb+'-'+_0x27c501+'/'+_0x31be56)['json'](_0x16666c);}return null;};}function saveUpdates(_0x11751f){return function(_0x5e25ef){if(_0x5e25ef){return _0x5e25ef['update'](_0x11751f)[_0xaa4b('0x10')](function(_0x4afd95){return _0x4afd95;});}return null;};}function removeEntity(_0x551d38){return function(_0x3d37fa){if(_0x3d37fa){return _0x3d37fa['destroy']()[_0xaa4b('0x10')](function(){var _0x4ad960=_0x3d37fa[_0xaa4b('0x11')]({'plain':!![]});var _0x25415e=_0xaa4b('0x12');return db[_0xaa4b('0x13')][_0xaa4b('0x14')]({'where':{'type':_0x25415e,'resourceId':_0x4ad960['id']}})['then'](function(){return _0x3d37fa;});})[_0xaa4b('0x10')](function(){var _0x5e61c0=new Redis(config[_0xaa4b('0x7')]);_0x5e61c0[_0xaa4b('0x15')](_0xaa4b('0x16'),JSON['stringify']({'id':_0x3d37fa['id'],'deleted':!![]}));})[_0xaa4b('0x10')](function(){_0x551d38['status'](0xcc)[_0xaa4b('0x17')]();});}};}function handleEntityNotFound(_0x4c9c0a){return function(_0x3d8523){if(!_0x3d8523){_0x4c9c0a[_0xaa4b('0x18')](0x194);}return _0x3d8523;};}function handleError(_0x5c988c,_0x486d6b){_0x486d6b=_0x486d6b||0x1f4;return function(_0x137ac4){logger[_0xaa4b('0x19')](_0x137ac4[_0xaa4b('0x1a')]);if(_0x137ac4[_0xaa4b('0x1b')]){delete _0x137ac4['name'];}_0x5c988c[_0xaa4b('0xa')](_0x486d6b)[_0xaa4b('0x1c')](_0x137ac4);};}exports[_0xaa4b('0x1d')]=function(_0x342eb4,_0x5428a0){var _0x36d5a4={},_0x4547a3={},_0x32a42c={'count':0x0,'rows':[]};var _0x4a74bf=_[_0xaa4b('0x1e')](db['SquareProject'][_0xaa4b('0x1f')],function(_0x34978c){return{'name':_0x34978c[_0xaa4b('0x20')],'type':_0x34978c['type'][_0xaa4b('0x21')]};});_0x4547a3[_0xaa4b('0x22')]=_[_0xaa4b('0x1e')](_0x4a74bf,_0xaa4b('0x1b'));_0x4547a3[_0xaa4b('0x23')]=_[_0xaa4b('0x24')](_0x342eb4[_0xaa4b('0x23')]);_0x4547a3[_0xaa4b('0x25')]=_[_0xaa4b('0x26')](_0x4547a3[_0xaa4b('0x22')],_0x4547a3['query']);_0x36d5a4['attributes']=_[_0xaa4b('0x26')](_0x4547a3[_0xaa4b('0x22')],qs[_0xaa4b('0x27')](_0x342eb4[_0xaa4b('0x23')][_0xaa4b('0x27')]));_0x36d5a4[_0xaa4b('0x28')]=_0x36d5a4[_0xaa4b('0x28')][_0xaa4b('0x29')]?_0x36d5a4[_0xaa4b('0x28')]:_0x4547a3[_0xaa4b('0x22')];if(!_0x342eb4[_0xaa4b('0x23')][_0xaa4b('0x2a')](_0xaa4b('0x2b'))){_0x36d5a4[_0xaa4b('0xe')]=qs[_0xaa4b('0xe')](_0x342eb4[_0xaa4b('0x23')][_0xaa4b('0xe')]);_0x36d5a4[_0xaa4b('0xb')]=qs[_0xaa4b('0xb')](_0x342eb4[_0xaa4b('0x23')]['offset']);}_0x36d5a4[_0xaa4b('0x2c')]=qs[_0xaa4b('0x2d')](_0x342eb4[_0xaa4b('0x23')]['sort']);_0x36d5a4[_0xaa4b('0x2e')]=qs[_0xaa4b('0x25')](_[_0xaa4b('0x2f')](_0x342eb4[_0xaa4b('0x23')],_0x4547a3[_0xaa4b('0x25')]),_0x4a74bf);if(_0x342eb4[_0xaa4b('0x23')]['filter']){_0x36d5a4[_0xaa4b('0x2e')]=_['merge'](_0x36d5a4['where'],{'$or':_[_0xaa4b('0x1e')](_0x4a74bf,function(_0x5e4463){if(_0x5e4463[_0xaa4b('0x30')]!==_0xaa4b('0x31')){var _0x400643={};_0x400643[_0x5e4463[_0xaa4b('0x1b')]]={'$like':'%'+_0x342eb4['query'][_0xaa4b('0x32')]+'%'};return _0x400643;}})});}_0x36d5a4=_[_0xaa4b('0x33')]({},_0x36d5a4,_0x342eb4[_0xaa4b('0x34')]);var _0x4f5dc2={'where':_0x36d5a4[_0xaa4b('0x2e')]};return db['SquareProject']['count'](_0x4f5dc2)[_0xaa4b('0x10')](function(_0x4c5d5d){_0x32a42c[_0xaa4b('0xd')]=_0x4c5d5d;if(_0x342eb4[_0xaa4b('0x23')][_0xaa4b('0x35')]){_0x36d5a4[_0xaa4b('0x36')]=[{'all':!![]}];}return db['SquareProject']['findAll'](_0x36d5a4);})['then'](function(_0x1db6c1){_0x32a42c['rows']=_0x1db6c1;return _0x32a42c;})[_0xaa4b('0x10')](respondWithFilteredResult(_0x5428a0,_0x36d5a4))[_0xaa4b('0x37')](handleError(_0x5428a0,null));};exports[_0xaa4b('0x38')]=function(_0x17d279,_0x279383){var _0x203bb6={'raw':![],'where':{'id':_0x17d279[_0xaa4b('0x39')]['id']}},_0x5b7be1={};_0x5b7be1[_0xaa4b('0x22')]=_[_0xaa4b('0x24')](db[_0xaa4b('0x3a')][_0xaa4b('0x1f')]);_0x5b7be1[_0xaa4b('0x23')]=_[_0xaa4b('0x24')](_0x17d279[_0xaa4b('0x23')]);_0x5b7be1[_0xaa4b('0x25')]=_[_0xaa4b('0x26')](_0x5b7be1[_0xaa4b('0x22')],_0x5b7be1[_0xaa4b('0x23')]);_0x203bb6[_0xaa4b('0x28')]=_['intersection'](_0x5b7be1[_0xaa4b('0x22')],qs[_0xaa4b('0x27')](_0x17d279[_0xaa4b('0x23')][_0xaa4b('0x27')]));_0x203bb6[_0xaa4b('0x28')]=_0x203bb6[_0xaa4b('0x28')][_0xaa4b('0x29')]?_0x203bb6['attributes']:_0x5b7be1[_0xaa4b('0x22')];if(_0x17d279[_0xaa4b('0x23')][_0xaa4b('0x35')]){_0x203bb6[_0xaa4b('0x36')]=[{'all':!![]}];}_0x203bb6=_['merge']({},_0x203bb6,_0x17d279[_0xaa4b('0x34')]);return db[_0xaa4b('0x3a')]['find'](_0x203bb6)[_0xaa4b('0x10')](handleEntityNotFound(_0x279383,null))[_0xaa4b('0x10')](respondWithResult(_0x279383,null))['catch'](handleError(_0x279383,null));};exports[_0xaa4b('0x3b')]=function(_0x2caadc,_0x19d801){return db[_0xaa4b('0x3a')][_0xaa4b('0x3b')](_0x2caadc[_0xaa4b('0x3c')],{})[_0xaa4b('0x10')](function(_0x555c54){var _0x361314=_0x2caadc['user'][_0xaa4b('0x11')]({'plain':!![]});if(!_0x361314)throw new Error(_0xaa4b('0x3d'));if(_0x361314['role']===_0xaa4b('0x3e')){var _0x55e6db=_0x555c54[_0xaa4b('0x11')]({'plain':!![]});var _0x5b1774='SquareProjects';return db['UserProfileSection'][_0xaa4b('0x3f')]({'where':{'name':_0x5b1774,'userProfileId':_0x361314[_0xaa4b('0x40')]},'raw':!![]})[_0xaa4b('0x10')](function(_0x17c905){if(_0x17c905&&_0x17c905[_0xaa4b('0x41')]===0x0){return db[_0xaa4b('0x13')]['create']({'name':_0x55e6db[_0xaa4b('0x1b')],'resourceId':_0x55e6db['id'],'type':_0x17c905[_0xaa4b('0x1b')],'sectionId':_0x17c905['id']},{})['then'](function(){return _0x555c54;});}else{return _0x555c54;}})[_0xaa4b('0x37')](function(_0x571393){logger['error'](_0xaa4b('0x42'),_0x571393);throw _0x571393;});}return _0x555c54;})[_0xaa4b('0x10')](respondWithResult(_0x19d801,0xc9))[_0xaa4b('0x37')](handleError(_0x19d801,null));};exports[_0xaa4b('0x43')]=function(_0xfbd610,_0x4f0def){if(_0xfbd610[_0xaa4b('0x3c')]['id']){delete _0xfbd610[_0xaa4b('0x3c')]['id'];}return db[_0xaa4b('0x3a')][_0xaa4b('0x3f')]({'where':{'id':_0xfbd610['params']['id']}})[_0xaa4b('0x10')](handleEntityNotFound(_0x4f0def,null))[_0xaa4b('0x10')](saveUpdates(_0xfbd610[_0xaa4b('0x3c')],null))[_0xaa4b('0x10')](function(_0x4ee722){if(!_0x4ee722)return;var _0x295112=_0x4ee722[_0xaa4b('0x11')]({'plain':!![]});return _0x295112;})[_0xaa4b('0x10')](function(_0x4e744a){var _0x137636=new Redis(config[_0xaa4b('0x7')]);_0x137636[_0xaa4b('0x15')](_0xaa4b('0x16'),JSON[_0xaa4b('0x44')](_[_0xaa4b('0x2f')](_0x4e744a,['id',_0xaa4b('0x1b'),'production'])));return _0x4e744a;})[_0xaa4b('0x10')](respondWithResult(_0x4f0def,null))[_0xaa4b('0x37')](handleError(_0x4f0def,null));};exports['destroy']=function(_0x3e75de,_0x144710){return db[_0xaa4b('0x3a')]['find']({'where':{'id':_0x3e75de[_0xaa4b('0x39')]['id']}})['then'](handleEntityNotFound(_0x144710,null))['then'](removeEntity(_0x144710,null))[_0xaa4b('0x37')](handleError(_0x144710,null));};
\ No newline at end of file
index 724473f..6553ade 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5648=['setMaxListeners','save','update','emit','hasOwnProperty','exports','../../mysqldb'];(function(_0x23126e,_0x572d61){var _0x4186bf=function(_0x2ced5e){while(--_0x2ced5e){_0x23126e['push'](_0x23126e['shift']());}};_0x4186bf(++_0x572d61);}(_0x5648,0x12c));var _0x8564=function(_0x54158c,_0x3a4bbb){_0x54158c=_0x54158c-0x0;var _0x4f7d28=_0x5648[_0x54158c];return _0x4f7d28;};'use strict';var EventEmitter=require('events');var SquareProject=require(_0x8564('0x0'))['db']['SquareProject'];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0x8564('0x1')](0x0);var events={'afterCreate':_0x8564('0x2'),'afterUpdate':_0x8564('0x3'),'afterDestroy':'remove'};function emitEvent(_0xdcfc59){return function(_0x17a4dd,_0x25de39,_0x5b345c){SquareProjectEvents[_0x8564('0x4')](_0xdcfc59+':'+_0x17a4dd['id'],_0x17a4dd);SquareProjectEvents[_0x8564('0x4')](_0xdcfc59,_0x17a4dd);_0x5b345c(null);};}for(var e in events){if(events[_0x8564('0x5')](e)){var event=events[e];SquareProject['hook'](e,emitEvent(event));}}module[_0x8564('0x6')]=SquareProjectEvents;
\ No newline at end of file
+var _0xa2a0=['save','update','emit','events','SquareProject','setMaxListeners'];(function(_0x5a4de1,_0x319822){var _0x1b6915=function(_0x386a6b){while(--_0x386a6b){_0x5a4de1['push'](_0x5a4de1['shift']());}};_0x1b6915(++_0x319822);}(_0xa2a0,0xc9));var _0x0a2a=function(_0x33545d,_0x3a5e29){_0x33545d=_0x33545d-0x0;var _0x27d188=_0xa2a0[_0x33545d];return _0x27d188;};'use strict';var EventEmitter=require(_0x0a2a('0x0'));var SquareProject=require('../../mysqldb')['db'][_0x0a2a('0x1')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0x0a2a('0x2')](0x0);var events={'afterCreate':_0x0a2a('0x3'),'afterUpdate':_0x0a2a('0x4'),'afterDestroy':'remove'};function emitEvent(_0xcd866c){return function(_0xe5645c,_0x5dd427,_0x13f1b4){SquareProjectEvents['emit'](_0xcd866c+':'+_0xe5645c['id'],_0xe5645c);SquareProjectEvents[_0x0a2a('0x5')](_0xcd866c,_0xe5645c);_0x13f1b4(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SquareProject['hook'](e,emitEvent(event));}}module['exports']=SquareProjectEvents;
\ No newline at end of file
index c255dc9..ad531ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33b8=['square_projects','preproduction','changed','production','publishedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','../../config/logger','api','rimraf','../../config/environment','./squareProject.attributes','exports','define','SquareProject'];(function(_0x179b74,_0x5dc97d){var _0x268f76=function(_0x19c8c2){while(--_0x19c8c2){_0x179b74['push'](_0x179b74['shift']());}};_0x268f76(++_0x5dc97d);}(_0x33b8,0xd7));var _0x833b=function(_0x46a671,_0x758e9a){_0x46a671=_0x46a671-0x0;var _0x526d75=_0x33b8[_0x46a671];return _0x526d75;};'use strict';var _=require(_0x833b('0x0'));var util=require('util');var logger=require(_0x833b('0x1'))(_0x833b('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x833b('0x3'));var config=require(_0x833b('0x4'));var attributes=require(_0x833b('0x5'));module[_0x833b('0x6')]=function(_0xd5b836,_0x2f5e25){return _0xd5b836[_0x833b('0x7')](_0x833b('0x8'),attributes,{'tableName':_0x833b('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x59fb6e,_0x4cf5f0,_0x3e82ab){if(_0x59fb6e['changed'](_0x833b('0xa'))){_0x59fb6e['savedAt']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}if(_0x59fb6e[_0x833b('0xb')](_0x833b('0xc'))){_0x59fb6e[_0x833b('0xd')]=moment()[_0x833b('0xe')](_0x833b('0xf'));}_0x3e82ab(null,_0x59fb6e);}}});};
\ No newline at end of file
+var _0xf823=['./squareProject.attributes','exports','define','changed','preproduction','YYYY-MM-DD\x20HH:mm:ss','production','publishedAt','format','lodash','util','../../config/logger','request-promise','path','../../config/environment'];(function(_0x4ebc7b,_0x255c0d){var _0x52a271=function(_0x2dbaaa){while(--_0x2dbaaa){_0x4ebc7b['push'](_0x4ebc7b['shift']());}};_0x52a271(++_0x255c0d);}(_0xf823,0x108));var _0x3f82=function(_0x5d7568,_0x5c5aaa){_0x5d7568=_0x5d7568-0x0;var _0x49320a=_0xf823[_0x5d7568];return _0x49320a;};'use strict';var _=require(_0x3f82('0x0'));var util=require(_0x3f82('0x1'));var logger=require(_0x3f82('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x3f82('0x3'));var fs=require('fs');var path=require(_0x3f82('0x4'));var rimraf=require('rimraf');var config=require(_0x3f82('0x5'));var attributes=require(_0x3f82('0x6'));module[_0x3f82('0x7')]=function(_0x11649e,_0x11a9ed){return _0x11649e[_0x3f82('0x8')]('SquareProject',attributes,{'tableName':'square_projects','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x4a21ea,_0xe72f44,_0x3fb286){if(_0x4a21ea[_0x3f82('0x9')](_0x3f82('0xa'))){_0x4a21ea['savedAt']=moment()['format'](_0x3f82('0xb'));}if(_0x4a21ea[_0x3f82('0x9')](_0x3f82('0xc'))){_0x4a21ea[_0x3f82('0xd')]=moment()[_0x3f82('0xe')]('YYYY-MM-DD\x20HH:mm:ss');}_0x3fb286(null,_0x4a21ea);}}});};
\ No newline at end of file
index 795e796..217a44e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95b3=['ioredis','../../config/logger','../../config/environment','defaults','redis','./squareProject.socket','register','SquareProject','findAll','options','raw','where','attributes','limit','map','include','model','info','GetSquareProjects','debug','catch','error','message','ShowSquareProject','then','stringify'];(function(_0x34da86,_0x16cd32){var _0x396bc1=function(_0x220f6f){while(--_0x220f6f){_0x34da86['push'](_0x34da86['shift']());}};_0x396bc1(++_0x16cd32);}(_0x95b3,0xb6));var _0x395b=function(_0x412505,_0x39533a){_0x412505=_0x412505-0x0;var _0xaedf91=_0x95b3[_0x412505];return _0xaedf91;};'use strict';var _=require('lodash');var Redis=require(_0x395b('0x0'));var db=require('../../mysqldb')['db'];var logger=require(_0x395b('0x1'))('rpc');var config=require(_0x395b('0x2'));config['redis']=_[_0x395b('0x3')](config[_0x395b('0x4')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x395b('0x4')]));require(_0x395b('0x5'))[_0x395b('0x6')](socket);exports['GetSquareProjects']=function(_0x5ed637){var _0x254676=this;return new Promise(function(_0x74a83a,_0x12b323){return db[_0x395b('0x7')][_0x395b('0x8')]({'raw':_0x5ed637[_0x395b('0x9')]?_0x5ed637[_0x395b('0x9')][_0x395b('0xa')]===undefined?!![]:![]:!![],'where':_0x5ed637['options']?_0x5ed637[_0x395b('0x9')][_0x395b('0xb')]||null:null,'attributes':_0x5ed637[_0x395b('0x9')]?_0x5ed637[_0x395b('0x9')][_0x395b('0xc')]||null:null,'limit':_0x5ed637['options']?_0x5ed637['options'][_0x395b('0xd')]||null:null,'include':_0x5ed637['options']?_0x5ed637['options']['include']?_[_0x395b('0xe')](_0x5ed637[_0x395b('0x9')][_0x395b('0xf')],function(_0x482bbc){return{'model':db[_0x482bbc['model']],'as':_0x482bbc['as'],'attributes':_0x482bbc[_0x395b('0xc')],'include':_0x482bbc[_0x395b('0xf')]?_[_0x395b('0xe')](_0x482bbc['include'],function(_0x54ee8c){return{'model':db[_0x54ee8c[_0x395b('0x10')]],'as':_0x54ee8c['as'],'attributes':_0x54ee8c[_0x395b('0xc')],'include':_0x54ee8c[_0x395b('0xf')]?_[_0x395b('0xe')](_0x54ee8c[_0x395b('0xf')],function(_0x15066c){return{'model':db[_0x15066c[_0x395b('0x10')]],'as':_0x15066c['as'],'attributes':_0x15066c[_0x395b('0xc')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5081fc){logger[_0x395b('0x11')](_0x395b('0x12'),_0x5ed637);logger[_0x395b('0x13')](_0x395b('0x12'),_0x5ed637,JSON['stringify'](_0x5081fc));_0x74a83a(_0x5081fc);})[_0x395b('0x14')](function(_0x47979d){logger[_0x395b('0x15')]('GetSquareProjects',_0x47979d[_0x395b('0x16')],_0x5ed637);_0x12b323(_0x254676[_0x395b('0x15')](0x1f4,_0x47979d[_0x395b('0x16')]));});});};exports[_0x395b('0x17')]=function(_0x59bd7b){var _0x557e35=this;return new Promise(function(_0x3fdf3d,_0x4afd3d){return db['SquareProject']['find']({'raw':_0x59bd7b[_0x395b('0x9')]?_0x59bd7b['options'][_0x395b('0xa')]===undefined?!![]:![]:!![],'where':_0x59bd7b[_0x395b('0x9')]?_0x59bd7b['options']['where']||null:null,'attributes':_0x59bd7b[_0x395b('0x9')]?_0x59bd7b['options'][_0x395b('0xc')]||null:null,'include':_0x59bd7b[_0x395b('0x9')]?_0x59bd7b[_0x395b('0x9')][_0x395b('0xf')]?_[_0x395b('0xe')](_0x59bd7b[_0x395b('0x9')][_0x395b('0xf')],function(_0x213564){return{'model':db[_0x213564['model']],'as':_0x213564['as'],'attributes':_0x213564['attributes'],'include':_0x213564[_0x395b('0xf')]?_['map'](_0x213564[_0x395b('0xf')],function(_0x405826){return{'model':db[_0x405826[_0x395b('0x10')]],'as':_0x405826['as'],'attributes':_0x405826[_0x395b('0xc')],'include':_0x405826[_0x395b('0xf')]?_['map'](_0x405826['include'],function(_0x1ab8ae){return{'model':db[_0x1ab8ae[_0x395b('0x10')]],'as':_0x1ab8ae['as'],'attributes':_0x1ab8ae[_0x395b('0xc')]};}):[]};}):[]};}):[]:[]})[_0x395b('0x18')](function(_0x313795){logger['info'](_0x395b('0x17'),_0x59bd7b);logger[_0x395b('0x13')](_0x395b('0x17'),_0x59bd7b,JSON[_0x395b('0x19')](_0x313795));_0x3fdf3d(_0x313795);})[_0x395b('0x14')](function(_0x407bb1){logger[_0x395b('0x15')](_0x395b('0x17'),_0x407bb1['message'],_0x59bd7b);_0x4afd3d(_0x557e35[_0x395b('0x15')](0x1f4,_0x407bb1[_0x395b('0x16')]));});});};
\ No newline at end of file
+var _0x77a6=['include','map','model','then','info','GetSquareProjects','debug','message','ShowSquareProject','SquareProject','find','stringify','catch','error','lodash','ioredis','rpc','../../config/environment','redis','defaults','localhost','socket.io-emitter','register','findAll','options','raw','where','attributes','limit'];(function(_0x4e0f6e,_0x600f16){var _0x35f065=function(_0x46f737){while(--_0x46f737){_0x4e0f6e['push'](_0x4e0f6e['shift']());}};_0x35f065(++_0x600f16);}(_0x77a6,0x65));var _0x677a=function(_0xcee609,_0x96d847){_0xcee609=_0xcee609-0x0;var _0x4f9afe=_0x77a6[_0xcee609];return _0x4f9afe;};'use strict';var _=require(_0x677a('0x0'));var Redis=require(_0x677a('0x1'));var db=require('../../mysqldb')['db'];var logger=require('../../config/logger')(_0x677a('0x2'));var config=require(_0x677a('0x3'));config[_0x677a('0x4')]=_[_0x677a('0x5')](config[_0x677a('0x4')],{'host':_0x677a('0x6'),'port':0x18eb});var socket=require(_0x677a('0x7'))(new Redis(config[_0x677a('0x4')]));require('./squareProject.socket')[_0x677a('0x8')](socket);exports['GetSquareProjects']=function(_0x1f8a7f){var _0x10c3c6=this;return new Promise(function(_0x51efea,_0x35c056){return db['SquareProject'][_0x677a('0x9')]({'raw':_0x1f8a7f[_0x677a('0xa')]?_0x1f8a7f[_0x677a('0xa')][_0x677a('0xb')]===undefined?!![]:![]:!![],'where':_0x1f8a7f['options']?_0x1f8a7f['options'][_0x677a('0xc')]||null:null,'attributes':_0x1f8a7f[_0x677a('0xa')]?_0x1f8a7f['options'][_0x677a('0xd')]||null:null,'limit':_0x1f8a7f['options']?_0x1f8a7f[_0x677a('0xa')][_0x677a('0xe')]||null:null,'include':_0x1f8a7f[_0x677a('0xa')]?_0x1f8a7f['options'][_0x677a('0xf')]?_[_0x677a('0x10')](_0x1f8a7f[_0x677a('0xa')][_0x677a('0xf')],function(_0x5d170c){return{'model':db[_0x5d170c[_0x677a('0x11')]],'as':_0x5d170c['as'],'attributes':_0x5d170c[_0x677a('0xd')],'include':_0x5d170c[_0x677a('0xf')]?_[_0x677a('0x10')](_0x5d170c[_0x677a('0xf')],function(_0x369238){return{'model':db[_0x369238[_0x677a('0x11')]],'as':_0x369238['as'],'attributes':_0x369238['attributes'],'include':_0x369238[_0x677a('0xf')]?_[_0x677a('0x10')](_0x369238[_0x677a('0xf')],function(_0x316c57){return{'model':db[_0x316c57[_0x677a('0x11')]],'as':_0x316c57['as'],'attributes':_0x316c57['attributes']};}):[]};}):[]};}):[]:[]})[_0x677a('0x12')](function(_0x4bdead){logger[_0x677a('0x13')](_0x677a('0x14'),_0x1f8a7f);logger[_0x677a('0x15')]('GetSquareProjects',_0x1f8a7f,JSON['stringify'](_0x4bdead));_0x51efea(_0x4bdead);})['catch'](function(_0x17b411){logger['error'](_0x677a('0x14'),_0x17b411[_0x677a('0x16')],_0x1f8a7f);_0x35c056(_0x10c3c6['error'](0x1f4,_0x17b411[_0x677a('0x16')]));});});};exports[_0x677a('0x17')]=function(_0x35e577){var _0x3e1e65=this;return new Promise(function(_0x17872d,_0x5dcb4c){return db[_0x677a('0x18')][_0x677a('0x19')]({'raw':_0x35e577[_0x677a('0xa')]?_0x35e577[_0x677a('0xa')][_0x677a('0xb')]===undefined?!![]:![]:!![],'where':_0x35e577[_0x677a('0xa')]?_0x35e577[_0x677a('0xa')]['where']||null:null,'attributes':_0x35e577[_0x677a('0xa')]?_0x35e577['options'][_0x677a('0xd')]||null:null,'include':_0x35e577['options']?_0x35e577[_0x677a('0xa')][_0x677a('0xf')]?_[_0x677a('0x10')](_0x35e577[_0x677a('0xa')][_0x677a('0xf')],function(_0x4b51f6){return{'model':db[_0x4b51f6['model']],'as':_0x4b51f6['as'],'attributes':_0x4b51f6[_0x677a('0xd')],'include':_0x4b51f6['include']?_[_0x677a('0x10')](_0x4b51f6[_0x677a('0xf')],function(_0x2cbf89){return{'model':db[_0x2cbf89['model']],'as':_0x2cbf89['as'],'attributes':_0x2cbf89['attributes'],'include':_0x2cbf89['include']?_[_0x677a('0x10')](_0x2cbf89[_0x677a('0xf')],function(_0x49f5bc){return{'model':db[_0x49f5bc[_0x677a('0x11')]],'as':_0x49f5bc['as'],'attributes':_0x49f5bc[_0x677a('0xd')]};}):[]};}):[]};}):[]:[]})[_0x677a('0x12')](function(_0x4c6f4f){logger[_0x677a('0x13')]('ShowSquareProject',_0x35e577);logger[_0x677a('0x15')](_0x677a('0x17'),_0x35e577,JSON[_0x677a('0x1a')](_0x4c6f4f));_0x17872d(_0x4c6f4f);})[_0x677a('0x1b')](function(_0x5c000d){logger[_0x677a('0x1c')](_0x677a('0x17'),_0x5c000d[_0x677a('0x16')],_0x35e577);_0x5dcb4c(_0x3e1e65[_0x677a('0x1c')](0x1f4,_0x5c000d[_0x677a('0x16')]));});});};
\ No newline at end of file
index dbba17a..69fb9bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0216=['register','length','squareProject:','remove','emit'];(function(_0x10a512,_0x59c8a3){var _0xd6e5e6=function(_0x49bb2f){while(--_0x49bb2f){_0x10a512['push'](_0x10a512['shift']());}};_0xd6e5e6(++_0x59c8a3);}(_0x0216,0x9e));var _0x6021=function(_0x5090e3,_0x36d336){_0x5090e3=_0x5090e3-0x0;var _0x437af6=_0x0216[_0x5090e3];return _0x437af6;};'use strict';var SquareProjectEvents=require('./squareProject.events');var events=['save',_0x6021('0x0'),'update'];function createListener(_0x212f18,_0x1ac32e){return function(_0x150335){_0x1ac32e[_0x6021('0x1')](_0x212f18,_0x150335);};}function removeListener(_0x392a40,_0x224089){return function(){SquareProjectEvents['removeListener'](_0x392a40,_0x224089);};}exports[_0x6021('0x2')]=function(_0x5adf51){for(var _0x4ee02d=0x0,_0x12f4cd=events[_0x6021('0x3')];_0x4ee02d<_0x12f4cd;_0x4ee02d++){var _0xa9c0f8=events[_0x4ee02d];var _0x5a0352=createListener(_0x6021('0x4')+_0xa9c0f8,_0x5adf51);SquareProjectEvents['on'](_0xa9c0f8,_0x5a0352);}};
\ No newline at end of file
+var _0x6706=['emit','squareProject:','./squareProject.events','remove','update'];(function(_0x32d8a5,_0x10a302){var _0xd9ebf7=function(_0x4f615e){while(--_0x4f615e){_0x32d8a5['push'](_0x32d8a5['shift']());}};_0xd9ebf7(++_0x10a302);}(_0x6706,0xc0));var _0x6670=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6706[_0x3dd15e];return _0x231fd0;};'use strict';var SquareProjectEvents=require(_0x6670('0x0'));var events=['save',_0x6670('0x1'),_0x6670('0x2')];function createListener(_0x49f88e,_0x3f2627){return function(_0x40dad7){_0x3f2627[_0x6670('0x3')](_0x49f88e,_0x40dad7);};}function removeListener(_0x3574b1,_0x3d660a){return function(){SquareProjectEvents['removeListener'](_0x3574b1,_0x3d660a);};}exports['register']=function(_0x19cf18){for(var _0x421121=0x0,_0x2ec347=events['length'];_0x421121<_0x2ec347;_0x421121++){var _0x5a35b8=events[_0x421121];var _0x2d023f=createListener(_0x6670('0x4')+_0x5a35b8,_0x19cf18);SquareProjectEvents['on'](_0x5a35b8,_0x2d023f);}};
\ No newline at end of file
index db88094..89be1b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['destroy','exports','multer','util','path','connect-timeout','express','Router','../../config/environment','./squareRecording.controller','get','isAuthenticated','index','/:id','/:id/download','download','create','put','delete'];(function(_0x298cac,_0x1ae36e){var _0x24a351=function(_0x2f700d){while(--_0x2f700d){_0x298cac['push'](_0x298cac['shift']());}};_0x24a351(++_0x1ae36e);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x2e4aa2,_0x11956a){_0x2e4aa2=_0x2e4aa2-0x0;var _0x5e6092=_0xc4aa[_0x2e4aa2];return _0x5e6092;};'use strict';var multer=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var path=require(_0xac4a('0x2'));var timeout=require(_0xac4a('0x3'));var express=require(_0xac4a('0x4'));var router=express[_0xac4a('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xac4a('0x6'));var controller=require(_0xac4a('0x7'));router[_0xac4a('0x8')]('/',auth[_0xac4a('0x9')](),controller[_0xac4a('0xa')]);router[_0xac4a('0x8')](_0xac4a('0xb'),auth[_0xac4a('0x9')](),controller['show']);router['get'](_0xac4a('0xc'),auth[_0xac4a('0x9')](),controller[_0xac4a('0xd')]);router['post']('/',auth[_0xac4a('0x9')](),controller[_0xac4a('0xe')]);router[_0xac4a('0xf')]('/:id',auth[_0xac4a('0x9')](),controller['update']);router[_0xac4a('0x10')]('/:id',auth[_0xac4a('0x9')](),controller[_0xac4a('0x11')]);module[_0xac4a('0x12')]=router;
\ No newline at end of file
+var _0x7a54=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareRecording.controller','get','index','/:id','isAuthenticated','post','put','update','delete','destroy','exports','multer','util','path','express'];(function(_0x597754,_0x1f9b35){var _0x389e49=function(_0x14e6d2){while(--_0x14e6d2){_0x597754['push'](_0x597754['shift']());}};_0x389e49(++_0x1f9b35);}(_0x7a54,0x106));var _0x47a5=function(_0x34c91a,_0x506aa0){_0x34c91a=_0x34c91a-0x0;var _0x3f549c=_0x7a54[_0x34c91a];return _0x3f549c;};'use strict';var multer=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var path=require(_0x47a5('0x2'));var timeout=require('connect-timeout');var express=require(_0x47a5('0x3'));var router=express[_0x47a5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x47a5('0x5'));var interaction=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var controller=require(_0x47a5('0x8'));router[_0x47a5('0x9')]('/',auth['isAuthenticated'](),controller[_0x47a5('0xa')]);router['get'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['show']);router[_0x47a5('0x9')]('/:id/download',auth['isAuthenticated'](),controller['download']);router[_0x47a5('0xd')]('/',auth[_0x47a5('0xc')](),controller['create']);router[_0x47a5('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x47a5('0xf')]);router[_0x47a5('0x10')](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller[_0x47a5('0x11')]);module[_0x47a5('0x12')]=router;
\ No newline at end of file
index 19c5377..5fca8c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee14=['VIRTUAL','getDataValue','savePath','substring','STRING'];(function(_0x1eb89f,_0x4f3443){var _0x269225=function(_0x4f8096){while(--_0x4f8096){_0x1eb89f['push'](_0x1eb89f['shift']());}};_0x269225(++_0x4f3443);}(_0xee14,0x13a));var _0x4ee1=function(_0x8386ab,_0x18bf29){_0x8386ab=_0x8386ab-0x0;var _0x854811=_0xee14[_0x8386ab];return _0x854811;};'use strict';var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0x4ee1('0x0')]},'callerid':{'type':Sequelize[_0x4ee1('0x0')]},'calleridname':{'type':Sequelize[_0x4ee1('0x0')]},'context':{'type':Sequelize[_0x4ee1('0x0')]},'extension':{'type':Sequelize[_0x4ee1('0x0')]},'priority':{'type':Sequelize[_0x4ee1('0x0')]},'accountcode':{'type':Sequelize[_0x4ee1('0x0')]},'dnid':{'type':Sequelize[_0x4ee1('0x0')]},'projectName':{'type':Sequelize[_0x4ee1('0x0')]},'saveName':{'type':Sequelize['STRING']},'filename':{'type':Sequelize[_0x4ee1('0x0')]},'savePath':{'type':Sequelize['STRING']},'format':{'type':Sequelize[_0x4ee1('0x1')],'get':function(){var _0x3a45a3='';var _0x187656=this[_0x4ee1('0x2')](_0x4ee1('0x3'));if(_0x187656){_0x3a45a3=_0x187656[_0x4ee1('0x4')](_0x187656['lastIndexOf']('.'));}return _0x3a45a3;}}};
\ No newline at end of file
+var _0x46ed=['sequelize','exports','STRING','VIRTUAL','getDataValue','savePath','substring','lastIndexOf'];(function(_0x1c8697,_0x47bb41){var _0x289968=function(_0x40c835){while(--_0x40c835){_0x1c8697['push'](_0x1c8697['shift']());}};_0x289968(++_0x47bb41);}(_0x46ed,0x168));var _0xd46e=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0x46ed[_0x46698a];return _0x356db0;};'use strict';var Sequelize=require(_0xd46e('0x0'));module[_0xd46e('0x1')]={'uniqueid':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0xd46e('0x2')]},'calleridname':{'type':Sequelize[_0xd46e('0x2')]},'context':{'type':Sequelize[_0xd46e('0x2')]},'extension':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0xd46e('0x2')]},'accountcode':{'type':Sequelize[_0xd46e('0x2')]},'dnid':{'type':Sequelize['STRING']},'projectName':{'type':Sequelize[_0xd46e('0x2')]},'saveName':{'type':Sequelize[_0xd46e('0x2')]},'filename':{'type':Sequelize[_0xd46e('0x2')]},'savePath':{'type':Sequelize[_0xd46e('0x2')]},'format':{'type':Sequelize[_0xd46e('0x3')],'get':function(){var _0x855f24='';var _0x437ea0=this[_0xd46e('0x4')](_0xd46e('0x5'));if(_0x437ea0){_0x855f24=_0x437ea0[_0xd46e('0x6')](_0x437ea0[_0xd46e('0x7')]('.'));}return _0x855f24;}}};
\ No newline at end of file
index 725780e..3879b4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61a0=['../../components/encryptor','type','uniqueid','savePath','filename','%s.cypher','existsSync','decryptFile','recording','ValidationError','SquareRecording\x20not\x20found','extname','unlink','Not\x20found','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','unlinkSync','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','save','then','destroy','sendStatus','error','name','send','SquareRecording','rawAttributes','key','model','map','query','keys','intersection','attributes','hasOwnProperty','nolimit','order','sort','pick','filters','filter','merge','where','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','fields','length','options','find','create','body','update'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x61a0,0xd9));var _0x061a=function(_0x30c713,_0x14ddfd){_0x30c713=_0x30c713-0x0;var _0x5791af=_0x61a0[_0x30c713];return _0x5791af;};'use strict';var emlformat=require(_0x061a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x061a('0x1'));var jsonpatch=require(_0x061a('0x2'));var rp=require(_0x061a('0x3'));var moment=require('moment');var BPromise=require(_0x061a('0x4'));var Mustache=require(_0x061a('0x5'));var util=require(_0x061a('0x6'));var path=require(_0x061a('0x7'));var sox=require(_0x061a('0x8'));var csv=require(_0x061a('0x9'));var ejs=require(_0x061a('0xa'));var fs=require('fs');var fs_extra=require(_0x061a('0xb'));var _=require(_0x061a('0xc'));var squel=require(_0x061a('0xd'));var crypto=require(_0x061a('0xe'));var jsforce=require(_0x061a('0xf'));var deskjs=require(_0x061a('0x10'));var toCsv=require(_0x061a('0x9'));var querystring=require(_0x061a('0x11'));var Papa=require(_0x061a('0x12'));var Redis=require('ioredis');var authService=require(_0x061a('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x061a('0x14'));var hardwareService=require(_0x061a('0x15'));var logger=require(_0x061a('0x16'))(_0x061a('0x17'));var utils=require(_0x061a('0x18'));var config=require(_0x061a('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x061a('0x1a'))['db'];function respondWithStatusCode(_0x3ce0a4,_0x4c3ca0){_0x4c3ca0=_0x4c3ca0||0xcc;return function(_0x502bea){if(_0x502bea){return _0x3ce0a4['sendStatus'](_0x4c3ca0);}return _0x3ce0a4[_0x061a('0x1b')](_0x4c3ca0)[_0x061a('0x1c')]();};}function respondWithResult(_0x504df4,_0x4b960c){_0x4b960c=_0x4b960c||0xc8;return function(_0x4382ab){if(_0x4382ab){return _0x504df4['status'](_0x4b960c)['json'](_0x4382ab);}};}function respondWithFilteredResult(_0x229ce7,_0x203f72){return function(_0x3442d){if(_0x3442d){var _0x1a42f0=typeof _0x203f72[_0x061a('0x1d')]===_0x061a('0x1e')&&typeof _0x203f72[_0x061a('0x1f')]===_0x061a('0x1e');var _0x59c793=_0x3442d[_0x061a('0x20')];var _0x5791fc=_0x1a42f0?0x0:_0x203f72[_0x061a('0x1d')];var _0x334059=_0x1a42f0?_0x3442d['count']:_0x203f72[_0x061a('0x1d')]+_0x203f72['limit'];var _0x4a393e;if(_0x334059>=_0x59c793){_0x334059=_0x59c793;_0x4a393e=0xc8;}else{_0x4a393e=0xce;}_0x229ce7[_0x061a('0x1b')](_0x4a393e);return _0x229ce7[_0x061a('0x21')](_0x061a('0x22'),_0x5791fc+'-'+_0x334059+'/'+_0x59c793)[_0x061a('0x23')](_0x3442d);}return null;};}function patchUpdates(_0x4a09e7){return function(_0x3575f3){try{jsonpatch[_0x061a('0x24')](_0x3575f3,_0x4a09e7,!![]);}catch(_0x53fb4a){return BPromise['reject'](_0x53fb4a);}return _0x3575f3[_0x061a('0x25')]();};}function saveUpdates(_0x25fc49,_0x5d612a){return function(_0x8602bf){if(_0x8602bf){return _0x8602bf['update'](_0x25fc49)[_0x061a('0x26')](function(_0x1e2734){return _0x1e2734;});}return null;};}function removeEntity(_0x2e07ca,_0x15419a){return function(_0x410f26){if(_0x410f26){return _0x410f26[_0x061a('0x27')]()[_0x061a('0x26')](function(){_0x2e07ca[_0x061a('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x122314,_0x12a1aa){return function(_0x3a0002){if(!_0x3a0002){_0x122314[_0x061a('0x28')](0x194);}return _0x3a0002;};}function handleError(_0x32f2cb,_0x4a832f){_0x4a832f=_0x4a832f||0x1f4;return function(_0x49f9e3){logger[_0x061a('0x29')](_0x49f9e3['stack']);if(_0x49f9e3[_0x061a('0x2a')]){delete _0x49f9e3[_0x061a('0x2a')];}_0x32f2cb[_0x061a('0x1b')](_0x4a832f)[_0x061a('0x2b')](_0x49f9e3);};}exports['index']=function(_0x24223d,_0x4f1e29){var _0x445a87={},_0x5614a7={},_0x4d92cd={'count':0x0,'rows':[]};var _0x169148=_['map'](db[_0x061a('0x2c')][_0x061a('0x2d')],function(_0x5a967e){return{'name':_0x5a967e['fieldName'],'type':_0x5a967e['type'][_0x061a('0x2e')]};});_0x5614a7[_0x061a('0x2f')]=_[_0x061a('0x30')](_0x169148,_0x061a('0x2a'));_0x5614a7[_0x061a('0x31')]=_[_0x061a('0x32')](_0x24223d[_0x061a('0x31')]);_0x5614a7['filters']=_[_0x061a('0x33')](_0x5614a7[_0x061a('0x2f')],_0x5614a7[_0x061a('0x31')]);_0x445a87[_0x061a('0x34')]=_[_0x061a('0x33')](_0x5614a7[_0x061a('0x2f')],qs['fields'](_0x24223d['query']['fields']));_0x445a87['attributes']=_0x445a87[_0x061a('0x34')]['length']?_0x445a87[_0x061a('0x34')]:_0x5614a7[_0x061a('0x2f')];if(!_0x24223d[_0x061a('0x31')][_0x061a('0x35')](_0x061a('0x36'))){_0x445a87[_0x061a('0x1f')]=qs['limit'](_0x24223d[_0x061a('0x31')][_0x061a('0x1f')]);_0x445a87[_0x061a('0x1d')]=qs[_0x061a('0x1d')](_0x24223d['query'][_0x061a('0x1d')]);}_0x445a87[_0x061a('0x37')]=qs[_0x061a('0x38')](_0x24223d[_0x061a('0x31')][_0x061a('0x38')]);_0x445a87['where']=qs['filters'](_[_0x061a('0x39')](_0x24223d[_0x061a('0x31')],_0x5614a7[_0x061a('0x3a')]),_0x169148);if(_0x24223d[_0x061a('0x31')][_0x061a('0x3b')]){_0x445a87['where']=_[_0x061a('0x3c')](_0x445a87[_0x061a('0x3d')],{'$or':_['map'](_0x169148,function(_0x25b063){if(_0x25b063['type']!==_0x061a('0x3e')){var _0x1ca1f5={};_0x1ca1f5[_0x25b063[_0x061a('0x2a')]]={'$like':'%'+_0x24223d['query'][_0x061a('0x3b')]+'%'};return _0x1ca1f5;}})});}_0x445a87=_[_0x061a('0x3c')]({},_0x445a87,_0x24223d['options']);var _0x22117d={'where':_0x445a87[_0x061a('0x3d')]};return db['SquareRecording'][_0x061a('0x20')](_0x22117d)[_0x061a('0x26')](function(_0x71c3fb){_0x4d92cd[_0x061a('0x20')]=_0x71c3fb;if(_0x24223d[_0x061a('0x31')][_0x061a('0x3f')]){_0x445a87[_0x061a('0x40')]=[{'all':!![]}];}return db[_0x061a('0x2c')][_0x061a('0x41')](_0x445a87);})[_0x061a('0x26')](function(_0xf252d0){_0x4d92cd[_0x061a('0x42')]=_0xf252d0;return _0x4d92cd;})[_0x061a('0x26')](respondWithFilteredResult(_0x4f1e29,_0x445a87))[_0x061a('0x43')](handleError(_0x4f1e29,null));};exports[_0x061a('0x44')]=function(_0x208d43,_0x558c46){var _0x159234={'raw':!![],'where':{'id':_0x208d43[_0x061a('0x45')]['id']}},_0x2fd2d2={};_0x2fd2d2[_0x061a('0x2f')]=_['keys'](db[_0x061a('0x2c')][_0x061a('0x2d')]);_0x2fd2d2[_0x061a('0x31')]=_['keys'](_0x208d43[_0x061a('0x31')]);_0x2fd2d2[_0x061a('0x3a')]=_[_0x061a('0x33')](_0x2fd2d2[_0x061a('0x2f')],_0x2fd2d2[_0x061a('0x31')]);_0x159234['attributes']=_['intersection'](_0x2fd2d2[_0x061a('0x2f')],qs['fields'](_0x208d43['query'][_0x061a('0x46')]));_0x159234[_0x061a('0x34')]=_0x159234[_0x061a('0x34')][_0x061a('0x47')]?_0x159234[_0x061a('0x34')]:_0x2fd2d2[_0x061a('0x2f')];if(_0x208d43['query'][_0x061a('0x3f')]){_0x159234[_0x061a('0x40')]=[{'all':!![]}];}_0x159234=_[_0x061a('0x3c')]({},_0x159234,_0x208d43[_0x061a('0x48')]);return db[_0x061a('0x2c')][_0x061a('0x49')](_0x159234)[_0x061a('0x26')](handleEntityNotFound(_0x558c46,null))[_0x061a('0x26')](respondWithResult(_0x558c46,null))[_0x061a('0x43')](handleError(_0x558c46,null));};exports[_0x061a('0x4a')]=function(_0x1bd710,_0x5ed31d){return db[_0x061a('0x2c')]['create'](_0x1bd710[_0x061a('0x4b')],{})[_0x061a('0x26')](respondWithResult(_0x5ed31d,0xc9))[_0x061a('0x43')](handleError(_0x5ed31d,null));};exports[_0x061a('0x4c')]=function(_0x16614d,_0x281565){if(_0x16614d['body']['id']){delete _0x16614d[_0x061a('0x4b')]['id'];}return db['SquareRecording'][_0x061a('0x49')]({'where':{'id':_0x16614d[_0x061a('0x45')]['id']}})[_0x061a('0x26')](handleEntityNotFound(_0x281565,null))['then'](saveUpdates(_0x16614d[_0x061a('0x4b')],null))[_0x061a('0x26')](respondWithResult(_0x281565,null))['catch'](handleError(_0x281565,null));};exports['download']=function(_0x17a49c,_0x28a105,_0x5eca96){var _0x4bdc96=require(_0x061a('0x4d'));var _0x23db1f=![];var _0x3301db={};if(_0x17a49c['query'][_0x061a('0x4e')]&&_0x17a49c[_0x061a('0x31')][_0x061a('0x4e')]===_0x061a('0x4f')){_0x3301db[_0x061a('0x4f')]=_0x17a49c[_0x061a('0x45')]['id'];}else{_0x3301db['id']=_0x17a49c[_0x061a('0x45')]['id'];}return db[_0x061a('0x2c')]['find']({'where':_0x3301db,'attributes':['id',_0x061a('0x50'),_0x061a('0x51')],'raw':!![]})[_0x061a('0x26')](handleEntityNotFound(_0x28a105,null))[_0x061a('0x26')](function(_0xd4c6b0){if(_0xd4c6b0){var _0x207b84=_0xd4c6b0[_0x061a('0x50')];var _0x43b18c=util['format'](_0x061a('0x52'),_0x207b84);if(fs[_0x061a('0x53')](_0x43b18c)){_0x23db1f=!![];return _0x4bdc96[_0x061a('0x54')](_0x43b18c,_0x207b84,config['secrets'][_0x061a('0x55')])['then'](function(){return _0xd4c6b0;});}return _0xd4c6b0;}})['then'](function(_0x3b47ea){if(_0x3b47ea){var _0x3bf50a=_0x3b47ea['savePath'];if(!fs['existsSync'](_0x3bf50a)){throw new db['Sequelize'][(_0x061a('0x56'))](_0x061a('0x57'));}if(_0x3b47ea[_0x061a('0x51')]){return _0x28a105['download'](_0x3bf50a,_0x3b47ea[_0x061a('0x51')]+path[_0x061a('0x58')](_0x3bf50a),function(){if(_0x23db1f){fs[_0x061a('0x59')](_0x3bf50a);}});}else{return _0x28a105['download'](_0x3bf50a,function(_0x2f32b2){if(_0x23db1f){fs[_0x061a('0x59')](_0x3bf50a);}});}}})['catch'](function(_0x55e4f0){if(_0x55e4f0['message']===_0x061a('0x57')){_0x28a105[_0x061a('0x1b')](0x194)[_0x061a('0x2b')](_0x061a('0x5a'));}else{return handleError(_0x28a105,null);}});};exports['destroy']=function(_0x4347d2,_0x794053){return db[_0x061a('0x2c')][_0x061a('0x49')]({'where':{'id':_0x4347d2[_0x061a('0x45')]['id']}})[_0x061a('0x26')](function(_0x6811f7){if(_[_0x061a('0x5b')](_0x6811f7)){throw new ReferenceError(_0x061a('0x5c'));}return _0x6811f7;})[_0x061a('0x26')](function(_0x4a89ac){var _0x4ba06e=_0x4a89ac[_0x061a('0x50')];logger[_0x061a('0x5d')](_0x061a('0x5e'),_0x4ba06e);if(!_[_0x061a('0x5b')](_0x4a89ac[_0x061a('0x50')])&&fs[_0x061a('0x53')](_0x4ba06e)){logger[_0x061a('0x5d')](_0x061a('0x5f')+_0x4ba06e+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0x061a('0x60')](_0x4ba06e);}_0x4ba06e=_0x4ba06e+'.cypher';if(!_[_0x061a('0x5b')](_0x4a89ac[_0x061a('0x50')])&&fs['existsSync'](_0x4ba06e)){logger[_0x061a('0x5d')](_0x061a('0x5f')+_0x4ba06e+_0x061a('0x61'));fs[_0x061a('0x60')](_0x4ba06e);}return _0x4a89ac;})['then'](function(_0x3593da){if(!_0x3593da)throw new InternalError();return _0x3593da[_0x061a('0x27')]();})[_0x061a('0x26')](function(){_0x794053[_0x061a('0x1b')](0xcc)[_0x061a('0x1c')]();})[_0x061a('0x43')](handleError(_0x794053,null));};
\ No newline at end of file
+var _0xef8c=['savePath','filename','format','%s.cypher','existsSync','decryptFile','recording','Sequelize','ValidationError','SquareRecording\x20not\x20found','extname','message','send','Not\x20found','isNil','Entity\x20not\x20found','cancellazione\x20fisica\x20documento\x20%s','info','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','eml-format','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','then','destroy','end','stack','name','index','SquareRecording','rawAttributes','fieldName','type','key','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','update','body','download','../../components/encryptor','uniqueid'];(function(_0x3253e8,_0xb3835e){var _0x1b399d=function(_0x15e5b2){while(--_0x15e5b2){_0x3253e8['push'](_0x3253e8['shift']());}};_0x1b399d(++_0xb3835e);}(_0xef8c,0x75));var _0xcef8=function(_0x11c5da,_0x5799cf){_0x11c5da=_0x11c5da-0x0;var _0x5cfbf1=_0xef8c[_0x11c5da];return _0x5cfbf1;};'use strict';var emlformat=require(_0xcef8('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xcef8('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xcef8('0x2'));var moment=require('moment');var BPromise=require(_0xcef8('0x3'));var Mustache=require(_0xcef8('0x4'));var util=require(_0xcef8('0x5'));var path=require(_0xcef8('0x6'));var sox=require(_0xcef8('0x7'));var csv=require(_0xcef8('0x8'));var ejs=require(_0xcef8('0x9'));var fs=require('fs');var fs_extra=require(_0xcef8('0xa'));var _=require(_0xcef8('0xb'));var squel=require(_0xcef8('0xc'));var crypto=require(_0xcef8('0xd'));var jsforce=require(_0xcef8('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xcef8('0xf'));var Papa=require(_0xcef8('0x10'));var Redis=require(_0xcef8('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xcef8('0x12'));var as=require(_0xcef8('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xcef8('0x14'))('api');var utils=require('../../config/utils');var config=require(_0xcef8('0x15'));var licenseUtil=require(_0xcef8('0x16'));var db=require(_0xcef8('0x17'))['db'];function respondWithStatusCode(_0x316fc5,_0x4a5965){_0x4a5965=_0x4a5965||0xcc;return function(_0x55165a){if(_0x55165a){return _0x316fc5['sendStatus'](_0x4a5965);}return _0x316fc5[_0xcef8('0x18')](_0x4a5965)['end']();};}function respondWithResult(_0x39b87e,_0x89bac6){_0x89bac6=_0x89bac6||0xc8;return function(_0x246862){if(_0x246862){return _0x39b87e[_0xcef8('0x18')](_0x89bac6)[_0xcef8('0x19')](_0x246862);}};}function respondWithFilteredResult(_0x526004,_0x4a0466){return function(_0x114189){if(_0x114189){var _0x59880a=typeof _0x4a0466[_0xcef8('0x1a')]===_0xcef8('0x1b')&&typeof _0x4a0466[_0xcef8('0x1c')]==='undefined';var _0x44c904=_0x114189[_0xcef8('0x1d')];var _0x45809a=_0x59880a?0x0:_0x4a0466[_0xcef8('0x1a')];var _0x3db6a9=_0x59880a?_0x114189[_0xcef8('0x1d')]:_0x4a0466[_0xcef8('0x1a')]+_0x4a0466[_0xcef8('0x1c')];var _0x349b14;if(_0x3db6a9>=_0x44c904){_0x3db6a9=_0x44c904;_0x349b14=0xc8;}else{_0x349b14=0xce;}_0x526004['status'](_0x349b14);return _0x526004[_0xcef8('0x1e')](_0xcef8('0x1f'),_0x45809a+'-'+_0x3db6a9+'/'+_0x44c904)[_0xcef8('0x19')](_0x114189);}return null;};}function patchUpdates(_0x225dd9){return function(_0x27771a){try{jsonpatch[_0xcef8('0x20')](_0x27771a,_0x225dd9,!![]);}catch(_0x457307){return BPromise[_0xcef8('0x21')](_0x457307);}return _0x27771a['save']();};}function saveUpdates(_0x14028,_0x2b9a7e){return function(_0x40d118){if(_0x40d118){return _0x40d118['update'](_0x14028)[_0xcef8('0x22')](function(_0xcaf2d){return _0xcaf2d;});}return null;};}function removeEntity(_0x4c6f58,_0x4b0029){return function(_0x2155be){if(_0x2155be){return _0x2155be[_0xcef8('0x23')]()['then'](function(){_0x4c6f58[_0xcef8('0x18')](0xcc)[_0xcef8('0x24')]();});}};}function handleEntityNotFound(_0x29dac1,_0x41416a){return function(_0x745455){if(!_0x745455){_0x29dac1['sendStatus'](0x194);}return _0x745455;};}function handleError(_0x28506d,_0x5d4dfa){_0x5d4dfa=_0x5d4dfa||0x1f4;return function(_0x2382b2){logger['error'](_0x2382b2[_0xcef8('0x25')]);if(_0x2382b2[_0xcef8('0x26')]){delete _0x2382b2[_0xcef8('0x26')];}_0x28506d[_0xcef8('0x18')](_0x5d4dfa)['send'](_0x2382b2);};}exports[_0xcef8('0x27')]=function(_0xf48b39,_0x15cf86){var _0x2baaf3={},_0x7fc670={},_0x23af6d={'count':0x0,'rows':[]};var _0x1cddb4=_['map'](db[_0xcef8('0x28')][_0xcef8('0x29')],function(_0x28400b){return{'name':_0x28400b[_0xcef8('0x2a')],'type':_0x28400b[_0xcef8('0x2b')][_0xcef8('0x2c')]};});_0x7fc670[_0xcef8('0x2d')]=_[_0xcef8('0x2e')](_0x1cddb4,_0xcef8('0x26'));_0x7fc670[_0xcef8('0x2f')]=_[_0xcef8('0x30')](_0xf48b39[_0xcef8('0x2f')]);_0x7fc670['filters']=_[_0xcef8('0x31')](_0x7fc670[_0xcef8('0x2d')],_0x7fc670[_0xcef8('0x2f')]);_0x2baaf3[_0xcef8('0x32')]=_[_0xcef8('0x31')](_0x7fc670[_0xcef8('0x2d')],qs[_0xcef8('0x33')](_0xf48b39[_0xcef8('0x2f')]['fields']));_0x2baaf3[_0xcef8('0x32')]=_0x2baaf3[_0xcef8('0x32')][_0xcef8('0x34')]?_0x2baaf3[_0xcef8('0x32')]:_0x7fc670[_0xcef8('0x2d')];if(!_0xf48b39[_0xcef8('0x2f')][_0xcef8('0x35')](_0xcef8('0x36'))){_0x2baaf3[_0xcef8('0x1c')]=qs[_0xcef8('0x1c')](_0xf48b39[_0xcef8('0x2f')][_0xcef8('0x1c')]);_0x2baaf3[_0xcef8('0x1a')]=qs[_0xcef8('0x1a')](_0xf48b39[_0xcef8('0x2f')][_0xcef8('0x1a')]);}_0x2baaf3[_0xcef8('0x37')]=qs['sort'](_0xf48b39['query'][_0xcef8('0x38')]);_0x2baaf3[_0xcef8('0x39')]=qs[_0xcef8('0x3a')](_['pick'](_0xf48b39[_0xcef8('0x2f')],_0x7fc670[_0xcef8('0x3a')]),_0x1cddb4);if(_0xf48b39[_0xcef8('0x2f')][_0xcef8('0x3b')]){_0x2baaf3[_0xcef8('0x39')]=_[_0xcef8('0x3c')](_0x2baaf3['where'],{'$or':_[_0xcef8('0x2e')](_0x1cddb4,function(_0xa94f18){if(_0xa94f18[_0xcef8('0x2b')]!==_0xcef8('0x3d')){var _0x38c498={};_0x38c498[_0xa94f18[_0xcef8('0x26')]]={'$like':'%'+_0xf48b39[_0xcef8('0x2f')][_0xcef8('0x3b')]+'%'};return _0x38c498;}})});}_0x2baaf3=_[_0xcef8('0x3c')]({},_0x2baaf3,_0xf48b39[_0xcef8('0x3e')]);var _0x4d65c9={'where':_0x2baaf3[_0xcef8('0x39')]};return db[_0xcef8('0x28')]['count'](_0x4d65c9)[_0xcef8('0x22')](function(_0x3542cc){_0x23af6d[_0xcef8('0x1d')]=_0x3542cc;if(_0xf48b39['query'][_0xcef8('0x3f')]){_0x2baaf3[_0xcef8('0x40')]=[{'all':!![]}];}return db[_0xcef8('0x28')][_0xcef8('0x41')](_0x2baaf3);})[_0xcef8('0x22')](function(_0x31b560){_0x23af6d[_0xcef8('0x42')]=_0x31b560;return _0x23af6d;})[_0xcef8('0x22')](respondWithFilteredResult(_0x15cf86,_0x2baaf3))[_0xcef8('0x43')](handleError(_0x15cf86,null));};exports[_0xcef8('0x44')]=function(_0x3a65fe,_0x53942f){var _0x59221b={'raw':!![],'where':{'id':_0x3a65fe[_0xcef8('0x45')]['id']}},_0xcf86a0={};_0xcf86a0[_0xcef8('0x2d')]=_[_0xcef8('0x30')](db[_0xcef8('0x28')][_0xcef8('0x29')]);_0xcf86a0[_0xcef8('0x2f')]=_['keys'](_0x3a65fe[_0xcef8('0x2f')]);_0xcf86a0[_0xcef8('0x3a')]=_['intersection'](_0xcf86a0[_0xcef8('0x2d')],_0xcf86a0['query']);_0x59221b[_0xcef8('0x32')]=_[_0xcef8('0x31')](_0xcf86a0[_0xcef8('0x2d')],qs['fields'](_0x3a65fe[_0xcef8('0x2f')][_0xcef8('0x33')]));_0x59221b[_0xcef8('0x32')]=_0x59221b[_0xcef8('0x32')][_0xcef8('0x34')]?_0x59221b[_0xcef8('0x32')]:_0xcf86a0['model'];if(_0x3a65fe[_0xcef8('0x2f')][_0xcef8('0x3f')]){_0x59221b[_0xcef8('0x40')]=[{'all':!![]}];}_0x59221b=_[_0xcef8('0x3c')]({},_0x59221b,_0x3a65fe[_0xcef8('0x3e')]);return db[_0xcef8('0x28')][_0xcef8('0x46')](_0x59221b)[_0xcef8('0x22')](handleEntityNotFound(_0x53942f,null))[_0xcef8('0x22')](respondWithResult(_0x53942f,null))[_0xcef8('0x43')](handleError(_0x53942f,null));};exports[_0xcef8('0x47')]=function(_0x3ec1f7,_0x47066d){return db[_0xcef8('0x28')][_0xcef8('0x47')](_0x3ec1f7['body'],{})[_0xcef8('0x22')](respondWithResult(_0x47066d,0xc9))[_0xcef8('0x43')](handleError(_0x47066d,null));};exports[_0xcef8('0x48')]=function(_0x15cb03,_0x13dd0c){if(_0x15cb03[_0xcef8('0x49')]['id']){delete _0x15cb03[_0xcef8('0x49')]['id'];}return db[_0xcef8('0x28')]['find']({'where':{'id':_0x15cb03['params']['id']}})[_0xcef8('0x22')](handleEntityNotFound(_0x13dd0c,null))[_0xcef8('0x22')](saveUpdates(_0x15cb03[_0xcef8('0x49')],null))[_0xcef8('0x22')](respondWithResult(_0x13dd0c,null))[_0xcef8('0x43')](handleError(_0x13dd0c,null));};exports[_0xcef8('0x4a')]=function(_0x494d6f,_0x2082ca,_0x50a92d){var _0x2707c4=require(_0xcef8('0x4b'));var _0x5520aa=![];var _0x16215c={};if(_0x494d6f[_0xcef8('0x2f')][_0xcef8('0x2b')]&&_0x494d6f[_0xcef8('0x2f')][_0xcef8('0x2b')]===_0xcef8('0x4c')){_0x16215c[_0xcef8('0x4c')]=_0x494d6f[_0xcef8('0x45')]['id'];}else{_0x16215c['id']=_0x494d6f[_0xcef8('0x45')]['id'];}return db[_0xcef8('0x28')][_0xcef8('0x46')]({'where':_0x16215c,'attributes':['id',_0xcef8('0x4d'),_0xcef8('0x4e')],'raw':!![]})['then'](handleEntityNotFound(_0x2082ca,null))[_0xcef8('0x22')](function(_0xf0bda6){if(_0xf0bda6){var _0x3bb2f4=_0xf0bda6['savePath'];var _0x202b52=util[_0xcef8('0x4f')](_0xcef8('0x50'),_0x3bb2f4);if(fs[_0xcef8('0x51')](_0x202b52)){_0x5520aa=!![];return _0x2707c4[_0xcef8('0x52')](_0x202b52,_0x3bb2f4,config['secrets'][_0xcef8('0x53')])[_0xcef8('0x22')](function(){return _0xf0bda6;});}return _0xf0bda6;}})[_0xcef8('0x22')](function(_0x494fca){if(_0x494fca){var _0x11b581=_0x494fca['savePath'];if(!fs[_0xcef8('0x51')](_0x11b581)){throw new db[(_0xcef8('0x54'))][(_0xcef8('0x55'))](_0xcef8('0x56'));}if(_0x494fca[_0xcef8('0x4e')]){return _0x2082ca[_0xcef8('0x4a')](_0x11b581,_0x494fca['filename']+path[_0xcef8('0x57')](_0x11b581),function(){if(_0x5520aa){fs['unlink'](_0x11b581);}});}else{return _0x2082ca[_0xcef8('0x4a')](_0x11b581,function(_0x5d26e7){if(_0x5520aa){fs['unlink'](_0x11b581);}});}}})['catch'](function(_0x2bd595){if(_0x2bd595[_0xcef8('0x58')]==='SquareRecording\x20not\x20found'){_0x2082ca[_0xcef8('0x18')](0x194)[_0xcef8('0x59')](_0xcef8('0x5a'));}else{return handleError(_0x2082ca,null);}});};exports[_0xcef8('0x23')]=function(_0x31fa61,_0x39bd1a){return db[_0xcef8('0x28')][_0xcef8('0x46')]({'where':{'id':_0x31fa61[_0xcef8('0x45')]['id']}})[_0xcef8('0x22')](function(_0x5814d4){if(_[_0xcef8('0x5b')](_0x5814d4)){throw new ReferenceError(_0xcef8('0x5c'));}return _0x5814d4;})[_0xcef8('0x22')](function(_0x83ece1){var _0x19c520=_0x83ece1[_0xcef8('0x4d')];logger['info'](_0xcef8('0x5d'),_0x19c520);if(!_[_0xcef8('0x5b')](_0x83ece1[_0xcef8('0x4d')])&&fs['existsSync'](_0x19c520)){logger[_0xcef8('0x5e')]('File:\x20\x22'+_0x19c520+_0xcef8('0x5f'));fs[_0xcef8('0x60')](_0x19c520);}_0x19c520=_0x19c520+'.cypher';if(!_['isNil'](_0x83ece1['savePath'])&&fs[_0xcef8('0x51')](_0x19c520)){logger[_0xcef8('0x5e')]('File:\x20\x22'+_0x19c520+_0xcef8('0x5f'));fs[_0xcef8('0x60')](_0x19c520);}return _0x83ece1;})[_0xcef8('0x22')](function(_0x1163b9){if(!_0x1163b9)throw new InternalError();return _0x1163b9[_0xcef8('0x23')]();})[_0xcef8('0x22')](function(){_0x39bd1a[_0xcef8('0x18')](0xcc)[_0xcef8('0x24')]();})[_0xcef8('0x43')](handleError(_0x39bd1a,null));};
\ No newline at end of file
index f69df08..3f9a64f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24bb=['square_recordings','lodash','../../config/logger','moment','bluebird','path','./squareRecording.attributes','exports','SquareRecording'];(function(_0x413feb,_0x10477f){var _0x40ee88=function(_0x32a3f6){while(--_0x32a3f6){_0x413feb['push'](_0x413feb['shift']());}};_0x40ee88(++_0x10477f);}(_0x24bb,0x19f));var _0xb24b=function(_0x5a37f7,_0x318b51){_0x5a37f7=_0x5a37f7-0x0;var _0x399d38=_0x24bb[_0x5a37f7];return _0x399d38;};'use strict';var _=require(_0xb24b('0x0'));var util=require('util');var logger=require(_0xb24b('0x1'))('api');var moment=require(_0xb24b('0x2'));var BPromise=require(_0xb24b('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb24b('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xb24b('0x5'));module[_0xb24b('0x6')]=function(_0x45588a,_0x51e19e){return _0x45588a['define'](_0xb24b('0x7'),attributes,{'tableName':_0xb24b('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9b09=['util','api','moment','request-promise','rimraf','./squareRecording.attributes','exports','define','square_recordings','lodash'];(function(_0x25d3cf,_0x449e43){var _0x5b7062=function(_0x5a64f4){while(--_0x5a64f4){_0x25d3cf['push'](_0x25d3cf['shift']());}};_0x5b7062(++_0x449e43);}(_0x9b09,0x1ad));var _0x99b0=function(_0x3cb21e,_0x11849a){_0x3cb21e=_0x3cb21e-0x0;var _0xeacd6a=_0x9b09[_0x3cb21e];return _0xeacd6a;};'use strict';var _=require(_0x99b0('0x0'));var util=require(_0x99b0('0x1'));var logger=require('../../config/logger')(_0x99b0('0x2'));var moment=require(_0x99b0('0x3'));var BPromise=require('bluebird');var rp=require(_0x99b0('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x99b0('0x5'));var config=require('../../config/environment');var attributes=require(_0x99b0('0x6'));module[_0x99b0('0x7')]=function(_0x498180,_0x466c23){return _0x498180[_0x99b0('0x8')]('SquareRecording',attributes,{'tableName':_0x99b0('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b8352d6..e11c9d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1547=['stringify','error','code','SquareRecording,\x20%s,\x20%s','message','result','catch','SquareRecording','create','raw','CreateSquareRecording','lodash','util','bluebird','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','debug','SquareRecording,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x1185cd,_0x1ec3b2){var _0x4f2cbe=function(_0x13b060){while(--_0x13b060){_0x1185cd['push'](_0x1185cd['shift']());}};_0x4f2cbe(++_0x1ec3b2);}(_0x1547,0x191));var _0x7154=function(_0x3f9193,_0x2cc320){_0x3f9193=_0x3f9193-0x0;var _0x1faa1c=_0x1547[_0x3f9193];return _0x1faa1c;};'use strict';var _=require(_0x7154('0x0'));var util=require(_0x7154('0x1'));var moment=require('moment');var BPromise=require(_0x7154('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7154('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x7154('0x4'));var logger=require(_0x7154('0x5'))('rpc');var config=require(_0x7154('0x6'));var jayson=require(_0x7154('0x7'));var client=jayson['client'][_0x7154('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x174228,_0x3a5ec5,_0x237106){return new BPromise(function(_0x57fc1d,_0x30ba92){return client[_0x7154('0x9')](_0x174228,_0x237106)[_0x7154('0xa')](function(_0x1102c0){logger[_0x7154('0xb')]('SquareRecording,\x20%s,\x20%s',_0x3a5ec5,'request\x20sent');logger[_0x7154('0xc')](_0x7154('0xd'),_0x3a5ec5,_0x7154('0xe'),JSON[_0x7154('0xf')](_0x1102c0));if(_0x1102c0['error']){if(_0x1102c0[_0x7154('0x10')][_0x7154('0x11')]===0x1f4){logger[_0x7154('0x10')](_0x7154('0x12'),_0x3a5ec5,_0x1102c0[_0x7154('0x10')][_0x7154('0x13')]);return _0x30ba92(_0x1102c0[_0x7154('0x10')][_0x7154('0x13')]);}logger[_0x7154('0x10')](_0x7154('0x12'),_0x3a5ec5,_0x1102c0[_0x7154('0x10')]['message']);return _0x57fc1d(_0x1102c0[_0x7154('0x10')][_0x7154('0x13')]);}else{logger['info']('SquareRecording,\x20%s,\x20%s',_0x3a5ec5,_0x7154('0xe'));_0x57fc1d(_0x1102c0[_0x7154('0x14')][_0x7154('0x13')]);}})[_0x7154('0x15')](function(_0x49ed37){logger[_0x7154('0x10')](_0x7154('0x12'),_0x3a5ec5,_0x49ed37);_0x30ba92(_0x49ed37);});});}exports['CreateSquareRecording']=function(_0x181d46){var _0x44012f=this;return new Promise(function(_0x5e0199,_0x43fe68){return db[_0x7154('0x16')][_0x7154('0x17')](_0x181d46['body'],{'raw':_0x181d46['options']?_0x181d46['options'][_0x7154('0x18')]===undefined?!![]:![]:!![]})[_0x7154('0xa')](function(_0xe304a9){logger[_0x7154('0xb')](_0x7154('0x19'),_0x181d46);logger['debug'](_0x7154('0x19'),_0x181d46,JSON['stringify'](_0xe304a9));_0x5e0199(_0xe304a9);})[_0x7154('0x15')](function(_0x3d653e){logger[_0x7154('0x10')]('CreateSquareRecording',_0x3d653e[_0x7154('0x13')],_0x181d46);_0x43fe68(_0x44012f['error'](0x1f4,_0x3d653e[_0x7154('0x13')]));});});};
\ No newline at end of file
+var _0x531a=['CreateSquareRecording','SquareRecording','body','options','raw','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','client','http','request','then','info','SquareRecording,\x20%s,\x20%s','request\x20sent','debug','SquareRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x531a,0x1d0));var _0xa531=function(_0x3ad7ad,_0x291a8d){_0x3ad7ad=_0x3ad7ad-0x0;var _0x225a60=_0x531a[_0x3ad7ad];return _0x225a60;};'use strict';var _=require(_0xa531('0x0'));var util=require(_0xa531('0x1'));var moment=require('moment');var BPromise=require(_0xa531('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa531('0x3'));var db=require(_0xa531('0x4'))['db'];var utils=require(_0xa531('0x5'));var logger=require('../../config/logger')(_0xa531('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xa531('0x7')][_0xa531('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x528c2d,_0x550aec,_0x1ad1f1){return new BPromise(function(_0x2d7e9b,_0x47ce8e){return client[_0xa531('0x9')](_0x528c2d,_0x1ad1f1)[_0xa531('0xa')](function(_0x15d732){logger[_0xa531('0xb')](_0xa531('0xc'),_0x550aec,_0xa531('0xd'));logger[_0xa531('0xe')](_0xa531('0xf'),_0x550aec,_0xa531('0xd'),JSON[_0xa531('0x10')](_0x15d732));if(_0x15d732[_0xa531('0x11')]){if(_0x15d732[_0xa531('0x11')][_0xa531('0x12')]===0x1f4){logger[_0xa531('0x11')]('SquareRecording,\x20%s,\x20%s',_0x550aec,_0x15d732[_0xa531('0x11')][_0xa531('0x13')]);return _0x47ce8e(_0x15d732[_0xa531('0x11')][_0xa531('0x13')]);}logger[_0xa531('0x11')](_0xa531('0xc'),_0x550aec,_0x15d732[_0xa531('0x11')][_0xa531('0x13')]);return _0x2d7e9b(_0x15d732[_0xa531('0x11')][_0xa531('0x13')]);}else{logger[_0xa531('0xb')](_0xa531('0xc'),_0x550aec,_0xa531('0xd'));_0x2d7e9b(_0x15d732[_0xa531('0x14')]['message']);}})[_0xa531('0x15')](function(_0x203315){logger[_0xa531('0x11')](_0xa531('0xc'),_0x550aec,_0x203315);_0x47ce8e(_0x203315);});});}exports[_0xa531('0x16')]=function(_0x761630){var _0x839657=this;return new Promise(function(_0x380d92,_0x5ba33c){return db[_0xa531('0x17')]['create'](_0x761630[_0xa531('0x18')],{'raw':_0x761630[_0xa531('0x19')]?_0x761630[_0xa531('0x19')][_0xa531('0x1a')]===undefined?!![]:![]:!![]})[_0xa531('0xa')](function(_0x16c9ca){logger['info'](_0xa531('0x16'),_0x761630);logger['debug'](_0xa531('0x16'),_0x761630,JSON[_0xa531('0x10')](_0x16c9ca));_0x380d92(_0x16c9ca);})[_0xa531('0x15')](function(_0x59533c){logger['error'](_0xa531('0x16'),_0x59533c[_0xa531('0x13')],_0x761630);_0x5ba33c(_0x839657[_0xa531('0x11')](0x1f4,_0x59533c['message']));});});};
\ No newline at end of file
index 00edefd..9108b2e 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(_0x9b5d88,_0x275ec3){var _0x2d6a89=function(_0x3b9b79){while(--_0x3b9b79){_0x9b5d88['push'](_0x9b5d88['shift']());}};_0x2d6a89(++_0x275ec3);}(_0xbaf0,0x12a));var _0x0baf=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xbaf0[_0x5ddb1c];return _0x354adc;};'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 _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(_0x1c0f3d,_0x55a9e2){var _0x4d71a8=function(_0xeff131){while(--_0xeff131){_0x1c0f3d['push'](_0x1c0f3d['shift']());}};_0x4d71a8(++_0x55a9e2);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var controller=require('./squareReport.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/describe',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['get'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xc')]);router[_0x0d8b('0xd')]('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xe')]);router[_0x0d8b('0xf')](_0x0d8b('0xb'),auth['isAuthenticated'](),controller[_0x0d8b('0x10')]);router['delete'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x11')]);module[_0x0d8b('0x12')]=router;
\ No newline at end of file
index a2dbe89..97fe283 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd2b=['BOOLEAN','sequelize','STRING','DATE'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xfd2b,0x79));var _0xbfd2=function(_0x1daede,_0x446c28){_0x1daede=_0x1daede-0x0;var _0x5ec090=_0xfd2b[_0x1daede];return _0x5ec090;};'use strict';var Sequelize=require(_0xbfd2('0x0'));module['exports']={'network':{'type':Sequelize[_0xbfd2('0x1')]},'network_script':{'type':Sequelize['STRING']},'request':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xbfd2('0x1')]},'language':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xbfd2('0x1')]},'uniqueid':{'type':Sequelize[_0xbfd2('0x1')]},'version':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0xbfd2('0x1')]},'calleridname':{'type':Sequelize['STRING']},'callingpres':{'type':Sequelize['STRING']},'callingani2':{'type':Sequelize[_0xbfd2('0x1')]},'callington':{'type':Sequelize['STRING']},'callingtns':{'type':Sequelize[_0xbfd2('0x1')]},'dnid':{'type':Sequelize[_0xbfd2('0x1')]},'rdnis':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0xbfd2('0x1')]},'extension':{'type':Sequelize[_0xbfd2('0x1')]},'priority':{'type':Sequelize[_0xbfd2('0x1')]},'enhanced':{'type':Sequelize[_0xbfd2('0x1')]},'accountcode':{'type':Sequelize[_0xbfd2('0x1')]},'threadid':{'type':Sequelize[_0xbfd2('0x1')]},'project_name':{'type':Sequelize[_0xbfd2('0x1')]},'joinAt':{'type':Sequelize[_0xbfd2('0x2')]},'leaveAt':{'type':Sequelize[_0xbfd2('0x2')]},'bot':{'type':Sequelize[_0xbfd2('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0xf6d2=['BOOLEAN','sequelize','STRING'];(function(_0x253665,_0x4b385f){var _0x5b6517=function(_0x14b740){while(--_0x14b740){_0x253665['push'](_0x253665['shift']());}};_0x5b6517(++_0x4b385f);}(_0xf6d2,0x1d8));var _0x2f6d=function(_0x3f84cb,_0x8d0a2d){_0x3f84cb=_0x3f84cb-0x0;var _0x37c150=_0xf6d2[_0x3f84cb];return _0x37c150;};'use strict';var Sequelize=require(_0x2f6d('0x0'));module['exports']={'network':{'type':Sequelize[_0x2f6d('0x1')]},'network_script':{'type':Sequelize[_0x2f6d('0x1')]},'request':{'type':Sequelize[_0x2f6d('0x1')]},'channel':{'type':Sequelize[_0x2f6d('0x1')]},'language':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x2f6d('0x1')]},'uniqueid':{'type':Sequelize[_0x2f6d('0x1')]},'version':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0x2f6d('0x1')]},'calleridname':{'type':Sequelize['STRING']},'callingpres':{'type':Sequelize[_0x2f6d('0x1')]},'callingani2':{'type':Sequelize['STRING']},'callington':{'type':Sequelize[_0x2f6d('0x1')]},'callingtns':{'type':Sequelize['STRING']},'dnid':{'type':Sequelize['STRING']},'rdnis':{'type':Sequelize[_0x2f6d('0x1')]},'context':{'type':Sequelize[_0x2f6d('0x1')]},'extension':{'type':Sequelize[_0x2f6d('0x1')]},'priority':{'type':Sequelize[_0x2f6d('0x1')]},'enhanced':{'type':Sequelize[_0x2f6d('0x1')]},'accountcode':{'type':Sequelize[_0x2f6d('0x1')]},'threadid':{'type':Sequelize[_0x2f6d('0x1')]},'project_name':{'type':Sequelize[_0x2f6d('0x1')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize['DATE']},'bot':{'type':Sequelize[_0x2f6d('0x2')],'defaultValue':![]}};
\ No newline at end of file
index f658345..bd8f2e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x59fa=['sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','SquareReport','findAll','catch','show','params','find','body','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','apply','reject','save','update','then','destroy','error','name','send','index','map','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','limit','order'];(function(_0x1ece91,_0x247458){var _0x2ebd3c=function(_0x472f83){while(--_0x472f83){_0x1ece91['push'](_0x1ece91['shift']());}};_0x2ebd3c(++_0x247458);}(_0x59fa,0xe9));var _0xa59f=function(_0x5e8e86,_0x4f5b8e){_0x5e8e86=_0x5e8e86-0x0;var _0x11224c=_0x59fa[_0x5e8e86];return _0x11224c;};'use strict';var emlformat=require(_0xa59f('0x0'));var rimraf=require(_0xa59f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa59f('0x2'));var rp=require(_0xa59f('0x3'));var moment=require(_0xa59f('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xa59f('0x5'));var util=require('util');var path=require(_0xa59f('0x6'));var sox=require(_0xa59f('0x7'));var csv=require(_0xa59f('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xa59f('0x9'));var crypto=require(_0xa59f('0xa'));var jsforce=require(_0xa59f('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xa59f('0x8'));var querystring=require(_0xa59f('0xc'));var Papa=require(_0xa59f('0xd'));var Redis=require(_0xa59f('0xe'));var authService=require(_0xa59f('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa59f('0x10'));var logger=require(_0xa59f('0x11'))(_0xa59f('0x12'));var utils=require(_0xa59f('0x13'));var config=require(_0xa59f('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xa59f('0x15'))['db'];function respondWithStatusCode(_0xd0c4b2,_0x194385){_0x194385=_0x194385||0xcc;return function(_0x1a3cef){if(_0x1a3cef){return _0xd0c4b2[_0xa59f('0x16')](_0x194385);}return _0xd0c4b2[_0xa59f('0x17')](_0x194385)[_0xa59f('0x18')]();};}function respondWithResult(_0x4a91d8,_0x449f33){_0x449f33=_0x449f33||0xc8;return function(_0x4a3829){if(_0x4a3829){return _0x4a91d8['status'](_0x449f33)[_0xa59f('0x19')](_0x4a3829);}};}function respondWithFilteredResult(_0x2785b7,_0x1f5a00){return function(_0x475289){if(_0x475289){var _0xef2ef8=typeof _0x1f5a00[_0xa59f('0x1a')]===_0xa59f('0x1b')&&typeof _0x1f5a00['limit']===_0xa59f('0x1b');var _0xc7c74d=_0x475289[_0xa59f('0x1c')];var _0x2850f2=_0xef2ef8?0x0:_0x1f5a00[_0xa59f('0x1a')];var _0x368118=_0xef2ef8?_0x475289[_0xa59f('0x1c')]:_0x1f5a00[_0xa59f('0x1a')]+_0x1f5a00['limit'];var _0x3a91b1;if(_0x368118>=_0xc7c74d){_0x368118=_0xc7c74d;_0x3a91b1=0xc8;}else{_0x3a91b1=0xce;}_0x2785b7[_0xa59f('0x17')](_0x3a91b1);return _0x2785b7[_0xa59f('0x1d')]('Content-Range',_0x2850f2+'-'+_0x368118+'/'+_0xc7c74d)[_0xa59f('0x19')](_0x475289);}return null;};}function patchUpdates(_0x34277a){return function(_0x302308){try{jsonpatch[_0xa59f('0x1e')](_0x302308,_0x34277a,!![]);}catch(_0x1521c2){return BPromise[_0xa59f('0x1f')](_0x1521c2);}return _0x302308[_0xa59f('0x20')]();};}function saveUpdates(_0x6dc1ee,_0x4e8a50){return function(_0x53f613){if(_0x53f613){return _0x53f613[_0xa59f('0x21')](_0x6dc1ee)[_0xa59f('0x22')](function(_0x3c68d8){return _0x3c68d8;});}return null;};}function removeEntity(_0xdaa47c,_0x9aeb96){return function(_0x17d8b4){if(_0x17d8b4){return _0x17d8b4[_0xa59f('0x23')]()['then'](function(){_0xdaa47c[_0xa59f('0x17')](0xcc)[_0xa59f('0x18')]();});}};}function handleEntityNotFound(_0x269606,_0x4bef90){return function(_0x4a6e54){if(!_0x4a6e54){_0x269606[_0xa59f('0x16')](0x194);}return _0x4a6e54;};}function handleError(_0x4fccd7,_0x1818f2){_0x1818f2=_0x1818f2||0x1f4;return function(_0x241ed2){logger[_0xa59f('0x24')](_0x241ed2['stack']);if(_0x241ed2[_0xa59f('0x25')]){delete _0x241ed2[_0xa59f('0x25')];}_0x4fccd7['status'](_0x1818f2)[_0xa59f('0x26')](_0x241ed2);};}exports[_0xa59f('0x27')]=function(_0x50e837,_0x146b4b){var _0x2491cc={},_0x43ecbc={},_0x4023a8={'count':0x0,'rows':[]};var _0x11d727=_[_0xa59f('0x28')](db['SquareReport']['rawAttributes'],function(_0x302196){return{'name':_0x302196[_0xa59f('0x29')],'type':_0x302196[_0xa59f('0x2a')][_0xa59f('0x2b')]};});_0x43ecbc[_0xa59f('0x2c')]=_[_0xa59f('0x28')](_0x11d727,_0xa59f('0x25'));_0x43ecbc[_0xa59f('0x2d')]=_[_0xa59f('0x2e')](_0x50e837[_0xa59f('0x2d')]);_0x43ecbc[_0xa59f('0x2f')]=_[_0xa59f('0x30')](_0x43ecbc['model'],_0x43ecbc[_0xa59f('0x2d')]);_0x2491cc[_0xa59f('0x31')]=_['intersection'](_0x43ecbc['model'],qs[_0xa59f('0x32')](_0x50e837[_0xa59f('0x2d')][_0xa59f('0x32')]));_0x2491cc[_0xa59f('0x31')]=_0x2491cc[_0xa59f('0x31')][_0xa59f('0x33')]?_0x2491cc[_0xa59f('0x31')]:_0x43ecbc[_0xa59f('0x2c')];if(!_0x50e837[_0xa59f('0x2d')][_0xa59f('0x34')]('nolimit')){_0x2491cc[_0xa59f('0x35')]=qs['limit'](_0x50e837[_0xa59f('0x2d')][_0xa59f('0x35')]);_0x2491cc[_0xa59f('0x1a')]=qs[_0xa59f('0x1a')](_0x50e837[_0xa59f('0x2d')][_0xa59f('0x1a')]);}_0x2491cc[_0xa59f('0x36')]=qs[_0xa59f('0x37')](_0x50e837[_0xa59f('0x2d')]['sort']);_0x2491cc[_0xa59f('0x38')]=qs[_0xa59f('0x2f')](_[_0xa59f('0x39')](_0x50e837[_0xa59f('0x2d')],_0x43ecbc[_0xa59f('0x2f')]),_0x11d727);if(_0x50e837['query'][_0xa59f('0x3a')]){_0x2491cc[_0xa59f('0x38')]=_['merge'](_0x2491cc['where'],{'$or':_[_0xa59f('0x28')](_0x11d727,function(_0x1d314b){if(_0x1d314b['type']!==_0xa59f('0x3b')){var _0x40539={};_0x40539[_0x1d314b['name']]={'$like':'%'+_0x50e837[_0xa59f('0x2d')]['filter']+'%'};return _0x40539;}})});}_0x2491cc=_[_0xa59f('0x3c')]({},_0x2491cc,_0x50e837[_0xa59f('0x3d')]);var _0x48e345={'where':_0x2491cc[_0xa59f('0x38')]};return db['SquareReport'][_0xa59f('0x1c')](_0x48e345)[_0xa59f('0x22')](function(_0x531928){_0x4023a8[_0xa59f('0x1c')]=_0x531928;if(_0x50e837[_0xa59f('0x2d')][_0xa59f('0x3e')]){_0x2491cc[_0xa59f('0x3f')]=[{'all':!![]}];}return db[_0xa59f('0x40')][_0xa59f('0x41')](_0x2491cc);})[_0xa59f('0x22')](function(_0x1e7b99){_0x4023a8['rows']=_0x1e7b99;return _0x4023a8;})[_0xa59f('0x22')](respondWithFilteredResult(_0x146b4b,_0x2491cc))[_0xa59f('0x42')](handleError(_0x146b4b,null));};exports[_0xa59f('0x43')]=function(_0x3e4263,_0x2c8849){var _0x1b686d={'raw':!![],'where':{'id':_0x3e4263[_0xa59f('0x44')]['id']}},_0x4e340b={};_0x4e340b[_0xa59f('0x2c')]=_['keys'](db[_0xa59f('0x40')]['rawAttributes']);_0x4e340b[_0xa59f('0x2d')]=_[_0xa59f('0x2e')](_0x3e4263['query']);_0x4e340b[_0xa59f('0x2f')]=_['intersection'](_0x4e340b[_0xa59f('0x2c')],_0x4e340b['query']);_0x1b686d[_0xa59f('0x31')]=_[_0xa59f('0x30')](_0x4e340b[_0xa59f('0x2c')],qs['fields'](_0x3e4263[_0xa59f('0x2d')][_0xa59f('0x32')]));_0x1b686d[_0xa59f('0x31')]=_0x1b686d[_0xa59f('0x31')]['length']?_0x1b686d[_0xa59f('0x31')]:_0x4e340b[_0xa59f('0x2c')];if(_0x3e4263[_0xa59f('0x2d')]['includeAll']){_0x1b686d[_0xa59f('0x3f')]=[{'all':!![]}];}_0x1b686d=_[_0xa59f('0x3c')]({},_0x1b686d,_0x3e4263[_0xa59f('0x3d')]);return db[_0xa59f('0x40')][_0xa59f('0x45')](_0x1b686d)[_0xa59f('0x22')](handleEntityNotFound(_0x2c8849,null))[_0xa59f('0x22')](respondWithResult(_0x2c8849,null))[_0xa59f('0x42')](handleError(_0x2c8849,null));};exports['create']=function(_0x276613,_0x366d34){return db[_0xa59f('0x40')]['create'](_0x276613[_0xa59f('0x46')],{})[_0xa59f('0x22')](respondWithResult(_0x366d34,0xc9))[_0xa59f('0x42')](handleError(_0x366d34,null));};exports[_0xa59f('0x21')]=function(_0x541da3,_0x40ee51){if(_0x541da3[_0xa59f('0x46')]['id']){delete _0x541da3[_0xa59f('0x46')]['id'];}return db[_0xa59f('0x40')][_0xa59f('0x45')]({'where':{'id':_0x541da3[_0xa59f('0x44')]['id']}})[_0xa59f('0x22')](handleEntityNotFound(_0x40ee51,null))[_0xa59f('0x22')](saveUpdates(_0x541da3['body'],null))[_0xa59f('0x22')](respondWithResult(_0x40ee51,null))[_0xa59f('0x42')](handleError(_0x40ee51,null));};exports[_0xa59f('0x23')]=function(_0xa71e18,_0x423dfb){return db[_0xa59f('0x40')][_0xa59f('0x45')]({'where':{'id':_0xa71e18[_0xa59f('0x44')]['id']}})[_0xa59f('0x22')](handleEntityNotFound(_0x423dfb,null))['then'](removeEntity(_0x423dfb,null))['catch'](handleError(_0x423dfb,null));};exports['describe']=function(_0x2fc376,_0x37350e){return db[_0xa59f('0x40')][_0xa59f('0x47')]()['then'](respondWithResult(_0x37350e,null))[_0xa59f('0x42')](handleError(_0x37350e,null));};
\ No newline at end of file
+var _0x8265=['keys','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','filters','pick','filter','VIRTUAL','options','include','rows','catch','show','length','includeAll','merge','find','create','body','params','describe','rimraf','fast-json-patch','request-promise','moment','bluebird','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../config/license/util','status','offset','undefined','limit','count','set','Content-Range','json','apply','update','destroy','then','end','error','name','send','index','SquareReport','rawAttributes','fieldName','type','model','map','query'];(function(_0x5684d2,_0x18b7a6){var _0x5c5a63=function(_0x36e6fe){while(--_0x36e6fe){_0x5684d2['push'](_0x5684d2['shift']());}};_0x5c5a63(++_0x18b7a6);}(_0x8265,0x17c));var _0x5826=function(_0x3016fe,_0x1f555a){_0x3016fe=_0x3016fe-0x0;var _0x590276=_0x8265[_0x3016fe];return _0x590276;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5826('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5826('0x1'));var rp=require(_0x5826('0x2'));var moment=require(_0x5826('0x3'));var BPromise=require(_0x5826('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x5826('0x5'));var sox=require(_0x5826('0x6'));var csv=require('to-csv');var ejs=require(_0x5826('0x7'));var fs=require('fs');var fs_extra=require(_0x5826('0x8'));var _=require(_0x5826('0x9'));var squel=require(_0x5826('0xa'));var crypto=require('crypto');var jsforce=require(_0x5826('0xb'));var deskjs=require(_0x5826('0xc'));var toCsv=require(_0x5826('0xd'));var querystring=require(_0x5826('0xe'));var Papa=require('papaparse');var Redis=require(_0x5826('0xf'));var authService=require(_0x5826('0x10'));var qs=require(_0x5826('0x11'));var as=require(_0x5826('0x12'));var hardwareService=require(_0x5826('0x13'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x5826('0x14'));var licenseUtil=require(_0x5826('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x33b46b,_0x16cac0){_0x16cac0=_0x16cac0||0xcc;return function(_0x526718){if(_0x526718){return _0x33b46b['sendStatus'](_0x16cac0);}return _0x33b46b[_0x5826('0x16')](_0x16cac0)['end']();};}function respondWithResult(_0x5bab7e,_0x1a4597){_0x1a4597=_0x1a4597||0xc8;return function(_0x1dcb80){if(_0x1dcb80){return _0x5bab7e[_0x5826('0x16')](_0x1a4597)['json'](_0x1dcb80);}};}function respondWithFilteredResult(_0x27d038,_0x590808){return function(_0x1dee61){if(_0x1dee61){var _0x2e6746=typeof _0x590808[_0x5826('0x17')]===_0x5826('0x18')&&typeof _0x590808[_0x5826('0x19')]===_0x5826('0x18');var _0x153eaa=_0x1dee61[_0x5826('0x1a')];var _0x2366f6=_0x2e6746?0x0:_0x590808['offset'];var _0xce530c=_0x2e6746?_0x1dee61[_0x5826('0x1a')]:_0x590808[_0x5826('0x17')]+_0x590808[_0x5826('0x19')];var _0x227e93;if(_0xce530c>=_0x153eaa){_0xce530c=_0x153eaa;_0x227e93=0xc8;}else{_0x227e93=0xce;}_0x27d038['status'](_0x227e93);return _0x27d038[_0x5826('0x1b')](_0x5826('0x1c'),_0x2366f6+'-'+_0xce530c+'/'+_0x153eaa)[_0x5826('0x1d')](_0x1dee61);}return null;};}function patchUpdates(_0x4de519){return function(_0x45f598){try{jsonpatch[_0x5826('0x1e')](_0x45f598,_0x4de519,!![]);}catch(_0x173b75){return BPromise['reject'](_0x173b75);}return _0x45f598['save']();};}function saveUpdates(_0x4aa320,_0x4d4555){return function(_0x45439c){if(_0x45439c){return _0x45439c[_0x5826('0x1f')](_0x4aa320)['then'](function(_0x29fc){return _0x29fc;});}return null;};}function removeEntity(_0x2725f3,_0x1642fe){return function(_0x5cc7e0){if(_0x5cc7e0){return _0x5cc7e0[_0x5826('0x20')]()[_0x5826('0x21')](function(){_0x2725f3[_0x5826('0x16')](0xcc)[_0x5826('0x22')]();});}};}function handleEntityNotFound(_0x539768,_0x34c318){return function(_0x25ac5c){if(!_0x25ac5c){_0x539768['sendStatus'](0x194);}return _0x25ac5c;};}function handleError(_0x81530a,_0x5605c5){_0x5605c5=_0x5605c5||0x1f4;return function(_0x56d82a){logger[_0x5826('0x23')](_0x56d82a['stack']);if(_0x56d82a['name']){delete _0x56d82a[_0x5826('0x24')];}_0x81530a[_0x5826('0x16')](_0x5605c5)[_0x5826('0x25')](_0x56d82a);};}exports[_0x5826('0x26')]=function(_0x1f0529,_0x583066){var _0x40c722={},_0x48ceed={},_0x407ac1={'count':0x0,'rows':[]};var _0x13cf65=_['map'](db[_0x5826('0x27')][_0x5826('0x28')],function(_0x545095){return{'name':_0x545095[_0x5826('0x29')],'type':_0x545095[_0x5826('0x2a')]['key']};});_0x48ceed[_0x5826('0x2b')]=_[_0x5826('0x2c')](_0x13cf65,'name');_0x48ceed[_0x5826('0x2d')]=_[_0x5826('0x2e')](_0x1f0529[_0x5826('0x2d')]);_0x48ceed['filters']=_[_0x5826('0x2f')](_0x48ceed[_0x5826('0x2b')],_0x48ceed[_0x5826('0x2d')]);_0x40c722[_0x5826('0x30')]=_[_0x5826('0x2f')](_0x48ceed[_0x5826('0x2b')],qs[_0x5826('0x31')](_0x1f0529[_0x5826('0x2d')][_0x5826('0x31')]));_0x40c722[_0x5826('0x30')]=_0x40c722[_0x5826('0x30')]['length']?_0x40c722['attributes']:_0x48ceed[_0x5826('0x2b')];if(!_0x1f0529[_0x5826('0x2d')][_0x5826('0x32')](_0x5826('0x33'))){_0x40c722[_0x5826('0x19')]=qs[_0x5826('0x19')](_0x1f0529[_0x5826('0x2d')][_0x5826('0x19')]);_0x40c722[_0x5826('0x17')]=qs[_0x5826('0x17')](_0x1f0529[_0x5826('0x2d')]['offset']);}_0x40c722['order']=qs[_0x5826('0x34')](_0x1f0529['query']['sort']);_0x40c722[_0x5826('0x35')]=qs[_0x5826('0x36')](_[_0x5826('0x37')](_0x1f0529['query'],_0x48ceed[_0x5826('0x36')]),_0x13cf65);if(_0x1f0529[_0x5826('0x2d')][_0x5826('0x38')]){_0x40c722[_0x5826('0x35')]=_['merge'](_0x40c722['where'],{'$or':_[_0x5826('0x2c')](_0x13cf65,function(_0x4b07d9){if(_0x4b07d9[_0x5826('0x2a')]!==_0x5826('0x39')){var _0x3c1d4b={};_0x3c1d4b[_0x4b07d9[_0x5826('0x24')]]={'$like':'%'+_0x1f0529[_0x5826('0x2d')][_0x5826('0x38')]+'%'};return _0x3c1d4b;}})});}_0x40c722=_['merge']({},_0x40c722,_0x1f0529[_0x5826('0x3a')]);var _0x40648c={'where':_0x40c722[_0x5826('0x35')]};return db[_0x5826('0x27')]['count'](_0x40648c)[_0x5826('0x21')](function(_0x50d204){_0x407ac1[_0x5826('0x1a')]=_0x50d204;if(_0x1f0529[_0x5826('0x2d')]['includeAll']){_0x40c722[_0x5826('0x3b')]=[{'all':!![]}];}return db[_0x5826('0x27')]['findAll'](_0x40c722);})[_0x5826('0x21')](function(_0x26f5b0){_0x407ac1[_0x5826('0x3c')]=_0x26f5b0;return _0x407ac1;})[_0x5826('0x21')](respondWithFilteredResult(_0x583066,_0x40c722))[_0x5826('0x3d')](handleError(_0x583066,null));};exports[_0x5826('0x3e')]=function(_0x218c7c,_0x5a58b4){var _0x402588={'raw':!![],'where':{'id':_0x218c7c['params']['id']}},_0x4dda89={};_0x4dda89[_0x5826('0x2b')]=_[_0x5826('0x2e')](db['SquareReport']['rawAttributes']);_0x4dda89[_0x5826('0x2d')]=_['keys'](_0x218c7c[_0x5826('0x2d')]);_0x4dda89[_0x5826('0x36')]=_[_0x5826('0x2f')](_0x4dda89[_0x5826('0x2b')],_0x4dda89['query']);_0x402588['attributes']=_[_0x5826('0x2f')](_0x4dda89[_0x5826('0x2b')],qs[_0x5826('0x31')](_0x218c7c[_0x5826('0x2d')][_0x5826('0x31')]));_0x402588[_0x5826('0x30')]=_0x402588[_0x5826('0x30')][_0x5826('0x3f')]?_0x402588[_0x5826('0x30')]:_0x4dda89[_0x5826('0x2b')];if(_0x218c7c['query'][_0x5826('0x40')]){_0x402588[_0x5826('0x3b')]=[{'all':!![]}];}_0x402588=_[_0x5826('0x41')]({},_0x402588,_0x218c7c[_0x5826('0x3a')]);return db[_0x5826('0x27')][_0x5826('0x42')](_0x402588)[_0x5826('0x21')](handleEntityNotFound(_0x5a58b4,null))['then'](respondWithResult(_0x5a58b4,null))[_0x5826('0x3d')](handleError(_0x5a58b4,null));};exports[_0x5826('0x43')]=function(_0x4ccb95,_0x2d6b72){return db[_0x5826('0x27')][_0x5826('0x43')](_0x4ccb95[_0x5826('0x44')],{})[_0x5826('0x21')](respondWithResult(_0x2d6b72,0xc9))[_0x5826('0x3d')](handleError(_0x2d6b72,null));};exports[_0x5826('0x1f')]=function(_0x1d0923,_0x407e33){if(_0x1d0923[_0x5826('0x44')]['id']){delete _0x1d0923[_0x5826('0x44')]['id'];}return db['SquareReport']['find']({'where':{'id':_0x1d0923['params']['id']}})[_0x5826('0x21')](handleEntityNotFound(_0x407e33,null))[_0x5826('0x21')](saveUpdates(_0x1d0923['body'],null))[_0x5826('0x21')](respondWithResult(_0x407e33,null))[_0x5826('0x3d')](handleError(_0x407e33,null));};exports['destroy']=function(_0x4bdcbb,_0x46a967){return db[_0x5826('0x27')][_0x5826('0x42')]({'where':{'id':_0x4bdcbb[_0x5826('0x45')]['id']}})['then'](handleEntityNotFound(_0x46a967,null))[_0x5826('0x21')](removeEntity(_0x46a967,null))['catch'](handleError(_0x46a967,null));};exports[_0x5826('0x46')]=function(_0x32d4e8,_0x50cef5){return db['SquareReport'][_0x5826('0x46')]()[_0x5826('0x21')](respondWithResult(_0x50cef5,null))['catch'](handleError(_0x50cef5,null));};
\ No newline at end of file
index e869685..995f9bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed8d=['./squareReport.attributes','define','SquareReport','report_square','uid_pname','project_name','leaveAt','lodash','util','../../config/logger','api','bluebird','request-promise','path'];(function(_0x4b47fa,_0x5816d1){var _0x49fb27=function(_0x31d1a9){while(--_0x31d1a9){_0x4b47fa['push'](_0x4b47fa['shift']());}};_0x49fb27(++_0x5816d1);}(_0xed8d,0xaf));var _0xded8=function(_0x1ac2cc,_0x220ffa){_0x1ac2cc=_0x1ac2cc-0x0;var _0x58dead=_0xed8d[_0x1ac2cc];return _0x58dead;};'use strict';var _=require(_0xded8('0x0'));var util=require(_0xded8('0x1'));var logger=require(_0xded8('0x2'))(_0xded8('0x3'));var moment=require('moment');var BPromise=require(_0xded8('0x4'));var rp=require(_0xded8('0x5'));var fs=require('fs');var path=require(_0xded8('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xded8('0x7'));module['exports']=function(_0xe5518f,_0x2f5c99){return _0xe5518f[_0xded8('0x8')](_0xded8('0x9'),attributes,{'tableName':_0xded8('0xa'),'paranoid':![],'indexes':[{'name':_0xded8('0xb'),'fields':['uniqueid',_0xded8('0xc')]},{'name':_0xded8('0xd'),'fields':[_0xded8('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xce73=['lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./squareReport.attributes','exports','define','SquareReport','report_square','uid_pname','project_name','leaveAt'];(function(_0x201243,_0x7d71e2){var _0x1f8187=function(_0x196760){while(--_0x196760){_0x201243['push'](_0x201243['shift']());}};_0x1f8187(++_0x7d71e2);}(_0xce73,0x88));var _0x3ce7=function(_0x846215,_0x4fe3b1){_0x846215=_0x846215-0x0;var _0x467d07=_0xce73[_0x846215];return _0x467d07;};'use strict';var _=require(_0x3ce7('0x0'));var util=require(_0x3ce7('0x1'));var logger=require(_0x3ce7('0x2'))(_0x3ce7('0x3'));var moment=require(_0x3ce7('0x4'));var BPromise=require(_0x3ce7('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x3ce7('0x6'));var rimraf=require(_0x3ce7('0x7'));var config=require(_0x3ce7('0x8'));var attributes=require(_0x3ce7('0x9'));module[_0x3ce7('0xa')]=function(_0x486a4e,_0x53045a){return _0x486a4e[_0x3ce7('0xb')](_0x3ce7('0xc'),attributes,{'tableName':_0x3ce7('0xd'),'paranoid':![],'indexes':[{'name':_0x3ce7('0xe'),'fields':['uniqueid',_0x3ce7('0xf')]},{'name':_0x3ce7('0x10'),'fields':[_0x3ce7('0x10')]}],'timestamps':!![]});};
\ No newline at end of file
index ba09de2..700c4d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76ed=['http','request','info','SquareReport,\x20%s,\x20%s','debug','SquareReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateSquareReport','body','options','then','UpdateSquareReport','SquareReport','where','attributes','moment','bluebird','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0x26d9c8,_0x11b77f){var _0x4ebe6a=function(_0x457d9d){while(--_0x457d9d){_0x26d9c8['push'](_0x26d9c8['shift']());}};_0x4ebe6a(++_0x11b77f);}(_0x76ed,0xa1));var _0xd76e=function(_0x1a7a1b,_0x518846){_0x1a7a1b=_0x1a7a1b-0x0;var _0x350750=_0x76ed[_0x1a7a1b];return _0x350750;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xd76e('0x0'));var BPromise=require(_0xd76e('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd76e('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xd76e('0x3'));var logger=require('../../config/logger')(_0xd76e('0x4'));var config=require(_0xd76e('0x5'));var jayson=require(_0xd76e('0x6'));var client=jayson['client'][_0xd76e('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x5f5a6d,_0x453c1c,_0x4eec93){return new BPromise(function(_0x54c324,_0x1744f9){return client[_0xd76e('0x8')](_0x5f5a6d,_0x4eec93)['then'](function(_0xb4f84e){logger[_0xd76e('0x9')](_0xd76e('0xa'),_0x453c1c,'request\x20sent');logger[_0xd76e('0xb')](_0xd76e('0xc'),_0x453c1c,_0xd76e('0xd'),JSON[_0xd76e('0xe')](_0xb4f84e));if(_0xb4f84e[_0xd76e('0xf')]){if(_0xb4f84e[_0xd76e('0xf')][_0xd76e('0x10')]===0x1f4){logger[_0xd76e('0xf')](_0xd76e('0xa'),_0x453c1c,_0xb4f84e['error'][_0xd76e('0x11')]);return _0x1744f9(_0xb4f84e[_0xd76e('0xf')][_0xd76e('0x11')]);}logger[_0xd76e('0xf')](_0xd76e('0xa'),_0x453c1c,_0xb4f84e[_0xd76e('0xf')][_0xd76e('0x11')]);return _0x54c324(_0xb4f84e['error']['message']);}else{logger[_0xd76e('0x9')](_0xd76e('0xa'),_0x453c1c,_0xd76e('0xd'));_0x54c324(_0xb4f84e[_0xd76e('0x12')]['message']);}})[_0xd76e('0x13')](function(_0x407be0){logger[_0xd76e('0xf')](_0xd76e('0xa'),_0x453c1c,_0x407be0);_0x1744f9(_0x407be0);});});}exports[_0xd76e('0x14')]=function(_0x27284a){var _0x5d42ae=this;return new Promise(function(_0x2f075b,_0x334a5d){return db['SquareReport']['create'](_0x27284a[_0xd76e('0x15')],{'raw':_0x27284a[_0xd76e('0x16')]?_0x27284a[_0xd76e('0x16')]['raw']===undefined?!![]:![]:!![]})[_0xd76e('0x17')](function(_0x51b344){logger[_0xd76e('0x9')](_0xd76e('0x14'),_0x27284a);logger[_0xd76e('0xb')](_0xd76e('0x14'),_0x27284a,JSON[_0xd76e('0xe')](_0x51b344));_0x2f075b(_0x51b344);})[_0xd76e('0x13')](function(_0x46b515){logger[_0xd76e('0xf')]('CreateSquareReport',_0x46b515[_0xd76e('0x11')],_0x27284a);_0x334a5d(_0x5d42ae[_0xd76e('0xf')](0x1f4,_0x46b515['message']));});});};exports[_0xd76e('0x18')]=function(_0x286725){var _0x439abd=this;return new Promise(function(_0x1997b4,_0x59be45){return db[_0xd76e('0x19')]['update'](_0x286725['body'],{'raw':_0x286725[_0xd76e('0x16')]?_0x286725[_0xd76e('0x16')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x286725[_0xd76e('0x16')]?_0x286725[_0xd76e('0x16')][_0xd76e('0x1a')]||null:null,'attributes':_0x286725['options']?_0x286725[_0xd76e('0x16')][_0xd76e('0x1b')]||null:null,'limit':_0x286725['options']?_0x286725[_0xd76e('0x16')]['limit']||null:null})[_0xd76e('0x17')](function(_0x28187f){logger['info'](_0xd76e('0x18'),_0x286725);logger[_0xd76e('0xb')]('UpdateSquareReport',_0x286725,JSON[_0xd76e('0xe')](_0x28187f));_0x1997b4(_0x28187f);})[_0xd76e('0x13')](function(_0x204c4a){logger[_0xd76e('0xf')](_0xd76e('0x18'),_0x204c4a[_0xd76e('0x11')],_0x286725);_0x59be45(_0x439abd[_0xd76e('0xf')](0x1f4,_0x204c4a['message']));});});};
\ No newline at end of file
+var _0x5ac7=['UpdateSquareReport','update','where','attributes','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','SquareReport,\x20%s,\x20%s','debug','SquareReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateSquareReport','SquareReport','create','body','options','raw'];(function(_0x543dc2,_0x298ba1){var _0x2e928=function(_0x15faa4){while(--_0x15faa4){_0x543dc2['push'](_0x543dc2['shift']());}};_0x2e928(++_0x298ba1);}(_0x5ac7,0xf2));var _0x75ac=function(_0x9f94c4,_0x1a0406){_0x9f94c4=_0x9f94c4-0x0;var _0x41d898=_0x5ac7[_0x9f94c4];return _0x41d898;};'use strict';var _=require(_0x75ac('0x0'));var util=require(_0x75ac('0x1'));var moment=require(_0x75ac('0x2'));var BPromise=require(_0x75ac('0x3'));var rs=require(_0x75ac('0x4'));var fs=require('fs');var Redis=require(_0x75ac('0x5'));var db=require(_0x75ac('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x75ac('0x7'))(_0x75ac('0x8'));var config=require(_0x75ac('0x9'));var jayson=require(_0x75ac('0xa'));var client=jayson[_0x75ac('0xb')][_0x75ac('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x515d77,_0x3cd120,_0x3fff01){return new BPromise(function(_0x36a7ad,_0x3f75c9){return client['request'](_0x515d77,_0x3fff01)[_0x75ac('0xd')](function(_0x3cd899){logger['info'](_0x75ac('0xe'),_0x3cd120,'request\x20sent');logger[_0x75ac('0xf')](_0x75ac('0x10'),_0x3cd120,_0x75ac('0x11'),JSON[_0x75ac('0x12')](_0x3cd899));if(_0x3cd899[_0x75ac('0x13')]){if(_0x3cd899[_0x75ac('0x13')][_0x75ac('0x14')]===0x1f4){logger['error']('SquareReport,\x20%s,\x20%s',_0x3cd120,_0x3cd899[_0x75ac('0x13')][_0x75ac('0x15')]);return _0x3f75c9(_0x3cd899[_0x75ac('0x13')]['message']);}logger[_0x75ac('0x13')](_0x75ac('0xe'),_0x3cd120,_0x3cd899[_0x75ac('0x13')][_0x75ac('0x15')]);return _0x36a7ad(_0x3cd899[_0x75ac('0x13')][_0x75ac('0x15')]);}else{logger['info'](_0x75ac('0xe'),_0x3cd120,_0x75ac('0x11'));_0x36a7ad(_0x3cd899[_0x75ac('0x16')]['message']);}})[_0x75ac('0x17')](function(_0x449525){logger[_0x75ac('0x13')](_0x75ac('0xe'),_0x3cd120,_0x449525);_0x3f75c9(_0x449525);});});}exports[_0x75ac('0x18')]=function(_0x29c77c){var _0x57b33a=this;return new Promise(function(_0x2907d6,_0x2eda77){return db[_0x75ac('0x19')][_0x75ac('0x1a')](_0x29c77c[_0x75ac('0x1b')],{'raw':_0x29c77c[_0x75ac('0x1c')]?_0x29c77c['options'][_0x75ac('0x1d')]===undefined?!![]:![]:!![]})[_0x75ac('0xd')](function(_0x20fb39){logger['info'](_0x75ac('0x18'),_0x29c77c);logger['debug'](_0x75ac('0x18'),_0x29c77c,JSON[_0x75ac('0x12')](_0x20fb39));_0x2907d6(_0x20fb39);})['catch'](function(_0xb72705){logger[_0x75ac('0x13')]('CreateSquareReport',_0xb72705[_0x75ac('0x15')],_0x29c77c);_0x2eda77(_0x57b33a['error'](0x1f4,_0xb72705[_0x75ac('0x15')]));});});};exports[_0x75ac('0x1e')]=function(_0x56c887){var _0x1307a5=this;return new Promise(function(_0x5ee58e,_0x225262){return db['SquareReport'][_0x75ac('0x1f')](_0x56c887[_0x75ac('0x1b')],{'raw':_0x56c887[_0x75ac('0x1c')]?_0x56c887[_0x75ac('0x1c')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x56c887[_0x75ac('0x1c')]?_0x56c887['options'][_0x75ac('0x20')]||null:null,'attributes':_0x56c887['options']?_0x56c887[_0x75ac('0x1c')][_0x75ac('0x21')]||null:null,'limit':_0x56c887[_0x75ac('0x1c')]?_0x56c887[_0x75ac('0x1c')]['limit']||null:null})[_0x75ac('0xd')](function(_0x14ceea){logger['info'](_0x75ac('0x1e'),_0x56c887);logger[_0x75ac('0xf')](_0x75ac('0x1e'),_0x56c887,JSON['stringify'](_0x14ceea));_0x5ee58e(_0x14ceea);})[_0x75ac('0x17')](function(_0x58c7c3){logger['error']('UpdateSquareReport',_0x58c7c3[_0x75ac('0x15')],_0x56c887);_0x225262(_0x1307a5[_0x75ac('0x13')](0x1f4,_0x58c7c3[_0x75ac('0x15')]));});});};
\ No newline at end of file
index 05db0bf..757f06d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9200=['util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReportDetail.controller','get','isAuthenticated','/describe','describe','/:id','show','post','create','put','update','destroy','exports'];(function(_0x2c87db,_0x548c2d){var _0x1b15a2=function(_0x6306e0){while(--_0x6306e0){_0x2c87db['push'](_0x2c87db['shift']());}};_0x1b15a2(++_0x548c2d);}(_0x9200,0xf0));var _0x0920=function(_0x253bfc,_0x30e9f6){_0x253bfc=_0x253bfc-0x0;var _0x42b25a=_0x9200[_0x253bfc];return _0x42b25a;};'use strict';var multer=require('multer');var util=require(_0x0920('0x0'));var path=require(_0x0920('0x1'));var timeout=require('connect-timeout');var express=require(_0x0920('0x2'));var router=express['Router']();var fs_extra=require(_0x0920('0x3'));var auth=require(_0x0920('0x4'));var interaction=require(_0x0920('0x5'));var config=require(_0x0920('0x6'));var controller=require(_0x0920('0x7'));router[_0x0920('0x8')]('/',auth[_0x0920('0x9')](),controller['index']);router['get'](_0x0920('0xa'),auth[_0x0920('0x9')](),controller[_0x0920('0xb')]);router[_0x0920('0x8')](_0x0920('0xc'),auth['isAuthenticated'](),controller[_0x0920('0xd')]);router[_0x0920('0xe')]('/',auth['isAuthenticated'](),controller[_0x0920('0xf')]);router[_0x0920('0x10')](_0x0920('0xc'),auth[_0x0920('0x9')](),controller[_0x0920('0x11')]);router['delete'](_0x0920('0xc'),auth[_0x0920('0x9')](),controller[_0x0920('0x12')]);module[_0x0920('0x13')]=router;
\ No newline at end of file
+var _0x064b=['create','/:id','delete','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../config/environment','./squareReportDetail.controller','get','isAuthenticated','index','/describe','describe','show','post'];(function(_0x2dadb9,_0x42cfe6){var _0x2f0097=function(_0x21163f){while(--_0x21163f){_0x2dadb9['push'](_0x2dadb9['shift']());}};_0x2f0097(++_0x42cfe6);}(_0x064b,0x1d7));var _0xb064=function(_0x3c52b8,_0x2aa85e){_0x3c52b8=_0x3c52b8-0x0;var _0x3406cb=_0x064b[_0x3c52b8];return _0x3406cb;};'use strict';var multer=require(_0xb064('0x0'));var util=require(_0xb064('0x1'));var path=require(_0xb064('0x2'));var timeout=require(_0xb064('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xb064('0x4'));var auth=require(_0xb064('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xb064('0x6'));var controller=require(_0xb064('0x7'));router[_0xb064('0x8')]('/',auth[_0xb064('0x9')](),controller[_0xb064('0xa')]);router['get'](_0xb064('0xb'),auth[_0xb064('0x9')](),controller[_0xb064('0xc')]);router[_0xb064('0x8')]('/:id',auth['isAuthenticated'](),controller[_0xb064('0xd')]);router[_0xb064('0xe')]('/',auth['isAuthenticated'](),controller[_0xb064('0xf')]);router['put'](_0xb064('0x10'),auth[_0xb064('0x9')](),controller['update']);router[_0xb064('0x11')]('/:id',auth[_0xb064('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 180cbce..1ccad8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9cf8=['sequelize','exports','STRING'];(function(_0x59710f,_0x44c7f0){var _0xaae66a=function(_0x1c2397){while(--_0x1c2397){_0x59710f['push'](_0x59710f['shift']());}};_0xaae66a(++_0x44c7f0);}(_0x9cf8,0x150));var _0x89cf=function(_0x29e671,_0x2002be){_0x29e671=_0x29e671-0x0;var _0x4eafac=_0x9cf8[_0x29e671];return _0x4eafac;};'use strict';var Sequelize=require(_0x89cf('0x0'));module[_0x89cf('0x1')]={'uniqueid':{'type':Sequelize['STRING']},'node':{'type':Sequelize[_0x89cf('0x2')]},'application':{'type':Sequelize[_0x89cf('0x2')]},'data':{'type':Sequelize['TEXT']},'project_name':{'type':Sequelize[_0x89cf('0x2')]},'callerid':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x0187=['exports','STRING','sequelize'];(function(_0x1ae4a9,_0x4c0ed9){var _0x54d0b0=function(_0x4fff20){while(--_0x4fff20){_0x1ae4a9['push'](_0x1ae4a9['shift']());}};_0x54d0b0(++_0x4c0ed9);}(_0x0187,0x158));var _0x7018=function(_0x4409e7,_0x307f17){_0x4409e7=_0x4409e7-0x0;var _0x24c751=_0x0187[_0x4409e7];return _0x24c751;};'use strict';var Sequelize=require(_0x7018('0x0'));module[_0x7018('0x1')]={'uniqueid':{'type':Sequelize[_0x7018('0x2')]},'node':{'type':Sequelize['STRING']},'application':{'type':Sequelize['STRING']},'data':{'type':Sequelize['TEXT']},'project_name':{'type':Sequelize[_0x7018('0x2')]},'callerid':{'type':Sequelize[_0x7018('0x2')]}};
\ No newline at end of file
index 2d261f6..1d6fea2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c97=['update','then','destroy','end','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','hasOwnProperty','order','sort','filter','merge','where','VIRTUAL','options','includeAll','include','SquareDetailsReport','findAll','catch','keys','length','create','body','find','params','describe','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','apply','reject','save'];(function(_0x44f033,_0x50304d){var _0xfb2869=function(_0x25785d){while(--_0x25785d){_0x44f033['push'](_0x44f033['shift']());}};_0xfb2869(++_0x50304d);}(_0x9c97,0x15c));var _0x79c9=function(_0x3fbfa4,_0x4dc57a){_0x3fbfa4=_0x3fbfa4-0x0;var _0x19f5ec=_0x9c97[_0x3fbfa4];return _0x19f5ec;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x79c9('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x79c9('0x1'));var rp=require(_0x79c9('0x2'));var moment=require(_0x79c9('0x3'));var BPromise=require(_0x79c9('0x4'));var Mustache=require(_0x79c9('0x5'));var util=require(_0x79c9('0x6'));var path=require(_0x79c9('0x7'));var sox=require(_0x79c9('0x8'));var csv=require(_0x79c9('0x9'));var ejs=require(_0x79c9('0xa'));var fs=require('fs');var fs_extra=require(_0x79c9('0xb'));var _=require(_0x79c9('0xc'));var squel=require(_0x79c9('0xd'));var crypto=require('crypto');var jsforce=require(_0x79c9('0xe'));var deskjs=require(_0x79c9('0xf'));var toCsv=require('to-csv');var querystring=require(_0x79c9('0x10'));var Papa=require(_0x79c9('0x11'));var Redis=require('ioredis');var authService=require(_0x79c9('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x79c9('0x13'));var hardwareService=require(_0x79c9('0x14'));var logger=require(_0x79c9('0x15'))(_0x79c9('0x16'));var utils=require('../../config/utils');var config=require(_0x79c9('0x17'));var licenseUtil=require(_0x79c9('0x18'));var db=require(_0x79c9('0x19'))['db'];function respondWithStatusCode(_0x5370c4,_0x2cc1a9){_0x2cc1a9=_0x2cc1a9||0xcc;return function(_0x37af9a){if(_0x37af9a){return _0x5370c4[_0x79c9('0x1a')](_0x2cc1a9);}return _0x5370c4['status'](_0x2cc1a9)['end']();};}function respondWithResult(_0x519510,_0x253400){_0x253400=_0x253400||0xc8;return function(_0x430e2a){if(_0x430e2a){return _0x519510[_0x79c9('0x1b')](_0x253400)[_0x79c9('0x1c')](_0x430e2a);}};}function respondWithFilteredResult(_0x5c90d6,_0x31cd4d){return function(_0x58c259){if(_0x58c259){var _0x3b2584=typeof _0x31cd4d[_0x79c9('0x1d')]===_0x79c9('0x1e')&&typeof _0x31cd4d[_0x79c9('0x1f')]===_0x79c9('0x1e');var _0x2f4193=_0x58c259[_0x79c9('0x20')];var _0x58a734=_0x3b2584?0x0:_0x31cd4d[_0x79c9('0x1d')];var _0x33fb49=_0x3b2584?_0x58c259[_0x79c9('0x20')]:_0x31cd4d[_0x79c9('0x1d')]+_0x31cd4d[_0x79c9('0x1f')];var _0x572b43;if(_0x33fb49>=_0x2f4193){_0x33fb49=_0x2f4193;_0x572b43=0xc8;}else{_0x572b43=0xce;}_0x5c90d6[_0x79c9('0x1b')](_0x572b43);return _0x5c90d6[_0x79c9('0x21')]('Content-Range',_0x58a734+'-'+_0x33fb49+'/'+_0x2f4193)[_0x79c9('0x1c')](_0x58c259);}return null;};}function patchUpdates(_0x5561b0){return function(_0x43d286){try{jsonpatch[_0x79c9('0x22')](_0x43d286,_0x5561b0,!![]);}catch(_0x47c4d3){return BPromise[_0x79c9('0x23')](_0x47c4d3);}return _0x43d286[_0x79c9('0x24')]();};}function saveUpdates(_0xaa5f68,_0x3601b2){return function(_0x1c6cab){if(_0x1c6cab){return _0x1c6cab[_0x79c9('0x25')](_0xaa5f68)[_0x79c9('0x26')](function(_0xe1c835){return _0xe1c835;});}return null;};}function removeEntity(_0x13b5a7,_0x704040){return function(_0x57fdc9){if(_0x57fdc9){return _0x57fdc9[_0x79c9('0x27')]()[_0x79c9('0x26')](function(){_0x13b5a7['status'](0xcc)[_0x79c9('0x28')]();});}};}function handleEntityNotFound(_0x29bcb2,_0x10981a){return function(_0x5947b7){if(!_0x5947b7){_0x29bcb2[_0x79c9('0x1a')](0x194);}return _0x5947b7;};}function handleError(_0x19ba5c,_0x405ea8){_0x405ea8=_0x405ea8||0x1f4;return function(_0x4c6635){logger[_0x79c9('0x29')](_0x4c6635[_0x79c9('0x2a')]);if(_0x4c6635[_0x79c9('0x2b')]){delete _0x4c6635[_0x79c9('0x2b')];}_0x19ba5c['status'](_0x405ea8)[_0x79c9('0x2c')](_0x4c6635);};}exports[_0x79c9('0x2d')]=function(_0x3211dc,_0x4a3fde){var _0x37bbf8={},_0x2793cd={},_0x5589d0={'count':0x0,'rows':[]};var _0x11d6ea=_[_0x79c9('0x2e')](db['SquareDetailsReport'][_0x79c9('0x2f')],function(_0x316552){return{'name':_0x316552[_0x79c9('0x30')],'type':_0x316552[_0x79c9('0x31')][_0x79c9('0x32')]};});_0x2793cd['model']=_[_0x79c9('0x2e')](_0x11d6ea,_0x79c9('0x2b'));_0x2793cd[_0x79c9('0x33')]=_['keys'](_0x3211dc[_0x79c9('0x33')]);_0x2793cd[_0x79c9('0x34')]=_[_0x79c9('0x35')](_0x2793cd[_0x79c9('0x36')],_0x2793cd[_0x79c9('0x33')]);_0x37bbf8[_0x79c9('0x37')]=_[_0x79c9('0x35')](_0x2793cd[_0x79c9('0x36')],qs[_0x79c9('0x38')](_0x3211dc[_0x79c9('0x33')][_0x79c9('0x38')]));_0x37bbf8[_0x79c9('0x37')]=_0x37bbf8[_0x79c9('0x37')]['length']?_0x37bbf8['attributes']:_0x2793cd[_0x79c9('0x36')];if(!_0x3211dc[_0x79c9('0x33')][_0x79c9('0x39')]('nolimit')){_0x37bbf8[_0x79c9('0x1f')]=qs['limit'](_0x3211dc[_0x79c9('0x33')]['limit']);_0x37bbf8[_0x79c9('0x1d')]=qs[_0x79c9('0x1d')](_0x3211dc[_0x79c9('0x33')][_0x79c9('0x1d')]);}_0x37bbf8[_0x79c9('0x3a')]=qs[_0x79c9('0x3b')](_0x3211dc['query'][_0x79c9('0x3b')]);_0x37bbf8['where']=qs[_0x79c9('0x34')](_['pick'](_0x3211dc[_0x79c9('0x33')],_0x2793cd[_0x79c9('0x34')]),_0x11d6ea);if(_0x3211dc[_0x79c9('0x33')][_0x79c9('0x3c')]){_0x37bbf8['where']=_[_0x79c9('0x3d')](_0x37bbf8[_0x79c9('0x3e')],{'$or':_[_0x79c9('0x2e')](_0x11d6ea,function(_0x5c9611){if(_0x5c9611[_0x79c9('0x31')]!==_0x79c9('0x3f')){var _0x41312a={};_0x41312a[_0x5c9611['name']]={'$like':'%'+_0x3211dc[_0x79c9('0x33')][_0x79c9('0x3c')]+'%'};return _0x41312a;}})});}_0x37bbf8=_[_0x79c9('0x3d')]({},_0x37bbf8,_0x3211dc[_0x79c9('0x40')]);var _0x51f9c0={'where':_0x37bbf8[_0x79c9('0x3e')]};return db['SquareDetailsReport']['count'](_0x51f9c0)[_0x79c9('0x26')](function(_0x130529){_0x5589d0['count']=_0x130529;if(_0x3211dc[_0x79c9('0x33')][_0x79c9('0x41')]){_0x37bbf8[_0x79c9('0x42')]=[{'all':!![]}];}return db[_0x79c9('0x43')][_0x79c9('0x44')](_0x37bbf8);})[_0x79c9('0x26')](function(_0x19f34b){_0x5589d0['rows']=_0x19f34b;return _0x5589d0;})[_0x79c9('0x26')](respondWithFilteredResult(_0x4a3fde,_0x37bbf8))[_0x79c9('0x45')](handleError(_0x4a3fde,null));};exports['show']=function(_0x2910ef,_0x3e64e1){var _0x3dbc30={'raw':!![],'where':{'id':_0x2910ef['params']['id']}},_0x4059ab={};_0x4059ab[_0x79c9('0x36')]=_['keys'](db[_0x79c9('0x43')][_0x79c9('0x2f')]);_0x4059ab[_0x79c9('0x33')]=_[_0x79c9('0x46')](_0x2910ef[_0x79c9('0x33')]);_0x4059ab[_0x79c9('0x34')]=_[_0x79c9('0x35')](_0x4059ab[_0x79c9('0x36')],_0x4059ab['query']);_0x3dbc30['attributes']=_[_0x79c9('0x35')](_0x4059ab['model'],qs[_0x79c9('0x38')](_0x2910ef[_0x79c9('0x33')]['fields']));_0x3dbc30[_0x79c9('0x37')]=_0x3dbc30[_0x79c9('0x37')][_0x79c9('0x47')]?_0x3dbc30[_0x79c9('0x37')]:_0x4059ab[_0x79c9('0x36')];if(_0x2910ef[_0x79c9('0x33')][_0x79c9('0x41')]){_0x3dbc30[_0x79c9('0x42')]=[{'all':!![]}];}_0x3dbc30=_[_0x79c9('0x3d')]({},_0x3dbc30,_0x2910ef[_0x79c9('0x40')]);return db['SquareDetailsReport']['find'](_0x3dbc30)[_0x79c9('0x26')](handleEntityNotFound(_0x3e64e1,null))[_0x79c9('0x26')](respondWithResult(_0x3e64e1,null))[_0x79c9('0x45')](handleError(_0x3e64e1,null));};exports[_0x79c9('0x48')]=function(_0x24b820,_0x247d8f){return db['SquareDetailsReport'][_0x79c9('0x48')](_0x24b820[_0x79c9('0x49')],{})[_0x79c9('0x26')](respondWithResult(_0x247d8f,0xc9))['catch'](handleError(_0x247d8f,null));};exports['update']=function(_0x563d26,_0x53b553){if(_0x563d26[_0x79c9('0x49')]['id']){delete _0x563d26[_0x79c9('0x49')]['id'];}return db[_0x79c9('0x43')][_0x79c9('0x4a')]({'where':{'id':_0x563d26[_0x79c9('0x4b')]['id']}})[_0x79c9('0x26')](handleEntityNotFound(_0x53b553,null))[_0x79c9('0x26')](saveUpdates(_0x563d26[_0x79c9('0x49')],null))['then'](respondWithResult(_0x53b553,null))[_0x79c9('0x45')](handleError(_0x53b553,null));};exports[_0x79c9('0x27')]=function(_0x4ad831,_0x22af47){return db[_0x79c9('0x43')]['find']({'where':{'id':_0x4ad831[_0x79c9('0x4b')]['id']}})[_0x79c9('0x26')](handleEntityNotFound(_0x22af47,null))[_0x79c9('0x26')](removeEntity(_0x22af47,null))[_0x79c9('0x45')](handleError(_0x22af47,null));};exports[_0x79c9('0x4c')]=function(_0x2a6362,_0x2f359f){return db[_0x79c9('0x43')][_0x79c9('0x4c')]()['then'](respondWithResult(_0x2f359f,null))[_0x79c9('0x45')](handleError(_0x2f359f,null));};
\ No newline at end of file
+var _0x90e2=['squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/environment','../../config/license/util','status','json','undefined','limit','count','offset','Content-Range','reject','save','update','then','destroy','end','sendStatus','stack','index','map','SquareDetailsReport','rawAttributes','type','key','model','name','query','keys','filters','attributes','fields','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','intersection','length','create','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','to-csv','fs-extra','lodash'];(function(_0x179b53,_0x31f6fe){var _0x38a146=function(_0x33f0c2){while(--_0x33f0c2){_0x179b53['push'](_0x179b53['shift']());}};_0x38a146(++_0x31f6fe);}(_0x90e2,0x1e6));var _0x290e=function(_0x43a59f,_0x510d29){_0x43a59f=_0x43a59f-0x0;var _0x1ee9a0=_0x90e2[_0x43a59f];return _0x1ee9a0;};'use strict';var emlformat=require(_0x290e('0x0'));var rimraf=require(_0x290e('0x1'));var zipdir=require(_0x290e('0x2'));var jsonpatch=require(_0x290e('0x3'));var rp=require(_0x290e('0x4'));var moment=require('moment');var BPromise=require(_0x290e('0x5'));var Mustache=require(_0x290e('0x6'));var util=require(_0x290e('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x290e('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x290e('0x9'));var _=require(_0x290e('0xa'));var squel=require(_0x290e('0xb'));var crypto=require(_0x290e('0xc'));var jsforce=require(_0x290e('0xd'));var deskjs=require(_0x290e('0xe'));var toCsv=require(_0x290e('0x8'));var querystring=require('querystring');var Papa=require(_0x290e('0xf'));var Redis=require(_0x290e('0x10'));var authService=require(_0x290e('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x290e('0x12'));var logger=require('../../config/logger')(_0x290e('0x13'));var utils=require('../../config/utils');var config=require(_0x290e('0x14'));var licenseUtil=require(_0x290e('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x49d973,_0x1f17ea){_0x1f17ea=_0x1f17ea||0xcc;return function(_0x28afa3){if(_0x28afa3){return _0x49d973['sendStatus'](_0x1f17ea);}return _0x49d973[_0x290e('0x16')](_0x1f17ea)['end']();};}function respondWithResult(_0x53ae42,_0x405838){_0x405838=_0x405838||0xc8;return function(_0x3b15c1){if(_0x3b15c1){return _0x53ae42[_0x290e('0x16')](_0x405838)[_0x290e('0x17')](_0x3b15c1);}};}function respondWithFilteredResult(_0x442b1c,_0x32d734){return function(_0xa70dd6){if(_0xa70dd6){var _0x5d68b4=typeof _0x32d734['offset']===_0x290e('0x18')&&typeof _0x32d734[_0x290e('0x19')]===_0x290e('0x18');var _0x468b08=_0xa70dd6[_0x290e('0x1a')];var _0x283650=_0x5d68b4?0x0:_0x32d734[_0x290e('0x1b')];var _0x42550e=_0x5d68b4?_0xa70dd6['count']:_0x32d734['offset']+_0x32d734[_0x290e('0x19')];var _0x188e2d;if(_0x42550e>=_0x468b08){_0x42550e=_0x468b08;_0x188e2d=0xc8;}else{_0x188e2d=0xce;}_0x442b1c[_0x290e('0x16')](_0x188e2d);return _0x442b1c['set'](_0x290e('0x1c'),_0x283650+'-'+_0x42550e+'/'+_0x468b08)[_0x290e('0x17')](_0xa70dd6);}return null;};}function patchUpdates(_0x364eb2){return function(_0x690cb){try{jsonpatch['apply'](_0x690cb,_0x364eb2,!![]);}catch(_0x58de47){return BPromise[_0x290e('0x1d')](_0x58de47);}return _0x690cb[_0x290e('0x1e')]();};}function saveUpdates(_0x1e6c7f,_0x31fc36){return function(_0x211066){if(_0x211066){return _0x211066[_0x290e('0x1f')](_0x1e6c7f)[_0x290e('0x20')](function(_0x175e5f){return _0x175e5f;});}return null;};}function removeEntity(_0x259ccd,_0x325b3b){return function(_0x41ba49){if(_0x41ba49){return _0x41ba49[_0x290e('0x21')]()[_0x290e('0x20')](function(){_0x259ccd[_0x290e('0x16')](0xcc)[_0x290e('0x22')]();});}};}function handleEntityNotFound(_0x47c173,_0x44c01e){return function(_0x22854d){if(!_0x22854d){_0x47c173[_0x290e('0x23')](0x194);}return _0x22854d;};}function handleError(_0x122660,_0x3481c7){_0x3481c7=_0x3481c7||0x1f4;return function(_0x3bd1db){logger['error'](_0x3bd1db[_0x290e('0x24')]);if(_0x3bd1db['name']){delete _0x3bd1db['name'];}_0x122660['status'](_0x3481c7)['send'](_0x3bd1db);};}exports[_0x290e('0x25')]=function(_0x4f84af,_0x431b85){var _0x3d3029={},_0x5dbc43={},_0x13eb49={'count':0x0,'rows':[]};var _0x5d0f0f=_[_0x290e('0x26')](db[_0x290e('0x27')][_0x290e('0x28')],function(_0x2ab3ed){return{'name':_0x2ab3ed['fieldName'],'type':_0x2ab3ed[_0x290e('0x29')][_0x290e('0x2a')]};});_0x5dbc43[_0x290e('0x2b')]=_[_0x290e('0x26')](_0x5d0f0f,_0x290e('0x2c'));_0x5dbc43[_0x290e('0x2d')]=_[_0x290e('0x2e')](_0x4f84af[_0x290e('0x2d')]);_0x5dbc43[_0x290e('0x2f')]=_['intersection'](_0x5dbc43[_0x290e('0x2b')],_0x5dbc43[_0x290e('0x2d')]);_0x3d3029[_0x290e('0x30')]=_['intersection'](_0x5dbc43[_0x290e('0x2b')],qs[_0x290e('0x31')](_0x4f84af[_0x290e('0x2d')][_0x290e('0x31')]));_0x3d3029[_0x290e('0x30')]=_0x3d3029[_0x290e('0x30')]['length']?_0x3d3029[_0x290e('0x30')]:_0x5dbc43[_0x290e('0x2b')];if(!_0x4f84af[_0x290e('0x2d')]['hasOwnProperty'](_0x290e('0x32'))){_0x3d3029[_0x290e('0x19')]=qs[_0x290e('0x19')](_0x4f84af[_0x290e('0x2d')][_0x290e('0x19')]);_0x3d3029[_0x290e('0x1b')]=qs[_0x290e('0x1b')](_0x4f84af[_0x290e('0x2d')]['offset']);}_0x3d3029[_0x290e('0x33')]=qs[_0x290e('0x34')](_0x4f84af[_0x290e('0x2d')][_0x290e('0x34')]);_0x3d3029[_0x290e('0x35')]=qs[_0x290e('0x2f')](_[_0x290e('0x36')](_0x4f84af[_0x290e('0x2d')],_0x5dbc43[_0x290e('0x2f')]),_0x5d0f0f);if(_0x4f84af['query'][_0x290e('0x37')]){_0x3d3029['where']=_[_0x290e('0x38')](_0x3d3029['where'],{'$or':_[_0x290e('0x26')](_0x5d0f0f,function(_0xf45810){if(_0xf45810[_0x290e('0x29')]!==_0x290e('0x39')){var _0xeb0729={};_0xeb0729[_0xf45810[_0x290e('0x2c')]]={'$like':'%'+_0x4f84af[_0x290e('0x2d')]['filter']+'%'};return _0xeb0729;}})});}_0x3d3029=_[_0x290e('0x38')]({},_0x3d3029,_0x4f84af[_0x290e('0x3a')]);var _0x1f2bf0={'where':_0x3d3029[_0x290e('0x35')]};return db[_0x290e('0x27')][_0x290e('0x1a')](_0x1f2bf0)['then'](function(_0x3f7bdd){_0x13eb49[_0x290e('0x1a')]=_0x3f7bdd;if(_0x4f84af[_0x290e('0x2d')][_0x290e('0x3b')]){_0x3d3029[_0x290e('0x3c')]=[{'all':!![]}];}return db[_0x290e('0x27')][_0x290e('0x3d')](_0x3d3029);})['then'](function(_0x58dc32){_0x13eb49['rows']=_0x58dc32;return _0x13eb49;})[_0x290e('0x20')](respondWithFilteredResult(_0x431b85,_0x3d3029))[_0x290e('0x3e')](handleError(_0x431b85,null));};exports[_0x290e('0x3f')]=function(_0x536b9f,_0x163853){var _0x360db4={'raw':!![],'where':{'id':_0x536b9f[_0x290e('0x40')]['id']}},_0x4dd000={};_0x4dd000[_0x290e('0x2b')]=_[_0x290e('0x2e')](db[_0x290e('0x27')][_0x290e('0x28')]);_0x4dd000['query']=_[_0x290e('0x2e')](_0x536b9f[_0x290e('0x2d')]);_0x4dd000['filters']=_[_0x290e('0x41')](_0x4dd000['model'],_0x4dd000[_0x290e('0x2d')]);_0x360db4[_0x290e('0x30')]=_[_0x290e('0x41')](_0x4dd000[_0x290e('0x2b')],qs[_0x290e('0x31')](_0x536b9f[_0x290e('0x2d')][_0x290e('0x31')]));_0x360db4[_0x290e('0x30')]=_0x360db4[_0x290e('0x30')][_0x290e('0x42')]?_0x360db4[_0x290e('0x30')]:_0x4dd000['model'];if(_0x536b9f[_0x290e('0x2d')][_0x290e('0x3b')]){_0x360db4[_0x290e('0x3c')]=[{'all':!![]}];}_0x360db4=_[_0x290e('0x38')]({},_0x360db4,_0x536b9f['options']);return db[_0x290e('0x27')]['find'](_0x360db4)[_0x290e('0x20')](handleEntityNotFound(_0x163853,null))[_0x290e('0x20')](respondWithResult(_0x163853,null))[_0x290e('0x3e')](handleError(_0x163853,null));};exports[_0x290e('0x43')]=function(_0x3a6fd4,_0x481ca0){return db['SquareDetailsReport']['create'](_0x3a6fd4['body'],{})['then'](respondWithResult(_0x481ca0,0xc9))[_0x290e('0x3e')](handleError(_0x481ca0,null));};exports[_0x290e('0x1f')]=function(_0x4e9922,_0xea95fa){if(_0x4e9922[_0x290e('0x44')]['id']){delete _0x4e9922[_0x290e('0x44')]['id'];}return db[_0x290e('0x27')][_0x290e('0x45')]({'where':{'id':_0x4e9922[_0x290e('0x40')]['id']}})[_0x290e('0x20')](handleEntityNotFound(_0xea95fa,null))[_0x290e('0x20')](saveUpdates(_0x4e9922[_0x290e('0x44')],null))['then'](respondWithResult(_0xea95fa,null))['catch'](handleError(_0xea95fa,null));};exports[_0x290e('0x21')]=function(_0x3cab0c,_0x3fe9d4){return db[_0x290e('0x27')][_0x290e('0x45')]({'where':{'id':_0x3cab0c[_0x290e('0x40')]['id']}})['then'](handleEntityNotFound(_0x3fe9d4,null))[_0x290e('0x20')](removeEntity(_0x3fe9d4,null))[_0x290e('0x3e')](handleError(_0x3fe9d4,null));};exports['describe']=function(_0x14cd32,_0xc2f615){return db[_0x290e('0x27')][_0x290e('0x46')]()[_0x290e('0x20')](respondWithResult(_0xc2f615,null))[_0x290e('0x3e')](handleError(_0xc2f615,null));};
\ No newline at end of file
index 0e3b3dc..efda54f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8f0=['../../config/environment','./squareReportDetail.attributes','exports','SquareDetailsReport','report_square_details','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xd8f0,0x109));var _0x0d8f=function(_0x29b01f,_0x13e8bb){_0x29b01f=_0x29b01f-0x0;var _0xf7d6c3=_0xd8f0[_0x29b01f];return _0xf7d6c3;};'use strict';var _=require(_0x0d8f('0x0'));var util=require(_0x0d8f('0x1'));var logger=require(_0x0d8f('0x2'))(_0x0d8f('0x3'));var moment=require(_0x0d8f('0x4'));var BPromise=require(_0x0d8f('0x5'));var rp=require(_0x0d8f('0x6'));var fs=require('fs');var path=require(_0x0d8f('0x7'));var rimraf=require('rimraf');var config=require(_0x0d8f('0x8'));var attributes=require(_0x0d8f('0x9'));module[_0x0d8f('0xa')]=function(_0x43960b,_0x46e5a4){return _0x43960b['define'](_0x0d8f('0xb'),attributes,{'tableName':_0x0d8f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6cec=['request-promise','path','rimraf','./squareReportDetail.attributes','exports','define','report_square_details','lodash','../../config/logger'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6cec,0xa9));var _0xc6ce=function(_0x21c6b8,_0x16d6f6){_0x21c6b8=_0x21c6b8-0x0;var _0x39d474=_0x6cec[_0x21c6b8];return _0x39d474;};'use strict';var _=require(_0xc6ce('0x0'));var util=require('util');var logger=require(_0xc6ce('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xc6ce('0x2'));var fs=require('fs');var path=require(_0xc6ce('0x3'));var rimraf=require(_0xc6ce('0x4'));var config=require('../../config/environment');var attributes=require(_0xc6ce('0x5'));module[_0xc6ce('0x6')]=function(_0x197970,_0x27ef60){return _0x197970[_0xc6ce('0x7')]('SquareDetailsReport',attributes,{'tableName':_0xc6ce('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4862012..8a33ddb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcecc=['SquareDetailsReport,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','SquareDetailsReport','create','body','options','raw','CreateSquareDetailsReport','lodash','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','http','then','info'];(function(_0x323e78,_0x119aea){var _0x2c9991=function(_0x437638){while(--_0x437638){_0x323e78['push'](_0x323e78['shift']());}};_0x2c9991(++_0x119aea);}(_0xcecc,0x186));var _0xccec=function(_0x1a9a12,_0x3afa3b){_0x1a9a12=_0x1a9a12-0x0;var _0x23460f=_0xcecc[_0x1a9a12];return _0x23460f;};'use strict';var _=require(_0xccec('0x0'));var util=require('util');var moment=require(_0xccec('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xccec('0x2'));var db=require(_0xccec('0x3'))['db'];var utils=require(_0xccec('0x4'));var logger=require(_0xccec('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0xccec('0x6'));var client=jayson['client'][_0xccec('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x44ed01,_0x2a66e5,_0x5788aa){return new BPromise(function(_0x372ea6,_0x3d7b1a){return client['request'](_0x44ed01,_0x5788aa)[_0xccec('0x8')](function(_0xbbf504){logger[_0xccec('0x9')](_0xccec('0xa'),_0x2a66e5,'request\x20sent');logger[_0xccec('0xb')]('SquareDetailsReport,\x20%s,\x20%s,\x20%s',_0x2a66e5,_0xccec('0xc'),JSON[_0xccec('0xd')](_0xbbf504));if(_0xbbf504['error']){if(_0xbbf504[_0xccec('0xe')][_0xccec('0xf')]===0x1f4){logger[_0xccec('0xe')]('SquareDetailsReport,\x20%s,\x20%s',_0x2a66e5,_0xbbf504[_0xccec('0xe')][_0xccec('0x10')]);return _0x3d7b1a(_0xbbf504[_0xccec('0xe')][_0xccec('0x10')]);}logger[_0xccec('0xe')]('SquareDetailsReport,\x20%s,\x20%s',_0x2a66e5,_0xbbf504[_0xccec('0xe')]['message']);return _0x372ea6(_0xbbf504['error']['message']);}else{logger[_0xccec('0x9')](_0xccec('0xa'),_0x2a66e5,_0xccec('0xc'));_0x372ea6(_0xbbf504[_0xccec('0x11')][_0xccec('0x10')]);}})[_0xccec('0x12')](function(_0x7abe38){logger[_0xccec('0xe')](_0xccec('0xa'),_0x2a66e5,_0x7abe38);_0x3d7b1a(_0x7abe38);});});}exports['CreateSquareDetailsReport']=function(_0x518016){var _0x56b926=this;return new Promise(function(_0x970c66,_0x551d33){return db[_0xccec('0x13')][_0xccec('0x14')](_0x518016[_0xccec('0x15')],{'raw':_0x518016['options']?_0x518016[_0xccec('0x16')][_0xccec('0x17')]===undefined?!![]:![]:!![]})[_0xccec('0x8')](function(_0x4a7f08){logger[_0xccec('0x9')](_0xccec('0x18'),_0x518016);logger[_0xccec('0xb')]('CreateSquareDetailsReport',_0x518016,JSON[_0xccec('0xd')](_0x4a7f08));_0x970c66(_0x4a7f08);})['catch'](function(_0x9065a3){logger['error'](_0xccec('0x18'),_0x9065a3[_0xccec('0x10')],_0x518016);_0x551d33(_0x56b926[_0xccec('0xe')](0x1f4,_0x9065a3[_0xccec('0x10')]));});});};
\ No newline at end of file
+var _0x8d05=['lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','SquareDetailsReport,\x20%s,\x20%s','request\x20sent','SquareDetailsReport,\x20%s,\x20%s,\x20%s','error','code','message','info','result','CreateSquareDetailsReport','SquareDetailsReport','create','body','options','raw','stringify','catch'];(function(_0x22c4bf,_0x34cb9e){var _0x1c4a79=function(_0x11f1d9){while(--_0x11f1d9){_0x22c4bf['push'](_0x22c4bf['shift']());}};_0x1c4a79(++_0x34cb9e);}(_0x8d05,0xe8));var _0x58d0=function(_0x2441d5,_0x49e5d3){_0x2441d5=_0x2441d5-0x0;var _0x3ef564=_0x8d05[_0x2441d5];return _0x3ef564;};'use strict';var _=require(_0x58d0('0x0'));var util=require(_0x58d0('0x1'));var moment=require(_0x58d0('0x2'));var BPromise=require(_0x58d0('0x3'));var rs=require(_0x58d0('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x58d0('0x5'));var logger=require(_0x58d0('0x6'))(_0x58d0('0x7'));var config=require(_0x58d0('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x58d0('0x9')][_0x58d0('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x528303,_0x66aef1,_0x4e44e2){return new BPromise(function(_0xe744f4,_0x34ab60){return client[_0x58d0('0xb')](_0x528303,_0x4e44e2)[_0x58d0('0xc')](function(_0x1d070a){logger['info'](_0x58d0('0xd'),_0x66aef1,_0x58d0('0xe'));logger['debug'](_0x58d0('0xf'),_0x66aef1,_0x58d0('0xe'),JSON['stringify'](_0x1d070a));if(_0x1d070a['error']){if(_0x1d070a[_0x58d0('0x10')][_0x58d0('0x11')]===0x1f4){logger[_0x58d0('0x10')](_0x58d0('0xd'),_0x66aef1,_0x1d070a[_0x58d0('0x10')][_0x58d0('0x12')]);return _0x34ab60(_0x1d070a[_0x58d0('0x10')][_0x58d0('0x12')]);}logger[_0x58d0('0x10')](_0x58d0('0xd'),_0x66aef1,_0x1d070a[_0x58d0('0x10')][_0x58d0('0x12')]);return _0xe744f4(_0x1d070a[_0x58d0('0x10')][_0x58d0('0x12')]);}else{logger[_0x58d0('0x13')](_0x58d0('0xd'),_0x66aef1,_0x58d0('0xe'));_0xe744f4(_0x1d070a[_0x58d0('0x14')][_0x58d0('0x12')]);}})['catch'](function(_0x10874e){logger[_0x58d0('0x10')](_0x58d0('0xd'),_0x66aef1,_0x10874e);_0x34ab60(_0x10874e);});});}exports[_0x58d0('0x15')]=function(_0xb8dd5f){var _0x2c7db6=this;return new Promise(function(_0x23dcfb,_0x41d221){return db[_0x58d0('0x16')][_0x58d0('0x17')](_0xb8dd5f[_0x58d0('0x18')],{'raw':_0xb8dd5f[_0x58d0('0x19')]?_0xb8dd5f[_0x58d0('0x19')][_0x58d0('0x1a')]===undefined?!![]:![]:!![]})['then'](function(_0x3072f9){logger[_0x58d0('0x13')](_0x58d0('0x15'),_0xb8dd5f);logger['debug'](_0x58d0('0x15'),_0xb8dd5f,JSON[_0x58d0('0x1b')](_0x3072f9));_0x23dcfb(_0x3072f9);})[_0x58d0('0x1c')](function(_0x575b34){logger[_0x58d0('0x10')]('CreateSquareDetailsReport',_0x575b34['message'],_0xb8dd5f);_0x41d221(_0x2c7db6[_0x58d0('0x10')](0x1f4,_0x575b34[_0x58d0('0x12')]));});});};
\ No newline at end of file
index 69fd6d5..0f48156 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf25c=['exports','express','Router','get','isAuthenticated','index','/process/:pid/kill','killProcess'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xf25c,0x151));var _0xcf25=function(_0xd0a847,_0x72562b){_0xd0a847=_0xd0a847-0x0;var _0x2536ec=_0xf25c[_0xd0a847];return _0x2536ec;};'use strict';var express=require(_0xcf25('0x0'));var router=express[_0xcf25('0x1')]();var auth=require('../../components/auth/service');var controller=require('./system.controller');router[_0xcf25('0x2')]('/',auth[_0xcf25('0x3')](),controller[_0xcf25('0x4')]);router[_0xcf25('0x2')](_0xcf25('0x5'),auth[_0xcf25('0x3')](),controller[_0xcf25('0x6')]);module[_0xcf25('0x7')]=router;
\ No newline at end of file
+var _0x70d8=['killProcess','exports','Router','get','isAuthenticated','index','/process/:pid/kill'];(function(_0x5661c5,_0x279a76){var _0x4d9e5b=function(_0x31e175){while(--_0x31e175){_0x5661c5['push'](_0x5661c5['shift']());}};_0x4d9e5b(++_0x279a76);}(_0x70d8,0x13d));var _0x870d=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x70d8[_0x4565bf];return _0x5610ba;};'use strict';var express=require('express');var router=express[_0x870d('0x0')]();var auth=require('../../components/auth/service');var controller=require('./system.controller');router[_0x870d('0x1')]('/',auth[_0x870d('0x2')](),controller[_0x870d('0x3')]);router[_0x870d('0x1')](_0x870d('0x4'),auth[_0x870d('0x2')](),controller[_0x870d('0x5')]);module[_0x870d('0x6')]=router;
\ No newline at end of file
index 11c4d06..40ddd2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1bd=['child_process','exec','../../config/logger','api','util','bluebird','lodash','error','inspect','name','status','send','index','then','json','killProcess','components/import/cm','format','ps\x20-p\x20%s\x20-ww\x20-o\x20args','params','pid','length','indexOf','kill','SIGINT','Process\x20with\x20pid\x20%s\x20killed\x20correctly','catch','systeminformation'];(function(_0x67be8b,_0x679402){var _0x18368e=function(_0xae6ef9){while(--_0xae6ef9){_0x67be8b['push'](_0x67be8b['shift']());}};_0x18368e(++_0x679402);}(_0xe1bd,0x1a3));var _0xde1b=function(_0x4f4589,_0xe12809){_0x4f4589=_0x4f4589-0x0;var _0x250e25=_0xe1bd[_0x4f4589];return _0x250e25;};'use strict';var info=require(_0xde1b('0x0'));var exec=require(_0xde1b('0x1'))[_0xde1b('0x2')];var logger=require(_0xde1b('0x3'))(_0xde1b('0x4'));var util=require(_0xde1b('0x5'));var BPromise=require(_0xde1b('0x6'));var _=require(_0xde1b('0x7'));function handleError(_0x2b5703,_0x383725,_0x488abe){_0x383725=_0x383725||0x1f4;return function(_0xf345cf){logger[_0xde1b('0x8')]('<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s',_0x488abe,_0x383725,util[_0xde1b('0x9')](_0xf345cf,{'showHidden':![],'depth':null}));delete _0xf345cf[_0xde1b('0xa')];_0x2b5703[_0xde1b('0xb')](_0x383725)[_0xde1b('0xc')](_0xf345cf);};}exports[_0xde1b('0xd')]=function(_0x236e1e,_0x1f8701){return info['getAllData']()[_0xde1b('0xe')](function(_0x42e991){return _0x1f8701[_0xde1b('0xb')](0xc8)[_0xde1b('0xf')](_0x42e991);})['catch'](function(_0x4b01e4){return _0x1f8701[_0xde1b('0xb')](0x1f4)['json'](_0x4b01e4);});};exports[_0xde1b('0x10')]=function(_0x40736d,_0x4bd041){var _0xfec5d6=[_0xde1b('0x11')];return new BPromise(function(_0x58a637,_0x2ba08c){return exec(util[_0xde1b('0x12')](_0xde1b('0x13'),_0x40736d[_0xde1b('0x14')][_0xde1b('0x15')]),function(_0x5af5a4,_0x946630,_0x3a86cf){if(_0x5af5a4){return _0x2ba08c(_0x5af5a4);}return _0x58a637(_0x946630);});})['then'](function(_0x1ee14e){var _0x379740=![];var _0x12e8c0=_0x1ee14e['split'](/\n/);for(var _0x3cb3d8=0x0,_0x3f6c4d=_0xfec5d6[_0xde1b('0x16')];_0x3cb3d8<_0x3f6c4d,_0x379740===![];_0x3cb3d8+=0x1){if(_0x1ee14e[_0xde1b('0x17')](_0xfec5d6[_0x3cb3d8])>=0x0){_0x379740=!![];}}if(!_0x379740){throw new Error(util[_0xde1b('0x12')]('Process\x20with\x20pid\x20%s\x20not\x20found!',_0x40736d['params']['pid']));}process[_0xde1b('0x18')](_0x40736d[_0xde1b('0x14')]['pid'],_0xde1b('0x19'));return _0x4bd041['status'](0xc8)[_0xde1b('0xf')]({'message':util[_0xde1b('0x12')](_0xde1b('0x1a'),_0x40736d[_0xde1b('0x14')][_0xde1b('0x15')])});})[_0xde1b('0x1b')](handleError(_0x4bd041,null,'killProcess'));};
\ No newline at end of file
+var _0xf3dc=['Process\x20with\x20pid\x20%s\x20killed\x20correctly','exec','../../config/logger','api','util','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','inspect','name','status','json','catch','killProcess','components/import/cm','ps\x20-p\x20%s\x20-ww\x20-o\x20args','then','split','indexOf','format','params','pid','kill'];(function(_0x320b48,_0x1b09a1){var _0x5b2f37=function(_0x3b36b9){while(--_0x3b36b9){_0x320b48['push'](_0x320b48['shift']());}};_0x5b2f37(++_0x1b09a1);}(_0xf3dc,0x1a5));var _0xcf3d=function(_0x279ab1,_0x527374){_0x279ab1=_0x279ab1-0x0;var _0x8ba87c=_0xf3dc[_0x279ab1];return _0x8ba87c;};'use strict';var info=require('systeminformation');var exec=require('child_process')[_0xcf3d('0x0')];var logger=require(_0xcf3d('0x1'))(_0xcf3d('0x2'));var util=require(_0xcf3d('0x3'));var BPromise=require('bluebird');var _=require('lodash');function handleError(_0x57cbcc,_0x51ff9c,_0x22c580){_0x51ff9c=_0x51ff9c||0x1f4;return function(_0xbd74e4){logger['error'](_0xcf3d('0x4'),_0x22c580,_0x51ff9c,util[_0xcf3d('0x5')](_0xbd74e4,{'showHidden':![],'depth':null}));delete _0xbd74e4[_0xcf3d('0x6')];_0x57cbcc[_0xcf3d('0x7')](_0x51ff9c)['send'](_0xbd74e4);};}exports['index']=function(_0x292956,_0x12abd5){return info['getAllData']()['then'](function(_0x334094){return _0x12abd5[_0xcf3d('0x7')](0xc8)[_0xcf3d('0x8')](_0x334094);})[_0xcf3d('0x9')](function(_0x384083){return _0x12abd5[_0xcf3d('0x7')](0x1f4)[_0xcf3d('0x8')](_0x384083);});};exports[_0xcf3d('0xa')]=function(_0x438f9f,_0x30a85e){var _0x35ef3f=[_0xcf3d('0xb')];return new BPromise(function(_0x21973d,_0x193954){return exec(util['format'](_0xcf3d('0xc'),_0x438f9f['params']['pid']),function(_0x39eaee,_0x28d122,_0x5a2486){if(_0x39eaee){return _0x193954(_0x39eaee);}return _0x21973d(_0x28d122);});})[_0xcf3d('0xd')](function(_0x755730){var _0x331fc1=![];var _0x102483=_0x755730[_0xcf3d('0xe')](/\n/);for(var _0x83760b=0x0,_0x4360a8=_0x35ef3f['length'];_0x83760b<_0x4360a8,_0x331fc1===![];_0x83760b+=0x1){if(_0x755730[_0xcf3d('0xf')](_0x35ef3f[_0x83760b])>=0x0){_0x331fc1=!![];}}if(!_0x331fc1){throw new Error(util[_0xcf3d('0x10')]('Process\x20with\x20pid\x20%s\x20not\x20found!',_0x438f9f[_0xcf3d('0x11')][_0xcf3d('0x12')]));}process[_0xcf3d('0x13')](_0x438f9f['params']['pid'],'SIGINT');return _0x30a85e[_0xcf3d('0x7')](0xc8)[_0xcf3d('0x8')]({'message':util['format'](_0xcf3d('0x14'),_0x438f9f[_0xcf3d('0x11')][_0xcf3d('0x12')])});})[_0xcf3d('0x9')](handleError(_0x30a85e,null,'killProcess'));};
\ No newline at end of file
index e608caf..ff93ea0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4797=['multer','util','path','Router','fs-extra','../../components/auth/service','../../config/environment','./tag.controller','get','isAuthenticated','show','post','put','/:id','update','delete','destroy'];(function(_0x57dec2,_0xf7ab2e){var _0xbe1b41=function(_0x2b7270){while(--_0x2b7270){_0x57dec2['push'](_0x57dec2['shift']());}};_0xbe1b41(++_0xf7ab2e);}(_0x4797,0x143));var _0x7479=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x4797[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x7479('0x0'));var util=require(_0x7479('0x1'));var path=require(_0x7479('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x7479('0x3')]();var fs_extra=require(_0x7479('0x4'));var auth=require(_0x7479('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x7479('0x6'));var controller=require(_0x7479('0x7'));router[_0x7479('0x8')]('/',auth[_0x7479('0x9')](),controller['index']);router[_0x7479('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x7479('0xa')]);router[_0x7479('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0x7479('0xc')](_0x7479('0xd'),auth[_0x7479('0x9')](),controller[_0x7479('0xe')]);router[_0x7479('0xf')]('/:id',auth[_0x7479('0x9')](),controller[_0x7479('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0xadb6=['create','put','/:id','delete','destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./tag.controller','isAuthenticated','index','get','show'];(function(_0x4fe399,_0x53ab58){var _0x153bb5=function(_0x31b90a){while(--_0x31b90a){_0x4fe399['push'](_0x4fe399['shift']());}};_0x153bb5(++_0x53ab58);}(_0xadb6,0x1b5));var _0x6adb=function(_0x12875a,_0xe40b5f){_0x12875a=_0x12875a-0x0;var _0x11c7ab=_0xadb6[_0x12875a];return _0x11c7ab;};'use strict';var multer=require(_0x6adb('0x0'));var util=require(_0x6adb('0x1'));var path=require('path');var timeout=require(_0x6adb('0x2'));var express=require(_0x6adb('0x3'));var router=express[_0x6adb('0x4')]();var fs_extra=require(_0x6adb('0x5'));var auth=require(_0x6adb('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x6adb('0x7'));var controller=require(_0x6adb('0x8'));router['get']('/',auth[_0x6adb('0x9')](),controller[_0x6adb('0xa')]);router[_0x6adb('0xb')]('/:id',auth[_0x6adb('0x9')](),controller[_0x6adb('0xc')]);router['post']('/',auth[_0x6adb('0x9')](),controller[_0x6adb('0xd')]);router[_0x6adb('0xe')](_0x6adb('0xf'),auth['isAuthenticated'](),controller['update']);router[_0x6adb('0x10')](_0x6adb('0xf'),auth[_0x6adb('0x9')](),controller[_0x6adb('0x11')]);module['exports']=router;
\ No newline at end of file
index 60946f3..d947d34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf972=['sequelize','STRING','name'];(function(_0x29162a,_0x523e59){var _0x343593=function(_0x3876a8){while(--_0x3876a8){_0x29162a['push'](_0x29162a['shift']());}};_0x343593(++_0x523e59);}(_0xf972,0x171));var _0x2f97=function(_0x50328b,_0x477603){_0x50328b=_0x50328b-0x0;var _0x5875c4=_0xf972[_0x50328b];return _0x5875c4;};'use strict';var Sequelize=require(_0x2f97('0x0'));module['exports']={'name':{'type':Sequelize[_0x2f97('0x1')],'unique':_0x2f97('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0x2f97('0x1')],'defaultValue':'#0091EA'},'description':{'type':Sequelize[_0x2f97('0x1')]}};
\ No newline at end of file
+var _0xda3f=['exports','STRING'];(function(_0x4df1d9,_0x241287){var _0x227135=function(_0x43238a){while(--_0x43238a){_0x4df1d9['push'](_0x4df1d9['shift']());}};_0x227135(++_0x241287);}(_0xda3f,0xec));var _0xfda3=function(_0x54a1d6,_0x58bcf2){_0x54a1d6=_0x54a1d6-0x0;var _0x1f77dd=_0xda3f[_0x54a1d6];return _0x1f77dd;};'use strict';var Sequelize=require('sequelize');module[_0xfda3('0x0')]={'name':{'type':Sequelize[_0xfda3('0x1')],'unique':'name','allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize['STRING'],'defaultValue':'#0091EA'},'description':{'type':Sequelize[_0xfda3('0x1')]}};
\ No newline at end of file
index 78d84e2..c165839 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf021=['autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','offset','limit','reject','save','update','then','Tags','end','error','stack','send','index','map','rawAttributes','fieldName','type','key','model','name','query','filters','attributes','fields','length','hasOwnProperty','order','sort','where','merge','filter','options','Tag','count','includeAll','include','rows','catch','show','intersection','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId'];(function(_0x4ae829,_0x2c842c){var _0x256b31=function(_0x34f104){while(--_0x34f104){_0x4ae829['push'](_0x4ae829['shift']());}};_0x256b31(++_0x2c842c);}(_0xf021,0x18f));var _0x1f02=function(_0x2f2ed0,_0x1c6435){_0x2f2ed0=_0x2f2ed0-0x0;var _0x250b0d=_0xf021[_0x2f2ed0];return _0x250b0d;};'use strict';var emlformat=require(_0x1f02('0x0'));var rimraf=require(_0x1f02('0x1'));var zipdir=require(_0x1f02('0x2'));var jsonpatch=require(_0x1f02('0x3'));var rp=require(_0x1f02('0x4'));var moment=require('moment');var BPromise=require(_0x1f02('0x5'));var Mustache=require('mustache');var util=require(_0x1f02('0x6'));var path=require(_0x1f02('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x1f02('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1f02('0x9'));var squel=require(_0x1f02('0xa'));var crypto=require(_0x1f02('0xb'));var jsforce=require(_0x1f02('0xc'));var deskjs=require(_0x1f02('0xd'));var toCsv=require('to-csv');var querystring=require(_0x1f02('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x1f02('0xf'));var as=require(_0x1f02('0x10'));var hardwareService=require(_0x1f02('0x11'));var logger=require(_0x1f02('0x12'))(_0x1f02('0x13'));var utils=require('../../config/utils');var config=require(_0x1f02('0x14'));var licenseUtil=require(_0x1f02('0x15'));var db=require(_0x1f02('0x16'))['db'];function respondWithStatusCode(_0x56a2c2,_0x24e9b8){_0x24e9b8=_0x24e9b8||0xcc;return function(_0x1ac6eb){if(_0x1ac6eb){return _0x56a2c2[_0x1f02('0x17')](_0x24e9b8);}return _0x56a2c2['status'](_0x24e9b8)['end']();};}function respondWithResult(_0x4974bd,_0x11ba7e){_0x11ba7e=_0x11ba7e||0xc8;return function(_0x2c08ad){if(_0x2c08ad){return _0x4974bd[_0x1f02('0x18')](_0x11ba7e)[_0x1f02('0x19')](_0x2c08ad);}};}function respondWithFilteredResult(_0x1c16ce,_0x45bae1){return function(_0x440328){if(_0x440328){var _0x3b0a3d=typeof _0x45bae1['offset']===_0x1f02('0x1a')&&typeof _0x45bae1['limit']==='undefined';var _0x4a66a5=_0x440328['count'];var _0x4d1e4f=_0x3b0a3d?0x0:_0x45bae1[_0x1f02('0x1b')];var _0x3033a2=_0x3b0a3d?_0x440328['count']:_0x45bae1[_0x1f02('0x1b')]+_0x45bae1[_0x1f02('0x1c')];var _0x356444;if(_0x3033a2>=_0x4a66a5){_0x3033a2=_0x4a66a5;_0x356444=0xc8;}else{_0x356444=0xce;}_0x1c16ce[_0x1f02('0x18')](_0x356444);return _0x1c16ce['set']('Content-Range',_0x4d1e4f+'-'+_0x3033a2+'/'+_0x4a66a5)[_0x1f02('0x19')](_0x440328);}return null;};}function patchUpdates(_0x37393a){return function(_0x5e78c2){try{jsonpatch['apply'](_0x5e78c2,_0x37393a,!![]);}catch(_0x339c29){return BPromise[_0x1f02('0x1d')](_0x339c29);}return _0x5e78c2[_0x1f02('0x1e')]();};}function saveUpdates(_0xbabbd7,_0x480297){return function(_0x12c4af){if(_0x12c4af){return _0x12c4af[_0x1f02('0x1f')](_0xbabbd7)[_0x1f02('0x20')](function(_0x2f422c){return _0x2f422c;});}return null;};}function removeEntity(_0x43b3e7,_0x134398){return function(_0x1328ea){if(_0x1328ea){return _0x1328ea['destroy']()[_0x1f02('0x20')](function(){var _0x3a8c57=_0x1328ea['get']({'plain':!![]});var _0x25a8d1=_0x1f02('0x21');return db['UserProfileResource']['destroy']({'where':{'type':_0x25a8d1,'resourceId':_0x3a8c57['id']}})[_0x1f02('0x20')](function(){return _0x1328ea;});})[_0x1f02('0x20')](function(){_0x43b3e7[_0x1f02('0x18')](0xcc)[_0x1f02('0x22')]();});}};}function handleEntityNotFound(_0x3f5c5e,_0x3f5577){return function(_0x297cf4){if(!_0x297cf4){_0x3f5c5e['sendStatus'](0x194);}return _0x297cf4;};}function handleError(_0x4d5f7e,_0x4e04f2){_0x4e04f2=_0x4e04f2||0x1f4;return function(_0x3ef4bf){logger[_0x1f02('0x23')](_0x3ef4bf[_0x1f02('0x24')]);if(_0x3ef4bf['name']){delete _0x3ef4bf['name'];}_0x4d5f7e[_0x1f02('0x18')](_0x4e04f2)[_0x1f02('0x25')](_0x3ef4bf);};}exports[_0x1f02('0x26')]=function(_0x433a1e,_0x220345){var _0x3080a6={},_0x442333={},_0x23fa22={'count':0x0,'rows':[]};var _0x1c2a0d=_[_0x1f02('0x27')](db['Tag'][_0x1f02('0x28')],function(_0x5ab7a2){return{'name':_0x5ab7a2[_0x1f02('0x29')],'type':_0x5ab7a2[_0x1f02('0x2a')][_0x1f02('0x2b')]};});_0x442333[_0x1f02('0x2c')]=_[_0x1f02('0x27')](_0x1c2a0d,_0x1f02('0x2d'));_0x442333['query']=_['keys'](_0x433a1e[_0x1f02('0x2e')]);_0x442333[_0x1f02('0x2f')]=_['intersection'](_0x442333[_0x1f02('0x2c')],_0x442333['query']);_0x3080a6[_0x1f02('0x30')]=_['intersection'](_0x442333[_0x1f02('0x2c')],qs['fields'](_0x433a1e['query'][_0x1f02('0x31')]));_0x3080a6[_0x1f02('0x30')]=_0x3080a6[_0x1f02('0x30')][_0x1f02('0x32')]?_0x3080a6['attributes']:_0x442333[_0x1f02('0x2c')];if(!_0x433a1e[_0x1f02('0x2e')][_0x1f02('0x33')]('nolimit')){_0x3080a6[_0x1f02('0x1c')]=qs[_0x1f02('0x1c')](_0x433a1e[_0x1f02('0x2e')][_0x1f02('0x1c')]);_0x3080a6[_0x1f02('0x1b')]=qs[_0x1f02('0x1b')](_0x433a1e['query'][_0x1f02('0x1b')]);}_0x3080a6[_0x1f02('0x34')]=qs[_0x1f02('0x35')](_0x433a1e['query'][_0x1f02('0x35')]);_0x3080a6['where']=qs[_0x1f02('0x2f')](_['pick'](_0x433a1e['query'],_0x442333[_0x1f02('0x2f')]),_0x1c2a0d);if(_0x433a1e['query']['filter']){_0x3080a6[_0x1f02('0x36')]=_[_0x1f02('0x37')](_0x3080a6[_0x1f02('0x36')],{'$or':_[_0x1f02('0x27')](_0x1c2a0d,function(_0x47ee27){if(_0x47ee27[_0x1f02('0x2a')]!=='VIRTUAL'){var _0x2cd179={};_0x2cd179[_0x47ee27[_0x1f02('0x2d')]]={'$like':'%'+_0x433a1e[_0x1f02('0x2e')][_0x1f02('0x38')]+'%'};return _0x2cd179;}})});}_0x3080a6=_[_0x1f02('0x37')]({},_0x3080a6,_0x433a1e[_0x1f02('0x39')]);var _0xb4fac5={'where':_0x3080a6[_0x1f02('0x36')]};return db[_0x1f02('0x3a')]['count'](_0xb4fac5)[_0x1f02('0x20')](function(_0x5aab10){_0x23fa22[_0x1f02('0x3b')]=_0x5aab10;if(_0x433a1e['query'][_0x1f02('0x3c')]){_0x3080a6[_0x1f02('0x3d')]=[{'all':!![]}];}return db[_0x1f02('0x3a')]['findAll'](_0x3080a6);})['then'](function(_0x1c3f09){_0x23fa22[_0x1f02('0x3e')]=_0x1c3f09;return _0x23fa22;})[_0x1f02('0x20')](respondWithFilteredResult(_0x220345,_0x3080a6))[_0x1f02('0x3f')](handleError(_0x220345,null));};exports[_0x1f02('0x40')]=function(_0x15fb49,_0x23733c){var _0x11f31f={'raw':!![],'where':{'id':_0x15fb49['params']['id']}},_0x391b57={};_0x391b57[_0x1f02('0x2c')]=_['keys'](db['Tag'][_0x1f02('0x28')]);_0x391b57['query']=_['keys'](_0x15fb49[_0x1f02('0x2e')]);_0x391b57['filters']=_['intersection'](_0x391b57[_0x1f02('0x2c')],_0x391b57[_0x1f02('0x2e')]);_0x11f31f['attributes']=_[_0x1f02('0x41')](_0x391b57[_0x1f02('0x2c')],qs[_0x1f02('0x31')](_0x15fb49[_0x1f02('0x2e')]['fields']));_0x11f31f[_0x1f02('0x30')]=_0x11f31f[_0x1f02('0x30')][_0x1f02('0x32')]?_0x11f31f[_0x1f02('0x30')]:_0x391b57[_0x1f02('0x2c')];if(_0x15fb49[_0x1f02('0x2e')][_0x1f02('0x3c')]){_0x11f31f[_0x1f02('0x3d')]=[{'all':!![]}];}_0x11f31f=_[_0x1f02('0x37')]({},_0x11f31f,_0x15fb49[_0x1f02('0x39')]);return db[_0x1f02('0x3a')][_0x1f02('0x42')](_0x11f31f)[_0x1f02('0x20')](handleEntityNotFound(_0x23733c,null))[_0x1f02('0x20')](respondWithResult(_0x23733c,null))['catch'](handleError(_0x23733c,null));};exports[_0x1f02('0x43')]=function(_0x50d5ed,_0x37759d){return db['Tag'][_0x1f02('0x43')](_0x50d5ed[_0x1f02('0x44')],{})[_0x1f02('0x20')](function(_0x32dac3){var _0x40bf99=_0x50d5ed[_0x1f02('0x45')][_0x1f02('0x46')]({'plain':!![]});if(!_0x40bf99)throw new Error(_0x1f02('0x47'));if(_0x40bf99[_0x1f02('0x48')]===_0x1f02('0x45')){var _0x1241c5=_0x32dac3['get']({'plain':!![]});var _0x45e71d=_0x1f02('0x21');return db[_0x1f02('0x49')][_0x1f02('0x42')]({'where':{'name':_0x45e71d,'userProfileId':_0x40bf99[_0x1f02('0x4a')]},'raw':!![]})[_0x1f02('0x20')](function(_0x2201b4){if(_0x2201b4&&_0x2201b4[_0x1f02('0x4b')]===0x0){return db[_0x1f02('0x4c')]['create']({'name':_0x1241c5[_0x1f02('0x2d')],'resourceId':_0x1241c5['id'],'type':_0x2201b4[_0x1f02('0x2d')],'sectionId':_0x2201b4['id']},{})[_0x1f02('0x20')](function(){return _0x32dac3;});}else{return _0x32dac3;}})[_0x1f02('0x3f')](function(_0x3cdf8c){logger['error'](_0x1f02('0x4d'),_0x3cdf8c);throw _0x3cdf8c;});}return _0x32dac3;})['then'](respondWithResult(_0x37759d,0xc9))[_0x1f02('0x3f')](handleError(_0x37759d,null));};exports[_0x1f02('0x1f')]=function(_0x2240d1,_0x18d80d){if(_0x2240d1[_0x1f02('0x44')]['id']){delete _0x2240d1[_0x1f02('0x44')]['id'];}return db[_0x1f02('0x3a')][_0x1f02('0x42')]({'where':{'id':_0x2240d1[_0x1f02('0x4e')]['id']}})[_0x1f02('0x20')](handleEntityNotFound(_0x18d80d,null))['then'](saveUpdates(_0x2240d1['body'],null))['then'](respondWithResult(_0x18d80d,null))[_0x1f02('0x3f')](handleError(_0x18d80d,null));};exports['destroy']=function(_0x238911,_0x449d58){return db['Tag'][_0x1f02('0x42')]({'where':{'id':_0x238911['params']['id']}})['then'](handleEntityNotFound(_0x449d58,null))['then'](removeEntity(_0x449d58,null))[_0x1f02('0x3f')](handleError(_0x449d58,null));};
\ No newline at end of file
+var _0x89c3=['find','userProfileId','autoAssociation','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','lodash','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','sendStatus','end','json','offset','undefined','limit','status','set','Content-Range','reject','save','then','destroy','get','Tags','UserProfileResource','error','stack','name','send','index','map','Tag','rawAttributes','fieldName','type','key','query','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','VIRTUAL','options','count','includeAll','include','findAll','rows','show','params','keys','length','catch','create','body','user','role','UserProfileSection'];(function(_0x2c7900,_0x44f3b6){var _0x35c02f=function(_0x343749){while(--_0x343749){_0x2c7900['push'](_0x2c7900['shift']());}};_0x35c02f(++_0x44f3b6);}(_0x89c3,0xff));var _0x389c=function(_0x985314,_0x9068a7){_0x985314=_0x985314-0x0;var _0x4575f5=_0x89c3[_0x985314];return _0x4575f5;};'use strict';var emlformat=require(_0x389c('0x0'));var rimraf=require(_0x389c('0x1'));var zipdir=require(_0x389c('0x2'));var jsonpatch=require(_0x389c('0x3'));var rp=require(_0x389c('0x4'));var moment=require(_0x389c('0x5'));var BPromise=require(_0x389c('0x6'));var Mustache=require(_0x389c('0x7'));var util=require('util');var path=require(_0x389c('0x8'));var sox=require('sox');var csv=require(_0x389c('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x389c('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x389c('0xb'));var deskjs=require(_0x389c('0xc'));var toCsv=require(_0x389c('0x9'));var querystring=require(_0x389c('0xd'));var Papa=require(_0x389c('0xe'));var Redis=require(_0x389c('0xf'));var authService=require(_0x389c('0x10'));var qs=require(_0x389c('0x11'));var as=require(_0x389c('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x389c('0x13'))(_0x389c('0x14'));var utils=require(_0x389c('0x15'));var config=require(_0x389c('0x16'));var licenseUtil=require(_0x389c('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5d7aa7,_0x2a2d7d){_0x2a2d7d=_0x2a2d7d||0xcc;return function(_0x1de33a){if(_0x1de33a){return _0x5d7aa7[_0x389c('0x18')](_0x2a2d7d);}return _0x5d7aa7['status'](_0x2a2d7d)[_0x389c('0x19')]();};}function respondWithResult(_0x4bde6d,_0x36e855){_0x36e855=_0x36e855||0xc8;return function(_0x1b1618){if(_0x1b1618){return _0x4bde6d['status'](_0x36e855)[_0x389c('0x1a')](_0x1b1618);}};}function respondWithFilteredResult(_0x205e4f,_0x36c118){return function(_0x5c0756){if(_0x5c0756){var _0x4238e6=typeof _0x36c118[_0x389c('0x1b')]===_0x389c('0x1c')&&typeof _0x36c118[_0x389c('0x1d')]===_0x389c('0x1c');var _0x555481=_0x5c0756['count'];var _0x5a2b10=_0x4238e6?0x0:_0x36c118[_0x389c('0x1b')];var _0x2e23d2=_0x4238e6?_0x5c0756['count']:_0x36c118[_0x389c('0x1b')]+_0x36c118[_0x389c('0x1d')];var _0x421f5f;if(_0x2e23d2>=_0x555481){_0x2e23d2=_0x555481;_0x421f5f=0xc8;}else{_0x421f5f=0xce;}_0x205e4f[_0x389c('0x1e')](_0x421f5f);return _0x205e4f[_0x389c('0x1f')](_0x389c('0x20'),_0x5a2b10+'-'+_0x2e23d2+'/'+_0x555481)[_0x389c('0x1a')](_0x5c0756);}return null;};}function patchUpdates(_0x3110c1){return function(_0x239de1){try{jsonpatch['apply'](_0x239de1,_0x3110c1,!![]);}catch(_0x3d5fd1){return BPromise[_0x389c('0x21')](_0x3d5fd1);}return _0x239de1[_0x389c('0x22')]();};}function saveUpdates(_0xef720,_0x34bd04){return function(_0x2e1012){if(_0x2e1012){return _0x2e1012['update'](_0xef720)[_0x389c('0x23')](function(_0x152ba7){return _0x152ba7;});}return null;};}function removeEntity(_0xfe443c,_0x2dcd88){return function(_0x54869a){if(_0x54869a){return _0x54869a[_0x389c('0x24')]()[_0x389c('0x23')](function(){var _0x4e09c0=_0x54869a[_0x389c('0x25')]({'plain':!![]});var _0x5d1c4b=_0x389c('0x26');return db[_0x389c('0x27')][_0x389c('0x24')]({'where':{'type':_0x5d1c4b,'resourceId':_0x4e09c0['id']}})[_0x389c('0x23')](function(){return _0x54869a;});})[_0x389c('0x23')](function(){_0xfe443c['status'](0xcc)[_0x389c('0x19')]();});}};}function handleEntityNotFound(_0xcc1b60,_0x29e9f8){return function(_0x23382f){if(!_0x23382f){_0xcc1b60[_0x389c('0x18')](0x194);}return _0x23382f;};}function handleError(_0x48c79e,_0x3846a3){_0x3846a3=_0x3846a3||0x1f4;return function(_0x4e30da){logger[_0x389c('0x28')](_0x4e30da[_0x389c('0x29')]);if(_0x4e30da[_0x389c('0x2a')]){delete _0x4e30da[_0x389c('0x2a')];}_0x48c79e['status'](_0x3846a3)[_0x389c('0x2b')](_0x4e30da);};}exports[_0x389c('0x2c')]=function(_0x594f6a,_0x6f0166){var _0x3c13dd={},_0x3e13a2={},_0xa1cf2b={'count':0x0,'rows':[]};var _0x174c89=_[_0x389c('0x2d')](db[_0x389c('0x2e')][_0x389c('0x2f')],function(_0x22220d){return{'name':_0x22220d[_0x389c('0x30')],'type':_0x22220d[_0x389c('0x31')][_0x389c('0x32')]};});_0x3e13a2['model']=_['map'](_0x174c89,'name');_0x3e13a2[_0x389c('0x33')]=_['keys'](_0x594f6a[_0x389c('0x33')]);_0x3e13a2['filters']=_[_0x389c('0x34')](_0x3e13a2[_0x389c('0x35')],_0x3e13a2[_0x389c('0x33')]);_0x3c13dd[_0x389c('0x36')]=_['intersection'](_0x3e13a2[_0x389c('0x35')],qs[_0x389c('0x37')](_0x594f6a[_0x389c('0x33')][_0x389c('0x37')]));_0x3c13dd[_0x389c('0x36')]=_0x3c13dd[_0x389c('0x36')]['length']?_0x3c13dd['attributes']:_0x3e13a2[_0x389c('0x35')];if(!_0x594f6a[_0x389c('0x33')][_0x389c('0x38')](_0x389c('0x39'))){_0x3c13dd[_0x389c('0x1d')]=qs[_0x389c('0x1d')](_0x594f6a[_0x389c('0x33')][_0x389c('0x1d')]);_0x3c13dd[_0x389c('0x1b')]=qs[_0x389c('0x1b')](_0x594f6a[_0x389c('0x33')][_0x389c('0x1b')]);}_0x3c13dd[_0x389c('0x3a')]=qs['sort'](_0x594f6a['query'][_0x389c('0x3b')]);_0x3c13dd[_0x389c('0x3c')]=qs[_0x389c('0x3d')](_[_0x389c('0x3e')](_0x594f6a[_0x389c('0x33')],_0x3e13a2[_0x389c('0x3d')]),_0x174c89);if(_0x594f6a['query']['filter']){_0x3c13dd[_0x389c('0x3c')]=_[_0x389c('0x3f')](_0x3c13dd[_0x389c('0x3c')],{'$or':_['map'](_0x174c89,function(_0x39dcd6){if(_0x39dcd6[_0x389c('0x31')]!==_0x389c('0x40')){var _0x3f85de={};_0x3f85de[_0x39dcd6[_0x389c('0x2a')]]={'$like':'%'+_0x594f6a[_0x389c('0x33')]['filter']+'%'};return _0x3f85de;}})});}_0x3c13dd=_[_0x389c('0x3f')]({},_0x3c13dd,_0x594f6a[_0x389c('0x41')]);var _0x3bb25e={'where':_0x3c13dd[_0x389c('0x3c')]};return db['Tag'][_0x389c('0x42')](_0x3bb25e)['then'](function(_0x2dbce5){_0xa1cf2b[_0x389c('0x42')]=_0x2dbce5;if(_0x594f6a[_0x389c('0x33')][_0x389c('0x43')]){_0x3c13dd[_0x389c('0x44')]=[{'all':!![]}];}return db[_0x389c('0x2e')][_0x389c('0x45')](_0x3c13dd);})[_0x389c('0x23')](function(_0x2fc644){_0xa1cf2b[_0x389c('0x46')]=_0x2fc644;return _0xa1cf2b;})[_0x389c('0x23')](respondWithFilteredResult(_0x6f0166,_0x3c13dd))['catch'](handleError(_0x6f0166,null));};exports[_0x389c('0x47')]=function(_0x415534,_0x515905){var _0x38995f={'raw':!![],'where':{'id':_0x415534[_0x389c('0x48')]['id']}},_0x59df4f={};_0x59df4f[_0x389c('0x35')]=_[_0x389c('0x49')](db[_0x389c('0x2e')][_0x389c('0x2f')]);_0x59df4f[_0x389c('0x33')]=_[_0x389c('0x49')](_0x415534[_0x389c('0x33')]);_0x59df4f[_0x389c('0x3d')]=_[_0x389c('0x34')](_0x59df4f[_0x389c('0x35')],_0x59df4f[_0x389c('0x33')]);_0x38995f[_0x389c('0x36')]=_['intersection'](_0x59df4f['model'],qs[_0x389c('0x37')](_0x415534[_0x389c('0x33')][_0x389c('0x37')]));_0x38995f['attributes']=_0x38995f[_0x389c('0x36')][_0x389c('0x4a')]?_0x38995f[_0x389c('0x36')]:_0x59df4f[_0x389c('0x35')];if(_0x415534['query']['includeAll']){_0x38995f['include']=[{'all':!![]}];}_0x38995f=_['merge']({},_0x38995f,_0x415534[_0x389c('0x41')]);return db['Tag']['find'](_0x38995f)[_0x389c('0x23')](handleEntityNotFound(_0x515905,null))[_0x389c('0x23')](respondWithResult(_0x515905,null))[_0x389c('0x4b')](handleError(_0x515905,null));};exports[_0x389c('0x4c')]=function(_0x153db2,_0xd37a48){return db[_0x389c('0x2e')]['create'](_0x153db2[_0x389c('0x4d')],{})[_0x389c('0x23')](function(_0x28e449){var _0x10581a=_0x153db2[_0x389c('0x4e')][_0x389c('0x25')]({'plain':!![]});if(!_0x10581a)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x10581a[_0x389c('0x4f')]==='user'){var _0xf56fb2=_0x28e449['get']({'plain':!![]});var _0x26936d=_0x389c('0x26');return db[_0x389c('0x50')][_0x389c('0x51')]({'where':{'name':_0x26936d,'userProfileId':_0x10581a[_0x389c('0x52')]},'raw':!![]})[_0x389c('0x23')](function(_0x5ad065){if(_0x5ad065&&_0x5ad065[_0x389c('0x53')]===0x0){return db[_0x389c('0x27')]['create']({'name':_0xf56fb2[_0x389c('0x2a')],'resourceId':_0xf56fb2['id'],'type':_0x5ad065[_0x389c('0x2a')],'sectionId':_0x5ad065['id']},{})[_0x389c('0x23')](function(){return _0x28e449;});}else{return _0x28e449;}})['catch'](function(_0x393daa){logger[_0x389c('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x393daa);throw _0x393daa;});}return _0x28e449;})[_0x389c('0x23')](respondWithResult(_0xd37a48,0xc9))[_0x389c('0x4b')](handleError(_0xd37a48,null));};exports['update']=function(_0x165d81,_0x6bd59d){if(_0x165d81[_0x389c('0x4d')]['id']){delete _0x165d81[_0x389c('0x4d')]['id'];}return db[_0x389c('0x2e')][_0x389c('0x51')]({'where':{'id':_0x165d81[_0x389c('0x48')]['id']}})[_0x389c('0x23')](handleEntityNotFound(_0x6bd59d,null))[_0x389c('0x23')](saveUpdates(_0x165d81[_0x389c('0x4d')],null))['then'](respondWithResult(_0x6bd59d,null))[_0x389c('0x4b')](handleError(_0x6bd59d,null));};exports[_0x389c('0x24')]=function(_0x3c2469,_0x5edc1c){return db[_0x389c('0x2e')]['find']({'where':{'id':_0x3c2469['params']['id']}})[_0x389c('0x23')](handleEntityNotFound(_0x5edc1c,null))[_0x389c('0x23')](removeEntity(_0x5edc1c,null))[_0x389c('0x4b')](handleError(_0x5edc1c,null));};
\ No newline at end of file
index 4b99e1f..1adaba8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fec=['moment','bluebird','request-promise','rimraf','../../config/environment','define','Tag','lodash','../../config/logger','api'];(function(_0x5e275e,_0x190a72){var _0x969919=function(_0x351e1c){while(--_0x351e1c){_0x5e275e['push'](_0x5e275e['shift']());}};_0x969919(++_0x190a72);}(_0x5fec,0x6b));var _0xc5fe=function(_0x550f9a,_0x23fee6){_0x550f9a=_0x550f9a-0x0;var _0x5e4f84=_0x5fec[_0x550f9a];return _0x5e4f84;};'use strict';var _=require(_0xc5fe('0x0'));var util=require('util');var logger=require(_0xc5fe('0x1'))(_0xc5fe('0x2'));var moment=require(_0xc5fe('0x3'));var BPromise=require(_0xc5fe('0x4'));var rp=require(_0xc5fe('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc5fe('0x6'));var config=require(_0xc5fe('0x7'));var attributes=require('./tag.attributes');module['exports']=function(_0x218026,_0x263dd1){return _0x218026[_0xc5fe('0x8')](_0xc5fe('0x9'),attributes,{'tableName':'tools_tags','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1901=['./tag.attributes','exports','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x444d2f,_0x2927b9){var _0x18ae46=function(_0x257e84){while(--_0x257e84){_0x444d2f['push'](_0x444d2f['shift']());}};_0x18ae46(++_0x2927b9);}(_0x1901,0x1af));var _0x1190=function(_0x2aa0e7,_0x4e5145){_0x2aa0e7=_0x2aa0e7-0x0;var _0x1472c0=_0x1901[_0x2aa0e7];return _0x1472c0;};'use strict';var _=require(_0x1190('0x0'));var util=require(_0x1190('0x1'));var logger=require(_0x1190('0x2'))('api');var moment=require(_0x1190('0x3'));var BPromise=require(_0x1190('0x4'));var rp=require(_0x1190('0x5'));var fs=require('fs');var path=require(_0x1190('0x6'));var rimraf=require(_0x1190('0x7'));var config=require(_0x1190('0x8'));var attributes=require(_0x1190('0x9'));module[_0x1190('0xa')]=function(_0x23e690,_0x149d90){return _0x23e690['define']('Tag',attributes,{'tableName':'tools_tags','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5c7e997..375b218 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe181=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','then','info','Tag,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash'];(function(_0x1ab180,_0x382b2c){var _0xfb2c2d=function(_0x1c5fd3){while(--_0x1c5fd3){_0x1ab180['push'](_0x1ab180['shift']());}};_0xfb2c2d(++_0x382b2c);}(_0xe181,0x68));var _0x1e18=function(_0x45b190,_0x6297da){_0x45b190=_0x45b190-0x0;var _0x46234d=_0xe181[_0x45b190];return _0x46234d;};'use strict';var _=require(_0x1e18('0x0'));var util=require('util');var moment=require(_0x1e18('0x1'));var BPromise=require(_0x1e18('0x2'));var rs=require(_0x1e18('0x3'));var fs=require('fs');var Redis=require(_0x1e18('0x4'));var db=require(_0x1e18('0x5'))['db'];var utils=require(_0x1e18('0x6'));var logger=require(_0x1e18('0x7'))('rpc');var config=require(_0x1e18('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x1e18('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x182c98,_0x46ba95,_0x25b786){return new BPromise(function(_0x9f9541,_0x398f77){return client['request'](_0x182c98,_0x25b786)[_0x1e18('0xa')](function(_0x40fda9){logger[_0x1e18('0xb')](_0x1e18('0xc'),_0x46ba95,_0x1e18('0xd'));logger[_0x1e18('0xe')]('Tag,\x20%s,\x20%s,\x20%s',_0x46ba95,_0x1e18('0xd'),JSON[_0x1e18('0xf')](_0x40fda9));if(_0x40fda9[_0x1e18('0x10')]){if(_0x40fda9[_0x1e18('0x10')][_0x1e18('0x11')]===0x1f4){logger[_0x1e18('0x10')](_0x1e18('0xc'),_0x46ba95,_0x40fda9[_0x1e18('0x10')]['message']);return _0x398f77(_0x40fda9[_0x1e18('0x10')]['message']);}logger[_0x1e18('0x10')]('Tag,\x20%s,\x20%s',_0x46ba95,_0x40fda9[_0x1e18('0x10')][_0x1e18('0x12')]);return _0x9f9541(_0x40fda9[_0x1e18('0x10')][_0x1e18('0x12')]);}else{logger[_0x1e18('0xb')](_0x1e18('0xc'),_0x46ba95,_0x1e18('0xd'));_0x9f9541(_0x40fda9[_0x1e18('0x13')][_0x1e18('0x12')]);}})[_0x1e18('0x14')](function(_0x12ef98){logger[_0x1e18('0x10')](_0x1e18('0xc'),_0x46ba95,_0x12ef98);_0x398f77(_0x12ef98);});});}
\ No newline at end of file
+var _0x919e=['client','http','then','info','request\x20sent','debug','Tag,\x20%s,\x20%s,\x20%s','stringify','error','Tag,\x20%s,\x20%s','message','lodash','util','moment','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x254e12,_0x57506d){var _0x4de3bd=function(_0x3d8498){while(--_0x3d8498){_0x254e12['push'](_0x254e12['shift']());}};_0x4de3bd(++_0x57506d);}(_0x919e,0x1d7));var _0xe919=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x919e[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xe919('0x0'));var util=require(_0xe919('0x1'));var moment=require(_0xe919('0x2'));var BPromise=require('bluebird');var rs=require(_0xe919('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xe919('0x4'));var logger=require(_0xe919('0x5'))(_0xe919('0x6'));var config=require(_0xe919('0x7'));var jayson=require(_0xe919('0x8'));var client=jayson[_0xe919('0x9')][_0xe919('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x493b47,_0x7c1fa4,_0x2ceb41){return new BPromise(function(_0x57c3fe,_0x44d418){return client['request'](_0x493b47,_0x2ceb41)[_0xe919('0xb')](function(_0x22ea65){logger[_0xe919('0xc')]('Tag,\x20%s,\x20%s',_0x7c1fa4,_0xe919('0xd'));logger[_0xe919('0xe')](_0xe919('0xf'),_0x7c1fa4,'request\x20sent',JSON[_0xe919('0x10')](_0x22ea65));if(_0x22ea65['error']){if(_0x22ea65['error']['code']===0x1f4){logger[_0xe919('0x11')](_0xe919('0x12'),_0x7c1fa4,_0x22ea65[_0xe919('0x11')]['message']);return _0x44d418(_0x22ea65['error'][_0xe919('0x13')]);}logger[_0xe919('0x11')]('Tag,\x20%s,\x20%s',_0x7c1fa4,_0x22ea65[_0xe919('0x11')][_0xe919('0x13')]);return _0x57c3fe(_0x22ea65[_0xe919('0x11')][_0xe919('0x13')]);}else{logger[_0xe919('0xc')](_0xe919('0x12'),_0x7c1fa4,_0xe919('0xd'));_0x57c3fe(_0x22ea65['result'][_0xe919('0x13')]);}})['catch'](function(_0x5ba7ad){logger[_0xe919('0x11')](_0xe919('0x12'),_0x7c1fa4,_0x5ba7ad);_0x44d418(_0x5ba7ad);});});}
\ No newline at end of file
index d3a3ffc..78386a7 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(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3635ce,_0x33a6f9){_0x3635ce=_0x3635ce-0x0;var _0x97ecd0=_0xa9e0[_0x3635ce];return _0x97ecd0;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/queues',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/queues',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0xf')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x11')]);router['put'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router[_0x0a9e('0x13')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller['destroy']);router[_0x0a9e('0x13')]('/:id/queues',auth[_0x0a9e('0xd')](),controller['removeQueues']);router[_0x0a9e('0x13')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./team.controller','get','index','/:id','getQueues','/:id/users','isAuthenticated','getAgents','post','addQueues','addAgents','update','delete','removeAgents','multer','util','path'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47e7cb,_0x4c1b8d){_0x47e7cb=_0x47e7cb-0x0;var _0x2a8874=_0xa9e0[_0x47e7cb];return _0x2a8874;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['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 9470019..a54f2d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['name','sequelize','STRING'];(function(_0x4aedf6,_0x5934b1){var _0x22852a=function(_0x9864c4){while(--_0x9864c4){_0x4aedf6['push'](_0x4aedf6['shift']());}};_0x22852a(++_0x5934b1);}(_0xb10b,0x12a));var _0xbb10=function(_0x5e8c32,_0x1b1f3f){_0x5e8c32=_0x5e8c32-0x0;var _0x595f7b=_0xb10b[_0x5e8c32];return _0x595f7b;};'use strict';var Sequelize=require(_0xbb10('0x0'));module['exports']={'name':{'type':Sequelize[_0xbb10('0x1')],'allowNull':![],'unique':_0xbb10('0x2')},'description':{'type':Sequelize[_0xbb10('0x1')]}};
\ No newline at end of file
+var _0xd8b0=['exports','sequelize'];(function(_0x1acef1,_0x3810cc){var _0x55b7bf=function(_0x550408){while(--_0x550408){_0x1acef1['push'](_0x1acef1['shift']());}};_0x55b7bf(++_0x3810cc);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x0d8b('0x0'));module[_0x0d8b('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 23824cd..d501842 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5efa=['undefined','count','offset','set','Content-Range','apply','reject','then','sendStatus','error','stack','name','send','index','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','Team','includeAll','include','catch','params','rawAttributes','keys','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','destroy','sequelize','transaction','SELECT\x20UserId\x20FROM\x20user_has_teams\x20WHERE\x20TeamId\x20=\x20','Sequelize','QueryTypes','SELECT','VoiceQueueId','MailQueueId','SELECT\x20SmsQueueId\x20FROM\x20team_has_sms_queues\x20WHERE\x20TeamId\x20=\x20','SmsQueueId','SELECT\x20ChatQueueId\x20FROM\x20team_has_chat_queues\x20WHERE\x20TeamId\x20=\x20','UserChatQueue','SELECT\x20FaxQueueId\x20FROM\x20team_has_fax_queues\x20WHERE\x20TeamId\x20=\x20','UserFaxQueue','UserOpenchannelQueue','TeamVoicePrefix','VoicePrefixId','Teams','end','getQueues','findOne','channel','isValidChannel','ValidationError','capitalize','toLowerCase','Queue','length','order','Queues','addQueues','Unknown\x20channel','ids','removeQueues','remove','Voice','Chat','Sms','Fax','Whatsapp','through','penalty','QueueId','TeamVoiceQueue','User','findOrCreate','emit','Queue:save','findAll','online','interface','UserVoiceQueueRt','upsert','isNil','format','SIP/%s','voicePause','all','UserVoicePrefix','addAgents','removeAgents','isArray','Mail','Openchannel','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./team.socket','status','json','limit'];(function(_0x3719cf,_0x4c9fc9){var _0x23d659=function(_0x1ddbbb){while(--_0x1ddbbb){_0x3719cf['push'](_0x3719cf['shift']());}};_0x23d659(++_0x4c9fc9);}(_0x5efa,0x74));var _0xa5ef=function(_0x1f8f84,_0x9659e1){_0x1f8f84=_0x1f8f84-0x0;var _0x538a96=_0x5efa[_0x1f8f84];return _0x538a96;};'use strict';var emlformat=require(_0xa5ef('0x0'));var rimraf=require(_0xa5ef('0x1'));var zipdir=require(_0xa5ef('0x2'));var jsonpatch=require(_0xa5ef('0x3'));var rp=require(_0xa5ef('0x4'));var moment=require(_0xa5ef('0x5'));var BPromise=require(_0xa5ef('0x6'));var Mustache=require(_0xa5ef('0x7'));var util=require(_0xa5ef('0x8'));var path=require(_0xa5ef('0x9'));var sox=require(_0xa5ef('0xa'));var csv=require(_0xa5ef('0xb'));var ejs=require(_0xa5ef('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xa5ef('0xd'));var crypto=require('crypto');var jsforce=require(_0xa5ef('0xe'));var deskjs=require(_0xa5ef('0xf'));var toCsv=require(_0xa5ef('0xb'));var querystring=require(_0xa5ef('0x10'));var Papa=require(_0xa5ef('0x11'));var Redis=require(_0xa5ef('0x12'));var authService=require(_0xa5ef('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xa5ef('0x14'));var hardwareService=require(_0xa5ef('0x15'));var logger=require('../../config/logger')(_0xa5ef('0x16'));var utils=require('../../config/utils');var config=require(_0xa5ef('0x17'));var licenseUtil=require(_0xa5ef('0x18'));var db=require(_0xa5ef('0x19'))['db'];config[_0xa5ef('0x1a')]=_[_0xa5ef('0x1b')](config[_0xa5ef('0x1a')],{'host':_0xa5ef('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa5ef('0x1a')]));require(_0xa5ef('0x1d'))['register'](socket);function respondWithStatusCode(_0x3267ef,_0x35652b){_0x35652b=_0x35652b||0xcc;return function(_0x32a463){if(_0x32a463){return _0x3267ef['sendStatus'](_0x35652b);}return _0x3267ef[_0xa5ef('0x1e')](_0x35652b)['end']();};}function respondWithResult(_0x47948d,_0x4b83fd){_0x4b83fd=_0x4b83fd||0xc8;return function(_0x283c0d){if(_0x283c0d){return _0x47948d['status'](_0x4b83fd)[_0xa5ef('0x1f')](_0x283c0d);}};}function respondWithFilteredResult(_0x2b9242,_0x5990aa){return function(_0x344d2e){if(_0x344d2e){var _0x552d70=typeof _0x5990aa['offset']==='undefined'&&typeof _0x5990aa[_0xa5ef('0x20')]===_0xa5ef('0x21');var _0x33f7b3=_0x344d2e[_0xa5ef('0x22')];var _0x376dda=_0x552d70?0x0:_0x5990aa[_0xa5ef('0x23')];var _0x23ded8=_0x552d70?_0x344d2e[_0xa5ef('0x22')]:_0x5990aa[_0xa5ef('0x23')]+_0x5990aa[_0xa5ef('0x20')];var _0x11a642;if(_0x23ded8>=_0x33f7b3){_0x23ded8=_0x33f7b3;_0x11a642=0xc8;}else{_0x11a642=0xce;}_0x2b9242['status'](_0x11a642);return _0x2b9242[_0xa5ef('0x24')](_0xa5ef('0x25'),_0x376dda+'-'+_0x23ded8+'/'+_0x33f7b3)[_0xa5ef('0x1f')](_0x344d2e);}return null;};}function patchUpdates(_0x2a95fe){return function(_0x130c0e){try{jsonpatch[_0xa5ef('0x26')](_0x130c0e,_0x2a95fe,!![]);}catch(_0x204f9f){return BPromise[_0xa5ef('0x27')](_0x204f9f);}return _0x130c0e['save']();};}function saveUpdates(_0x3d831e,_0x4fb2ec){return function(_0x2a0deb){if(_0x2a0deb){return _0x2a0deb['update'](_0x3d831e)[_0xa5ef('0x28')](function(_0x4131f0){return _0x4131f0;});}return null;};}function handleEntityNotFound(_0xb5eb0,_0x5ef82e){return function(_0x170317){if(!_0x170317){_0xb5eb0[_0xa5ef('0x29')](0x194);}return _0x170317;};}function handleError(_0xfbf04d,_0x342b5e){_0x342b5e=_0x342b5e||0x1f4;return function(_0x340933){logger[_0xa5ef('0x2a')](_0x340933[_0xa5ef('0x2b')]);if(_0x340933[_0xa5ef('0x2c')]){delete _0x340933[_0xa5ef('0x2c')];}_0xfbf04d['status'](_0x342b5e)[_0xa5ef('0x2d')](_0x340933);};}exports[_0xa5ef('0x2e')]=function(_0xdce27a,_0x3b4bd1){var _0x2f4661={},_0x3bfbdf={},_0x3f1c2e={'count':0x0,'rows':[]};var _0x521090=_['map'](db['Team']['rawAttributes'],function(_0x101c21){return{'name':_0x101c21[_0xa5ef('0x2f')],'type':_0x101c21[_0xa5ef('0x30')][_0xa5ef('0x31')]};});_0x3bfbdf[_0xa5ef('0x32')]=_[_0xa5ef('0x33')](_0x521090,_0xa5ef('0x2c'));_0x3bfbdf[_0xa5ef('0x34')]=_['keys'](_0xdce27a['query']);_0x3bfbdf[_0xa5ef('0x35')]=_[_0xa5ef('0x36')](_0x3bfbdf['model'],_0x3bfbdf[_0xa5ef('0x34')]);_0x2f4661[_0xa5ef('0x37')]=_[_0xa5ef('0x36')](_0x3bfbdf['model'],qs['fields'](_0xdce27a['query'][_0xa5ef('0x38')]));_0x2f4661[_0xa5ef('0x37')]=_0x2f4661[_0xa5ef('0x37')]['length']?_0x2f4661[_0xa5ef('0x37')]:_0x3bfbdf[_0xa5ef('0x32')];if(!_0xdce27a[_0xa5ef('0x34')][_0xa5ef('0x39')](_0xa5ef('0x3a'))){_0x2f4661[_0xa5ef('0x20')]=qs['limit'](_0xdce27a[_0xa5ef('0x34')][_0xa5ef('0x20')]);_0x2f4661[_0xa5ef('0x23')]=qs[_0xa5ef('0x23')](_0xdce27a['query']['offset']);}_0x2f4661['order']=qs[_0xa5ef('0x3b')](_0xdce27a['query'][_0xa5ef('0x3b')]);_0x2f4661[_0xa5ef('0x3c')]=qs[_0xa5ef('0x35')](_[_0xa5ef('0x3d')](_0xdce27a[_0xa5ef('0x34')],_0x3bfbdf['filters']),_0x521090);if(_0xdce27a[_0xa5ef('0x34')][_0xa5ef('0x3e')]){_0x2f4661['where']=_[_0xa5ef('0x3f')](_0x2f4661[_0xa5ef('0x3c')],{'$or':_[_0xa5ef('0x33')](_0x521090,function(_0x2cd074){if(_0x2cd074[_0xa5ef('0x30')]!=='VIRTUAL'){var _0x47ef5d={};_0x47ef5d[_0x2cd074[_0xa5ef('0x2c')]]={'$like':'%'+_0xdce27a[_0xa5ef('0x34')][_0xa5ef('0x3e')]+'%'};return _0x47ef5d;}})});}_0x2f4661=_[_0xa5ef('0x3f')]({},_0x2f4661,_0xdce27a[_0xa5ef('0x40')]);var _0x256c06={'where':_0x2f4661[_0xa5ef('0x3c')]};return db[_0xa5ef('0x41')][_0xa5ef('0x22')](_0x256c06)[_0xa5ef('0x28')](function(_0x120025){_0x3f1c2e[_0xa5ef('0x22')]=_0x120025;if(_0xdce27a[_0xa5ef('0x34')][_0xa5ef('0x42')]){_0x2f4661[_0xa5ef('0x43')]=[{'all':!![]}];}return db[_0xa5ef('0x41')]['findAll'](_0x2f4661);})[_0xa5ef('0x28')](function(_0x4db3d0){_0x3f1c2e['rows']=_0x4db3d0;return _0x3f1c2e;})[_0xa5ef('0x28')](respondWithFilteredResult(_0x3b4bd1,_0x2f4661))[_0xa5ef('0x44')](handleError(_0x3b4bd1,null));};exports['show']=function(_0x2c2b6f,_0x1909c1){var _0x522b5d={'raw':![],'where':{'id':_0x2c2b6f[_0xa5ef('0x45')]['id']}},_0x4e4790={};_0x4e4790[_0xa5ef('0x32')]=_['keys'](db[_0xa5ef('0x41')][_0xa5ef('0x46')]);_0x4e4790[_0xa5ef('0x34')]=_[_0xa5ef('0x47')](_0x2c2b6f[_0xa5ef('0x34')]);_0x4e4790[_0xa5ef('0x35')]=_['intersection'](_0x4e4790['model'],_0x4e4790[_0xa5ef('0x34')]);_0x522b5d[_0xa5ef('0x37')]=_[_0xa5ef('0x36')](_0x4e4790[_0xa5ef('0x32')],qs[_0xa5ef('0x38')](_0x2c2b6f[_0xa5ef('0x34')][_0xa5ef('0x38')]));_0x522b5d[_0xa5ef('0x37')]=_0x522b5d[_0xa5ef('0x37')]['length']?_0x522b5d[_0xa5ef('0x37')]:_0x4e4790['model'];if(_0x2c2b6f['query'][_0xa5ef('0x42')]){_0x522b5d[_0xa5ef('0x43')]=[{'all':!![]}];}_0x522b5d=_[_0xa5ef('0x3f')]({},_0x522b5d,_0x2c2b6f[_0xa5ef('0x40')]);return db['Team']['find'](_0x522b5d)[_0xa5ef('0x28')](handleEntityNotFound(_0x1909c1,null))[_0xa5ef('0x28')](respondWithResult(_0x1909c1,null))['catch'](handleError(_0x1909c1,null));};exports[_0xa5ef('0x48')]=function(_0x29e7e4,_0x54413c){return db['Team'][_0xa5ef('0x48')](_0x29e7e4[_0xa5ef('0x49')],{})[_0xa5ef('0x28')](function(_0x101b97){var _0x2360fb=_0x29e7e4[_0xa5ef('0x4a')][_0xa5ef('0x4b')]({'plain':!![]});if(!_0x2360fb)throw new Error(_0xa5ef('0x4c'));if(_0x2360fb['role']===_0xa5ef('0x4a')){var _0x5f1fc6=_0x101b97[_0xa5ef('0x4b')]({'plain':!![]});var _0x5e030d='Teams';return db[_0xa5ef('0x4d')][_0xa5ef('0x4e')]({'where':{'name':_0x5e030d,'userProfileId':_0x2360fb['userProfileId']},'raw':!![]})[_0xa5ef('0x28')](function(_0x3aa77e){if(_0x3aa77e&&_0x3aa77e[_0xa5ef('0x4f')]===0x0){return db[_0xa5ef('0x50')][_0xa5ef('0x48')]({'name':_0x5f1fc6['name'],'resourceId':_0x5f1fc6['id'],'type':_0x3aa77e[_0xa5ef('0x2c')],'sectionId':_0x3aa77e['id']},{})[_0xa5ef('0x28')](function(){return _0x101b97;});}else{return _0x101b97;}})[_0xa5ef('0x44')](function(_0x4dc804){logger[_0xa5ef('0x2a')](_0xa5ef('0x51'),_0x4dc804);throw _0x4dc804;});}return _0x101b97;})[_0xa5ef('0x28')](respondWithResult(_0x54413c,0xc9))['catch'](handleError(_0x54413c,null));};exports[_0xa5ef('0x52')]=function(_0x518628,_0xc64372){if(_0x518628['body']['id']){delete _0x518628[_0xa5ef('0x49')]['id'];}return db[_0xa5ef('0x41')][_0xa5ef('0x4e')]({'where':{'id':_0x518628['params']['id']}})[_0xa5ef('0x28')](handleEntityNotFound(_0xc64372,null))['then'](saveUpdates(_0x518628[_0xa5ef('0x49')],null))[_0xa5ef('0x28')](respondWithResult(_0xc64372,null))[_0xa5ef('0x44')](handleError(_0xc64372,null));};exports[_0xa5ef('0x53')]=function(_0x6c4d5f,_0x31752a){var _0x1f59f4=_0x6c4d5f[_0xa5ef('0x45')]['id'];var _0x47398e=[];return db[_0xa5ef('0x54')][_0xa5ef('0x55')](function(_0x1da779){var _0x22abb3=_0xa5ef('0x56')+_0x1f59f4;return db[_0xa5ef('0x54')][_0xa5ef('0x34')](_0x22abb3,{'type':db[_0xa5ef('0x57')][_0xa5ef('0x58')][_0xa5ef('0x59')],'raw':!![],'transaction':_0x1da779})[_0xa5ef('0x28')](function(_0xb36f10){_0x47398e=_['map'](_0xb36f10,function(_0xb2dc10){return Number(_0xb2dc10['UserId']);});})[_0xa5ef('0x28')](function(){var _0x4edbea='SELECT\x20VoiceQueueId\x20FROM\x20team_has_voice_queues\x20WHERE\x20TeamId\x20=\x20'+_0x1f59f4;return db[_0xa5ef('0x54')][_0xa5ef('0x34')](_0x4edbea,{'type':db[_0xa5ef('0x57')]['QueryTypes'][_0xa5ef('0x59')],'raw':!![],'transaction':_0x1da779});})[_0xa5ef('0x28')](function(_0x20d8c6){var _0x522792=_[_0xa5ef('0x33')](_0x20d8c6,function(_0x1e78a9){return Number(_0x1e78a9[_0xa5ef('0x5a')]);});return db['UserVoiceQueue'][_0xa5ef('0x53')]({'where':{'UserId':{'$in':_0x47398e},'VoiceQueueId':{'$in':_0x522792}},'transaction':_0x1da779});})[_0xa5ef('0x28')](function(){var _0x3063a5='SELECT\x20MailQueueId\x20FROM\x20team_has_mail_queues\x20WHERE\x20TeamId\x20=\x20'+_0x1f59f4;return db[_0xa5ef('0x54')][_0xa5ef('0x34')](_0x3063a5,{'type':db[_0xa5ef('0x57')][_0xa5ef('0x58')]['SELECT'],'raw':!![],'transaction':_0x1da779});})['then'](function(_0x176463){var _0x87907f=_[_0xa5ef('0x33')](_0x176463,function(_0xf98d98){return Number(_0xf98d98[_0xa5ef('0x5b')]);});return db['UserMailQueue'][_0xa5ef('0x53')]({'where':{'UserId':{'$in':_0x47398e},'MailQueueId':{'$in':_0x87907f}},'transaction':_0x1da779});})[_0xa5ef('0x28')](function(){var _0x32c25f=_0xa5ef('0x5c')+_0x1f59f4;return db[_0xa5ef('0x54')][_0xa5ef('0x34')](_0x32c25f,{'type':db['Sequelize'][_0xa5ef('0x58')][_0xa5ef('0x59')],'raw':!![],'transaction':_0x1da779});})[_0xa5ef('0x28')](function(_0x3e9722){var _0x117c85=_[_0xa5ef('0x33')](_0x3e9722,function(_0x880f55){return Number(_0x880f55[_0xa5ef('0x5d')]);});return db['UserSmsQueue'][_0xa5ef('0x53')]({'where':{'UserId':{'$in':_0x47398e},'SmsQueueId':{'$in':_0x117c85}},'transaction':_0x1da779});})[_0xa5ef('0x28')](function(){var _0xd48ff1=_0xa5ef('0x5e')+_0x1f59f4;return db[_0xa5ef('0x54')][_0xa5ef('0x34')](_0xd48ff1,{'type':db[_0xa5ef('0x57')][_0xa5ef('0x58')]['SELECT'],'raw':!![],'transaction':_0x1da779});})[_0xa5ef('0x28')](function(_0x5137e6){var _0x12c7ca=_[_0xa5ef('0x33')](_0x5137e6,function(_0x4d524b){return Number(_0x4d524b['ChatQueueId']);});return db[_0xa5ef('0x5f')][_0xa5ef('0x53')]({'where':{'UserId':{'$in':_0x47398e},'ChatQueueId':{'$in':_0x12c7ca}},'transaction':_0x1da779});})['then'](function(){var _0x30af35=_0xa5ef('0x60')+_0x1f59f4;return db['sequelize']['query'](_0x30af35,{'type':db[_0xa5ef('0x57')]['QueryTypes'][_0xa5ef('0x59')],'raw':!![],'transaction':_0x1da779});})['then'](function(_0x2db45b){var _0x25245b=_[_0xa5ef('0x33')](_0x2db45b,function(_0x119bf1){return Number(_0x119bf1['FaxQueueId']);});return db[_0xa5ef('0x61')][_0xa5ef('0x53')]({'where':{'UserId':{'$in':_0x47398e},'FaxQueueId':{'$in':_0x25245b}},'transaction':_0x1da779});})['then'](function(){var _0xc8c4e6='SELECT\x20OpenchannelQueueId\x20FROM\x20team_has_openchannel_queues\x20WHERE\x20TeamId\x20=\x20'+_0x1f59f4;return db[_0xa5ef('0x54')]['query'](_0xc8c4e6,{'type':db[_0xa5ef('0x57')]['QueryTypes']['SELECT'],'raw':!![],'transaction':_0x1da779});})['then'](function(_0x285e2a){var _0x45eb4b=_[_0xa5ef('0x33')](_0x285e2a,function(_0xab81b6){return Number(_0xab81b6['OpenchannelQueueId']);});return db[_0xa5ef('0x62')]['destroy']({'where':{'UserId':{'$in':_0x47398e},'OpenchannelQueueId':{'$in':_0x45eb4b}},'transaction':_0x1da779});})[_0xa5ef('0x28')](function(){var _0x4296d1='SELECT\x20WhatsappQueueId\x20FROM\x20team_has_whatsapp_queues\x20WHERE\x20TeamId\x20=\x20'+_0x1f59f4;return db['sequelize'][_0xa5ef('0x34')](_0x4296d1,{'type':db[_0xa5ef('0x57')][_0xa5ef('0x58')]['SELECT'],'raw':!![],'transaction':_0x1da779});})[_0xa5ef('0x28')](function(_0x27b623){var _0x19bc8f=_[_0xa5ef('0x33')](_0x27b623,function(_0x23eee2){return Number(_0x23eee2['WhatsappQueueId']);});return db['UserWhatsappQueue'][_0xa5ef('0x53')]({'where':{'UserId':{'$in':_0x47398e},'WhatsappQueueId':{'$in':_0x19bc8f}},'transaction':_0x1da779});})[_0xa5ef('0x28')](function(){return db[_0xa5ef('0x63')][_0xa5ef('0x4e')]({'where':{'TeamId':_0x1f59f4}});})[_0xa5ef('0x28')](function(_0x535402){if(_0x535402===null){return;}return db['UserVoicePrefix'][_0xa5ef('0x53')]({'where':{'UserId':{'$in':_0x47398e},'VoicePrefixId':_0x535402[_0xa5ef('0x64')]},'transaction':_0x1da779});})[_0xa5ef('0x28')](function(){return db[_0xa5ef('0x41')]['destroy']({'where':{'id':_0x1f59f4},'cascade':!![],'transaction':_0x1da779});})[_0xa5ef('0x28')](function(_0x16b7ea){if(_0x16b7ea===0x0){_0x31752a['sendStatus'](0x194);}else{return db['UserProfileResource']['destroy']({'where':{'type':_0xa5ef('0x65'),'resourceId':_0x1f59f4},'cascade':!![],'transaction':_0x1da779})[_0xa5ef('0x28')](function(){_0x31752a['status'](0xcc)[_0xa5ef('0x66')]();});}})[_0xa5ef('0x44')](function(_0x4e3555){_0x31752a[_0xa5ef('0x1e')](0x1f4)[_0xa5ef('0x2d')](_0x4e3555);});});};exports[_0xa5ef('0x67')]=function(_0x3d8776,_0x22bfcf,_0x46d030){return db[_0xa5ef('0x41')][_0xa5ef('0x68')]({'where':{'id':_0x3d8776['params']['id']}})[_0xa5ef('0x28')](handleEntityNotFound(_0x22bfcf,null))['then'](function(_0x2bc86c){if(!_0x3d8776[_0xa5ef('0x34')][_0xa5ef('0x69')]||!utils[_0xa5ef('0x6a')](_0x3d8776[_0xa5ef('0x34')][_0xa5ef('0x69')])){throw new db[(_0xa5ef('0x57'))][(_0xa5ef('0x6b'))]('Unknown\x20channel');}var _0x3229df={};var _0x106cf2={};_0x106cf2[_0xa5ef('0x32')]=_['keys'](db[_[_0xa5ef('0x6c')](_0x3d8776['query'][_0xa5ef('0x69')][_0xa5ef('0x6d')]())+_0xa5ef('0x6e')][_0xa5ef('0x46')]);_0x106cf2[_0xa5ef('0x34')]=_[_0xa5ef('0x47')](_0x3d8776[_0xa5ef('0x34')]);_0x106cf2[_0xa5ef('0x35')]=_[_0xa5ef('0x36')](_0x106cf2[_0xa5ef('0x32')],_0x106cf2[_0xa5ef('0x34')]);_0x3229df[_0xa5ef('0x37')]=_['intersection'](_0x106cf2[_0xa5ef('0x32')],qs[_0xa5ef('0x38')](_0x3d8776[_0xa5ef('0x34')][_0xa5ef('0x38')]));_0x3229df[_0xa5ef('0x37')]=_0x3229df[_0xa5ef('0x37')][_0xa5ef('0x6f')]?_0x3229df[_0xa5ef('0x37')]:_0x106cf2[_0xa5ef('0x32')];_0x3229df[_0xa5ef('0x20')]=qs[_0xa5ef('0x20')](_0x3d8776['query'][_0xa5ef('0x20')]);_0x3229df[_0xa5ef('0x23')]=qs[_0xa5ef('0x23')](_0x3d8776[_0xa5ef('0x34')]['offset']);_0x3229df[_0xa5ef('0x70')]=qs[_0xa5ef('0x3b')](_0x3d8776[_0xa5ef('0x34')]['sort']);_0x3229df[_0xa5ef('0x3c')]=qs['filters'](_[_0xa5ef('0x3d')](_0x3d8776[_0xa5ef('0x34')],_0x106cf2[_0xa5ef('0x35')]));_0x3229df=_[_0xa5ef('0x3f')]({},_0x3229df,_0x3d8776[_0xa5ef('0x40')]);return _0x2bc86c[_0xa5ef('0x4b')+_[_0xa5ef('0x6c')](_0x3d8776[_0xa5ef('0x34')]['channel']['toLowerCase']())+_0xa5ef('0x71')](_0x3229df);})['then'](respondWithResult(_0x22bfcf,null))['catch'](handleError(_0x22bfcf,null));};exports[_0xa5ef('0x72')]=function(_0x3e4ab3,_0x32ed44,_0x134e99){return db[_0xa5ef('0x41')][_0xa5ef('0x68')]({'where':{'id':_0x3e4ab3[_0xa5ef('0x45')]['id']}})[_0xa5ef('0x28')](function(_0x5684e8){if(_0x5684e8){if(!_0x3e4ab3[_0xa5ef('0x49')][_0xa5ef('0x69')]||!utils[_0xa5ef('0x6a')](_0x3e4ab3[_0xa5ef('0x49')][_0xa5ef('0x69')])){throw new db[(_0xa5ef('0x57'))]['ValidationError'](_0xa5ef('0x73'));}return _0x5684e8['add'+_['capitalize'](_0x3e4ab3[_0xa5ef('0x49')]['channel'][_0xa5ef('0x6d')]())+_0xa5ef('0x71')](_0x3e4ab3[_0xa5ef('0x49')][_0xa5ef('0x74')]);}return null;})[_0xa5ef('0x28')](handleEntityNotFound(_0x32ed44,null))[_0xa5ef('0x28')](respondWithStatusCode(_0x32ed44,null))[_0xa5ef('0x44')](handleError(_0x32ed44,null));};exports[_0xa5ef('0x75')]=function(_0x424df8,_0x22f78a,_0x1dc74d){return db[_0xa5ef('0x41')][_0xa5ef('0x68')]({'where':{'id':_0x424df8[_0xa5ef('0x45')]['id']}})[_0xa5ef('0x28')](function(_0x538614){if(_0x538614){if(!_0x424df8[_0xa5ef('0x34')][_0xa5ef('0x69')]||!utils[_0xa5ef('0x6a')](_0x424df8['query'][_0xa5ef('0x69')])){throw new db[(_0xa5ef('0x57'))][(_0xa5ef('0x6b'))](_0xa5ef('0x73'));}return _0x538614[_0xa5ef('0x76')+_[_0xa5ef('0x6c')](_0x424df8[_0xa5ef('0x34')][_0xa5ef('0x69')][_0xa5ef('0x6d')]())+_0xa5ef('0x71')](_0x424df8[_0xa5ef('0x34')]['ids']);}return null;})[_0xa5ef('0x28')](handleEntityNotFound(_0x22f78a,null))[_0xa5ef('0x28')](respondWithStatusCode(_0x22f78a,null))[_0xa5ef('0x44')](handleError(_0x22f78a,null));};exports['addAgents']=function(_0x244a01,_0x4716d2){var _0x23c98f=_['isArray'](_0x244a01[_0xa5ef('0x49')]['ids'])?_0x244a01[_0xa5ef('0x49')][_0xa5ef('0x74')]:[_0x244a01[_0xa5ef('0x49')][_0xa5ef('0x74')]];var _0xa3fd7a=_0x244a01[_0xa5ef('0x45')]['id'];return db[_0xa5ef('0x41')][_0xa5ef('0x4e')]({'where':{'id':_0xa3fd7a}})['then'](handleEntityNotFound(_0x4716d2,null))[_0xa5ef('0x28')](function(_0x51e80e){if(_0x51e80e){var _0x1b721a=[_0xa5ef('0x77'),_0xa5ef('0x78'),'Mail',_0xa5ef('0x79'),_0xa5ef('0x7a'),'Openchannel',_0xa5ef('0x7b')];return db[_0xa5ef('0x54')][_0xa5ef('0x55')](function(_0x164cd9){var _0x4d4d01=_[_0xa5ef('0x33')](_0x1b721a,function(_0x1c407e){var _0x58c6d9={'attributes':['id',_0xa5ef('0x2c')]};if(_0x1c407e===_0xa5ef('0x77')){_0x58c6d9[_0xa5ef('0x7c')]={'attributes':[_0xa5ef('0x7d')]};}return _0x51e80e[_0xa5ef('0x4b')+_0x1c407e+_0xa5ef('0x71')](_0x58c6d9)[_0xa5ef('0x28')](function(_0x5b79fa){var _0x3cde77=_[_0xa5ef('0x33')](_0x5b79fa,function(_0x12e807){var _0x54deee=_[_0xa5ef('0x33')](_0x23c98f,function(_0x27494a){var _0x151d5b={'where':{'UserId':_0x27494a,[_0x1c407e+_0xa5ef('0x7e')]:_0x12e807['id']},'transaction':_0x164cd9};if(_0x1c407e===_0xa5ef('0x77')){_0x151d5b[_0xa5ef('0x1b')]={'penalty':_0x12e807[_0xa5ef('0x7f')]['penalty']};}return db[_0xa5ef('0x80')+_0x1c407e+'Queue'][_0xa5ef('0x81')](_0x151d5b)[_0xa5ef('0x28')](function(){socket[_0xa5ef('0x82')](_0xa5ef('0x4a')+_0x1c407e+_0xa5ef('0x83'),{'UserId':_0x27494a,[_0x1c407e+_0xa5ef('0x7e')]:_0x12e807['id']});if(_0x1c407e!==_0xa5ef('0x77')){return;}return db['User'][_0xa5ef('0x84')]({'where':{'id':_0x23c98f,'online':0x1},'attributes':['id',_0xa5ef('0x2c'),_0xa5ef('0x85'),'voicePause',_0xa5ef('0x86')],'raw':!![]})[_0xa5ef('0x28')](function(_0x3732ad){var _0x5828d3=_[_0xa5ef('0x33')](_0x3732ad,function(_0x28a237){return db[_0xa5ef('0x87')][_0xa5ef('0x88')]({'membername':_0x28a237[_0xa5ef('0x2c')],'UserId':_0x28a237['id'],'queue_name':_0x12e807[_0xa5ef('0x2c')],'VoiceQueueId':_0x12e807['id'],'interface':_[_0xa5ef('0x89')](_0x28a237[_0xa5ef('0x86')])?util[_0xa5ef('0x8a')](_0xa5ef('0x8b'),_0x28a237[_0xa5ef('0x2c')]):_0x28a237['interface'],'paused':_0x28a237[_0xa5ef('0x8c')]||![],'penalty':_0x12e807[_0xa5ef('0x7f')][_0xa5ef('0x7d')]},{'transaction':_0x164cd9});});return Promise[_0xa5ef('0x8d')](_0x5828d3);});});});return Promise['all'](_0x54deee);});return Promise[_0xa5ef('0x8d')](_0x3cde77);})[_0xa5ef('0x28')](function(){return db[_0xa5ef('0x63')][_0xa5ef('0x68')]({'where':{'teamId':_0xa3fd7a}})[_0xa5ef('0x28')](function(_0x1dd959){if(_0x1dd959){var _0x1ca92c=_[_0xa5ef('0x33')](_0x23c98f,function(_0x2c8a4c){db[_0xa5ef('0x8e')][_0xa5ef('0x88')]({'UserId':_0x2c8a4c,'VoicePrefixId':_0x1dd959[_0xa5ef('0x64')]});});return Promise['all'](_0x1ca92c);}});});});return Promise[_0xa5ef('0x8d')](_0x4d4d01)[_0xa5ef('0x28')](function(){return _0x51e80e[_0xa5ef('0x8f')](_0x23c98f,{'transaction':_0x164cd9})['spread'](function(_0x4f5534){return _0x4f5534;});});});}})['then'](respondWithResult(_0x4716d2,null))[_0xa5ef('0x44')](handleError(_0x4716d2,null));};exports[_0xa5ef('0x90')]=function(_0xa8af24,_0x3da5a9){var _0x1834cf=_[_0xa5ef('0x91')](_0xa8af24['query'][_0xa5ef('0x74')])?_0xa8af24['query'][_0xa5ef('0x74')]:[_0xa8af24[_0xa5ef('0x34')][_0xa5ef('0x74')]];var _0x5bd7a4=_0xa8af24[_0xa5ef('0x45')]['id'];return db[_0xa5ef('0x41')]['find']({'where':{'id':_0x5bd7a4}})[_0xa5ef('0x28')](handleEntityNotFound(_0x3da5a9,null))[_0xa5ef('0x28')](function(_0x231d40){if(_0x231d40){var _0x11e6da=['Voice','Chat',_0xa5ef('0x92'),_0xa5ef('0x79'),_0xa5ef('0x7a'),_0xa5ef('0x93'),'Whatsapp'];return db[_0xa5ef('0x54')][_0xa5ef('0x55')](function(_0x40d9f3){var _0x107e32=_[_0xa5ef('0x33')](_0x11e6da,function(_0x3239a8){var _0x5edb39={'attributes':['id','name']};return _0x231d40[_0xa5ef('0x4b')+_0x3239a8+'Queues'](_0x5edb39)[_0xa5ef('0x28')](function(_0x3e25ca){var _0x294feb=_['map'](_0x3e25ca,function(_0x4656d0){return _0x4656d0[_0xa5ef('0x90')](_0x1834cf,{'transaction':_0x40d9f3})[_0xa5ef('0x28')](function(){var _0x730a66=_[_0xa5ef('0x33')](_0x1834cf,function(_0x52fc7f){socket[_0xa5ef('0x82')]('user'+_0x3239a8+'Queue:remove',{'UserId':Number(_0x52fc7f),[_0x3239a8+_0xa5ef('0x7e')]:_0x4656d0['id']});if(_0x3239a8!==_0xa5ef('0x77')){return;}return db[_0xa5ef('0x87')][_0xa5ef('0x53')]({'where':{'VoiceQueueId':_0x4656d0['id'],'UserId':_0x52fc7f},'transaction':_0x40d9f3});});return Promise['all'](_0x730a66);});});return Promise['all'](_0x294feb);});});return Promise[_0xa5ef('0x8d')](_0x107e32)[_0xa5ef('0x28')](function(){return _0x231d40[_0xa5ef('0x90')](_0x1834cf,{'transaction':_0x40d9f3});})[_0xa5ef('0x28')](function(){return db[_0xa5ef('0x63')][_0xa5ef('0x68')]({'where':{'teamId':_0x5bd7a4}})[_0xa5ef('0x28')](function(_0x4a9e65){if(_0x4a9e65){var _0x3104b8=_['map'](_0x1834cf,function(_0x51615f){db[_0xa5ef('0x8e')][_0xa5ef('0x53')]({'where':{'UserId':_0x51615f,'VoicePrefixId':_0x4a9e65[_0xa5ef('0x64')]}});});return Promise[_0xa5ef('0x8d')](_0x3104b8);}});});});}})[_0xa5ef('0x28')](respondWithStatusCode(_0x3da5a9,null))[_0xa5ef('0x44')](handleError(_0x3da5a9,null));};exports[_0xa5ef('0x94')]=function(_0x27dae0,_0x3c6468,_0x6d01d){var _0x45709a={};var _0xddc264={};var _0x5a26ce;var _0x43ff19;return db['Team'][_0xa5ef('0x68')]({'where':{'id':_0x27dae0[_0xa5ef('0x45')]['id']}})[_0xa5ef('0x28')](handleEntityNotFound(_0x3c6468,null))[_0xa5ef('0x28')](function(_0x572eff){if(_0x572eff){_0x5a26ce=_0x572eff;_0xddc264[_0xa5ef('0x32')]=_['keys'](db[_0xa5ef('0x80')][_0xa5ef('0x46')]);_0xddc264[_0xa5ef('0x34')]=_['keys'](_0x27dae0['query']);_0xddc264[_0xa5ef('0x35')]=_[_0xa5ef('0x36')](_0xddc264[_0xa5ef('0x32')],_0xddc264[_0xa5ef('0x34')]);_0x45709a['attributes']=_[_0xa5ef('0x36')](_0xddc264['model'],qs[_0xa5ef('0x38')](_0x27dae0[_0xa5ef('0x34')]['fields']));_0x45709a['attributes']=_0x45709a[_0xa5ef('0x37')][_0xa5ef('0x6f')]?_0x45709a['attributes']:_0xddc264[_0xa5ef('0x32')];_0x45709a[_0xa5ef('0x70')]=qs[_0xa5ef('0x3b')](_0x27dae0[_0xa5ef('0x34')][_0xa5ef('0x3b')]);_0x45709a[_0xa5ef('0x3c')]=qs[_0xa5ef('0x35')](_[_0xa5ef('0x3d')](_0x27dae0[_0xa5ef('0x34')],_0xddc264['filters']));if(_0x27dae0[_0xa5ef('0x34')][_0xa5ef('0x3e')]){_0x45709a[_0xa5ef('0x3c')]=_[_0xa5ef('0x3f')](_0x45709a[_0xa5ef('0x3c')],{'$or':_[_0xa5ef('0x33')](_0x45709a[_0xa5ef('0x37')],function(_0x218cf7){var _0x4a9118={};_0x4a9118[_0x218cf7]={'$like':'%'+_0x27dae0[_0xa5ef('0x34')][_0xa5ef('0x3e')]+'%'};return _0x4a9118;})});}_0x45709a=_[_0xa5ef('0x3f')]({},_0x45709a,_0x27dae0[_0xa5ef('0x40')]);return _0x5a26ce[_0xa5ef('0x94')](_0x45709a);}})['then'](function(_0x34c346){if(_0x34c346){_0x43ff19=_0x34c346[_0xa5ef('0x6f')];if(!_0x27dae0['query'][_0xa5ef('0x39')]('nolimit')){_0x45709a[_0xa5ef('0x20')]=qs[_0xa5ef('0x20')](_0x27dae0['query'][_0xa5ef('0x20')]);_0x45709a[_0xa5ef('0x23')]=qs[_0xa5ef('0x23')](_0x27dae0['query']['offset']);}return _0x5a26ce[_0xa5ef('0x94')](_0x45709a);}})[_0xa5ef('0x28')](function(_0x2220a7){if(_0x2220a7){return _0x2220a7?{'count':_0x43ff19,'rows':_0x2220a7}:null;}})['then'](respondWithResult(_0x3c6468,null))[_0xa5ef('0x44')](handleError(_0x3c6468,null));};
\ No newline at end of file
+var _0xc4be=['upsert','isNil','format','SIP/%s','all','UserVoicePrefix','spread','Mail','Whatsapp','removeAgents','Queue:remove','TeamVoicePrefix','getAgents','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../mysqldb','redis','defaults','./team.socket','register','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','then','error','stack','name','send','index','map','Team','rawAttributes','fieldName','type','key','query','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','VIRTUAL','options','includeAll','findAll','catch','params','keys','include','find','create','body','user','role','get','Teams','UserProfileResource','update','destroy','transaction','SELECT\x20UserId\x20FROM\x20user_has_teams\x20WHERE\x20TeamId\x20=\x20','Sequelize','SELECT','UserId','SELECT\x20VoiceQueueId\x20FROM\x20team_has_voice_queues\x20WHERE\x20TeamId\x20=\x20','sequelize','QueryTypes','VoiceQueueId','SELECT\x20MailQueueId\x20FROM\x20team_has_mail_queues\x20WHERE\x20TeamId\x20=\x20','MailQueueId','UserMailQueue','SELECT\x20SmsQueueId\x20FROM\x20team_has_sms_queues\x20WHERE\x20TeamId\x20=\x20','SmsQueueId','UserSmsQueue','SELECT\x20ChatQueueId\x20FROM\x20team_has_chat_queues\x20WHERE\x20TeamId\x20=\x20','ChatQueueId','SELECT\x20FaxQueueId\x20FROM\x20team_has_fax_queues\x20WHERE\x20TeamId\x20=\x20','FaxQueueId','UserFaxQueue','SELECT\x20OpenchannelQueueId\x20FROM\x20team_has_openchannel_queues\x20WHERE\x20TeamId\x20=\x20','OpenchannelQueueId','UserOpenchannelQueue','WhatsappQueueId','UserWhatsappQueue','VoicePrefixId','getQueues','findOne','channel','isValidChannel','ValidationError','Unknown\x20channel','capitalize','toLowerCase','Queue','Queues','addQueues','add','ids','removeQueues','remove','addAgents','isArray','Voice','Chat','Sms','Fax','Openchannel','penalty','QueueId','TeamVoiceQueue','User','findOrCreate','emit','online','voicePause','interface','UserVoiceQueueRt'];(function(_0x4cb429,_0x272408){var _0xbfd589=function(_0x4ec3e6){while(--_0x4ec3e6){_0x4cb429['push'](_0x4cb429['shift']());}};_0xbfd589(++_0x272408);}(_0xc4be,0x1e4));var _0xec4b=function(_0x111031,_0x51053c){_0x111031=_0x111031-0x0;var _0x54b1fc=_0xc4be[_0x111031];return _0x54b1fc;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xec4b('0x0'));var zipdir=require(_0xec4b('0x1'));var jsonpatch=require(_0xec4b('0x2'));var rp=require('request-promise');var moment=require(_0xec4b('0x3'));var BPromise=require(_0xec4b('0x4'));var Mustache=require('mustache');var util=require(_0xec4b('0x5'));var path=require(_0xec4b('0x6'));var sox=require(_0xec4b('0x7'));var csv=require(_0xec4b('0x8'));var ejs=require(_0xec4b('0x9'));var fs=require('fs');var fs_extra=require(_0xec4b('0xa'));var _=require(_0xec4b('0xb'));var squel=require(_0xec4b('0xc'));var crypto=require(_0xec4b('0xd'));var jsforce=require(_0xec4b('0xe'));var deskjs=require(_0xec4b('0xf'));var toCsv=require(_0xec4b('0x8'));var querystring=require(_0xec4b('0x10'));var Papa=require(_0xec4b('0x11'));var Redis=require('ioredis');var authService=require(_0xec4b('0x12'));var qs=require(_0xec4b('0x13'));var as=require(_0xec4b('0x14'));var hardwareService=require(_0xec4b('0x15'));var logger=require('../../config/logger')(_0xec4b('0x16'));var utils=require('../../config/utils');var config=require(_0xec4b('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xec4b('0x18'))['db'];config[_0xec4b('0x19')]=_[_0xec4b('0x1a')](config[_0xec4b('0x19')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xec4b('0x19')]));require(_0xec4b('0x1b'))[_0xec4b('0x1c')](socket);function respondWithStatusCode(_0x25fe18,_0x3980f4){_0x3980f4=_0x3980f4||0xcc;return function(_0x32119f){if(_0x32119f){return _0x25fe18[_0xec4b('0x1d')](_0x3980f4);}return _0x25fe18['status'](_0x3980f4)[_0xec4b('0x1e')]();};}function respondWithResult(_0x569d7c,_0x4f028e){_0x4f028e=_0x4f028e||0xc8;return function(_0x3ea04b){if(_0x3ea04b){return _0x569d7c[_0xec4b('0x1f')](_0x4f028e)['json'](_0x3ea04b);}};}function respondWithFilteredResult(_0x588344,_0x441b89){return function(_0x1462de){if(_0x1462de){var _0x4c3963=typeof _0x441b89[_0xec4b('0x20')]===_0xec4b('0x21')&&typeof _0x441b89[_0xec4b('0x22')]===_0xec4b('0x21');var _0x42a831=_0x1462de[_0xec4b('0x23')];var _0xb39501=_0x4c3963?0x0:_0x441b89[_0xec4b('0x20')];var _0x3d89c4=_0x4c3963?_0x1462de[_0xec4b('0x23')]:_0x441b89[_0xec4b('0x20')]+_0x441b89[_0xec4b('0x22')];var _0x4d2660;if(_0x3d89c4>=_0x42a831){_0x3d89c4=_0x42a831;_0x4d2660=0xc8;}else{_0x4d2660=0xce;}_0x588344[_0xec4b('0x1f')](_0x4d2660);return _0x588344[_0xec4b('0x24')](_0xec4b('0x25'),_0xb39501+'-'+_0x3d89c4+'/'+_0x42a831)[_0xec4b('0x26')](_0x1462de);}return null;};}function patchUpdates(_0x552ef0){return function(_0x94892a){try{jsonpatch[_0xec4b('0x27')](_0x94892a,_0x552ef0,!![]);}catch(_0x3f1eff){return BPromise[_0xec4b('0x28')](_0x3f1eff);}return _0x94892a['save']();};}function saveUpdates(_0xa496c8,_0x35b29e){return function(_0x58959a){if(_0x58959a){return _0x58959a['update'](_0xa496c8)[_0xec4b('0x29')](function(_0x5b7aba){return _0x5b7aba;});}return null;};}function handleEntityNotFound(_0x143dbd,_0x5e359c){return function(_0x372051){if(!_0x372051){_0x143dbd[_0xec4b('0x1d')](0x194);}return _0x372051;};}function handleError(_0x575857,_0x13da77){_0x13da77=_0x13da77||0x1f4;return function(_0xe578ce){logger[_0xec4b('0x2a')](_0xe578ce[_0xec4b('0x2b')]);if(_0xe578ce[_0xec4b('0x2c')]){delete _0xe578ce[_0xec4b('0x2c')];}_0x575857[_0xec4b('0x1f')](_0x13da77)[_0xec4b('0x2d')](_0xe578ce);};}exports[_0xec4b('0x2e')]=function(_0x238e29,_0x3d7a55){var _0x2c5049={},_0x4ac633={},_0x42b522={'count':0x0,'rows':[]};var _0x4f20d9=_[_0xec4b('0x2f')](db[_0xec4b('0x30')][_0xec4b('0x31')],function(_0x2ce44d){return{'name':_0x2ce44d[_0xec4b('0x32')],'type':_0x2ce44d[_0xec4b('0x33')][_0xec4b('0x34')]};});_0x4ac633['model']=_[_0xec4b('0x2f')](_0x4f20d9,'name');_0x4ac633[_0xec4b('0x35')]=_['keys'](_0x238e29[_0xec4b('0x35')]);_0x4ac633['filters']=_[_0xec4b('0x36')](_0x4ac633['model'],_0x4ac633[_0xec4b('0x35')]);_0x2c5049[_0xec4b('0x37')]=_['intersection'](_0x4ac633[_0xec4b('0x38')],qs[_0xec4b('0x39')](_0x238e29[_0xec4b('0x35')][_0xec4b('0x39')]));_0x2c5049[_0xec4b('0x37')]=_0x2c5049['attributes'][_0xec4b('0x3a')]?_0x2c5049[_0xec4b('0x37')]:_0x4ac633[_0xec4b('0x38')];if(!_0x238e29[_0xec4b('0x35')][_0xec4b('0x3b')](_0xec4b('0x3c'))){_0x2c5049['limit']=qs[_0xec4b('0x22')](_0x238e29[_0xec4b('0x35')]['limit']);_0x2c5049[_0xec4b('0x20')]=qs[_0xec4b('0x20')](_0x238e29[_0xec4b('0x35')][_0xec4b('0x20')]);}_0x2c5049[_0xec4b('0x3d')]=qs['sort'](_0x238e29[_0xec4b('0x35')][_0xec4b('0x3e')]);_0x2c5049[_0xec4b('0x3f')]=qs['filters'](_[_0xec4b('0x40')](_0x238e29[_0xec4b('0x35')],_0x4ac633[_0xec4b('0x41')]),_0x4f20d9);if(_0x238e29[_0xec4b('0x35')][_0xec4b('0x42')]){_0x2c5049[_0xec4b('0x3f')]=_[_0xec4b('0x43')](_0x2c5049['where'],{'$or':_[_0xec4b('0x2f')](_0x4f20d9,function(_0x28b25c){if(_0x28b25c[_0xec4b('0x33')]!==_0xec4b('0x44')){var _0x2b085c={};_0x2b085c[_0x28b25c[_0xec4b('0x2c')]]={'$like':'%'+_0x238e29[_0xec4b('0x35')][_0xec4b('0x42')]+'%'};return _0x2b085c;}})});}_0x2c5049=_[_0xec4b('0x43')]({},_0x2c5049,_0x238e29[_0xec4b('0x45')]);var _0x416774={'where':_0x2c5049[_0xec4b('0x3f')]};return db['Team']['count'](_0x416774)[_0xec4b('0x29')](function(_0x3c1689){_0x42b522[_0xec4b('0x23')]=_0x3c1689;if(_0x238e29[_0xec4b('0x35')][_0xec4b('0x46')]){_0x2c5049['include']=[{'all':!![]}];}return db[_0xec4b('0x30')][_0xec4b('0x47')](_0x2c5049);})[_0xec4b('0x29')](function(_0x1ecf57){_0x42b522['rows']=_0x1ecf57;return _0x42b522;})['then'](respondWithFilteredResult(_0x3d7a55,_0x2c5049))[_0xec4b('0x48')](handleError(_0x3d7a55,null));};exports['show']=function(_0x3fb59e,_0x59749e){var _0x8cb35a={'raw':![],'where':{'id':_0x3fb59e[_0xec4b('0x49')]['id']}},_0x459a42={};_0x459a42[_0xec4b('0x38')]=_[_0xec4b('0x4a')](db[_0xec4b('0x30')]['rawAttributes']);_0x459a42[_0xec4b('0x35')]=_[_0xec4b('0x4a')](_0x3fb59e[_0xec4b('0x35')]);_0x459a42[_0xec4b('0x41')]=_[_0xec4b('0x36')](_0x459a42[_0xec4b('0x38')],_0x459a42['query']);_0x8cb35a['attributes']=_[_0xec4b('0x36')](_0x459a42[_0xec4b('0x38')],qs['fields'](_0x3fb59e[_0xec4b('0x35')][_0xec4b('0x39')]));_0x8cb35a[_0xec4b('0x37')]=_0x8cb35a[_0xec4b('0x37')][_0xec4b('0x3a')]?_0x8cb35a['attributes']:_0x459a42[_0xec4b('0x38')];if(_0x3fb59e[_0xec4b('0x35')][_0xec4b('0x46')]){_0x8cb35a[_0xec4b('0x4b')]=[{'all':!![]}];}_0x8cb35a=_[_0xec4b('0x43')]({},_0x8cb35a,_0x3fb59e[_0xec4b('0x45')]);return db[_0xec4b('0x30')][_0xec4b('0x4c')](_0x8cb35a)['then'](handleEntityNotFound(_0x59749e,null))[_0xec4b('0x29')](respondWithResult(_0x59749e,null))[_0xec4b('0x48')](handleError(_0x59749e,null));};exports[_0xec4b('0x4d')]=function(_0x5f3bf0,_0x3d7d3b){return db[_0xec4b('0x30')][_0xec4b('0x4d')](_0x5f3bf0[_0xec4b('0x4e')],{})['then'](function(_0xc01df2){var _0x3fb59b=_0x5f3bf0[_0xec4b('0x4f')]['get']({'plain':!![]});if(!_0x3fb59b)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3fb59b[_0xec4b('0x50')]===_0xec4b('0x4f')){var _0x291db2=_0xc01df2[_0xec4b('0x51')]({'plain':!![]});var _0x525697=_0xec4b('0x52');return db['UserProfileSection']['find']({'where':{'name':_0x525697,'userProfileId':_0x3fb59b['userProfileId']},'raw':!![]})[_0xec4b('0x29')](function(_0x1188f1){if(_0x1188f1&&_0x1188f1['autoAssociation']===0x0){return db[_0xec4b('0x53')][_0xec4b('0x4d')]({'name':_0x291db2[_0xec4b('0x2c')],'resourceId':_0x291db2['id'],'type':_0x1188f1[_0xec4b('0x2c')],'sectionId':_0x1188f1['id']},{})[_0xec4b('0x29')](function(){return _0xc01df2;});}else{return _0xc01df2;}})[_0xec4b('0x48')](function(_0x38450b){logger[_0xec4b('0x2a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x38450b);throw _0x38450b;});}return _0xc01df2;})[_0xec4b('0x29')](respondWithResult(_0x3d7d3b,0xc9))[_0xec4b('0x48')](handleError(_0x3d7d3b,null));};exports[_0xec4b('0x54')]=function(_0x60623a,_0x4a2916){if(_0x60623a[_0xec4b('0x4e')]['id']){delete _0x60623a['body']['id'];}return db[_0xec4b('0x30')][_0xec4b('0x4c')]({'where':{'id':_0x60623a[_0xec4b('0x49')]['id']}})[_0xec4b('0x29')](handleEntityNotFound(_0x4a2916,null))[_0xec4b('0x29')](saveUpdates(_0x60623a[_0xec4b('0x4e')],null))[_0xec4b('0x29')](respondWithResult(_0x4a2916,null))[_0xec4b('0x48')](handleError(_0x4a2916,null));};exports[_0xec4b('0x55')]=function(_0x19969f,_0x4a83ac){var _0x1d98f3=_0x19969f[_0xec4b('0x49')]['id'];var _0x478455=[];return db['sequelize'][_0xec4b('0x56')](function(_0x490611){var _0x11a547=_0xec4b('0x57')+_0x1d98f3;return db['sequelize'][_0xec4b('0x35')](_0x11a547,{'type':db[_0xec4b('0x58')]['QueryTypes'][_0xec4b('0x59')],'raw':!![],'transaction':_0x490611})[_0xec4b('0x29')](function(_0x4ef50f){_0x478455=_[_0xec4b('0x2f')](_0x4ef50f,function(_0x4ea852){return Number(_0x4ea852[_0xec4b('0x5a')]);});})['then'](function(){var _0x1ff4c9=_0xec4b('0x5b')+_0x1d98f3;return db[_0xec4b('0x5c')][_0xec4b('0x35')](_0x1ff4c9,{'type':db['Sequelize'][_0xec4b('0x5d')][_0xec4b('0x59')],'raw':!![],'transaction':_0x490611});})['then'](function(_0x83b621){var _0x105167=_[_0xec4b('0x2f')](_0x83b621,function(_0xffa952){return Number(_0xffa952[_0xec4b('0x5e')]);});return db['UserVoiceQueue']['destroy']({'where':{'UserId':{'$in':_0x478455},'VoiceQueueId':{'$in':_0x105167}},'transaction':_0x490611});})[_0xec4b('0x29')](function(){var _0x747098=_0xec4b('0x5f')+_0x1d98f3;return db[_0xec4b('0x5c')][_0xec4b('0x35')](_0x747098,{'type':db[_0xec4b('0x58')][_0xec4b('0x5d')][_0xec4b('0x59')],'raw':!![],'transaction':_0x490611});})['then'](function(_0x5b48b7){var _0x4bc9b1=_[_0xec4b('0x2f')](_0x5b48b7,function(_0x25c1aa){return Number(_0x25c1aa[_0xec4b('0x60')]);});return db[_0xec4b('0x61')][_0xec4b('0x55')]({'where':{'UserId':{'$in':_0x478455},'MailQueueId':{'$in':_0x4bc9b1}},'transaction':_0x490611});})['then'](function(){var _0x21b32d=_0xec4b('0x62')+_0x1d98f3;return db[_0xec4b('0x5c')][_0xec4b('0x35')](_0x21b32d,{'type':db[_0xec4b('0x58')][_0xec4b('0x5d')][_0xec4b('0x59')],'raw':!![],'transaction':_0x490611});})[_0xec4b('0x29')](function(_0x26447e){var _0x2de128=_[_0xec4b('0x2f')](_0x26447e,function(_0x55cc1b){return Number(_0x55cc1b[_0xec4b('0x63')]);});return db[_0xec4b('0x64')][_0xec4b('0x55')]({'where':{'UserId':{'$in':_0x478455},'SmsQueueId':{'$in':_0x2de128}},'transaction':_0x490611});})['then'](function(){var _0xf7da8c=_0xec4b('0x65')+_0x1d98f3;return db['sequelize']['query'](_0xf7da8c,{'type':db[_0xec4b('0x58')][_0xec4b('0x5d')][_0xec4b('0x59')],'raw':!![],'transaction':_0x490611});})[_0xec4b('0x29')](function(_0xa8caf5){var _0x5a6a97=_[_0xec4b('0x2f')](_0xa8caf5,function(_0x1fe00c){return Number(_0x1fe00c[_0xec4b('0x66')]);});return db['UserChatQueue']['destroy']({'where':{'UserId':{'$in':_0x478455},'ChatQueueId':{'$in':_0x5a6a97}},'transaction':_0x490611});})['then'](function(){var _0x7df057=_0xec4b('0x67')+_0x1d98f3;return db[_0xec4b('0x5c')][_0xec4b('0x35')](_0x7df057,{'type':db['Sequelize'][_0xec4b('0x5d')][_0xec4b('0x59')],'raw':!![],'transaction':_0x490611});})[_0xec4b('0x29')](function(_0x1fb39a){var _0x4e2132=_[_0xec4b('0x2f')](_0x1fb39a,function(_0x3658c3){return Number(_0x3658c3[_0xec4b('0x68')]);});return db[_0xec4b('0x69')][_0xec4b('0x55')]({'where':{'UserId':{'$in':_0x478455},'FaxQueueId':{'$in':_0x4e2132}},'transaction':_0x490611});})[_0xec4b('0x29')](function(){var _0x213392=_0xec4b('0x6a')+_0x1d98f3;return db[_0xec4b('0x5c')][_0xec4b('0x35')](_0x213392,{'type':db['Sequelize']['QueryTypes'][_0xec4b('0x59')],'raw':!![],'transaction':_0x490611});})['then'](function(_0x4c660b){var _0x18e04d=_[_0xec4b('0x2f')](_0x4c660b,function(_0x597520){return Number(_0x597520[_0xec4b('0x6b')]);});return db[_0xec4b('0x6c')][_0xec4b('0x55')]({'where':{'UserId':{'$in':_0x478455},'OpenchannelQueueId':{'$in':_0x18e04d}},'transaction':_0x490611});})[_0xec4b('0x29')](function(){var _0x474896='SELECT\x20WhatsappQueueId\x20FROM\x20team_has_whatsapp_queues\x20WHERE\x20TeamId\x20=\x20'+_0x1d98f3;return db['sequelize'][_0xec4b('0x35')](_0x474896,{'type':db[_0xec4b('0x58')][_0xec4b('0x5d')][_0xec4b('0x59')],'raw':!![],'transaction':_0x490611});})[_0xec4b('0x29')](function(_0x5afbb7){var _0x3d200d=_['map'](_0x5afbb7,function(_0x406a81){return Number(_0x406a81[_0xec4b('0x6d')]);});return db[_0xec4b('0x6e')][_0xec4b('0x55')]({'where':{'UserId':{'$in':_0x478455},'WhatsappQueueId':{'$in':_0x3d200d}},'transaction':_0x490611});})[_0xec4b('0x29')](function(){return db['TeamVoicePrefix'][_0xec4b('0x4c')]({'where':{'TeamId':_0x1d98f3}});})['then'](function(_0x42d70a){if(_0x42d70a===null){return;}return db['UserVoicePrefix'][_0xec4b('0x55')]({'where':{'UserId':{'$in':_0x478455},'VoicePrefixId':_0x42d70a[_0xec4b('0x6f')]},'transaction':_0x490611});})['then'](function(){return db[_0xec4b('0x30')]['destroy']({'where':{'id':_0x1d98f3},'cascade':!![],'transaction':_0x490611});})[_0xec4b('0x29')](function(_0x8f0eb8){if(_0x8f0eb8===0x0){_0x4a83ac[_0xec4b('0x1d')](0x194);}else{return db[_0xec4b('0x53')][_0xec4b('0x55')]({'where':{'type':'Teams','resourceId':_0x1d98f3},'cascade':!![],'transaction':_0x490611})[_0xec4b('0x29')](function(){_0x4a83ac[_0xec4b('0x1f')](0xcc)[_0xec4b('0x1e')]();});}})['catch'](function(_0x45a549){_0x4a83ac[_0xec4b('0x1f')](0x1f4)['send'](_0x45a549);});});};exports[_0xec4b('0x70')]=function(_0x5bf426,_0x214527,_0x4043a4){return db[_0xec4b('0x30')][_0xec4b('0x71')]({'where':{'id':_0x5bf426[_0xec4b('0x49')]['id']}})['then'](handleEntityNotFound(_0x214527,null))[_0xec4b('0x29')](function(_0x3ab193){if(!_0x5bf426[_0xec4b('0x35')][_0xec4b('0x72')]||!utils[_0xec4b('0x73')](_0x5bf426[_0xec4b('0x35')][_0xec4b('0x72')])){throw new db[(_0xec4b('0x58'))][(_0xec4b('0x74'))](_0xec4b('0x75'));}var _0x42864f={};var _0x3b8802={};_0x3b8802[_0xec4b('0x38')]=_[_0xec4b('0x4a')](db[_[_0xec4b('0x76')](_0x5bf426['query'][_0xec4b('0x72')][_0xec4b('0x77')]())+_0xec4b('0x78')][_0xec4b('0x31')]);_0x3b8802[_0xec4b('0x35')]=_['keys'](_0x5bf426[_0xec4b('0x35')]);_0x3b8802[_0xec4b('0x41')]=_[_0xec4b('0x36')](_0x3b8802[_0xec4b('0x38')],_0x3b8802['query']);_0x42864f[_0xec4b('0x37')]=_[_0xec4b('0x36')](_0x3b8802[_0xec4b('0x38')],qs[_0xec4b('0x39')](_0x5bf426['query']['fields']));_0x42864f[_0xec4b('0x37')]=_0x42864f[_0xec4b('0x37')]['length']?_0x42864f[_0xec4b('0x37')]:_0x3b8802[_0xec4b('0x38')];_0x42864f[_0xec4b('0x22')]=qs[_0xec4b('0x22')](_0x5bf426[_0xec4b('0x35')][_0xec4b('0x22')]);_0x42864f[_0xec4b('0x20')]=qs['offset'](_0x5bf426[_0xec4b('0x35')][_0xec4b('0x20')]);_0x42864f[_0xec4b('0x3d')]=qs[_0xec4b('0x3e')](_0x5bf426[_0xec4b('0x35')][_0xec4b('0x3e')]);_0x42864f[_0xec4b('0x3f')]=qs[_0xec4b('0x41')](_[_0xec4b('0x40')](_0x5bf426[_0xec4b('0x35')],_0x3b8802[_0xec4b('0x41')]));_0x42864f=_[_0xec4b('0x43')]({},_0x42864f,_0x5bf426['options']);return _0x3ab193[_0xec4b('0x51')+_[_0xec4b('0x76')](_0x5bf426[_0xec4b('0x35')]['channel'][_0xec4b('0x77')]())+_0xec4b('0x79')](_0x42864f);})[_0xec4b('0x29')](respondWithResult(_0x214527,null))[_0xec4b('0x48')](handleError(_0x214527,null));};exports[_0xec4b('0x7a')]=function(_0x4fe16c,_0x1360d3,_0x319637){return db['Team'][_0xec4b('0x71')]({'where':{'id':_0x4fe16c[_0xec4b('0x49')]['id']}})['then'](function(_0x3be589){if(_0x3be589){if(!_0x4fe16c['body'][_0xec4b('0x72')]||!utils[_0xec4b('0x73')](_0x4fe16c[_0xec4b('0x4e')][_0xec4b('0x72')])){throw new db['Sequelize'][(_0xec4b('0x74'))](_0xec4b('0x75'));}return _0x3be589[_0xec4b('0x7b')+_[_0xec4b('0x76')](_0x4fe16c['body'][_0xec4b('0x72')][_0xec4b('0x77')]())+_0xec4b('0x79')](_0x4fe16c[_0xec4b('0x4e')][_0xec4b('0x7c')]);}return null;})[_0xec4b('0x29')](handleEntityNotFound(_0x1360d3,null))[_0xec4b('0x29')](respondWithStatusCode(_0x1360d3,null))[_0xec4b('0x48')](handleError(_0x1360d3,null));};exports[_0xec4b('0x7d')]=function(_0xca5ff1,_0xbb2791,_0x5686a7){return db[_0xec4b('0x30')][_0xec4b('0x71')]({'where':{'id':_0xca5ff1['params']['id']}})['then'](function(_0x4ef5ac){if(_0x4ef5ac){if(!_0xca5ff1[_0xec4b('0x35')]['channel']||!utils[_0xec4b('0x73')](_0xca5ff1[_0xec4b('0x35')]['channel'])){throw new db['Sequelize'][(_0xec4b('0x74'))]('Unknown\x20channel');}return _0x4ef5ac[_0xec4b('0x7e')+_[_0xec4b('0x76')](_0xca5ff1[_0xec4b('0x35')][_0xec4b('0x72')][_0xec4b('0x77')]())+'Queues'](_0xca5ff1[_0xec4b('0x35')][_0xec4b('0x7c')]);}return null;})[_0xec4b('0x29')](handleEntityNotFound(_0xbb2791,null))[_0xec4b('0x29')](respondWithStatusCode(_0xbb2791,null))[_0xec4b('0x48')](handleError(_0xbb2791,null));};exports[_0xec4b('0x7f')]=function(_0x43c581,_0x19f296){var _0x7d9ff3=_[_0xec4b('0x80')](_0x43c581[_0xec4b('0x4e')][_0xec4b('0x7c')])?_0x43c581[_0xec4b('0x4e')]['ids']:[_0x43c581[_0xec4b('0x4e')]['ids']];var _0x1654a0=_0x43c581[_0xec4b('0x49')]['id'];return db[_0xec4b('0x30')][_0xec4b('0x4c')]({'where':{'id':_0x1654a0}})[_0xec4b('0x29')](handleEntityNotFound(_0x19f296,null))['then'](function(_0x216f3b){if(_0x216f3b){var _0x510dd8=[_0xec4b('0x81'),_0xec4b('0x82'),'Mail',_0xec4b('0x83'),_0xec4b('0x84'),_0xec4b('0x85'),'Whatsapp'];return db['sequelize'][_0xec4b('0x56')](function(_0x3b14ff){var _0x3b3e3a=_[_0xec4b('0x2f')](_0x510dd8,function(_0x31ec16){var _0x2df80c={'attributes':['id',_0xec4b('0x2c')]};if(_0x31ec16===_0xec4b('0x81')){_0x2df80c['through']={'attributes':[_0xec4b('0x86')]};}return _0x216f3b[_0xec4b('0x51')+_0x31ec16+_0xec4b('0x79')](_0x2df80c)[_0xec4b('0x29')](function(_0x125159){var _0x1e1dfc=_['map'](_0x125159,function(_0x24bb67){var _0x1dc336=_[_0xec4b('0x2f')](_0x7d9ff3,function(_0xfc042d){var _0xef6f54={'where':{'UserId':_0xfc042d,[_0x31ec16+_0xec4b('0x87')]:_0x24bb67['id']},'transaction':_0x3b14ff};if(_0x31ec16===_0xec4b('0x81')){_0xef6f54['defaults']={'penalty':_0x24bb67[_0xec4b('0x88')][_0xec4b('0x86')]};}return db[_0xec4b('0x89')+_0x31ec16+_0xec4b('0x78')][_0xec4b('0x8a')](_0xef6f54)[_0xec4b('0x29')](function(){socket[_0xec4b('0x8b')]('user'+_0x31ec16+'Queue:save',{'UserId':_0xfc042d,[_0x31ec16+_0xec4b('0x87')]:_0x24bb67['id']});if(_0x31ec16!==_0xec4b('0x81')){return;}return db[_0xec4b('0x89')][_0xec4b('0x47')]({'where':{'id':_0x7d9ff3,'online':0x1},'attributes':['id','name',_0xec4b('0x8c'),_0xec4b('0x8d'),_0xec4b('0x8e')],'raw':!![]})['then'](function(_0x3aac52){var _0x1d4a71=_[_0xec4b('0x2f')](_0x3aac52,function(_0x529173){return db[_0xec4b('0x8f')][_0xec4b('0x90')]({'membername':_0x529173[_0xec4b('0x2c')],'UserId':_0x529173['id'],'queue_name':_0x24bb67[_0xec4b('0x2c')],'VoiceQueueId':_0x24bb67['id'],'interface':_[_0xec4b('0x91')](_0x529173['interface'])?util[_0xec4b('0x92')](_0xec4b('0x93'),_0x529173[_0xec4b('0x2c')]):_0x529173['interface'],'paused':_0x529173[_0xec4b('0x8d')]||![],'penalty':_0x24bb67[_0xec4b('0x88')][_0xec4b('0x86')]},{'transaction':_0x3b14ff});});return Promise[_0xec4b('0x94')](_0x1d4a71);});});});return Promise[_0xec4b('0x94')](_0x1dc336);});return Promise[_0xec4b('0x94')](_0x1e1dfc);})[_0xec4b('0x29')](function(){return db['TeamVoicePrefix'][_0xec4b('0x71')]({'where':{'teamId':_0x1654a0}})[_0xec4b('0x29')](function(_0x222204){if(_0x222204){var _0x23daff=_['map'](_0x7d9ff3,function(_0x54ef62){db[_0xec4b('0x95')][_0xec4b('0x90')]({'UserId':_0x54ef62,'VoicePrefixId':_0x222204[_0xec4b('0x6f')]});});return Promise[_0xec4b('0x94')](_0x23daff);}});});});return Promise['all'](_0x3b3e3a)[_0xec4b('0x29')](function(){return _0x216f3b[_0xec4b('0x7f')](_0x7d9ff3,{'transaction':_0x3b14ff})[_0xec4b('0x96')](function(_0x257d10){return _0x257d10;});});});}})[_0xec4b('0x29')](respondWithResult(_0x19f296,null))['catch'](handleError(_0x19f296,null));};exports['removeAgents']=function(_0xdb8085,_0x4efd2c){var _0x2552b2=_[_0xec4b('0x80')](_0xdb8085[_0xec4b('0x35')][_0xec4b('0x7c')])?_0xdb8085[_0xec4b('0x35')][_0xec4b('0x7c')]:[_0xdb8085[_0xec4b('0x35')]['ids']];var _0x2386a8=_0xdb8085[_0xec4b('0x49')]['id'];return db[_0xec4b('0x30')]['find']({'where':{'id':_0x2386a8}})[_0xec4b('0x29')](handleEntityNotFound(_0x4efd2c,null))[_0xec4b('0x29')](function(_0x313345){if(_0x313345){var _0x25e690=[_0xec4b('0x81'),'Chat',_0xec4b('0x97'),'Sms','Fax',_0xec4b('0x85'),_0xec4b('0x98')];return db[_0xec4b('0x5c')]['transaction'](function(_0x16ec95){var _0x5d10ff=_[_0xec4b('0x2f')](_0x25e690,function(_0x5ea302){var _0x3e38c3={'attributes':['id',_0xec4b('0x2c')]};return _0x313345[_0xec4b('0x51')+_0x5ea302+'Queues'](_0x3e38c3)[_0xec4b('0x29')](function(_0x52018f){var _0x1e634d=_[_0xec4b('0x2f')](_0x52018f,function(_0x564fe6){return _0x564fe6[_0xec4b('0x99')](_0x2552b2,{'transaction':_0x16ec95})['then'](function(){var _0x28f273=_[_0xec4b('0x2f')](_0x2552b2,function(_0x5dea64){socket[_0xec4b('0x8b')](_0xec4b('0x4f')+_0x5ea302+_0xec4b('0x9a'),{'UserId':Number(_0x5dea64),[_0x5ea302+_0xec4b('0x87')]:_0x564fe6['id']});if(_0x5ea302!==_0xec4b('0x81')){return;}return db['UserVoiceQueueRt'][_0xec4b('0x55')]({'where':{'VoiceQueueId':_0x564fe6['id'],'UserId':_0x5dea64},'transaction':_0x16ec95});});return Promise[_0xec4b('0x94')](_0x28f273);});});return Promise[_0xec4b('0x94')](_0x1e634d);});});return Promise[_0xec4b('0x94')](_0x5d10ff)[_0xec4b('0x29')](function(){return _0x313345['removeAgents'](_0x2552b2,{'transaction':_0x16ec95});})[_0xec4b('0x29')](function(){return db[_0xec4b('0x9b')][_0xec4b('0x71')]({'where':{'teamId':_0x2386a8}})['then'](function(_0x1a3598){if(_0x1a3598){var _0x391347=_['map'](_0x2552b2,function(_0x2a5251){db[_0xec4b('0x95')]['destroy']({'where':{'UserId':_0x2a5251,'VoicePrefixId':_0x1a3598[_0xec4b('0x6f')]}});});return Promise[_0xec4b('0x94')](_0x391347);}});});});}})[_0xec4b('0x29')](respondWithStatusCode(_0x4efd2c,null))[_0xec4b('0x48')](handleError(_0x4efd2c,null));};exports[_0xec4b('0x9c')]=function(_0x18b72a,_0x143856,_0x5ac222){var _0x37df82={};var _0x1ec7cb={};var _0x2f95ad;var _0x220e2f;return db[_0xec4b('0x30')]['findOne']({'where':{'id':_0x18b72a[_0xec4b('0x49')]['id']}})[_0xec4b('0x29')](handleEntityNotFound(_0x143856,null))[_0xec4b('0x29')](function(_0xa99b7e){if(_0xa99b7e){_0x2f95ad=_0xa99b7e;_0x1ec7cb[_0xec4b('0x38')]=_[_0xec4b('0x4a')](db[_0xec4b('0x89')][_0xec4b('0x31')]);_0x1ec7cb[_0xec4b('0x35')]=_['keys'](_0x18b72a[_0xec4b('0x35')]);_0x1ec7cb[_0xec4b('0x41')]=_[_0xec4b('0x36')](_0x1ec7cb[_0xec4b('0x38')],_0x1ec7cb[_0xec4b('0x35')]);_0x37df82[_0xec4b('0x37')]=_[_0xec4b('0x36')](_0x1ec7cb['model'],qs[_0xec4b('0x39')](_0x18b72a[_0xec4b('0x35')][_0xec4b('0x39')]));_0x37df82[_0xec4b('0x37')]=_0x37df82[_0xec4b('0x37')][_0xec4b('0x3a')]?_0x37df82[_0xec4b('0x37')]:_0x1ec7cb['model'];_0x37df82[_0xec4b('0x3d')]=qs[_0xec4b('0x3e')](_0x18b72a[_0xec4b('0x35')][_0xec4b('0x3e')]);_0x37df82[_0xec4b('0x3f')]=qs['filters'](_[_0xec4b('0x40')](_0x18b72a[_0xec4b('0x35')],_0x1ec7cb[_0xec4b('0x41')]));if(_0x18b72a[_0xec4b('0x35')][_0xec4b('0x42')]){_0x37df82[_0xec4b('0x3f')]=_['merge'](_0x37df82[_0xec4b('0x3f')],{'$or':_['map'](_0x37df82[_0xec4b('0x37')],function(_0xd03fef){var _0x37e7ed={};_0x37e7ed[_0xd03fef]={'$like':'%'+_0x18b72a['query'][_0xec4b('0x42')]+'%'};return _0x37e7ed;})});}_0x37df82=_[_0xec4b('0x43')]({},_0x37df82,_0x18b72a[_0xec4b('0x45')]);return _0x2f95ad[_0xec4b('0x9c')](_0x37df82);}})['then'](function(_0x23e2d0){if(_0x23e2d0){_0x220e2f=_0x23e2d0[_0xec4b('0x3a')];if(!_0x18b72a[_0xec4b('0x35')][_0xec4b('0x3b')]('nolimit')){_0x37df82[_0xec4b('0x22')]=qs[_0xec4b('0x22')](_0x18b72a[_0xec4b('0x35')]['limit']);_0x37df82[_0xec4b('0x20')]=qs[_0xec4b('0x20')](_0x18b72a[_0xec4b('0x35')][_0xec4b('0x20')]);}return _0x2f95ad[_0xec4b('0x9c')](_0x37df82);}})[_0xec4b('0x29')](function(_0x22bf37){if(_0x22bf37){return _0x22bf37?{'count':_0x220e2f,'rows':_0x22bf37}:null;}})[_0xec4b('0x29')](respondWithResult(_0x143856,null))[_0xec4b('0x48')](handleError(_0x143856,null));};
\ No newline at end of file
index d556252..e31309a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2fce=['save','update','remove','emit','hasOwnProperty','events','Team','setMaxListeners'];(function(_0x2e2ef8,_0x3d9284){var _0x2b0792=function(_0xf2cdbc){while(--_0xf2cdbc){_0x2e2ef8['push'](_0x2e2ef8['shift']());}};_0x2b0792(++_0x3d9284);}(_0x2fce,0x19d));var _0xe2fc=function(_0x351e18,_0x22e3c0){_0x351e18=_0x351e18-0x0;var _0x1abbca=_0x2fce[_0x351e18];return _0x1abbca;};'use strict';var EventEmitter=require(_0xe2fc('0x0'));var Team=require('../../mysqldb')['db'][_0xe2fc('0x1')];var TeamEvents=new EventEmitter();TeamEvents[_0xe2fc('0x2')](0x0);var events={'afterCreate':_0xe2fc('0x3'),'afterUpdate':_0xe2fc('0x4'),'afterDestroy':_0xe2fc('0x5')};function emitEvent(_0xe4e71b){return function(_0x2b598c,_0x398bd2,_0x4a514f){TeamEvents[_0xe2fc('0x6')](_0xe4e71b+':'+_0x2b598c['id'],_0x2b598c);TeamEvents[_0xe2fc('0x6')](_0xe4e71b,_0x2b598c);_0x4a514f(null);};}for(var e in events){if(events[_0xe2fc('0x7')](e)){var event=events[e];Team['hook'](e,emitEvent(event));}}module['exports']=TeamEvents;
\ No newline at end of file
+var _0xda78=['setMaxListeners','save','emit','hook','../../mysqldb','Team'];(function(_0x2c2bc3,_0x2f5f90){var _0x340a54=function(_0x580bee){while(--_0x580bee){_0x2c2bc3['push'](_0x2c2bc3['shift']());}};_0x340a54(++_0x2f5f90);}(_0xda78,0xb2));var _0x8da7=function(_0x56e5af,_0x5353db){_0x56e5af=_0x56e5af-0x0;var _0x5ee800=_0xda78[_0x56e5af];return _0x5ee800;};'use strict';var EventEmitter=require('events');var Team=require(_0x8da7('0x0'))['db'][_0x8da7('0x1')];var TeamEvents=new EventEmitter();TeamEvents[_0x8da7('0x2')](0x0);var events={'afterCreate':_0x8da7('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x486ad2){return function(_0x231b63,_0x41d605,_0x4987e6){TeamEvents[_0x8da7('0x4')](_0x486ad2+':'+_0x231b63['id'],_0x231b63);TeamEvents[_0x8da7('0x4')](_0x486ad2,_0x231b63);_0x4987e6(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Team[_0x8da7('0x5')](e,emitEvent(event));}}module['exports']=TeamEvents;
\ No newline at end of file
index 3113298..4cd559e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37f9=['resolve','all','lodash','./team.attributes','get','Queues','then','map','setDataValue','channel','catch','exports','define','Team','teams','Chat','Fax','Mail','Openchannel','Sms'];(function(_0x3f4f9e,_0x47227e){var _0x3b2a1b=function(_0x20f640){while(--_0x20f640){_0x3f4f9e['push'](_0x3f4f9e['shift']());}};_0x3b2a1b(++_0x47227e);}(_0x37f9,0x142));var _0x937f=function(_0x4f1e6d,_0x8924de){_0x4f1e6d=_0x4f1e6d-0x0;var _0xdc791e=_0x37f9[_0x4f1e6d];return _0xdc791e;};'use strict';var _=require(_0x937f('0x0'));var attributes=require(_0x937f('0x1'));function getQueuesByChannel(_0x58168d,_0x3c4b71){var _0x46d091=_0x937f('0x2')+_0x3c4b71+_0x937f('0x3');return _0x58168d[_0x46d091]()[_0x937f('0x4')](function(_0x24d641){return _[_0x937f('0x5')](_0x24d641,function(_0x5c4717){_0x5c4717[_0x937f('0x6')](_0x937f('0x7'),_0x3c4b71);return _0x5c4717;});})[_0x937f('0x8')](function(_0x2b3024){throw _0x2b3024;});}module[_0x937f('0x9')]=function(_0x11f224){return _0x11f224[_0x937f('0xa')](_0x937f('0xb'),attributes,{'tableName':_0x937f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getAssociatedQueues':function(){var _0x115b24=this;var _0x754b3b=[_0x937f('0xd'),_0x937f('0xe'),_0x937f('0xf'),_0x937f('0x10'),_0x937f('0x11'),'Voice','Whatsapp'];return Promise[_0x937f('0x12')]()['then'](function(){var _0x3b68d0=_['map'](_0x754b3b,function(_0x35654f){return getQueuesByChannel(_0x115b24,_0x35654f);});return Promise[_0x937f('0x13')](_0x3b68d0);})[_0x937f('0x8')](function(_0x5049a7){throw _0x5049a7;});}}});};
\ No newline at end of file
+var _0x565e=['teams','Openchannel','Sms','Voice','resolve','map','all','catch','./team.attributes','get','Queues','then','setDataValue','channel','exports','define','Team'];(function(_0x13d60f,_0xaa3f3b){var _0x3081ec=function(_0x51fe0a){while(--_0x51fe0a){_0x13d60f['push'](_0x13d60f['shift']());}};_0x3081ec(++_0xaa3f3b);}(_0x565e,0x7f));var _0xe565=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x565e[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var attributes=require(_0xe565('0x0'));function getQueuesByChannel(_0x46846f,_0xba7d03){var _0x5a4698=_0xe565('0x1')+_0xba7d03+_0xe565('0x2');return _0x46846f[_0x5a4698]()[_0xe565('0x3')](function(_0x5e635d){return _['map'](_0x5e635d,function(_0x430ee3){_0x430ee3[_0xe565('0x4')](_0xe565('0x5'),_0xba7d03);return _0x430ee3;});})['catch'](function(_0x423b6e){throw _0x423b6e;});}module[_0xe565('0x6')]=function(_0x2023f3){return _0x2023f3[_0xe565('0x7')](_0xe565('0x8'),attributes,{'tableName':_0xe565('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getAssociatedQueues':function(){var _0x14c73d=this;var _0x534484=['Chat','Fax','Mail',_0xe565('0xa'),_0xe565('0xb'),_0xe565('0xc'),'Whatsapp'];return Promise[_0xe565('0xd')]()[_0xe565('0x3')](function(){var _0x2377cc=_[_0xe565('0xe')](_0x534484,function(_0x25acf6){return getQueuesByChannel(_0x14c73d,_0x25acf6);});return Promise[_0xe565('0xf')](_0x2377cc);})[_0xe565('0x10')](function(_0x4dc994){throw _0x4dc994;});}}});};
\ No newline at end of file
index 3a22b04..0489a9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d49=['../../config/utils','../../config/logger','rpc','client','http','redis','socket.io-emitter','./team.socket','register','request','info','Team,\x20%s,\x20%s','Team,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','bluebird','randomstring','../../mysqldb'];(function(_0x3e5dfe,_0x678723){var _0x5d9284=function(_0x14a765){while(--_0x14a765){_0x3e5dfe['push'](_0x3e5dfe['shift']());}};_0x5d9284(++_0x678723);}(_0x0d49,0x14d));var _0x90d4=function(_0x1f737c,_0x582c8c){_0x1f737c=_0x1f737c-0x0;var _0x2df3dc=_0x0d49[_0x1f737c];return _0x2df3dc;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x90d4('0x0'));var rs=require(_0x90d4('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x90d4('0x2'))['db'];var utils=require(_0x90d4('0x3'));var logger=require(_0x90d4('0x4'))(_0x90d4('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x90d4('0x6')][_0x90d4('0x7')]({'port':0x232a});config[_0x90d4('0x8')]=_['defaults'](config[_0x90d4('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0x90d4('0x9'))(new Redis(config[_0x90d4('0x8')]));require(_0x90d4('0xa'))[_0x90d4('0xb')](socket);function respondWithRpcPromise(_0x49fa71,_0x31db30,_0x18886c){return new BPromise(function(_0x3db3ee,_0x3b16e4){return client[_0x90d4('0xc')](_0x49fa71,_0x18886c)['then'](function(_0x37a0bc){logger[_0x90d4('0xd')](_0x90d4('0xe'),_0x31db30,'request\x20sent');logger['debug'](_0x90d4('0xf'),_0x31db30,'request\x20sent',JSON[_0x90d4('0x10')](_0x37a0bc));if(_0x37a0bc[_0x90d4('0x11')]){if(_0x37a0bc['error']['code']===0x1f4){logger[_0x90d4('0x11')](_0x90d4('0xe'),_0x31db30,_0x37a0bc[_0x90d4('0x11')][_0x90d4('0x12')]);return _0x3b16e4(_0x37a0bc[_0x90d4('0x11')][_0x90d4('0x12')]);}logger[_0x90d4('0x11')]('Team,\x20%s,\x20%s',_0x31db30,_0x37a0bc[_0x90d4('0x11')][_0x90d4('0x12')]);return _0x3db3ee(_0x37a0bc[_0x90d4('0x11')][_0x90d4('0x12')]);}else{logger['info'](_0x90d4('0xe'),_0x31db30,_0x90d4('0x13'));_0x3db3ee(_0x37a0bc[_0x90d4('0x14')][_0x90d4('0x12')]);}})['catch'](function(_0x414e9b){logger[_0x90d4('0x11')](_0x90d4('0xe'),_0x31db30,_0x414e9b);_0x3b16e4(_0x414e9b);});});}
\ No newline at end of file
+var _0xca39=['lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./team.socket','register','request','Team,\x20%s,\x20%s','request\x20sent','debug','Team,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch'];(function(_0x48fa3f,_0x700760){var _0x16037d=function(_0x23fe27){while(--_0x23fe27){_0x48fa3f['push'](_0x48fa3f['shift']());}};_0x16037d(++_0x700760);}(_0xca39,0x1b3));var _0x9ca3=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xca39[_0x5ddb1c];return _0x354adc;};'use strict';var _=require(_0x9ca3('0x0'));var util=require(_0x9ca3('0x1'));var moment=require(_0x9ca3('0x2'));var BPromise=require(_0x9ca3('0x3'));var rs=require(_0x9ca3('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x9ca3('0x5'));var logger=require(_0x9ca3('0x6'))(_0x9ca3('0x7'));var config=require(_0x9ca3('0x8'));var jayson=require(_0x9ca3('0x9'));var client=jayson[_0x9ca3('0xa')][_0x9ca3('0xb')]({'port':0x232a});config[_0x9ca3('0xc')]=_[_0x9ca3('0xd')](config['redis'],{'host':_0x9ca3('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9ca3('0xc')]));require(_0x9ca3('0xf'))[_0x9ca3('0x10')](socket);function respondWithRpcPromise(_0x99a23d,_0x22cb13,_0x6993b0){return new BPromise(function(_0x38defa,_0x40985f){return client[_0x9ca3('0x11')](_0x99a23d,_0x6993b0)['then'](function(_0x271a43){logger['info'](_0x9ca3('0x12'),_0x22cb13,_0x9ca3('0x13'));logger[_0x9ca3('0x14')](_0x9ca3('0x15'),_0x22cb13,_0x9ca3('0x13'),JSON[_0x9ca3('0x16')](_0x271a43));if(_0x271a43[_0x9ca3('0x17')]){if(_0x271a43[_0x9ca3('0x17')][_0x9ca3('0x18')]===0x1f4){logger['error'](_0x9ca3('0x12'),_0x22cb13,_0x271a43['error']['message']);return _0x40985f(_0x271a43[_0x9ca3('0x17')][_0x9ca3('0x19')]);}logger[_0x9ca3('0x17')](_0x9ca3('0x12'),_0x22cb13,_0x271a43[_0x9ca3('0x17')][_0x9ca3('0x19')]);return _0x38defa(_0x271a43[_0x9ca3('0x17')]['message']);}else{logger[_0x9ca3('0x1a')]('Team,\x20%s,\x20%s',_0x22cb13,_0x9ca3('0x13'));_0x38defa(_0x271a43[_0x9ca3('0x1b')]['message']);}})[_0x9ca3('0x1c')](function(_0x1f1ab0){logger[_0x9ca3('0x17')]('Team,\x20%s,\x20%s',_0x22cb13,_0x1f1ab0);_0x40985f(_0x1f1ab0);});});}
\ No newline at end of file
index 610246c..bd3fe95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8546=['emit','removeListener','register','length','team:','save','remove','update'];(function(_0x119de3,_0x53950c){var _0x5ec1f4=function(_0x3e0775){while(--_0x3e0775){_0x119de3['push'](_0x119de3['shift']());}};_0x5ec1f4(++_0x53950c);}(_0x8546,0x75));var _0x6854=function(_0x3bf17a,_0x155f1f){_0x3bf17a=_0x3bf17a-0x0;var _0x5302e3=_0x8546[_0x3bf17a];return _0x5302e3;};'use strict';var TeamEvents=require('./team.events');var events=[_0x6854('0x0'),_0x6854('0x1'),_0x6854('0x2')];function createListener(_0x175253,_0x25338f){return function(_0x2708ce){_0x25338f[_0x6854('0x3')](_0x175253,_0x2708ce);};}function removeListener(_0xa90d66,_0x117674){return function(){TeamEvents[_0x6854('0x4')](_0xa90d66,_0x117674);};}exports[_0x6854('0x5')]=function(_0x43765f){for(var _0x38ab8f=0x0,_0x149138=events[_0x6854('0x6')];_0x38ab8f<_0x149138;_0x38ab8f++){var _0x180f79=events[_0x38ab8f];var _0x126d83=createListener(_0x6854('0x7')+_0x180f79,_0x43765f);TeamEvents['on'](_0x180f79,_0x126d83);}};
\ No newline at end of file
+var _0xee4e=['length','team:','./team.events','save','remove','emit','removeListener','register'];(function(_0x596e98,_0xc326c9){var _0x1c09ac=function(_0x3d839d){while(--_0x3d839d){_0x596e98['push'](_0x596e98['shift']());}};_0x1c09ac(++_0xc326c9);}(_0xee4e,0x122));var _0xeee4=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0xee4e[_0x4243a3];return _0x1b2a33;};'use strict';var TeamEvents=require(_0xeee4('0x0'));var events=[_0xeee4('0x1'),_0xeee4('0x2'),'update'];function createListener(_0x171016,_0x827900){return function(_0x33e574){_0x827900[_0xeee4('0x3')](_0x171016,_0x33e574);};}function removeListener(_0x2012a1,_0x30fe5a){return function(){TeamEvents[_0xeee4('0x4')](_0x2012a1,_0x30fe5a);};}exports[_0xeee4('0x5')]=function(_0x5564f7){for(var _0xcf3bbd=0x0,_0x148296=events[_0xeee4('0x6')];_0xcf3bbd<_0x148296;_0xcf3bbd++){var _0x593262=events[_0xcf3bbd];var _0x25f0ed=createListener(_0xeee4('0x7')+_0x593262,_0x5564f7);TeamEvents['on'](_0x593262,_0x25f0ed);}};
\ No newline at end of file
index cf89702..ddf2a16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed8a=['exports','INTEGER','sequelize'];(function(_0x476bf4,_0x2a3755){var _0x788ffe=function(_0x13fa11){while(--_0x13fa11){_0x476bf4['push'](_0x476bf4['shift']());}};_0x788ffe(++_0x2a3755);}(_0xed8a,0xc5));var _0xaed8=function(_0x2fd880,_0x25d6a1){_0x2fd880=_0x2fd880-0x0;var _0xb43d0a=_0xed8a[_0x2fd880];return _0xb43d0a;};'use strict';var Sequelize=require(_0xaed8('0x0'));module[_0xaed8('0x1')]={'TeamId':{'type':Sequelize[_0xaed8('0x2')]},'VoicePrefixId':{'type':Sequelize[_0xaed8('0x2')]}};
\ No newline at end of file
+var _0xdadd=['sequelize','INTEGER'];(function(_0x23fd1b,_0x469cab){var _0x304e83=function(_0x5c0d6a){while(--_0x5c0d6a){_0x23fd1b['push'](_0x23fd1b['shift']());}};_0x304e83(++_0x469cab);}(_0xdadd,0x1c8));var _0xddad=function(_0x482431,_0x22caff){_0x482431=_0x482431-0x0;var _0x484ade=_0xdadd[_0x482431];return _0x484ade;};'use strict';var Sequelize=require(_0xddad('0x0'));module['exports']={'TeamId':{'type':Sequelize[_0xddad('0x1')]},'VoicePrefixId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index d66f9d1..0b709be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5dd=['./teamVoicePrefix.attributes','exports','define','TeamVoicePrefix','team_has_voice_prefixes','lodash','api','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x112b7c,_0x14c678){var _0x28d51f=function(_0x2dc04f){while(--_0x2dc04f){_0x112b7c['push'](_0x112b7c['shift']());}};_0x28d51f(++_0x14c678);}(_0xa5dd,0x101));var _0xda5d=function(_0x3155a8,_0x3803ab){_0x3155a8=_0x3155a8-0x0;var _0x132313=_0xa5dd[_0x3155a8];return _0x132313;};'use strict';var _=require(_0xda5d('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xda5d('0x1'));var moment=require(_0xda5d('0x2'));var BPromise=require(_0xda5d('0x3'));var rp=require(_0xda5d('0x4'));var fs=require('fs');var path=require(_0xda5d('0x5'));var rimraf=require('rimraf');var config=require(_0xda5d('0x6'));var attributes=require(_0xda5d('0x7'));module[_0xda5d('0x8')]=function(_0x5a437a,_0x555107){return _0x5a437a[_0xda5d('0x9')](_0xda5d('0xa'),attributes,{'tableName':_0xda5d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2f68=['../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./teamVoicePrefix.attributes','exports','define','team_has_voice_prefixes','util'];(function(_0x5788ed,_0x35e0f1){var _0x5d2351=function(_0x421239){while(--_0x421239){_0x5788ed['push'](_0x5788ed['shift']());}};_0x5d2351(++_0x35e0f1);}(_0x2f68,0x12b));var _0x82f6=function(_0x105378,_0x449ce7){_0x105378=_0x105378-0x0;var _0x4a754c=_0x2f68[_0x105378];return _0x4a754c;};'use strict';var _=require('lodash');var util=require(_0x82f6('0x0'));var logger=require(_0x82f6('0x1'))(_0x82f6('0x2'));var moment=require(_0x82f6('0x3'));var BPromise=require(_0x82f6('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x82f6('0x5'));var rimraf=require(_0x82f6('0x6'));var config=require(_0x82f6('0x7'));var attributes=require(_0x82f6('0x8'));module[_0x82f6('0x9')]=function(_0x5ba356,_0x5d37fe){return _0x5ba356[_0x82f6('0xa')]('TeamVoicePrefix',attributes,{'tableName':_0x82f6('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d107947..a0a5136 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(_0x55fd0e,_0x2d994b){var _0x4fe939=function(_0x108f83){while(--_0x108f83){_0x55fd0e['push'](_0x55fd0e['shift']());}};_0x4fe939(++_0x2d994b);}(_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(_0x4a245c,_0x5c4c98){var _0x3c68c0=function(_0x425155){while(--_0x425155){_0x4a245c['push'](_0x4a245c['shift']());}};_0x3c68c0(++_0x5c4c98);}(_0x70e0,0x17b));var _0x070e=function(_0x4bed1d,_0x542638){_0x4bed1d=_0x4bed1d-0x0;var _0x417ade=_0x70e0[_0x4bed1d];return _0x417ade;};'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 9006424..cf08a90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-'use strict';var Sequelize=require('sequelize');module['exports']={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x7ae5=['INTEGER','sequelize','exports'];(function(_0x3e750b,_0x2070d9){var _0x1e2ac3=function(_0x214aca){while(--_0x214aca){_0x3e750b['push'](_0x3e750b['shift']());}};_0x1e2ac3(++_0x2070d9);}(_0x7ae5,0x133));var _0x57ae=function(_0x4fabbe,_0xc514f3){_0x4fabbe=_0x4fabbe-0x0;var _0x5510dd=_0x7ae5[_0x4fabbe];return _0x5510dd;};'use strict';var Sequelize=require(_0x57ae('0x0'));module[_0x57ae('0x1')]={'penalty':{'type':Sequelize[_0x57ae('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 2352835..46c7a24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5cd8=['./teamVoiceQueue.attributes','exports','TeamVoiceQueue','team_has_voice_queues','lodash','../../config/logger','api','moment','bluebird','path','../../config/environment'];(function(_0x527407,_0xb23409){var _0x2f00fa=function(_0xd88ace){while(--_0xd88ace){_0x527407['push'](_0x527407['shift']());}};_0x2f00fa(++_0xb23409);}(_0x5cd8,0x1d2));var _0x85cd=function(_0x16f160,_0x8b0a98){_0x16f160=_0x16f160-0x0;var _0x3837e7=_0x5cd8[_0x16f160];return _0x3837e7;};'use strict';var _=require(_0x85cd('0x0'));var util=require('util');var logger=require(_0x85cd('0x1'))(_0x85cd('0x2'));var moment=require(_0x85cd('0x3'));var BPromise=require(_0x85cd('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x85cd('0x5'));var rimraf=require('rimraf');var config=require(_0x85cd('0x6'));var attributes=require(_0x85cd('0x7'));module[_0x85cd('0x8')]=function(_0x322e08,_0xcfad76){return _0x322e08['define'](_0x85cd('0x9'),attributes,{'tableName':_0x85cd('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1de4=['path','../../config/environment','./teamVoiceQueue.attributes','define','TeamVoiceQueue','lodash','util','../../config/logger','api','bluebird','request-promise'];(function(_0x8a2c26,_0x246010){var _0x2ec5e9=function(_0x532377){while(--_0x532377){_0x8a2c26['push'](_0x8a2c26['shift']());}};_0x2ec5e9(++_0x246010);}(_0x1de4,0x94));var _0x41de=function(_0x3a9cdc,_0x20f028){_0x3a9cdc=_0x3a9cdc-0x0;var _0x1ad79d=_0x1de4[_0x3a9cdc];return _0x1ad79d;};'use strict';var _=require(_0x41de('0x0'));var util=require(_0x41de('0x1'));var logger=require(_0x41de('0x2'))(_0x41de('0x3'));var moment=require('moment');var BPromise=require(_0x41de('0x4'));var rp=require(_0x41de('0x5'));var fs=require('fs');var path=require(_0x41de('0x6'));var rimraf=require('rimraf');var config=require(_0x41de('0x7'));var attributes=require(_0x41de('0x8'));module['exports']=function(_0x2e7196,_0x122565){return _0x2e7196[_0x41de('0x9')](_0x41de('0xa'),attributes,{'tableName':'team_has_voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d7a02e6..5eeba4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec25=['catch','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','TeamVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result'];(function(_0x3b8efd,_0x2d7db1){var _0x42c93a=function(_0x4a50fe){while(--_0x4a50fe){_0x3b8efd['push'](_0x3b8efd['shift']());}};_0x42c93a(++_0x2d7db1);}(_0xec25,0x1b9));var _0x5ec2=function(_0x170995,_0x294e09){_0x170995=_0x170995-0x0;var _0x1c117e=_0xec25[_0x170995];return _0x1c117e;};'use strict';var _=require('lodash');var util=require(_0x5ec2('0x0'));var moment=require('moment');var BPromise=require(_0x5ec2('0x1'));var rs=require(_0x5ec2('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5ec2('0x3'))['db'];var utils=require(_0x5ec2('0x4'));var logger=require(_0x5ec2('0x5'))(_0x5ec2('0x6'));var config=require('../../config/environment');var jayson=require(_0x5ec2('0x7'));var client=jayson[_0x5ec2('0x8')][_0x5ec2('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x10cc1d,_0x2e4bae,_0x48d0a1){return new BPromise(function(_0x5c7158,_0x1a8e63){return client[_0x5ec2('0xa')](_0x10cc1d,_0x48d0a1)['then'](function(_0x53193e){logger['info'](_0x5ec2('0xb'),_0x2e4bae,_0x5ec2('0xc'));logger[_0x5ec2('0xd')](_0x5ec2('0xe'),_0x2e4bae,'request\x20sent',JSON[_0x5ec2('0xf')](_0x53193e));if(_0x53193e[_0x5ec2('0x10')]){if(_0x53193e[_0x5ec2('0x10')][_0x5ec2('0x11')]===0x1f4){logger[_0x5ec2('0x10')](_0x5ec2('0xb'),_0x2e4bae,_0x53193e[_0x5ec2('0x10')][_0x5ec2('0x12')]);return _0x1a8e63(_0x53193e['error']['message']);}logger[_0x5ec2('0x10')]('TeamVoiceQueue,\x20%s,\x20%s',_0x2e4bae,_0x53193e[_0x5ec2('0x10')][_0x5ec2('0x12')]);return _0x5c7158(_0x53193e[_0x5ec2('0x10')]['message']);}else{logger[_0x5ec2('0x13')](_0x5ec2('0xb'),_0x2e4bae,'request\x20sent');_0x5c7158(_0x53193e[_0x5ec2('0x14')][_0x5ec2('0x12')]);}})[_0x5ec2('0x15')](function(_0x24c496){logger['error'](_0x5ec2('0xb'),_0x2e4bae,_0x24c496);_0x1a8e63(_0x24c496);});});}
\ No newline at end of file
+var _0x447b=['info','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','TeamVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x3ab9ee,_0x4a74b8){var _0x82ee88=function(_0x6ccc7e){while(--_0x6ccc7e){_0x3ab9ee['push'](_0x3ab9ee['shift']());}};_0x82ee88(++_0x4a74b8);}(_0x447b,0xe4));var _0xb447=function(_0xe550f7,_0x13064a){_0xe550f7=_0xe550f7-0x0;var _0x54f8e6=_0x447b[_0xe550f7];return _0x54f8e6;};'use strict';var _=require(_0xb447('0x0'));var util=require(_0xb447('0x1'));var moment=require('moment');var BPromise=require(_0xb447('0x2'));var rs=require(_0xb447('0x3'));var fs=require('fs');var Redis=require(_0xb447('0x4'));var db=require(_0xb447('0x5'))['db'];var utils=require(_0xb447('0x6'));var logger=require(_0xb447('0x7'))(_0xb447('0x8'));var config=require(_0xb447('0x9'));var jayson=require(_0xb447('0xa'));var client=jayson[_0xb447('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4e0f42,_0x2e919c,_0x588700){return new BPromise(function(_0x3ea00b,_0x210bc5){return client[_0xb447('0xc')](_0x4e0f42,_0x588700)[_0xb447('0xd')](function(_0x1972c9){logger['info'](_0xb447('0xe'),_0x2e919c,_0xb447('0xf'));logger[_0xb447('0x10')](_0xb447('0x11'),_0x2e919c,'request\x20sent',JSON[_0xb447('0x12')](_0x1972c9));if(_0x1972c9[_0xb447('0x13')]){if(_0x1972c9[_0xb447('0x13')][_0xb447('0x14')]===0x1f4){logger[_0xb447('0x13')](_0xb447('0xe'),_0x2e919c,_0x1972c9[_0xb447('0x13')][_0xb447('0x15')]);return _0x210bc5(_0x1972c9[_0xb447('0x13')]['message']);}logger['error'](_0xb447('0xe'),_0x2e919c,_0x1972c9[_0xb447('0x13')]['message']);return _0x3ea00b(_0x1972c9[_0xb447('0x13')][_0xb447('0x15')]);}else{logger[_0xb447('0x16')]('TeamVoiceQueue,\x20%s,\x20%s',_0x2e919c,'request\x20sent');_0x3ea00b(_0x1972c9[_0xb447('0x17')]['message']);}})[_0xb447('0x18')](function(_0x5c98a9){logger[_0xb447('0x13')](_0xb447('0xe'),_0x2e919c,_0x5c98a9);_0x210bc5(_0x5c98a9);});});}
\ No newline at end of file
index d2cb095..13da1b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b52=['../../components/auth/service','../../components/interaction/service','../../config/environment','./template.controller','get','isAuthenticated','index','/:id','show','create','put','update','destroy','exports','multer','util','path','express','Router'];(function(_0x399849,_0x3b630d){var _0xfbb04=function(_0x4fea04){while(--_0x4fea04){_0x399849['push'](_0x399849['shift']());}};_0xfbb04(++_0x3b630d);}(_0x8b52,0x151));var _0x28b5=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x8b52[_0x167cc1];return _0x10bc4b;};'use strict';var multer=require(_0x28b5('0x0'));var util=require(_0x28b5('0x1'));var path=require(_0x28b5('0x2'));var timeout=require('connect-timeout');var express=require(_0x28b5('0x3'));var router=express[_0x28b5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x28b5('0x5'));var interaction=require(_0x28b5('0x6'));var config=require(_0x28b5('0x7'));var controller=require(_0x28b5('0x8'));router[_0x28b5('0x9')]('/',auth[_0x28b5('0xa')](),controller[_0x28b5('0xb')]);router[_0x28b5('0x9')](_0x28b5('0xc'),auth['isAuthenticated'](),controller[_0x28b5('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0x28b5('0xe')]);router[_0x28b5('0xf')]('/:id',auth[_0x28b5('0xa')](),controller[_0x28b5('0x10')]);router['delete'](_0x28b5('0xc'),auth[_0x28b5('0xa')](),controller[_0x28b5('0x11')]);module[_0x28b5('0x12')]=router;
\ No newline at end of file
+var _0xaaee=['/:id','show','post','create','put','update','delete','destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./template.controller','get','isAuthenticated','index'];(function(_0x279755,_0x45b5c2){var _0x1e2295=function(_0x4129c8){while(--_0x4129c8){_0x279755['push'](_0x279755['shift']());}};_0x1e2295(++_0x45b5c2);}(_0xaaee,0xa9));var _0xeaae=function(_0x5035c6,_0x54cb8e){_0x5035c6=_0x5035c6-0x0;var _0x3665e8=_0xaaee[_0x5035c6];return _0x3665e8;};'use strict';var multer=require(_0xeaae('0x0'));var util=require('util');var path=require(_0xeaae('0x1'));var timeout=require(_0xeaae('0x2'));var express=require('express');var router=express[_0xeaae('0x3')]();var fs_extra=require(_0xeaae('0x4'));var auth=require(_0xeaae('0x5'));var interaction=require(_0xeaae('0x6'));var config=require('../../config/environment');var controller=require(_0xeaae('0x7'));router[_0xeaae('0x8')]('/',auth[_0xeaae('0x9')](),controller[_0xeaae('0xa')]);router[_0xeaae('0x8')](_0xeaae('0xb'),auth['isAuthenticated'](),controller[_0xeaae('0xc')]);router[_0xeaae('0xd')]('/',auth[_0xeaae('0x9')](),controller[_0xeaae('0xe')]);router[_0xeaae('0xf')](_0xeaae('0xb'),auth[_0xeaae('0x9')](),controller[_0xeaae('0x10')]);router[_0xeaae('0x11')]('/:id',auth[_0xeaae('0x9')](),controller[_0xeaae('0x12')]);module[_0xeaae('0x13')]=router;
\ No newline at end of file
index 3f2f21a..b85a932 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xced2=['TEXT','exports','STRING'];(function(_0x3a5f4f,_0x272383){var _0x59254d=function(_0x1c6a48){while(--_0x1c6a48){_0x3a5f4f['push'](_0x3a5f4f['shift']());}};_0x59254d(++_0x272383);}(_0xced2,0xee));var _0x2ced=function(_0x5204f5,_0x3961a2){_0x5204f5=_0x5204f5-0x0;var _0x4c55ee=_0xced2[_0x5204f5];return _0x4c55ee;};'use strict';var Sequelize=require('sequelize');module[_0x2ced('0x0')]={'name':{'type':Sequelize[_0x2ced('0x1')]},'description':{'type':Sequelize[_0x2ced('0x1')]},'html':{'type':Sequelize[_0x2ced('0x2')]}};
\ No newline at end of file
+var _0x1340=['exports','STRING','TEXT'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x1340,0x18c));var _0x0134=function(_0x51c889,_0x5a2d78){_0x51c889=_0x51c889-0x0;var _0x579a93=_0x1340[_0x51c889];return _0x579a93;};'use strict';var Sequelize=require('sequelize');module[_0x0134('0x0')]={'name':{'type':Sequelize[_0x0134('0x1')]},'description':{'type':Sequelize[_0x0134('0x1')]},'html':{'type':Sequelize[_0x0134('0x2')]}};
\ No newline at end of file
index bab5531..367749e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0617=['stack','name','send','index','map','Template','fieldName','type','key','model','query','filters','intersection','attributes','fields','nolimit','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Templates','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','to-csv','ejs','fs-extra','lodash','crypto','jsforce','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','get','UserProfileResource','destroy','end','sendStatus','error'];(function(_0x1553e1,_0x3b4f05){var _0x21d5a8=function(_0x35957d){while(--_0x35957d){_0x1553e1['push'](_0x1553e1['shift']());}};_0x21d5a8(++_0x3b4f05);}(_0x0617,0x1f4));var _0x7061=function(_0x45d0ee,_0x486987){_0x45d0ee=_0x45d0ee-0x0;var _0xa54d93=_0x0617[_0x45d0ee];return _0xa54d93;};'use strict';var emlformat=require(_0x7061('0x0'));var rimraf=require(_0x7061('0x1'));var zipdir=require(_0x7061('0x2'));var jsonpatch=require(_0x7061('0x3'));var rp=require(_0x7061('0x4'));var moment=require(_0x7061('0x5'));var BPromise=require(_0x7061('0x6'));var Mustache=require(_0x7061('0x7'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x7061('0x8'));var ejs=require(_0x7061('0x9'));var fs=require('fs');var fs_extra=require(_0x7061('0xa'));var _=require(_0x7061('0xb'));var squel=require('squel');var crypto=require(_0x7061('0xc'));var jsforce=require(_0x7061('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x7061('0x8'));var querystring=require('querystring');var Papa=require(_0x7061('0xe'));var Redis=require(_0x7061('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x7061('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7061('0x11'))(_0x7061('0x12'));var utils=require('../../config/utils');var config=require(_0x7061('0x13'));var licenseUtil=require(_0x7061('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x40847b,_0x4a4ac5){_0x4a4ac5=_0x4a4ac5||0xcc;return function(_0x9d47f){if(_0x9d47f){return _0x40847b['sendStatus'](_0x4a4ac5);}return _0x40847b[_0x7061('0x15')](_0x4a4ac5)['end']();};}function respondWithResult(_0x4a7fa9,_0x16aa3d){_0x16aa3d=_0x16aa3d||0xc8;return function(_0xa226a5){if(_0xa226a5){return _0x4a7fa9[_0x7061('0x15')](_0x16aa3d)[_0x7061('0x16')](_0xa226a5);}};}function respondWithFilteredResult(_0x45d748,_0x150ceb){return function(_0x59f604){if(_0x59f604){var _0x3b5e50=typeof _0x150ceb[_0x7061('0x17')]===_0x7061('0x18')&&typeof _0x150ceb[_0x7061('0x19')]==='undefined';var _0x45f66f=_0x59f604['count'];var _0xd312c3=_0x3b5e50?0x0:_0x150ceb[_0x7061('0x17')];var _0x4722a1=_0x3b5e50?_0x59f604[_0x7061('0x1a')]:_0x150ceb['offset']+_0x150ceb[_0x7061('0x19')];var _0x256e00;if(_0x4722a1>=_0x45f66f){_0x4722a1=_0x45f66f;_0x256e00=0xc8;}else{_0x256e00=0xce;}_0x45d748[_0x7061('0x15')](_0x256e00);return _0x45d748[_0x7061('0x1b')](_0x7061('0x1c'),_0xd312c3+'-'+_0x4722a1+'/'+_0x45f66f)[_0x7061('0x16')](_0x59f604);}return null;};}function patchUpdates(_0x5e3c45){return function(_0x2960bd){try{jsonpatch['apply'](_0x2960bd,_0x5e3c45,!![]);}catch(_0x10d110){return BPromise[_0x7061('0x1d')](_0x10d110);}return _0x2960bd[_0x7061('0x1e')]();};}function saveUpdates(_0x47caed,_0x42561d){return function(_0x12bf54){if(_0x12bf54){return _0x12bf54[_0x7061('0x1f')](_0x47caed)['then'](function(_0x15f1ec){return _0x15f1ec;});}return null;};}function removeEntity(_0xd3ca49,_0x382535){return function(_0xa60908){if(_0xa60908){return _0xa60908['destroy']()[_0x7061('0x20')](function(){var _0x42419e=_0xa60908[_0x7061('0x21')]({'plain':!![]});var _0x5d2dc9='Templates';return db[_0x7061('0x22')][_0x7061('0x23')]({'where':{'type':_0x5d2dc9,'resourceId':_0x42419e['id']}})[_0x7061('0x20')](function(){return _0xa60908;});})['then'](function(){_0xd3ca49['status'](0xcc)[_0x7061('0x24')]();});}};}function handleEntityNotFound(_0x1355e9,_0x247bc5){return function(_0x41cb9b){if(!_0x41cb9b){_0x1355e9[_0x7061('0x25')](0x194);}return _0x41cb9b;};}function handleError(_0x2c94b0,_0x514970){_0x514970=_0x514970||0x1f4;return function(_0x598a1c){logger[_0x7061('0x26')](_0x598a1c[_0x7061('0x27')]);if(_0x598a1c[_0x7061('0x28')]){delete _0x598a1c['name'];}_0x2c94b0[_0x7061('0x15')](_0x514970)[_0x7061('0x29')](_0x598a1c);};}exports[_0x7061('0x2a')]=function(_0x5c132f,_0x3fbfd4){var _0x2f74e6={},_0x5c2f37={},_0x1a24ba={'count':0x0,'rows':[]};var _0xad4c8c=_[_0x7061('0x2b')](db[_0x7061('0x2c')]['rawAttributes'],function(_0x3931ad){return{'name':_0x3931ad[_0x7061('0x2d')],'type':_0x3931ad[_0x7061('0x2e')][_0x7061('0x2f')]};});_0x5c2f37[_0x7061('0x30')]=_['map'](_0xad4c8c,'name');_0x5c2f37[_0x7061('0x31')]=_['keys'](_0x5c132f[_0x7061('0x31')]);_0x5c2f37[_0x7061('0x32')]=_[_0x7061('0x33')](_0x5c2f37[_0x7061('0x30')],_0x5c2f37['query']);_0x2f74e6[_0x7061('0x34')]=_['intersection'](_0x5c2f37[_0x7061('0x30')],qs[_0x7061('0x35')](_0x5c132f[_0x7061('0x31')][_0x7061('0x35')]));_0x2f74e6[_0x7061('0x34')]=_0x2f74e6[_0x7061('0x34')]['length']?_0x2f74e6['attributes']:_0x5c2f37[_0x7061('0x30')];if(!_0x5c132f[_0x7061('0x31')]['hasOwnProperty'](_0x7061('0x36'))){_0x2f74e6[_0x7061('0x19')]=qs[_0x7061('0x19')](_0x5c132f[_0x7061('0x31')][_0x7061('0x19')]);_0x2f74e6[_0x7061('0x17')]=qs[_0x7061('0x17')](_0x5c132f[_0x7061('0x31')]['offset']);}_0x2f74e6['order']=qs[_0x7061('0x37')](_0x5c132f[_0x7061('0x31')][_0x7061('0x37')]);_0x2f74e6[_0x7061('0x38')]=qs[_0x7061('0x32')](_['pick'](_0x5c132f['query'],_0x5c2f37['filters']),_0xad4c8c);if(_0x5c132f[_0x7061('0x31')][_0x7061('0x39')]){_0x2f74e6['where']=_[_0x7061('0x3a')](_0x2f74e6['where'],{'$or':_[_0x7061('0x2b')](_0xad4c8c,function(_0x7e94e5){if(_0x7e94e5[_0x7061('0x2e')]!==_0x7061('0x3b')){var _0xc34278={};_0xc34278[_0x7e94e5[_0x7061('0x28')]]={'$like':'%'+_0x5c132f[_0x7061('0x31')][_0x7061('0x39')]+'%'};return _0xc34278;}})});}_0x2f74e6=_[_0x7061('0x3a')]({},_0x2f74e6,_0x5c132f[_0x7061('0x3c')]);var _0x17fef3={'where':_0x2f74e6[_0x7061('0x38')]};return db[_0x7061('0x2c')][_0x7061('0x1a')](_0x17fef3)[_0x7061('0x20')](function(_0x473e5f){_0x1a24ba[_0x7061('0x1a')]=_0x473e5f;if(_0x5c132f[_0x7061('0x31')][_0x7061('0x3d')]){_0x2f74e6[_0x7061('0x3e')]=[{'all':!![]}];}return db[_0x7061('0x2c')][_0x7061('0x3f')](_0x2f74e6);})['then'](function(_0x2d296a){_0x1a24ba[_0x7061('0x40')]=_0x2d296a;return _0x1a24ba;})[_0x7061('0x20')](respondWithFilteredResult(_0x3fbfd4,_0x2f74e6))[_0x7061('0x41')](handleError(_0x3fbfd4,null));};exports[_0x7061('0x42')]=function(_0x55eb3d,_0x4ad7f3){var _0x39f48a={'raw':!![],'where':{'id':_0x55eb3d[_0x7061('0x43')]['id']}},_0x1766d3={};_0x1766d3[_0x7061('0x30')]=_[_0x7061('0x44')](db[_0x7061('0x2c')]['rawAttributes']);_0x1766d3[_0x7061('0x31')]=_[_0x7061('0x44')](_0x55eb3d['query']);_0x1766d3[_0x7061('0x32')]=_[_0x7061('0x33')](_0x1766d3[_0x7061('0x30')],_0x1766d3[_0x7061('0x31')]);_0x39f48a[_0x7061('0x34')]=_[_0x7061('0x33')](_0x1766d3[_0x7061('0x30')],qs[_0x7061('0x35')](_0x55eb3d[_0x7061('0x31')][_0x7061('0x35')]));_0x39f48a[_0x7061('0x34')]=_0x39f48a[_0x7061('0x34')]['length']?_0x39f48a[_0x7061('0x34')]:_0x1766d3[_0x7061('0x30')];if(_0x55eb3d['query'][_0x7061('0x3d')]){_0x39f48a[_0x7061('0x3e')]=[{'all':!![]}];}_0x39f48a=_[_0x7061('0x3a')]({},_0x39f48a,_0x55eb3d[_0x7061('0x3c')]);return db[_0x7061('0x2c')][_0x7061('0x45')](_0x39f48a)[_0x7061('0x20')](handleEntityNotFound(_0x4ad7f3,null))[_0x7061('0x20')](respondWithResult(_0x4ad7f3,null))[_0x7061('0x41')](handleError(_0x4ad7f3,null));};exports[_0x7061('0x46')]=function(_0x86eb4b,_0x5785c5){return db[_0x7061('0x2c')]['create'](_0x86eb4b[_0x7061('0x47')],{})[_0x7061('0x20')](function(_0x22748f){var _0x11315b=_0x86eb4b['user'][_0x7061('0x21')]({'plain':!![]});if(!_0x11315b)throw new Error(_0x7061('0x48'));if(_0x11315b[_0x7061('0x49')]==='user'){var _0x5dea06=_0x22748f[_0x7061('0x21')]({'plain':!![]});var _0x5cc00e=_0x7061('0x4a');return db[_0x7061('0x4b')]['find']({'where':{'name':_0x5cc00e,'userProfileId':_0x11315b['userProfileId']},'raw':!![]})[_0x7061('0x20')](function(_0x3fa7d9){if(_0x3fa7d9&&_0x3fa7d9['autoAssociation']===0x0){return db[_0x7061('0x22')][_0x7061('0x46')]({'name':_0x5dea06[_0x7061('0x28')],'resourceId':_0x5dea06['id'],'type':_0x3fa7d9['name'],'sectionId':_0x3fa7d9['id']},{})['then'](function(){return _0x22748f;});}else{return _0x22748f;}})[_0x7061('0x41')](function(_0x4afa12){logger['error'](_0x7061('0x4c'),_0x4afa12);throw _0x4afa12;});}return _0x22748f;})[_0x7061('0x20')](respondWithResult(_0x5785c5,0xc9))[_0x7061('0x41')](handleError(_0x5785c5,null));};exports['update']=function(_0x45ff85,_0x12164f){if(_0x45ff85[_0x7061('0x47')]['id']){delete _0x45ff85['body']['id'];}return db[_0x7061('0x2c')]['find']({'where':{'id':_0x45ff85[_0x7061('0x43')]['id']}})[_0x7061('0x20')](handleEntityNotFound(_0x12164f,null))[_0x7061('0x20')](saveUpdates(_0x45ff85['body'],null))['then'](respondWithResult(_0x12164f,null))[_0x7061('0x41')](handleError(_0x12164f,null));};exports[_0x7061('0x23')]=function(_0xfe3782,_0x270e6d){return db[_0x7061('0x2c')][_0x7061('0x45')]({'where':{'id':_0xfe3782[_0x7061('0x43')]['id']}})['then'](handleEntityNotFound(_0x270e6d,null))[_0x7061('0x20')](removeEntity(_0x270e6d,null))[_0x7061('0x41')](handleError(_0x270e6d,null));};
\ No newline at end of file
+var _0x0be6=['status','json','offset','undefined','limit','Content-Range','apply','reject','save','update','destroy','then','get','Templates','UserProfileResource','name','index','map','Template','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','sort','where','filter','merge','options','count','includeAll','include','findAll','rows','catch','show','length','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','fs-extra','lodash','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus'];(function(_0x278e3c,_0x1c9cfd){var _0x3e2d9b=function(_0x34d928){while(--_0x34d928){_0x278e3c['push'](_0x278e3c['shift']());}};_0x3e2d9b(++_0x1c9cfd);}(_0x0be6,0x12d));var _0x60be=function(_0x52dc2c,_0x10ef92){_0x52dc2c=_0x52dc2c-0x0;var _0x3aa51e=_0x0be6[_0x52dc2c];return _0x3aa51e;};'use strict';var emlformat=require(_0x60be('0x0'));var rimraf=require(_0x60be('0x1'));var zipdir=require(_0x60be('0x2'));var jsonpatch=require(_0x60be('0x3'));var rp=require(_0x60be('0x4'));var moment=require(_0x60be('0x5'));var BPromise=require(_0x60be('0x6'));var Mustache=require(_0x60be('0x7'));var util=require(_0x60be('0x8'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x60be('0x9'));var _=require(_0x60be('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x60be('0xb'));var toCsv=require(_0x60be('0xc'));var querystring=require(_0x60be('0xd'));var Papa=require(_0x60be('0xe'));var Redis=require(_0x60be('0xf'));var authService=require(_0x60be('0x10'));var qs=require(_0x60be('0x11'));var as=require(_0x60be('0x12'));var hardwareService=require(_0x60be('0x13'));var logger=require(_0x60be('0x14'))(_0x60be('0x15'));var utils=require(_0x60be('0x16'));var config=require(_0x60be('0x17'));var licenseUtil=require(_0x60be('0x18'));var db=require(_0x60be('0x19'))['db'];function respondWithStatusCode(_0x466132,_0x217bb4){_0x217bb4=_0x217bb4||0xcc;return function(_0x1293bd){if(_0x1293bd){return _0x466132[_0x60be('0x1a')](_0x217bb4);}return _0x466132[_0x60be('0x1b')](_0x217bb4)['end']();};}function respondWithResult(_0x4237c3,_0x39ede1){_0x39ede1=_0x39ede1||0xc8;return function(_0x53c3f5){if(_0x53c3f5){return _0x4237c3[_0x60be('0x1b')](_0x39ede1)[_0x60be('0x1c')](_0x53c3f5);}};}function respondWithFilteredResult(_0x1fdecc,_0x4f9b0f){return function(_0x2dfc2c){if(_0x2dfc2c){var _0x258517=typeof _0x4f9b0f[_0x60be('0x1d')]===_0x60be('0x1e')&&typeof _0x4f9b0f['limit']===_0x60be('0x1e');var _0xc85502=_0x2dfc2c['count'];var _0x57c6f1=_0x258517?0x0:_0x4f9b0f[_0x60be('0x1d')];var _0x1eb3db=_0x258517?_0x2dfc2c['count']:_0x4f9b0f[_0x60be('0x1d')]+_0x4f9b0f[_0x60be('0x1f')];var _0x3bb88a;if(_0x1eb3db>=_0xc85502){_0x1eb3db=_0xc85502;_0x3bb88a=0xc8;}else{_0x3bb88a=0xce;}_0x1fdecc['status'](_0x3bb88a);return _0x1fdecc['set'](_0x60be('0x20'),_0x57c6f1+'-'+_0x1eb3db+'/'+_0xc85502)[_0x60be('0x1c')](_0x2dfc2c);}return null;};}function patchUpdates(_0x937a94){return function(_0x48a55d){try{jsonpatch[_0x60be('0x21')](_0x48a55d,_0x937a94,!![]);}catch(_0x23cec6){return BPromise[_0x60be('0x22')](_0x23cec6);}return _0x48a55d[_0x60be('0x23')]();};}function saveUpdates(_0x254c41,_0x56a50e){return function(_0x19caef){if(_0x19caef){return _0x19caef[_0x60be('0x24')](_0x254c41)['then'](function(_0x346d1f){return _0x346d1f;});}return null;};}function removeEntity(_0x4839d9,_0x104989){return function(_0x414d4a){if(_0x414d4a){return _0x414d4a[_0x60be('0x25')]()[_0x60be('0x26')](function(){var _0x4d460a=_0x414d4a[_0x60be('0x27')]({'plain':!![]});var _0x2c70b9=_0x60be('0x28');return db[_0x60be('0x29')][_0x60be('0x25')]({'where':{'type':_0x2c70b9,'resourceId':_0x4d460a['id']}})[_0x60be('0x26')](function(){return _0x414d4a;});})[_0x60be('0x26')](function(){_0x4839d9[_0x60be('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x576220,_0x33149e){return function(_0x4f1e3c){if(!_0x4f1e3c){_0x576220[_0x60be('0x1a')](0x194);}return _0x4f1e3c;};}function handleError(_0x56f6f5,_0xf4ffa9){_0xf4ffa9=_0xf4ffa9||0x1f4;return function(_0x2b1091){logger['error'](_0x2b1091['stack']);if(_0x2b1091[_0x60be('0x2a')]){delete _0x2b1091[_0x60be('0x2a')];}_0x56f6f5[_0x60be('0x1b')](_0xf4ffa9)['send'](_0x2b1091);};}exports[_0x60be('0x2b')]=function(_0x1f12d1,_0xcc306e){var _0x224430={},_0x588ce3={},_0xb07d48={'count':0x0,'rows':[]};var _0x166e38=_[_0x60be('0x2c')](db[_0x60be('0x2d')][_0x60be('0x2e')],function(_0x26a5ea){return{'name':_0x26a5ea[_0x60be('0x2f')],'type':_0x26a5ea[_0x60be('0x30')][_0x60be('0x31')]};});_0x588ce3['model']=_[_0x60be('0x2c')](_0x166e38,_0x60be('0x2a'));_0x588ce3[_0x60be('0x32')]=_[_0x60be('0x33')](_0x1f12d1[_0x60be('0x32')]);_0x588ce3[_0x60be('0x34')]=_[_0x60be('0x35')](_0x588ce3[_0x60be('0x36')],_0x588ce3[_0x60be('0x32')]);_0x224430[_0x60be('0x37')]=_[_0x60be('0x35')](_0x588ce3[_0x60be('0x36')],qs[_0x60be('0x38')](_0x1f12d1[_0x60be('0x32')][_0x60be('0x38')]));_0x224430['attributes']=_0x224430[_0x60be('0x37')]['length']?_0x224430[_0x60be('0x37')]:_0x588ce3[_0x60be('0x36')];if(!_0x1f12d1[_0x60be('0x32')][_0x60be('0x39')](_0x60be('0x3a'))){_0x224430[_0x60be('0x1f')]=qs[_0x60be('0x1f')](_0x1f12d1['query']['limit']);_0x224430[_0x60be('0x1d')]=qs['offset'](_0x1f12d1[_0x60be('0x32')][_0x60be('0x1d')]);}_0x224430['order']=qs[_0x60be('0x3b')](_0x1f12d1['query']['sort']);_0x224430[_0x60be('0x3c')]=qs[_0x60be('0x34')](_['pick'](_0x1f12d1[_0x60be('0x32')],_0x588ce3[_0x60be('0x34')]),_0x166e38);if(_0x1f12d1[_0x60be('0x32')][_0x60be('0x3d')]){_0x224430[_0x60be('0x3c')]=_[_0x60be('0x3e')](_0x224430[_0x60be('0x3c')],{'$or':_[_0x60be('0x2c')](_0x166e38,function(_0x3ee779){if(_0x3ee779[_0x60be('0x30')]!=='VIRTUAL'){var _0x544faf={};_0x544faf[_0x3ee779[_0x60be('0x2a')]]={'$like':'%'+_0x1f12d1[_0x60be('0x32')]['filter']+'%'};return _0x544faf;}})});}_0x224430=_[_0x60be('0x3e')]({},_0x224430,_0x1f12d1[_0x60be('0x3f')]);var _0x5ce0ad={'where':_0x224430[_0x60be('0x3c')]};return db[_0x60be('0x2d')][_0x60be('0x40')](_0x5ce0ad)[_0x60be('0x26')](function(_0x245f30){_0xb07d48[_0x60be('0x40')]=_0x245f30;if(_0x1f12d1[_0x60be('0x32')][_0x60be('0x41')]){_0x224430[_0x60be('0x42')]=[{'all':!![]}];}return db[_0x60be('0x2d')][_0x60be('0x43')](_0x224430);})[_0x60be('0x26')](function(_0x442122){_0xb07d48[_0x60be('0x44')]=_0x442122;return _0xb07d48;})[_0x60be('0x26')](respondWithFilteredResult(_0xcc306e,_0x224430))[_0x60be('0x45')](handleError(_0xcc306e,null));};exports[_0x60be('0x46')]=function(_0x566027,_0x28a3a7){var _0x284ec6={'raw':!![],'where':{'id':_0x566027['params']['id']}},_0x238960={};_0x238960[_0x60be('0x36')]=_['keys'](db['Template'][_0x60be('0x2e')]);_0x238960[_0x60be('0x32')]=_[_0x60be('0x33')](_0x566027[_0x60be('0x32')]);_0x238960['filters']=_[_0x60be('0x35')](_0x238960['model'],_0x238960[_0x60be('0x32')]);_0x284ec6[_0x60be('0x37')]=_['intersection'](_0x238960[_0x60be('0x36')],qs['fields'](_0x566027[_0x60be('0x32')][_0x60be('0x38')]));_0x284ec6[_0x60be('0x37')]=_0x284ec6[_0x60be('0x37')][_0x60be('0x47')]?_0x284ec6['attributes']:_0x238960[_0x60be('0x36')];if(_0x566027[_0x60be('0x32')][_0x60be('0x41')]){_0x284ec6[_0x60be('0x42')]=[{'all':!![]}];}_0x284ec6=_['merge']({},_0x284ec6,_0x566027[_0x60be('0x3f')]);return db[_0x60be('0x2d')][_0x60be('0x48')](_0x284ec6)['then'](handleEntityNotFound(_0x28a3a7,null))[_0x60be('0x26')](respondWithResult(_0x28a3a7,null))[_0x60be('0x45')](handleError(_0x28a3a7,null));};exports[_0x60be('0x49')]=function(_0x3ea297,_0x56c434){return db[_0x60be('0x2d')][_0x60be('0x49')](_0x3ea297[_0x60be('0x4a')],{})[_0x60be('0x26')](function(_0x1be24f){var _0x2bb166=_0x3ea297['user'][_0x60be('0x27')]({'plain':!![]});if(!_0x2bb166)throw new Error(_0x60be('0x4b'));if(_0x2bb166[_0x60be('0x4c')]===_0x60be('0x4d')){var _0x2e97e6=_0x1be24f['get']({'plain':!![]});var _0x187149='Templates';return db[_0x60be('0x4e')][_0x60be('0x48')]({'where':{'name':_0x187149,'userProfileId':_0x2bb166[_0x60be('0x4f')]},'raw':!![]})[_0x60be('0x26')](function(_0x48b1e3){if(_0x48b1e3&&_0x48b1e3[_0x60be('0x50')]===0x0){return db[_0x60be('0x29')][_0x60be('0x49')]({'name':_0x2e97e6[_0x60be('0x2a')],'resourceId':_0x2e97e6['id'],'type':_0x48b1e3[_0x60be('0x2a')],'sectionId':_0x48b1e3['id']},{})[_0x60be('0x26')](function(){return _0x1be24f;});}else{return _0x1be24f;}})[_0x60be('0x45')](function(_0xb3c3d0){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xb3c3d0);throw _0xb3c3d0;});}return _0x1be24f;})[_0x60be('0x26')](respondWithResult(_0x56c434,0xc9))['catch'](handleError(_0x56c434,null));};exports[_0x60be('0x24')]=function(_0x338db6,_0x3a3346){if(_0x338db6[_0x60be('0x4a')]['id']){delete _0x338db6['body']['id'];}return db[_0x60be('0x2d')][_0x60be('0x48')]({'where':{'id':_0x338db6[_0x60be('0x51')]['id']}})['then'](handleEntityNotFound(_0x3a3346,null))['then'](saveUpdates(_0x338db6[_0x60be('0x4a')],null))[_0x60be('0x26')](respondWithResult(_0x3a3346,null))['catch'](handleError(_0x3a3346,null));};exports[_0x60be('0x25')]=function(_0xeb16c0,_0x489c83){return db['Template'][_0x60be('0x48')]({'where':{'id':_0xeb16c0['params']['id']}})[_0x60be('0x26')](handleEntityNotFound(_0x489c83,null))[_0x60be('0x26')](removeEntity(_0x489c83,null))['catch'](handleError(_0x489c83,null));};
\ No newline at end of file
index 5344bef..d84117f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b5c=['moment','request-promise','path','./template.attributes','exports','define','tools_templates','lodash','../../config/logger','api'];(function(_0x5bf184,_0x6921e9){var _0x4f4e5c=function(_0x2b526d){while(--_0x2b526d){_0x5bf184['push'](_0x5bf184['shift']());}};_0x4f4e5c(++_0x6921e9);}(_0x8b5c,0xcf));var _0xc8b5=function(_0x5435b9,_0x57b534){_0x5435b9=_0x5435b9-0x0;var _0xcf7f8d=_0x8b5c[_0x5435b9];return _0xcf7f8d;};'use strict';var _=require(_0xc8b5('0x0'));var util=require('util');var logger=require(_0xc8b5('0x1'))(_0xc8b5('0x2'));var moment=require(_0xc8b5('0x3'));var BPromise=require('bluebird');var rp=require(_0xc8b5('0x4'));var fs=require('fs');var path=require(_0xc8b5('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xc8b5('0x6'));module[_0xc8b5('0x7')]=function(_0x536846,_0x4d35fc){return _0x536846[_0xc8b5('0x8')]('Template',attributes,{'tableName':_0xc8b5('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3180=['Template','tools_templates','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./template.attributes','exports','define'];(function(_0x382e96,_0x53b6c2){var _0x26f8a4=function(_0x552827){while(--_0x552827){_0x382e96['push'](_0x382e96['shift']());}};_0x26f8a4(++_0x53b6c2);}(_0x3180,0x1de));var _0x0318=function(_0x5b2686,_0x1cf3a6){_0x5b2686=_0x5b2686-0x0;var _0x1b2d38=_0x3180[_0x5b2686];return _0x1b2d38;};'use strict';var _=require('lodash');var util=require(_0x0318('0x0'));var logger=require(_0x0318('0x1'))(_0x0318('0x2'));var moment=require(_0x0318('0x3'));var BPromise=require(_0x0318('0x4'));var rp=require(_0x0318('0x5'));var fs=require('fs');var path=require(_0x0318('0x6'));var rimraf=require(_0x0318('0x7'));var config=require(_0x0318('0x8'));var attributes=require(_0x0318('0x9'));module[_0x0318('0xa')]=function(_0x3e52a3,_0x3497a5){return _0x3e52a3[_0x0318('0xb')](_0x0318('0xc'),attributes,{'tableName':_0x0318('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index efa4a4d..af496a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d34=['code','message','GetTemplate','Template','findAll','options','raw','attributes','include','model','map','stringify','catch','lodash','bluebird','../../mysqldb','client','http','request','info','Template,\x20%s,\x20%s','request\x20sent','debug','Template,\x20%s,\x20%s,\x20%s','error'];(function(_0x79cdc6,_0x125abc){var _0x3302d1=function(_0x10d2de){while(--_0x10d2de){_0x79cdc6['push'](_0x79cdc6['shift']());}};_0x3302d1(++_0x125abc);}(_0x8d34,0xee));var _0x48d3=function(_0x7af056,_0x1e9151){_0x7af056=_0x7af056-0x0;var _0x55a5e6=_0x8d34[_0x7af056];return _0x55a5e6;};'use strict';var _=require(_0x48d3('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x48d3('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x48d3('0x2'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x48d3('0x3')][_0x48d3('0x4')]({'port':0x232a});function respondWithRpcPromise(_0x4afdb6,_0x4e3464,_0x442577){return new BPromise(function(_0x5d989c,_0x7edfb9){return client[_0x48d3('0x5')](_0x4afdb6,_0x442577)['then'](function(_0x2bc5ba){logger[_0x48d3('0x6')](_0x48d3('0x7'),_0x4e3464,_0x48d3('0x8'));logger[_0x48d3('0x9')](_0x48d3('0xa'),_0x4e3464,_0x48d3('0x8'),JSON['stringify'](_0x2bc5ba));if(_0x2bc5ba[_0x48d3('0xb')]){if(_0x2bc5ba[_0x48d3('0xb')][_0x48d3('0xc')]===0x1f4){logger['error'](_0x48d3('0x7'),_0x4e3464,_0x2bc5ba[_0x48d3('0xb')][_0x48d3('0xd')]);return _0x7edfb9(_0x2bc5ba['error'][_0x48d3('0xd')]);}logger[_0x48d3('0xb')]('Template,\x20%s,\x20%s',_0x4e3464,_0x2bc5ba[_0x48d3('0xb')][_0x48d3('0xd')]);return _0x5d989c(_0x2bc5ba[_0x48d3('0xb')][_0x48d3('0xd')]);}else{logger[_0x48d3('0x6')]('Template,\x20%s,\x20%s',_0x4e3464,_0x48d3('0x8'));_0x5d989c(_0x2bc5ba['result'][_0x48d3('0xd')]);}})['catch'](function(_0xf310bb){logger['error'](_0x48d3('0x7'),_0x4e3464,_0xf310bb);_0x7edfb9(_0xf310bb);});});}exports[_0x48d3('0xe')]=function(_0x32184e){var _0x34b1ec=this;return new Promise(function(_0x497f1b,_0x535786){return db[_0x48d3('0xf')][_0x48d3('0x10')]({'raw':_0x32184e[_0x48d3('0x11')]?_0x32184e[_0x48d3('0x11')][_0x48d3('0x12')]===undefined?!![]:![]:!![],'where':_0x32184e[_0x48d3('0x11')]?_0x32184e[_0x48d3('0x11')]['where']||null:null,'attributes':_0x32184e[_0x48d3('0x11')]?_0x32184e[_0x48d3('0x11')][_0x48d3('0x13')]||null:null,'limit':_0x32184e[_0x48d3('0x11')]?_0x32184e[_0x48d3('0x11')]['limit']||null:null,'include':_0x32184e['options']?_0x32184e[_0x48d3('0x11')][_0x48d3('0x14')]?_['map'](_0x32184e[_0x48d3('0x11')][_0x48d3('0x14')],function(_0x49acb0){return{'model':db[_0x49acb0[_0x48d3('0x15')]],'as':_0x49acb0['as'],'attributes':_0x49acb0[_0x48d3('0x13')],'include':_0x49acb0[_0x48d3('0x14')]?_[_0x48d3('0x16')](_0x49acb0[_0x48d3('0x14')],function(_0x297103){return{'model':db[_0x297103['model']],'as':_0x297103['as'],'attributes':_0x297103[_0x48d3('0x13')],'include':_0x297103[_0x48d3('0x14')]?_[_0x48d3('0x16')](_0x297103[_0x48d3('0x14')],function(_0x3d498b){return{'model':db[_0x3d498b[_0x48d3('0x15')]],'as':_0x3d498b['as'],'attributes':_0x3d498b[_0x48d3('0x13')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x437d94){logger['info']('GetTemplate',_0x32184e);logger[_0x48d3('0x9')]('GetTemplate',_0x32184e,JSON[_0x48d3('0x17')](_0x437d94));_0x497f1b(_0x437d94);})[_0x48d3('0x18')](function(_0x39783a){logger[_0x48d3('0xb')](_0x48d3('0xe'),_0x39783a[_0x48d3('0xd')],_0x32184e);_0x535786(_0x34b1ec[_0x48d3('0xb')](0x1f4,_0x39783a[_0x48d3('0xd')]));});});};
\ No newline at end of file
+var _0xfa1a=['moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','Template,\x20%s,\x20%s','debug','Template,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetTemplate','findAll','options','raw','where','attributes','limit','include','map','model','lodash','util'];(function(_0x41714d,_0x4ca36a){var _0x3a0a44=function(_0x48f393){while(--_0x48f393){_0x41714d['push'](_0x41714d['shift']());}};_0x3a0a44(++_0x4ca36a);}(_0xfa1a,0xec));var _0xafa1=function(_0x40220a,_0x22feb1){_0x40220a=_0x40220a-0x0;var _0x3903cc=_0xfa1a[_0x40220a];return _0x3903cc;};'use strict';var _=require(_0xafa1('0x0'));var util=require(_0xafa1('0x1'));var moment=require(_0xafa1('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xafa1('0x3'));var db=require(_0xafa1('0x4'))['db'];var utils=require(_0xafa1('0x5'));var logger=require(_0xafa1('0x6'))(_0xafa1('0x7'));var config=require('../../config/environment');var jayson=require(_0xafa1('0x8'));var client=jayson[_0xafa1('0x9')][_0xafa1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x68251f,_0x56274e,_0x518c2f){return new BPromise(function(_0x570a64,_0x5477fd){return client[_0xafa1('0xb')](_0x68251f,_0x518c2f)[_0xafa1('0xc')](function(_0x5f4095){logger[_0xafa1('0xd')](_0xafa1('0xe'),_0x56274e,'request\x20sent');logger[_0xafa1('0xf')](_0xafa1('0x10'),_0x56274e,_0xafa1('0x11'),JSON[_0xafa1('0x12')](_0x5f4095));if(_0x5f4095[_0xafa1('0x13')]){if(_0x5f4095[_0xafa1('0x13')][_0xafa1('0x14')]===0x1f4){logger[_0xafa1('0x13')](_0xafa1('0xe'),_0x56274e,_0x5f4095[_0xafa1('0x13')][_0xafa1('0x15')]);return _0x5477fd(_0x5f4095[_0xafa1('0x13')]['message']);}logger[_0xafa1('0x13')](_0xafa1('0xe'),_0x56274e,_0x5f4095[_0xafa1('0x13')][_0xafa1('0x15')]);return _0x570a64(_0x5f4095[_0xafa1('0x13')][_0xafa1('0x15')]);}else{logger['info']('Template,\x20%s,\x20%s',_0x56274e,_0xafa1('0x11'));_0x570a64(_0x5f4095[_0xafa1('0x16')][_0xafa1('0x15')]);}})[_0xafa1('0x17')](function(_0x508111){logger[_0xafa1('0x13')](_0xafa1('0xe'),_0x56274e,_0x508111);_0x5477fd(_0x508111);});});}exports[_0xafa1('0x18')]=function(_0x33507d){var _0x4873a1=this;return new Promise(function(_0x961c86,_0x23f529){return db['Template'][_0xafa1('0x19')]({'raw':_0x33507d[_0xafa1('0x1a')]?_0x33507d[_0xafa1('0x1a')][_0xafa1('0x1b')]===undefined?!![]:![]:!![],'where':_0x33507d['options']?_0x33507d[_0xafa1('0x1a')][_0xafa1('0x1c')]||null:null,'attributes':_0x33507d[_0xafa1('0x1a')]?_0x33507d[_0xafa1('0x1a')][_0xafa1('0x1d')]||null:null,'limit':_0x33507d['options']?_0x33507d[_0xafa1('0x1a')][_0xafa1('0x1e')]||null:null,'include':_0x33507d['options']?_0x33507d[_0xafa1('0x1a')][_0xafa1('0x1f')]?_[_0xafa1('0x20')](_0x33507d[_0xafa1('0x1a')][_0xafa1('0x1f')],function(_0x5fd641){return{'model':db[_0x5fd641[_0xafa1('0x21')]],'as':_0x5fd641['as'],'attributes':_0x5fd641[_0xafa1('0x1d')],'include':_0x5fd641[_0xafa1('0x1f')]?_['map'](_0x5fd641[_0xafa1('0x1f')],function(_0x4cf47b){return{'model':db[_0x4cf47b['model']],'as':_0x4cf47b['as'],'attributes':_0x4cf47b[_0xafa1('0x1d')],'include':_0x4cf47b['include']?_['map'](_0x4cf47b[_0xafa1('0x1f')],function(_0x4a20b4){return{'model':db[_0x4a20b4['model']],'as':_0x4a20b4['as'],'attributes':_0x4a20b4[_0xafa1('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xafa1('0xc')](function(_0x1326c9){logger[_0xafa1('0xd')]('GetTemplate',_0x33507d);logger[_0xafa1('0xf')](_0xafa1('0x18'),_0x33507d,JSON[_0xafa1('0x12')](_0x1326c9));_0x961c86(_0x1326c9);})[_0xafa1('0x17')](function(_0x367ece){logger['error'](_0xafa1('0x18'),_0x367ece['message'],_0x33507d);_0x23f529(_0x4873a1[_0xafa1('0x13')](0x1f4,_0x367ece[_0xafa1('0x15')]));});});};
\ No newline at end of file
index 55e3214..b9cc4ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e22=['express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','show','/:id/all_conditions','getAllConditions','/:id/any_conditions','getAnyConditions','getActions','post','addAllCondition','addAction','put','/:id','update','delete','exports','multer','path','connect-timeout'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x7e22,0x1d8));var _0x27e2=function(_0x3f4984,_0x41e13a){_0x3f4984=_0x3f4984-0x0;var _0x202cd3=_0x7e22[_0x3f4984];return _0x202cd3;};'use strict';var multer=require(_0x27e2('0x0'));var util=require('util');var path=require(_0x27e2('0x1'));var timeout=require(_0x27e2('0x2'));var express=require(_0x27e2('0x3'));var router=express[_0x27e2('0x4')]();var fs_extra=require(_0x27e2('0x5'));var auth=require(_0x27e2('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x27e2('0x7'));var controller=require('./trigger.controller');router[_0x27e2('0x8')]('/',auth[_0x27e2('0x9')](),controller[_0x27e2('0xa')]);router[_0x27e2('0x8')]('/:id',auth[_0x27e2('0x9')](),controller[_0x27e2('0xb')]);router[_0x27e2('0x8')](_0x27e2('0xc'),auth[_0x27e2('0x9')](),controller[_0x27e2('0xd')]);router[_0x27e2('0x8')](_0x27e2('0xe'),auth['isAuthenticated'](),controller[_0x27e2('0xf')]);router[_0x27e2('0x8')]('/:id/actions',auth[_0x27e2('0x9')](),controller[_0x27e2('0x10')]);router[_0x27e2('0x11')]('/',auth[_0x27e2('0x9')](),controller['create']);router[_0x27e2('0x11')]('/:id/all_conditions',auth[_0x27e2('0x9')](),controller[_0x27e2('0x12')]);router[_0x27e2('0x11')](_0x27e2('0xe'),auth[_0x27e2('0x9')](),controller['addAnyCondition']);router[_0x27e2('0x11')]('/:id/actions',auth[_0x27e2('0x9')](),controller[_0x27e2('0x13')]);router[_0x27e2('0x14')](_0x27e2('0x15'),auth[_0x27e2('0x9')](),controller[_0x27e2('0x16')]);router[_0x27e2('0x17')](_0x27e2('0x15'),auth['isAuthenticated'](),controller['destroy']);module[_0x27e2('0x18')]=router;
\ No newline at end of file
+var _0x0f74=['/:id','show','/:id/all_conditions','getAllConditions','getAnyConditions','getActions','post','create','addAllCondition','/:id/any_conditions','/:id/actions','addAction','put','update','delete','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','get'];(function(_0x12b8ec,_0x1655be){var _0x21af77=function(_0xe59f){while(--_0xe59f){_0x12b8ec['push'](_0x12b8ec['shift']());}};_0x21af77(++_0x1655be);}(_0x0f74,0x13b));var _0x40f7=function(_0x50ebd7,_0x4e2450){_0x50ebd7=_0x50ebd7-0x0;var _0x4bacee=_0x0f74[_0x50ebd7];return _0x4bacee;};'use strict';var multer=require(_0x40f7('0x0'));var util=require(_0x40f7('0x1'));var path=require(_0x40f7('0x2'));var timeout=require('connect-timeout');var express=require(_0x40f7('0x3'));var router=express[_0x40f7('0x4')]();var fs_extra=require(_0x40f7('0x5'));var auth=require(_0x40f7('0x6'));var interaction=require(_0x40f7('0x7'));var config=require('../../config/environment');var controller=require('./trigger.controller');router['get']('/',auth[_0x40f7('0x8')](),controller['index']);router[_0x40f7('0x9')](_0x40f7('0xa'),auth[_0x40f7('0x8')](),controller[_0x40f7('0xb')]);router[_0x40f7('0x9')](_0x40f7('0xc'),auth['isAuthenticated'](),controller[_0x40f7('0xd')]);router['get']('/:id/any_conditions',auth[_0x40f7('0x8')](),controller[_0x40f7('0xe')]);router[_0x40f7('0x9')]('/:id/actions',auth[_0x40f7('0x8')](),controller[_0x40f7('0xf')]);router[_0x40f7('0x10')]('/',auth[_0x40f7('0x8')](),controller[_0x40f7('0x11')]);router[_0x40f7('0x10')]('/:id/all_conditions',auth[_0x40f7('0x8')](),controller[_0x40f7('0x12')]);router[_0x40f7('0x10')](_0x40f7('0x13'),auth[_0x40f7('0x8')](),controller['addAnyCondition']);router[_0x40f7('0x10')](_0x40f7('0x14'),auth['isAuthenticated'](),controller[_0x40f7('0x15')]);router[_0x40f7('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x40f7('0x17')]);router[_0x40f7('0x18')](_0x40f7('0xa'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index dc9196d..82aa401 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb80f=['exports','STRING','BOOLEAN','sequelize'];(function(_0x1b3d60,_0x51583b){var _0x4abc3d=function(_0x5c9acb){while(--_0x5c9acb){_0x1b3d60['push'](_0x1b3d60['shift']());}};_0x4abc3d(++_0x51583b);}(_0xb80f,0xdf));var _0xfb80=function(_0x48e8e4,_0x1c0d8d){_0x48e8e4=_0x48e8e4-0x0;var _0x5c88c0=_0xb80f[_0x48e8e4];return _0x5c88c0;};'use strict';var Sequelize=require(_0xfb80('0x0'));module[_0xfb80('0x1')]={'name':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xfb80('0x2')]},'description':{'type':Sequelize[_0xfb80('0x2')]},'status':{'type':Sequelize[_0xfb80('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x7f4b=['STRING','BOOLEAN','sequelize','exports'];(function(_0x100f2c,_0x19b242){var _0x3d349c=function(_0x327f59){while(--_0x327f59){_0x100f2c['push'](_0x100f2c['shift']());}};_0x3d349c(++_0x19b242);}(_0x7f4b,0xee));var _0xb7f4=function(_0x1045a2,_0x22535b){_0x1045a2=_0x1045a2-0x0;var _0x1d5e8e=_0x7f4b[_0x1045a2];return _0x1d5e8e;};'use strict';var Sequelize=require(_0xb7f4('0x0'));module[_0xb7f4('0x1')]={'name':{'type':Sequelize[_0xb7f4('0x2')]},'channel':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xb7f4('0x2')]},'status':{'type':Sequelize[_0xb7f4('0x3')],'defaultValue':![]}};
\ No newline at end of file
index 714dd7f..fcf1b2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x750c=['find','create','body','user','get','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addAllCondition','TriggerAllId','addAnyCondition','TriggerAnyId','findOne','Condition','getAllConditions','getAnyConditions','hasOwnProperty','addAction','TriggerId','getActions','Action','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','set','apply','save','update','then','Triggers','UserProfileResource','destroy','sendStatus','error','stack','name','map','Trigger','rawAttributes','fieldName','type','model','query','keys','filters','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','count','includeAll','findAll','rows','catch','params','intersection','include','options'];(function(_0x50007c,_0x1cbf11){var _0x5c1ec7=function(_0x52d038){while(--_0x52d038){_0x50007c['push'](_0x50007c['shift']());}};_0x5c1ec7(++_0x1cbf11);}(_0x750c,0x1ef));var _0xc750=function(_0x44f220,_0x1ec8bc){_0x44f220=_0x44f220-0x0;var _0x2c786f=_0x750c[_0x44f220];return _0x2c786f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc750('0x0'));var zipdir=require(_0xc750('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc750('0x2'));var moment=require(_0xc750('0x3'));var BPromise=require(_0xc750('0x4'));var Mustache=require(_0xc750('0x5'));var util=require(_0xc750('0x6'));var path=require(_0xc750('0x7'));var sox=require(_0xc750('0x8'));var csv=require('to-csv');var ejs=require(_0xc750('0x9'));var fs=require('fs');var fs_extra=require(_0xc750('0xa'));var _=require(_0xc750('0xb'));var squel=require(_0xc750('0xc'));var crypto=require(_0xc750('0xd'));var jsforce=require(_0xc750('0xe'));var deskjs=require(_0xc750('0xf'));var toCsv=require(_0xc750('0x10'));var querystring=require(_0xc750('0x11'));var Papa=require('papaparse');var Redis=require(_0xc750('0x12'));var authService=require(_0xc750('0x13'));var qs=require(_0xc750('0x14'));var as=require(_0xc750('0x15'));var hardwareService=require(_0xc750('0x16'));var logger=require(_0xc750('0x17'))('api');var utils=require(_0xc750('0x18'));var config=require(_0xc750('0x19'));var licenseUtil=require(_0xc750('0x1a'));var db=require(_0xc750('0x1b'))['db'];function respondWithStatusCode(_0x2e681a,_0x32f4cf){_0x32f4cf=_0x32f4cf||0xcc;return function(_0x50dcb4){if(_0x50dcb4){return _0x2e681a['sendStatus'](_0x32f4cf);}return _0x2e681a[_0xc750('0x1c')](_0x32f4cf)[_0xc750('0x1d')]();};}function respondWithResult(_0x25c3af,_0x59c964){_0x59c964=_0x59c964||0xc8;return function(_0xe9e5f2){if(_0xe9e5f2){return _0x25c3af[_0xc750('0x1c')](_0x59c964)[_0xc750('0x1e')](_0xe9e5f2);}};}function respondWithFilteredResult(_0x543f61,_0x19a8ab){return function(_0xb463cc){if(_0xb463cc){var _0x4151f7=typeof _0x19a8ab[_0xc750('0x1f')]===_0xc750('0x20')&&typeof _0x19a8ab['limit']===_0xc750('0x20');var _0x50858f=_0xb463cc['count'];var _0x2c38ed=_0x4151f7?0x0:_0x19a8ab['offset'];var _0x591338=_0x4151f7?_0xb463cc['count']:_0x19a8ab[_0xc750('0x1f')]+_0x19a8ab[_0xc750('0x21')];var _0x2a97aa;if(_0x591338>=_0x50858f){_0x591338=_0x50858f;_0x2a97aa=0xc8;}else{_0x2a97aa=0xce;}_0x543f61[_0xc750('0x1c')](_0x2a97aa);return _0x543f61[_0xc750('0x22')]('Content-Range',_0x2c38ed+'-'+_0x591338+'/'+_0x50858f)[_0xc750('0x1e')](_0xb463cc);}return null;};}function patchUpdates(_0x49f7e2){return function(_0x3c63d5){try{jsonpatch[_0xc750('0x23')](_0x3c63d5,_0x49f7e2,!![]);}catch(_0x55300f){return BPromise['reject'](_0x55300f);}return _0x3c63d5[_0xc750('0x24')]();};}function saveUpdates(_0xc00fb9,_0x35464b){return function(_0x5bba8a){if(_0x5bba8a){return _0x5bba8a[_0xc750('0x25')](_0xc00fb9)[_0xc750('0x26')](function(_0x4be2d8){return _0x4be2d8;});}return null;};}function removeEntity(_0x1c8d70,_0x2f60a9){return function(_0x35dfe2){if(_0x35dfe2){return _0x35dfe2['destroy']()['then'](function(){var _0x3e5c97=_0x35dfe2['get']({'plain':!![]});var _0x3bdeab=_0xc750('0x27');return db[_0xc750('0x28')][_0xc750('0x29')]({'where':{'type':_0x3bdeab,'resourceId':_0x3e5c97['id']}})['then'](function(){return _0x35dfe2;});})['then'](function(){_0x1c8d70[_0xc750('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5c7280,_0x99a4c0){return function(_0x5202f7){if(!_0x5202f7){_0x5c7280[_0xc750('0x2a')](0x194);}return _0x5202f7;};}function handleError(_0x387a43,_0x1c2a39){_0x1c2a39=_0x1c2a39||0x1f4;return function(_0x5d4a7d){logger[_0xc750('0x2b')](_0x5d4a7d[_0xc750('0x2c')]);if(_0x5d4a7d['name']){delete _0x5d4a7d[_0xc750('0x2d')];}_0x387a43[_0xc750('0x1c')](_0x1c2a39)['send'](_0x5d4a7d);};}exports['index']=function(_0x4a595c,_0x30a262){var _0x34c9e8={},_0x2c59bf={},_0x309512={'count':0x0,'rows':[]};var _0x3af068=_[_0xc750('0x2e')](db[_0xc750('0x2f')][_0xc750('0x30')],function(_0x38b136){return{'name':_0x38b136[_0xc750('0x31')],'type':_0x38b136[_0xc750('0x32')]['key']};});_0x2c59bf[_0xc750('0x33')]=_[_0xc750('0x2e')](_0x3af068,_0xc750('0x2d'));_0x2c59bf[_0xc750('0x34')]=_[_0xc750('0x35')](_0x4a595c['query']);_0x2c59bf[_0xc750('0x36')]=_['intersection'](_0x2c59bf['model'],_0x2c59bf[_0xc750('0x34')]);_0x34c9e8[_0xc750('0x37')]=_['intersection'](_0x2c59bf['model'],qs[_0xc750('0x38')](_0x4a595c[_0xc750('0x34')]['fields']));_0x34c9e8['attributes']=_0x34c9e8[_0xc750('0x37')][_0xc750('0x39')]?_0x34c9e8[_0xc750('0x37')]:_0x2c59bf['model'];if(!_0x4a595c[_0xc750('0x34')]['hasOwnProperty'](_0xc750('0x3a'))){_0x34c9e8['limit']=qs[_0xc750('0x21')](_0x4a595c['query']['limit']);_0x34c9e8[_0xc750('0x1f')]=qs[_0xc750('0x1f')](_0x4a595c['query'][_0xc750('0x1f')]);}_0x34c9e8[_0xc750('0x3b')]=qs[_0xc750('0x3c')](_0x4a595c[_0xc750('0x34')][_0xc750('0x3c')]);_0x34c9e8[_0xc750('0x3d')]=qs[_0xc750('0x36')](_[_0xc750('0x3e')](_0x4a595c[_0xc750('0x34')],_0x2c59bf[_0xc750('0x36')]),_0x3af068);if(_0x4a595c['query'][_0xc750('0x3f')]){_0x34c9e8['where']=_[_0xc750('0x40')](_0x34c9e8[_0xc750('0x3d')],{'$or':_[_0xc750('0x2e')](_0x3af068,function(_0x280b87){if(_0x280b87[_0xc750('0x32')]!==_0xc750('0x41')){var _0x21f998={};_0x21f998[_0x280b87[_0xc750('0x2d')]]={'$like':'%'+_0x4a595c[_0xc750('0x34')]['filter']+'%'};return _0x21f998;}})});}_0x34c9e8=_[_0xc750('0x40')]({},_0x34c9e8,_0x4a595c['options']);var _0x4534c8={'where':_0x34c9e8['where']};return db['Trigger']['count'](_0x4534c8)['then'](function(_0x483064){_0x309512[_0xc750('0x42')]=_0x483064;if(_0x4a595c[_0xc750('0x34')][_0xc750('0x43')]){_0x34c9e8['include']=[{'all':!![]}];}return db[_0xc750('0x2f')][_0xc750('0x44')](_0x34c9e8);})[_0xc750('0x26')](function(_0x57d0fd){_0x309512[_0xc750('0x45')]=_0x57d0fd;return _0x309512;})['then'](respondWithFilteredResult(_0x30a262,_0x34c9e8))[_0xc750('0x46')](handleError(_0x30a262,null));};exports['show']=function(_0x5f1dd1,_0x509ebd){var _0x321308={'raw':![],'where':{'id':_0x5f1dd1[_0xc750('0x47')]['id']}},_0x3d8f98={};_0x3d8f98['model']=_[_0xc750('0x35')](db[_0xc750('0x2f')][_0xc750('0x30')]);_0x3d8f98[_0xc750('0x34')]=_[_0xc750('0x35')](_0x5f1dd1[_0xc750('0x34')]);_0x3d8f98['filters']=_[_0xc750('0x48')](_0x3d8f98[_0xc750('0x33')],_0x3d8f98[_0xc750('0x34')]);_0x321308[_0xc750('0x37')]=_[_0xc750('0x48')](_0x3d8f98[_0xc750('0x33')],qs[_0xc750('0x38')](_0x5f1dd1[_0xc750('0x34')][_0xc750('0x38')]));_0x321308['attributes']=_0x321308[_0xc750('0x37')][_0xc750('0x39')]?_0x321308['attributes']:_0x3d8f98['model'];if(_0x5f1dd1[_0xc750('0x34')]['includeAll']){_0x321308[_0xc750('0x49')]=[{'all':!![]}];}_0x321308=_[_0xc750('0x40')]({},_0x321308,_0x5f1dd1[_0xc750('0x4a')]);return db[_0xc750('0x2f')][_0xc750('0x4b')](_0x321308)[_0xc750('0x26')](handleEntityNotFound(_0x509ebd,null))[_0xc750('0x26')](respondWithResult(_0x509ebd,null))[_0xc750('0x46')](handleError(_0x509ebd,null));};exports[_0xc750('0x4c')]=function(_0x401138,_0x3c5d3b){return db[_0xc750('0x2f')]['create'](_0x401138[_0xc750('0x4d')],{})[_0xc750('0x26')](function(_0x264f26){var _0x504be0=_0x401138[_0xc750('0x4e')][_0xc750('0x4f')]({'plain':!![]});if(!_0x504be0)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x504be0['role']==='user'){var _0x18dfd4=_0x264f26['get']({'plain':!![]});var _0x13cbe8=_0xc750('0x27');return db['UserProfileSection'][_0xc750('0x4b')]({'where':{'name':_0x13cbe8,'userProfileId':_0x504be0['userProfileId']},'raw':!![]})[_0xc750('0x26')](function(_0x369758){if(_0x369758&&_0x369758[_0xc750('0x50')]===0x0){return db['UserProfileResource'][_0xc750('0x4c')]({'name':_0x18dfd4[_0xc750('0x2d')],'resourceId':_0x18dfd4['id'],'type':_0x369758['name'],'sectionId':_0x369758['id']},{})[_0xc750('0x26')](function(){return _0x264f26;});}else{return _0x264f26;}})[_0xc750('0x46')](function(_0x6f4f37){logger[_0xc750('0x2b')](_0xc750('0x51'),_0x6f4f37);throw _0x6f4f37;});}return _0x264f26;})[_0xc750('0x26')](respondWithResult(_0x3c5d3b,0xc9))[_0xc750('0x46')](handleError(_0x3c5d3b,null));};exports[_0xc750('0x25')]=function(_0x2ad3a9,_0x5f1d22){if(_0x2ad3a9[_0xc750('0x4d')]['id']){delete _0x2ad3a9[_0xc750('0x4d')]['id'];}return db[_0xc750('0x2f')][_0xc750('0x4b')]({'where':{'id':_0x2ad3a9[_0xc750('0x47')]['id']}})[_0xc750('0x26')](handleEntityNotFound(_0x5f1d22,null))[_0xc750('0x26')](saveUpdates(_0x2ad3a9['body'],null))[_0xc750('0x26')](respondWithResult(_0x5f1d22,null))[_0xc750('0x46')](handleError(_0x5f1d22,null));};exports[_0xc750('0x29')]=function(_0x372040,_0x56be7e){return db[_0xc750('0x2f')][_0xc750('0x4b')]({'where':{'id':_0x372040[_0xc750('0x47')]['id']}})['then'](handleEntityNotFound(_0x56be7e,null))[_0xc750('0x26')](removeEntity(_0x56be7e,null))[_0xc750('0x46')](handleError(_0x56be7e,null));};exports[_0xc750('0x52')]=function(_0x2ed454,_0x113bf7,_0x295113){if(_0x2ed454[_0xc750('0x4d')]['id']){delete _0x2ed454[_0xc750('0x4d')]['id'];}return db[_0xc750('0x2f')]['find']({'where':{'id':_0x2ed454[_0xc750('0x47')]['id']}})[_0xc750('0x26')](handleEntityNotFound(_0x113bf7,null))[_0xc750('0x26')](function(_0x496b99){if(_0x496b99){_0x2ed454[_0xc750('0x4d')][_0xc750('0x53')]=_0x496b99['id'];return db['Condition']['create'](_0x2ed454[_0xc750('0x4d')]);}})['then'](respondWithResult(_0x113bf7,null))['catch'](handleError(_0x113bf7,null));};exports[_0xc750('0x54')]=function(_0x53704d,_0xf276a2,_0x15f2de){if(_0x53704d[_0xc750('0x4d')]['id']){delete _0x53704d[_0xc750('0x4d')]['id'];}return db[_0xc750('0x2f')]['find']({'where':{'id':_0x53704d['params']['id']}})['then'](handleEntityNotFound(_0xf276a2,null))['then'](function(_0x1dd052){if(_0x1dd052){_0x53704d[_0xc750('0x4d')][_0xc750('0x55')]=_0x1dd052['id'];return db['Condition'][_0xc750('0x4c')](_0x53704d[_0xc750('0x4d')]);}})[_0xc750('0x26')](respondWithResult(_0xf276a2,null))[_0xc750('0x46')](handleError(_0xf276a2,null));};exports['getAllConditions']=function(_0x25da86,_0x3888fd,_0x182912){var _0x4f4b0c={};var _0x5d553b={};var _0x16c2d0;var _0x2e0d9f;return db[_0xc750('0x2f')][_0xc750('0x56')]({'where':{'id':_0x25da86[_0xc750('0x47')]['id']}})['then'](handleEntityNotFound(_0x3888fd,null))['then'](function(_0x168e5a){if(_0x168e5a){_0x16c2d0=_0x168e5a;_0x5d553b['model']=_[_0xc750('0x35')](db[_0xc750('0x57')][_0xc750('0x30')]);_0x5d553b[_0xc750('0x34')]=_[_0xc750('0x35')](_0x25da86[_0xc750('0x34')]);_0x5d553b[_0xc750('0x36')]=_[_0xc750('0x48')](_0x5d553b[_0xc750('0x33')],_0x5d553b[_0xc750('0x34')]);_0x4f4b0c['attributes']=_[_0xc750('0x48')](_0x5d553b[_0xc750('0x33')],qs['fields'](_0x25da86[_0xc750('0x34')][_0xc750('0x38')]));_0x4f4b0c[_0xc750('0x37')]=_0x4f4b0c[_0xc750('0x37')][_0xc750('0x39')]?_0x4f4b0c[_0xc750('0x37')]:_0x5d553b['model'];_0x4f4b0c[_0xc750('0x3b')]=qs[_0xc750('0x3c')](_0x25da86[_0xc750('0x34')][_0xc750('0x3c')]);_0x4f4b0c['where']=qs[_0xc750('0x36')](_['pick'](_0x25da86[_0xc750('0x34')],_0x5d553b['filters']));if(_0x25da86[_0xc750('0x34')][_0xc750('0x3f')]){_0x4f4b0c['where']=_[_0xc750('0x40')](_0x4f4b0c[_0xc750('0x3d')],{'$or':_[_0xc750('0x2e')](_0x4f4b0c[_0xc750('0x37')],function(_0x1843e6){var _0x46a5c0={};_0x46a5c0[_0x1843e6]={'$like':'%'+_0x25da86['query'][_0xc750('0x3f')]+'%'};return _0x46a5c0;})});}_0x4f4b0c=_['merge']({},_0x4f4b0c,_0x25da86[_0xc750('0x4a')]);return _0x16c2d0[_0xc750('0x58')](_0x4f4b0c);}})[_0xc750('0x26')](function(_0x2c1fe4){if(_0x2c1fe4){_0x2e0d9f=_0x2c1fe4['length'];if(!_0x25da86[_0xc750('0x34')]['hasOwnProperty'](_0xc750('0x3a'))){_0x4f4b0c[_0xc750('0x21')]=qs[_0xc750('0x21')](_0x25da86['query'][_0xc750('0x21')]);_0x4f4b0c[_0xc750('0x1f')]=qs[_0xc750('0x1f')](_0x25da86[_0xc750('0x34')]['offset']);}return _0x16c2d0[_0xc750('0x58')](_0x4f4b0c);}})[_0xc750('0x26')](function(_0x47e3b5){if(_0x47e3b5){return _0x47e3b5?{'count':_0x2e0d9f,'rows':_0x47e3b5}:null;}})['then'](respondWithResult(_0x3888fd,null))[_0xc750('0x46')](handleError(_0x3888fd,null));};exports[_0xc750('0x59')]=function(_0x152e5e,_0x396eca,_0x3999e8){var _0x3b5664={};var _0x4ceced={};var _0x2334c1;var _0x8e5757;return db[_0xc750('0x2f')][_0xc750('0x56')]({'where':{'id':_0x152e5e[_0xc750('0x47')]['id']}})[_0xc750('0x26')](handleEntityNotFound(_0x396eca,null))['then'](function(_0x55f18a){if(_0x55f18a){_0x2334c1=_0x55f18a;_0x4ceced[_0xc750('0x33')]=_[_0xc750('0x35')](db['Condition']['rawAttributes']);_0x4ceced[_0xc750('0x34')]=_[_0xc750('0x35')](_0x152e5e[_0xc750('0x34')]);_0x4ceced[_0xc750('0x36')]=_[_0xc750('0x48')](_0x4ceced[_0xc750('0x33')],_0x4ceced[_0xc750('0x34')]);_0x3b5664[_0xc750('0x37')]=_['intersection'](_0x4ceced[_0xc750('0x33')],qs[_0xc750('0x38')](_0x152e5e['query'][_0xc750('0x38')]));_0x3b5664[_0xc750('0x37')]=_0x3b5664[_0xc750('0x37')][_0xc750('0x39')]?_0x3b5664['attributes']:_0x4ceced[_0xc750('0x33')];_0x3b5664[_0xc750('0x3b')]=qs[_0xc750('0x3c')](_0x152e5e[_0xc750('0x34')][_0xc750('0x3c')]);_0x3b5664[_0xc750('0x3d')]=qs[_0xc750('0x36')](_[_0xc750('0x3e')](_0x152e5e['query'],_0x4ceced[_0xc750('0x36')]));if(_0x152e5e[_0xc750('0x34')][_0xc750('0x3f')]){_0x3b5664[_0xc750('0x3d')]=_[_0xc750('0x40')](_0x3b5664['where'],{'$or':_[_0xc750('0x2e')](_0x3b5664[_0xc750('0x37')],function(_0x127dd2){var _0x358af1={};_0x358af1[_0x127dd2]={'$like':'%'+_0x152e5e[_0xc750('0x34')][_0xc750('0x3f')]+'%'};return _0x358af1;})});}_0x3b5664=_['merge']({},_0x3b5664,_0x152e5e[_0xc750('0x4a')]);return _0x2334c1[_0xc750('0x59')](_0x3b5664);}})[_0xc750('0x26')](function(_0x546ccd){if(_0x546ccd){_0x8e5757=_0x546ccd[_0xc750('0x39')];if(!_0x152e5e[_0xc750('0x34')][_0xc750('0x5a')](_0xc750('0x3a'))){_0x3b5664[_0xc750('0x21')]=qs['limit'](_0x152e5e[_0xc750('0x34')][_0xc750('0x21')]);_0x3b5664[_0xc750('0x1f')]=qs[_0xc750('0x1f')](_0x152e5e['query'][_0xc750('0x1f')]);}return _0x2334c1[_0xc750('0x59')](_0x3b5664);}})[_0xc750('0x26')](function(_0x1cd37b){if(_0x1cd37b){return _0x1cd37b?{'count':_0x8e5757,'rows':_0x1cd37b}:null;}})[_0xc750('0x26')](respondWithResult(_0x396eca,null))[_0xc750('0x46')](handleError(_0x396eca,null));};exports[_0xc750('0x5b')]=function(_0x35c08f,_0x4d4071,_0x4ccf76){if(_0x35c08f['body']['id']){delete _0x35c08f['body']['id'];}return db[_0xc750('0x2f')][_0xc750('0x4b')]({'where':{'id':_0x35c08f[_0xc750('0x47')]['id']}})[_0xc750('0x26')](handleEntityNotFound(_0x4d4071,null))[_0xc750('0x26')](function(_0x139104){if(_0x139104){_0x35c08f['body'][_0xc750('0x5c')]=_0x139104['id'];return db['Action'][_0xc750('0x4c')](_0x35c08f[_0xc750('0x4d')]);}})[_0xc750('0x26')](respondWithResult(_0x4d4071,null))[_0xc750('0x46')](handleError(_0x4d4071,null));};exports[_0xc750('0x5d')]=function(_0x25c4f7,_0x12fa58,_0x28b085){var _0x147a8b={};var _0x415bbd={};var _0x1c104c;var _0x155dd0;return db[_0xc750('0x2f')][_0xc750('0x56')]({'where':{'id':_0x25c4f7[_0xc750('0x47')]['id']}})[_0xc750('0x26')](handleEntityNotFound(_0x12fa58,null))[_0xc750('0x26')](function(_0x247b77){if(_0x247b77){_0x1c104c=_0x247b77;_0x415bbd['model']=_[_0xc750('0x35')](db[_0xc750('0x5e')][_0xc750('0x30')]);_0x415bbd[_0xc750('0x34')]=_[_0xc750('0x35')](_0x25c4f7[_0xc750('0x34')]);_0x415bbd[_0xc750('0x36')]=_['intersection'](_0x415bbd[_0xc750('0x33')],_0x415bbd[_0xc750('0x34')]);_0x147a8b[_0xc750('0x37')]=_[_0xc750('0x48')](_0x415bbd[_0xc750('0x33')],qs[_0xc750('0x38')](_0x25c4f7[_0xc750('0x34')][_0xc750('0x38')]));_0x147a8b[_0xc750('0x37')]=_0x147a8b[_0xc750('0x37')][_0xc750('0x39')]?_0x147a8b[_0xc750('0x37')]:_0x415bbd[_0xc750('0x33')];_0x147a8b['order']=qs[_0xc750('0x3c')](_0x25c4f7[_0xc750('0x34')][_0xc750('0x3c')]);_0x147a8b[_0xc750('0x3d')]=qs[_0xc750('0x36')](_[_0xc750('0x3e')](_0x25c4f7[_0xc750('0x34')],_0x415bbd[_0xc750('0x36')]));if(_0x25c4f7[_0xc750('0x34')][_0xc750('0x3f')]){_0x147a8b[_0xc750('0x3d')]=_[_0xc750('0x40')](_0x147a8b['where'],{'$or':_[_0xc750('0x2e')](_0x147a8b[_0xc750('0x37')],function(_0x1a49ea){var _0x3b253c={};_0x3b253c[_0x1a49ea]={'$like':'%'+_0x25c4f7[_0xc750('0x34')][_0xc750('0x3f')]+'%'};return _0x3b253c;})});}_0x147a8b=_['merge']({},_0x147a8b,_0x25c4f7[_0xc750('0x4a')]);return _0x1c104c['getActions'](_0x147a8b);}})[_0xc750('0x26')](function(_0x18097d){if(_0x18097d){_0x155dd0=_0x18097d[_0xc750('0x39')];if(!_0x25c4f7[_0xc750('0x34')][_0xc750('0x5a')](_0xc750('0x3a'))){_0x147a8b[_0xc750('0x21')]=qs[_0xc750('0x21')](_0x25c4f7[_0xc750('0x34')][_0xc750('0x21')]);_0x147a8b[_0xc750('0x1f')]=qs[_0xc750('0x1f')](_0x25c4f7[_0xc750('0x34')][_0xc750('0x1f')]);}return _0x1c104c[_0xc750('0x5d')](_0x147a8b);}})[_0xc750('0x26')](function(_0x100e7b){if(_0x100e7b){return _0x100e7b?{'count':_0x155dd0,'rows':_0x100e7b}:null;}})[_0xc750('0x26')](respondWithResult(_0x12fa58,null))[_0xc750('0x46')](handleError(_0x12fa58,null));};
\ No newline at end of file
+var _0x6ddd=['crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','save','update','then','get','UserProfileResource','destroy','error','stack','name','send','index','Trigger','rawAttributes','fieldName','key','map','keys','filters','query','fields','attributes','length','model','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','merge','options','include','findAll','rows','catch','show','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Triggers','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','TriggerAllId','Condition','addAnyCondition','TriggerAnyId','getAllConditions','findOne','intersection','filter','getAnyConditions','addAction','TriggerId','Action','getActions','eml-format','rimraf','fast-json-patch','bluebird','mustache','util','path','ejs','lodash'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x6ddd,0x17b));var _0xd6dd=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x6ddd[_0x19e35c];return _0x3e1fe8;};'use strict';var emlformat=require(_0xd6dd('0x0'));var rimraf=require(_0xd6dd('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd6dd('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xd6dd('0x3'));var Mustache=require(_0xd6dd('0x4'));var util=require(_0xd6dd('0x5'));var path=require(_0xd6dd('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xd6dd('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd6dd('0x8'));var squel=require('squel');var crypto=require(_0xd6dd('0x9'));var jsforce=require(_0xd6dd('0xa'));var deskjs=require(_0xd6dd('0xb'));var toCsv=require(_0xd6dd('0xc'));var querystring=require('querystring');var Papa=require(_0xd6dd('0xd'));var Redis=require(_0xd6dd('0xe'));var authService=require(_0xd6dd('0xf'));var qs=require(_0xd6dd('0x10'));var as=require(_0xd6dd('0x11'));var hardwareService=require(_0xd6dd('0x12'));var logger=require(_0xd6dd('0x13'))('api');var utils=require('../../config/utils');var config=require(_0xd6dd('0x14'));var licenseUtil=require(_0xd6dd('0x15'));var db=require(_0xd6dd('0x16'))['db'];function respondWithStatusCode(_0x157176,_0x200853){_0x200853=_0x200853||0xcc;return function(_0x3fb0b5){if(_0x3fb0b5){return _0x157176[_0xd6dd('0x17')](_0x200853);}return _0x157176[_0xd6dd('0x18')](_0x200853)[_0xd6dd('0x19')]();};}function respondWithResult(_0x19403e,_0x3717c3){_0x3717c3=_0x3717c3||0xc8;return function(_0x4da932){if(_0x4da932){return _0x19403e[_0xd6dd('0x18')](_0x3717c3)[_0xd6dd('0x1a')](_0x4da932);}};}function respondWithFilteredResult(_0x24a719,_0x42b5b6){return function(_0x2e68cd){if(_0x2e68cd){var _0x1d10f1=typeof _0x42b5b6['offset']==='undefined'&&typeof _0x42b5b6['limit']===_0xd6dd('0x1b');var _0x51450a=_0x2e68cd[_0xd6dd('0x1c')];var _0x173265=_0x1d10f1?0x0:_0x42b5b6[_0xd6dd('0x1d')];var _0x425177=_0x1d10f1?_0x2e68cd[_0xd6dd('0x1c')]:_0x42b5b6['offset']+_0x42b5b6[_0xd6dd('0x1e')];var _0x26a440;if(_0x425177>=_0x51450a){_0x425177=_0x51450a;_0x26a440=0xc8;}else{_0x26a440=0xce;}_0x24a719['status'](_0x26a440);return _0x24a719[_0xd6dd('0x1f')](_0xd6dd('0x20'),_0x173265+'-'+_0x425177+'/'+_0x51450a)['json'](_0x2e68cd);}return null;};}function patchUpdates(_0x5a727c){return function(_0x25beaa){try{jsonpatch[_0xd6dd('0x21')](_0x25beaa,_0x5a727c,!![]);}catch(_0x2b2751){return BPromise['reject'](_0x2b2751);}return _0x25beaa[_0xd6dd('0x22')]();};}function saveUpdates(_0x3430ca,_0xd80e03){return function(_0x17ee50){if(_0x17ee50){return _0x17ee50[_0xd6dd('0x23')](_0x3430ca)[_0xd6dd('0x24')](function(_0x350e75){return _0x350e75;});}return null;};}function removeEntity(_0x4933b3,_0xa6195b){return function(_0x2fb599){if(_0x2fb599){return _0x2fb599['destroy']()[_0xd6dd('0x24')](function(){var _0xb82553=_0x2fb599[_0xd6dd('0x25')]({'plain':!![]});var _0x9f28d4='Triggers';return db[_0xd6dd('0x26')][_0xd6dd('0x27')]({'where':{'type':_0x9f28d4,'resourceId':_0xb82553['id']}})[_0xd6dd('0x24')](function(){return _0x2fb599;});})[_0xd6dd('0x24')](function(){_0x4933b3[_0xd6dd('0x18')](0xcc)[_0xd6dd('0x19')]();});}};}function handleEntityNotFound(_0x4b4515,_0x2da02c){return function(_0x107c6d){if(!_0x107c6d){_0x4b4515[_0xd6dd('0x17')](0x194);}return _0x107c6d;};}function handleError(_0x5b498f,_0x1c1866){_0x1c1866=_0x1c1866||0x1f4;return function(_0x4498d9){logger[_0xd6dd('0x28')](_0x4498d9[_0xd6dd('0x29')]);if(_0x4498d9[_0xd6dd('0x2a')]){delete _0x4498d9[_0xd6dd('0x2a')];}_0x5b498f[_0xd6dd('0x18')](_0x1c1866)[_0xd6dd('0x2b')](_0x4498d9);};}exports[_0xd6dd('0x2c')]=function(_0x1927f7,_0x26526e){var _0x138d62={},_0xeb3671={},_0x44dbe7={'count':0x0,'rows':[]};var _0x48541a=_['map'](db[_0xd6dd('0x2d')][_0xd6dd('0x2e')],function(_0x3f9a74){return{'name':_0x3f9a74[_0xd6dd('0x2f')],'type':_0x3f9a74['type'][_0xd6dd('0x30')]};});_0xeb3671['model']=_[_0xd6dd('0x31')](_0x48541a,'name');_0xeb3671['query']=_[_0xd6dd('0x32')](_0x1927f7['query']);_0xeb3671[_0xd6dd('0x33')]=_['intersection'](_0xeb3671['model'],_0xeb3671[_0xd6dd('0x34')]);_0x138d62['attributes']=_['intersection'](_0xeb3671['model'],qs[_0xd6dd('0x35')](_0x1927f7[_0xd6dd('0x34')][_0xd6dd('0x35')]));_0x138d62[_0xd6dd('0x36')]=_0x138d62[_0xd6dd('0x36')][_0xd6dd('0x37')]?_0x138d62['attributes']:_0xeb3671[_0xd6dd('0x38')];if(!_0x1927f7[_0xd6dd('0x34')][_0xd6dd('0x39')](_0xd6dd('0x3a'))){_0x138d62['limit']=qs[_0xd6dd('0x1e')](_0x1927f7[_0xd6dd('0x34')][_0xd6dd('0x1e')]);_0x138d62['offset']=qs[_0xd6dd('0x1d')](_0x1927f7[_0xd6dd('0x34')][_0xd6dd('0x1d')]);}_0x138d62[_0xd6dd('0x3b')]=qs[_0xd6dd('0x3c')](_0x1927f7[_0xd6dd('0x34')][_0xd6dd('0x3c')]);_0x138d62[_0xd6dd('0x3d')]=qs['filters'](_[_0xd6dd('0x3e')](_0x1927f7[_0xd6dd('0x34')],_0xeb3671[_0xd6dd('0x33')]),_0x48541a);if(_0x1927f7['query']['filter']){_0x138d62['where']=_['merge'](_0x138d62[_0xd6dd('0x3d')],{'$or':_['map'](_0x48541a,function(_0x15d1a2){if(_0x15d1a2['type']!==_0xd6dd('0x3f')){var _0x58ea17={};_0x58ea17[_0x15d1a2[_0xd6dd('0x2a')]]={'$like':'%'+_0x1927f7[_0xd6dd('0x34')]['filter']+'%'};return _0x58ea17;}})});}_0x138d62=_[_0xd6dd('0x40')]({},_0x138d62,_0x1927f7[_0xd6dd('0x41')]);var _0x20fde0={'where':_0x138d62[_0xd6dd('0x3d')]};return db['Trigger'][_0xd6dd('0x1c')](_0x20fde0)['then'](function(_0x1e52b6){_0x44dbe7['count']=_0x1e52b6;if(_0x1927f7[_0xd6dd('0x34')]['includeAll']){_0x138d62[_0xd6dd('0x42')]=[{'all':!![]}];}return db[_0xd6dd('0x2d')][_0xd6dd('0x43')](_0x138d62);})[_0xd6dd('0x24')](function(_0xd3afea){_0x44dbe7[_0xd6dd('0x44')]=_0xd3afea;return _0x44dbe7;})['then'](respondWithFilteredResult(_0x26526e,_0x138d62))[_0xd6dd('0x45')](handleError(_0x26526e,null));};exports[_0xd6dd('0x46')]=function(_0x2ce80c,_0x41bafd){var _0x2aabb2={'raw':![],'where':{'id':_0x2ce80c['params']['id']}},_0x34c340={};_0x34c340['model']=_[_0xd6dd('0x32')](db[_0xd6dd('0x2d')][_0xd6dd('0x2e')]);_0x34c340[_0xd6dd('0x34')]=_[_0xd6dd('0x32')](_0x2ce80c[_0xd6dd('0x34')]);_0x34c340['filters']=_['intersection'](_0x34c340['model'],_0x34c340['query']);_0x2aabb2[_0xd6dd('0x36')]=_['intersection'](_0x34c340[_0xd6dd('0x38')],qs['fields'](_0x2ce80c['query'][_0xd6dd('0x35')]));_0x2aabb2['attributes']=_0x2aabb2[_0xd6dd('0x36')]['length']?_0x2aabb2[_0xd6dd('0x36')]:_0x34c340[_0xd6dd('0x38')];if(_0x2ce80c[_0xd6dd('0x34')][_0xd6dd('0x47')]){_0x2aabb2['include']=[{'all':!![]}];}_0x2aabb2=_[_0xd6dd('0x40')]({},_0x2aabb2,_0x2ce80c['options']);return db[_0xd6dd('0x2d')][_0xd6dd('0x48')](_0x2aabb2)[_0xd6dd('0x24')](handleEntityNotFound(_0x41bafd,null))[_0xd6dd('0x24')](respondWithResult(_0x41bafd,null))['catch'](handleError(_0x41bafd,null));};exports[_0xd6dd('0x49')]=function(_0xf2788d,_0x51b370){return db[_0xd6dd('0x2d')][_0xd6dd('0x49')](_0xf2788d[_0xd6dd('0x4a')],{})['then'](function(_0x1c6451){var _0x2ce611=_0xf2788d[_0xd6dd('0x4b')]['get']({'plain':!![]});if(!_0x2ce611)throw new Error(_0xd6dd('0x4c'));if(_0x2ce611[_0xd6dd('0x4d')]==='user'){var _0x2d7b33=_0x1c6451[_0xd6dd('0x25')]({'plain':!![]});var _0x316e94=_0xd6dd('0x4e');return db[_0xd6dd('0x4f')][_0xd6dd('0x48')]({'where':{'name':_0x316e94,'userProfileId':_0x2ce611[_0xd6dd('0x50')]},'raw':!![]})[_0xd6dd('0x24')](function(_0x9b8d65){if(_0x9b8d65&&_0x9b8d65[_0xd6dd('0x51')]===0x0){return db[_0xd6dd('0x26')]['create']({'name':_0x2d7b33[_0xd6dd('0x2a')],'resourceId':_0x2d7b33['id'],'type':_0x9b8d65['name'],'sectionId':_0x9b8d65['id']},{})[_0xd6dd('0x24')](function(){return _0x1c6451;});}else{return _0x1c6451;}})[_0xd6dd('0x45')](function(_0x253c36){logger[_0xd6dd('0x28')](_0xd6dd('0x52'),_0x253c36);throw _0x253c36;});}return _0x1c6451;})['then'](respondWithResult(_0x51b370,0xc9))['catch'](handleError(_0x51b370,null));};exports[_0xd6dd('0x23')]=function(_0x30abb8,_0x6ed0b4){if(_0x30abb8[_0xd6dd('0x4a')]['id']){delete _0x30abb8['body']['id'];}return db[_0xd6dd('0x2d')][_0xd6dd('0x48')]({'where':{'id':_0x30abb8[_0xd6dd('0x53')]['id']}})[_0xd6dd('0x24')](handleEntityNotFound(_0x6ed0b4,null))['then'](saveUpdates(_0x30abb8[_0xd6dd('0x4a')],null))['then'](respondWithResult(_0x6ed0b4,null))[_0xd6dd('0x45')](handleError(_0x6ed0b4,null));};exports[_0xd6dd('0x27')]=function(_0x374878,_0x5e135e){return db[_0xd6dd('0x2d')]['find']({'where':{'id':_0x374878[_0xd6dd('0x53')]['id']}})['then'](handleEntityNotFound(_0x5e135e,null))['then'](removeEntity(_0x5e135e,null))[_0xd6dd('0x45')](handleError(_0x5e135e,null));};exports['addAllCondition']=function(_0x536307,_0x52db45,_0x187e66){if(_0x536307['body']['id']){delete _0x536307[_0xd6dd('0x4a')]['id'];}return db[_0xd6dd('0x2d')][_0xd6dd('0x48')]({'where':{'id':_0x536307[_0xd6dd('0x53')]['id']}})[_0xd6dd('0x24')](handleEntityNotFound(_0x52db45,null))['then'](function(_0x1a09c4){if(_0x1a09c4){_0x536307[_0xd6dd('0x4a')][_0xd6dd('0x54')]=_0x1a09c4['id'];return db[_0xd6dd('0x55')][_0xd6dd('0x49')](_0x536307[_0xd6dd('0x4a')]);}})[_0xd6dd('0x24')](respondWithResult(_0x52db45,null))[_0xd6dd('0x45')](handleError(_0x52db45,null));};exports[_0xd6dd('0x56')]=function(_0x1bd6ea,_0x24cc1c,_0x324897){if(_0x1bd6ea[_0xd6dd('0x4a')]['id']){delete _0x1bd6ea[_0xd6dd('0x4a')]['id'];}return db[_0xd6dd('0x2d')][_0xd6dd('0x48')]({'where':{'id':_0x1bd6ea[_0xd6dd('0x53')]['id']}})[_0xd6dd('0x24')](handleEntityNotFound(_0x24cc1c,null))[_0xd6dd('0x24')](function(_0x25bc68){if(_0x25bc68){_0x1bd6ea[_0xd6dd('0x4a')][_0xd6dd('0x57')]=_0x25bc68['id'];return db[_0xd6dd('0x55')]['create'](_0x1bd6ea[_0xd6dd('0x4a')]);}})[_0xd6dd('0x24')](respondWithResult(_0x24cc1c,null))[_0xd6dd('0x45')](handleError(_0x24cc1c,null));};exports[_0xd6dd('0x58')]=function(_0xc892ce,_0x452579,_0x30a480){var _0x47bacb={};var _0x24f8ba={};var _0x343b7a;var _0x117b0d;return db[_0xd6dd('0x2d')][_0xd6dd('0x59')]({'where':{'id':_0xc892ce[_0xd6dd('0x53')]['id']}})[_0xd6dd('0x24')](handleEntityNotFound(_0x452579,null))[_0xd6dd('0x24')](function(_0x5e31bc){if(_0x5e31bc){_0x343b7a=_0x5e31bc;_0x24f8ba[_0xd6dd('0x38')]=_['keys'](db['Condition']['rawAttributes']);_0x24f8ba[_0xd6dd('0x34')]=_['keys'](_0xc892ce[_0xd6dd('0x34')]);_0x24f8ba['filters']=_[_0xd6dd('0x5a')](_0x24f8ba[_0xd6dd('0x38')],_0x24f8ba[_0xd6dd('0x34')]);_0x47bacb[_0xd6dd('0x36')]=_['intersection'](_0x24f8ba[_0xd6dd('0x38')],qs['fields'](_0xc892ce['query'][_0xd6dd('0x35')]));_0x47bacb[_0xd6dd('0x36')]=_0x47bacb[_0xd6dd('0x36')][_0xd6dd('0x37')]?_0x47bacb[_0xd6dd('0x36')]:_0x24f8ba[_0xd6dd('0x38')];_0x47bacb['order']=qs[_0xd6dd('0x3c')](_0xc892ce[_0xd6dd('0x34')][_0xd6dd('0x3c')]);_0x47bacb[_0xd6dd('0x3d')]=qs[_0xd6dd('0x33')](_[_0xd6dd('0x3e')](_0xc892ce[_0xd6dd('0x34')],_0x24f8ba['filters']));if(_0xc892ce[_0xd6dd('0x34')]['filter']){_0x47bacb[_0xd6dd('0x3d')]=_[_0xd6dd('0x40')](_0x47bacb[_0xd6dd('0x3d')],{'$or':_[_0xd6dd('0x31')](_0x47bacb['attributes'],function(_0x9d9a2d){var _0x1c3f3c={};_0x1c3f3c[_0x9d9a2d]={'$like':'%'+_0xc892ce['query'][_0xd6dd('0x5b')]+'%'};return _0x1c3f3c;})});}_0x47bacb=_['merge']({},_0x47bacb,_0xc892ce[_0xd6dd('0x41')]);return _0x343b7a[_0xd6dd('0x58')](_0x47bacb);}})['then'](function(_0x24e0ee){if(_0x24e0ee){_0x117b0d=_0x24e0ee['length'];if(!_0xc892ce[_0xd6dd('0x34')]['hasOwnProperty']('nolimit')){_0x47bacb['limit']=qs['limit'](_0xc892ce[_0xd6dd('0x34')][_0xd6dd('0x1e')]);_0x47bacb['offset']=qs[_0xd6dd('0x1d')](_0xc892ce['query'][_0xd6dd('0x1d')]);}return _0x343b7a[_0xd6dd('0x58')](_0x47bacb);}})[_0xd6dd('0x24')](function(_0xa7cd85){if(_0xa7cd85){return _0xa7cd85?{'count':_0x117b0d,'rows':_0xa7cd85}:null;}})['then'](respondWithResult(_0x452579,null))[_0xd6dd('0x45')](handleError(_0x452579,null));};exports['getAnyConditions']=function(_0x3e8f2d,_0x543780,_0x4a0d6e){var _0xb3a9d6={};var _0x50ea34={};var _0x5074c7;var _0x255357;return db[_0xd6dd('0x2d')][_0xd6dd('0x59')]({'where':{'id':_0x3e8f2d[_0xd6dd('0x53')]['id']}})[_0xd6dd('0x24')](handleEntityNotFound(_0x543780,null))['then'](function(_0x552625){if(_0x552625){_0x5074c7=_0x552625;_0x50ea34[_0xd6dd('0x38')]=_['keys'](db[_0xd6dd('0x55')][_0xd6dd('0x2e')]);_0x50ea34[_0xd6dd('0x34')]=_[_0xd6dd('0x32')](_0x3e8f2d[_0xd6dd('0x34')]);_0x50ea34[_0xd6dd('0x33')]=_[_0xd6dd('0x5a')](_0x50ea34[_0xd6dd('0x38')],_0x50ea34[_0xd6dd('0x34')]);_0xb3a9d6['attributes']=_[_0xd6dd('0x5a')](_0x50ea34['model'],qs[_0xd6dd('0x35')](_0x3e8f2d['query'][_0xd6dd('0x35')]));_0xb3a9d6[_0xd6dd('0x36')]=_0xb3a9d6[_0xd6dd('0x36')][_0xd6dd('0x37')]?_0xb3a9d6[_0xd6dd('0x36')]:_0x50ea34[_0xd6dd('0x38')];_0xb3a9d6[_0xd6dd('0x3b')]=qs[_0xd6dd('0x3c')](_0x3e8f2d['query'][_0xd6dd('0x3c')]);_0xb3a9d6[_0xd6dd('0x3d')]=qs[_0xd6dd('0x33')](_[_0xd6dd('0x3e')](_0x3e8f2d[_0xd6dd('0x34')],_0x50ea34['filters']));if(_0x3e8f2d[_0xd6dd('0x34')]['filter']){_0xb3a9d6['where']=_[_0xd6dd('0x40')](_0xb3a9d6['where'],{'$or':_[_0xd6dd('0x31')](_0xb3a9d6['attributes'],function(_0x3f8e43){var _0x12e15d={};_0x12e15d[_0x3f8e43]={'$like':'%'+_0x3e8f2d[_0xd6dd('0x34')][_0xd6dd('0x5b')]+'%'};return _0x12e15d;})});}_0xb3a9d6=_[_0xd6dd('0x40')]({},_0xb3a9d6,_0x3e8f2d['options']);return _0x5074c7['getAnyConditions'](_0xb3a9d6);}})[_0xd6dd('0x24')](function(_0x5f5cf5){if(_0x5f5cf5){_0x255357=_0x5f5cf5[_0xd6dd('0x37')];if(!_0x3e8f2d[_0xd6dd('0x34')][_0xd6dd('0x39')]('nolimit')){_0xb3a9d6[_0xd6dd('0x1e')]=qs[_0xd6dd('0x1e')](_0x3e8f2d['query'][_0xd6dd('0x1e')]);_0xb3a9d6['offset']=qs['offset'](_0x3e8f2d[_0xd6dd('0x34')]['offset']);}return _0x5074c7[_0xd6dd('0x5c')](_0xb3a9d6);}})[_0xd6dd('0x24')](function(_0x543130){if(_0x543130){return _0x543130?{'count':_0x255357,'rows':_0x543130}:null;}})[_0xd6dd('0x24')](respondWithResult(_0x543780,null))[_0xd6dd('0x45')](handleError(_0x543780,null));};exports[_0xd6dd('0x5d')]=function(_0xbee743,_0x241363,_0x5d026d){if(_0xbee743[_0xd6dd('0x4a')]['id']){delete _0xbee743[_0xd6dd('0x4a')]['id'];}return db[_0xd6dd('0x2d')][_0xd6dd('0x48')]({'where':{'id':_0xbee743[_0xd6dd('0x53')]['id']}})[_0xd6dd('0x24')](handleEntityNotFound(_0x241363,null))[_0xd6dd('0x24')](function(_0x4f7186){if(_0x4f7186){_0xbee743[_0xd6dd('0x4a')][_0xd6dd('0x5e')]=_0x4f7186['id'];return db[_0xd6dd('0x5f')][_0xd6dd('0x49')](_0xbee743[_0xd6dd('0x4a')]);}})[_0xd6dd('0x24')](respondWithResult(_0x241363,null))[_0xd6dd('0x45')](handleError(_0x241363,null));};exports[_0xd6dd('0x60')]=function(_0x3d72d0,_0x3e7e5e,_0x5b9a4f){var _0x555129={};var _0x36acc6={};var _0x36a48a;var _0x179e43;return db[_0xd6dd('0x2d')]['findOne']({'where':{'id':_0x3d72d0[_0xd6dd('0x53')]['id']}})['then'](handleEntityNotFound(_0x3e7e5e,null))[_0xd6dd('0x24')](function(_0x310b7a){if(_0x310b7a){_0x36a48a=_0x310b7a;_0x36acc6[_0xd6dd('0x38')]=_[_0xd6dd('0x32')](db[_0xd6dd('0x5f')]['rawAttributes']);_0x36acc6['query']=_[_0xd6dd('0x32')](_0x3d72d0['query']);_0x36acc6['filters']=_[_0xd6dd('0x5a')](_0x36acc6[_0xd6dd('0x38')],_0x36acc6[_0xd6dd('0x34')]);_0x555129[_0xd6dd('0x36')]=_[_0xd6dd('0x5a')](_0x36acc6['model'],qs[_0xd6dd('0x35')](_0x3d72d0[_0xd6dd('0x34')][_0xd6dd('0x35')]));_0x555129[_0xd6dd('0x36')]=_0x555129[_0xd6dd('0x36')][_0xd6dd('0x37')]?_0x555129[_0xd6dd('0x36')]:_0x36acc6['model'];_0x555129[_0xd6dd('0x3b')]=qs[_0xd6dd('0x3c')](_0x3d72d0[_0xd6dd('0x34')][_0xd6dd('0x3c')]);_0x555129[_0xd6dd('0x3d')]=qs[_0xd6dd('0x33')](_['pick'](_0x3d72d0['query'],_0x36acc6['filters']));if(_0x3d72d0[_0xd6dd('0x34')][_0xd6dd('0x5b')]){_0x555129[_0xd6dd('0x3d')]=_[_0xd6dd('0x40')](_0x555129['where'],{'$or':_[_0xd6dd('0x31')](_0x555129[_0xd6dd('0x36')],function(_0xeeeeee){var _0x3b35d0={};_0x3b35d0[_0xeeeeee]={'$like':'%'+_0x3d72d0['query'][_0xd6dd('0x5b')]+'%'};return _0x3b35d0;})});}_0x555129=_[_0xd6dd('0x40')]({},_0x555129,_0x3d72d0[_0xd6dd('0x41')]);return _0x36a48a[_0xd6dd('0x60')](_0x555129);}})[_0xd6dd('0x24')](function(_0x2ff98c){if(_0x2ff98c){_0x179e43=_0x2ff98c[_0xd6dd('0x37')];if(!_0x3d72d0[_0xd6dd('0x34')][_0xd6dd('0x39')](_0xd6dd('0x3a'))){_0x555129[_0xd6dd('0x1e')]=qs[_0xd6dd('0x1e')](_0x3d72d0['query'][_0xd6dd('0x1e')]);_0x555129['offset']=qs['offset'](_0x3d72d0[_0xd6dd('0x34')][_0xd6dd('0x1d')]);}return _0x36a48a[_0xd6dd('0x60')](_0x555129);}})[_0xd6dd('0x24')](function(_0x493d7f){if(_0x493d7f){return _0x493d7f?{'count':_0x179e43,'rows':_0x493d7f}:null;}})[_0xd6dd('0x24')](respondWithResult(_0x3e7e5e,null))[_0xd6dd('0x45')](handleError(_0x3e7e5e,null));};
\ No newline at end of file
index 1968c9d..b4782a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab86=['util','../../config/logger','bluebird','path','../../config/environment','./trigger.attributes','exports','define','Trigger','tools_triggers','lodash'];(function(_0x2f99b7,_0x6301f9){var _0x2a201b=function(_0x32e6e8){while(--_0x32e6e8){_0x2f99b7['push'](_0x2f99b7['shift']());}};_0x2a201b(++_0x6301f9);}(_0xab86,0x13e));var _0x6ab8=function(_0x403adb,_0x267efc){_0x403adb=_0x403adb-0x0;var _0x4589f7=_0xab86[_0x403adb];return _0x4589f7;};'use strict';var _=require(_0x6ab8('0x0'));var util=require(_0x6ab8('0x1'));var logger=require(_0x6ab8('0x2'))('api');var moment=require('moment');var BPromise=require(_0x6ab8('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6ab8('0x4'));var rimraf=require('rimraf');var config=require(_0x6ab8('0x5'));var attributes=require(_0x6ab8('0x6'));module[_0x6ab8('0x7')]=function(_0x154d17,_0x6f41f){return _0x154d17[_0x6ab8('0x8')](_0x6ab8('0x9'),attributes,{'tableName':_0x6ab8('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xad53=['bluebird','request-promise','path','../../config/environment','./trigger.attributes','exports','lodash','util','../../config/logger','api','moment'];(function(_0x4b82ab,_0x2493a5){var _0x4ffa42=function(_0xb8da04){while(--_0xb8da04){_0x4b82ab['push'](_0x4b82ab['shift']());}};_0x4ffa42(++_0x2493a5);}(_0xad53,0x1ea));var _0x3ad5=function(_0x4f00cf,_0x3bb7ac){_0x4f00cf=_0x4f00cf-0x0;var _0x1bab0c=_0xad53[_0x4f00cf];return _0x1bab0c;};'use strict';var _=require(_0x3ad5('0x0'));var util=require(_0x3ad5('0x1'));var logger=require(_0x3ad5('0x2'))(_0x3ad5('0x3'));var moment=require(_0x3ad5('0x4'));var BPromise=require(_0x3ad5('0x5'));var rp=require(_0x3ad5('0x6'));var fs=require('fs');var path=require(_0x3ad5('0x7'));var rimraf=require('rimraf');var config=require(_0x3ad5('0x8'));var attributes=require(_0x3ad5('0x9'));module[_0x3ad5('0xa')]=function(_0x2f75b5,_0x371fbd){return _0x2f75b5['define']('Trigger',attributes,{'tableName':'tools_triggers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d460573..f03db1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8423=['randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','debug','stringify','error','code','Trigger,\x20%s,\x20%s','message','result','catch','GetTrigger','Trigger','findAll','options','raw','where','attributes','map','include','model','ShowTrigger','util','moment'];(function(_0x15e566,_0x343b37){var _0x587b0b=function(_0x242345){while(--_0x242345){_0x15e566['push'](_0x15e566['shift']());}};_0x587b0b(++_0x343b37);}(_0x8423,0x11e));var _0x3842=function(_0x48008f,_0x7e49f8){_0x48008f=_0x48008f-0x0;var _0x2cb4b1=_0x8423[_0x48008f];return _0x2cb4b1;};'use strict';var _=require('lodash');var util=require(_0x3842('0x0'));var moment=require(_0x3842('0x1'));var BPromise=require('bluebird');var rs=require(_0x3842('0x2'));var fs=require('fs');var Redis=require(_0x3842('0x3'));var db=require(_0x3842('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x3842('0x5'));var config=require(_0x3842('0x6'));var jayson=require(_0x3842('0x7'));var client=jayson['client'][_0x3842('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5861b5,_0x37c709,_0x17caa4){return new BPromise(function(_0xbbc34b,_0xfa89fa){return client[_0x3842('0x9')](_0x5861b5,_0x17caa4)[_0x3842('0xa')](function(_0x5cbbad){logger[_0x3842('0xb')]('Trigger,\x20%s,\x20%s',_0x37c709,_0x3842('0xc'));logger[_0x3842('0xd')]('Trigger,\x20%s,\x20%s,\x20%s',_0x37c709,_0x3842('0xc'),JSON[_0x3842('0xe')](_0x5cbbad));if(_0x5cbbad[_0x3842('0xf')]){if(_0x5cbbad[_0x3842('0xf')][_0x3842('0x10')]===0x1f4){logger[_0x3842('0xf')](_0x3842('0x11'),_0x37c709,_0x5cbbad['error'][_0x3842('0x12')]);return _0xfa89fa(_0x5cbbad['error'][_0x3842('0x12')]);}logger[_0x3842('0xf')](_0x3842('0x11'),_0x37c709,_0x5cbbad[_0x3842('0xf')][_0x3842('0x12')]);return _0xbbc34b(_0x5cbbad[_0x3842('0xf')]['message']);}else{logger[_0x3842('0xb')]('Trigger,\x20%s,\x20%s',_0x37c709,_0x3842('0xc'));_0xbbc34b(_0x5cbbad[_0x3842('0x13')][_0x3842('0x12')]);}})[_0x3842('0x14')](function(_0x4ba7cc){logger['error'](_0x3842('0x11'),_0x37c709,_0x4ba7cc);_0xfa89fa(_0x4ba7cc);});});}exports[_0x3842('0x15')]=function(_0x5c1ec6){var _0x5a6643=this;return new Promise(function(_0x30d6ae,_0x253431){return db[_0x3842('0x16')][_0x3842('0x17')]({'raw':_0x5c1ec6[_0x3842('0x18')]?_0x5c1ec6['options'][_0x3842('0x19')]===undefined?!![]:![]:!![],'where':_0x5c1ec6[_0x3842('0x18')]?_0x5c1ec6['options'][_0x3842('0x1a')]||null:null,'attributes':_0x5c1ec6['options']?_0x5c1ec6['options'][_0x3842('0x1b')]||null:null,'limit':_0x5c1ec6[_0x3842('0x18')]?_0x5c1ec6[_0x3842('0x18')]['limit']||null:null,'include':_0x5c1ec6[_0x3842('0x18')]?_0x5c1ec6[_0x3842('0x18')]['include']?_[_0x3842('0x1c')](_0x5c1ec6[_0x3842('0x18')][_0x3842('0x1d')],function(_0xa529fd){return{'model':db[_0xa529fd[_0x3842('0x1e')]],'as':_0xa529fd['as'],'attributes':_0xa529fd[_0x3842('0x1b')],'include':_0xa529fd[_0x3842('0x1d')]?_['map'](_0xa529fd['include'],function(_0x1daf23){return{'model':db[_0x1daf23[_0x3842('0x1e')]],'as':_0x1daf23['as'],'attributes':_0x1daf23[_0x3842('0x1b')],'include':_0x1daf23[_0x3842('0x1d')]?_[_0x3842('0x1c')](_0x1daf23['include'],function(_0x5be7ab){return{'model':db[_0x5be7ab[_0x3842('0x1e')]],'as':_0x5be7ab['as'],'attributes':_0x5be7ab[_0x3842('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5ba319){logger[_0x3842('0xb')](_0x3842('0x15'),_0x5c1ec6);logger[_0x3842('0xd')](_0x3842('0x15'),_0x5c1ec6,JSON[_0x3842('0xe')](_0x5ba319));_0x30d6ae(_0x5ba319);})[_0x3842('0x14')](function(_0x3f9f81){logger[_0x3842('0xf')](_0x3842('0x15'),_0x3f9f81[_0x3842('0x12')],_0x5c1ec6);_0x253431(_0x5a6643[_0x3842('0xf')](0x1f4,_0x3f9f81[_0x3842('0x12')]));});});};exports[_0x3842('0x1f')]=function(_0x3635d3){var _0x2c46a4=this;return new Promise(function(_0x410bb8,_0x632200){return db[_0x3842('0x16')]['find']({'raw':_0x3635d3['options']?_0x3635d3[_0x3842('0x18')][_0x3842('0x19')]===undefined?!![]:![]:!![],'where':_0x3635d3[_0x3842('0x18')]?_0x3635d3[_0x3842('0x18')][_0x3842('0x1a')]||null:null,'attributes':_0x3635d3[_0x3842('0x18')]?_0x3635d3[_0x3842('0x18')][_0x3842('0x1b')]||null:null,'include':_0x3635d3[_0x3842('0x18')]?_0x3635d3[_0x3842('0x18')][_0x3842('0x1d')]?_[_0x3842('0x1c')](_0x3635d3[_0x3842('0x18')]['include'],function(_0xd328e1){return{'model':db[_0xd328e1[_0x3842('0x1e')]],'as':_0xd328e1['as'],'attributes':_0xd328e1[_0x3842('0x1b')],'include':_0xd328e1[_0x3842('0x1d')]?_[_0x3842('0x1c')](_0xd328e1[_0x3842('0x1d')],function(_0x47ac97){return{'model':db[_0x47ac97[_0x3842('0x1e')]],'as':_0x47ac97['as'],'attributes':_0x47ac97['attributes'],'include':_0x47ac97[_0x3842('0x1d')]?_[_0x3842('0x1c')](_0x47ac97[_0x3842('0x1d')],function(_0x45db8d){return{'model':db[_0x45db8d[_0x3842('0x1e')]],'as':_0x45db8d['as'],'attributes':_0x45db8d[_0x3842('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x3842('0xa')](function(_0x5b8d91){logger['info'](_0x3842('0x1f'),_0x3635d3);logger['debug'](_0x3842('0x1f'),_0x3635d3,JSON[_0x3842('0xe')](_0x5b8d91));_0x410bb8(_0x5b8d91);})[_0x3842('0x14')](function(_0x2237bb){logger[_0x3842('0xf')](_0x3842('0x1f'),_0x2237bb[_0x3842('0x12')],_0x3635d3);_0x632200(_0x2c46a4[_0x3842('0xf')](0x1f4,_0x2237bb[_0x3842('0x12')]));});});};
\ No newline at end of file
+var _0x3969=['error','code','message','result','catch','Trigger','findAll','options','attributes','limit','include','map','model','GetTrigger','stringify','ShowTrigger','raw','where','debug','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Trigger,\x20%s,\x20%s','request\x20sent','Trigger,\x20%s,\x20%s,\x20%s'];(function(_0x5725c6,_0x194dd2){var _0x42e116=function(_0x416bf1){while(--_0x416bf1){_0x5725c6['push'](_0x5725c6['shift']());}};_0x42e116(++_0x194dd2);}(_0x3969,0x157));var _0x9396=function(_0xb05d0,_0x269580){_0xb05d0=_0xb05d0-0x0;var _0x48dd78=_0x3969[_0xb05d0];return _0x48dd78;};'use strict';var _=require('lodash');var util=require(_0x9396('0x0'));var moment=require('moment');var BPromise=require(_0x9396('0x1'));var rs=require(_0x9396('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9396('0x3'))['db'];var utils=require(_0x9396('0x4'));var logger=require(_0x9396('0x5'))(_0x9396('0x6'));var config=require(_0x9396('0x7'));var jayson=require(_0x9396('0x8'));var client=jayson[_0x9396('0x9')][_0x9396('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x25d813,_0x5c7f2e,_0x187b7b){return new BPromise(function(_0x25cd69,_0x999b81){return client[_0x9396('0xb')](_0x25d813,_0x187b7b)[_0x9396('0xc')](function(_0x562a95){logger[_0x9396('0xd')](_0x9396('0xe'),_0x5c7f2e,_0x9396('0xf'));logger['debug'](_0x9396('0x10'),_0x5c7f2e,_0x9396('0xf'),JSON['stringify'](_0x562a95));if(_0x562a95[_0x9396('0x11')]){if(_0x562a95[_0x9396('0x11')][_0x9396('0x12')]===0x1f4){logger[_0x9396('0x11')]('Trigger,\x20%s,\x20%s',_0x5c7f2e,_0x562a95[_0x9396('0x11')]['message']);return _0x999b81(_0x562a95[_0x9396('0x11')]['message']);}logger['error'](_0x9396('0xe'),_0x5c7f2e,_0x562a95[_0x9396('0x11')]['message']);return _0x25cd69(_0x562a95[_0x9396('0x11')][_0x9396('0x13')]);}else{logger[_0x9396('0xd')](_0x9396('0xe'),_0x5c7f2e,_0x9396('0xf'));_0x25cd69(_0x562a95[_0x9396('0x14')][_0x9396('0x13')]);}})[_0x9396('0x15')](function(_0x24ffc4){logger[_0x9396('0x11')](_0x9396('0xe'),_0x5c7f2e,_0x24ffc4);_0x999b81(_0x24ffc4);});});}exports['GetTrigger']=function(_0x3faf3f){var _0x4cb406=this;return new Promise(function(_0x51858c,_0x29b0a2){return db[_0x9396('0x16')][_0x9396('0x17')]({'raw':_0x3faf3f[_0x9396('0x18')]?_0x3faf3f['options']['raw']===undefined?!![]:![]:!![],'where':_0x3faf3f[_0x9396('0x18')]?_0x3faf3f['options']['where']||null:null,'attributes':_0x3faf3f[_0x9396('0x18')]?_0x3faf3f['options'][_0x9396('0x19')]||null:null,'limit':_0x3faf3f[_0x9396('0x18')]?_0x3faf3f[_0x9396('0x18')][_0x9396('0x1a')]||null:null,'include':_0x3faf3f['options']?_0x3faf3f['options'][_0x9396('0x1b')]?_[_0x9396('0x1c')](_0x3faf3f[_0x9396('0x18')][_0x9396('0x1b')],function(_0x3423f1){return{'model':db[_0x3423f1['model']],'as':_0x3423f1['as'],'attributes':_0x3423f1[_0x9396('0x19')],'include':_0x3423f1[_0x9396('0x1b')]?_[_0x9396('0x1c')](_0x3423f1['include'],function(_0x80d790){return{'model':db[_0x80d790['model']],'as':_0x80d790['as'],'attributes':_0x80d790['attributes'],'include':_0x80d790['include']?_[_0x9396('0x1c')](_0x80d790[_0x9396('0x1b')],function(_0x21108f){return{'model':db[_0x21108f[_0x9396('0x1d')]],'as':_0x21108f['as'],'attributes':_0x21108f[_0x9396('0x19')]};}):[]};}):[]};}):[]:[]})[_0x9396('0xc')](function(_0x3b9a12){logger[_0x9396('0xd')]('GetTrigger',_0x3faf3f);logger['debug'](_0x9396('0x1e'),_0x3faf3f,JSON[_0x9396('0x1f')](_0x3b9a12));_0x51858c(_0x3b9a12);})['catch'](function(_0x23b507){logger[_0x9396('0x11')](_0x9396('0x1e'),_0x23b507[_0x9396('0x13')],_0x3faf3f);_0x29b0a2(_0x4cb406[_0x9396('0x11')](0x1f4,_0x23b507[_0x9396('0x13')]));});});};exports[_0x9396('0x20')]=function(_0x4d2ba2){var _0x12e92b=this;return new Promise(function(_0xd53f60,_0x55703d){return db[_0x9396('0x16')]['find']({'raw':_0x4d2ba2['options']?_0x4d2ba2[_0x9396('0x18')][_0x9396('0x21')]===undefined?!![]:![]:!![],'where':_0x4d2ba2[_0x9396('0x18')]?_0x4d2ba2[_0x9396('0x18')][_0x9396('0x22')]||null:null,'attributes':_0x4d2ba2['options']?_0x4d2ba2[_0x9396('0x18')][_0x9396('0x19')]||null:null,'include':_0x4d2ba2[_0x9396('0x18')]?_0x4d2ba2[_0x9396('0x18')][_0x9396('0x1b')]?_[_0x9396('0x1c')](_0x4d2ba2[_0x9396('0x18')][_0x9396('0x1b')],function(_0x44fe14){return{'model':db[_0x44fe14['model']],'as':_0x44fe14['as'],'attributes':_0x44fe14[_0x9396('0x19')],'include':_0x44fe14[_0x9396('0x1b')]?_[_0x9396('0x1c')](_0x44fe14[_0x9396('0x1b')],function(_0x1efd4e){return{'model':db[_0x1efd4e[_0x9396('0x1d')]],'as':_0x1efd4e['as'],'attributes':_0x1efd4e[_0x9396('0x19')],'include':_0x1efd4e[_0x9396('0x1b')]?_[_0x9396('0x1c')](_0x1efd4e[_0x9396('0x1b')],function(_0x173018){return{'model':db[_0x173018[_0x9396('0x1d')]],'as':_0x173018['as'],'attributes':_0x173018[_0x9396('0x19')]};}):[]};}):[]};}):[]:[]})[_0x9396('0xc')](function(_0xd0142e){logger[_0x9396('0xd')]('ShowTrigger',_0x4d2ba2);logger[_0x9396('0x23')](_0x9396('0x20'),_0x4d2ba2,JSON[_0x9396('0x1f')](_0xd0142e));_0xd53f60(_0xd0142e);})[_0x9396('0x15')](function(_0x202e79){logger[_0x9396('0x11')]('ShowTrigger',_0x202e79[_0x9396('0x13')],_0x4d2ba2);_0x55703d(_0x12e92b[_0x9396('0x11')](0x1f4,_0x202e79[_0x9396('0x13')]));});});};
\ No newline at end of file
index 435adf0..0a00824 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f68=['path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/clone','clone','create','put','update','delete','multer','util'];(function(_0x3499fa,_0x4121d7){var _0x6b6ff0=function(_0x407745){while(--_0x407745){_0x3499fa['push'](_0x3499fa['shift']());}};_0x6b6ff0(++_0x4121d7);}(_0x8f68,0x1b6));var _0x88f6=function(_0x1ad7d5,_0x4e06db){_0x1ad7d5=_0x1ad7d5-0x0;var _0x100716=_0x8f68[_0x1ad7d5];return _0x100716;};'use strict';var multer=require(_0x88f6('0x0'));var util=require(_0x88f6('0x1'));var path=require(_0x88f6('0x2'));var timeout=require(_0x88f6('0x3'));var express=require(_0x88f6('0x4'));var router=express[_0x88f6('0x5')]();var fs_extra=require(_0x88f6('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x88f6('0x7'));var config=require(_0x88f6('0x8'));var controller=require('./trunk.controller');router[_0x88f6('0x9')]('/',auth[_0x88f6('0xa')](),controller[_0x88f6('0xb')]);router['get'](_0x88f6('0xc'),auth[_0x88f6('0xa')](),controller[_0x88f6('0xd')]);router['post'](_0x88f6('0xe'),auth[_0x88f6('0xa')](),controller[_0x88f6('0xf')]);router['post']('/',auth['isAuthenticated'](),controller[_0x88f6('0x10')]);router[_0x88f6('0x11')](_0x88f6('0xc'),auth[_0x88f6('0xa')](),controller[_0x88f6('0x12')]);router[_0x88f6('0x13')](_0x88f6('0xc'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x846e=['../../config/environment','get','isAuthenticated','index','/:id','post','/:id/clone','put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x4f2a59,_0x1404a3){var _0x355ea9=function(_0x17127){while(--_0x17127){_0x4f2a59['push'](_0x4f2a59['shift']());}};_0x355ea9(++_0x1404a3);}(_0x846e,0x173));var _0xe846=function(_0x3ebbf1,_0x22efbf){_0x3ebbf1=_0x3ebbf1-0x0;var _0x53e75a=_0x846e[_0x3ebbf1];return _0x53e75a;};'use strict';var multer=require(_0xe846('0x0'));var util=require(_0xe846('0x1'));var path=require(_0xe846('0x2'));var timeout=require(_0xe846('0x3'));var express=require(_0xe846('0x4'));var router=express[_0xe846('0x5')]();var fs_extra=require(_0xe846('0x6'));var auth=require(_0xe846('0x7'));var interaction=require(_0xe846('0x8'));var config=require(_0xe846('0x9'));var controller=require('./trunk.controller');router[_0xe846('0xa')]('/',auth[_0xe846('0xb')](),controller[_0xe846('0xc')]);router[_0xe846('0xa')](_0xe846('0xd'),auth['isAuthenticated'](),controller['show']);router[_0xe846('0xe')](_0xe846('0xf'),auth[_0xe846('0xb')](),controller['clone']);router[_0xe846('0xe')]('/',auth[_0xe846('0xb')](),controller['create']);router[_0xe846('0x10')](_0xe846('0xd'),auth[_0xe846('0xb')](),controller[_0xe846('0x11')]);router[_0xe846('0x12')](_0xe846('0xd'),auth[_0xe846('0xb')](),controller[_0xe846('0x13')]);module['exports']=router;
\ No newline at end of file
index 561481a..033dbd6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48a9=['nonat','outgoing','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]','port,invite','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','\x22\x22\x20<>','INTEGER','always','refuse','uas','pai','fingerprint','certificate','active','passive','dynamic','update','BOOLEAN','sequelize','exports','STRING','ENUM','friend','user','peer','from-voip-provider','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','udp','setDataValue','transport','join','getDataValue','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','auto','yes'];(function(_0x42d444,_0x5cf29f){var _0x41df07=function(_0x5af036){while(--_0x5af036){_0x42d444['push'](_0x42d444['shift']());}};_0x41df07(++_0x5cf29f);}(_0x48a9,0xe0));var _0x948a=function(_0x1f5887,_0x2fa1f1){_0x1f5887=_0x1f5887-0x0;var _0x21774b=_0x48a9[_0x1f5887];return _0x21774b;};'use strict';var Sequelize=require(_0x948a('0x0'));module[_0x948a('0x1')]={'name':{'type':Sequelize[_0x948a('0x2')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x948a('0x3')](_0x948a('0x4'),_0x948a('0x5'),_0x948a('0x6')),'allowNull':![],'defaultValue':'friend'},'context':{'type':Sequelize[_0x948a('0x2')],'allowNull':![],'defaultValue':_0x948a('0x7')},'callingpres':{'type':Sequelize[_0x948a('0x3')](_0x948a('0x8'),_0x948a('0x9'),'ALLOWED_FAILED_SCREEN',_0x948a('0xa'),_0x948a('0xb'),_0x948a('0xc'),_0x948a('0xd'),_0x948a('0xe'))},'deny':{'type':Sequelize[_0x948a('0x2')]},'permit':{'type':Sequelize[_0x948a('0x2')]},'secret':{'type':Sequelize[_0x948a('0x2')]},'md5secret':{'type':Sequelize['STRING']},'remotesecret':{'type':Sequelize[_0x948a('0x2')]},'transport':{'type':Sequelize[_0x948a('0x2')],'defaultValue':_0x948a('0xf'),'set':function(_0xac91ef){this[_0x948a('0x10')](_0x948a('0x11'),_0xac91ef?_0xac91ef[_0x948a('0x12')](','):null);},'get':function(){return this[_0x948a('0x13')](_0x948a('0x11'))?this[_0x948a('0x13')](_0x948a('0x11'))[_0x948a('0x14')](','):null;},'comment':_0x948a('0x15')},'dtmfmode':{'type':Sequelize[_0x948a('0x3')](_0x948a('0x16'),_0x948a('0x17'),'shortinfo','inband',_0x948a('0x18')),'defaultValue':_0x948a('0x16')},'directmedia':{'type':Sequelize[_0x948a('0x3')](_0x948a('0x19'),'no',_0x948a('0x1a'),'update',_0x948a('0x1b')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize['STRING']},'directmediadeny':{'type':Sequelize[_0x948a('0x2')]},'nat':{'type':Sequelize[_0x948a('0x2')],'defaultValue':'force_rport,comedia','set':function(_0x374261){this[_0x948a('0x10')]('nat',_0x374261?_0x374261[_0x948a('0x12')](','):null);},'get':function(){return this['getDataValue'](_0x948a('0x1c'))?this['getDataValue'](_0x948a('0x1c'))[_0x948a('0x14')](','):null;},'comment':_0x948a('0x1d')},'callgroup':{'type':Sequelize[_0x948a('0x2')]},'namedcallgroup':{'type':Sequelize[_0x948a('0x2')]},'pickupgroup':{'type':Sequelize[_0x948a('0x2')]},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x948a('0x2')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x948a('0x2')],'allowNull':!![]},'disallow':{'type':Sequelize[_0x948a('0x2')],'defaultValue':_0x948a('0x1e')},'allow':{'type':Sequelize[_0x948a('0x2')],'allowNull':![],'defaultValue':_0x948a('0x1f'),'set':function(_0x40854e){this[_0x948a('0x10')](_0x948a('0x20'),_0x40854e?_0x40854e[_0x948a('0x12')](';'):_0x948a('0x1f'));},'get':function(){return this['getDataValue'](_0x948a('0x20'))?this[_0x948a('0x13')](_0x948a('0x20'))[_0x948a('0x14')](';'):null;},'comment':_0x948a('0x21')},'autoframing':{'type':Sequelize[_0x948a('0x3')](_0x948a('0x19'),'no')},'insecure':{'type':Sequelize['STRING'],'defaultValue':_0x948a('0x22'),'set':function(_0x193282){this['setDataValue']('insecure',_0x193282?_0x193282['join'](','):null);},'get':function(){return this['getDataValue'](_0x948a('0x23'))?this[_0x948a('0x13')](_0x948a('0x23'))['split'](','):null;},'comment':_0x948a('0x24')},'trustrpid':{'type':Sequelize[_0x948a('0x3')](_0x948a('0x19'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x948a('0x3')]('yes','no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x948a('0x3')](_0x948a('0x19'),'no','never')},'promiscredir':{'type':Sequelize[_0x948a('0x3')]('yes','no')},'useclientcode':{'type':Sequelize[_0x948a('0x3')](_0x948a('0x19'),'no')},'accountcode':{'type':Sequelize['INTEGER'](0xb)},'setvar':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0x948a('0x2')],'defaultValue':_0x948a('0x25')},'amaflags':{'type':Sequelize['STRING']},'callcounter':{'type':Sequelize[_0x948a('0x3')](_0x948a('0x19'),'no'),'defaultValue':'yes'},'busylevel':{'type':Sequelize[_0x948a('0x26')](0xb)},'allowoverlap':{'type':Sequelize['ENUM'](_0x948a('0x19'),'no')},'allowsubscribe':{'type':Sequelize[_0x948a('0x3')](_0x948a('0x19'),'no')},'allowtransfer':{'type':Sequelize['ENUM'](_0x948a('0x19'),'no')},'ignoresdpversion':{'type':Sequelize[_0x948a('0x3')](_0x948a('0x19'),'no')},'subscribecontext':{'type':Sequelize[_0x948a('0x2')]},'template':{'type':Sequelize['STRING']},'videosupport':{'type':Sequelize['ENUM']('yes','no',_0x948a('0x27')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x948a('0x26')](0xb)},'rfc2833compensate':{'type':Sequelize['ENUM'](_0x948a('0x19'),'no')},'mailbox':{'type':Sequelize[_0x948a('0x2')]},'session_timers':{'type':Sequelize[_0x948a('0x3')]('accept',_0x948a('0x28'),'originate')},'session_expires':{'type':Sequelize[_0x948a('0x26')](0xb)},'session_minse':{'type':Sequelize[_0x948a('0x26')](0xb)},'session_refresher':{'type':Sequelize[_0x948a('0x3')]('uac','uas'),'defaultValue':_0x948a('0x29')},'t38pt_usertpsource':{'type':Sequelize[_0x948a('0x2')]},'regexten':{'type':Sequelize[_0x948a('0x2')]},'fromdomain':{'type':Sequelize[_0x948a('0x2')]},'fromuser':{'type':Sequelize[_0x948a('0x2')]},'port':{'type':Sequelize[_0x948a('0x26')](0x5)},'qualify':{'type':Sequelize[_0x948a('0x3')](_0x948a('0x19'),'no'),'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0x948a('0x26')](0xb)},'defaultip':{'type':Sequelize[_0x948a('0x2')]},'defaultuser':{'type':Sequelize['STRING']},'rtptimeout':{'type':Sequelize[_0x948a('0x26')](0xb)},'rtpholdtimeout':{'type':Sequelize[_0x948a('0x26')](0xb)},'rtpkeepalive':{'type':Sequelize[_0x948a('0x26')](0xb)},'sendrpid':{'type':Sequelize[_0x948a('0x3')](_0x948a('0x19'),'no',_0x948a('0x2a')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x948a('0x2')]},'callbackextension':{'type':Sequelize['STRING']},'timert1':{'type':Sequelize[_0x948a('0x26')](0xb)},'timerb':{'type':Sequelize[_0x948a('0x26')](0xb)},'qualifyfreq':{'type':Sequelize['INTEGER'](0xb)},'contactpermit':{'type':Sequelize[_0x948a('0x2')]},'contactdeny':{'type':Sequelize[_0x948a('0x2')]},'contactacl':{'type':Sequelize[_0x948a('0x2')]},'unsolicited_mailbox':{'type':Sequelize[_0x948a('0x2')]},'use_q850_reason':{'type':Sequelize[_0x948a('0x2')]},'maxforwards':{'type':Sequelize[_0x948a('0x26')](0xb)},'encryption':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0x948a('0x3')](_0x948a('0x19'),'no')},'force_avp':{'type':Sequelize[_0x948a('0x3')]('yes','no')},'icesupport':{'type':Sequelize[_0x948a('0x3')](_0x948a('0x19'),'no')},'dtlsenable':{'type':Sequelize[_0x948a('0x3')](_0x948a('0x19'),'no')},'dtlsverify':{'type':Sequelize[_0x948a('0x3')](_0x948a('0x19'),'no',_0x948a('0x2b'),_0x948a('0x2c'))},'dtlsrekey':{'type':Sequelize[_0x948a('0x26')](0xb)},'dtlscertfile':{'type':Sequelize[_0x948a('0x2')]},'dtlsprivatekey':{'type':Sequelize[_0x948a('0x2')]},'dtlscipher':{'type':Sequelize[_0x948a('0x2')]},'dtlscafile':{'type':Sequelize[_0x948a('0x2')]},'dtlscapath':{'type':Sequelize['STRING']},'dtlssetup':{'type':Sequelize['ENUM'](_0x948a('0x2d'),_0x948a('0x2e'),'actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x948a('0x2')]},'usereqphone':{'type':Sequelize[_0x948a('0x3')]('yes','no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x948a('0x2')]},'recordofffeature':{'type':Sequelize[_0x948a('0x2')]},'call_limit':{'type':Sequelize[_0x948a('0x26')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize['ENUM'](_0x948a('0x19'),'no')},'subscribemwi':{'type':Sequelize[_0x948a('0x3')](_0x948a('0x19'),'no')},'vmexten':{'type':Sequelize[_0x948a('0x2')]},'mohinterpret':{'type':Sequelize[_0x948a('0x2')]},'mohsuggest':{'type':Sequelize[_0x948a('0x2')]},'parkinglot':{'type':Sequelize[_0x948a('0x2')]},'description':{'type':Sequelize[_0x948a('0x2')]},'host':{'type':Sequelize[_0x948a('0x2')],'defaultValue':_0x948a('0x2f')},'canreinvite':{'type':Sequelize[_0x948a('0x3')](_0x948a('0x19'),'no',_0x948a('0x1a'),_0x948a('0x30'),'update,nonat'),'defaultValue':'no'},'registry':{'type':Sequelize[_0x948a('0x2')]},'otherFields':{'type':Sequelize['STRING']},'active':{'type':Sequelize[_0x948a('0x31')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0x948a('0x2')],'defaultValue':'no'}};
\ No newline at end of file
+var _0x6ccc=['PROHIB_FAILED_SCREEN','setDataValue','getDataValue','transport','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','shortinfo','inband','auto','rfc2833','yes','nonat','outgoing','force_rport,comedia','nat','join','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','refuse','originate','uac','uas','pai','fingerprint','certificate','active','passive','actpass','dynamic','update','update,nonat','BOOLEAN','sequelize','name','user','peer','STRING','from-voip-provider','ENUM','ALLOWED_NOT_SCREENED','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x6ccc,0x144));var _0xc6cc=function(_0x29eb10,_0x190cb3){_0x29eb10=_0x29eb10-0x0;var _0x5371a2=_0x6ccc[_0x29eb10];return _0x5371a2;};'use strict';var Sequelize=require(_0xc6cc('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xc6cc('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize['ENUM']('friend',_0xc6cc('0x2'),_0xc6cc('0x3')),'allowNull':![],'defaultValue':'friend'},'context':{'type':Sequelize[_0xc6cc('0x4')],'allowNull':![],'defaultValue':_0xc6cc('0x5')},'callingpres':{'type':Sequelize[_0xc6cc('0x6')](_0xc6cc('0x7'),'ALLOWED_PASSED_SCREEN',_0xc6cc('0x8'),_0xc6cc('0x9'),_0xc6cc('0xa'),_0xc6cc('0xb'),_0xc6cc('0xc'),'PROHIB')},'deny':{'type':Sequelize['STRING']},'permit':{'type':Sequelize[_0xc6cc('0x4')]},'secret':{'type':Sequelize[_0xc6cc('0x4')]},'md5secret':{'type':Sequelize[_0xc6cc('0x4')]},'remotesecret':{'type':Sequelize[_0xc6cc('0x4')]},'transport':{'type':Sequelize[_0xc6cc('0x4')],'defaultValue':'udp','set':function(_0x584d23){this[_0xc6cc('0xd')]('transport',_0x584d23?_0x584d23['join'](','):null);},'get':function(){return this[_0xc6cc('0xe')](_0xc6cc('0xf'))?this[_0xc6cc('0xe')](_0xc6cc('0xf'))[_0xc6cc('0x10')](','):null;},'comment':_0xc6cc('0x11')},'dtmfmode':{'type':Sequelize[_0xc6cc('0x6')]('rfc2833','info',_0xc6cc('0x12'),_0xc6cc('0x13'),_0xc6cc('0x14')),'defaultValue':_0xc6cc('0x15')},'directmedia':{'type':Sequelize[_0xc6cc('0x6')](_0xc6cc('0x16'),'no',_0xc6cc('0x17'),'update',_0xc6cc('0x18')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0xc6cc('0x6')](_0xc6cc('0x16'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0xc6cc('0x4')]},'directmediadeny':{'type':Sequelize[_0xc6cc('0x4')]},'nat':{'type':Sequelize['STRING'],'defaultValue':_0xc6cc('0x19'),'set':function(_0x3b05d0){this['setDataValue'](_0xc6cc('0x1a'),_0x3b05d0?_0x3b05d0[_0xc6cc('0x1b')](','):null);},'get':function(){return this[_0xc6cc('0xe')](_0xc6cc('0x1a'))?this['getDataValue'](_0xc6cc('0x1a'))[_0xc6cc('0x10')](','):null;},'comment':_0xc6cc('0x1c')},'callgroup':{'type':Sequelize[_0xc6cc('0x4')]},'namedcallgroup':{'type':Sequelize[_0xc6cc('0x4')]},'pickupgroup':{'type':Sequelize['STRING']},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize['STRING'],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0xc6cc('0x4')],'allowNull':!![]},'disallow':{'type':Sequelize[_0xc6cc('0x4')],'defaultValue':'all'},'allow':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xc6cc('0x1d'),'set':function(_0x54a591){this[_0xc6cc('0xd')]('allow',_0x54a591?_0x54a591[_0xc6cc('0x1b')](';'):'ulaw;alaw;gsm');},'get':function(){return this[_0xc6cc('0xe')](_0xc6cc('0x1e'))?this[_0xc6cc('0xe')](_0xc6cc('0x1e'))[_0xc6cc('0x10')](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]'},'autoframing':{'type':Sequelize[_0xc6cc('0x6')]('yes','no')},'insecure':{'type':Sequelize[_0xc6cc('0x4')],'defaultValue':'port,invite','set':function(_0x72ce5e){this[_0xc6cc('0xd')](_0xc6cc('0x1f'),_0x72ce5e?_0x72ce5e[_0xc6cc('0x1b')](','):null);},'get':function(){return this[_0xc6cc('0xe')](_0xc6cc('0x1f'))?this[_0xc6cc('0xe')](_0xc6cc('0x1f'))[_0xc6cc('0x10')](','):null;},'comment':_0xc6cc('0x20')},'trustrpid':{'type':Sequelize[_0xc6cc('0x6')](_0xc6cc('0x16'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'progressinband':{'type':Sequelize['ENUM'](_0xc6cc('0x16'),'no','never')},'promiscredir':{'type':Sequelize[_0xc6cc('0x6')]('yes','no')},'useclientcode':{'type':Sequelize[_0xc6cc('0x6')](_0xc6cc('0x16'),'no')},'accountcode':{'type':Sequelize[_0xc6cc('0x21')](0xb)},'setvar':{'type':Sequelize[_0xc6cc('0x4')]},'callerid':{'type':Sequelize[_0xc6cc('0x4')],'defaultValue':'\x22\x22\x20<>'},'amaflags':{'type':Sequelize[_0xc6cc('0x4')]},'callcounter':{'type':Sequelize[_0xc6cc('0x6')](_0xc6cc('0x16'),'no'),'defaultValue':'yes'},'busylevel':{'type':Sequelize[_0xc6cc('0x21')](0xb)},'allowoverlap':{'type':Sequelize[_0xc6cc('0x6')]('yes','no')},'allowsubscribe':{'type':Sequelize[_0xc6cc('0x6')](_0xc6cc('0x16'),'no')},'allowtransfer':{'type':Sequelize['ENUM'](_0xc6cc('0x16'),'no')},'ignoresdpversion':{'type':Sequelize[_0xc6cc('0x6')](_0xc6cc('0x16'),'no')},'subscribecontext':{'type':Sequelize[_0xc6cc('0x4')]},'template':{'type':Sequelize['STRING']},'videosupport':{'type':Sequelize[_0xc6cc('0x6')](_0xc6cc('0x16'),'no','always'),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize['INTEGER'](0xb)},'rfc2833compensate':{'type':Sequelize['ENUM'](_0xc6cc('0x16'),'no')},'mailbox':{'type':Sequelize[_0xc6cc('0x4')]},'session_timers':{'type':Sequelize['ENUM']('accept',_0xc6cc('0x22'),_0xc6cc('0x23'))},'session_expires':{'type':Sequelize[_0xc6cc('0x21')](0xb)},'session_minse':{'type':Sequelize[_0xc6cc('0x21')](0xb)},'session_refresher':{'type':Sequelize[_0xc6cc('0x6')](_0xc6cc('0x24'),_0xc6cc('0x25')),'defaultValue':_0xc6cc('0x25')},'t38pt_usertpsource':{'type':Sequelize[_0xc6cc('0x4')]},'regexten':{'type':Sequelize[_0xc6cc('0x4')]},'fromdomain':{'type':Sequelize[_0xc6cc('0x4')]},'fromuser':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0xc6cc('0x21')](0x5)},'qualify':{'type':Sequelize['ENUM'](_0xc6cc('0x16'),'no'),'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0xc6cc('0x21')](0xb)},'defaultip':{'type':Sequelize[_0xc6cc('0x4')]},'defaultuser':{'type':Sequelize[_0xc6cc('0x4')]},'rtptimeout':{'type':Sequelize[_0xc6cc('0x21')](0xb)},'rtpholdtimeout':{'type':Sequelize[_0xc6cc('0x21')](0xb)},'rtpkeepalive':{'type':Sequelize[_0xc6cc('0x21')](0xb)},'sendrpid':{'type':Sequelize[_0xc6cc('0x6')](_0xc6cc('0x16'),'no',_0xc6cc('0x26')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0xc6cc('0x4')]},'callbackextension':{'type':Sequelize[_0xc6cc('0x4')]},'timert1':{'type':Sequelize[_0xc6cc('0x21')](0xb)},'timerb':{'type':Sequelize[_0xc6cc('0x21')](0xb)},'qualifyfreq':{'type':Sequelize[_0xc6cc('0x21')](0xb)},'contactpermit':{'type':Sequelize[_0xc6cc('0x4')]},'contactdeny':{'type':Sequelize['STRING']},'contactacl':{'type':Sequelize[_0xc6cc('0x4')]},'unsolicited_mailbox':{'type':Sequelize[_0xc6cc('0x4')]},'use_q850_reason':{'type':Sequelize[_0xc6cc('0x4')]},'maxforwards':{'type':Sequelize[_0xc6cc('0x21')](0xb)},'encryption':{'type':Sequelize[_0xc6cc('0x6')](_0xc6cc('0x16'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0xc6cc('0x6')]('yes','no')},'force_avp':{'type':Sequelize['ENUM']('yes','no')},'icesupport':{'type':Sequelize[_0xc6cc('0x6')](_0xc6cc('0x16'),'no')},'dtlsenable':{'type':Sequelize['ENUM']('yes','no')},'dtlsverify':{'type':Sequelize[_0xc6cc('0x6')]('yes','no',_0xc6cc('0x27'),_0xc6cc('0x28'))},'dtlsrekey':{'type':Sequelize['INTEGER'](0xb)},'dtlscertfile':{'type':Sequelize[_0xc6cc('0x4')]},'dtlsprivatekey':{'type':Sequelize[_0xc6cc('0x4')]},'dtlscipher':{'type':Sequelize[_0xc6cc('0x4')]},'dtlscafile':{'type':Sequelize['STRING']},'dtlscapath':{'type':Sequelize[_0xc6cc('0x4')]},'dtlssetup':{'type':Sequelize[_0xc6cc('0x6')](_0xc6cc('0x29'),_0xc6cc('0x2a'),_0xc6cc('0x2b')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0xc6cc('0x4')]},'usereqphone':{'type':Sequelize[_0xc6cc('0x6')]('yes','no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize['STRING']},'recordofffeature':{'type':Sequelize[_0xc6cc('0x4')]},'call_limit':{'type':Sequelize[_0xc6cc('0x21')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0xc6cc('0x6')](_0xc6cc('0x16'),'no')},'subscribemwi':{'type':Sequelize['ENUM']('yes','no')},'vmexten':{'type':Sequelize[_0xc6cc('0x4')]},'mohinterpret':{'type':Sequelize[_0xc6cc('0x4')]},'mohsuggest':{'type':Sequelize[_0xc6cc('0x4')]},'parkinglot':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xc6cc('0x4')]},'host':{'type':Sequelize[_0xc6cc('0x4')],'defaultValue':_0xc6cc('0x2c')},'canreinvite':{'type':Sequelize['ENUM'](_0xc6cc('0x16'),'no',_0xc6cc('0x17'),_0xc6cc('0x2d'),_0xc6cc('0x2e')),'defaultValue':'no'},'registry':{'type':Sequelize['STRING']},'otherFields':{'type':Sequelize[_0xc6cc('0x4')]},'active':{'type':Sequelize[_0xc6cc('0x2f')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize['STRING'],'defaultValue':'no'}};
\ No newline at end of file
index 29e4f40..1f4b26c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98a8=['../../mysqldb','jayson/promise','client','request','Trunk,\x20%s,\x20%s','debug','request\x20sent','error','code','message','info','catch','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','destroy','get','Trunks','UserProfileResource','stack','name','map','fieldName','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','Trunk','include','show','params','keys','rawAttributes','includeAll','clone','find','createdAt','updatedAt','body','omit','create','user','role','UserProfileSection','userProfileId','autoAssociation','findAll','readFileSync','root','server/files/templates/trunk.ejs','join','server/files/templates/registry.ejs','utf8','render','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','registry','/etc/asterisk/sip_xcally_registers.conf','Reload','chan_sip.so','Unable\x20to\x20retrieve\x20the\x20current\x20user','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment'];(function(_0x130ca5,_0x1aec51){var _0xd44d0a=function(_0xef53bd){while(--_0xef53bd){_0x130ca5['push'](_0x130ca5['shift']());}};_0xd44d0a(++_0x1aec51);}(_0x98a8,0x12c));var _0x898a=function(_0x52d254,_0x42bff1){_0x52d254=_0x52d254-0x0;var _0x4facf9=_0x98a8[_0x52d254];return _0x4facf9;};'use strict';var emlformat=require(_0x898a('0x0'));var rimraf=require(_0x898a('0x1'));var zipdir=require(_0x898a('0x2'));var jsonpatch=require(_0x898a('0x3'));var rp=require(_0x898a('0x4'));var moment=require(_0x898a('0x5'));var BPromise=require(_0x898a('0x6'));var Mustache=require('mustache');var util=require(_0x898a('0x7'));var path=require(_0x898a('0x8'));var sox=require(_0x898a('0x9'));var csv=require(_0x898a('0xa'));var ejs=require(_0x898a('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x898a('0xc'));var squel=require('squel');var crypto=require(_0x898a('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x898a('0xe'));var toCsv=require(_0x898a('0xa'));var querystring=require(_0x898a('0xf'));var Papa=require(_0x898a('0x10'));var Redis=require(_0x898a('0x11'));var authService=require(_0x898a('0x12'));var qs=require(_0x898a('0x13'));var as=require(_0x898a('0x14'));var hardwareService=require(_0x898a('0x15'));var logger=require('../../config/logger')(_0x898a('0x16'));var utils=require('../../config/utils');var config=require(_0x898a('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x898a('0x18'))['db'];var jayson=require(_0x898a('0x19'));var client=jayson[_0x898a('0x1a')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5bfded,_0x5b5c9c,_0x373d53,_0x1f5be4){return new BPromise(function(_0xb24335,_0x116fbe){var _0x1873e9=_0x1f5be4||client;return _0x1873e9[_0x898a('0x1b')](_0x5bfded,_0x373d53)['then'](function(_0x47033c){logger['info'](_0x898a('0x1c'),_0x5b5c9c,'request\x20sent');logger[_0x898a('0x1d')]('Trunk,\x20%s,\x20%s,\x20%s',_0x5b5c9c,_0x898a('0x1e'),JSON['stringify'](_0x47033c));if(_0x47033c[_0x898a('0x1f')]){if(_0x47033c[_0x898a('0x1f')][_0x898a('0x20')]===0x1f4){logger['error'](_0x898a('0x1c'),_0x5b5c9c,_0x47033c['error']['message']);return _0x116fbe(_0x47033c[_0x898a('0x1f')][_0x898a('0x21')]);}logger['error']('Trunk,\x20%s,\x20%s',_0x5b5c9c,_0x47033c[_0x898a('0x1f')][_0x898a('0x21')]);return _0xb24335(_0x47033c[_0x898a('0x1f')][_0x898a('0x21')]);}else{logger[_0x898a('0x22')](_0x898a('0x1c'),_0x5b5c9c,_0x898a('0x1e'));_0xb24335(_0x47033c['result'][_0x898a('0x21')]);}})[_0x898a('0x23')](function(_0x11cae2){logger[_0x898a('0x1f')](_0x898a('0x1c'),_0x5b5c9c,_0x11cae2);_0x116fbe(_0x11cae2);});});}function respondWithStatusCode(_0x310bfa,_0x4e254d){_0x4e254d=_0x4e254d||0xcc;return function(_0x274cdf){if(_0x274cdf){return _0x310bfa[_0x898a('0x24')](_0x4e254d);}return _0x310bfa[_0x898a('0x25')](_0x4e254d)[_0x898a('0x26')]();};}function respondWithResult(_0x3901ab,_0x1426e3){_0x1426e3=_0x1426e3||0xc8;return function(_0x5b7719){if(_0x5b7719){return _0x3901ab[_0x898a('0x25')](_0x1426e3)['json'](_0x5b7719);}};}function respondWithFilteredResult(_0x513c6b,_0x53ddb2){return function(_0x3678be){if(_0x3678be){var _0x1f4d86=typeof _0x53ddb2[_0x898a('0x27')]===_0x898a('0x28')&&typeof _0x53ddb2[_0x898a('0x29')]===_0x898a('0x28');var _0x398e98=_0x3678be[_0x898a('0x2a')];var _0xd31922=_0x1f4d86?0x0:_0x53ddb2['offset'];var _0x4b3e68=_0x1f4d86?_0x3678be['count']:_0x53ddb2[_0x898a('0x27')]+_0x53ddb2[_0x898a('0x29')];var _0x3b7704;if(_0x4b3e68>=_0x398e98){_0x4b3e68=_0x398e98;_0x3b7704=0xc8;}else{_0x3b7704=0xce;}_0x513c6b[_0x898a('0x25')](_0x3b7704);return _0x513c6b[_0x898a('0x2b')](_0x898a('0x2c'),_0xd31922+'-'+_0x4b3e68+'/'+_0x398e98)[_0x898a('0x2d')](_0x3678be);}return null;};}function patchUpdates(_0xf74645){return function(_0x18773a){try{jsonpatch[_0x898a('0x2e')](_0x18773a,_0xf74645,!![]);}catch(_0x44c5d2){return BPromise[_0x898a('0x2f')](_0x44c5d2);}return _0x18773a['save']();};}function saveUpdates(_0x7a1eb5,_0x17a5f3){return function(_0x26eead){if(_0x26eead){return _0x26eead[_0x898a('0x30')](_0x7a1eb5)[_0x898a('0x31')](function(_0x47af5b){return _0x47af5b;});}return null;};}function removeEntity(_0x48cefb,_0x20a3fe){return function(_0x1e2fd4){if(_0x1e2fd4){return _0x1e2fd4[_0x898a('0x32')]()['then'](function(){var _0x105477=_0x1e2fd4[_0x898a('0x33')]({'plain':!![]});var _0x5eafc7=_0x898a('0x34');return db[_0x898a('0x35')][_0x898a('0x32')]({'where':{'type':_0x5eafc7,'resourceId':_0x105477['id']}})[_0x898a('0x31')](function(){return _0x1e2fd4;});})[_0x898a('0x31')](function(){_0x48cefb['status'](0xcc)[_0x898a('0x26')]();});}};}function handleEntityNotFound(_0x5baf5b,_0x573eb3){return function(_0x14e2dc){if(!_0x14e2dc){_0x5baf5b['sendStatus'](0x194);}return _0x14e2dc;};}function handleError(_0x3c9588,_0x4b3aac){_0x4b3aac=_0x4b3aac||0x1f4;return function(_0x37cb11){logger['error'](_0x37cb11[_0x898a('0x36')]);if(_0x37cb11[_0x898a('0x37')]){delete _0x37cb11[_0x898a('0x37')];}_0x3c9588['status'](_0x4b3aac)['send'](_0x37cb11);};}exports['index']=function(_0x1575d2,_0x429c32){var _0x5a228f={},_0xdd019d={},_0x3d3463={'count':0x0,'rows':[]};var _0xe84f7e=_[_0x898a('0x38')](db['Trunk']['rawAttributes'],function(_0x3aed01){return{'name':_0x3aed01[_0x898a('0x39')],'type':_0x3aed01['type']['key']};});_0xdd019d[_0x898a('0x3a')]=_[_0x898a('0x38')](_0xe84f7e,_0x898a('0x37'));_0xdd019d[_0x898a('0x3b')]=_['keys'](_0x1575d2[_0x898a('0x3b')]);_0xdd019d[_0x898a('0x3c')]=_['intersection'](_0xdd019d['model'],_0xdd019d['query']);_0x5a228f[_0x898a('0x3d')]=_[_0x898a('0x3e')](_0xdd019d[_0x898a('0x3a')],qs[_0x898a('0x3f')](_0x1575d2[_0x898a('0x3b')][_0x898a('0x3f')]));_0x5a228f[_0x898a('0x3d')]=_0x5a228f[_0x898a('0x3d')][_0x898a('0x40')]?_0x5a228f[_0x898a('0x3d')]:_0xdd019d[_0x898a('0x3a')];if(!_0x1575d2[_0x898a('0x3b')][_0x898a('0x41')](_0x898a('0x42'))){_0x5a228f[_0x898a('0x29')]=qs['limit'](_0x1575d2[_0x898a('0x3b')][_0x898a('0x29')]);_0x5a228f[_0x898a('0x27')]=qs['offset'](_0x1575d2[_0x898a('0x3b')][_0x898a('0x27')]);}_0x5a228f[_0x898a('0x43')]=qs[_0x898a('0x44')](_0x1575d2[_0x898a('0x3b')][_0x898a('0x44')]);_0x5a228f[_0x898a('0x45')]=qs[_0x898a('0x3c')](_['pick'](_0x1575d2[_0x898a('0x3b')],_0xdd019d[_0x898a('0x3c')]),_0xe84f7e);if(_0x1575d2[_0x898a('0x3b')][_0x898a('0x46')]){_0x5a228f['where']=_[_0x898a('0x47')](_0x5a228f[_0x898a('0x45')],{'$or':_['map'](_0xe84f7e,function(_0x241677){if(_0x241677['type']!==_0x898a('0x48')){var _0x5137c4={};_0x5137c4[_0x241677['name']]={'$like':'%'+_0x1575d2[_0x898a('0x3b')]['filter']+'%'};return _0x5137c4;}})});}_0x5a228f=_[_0x898a('0x47')]({},_0x5a228f,_0x1575d2[_0x898a('0x49')]);var _0x4d6ac0={'where':_0x5a228f[_0x898a('0x45')]};return db[_0x898a('0x4a')]['count'](_0x4d6ac0)[_0x898a('0x31')](function(_0x199437){_0x3d3463[_0x898a('0x2a')]=_0x199437;if(_0x1575d2[_0x898a('0x3b')]['includeAll']){_0x5a228f[_0x898a('0x4b')]=[{'all':!![]}];}return db[_0x898a('0x4a')]['findAll'](_0x5a228f);})[_0x898a('0x31')](function(_0x1d8c16){_0x3d3463['rows']=_0x1d8c16;return _0x3d3463;})[_0x898a('0x31')](respondWithFilteredResult(_0x429c32,_0x5a228f))['catch'](handleError(_0x429c32,null));};exports[_0x898a('0x4c')]=function(_0x41f291,_0x32ccb9){var _0x50f9e3={'raw':![],'where':{'id':_0x41f291[_0x898a('0x4d')]['id']}},_0x2f6cb3={};_0x2f6cb3[_0x898a('0x3a')]=_[_0x898a('0x4e')](db['Trunk'][_0x898a('0x4f')]);_0x2f6cb3['query']=_[_0x898a('0x4e')](_0x41f291[_0x898a('0x3b')]);_0x2f6cb3[_0x898a('0x3c')]=_['intersection'](_0x2f6cb3[_0x898a('0x3a')],_0x2f6cb3[_0x898a('0x3b')]);_0x50f9e3[_0x898a('0x3d')]=_['intersection'](_0x2f6cb3['model'],qs[_0x898a('0x3f')](_0x41f291[_0x898a('0x3b')][_0x898a('0x3f')]));_0x50f9e3[_0x898a('0x3d')]=_0x50f9e3[_0x898a('0x3d')][_0x898a('0x40')]?_0x50f9e3[_0x898a('0x3d')]:_0x2f6cb3[_0x898a('0x3a')];if(_0x41f291[_0x898a('0x3b')][_0x898a('0x50')]){_0x50f9e3[_0x898a('0x4b')]=[{'all':!![]}];}_0x50f9e3=_['merge']({},_0x50f9e3,_0x41f291[_0x898a('0x49')]);return db[_0x898a('0x4a')]['find'](_0x50f9e3)[_0x898a('0x31')](handleEntityNotFound(_0x32ccb9,null))['then'](respondWithResult(_0x32ccb9,null))['catch'](handleError(_0x32ccb9,null));};exports[_0x898a('0x51')]=function(_0x124f9b,_0x209529){var _0x5bfd61={'where':{'id':_0x124f9b[_0x898a('0x4d')]['id']}},_0x556fd8={};_0x556fd8[_0x898a('0x3a')]=_['keys'](db[_0x898a('0x4a')][_0x898a('0x4f')]);_0x5bfd61['attributes']=_[_0x898a('0x3e')](_0x556fd8[_0x898a('0x3a')],qs[_0x898a('0x3f')](_0x124f9b['query'][_0x898a('0x3f')]));_0x5bfd61[_0x898a('0x3d')]=_0x5bfd61[_0x898a('0x3d')][_0x898a('0x40')]?_0x5bfd61[_0x898a('0x3d')]:_0x556fd8[_0x898a('0x3a')];if(_0x124f9b['query'][_0x898a('0x50')]){_0x5bfd61['include']=[{'all':!![]}];}_0x5bfd61=_[_0x898a('0x47')]({},_0x5bfd61,_0x124f9b[_0x898a('0x49')]);return db[_0x898a('0x4a')][_0x898a('0x52')](_0x5bfd61)[_0x898a('0x31')](handleEntityNotFound(_0x209529,null))[_0x898a('0x31')](function(_0x2486a5){if(_0x2486a5){var _0x75ff57=_0x2486a5[_0x898a('0x33')]({'plain':!![]});_0x75ff57=qs['omit'](_0x75ff57,['id',_0x898a('0x53'),_0x898a('0x54')]);_0x124f9b[_0x898a('0x55')]=_[_0x898a('0x56')](_0x124f9b[_0x898a('0x55')],['id',_0x898a('0x53'),_0x898a('0x54')]);return db[_0x898a('0x4a')][_0x898a('0x57')](_[_0x898a('0x47')](_0x75ff57,_0x124f9b[_0x898a('0x55')]),{'include':_0x124f9b[_0x898a('0x3b')][_0x898a('0x50')]?[{'all':!![]}]:undefined})[_0x898a('0x31')](function(_0x22f9ba){var _0x5f42ae=_0x124f9b[_0x898a('0x58')][_0x898a('0x33')]({'plain':!![]});if(!_0x5f42ae)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5f42ae[_0x898a('0x59')]===_0x898a('0x58')){var _0x5f0944=_0x22f9ba[_0x898a('0x33')]({'plain':!![]});var _0x1daecd=_0x898a('0x34');return db[_0x898a('0x5a')]['find']({'where':{'name':_0x1daecd,'userProfileId':_0x5f42ae[_0x898a('0x5b')]},'raw':!![]})[_0x898a('0x31')](function(_0x137935){if(_0x137935&&_0x137935[_0x898a('0x5c')]===0x0){return db['UserProfileResource'][_0x898a('0x57')]({'name':_0x5f0944[_0x898a('0x37')],'resourceId':_0x5f0944['id'],'type':_0x137935['name'],'sectionId':_0x137935['id']},{})[_0x898a('0x31')](function(){return _0x22f9ba;});}else{return _0x22f9ba;}})[_0x898a('0x23')](function(_0x5b7019){logger[_0x898a('0x1f')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5b7019);throw _0x5b7019;});}return _0x22f9ba;});}})[_0x898a('0x31')](respondWithResult(_0x209529,0xc9))['catch'](handleError(_0x209529,null));};exports['create']=function(_0x5ed35e,_0xfdd6d8,_0x473f5c){var _0x3909c5;return db[_0x898a('0x4a')]['create'](_0x5ed35e['body'],{'raw':!![]})[_0x898a('0x31')](function(_0x232be0){_0x3909c5=_0x232be0;return db[_0x898a('0x4a')][_0x898a('0x5d')]({'raw':!![]});})[_0x898a('0x31')](function(_0x41cf94){var _0x30051d=fs[_0x898a('0x5e')](path['join'](config[_0x898a('0x5f')],_0x898a('0x60')),'utf8');var _0x42fda8=fs[_0x898a('0x5e')](path[_0x898a('0x61')](config[_0x898a('0x5f')],_0x898a('0x62')),_0x898a('0x63'));var _0x3bcc3d=ejs[_0x898a('0x64')](_0x30051d,{'trunks':_0x41cf94||[]});fs[_0x898a('0x65')](_0x898a('0x66'),_0x3bcc3d);if(_0x3909c5[_0x898a('0x67')]){var _0x307849=ejs[_0x898a('0x64')](_0x42fda8,{'trunks':_0x41cf94||[]});fs['writeFileSync'](_0x898a('0x68'),_0x307849);}})['then'](function(){return respondWithRpcPromise(_0x898a('0x69'),_0x898a('0x57'),{'module':_0x898a('0x6a')});})['then'](function(){var _0x31102d=_0x5ed35e[_0x898a('0x58')][_0x898a('0x33')]({'plain':!![]});if(!_0x31102d)throw new Error(_0x898a('0x6b'));if(_0x31102d[_0x898a('0x59')]==='user'){var _0x4b9487=_0x3909c5[_0x898a('0x33')]({'plain':!![]});return db[_0x898a('0x5a')][_0x898a('0x52')]({'where':{'name':_0x898a('0x34'),'userProfileId':_0x31102d['userProfileId']},'raw':!![]})[_0x898a('0x31')](function(_0x3d3451){if(_0x3d3451&&_0x3d3451[_0x898a('0x5c')]===0x0){return db[_0x898a('0x35')][_0x898a('0x57')]({'name':_0x4b9487[_0x898a('0x37')],'resourceId':_0x4b9487['id'],'type':_0x3d3451[_0x898a('0x37')],'sectionId':_0x3d3451['id']},{})[_0x898a('0x31')](function(){return _0x3909c5;});}else{return _0x3909c5;}})['catch'](function(_0x32a207){logger[_0x898a('0x1f')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x32a207);throw _0x32a207;});}return _0x3909c5;})[_0x898a('0x31')](respondWithResult(_0xfdd6d8,0xc9))['catch'](handleError(_0xfdd6d8,null));};exports[_0x898a('0x30')]=function(_0x4b2575,_0x2471d8,_0x387f2c){var _0x3b07dc;return db[_0x898a('0x4a')][_0x898a('0x52')]({'where':{'id':_0x4b2575[_0x898a('0x4d')]['id']}})[_0x898a('0x31')](handleEntityNotFound(_0x2471d8,null))[_0x898a('0x31')](saveUpdates(_0x4b2575[_0x898a('0x55')],null))['then'](function(_0x3fe54b){if(_0x3fe54b){_0x3b07dc=_0x3fe54b;return db[_0x898a('0x4a')][_0x898a('0x5d')]({'raw':!![]});}})[_0x898a('0x31')](function(_0x290972){if(_0x290972){var _0x1d594b=fs[_0x898a('0x5e')](path[_0x898a('0x61')](config[_0x898a('0x5f')],_0x898a('0x60')),'utf8');var _0x4fad03=fs[_0x898a('0x5e')](path[_0x898a('0x61')](config['root'],'server/files/templates/registry.ejs'),_0x898a('0x63'));var _0x4a79a4=ejs[_0x898a('0x64')](_0x1d594b,{'trunks':_0x290972||[]});fs[_0x898a('0x65')]('/etc/asterisk/sip_xcally_trunks.conf',_0x4a79a4);var _0x3f6815=ejs[_0x898a('0x64')](_0x4fad03,{'trunks':_0x290972||[]});fs[_0x898a('0x65')](_0x898a('0x68'),_0x3f6815);return respondWithRpcPromise(_0x898a('0x69'),_0x898a('0x30'),{'module':_0x898a('0x6a')});}return null;})['then'](function(_0x3237e8){if(_0x3237e8){return _0x3b07dc;}})[_0x898a('0x31')](respondWithResult(_0x2471d8,null))[_0x898a('0x23')](handleError(_0x2471d8,null));};exports['destroy']=function(_0x27560f,_0x61247c,_0x5c6247){var _0x39e917;return db['Trunk']['find']({'where':{'id':_0x27560f['params']['id']}})[_0x898a('0x31')](handleEntityNotFound(_0x61247c,null))[_0x898a('0x31')](removeEntity(_0x61247c,null))[_0x898a('0x31')](function(){return db[_0x898a('0x4a')][_0x898a('0x5d')]({'raw':!![]});})[_0x898a('0x31')](function(_0x12e54b){var _0x50dd52=fs[_0x898a('0x5e')](path['join'](config[_0x898a('0x5f')],_0x898a('0x60')),'utf8');var _0x24670c=fs[_0x898a('0x5e')](path[_0x898a('0x61')](config[_0x898a('0x5f')],_0x898a('0x62')),'utf8');var _0x5847cb=ejs['render'](_0x50dd52,{'trunks':_0x12e54b});var _0x3b8fb5=ejs[_0x898a('0x64')](_0x24670c,{'trunks':_0x12e54b});fs[_0x898a('0x65')]('/etc/asterisk/sip_xcally_trunks.conf',_0x5847cb);fs[_0x898a('0x65')]('/etc/asterisk/sip_xcally_registers.conf',_0x3b8fb5);return respondWithRpcPromise('Reload',_0x898a('0x32'),{'module':_0x898a('0x6a')});})[_0x898a('0x23')](handleError(_0x61247c,null));};
\ No newline at end of file
+var _0x9a19=['query','keys','filters','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','show','include','find','clone','params','omit','updatedAt','body','createdAt','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','join','server/files/templates/trunk.ejs','utf8','root','server/files/templates/registry.ejs','/etc/asterisk/sip_xcally_trunks.conf','registry','render','/etc/asterisk/sip_xcally_registers.conf','chan_sip.so','role','autoAssociation','findAll','readFileSync','writeFileSync','Reload','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','jayson/promise','client','http','then','info','Trunk,\x20%s,\x20%s','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','destroy','get','Trunks','UserProfileResource','stack','name','index','map','Trunk','rawAttributes','fieldName','type'];(function(_0x9f833a,_0x317091){var _0x1ee10=function(_0x50a640){while(--_0x50a640){_0x9f833a['push'](_0x9f833a['shift']());}};_0x1ee10(++_0x317091);}(_0x9a19,0x114));var _0x99a1=function(_0x26b5ff,_0x92009a){_0x26b5ff=_0x26b5ff-0x0;var _0x58603e=_0x9a19[_0x26b5ff];return _0x58603e;};'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'];var jayson=require(_0x99a1('0x19'));var client=jayson[_0x99a1('0x1a')][_0x99a1('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0xf713b9,_0x40c19c,_0x3a865c,_0x47815e){return new BPromise(function(_0xe1a1f,_0x3c9ef4){var _0x39ee55=_0x47815e||client;return _0x39ee55['request'](_0xf713b9,_0x3a865c)[_0x99a1('0x1c')](function(_0x3e45d4){logger[_0x99a1('0x1d')](_0x99a1('0x1e'),_0x40c19c,_0x99a1('0x1f'));logger[_0x99a1('0x20')](_0x99a1('0x21'),_0x40c19c,'request\x20sent',JSON['stringify'](_0x3e45d4));if(_0x3e45d4[_0x99a1('0x22')]){if(_0x3e45d4[_0x99a1('0x22')][_0x99a1('0x23')]===0x1f4){logger[_0x99a1('0x22')](_0x99a1('0x1e'),_0x40c19c,_0x3e45d4[_0x99a1('0x22')][_0x99a1('0x24')]);return _0x3c9ef4(_0x3e45d4[_0x99a1('0x22')][_0x99a1('0x24')]);}logger[_0x99a1('0x22')](_0x99a1('0x1e'),_0x40c19c,_0x3e45d4['error'][_0x99a1('0x24')]);return _0xe1a1f(_0x3e45d4[_0x99a1('0x22')]['message']);}else{logger[_0x99a1('0x1d')]('Trunk,\x20%s,\x20%s',_0x40c19c,_0x99a1('0x1f'));_0xe1a1f(_0x3e45d4[_0x99a1('0x25')][_0x99a1('0x24')]);}})[_0x99a1('0x26')](function(_0x5a88c6){logger[_0x99a1('0x22')](_0x99a1('0x1e'),_0x40c19c,_0x5a88c6);_0x3c9ef4(_0x5a88c6);});});}function respondWithStatusCode(_0x483c17,_0x44df2d){_0x44df2d=_0x44df2d||0xcc;return function(_0x5b5dfa){if(_0x5b5dfa){return _0x483c17[_0x99a1('0x27')](_0x44df2d);}return _0x483c17[_0x99a1('0x28')](_0x44df2d)[_0x99a1('0x29')]();};}function respondWithResult(_0xdaa27d,_0x3c813){_0x3c813=_0x3c813||0xc8;return function(_0x491341){if(_0x491341){return _0xdaa27d['status'](_0x3c813)[_0x99a1('0x2a')](_0x491341);}};}function respondWithFilteredResult(_0x5dabd9,_0x5dc733){return function(_0xafea84){if(_0xafea84){var _0x440879=typeof _0x5dc733[_0x99a1('0x2b')]===_0x99a1('0x2c')&&typeof _0x5dc733[_0x99a1('0x2d')]===_0x99a1('0x2c');var _0x183037=_0xafea84['count'];var _0xf41b0d=_0x440879?0x0:_0x5dc733['offset'];var _0x255197=_0x440879?_0xafea84[_0x99a1('0x2e')]:_0x5dc733[_0x99a1('0x2b')]+_0x5dc733['limit'];var _0x371edf;if(_0x255197>=_0x183037){_0x255197=_0x183037;_0x371edf=0xc8;}else{_0x371edf=0xce;}_0x5dabd9[_0x99a1('0x28')](_0x371edf);return _0x5dabd9['set'](_0x99a1('0x2f'),_0xf41b0d+'-'+_0x255197+'/'+_0x183037)[_0x99a1('0x2a')](_0xafea84);}return null;};}function patchUpdates(_0x36aa34){return function(_0x303d1e){try{jsonpatch[_0x99a1('0x30')](_0x303d1e,_0x36aa34,!![]);}catch(_0x969f6e){return BPromise[_0x99a1('0x31')](_0x969f6e);}return _0x303d1e[_0x99a1('0x32')]();};}function saveUpdates(_0x52da8d,_0x4960e4){return function(_0x3fa342){if(_0x3fa342){return _0x3fa342['update'](_0x52da8d)[_0x99a1('0x1c')](function(_0x400581){return _0x400581;});}return null;};}function removeEntity(_0x5b1a79,_0xa5972b){return function(_0x3503d5){if(_0x3503d5){return _0x3503d5[_0x99a1('0x33')]()[_0x99a1('0x1c')](function(){var _0x13f4db=_0x3503d5[_0x99a1('0x34')]({'plain':!![]});var _0x3081cd=_0x99a1('0x35');return db[_0x99a1('0x36')][_0x99a1('0x33')]({'where':{'type':_0x3081cd,'resourceId':_0x13f4db['id']}})[_0x99a1('0x1c')](function(){return _0x3503d5;});})[_0x99a1('0x1c')](function(){_0x5b1a79[_0x99a1('0x28')](0xcc)[_0x99a1('0x29')]();});}};}function handleEntityNotFound(_0x55005e,_0x53fed5){return function(_0x46e3f2){if(!_0x46e3f2){_0x55005e[_0x99a1('0x27')](0x194);}return _0x46e3f2;};}function handleError(_0x416a36,_0x4131e0){_0x4131e0=_0x4131e0||0x1f4;return function(_0x2690bd){logger[_0x99a1('0x22')](_0x2690bd[_0x99a1('0x37')]);if(_0x2690bd['name']){delete _0x2690bd[_0x99a1('0x38')];}_0x416a36[_0x99a1('0x28')](_0x4131e0)['send'](_0x2690bd);};}exports[_0x99a1('0x39')]=function(_0x2d328c,_0x391afa){var _0x3cd1a0={},_0x430cbc={},_0x399fd4={'count':0x0,'rows':[]};var _0x30e8a9=_[_0x99a1('0x3a')](db[_0x99a1('0x3b')][_0x99a1('0x3c')],function(_0x1da3e7){return{'name':_0x1da3e7[_0x99a1('0x3d')],'type':_0x1da3e7[_0x99a1('0x3e')]['key']};});_0x430cbc['model']=_['map'](_0x30e8a9,_0x99a1('0x38'));_0x430cbc[_0x99a1('0x3f')]=_[_0x99a1('0x40')](_0x2d328c[_0x99a1('0x3f')]);_0x430cbc[_0x99a1('0x41')]=_['intersection'](_0x430cbc[_0x99a1('0x42')],_0x430cbc[_0x99a1('0x3f')]);_0x3cd1a0[_0x99a1('0x43')]=_['intersection'](_0x430cbc['model'],qs[_0x99a1('0x44')](_0x2d328c[_0x99a1('0x3f')][_0x99a1('0x44')]));_0x3cd1a0['attributes']=_0x3cd1a0[_0x99a1('0x43')][_0x99a1('0x45')]?_0x3cd1a0[_0x99a1('0x43')]:_0x430cbc[_0x99a1('0x42')];if(!_0x2d328c[_0x99a1('0x3f')][_0x99a1('0x46')](_0x99a1('0x47'))){_0x3cd1a0[_0x99a1('0x2d')]=qs[_0x99a1('0x2d')](_0x2d328c[_0x99a1('0x3f')]['limit']);_0x3cd1a0[_0x99a1('0x2b')]=qs[_0x99a1('0x2b')](_0x2d328c[_0x99a1('0x3f')]['offset']);}_0x3cd1a0[_0x99a1('0x48')]=qs['sort'](_0x2d328c[_0x99a1('0x3f')][_0x99a1('0x49')]);_0x3cd1a0[_0x99a1('0x4a')]=qs[_0x99a1('0x41')](_[_0x99a1('0x4b')](_0x2d328c[_0x99a1('0x3f')],_0x430cbc['filters']),_0x30e8a9);if(_0x2d328c[_0x99a1('0x3f')]['filter']){_0x3cd1a0[_0x99a1('0x4a')]=_[_0x99a1('0x4c')](_0x3cd1a0[_0x99a1('0x4a')],{'$or':_[_0x99a1('0x3a')](_0x30e8a9,function(_0x3a0b44){if(_0x3a0b44[_0x99a1('0x3e')]!==_0x99a1('0x4d')){var _0x3861b6={};_0x3861b6[_0x3a0b44[_0x99a1('0x38')]]={'$like':'%'+_0x2d328c[_0x99a1('0x3f')][_0x99a1('0x4e')]+'%'};return _0x3861b6;}})});}_0x3cd1a0=_['merge']({},_0x3cd1a0,_0x2d328c[_0x99a1('0x4f')]);var _0x330e3b={'where':_0x3cd1a0['where']};return db[_0x99a1('0x3b')][_0x99a1('0x2e')](_0x330e3b)[_0x99a1('0x1c')](function(_0x2e377b){_0x399fd4[_0x99a1('0x2e')]=_0x2e377b;if(_0x2d328c[_0x99a1('0x3f')][_0x99a1('0x50')]){_0x3cd1a0['include']=[{'all':!![]}];}return db[_0x99a1('0x3b')]['findAll'](_0x3cd1a0);})[_0x99a1('0x1c')](function(_0x269798){_0x399fd4['rows']=_0x269798;return _0x399fd4;})['then'](respondWithFilteredResult(_0x391afa,_0x3cd1a0))[_0x99a1('0x26')](handleError(_0x391afa,null));};exports[_0x99a1('0x51')]=function(_0x462c15,_0x4519fb){var _0xee2b1b={'raw':![],'where':{'id':_0x462c15['params']['id']}},_0x597836={};_0x597836['model']=_[_0x99a1('0x40')](db[_0x99a1('0x3b')][_0x99a1('0x3c')]);_0x597836[_0x99a1('0x3f')]=_[_0x99a1('0x40')](_0x462c15[_0x99a1('0x3f')]);_0x597836[_0x99a1('0x41')]=_['intersection'](_0x597836[_0x99a1('0x42')],_0x597836[_0x99a1('0x3f')]);_0xee2b1b[_0x99a1('0x43')]=_['intersection'](_0x597836[_0x99a1('0x42')],qs['fields'](_0x462c15['query'][_0x99a1('0x44')]));_0xee2b1b[_0x99a1('0x43')]=_0xee2b1b[_0x99a1('0x43')][_0x99a1('0x45')]?_0xee2b1b[_0x99a1('0x43')]:_0x597836[_0x99a1('0x42')];if(_0x462c15[_0x99a1('0x3f')][_0x99a1('0x50')]){_0xee2b1b[_0x99a1('0x52')]=[{'all':!![]}];}_0xee2b1b=_['merge']({},_0xee2b1b,_0x462c15[_0x99a1('0x4f')]);return db['Trunk'][_0x99a1('0x53')](_0xee2b1b)[_0x99a1('0x1c')](handleEntityNotFound(_0x4519fb,null))['then'](respondWithResult(_0x4519fb,null))[_0x99a1('0x26')](handleError(_0x4519fb,null));};exports[_0x99a1('0x54')]=function(_0x469e10,_0x2b2d63){var _0x2800d5={'where':{'id':_0x469e10[_0x99a1('0x55')]['id']}},_0x1bff78={};_0x1bff78[_0x99a1('0x42')]=_[_0x99a1('0x40')](db[_0x99a1('0x3b')][_0x99a1('0x3c')]);_0x2800d5[_0x99a1('0x43')]=_['intersection'](_0x1bff78['model'],qs[_0x99a1('0x44')](_0x469e10[_0x99a1('0x3f')][_0x99a1('0x44')]));_0x2800d5[_0x99a1('0x43')]=_0x2800d5[_0x99a1('0x43')]['length']?_0x2800d5[_0x99a1('0x43')]:_0x1bff78[_0x99a1('0x42')];if(_0x469e10['query'][_0x99a1('0x50')]){_0x2800d5[_0x99a1('0x52')]=[{'all':!![]}];}_0x2800d5=_[_0x99a1('0x4c')]({},_0x2800d5,_0x469e10[_0x99a1('0x4f')]);return db[_0x99a1('0x3b')]['find'](_0x2800d5)[_0x99a1('0x1c')](handleEntityNotFound(_0x2b2d63,null))[_0x99a1('0x1c')](function(_0x1bb1cb){if(_0x1bb1cb){var _0x22811f=_0x1bb1cb[_0x99a1('0x34')]({'plain':!![]});_0x22811f=qs[_0x99a1('0x56')](_0x22811f,['id','createdAt',_0x99a1('0x57')]);_0x469e10[_0x99a1('0x58')]=_['omit'](_0x469e10[_0x99a1('0x58')],['id',_0x99a1('0x59'),_0x99a1('0x57')]);return db[_0x99a1('0x3b')][_0x99a1('0x5a')](_['merge'](_0x22811f,_0x469e10[_0x99a1('0x58')]),{'include':_0x469e10['query']['includeAll']?[{'all':!![]}]:undefined})['then'](function(_0x38ce3c){var _0x3f7c16=_0x469e10['user']['get']({'plain':!![]});if(!_0x3f7c16)throw new Error(_0x99a1('0x5b'));if(_0x3f7c16['role']===_0x99a1('0x5c')){var _0x263db3=_0x38ce3c[_0x99a1('0x34')]({'plain':!![]});var _0x180c1e='Trunks';return db[_0x99a1('0x5d')][_0x99a1('0x53')]({'where':{'name':_0x180c1e,'userProfileId':_0x3f7c16[_0x99a1('0x5e')]},'raw':!![]})['then'](function(_0x3a62c6){if(_0x3a62c6&&_0x3a62c6['autoAssociation']===0x0){return db[_0x99a1('0x36')][_0x99a1('0x5a')]({'name':_0x263db3[_0x99a1('0x38')],'resourceId':_0x263db3['id'],'type':_0x3a62c6[_0x99a1('0x38')],'sectionId':_0x3a62c6['id']},{})[_0x99a1('0x1c')](function(){return _0x38ce3c;});}else{return _0x38ce3c;}})['catch'](function(_0x4d37f8){logger['error'](_0x99a1('0x5f'),_0x4d37f8);throw _0x4d37f8;});}return _0x38ce3c;});}})[_0x99a1('0x1c')](respondWithResult(_0x2b2d63,0xc9))['catch'](handleError(_0x2b2d63,null));};exports['create']=function(_0x1fe7af,_0x2f5587,_0x401c8f){var _0x509d4f;return db['Trunk'][_0x99a1('0x5a')](_0x1fe7af['body'],{'raw':!![]})[_0x99a1('0x1c')](function(_0x129690){_0x509d4f=_0x129690;return db[_0x99a1('0x3b')]['findAll']({'raw':!![]});})[_0x99a1('0x1c')](function(_0x28c7d8){var _0x4ac99e=fs['readFileSync'](path[_0x99a1('0x60')](config['root'],_0x99a1('0x61')),_0x99a1('0x62'));var _0x30a0a5=fs['readFileSync'](path[_0x99a1('0x60')](config[_0x99a1('0x63')],_0x99a1('0x64')),_0x99a1('0x62'));var _0x3d0ff6=ejs['render'](_0x4ac99e,{'trunks':_0x28c7d8||[]});fs['writeFileSync'](_0x99a1('0x65'),_0x3d0ff6);if(_0x509d4f[_0x99a1('0x66')]){var _0x1750d5=ejs[_0x99a1('0x67')](_0x30a0a5,{'trunks':_0x28c7d8||[]});fs['writeFileSync'](_0x99a1('0x68'),_0x1750d5);}})['then'](function(){return respondWithRpcPromise('Reload',_0x99a1('0x5a'),{'module':_0x99a1('0x69')});})[_0x99a1('0x1c')](function(){var _0x525969=_0x1fe7af[_0x99a1('0x5c')][_0x99a1('0x34')]({'plain':!![]});if(!_0x525969)throw new Error(_0x99a1('0x5b'));if(_0x525969[_0x99a1('0x6a')]===_0x99a1('0x5c')){var _0x4ae313=_0x509d4f[_0x99a1('0x34')]({'plain':!![]});return db[_0x99a1('0x5d')][_0x99a1('0x53')]({'where':{'name':_0x99a1('0x35'),'userProfileId':_0x525969[_0x99a1('0x5e')]},'raw':!![]})[_0x99a1('0x1c')](function(_0x5e42be){if(_0x5e42be&&_0x5e42be[_0x99a1('0x6b')]===0x0){return db[_0x99a1('0x36')][_0x99a1('0x5a')]({'name':_0x4ae313[_0x99a1('0x38')],'resourceId':_0x4ae313['id'],'type':_0x5e42be[_0x99a1('0x38')],'sectionId':_0x5e42be['id']},{})['then'](function(){return _0x509d4f;});}else{return _0x509d4f;}})[_0x99a1('0x26')](function(_0x68c944){logger[_0x99a1('0x22')](_0x99a1('0x5f'),_0x68c944);throw _0x68c944;});}return _0x509d4f;})[_0x99a1('0x1c')](respondWithResult(_0x2f5587,0xc9))[_0x99a1('0x26')](handleError(_0x2f5587,null));};exports['update']=function(_0xaa953e,_0x33d96b,_0x4a5617){var _0x56716a;return db[_0x99a1('0x3b')][_0x99a1('0x53')]({'where':{'id':_0xaa953e['params']['id']}})[_0x99a1('0x1c')](handleEntityNotFound(_0x33d96b,null))[_0x99a1('0x1c')](saveUpdates(_0xaa953e[_0x99a1('0x58')],null))[_0x99a1('0x1c')](function(_0x43156f){if(_0x43156f){_0x56716a=_0x43156f;return db[_0x99a1('0x3b')][_0x99a1('0x6c')]({'raw':!![]});}})[_0x99a1('0x1c')](function(_0x4260d7){if(_0x4260d7){var _0x3e099c=fs[_0x99a1('0x6d')](path[_0x99a1('0x60')](config[_0x99a1('0x63')],'server/files/templates/trunk.ejs'),_0x99a1('0x62'));var _0x5a9a7d=fs['readFileSync'](path[_0x99a1('0x60')](config[_0x99a1('0x63')],_0x99a1('0x64')),_0x99a1('0x62'));var _0xbbbe26=ejs[_0x99a1('0x67')](_0x3e099c,{'trunks':_0x4260d7||[]});fs[_0x99a1('0x6e')](_0x99a1('0x65'),_0xbbbe26);var _0x361ce6=ejs['render'](_0x5a9a7d,{'trunks':_0x4260d7||[]});fs[_0x99a1('0x6e')](_0x99a1('0x68'),_0x361ce6);return respondWithRpcPromise(_0x99a1('0x6f'),_0x99a1('0x70'),{'module':_0x99a1('0x69')});}return null;})[_0x99a1('0x1c')](function(_0x6dab29){if(_0x6dab29){return _0x56716a;}})[_0x99a1('0x1c')](respondWithResult(_0x33d96b,null))['catch'](handleError(_0x33d96b,null));};exports['destroy']=function(_0x51c289,_0x2dd29b,_0x353f25){var _0x53cdb3;return db[_0x99a1('0x3b')][_0x99a1('0x53')]({'where':{'id':_0x51c289[_0x99a1('0x55')]['id']}})[_0x99a1('0x1c')](handleEntityNotFound(_0x2dd29b,null))['then'](removeEntity(_0x2dd29b,null))[_0x99a1('0x1c')](function(){return db[_0x99a1('0x3b')][_0x99a1('0x6c')]({'raw':!![]});})[_0x99a1('0x1c')](function(_0x4e9fe9){var _0x24aa05=fs['readFileSync'](path['join'](config['root'],_0x99a1('0x61')),'utf8');var _0xb7744c=fs[_0x99a1('0x6d')](path[_0x99a1('0x60')](config[_0x99a1('0x63')],_0x99a1('0x64')),_0x99a1('0x62'));var _0x444e43=ejs['render'](_0x24aa05,{'trunks':_0x4e9fe9});var _0x4fcd65=ejs[_0x99a1('0x67')](_0xb7744c,{'trunks':_0x4e9fe9});fs[_0x99a1('0x6e')](_0x99a1('0x65'),_0x444e43);fs['writeFileSync'](_0x99a1('0x68'),_0x4fcd65);return respondWithRpcPromise(_0x99a1('0x6f'),_0x99a1('0x33'),{'module':'chan_sip.so'});})[_0x99a1('0x26')](handleError(_0x2dd29b,null));};
\ No newline at end of file
index e8c81e5..c781f4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b84=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./trunk.attributes','exports','define','tools_trunks','../../config/logger'];(function(_0x116b7d,_0x14abe1){var _0x3642fc=function(_0x5eea6f){while(--_0x5eea6f){_0x116b7d['push'](_0x116b7d['shift']());}};_0x3642fc(++_0x14abe1);}(_0x6b84,0x17f));var _0x46b8=function(_0x74862c,_0x5cdf82){_0x74862c=_0x74862c-0x0;var _0xdd02b7=_0x6b84[_0x74862c];return _0xdd02b7;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x46b8('0x0'))(_0x46b8('0x1'));var moment=require(_0x46b8('0x2'));var BPromise=require(_0x46b8('0x3'));var rp=require(_0x46b8('0x4'));var fs=require('fs');var path=require(_0x46b8('0x5'));var rimraf=require(_0x46b8('0x6'));var config=require(_0x46b8('0x7'));var attributes=require(_0x46b8('0x8'));module[_0x46b8('0x9')]=function(_0x3565b1,_0x49d634){return _0x3565b1[_0x46b8('0xa')]('Trunk',attributes,{'tableName':_0x46b8('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa5e2=['Trunk','tools_trunks','lodash','util','../../config/logger','request-promise','path','rimraf','../../config/environment','./trunk.attributes','exports','define'];(function(_0x4db3b9,_0x3dbcd3){var _0x25771b=function(_0x359f0d){while(--_0x359f0d){_0x4db3b9['push'](_0x4db3b9['shift']());}};_0x25771b(++_0x3dbcd3);}(_0xa5e2,0x10a));var _0x2a5e=function(_0x49440c,_0x219645){_0x49440c=_0x49440c-0x0;var _0x52b3a1=_0xa5e2[_0x49440c];return _0x52b3a1;};'use strict';var _=require(_0x2a5e('0x0'));var util=require(_0x2a5e('0x1'));var logger=require(_0x2a5e('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x2a5e('0x3'));var fs=require('fs');var path=require(_0x2a5e('0x4'));var rimraf=require(_0x2a5e('0x5'));var config=require(_0x2a5e('0x6'));var attributes=require(_0x2a5e('0x7'));module[_0x2a5e('0x8')]=function(_0x2d4623,_0xcb1758){return _0x2d4623[_0x2a5e('0x9')](_0x2a5e('0xa'),attributes,{'tableName':_0x2a5e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 10825ea..cc8e22b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf908=['catch','GetTrunk','Trunk','findAll','options','attributes','include','map','model','stringify','ShowTrunk','find','raw','where','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','Trunk,\x20%s,\x20%s','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','error','code','message','info','result'];(function(_0xc7626d,_0x4f79e4){var _0x297b36=function(_0x552127){while(--_0x552127){_0xc7626d['push'](_0xc7626d['shift']());}};_0x297b36(++_0x4f79e4);}(_0xf908,0x1b0));var _0x8f90=function(_0x68db5d,_0x36ff91){_0x68db5d=_0x68db5d-0x0;var _0xa68b54=_0xf908[_0x68db5d];return _0xa68b54;};'use strict';var _=require(_0x8f90('0x0'));var util=require(_0x8f90('0x1'));var moment=require(_0x8f90('0x2'));var BPromise=require(_0x8f90('0x3'));var rs=require(_0x8f90('0x4'));var fs=require('fs');var Redis=require(_0x8f90('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x8f90('0x6'));var logger=require(_0x8f90('0x7'))(_0x8f90('0x8'));var config=require(_0x8f90('0x9'));var jayson=require(_0x8f90('0xa'));var client=jayson[_0x8f90('0xb')][_0x8f90('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x13f076,_0x2d649f,_0x219a62){return new BPromise(function(_0x26b89a,_0x2ad34a){return client[_0x8f90('0xd')](_0x13f076,_0x219a62)[_0x8f90('0xe')](function(_0x895e58){logger['info'](_0x8f90('0xf'),_0x2d649f,_0x8f90('0x10'));logger[_0x8f90('0x11')](_0x8f90('0x12'),_0x2d649f,_0x8f90('0x10'),JSON['stringify'](_0x895e58));if(_0x895e58[_0x8f90('0x13')]){if(_0x895e58[_0x8f90('0x13')][_0x8f90('0x14')]===0x1f4){logger['error']('Trunk,\x20%s,\x20%s',_0x2d649f,_0x895e58[_0x8f90('0x13')][_0x8f90('0x15')]);return _0x2ad34a(_0x895e58['error'][_0x8f90('0x15')]);}logger[_0x8f90('0x13')](_0x8f90('0xf'),_0x2d649f,_0x895e58['error'][_0x8f90('0x15')]);return _0x26b89a(_0x895e58[_0x8f90('0x13')][_0x8f90('0x15')]);}else{logger[_0x8f90('0x16')](_0x8f90('0xf'),_0x2d649f,'request\x20sent');_0x26b89a(_0x895e58[_0x8f90('0x17')][_0x8f90('0x15')]);}})[_0x8f90('0x18')](function(_0x26533e){logger[_0x8f90('0x13')]('Trunk,\x20%s,\x20%s',_0x2d649f,_0x26533e);_0x2ad34a(_0x26533e);});});}exports[_0x8f90('0x19')]=function(_0x52687f){var _0x1ccdb9=this;return new Promise(function(_0x15886b,_0x5f32af){return db[_0x8f90('0x1a')][_0x8f90('0x1b')]({'raw':_0x52687f[_0x8f90('0x1c')]?_0x52687f[_0x8f90('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x52687f[_0x8f90('0x1c')]?_0x52687f['options']['where']||null:null,'attributes':_0x52687f[_0x8f90('0x1c')]?_0x52687f[_0x8f90('0x1c')][_0x8f90('0x1d')]||null:null,'limit':_0x52687f[_0x8f90('0x1c')]?_0x52687f[_0x8f90('0x1c')]['limit']||null:null,'include':_0x52687f[_0x8f90('0x1c')]?_0x52687f[_0x8f90('0x1c')][_0x8f90('0x1e')]?_[_0x8f90('0x1f')](_0x52687f[_0x8f90('0x1c')]['include'],function(_0x2de6c5){return{'model':db[_0x2de6c5[_0x8f90('0x20')]],'as':_0x2de6c5['as'],'attributes':_0x2de6c5['attributes'],'include':_0x2de6c5[_0x8f90('0x1e')]?_[_0x8f90('0x1f')](_0x2de6c5[_0x8f90('0x1e')],function(_0x5295cc){return{'model':db[_0x5295cc['model']],'as':_0x5295cc['as'],'attributes':_0x5295cc[_0x8f90('0x1d')],'include':_0x5295cc[_0x8f90('0x1e')]?_[_0x8f90('0x1f')](_0x5295cc[_0x8f90('0x1e')],function(_0x4696e4){return{'model':db[_0x4696e4['model']],'as':_0x4696e4['as'],'attributes':_0x4696e4[_0x8f90('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5e8507){logger[_0x8f90('0x16')]('GetTrunk',_0x52687f);logger[_0x8f90('0x11')](_0x8f90('0x19'),_0x52687f,JSON[_0x8f90('0x21')](_0x5e8507));_0x15886b(_0x5e8507);})[_0x8f90('0x18')](function(_0x44b529){logger[_0x8f90('0x13')]('GetTrunk',_0x44b529['message'],_0x52687f);_0x5f32af(_0x1ccdb9['error'](0x1f4,_0x44b529['message']));});});};exports[_0x8f90('0x22')]=function(_0x2c9cee){var _0x39547e=this;return new Promise(function(_0x2cd65b,_0x3160f4){return db[_0x8f90('0x1a')][_0x8f90('0x23')]({'raw':_0x2c9cee['options']?_0x2c9cee[_0x8f90('0x1c')][_0x8f90('0x24')]===undefined?!![]:![]:!![],'where':_0x2c9cee[_0x8f90('0x1c')]?_0x2c9cee[_0x8f90('0x1c')][_0x8f90('0x25')]||null:null,'attributes':_0x2c9cee['options']?_0x2c9cee['options'][_0x8f90('0x1d')]||null:null,'include':_0x2c9cee[_0x8f90('0x1c')]?_0x2c9cee['options'][_0x8f90('0x1e')]?_[_0x8f90('0x1f')](_0x2c9cee[_0x8f90('0x1c')][_0x8f90('0x1e')],function(_0x3106f6){return{'model':db[_0x3106f6[_0x8f90('0x20')]],'as':_0x3106f6['as'],'attributes':_0x3106f6[_0x8f90('0x1d')],'include':_0x3106f6[_0x8f90('0x1e')]?_[_0x8f90('0x1f')](_0x3106f6[_0x8f90('0x1e')],function(_0x415c75){return{'model':db[_0x415c75[_0x8f90('0x20')]],'as':_0x415c75['as'],'attributes':_0x415c75[_0x8f90('0x1d')],'include':_0x415c75['include']?_[_0x8f90('0x1f')](_0x415c75[_0x8f90('0x1e')],function(_0x3b503c){return{'model':db[_0x3b503c[_0x8f90('0x20')]],'as':_0x3b503c['as'],'attributes':_0x3b503c[_0x8f90('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x8f90('0xe')](function(_0x411674){logger['info'](_0x8f90('0x22'),_0x2c9cee);logger[_0x8f90('0x11')](_0x8f90('0x22'),_0x2c9cee,JSON[_0x8f90('0x21')](_0x411674));_0x2cd65b(_0x411674);})[_0x8f90('0x18')](function(_0x309930){logger[_0x8f90('0x13')](_0x8f90('0x22'),_0x309930[_0x8f90('0x15')],_0x2c9cee);_0x3160f4(_0x39547e[_0x8f90('0x13')](0x1f4,_0x309930[_0x8f90('0x15')]));});});};
\ No newline at end of file
+var _0xdd7c=['ShowTrunk','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Trunk,\x20%s,\x20%s','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','error','code','message','result','GetTrunk','Trunk','findAll','options','raw','where','limit','include','map','model','attributes','stringify','catch','find'];(function(_0x35e92e,_0x21581b){var _0x1205a8=function(_0x4325d8){while(--_0x4325d8){_0x35e92e['push'](_0x35e92e['shift']());}};_0x1205a8(++_0x21581b);}(_0xdd7c,0xbf));var _0xcdd7=function(_0x18a79d,_0x57bd2c){_0x18a79d=_0x18a79d-0x0;var _0x4f8848=_0xdd7c[_0x18a79d];return _0x4f8848;};'use strict';var _=require(_0xcdd7('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xcdd7('0x1'));var rs=require(_0xcdd7('0x2'));var fs=require('fs');var Redis=require(_0xcdd7('0x3'));var db=require(_0xcdd7('0x4'))['db'];var utils=require(_0xcdd7('0x5'));var logger=require(_0xcdd7('0x6'))(_0xcdd7('0x7'));var config=require(_0xcdd7('0x8'));var jayson=require(_0xcdd7('0x9'));var client=jayson[_0xcdd7('0xa')][_0xcdd7('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x327b4e,_0x38fff2,_0x33a73c){return new BPromise(function(_0x144bf4,_0x370b87){return client[_0xcdd7('0xc')](_0x327b4e,_0x33a73c)[_0xcdd7('0xd')](function(_0x5a7c5e){logger[_0xcdd7('0xe')](_0xcdd7('0xf'),_0x38fff2,_0xcdd7('0x10'));logger[_0xcdd7('0x11')](_0xcdd7('0x12'),_0x38fff2,_0xcdd7('0x10'),JSON['stringify'](_0x5a7c5e));if(_0x5a7c5e['error']){if(_0x5a7c5e[_0xcdd7('0x13')][_0xcdd7('0x14')]===0x1f4){logger[_0xcdd7('0x13')]('Trunk,\x20%s,\x20%s',_0x38fff2,_0x5a7c5e['error'][_0xcdd7('0x15')]);return _0x370b87(_0x5a7c5e[_0xcdd7('0x13')][_0xcdd7('0x15')]);}logger[_0xcdd7('0x13')]('Trunk,\x20%s,\x20%s',_0x38fff2,_0x5a7c5e[_0xcdd7('0x13')][_0xcdd7('0x15')]);return _0x144bf4(_0x5a7c5e[_0xcdd7('0x13')][_0xcdd7('0x15')]);}else{logger[_0xcdd7('0xe')](_0xcdd7('0xf'),_0x38fff2,_0xcdd7('0x10'));_0x144bf4(_0x5a7c5e[_0xcdd7('0x16')][_0xcdd7('0x15')]);}})['catch'](function(_0x50a308){logger[_0xcdd7('0x13')](_0xcdd7('0xf'),_0x38fff2,_0x50a308);_0x370b87(_0x50a308);});});}exports[_0xcdd7('0x17')]=function(_0x5b6876){var _0xfef816=this;return new Promise(function(_0x2b2463,_0xd70da9){return db[_0xcdd7('0x18')][_0xcdd7('0x19')]({'raw':_0x5b6876[_0xcdd7('0x1a')]?_0x5b6876[_0xcdd7('0x1a')][_0xcdd7('0x1b')]===undefined?!![]:![]:!![],'where':_0x5b6876['options']?_0x5b6876[_0xcdd7('0x1a')][_0xcdd7('0x1c')]||null:null,'attributes':_0x5b6876[_0xcdd7('0x1a')]?_0x5b6876[_0xcdd7('0x1a')]['attributes']||null:null,'limit':_0x5b6876[_0xcdd7('0x1a')]?_0x5b6876[_0xcdd7('0x1a')][_0xcdd7('0x1d')]||null:null,'include':_0x5b6876[_0xcdd7('0x1a')]?_0x5b6876[_0xcdd7('0x1a')][_0xcdd7('0x1e')]?_[_0xcdd7('0x1f')](_0x5b6876[_0xcdd7('0x1a')][_0xcdd7('0x1e')],function(_0x3e2e97){return{'model':db[_0x3e2e97[_0xcdd7('0x20')]],'as':_0x3e2e97['as'],'attributes':_0x3e2e97[_0xcdd7('0x21')],'include':_0x3e2e97[_0xcdd7('0x1e')]?_[_0xcdd7('0x1f')](_0x3e2e97[_0xcdd7('0x1e')],function(_0x48502c){return{'model':db[_0x48502c[_0xcdd7('0x20')]],'as':_0x48502c['as'],'attributes':_0x48502c[_0xcdd7('0x21')],'include':_0x48502c[_0xcdd7('0x1e')]?_['map'](_0x48502c[_0xcdd7('0x1e')],function(_0x52d4de){return{'model':db[_0x52d4de[_0xcdd7('0x20')]],'as':_0x52d4de['as'],'attributes':_0x52d4de[_0xcdd7('0x21')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5f3800){logger['info'](_0xcdd7('0x17'),_0x5b6876);logger[_0xcdd7('0x11')](_0xcdd7('0x17'),_0x5b6876,JSON[_0xcdd7('0x22')](_0x5f3800));_0x2b2463(_0x5f3800);})[_0xcdd7('0x23')](function(_0x5a5f34){logger[_0xcdd7('0x13')](_0xcdd7('0x17'),_0x5a5f34[_0xcdd7('0x15')],_0x5b6876);_0xd70da9(_0xfef816[_0xcdd7('0x13')](0x1f4,_0x5a5f34[_0xcdd7('0x15')]));});});};exports['ShowTrunk']=function(_0x368dd5){var _0x4cccd2=this;return new Promise(function(_0x9bc1f3,_0x3d872c){return db['Trunk'][_0xcdd7('0x24')]({'raw':_0x368dd5[_0xcdd7('0x1a')]?_0x368dd5[_0xcdd7('0x1a')][_0xcdd7('0x1b')]===undefined?!![]:![]:!![],'where':_0x368dd5[_0xcdd7('0x1a')]?_0x368dd5['options'][_0xcdd7('0x1c')]||null:null,'attributes':_0x368dd5[_0xcdd7('0x1a')]?_0x368dd5['options'][_0xcdd7('0x21')]||null:null,'include':_0x368dd5[_0xcdd7('0x1a')]?_0x368dd5[_0xcdd7('0x1a')][_0xcdd7('0x1e')]?_[_0xcdd7('0x1f')](_0x368dd5['options']['include'],function(_0x3776a2){return{'model':db[_0x3776a2[_0xcdd7('0x20')]],'as':_0x3776a2['as'],'attributes':_0x3776a2[_0xcdd7('0x21')],'include':_0x3776a2[_0xcdd7('0x1e')]?_[_0xcdd7('0x1f')](_0x3776a2['include'],function(_0x504a26){return{'model':db[_0x504a26[_0xcdd7('0x20')]],'as':_0x504a26['as'],'attributes':_0x504a26[_0xcdd7('0x21')],'include':_0x504a26[_0xcdd7('0x1e')]?_[_0xcdd7('0x1f')](_0x504a26[_0xcdd7('0x1e')],function(_0x9422bf){return{'model':db[_0x9422bf[_0xcdd7('0x20')]],'as':_0x9422bf['as'],'attributes':_0x9422bf[_0xcdd7('0x21')]};}):[]};}):[]};}):[]:[]})[_0xcdd7('0xd')](function(_0x1d0c23){logger[_0xcdd7('0xe')]('ShowTrunk',_0x368dd5);logger[_0xcdd7('0x11')](_0xcdd7('0x25'),_0x368dd5,JSON['stringify'](_0x1d0c23));_0x9bc1f3(_0x1d0c23);})[_0xcdd7('0x23')](function(_0x4fae81){logger[_0xcdd7('0x13')](_0xcdd7('0x25'),_0x4fae81['message'],_0x368dd5);_0x3d872c(_0x4cccd2[_0xcdd7('0x13')](0x1f4,_0x4fae81[_0xcdd7('0x15')]));});});};
\ No newline at end of file
index bd5ffe2..b185fa0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64e6=['put','/:id','update','exports','express','Router','./user-setting.controller'];(function(_0x38c1b2,_0x138a70){var _0x138943=function(_0x38827d){while(--_0x38827d){_0x38c1b2['push'](_0x38c1b2['shift']());}};_0x138943(++_0x138a70);}(_0x64e6,0x138));var _0x664e=function(_0x56af40,_0x28be9f){_0x56af40=_0x56af40-0x0;var _0x56add5=_0x64e6[_0x56af40];return _0x56add5;};'use strict';var express=require(_0x664e('0x0'));var router=express[_0x664e('0x1')]();var auth=require('../../components/auth/service');var controller=require(_0x664e('0x2'));router[_0x664e('0x3')](_0x664e('0x4'),auth['isAuthenticated'](),controller[_0x664e('0x5')]);module[_0x664e('0x6')]=router;
\ No newline at end of file
+var _0x510d=['isAuthenticated','update','exports','express','Router','../../components/auth/service','./user-setting.controller','/:id'];(function(_0x243b2f,_0x30aa15){var _0xcb3c2d=function(_0x213bb2){while(--_0x213bb2){_0x243b2f['push'](_0x243b2f['shift']());}};_0xcb3c2d(++_0x30aa15);}(_0x510d,0x123));var _0xd510=function(_0x9aada2,_0xd2d349){_0x9aada2=_0x9aada2-0x0;var _0x196dff=_0x510d[_0x9aada2];return _0x196dff;};'use strict';var express=require(_0xd510('0x0'));var router=express[_0xd510('0x1')]();var auth=require(_0xd510('0x2'));var controller=require(_0xd510('0x3'));router['put'](_0xd510('0x4'),auth[_0xd510('0x5')](),controller[_0xd510('0x6')]);module[_0xd510('0x7')]=router;
\ No newline at end of file
index 807848e..d41261b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2214=['info','debug','ENUM','BOOLEAN','TEXT','DATE','INTEGER','UserId','sequelize','error'];(function(_0x448f97,_0x2f68ce){var _0x37c226=function(_0x10e584){while(--_0x10e584){_0x448f97['push'](_0x448f97['shift']());}};_0x37c226(++_0x2f68ce);}(_0x2214,0x10c));var _0x4221=function(_0x344890,_0x35a1d3){_0x344890=_0x344890-0x0;var _0xb7533e=_0x2214[_0x344890];return _0xb7533e;};'use strict';var Sequelize=require(_0x4221('0x0'));const CLIENT_SIDE_LOG_LEVELS=[_0x4221('0x1'),'warning',_0x4221('0x2'),_0x4221('0x3')];module['exports']={'clientSideLoggingLevel':{'type':Sequelize[_0x4221('0x4')](CLIENT_SIDE_LOG_LEVELS),'allowNull':![],'defaultValue':_0x4221('0x1'),'validate':{'isIn':[CLIENT_SIDE_LOG_LEVELS]}},'clientSideLoggingEnabled':{'type':Sequelize[_0x4221('0x5')],'defaultValue':![]},'clientSideLoggingScopes':{'type':Sequelize[_0x4221('0x6')],'allowNull':!![]},'clientSideLoggingEnabledSince':{'type':Sequelize[_0x4221('0x7')],'allowNull':!![],'defaultValue':null},'UserId':{'type':Sequelize[_0x4221('0x8')],'unique':_0x4221('0x9')}};
\ No newline at end of file
+var _0x2fd9=['debug','exports','ENUM','error','TEXT','DATE','INTEGER','sequelize','warning'];(function(_0x1f563c,_0x28546f){var _0x56d71c=function(_0x56b072){while(--_0x56b072){_0x1f563c['push'](_0x1f563c['shift']());}};_0x56d71c(++_0x28546f);}(_0x2fd9,0x85));var _0x92fd=function(_0x38168e,_0x1b7cb0){_0x38168e=_0x38168e-0x0;var _0x47cc70=_0x2fd9[_0x38168e];return _0x47cc70;};'use strict';var Sequelize=require(_0x92fd('0x0'));const CLIENT_SIDE_LOG_LEVELS=['error',_0x92fd('0x1'),'info',_0x92fd('0x2')];module[_0x92fd('0x3')]={'clientSideLoggingLevel':{'type':Sequelize[_0x92fd('0x4')](CLIENT_SIDE_LOG_LEVELS),'allowNull':![],'defaultValue':_0x92fd('0x5'),'validate':{'isIn':[CLIENT_SIDE_LOG_LEVELS]}},'clientSideLoggingEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'clientSideLoggingScopes':{'type':Sequelize[_0x92fd('0x6')],'allowNull':!![]},'clientSideLoggingEnabledSince':{'type':Sequelize[_0x92fd('0x7')],'allowNull':!![],'defaultValue':null},'UserId':{'type':Sequelize[_0x92fd('0x8')],'unique':'UserId'}};
\ No newline at end of file
index 5f40383..36ada16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe812=['defaults','redis','json','update','sendStatus','error','stack','name','send','role','admin','Unauthorized','params','Invalid\x20user\x20setting\x20id','UserSetting','then','body','catch','ioredis','../../config/logger','../../mysqldb','socket.io-emitter','./user-setting.socket','register'];(function(_0x3a4e4e,_0x1063eb){var _0x16a6fd=function(_0x1aa14c){while(--_0x1aa14c){_0x3a4e4e['push'](_0x3a4e4e['shift']());}};_0x16a6fd(++_0x1063eb);}(_0xe812,0x1f2));var _0x2e81=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0xe812[_0x167cc1];return _0x10bc4b;};'use strict';var _=require('lodash');var Redis=require(_0x2e81('0x0'));var logger=require(_0x2e81('0x1'))('api');var config=require('../../config/environment');var db=require(_0x2e81('0x2'))['db'];var socket=require(_0x2e81('0x3'))(new Redis(config['redis']));require(_0x2e81('0x4'))[_0x2e81('0x5')](socket);config['redis']=_[_0x2e81('0x6')](config[_0x2e81('0x7')],{'host':'localhost','port':0x18eb});function respondWithResult(_0x36604d,_0x32b221){_0x32b221=_0x32b221||0xc8;return function(_0x27f9c6){if(_0x27f9c6){return _0x36604d['status'](_0x32b221)[_0x2e81('0x8')](_0x27f9c6);}};}function saveUpdates(_0x29857f){return function(_0x1be71e){if(_0x1be71e){return _0x1be71e[_0x2e81('0x9')](_0x29857f)['then'](function(_0x3375d6){return _0x3375d6;});}return null;};}function handleEntityNotFound(_0x1afde0){return function(_0xec148d){if(!_0xec148d){_0x1afde0[_0x2e81('0xa')](0x194);}return _0xec148d;};}function handleError(_0x1e125a,_0x3cbca8){_0x3cbca8=_0x3cbca8||0x1f4;return function(_0x3a4aa8){logger[_0x2e81('0xb')](_0x3a4aa8[_0x2e81('0xc')]);if(_0x3a4aa8[_0x2e81('0xd')]){delete _0x3a4aa8[_0x2e81('0xd')];}_0x1e125a['status'](_0x3cbca8)[_0x2e81('0xe')](_0x3a4aa8);};}exports[_0x2e81('0x9')]=function(_0x4c4f16,_0x40ff0c){if(_0x4c4f16['user'][_0x2e81('0xf')]!==_0x2e81('0x10'))throw new Error(_0x2e81('0x11'));if(isNaN(Number(_0x4c4f16[_0x2e81('0x12')]['id'])))throw new Error(_0x2e81('0x13'));return db[_0x2e81('0x14')]['find']({'where':{'id':_0x4c4f16[_0x2e81('0x12')]['id']}})[_0x2e81('0x15')](handleEntityNotFound(_0x40ff0c,null))['then'](saveUpdates(_0x4c4f16[_0x2e81('0x16')],null))['then'](respondWithResult(_0x40ff0c,null))[_0x2e81('0x17')](handleError(_0x40ff0c,null));};
\ No newline at end of file
+var _0x9567=['redis','./user-setting.socket','status','then','sendStatus','error','stack','name','send','update','user','role','admin','Unauthorized','params','Invalid\x20user\x20setting\x20id','UserSetting','find','body','catch','lodash','ioredis','../../config/logger','api','../../config/environment'];(function(_0x2d3c60,_0x4df458){var _0x560041=function(_0x5568af){while(--_0x5568af){_0x2d3c60['push'](_0x2d3c60['shift']());}};_0x560041(++_0x4df458);}(_0x9567,0xdc));var _0x7956=function(_0x63f5a8,_0x12c2d3){_0x63f5a8=_0x63f5a8-0x0;var _0x207396=_0x9567[_0x63f5a8];return _0x207396;};'use strict';var _=require(_0x7956('0x0'));var Redis=require(_0x7956('0x1'));var logger=require(_0x7956('0x2'))(_0x7956('0x3'));var config=require(_0x7956('0x4'));var db=require('../../mysqldb')['db'];var socket=require('socket.io-emitter')(new Redis(config[_0x7956('0x5')]));require(_0x7956('0x6'))['register'](socket);config[_0x7956('0x5')]=_['defaults'](config[_0x7956('0x5')],{'host':'localhost','port':0x18eb});function respondWithResult(_0x1819b6,_0x31b50d){_0x31b50d=_0x31b50d||0xc8;return function(_0x48b2b3){if(_0x48b2b3){return _0x1819b6[_0x7956('0x7')](_0x31b50d)['json'](_0x48b2b3);}};}function saveUpdates(_0x18dca3){return function(_0x33593a){if(_0x33593a){return _0x33593a['update'](_0x18dca3)[_0x7956('0x8')](function(_0xe825){return _0xe825;});}return null;};}function handleEntityNotFound(_0x5919db){return function(_0x1fd87b){if(!_0x1fd87b){_0x5919db[_0x7956('0x9')](0x194);}return _0x1fd87b;};}function handleError(_0x299e61,_0x4bfc14){_0x4bfc14=_0x4bfc14||0x1f4;return function(_0x1c03ed){logger[_0x7956('0xa')](_0x1c03ed[_0x7956('0xb')]);if(_0x1c03ed[_0x7956('0xc')]){delete _0x1c03ed['name'];}_0x299e61[_0x7956('0x7')](_0x4bfc14)[_0x7956('0xd')](_0x1c03ed);};}exports[_0x7956('0xe')]=function(_0x5dafc5,_0x14af6f){if(_0x5dafc5[_0x7956('0xf')][_0x7956('0x10')]!==_0x7956('0x11'))throw new Error(_0x7956('0x12'));if(isNaN(Number(_0x5dafc5[_0x7956('0x13')]['id'])))throw new Error(_0x7956('0x14'));return db[_0x7956('0x15')][_0x7956('0x16')]({'where':{'id':_0x5dafc5[_0x7956('0x13')]['id']}})[_0x7956('0x8')](handleEntityNotFound(_0x14af6f,null))[_0x7956('0x8')](saveUpdates(_0x5dafc5[_0x7956('0x17')],null))[_0x7956('0x8')](respondWithResult(_0x14af6f,null))[_0x7956('0x18')](handleError(_0x14af6f,null));};
\ No newline at end of file
index f633c11..04a74f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0819=['hook','events','setMaxListeners','save','update','emit','hasOwnProperty'];(function(_0x49f85f,_0x3313f6){var _0x432ba7=function(_0x3d438f){while(--_0x3d438f){_0x49f85f['push'](_0x49f85f['shift']());}};_0x432ba7(++_0x3313f6);}(_0x0819,0x16d));var _0x9081=function(_0x5b9122,_0x12de84){_0x5b9122=_0x5b9122-0x0;var _0x22c66c=_0x0819[_0x5b9122];return _0x22c66c;};'use strict';var EventEmitter=require(_0x9081('0x0'));var UserSetting=require('../../mysqldb')['db']['UserSetting'];var UserSettingEvents=new EventEmitter();UserSettingEvents[_0x9081('0x1')](0x0);var events={'afterCreate':_0x9081('0x2'),'afterUpdate':_0x9081('0x3'),'afterDestroy':'remove'};function emitEvent(_0x2d894c){return function(_0x158998,_0x3c9568,_0xebf5f4){UserSettingEvents[_0x9081('0x4')](_0x2d894c+':'+_0x158998['id'],_0x158998);UserSettingEvents['emit'](_0x2d894c,_0x158998);_0xebf5f4(null);};}for(var e in events){if(events[_0x9081('0x5')](e)){var event=events[e];UserSetting[_0x9081('0x6')](e,emitEvent(event));}}module['exports']=UserSettingEvents;
\ No newline at end of file
+var _0x958a=['save','remove','emit','hasOwnProperty','hook','events','setMaxListeners'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x958a,0x18d));var _0xa958=function(_0x1f358e,_0x512274){_0x1f358e=_0x1f358e-0x0;var _0x1f029a=_0x958a[_0x1f358e];return _0x1f029a;};'use strict';var EventEmitter=require(_0xa958('0x0'));var UserSetting=require('../../mysqldb')['db']['UserSetting'];var UserSettingEvents=new EventEmitter();UserSettingEvents[_0xa958('0x1')](0x0);var events={'afterCreate':_0xa958('0x2'),'afterUpdate':'update','afterDestroy':_0xa958('0x3')};function emitEvent(_0x4fe378){return function(_0x3435d7,_0x57a9b7,_0x30f175){UserSettingEvents[_0xa958('0x4')](_0x4fe378+':'+_0x3435d7['id'],_0x3435d7);UserSettingEvents[_0xa958('0x4')](_0x4fe378,_0x3435d7);_0x30f175(null);};}for(var e in events){if(events[_0xa958('0x5')](e)){var event=events[e];UserSetting[_0xa958('0x6')](e,emitEvent(event));}}module['exports']=UserSettingEvents;
\ No newline at end of file
index 2cdeaa0..7a6271c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc901=['clientSideLoggingEnabledSince','./user-setting.attributes','user_settings'];(function(_0x39a62d,_0x4d0ebe){var _0x4876c5=function(_0x5e3608){while(--_0x5e3608){_0x39a62d['push'](_0x39a62d['shift']());}};_0x4876c5(++_0x4d0ebe);}(_0xc901,0x142));var _0x1c90=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xc901[_0x321bb2];return _0x9c12ed;};'use strict';var attributes=require(_0x1c90('0x0'));module['exports']=function(_0x5ac4c7){return _0x5ac4c7['define']('UserSetting',attributes,{'tableName':_0x1c90('0x1'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x4386c8){if(!_0x4386c8['clientSideLoggingEnabled'])_0x4386c8[_0x1c90('0x2')]=null;else if(_0x4386c8[_0x1c90('0x2')]===null)_0x4386c8[_0x1c90('0x2')]=new Date();}}});};
\ No newline at end of file
+var _0xf6e8=['UserSetting','user_settings','clientSideLoggingEnabledSince','exports','define'];(function(_0x2ab751,_0x4c4957){var _0x38b267=function(_0x37a89e){while(--_0x37a89e){_0x2ab751['push'](_0x2ab751['shift']());}};_0x38b267(++_0x4c4957);}(_0xf6e8,0xc1));var _0x8f6e=function(_0x284a04,_0x2b7e2d){_0x284a04=_0x284a04-0x0;var _0x305de1=_0xf6e8[_0x284a04];return _0x305de1;};'use strict';var attributes=require('./user-setting.attributes');module[_0x8f6e('0x0')]=function(_0x2c1a59){return _0x2c1a59[_0x8f6e('0x1')](_0x8f6e('0x2'),attributes,{'tableName':_0x8f6e('0x3'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x24d74f){if(!_0x24d74f['clientSideLoggingEnabled'])_0x24d74f[_0x8f6e('0x4')]=null;else if(_0x24d74f['clientSideLoggingEnabledSince']===null)_0x24d74f[_0x8f6e('0x4')]=new Date();}}});};
\ No newline at end of file
index 620854f..1561f11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb438=['save','remove','emit','user-setting:update:user-','UserId','length','user-setting:','./user-setting.events'];(function(_0x15411c,_0xe7d9d1){var _0x30ad08=function(_0x97a026){while(--_0x97a026){_0x15411c['push'](_0x15411c['shift']());}};_0x30ad08(++_0xe7d9d1);}(_0xb438,0xf7));var _0x8b43=function(_0x1232b,_0x559732){_0x1232b=_0x1232b-0x0;var _0x4f5de3=_0xb438[_0x1232b];return _0x4f5de3;};'use strict';var UserSettingEvents=require(_0x8b43('0x0'));var events=[_0x8b43('0x1'),_0x8b43('0x2'),'update'];function createListener(_0x1309f3,_0x257854){return function(_0xb63ab7){_0x257854['emit'](_0x1309f3,_0xb63ab7);if(_0x1309f3==='user-setting:update'){_0x257854[_0x8b43('0x3')](_0x8b43('0x4')+_0xb63ab7[_0x8b43('0x5')],_0xb63ab7);}};}exports['register']=function(_0x290290){for(var _0x4f34d9=0x0,_0x462c11=events[_0x8b43('0x6')];_0x4f34d9<_0x462c11;_0x4f34d9++){var _0x5c3695=events[_0x4f34d9];var _0x490d68=createListener(_0x8b43('0x7')+_0x5c3695,_0x290290);UserSettingEvents['on'](_0x5c3695,_0x490d68);}};
\ No newline at end of file
+var _0x6dc9=['save','remove','update','emit','user-setting:update:user-','UserId','register','length','./user-setting.events'];(function(_0x2d5c9e,_0x2a0fc1){var _0x3fd10a=function(_0x20aff0){while(--_0x20aff0){_0x2d5c9e['push'](_0x2d5c9e['shift']());}};_0x3fd10a(++_0x2a0fc1);}(_0x6dc9,0x11f));var _0x96dc=function(_0x26ae31,_0x3f8239){_0x26ae31=_0x26ae31-0x0;var _0x396e9b=_0x6dc9[_0x26ae31];return _0x396e9b;};'use strict';var UserSettingEvents=require(_0x96dc('0x0'));var events=[_0x96dc('0x1'),_0x96dc('0x2'),_0x96dc('0x3')];function createListener(_0x2b6e85,_0x45b6e9){return function(_0x376a67){_0x45b6e9['emit'](_0x2b6e85,_0x376a67);if(_0x2b6e85==='user-setting:update'){_0x45b6e9[_0x96dc('0x4')](_0x96dc('0x5')+_0x376a67[_0x96dc('0x6')],_0x376a67);}};}exports[_0x96dc('0x7')]=function(_0x5928f3){for(var _0x342d77=0x0,_0x4a61d5=events[_0x96dc('0x8')];_0x342d77<_0x4a61d5;_0x342d77++){var _0x5e0ab6=events[_0x342d77];var _0x1a1095=createListener('user-setting:'+_0x5e0ab6,_0x5928f3);UserSettingEvents['on'](_0x5e0ab6,_0x1a1095);}};
\ No newline at end of file
index 788e883..ab6da18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcdd2=['/:id/chat/interactions','getChatInteractions','getOpenchannelInteractions','/:id/mail/interactions','getMailInteractions','getSmsInteractions','/:id/fax/interactions','getFaxInteractions','/:id/whatsapp/interactions','getWhatsappInteractions','/:id/teams','getTeams','getLists','/:id/agents','/:id/prefixes','getVoicePrefixes','/:id/fax_accounts','getFaxAccounts','/:id/mail_accounts','getMailAccounts','getOpenchannelAccounts','/:id/sms_accounts','/:id/whatsapp_accounts','getWhatsappAccounts','getScheduledCalls','/:id/api_key','getApiKey','post','addContacts','create','/create_many','bulkCreate','/:id/queues','addQueues','diskStorage','root','server/files/images/','format','%s-%s','now','originalname','single','file','login','/:id/logout','logout','/:id/pause','pause','/:id/unpause','addTeams','/:id/chat_interactions','addChatInteractions','/:id/mail_interactions','addMailInteractions','addFaxInteractions','/:id/sms_interactions','/:id/openchannel_interactions','addOpenchannelInteractions','/:id/whatsapp_interactions','addWhatsappInteractions','addMailAccounts','/:id/openchannel_accounts','addOpenchannelAccounts','addSmsAccounts','/:id/chat_websites','addWhatsappAccounts','put','update','changePassword','removeQueues','removeTeams','delete','removeChatInteractions','removeMailInteractions','/:id/fax_interactions','removeFaxInteractions','removeSmsInteractions','removeOpenchannelInteractions','removeWhatsappInteractions','removeMailAccounts','removeOpenchannelAccounts','removeSmsAccounts','removeChatWebsites','removeWhatsappAccounts','removeApiKey','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./user.controller','get','isAuthenticated','index','/describe','describe','whoami','/presence','/:id','show','/:id/avatar','getAvatar','/:id/open_tabs','getOpenTabs','/:id/contacts','getContacts','/:id/queues_rt','getVoiceQueuesRt','/:id/groups','getGroups','/:id/recordings','getRecordings','/:id/screen_recordings','getScreenRecordings'];(function(_0x5c2e3e,_0x26ecd3){var _0x53f64a=function(_0x2b5df8){while(--_0x2b5df8){_0x5c2e3e['push'](_0x5c2e3e['shift']());}};_0x53f64a(++_0x26ecd3);}(_0xcdd2,0x13d));var _0x2cdd=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xcdd2[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x2cdd('0x0'));var util=require(_0x2cdd('0x1'));var path=require('path');var timeout=require(_0x2cdd('0x2'));var express=require('express');var router=express[_0x2cdd('0x3')]();var fs_extra=require(_0x2cdd('0x4'));var auth=require(_0x2cdd('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x2cdd('0x6'));var controller=require(_0x2cdd('0x7'));router[_0x2cdd('0x8')]('/',auth[_0x2cdd('0x9')](),controller[_0x2cdd('0xa')]);router[_0x2cdd('0x8')](_0x2cdd('0xb'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0xc')]);router[_0x2cdd('0x8')]('/whoami',auth['isAuthenticated'](),controller[_0x2cdd('0xd')]);router[_0x2cdd('0x8')](_0x2cdd('0xe'),auth[_0x2cdd('0x9')](),controller['getPresence']);router['get'](_0x2cdd('0xf'),auth['isAuthenticated'](),controller[_0x2cdd('0x10')]);router[_0x2cdd('0x8')](_0x2cdd('0x11'),controller[_0x2cdd('0x12')]);router[_0x2cdd('0x8')](_0x2cdd('0x13'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x14')]);router[_0x2cdd('0x8')](_0x2cdd('0x15'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x16')]);router[_0x2cdd('0x8')]('/:id/queues',auth[_0x2cdd('0x9')](),controller['getQueues']);router[_0x2cdd('0x8')](_0x2cdd('0x17'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x18')]);router[_0x2cdd('0x8')](_0x2cdd('0x19'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x1a')]);router[_0x2cdd('0x8')](_0x2cdd('0x1b'),auth['isAuthenticated'](),controller[_0x2cdd('0x1c')]);router[_0x2cdd('0x8')](_0x2cdd('0x1d'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x1e')]);router[_0x2cdd('0x8')](_0x2cdd('0x1f'),auth['isAuthenticated'](),controller[_0x2cdd('0x20')]);router[_0x2cdd('0x8')]('/:id/openchannel/interactions',auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x21')]);router['get'](_0x2cdd('0x22'),auth['isAuthenticated'](),controller[_0x2cdd('0x23')]);router[_0x2cdd('0x8')]('/:id/sms/interactions',auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x24')]);router[_0x2cdd('0x8')](_0x2cdd('0x25'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x26')]);router[_0x2cdd('0x8')](_0x2cdd('0x27'),auth['isAuthenticated'](),controller[_0x2cdd('0x28')]);router[_0x2cdd('0x8')](_0x2cdd('0x29'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x2a')]);router[_0x2cdd('0x8')]('/:id/lists',auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x2b')]);router[_0x2cdd('0x8')](_0x2cdd('0x2c'),auth[_0x2cdd('0x9')](),controller['getAgents']);router[_0x2cdd('0x8')](_0x2cdd('0x2d'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x2e')]);router['get'](_0x2cdd('0x2f'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x30')]);router[_0x2cdd('0x8')](_0x2cdd('0x31'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x32')]);router['get']('/:id/openchannel_accounts',auth['isAuthenticated'](),controller[_0x2cdd('0x33')]);router[_0x2cdd('0x8')](_0x2cdd('0x34'),auth[_0x2cdd('0x9')](),controller['getSmsAccounts']);router[_0x2cdd('0x8')]('/:id/chat_websites',auth[_0x2cdd('0x9')](),controller['getChatWebsites']);router['get'](_0x2cdd('0x35'),auth['isAuthenticated'](),controller[_0x2cdd('0x36')]);router[_0x2cdd('0x8')]('/:id/scheduled_calls',auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x37')]);router['get'](_0x2cdd('0x38'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x39')]);router[_0x2cdd('0x3a')]('/:id/contacts',auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x3b')]);router[_0x2cdd('0x3a')]('/',auth['isAuthenticated'](),controller[_0x2cdd('0x3c')]);router['post'](_0x2cdd('0x3d'),auth['isAuthenticated'](),controller[_0x2cdd('0x3e')]);router[_0x2cdd('0x3a')](_0x2cdd('0x3f'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x40')]);var upload=multer({'storage':multer[_0x2cdd('0x41')]({'destination':function(_0xbc5761,_0x32cecb,_0x4994d4){_0x4994d4(null,path['join'](config[_0x2cdd('0x42')],_0x2cdd('0x43')));},'filename':function(_0x4003f3,_0x141afe,_0x4d7b70){_0x4d7b70(null,util[_0x2cdd('0x44')](_0x2cdd('0x45'),Date[_0x2cdd('0x46')](),_0x141afe[_0x2cdd('0x47')]));}})});router[_0x2cdd('0x3a')]('/:id/avatar',upload[_0x2cdd('0x48')](_0x2cdd('0x49')),controller['addAvatar']);router[_0x2cdd('0x3a')]('/:id/login',auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x4a')]);router[_0x2cdd('0x3a')](_0x2cdd('0x4b'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x4c')]);router[_0x2cdd('0x3a')](_0x2cdd('0x4d'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x4e')]);router[_0x2cdd('0x3a')](_0x2cdd('0x4f'),auth[_0x2cdd('0x9')](),controller['unpause']);router[_0x2cdd('0x3a')]('/:id/teams',auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x50')]);router[_0x2cdd('0x3a')](_0x2cdd('0x51'),auth['isAuthenticated'](),controller[_0x2cdd('0x52')]);router[_0x2cdd('0x3a')](_0x2cdd('0x53'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x54')]);router[_0x2cdd('0x3a')]('/:id/fax_interactions',auth['isAuthenticated'](),controller[_0x2cdd('0x55')]);router[_0x2cdd('0x3a')](_0x2cdd('0x56'),auth[_0x2cdd('0x9')](),controller['addSmsInteractions']);router[_0x2cdd('0x3a')](_0x2cdd('0x57'),auth['isAuthenticated'](),controller[_0x2cdd('0x58')]);router[_0x2cdd('0x3a')](_0x2cdd('0x59'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x5a')]);router['post'](_0x2cdd('0x2f'),auth[_0x2cdd('0x9')](),controller['addFaxAccounts']);router[_0x2cdd('0x3a')](_0x2cdd('0x31'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x5b')]);router[_0x2cdd('0x3a')](_0x2cdd('0x5c'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x5d')]);router['post']('/:id/sms_accounts',auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x5e')]);router['post'](_0x2cdd('0x5f'),auth[_0x2cdd('0x9')](),controller['addChatWebsites']);router['post'](_0x2cdd('0x35'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x60')]);router['post'](_0x2cdd('0x38'),auth[_0x2cdd('0x9')](),controller['createApiKey']);router[_0x2cdd('0x61')](_0x2cdd('0xf'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x62')]);router[_0x2cdd('0x61')]('/:id/password',auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x63')]);router['delete'](_0x2cdd('0x3f'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x64')]);router['delete'](_0x2cdd('0x29'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x65')]);router[_0x2cdd('0x66')](_0x2cdd('0xf'),auth['isAuthenticated'](),controller['destroy']);router['delete'](_0x2cdd('0x51'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x67')]);router['delete']('/:id/mail_interactions',auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x68')]);router['delete'](_0x2cdd('0x69'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x6a')]);router['delete'](_0x2cdd('0x56'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x6b')]);router[_0x2cdd('0x66')]('/:id/openchannel_interactions',auth['isAuthenticated'](),controller[_0x2cdd('0x6c')]);router['delete'](_0x2cdd('0x59'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x6d')]);router[_0x2cdd('0x66')](_0x2cdd('0x2f'),auth[_0x2cdd('0x9')](),controller['removeFaxAccounts']);router['delete'](_0x2cdd('0x31'),auth['isAuthenticated'](),controller[_0x2cdd('0x6e')]);router[_0x2cdd('0x66')](_0x2cdd('0x5c'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x6f')]);router[_0x2cdd('0x66')](_0x2cdd('0x34'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x70')]);router['delete']('/:id/chat_websites',auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x71')]);router[_0x2cdd('0x66')](_0x2cdd('0x35'),auth['isAuthenticated'](),controller[_0x2cdd('0x72')]);router[_0x2cdd('0x66')](_0x2cdd('0x38'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x73')]);module['exports']=router;
\ No newline at end of file
+var _0xc4e6=['unpause','addTeams','/:id/mail_interactions','addMailInteractions','/:id/fax_interactions','addFaxInteractions','/:id/sms_interactions','/:id/openchannel_interactions','/:id/whatsapp_interactions','addWhatsappInteractions','addFaxAccounts','addMailAccounts','addOpenchannelAccounts','/:id/chat_websites','addChatWebsites','addWhatsappAccounts','/:id/api_key','createApiKey','put','/:id','update','/:id/password','delete','removeQueues','destroy','/:id/chat_interactions','removeChatInteractions','removeMailInteractions','removeFaxInteractions','removeSmsInteractions','removeOpenchannelInteractions','removeWhatsappInteractions','removeMailAccounts','removeSmsAccounts','removeWhatsappAccounts','removeApiKey','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./user.controller','isAuthenticated','/describe','describe','get','/whoami','whoami','/presence','getPresence','show','/:id/avatar','/:id/open_tabs','getOpenTabs','/:id/contacts','getContacts','/:id/queues','getQueues','/:id/queues_rt','getGroups','getRecordings','/:id/screen_recordings','getScreenRecordings','/:id/chat/interactions','/:id/openchannel/interactions','getOpenchannelInteractions','/:id/mail/interactions','getMailInteractions','/:id/sms/interactions','/:id/fax/interactions','getFaxInteractions','/:id/whatsapp/interactions','getWhatsappInteractions','/:id/teams','getTeams','getLists','/:id/agents','getAgents','getVoicePrefixes','/:id/fax_accounts','/:id/mail_accounts','/:id/openchannel_accounts','getOpenchannelAccounts','/:id/sms_accounts','getChatWebsites','/:id/whatsapp_accounts','getWhatsappAccounts','/:id/scheduled_calls','getScheduledCalls','getApiKey','post','addContacts','create','bulkCreate','addQueues','diskStorage','format','now','addAvatar','/:id/login','login','/:id/logout','logout','pause','/:id/unpause'];(function(_0x2d7589,_0x4f62f8){var _0x5161b2=function(_0x579668){while(--_0x579668){_0x2d7589['push'](_0x2d7589['shift']());}};_0x5161b2(++_0x4f62f8);}(_0xc4e6,0x1d9));var _0x6c4e=function(_0x4b0290,_0x188c34){_0x4b0290=_0x4b0290-0x0;var _0x4bd9f4=_0xc4e6[_0x4b0290];return _0x4bd9f4;};'use strict';var multer=require(_0x6c4e('0x0'));var util=require(_0x6c4e('0x1'));var path=require('path');var timeout=require(_0x6c4e('0x2'));var express=require(_0x6c4e('0x3'));var router=express[_0x6c4e('0x4')]();var fs_extra=require(_0x6c4e('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x6c4e('0x6'));var config=require(_0x6c4e('0x7'));var controller=require(_0x6c4e('0x8'));router['get']('/',auth[_0x6c4e('0x9')](),controller['index']);router['get'](_0x6c4e('0xa'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0xb')]);router[_0x6c4e('0xc')](_0x6c4e('0xd'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0xe')]);router[_0x6c4e('0xc')](_0x6c4e('0xf'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x10')]);router[_0x6c4e('0xc')]('/:id',auth['isAuthenticated'](),controller[_0x6c4e('0x11')]);router[_0x6c4e('0xc')](_0x6c4e('0x12'),controller['getAvatar']);router[_0x6c4e('0xc')](_0x6c4e('0x13'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x14')]);router['get'](_0x6c4e('0x15'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x16')]);router[_0x6c4e('0xc')](_0x6c4e('0x17'),auth['isAuthenticated'](),controller[_0x6c4e('0x18')]);router[_0x6c4e('0xc')](_0x6c4e('0x19'),auth['isAuthenticated'](),controller['getVoiceQueuesRt']);router['get']('/:id/groups',auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x1a')]);router[_0x6c4e('0xc')]('/:id/recordings',auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x1b')]);router['get'](_0x6c4e('0x1c'),auth['isAuthenticated'](),controller[_0x6c4e('0x1d')]);router[_0x6c4e('0xc')](_0x6c4e('0x1e'),auth[_0x6c4e('0x9')](),controller['getChatInteractions']);router[_0x6c4e('0xc')](_0x6c4e('0x1f'),auth['isAuthenticated'](),controller[_0x6c4e('0x20')]);router[_0x6c4e('0xc')](_0x6c4e('0x21'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x22')]);router['get'](_0x6c4e('0x23'),auth[_0x6c4e('0x9')](),controller['getSmsInteractions']);router['get'](_0x6c4e('0x24'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x25')]);router[_0x6c4e('0xc')](_0x6c4e('0x26'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x27')]);router['get'](_0x6c4e('0x28'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x29')]);router[_0x6c4e('0xc')]('/:id/lists',auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x2a')]);router[_0x6c4e('0xc')](_0x6c4e('0x2b'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x2c')]);router[_0x6c4e('0xc')]('/:id/prefixes',auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x2d')]);router['get'](_0x6c4e('0x2e'),auth[_0x6c4e('0x9')](),controller['getFaxAccounts']);router['get'](_0x6c4e('0x2f'),auth[_0x6c4e('0x9')](),controller['getMailAccounts']);router[_0x6c4e('0xc')](_0x6c4e('0x30'),auth['isAuthenticated'](),controller[_0x6c4e('0x31')]);router['get'](_0x6c4e('0x32'),auth[_0x6c4e('0x9')](),controller['getSmsAccounts']);router[_0x6c4e('0xc')]('/:id/chat_websites',auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x33')]);router['get'](_0x6c4e('0x34'),auth['isAuthenticated'](),controller[_0x6c4e('0x35')]);router[_0x6c4e('0xc')](_0x6c4e('0x36'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x37')]);router[_0x6c4e('0xc')]('/:id/api_key',auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x38')]);router[_0x6c4e('0x39')](_0x6c4e('0x15'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x3a')]);router[_0x6c4e('0x39')]('/',auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x3b')]);router['post']('/create_many',auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x3c')]);router[_0x6c4e('0x39')](_0x6c4e('0x17'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x3d')]);var upload=multer({'storage':multer[_0x6c4e('0x3e')]({'destination':function(_0x27aaa2,_0x385be7,_0x58e446){_0x58e446(null,path['join'](config['root'],'server/files/images/'));},'filename':function(_0x47da46,_0x2d2755,_0x2fe749){_0x2fe749(null,util[_0x6c4e('0x3f')]('%s-%s',Date[_0x6c4e('0x40')](),_0x2d2755['originalname']));}})});router[_0x6c4e('0x39')](_0x6c4e('0x12'),upload['single']('file'),controller[_0x6c4e('0x41')]);router[_0x6c4e('0x39')](_0x6c4e('0x42'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x43')]);router[_0x6c4e('0x39')](_0x6c4e('0x44'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x45')]);router[_0x6c4e('0x39')]('/:id/pause',auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x46')]);router[_0x6c4e('0x39')](_0x6c4e('0x47'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x48')]);router[_0x6c4e('0x39')](_0x6c4e('0x28'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x49')]);router[_0x6c4e('0x39')]('/:id/chat_interactions',auth[_0x6c4e('0x9')](),controller['addChatInteractions']);router[_0x6c4e('0x39')](_0x6c4e('0x4a'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x4b')]);router['post'](_0x6c4e('0x4c'),auth['isAuthenticated'](),controller[_0x6c4e('0x4d')]);router['post'](_0x6c4e('0x4e'),auth['isAuthenticated'](),controller['addSmsInteractions']);router[_0x6c4e('0x39')](_0x6c4e('0x4f'),auth[_0x6c4e('0x9')](),controller['addOpenchannelInteractions']);router[_0x6c4e('0x39')](_0x6c4e('0x50'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x51')]);router[_0x6c4e('0x39')](_0x6c4e('0x2e'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x52')]);router['post']('/:id/mail_accounts',auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x53')]);router['post'](_0x6c4e('0x30'),auth['isAuthenticated'](),controller[_0x6c4e('0x54')]);router[_0x6c4e('0x39')](_0x6c4e('0x32'),auth['isAuthenticated'](),controller['addSmsAccounts']);router[_0x6c4e('0x39')](_0x6c4e('0x55'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x56')]);router[_0x6c4e('0x39')]('/:id/whatsapp_accounts',auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x57')]);router['post'](_0x6c4e('0x58'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x59')]);router[_0x6c4e('0x5a')](_0x6c4e('0x5b'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x5c')]);router[_0x6c4e('0x5a')](_0x6c4e('0x5d'),auth['isAuthenticated'](),controller['changePassword']);router[_0x6c4e('0x5e')](_0x6c4e('0x17'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x5f')]);router[_0x6c4e('0x5e')](_0x6c4e('0x28'),auth['isAuthenticated'](),controller['removeTeams']);router['delete']('/:id',auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x60')]);router[_0x6c4e('0x5e')](_0x6c4e('0x61'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x62')]);router[_0x6c4e('0x5e')](_0x6c4e('0x4a'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x63')]);router['delete'](_0x6c4e('0x4c'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x64')]);router[_0x6c4e('0x5e')](_0x6c4e('0x4e'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x65')]);router[_0x6c4e('0x5e')](_0x6c4e('0x4f'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x66')]);router['delete']('/:id/whatsapp_interactions',auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x67')]);router['delete'](_0x6c4e('0x2e'),auth[_0x6c4e('0x9')](),controller['removeFaxAccounts']);router[_0x6c4e('0x5e')](_0x6c4e('0x2f'),auth['isAuthenticated'](),controller[_0x6c4e('0x68')]);router[_0x6c4e('0x5e')](_0x6c4e('0x30'),auth['isAuthenticated'](),controller['removeOpenchannelAccounts']);router[_0x6c4e('0x5e')](_0x6c4e('0x32'),auth['isAuthenticated'](),controller[_0x6c4e('0x69')]);router['delete']('/:id/chat_websites',auth[_0x6c4e('0x9')](),controller['removeChatWebsites']);router[_0x6c4e('0x5e')](_0x6c4e('0x34'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x6a')]);router[_0x6c4e('0x5e')](_0x6c4e('0x58'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x6b')]);module[_0x6c4e('0x6c')]=router;
\ No newline at end of file
index 3afb27d..153e79e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['isArray','wss','encryption','force_avp','icesupport','dtlsenable','dtlsverify','dtlssetup','dtlscertfile','rtcp_mux','avpf','/etc/pki/tls/certs/motion.crt','dtlsprivatekey','permissions','map','phoneBarEnableScreenRecordingByAgent','string','true','false','screenrecording','blockedAt','sequelize','moment','util','lodash','STRING','name','setDataValue','defaultuser','fullname','callerid','format','\x22%s\x22\x20<%s>','getDataValue','internal','email','toLowerCase','ENUM','admin','agent','telephone','local','INTEGER','accountcode','BOOLEAN','DEFAULT\x20PAUSE','DATE','dynamic','friend','from-sip','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','udp','transport','join','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','shortinfo','inband','yes','nonat','update','outgoing','force_rport,comedia','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]','insecure','never','\x22\x22\x20<>','always','accept','refuse','originate','uac','uas','certificate','passive','actpass','update,nonat','TEXT','showWebBar','get'];(function(_0x58cc3e,_0x1c29f4){var _0x3cd43e=function(_0x292a70){while(--_0x292a70){_0x58cc3e['push'](_0x58cc3e['shift']());}};_0x3cd43e(++_0x1c29f4);}(_0x34e8,0x12c));var _0x834e=function(_0xb58d13,_0xf6d668){_0xb58d13=_0xb58d13-0x0;var _0x28d2fc=_0x34e8[_0xb58d13];return _0x28d2fc;};'use strict';var Sequelize=require(_0x834e('0x0'));var moment=require(_0x834e('0x1'));var util=require(_0x834e('0x2'));var _=require(_0x834e('0x3'));module['exports']={'name':{'type':Sequelize[_0x834e('0x4')],'allowNull':![],'unique':_0x834e('0x5'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x472111){this[_0x834e('0x6')](_0x834e('0x5'),_0x472111);this[_0x834e('0x6')](_0x834e('0x7'),_0x472111);},'comment':'The\x20name\x20of\x20the\x20user'},'fullname':{'type':Sequelize[_0x834e('0x4')],'allowNull':![],'set':function(_0x52056d){this[_0x834e('0x6')](_0x834e('0x8'),_0x52056d);this[_0x834e('0x6')](_0x834e('0x9'),util[_0x834e('0xa')](_0x834e('0xb'),_0x52056d,this[_0x834e('0xc')](_0x834e('0xd'))));}},'alias':{'type':Sequelize[_0x834e('0x4')]},'email':{'type':Sequelize[_0x834e('0x4')],'allowNull':![],'unique':_0x834e('0xe'),'validate':{'isEmail':!![]},'set':function(_0x36e124){if(_0x36e124){this[_0x834e('0x6')](_0x834e('0xe'),_0x36e124[_0x834e('0xf')]());}}},'role':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x11'),'user',_0x834e('0x12'),_0x834e('0x13')),'allowNull':![]},'password':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize[_0x834e('0x4')],'defaultValue':_0x834e('0x14')},'internal':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':![],'unique':_0x834e('0xd'),'set':function(_0x50e860){this[_0x834e('0x6')](_0x834e('0xd'),_0x50e860);this['setDataValue'](_0x834e('0x16'),_0x50e860);this['setDataValue'](_0x834e('0x9'),util[_0x834e('0xa')]('\x22%s\x22\x20<%s>',this[_0x834e('0xc')](_0x834e('0x8')),_0x50e860));}},'salt':{'type':Sequelize[_0x834e('0x4')]},'phone':{'type':Sequelize['STRING']},'mobile':{'type':Sequelize[_0x834e('0x4')]},'address':{'type':Sequelize[_0x834e('0x4')]},'zipcode':{'type':Sequelize[_0x834e('0x4')]},'userpic':{'type':Sequelize[_0x834e('0x4')]},'city':{'type':Sequelize[_0x834e('0x4')]},'country':{'type':Sequelize[_0x834e('0x4')]},'online':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize['DATE']},'voicePause':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'faxPause':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'smsPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'pauseType':{'type':Sequelize['STRING'],'defaultValue':_0x834e('0x18')},'lastPauseAt':{'type':Sequelize[_0x834e('0x19')]},'chatCapacity':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x0},'mailCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'faxCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0x834e('0x17')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize['INTEGER'](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0x834e('0x15')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'chanspy':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'host':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x834e('0x1a')},'ipaddr':{'type':Sequelize['STRING'],'allowNull':!![]},'port':{'type':Sequelize[_0x834e('0x15')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'regserver':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'useragent':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'lastms':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'type':{'type':Sequelize['ENUM']('friend','user','peer'),'allowNull':!![],'defaultValue':_0x834e('0x1b')},'context':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![],'defaultValue':_0x834e('0x1c')},'callingpres':{'type':Sequelize['ENUM'](_0x834e('0x1d'),_0x834e('0x1e'),_0x834e('0x1f'),_0x834e('0x20'),_0x834e('0x21'),_0x834e('0x22'),_0x834e('0x23'),_0x834e('0x24')),'allowNull':!![]},'deny':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'permit':{'type':Sequelize['STRING'],'allowNull':!![]},'secret':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'md5secret':{'type':Sequelize['STRING'],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'transport':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![],'defaultValue':_0x834e('0x25'),'set':function(_0x2b3418){this[_0x834e('0x6')](_0x834e('0x26'),_0x2b3418?_0x2b3418[_0x834e('0x27')](','):null);},'get':function(){return this[_0x834e('0xc')](_0x834e('0x26'))?this[_0x834e('0xc')]('transport')[_0x834e('0x28')](','):null;},'comment':_0x834e('0x29')},'dtmfmode':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2a'),'info',_0x834e('0x2b'),_0x834e('0x2c'),'auto'),'allowNull':!![],'defaultValue':'rfc2833'},'directmedia':{'type':Sequelize['ENUM'](_0x834e('0x2d'),'no',_0x834e('0x2e'),_0x834e('0x2f'),_0x834e('0x30')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2d'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize['STRING'],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'nat':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x834e('0x31'),'set':function(_0x6a3ac){this['setDataValue'](_0x834e('0x32'),_0x6a3ac?_0x6a3ac[_0x834e('0x27')](','):null);},'get':function(){return this['getDataValue']('nat')?this[_0x834e('0xc')](_0x834e('0x32'))[_0x834e('0x28')](','):null;},'comment':_0x834e('0x33')},'callgroup':{'type':Sequelize[_0x834e('0x4')]},'namedcallgroup':{'type':Sequelize['STRING']},'pickupgroup':{'type':Sequelize[_0x834e('0x4')]},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize['STRING'],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x834e('0x4')]},'disallow':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x834e('0x34')},'allow':{'type':Sequelize[_0x834e('0x4')],'allowNull':![],'defaultValue':_0x834e('0x35'),'set':function(_0x3c59af){this[_0x834e('0x6')]('allow',_0x3c59af?_0x3c59af[_0x834e('0x27')](';'):_0x834e('0x35'));},'get':function(){return this[_0x834e('0xc')]('allow')?this[_0x834e('0xc')](_0x834e('0x36'))['split'](';'):null;},'comment':_0x834e('0x37')},'autoframing':{'type':Sequelize['ENUM'](_0x834e('0x2d'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![],'set':function(_0x4a18bb){this['setDataValue'](_0x834e('0x38'),_0x4a18bb?_0x4a18bb[_0x834e('0x27')](','):null);},'get':function(){return this[_0x834e('0xc')](_0x834e('0x38'))?this[_0x834e('0xc')](_0x834e('0x38'))[_0x834e('0x28')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]'},'trustrpid':{'type':Sequelize[_0x834e('0x10')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x834e('0x10')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x834e('0x10')]('yes','no',_0x834e('0x39')),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0x834e('0x10')]('yes','no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2d'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'callerid':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![],'defaultValue':_0x834e('0x3a')},'amaflags':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'callcounter':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2d'),'no'),'allowNull':!![],'defaultValue':_0x834e('0x2d')},'busylevel':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2d'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize['ENUM'](_0x834e('0x2d'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2d'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2d'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'template':{'type':Sequelize['STRING'],'allowNull':!![]},'videosupport':{'type':Sequelize['ENUM'](_0x834e('0x2d'),'no',_0x834e('0x3b')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2d'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x3c'),_0x834e('0x3d'),_0x834e('0x3e')),'allowNull':!![]},'session_expires':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x3f'),_0x834e('0x40')),'allowNull':!![],'defaultValue':_0x834e('0x40')},'t38pt_usertpsource':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'regexten':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'qualify':{'type':Sequelize['ENUM'](_0x834e('0x2d'),'no'),'allowNull':!![],'defaultValue':_0x834e('0x2d')},'keepalive':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'rtptimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2d'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'timert1':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize[_0x834e('0x10')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0x834e('0x10')]('yes','no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0x834e('0x10')]('yes','no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0x834e('0x10')]('yes','no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize['ENUM'](_0x834e('0x2d'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0x834e('0x10')]('yes','no','fingerprint',_0x834e('0x41')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0x834e('0x10')]('active',_0x834e('0x42'),_0x834e('0x43')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize['STRING'],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0x834e('0x10')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'call_limit':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2d'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2d'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize['STRING'],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'canreinvite':{'type':Sequelize['ENUM'](_0x834e('0x2d'),'no',_0x834e('0x2e'),_0x834e('0x2f'),_0x834e('0x44')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0x834e('0x4')]},'resetPasswordExpires':{'type':Sequelize[_0x834e('0x19')]},'passwordResetAt':{'type':Sequelize[_0x834e('0x19')],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0x834e('0x45')]},'showWebBar':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x0,'set':function(_0x1e4310){this[_0x834e('0x6')](_0x834e('0x46'),_0x1e4310);var _0x1659c8=this[_0x834e('0x47')]({'plain':!![]});switch(_0x1e4310){case 0x0:case 0x1:var _0x17b8e3=_0x1659c8[_0x834e('0x26')]?_[_0x834e('0x48')](_0x1659c8[_0x834e('0x26')])?_0x1659c8[_0x834e('0x26')][_0x834e('0x27')]():_0x1659c8[_0x834e('0x26')]:'udp';if(_0x17b8e3===_0x834e('0x49')){_0x17b8e3=_0x834e('0x25');}this[_0x834e('0x6')](_0x834e('0x26'),_0x17b8e3);this['setDataValue'](_0x834e('0x4a'),'no');this['setDataValue']('avpf',null);this[_0x834e('0x6')](_0x834e('0x4b'),null);this[_0x834e('0x6')](_0x834e('0x4c'),null);this[_0x834e('0x6')](_0x834e('0x4d'),null);this[_0x834e('0x6')](_0x834e('0x4e'),null);this['setDataValue'](_0x834e('0x4f'),null);this['setDataValue'](_0x834e('0x50'),null);this[_0x834e('0x6')]('dtlsprivatekey',null);this['setDataValue'](_0x834e('0x51'),'no');break;case 0x2:this[_0x834e('0x6')](_0x834e('0x26'),_0x834e('0x49'));this[_0x834e('0x6')]('encryption',_0x834e('0x2d'));this[_0x834e('0x6')](_0x834e('0x52'),_0x834e('0x2d'));this[_0x834e('0x6')](_0x834e('0x4b'),_0x834e('0x2d'));this[_0x834e('0x6')](_0x834e('0x4c'),_0x834e('0x2d'));this['setDataValue'](_0x834e('0x4d'),_0x834e('0x2d'));this[_0x834e('0x6')](_0x834e('0x4e'),'no');this['setDataValue'](_0x834e('0x4f'),'actpass');this['setDataValue']('dtlscertfile',_0x1659c8[_0x834e('0x50')]||_0x834e('0x53'));this['setDataValue'](_0x834e('0x54'),_0x1659c8[_0x834e('0x54')]||'/etc/pki/tls/private/motion.key');this[_0x834e('0x6')](_0x834e('0x51'),'yes');break;default:}}},'permissions':{'type':Sequelize['TEXT'],'set':function(_0x346be5){this[_0x834e('0x6')](_0x834e('0x55'),_0x346be5?_0x346be5[_0x834e('0x27')](','):[]);},'get':function(){return this[_0x834e('0xc')]('permissions')?_[_0x834e('0x56')](this['getDataValue'](_0x834e('0x55'))[_0x834e('0x28')](','),function(_0x2c758c){return parseInt(_0x2c758c,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize['STRING']},'phoneBarNoReplyNumber':{'type':Sequelize[_0x834e('0x4')]},'phoneBarBusyNumber':{'type':Sequelize[_0x834e('0x4')]},'phoneBarUnconditional':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0x834e('0x17')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0x834e('0x4')],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2d'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x834e('0x17')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0x834e('0x4')]},'phoneBarEnableJaws':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize['VIRTUAL'],'get':function(){return this['getDataValue']('phoneBarEnableScreenRecordingByAgent')?this[_0x834e('0xc')](_0x834e('0x57')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'interface':{'type':Sequelize['STRING'],'defaultValue':null},'privacyEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![],'set':function(_0x18ddac){if(typeof _0x18ddac===_0x834e('0x58')){var _0x5acf5c=_0x18ddac==='1'?!![]:_0x18ddac==='0'?![]:_0x18ddac===_0x834e('0x59')?!![]:_0x18ddac===_0x834e('0x5a')?![]:![];this[_0x834e('0x6')]('screenrecording',_0x5acf5c);}else{this[_0x834e('0x6')](_0x834e('0x5b'),_0x18ddac);}}},'blocked':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![],'set':function(_0x443633){this[_0x834e('0x6')]('blocked',_0x443633);if(_0x443633===!![]){this['setDataValue'](_0x834e('0x5c'),moment());this[_0x834e('0x6')]('loginAttempts',0x0);}else{this[_0x834e('0x6')]('blockedAt',null);}}},'blockedAt':{'type':Sequelize[_0x834e('0x19')],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x0},'disabled':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0x834e('0x15')](0x5)['UNSIGNED'],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x834e('0x17')],'defaultValue':!![]},'ignorePauseForPreviewCalls':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'selectRecallMeCampaign':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'chatAutoanswer':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'chatAutoanswerDelay':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x0},'emailAutoanswer':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'emailAutoanswerDelay':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x0},'smsAutoanswer':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'smsAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelAutoanswer':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'openchannelAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'faxAutoanswer':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'faxAutoanswerDelay':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x0},'whatsappAutoanswer':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'whatsappAutoanswerDelay':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x0}};
\ No newline at end of file
+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(_0x599f41,_0x4db732){var _0x2e4d58=function(_0x14c882){while(--_0x14c882){_0x599f41['push'](_0x599f41['shift']());}};_0x2e4d58(++_0x4db732);}(_0x9c44,0x178));var _0x49c4=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0x9c44[_0x53ccf2];return _0x5a2964;};'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
index 9fa7351..65a7f6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb10=['addChatWebsites','removeChatWebsites','getWhatsappAccounts','addWhatsappAccounts','removeWhatsappAccounts','getScheduledCalls','CmHopper','$and','$gt','$lte','$notIn','$like','$notLike','$iLike','$notILike','$overlap','$contained','firstName','lastName','Contact','dialActive','getApiKey','retrieveApiKey','token','No\x20API\x20access\x20key\x20found!','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','generateApiKey','iat','nonce','removeApiKey','apiKeyNonce','apiKeyIat','API\x20key\x20not\x20available','Unable\x20to\x20retrieve\x20the\x20current\x20user','isEmpty','teams','inbound','queues','flatten','lower','col','toString','asc','desc','substring','uniqBy','orderBy','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','idle','slice','charAt','select','field','ui.','InteractionId','ui.createdAt','user_has_','_interactions','ui.UserId\x20=\x20?','OpenTabs','util','path','lodash','squel','ioredis','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/license/util','../../errors/api','APIBadRequestError','APINotFoundError','handleError','socket.io-emitter','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','message','result','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','userNotification:recalc:','destroy','role','Users','user','Agents','agent','Telephones','telephone','filter','ignore','map','value','includes','find','name','UserProfileResource','stack','send','User','fieldName','key','password','salt','where','query','include','true','userSetting','attributes','push','findAll','openTabs','rows','length','chat','dataValues','sms','fax','mail','openchannel','all','catch','show','model','differenceBy','keys','rawAttributes','intersection','fields','includeAll','UserSetting','merge','options','update','body','params','describe','addContacts','ids','omit','internal','findById','max','isNil','min_internal','sequelize','QueryTypes','SELECT','from','mailbox','fullname','permissions','102','103','113','110','104','105','106','107','109','100','114','115','create','Unauthorized','admin','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator','checkUserLimits','settingsEnabled','userProfileId','VoiceMail','bulkCreate','some','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','UserProfileSection','oldPassword','Sequelize','ValidationError','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','authenticate','Wrong\x20credentials','newPassword','Invalid\x20body\x20format.\x20Use\x20newPassword','Setting','findOne','passwordHistoryLimit','validatePasswordPattern','previousPasswords','validatePasswordHistory','updatePasswordsHistory','addQueues','online','interface','Unknown\x20channel','capitalize','Queues','penalty','spread','toLowerCase','emit','Queue:save','voice','VoiceQueue','get','SIP/%s','voicePause','UserVoiceQueueRt','upsert','channel','isValidChannel','remove','isArray','QueueId','Queue:remove','userpic','file','filename','getAvatar','join','root','server/files/images/logos/default_profile.png','download','existsSync','server/files/images/','getOpenTabs','CHAT','createdAt','FaxOpenTabs','OPENCHANNEL','MailOpenTabs','MAIL','SmsOpenTabs','SMS','WhatsappOpenTabs','WHATSAPP','getContacts','CmContact','filters','pick','hasOwnProperty','CmList','List','Tag','Tags','tag','Queue','order','sort','Unknown\x20role','nolimit','getVoiceQueuesRt','getGroups','ChatGroup','VoiceRecording','UserId','ScreenRecording','getChatInteractions','ChatInteraction','getOpenchannelInteractions','OpenchannelInteraction','getMailInteractions','MailInteraction','getSmsInteractions','SmsInteraction','getFaxInteractions','FaxInteraction','getWhatsappInteractions','login','phone','mobile','loginInPause','intrf','format','user:%s','headers','x-forwarded-for','connection','socket','remoteAddress','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','UserVoiceQueue.penalty','forEach','YYYY-MM-DD\x20HH:mm:ss','device','PAUSE','LOGININPAUSE','MemberReport','concat','isMiddleware','logout','QueuePause','pause','getChannels','type','DEFAULT\x20PAUSE','unpause','Channel\x20parameter\x20%s\x20is\x20invalid','mailPause','chatPause','faxPause','smsPause','whatsappPause','pauseType','lastPauseAt','Team','getTeams','addTeams','resolve','Body\x20parameter\x20\x27ids\x27\x20is\x20required','User\x20with\x20id\x20%s\x20not\x20found','transaction','getAssociatedQueues','flattenDeep','addAgent','getDataValue','Voice','UserVoicePrefix','VoicePrefixId','Query\x20parameter\x20\x27ids\x27\x20is\x20required','removeTeams','removeAgent','TeamVoicePrefix','getLists','getAgents','values','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','user_has_chat_interactions:save','removeChatInteractions','user_has_chat_interactions:remove','addMailInteractions','user_has_mail_interactions:save','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','user_has_fax_interactions:save','removeFaxInteractions','user_has_fax_interactions:remove','addSmsInteractions','user_has_sms_interactions:save','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','user_has_openchannel_interactions:save','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','addWhatsappInteractions','user_has_whatsapp_interactions:save','removeWhatsappInteractions','getVoicePrefixes','VoicePrefix','getFaxAccounts','FaxAccount','addFaxAccounts','removeFaxAccounts','getMailAccounts','MailAccount','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','addOpenchannelAccounts','getSmsAccounts','SmsAccount','addSmsAccounts','removeSmsAccounts','getChatWebsites','ChatWebsite'];(function(_0x541180,_0x3fc094){var _0x298220=function(_0x2edfb9){while(--_0x2edfb9){_0x541180['push'](_0x541180['shift']());}};_0x298220(++_0x3fc094);}(_0xeb10,0x1c7));var _0x0eb1=function(_0x5299d0,_0x4a6a1a){_0x5299d0=_0x5299d0-0x0;var _0x53beb2=_0xeb10[_0x5299d0];return _0x53beb2;};'use strict';var moment=require('moment');var util=require(_0x0eb1('0x0'));var path=require(_0x0eb1('0x1'));var fs=require('fs');var _=require(_0x0eb1('0x2'));var squel=require(_0x0eb1('0x3'));var jayson=require('jayson/promise');var Redis=require(_0x0eb1('0x4'));var authService=require(_0x0eb1('0x5'));var qs=require('../../components/parsers/qs');var logger=require(_0x0eb1('0x6'))(_0x0eb1('0x7'));var utils=require(_0x0eb1('0x8'));var config=require('../../config/environment');var licenseUtil=require(_0x0eb1('0x9'));var APIBadRequestError=require(_0x0eb1('0xa'))[_0x0eb1('0xb')];var APINotFoundError=require(_0x0eb1('0xa'))[_0x0eb1('0xc')];var APIHandleError=require(_0x0eb1('0xa'))[_0x0eb1('0xd')];var db=require('../../mysqldb')['db'];var socket=require(_0x0eb1('0xe'))(new Redis(config[_0x0eb1('0xf')]));require(_0x0eb1('0x10'))[_0x0eb1('0x11')](socket);config[_0x0eb1('0xf')]=_['defaults'](config['redis'],{'host':_0x0eb1('0x12'),'port':0x18eb});var amiClient=jayson[_0x0eb1('0x13')][_0x0eb1('0x14')]({'port':0x232a});var values;function respondWithRpcPromise(_0x5d16ae,_0x183c2b,_0x4c19bd,_0xe32ada){return new Promise(function(_0x329c33,_0x2d5aab){var _0x48370c=_0xe32ada||amiClient;return _0x48370c[_0x0eb1('0x15')](_0x5d16ae,_0x4c19bd)[_0x0eb1('0x16')](function(_0x3cfbb3){logger[_0x0eb1('0x17')](_0x0eb1('0x18'),_0x183c2b,_0x0eb1('0x19'));logger[_0x0eb1('0x1a')](_0x0eb1('0x1b'),_0x183c2b,_0x0eb1('0x19'),JSON[_0x0eb1('0x1c')](_0x3cfbb3));if(_0x3cfbb3[_0x0eb1('0x1d')]){if(_0x3cfbb3[_0x0eb1('0x1d')]['code']===0x1f4){logger[_0x0eb1('0x1d')]('User,\x20%s,\x20%s',_0x183c2b,_0x3cfbb3[_0x0eb1('0x1d')][_0x0eb1('0x1e')]);return _0x2d5aab(_0x3cfbb3[_0x0eb1('0x1d')][_0x0eb1('0x1e')]);}logger[_0x0eb1('0x1d')](_0x0eb1('0x18'),_0x183c2b,_0x3cfbb3[_0x0eb1('0x1d')][_0x0eb1('0x1e')]);return _0x329c33(_0x3cfbb3[_0x0eb1('0x1d')][_0x0eb1('0x1e')]);}else{logger['info'](_0x0eb1('0x18'),_0x183c2b,_0x0eb1('0x19'));_0x329c33(_0x3cfbb3[_0x0eb1('0x1f')]['message']);}})['catch'](function(_0x5dd6f3){logger[_0x0eb1('0x1d')](_0x0eb1('0x18'),_0x183c2b,_0x5dd6f3);_0x2d5aab(_0x5dd6f3);});});}function respondWithStatusCode(_0x1862d5,_0x59f35b){_0x59f35b=_0x59f35b||0xcc;return function(_0x38c454){if(_0x38c454){return _0x1862d5[_0x0eb1('0x20')](_0x59f35b);}return _0x1862d5[_0x0eb1('0x21')](_0x59f35b)[_0x0eb1('0x22')]();};}function respondWithResult(_0x319ef8,_0x89d0c6){_0x89d0c6=_0x89d0c6||0xc8;return function(_0xee0c9e){if(_0xee0c9e){return _0x319ef8['status'](_0x89d0c6)[_0x0eb1('0x23')](_0xee0c9e);}};}function respondWithFilteredResult(_0x4c4233,_0x1479f0){return function(_0x37642b){if(_0x37642b){var _0x16c7d5=typeof _0x1479f0[_0x0eb1('0x24')]===_0x0eb1('0x25')&&typeof _0x1479f0[_0x0eb1('0x26')]===_0x0eb1('0x25');var _0x24d487=_0x37642b['count'];var _0xc0b8af=_0x16c7d5?0x0:_0x1479f0[_0x0eb1('0x24')];var _0xe2b162=_0x16c7d5?_0x37642b[_0x0eb1('0x27')]:_0x1479f0[_0x0eb1('0x24')]+_0x1479f0[_0x0eb1('0x26')];var _0x4a1e71;if(_0xe2b162>=_0x24d487){_0xe2b162=_0x24d487;_0x4a1e71=0xc8;}else{_0x4a1e71=0xce;}_0x4c4233[_0x0eb1('0x21')](_0x4a1e71);return _0x4c4233[_0x0eb1('0x28')](_0x0eb1('0x29'),_0xc0b8af+'-'+_0xe2b162+'/'+_0x24d487)['json'](_0x37642b);}return null;};}function saveUpdates(_0x51968b){return function(_0x56437a){if(_0x56437a){return _0x56437a['update'](_0x51968b)[_0x0eb1('0x16')](function(_0x213a0c){socket['emit'](_0x0eb1('0x2a')+_0x213a0c['id'],{});return _0x213a0c;});}return null;};}function removeEntity(_0x28837c){return function(_0x339b35){if(_0x339b35){return _0x339b35[_0x0eb1('0x2b')]()[_0x0eb1('0x16')](function(){var _0x33c45f=_0x339b35['get']({'plain':!![]});if(_0x33c45f[_0x0eb1('0x2c')]==='admin')return;var _0x3434e3=[{'name':_0x0eb1('0x2d'),'value':_0x0eb1('0x2e'),'ignore':!![]},{'name':_0x0eb1('0x2f'),'value':_0x0eb1('0x30'),'ignore':![]},{'name':_0x0eb1('0x31'),'value':_0x0eb1('0x32'),'ignore':![]}];var _0x4df96b=_(_0x3434e3)[_0x0eb1('0x33')](_0x0eb1('0x34'))[_0x0eb1('0x35')](_0x0eb1('0x36'))[_0x0eb1('0x36')]();if(_[_0x0eb1('0x37')](_0x4df96b,_0x33c45f[_0x0eb1('0x2c')])){return;}var _0x42c531=_[_0x0eb1('0x38')](_0x3434e3,['value',_0x33c45f['role']])[_0x0eb1('0x39')];return db[_0x0eb1('0x3a')][_0x0eb1('0x2b')]({'where':{'type':_0x42c531,'resourceId':_0x33c45f['id']}})['then'](function(){return _0x339b35;});})[_0x0eb1('0x16')](function(){_0x28837c[_0x0eb1('0x21')](0xcc)[_0x0eb1('0x22')]();});}};}function handleEntityNotFound(_0x4033b6){return function(_0x341787){if(!_0x341787){_0x4033b6['sendStatus'](0x194);}return _0x341787;};}function handleError(_0x326cd4,_0x189b5e){_0x189b5e=_0x189b5e||0x1f4;return function(_0x2c3bb6){logger[_0x0eb1('0x1d')](_0x2c3bb6[_0x0eb1('0x3b')]);if(_0x2c3bb6[_0x0eb1('0x39')]){delete _0x2c3bb6[_0x0eb1('0x39')];}_0x326cd4[_0x0eb1('0x21')](_0x189b5e)[_0x0eb1('0x3c')](_0x2c3bb6);};}exports['index']=function(_0x2d7f62,_0x222351){var _0x565a6b={},_0x5596dc={'count':0x0,'rows':[]};var _0x331a04=_(db[_0x0eb1('0x3d')]['rawAttributes'])[_0x0eb1('0x35')](function(_0xa60df4){return{'name':_0xa60df4[_0x0eb1('0x3e')],'type':_0xa60df4['type'][_0x0eb1('0x3f')]};})[_0x0eb1('0x33')](function(_0x3051c7){return!_['includes']([_0x0eb1('0x40'),_0x0eb1('0x41')],_0x3051c7['name']);})[_0x0eb1('0x36')]();_0x565a6b=qs['getOptions'](_0x331a04,_0x2d7f62);var _0x463131={'where':_0x565a6b[_0x0eb1('0x42')]};return db[_0x0eb1('0x3d')]['count'](_0x463131)['then'](function(_0x2bfcec){_0x5596dc[_0x0eb1('0x27')]=_0x2bfcec;if(_0x2d7f62[_0x0eb1('0x43')]['includeAll']){_0x565a6b[_0x0eb1('0x44')]=[{'all':!![]}];}if(_0x2d7f62[_0x0eb1('0x43')]['userSetting']===_0x0eb1('0x45')){_0x565a6b[_0x0eb1('0x44')]=[{'model':db['UserSetting'],'as':_0x0eb1('0x46')}];}if(!_['includes'](_0x565a6b[_0x0eb1('0x47')],'id')){_0x565a6b[_0x0eb1('0x47')][_0x0eb1('0x48')]('id');}return db['User'][_0x0eb1('0x49')](_0x565a6b);})[_0x0eb1('0x16')](function(_0x5f1bd7){_0x5596dc['rows']=_0x5f1bd7;if(_0x2d7f62[_0x0eb1('0x43')][_0x0eb1('0x4a')]==='true'){var _0x4849ca=[];for(var _0x37be1c=0x0;_0x37be1c<_0x5596dc[_0x0eb1('0x4b')][_0x0eb1('0x4c')];_0x37be1c++){_0x4849ca['push'](get_open_tabs(_0x0eb1('0x4d'),_0x5596dc[_0x0eb1('0x4b')][_0x37be1c][_0x0eb1('0x4e')]));_0x4849ca[_0x0eb1('0x48')](get_open_tabs(_0x0eb1('0x4f'),_0x5596dc[_0x0eb1('0x4b')][_0x37be1c][_0x0eb1('0x4e')]));_0x4849ca[_0x0eb1('0x48')](get_open_tabs(_0x0eb1('0x50'),_0x5596dc['rows'][_0x37be1c][_0x0eb1('0x4e')]));_0x4849ca['push'](get_open_tabs(_0x0eb1('0x51'),_0x5596dc[_0x0eb1('0x4b')][_0x37be1c][_0x0eb1('0x4e')]));_0x4849ca[_0x0eb1('0x48')](get_open_tabs(_0x0eb1('0x52'),_0x5596dc['rows'][_0x37be1c]['dataValues']));_0x4849ca[_0x0eb1('0x48')](get_open_tabs('whatsapp',_0x5596dc['rows'][_0x37be1c]['dataValues']));}return Promise[_0x0eb1('0x53')](_0x4849ca)[_0x0eb1('0x16')](function(){return _0x5596dc;});}else{return _0x5596dc;}})[_0x0eb1('0x16')](respondWithFilteredResult(_0x222351,_0x565a6b))[_0x0eb1('0x54')](handleError(_0x222351,null));};exports[_0x0eb1('0x55')]=function(_0xb06b4f,_0x1a0478){var _0x277494={'raw':![],'where':{'id':_0xb06b4f['params']['id']}},_0x5036ea={};_0x5036ea[_0x0eb1('0x56')]=_[_0x0eb1('0x57')](_[_0x0eb1('0x58')](db[_0x0eb1('0x3d')][_0x0eb1('0x59')]),[_0x0eb1('0x40'),_0x0eb1('0x41')]);_0x5036ea['query']=_[_0x0eb1('0x58')](_0xb06b4f[_0x0eb1('0x43')]);_0x5036ea['filters']=_[_0x0eb1('0x5a')](_0x5036ea['model'],_0x5036ea[_0x0eb1('0x43')]);_0x277494[_0x0eb1('0x47')]=_['intersection'](_0x5036ea[_0x0eb1('0x56')],qs[_0x0eb1('0x5b')](_0xb06b4f[_0x0eb1('0x43')][_0x0eb1('0x5b')]));_0x277494['attributes']=_0x277494[_0x0eb1('0x47')]['length']?_0x277494[_0x0eb1('0x47')]:_0x5036ea[_0x0eb1('0x56')];if(_0xb06b4f[_0x0eb1('0x43')][_0x0eb1('0x5c')]){_0x277494[_0x0eb1('0x44')]=[{'all':!![]}];}if(_0xb06b4f['query'][_0x0eb1('0x46')]===_0x0eb1('0x45')){_0x277494['include']=[{'model':db[_0x0eb1('0x5d')],'as':_0x0eb1('0x46')}];}_0x277494=_[_0x0eb1('0x5e')]({},_0x277494,_0xb06b4f[_0x0eb1('0x5f')]);if(!_[_0x0eb1('0x37')](_0x277494[_0x0eb1('0x47')],'id')){_0x277494[_0x0eb1('0x47')][_0x0eb1('0x48')]('id');}return db[_0x0eb1('0x3d')][_0x0eb1('0x38')](_0x277494)[_0x0eb1('0x16')](handleEntityNotFound(_0x1a0478,null))[_0x0eb1('0x16')](function(_0x484704){var _0x36afcd=[];values=_0x484704;if(_0xb06b4f[_0x0eb1('0x43')][_0x0eb1('0x4a')]==='true'){_0x36afcd['push'](get_open_tabs(_0x0eb1('0x4d'),_0x484704[_0x0eb1('0x4e')]));_0x36afcd[_0x0eb1('0x48')](get_open_tabs(_0x0eb1('0x4f'),_0x484704[_0x0eb1('0x4e')]));_0x36afcd['push'](get_open_tabs(_0x0eb1('0x52'),_0x484704['dataValues']));_0x36afcd[_0x0eb1('0x48')](get_open_tabs('whatsapp',_0x484704[_0x0eb1('0x4e')]));_0x36afcd[_0x0eb1('0x48')](get_open_tabs('fax',_0x484704['dataValues']));_0x36afcd[_0x0eb1('0x48')](get_open_tabs(_0x0eb1('0x51'),_0x484704[_0x0eb1('0x4e')]));return Promise['all'](_0x36afcd);}else{return values;}})[_0x0eb1('0x16')](function(){return values;})[_0x0eb1('0x16')](respondWithResult(_0x1a0478,null))[_0x0eb1('0x54')](handleError(_0x1a0478,null));};exports[_0x0eb1('0x60')]=function(_0x286a42,_0x45fbea){if(_0x286a42[_0x0eb1('0x61')]['id']){delete _0x286a42[_0x0eb1('0x61')]['id'];}delete _0x286a42[_0x0eb1('0x61')][_0x0eb1('0x2c')];return db[_0x0eb1('0x3d')]['find']({'where':{'id':_0x286a42[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x45fbea,null))[_0x0eb1('0x16')](saveUpdates(_0x286a42[_0x0eb1('0x61')],null))[_0x0eb1('0x16')](respondWithResult(_0x45fbea,null))[_0x0eb1('0x54')](handleError(_0x45fbea,null));};exports[_0x0eb1('0x63')]=function(_0x3dfd87,_0x16441c){return db[_0x0eb1('0x3d')][_0x0eb1('0x63')]()[_0x0eb1('0x16')](respondWithResult(_0x16441c,null))[_0x0eb1('0x54')](handleError(_0x16441c,null));};exports[_0x0eb1('0x64')]=function(_0x1f4136,_0x5ae189){return db[_0x0eb1('0x3d')][_0x0eb1('0x38')]({'where':{'id':_0x1f4136[_0x0eb1('0x62')]['id']}})['then'](handleEntityNotFound(_0x5ae189,null))[_0x0eb1('0x16')](function(_0x24d5b1){if(_0x24d5b1){return _0x24d5b1[_0x0eb1('0x64')](_0x1f4136[_0x0eb1('0x61')][_0x0eb1('0x65')],_[_0x0eb1('0x66')](_0x1f4136[_0x0eb1('0x61')],['ids','id'])||{});}})['then'](respondWithResult(_0x5ae189,null))[_0x0eb1('0x54')](handleError(_0x5ae189,null));};function validateUser(_0x2fcbd3){return new Promise(function(_0x20216d,_0x22221b){if(_0x2fcbd3[_0x0eb1('0x67')])return _0x20216d(_0x2fcbd3);return db['Setting'][_0x0eb1('0x68')](0x1)['then'](function(_0x36d4b4){if(_0x36d4b4['securePassword'])authService['validatePasswordPattern'](_0x2fcbd3[_0x0eb1('0x40')]);db['User'][_0x0eb1('0x69')](_0x0eb1('0x67'))[_0x0eb1('0x16')](function(_0x222538){if(_[_0x0eb1('0x6a')](_0x222538)){_0x2fcbd3[_0x0eb1('0x67')]=_0x36d4b4[_0x0eb1('0x6b')]||0x1;return;}if(_[_0x0eb1('0x6a')](_0x36d4b4['min_internal'])||_0x36d4b4[_0x0eb1('0x6b')]===_0x222538){_0x2fcbd3[_0x0eb1('0x67')]=_0x222538+0x1;return;}if(_0x36d4b4[_0x0eb1('0x6b')]>_0x222538){_0x2fcbd3[_0x0eb1('0x67')]=_0x36d4b4[_0x0eb1('0x6b')];return;}return db[_0x0eb1('0x6c')]['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[_0x0eb1('0x6c')][_0x0eb1('0x6d')][_0x0eb1('0x6e')]})[_0x0eb1('0x16')](function(_0x53f5dd){if(_0x53f5dd&&_0x53f5dd['length']){for(var _0x23ac61=0x0,_0x19f306=_0x53f5dd['length'];_0x23ac61<_0x19f306&&_['isNil'](_0x2fcbd3[_0x0eb1('0x67')]);_0x23ac61++){if(_0x36d4b4['min_internal']<=_0x53f5dd[_0x23ac61][_0x0eb1('0x6f')]){_0x2fcbd3[_0x0eb1('0x67')]=_0x53f5dd[_0x23ac61][_0x0eb1('0x6f')];}else if(_0x36d4b4['min_internal']>_0x53f5dd[_0x23ac61][_0x0eb1('0x6f')]&&_0x36d4b4[_0x0eb1('0x6b')]<=_0x53f5dd[_0x23ac61]['to']){_0x2fcbd3[_0x0eb1('0x67')]=_0x36d4b4[_0x0eb1('0x6b')];}}}if(_['isNil'](_0x2fcbd3[_0x0eb1('0x67')])){_0x2fcbd3[_0x0eb1('0x67')]=_0x222538+0x1;}return _0x20216d(_0x2fcbd3);});});})[_0x0eb1('0x54')](function(_0x16011e){_0x22221b(_0x16011e);});});}function updateUser(_0x231130){return new Promise(function(_0x567939,_0xcafb59){try{if(_0x231130['voicemail']){_0x231130[_0x0eb1('0x70')]=_0x231130[_0x0eb1('0x67')];_0x231130['VoiceMail']={'mailbox':_0x231130['internal'],'password':_0x231130['password'],'fullname':_0x231130[_0x0eb1('0x71')],'email':_0x231130['email']};}if(_0x231130[_0x0eb1('0x2c')]===_0x0eb1('0x30')){if(!_0x231130[_0x0eb1('0x72')])_0x231130[_0x0eb1('0x72')]=['101',_0x0eb1('0x73'),_0x0eb1('0x74'),_0x0eb1('0x75'),_0x0eb1('0x76'),_0x0eb1('0x77'),_0x0eb1('0x78'),_0x0eb1('0x79'),_0x0eb1('0x7a'),'108',_0x0eb1('0x7b'),_0x0eb1('0x7c'),'111',_0x0eb1('0x7d'),_0x0eb1('0x7e')];}_0x567939(_0x231130);}catch(_0x29cf7f){_0xcafb59(_0x29cf7f);}});}exports[_0x0eb1('0x7f')]=function(_0x7e850a,_0x3fcaef){if(_0x7e850a[_0x0eb1('0x2e')][_0x0eb1('0x2c')]===_0x0eb1('0x30'))throw new Error(_0x0eb1('0x80'));if(_0x7e850a[_0x0eb1('0x61')][_0x0eb1('0x2c')]===_0x0eb1('0x2e')&&_0x7e850a[_0x0eb1('0x2e')]['role']!==_0x0eb1('0x81')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user');}if(_0x7e850a[_0x0eb1('0x61')]['role']===_0x0eb1('0x81')&&_0x7e850a[_0x0eb1('0x2e')][_0x0eb1('0x2c')]!==_0x0eb1('0x81')){throw new Error(_0x0eb1('0x82'));}return licenseUtil[_0x0eb1('0x83')]([_0x7e850a[_0x0eb1('0x61')]])[_0x0eb1('0x16')](function(){return validateUser(_0x7e850a['body']);})[_0x0eb1('0x16')](function(_0x483055){return updateUser(_0x483055)[_0x0eb1('0x16')](function(_0xa8f8f6){if(_0xa8f8f6[_0x0eb1('0x2c')]==='admin'){_0xa8f8f6[_0x0eb1('0x84')]=_0x7e850a['user']['settingsEnabled'];delete _0xa8f8f6[_0x0eb1('0x85')];}return _0xa8f8f6;});})['then'](function(_0xef537e){return db[_0x0eb1('0x3d')]['create'](_0xef537e,{'include':[{'model':db[_0x0eb1('0x86')],'as':'VoiceMail'}]});})['then'](function(_0x388c38){if(_0x7e850a[_0x0eb1('0x61')][_0x0eb1('0x2c')]===_0x0eb1('0x2e'))return _0x388c38;if(_0x7e850a['user'][_0x0eb1('0x2c')]!==_0x0eb1('0x2e'))return _0x388c38;return db['UserProfileSection'][_0x0eb1('0x38')]({'where':{'name':_0x388c38[_0x0eb1('0x2c')]===_0x0eb1('0x30')?_0x0eb1('0x2f'):_0x0eb1('0x31'),'userProfileId':_0x7e850a[_0x0eb1('0x2e')][_0x0eb1('0x85')]},'raw':!![]})[_0x0eb1('0x16')](function(_0x290610){if(!_0x290610||_0x290610['autoAssociation']!=0x0)return _0x388c38;return db[_0x0eb1('0x3a')][_0x0eb1('0x7f')]({'name':_0x388c38['name'],'resourceId':_0x388c38['id'],'type':_0x290610['name'],'sectionId':_0x290610['id']},{})[_0x0eb1('0x16')](function(){return _0x388c38;});})[_0x0eb1('0x54')](function(_0x1d7401){logger[_0x0eb1('0x1d')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1d7401);throw _0x1d7401;});})[_0x0eb1('0x16')](respondWithResult(_0x3fcaef,0xc9))['catch'](handleError(_0x3fcaef,null));};exports[_0x0eb1('0x87')]=function(_0x245cc2,_0x5d126d){var _0xbbad5b=_0x245cc2[_0x0eb1('0x61')];var _0x4b9098=[];if(_0x245cc2[_0x0eb1('0x2e')][_0x0eb1('0x2c')]===_0x0eb1('0x30'))throw new Error('Unauthorized');if(_[_0x0eb1('0x88')](_0xbbad5b,[_0x0eb1('0x2c'),_0x0eb1('0x2e')])&&_0x245cc2[_0x0eb1('0x2e')][_0x0eb1('0x2c')]!==_0x0eb1('0x81')){throw new Error(_0x0eb1('0x89'));}if(_['some'](_0xbbad5b,['role',_0x0eb1('0x81')])&&_0x245cc2[_0x0eb1('0x2e')][_0x0eb1('0x2c')]!==_0x0eb1('0x81')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator');}return licenseUtil[_0x0eb1('0x83')](_0xbbad5b)[_0x0eb1('0x16')](function(){return validateUser(_0xbbad5b[0x0]);})['then'](function(){for(var _0x47ca26=0x1;_0x47ca26<_0xbbad5b['length'];_0x47ca26++){var _0x27b8b1=_0xbbad5b[_0x47ca26-0x1][_0x0eb1('0x67')];if(!_0xbbad5b[_0x47ca26][_0x0eb1('0x67')])_0xbbad5b[_0x47ca26][_0x0eb1('0x67')]=_0x27b8b1+0x1;_0x4b9098[_0x0eb1('0x48')](validateUser(_0xbbad5b[_0x47ca26]));}return Promise[_0x0eb1('0x53')](_0x4b9098);})['then'](function(){_0x4b9098=[];for(var _0x403471=0x0;_0x403471<_0xbbad5b[_0x0eb1('0x4c')];_0x403471++){_0x4b9098[_0x0eb1('0x48')](updateUser(_0xbbad5b[_0x403471]));}return Promise[_0x0eb1('0x53')](_0x4b9098);})[_0x0eb1('0x16')](function(){_0x4b9098=_0xbbad5b[_0x0eb1('0x35')](function(_0xa22aba){return db[_0x0eb1('0x3d')][_0x0eb1('0x7f')](_0xa22aba,{'include':[{'model':db[_0x0eb1('0x86')],'as':'VoiceMail'}]})[_0x0eb1('0x16')](function(_0x411341){_0xa22aba['id']=_0x411341['id'];return _0xa22aba;});});return Promise[_0x0eb1('0x53')](_0x4b9098);})[_0x0eb1('0x16')](function(_0x143930){if(_0x245cc2[_0x0eb1('0x61')]['role']===_0x0eb1('0x2e'))return _0x143930;if(_0x245cc2[_0x0eb1('0x2e')][_0x0eb1('0x2c')]!==_0x0eb1('0x2e'))return _0x143930;var _0x10b9ef=_[_0x0eb1('0x88')](_0x143930,function(_0x5ed47f){return _0x5ed47f[_0x0eb1('0x2c')]==='agent'||_0x5ed47f[_0x0eb1('0x2c')]==='telephone';});if(!_0x10b9ef)return _0x143930;return db[_0x0eb1('0x8a')][_0x0eb1('0x49')]({'where':{'name':{'$or':[_0x0eb1('0x2f'),_0x0eb1('0x31')]},'userProfileId':_0x245cc2[_0x0eb1('0x2e')]['userProfileId']},'raw':!![]})['then'](function(_0x13afcf){if(_['isEmpty'](_0x13afcf)||!_[_0x0eb1('0x88')](_0x13afcf,['autoAssociation',0x0]))return _0x143930;_0x4b9098=[];var _0x574629=_(_0x13afcf)[_0x0eb1('0x35')](function(_0x1c922){if(_0x1c922['autoAssociation']===0x1)return;return _0x1c922[_0x0eb1('0x39')]===_0x0eb1('0x2f')?_0x0eb1('0x30'):_0x0eb1('0x32');})['compact']()[_0x0eb1('0x36')]();for(var _0x50468f=0x0;_0x50468f<_0x143930['length'];_0x50468f++){if(!_[_0x0eb1('0x37')](_0x574629,_0x143930[_0x50468f][_0x0eb1('0x2c')]))return;var _0x271c7e=_0x143930[_0x50468f][_0x0eb1('0x2c')]===_0x0eb1('0x30')?'Agents':'Telephones';_0x4b9098[_0x0eb1('0x48')](db['UserProfileResource']['create']({'name':_0x143930[_0x50468f][_0x0eb1('0x39')],'resourceId':_0x143930[_0x50468f]['id'],'type':_0x271c7e,'sectionId':_[_0x0eb1('0x38')](_0x13afcf,[_0x0eb1('0x39'),_0x271c7e])['id']},{}));}return Promise[_0x0eb1('0x53')](_0x4b9098);});})[_0x0eb1('0x16')](respondWithResult(_0x5d126d,0xc9))[_0x0eb1('0x54')](handleError(_0x5d126d,null));};exports['changePassword']=function(_0x54cd6a,_0x2ac4d6){if(_0x54cd6a['body']['id']){delete _0x54cd6a[_0x0eb1('0x61')]['id'];}return db[_0x0eb1('0x3d')][_0x0eb1('0x38')]({'where':{'id':_0x54cd6a['params']['id']}})[_0x0eb1('0x16')](function(_0x3e9310){if(!_0x3e9310)return null;if(_0x3e9310['id']===_0x54cd6a[_0x0eb1('0x2e')]['id']){if(!_0x54cd6a[_0x0eb1('0x61')][_0x0eb1('0x8b')]||!_0x54cd6a[_0x0eb1('0x61')]['newPassword']){throw new db[(_0x0eb1('0x8c'))][(_0x0eb1('0x8d'))](_0x0eb1('0x8e'));}if(!_0x3e9310[_0x0eb1('0x8f')](_0x54cd6a[_0x0eb1('0x61')]['oldPassword'])){throw new db[(_0x0eb1('0x8c'))]['ValidationError'](_0x0eb1('0x90'));}if(_0x54cd6a['body'][_0x0eb1('0x8b')]===_0x54cd6a[_0x0eb1('0x61')][_0x0eb1('0x91')]){throw new db[(_0x0eb1('0x8c'))]['ValidationError']('New\x20password\x20must\x20be\x20different\x20from\x20old\x20password');}}else if(_0x54cd6a[_0x0eb1('0x2e')][_0x0eb1('0x2c')]===_0x0eb1('0x81')){if(!_0x54cd6a[_0x0eb1('0x61')][_0x0eb1('0x91')]){throw new db[(_0x0eb1('0x8c'))][(_0x0eb1('0x8d'))](_0x0eb1('0x92'));}}else if(_0x54cd6a[_0x0eb1('0x2e')]['role']==='user'){if(!_0x54cd6a[_0x0eb1('0x61')][_0x0eb1('0x91')]){throw new db[(_0x0eb1('0x8c'))][(_0x0eb1('0x8d'))](_0x0eb1('0x92'));}if(_0x3e9310[_0x0eb1('0x2c')]!==_0x0eb1('0x30')){throw new db[(_0x0eb1('0x8c'))][(_0x0eb1('0x8d'))](_0x0eb1('0x80'));}}else{throw new db['Sequelize'][(_0x0eb1('0x8d'))](_0x0eb1('0x80'));}return _0x3e9310;})[_0x0eb1('0x16')](handleEntityNotFound(_0x2ac4d6,null))[_0x0eb1('0x16')](function(_0x474262){return db[_0x0eb1('0x93')][_0x0eb1('0x94')]({'attributes':['id','securePassword','enforcePasswordHistory',_0x0eb1('0x95')]})[_0x0eb1('0x16')](function(_0x5881af){if(_0x5881af['securePassword'])authService[_0x0eb1('0x96')](_0x54cd6a[_0x0eb1('0x61')]['newPassword']);if(!_0x5881af['enforcePasswordHistory']||!_0x474262[_0x0eb1('0x97')])return _0x474262;authService[_0x0eb1('0x98')](_0x54cd6a[_0x0eb1('0x61')][_0x0eb1('0x91')],_0x474262[_0x0eb1('0x97')],_0x5881af[_0x0eb1('0x95')]);return _0x474262;})['then'](saveUpdates({'password':_0x54cd6a['body'][_0x0eb1('0x91')],'passwordResetAt':_0x54cd6a[_0x0eb1('0x2e')]['id']==_0x54cd6a[_0x0eb1('0x62')]['id']?moment():null,'previousPasswords':authService[_0x0eb1('0x99')](_0x54cd6a['body'][_0x0eb1('0x91')],_0x474262[_0x0eb1('0x97')])},null));})[_0x0eb1('0x16')](respondWithResult(_0x2ac4d6,null))[_0x0eb1('0x54')](handleError(_0x2ac4d6,null));};exports[_0x0eb1('0x9a')]=function(_0x2dc77e,_0x1b834e){var _0x28a9db=_0x2dc77e[_0x0eb1('0x61')]['channel'];return db[_0x0eb1('0x3d')]['find']({'where':{'id':_0x2dc77e[_0x0eb1('0x62')]['id']},'attributes':['id','name',_0x0eb1('0x2c'),_0x0eb1('0x9b'),'loginInPause','voicePause',_0x0eb1('0x9c')]})['then'](handleEntityNotFound(_0x1b834e,null))[_0x0eb1('0x16')](function(_0x20c75a){if(_0x20c75a){if(!utils['isValidChannel'](_0x28a9db)){throw new db[(_0x0eb1('0x8c'))]['ValidationError'](_0x0eb1('0x9d'));}return _0x20c75a['add'+_[_0x0eb1('0x9e')](_0x28a9db['toLowerCase']())+_0x0eb1('0x9f')](_0x2dc77e[_0x0eb1('0x61')][_0x0eb1('0x65')],{'penalty':_0x2dc77e[_0x0eb1('0x61')][_0x0eb1('0xa0')]||0x0})[_0x0eb1('0xa1')](function(_0xb9b7d6){for(var _0x58238a=0x0;_0x58238a<_0x2dc77e['body'][_0x0eb1('0x65')][_0x0eb1('0x4c')];_0x58238a+=0x1){var _0x174665={'UserId':Number(_0x2dc77e[_0x0eb1('0x62')]['id'])};_0x174665[_['capitalize'](_0x28a9db[_0x0eb1('0xa2')]())+'QueueId']=Number(_0x2dc77e[_0x0eb1('0x61')][_0x0eb1('0x65')][_0x58238a]);socket[_0x0eb1('0xa3')](_0x0eb1('0x2e')+_[_0x0eb1('0x9e')](_0x28a9db['toLowerCase']())+_0x0eb1('0xa4'),_0x174665);}return _0xb9b7d6;})['then'](function(){if(_0x28a9db===_0x0eb1('0xa5')){return db[_0x0eb1('0xa6')][_0x0eb1('0x49')]({'where':{'id':_0x2dc77e['body']['ids']||[]},'raw':!![],'attributes':['id',_0x0eb1('0x39')]});}})[_0x0eb1('0x16')](function(_0x272420){var _0x34811e=_0x20c75a[_0x0eb1('0xa7')]({'plain':!![]});var _0x2fa9fa=[];if(_0x28a9db===_0x0eb1('0xa5')&&_0x34811e[_0x0eb1('0x2c')]==='agent'&&_0x34811e[_0x0eb1('0x9b')]){for(let _0x50d4c9=0x0;_0x50d4c9<_0x272420[_0x0eb1('0x4c')];_0x50d4c9+=0x1){_0x2fa9fa[_0x0eb1('0x48')]({'membername':_0x34811e[_0x0eb1('0x39')],'UserId':_0x34811e['id'],'queue_name':_0x272420[_0x50d4c9][_0x0eb1('0x39')],'VoiceQueueId':_0x272420[_0x50d4c9]['id'],'interface':_['isNil'](_0x34811e[_0x0eb1('0x9c')])?util['format'](_0x0eb1('0xa8'),_0x34811e['name']):_0x34811e[_0x0eb1('0x9c')],'paused':_0x34811e[_0x0eb1('0xa9')]||![],'penalty':_0x2dc77e['body']['penalty']||0x0});}return Promise['all'](_0x2fa9fa[_0x0eb1('0x35')](function(_0x6c71ad){return db[_0x0eb1('0xaa')][_0x0eb1('0xab')](_0x6c71ad);}));}return _0x20c75a;});}})[_0x0eb1('0x16')](respondWithStatusCode(_0x1b834e,null))[_0x0eb1('0x54')](handleError(_0x1b834e,null));};exports['removeQueues']=function(_0x36698e,_0x5b7c7a){var _0x4571cf,_0x422919;return db[_0x0eb1('0x3d')]['find']({'where':{'id':_0x36698e[_0x0eb1('0x62')]['id']},'attributes':['id',_0x0eb1('0x39'),'role']})['then'](handleEntityNotFound(_0x5b7c7a,null))[_0x0eb1('0x16')](function(_0x1c1258){if(_0x1c1258){_0x4571cf=_0x1c1258;if(!_0x36698e[_0x0eb1('0x43')][_0x0eb1('0xac')]||!utils[_0x0eb1('0xad')](_0x36698e['query'][_0x0eb1('0xac')])){throw new db[(_0x0eb1('0x8c'))]['ValidationError']('Unknown\x20channel');}return _0x1c1258[_0x0eb1('0xae')+_[_0x0eb1('0x9e')](_0x36698e['query']['channel'][_0x0eb1('0xa2')]())+'Queues'](_0x36698e['query']['ids']);}})[_0x0eb1('0x16')](function(_0x2c3090){if(_[_0x0eb1('0xaf')](_0x36698e[_0x0eb1('0x43')]['ids'])){for(var _0x1f1954=0x0;_0x1f1954<_0x36698e[_0x0eb1('0x43')]['ids'][_0x0eb1('0x4c')];_0x1f1954+=0x1){_0x422919={'UserId':Number(_0x36698e['params']['id'])};_0x422919[_[_0x0eb1('0x9e')](_0x36698e[_0x0eb1('0x43')][_0x0eb1('0xac')][_0x0eb1('0xa2')]())+_0x0eb1('0xb0')]=Number(_0x36698e[_0x0eb1('0x43')][_0x0eb1('0x65')][_0x1f1954]);socket['emit'](_0x0eb1('0x2e')+_[_0x0eb1('0x9e')](_0x36698e[_0x0eb1('0x43')]['channel'][_0x0eb1('0xa2')]())+'Queue:remove',_0x422919);}}else{_0x422919={'UserId':Number(_0x36698e[_0x0eb1('0x62')]['id'])};_0x422919[_[_0x0eb1('0x9e')](_0x36698e[_0x0eb1('0x43')][_0x0eb1('0xac')][_0x0eb1('0xa2')]())+_0x0eb1('0xb0')]=Number(_0x36698e[_0x0eb1('0x43')][_0x0eb1('0x65')]);socket[_0x0eb1('0xa3')](_0x0eb1('0x2e')+_[_0x0eb1('0x9e')](_0x36698e[_0x0eb1('0x43')]['channel']['toLowerCase']())+_0x0eb1('0xb1'),_0x422919);}return _0x2c3090;})[_0x0eb1('0x16')](function(){if(_0x36698e[_0x0eb1('0x43')][_0x0eb1('0xac')]===_0x0eb1('0xa5')){return db[_0x0eb1('0xaa')]['destroy']({'where':{'UserId':_0x36698e['params']['id'],'VoiceQueueId':_0x36698e[_0x0eb1('0x43')]['ids']},'individualHooks':!![]})[_0x0eb1('0x16')](function(){return _0x4571cf;});}return _0x4571cf;})[_0x0eb1('0x16')](respondWithStatusCode(_0x5b7c7a,null))[_0x0eb1('0x54')](handleError(_0x5b7c7a,null));};exports['addAvatar']=function(_0x1006bf,_0x4e4717){_0x1006bf['body'][_0x0eb1('0xb2')]=_0x1006bf[_0x0eb1('0xb3')][_0x0eb1('0xb4')];return db[_0x0eb1('0x3d')][_0x0eb1('0x38')]({'where':{'id':_0x1006bf['params']['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x4e4717,null))[_0x0eb1('0x16')](saveUpdates(_0x1006bf[_0x0eb1('0x61')],null))[_0x0eb1('0x16')](respondWithResult(_0x4e4717,null))[_0x0eb1('0x54')](handleError(_0x4e4717,null));};exports[_0x0eb1('0xb5')]=function(_0x17bbe4,_0x1d1b47){var _0x122a0c=path[_0x0eb1('0xb6')](config[_0x0eb1('0xb7')],_0x0eb1('0xb8'));return db[_0x0eb1('0x3d')][_0x0eb1('0x38')]({'where':{'id':_0x17bbe4[_0x0eb1('0x62')]['id']},'attributes':['id',_0x0eb1('0xb2')],'raw':!![]})[_0x0eb1('0x16')](handleEntityNotFound(_0x1d1b47,null))[_0x0eb1('0x16')](function(_0x2c988c){if(_0x2c988c){if(_[_0x0eb1('0x6a')](_0x2c988c[_0x0eb1('0xb2')])){return _0x1d1b47[_0x0eb1('0xb9')](_0x122a0c);}else{if(!fs[_0x0eb1('0xba')](path[_0x0eb1('0xb6')](config[_0x0eb1('0xb7')],_0x0eb1('0xbb'),_0x2c988c['userpic']))){return _0x1d1b47[_0x0eb1('0xb9')](_0x122a0c);}return _0x1d1b47['download'](path[_0x0eb1('0xb6')](config[_0x0eb1('0xb7')],_0x0eb1('0xbb'),_0x2c988c[_0x0eb1('0xb2')]));}}})[_0x0eb1('0x54')](handleError(_0x1d1b47,null));};exports[_0x0eb1('0xbc')]=function(_0x392038,_0x477c83){return db[_0x0eb1('0x3d')]['find']({'where':{'id':_0x392038[_0x0eb1('0x62')]['id']},'attributes':['id']})[_0x0eb1('0x16')](handleEntityNotFound(_0x477c83,null))[_0x0eb1('0x16')](function(_0x49c029){var _0x53b192=[];values=_0x49c029['dataValues'];_0x53b192[_0x0eb1('0x48')](get_open_tabs(_0x0eb1('0x4d'),_0x49c029[_0x0eb1('0x4e')]));_0x53b192[_0x0eb1('0x48')](get_open_tabs(_0x0eb1('0x4f'),_0x49c029['dataValues']));_0x53b192[_0x0eb1('0x48')](get_open_tabs(_0x0eb1('0x52'),_0x49c029[_0x0eb1('0x4e')]));_0x53b192[_0x0eb1('0x48')](get_open_tabs('whatsapp',_0x49c029[_0x0eb1('0x4e')]));_0x53b192[_0x0eb1('0x48')](get_open_tabs('fax',_0x49c029['dataValues']));_0x53b192[_0x0eb1('0x48')](get_open_tabs(_0x0eb1('0x51'),_0x49c029[_0x0eb1('0x4e')]));return Promise[_0x0eb1('0x53')](_0x53b192);})['then'](function(_0x571602){if(_0x571602){var _0x100c22=_['map'](values['ChatOpenTabs'],function(_0x283a94){return{'channel':_0x0eb1('0xbd'),'id':_0x283a94['id'],'createdAt':_0x283a94[_0x0eb1('0xbe')]};});var _0x590637=_[_0x0eb1('0x35')](values[_0x0eb1('0xbf')],function(_0x3afb9e){return{'channel':'FAX','id':_0x3afb9e['id'],'createdAt':_0x3afb9e['createdAt']};});var _0x2f72bb=_[_0x0eb1('0x35')](values['OpenchannelOpenTabs'],function(_0x6a257c){return{'channel':_0x0eb1('0xc0'),'id':_0x6a257c['id'],'createdAt':_0x6a257c['createdAt']};});var _0x346162=_[_0x0eb1('0x35')](values[_0x0eb1('0xc1')],function(_0x7f60e9){return{'channel':_0x0eb1('0xc2'),'id':_0x7f60e9['id'],'createdAt':_0x7f60e9[_0x0eb1('0xbe')]};});var _0x1cf0f2=_[_0x0eb1('0x35')](values[_0x0eb1('0xc3')],function(_0x231fe6){return{'channel':_0x0eb1('0xc4'),'id':_0x231fe6['id'],'createdAt':_0x231fe6[_0x0eb1('0xbe')]};});var _0x1815e0=_['map'](values[_0x0eb1('0xc5')],function(_0x3a2942){return{'channel':_0x0eb1('0xc6'),'id':_0x3a2942['id'],'createdAt':_0x3a2942['createdAt']};});var _0x36ca29=_['concat'](_0x100c22,_0x590637,_0x2f72bb,_0x346162,_0x1cf0f2,_0x1815e0);var _0x44d730={'count':_0x36ca29[_0x0eb1('0x4c')],'rows':_0x36ca29};return _0x44d730;}else return null;})[_0x0eb1('0x16')](respondWithResult(_0x477c83,null))[_0x0eb1('0x54')](handleError(_0x477c83,null));};exports[_0x0eb1('0xc7')]=function(_0x41eea1,_0x1ece72){var _0x122d2d={};var _0x4bbeac={};var _0x3dacf1;var _0x187925;return db[_0x0eb1('0x3d')][_0x0eb1('0x94')]({'where':{'id':_0x41eea1[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x1ece72,null))[_0x0eb1('0x16')](function(_0x379f60){if(_0x379f60){_0x3dacf1=_0x379f60;_0x4bbeac[_0x0eb1('0x56')]=_[_0x0eb1('0x58')](db[_0x0eb1('0xc8')][_0x0eb1('0x59')]);_0x4bbeac['query']=_[_0x0eb1('0x58')](_0x41eea1[_0x0eb1('0x43')]);_0x4bbeac['filters']=_['intersection'](_0x4bbeac[_0x0eb1('0x56')],_0x4bbeac[_0x0eb1('0x43')]);_0x122d2d[_0x0eb1('0x47')]=_[_0x0eb1('0x5a')](_0x4bbeac[_0x0eb1('0x56')],qs['fields'](_0x41eea1[_0x0eb1('0x43')][_0x0eb1('0x5b')]));_0x122d2d[_0x0eb1('0x47')]=_0x122d2d[_0x0eb1('0x47')][_0x0eb1('0x4c')]?_0x122d2d[_0x0eb1('0x47')]:_0x4bbeac[_0x0eb1('0x56')];_0x122d2d['order']=qs['sort'](_0x41eea1[_0x0eb1('0x43')]['sort']);_0x122d2d[_0x0eb1('0x42')]=qs[_0x0eb1('0xc9')](_[_0x0eb1('0xca')](_0x41eea1[_0x0eb1('0x43')],_0x4bbeac[_0x0eb1('0xc9')]));if(_0x41eea1['query'][_0x0eb1('0x33')]){_0x122d2d[_0x0eb1('0x42')]=_[_0x0eb1('0x5e')](_0x122d2d[_0x0eb1('0x42')],{'$or':_[_0x0eb1('0x35')](_0x122d2d[_0x0eb1('0x47')],function(_0x13da27){var _0x2c2e1a={};_0x2c2e1a[_0x13da27]={'$like':'%'+_0x41eea1['query'][_0x0eb1('0x33')]+'%'};return _0x2c2e1a;})});}_0x122d2d=_[_0x0eb1('0x5e')]({},_0x122d2d,_0x41eea1[_0x0eb1('0x5f')]);return _0x3dacf1['getContacts'](_0x122d2d);}})[_0x0eb1('0x16')](function(_0x483e65){if(_0x483e65){_0x187925=_0x483e65['length'];if(_0x41eea1[_0x0eb1('0x43')][_0x0eb1('0xcb')](_0x0eb1('0x5c'))){_0x122d2d[_0x0eb1('0x44')]=[{'model':db[_0x0eb1('0xcc')],'as':_0x0eb1('0xcd'),'required':![]},{'model':db[_0x0eb1('0xce')],'as':_0x0eb1('0xcf'),'attributes':['id',_0x0eb1('0x39'),'color'],'where':_0x41eea1[_0x0eb1('0x43')]['tag']?{'id':_0x41eea1[_0x0eb1('0x43')][_0x0eb1('0xd0')]}:undefined,'required':_0x41eea1['query'][_0x0eb1('0xd0')]?!![]:![]}];}if(!_0x41eea1[_0x0eb1('0x43')][_0x0eb1('0xcb')]('nolimit')){_0x122d2d['limit']=qs[_0x0eb1('0x26')](_0x41eea1[_0x0eb1('0x43')]['limit']);_0x122d2d[_0x0eb1('0x24')]=qs['offset'](_0x41eea1[_0x0eb1('0x43')][_0x0eb1('0x24')]);}return _0x3dacf1[_0x0eb1('0xc7')](_0x122d2d);}})[_0x0eb1('0x16')](function(_0x37b412){if(_0x37b412){return _0x37b412?{'count':_0x187925,'rows':_0x37b412}:null;}})[_0x0eb1('0x16')](respondWithResult(_0x1ece72,null))[_0x0eb1('0x54')](handleError(_0x1ece72,null));};exports['getQueues']=function(_0x265b8e,_0xf2eb7e){var _0x2fbb7e;var _0x426549={};var _0x5282d8;return db['User'][_0x0eb1('0x94')]({'where':{'id':_0x265b8e[_0x0eb1('0x62')]['id']},'attributes':['id','name','role']})['then'](handleEntityNotFound(_0xf2eb7e,null))['then'](function(_0x446f3e){if(!utils[_0x0eb1('0xad')](_0x265b8e[_0x0eb1('0x43')]['channel'])){throw new db[(_0x0eb1('0x8c'))][(_0x0eb1('0x8d'))](_0x0eb1('0x9d'));}_0x2fbb7e=_0x446f3e;var _0x22e887={};_0x22e887[_0x0eb1('0x56')]=_['keys'](db[_['capitalize'](_0x265b8e[_0x0eb1('0x43')][_0x0eb1('0xac')])+_0x0eb1('0xd1')][_0x0eb1('0x59')]);_0x22e887['query']=_[_0x0eb1('0x58')](_0x265b8e['query']);_0x22e887[_0x0eb1('0xc9')]=_[_0x0eb1('0x5a')](_0x22e887['model'],_0x22e887[_0x0eb1('0x43')]);_0x426549[_0x0eb1('0x47')]=_['intersection'](_0x22e887[_0x0eb1('0x56')],qs[_0x0eb1('0x5b')](_0x265b8e[_0x0eb1('0x43')][_0x0eb1('0x5b')]));_0x426549[_0x0eb1('0x47')]=_0x426549[_0x0eb1('0x47')]['length']?_0x426549[_0x0eb1('0x47')]:_0x22e887['model'];_0x426549[_0x0eb1('0xd2')]=qs['sort'](_0x265b8e['query'][_0x0eb1('0xd3')]);_0x426549[_0x0eb1('0x42')]=qs[_0x0eb1('0xc9')](_[_0x0eb1('0xca')](_0x265b8e[_0x0eb1('0x43')],_0x22e887['filters']));if(_0x265b8e[_0x0eb1('0x43')][_0x0eb1('0x33')]){_0x426549[_0x0eb1('0x42')]=_['merge'](_0x426549[_0x0eb1('0x42')],{'$or':_[_0x0eb1('0x35')](_0x426549[_0x0eb1('0x47')],function(_0x19260a){var _0x10fbb1={};_0x10fbb1[_0x19260a]={'$like':'%'+_0x265b8e[_0x0eb1('0x43')]['filter']+'%'};return _0x10fbb1;})});}_0x426549=_[_0x0eb1('0x5e')]({},_0x426549,_0x265b8e[_0x0eb1('0x5f')]);switch(_0x2fbb7e['role']){case'admin':return db[_[_0x0eb1('0x9e')](_0x265b8e[_0x0eb1('0x43')][_0x0eb1('0xac')])+_0x0eb1('0xd1')][_0x0eb1('0x49')](_0x426549);case _0x0eb1('0x2e'):case _0x0eb1('0x30'):return _0x2fbb7e[_0x0eb1('0xa7')+_['capitalize'](_0x265b8e[_0x0eb1('0x43')]['channel'])+_0x0eb1('0x9f')](_0x426549);default:throw new db['Sequelize'][(_0x0eb1('0x8d'))](_0x0eb1('0xd4'));}})[_0x0eb1('0x16')](function(_0x40df0f){_0x5282d8=_0x40df0f['length'];if(!_0x265b8e[_0x0eb1('0x43')]['hasOwnProperty'](_0x0eb1('0xd5'))){_0x426549[_0x0eb1('0x26')]=qs['limit'](_0x265b8e[_0x0eb1('0x43')][_0x0eb1('0x26')]);_0x426549[_0x0eb1('0x24')]=qs['offset'](_0x265b8e[_0x0eb1('0x43')][_0x0eb1('0x24')]);}switch(_0x2fbb7e[_0x0eb1('0x2c')]){case _0x0eb1('0x81'):return db[_['capitalize'](_0x265b8e['query'][_0x0eb1('0xac')])+_0x0eb1('0xd1')][_0x0eb1('0x49')](_0x426549);case _0x0eb1('0x2e'):case _0x0eb1('0x30'):return _0x2fbb7e['get'+_[_0x0eb1('0x9e')](_0x265b8e['query']['channel'])+_0x0eb1('0x9f')](_0x426549);}})[_0x0eb1('0x16')](function(_0x2f4ec7){return{'count':_0x5282d8,'rows':_0x2f4ec7};})['then'](respondWithResult(_0xf2eb7e,null))['catch'](handleError(_0xf2eb7e,null));};exports[_0x0eb1('0xd6')]=function(_0x1abc21,_0xd2c1fb){var _0xfbf11c={};var _0x5c3753={};var _0x356edf;var _0x5a7896;return db[_0x0eb1('0x3d')][_0x0eb1('0x94')]({'where':{'id':_0x1abc21['params']['id']}})['then'](handleEntityNotFound(_0xd2c1fb,null))['then'](function(_0x1ec4ad){if(_0x1ec4ad){_0x356edf=_0x1ec4ad;_0x5c3753[_0x0eb1('0x56')]=_[_0x0eb1('0x58')](db['UserVoiceQueueRt'][_0x0eb1('0x59')]);_0x5c3753['query']=_[_0x0eb1('0x58')](_0x1abc21[_0x0eb1('0x43')]);_0x5c3753[_0x0eb1('0xc9')]=_[_0x0eb1('0x5a')](_0x5c3753[_0x0eb1('0x56')],_0x5c3753[_0x0eb1('0x43')]);_0xfbf11c[_0x0eb1('0x47')]=_['intersection'](_0x5c3753['model'],qs['fields'](_0x1abc21[_0x0eb1('0x43')][_0x0eb1('0x5b')]));_0xfbf11c[_0x0eb1('0x47')]=_0xfbf11c[_0x0eb1('0x47')][_0x0eb1('0x4c')]?_0xfbf11c[_0x0eb1('0x47')]:_0x5c3753[_0x0eb1('0x56')];_0xfbf11c[_0x0eb1('0xd2')]=qs['sort'](_0x1abc21[_0x0eb1('0x43')][_0x0eb1('0xd3')]);_0xfbf11c['where']=qs[_0x0eb1('0xc9')](_[_0x0eb1('0xca')](_0x1abc21[_0x0eb1('0x43')],_0x5c3753['filters']));if(_0x1abc21[_0x0eb1('0x43')][_0x0eb1('0x33')]){_0xfbf11c[_0x0eb1('0x42')]=_['merge'](_0xfbf11c[_0x0eb1('0x42')],{'$or':_[_0x0eb1('0x35')](_0xfbf11c[_0x0eb1('0x47')],function(_0x2c60a0){var _0x475c99={};_0x475c99[_0x2c60a0]={'$like':'%'+_0x1abc21[_0x0eb1('0x43')]['filter']+'%'};return _0x475c99;})});}_0xfbf11c=_[_0x0eb1('0x5e')]({},_0xfbf11c,_0x1abc21[_0x0eb1('0x5f')]);return _0x356edf[_0x0eb1('0xd6')](_0xfbf11c);}})[_0x0eb1('0x16')](function(_0x29356a){if(_0x29356a){_0x5a7896=_0x29356a[_0x0eb1('0x4c')];if(!_0x1abc21[_0x0eb1('0x43')][_0x0eb1('0xcb')]('nolimit')){_0xfbf11c['limit']=qs[_0x0eb1('0x26')](_0x1abc21[_0x0eb1('0x43')][_0x0eb1('0x26')]);_0xfbf11c['offset']=qs['offset'](_0x1abc21[_0x0eb1('0x43')]['offset']);}return _0x356edf[_0x0eb1('0xd6')](_0xfbf11c);}})['then'](function(_0x1d204c){if(_0x1d204c){return _0x1d204c?{'count':_0x5a7896,'rows':_0x1d204c}:null;}})[_0x0eb1('0x16')](respondWithResult(_0xd2c1fb,null))['catch'](handleError(_0xd2c1fb,null));};exports[_0x0eb1('0xd7')]=function(_0x5cc47c,_0x28b7e8){var _0x79adc7={};var _0x37683e={};var _0x1e588b;var _0x4ae23b;return db[_0x0eb1('0x3d')]['findOne']({'where':{'id':_0x5cc47c['params']['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x28b7e8,null))[_0x0eb1('0x16')](function(_0x3813e9){if(_0x3813e9){_0x1e588b=_0x3813e9;_0x37683e[_0x0eb1('0x56')]=_[_0x0eb1('0x58')](db[_0x0eb1('0xd8')][_0x0eb1('0x59')]);_0x37683e[_0x0eb1('0x43')]=_[_0x0eb1('0x58')](_0x5cc47c['query']);_0x37683e[_0x0eb1('0xc9')]=_[_0x0eb1('0x5a')](_0x37683e[_0x0eb1('0x56')],_0x37683e[_0x0eb1('0x43')]);_0x79adc7[_0x0eb1('0x47')]=_[_0x0eb1('0x5a')](_0x37683e[_0x0eb1('0x56')],qs[_0x0eb1('0x5b')](_0x5cc47c[_0x0eb1('0x43')][_0x0eb1('0x5b')]));_0x79adc7['attributes']=_0x79adc7[_0x0eb1('0x47')][_0x0eb1('0x4c')]?_0x79adc7[_0x0eb1('0x47')]:_0x37683e['model'];_0x79adc7['order']=qs[_0x0eb1('0xd3')](_0x5cc47c[_0x0eb1('0x43')][_0x0eb1('0xd3')]);_0x79adc7[_0x0eb1('0x42')]=qs[_0x0eb1('0xc9')](_['pick'](_0x5cc47c['query'],_0x37683e['filters']));if(_0x5cc47c[_0x0eb1('0x43')]['filter']){_0x79adc7[_0x0eb1('0x42')]=_[_0x0eb1('0x5e')](_0x79adc7['where'],{'$or':_[_0x0eb1('0x35')](_0x79adc7[_0x0eb1('0x47')],function(_0x1f609a){var _0x2c85b2={};_0x2c85b2[_0x1f609a]={'$like':'%'+_0x5cc47c[_0x0eb1('0x43')][_0x0eb1('0x33')]+'%'};return _0x2c85b2;})});}_0x79adc7=_[_0x0eb1('0x5e')]({},_0x79adc7,_0x5cc47c[_0x0eb1('0x5f')]);return _0x1e588b[_0x0eb1('0xd7')](_0x79adc7);}})[_0x0eb1('0x16')](function(_0x5cb73b){if(_0x5cb73b){_0x4ae23b=_0x5cb73b[_0x0eb1('0x4c')];if(!_0x5cc47c[_0x0eb1('0x43')][_0x0eb1('0xcb')](_0x0eb1('0xd5'))){_0x79adc7['limit']=qs['limit'](_0x5cc47c[_0x0eb1('0x43')][_0x0eb1('0x26')]);_0x79adc7['offset']=qs['offset'](_0x5cc47c[_0x0eb1('0x43')][_0x0eb1('0x24')]);}return _0x1e588b['getGroups'](_0x79adc7);}})[_0x0eb1('0x16')](function(_0x56c4f0){if(_0x56c4f0){return _0x56c4f0?{'count':_0x4ae23b,'rows':_0x56c4f0}:null;}})[_0x0eb1('0x16')](respondWithResult(_0x28b7e8,null))[_0x0eb1('0x54')](handleError(_0x28b7e8,null));};exports['getRecordings']=function(_0x1b5faf,_0x215d30){var _0x2cf09d={'raw':!![],'where':{}};var _0x4cefc4={};var _0x45da76={'count':0x0,'rows':[]};return db[_0x0eb1('0x3d')]['findOne']({'where':{'id':_0x1b5faf['params']['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x215d30,null))[_0x0eb1('0x16')](function(_0x5d6479){if(_0x5d6479){_0x4cefc4['model']=_[_0x0eb1('0x58')](db[_0x0eb1('0xd9')][_0x0eb1('0x59')]);_0x4cefc4[_0x0eb1('0x43')]=_[_0x0eb1('0x58')](_0x1b5faf['query']);_0x4cefc4['filters']=_[_0x0eb1('0x5a')](_0x4cefc4[_0x0eb1('0x56')],_0x4cefc4[_0x0eb1('0x43')]);_0x2cf09d[_0x0eb1('0x47')]=_[_0x0eb1('0x5a')](_0x4cefc4[_0x0eb1('0x56')],qs['fields'](_0x1b5faf[_0x0eb1('0x43')][_0x0eb1('0x5b')]));_0x2cf09d['attributes']=_0x2cf09d[_0x0eb1('0x47')][_0x0eb1('0x4c')]?_0x2cf09d[_0x0eb1('0x47')]:_0x4cefc4[_0x0eb1('0x56')];if(!_0x1b5faf['query'][_0x0eb1('0xcb')](_0x0eb1('0xd5'))){_0x2cf09d[_0x0eb1('0x26')]=qs[_0x0eb1('0x26')](_0x1b5faf[_0x0eb1('0x43')]['limit']);_0x2cf09d[_0x0eb1('0x24')]=qs['offset'](_0x1b5faf[_0x0eb1('0x43')][_0x0eb1('0x24')]);}_0x2cf09d[_0x0eb1('0xd2')]=qs[_0x0eb1('0xd3')](_0x1b5faf[_0x0eb1('0x43')]['sort']);_0x2cf09d[_0x0eb1('0x42')]=qs[_0x0eb1('0xc9')](_['pick'](_0x1b5faf[_0x0eb1('0x43')],_0x4cefc4[_0x0eb1('0xc9')]));_0x2cf09d[_0x0eb1('0x42')][_0x0eb1('0xda')]=_0x5d6479['id'];if(_0x1b5faf[_0x0eb1('0x43')][_0x0eb1('0x33')]){_0x2cf09d[_0x0eb1('0x42')]=_[_0x0eb1('0x5e')](_0x2cf09d[_0x0eb1('0x42')],{'$or':_['map'](_0x2cf09d[_0x0eb1('0x47')],function(_0x7c6eef){var _0x20e927={};_0x20e927[_0x7c6eef]={'$like':'%'+_0x1b5faf[_0x0eb1('0x43')][_0x0eb1('0x33')]+'%'};return _0x20e927;})});}_0x2cf09d=_[_0x0eb1('0x5e')]({},_0x2cf09d,_0x1b5faf['options']);return db[_0x0eb1('0xd9')][_0x0eb1('0x27')]({'where':_0x2cf09d['where']})[_0x0eb1('0x16')](function(_0x593031){_0x45da76[_0x0eb1('0x27')]=_0x593031;if(_0x1b5faf[_0x0eb1('0x43')]['includeAll']){_0x2cf09d['include']=[{'all':!![]}];}return db[_0x0eb1('0xd9')][_0x0eb1('0x49')](_0x2cf09d);})[_0x0eb1('0x16')](function(_0x509d1b){_0x45da76['rows']=_0x509d1b;return _0x45da76;});}})['then'](respondWithFilteredResult(_0x215d30,_0x2cf09d))[_0x0eb1('0x54')](handleError(_0x215d30,null));};exports['getScreenRecordings']=function(_0x2a4995,_0x2c4854){var _0x219ce9={'raw':!![],'where':{}};var _0x581d66={};var _0x30162a={'count':0x0,'rows':[]};return db[_0x0eb1('0x3d')][_0x0eb1('0x94')]({'where':{'id':_0x2a4995[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x2c4854,null))['then'](function(_0x4c7b95){if(_0x4c7b95){_0x581d66[_0x0eb1('0x56')]=_[_0x0eb1('0x58')](db['ScreenRecording'][_0x0eb1('0x59')]);_0x581d66[_0x0eb1('0x43')]=_[_0x0eb1('0x58')](_0x2a4995['query']);_0x581d66[_0x0eb1('0xc9')]=_[_0x0eb1('0x5a')](_0x581d66[_0x0eb1('0x56')],_0x581d66[_0x0eb1('0x43')]);_0x219ce9[_0x0eb1('0x47')]=_[_0x0eb1('0x5a')](_0x581d66[_0x0eb1('0x56')],qs[_0x0eb1('0x5b')](_0x2a4995['query'][_0x0eb1('0x5b')]));_0x219ce9[_0x0eb1('0x47')]=_0x219ce9[_0x0eb1('0x47')]['length']?_0x219ce9[_0x0eb1('0x47')]:_0x581d66[_0x0eb1('0x56')];if(!_0x2a4995['query'][_0x0eb1('0xcb')](_0x0eb1('0xd5'))){_0x219ce9[_0x0eb1('0x26')]=qs[_0x0eb1('0x26')](_0x2a4995[_0x0eb1('0x43')][_0x0eb1('0x26')]);_0x219ce9['offset']=qs[_0x0eb1('0x24')](_0x2a4995[_0x0eb1('0x43')]['offset']);}_0x219ce9[_0x0eb1('0xd2')]=qs[_0x0eb1('0xd3')](_0x2a4995['query'][_0x0eb1('0xd3')]);_0x219ce9[_0x0eb1('0x42')]=qs[_0x0eb1('0xc9')](_[_0x0eb1('0xca')](_0x2a4995['query'],_0x581d66[_0x0eb1('0xc9')]));_0x219ce9[_0x0eb1('0x42')]['UserId']=_0x4c7b95['id'];if(_0x2a4995['query']['filter']){_0x219ce9['where']=_[_0x0eb1('0x5e')](_0x219ce9[_0x0eb1('0x42')],{'$or':_[_0x0eb1('0x35')](_0x219ce9[_0x0eb1('0x47')],function(_0x46ef06){var _0x35e73b={};_0x35e73b[_0x46ef06]={'$like':'%'+_0x2a4995[_0x0eb1('0x43')]['filter']+'%'};return _0x35e73b;})});}_0x219ce9=_['merge']({},_0x219ce9,_0x2a4995[_0x0eb1('0x5f')]);return db[_0x0eb1('0xdb')][_0x0eb1('0x27')]({'where':_0x219ce9[_0x0eb1('0x42')]})[_0x0eb1('0x16')](function(_0x37f3bb){_0x30162a[_0x0eb1('0x27')]=_0x37f3bb;if(_0x2a4995[_0x0eb1('0x43')][_0x0eb1('0x5c')]){_0x219ce9['include']=[{'all':!![]}];}return db['ScreenRecording'][_0x0eb1('0x49')](_0x219ce9);})[_0x0eb1('0x16')](function(_0x4d5d15){_0x30162a['rows']=_0x4d5d15;return _0x30162a;});}})[_0x0eb1('0x16')](respondWithFilteredResult(_0x2c4854,_0x219ce9))[_0x0eb1('0x54')](handleError(_0x2c4854,null));};exports[_0x0eb1('0xdc')]=function(_0x902bbd,_0x57e0f5){var _0x9a0c15={};var _0x5a454c={};var _0x818847;var _0x20bb7f;return db[_0x0eb1('0x3d')][_0x0eb1('0x94')]({'where':{'id':_0x902bbd[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x57e0f5,null))[_0x0eb1('0x16')](function(_0x3e7482){if(_0x3e7482){_0x818847=_0x3e7482;_0x5a454c['model']=_['keys'](db[_0x0eb1('0xdd')][_0x0eb1('0x59')]);_0x5a454c[_0x0eb1('0x43')]=_[_0x0eb1('0x58')](_0x902bbd['query']);_0x5a454c[_0x0eb1('0xc9')]=_[_0x0eb1('0x5a')](_0x5a454c[_0x0eb1('0x56')],_0x5a454c['query']);_0x9a0c15[_0x0eb1('0x47')]=_[_0x0eb1('0x5a')](_0x5a454c[_0x0eb1('0x56')],qs['fields'](_0x902bbd[_0x0eb1('0x43')]['fields']));_0x9a0c15[_0x0eb1('0x47')]=_0x9a0c15[_0x0eb1('0x47')][_0x0eb1('0x4c')]?_0x9a0c15[_0x0eb1('0x47')]:_0x5a454c[_0x0eb1('0x56')];_0x9a0c15[_0x0eb1('0xd2')]=qs['sort'](_0x902bbd[_0x0eb1('0x43')][_0x0eb1('0xd3')]);_0x9a0c15['where']=qs[_0x0eb1('0xc9')](_['pick'](_0x902bbd[_0x0eb1('0x43')],_0x5a454c[_0x0eb1('0xc9')]));if(_0x902bbd[_0x0eb1('0x43')][_0x0eb1('0x33')]){_0x9a0c15[_0x0eb1('0x42')]=_[_0x0eb1('0x5e')](_0x9a0c15[_0x0eb1('0x42')],{'$or':_[_0x0eb1('0x35')](_0x9a0c15['attributes'],function(_0x5896c4){var _0x5c29d1={};_0x5c29d1[_0x5896c4]={'$like':'%'+_0x902bbd['query']['filter']+'%'};return _0x5c29d1;})});}_0x9a0c15=_[_0x0eb1('0x5e')]({},_0x9a0c15,_0x902bbd[_0x0eb1('0x5f')]);return _0x818847[_0x0eb1('0xdc')](_0x9a0c15);}})[_0x0eb1('0x16')](function(_0x41b217){if(_0x41b217){_0x20bb7f=_0x41b217[_0x0eb1('0x4c')];if(!_0x902bbd['query'][_0x0eb1('0xcb')]('nolimit')){_0x9a0c15[_0x0eb1('0x26')]=qs[_0x0eb1('0x26')](_0x902bbd['query'][_0x0eb1('0x26')]);_0x9a0c15['offset']=qs[_0x0eb1('0x24')](_0x902bbd[_0x0eb1('0x43')][_0x0eb1('0x24')]);}return _0x818847[_0x0eb1('0xdc')](_0x9a0c15);}})['then'](function(_0x18b076){if(_0x18b076){return _0x18b076?{'count':_0x20bb7f,'rows':_0x18b076}:null;}})[_0x0eb1('0x16')](respondWithResult(_0x57e0f5,null))[_0x0eb1('0x54')](handleError(_0x57e0f5,null));};exports[_0x0eb1('0xde')]=function(_0x240b94,_0x20293b){var _0x1ac36e={};var _0x546863={};var _0x41bf1d;var _0x1ca263;return db[_0x0eb1('0x3d')][_0x0eb1('0x94')]({'where':{'id':_0x240b94[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x20293b,null))[_0x0eb1('0x16')](function(_0x1a48f0){if(_0x1a48f0){_0x41bf1d=_0x1a48f0;_0x546863[_0x0eb1('0x56')]=_[_0x0eb1('0x58')](db[_0x0eb1('0xdf')][_0x0eb1('0x59')]);_0x546863[_0x0eb1('0x43')]=_[_0x0eb1('0x58')](_0x240b94[_0x0eb1('0x43')]);_0x546863[_0x0eb1('0xc9')]=_[_0x0eb1('0x5a')](_0x546863[_0x0eb1('0x56')],_0x546863['query']);_0x1ac36e[_0x0eb1('0x47')]=_[_0x0eb1('0x5a')](_0x546863[_0x0eb1('0x56')],qs[_0x0eb1('0x5b')](_0x240b94[_0x0eb1('0x43')][_0x0eb1('0x5b')]));_0x1ac36e[_0x0eb1('0x47')]=_0x1ac36e[_0x0eb1('0x47')][_0x0eb1('0x4c')]?_0x1ac36e[_0x0eb1('0x47')]:_0x546863['model'];_0x1ac36e[_0x0eb1('0xd2')]=qs['sort'](_0x240b94['query'][_0x0eb1('0xd3')]);_0x1ac36e['where']=qs['filters'](_['pick'](_0x240b94[_0x0eb1('0x43')],_0x546863[_0x0eb1('0xc9')]));if(_0x240b94[_0x0eb1('0x43')]['filter']){_0x1ac36e[_0x0eb1('0x42')]=_[_0x0eb1('0x5e')](_0x1ac36e['where'],{'$or':_[_0x0eb1('0x35')](_0x1ac36e['attributes'],function(_0x5804fd){var _0x4e0006={};_0x4e0006[_0x5804fd]={'$like':'%'+_0x240b94['query'][_0x0eb1('0x33')]+'%'};return _0x4e0006;})});}_0x1ac36e=_[_0x0eb1('0x5e')]({},_0x1ac36e,_0x240b94[_0x0eb1('0x5f')]);return _0x41bf1d[_0x0eb1('0xde')](_0x1ac36e);}})[_0x0eb1('0x16')](function(_0x41bf5b){if(_0x41bf5b){_0x1ca263=_0x41bf5b[_0x0eb1('0x4c')];if(!_0x240b94[_0x0eb1('0x43')][_0x0eb1('0xcb')](_0x0eb1('0xd5'))){_0x1ac36e['limit']=qs[_0x0eb1('0x26')](_0x240b94['query']['limit']);_0x1ac36e[_0x0eb1('0x24')]=qs[_0x0eb1('0x24')](_0x240b94[_0x0eb1('0x43')][_0x0eb1('0x24')]);}return _0x41bf1d[_0x0eb1('0xde')](_0x1ac36e);}})[_0x0eb1('0x16')](function(_0x22ac45){if(_0x22ac45){return _0x22ac45?{'count':_0x1ca263,'rows':_0x22ac45}:null;}})[_0x0eb1('0x16')](respondWithResult(_0x20293b,null))[_0x0eb1('0x54')](handleError(_0x20293b,null));};exports[_0x0eb1('0xe0')]=function(_0x3a2657,_0x57eec8){var _0x44c1bf={'raw':!![],'where':{}};var _0x4ed85a={};var _0x4f20ad={'count':0x0,'rows':[]};return db[_0x0eb1('0x3d')]['findOne']({'where':{'id':_0x3a2657[_0x0eb1('0x62')]['id']}})['then'](handleEntityNotFound(_0x57eec8,null))[_0x0eb1('0x16')](function(_0xfe854e){if(_0xfe854e){_0x4ed85a[_0x0eb1('0x56')]=_[_0x0eb1('0x58')](db['MailInteraction'][_0x0eb1('0x59')]);_0x4ed85a[_0x0eb1('0x43')]=_[_0x0eb1('0x58')](_0x3a2657[_0x0eb1('0x43')]);_0x4ed85a['filters']=_[_0x0eb1('0x5a')](_0x4ed85a['model'],_0x4ed85a[_0x0eb1('0x43')]);_0x44c1bf['attributes']=_['intersection'](_0x4ed85a[_0x0eb1('0x56')],qs['fields'](_0x3a2657[_0x0eb1('0x43')][_0x0eb1('0x5b')]));_0x44c1bf[_0x0eb1('0x47')]=_0x44c1bf[_0x0eb1('0x47')][_0x0eb1('0x4c')]?_0x44c1bf['attributes']:_0x4ed85a[_0x0eb1('0x56')];if(!_0x3a2657[_0x0eb1('0x43')][_0x0eb1('0xcb')](_0x0eb1('0xd5'))){_0x44c1bf[_0x0eb1('0x26')]=qs['limit'](_0x3a2657[_0x0eb1('0x43')][_0x0eb1('0x26')]);_0x44c1bf[_0x0eb1('0x24')]=qs[_0x0eb1('0x24')](_0x3a2657['query']['offset']);}_0x44c1bf[_0x0eb1('0xd2')]=qs[_0x0eb1('0xd3')](_0x3a2657['query'][_0x0eb1('0xd3')]);_0x44c1bf[_0x0eb1('0x42')]=qs['filters'](_[_0x0eb1('0xca')](_0x3a2657[_0x0eb1('0x43')],_0x4ed85a[_0x0eb1('0xc9')]));_0x44c1bf[_0x0eb1('0x42')]['UserId']=_0xfe854e['id'];if(_0x3a2657['query'][_0x0eb1('0x33')]){_0x44c1bf[_0x0eb1('0x42')]=_['merge'](_0x44c1bf[_0x0eb1('0x42')],{'$or':_[_0x0eb1('0x35')](_0x44c1bf[_0x0eb1('0x47')],function(_0x80d24d){var _0x2d4f45={};_0x2d4f45[_0x80d24d]={'$like':'%'+_0x3a2657[_0x0eb1('0x43')][_0x0eb1('0x33')]+'%'};return _0x2d4f45;})});}_0x44c1bf=_[_0x0eb1('0x5e')]({},_0x44c1bf,_0x3a2657[_0x0eb1('0x5f')]);return db[_0x0eb1('0xe1')][_0x0eb1('0x27')]({'where':_0x44c1bf['where']})['then'](function(_0x2ad645){_0x4f20ad['count']=_0x2ad645;if(_0x3a2657[_0x0eb1('0x43')][_0x0eb1('0x5c')]){_0x44c1bf['include']=[{'all':!![]}];}return db['MailInteraction']['findAll'](_0x44c1bf);})[_0x0eb1('0x16')](function(_0x16b59f){_0x4f20ad[_0x0eb1('0x4b')]=_0x16b59f;return _0x4f20ad;});}})[_0x0eb1('0x16')](respondWithFilteredResult(_0x57eec8,_0x44c1bf))[_0x0eb1('0x54')](handleError(_0x57eec8,null));};exports[_0x0eb1('0xe2')]=function(_0x392e3e,_0x53ed43){var _0x2f4f96={};var _0x541f6c={};var _0x558c74;var _0x3e5edc;return db[_0x0eb1('0x3d')][_0x0eb1('0x94')]({'where':{'id':_0x392e3e[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x53ed43,null))[_0x0eb1('0x16')](function(_0x42d997){if(_0x42d997){_0x558c74=_0x42d997;_0x541f6c[_0x0eb1('0x56')]=_['keys'](db[_0x0eb1('0xe3')][_0x0eb1('0x59')]);_0x541f6c[_0x0eb1('0x43')]=_[_0x0eb1('0x58')](_0x392e3e[_0x0eb1('0x43')]);_0x541f6c['filters']=_[_0x0eb1('0x5a')](_0x541f6c[_0x0eb1('0x56')],_0x541f6c['query']);_0x2f4f96[_0x0eb1('0x47')]=_[_0x0eb1('0x5a')](_0x541f6c[_0x0eb1('0x56')],qs['fields'](_0x392e3e[_0x0eb1('0x43')]['fields']));_0x2f4f96[_0x0eb1('0x47')]=_0x2f4f96['attributes']['length']?_0x2f4f96[_0x0eb1('0x47')]:_0x541f6c[_0x0eb1('0x56')];_0x2f4f96[_0x0eb1('0xd2')]=qs[_0x0eb1('0xd3')](_0x392e3e[_0x0eb1('0x43')][_0x0eb1('0xd3')]);_0x2f4f96[_0x0eb1('0x42')]=qs['filters'](_[_0x0eb1('0xca')](_0x392e3e[_0x0eb1('0x43')],_0x541f6c[_0x0eb1('0xc9')]));if(_0x392e3e['query'][_0x0eb1('0x33')]){_0x2f4f96['where']=_[_0x0eb1('0x5e')](_0x2f4f96[_0x0eb1('0x42')],{'$or':_[_0x0eb1('0x35')](_0x2f4f96[_0x0eb1('0x47')],function(_0x482576){var _0x478a14={};_0x478a14[_0x482576]={'$like':'%'+_0x392e3e[_0x0eb1('0x43')][_0x0eb1('0x33')]+'%'};return _0x478a14;})});}_0x2f4f96=_['merge']({},_0x2f4f96,_0x392e3e[_0x0eb1('0x5f')]);return _0x558c74[_0x0eb1('0xe2')](_0x2f4f96);}})[_0x0eb1('0x16')](function(_0x3461ac){if(_0x3461ac){_0x3e5edc=_0x3461ac[_0x0eb1('0x4c')];if(!_0x392e3e[_0x0eb1('0x43')][_0x0eb1('0xcb')](_0x0eb1('0xd5'))){_0x2f4f96[_0x0eb1('0x26')]=qs[_0x0eb1('0x26')](_0x392e3e[_0x0eb1('0x43')][_0x0eb1('0x26')]);_0x2f4f96[_0x0eb1('0x24')]=qs[_0x0eb1('0x24')](_0x392e3e[_0x0eb1('0x43')][_0x0eb1('0x24')]);}return _0x558c74[_0x0eb1('0xe2')](_0x2f4f96);}})['then'](function(_0x563d70){if(_0x563d70){return _0x563d70?{'count':_0x3e5edc,'rows':_0x563d70}:null;}})[_0x0eb1('0x16')](respondWithResult(_0x53ed43,null))['catch'](handleError(_0x53ed43,null));};exports[_0x0eb1('0xe4')]=function(_0x325849,_0x58470c){var _0x2c8418={};var _0x29801e={};var _0x17b84e;var _0x5356da;return db['User'][_0x0eb1('0x94')]({'where':{'id':_0x325849[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x58470c,null))[_0x0eb1('0x16')](function(_0xf5f018){if(_0xf5f018){_0x17b84e=_0xf5f018;_0x29801e[_0x0eb1('0x56')]=_['keys'](db[_0x0eb1('0xe5')]['rawAttributes']);_0x29801e['query']=_[_0x0eb1('0x58')](_0x325849[_0x0eb1('0x43')]);_0x29801e[_0x0eb1('0xc9')]=_[_0x0eb1('0x5a')](_0x29801e[_0x0eb1('0x56')],_0x29801e[_0x0eb1('0x43')]);_0x2c8418['attributes']=_['intersection'](_0x29801e[_0x0eb1('0x56')],qs['fields'](_0x325849['query'][_0x0eb1('0x5b')]));_0x2c8418[_0x0eb1('0x47')]=_0x2c8418[_0x0eb1('0x47')]['length']?_0x2c8418[_0x0eb1('0x47')]:_0x29801e[_0x0eb1('0x56')];_0x2c8418['order']=qs['sort'](_0x325849['query'][_0x0eb1('0xd3')]);_0x2c8418[_0x0eb1('0x42')]=qs[_0x0eb1('0xc9')](_[_0x0eb1('0xca')](_0x325849[_0x0eb1('0x43')],_0x29801e['filters']));if(_0x325849['query'][_0x0eb1('0x33')]){_0x2c8418[_0x0eb1('0x42')]=_[_0x0eb1('0x5e')](_0x2c8418[_0x0eb1('0x42')],{'$or':_['map'](_0x2c8418[_0x0eb1('0x47')],function(_0x4b231d){var _0x4f7882={};_0x4f7882[_0x4b231d]={'$like':'%'+_0x325849[_0x0eb1('0x43')][_0x0eb1('0x33')]+'%'};return _0x4f7882;})});}_0x2c8418=_['merge']({},_0x2c8418,_0x325849[_0x0eb1('0x5f')]);return _0x17b84e['getFaxInteractions'](_0x2c8418);}})[_0x0eb1('0x16')](function(_0x18a7a7){if(_0x18a7a7){_0x5356da=_0x18a7a7[_0x0eb1('0x4c')];if(!_0x325849[_0x0eb1('0x43')]['hasOwnProperty'](_0x0eb1('0xd5'))){_0x2c8418[_0x0eb1('0x26')]=qs[_0x0eb1('0x26')](_0x325849[_0x0eb1('0x43')][_0x0eb1('0x26')]);_0x2c8418[_0x0eb1('0x24')]=qs[_0x0eb1('0x24')](_0x325849['query'][_0x0eb1('0x24')]);}return _0x17b84e[_0x0eb1('0xe4')](_0x2c8418);}})[_0x0eb1('0x16')](function(_0x359215){if(_0x359215){return _0x359215?{'count':_0x5356da,'rows':_0x359215}:null;}})[_0x0eb1('0x16')](respondWithResult(_0x58470c,null))['catch'](handleError(_0x58470c,null));};exports['getWhatsappInteractions']=function(_0x45d2ef,_0x363192){var _0x1dcb84={};var _0x302087={};var _0x19bc42;var _0x17bae0;return db[_0x0eb1('0x3d')][_0x0eb1('0x94')]({'where':{'id':_0x45d2ef['params']['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x363192,null))[_0x0eb1('0x16')](function(_0x3a5dc3){if(_0x3a5dc3){_0x19bc42=_0x3a5dc3;_0x302087[_0x0eb1('0x56')]=_[_0x0eb1('0x58')](db['WhatsappInteraction'][_0x0eb1('0x59')]);_0x302087[_0x0eb1('0x43')]=_['keys'](_0x45d2ef['query']);_0x302087[_0x0eb1('0xc9')]=_[_0x0eb1('0x5a')](_0x302087[_0x0eb1('0x56')],_0x302087['query']);_0x1dcb84[_0x0eb1('0x47')]=_['intersection'](_0x302087[_0x0eb1('0x56')],qs[_0x0eb1('0x5b')](_0x45d2ef[_0x0eb1('0x43')][_0x0eb1('0x5b')]));_0x1dcb84[_0x0eb1('0x47')]=_0x1dcb84['attributes']['length']?_0x1dcb84[_0x0eb1('0x47')]:_0x302087[_0x0eb1('0x56')];_0x1dcb84[_0x0eb1('0xd2')]=qs['sort'](_0x45d2ef[_0x0eb1('0x43')][_0x0eb1('0xd3')]);_0x1dcb84[_0x0eb1('0x42')]=qs[_0x0eb1('0xc9')](_[_0x0eb1('0xca')](_0x45d2ef['query'],_0x302087[_0x0eb1('0xc9')]));if(_0x45d2ef[_0x0eb1('0x43')]['filter']){_0x1dcb84[_0x0eb1('0x42')]=_[_0x0eb1('0x5e')](_0x1dcb84[_0x0eb1('0x42')],{'$or':_[_0x0eb1('0x35')](_0x1dcb84[_0x0eb1('0x47')],function(_0x71994){var _0x4d9f11={};_0x4d9f11[_0x71994]={'$like':'%'+_0x45d2ef[_0x0eb1('0x43')][_0x0eb1('0x33')]+'%'};return _0x4d9f11;})});}_0x1dcb84=_['merge']({},_0x1dcb84,_0x45d2ef[_0x0eb1('0x5f')]);return _0x19bc42[_0x0eb1('0xe6')](_0x1dcb84);}})[_0x0eb1('0x16')](function(_0xadf54f){if(_0xadf54f){_0x17bae0=_0xadf54f[_0x0eb1('0x4c')];if(!_0x45d2ef['query'][_0x0eb1('0xcb')]('nolimit')){_0x1dcb84['limit']=qs[_0x0eb1('0x26')](_0x45d2ef[_0x0eb1('0x43')][_0x0eb1('0x26')]);_0x1dcb84['offset']=qs[_0x0eb1('0x24')](_0x45d2ef[_0x0eb1('0x43')]['offset']);}return _0x19bc42[_0x0eb1('0xe6')](_0x1dcb84);}})['then'](function(_0x598259){if(_0x598259){return _0x598259?{'count':_0x17bae0,'rows':_0x598259}:null;}})[_0x0eb1('0x16')](respondWithResult(_0x363192,null))[_0x0eb1('0x54')](handleError(_0x363192,null));};exports[_0x0eb1('0xe7')]=function(_0xb3a3cc,_0xe71ad8,_0x4193f5){var _0xd2c6ae;var _0x24db89;var _0x92a65c;var _0x2fefb3=!_[_0x0eb1('0x6a')](_0xb3a3cc[_0x0eb1('0x62')]['id'])?_0xb3a3cc[_0x0eb1('0x62')]['id']:!_['isNil'](_0xb3a3cc['user']['id'])?_0xb3a3cc['user']['id']:null;return db['User'][_0x0eb1('0x38')]({'where':{'id':_0x2fefb3,'role':{'$or':['admin',_0x0eb1('0x2e'),'agent']}},'attributes':['id',_0x0eb1('0x39'),_0x0eb1('0xe8'),_0x0eb1('0xe9'),_0x0eb1('0x2c'),_0x0eb1('0x67'),_0x0eb1('0xea')]})['then'](function(_0x20b9a1){if(_0x20b9a1){if(_0x20b9a1['role']===_0x0eb1('0x30')){_0xd2c6ae=_0x20b9a1;if(_0xb3a3cc[_0x0eb1('0x61')][_0x0eb1('0x9c')]){_0x92a65c=util['format']('LOCAL/%s@from-sip/n',_0xd2c6ae[_0xb3a3cc[_0x0eb1('0x61')][_0x0eb1('0x9c')]]);}else if(_0xb3a3cc[_0x0eb1('0x61')][_0x0eb1('0xeb')]){_0x92a65c=util[_0x0eb1('0xec')](_0x0eb1('0xa8'),_0xb3a3cc[_0x0eb1('0x61')][_0x0eb1('0xeb')]);}else{_0x92a65c=util['format'](_0x0eb1('0xa8'),_0xd2c6ae['name']);}socket['to'](util['format'](_0x0eb1('0xed'),_0xd2c6ae[_0x0eb1('0x39')]))[_0x0eb1('0xa3')]('user:forcelogout',{'user':{'id':_0xd2c6ae['id'],'name':_0xd2c6ae[_0x0eb1('0x39')]},'ip':_0xb3a3cc[_0x0eb1('0xee')][_0x0eb1('0xef')]||_0xb3a3cc[_0x0eb1('0xf0')]['remoteAddress']||_0xb3a3cc[_0x0eb1('0xf1')][_0x0eb1('0xf2')]||_0xb3a3cc[_0x0eb1('0xf0')]['socket'][_0x0eb1('0xf2')]});return db[_0x0eb1('0xaa')]['destroy']({'where':{'membername':_0xd2c6ae[_0x0eb1('0x39')]},'individualHooks':!![]});}}else{throw new db[(_0x0eb1('0x8c'))][(_0x0eb1('0x8d'))](_0x0eb1('0xf3'));}})[_0x0eb1('0x16')](function(){if(_0xd2c6ae){return _0xd2c6ae['getVoiceQueues']({'raw':!![]});}})[_0x0eb1('0x16')](function(_0x110c44){if(_0xd2c6ae){if(_0x110c44){_0x24db89=_0x110c44;if(_0x24db89[_0x0eb1('0x4c')]){var _0x2709b5=_0x24db89[_0x0eb1('0x35')](function(_0x3d10df){var _0x26c739={'membername':_0xd2c6ae[_0x0eb1('0x39')],'UserId':_0xd2c6ae['id'],'queue_name':_0x3d10df['name'],'VoiceQueueId':_0x3d10df['id'],'interface':_0x92a65c,'paused':_0xd2c6ae[_0x0eb1('0xea')]||![],'penalty':_0x3d10df[_0x0eb1('0xf4')]||0x0};return db[_0x0eb1('0xaa')][_0x0eb1('0xab')](_0x26c739);});return Promise['all'](_0x2709b5);}}}})[_0x0eb1('0x16')](function(){if(_0xd2c6ae){return db['MemberReport'][_0x0eb1('0x49')]({'where':{'membername':_0xd2c6ae[_0x0eb1('0x39')],'exitAt':null}});}})['then'](function(_0x6a3405){if(_0xd2c6ae){var _0x3689bf=[];_0x6a3405[_0x0eb1('0xf5')](function(_0x31d0cf){_0x3689bf[_0x0eb1('0x48')](_0x31d0cf['update']({'exitAt':moment()[_0x0eb1('0xec')](_0x0eb1('0xf6'))}));});return Promise[_0x0eb1('0x53')](_0x3689bf);}})[_0x0eb1('0x16')](function(){if(_0xd2c6ae){var _0x5aafb7=[];var _0x3e7bcd=[];var _0x1701df=utils['getChannels']();var _0x514ea8={'membername':_0xd2c6ae[_0x0eb1('0x39')],'interface':_0x92a65c,'enterAt':moment()['format'](_0x0eb1('0xf6')),'role':_0xd2c6ae[_0x0eb1('0x2c')],'internal':_0xd2c6ae[_0x0eb1('0x67')]};_0x1701df['forEach'](function(_0x285dfe){_0x5aafb7[_0x0eb1('0x48')](_[_0x0eb1('0x5e')]({'channel':_0x285dfe,'type':'LOGIN','data1':_0xb3a3cc[_0x0eb1('0x61')][_0x0eb1('0xf7')],'data2':_0x92a65c},_0x514ea8));if(_0xd2c6ae[_0x0eb1('0xea')]){_0x3e7bcd['push'](_['merge']({'channel':_0x285dfe,'type':_0x0eb1('0xf8'),'data1':_0x0eb1('0xf9')},_0x514ea8));}});return db[_0x0eb1('0xfa')][_0x0eb1('0x87')](_0x5aafb7[_0x0eb1('0xfb')](_0x3e7bcd),{'individualHooks':!![]});}})[_0x0eb1('0x16')](function(){if(_0xd2c6ae){return _0xd2c6ae[_0x0eb1('0x60')]({'online':!![],'lastLoginAt':moment()[_0x0eb1('0xec')]('YYYY-MM-DD\x20HH:mm:ss'),'voicePause':_0xd2c6ae[_0x0eb1('0xea')]||![],'mailPause':_0xd2c6ae['loginInPause']||![],'chatPause':_0xd2c6ae['loginInPause']||![],'faxPause':_0xd2c6ae[_0x0eb1('0xea')]||![],'smsPause':_0xd2c6ae['loginInPause']||![],'openchannelPause':_0xd2c6ae[_0x0eb1('0xea')]||![],'whatsappPause':_0xd2c6ae[_0x0eb1('0xea')]||![],'pauseType':_0xd2c6ae[_0x0eb1('0xea')]?'LOGININPAUSE':null,'interface':_0x92a65c,'lastPauseAt':moment()[_0x0eb1('0xec')](_0x0eb1('0xf6'))});}})[_0x0eb1('0x16')](function(_0x30c15b){if(_0xb3a3cc[_0x0eb1('0xfc')]){return _0x4193f5();}else{return Promise['resolve'](_0x30c15b)[_0x0eb1('0x16')](respondWithResult(_0xe71ad8,null));}})[_0x0eb1('0x54')](handleError(_0xe71ad8,null));};exports[_0x0eb1('0xfd')]=function(_0xdf0b2d,_0x1eb966){var _0x3bea91;return db[_0x0eb1('0x3d')]['find']({'where':{'id':_0xdf0b2d['params']['id'],'role':_0x0eb1('0x30')},'attributes':['id',_0x0eb1('0x39'),_0x0eb1('0x2c')]})[_0x0eb1('0x16')](handleEntityNotFound(_0x1eb966,null))[_0x0eb1('0x16')](function(_0x178974){if(_0x178974){_0x3bea91=_0x178974;return db[_0x0eb1('0xaa')][_0x0eb1('0x2b')]({'where':{'membername':_0x3bea91[_0x0eb1('0x39')]},'individualHooks':!![]});}})['then'](function(){return db[_0x0eb1('0xfa')][_0x0eb1('0x49')]({'where':{'membername':_0x3bea91['name'],'exitAt':null}});})['then'](function(_0x265f0e){var _0x57403b=[];_0x265f0e[_0x0eb1('0xf5')](function(_0x4c5521){_0x57403b[_0x0eb1('0x48')](_0x4c5521[_0x0eb1('0x60')]({'exitAt':moment()[_0x0eb1('0xec')](_0x0eb1('0xf6'))}));});return Promise['all'](_0x57403b);})['then'](function(){return _0x3bea91[_0x0eb1('0x60')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})['then'](respondWithResult(_0x1eb966,null))[_0x0eb1('0x54')](handleError(_0x1eb966,null));};exports['pause']=function(_0x1becd2,_0x2da5a8){var _0x439b6e;return db[_0x0eb1('0xaa')]['update']({'paused':0x1},{'where':{'UserId':_0x1becd2[_0x0eb1('0x62')]['id']},'individualHooks':!![]})[_0x0eb1('0x16')](function(){return db[_0x0eb1('0x3d')][_0x0eb1('0x38')]({'where':{'id':_0x1becd2[_0x0eb1('0x62')]['id'],'role':_0x0eb1('0x30')},'attributes':['id','name',_0x0eb1('0x2c'),_0x0eb1('0x67'),'interface',_0x0eb1('0x9b')]});})[_0x0eb1('0x16')](handleEntityNotFound(_0x2da5a8,null))[_0x0eb1('0x16')](function(_0x2061b3){if(_0x2061b3){_0x439b6e=_0x2061b3;return respondWithRpcPromise(_0x0eb1('0xfe'),_0x0eb1('0xff'),{'id':_0x439b6e['id'],'name':_0x439b6e['name'],'pause':!![]});}})[_0x0eb1('0x16')](function(){if(_0x439b6e){return db[_0x0eb1('0xfa')][_0x0eb1('0x49')]({'where':{'membername':_0x439b6e[_0x0eb1('0x39')],'type':_0x0eb1('0xf8'),'exitAt':null}});}})['then'](function(_0x3c9988){if(_0x3c9988['length']){var _0x458d1a=moment()[_0x0eb1('0xec')](_0x0eb1('0xf6'));for(var _0x4e51d1=0x0,_0x3d3631=_0x3c9988[_0x0eb1('0x4c')];_0x4e51d1<_0x3d3631;_0x4e51d1++){_0x3c9988[_0x4e51d1]['updateAttributes']({'exitAt':_0x458d1a});}}})[_0x0eb1('0x16')](function(){var _0x30b731=[];var _0xa0fc56=utils[_0x0eb1('0x100')]();_0xa0fc56['forEach'](function(_0x30eb5b){_0x30b731[_0x0eb1('0x48')]({'channel':_0x30eb5b,'membername':_0x439b6e[_0x0eb1('0x39')],'interface':_[_0x0eb1('0x6a')](_0x439b6e[_0x0eb1('0x9c')])?util['format'](_0x0eb1('0xa8'),_0x439b6e[_0x0eb1('0x39')]):_0x439b6e[_0x0eb1('0x9c')],'type':'PAUSE','enterAt':moment()[_0x0eb1('0xec')]('YYYY-MM-DD\x20HH:mm:ss'),'data1':_0x1becd2[_0x0eb1('0x61')][_0x0eb1('0x101')]||'DEFAULT\x20PAUSE','role':_0x439b6e[_0x0eb1('0x2c')],'internal':_0x439b6e[_0x0eb1('0x67')]});});return db[_0x0eb1('0xfa')][_0x0eb1('0x87')](_0x30b731,{'individualHooks':!![]});})['then'](function(){return _0x439b6e[_0x0eb1('0x60')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x1becd2['body'][_0x0eb1('0x101')]||_0x0eb1('0x102'),'lastPauseAt':moment()[_0x0eb1('0xec')](_0x0eb1('0xf6'))});})[_0x0eb1('0x16')](respondWithResult(_0x2da5a8,null))[_0x0eb1('0x54')](handleError(_0x2da5a8,null));};exports[_0x0eb1('0x103')]=function(_0x21c9a6,_0x12fcae){if(_0x21c9a6[_0x0eb1('0x61')][_0x0eb1('0xac')]&&!utils['isValidChannel'](_0x21c9a6[_0x0eb1('0x61')][_0x0eb1('0xac')])){throw new APIBadRequestError(util[_0x0eb1('0xec')](_0x0eb1('0x104'),_0x21c9a6['body']['channel']));}return db[_0x0eb1('0x3d')][_0x0eb1('0x38')]({'where':{'id':_0x21c9a6[_0x0eb1('0x62')]['id']},'attributes':['id',_0x0eb1('0x39'),_0x0eb1('0x2c'),_0x0eb1('0x67'),'interface',_0x0eb1('0x9b'),_0x0eb1('0xa9'),_0x0eb1('0x105'),_0x0eb1('0x106'),_0x0eb1('0x107'),'openchannelPause',_0x0eb1('0x108'),_0x0eb1('0x109'),_0x0eb1('0x10a'),_0x0eb1('0x10b')]})[_0x0eb1('0x16')](function(_0x555759){if(!_0x555759){throw new APINotFoundError(util['format']('User\x20with\x20id\x20%s\x20not\x20found',_0x21c9a6[_0x0eb1('0x62')]['id']));}return _0x555759['unpause'](_0x21c9a6['body'][_0x0eb1('0xac')]);})[_0x0eb1('0x16')](respondWithResult(_0x12fcae,null))[_0x0eb1('0x54')](APIHandleError(_0x12fcae));};exports['getTeams']=function(_0x31a644,_0x30fa0a){var _0x1f8900={};var _0x5f5463={};var _0x1fef64;var _0x76edd1;return db[_0x0eb1('0x3d')]['findOne']({'where':{'id':_0x31a644[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x30fa0a,null))['then'](function(_0x1a1934){if(_0x1a1934){_0x1fef64=_0x1a1934;_0x5f5463[_0x0eb1('0x56')]=_['keys'](db[_0x0eb1('0x10c')]['rawAttributes']);_0x5f5463['query']=_['keys'](_0x31a644[_0x0eb1('0x43')]);_0x5f5463[_0x0eb1('0xc9')]=_['intersection'](_0x5f5463[_0x0eb1('0x56')],_0x5f5463[_0x0eb1('0x43')]);_0x1f8900[_0x0eb1('0x47')]=_['intersection'](_0x5f5463[_0x0eb1('0x56')],qs[_0x0eb1('0x5b')](_0x31a644['query'][_0x0eb1('0x5b')]));_0x1f8900[_0x0eb1('0x47')]=_0x1f8900[_0x0eb1('0x47')][_0x0eb1('0x4c')]?_0x1f8900[_0x0eb1('0x47')]:_0x5f5463['model'];_0x1f8900[_0x0eb1('0xd2')]=qs[_0x0eb1('0xd3')](_0x31a644['query']['sort']);_0x1f8900[_0x0eb1('0x42')]=qs[_0x0eb1('0xc9')](_[_0x0eb1('0xca')](_0x31a644[_0x0eb1('0x43')],_0x5f5463[_0x0eb1('0xc9')]));if(_0x31a644[_0x0eb1('0x43')][_0x0eb1('0x33')]){_0x1f8900[_0x0eb1('0x42')]=_[_0x0eb1('0x5e')](_0x1f8900[_0x0eb1('0x42')],{'$or':_[_0x0eb1('0x35')](_0x1f8900[_0x0eb1('0x47')],function(_0xf16c5d){var _0x219d25={};_0x219d25[_0xf16c5d]={'$like':'%'+_0x31a644[_0x0eb1('0x43')][_0x0eb1('0x33')]+'%'};return _0x219d25;})});}_0x1f8900=_[_0x0eb1('0x5e')]({},_0x1f8900,_0x31a644[_0x0eb1('0x5f')]);return _0x1fef64[_0x0eb1('0x10d')](_0x1f8900);}})[_0x0eb1('0x16')](function(_0x4a1325){if(_0x4a1325){_0x76edd1=_0x4a1325[_0x0eb1('0x4c')];if(!_0x31a644[_0x0eb1('0x43')][_0x0eb1('0xcb')](_0x0eb1('0xd5'))){_0x1f8900['limit']=qs[_0x0eb1('0x26')](_0x31a644[_0x0eb1('0x43')][_0x0eb1('0x26')]);_0x1f8900[_0x0eb1('0x24')]=qs[_0x0eb1('0x24')](_0x31a644[_0x0eb1('0x43')][_0x0eb1('0x24')]);}return _0x1fef64[_0x0eb1('0x10d')](_0x1f8900);}})[_0x0eb1('0x16')](function(_0x23631a){if(_0x23631a){return _0x23631a?{'count':_0x76edd1,'rows':_0x23631a}:null;}})[_0x0eb1('0x16')](respondWithResult(_0x30fa0a,null))[_0x0eb1('0x54')](handleError(_0x30fa0a,null));};exports[_0x0eb1('0x10e')]=function(_0x266948,_0x587439){var _0xa7d0b9=_0x266948[_0x0eb1('0x62')]['id'];var _0x35f018=_0x266948[_0x0eb1('0x61')]?_0x266948['body']['ids']:null;var _0x2a6076=[];return Promise[_0x0eb1('0x10f')]()[_0x0eb1('0x16')](function(){if(!_0x35f018)throw new APIBadRequestError(_0x0eb1('0x110'));})[_0x0eb1('0x16')](function(){return db[_0x0eb1('0x3d')][_0x0eb1('0x94')]({'where':{'id':_0xa7d0b9}});})[_0x0eb1('0x16')](function(_0x494932){if(!_0x494932)throw new APINotFoundError(util[_0x0eb1('0xec')](_0x0eb1('0x111'),_0x266948['params']['id']));return db[_0x0eb1('0x6c')][_0x0eb1('0x112')](function(_0x3aa889){return _0x494932[_0x0eb1('0x10e')](_0x35f018,{'transaction':_0x3aa889})[_0x0eb1('0x16')](function(){return db[_0x0eb1('0x10c')]['findAll']({'where':{'id':{'$in':_0x35f018}}});})[_0x0eb1('0x16')](function(_0xbe7d32){var _0x81a3d4=_['map'](_0xbe7d32,function(_0x15f467){return _0x15f467[_0x0eb1('0x113')]();});return Promise[_0x0eb1('0x53')](_0x81a3d4);})['then'](function(_0x4dd4f5){_0x2a6076=_[_0x0eb1('0x114')](_0x4dd4f5);var _0x3c8904=_['map'](_0x2a6076,function(_0x3fd98e){return _0x3fd98e[_0x0eb1('0x115')](_0x494932['id'],{'transaction':_0x3aa889});});return Promise['all'](_0x3c8904);})[_0x0eb1('0x16')](function(){if(!_0x494932[_0x0eb1('0x9b')])return;var _0x363d89=_['filter'](_0x2a6076,function(_0x43a41f){return _0x43a41f[_0x0eb1('0x116')](_0x0eb1('0xac'))===_0x0eb1('0x117');});var _0x24fe93=_[_0x0eb1('0x35')](_0x363d89,function(_0x5b0c4d){return db['UserVoiceQueueRt'][_0x0eb1('0xab')]({'membername':_0x494932[_0x0eb1('0x39')],'UserId':_0x494932['id'],'queue_name':_0x5b0c4d[_0x0eb1('0x39')],'VoiceQueueId':_0x5b0c4d['id'],'interface':_[_0x0eb1('0x6a')](_0x494932[_0x0eb1('0x9c')])?util[_0x0eb1('0xec')](_0x0eb1('0xa8'),_0x494932[_0x0eb1('0x39')]):_0x494932['interface'],'paused':_0x494932[_0x0eb1('0xa9')]||![],'penalty':_0x494932[_0x0eb1('0xa0')]},{'transaction':_0x3aa889});});return Promise[_0x0eb1('0x53')](_0x24fe93);})['then'](function(){return db['TeamVoicePrefix']['findAll']({'where':{'teamId':{'$in':_0x35f018}}});})[_0x0eb1('0x16')](function(_0x3304ed){var _0x581e05=_[_0x0eb1('0x35')](_0x3304ed,function(_0x43fe40){return db[_0x0eb1('0x118')][_0x0eb1('0x7f')]({'UserId':_0x494932['id'],'VoicePrefixId':_0x43fe40[_0x0eb1('0x119')]},{'transaction':_0x3aa889});});return Promise['all'](_0x581e05);});});})[_0x0eb1('0x16')](function(){for(var _0x5bb2a4=0x0;_0x5bb2a4<_0x2a6076['length'];_0x5bb2a4++){var _0x5a04a8=_0x2a6076[_0x5bb2a4]['getDataValue'](_0x0eb1('0xac'));var _0x3170fa=_0x5a04a8+_0x0eb1('0xb0');socket[_0x0eb1('0xa3')](_0x0eb1('0x2e')+_0x5a04a8+_0x0eb1('0xa4'),{'UserId':_0xa7d0b9,['queueField']:_0x2a6076[_0x5bb2a4]['id']});}})[_0x0eb1('0x16')](respondWithStatusCode(_0x587439,null))['catch'](APIHandleError(_0x587439));};exports['removeTeams']=function(_0x462e00,_0x386a4b){var _0x5ba8b0=_0x462e00['params']['id'];var _0x2b7c34=null;if(_0x462e00[_0x0eb1('0x43')]['ids']){_0x2b7c34=_[_0x0eb1('0xaf')](_0x462e00[_0x0eb1('0x43')][_0x0eb1('0x65')])?_0x462e00[_0x0eb1('0x43')][_0x0eb1('0x65')]:[_0x462e00[_0x0eb1('0x43')][_0x0eb1('0x65')]];}var _0x20ad53=[];return Promise['resolve']()['then'](function(){if(!_0x2b7c34)throw new APIBadRequestError(_0x0eb1('0x11a'));})['then'](function(){return db[_0x0eb1('0x3d')]['findOne']({'where':{'id':_0x5ba8b0}});})['then'](function(_0x2a0a28){if(!_0x2a0a28)throw new APINotFoundError(util[_0x0eb1('0xec')](_0x0eb1('0x111'),_0x462e00[_0x0eb1('0x62')]['id']));return db['sequelize'][_0x0eb1('0x112')](function(_0x5684e4){return _0x2a0a28[_0x0eb1('0x11b')](_0x2b7c34,{'transaction':_0x5684e4})[_0x0eb1('0x16')](function(){return db[_0x0eb1('0x10c')][_0x0eb1('0x49')]({'where':{'id':{'$in':_0x2b7c34}}});})['then'](function(_0x3d5b61){var _0x406116=_[_0x0eb1('0x35')](_0x3d5b61,function(_0x5a6764){return _0x5a6764[_0x0eb1('0x113')]();});return Promise[_0x0eb1('0x53')](_0x406116);})['then'](function(_0x1f0d30){_0x20ad53=_[_0x0eb1('0x114')](_0x1f0d30);var _0x4fa90e=_['map'](_0x20ad53,function(_0x15f917){return _0x15f917[_0x0eb1('0x11c')](_0x2a0a28['id'],{'transaction':_0x5684e4});});return Promise['all'](_0x4fa90e);})[_0x0eb1('0x16')](function(){if(!_0x2a0a28[_0x0eb1('0x9b')])return;var _0x4162dd=_[_0x0eb1('0x33')](_0x20ad53,function(_0x4b9243){return _0x4b9243['getDataValue'](_0x0eb1('0xac'))===_0x0eb1('0x117');});var _0x56f1e3=_['map'](_0x4162dd,function(_0x5848ad){return db[_0x0eb1('0xaa')][_0x0eb1('0x2b')]({'where':{'VoiceQueueId':_0x5848ad['id'],'UserId':_0x2a0a28['id']},'transaction':_0x5684e4});});return Promise['all'](_0x56f1e3);})[_0x0eb1('0x16')](function(){return db[_0x0eb1('0x11d')]['findAll']({'where':{'teamId':{'$in':_0x2b7c34}}});})[_0x0eb1('0x16')](function(_0x386e32){var _0x2e5d12=_[_0x0eb1('0x35')](_0x386e32,function(_0x5c7da9){return db['UserVoicePrefix'][_0x0eb1('0x2b')]({'where':{'UserId':_0x2a0a28['id'],'VoicePrefixId':_0x5c7da9[_0x0eb1('0x119')]}},{'transaction':_0x5684e4});});return Promise[_0x0eb1('0x53')](_0x2e5d12);});});})['then'](function(){for(var _0x4c4b20=0x0;_0x4c4b20<_0x20ad53['length'];_0x4c4b20++){var _0x4c06ff=_0x20ad53[_0x4c4b20][_0x0eb1('0x116')]('channel');var _0x23d72a=_0x4c06ff+_0x0eb1('0xb0');socket['emit'](_0x0eb1('0x2e')+_0x4c06ff+'Queue:remove',{'UserId':_0x5ba8b0,['queueField']:_0x20ad53[_0x4c4b20]['id']});}})[_0x0eb1('0x16')](respondWithStatusCode(_0x386a4b,null))[_0x0eb1('0x54')](APIHandleError(_0x386a4b));};exports[_0x0eb1('0x11e')]=function(_0x2d4731,_0x2a1aea){var _0x3f83c9={};var _0x45f894={};var _0x5a384f;var _0x19adb0;return db[_0x0eb1('0x3d')][_0x0eb1('0x94')]({'where':{'id':_0x2d4731[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x2a1aea,null))[_0x0eb1('0x16')](function(_0x587684){if(_0x587684){_0x5a384f=_0x587684;_0x45f894[_0x0eb1('0x56')]=_['keys'](db[_0x0eb1('0xcc')][_0x0eb1('0x59')]);_0x45f894[_0x0eb1('0x43')]=_[_0x0eb1('0x58')](_0x2d4731['query']);_0x45f894[_0x0eb1('0xc9')]=_[_0x0eb1('0x5a')](_0x45f894[_0x0eb1('0x56')],_0x45f894[_0x0eb1('0x43')]);_0x3f83c9[_0x0eb1('0x47')]=_[_0x0eb1('0x5a')](_0x45f894['model'],qs[_0x0eb1('0x5b')](_0x2d4731['query']['fields']));_0x3f83c9['attributes']=_0x3f83c9['attributes'][_0x0eb1('0x4c')]?_0x3f83c9[_0x0eb1('0x47')]:_0x45f894[_0x0eb1('0x56')];_0x3f83c9['order']=qs[_0x0eb1('0xd3')](_0x2d4731[_0x0eb1('0x43')][_0x0eb1('0xd3')]);_0x3f83c9[_0x0eb1('0x42')]=qs['filters'](_[_0x0eb1('0xca')](_0x2d4731[_0x0eb1('0x43')],_0x45f894[_0x0eb1('0xc9')]));if(_0x2d4731['query'][_0x0eb1('0x33')]){_0x3f83c9['where']=_[_0x0eb1('0x5e')](_0x3f83c9[_0x0eb1('0x42')],{'$or':_[_0x0eb1('0x35')](_0x3f83c9[_0x0eb1('0x47')],function(_0x2a8014){var _0x3a8ab8={};_0x3a8ab8[_0x2a8014]={'$like':'%'+_0x2d4731['query'][_0x0eb1('0x33')]+'%'};return _0x3a8ab8;})});}_0x3f83c9=_[_0x0eb1('0x5e')]({},_0x3f83c9,_0x2d4731['options']);return _0x5a384f[_0x0eb1('0x11e')](_0x3f83c9);}})[_0x0eb1('0x16')](function(_0x6b28ab){if(_0x6b28ab){_0x19adb0=_0x6b28ab[_0x0eb1('0x4c')];if(!_0x2d4731[_0x0eb1('0x43')]['hasOwnProperty'](_0x0eb1('0xd5'))){_0x3f83c9[_0x0eb1('0x26')]=qs[_0x0eb1('0x26')](_0x2d4731[_0x0eb1('0x43')]['limit']);_0x3f83c9[_0x0eb1('0x24')]=qs['offset'](_0x2d4731[_0x0eb1('0x43')][_0x0eb1('0x24')]);}return _0x5a384f[_0x0eb1('0x11e')](_0x3f83c9);}})[_0x0eb1('0x16')](function(_0x598c11){if(_0x598c11){return _0x598c11?{'count':_0x19adb0,'rows':_0x598c11}:null;}})[_0x0eb1('0x16')](respondWithResult(_0x2a1aea,null))[_0x0eb1('0x54')](handleError(_0x2a1aea,null));};exports[_0x0eb1('0x11f')]=function(_0x85a1a9,_0x202f11){var _0x5f3d78={};var _0x1f460d={};var _0x356c46;return db[_0x0eb1('0x3d')][_0x0eb1('0x94')]({'where':{'id':_0x85a1a9[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x202f11,null))[_0x0eb1('0x16')](function(_0x579ae5){if(_0x579ae5){_0x356c46=_0x579ae5;_0x1f460d[_0x0eb1('0x56')]=_[_0x0eb1('0x58')](db[_0x0eb1('0x3d')]['rawAttributes']);_0x1f460d[_0x0eb1('0x43')]=_[_0x0eb1('0x58')](_0x85a1a9[_0x0eb1('0x43')]);_0x1f460d['filters']=_['intersection'](_0x1f460d[_0x0eb1('0x56')],_0x1f460d['query']);_0x5f3d78[_0x0eb1('0x47')]=_[_0x0eb1('0x5a')](_0x1f460d['model'],qs[_0x0eb1('0x5b')](_0x85a1a9['query']['fields']));_0x5f3d78[_0x0eb1('0x47')]=_0x5f3d78[_0x0eb1('0x47')][_0x0eb1('0x4c')]?_0x5f3d78[_0x0eb1('0x47')]:_0x1f460d[_0x0eb1('0x56')];_0x5f3d78[_0x0eb1('0xd2')]=qs[_0x0eb1('0xd3')](_0x85a1a9[_0x0eb1('0x43')]['sort']);_0x5f3d78['where']=qs[_0x0eb1('0xc9')](_[_0x0eb1('0xca')](_0x85a1a9['query'],_0x1f460d[_0x0eb1('0xc9')]));if(_0x85a1a9[_0x0eb1('0x43')][_0x0eb1('0x33')]){_0x5f3d78[_0x0eb1('0x42')]=_[_0x0eb1('0x5e')](_0x5f3d78[_0x0eb1('0x42')],{'$or':_[_0x0eb1('0x35')](_0x5f3d78[_0x0eb1('0x47')],function(_0x2a6689){var _0x3810ac={};_0x3810ac[_0x2a6689]={'$like':'%'+_0x85a1a9[_0x0eb1('0x43')][_0x0eb1('0x33')]+'%'};return _0x3810ac;})});}_0x5f3d78[_0x0eb1('0x56')]=db['User'];_0x5f3d78['as']=_0x0eb1('0x2f');_0x5f3d78=_[_0x0eb1('0x5e')]({},_0x5f3d78,_0x85a1a9[_0x0eb1('0x5f')]);return _0x356c46['getVoiceQueues']({'include':[_0x5f3d78]});}})[_0x0eb1('0x16')](function(_0x2d9dd8){if(_0x2d9dd8){var _0xdba31b={},_0x2f60f2=[];for(var _0x1f2337=0x0;_0x1f2337<_0x2d9dd8[_0x0eb1('0x4c')];_0x1f2337+=0x1){for(var _0x225dbb=0x0,_0x52ecc4;_0x225dbb<_0x2d9dd8[_0x1f2337][_0x0eb1('0x2f')]['length'];_0x225dbb+=0x1){_0x52ecc4=_0x2d9dd8[_0x1f2337][_0x0eb1('0x2f')][_0x225dbb][_0x0eb1('0xa7')]({'plain':!![]});_0xdba31b[_0x52ecc4['id']]=_0x52ecc4;}}_0xdba31b=_[_0x0eb1('0x120')](_0xdba31b);for(var _0xb19cd7=qs[_0x0eb1('0x24')](_0x85a1a9[_0x0eb1('0x43')]['offset']);_0xb19cd7<_0xdba31b[_0x0eb1('0x4c')]&&_0x2f60f2[_0x0eb1('0x4c')]<qs[_0x0eb1('0x26')](_0x85a1a9[_0x0eb1('0x43')][_0x0eb1('0x26')]);_0xb19cd7+=0x1){if(_0xdba31b[_0xb19cd7]){_0x2f60f2[_0x0eb1('0x48')](_0xdba31b[_0xb19cd7]);}}return{'count':_0xdba31b['length'],'rows':_0x2f60f2};}})[_0x0eb1('0x16')](respondWithResult(_0x202f11,null))[_0x0eb1('0x54')](handleError(_0x202f11,null));};exports[_0x0eb1('0x2b')]=function(_0x5ba39e,_0x476b37){if(_0x5ba39e[_0x0eb1('0x2e')]['id']==_0x5ba39e[_0x0eb1('0x62')]['id']){return _0x476b37[_0x0eb1('0x21')](0x1f4)[_0x0eb1('0x3c')]({'message':_0x0eb1('0x121')});}return db[_0x0eb1('0x3d')][_0x0eb1('0x38')]({'where':{'id':_0x5ba39e[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x476b37,null))[_0x0eb1('0x16')](removeEntity(_0x476b37,null))[_0x0eb1('0x54')](handleError(_0x476b37,null));};exports['addChatInteractions']=function(_0x328768,_0x51d3f3){return db[_0x0eb1('0x3d')]['find']({'where':{'id':_0x328768['params']['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x51d3f3,null))[_0x0eb1('0x16')](function(_0x3d3df2){if(_0x3d3df2){return _0x3d3df2[_0x0eb1('0x122')](_0x328768[_0x0eb1('0x61')]['ids'],_[_0x0eb1('0x66')](_0x328768['body'],[_0x0eb1('0x65'),'id'])||{})[_0x0eb1('0xa1')](function(){for(var _0x2e680d=0x0;_0x2e680d<_0x328768[_0x0eb1('0x61')][_0x0eb1('0x65')][_0x0eb1('0x4c')];_0x2e680d+=0x1){socket[_0x0eb1('0xa3')](_0x0eb1('0x123'),{'ChatInteractionId':Number(_0x328768[_0x0eb1('0x61')][_0x0eb1('0x65')][_0x2e680d]),'UserId':Number(_0x328768[_0x0eb1('0x62')]['id'])});}return _0x328768['body']['ids'];});}})[_0x0eb1('0x16')](respondWithResult(_0x51d3f3,null))[_0x0eb1('0x54')](handleError(_0x51d3f3,null));};exports[_0x0eb1('0x124')]=function(_0x16926e,_0x4393c3){return db['User'][_0x0eb1('0x38')]({'where':{'id':_0x16926e['params']['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x4393c3,null))[_0x0eb1('0x16')](function(_0x4b7ee8){if(_0x4b7ee8){return _0x4b7ee8[_0x0eb1('0x124')](_0x16926e[_0x0eb1('0x43')][_0x0eb1('0x65')])['then'](function(){if(_['isArray'](_0x16926e[_0x0eb1('0x43')][_0x0eb1('0x65')])){for(var _0x2edc3a=0x0;_0x2edc3a<_0x16926e['query'][_0x0eb1('0x65')]['length'];_0x2edc3a+=0x1){socket[_0x0eb1('0xa3')](_0x0eb1('0x125'),{'ChatInteractionId':Number(_0x16926e[_0x0eb1('0x43')]['ids'][_0x2edc3a]),'UserId':Number(_0x16926e[_0x0eb1('0x62')]['id'])});}}else{socket[_0x0eb1('0xa3')](_0x0eb1('0x125'),{'ChatInteractionId':Number(_0x16926e[_0x0eb1('0x43')][_0x0eb1('0x65')]),'UserId':Number(_0x16926e[_0x0eb1('0x62')]['id'])});}});}})[_0x0eb1('0x16')](respondWithStatusCode(_0x4393c3,null))[_0x0eb1('0x54')](handleError(_0x4393c3,null));};exports[_0x0eb1('0x126')]=function(_0x21ad67,_0x7d7609){return db[_0x0eb1('0x3d')]['find']({'where':{'id':_0x21ad67[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x7d7609,null))[_0x0eb1('0x16')](function(_0x18a4c3){if(_0x18a4c3){return _0x18a4c3['addMailInteractions'](_0x21ad67[_0x0eb1('0x61')]['ids'],_[_0x0eb1('0x66')](_0x21ad67[_0x0eb1('0x61')],[_0x0eb1('0x65'),'id'])||{})[_0x0eb1('0xa1')](function(){for(var _0x38b4cf=0x0;_0x38b4cf<_0x21ad67[_0x0eb1('0x61')][_0x0eb1('0x65')]['length'];_0x38b4cf+=0x1){socket[_0x0eb1('0xa3')](_0x0eb1('0x127'),{'MailInteractionId':Number(_0x21ad67[_0x0eb1('0x61')][_0x0eb1('0x65')][_0x38b4cf]),'UserId':Number(_0x21ad67['params']['id'])});}return _0x21ad67[_0x0eb1('0x61')]['ids'];});}})['then'](respondWithResult(_0x7d7609,null))[_0x0eb1('0x54')](handleError(_0x7d7609,null));};exports[_0x0eb1('0x128')]=function(_0x146b1b,_0x5a2f0c){return db[_0x0eb1('0x3d')]['find']({'where':{'id':_0x146b1b[_0x0eb1('0x62')]['id']}})['then'](handleEntityNotFound(_0x5a2f0c,null))[_0x0eb1('0x16')](function(_0x38613b){if(_0x38613b){return _0x38613b[_0x0eb1('0x128')](_0x146b1b[_0x0eb1('0x43')][_0x0eb1('0x65')])[_0x0eb1('0x16')](function(){if(_[_0x0eb1('0xaf')](_0x146b1b['query'][_0x0eb1('0x65')])){for(var _0x39efdc=0x0;_0x39efdc<_0x146b1b['query']['ids'][_0x0eb1('0x4c')];_0x39efdc+=0x1){socket[_0x0eb1('0xa3')](_0x0eb1('0x129'),{'MailInteractionId':Number(_0x146b1b['query'][_0x0eb1('0x65')][_0x39efdc]),'UserId':Number(_0x146b1b[_0x0eb1('0x62')]['id'])});}}else{socket[_0x0eb1('0xa3')](_0x0eb1('0x129'),{'MailInteractionId':Number(_0x146b1b[_0x0eb1('0x43')][_0x0eb1('0x65')]),'UserId':Number(_0x146b1b[_0x0eb1('0x62')]['id'])});}});}})['then'](respondWithStatusCode(_0x5a2f0c,null))[_0x0eb1('0x54')](handleError(_0x5a2f0c,null));};exports[_0x0eb1('0x12a')]=function(_0x412673,_0x5f0e4e){return db[_0x0eb1('0x3d')]['find']({'where':{'id':_0x412673[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x5f0e4e,null))[_0x0eb1('0x16')](function(_0xba7847){if(_0xba7847){return _0xba7847['addFaxInteractions'](_0x412673[_0x0eb1('0x61')][_0x0eb1('0x65')],_[_0x0eb1('0x66')](_0x412673[_0x0eb1('0x61')],[_0x0eb1('0x65'),'id'])||{})['spread'](function(){for(var _0x20f5e7=0x0;_0x20f5e7<_0x412673[_0x0eb1('0x61')][_0x0eb1('0x65')][_0x0eb1('0x4c')];_0x20f5e7+=0x1){socket[_0x0eb1('0xa3')](_0x0eb1('0x12b'),{'FaxInteractionId':Number(_0x412673[_0x0eb1('0x61')][_0x0eb1('0x65')][_0x20f5e7]),'UserId':Number(_0x412673[_0x0eb1('0x62')]['id'])});}return _0x412673[_0x0eb1('0x61')][_0x0eb1('0x65')];});}})[_0x0eb1('0x16')](respondWithResult(_0x5f0e4e,null))[_0x0eb1('0x54')](handleError(_0x5f0e4e,null));};exports[_0x0eb1('0x12c')]=function(_0x25003c,_0x566383){return db[_0x0eb1('0x3d')][_0x0eb1('0x38')]({'where':{'id':_0x25003c['params']['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x566383,null))[_0x0eb1('0x16')](function(_0x28a4bb){if(_0x28a4bb){return _0x28a4bb[_0x0eb1('0x12c')](_0x25003c[_0x0eb1('0x43')][_0x0eb1('0x65')])['then'](function(){if(_[_0x0eb1('0xaf')](_0x25003c[_0x0eb1('0x43')]['ids'])){for(var _0xa9e986=0x0;_0xa9e986<_0x25003c[_0x0eb1('0x43')][_0x0eb1('0x65')][_0x0eb1('0x4c')];_0xa9e986+=0x1){socket[_0x0eb1('0xa3')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x25003c[_0x0eb1('0x43')][_0x0eb1('0x65')][_0xa9e986]),'UserId':Number(_0x25003c[_0x0eb1('0x62')]['id'])});}}else{socket[_0x0eb1('0xa3')](_0x0eb1('0x12d'),{'FaxInteractionId':Number(_0x25003c[_0x0eb1('0x43')][_0x0eb1('0x65')]),'UserId':Number(_0x25003c[_0x0eb1('0x62')]['id'])});}});}})[_0x0eb1('0x16')](respondWithStatusCode(_0x566383,null))[_0x0eb1('0x54')](handleError(_0x566383,null));};exports[_0x0eb1('0x12e')]=function(_0x598a21,_0x443bbb){return db[_0x0eb1('0x3d')]['find']({'where':{'id':_0x598a21[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x443bbb,null))[_0x0eb1('0x16')](function(_0x216140){if(_0x216140){return _0x216140[_0x0eb1('0x12e')](_0x598a21[_0x0eb1('0x61')][_0x0eb1('0x65')],_[_0x0eb1('0x66')](_0x598a21[_0x0eb1('0x61')],[_0x0eb1('0x65'),'id'])||{})['spread'](function(){for(var _0x56387b=0x0;_0x56387b<_0x598a21[_0x0eb1('0x61')]['ids'][_0x0eb1('0x4c')];_0x56387b+=0x1){socket[_0x0eb1('0xa3')](_0x0eb1('0x12f'),{'SmsInteractionId':Number(_0x598a21[_0x0eb1('0x61')][_0x0eb1('0x65')][_0x56387b]),'UserId':Number(_0x598a21[_0x0eb1('0x62')]['id'])});}return _0x598a21[_0x0eb1('0x61')]['ids'];});}})['then'](respondWithResult(_0x443bbb,null))[_0x0eb1('0x54')](handleError(_0x443bbb,null));};exports['removeSmsInteractions']=function(_0x33118e,_0x2b3bfe){return db['User'][_0x0eb1('0x38')]({'where':{'id':_0x33118e[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x2b3bfe,null))[_0x0eb1('0x16')](function(_0x24d900){if(_0x24d900){return _0x24d900[_0x0eb1('0x130')](_0x33118e[_0x0eb1('0x43')][_0x0eb1('0x65')])['then'](function(){if(_['isArray'](_0x33118e[_0x0eb1('0x43')][_0x0eb1('0x65')])){for(var _0x235b20=0x0;_0x235b20<_0x33118e[_0x0eb1('0x43')][_0x0eb1('0x65')][_0x0eb1('0x4c')];_0x235b20+=0x1){socket[_0x0eb1('0xa3')](_0x0eb1('0x131'),{'SmsInteractionId':Number(_0x33118e['query'][_0x0eb1('0x65')][_0x235b20]),'UserId':Number(_0x33118e[_0x0eb1('0x62')]['id'])});}}else{socket[_0x0eb1('0xa3')](_0x0eb1('0x131'),{'SmsInteractionId':Number(_0x33118e[_0x0eb1('0x43')]['ids']),'UserId':Number(_0x33118e[_0x0eb1('0x62')]['id'])});}});}})[_0x0eb1('0x16')](respondWithStatusCode(_0x2b3bfe,null))[_0x0eb1('0x54')](handleError(_0x2b3bfe,null));};exports['addOpenchannelInteractions']=function(_0x1f6788,_0x2bf948){return db[_0x0eb1('0x3d')][_0x0eb1('0x38')]({'where':{'id':_0x1f6788['params']['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x2bf948,null))[_0x0eb1('0x16')](function(_0x5dceeb){if(_0x5dceeb){return _0x5dceeb[_0x0eb1('0x132')](_0x1f6788[_0x0eb1('0x61')][_0x0eb1('0x65')],_['omit'](_0x1f6788[_0x0eb1('0x61')],[_0x0eb1('0x65'),'id'])||{})['spread'](function(){for(var _0x152b57=0x0;_0x152b57<_0x1f6788[_0x0eb1('0x61')][_0x0eb1('0x65')][_0x0eb1('0x4c')];_0x152b57+=0x1){socket[_0x0eb1('0xa3')](_0x0eb1('0x133'),{'OpenchannelInteractionId':Number(_0x1f6788['body']['ids'][_0x152b57]),'UserId':Number(_0x1f6788[_0x0eb1('0x62')]['id'])});}return _0x1f6788[_0x0eb1('0x61')][_0x0eb1('0x65')];});}})[_0x0eb1('0x16')](respondWithResult(_0x2bf948,null))[_0x0eb1('0x54')](handleError(_0x2bf948,null));};exports[_0x0eb1('0x134')]=function(_0x3314fd,_0x32d1c7){return db[_0x0eb1('0x3d')][_0x0eb1('0x38')]({'where':{'id':_0x3314fd[_0x0eb1('0x62')]['id']}})['then'](handleEntityNotFound(_0x32d1c7,null))[_0x0eb1('0x16')](function(_0xb8b457){if(_0xb8b457){return _0xb8b457[_0x0eb1('0x134')](_0x3314fd[_0x0eb1('0x43')][_0x0eb1('0x65')])[_0x0eb1('0x16')](function(){if(_[_0x0eb1('0xaf')](_0x3314fd[_0x0eb1('0x43')]['ids'])){for(var _0x359eba=0x0;_0x359eba<_0x3314fd['query'][_0x0eb1('0x65')][_0x0eb1('0x4c')];_0x359eba+=0x1){socket['emit'](_0x0eb1('0x135'),{'OpenchannelInteractionId':Number(_0x3314fd['query'][_0x0eb1('0x65')][_0x359eba]),'UserId':Number(_0x3314fd[_0x0eb1('0x62')]['id'])});}}else{socket[_0x0eb1('0xa3')](_0x0eb1('0x135'),{'OpenchannelInteractionId':Number(_0x3314fd['query'][_0x0eb1('0x65')]),'UserId':Number(_0x3314fd[_0x0eb1('0x62')]['id'])});}});}})[_0x0eb1('0x16')](respondWithStatusCode(_0x32d1c7,null))[_0x0eb1('0x54')](handleError(_0x32d1c7,null));};exports[_0x0eb1('0x136')]=function(_0x574522,_0x12df66){return db[_0x0eb1('0x3d')]['find']({'where':{'id':_0x574522[_0x0eb1('0x62')]['id']}})['then'](handleEntityNotFound(_0x12df66,null))[_0x0eb1('0x16')](function(_0x4c54c4){if(_0x4c54c4){return _0x4c54c4[_0x0eb1('0x136')](_0x574522[_0x0eb1('0x61')][_0x0eb1('0x65')],_[_0x0eb1('0x66')](_0x574522[_0x0eb1('0x61')],[_0x0eb1('0x65'),'id'])||{})['spread'](function(){for(var _0x47c937=0x0;_0x47c937<_0x574522['body'][_0x0eb1('0x65')][_0x0eb1('0x4c')];_0x47c937+=0x1){socket[_0x0eb1('0xa3')](_0x0eb1('0x137'),{'WhatsappInteractionId':Number(_0x574522['body'][_0x0eb1('0x65')][_0x47c937]),'UserId':Number(_0x574522['params']['id'])});}return _0x574522[_0x0eb1('0x61')]['ids'];});}})[_0x0eb1('0x16')](respondWithResult(_0x12df66,null))[_0x0eb1('0x54')](handleError(_0x12df66,null));};exports[_0x0eb1('0x138')]=function(_0xdcbe58,_0x37b34d){return db['User']['find']({'where':{'id':_0xdcbe58['params']['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x37b34d,null))[_0x0eb1('0x16')](function(_0x56f973){if(_0x56f973){return _0x56f973[_0x0eb1('0x138')](_0xdcbe58[_0x0eb1('0x43')][_0x0eb1('0x65')]);}})[_0x0eb1('0x16')](respondWithStatusCode(_0x37b34d,null))[_0x0eb1('0x54')](handleError(_0x37b34d,null));};exports[_0x0eb1('0x139')]=function(_0x892d78,_0x4196f8){var _0x283ac7={};var _0x3eff2e={};var _0x55d6b6;var _0x5a44f8;return db['User'][_0x0eb1('0x94')]({'where':{'id':_0x892d78[_0x0eb1('0x62')]['id']}})['then'](handleEntityNotFound(_0x4196f8,null))['then'](function(_0x2430a4){if(_0x2430a4){_0x55d6b6=_0x2430a4;_0x3eff2e[_0x0eb1('0x56')]=_[_0x0eb1('0x58')](db[_0x0eb1('0x13a')][_0x0eb1('0x59')]);_0x3eff2e[_0x0eb1('0x43')]=_['keys'](_0x892d78[_0x0eb1('0x43')]);_0x3eff2e[_0x0eb1('0xc9')]=_[_0x0eb1('0x5a')](_0x3eff2e[_0x0eb1('0x56')],_0x3eff2e['query']);_0x283ac7['attributes']=_[_0x0eb1('0x5a')](_0x3eff2e[_0x0eb1('0x56')],qs['fields'](_0x892d78[_0x0eb1('0x43')][_0x0eb1('0x5b')]));_0x283ac7[_0x0eb1('0x47')]=_0x283ac7[_0x0eb1('0x47')][_0x0eb1('0x4c')]?_0x283ac7[_0x0eb1('0x47')]:_0x3eff2e['model'];_0x283ac7[_0x0eb1('0xd2')]=qs[_0x0eb1('0xd3')](_0x892d78[_0x0eb1('0x43')][_0x0eb1('0xd3')]);_0x283ac7['where']=qs[_0x0eb1('0xc9')](_[_0x0eb1('0xca')](_0x892d78[_0x0eb1('0x43')],_0x3eff2e[_0x0eb1('0xc9')]));if(_0x892d78[_0x0eb1('0x43')]['filter']){_0x283ac7['where']=_['merge'](_0x283ac7[_0x0eb1('0x42')],{'$or':_['map'](_0x283ac7[_0x0eb1('0x47')],function(_0x3dbc21){var _0x3f8afc={};_0x3f8afc[_0x3dbc21]={'$like':'%'+_0x892d78[_0x0eb1('0x43')]['filter']+'%'};return _0x3f8afc;})});}_0x283ac7=_['merge']({},_0x283ac7,_0x892d78[_0x0eb1('0x5f')]);return _0x55d6b6[_0x0eb1('0x139')](_0x283ac7);}})['then'](function(_0x914972){if(_0x914972){_0x5a44f8=_0x914972[_0x0eb1('0x4c')];if(!_0x892d78[_0x0eb1('0x43')][_0x0eb1('0xcb')](_0x0eb1('0xd5'))){_0x283ac7[_0x0eb1('0x26')]=qs[_0x0eb1('0x26')](_0x892d78[_0x0eb1('0x43')][_0x0eb1('0x26')]);_0x283ac7[_0x0eb1('0x24')]=qs['offset'](_0x892d78['query'][_0x0eb1('0x24')]);}return _0x55d6b6[_0x0eb1('0x139')](_0x283ac7);}})['then'](function(_0x1bcdf0){if(_0x1bcdf0){return _0x1bcdf0?{'count':_0x5a44f8,'rows':_0x1bcdf0}:null;}})[_0x0eb1('0x16')](respondWithResult(_0x4196f8,null))['catch'](handleError(_0x4196f8,null));};exports[_0x0eb1('0x13b')]=function(_0x362fcd,_0x17ef7a){var _0x5335c6={};var _0x15aa07={};var _0x2a2ee6;var _0x5690cd;return db[_0x0eb1('0x3d')][_0x0eb1('0x94')]({'where':{'id':_0x362fcd[_0x0eb1('0x62')]['id']}})['then'](handleEntityNotFound(_0x17ef7a,null))[_0x0eb1('0x16')](function(_0x187cab){if(_0x187cab){_0x2a2ee6=_0x187cab;_0x15aa07[_0x0eb1('0x56')]=_[_0x0eb1('0x58')](db[_0x0eb1('0x13c')]['rawAttributes']);_0x15aa07['query']=_['keys'](_0x362fcd[_0x0eb1('0x43')]);_0x15aa07['filters']=_[_0x0eb1('0x5a')](_0x15aa07[_0x0eb1('0x56')],_0x15aa07[_0x0eb1('0x43')]);_0x5335c6['attributes']=_[_0x0eb1('0x5a')](_0x15aa07[_0x0eb1('0x56')],qs[_0x0eb1('0x5b')](_0x362fcd[_0x0eb1('0x43')][_0x0eb1('0x5b')]));_0x5335c6['attributes']=_0x5335c6[_0x0eb1('0x47')][_0x0eb1('0x4c')]?_0x5335c6['attributes']:_0x15aa07[_0x0eb1('0x56')];_0x5335c6[_0x0eb1('0xd2')]=qs[_0x0eb1('0xd3')](_0x362fcd[_0x0eb1('0x43')]['sort']);_0x5335c6[_0x0eb1('0x42')]=qs[_0x0eb1('0xc9')](_['pick'](_0x362fcd[_0x0eb1('0x43')],_0x15aa07['filters']));if(_0x362fcd['query'][_0x0eb1('0x33')]){_0x5335c6[_0x0eb1('0x42')]=_[_0x0eb1('0x5e')](_0x5335c6['where'],{'$or':_[_0x0eb1('0x35')](_0x5335c6['attributes'],function(_0x8afede){var _0x5cda86={};_0x5cda86[_0x8afede]={'$like':'%'+_0x362fcd['query'][_0x0eb1('0x33')]+'%'};return _0x5cda86;})});}_0x5335c6=_[_0x0eb1('0x5e')]({},_0x5335c6,_0x362fcd[_0x0eb1('0x5f')]);return _0x2a2ee6[_0x0eb1('0x13b')](_0x5335c6);}})[_0x0eb1('0x16')](function(_0x1d6b3d){if(_0x1d6b3d){_0x5690cd=_0x1d6b3d[_0x0eb1('0x4c')];if(!_0x362fcd['query'][_0x0eb1('0xcb')](_0x0eb1('0xd5'))){_0x5335c6[_0x0eb1('0x26')]=qs[_0x0eb1('0x26')](_0x362fcd[_0x0eb1('0x43')][_0x0eb1('0x26')]);_0x5335c6[_0x0eb1('0x24')]=qs['offset'](_0x362fcd[_0x0eb1('0x43')]['offset']);}return _0x2a2ee6[_0x0eb1('0x13b')](_0x5335c6);}})['then'](function(_0x584a8c){if(_0x584a8c){return _0x584a8c?{'count':_0x5690cd,'rows':_0x584a8c}:null;}})[_0x0eb1('0x16')](respondWithResult(_0x17ef7a,null))[_0x0eb1('0x54')](handleError(_0x17ef7a,null));};exports[_0x0eb1('0x13d')]=function(_0x3a3cdb,_0x1216bb){return db[_0x0eb1('0x3d')][_0x0eb1('0x38')]({'where':{'id':_0x3a3cdb[_0x0eb1('0x62')]['id']}})['then'](handleEntityNotFound(_0x1216bb,null))[_0x0eb1('0x16')](function(_0x428b8f){if(_0x428b8f){return _0x428b8f['addFaxAccounts'](_0x3a3cdb[_0x0eb1('0x61')][_0x0eb1('0x65')],_['omit'](_0x3a3cdb[_0x0eb1('0x61')],['ids','id'])||{});}})['then'](respondWithResult(_0x1216bb,null))['catch'](handleError(_0x1216bb,null));};exports[_0x0eb1('0x13e')]=function(_0x5579ea,_0x502b91){return db[_0x0eb1('0x3d')][_0x0eb1('0x38')]({'where':{'id':_0x5579ea['params']['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x502b91,null))[_0x0eb1('0x16')](function(_0x32e23c){if(_0x32e23c){return _0x32e23c['removeFaxAccounts'](_0x5579ea['query'][_0x0eb1('0x65')]);}})['then'](respondWithStatusCode(_0x502b91,null))['catch'](handleError(_0x502b91,null));};exports[_0x0eb1('0x13f')]=function(_0x5f8a74,_0x17e509){var _0x1da91b={};var _0xefcff6={};var _0xfd87d9;var _0x33f901;return db[_0x0eb1('0x3d')]['findOne']({'where':{'id':_0x5f8a74['params']['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x17e509,null))[_0x0eb1('0x16')](function(_0x5d522b){if(_0x5d522b){_0xfd87d9=_0x5d522b;_0xefcff6['model']=_[_0x0eb1('0x58')](db[_0x0eb1('0x140')][_0x0eb1('0x59')]);_0xefcff6['query']=_['keys'](_0x5f8a74[_0x0eb1('0x43')]);_0xefcff6[_0x0eb1('0xc9')]=_[_0x0eb1('0x5a')](_0xefcff6['model'],_0xefcff6[_0x0eb1('0x43')]);_0x1da91b['attributes']=_[_0x0eb1('0x5a')](_0xefcff6['model'],qs[_0x0eb1('0x5b')](_0x5f8a74[_0x0eb1('0x43')][_0x0eb1('0x5b')]));_0x1da91b['attributes']=_0x1da91b[_0x0eb1('0x47')][_0x0eb1('0x4c')]?_0x1da91b[_0x0eb1('0x47')]:_0xefcff6['model'];_0x1da91b[_0x0eb1('0xd2')]=qs[_0x0eb1('0xd3')](_0x5f8a74[_0x0eb1('0x43')][_0x0eb1('0xd3')]);_0x1da91b[_0x0eb1('0x42')]=qs[_0x0eb1('0xc9')](_['pick'](_0x5f8a74[_0x0eb1('0x43')],_0xefcff6[_0x0eb1('0xc9')]));if(_0x5f8a74['query'][_0x0eb1('0x33')]){_0x1da91b['where']=_[_0x0eb1('0x5e')](_0x1da91b[_0x0eb1('0x42')],{'$or':_[_0x0eb1('0x35')](_0x1da91b[_0x0eb1('0x47')],function(_0x3b83eb){var _0x2692d6={};_0x2692d6[_0x3b83eb]={'$like':'%'+_0x5f8a74['query'][_0x0eb1('0x33')]+'%'};return _0x2692d6;})});}_0x1da91b=_[_0x0eb1('0x5e')]({},_0x1da91b,_0x5f8a74[_0x0eb1('0x5f')]);return _0xfd87d9['getMailAccounts'](_0x1da91b);}})[_0x0eb1('0x16')](function(_0x2b2e60){if(_0x2b2e60){_0x33f901=_0x2b2e60[_0x0eb1('0x4c')];if(!_0x5f8a74[_0x0eb1('0x43')]['hasOwnProperty'](_0x0eb1('0xd5'))){_0x1da91b[_0x0eb1('0x26')]=qs['limit'](_0x5f8a74[_0x0eb1('0x43')]['limit']);_0x1da91b['offset']=qs[_0x0eb1('0x24')](_0x5f8a74[_0x0eb1('0x43')][_0x0eb1('0x24')]);}return _0xfd87d9[_0x0eb1('0x13f')](_0x1da91b);}})[_0x0eb1('0x16')](function(_0x48f541){if(_0x48f541){return _0x48f541?{'count':_0x33f901,'rows':_0x48f541}:null;}})[_0x0eb1('0x16')](respondWithResult(_0x17e509,null))['catch'](handleError(_0x17e509,null));};exports['addMailAccounts']=function(_0x3f170b,_0x4d511c){return db[_0x0eb1('0x3d')][_0x0eb1('0x38')]({'where':{'id':_0x3f170b[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x4d511c,null))['then'](function(_0x4b957d){if(_0x4b957d){return _0x4b957d[_0x0eb1('0x141')](_0x3f170b['body']['ids'],_['omit'](_0x3f170b[_0x0eb1('0x61')],[_0x0eb1('0x65'),'id'])||{});}})[_0x0eb1('0x16')](respondWithResult(_0x4d511c,null))['catch'](handleError(_0x4d511c,null));};exports[_0x0eb1('0x142')]=function(_0x2f27e9,_0x1454c2){return db[_0x0eb1('0x3d')][_0x0eb1('0x38')]({'where':{'id':_0x2f27e9[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x1454c2,null))[_0x0eb1('0x16')](function(_0x29549d){if(_0x29549d){return _0x29549d[_0x0eb1('0x142')](_0x2f27e9[_0x0eb1('0x43')][_0x0eb1('0x65')]);}})[_0x0eb1('0x16')](respondWithStatusCode(_0x1454c2,null))[_0x0eb1('0x54')](handleError(_0x1454c2,null));};exports[_0x0eb1('0x143')]=function(_0x3e40c3,_0x392512){var _0x19d665={};var _0x35cdb9={};var _0x242d84;var _0x239cd1;return db[_0x0eb1('0x3d')][_0x0eb1('0x94')]({'where':{'id':_0x3e40c3[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x392512,null))['then'](function(_0x5e7f7a){if(_0x5e7f7a){_0x242d84=_0x5e7f7a;_0x35cdb9[_0x0eb1('0x56')]=_[_0x0eb1('0x58')](db['OpenchannelAccount'][_0x0eb1('0x59')]);_0x35cdb9[_0x0eb1('0x43')]=_['keys'](_0x3e40c3['query']);_0x35cdb9['filters']=_['intersection'](_0x35cdb9[_0x0eb1('0x56')],_0x35cdb9[_0x0eb1('0x43')]);_0x19d665[_0x0eb1('0x47')]=_[_0x0eb1('0x5a')](_0x35cdb9[_0x0eb1('0x56')],qs[_0x0eb1('0x5b')](_0x3e40c3[_0x0eb1('0x43')][_0x0eb1('0x5b')]));_0x19d665[_0x0eb1('0x47')]=_0x19d665[_0x0eb1('0x47')]['length']?_0x19d665[_0x0eb1('0x47')]:_0x35cdb9[_0x0eb1('0x56')];_0x19d665[_0x0eb1('0xd2')]=qs['sort'](_0x3e40c3[_0x0eb1('0x43')][_0x0eb1('0xd3')]);_0x19d665[_0x0eb1('0x42')]=qs['filters'](_[_0x0eb1('0xca')](_0x3e40c3[_0x0eb1('0x43')],_0x35cdb9[_0x0eb1('0xc9')]));if(_0x3e40c3[_0x0eb1('0x43')][_0x0eb1('0x33')]){_0x19d665[_0x0eb1('0x42')]=_[_0x0eb1('0x5e')](_0x19d665[_0x0eb1('0x42')],{'$or':_[_0x0eb1('0x35')](_0x19d665[_0x0eb1('0x47')],function(_0x42c0b0){var _0xb737c0={};_0xb737c0[_0x42c0b0]={'$like':'%'+_0x3e40c3['query'][_0x0eb1('0x33')]+'%'};return _0xb737c0;})});}_0x19d665=_[_0x0eb1('0x5e')]({},_0x19d665,_0x3e40c3[_0x0eb1('0x5f')]);return _0x242d84[_0x0eb1('0x143')](_0x19d665);}})[_0x0eb1('0x16')](function(_0x5a17b7){if(_0x5a17b7){_0x239cd1=_0x5a17b7[_0x0eb1('0x4c')];if(!_0x3e40c3[_0x0eb1('0x43')][_0x0eb1('0xcb')]('nolimit')){_0x19d665['limit']=qs[_0x0eb1('0x26')](_0x3e40c3[_0x0eb1('0x43')][_0x0eb1('0x26')]);_0x19d665[_0x0eb1('0x24')]=qs['offset'](_0x3e40c3[_0x0eb1('0x43')][_0x0eb1('0x24')]);}return _0x242d84[_0x0eb1('0x143')](_0x19d665);}})[_0x0eb1('0x16')](function(_0x52fc2d){if(_0x52fc2d){return _0x52fc2d?{'count':_0x239cd1,'rows':_0x52fc2d}:null;}})[_0x0eb1('0x16')](respondWithResult(_0x392512,null))[_0x0eb1('0x54')](handleError(_0x392512,null));};exports[_0x0eb1('0x144')]=function(_0x1e7cf3,_0x27a8b9){return db[_0x0eb1('0x3d')][_0x0eb1('0x38')]({'where':{'id':_0x1e7cf3[_0x0eb1('0x62')]['id']}})['then'](handleEntityNotFound(_0x27a8b9,null))[_0x0eb1('0x16')](function(_0x4a310e){if(_0x4a310e){return _0x4a310e[_0x0eb1('0x144')](_0x1e7cf3['body'][_0x0eb1('0x65')],_['omit'](_0x1e7cf3['body'],[_0x0eb1('0x65'),'id'])||{});}})[_0x0eb1('0x16')](respondWithResult(_0x27a8b9,null))[_0x0eb1('0x54')](handleError(_0x27a8b9,null));};exports['removeOpenchannelAccounts']=function(_0x5844e8,_0x1fdb97){return db[_0x0eb1('0x3d')][_0x0eb1('0x38')]({'where':{'id':_0x5844e8[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x1fdb97,null))[_0x0eb1('0x16')](function(_0x3658fd){if(_0x3658fd){return _0x3658fd['removeOpenchannelAccounts'](_0x5844e8['query'][_0x0eb1('0x65')]);}})[_0x0eb1('0x16')](respondWithStatusCode(_0x1fdb97,null))[_0x0eb1('0x54')](handleError(_0x1fdb97,null));};exports[_0x0eb1('0x145')]=function(_0x4a519c,_0x48ef88){var _0x2ea152={};var _0xc98e42={};var _0x265d15;var _0x403f25;return db[_0x0eb1('0x3d')][_0x0eb1('0x94')]({'where':{'id':_0x4a519c['params']['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x48ef88,null))[_0x0eb1('0x16')](function(_0x459d7a){if(_0x459d7a){_0x265d15=_0x459d7a;_0xc98e42[_0x0eb1('0x56')]=_[_0x0eb1('0x58')](db[_0x0eb1('0x146')][_0x0eb1('0x59')]);_0xc98e42[_0x0eb1('0x43')]=_[_0x0eb1('0x58')](_0x4a519c[_0x0eb1('0x43')]);_0xc98e42[_0x0eb1('0xc9')]=_[_0x0eb1('0x5a')](_0xc98e42[_0x0eb1('0x56')],_0xc98e42[_0x0eb1('0x43')]);_0x2ea152['attributes']=_[_0x0eb1('0x5a')](_0xc98e42[_0x0eb1('0x56')],qs[_0x0eb1('0x5b')](_0x4a519c[_0x0eb1('0x43')]['fields']));_0x2ea152[_0x0eb1('0x47')]=_0x2ea152['attributes'][_0x0eb1('0x4c')]?_0x2ea152[_0x0eb1('0x47')]:_0xc98e42[_0x0eb1('0x56')];_0x2ea152['order']=qs[_0x0eb1('0xd3')](_0x4a519c[_0x0eb1('0x43')]['sort']);_0x2ea152[_0x0eb1('0x42')]=qs[_0x0eb1('0xc9')](_[_0x0eb1('0xca')](_0x4a519c[_0x0eb1('0x43')],_0xc98e42[_0x0eb1('0xc9')]));if(_0x4a519c['query'][_0x0eb1('0x33')]){_0x2ea152[_0x0eb1('0x42')]=_['merge'](_0x2ea152[_0x0eb1('0x42')],{'$or':_[_0x0eb1('0x35')](_0x2ea152[_0x0eb1('0x47')],function(_0x8a970b){var _0x2c8c6d={};_0x2c8c6d[_0x8a970b]={'$like':'%'+_0x4a519c[_0x0eb1('0x43')][_0x0eb1('0x33')]+'%'};return _0x2c8c6d;})});}_0x2ea152=_[_0x0eb1('0x5e')]({},_0x2ea152,_0x4a519c[_0x0eb1('0x5f')]);return _0x265d15[_0x0eb1('0x145')](_0x2ea152);}})[_0x0eb1('0x16')](function(_0x2348ee){if(_0x2348ee){_0x403f25=_0x2348ee[_0x0eb1('0x4c')];if(!_0x4a519c['query'][_0x0eb1('0xcb')](_0x0eb1('0xd5'))){_0x2ea152[_0x0eb1('0x26')]=qs['limit'](_0x4a519c[_0x0eb1('0x43')][_0x0eb1('0x26')]);_0x2ea152['offset']=qs[_0x0eb1('0x24')](_0x4a519c[_0x0eb1('0x43')]['offset']);}return _0x265d15['getSmsAccounts'](_0x2ea152);}})[_0x0eb1('0x16')](function(_0x368d95){if(_0x368d95){return _0x368d95?{'count':_0x403f25,'rows':_0x368d95}:null;}})[_0x0eb1('0x16')](respondWithResult(_0x48ef88,null))[_0x0eb1('0x54')](handleError(_0x48ef88,null));};exports[_0x0eb1('0x147')]=function(_0x224b71,_0xa150df){return db[_0x0eb1('0x3d')][_0x0eb1('0x38')]({'where':{'id':_0x224b71[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0xa150df,null))[_0x0eb1('0x16')](function(_0x5964e2){if(_0x5964e2){return _0x5964e2[_0x0eb1('0x147')](_0x224b71[_0x0eb1('0x61')][_0x0eb1('0x65')],_[_0x0eb1('0x66')](_0x224b71[_0x0eb1('0x61')],[_0x0eb1('0x65'),'id'])||{});}})[_0x0eb1('0x16')](respondWithResult(_0xa150df,null))[_0x0eb1('0x54')](handleError(_0xa150df,null));};exports[_0x0eb1('0x148')]=function(_0x1300ab,_0x2d2716){return db[_0x0eb1('0x3d')][_0x0eb1('0x38')]({'where':{'id':_0x1300ab[_0x0eb1('0x62')]['id']}})['then'](handleEntityNotFound(_0x2d2716,null))[_0x0eb1('0x16')](function(_0x4f1214){if(_0x4f1214){return _0x4f1214[_0x0eb1('0x148')](_0x1300ab[_0x0eb1('0x43')][_0x0eb1('0x65')]);}})[_0x0eb1('0x16')](respondWithStatusCode(_0x2d2716,null))[_0x0eb1('0x54')](handleError(_0x2d2716,null));};exports[_0x0eb1('0x149')]=function(_0x4cae33,_0x462706){var _0x463850={};var _0x10e8e7={};var _0x3db8d2;var _0xa76b99;return db[_0x0eb1('0x3d')][_0x0eb1('0x94')]({'where':{'id':_0x4cae33[_0x0eb1('0x62')]['id']}})['then'](handleEntityNotFound(_0x462706,null))['then'](function(_0x5aad1b){if(_0x5aad1b){_0x3db8d2=_0x5aad1b;_0x10e8e7['model']=_['keys'](db[_0x0eb1('0x14a')][_0x0eb1('0x59')]);_0x10e8e7[_0x0eb1('0x43')]=_[_0x0eb1('0x58')](_0x4cae33[_0x0eb1('0x43')]);_0x10e8e7[_0x0eb1('0xc9')]=_[_0x0eb1('0x5a')](_0x10e8e7[_0x0eb1('0x56')],_0x10e8e7[_0x0eb1('0x43')]);_0x463850[_0x0eb1('0x47')]=_[_0x0eb1('0x5a')](_0x10e8e7[_0x0eb1('0x56')],qs[_0x0eb1('0x5b')](_0x4cae33[_0x0eb1('0x43')]['fields']));_0x463850[_0x0eb1('0x47')]=_0x463850[_0x0eb1('0x47')]['length']?_0x463850[_0x0eb1('0x47')]:_0x10e8e7[_0x0eb1('0x56')];_0x463850['order']=qs['sort'](_0x4cae33[_0x0eb1('0x43')][_0x0eb1('0xd3')]);_0x463850[_0x0eb1('0x42')]=qs[_0x0eb1('0xc9')](_[_0x0eb1('0xca')](_0x4cae33['query'],_0x10e8e7[_0x0eb1('0xc9')]));if(_0x4cae33['query'][_0x0eb1('0x33')]){_0x463850['where']=_['merge'](_0x463850[_0x0eb1('0x42')],{'$or':_[_0x0eb1('0x35')](_0x463850[_0x0eb1('0x47')],function(_0x4d5442){var _0x177528={};_0x177528[_0x4d5442]={'$like':'%'+_0x4cae33['query'][_0x0eb1('0x33')]+'%'};return _0x177528;})});}_0x463850=_[_0x0eb1('0x5e')]({},_0x463850,_0x4cae33['options']);return _0x3db8d2['getChatWebsites'](_0x463850);}})['then'](function(_0x3f1c45){if(_0x3f1c45){_0xa76b99=_0x3f1c45['length'];if(!_0x4cae33[_0x0eb1('0x43')][_0x0eb1('0xcb')](_0x0eb1('0xd5'))){_0x463850['limit']=qs[_0x0eb1('0x26')](_0x4cae33['query'][_0x0eb1('0x26')]);_0x463850[_0x0eb1('0x24')]=qs[_0x0eb1('0x24')](_0x4cae33[_0x0eb1('0x43')]['offset']);}return _0x3db8d2[_0x0eb1('0x149')](_0x463850);}})[_0x0eb1('0x16')](function(_0x360f7d){if(_0x360f7d){return _0x360f7d?{'count':_0xa76b99,'rows':_0x360f7d}:null;}})[_0x0eb1('0x16')](respondWithResult(_0x462706,null))['catch'](handleError(_0x462706,null));};exports['addChatWebsites']=function(_0x31c6e8,_0x6365f5){return db[_0x0eb1('0x3d')]['find']({'where':{'id':_0x31c6e8[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x6365f5,null))['then'](function(_0x5d091a){if(_0x5d091a){return _0x5d091a[_0x0eb1('0x14b')](_0x31c6e8[_0x0eb1('0x61')][_0x0eb1('0x65')],_[_0x0eb1('0x66')](_0x31c6e8[_0x0eb1('0x61')],['ids','id'])||{});}})[_0x0eb1('0x16')](respondWithResult(_0x6365f5,null))['catch'](handleError(_0x6365f5,null));};exports[_0x0eb1('0x14c')]=function(_0xdcb27,_0x1b583f){return db['User'][_0x0eb1('0x38')]({'where':{'id':_0xdcb27[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x1b583f,null))[_0x0eb1('0x16')](function(_0xca0d57){if(_0xca0d57){return _0xca0d57['removeChatWebsites'](_0xdcb27[_0x0eb1('0x43')][_0x0eb1('0x65')]);}})[_0x0eb1('0x16')](respondWithStatusCode(_0x1b583f,null))[_0x0eb1('0x54')](handleError(_0x1b583f,null));};exports[_0x0eb1('0x14d')]=function(_0x269569,_0x5cc6d5){var _0x4c9791={};var _0x1c3518={};var _0x19463c;var _0x366d60;return db['User']['findOne']({'where':{'id':_0x269569[_0x0eb1('0x62')]['id']}})['then'](handleEntityNotFound(_0x5cc6d5,null))[_0x0eb1('0x16')](function(_0x2c9600){if(_0x2c9600){_0x19463c=_0x2c9600;_0x1c3518[_0x0eb1('0x56')]=_[_0x0eb1('0x58')](db['WhatsappAccount']['rawAttributes']);_0x1c3518[_0x0eb1('0x43')]=_[_0x0eb1('0x58')](_0x269569['query']);_0x1c3518[_0x0eb1('0xc9')]=_[_0x0eb1('0x5a')](_0x1c3518[_0x0eb1('0x56')],_0x1c3518[_0x0eb1('0x43')]);_0x4c9791[_0x0eb1('0x47')]=_[_0x0eb1('0x5a')](_0x1c3518[_0x0eb1('0x56')],qs[_0x0eb1('0x5b')](_0x269569[_0x0eb1('0x43')][_0x0eb1('0x5b')]));_0x4c9791[_0x0eb1('0x47')]=_0x4c9791[_0x0eb1('0x47')][_0x0eb1('0x4c')]?_0x4c9791[_0x0eb1('0x47')]:_0x1c3518[_0x0eb1('0x56')];_0x4c9791[_0x0eb1('0xd2')]=qs[_0x0eb1('0xd3')](_0x269569[_0x0eb1('0x43')][_0x0eb1('0xd3')]);_0x4c9791[_0x0eb1('0x42')]=qs[_0x0eb1('0xc9')](_[_0x0eb1('0xca')](_0x269569['query'],_0x1c3518['filters']));if(_0x269569['query']['filter']){_0x4c9791[_0x0eb1('0x42')]=_['merge'](_0x4c9791['where'],{'$or':_[_0x0eb1('0x35')](_0x4c9791[_0x0eb1('0x47')],function(_0x5eeac1){var _0x19e2ba={};_0x19e2ba[_0x5eeac1]={'$like':'%'+_0x269569[_0x0eb1('0x43')][_0x0eb1('0x33')]+'%'};return _0x19e2ba;})});}_0x4c9791=_['merge']({},_0x4c9791,_0x269569[_0x0eb1('0x5f')]);return _0x19463c[_0x0eb1('0x14d')](_0x4c9791);}})[_0x0eb1('0x16')](function(_0x37517a){if(_0x37517a){_0x366d60=_0x37517a[_0x0eb1('0x4c')];if(!_0x269569[_0x0eb1('0x43')][_0x0eb1('0xcb')](_0x0eb1('0xd5'))){_0x4c9791[_0x0eb1('0x26')]=qs[_0x0eb1('0x26')](_0x269569[_0x0eb1('0x43')]['limit']);_0x4c9791[_0x0eb1('0x24')]=qs['offset'](_0x269569[_0x0eb1('0x43')][_0x0eb1('0x24')]);}return _0x19463c[_0x0eb1('0x14d')](_0x4c9791);}})[_0x0eb1('0x16')](function(_0x138509){if(_0x138509){return _0x138509?{'count':_0x366d60,'rows':_0x138509}:null;}})['then'](respondWithResult(_0x5cc6d5,null))[_0x0eb1('0x54')](handleError(_0x5cc6d5,null));};exports[_0x0eb1('0x14e')]=function(_0x68b96f,_0x59a783){return db[_0x0eb1('0x3d')][_0x0eb1('0x38')]({'where':{'id':_0x68b96f[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x59a783,null))[_0x0eb1('0x16')](function(_0x16e54f){if(_0x16e54f){return _0x16e54f['addWhatsappAccounts'](_0x68b96f[_0x0eb1('0x61')][_0x0eb1('0x65')],_[_0x0eb1('0x66')](_0x68b96f[_0x0eb1('0x61')],[_0x0eb1('0x65'),'id'])||{});}})[_0x0eb1('0x16')](respondWithResult(_0x59a783,null))[_0x0eb1('0x54')](handleError(_0x59a783,null));};exports['removeWhatsappAccounts']=function(_0x43fc39,_0x338ca5){return db[_0x0eb1('0x3d')][_0x0eb1('0x38')]({'where':{'id':_0x43fc39[_0x0eb1('0x62')]['id']}})['then'](handleEntityNotFound(_0x338ca5,null))['then'](function(_0x3be23c){if(_0x3be23c){return _0x3be23c[_0x0eb1('0x14f')](_0x43fc39[_0x0eb1('0x43')][_0x0eb1('0x65')]);}})['then'](respondWithStatusCode(_0x338ca5,null))['catch'](handleError(_0x338ca5,null));};exports[_0x0eb1('0x150')]=function(_0x5d52cf,_0x3a9441){var _0xe86329={},_0x3fb5d0={},_0x4fcdd6={'count':0x0,'rows':[]};var _0x2e50e3=db[_0x0eb1('0x151')]['rawAttributes'];_0x3fb5d0[_0x0eb1('0x56')]=_[_0x0eb1('0x58')](_0x2e50e3);_0x3fb5d0[_0x0eb1('0x43')]=_[_0x0eb1('0x58')](_0x5d52cf[_0x0eb1('0x43')]);_0x3fb5d0[_0x0eb1('0xc9')]=_['intersection'](_0x3fb5d0['model'],_0x3fb5d0[_0x0eb1('0x43')]);_0x3fb5d0[_0x0eb1('0xc9')]=_[_0x0eb1('0xfb')](_0x3fb5d0['filters'],[_0x0eb1('0x152'),'$or',_0x0eb1('0x153'),'$gte','$lt',_0x0eb1('0x154'),'$ne','$eq','$not','$between','$notBetween','$in',_0x0eb1('0x155'),_0x0eb1('0x156'),_0x0eb1('0x157'),_0x0eb1('0x158'),_0x0eb1('0x159'),'$like',_0x0eb1('0x15a'),'$contains',_0x0eb1('0x15b'),'$any']);_0xe86329[_0x0eb1('0x47')]=_[_0x0eb1('0x5a')](_0x3fb5d0['model'],qs[_0x0eb1('0x5b')](_0x5d52cf[_0x0eb1('0x43')]['fields']));_0xe86329[_0x0eb1('0x47')]=_0xe86329[_0x0eb1('0x47')][_0x0eb1('0x4c')]?_0xe86329[_0x0eb1('0x47')]:_0x3fb5d0[_0x0eb1('0x56')];if(!_0x5d52cf[_0x0eb1('0x43')]['hasOwnProperty'](_0x0eb1('0xd5'))){_0xe86329[_0x0eb1('0x26')]=qs[_0x0eb1('0x26')](_0x5d52cf['query'][_0x0eb1('0x26')]);_0xe86329[_0x0eb1('0x24')]=qs[_0x0eb1('0x24')](_0x5d52cf[_0x0eb1('0x43')][_0x0eb1('0x24')]);}_0xe86329[_0x0eb1('0xd2')]=qs[_0x0eb1('0xd3')](_0x5d52cf[_0x0eb1('0x43')][_0x0eb1('0xd3')]);_0xe86329[_0x0eb1('0x42')]=qs['filters'](_[_0x0eb1('0xca')](_0x5d52cf[_0x0eb1('0x43')],_0x3fb5d0[_0x0eb1('0xc9')]));if(_0x5d52cf['query'][_0x0eb1('0x33')]){_0xe86329[_0x0eb1('0x42')]=_[_0x0eb1('0x5e')](_0xe86329['where'],{'$or':_[_0x0eb1('0x35')](_0xe86329[_0x0eb1('0x47')],function(_0x25d2a9){var _0x56eae1={};_0x56eae1[_0x25d2a9]={'$like':'%'+_0x5d52cf['query'][_0x0eb1('0x33')]+'%'};return _0x56eae1;})});}_0xe86329[_0x0eb1('0x42')]={'$and':[_0xe86329[_0x0eb1('0x42')],{'$or':[{'UserId':_0x5d52cf[_0x0eb1('0x62')]['id']},{'OwnerId':_0x5d52cf[_0x0eb1('0x62')]['id']}]}]};_0xe86329=_['merge']({},_0xe86329,_0x5d52cf['options']);var _0x3a3929={'where':_0xe86329[_0x0eb1('0x42')]};return db[_0x0eb1('0x151')]['count'](_0x3a3929)['then'](function(_0x215bdb){_0x4fcdd6[_0x0eb1('0x27')]=_0x215bdb;if(_0x5d52cf['query'][_0x0eb1('0x5c')]){_0xe86329[_0x0eb1('0x44')]=[{'attributes':['id',_0x0eb1('0x15c'),_0x0eb1('0x15d'),_0x0eb1('0xe8')],'model':db[_0x0eb1('0xc8')],'as':_0x0eb1('0x15e')},{'attributes':['id',_0x0eb1('0x39'),_0x0eb1('0x15f')],'model':db['VoiceQueue'],'as':_0x0eb1('0xd1')}];}return db[_0x0eb1('0x151')][_0x0eb1('0x49')](_0xe86329);})[_0x0eb1('0x16')](function(_0x52b4da){_0x4fcdd6[_0x0eb1('0x4b')]=_0x52b4da;return _0x4fcdd6;})[_0x0eb1('0x16')](respondWithFilteredResult(_0x3a9441,_0xe86329))['catch'](handleError(_0x3a9441,null));};exports[_0x0eb1('0x160')]=function(_0x3f7fa2,_0x1f5733){if(!_[_0x0eb1('0x6a')](_0x3f7fa2[_0x0eb1('0x2e')]['id'])&&(_0x3f7fa2[_0x0eb1('0x2e')][_0x0eb1('0x2c')]==_0x0eb1('0x81')||_0x3f7fa2[_0x0eb1('0x2e')][_0x0eb1('0x2c')]=='user')){return db[_0x0eb1('0x3d')][_0x0eb1('0x94')]({'where':{'id':_0x3f7fa2[_0x0eb1('0x62')]['id']},'raw':!![]})[_0x0eb1('0x16')](function(_0x30ac5b){return authService[_0x0eb1('0x161')](_0x30ac5b);})[_0x0eb1('0x16')](function(_0x131229){if(_0x131229){return _0x1f5733[_0x0eb1('0x21')](0xc8)[_0x0eb1('0x23')]({'api_key':_0x131229[_0x0eb1('0x162')]});}else{return _0x1f5733[_0x0eb1('0x21')](0xcc)[_0x0eb1('0x23')]({'message':_0x0eb1('0x163')});}})[_0x0eb1('0x54')](handleError(_0x1f5733,0x193));}else{return _0x1f5733[_0x0eb1('0x21')](0x191)[_0x0eb1('0x23')]({'message':_0x0eb1('0x164')});}};exports[_0x0eb1('0x165')]=function(_0x28662e,_0x12bb29){if(!_[_0x0eb1('0x6a')](_0x28662e[_0x0eb1('0x2e')]['id'])&&(_0x28662e[_0x0eb1('0x2e')][_0x0eb1('0x2c')]==_0x0eb1('0x81')||_0x28662e['user']['role']==_0x0eb1('0x2e'))){return db['User'][_0x0eb1('0x38')]({'where':{'id':_0x28662e[_0x0eb1('0x62')]['id']}})['then'](function(_0xbb1e0b){return authService[_0x0eb1('0x166')](_0xbb1e0b);})[_0x0eb1('0x16')](function(_0xcc39a8){return db[_0x0eb1('0x3d')][_0x0eb1('0x60')]({'apiKeyIat':_0xcc39a8[_0x0eb1('0x167')],'apiKeyNonce':_0xcc39a8[_0x0eb1('0x168')]},{'where':{'id':_0x28662e[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](function(){return _0x12bb29['status'](0xc8)[_0x0eb1('0x23')]({'api_key':_0xcc39a8[_0x0eb1('0x162')]});});})['catch'](handleError(_0x12bb29,0x193));}else{return _0x12bb29[_0x0eb1('0x21')](0x191)['json']({'message':_0x0eb1('0x164')});}};exports[_0x0eb1('0x169')]=function(_0x35b6ca,_0x39f6f4){if(!_[_0x0eb1('0x6a')](_0x35b6ca[_0x0eb1('0x2e')]['id'])&&(_0x35b6ca[_0x0eb1('0x2e')][_0x0eb1('0x2c')]=='admin'||_0x35b6ca[_0x0eb1('0x2e')][_0x0eb1('0x2c')]==_0x0eb1('0x2e'))){return db[_0x0eb1('0x3d')][_0x0eb1('0x38')]({'where':{'id':_0x35b6ca[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x39f6f4,null))[_0x0eb1('0x16')](function(_0x3e4373){if(_0x3e4373&&_0x3e4373[_0x0eb1('0x16a')]&&_0x3e4373[_0x0eb1('0x16b')])return _0x3e4373;else throw{'message':_0x0eb1('0x16c')};})['then'](function(){return db[_0x0eb1('0x3d')]['update']({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x35b6ca[_0x0eb1('0x62')]['id']}});})['then'](respondWithStatusCode(_0x39f6f4,0xc8))[_0x0eb1('0x54')](handleError(_0x39f6f4,0x193));}else{return _0x39f6f4[_0x0eb1('0x21')](0x191)[_0x0eb1('0x23')]({'message':_0x0eb1('0x164')});}};exports['whoami']=function(_0x5e5407,_0x32de7b){var _0x5f14e3=_0x5e5407['user'][_0x0eb1('0xa7')]({'plain':!![]});if(!_0x5f14e3){return _0x32de7b[_0x0eb1('0x21')](0x191)['send'](_0x0eb1('0x16d'));}else{Promise[_0x0eb1('0x10f')]()['then'](function(){if(_0x5e5407[_0x0eb1('0x43')][_0x0eb1('0x46')]!==_0x0eb1('0x45'))return;return _0x5e5407['user']['getUserSetting']();})[_0x0eb1('0x16')](function(_0xa3f05f){if(!_0xa3f05f)return;return _0xa3f05f['get']({'plain':!![]});})['then'](function(_0x16463a){_0x5f14e3[_0x0eb1('0x46')]=_0x16463a;return _0x32de7b[_0x0eb1('0x21')](0xc8)[_0x0eb1('0x23')](_0x5f14e3);});}};exports['getPresence']=function(_0x28b854,_0x57da28){var _0x1e9e3c={'offset':0x0},_0x21fdf7={'count':0x0,'rows':[]};Promise['resolve']()[_0x0eb1('0x16')](function(){if(!_0x28b854[_0x0eb1('0x43')][_0x0eb1('0x33')]&&!_0x28b854[_0x0eb1('0x43')]['teams']&&!_0x28b854[_0x0eb1('0x43')]['queues'])return[];return Promise[_0x0eb1('0x10f')]()['then'](function(){var _0x4b2355=[];if(!_[_0x0eb1('0x16e')](_0x28b854[_0x0eb1('0x43')]['teams'])){_0x4b2355[_0x0eb1('0x48')](db[_0x0eb1('0x10c')][_0x0eb1('0x49')]({'attributes':['id',_0x0eb1('0x39')],'where':{'id':_0x28b854[_0x0eb1('0x43')][_0x0eb1('0x16f')]}}));}if(!_[_0x0eb1('0x16e')](_0x28b854['query']['queues'])){_0x4b2355[_0x0eb1('0x48')](db[_0x0eb1('0xa6')]['findAll']({'attributes':['id',_0x0eb1('0x39')],'type':_0x0eb1('0x170'),'where':{'id':_0x28b854['query'][_0x0eb1('0x171')]}}));}return Promise[_0x0eb1('0x53')](_0x4b2355);})['then'](function(_0x41a43c){var _0x169046=_[_0x0eb1('0x172')](_0x41a43c)[_0x0eb1('0x35')](function(_0x4c916d){return _0x4c916d['getAgents']({'attributes':['id','name',_0x0eb1('0x67'),_0x0eb1('0x9b')],'raw':!![]});});return Promise['all'](_0x169046);})[_0x0eb1('0x16')](function(_0x5d855f){var _0x1704d7=_[_0x0eb1('0x172')](_0x5d855f);if(!_0x28b854['query'][_0x0eb1('0x33')])return _0x1704d7;if(_[_0x0eb1('0x16e')](_0x1704d7)){return db[_0x0eb1('0x3d')][_0x0eb1('0x49')]({'attributes':['id',_0x0eb1('0x39'),_0x0eb1('0x67'),_0x0eb1('0x9b')],'where':{'role':_0x0eb1('0x30'),'$or':[db[_0x0eb1('0x6c')][_0x0eb1('0x42')](db[_0x0eb1('0x6c')]['fn'](_0x0eb1('0x173'),db['sequelize'][_0x0eb1('0x174')]('name')),{'$like':'%'+_0x28b854['query'][_0x0eb1('0x33')][_0x0eb1('0xa2')]()+'%'}),{'internal':{'$like':'%'+_0x28b854[_0x0eb1('0x43')][_0x0eb1('0x33')]+'%'}}]},'raw':!![]});}else{return _(_0x1704d7)['flatten']()[_0x0eb1('0x33')](function(_0x5c5097){return _0x5c5097[_0x0eb1('0x39')]['toLowerCase']()['includes'](_0x28b854['query'][_0x0eb1('0x33')][_0x0eb1('0xa2')]())||_0x5c5097['internal'][_0x0eb1('0x175')]()[_0x0eb1('0x37')](_0x28b854[_0x0eb1('0x43')][_0x0eb1('0x33')]);})[_0x0eb1('0x36')]();}})[_0x0eb1('0x16')](function(_0x494b22){var _0x190539='name';var _0x258a4d=_0x0eb1('0x176');if(_0x28b854[_0x0eb1('0x43')][_0x0eb1('0xd3')]){_0x258a4d=_0x28b854[_0x0eb1('0x43')][_0x0eb1('0xd3')][0x0]==='-'?_0x0eb1('0x177'):'asc';_0x190539=_0x258a4d===_0x0eb1('0x176')?_0x28b854['query']['sort']:_0x28b854[_0x0eb1('0x43')][_0x0eb1('0xd3')][_0x0eb1('0x178')](0x1);}return _(_0x494b22)[_0x0eb1('0x179')]('id')[_0x0eb1('0x17a')]([function(_0x2eb355){return _0x190539===_0x0eb1('0x39')?_0x2eb355[_0x190539][_0x0eb1('0xa2')]():_0x2eb355[_0x190539];}],[_0x258a4d])[_0x0eb1('0x35')](function(_0x316d91){return _[_0x0eb1('0xca')](_0x316d91,['id',_0x0eb1('0x39'),_0x0eb1('0x67'),_0x0eb1('0x9b')]);})[_0x0eb1('0x36')]();})[_0x0eb1('0x16')](function(_0x5a0e93){return amiClient['request'](_0x0eb1('0x2f'),_0x28b854)['then'](function(_0x34a446){if(_0x34a446[_0x0eb1('0x1d')])throw new Error(_0x0eb1('0x17b'));var _0x56942f=_0x34a446[_0x0eb1('0x1f')];var _0x2d35b1=jayson[_0x0eb1('0x13')][_0x0eb1('0x14')]({'port':0x232c});return _0x2d35b1[_0x0eb1('0x15')](_0x0eb1('0x2f'),_0x28b854)['then'](function(_0x24baab){if(_0x24baab[_0x0eb1('0x1d')])throw new Error(_0x0eb1('0x17c'));var _0x34b03d=_0x24baab[_0x0eb1('0x1f')];return _['merge']({},_0x34b03d,_0x56942f);});})[_0x0eb1('0x16')](function(_0x5342b4){return _['map'](_0x5a0e93,function(_0x839045){var _0x233129=_[_0x0eb1('0x38')](_0x5342b4[_0x0eb1('0x4b')],['id',_0x839045['id']]);if(!_0x233129||!_0x839045[_0x0eb1('0x9b')]){_0x839045[_0x0eb1('0x21')]='offline';}else if(_0x233129[_0x0eb1('0xa9')]){_0x839045[_0x0eb1('0x21')]=_0x0eb1('0xff');}else{_0x839045[_0x0eb1('0x21')]=_[_0x0eb1('0x37')]([_0x0eb1('0x17d'),'unknown','unavailable','ringing',null,undefined],_0x233129['voiceStatus'])?_0x0eb1('0x9b'):'busy';}return _0x839045;});});});})[_0x0eb1('0x16')](function(_0x3c2a6b){if(!_0x28b854[_0x0eb1('0x43')][_0x0eb1('0xcb')](_0x0eb1('0xd5'))){_0x1e9e3c[_0x0eb1('0x26')]=qs[_0x0eb1('0x26')](_0x28b854[_0x0eb1('0x43')][_0x0eb1('0x26')]||0xa);_0x1e9e3c['offset']=qs[_0x0eb1('0x24')](_0x28b854[_0x0eb1('0x43')][_0x0eb1('0x24')]);}_0x21fdf7[_0x0eb1('0x27')]=_0x3c2a6b[_0x0eb1('0x4c')];_0x21fdf7['rows']=_0x1e9e3c['limit']?_0x3c2a6b[_0x0eb1('0x17e')](_0x1e9e3c[_0x0eb1('0x24')],_0x1e9e3c[_0x0eb1('0x24')]+_0x1e9e3c[_0x0eb1('0x26')]):_0x3c2a6b;return _0x21fdf7;})[_0x0eb1('0x16')](respondWithFilteredResult(_0x57da28,_0x1e9e3c))['catch'](handleError(_0x57da28,null));};function get_open_tabs(_0x392ec9,_0x58c9f6){var _0x2dfee8=_0x392ec9[_0x0eb1('0x17f')](0x0)['toUpperCase']()+_0x392ec9[_0x0eb1('0x17e')](0x1);var _0x561e67={'type':db[_0x0eb1('0x8c')][_0x0eb1('0x6d')]['SELECT'],'raw':!![]};return new Promise(function(_0x3a7853,_0x2c9aa0){var _0x3b8677=squel[_0x0eb1('0x180')]()[_0x0eb1('0x181')](_0x0eb1('0x182')+_0x2dfee8+_0x0eb1('0x183'),'id')[_0x0eb1('0x181')](_0x0eb1('0x184'))[_0x0eb1('0x6f')](_0x0eb1('0x185')+_0x392ec9+_0x0eb1('0x186'),'ui')['where'](_0x0eb1('0x187'),_0x58c9f6['id']);return db[_0x0eb1('0x6c')][_0x0eb1('0x43')](_0x3b8677[_0x0eb1('0x175')](),_0x561e67)[_0x0eb1('0x16')](function(_0x319432){_0x58c9f6[_0x2dfee8+_0x0eb1('0x188')]=_0x319432;_0x3a7853(_0x319432);})[_0x0eb1('0x54')](function(_0x3c27aa){_0x2c9aa0(_0x3c27aa);});});}
\ No newline at end of file
+var _0x7d1d=['addQueues','channel','online','interface','isValidChannel','Unknown\x20channel','add','capitalize','Queues','penalty','spread','toLowerCase','QueueId','Queue:save','voice','get','format','SIP/%s','voicePause','UserVoiceQueueRt','upsert','removeQueues','remove','isArray','Queue:remove','addAvatar','file','filename','getAvatar','join','root','server/files/images/logos/default_profile.png','userpic','download','server/files/images/','CHAT','FaxOpenTabs','FAX','OpenchannelOpenTabs','OPENCHANNEL','MailOpenTabs','MAIL','createdAt','SmsOpenTabs','SMS','WhatsappOpenTabs','WHATSAPP','findOne','CmContact','filters','order','options','getContacts','CmList','List','Tag','Tags','color','tag','hasOwnProperty','nolimit','Queue','sort','pick','Unknown\x20role','getVoiceQueuesRt','getGroups','ChatGroup','getRecordings','VoiceRecording','ScreenRecording','UserId','getChatInteractions','ChatInteraction','getOpenchannelInteractions','OpenchannelInteraction','getMailInteractions','MailInteraction','getSmsInteractions','getFaxInteractions','FaxInteraction','getWhatsappInteractions','WhatsappInteraction','phone','mobile','loginInPause','intrf','user:forcelogout','socket','remoteAddress','connection','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','getVoiceQueues','UserVoiceQueue.penalty','MemberReport','forEach','getChannels','YYYY-MM-DD\x20HH:mm:ss','device','PAUSE','LOGININPAUSE','bulkCreate','concat','isMiddleware','pause','QueuePause','DEFAULT\x20PAUSE','type','Channel\x20parameter\x20%s\x20is\x20invalid','mailPause','faxPause','smsPause','pauseType','lastPauseAt','User\x20with\x20id\x20%s\x20not\x20found','unpause','getTeams','addTeams','resolve','Body\x20parameter\x20\x27ids\x27\x20is\x20required','transaction','getAssociatedQueues','addAgent','getDataValue','TeamVoicePrefix','VoicePrefixId','removeTeams','Query\x20parameter\x20\x27ids\x27\x20is\x20required','Team','flattenDeep','removeAgent','UserVoicePrefix','getLists','getAgents','values','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','user_has_chat_interactions:save','removeChatInteractions','user_has_chat_interactions:remove','addMailInteractions','user_has_mail_interactions:save','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','user_has_fax_interactions:save','removeFaxInteractions','user_has_fax_interactions:remove','addSmsInteractions','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','user_has_openchannel_interactions:save','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','addWhatsappInteractions','user_has_whatsapp_interactions:save','removeWhatsappInteractions','getVoicePrefixes','getFaxAccounts','FaxAccount','addFaxAccounts','removeFaxAccounts','MailAccount','getMailAccounts','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','SmsAccount','addSmsAccounts','removeSmsAccounts','getChatWebsites','addChatWebsites','removeChatWebsites','getWhatsappAccounts','WhatsappAccount','addWhatsappAccounts','removeWhatsappAccounts','getScheduledCalls','CmHopper','$or','$gt','$gte','$lte','$eq','$not','$between','$notBetween','$notIn','$like','$overlap','$contains','$contained','$any','firstName','lastName','Contact','dialActive','VoiceQueue','getApiKey','token','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','generateApiKey','nonce','removeApiKey','apiKeyNonce','API\x20key\x20not\x20available','whoami','Unable\x20to\x20retrieve\x20the\x20current\x20user','getUserSetting','getPresence','teams','queues','isEmpty','inbound','flatten','lower','col','toString','asc','desc','substring','uniqBy','orderBy','idle','unknown','unavailable','ringing','voiceStatus','busy','slice','charAt','QueryTypes','select','field','InteractionId','ui.createdAt','user_has_','_interactions','ui.UserId\x20=\x20?','OpenTabs','util','lodash','squel','jayson/promise','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','APIBadRequestError','../../errors/api','APINotFoundError','handleError','../../mysqldb','socket.io-emitter','redis','defaults','localhost','client','http','request','then','User,\x20%s,\x20%s','debug','User,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','json','update','role','agent','emit','userNotification:recalc:','admin','Users','user','Agents','Telephones','telephone','filter','ignore','map','value','includes','name','UserProfileResource','destroy','stack','send','index','User','rawAttributes','fieldName','getOptions','where','query','includeAll','include','userSetting','attributes','push','findAll','rows','openTabs','true','length','chat','sms','dataValues','mail','openchannel','all','show','params','model','differenceBy','keys','password','intersection','fields','UserSetting','merge','find','whatsapp','fax','body','describe','addContacts','ids','omit','internal','Setting','findById','max','isNil','min_internal','sequelize','select\x20(select\x20IFNULL(max(internal)+1,1)\x20from\x20users\x20where\x20internal\x20<\x20md.internal)\x20as\x20\x27from\x27,\x20md.internal\x20-\x201\x20as\x20\x27to\x27\x20from\x20users\x20md\x20where\x20md.internal\x20!=\x201\x20and\x20not\x20exists\x20(select\x201\x20from\x20users\x20md2\x20where\x20md2.internal\x20=\x20md.internal\x20-\x201)','SELECT','from','voicemail','mailbox','email','permissions','101','102','103','110','104','105','108','109','111','114','115','Unauthorized','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator','checkUserLimits','settingsEnabled','userProfileId','create','VoiceMail','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','some','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator','autoAssociation','compact','newPassword','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','authenticate','oldPassword','Sequelize','ValidationError','Wrong\x20credentials','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','securePassword','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','previousPasswords','validatePasswordHistory','updatePasswordsHistory'];(function(_0x302335,_0x58b786){var _0x42d3d7=function(_0x330155){while(--_0x330155){_0x302335['push'](_0x302335['shift']());}};_0x42d3d7(++_0x58b786);}(_0x7d1d,0xf4));var _0xd7d1=function(_0x22f85a,_0x195ed5){_0x22f85a=_0x22f85a-0x0;var _0xaa717=_0x7d1d[_0x22f85a];return _0xaa717;};'use strict';var moment=require('moment');var util=require(_0xd7d1('0x0'));var path=require('path');var fs=require('fs');var _=require(_0xd7d1('0x1'));var squel=require(_0xd7d1('0x2'));var jayson=require(_0xd7d1('0x3'));var Redis=require(_0xd7d1('0x4'));var authService=require(_0xd7d1('0x5'));var qs=require(_0xd7d1('0x6'));var logger=require(_0xd7d1('0x7'))(_0xd7d1('0x8'));var utils=require(_0xd7d1('0x9'));var config=require(_0xd7d1('0xa'));var licenseUtil=require(_0xd7d1('0xb'));var APIBadRequestError=require('../../errors/api')[_0xd7d1('0xc')];var APINotFoundError=require(_0xd7d1('0xd'))[_0xd7d1('0xe')];var APIHandleError=require(_0xd7d1('0xd'))[_0xd7d1('0xf')];var db=require(_0xd7d1('0x10'))['db'];var socket=require(_0xd7d1('0x11'))(new Redis(config[_0xd7d1('0x12')]));require('./user.socket')['register'](socket);config[_0xd7d1('0x12')]=_[_0xd7d1('0x13')](config[_0xd7d1('0x12')],{'host':_0xd7d1('0x14'),'port':0x18eb});var amiClient=jayson[_0xd7d1('0x15')][_0xd7d1('0x16')]({'port':0x232a});var values;function respondWithRpcPromise(_0x2bb8bf,_0x1fc3c1,_0x3f511b,_0x1ebe26){return new Promise(function(_0x1deee1,_0x243f8c){var _0x9f1f3e=_0x1ebe26||amiClient;return _0x9f1f3e[_0xd7d1('0x17')](_0x2bb8bf,_0x3f511b)[_0xd7d1('0x18')](function(_0x529e32){logger['info'](_0xd7d1('0x19'),_0x1fc3c1,'request\x20sent');logger[_0xd7d1('0x1a')](_0xd7d1('0x1b'),_0x1fc3c1,_0xd7d1('0x1c'),JSON[_0xd7d1('0x1d')](_0x529e32));if(_0x529e32[_0xd7d1('0x1e')]){if(_0x529e32[_0xd7d1('0x1e')][_0xd7d1('0x1f')]===0x1f4){logger['error'](_0xd7d1('0x19'),_0x1fc3c1,_0x529e32['error']['message']);return _0x243f8c(_0x529e32[_0xd7d1('0x1e')]['message']);}logger['error'](_0xd7d1('0x19'),_0x1fc3c1,_0x529e32['error'][_0xd7d1('0x20')]);return _0x1deee1(_0x529e32[_0xd7d1('0x1e')]['message']);}else{logger[_0xd7d1('0x21')]('User,\x20%s,\x20%s',_0x1fc3c1,'request\x20sent');_0x1deee1(_0x529e32[_0xd7d1('0x22')][_0xd7d1('0x20')]);}})[_0xd7d1('0x23')](function(_0x3f2786){logger[_0xd7d1('0x1e')](_0xd7d1('0x19'),_0x1fc3c1,_0x3f2786);_0x243f8c(_0x3f2786);});});}function respondWithStatusCode(_0x3bd537,_0x12233d){_0x12233d=_0x12233d||0xcc;return function(_0x3adcf2){if(_0x3adcf2){return _0x3bd537[_0xd7d1('0x24')](_0x12233d);}return _0x3bd537[_0xd7d1('0x25')](_0x12233d)[_0xd7d1('0x26')]();};}function respondWithResult(_0x2fd3ba,_0x458776){_0x458776=_0x458776||0xc8;return function(_0x1f453d){if(_0x1f453d){return _0x2fd3ba[_0xd7d1('0x25')](_0x458776)['json'](_0x1f453d);}};}function respondWithFilteredResult(_0x1d1b99,_0x1ec5c6){return function(_0x3acc44){if(_0x3acc44){var _0x1eda03=typeof _0x1ec5c6[_0xd7d1('0x27')]==='undefined'&&typeof _0x1ec5c6[_0xd7d1('0x28')]===_0xd7d1('0x29');var _0x1484c8=_0x3acc44[_0xd7d1('0x2a')];var _0x1ddc18=_0x1eda03?0x0:_0x1ec5c6['offset'];var _0x58983a=_0x1eda03?_0x3acc44[_0xd7d1('0x2a')]:_0x1ec5c6[_0xd7d1('0x27')]+_0x1ec5c6['limit'];var _0xa6e5e3;if(_0x58983a>=_0x1484c8){_0x58983a=_0x1484c8;_0xa6e5e3=0xc8;}else{_0xa6e5e3=0xce;}_0x1d1b99[_0xd7d1('0x25')](_0xa6e5e3);return _0x1d1b99[_0xd7d1('0x2b')](_0xd7d1('0x2c'),_0x1ddc18+'-'+_0x58983a+'/'+_0x1484c8)[_0xd7d1('0x2d')](_0x3acc44);}return null;};}function saveUpdates(_0x4f038e){return function(_0x484e94){if(_0x484e94){return _0x484e94[_0xd7d1('0x2e')](_0x4f038e)[_0xd7d1('0x18')](function(_0x50e09b){if(_0x50e09b[_0xd7d1('0x2f')]===_0xd7d1('0x30')){socket[_0xd7d1('0x31')](_0xd7d1('0x32')+_0x50e09b['id'],_0x50e09b);}return _0x50e09b;});}return null;};}function removeEntity(_0x35d13c){return function(_0x186678){if(_0x186678){return _0x186678['destroy']()[_0xd7d1('0x18')](function(){var _0x337688=_0x186678['get']({'plain':!![]});if(_0x337688[_0xd7d1('0x2f')]===_0xd7d1('0x33'))return;var _0x2da9a7=[{'name':_0xd7d1('0x34'),'value':_0xd7d1('0x35'),'ignore':!![]},{'name':_0xd7d1('0x36'),'value':_0xd7d1('0x30'),'ignore':![]},{'name':_0xd7d1('0x37'),'value':_0xd7d1('0x38'),'ignore':![]}];var _0x116b30=_(_0x2da9a7)[_0xd7d1('0x39')](_0xd7d1('0x3a'))[_0xd7d1('0x3b')](_0xd7d1('0x3c'))[_0xd7d1('0x3c')]();if(_[_0xd7d1('0x3d')](_0x116b30,_0x337688[_0xd7d1('0x2f')])){return;}var _0x393ce0=_['find'](_0x2da9a7,[_0xd7d1('0x3c'),_0x337688[_0xd7d1('0x2f')]])[_0xd7d1('0x3e')];return db[_0xd7d1('0x3f')][_0xd7d1('0x40')]({'where':{'type':_0x393ce0,'resourceId':_0x337688['id']}})[_0xd7d1('0x18')](function(){return _0x186678;});})['then'](function(){_0x35d13c[_0xd7d1('0x25')](0xcc)[_0xd7d1('0x26')]();});}};}function handleEntityNotFound(_0x308660){return function(_0x199cfa){if(!_0x199cfa){_0x308660['sendStatus'](0x194);}return _0x199cfa;};}function handleError(_0xe7efa3,_0x4f894a){_0x4f894a=_0x4f894a||0x1f4;return function(_0x4a0775){logger['error'](_0x4a0775[_0xd7d1('0x41')]);if(_0x4a0775[_0xd7d1('0x3e')]){delete _0x4a0775[_0xd7d1('0x3e')];}_0xe7efa3[_0xd7d1('0x25')](_0x4f894a)[_0xd7d1('0x42')](_0x4a0775);};}exports[_0xd7d1('0x43')]=function(_0x3485a2,_0x142099){var _0x34cb5c={},_0x238fc2={'count':0x0,'rows':[]};var _0xcfed2=_(db[_0xd7d1('0x44')][_0xd7d1('0x45')])[_0xd7d1('0x3b')](function(_0x3b5037){return{'name':_0x3b5037[_0xd7d1('0x46')],'type':_0x3b5037['type']['key']};})[_0xd7d1('0x39')](function(_0x1be0ac){return!_[_0xd7d1('0x3d')](['password','salt'],_0x1be0ac[_0xd7d1('0x3e')]);})['value']();_0x34cb5c=qs[_0xd7d1('0x47')](_0xcfed2,_0x3485a2);var _0x2de917={'where':_0x34cb5c[_0xd7d1('0x48')]};return db[_0xd7d1('0x44')]['count'](_0x2de917)[_0xd7d1('0x18')](function(_0x2dc8c6){_0x238fc2[_0xd7d1('0x2a')]=_0x2dc8c6;if(_0x3485a2[_0xd7d1('0x49')][_0xd7d1('0x4a')]){_0x34cb5c[_0xd7d1('0x4b')]=[{'all':!![]}];}if(_0x3485a2['query'][_0xd7d1('0x4c')]==='true'){_0x34cb5c[_0xd7d1('0x4b')]=[{'model':db['UserSetting'],'as':_0xd7d1('0x4c')}];}if(!_[_0xd7d1('0x3d')](_0x34cb5c['attributes'],'id')){_0x34cb5c[_0xd7d1('0x4d')][_0xd7d1('0x4e')]('id');}return db[_0xd7d1('0x44')][_0xd7d1('0x4f')](_0x34cb5c);})['then'](function(_0x2c2eae){_0x238fc2[_0xd7d1('0x50')]=_0x2c2eae;if(_0x3485a2[_0xd7d1('0x49')][_0xd7d1('0x51')]===_0xd7d1('0x52')){var _0x232039=[];for(var _0x485d14=0x0;_0x485d14<_0x238fc2[_0xd7d1('0x50')][_0xd7d1('0x53')];_0x485d14++){_0x232039[_0xd7d1('0x4e')](get_open_tabs(_0xd7d1('0x54'),_0x238fc2[_0xd7d1('0x50')][_0x485d14]['dataValues']));_0x232039[_0xd7d1('0x4e')](get_open_tabs(_0xd7d1('0x55'),_0x238fc2[_0xd7d1('0x50')][_0x485d14][_0xd7d1('0x56')]));_0x232039[_0xd7d1('0x4e')](get_open_tabs('fax',_0x238fc2[_0xd7d1('0x50')][_0x485d14][_0xd7d1('0x56')]));_0x232039['push'](get_open_tabs(_0xd7d1('0x57'),_0x238fc2[_0xd7d1('0x50')][_0x485d14]['dataValues']));_0x232039[_0xd7d1('0x4e')](get_open_tabs(_0xd7d1('0x58'),_0x238fc2[_0xd7d1('0x50')][_0x485d14][_0xd7d1('0x56')]));_0x232039[_0xd7d1('0x4e')](get_open_tabs('whatsapp',_0x238fc2[_0xd7d1('0x50')][_0x485d14][_0xd7d1('0x56')]));}return Promise[_0xd7d1('0x59')](_0x232039)[_0xd7d1('0x18')](function(){return _0x238fc2;});}else{return _0x238fc2;}})[_0xd7d1('0x18')](respondWithFilteredResult(_0x142099,_0x34cb5c))['catch'](handleError(_0x142099,null));};exports[_0xd7d1('0x5a')]=function(_0x57efb7,_0x4369fd){var _0x272220={'raw':![],'where':{'id':_0x57efb7[_0xd7d1('0x5b')]['id']}},_0x98db9c={};_0x98db9c[_0xd7d1('0x5c')]=_[_0xd7d1('0x5d')](_[_0xd7d1('0x5e')](db['User'][_0xd7d1('0x45')]),[_0xd7d1('0x5f'),'salt']);_0x98db9c[_0xd7d1('0x49')]=_[_0xd7d1('0x5e')](_0x57efb7[_0xd7d1('0x49')]);_0x98db9c['filters']=_['intersection'](_0x98db9c[_0xd7d1('0x5c')],_0x98db9c['query']);_0x272220['attributes']=_[_0xd7d1('0x60')](_0x98db9c[_0xd7d1('0x5c')],qs[_0xd7d1('0x61')](_0x57efb7['query'][_0xd7d1('0x61')]));_0x272220[_0xd7d1('0x4d')]=_0x272220[_0xd7d1('0x4d')]['length']?_0x272220[_0xd7d1('0x4d')]:_0x98db9c[_0xd7d1('0x5c')];if(_0x57efb7[_0xd7d1('0x49')]['includeAll']){_0x272220[_0xd7d1('0x4b')]=[{'all':!![]}];}if(_0x57efb7[_0xd7d1('0x49')][_0xd7d1('0x4c')]===_0xd7d1('0x52')){_0x272220[_0xd7d1('0x4b')]=[{'model':db[_0xd7d1('0x62')],'as':_0xd7d1('0x4c')}];}_0x272220=_[_0xd7d1('0x63')]({},_0x272220,_0x57efb7['options']);if(!_['includes'](_0x272220[_0xd7d1('0x4d')],'id')){_0x272220[_0xd7d1('0x4d')]['push']('id');}return db[_0xd7d1('0x44')][_0xd7d1('0x64')](_0x272220)[_0xd7d1('0x18')](handleEntityNotFound(_0x4369fd,null))[_0xd7d1('0x18')](function(_0xc702a7){var _0x1bdbc8=[];values=_0xc702a7;if(_0x57efb7[_0xd7d1('0x49')][_0xd7d1('0x51')]==='true'){_0x1bdbc8[_0xd7d1('0x4e')](get_open_tabs(_0xd7d1('0x54'),_0xc702a7[_0xd7d1('0x56')]));_0x1bdbc8[_0xd7d1('0x4e')](get_open_tabs('sms',_0xc702a7['dataValues']));_0x1bdbc8[_0xd7d1('0x4e')](get_open_tabs(_0xd7d1('0x58'),_0xc702a7['dataValues']));_0x1bdbc8[_0xd7d1('0x4e')](get_open_tabs(_0xd7d1('0x65'),_0xc702a7[_0xd7d1('0x56')]));_0x1bdbc8['push'](get_open_tabs(_0xd7d1('0x66'),_0xc702a7[_0xd7d1('0x56')]));_0x1bdbc8[_0xd7d1('0x4e')](get_open_tabs(_0xd7d1('0x57'),_0xc702a7[_0xd7d1('0x56')]));return Promise[_0xd7d1('0x59')](_0x1bdbc8);}else{return values;}})['then'](function(){return values;})[_0xd7d1('0x18')](respondWithResult(_0x4369fd,null))[_0xd7d1('0x23')](handleError(_0x4369fd,null));};exports[_0xd7d1('0x2e')]=function(_0x2c31ae,_0x31fa8d){if(_0x2c31ae[_0xd7d1('0x67')]['id']){delete _0x2c31ae[_0xd7d1('0x67')]['id'];}delete _0x2c31ae[_0xd7d1('0x67')][_0xd7d1('0x2f')];return db[_0xd7d1('0x44')][_0xd7d1('0x64')]({'where':{'id':_0x2c31ae[_0xd7d1('0x5b')]['id']}})['then'](handleEntityNotFound(_0x31fa8d,null))['then'](saveUpdates(_0x2c31ae['body'],null))[_0xd7d1('0x18')](respondWithResult(_0x31fa8d,null))['catch'](handleError(_0x31fa8d,null));};exports[_0xd7d1('0x68')]=function(_0x9b5a6f,_0x214c9e){return db[_0xd7d1('0x44')][_0xd7d1('0x68')]()['then'](respondWithResult(_0x214c9e,null))['catch'](handleError(_0x214c9e,null));};exports[_0xd7d1('0x69')]=function(_0x3c93e5,_0x6cce25){return db[_0xd7d1('0x44')][_0xd7d1('0x64')]({'where':{'id':_0x3c93e5[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x6cce25,null))[_0xd7d1('0x18')](function(_0x149cdb){if(_0x149cdb){return _0x149cdb[_0xd7d1('0x69')](_0x3c93e5[_0xd7d1('0x67')][_0xd7d1('0x6a')],_[_0xd7d1('0x6b')](_0x3c93e5[_0xd7d1('0x67')],[_0xd7d1('0x6a'),'id'])||{});}})['then'](respondWithResult(_0x6cce25,null))['catch'](handleError(_0x6cce25,null));};function validateUser(_0x4cb17d){return new Promise(function(_0x56c732,_0x405d93){if(_0x4cb17d[_0xd7d1('0x6c')])return _0x56c732(_0x4cb17d);return db[_0xd7d1('0x6d')][_0xd7d1('0x6e')](0x1)[_0xd7d1('0x18')](function(_0x595daf){if(_0x595daf['securePassword'])authService['validatePasswordPattern'](_0x4cb17d[_0xd7d1('0x5f')]);db[_0xd7d1('0x44')][_0xd7d1('0x6f')](_0xd7d1('0x6c'))[_0xd7d1('0x18')](function(_0x12a9e8){if(_[_0xd7d1('0x70')](_0x12a9e8)){_0x4cb17d[_0xd7d1('0x6c')]=_0x595daf['min_internal']||0x1;return;}if(_['isNil'](_0x595daf[_0xd7d1('0x71')])||_0x595daf[_0xd7d1('0x71')]===_0x12a9e8){_0x4cb17d[_0xd7d1('0x6c')]=_0x12a9e8+0x1;return;}if(_0x595daf['min_internal']>_0x12a9e8){_0x4cb17d[_0xd7d1('0x6c')]=_0x595daf[_0xd7d1('0x71')];return;}return db[_0xd7d1('0x72')][_0xd7d1('0x49')](_0xd7d1('0x73'),{'type':db['sequelize']['QueryTypes'][_0xd7d1('0x74')]})['then'](function(_0x44a21e){if(_0x44a21e&&_0x44a21e['length']){for(var _0x448d7e=0x0,_0x4cb2f4=_0x44a21e[_0xd7d1('0x53')];_0x448d7e<_0x4cb2f4&&_[_0xd7d1('0x70')](_0x4cb17d[_0xd7d1('0x6c')]);_0x448d7e++){if(_0x595daf['min_internal']<=_0x44a21e[_0x448d7e][_0xd7d1('0x75')]){_0x4cb17d['internal']=_0x44a21e[_0x448d7e]['from'];}else if(_0x595daf['min_internal']>_0x44a21e[_0x448d7e][_0xd7d1('0x75')]&&_0x595daf[_0xd7d1('0x71')]<=_0x44a21e[_0x448d7e]['to']){_0x4cb17d[_0xd7d1('0x6c')]=_0x595daf[_0xd7d1('0x71')];}}}if(_['isNil'](_0x4cb17d[_0xd7d1('0x6c')])){_0x4cb17d[_0xd7d1('0x6c')]=_0x12a9e8+0x1;}return _0x56c732(_0x4cb17d);});});})[_0xd7d1('0x23')](function(_0x5ab5e6){_0x405d93(_0x5ab5e6);});});}function updateUser(_0x307659){return new Promise(function(_0x578ae1,_0x1cd98f){try{if(_0x307659[_0xd7d1('0x76')]){_0x307659[_0xd7d1('0x77')]=_0x307659[_0xd7d1('0x6c')];_0x307659['VoiceMail']={'mailbox':_0x307659[_0xd7d1('0x6c')],'password':_0x307659[_0xd7d1('0x5f')],'fullname':_0x307659['fullname'],'email':_0x307659[_0xd7d1('0x78')]};}if(_0x307659[_0xd7d1('0x2f')]==='agent'){if(!_0x307659[_0xd7d1('0x79')])_0x307659[_0xd7d1('0x79')]=[_0xd7d1('0x7a'),_0xd7d1('0x7b'),_0xd7d1('0x7c'),'113',_0xd7d1('0x7d'),_0xd7d1('0x7e'),_0xd7d1('0x7f'),'106','107',_0xd7d1('0x80'),_0xd7d1('0x81'),'100',_0xd7d1('0x82'),_0xd7d1('0x83'),_0xd7d1('0x84')];}_0x578ae1(_0x307659);}catch(_0xcbc02b){_0x1cd98f(_0xcbc02b);}});}exports['create']=function(_0xca029f,_0x1514a3){if(_0xca029f[_0xd7d1('0x35')][_0xd7d1('0x2f')]===_0xd7d1('0x30'))throw new Error(_0xd7d1('0x85'));if(_0xca029f[_0xd7d1('0x67')][_0xd7d1('0x2f')]===_0xd7d1('0x35')&&_0xca029f[_0xd7d1('0x35')][_0xd7d1('0x2f')]!==_0xd7d1('0x33')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user');}if(_0xca029f['body'][_0xd7d1('0x2f')]==='admin'&&_0xca029f[_0xd7d1('0x35')][_0xd7d1('0x2f')]!=='admin'){throw new Error(_0xd7d1('0x86'));}return licenseUtil[_0xd7d1('0x87')]([_0xca029f['body']])[_0xd7d1('0x18')](function(){return validateUser(_0xca029f[_0xd7d1('0x67')]);})[_0xd7d1('0x18')](function(_0x33bc1f){return updateUser(_0x33bc1f)['then'](function(_0x3b6bb0){if(_0x3b6bb0[_0xd7d1('0x2f')]===_0xd7d1('0x33')){_0x3b6bb0[_0xd7d1('0x88')]=_0xca029f[_0xd7d1('0x35')][_0xd7d1('0x88')];delete _0x3b6bb0[_0xd7d1('0x89')];}return _0x3b6bb0;});})[_0xd7d1('0x18')](function(_0x33fe97){return db[_0xd7d1('0x44')][_0xd7d1('0x8a')](_0x33fe97,{'include':[{'model':db['VoiceMail'],'as':_0xd7d1('0x8b')}]});})[_0xd7d1('0x18')](function(_0x665525){if(_0xca029f[_0xd7d1('0x67')]['role']===_0xd7d1('0x35'))return _0x665525;if(_0xca029f[_0xd7d1('0x35')][_0xd7d1('0x2f')]!=='user')return _0x665525;return db[_0xd7d1('0x8c')][_0xd7d1('0x64')]({'where':{'name':_0x665525[_0xd7d1('0x2f')]==='agent'?_0xd7d1('0x36'):'Telephones','userProfileId':_0xca029f[_0xd7d1('0x35')][_0xd7d1('0x89')]},'raw':!![]})[_0xd7d1('0x18')](function(_0x2de19e){if(!_0x2de19e||_0x2de19e['autoAssociation']!=0x0)return _0x665525;return db[_0xd7d1('0x3f')][_0xd7d1('0x8a')]({'name':_0x665525[_0xd7d1('0x3e')],'resourceId':_0x665525['id'],'type':_0x2de19e['name'],'sectionId':_0x2de19e['id']},{})['then'](function(){return _0x665525;});})['catch'](function(_0x3dcc1f){logger[_0xd7d1('0x1e')](_0xd7d1('0x8d'),_0x3dcc1f);throw _0x3dcc1f;});})['then'](respondWithResult(_0x1514a3,0xc9))[_0xd7d1('0x23')](handleError(_0x1514a3,null));};exports['bulkCreate']=function(_0x24f883,_0x3939fb){var _0x34773d=_0x24f883['body'];var _0x724d66=[];if(_0x24f883[_0xd7d1('0x35')]['role']===_0xd7d1('0x30'))throw new Error('Unauthorized');if(_[_0xd7d1('0x8e')](_0x34773d,[_0xd7d1('0x2f'),'user'])&&_0x24f883['user'][_0xd7d1('0x2f')]!==_0xd7d1('0x33')){throw new Error(_0xd7d1('0x8f'));}if(_[_0xd7d1('0x8e')](_0x34773d,[_0xd7d1('0x2f'),_0xd7d1('0x33')])&&_0x24f883[_0xd7d1('0x35')][_0xd7d1('0x2f')]!==_0xd7d1('0x33')){throw new Error(_0xd7d1('0x90'));}return licenseUtil['checkUserLimits'](_0x34773d)['then'](function(){return validateUser(_0x34773d[0x0]);})['then'](function(){for(var _0xecd0dc=0x1;_0xecd0dc<_0x34773d[_0xd7d1('0x53')];_0xecd0dc++){var _0x44ffc1=_0x34773d[_0xecd0dc-0x1][_0xd7d1('0x6c')];if(!_0x34773d[_0xecd0dc][_0xd7d1('0x6c')])_0x34773d[_0xecd0dc][_0xd7d1('0x6c')]=_0x44ffc1+0x1;_0x724d66[_0xd7d1('0x4e')](validateUser(_0x34773d[_0xecd0dc]));}return Promise[_0xd7d1('0x59')](_0x724d66);})[_0xd7d1('0x18')](function(){_0x724d66=[];for(var _0x1d21bc=0x0;_0x1d21bc<_0x34773d[_0xd7d1('0x53')];_0x1d21bc++){_0x724d66[_0xd7d1('0x4e')](updateUser(_0x34773d[_0x1d21bc]));}return Promise['all'](_0x724d66);})['then'](function(){_0x724d66=_0x34773d['map'](function(_0x1249c0){return db[_0xd7d1('0x44')]['create'](_0x1249c0,{'include':[{'model':db[_0xd7d1('0x8b')],'as':_0xd7d1('0x8b')}]})[_0xd7d1('0x18')](function(_0x366d96){_0x1249c0['id']=_0x366d96['id'];return _0x1249c0;});});return Promise['all'](_0x724d66);})[_0xd7d1('0x18')](function(_0x577ce5){if(_0x24f883[_0xd7d1('0x67')][_0xd7d1('0x2f')]===_0xd7d1('0x35'))return _0x577ce5;if(_0x24f883['user'][_0xd7d1('0x2f')]!==_0xd7d1('0x35'))return _0x577ce5;var _0x446d6e=_[_0xd7d1('0x8e')](_0x577ce5,function(_0x4cd367){return _0x4cd367['role']===_0xd7d1('0x30')||_0x4cd367['role']==='telephone';});if(!_0x446d6e)return _0x577ce5;return db[_0xd7d1('0x8c')][_0xd7d1('0x4f')]({'where':{'name':{'$or':[_0xd7d1('0x36'),'Telephones']},'userProfileId':_0x24f883[_0xd7d1('0x35')]['userProfileId']},'raw':!![]})[_0xd7d1('0x18')](function(_0x162772){if(_['isEmpty'](_0x162772)||!_[_0xd7d1('0x8e')](_0x162772,[_0xd7d1('0x91'),0x0]))return _0x577ce5;_0x724d66=[];var _0x54ec79=_(_0x162772)[_0xd7d1('0x3b')](function(_0x21d871){if(_0x21d871[_0xd7d1('0x91')]===0x1)return;return _0x21d871[_0xd7d1('0x3e')]===_0xd7d1('0x36')?_0xd7d1('0x30'):'telephone';})[_0xd7d1('0x92')]()[_0xd7d1('0x3c')]();for(var _0x5b5cc7=0x0;_0x5b5cc7<_0x577ce5['length'];_0x5b5cc7++){if(!_[_0xd7d1('0x3d')](_0x54ec79,_0x577ce5[_0x5b5cc7][_0xd7d1('0x2f')]))return;var _0x574b22=_0x577ce5[_0x5b5cc7][_0xd7d1('0x2f')]===_0xd7d1('0x30')?_0xd7d1('0x36'):_0xd7d1('0x37');_0x724d66[_0xd7d1('0x4e')](db[_0xd7d1('0x3f')][_0xd7d1('0x8a')]({'name':_0x577ce5[_0x5b5cc7][_0xd7d1('0x3e')],'resourceId':_0x577ce5[_0x5b5cc7]['id'],'type':_0x574b22,'sectionId':_[_0xd7d1('0x64')](_0x162772,[_0xd7d1('0x3e'),_0x574b22])['id']},{}));}return Promise[_0xd7d1('0x59')](_0x724d66);});})[_0xd7d1('0x18')](respondWithResult(_0x3939fb,0xc9))[_0xd7d1('0x23')](handleError(_0x3939fb,null));};exports['changePassword']=function(_0x53ec26,_0x378448){if(_0x53ec26[_0xd7d1('0x67')]['id']){delete _0x53ec26['body']['id'];}return db[_0xd7d1('0x44')][_0xd7d1('0x64')]({'where':{'id':_0x53ec26[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](function(_0xd46aef){if(!_0xd46aef)return null;if(_0xd46aef['id']===_0x53ec26[_0xd7d1('0x35')]['id']){if(!_0x53ec26[_0xd7d1('0x67')]['oldPassword']||!_0x53ec26[_0xd7d1('0x67')][_0xd7d1('0x93')]){throw new db['Sequelize']['ValidationError'](_0xd7d1('0x94'));}if(!_0xd46aef[_0xd7d1('0x95')](_0x53ec26[_0xd7d1('0x67')][_0xd7d1('0x96')])){throw new db[(_0xd7d1('0x97'))][(_0xd7d1('0x98'))](_0xd7d1('0x99'));}if(_0x53ec26[_0xd7d1('0x67')][_0xd7d1('0x96')]===_0x53ec26[_0xd7d1('0x67')][_0xd7d1('0x93')]){throw new db[(_0xd7d1('0x97'))]['ValidationError'](_0xd7d1('0x9a'));}}else if(_0x53ec26[_0xd7d1('0x35')]['role']===_0xd7d1('0x33')){if(!_0x53ec26['body'][_0xd7d1('0x93')]){throw new db[(_0xd7d1('0x97'))][(_0xd7d1('0x98'))](_0xd7d1('0x9b'));}}else if(_0x53ec26['user']['role']==='user'){if(!_0x53ec26[_0xd7d1('0x67')][_0xd7d1('0x93')]){throw new db['Sequelize'][(_0xd7d1('0x98'))](_0xd7d1('0x9b'));}if(_0xd46aef[_0xd7d1('0x2f')]!==_0xd7d1('0x30')){throw new db[(_0xd7d1('0x97'))][(_0xd7d1('0x98'))]('Unauthorized');}}else{throw new db[(_0xd7d1('0x97'))][(_0xd7d1('0x98'))]('Unauthorized');}return _0xd46aef;})[_0xd7d1('0x18')](handleEntityNotFound(_0x378448,null))[_0xd7d1('0x18')](function(_0x544c43){return db[_0xd7d1('0x6d')]['findOne']({'attributes':['id',_0xd7d1('0x9c'),_0xd7d1('0x9d'),_0xd7d1('0x9e')]})[_0xd7d1('0x18')](function(_0x29ac0b){if(_0x29ac0b['securePassword'])authService[_0xd7d1('0x9f')](_0x53ec26[_0xd7d1('0x67')][_0xd7d1('0x93')]);if(!_0x29ac0b[_0xd7d1('0x9d')]||!_0x544c43[_0xd7d1('0xa0')])return _0x544c43;authService[_0xd7d1('0xa1')](_0x53ec26['body'][_0xd7d1('0x93')],_0x544c43[_0xd7d1('0xa0')],_0x29ac0b[_0xd7d1('0x9e')]);return _0x544c43;})['then'](saveUpdates({'password':_0x53ec26[_0xd7d1('0x67')]['newPassword'],'passwordResetAt':_0x53ec26[_0xd7d1('0x35')]['id']==_0x53ec26[_0xd7d1('0x5b')]['id']?moment():null,'previousPasswords':authService[_0xd7d1('0xa2')](_0x53ec26['body'][_0xd7d1('0x93')],_0x544c43[_0xd7d1('0xa0')])},null));})[_0xd7d1('0x18')](respondWithResult(_0x378448,null))[_0xd7d1('0x23')](handleError(_0x378448,null));};exports[_0xd7d1('0xa3')]=function(_0x2a81dc,_0x4a7849){var _0x4c09ef=_0x2a81dc[_0xd7d1('0x67')][_0xd7d1('0xa4')];return db['User'][_0xd7d1('0x64')]({'where':{'id':_0x2a81dc[_0xd7d1('0x5b')]['id']},'attributes':['id',_0xd7d1('0x3e'),_0xd7d1('0x2f'),_0xd7d1('0xa5'),'loginInPause','voicePause',_0xd7d1('0xa6')]})[_0xd7d1('0x18')](handleEntityNotFound(_0x4a7849,null))[_0xd7d1('0x18')](function(_0x4c8d17){if(_0x4c8d17){if(!utils[_0xd7d1('0xa7')](_0x4c09ef)){throw new db['Sequelize']['ValidationError'](_0xd7d1('0xa8'));}return _0x4c8d17[_0xd7d1('0xa9')+_[_0xd7d1('0xaa')](_0x4c09ef['toLowerCase']())+_0xd7d1('0xab')](_0x2a81dc['body'][_0xd7d1('0x6a')],{'penalty':_0x2a81dc[_0xd7d1('0x67')][_0xd7d1('0xac')]||0x0})[_0xd7d1('0xad')](function(_0x1a6cf1){for(var _0x25d79e=0x0;_0x25d79e<_0x2a81dc[_0xd7d1('0x67')][_0xd7d1('0x6a')][_0xd7d1('0x53')];_0x25d79e+=0x1){var _0x1859d4={'UserId':Number(_0x2a81dc['params']['id'])};_0x1859d4[_[_0xd7d1('0xaa')](_0x4c09ef[_0xd7d1('0xae')]())+_0xd7d1('0xaf')]=Number(_0x2a81dc['body']['ids'][_0x25d79e]);socket['emit'](_0xd7d1('0x35')+_[_0xd7d1('0xaa')](_0x4c09ef['toLowerCase']())+_0xd7d1('0xb0'),_0x1859d4);}return _0x1a6cf1;})['then'](function(){if(_0x4c09ef===_0xd7d1('0xb1')){return db['VoiceQueue'][_0xd7d1('0x4f')]({'where':{'id':_0x2a81dc[_0xd7d1('0x67')][_0xd7d1('0x6a')]||[]},'raw':!![],'attributes':['id',_0xd7d1('0x3e')]});}})[_0xd7d1('0x18')](function(_0x2d4611){var _0x5c964b=_0x4c8d17[_0xd7d1('0xb2')]({'plain':!![]});var _0x3f861f=[];if(_0x4c09ef==='voice'&&_0x5c964b[_0xd7d1('0x2f')]===_0xd7d1('0x30')&&_0x5c964b[_0xd7d1('0xa5')]){for(let _0x4f5856=0x0;_0x4f5856<_0x2d4611[_0xd7d1('0x53')];_0x4f5856+=0x1){_0x3f861f[_0xd7d1('0x4e')]({'membername':_0x5c964b[_0xd7d1('0x3e')],'UserId':_0x5c964b['id'],'queue_name':_0x2d4611[_0x4f5856]['name'],'VoiceQueueId':_0x2d4611[_0x4f5856]['id'],'interface':_[_0xd7d1('0x70')](_0x5c964b['interface'])?util[_0xd7d1('0xb3')](_0xd7d1('0xb4'),_0x5c964b[_0xd7d1('0x3e')]):_0x5c964b[_0xd7d1('0xa6')],'paused':_0x5c964b[_0xd7d1('0xb5')]||![],'penalty':_0x2a81dc[_0xd7d1('0x67')][_0xd7d1('0xac')]||0x0});}return Promise['all'](_0x3f861f[_0xd7d1('0x3b')](function(_0x2fbbaf){return db[_0xd7d1('0xb6')][_0xd7d1('0xb7')](_0x2fbbaf);}));}return _0x4c8d17;});}})[_0xd7d1('0x18')](respondWithStatusCode(_0x4a7849,null))[_0xd7d1('0x23')](handleError(_0x4a7849,null));};exports[_0xd7d1('0xb8')]=function(_0x10f3ea,_0x3c7307){var _0x44484d,_0x4ec3d7;return db[_0xd7d1('0x44')][_0xd7d1('0x64')]({'where':{'id':_0x10f3ea[_0xd7d1('0x5b')]['id']},'attributes':['id','name',_0xd7d1('0x2f')]})[_0xd7d1('0x18')](handleEntityNotFound(_0x3c7307,null))[_0xd7d1('0x18')](function(_0x4b67b4){if(_0x4b67b4){_0x44484d=_0x4b67b4;if(!_0x10f3ea['query']['channel']||!utils[_0xd7d1('0xa7')](_0x10f3ea[_0xd7d1('0x49')][_0xd7d1('0xa4')])){throw new db[(_0xd7d1('0x97'))]['ValidationError'](_0xd7d1('0xa8'));}return _0x4b67b4[_0xd7d1('0xb9')+_[_0xd7d1('0xaa')](_0x10f3ea[_0xd7d1('0x49')][_0xd7d1('0xa4')][_0xd7d1('0xae')]())+_0xd7d1('0xab')](_0x10f3ea[_0xd7d1('0x49')][_0xd7d1('0x6a')]);}})[_0xd7d1('0x18')](function(_0x35509e){if(_[_0xd7d1('0xba')](_0x10f3ea[_0xd7d1('0x49')][_0xd7d1('0x6a')])){for(var _0x51b75b=0x0;_0x51b75b<_0x10f3ea[_0xd7d1('0x49')][_0xd7d1('0x6a')][_0xd7d1('0x53')];_0x51b75b+=0x1){_0x4ec3d7={'UserId':Number(_0x10f3ea[_0xd7d1('0x5b')]['id'])};_0x4ec3d7[_['capitalize'](_0x10f3ea[_0xd7d1('0x49')][_0xd7d1('0xa4')][_0xd7d1('0xae')]())+_0xd7d1('0xaf')]=Number(_0x10f3ea['query'][_0xd7d1('0x6a')][_0x51b75b]);socket[_0xd7d1('0x31')](_0xd7d1('0x35')+_[_0xd7d1('0xaa')](_0x10f3ea[_0xd7d1('0x49')][_0xd7d1('0xa4')]['toLowerCase']())+_0xd7d1('0xbb'),_0x4ec3d7);}}else{_0x4ec3d7={'UserId':Number(_0x10f3ea[_0xd7d1('0x5b')]['id'])};_0x4ec3d7[_[_0xd7d1('0xaa')](_0x10f3ea[_0xd7d1('0x49')]['channel'][_0xd7d1('0xae')]())+_0xd7d1('0xaf')]=Number(_0x10f3ea[_0xd7d1('0x49')][_0xd7d1('0x6a')]);socket[_0xd7d1('0x31')](_0xd7d1('0x35')+_[_0xd7d1('0xaa')](_0x10f3ea[_0xd7d1('0x49')][_0xd7d1('0xa4')][_0xd7d1('0xae')]())+_0xd7d1('0xbb'),_0x4ec3d7);}return _0x35509e;})[_0xd7d1('0x18')](function(){if(_0x10f3ea[_0xd7d1('0x49')][_0xd7d1('0xa4')]==='voice'){return db['UserVoiceQueueRt'][_0xd7d1('0x40')]({'where':{'UserId':_0x10f3ea[_0xd7d1('0x5b')]['id'],'VoiceQueueId':_0x10f3ea[_0xd7d1('0x49')][_0xd7d1('0x6a')]},'individualHooks':!![]})[_0xd7d1('0x18')](function(){return _0x44484d;});}return _0x44484d;})[_0xd7d1('0x18')](respondWithStatusCode(_0x3c7307,null))[_0xd7d1('0x23')](handleError(_0x3c7307,null));};exports[_0xd7d1('0xbc')]=function(_0x2a60ac,_0x3308c2){_0x2a60ac[_0xd7d1('0x67')]['userpic']=_0x2a60ac[_0xd7d1('0xbd')][_0xd7d1('0xbe')];return db[_0xd7d1('0x44')][_0xd7d1('0x64')]({'where':{'id':_0x2a60ac['params']['id']}})['then'](handleEntityNotFound(_0x3308c2,null))[_0xd7d1('0x18')](saveUpdates(_0x2a60ac[_0xd7d1('0x67')],null))['then'](respondWithResult(_0x3308c2,null))[_0xd7d1('0x23')](handleError(_0x3308c2,null));};exports[_0xd7d1('0xbf')]=function(_0x48c2cd,_0x19f255){var _0x5c35b8=path[_0xd7d1('0xc0')](config[_0xd7d1('0xc1')],_0xd7d1('0xc2'));return db['User'][_0xd7d1('0x64')]({'where':{'id':_0x48c2cd[_0xd7d1('0x5b')]['id']},'attributes':['id',_0xd7d1('0xc3')],'raw':!![]})[_0xd7d1('0x18')](handleEntityNotFound(_0x19f255,null))['then'](function(_0x4570cd){if(_0x4570cd){if(_[_0xd7d1('0x70')](_0x4570cd[_0xd7d1('0xc3')])){return _0x19f255[_0xd7d1('0xc4')](_0x5c35b8);}else{if(!fs['existsSync'](path['join'](config[_0xd7d1('0xc1')],'server/files/images/',_0x4570cd[_0xd7d1('0xc3')]))){return _0x19f255['download'](_0x5c35b8);}return _0x19f255['download'](path[_0xd7d1('0xc0')](config['root'],_0xd7d1('0xc5'),_0x4570cd[_0xd7d1('0xc3')]));}}})[_0xd7d1('0x23')](handleError(_0x19f255,null));};exports['getOpenTabs']=function(_0x142904,_0x1779fe){return db[_0xd7d1('0x44')][_0xd7d1('0x64')]({'where':{'id':_0x142904[_0xd7d1('0x5b')]['id']},'attributes':['id']})[_0xd7d1('0x18')](handleEntityNotFound(_0x1779fe,null))[_0xd7d1('0x18')](function(_0x10c729){var _0x2afed0=[];values=_0x10c729['dataValues'];_0x2afed0['push'](get_open_tabs('chat',_0x10c729[_0xd7d1('0x56')]));_0x2afed0['push'](get_open_tabs(_0xd7d1('0x55'),_0x10c729['dataValues']));_0x2afed0['push'](get_open_tabs(_0xd7d1('0x58'),_0x10c729['dataValues']));_0x2afed0['push'](get_open_tabs(_0xd7d1('0x65'),_0x10c729['dataValues']));_0x2afed0[_0xd7d1('0x4e')](get_open_tabs(_0xd7d1('0x66'),_0x10c729[_0xd7d1('0x56')]));_0x2afed0[_0xd7d1('0x4e')](get_open_tabs('mail',_0x10c729[_0xd7d1('0x56')]));return Promise['all'](_0x2afed0);})['then'](function(_0x57b65f){if(_0x57b65f){var _0x37ffd3=_[_0xd7d1('0x3b')](values['ChatOpenTabs'],function(_0x43ebb0){return{'channel':_0xd7d1('0xc6'),'id':_0x43ebb0['id'],'createdAt':_0x43ebb0['createdAt']};});var _0x18fa2a=_[_0xd7d1('0x3b')](values[_0xd7d1('0xc7')],function(_0x113634){return{'channel':_0xd7d1('0xc8'),'id':_0x113634['id'],'createdAt':_0x113634['createdAt']};});var _0x18812d=_[_0xd7d1('0x3b')](values[_0xd7d1('0xc9')],function(_0x39b178){return{'channel':_0xd7d1('0xca'),'id':_0x39b178['id'],'createdAt':_0x39b178['createdAt']};});var _0x3501ec=_[_0xd7d1('0x3b')](values[_0xd7d1('0xcb')],function(_0x1b8459){return{'channel':_0xd7d1('0xcc'),'id':_0x1b8459['id'],'createdAt':_0x1b8459[_0xd7d1('0xcd')]};});var _0x363727=_[_0xd7d1('0x3b')](values[_0xd7d1('0xce')],function(_0x6d24d5){return{'channel':_0xd7d1('0xcf'),'id':_0x6d24d5['id'],'createdAt':_0x6d24d5[_0xd7d1('0xcd')]};});var _0x3257e2=_['map'](values[_0xd7d1('0xd0')],function(_0x3e501e){return{'channel':_0xd7d1('0xd1'),'id':_0x3e501e['id'],'createdAt':_0x3e501e[_0xd7d1('0xcd')]};});var _0x13d087=_['concat'](_0x37ffd3,_0x18fa2a,_0x18812d,_0x3501ec,_0x363727,_0x3257e2);var _0x47b4d5={'count':_0x13d087[_0xd7d1('0x53')],'rows':_0x13d087};return _0x47b4d5;}else return null;})[_0xd7d1('0x18')](respondWithResult(_0x1779fe,null))[_0xd7d1('0x23')](handleError(_0x1779fe,null));};exports['getContacts']=function(_0x52c68e,_0x2dda61){var _0x21b1e9={};var _0x19ac0d={};var _0x3dce3c;var _0x46a40a;return db[_0xd7d1('0x44')][_0xd7d1('0xd2')]({'where':{'id':_0x52c68e[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x2dda61,null))[_0xd7d1('0x18')](function(_0x54c0c5){if(_0x54c0c5){_0x3dce3c=_0x54c0c5;_0x19ac0d[_0xd7d1('0x5c')]=_[_0xd7d1('0x5e')](db[_0xd7d1('0xd3')][_0xd7d1('0x45')]);_0x19ac0d[_0xd7d1('0x49')]=_[_0xd7d1('0x5e')](_0x52c68e[_0xd7d1('0x49')]);_0x19ac0d[_0xd7d1('0xd4')]=_['intersection'](_0x19ac0d[_0xd7d1('0x5c')],_0x19ac0d[_0xd7d1('0x49')]);_0x21b1e9[_0xd7d1('0x4d')]=_[_0xd7d1('0x60')](_0x19ac0d['model'],qs[_0xd7d1('0x61')](_0x52c68e[_0xd7d1('0x49')][_0xd7d1('0x61')]));_0x21b1e9[_0xd7d1('0x4d')]=_0x21b1e9['attributes'][_0xd7d1('0x53')]?_0x21b1e9[_0xd7d1('0x4d')]:_0x19ac0d[_0xd7d1('0x5c')];_0x21b1e9[_0xd7d1('0xd5')]=qs['sort'](_0x52c68e[_0xd7d1('0x49')]['sort']);_0x21b1e9[_0xd7d1('0x48')]=qs[_0xd7d1('0xd4')](_['pick'](_0x52c68e[_0xd7d1('0x49')],_0x19ac0d[_0xd7d1('0xd4')]));if(_0x52c68e[_0xd7d1('0x49')]['filter']){_0x21b1e9['where']=_[_0xd7d1('0x63')](_0x21b1e9['where'],{'$or':_[_0xd7d1('0x3b')](_0x21b1e9[_0xd7d1('0x4d')],function(_0x19168f){var _0x53d466={};_0x53d466[_0x19168f]={'$like':'%'+_0x52c68e[_0xd7d1('0x49')][_0xd7d1('0x39')]+'%'};return _0x53d466;})});}_0x21b1e9=_[_0xd7d1('0x63')]({},_0x21b1e9,_0x52c68e[_0xd7d1('0xd6')]);return _0x3dce3c[_0xd7d1('0xd7')](_0x21b1e9);}})['then'](function(_0x24cb7c){if(_0x24cb7c){_0x46a40a=_0x24cb7c[_0xd7d1('0x53')];if(_0x52c68e['query']['hasOwnProperty'](_0xd7d1('0x4a'))){_0x21b1e9['include']=[{'model':db[_0xd7d1('0xd8')],'as':_0xd7d1('0xd9'),'required':![]},{'model':db[_0xd7d1('0xda')],'as':_0xd7d1('0xdb'),'attributes':['id',_0xd7d1('0x3e'),_0xd7d1('0xdc')],'where':_0x52c68e[_0xd7d1('0x49')][_0xd7d1('0xdd')]?{'id':_0x52c68e[_0xd7d1('0x49')][_0xd7d1('0xdd')]}:undefined,'required':_0x52c68e[_0xd7d1('0x49')]['tag']?!![]:![]}];}if(!_0x52c68e[_0xd7d1('0x49')][_0xd7d1('0xde')](_0xd7d1('0xdf'))){_0x21b1e9['limit']=qs[_0xd7d1('0x28')](_0x52c68e['query']['limit']);_0x21b1e9['offset']=qs['offset'](_0x52c68e[_0xd7d1('0x49')][_0xd7d1('0x27')]);}return _0x3dce3c[_0xd7d1('0xd7')](_0x21b1e9);}})['then'](function(_0x4cbbd6){if(_0x4cbbd6){return _0x4cbbd6?{'count':_0x46a40a,'rows':_0x4cbbd6}:null;}})[_0xd7d1('0x18')](respondWithResult(_0x2dda61,null))['catch'](handleError(_0x2dda61,null));};exports['getQueues']=function(_0x512602,_0x344c0f){var _0x33b813;var _0xa148ca={};var _0x2f27a6;return db[_0xd7d1('0x44')][_0xd7d1('0xd2')]({'where':{'id':_0x512602['params']['id']},'attributes':['id',_0xd7d1('0x3e'),_0xd7d1('0x2f')]})[_0xd7d1('0x18')](handleEntityNotFound(_0x344c0f,null))[_0xd7d1('0x18')](function(_0x1ff72a){if(!utils['isValidChannel'](_0x512602[_0xd7d1('0x49')][_0xd7d1('0xa4')])){throw new db['Sequelize'][(_0xd7d1('0x98'))](_0xd7d1('0xa8'));}_0x33b813=_0x1ff72a;var _0x5c752d={};_0x5c752d['model']=_[_0xd7d1('0x5e')](db[_[_0xd7d1('0xaa')](_0x512602['query'][_0xd7d1('0xa4')])+_0xd7d1('0xe0')]['rawAttributes']);_0x5c752d[_0xd7d1('0x49')]=_[_0xd7d1('0x5e')](_0x512602['query']);_0x5c752d['filters']=_[_0xd7d1('0x60')](_0x5c752d[_0xd7d1('0x5c')],_0x5c752d[_0xd7d1('0x49')]);_0xa148ca[_0xd7d1('0x4d')]=_[_0xd7d1('0x60')](_0x5c752d['model'],qs[_0xd7d1('0x61')](_0x512602['query'][_0xd7d1('0x61')]));_0xa148ca[_0xd7d1('0x4d')]=_0xa148ca[_0xd7d1('0x4d')]['length']?_0xa148ca[_0xd7d1('0x4d')]:_0x5c752d[_0xd7d1('0x5c')];_0xa148ca['order']=qs[_0xd7d1('0xe1')](_0x512602[_0xd7d1('0x49')][_0xd7d1('0xe1')]);_0xa148ca[_0xd7d1('0x48')]=qs[_0xd7d1('0xd4')](_[_0xd7d1('0xe2')](_0x512602['query'],_0x5c752d[_0xd7d1('0xd4')]));if(_0x512602['query'][_0xd7d1('0x39')]){_0xa148ca[_0xd7d1('0x48')]=_[_0xd7d1('0x63')](_0xa148ca[_0xd7d1('0x48')],{'$or':_['map'](_0xa148ca[_0xd7d1('0x4d')],function(_0x19fc16){var _0x299e53={};_0x299e53[_0x19fc16]={'$like':'%'+_0x512602[_0xd7d1('0x49')][_0xd7d1('0x39')]+'%'};return _0x299e53;})});}_0xa148ca=_['merge']({},_0xa148ca,_0x512602[_0xd7d1('0xd6')]);switch(_0x33b813[_0xd7d1('0x2f')]){case _0xd7d1('0x33'):return db[_['capitalize'](_0x512602['query'][_0xd7d1('0xa4')])+'Queue'][_0xd7d1('0x4f')](_0xa148ca);case _0xd7d1('0x35'):case'agent':return _0x33b813[_0xd7d1('0xb2')+_[_0xd7d1('0xaa')](_0x512602[_0xd7d1('0x49')][_0xd7d1('0xa4')])+_0xd7d1('0xab')](_0xa148ca);default:throw new db[(_0xd7d1('0x97'))][(_0xd7d1('0x98'))](_0xd7d1('0xe3'));}})[_0xd7d1('0x18')](function(_0x32e2dd){_0x2f27a6=_0x32e2dd[_0xd7d1('0x53')];if(!_0x512602[_0xd7d1('0x49')][_0xd7d1('0xde')](_0xd7d1('0xdf'))){_0xa148ca[_0xd7d1('0x28')]=qs[_0xd7d1('0x28')](_0x512602[_0xd7d1('0x49')][_0xd7d1('0x28')]);_0xa148ca[_0xd7d1('0x27')]=qs[_0xd7d1('0x27')](_0x512602[_0xd7d1('0x49')][_0xd7d1('0x27')]);}switch(_0x33b813[_0xd7d1('0x2f')]){case _0xd7d1('0x33'):return db[_[_0xd7d1('0xaa')](_0x512602[_0xd7d1('0x49')][_0xd7d1('0xa4')])+_0xd7d1('0xe0')]['findAll'](_0xa148ca);case'user':case _0xd7d1('0x30'):return _0x33b813[_0xd7d1('0xb2')+_[_0xd7d1('0xaa')](_0x512602[_0xd7d1('0x49')][_0xd7d1('0xa4')])+_0xd7d1('0xab')](_0xa148ca);}})['then'](function(_0x58b081){return{'count':_0x2f27a6,'rows':_0x58b081};})['then'](respondWithResult(_0x344c0f,null))['catch'](handleError(_0x344c0f,null));};exports[_0xd7d1('0xe4')]=function(_0x2c35e9,_0x36f9e1){var _0xbdf7c7={};var _0x5321db={};var _0x336eac;var _0x446e60;return db['User'][_0xd7d1('0xd2')]({'where':{'id':_0x2c35e9[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x36f9e1,null))['then'](function(_0x338479){if(_0x338479){_0x336eac=_0x338479;_0x5321db[_0xd7d1('0x5c')]=_[_0xd7d1('0x5e')](db['UserVoiceQueueRt'][_0xd7d1('0x45')]);_0x5321db[_0xd7d1('0x49')]=_[_0xd7d1('0x5e')](_0x2c35e9[_0xd7d1('0x49')]);_0x5321db[_0xd7d1('0xd4')]=_['intersection'](_0x5321db[_0xd7d1('0x5c')],_0x5321db[_0xd7d1('0x49')]);_0xbdf7c7[_0xd7d1('0x4d')]=_[_0xd7d1('0x60')](_0x5321db[_0xd7d1('0x5c')],qs[_0xd7d1('0x61')](_0x2c35e9[_0xd7d1('0x49')][_0xd7d1('0x61')]));_0xbdf7c7[_0xd7d1('0x4d')]=_0xbdf7c7[_0xd7d1('0x4d')][_0xd7d1('0x53')]?_0xbdf7c7['attributes']:_0x5321db[_0xd7d1('0x5c')];_0xbdf7c7[_0xd7d1('0xd5')]=qs[_0xd7d1('0xe1')](_0x2c35e9[_0xd7d1('0x49')]['sort']);_0xbdf7c7[_0xd7d1('0x48')]=qs[_0xd7d1('0xd4')](_[_0xd7d1('0xe2')](_0x2c35e9[_0xd7d1('0x49')],_0x5321db['filters']));if(_0x2c35e9[_0xd7d1('0x49')][_0xd7d1('0x39')]){_0xbdf7c7[_0xd7d1('0x48')]=_['merge'](_0xbdf7c7['where'],{'$or':_[_0xd7d1('0x3b')](_0xbdf7c7[_0xd7d1('0x4d')],function(_0xcb7b71){var _0x2ebd40={};_0x2ebd40[_0xcb7b71]={'$like':'%'+_0x2c35e9[_0xd7d1('0x49')]['filter']+'%'};return _0x2ebd40;})});}_0xbdf7c7=_[_0xd7d1('0x63')]({},_0xbdf7c7,_0x2c35e9['options']);return _0x336eac[_0xd7d1('0xe4')](_0xbdf7c7);}})[_0xd7d1('0x18')](function(_0x39e826){if(_0x39e826){_0x446e60=_0x39e826['length'];if(!_0x2c35e9[_0xd7d1('0x49')][_0xd7d1('0xde')](_0xd7d1('0xdf'))){_0xbdf7c7[_0xd7d1('0x28')]=qs['limit'](_0x2c35e9[_0xd7d1('0x49')]['limit']);_0xbdf7c7[_0xd7d1('0x27')]=qs[_0xd7d1('0x27')](_0x2c35e9['query']['offset']);}return _0x336eac['getVoiceQueuesRt'](_0xbdf7c7);}})[_0xd7d1('0x18')](function(_0x216c15){if(_0x216c15){return _0x216c15?{'count':_0x446e60,'rows':_0x216c15}:null;}})[_0xd7d1('0x18')](respondWithResult(_0x36f9e1,null))['catch'](handleError(_0x36f9e1,null));};exports[_0xd7d1('0xe5')]=function(_0x2fbb2d,_0x1487aa){var _0x4c471d={};var _0x12e386={};var _0x2531dc;var _0x31ba9b;return db[_0xd7d1('0x44')][_0xd7d1('0xd2')]({'where':{'id':_0x2fbb2d['params']['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x1487aa,null))[_0xd7d1('0x18')](function(_0x72e0fe){if(_0x72e0fe){_0x2531dc=_0x72e0fe;_0x12e386[_0xd7d1('0x5c')]=_[_0xd7d1('0x5e')](db[_0xd7d1('0xe6')][_0xd7d1('0x45')]);_0x12e386[_0xd7d1('0x49')]=_['keys'](_0x2fbb2d[_0xd7d1('0x49')]);_0x12e386[_0xd7d1('0xd4')]=_[_0xd7d1('0x60')](_0x12e386[_0xd7d1('0x5c')],_0x12e386['query']);_0x4c471d[_0xd7d1('0x4d')]=_['intersection'](_0x12e386[_0xd7d1('0x5c')],qs['fields'](_0x2fbb2d[_0xd7d1('0x49')]['fields']));_0x4c471d[_0xd7d1('0x4d')]=_0x4c471d[_0xd7d1('0x4d')][_0xd7d1('0x53')]?_0x4c471d[_0xd7d1('0x4d')]:_0x12e386['model'];_0x4c471d[_0xd7d1('0xd5')]=qs[_0xd7d1('0xe1')](_0x2fbb2d[_0xd7d1('0x49')][_0xd7d1('0xe1')]);_0x4c471d[_0xd7d1('0x48')]=qs[_0xd7d1('0xd4')](_['pick'](_0x2fbb2d['query'],_0x12e386[_0xd7d1('0xd4')]));if(_0x2fbb2d['query'][_0xd7d1('0x39')]){_0x4c471d[_0xd7d1('0x48')]=_[_0xd7d1('0x63')](_0x4c471d[_0xd7d1('0x48')],{'$or':_[_0xd7d1('0x3b')](_0x4c471d[_0xd7d1('0x4d')],function(_0x42a896){var _0x892154={};_0x892154[_0x42a896]={'$like':'%'+_0x2fbb2d[_0xd7d1('0x49')]['filter']+'%'};return _0x892154;})});}_0x4c471d=_['merge']({},_0x4c471d,_0x2fbb2d['options']);return _0x2531dc[_0xd7d1('0xe5')](_0x4c471d);}})[_0xd7d1('0x18')](function(_0x2f5de8){if(_0x2f5de8){_0x31ba9b=_0x2f5de8[_0xd7d1('0x53')];if(!_0x2fbb2d[_0xd7d1('0x49')][_0xd7d1('0xde')](_0xd7d1('0xdf'))){_0x4c471d['limit']=qs['limit'](_0x2fbb2d[_0xd7d1('0x49')][_0xd7d1('0x28')]);_0x4c471d[_0xd7d1('0x27')]=qs[_0xd7d1('0x27')](_0x2fbb2d[_0xd7d1('0x49')]['offset']);}return _0x2531dc[_0xd7d1('0xe5')](_0x4c471d);}})[_0xd7d1('0x18')](function(_0x25da8d){if(_0x25da8d){return _0x25da8d?{'count':_0x31ba9b,'rows':_0x25da8d}:null;}})[_0xd7d1('0x18')](respondWithResult(_0x1487aa,null))['catch'](handleError(_0x1487aa,null));};exports[_0xd7d1('0xe7')]=function(_0x279f61,_0x1c9400){var _0x3f7626={'raw':!![],'where':{}};var _0x5a8677={};var _0x5e06fa={'count':0x0,'rows':[]};return db[_0xd7d1('0x44')][_0xd7d1('0xd2')]({'where':{'id':_0x279f61[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x1c9400,null))['then'](function(_0xe8d681){if(_0xe8d681){_0x5a8677['model']=_[_0xd7d1('0x5e')](db['VoiceRecording'][_0xd7d1('0x45')]);_0x5a8677[_0xd7d1('0x49')]=_[_0xd7d1('0x5e')](_0x279f61[_0xd7d1('0x49')]);_0x5a8677[_0xd7d1('0xd4')]=_[_0xd7d1('0x60')](_0x5a8677[_0xd7d1('0x5c')],_0x5a8677[_0xd7d1('0x49')]);_0x3f7626[_0xd7d1('0x4d')]=_[_0xd7d1('0x60')](_0x5a8677[_0xd7d1('0x5c')],qs['fields'](_0x279f61[_0xd7d1('0x49')][_0xd7d1('0x61')]));_0x3f7626[_0xd7d1('0x4d')]=_0x3f7626[_0xd7d1('0x4d')][_0xd7d1('0x53')]?_0x3f7626[_0xd7d1('0x4d')]:_0x5a8677['model'];if(!_0x279f61['query']['hasOwnProperty']('nolimit')){_0x3f7626[_0xd7d1('0x28')]=qs[_0xd7d1('0x28')](_0x279f61['query'][_0xd7d1('0x28')]);_0x3f7626[_0xd7d1('0x27')]=qs[_0xd7d1('0x27')](_0x279f61[_0xd7d1('0x49')]['offset']);}_0x3f7626[_0xd7d1('0xd5')]=qs[_0xd7d1('0xe1')](_0x279f61['query'][_0xd7d1('0xe1')]);_0x3f7626[_0xd7d1('0x48')]=qs[_0xd7d1('0xd4')](_[_0xd7d1('0xe2')](_0x279f61[_0xd7d1('0x49')],_0x5a8677[_0xd7d1('0xd4')]));_0x3f7626[_0xd7d1('0x48')]['UserId']=_0xe8d681['id'];if(_0x279f61['query'][_0xd7d1('0x39')]){_0x3f7626[_0xd7d1('0x48')]=_['merge'](_0x3f7626[_0xd7d1('0x48')],{'$or':_[_0xd7d1('0x3b')](_0x3f7626[_0xd7d1('0x4d')],function(_0x2dc622){var _0x148386={};_0x148386[_0x2dc622]={'$like':'%'+_0x279f61['query'][_0xd7d1('0x39')]+'%'};return _0x148386;})});}_0x3f7626=_['merge']({},_0x3f7626,_0x279f61['options']);return db[_0xd7d1('0xe8')]['count']({'where':_0x3f7626[_0xd7d1('0x48')]})[_0xd7d1('0x18')](function(_0x283a1e){_0x5e06fa[_0xd7d1('0x2a')]=_0x283a1e;if(_0x279f61[_0xd7d1('0x49')][_0xd7d1('0x4a')]){_0x3f7626['include']=[{'all':!![]}];}return db['VoiceRecording']['findAll'](_0x3f7626);})[_0xd7d1('0x18')](function(_0x2e5752){_0x5e06fa[_0xd7d1('0x50')]=_0x2e5752;return _0x5e06fa;});}})['then'](respondWithFilteredResult(_0x1c9400,_0x3f7626))['catch'](handleError(_0x1c9400,null));};exports['getScreenRecordings']=function(_0x4bc072,_0x311fb8){var _0x387d65={'raw':!![],'where':{}};var _0x41c806={};var _0x33182d={'count':0x0,'rows':[]};return db[_0xd7d1('0x44')][_0xd7d1('0xd2')]({'where':{'id':_0x4bc072[_0xd7d1('0x5b')]['id']}})['then'](handleEntityNotFound(_0x311fb8,null))[_0xd7d1('0x18')](function(_0x2cc026){if(_0x2cc026){_0x41c806[_0xd7d1('0x5c')]=_[_0xd7d1('0x5e')](db[_0xd7d1('0xe9')]['rawAttributes']);_0x41c806['query']=_[_0xd7d1('0x5e')](_0x4bc072[_0xd7d1('0x49')]);_0x41c806[_0xd7d1('0xd4')]=_[_0xd7d1('0x60')](_0x41c806[_0xd7d1('0x5c')],_0x41c806[_0xd7d1('0x49')]);_0x387d65[_0xd7d1('0x4d')]=_[_0xd7d1('0x60')](_0x41c806[_0xd7d1('0x5c')],qs['fields'](_0x4bc072[_0xd7d1('0x49')][_0xd7d1('0x61')]));_0x387d65[_0xd7d1('0x4d')]=_0x387d65['attributes'][_0xd7d1('0x53')]?_0x387d65['attributes']:_0x41c806[_0xd7d1('0x5c')];if(!_0x4bc072[_0xd7d1('0x49')][_0xd7d1('0xde')](_0xd7d1('0xdf'))){_0x387d65['limit']=qs[_0xd7d1('0x28')](_0x4bc072[_0xd7d1('0x49')][_0xd7d1('0x28')]);_0x387d65['offset']=qs[_0xd7d1('0x27')](_0x4bc072[_0xd7d1('0x49')]['offset']);}_0x387d65[_0xd7d1('0xd5')]=qs[_0xd7d1('0xe1')](_0x4bc072[_0xd7d1('0x49')][_0xd7d1('0xe1')]);_0x387d65[_0xd7d1('0x48')]=qs[_0xd7d1('0xd4')](_[_0xd7d1('0xe2')](_0x4bc072[_0xd7d1('0x49')],_0x41c806['filters']));_0x387d65[_0xd7d1('0x48')][_0xd7d1('0xea')]=_0x2cc026['id'];if(_0x4bc072['query']['filter']){_0x387d65[_0xd7d1('0x48')]=_[_0xd7d1('0x63')](_0x387d65[_0xd7d1('0x48')],{'$or':_['map'](_0x387d65['attributes'],function(_0xc61b5a){var _0x24964a={};_0x24964a[_0xc61b5a]={'$like':'%'+_0x4bc072['query'][_0xd7d1('0x39')]+'%'};return _0x24964a;})});}_0x387d65=_[_0xd7d1('0x63')]({},_0x387d65,_0x4bc072[_0xd7d1('0xd6')]);return db[_0xd7d1('0xe9')][_0xd7d1('0x2a')]({'where':_0x387d65['where']})['then'](function(_0x2d7f9a){_0x33182d[_0xd7d1('0x2a')]=_0x2d7f9a;if(_0x4bc072[_0xd7d1('0x49')][_0xd7d1('0x4a')]){_0x387d65[_0xd7d1('0x4b')]=[{'all':!![]}];}return db['ScreenRecording'][_0xd7d1('0x4f')](_0x387d65);})['then'](function(_0x320876){_0x33182d['rows']=_0x320876;return _0x33182d;});}})[_0xd7d1('0x18')](respondWithFilteredResult(_0x311fb8,_0x387d65))[_0xd7d1('0x23')](handleError(_0x311fb8,null));};exports[_0xd7d1('0xeb')]=function(_0x218562,_0x4d2af9){var _0x1663bb={};var _0x410053={};var _0x4b16a3;var _0x29638c;return db[_0xd7d1('0x44')]['findOne']({'where':{'id':_0x218562[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x4d2af9,null))[_0xd7d1('0x18')](function(_0x12db34){if(_0x12db34){_0x4b16a3=_0x12db34;_0x410053[_0xd7d1('0x5c')]=_[_0xd7d1('0x5e')](db[_0xd7d1('0xec')][_0xd7d1('0x45')]);_0x410053[_0xd7d1('0x49')]=_[_0xd7d1('0x5e')](_0x218562['query']);_0x410053[_0xd7d1('0xd4')]=_[_0xd7d1('0x60')](_0x410053[_0xd7d1('0x5c')],_0x410053['query']);_0x1663bb['attributes']=_[_0xd7d1('0x60')](_0x410053[_0xd7d1('0x5c')],qs['fields'](_0x218562[_0xd7d1('0x49')][_0xd7d1('0x61')]));_0x1663bb[_0xd7d1('0x4d')]=_0x1663bb['attributes'][_0xd7d1('0x53')]?_0x1663bb[_0xd7d1('0x4d')]:_0x410053[_0xd7d1('0x5c')];_0x1663bb[_0xd7d1('0xd5')]=qs[_0xd7d1('0xe1')](_0x218562[_0xd7d1('0x49')][_0xd7d1('0xe1')]);_0x1663bb[_0xd7d1('0x48')]=qs['filters'](_['pick'](_0x218562[_0xd7d1('0x49')],_0x410053[_0xd7d1('0xd4')]));if(_0x218562[_0xd7d1('0x49')][_0xd7d1('0x39')]){_0x1663bb[_0xd7d1('0x48')]=_[_0xd7d1('0x63')](_0x1663bb[_0xd7d1('0x48')],{'$or':_[_0xd7d1('0x3b')](_0x1663bb['attributes'],function(_0x4c6e9a){var _0x174e3a={};_0x174e3a[_0x4c6e9a]={'$like':'%'+_0x218562[_0xd7d1('0x49')]['filter']+'%'};return _0x174e3a;})});}_0x1663bb=_[_0xd7d1('0x63')]({},_0x1663bb,_0x218562[_0xd7d1('0xd6')]);return _0x4b16a3[_0xd7d1('0xeb')](_0x1663bb);}})['then'](function(_0x42d2dc){if(_0x42d2dc){_0x29638c=_0x42d2dc[_0xd7d1('0x53')];if(!_0x218562[_0xd7d1('0x49')][_0xd7d1('0xde')]('nolimit')){_0x1663bb[_0xd7d1('0x28')]=qs[_0xd7d1('0x28')](_0x218562['query']['limit']);_0x1663bb[_0xd7d1('0x27')]=qs['offset'](_0x218562['query']['offset']);}return _0x4b16a3['getChatInteractions'](_0x1663bb);}})[_0xd7d1('0x18')](function(_0x486328){if(_0x486328){return _0x486328?{'count':_0x29638c,'rows':_0x486328}:null;}})[_0xd7d1('0x18')](respondWithResult(_0x4d2af9,null))[_0xd7d1('0x23')](handleError(_0x4d2af9,null));};exports[_0xd7d1('0xed')]=function(_0x5e0fdd,_0x209acb){var _0x20e298={};var _0x3fa763={};var _0x47e2a8;var _0x59d49d;return db[_0xd7d1('0x44')]['findOne']({'where':{'id':_0x5e0fdd[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x209acb,null))[_0xd7d1('0x18')](function(_0x513c69){if(_0x513c69){_0x47e2a8=_0x513c69;_0x3fa763['model']=_[_0xd7d1('0x5e')](db[_0xd7d1('0xee')][_0xd7d1('0x45')]);_0x3fa763[_0xd7d1('0x49')]=_[_0xd7d1('0x5e')](_0x5e0fdd[_0xd7d1('0x49')]);_0x3fa763['filters']=_[_0xd7d1('0x60')](_0x3fa763[_0xd7d1('0x5c')],_0x3fa763['query']);_0x20e298[_0xd7d1('0x4d')]=_[_0xd7d1('0x60')](_0x3fa763[_0xd7d1('0x5c')],qs[_0xd7d1('0x61')](_0x5e0fdd[_0xd7d1('0x49')][_0xd7d1('0x61')]));_0x20e298[_0xd7d1('0x4d')]=_0x20e298['attributes']['length']?_0x20e298['attributes']:_0x3fa763[_0xd7d1('0x5c')];_0x20e298['order']=qs['sort'](_0x5e0fdd[_0xd7d1('0x49')][_0xd7d1('0xe1')]);_0x20e298[_0xd7d1('0x48')]=qs[_0xd7d1('0xd4')](_[_0xd7d1('0xe2')](_0x5e0fdd[_0xd7d1('0x49')],_0x3fa763[_0xd7d1('0xd4')]));if(_0x5e0fdd[_0xd7d1('0x49')][_0xd7d1('0x39')]){_0x20e298[_0xd7d1('0x48')]=_[_0xd7d1('0x63')](_0x20e298['where'],{'$or':_['map'](_0x20e298['attributes'],function(_0x9e69ac){var _0x2df98f={};_0x2df98f[_0x9e69ac]={'$like':'%'+_0x5e0fdd[_0xd7d1('0x49')][_0xd7d1('0x39')]+'%'};return _0x2df98f;})});}_0x20e298=_[_0xd7d1('0x63')]({},_0x20e298,_0x5e0fdd['options']);return _0x47e2a8[_0xd7d1('0xed')](_0x20e298);}})[_0xd7d1('0x18')](function(_0x3a3df0){if(_0x3a3df0){_0x59d49d=_0x3a3df0['length'];if(!_0x5e0fdd['query']['hasOwnProperty'](_0xd7d1('0xdf'))){_0x20e298['limit']=qs[_0xd7d1('0x28')](_0x5e0fdd[_0xd7d1('0x49')][_0xd7d1('0x28')]);_0x20e298[_0xd7d1('0x27')]=qs[_0xd7d1('0x27')](_0x5e0fdd[_0xd7d1('0x49')]['offset']);}return _0x47e2a8[_0xd7d1('0xed')](_0x20e298);}})[_0xd7d1('0x18')](function(_0x4cd138){if(_0x4cd138){return _0x4cd138?{'count':_0x59d49d,'rows':_0x4cd138}:null;}})[_0xd7d1('0x18')](respondWithResult(_0x209acb,null))[_0xd7d1('0x23')](handleError(_0x209acb,null));};exports[_0xd7d1('0xef')]=function(_0x6d3ad7,_0x3533a7){var _0x426b26={'raw':!![],'where':{}};var _0x3b72c6={};var _0x59ad1a={'count':0x0,'rows':[]};return db[_0xd7d1('0x44')][_0xd7d1('0xd2')]({'where':{'id':_0x6d3ad7[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x3533a7,null))['then'](function(_0x52e7e9){if(_0x52e7e9){_0x3b72c6['model']=_['keys'](db['MailInteraction'][_0xd7d1('0x45')]);_0x3b72c6[_0xd7d1('0x49')]=_[_0xd7d1('0x5e')](_0x6d3ad7[_0xd7d1('0x49')]);_0x3b72c6['filters']=_['intersection'](_0x3b72c6[_0xd7d1('0x5c')],_0x3b72c6[_0xd7d1('0x49')]);_0x426b26[_0xd7d1('0x4d')]=_[_0xd7d1('0x60')](_0x3b72c6['model'],qs[_0xd7d1('0x61')](_0x6d3ad7[_0xd7d1('0x49')]['fields']));_0x426b26[_0xd7d1('0x4d')]=_0x426b26[_0xd7d1('0x4d')]['length']?_0x426b26[_0xd7d1('0x4d')]:_0x3b72c6[_0xd7d1('0x5c')];if(!_0x6d3ad7[_0xd7d1('0x49')][_0xd7d1('0xde')](_0xd7d1('0xdf'))){_0x426b26[_0xd7d1('0x28')]=qs[_0xd7d1('0x28')](_0x6d3ad7[_0xd7d1('0x49')]['limit']);_0x426b26[_0xd7d1('0x27')]=qs[_0xd7d1('0x27')](_0x6d3ad7['query'][_0xd7d1('0x27')]);}_0x426b26[_0xd7d1('0xd5')]=qs['sort'](_0x6d3ad7[_0xd7d1('0x49')][_0xd7d1('0xe1')]);_0x426b26['where']=qs[_0xd7d1('0xd4')](_[_0xd7d1('0xe2')](_0x6d3ad7['query'],_0x3b72c6['filters']));_0x426b26['where'][_0xd7d1('0xea')]=_0x52e7e9['id'];if(_0x6d3ad7[_0xd7d1('0x49')]['filter']){_0x426b26['where']=_[_0xd7d1('0x63')](_0x426b26[_0xd7d1('0x48')],{'$or':_[_0xd7d1('0x3b')](_0x426b26[_0xd7d1('0x4d')],function(_0x3acb82){var _0x2a040b={};_0x2a040b[_0x3acb82]={'$like':'%'+_0x6d3ad7[_0xd7d1('0x49')]['filter']+'%'};return _0x2a040b;})});}_0x426b26=_[_0xd7d1('0x63')]({},_0x426b26,_0x6d3ad7[_0xd7d1('0xd6')]);return db[_0xd7d1('0xf0')][_0xd7d1('0x2a')]({'where':_0x426b26[_0xd7d1('0x48')]})['then'](function(_0x4ecc70){_0x59ad1a[_0xd7d1('0x2a')]=_0x4ecc70;if(_0x6d3ad7[_0xd7d1('0x49')][_0xd7d1('0x4a')]){_0x426b26[_0xd7d1('0x4b')]=[{'all':!![]}];}return db['MailInteraction'][_0xd7d1('0x4f')](_0x426b26);})[_0xd7d1('0x18')](function(_0x6c0ed0){_0x59ad1a[_0xd7d1('0x50')]=_0x6c0ed0;return _0x59ad1a;});}})[_0xd7d1('0x18')](respondWithFilteredResult(_0x3533a7,_0x426b26))[_0xd7d1('0x23')](handleError(_0x3533a7,null));};exports[_0xd7d1('0xf1')]=function(_0x554832,_0x5244ae){var _0x5429da={};var _0x7c054b={};var _0x58729c;var _0x3a41c3;return db[_0xd7d1('0x44')][_0xd7d1('0xd2')]({'where':{'id':_0x554832[_0xd7d1('0x5b')]['id']}})['then'](handleEntityNotFound(_0x5244ae,null))[_0xd7d1('0x18')](function(_0x3099cc){if(_0x3099cc){_0x58729c=_0x3099cc;_0x7c054b[_0xd7d1('0x5c')]=_[_0xd7d1('0x5e')](db['SmsInteraction'][_0xd7d1('0x45')]);_0x7c054b[_0xd7d1('0x49')]=_[_0xd7d1('0x5e')](_0x554832['query']);_0x7c054b[_0xd7d1('0xd4')]=_[_0xd7d1('0x60')](_0x7c054b[_0xd7d1('0x5c')],_0x7c054b[_0xd7d1('0x49')]);_0x5429da[_0xd7d1('0x4d')]=_[_0xd7d1('0x60')](_0x7c054b[_0xd7d1('0x5c')],qs[_0xd7d1('0x61')](_0x554832[_0xd7d1('0x49')][_0xd7d1('0x61')]));_0x5429da[_0xd7d1('0x4d')]=_0x5429da['attributes'][_0xd7d1('0x53')]?_0x5429da[_0xd7d1('0x4d')]:_0x7c054b['model'];_0x5429da[_0xd7d1('0xd5')]=qs[_0xd7d1('0xe1')](_0x554832[_0xd7d1('0x49')][_0xd7d1('0xe1')]);_0x5429da[_0xd7d1('0x48')]=qs[_0xd7d1('0xd4')](_[_0xd7d1('0xe2')](_0x554832[_0xd7d1('0x49')],_0x7c054b[_0xd7d1('0xd4')]));if(_0x554832[_0xd7d1('0x49')][_0xd7d1('0x39')]){_0x5429da[_0xd7d1('0x48')]=_['merge'](_0x5429da[_0xd7d1('0x48')],{'$or':_[_0xd7d1('0x3b')](_0x5429da['attributes'],function(_0x5ca68b){var _0x33a9cd={};_0x33a9cd[_0x5ca68b]={'$like':'%'+_0x554832[_0xd7d1('0x49')][_0xd7d1('0x39')]+'%'};return _0x33a9cd;})});}_0x5429da=_['merge']({},_0x5429da,_0x554832[_0xd7d1('0xd6')]);return _0x58729c[_0xd7d1('0xf1')](_0x5429da);}})[_0xd7d1('0x18')](function(_0x46a796){if(_0x46a796){_0x3a41c3=_0x46a796[_0xd7d1('0x53')];if(!_0x554832[_0xd7d1('0x49')]['hasOwnProperty'](_0xd7d1('0xdf'))){_0x5429da['limit']=qs[_0xd7d1('0x28')](_0x554832[_0xd7d1('0x49')][_0xd7d1('0x28')]);_0x5429da[_0xd7d1('0x27')]=qs[_0xd7d1('0x27')](_0x554832[_0xd7d1('0x49')][_0xd7d1('0x27')]);}return _0x58729c['getSmsInteractions'](_0x5429da);}})[_0xd7d1('0x18')](function(_0x3784bf){if(_0x3784bf){return _0x3784bf?{'count':_0x3a41c3,'rows':_0x3784bf}:null;}})[_0xd7d1('0x18')](respondWithResult(_0x5244ae,null))[_0xd7d1('0x23')](handleError(_0x5244ae,null));};exports[_0xd7d1('0xf2')]=function(_0x5dc786,_0x212e09){var _0x202397={};var _0x23a13c={};var _0x74592c;var _0x131dba;return db[_0xd7d1('0x44')][_0xd7d1('0xd2')]({'where':{'id':_0x5dc786[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x212e09,null))[_0xd7d1('0x18')](function(_0x448b0d){if(_0x448b0d){_0x74592c=_0x448b0d;_0x23a13c[_0xd7d1('0x5c')]=_['keys'](db[_0xd7d1('0xf3')][_0xd7d1('0x45')]);_0x23a13c[_0xd7d1('0x49')]=_[_0xd7d1('0x5e')](_0x5dc786['query']);_0x23a13c[_0xd7d1('0xd4')]=_[_0xd7d1('0x60')](_0x23a13c[_0xd7d1('0x5c')],_0x23a13c[_0xd7d1('0x49')]);_0x202397[_0xd7d1('0x4d')]=_[_0xd7d1('0x60')](_0x23a13c[_0xd7d1('0x5c')],qs[_0xd7d1('0x61')](_0x5dc786[_0xd7d1('0x49')][_0xd7d1('0x61')]));_0x202397[_0xd7d1('0x4d')]=_0x202397[_0xd7d1('0x4d')][_0xd7d1('0x53')]?_0x202397[_0xd7d1('0x4d')]:_0x23a13c[_0xd7d1('0x5c')];_0x202397[_0xd7d1('0xd5')]=qs[_0xd7d1('0xe1')](_0x5dc786[_0xd7d1('0x49')]['sort']);_0x202397[_0xd7d1('0x48')]=qs['filters'](_[_0xd7d1('0xe2')](_0x5dc786[_0xd7d1('0x49')],_0x23a13c['filters']));if(_0x5dc786['query'][_0xd7d1('0x39')]){_0x202397[_0xd7d1('0x48')]=_['merge'](_0x202397[_0xd7d1('0x48')],{'$or':_[_0xd7d1('0x3b')](_0x202397[_0xd7d1('0x4d')],function(_0x1f53d5){var _0x5161fb={};_0x5161fb[_0x1f53d5]={'$like':'%'+_0x5dc786[_0xd7d1('0x49')][_0xd7d1('0x39')]+'%'};return _0x5161fb;})});}_0x202397=_[_0xd7d1('0x63')]({},_0x202397,_0x5dc786[_0xd7d1('0xd6')]);return _0x74592c[_0xd7d1('0xf2')](_0x202397);}})[_0xd7d1('0x18')](function(_0x3a1b22){if(_0x3a1b22){_0x131dba=_0x3a1b22['length'];if(!_0x5dc786[_0xd7d1('0x49')][_0xd7d1('0xde')](_0xd7d1('0xdf'))){_0x202397[_0xd7d1('0x28')]=qs[_0xd7d1('0x28')](_0x5dc786[_0xd7d1('0x49')][_0xd7d1('0x28')]);_0x202397['offset']=qs['offset'](_0x5dc786[_0xd7d1('0x49')][_0xd7d1('0x27')]);}return _0x74592c['getFaxInteractions'](_0x202397);}})[_0xd7d1('0x18')](function(_0x4e8e0e){if(_0x4e8e0e){return _0x4e8e0e?{'count':_0x131dba,'rows':_0x4e8e0e}:null;}})[_0xd7d1('0x18')](respondWithResult(_0x212e09,null))[_0xd7d1('0x23')](handleError(_0x212e09,null));};exports[_0xd7d1('0xf4')]=function(_0x372b7a,_0x22271c){var _0x4fe8bb={};var _0x323f86={};var _0x4b907c;var _0x268aa9;return db[_0xd7d1('0x44')][_0xd7d1('0xd2')]({'where':{'id':_0x372b7a[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x22271c,null))[_0xd7d1('0x18')](function(_0x88da09){if(_0x88da09){_0x4b907c=_0x88da09;_0x323f86['model']=_[_0xd7d1('0x5e')](db[_0xd7d1('0xf5')][_0xd7d1('0x45')]);_0x323f86[_0xd7d1('0x49')]=_['keys'](_0x372b7a[_0xd7d1('0x49')]);_0x323f86[_0xd7d1('0xd4')]=_['intersection'](_0x323f86[_0xd7d1('0x5c')],_0x323f86[_0xd7d1('0x49')]);_0x4fe8bb[_0xd7d1('0x4d')]=_[_0xd7d1('0x60')](_0x323f86[_0xd7d1('0x5c')],qs[_0xd7d1('0x61')](_0x372b7a[_0xd7d1('0x49')][_0xd7d1('0x61')]));_0x4fe8bb[_0xd7d1('0x4d')]=_0x4fe8bb[_0xd7d1('0x4d')][_0xd7d1('0x53')]?_0x4fe8bb[_0xd7d1('0x4d')]:_0x323f86[_0xd7d1('0x5c')];_0x4fe8bb['order']=qs[_0xd7d1('0xe1')](_0x372b7a['query'][_0xd7d1('0xe1')]);_0x4fe8bb['where']=qs[_0xd7d1('0xd4')](_[_0xd7d1('0xe2')](_0x372b7a[_0xd7d1('0x49')],_0x323f86['filters']));if(_0x372b7a['query'][_0xd7d1('0x39')]){_0x4fe8bb[_0xd7d1('0x48')]=_[_0xd7d1('0x63')](_0x4fe8bb[_0xd7d1('0x48')],{'$or':_['map'](_0x4fe8bb[_0xd7d1('0x4d')],function(_0x4f434b){var _0x5cac4a={};_0x5cac4a[_0x4f434b]={'$like':'%'+_0x372b7a[_0xd7d1('0x49')][_0xd7d1('0x39')]+'%'};return _0x5cac4a;})});}_0x4fe8bb=_[_0xd7d1('0x63')]({},_0x4fe8bb,_0x372b7a[_0xd7d1('0xd6')]);return _0x4b907c['getWhatsappInteractions'](_0x4fe8bb);}})[_0xd7d1('0x18')](function(_0x2c25fa){if(_0x2c25fa){_0x268aa9=_0x2c25fa[_0xd7d1('0x53')];if(!_0x372b7a[_0xd7d1('0x49')][_0xd7d1('0xde')](_0xd7d1('0xdf'))){_0x4fe8bb['limit']=qs[_0xd7d1('0x28')](_0x372b7a[_0xd7d1('0x49')][_0xd7d1('0x28')]);_0x4fe8bb['offset']=qs[_0xd7d1('0x27')](_0x372b7a[_0xd7d1('0x49')][_0xd7d1('0x27')]);}return _0x4b907c[_0xd7d1('0xf4')](_0x4fe8bb);}})['then'](function(_0x404bc0){if(_0x404bc0){return _0x404bc0?{'count':_0x268aa9,'rows':_0x404bc0}:null;}})['then'](respondWithResult(_0x22271c,null))['catch'](handleError(_0x22271c,null));};exports['login']=function(_0x2001b7,_0x5ed7e4,_0x402f96){var _0x17383d;var _0x1491a3;var _0x8c8036;var _0x33c8d5=!_['isNil'](_0x2001b7[_0xd7d1('0x5b')]['id'])?_0x2001b7[_0xd7d1('0x5b')]['id']:!_[_0xd7d1('0x70')](_0x2001b7[_0xd7d1('0x35')]['id'])?_0x2001b7[_0xd7d1('0x35')]['id']:null;return db[_0xd7d1('0x44')][_0xd7d1('0x64')]({'where':{'id':_0x33c8d5,'role':{'$or':[_0xd7d1('0x33'),_0xd7d1('0x35'),_0xd7d1('0x30')]}},'attributes':['id',_0xd7d1('0x3e'),_0xd7d1('0xf6'),_0xd7d1('0xf7'),'role',_0xd7d1('0x6c'),_0xd7d1('0xf8')]})[_0xd7d1('0x18')](function(_0xc9c987){if(_0xc9c987){if(_0xc9c987[_0xd7d1('0x2f')]===_0xd7d1('0x30')){_0x17383d=_0xc9c987;if(_0x2001b7[_0xd7d1('0x67')][_0xd7d1('0xa6')]){_0x8c8036=util[_0xd7d1('0xb3')]('LOCAL/%s@from-sip/n',_0x17383d[_0x2001b7['body']['interface']]);}else if(_0x2001b7[_0xd7d1('0x67')][_0xd7d1('0xf9')]){_0x8c8036=util[_0xd7d1('0xb3')](_0xd7d1('0xb4'),_0x2001b7[_0xd7d1('0x67')][_0xd7d1('0xf9')]);}else{_0x8c8036=util[_0xd7d1('0xb3')](_0xd7d1('0xb4'),_0x17383d[_0xd7d1('0x3e')]);}socket['to'](util[_0xd7d1('0xb3')]('user:%s',_0x17383d[_0xd7d1('0x3e')]))[_0xd7d1('0x31')](_0xd7d1('0xfa'),{'user':{'id':_0x17383d['id'],'name':_0x17383d[_0xd7d1('0x3e')]},'ip':_0x2001b7['headers']['x-forwarded-for']||_0x2001b7['connection']['remoteAddress']||_0x2001b7[_0xd7d1('0xfb')][_0xd7d1('0xfc')]||_0x2001b7[_0xd7d1('0xfd')][_0xd7d1('0xfb')]['remoteAddress']});return db[_0xd7d1('0xb6')][_0xd7d1('0x40')]({'where':{'membername':_0x17383d[_0xd7d1('0x3e')]},'individualHooks':!![]});}}else{throw new db[(_0xd7d1('0x97'))]['ValidationError'](_0xd7d1('0xfe'));}})[_0xd7d1('0x18')](function(){if(_0x17383d){return _0x17383d[_0xd7d1('0xff')]({'raw':!![]});}})[_0xd7d1('0x18')](function(_0x2f3d7){if(_0x17383d){if(_0x2f3d7){_0x1491a3=_0x2f3d7;if(_0x1491a3[_0xd7d1('0x53')]){var _0x4a4502=_0x1491a3[_0xd7d1('0x3b')](function(_0x4b23eb){var _0x535ae8={'membername':_0x17383d[_0xd7d1('0x3e')],'UserId':_0x17383d['id'],'queue_name':_0x4b23eb[_0xd7d1('0x3e')],'VoiceQueueId':_0x4b23eb['id'],'interface':_0x8c8036,'paused':_0x17383d[_0xd7d1('0xf8')]||![],'penalty':_0x4b23eb[_0xd7d1('0x100')]||0x0};return db[_0xd7d1('0xb6')][_0xd7d1('0xb7')](_0x535ae8);});return Promise[_0xd7d1('0x59')](_0x4a4502);}}}})[_0xd7d1('0x18')](function(){if(_0x17383d){return db[_0xd7d1('0x101')][_0xd7d1('0x4f')]({'where':{'membername':_0x17383d[_0xd7d1('0x3e')],'exitAt':null}});}})['then'](function(_0x200006){if(_0x17383d){var _0x493d0d=[];_0x200006[_0xd7d1('0x102')](function(_0x110b8a){_0x493d0d[_0xd7d1('0x4e')](_0x110b8a[_0xd7d1('0x2e')]({'exitAt':moment()[_0xd7d1('0xb3')]('YYYY-MM-DD\x20HH:mm:ss')}));});return Promise[_0xd7d1('0x59')](_0x493d0d);}})[_0xd7d1('0x18')](function(){if(_0x17383d){var _0x10f691=[];var _0x160541=[];var _0x3a0cc9=utils[_0xd7d1('0x103')]();var _0x17c431={'membername':_0x17383d['name'],'interface':_0x8c8036,'enterAt':moment()[_0xd7d1('0xb3')](_0xd7d1('0x104')),'role':_0x17383d[_0xd7d1('0x2f')],'internal':_0x17383d[_0xd7d1('0x6c')]};_0x3a0cc9[_0xd7d1('0x102')](function(_0x56d41c){_0x10f691['push'](_[_0xd7d1('0x63')]({'channel':_0x56d41c,'type':'LOGIN','data1':_0x2001b7['body'][_0xd7d1('0x105')],'data2':_0x8c8036},_0x17c431));if(_0x17383d[_0xd7d1('0xf8')]){_0x160541[_0xd7d1('0x4e')](_['merge']({'channel':_0x56d41c,'type':_0xd7d1('0x106'),'data1':_0xd7d1('0x107')},_0x17c431));}});return db[_0xd7d1('0x101')][_0xd7d1('0x108')](_0x10f691[_0xd7d1('0x109')](_0x160541),{'individualHooks':!![]});}})[_0xd7d1('0x18')](function(){if(_0x17383d){return _0x17383d[_0xd7d1('0x2e')]({'online':!![],'lastLoginAt':moment()[_0xd7d1('0xb3')](_0xd7d1('0x104')),'voicePause':_0x17383d[_0xd7d1('0xf8')]||![],'mailPause':_0x17383d[_0xd7d1('0xf8')]||![],'chatPause':_0x17383d[_0xd7d1('0xf8')]||![],'faxPause':_0x17383d['loginInPause']||![],'smsPause':_0x17383d[_0xd7d1('0xf8')]||![],'openchannelPause':_0x17383d[_0xd7d1('0xf8')]||![],'whatsappPause':_0x17383d[_0xd7d1('0xf8')]||![],'pauseType':_0x17383d[_0xd7d1('0xf8')]?'LOGININPAUSE':null,'interface':_0x8c8036,'lastPauseAt':moment()[_0xd7d1('0xb3')](_0xd7d1('0x104'))});}})[_0xd7d1('0x18')](function(_0x56375b){if(_0x2001b7[_0xd7d1('0x10a')]){return _0x402f96();}else{return Promise['resolve'](_0x56375b)[_0xd7d1('0x18')](respondWithResult(_0x5ed7e4,null));}})[_0xd7d1('0x23')](handleError(_0x5ed7e4,null));};exports['logout']=function(_0xd697fd,_0x59144b){var _0x47ab29;return db['User'][_0xd7d1('0x64')]({'where':{'id':_0xd697fd[_0xd7d1('0x5b')]['id'],'role':_0xd7d1('0x30')},'attributes':['id',_0xd7d1('0x3e'),_0xd7d1('0x2f')]})[_0xd7d1('0x18')](handleEntityNotFound(_0x59144b,null))[_0xd7d1('0x18')](function(_0x57f85b){if(_0x57f85b){_0x47ab29=_0x57f85b;return db['UserVoiceQueueRt'][_0xd7d1('0x40')]({'where':{'membername':_0x47ab29[_0xd7d1('0x3e')]},'individualHooks':!![]});}})['then'](function(){return db['MemberReport'][_0xd7d1('0x4f')]({'where':{'membername':_0x47ab29[_0xd7d1('0x3e')],'exitAt':null}});})[_0xd7d1('0x18')](function(_0xa0755f){var _0x3c2b38=[];_0xa0755f[_0xd7d1('0x102')](function(_0x277179){_0x3c2b38[_0xd7d1('0x4e')](_0x277179[_0xd7d1('0x2e')]({'exitAt':moment()[_0xd7d1('0xb3')](_0xd7d1('0x104'))}));});return Promise['all'](_0x3c2b38);})['then'](function(){return _0x47ab29[_0xd7d1('0x2e')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0xd7d1('0x18')](respondWithResult(_0x59144b,null))['catch'](handleError(_0x59144b,null));};exports[_0xd7d1('0x10b')]=function(_0x30516f,_0x5a9417){var _0x45e487;return db[_0xd7d1('0xb6')][_0xd7d1('0x2e')]({'paused':0x1},{'where':{'UserId':_0x30516f[_0xd7d1('0x5b')]['id']},'individualHooks':!![]})['then'](function(){return db['User']['find']({'where':{'id':_0x30516f[_0xd7d1('0x5b')]['id'],'role':_0xd7d1('0x30')},'attributes':['id',_0xd7d1('0x3e'),'role','internal',_0xd7d1('0xa6'),_0xd7d1('0xa5')]});})['then'](handleEntityNotFound(_0x5a9417,null))[_0xd7d1('0x18')](function(_0x40eaaf){if(_0x40eaaf){_0x45e487=_0x40eaaf;return respondWithRpcPromise(_0xd7d1('0x10c'),_0xd7d1('0x10b'),{'id':_0x45e487['id'],'name':_0x45e487[_0xd7d1('0x3e')],'pause':!![]});}})[_0xd7d1('0x18')](function(){if(_0x45e487){return db[_0xd7d1('0x101')]['findAll']({'where':{'membername':_0x45e487['name'],'type':_0xd7d1('0x106'),'exitAt':null}});}})[_0xd7d1('0x18')](function(_0x52b255){if(_0x52b255[_0xd7d1('0x53')]){var _0x4a41ff=moment()[_0xd7d1('0xb3')](_0xd7d1('0x104'));for(var _0x449dec=0x0,_0x39575d=_0x52b255[_0xd7d1('0x53')];_0x449dec<_0x39575d;_0x449dec++){_0x52b255[_0x449dec]['updateAttributes']({'exitAt':_0x4a41ff});}}})[_0xd7d1('0x18')](function(){var _0x54b3e4=[];var _0x17cee8=utils['getChannels']();_0x17cee8[_0xd7d1('0x102')](function(_0x361f4b){_0x54b3e4['push']({'channel':_0x361f4b,'membername':_0x45e487['name'],'interface':_[_0xd7d1('0x70')](_0x45e487[_0xd7d1('0xa6')])?util[_0xd7d1('0xb3')](_0xd7d1('0xb4'),_0x45e487['name']):_0x45e487[_0xd7d1('0xa6')],'type':_0xd7d1('0x106'),'enterAt':moment()['format'](_0xd7d1('0x104')),'data1':_0x30516f[_0xd7d1('0x67')]['type']||_0xd7d1('0x10d'),'role':_0x45e487['role'],'internal':_0x45e487[_0xd7d1('0x6c')]});});return db[_0xd7d1('0x101')][_0xd7d1('0x108')](_0x54b3e4,{'individualHooks':!![]});})['then'](function(){return _0x45e487[_0xd7d1('0x2e')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x30516f[_0xd7d1('0x67')][_0xd7d1('0x10e')]||'DEFAULT\x20PAUSE','lastPauseAt':moment()['format'](_0xd7d1('0x104'))});})[_0xd7d1('0x18')](respondWithResult(_0x5a9417,null))[_0xd7d1('0x23')](handleError(_0x5a9417,null));};exports['unpause']=function(_0x420d1b,_0x535e92){if(_0x420d1b[_0xd7d1('0x67')][_0xd7d1('0xa4')]&&!utils[_0xd7d1('0xa7')](_0x420d1b[_0xd7d1('0x67')]['channel'])){throw new APIBadRequestError(util[_0xd7d1('0xb3')](_0xd7d1('0x10f'),_0x420d1b[_0xd7d1('0x67')][_0xd7d1('0xa4')]));}return db[_0xd7d1('0x44')][_0xd7d1('0x64')]({'where':{'id':_0x420d1b[_0xd7d1('0x5b')]['id']},'attributes':['id','name',_0xd7d1('0x2f'),_0xd7d1('0x6c'),_0xd7d1('0xa6'),_0xd7d1('0xa5'),_0xd7d1('0xb5'),_0xd7d1('0x110'),'chatPause',_0xd7d1('0x111'),'openchannelPause',_0xd7d1('0x112'),'whatsappPause',_0xd7d1('0x113'),_0xd7d1('0x114')]})[_0xd7d1('0x18')](function(_0x56643c){if(!_0x56643c){throw new APINotFoundError(util[_0xd7d1('0xb3')](_0xd7d1('0x115'),_0x420d1b[_0xd7d1('0x5b')]['id']));}return _0x56643c[_0xd7d1('0x116')](_0x420d1b[_0xd7d1('0x67')]['channel']);})[_0xd7d1('0x18')](respondWithResult(_0x535e92,null))[_0xd7d1('0x23')](APIHandleError(_0x535e92));};exports[_0xd7d1('0x117')]=function(_0x370ad9,_0x4a8980){var _0x335e00={};var _0x5cf67e={};var _0x5206e7;var _0x32d1f5;return db[_0xd7d1('0x44')][_0xd7d1('0xd2')]({'where':{'id':_0x370ad9[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x4a8980,null))[_0xd7d1('0x18')](function(_0x1c8c4e){if(_0x1c8c4e){_0x5206e7=_0x1c8c4e;_0x5cf67e['model']=_[_0xd7d1('0x5e')](db['Team'][_0xd7d1('0x45')]);_0x5cf67e['query']=_[_0xd7d1('0x5e')](_0x370ad9[_0xd7d1('0x49')]);_0x5cf67e[_0xd7d1('0xd4')]=_[_0xd7d1('0x60')](_0x5cf67e[_0xd7d1('0x5c')],_0x5cf67e['query']);_0x335e00[_0xd7d1('0x4d')]=_[_0xd7d1('0x60')](_0x5cf67e[_0xd7d1('0x5c')],qs['fields'](_0x370ad9['query'][_0xd7d1('0x61')]));_0x335e00[_0xd7d1('0x4d')]=_0x335e00[_0xd7d1('0x4d')]['length']?_0x335e00[_0xd7d1('0x4d')]:_0x5cf67e['model'];_0x335e00[_0xd7d1('0xd5')]=qs[_0xd7d1('0xe1')](_0x370ad9['query'][_0xd7d1('0xe1')]);_0x335e00[_0xd7d1('0x48')]=qs[_0xd7d1('0xd4')](_[_0xd7d1('0xe2')](_0x370ad9[_0xd7d1('0x49')],_0x5cf67e[_0xd7d1('0xd4')]));if(_0x370ad9[_0xd7d1('0x49')][_0xd7d1('0x39')]){_0x335e00['where']=_['merge'](_0x335e00[_0xd7d1('0x48')],{'$or':_[_0xd7d1('0x3b')](_0x335e00['attributes'],function(_0x4f48a9){var _0x140f65={};_0x140f65[_0x4f48a9]={'$like':'%'+_0x370ad9['query'][_0xd7d1('0x39')]+'%'};return _0x140f65;})});}_0x335e00=_['merge']({},_0x335e00,_0x370ad9[_0xd7d1('0xd6')]);return _0x5206e7[_0xd7d1('0x117')](_0x335e00);}})['then'](function(_0x5e5185){if(_0x5e5185){_0x32d1f5=_0x5e5185[_0xd7d1('0x53')];if(!_0x370ad9['query'][_0xd7d1('0xde')](_0xd7d1('0xdf'))){_0x335e00[_0xd7d1('0x28')]=qs['limit'](_0x370ad9[_0xd7d1('0x49')]['limit']);_0x335e00[_0xd7d1('0x27')]=qs[_0xd7d1('0x27')](_0x370ad9['query']['offset']);}return _0x5206e7['getTeams'](_0x335e00);}})[_0xd7d1('0x18')](function(_0x4be52f){if(_0x4be52f){return _0x4be52f?{'count':_0x32d1f5,'rows':_0x4be52f}:null;}})[_0xd7d1('0x18')](respondWithResult(_0x4a8980,null))[_0xd7d1('0x23')](handleError(_0x4a8980,null));};exports[_0xd7d1('0x118')]=function(_0x2dca05,_0x47963c){var _0x776553=_0x2dca05[_0xd7d1('0x5b')]['id'];var _0x15a678=_0x2dca05['body']?_0x2dca05[_0xd7d1('0x67')][_0xd7d1('0x6a')]:null;var _0x22d9b4=[];return Promise[_0xd7d1('0x119')]()['then'](function(){if(!_0x15a678)throw new APIBadRequestError(_0xd7d1('0x11a'));})[_0xd7d1('0x18')](function(){return db[_0xd7d1('0x44')][_0xd7d1('0xd2')]({'where':{'id':_0x776553}});})[_0xd7d1('0x18')](function(_0x426cd0){if(!_0x426cd0)throw new APINotFoundError(util[_0xd7d1('0xb3')]('User\x20with\x20id\x20%s\x20not\x20found',_0x2dca05[_0xd7d1('0x5b')]['id']));return db['sequelize'][_0xd7d1('0x11b')](function(_0x53225c){return _0x426cd0[_0xd7d1('0x118')](_0x15a678,{'transaction':_0x53225c})[_0xd7d1('0x18')](function(){return db['Team']['findAll']({'where':{'id':{'$in':_0x15a678}}});})[_0xd7d1('0x18')](function(_0xd3d87a){var _0x12ab11=_[_0xd7d1('0x3b')](_0xd3d87a,function(_0x1290f9){return _0x1290f9[_0xd7d1('0x11c')]();});return Promise[_0xd7d1('0x59')](_0x12ab11);})['then'](function(_0x242c64){_0x22d9b4=_['flattenDeep'](_0x242c64);var _0x4e5951=_[_0xd7d1('0x3b')](_0x22d9b4,function(_0x1716ec){return _0x1716ec[_0xd7d1('0x11d')](_0x426cd0['id'],{'transaction':_0x53225c});});return Promise[_0xd7d1('0x59')](_0x4e5951);})[_0xd7d1('0x18')](function(){if(!_0x426cd0['online'])return;var _0x4cf111=_[_0xd7d1('0x39')](_0x22d9b4,function(_0x44225b){return _0x44225b[_0xd7d1('0x11e')](_0xd7d1('0xa4'))==='Voice';});var _0x171133=_['map'](_0x4cf111,function(_0x4f9a4a){return db[_0xd7d1('0xb6')]['upsert']({'membername':_0x426cd0[_0xd7d1('0x3e')],'UserId':_0x426cd0['id'],'queue_name':_0x4f9a4a[_0xd7d1('0x3e')],'VoiceQueueId':_0x4f9a4a['id'],'interface':_[_0xd7d1('0x70')](_0x426cd0['interface'])?util[_0xd7d1('0xb3')](_0xd7d1('0xb4'),_0x426cd0[_0xd7d1('0x3e')]):_0x426cd0[_0xd7d1('0xa6')],'paused':_0x426cd0[_0xd7d1('0xb5')]||![],'penalty':_0x426cd0['penalty']},{'transaction':_0x53225c});});return Promise[_0xd7d1('0x59')](_0x171133);})[_0xd7d1('0x18')](function(){return db[_0xd7d1('0x11f')][_0xd7d1('0x4f')]({'where':{'teamId':{'$in':_0x15a678}}});})[_0xd7d1('0x18')](function(_0x266220){var _0x597b5b=_[_0xd7d1('0x3b')](_0x266220,function(_0x55d32f){return db['UserVoicePrefix']['create']({'UserId':_0x426cd0['id'],'VoicePrefixId':_0x55d32f[_0xd7d1('0x120')]},{'transaction':_0x53225c});});return Promise[_0xd7d1('0x59')](_0x597b5b);});});})[_0xd7d1('0x18')](function(){for(var _0x55a509=0x0;_0x55a509<_0x22d9b4[_0xd7d1('0x53')];_0x55a509++){var _0xb128b=_0x22d9b4[_0x55a509][_0xd7d1('0x11e')](_0xd7d1('0xa4'));var _0x866053=_0xb128b+_0xd7d1('0xaf');socket[_0xd7d1('0x31')](_0xd7d1('0x35')+_0xb128b+_0xd7d1('0xb0'),{'UserId':_0x776553,['queueField']:_0x22d9b4[_0x55a509]['id']});}})[_0xd7d1('0x18')](respondWithStatusCode(_0x47963c,null))[_0xd7d1('0x23')](APIHandleError(_0x47963c));};exports[_0xd7d1('0x121')]=function(_0x4fbe89,_0x89c391){var _0x51925f=_0x4fbe89['params']['id'];var _0x4af7fe=null;if(_0x4fbe89[_0xd7d1('0x49')][_0xd7d1('0x6a')]){_0x4af7fe=_[_0xd7d1('0xba')](_0x4fbe89[_0xd7d1('0x49')][_0xd7d1('0x6a')])?_0x4fbe89[_0xd7d1('0x49')][_0xd7d1('0x6a')]:[_0x4fbe89[_0xd7d1('0x49')][_0xd7d1('0x6a')]];}var _0x59b099=[];return Promise[_0xd7d1('0x119')]()['then'](function(){if(!_0x4af7fe)throw new APIBadRequestError(_0xd7d1('0x122'));})['then'](function(){return db[_0xd7d1('0x44')][_0xd7d1('0xd2')]({'where':{'id':_0x51925f}});})['then'](function(_0x455a33){if(!_0x455a33)throw new APINotFoundError(util['format'](_0xd7d1('0x115'),_0x4fbe89[_0xd7d1('0x5b')]['id']));return db[_0xd7d1('0x72')][_0xd7d1('0x11b')](function(_0x5cd99c){return _0x455a33[_0xd7d1('0x121')](_0x4af7fe,{'transaction':_0x5cd99c})[_0xd7d1('0x18')](function(){return db[_0xd7d1('0x123')]['findAll']({'where':{'id':{'$in':_0x4af7fe}}});})[_0xd7d1('0x18')](function(_0x207bbf){var _0x49850d=_[_0xd7d1('0x3b')](_0x207bbf,function(_0x4e1168){return _0x4e1168['getAssociatedQueues']();});return Promise[_0xd7d1('0x59')](_0x49850d);})['then'](function(_0x3918ad){_0x59b099=_[_0xd7d1('0x124')](_0x3918ad);var _0x48032e=_[_0xd7d1('0x3b')](_0x59b099,function(_0x34c9f6){return _0x34c9f6[_0xd7d1('0x125')](_0x455a33['id'],{'transaction':_0x5cd99c});});return Promise['all'](_0x48032e);})[_0xd7d1('0x18')](function(){if(!_0x455a33[_0xd7d1('0xa5')])return;var _0xaa952a=_['filter'](_0x59b099,function(_0x3eafdd){return _0x3eafdd[_0xd7d1('0x11e')](_0xd7d1('0xa4'))==='Voice';});var _0x1007b3=_['map'](_0xaa952a,function(_0x4cd442){return db[_0xd7d1('0xb6')][_0xd7d1('0x40')]({'where':{'VoiceQueueId':_0x4cd442['id'],'UserId':_0x455a33['id']},'transaction':_0x5cd99c});});return Promise['all'](_0x1007b3);})[_0xd7d1('0x18')](function(){return db[_0xd7d1('0x11f')][_0xd7d1('0x4f')]({'where':{'teamId':{'$in':_0x4af7fe}}});})[_0xd7d1('0x18')](function(_0x3900f0){var _0x317396=_['map'](_0x3900f0,function(_0x742b37){return db[_0xd7d1('0x126')][_0xd7d1('0x40')]({'where':{'UserId':_0x455a33['id'],'VoicePrefixId':_0x742b37[_0xd7d1('0x120')]}},{'transaction':_0x5cd99c});});return Promise[_0xd7d1('0x59')](_0x317396);});});})[_0xd7d1('0x18')](function(){for(var _0x2ee220=0x0;_0x2ee220<_0x59b099[_0xd7d1('0x53')];_0x2ee220++){var _0x8a52b=_0x59b099[_0x2ee220][_0xd7d1('0x11e')]('channel');var _0xbbecea=_0x8a52b+_0xd7d1('0xaf');socket[_0xd7d1('0x31')]('user'+_0x8a52b+_0xd7d1('0xbb'),{'UserId':_0x51925f,['queueField']:_0x59b099[_0x2ee220]['id']});}})[_0xd7d1('0x18')](respondWithStatusCode(_0x89c391,null))[_0xd7d1('0x23')](APIHandleError(_0x89c391));};exports[_0xd7d1('0x127')]=function(_0x154e0c,_0x301e02){var _0x35a05b={};var _0x4e5ca3={};var _0x4050e0;var _0x87e9ab;return db[_0xd7d1('0x44')][_0xd7d1('0xd2')]({'where':{'id':_0x154e0c[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x301e02,null))[_0xd7d1('0x18')](function(_0x4bfb25){if(_0x4bfb25){_0x4050e0=_0x4bfb25;_0x4e5ca3[_0xd7d1('0x5c')]=_[_0xd7d1('0x5e')](db[_0xd7d1('0xd8')][_0xd7d1('0x45')]);_0x4e5ca3[_0xd7d1('0x49')]=_[_0xd7d1('0x5e')](_0x154e0c[_0xd7d1('0x49')]);_0x4e5ca3[_0xd7d1('0xd4')]=_[_0xd7d1('0x60')](_0x4e5ca3[_0xd7d1('0x5c')],_0x4e5ca3[_0xd7d1('0x49')]);_0x35a05b[_0xd7d1('0x4d')]=_[_0xd7d1('0x60')](_0x4e5ca3[_0xd7d1('0x5c')],qs[_0xd7d1('0x61')](_0x154e0c[_0xd7d1('0x49')]['fields']));_0x35a05b[_0xd7d1('0x4d')]=_0x35a05b[_0xd7d1('0x4d')][_0xd7d1('0x53')]?_0x35a05b[_0xd7d1('0x4d')]:_0x4e5ca3[_0xd7d1('0x5c')];_0x35a05b[_0xd7d1('0xd5')]=qs['sort'](_0x154e0c['query'][_0xd7d1('0xe1')]);_0x35a05b[_0xd7d1('0x48')]=qs['filters'](_[_0xd7d1('0xe2')](_0x154e0c['query'],_0x4e5ca3[_0xd7d1('0xd4')]));if(_0x154e0c['query'][_0xd7d1('0x39')]){_0x35a05b[_0xd7d1('0x48')]=_[_0xd7d1('0x63')](_0x35a05b['where'],{'$or':_['map'](_0x35a05b[_0xd7d1('0x4d')],function(_0x59b143){var _0x3920c9={};_0x3920c9[_0x59b143]={'$like':'%'+_0x154e0c[_0xd7d1('0x49')][_0xd7d1('0x39')]+'%'};return _0x3920c9;})});}_0x35a05b=_[_0xd7d1('0x63')]({},_0x35a05b,_0x154e0c[_0xd7d1('0xd6')]);return _0x4050e0[_0xd7d1('0x127')](_0x35a05b);}})['then'](function(_0x3095ec){if(_0x3095ec){_0x87e9ab=_0x3095ec[_0xd7d1('0x53')];if(!_0x154e0c[_0xd7d1('0x49')][_0xd7d1('0xde')]('nolimit')){_0x35a05b[_0xd7d1('0x28')]=qs[_0xd7d1('0x28')](_0x154e0c['query'][_0xd7d1('0x28')]);_0x35a05b['offset']=qs['offset'](_0x154e0c[_0xd7d1('0x49')][_0xd7d1('0x27')]);}return _0x4050e0['getLists'](_0x35a05b);}})['then'](function(_0x15e19b){if(_0x15e19b){return _0x15e19b?{'count':_0x87e9ab,'rows':_0x15e19b}:null;}})[_0xd7d1('0x18')](respondWithResult(_0x301e02,null))[_0xd7d1('0x23')](handleError(_0x301e02,null));};exports[_0xd7d1('0x128')]=function(_0x2e42b8,_0x36f3b7){var _0x129a65={};var _0x1f773b={};var _0x5ddf7b;return db['User'][_0xd7d1('0xd2')]({'where':{'id':_0x2e42b8[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x36f3b7,null))['then'](function(_0x28ae15){if(_0x28ae15){_0x5ddf7b=_0x28ae15;_0x1f773b[_0xd7d1('0x5c')]=_[_0xd7d1('0x5e')](db[_0xd7d1('0x44')][_0xd7d1('0x45')]);_0x1f773b[_0xd7d1('0x49')]=_['keys'](_0x2e42b8['query']);_0x1f773b[_0xd7d1('0xd4')]=_[_0xd7d1('0x60')](_0x1f773b[_0xd7d1('0x5c')],_0x1f773b[_0xd7d1('0x49')]);_0x129a65[_0xd7d1('0x4d')]=_['intersection'](_0x1f773b['model'],qs['fields'](_0x2e42b8[_0xd7d1('0x49')][_0xd7d1('0x61')]));_0x129a65[_0xd7d1('0x4d')]=_0x129a65[_0xd7d1('0x4d')][_0xd7d1('0x53')]?_0x129a65['attributes']:_0x1f773b[_0xd7d1('0x5c')];_0x129a65[_0xd7d1('0xd5')]=qs[_0xd7d1('0xe1')](_0x2e42b8[_0xd7d1('0x49')][_0xd7d1('0xe1')]);_0x129a65[_0xd7d1('0x48')]=qs[_0xd7d1('0xd4')](_[_0xd7d1('0xe2')](_0x2e42b8[_0xd7d1('0x49')],_0x1f773b['filters']));if(_0x2e42b8[_0xd7d1('0x49')][_0xd7d1('0x39')]){_0x129a65[_0xd7d1('0x48')]=_[_0xd7d1('0x63')](_0x129a65[_0xd7d1('0x48')],{'$or':_[_0xd7d1('0x3b')](_0x129a65[_0xd7d1('0x4d')],function(_0x4d048a){var _0xadafd8={};_0xadafd8[_0x4d048a]={'$like':'%'+_0x2e42b8[_0xd7d1('0x49')][_0xd7d1('0x39')]+'%'};return _0xadafd8;})});}_0x129a65[_0xd7d1('0x5c')]=db[_0xd7d1('0x44')];_0x129a65['as']=_0xd7d1('0x36');_0x129a65=_[_0xd7d1('0x63')]({},_0x129a65,_0x2e42b8['options']);return _0x5ddf7b['getVoiceQueues']({'include':[_0x129a65]});}})[_0xd7d1('0x18')](function(_0x5291fd){if(_0x5291fd){var _0x54d1a3={},_0x4a8361=[];for(var _0x5bb8fc=0x0;_0x5bb8fc<_0x5291fd[_0xd7d1('0x53')];_0x5bb8fc+=0x1){for(var _0x4cf174=0x0,_0x8fdfba;_0x4cf174<_0x5291fd[_0x5bb8fc][_0xd7d1('0x36')][_0xd7d1('0x53')];_0x4cf174+=0x1){_0x8fdfba=_0x5291fd[_0x5bb8fc][_0xd7d1('0x36')][_0x4cf174][_0xd7d1('0xb2')]({'plain':!![]});_0x54d1a3[_0x8fdfba['id']]=_0x8fdfba;}}_0x54d1a3=_[_0xd7d1('0x129')](_0x54d1a3);for(var _0x5ee30a=qs[_0xd7d1('0x27')](_0x2e42b8[_0xd7d1('0x49')][_0xd7d1('0x27')]);_0x5ee30a<_0x54d1a3[_0xd7d1('0x53')]&&_0x4a8361[_0xd7d1('0x53')]<qs[_0xd7d1('0x28')](_0x2e42b8[_0xd7d1('0x49')]['limit']);_0x5ee30a+=0x1){if(_0x54d1a3[_0x5ee30a]){_0x4a8361['push'](_0x54d1a3[_0x5ee30a]);}}return{'count':_0x54d1a3[_0xd7d1('0x53')],'rows':_0x4a8361};}})[_0xd7d1('0x18')](respondWithResult(_0x36f3b7,null))[_0xd7d1('0x23')](handleError(_0x36f3b7,null));};exports[_0xd7d1('0x40')]=function(_0x33a097,_0x5adc66){if(_0x33a097[_0xd7d1('0x35')]['id']==_0x33a097[_0xd7d1('0x5b')]['id']){return _0x5adc66['status'](0x1f4)['send']({'message':_0xd7d1('0x12a')});}return db[_0xd7d1('0x44')][_0xd7d1('0x64')]({'where':{'id':_0x33a097['params']['id']}})['then'](handleEntityNotFound(_0x5adc66,null))[_0xd7d1('0x18')](removeEntity(_0x5adc66,null))['catch'](handleError(_0x5adc66,null));};exports[_0xd7d1('0x12b')]=function(_0x35a5da,_0x4e0d04){return db[_0xd7d1('0x44')][_0xd7d1('0x64')]({'where':{'id':_0x35a5da[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x4e0d04,null))[_0xd7d1('0x18')](function(_0x5659ae){if(_0x5659ae){return _0x5659ae[_0xd7d1('0x12b')](_0x35a5da[_0xd7d1('0x67')][_0xd7d1('0x6a')],_[_0xd7d1('0x6b')](_0x35a5da[_0xd7d1('0x67')],[_0xd7d1('0x6a'),'id'])||{})[_0xd7d1('0xad')](function(){for(var _0x15e994=0x0;_0x15e994<_0x35a5da[_0xd7d1('0x67')][_0xd7d1('0x6a')]['length'];_0x15e994+=0x1){socket[_0xd7d1('0x31')](_0xd7d1('0x12c'),{'ChatInteractionId':Number(_0x35a5da[_0xd7d1('0x67')]['ids'][_0x15e994]),'UserId':Number(_0x35a5da[_0xd7d1('0x5b')]['id'])});}return _0x35a5da[_0xd7d1('0x67')]['ids'];});}})[_0xd7d1('0x18')](respondWithResult(_0x4e0d04,null))[_0xd7d1('0x23')](handleError(_0x4e0d04,null));};exports[_0xd7d1('0x12d')]=function(_0x163bad,_0x219350){return db[_0xd7d1('0x44')][_0xd7d1('0x64')]({'where':{'id':_0x163bad[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x219350,null))[_0xd7d1('0x18')](function(_0x1570d3){if(_0x1570d3){return _0x1570d3[_0xd7d1('0x12d')](_0x163bad[_0xd7d1('0x49')][_0xd7d1('0x6a')])[_0xd7d1('0x18')](function(){if(_[_0xd7d1('0xba')](_0x163bad[_0xd7d1('0x49')]['ids'])){for(var _0x5d3bce=0x0;_0x5d3bce<_0x163bad[_0xd7d1('0x49')][_0xd7d1('0x6a')][_0xd7d1('0x53')];_0x5d3bce+=0x1){socket['emit'](_0xd7d1('0x12e'),{'ChatInteractionId':Number(_0x163bad['query'][_0xd7d1('0x6a')][_0x5d3bce]),'UserId':Number(_0x163bad[_0xd7d1('0x5b')]['id'])});}}else{socket[_0xd7d1('0x31')](_0xd7d1('0x12e'),{'ChatInteractionId':Number(_0x163bad[_0xd7d1('0x49')][_0xd7d1('0x6a')]),'UserId':Number(_0x163bad[_0xd7d1('0x5b')]['id'])});}});}})[_0xd7d1('0x18')](respondWithStatusCode(_0x219350,null))[_0xd7d1('0x23')](handleError(_0x219350,null));};exports[_0xd7d1('0x12f')]=function(_0xec5f23,_0x34f01e){return db[_0xd7d1('0x44')][_0xd7d1('0x64')]({'where':{'id':_0xec5f23[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x34f01e,null))[_0xd7d1('0x18')](function(_0xa1e771){if(_0xa1e771){return _0xa1e771[_0xd7d1('0x12f')](_0xec5f23[_0xd7d1('0x67')][_0xd7d1('0x6a')],_[_0xd7d1('0x6b')](_0xec5f23[_0xd7d1('0x67')],[_0xd7d1('0x6a'),'id'])||{})['spread'](function(){for(var _0x106fba=0x0;_0x106fba<_0xec5f23[_0xd7d1('0x67')]['ids']['length'];_0x106fba+=0x1){socket['emit'](_0xd7d1('0x130'),{'MailInteractionId':Number(_0xec5f23[_0xd7d1('0x67')]['ids'][_0x106fba]),'UserId':Number(_0xec5f23['params']['id'])});}return _0xec5f23[_0xd7d1('0x67')][_0xd7d1('0x6a')];});}})[_0xd7d1('0x18')](respondWithResult(_0x34f01e,null))[_0xd7d1('0x23')](handleError(_0x34f01e,null));};exports['removeMailInteractions']=function(_0x1c45ec,_0x3d56e1){return db[_0xd7d1('0x44')][_0xd7d1('0x64')]({'where':{'id':_0x1c45ec['params']['id']}})['then'](handleEntityNotFound(_0x3d56e1,null))[_0xd7d1('0x18')](function(_0x554bee){if(_0x554bee){return _0x554bee[_0xd7d1('0x131')](_0x1c45ec[_0xd7d1('0x49')]['ids'])[_0xd7d1('0x18')](function(){if(_[_0xd7d1('0xba')](_0x1c45ec['query'][_0xd7d1('0x6a')])){for(var _0x248d20=0x0;_0x248d20<_0x1c45ec['query'][_0xd7d1('0x6a')][_0xd7d1('0x53')];_0x248d20+=0x1){socket[_0xd7d1('0x31')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x1c45ec[_0xd7d1('0x49')][_0xd7d1('0x6a')][_0x248d20]),'UserId':Number(_0x1c45ec[_0xd7d1('0x5b')]['id'])});}}else{socket['emit'](_0xd7d1('0x132'),{'MailInteractionId':Number(_0x1c45ec[_0xd7d1('0x49')][_0xd7d1('0x6a')]),'UserId':Number(_0x1c45ec['params']['id'])});}});}})[_0xd7d1('0x18')](respondWithStatusCode(_0x3d56e1,null))[_0xd7d1('0x23')](handleError(_0x3d56e1,null));};exports[_0xd7d1('0x133')]=function(_0x1fac74,_0x517a9a){return db[_0xd7d1('0x44')]['find']({'where':{'id':_0x1fac74[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x517a9a,null))[_0xd7d1('0x18')](function(_0x3f2c07){if(_0x3f2c07){return _0x3f2c07[_0xd7d1('0x133')](_0x1fac74[_0xd7d1('0x67')][_0xd7d1('0x6a')],_['omit'](_0x1fac74[_0xd7d1('0x67')],['ids','id'])||{})['spread'](function(){for(var _0x52789a=0x0;_0x52789a<_0x1fac74[_0xd7d1('0x67')][_0xd7d1('0x6a')][_0xd7d1('0x53')];_0x52789a+=0x1){socket[_0xd7d1('0x31')](_0xd7d1('0x134'),{'FaxInteractionId':Number(_0x1fac74[_0xd7d1('0x67')][_0xd7d1('0x6a')][_0x52789a]),'UserId':Number(_0x1fac74[_0xd7d1('0x5b')]['id'])});}return _0x1fac74['body']['ids'];});}})[_0xd7d1('0x18')](respondWithResult(_0x517a9a,null))[_0xd7d1('0x23')](handleError(_0x517a9a,null));};exports[_0xd7d1('0x135')]=function(_0x57c776,_0xa56010){return db[_0xd7d1('0x44')]['find']({'where':{'id':_0x57c776[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0xa56010,null))[_0xd7d1('0x18')](function(_0x3297e3){if(_0x3297e3){return _0x3297e3[_0xd7d1('0x135')](_0x57c776[_0xd7d1('0x49')][_0xd7d1('0x6a')])[_0xd7d1('0x18')](function(){if(_[_0xd7d1('0xba')](_0x57c776['query']['ids'])){for(var _0x35f115=0x0;_0x35f115<_0x57c776[_0xd7d1('0x49')][_0xd7d1('0x6a')][_0xd7d1('0x53')];_0x35f115+=0x1){socket[_0xd7d1('0x31')](_0xd7d1('0x136'),{'FaxInteractionId':Number(_0x57c776[_0xd7d1('0x49')][_0xd7d1('0x6a')][_0x35f115]),'UserId':Number(_0x57c776[_0xd7d1('0x5b')]['id'])});}}else{socket[_0xd7d1('0x31')](_0xd7d1('0x136'),{'FaxInteractionId':Number(_0x57c776['query'][_0xd7d1('0x6a')]),'UserId':Number(_0x57c776['params']['id'])});}});}})['then'](respondWithStatusCode(_0xa56010,null))['catch'](handleError(_0xa56010,null));};exports[_0xd7d1('0x137')]=function(_0x4f965f,_0xec4a3f){return db[_0xd7d1('0x44')][_0xd7d1('0x64')]({'where':{'id':_0x4f965f[_0xd7d1('0x5b')]['id']}})['then'](handleEntityNotFound(_0xec4a3f,null))['then'](function(_0x12cf94){if(_0x12cf94){return _0x12cf94['addSmsInteractions'](_0x4f965f[_0xd7d1('0x67')][_0xd7d1('0x6a')],_[_0xd7d1('0x6b')](_0x4f965f[_0xd7d1('0x67')],[_0xd7d1('0x6a'),'id'])||{})['spread'](function(){for(var _0x159395=0x0;_0x159395<_0x4f965f[_0xd7d1('0x67')][_0xd7d1('0x6a')]['length'];_0x159395+=0x1){socket[_0xd7d1('0x31')]('user_has_sms_interactions:save',{'SmsInteractionId':Number(_0x4f965f[_0xd7d1('0x67')]['ids'][_0x159395]),'UserId':Number(_0x4f965f[_0xd7d1('0x5b')]['id'])});}return _0x4f965f[_0xd7d1('0x67')][_0xd7d1('0x6a')];});}})[_0xd7d1('0x18')](respondWithResult(_0xec4a3f,null))[_0xd7d1('0x23')](handleError(_0xec4a3f,null));};exports['removeSmsInteractions']=function(_0x488e3b,_0x2c8cf0){return db['User'][_0xd7d1('0x64')]({'where':{'id':_0x488e3b[_0xd7d1('0x5b')]['id']}})['then'](handleEntityNotFound(_0x2c8cf0,null))[_0xd7d1('0x18')](function(_0x240366){if(_0x240366){return _0x240366[_0xd7d1('0x138')](_0x488e3b[_0xd7d1('0x49')][_0xd7d1('0x6a')])[_0xd7d1('0x18')](function(){if(_[_0xd7d1('0xba')](_0x488e3b[_0xd7d1('0x49')]['ids'])){for(var _0xb94908=0x0;_0xb94908<_0x488e3b[_0xd7d1('0x49')]['ids'][_0xd7d1('0x53')];_0xb94908+=0x1){socket[_0xd7d1('0x31')](_0xd7d1('0x139'),{'SmsInteractionId':Number(_0x488e3b[_0xd7d1('0x49')][_0xd7d1('0x6a')][_0xb94908]),'UserId':Number(_0x488e3b[_0xd7d1('0x5b')]['id'])});}}else{socket[_0xd7d1('0x31')](_0xd7d1('0x139'),{'SmsInteractionId':Number(_0x488e3b[_0xd7d1('0x49')][_0xd7d1('0x6a')]),'UserId':Number(_0x488e3b[_0xd7d1('0x5b')]['id'])});}});}})[_0xd7d1('0x18')](respondWithStatusCode(_0x2c8cf0,null))[_0xd7d1('0x23')](handleError(_0x2c8cf0,null));};exports[_0xd7d1('0x13a')]=function(_0x5e2bcf,_0x2e5c00){return db[_0xd7d1('0x44')]['find']({'where':{'id':_0x5e2bcf[_0xd7d1('0x5b')]['id']}})['then'](handleEntityNotFound(_0x2e5c00,null))[_0xd7d1('0x18')](function(_0xf3c7d8){if(_0xf3c7d8){return _0xf3c7d8['addOpenchannelInteractions'](_0x5e2bcf[_0xd7d1('0x67')][_0xd7d1('0x6a')],_[_0xd7d1('0x6b')](_0x5e2bcf[_0xd7d1('0x67')],['ids','id'])||{})['spread'](function(){for(var _0x27f7b4=0x0;_0x27f7b4<_0x5e2bcf['body'][_0xd7d1('0x6a')][_0xd7d1('0x53')];_0x27f7b4+=0x1){socket[_0xd7d1('0x31')](_0xd7d1('0x13b'),{'OpenchannelInteractionId':Number(_0x5e2bcf[_0xd7d1('0x67')][_0xd7d1('0x6a')][_0x27f7b4]),'UserId':Number(_0x5e2bcf[_0xd7d1('0x5b')]['id'])});}return _0x5e2bcf[_0xd7d1('0x67')][_0xd7d1('0x6a')];});}})[_0xd7d1('0x18')](respondWithResult(_0x2e5c00,null))[_0xd7d1('0x23')](handleError(_0x2e5c00,null));};exports[_0xd7d1('0x13c')]=function(_0x1352fa,_0x4cb12d){return db[_0xd7d1('0x44')][_0xd7d1('0x64')]({'where':{'id':_0x1352fa['params']['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x4cb12d,null))[_0xd7d1('0x18')](function(_0x2ffe37){if(_0x2ffe37){return _0x2ffe37[_0xd7d1('0x13c')](_0x1352fa[_0xd7d1('0x49')][_0xd7d1('0x6a')])[_0xd7d1('0x18')](function(){if(_['isArray'](_0x1352fa[_0xd7d1('0x49')][_0xd7d1('0x6a')])){for(var _0x23ceb0=0x0;_0x23ceb0<_0x1352fa['query'][_0xd7d1('0x6a')][_0xd7d1('0x53')];_0x23ceb0+=0x1){socket[_0xd7d1('0x31')](_0xd7d1('0x13d'),{'OpenchannelInteractionId':Number(_0x1352fa['query']['ids'][_0x23ceb0]),'UserId':Number(_0x1352fa['params']['id'])});}}else{socket[_0xd7d1('0x31')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x1352fa[_0xd7d1('0x49')]['ids']),'UserId':Number(_0x1352fa[_0xd7d1('0x5b')]['id'])});}});}})[_0xd7d1('0x18')](respondWithStatusCode(_0x4cb12d,null))[_0xd7d1('0x23')](handleError(_0x4cb12d,null));};exports[_0xd7d1('0x13e')]=function(_0x2de34a,_0xf38f3d){return db[_0xd7d1('0x44')]['find']({'where':{'id':_0x2de34a['params']['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0xf38f3d,null))[_0xd7d1('0x18')](function(_0x505f52){if(_0x505f52){return _0x505f52['addWhatsappInteractions'](_0x2de34a[_0xd7d1('0x67')][_0xd7d1('0x6a')],_[_0xd7d1('0x6b')](_0x2de34a[_0xd7d1('0x67')],[_0xd7d1('0x6a'),'id'])||{})[_0xd7d1('0xad')](function(){for(var _0x146b72=0x0;_0x146b72<_0x2de34a[_0xd7d1('0x67')]['ids'][_0xd7d1('0x53')];_0x146b72+=0x1){socket[_0xd7d1('0x31')](_0xd7d1('0x13f'),{'WhatsappInteractionId':Number(_0x2de34a[_0xd7d1('0x67')][_0xd7d1('0x6a')][_0x146b72]),'UserId':Number(_0x2de34a[_0xd7d1('0x5b')]['id'])});}return _0x2de34a[_0xd7d1('0x67')][_0xd7d1('0x6a')];});}})['then'](respondWithResult(_0xf38f3d,null))[_0xd7d1('0x23')](handleError(_0xf38f3d,null));};exports[_0xd7d1('0x140')]=function(_0x492992,_0x5a7457){return db[_0xd7d1('0x44')][_0xd7d1('0x64')]({'where':{'id':_0x492992[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x5a7457,null))[_0xd7d1('0x18')](function(_0x282807){if(_0x282807){return _0x282807[_0xd7d1('0x140')](_0x492992[_0xd7d1('0x49')][_0xd7d1('0x6a')]);}})[_0xd7d1('0x18')](respondWithStatusCode(_0x5a7457,null))['catch'](handleError(_0x5a7457,null));};exports[_0xd7d1('0x141')]=function(_0x27ed0f,_0x174ebc){var _0x11c344={};var _0x1c32c2={};var _0x37c05c;var _0x328062;return db[_0xd7d1('0x44')]['findOne']({'where':{'id':_0x27ed0f[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x174ebc,null))[_0xd7d1('0x18')](function(_0x5ef25c){if(_0x5ef25c){_0x37c05c=_0x5ef25c;_0x1c32c2['model']=_[_0xd7d1('0x5e')](db['VoicePrefix'][_0xd7d1('0x45')]);_0x1c32c2[_0xd7d1('0x49')]=_[_0xd7d1('0x5e')](_0x27ed0f[_0xd7d1('0x49')]);_0x1c32c2[_0xd7d1('0xd4')]=_[_0xd7d1('0x60')](_0x1c32c2[_0xd7d1('0x5c')],_0x1c32c2[_0xd7d1('0x49')]);_0x11c344[_0xd7d1('0x4d')]=_[_0xd7d1('0x60')](_0x1c32c2[_0xd7d1('0x5c')],qs[_0xd7d1('0x61')](_0x27ed0f[_0xd7d1('0x49')][_0xd7d1('0x61')]));_0x11c344['attributes']=_0x11c344['attributes'][_0xd7d1('0x53')]?_0x11c344['attributes']:_0x1c32c2[_0xd7d1('0x5c')];_0x11c344[_0xd7d1('0xd5')]=qs[_0xd7d1('0xe1')](_0x27ed0f[_0xd7d1('0x49')][_0xd7d1('0xe1')]);_0x11c344[_0xd7d1('0x48')]=qs[_0xd7d1('0xd4')](_['pick'](_0x27ed0f[_0xd7d1('0x49')],_0x1c32c2[_0xd7d1('0xd4')]));if(_0x27ed0f[_0xd7d1('0x49')][_0xd7d1('0x39')]){_0x11c344['where']=_[_0xd7d1('0x63')](_0x11c344[_0xd7d1('0x48')],{'$or':_['map'](_0x11c344[_0xd7d1('0x4d')],function(_0x5dce3b){var _0x909cba={};_0x909cba[_0x5dce3b]={'$like':'%'+_0x27ed0f['query'][_0xd7d1('0x39')]+'%'};return _0x909cba;})});}_0x11c344=_['merge']({},_0x11c344,_0x27ed0f[_0xd7d1('0xd6')]);return _0x37c05c[_0xd7d1('0x141')](_0x11c344);}})[_0xd7d1('0x18')](function(_0x1ee4d9){if(_0x1ee4d9){_0x328062=_0x1ee4d9[_0xd7d1('0x53')];if(!_0x27ed0f['query']['hasOwnProperty']('nolimit')){_0x11c344[_0xd7d1('0x28')]=qs[_0xd7d1('0x28')](_0x27ed0f[_0xd7d1('0x49')][_0xd7d1('0x28')]);_0x11c344['offset']=qs[_0xd7d1('0x27')](_0x27ed0f[_0xd7d1('0x49')][_0xd7d1('0x27')]);}return _0x37c05c[_0xd7d1('0x141')](_0x11c344);}})[_0xd7d1('0x18')](function(_0x212f45){if(_0x212f45){return _0x212f45?{'count':_0x328062,'rows':_0x212f45}:null;}})[_0xd7d1('0x18')](respondWithResult(_0x174ebc,null))[_0xd7d1('0x23')](handleError(_0x174ebc,null));};exports[_0xd7d1('0x142')]=function(_0x3977a9,_0x6b7749){var _0x2948f9={};var _0x43cd3f={};var _0x1695b1;var _0x583f8d;return db[_0xd7d1('0x44')][_0xd7d1('0xd2')]({'where':{'id':_0x3977a9[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x6b7749,null))[_0xd7d1('0x18')](function(_0x55f1b2){if(_0x55f1b2){_0x1695b1=_0x55f1b2;_0x43cd3f[_0xd7d1('0x5c')]=_['keys'](db[_0xd7d1('0x143')][_0xd7d1('0x45')]);_0x43cd3f['query']=_[_0xd7d1('0x5e')](_0x3977a9['query']);_0x43cd3f[_0xd7d1('0xd4')]=_['intersection'](_0x43cd3f[_0xd7d1('0x5c')],_0x43cd3f['query']);_0x2948f9[_0xd7d1('0x4d')]=_['intersection'](_0x43cd3f[_0xd7d1('0x5c')],qs['fields'](_0x3977a9['query'][_0xd7d1('0x61')]));_0x2948f9[_0xd7d1('0x4d')]=_0x2948f9[_0xd7d1('0x4d')]['length']?_0x2948f9[_0xd7d1('0x4d')]:_0x43cd3f['model'];_0x2948f9['order']=qs[_0xd7d1('0xe1')](_0x3977a9[_0xd7d1('0x49')][_0xd7d1('0xe1')]);_0x2948f9[_0xd7d1('0x48')]=qs['filters'](_[_0xd7d1('0xe2')](_0x3977a9['query'],_0x43cd3f[_0xd7d1('0xd4')]));if(_0x3977a9[_0xd7d1('0x49')][_0xd7d1('0x39')]){_0x2948f9[_0xd7d1('0x48')]=_[_0xd7d1('0x63')](_0x2948f9[_0xd7d1('0x48')],{'$or':_['map'](_0x2948f9[_0xd7d1('0x4d')],function(_0x4449dc){var _0x40bcee={};_0x40bcee[_0x4449dc]={'$like':'%'+_0x3977a9[_0xd7d1('0x49')][_0xd7d1('0x39')]+'%'};return _0x40bcee;})});}_0x2948f9=_[_0xd7d1('0x63')]({},_0x2948f9,_0x3977a9[_0xd7d1('0xd6')]);return _0x1695b1[_0xd7d1('0x142')](_0x2948f9);}})[_0xd7d1('0x18')](function(_0x515a71){if(_0x515a71){_0x583f8d=_0x515a71['length'];if(!_0x3977a9['query']['hasOwnProperty']('nolimit')){_0x2948f9[_0xd7d1('0x28')]=qs['limit'](_0x3977a9[_0xd7d1('0x49')][_0xd7d1('0x28')]);_0x2948f9[_0xd7d1('0x27')]=qs[_0xd7d1('0x27')](_0x3977a9[_0xd7d1('0x49')]['offset']);}return _0x1695b1[_0xd7d1('0x142')](_0x2948f9);}})['then'](function(_0x5b6658){if(_0x5b6658){return _0x5b6658?{'count':_0x583f8d,'rows':_0x5b6658}:null;}})[_0xd7d1('0x18')](respondWithResult(_0x6b7749,null))[_0xd7d1('0x23')](handleError(_0x6b7749,null));};exports[_0xd7d1('0x144')]=function(_0x1a0471,_0x20e303){return db['User'][_0xd7d1('0x64')]({'where':{'id':_0x1a0471['params']['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x20e303,null))['then'](function(_0x556b78){if(_0x556b78){return _0x556b78[_0xd7d1('0x144')](_0x1a0471[_0xd7d1('0x67')][_0xd7d1('0x6a')],_['omit'](_0x1a0471[_0xd7d1('0x67')],[_0xd7d1('0x6a'),'id'])||{});}})[_0xd7d1('0x18')](respondWithResult(_0x20e303,null))['catch'](handleError(_0x20e303,null));};exports[_0xd7d1('0x145')]=function(_0x1f129e,_0x5a3c57){return db[_0xd7d1('0x44')]['find']({'where':{'id':_0x1f129e[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x5a3c57,null))[_0xd7d1('0x18')](function(_0x5db560){if(_0x5db560){return _0x5db560[_0xd7d1('0x145')](_0x1f129e[_0xd7d1('0x49')][_0xd7d1('0x6a')]);}})[_0xd7d1('0x18')](respondWithStatusCode(_0x5a3c57,null))[_0xd7d1('0x23')](handleError(_0x5a3c57,null));};exports['getMailAccounts']=function(_0x21c54f,_0x5823d2){var _0x90b069={};var _0x103a71={};var _0x583072;var _0xc234d3;return db[_0xd7d1('0x44')][_0xd7d1('0xd2')]({'where':{'id':_0x21c54f[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x5823d2,null))[_0xd7d1('0x18')](function(_0x136fae){if(_0x136fae){_0x583072=_0x136fae;_0x103a71[_0xd7d1('0x5c')]=_[_0xd7d1('0x5e')](db[_0xd7d1('0x146')][_0xd7d1('0x45')]);_0x103a71[_0xd7d1('0x49')]=_[_0xd7d1('0x5e')](_0x21c54f[_0xd7d1('0x49')]);_0x103a71[_0xd7d1('0xd4')]=_[_0xd7d1('0x60')](_0x103a71[_0xd7d1('0x5c')],_0x103a71[_0xd7d1('0x49')]);_0x90b069[_0xd7d1('0x4d')]=_[_0xd7d1('0x60')](_0x103a71[_0xd7d1('0x5c')],qs['fields'](_0x21c54f['query'][_0xd7d1('0x61')]));_0x90b069[_0xd7d1('0x4d')]=_0x90b069['attributes']['length']?_0x90b069[_0xd7d1('0x4d')]:_0x103a71['model'];_0x90b069[_0xd7d1('0xd5')]=qs[_0xd7d1('0xe1')](_0x21c54f['query'][_0xd7d1('0xe1')]);_0x90b069['where']=qs['filters'](_[_0xd7d1('0xe2')](_0x21c54f[_0xd7d1('0x49')],_0x103a71[_0xd7d1('0xd4')]));if(_0x21c54f['query']['filter']){_0x90b069['where']=_[_0xd7d1('0x63')](_0x90b069[_0xd7d1('0x48')],{'$or':_['map'](_0x90b069['attributes'],function(_0x4dd667){var _0x573c00={};_0x573c00[_0x4dd667]={'$like':'%'+_0x21c54f['query'][_0xd7d1('0x39')]+'%'};return _0x573c00;})});}_0x90b069=_[_0xd7d1('0x63')]({},_0x90b069,_0x21c54f['options']);return _0x583072[_0xd7d1('0x147')](_0x90b069);}})[_0xd7d1('0x18')](function(_0x6e7521){if(_0x6e7521){_0xc234d3=_0x6e7521['length'];if(!_0x21c54f['query'][_0xd7d1('0xde')](_0xd7d1('0xdf'))){_0x90b069[_0xd7d1('0x28')]=qs[_0xd7d1('0x28')](_0x21c54f['query'][_0xd7d1('0x28')]);_0x90b069[_0xd7d1('0x27')]=qs[_0xd7d1('0x27')](_0x21c54f['query']['offset']);}return _0x583072['getMailAccounts'](_0x90b069);}})[_0xd7d1('0x18')](function(_0xf3980a){if(_0xf3980a){return _0xf3980a?{'count':_0xc234d3,'rows':_0xf3980a}:null;}})['then'](respondWithResult(_0x5823d2,null))[_0xd7d1('0x23')](handleError(_0x5823d2,null));};exports['addMailAccounts']=function(_0x57b04d,_0x2af51a){return db[_0xd7d1('0x44')]['find']({'where':{'id':_0x57b04d[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x2af51a,null))[_0xd7d1('0x18')](function(_0x1c8851){if(_0x1c8851){return _0x1c8851[_0xd7d1('0x148')](_0x57b04d['body'][_0xd7d1('0x6a')],_[_0xd7d1('0x6b')](_0x57b04d[_0xd7d1('0x67')],[_0xd7d1('0x6a'),'id'])||{});}})[_0xd7d1('0x18')](respondWithResult(_0x2af51a,null))[_0xd7d1('0x23')](handleError(_0x2af51a,null));};exports[_0xd7d1('0x149')]=function(_0x58a51f,_0x45ef4f){return db[_0xd7d1('0x44')][_0xd7d1('0x64')]({'where':{'id':_0x58a51f[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x45ef4f,null))[_0xd7d1('0x18')](function(_0x5c090b){if(_0x5c090b){return _0x5c090b[_0xd7d1('0x149')](_0x58a51f['query'][_0xd7d1('0x6a')]);}})[_0xd7d1('0x18')](respondWithStatusCode(_0x45ef4f,null))[_0xd7d1('0x23')](handleError(_0x45ef4f,null));};exports[_0xd7d1('0x14a')]=function(_0x4693b4,_0x3964eb){var _0x21b8e0={};var _0x68f34f={};var _0x1205ac;var _0xe0b6b0;return db[_0xd7d1('0x44')][_0xd7d1('0xd2')]({'where':{'id':_0x4693b4['params']['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x3964eb,null))[_0xd7d1('0x18')](function(_0x178f32){if(_0x178f32){_0x1205ac=_0x178f32;_0x68f34f['model']=_[_0xd7d1('0x5e')](db['OpenchannelAccount'][_0xd7d1('0x45')]);_0x68f34f['query']=_['keys'](_0x4693b4[_0xd7d1('0x49')]);_0x68f34f[_0xd7d1('0xd4')]=_[_0xd7d1('0x60')](_0x68f34f['model'],_0x68f34f[_0xd7d1('0x49')]);_0x21b8e0['attributes']=_[_0xd7d1('0x60')](_0x68f34f[_0xd7d1('0x5c')],qs[_0xd7d1('0x61')](_0x4693b4[_0xd7d1('0x49')][_0xd7d1('0x61')]));_0x21b8e0[_0xd7d1('0x4d')]=_0x21b8e0['attributes'][_0xd7d1('0x53')]?_0x21b8e0['attributes']:_0x68f34f[_0xd7d1('0x5c')];_0x21b8e0[_0xd7d1('0xd5')]=qs[_0xd7d1('0xe1')](_0x4693b4[_0xd7d1('0x49')][_0xd7d1('0xe1')]);_0x21b8e0['where']=qs[_0xd7d1('0xd4')](_['pick'](_0x4693b4['query'],_0x68f34f[_0xd7d1('0xd4')]));if(_0x4693b4[_0xd7d1('0x49')][_0xd7d1('0x39')]){_0x21b8e0[_0xd7d1('0x48')]=_[_0xd7d1('0x63')](_0x21b8e0['where'],{'$or':_[_0xd7d1('0x3b')](_0x21b8e0[_0xd7d1('0x4d')],function(_0x53d0fe){var _0x3d2455={};_0x3d2455[_0x53d0fe]={'$like':'%'+_0x4693b4['query']['filter']+'%'};return _0x3d2455;})});}_0x21b8e0=_[_0xd7d1('0x63')]({},_0x21b8e0,_0x4693b4[_0xd7d1('0xd6')]);return _0x1205ac['getOpenchannelAccounts'](_0x21b8e0);}})[_0xd7d1('0x18')](function(_0x1856de){if(_0x1856de){_0xe0b6b0=_0x1856de[_0xd7d1('0x53')];if(!_0x4693b4['query']['hasOwnProperty'](_0xd7d1('0xdf'))){_0x21b8e0[_0xd7d1('0x28')]=qs['limit'](_0x4693b4[_0xd7d1('0x49')][_0xd7d1('0x28')]);_0x21b8e0[_0xd7d1('0x27')]=qs[_0xd7d1('0x27')](_0x4693b4[_0xd7d1('0x49')][_0xd7d1('0x27')]);}return _0x1205ac['getOpenchannelAccounts'](_0x21b8e0);}})[_0xd7d1('0x18')](function(_0x56b412){if(_0x56b412){return _0x56b412?{'count':_0xe0b6b0,'rows':_0x56b412}:null;}})[_0xd7d1('0x18')](respondWithResult(_0x3964eb,null))[_0xd7d1('0x23')](handleError(_0x3964eb,null));};exports['addOpenchannelAccounts']=function(_0x3dfa53,_0x323a89){return db['User']['find']({'where':{'id':_0x3dfa53[_0xd7d1('0x5b')]['id']}})['then'](handleEntityNotFound(_0x323a89,null))[_0xd7d1('0x18')](function(_0x33e4ca){if(_0x33e4ca){return _0x33e4ca['addOpenchannelAccounts'](_0x3dfa53[_0xd7d1('0x67')][_0xd7d1('0x6a')],_[_0xd7d1('0x6b')](_0x3dfa53[_0xd7d1('0x67')],[_0xd7d1('0x6a'),'id'])||{});}})[_0xd7d1('0x18')](respondWithResult(_0x323a89,null))[_0xd7d1('0x23')](handleError(_0x323a89,null));};exports[_0xd7d1('0x14b')]=function(_0x32bb23,_0x93783e){return db[_0xd7d1('0x44')][_0xd7d1('0x64')]({'where':{'id':_0x32bb23[_0xd7d1('0x5b')]['id']}})['then'](handleEntityNotFound(_0x93783e,null))['then'](function(_0x29c4a3){if(_0x29c4a3){return _0x29c4a3['removeOpenchannelAccounts'](_0x32bb23[_0xd7d1('0x49')][_0xd7d1('0x6a')]);}})[_0xd7d1('0x18')](respondWithStatusCode(_0x93783e,null))[_0xd7d1('0x23')](handleError(_0x93783e,null));};exports[_0xd7d1('0x14c')]=function(_0x504dc7,_0x3eb238){var _0x5a1fd3={};var _0x3ccd55={};var _0xe4fe42;var _0x5cc7e4;return db[_0xd7d1('0x44')]['findOne']({'where':{'id':_0x504dc7[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x3eb238,null))['then'](function(_0x14cfa5){if(_0x14cfa5){_0xe4fe42=_0x14cfa5;_0x3ccd55[_0xd7d1('0x5c')]=_[_0xd7d1('0x5e')](db[_0xd7d1('0x14d')][_0xd7d1('0x45')]);_0x3ccd55[_0xd7d1('0x49')]=_['keys'](_0x504dc7[_0xd7d1('0x49')]);_0x3ccd55[_0xd7d1('0xd4')]=_[_0xd7d1('0x60')](_0x3ccd55[_0xd7d1('0x5c')],_0x3ccd55['query']);_0x5a1fd3[_0xd7d1('0x4d')]=_[_0xd7d1('0x60')](_0x3ccd55[_0xd7d1('0x5c')],qs[_0xd7d1('0x61')](_0x504dc7['query'][_0xd7d1('0x61')]));_0x5a1fd3[_0xd7d1('0x4d')]=_0x5a1fd3[_0xd7d1('0x4d')][_0xd7d1('0x53')]?_0x5a1fd3[_0xd7d1('0x4d')]:_0x3ccd55[_0xd7d1('0x5c')];_0x5a1fd3[_0xd7d1('0xd5')]=qs[_0xd7d1('0xe1')](_0x504dc7[_0xd7d1('0x49')][_0xd7d1('0xe1')]);_0x5a1fd3['where']=qs['filters'](_[_0xd7d1('0xe2')](_0x504dc7[_0xd7d1('0x49')],_0x3ccd55[_0xd7d1('0xd4')]));if(_0x504dc7[_0xd7d1('0x49')][_0xd7d1('0x39')]){_0x5a1fd3[_0xd7d1('0x48')]=_[_0xd7d1('0x63')](_0x5a1fd3[_0xd7d1('0x48')],{'$or':_[_0xd7d1('0x3b')](_0x5a1fd3[_0xd7d1('0x4d')],function(_0x15a270){var _0x92a2a4={};_0x92a2a4[_0x15a270]={'$like':'%'+_0x504dc7[_0xd7d1('0x49')]['filter']+'%'};return _0x92a2a4;})});}_0x5a1fd3=_['merge']({},_0x5a1fd3,_0x504dc7[_0xd7d1('0xd6')]);return _0xe4fe42[_0xd7d1('0x14c')](_0x5a1fd3);}})[_0xd7d1('0x18')](function(_0x109ba0){if(_0x109ba0){_0x5cc7e4=_0x109ba0[_0xd7d1('0x53')];if(!_0x504dc7[_0xd7d1('0x49')][_0xd7d1('0xde')](_0xd7d1('0xdf'))){_0x5a1fd3[_0xd7d1('0x28')]=qs['limit'](_0x504dc7[_0xd7d1('0x49')][_0xd7d1('0x28')]);_0x5a1fd3['offset']=qs[_0xd7d1('0x27')](_0x504dc7[_0xd7d1('0x49')][_0xd7d1('0x27')]);}return _0xe4fe42['getSmsAccounts'](_0x5a1fd3);}})[_0xd7d1('0x18')](function(_0x33ae46){if(_0x33ae46){return _0x33ae46?{'count':_0x5cc7e4,'rows':_0x33ae46}:null;}})['then'](respondWithResult(_0x3eb238,null))['catch'](handleError(_0x3eb238,null));};exports[_0xd7d1('0x14e')]=function(_0x311d75,_0x13b616){return db[_0xd7d1('0x44')][_0xd7d1('0x64')]({'where':{'id':_0x311d75['params']['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x13b616,null))['then'](function(_0x57f4e7){if(_0x57f4e7){return _0x57f4e7['addSmsAccounts'](_0x311d75[_0xd7d1('0x67')]['ids'],_[_0xd7d1('0x6b')](_0x311d75[_0xd7d1('0x67')],['ids','id'])||{});}})['then'](respondWithResult(_0x13b616,null))[_0xd7d1('0x23')](handleError(_0x13b616,null));};exports['removeSmsAccounts']=function(_0x13b3bc,_0x503209){return db[_0xd7d1('0x44')][_0xd7d1('0x64')]({'where':{'id':_0x13b3bc['params']['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x503209,null))[_0xd7d1('0x18')](function(_0x472428){if(_0x472428){return _0x472428[_0xd7d1('0x14f')](_0x13b3bc[_0xd7d1('0x49')]['ids']);}})[_0xd7d1('0x18')](respondWithStatusCode(_0x503209,null))[_0xd7d1('0x23')](handleError(_0x503209,null));};exports[_0xd7d1('0x150')]=function(_0x1091aa,_0x56d5c8){var _0x2080f7={};var _0x3ebd78={};var _0x18763f;var _0x5b7716;return db['User'][_0xd7d1('0xd2')]({'where':{'id':_0x1091aa[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x56d5c8,null))['then'](function(_0x14664f){if(_0x14664f){_0x18763f=_0x14664f;_0x3ebd78['model']=_[_0xd7d1('0x5e')](db['ChatWebsite'][_0xd7d1('0x45')]);_0x3ebd78[_0xd7d1('0x49')]=_[_0xd7d1('0x5e')](_0x1091aa[_0xd7d1('0x49')]);_0x3ebd78['filters']=_['intersection'](_0x3ebd78['model'],_0x3ebd78[_0xd7d1('0x49')]);_0x2080f7[_0xd7d1('0x4d')]=_[_0xd7d1('0x60')](_0x3ebd78[_0xd7d1('0x5c')],qs[_0xd7d1('0x61')](_0x1091aa[_0xd7d1('0x49')][_0xd7d1('0x61')]));_0x2080f7['attributes']=_0x2080f7[_0xd7d1('0x4d')]['length']?_0x2080f7[_0xd7d1('0x4d')]:_0x3ebd78[_0xd7d1('0x5c')];_0x2080f7[_0xd7d1('0xd5')]=qs[_0xd7d1('0xe1')](_0x1091aa[_0xd7d1('0x49')]['sort']);_0x2080f7['where']=qs[_0xd7d1('0xd4')](_[_0xd7d1('0xe2')](_0x1091aa[_0xd7d1('0x49')],_0x3ebd78[_0xd7d1('0xd4')]));if(_0x1091aa[_0xd7d1('0x49')]['filter']){_0x2080f7[_0xd7d1('0x48')]=_[_0xd7d1('0x63')](_0x2080f7[_0xd7d1('0x48')],{'$or':_[_0xd7d1('0x3b')](_0x2080f7[_0xd7d1('0x4d')],function(_0x31c2a7){var _0x18cd21={};_0x18cd21[_0x31c2a7]={'$like':'%'+_0x1091aa[_0xd7d1('0x49')][_0xd7d1('0x39')]+'%'};return _0x18cd21;})});}_0x2080f7=_[_0xd7d1('0x63')]({},_0x2080f7,_0x1091aa[_0xd7d1('0xd6')]);return _0x18763f[_0xd7d1('0x150')](_0x2080f7);}})[_0xd7d1('0x18')](function(_0x2186e3){if(_0x2186e3){_0x5b7716=_0x2186e3[_0xd7d1('0x53')];if(!_0x1091aa['query'][_0xd7d1('0xde')]('nolimit')){_0x2080f7[_0xd7d1('0x28')]=qs[_0xd7d1('0x28')](_0x1091aa[_0xd7d1('0x49')][_0xd7d1('0x28')]);_0x2080f7[_0xd7d1('0x27')]=qs[_0xd7d1('0x27')](_0x1091aa[_0xd7d1('0x49')][_0xd7d1('0x27')]);}return _0x18763f[_0xd7d1('0x150')](_0x2080f7);}})['then'](function(_0x557a69){if(_0x557a69){return _0x557a69?{'count':_0x5b7716,'rows':_0x557a69}:null;}})[_0xd7d1('0x18')](respondWithResult(_0x56d5c8,null))[_0xd7d1('0x23')](handleError(_0x56d5c8,null));};exports[_0xd7d1('0x151')]=function(_0x138637,_0x250bb9){return db['User']['find']({'where':{'id':_0x138637['params']['id']}})['then'](handleEntityNotFound(_0x250bb9,null))[_0xd7d1('0x18')](function(_0x3dd8b9){if(_0x3dd8b9){return _0x3dd8b9[_0xd7d1('0x151')](_0x138637[_0xd7d1('0x67')][_0xd7d1('0x6a')],_[_0xd7d1('0x6b')](_0x138637[_0xd7d1('0x67')],[_0xd7d1('0x6a'),'id'])||{});}})[_0xd7d1('0x18')](respondWithResult(_0x250bb9,null))[_0xd7d1('0x23')](handleError(_0x250bb9,null));};exports[_0xd7d1('0x152')]=function(_0xcd8260,_0x14afe9){return db['User'][_0xd7d1('0x64')]({'where':{'id':_0xcd8260['params']['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x14afe9,null))[_0xd7d1('0x18')](function(_0x5e59c0){if(_0x5e59c0){return _0x5e59c0[_0xd7d1('0x152')](_0xcd8260[_0xd7d1('0x49')]['ids']);}})['then'](respondWithStatusCode(_0x14afe9,null))[_0xd7d1('0x23')](handleError(_0x14afe9,null));};exports[_0xd7d1('0x153')]=function(_0x1fc645,_0x2d3ffb){var _0x13d645={};var _0x5a41f4={};var _0x41e520;var _0x302e19;return db[_0xd7d1('0x44')][_0xd7d1('0xd2')]({'where':{'id':_0x1fc645[_0xd7d1('0x5b')]['id']}})['then'](handleEntityNotFound(_0x2d3ffb,null))['then'](function(_0x33112b){if(_0x33112b){_0x41e520=_0x33112b;_0x5a41f4[_0xd7d1('0x5c')]=_[_0xd7d1('0x5e')](db[_0xd7d1('0x154')][_0xd7d1('0x45')]);_0x5a41f4[_0xd7d1('0x49')]=_[_0xd7d1('0x5e')](_0x1fc645[_0xd7d1('0x49')]);_0x5a41f4[_0xd7d1('0xd4')]=_['intersection'](_0x5a41f4['model'],_0x5a41f4['query']);_0x13d645['attributes']=_[_0xd7d1('0x60')](_0x5a41f4['model'],qs[_0xd7d1('0x61')](_0x1fc645[_0xd7d1('0x49')]['fields']));_0x13d645[_0xd7d1('0x4d')]=_0x13d645[_0xd7d1('0x4d')][_0xd7d1('0x53')]?_0x13d645[_0xd7d1('0x4d')]:_0x5a41f4[_0xd7d1('0x5c')];_0x13d645['order']=qs[_0xd7d1('0xe1')](_0x1fc645['query'][_0xd7d1('0xe1')]);_0x13d645['where']=qs[_0xd7d1('0xd4')](_[_0xd7d1('0xe2')](_0x1fc645[_0xd7d1('0x49')],_0x5a41f4[_0xd7d1('0xd4')]));if(_0x1fc645[_0xd7d1('0x49')][_0xd7d1('0x39')]){_0x13d645[_0xd7d1('0x48')]=_['merge'](_0x13d645[_0xd7d1('0x48')],{'$or':_[_0xd7d1('0x3b')](_0x13d645[_0xd7d1('0x4d')],function(_0x517b7a){var _0x2d5fc1={};_0x2d5fc1[_0x517b7a]={'$like':'%'+_0x1fc645[_0xd7d1('0x49')]['filter']+'%'};return _0x2d5fc1;})});}_0x13d645=_['merge']({},_0x13d645,_0x1fc645['options']);return _0x41e520['getWhatsappAccounts'](_0x13d645);}})[_0xd7d1('0x18')](function(_0x16d101){if(_0x16d101){_0x302e19=_0x16d101[_0xd7d1('0x53')];if(!_0x1fc645[_0xd7d1('0x49')][_0xd7d1('0xde')](_0xd7d1('0xdf'))){_0x13d645['limit']=qs[_0xd7d1('0x28')](_0x1fc645[_0xd7d1('0x49')]['limit']);_0x13d645[_0xd7d1('0x27')]=qs[_0xd7d1('0x27')](_0x1fc645['query'][_0xd7d1('0x27')]);}return _0x41e520[_0xd7d1('0x153')](_0x13d645);}})[_0xd7d1('0x18')](function(_0x3725f6){if(_0x3725f6){return _0x3725f6?{'count':_0x302e19,'rows':_0x3725f6}:null;}})[_0xd7d1('0x18')](respondWithResult(_0x2d3ffb,null))[_0xd7d1('0x23')](handleError(_0x2d3ffb,null));};exports[_0xd7d1('0x155')]=function(_0x794dea,_0x2dc6a5){return db[_0xd7d1('0x44')]['find']({'where':{'id':_0x794dea[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x2dc6a5,null))[_0xd7d1('0x18')](function(_0x5b24b9){if(_0x5b24b9){return _0x5b24b9['addWhatsappAccounts'](_0x794dea[_0xd7d1('0x67')][_0xd7d1('0x6a')],_[_0xd7d1('0x6b')](_0x794dea['body'],[_0xd7d1('0x6a'),'id'])||{});}})['then'](respondWithResult(_0x2dc6a5,null))[_0xd7d1('0x23')](handleError(_0x2dc6a5,null));};exports['removeWhatsappAccounts']=function(_0x196be9,_0x2464e8){return db[_0xd7d1('0x44')][_0xd7d1('0x64')]({'where':{'id':_0x196be9['params']['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x2464e8,null))[_0xd7d1('0x18')](function(_0x20de41){if(_0x20de41){return _0x20de41[_0xd7d1('0x156')](_0x196be9[_0xd7d1('0x49')]['ids']);}})[_0xd7d1('0x18')](respondWithStatusCode(_0x2464e8,null))['catch'](handleError(_0x2464e8,null));};exports[_0xd7d1('0x157')]=function(_0x513080,_0x40e115){var _0x1be009={},_0x3580c4={},_0x488c60={'count':0x0,'rows':[]};var _0x5b80ba=db[_0xd7d1('0x158')][_0xd7d1('0x45')];_0x3580c4['model']=_[_0xd7d1('0x5e')](_0x5b80ba);_0x3580c4[_0xd7d1('0x49')]=_[_0xd7d1('0x5e')](_0x513080[_0xd7d1('0x49')]);_0x3580c4[_0xd7d1('0xd4')]=_[_0xd7d1('0x60')](_0x3580c4[_0xd7d1('0x5c')],_0x3580c4[_0xd7d1('0x49')]);_0x3580c4[_0xd7d1('0xd4')]=_['concat'](_0x3580c4[_0xd7d1('0xd4')],['$and',_0xd7d1('0x159'),_0xd7d1('0x15a'),_0xd7d1('0x15b'),'$lt',_0xd7d1('0x15c'),'$ne',_0xd7d1('0x15d'),_0xd7d1('0x15e'),_0xd7d1('0x15f'),_0xd7d1('0x160'),'$in',_0xd7d1('0x161'),_0xd7d1('0x162'),'$notLike','$iLike','$notILike',_0xd7d1('0x162'),_0xd7d1('0x163'),_0xd7d1('0x164'),_0xd7d1('0x165'),_0xd7d1('0x166')]);_0x1be009['attributes']=_[_0xd7d1('0x60')](_0x3580c4['model'],qs['fields'](_0x513080[_0xd7d1('0x49')][_0xd7d1('0x61')]));_0x1be009['attributes']=_0x1be009['attributes'][_0xd7d1('0x53')]?_0x1be009[_0xd7d1('0x4d')]:_0x3580c4[_0xd7d1('0x5c')];if(!_0x513080[_0xd7d1('0x49')][_0xd7d1('0xde')](_0xd7d1('0xdf'))){_0x1be009['limit']=qs['limit'](_0x513080['query'][_0xd7d1('0x28')]);_0x1be009[_0xd7d1('0x27')]=qs[_0xd7d1('0x27')](_0x513080['query'][_0xd7d1('0x27')]);}_0x1be009['order']=qs[_0xd7d1('0xe1')](_0x513080[_0xd7d1('0x49')][_0xd7d1('0xe1')]);_0x1be009['where']=qs[_0xd7d1('0xd4')](_['pick'](_0x513080[_0xd7d1('0x49')],_0x3580c4[_0xd7d1('0xd4')]));if(_0x513080[_0xd7d1('0x49')][_0xd7d1('0x39')]){_0x1be009[_0xd7d1('0x48')]=_[_0xd7d1('0x63')](_0x1be009[_0xd7d1('0x48')],{'$or':_[_0xd7d1('0x3b')](_0x1be009[_0xd7d1('0x4d')],function(_0x55a7bb){var _0x105e13={};_0x105e13[_0x55a7bb]={'$like':'%'+_0x513080[_0xd7d1('0x49')]['filter']+'%'};return _0x105e13;})});}_0x1be009[_0xd7d1('0x48')]={'$and':[_0x1be009['where'],{'$or':[{'UserId':_0x513080[_0xd7d1('0x5b')]['id']},{'OwnerId':_0x513080['params']['id']}]}]};_0x1be009=_[_0xd7d1('0x63')]({},_0x1be009,_0x513080[_0xd7d1('0xd6')]);var _0xb298b8={'where':_0x1be009[_0xd7d1('0x48')]};return db[_0xd7d1('0x158')][_0xd7d1('0x2a')](_0xb298b8)['then'](function(_0x15ff3c){_0x488c60['count']=_0x15ff3c;if(_0x513080[_0xd7d1('0x49')][_0xd7d1('0x4a')]){_0x1be009[_0xd7d1('0x4b')]=[{'attributes':['id',_0xd7d1('0x167'),_0xd7d1('0x168'),'phone'],'model':db['CmContact'],'as':_0xd7d1('0x169')},{'attributes':['id',_0xd7d1('0x3e'),_0xd7d1('0x16a')],'model':db[_0xd7d1('0x16b')],'as':_0xd7d1('0xe0')}];}return db[_0xd7d1('0x158')]['findAll'](_0x1be009);})[_0xd7d1('0x18')](function(_0x53a776){_0x488c60[_0xd7d1('0x50')]=_0x53a776;return _0x488c60;})[_0xd7d1('0x18')](respondWithFilteredResult(_0x40e115,_0x1be009))[_0xd7d1('0x23')](handleError(_0x40e115,null));};exports[_0xd7d1('0x16c')]=function(_0x24445f,_0x3da368){if(!_[_0xd7d1('0x70')](_0x24445f[_0xd7d1('0x35')]['id'])&&(_0x24445f[_0xd7d1('0x35')][_0xd7d1('0x2f')]==_0xd7d1('0x33')||_0x24445f[_0xd7d1('0x35')][_0xd7d1('0x2f')]==_0xd7d1('0x35'))){return db[_0xd7d1('0x44')]['findOne']({'where':{'id':_0x24445f[_0xd7d1('0x5b')]['id']},'raw':!![]})[_0xd7d1('0x18')](function(_0x3c988e){return authService['retrieveApiKey'](_0x3c988e);})[_0xd7d1('0x18')](function(_0x2a9674){if(_0x2a9674){return _0x3da368[_0xd7d1('0x25')](0xc8)[_0xd7d1('0x2d')]({'api_key':_0x2a9674[_0xd7d1('0x16d')]});}else{return _0x3da368[_0xd7d1('0x25')](0xcc)[_0xd7d1('0x2d')]({'message':'No\x20API\x20access\x20key\x20found!'});}})['catch'](handleError(_0x3da368,0x193));}else{return _0x3da368[_0xd7d1('0x25')](0x191)[_0xd7d1('0x2d')]({'message':_0xd7d1('0x16e')});}};exports[_0xd7d1('0x16f')]=function(_0x471756,_0x1804ee){if(!_[_0xd7d1('0x70')](_0x471756['user']['id'])&&(_0x471756[_0xd7d1('0x35')][_0xd7d1('0x2f')]=='admin'||_0x471756[_0xd7d1('0x35')][_0xd7d1('0x2f')]=='user')){return db[_0xd7d1('0x44')][_0xd7d1('0x64')]({'where':{'id':_0x471756[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](function(_0x463d57){return authService[_0xd7d1('0x170')](_0x463d57);})[_0xd7d1('0x18')](function(_0x54d4a2){return db['User'][_0xd7d1('0x2e')]({'apiKeyIat':_0x54d4a2['iat'],'apiKeyNonce':_0x54d4a2[_0xd7d1('0x171')]},{'where':{'id':_0x471756[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](function(){return _0x1804ee[_0xd7d1('0x25')](0xc8)[_0xd7d1('0x2d')]({'api_key':_0x54d4a2[_0xd7d1('0x16d')]});});})['catch'](handleError(_0x1804ee,0x193));}else{return _0x1804ee[_0xd7d1('0x25')](0x191)[_0xd7d1('0x2d')]({'message':_0xd7d1('0x16e')});}};exports[_0xd7d1('0x172')]=function(_0x35ddfe,_0x694567){if(!_[_0xd7d1('0x70')](_0x35ddfe[_0xd7d1('0x35')]['id'])&&(_0x35ddfe[_0xd7d1('0x35')][_0xd7d1('0x2f')]==_0xd7d1('0x33')||_0x35ddfe[_0xd7d1('0x35')]['role']==_0xd7d1('0x35'))){return db[_0xd7d1('0x44')][_0xd7d1('0x64')]({'where':{'id':_0x35ddfe[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x694567,null))[_0xd7d1('0x18')](function(_0xf46399){if(_0xf46399&&_0xf46399[_0xd7d1('0x173')]&&_0xf46399['apiKeyIat'])return _0xf46399;else throw{'message':_0xd7d1('0x174')};})[_0xd7d1('0x18')](function(){return db['User'][_0xd7d1('0x2e')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x35ddfe['params']['id']}});})['then'](respondWithStatusCode(_0x694567,0xc8))['catch'](handleError(_0x694567,0x193));}else{return _0x694567[_0xd7d1('0x25')](0x191)[_0xd7d1('0x2d')]({'message':'You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.'});}};exports[_0xd7d1('0x175')]=function(_0xcf7906,_0x3174ba){var _0x56d73a=_0xcf7906[_0xd7d1('0x35')][_0xd7d1('0xb2')]({'plain':!![]});if(!_0x56d73a){return _0x3174ba['status'](0x191)[_0xd7d1('0x42')](_0xd7d1('0x176'));}else{Promise['resolve']()[_0xd7d1('0x18')](function(){if(_0xcf7906[_0xd7d1('0x49')][_0xd7d1('0x4c')]!==_0xd7d1('0x52'))return;return _0xcf7906['user'][_0xd7d1('0x177')]();})[_0xd7d1('0x18')](function(_0x5f8f4){if(!_0x5f8f4)return;return _0x5f8f4[_0xd7d1('0xb2')]({'plain':!![]});})[_0xd7d1('0x18')](function(_0x51f9b1){_0x56d73a['userSetting']=_0x51f9b1;return _0x3174ba[_0xd7d1('0x25')](0xc8)[_0xd7d1('0x2d')](_0x56d73a);});}};exports[_0xd7d1('0x178')]=function(_0x5bb0c0,_0x35e0d1){var _0xe6295d={'offset':0x0},_0x2b977a={'count':0x0,'rows':[]};Promise[_0xd7d1('0x119')]()['then'](function(){if(!_0x5bb0c0[_0xd7d1('0x49')][_0xd7d1('0x39')]&&!_0x5bb0c0['query'][_0xd7d1('0x179')]&&!_0x5bb0c0[_0xd7d1('0x49')][_0xd7d1('0x17a')])return[];return Promise[_0xd7d1('0x119')]()['then'](function(){var _0x55b0ea=[];if(!_[_0xd7d1('0x17b')](_0x5bb0c0[_0xd7d1('0x49')]['teams'])){_0x55b0ea['push'](db['Team']['findAll']({'attributes':['id',_0xd7d1('0x3e')],'where':{'id':_0x5bb0c0[_0xd7d1('0x49')][_0xd7d1('0x179')]}}));}if(!_[_0xd7d1('0x17b')](_0x5bb0c0[_0xd7d1('0x49')][_0xd7d1('0x17a')])){_0x55b0ea[_0xd7d1('0x4e')](db[_0xd7d1('0x16b')][_0xd7d1('0x4f')]({'attributes':['id','name'],'type':_0xd7d1('0x17c'),'where':{'id':_0x5bb0c0['query'][_0xd7d1('0x17a')]}}));}return Promise[_0xd7d1('0x59')](_0x55b0ea);})[_0xd7d1('0x18')](function(_0x586c59){var _0x4f5068=_[_0xd7d1('0x17d')](_0x586c59)['map'](function(_0x421aab){return _0x421aab[_0xd7d1('0x128')]({'attributes':['id',_0xd7d1('0x3e'),_0xd7d1('0x6c'),_0xd7d1('0xa5')],'raw':!![]});});return Promise[_0xd7d1('0x59')](_0x4f5068);})[_0xd7d1('0x18')](function(_0x5d3983){var _0x505b71=_[_0xd7d1('0x17d')](_0x5d3983);if(!_0x5bb0c0[_0xd7d1('0x49')][_0xd7d1('0x39')])return _0x505b71;if(_['isEmpty'](_0x505b71)){return db[_0xd7d1('0x44')][_0xd7d1('0x4f')]({'attributes':['id',_0xd7d1('0x3e'),'internal','online'],'where':{'role':'agent','$or':[db[_0xd7d1('0x72')][_0xd7d1('0x48')](db['sequelize']['fn'](_0xd7d1('0x17e'),db[_0xd7d1('0x72')][_0xd7d1('0x17f')](_0xd7d1('0x3e'))),{'$like':'%'+_0x5bb0c0[_0xd7d1('0x49')][_0xd7d1('0x39')][_0xd7d1('0xae')]()+'%'}),{'internal':{'$like':'%'+_0x5bb0c0[_0xd7d1('0x49')]['filter']+'%'}}]},'raw':!![]});}else{return _(_0x505b71)['flatten']()[_0xd7d1('0x39')](function(_0x4a12b4){return _0x4a12b4[_0xd7d1('0x3e')][_0xd7d1('0xae')]()['includes'](_0x5bb0c0[_0xd7d1('0x49')][_0xd7d1('0x39')][_0xd7d1('0xae')]())||_0x4a12b4['internal'][_0xd7d1('0x180')]()[_0xd7d1('0x3d')](_0x5bb0c0[_0xd7d1('0x49')][_0xd7d1('0x39')]);})[_0xd7d1('0x3c')]();}})['then'](function(_0x2be6c1){var _0x32d05f='name';var _0x48f59e=_0xd7d1('0x181');if(_0x5bb0c0[_0xd7d1('0x49')]['sort']){_0x48f59e=_0x5bb0c0[_0xd7d1('0x49')][_0xd7d1('0xe1')][0x0]==='-'?_0xd7d1('0x182'):_0xd7d1('0x181');_0x32d05f=_0x48f59e==='asc'?_0x5bb0c0[_0xd7d1('0x49')][_0xd7d1('0xe1')]:_0x5bb0c0[_0xd7d1('0x49')]['sort'][_0xd7d1('0x183')](0x1);}return _(_0x2be6c1)[_0xd7d1('0x184')]('id')[_0xd7d1('0x185')]([function(_0x373c5c){return _0x32d05f===_0xd7d1('0x3e')?_0x373c5c[_0x32d05f][_0xd7d1('0xae')]():_0x373c5c[_0x32d05f];}],[_0x48f59e])[_0xd7d1('0x3b')](function(_0xd71968){return _['pick'](_0xd71968,['id',_0xd7d1('0x3e'),'internal',_0xd7d1('0xa5')]);})[_0xd7d1('0x3c')]();})[_0xd7d1('0x18')](function(_0x3f7c43){return amiClient[_0xd7d1('0x17')](_0xd7d1('0x36'),_0x5bb0c0)['then'](function(_0x375c86){if(_0x375c86[_0xd7d1('0x1e')])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)');var _0x184a01=_0x375c86[_0xd7d1('0x22')];var _0x57bd8b=jayson[_0xd7d1('0x15')][_0xd7d1('0x16')]({'port':0x232c});return _0x57bd8b[_0xd7d1('0x17')](_0xd7d1('0x36'),_0x5bb0c0)['then'](function(_0x10a780){if(_0x10a780[_0xd7d1('0x1e')])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)');var _0xe9c83b=_0x10a780[_0xd7d1('0x22')];return _['merge']({},_0xe9c83b,_0x184a01);});})[_0xd7d1('0x18')](function(_0x69cda2){return _['map'](_0x3f7c43,function(_0x4632e0){var _0x2b660a=_[_0xd7d1('0x64')](_0x69cda2[_0xd7d1('0x50')],['id',_0x4632e0['id']]);if(!_0x2b660a||!_0x4632e0[_0xd7d1('0xa5')]){_0x4632e0['status']='offline';}else if(_0x2b660a[_0xd7d1('0xb5')]){_0x4632e0[_0xd7d1('0x25')]=_0xd7d1('0x10b');}else{_0x4632e0['status']=_['includes']([_0xd7d1('0x186'),_0xd7d1('0x187'),_0xd7d1('0x188'),_0xd7d1('0x189'),null,undefined],_0x2b660a[_0xd7d1('0x18a')])?'online':_0xd7d1('0x18b');}return _0x4632e0;});});});})[_0xd7d1('0x18')](function(_0x10c7e9){if(!_0x5bb0c0[_0xd7d1('0x49')]['hasOwnProperty']('nolimit')){_0xe6295d[_0xd7d1('0x28')]=qs[_0xd7d1('0x28')](_0x5bb0c0[_0xd7d1('0x49')][_0xd7d1('0x28')]||0xa);_0xe6295d[_0xd7d1('0x27')]=qs[_0xd7d1('0x27')](_0x5bb0c0[_0xd7d1('0x49')][_0xd7d1('0x27')]);}_0x2b977a[_0xd7d1('0x2a')]=_0x10c7e9[_0xd7d1('0x53')];_0x2b977a['rows']=_0xe6295d[_0xd7d1('0x28')]?_0x10c7e9[_0xd7d1('0x18c')](_0xe6295d[_0xd7d1('0x27')],_0xe6295d[_0xd7d1('0x27')]+_0xe6295d[_0xd7d1('0x28')]):_0x10c7e9;return _0x2b977a;})[_0xd7d1('0x18')](respondWithFilteredResult(_0x35e0d1,_0xe6295d))[_0xd7d1('0x23')](handleError(_0x35e0d1,null));};function get_open_tabs(_0x532c69,_0x49732a){var _0x3293f0=_0x532c69[_0xd7d1('0x18d')](0x0)['toUpperCase']()+_0x532c69['slice'](0x1);var _0x3a6b8f={'type':db[_0xd7d1('0x97')][_0xd7d1('0x18e')]['SELECT'],'raw':!![]};return new Promise(function(_0x4b9927,_0x46b014){var _0x131211=squel[_0xd7d1('0x18f')]()[_0xd7d1('0x190')]('ui.'+_0x3293f0+_0xd7d1('0x191'),'id')[_0xd7d1('0x190')](_0xd7d1('0x192'))[_0xd7d1('0x75')](_0xd7d1('0x193')+_0x532c69+_0xd7d1('0x194'),'ui')[_0xd7d1('0x48')](_0xd7d1('0x195'),_0x49732a['id']);return db['sequelize'][_0xd7d1('0x49')](_0x131211[_0xd7d1('0x180')](),_0x3a6b8f)[_0xd7d1('0x18')](function(_0x7bb42){_0x49732a[_0x3293f0+_0xd7d1('0x196')]=_0x7bb42;_0x4b9927(_0x7bb42);})[_0xd7d1('0x23')](function(_0x3669ef){_0x46b014(_0x3669ef);});});}
\ No newline at end of file
index e368d85..b9f2d66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d71=['User','save','remove','emit','exports'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x3d71,0xb9));var _0x13d7=function(_0x4453a9,_0x217f6c){_0x4453a9=_0x4453a9-0x0;var _0x2828ea=_0x3d71[_0x4453a9];return _0x2828ea;};'use strict';var EventEmitter=require('events');var User=require('../../mysqldb')['db'][_0x13d7('0x0')];var UserEvents=new EventEmitter();UserEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x13d7('0x1'),'afterUpdate':'update','afterDestroy':_0x13d7('0x2')};function emitEvent(_0x36a78b){return function(_0x180c32,_0x59fd2d,_0x1472b5){UserEvents[_0x13d7('0x3')](_0x36a78b+':'+_0x180c32['id'],_0x180c32);UserEvents[_0x13d7('0x3')](_0x36a78b,_0x180c32);_0x1472b5(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];User['hook'](e,emitEvent(event));}}module[_0x13d7('0x4')]=UserEvents;
\ No newline at end of file
+var _0x07b7=['exports','events','../../mysqldb','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x48f95e,_0x236a1c){var _0x197d5b=function(_0x1f9a25){while(--_0x1f9a25){_0x48f95e['push'](_0x48f95e['shift']());}};_0x197d5b(++_0x236a1c);}(_0x07b7,0x187));var _0x707b=function(_0x1d8b10,_0x9603a6){_0x1d8b10=_0x1d8b10-0x0;var _0x123f31=_0x07b7[_0x1d8b10];return _0x123f31;};'use strict';var EventEmitter=require(_0x707b('0x0'));var User=require(_0x707b('0x1'))['db']['User'];var UserEvents=new EventEmitter();UserEvents[_0x707b('0x2')](0x0);var events={'afterCreate':_0x707b('0x3'),'afterUpdate':_0x707b('0x4'),'afterDestroy':_0x707b('0x5')};function emitEvent(_0x5ceffc){return function(_0x165dd2,_0x1e87c3,_0x331da6){UserEvents[_0x707b('0x6')](_0x5ceffc+':'+_0x165dd2['id'],_0x165dd2);UserEvents['emit'](_0x5ceffc,_0x165dd2);_0x331da6(null);};}for(var e in events){if(events[_0x707b('0x7')](e)){var event=events[e];User[_0x707b('0x8')](e,emitEvent(event));}}module[_0x707b('0x9')]=UserEvents;
\ No newline at end of file
index 9094f8d..8d7186d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9221=['prefix','push','Set','CDR(type)=%s','record','merge','${UNIQUEID}.%s,a','recordingFormat','auth','password','ChanSpy','SIP/%s,%s','options','join','WAV','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','name','SIP/%s,,tTxX','Hangup','priority','defaults','VoiceChanSpy','findAll','internal','catch','exports','models','User','users','utf8','utf8_bin','userProfileId','undefined','resolve','UserProfile','find','privacyEnabled','then','updateMd5Password','updatePassword','changed','concat','userSetting','createUserSetting','error','VoiceExtension','chanspy','bulkCreate','destroy','Missing\x20Callback','randomBytes','base64','salt','pbkdf2Sync','sha1','toString','pbkdf2','provider','Invalid\x20password','makeSalt','encryptPassword','md5secret',':asterisk:','client','request','Agents','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(AMI)','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(Routing)','result','manual','voice','http','QueuePause','Unable\x20to\x20unpause\x20agent\x20%s:$s','message','UserVoiceQueueRt','update','findOne','PAUSE','MemberReport','isArray','map','all','voicePause','mailPause','chatPause','faxPause','smsPause','whatsappPause','Pause','getRealtimeData','../../config/utils','getChannels','forEach','setDataValue','crypto','util','moment','lodash','./user.attributes','google','length','context','from-sip','system','format'];(function(_0x49b207,_0x408ade){var _0x2dc8fa=function(_0x150975){while(--_0x150975){_0x49b207['push'](_0x49b207['shift']());}};_0x2dc8fa(++_0x408ade);}(_0x9221,0x64));var _0x1922=function(_0x3c3ec7,_0x309339){_0x3c3ec7=_0x3c3ec7-0x0;var _0x23e52c=_0x9221[_0x3c3ec7];return _0x23e52c;};'use strict';var BPromise=require('bluebird');var crypto=require(_0x1922('0x0'));var util=require(_0x1922('0x1'));var md5=require('md5');var moment=require(_0x1922('0x2'));var _=require(_0x1922('0x3'));var jayson=require('jayson/promise');var attributes=require(_0x1922('0x4'));var authTypes=[_0x1922('0x5')];var validatePresenceOf=function(_0x459eee){return _0x459eee&&_0x459eee[_0x1922('0x6')];};var getChanSpyApplications=function(_0x263f7f,_0x1944a5,_0x1351a0){var _0x5aa05c={'context':_0x263f7f[_0x1922('0x7')]||_0x1922('0x8'),'type':_0x1922('0x9'),'isApp':![],'UserId':_0x263f7f['id']};var _0x47c225=[];for(var _0x4632ac=0x0,_0x5e9060=0x1;_0x4632ac<_0x1351a0[_0x1922('0x6')];_0x4632ac++,_0x5e9060=0x1){var _0xc1ae7={'exten':util[_0x1922('0xa')]('%s%s',_0x1351a0[_0x4632ac][_0x1922('0xb')],_0x1944a5),'ChanSpyId':_0x1351a0[_0x4632ac]['id']};_0x47c225[_0x1922('0xc')](_['merge']({'app':_0x1922('0xd'),'appdata':util['format'](_0x1922('0xe'),'chanspy'),'priority':_0x5e9060++},_0x5aa05c,_0xc1ae7));if(_0x1351a0[_0x4632ac][_0x1922('0xf')]){_0x47c225[_0x1922('0xc')](_[_0x1922('0x10')]({'app':'MixMonitor','appdata':util['format'](_0x1922('0x11'),_0x1351a0[_0x4632ac][_0x1922('0x12')]),'priority':_0x5e9060++},_0x5aa05c,_0xc1ae7));}if(_0x1351a0[_0x4632ac][_0x1922('0x13')]){_0x47c225[_0x1922('0xc')](_[_0x1922('0x10')]({'app':'Authenticate','appdata':_0x1351a0[_0x4632ac][_0x1922('0x14')],'priority':_0x5e9060++},_0x5aa05c,_0xc1ae7));}_0x47c225['push'](_[_0x1922('0x10')]({'app':_0x1922('0x15'),'appdata':util[_0x1922('0xa')](_0x1922('0x16'),_0x263f7f['name'],_0x1351a0[_0x4632ac][_0x1922('0x17')]?_0x1351a0[_0x4632ac][_0x1922('0x17')][_0x1922('0x18')](''):''),'priority':_0x5e9060++},_0x5aa05c,_0xc1ae7));if(_0x1351a0[_0x4632ac]['record']){_0x47c225['push'](_[_0x1922('0x10')]({'app':'StopMixMonitor','priority':_0x5e9060++},_0x5aa05c,_0xc1ae7));}}return _0x47c225;};var getUserApplications=function(_0x3c6f9a,_0x1266c0){var _0x54848e=['wav',_0x1922('0x19'),'gsm'];var _0x23984c={'context':_0x3c6f9a[_0x1922('0x7')]||_0x1922('0x8'),'exten':_0x1266c0,'type':_0x1922('0x9'),'isApp':![],'UserId':_0x3c6f9a['id']};var _0x5dacc5=[{'app':_0x1922('0xd'),'appdata':_0x1922('0x1a')}];if(_0x3c6f9a[_0x1922('0x1b')]&&_[_0x1922('0x1c')](_0x54848e,_0x3c6f9a['extensionMonitor'])){_0x5dacc5[_0x1922('0xc')]({'app':_0x1922('0xd'),'appdata':_0x1922('0x1d')});_0x5dacc5['push']({'app':_0x1922('0xd'),'appdata':util['format']('_XCALLY_MIXMONITOR_FORMAT=%s',_0x3c6f9a[_0x1922('0x1b')])});_0x5dacc5[_0x1922('0xc')]({'app':_0x1922('0x1e'),'appdata':util[_0x1922('0xa')](_0x1922('0x1f'),_0x3c6f9a[_0x1922('0x20')])});}else{_0x5dacc5[_0x1922('0xc')]({'app':_0x1922('0x1e'),'appdata':util[_0x1922('0xa')](_0x1922('0x21'),_0x3c6f9a[_0x1922('0x20')])});}_0x5dacc5['push']({'app':_0x1922('0x22')});for(var _0x58ebb5=0x0;_0x58ebb5<_0x5dacc5[_0x1922('0x6')];_0x58ebb5++){_0x5dacc5[_0x58ebb5][_0x1922('0x23')]=_0x58ebb5+0x1;_0x5dacc5[_0x58ebb5]=_[_0x1922('0x24')](_0x5dacc5[_0x58ebb5],_0x23984c);}return _0x5dacc5;};var getChanSpyPromise=function(_0x392cc9,_0x1bb708){return new BPromise(function(_0x1ea3bf,_0xe37ecc){return _0x392cc9[_0x1922('0x25')][_0x1922('0x26')]()['then'](function(_0x17ecaa){if(_0x17ecaa){var _0x153ebd=getChanSpyApplications(_0x1bb708,_0x1bb708[_0x1922('0x27')],_0x17ecaa);if(_0x1bb708[_0x1922('0x27')]!=_0x1bb708[_0x1922('0x20')]){_0x153ebd=_0x153ebd['concat'](getChanSpyApplications(_0x1bb708,_0x1bb708[_0x1922('0x20')],_0x17ecaa));}return _0x1ea3bf(_0x153ebd);}return _0x1ea3bf([]);})[_0x1922('0x28')](function(_0x1d783c){_0xe37ecc(_0x1d783c);});});};module[_0x1922('0x29')]=function(_0x2a4215){var _0x474e85=_0x2a4215[_0x1922('0x2a')];return _0x2a4215['define'](_0x1922('0x2b'),attributes,{'tableName':_0x1922('0x2c'),'charset':_0x1922('0x2d'),'collate':_0x1922('0x2e'),'hooks':{'beforeCreate':function(_0x40234e,_0x3f3914,_0x483910){var _0xff58ab=typeof _0x40234e[_0x1922('0x2f')]===_0x1922('0x30')?BPromise[_0x1922('0x31')](null):_0x474e85[_0x1922('0x32')][_0x1922('0x33')]({'where':{'id':_0x40234e[_0x1922('0x2f')]}});_0xff58ab['then'](function(_0x349f04){if(_0x349f04){_0x40234e[_0x1922('0x34')]=_0x349f04[_0x1922('0x34')];}})[_0x1922('0x35')](function(){_0x40234e[_0x1922('0x36')]();_0x40234e[_0x1922('0x37')](_0x483910);})['catch'](function(_0x28a789){_0x483910(_0x28a789);});},'beforeUpdate':function(_0x83fd0f,_0x5eaa0b,_0xcf2991){Promise[_0x1922('0x31')]()['then'](function(){if(_0x83fd0f[_0x1922('0x38')](_0x1922('0x2f'))===![])return;return _0x474e85[_0x1922('0x32')]['find']({'where':{'id':_0x83fd0f[_0x1922('0x2f')]}})[_0x1922('0x35')](function(_0x51eb82){if(_0x51eb82)_0x83fd0f[_0x1922('0x34')]=_0x51eb82[_0x1922('0x34')];return;});})[_0x1922('0x35')](function(){if(_0x83fd0f['changed'](_0x1922('0x14'))){_0x83fd0f['updateMd5Password']();return _0x83fd0f[_0x1922('0x37')](_0xcf2991);}_0xcf2991();})['catch'](function(_0x53572f){_0xcf2991(_0x53572f);});},'afterCreate':function(_0x2aec14,_0x350136,_0x5f423d){var _0x119bba=getUserApplications(_0x2aec14,_0x2aec14[_0x1922('0x27')]);if(_0x2aec14[_0x1922('0x27')]!=_0x2aec14[_0x1922('0x20')]){_0x119bba=_0x119bba[_0x1922('0x39')](getUserApplications(_0x2aec14,_0x2aec14['name']));}return Promise['resolve']()[_0x1922('0x35')](function(){if(!_0x2aec14[_0x1922('0x3a')]){return _0x2aec14[_0x1922('0x3b')]({'clientSideLoggingLevel':_0x1922('0x3c'),'clientSideLoggingEnabled':![]});}})[_0x1922('0x35')](function(){return _0x474e85[_0x1922('0x3d')]['bulkCreate'](_0x119bba);})[_0x1922('0x35')](function(){if(_0x2aec14[_0x1922('0x3e')]){return getChanSpyPromise(_0x474e85,_0x2aec14);}})[_0x1922('0x35')](function(_0x8c9e3a){if(_0x8c9e3a&&_0x8c9e3a[_0x1922('0x6')]){return _0x474e85[_0x1922('0x3d')][_0x1922('0x3f')](_0x8c9e3a);}})['then'](function(){_0x5f423d();})[_0x1922('0x28')](function(_0x1e474b){_0x5f423d(_0x1e474b);});},'afterUpdate':function(_0x3f9f64,_0x5df17d,_0x18a891){return BPromise['resolve']()[_0x1922('0x35')](function(){if(_0x3f9f64[_0x1922('0x38')](_0x1922('0x3e'))||_0x3f9f64[_0x1922('0x38')](_0x1922('0x7'))){return _0x474e85['VoiceExtension'][_0x1922('0x40')]({'where':{'UserId':_0x3f9f64['id'],'type':_0x1922('0x9'),'ChanSpyId':{'$ne':null}}})[_0x1922('0x35')](function(){if(_0x3f9f64[_0x1922('0x3e')]){return getChanSpyPromise(_0x474e85,_0x3f9f64)['then'](function(_0x24dce1){if(_0x24dce1&&_0x24dce1['length']){return _0x474e85[_0x1922('0x3d')][_0x1922('0x3f')](_0x24dce1);}});}});}})[_0x1922('0x35')](function(){if(_0x3f9f64[_0x1922('0x38')](_0x1922('0x1b'))||_0x3f9f64[_0x1922('0x38')](_0x1922('0x7'))){return _0x474e85['VoiceExtension']['destroy']({'where':{'UserId':_0x3f9f64['id'],'type':'system','ChanSpyId':null}})[_0x1922('0x35')](function(){var _0x323af7=getUserApplications(_0x3f9f64,_0x3f9f64[_0x1922('0x27')]);if(_0x3f9f64[_0x1922('0x27')]!=_0x3f9f64[_0x1922('0x20')]){_0x323af7=_0x323af7[_0x1922('0x39')](getUserApplications(_0x3f9f64,_0x3f9f64[_0x1922('0x20')]));}return _0x474e85[_0x1922('0x3d')]['bulkCreate'](_0x323af7);});}})[_0x1922('0x35')](function(){_0x18a891();})[_0x1922('0x28')](function(_0x4ed204){_0x18a891(_0x4ed204);});},'afterDestroy':function(_0x3f7b65){return _0x474e85[_0x1922('0x3d')][_0x1922('0x40')]({'where':{'UserId':_0x3f7b65['id'],'type':_0x1922('0x9')}});}},'instanceMethods':{'authenticate':function(_0x1e6d2f,_0x5b51c2){if(!_0x5b51c2){return this['password']===this['encryptPassword'](_0x1e6d2f);}var _0x2a723e=this;this['encryptPassword'](_0x1e6d2f,function(_0x5e537c,_0x28adf1){if(_0x5e537c){_0x5b51c2(_0x5e537c);}if(_0x2a723e[_0x1922('0x14')]===_0x28adf1){_0x5b51c2(null,!![]);}else{_0x5b51c2(null,![]);}});},'makeSalt':function(_0x22d668,_0x5eab61){var _0x5bacf0=0x10;if(typeof arguments[0x0]==='function'){_0x5eab61=arguments[0x0];_0x22d668=_0x5bacf0;}else if(typeof arguments[0x1]==='function'){_0x5eab61=arguments[0x1];}else{throw new Error(_0x1922('0x41'));}if(!_0x22d668){_0x22d668=_0x5bacf0;}return crypto[_0x1922('0x42')](_0x22d668,function(_0x26d3a0,_0x2fea1c){if(_0x26d3a0){_0x5eab61(_0x26d3a0);}return _0x5eab61(null,_0x2fea1c['toString'](_0x1922('0x43')));});},'encryptPassword':function(_0x245807,_0x35d515){if(!_0x245807||!this[_0x1922('0x44')]){return _0x35d515?_0x35d515(null):null;}var _0x494b84=0x2710;var _0x10c090=0x40;var _0x2dfcb5=Buffer['from'](this[_0x1922('0x44')],_0x1922('0x43'));if(!_0x35d515){return crypto[_0x1922('0x45')](_0x245807,_0x2dfcb5,_0x494b84,_0x10c090,_0x1922('0x46'))[_0x1922('0x47')](_0x1922('0x43'));}return crypto[_0x1922('0x48')](_0x245807,_0x2dfcb5,_0x494b84,_0x10c090,_0x1922('0x46'),function(_0xeb183e,_0xc5b7da){if(_0xeb183e){_0x35d515(_0xeb183e);}return _0x35d515(null,_0xc5b7da[_0x1922('0x47')](_0x1922('0x43')));});},'updatePassword':function(_0x3e6408){if(!this[_0x1922('0x14')]){return _0x3e6408(null);}if(!validatePresenceOf(this[_0x1922('0x14')])&&authTypes['indexOf'](this[_0x1922('0x49')])===-0x1){_0x3e6408(new Error(_0x1922('0x4a')));}var _0x98318b=this;this[_0x1922('0x4b')](function(_0x4b3836,_0x505472){if(_0x4b3836){return _0x3e6408(_0x4b3836);}_0x98318b['salt']=_0x505472;_0x98318b[_0x1922('0x4c')](_0x98318b[_0x1922('0x14')],function(_0x1eef02,_0x46fb40){if(_0x1eef02){_0x3e6408(_0x1eef02);}_0x98318b[_0x1922('0x14')]=_0x46fb40;_0x3e6408(null);});});},'updateMd5Password':function(){this[_0x1922('0x4d')]=md5(this[_0x1922('0x20')]+_0x1922('0x4e')+this[_0x1922('0x14')]);return this['md5secret'];},'getRealtimeData':function(){var _0x229d41={'id':this['id']};var _0x4bb417=jayson[_0x1922('0x4f')]['http']({'port':0x232a});var _0x173601=jayson[_0x1922('0x4f')]['http']({'port':0x232c});var _0x1c1997={};var _0x5bbfc2={};return _0x4bb417[_0x1922('0x50')](_0x1922('0x51'),_0x229d41)[_0x1922('0x35')](function(_0xd6ecb8){if(_0xd6ecb8[_0x1922('0x3c')]){throw new Error(_0x1922('0x52'));}_0x1c1997=_0xd6ecb8['result'];return _0x173601[_0x1922('0x50')](_0x1922('0x51'),_0x229d41);})[_0x1922('0x35')](function(_0xf878a8){if(_0xf878a8[_0x1922('0x3c')]){throw new Error(_0x1922('0x53'));}_0x5bbfc2=_0xf878a8[_0x1922('0x54')];var _0x39f5da=_[_0x1922('0x10')]({},_0x1c1997,_0x5bbfc2);return _0x39f5da;})[_0x1922('0x28')](function(_0x41f53f){throw _0x41f53f;});},'unpause':function(_0x4ff467,_0xb1d467=_0x1922('0x55')){var _0x2a067d=this;var _0x23e688={};return Promise[_0x1922('0x31')]()[_0x1922('0x35')](function(){if(!_0x4ff467||_0x4ff467===_0x1922('0x56')&&_0xb1d467===_0x1922('0x55')){var _0x2cc3a3=jayson[_0x1922('0x4f')][_0x1922('0x57')]({'port':0x232a});return _0x2cc3a3['request'](_0x1922('0x58'),{'id':_0x2a067d['id'],'name':_0x2a067d[_0x1922('0x20')],'pause':![]})[_0x1922('0x35')](function(_0x481d81){if(_0x481d81[_0x1922('0x3c')]){throw new Error(util[_0x1922('0xa')](_0x1922('0x59'),_0x2a067d['id'],_0x2a067d['name']));}return _0x481d81['result'][_0x1922('0x5a')];});}})['then'](function(){if(!_0x4ff467||_0x4ff467===_0x1922('0x56')){return _0x474e85[_0x1922('0x5b')][_0x1922('0x5c')]({'paused':0x0},{'where':{'UserId':_0x2a067d['id']},'individualHooks':!![]});}})[_0x1922('0x35')](function(){var _0x51a42d=!_0x4ff467?_0x1922('0x26'):_0x1922('0x5d');var _0x20a5ec={'membername':_0x2a067d[_0x1922('0x20')],'type':_0x1922('0x5e'),'exitAt':null};if(_0x4ff467){_0x20a5ec['channel']=_0x4ff467;}return _0x474e85[_0x1922('0x5f')][_0x51a42d]({'where':_0x20a5ec});})['then'](function(_0x3cc184){if(_0x3cc184){var _0x6fadbd=Array[_0x1922('0x60')](_0x3cc184)?_0x3cc184:[_0x3cc184];var _0x545467=_0x6fadbd[_0x1922('0x61')](function(_0x577174){return _0x577174['update']({'exitAt':moment()[_0x1922('0xa')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0xb1d467});});return Promise[_0x1922('0x62')](_0x545467);}})[_0x1922('0x35')](function(){if(!_0x4ff467){_0x23e688[_0x1922('0x63')]=![];_0x23e688[_0x1922('0x64')]=![];_0x23e688[_0x1922('0x65')]=![];_0x23e688[_0x1922('0x66')]=![];_0x23e688[_0x1922('0x67')]=![];_0x23e688[_0x1922('0x68')]=![];_0x23e688['openchannelPause']=![];}else{_0x23e688[_0x4ff467+_0x1922('0x69')]=![];}return _0x2a067d[_0x1922('0x6a')]();})[_0x1922('0x35')](function(_0x41a759){var _0x38d4d2=require(_0x1922('0x6b'));var _0xfd2ca4=_0x38d4d2[_0x1922('0x6c')]();_0xfd2ca4[_0x1922('0x6d')](function(_0x2ee082){var _0x1e7e00=_0x2ee082+'Status';_0x2a067d[_0x1922('0x6e')]([_0x1e7e00],_0x41a759[_0x1e7e00]);});return _0x2a067d[_0x1922('0x5c')](_0x23e688);})[_0x1922('0x28')](function(_0x413e52){throw _0x413e52;});}}});};
\ No newline at end of file
+var _0x7da7=['error','VoiceExtension','destroy','bulkCreate','encryptPassword','function','Missing\x20Callback','randomBytes','toString','base64','salt','from','pbkdf2Sync','sha1','pbkdf2','indexOf','provider','Invalid\x20password','makeSalt',':asterisk:','md5secret','client','http','request','Agents','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(AMI)','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(Routing)','result','voice','manual','Unable\x20to\x20unpause\x20agent\x20%s:$s','message','UserVoiceQueueRt','update','PAUSE','MemberReport','isArray','map','YYYY-MM-DD\x20HH:mm:ss','all','voicePause','mailPause','chatPause','smsPause','openchannelPause','Pause','getRealtimeData','../../config/utils','getChannels','forEach','setDataValue','bluebird','crypto','util','lodash','jayson/promise','google','from-sip','system','format','%s%s','push','merge','Set','chanspy','record','${UNIQUEID}.%s,a','auth','Authenticate','ChanSpy','SIP/%s,%s','name','StopMixMonitor','wav','WAV','context','CDR(type)=internal','extensionMonitor','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','Hangup','length','priority','defaults','VoiceChanSpy','findAll','then','internal','concat','catch','models','define','User','users','utf8','utf8_bin','undefined','resolve','UserProfile','find','userProfileId','privacyEnabled','changed','password','updateMd5Password','userSetting','createUserSetting'];(function(_0x243764,_0x3e9198){var _0x994f88=function(_0x57f597){while(--_0x57f597){_0x243764['push'](_0x243764['shift']());}};_0x994f88(++_0x3e9198);}(_0x7da7,0x10d));var _0x77da=function(_0x5c9307,_0x5b97e4){_0x5c9307=_0x5c9307-0x0;var _0x373e29=_0x7da7[_0x5c9307];return _0x373e29;};'use strict';var BPromise=require(_0x77da('0x0'));var crypto=require(_0x77da('0x1'));var util=require(_0x77da('0x2'));var md5=require('md5');var moment=require('moment');var _=require(_0x77da('0x3'));var jayson=require(_0x77da('0x4'));var attributes=require('./user.attributes');var authTypes=[_0x77da('0x5')];var validatePresenceOf=function(_0x37b3d9){return _0x37b3d9&&_0x37b3d9['length'];};var getChanSpyApplications=function(_0x19331c,_0xc54a12,_0x47da81){var _0x30afe0={'context':_0x19331c['context']||_0x77da('0x6'),'type':_0x77da('0x7'),'isApp':![],'UserId':_0x19331c['id']};var _0x37c5ab=[];for(var _0x910e5b=0x0,_0x252128=0x1;_0x910e5b<_0x47da81['length'];_0x910e5b++,_0x252128=0x1){var _0x40c86e={'exten':util[_0x77da('0x8')](_0x77da('0x9'),_0x47da81[_0x910e5b]['prefix'],_0xc54a12),'ChanSpyId':_0x47da81[_0x910e5b]['id']};_0x37c5ab[_0x77da('0xa')](_[_0x77da('0xb')]({'app':_0x77da('0xc'),'appdata':util[_0x77da('0x8')]('CDR(type)=%s',_0x77da('0xd')),'priority':_0x252128++},_0x30afe0,_0x40c86e));if(_0x47da81[_0x910e5b][_0x77da('0xe')]){_0x37c5ab[_0x77da('0xa')](_['merge']({'app':'MixMonitor','appdata':util[_0x77da('0x8')](_0x77da('0xf'),_0x47da81[_0x910e5b]['recordingFormat']),'priority':_0x252128++},_0x30afe0,_0x40c86e));}if(_0x47da81[_0x910e5b][_0x77da('0x10')]){_0x37c5ab[_0x77da('0xa')](_[_0x77da('0xb')]({'app':_0x77da('0x11'),'appdata':_0x47da81[_0x910e5b]['password'],'priority':_0x252128++},_0x30afe0,_0x40c86e));}_0x37c5ab[_0x77da('0xa')](_['merge']({'app':_0x77da('0x12'),'appdata':util[_0x77da('0x8')](_0x77da('0x13'),_0x19331c[_0x77da('0x14')],_0x47da81[_0x910e5b]['options']?_0x47da81[_0x910e5b]['options']['join'](''):''),'priority':_0x252128++},_0x30afe0,_0x40c86e));if(_0x47da81[_0x910e5b]['record']){_0x37c5ab[_0x77da('0xa')](_[_0x77da('0xb')]({'app':_0x77da('0x15'),'priority':_0x252128++},_0x30afe0,_0x40c86e));}}return _0x37c5ab;};var getUserApplications=function(_0x335dcb,_0x19a00c){var _0x12d2b1=[_0x77da('0x16'),_0x77da('0x17'),'gsm'];var _0x492063={'context':_0x335dcb[_0x77da('0x18')]||_0x77da('0x6'),'exten':_0x19a00c,'type':'system','isApp':![],'UserId':_0x335dcb['id']};var _0x45a122=[{'app':_0x77da('0xc'),'appdata':_0x77da('0x19')}];if(_0x335dcb['extensionMonitor']&&_['includes'](_0x12d2b1,_0x335dcb[_0x77da('0x1a')])){_0x45a122['push']({'app':_0x77da('0xc'),'appdata':_0x77da('0x1b')});_0x45a122[_0x77da('0xa')]({'app':_0x77da('0xc'),'appdata':util[_0x77da('0x8')](_0x77da('0x1c'),_0x335dcb[_0x77da('0x1a')])});_0x45a122['push']({'app':'Dial','appdata':util[_0x77da('0x8')](_0x77da('0x1d'),_0x335dcb[_0x77da('0x14')])});}else{_0x45a122[_0x77da('0xa')]({'app':'Dial','appdata':util[_0x77da('0x8')](_0x77da('0x1e'),_0x335dcb[_0x77da('0x14')])});}_0x45a122[_0x77da('0xa')]({'app':_0x77da('0x1f')});for(var _0x5997b6=0x0;_0x5997b6<_0x45a122[_0x77da('0x20')];_0x5997b6++){_0x45a122[_0x5997b6][_0x77da('0x21')]=_0x5997b6+0x1;_0x45a122[_0x5997b6]=_[_0x77da('0x22')](_0x45a122[_0x5997b6],_0x492063);}return _0x45a122;};var getChanSpyPromise=function(_0x2913f7,_0x496ecd){return new BPromise(function(_0x5b4638,_0x4d395a){return _0x2913f7[_0x77da('0x23')][_0x77da('0x24')]()[_0x77da('0x25')](function(_0x3394d6){if(_0x3394d6){var _0x34228f=getChanSpyApplications(_0x496ecd,_0x496ecd['internal'],_0x3394d6);if(_0x496ecd[_0x77da('0x26')]!=_0x496ecd[_0x77da('0x14')]){_0x34228f=_0x34228f[_0x77da('0x27')](getChanSpyApplications(_0x496ecd,_0x496ecd[_0x77da('0x14')],_0x3394d6));}return _0x5b4638(_0x34228f);}return _0x5b4638([]);})[_0x77da('0x28')](function(_0x46e6b4){_0x4d395a(_0x46e6b4);});});};module['exports']=function(_0x165a7f){var _0x228851=_0x165a7f[_0x77da('0x29')];return _0x165a7f[_0x77da('0x2a')](_0x77da('0x2b'),attributes,{'tableName':_0x77da('0x2c'),'charset':_0x77da('0x2d'),'collate':_0x77da('0x2e'),'hooks':{'beforeCreate':function(_0x5b9b05,_0x5e8d1e,_0x1366b4){var _0x8e6181=typeof _0x5b9b05['userProfileId']===_0x77da('0x2f')?BPromise[_0x77da('0x30')](null):_0x228851[_0x77da('0x31')][_0x77da('0x32')]({'where':{'id':_0x5b9b05[_0x77da('0x33')]}});_0x8e6181[_0x77da('0x25')](function(_0x20d1cc){if(_0x20d1cc){_0x5b9b05['privacyEnabled']=_0x20d1cc[_0x77da('0x34')];}})['then'](function(){_0x5b9b05['updateMd5Password']();_0x5b9b05['updatePassword'](_0x1366b4);})[_0x77da('0x28')](function(_0x53543a){_0x1366b4(_0x53543a);});},'beforeUpdate':function(_0x19bfd3,_0xdac1a4,_0xce9df2){Promise[_0x77da('0x30')]()[_0x77da('0x25')](function(){if(_0x19bfd3[_0x77da('0x35')](_0x77da('0x33'))===![])return;return _0x228851['UserProfile'][_0x77da('0x32')]({'where':{'id':_0x19bfd3[_0x77da('0x33')]}})[_0x77da('0x25')](function(_0x32785f){if(_0x32785f)_0x19bfd3[_0x77da('0x34')]=_0x32785f[_0x77da('0x34')];return;});})['then'](function(){if(_0x19bfd3[_0x77da('0x35')](_0x77da('0x36'))){_0x19bfd3[_0x77da('0x37')]();return _0x19bfd3['updatePassword'](_0xce9df2);}_0xce9df2();})[_0x77da('0x28')](function(_0x505ffb){_0xce9df2(_0x505ffb);});},'afterCreate':function(_0x4e1e31,_0x599e21,_0x59abca){var _0x19f9f7=getUserApplications(_0x4e1e31,_0x4e1e31[_0x77da('0x26')]);if(_0x4e1e31[_0x77da('0x26')]!=_0x4e1e31['name']){_0x19f9f7=_0x19f9f7[_0x77da('0x27')](getUserApplications(_0x4e1e31,_0x4e1e31['name']));}return Promise[_0x77da('0x30')]()['then'](function(){if(!_0x4e1e31[_0x77da('0x38')]){return _0x4e1e31[_0x77da('0x39')]({'clientSideLoggingLevel':_0x77da('0x3a'),'clientSideLoggingEnabled':![]});}})[_0x77da('0x25')](function(){return _0x228851[_0x77da('0x3b')]['bulkCreate'](_0x19f9f7);})[_0x77da('0x25')](function(){if(_0x4e1e31[_0x77da('0xd')]){return getChanSpyPromise(_0x228851,_0x4e1e31);}})[_0x77da('0x25')](function(_0x2f14f4){if(_0x2f14f4&&_0x2f14f4[_0x77da('0x20')]){return _0x228851[_0x77da('0x3b')]['bulkCreate'](_0x2f14f4);}})[_0x77da('0x25')](function(){_0x59abca();})[_0x77da('0x28')](function(_0x21de41){_0x59abca(_0x21de41);});},'afterUpdate':function(_0x2dfeca,_0x7d11f9,_0x25f65f){return BPromise['resolve']()[_0x77da('0x25')](function(){if(_0x2dfeca['changed'](_0x77da('0xd'))||_0x2dfeca[_0x77da('0x35')](_0x77da('0x18'))){return _0x228851['VoiceExtension'][_0x77da('0x3c')]({'where':{'UserId':_0x2dfeca['id'],'type':_0x77da('0x7'),'ChanSpyId':{'$ne':null}}})[_0x77da('0x25')](function(){if(_0x2dfeca[_0x77da('0xd')]){return getChanSpyPromise(_0x228851,_0x2dfeca)[_0x77da('0x25')](function(_0x3760b5){if(_0x3760b5&&_0x3760b5[_0x77da('0x20')]){return _0x228851[_0x77da('0x3b')][_0x77da('0x3d')](_0x3760b5);}});}});}})['then'](function(){if(_0x2dfeca[_0x77da('0x35')](_0x77da('0x1a'))||_0x2dfeca[_0x77da('0x35')](_0x77da('0x18'))){return _0x228851[_0x77da('0x3b')][_0x77da('0x3c')]({'where':{'UserId':_0x2dfeca['id'],'type':'system','ChanSpyId':null}})['then'](function(){var _0x240d7b=getUserApplications(_0x2dfeca,_0x2dfeca[_0x77da('0x26')]);if(_0x2dfeca[_0x77da('0x26')]!=_0x2dfeca[_0x77da('0x14')]){_0x240d7b=_0x240d7b[_0x77da('0x27')](getUserApplications(_0x2dfeca,_0x2dfeca[_0x77da('0x14')]));}return _0x228851['VoiceExtension'][_0x77da('0x3d')](_0x240d7b);});}})[_0x77da('0x25')](function(){_0x25f65f();})[_0x77da('0x28')](function(_0x73eaf8){_0x25f65f(_0x73eaf8);});},'afterDestroy':function(_0x5487e0){return _0x228851[_0x77da('0x3b')]['destroy']({'where':{'UserId':_0x5487e0['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x36263b,_0x176f01){if(!_0x176f01){return this[_0x77da('0x36')]===this[_0x77da('0x3e')](_0x36263b);}var _0x57d866=this;this[_0x77da('0x3e')](_0x36263b,function(_0x1e36ee,_0x56a3d9){if(_0x1e36ee){_0x176f01(_0x1e36ee);}if(_0x57d866[_0x77da('0x36')]===_0x56a3d9){_0x176f01(null,!![]);}else{_0x176f01(null,![]);}});},'makeSalt':function(_0x3c2d89,_0x5c264e){var _0x6c0b00=0x10;if(typeof arguments[0x0]===_0x77da('0x3f')){_0x5c264e=arguments[0x0];_0x3c2d89=_0x6c0b00;}else if(typeof arguments[0x1]===_0x77da('0x3f')){_0x5c264e=arguments[0x1];}else{throw new Error(_0x77da('0x40'));}if(!_0x3c2d89){_0x3c2d89=_0x6c0b00;}return crypto[_0x77da('0x41')](_0x3c2d89,function(_0x1043c7,_0x2b96c1){if(_0x1043c7){_0x5c264e(_0x1043c7);}return _0x5c264e(null,_0x2b96c1[_0x77da('0x42')](_0x77da('0x43')));});},'encryptPassword':function(_0x3a34a8,_0x52aa0a){if(!_0x3a34a8||!this[_0x77da('0x44')]){return _0x52aa0a?_0x52aa0a(null):null;}var _0x513017=0x2710;var _0x2ea1c4=0x40;var _0x14cd3c=Buffer[_0x77da('0x45')](this[_0x77da('0x44')],_0x77da('0x43'));if(!_0x52aa0a){return crypto[_0x77da('0x46')](_0x3a34a8,_0x14cd3c,_0x513017,_0x2ea1c4,_0x77da('0x47'))['toString'](_0x77da('0x43'));}return crypto[_0x77da('0x48')](_0x3a34a8,_0x14cd3c,_0x513017,_0x2ea1c4,_0x77da('0x47'),function(_0x353be9,_0x4f30a1){if(_0x353be9){_0x52aa0a(_0x353be9);}return _0x52aa0a(null,_0x4f30a1[_0x77da('0x42')](_0x77da('0x43')));});},'updatePassword':function(_0x133b14){if(!this['password']){return _0x133b14(null);}if(!validatePresenceOf(this['password'])&&authTypes[_0x77da('0x49')](this[_0x77da('0x4a')])===-0x1){_0x133b14(new Error(_0x77da('0x4b')));}var _0x1d1ea2=this;this[_0x77da('0x4c')](function(_0x528a32,_0x50437b){if(_0x528a32){return _0x133b14(_0x528a32);}_0x1d1ea2[_0x77da('0x44')]=_0x50437b;_0x1d1ea2[_0x77da('0x3e')](_0x1d1ea2['password'],function(_0xf385e8,_0x45fafd){if(_0xf385e8){_0x133b14(_0xf385e8);}_0x1d1ea2[_0x77da('0x36')]=_0x45fafd;_0x133b14(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this[_0x77da('0x14')]+_0x77da('0x4d')+this['password']);return this[_0x77da('0x4e')];},'getRealtimeData':function(){var _0x27aa8c={'id':this['id']};var _0xfb06b5=jayson[_0x77da('0x4f')][_0x77da('0x50')]({'port':0x232a});var _0x99ac27=jayson[_0x77da('0x4f')][_0x77da('0x50')]({'port':0x232c});var _0x1ecb28={};var _0x4831ce={};return _0xfb06b5[_0x77da('0x51')](_0x77da('0x52'),_0x27aa8c)[_0x77da('0x25')](function(_0x2e92f4){if(_0x2e92f4[_0x77da('0x3a')]){throw new Error(_0x77da('0x53'));}_0x1ecb28=_0x2e92f4['result'];return _0x99ac27[_0x77da('0x51')](_0x77da('0x52'),_0x27aa8c);})[_0x77da('0x25')](function(_0x5b9cf2){if(_0x5b9cf2[_0x77da('0x3a')]){throw new Error(_0x77da('0x54'));}_0x4831ce=_0x5b9cf2[_0x77da('0x55')];var _0x8592c7=_[_0x77da('0xb')]({},_0x1ecb28,_0x4831ce);return _0x8592c7;})[_0x77da('0x28')](function(_0x436f0c){throw _0x436f0c;});},'unpause':function(_0x53a9ee,_0x100094='manual'){var _0x211310=this;var _0x1922ab={};return Promise[_0x77da('0x30')]()['then'](function(){if(!_0x53a9ee||_0x53a9ee===_0x77da('0x56')&&_0x100094===_0x77da('0x57')){var _0x282481=jayson[_0x77da('0x4f')]['http']({'port':0x232a});return _0x282481['request']('QueuePause',{'id':_0x211310['id'],'name':_0x211310[_0x77da('0x14')],'pause':![]})[_0x77da('0x25')](function(_0x2c4d7c){if(_0x2c4d7c[_0x77da('0x3a')]){throw new Error(util[_0x77da('0x8')](_0x77da('0x58'),_0x211310['id'],_0x211310[_0x77da('0x14')]));}return _0x2c4d7c[_0x77da('0x55')][_0x77da('0x59')];});}})[_0x77da('0x25')](function(){if(!_0x53a9ee||_0x53a9ee==='voice'){return _0x228851[_0x77da('0x5a')][_0x77da('0x5b')]({'paused':0x0},{'where':{'UserId':_0x211310['id']},'individualHooks':!![]});}})['then'](function(){var _0x52ebdf=!_0x53a9ee?_0x77da('0x24'):'findOne';var _0xf31c85={'membername':_0x211310[_0x77da('0x14')],'type':_0x77da('0x5c'),'exitAt':null};if(_0x53a9ee){_0xf31c85['channel']=_0x53a9ee;}return _0x228851[_0x77da('0x5d')][_0x52ebdf]({'where':_0xf31c85});})[_0x77da('0x25')](function(_0x27fc45){if(_0x27fc45){var _0x3bc8b1=Array[_0x77da('0x5e')](_0x27fc45)?_0x27fc45:[_0x27fc45];var _0x5a0510=_0x3bc8b1[_0x77da('0x5f')](function(_0x20a636){return _0x20a636['update']({'exitAt':moment()[_0x77da('0x8')](_0x77da('0x60')),'data2':_0x100094});});return Promise[_0x77da('0x61')](_0x5a0510);}})[_0x77da('0x25')](function(){if(!_0x53a9ee){_0x1922ab[_0x77da('0x62')]=![];_0x1922ab[_0x77da('0x63')]=![];_0x1922ab[_0x77da('0x64')]=![];_0x1922ab['faxPause']=![];_0x1922ab[_0x77da('0x65')]=![];_0x1922ab['whatsappPause']=![];_0x1922ab[_0x77da('0x66')]=![];}else{_0x1922ab[_0x53a9ee+_0x77da('0x67')]=![];}return _0x211310[_0x77da('0x68')]();})[_0x77da('0x25')](function(_0x470619){var _0x44538d=require(_0x77da('0x69'));var _0x103e1b=_0x44538d[_0x77da('0x6a')]();_0x103e1b[_0x77da('0x6b')](function(_0x3c9ca7){var _0x19065e=_0x3c9ca7+'Status';_0x211310[_0x77da('0x6c')]([_0x19065e],_0x470619[_0x19065e]);});return _0x211310[_0x77da('0x5b')](_0x1922ab);})[_0x77da('0x28')](function(_0x16d8cd){throw _0x16d8cd;});}}});};
\ No newline at end of file
index 23191c7..f61673f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7183=['socket.io-emitter','GetUser','findAll','options','where','attributes','limit','include','map','model','then','info','debug','stringify','message','ShowUser','User','find','raw','catch','error','PauseUser','name','internal','interface','UserVoiceQueueRt','update','MemberReport','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','push','isNil','SIP/%s','PAUSE','body','type','bulkCreate','DEFAULT\x20PAUSE','UnpauseUser','isValidChannel','channel','Channel\x20parameter\x20%s\x20is\x20invalid','findOne','voicePause','mailPause','chatPause','whatsappPause','pauseType','lastPauseAt','User\x20with\x20id\x20%s\x20not\x20found','params','unpause','system','LogoutUser','destroy','forEach','all','LoginUser','role','mobile','phone','loginInPause','count','agent','getLicense','agents','getVoiceQueues','upsert','LOGIN','callysquare','merge','LOGININPAUSE','concat','bluebird','../../config/utils','rpc','../../config/environment','redis','defaults'];(function(_0x302309,_0x53ad9f){var _0x2f5b71=function(_0x458d15){while(--_0x458d15){_0x302309['push'](_0x302309['shift']());}};_0x2f5b71(++_0x53ad9f);}(_0x7183,0x1e0));var _0x3718=function(_0x1e4360,_0x930b9b){_0x1e4360=_0x1e4360-0x0;var _0x31e6b4=_0x7183[_0x1e4360];return _0x31e6b4;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x3718('0x0'));var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x3718('0x1'));var logger=require('../../config/logger')(_0x3718('0x2'));var config=require(_0x3718('0x3'));config[_0x3718('0x4')]=_[_0x3718('0x5')](config[_0x3718('0x4')],{'host':'localhost','port':0x18eb});var socket=require(_0x3718('0x6'))(new Redis(config[_0x3718('0x4')]));require('./user.socket')['register'](socket);exports[_0x3718('0x7')]=function(_0x450020){var _0x470f3a=this;return new Promise(function(_0x184337,_0x2bcaad){return db['User'][_0x3718('0x8')]({'raw':_0x450020[_0x3718('0x9')]?_0x450020['options']['raw']===undefined?!![]:![]:!![],'where':_0x450020['options']?_0x450020[_0x3718('0x9')][_0x3718('0xa')]||null:null,'attributes':_0x450020['options']?_0x450020[_0x3718('0x9')][_0x3718('0xb')]||null:null,'limit':_0x450020['options']?_0x450020[_0x3718('0x9')][_0x3718('0xc')]||null:null,'include':_0x450020['options']?_0x450020[_0x3718('0x9')][_0x3718('0xd')]?_[_0x3718('0xe')](_0x450020[_0x3718('0x9')][_0x3718('0xd')],function(_0x43bf2e){return{'model':db[_0x43bf2e[_0x3718('0xf')]],'as':_0x43bf2e['as'],'attributes':_0x43bf2e['attributes'],'include':_0x43bf2e[_0x3718('0xd')]?_['map'](_0x43bf2e[_0x3718('0xd')],function(_0x54e328){return{'model':db[_0x54e328[_0x3718('0xf')]],'as':_0x54e328['as'],'attributes':_0x54e328[_0x3718('0xb')],'include':_0x54e328[_0x3718('0xd')]?_[_0x3718('0xe')](_0x54e328[_0x3718('0xd')],function(_0x1f2563){return{'model':db[_0x1f2563[_0x3718('0xf')]],'as':_0x1f2563['as'],'attributes':_0x1f2563[_0x3718('0xb')]};}):[]};}):[]};}):[]:[]})[_0x3718('0x10')](function(_0x546d49){logger[_0x3718('0x11')](_0x3718('0x7'),_0x450020);logger[_0x3718('0x12')](_0x3718('0x7'),_0x450020,JSON[_0x3718('0x13')](_0x546d49));_0x184337(_0x546d49);})['catch'](function(_0x11cec3){logger['error'](_0x3718('0x7'),_0x11cec3[_0x3718('0x14')],_0x450020);_0x2bcaad(_0x470f3a['error'](0x1f4,_0x11cec3[_0x3718('0x14')]));});});};exports[_0x3718('0x15')]=function(_0x1181e7){var _0x3064fc=this;return new Promise(function(_0x53aa74,_0x187835){return db[_0x3718('0x16')][_0x3718('0x17')]({'raw':_0x1181e7[_0x3718('0x9')]?_0x1181e7[_0x3718('0x9')][_0x3718('0x18')]===undefined?!![]:![]:!![],'where':_0x1181e7[_0x3718('0x9')]?_0x1181e7['options'][_0x3718('0xa')]||null:null,'attributes':_0x1181e7[_0x3718('0x9')]?_0x1181e7['options'][_0x3718('0xb')]||null:null,'include':_0x1181e7['options']?_0x1181e7[_0x3718('0x9')][_0x3718('0xd')]?_['map'](_0x1181e7['options'][_0x3718('0xd')],function(_0x1b36d1){return{'model':db[_0x1b36d1[_0x3718('0xf')]],'as':_0x1b36d1['as'],'attributes':_0x1b36d1[_0x3718('0xb')],'include':_0x1b36d1[_0x3718('0xd')]?_[_0x3718('0xe')](_0x1b36d1[_0x3718('0xd')],function(_0x1a5e1a){return{'model':db[_0x1a5e1a['model']],'as':_0x1a5e1a['as'],'attributes':_0x1a5e1a[_0x3718('0xb')],'include':_0x1a5e1a[_0x3718('0xd')]?_[_0x3718('0xe')](_0x1a5e1a[_0x3718('0xd')],function(_0x1b82bc){return{'model':db[_0x1b82bc[_0x3718('0xf')]],'as':_0x1b82bc['as'],'attributes':_0x1b82bc[_0x3718('0xb')]};}):[]};}):[]};}):[]:[]})[_0x3718('0x10')](function(_0x58e0a3){logger[_0x3718('0x11')]('ShowUser',_0x1181e7);logger[_0x3718('0x12')](_0x3718('0x15'),_0x1181e7,JSON[_0x3718('0x13')](_0x58e0a3));_0x53aa74(_0x58e0a3);})[_0x3718('0x19')](function(_0x5de72c){logger[_0x3718('0x1a')]('ShowUser',_0x5de72c[_0x3718('0x14')],_0x1181e7);_0x187835(_0x3064fc['error'](0x1f4,_0x5de72c[_0x3718('0x14')]));});});};exports[_0x3718('0x1b')]=function(_0x47dcba){var _0x1aaeff=this;return new Promise(function(_0xe2665f,_0x1b0b4a){var _0x639a6b;return db[_0x3718('0x16')][_0x3718('0x17')]({'where':_0x47dcba[_0x3718('0x9')][_0x3718('0xa')]||{},'attributes':['id',_0x3718('0x1c'),'role',_0x3718('0x1d'),_0x3718('0x1e')]})[_0x3718('0x10')](function(_0x37679a){if(_0x37679a){_0x639a6b=_0x37679a;return db[_0x3718('0x1f')][_0x3718('0x20')]({'paused':0x1},{'where':{'UserId':_0x639a6b['id']},'individualHooks':!![]});}})[_0x3718('0x10')](function(){if(_0x639a6b){return db[_0x3718('0x21')][_0x3718('0x8')]({'where':{'membername':_0x639a6b[_0x3718('0x1c')],'type':'PAUSE','exitAt':null}});}})['then'](function(_0x59ec79){if(_0x639a6b){if(_0x59ec79&&_0x59ec79[_0x3718('0x22')]){var _0x165058=moment()[_0x3718('0x23')](_0x3718('0x24'));for(var _0x29b0a6=0x0,_0x8b1b12=_0x59ec79[_0x3718('0x22')];_0x29b0a6<_0x8b1b12;_0x29b0a6++){_0x59ec79[_0x29b0a6][_0x3718('0x25')]({'exitAt':_0x165058});}}}})[_0x3718('0x10')](function(){if(_0x639a6b){var _0x571803=[];var _0x28f028=utils['getChannels']();_0x28f028['forEach'](function(_0x180d7d){_0x571803[_0x3718('0x26')]({'channel':_0x180d7d,'membername':_0x639a6b['name'],'interface':_[_0x3718('0x27')](_0x639a6b['interface'])?util[_0x3718('0x23')](_0x3718('0x28'),_0x639a6b[_0x3718('0x1c')]):_0x639a6b[_0x3718('0x1e')],'type':_0x3718('0x29'),'enterAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'data1':_0x47dcba[_0x3718('0x2a')][_0x3718('0x2b')]||'DEFAULT\x20PAUSE','role':_0x639a6b['role'],'internal':_0x639a6b[_0x3718('0x1d')],'uniqueid':_0x47dcba[_0x3718('0x2a')]['uniqueid']||null});});return db[_0x3718('0x21')][_0x3718('0x2c')](_0x571803,{'individualHooks':!![]});}})['then'](function(){if(_0x639a6b){return _0x639a6b[_0x3718('0x20')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x47dcba[_0x3718('0x2a')]['type']||_0x3718('0x2d'),'lastPauseAt':moment()[_0x3718('0x23')](_0x3718('0x24'))});}})[_0x3718('0x10')](function(_0x2cfa26){_0xe2665f(_0x2cfa26);})[_0x3718('0x19')](function(_0x3ed68a){_0x1b0b4a(_0x1aaeff[_0x3718('0x1a')](0x1f4,_0x3ed68a[_0x3718('0x14')]));});});};exports[_0x3718('0x2e')]=function(_0x1a63c1){var _0x523ec7=this;return new Promise(function(_0x14a50e,_0x6e7437){if(_0x1a63c1[_0x3718('0x2a')]['channel']&&!utils[_0x3718('0x2f')](_0x1a63c1[_0x3718('0x2a')][_0x3718('0x30')])){throw new Error(util[_0x3718('0x23')](_0x3718('0x31'),_0x1a63c1[_0x3718('0x2a')]['channel']));}return db[_0x3718('0x16')][_0x3718('0x32')]({'where':_0x1a63c1[_0x3718('0x9')][_0x3718('0xa')]||{},'attributes':['id','name','role',_0x3718('0x1d'),_0x3718('0x1e'),'online',_0x3718('0x33'),_0x3718('0x34'),_0x3718('0x35'),'faxPause','openchannelPause','smsPause',_0x3718('0x36'),_0x3718('0x37'),_0x3718('0x38')]})[_0x3718('0x10')](function(_0x5bcaac){if(!_0x5bcaac){throw new Error(util[_0x3718('0x23')](_0x3718('0x39'),_0x1a63c1[_0x3718('0x3a')]['id']));}return _0x5bcaac[_0x3718('0x3b')](_0x1a63c1[_0x3718('0x2a')][_0x3718('0x30')],_0x3718('0x3c'));})[_0x3718('0x10')](function(_0x13c6dc){_0x14a50e(_0x13c6dc);})['catch'](function(_0x42e28d){_0x6e7437(_0x523ec7[_0x3718('0x1a')](0x1f4,_0x42e28d[_0x3718('0x14')]));});});};exports[_0x3718('0x3d')]=function(_0x4adeca){var _0x4ada17=this;return new Promise(function(_0x58df6f,_0x5617eb){var _0x896278;return db[_0x3718('0x16')][_0x3718('0x32')]({'where':_0x4adeca['options'][_0x3718('0xa')]||{},'attributes':['id',_0x3718('0x1c')]})[_0x3718('0x10')](function(_0x59ffb9){if(_0x59ffb9){_0x896278=_0x59ffb9;return db[_0x3718('0x1f')][_0x3718('0x3e')]({'where':{'membername':_0x896278[_0x3718('0x1c')]},'individualHooks':!![]});}})[_0x3718('0x10')](function(){if(_0x896278){return db['MemberReport'][_0x3718('0x8')]({'where':{'membername':_0x896278[_0x3718('0x1c')],'exitAt':null}});}})['then'](function(_0x1b1011){if(_0x896278){if(_0x1b1011&&_0x1b1011[_0x3718('0x22')]){var _0x325f77=[];_0x1b1011[_0x3718('0x3f')](function(_0x44c43a){_0x325f77['push'](_0x44c43a[_0x3718('0x20')]({'exitAt':moment()[_0x3718('0x23')](_0x3718('0x24'))}));});return BPromise[_0x3718('0x40')](_0x325f77);}}})[_0x3718('0x10')](function(){if(_0x896278){return _0x896278[_0x3718('0x20')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x3718('0x10')](function(_0x2481f0){_0x58df6f(_0x2481f0);})[_0x3718('0x19')](function(_0x1e38ce){_0x5617eb(_0x4ada17[_0x3718('0x1a')](0x1f4,_0x1e38ce['message']));});});};exports[_0x3718('0x41')]=function(_0x3f2dc5){var _0x490d68=this;return new Promise(function(_0x1ff9ae,_0x564e65){var _0x533712;var _0x7ef8a9;var _0x313cf1;var _0x20b5e2;return db[_0x3718('0x16')]['findOne']({'where':_0x3f2dc5[_0x3718('0x9')]['where']||{},'attributes':['id',_0x3718('0x1c'),_0x3718('0x42'),_0x3718('0x43'),_0x3718('0x44'),_0x3718('0x1d'),_0x3718('0x45'),_0x3718('0x1e')]})[_0x3718('0x10')](function(_0x3af748){if(_0x3af748){_0x533712=_0x3af748;_0x20b5e2=_0x3f2dc5[_0x3718('0x2a')][_0x3718('0x1e')]?_0x3f2dc5['body'][_0x3718('0x1e')]:util['format'](_0x3718('0x28'),_0x533712[_0x3718('0x1c')]);return db[_0x3718('0x16')][_0x3718('0x46')]({'where':{'role':_0x3718('0x47'),'online':!![],'id':{'$ne':_0x533712['id']}}});}})['then'](function(_0x48860e){if(_0x48860e){_0x313cf1=_0x48860e;return require('../../config/license/util')[_0x3718('0x48')]();}})[_0x3718('0x10')](function(_0x2984d2){if(_0x2984d2&&_0x2984d2[_0x3718('0x49')]&&_0x313cf1>=_0x2984d2[_0x3718('0x49')]){throw new Error('Maximum\x20login\x20has\x20been\x20reached');}})[_0x3718('0x10')](function(){if(_0x533712){return db[_0x3718('0x1f')][_0x3718('0x3e')]({'where':{'membername':_0x533712[_0x3718('0x1c')]},'individualHooks':!![]});}})['then'](function(){if(_0x533712){return _0x533712[_0x3718('0x4a')]({'raw':!![]});}})[_0x3718('0x10')](function(_0x159f3c){if(_0x533712){if(_0x159f3c){var _0x283892=[];_0x7ef8a9=_0x159f3c;if(_0x7ef8a9[_0x3718('0x22')]){for(var _0x14589e=0x0;_0x14589e<_0x7ef8a9['length'];_0x14589e++){_0x283892[_0x3718('0x26')](db[_0x3718('0x1f')][_0x3718('0x4b')]({'membername':_0x533712[_0x3718('0x1c')],'UserId':_0x533712['id'],'queue_name':_0x7ef8a9[_0x14589e][_0x3718('0x1c')],'VoiceQueueId':_0x7ef8a9[_0x14589e]['id'],'interface':_0x20b5e2,'paused':_0x533712['loginInPause']||![],'penalty':_0x7ef8a9[_0x14589e]['UserVoiceQueue.penalty']||0x0}));}return BPromise['all'](_0x283892);}}}})[_0x3718('0x10')](function(){if(_0x533712){return db[_0x3718('0x21')][_0x3718('0x8')]({'where':{'membername':_0x533712['name'],'exitAt':null}});}})[_0x3718('0x10')](function(_0x454e79){if(_0x533712){if(_0x454e79&&_0x454e79[_0x3718('0x22')]){var _0x40995d=[];_0x454e79[_0x3718('0x3f')](function(_0x25f59e){_0x40995d[_0x3718('0x26')](_0x25f59e[_0x3718('0x20')]({'exitAt':moment()[_0x3718('0x23')](_0x3718('0x24'))}));});return BPromise['all'](_0x40995d);}}})[_0x3718('0x10')](function(){if(_0x533712){var _0x491637=[];var _0x2df36c=[];var _0x198712=utils['getChannels']();var _0x511691={'membername':_0x533712['name'],'interface':_0x20b5e2,'enterAt':moment()[_0x3718('0x23')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x533712['role'],'internal':_0x533712[_0x3718('0x1d')]};_0x198712['forEach'](function(_0x2e9203){_0x491637[_0x3718('0x26')](_['merge']({'channel':_0x2e9203,'type':_0x3718('0x4c'),'data1':_0x3718('0x4d'),'data2':_0x20b5e2},_0x511691));if(_0x533712[_0x3718('0x45')]){_0x2df36c[_0x3718('0x26')](_[_0x3718('0x4e')]({'channel':_0x2e9203,'type':_0x3718('0x29'),'data1':_0x3718('0x4f')},_0x511691));}});return db[_0x3718('0x21')][_0x3718('0x2c')](_0x491637[_0x3718('0x50')](_0x2df36c),{'individualHooks':!![]});}})[_0x3718('0x10')](function(){if(_0x533712){return _0x533712[_0x3718('0x20')]({'online':!![],'lastLoginAt':moment()['format'](_0x3718('0x24')),'voicePause':_0x533712[_0x3718('0x45')]||![],'mailPause':_0x533712['loginInPause']||![],'chatPause':_0x533712[_0x3718('0x45')]||![],'faxPause':_0x533712['loginInPause']||![],'smsPause':_0x533712[_0x3718('0x45')]||![],'openchannelPause':_0x533712[_0x3718('0x45')]||![],'pauseType':_0x533712[_0x3718('0x45')]?_0x3718('0x4f'):null,'lastPauseAt':moment()[_0x3718('0x23')](_0x3718('0x24')),'interface':_0x20b5e2});}})[_0x3718('0x10')](function(_0x2a0b3d){_0x1ff9ae(_0x2a0b3d);})['catch'](function(_0x43fa2c){_0x564e65(_0x490d68['error'](0x1f4,_0x43fa2c[_0x3718('0x14')]));});});};
\ No newline at end of file
+var _0x2f07=['interface','UserVoiceQueueRt','update','MemberReport','PAUSE','length','format','getChannels','SIP/%s','body','type','DEFAULT\x20PAUSE','role','uniqueid','bulkCreate','YYYY-MM-DD\x20HH:mm:ss','channel','Channel\x20parameter\x20%s\x20is\x20invalid','findOne','online','voicePause','mailPause','chatPause','faxPause','openchannelPause','smsPause','pauseType','User\x20with\x20id\x20%s\x20not\x20found','params','destroy','push','all','phone','loginInPause','count','agent','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','upsert','UserVoiceQueue.penalty','forEach','merge','LOGIN','callysquare','LOGININPAUSE','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','redis','defaults','./user.socket','register','GetUser','findAll','options','raw','where','attributes','limit','include','model','map','info','debug','stringify','catch','message','ShowUser','User','then','error','name','internal'];(function(_0x1f8b40,_0x30c66e){var _0x35f24a=function(_0x5ae27b){while(--_0x5ae27b){_0x1f8b40['push'](_0x1f8b40['shift']());}};_0x35f24a(++_0x30c66e);}(_0x2f07,0xcc));var _0x72f0=function(_0x27cb53,_0x2d00e9){_0x27cb53=_0x27cb53-0x0;var _0x1d6aea=_0x2f07[_0x27cb53];return _0x1d6aea;};'use strict';var _=require('lodash');var util=require(_0x72f0('0x0'));var moment=require(_0x72f0('0x1'));var BPromise=require(_0x72f0('0x2'));var Redis=require(_0x72f0('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x72f0('0x4'));var logger=require(_0x72f0('0x5'))(_0x72f0('0x6'));var config=require(_0x72f0('0x7'));config[_0x72f0('0x8')]=_[_0x72f0('0x9')](config[_0x72f0('0x8')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x72f0('0x8')]));require(_0x72f0('0xa'))[_0x72f0('0xb')](socket);exports[_0x72f0('0xc')]=function(_0x4438cc){var _0x26e584=this;return new Promise(function(_0x2b8e3b,_0x16e844){return db['User'][_0x72f0('0xd')]({'raw':_0x4438cc[_0x72f0('0xe')]?_0x4438cc['options'][_0x72f0('0xf')]===undefined?!![]:![]:!![],'where':_0x4438cc['options']?_0x4438cc[_0x72f0('0xe')][_0x72f0('0x10')]||null:null,'attributes':_0x4438cc['options']?_0x4438cc[_0x72f0('0xe')][_0x72f0('0x11')]||null:null,'limit':_0x4438cc['options']?_0x4438cc[_0x72f0('0xe')][_0x72f0('0x12')]||null:null,'include':_0x4438cc[_0x72f0('0xe')]?_0x4438cc[_0x72f0('0xe')][_0x72f0('0x13')]?_['map'](_0x4438cc['options'][_0x72f0('0x13')],function(_0xc4fefd){return{'model':db[_0xc4fefd[_0x72f0('0x14')]],'as':_0xc4fefd['as'],'attributes':_0xc4fefd[_0x72f0('0x11')],'include':_0xc4fefd[_0x72f0('0x13')]?_[_0x72f0('0x15')](_0xc4fefd[_0x72f0('0x13')],function(_0x17f2dd){return{'model':db[_0x17f2dd[_0x72f0('0x14')]],'as':_0x17f2dd['as'],'attributes':_0x17f2dd['attributes'],'include':_0x17f2dd[_0x72f0('0x13')]?_[_0x72f0('0x15')](_0x17f2dd[_0x72f0('0x13')],function(_0x37838b){return{'model':db[_0x37838b[_0x72f0('0x14')]],'as':_0x37838b['as'],'attributes':_0x37838b[_0x72f0('0x11')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x8b42d9){logger[_0x72f0('0x16')](_0x72f0('0xc'),_0x4438cc);logger[_0x72f0('0x17')](_0x72f0('0xc'),_0x4438cc,JSON[_0x72f0('0x18')](_0x8b42d9));_0x2b8e3b(_0x8b42d9);})[_0x72f0('0x19')](function(_0x3abb8f){logger['error'](_0x72f0('0xc'),_0x3abb8f['message'],_0x4438cc);_0x16e844(_0x26e584['error'](0x1f4,_0x3abb8f[_0x72f0('0x1a')]));});});};exports[_0x72f0('0x1b')]=function(_0x4ce7a0){var _0xffdee9=this;return new Promise(function(_0x12e44f,_0xce13db){return db[_0x72f0('0x1c')]['find']({'raw':_0x4ce7a0['options']?_0x4ce7a0[_0x72f0('0xe')]['raw']===undefined?!![]:![]:!![],'where':_0x4ce7a0[_0x72f0('0xe')]?_0x4ce7a0['options'][_0x72f0('0x10')]||null:null,'attributes':_0x4ce7a0[_0x72f0('0xe')]?_0x4ce7a0[_0x72f0('0xe')][_0x72f0('0x11')]||null:null,'include':_0x4ce7a0[_0x72f0('0xe')]?_0x4ce7a0[_0x72f0('0xe')][_0x72f0('0x13')]?_[_0x72f0('0x15')](_0x4ce7a0[_0x72f0('0xe')][_0x72f0('0x13')],function(_0x591b2f){return{'model':db[_0x591b2f[_0x72f0('0x14')]],'as':_0x591b2f['as'],'attributes':_0x591b2f[_0x72f0('0x11')],'include':_0x591b2f['include']?_[_0x72f0('0x15')](_0x591b2f[_0x72f0('0x13')],function(_0x36dd63){return{'model':db[_0x36dd63['model']],'as':_0x36dd63['as'],'attributes':_0x36dd63[_0x72f0('0x11')],'include':_0x36dd63[_0x72f0('0x13')]?_[_0x72f0('0x15')](_0x36dd63[_0x72f0('0x13')],function(_0x1f9e8b){return{'model':db[_0x1f9e8b['model']],'as':_0x1f9e8b['as'],'attributes':_0x1f9e8b[_0x72f0('0x11')]};}):[]};}):[]};}):[]:[]})[_0x72f0('0x1d')](function(_0x573bd0){logger[_0x72f0('0x16')](_0x72f0('0x1b'),_0x4ce7a0);logger[_0x72f0('0x17')](_0x72f0('0x1b'),_0x4ce7a0,JSON['stringify'](_0x573bd0));_0x12e44f(_0x573bd0);})[_0x72f0('0x19')](function(_0x5165bf){logger[_0x72f0('0x1e')](_0x72f0('0x1b'),_0x5165bf['message'],_0x4ce7a0);_0xce13db(_0xffdee9['error'](0x1f4,_0x5165bf[_0x72f0('0x1a')]));});});};exports['PauseUser']=function(_0x1850c9){var _0x35d679=this;return new Promise(function(_0x40629b,_0x5796ed){var _0x298957;return db['User']['find']({'where':_0x1850c9['options'][_0x72f0('0x10')]||{},'attributes':['id',_0x72f0('0x1f'),'role',_0x72f0('0x20'),_0x72f0('0x21')]})['then'](function(_0x342e81){if(_0x342e81){_0x298957=_0x342e81;return db[_0x72f0('0x22')][_0x72f0('0x23')]({'paused':0x1},{'where':{'UserId':_0x298957['id']},'individualHooks':!![]});}})[_0x72f0('0x1d')](function(){if(_0x298957){return db[_0x72f0('0x24')][_0x72f0('0xd')]({'where':{'membername':_0x298957[_0x72f0('0x1f')],'type':_0x72f0('0x25'),'exitAt':null}});}})[_0x72f0('0x1d')](function(_0x573e7c){if(_0x298957){if(_0x573e7c&&_0x573e7c[_0x72f0('0x26')]){var _0x2b3403=moment()[_0x72f0('0x27')]('YYYY-MM-DD\x20HH:mm:ss');for(var _0x163603=0x0,_0x2eea2e=_0x573e7c[_0x72f0('0x26')];_0x163603<_0x2eea2e;_0x163603++){_0x573e7c[_0x163603]['updateAttributes']({'exitAt':_0x2b3403});}}}})[_0x72f0('0x1d')](function(){if(_0x298957){var _0x577616=[];var _0x2c7183=utils[_0x72f0('0x28')]();_0x2c7183['forEach'](function(_0x4c39f2){_0x577616['push']({'channel':_0x4c39f2,'membername':_0x298957['name'],'interface':_['isNil'](_0x298957[_0x72f0('0x21')])?util[_0x72f0('0x27')](_0x72f0('0x29'),_0x298957[_0x72f0('0x1f')]):_0x298957['interface'],'type':_0x72f0('0x25'),'enterAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'data1':_0x1850c9[_0x72f0('0x2a')][_0x72f0('0x2b')]||_0x72f0('0x2c'),'role':_0x298957[_0x72f0('0x2d')],'internal':_0x298957[_0x72f0('0x20')],'uniqueid':_0x1850c9[_0x72f0('0x2a')][_0x72f0('0x2e')]||null});});return db[_0x72f0('0x24')][_0x72f0('0x2f')](_0x577616,{'individualHooks':!![]});}})['then'](function(){if(_0x298957){return _0x298957[_0x72f0('0x23')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x1850c9['body'][_0x72f0('0x2b')]||'DEFAULT\x20PAUSE','lastPauseAt':moment()[_0x72f0('0x27')](_0x72f0('0x30'))});}})[_0x72f0('0x1d')](function(_0x3e4f84){_0x40629b(_0x3e4f84);})[_0x72f0('0x19')](function(_0x1315fb){_0x5796ed(_0x35d679[_0x72f0('0x1e')](0x1f4,_0x1315fb[_0x72f0('0x1a')]));});});};exports['UnpauseUser']=function(_0x431f9a){var _0x64ca04=this;return new Promise(function(_0x453153,_0x5d44cb){if(_0x431f9a['body'][_0x72f0('0x31')]&&!utils['isValidChannel'](_0x431f9a[_0x72f0('0x2a')]['channel'])){throw new Error(util[_0x72f0('0x27')](_0x72f0('0x32'),_0x431f9a[_0x72f0('0x2a')][_0x72f0('0x31')]));}return db[_0x72f0('0x1c')][_0x72f0('0x33')]({'where':_0x431f9a['options']['where']||{},'attributes':['id',_0x72f0('0x1f'),_0x72f0('0x2d'),_0x72f0('0x20'),_0x72f0('0x21'),_0x72f0('0x34'),_0x72f0('0x35'),_0x72f0('0x36'),_0x72f0('0x37'),_0x72f0('0x38'),_0x72f0('0x39'),_0x72f0('0x3a'),'whatsappPause',_0x72f0('0x3b'),'lastPauseAt']})['then'](function(_0x245d76){if(!_0x245d76){throw new Error(util['format'](_0x72f0('0x3c'),_0x431f9a[_0x72f0('0x3d')]['id']));}return _0x245d76['unpause'](_0x431f9a['body'][_0x72f0('0x31')],'system');})[_0x72f0('0x1d')](function(_0xbb7864){_0x453153(_0xbb7864);})[_0x72f0('0x19')](function(_0x2aaffd){_0x5d44cb(_0x64ca04[_0x72f0('0x1e')](0x1f4,_0x2aaffd['message']));});});};exports['LogoutUser']=function(_0x4fd39d){var _0x1a2246=this;return new Promise(function(_0x4abbc1,_0x34dafd){var _0x697ad3;return db[_0x72f0('0x1c')][_0x72f0('0x33')]({'where':_0x4fd39d[_0x72f0('0xe')][_0x72f0('0x10')]||{},'attributes':['id',_0x72f0('0x1f')]})[_0x72f0('0x1d')](function(_0x4f29b5){if(_0x4f29b5){_0x697ad3=_0x4f29b5;return db[_0x72f0('0x22')][_0x72f0('0x3e')]({'where':{'membername':_0x697ad3['name']},'individualHooks':!![]});}})[_0x72f0('0x1d')](function(){if(_0x697ad3){return db[_0x72f0('0x24')][_0x72f0('0xd')]({'where':{'membername':_0x697ad3['name'],'exitAt':null}});}})[_0x72f0('0x1d')](function(_0x21849f){if(_0x697ad3){if(_0x21849f&&_0x21849f[_0x72f0('0x26')]){var _0x2032bd=[];_0x21849f['forEach'](function(_0x3caf79){_0x2032bd[_0x72f0('0x3f')](_0x3caf79[_0x72f0('0x23')]({'exitAt':moment()[_0x72f0('0x27')](_0x72f0('0x30'))}));});return BPromise[_0x72f0('0x40')](_0x2032bd);}}})['then'](function(){if(_0x697ad3){return _0x697ad3[_0x72f0('0x23')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x72f0('0x1d')](function(_0x3b8f0a){_0x4abbc1(_0x3b8f0a);})[_0x72f0('0x19')](function(_0x49cd33){_0x34dafd(_0x1a2246[_0x72f0('0x1e')](0x1f4,_0x49cd33['message']));});});};exports['LoginUser']=function(_0x32b40e){var _0x45eb65=this;return new Promise(function(_0x3c90ee,_0x1e6f10){var _0x40e20a;var _0x1b19f8;var _0x1452f0;var _0x62d11b;return db[_0x72f0('0x1c')][_0x72f0('0x33')]({'where':_0x32b40e[_0x72f0('0xe')][_0x72f0('0x10')]||{},'attributes':['id',_0x72f0('0x1f'),_0x72f0('0x2d'),'mobile',_0x72f0('0x41'),'internal',_0x72f0('0x42'),_0x72f0('0x21')]})[_0x72f0('0x1d')](function(_0x186244){if(_0x186244){_0x40e20a=_0x186244;_0x62d11b=_0x32b40e[_0x72f0('0x2a')][_0x72f0('0x21')]?_0x32b40e[_0x72f0('0x2a')][_0x72f0('0x21')]:util['format'](_0x72f0('0x29'),_0x40e20a[_0x72f0('0x1f')]);return db[_0x72f0('0x1c')][_0x72f0('0x43')]({'where':{'role':_0x72f0('0x44'),'online':!![],'id':{'$ne':_0x40e20a['id']}}});}})[_0x72f0('0x1d')](function(_0x1b6aa8){if(_0x1b6aa8){_0x1452f0=_0x1b6aa8;return require('../../config/license/util')[_0x72f0('0x45')]();}})[_0x72f0('0x1d')](function(_0x55f806){if(_0x55f806&&_0x55f806['agents']&&_0x1452f0>=_0x55f806[_0x72f0('0x46')]){throw new Error(_0x72f0('0x47'));}})[_0x72f0('0x1d')](function(){if(_0x40e20a){return db[_0x72f0('0x22')][_0x72f0('0x3e')]({'where':{'membername':_0x40e20a[_0x72f0('0x1f')]},'individualHooks':!![]});}})[_0x72f0('0x1d')](function(){if(_0x40e20a){return _0x40e20a['getVoiceQueues']({'raw':!![]});}})[_0x72f0('0x1d')](function(_0x2446a6){if(_0x40e20a){if(_0x2446a6){var _0x266bb9=[];_0x1b19f8=_0x2446a6;if(_0x1b19f8[_0x72f0('0x26')]){for(var _0x37977d=0x0;_0x37977d<_0x1b19f8['length'];_0x37977d++){_0x266bb9[_0x72f0('0x3f')](db[_0x72f0('0x22')][_0x72f0('0x48')]({'membername':_0x40e20a['name'],'UserId':_0x40e20a['id'],'queue_name':_0x1b19f8[_0x37977d]['name'],'VoiceQueueId':_0x1b19f8[_0x37977d]['id'],'interface':_0x62d11b,'paused':_0x40e20a[_0x72f0('0x42')]||![],'penalty':_0x1b19f8[_0x37977d][_0x72f0('0x49')]||0x0}));}return BPromise['all'](_0x266bb9);}}}})[_0x72f0('0x1d')](function(){if(_0x40e20a){return db[_0x72f0('0x24')][_0x72f0('0xd')]({'where':{'membername':_0x40e20a['name'],'exitAt':null}});}})['then'](function(_0x56322a){if(_0x40e20a){if(_0x56322a&&_0x56322a['length']){var _0xb0c9de=[];_0x56322a[_0x72f0('0x4a')](function(_0x1c87cc){_0xb0c9de[_0x72f0('0x3f')](_0x1c87cc[_0x72f0('0x23')]({'exitAt':moment()[_0x72f0('0x27')](_0x72f0('0x30'))}));});return BPromise[_0x72f0('0x40')](_0xb0c9de);}}})[_0x72f0('0x1d')](function(){if(_0x40e20a){var _0xace326=[];var _0xe8f68=[];var _0x502ddb=utils[_0x72f0('0x28')]();var _0x224d72={'membername':_0x40e20a[_0x72f0('0x1f')],'interface':_0x62d11b,'enterAt':moment()[_0x72f0('0x27')](_0x72f0('0x30')),'role':_0x40e20a['role'],'internal':_0x40e20a[_0x72f0('0x20')]};_0x502ddb[_0x72f0('0x4a')](function(_0x421ba8){_0xace326[_0x72f0('0x3f')](_[_0x72f0('0x4b')]({'channel':_0x421ba8,'type':_0x72f0('0x4c'),'data1':_0x72f0('0x4d'),'data2':_0x62d11b},_0x224d72));if(_0x40e20a[_0x72f0('0x42')]){_0xe8f68[_0x72f0('0x3f')](_[_0x72f0('0x4b')]({'channel':_0x421ba8,'type':_0x72f0('0x25'),'data1':_0x72f0('0x4e')},_0x224d72));}});return db[_0x72f0('0x24')][_0x72f0('0x2f')](_0xace326['concat'](_0xe8f68),{'individualHooks':!![]});}})[_0x72f0('0x1d')](function(){if(_0x40e20a){return _0x40e20a[_0x72f0('0x23')]({'online':!![],'lastLoginAt':moment()[_0x72f0('0x27')](_0x72f0('0x30')),'voicePause':_0x40e20a[_0x72f0('0x42')]||![],'mailPause':_0x40e20a['loginInPause']||![],'chatPause':_0x40e20a[_0x72f0('0x42')]||![],'faxPause':_0x40e20a['loginInPause']||![],'smsPause':_0x40e20a[_0x72f0('0x42')]||![],'openchannelPause':_0x40e20a[_0x72f0('0x42')]||![],'pauseType':_0x40e20a[_0x72f0('0x42')]?_0x72f0('0x4e'):null,'lastPauseAt':moment()[_0x72f0('0x27')](_0x72f0('0x30')),'interface':_0x62d11b});}})[_0x72f0('0x1d')](function(_0x3fea5f){_0x3c90ee(_0x3fea5f);})[_0x72f0('0x19')](function(_0x2b8b1e){_0x1e6f10(_0x45eb65[_0x72f0('0x1e')](0x1f4,_0x2b8b1e[_0x72f0('0x1a')]));});});};
\ No newline at end of file
index 20cfe14..f9e70e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c2d=['remove','emit','removeListener','register','length','user:','./user.events','save'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0x7c2d,0xae));var _0xd7c2=function(_0x1ccdf7,_0x215d5a){_0x1ccdf7=_0x1ccdf7-0x0;var _0x52a0ae=_0x7c2d[_0x1ccdf7];return _0x52a0ae;};'use strict';var UserEvents=require(_0xd7c2('0x0'));var events=[_0xd7c2('0x1'),_0xd7c2('0x2'),'update'];function createListener(_0x18b801,_0x5efa86){return function(_0xb3181c){_0x5efa86[_0xd7c2('0x3')](_0x18b801,_0xb3181c);};}function removeListener(_0x17f670,_0x12e2eb){return function(){UserEvents[_0xd7c2('0x4')](_0x17f670,_0x12e2eb);};}exports[_0xd7c2('0x5')]=function(_0x129c4f){for(var _0x5b022a=0x0,_0x4b55c4=events[_0xd7c2('0x6')];_0x5b022a<_0x4b55c4;_0x5b022a++){var _0x48d8dd=events[_0x5b022a];var _0x133993=createListener(_0xd7c2('0x7')+_0x48d8dd,_0x129c4f);UserEvents['on'](_0x48d8dd,_0x133993);}};
\ No newline at end of file
+var _0xa035=['user:','./user.events','save','remove','emit','removeListener'];(function(_0x485f66,_0x17840c){var _0x1ba707=function(_0x30c2f0){while(--_0x30c2f0){_0x485f66['push'](_0x485f66['shift']());}};_0x1ba707(++_0x17840c);}(_0xa035,0x1bd));var _0x5a03=function(_0x111dc1,_0x26fca9){_0x111dc1=_0x111dc1-0x0;var _0x321714=_0xa035[_0x111dc1];return _0x321714;};'use strict';var UserEvents=require(_0x5a03('0x0'));var events=[_0x5a03('0x1'),_0x5a03('0x2'),'update'];function createListener(_0x37f27b,_0x5cf8f0){return function(_0x33daaf){_0x5cf8f0[_0x5a03('0x3')](_0x37f27b,_0x33daaf);};}function removeListener(_0x2ce6c9,_0xdb0cd1){return function(){UserEvents[_0x5a03('0x4')](_0x2ce6c9,_0xdb0cd1);};}exports['register']=function(_0xf29097){for(var _0x18369a=0x0,_0x3fea45=events['length'];_0x18369a<_0x3fea45;_0x18369a++){var _0x559ae4=events[_0x18369a];var _0xf2d371=createListener(_0x5a03('0x5')+_0x559ae4,_0xf29097);UserEvents['on'](_0x559ae4,_0xf2d371);}};
\ No newline at end of file
index c298171..dba5422 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(_0x1826c8,_0x14372e){var _0x20ce29=function(_0x54f01d){while(--_0x54f01d){_0x1826c8['push'](_0x1826c8['shift']());}};_0x20ce29(++_0x14372e);}(_0x70e0,0x17b));var _0x070e=function(_0x3f0e83,_0x28eb0a){_0x3f0e83=_0x3f0e83-0x0;var _0x3075bb=_0x70e0[_0x3f0e83];return _0x3075bb;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');module[_0x070e('0x7')]=router;
\ No newline at end of file
+var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x428d83,_0x177637){var _0x181681=function(_0x33a10d){while(--_0x33a10d){_0x428d83['push'](_0x428d83['shift']());}};_0x181681(++_0x177637);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4ea69d,_0x290f53){_0x4ea69d=_0x4ea69d-0x0;var _0x5318e0=_0xa9e0[_0x4ea69d];return _0x5318e0;};'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 361e316..6d6f7f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x782d=['sequelize','exports','INTEGER'];(function(_0x311909,_0x414bf7){var _0x8d3163=function(_0x226f55){while(--_0x226f55){_0x311909['push'](_0x311909['shift']());}};_0x8d3163(++_0x414bf7);}(_0x782d,0xc6));var _0xd782=function(_0x257e3d,_0x4bcf87){_0x257e3d=_0x257e3d-0x0;var _0x321d68=_0x782d[_0x257e3d];return _0x321d68;};'use strict';var Sequelize=require(_0xd782('0x0'));module[_0xd782('0x1')]={'penalty':{'type':Sequelize[_0xd782('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x6b5d=['exports','INTEGER','sequelize'];(function(_0x165ece,_0x1f0a42){var _0x545fe6=function(_0x1ac8e9){while(--_0x1ac8e9){_0x165ece['push'](_0x165ece['shift']());}};_0x545fe6(++_0x1f0a42);}(_0x6b5d,0xd4));var _0xd6b5=function(_0x14b0ab,_0x5d28c1){_0x14b0ab=_0x14b0ab-0x0;var _0x1f37f3=_0x6b5d[_0x14b0ab];return _0x1f37f3;};'use strict';var Sequelize=require(_0xd6b5('0x0'));module[_0xd6b5('0x1')]={'penalty':{'type':Sequelize[_0xd6b5('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 59209ca..eb44208 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb468=['../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','./userChatQueue.attributes','exports','define','user_has_chat_queues','lodash','util'];(function(_0x249451,_0x1c62db){var _0x50cabe=function(_0x3d9bac){while(--_0x3d9bac){_0x249451['push'](_0x249451['shift']());}};_0x50cabe(++_0x1c62db);}(_0xb468,0x196));var _0x8b46=function(_0x4c12ec,_0x2e9103){_0x4c12ec=_0x4c12ec-0x0;var _0x3ae42c=_0xb468[_0x4c12ec];return _0x3ae42c;};'use strict';var _=require(_0x8b46('0x0'));var util=require(_0x8b46('0x1'));var logger=require(_0x8b46('0x2'))('api');var moment=require(_0x8b46('0x3'));var BPromise=require(_0x8b46('0x4'));var rp=require(_0x8b46('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8b46('0x6'));var config=require(_0x8b46('0x7'));var attributes=require(_0x8b46('0x8'));module[_0x8b46('0x9')]=function(_0x1dbc87,_0x43cf90){return _0x1dbc87[_0x8b46('0xa')]('UserChatQueue',attributes,{'tableName':_0x8b46('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7d78=['./userChatQueue.attributes','exports','define','UserChatQueue','user_has_chat_queues','util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x31ce84,_0x18154a){var _0x110701=function(_0x194041){while(--_0x194041){_0x31ce84['push'](_0x31ce84['shift']());}};_0x110701(++_0x18154a);}(_0x7d78,0xb9));var _0x87d7=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x7d78[_0x14add3];return _0x4a174f;};'use strict';var _=require('lodash');var util=require(_0x87d7('0x0'));var logger=require(_0x87d7('0x1'))('api');var moment=require(_0x87d7('0x2'));var BPromise=require(_0x87d7('0x3'));var rp=require(_0x87d7('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x87d7('0x5'));var config=require(_0x87d7('0x6'));var attributes=require(_0x87d7('0x7'));module[_0x87d7('0x8')]=function(_0x388302,_0x31dbd9){return _0x388302[_0x87d7('0x9')](_0x87d7('0xa'),attributes,{'tableName':_0x87d7('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 99bf915..e0e70dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c49=['request\x20sent','error','code','message','result','catch','lodash','util','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','UserChatQueue,\x20%s,\x20%s'];(function(_0x4e55a9,_0x241b22){var _0x4a9b67=function(_0x2a3bd1){while(--_0x2a3bd1){_0x4e55a9['push'](_0x4e55a9['shift']());}};_0x4a9b67(++_0x241b22);}(_0x6c49,0x132));var _0x96c4=function(_0x284dab,_0x2ca215){_0x284dab=_0x284dab-0x0;var _0x4ac778=_0x6c49[_0x284dab];return _0x4ac778;};'use strict';var _=require(_0x96c4('0x0'));var util=require(_0x96c4('0x1'));var moment=require('moment');var BPromise=require(_0x96c4('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x96c4('0x3'))['db'];var utils=require(_0x96c4('0x4'));var logger=require(_0x96c4('0x5'))(_0x96c4('0x6'));var config=require(_0x96c4('0x7'));var jayson=require(_0x96c4('0x8'));var client=jayson[_0x96c4('0x9')][_0x96c4('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x42df6d,_0x45b6b0,_0xbbbdbc){return new BPromise(function(_0x35c07f,_0x3af3c7){return client['request'](_0x42df6d,_0xbbbdbc)[_0x96c4('0xb')](function(_0x3b789c){logger[_0x96c4('0xc')](_0x96c4('0xd'),_0x45b6b0,'request\x20sent');logger['debug']('UserChatQueue,\x20%s,\x20%s,\x20%s',_0x45b6b0,_0x96c4('0xe'),JSON['stringify'](_0x3b789c));if(_0x3b789c[_0x96c4('0xf')]){if(_0x3b789c[_0x96c4('0xf')][_0x96c4('0x10')]===0x1f4){logger['error'](_0x96c4('0xd'),_0x45b6b0,_0x3b789c['error'][_0x96c4('0x11')]);return _0x3af3c7(_0x3b789c['error'][_0x96c4('0x11')]);}logger['error'](_0x96c4('0xd'),_0x45b6b0,_0x3b789c['error'][_0x96c4('0x11')]);return _0x35c07f(_0x3b789c[_0x96c4('0xf')][_0x96c4('0x11')]);}else{logger[_0x96c4('0xc')]('UserChatQueue,\x20%s,\x20%s',_0x45b6b0,_0x96c4('0xe'));_0x35c07f(_0x3b789c[_0x96c4('0x12')][_0x96c4('0x11')]);}})[_0x96c4('0x13')](function(_0x3c8364){logger[_0x96c4('0xf')](_0x96c4('0xd'),_0x45b6b0,_0x3c8364);_0x3af3c7(_0x3c8364);});});}
\ No newline at end of file
+var _0x765e=['lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','UserChatQueue,\x20%s,\x20%s','request\x20sent','debug','UserChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','result'];(function(_0x36eaaa,_0x326732){var _0x461349=function(_0x4e4180){while(--_0x4e4180){_0x36eaaa['push'](_0x36eaaa['shift']());}};_0x461349(++_0x326732);}(_0x765e,0x11e));var _0xe765=function(_0x4242d9,_0x4adeb3){_0x4242d9=_0x4242d9-0x0;var _0x3582b4=_0x765e[_0x4242d9];return _0x3582b4;};'use strict';var _=require(_0xe765('0x0'));var util=require(_0xe765('0x1'));var moment=require(_0xe765('0x2'));var BPromise=require('bluebird');var rs=require(_0xe765('0x3'));var fs=require('fs');var Redis=require(_0xe765('0x4'));var db=require(_0xe765('0x5'))['db'];var utils=require(_0xe765('0x6'));var logger=require(_0xe765('0x7'))('rpc');var config=require(_0xe765('0x8'));var jayson=require(_0xe765('0x9'));var client=jayson[_0xe765('0xa')][_0xe765('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x585491,_0x4a8c11,_0x2d5337){return new BPromise(function(_0x17a667,_0x4910d6){return client[_0xe765('0xc')](_0x585491,_0x2d5337)['then'](function(_0x16ec95){logger[_0xe765('0xd')](_0xe765('0xe'),_0x4a8c11,_0xe765('0xf'));logger[_0xe765('0x10')](_0xe765('0x11'),_0x4a8c11,'request\x20sent',JSON[_0xe765('0x12')](_0x16ec95));if(_0x16ec95['error']){if(_0x16ec95['error']['code']===0x1f4){logger[_0xe765('0x13')]('UserChatQueue,\x20%s,\x20%s',_0x4a8c11,_0x16ec95[_0xe765('0x13')]['message']);return _0x4910d6(_0x16ec95['error'][_0xe765('0x14')]);}logger[_0xe765('0x13')](_0xe765('0xe'),_0x4a8c11,_0x16ec95[_0xe765('0x13')][_0xe765('0x14')]);return _0x17a667(_0x16ec95['error'][_0xe765('0x14')]);}else{logger['info']('UserChatQueue,\x20%s,\x20%s',_0x4a8c11,'request\x20sent');_0x17a667(_0x16ec95[_0xe765('0x15')][_0xe765('0x14')]);}})['catch'](function(_0x4c4162){logger['error'](_0xe765('0xe'),_0x4a8c11,_0x4c4162);_0x4910d6(_0x4c4162);});});}
\ No newline at end of file
index 2f8b92e..05253eb 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(_0x42f4ad,_0xcc1fa1){var _0x2d70b7=function(_0xd060f5){while(--_0xd060f5){_0x42f4ad['push'](_0x42f4ad['shift']());}};_0x2d70b7(++_0xcc1fa1);}(_0x70e0,0x17b));var _0x070e=function(_0x1f09be,_0x3c7353){_0x1f09be=_0x1f09be-0x0;var _0x2d7b6d=_0x70e0[_0x1f09be];return _0x2d7b6d;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');module[_0x070e('0x7')]=router;
\ No newline at end of file
+var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x176724,_0x4fcb00){var _0x16579e=function(_0x2c6778){while(--_0x2c6778){_0x176724['push'](_0x176724['shift']());}};_0x16579e(++_0x4fcb00);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
index fdf8023..008c122 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cd4=['sequelize','exports','INTEGER','STRING'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x1cd4,0x1e8));var _0x41cd=function(_0x4dae63,_0x1589ec){_0x4dae63=_0x4dae63-0x0;var _0x1f92da=_0x1cd4[_0x4dae63];return _0x1f92da;};'use strict';var Sequelize=require(_0x41cd('0x0'));module[_0x41cd('0x1')]={'penalty':{'type':Sequelize[_0x41cd('0x2')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x41cd('0x2')],'defaultValue':0x0},'queue':{'type':Sequelize[_0x41cd('0x3')]}};
\ No newline at end of file
+var _0x6dd4=['STRING','sequelize','exports','INTEGER'];(function(_0xaaf6a3,_0x46bf1c){var _0x255dbe=function(_0x1698e3){while(--_0x1698e3){_0xaaf6a3['push'](_0xaaf6a3['shift']());}};_0x255dbe(++_0x46bf1c);}(_0x6dd4,0x1a5));var _0x46dd=function(_0x274838,_0x429c03){_0x274838=_0x274838-0x0;var _0x164974=_0x6dd4[_0x274838];return _0x164974;};'use strict';var Sequelize=require(_0x46dd('0x0'));module[_0x46dd('0x1')]={'penalty':{'type':Sequelize[_0x46dd('0x2')],'defaultValue':0x0},'assigned':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'queue':{'type':Sequelize[_0x46dd('0x3')]}};
\ No newline at end of file
index cdb725d..72eece9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe08c=['bluebird','request-promise','path','rimraf','../../config/environment','exports','UserFaxQueue','lodash','../../config/logger','moment'];(function(_0x1a4cfc,_0x53a1af){var _0x1bb003=function(_0x2396f5){while(--_0x2396f5){_0x1a4cfc['push'](_0x1a4cfc['shift']());}};_0x1bb003(++_0x53a1af);}(_0xe08c,0xc5));var _0xce08=function(_0x4bbab5,_0x2956f9){_0x4bbab5=_0x4bbab5-0x0;var _0x5045da=_0xe08c[_0x4bbab5];return _0x5045da;};'use strict';var _=require(_0xce08('0x0'));var util=require('util');var logger=require(_0xce08('0x1'))('api');var moment=require(_0xce08('0x2'));var BPromise=require(_0xce08('0x3'));var rp=require(_0xce08('0x4'));var fs=require('fs');var path=require(_0xce08('0x5'));var rimraf=require(_0xce08('0x6'));var config=require(_0xce08('0x7'));var attributes=require('./userFaxQueue.attributes');module[_0xce08('0x8')]=function(_0x343726,_0x237eb8){return _0x343726['define'](_0xce08('0x9'),attributes,{'tableName':'user_has_fax_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcb94=['UserFaxQueue','lodash','util','api','moment','bluebird','rimraf','../../config/environment','./userFaxQueue.attributes','exports','define'];(function(_0x5179a5,_0x419746){var _0x15c8ce=function(_0x1b13c4){while(--_0x1b13c4){_0x5179a5['push'](_0x5179a5['shift']());}};_0x15c8ce(++_0x419746);}(_0xcb94,0x1b9));var _0x4cb9=function(_0x421464,_0x25ed6b){_0x421464=_0x421464-0x0;var _0x102a80=_0xcb94[_0x421464];return _0x102a80;};'use strict';var _=require(_0x4cb9('0x0'));var util=require(_0x4cb9('0x1'));var logger=require('../../config/logger')(_0x4cb9('0x2'));var moment=require(_0x4cb9('0x3'));var BPromise=require(_0x4cb9('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x4cb9('0x5'));var config=require(_0x4cb9('0x6'));var attributes=require(_0x4cb9('0x7'));module[_0x4cb9('0x8')]=function(_0x1274f4,_0x4d94fc){return _0x1274f4[_0x4cb9('0x9')](_0x4cb9('0xa'),attributes,{'tableName':'user_has_fax_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f05ced0..84ec600 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x40b7=['error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','jayson/promise','client','http','request','info','UserFaxQueue,\x20%s,\x20%s','request\x20sent','debug','UserFaxQueue,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x46aff0,_0x122890){var _0x9d78cf=function(_0x3f14cb){while(--_0x3f14cb){_0x46aff0['push'](_0x46aff0['shift']());}};_0x9d78cf(++_0x122890);}(_0x40b7,0x1a3));var _0x740b=function(_0x4dc7b9,_0x319d5a){_0x4dc7b9=_0x4dc7b9-0x0;var _0x3ab114=_0x40b7[_0x4dc7b9];return _0x3ab114;};'use strict';var _=require(_0x740b('0x0'));var util=require(_0x740b('0x1'));var moment=require(_0x740b('0x2'));var BPromise=require(_0x740b('0x3'));var rs=require(_0x740b('0x4'));var fs=require('fs');var Redis=require(_0x740b('0x5'));var db=require(_0x740b('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x740b('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x740b('0x8'));var client=jayson[_0x740b('0x9')][_0x740b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3fdec8,_0x4bfe54,_0x5d79e8){return new BPromise(function(_0x2d2a7d,_0x2d7fc6){return client[_0x740b('0xb')](_0x3fdec8,_0x5d79e8)['then'](function(_0x66cd97){logger[_0x740b('0xc')](_0x740b('0xd'),_0x4bfe54,_0x740b('0xe'));logger[_0x740b('0xf')](_0x740b('0x10'),_0x4bfe54,'request\x20sent',JSON[_0x740b('0x11')](_0x66cd97));if(_0x66cd97[_0x740b('0x12')]){if(_0x66cd97[_0x740b('0x12')][_0x740b('0x13')]===0x1f4){logger['error']('UserFaxQueue,\x20%s,\x20%s',_0x4bfe54,_0x66cd97[_0x740b('0x12')][_0x740b('0x14')]);return _0x2d7fc6(_0x66cd97[_0x740b('0x12')][_0x740b('0x14')]);}logger[_0x740b('0x12')]('UserFaxQueue,\x20%s,\x20%s',_0x4bfe54,_0x66cd97[_0x740b('0x12')][_0x740b('0x14')]);return _0x2d2a7d(_0x66cd97['error'][_0x740b('0x14')]);}else{logger['info'](_0x740b('0xd'),_0x4bfe54,'request\x20sent');_0x2d2a7d(_0x66cd97[_0x740b('0x15')][_0x740b('0x14')]);}})[_0x740b('0x16')](function(_0x547ab2){logger['error'](_0x740b('0xd'),_0x4bfe54,_0x547ab2);_0x2d7fc6(_0x547ab2);});});}
\ No newline at end of file
+var _0xdd30=['error','code','message','result','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','then','info','UserFaxQueue,\x20%s,\x20%s','request\x20sent','debug','UserFaxQueue,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x17f455,_0x175a58){var _0x526edb=function(_0x17a831){while(--_0x17a831){_0x17f455['push'](_0x17f455['shift']());}};_0x526edb(++_0x175a58);}(_0xdd30,0x144));var _0x0dd3=function(_0x47b0a4,_0x457d86){_0x47b0a4=_0x47b0a4-0x0;var _0x2296bd=_0xdd30[_0x47b0a4];return _0x2296bd;};'use strict';var _=require('lodash');var util=require(_0x0dd3('0x0'));var moment=require('moment');var BPromise=require(_0x0dd3('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0dd3('0x2'));var db=require(_0x0dd3('0x3'))['db'];var utils=require(_0x0dd3('0x4'));var logger=require(_0x0dd3('0x5'))('rpc');var config=require(_0x0dd3('0x6'));var jayson=require(_0x0dd3('0x7'));var client=jayson['client'][_0x0dd3('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x32a08d,_0x5bfafc,_0x100563){return new BPromise(function(_0xbfdbd4,_0x5fc804){return client['request'](_0x32a08d,_0x100563)[_0x0dd3('0x9')](function(_0xdfb7db){logger[_0x0dd3('0xa')](_0x0dd3('0xb'),_0x5bfafc,_0x0dd3('0xc'));logger[_0x0dd3('0xd')](_0x0dd3('0xe'),_0x5bfafc,'request\x20sent',JSON[_0x0dd3('0xf')](_0xdfb7db));if(_0xdfb7db[_0x0dd3('0x10')]){if(_0xdfb7db[_0x0dd3('0x10')][_0x0dd3('0x11')]===0x1f4){logger['error'](_0x0dd3('0xb'),_0x5bfafc,_0xdfb7db[_0x0dd3('0x10')][_0x0dd3('0x12')]);return _0x5fc804(_0xdfb7db['error'][_0x0dd3('0x12')]);}logger[_0x0dd3('0x10')](_0x0dd3('0xb'),_0x5bfafc,_0xdfb7db['error'][_0x0dd3('0x12')]);return _0xbfdbd4(_0xdfb7db[_0x0dd3('0x10')][_0x0dd3('0x12')]);}else{logger[_0x0dd3('0xa')](_0x0dd3('0xb'),_0x5bfafc,_0x0dd3('0xc'));_0xbfdbd4(_0xdfb7db[_0x0dd3('0x13')][_0x0dd3('0x12')]);}})['catch'](function(_0x4574d6){logger[_0x0dd3('0x10')](_0x0dd3('0xb'),_0x5bfafc,_0x4574d6);_0x5fc804(_0x4574d6);});});}
\ No newline at end of file
index 4cefd26..04f4191 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(_0x5cb76d,_0x47d11a){var _0x34a1f2=function(_0x189bc8){while(--_0x189bc8){_0x5cb76d['push'](_0x5cb76d['shift']());}};_0x34a1f2(++_0x47d11a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x38a7ac,_0x45514b){_0x38a7ac=_0x38a7ac-0x0;var _0x53061a=_0xa9e0[_0x38a7ac];return _0x53061a;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
+var _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0xbe61bd,_0x36d1b8){var _0x20d892=function(_0x467ed4){while(--_0x467ed4){_0xbe61bd['push'](_0xbe61bd['shift']());}};_0x20d892(++_0x36d1b8);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x304b67,_0x31cb39){_0x304b67=_0x304b67-0x0;var _0x493afb=_0xcb91[_0x304b67];return _0x493afb;};'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 2165789..4de1135 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe234=['exports','INTEGER'];(function(_0x42bc91,_0x41f40a){var _0x3f5507=function(_0x20cfaf){while(--_0x20cfaf){_0x42bc91['push'](_0x42bc91['shift']());}};_0x3f5507(++_0x41f40a);}(_0xe234,0xfe));var _0x4e23=function(_0x3b917a,_0x22aad6){_0x3b917a=_0x3b917a-0x0;var _0x321be6=_0xe234[_0x3b917a];return _0x321be6;};'use strict';var Sequelize=require('sequelize');module[_0x4e23('0x0')]={'penalty':{'type':Sequelize[_0x4e23('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x2560=['exports','INTEGER'];(function(_0x338407,_0x39b591){var _0x4db7e3=function(_0x2407ad){while(--_0x2407ad){_0x338407['push'](_0x338407['shift']());}};_0x4db7e3(++_0x39b591);}(_0x2560,0xf0));var _0x0256=function(_0x383e34,_0x46a499){_0x383e34=_0x383e34-0x0;var _0x319e3b=_0x2560[_0x383e34];return _0x319e3b;};'use strict';var Sequelize=require('sequelize');module[_0x0256('0x0')]={'penalty':{'type':Sequelize[_0x0256('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 4dac7b6..60cb134 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f70=['../../config/logger','api','bluebird','request-promise','path','rimraf','./userMailQueue.attributes','UserMailQueue','util'];(function(_0xcf323f,_0x31b656){var _0x2a9135=function(_0x14ddc7){while(--_0x14ddc7){_0xcf323f['push'](_0xcf323f['shift']());}};_0x2a9135(++_0x31b656);}(_0x2f70,0x1b8));var _0x02f7=function(_0xf7ee87,_0x504bb7){_0xf7ee87=_0xf7ee87-0x0;var _0xf12d77=_0x2f70[_0xf7ee87];return _0xf12d77;};'use strict';var _=require('lodash');var util=require(_0x02f7('0x0'));var logger=require(_0x02f7('0x1'))(_0x02f7('0x2'));var moment=require('moment');var BPromise=require(_0x02f7('0x3'));var rp=require(_0x02f7('0x4'));var fs=require('fs');var path=require(_0x02f7('0x5'));var rimraf=require(_0x02f7('0x6'));var config=require('../../config/environment');var attributes=require(_0x02f7('0x7'));module['exports']=function(_0x4d6a8c,_0x3561d2){return _0x4d6a8c['define'](_0x02f7('0x8'),attributes,{'tableName':'user_has_mail_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb3b2=['path','rimraf','../../config/environment','./userMailQueue.attributes','exports','define','lodash','util','api','bluebird','request-promise'];(function(_0x4cac90,_0x371aa1){var _0x562499=function(_0x207a46){while(--_0x207a46){_0x4cac90['push'](_0x4cac90['shift']());}};_0x562499(++_0x371aa1);}(_0xb3b2,0x1be));var _0x2b3b=function(_0x49da7a,_0xbf8e78){_0x49da7a=_0x49da7a-0x0;var _0xf0dcba=_0xb3b2[_0x49da7a];return _0xf0dcba;};'use strict';var _=require(_0x2b3b('0x0'));var util=require(_0x2b3b('0x1'));var logger=require('../../config/logger')(_0x2b3b('0x2'));var moment=require('moment');var BPromise=require(_0x2b3b('0x3'));var rp=require(_0x2b3b('0x4'));var fs=require('fs');var path=require(_0x2b3b('0x5'));var rimraf=require(_0x2b3b('0x6'));var config=require(_0x2b3b('0x7'));var attributes=require(_0x2b3b('0x8'));module[_0x2b3b('0x9')]=function(_0x53b2bd,_0xb78ff8){return _0x53b2bd[_0x2b3b('0xa')]('UserMailQueue',attributes,{'tableName':'user_has_mail_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index df65b0b..ee9d369 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3cd=['catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','info','request\x20sent','debug','UserMailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','UserMailQueue,\x20%s,\x20%s','message','result'];(function(_0x2fd299,_0x34886b){var _0x2a5ab4=function(_0x5b20e4){while(--_0x5b20e4){_0x2fd299['push'](_0x2fd299['shift']());}};_0x2a5ab4(++_0x34886b);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x32f05c,_0x273aef){_0x32f05c=_0x32f05c-0x0;var _0x4307ed=_0xf3cd[_0x32f05c];return _0x4307ed;};'use strict';var _=require(_0xdf3c('0x0'));var util=require(_0xdf3c('0x1'));var moment=require(_0xdf3c('0x2'));var BPromise=require(_0xdf3c('0x3'));var rs=require(_0xdf3c('0x4'));var fs=require('fs');var Redis=require(_0xdf3c('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xdf3c('0x6'));var logger=require(_0xdf3c('0x7'))(_0xdf3c('0x8'));var config=require('../../config/environment');var jayson=require(_0xdf3c('0x9'));var client=jayson[_0xdf3c('0xa')][_0xdf3c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1f0601,_0x106021,_0x28edae){return new BPromise(function(_0x52c073,_0x15705d){return client['request'](_0x1f0601,_0x28edae)['then'](function(_0x22d8ae){logger[_0xdf3c('0xc')]('UserMailQueue,\x20%s,\x20%s',_0x106021,_0xdf3c('0xd'));logger[_0xdf3c('0xe')](_0xdf3c('0xf'),_0x106021,_0xdf3c('0xd'),JSON[_0xdf3c('0x10')](_0x22d8ae));if(_0x22d8ae[_0xdf3c('0x11')]){if(_0x22d8ae[_0xdf3c('0x11')][_0xdf3c('0x12')]===0x1f4){logger['error'](_0xdf3c('0x13'),_0x106021,_0x22d8ae[_0xdf3c('0x11')][_0xdf3c('0x14')]);return _0x15705d(_0x22d8ae[_0xdf3c('0x11')]['message']);}logger[_0xdf3c('0x11')](_0xdf3c('0x13'),_0x106021,_0x22d8ae[_0xdf3c('0x11')]['message']);return _0x52c073(_0x22d8ae[_0xdf3c('0x11')][_0xdf3c('0x14')]);}else{logger[_0xdf3c('0xc')](_0xdf3c('0x13'),_0x106021,_0xdf3c('0xd'));_0x52c073(_0x22d8ae[_0xdf3c('0x15')][_0xdf3c('0x14')]);}})[_0xdf3c('0x16')](function(_0x2986d0){logger[_0xdf3c('0x11')]('UserMailQueue,\x20%s,\x20%s',_0x106021,_0x2986d0);_0x15705d(_0x2986d0);});});}
\ No newline at end of file
+var _0xf3cd=['catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','info','request\x20sent','debug','UserMailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','UserMailQueue,\x20%s,\x20%s','message','result'];(function(_0xb60622,_0x27b7a8){var _0x52b970=function(_0xde6789){while(--_0xde6789){_0xb60622['push'](_0xb60622['shift']());}};_0x52b970(++_0x27b7a8);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x49c68e,_0x1c1673){_0x49c68e=_0x49c68e-0x0;var _0x33032b=_0xf3cd[_0x49c68e];return _0x33032b;};'use strict';var _=require(_0xdf3c('0x0'));var util=require(_0xdf3c('0x1'));var moment=require(_0xdf3c('0x2'));var BPromise=require(_0xdf3c('0x3'));var rs=require(_0xdf3c('0x4'));var fs=require('fs');var Redis=require(_0xdf3c('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xdf3c('0x6'));var logger=require(_0xdf3c('0x7'))(_0xdf3c('0x8'));var config=require('../../config/environment');var jayson=require(_0xdf3c('0x9'));var client=jayson[_0xdf3c('0xa')][_0xdf3c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1f0601,_0x106021,_0x28edae){return new BPromise(function(_0x52c073,_0x15705d){return client['request'](_0x1f0601,_0x28edae)['then'](function(_0x22d8ae){logger[_0xdf3c('0xc')]('UserMailQueue,\x20%s,\x20%s',_0x106021,_0xdf3c('0xd'));logger[_0xdf3c('0xe')](_0xdf3c('0xf'),_0x106021,_0xdf3c('0xd'),JSON[_0xdf3c('0x10')](_0x22d8ae));if(_0x22d8ae[_0xdf3c('0x11')]){if(_0x22d8ae[_0xdf3c('0x11')][_0xdf3c('0x12')]===0x1f4){logger['error'](_0xdf3c('0x13'),_0x106021,_0x22d8ae[_0xdf3c('0x11')][_0xdf3c('0x14')]);return _0x15705d(_0x22d8ae[_0xdf3c('0x11')]['message']);}logger[_0xdf3c('0x11')](_0xdf3c('0x13'),_0x106021,_0x22d8ae[_0xdf3c('0x11')]['message']);return _0x52c073(_0x22d8ae[_0xdf3c('0x11')][_0xdf3c('0x14')]);}else{logger[_0xdf3c('0xc')](_0xdf3c('0x13'),_0x106021,_0xdf3c('0xd'));_0x52c073(_0x22d8ae[_0xdf3c('0x15')][_0xdf3c('0x14')]);}})[_0xdf3c('0x16')](function(_0x2986d0){logger[_0xdf3c('0x11')]('UserMailQueue,\x20%s,\x20%s',_0x106021,_0x2986d0);_0x15705d(_0x2986d0);});});}
\ No newline at end of file
index cc4226a..f0de080 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe6c3=['post','sendUserNotification','exports','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0xaf29da,_0x117f5a){var _0x295c51=function(_0x3feaf4){while(--_0x3feaf4){_0xaf29da['push'](_0xaf29da['shift']());}};_0x295c51(++_0x117f5a);}(_0xe6c3,0xcb));var _0x3e6c=function(_0x431939,_0x272af9){_0x431939=_0x431939-0x0;var _0x4debbc=_0xe6c3[_0x431939];return _0x4debbc;};'use strict';var multer=require('multer');var util=require(_0x3e6c('0x0'));var path=require('path');var timeout=require(_0x3e6c('0x1'));var express=require(_0x3e6c('0x2'));var router=express[_0x3e6c('0x3')]();var fs_extra=require(_0x3e6c('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3e6c('0x5'));var config=require(_0x3e6c('0x6'));var controller=require('./userNotification.controller');router[_0x3e6c('0x7')]('/',auth['isAuthenticated'](),controller[_0x3e6c('0x8')]);module[_0x3e6c('0x9')]=router;
\ No newline at end of file
+var _0x35b1=['./userNotification.controller','isAuthenticated','sendUserNotification','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x55de4e,_0x364f90){var _0x5268de=function(_0xa33fea){while(--_0xa33fea){_0x55de4e['push'](_0x55de4e['shift']());}};_0x5268de(++_0x364f90);}(_0x35b1,0x70));var _0x135b=function(_0x4c825d,_0x10ec2b){_0x4c825d=_0x4c825d-0x0;var _0x43de87=_0x35b1[_0x4c825d];return _0x43de87;};'use strict';var multer=require(_0x135b('0x0'));var util=require(_0x135b('0x1'));var path=require('path');var timeout=require(_0x135b('0x2'));var express=require(_0x135b('0x3'));var router=express[_0x135b('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x135b('0x5'));var interaction=require(_0x135b('0x6'));var config=require(_0x135b('0x7'));var controller=require(_0x135b('0x8'));router['post']('/',auth[_0x135b('0x9')](),controller[_0x135b('0xa')]);module[_0x135b('0xb')]=router;
\ No newline at end of file
index a18d8f9..1cc3f79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa746=['sequelize','exports','STRING'];(function(_0xfb4410,_0x4f0eab){var _0x41aaa3=function(_0x381a00){while(--_0x381a00){_0xfb4410['push'](_0xfb4410['shift']());}};_0x41aaa3(++_0x4f0eab);}(_0xa746,0x87));var _0x6a74=function(_0x2cdb22,_0x3e7ea0){_0x2cdb22=_0x2cdb22-0x0;var _0x2d66a9=_0xa746[_0x2cdb22];return _0x2d66a9;};'use strict';var Sequelize=require(_0x6a74('0x0'));module[_0x6a74('0x1')]={'body':{'type':Sequelize['TEXT']},'senderName':{'type':Sequelize[_0x6a74('0x2')]},'recipientsId':{'type':Sequelize['TEXT']},'recipientsDescription':{'type':Sequelize[_0x6a74('0x2')]},'beep':{'type':Sequelize['BOOLEAN']}};
\ No newline at end of file
+var _0xbe78=['TEXT','STRING','sequelize'];(function(_0x1a9204,_0x1c9e00){var _0x17ca68=function(_0x1f4399){while(--_0x1f4399){_0x1a9204['push'](_0x1a9204['shift']());}};_0x17ca68(++_0x1c9e00);}(_0xbe78,0x14f));var _0x8be7=function(_0x5a8c38,_0x59a704){_0x5a8c38=_0x5a8c38-0x0;var _0x40d01d=_0xbe78[_0x5a8c38];return _0x40d01d;};'use strict';var Sequelize=require(_0x8be7('0x0'));module['exports']={'body':{'type':Sequelize['TEXT']},'senderName':{'type':Sequelize['STRING']},'recipientsId':{'type':Sequelize[_0x8be7('0x1')]},'recipientsDescription':{'type':Sequelize[_0x8be7('0x2')]},'beep':{'type':Sequelize['BOOLEAN']}};
\ No newline at end of file
index 5c64a6d..ada08d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd782=['end','sendStatus','error','stack','name','send','sendUserNotification','body','hasOwnProperty','text','Sequelize','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','TemplateId','view','Missing\x20\x27view\x27\x20parameter','recipients','Missing\x20\x27recipients\x27\x20parameter','parse','Invalid\x20\x27recipients\x27\x20object','chatqueue','faxqueue','mailqueue','openchannelqueue','smsqueue','whatsappqueue','user','some','includes','toLowerCase','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','recipientsDescription','beep','recipientsId','sortBy','join','transaction','UserNotification','forEach','recipient','emit','userNotification:send','catch','Template','findOne','html','Invalid\x20\x27TemplateId\x27\x20parameter','render','model','User','union','queue','Queue','ids','push','all','flatten','getAgents','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','json','offset','count','limit','status','set','Content-Range','apply','save','then','destroy'];(function(_0x5f3f88,_0x562baf){var _0xd08119=function(_0x42dbf7){while(--_0x42dbf7){_0x5f3f88['push'](_0x5f3f88['shift']());}};_0xd08119(++_0x562baf);}(_0xd782,0x9e));var _0x2d78=function(_0x270222,_0x199d50){_0x270222=_0x270222-0x0;var _0x5c575e=_0xd782[_0x270222];return _0x5c575e;};'use strict';var emlformat=require(_0x2d78('0x0'));var rimraf=require(_0x2d78('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2d78('0x2'));var rp=require(_0x2d78('0x3'));var moment=require('moment');var BPromise=require(_0x2d78('0x4'));var Mustache=require(_0x2d78('0x5'));var util=require(_0x2d78('0x6'));var path=require('path');var sox=require(_0x2d78('0x7'));var csv=require('to-csv');var ejs=require(_0x2d78('0x8'));var fs=require('fs');var fs_extra=require(_0x2d78('0x9'));var _=require('lodash');var squel=require(_0x2d78('0xa'));var crypto=require(_0x2d78('0xb'));var jsforce=require(_0x2d78('0xc'));var deskjs=require(_0x2d78('0xd'));var toCsv=require(_0x2d78('0xe'));var querystring=require(_0x2d78('0xf'));var Papa=require(_0x2d78('0x10'));var Redis=require(_0x2d78('0x11'));var authService=require(_0x2d78('0x12'));var qs=require(_0x2d78('0x13'));var as=require(_0x2d78('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2d78('0x15'))(_0x2d78('0x16'));var utils=require(_0x2d78('0x17'));var config=require(_0x2d78('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x2d78('0x19'))['db'];config[_0x2d78('0x1a')]=_['defaults'](config[_0x2d78('0x1a')],{'host':_0x2d78('0x1b'),'port':0x18eb});var socket=require(_0x2d78('0x1c'))(new Redis(config[_0x2d78('0x1a')]));require('./userNotification.socket')['register'](socket);function respondWithStatusCode(_0x260f81,_0x5c6b66){_0x5c6b66=_0x5c6b66||0xcc;return function(_0xcc1897){if(_0xcc1897){return _0x260f81['sendStatus'](_0x5c6b66);}return _0x260f81['status'](_0x5c6b66)['end']();};}function respondWithResult(_0x724982,_0x333540){_0x333540=_0x333540||0xc8;return function(_0x18be2f){if(_0x18be2f){return _0x724982['status'](_0x333540)[_0x2d78('0x1d')](_0x18be2f);}};}function respondWithFilteredResult(_0x152b83,_0xb82baf){return function(_0x471c41){if(_0x471c41){var _0x132daa=typeof _0xb82baf[_0x2d78('0x1e')]==='undefined'&&typeof _0xb82baf['limit']==='undefined';var _0x51803d=_0x471c41[_0x2d78('0x1f')];var _0x41cc84=_0x132daa?0x0:_0xb82baf[_0x2d78('0x1e')];var _0x48ef9e=_0x132daa?_0x471c41[_0x2d78('0x1f')]:_0xb82baf['offset']+_0xb82baf[_0x2d78('0x20')];var _0x35d133;if(_0x48ef9e>=_0x51803d){_0x48ef9e=_0x51803d;_0x35d133=0xc8;}else{_0x35d133=0xce;}_0x152b83[_0x2d78('0x21')](_0x35d133);return _0x152b83[_0x2d78('0x22')](_0x2d78('0x23'),_0x41cc84+'-'+_0x48ef9e+'/'+_0x51803d)['json'](_0x471c41);}return null;};}function patchUpdates(_0x331d09){return function(_0xbeb032){try{jsonpatch[_0x2d78('0x24')](_0xbeb032,_0x331d09,!![]);}catch(_0x381d88){return BPromise['reject'](_0x381d88);}return _0xbeb032[_0x2d78('0x25')]();};}function saveUpdates(_0x1ab20e,_0x5943f0){return function(_0x764fa4){if(_0x764fa4){return _0x764fa4['update'](_0x1ab20e)[_0x2d78('0x26')](function(_0x31979f){return _0x31979f;});}return null;};}function removeEntity(_0x17dc0d,_0x29adb5){return function(_0x1ffbb1){if(_0x1ffbb1){return _0x1ffbb1[_0x2d78('0x27')]()[_0x2d78('0x26')](function(){_0x17dc0d[_0x2d78('0x21')](0xcc)[_0x2d78('0x28')]();});}};}function handleEntityNotFound(_0x207c28,_0x43665f){return function(_0x11a75d){if(!_0x11a75d){_0x207c28[_0x2d78('0x29')](0x194);}return _0x11a75d;};}function handleError(_0x1483bc,_0x2294d0){_0x2294d0=_0x2294d0||0x1f4;return function(_0x2e300c){logger[_0x2d78('0x2a')](_0x2e300c[_0x2d78('0x2b')]);if(_0x2e300c[_0x2d78('0x2c')]){delete _0x2e300c[_0x2d78('0x2c')];}_0x1483bc[_0x2d78('0x21')](_0x2294d0)[_0x2d78('0x2d')](_0x2e300c);};}exports[_0x2d78('0x2e')]=function(_0x3a5909,_0x2489b9,_0x2c3361){if(!_0x3a5909[_0x2d78('0x2f')][_0x2d78('0x30')](_0x2d78('0x31'))&&!_0x3a5909[_0x2d78('0x2f')][_0x2d78('0x30')]('TemplateId')){throw new db[(_0x2d78('0x32'))][(_0x2d78('0x33'))](_0x2d78('0x34'));}else{if(_0x3a5909[_0x2d78('0x2f')]['hasOwnProperty'](_0x2d78('0x35'))&&!_0x3a5909['body']['hasOwnProperty'](_0x2d78('0x36'))){throw new db['Sequelize'][(_0x2d78('0x33'))](_0x2d78('0x37'));}if(!_0x3a5909['body']['hasOwnProperty'](_0x2d78('0x38'))){throw new db[(_0x2d78('0x32'))][(_0x2d78('0x33'))](_0x2d78('0x39'));}else{try{var _0x552c4b=JSON[_0x2d78('0x3a')](_0x3a5909[_0x2d78('0x2f')][_0x2d78('0x38')]);}catch(_0x348f78){logger[_0x2d78('0x2a')](_0x348f78);throw new db['Sequelize']['ValidationError'](_0x2d78('0x3b'));}var _0x5ac9f1=[_0x2d78('0x3c'),_0x2d78('0x3d'),_0x2d78('0x3e'),_0x2d78('0x3f'),_0x2d78('0x40'),'voicequeue',_0x2d78('0x41'),'team',_0x2d78('0x42')];if(_[_0x2d78('0x43')](_0x552c4b,function(_0x251951){return!_[_0x2d78('0x44')](_0x5ac9f1,_0x251951['model'][_0x2d78('0x45')]());})){throw new db[(_0x2d78('0x32'))][(_0x2d78('0x33'))](_0x2d78('0x46'));}}}var _0x53c014={};_0x53c014[_0x2d78('0x47')]=_0x3a5909[_0x2d78('0x2f')]['hasOwnProperty'](_0x2d78('0x47'))?_0x3a5909['body'][_0x2d78('0x47')]:_0x3a5909['user']['fullname'];_0x53c014[_0x2d78('0x48')]=_['isEmpty'](_0x3a5909[_0x2d78('0x2f')][_0x2d78('0x48')])?null:_0x3a5909[_0x2d78('0x2f')][_0x2d78('0x48')];_0x53c014[_0x2d78('0x49')]=_0x3a5909[_0x2d78('0x2f')][_0x2d78('0x49')]||![];_0x53c014['SenderId']=_0x3a5909[_0x2d78('0x42')]['id'];return getContent(_0x3a5909[_0x2d78('0x2f')])[_0x2d78('0x26')](function(_0x37d7c8){_0x53c014['body']=_0x37d7c8;return getRecipients(_0x552c4b);})[_0x2d78('0x26')](function(_0x35fc16){_0x53c014[_0x2d78('0x4a')]=_[_0x2d78('0x4b')](_0x35fc16)[_0x2d78('0x4c')](',');return db['sequelize'][_0x2d78('0x4d')](function(_0x269d01){return db[_0x2d78('0x4e')]['create'](_0x53c014,{'raw':!![],'transaction':_0x269d01})[_0x2d78('0x26')](function(_0x5d8e3a){var _0x3df468={'sender':_0x53c014[_0x2d78('0x47')],'description':_0x53c014[_0x2d78('0x48')],'content':_0x53c014[_0x2d78('0x2f')],'beep':_0x53c014[_0x2d78('0x49')]};_0x35fc16[_0x2d78('0x4f')](function(_0x266acd){_0x3df468[_0x2d78('0x50')]=_0x266acd;socket[_0x2d78('0x51')](_0x2d78('0x52'),_0x3df468);});return _0x5d8e3a;});});})[_0x2d78('0x26')](respondWithResult(_0x2489b9,0xc9))[_0x2d78('0x53')](handleError(_0x2489b9,null));};function getContent(_0x33195b){return new BPromise(function(_0x31bd0b,_0x5e6246){if(_0x33195b['text']){_0x31bd0b(_0x33195b[_0x2d78('0x31')]);return;}return db[_0x2d78('0x54')][_0x2d78('0x55')]({'attributes':[_0x2d78('0x56')],'where':{'id':_0x33195b['TemplateId']},'raw':!![]})[_0x2d78('0x26')](function(_0x2dc28d){if(!_0x2dc28d)throw new db[(_0x2d78('0x32'))][(_0x2d78('0x33'))](_0x2d78('0x57'));var _0xb7a880=Mustache[_0x2d78('0x58')](_0x2dc28d['html'],_0x33195b[_0x2d78('0x36')]);_0x31bd0b(_0xb7a880);})[_0x2d78('0x53')](function(_0x3aecf4){_0x5e6246(_0x3aecf4);});});}function getRecipients(_0x30e000){return new BPromise(function(_0x975fc5,_0x101063){var _0x3e3a24=[];var _0x19ebad=[];_0x30e000['forEach'](function(_0x32b115){var _0x375138=_['startCase'](_0x32b115[_0x2d78('0x59')]['toLowerCase']());if(_0x375138===_0x2d78('0x5a')){_0x3e3a24=_[_0x2d78('0x5b')](_0x3e3a24,_0x32b115['ids']);}else{if(_[_0x2d78('0x44')](_0x375138,_0x2d78('0x5c')))_0x375138=_0x375138['replace'](_0x2d78('0x5c'),_0x2d78('0x5d'));_0x32b115[_0x2d78('0x5e')][_0x2d78('0x4f')](function(_0x57b69e){_0x19ebad[_0x2d78('0x5f')](getAgents(_0x375138,_0x57b69e));});}});return BPromise[_0x2d78('0x60')](_0x19ebad)[_0x2d78('0x26')](function(_0xa69c98){_0x3e3a24=_[_0x2d78('0x5b')](_0x3e3a24,_[_0x2d78('0x61')](_0xa69c98));_0x975fc5(_0x3e3a24);})['catch'](function(_0x33cc8d){_0x101063(_0x33cc8d);});});}function getAgents(_0x62466,_0x2d73e2){return new BPromise(function(_0x229c0d,_0x42af0a){return db[_0x62466][_0x2d78('0x55')]({'where':{'id':_0x2d73e2}})['then'](function(_0x2eb5ae){return _0x2eb5ae[_0x2d78('0x62')]({'attributes':['id'],'raw':!![]})[_0x2d78('0x26')](function(_0x19ac90){var _0xd752fa=_['map'](_0x19ac90,'id');_0x229c0d(_0xd752fa);});})[_0x2d78('0x53')](function(_0x4e590b){_0x42af0a(_0x4e590b);});});}
\ No newline at end of file
+var _0xad44=['forEach','recipient','userNotification:send','catch','Template','html','Invalid\x20\x27TemplateId\x27\x20parameter','render','startCase','User','union','includes','queue','Queue','ids','push','all','findOne','getAgents','map','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject','then','destroy','error','name','sendUserNotification','body','hasOwnProperty','text','TemplateId','Sequelize','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','view','Missing\x20\x27view\x27\x20parameter','recipients','Missing\x20\x27recipients\x27\x20parameter','parse','Invalid\x20\x27recipients\x27\x20object','chatqueue','faxqueue','mailqueue','smsqueue','voicequeue','whatsappqueue','user','some','toLowerCase','senderName','fullname','isEmpty','recipientsDescription','beep','SenderId','recipientsId','sortBy','join','transaction','UserNotification','create'];(function(_0x53691f,_0x12a441){var _0x7d90eb=function(_0x9ed0bc){while(--_0x9ed0bc){_0x53691f['push'](_0x53691f['shift']());}};_0x7d90eb(++_0x12a441);}(_0xad44,0x7e));var _0x4ad4=function(_0x7c9fba,_0x10b015){_0x7c9fba=_0x7c9fba-0x0;var _0x5cceed=_0xad44[_0x7c9fba];return _0x5cceed;};'use strict';var emlformat=require(_0x4ad4('0x0'));var rimraf=require(_0x4ad4('0x1'));var zipdir=require(_0x4ad4('0x2'));var jsonpatch=require(_0x4ad4('0x3'));var rp=require(_0x4ad4('0x4'));var moment=require(_0x4ad4('0x5'));var BPromise=require(_0x4ad4('0x6'));var Mustache=require(_0x4ad4('0x7'));var util=require(_0x4ad4('0x8'));var path=require(_0x4ad4('0x9'));var sox=require(_0x4ad4('0xa'));var csv=require(_0x4ad4('0xb'));var ejs=require(_0x4ad4('0xc'));var fs=require('fs');var fs_extra=require(_0x4ad4('0xd'));var _=require(_0x4ad4('0xe'));var squel=require(_0x4ad4('0xf'));var crypto=require(_0x4ad4('0x10'));var jsforce=require(_0x4ad4('0x11'));var deskjs=require(_0x4ad4('0x12'));var toCsv=require(_0x4ad4('0xb'));var querystring=require(_0x4ad4('0x13'));var Papa=require(_0x4ad4('0x14'));var Redis=require(_0x4ad4('0x15'));var authService=require(_0x4ad4('0x16'));var qs=require(_0x4ad4('0x17'));var as=require(_0x4ad4('0x18'));var hardwareService=require(_0x4ad4('0x19'));var logger=require(_0x4ad4('0x1a'))(_0x4ad4('0x1b'));var utils=require(_0x4ad4('0x1c'));var config=require(_0x4ad4('0x1d'));var licenseUtil=require(_0x4ad4('0x1e'));var db=require('../../mysqldb')['db'];config[_0x4ad4('0x1f')]=_[_0x4ad4('0x20')](config[_0x4ad4('0x1f')],{'host':_0x4ad4('0x21'),'port':0x18eb});var socket=require(_0x4ad4('0x22'))(new Redis(config[_0x4ad4('0x1f')]));require('./userNotification.socket')[_0x4ad4('0x23')](socket);function respondWithStatusCode(_0x1b020c,_0x20a14a){_0x20a14a=_0x20a14a||0xcc;return function(_0x9cdf01){if(_0x9cdf01){return _0x1b020c[_0x4ad4('0x24')](_0x20a14a);}return _0x1b020c[_0x4ad4('0x25')](_0x20a14a)[_0x4ad4('0x26')]();};}function respondWithResult(_0x22d503,_0x22dbbf){_0x22dbbf=_0x22dbbf||0xc8;return function(_0x2db005){if(_0x2db005){return _0x22d503[_0x4ad4('0x25')](_0x22dbbf)[_0x4ad4('0x27')](_0x2db005);}};}function respondWithFilteredResult(_0x2d37b6,_0x2f3546){return function(_0x8ffa14){if(_0x8ffa14){var _0x83a4e3=typeof _0x2f3546[_0x4ad4('0x28')]==='undefined'&&typeof _0x2f3546[_0x4ad4('0x29')]===_0x4ad4('0x2a');var _0x50ab48=_0x8ffa14[_0x4ad4('0x2b')];var _0x58ba6d=_0x83a4e3?0x0:_0x2f3546[_0x4ad4('0x28')];var _0x3f3654=_0x83a4e3?_0x8ffa14[_0x4ad4('0x2b')]:_0x2f3546[_0x4ad4('0x28')]+_0x2f3546['limit'];var _0x5754b7;if(_0x3f3654>=_0x50ab48){_0x3f3654=_0x50ab48;_0x5754b7=0xc8;}else{_0x5754b7=0xce;}_0x2d37b6[_0x4ad4('0x25')](_0x5754b7);return _0x2d37b6['set'](_0x4ad4('0x2c'),_0x58ba6d+'-'+_0x3f3654+'/'+_0x50ab48)[_0x4ad4('0x27')](_0x8ffa14);}return null;};}function patchUpdates(_0x8db103){return function(_0x494924){try{jsonpatch[_0x4ad4('0x2d')](_0x494924,_0x8db103,!![]);}catch(_0x6f0cca){return BPromise[_0x4ad4('0x2e')](_0x6f0cca);}return _0x494924['save']();};}function saveUpdates(_0x1b349e,_0xf9e53e){return function(_0x5de4dc){if(_0x5de4dc){return _0x5de4dc['update'](_0x1b349e)[_0x4ad4('0x2f')](function(_0x27736b){return _0x27736b;});}return null;};}function removeEntity(_0xb10e76,_0x490ebb){return function(_0x254e94){if(_0x254e94){return _0x254e94[_0x4ad4('0x30')]()['then'](function(){_0xb10e76['status'](0xcc)[_0x4ad4('0x26')]();});}};}function handleEntityNotFound(_0x421e75,_0x480919){return function(_0x52c192){if(!_0x52c192){_0x421e75[_0x4ad4('0x24')](0x194);}return _0x52c192;};}function handleError(_0x5a08c2,_0x19cac0){_0x19cac0=_0x19cac0||0x1f4;return function(_0x1a3976){logger[_0x4ad4('0x31')](_0x1a3976['stack']);if(_0x1a3976[_0x4ad4('0x32')]){delete _0x1a3976[_0x4ad4('0x32')];}_0x5a08c2[_0x4ad4('0x25')](_0x19cac0)['send'](_0x1a3976);};}exports[_0x4ad4('0x33')]=function(_0x3b3fe0,_0x542355,_0xab22ef){if(!_0x3b3fe0[_0x4ad4('0x34')][_0x4ad4('0x35')](_0x4ad4('0x36'))&&!_0x3b3fe0[_0x4ad4('0x34')][_0x4ad4('0x35')](_0x4ad4('0x37'))){throw new db[(_0x4ad4('0x38'))][(_0x4ad4('0x39'))](_0x4ad4('0x3a'));}else{if(_0x3b3fe0[_0x4ad4('0x34')][_0x4ad4('0x35')](_0x4ad4('0x37'))&&!_0x3b3fe0[_0x4ad4('0x34')]['hasOwnProperty'](_0x4ad4('0x3b'))){throw new db[(_0x4ad4('0x38'))]['ValidationError'](_0x4ad4('0x3c'));}if(!_0x3b3fe0[_0x4ad4('0x34')][_0x4ad4('0x35')](_0x4ad4('0x3d'))){throw new db[(_0x4ad4('0x38'))][(_0x4ad4('0x39'))](_0x4ad4('0x3e'));}else{try{var _0x38d903=JSON[_0x4ad4('0x3f')](_0x3b3fe0[_0x4ad4('0x34')]['recipients']);}catch(_0x12f97d){logger['error'](_0x12f97d);throw new db[(_0x4ad4('0x38'))][(_0x4ad4('0x39'))](_0x4ad4('0x40'));}var _0x20897d=[_0x4ad4('0x41'),_0x4ad4('0x42'),_0x4ad4('0x43'),'openchannelqueue',_0x4ad4('0x44'),_0x4ad4('0x45'),_0x4ad4('0x46'),'team',_0x4ad4('0x47')];if(_[_0x4ad4('0x48')](_0x38d903,function(_0x545dd0){return!_['includes'](_0x20897d,_0x545dd0['model'][_0x4ad4('0x49')]());})){throw new db[(_0x4ad4('0x38'))][(_0x4ad4('0x39'))]('Invalid\x20model\x20in\x20\x27recipients\x27\x20object');}}}var _0x27eac0={};_0x27eac0[_0x4ad4('0x4a')]=_0x3b3fe0[_0x4ad4('0x34')][_0x4ad4('0x35')]('senderName')?_0x3b3fe0[_0x4ad4('0x34')]['senderName']:_0x3b3fe0['user'][_0x4ad4('0x4b')];_0x27eac0['recipientsDescription']=_[_0x4ad4('0x4c')](_0x3b3fe0['body'][_0x4ad4('0x4d')])?null:_0x3b3fe0[_0x4ad4('0x34')]['recipientsDescription'];_0x27eac0[_0x4ad4('0x4e')]=_0x3b3fe0[_0x4ad4('0x34')][_0x4ad4('0x4e')]||![];_0x27eac0[_0x4ad4('0x4f')]=_0x3b3fe0['user']['id'];return getContent(_0x3b3fe0[_0x4ad4('0x34')])['then'](function(_0xaf9a27){_0x27eac0[_0x4ad4('0x34')]=_0xaf9a27;return getRecipients(_0x38d903);})['then'](function(_0x2ae49f){_0x27eac0[_0x4ad4('0x50')]=_[_0x4ad4('0x51')](_0x2ae49f)[_0x4ad4('0x52')](',');return db['sequelize'][_0x4ad4('0x53')](function(_0x43d89e){return db[_0x4ad4('0x54')][_0x4ad4('0x55')](_0x27eac0,{'raw':!![],'transaction':_0x43d89e})[_0x4ad4('0x2f')](function(_0x2d32d2){var _0x33c013={'sender':_0x27eac0[_0x4ad4('0x4a')],'description':_0x27eac0['recipientsDescription'],'content':_0x27eac0[_0x4ad4('0x34')],'beep':_0x27eac0['beep']};_0x2ae49f[_0x4ad4('0x56')](function(_0x458c16){_0x33c013[_0x4ad4('0x57')]=_0x458c16;socket['emit'](_0x4ad4('0x58'),_0x33c013);});return _0x2d32d2;});});})[_0x4ad4('0x2f')](respondWithResult(_0x542355,0xc9))[_0x4ad4('0x59')](handleError(_0x542355,null));};function getContent(_0x482376){return new BPromise(function(_0x4dc193,_0x212a8a){if(_0x482376[_0x4ad4('0x36')]){_0x4dc193(_0x482376[_0x4ad4('0x36')]);return;}return db[_0x4ad4('0x5a')]['findOne']({'attributes':[_0x4ad4('0x5b')],'where':{'id':_0x482376[_0x4ad4('0x37')]},'raw':!![]})[_0x4ad4('0x2f')](function(_0x1fe8b0){if(!_0x1fe8b0)throw new db[(_0x4ad4('0x38'))][(_0x4ad4('0x39'))](_0x4ad4('0x5c'));var _0x50b673=Mustache[_0x4ad4('0x5d')](_0x1fe8b0[_0x4ad4('0x5b')],_0x482376[_0x4ad4('0x3b')]);_0x4dc193(_0x50b673);})[_0x4ad4('0x59')](function(_0x1fb62d){_0x212a8a(_0x1fb62d);});});}function getRecipients(_0x4315a5){return new BPromise(function(_0x4b27f1,_0x53cd26){var _0x4f3d3e=[];var _0x230221=[];_0x4315a5[_0x4ad4('0x56')](function(_0x3bae2b){var _0x451945=_[_0x4ad4('0x5e')](_0x3bae2b['model'][_0x4ad4('0x49')]());if(_0x451945===_0x4ad4('0x5f')){_0x4f3d3e=_[_0x4ad4('0x60')](_0x4f3d3e,_0x3bae2b['ids']);}else{if(_[_0x4ad4('0x61')](_0x451945,_0x4ad4('0x62')))_0x451945=_0x451945['replace'](_0x4ad4('0x62'),_0x4ad4('0x63'));_0x3bae2b[_0x4ad4('0x64')][_0x4ad4('0x56')](function(_0x5b26f8){_0x230221[_0x4ad4('0x65')](getAgents(_0x451945,_0x5b26f8));});}});return BPromise[_0x4ad4('0x66')](_0x230221)[_0x4ad4('0x2f')](function(_0x199992){_0x4f3d3e=_[_0x4ad4('0x60')](_0x4f3d3e,_['flatten'](_0x199992));_0x4b27f1(_0x4f3d3e);})[_0x4ad4('0x59')](function(_0x3fd02f){_0x53cd26(_0x3fd02f);});});}function getAgents(_0x252659,_0x493f9d){return new BPromise(function(_0x2d17e0,_0x420144){return db[_0x252659][_0x4ad4('0x67')]({'where':{'id':_0x493f9d}})[_0x4ad4('0x2f')](function(_0x311b0c){return _0x311b0c[_0x4ad4('0x68')]({'attributes':['id'],'raw':!![]})[_0x4ad4('0x2f')](function(_0x5e1dc7){var _0x1c7293=_[_0x4ad4('0x69')](_0x5e1dc7,'id');_0x2d17e0(_0x1c7293);});})['catch'](function(_0xdbfb69){_0x420144(_0xdbfb69);});});}
\ No newline at end of file
index 163c2da..d3db3f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23aa=['hook','exports','events','UserNotification','save','update','remove','emit','hasOwnProperty'];(function(_0x2b4411,_0x2625ed){var _0x8e41ef=function(_0x2aa8c1){while(--_0x2aa8c1){_0x2b4411['push'](_0x2b4411['shift']());}};_0x8e41ef(++_0x2625ed);}(_0x23aa,0x80));var _0xa23a=function(_0x39614c,_0x183c94){_0x39614c=_0x39614c-0x0;var _0x4958cd=_0x23aa[_0x39614c];return _0x4958cd;};'use strict';var EventEmitter=require(_0xa23a('0x0'));var UserNotification=require('../../mysqldb')['db'][_0xa23a('0x1')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xa23a('0x2'),'afterUpdate':_0xa23a('0x3'),'afterDestroy':_0xa23a('0x4')};function emitEvent(_0x4b512b){return function(_0x2237b2,_0xfeb670,_0x313418){UserNotificationEvents[_0xa23a('0x5')](_0x4b512b+':'+_0x2237b2['id'],_0x2237b2);UserNotificationEvents[_0xa23a('0x5')](_0x4b512b,_0x2237b2);_0x313418(null);};}for(var e in events){if(events[_0xa23a('0x6')](e)){var event=events[e];UserNotification[_0xa23a('0x7')](e,emitEvent(event));}}module[_0xa23a('0x8')]=UserNotificationEvents;
\ No newline at end of file
+var _0x302d=['UserNotification','setMaxListeners','save','update','emit','hasOwnProperty','exports','../../mysqldb'];(function(_0x411add,_0x1aed38){var _0x238242=function(_0x4a1cd5){while(--_0x4a1cd5){_0x411add['push'](_0x411add['shift']());}};_0x238242(++_0x1aed38);}(_0x302d,0x1e7));var _0xd302=function(_0x237ede,_0x305253){_0x237ede=_0x237ede-0x0;var _0x39502d=_0x302d[_0x237ede];return _0x39502d;};'use strict';var EventEmitter=require('events');var UserNotification=require(_0xd302('0x0'))['db'][_0xd302('0x1')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0xd302('0x2')](0x0);var events={'afterCreate':_0xd302('0x3'),'afterUpdate':_0xd302('0x4'),'afterDestroy':'remove'};function emitEvent(_0x57285f){return function(_0x52fc75,_0x4e8ff2,_0x425661){UserNotificationEvents[_0xd302('0x5')](_0x57285f+':'+_0x52fc75['id'],_0x52fc75);UserNotificationEvents['emit'](_0x57285f,_0x52fc75);_0x425661(null);};}for(var e in events){if(events[_0xd302('0x6')](e)){var event=events[e];UserNotification['hook'](e,emitEvent(event));}}module[_0xd302('0x7')]=UserNotificationEvents;
\ No newline at end of file
index cb2b4db..6885f3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1305=['bluebird','request-promise','path','rimraf','./userNotification.attributes','exports','define','UserNotification','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment'];(function(_0x2f6702,_0x1fe336){var _0x567352=function(_0x149ca4){while(--_0x149ca4){_0x2f6702['push'](_0x2f6702['shift']());}};_0x567352(++_0x1fe336);}(_0x1305,0x172));var _0x5130=function(_0x12de2b,_0x565585){_0x12de2b=_0x12de2b-0x0;var _0x248c02=_0x1305[_0x12de2b];return _0x248c02;};'use strict';var _=require(_0x5130('0x0'));var util=require(_0x5130('0x1'));var logger=require(_0x5130('0x2'))(_0x5130('0x3'));var moment=require(_0x5130('0x4'));var BPromise=require(_0x5130('0x5'));var rp=require(_0x5130('0x6'));var fs=require('fs');var path=require(_0x5130('0x7'));var rimraf=require(_0x5130('0x8'));var config=require('../../config/environment');var attributes=require(_0x5130('0x9'));module[_0x5130('0xa')]=function(_0xf832f8,_0x5a2618){return _0xf832f8[_0x5130('0xb')](_0x5130('0xc'),attributes,{'tableName':'userNotifications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x5130('0xd'),'collate':_0x5130('0xe')});};
\ No newline at end of file
+var _0xdc72=['../../config/environment','exports','define','userNotifications','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','bluebird','path','rimraf'];(function(_0xbf4b19,_0x477399){var _0x460c6a=function(_0x38023f){while(--_0x38023f){_0xbf4b19['push'](_0xbf4b19['shift']());}};_0x460c6a(++_0x477399);}(_0xdc72,0xf6));var _0x2dc7=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xdc72[_0x3ab51d];return _0x29a04e;};'use strict';var _=require(_0x2dc7('0x0'));var util=require(_0x2dc7('0x1'));var logger=require('../../config/logger')(_0x2dc7('0x2'));var moment=require('moment');var BPromise=require(_0x2dc7('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2dc7('0x4'));var rimraf=require(_0x2dc7('0x5'));var config=require(_0x2dc7('0x6'));var attributes=require('./userNotification.attributes');module[_0x2dc7('0x7')]=function(_0x461c2d,_0x37ef60){return _0x461c2d[_0x2dc7('0x8')]('UserNotification',attributes,{'tableName':_0x2dc7('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x2dc7('0xa'),'collate':_0x2dc7('0xb')});};
\ No newline at end of file
index 6beb730..0aded2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd9a=['request\x20sent','stringify','error','code','UserNotification,\x20%s,\x20%s','message','catch','lodash','moment','bluebird','ioredis','../../config/utils','../../config/logger','../../config/environment','client','redis','defaults','localhost','socket.io-emitter','register','request','then','info'];(function(_0x242eb9,_0x56376d){var _0xc7e2a0=function(_0x251b94){while(--_0x251b94){_0x242eb9['push'](_0x242eb9['shift']());}};_0xc7e2a0(++_0x56376d);}(_0xcd9a,0x1ea));var _0xacd9=function(_0x19a85f,_0x50ea42){_0x19a85f=_0x19a85f-0x0;var _0x2a8c76=_0xcd9a[_0x19a85f];return _0x2a8c76;};'use strict';var _=require(_0xacd9('0x0'));var util=require('util');var moment=require(_0xacd9('0x1'));var BPromise=require(_0xacd9('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xacd9('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xacd9('0x4'));var logger=require(_0xacd9('0x5'))('rpc');var config=require(_0xacd9('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xacd9('0x7')]['http']({'port':0x232a});config[_0xacd9('0x8')]=_[_0xacd9('0x9')](config['redis'],{'host':_0xacd9('0xa'),'port':0x18eb});var socket=require(_0xacd9('0xb'))(new Redis(config['redis']));require('./userNotification.socket')[_0xacd9('0xc')](socket);function respondWithRpcPromise(_0x1f3895,_0x3b72f7,_0x51d15c){return new BPromise(function(_0x10a8f9,_0x239891){return client[_0xacd9('0xd')](_0x1f3895,_0x51d15c)[_0xacd9('0xe')](function(_0x540df6){logger[_0xacd9('0xf')]('UserNotification,\x20%s,\x20%s',_0x3b72f7,'request\x20sent');logger['debug']('UserNotification,\x20%s,\x20%s,\x20%s',_0x3b72f7,_0xacd9('0x10'),JSON[_0xacd9('0x11')](_0x540df6));if(_0x540df6[_0xacd9('0x12')]){if(_0x540df6['error'][_0xacd9('0x13')]===0x1f4){logger[_0xacd9('0x12')](_0xacd9('0x14'),_0x3b72f7,_0x540df6[_0xacd9('0x12')]['message']);return _0x239891(_0x540df6[_0xacd9('0x12')][_0xacd9('0x15')]);}logger['error'](_0xacd9('0x14'),_0x3b72f7,_0x540df6[_0xacd9('0x12')]['message']);return _0x10a8f9(_0x540df6['error']['message']);}else{logger[_0xacd9('0xf')](_0xacd9('0x14'),_0x3b72f7,_0xacd9('0x10'));_0x10a8f9(_0x540df6['result'][_0xacd9('0x15')]);}})[_0xacd9('0x16')](function(_0x4bf7d8){logger[_0xacd9('0x12')](_0xacd9('0x14'),_0x3b72f7,_0x4bf7d8);_0x239891(_0x4bf7d8);});});}
\ No newline at end of file
+var _0x5cd6=['moment','../../mysqldb','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./userNotification.socket','then','info','UserNotification,\x20%s,\x20%s','request\x20sent','debug','UserNotification,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash'];(function(_0x1ca4c3,_0x554126){var _0x4426a6=function(_0x11e9b0){while(--_0x11e9b0){_0x1ca4c3['push'](_0x1ca4c3['shift']());}};_0x4426a6(++_0x554126);}(_0x5cd6,0x11d));var _0x65cd=function(_0x2ef44b,_0x553359){_0x2ef44b=_0x2ef44b-0x0;var _0x2405b9=_0x5cd6[_0x2ef44b];return _0x2405b9;};'use strict';var _=require(_0x65cd('0x0'));var util=require('util');var moment=require(_0x65cd('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x65cd('0x2'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x65cd('0x3'));var jayson=require(_0x65cd('0x4'));var client=jayson[_0x65cd('0x5')][_0x65cd('0x6')]({'port':0x232a});config[_0x65cd('0x7')]=_[_0x65cd('0x8')](config[_0x65cd('0x7')],{'host':'localhost','port':0x18eb});var socket=require(_0x65cd('0x9'))(new Redis(config[_0x65cd('0x7')]));require(_0x65cd('0xa'))['register'](socket);function respondWithRpcPromise(_0x3827d0,_0x294918,_0x5627fa){return new BPromise(function(_0x336dc9,_0x5ee0d9){return client['request'](_0x3827d0,_0x5627fa)[_0x65cd('0xb')](function(_0x481be8){logger[_0x65cd('0xc')](_0x65cd('0xd'),_0x294918,_0x65cd('0xe'));logger[_0x65cd('0xf')](_0x65cd('0x10'),_0x294918,'request\x20sent',JSON[_0x65cd('0x11')](_0x481be8));if(_0x481be8[_0x65cd('0x12')]){if(_0x481be8[_0x65cd('0x12')]['code']===0x1f4){logger[_0x65cd('0x12')](_0x65cd('0xd'),_0x294918,_0x481be8[_0x65cd('0x12')][_0x65cd('0x13')]);return _0x5ee0d9(_0x481be8[_0x65cd('0x12')]['message']);}logger[_0x65cd('0x12')](_0x65cd('0xd'),_0x294918,_0x481be8[_0x65cd('0x12')]['message']);return _0x336dc9(_0x481be8[_0x65cd('0x12')][_0x65cd('0x13')]);}else{logger[_0x65cd('0xc')]('UserNotification,\x20%s,\x20%s',_0x294918,'request\x20sent');_0x336dc9(_0x481be8[_0x65cd('0x14')][_0x65cd('0x13')]);}})[_0x65cd('0x15')](function(_0x55b62e){logger[_0x65cd('0x12')](_0x65cd('0xd'),_0x294918,_0x55b62e);_0x5ee0d9(_0x55b62e);});});}
\ No newline at end of file
index ecbbe03..4e22e43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0f4=['length','remove','update','emit','removeListener','register'];(function(_0x25ad30,_0x4d9cb8){var _0x97c45e=function(_0x2f3b62){while(--_0x2f3b62){_0x25ad30['push'](_0x25ad30['shift']());}};_0x97c45e(++_0x4d9cb8);}(_0xa0f4,0xeb));var _0x4a0f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa0f4[_0x3dd15e];return _0x231fd0;};'use strict';var UserNotificationEvents=require('./userNotification.events');var events=['save',_0x4a0f('0x0'),_0x4a0f('0x1')];function createListener(_0x5e1b1d,_0xe9142b){return function(_0x5de8b1){_0xe9142b[_0x4a0f('0x2')](_0x5e1b1d,_0x5de8b1);};}function removeListener(_0x11ca7d,_0x5e2d5b){return function(){UserNotificationEvents[_0x4a0f('0x3')](_0x11ca7d,_0x5e2d5b);};}exports[_0x4a0f('0x4')]=function(_0x468406){for(var _0x69daef=0x0,_0x1e73dc=events[_0x4a0f('0x5')];_0x69daef<_0x1e73dc;_0x69daef++){var _0x39f9c9=events[_0x69daef];var _0x54e1d4=createListener('userNotification:'+_0x39f9c9,_0x468406);UserNotificationEvents['on'](_0x39f9c9,_0x54e1d4);}};
\ No newline at end of file
+var _0xa5e9=['save','remove','update','emit','removeListener','register','length','./userNotification.events'];(function(_0x55e08b,_0x421620){var _0xd1a7ff=function(_0x58c7ff){while(--_0x58c7ff){_0x55e08b['push'](_0x55e08b['shift']());}};_0xd1a7ff(++_0x421620);}(_0xa5e9,0x15f));var _0x9a5e=function(_0x72a33d,_0x5691da){_0x72a33d=_0x72a33d-0x0;var _0x2621d5=_0xa5e9[_0x72a33d];return _0x2621d5;};'use strict';var UserNotificationEvents=require(_0x9a5e('0x0'));var events=[_0x9a5e('0x1'),_0x9a5e('0x2'),_0x9a5e('0x3')];function createListener(_0xd660a5,_0x5e9475){return function(_0x329fa6){_0x5e9475[_0x9a5e('0x4')](_0xd660a5,_0x329fa6);};}function removeListener(_0x2c56e5,_0xff0114){return function(){UserNotificationEvents[_0x9a5e('0x5')](_0x2c56e5,_0xff0114);};}exports[_0x9a5e('0x6')]=function(_0x3fa69b){for(var _0x21579d=0x0,_0x18f8ea=events[_0x9a5e('0x7')];_0x21579d<_0x18f8ea;_0x21579d++){var _0x19069c=events[_0x21579d];var _0x2f9c4b=createListener('userNotification:'+_0x19069c,_0x3fa69b);UserNotificationEvents['on'](_0x19069c,_0x2f9c4b);}};
\ No newline at end of file
index 9cc81aa..bc61419 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(_0x1ca6a1,_0x13a708){var _0x5ddb07=function(_0x13fb33){while(--_0x13fb33){_0x1ca6a1['push'](_0x1ca6a1['shift']());}};_0x5ddb07(++_0x13a708);}(_0xe706,0xa3));var _0x6e70=function(_0x496cdc,_0x9d6db3){_0x496cdc=_0x496cdc-0x0;var _0x103a8e=_0xe706[_0x496cdc];return _0x103a8e;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
+var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x3541e4,_0x4dcf9a){var _0x3ca5d9=function(_0x3eaac2){while(--_0x3eaac2){_0x3541e4['push'](_0x3541e4['shift']());}};_0x3ca5d9(++_0x4dcf9a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4709c0,_0x3396c7){_0x4709c0=_0x4709c0-0x0;var _0x13348b=_0xa9e0[_0x4709c0];return _0x13348b;};'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 72e161f..6e29c3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0178=['exports','INTEGER','sequelize'];(function(_0x4ac98a,_0x239b8a){var _0x3f0fe2=function(_0x1a9d77){while(--_0x1a9d77){_0x4ac98a['push'](_0x4ac98a['shift']());}};_0x3f0fe2(++_0x239b8a);}(_0x0178,0xce));var _0x8017=function(_0x2ff0ef,_0x2daf13){_0x2ff0ef=_0x2ff0ef-0x0;var _0x3215bc=_0x0178[_0x2ff0ef];return _0x3215bc;};'use strict';var Sequelize=require(_0x8017('0x0'));module[_0x8017('0x1')]={'penalty':{'type':Sequelize[_0x8017('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x76aa=['exports','INTEGER'];(function(_0x279d37,_0x14de3f){var _0x530173=function(_0x37fc79){while(--_0x37fc79){_0x279d37['push'](_0x279d37['shift']());}};_0x530173(++_0x14de3f);}(_0x76aa,0xc0));var _0xa76a=function(_0x3806d6,_0x5f5beb){_0x3806d6=_0x3806d6-0x0;var _0x5cff92=_0x76aa[_0x3806d6];return _0x5cff92;};'use strict';var Sequelize=require('sequelize');module[_0xa76a('0x0')]={'penalty':{'type':Sequelize[_0xa76a('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index d6ad647..8c1c67e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8927=['UserOpenchannelQueue','user_has_openchannel_queues','lodash','util','api','moment','bluebird','request-promise','path','./userOpenchannelQueue.attributes','define'];(function(_0x250986,_0x50d510){var _0x31c8ef=function(_0x4628c0){while(--_0x4628c0){_0x250986['push'](_0x250986['shift']());}};_0x31c8ef(++_0x50d510);}(_0x8927,0xde));var _0x7892=function(_0x686d8c,_0x4dc124){_0x686d8c=_0x686d8c-0x0;var _0x4b11ae=_0x8927[_0x686d8c];return _0x4b11ae;};'use strict';var _=require(_0x7892('0x0'));var util=require(_0x7892('0x1'));var logger=require('../../config/logger')(_0x7892('0x2'));var moment=require(_0x7892('0x3'));var BPromise=require(_0x7892('0x4'));var rp=require(_0x7892('0x5'));var fs=require('fs');var path=require(_0x7892('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x7892('0x7'));module['exports']=function(_0x10675d,_0xc0bce7){return _0x10675d[_0x7892('0x8')](_0x7892('0x9'),attributes,{'tableName':_0x7892('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x20b9=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userOpenchannelQueue.attributes','define','UserOpenchannelQueue','user_has_openchannel_queues','lodash','util','../../config/logger'];(function(_0x2fbbea,_0x49174a){var _0x83e5d8=function(_0xfcac2b){while(--_0xfcac2b){_0x2fbbea['push'](_0x2fbbea['shift']());}};_0x83e5d8(++_0x49174a);}(_0x20b9,0x13f));var _0x920b=function(_0x3add52,_0x2dbb69){_0x3add52=_0x3add52-0x0;var _0x21ceb3=_0x20b9[_0x3add52];return _0x21ceb3;};'use strict';var _=require(_0x920b('0x0'));var util=require(_0x920b('0x1'));var logger=require(_0x920b('0x2'))(_0x920b('0x3'));var moment=require(_0x920b('0x4'));var BPromise=require(_0x920b('0x5'));var rp=require(_0x920b('0x6'));var fs=require('fs');var path=require(_0x920b('0x7'));var rimraf=require(_0x920b('0x8'));var config=require(_0x920b('0x9'));var attributes=require(_0x920b('0xa'));module['exports']=function(_0x3bfea5,_0x5b8ae8){return _0x3bfea5[_0x920b('0xb')](_0x920b('0xc'),attributes,{'tableName':_0x920b('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3068b12..e58ac3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7a8=['../../config/environment','jayson/promise','client','request','then','UserOpenchannelQueue,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x2ba00c,_0x182642){var _0x21712b=function(_0x1bcf8e){while(--_0x1bcf8e){_0x2ba00c['push'](_0x2ba00c['shift']());}};_0x21712b(++_0x182642);}(_0xe7a8,0x92));var _0x8e7a=function(_0xb3c46e,_0x5c15f0){_0xb3c46e=_0xb3c46e-0x0;var _0x43ad16=_0xe7a8[_0xb3c46e];return _0x43ad16;};'use strict';var _=require(_0x8e7a('0x0'));var util=require('util');var moment=require(_0x8e7a('0x1'));var BPromise=require(_0x8e7a('0x2'));var rs=require(_0x8e7a('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8e7a('0x4'))['db'];var utils=require(_0x8e7a('0x5'));var logger=require(_0x8e7a('0x6'))(_0x8e7a('0x7'));var config=require(_0x8e7a('0x8'));var jayson=require(_0x8e7a('0x9'));var client=jayson[_0x8e7a('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3e2b04,_0x2d4143,_0x4f35a8){return new BPromise(function(_0x42239a,_0x1d9bf8){return client[_0x8e7a('0xb')](_0x3e2b04,_0x4f35a8)[_0x8e7a('0xc')](function(_0x46566f){logger['info'](_0x8e7a('0xd'),_0x2d4143,_0x8e7a('0xe'));logger['debug']('UserOpenchannelQueue,\x20%s,\x20%s,\x20%s',_0x2d4143,'request\x20sent',JSON[_0x8e7a('0xf')](_0x46566f));if(_0x46566f['error']){if(_0x46566f[_0x8e7a('0x10')][_0x8e7a('0x11')]===0x1f4){logger[_0x8e7a('0x10')](_0x8e7a('0xd'),_0x2d4143,_0x46566f[_0x8e7a('0x10')][_0x8e7a('0x12')]);return _0x1d9bf8(_0x46566f[_0x8e7a('0x10')][_0x8e7a('0x12')]);}logger[_0x8e7a('0x10')](_0x8e7a('0xd'),_0x2d4143,_0x46566f[_0x8e7a('0x10')]['message']);return _0x42239a(_0x46566f['error']['message']);}else{logger[_0x8e7a('0x13')](_0x8e7a('0xd'),_0x2d4143,_0x8e7a('0xe'));_0x42239a(_0x46566f[_0x8e7a('0x14')][_0x8e7a('0x12')]);}})[_0x8e7a('0x15')](function(_0x237ebc){logger[_0x8e7a('0x10')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x2d4143,_0x237ebc);_0x1d9bf8(_0x237ebc);});});}
\ No newline at end of file
+var _0x7da6=['randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','UserOpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','moment','bluebird'];(function(_0x545f43,_0x4cb91e){var _0x7de55b=function(_0x1f3680){while(--_0x1f3680){_0x545f43['push'](_0x545f43['shift']());}};_0x7de55b(++_0x4cb91e);}(_0x7da6,0x124));var _0x67da=function(_0x3f465d,_0xbd2037){_0x3f465d=_0x3f465d-0x0;var _0x121ad1=_0x7da6[_0x3f465d];return _0x121ad1;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x67da('0x0'));var BPromise=require(_0x67da('0x1'));var rs=require(_0x67da('0x2'));var fs=require('fs');var Redis=require(_0x67da('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x67da('0x4'));var logger=require(_0x67da('0x5'))(_0x67da('0x6'));var config=require(_0x67da('0x7'));var jayson=require(_0x67da('0x8'));var client=jayson[_0x67da('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0xb7f52,_0x49025f,_0x4cfe49){return new BPromise(function(_0x3d971d,_0x5ac004){return client[_0x67da('0xa')](_0xb7f52,_0x4cfe49)['then'](function(_0x1e8a4c){logger[_0x67da('0xb')](_0x67da('0xc'),_0x49025f,_0x67da('0xd'));logger[_0x67da('0xe')](_0x67da('0xf'),_0x49025f,_0x67da('0xd'),JSON['stringify'](_0x1e8a4c));if(_0x1e8a4c[_0x67da('0x10')]){if(_0x1e8a4c[_0x67da('0x10')][_0x67da('0x11')]===0x1f4){logger[_0x67da('0x10')](_0x67da('0xc'),_0x49025f,_0x1e8a4c[_0x67da('0x10')]['message']);return _0x5ac004(_0x1e8a4c[_0x67da('0x10')][_0x67da('0x12')]);}logger[_0x67da('0x10')](_0x67da('0xc'),_0x49025f,_0x1e8a4c[_0x67da('0x10')]['message']);return _0x3d971d(_0x1e8a4c[_0x67da('0x10')][_0x67da('0x12')]);}else{logger['info'](_0x67da('0xc'),_0x49025f,_0x67da('0xd'));_0x3d971d(_0x1e8a4c[_0x67da('0x13')][_0x67da('0x12')]);}})[_0x67da('0x14')](function(_0xb3a67){logger[_0x67da('0x10')](_0x67da('0xc'),_0x49025f,_0xb3a67);_0x5ac004(_0xb3a67);});});}
\ No newline at end of file
index d56c4a2..bc2925b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x855f=['show','/:id/sections','/:id/resources','getResources','post','create','clone','addSections','addResources','delete','removeResources','exports','util','connect-timeout','express','Router','fs-extra','../../config/environment','./userProfile.controller','isAuthenticated','get','/describe','/:id'];(function(_0x3c82df,_0x59b7c5){var _0x1494e3=function(_0x4a910c){while(--_0x4a910c){_0x3c82df['push'](_0x3c82df['shift']());}};_0x1494e3(++_0x59b7c5);}(_0x855f,0x7f));var _0xf855=function(_0x34b363,_0xdad765){_0x34b363=_0x34b363-0x0;var _0x518b75=_0x855f[_0x34b363];return _0x518b75;};'use strict';var multer=require('multer');var util=require(_0xf855('0x0'));var path=require('path');var timeout=require(_0xf855('0x1'));var express=require(_0xf855('0x2'));var router=express[_0xf855('0x3')]();var fs_extra=require(_0xf855('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xf855('0x5'));var controller=require(_0xf855('0x6'));router['get']('/',auth[_0xf855('0x7')](),controller['index']);router[_0xf855('0x8')](_0xf855('0x9'),auth[_0xf855('0x7')](),controller['describe']);router['get'](_0xf855('0xa'),auth[_0xf855('0x7')](),controller[_0xf855('0xb')]);router[_0xf855('0x8')](_0xf855('0xc'),auth[_0xf855('0x7')](),controller['getSections']);router['get'](_0xf855('0xd'),auth[_0xf855('0x7')](),controller[_0xf855('0xe')]);router[_0xf855('0xf')]('/',auth[_0xf855('0x7')](),controller[_0xf855('0x10')]);router[_0xf855('0xf')]('/:id/clone',auth[_0xf855('0x7')](),controller[_0xf855('0x11')]);router[_0xf855('0xf')](_0xf855('0xc'),auth[_0xf855('0x7')](),controller[_0xf855('0x12')]);router[_0xf855('0xf')](_0xf855('0xd'),auth[_0xf855('0x7')](),controller[_0xf855('0x13')]);router['put'](_0xf855('0xa'),auth[_0xf855('0x7')](),controller['update']);router['delete'](_0xf855('0xa'),auth[_0xf855('0x7')](),controller['destroy']);router[_0xf855('0x14')](_0xf855('0xc'),auth[_0xf855('0x7')](),controller['removeSections']);router[_0xf855('0x14')]('/:id/resources',auth[_0xf855('0x7')](),controller[_0xf855('0x15')]);module[_0xf855('0x16')]=router;
\ No newline at end of file
+var _0xf906=['getSections','/:id/resources','getResources','create','post','/:id/clone','clone','addSections','put','destroy','delete','removeSections','removeResources','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfile.controller','get','isAuthenticated','describe','/:id','/:id/sections'];(function(_0x9b4cda,_0x206ec1){var _0x1ac6c5=function(_0x4ba0a3){while(--_0x4ba0a3){_0x9b4cda['push'](_0x9b4cda['shift']());}};_0x1ac6c5(++_0x206ec1);}(_0xf906,0x176));var _0x6f90=function(_0x392814,_0x2d190c){_0x392814=_0x392814-0x0;var _0x47c33d=_0xf906[_0x392814];return _0x47c33d;};'use strict';var multer=require(_0x6f90('0x0'));var util=require(_0x6f90('0x1'));var path=require(_0x6f90('0x2'));var timeout=require(_0x6f90('0x3'));var express=require(_0x6f90('0x4'));var router=express[_0x6f90('0x5')]();var fs_extra=require(_0x6f90('0x6'));var auth=require(_0x6f90('0x7'));var interaction=require(_0x6f90('0x8'));var config=require(_0x6f90('0x9'));var controller=require(_0x6f90('0xa'));router[_0x6f90('0xb')]('/',auth[_0x6f90('0xc')](),controller['index']);router[_0x6f90('0xb')]('/describe',auth[_0x6f90('0xc')](),controller[_0x6f90('0xd')]);router[_0x6f90('0xb')](_0x6f90('0xe'),auth[_0x6f90('0xc')](),controller['show']);router['get'](_0x6f90('0xf'),auth[_0x6f90('0xc')](),controller[_0x6f90('0x10')]);router[_0x6f90('0xb')](_0x6f90('0x11'),auth[_0x6f90('0xc')](),controller[_0x6f90('0x12')]);router['post']('/',auth[_0x6f90('0xc')](),controller[_0x6f90('0x13')]);router[_0x6f90('0x14')](_0x6f90('0x15'),auth[_0x6f90('0xc')](),controller[_0x6f90('0x16')]);router[_0x6f90('0x14')](_0x6f90('0xf'),auth[_0x6f90('0xc')](),controller[_0x6f90('0x17')]);router[_0x6f90('0x14')](_0x6f90('0x11'),auth[_0x6f90('0xc')](),controller['addResources']);router[_0x6f90('0x18')]('/:id',auth[_0x6f90('0xc')](),controller['update']);router['delete'](_0x6f90('0xe'),auth['isAuthenticated'](),controller[_0x6f90('0x19')]);router[_0x6f90('0x1a')](_0x6f90('0xf'),auth[_0x6f90('0xc')](),controller[_0x6f90('0x1b')]);router['delete'](_0x6f90('0x11'),auth[_0x6f90('0xc')](),controller[_0x6f90('0x1c')]);module[_0x6f90('0x1d')]=router;
\ No newline at end of file
index 6ba7b3a..2f65f03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9655=['exports','STRING','name','setDataValue','crudPermissions','join','getDataValue','split','BOOLEAN','sequelize'];(function(_0x3c2941,_0x102112){var _0x3931a4=function(_0x182580){while(--_0x182580){_0x3c2941['push'](_0x3c2941['shift']());}};_0x3931a4(++_0x102112);}(_0x9655,0x13f));var _0x5965=function(_0x750cf3,_0xe992d6){_0x750cf3=_0x750cf3-0x0;var _0x5514d4=_0x9655[_0x750cf3];return _0x5514d4;};'use strict';var Sequelize=require(_0x5965('0x0'));module[_0x5965('0x1')]={'name':{'type':Sequelize[_0x5965('0x2')],'allowNull':![],'unique':_0x5965('0x3')},'crudPermissions':{'type':Sequelize[_0x5965('0x2')],'set':function(_0x3c3d8d){this[_0x5965('0x4')](_0x5965('0x5'),_0x3c3d8d?_0x3c3d8d[_0x5965('0x6')](''):[]);},'get':function(){return this[_0x5965('0x7')](_0x5965('0x5'))?this[_0x5965('0x7')](_0x5965('0x5'))[_0x5965('0x8')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0x5965('0x2')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0x5965('0x9')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0x5965('0x9')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0x5965('0x9')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0x5965('0x9')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x5965('0x9')],'defaultValue':!![]}};
\ No newline at end of file
+var _0xc71e=['split','BOOLEAN','exports','name','STRING','setDataValue','crudPermissions','join'];(function(_0x543d56,_0x46afca){var _0x48440e=function(_0x23209b){while(--_0x23209b){_0x543d56['push'](_0x543d56['shift']());}};_0x48440e(++_0x46afca);}(_0xc71e,0x16a));var _0xec71=function(_0x4318c1,_0x48e5da){_0x4318c1=_0x4318c1-0x0;var _0x587981=_0xc71e[_0x4318c1];return _0x587981;};'use strict';var Sequelize=require('sequelize');module[_0xec71('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xec71('0x1')},'crudPermissions':{'type':Sequelize[_0xec71('0x2')],'set':function(_0xac35c){this[_0xec71('0x3')](_0xec71('0x4'),_0xac35c?_0xac35c[_0xec71('0x5')](''):[]);},'get':function(){return this['getDataValue'](_0xec71('0x4'))?this['getDataValue'](_0xec71('0x4'))[_0xec71('0x6')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'privacyEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0xec71('0x7')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0xec71('0x7')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0xec71('0x7')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0xec71('0x7')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0xec71('0x7')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index c733de4..41bf117 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc15=['find','create','body','catch','clone','get','createdAt','updatedAt','crudPermissions','sequelize','transaction','UserProfileSection','findAll','autoAssociation','omit','sectionId','Resources','UserProfileResource','describe','userProfileId','each','removeSections','ids','getSections','enabled','includes','isEmpty','subsections','findOne','push','forEach','resourceId','addResources','bulkCreate','removeResources','section','Missing\x20section\x20parameter','hasOwnProperty','getResources','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','register','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','end','error','stack','name','send','index','UserProfile','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','rows','params','rawAttributes','include'];(function(_0x5c084b,_0xe3ec58){var _0x4ab02a=function(_0x212cf9){while(--_0x212cf9){_0x5c084b['push'](_0x5c084b['shift']());}};_0x4ab02a(++_0xe3ec58);}(_0xdc15,0x1f3));var _0x5dc1=function(_0x1d24eb,_0x12295b){_0x1d24eb=_0x1d24eb-0x0;var _0x1dc576=_0xdc15[_0x1d24eb];return _0x1dc576;};'use strict';var emlformat=require(_0x5dc1('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5dc1('0x1'));var jsonpatch=require(_0x5dc1('0x2'));var rp=require(_0x5dc1('0x3'));var moment=require(_0x5dc1('0x4'));var BPromise=require(_0x5dc1('0x5'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x5dc1('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5dc1('0x7'));var _=require(_0x5dc1('0x8'));var squel=require(_0x5dc1('0x9'));var crypto=require(_0x5dc1('0xa'));var jsforce=require(_0x5dc1('0xb'));var deskjs=require(_0x5dc1('0xc'));var toCsv=require(_0x5dc1('0xd'));var querystring=require(_0x5dc1('0xe'));var Papa=require(_0x5dc1('0xf'));var Redis=require(_0x5dc1('0x10'));var authService=require(_0x5dc1('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5dc1('0x12'));var logger=require(_0x5dc1('0x13'))('api');var utils=require(_0x5dc1('0x14'));var config=require(_0x5dc1('0x15'));var licenseUtil=require(_0x5dc1('0x16'));var db=require(_0x5dc1('0x17'))['db'];config[_0x5dc1('0x18')]=_[_0x5dc1('0x19')](config[_0x5dc1('0x18')],{'host':'localhost','port':0x18eb});var socket=require(_0x5dc1('0x1a'))(new Redis(config[_0x5dc1('0x18')]));require('./userProfile.socket')[_0x5dc1('0x1b')](socket);function respondWithStatusCode(_0x359e88,_0x5ce46b){_0x5ce46b=_0x5ce46b||0xcc;return function(_0x2ae64f){if(_0x2ae64f){return _0x359e88[_0x5dc1('0x1c')](_0x5ce46b);}return _0x359e88[_0x5dc1('0x1d')](_0x5ce46b)['end']();};}function respondWithResult(_0x1424ee,_0x4a8652){_0x4a8652=_0x4a8652||0xc8;return function(_0x5b6518){if(_0x5b6518){return _0x1424ee[_0x5dc1('0x1d')](_0x4a8652)[_0x5dc1('0x1e')](_0x5b6518);}};}function respondWithFilteredResult(_0x1f2e4a,_0x533446){return function(_0x427496){if(_0x427496){var _0xf980e7=typeof _0x533446[_0x5dc1('0x1f')]===_0x5dc1('0x20')&&typeof _0x533446[_0x5dc1('0x21')]===_0x5dc1('0x20');var _0x1ba1fe=_0x427496[_0x5dc1('0x22')];var _0x52a1e2=_0xf980e7?0x0:_0x533446[_0x5dc1('0x1f')];var _0xdcd30f=_0xf980e7?_0x427496[_0x5dc1('0x22')]:_0x533446[_0x5dc1('0x1f')]+_0x533446[_0x5dc1('0x21')];var _0x6ecab3;if(_0xdcd30f>=_0x1ba1fe){_0xdcd30f=_0x1ba1fe;_0x6ecab3=0xc8;}else{_0x6ecab3=0xce;}_0x1f2e4a['status'](_0x6ecab3);return _0x1f2e4a[_0x5dc1('0x23')](_0x5dc1('0x24'),_0x52a1e2+'-'+_0xdcd30f+'/'+_0x1ba1fe)[_0x5dc1('0x1e')](_0x427496);}return null;};}function patchUpdates(_0x3ae1f3){return function(_0x4c2a54){try{jsonpatch[_0x5dc1('0x25')](_0x4c2a54,_0x3ae1f3,!![]);}catch(_0x4610a1){return BPromise[_0x5dc1('0x26')](_0x4610a1);}return _0x4c2a54[_0x5dc1('0x27')]();};}function saveUpdates(_0x26ee71,_0x4158fc){return function(_0x36a047){if(_0x36a047){return _0x36a047[_0x5dc1('0x28')](_0x26ee71)['then'](function(_0x1a21f2){return _0x1a21f2;});}return null;};}function removeEntity(_0x124abd,_0x531c00){return function(_0x4562a5){if(_0x4562a5){return _0x4562a5[_0x5dc1('0x29')]()[_0x5dc1('0x2a')](function(){_0x124abd[_0x5dc1('0x1d')](0xcc)[_0x5dc1('0x2b')]();});}};}function handleEntityNotFound(_0x191668,_0x1b2063){return function(_0x2a13f9){if(!_0x2a13f9){_0x191668[_0x5dc1('0x1c')](0x194);}return _0x2a13f9;};}function handleError(_0x466667,_0x204b53){_0x204b53=_0x204b53||0x1f4;return function(_0xddba38){logger[_0x5dc1('0x2c')](_0xddba38[_0x5dc1('0x2d')]);if(_0xddba38[_0x5dc1('0x2e')]){delete _0xddba38[_0x5dc1('0x2e')];}_0x466667[_0x5dc1('0x1d')](_0x204b53)[_0x5dc1('0x2f')](_0xddba38);};}exports[_0x5dc1('0x30')]=function(_0x4eadf1,_0x225bb6){var _0x3ab569={},_0x1331de={},_0x1dfe74={'count':0x0,'rows':[]};var _0x19cb45=_['map'](db[_0x5dc1('0x31')]['rawAttributes'],function(_0x553c9f){return{'name':_0x553c9f[_0x5dc1('0x32')],'type':_0x553c9f[_0x5dc1('0x33')][_0x5dc1('0x34')]};});_0x1331de[_0x5dc1('0x35')]=_[_0x5dc1('0x36')](_0x19cb45,'name');_0x1331de[_0x5dc1('0x37')]=_[_0x5dc1('0x38')](_0x4eadf1[_0x5dc1('0x37')]);_0x1331de[_0x5dc1('0x39')]=_[_0x5dc1('0x3a')](_0x1331de[_0x5dc1('0x35')],_0x1331de['query']);_0x3ab569[_0x5dc1('0x3b')]=_[_0x5dc1('0x3a')](_0x1331de[_0x5dc1('0x35')],qs[_0x5dc1('0x3c')](_0x4eadf1[_0x5dc1('0x37')][_0x5dc1('0x3c')]));_0x3ab569[_0x5dc1('0x3b')]=_0x3ab569[_0x5dc1('0x3b')][_0x5dc1('0x3d')]?_0x3ab569[_0x5dc1('0x3b')]:_0x1331de[_0x5dc1('0x35')];if(!_0x4eadf1[_0x5dc1('0x37')]['hasOwnProperty'](_0x5dc1('0x3e'))){_0x3ab569[_0x5dc1('0x21')]=qs[_0x5dc1('0x21')](_0x4eadf1[_0x5dc1('0x37')]['limit']);_0x3ab569[_0x5dc1('0x1f')]=qs[_0x5dc1('0x1f')](_0x4eadf1[_0x5dc1('0x37')][_0x5dc1('0x1f')]);}_0x3ab569[_0x5dc1('0x3f')]=qs[_0x5dc1('0x40')](_0x4eadf1[_0x5dc1('0x37')][_0x5dc1('0x40')]);_0x3ab569[_0x5dc1('0x41')]=qs[_0x5dc1('0x39')](_[_0x5dc1('0x42')](_0x4eadf1[_0x5dc1('0x37')],_0x1331de[_0x5dc1('0x39')]),_0x19cb45);if(_0x4eadf1[_0x5dc1('0x37')]['filter']){_0x3ab569[_0x5dc1('0x41')]=_[_0x5dc1('0x43')](_0x3ab569[_0x5dc1('0x41')],{'$or':_[_0x5dc1('0x36')](_0x19cb45,function(_0xdf98aa){if(_0xdf98aa[_0x5dc1('0x33')]!==_0x5dc1('0x44')){var _0x2b26ff={};_0x2b26ff[_0xdf98aa['name']]={'$like':'%'+_0x4eadf1[_0x5dc1('0x37')][_0x5dc1('0x45')]+'%'};return _0x2b26ff;}})});}_0x3ab569=_[_0x5dc1('0x43')]({},_0x3ab569,_0x4eadf1[_0x5dc1('0x46')]);var _0x2ac806={'where':_0x3ab569['where']};return db[_0x5dc1('0x31')][_0x5dc1('0x22')](_0x2ac806)[_0x5dc1('0x2a')](function(_0x26eb34){_0x1dfe74[_0x5dc1('0x22')]=_0x26eb34;if(_0x4eadf1[_0x5dc1('0x37')][_0x5dc1('0x47')]){_0x3ab569['include']=[{'all':!![]}];}return db[_0x5dc1('0x31')]['findAll'](_0x3ab569);})[_0x5dc1('0x2a')](function(_0x2d446d){_0x1dfe74[_0x5dc1('0x48')]=_0x2d446d;return _0x1dfe74;})[_0x5dc1('0x2a')](respondWithFilteredResult(_0x225bb6,_0x3ab569))['catch'](handleError(_0x225bb6,null));};exports['show']=function(_0x22be79,_0x105a3a){var _0x2b80be={'raw':![],'where':{'id':_0x22be79[_0x5dc1('0x49')]['id']}},_0x25e8c3={};_0x25e8c3[_0x5dc1('0x35')]=_['keys'](db[_0x5dc1('0x31')][_0x5dc1('0x4a')]);_0x25e8c3['query']=_[_0x5dc1('0x38')](_0x22be79[_0x5dc1('0x37')]);_0x25e8c3[_0x5dc1('0x39')]=_[_0x5dc1('0x3a')](_0x25e8c3['model'],_0x25e8c3[_0x5dc1('0x37')]);_0x2b80be[_0x5dc1('0x3b')]=_[_0x5dc1('0x3a')](_0x25e8c3[_0x5dc1('0x35')],qs[_0x5dc1('0x3c')](_0x22be79[_0x5dc1('0x37')][_0x5dc1('0x3c')]));_0x2b80be[_0x5dc1('0x3b')]=_0x2b80be['attributes'][_0x5dc1('0x3d')]?_0x2b80be[_0x5dc1('0x3b')]:_0x25e8c3['model'];if(_0x22be79['query'][_0x5dc1('0x47')]){_0x2b80be[_0x5dc1('0x4b')]=[{'all':!![]}];}_0x2b80be=_['merge']({},_0x2b80be,_0x22be79[_0x5dc1('0x46')]);return db['UserProfile'][_0x5dc1('0x4c')](_0x2b80be)['then'](handleEntityNotFound(_0x105a3a,null))[_0x5dc1('0x2a')](respondWithResult(_0x105a3a,null))['catch'](handleError(_0x105a3a,null));};exports[_0x5dc1('0x4d')]=function(_0x2f374d,_0x2c1563){return db[_0x5dc1('0x31')][_0x5dc1('0x4d')](_0x2f374d[_0x5dc1('0x4e')],{})['then'](respondWithResult(_0x2c1563,0xc9))[_0x5dc1('0x4f')](handleError(_0x2c1563,null));};exports[_0x5dc1('0x50')]=function(_0x4e03bc,_0x3e9d9f){var _0x3b51c8={'where':{'id':_0x4e03bc['params']['id']}},_0x5e5f06={};_0x5e5f06[_0x5dc1('0x35')]=_['keys'](db[_0x5dc1('0x31')][_0x5dc1('0x4a')]);_0x3b51c8[_0x5dc1('0x3b')]=_[_0x5dc1('0x3a')](_0x5e5f06[_0x5dc1('0x35')],qs[_0x5dc1('0x3c')](_0x4e03bc[_0x5dc1('0x37')][_0x5dc1('0x3c')]));_0x3b51c8['attributes']=_0x3b51c8['attributes'][_0x5dc1('0x3d')]?_0x3b51c8[_0x5dc1('0x3b')]:_0x5e5f06[_0x5dc1('0x35')];if(_0x4e03bc['query'][_0x5dc1('0x47')]){_0x3b51c8['include']=[{'all':!![]}];}_0x3b51c8=_[_0x5dc1('0x43')]({},_0x3b51c8,_0x4e03bc[_0x5dc1('0x46')]);return db[_0x5dc1('0x31')][_0x5dc1('0x4c')](_0x3b51c8)['then'](handleEntityNotFound(_0x3e9d9f,null))[_0x5dc1('0x2a')](function(_0x4f4022){if(_0x4f4022){var _0x430ea9=_0x4f4022[_0x5dc1('0x51')]({'plain':!![]});_0x430ea9=qs['omit'](_0x430ea9,['id',_0x5dc1('0x52'),_0x5dc1('0x53'),_0x5dc1('0x54')]);_0x4e03bc['body']=_['omit'](_0x4e03bc['body'],['id','createdAt',_0x5dc1('0x53')]);return db[_0x5dc1('0x55')][_0x5dc1('0x56')](function(_0x4f2118){return db[_0x5dc1('0x31')][_0x5dc1('0x4d')](_['merge'](_0x430ea9,_0x4e03bc[_0x5dc1('0x4e')]),{'include':_0x4e03bc[_0x5dc1('0x37')][_0x5dc1('0x47')]?[{'all':!![]}]:undefined,'transaction':_0x4f2118})[_0x5dc1('0x2a')](function(_0x5c7b8b){var _0x347db3=_0x5c7b8b[_0x5dc1('0x51')]({'plain':!![]});return db[_0x5dc1('0x57')][_0x5dc1('0x58')]({'where':{'userProfileId':_0x4e03bc['params']['id']},'raw':!![]})['then'](function(_0x59778b){if(_0x59778b){return BPromise['each'](_0x59778b,function(_0x1a2669){return new BPromise(function(_0x345e95,_0x4ca199){if(_0x1a2669['autoAssociation']===null||_0x1a2669[_0x5dc1('0x59')]===0x1)_0x345e95(null);return db['UserProfileResource'][_0x5dc1('0x58')]({'where':{'sectionId':_0x1a2669['id']},'raw':!![]})[_0x5dc1('0x2a')](function(_0x510205){var _0x2c062b=_[_0x5dc1('0x36')](_0x510205,function(_0x22fc7a){return qs[_0x5dc1('0x5a')](_0x22fc7a,['id',_0x5dc1('0x52'),_0x5dc1('0x53'),_0x5dc1('0x5b')]);});_0x345e95(_0x2c062b);})[_0x5dc1('0x4f')](function(_0x1109e7){_0x4ca199(_0x1109e7);});})['then'](function(_0x234251){var _0x552cf6=qs[_0x5dc1('0x5a')](_0x1a2669,['id',_0x5dc1('0x52'),_0x5dc1('0x53')]);_0x552cf6['userProfileId']=_0x347db3['id'];if(_0x234251)_0x552cf6[_0x5dc1('0x5c')]=_0x234251;return _0x552cf6;})[_0x5dc1('0x2a')](function(_0x85e375){return db[_0x5dc1('0x57')][_0x5dc1('0x4d')](_0x85e375,{'include':[{'model':db[_0x5dc1('0x5d')],'as':_0x5dc1('0x5c')}],'raw':!![],'transaction':_0x4f2118});});})['then'](function(){return _0x347db3;});}});});});}})['then'](respondWithResult(_0x3e9d9f,0xc9))[_0x5dc1('0x4f')](handleError(_0x3e9d9f,null));};exports[_0x5dc1('0x28')]=function(_0x56ffa2,_0x28062e){if(_0x56ffa2[_0x5dc1('0x4e')]['id']){delete _0x56ffa2[_0x5dc1('0x4e')]['id'];}return db['UserProfile'][_0x5dc1('0x4c')]({'where':{'id':_0x56ffa2[_0x5dc1('0x49')]['id']}})['then'](handleEntityNotFound(_0x28062e,null))['then'](saveUpdates(_0x56ffa2[_0x5dc1('0x4e')],null))['then'](respondWithResult(_0x28062e,null))[_0x5dc1('0x4f')](handleError(_0x28062e,null));};exports['destroy']=function(_0x45946b,_0x2971cb){return db[_0x5dc1('0x31')][_0x5dc1('0x4c')]({'where':{'id':_0x45946b[_0x5dc1('0x49')]['id']}})['then'](handleEntityNotFound(_0x2971cb,null))[_0x5dc1('0x2a')](removeEntity(_0x2971cb,null))[_0x5dc1('0x4f')](handleError(_0x2971cb,null));};exports[_0x5dc1('0x5e')]=function(_0x1c7d91,_0x3d30d0){return db[_0x5dc1('0x31')]['describe']()[_0x5dc1('0x2a')](respondWithResult(_0x3d30d0,null))[_0x5dc1('0x4f')](handleError(_0x3d30d0,null));};exports['addSections']=function(_0x504b5d,_0x3ede01){var _0x31d17f=_0x504b5d[_0x5dc1('0x4e')];return db[_0x5dc1('0x31')][_0x5dc1('0x4c')]({'where':{'id':_0x504b5d[_0x5dc1('0x49')]['id']}})[_0x5dc1('0x2a')](handleEntityNotFound(_0x3ede01,null))['then'](function(_0x550a33){if(_0x550a33){return db[_0x5dc1('0x55')][_0x5dc1('0x56')](function(_0x2ca042){return db[_0x5dc1('0x57')][_0x5dc1('0x29')]({'where':{'userProfileId':_0x504b5d[_0x5dc1('0x49')]['id'],'sectionId':_['map'](_0x31d17f,function(_0x1b10bf){return _0x1b10bf[_0x5dc1('0x5b')];})},'transaction':_0x2ca042})[_0x5dc1('0x2a')](function(){var _0x42eb81=_['map'](_0x31d17f,function(_0x2a8a81){_0x2a8a81[_0x5dc1('0x5f')]=_0x504b5d['params']['id'];return _0x2a8a81;});var _0x1d574a=[];return BPromise[_0x5dc1('0x60')](_0x42eb81,function(_0x51fec7){return db[_0x5dc1('0x57')][_0x5dc1('0x4d')](_0x51fec7,{'include':[{'model':db[_0x5dc1('0x5d')],'as':_0x5dc1('0x5c')}],'raw':!![],'transaction':_0x2ca042})['then'](function(_0x534914){_0x1d574a['push'](_0x534914[_0x5dc1('0x51')]({'plain':!![]}));});})[_0x5dc1('0x2a')](function(){return _0x1d574a;});});});}})[_0x5dc1('0x2a')](function(_0x1175cb){return _0x1175cb;})[_0x5dc1('0x2a')](respondWithResult(_0x3ede01,null))[_0x5dc1('0x4f')](handleError(_0x3ede01,null));};exports[_0x5dc1('0x61')]=function(_0x23e227,_0x2b49c0){var _0x3576ce;return db['UserProfile']['find']({'where':{'id':_0x23e227[_0x5dc1('0x49')]['id']},'attributes':['id',_0x5dc1('0x2e')]})[_0x5dc1('0x2a')](handleEntityNotFound(_0x2b49c0,null))[_0x5dc1('0x2a')](function(_0x4ec5de){if(_0x4ec5de){_0x3576ce=_0x4ec5de;return db[_0x5dc1('0x57')][_0x5dc1('0x29')]({'where':{'userProfileId':_0x23e227[_0x5dc1('0x49')]['id'],'sectionId':_0x23e227[_0x5dc1('0x37')][_0x5dc1('0x62')]}});}})[_0x5dc1('0x2a')](function(){return _0x3576ce;})[_0x5dc1('0x2a')](respondWithStatusCode(_0x2b49c0,null))[_0x5dc1('0x4f')](handleError(_0x2b49c0,null));};exports[_0x5dc1('0x63')]=function(_0x7b3f72,_0x158506){var _0x3d0deb=[];var _0x455709=[];return db[_0x5dc1('0x57')][_0x5dc1('0x58')]({'where':{'userProfileId':_0x7b3f72['params']['id']},'raw':!![]})[_0x5dc1('0x2a')](function(_0x4221de){_0x3d0deb=_['filter'](_0x4221de,function(_0x151f7d){return _0x151f7d[_0x5dc1('0x64')]===0x1||_[_0x5dc1('0x65')]([0x3eb,0x709],_0x151f7d['sectionId']);});if(!_[_0x5dc1('0x66')](_0x3d0deb)){return _['map'](_0x3d0deb,function(_0x3c64a8){return _0x3c64a8['sectionId'];});}else{return;}})[_0x5dc1('0x2a')](function(_0x177588){if(_0x177588)_0x455709=_0x177588;if(_['includes'](_0x455709,0x64)){var _0x36d294=_[_0x5dc1('0x4c')](_0x3d0deb,{'sectionId':0x64});return hasDefaultDashboard(_0x36d294)[_0x5dc1('0x2a')](function(_0x33ed85){return _[_0x5dc1('0x36')](_0x3d0deb,function(_0x23f818){if(_0x23f818[_0x5dc1('0x5b')]===0x64){_0x23f818[_0x5dc1('0x67')]=_0x33ed85;}return _0x23f818;});});}else{return;}})[_0x5dc1('0x2a')](function(_0x59bfd3){if(_0x59bfd3)_0x3d0deb=_0x59bfd3;if(_[_0x5dc1('0x65')](_0x455709,0x3eb)){var _0x3ff3d4=_['find'](_0x3d0deb,{'sectionId':0x3eb});return getCustomDashboards(_0x3ff3d4)[_0x5dc1('0x2a')](function(_0x19c997){return _['map'](_0x3d0deb,function(_0x4ab110){if(_0x3ff3d4[_0x5dc1('0x64')]){if(_0x4ab110[_0x5dc1('0x5b')]===0x3eb){_0x4ab110[_0x5dc1('0x67')]=_0x19c997;}}else{if(_0x4ab110[_0x5dc1('0x5b')]===0x64){_0x4ab110['subsections']=_0x19c997;}}return _0x4ab110;});});}else{return;}})[_0x5dc1('0x2a')](function(_0x183810){if(_0x183810)_0x3d0deb=_0x183810;if(_[_0x5dc1('0x65')](_0x455709,0x709)){var _0xb022b1=_[_0x5dc1('0x4c')](_0x3d0deb,{'sectionId':0x709});return getPlugins(_0xb022b1)['then'](function(_0x3e636b){if(_0xb022b1[_0x5dc1('0x64')]){return _['map'](_0x3d0deb,function(_0xe95e0a){if(_0xe95e0a[_0x5dc1('0x5b')]===0x709){_0xe95e0a[_0x5dc1('0x67')]=_0x3e636b;}return _0xe95e0a;});}else{var _0x3333f9={'sectionId':0x76c,'enabled':0x1,'subsections':_0x3e636b};var _0x27a5ab=_[_0x5dc1('0x36')](_0x3d0deb);_0x27a5ab['push'](_0x3333f9);return _0x27a5ab;}});}else{return;}})[_0x5dc1('0x2a')](function(_0x530c15){if(_0x530c15)_0x3d0deb=_0x530c15;return _[_0x5dc1('0x45')](_0x3d0deb,['enabled',0x1]);})[_0x5dc1('0x2a')](respondWithResult(_0x158506,null))['catch'](handleError(_0x158506,null));};function hasDefaultDashboard(_0x503e54){var _0x376b7f=[0x65];return new BPromise(function(_0x423dec,_0x45bb60){try{if(_0x503e54[_0x5dc1('0x59')]){_0x423dec(_0x376b7f);}else{return db[_0x5dc1('0x5d')][_0x5dc1('0x68')]({'where':{'sectionId':_0x503e54['id']},'raw':!![]})[_0x5dc1('0x2a')](function(_0x20cd8c){_0x20cd8c?_0x423dec(_0x376b7f):_0x423dec();});}}catch(_0x1ea4af){_0x45bb60(_0x1ea4af);}});}function getCustomDashboards(_0x5aeaad){var _0x450a82=[];return new BPromise(function(_0x9406e7,_0xa4e284){try{if(_0x5aeaad[_0x5dc1('0x59')]){return db['Dashboard'][_0x5dc1('0x58')]({'raw':!![]})[_0x5dc1('0x2a')](function(_0x27d952){_0x27d952['forEach'](function(_0x1a1a33){_0x450a82[_0x5dc1('0x69')](_0x1a1a33['id']+0x1869f);});_0x9406e7(_0x450a82);});}else{return db['UserProfileResource'][_0x5dc1('0x58')]({'where':{'sectionId':_0x5aeaad['id']},'raw':!![]})[_0x5dc1('0x2a')](function(_0x2b8c44){_0x2b8c44[_0x5dc1('0x6a')](function(_0x5be41c){_0x450a82[_0x5dc1('0x69')](_0x5be41c[_0x5dc1('0x6b')]+0x1869f);});_0x9406e7(_0x450a82);});}}catch(_0x332bb4){_0xa4e284(_0x332bb4);}});}function getPlugins(_0x4afc21){var _0x5ce360=[];return new BPromise(function(_0x38da53,_0x163ee1){try{if(_0x4afc21[_0x5dc1('0x59')]){return db['Plugin']['findAll']({'raw':!![]})[_0x5dc1('0x2a')](function(_0x5a8d99){_0x5a8d99['forEach'](function(_0x513610){_0x5ce360['push'](_0x513610['id']+0x15b38);});_0x38da53(_0x5ce360);});}else{return db[_0x5dc1('0x5d')][_0x5dc1('0x58')]({'where':{'sectionId':_0x4afc21['id']},'raw':!![]})[_0x5dc1('0x2a')](function(_0x1478cb){_0x1478cb[_0x5dc1('0x6a')](function(_0x1ff230){_0x5ce360[_0x5dc1('0x69')](_0x1ff230[_0x5dc1('0x6b')]+0x15b38);});_0x38da53(_0x5ce360);});}}catch(_0x58fd34){_0x163ee1(_0x58fd34);}});}exports[_0x5dc1('0x6c')]=function(_0x465c4e,_0x4a3ebd){return db[_0x5dc1('0x31')][_0x5dc1('0x4c')]({'where':{'id':_0x465c4e['params']['id']}})[_0x5dc1('0x2a')](handleEntityNotFound(_0x4a3ebd,null))['then'](function(_0x523ded){if(_0x523ded){return db[_0x5dc1('0x55')][_0x5dc1('0x56')](function(_0x1ee178){return db[_0x5dc1('0x57')][_0x5dc1('0x58')]({'where':{'userProfileId':_0x465c4e[_0x5dc1('0x49')]['id']},'attributes':['id'],'raw':!![]})[_0x5dc1('0x2a')](function(_0x16cdd8){if(_0x16cdd8){return db['UserProfileSection'][_0x5dc1('0x29')]({'where':{'userProfileId':_0x465c4e[_0x5dc1('0x49')]['id'],'id':_['map'](_0x16cdd8,function(_0xd05906){return _0xd05906['id'];})},'transaction':_0x1ee178});}})[_0x5dc1('0x2a')](function(_0x54eaaf){var _0x2a3a53=_['map'](_0x465c4e['body'],function(_0x36f38d){_0x36f38d[_0x5dc1('0x5f')]=_0x465c4e['params']['id'];return _0x36f38d;});return db[_0x5dc1('0x57')][_0x5dc1('0x6d')](_0x2a3a53,{'raw':!![],'transaction':_0x1ee178});})[_0x5dc1('0x2a')](function(_0x3c44ad){var _0x5cdf3c=_['filter'](_[_0x5dc1('0x36')](_0x3c44ad,function(_0x280314){return _0x280314[_0x5dc1('0x51')]({'plain':!![]});}),{'includeAll':![]});if(_0x5cdf3c){return db[_0x5dc1('0x57')][_0x5dc1('0x58')]({'where':{'userProfileId':_0x465c4e[_0x5dc1('0x49')]['id'],'sectionId':_[_0x5dc1('0x36')](_0x5cdf3c,function(_0x577540){return _0x577540[_0x5dc1('0x5b')];})},'attributes':['id','sectionId'],'raw':!![]})[_0x5dc1('0x2a')](function(_0x55cd78){var _0x32aace=_['map'](_0x465c4e[_0x5dc1('0x4e')],function(_0x48fd80){_0x48fd80[_0x5dc1('0x5f')]=_0x465c4e['params']['id'];return _0x48fd80;});return db[_0x5dc1('0x5d')][_0x5dc1('0x6d')](_0x32aace,{'raw':!![],'transaction':_0x1ee178});});}})[_0x5dc1('0x4f')](handleError(_0x4a3ebd,null));});}})[_0x5dc1('0x2a')](function(_0x5f26e8){var _0x39c7a4=_[_0x5dc1('0x36')](_0x5f26e8,function(_0x1e3b25){return _0x1e3b25['get']({'plain':!![]});});})[_0x5dc1('0x2a')](respondWithResult(_0x4a3ebd,null))[_0x5dc1('0x4f')](handleError(_0x4a3ebd,null));};exports[_0x5dc1('0x6e')]=function(_0x47812a,_0x2fc39e,_0x5491e9){return db[_0x5dc1('0x31')][_0x5dc1('0x4c')]({'where':{'id':_0x47812a[_0x5dc1('0x49')]['id']}})[_0x5dc1('0x2a')](handleEntityNotFound(_0x2fc39e,null))[_0x5dc1('0x2a')](function(_0x56d19a){if(_0x56d19a){return _0x56d19a['removeResources'](_0x47812a['query'][_0x5dc1('0x62')]);}})[_0x5dc1('0x2a')](respondWithStatusCode(_0x2fc39e,null))[_0x5dc1('0x4f')](handleError(_0x2fc39e,null));};exports['getResources']=function(_0x4aa589,_0x3f3c5b){var _0x3b99c8={};if(!_0x4aa589[_0x5dc1('0x37')][_0x5dc1('0x6f')])throw new Error(_0x5dc1('0x70'));if(!_0x4aa589[_0x5dc1('0x37')][_0x5dc1('0x71')](_0x5dc1('0x3e'))){_0x3b99c8[_0x5dc1('0x21')]=qs[_0x5dc1('0x21')](_0x4aa589[_0x5dc1('0x37')]['limit']);_0x3b99c8[_0x5dc1('0x1f')]=qs[_0x5dc1('0x1f')](_0x4aa589[_0x5dc1('0x37')]['offset']);}return db[_0x5dc1('0x31')][_0x5dc1('0x4c')]({'where':{'id':_0x4aa589[_0x5dc1('0x49')]['id']}})[_0x5dc1('0x2a')](function(_0x477427){if(!_0x477427)throw new Error('No\x20User\x20Profile\x20found\x20for\x20id\x20'+_0x4aa589['params']['id']);return db[_0x5dc1('0x31')][_0x5dc1('0x72')](_0x4aa589);})[_0x5dc1('0x2a')](respondWithFilteredResult(_0x3f3c5b,_0x3b99c8))[_0x5dc1('0x4f')](handleError(_0x3f3c5b,null));};
\ No newline at end of file
+var _0x099b=['VIRTUAL','merge','include','findAll','rows','catch','options','find','create','clone','includeAll','get','omit','createdAt','updatedAt','body','transaction','each','autoAssociation','sectionId','Resources','UserProfileSection','params','destroy','describe','addSections','userProfileId','push','removeSections','ids','getSections','enabled','includes','isEmpty','subsections','concat','UserProfileResource','findOne','Dashboard','forEach','resourceId','addResources','sequelize','bulkCreate','removeResources','getResources','section','Missing\x20section\x20parameter','No\x20User\x20Profile\x20found\x20for\x20id\x20','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./userProfile.socket','register','sendStatus','status','json','offset','limit','count','set','Content-Range','apply','reject','save','update','then','end','error','name','send','UserProfile','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','map'];(function(_0x18b1be,_0x185237){var _0x4a4224=function(_0x4be7cd){while(--_0x4be7cd){_0x18b1be['push'](_0x18b1be['shift']());}};_0x4a4224(++_0x185237);}(_0x099b,0xa3));var _0xb099=function(_0x2f1e5d,_0xf8b1f1){_0x2f1e5d=_0x2f1e5d-0x0;var _0x2b3e50=_0x099b[_0x2f1e5d];return _0x2b3e50;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb099('0x0'));var zipdir=require(_0xb099('0x1'));var jsonpatch=require(_0xb099('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xb099('0x3'));var Mustache=require(_0xb099('0x4'));var util=require(_0xb099('0x5'));var path=require(_0xb099('0x6'));var sox=require(_0xb099('0x7'));var csv=require(_0xb099('0x8'));var ejs=require(_0xb099('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb099('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xb099('0xb'));var deskjs=require(_0xb099('0xc'));var toCsv=require(_0xb099('0x8'));var querystring=require(_0xb099('0xd'));var Papa=require(_0xb099('0xe'));var Redis=require(_0xb099('0xf'));var authService=require(_0xb099('0x10'));var qs=require(_0xb099('0x11'));var as=require(_0xb099('0x12'));var hardwareService=require(_0xb099('0x13'));var logger=require(_0xb099('0x14'))('api');var utils=require('../../config/utils');var config=require(_0xb099('0x15'));var licenseUtil=require(_0xb099('0x16'));var db=require(_0xb099('0x17'))['db'];config[_0xb099('0x18')]=_[_0xb099('0x19')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xb099('0x1a'))(new Redis(config[_0xb099('0x18')]));require(_0xb099('0x1b'))[_0xb099('0x1c')](socket);function respondWithStatusCode(_0x1321f0,_0x4f5bf3){_0x4f5bf3=_0x4f5bf3||0xcc;return function(_0x45701d){if(_0x45701d){return _0x1321f0[_0xb099('0x1d')](_0x4f5bf3);}return _0x1321f0['status'](_0x4f5bf3)['end']();};}function respondWithResult(_0x4909df,_0x1e92fd){_0x1e92fd=_0x1e92fd||0xc8;return function(_0x22e1cf){if(_0x22e1cf){return _0x4909df[_0xb099('0x1e')](_0x1e92fd)[_0xb099('0x1f')](_0x22e1cf);}};}function respondWithFilteredResult(_0x15efa4,_0x328ba8){return function(_0x10d4d3){if(_0x10d4d3){var _0x5da21a=typeof _0x328ba8[_0xb099('0x20')]==='undefined'&&typeof _0x328ba8[_0xb099('0x21')]==='undefined';var _0x2ad7c6=_0x10d4d3[_0xb099('0x22')];var _0x42a2e5=_0x5da21a?0x0:_0x328ba8[_0xb099('0x20')];var _0x57f7c1=_0x5da21a?_0x10d4d3[_0xb099('0x22')]:_0x328ba8[_0xb099('0x20')]+_0x328ba8[_0xb099('0x21')];var _0x7226d6;if(_0x57f7c1>=_0x2ad7c6){_0x57f7c1=_0x2ad7c6;_0x7226d6=0xc8;}else{_0x7226d6=0xce;}_0x15efa4[_0xb099('0x1e')](_0x7226d6);return _0x15efa4[_0xb099('0x23')](_0xb099('0x24'),_0x42a2e5+'-'+_0x57f7c1+'/'+_0x2ad7c6)['json'](_0x10d4d3);}return null;};}function patchUpdates(_0x83f554){return function(_0x5d5364){try{jsonpatch[_0xb099('0x25')](_0x5d5364,_0x83f554,!![]);}catch(_0x8523d8){return BPromise[_0xb099('0x26')](_0x8523d8);}return _0x5d5364[_0xb099('0x27')]();};}function saveUpdates(_0x71a0d2,_0xe7efca){return function(_0x52f25c){if(_0x52f25c){return _0x52f25c[_0xb099('0x28')](_0x71a0d2)[_0xb099('0x29')](function(_0x18af0d){return _0x18af0d;});}return null;};}function removeEntity(_0x4c0594,_0x26564b){return function(_0x4b637b){if(_0x4b637b){return _0x4b637b['destroy']()[_0xb099('0x29')](function(){_0x4c0594[_0xb099('0x1e')](0xcc)[_0xb099('0x2a')]();});}};}function handleEntityNotFound(_0x1f3941,_0x3d0303){return function(_0x3945f4){if(!_0x3945f4){_0x1f3941[_0xb099('0x1d')](0x194);}return _0x3945f4;};}function handleError(_0x1d6bb1,_0x4bb011){_0x4bb011=_0x4bb011||0x1f4;return function(_0x26e216){logger[_0xb099('0x2b')](_0x26e216['stack']);if(_0x26e216[_0xb099('0x2c')]){delete _0x26e216[_0xb099('0x2c')];}_0x1d6bb1[_0xb099('0x1e')](_0x4bb011)[_0xb099('0x2d')](_0x26e216);};}exports['index']=function(_0x57afd3,_0x32ce15){var _0x2419bb={},_0x503231={},_0x2458fd={'count':0x0,'rows':[]};var _0x5c5805=_['map'](db[_0xb099('0x2e')][_0xb099('0x2f')],function(_0x450f30){return{'name':_0x450f30['fieldName'],'type':_0x450f30[_0xb099('0x30')][_0xb099('0x31')]};});_0x503231[_0xb099('0x32')]=_['map'](_0x5c5805,_0xb099('0x2c'));_0x503231[_0xb099('0x33')]=_[_0xb099('0x34')](_0x57afd3[_0xb099('0x33')]);_0x503231[_0xb099('0x35')]=_[_0xb099('0x36')](_0x503231[_0xb099('0x32')],_0x503231[_0xb099('0x33')]);_0x2419bb[_0xb099('0x37')]=_[_0xb099('0x36')](_0x503231['model'],qs[_0xb099('0x38')](_0x57afd3[_0xb099('0x33')][_0xb099('0x38')]));_0x2419bb['attributes']=_0x2419bb[_0xb099('0x37')][_0xb099('0x39')]?_0x2419bb[_0xb099('0x37')]:_0x503231[_0xb099('0x32')];if(!_0x57afd3[_0xb099('0x33')][_0xb099('0x3a')](_0xb099('0x3b'))){_0x2419bb[_0xb099('0x21')]=qs[_0xb099('0x21')](_0x57afd3[_0xb099('0x33')][_0xb099('0x21')]);_0x2419bb['offset']=qs['offset'](_0x57afd3[_0xb099('0x33')][_0xb099('0x20')]);}_0x2419bb['order']=qs['sort'](_0x57afd3[_0xb099('0x33')][_0xb099('0x3c')]);_0x2419bb['where']=qs[_0xb099('0x35')](_[_0xb099('0x3d')](_0x57afd3['query'],_0x503231[_0xb099('0x35')]),_0x5c5805);if(_0x57afd3[_0xb099('0x33')][_0xb099('0x3e')]){_0x2419bb[_0xb099('0x3f')]=_['merge'](_0x2419bb[_0xb099('0x3f')],{'$or':_[_0xb099('0x40')](_0x5c5805,function(_0xc96532){if(_0xc96532['type']!==_0xb099('0x41')){var _0x5bfa3c={};_0x5bfa3c[_0xc96532[_0xb099('0x2c')]]={'$like':'%'+_0x57afd3[_0xb099('0x33')][_0xb099('0x3e')]+'%'};return _0x5bfa3c;}})});}_0x2419bb=_[_0xb099('0x42')]({},_0x2419bb,_0x57afd3['options']);var _0x35eba1={'where':_0x2419bb[_0xb099('0x3f')]};return db['UserProfile']['count'](_0x35eba1)['then'](function(_0x3664b5){_0x2458fd[_0xb099('0x22')]=_0x3664b5;if(_0x57afd3[_0xb099('0x33')]['includeAll']){_0x2419bb[_0xb099('0x43')]=[{'all':!![]}];}return db[_0xb099('0x2e')][_0xb099('0x44')](_0x2419bb);})[_0xb099('0x29')](function(_0x5bb901){_0x2458fd[_0xb099('0x45')]=_0x5bb901;return _0x2458fd;})[_0xb099('0x29')](respondWithFilteredResult(_0x32ce15,_0x2419bb))[_0xb099('0x46')](handleError(_0x32ce15,null));};exports['show']=function(_0x39eba6,_0x251f1b){var _0x4207d0={'raw':![],'where':{'id':_0x39eba6['params']['id']}},_0x50e66d={};_0x50e66d[_0xb099('0x32')]=_[_0xb099('0x34')](db[_0xb099('0x2e')][_0xb099('0x2f')]);_0x50e66d[_0xb099('0x33')]=_[_0xb099('0x34')](_0x39eba6[_0xb099('0x33')]);_0x50e66d['filters']=_[_0xb099('0x36')](_0x50e66d['model'],_0x50e66d[_0xb099('0x33')]);_0x4207d0[_0xb099('0x37')]=_[_0xb099('0x36')](_0x50e66d[_0xb099('0x32')],qs[_0xb099('0x38')](_0x39eba6[_0xb099('0x33')][_0xb099('0x38')]));_0x4207d0['attributes']=_0x4207d0[_0xb099('0x37')]['length']?_0x4207d0[_0xb099('0x37')]:_0x50e66d[_0xb099('0x32')];if(_0x39eba6['query']['includeAll']){_0x4207d0[_0xb099('0x43')]=[{'all':!![]}];}_0x4207d0=_[_0xb099('0x42')]({},_0x4207d0,_0x39eba6[_0xb099('0x47')]);return db[_0xb099('0x2e')][_0xb099('0x48')](_0x4207d0)[_0xb099('0x29')](handleEntityNotFound(_0x251f1b,null))[_0xb099('0x29')](respondWithResult(_0x251f1b,null))['catch'](handleError(_0x251f1b,null));};exports[_0xb099('0x49')]=function(_0x394c61,_0x1e6bef){return db[_0xb099('0x2e')][_0xb099('0x49')](_0x394c61['body'],{})['then'](respondWithResult(_0x1e6bef,0xc9))[_0xb099('0x46')](handleError(_0x1e6bef,null));};exports[_0xb099('0x4a')]=function(_0x5475db,_0x3a02ae){var _0xa5e2f5={'where':{'id':_0x5475db['params']['id']}},_0x36e795={};_0x36e795[_0xb099('0x32')]=_['keys'](db[_0xb099('0x2e')][_0xb099('0x2f')]);_0xa5e2f5[_0xb099('0x37')]=_['intersection'](_0x36e795[_0xb099('0x32')],qs['fields'](_0x5475db[_0xb099('0x33')][_0xb099('0x38')]));_0xa5e2f5[_0xb099('0x37')]=_0xa5e2f5['attributes']['length']?_0xa5e2f5[_0xb099('0x37')]:_0x36e795['model'];if(_0x5475db[_0xb099('0x33')][_0xb099('0x4b')]){_0xa5e2f5[_0xb099('0x43')]=[{'all':!![]}];}_0xa5e2f5=_[_0xb099('0x42')]({},_0xa5e2f5,_0x5475db[_0xb099('0x47')]);return db[_0xb099('0x2e')][_0xb099('0x48')](_0xa5e2f5)[_0xb099('0x29')](handleEntityNotFound(_0x3a02ae,null))[_0xb099('0x29')](function(_0x433060){if(_0x433060){var _0x4ea77d=_0x433060[_0xb099('0x4c')]({'plain':!![]});_0x4ea77d=qs[_0xb099('0x4d')](_0x4ea77d,['id',_0xb099('0x4e'),_0xb099('0x4f'),'crudPermissions']);_0x5475db[_0xb099('0x50')]=_['omit'](_0x5475db[_0xb099('0x50')],['id',_0xb099('0x4e'),_0xb099('0x4f')]);return db['sequelize'][_0xb099('0x51')](function(_0x52ab3e){return db[_0xb099('0x2e')][_0xb099('0x49')](_[_0xb099('0x42')](_0x4ea77d,_0x5475db['body']),{'include':_0x5475db[_0xb099('0x33')]['includeAll']?[{'all':!![]}]:undefined,'transaction':_0x52ab3e})['then'](function(_0x32c0cc){var _0xb9064a=_0x32c0cc[_0xb099('0x4c')]({'plain':!![]});return db['UserProfileSection'][_0xb099('0x44')]({'where':{'userProfileId':_0x5475db['params']['id']},'raw':!![]})['then'](function(_0x5bf303){if(_0x5bf303){return BPromise[_0xb099('0x52')](_0x5bf303,function(_0x88b2){return new BPromise(function(_0x5e0186,_0x4ca864){if(_0x88b2['autoAssociation']===null||_0x88b2[_0xb099('0x53')]===0x1)_0x5e0186(null);return db['UserProfileResource'][_0xb099('0x44')]({'where':{'sectionId':_0x88b2['id']},'raw':!![]})[_0xb099('0x29')](function(_0x1f6c1b){var _0xf4675d=_[_0xb099('0x40')](_0x1f6c1b,function(_0x1f1f4e){return qs[_0xb099('0x4d')](_0x1f1f4e,['id','createdAt',_0xb099('0x4f'),_0xb099('0x54')]);});_0x5e0186(_0xf4675d);})[_0xb099('0x46')](function(_0x27f333){_0x4ca864(_0x27f333);});})['then'](function(_0x164f5e){var _0x54b68d=qs[_0xb099('0x4d')](_0x88b2,['id',_0xb099('0x4e'),'updatedAt']);_0x54b68d['userProfileId']=_0xb9064a['id'];if(_0x164f5e)_0x54b68d[_0xb099('0x55')]=_0x164f5e;return _0x54b68d;})[_0xb099('0x29')](function(_0x2f403c){return db[_0xb099('0x56')][_0xb099('0x49')](_0x2f403c,{'include':[{'model':db['UserProfileResource'],'as':_0xb099('0x55')}],'raw':!![],'transaction':_0x52ab3e});});})[_0xb099('0x29')](function(){return _0xb9064a;});}});});});}})[_0xb099('0x29')](respondWithResult(_0x3a02ae,0xc9))[_0xb099('0x46')](handleError(_0x3a02ae,null));};exports[_0xb099('0x28')]=function(_0x16e81c,_0x1fcb14){if(_0x16e81c[_0xb099('0x50')]['id']){delete _0x16e81c[_0xb099('0x50')]['id'];}return db[_0xb099('0x2e')][_0xb099('0x48')]({'where':{'id':_0x16e81c[_0xb099('0x57')]['id']}})['then'](handleEntityNotFound(_0x1fcb14,null))[_0xb099('0x29')](saveUpdates(_0x16e81c[_0xb099('0x50')],null))[_0xb099('0x29')](respondWithResult(_0x1fcb14,null))[_0xb099('0x46')](handleError(_0x1fcb14,null));};exports[_0xb099('0x58')]=function(_0x2605ed,_0x1176a9){return db[_0xb099('0x2e')][_0xb099('0x48')]({'where':{'id':_0x2605ed[_0xb099('0x57')]['id']}})[_0xb099('0x29')](handleEntityNotFound(_0x1176a9,null))['then'](removeEntity(_0x1176a9,null))[_0xb099('0x46')](handleError(_0x1176a9,null));};exports[_0xb099('0x59')]=function(_0x1c236d,_0x584c72){return db['UserProfile'][_0xb099('0x59')]()['then'](respondWithResult(_0x584c72,null))[_0xb099('0x46')](handleError(_0x584c72,null));};exports[_0xb099('0x5a')]=function(_0x5bc4f3,_0x416884){var _0x52fd1a=_0x5bc4f3[_0xb099('0x50')];return db[_0xb099('0x2e')][_0xb099('0x48')]({'where':{'id':_0x5bc4f3[_0xb099('0x57')]['id']}})[_0xb099('0x29')](handleEntityNotFound(_0x416884,null))[_0xb099('0x29')](function(_0x5dbd1c){if(_0x5dbd1c){return db['sequelize']['transaction'](function(_0x77a52a){return db[_0xb099('0x56')][_0xb099('0x58')]({'where':{'userProfileId':_0x5bc4f3[_0xb099('0x57')]['id'],'sectionId':_['map'](_0x52fd1a,function(_0x574e12){return _0x574e12[_0xb099('0x54')];})},'transaction':_0x77a52a})[_0xb099('0x29')](function(){var _0x2bac14=_[_0xb099('0x40')](_0x52fd1a,function(_0x5c16c0){_0x5c16c0[_0xb099('0x5b')]=_0x5bc4f3[_0xb099('0x57')]['id'];return _0x5c16c0;});var _0x54cdc9=[];return BPromise[_0xb099('0x52')](_0x2bac14,function(_0x6f728b){return db['UserProfileSection'][_0xb099('0x49')](_0x6f728b,{'include':[{'model':db['UserProfileResource'],'as':_0xb099('0x55')}],'raw':!![],'transaction':_0x77a52a})[_0xb099('0x29')](function(_0xa29fad){_0x54cdc9[_0xb099('0x5c')](_0xa29fad[_0xb099('0x4c')]({'plain':!![]}));});})[_0xb099('0x29')](function(){return _0x54cdc9;});});});}})[_0xb099('0x29')](function(_0x334a7d){return _0x334a7d;})['then'](respondWithResult(_0x416884,null))[_0xb099('0x46')](handleError(_0x416884,null));};exports[_0xb099('0x5d')]=function(_0x56080c,_0x551b0a){var _0x4512b5;return db[_0xb099('0x2e')][_0xb099('0x48')]({'where':{'id':_0x56080c[_0xb099('0x57')]['id']},'attributes':['id','name']})[_0xb099('0x29')](handleEntityNotFound(_0x551b0a,null))['then'](function(_0x42ac08){if(_0x42ac08){_0x4512b5=_0x42ac08;return db[_0xb099('0x56')][_0xb099('0x58')]({'where':{'userProfileId':_0x56080c[_0xb099('0x57')]['id'],'sectionId':_0x56080c[_0xb099('0x33')][_0xb099('0x5e')]}});}})[_0xb099('0x29')](function(){return _0x4512b5;})[_0xb099('0x29')](respondWithStatusCode(_0x551b0a,null))[_0xb099('0x46')](handleError(_0x551b0a,null));};exports[_0xb099('0x5f')]=function(_0x5b4e2b,_0x54b614){var _0x81767=[];var _0x3db644=[];return db['UserProfileSection']['findAll']({'where':{'userProfileId':_0x5b4e2b[_0xb099('0x57')]['id']},'raw':!![]})[_0xb099('0x29')](function(_0x457e61){_0x81767=_[_0xb099('0x3e')](_0x457e61,function(_0x22ea23){return _0x22ea23[_0xb099('0x60')]===0x1||_[_0xb099('0x61')]([0x3eb,0x709],_0x22ea23[_0xb099('0x54')]);});if(!_[_0xb099('0x62')](_0x81767)){return _[_0xb099('0x40')](_0x81767,function(_0x2f5568){return _0x2f5568[_0xb099('0x54')];});}else{return;}})[_0xb099('0x29')](function(_0x49f467){if(_0x49f467)_0x3db644=_0x49f467;if(_[_0xb099('0x61')](_0x3db644,0x64)){var _0x30037f=_[_0xb099('0x48')](_0x81767,{'sectionId':0x64});return hasDefaultDashboard(_0x30037f)['then'](function(_0x5e11dd){return _[_0xb099('0x40')](_0x81767,function(_0x464257){if(_0x464257['sectionId']===0x64){_0x464257['subsections']=_0x5e11dd;}return _0x464257;});});}else{return;}})[_0xb099('0x29')](function(_0xab7667){if(_0xab7667)_0x81767=_0xab7667;if(_[_0xb099('0x61')](_0x3db644,0x3eb)){var _0x4775dc=_[_0xb099('0x48')](_0x81767,{'sectionId':0x3eb});return getCustomDashboards(_0x4775dc)[_0xb099('0x29')](function(_0x354f45){return _[_0xb099('0x40')](_0x81767,function(_0x2c60ea){if(_0x4775dc['enabled']){if(_0x2c60ea['sectionId']===0x3eb){_0x2c60ea[_0xb099('0x63')]=_0x354f45;}}else{if(_0x2c60ea['sectionId']===0x64){if(!_0x2c60ea[_0xb099('0x63')]){_0x2c60ea[_0xb099('0x63')]=[];}_0x2c60ea['subsections']=_0x2c60ea[_0xb099('0x63')][_0xb099('0x64')](_0x354f45);}}return _0x2c60ea;});});}else{return;}})[_0xb099('0x29')](function(_0x3ab20a){if(_0x3ab20a)_0x81767=_0x3ab20a;if(_[_0xb099('0x61')](_0x3db644,0x709)){var _0x553128=_[_0xb099('0x48')](_0x81767,{'sectionId':0x709});return getPlugins(_0x553128)[_0xb099('0x29')](function(_0x25a95c){if(_0x553128[_0xb099('0x60')]){return _['map'](_0x81767,function(_0x2937be){if(_0x2937be[_0xb099('0x54')]===0x709){_0x2937be['subsections']=_0x25a95c;}return _0x2937be;});}else{var _0x8e37b3={'sectionId':0x76c,'enabled':0x1,'subsections':_0x25a95c};var _0x443335=_[_0xb099('0x40')](_0x81767);_0x443335['push'](_0x8e37b3);return _0x443335;}});}else{return;}})[_0xb099('0x29')](function(_0x598a70){if(_0x598a70)_0x81767=_0x598a70;return _[_0xb099('0x3e')](_0x81767,['enabled',0x1]);})['then'](respondWithResult(_0x54b614,null))[_0xb099('0x46')](handleError(_0x54b614,null));};function hasDefaultDashboard(_0x284ff3){var _0x1f4b89=[0x65];return new BPromise(function(_0x578e61,_0x477e81){try{if(_0x284ff3[_0xb099('0x53')]){_0x578e61(_0x1f4b89);}else{return db[_0xb099('0x65')][_0xb099('0x66')]({'where':{'sectionId':_0x284ff3['id']},'raw':!![]})[_0xb099('0x29')](function(_0x1291ef){_0x1291ef?_0x578e61(_0x1f4b89):_0x578e61();});}}catch(_0x429486){_0x477e81(_0x429486);}});}function getCustomDashboards(_0x1b053b){var _0xb81df6=[];return new BPromise(function(_0x56081a,_0x6f8f7f){try{if(_0x1b053b[_0xb099('0x53')]){return db[_0xb099('0x67')][_0xb099('0x44')]({'raw':!![]})[_0xb099('0x29')](function(_0x15ef98){_0x15ef98[_0xb099('0x68')](function(_0xd291f9){_0xb81df6[_0xb099('0x5c')](_0xd291f9['id']+0x1869f);});_0x56081a(_0xb81df6);});}else{return db[_0xb099('0x65')]['findAll']({'where':{'sectionId':_0x1b053b['id']},'raw':!![]})[_0xb099('0x29')](function(_0x1270c8){_0x1270c8['forEach'](function(_0x5a98de){_0xb81df6[_0xb099('0x5c')](_0x5a98de[_0xb099('0x69')]+0x1869f);});_0x56081a(_0xb81df6);});}}catch(_0x53f63a){_0x6f8f7f(_0x53f63a);}});}function getPlugins(_0x42e0b3){var _0x3f3d0c=[];return new BPromise(function(_0x68a2c9,_0x3fd3ba){try{if(_0x42e0b3[_0xb099('0x53')]){return db['Plugin'][_0xb099('0x44')]({'raw':!![]})[_0xb099('0x29')](function(_0x13340f){_0x13340f['forEach'](function(_0x23953f){_0x3f3d0c[_0xb099('0x5c')](_0x23953f['id']+0x15b38);});_0x68a2c9(_0x3f3d0c);});}else{return db[_0xb099('0x65')]['findAll']({'where':{'sectionId':_0x42e0b3['id']},'raw':!![]})['then'](function(_0x24f8b7){_0x24f8b7[_0xb099('0x68')](function(_0x125a36){_0x3f3d0c[_0xb099('0x5c')](_0x125a36[_0xb099('0x69')]+0x15b38);});_0x68a2c9(_0x3f3d0c);});}}catch(_0x1919e9){_0x3fd3ba(_0x1919e9);}});}exports[_0xb099('0x6a')]=function(_0x562fdf,_0x154e23){return db[_0xb099('0x2e')][_0xb099('0x48')]({'where':{'id':_0x562fdf['params']['id']}})[_0xb099('0x29')](handleEntityNotFound(_0x154e23,null))[_0xb099('0x29')](function(_0x16f5ac){if(_0x16f5ac){return db[_0xb099('0x6b')][_0xb099('0x51')](function(_0x256bc9){return db[_0xb099('0x56')][_0xb099('0x44')]({'where':{'userProfileId':_0x562fdf[_0xb099('0x57')]['id']},'attributes':['id'],'raw':!![]})[_0xb099('0x29')](function(_0x132542){if(_0x132542){return db[_0xb099('0x56')]['destroy']({'where':{'userProfileId':_0x562fdf[_0xb099('0x57')]['id'],'id':_[_0xb099('0x40')](_0x132542,function(_0x4f60f1){return _0x4f60f1['id'];})},'transaction':_0x256bc9});}})[_0xb099('0x29')](function(_0xf2c88){var _0x16e705=_[_0xb099('0x40')](_0x562fdf['body'],function(_0x730b8f){_0x730b8f[_0xb099('0x5b')]=_0x562fdf['params']['id'];return _0x730b8f;});return db[_0xb099('0x56')][_0xb099('0x6c')](_0x16e705,{'raw':!![],'transaction':_0x256bc9});})[_0xb099('0x29')](function(_0x27602c){var _0x3a3e23=_[_0xb099('0x3e')](_[_0xb099('0x40')](_0x27602c,function(_0x598393){return _0x598393[_0xb099('0x4c')]({'plain':!![]});}),{'includeAll':![]});if(_0x3a3e23){return db[_0xb099('0x56')]['findAll']({'where':{'userProfileId':_0x562fdf[_0xb099('0x57')]['id'],'sectionId':_[_0xb099('0x40')](_0x3a3e23,function(_0x5d9916){return _0x5d9916[_0xb099('0x54')];})},'attributes':['id','sectionId'],'raw':!![]})[_0xb099('0x29')](function(_0x13347c){var _0xb044e6=_[_0xb099('0x40')](_0x562fdf['body'],function(_0xfd87e2){_0xfd87e2[_0xb099('0x5b')]=_0x562fdf[_0xb099('0x57')]['id'];return _0xfd87e2;});return db[_0xb099('0x65')][_0xb099('0x6c')](_0xb044e6,{'raw':!![],'transaction':_0x256bc9});});}})[_0xb099('0x46')](handleError(_0x154e23,null));});}})[_0xb099('0x29')](function(_0x2ebff8){var _0x27d75b=_[_0xb099('0x40')](_0x2ebff8,function(_0x24bbb7){return _0x24bbb7['get']({'plain':!![]});});})[_0xb099('0x29')](respondWithResult(_0x154e23,null))[_0xb099('0x46')](handleError(_0x154e23,null));};exports['removeResources']=function(_0x533ce8,_0x17b235,_0x2d1ba8){return db[_0xb099('0x2e')][_0xb099('0x48')]({'where':{'id':_0x533ce8[_0xb099('0x57')]['id']}})[_0xb099('0x29')](handleEntityNotFound(_0x17b235,null))['then'](function(_0x58bb64){if(_0x58bb64){return _0x58bb64[_0xb099('0x6d')](_0x533ce8['query'][_0xb099('0x5e')]);}})[_0xb099('0x29')](respondWithStatusCode(_0x17b235,null))[_0xb099('0x46')](handleError(_0x17b235,null));};exports[_0xb099('0x6e')]=function(_0x8321e2,_0x88585){var _0x1a87ff={};if(!_0x8321e2[_0xb099('0x33')][_0xb099('0x6f')])throw new Error(_0xb099('0x70'));if(!_0x8321e2[_0xb099('0x33')]['hasOwnProperty'](_0xb099('0x3b'))){_0x1a87ff[_0xb099('0x21')]=qs[_0xb099('0x21')](_0x8321e2[_0xb099('0x33')][_0xb099('0x21')]);_0x1a87ff['offset']=qs[_0xb099('0x20')](_0x8321e2[_0xb099('0x33')][_0xb099('0x20')]);}return db[_0xb099('0x2e')][_0xb099('0x48')]({'where':{'id':_0x8321e2[_0xb099('0x57')]['id']}})['then'](function(_0x1af8f2){if(!_0x1af8f2)throw new Error(_0xb099('0x71')+_0x8321e2[_0xb099('0x57')]['id']);return db['UserProfile'][_0xb099('0x6e')](_0x8321e2);})[_0xb099('0x29')](respondWithFilteredResult(_0x88585,_0x1a87ff))[_0xb099('0x46')](handleError(_0x88585,null));};
\ No newline at end of file
index 89a7fb5..cfb2245 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf446=['setMaxListeners','update','hook','events','UserProfile'];(function(_0x522ae8,_0x3b637e){var _0x3189b9=function(_0x3115d4){while(--_0x3115d4){_0x522ae8['push'](_0x522ae8['shift']());}};_0x3189b9(++_0x3b637e);}(_0xf446,0x1c0));var _0x6f44=function(_0x3201fb,_0x404813){_0x3201fb=_0x3201fb-0x0;var _0x2a0e2c=_0xf446[_0x3201fb];return _0x2a0e2c;};'use strict';var EventEmitter=require(_0x6f44('0x0'));var UserProfile=require('../../mysqldb')['db'][_0x6f44('0x1')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0x6f44('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x6f44('0x3'),'afterDestroy':'remove'};function emitEvent(_0x13b43d){return function(_0x477db7,_0x5b59aa,_0x41bcac){UserProfileEvents['emit'](_0x13b43d+':'+_0x477db7['id'],_0x477db7);UserProfileEvents['emit'](_0x13b43d,_0x477db7);_0x41bcac(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserProfile[_0x6f44('0x4')](e,emitEvent(event));}}module['exports']=UserProfileEvents;
\ No newline at end of file
+var _0x292c=['hook','exports','events','UserProfile','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x43709e,_0x2c3b45){var _0x452820=function(_0x42777c){while(--_0x42777c){_0x43709e['push'](_0x43709e['shift']());}};_0x452820(++_0x2c3b45);}(_0x292c,0x66));var _0xc292=function(_0x4394b6,_0x12357f){_0x4394b6=_0x4394b6-0x0;var _0x360244=_0x292c[_0x4394b6];return _0x360244;};'use strict';var EventEmitter=require(_0xc292('0x0'));var UserProfile=require('../../mysqldb')['db'][_0xc292('0x1')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0xc292('0x2')](0x0);var events={'afterCreate':_0xc292('0x3'),'afterUpdate':_0xc292('0x4'),'afterDestroy':_0xc292('0x5')};function emitEvent(_0x50b478){return function(_0x1f14f9,_0x536154,_0x516f54){UserProfileEvents[_0xc292('0x6')](_0x50b478+':'+_0x1f14f9['id'],_0x1f14f9);UserProfileEvents[_0xc292('0x6')](_0x50b478,_0x1f14f9);_0x516f54(null);};}for(var e in events){if(events[_0xc292('0x7')](e)){var event=events[e];UserProfile[_0xc292('0x8')](e,emitEvent(event));}}module[_0xc292('0x9')]=UserProfileEvents;
\ No newline at end of file
index 2379f76..f55e8bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4be6=['zendeskaccounts','ZendeskAccount','SalesforceAccount','freshdeskaccounts','FreshdeskAccount','sugarcrmaccounts','SugarcrmAccount','deskaccounts','DeskAccount','zohoaccounts','vtigeraccounts','cannedanswers','CannedAnswer','dispositions','Disposition','customdashboards','Dashboard','pauses','Schedule','sounds','tags','Tag','templates','Template','triggers','Trigger','trunks','Trunk','variables','Variable','plugins','extractedreports','Reports','metrics','toUpperCase','slice','QueryTypes','SELECT','ui.','InteractionId','ui.createdAt','from','_interactions','where','sequelize','define','UserProfile','raw','query','section','Invalid\x20section\x20\x27','isEmpty','length','push','find','params','union','ignore','all','rawAttributes','keys','intersection','attributes','fields','nolimit','limit','offset','pick','filters','merge','foreignKey','forEach','options','autoAssociation','includeAll','include','reportType','default','reportId','DefaultReports','custom','count','rows','ids','customSorting','extraQueryConditions','Tags','tag','ThroughTags','color','true','dataValues','sms','mail','lodash','./userProfile.attributes','squel','exports','filter','field','value','findAll','associatedResources','catch','model','then','map','name','UserProfileResource','AnalyticExtractedReport','resourceId','type','toLowerCase','squareprojects','SquareProject','odbc','childModel','SquareOdbc','SquareRecording','projectName','contacts','CmContact','parentSections','Lists','ListId','CmList','CmCompany','CmCustomField','chatqueues','ChatQueue','faxqueues','FaxQueue','faxaccounts','FaxAccount','outboundroutes','VoiceExtension','VoiceContext','voicemails','VoiceMail','voicerecordings','VoiceRecording','Agents','User','Telephones','membername','role','telephone','VoiceQueues','queue','VoiceQueue','inbound','QueueCampaigns','chanspies','voiceprefixes','VoicePrefix','ivrcampaigns','Campaign','MailQueue','MailAccount','mailsubstatuses','MailSubstatus','openchannelqueues','OpenchannelQueue','SmsQueue','smsaccounts','SmsAccount','whatsappqueues','WhatsappQueue','whatsappaccounts','WhatsappAccount','teams','voicequeues','agents','telephones','Users','admin','user'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x4be6,0x1c0));var _0x64be=function(_0x1e6b81,_0x1eb3ec){_0x1e6b81=_0x1e6b81-0x0;var _0x457c87=_0x4be6[_0x1e6b81];return _0x457c87;};'use strict';var _=require(_0x64be('0x0'));var attributes=require(_0x64be('0x1'));var qs=require('../../components/parsers/qs');var squel=require(_0x64be('0x2'));module[_0x64be('0x3')]=function(_0x2e566a){var _0x105319=_0x2e566a['models'];function _0x16faa5(_0x3391f4,_0x12ae63){return new Promise(function(_0x22d08f,_0x5d2352){if(!_0x12ae63)return _0x22d08f(null);var _0x5020a4=_0x12ae63[_0x64be('0x4')]?{[_0x12ae63[_0x64be('0x4')][_0x64be('0x5')]]:_0x12ae63['filter'][_0x64be('0x6')]}:undefined;return _0x105319[_0x3391f4][_0x64be('0x7')]({'where':_0x5020a4,'raw':!![]})['then'](function(_0x382336){_0x12ae63[_0x64be('0x8')]=_['map'](_0x382336,'id');_0x22d08f(_0x12ae63);})[_0x64be('0x9')](function(_0x4ead62){_0x5d2352(_0x4ead62);});});}function _0xe860c2(_0x11b17c,_0x1aa2d5){return new Promise(function(_0x13d8a5,_0x4bb6e5){var _0x507891=_0x11b17c[_0x64be('0x4')]?{[_0x11b17c['filter'][_0x64be('0x5')]]:_0x11b17c['filter']['value']}:undefined;return _0x105319[_0x11b17c[_0x64be('0xa')]][_0x64be('0x7')]({'where':_0x507891,'raw':!![]})[_0x64be('0xb')](function(_0x5d61ec){_0x1aa2d5[_0x64be('0x8')]=_[_0x64be('0xc')](_0x5d61ec,function(_0x49e2c0){return _0x49e2c0[_0x64be('0xd')];});_0x13d8a5(_0x1aa2d5);})[_0x64be('0x9')](function(_0x1568c5){_0x4bb6e5(_0x1568c5);});});}function _0xde2783(_0x4f9419,_0xc58e76,_0x5d2af2){if(!_0xc58e76)return Promise['resolve'](null);return new Promise(function(_0x830e1f,_0x31aa2b){return _0x105319[_0x64be('0xe')][_0x64be('0x7')]({'where':{'sectionId':_0xc58e76['id']},'raw':!![]})[_0x64be('0xb')](function(_0x21a7f5){if(_0x4f9419[_0x64be('0x5')]&&_0x4f9419[_0x64be('0x5')]!=='id'){_0xc58e76[_0x64be('0x8')]=_[_0x64be('0xc')](_0x21a7f5,function(_0x40d7f8){return _0x40d7f8[_0x4f9419['field']];});}else{if(_0x5d2af2===_0x64be('0xf')){_0xc58e76[_0x64be('0x8')]=_['map'](_0x21a7f5,function(_0x1456a6){return{'id':_0x1456a6[_0x64be('0x10')],'type':_0x1456a6[_0x64be('0x11')]};});}else{_0xc58e76[_0x64be('0x8')]=_[_0x64be('0xc')](_0x21a7f5,function(_0x5c4716){return _0x5c4716[_0x64be('0x10')];});}}_0x830e1f(_0xc58e76);})[_0x64be('0x9')](function(_0x21c50e){_0x31aa2b(_0x21c50e);});});}function _0x482f0f(_0x180410,_0x4c464d){var _0x2f79c2={'parentSections':[]};switch(_0x180410[_0x64be('0x12')]()){case _0x64be('0x13'):_0x2f79c2['childModel']=_0x64be('0x14');break;case _0x64be('0x15'):_0x2f79c2[_0x64be('0x16')]=_0x64be('0x17');break;case'squarerecordings':_0x2f79c2['childModel']=_0x64be('0x18');_0x2f79c2['parentSections']=[{'name':'SquareProjects','field':'name','foreignKey':_0x64be('0x19')}];break;case'projects':_0x2f79c2['childModel']='JscriptyProject';break;case _0x64be('0x1a'):_0x2f79c2[_0x64be('0x16')]=_0x64be('0x1b');_0x2f79c2[_0x64be('0x1c')]=[{'name':_0x64be('0x1d'),'field':'id','foreignKey':_0x64be('0x1e')}];break;case'lists':_0x2f79c2[_0x64be('0x16')]=_0x64be('0x1f');break;case'companies':_0x2f79c2[_0x64be('0x16')]=_0x64be('0x20');break;case'globalcustomfields':_0x2f79c2['childModel']=_0x64be('0x21');break;case _0x64be('0x22'):_0x2f79c2[_0x64be('0x16')]=_0x64be('0x23');break;case'chatwebsites':_0x2f79c2[_0x64be('0x16')]='ChatWebsite';break;case _0x64be('0x24'):_0x2f79c2[_0x64be('0x16')]=_0x64be('0x25');break;case _0x64be('0x26'):_0x2f79c2[_0x64be('0x16')]=_0x64be('0x27');break;case'inboundroutes':case'internalroutes':case _0x64be('0x28'):_0x2f79c2[_0x64be('0x16')]=_0x64be('0x29');break;case'contexts':_0x2f79c2['childModel']=_0x64be('0x2a');break;case _0x64be('0x2b'):_0x2f79c2[_0x64be('0x16')]=_0x64be('0x2c');break;case _0x64be('0x2d'):_0x2f79c2[_0x64be('0x16')]=_0x64be('0x2e');_0x2f79c2[_0x64be('0x1c')]=[{'name':_0x64be('0x2f'),'field':_0x64be('0xd'),'foreignKey':'membername','model':_0x64be('0x30'),'filter':{'field':'role','value':['agent']}},{'name':_0x64be('0x31'),'field':_0x64be('0xd'),'foreignKey':_0x64be('0x32'),'model':'User','filter':{'field':_0x64be('0x33'),'value':[_0x64be('0x34')]}},{'name':_0x64be('0x35'),'field':_0x64be('0xd'),'foreignKey':_0x64be('0x36'),'model':_0x64be('0x37'),'filter':{'field':'type','value':[_0x64be('0x38')]}},{'name':_0x64be('0x39'),'field':_0x64be('0xd'),'foreignKey':_0x64be('0x36'),'model':_0x64be('0x37'),'filter':{'field':_0x64be('0x11'),'value':['outbound']}}];break;case'musiconholds':_0x2f79c2['childModel']='VoiceMusicOnHold';break;case _0x64be('0x3a'):_0x2f79c2[_0x64be('0x16')]='VoiceChanSpy';break;case _0x64be('0x3b'):_0x2f79c2[_0x64be('0x16')]=_0x64be('0x3c');break;case _0x64be('0x3d'):_0x2f79c2[_0x64be('0x16')]=_0x64be('0x3e');break;case'mailqueues':_0x2f79c2[_0x64be('0x16')]=_0x64be('0x3f');break;case'mailaccounts':_0x2f79c2[_0x64be('0x16')]=_0x64be('0x40');break;case _0x64be('0x41'):_0x2f79c2[_0x64be('0x16')]=_0x64be('0x42');break;case _0x64be('0x43'):_0x2f79c2['childModel']=_0x64be('0x44');break;case'openchannelaccounts':_0x2f79c2[_0x64be('0x16')]='OpenchannelAccount';break;case'smsqueues':_0x2f79c2['childModel']=_0x64be('0x45');break;case _0x64be('0x46'):_0x2f79c2[_0x64be('0x16')]=_0x64be('0x47');break;case _0x64be('0x48'):_0x2f79c2[_0x64be('0x16')]=_0x64be('0x49');break;case _0x64be('0x4a'):_0x2f79c2[_0x64be('0x16')]=_0x64be('0x4b');break;case _0x64be('0x4c'):_0x2f79c2[_0x64be('0x16')]='Team';break;case _0x64be('0x4d'):case'queuecampaigns':_0x2f79c2[_0x64be('0x16')]=_0x64be('0x37');if(_0x4c464d){_0x2f79c2[_0x64be('0x1c')]=[{'name':_0x64be('0x35')},{'name':'QueueCampaigns'}];}break;case'users':case _0x64be('0x4e'):case _0x64be('0x4f'):_0x2f79c2[_0x64be('0x16')]='User';if(_0x4c464d){_0x2f79c2[_0x64be('0x1c')]=[{'name':_0x64be('0x50'),'filter':{'field':_0x64be('0x33'),'value':[_0x64be('0x51'),_0x64be('0x52')]},'ignore':!![]},{'name':'Agents'},{'name':_0x64be('0x31')}];}break;case _0x64be('0x53'):_0x2f79c2['childModel']=_0x64be('0x54');break;case'salesforceaccounts':_0x2f79c2[_0x64be('0x16')]=_0x64be('0x55');break;case _0x64be('0x56'):_0x2f79c2[_0x64be('0x16')]=_0x64be('0x57');break;case _0x64be('0x58'):_0x2f79c2['childModel']=_0x64be('0x59');break;case _0x64be('0x5a'):_0x2f79c2['childModel']=_0x64be('0x5b');break;case _0x64be('0x5c'):_0x2f79c2[_0x64be('0x16')]='ZohoAccount';break;case _0x64be('0x5d'):_0x2f79c2['childModel']='User';break;case _0x64be('0x5e'):_0x2f79c2['childModel']=_0x64be('0x5f');break;case _0x64be('0x60'):_0x2f79c2['childModel']=_0x64be('0x61');break;case _0x64be('0x62'):_0x2f79c2[_0x64be('0x16')]=_0x64be('0x63');break;case'intervals':_0x2f79c2[_0x64be('0x16')]='Interval';break;case _0x64be('0x64'):_0x2f79c2[_0x64be('0x16')]='Pause';break;case'scheduler':_0x2f79c2['childModel']=_0x64be('0x65');break;case _0x64be('0x66'):_0x2f79c2['childModel']='Sound';break;case _0x64be('0x67'):_0x2f79c2['childModel']=_0x64be('0x68');break;case _0x64be('0x69'):_0x2f79c2[_0x64be('0x16')]=_0x64be('0x6a');break;case _0x64be('0x6b'):_0x2f79c2['childModel']=_0x64be('0x6c');break;case _0x64be('0x6d'):_0x2f79c2[_0x64be('0x16')]=_0x64be('0x6e');break;case _0x64be('0x6f'):_0x2f79c2['childModel']=_0x64be('0x70');break;case _0x64be('0x71'):_0x2f79c2[_0x64be('0x16')]='Plugin';break;case _0x64be('0x72'):_0x2f79c2[_0x64be('0x16')]='AnalyticExtractedReport';_0x2f79c2[_0x64be('0x1c')]=[{'name':_0x64be('0x73'),'field':'id','foreignKey':'reportId'}];break;case _0x64be('0x74'):_0x2f79c2[_0x64be('0x16')]='AnalyticMetric';break;}return _0x2f79c2;}function _0x184a68(_0x154400,_0x238ec5){var _0x9a3f8b=_0x154400['charAt'](0x0)[_0x64be('0x75')]()+_0x154400[_0x64be('0x76')](0x1);var _0x77318={'type':_0x105319['Sequelize'][_0x64be('0x77')][_0x64be('0x78')],'raw':!![]};return new Promise(function(_0x27ebbe,_0x5f4c62){var _0x1a0fe7=squel['select']()[_0x64be('0x5')](_0x64be('0x79')+_0x9a3f8b+_0x64be('0x7a'),'id')['field'](_0x64be('0x7b'))[_0x64be('0x7c')]('user_has_'+_0x154400+_0x64be('0x7d'),'ui')[_0x64be('0x7e')]('ui.UserId\x20=\x20?',_0x238ec5['id']);return _0x105319[_0x64be('0x7f')]['query'](_0x1a0fe7['toString'](),_0x77318)[_0x64be('0xb')](function(_0xfb0089){_0x238ec5[_0x9a3f8b+'OpenTabs']=_0xfb0089;_0x27ebbe(_0xfb0089);})[_0x64be('0x9')](function(_0xd8ed80){_0x5f4c62(_0xd8ed80);});});}return _0x2e566a[_0x64be('0x80')](_0x64be('0x81'),attributes,{'tableName':'user_profiles','paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x14fc36){var _0x472cf5={'raw':_0x14fc36['query'][_0x64be('0x82')],'where':{}};var _0x2555ff={};var _0x30169a={'count':0x0,'rows':[]};var _0x1ef805=_0x14fc36[_0x64be('0x83')][_0x64be('0x84')];var _0x1d3cd9=_0x14fc36[_0x64be('0x83')]['mergeResources']||![];var _0x2a5d5=_0x482f0f(_0x1ef805,_0x1d3cd9);if(!_0x2a5d5[_0x64be('0x16')])throw new Error(_0x64be('0x85')+_0x1ef805+'\x27');var _0x44d51d=[{'name':_0x1ef805}];if(!_[_0x64be('0x86')](_0x2a5d5[_0x64be('0x1c')]))_0x44d51d=_0x2a5d5['parentSections'];var _0x3ad759=[];for(var _0x10864b=0x0;_0x10864b<_0x44d51d[_0x64be('0x87')];_0x10864b++){_0x3ad759[_0x64be('0x88')](_0x105319['UserProfileSection'][_0x64be('0x89')]({'where':{'userProfileId':_0x14fc36[_0x64be('0x8a')]['id'],'name':_0x44d51d[_0x10864b][_0x64be('0xd')]},'raw':!![]}));}return Promise['all'](_0x3ad759)['then'](function(_0x1c8391){var _0x2a73ad=_[_0x64be('0x4')](_0x1c8391,function(_0x1724ac){return _0x1724ac?_0x1724ac:undefined;});var _0x4036be=_[_0x64be('0x4')](_0x44d51d,['ignore',!![]]);var _0x3ce6e9=_[_0x64be('0x86')](_0x2a73ad)&&_['isEmpty'](_0x4036be)?null:_[_0x64be('0x8b')](_0x4036be,_0x2a73ad);if(!_0x3ce6e9)return null;var _0x3aeba4=[];for(var _0x2cde6b=0x0;_0x2cde6b<_0x3ce6e9[_0x64be('0x87')];_0x2cde6b++){var _0x296290=_[_0x64be('0x89')](_0x44d51d,function(_0x27f4dd){return _0x3ce6e9[_0x2cde6b]?_0x27f4dd[_0x64be('0xd')]===_0x3ce6e9[_0x2cde6b][_0x64be('0xd')]:null;});if(_0x296290){if(_0x3ce6e9[_0x2cde6b][_0x64be('0x8c')]){_0x3aeba4['push'](_0x16faa5(_0x2a5d5[_0x64be('0x16')],_0x3ce6e9[_0x2cde6b]));}else{if(!_0x3ce6e9[_0x2cde6b]['autoAssociation']){_0x3aeba4[_0x64be('0x88')](_0xde2783(_0x296290,_0x3ce6e9[_0x2cde6b],_0x2a5d5['childModel']));}else{if(_0x296290[_0x64be('0xa')]){_0x3aeba4[_0x64be('0x88')](_0xe860c2(_0x296290,_0x3ce6e9[_0x2cde6b]));}}}}}return Promise[_0x64be('0x8d')](_0x3aeba4);})['then'](function(_0x50a2c9){var _0x3f784e=_0x50a2c9;var _0x1fc9a9=null;if(_0x3f784e){_0x1fc9a9=_0x3f784e[_0x64be('0x87')]===0x1?_0x3f784e[0x0]:null;}if(!_0x1fc9a9&&!_0x3f784e)return _0x30169a;var _0x406f6d=_0x105319[_0x2a5d5['childModel']][_0x64be('0x8e')];_0x2555ff['model']=_[_0x64be('0x8f')](_0x406f6d);_0x2555ff['query']=_[_0x64be('0x8f')](_0x14fc36[_0x64be('0x83')]);_0x2555ff['filters']=_[_0x64be('0x90')](_0x2555ff[_0x64be('0xa')],_0x2555ff[_0x64be('0x83')]);_0x472cf5[_0x64be('0x91')]=_['intersection'](_0x2555ff['model'],qs[_0x64be('0x92')](_0x14fc36[_0x64be('0x83')][_0x64be('0x92')]));_0x472cf5['attributes']=_0x472cf5['attributes'][_0x64be('0x87')]?_0x472cf5['attributes']:_0x2555ff[_0x64be('0xa')];if(!_0x14fc36[_0x64be('0x83')]['hasOwnProperty'](_0x64be('0x93'))){_0x472cf5[_0x64be('0x94')]=qs[_0x64be('0x94')](_0x14fc36[_0x64be('0x83')][_0x64be('0x94')]);_0x472cf5[_0x64be('0x95')]=qs[_0x64be('0x95')](_0x14fc36[_0x64be('0x83')][_0x64be('0x95')]);}_0x472cf5['order']=qs['sort'](_0x14fc36['query']['sort']);_0x472cf5[_0x64be('0x7e')]=qs['filters'](_[_0x64be('0x96')](_0x14fc36[_0x64be('0x83')],_0x2555ff[_0x64be('0x97')]));if(_0x14fc36[_0x64be('0x83')][_0x64be('0x4')]){_0x472cf5[_0x64be('0x7e')]=_[_0x64be('0x98')](_0x472cf5[_0x64be('0x7e')],{'$or':_[_0x64be('0xc')](_0x406f6d,function(_0x12e014){if(_0x12e014['type']['key']!=='VIRTUAL'){var _0x1507bb={};_0x1507bb[_0x12e014[_0x64be('0x5')]]={'$like':'%'+_0x14fc36[_0x64be('0x83')]['filter']+'%'};return _0x1507bb;}})});}var _0xf615ca=[];var _0x3a62ca=null;var _0x2a5ddb={};if(_0x1fc9a9){_0x3a62ca=_['find'](_0x44d51d,[_0x64be('0xd'),_0x1fc9a9['name']]);if(_0x3a62ca[_0x64be('0x5')]){_0x2a5ddb={};if(_0x2a5d5[_0x64be('0x16')]===_0x64be('0xf')){_0x2a5ddb[_0x3a62ca[_0x64be('0x99')]]=_['map'](_0x1fc9a9[_0x64be('0x8')],'id');}else{_0x2a5ddb[_0x3a62ca['foreignKey']]=_0x1fc9a9[_0x64be('0x8')];}_0xf615ca[_0x64be('0x88')](_0x2a5ddb);}else{_0x472cf5[_0x64be('0x7e')]['id']=_0x1fc9a9['associatedResources'];}}else{for(var _0x58c74c=0x0;_0x58c74c<_0x3f784e[_0x64be('0x87')];_0x58c74c++){_0x3a62ca=_['find'](_0x44d51d,['name',_0x3f784e[_0x58c74c][_0x64be('0xd')]]);if(_0x3a62ca['field']){_0x2a5ddb={};_0x2a5ddb[_0x3a62ca[_0x64be('0x99')]]=_0x3f784e[_0x58c74c]['associatedResources'];_0xf615ca[_0x64be('0x88')](_0x2a5ddb);}else{if(!_0x472cf5['where']['id'])_0x472cf5[_0x64be('0x7e')]['id']=[];_0x3f784e[_0x58c74c][_0x64be('0x8')][_0x64be('0x9a')](function(_0x23d48d){_0x472cf5['where']['id'][_0x64be('0x88')](_0x23d48d);});}}}if(!_[_0x64be('0x86')](_0xf615ca)){_0x472cf5['where']=_['merge'](_0x472cf5[_0x64be('0x7e')],{'$and':{'$or':_0xf615ca}});}_0x472cf5=_[_0x64be('0x98')]({},_0x472cf5,_0x14fc36[_0x64be('0x9b')]);if(_0x1fc9a9&&!_0x1fc9a9[_0x64be('0x9c')]&&_0x2a5d5[_0x64be('0x16')]==='AnalyticExtractedReport'){if(_0x14fc36[_0x64be('0x83')][_0x64be('0x9d')]){_0x472cf5[_0x64be('0x9e')]=[{'all':!![]}];}return _0x105319[_0x2a5d5[_0x64be('0x16')]]['findAll'](_0x472cf5)[_0x64be('0xb')](function(_0x5d37d0){var _0x942a8e=[];_0x5d37d0['forEach'](function(_0x2853c8){var _0x4c0240;switch(_0x2853c8[_0x64be('0x9f')]){case _0x64be('0xa0'):_0x4c0240=_[_0x64be('0x89')](_0x1fc9a9[_0x64be('0x8')],function(_0x4ad52b){return _0x4ad52b['id']===_0x2853c8[_0x64be('0xa1')]&&_0x4ad52b[_0x64be('0x11')]===_0x64be('0xa2');});break;case _0x64be('0xa3'):_0x4c0240=_['find'](_0x1fc9a9[_0x64be('0x8')],function(_0x4ad28a){return _0x4ad28a['id']===_0x2853c8[_0x64be('0xa1')]&&_0x4ad28a['type']==='CustomReports';});break;}if(_0x4c0240)_0x942a8e['push'](_0x2853c8);});_0x30169a[_0x64be('0xa4')]=_0x942a8e['length'];_0x30169a[_0x64be('0xa5')]=_0x942a8e;return _0x30169a;});}else{if(!_[_0x64be('0x86')](_0x14fc36[_0x64be('0x83')][_0x64be('0xa6')])){_0x472cf5['where']['id']=_0x472cf5[_0x64be('0x7e')]['id']?_[_0x64be('0x90')](_0x472cf5[_0x64be('0x7e')]['id'],_0x14fc36['query']['ids']):_0x14fc36['query'][_0x64be('0xa6')];if(_0x14fc36['query']['customSorting']){_0x472cf5['order']=_0x14fc36[_0x64be('0x83')][_0x64be('0xa7')];}}if(_0x14fc36[_0x64be('0x83')][_0x64be('0xa8')]){_0x472cf5[_0x64be('0x7e')]=_[_0x64be('0x98')](_0x472cf5['where'],{'$and':_0x14fc36[_0x64be('0x83')][_0x64be('0xa8')]});}return _0x105319[_0x2a5d5[_0x64be('0x16')]][_0x64be('0xa4')]({'where':_0x472cf5['where']})[_0x64be('0xb')](function(_0x1d3d1a){_0x30169a[_0x64be('0xa4')]=_0x1d3d1a;if(_0x14fc36[_0x64be('0x83')][_0x64be('0x9d')]){if(_0x2a5d5[_0x64be('0x16')]===_0x64be('0x1b')){_0x472cf5[_0x64be('0x9e')]=[{'model':_0x105319[_0x64be('0x68')],'as':_0x64be('0xa9'),'attributes':['id',_0x64be('0xd'),'color'],'required':_0x14fc36['query'][_0x64be('0xaa')]?!![]:![]},{'model':_0x105319[_0x64be('0x68')],'as':_0x64be('0xab'),'attributes':['id','name',_0x64be('0xac')],'through':_0x14fc36[_0x64be('0x83')][_0x64be('0xaa')]?{'attributes':[],'where':{'TagId':_0x14fc36[_0x64be('0x83')][_0x64be('0xaa')]||undefined}}:{},'required':_0x14fc36[_0x64be('0x83')]['tag']?!![]:![]}];}else{_0x472cf5[_0x64be('0x9e')]=[{'all':!![]}];}}return _0x105319[_0x2a5d5[_0x64be('0x16')]][_0x64be('0x7')](_0x472cf5);})[_0x64be('0xb')](function(_0x4dd6b1){_0x30169a[_0x64be('0xa5')]=_0x4dd6b1;if(_0x1ef805===_0x64be('0x2f')&&_0x14fc36['query']['openTabs']===_0x64be('0xad')){var _0x4fbf2e=[];for(var _0xb6a741=0x0;_0xb6a741<_0x30169a[_0x64be('0xa5')]['length'];_0xb6a741++){_0x4fbf2e[_0x64be('0x88')](_0x184a68('chat',_0x30169a[_0x64be('0xa5')][_0xb6a741][_0x64be('0xae')]));_0x4fbf2e[_0x64be('0x88')](_0x184a68(_0x64be('0xaf'),_0x30169a[_0x64be('0xa5')][_0xb6a741]['dataValues']));_0x4fbf2e['push'](_0x184a68('fax',_0x30169a[_0x64be('0xa5')][_0xb6a741]['dataValues']));_0x4fbf2e['push'](_0x184a68(_0x64be('0xb0'),_0x30169a[_0x64be('0xa5')][_0xb6a741]['dataValues']));_0x4fbf2e[_0x64be('0x88')](_0x184a68('openchannel',_0x30169a['rows'][_0xb6a741]['dataValues']));_0x4fbf2e[_0x64be('0x88')](_0x184a68('whatsapp',_0x30169a[_0x64be('0xa5')][_0xb6a741][_0x64be('0xae')]));}return Promise[_0x64be('0x8d')](_0x4fbf2e)[_0x64be('0xb')](function(){return _0x30169a;});}return _0x30169a;});}});}}});};
\ No newline at end of file
+var _0xa1d5=['filters','intersection','attributes','fields','hasOwnProperty','nolimit','limit','offset','sort','pick','merge','key','foreignKey','forEach','include','reportType','default','DefaultReports','custom','CustomReports','count','rows','ids','order','customSorting','extraQueryConditions','Tags','tag','ThroughTags','color','openTabs','true','chat','dataValues','mail','openchannel','whatsapp','lodash','./userProfile.attributes','../../components/parsers/qs','exports','filter','findAll','then','associatedResources','map','catch','value','model','name','resolve','UserProfileResource','field','AnalyticExtractedReport','type','resourceId','squareprojects','childModel','odbc','SquareOdbc','squarerecordings','SquareRecording','parentSections','SquareProjects','projects','JscriptyProject','contacts','CmContact','Lists','ListId','lists','CmList','companies','CmCompany','globalcustomfields','chatqueues','ChatQueue','chatwebsites','ChatWebsite','faxqueues','FaxQueue','faxaccounts','inboundroutes','internalroutes','outboundroutes','VoiceExtension','contexts','VoiceContext','voicemails','voicerecordings','VoiceRecording','Agents','membername','User','role','agent','telephone','queue','VoiceQueue','inbound','QueueCampaigns','outbound','VoiceMusicOnHold','chanspies','VoiceChanSpy','voiceprefixes','VoicePrefix','ivrcampaigns','mailqueues','MailQueue','mailaccounts','MailAccount','mailsubstatuses','MailSubstatus','OpenchannelQueue','openchannelaccounts','smsqueues','SmsQueue','smsaccounts','SmsAccount','whatsappqueues','whatsappaccounts','WhatsappAccount','teams','Team','voicequeues','VoiceQueues','users','agents','Users','user','Telephones','zendeskaccounts','salesforceaccounts','SalesforceAccount','freshdeskaccounts','FreshdeskAccount','sugarcrmaccounts','DeskAccount','zohoaccounts','ZohoAccount','vtigeraccounts','cannedanswers','customdashboards','Dashboard','intervals','Pause','scheduler','sounds','tags','Tag','Template','Trigger','trunks','Trunk','variables','Variable','plugins','Plugin','extractedreports','reportId','metrics','charAt','toUpperCase','slice','Sequelize','QueryTypes','SELECT','ui.','from','user_has_','where','ui.UserId\x20=\x20?','sequelize','query','toString','OpenTabs','UserProfile','user_profiles','section','isEmpty','length','push','find','params','all','ignore','union','autoAssociation'];(function(_0xea52cf,_0xabaf62){var _0x35397b=function(_0x1e9af0){while(--_0x1e9af0){_0xea52cf['push'](_0xea52cf['shift']());}};_0x35397b(++_0xabaf62);}(_0xa1d5,0xe2));var _0x5a1d=function(_0x2a82ae,_0x5e321c){_0x2a82ae=_0x2a82ae-0x0;var _0x1f0f5b=_0xa1d5[_0x2a82ae];return _0x1f0f5b;};'use strict';var _=require(_0x5a1d('0x0'));var attributes=require(_0x5a1d('0x1'));var qs=require(_0x5a1d('0x2'));var squel=require('squel');module[_0x5a1d('0x3')]=function(_0x4774a1){var _0x2f07d6=_0x4774a1['models'];function _0x2d7c44(_0x30ad7f,_0x43eeec){return new Promise(function(_0xbfdba1,_0x5d84cf){if(!_0x43eeec)return _0xbfdba1(null);var _0x2600f2=_0x43eeec[_0x5a1d('0x4')]?{[_0x43eeec[_0x5a1d('0x4')]['field']]:_0x43eeec[_0x5a1d('0x4')]['value']}:undefined;return _0x2f07d6[_0x30ad7f][_0x5a1d('0x5')]({'where':_0x2600f2,'raw':!![]})[_0x5a1d('0x6')](function(_0x304954){_0x43eeec[_0x5a1d('0x7')]=_[_0x5a1d('0x8')](_0x304954,'id');_0xbfdba1(_0x43eeec);})[_0x5a1d('0x9')](function(_0x102091){_0x5d84cf(_0x102091);});});}function _0x35049e(_0x204f76,_0x5b0c39){return new Promise(function(_0x22d9ee,_0x14cae2){var _0x5f1fb4=_0x204f76['filter']?{[_0x204f76[_0x5a1d('0x4')]['field']]:_0x204f76[_0x5a1d('0x4')][_0x5a1d('0xa')]}:undefined;return _0x2f07d6[_0x204f76[_0x5a1d('0xb')]][_0x5a1d('0x5')]({'where':_0x5f1fb4,'raw':!![]})[_0x5a1d('0x6')](function(_0x412bf6){_0x5b0c39[_0x5a1d('0x7')]=_['map'](_0x412bf6,function(_0xe5e6ae){return _0xe5e6ae[_0x5a1d('0xc')];});_0x22d9ee(_0x5b0c39);})[_0x5a1d('0x9')](function(_0x22d244){_0x14cae2(_0x22d244);});});}function _0x1a4201(_0x195f45,_0x24c47c,_0x144ae6){if(!_0x24c47c)return Promise[_0x5a1d('0xd')](null);return new Promise(function(_0x4170fd,_0x5da651){return _0x2f07d6[_0x5a1d('0xe')][_0x5a1d('0x5')]({'where':{'sectionId':_0x24c47c['id']},'raw':!![]})[_0x5a1d('0x6')](function(_0x32a676){if(_0x195f45[_0x5a1d('0xf')]&&_0x195f45['field']!=='id'){_0x24c47c[_0x5a1d('0x7')]=_[_0x5a1d('0x8')](_0x32a676,function(_0x3e2f41){return _0x3e2f41[_0x195f45[_0x5a1d('0xf')]];});}else{if(_0x144ae6===_0x5a1d('0x10')){_0x24c47c['associatedResources']=_[_0x5a1d('0x8')](_0x32a676,function(_0x19c9aa){return{'id':_0x19c9aa['resourceId'],'type':_0x19c9aa[_0x5a1d('0x11')]};});}else{_0x24c47c[_0x5a1d('0x7')]=_[_0x5a1d('0x8')](_0x32a676,function(_0x6bdf42){return _0x6bdf42[_0x5a1d('0x12')];});}}_0x4170fd(_0x24c47c);})[_0x5a1d('0x9')](function(_0x2e523d){_0x5da651(_0x2e523d);});});}function _0x317a41(_0x12cfd7,_0x2e2c3b){var _0x4926e3={'parentSections':[]};switch(_0x12cfd7['toLowerCase']()){case _0x5a1d('0x13'):_0x4926e3[_0x5a1d('0x14')]='SquareProject';break;case _0x5a1d('0x15'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x16');break;case _0x5a1d('0x17'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x18');_0x4926e3[_0x5a1d('0x19')]=[{'name':_0x5a1d('0x1a'),'field':'name','foreignKey':'projectName'}];break;case _0x5a1d('0x1b'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x1c');break;case _0x5a1d('0x1d'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x1e');_0x4926e3[_0x5a1d('0x19')]=[{'name':_0x5a1d('0x1f'),'field':'id','foreignKey':_0x5a1d('0x20')}];break;case _0x5a1d('0x21'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x22');break;case _0x5a1d('0x23'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x24');break;case _0x5a1d('0x25'):_0x4926e3[_0x5a1d('0x14')]='CmCustomField';break;case _0x5a1d('0x26'):_0x4926e3['childModel']=_0x5a1d('0x27');break;case _0x5a1d('0x28'):_0x4926e3['childModel']=_0x5a1d('0x29');break;case _0x5a1d('0x2a'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x2b');break;case _0x5a1d('0x2c'):_0x4926e3[_0x5a1d('0x14')]='FaxAccount';break;case _0x5a1d('0x2d'):case _0x5a1d('0x2e'):case _0x5a1d('0x2f'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x30');break;case _0x5a1d('0x31'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x32');break;case _0x5a1d('0x33'):_0x4926e3['childModel']='VoiceMail';break;case _0x5a1d('0x34'):_0x4926e3['childModel']=_0x5a1d('0x35');_0x4926e3[_0x5a1d('0x19')]=[{'name':_0x5a1d('0x36'),'field':_0x5a1d('0xc'),'foreignKey':_0x5a1d('0x37'),'model':_0x5a1d('0x38'),'filter':{'field':_0x5a1d('0x39'),'value':[_0x5a1d('0x3a')]}},{'name':'Telephones','field':_0x5a1d('0xc'),'foreignKey':'membername','model':_0x5a1d('0x38'),'filter':{'field':_0x5a1d('0x39'),'value':[_0x5a1d('0x3b')]}},{'name':'VoiceQueues','field':_0x5a1d('0xc'),'foreignKey':_0x5a1d('0x3c'),'model':_0x5a1d('0x3d'),'filter':{'field':_0x5a1d('0x11'),'value':[_0x5a1d('0x3e')]}},{'name':_0x5a1d('0x3f'),'field':_0x5a1d('0xc'),'foreignKey':'queue','model':_0x5a1d('0x3d'),'filter':{'field':'type','value':[_0x5a1d('0x40')]}}];break;case'musiconholds':_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x41');break;case _0x5a1d('0x42'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x43');break;case _0x5a1d('0x44'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x45');break;case _0x5a1d('0x46'):_0x4926e3['childModel']='Campaign';break;case _0x5a1d('0x47'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x48');break;case _0x5a1d('0x49'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x4a');break;case _0x5a1d('0x4b'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x4c');break;case'openchannelqueues':_0x4926e3['childModel']=_0x5a1d('0x4d');break;case _0x5a1d('0x4e'):_0x4926e3['childModel']='OpenchannelAccount';break;case _0x5a1d('0x4f'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x50');break;case _0x5a1d('0x51'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x52');break;case _0x5a1d('0x53'):_0x4926e3[_0x5a1d('0x14')]='WhatsappQueue';break;case _0x5a1d('0x54'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x55');break;case _0x5a1d('0x56'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x57');break;case _0x5a1d('0x58'):case'queuecampaigns':_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x3d');if(_0x2e2c3b){_0x4926e3[_0x5a1d('0x19')]=[{'name':_0x5a1d('0x59')},{'name':_0x5a1d('0x3f')}];}break;case _0x5a1d('0x5a'):case _0x5a1d('0x5b'):case'telephones':_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x38');if(_0x2e2c3b){_0x4926e3['parentSections']=[{'name':_0x5a1d('0x5c'),'filter':{'field':_0x5a1d('0x39'),'value':['admin',_0x5a1d('0x5d')]},'ignore':!![]},{'name':'Agents'},{'name':_0x5a1d('0x5e')}];}break;case _0x5a1d('0x5f'):_0x4926e3[_0x5a1d('0x14')]='ZendeskAccount';break;case _0x5a1d('0x60'):_0x4926e3['childModel']=_0x5a1d('0x61');break;case _0x5a1d('0x62'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x63');break;case _0x5a1d('0x64'):_0x4926e3[_0x5a1d('0x14')]='SugarcrmAccount';break;case'deskaccounts':_0x4926e3['childModel']=_0x5a1d('0x65');break;case _0x5a1d('0x66'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x67');break;case _0x5a1d('0x68'):_0x4926e3[_0x5a1d('0x14')]='User';break;case _0x5a1d('0x69'):_0x4926e3[_0x5a1d('0x14')]='CannedAnswer';break;case'dispositions':_0x4926e3['childModel']='Disposition';break;case _0x5a1d('0x6a'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x6b');break;case _0x5a1d('0x6c'):_0x4926e3[_0x5a1d('0x14')]='Interval';break;case'pauses':_0x4926e3['childModel']=_0x5a1d('0x6d');break;case _0x5a1d('0x6e'):_0x4926e3['childModel']='Schedule';break;case _0x5a1d('0x6f'):_0x4926e3['childModel']='Sound';break;case _0x5a1d('0x70'):_0x4926e3['childModel']=_0x5a1d('0x71');break;case'templates':_0x4926e3['childModel']=_0x5a1d('0x72');break;case'triggers':_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x73');break;case _0x5a1d('0x74'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x75');break;case _0x5a1d('0x76'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x77');break;case _0x5a1d('0x78'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x79');break;case _0x5a1d('0x7a'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x10');_0x4926e3[_0x5a1d('0x19')]=[{'name':'Reports','field':'id','foreignKey':_0x5a1d('0x7b')}];break;case _0x5a1d('0x7c'):_0x4926e3['childModel']='AnalyticMetric';break;}return _0x4926e3;}function _0x4c14a5(_0x2c4b7e,_0x54c8a2){var _0x153b20=_0x2c4b7e[_0x5a1d('0x7d')](0x0)[_0x5a1d('0x7e')]()+_0x2c4b7e[_0x5a1d('0x7f')](0x1);var _0x5e9943={'type':_0x2f07d6[_0x5a1d('0x80')][_0x5a1d('0x81')][_0x5a1d('0x82')],'raw':!![]};return new Promise(function(_0x42038f,_0x5c0f5a){var _0x5660f3=squel['select']()['field'](_0x5a1d('0x83')+_0x153b20+'InteractionId','id')[_0x5a1d('0xf')]('ui.createdAt')[_0x5a1d('0x84')](_0x5a1d('0x85')+_0x2c4b7e+'_interactions','ui')[_0x5a1d('0x86')](_0x5a1d('0x87'),_0x54c8a2['id']);return _0x2f07d6[_0x5a1d('0x88')][_0x5a1d('0x89')](_0x5660f3[_0x5a1d('0x8a')](),_0x5e9943)[_0x5a1d('0x6')](function(_0x4775a8){_0x54c8a2[_0x153b20+_0x5a1d('0x8b')]=_0x4775a8;_0x42038f(_0x4775a8);})[_0x5a1d('0x9')](function(_0x472deb){_0x5c0f5a(_0x472deb);});});}return _0x4774a1['define'](_0x5a1d('0x8c'),attributes,{'tableName':_0x5a1d('0x8d'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x42d378){var _0x534f2b={'raw':_0x42d378['query']['raw'],'where':{}};var _0x5bad8c={};var _0x230c90={'count':0x0,'rows':[]};var _0x597a51=_0x42d378[_0x5a1d('0x89')][_0x5a1d('0x8e')];var _0x2491de=_0x42d378[_0x5a1d('0x89')]['mergeResources']||![];var _0x5b0984=_0x317a41(_0x597a51,_0x2491de);if(!_0x5b0984['childModel'])throw new Error('Invalid\x20section\x20\x27'+_0x597a51+'\x27');var _0x56d29d=[{'name':_0x597a51}];if(!_[_0x5a1d('0x8f')](_0x5b0984[_0x5a1d('0x19')]))_0x56d29d=_0x5b0984[_0x5a1d('0x19')];var _0x265237=[];for(var _0x594e1b=0x0;_0x594e1b<_0x56d29d[_0x5a1d('0x90')];_0x594e1b++){_0x265237[_0x5a1d('0x91')](_0x2f07d6['UserProfileSection'][_0x5a1d('0x92')]({'where':{'userProfileId':_0x42d378[_0x5a1d('0x93')]['id'],'name':_0x56d29d[_0x594e1b]['name']},'raw':!![]}));}return Promise[_0x5a1d('0x94')](_0x265237)[_0x5a1d('0x6')](function(_0x4d3f46){var _0x4f28ce=_[_0x5a1d('0x4')](_0x4d3f46,function(_0x57d961){return _0x57d961?_0x57d961:undefined;});var _0x1bb49d=_[_0x5a1d('0x4')](_0x56d29d,[_0x5a1d('0x95'),!![]]);var _0x4fb6bd=_[_0x5a1d('0x8f')](_0x4f28ce)&&_[_0x5a1d('0x8f')](_0x1bb49d)?null:_[_0x5a1d('0x96')](_0x1bb49d,_0x4f28ce);if(!_0x4fb6bd)return null;var _0x1afa63=[];for(var _0x624932=0x0;_0x624932<_0x4fb6bd['length'];_0x624932++){var _0x16b6cc=_[_0x5a1d('0x92')](_0x56d29d,function(_0x3017ca){return _0x4fb6bd[_0x624932]?_0x3017ca['name']===_0x4fb6bd[_0x624932]['name']:null;});if(_0x16b6cc){if(_0x4fb6bd[_0x624932][_0x5a1d('0x95')]){_0x1afa63[_0x5a1d('0x91')](_0x2d7c44(_0x5b0984[_0x5a1d('0x14')],_0x4fb6bd[_0x624932]));}else{if(!_0x4fb6bd[_0x624932][_0x5a1d('0x97')]){_0x1afa63[_0x5a1d('0x91')](_0x1a4201(_0x16b6cc,_0x4fb6bd[_0x624932],_0x5b0984[_0x5a1d('0x14')]));}else{if(_0x16b6cc[_0x5a1d('0xb')]){_0x1afa63[_0x5a1d('0x91')](_0x35049e(_0x16b6cc,_0x4fb6bd[_0x624932]));}}}}}return Promise[_0x5a1d('0x94')](_0x1afa63);})[_0x5a1d('0x6')](function(_0x46c5da){var _0x541adc=_0x46c5da;var _0x4f6701=null;if(_0x541adc){_0x4f6701=_0x541adc[_0x5a1d('0x90')]===0x1?_0x541adc[0x0]:null;}if(!_0x4f6701&&!_0x541adc)return _0x230c90;var _0x56d0a0=_0x2f07d6[_0x5b0984[_0x5a1d('0x14')]]['rawAttributes'];_0x5bad8c[_0x5a1d('0xb')]=_['keys'](_0x56d0a0);_0x5bad8c[_0x5a1d('0x89')]=_['keys'](_0x42d378[_0x5a1d('0x89')]);_0x5bad8c[_0x5a1d('0x98')]=_[_0x5a1d('0x99')](_0x5bad8c[_0x5a1d('0xb')],_0x5bad8c[_0x5a1d('0x89')]);_0x534f2b[_0x5a1d('0x9a')]=_[_0x5a1d('0x99')](_0x5bad8c[_0x5a1d('0xb')],qs[_0x5a1d('0x9b')](_0x42d378[_0x5a1d('0x89')][_0x5a1d('0x9b')]));_0x534f2b['attributes']=_0x534f2b[_0x5a1d('0x9a')][_0x5a1d('0x90')]?_0x534f2b[_0x5a1d('0x9a')]:_0x5bad8c['model'];if(!_0x42d378[_0x5a1d('0x89')][_0x5a1d('0x9c')](_0x5a1d('0x9d'))){_0x534f2b[_0x5a1d('0x9e')]=qs['limit'](_0x42d378['query'][_0x5a1d('0x9e')]);_0x534f2b[_0x5a1d('0x9f')]=qs['offset'](_0x42d378['query'][_0x5a1d('0x9f')]);}_0x534f2b['order']=qs[_0x5a1d('0xa0')](_0x42d378['query'][_0x5a1d('0xa0')]);_0x534f2b[_0x5a1d('0x86')]=qs[_0x5a1d('0x98')](_[_0x5a1d('0xa1')](_0x42d378[_0x5a1d('0x89')],_0x5bad8c[_0x5a1d('0x98')]));if(_0x42d378['query'][_0x5a1d('0x4')]){_0x534f2b[_0x5a1d('0x86')]=_[_0x5a1d('0xa2')](_0x534f2b[_0x5a1d('0x86')],{'$or':_[_0x5a1d('0x8')](_0x56d0a0,function(_0x40eacd){if(_0x40eacd['type'][_0x5a1d('0xa3')]!=='VIRTUAL'){var _0x5cccfd={};_0x5cccfd[_0x40eacd['field']]={'$like':'%'+_0x42d378[_0x5a1d('0x89')][_0x5a1d('0x4')]+'%'};return _0x5cccfd;}})});}var _0x345249=[];var _0x349a69=null;var _0x450076={};if(_0x4f6701){_0x349a69=_['find'](_0x56d29d,[_0x5a1d('0xc'),_0x4f6701[_0x5a1d('0xc')]]);if(_0x349a69[_0x5a1d('0xf')]){_0x450076={};if(_0x5b0984['childModel']===_0x5a1d('0x10')){_0x450076[_0x349a69[_0x5a1d('0xa4')]]=_['map'](_0x4f6701['associatedResources'],'id');}else{_0x450076[_0x349a69['foreignKey']]=_0x4f6701[_0x5a1d('0x7')];}_0x345249['push'](_0x450076);}else{_0x534f2b[_0x5a1d('0x86')]['id']=_0x4f6701['associatedResources'];}}else{for(var _0x197b10=0x0;_0x197b10<_0x541adc['length'];_0x197b10++){_0x349a69=_[_0x5a1d('0x92')](_0x56d29d,['name',_0x541adc[_0x197b10][_0x5a1d('0xc')]]);if(_0x349a69[_0x5a1d('0xf')]){_0x450076={};_0x450076[_0x349a69[_0x5a1d('0xa4')]]=_0x541adc[_0x197b10][_0x5a1d('0x7')];_0x345249[_0x5a1d('0x91')](_0x450076);}else{if(!_0x534f2b['where']['id'])_0x534f2b[_0x5a1d('0x86')]['id']=[];_0x541adc[_0x197b10]['associatedResources'][_0x5a1d('0xa5')](function(_0xa0db2d){_0x534f2b[_0x5a1d('0x86')]['id'][_0x5a1d('0x91')](_0xa0db2d);});}}}if(!_[_0x5a1d('0x8f')](_0x345249)){_0x534f2b[_0x5a1d('0x86')]=_[_0x5a1d('0xa2')](_0x534f2b['where'],{'$and':{'$or':_0x345249}});}_0x534f2b=_['merge']({},_0x534f2b,_0x42d378['options']);if(_0x4f6701&&!_0x4f6701[_0x5a1d('0x97')]&&_0x5b0984['childModel']===_0x5a1d('0x10')){if(_0x42d378['query']['includeAll']){_0x534f2b[_0x5a1d('0xa6')]=[{'all':!![]}];}return _0x2f07d6[_0x5b0984[_0x5a1d('0x14')]]['findAll'](_0x534f2b)[_0x5a1d('0x6')](function(_0x3bdad0){var _0x559d47=[];_0x3bdad0['forEach'](function(_0x3918d4){var _0x12222f;switch(_0x3918d4[_0x5a1d('0xa7')]){case _0x5a1d('0xa8'):_0x12222f=_[_0x5a1d('0x92')](_0x4f6701['associatedResources'],function(_0x368541){return _0x368541['id']===_0x3918d4['reportId']&&_0x368541['type']===_0x5a1d('0xa9');});break;case _0x5a1d('0xaa'):_0x12222f=_[_0x5a1d('0x92')](_0x4f6701['associatedResources'],function(_0x2c7aab){return _0x2c7aab['id']===_0x3918d4[_0x5a1d('0x7b')]&&_0x2c7aab[_0x5a1d('0x11')]===_0x5a1d('0xab');});break;}if(_0x12222f)_0x559d47['push'](_0x3918d4);});_0x230c90[_0x5a1d('0xac')]=_0x559d47[_0x5a1d('0x90')];_0x230c90[_0x5a1d('0xad')]=_0x559d47;return _0x230c90;});}else{if(!_[_0x5a1d('0x8f')](_0x42d378[_0x5a1d('0x89')]['ids'])){_0x534f2b[_0x5a1d('0x86')]['id']=_0x534f2b[_0x5a1d('0x86')]['id']?_[_0x5a1d('0x99')](_0x534f2b['where']['id'],_0x42d378['query']['ids']):_0x42d378[_0x5a1d('0x89')][_0x5a1d('0xae')];if(_0x42d378[_0x5a1d('0x89')]['customSorting']){_0x534f2b[_0x5a1d('0xaf')]=_0x42d378['query'][_0x5a1d('0xb0')];}}if(_0x42d378['query'][_0x5a1d('0xb1')]){_0x534f2b[_0x5a1d('0x86')]=_[_0x5a1d('0xa2')](_0x534f2b[_0x5a1d('0x86')],{'$and':_0x42d378[_0x5a1d('0x89')][_0x5a1d('0xb1')]});}return _0x2f07d6[_0x5b0984[_0x5a1d('0x14')]][_0x5a1d('0xac')]({'where':_0x534f2b[_0x5a1d('0x86')]})[_0x5a1d('0x6')](function(_0x43fced){_0x230c90[_0x5a1d('0xac')]=_0x43fced;if(_0x42d378[_0x5a1d('0x89')]['includeAll']){if(_0x5b0984[_0x5a1d('0x14')]===_0x5a1d('0x1e')){_0x534f2b[_0x5a1d('0xa6')]=[{'model':_0x2f07d6[_0x5a1d('0x71')],'as':_0x5a1d('0xb2'),'attributes':['id',_0x5a1d('0xc'),'color'],'required':_0x42d378[_0x5a1d('0x89')][_0x5a1d('0xb3')]?!![]:![]},{'model':_0x2f07d6['Tag'],'as':_0x5a1d('0xb4'),'attributes':['id',_0x5a1d('0xc'),_0x5a1d('0xb5')],'through':_0x42d378[_0x5a1d('0x89')]['tag']?{'attributes':[],'where':{'TagId':_0x42d378[_0x5a1d('0x89')][_0x5a1d('0xb3')]||undefined}}:{},'required':_0x42d378['query']['tag']?!![]:![]}];}else{_0x534f2b[_0x5a1d('0xa6')]=[{'all':!![]}];}}return _0x2f07d6[_0x5b0984['childModel']]['findAll'](_0x534f2b);})[_0x5a1d('0x6')](function(_0x146b5d){_0x230c90[_0x5a1d('0xad')]=_0x146b5d;if(_0x597a51===_0x5a1d('0x36')&&_0x42d378[_0x5a1d('0x89')][_0x5a1d('0xb6')]===_0x5a1d('0xb7')){var _0x417dc1=[];for(var _0x5a641e=0x0;_0x5a641e<_0x230c90[_0x5a1d('0xad')][_0x5a1d('0x90')];_0x5a641e++){_0x417dc1[_0x5a1d('0x91')](_0x4c14a5(_0x5a1d('0xb8'),_0x230c90['rows'][_0x5a641e][_0x5a1d('0xb9')]));_0x417dc1['push'](_0x4c14a5('sms',_0x230c90[_0x5a1d('0xad')][_0x5a641e][_0x5a1d('0xb9')]));_0x417dc1['push'](_0x4c14a5('fax',_0x230c90[_0x5a1d('0xad')][_0x5a641e][_0x5a1d('0xb9')]));_0x417dc1['push'](_0x4c14a5(_0x5a1d('0xba'),_0x230c90[_0x5a1d('0xad')][_0x5a641e][_0x5a1d('0xb9')]));_0x417dc1[_0x5a1d('0x91')](_0x4c14a5(_0x5a1d('0xbb'),_0x230c90['rows'][_0x5a641e][_0x5a1d('0xb9')]));_0x417dc1[_0x5a1d('0x91')](_0x4c14a5(_0x5a1d('0xbc'),_0x230c90[_0x5a1d('0xad')][_0x5a641e][_0x5a1d('0xb9')]));}return Promise[_0x5a1d('0x94')](_0x417dc1)[_0x5a1d('0x6')](function(){return _0x230c90;});}return _0x230c90;});}});}}});};
\ No newline at end of file
index 0539379..2b8f8f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb366=['request','then','info','UserProfile,\x20%s,\x20%s','request\x20sent','UserProfile,\x20%s,\x20%s,\x20%s','error','code','message','catch','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','jayson/promise','client','redis','localhost','socket.io-emitter','./userProfile.socket'];(function(_0x1694f5,_0x49b7c3){var _0x5b4321=function(_0x58c183){while(--_0x58c183){_0x1694f5['push'](_0x1694f5['shift']());}};_0x5b4321(++_0x49b7c3);}(_0xb366,0xa4));var _0x6b36=function(_0x432a98,_0xc97403){_0x432a98=_0x432a98-0x0;var _0x252c59=_0xb366[_0x432a98];return _0x252c59;};'use strict';var _=require(_0x6b36('0x0'));var util=require('util');var moment=require(_0x6b36('0x1'));var BPromise=require(_0x6b36('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6b36('0x3'));var db=require(_0x6b36('0x4'))['db'];var utils=require(_0x6b36('0x5'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x6b36('0x6'));var client=jayson[_0x6b36('0x7')]['http']({'port':0x232a});config[_0x6b36('0x8')]=_['defaults'](config['redis'],{'host':_0x6b36('0x9'),'port':0x18eb});var socket=require(_0x6b36('0xa'))(new Redis(config[_0x6b36('0x8')]));require(_0x6b36('0xb'))['register'](socket);function respondWithRpcPromise(_0x171558,_0x22804e,_0x4d1437){return new BPromise(function(_0x32bbb5,_0x567985){return client[_0x6b36('0xc')](_0x171558,_0x4d1437)[_0x6b36('0xd')](function(_0x46eaa8){logger[_0x6b36('0xe')](_0x6b36('0xf'),_0x22804e,_0x6b36('0x10'));logger['debug'](_0x6b36('0x11'),_0x22804e,_0x6b36('0x10'),JSON['stringify'](_0x46eaa8));if(_0x46eaa8[_0x6b36('0x12')]){if(_0x46eaa8['error'][_0x6b36('0x13')]===0x1f4){logger['error']('UserProfile,\x20%s,\x20%s',_0x22804e,_0x46eaa8['error'][_0x6b36('0x14')]);return _0x567985(_0x46eaa8[_0x6b36('0x12')][_0x6b36('0x14')]);}logger['error'](_0x6b36('0xf'),_0x22804e,_0x46eaa8['error'][_0x6b36('0x14')]);return _0x32bbb5(_0x46eaa8[_0x6b36('0x12')][_0x6b36('0x14')]);}else{logger['info']('UserProfile,\x20%s,\x20%s',_0x22804e,_0x6b36('0x10'));_0x32bbb5(_0x46eaa8['result'][_0x6b36('0x14')]);}})[_0x6b36('0x15')](function(_0x5ad465){logger[_0x6b36('0x12')]('UserProfile,\x20%s,\x20%s',_0x22804e,_0x5ad465);_0x567985(_0x5ad465);});});}
\ No newline at end of file
+var _0x38b2=['message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','defaults','redis','socket.io-emitter','./userProfile.socket','register','request','then','info','request\x20sent','debug','UserProfile,\x20%s,\x20%s,\x20%s','code','error','UserProfile,\x20%s,\x20%s'];(function(_0xa04a2,_0x2198df){var _0x178957=function(_0x22a3ce){while(--_0x22a3ce){_0xa04a2['push'](_0xa04a2['shift']());}};_0x178957(++_0x2198df);}(_0x38b2,0xf6));var _0x238b=function(_0x6e5da6,_0x48594e){_0x6e5da6=_0x6e5da6-0x0;var _0x4f13e3=_0x38b2[_0x6e5da6];return _0x4f13e3;};'use strict';var _=require(_0x238b('0x0'));var util=require(_0x238b('0x1'));var moment=require(_0x238b('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x238b('0x3'));var db=require(_0x238b('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x238b('0x5'))('rpc');var config=require(_0x238b('0x6'));var jayson=require(_0x238b('0x7'));var client=jayson[_0x238b('0x8')][_0x238b('0x9')]({'port':0x232a});config['redis']=_[_0x238b('0xa')](config[_0x238b('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x238b('0xc'))(new Redis(config[_0x238b('0xb')]));require(_0x238b('0xd'))[_0x238b('0xe')](socket);function respondWithRpcPromise(_0x19afcf,_0x17f674,_0x1b7bf4){return new BPromise(function(_0x4df7d6,_0x137ad2){return client[_0x238b('0xf')](_0x19afcf,_0x1b7bf4)[_0x238b('0x10')](function(_0x40762f){logger[_0x238b('0x11')]('UserProfile,\x20%s,\x20%s',_0x17f674,_0x238b('0x12'));logger[_0x238b('0x13')](_0x238b('0x14'),_0x17f674,_0x238b('0x12'),JSON['stringify'](_0x40762f));if(_0x40762f['error']){if(_0x40762f['error'][_0x238b('0x15')]===0x1f4){logger[_0x238b('0x16')](_0x238b('0x17'),_0x17f674,_0x40762f[_0x238b('0x16')][_0x238b('0x18')]);return _0x137ad2(_0x40762f[_0x238b('0x16')][_0x238b('0x18')]);}logger[_0x238b('0x16')]('UserProfile,\x20%s,\x20%s',_0x17f674,_0x40762f[_0x238b('0x16')]['message']);return _0x4df7d6(_0x40762f[_0x238b('0x16')]['message']);}else{logger[_0x238b('0x11')]('UserProfile,\x20%s,\x20%s',_0x17f674,_0x238b('0x12'));_0x4df7d6(_0x40762f[_0x238b('0x19')][_0x238b('0x18')]);}})[_0x238b('0x1a')](function(_0x30d14){logger[_0x238b('0x16')]('UserProfile,\x20%s,\x20%s',_0x17f674,_0x30d14);_0x137ad2(_0x30d14);});});}
\ No newline at end of file
index 2453a0c..d7064eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc591=['emit','removeListener','length','./userProfile.events','save','update'];(function(_0x5deb20,_0x159196){var _0x4346a6=function(_0x1c8dba){while(--_0x1c8dba){_0x5deb20['push'](_0x5deb20['shift']());}};_0x4346a6(++_0x159196);}(_0xc591,0x19b));var _0x1c59=function(_0x14a69f,_0x159b4e){_0x14a69f=_0x14a69f-0x0;var _0x4d542c=_0xc591[_0x14a69f];return _0x4d542c;};'use strict';var UserProfileEvents=require(_0x1c59('0x0'));var events=[_0x1c59('0x1'),'remove',_0x1c59('0x2')];function createListener(_0x1f7b5b,_0x7288c0){return function(_0x4de9b0){_0x7288c0[_0x1c59('0x3')](_0x1f7b5b,_0x4de9b0);};}function removeListener(_0x29a6c0,_0x4ebbd2){return function(){UserProfileEvents[_0x1c59('0x4')](_0x29a6c0,_0x4ebbd2);};}exports['register']=function(_0x1ad60a){for(var _0x3f638f=0x0,_0x790a72=events[_0x1c59('0x5')];_0x3f638f<_0x790a72;_0x3f638f++){var _0x374389=events[_0x3f638f];var _0x34a365=createListener('userProfile:'+_0x374389,_0x1ad60a);UserProfileEvents['on'](_0x374389,_0x34a365);}};
\ No newline at end of file
+var _0x04ad=['register','./userProfile.events','save','removeListener'];(function(_0x464bd7,_0x181bae){var _0xc4aa53=function(_0x457660){while(--_0x457660){_0x464bd7['push'](_0x464bd7['shift']());}};_0xc4aa53(++_0x181bae);}(_0x04ad,0x165));var _0xd04a=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x04ad[_0x20a584];return _0x4b41a8;};'use strict';var UserProfileEvents=require(_0xd04a('0x0'));var events=[_0xd04a('0x1'),'remove','update'];function createListener(_0x28dd41,_0x4de170){return function(_0x5dd3c9){_0x4de170['emit'](_0x28dd41,_0x5dd3c9);};}function removeListener(_0x115626,_0x31a806){return function(){UserProfileEvents[_0xd04a('0x2')](_0x115626,_0x31a806);};}exports[_0xd04a('0x3')]=function(_0x43f5fb){for(var _0x30fdf5=0x0,_0x3d841b=events['length'];_0x30fdf5<_0x3d841b;_0x30fdf5++){var _0x8d08b1=events[_0x30fdf5];var _0x11e840=createListener('userProfile:'+_0x8d08b1,_0x43f5fb);UserProfileEvents['on'](_0x8d08b1,_0x11e840);}};
\ No newline at end of file
index 2cbff2c..3f9d3b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0afc=['/describe','describe','/:id','show','isAuthenticated','create','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./userProfileResource.controller','index','get'];(function(_0x27af08,_0x192c31){var _0x49eb8e=function(_0x249b6b){while(--_0x249b6b){_0x27af08['push'](_0x27af08['shift']());}};_0x49eb8e(++_0x192c31);}(_0x0afc,0x196));var _0xc0af=function(_0x5385ed,_0x304cae){_0x5385ed=_0x5385ed-0x0;var _0x34ba03=_0x0afc[_0x5385ed];return _0x34ba03;};'use strict';var multer=require(_0xc0af('0x0'));var util=require(_0xc0af('0x1'));var path=require(_0xc0af('0x2'));var timeout=require(_0xc0af('0x3'));var express=require(_0xc0af('0x4'));var router=express[_0xc0af('0x5')]();var fs_extra=require(_0xc0af('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xc0af('0x7'));var config=require(_0xc0af('0x8'));var controller=require(_0xc0af('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0xc0af('0xa')]);router[_0xc0af('0xb')](_0xc0af('0xc'),auth['isAuthenticated'](),controller[_0xc0af('0xd')]);router[_0xc0af('0xb')](_0xc0af('0xe'),auth['isAuthenticated'](),controller[_0xc0af('0xf')]);router['post']('/',auth[_0xc0af('0x10')](),controller[_0xc0af('0x11')]);router['put'](_0xc0af('0xe'),auth['isAuthenticated'](),controller[_0xc0af('0x12')]);router[_0xc0af('0x13')](_0xc0af('0xe'),auth[_0xc0af('0x10')](),controller[_0xc0af('0x14')]);module[_0xc0af('0x15')]=router;
\ No newline at end of file
+var _0xe1f5=['/:id','post','create','put','update','delete','destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfileResource.controller','get','isAuthenticated','index','/describe','describe'];(function(_0x146837,_0x2aa6a2){var _0x3d7e60=function(_0x1301ac){while(--_0x1301ac){_0x146837['push'](_0x146837['shift']());}};_0x3d7e60(++_0x2aa6a2);}(_0xe1f5,0x13b));var _0x5e1f=function(_0x422c1a,_0x48bdff){_0x422c1a=_0x422c1a-0x0;var _0x498cf1=_0xe1f5[_0x422c1a];return _0x498cf1;};'use strict';var multer=require(_0x5e1f('0x0'));var util=require(_0x5e1f('0x1'));var path=require('path');var timeout=require(_0x5e1f('0x2'));var express=require(_0x5e1f('0x3'));var router=express[_0x5e1f('0x4')]();var fs_extra=require(_0x5e1f('0x5'));var auth=require(_0x5e1f('0x6'));var interaction=require(_0x5e1f('0x7'));var config=require(_0x5e1f('0x8'));var controller=require(_0x5e1f('0x9'));router[_0x5e1f('0xa')]('/',auth[_0x5e1f('0xb')](),controller[_0x5e1f('0xc')]);router[_0x5e1f('0xa')](_0x5e1f('0xd'),auth[_0x5e1f('0xb')](),controller[_0x5e1f('0xe')]);router[_0x5e1f('0xa')](_0x5e1f('0xf'),auth[_0x5e1f('0xb')](),controller['show']);router[_0x5e1f('0x10')]('/',auth['isAuthenticated'](),controller[_0x5e1f('0x11')]);router[_0x5e1f('0x12')](_0x5e1f('0xf'),auth[_0x5e1f('0xb')](),controller[_0x5e1f('0x13')]);router[_0x5e1f('0x14')](_0x5e1f('0xf'),auth[_0x5e1f('0xb')](),controller[_0x5e1f('0x15')]);module['exports']=router;
\ No newline at end of file
index 996673d..45eb608 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf61=['INTEGER','exports','STRING'];(function(_0x9bb562,_0x16cce5){var _0x5d7f9e=function(_0x33a1d2){while(--_0x33a1d2){_0x9bb562['push'](_0x9bb562['shift']());}};_0x5d7f9e(++_0x16cce5);}(_0xcf61,0x1ed));var _0x1cf6=function(_0x3d695b,_0x5ce0b3){_0x3d695b=_0x3d695b-0x0;var _0x3346dc=_0xcf61[_0x3d695b];return _0x3346dc;};'use strict';var Sequelize=require('sequelize');module[_0x1cf6('0x0')]={'name':{'type':Sequelize[_0x1cf6('0x1')],'allowNull':![]},'resourceId':{'type':Sequelize[_0x1cf6('0x2')],'allowNull':![]},'type':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0x60de=['sequelize','exports','STRING','INTEGER'];(function(_0x2adbeb,_0x5581be){var _0x5e18a6=function(_0x84e42b){while(--_0x84e42b){_0x2adbeb['push'](_0x2adbeb['shift']());}};_0x5e18a6(++_0x5581be);}(_0x60de,0xe0));var _0xe60d=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x60de[_0x57b54c];return _0x59cc19;};'use strict';var Sequelize=require(_0xe60d('0x0'));module[_0xe60d('0x1')]={'name':{'type':Sequelize[_0xe60d('0x2')],'allowNull':![]},'resourceId':{'type':Sequelize[_0xe60d('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0xe60d('0x2')],'allowNull':![]}};
\ No newline at end of file
index bea6d7a..156eb28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9582=['fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','limit','undefined','offset','count','set','json','reject','save','update','then','destroy','error','name','send','index','map','UserProfileResource','rawAttributes','fieldName','type','key','model','query','intersection','fields','attributes','length','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','describe','eml-format','rimraf','zip-dir'];(function(_0x1e87ec,_0x42bfff){var _0x1e11a9=function(_0x142726){while(--_0x142726){_0x1e87ec['push'](_0x1e87ec['shift']());}};_0x1e11a9(++_0x42bfff);}(_0x9582,0x95));var _0x2958=function(_0x159eb3,_0x224b61){_0x159eb3=_0x159eb3-0x0;var _0x241cf2=_0x9582[_0x159eb3];return _0x241cf2;};'use strict';var emlformat=require(_0x2958('0x0'));var rimraf=require(_0x2958('0x1'));var zipdir=require(_0x2958('0x2'));var jsonpatch=require(_0x2958('0x3'));var rp=require(_0x2958('0x4'));var moment=require(_0x2958('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x2958('0x6'));var util=require(_0x2958('0x7'));var path=require(_0x2958('0x8'));var sox=require(_0x2958('0x9'));var csv=require(_0x2958('0xa'));var ejs=require(_0x2958('0xb'));var fs=require('fs');var fs_extra=require(_0x2958('0xc'));var _=require(_0x2958('0xd'));var squel=require(_0x2958('0xe'));var crypto=require(_0x2958('0xf'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x2958('0xa'));var querystring=require('querystring');var Papa=require(_0x2958('0x10'));var Redis=require('ioredis');var authService=require(_0x2958('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x2958('0x12'));var hardwareService=require(_0x2958('0x13'));var logger=require(_0x2958('0x14'))(_0x2958('0x15'));var utils=require(_0x2958('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x2958('0x17'));var db=require(_0x2958('0x18'))['db'];function respondWithStatusCode(_0x33a13a,_0x20e06a){_0x20e06a=_0x20e06a||0xcc;return function(_0x47067d){if(_0x47067d){return _0x33a13a[_0x2958('0x19')](_0x20e06a);}return _0x33a13a[_0x2958('0x1a')](_0x20e06a)[_0x2958('0x1b')]();};}function respondWithResult(_0x5bd520,_0x42e976){_0x42e976=_0x42e976||0xc8;return function(_0x2e12d4){if(_0x2e12d4){return _0x5bd520['status'](_0x42e976)['json'](_0x2e12d4);}};}function respondWithFilteredResult(_0x21ed6c,_0x38e724){return function(_0x5f06b1){if(_0x5f06b1){var _0x3bef50=typeof _0x38e724['offset']==='undefined'&&typeof _0x38e724[_0x2958('0x1c')]===_0x2958('0x1d');var _0x55e261=_0x5f06b1['count'];var _0x28a92c=_0x3bef50?0x0:_0x38e724[_0x2958('0x1e')];var _0x310d07=_0x3bef50?_0x5f06b1[_0x2958('0x1f')]:_0x38e724[_0x2958('0x1e')]+_0x38e724['limit'];var _0x19a614;if(_0x310d07>=_0x55e261){_0x310d07=_0x55e261;_0x19a614=0xc8;}else{_0x19a614=0xce;}_0x21ed6c[_0x2958('0x1a')](_0x19a614);return _0x21ed6c[_0x2958('0x20')]('Content-Range',_0x28a92c+'-'+_0x310d07+'/'+_0x55e261)[_0x2958('0x21')](_0x5f06b1);}return null;};}function patchUpdates(_0x53b100){return function(_0x1da684){try{jsonpatch['apply'](_0x1da684,_0x53b100,!![]);}catch(_0x5eaf36){return BPromise[_0x2958('0x22')](_0x5eaf36);}return _0x1da684[_0x2958('0x23')]();};}function saveUpdates(_0x2a02a4,_0x26c5a5){return function(_0x2202f8){if(_0x2202f8){return _0x2202f8[_0x2958('0x24')](_0x2a02a4)[_0x2958('0x25')](function(_0x2b9818){return _0x2b9818;});}return null;};}function removeEntity(_0x330763,_0x2aa514){return function(_0xaf5547){if(_0xaf5547){return _0xaf5547[_0x2958('0x26')]()[_0x2958('0x25')](function(){_0x330763[_0x2958('0x1a')](0xcc)[_0x2958('0x1b')]();});}};}function handleEntityNotFound(_0x4f811a,_0x574df5){return function(_0x3c1155){if(!_0x3c1155){_0x4f811a[_0x2958('0x19')](0x194);}return _0x3c1155;};}function handleError(_0x28c1f5,_0x43cf73){_0x43cf73=_0x43cf73||0x1f4;return function(_0x52bd32){logger[_0x2958('0x27')](_0x52bd32['stack']);if(_0x52bd32[_0x2958('0x28')]){delete _0x52bd32[_0x2958('0x28')];}_0x28c1f5[_0x2958('0x1a')](_0x43cf73)[_0x2958('0x29')](_0x52bd32);};}exports[_0x2958('0x2a')]=function(_0x36e2a5,_0x153958){var _0x5d1dfc={},_0x21b919={},_0x5053d0={'count':0x0,'rows':[]};var _0x48650d=_[_0x2958('0x2b')](db[_0x2958('0x2c')][_0x2958('0x2d')],function(_0x34e56e){return{'name':_0x34e56e[_0x2958('0x2e')],'type':_0x34e56e[_0x2958('0x2f')][_0x2958('0x30')]};});_0x21b919[_0x2958('0x31')]=_['map'](_0x48650d,_0x2958('0x28'));_0x21b919[_0x2958('0x32')]=_['keys'](_0x36e2a5[_0x2958('0x32')]);_0x21b919['filters']=_[_0x2958('0x33')](_0x21b919['model'],_0x21b919[_0x2958('0x32')]);_0x5d1dfc['attributes']=_[_0x2958('0x33')](_0x21b919[_0x2958('0x31')],qs[_0x2958('0x34')](_0x36e2a5[_0x2958('0x32')][_0x2958('0x34')]));_0x5d1dfc[_0x2958('0x35')]=_0x5d1dfc[_0x2958('0x35')][_0x2958('0x36')]?_0x5d1dfc[_0x2958('0x35')]:_0x21b919['model'];if(!_0x36e2a5[_0x2958('0x32')]['hasOwnProperty'](_0x2958('0x37'))){_0x5d1dfc['limit']=qs[_0x2958('0x1c')](_0x36e2a5[_0x2958('0x32')][_0x2958('0x1c')]);_0x5d1dfc[_0x2958('0x1e')]=qs[_0x2958('0x1e')](_0x36e2a5[_0x2958('0x32')][_0x2958('0x1e')]);}_0x5d1dfc[_0x2958('0x38')]=qs[_0x2958('0x39')](_0x36e2a5[_0x2958('0x32')][_0x2958('0x39')]);_0x5d1dfc[_0x2958('0x3a')]=qs[_0x2958('0x3b')](_['pick'](_0x36e2a5[_0x2958('0x32')],_0x21b919[_0x2958('0x3b')]),_0x48650d);if(_0x36e2a5[_0x2958('0x32')][_0x2958('0x3c')]){_0x5d1dfc['where']=_[_0x2958('0x3d')](_0x5d1dfc[_0x2958('0x3a')],{'$or':_[_0x2958('0x2b')](_0x48650d,function(_0x3f7e27){if(_0x3f7e27[_0x2958('0x2f')]!==_0x2958('0x3e')){var _0x1ed89b={};_0x1ed89b[_0x3f7e27[_0x2958('0x28')]]={'$like':'%'+_0x36e2a5[_0x2958('0x32')][_0x2958('0x3c')]+'%'};return _0x1ed89b;}})});}_0x5d1dfc=_[_0x2958('0x3d')]({},_0x5d1dfc,_0x36e2a5[_0x2958('0x3f')]);var _0x319243={'where':_0x5d1dfc['where']};return db[_0x2958('0x2c')][_0x2958('0x1f')](_0x319243)['then'](function(_0x4fe061){_0x5053d0[_0x2958('0x1f')]=_0x4fe061;if(_0x36e2a5[_0x2958('0x32')][_0x2958('0x40')]){_0x5d1dfc[_0x2958('0x41')]=[{'all':!![]}];}return db[_0x2958('0x2c')][_0x2958('0x42')](_0x5d1dfc);})[_0x2958('0x25')](function(_0x13be6d){_0x5053d0[_0x2958('0x43')]=_0x13be6d;return _0x5053d0;})[_0x2958('0x25')](respondWithFilteredResult(_0x153958,_0x5d1dfc))[_0x2958('0x44')](handleError(_0x153958,null));};exports[_0x2958('0x45')]=function(_0xe33c56,_0x5a58ea){var _0x645b66={'raw':![],'where':{'id':_0xe33c56[_0x2958('0x46')]['id']}},_0x112256={};_0x112256[_0x2958('0x31')]=_['keys'](db[_0x2958('0x2c')]['rawAttributes']);_0x112256['query']=_[_0x2958('0x47')](_0xe33c56[_0x2958('0x32')]);_0x112256[_0x2958('0x3b')]=_[_0x2958('0x33')](_0x112256[_0x2958('0x31')],_0x112256[_0x2958('0x32')]);_0x645b66['attributes']=_[_0x2958('0x33')](_0x112256['model'],qs['fields'](_0xe33c56[_0x2958('0x32')]['fields']));_0x645b66[_0x2958('0x35')]=_0x645b66[_0x2958('0x35')][_0x2958('0x36')]?_0x645b66[_0x2958('0x35')]:_0x112256[_0x2958('0x31')];if(_0xe33c56[_0x2958('0x32')][_0x2958('0x40')]){_0x645b66[_0x2958('0x41')]=[{'all':!![]}];}_0x645b66=_['merge']({},_0x645b66,_0xe33c56[_0x2958('0x3f')]);return db[_0x2958('0x2c')][_0x2958('0x48')](_0x645b66)[_0x2958('0x25')](handleEntityNotFound(_0x5a58ea,null))['then'](respondWithResult(_0x5a58ea,null))[_0x2958('0x44')](handleError(_0x5a58ea,null));};exports[_0x2958('0x49')]=function(_0x4a51b1,_0x1b6829){return db[_0x2958('0x2c')][_0x2958('0x49')](_0x4a51b1[_0x2958('0x4a')],{})[_0x2958('0x25')](respondWithResult(_0x1b6829,0xc9))[_0x2958('0x44')](handleError(_0x1b6829,null));};exports['update']=function(_0x1fff2a,_0x38b551){if(_0x1fff2a[_0x2958('0x4a')]['id']){delete _0x1fff2a[_0x2958('0x4a')]['id'];}return db[_0x2958('0x2c')][_0x2958('0x48')]({'where':{'id':_0x1fff2a[_0x2958('0x46')]['id']}})[_0x2958('0x25')](handleEntityNotFound(_0x38b551,null))[_0x2958('0x25')](saveUpdates(_0x1fff2a[_0x2958('0x4a')],null))[_0x2958('0x25')](respondWithResult(_0x38b551,null))[_0x2958('0x44')](handleError(_0x38b551,null));};exports[_0x2958('0x26')]=function(_0x3f7bc1,_0x1bb780){return db[_0x2958('0x2c')][_0x2958('0x48')]({'where':{'id':_0x3f7bc1['params']['id']}})[_0x2958('0x25')](handleEntityNotFound(_0x1bb780,null))['then'](removeEntity(_0x1bb780,null))[_0x2958('0x44')](handleError(_0x1bb780,null));};exports[_0x2958('0x4b')]=function(_0x1db8b1,_0x534677){return db['UserProfileResource'][_0x2958('0x4b')]()[_0x2958('0x25')](respondWithResult(_0x534677,null))[_0x2958('0x44')](handleError(_0x534677,null));};
\ No newline at end of file
+var _0x524e=['end','json','offset','limit','count','set','apply','reject','save','update','destroy','name','send','index','map','rawAttributes','key','model','keys','filters','intersection','attributes','fields','query','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','UserProfileResource','then','includeAll','include','findAll','rows','catch','show','length','find','create','body','params','describe','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status'];(function(_0x3d23b7,_0xbc09f5){var _0x12892f=function(_0x189550){while(--_0x189550){_0x3d23b7['push'](_0x3d23b7['shift']());}};_0x12892f(++_0xbc09f5);}(_0x524e,0x15e));var _0xe524=function(_0x21aeb7,_0xf1bc66){_0x21aeb7=_0x21aeb7-0x0;var _0x5572aa=_0x524e[_0x21aeb7];return _0x5572aa;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xe524('0x0'));var jsonpatch=require(_0xe524('0x1'));var rp=require(_0xe524('0x2'));var moment=require(_0xe524('0x3'));var BPromise=require(_0xe524('0x4'));var Mustache=require(_0xe524('0x5'));var util=require(_0xe524('0x6'));var path=require(_0xe524('0x7'));var sox=require(_0xe524('0x8'));var csv=require(_0xe524('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe524('0xa'));var _=require(_0xe524('0xb'));var squel=require(_0xe524('0xc'));var crypto=require('crypto');var jsforce=require(_0xe524('0xd'));var deskjs=require(_0xe524('0xe'));var toCsv=require(_0xe524('0x9'));var querystring=require(_0xe524('0xf'));var Papa=require(_0xe524('0x10'));var Redis=require(_0xe524('0x11'));var authService=require(_0xe524('0x12'));var qs=require(_0xe524('0x13'));var as=require(_0xe524('0x14'));var hardwareService=require(_0xe524('0x15'));var logger=require(_0xe524('0x16'))(_0xe524('0x17'));var utils=require(_0xe524('0x18'));var config=require(_0xe524('0x19'));var licenseUtil=require(_0xe524('0x1a'));var db=require(_0xe524('0x1b'))['db'];function respondWithStatusCode(_0x5077c1,_0x4b0f51){_0x4b0f51=_0x4b0f51||0xcc;return function(_0xfdc2a5){if(_0xfdc2a5){return _0x5077c1[_0xe524('0x1c')](_0x4b0f51);}return _0x5077c1[_0xe524('0x1d')](_0x4b0f51)[_0xe524('0x1e')]();};}function respondWithResult(_0x20a852,_0x57c1b6){_0x57c1b6=_0x57c1b6||0xc8;return function(_0x12ff75){if(_0x12ff75){return _0x20a852['status'](_0x57c1b6)[_0xe524('0x1f')](_0x12ff75);}};}function respondWithFilteredResult(_0x1b0af6,_0x48165e){return function(_0x569660){if(_0x569660){var _0x488fce=typeof _0x48165e[_0xe524('0x20')]==='undefined'&&typeof _0x48165e[_0xe524('0x21')]==='undefined';var _0x5c8736=_0x569660['count'];var _0x3a4027=_0x488fce?0x0:_0x48165e['offset'];var _0x11b2a1=_0x488fce?_0x569660[_0xe524('0x22')]:_0x48165e[_0xe524('0x20')]+_0x48165e[_0xe524('0x21')];var _0x5d7b17;if(_0x11b2a1>=_0x5c8736){_0x11b2a1=_0x5c8736;_0x5d7b17=0xc8;}else{_0x5d7b17=0xce;}_0x1b0af6[_0xe524('0x1d')](_0x5d7b17);return _0x1b0af6[_0xe524('0x23')]('Content-Range',_0x3a4027+'-'+_0x11b2a1+'/'+_0x5c8736)[_0xe524('0x1f')](_0x569660);}return null;};}function patchUpdates(_0x309f85){return function(_0x43a4f9){try{jsonpatch[_0xe524('0x24')](_0x43a4f9,_0x309f85,!![]);}catch(_0x1c4194){return BPromise[_0xe524('0x25')](_0x1c4194);}return _0x43a4f9[_0xe524('0x26')]();};}function saveUpdates(_0x375219,_0x7dfe97){return function(_0x5c4d21){if(_0x5c4d21){return _0x5c4d21[_0xe524('0x27')](_0x375219)['then'](function(_0x577d1f){return _0x577d1f;});}return null;};}function removeEntity(_0x2d2f83,_0x23df5e){return function(_0x1ad106){if(_0x1ad106){return _0x1ad106[_0xe524('0x28')]()['then'](function(){_0x2d2f83[_0xe524('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x17e245,_0xcf5db){return function(_0xd62772){if(!_0xd62772){_0x17e245[_0xe524('0x1c')](0x194);}return _0xd62772;};}function handleError(_0x4102d9,_0xfd5965){_0xfd5965=_0xfd5965||0x1f4;return function(_0x2141db){logger['error'](_0x2141db['stack']);if(_0x2141db[_0xe524('0x29')]){delete _0x2141db[_0xe524('0x29')];}_0x4102d9[_0xe524('0x1d')](_0xfd5965)[_0xe524('0x2a')](_0x2141db);};}exports[_0xe524('0x2b')]=function(_0x5405e4,_0x52f140){var _0x4b1ff={},_0x25e7a7={},_0x3aedd9={'count':0x0,'rows':[]};var _0x8070e4=_[_0xe524('0x2c')](db['UserProfileResource'][_0xe524('0x2d')],function(_0x9a7e98){return{'name':_0x9a7e98['fieldName'],'type':_0x9a7e98['type'][_0xe524('0x2e')]};});_0x25e7a7[_0xe524('0x2f')]=_['map'](_0x8070e4,_0xe524('0x29'));_0x25e7a7['query']=_[_0xe524('0x30')](_0x5405e4['query']);_0x25e7a7[_0xe524('0x31')]=_[_0xe524('0x32')](_0x25e7a7[_0xe524('0x2f')],_0x25e7a7['query']);_0x4b1ff[_0xe524('0x33')]=_['intersection'](_0x25e7a7[_0xe524('0x2f')],qs[_0xe524('0x34')](_0x5405e4[_0xe524('0x35')]['fields']));_0x4b1ff[_0xe524('0x33')]=_0x4b1ff[_0xe524('0x33')]['length']?_0x4b1ff[_0xe524('0x33')]:_0x25e7a7[_0xe524('0x2f')];if(!_0x5405e4[_0xe524('0x35')][_0xe524('0x36')]('nolimit')){_0x4b1ff[_0xe524('0x21')]=qs[_0xe524('0x21')](_0x5405e4[_0xe524('0x35')][_0xe524('0x21')]);_0x4b1ff[_0xe524('0x20')]=qs[_0xe524('0x20')](_0x5405e4[_0xe524('0x35')][_0xe524('0x20')]);}_0x4b1ff['order']=qs[_0xe524('0x37')](_0x5405e4['query'][_0xe524('0x37')]);_0x4b1ff[_0xe524('0x38')]=qs['filters'](_[_0xe524('0x39')](_0x5405e4['query'],_0x25e7a7[_0xe524('0x31')]),_0x8070e4);if(_0x5405e4[_0xe524('0x35')][_0xe524('0x3a')]){_0x4b1ff[_0xe524('0x38')]=_[_0xe524('0x3b')](_0x4b1ff[_0xe524('0x38')],{'$or':_[_0xe524('0x2c')](_0x8070e4,function(_0x13762c){if(_0x13762c['type']!==_0xe524('0x3c')){var _0x940c05={};_0x940c05[_0x13762c[_0xe524('0x29')]]={'$like':'%'+_0x5405e4[_0xe524('0x35')][_0xe524('0x3a')]+'%'};return _0x940c05;}})});}_0x4b1ff=_[_0xe524('0x3b')]({},_0x4b1ff,_0x5405e4[_0xe524('0x3d')]);var _0x158d45={'where':_0x4b1ff['where']};return db[_0xe524('0x3e')][_0xe524('0x22')](_0x158d45)[_0xe524('0x3f')](function(_0x59781b){_0x3aedd9[_0xe524('0x22')]=_0x59781b;if(_0x5405e4['query'][_0xe524('0x40')]){_0x4b1ff[_0xe524('0x41')]=[{'all':!![]}];}return db[_0xe524('0x3e')][_0xe524('0x42')](_0x4b1ff);})[_0xe524('0x3f')](function(_0x4746cd){_0x3aedd9[_0xe524('0x43')]=_0x4746cd;return _0x3aedd9;})['then'](respondWithFilteredResult(_0x52f140,_0x4b1ff))[_0xe524('0x44')](handleError(_0x52f140,null));};exports[_0xe524('0x45')]=function(_0x13c54c,_0x376505){var _0x438962={'raw':![],'where':{'id':_0x13c54c['params']['id']}},_0x1ae283={};_0x1ae283[_0xe524('0x2f')]=_[_0xe524('0x30')](db[_0xe524('0x3e')]['rawAttributes']);_0x1ae283[_0xe524('0x35')]=_['keys'](_0x13c54c['query']);_0x1ae283[_0xe524('0x31')]=_[_0xe524('0x32')](_0x1ae283['model'],_0x1ae283[_0xe524('0x35')]);_0x438962[_0xe524('0x33')]=_[_0xe524('0x32')](_0x1ae283[_0xe524('0x2f')],qs['fields'](_0x13c54c['query'][_0xe524('0x34')]));_0x438962[_0xe524('0x33')]=_0x438962['attributes'][_0xe524('0x46')]?_0x438962['attributes']:_0x1ae283[_0xe524('0x2f')];if(_0x13c54c[_0xe524('0x35')][_0xe524('0x40')]){_0x438962[_0xe524('0x41')]=[{'all':!![]}];}_0x438962=_[_0xe524('0x3b')]({},_0x438962,_0x13c54c[_0xe524('0x3d')]);return db[_0xe524('0x3e')][_0xe524('0x47')](_0x438962)[_0xe524('0x3f')](handleEntityNotFound(_0x376505,null))[_0xe524('0x3f')](respondWithResult(_0x376505,null))[_0xe524('0x44')](handleError(_0x376505,null));};exports[_0xe524('0x48')]=function(_0x3d7ab7,_0x33b1c8){return db[_0xe524('0x3e')]['create'](_0x3d7ab7[_0xe524('0x49')],{})['then'](respondWithResult(_0x33b1c8,0xc9))['catch'](handleError(_0x33b1c8,null));};exports[_0xe524('0x27')]=function(_0x59fe6b,_0x232cf0){if(_0x59fe6b[_0xe524('0x49')]['id']){delete _0x59fe6b['body']['id'];}return db[_0xe524('0x3e')]['find']({'where':{'id':_0x59fe6b['params']['id']}})[_0xe524('0x3f')](handleEntityNotFound(_0x232cf0,null))[_0xe524('0x3f')](saveUpdates(_0x59fe6b[_0xe524('0x49')],null))['then'](respondWithResult(_0x232cf0,null))['catch'](handleError(_0x232cf0,null));};exports['destroy']=function(_0x4e9c3b,_0x4f7a64){return db['UserProfileResource'][_0xe524('0x47')]({'where':{'id':_0x4e9c3b[_0xe524('0x4a')]['id']}})['then'](handleEntityNotFound(_0x4f7a64,null))[_0xe524('0x3f')](removeEntity(_0x4f7a64,null))[_0xe524('0x44')](handleError(_0x4f7a64,null));};exports[_0xe524('0x4b')]=function(_0x208aa8,_0x2fa143){return db['UserProfileResource'][_0xe524('0x4b')]()[_0xe524('0x3f')](respondWithResult(_0x2fa143,null))[_0xe524('0x44')](handleError(_0x2fa143,null));};
\ No newline at end of file
index 9835f19..b549340 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e82=['rimraf','../../config/environment','./userProfileResource.attributes','exports','define','UserProfileResource','compositeIndex','resourceId','sectionId','lodash','../../config/logger','api','moment','bluebird','path'];(function(_0x40ac5e,_0x2de228){var _0x2839d6=function(_0x123d47){while(--_0x123d47){_0x40ac5e['push'](_0x40ac5e['shift']());}};_0x2839d6(++_0x2de228);}(_0x3e82,0x117));var _0x23e8=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x3e82[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x23e8('0x0'));var util=require('util');var logger=require(_0x23e8('0x1'))(_0x23e8('0x2'));var moment=require(_0x23e8('0x3'));var BPromise=require(_0x23e8('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x23e8('0x5'));var rimraf=require(_0x23e8('0x6'));var config=require(_0x23e8('0x7'));var attributes=require(_0x23e8('0x8'));module[_0x23e8('0x9')]=function(_0x5962ce,_0x937436){return _0x5962ce[_0x23e8('0xa')](_0x23e8('0xb'),attributes,{'tableName':'user_profile_has_resources','paranoid':![],'indexes':[{'name':_0x23e8('0xc'),'fields':[_0x23e8('0xd'),_0x23e8('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7e79=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./userProfileResource.attributes','exports','UserProfileResource','user_profile_has_resources','compositeIndex','resourceId','lodash','util','../../config/logger','api'];(function(_0x1cab41,_0x4bfa57){var _0x511deb=function(_0x3d1a43){while(--_0x3d1a43){_0x1cab41['push'](_0x1cab41['shift']());}};_0x511deb(++_0x4bfa57);}(_0x7e79,0xdc));var _0x97e7=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x7e79[_0x59ee6f];return _0x4c0979;};'use strict';var _=require(_0x97e7('0x0'));var util=require(_0x97e7('0x1'));var logger=require(_0x97e7('0x2'))(_0x97e7('0x3'));var moment=require(_0x97e7('0x4'));var BPromise=require(_0x97e7('0x5'));var rp=require(_0x97e7('0x6'));var fs=require('fs');var path=require(_0x97e7('0x7'));var rimraf=require(_0x97e7('0x8'));var config=require(_0x97e7('0x9'));var attributes=require(_0x97e7('0xa'));module[_0x97e7('0xb')]=function(_0x598a89,_0xfbcfdc){return _0x598a89['define'](_0x97e7('0xc'),attributes,{'tableName':_0x97e7('0xd'),'paranoid':![],'indexes':[{'name':_0x97e7('0xe'),'fields':[_0x97e7('0xf'),'sectionId']}],'timestamps':!![]});};
\ No newline at end of file
index ca3dee6..152c38d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3745=['info','request\x20sent','debug','UserProfileResource,\x20%s,\x20%s,\x20%s','stringify','error','code','UserProfileResource,\x20%s,\x20%s','message','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','rpc','jayson/promise','client','http','request'];(function(_0x31704f,_0x3b64f6){var _0x2a8df1=function(_0x2294f4){while(--_0x2294f4){_0x31704f['push'](_0x31704f['shift']());}};_0x2a8df1(++_0x3b64f6);}(_0x3745,0x16f));var _0x5374=function(_0x2e49fc,_0x4a11bf){_0x2e49fc=_0x2e49fc-0x0;var _0xa7ba95=_0x3745[_0x2e49fc];return _0xa7ba95;};'use strict';var _=require(_0x5374('0x0'));var util=require(_0x5374('0x1'));var moment=require(_0x5374('0x2'));var BPromise=require('bluebird');var rs=require(_0x5374('0x3'));var fs=require('fs');var Redis=require(_0x5374('0x4'));var db=require(_0x5374('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x5374('0x6'));var config=require('../../config/environment');var jayson=require(_0x5374('0x7'));var client=jayson[_0x5374('0x8')][_0x5374('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4fc6de,_0x19ee85,_0x28b2f7){return new BPromise(function(_0x130b9e,_0x102117){return client[_0x5374('0xa')](_0x4fc6de,_0x28b2f7)['then'](function(_0x156fc3){logger[_0x5374('0xb')]('UserProfileResource,\x20%s,\x20%s',_0x19ee85,_0x5374('0xc'));logger[_0x5374('0xd')](_0x5374('0xe'),_0x19ee85,_0x5374('0xc'),JSON[_0x5374('0xf')](_0x156fc3));if(_0x156fc3[_0x5374('0x10')]){if(_0x156fc3[_0x5374('0x10')][_0x5374('0x11')]===0x1f4){logger['error'](_0x5374('0x12'),_0x19ee85,_0x156fc3[_0x5374('0x10')][_0x5374('0x13')]);return _0x102117(_0x156fc3['error']['message']);}logger[_0x5374('0x10')](_0x5374('0x12'),_0x19ee85,_0x156fc3[_0x5374('0x10')][_0x5374('0x13')]);return _0x130b9e(_0x156fc3['error'][_0x5374('0x13')]);}else{logger[_0x5374('0xb')]('UserProfileResource,\x20%s,\x20%s',_0x19ee85,_0x5374('0xc'));_0x130b9e(_0x156fc3['result'][_0x5374('0x13')]);}})[_0x5374('0x14')](function(_0xaa33bd){logger[_0x5374('0x10')](_0x5374('0x12'),_0x19ee85,_0xaa33bd);_0x102117(_0xaa33bd);});});}
\ No newline at end of file
+var _0xf02a=['info','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','UserProfileResource,\x20%s,\x20%s','request\x20sent','debug','UserProfileResource,\x20%s,\x20%s,\x20%s','error','code','message'];(function(_0x142423,_0x327d2a){var _0x4431ca=function(_0x356824){while(--_0x356824){_0x142423['push'](_0x142423['shift']());}};_0x4431ca(++_0x327d2a);}(_0xf02a,0xba));var _0xaf02=function(_0x176317,_0x4897b3){_0x176317=_0x176317-0x0;var _0xef2759=_0xf02a[_0x176317];return _0xef2759;};'use strict';var _=require('lodash');var util=require(_0xaf02('0x0'));var moment=require(_0xaf02('0x1'));var BPromise=require(_0xaf02('0x2'));var rs=require(_0xaf02('0x3'));var fs=require('fs');var Redis=require(_0xaf02('0x4'));var db=require(_0xaf02('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xaf02('0x6'))(_0xaf02('0x7'));var config=require(_0xaf02('0x8'));var jayson=require(_0xaf02('0x9'));var client=jayson[_0xaf02('0xa')][_0xaf02('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1ab60a,_0x519c9c,_0x1d2f9b){return new BPromise(function(_0xf3b44a,_0x243ea3){return client[_0xaf02('0xc')](_0x1ab60a,_0x1d2f9b)[_0xaf02('0xd')](function(_0x33b3c5){logger['info'](_0xaf02('0xe'),_0x519c9c,_0xaf02('0xf'));logger[_0xaf02('0x10')](_0xaf02('0x11'),_0x519c9c,_0xaf02('0xf'),JSON['stringify'](_0x33b3c5));if(_0x33b3c5[_0xaf02('0x12')]){if(_0x33b3c5[_0xaf02('0x12')][_0xaf02('0x13')]===0x1f4){logger[_0xaf02('0x12')](_0xaf02('0xe'),_0x519c9c,_0x33b3c5[_0xaf02('0x12')][_0xaf02('0x14')]);return _0x243ea3(_0x33b3c5[_0xaf02('0x12')]['message']);}logger[_0xaf02('0x12')](_0xaf02('0xe'),_0x519c9c,_0x33b3c5['error'][_0xaf02('0x14')]);return _0xf3b44a(_0x33b3c5[_0xaf02('0x12')][_0xaf02('0x14')]);}else{logger[_0xaf02('0x15')](_0xaf02('0xe'),_0x519c9c,_0xaf02('0xf'));_0xf3b44a(_0x33b3c5['result'][_0xaf02('0x14')]);}})[_0xaf02('0x16')](function(_0x3e5e1a){logger['error'](_0xaf02('0xe'),_0x519c9c,_0x3e5e1a);_0x243ea3(_0x3e5e1a);});});}
\ No newline at end of file
index f9ebb36..bc48992 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b30=['multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','get','/describe','describe','/:id','show','create','put','delete','exports'];(function(_0x418fd8,_0xf30fde){var _0x384d42=function(_0x5f3cb0){while(--_0x5f3cb0){_0x418fd8['push'](_0x418fd8['shift']());}};_0x384d42(++_0xf30fde);}(_0x0b30,0x7e));var _0x00b3=function(_0x340514,_0x24c774){_0x340514=_0x340514-0x0;var _0x3a6823=_0x0b30[_0x340514];return _0x3a6823;};'use strict';var multer=require(_0x00b3('0x0'));var util=require(_0x00b3('0x1'));var path=require('path');var timeout=require(_0x00b3('0x2'));var express=require(_0x00b3('0x3'));var router=express[_0x00b3('0x4')]();var fs_extra=require(_0x00b3('0x5'));var auth=require(_0x00b3('0x6'));var interaction=require(_0x00b3('0x7'));var config=require('../../config/environment');var controller=require('./userProfileSection.controller');router['get']('/',auth[_0x00b3('0x8')](),controller['index']);router[_0x00b3('0x9')](_0x00b3('0xa'),auth[_0x00b3('0x8')](),controller[_0x00b3('0xb')]);router[_0x00b3('0x9')](_0x00b3('0xc'),auth['isAuthenticated'](),controller[_0x00b3('0xd')]);router['post']('/',auth[_0x00b3('0x8')](),controller[_0x00b3('0xe')]);router[_0x00b3('0xf')](_0x00b3('0xc'),auth[_0x00b3('0x8')](),controller['update']);router[_0x00b3('0x10')](_0x00b3('0xc'),auth['isAuthenticated'](),controller['destroy']);module[_0x00b3('0x11')]=router;
\ No newline at end of file
+var _0x89d9=['../../config/environment','./userProfileSection.controller','get','isAuthenticated','/describe','describe','show','post','put','/:id','update','destroy','exports','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service'];(function(_0x4402f2,_0x6537b9){var _0x468166=function(_0x375d85){while(--_0x375d85){_0x4402f2['push'](_0x4402f2['shift']());}};_0x468166(++_0x6537b9);}(_0x89d9,0x163));var _0x989d=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x89d9[_0x21a9d9];return _0x46adce;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x989d('0x0'));var timeout=require(_0x989d('0x1'));var express=require(_0x989d('0x2'));var router=express[_0x989d('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x989d('0x4'));var interaction=require(_0x989d('0x5'));var config=require(_0x989d('0x6'));var controller=require(_0x989d('0x7'));router[_0x989d('0x8')]('/',auth[_0x989d('0x9')](),controller['index']);router['get'](_0x989d('0xa'),auth[_0x989d('0x9')](),controller[_0x989d('0xb')]);router[_0x989d('0x8')]('/:id',auth[_0x989d('0x9')](),controller[_0x989d('0xc')]);router[_0x989d('0xd')]('/',auth[_0x989d('0x9')](),controller['create']);router[_0x989d('0xe')](_0x989d('0xf'),auth[_0x989d('0x9')](),controller[_0x989d('0x10')]);router['delete'](_0x989d('0xf'),auth[_0x989d('0x9')](),controller[_0x989d('0x11')]);module[_0x989d('0x12')]=router;
\ No newline at end of file
index 1ff439a..aeb3df4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd824=['STRING','setDataValue','getDataValue','crudPermissions','split','sequelize','exports','INTEGER','BOOLEAN'];(function(_0x167559,_0xc2822d){var _0x53ab6a=function(_0x4ae492){while(--_0x4ae492){_0x167559['push'](_0x167559['shift']());}};_0x53ab6a(++_0xc2822d);}(_0xd824,0xc2));var _0x4d82=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xd824[_0x57b54c];return _0x59cc19;};'use strict';var Sequelize=require(_0x4d82('0x0'));module[_0x4d82('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'category':{'type':Sequelize['STRING'],'allowNull':![]},'sectionId':{'type':Sequelize[_0x4d82('0x2')],'allowNull':![]},'enabled':{'type':Sequelize[_0x4d82('0x3')],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0x4d82('0x3')],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0x4d82('0x4')],'set':function(_0x287fbf){this[_0x4d82('0x5')]('crudPermissions',_0x287fbf?_0x287fbf['join'](''):[]);},'get':function(){return this[_0x4d82('0x6')]('crudPermissions')?this['getDataValue'](_0x4d82('0x7'))[_0x4d82('0x8')](''):[];}}};
\ No newline at end of file
+var _0x4cf8=['split','sequelize','exports','STRING','INTEGER','BOOLEAN','setDataValue','crudPermissions','join','getDataValue'];(function(_0x16572d,_0x214297){var _0xea46e7=function(_0x350d7e){while(--_0x350d7e){_0x16572d['push'](_0x16572d['shift']());}};_0xea46e7(++_0x214297);}(_0x4cf8,0x1e1));var _0x84cf=function(_0x3c6b7d,_0x5f0d90){_0x3c6b7d=_0x3c6b7d-0x0;var _0x1d3ed2=_0x4cf8[_0x3c6b7d];return _0x1d3ed2;};'use strict';var Sequelize=require(_0x84cf('0x0'));module[_0x84cf('0x1')]={'name':{'type':Sequelize[_0x84cf('0x2')],'allowNull':![]},'category':{'type':Sequelize[_0x84cf('0x2')],'allowNull':![]},'sectionId':{'type':Sequelize[_0x84cf('0x3')],'allowNull':![]},'enabled':{'type':Sequelize[_0x84cf('0x4')],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0x84cf('0x4')],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0x84cf('0x2')],'set':function(_0x3bbbc3){this[_0x84cf('0x5')](_0x84cf('0x6'),_0x3bbbc3?_0x3bbbc3[_0x84cf('0x7')](''):[]);},'get':function(){return this['getDataValue']('crudPermissions')?this[_0x84cf('0x8')]('crudPermissions')[_0x84cf('0x9')](''):[];}}};
\ No newline at end of file
index 4b912c1..d52ce36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x408d=['limit','count','set','apply','reject','save','update','then','sendStatus','error','stack','name','send','index','map','UserProfileSection','fieldName','key','model','keys','query','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','VIRTUAL','includeAll','include','catch','show','params','rawAttributes','fields','options','find','create','body','destroy','describe','zip-dir','request-promise','mustache','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','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','undefined'];(function(_0x4d576e,_0x3dc877){var _0x11749b=function(_0xce6a1b){while(--_0xce6a1b){_0x4d576e['push'](_0x4d576e['shift']());}};_0x11749b(++_0x3dc877);}(_0x408d,0xc3));var _0xd408=function(_0x440464,_0xb7afd8){_0x440464=_0x440464-0x0;var _0x2f4043=_0x408d[_0x440464];return _0x2f4043;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xd408('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0xd408('0x1'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xd408('0x2'));var util=require('util');var path=require(_0xd408('0x3'));var sox=require(_0xd408('0x4'));var csv=require(_0xd408('0x5'));var ejs=require(_0xd408('0x6'));var fs=require('fs');var fs_extra=require(_0xd408('0x7'));var _=require(_0xd408('0x8'));var squel=require(_0xd408('0x9'));var crypto=require(_0xd408('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xd408('0xb'));var toCsv=require(_0xd408('0x5'));var querystring=require(_0xd408('0xc'));var Papa=require(_0xd408('0xd'));var Redis=require(_0xd408('0xe'));var authService=require(_0xd408('0xf'));var qs=require(_0xd408('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd408('0x11'));var logger=require(_0xd408('0x12'))('api');var utils=require(_0xd408('0x13'));var config=require(_0xd408('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xd408('0x15'))['db'];function respondWithStatusCode(_0x543cbd,_0x40007){_0x40007=_0x40007||0xcc;return function(_0x16bada){if(_0x16bada){return _0x543cbd['sendStatus'](_0x40007);}return _0x543cbd[_0xd408('0x16')](_0x40007)[_0xd408('0x17')]();};}function respondWithResult(_0x207513,_0x14da87){_0x14da87=_0x14da87||0xc8;return function(_0x43171d){if(_0x43171d){return _0x207513['status'](_0x14da87)[_0xd408('0x18')](_0x43171d);}};}function respondWithFilteredResult(_0x1bc660,_0x1e0126){return function(_0x2a5ffd){if(_0x2a5ffd){var _0x43cfd4=typeof _0x1e0126[_0xd408('0x19')]===_0xd408('0x1a')&&typeof _0x1e0126[_0xd408('0x1b')]===_0xd408('0x1a');var _0x56e548=_0x2a5ffd[_0xd408('0x1c')];var _0x4ef493=_0x43cfd4?0x0:_0x1e0126['offset'];var _0x525f4a=_0x43cfd4?_0x2a5ffd[_0xd408('0x1c')]:_0x1e0126[_0xd408('0x19')]+_0x1e0126['limit'];var _0x47c535;if(_0x525f4a>=_0x56e548){_0x525f4a=_0x56e548;_0x47c535=0xc8;}else{_0x47c535=0xce;}_0x1bc660[_0xd408('0x16')](_0x47c535);return _0x1bc660[_0xd408('0x1d')]('Content-Range',_0x4ef493+'-'+_0x525f4a+'/'+_0x56e548)[_0xd408('0x18')](_0x2a5ffd);}return null;};}function patchUpdates(_0x26c18f){return function(_0x4f77db){try{jsonpatch[_0xd408('0x1e')](_0x4f77db,_0x26c18f,!![]);}catch(_0x1064b4){return BPromise[_0xd408('0x1f')](_0x1064b4);}return _0x4f77db[_0xd408('0x20')]();};}function saveUpdates(_0x4f581e,_0x58a40d){return function(_0x4bd4f3){if(_0x4bd4f3){return _0x4bd4f3[_0xd408('0x21')](_0x4f581e)[_0xd408('0x22')](function(_0x1ef539){return _0x1ef539;});}return null;};}function removeEntity(_0x167ec9,_0x93eca9){return function(_0x471d7e){if(_0x471d7e){return _0x471d7e['destroy']()[_0xd408('0x22')](function(){_0x167ec9[_0xd408('0x16')](0xcc)[_0xd408('0x17')]();});}};}function handleEntityNotFound(_0x2dcbe3,_0x33c665){return function(_0x1befb6){if(!_0x1befb6){_0x2dcbe3[_0xd408('0x23')](0x194);}return _0x1befb6;};}function handleError(_0x47d3f7,_0x4a5db0){_0x4a5db0=_0x4a5db0||0x1f4;return function(_0x43456a){logger[_0xd408('0x24')](_0x43456a[_0xd408('0x25')]);if(_0x43456a['name']){delete _0x43456a[_0xd408('0x26')];}_0x47d3f7[_0xd408('0x16')](_0x4a5db0)[_0xd408('0x27')](_0x43456a);};}exports[_0xd408('0x28')]=function(_0x15bbc6,_0x2f3501){var _0x10032c={},_0x5a4a0f={},_0x118613={'count':0x0,'rows':[]};var _0x10deaf=_[_0xd408('0x29')](db[_0xd408('0x2a')]['rawAttributes'],function(_0x16647d){return{'name':_0x16647d[_0xd408('0x2b')],'type':_0x16647d['type'][_0xd408('0x2c')]};});_0x5a4a0f[_0xd408('0x2d')]=_['map'](_0x10deaf,_0xd408('0x26'));_0x5a4a0f['query']=_[_0xd408('0x2e')](_0x15bbc6[_0xd408('0x2f')]);_0x5a4a0f[_0xd408('0x30')]=_[_0xd408('0x31')](_0x5a4a0f[_0xd408('0x2d')],_0x5a4a0f[_0xd408('0x2f')]);_0x10032c[_0xd408('0x32')]=_[_0xd408('0x31')](_0x5a4a0f['model'],qs['fields'](_0x15bbc6['query']['fields']));_0x10032c[_0xd408('0x32')]=_0x10032c[_0xd408('0x32')][_0xd408('0x33')]?_0x10032c[_0xd408('0x32')]:_0x5a4a0f[_0xd408('0x2d')];if(!_0x15bbc6[_0xd408('0x2f')][_0xd408('0x34')](_0xd408('0x35'))){_0x10032c['limit']=qs[_0xd408('0x1b')](_0x15bbc6['query'][_0xd408('0x1b')]);_0x10032c[_0xd408('0x19')]=qs[_0xd408('0x19')](_0x15bbc6[_0xd408('0x2f')][_0xd408('0x19')]);}_0x10032c[_0xd408('0x36')]=qs['sort'](_0x15bbc6[_0xd408('0x2f')][_0xd408('0x37')]);_0x10032c['where']=qs[_0xd408('0x30')](_[_0xd408('0x38')](_0x15bbc6[_0xd408('0x2f')],_0x5a4a0f[_0xd408('0x30')]),_0x10deaf);if(_0x15bbc6[_0xd408('0x2f')][_0xd408('0x39')]){_0x10032c['where']=_[_0xd408('0x3a')](_0x10032c[_0xd408('0x3b')],{'$or':_[_0xd408('0x29')](_0x10deaf,function(_0x32172b){if(_0x32172b['type']!==_0xd408('0x3c')){var _0x1a9f0d={};_0x1a9f0d[_0x32172b[_0xd408('0x26')]]={'$like':'%'+_0x15bbc6[_0xd408('0x2f')]['filter']+'%'};return _0x1a9f0d;}})});}_0x10032c=_[_0xd408('0x3a')]({},_0x10032c,_0x15bbc6['options']);var _0x5bcea1={'where':_0x10032c['where']};return db[_0xd408('0x2a')][_0xd408('0x1c')](_0x5bcea1)[_0xd408('0x22')](function(_0x5e310f){_0x118613[_0xd408('0x1c')]=_0x5e310f;if(_0x15bbc6[_0xd408('0x2f')][_0xd408('0x3d')]){_0x10032c[_0xd408('0x3e')]=[{'all':!![]}];}return db[_0xd408('0x2a')]['findAll'](_0x10032c);})[_0xd408('0x22')](function(_0x541f69){_0x118613['rows']=_0x541f69;return _0x118613;})['then'](respondWithFilteredResult(_0x2f3501,_0x10032c))[_0xd408('0x3f')](handleError(_0x2f3501,null));};exports[_0xd408('0x40')]=function(_0xfb9676,_0xc441c1){var _0x45226b={'raw':![],'where':{'id':_0xfb9676[_0xd408('0x41')]['id']}},_0x2cbea4={};_0x2cbea4[_0xd408('0x2d')]=_[_0xd408('0x2e')](db[_0xd408('0x2a')][_0xd408('0x42')]);_0x2cbea4[_0xd408('0x2f')]=_[_0xd408('0x2e')](_0xfb9676[_0xd408('0x2f')]);_0x2cbea4[_0xd408('0x30')]=_[_0xd408('0x31')](_0x2cbea4['model'],_0x2cbea4['query']);_0x45226b['attributes']=_[_0xd408('0x31')](_0x2cbea4['model'],qs[_0xd408('0x43')](_0xfb9676[_0xd408('0x2f')][_0xd408('0x43')]));_0x45226b[_0xd408('0x32')]=_0x45226b['attributes'][_0xd408('0x33')]?_0x45226b[_0xd408('0x32')]:_0x2cbea4[_0xd408('0x2d')];if(_0xfb9676[_0xd408('0x2f')][_0xd408('0x3d')]){_0x45226b[_0xd408('0x3e')]=[{'all':!![]}];}_0x45226b=_[_0xd408('0x3a')]({},_0x45226b,_0xfb9676[_0xd408('0x44')]);return db[_0xd408('0x2a')][_0xd408('0x45')](_0x45226b)[_0xd408('0x22')](handleEntityNotFound(_0xc441c1,null))[_0xd408('0x22')](respondWithResult(_0xc441c1,null))[_0xd408('0x3f')](handleError(_0xc441c1,null));};exports[_0xd408('0x46')]=function(_0x11d178,_0x223e3e){return db[_0xd408('0x2a')][_0xd408('0x46')](_0x11d178[_0xd408('0x47')],{})['then'](respondWithResult(_0x223e3e,0xc9))['catch'](handleError(_0x223e3e,null));};exports[_0xd408('0x21')]=function(_0x113910,_0x5b1651){if(_0x113910[_0xd408('0x47')]['id']){delete _0x113910[_0xd408('0x47')]['id'];}return db['UserProfileSection'][_0xd408('0x45')]({'where':{'id':_0x113910[_0xd408('0x41')]['id']}})[_0xd408('0x22')](handleEntityNotFound(_0x5b1651,null))['then'](saveUpdates(_0x113910[_0xd408('0x47')],null))[_0xd408('0x22')](respondWithResult(_0x5b1651,null))[_0xd408('0x3f')](handleError(_0x5b1651,null));};exports[_0xd408('0x48')]=function(_0xfbf144,_0x1608db){return db[_0xd408('0x2a')][_0xd408('0x45')]({'where':{'id':_0xfbf144[_0xd408('0x41')]['id']}})[_0xd408('0x22')](handleEntityNotFound(_0x1608db,null))['then'](removeEntity(_0x1608db,null))[_0xd408('0x3f')](handleError(_0x1608db,null));};exports['describe']=function(_0x2ec4ff,_0x35cc25){return db['UserProfileSection'][_0xd408('0x49')]()[_0xd408('0x22')](respondWithResult(_0x35cc25,null))[_0xd408('0x3f')](handleError(_0x35cc25,null));};
\ No newline at end of file
+var _0xd497=['UserProfileSection','rawAttributes','fieldName','type','key','model','map','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','merge','VIRTUAL','options','includeAll','include','rows','catch','params','keys','find','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','jsforce','desk.js','querystring','ioredis','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','limit','count','set','Content-Range','save','update','then','destroy','end','error','name','index'];(function(_0x1dab1e,_0x45ab20){var _0x25ebc7=function(_0x53056d){while(--_0x53056d){_0x1dab1e['push'](_0x1dab1e['shift']());}};_0x25ebc7(++_0x45ab20);}(_0xd497,0x183));var _0x7d49=function(_0x2e2889,_0x434047){_0x2e2889=_0x2e2889-0x0;var _0x570d4d=_0xd497[_0x2e2889];return _0x570d4d;};'use strict';var emlformat=require(_0x7d49('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7d49('0x1'));var jsonpatch=require(_0x7d49('0x2'));var rp=require(_0x7d49('0x3'));var moment=require(_0x7d49('0x4'));var BPromise=require(_0x7d49('0x5'));var Mustache=require('mustache');var util=require(_0x7d49('0x6'));var path=require(_0x7d49('0x7'));var sox=require(_0x7d49('0x8'));var csv=require(_0x7d49('0x9'));var ejs=require(_0x7d49('0xa'));var fs=require('fs');var fs_extra=require(_0x7d49('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x7d49('0xc'));var deskjs=require(_0x7d49('0xd'));var toCsv=require(_0x7d49('0x9'));var querystring=require(_0x7d49('0xe'));var Papa=require('papaparse');var Redis=require(_0x7d49('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7d49('0x10'));var logger=require(_0x7d49('0x11'))(_0x7d49('0x12'));var utils=require(_0x7d49('0x13'));var config=require(_0x7d49('0x14'));var licenseUtil=require(_0x7d49('0x15'));var db=require(_0x7d49('0x16'))['db'];function respondWithStatusCode(_0x1066af,_0x4adf8a){_0x4adf8a=_0x4adf8a||0xcc;return function(_0xfb7766){if(_0xfb7766){return _0x1066af[_0x7d49('0x17')](_0x4adf8a);}return _0x1066af[_0x7d49('0x18')](_0x4adf8a)['end']();};}function respondWithResult(_0x2ca8d9,_0x5a6198){_0x5a6198=_0x5a6198||0xc8;return function(_0x1956bf){if(_0x1956bf){return _0x2ca8d9[_0x7d49('0x18')](_0x5a6198)[_0x7d49('0x19')](_0x1956bf);}};}function respondWithFilteredResult(_0x2ca82f,_0x462e41){return function(_0x24b973){if(_0x24b973){var _0x3128a4=typeof _0x462e41[_0x7d49('0x1a')]==='undefined'&&typeof _0x462e41[_0x7d49('0x1b')]==='undefined';var _0x35557d=_0x24b973[_0x7d49('0x1c')];var _0x46ed10=_0x3128a4?0x0:_0x462e41[_0x7d49('0x1a')];var _0x201535=_0x3128a4?_0x24b973[_0x7d49('0x1c')]:_0x462e41['offset']+_0x462e41[_0x7d49('0x1b')];var _0x4aecb5;if(_0x201535>=_0x35557d){_0x201535=_0x35557d;_0x4aecb5=0xc8;}else{_0x4aecb5=0xce;}_0x2ca82f[_0x7d49('0x18')](_0x4aecb5);return _0x2ca82f[_0x7d49('0x1d')](_0x7d49('0x1e'),_0x46ed10+'-'+_0x201535+'/'+_0x35557d)['json'](_0x24b973);}return null;};}function patchUpdates(_0x3bd591){return function(_0x1fba88){try{jsonpatch['apply'](_0x1fba88,_0x3bd591,!![]);}catch(_0x46b682){return BPromise['reject'](_0x46b682);}return _0x1fba88[_0x7d49('0x1f')]();};}function saveUpdates(_0x429196,_0x1ce6b8){return function(_0x26d31a){if(_0x26d31a){return _0x26d31a[_0x7d49('0x20')](_0x429196)[_0x7d49('0x21')](function(_0x3876ec){return _0x3876ec;});}return null;};}function removeEntity(_0x3c3f88,_0x5eb394){return function(_0x3584c9){if(_0x3584c9){return _0x3584c9[_0x7d49('0x22')]()['then'](function(){_0x3c3f88[_0x7d49('0x18')](0xcc)[_0x7d49('0x23')]();});}};}function handleEntityNotFound(_0x24e06c,_0x270799){return function(_0x44e153){if(!_0x44e153){_0x24e06c[_0x7d49('0x17')](0x194);}return _0x44e153;};}function handleError(_0x20d8ac,_0x5daa1e){_0x5daa1e=_0x5daa1e||0x1f4;return function(_0x23a57b){logger[_0x7d49('0x24')](_0x23a57b['stack']);if(_0x23a57b[_0x7d49('0x25')]){delete _0x23a57b['name'];}_0x20d8ac[_0x7d49('0x18')](_0x5daa1e)['send'](_0x23a57b);};}exports[_0x7d49('0x26')]=function(_0x2f623d,_0x400052){var _0x2ce806={},_0x1c5e21={},_0x4aa090={'count':0x0,'rows':[]};var _0x3097a1=_['map'](db[_0x7d49('0x27')][_0x7d49('0x28')],function(_0x45703a){return{'name':_0x45703a[_0x7d49('0x29')],'type':_0x45703a[_0x7d49('0x2a')][_0x7d49('0x2b')]};});_0x1c5e21[_0x7d49('0x2c')]=_[_0x7d49('0x2d')](_0x3097a1,_0x7d49('0x25'));_0x1c5e21['query']=_['keys'](_0x2f623d[_0x7d49('0x2e')]);_0x1c5e21['filters']=_[_0x7d49('0x2f')](_0x1c5e21[_0x7d49('0x2c')],_0x1c5e21['query']);_0x2ce806[_0x7d49('0x30')]=_['intersection'](_0x1c5e21['model'],qs['fields'](_0x2f623d['query'][_0x7d49('0x31')]));_0x2ce806[_0x7d49('0x30')]=_0x2ce806[_0x7d49('0x30')]['length']?_0x2ce806[_0x7d49('0x30')]:_0x1c5e21[_0x7d49('0x2c')];if(!_0x2f623d[_0x7d49('0x2e')][_0x7d49('0x32')](_0x7d49('0x33'))){_0x2ce806[_0x7d49('0x1b')]=qs[_0x7d49('0x1b')](_0x2f623d['query'][_0x7d49('0x1b')]);_0x2ce806[_0x7d49('0x1a')]=qs[_0x7d49('0x1a')](_0x2f623d[_0x7d49('0x2e')][_0x7d49('0x1a')]);}_0x2ce806[_0x7d49('0x34')]=qs['sort'](_0x2f623d['query'][_0x7d49('0x35')]);_0x2ce806['where']=qs[_0x7d49('0x36')](_[_0x7d49('0x37')](_0x2f623d[_0x7d49('0x2e')],_0x1c5e21[_0x7d49('0x36')]),_0x3097a1);if(_0x2f623d['query'][_0x7d49('0x38')]){_0x2ce806[_0x7d49('0x39')]=_[_0x7d49('0x3a')](_0x2ce806[_0x7d49('0x39')],{'$or':_['map'](_0x3097a1,function(_0x430db2){if(_0x430db2[_0x7d49('0x2a')]!==_0x7d49('0x3b')){var _0x3c8c39={};_0x3c8c39[_0x430db2[_0x7d49('0x25')]]={'$like':'%'+_0x2f623d[_0x7d49('0x2e')][_0x7d49('0x38')]+'%'};return _0x3c8c39;}})});}_0x2ce806=_['merge']({},_0x2ce806,_0x2f623d[_0x7d49('0x3c')]);var _0x27ed8c={'where':_0x2ce806[_0x7d49('0x39')]};return db[_0x7d49('0x27')]['count'](_0x27ed8c)['then'](function(_0x2ea7a5){_0x4aa090[_0x7d49('0x1c')]=_0x2ea7a5;if(_0x2f623d['query'][_0x7d49('0x3d')]){_0x2ce806[_0x7d49('0x3e')]=[{'all':!![]}];}return db[_0x7d49('0x27')]['findAll'](_0x2ce806);})[_0x7d49('0x21')](function(_0x58c807){_0x4aa090[_0x7d49('0x3f')]=_0x58c807;return _0x4aa090;})['then'](respondWithFilteredResult(_0x400052,_0x2ce806))[_0x7d49('0x40')](handleError(_0x400052,null));};exports['show']=function(_0x574ba2,_0x5e1d22){var _0x2111f6={'raw':![],'where':{'id':_0x574ba2[_0x7d49('0x41')]['id']}},_0x98e637={};_0x98e637[_0x7d49('0x2c')]=_[_0x7d49('0x42')](db[_0x7d49('0x27')]['rawAttributes']);_0x98e637['query']=_[_0x7d49('0x42')](_0x574ba2[_0x7d49('0x2e')]);_0x98e637[_0x7d49('0x36')]=_['intersection'](_0x98e637[_0x7d49('0x2c')],_0x98e637['query']);_0x2111f6[_0x7d49('0x30')]=_[_0x7d49('0x2f')](_0x98e637['model'],qs[_0x7d49('0x31')](_0x574ba2[_0x7d49('0x2e')][_0x7d49('0x31')]));_0x2111f6['attributes']=_0x2111f6['attributes']['length']?_0x2111f6[_0x7d49('0x30')]:_0x98e637[_0x7d49('0x2c')];if(_0x574ba2['query'][_0x7d49('0x3d')]){_0x2111f6[_0x7d49('0x3e')]=[{'all':!![]}];}_0x2111f6=_[_0x7d49('0x3a')]({},_0x2111f6,_0x574ba2[_0x7d49('0x3c')]);return db['UserProfileSection'][_0x7d49('0x43')](_0x2111f6)[_0x7d49('0x21')](handleEntityNotFound(_0x5e1d22,null))[_0x7d49('0x21')](respondWithResult(_0x5e1d22,null))[_0x7d49('0x40')](handleError(_0x5e1d22,null));};exports[_0x7d49('0x44')]=function(_0x18447f,_0xc9b919){return db['UserProfileSection'][_0x7d49('0x44')](_0x18447f['body'],{})[_0x7d49('0x21')](respondWithResult(_0xc9b919,0xc9))[_0x7d49('0x40')](handleError(_0xc9b919,null));};exports[_0x7d49('0x20')]=function(_0x2d67e4,_0x3e9e4c){if(_0x2d67e4[_0x7d49('0x45')]['id']){delete _0x2d67e4[_0x7d49('0x45')]['id'];}return db[_0x7d49('0x27')][_0x7d49('0x43')]({'where':{'id':_0x2d67e4['params']['id']}})[_0x7d49('0x21')](handleEntityNotFound(_0x3e9e4c,null))[_0x7d49('0x21')](saveUpdates(_0x2d67e4[_0x7d49('0x45')],null))['then'](respondWithResult(_0x3e9e4c,null))['catch'](handleError(_0x3e9e4c,null));};exports[_0x7d49('0x22')]=function(_0xc008b8,_0x29cadc){return db[_0x7d49('0x27')][_0x7d49('0x43')]({'where':{'id':_0xc008b8[_0x7d49('0x41')]['id']}})[_0x7d49('0x21')](handleEntityNotFound(_0x29cadc,null))[_0x7d49('0x21')](removeEntity(_0x29cadc,null))['catch'](handleError(_0x29cadc,null));};exports[_0x7d49('0x46')]=function(_0x135acc,_0x36dcca){return db[_0x7d49('0x27')][_0x7d49('0x46')]()[_0x7d49('0x21')](respondWithResult(_0x36dcca,null))[_0x7d49('0x40')](handleError(_0x36dcca,null));};
\ No newline at end of file
index 16a91fc..8222f7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa331=['./userProfileSection.attributes','exports','define','UserProfileSection','user_profile_has_sections','userProfileId','lodash','../../config/logger','bluebird','request-promise','path','rimraf'];(function(_0x39adcb,_0x41e2d2){var _0x1552d8=function(_0x282611){while(--_0x282611){_0x39adcb['push'](_0x39adcb['shift']());}};_0x1552d8(++_0x41e2d2);}(_0xa331,0x11a));var _0x1a33=function(_0x325358,_0x62452a){_0x325358=_0x325358-0x0;var _0xeca104=_0xa331[_0x325358];return _0xeca104;};'use strict';var _=require(_0x1a33('0x0'));var util=require('util');var logger=require(_0x1a33('0x1'))('api');var moment=require('moment');var BPromise=require(_0x1a33('0x2'));var rp=require(_0x1a33('0x3'));var fs=require('fs');var path=require(_0x1a33('0x4'));var rimraf=require(_0x1a33('0x5'));var config=require('../../config/environment');var attributes=require(_0x1a33('0x6'));module[_0x1a33('0x7')]=function(_0x1fb8d4,_0x18ff81){return _0x1fb8d4[_0x1a33('0x8')](_0x1a33('0x9'),attributes,{'tableName':_0x1a33('0xa'),'paranoid':![],'indexes':[{'name':'compositeIndex','fields':['sectionId',_0x1a33('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x03ad=['lodash','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./userProfileSection.attributes','exports','define','UserProfileSection','user_profile_has_sections','compositeIndex','sectionId','userProfileId'];(function(_0x33bfe3,_0xb5acf4){var _0x78a538=function(_0x5a087c){while(--_0x5a087c){_0x33bfe3['push'](_0x33bfe3['shift']());}};_0x78a538(++_0xb5acf4);}(_0x03ad,0xe0));var _0xd03a=function(_0x23e4cf,_0x12704d){_0x23e4cf=_0x23e4cf-0x0;var _0x2bd35a=_0x03ad[_0x23e4cf];return _0x2bd35a;};'use strict';var _=require(_0xd03a('0x0'));var util=require('util');var logger=require(_0xd03a('0x1'))(_0xd03a('0x2'));var moment=require(_0xd03a('0x3'));var BPromise=require('bluebird');var rp=require(_0xd03a('0x4'));var fs=require('fs');var path=require(_0xd03a('0x5'));var rimraf=require(_0xd03a('0x6'));var config=require(_0xd03a('0x7'));var attributes=require(_0xd03a('0x8'));module[_0xd03a('0x9')]=function(_0xb0fcfc,_0x30478b){return _0xb0fcfc[_0xd03a('0xa')](_0xd03a('0xb'),attributes,{'tableName':_0xd03a('0xc'),'paranoid':![],'indexes':[{'name':_0xd03a('0xd'),'fields':[_0xd03a('0xe'),_0xd03a('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
index 081a034..7e030b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae16=['debug','stringify','error','code','message','result','catch','lodash','moment','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','UserProfileSection,\x20%s,\x20%s','request\x20sent'];(function(_0x366be3,_0x4d0600){var _0x3d2b7f=function(_0x107e0d){while(--_0x107e0d){_0x366be3['push'](_0x366be3['shift']());}};_0x3d2b7f(++_0x4d0600);}(_0xae16,0xee));var _0x6ae1=function(_0x41ee01,_0x40d3a0){_0x41ee01=_0x41ee01-0x0;var _0x402117=_0xae16[_0x41ee01];return _0x402117;};'use strict';var _=require(_0x6ae1('0x0'));var util=require('util');var moment=require(_0x6ae1('0x1'));var BPromise=require('bluebird');var rs=require(_0x6ae1('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x6ae1('0x3'));var logger=require(_0x6ae1('0x4'))(_0x6ae1('0x5'));var config=require(_0x6ae1('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x6ae1('0x7')][_0x6ae1('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x17f788,_0x15cf4e,_0x4744d4){return new BPromise(function(_0x46b311,_0x383c32){return client[_0x6ae1('0x9')](_0x17f788,_0x4744d4)[_0x6ae1('0xa')](function(_0x55230d){logger[_0x6ae1('0xb')](_0x6ae1('0xc'),_0x15cf4e,_0x6ae1('0xd'));logger[_0x6ae1('0xe')]('UserProfileSection,\x20%s,\x20%s,\x20%s',_0x15cf4e,_0x6ae1('0xd'),JSON[_0x6ae1('0xf')](_0x55230d));if(_0x55230d[_0x6ae1('0x10')]){if(_0x55230d['error'][_0x6ae1('0x11')]===0x1f4){logger['error']('UserProfileSection,\x20%s,\x20%s',_0x15cf4e,_0x55230d[_0x6ae1('0x10')][_0x6ae1('0x12')]);return _0x383c32(_0x55230d['error'][_0x6ae1('0x12')]);}logger[_0x6ae1('0x10')](_0x6ae1('0xc'),_0x15cf4e,_0x55230d[_0x6ae1('0x10')][_0x6ae1('0x12')]);return _0x46b311(_0x55230d[_0x6ae1('0x10')][_0x6ae1('0x12')]);}else{logger['info'](_0x6ae1('0xc'),_0x15cf4e,_0x6ae1('0xd'));_0x46b311(_0x55230d[_0x6ae1('0x13')]['message']);}})[_0x6ae1('0x14')](function(_0x30b2ff){logger[_0x6ae1('0x10')](_0x6ae1('0xc'),_0x15cf4e,_0x30b2ff);_0x383c32(_0x30b2ff);});});}
\ No newline at end of file
+var _0x2be9=['randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','UserProfileSection,\x20%s,\x20%s','request\x20sent','debug','stringify','code','error','message','lodash','bluebird'];(function(_0x1ca890,_0x21d0d3){var _0x3f8e01=function(_0x4ff2e2){while(--_0x4ff2e2){_0x1ca890['push'](_0x1ca890['shift']());}};_0x3f8e01(++_0x21d0d3);}(_0x2be9,0x1c6));var _0x92be=function(_0x3f4d55,_0x21aca6){_0x3f4d55=_0x3f4d55-0x0;var _0x3e9d17=_0x2be9[_0x3f4d55];return _0x3e9d17;};'use strict';var _=require(_0x92be('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x92be('0x1'));var rs=require(_0x92be('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x92be('0x3'))['db'];var utils=require(_0x92be('0x4'));var logger=require(_0x92be('0x5'))(_0x92be('0x6'));var config=require(_0x92be('0x7'));var jayson=require(_0x92be('0x8'));var client=jayson[_0x92be('0x9')][_0x92be('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x384074,_0x12afa6,_0x4652e1){return new BPromise(function(_0x316ee0,_0x2224c8){return client['request'](_0x384074,_0x4652e1)['then'](function(_0x387439){logger[_0x92be('0xb')](_0x92be('0xc'),_0x12afa6,_0x92be('0xd'));logger[_0x92be('0xe')]('UserProfileSection,\x20%s,\x20%s,\x20%s',_0x12afa6,'request\x20sent',JSON[_0x92be('0xf')](_0x387439));if(_0x387439['error']){if(_0x387439['error'][_0x92be('0x10')]===0x1f4){logger[_0x92be('0x11')]('UserProfileSection,\x20%s,\x20%s',_0x12afa6,_0x387439[_0x92be('0x11')][_0x92be('0x12')]);return _0x2224c8(_0x387439[_0x92be('0x11')]['message']);}logger[_0x92be('0x11')](_0x92be('0xc'),_0x12afa6,_0x387439[_0x92be('0x11')][_0x92be('0x12')]);return _0x316ee0(_0x387439[_0x92be('0x11')][_0x92be('0x12')]);}else{logger[_0x92be('0xb')](_0x92be('0xc'),_0x12afa6,_0x92be('0xd'));_0x316ee0(_0x387439['result'][_0x92be('0x12')]);}})['catch'](function(_0x5a9350){logger[_0x92be('0x11')](_0x92be('0xc'),_0x12afa6,_0x5a9350);_0x2224c8(_0x5a9350);});});}
\ No newline at end of file
index 4b26246..412a973 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(_0x38adea,_0x97d455){var _0x3ea832=function(_0x53f5c4){while(--_0x53f5c4){_0x38adea['push'](_0x38adea['shift']());}};_0x3ea832(++_0x97d455);}(_0xe706,0xa3));var _0x6e70=function(_0x159152,_0x174251){_0x159152=_0x159152-0x0;var _0x50a4aa=_0xe706[_0x159152];return _0x50a4aa;};'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(_0x532838,_0x5d88fe){var _0x2617ff=function(_0x2f463d){while(--_0x2f463d){_0x532838['push'](_0x532838['shift']());}};_0x2617ff(++_0x5d88fe);}(_0xe706,0xa3));var _0x6e70=function(_0x133ae7,_0x31bfd9){_0x133ae7=_0x133ae7-0x0;var _0x48677e=_0xe706[_0x133ae7];return _0x48677e;};'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 a6ca105..c4bb647 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd25b=['INTEGER','sequelize'];(function(_0x1e4593,_0x4dca85){var _0x4e8061=function(_0xe7d247){while(--_0xe7d247){_0x1e4593['push'](_0x1e4593['shift']());}};_0x4e8061(++_0x4dca85);}(_0xd25b,0x7d));var _0xbd25=function(_0x4d3853,_0x1091e1){_0x4d3853=_0x4d3853-0x0;var _0xbdac9=_0xd25b[_0x4d3853];return _0xbdac9;};'use strict';var Sequelize=require(_0xbd25('0x0'));module['exports']={'penalty':{'type':Sequelize[_0xbd25('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x4f5e=['sequelize','exports','INTEGER'];(function(_0x2a2166,_0x3a077f){var _0x3bcf50=function(_0x3f0300){while(--_0x3f0300){_0x2a2166['push'](_0x2a2166['shift']());}};_0x3bcf50(++_0x3a077f);}(_0x4f5e,0xc0));var _0xe4f5=function(_0x3b51fb,_0x10c826){_0x3b51fb=_0x3b51fb-0x0;var _0x555fc7=_0x4f5e[_0x3b51fb];return _0x555fc7;};'use strict';var Sequelize=require(_0xe4f5('0x0'));module[_0xe4f5('0x1')]={'penalty':{'type':Sequelize[_0xe4f5('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 1c9b16e..b329863 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4819=['user_has_sms_queues','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userSmsQueue.attributes','UserSmsQueue'];(function(_0x5393cd,_0x12006b){var _0x18d09d=function(_0x49357a){while(--_0x49357a){_0x5393cd['push'](_0x5393cd['shift']());}};_0x18d09d(++_0x12006b);}(_0x4819,0xcd));var _0x9481=function(_0x4fe566,_0x93c45f){_0x4fe566=_0x4fe566-0x0;var _0x5e38e0=_0x4819[_0x4fe566];return _0x5e38e0;};'use strict';var _=require('lodash');var util=require(_0x9481('0x0'));var logger=require(_0x9481('0x1'))(_0x9481('0x2'));var moment=require(_0x9481('0x3'));var BPromise=require(_0x9481('0x4'));var rp=require(_0x9481('0x5'));var fs=require('fs');var path=require(_0x9481('0x6'));var rimraf=require(_0x9481('0x7'));var config=require(_0x9481('0x8'));var attributes=require(_0x9481('0x9'));module['exports']=function(_0x4d9e3a,_0x5def07){return _0x4d9e3a['define'](_0x9481('0xa'),attributes,{'tableName':_0x9481('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x958a=['bluebird','request-promise','path','../../config/environment','exports','define','UserSmsQueue','user_has_sms_queues','lodash','util','api','moment'];(function(_0x2d2c16,_0x4e88b6){var _0x53f2fb=function(_0x6b6dac){while(--_0x6b6dac){_0x2d2c16['push'](_0x2d2c16['shift']());}};_0x53f2fb(++_0x4e88b6);}(_0x958a,0x128));var _0xa958=function(_0x16c790,_0x4668d6){_0x16c790=_0x16c790-0x0;var _0x20e034=_0x958a[_0x16c790];return _0x20e034;};'use strict';var _=require(_0xa958('0x0'));var util=require(_0xa958('0x1'));var logger=require('../../config/logger')(_0xa958('0x2'));var moment=require(_0xa958('0x3'));var BPromise=require(_0xa958('0x4'));var rp=require(_0xa958('0x5'));var fs=require('fs');var path=require(_0xa958('0x6'));var rimraf=require('rimraf');var config=require(_0xa958('0x7'));var attributes=require('./userSmsQueue.attributes');module[_0xa958('0x8')]=function(_0x9b7d9e,_0x2692d6){return _0x9b7d9e[_0xa958('0x9')](_0xa958('0xa'),attributes,{'tableName':_0xa958('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6c94529..5fa710b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9c1=['../../config/logger','rpc','jayson/promise','http','request','then','request\x20sent','debug','UserSmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','UserSmsQueue,\x20%s,\x20%s','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x4f4e6d,_0x16d20e){var _0x1e9ac7=function(_0x2aae6a){while(--_0x2aae6a){_0x4f4e6d['push'](_0x4f4e6d['shift']());}};_0x1e9ac7(++_0x16d20e);}(_0xa9c1,0xf2));var _0x1a9c=function(_0x53cf8e,_0x3d290f){_0x53cf8e=_0x53cf8e-0x0;var _0x459197=_0xa9c1[_0x53cf8e];return _0x459197;};'use strict';var _=require(_0x1a9c('0x0'));var util=require(_0x1a9c('0x1'));var moment=require(_0x1a9c('0x2'));var BPromise=require(_0x1a9c('0x3'));var rs=require(_0x1a9c('0x4'));var fs=require('fs');var Redis=require(_0x1a9c('0x5'));var db=require(_0x1a9c('0x6'))['db'];var utils=require(_0x1a9c('0x7'));var logger=require(_0x1a9c('0x8'))(_0x1a9c('0x9'));var config=require('../../config/environment');var jayson=require(_0x1a9c('0xa'));var client=jayson['client'][_0x1a9c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x157806,_0x6939f4,_0x4651fa){return new BPromise(function(_0x193ce1,_0x449d5d){return client[_0x1a9c('0xc')](_0x157806,_0x4651fa)[_0x1a9c('0xd')](function(_0x704e5){logger['info']('UserSmsQueue,\x20%s,\x20%s',_0x6939f4,_0x1a9c('0xe'));logger[_0x1a9c('0xf')](_0x1a9c('0x10'),_0x6939f4,_0x1a9c('0xe'),JSON[_0x1a9c('0x11')](_0x704e5));if(_0x704e5['error']){if(_0x704e5[_0x1a9c('0x12')][_0x1a9c('0x13')]===0x1f4){logger[_0x1a9c('0x12')]('UserSmsQueue,\x20%s,\x20%s',_0x6939f4,_0x704e5[_0x1a9c('0x12')][_0x1a9c('0x14')]);return _0x449d5d(_0x704e5[_0x1a9c('0x12')][_0x1a9c('0x14')]);}logger[_0x1a9c('0x12')](_0x1a9c('0x15'),_0x6939f4,_0x704e5[_0x1a9c('0x12')][_0x1a9c('0x14')]);return _0x193ce1(_0x704e5[_0x1a9c('0x12')][_0x1a9c('0x14')]);}else{logger[_0x1a9c('0x16')](_0x1a9c('0x15'),_0x6939f4,_0x1a9c('0xe'));_0x193ce1(_0x704e5[_0x1a9c('0x17')][_0x1a9c('0x14')]);}})[_0x1a9c('0x18')](function(_0x5bc783){logger[_0x1a9c('0x12')]('UserSmsQueue,\x20%s,\x20%s',_0x6939f4,_0x5bc783);_0x449d5d(_0x5bc783);});});}
\ No newline at end of file
+var _0x9245=['message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','debug','error','UserSmsQueue,\x20%s,\x20%s'];(function(_0x3dfdbe,_0x4b6803){var _0xaacbe6=function(_0x52ae9d){while(--_0x52ae9d){_0x3dfdbe['push'](_0x3dfdbe['shift']());}};_0xaacbe6(++_0x4b6803);}(_0x9245,0x1bc));var _0x5924=function(_0xac1791,_0x3f8a4e){_0xac1791=_0xac1791-0x0;var _0x238f2d=_0x9245[_0xac1791];return _0x238f2d;};'use strict';var _=require(_0x5924('0x0'));var util=require(_0x5924('0x1'));var moment=require('moment');var BPromise=require(_0x5924('0x2'));var rs=require(_0x5924('0x3'));var fs=require('fs');var Redis=require(_0x5924('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x5924('0x5'));var logger=require(_0x5924('0x6'))(_0x5924('0x7'));var config=require(_0x5924('0x8'));var jayson=require(_0x5924('0x9'));var client=jayson[_0x5924('0xa')][_0x5924('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1a8e2f,_0x16d027,_0x1c535b){return new BPromise(function(_0x2e5269,_0x31e3c9){return client[_0x5924('0xc')](_0x1a8e2f,_0x1c535b)[_0x5924('0xd')](function(_0x2cadbf){logger['info']('UserSmsQueue,\x20%s,\x20%s',_0x16d027,_0x5924('0xe'));logger[_0x5924('0xf')]('UserSmsQueue,\x20%s,\x20%s,\x20%s',_0x16d027,_0x5924('0xe'),JSON['stringify'](_0x2cadbf));if(_0x2cadbf[_0x5924('0x10')]){if(_0x2cadbf[_0x5924('0x10')]['code']===0x1f4){logger[_0x5924('0x10')](_0x5924('0x11'),_0x16d027,_0x2cadbf[_0x5924('0x10')][_0x5924('0x12')]);return _0x31e3c9(_0x2cadbf['error'][_0x5924('0x12')]);}logger[_0x5924('0x10')](_0x5924('0x11'),_0x16d027,_0x2cadbf['error'][_0x5924('0x12')]);return _0x2e5269(_0x2cadbf['error'][_0x5924('0x12')]);}else{logger['info']('UserSmsQueue,\x20%s,\x20%s',_0x16d027,_0x5924('0xe'));_0x2e5269(_0x2cadbf[_0x5924('0x13')]['message']);}})[_0x5924('0x14')](function(_0x2d8f39){logger['error'](_0x5924('0x11'),_0x16d027,_0x2d8f39);_0x31e3c9(_0x2d8f39);});});}
\ No newline at end of file
index 3a53db7..59a9143 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3652=['sequelize','INTEGER'];(function(_0x4ebf43,_0x3716cf){var _0x2b50b7=function(_0x476b20){while(--_0x476b20){_0x4ebf43['push'](_0x4ebf43['shift']());}};_0x2b50b7(++_0x3716cf);}(_0x3652,0xd0));var _0x2365=function(_0x4a93bb,_0x495404){_0x4a93bb=_0x4a93bb-0x0;var _0x208468=_0x3652[_0x4a93bb];return _0x208468;};'use strict';var Sequelize=require(_0x2365('0x0'));module['exports']={'UserId':{'type':Sequelize['INTEGER']},'VoicePrefixId':{'type':Sequelize[_0x2365('0x1')]}};
\ No newline at end of file
+var _0x2b15=['INTEGER','sequelize'];(function(_0x53c098,_0xdea94a){var _0x4cd7=function(_0x14d334){while(--_0x14d334){_0x53c098['push'](_0x53c098['shift']());}};_0x4cd7(++_0xdea94a);}(_0x2b15,0x16f));var _0x52b1=function(_0xea81a1,_0xb28e9e){_0xea81a1=_0xea81a1-0x0;var _0x2cd030=_0x2b15[_0xea81a1];return _0x2cd030;};'use strict';var Sequelize=require(_0x52b1('0x0'));module['exports']={'UserId':{'type':Sequelize[_0x52b1('0x1')]},'VoicePrefixId':{'type':Sequelize[_0x52b1('0x1')]}};
\ No newline at end of file
index 2014c82..0cfe3cb 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(_0x2f6f67,_0x3a6817){var _0x2c0da2=function(_0x8175e){while(--_0x8175e){_0x2f6f67['push'](_0x2f6f67['shift']());}};_0x2c0da2(++_0x3a6817);}(_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 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(_0x2d6459,_0x4b0f94){var _0x300707=function(_0x59aaa4){while(--_0x59aaa4){_0x2d6459['push'](_0x2d6459['shift']());}};_0x300707(++_0x4b0f94);}(_0xa9e0,0x123));var _0x0a9e=function(_0x34bc30,_0x177cb0){_0x34bc30=_0x34bc30-0x0;var _0x5706de=_0xa9e0[_0x34bc30];return _0x5706de;};'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 290eb4e..88def11 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(_0x13becb,_0x58fdb5){var _0x539864=function(_0x33443c){while(--_0x33443c){_0x13becb['push'](_0x13becb['shift']());}};_0x539864(++_0x58fdb5);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
+var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x1346f2,_0x38f203){var _0x1769d2=function(_0x47a9f6){while(--_0x47a9f6){_0x1346f2['push'](_0x1346f2['shift']());}};_0x1769d2(++_0x38f203);}(_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 e90f277..0f7eae4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d87=['exports','INTEGER'];(function(_0x488623,_0x23228c){var _0x25bba8=function(_0x1753b6){while(--_0x1753b6){_0x488623['push'](_0x488623['shift']());}};_0x25bba8(++_0x23228c);}(_0x5d87,0x1b0));var _0x75d8=function(_0x44d163,_0x29d801){_0x44d163=_0x44d163-0x0;var _0x46d6d8=_0x5d87[_0x44d163];return _0x46d6d8;};'use strict';var Sequelize=require('sequelize');module[_0x75d8('0x0')]={'penalty':{'type':Sequelize[_0x75d8('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x3aff=['sequelize'];(function(_0x609988,_0x507944){var _0x159984=function(_0x39d9ce){while(--_0x39d9ce){_0x609988['push'](_0x609988['shift']());}};_0x159984(++_0x507944);}(_0x3aff,0x148));var _0xf3af=function(_0x296cda,_0x530347){_0x296cda=_0x296cda-0x0;var _0x552c5c=_0x3aff[_0x296cda];return _0x552c5c;};'use strict';var Sequelize=require(_0xf3af('0x0'));module['exports']={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index c041c7f..8e96d48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf239=['./userVoiceQueue.attributes','UserVoiceQueue','util','api','moment','bluebird','path','rimraf','../../config/environment'];(function(_0x2ad11f,_0x3f9c6f){var _0x42a28f=function(_0x3d1ca2){while(--_0x3d1ca2){_0x2ad11f['push'](_0x2ad11f['shift']());}};_0x42a28f(++_0x3f9c6f);}(_0xf239,0x161));var _0x9f23=function(_0xed35e0,_0x3fbfa7){_0xed35e0=_0xed35e0-0x0;var _0x1dad57=_0xf239[_0xed35e0];return _0x1dad57;};'use strict';var _=require('lodash');var util=require(_0x9f23('0x0'));var logger=require('../../config/logger')(_0x9f23('0x1'));var moment=require(_0x9f23('0x2'));var BPromise=require(_0x9f23('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9f23('0x4'));var rimraf=require(_0x9f23('0x5'));var config=require(_0x9f23('0x6'));var attributes=require(_0x9f23('0x7'));module['exports']=function(_0x578241,_0x19d233){return _0x578241['define'](_0x9f23('0x8'),attributes,{'tableName':'user_has_voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdf8f=['user_has_voice_queues','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userVoiceQueue.attributes','exports','UserVoiceQueue'];(function(_0x5b13c3,_0x378e0a){var _0x3d6780=function(_0x6327a6){while(--_0x6327a6){_0x5b13c3['push'](_0x5b13c3['shift']());}};_0x3d6780(++_0x378e0a);}(_0xdf8f,0x1cf));var _0xfdf8=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xdf8f[_0x40a045];return _0x1a687c;};'use strict';var _=require(_0xfdf8('0x0'));var util=require(_0xfdf8('0x1'));var logger=require(_0xfdf8('0x2'))(_0xfdf8('0x3'));var moment=require(_0xfdf8('0x4'));var BPromise=require(_0xfdf8('0x5'));var rp=require(_0xfdf8('0x6'));var fs=require('fs');var path=require(_0xfdf8('0x7'));var rimraf=require(_0xfdf8('0x8'));var config=require(_0xfdf8('0x9'));var attributes=require(_0xfdf8('0xa'));module[_0xfdf8('0xb')]=function(_0x4f7852,_0x34fb3e){return _0x4f7852['define'](_0xfdf8('0xc'),attributes,{'tableName':_0xfdf8('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 92be830..1c38568 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0cea=['moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','info','UserVoiceQueue,\x20%s,\x20%s','debug','UserVoiceQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch','lodash','util'];(function(_0x441f7a,_0x576321){var _0x4821da=function(_0x5c5b52){while(--_0x5c5b52){_0x441f7a['push'](_0x441f7a['shift']());}};_0x4821da(++_0x576321);}(_0x0cea,0x1cc));var _0xa0ce=function(_0x55701e,_0x25167e){_0x55701e=_0x55701e-0x0;var _0x409cf9=_0x0cea[_0x55701e];return _0x409cf9;};'use strict';var _=require(_0xa0ce('0x0'));var util=require(_0xa0ce('0x1'));var moment=require(_0xa0ce('0x2'));var BPromise=require(_0xa0ce('0x3'));var rs=require(_0xa0ce('0x4'));var fs=require('fs');var Redis=require(_0xa0ce('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xa0ce('0x6'));var logger=require(_0xa0ce('0x7'))(_0xa0ce('0x8'));var config=require(_0xa0ce('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xa0ce('0xa')][_0xa0ce('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x516eda,_0x11d179,_0x3bcf15){return new BPromise(function(_0x2ec0ec,_0x7bbe2a){return client[_0xa0ce('0xc')](_0x516eda,_0x3bcf15)['then'](function(_0x4772e7){logger[_0xa0ce('0xd')](_0xa0ce('0xe'),_0x11d179,'request\x20sent');logger[_0xa0ce('0xf')](_0xa0ce('0x10'),_0x11d179,_0xa0ce('0x11'),JSON[_0xa0ce('0x12')](_0x4772e7));if(_0x4772e7['error']){if(_0x4772e7[_0xa0ce('0x13')]['code']===0x1f4){logger[_0xa0ce('0x13')](_0xa0ce('0xe'),_0x11d179,_0x4772e7[_0xa0ce('0x13')]['message']);return _0x7bbe2a(_0x4772e7[_0xa0ce('0x13')][_0xa0ce('0x14')]);}logger['error'](_0xa0ce('0xe'),_0x11d179,_0x4772e7[_0xa0ce('0x13')]['message']);return _0x2ec0ec(_0x4772e7[_0xa0ce('0x13')][_0xa0ce('0x14')]);}else{logger['info'](_0xa0ce('0xe'),_0x11d179,_0xa0ce('0x11'));_0x2ec0ec(_0x4772e7['result'][_0xa0ce('0x14')]);}})[_0xa0ce('0x15')](function(_0x44f008){logger[_0xa0ce('0x13')](_0xa0ce('0xe'),_0x11d179,_0x44f008);_0x7bbe2a(_0x44f008);});});}
\ No newline at end of file
+var _0x38e8=['jayson/promise','client','http','request','then','info','UserVoiceQueue,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x38e8,0x150));var _0x838e=function(_0x3022af,_0x2b561e){_0x3022af=_0x3022af-0x0;var _0x7301de=_0x38e8[_0x3022af];return _0x7301de;};'use strict';var _=require(_0x838e('0x0'));var util=require(_0x838e('0x1'));var moment=require(_0x838e('0x2'));var BPromise=require(_0x838e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x838e('0x4'));var db=require(_0x838e('0x5'))['db'];var utils=require(_0x838e('0x6'));var logger=require(_0x838e('0x7'))(_0x838e('0x8'));var config=require('../../config/environment');var jayson=require(_0x838e('0x9'));var client=jayson[_0x838e('0xa')][_0x838e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x33574d,_0xefe40d,_0x246c6b){return new BPromise(function(_0x255d09,_0x323c4d){return client[_0x838e('0xc')](_0x33574d,_0x246c6b)[_0x838e('0xd')](function(_0x4af9ad){logger[_0x838e('0xe')](_0x838e('0xf'),_0xefe40d,_0x838e('0x10'));logger['debug']('UserVoiceQueue,\x20%s,\x20%s,\x20%s',_0xefe40d,'request\x20sent',JSON[_0x838e('0x11')](_0x4af9ad));if(_0x4af9ad[_0x838e('0x12')]){if(_0x4af9ad[_0x838e('0x12')][_0x838e('0x13')]===0x1f4){logger['error'](_0x838e('0xf'),_0xefe40d,_0x4af9ad[_0x838e('0x12')][_0x838e('0x14')]);return _0x323c4d(_0x4af9ad[_0x838e('0x12')][_0x838e('0x14')]);}logger['error']('UserVoiceQueue,\x20%s,\x20%s',_0xefe40d,_0x4af9ad['error']['message']);return _0x255d09(_0x4af9ad['error'][_0x838e('0x14')]);}else{logger[_0x838e('0xe')](_0x838e('0xf'),_0xefe40d,_0x838e('0x10'));_0x255d09(_0x4af9ad[_0x838e('0x15')][_0x838e('0x14')]);}})[_0x838e('0x16')](function(_0x3138c4){logger[_0x838e('0x12')](_0x838e('0xf'),_0xefe40d,_0x3138c4);_0x323c4d(_0x3138c4);});});}
\ No newline at end of file
index 36ac4c5..13e9234 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(_0x1cab41,_0x4bfa57){var _0x511deb=function(_0x3d1a43){while(--_0x3d1a43){_0x1cab41['push'](_0x1cab41['shift']());}};_0x511deb(++_0x4bfa57);}(_0x9c44,0x178));var _0x49c4=function(_0x334841,_0x2bbc4c){_0x334841=_0x334841-0x0;var _0x5beb4b=_0x9c44[_0x334841];return _0x5beb4b;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x7a5f2d,_0x1d08c8){var _0x25bde2=function(_0xbc06da){while(--_0xbc06da){_0x7a5f2d['push'](_0x7a5f2d['shift']());}};_0x25bde2(++_0x1d08c8);}(_0xe706,0xa3));var _0x6e70=function(_0x1f1170,_0x3b5783){_0x1f1170=_0x1f1170-0x0;var _0x127b7b=_0xe706[_0x1f1170];return _0x127b7b;};'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 c862090..7f3d061 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b9c=['INTEGER','Required\x20by\x20Asterisk','queue_interface','STRING'];(function(_0x246115,_0x398123){var _0x385878=function(_0x534a9c){while(--_0x534a9c){_0x246115['push'](_0x246115['shift']());}};_0x385878(++_0x398123);}(_0x8b9c,0x198));var _0xc8b9=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x8b9c[_0x501510];return _0x1e6ee5;};'use strict';var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0xc8b9('0x0')],'primaryKey':!![],'autoIncrement':!![],'comment':_0xc8b9('0x1')},'membername':{'type':Sequelize['STRING'],'allowNull':![],'comment':_0xc8b9('0x1')},'UserId':{'type':Sequelize['INTEGER'],'allowNull':![]},'queue_name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xc8b9('0x2'),'comment':_0xc8b9('0x1')},'VoiceQueueId':{'type':Sequelize[_0xc8b9('0x0')],'allowNull':![]},'interface':{'type':Sequelize[_0xc8b9('0x3')],'allowNull':![],'unique':_0xc8b9('0x2'),'comment':_0xc8b9('0x1')},'penalty':{'type':Sequelize[_0xc8b9('0x0')](0xb),'defaultValue':0x0,'comment':_0xc8b9('0x1')},'paused':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'comment':'Required\x20by\x20Asterisk'}};
\ No newline at end of file
+var _0x7e1e=['Required\x20by\x20Asterisk','queue_interface','STRING','sequelize','exports','INTEGER'];(function(_0x2b99c7,_0x1adfd6){var _0x5aaa0c=function(_0x35f9f6){while(--_0x35f9f6){_0x2b99c7['push'](_0x2b99c7['shift']());}};_0x5aaa0c(++_0x1adfd6);}(_0x7e1e,0x183));var _0xe7e1=function(_0x4a78c9,_0x2e5b96){_0x4a78c9=_0x4a78c9-0x0;var _0x1f7e49=_0x7e1e[_0x4a78c9];return _0x1f7e49;};'use strict';var Sequelize=require(_0xe7e1('0x0'));module[_0xe7e1('0x1')]={'uniqueid':{'type':Sequelize[_0xe7e1('0x2')],'primaryKey':!![],'autoIncrement':!![],'comment':_0xe7e1('0x3')},'membername':{'type':Sequelize['STRING'],'allowNull':![],'comment':_0xe7e1('0x3')},'UserId':{'type':Sequelize[_0xe7e1('0x2')],'allowNull':![]},'queue_name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xe7e1('0x4'),'comment':_0xe7e1('0x3')},'VoiceQueueId':{'type':Sequelize[_0xe7e1('0x2')],'allowNull':![]},'interface':{'type':Sequelize[_0xe7e1('0x5')],'allowNull':![],'unique':'queue_interface','comment':_0xe7e1('0x3')},'penalty':{'type':Sequelize[_0xe7e1('0x2')](0xb),'defaultValue':0x0,'comment':_0xe7e1('0x3')},'paused':{'type':Sequelize[_0xe7e1('0x2')](0xb),'defaultValue':0x0,'comment':_0xe7e1('0x3')}};
\ No newline at end of file
index a9776fb..161f49b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5318=['hasOwnProperty','hook','exports','events','../../mysqldb','UserVoiceQueueRt','setMaxListeners','save','update','remove','emit'];(function(_0x1ca4cc,_0x402c23){var _0x108010=function(_0x4c5082){while(--_0x4c5082){_0x1ca4cc['push'](_0x1ca4cc['shift']());}};_0x108010(++_0x402c23);}(_0x5318,0x184));var _0x8531=function(_0x27830a,_0x4e8504){_0x27830a=_0x27830a-0x0;var _0x32ccc3=_0x5318[_0x27830a];return _0x32ccc3;};'use strict';var EventEmitter=require(_0x8531('0x0'));var UserVoiceQueueRt=require(_0x8531('0x1'))['db'][_0x8531('0x2')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0x8531('0x3')](0x0);var events={'afterCreate':_0x8531('0x4'),'afterUpdate':_0x8531('0x5'),'afterDestroy':_0x8531('0x6')};function emitEvent(_0x28d8bb){return function(_0x42589b,_0x1a56a9,_0x32a86e){UserVoiceQueueRtEvents[_0x8531('0x7')](_0x28d8bb+':'+_0x42589b['id'],_0x42589b);UserVoiceQueueRtEvents[_0x8531('0x7')](_0x28d8bb,_0x42589b);_0x32a86e(null);};}for(var e in events){if(events[_0x8531('0x8')](e)){var event=events[e];UserVoiceQueueRt[_0x8531('0x9')](e,emitEvent(event));}}module[_0x8531('0xa')]=UserVoiceQueueRtEvents;
\ No newline at end of file
+var _0x55c3=['update','emit','hasOwnProperty','hook','exports','events','../../mysqldb','UserVoiceQueueRt','setMaxListeners','save'];(function(_0x183827,_0x2dfa0e){var _0x16ae25=function(_0x49534f){while(--_0x49534f){_0x183827['push'](_0x183827['shift']());}};_0x16ae25(++_0x2dfa0e);}(_0x55c3,0x73));var _0x355c=function(_0x716538,_0x364eaa){_0x716538=_0x716538-0x0;var _0x6ad46c=_0x55c3[_0x716538];return _0x6ad46c;};'use strict';var EventEmitter=require(_0x355c('0x0'));var UserVoiceQueueRt=require(_0x355c('0x1'))['db'][_0x355c('0x2')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0x355c('0x3')](0x0);var events={'afterCreate':_0x355c('0x4'),'afterUpdate':_0x355c('0x5'),'afterDestroy':'remove'};function emitEvent(_0x183e25){return function(_0x432343,_0x256712,_0xdf3929){UserVoiceQueueRtEvents[_0x355c('0x6')](_0x183e25+':'+_0x432343['id'],_0x432343);UserVoiceQueueRtEvents[_0x355c('0x6')](_0x183e25,_0x432343);_0xdf3929(null);};}for(var e in events){if(events[_0x355c('0x7')](e)){var event=events[e];UserVoiceQueueRt[_0x355c('0x8')](e,emitEvent(event));}}module[_0x355c('0x9')]=UserVoiceQueueRtEvents;
\ No newline at end of file
index eaeab75..fcc06ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1978=['user_has_voice_queues_rt','lodash','../../config/logger','api','moment','bluebird','path','../../config/environment','exports','define','UserVoiceQueueRt'];(function(_0x4f9b18,_0x2cb5ca){var _0x29f20c=function(_0x268b3d){while(--_0x268b3d){_0x4f9b18['push'](_0x4f9b18['shift']());}};_0x29f20c(++_0x2cb5ca);}(_0x1978,0x90));var _0x8197=function(_0x40d727,_0x3caaac){_0x40d727=_0x40d727-0x0;var _0x2a72c9=_0x1978[_0x40d727];return _0x2a72c9;};'use strict';var _=require(_0x8197('0x0'));var util=require('util');var logger=require(_0x8197('0x1'))(_0x8197('0x2'));var moment=require(_0x8197('0x3'));var BPromise=require(_0x8197('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x8197('0x5'));var rimraf=require('rimraf');var config=require(_0x8197('0x6'));var attributes=require('./userVoiceQueueRt.attributes');module[_0x8197('0x7')]=function(_0x1f703d,_0x708210){return _0x1f703d[_0x8197('0x8')](_0x8197('0x9'),attributes,{'tableName':_0x8197('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfecf=['moment','bluebird','path','rimraf','define','lodash','util','api'];(function(_0x1782b0,_0x28d6d2){var _0x374268=function(_0x32763c){while(--_0x32763c){_0x1782b0['push'](_0x1782b0['shift']());}};_0x374268(++_0x28d6d2);}(_0xfecf,0x8d));var _0xffec=function(_0x468db6,_0x4e464d){_0x468db6=_0x468db6-0x0;var _0x568e45=_0xfecf[_0x468db6];return _0x568e45;};'use strict';var _=require(_0xffec('0x0'));var util=require(_0xffec('0x1'));var logger=require('../../config/logger')(_0xffec('0x2'));var moment=require(_0xffec('0x3'));var BPromise=require(_0xffec('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xffec('0x5'));var rimraf=require(_0xffec('0x6'));var config=require('../../config/environment');var attributes=require('./userVoiceQueueRt.attributes');module['exports']=function(_0x1e4633,_0x2fcdde){return _0x1e4633[_0xffec('0x7')]('UserVoiceQueueRt',attributes,{'tableName':'user_has_voice_queues_rt','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f9ae929..efc4d3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9ee=['jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./userVoiceQueueRt.socket','register','request','info','UserVoiceQueueRt,\x20%s,\x20%s','request\x20sent','debug','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetVoiceQueueRtPauses','UserVoiceQueueRt','findAll','options','raw','where','sequelize','COUNT','literal','outboundQueuePauses','then','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x4fc963,_0x446bad){var _0x2da3b5=function(_0x3505d8){while(--_0x3505d8){_0x4fc963['push'](_0x4fc963['shift']());}};_0x2da3b5(++_0x446bad);}(_0xa9ee,0x186));var _0xea9e=function(_0x3e6518,_0x4b549c){_0x3e6518=_0x3e6518-0x0;var _0x2ed21b=_0xa9ee[_0x3e6518];return _0x2ed21b;};'use strict';var _=require(_0xea9e('0x0'));var util=require(_0xea9e('0x1'));var moment=require('moment');var BPromise=require(_0xea9e('0x2'));var rs=require(_0xea9e('0x3'));var fs=require('fs');var Redis=require(_0xea9e('0x4'));var db=require(_0xea9e('0x5'))['db'];var utils=require(_0xea9e('0x6'));var logger=require(_0xea9e('0x7'))(_0xea9e('0x8'));var config=require(_0xea9e('0x9'));var jayson=require(_0xea9e('0xa'));var client=jayson['client'][_0xea9e('0xb')]({'port':0x232a});config[_0xea9e('0xc')]=_[_0xea9e('0xd')](config[_0xea9e('0xc')],{'host':_0xea9e('0xe'),'port':0x18eb});var socket=require(_0xea9e('0xf'))(new Redis(config[_0xea9e('0xc')]));require(_0xea9e('0x10'))[_0xea9e('0x11')](socket);function respondWithRpcPromise(_0xcafb61,_0x1147f9,_0xf093ce){return new BPromise(function(_0x8dbc10,_0x1574b7){return client[_0xea9e('0x12')](_0xcafb61,_0xf093ce)['then'](function(_0x47be5a){logger[_0xea9e('0x13')](_0xea9e('0x14'),_0x1147f9,_0xea9e('0x15'));logger[_0xea9e('0x16')](_0xea9e('0x17'),_0x1147f9,_0xea9e('0x15'),JSON[_0xea9e('0x18')](_0x47be5a));if(_0x47be5a[_0xea9e('0x19')]){if(_0x47be5a[_0xea9e('0x19')]['code']===0x1f4){logger[_0xea9e('0x19')](_0xea9e('0x14'),_0x1147f9,_0x47be5a[_0xea9e('0x19')][_0xea9e('0x1a')]);return _0x1574b7(_0x47be5a[_0xea9e('0x19')][_0xea9e('0x1a')]);}logger[_0xea9e('0x19')](_0xea9e('0x14'),_0x1147f9,_0x47be5a[_0xea9e('0x19')][_0xea9e('0x1a')]);return _0x8dbc10(_0x47be5a[_0xea9e('0x19')][_0xea9e('0x1a')]);}else{logger['info'](_0xea9e('0x14'),_0x1147f9,_0xea9e('0x15'));_0x8dbc10(_0x47be5a[_0xea9e('0x1b')][_0xea9e('0x1a')]);}})[_0xea9e('0x1c')](function(_0x46f774){logger[_0xea9e('0x19')](_0xea9e('0x14'),_0x1147f9,_0x46f774);_0x1574b7(_0x46f774);});});}exports[_0xea9e('0x1d')]=function(_0xc93c91){var _0x204464=this;return new Promise(function(_0x56ebb1,_0x548047){return db[_0xea9e('0x1e')][_0xea9e('0x1f')]({'raw':_0xc93c91[_0xea9e('0x20')]?_0xc93c91[_0xea9e('0x20')][_0xea9e('0x21')]===undefined?!![]:![]:!![],'where':_0xc93c91[_0xea9e('0x20')]?_0xc93c91[_0xea9e('0x20')][_0xea9e('0x22')]||null:null,'attributes':[[db[_0xea9e('0x23')]['fn'](_0xea9e('0x24'),db[_0xea9e('0x23')]['fn']('IF',db[_0xea9e('0x23')][_0xea9e('0x25')]('`paused`\x20=\x201,\x201,\x20null'))),_0xea9e('0x26')]]})[_0xea9e('0x27')](function(_0x41522e){logger[_0xea9e('0x13')](_0xea9e('0x1d'),_0xc93c91);logger['debug']('GetVoiceQueueRtPauses',_0xc93c91,JSON['stringify'](_0x41522e));_0x56ebb1(_0x41522e);})[_0xea9e('0x1c')](function(_0x3d717d){logger[_0xea9e('0x19')](_0xea9e('0x1d'),_0x3d717d[_0xea9e('0x1a')],_0xc93c91);_0x548047(_0x204464[_0xea9e('0x19')](0x1f4,_0x3d717d[_0xea9e('0x1a')]));});});};
\ No newline at end of file
+var _0x5886=['request','then','info','UserVoiceQueueRt,\x20%s,\x20%s','request\x20sent','debug','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetVoiceQueueRtPauses','UserVoiceQueueRt','options','where','sequelize','outboundQueuePauses','stringify','util','moment','bluebird','ioredis','../../config/logger','rpc','../../config/environment','client','http','redis','socket.io-emitter','./userVoiceQueueRt.socket'];(function(_0x3029a1,_0x2a5e5f){var _0x220774=function(_0x45481a){while(--_0x45481a){_0x3029a1['push'](_0x3029a1['shift']());}};_0x220774(++_0x2a5e5f);}(_0x5886,0x149));var _0x6588=function(_0xa35236,_0x3ad925){_0xa35236=_0xa35236-0x0;var _0x2275e5=_0x5886[_0xa35236];return _0x2275e5;};'use strict';var _=require('lodash');var util=require(_0x6588('0x0'));var moment=require(_0x6588('0x1'));var BPromise=require(_0x6588('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6588('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x6588('0x4'))(_0x6588('0x5'));var config=require(_0x6588('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x6588('0x7')][_0x6588('0x8')]({'port':0x232a});config['redis']=_['defaults'](config[_0x6588('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x6588('0xa'))(new Redis(config['redis']));require(_0x6588('0xb'))['register'](socket);function respondWithRpcPromise(_0x3fda57,_0x378e10,_0x44c129){return new BPromise(function(_0x47d18a,_0x41f240){return client[_0x6588('0xc')](_0x3fda57,_0x44c129)[_0x6588('0xd')](function(_0x26ae69){logger[_0x6588('0xe')](_0x6588('0xf'),_0x378e10,_0x6588('0x10'));logger[_0x6588('0x11')](_0x6588('0x12'),_0x378e10,'request\x20sent',JSON['stringify'](_0x26ae69));if(_0x26ae69['error']){if(_0x26ae69[_0x6588('0x13')][_0x6588('0x14')]===0x1f4){logger['error'](_0x6588('0xf'),_0x378e10,_0x26ae69['error'][_0x6588('0x15')]);return _0x41f240(_0x26ae69[_0x6588('0x13')][_0x6588('0x15')]);}logger['error']('UserVoiceQueueRt,\x20%s,\x20%s',_0x378e10,_0x26ae69[_0x6588('0x13')]['message']);return _0x47d18a(_0x26ae69[_0x6588('0x13')]['message']);}else{logger[_0x6588('0xe')](_0x6588('0xf'),_0x378e10,_0x6588('0x10'));_0x47d18a(_0x26ae69[_0x6588('0x16')][_0x6588('0x15')]);}})[_0x6588('0x17')](function(_0xc2ee35){logger[_0x6588('0x13')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x378e10,_0xc2ee35);_0x41f240(_0xc2ee35);});});}exports[_0x6588('0x18')]=function(_0x192a11){var _0x83b326=this;return new Promise(function(_0x482cc0,_0x2ac6cb){return db[_0x6588('0x19')]['findAll']({'raw':_0x192a11[_0x6588('0x1a')]?_0x192a11[_0x6588('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x192a11[_0x6588('0x1a')]?_0x192a11[_0x6588('0x1a')][_0x6588('0x1b')]||null:null,'attributes':[[db['sequelize']['fn']('COUNT',db[_0x6588('0x1c')]['fn']('IF',db[_0x6588('0x1c')]['literal']('`paused`\x20=\x201,\x201,\x20null'))),_0x6588('0x1d')]]})['then'](function(_0x55240b){logger[_0x6588('0xe')](_0x6588('0x18'),_0x192a11);logger[_0x6588('0x11')]('GetVoiceQueueRtPauses',_0x192a11,JSON[_0x6588('0x1e')](_0x55240b));_0x482cc0(_0x55240b);})[_0x6588('0x17')](function(_0x1e3007){logger[_0x6588('0x13')]('GetVoiceQueueRtPauses',_0x1e3007[_0x6588('0x15')],_0x192a11);_0x2ac6cb(_0x83b326[_0x6588('0x13')](0x1f4,_0x1e3007[_0x6588('0x15')]));});});};
\ No newline at end of file
index 6f089d8..4a45e57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66c7=['remove','emit','register','length','userVoiceQueueRt:','./userVoiceQueueRt.events','save'];(function(_0x1b321c,_0x543c48){var _0xd4fca3=function(_0x491508){while(--_0x491508){_0x1b321c['push'](_0x1b321c['shift']());}};_0xd4fca3(++_0x543c48);}(_0x66c7,0x15c));var _0x766c=function(_0x19d600,_0x2502b8){_0x19d600=_0x19d600-0x0;var _0x3a30a0=_0x66c7[_0x19d600];return _0x3a30a0;};'use strict';var UserVoiceQueueRtEvents=require(_0x766c('0x0'));var events=[_0x766c('0x1'),_0x766c('0x2'),'update'];function createListener(_0x507a68,_0x47351a){return function(_0x23b678){_0x47351a[_0x766c('0x3')](_0x507a68,_0x23b678);};}function removeListener(_0x1b2a8e,_0x2b4c75){return function(){UserVoiceQueueRtEvents['removeListener'](_0x1b2a8e,_0x2b4c75);};}exports[_0x766c('0x4')]=function(_0x80d91d){for(var _0x6f94c3=0x0,_0xb0b5f7=events[_0x766c('0x5')];_0x6f94c3<_0xb0b5f7;_0x6f94c3++){var _0x3c4683=events[_0x6f94c3];var _0x22a524=createListener(_0x766c('0x6')+_0x3c4683,_0x80d91d);UserVoiceQueueRtEvents['on'](_0x3c4683,_0x22a524);}};
\ No newline at end of file
+var _0x9a14=['emit','length','userVoiceQueueRt:','remove','update'];(function(_0x4918d0,_0x443259){var _0xe52b64=function(_0x545ef9){while(--_0x545ef9){_0x4918d0['push'](_0x4918d0['shift']());}};_0xe52b64(++_0x443259);}(_0x9a14,0xa8));var _0x49a1=function(_0x16e4e4,_0x5dd356){_0x16e4e4=_0x16e4e4-0x0;var _0x409c5c=_0x9a14[_0x16e4e4];return _0x409c5c;};'use strict';var UserVoiceQueueRtEvents=require('./userVoiceQueueRt.events');var events=['save',_0x49a1('0x0'),_0x49a1('0x1')];function createListener(_0x10e23c,_0x969076){return function(_0x1efead){_0x969076[_0x49a1('0x2')](_0x10e23c,_0x1efead);};}function removeListener(_0x10de2e,_0x453ecf){return function(){UserVoiceQueueRtEvents['removeListener'](_0x10de2e,_0x453ecf);};}exports['register']=function(_0x479018){for(var _0x5283aa=0x0,_0x9394fc=events[_0x49a1('0x3')];_0x5283aa<_0x9394fc;_0x5283aa++){var _0x7ef1ba=events[_0x5283aa];var _0x592940=createListener(_0x49a1('0x4')+_0x7ef1ba,_0x479018);UserVoiceQueueRtEvents['on'](_0x7ef1ba,_0x592940);}};
\ No newline at end of file
index 0b4124a..ac0c55f 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(_0x3e68c6,_0xb9d042){var _0x5eea23=function(_0x4bced8){while(--_0x4bced8){_0x3e68c6['push'](_0x3e68c6['shift']());}};_0x5eea23(++_0xb9d042);}(_0xe706,0xa3));var _0x6e70=function(_0x46ad9e,_0x203184){_0x46ad9e=_0x46ad9e-0x0;var _0x5727cb=_0xe706[_0x46ad9e];return _0x5727cb;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
+var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x24ca1f,_0x3d2164){var _0x5f4222=function(_0x37b651){while(--_0x37b651){_0x24ca1f['push'](_0x24ca1f['shift']());}};_0x5f4222(++_0x3d2164);}(_0x9c44,0x178));var _0x49c4=function(_0x550d12,_0x5384bd){_0x550d12=_0x550d12-0x0;var _0x12103d=_0x9c44[_0x550d12];return _0x12103d;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
index e597678..dff0e21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e3c=['sequelize','exports','INTEGER'];(function(_0x318dda,_0x1aa800){var _0x3f97ca=function(_0x1dc61a){while(--_0x1dc61a){_0x318dda['push'](_0x318dda['shift']());}};_0x3f97ca(++_0x1aa800);}(_0x5e3c,0x16b));var _0xc5e3=function(_0x443c33,_0x55415b){_0x443c33=_0x443c33-0x0;var _0x2cddcf=_0x5e3c[_0x443c33];return _0x2cddcf;};'use strict';var Sequelize=require(_0xc5e3('0x0'));module[_0xc5e3('0x1')]={'penalty':{'type':Sequelize[_0xc5e3('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xac4f=['sequelize','INTEGER'];(function(_0x2f0a93,_0x3f1b1e){var _0x32b2a2=function(_0x3e3bd8){while(--_0x3e3bd8){_0x2f0a93['push'](_0x2f0a93['shift']());}};_0x32b2a2(++_0x3f1b1e);}(_0xac4f,0x122));var _0xfac4=function(_0x511577,_0x2ec0cf){_0x511577=_0x511577-0x0;var _0x1b9201=_0xac4f[_0x511577];return _0x1b9201;};'use strict';var Sequelize=require(_0xfac4('0x0'));module['exports']={'penalty':{'type':Sequelize[_0xfac4('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index dd7e77d..602eadc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5397=['../../config/environment','./userWhatsappQueue.attributes','define','user_has_whatsapp_queues','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf'];(function(_0x3b3f4f,_0x403216){var _0x174dbe=function(_0x30e333){while(--_0x30e333){_0x3b3f4f['push'](_0x3b3f4f['shift']());}};_0x174dbe(++_0x403216);}(_0x5397,0xf4));var _0x7539=function(_0xd9c489,_0x3dfdc3){_0xd9c489=_0xd9c489-0x0;var _0x5504eb=_0x5397[_0xd9c489];return _0x5504eb;};'use strict';var _=require(_0x7539('0x0'));var util=require(_0x7539('0x1'));var logger=require(_0x7539('0x2'))(_0x7539('0x3'));var moment=require('moment');var BPromise=require(_0x7539('0x4'));var rp=require(_0x7539('0x5'));var fs=require('fs');var path=require(_0x7539('0x6'));var rimraf=require(_0x7539('0x7'));var config=require(_0x7539('0x8'));var attributes=require(_0x7539('0x9'));module['exports']=function(_0x4f2152,_0x78339f){return _0x4f2152[_0x7539('0xa')]('UserWhatsappQueue',attributes,{'tableName':_0x7539('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6736=['path','rimraf','../../config/environment','./userWhatsappQueue.attributes','exports','define','UserWhatsappQueue','user_has_whatsapp_queues','lodash','util','../../config/logger','api','moment','request-promise'];(function(_0x155193,_0x16929b){var _0x47c132=function(_0x18c60d){while(--_0x18c60d){_0x155193['push'](_0x155193['shift']());}};_0x47c132(++_0x16929b);}(_0x6736,0x13c));var _0x6673=function(_0x2d11b7,_0x30a95e){_0x2d11b7=_0x2d11b7-0x0;var _0x29f186=_0x6736[_0x2d11b7];return _0x29f186;};'use strict';var _=require(_0x6673('0x0'));var util=require(_0x6673('0x1'));var logger=require(_0x6673('0x2'))(_0x6673('0x3'));var moment=require(_0x6673('0x4'));var BPromise=require('bluebird');var rp=require(_0x6673('0x5'));var fs=require('fs');var path=require(_0x6673('0x6'));var rimraf=require(_0x6673('0x7'));var config=require(_0x6673('0x8'));var attributes=require(_0x6673('0x9'));module[_0x6673('0xa')]=function(_0x3f52ba,_0xcf9550){return _0x3f52ba[_0x6673('0xb')](_0x6673('0xc'),attributes,{'tableName':_0x6673('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d679861..cf5aab7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5f8=['request','then','UserWhatsappQueue,\x20%s,\x20%s','debug','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','info','result','catch','lodash','util','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http'];(function(_0x48acba,_0x381558){var _0x3f7a72=function(_0xdd72f){while(--_0xdd72f){_0x48acba['push'](_0x48acba['shift']());}};_0x3f7a72(++_0x381558);}(_0xe5f8,0x8a));var _0x8e5f=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xe5f8[_0x40a045];return _0x1a687c;};'use strict';var _=require(_0x8e5f('0x0'));var util=require(_0x8e5f('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x8e5f('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8e5f('0x3'))['db'];var utils=require(_0x8e5f('0x4'));var logger=require(_0x8e5f('0x5'))(_0x8e5f('0x6'));var config=require('../../config/environment');var jayson=require(_0x8e5f('0x7'));var client=jayson['client'][_0x8e5f('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x321774,_0x130ba8,_0x14f5d9){return new BPromise(function(_0x59c6a8,_0x5a7e42){return client[_0x8e5f('0x9')](_0x321774,_0x14f5d9)[_0x8e5f('0xa')](function(_0x52b142){logger['info'](_0x8e5f('0xb'),_0x130ba8,'request\x20sent');logger[_0x8e5f('0xc')](_0x8e5f('0xd'),_0x130ba8,_0x8e5f('0xe'),JSON['stringify'](_0x52b142));if(_0x52b142[_0x8e5f('0xf')]){if(_0x52b142[_0x8e5f('0xf')][_0x8e5f('0x10')]===0x1f4){logger[_0x8e5f('0xf')](_0x8e5f('0xb'),_0x130ba8,_0x52b142[_0x8e5f('0xf')][_0x8e5f('0x11')]);return _0x5a7e42(_0x52b142[_0x8e5f('0xf')][_0x8e5f('0x11')]);}logger[_0x8e5f('0xf')](_0x8e5f('0xb'),_0x130ba8,_0x52b142[_0x8e5f('0xf')][_0x8e5f('0x11')]);return _0x59c6a8(_0x52b142['error'][_0x8e5f('0x11')]);}else{logger[_0x8e5f('0x12')](_0x8e5f('0xb'),_0x130ba8,'request\x20sent');_0x59c6a8(_0x52b142[_0x8e5f('0x13')][_0x8e5f('0x11')]);}})[_0x8e5f('0x14')](function(_0x37675a){logger[_0x8e5f('0xf')](_0x8e5f('0xb'),_0x130ba8,_0x37675a);_0x5a7e42(_0x37675a);});});}
\ No newline at end of file
+var _0x62a3=['randomstring','../../mysqldb','rpc','../../config/environment','jayson/promise','http','then','info','UserWhatsappQueue,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','lodash','util','bluebird'];(function(_0x298a2f,_0x42610d){var _0x2d36dd=function(_0x1c5b53){while(--_0x1c5b53){_0x298a2f['push'](_0x298a2f['shift']());}};_0x2d36dd(++_0x42610d);}(_0x62a3,0x75));var _0x362a=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x62a3[_0x4cf98e];return _0x1623ac;};'use strict';var _=require(_0x362a('0x0'));var util=require(_0x362a('0x1'));var moment=require('moment');var BPromise=require(_0x362a('0x2'));var rs=require(_0x362a('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x362a('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x362a('0x5'));var config=require(_0x362a('0x6'));var jayson=require(_0x362a('0x7'));var client=jayson['client'][_0x362a('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4a1e22,_0x4c145d,_0xcfc6ea){return new BPromise(function(_0x3dbd55,_0xa83a6b){return client['request'](_0x4a1e22,_0xcfc6ea)[_0x362a('0x9')](function(_0x494958){logger[_0x362a('0xa')](_0x362a('0xb'),_0x4c145d,'request\x20sent');logger[_0x362a('0xc')]('UserWhatsappQueue,\x20%s,\x20%s,\x20%s',_0x4c145d,_0x362a('0xd'),JSON[_0x362a('0xe')](_0x494958));if(_0x494958['error']){if(_0x494958[_0x362a('0xf')][_0x362a('0x10')]===0x1f4){logger[_0x362a('0xf')]('UserWhatsappQueue,\x20%s,\x20%s',_0x4c145d,_0x494958[_0x362a('0xf')][_0x362a('0x11')]);return _0xa83a6b(_0x494958[_0x362a('0xf')][_0x362a('0x11')]);}logger['error'](_0x362a('0xb'),_0x4c145d,_0x494958[_0x362a('0xf')]['message']);return _0x3dbd55(_0x494958[_0x362a('0xf')][_0x362a('0x11')]);}else{logger[_0x362a('0xa')](_0x362a('0xb'),_0x4c145d,'request\x20sent');_0x3dbd55(_0x494958[_0x362a('0x12')]['message']);}})[_0x362a('0x13')](function(_0xb9efe1){logger['error'](_0x362a('0xb'),_0x4c145d,_0xb9efe1);_0xa83a6b(_0xb9efe1);});});}
\ No newline at end of file
index 38b0108..2f4f35b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87df=['destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','/:id','show','post','create','put','update','delete'];(function(_0xe782a1,_0xbdc981){var _0x5d8909=function(_0x4cf8b9){while(--_0x4cf8b9){_0xe782a1['push'](_0xe782a1['shift']());}};_0x5d8909(++_0xbdc981);}(_0x87df,0x167));var _0xf87d=function(_0x177c0f,_0x324360){_0x177c0f=_0x177c0f-0x0;var _0x1f4d28=_0x87df[_0x177c0f];return _0x1f4d28;};'use strict';var multer=require(_0xf87d('0x0'));var util=require(_0xf87d('0x1'));var path=require(_0xf87d('0x2'));var timeout=require(_0xf87d('0x3'));var express=require(_0xf87d('0x4'));var router=express[_0xf87d('0x5')]();var fs_extra=require(_0xf87d('0x6'));var auth=require(_0xf87d('0x7'));var interaction=require(_0xf87d('0x8'));var config=require(_0xf87d('0x9'));var controller=require('./variable.controller');router['get']('/',auth[_0xf87d('0xa')](),controller[_0xf87d('0xb')]);router['get'](_0xf87d('0xc'),auth[_0xf87d('0xa')](),controller[_0xf87d('0xd')]);router[_0xf87d('0xe')]('/',auth[_0xf87d('0xa')](),controller[_0xf87d('0xf')]);router[_0xf87d('0x10')](_0xf87d('0xc'),auth[_0xf87d('0xa')](),controller[_0xf87d('0x11')]);router[_0xf87d('0x12')](_0xf87d('0xc'),auth[_0xf87d('0xa')](),controller[_0xf87d('0x13')]);module[_0xf87d('0x14')]=router;
\ No newline at end of file
+var _0x9181=['create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./variable.controller','get','isAuthenticated','index','/:id','show'];(function(_0x5b76d4,_0x3e2e5b){var _0x26345e=function(_0x558d67){while(--_0x558d67){_0x5b76d4['push'](_0x5b76d4['shift']());}};_0x26345e(++_0x3e2e5b);}(_0x9181,0x182));var _0x1918=function(_0x369b2b,_0x388ef0){_0x369b2b=_0x369b2b-0x0;var _0x3500b5=_0x9181[_0x369b2b];return _0x3500b5;};'use strict';var multer=require(_0x1918('0x0'));var util=require(_0x1918('0x1'));var path=require(_0x1918('0x2'));var timeout=require(_0x1918('0x3'));var express=require(_0x1918('0x4'));var router=express['Router']();var fs_extra=require(_0x1918('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x1918('0x6'));var config=require(_0x1918('0x7'));var controller=require(_0x1918('0x8'));router[_0x1918('0x9')]('/',auth[_0x1918('0xa')](),controller[_0x1918('0xb')]);router['get'](_0x1918('0xc'),auth['isAuthenticated'](),controller[_0x1918('0xd')]);router['post']('/',auth[_0x1918('0xa')](),controller[_0x1918('0xe')]);router[_0x1918('0xf')](_0x1918('0xc'),auth[_0x1918('0xa')](),controller[_0x1918('0x10')]);router[_0x1918('0x11')](_0x1918('0xc'),auth[_0x1918('0xa')](),controller[_0x1918('0x12')]);module[_0x1918('0x13')]=router;
\ No newline at end of file
index 0057df1..e309423 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8fb=['STRING','sequelize','name'];(function(_0xe45118,_0x5dffbc){var _0x15e15d=function(_0x17eaec){while(--_0x17eaec){_0xe45118['push'](_0xe45118['shift']());}};_0x15e15d(++_0x5dffbc);}(_0xa8fb,0x172));var _0xba8f=function(_0x243b59,_0x3f9495){_0x243b59=_0x243b59-0x0;var _0x3e1676=_0xa8fb[_0x243b59];return _0x3e1676;};'use strict';var Sequelize=require(_0xba8f('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0xba8f('0x1'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xba8f('0x2')]}};
\ No newline at end of file
+var _0x37b6=['name','sequelize','exports','STRING'];(function(_0x53bb25,_0x3cfaa1){var _0x354c11=function(_0x4a6002){while(--_0x4a6002){_0x53bb25['push'](_0x53bb25['shift']());}};_0x354c11(++_0x3cfaa1);}(_0x37b6,0x119));var _0x637b=function(_0x157f7f,_0x10a4fd){_0x157f7f=_0x157f7f-0x0;var _0x35d2c1=_0x37b6[_0x157f7f];return _0x35d2c1;};'use strict';var Sequelize=require(_0x637b('0x0'));module[_0x637b('0x1')]={'name':{'type':Sequelize[_0x637b('0x2')],'unique':_0x637b('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x637b('0x2')]}};
\ No newline at end of file
index 432bcc9..97a1c11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04f9=['find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','undefined','limit','set','apply','reject','save','update','then','get','Variables','UserProfileResource','destroy','sendStatus','error','name','send','index','map','Variable','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','count','include','rows','catch','show','params','length','includeAll','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection'];(function(_0x3e8bf8,_0x4e76d6){var _0x3391ce=function(_0x4f32d6){while(--_0x4f32d6){_0x3e8bf8['push'](_0x3e8bf8['shift']());}};_0x3391ce(++_0x4e76d6);}(_0x04f9,0x15c));var _0x904f=function(_0x3fd837,_0x4cb9a6){_0x3fd837=_0x3fd837-0x0;var _0x4f86d8=_0x04f9[_0x3fd837];return _0x4f86d8;};'use strict';var emlformat=require(_0x904f('0x0'));var rimraf=require(_0x904f('0x1'));var zipdir=require(_0x904f('0x2'));var jsonpatch=require(_0x904f('0x3'));var rp=require(_0x904f('0x4'));var moment=require('moment');var BPromise=require(_0x904f('0x5'));var Mustache=require(_0x904f('0x6'));var util=require('util');var path=require(_0x904f('0x7'));var sox=require(_0x904f('0x8'));var csv=require(_0x904f('0x9'));var ejs=require(_0x904f('0xa'));var fs=require('fs');var fs_extra=require(_0x904f('0xb'));var _=require(_0x904f('0xc'));var squel=require('squel');var crypto=require(_0x904f('0xd'));var jsforce=require(_0x904f('0xe'));var deskjs=require(_0x904f('0xf'));var toCsv=require(_0x904f('0x9'));var querystring=require(_0x904f('0x10'));var Papa=require(_0x904f('0x11'));var Redis=require(_0x904f('0x12'));var authService=require(_0x904f('0x13'));var qs=require(_0x904f('0x14'));var as=require(_0x904f('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x904f('0x16'))('api');var utils=require(_0x904f('0x17'));var config=require(_0x904f('0x18'));var licenseUtil=require(_0x904f('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x106738,_0x4728b){_0x4728b=_0x4728b||0xcc;return function(_0x46138b){if(_0x46138b){return _0x106738['sendStatus'](_0x4728b);}return _0x106738[_0x904f('0x1a')](_0x4728b)[_0x904f('0x1b')]();};}function respondWithResult(_0xc7a391,_0x2314ed){_0x2314ed=_0x2314ed||0xc8;return function(_0x37b035){if(_0x37b035){return _0xc7a391[_0x904f('0x1a')](_0x2314ed)[_0x904f('0x1c')](_0x37b035);}};}function respondWithFilteredResult(_0x194a42,_0x4593a6){return function(_0x259a0c){if(_0x259a0c){var _0x256185=typeof _0x4593a6[_0x904f('0x1d')]===_0x904f('0x1e')&&typeof _0x4593a6['limit']===_0x904f('0x1e');var _0x119c2b=_0x259a0c['count'];var _0x3168f3=_0x256185?0x0:_0x4593a6[_0x904f('0x1d')];var _0x247019=_0x256185?_0x259a0c['count']:_0x4593a6[_0x904f('0x1d')]+_0x4593a6[_0x904f('0x1f')];var _0xc2b1bd;if(_0x247019>=_0x119c2b){_0x247019=_0x119c2b;_0xc2b1bd=0xc8;}else{_0xc2b1bd=0xce;}_0x194a42[_0x904f('0x1a')](_0xc2b1bd);return _0x194a42[_0x904f('0x20')]('Content-Range',_0x3168f3+'-'+_0x247019+'/'+_0x119c2b)[_0x904f('0x1c')](_0x259a0c);}return null;};}function patchUpdates(_0x5e6fb6){return function(_0x1e3e79){try{jsonpatch[_0x904f('0x21')](_0x1e3e79,_0x5e6fb6,!![]);}catch(_0x82a6f0){return BPromise[_0x904f('0x22')](_0x82a6f0);}return _0x1e3e79[_0x904f('0x23')]();};}function saveUpdates(_0xc5578,_0x388159){return function(_0xb7e43){if(_0xb7e43){return _0xb7e43[_0x904f('0x24')](_0xc5578)['then'](function(_0x213eef){return _0x213eef;});}return null;};}function removeEntity(_0x9a967e,_0x2fbf80){return function(_0x501c89){if(_0x501c89){return _0x501c89['destroy']()[_0x904f('0x25')](function(){var _0x8e9d58=_0x501c89[_0x904f('0x26')]({'plain':!![]});var _0x5375ec=_0x904f('0x27');return db[_0x904f('0x28')][_0x904f('0x29')]({'where':{'type':_0x5375ec,'resourceId':_0x8e9d58['id']}})['then'](function(){return _0x501c89;});})['then'](function(){_0x9a967e[_0x904f('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x46a657,_0x11af34){return function(_0x445a55){if(!_0x445a55){_0x46a657[_0x904f('0x2a')](0x194);}return _0x445a55;};}function handleError(_0xf691af,_0x2fb103){_0x2fb103=_0x2fb103||0x1f4;return function(_0x209e28){logger[_0x904f('0x2b')](_0x209e28['stack']);if(_0x209e28[_0x904f('0x2c')]){delete _0x209e28[_0x904f('0x2c')];}_0xf691af[_0x904f('0x1a')](_0x2fb103)[_0x904f('0x2d')](_0x209e28);};}exports[_0x904f('0x2e')]=function(_0x37ad6b,_0x1d65d2){var _0x2a1bb7={},_0x1aa55a={},_0x254c37={'count':0x0,'rows':[]};var _0x3ac10a=_[_0x904f('0x2f')](db[_0x904f('0x30')][_0x904f('0x31')],function(_0x476612){return{'name':_0x476612[_0x904f('0x32')],'type':_0x476612[_0x904f('0x33')][_0x904f('0x34')]};});_0x1aa55a[_0x904f('0x35')]=_[_0x904f('0x2f')](_0x3ac10a,_0x904f('0x2c'));_0x1aa55a[_0x904f('0x36')]=_[_0x904f('0x37')](_0x37ad6b['query']);_0x1aa55a[_0x904f('0x38')]=_[_0x904f('0x39')](_0x1aa55a[_0x904f('0x35')],_0x1aa55a[_0x904f('0x36')]);_0x2a1bb7[_0x904f('0x3a')]=_[_0x904f('0x39')](_0x1aa55a[_0x904f('0x35')],qs[_0x904f('0x3b')](_0x37ad6b[_0x904f('0x36')]['fields']));_0x2a1bb7[_0x904f('0x3a')]=_0x2a1bb7['attributes']['length']?_0x2a1bb7[_0x904f('0x3a')]:_0x1aa55a[_0x904f('0x35')];if(!_0x37ad6b[_0x904f('0x36')][_0x904f('0x3c')](_0x904f('0x3d'))){_0x2a1bb7['limit']=qs[_0x904f('0x1f')](_0x37ad6b[_0x904f('0x36')][_0x904f('0x1f')]);_0x2a1bb7[_0x904f('0x1d')]=qs[_0x904f('0x1d')](_0x37ad6b[_0x904f('0x36')][_0x904f('0x1d')]);}_0x2a1bb7[_0x904f('0x3e')]=qs[_0x904f('0x3f')](_0x37ad6b[_0x904f('0x36')][_0x904f('0x3f')]);_0x2a1bb7[_0x904f('0x40')]=qs[_0x904f('0x38')](_[_0x904f('0x41')](_0x37ad6b[_0x904f('0x36')],_0x1aa55a['filters']),_0x3ac10a);if(_0x37ad6b[_0x904f('0x36')][_0x904f('0x42')]){_0x2a1bb7[_0x904f('0x40')]=_[_0x904f('0x43')](_0x2a1bb7[_0x904f('0x40')],{'$or':_[_0x904f('0x2f')](_0x3ac10a,function(_0x4e93d7){if(_0x4e93d7[_0x904f('0x33')]!==_0x904f('0x44')){var _0x76c4e7={};_0x76c4e7[_0x4e93d7[_0x904f('0x2c')]]={'$like':'%'+_0x37ad6b[_0x904f('0x36')][_0x904f('0x42')]+'%'};return _0x76c4e7;}})});}_0x2a1bb7=_['merge']({},_0x2a1bb7,_0x37ad6b[_0x904f('0x45')]);var _0x3a3c07={'where':_0x2a1bb7[_0x904f('0x40')]};return db[_0x904f('0x30')][_0x904f('0x46')](_0x3a3c07)[_0x904f('0x25')](function(_0x37e7d1){_0x254c37[_0x904f('0x46')]=_0x37e7d1;if(_0x37ad6b[_0x904f('0x36')]['includeAll']){_0x2a1bb7[_0x904f('0x47')]=[{'all':!![]}];}return db[_0x904f('0x30')]['findAll'](_0x2a1bb7);})[_0x904f('0x25')](function(_0x912801){_0x254c37[_0x904f('0x48')]=_0x912801;return _0x254c37;})[_0x904f('0x25')](respondWithFilteredResult(_0x1d65d2,_0x2a1bb7))[_0x904f('0x49')](handleError(_0x1d65d2,null));};exports[_0x904f('0x4a')]=function(_0x1eb4fe,_0x3e09c6){var _0x13875f={'raw':!![],'where':{'id':_0x1eb4fe[_0x904f('0x4b')]['id']}},_0x4dc9f2={};_0x4dc9f2[_0x904f('0x35')]=_[_0x904f('0x37')](db[_0x904f('0x30')][_0x904f('0x31')]);_0x4dc9f2[_0x904f('0x36')]=_[_0x904f('0x37')](_0x1eb4fe[_0x904f('0x36')]);_0x4dc9f2[_0x904f('0x38')]=_[_0x904f('0x39')](_0x4dc9f2[_0x904f('0x35')],_0x4dc9f2[_0x904f('0x36')]);_0x13875f[_0x904f('0x3a')]=_['intersection'](_0x4dc9f2[_0x904f('0x35')],qs[_0x904f('0x3b')](_0x1eb4fe[_0x904f('0x36')]['fields']));_0x13875f['attributes']=_0x13875f[_0x904f('0x3a')][_0x904f('0x4c')]?_0x13875f[_0x904f('0x3a')]:_0x4dc9f2['model'];if(_0x1eb4fe[_0x904f('0x36')][_0x904f('0x4d')]){_0x13875f[_0x904f('0x47')]=[{'all':!![]}];}_0x13875f=_[_0x904f('0x43')]({},_0x13875f,_0x1eb4fe['options']);return db['Variable']['find'](_0x13875f)[_0x904f('0x25')](handleEntityNotFound(_0x3e09c6,null))['then'](respondWithResult(_0x3e09c6,null))[_0x904f('0x49')](handleError(_0x3e09c6,null));};exports[_0x904f('0x4e')]=function(_0x397607,_0x36dd96){return db[_0x904f('0x30')][_0x904f('0x4e')](_0x397607['body'],{})['then'](function(_0x58211f){var _0xbb6494=_0x397607['user'][_0x904f('0x26')]({'plain':!![]});if(!_0xbb6494)throw new Error(_0x904f('0x4f'));if(_0xbb6494['role']===_0x904f('0x50')){var _0x4c828a=_0x58211f[_0x904f('0x26')]({'plain':!![]});var _0x4fc6e3=_0x904f('0x27');return db[_0x904f('0x51')][_0x904f('0x52')]({'where':{'name':_0x4fc6e3,'userProfileId':_0xbb6494['userProfileId']},'raw':!![]})['then'](function(_0x498ee3){if(_0x498ee3&&_0x498ee3[_0x904f('0x53')]===0x0){return db[_0x904f('0x28')][_0x904f('0x4e')]({'name':_0x4c828a[_0x904f('0x2c')],'resourceId':_0x4c828a['id'],'type':_0x498ee3[_0x904f('0x2c')],'sectionId':_0x498ee3['id']},{})[_0x904f('0x25')](function(){return _0x58211f;});}else{return _0x58211f;}})[_0x904f('0x49')](function(_0x34069e){logger[_0x904f('0x2b')](_0x904f('0x54'),_0x34069e);throw _0x34069e;});}return _0x58211f;})[_0x904f('0x25')](respondWithResult(_0x36dd96,0xc9))[_0x904f('0x49')](handleError(_0x36dd96,null));};exports[_0x904f('0x24')]=function(_0x5c7dcf,_0x5a3540){if(_0x5c7dcf[_0x904f('0x55')]['id']){delete _0x5c7dcf['body']['id'];}return db[_0x904f('0x30')]['find']({'where':{'id':_0x5c7dcf[_0x904f('0x4b')]['id']}})[_0x904f('0x25')](handleEntityNotFound(_0x5a3540,null))[_0x904f('0x25')](saveUpdates(_0x5c7dcf['body'],null))[_0x904f('0x25')](respondWithResult(_0x5a3540,null))['catch'](handleError(_0x5a3540,null));};exports[_0x904f('0x29')]=function(_0x2a17d5,_0x184378){return db[_0x904f('0x30')][_0x904f('0x52')]({'where':{'id':_0x2a17d5[_0x904f('0x4b')]['id']}})[_0x904f('0x25')](handleEntityNotFound(_0x184378,null))[_0x904f('0x25')](removeEntity(_0x184378,null))[_0x904f('0x49')](handleError(_0x184378,null));};
\ No newline at end of file
+var _0x1652=['filter','merge','VIRTUAL','options','Variable','includeAll','findAll','catch','params','rawAttributes','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','end','status','offset','undefined','limit','count','set','json','apply','reject','save','update','destroy','then','get','Variables','sendStatus','stack','name','index','map','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick'];(function(_0x1cab63,_0x214a95){var _0x6870be=function(_0x37d082){while(--_0x37d082){_0x1cab63['push'](_0x1cab63['shift']());}};_0x6870be(++_0x214a95);}(_0x1652,0x67));var _0x2165=function(_0x4b54fb,_0x2150e4){_0x4b54fb=_0x4b54fb-0x0;var _0x375eb4=_0x1652[_0x4b54fb];return _0x375eb4;};'use strict';var emlformat=require(_0x2165('0x0'));var rimraf=require(_0x2165('0x1'));var zipdir=require(_0x2165('0x2'));var jsonpatch=require(_0x2165('0x3'));var rp=require(_0x2165('0x4'));var moment=require('moment');var BPromise=require(_0x2165('0x5'));var Mustache=require(_0x2165('0x6'));var util=require(_0x2165('0x7'));var path=require(_0x2165('0x8'));var sox=require(_0x2165('0x9'));var csv=require(_0x2165('0xa'));var ejs=require(_0x2165('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2165('0xc'));var squel=require(_0x2165('0xd'));var crypto=require(_0x2165('0xe'));var jsforce=require(_0x2165('0xf'));var deskjs=require(_0x2165('0x10'));var toCsv=require(_0x2165('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x2165('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x2165('0x12'));var as=require(_0x2165('0x13'));var hardwareService=require(_0x2165('0x14'));var logger=require(_0x2165('0x15'))('api');var utils=require(_0x2165('0x16'));var config=require(_0x2165('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x2165('0x18'))['db'];function respondWithStatusCode(_0x593760,_0x4e5e29){_0x4e5e29=_0x4e5e29||0xcc;return function(_0x574135){if(_0x574135){return _0x593760['sendStatus'](_0x4e5e29);}return _0x593760['status'](_0x4e5e29)[_0x2165('0x19')]();};}function respondWithResult(_0x49f2ea,_0x40a477){_0x40a477=_0x40a477||0xc8;return function(_0x2e05a5){if(_0x2e05a5){return _0x49f2ea[_0x2165('0x1a')](_0x40a477)['json'](_0x2e05a5);}};}function respondWithFilteredResult(_0xb44795,_0x1c363a){return function(_0x77cf1){if(_0x77cf1){var _0x23a71a=typeof _0x1c363a[_0x2165('0x1b')]===_0x2165('0x1c')&&typeof _0x1c363a[_0x2165('0x1d')]===_0x2165('0x1c');var _0x442fa4=_0x77cf1['count'];var _0x5ecf78=_0x23a71a?0x0:_0x1c363a[_0x2165('0x1b')];var _0x18b28f=_0x23a71a?_0x77cf1[_0x2165('0x1e')]:_0x1c363a[_0x2165('0x1b')]+_0x1c363a['limit'];var _0x19c65a;if(_0x18b28f>=_0x442fa4){_0x18b28f=_0x442fa4;_0x19c65a=0xc8;}else{_0x19c65a=0xce;}_0xb44795[_0x2165('0x1a')](_0x19c65a);return _0xb44795[_0x2165('0x1f')]('Content-Range',_0x5ecf78+'-'+_0x18b28f+'/'+_0x442fa4)[_0x2165('0x20')](_0x77cf1);}return null;};}function patchUpdates(_0x59ac7e){return function(_0x159845){try{jsonpatch[_0x2165('0x21')](_0x159845,_0x59ac7e,!![]);}catch(_0x51344a){return BPromise[_0x2165('0x22')](_0x51344a);}return _0x159845[_0x2165('0x23')]();};}function saveUpdates(_0x283b65,_0x444229){return function(_0xdb389f){if(_0xdb389f){return _0xdb389f[_0x2165('0x24')](_0x283b65)['then'](function(_0x12da07){return _0x12da07;});}return null;};}function removeEntity(_0x1a62d7,_0x15c587){return function(_0x328938){if(_0x328938){return _0x328938[_0x2165('0x25')]()[_0x2165('0x26')](function(){var _0x21df48=_0x328938[_0x2165('0x27')]({'plain':!![]});var _0x4d7adb=_0x2165('0x28');return db['UserProfileResource'][_0x2165('0x25')]({'where':{'type':_0x4d7adb,'resourceId':_0x21df48['id']}})[_0x2165('0x26')](function(){return _0x328938;});})[_0x2165('0x26')](function(){_0x1a62d7['status'](0xcc)[_0x2165('0x19')]();});}};}function handleEntityNotFound(_0x194251,_0x178db5){return function(_0x1a8278){if(!_0x1a8278){_0x194251[_0x2165('0x29')](0x194);}return _0x1a8278;};}function handleError(_0x337021,_0x525747){_0x525747=_0x525747||0x1f4;return function(_0x51d9f3){logger['error'](_0x51d9f3[_0x2165('0x2a')]);if(_0x51d9f3[_0x2165('0x2b')]){delete _0x51d9f3[_0x2165('0x2b')];}_0x337021[_0x2165('0x1a')](_0x525747)['send'](_0x51d9f3);};}exports[_0x2165('0x2c')]=function(_0x522a9f,_0x3f6fd3){var _0x5281d2={},_0x5e8b1b={},_0x12e65c={'count':0x0,'rows':[]};var _0x3b6f89=_[_0x2165('0x2d')](db['Variable']['rawAttributes'],function(_0x29945b){return{'name':_0x29945b[_0x2165('0x2e')],'type':_0x29945b[_0x2165('0x2f')][_0x2165('0x30')]};});_0x5e8b1b[_0x2165('0x31')]=_[_0x2165('0x2d')](_0x3b6f89,'name');_0x5e8b1b['query']=_[_0x2165('0x32')](_0x522a9f[_0x2165('0x33')]);_0x5e8b1b[_0x2165('0x34')]=_[_0x2165('0x35')](_0x5e8b1b[_0x2165('0x31')],_0x5e8b1b[_0x2165('0x33')]);_0x5281d2[_0x2165('0x36')]=_['intersection'](_0x5e8b1b[_0x2165('0x31')],qs[_0x2165('0x37')](_0x522a9f['query'][_0x2165('0x37')]));_0x5281d2[_0x2165('0x36')]=_0x5281d2['attributes'][_0x2165('0x38')]?_0x5281d2[_0x2165('0x36')]:_0x5e8b1b[_0x2165('0x31')];if(!_0x522a9f[_0x2165('0x33')][_0x2165('0x39')](_0x2165('0x3a'))){_0x5281d2[_0x2165('0x1d')]=qs[_0x2165('0x1d')](_0x522a9f['query'][_0x2165('0x1d')]);_0x5281d2[_0x2165('0x1b')]=qs[_0x2165('0x1b')](_0x522a9f[_0x2165('0x33')][_0x2165('0x1b')]);}_0x5281d2[_0x2165('0x3b')]=qs['sort'](_0x522a9f[_0x2165('0x33')][_0x2165('0x3c')]);_0x5281d2[_0x2165('0x3d')]=qs[_0x2165('0x34')](_[_0x2165('0x3e')](_0x522a9f[_0x2165('0x33')],_0x5e8b1b[_0x2165('0x34')]),_0x3b6f89);if(_0x522a9f[_0x2165('0x33')][_0x2165('0x3f')]){_0x5281d2[_0x2165('0x3d')]=_[_0x2165('0x40')](_0x5281d2[_0x2165('0x3d')],{'$or':_[_0x2165('0x2d')](_0x3b6f89,function(_0x2de05a){if(_0x2de05a[_0x2165('0x2f')]!==_0x2165('0x41')){var _0x2183fd={};_0x2183fd[_0x2de05a[_0x2165('0x2b')]]={'$like':'%'+_0x522a9f['query'][_0x2165('0x3f')]+'%'};return _0x2183fd;}})});}_0x5281d2=_['merge']({},_0x5281d2,_0x522a9f[_0x2165('0x42')]);var _0x4124af={'where':_0x5281d2['where']};return db[_0x2165('0x43')][_0x2165('0x1e')](_0x4124af)[_0x2165('0x26')](function(_0x3ab3dc){_0x12e65c[_0x2165('0x1e')]=_0x3ab3dc;if(_0x522a9f[_0x2165('0x33')][_0x2165('0x44')]){_0x5281d2['include']=[{'all':!![]}];}return db[_0x2165('0x43')][_0x2165('0x45')](_0x5281d2);})[_0x2165('0x26')](function(_0xf4c869){_0x12e65c['rows']=_0xf4c869;return _0x12e65c;})[_0x2165('0x26')](respondWithFilteredResult(_0x3f6fd3,_0x5281d2))[_0x2165('0x46')](handleError(_0x3f6fd3,null));};exports['show']=function(_0x107cbf,_0x2976e4){var _0x40fdad={'raw':!![],'where':{'id':_0x107cbf[_0x2165('0x47')]['id']}},_0xf1025a={};_0xf1025a[_0x2165('0x31')]=_[_0x2165('0x32')](db[_0x2165('0x43')][_0x2165('0x48')]);_0xf1025a[_0x2165('0x33')]=_[_0x2165('0x32')](_0x107cbf['query']);_0xf1025a[_0x2165('0x34')]=_[_0x2165('0x35')](_0xf1025a['model'],_0xf1025a[_0x2165('0x33')]);_0x40fdad[_0x2165('0x36')]=_[_0x2165('0x35')](_0xf1025a[_0x2165('0x31')],qs['fields'](_0x107cbf[_0x2165('0x33')][_0x2165('0x37')]));_0x40fdad[_0x2165('0x36')]=_0x40fdad[_0x2165('0x36')][_0x2165('0x38')]?_0x40fdad['attributes']:_0xf1025a[_0x2165('0x31')];if(_0x107cbf[_0x2165('0x33')][_0x2165('0x44')]){_0x40fdad[_0x2165('0x49')]=[{'all':!![]}];}_0x40fdad=_['merge']({},_0x40fdad,_0x107cbf[_0x2165('0x42')]);return db[_0x2165('0x43')][_0x2165('0x4a')](_0x40fdad)[_0x2165('0x26')](handleEntityNotFound(_0x2976e4,null))[_0x2165('0x26')](respondWithResult(_0x2976e4,null))[_0x2165('0x46')](handleError(_0x2976e4,null));};exports['create']=function(_0x519048,_0x21b498){return db[_0x2165('0x43')][_0x2165('0x4b')](_0x519048[_0x2165('0x4c')],{})[_0x2165('0x26')](function(_0x39e919){var _0x36fd94=_0x519048[_0x2165('0x4d')]['get']({'plain':!![]});if(!_0x36fd94)throw new Error(_0x2165('0x4e'));if(_0x36fd94[_0x2165('0x4f')]===_0x2165('0x4d')){var _0x1fddd1=_0x39e919[_0x2165('0x27')]({'plain':!![]});var _0xdc508a=_0x2165('0x28');return db['UserProfileSection'][_0x2165('0x4a')]({'where':{'name':_0xdc508a,'userProfileId':_0x36fd94['userProfileId']},'raw':!![]})[_0x2165('0x26')](function(_0x335e5e){if(_0x335e5e&&_0x335e5e[_0x2165('0x50')]===0x0){return db['UserProfileResource']['create']({'name':_0x1fddd1[_0x2165('0x2b')],'resourceId':_0x1fddd1['id'],'type':_0x335e5e[_0x2165('0x2b')],'sectionId':_0x335e5e['id']},{})['then'](function(){return _0x39e919;});}else{return _0x39e919;}})['catch'](function(_0xccfd60){logger[_0x2165('0x51')](_0x2165('0x52'),_0xccfd60);throw _0xccfd60;});}return _0x39e919;})[_0x2165('0x26')](respondWithResult(_0x21b498,0xc9))[_0x2165('0x46')](handleError(_0x21b498,null));};exports['update']=function(_0x2d1eb2,_0x439e59){if(_0x2d1eb2[_0x2165('0x4c')]['id']){delete _0x2d1eb2[_0x2165('0x4c')]['id'];}return db[_0x2165('0x43')][_0x2165('0x4a')]({'where':{'id':_0x2d1eb2[_0x2165('0x47')]['id']}})[_0x2165('0x26')](handleEntityNotFound(_0x439e59,null))['then'](saveUpdates(_0x2d1eb2[_0x2165('0x4c')],null))[_0x2165('0x26')](respondWithResult(_0x439e59,null))[_0x2165('0x46')](handleError(_0x439e59,null));};exports[_0x2165('0x25')]=function(_0xa82f4c,_0x3937c0){return db['Variable'][_0x2165('0x4a')]({'where':{'id':_0xa82f4c[_0x2165('0x47')]['id']}})[_0x2165('0x26')](handleEntityNotFound(_0x3937c0,null))[_0x2165('0x26')](removeEntity(_0x3937c0,null))['catch'](handleError(_0x3937c0,null));};
\ No newline at end of file
index 6648d5c..a0afb3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4220=['api','bluebird','request-promise','../../config/environment','exports','define','Variable','util','../../config/logger'];(function(_0x15c421,_0x6366f7){var _0x5e5ed5=function(_0x206e66){while(--_0x206e66){_0x15c421['push'](_0x15c421['shift']());}};_0x5e5ed5(++_0x6366f7);}(_0x4220,0xbb));var _0x0422=function(_0xe69c16,_0x1188ec){_0xe69c16=_0xe69c16-0x0;var _0x5150c3=_0x4220[_0xe69c16];return _0x5150c3;};'use strict';var _=require('lodash');var util=require(_0x0422('0x0'));var logger=require(_0x0422('0x1'))(_0x0422('0x2'));var moment=require('moment');var BPromise=require(_0x0422('0x3'));var rp=require(_0x0422('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x0422('0x5'));var attributes=require('./variable.attributes');module[_0x0422('0x6')]=function(_0x36007b,_0x2e0708){return _0x36007b[_0x0422('0x7')](_0x0422('0x8'),attributes,{'tableName':'tools_variables','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb57f=['rimraf','./variable.attributes','exports','define','tools_variables','lodash','util','../../config/logger','moment','bluebird','request-promise','path'];(function(_0x41ca16,_0x29cb26){var _0x47de94=function(_0x245bb1){while(--_0x245bb1){_0x41ca16['push'](_0x41ca16['shift']());}};_0x47de94(++_0x29cb26);}(_0xb57f,0xdd));var _0xfb57=function(_0x17de69,_0x569ea9){_0x17de69=_0x17de69-0x0;var _0x21ab60=_0xb57f[_0x17de69];return _0x21ab60;};'use strict';var _=require(_0xfb57('0x0'));var util=require(_0xfb57('0x1'));var logger=require(_0xfb57('0x2'))('api');var moment=require(_0xfb57('0x3'));var BPromise=require(_0xfb57('0x4'));var rp=require(_0xfb57('0x5'));var fs=require('fs');var path=require(_0xfb57('0x6'));var rimraf=require(_0xfb57('0x7'));var config=require('../../config/environment');var attributes=require(_0xfb57('0x8'));module[_0xfb57('0x9')]=function(_0x500fa3,_0x2e05f8){return _0x500fa3[_0xfb57('0xa')]('Variable',attributes,{'tableName':_0xfb57('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 84b3c1f..ad22af2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['options','where','attributes','include','map','model','lodash','util','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','Variable,\x20%s,\x20%s','request\x20sent','debug','Variable,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','ShowVariable','Variable','find'];(function(_0x9fdca,_0x364493){var _0x4037a3=function(_0x241c66){while(--_0x241c66){_0x9fdca['push'](_0x9fdca['shift']());}};_0x4037a3(++_0x364493);}(_0x55ca,0x126));var _0xa55c=function(_0x13b330,_0x297092){_0x13b330=_0x13b330-0x0;var _0x1f666c=_0x55ca[_0x13b330];return _0x1f666c;};'use strict';var _=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa55c('0x2'));var db=require(_0xa55c('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xa55c('0x4'))(_0xa55c('0x5'));var config=require(_0xa55c('0x6'));var jayson=require(_0xa55c('0x7'));var client=jayson[_0xa55c('0x8')][_0xa55c('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x36b623,_0x4d0624,_0x2121fd){return new BPromise(function(_0x2537f0,_0x57e069){return client[_0xa55c('0xa')](_0x36b623,_0x2121fd)[_0xa55c('0xb')](function(_0x52a3bc){logger['info'](_0xa55c('0xc'),_0x4d0624,_0xa55c('0xd'));logger[_0xa55c('0xe')](_0xa55c('0xf'),_0x4d0624,_0xa55c('0xd'),JSON[_0xa55c('0x10')](_0x52a3bc));if(_0x52a3bc[_0xa55c('0x11')]){if(_0x52a3bc[_0xa55c('0x11')][_0xa55c('0x12')]===0x1f4){logger[_0xa55c('0x11')]('Variable,\x20%s,\x20%s',_0x4d0624,_0x52a3bc['error'][_0xa55c('0x13')]);return _0x57e069(_0x52a3bc['error']['message']);}logger['error'](_0xa55c('0xc'),_0x4d0624,_0x52a3bc[_0xa55c('0x11')][_0xa55c('0x13')]);return _0x2537f0(_0x52a3bc[_0xa55c('0x11')][_0xa55c('0x13')]);}else{logger[_0xa55c('0x14')]('Variable,\x20%s,\x20%s',_0x4d0624,_0xa55c('0xd'));_0x2537f0(_0x52a3bc[_0xa55c('0x15')][_0xa55c('0x13')]);}})[_0xa55c('0x16')](function(_0x1c4cfd){logger[_0xa55c('0x11')](_0xa55c('0xc'),_0x4d0624,_0x1c4cfd);_0x57e069(_0x1c4cfd);});});}exports[_0xa55c('0x17')]=function(_0x24783b){var _0x4cee3c=this;return new Promise(function(_0x3d4c9e,_0x104a99){return db[_0xa55c('0x18')][_0xa55c('0x19')]({'raw':_0x24783b[_0xa55c('0x1a')]?_0x24783b[_0xa55c('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x24783b['options']?_0x24783b[_0xa55c('0x1a')][_0xa55c('0x1b')]||null:null,'attributes':_0x24783b[_0xa55c('0x1a')]?_0x24783b['options'][_0xa55c('0x1c')]||null:null,'include':_0x24783b[_0xa55c('0x1a')]?_0x24783b['options'][_0xa55c('0x1d')]?_[_0xa55c('0x1e')](_0x24783b[_0xa55c('0x1a')][_0xa55c('0x1d')],function(_0x234372){return{'model':db[_0x234372['model']],'as':_0x234372['as'],'attributes':_0x234372[_0xa55c('0x1c')],'include':_0x234372['include']?_['map'](_0x234372['include'],function(_0x19ae88){return{'model':db[_0x19ae88['model']],'as':_0x19ae88['as'],'attributes':_0x19ae88[_0xa55c('0x1c')],'include':_0x19ae88[_0xa55c('0x1d')]?_[_0xa55c('0x1e')](_0x19ae88[_0xa55c('0x1d')],function(_0x2313a9){return{'model':db[_0x2313a9[_0xa55c('0x1f')]],'as':_0x2313a9['as'],'attributes':_0x2313a9[_0xa55c('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xa55c('0xb')](function(_0x192df2){logger[_0xa55c('0x14')](_0xa55c('0x17'),_0x24783b);logger['debug'](_0xa55c('0x17'),_0x24783b,JSON[_0xa55c('0x10')](_0x192df2));_0x3d4c9e(_0x192df2);})[_0xa55c('0x16')](function(_0x906caa){logger['error'](_0xa55c('0x17'),_0x906caa[_0xa55c('0x13')],_0x24783b);_0x104a99(_0x4cee3c[_0xa55c('0x11')](0x1f4,_0x906caa[_0xa55c('0x13')]));});});};
\ No newline at end of file
+var _0x5fc3=['info','request\x20sent','debug','stringify','error','code','message','Variable,\x20%s,\x20%s','result','catch','ShowVariable','find','options','where','attributes','include','map','model','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','request','then'];(function(_0x4dcecc,_0x3865b9){var _0x2aa658=function(_0x334d85){while(--_0x334d85){_0x4dcecc['push'](_0x4dcecc['shift']());}};_0x2aa658(++_0x3865b9);}(_0x5fc3,0xa8));var _0x35fc=function(_0x245afe,_0x319cde){_0x245afe=_0x245afe-0x0;var _0x4eefde=_0x5fc3[_0x245afe];return _0x4eefde;};'use strict';var _=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var moment=require('moment');var BPromise=require(_0x35fc('0x2'));var rs=require(_0x35fc('0x3'));var fs=require('fs');var Redis=require(_0x35fc('0x4'));var db=require(_0x35fc('0x5'))['db'];var utils=require(_0x35fc('0x6'));var logger=require('../../config/logger')(_0x35fc('0x7'));var config=require(_0x35fc('0x8'));var jayson=require(_0x35fc('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x19a0d1,_0x508b32,_0x16e153){return new BPromise(function(_0x27524f,_0xc72d93){return client[_0x35fc('0xa')](_0x19a0d1,_0x16e153)[_0x35fc('0xb')](function(_0xf9d3a6){logger[_0x35fc('0xc')]('Variable,\x20%s,\x20%s',_0x508b32,_0x35fc('0xd'));logger[_0x35fc('0xe')]('Variable,\x20%s,\x20%s,\x20%s',_0x508b32,_0x35fc('0xd'),JSON[_0x35fc('0xf')](_0xf9d3a6));if(_0xf9d3a6['error']){if(_0xf9d3a6[_0x35fc('0x10')][_0x35fc('0x11')]===0x1f4){logger['error']('Variable,\x20%s,\x20%s',_0x508b32,_0xf9d3a6[_0x35fc('0x10')]['message']);return _0xc72d93(_0xf9d3a6[_0x35fc('0x10')][_0x35fc('0x12')]);}logger[_0x35fc('0x10')](_0x35fc('0x13'),_0x508b32,_0xf9d3a6[_0x35fc('0x10')]['message']);return _0x27524f(_0xf9d3a6['error']['message']);}else{logger['info'](_0x35fc('0x13'),_0x508b32,_0x35fc('0xd'));_0x27524f(_0xf9d3a6[_0x35fc('0x14')][_0x35fc('0x12')]);}})[_0x35fc('0x15')](function(_0x1121fa){logger['error'](_0x35fc('0x13'),_0x508b32,_0x1121fa);_0xc72d93(_0x1121fa);});});}exports[_0x35fc('0x16')]=function(_0x553677){var _0x41e165=this;return new Promise(function(_0x363e47,_0x2e513b){return db['Variable'][_0x35fc('0x17')]({'raw':_0x553677[_0x35fc('0x18')]?_0x553677[_0x35fc('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x553677[_0x35fc('0x18')]?_0x553677[_0x35fc('0x18')][_0x35fc('0x19')]||null:null,'attributes':_0x553677[_0x35fc('0x18')]?_0x553677[_0x35fc('0x18')][_0x35fc('0x1a')]||null:null,'include':_0x553677[_0x35fc('0x18')]?_0x553677[_0x35fc('0x18')][_0x35fc('0x1b')]?_[_0x35fc('0x1c')](_0x553677['options'][_0x35fc('0x1b')],function(_0xd5399f){return{'model':db[_0xd5399f[_0x35fc('0x1d')]],'as':_0xd5399f['as'],'attributes':_0xd5399f[_0x35fc('0x1a')],'include':_0xd5399f[_0x35fc('0x1b')]?_['map'](_0xd5399f[_0x35fc('0x1b')],function(_0x4c587a){return{'model':db[_0x4c587a['model']],'as':_0x4c587a['as'],'attributes':_0x4c587a[_0x35fc('0x1a')],'include':_0x4c587a[_0x35fc('0x1b')]?_[_0x35fc('0x1c')](_0x4c587a['include'],function(_0x4086e9){return{'model':db[_0x4086e9['model']],'as':_0x4086e9['as'],'attributes':_0x4086e9[_0x35fc('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x35fc('0xb')](function(_0x5cb986){logger['info'](_0x35fc('0x16'),_0x553677);logger['debug'](_0x35fc('0x16'),_0x553677,JSON[_0x35fc('0xf')](_0x5cb986));_0x363e47(_0x5cb986);})['catch'](function(_0x26b7cb){logger[_0x35fc('0x10')](_0x35fc('0x16'),_0x26b7cb[_0x35fc('0x12')],_0x553677);_0x2e513b(_0x41e165[_0x35fc('0x10')](0x1f4,_0x26b7cb[_0x35fc('0x12')]));});});};
\ No newline at end of file
index 5dedc7d..f478745 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4adc=['../../components/auth/service','./version.controller','get','index','/fetch','isAuthenticated','canUpdate','/reset','reset','/pull','pull','/restart','restart','/migrations','migrations','exports','express','Router'];(function(_0x1b70e3,_0x3a15b1){var _0x1452ab=function(_0x692883){while(--_0x692883){_0x1b70e3['push'](_0x1b70e3['shift']());}};_0x1452ab(++_0x3a15b1);}(_0x4adc,0x1d2));var _0xc4ad=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x4adc[_0x167cc1];return _0x10bc4b;};'use strict';var express=require(_0xc4ad('0x0'));var router=express[_0xc4ad('0x1')]();var auth=require(_0xc4ad('0x2'));var controller=require(_0xc4ad('0x3'));router[_0xc4ad('0x4')]('/',controller[_0xc4ad('0x5')]);router[_0xc4ad('0x4')](_0xc4ad('0x6'),auth[_0xc4ad('0x7')](),auth[_0xc4ad('0x8')](),controller['fetch']);router[_0xc4ad('0x4')](_0xc4ad('0x9'),auth[_0xc4ad('0x7')](),auth[_0xc4ad('0x8')](),controller[_0xc4ad('0xa')]);router['get'](_0xc4ad('0xb'),auth['isAuthenticated'](),auth[_0xc4ad('0x8')](),controller[_0xc4ad('0xc')]);router['get'](_0xc4ad('0xd'),auth[_0xc4ad('0x7')](),controller[_0xc4ad('0xe')]);router[_0xc4ad('0x4')](_0xc4ad('0xf'),controller[_0xc4ad('0x10')]);module[_0xc4ad('0x11')]=router;
\ No newline at end of file
+var _0xd3b3=['../../components/auth/service','get','index','/fetch','isAuthenticated','canUpdate','fetch','/reset','/pull','/restart','restart','Router'];(function(_0x4dfe67,_0x2ad336){var _0x40bf2b=function(_0x20fe18){while(--_0x20fe18){_0x4dfe67['push'](_0x4dfe67['shift']());}};_0x40bf2b(++_0x2ad336);}(_0xd3b3,0x113));var _0x3d3b=function(_0x72ee00,_0x4f9a0c){_0x72ee00=_0x72ee00-0x0;var _0x4da881=_0xd3b3[_0x72ee00];return _0x4da881;};'use strict';var express=require('express');var router=express[_0x3d3b('0x0')]();var auth=require(_0x3d3b('0x1'));var controller=require('./version.controller');router[_0x3d3b('0x2')]('/',controller[_0x3d3b('0x3')]);router[_0x3d3b('0x2')](_0x3d3b('0x4'),auth[_0x3d3b('0x5')](),auth[_0x3d3b('0x6')](),controller[_0x3d3b('0x7')]);router['get'](_0x3d3b('0x8'),auth['isAuthenticated'](),auth['canUpdate'](),controller['reset']);router[_0x3d3b('0x2')](_0x3d3b('0x9'),auth['isAuthenticated'](),auth[_0x3d3b('0x6')](),controller['pull']);router[_0x3d3b('0x2')](_0x3d3b('0xa'),auth['isAuthenticated'](),controller[_0x3d3b('0xb')]);router[_0x3d3b('0x2')]('/migrations',controller['migrations']);module['exports']=router;
\ No newline at end of file
index cf97c63..21ae763 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa14=['sort','sequelize','Migration','constructor','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','server','map','.js','then','last','catch','UniqueConstraintError','Database\x20already\x20up-to-date','umzug','path','lodash','compare-versions','child_process','exec','../../mysqldb','../../config/environment','../../config/pm2','../../config/logger','update','simple-git','root','index','exports','version','query','latest','fetch','status','json','origin','master','error','info','git\x20fetch','git\x20fetch\x20origin\x20master','reset','--hard','FETCH_HEAD','git\x20reset\x20--hard\x20FETCH_HEAD','pull','npm\x20install\x20--production','restart','motion2','Your\x20system\x20has\x20been\x20restart\x20successfully','migrations','readdirSync','join','length','replace','push'];(function(_0x2773f1,_0x50d045){var _0x47f446=function(_0x42307f){while(--_0x42307f){_0x2773f1['push'](_0x2773f1['shift']());}};_0x47f446(++_0x50d045);}(_0xaa14,0xe9));var _0x4aa1=function(_0x4ab7a5,_0x35eb99){_0x4ab7a5=_0x4ab7a5-0x0;var _0x5f5013=_0xaa14[_0x4ab7a5];return _0x5f5013;};'use strict';var Umzug=require(_0x4aa1('0x0'));var path=require(_0x4aa1('0x1'));var fs=require('fs');var _=require(_0x4aa1('0x2'));var pkginfo=require('pkginfo')(module,'version');var compareVersions=require(_0x4aa1('0x3'));var exec=require(_0x4aa1('0x4'))[_0x4aa1('0x5')];var db=require(_0x4aa1('0x6'))['db'];var config=require(_0x4aa1('0x7'));var pm2=require(_0x4aa1('0x8'));var logger=require(_0x4aa1('0x9'))(_0x4aa1('0xa'));var git=require(_0x4aa1('0xb'))(config[_0x4aa1('0xc')]);exports[_0x4aa1('0xd')]=function(_0x5efadc,_0x11cc73){var _0x4da0b5={'current':module[_0x4aa1('0xe')][_0x4aa1('0xf')],'phonebar':0x2};if(_0x5efadc[_0x4aa1('0x10')]&&_0x5efadc[_0x4aa1('0x10')][_0x4aa1('0x11')]){return git[_0x4aa1('0x12')]()['tags'](function(_0x5e057f,_0x336074){_0x4da0b5[_0x4aa1('0x11')]=(_0x5e057f?module[_0x4aa1('0xe')][_0x4aa1('0xf')]:_0x336074[_0x4aa1('0x11')])||'2.0.0';return _0x11cc73['status'](0xc8)['json'](_0x4da0b5);});}else{return _0x11cc73[_0x4aa1('0x13')](0xc8)[_0x4aa1('0x14')](_0x4da0b5);}};exports[_0x4aa1('0x12')]=function(_0x5e1108,_0xb02af8){return git[_0x4aa1('0x12')]([_0x4aa1('0x15'),_0x4aa1('0x16')],function(_0x3281b7){if(_0x3281b7){logger[_0x4aa1('0x17')](_0x3281b7);return _0xb02af8[_0x4aa1('0x13')](0x1f4)[_0x4aa1('0x14')](_0x3281b7);}logger[_0x4aa1('0x18')](_0x4aa1('0x19'));return _0xb02af8[_0x4aa1('0x13')](0xc8)['json']({'output':_0x4aa1('0x1a')});});};exports[_0x4aa1('0x1b')]=function(_0x18c8aa,_0x4f8f00){return git[_0x4aa1('0x1b')]([_0x4aa1('0x1c'),_0x4aa1('0x1d')],function(_0x5a674b){if(_0x5a674b){logger[_0x4aa1('0x17')](_0x5a674b);return _0x4f8f00[_0x4aa1('0x13')](0x1f4)[_0x4aa1('0x14')](_0x5a674b);}logger[_0x4aa1('0x18')](_0x4aa1('0x1e'));return _0x4f8f00['status'](0xc8)['json']({'output':'git\x20reset\x20--hard'});});};exports[_0x4aa1('0x1f')]=function(_0x419486,_0x13e61a){exec(_0x4aa1('0x20'),function(_0x353154,_0x551d1d,_0x3c3da0){logger['info'](_0x551d1d);logger['info'](_0x3c3da0);if(_0x353154){logger[_0x4aa1('0x17')](_0x353154);return _0x13e61a['status'](0x1f4)[_0x4aa1('0x14')](_0x353154);}return _0x13e61a[_0x4aa1('0x13')](0xc8)[_0x4aa1('0x14')]({'output':_0x551d1d});});};exports[_0x4aa1('0x21')]=function(_0x5cbbf9,_0x498cfa){return pm2[_0x4aa1('0x21')](_0x4aa1('0x22'))['then'](function(_0x349d66){logger[_0x4aa1('0x18')]('pm2\x20restart\x20motion\x20%s',_0x349d66);return _0x498cfa['status'](0xc8)[_0x4aa1('0x14')]({'output':_0x4aa1('0x23')});})['catch'](function(_0x18f294){logger['error'](_0x18f294);return _0x498cfa[_0x4aa1('0x13')](0x1f4)[_0x4aa1('0x14')](_0x18f294);});};exports[_0x4aa1('0x24')]=function(_0x100af4,_0x587aca){var _0x75d1da=fs[_0x4aa1('0x25')](path[_0x4aa1('0x26')](config['root'],'server','migrations'));var _0x1da15a=[];for(var _0x569259=0x0;_0x569259<_0x75d1da[_0x4aa1('0x27')];_0x569259++){var _0x54cb39=_0x75d1da[_0x569259][_0x4aa1('0x28')]('.js','');if(compareVersions(module[_0x4aa1('0xe')][_0x4aa1('0xf')],_0x54cb39)===-0x1){_0x1da15a[_0x4aa1('0x29')](_0x54cb39);}}if(_0x1da15a[_0x4aa1('0x27')]){var _0x134496=_0x1da15a[_0x4aa1('0x2a')](compareVersions);var _0x195fb7=new Umzug({'storage':_0x4aa1('0x2b'),'storageOptions':{'model':db[_0x4aa1('0x2c')],'modelName':_0x4aa1('0x2c'),'columnName':_0x4aa1('0xf')},'migrations':{'params':[db[_0x4aa1('0x2b')]['getQueryInterface'](),db[_0x4aa1('0x2b')][_0x4aa1('0x2d')],function(){throw new Error(_0x4aa1('0x2e'));}],'path':path[_0x4aa1('0x26')](config['root'],_0x4aa1('0x2f'),'migrations'),'pattern':/\.js$/}});_0x195fb7['up']({'migrations':_[_0x4aa1('0x30')](_0x134496,function(_0x2d072d){return _0x2d072d+_0x4aa1('0x31');})})[_0x4aa1('0x32')](function(){return _0x587aca[_0x4aa1('0x13')](0xc8)[_0x4aa1('0x14')]({'output':'Database\x20migrated\x20successfully\x20from\x20version\x20'+module[_0x4aa1('0xe')][_0x4aa1('0xf')]+'\x20to\x20'+_[_0x4aa1('0x33')](_0x134496),'migrations':_['join'](_0x134496)});})[_0x4aa1('0x34')](function(_0x59f708){if(_0x59f708 instanceof db[_0x4aa1('0x2b')][_0x4aa1('0x35')]){return _0x587aca[_0x4aa1('0x13')](0xc8)[_0x4aa1('0x14')]({'output':_0x4aa1('0x36')});}else{return _0x587aca[_0x4aa1('0x13')](0x1f4)['json'](_0x59f708);}});}else{return _0x587aca[_0x4aa1('0x13')](0xc8)[_0x4aa1('0x14')]({'output':_0x4aa1('0x36')});}};
\ No newline at end of file
+var _0xe04e=['Migration','getQueryInterface','constructor','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','map','last','umzug','path','lodash','pkginfo','version','compare-versions','child_process','exec','../../mysqldb','../../config/environment','../../config/pm2','../../config/logger','update','simple-git','index','query','latest','fetch','tags','exports','2.0.0','status','json','origin','master','error','info','git\x20fetch','reset','--hard','FETCH_HEAD','git\x20reset\x20--hard\x20FETCH_HEAD','git\x20reset\x20--hard','pull','npm\x20install\x20--production','restart','motion2','then','catch','migrations','readdirSync','join','root','server','.js','push','sort','sequelize'];(function(_0x4385b4,_0x42a716){var _0x140528=function(_0x20591e){while(--_0x20591e){_0x4385b4['push'](_0x4385b4['shift']());}};_0x140528(++_0x42a716);}(_0xe04e,0x114));var _0xee04=function(_0x12cdf2,_0x436faa){_0x12cdf2=_0x12cdf2-0x0;var _0x94e4bd=_0xe04e[_0x12cdf2];return _0x94e4bd;};'use strict';var Umzug=require(_0xee04('0x0'));var path=require(_0xee04('0x1'));var fs=require('fs');var _=require(_0xee04('0x2'));var pkginfo=require(_0xee04('0x3'))(module,_0xee04('0x4'));var compareVersions=require(_0xee04('0x5'));var exec=require(_0xee04('0x6'))[_0xee04('0x7')];var db=require(_0xee04('0x8'))['db'];var config=require(_0xee04('0x9'));var pm2=require(_0xee04('0xa'));var logger=require(_0xee04('0xb'))(_0xee04('0xc'));var git=require(_0xee04('0xd'))(config['root']);exports[_0xee04('0xe')]=function(_0x1591df,_0x5401a6){var _0x48c915={'current':module['exports'][_0xee04('0x4')],'phonebar':0x2};if(_0x1591df[_0xee04('0xf')]&&_0x1591df[_0xee04('0xf')][_0xee04('0x10')]){return git[_0xee04('0x11')]()[_0xee04('0x12')](function(_0x33477c,_0x52a398){_0x48c915['latest']=(_0x33477c?module[_0xee04('0x13')]['version']:_0x52a398[_0xee04('0x10')])||_0xee04('0x14');return _0x5401a6[_0xee04('0x15')](0xc8)[_0xee04('0x16')](_0x48c915);});}else{return _0x5401a6['status'](0xc8)[_0xee04('0x16')](_0x48c915);}};exports[_0xee04('0x11')]=function(_0x516e6f,_0x4748c6){return git[_0xee04('0x11')]([_0xee04('0x17'),_0xee04('0x18')],function(_0x19c77d){if(_0x19c77d){logger[_0xee04('0x19')](_0x19c77d);return _0x4748c6[_0xee04('0x15')](0x1f4)[_0xee04('0x16')](_0x19c77d);}logger[_0xee04('0x1a')](_0xee04('0x1b'));return _0x4748c6[_0xee04('0x15')](0xc8)[_0xee04('0x16')]({'output':'git\x20fetch\x20origin\x20master'});});};exports[_0xee04('0x1c')]=function(_0x2ab91f,_0x4947a0){return git[_0xee04('0x1c')]([_0xee04('0x1d'),_0xee04('0x1e')],function(_0x11e275){if(_0x11e275){logger['error'](_0x11e275);return _0x4947a0[_0xee04('0x15')](0x1f4)[_0xee04('0x16')](_0x11e275);}logger[_0xee04('0x1a')](_0xee04('0x1f'));return _0x4947a0[_0xee04('0x15')](0xc8)[_0xee04('0x16')]({'output':_0xee04('0x20')});});};exports[_0xee04('0x21')]=function(_0x3eec89,_0x1ba76e){exec(_0xee04('0x22'),function(_0x1d889d,_0x157b93,_0xadb6f6){logger[_0xee04('0x1a')](_0x157b93);logger[_0xee04('0x1a')](_0xadb6f6);if(_0x1d889d){logger[_0xee04('0x19')](_0x1d889d);return _0x1ba76e[_0xee04('0x15')](0x1f4)[_0xee04('0x16')](_0x1d889d);}return _0x1ba76e[_0xee04('0x15')](0xc8)[_0xee04('0x16')]({'output':_0x157b93});});};exports['restart']=function(_0x3014cb,_0x5d1ee8){return pm2[_0xee04('0x23')](_0xee04('0x24'))[_0xee04('0x25')](function(_0x5c123e){logger[_0xee04('0x1a')]('pm2\x20restart\x20motion\x20%s',_0x5c123e);return _0x5d1ee8[_0xee04('0x15')](0xc8)['json']({'output':'Your\x20system\x20has\x20been\x20restart\x20successfully'});})[_0xee04('0x26')](function(_0x22bac5){logger[_0xee04('0x19')](_0x22bac5);return _0x5d1ee8[_0xee04('0x15')](0x1f4)[_0xee04('0x16')](_0x22bac5);});};exports[_0xee04('0x27')]=function(_0x4877e6,_0x414b99){var _0x2678f9=fs[_0xee04('0x28')](path[_0xee04('0x29')](config[_0xee04('0x2a')],_0xee04('0x2b'),_0xee04('0x27')));var _0xd219c7=[];for(var _0x2ac1ff=0x0;_0x2ac1ff<_0x2678f9['length'];_0x2ac1ff++){var _0x1187fe=_0x2678f9[_0x2ac1ff]['replace'](_0xee04('0x2c'),'');if(compareVersions(module[_0xee04('0x13')][_0xee04('0x4')],_0x1187fe)===-0x1){_0xd219c7[_0xee04('0x2d')](_0x1187fe);}}if(_0xd219c7['length']){var _0x1ba122=_0xd219c7[_0xee04('0x2e')](compareVersions);var _0x375294=new Umzug({'storage':_0xee04('0x2f'),'storageOptions':{'model':db[_0xee04('0x30')],'modelName':_0xee04('0x30'),'columnName':_0xee04('0x4')},'migrations':{'params':[db[_0xee04('0x2f')][_0xee04('0x31')](),db[_0xee04('0x2f')][_0xee04('0x32')],function(){throw new Error(_0xee04('0x33'));}],'path':path['join'](config[_0xee04('0x2a')],'server',_0xee04('0x27')),'pattern':/\.js$/}});_0x375294['up']({'migrations':_[_0xee04('0x34')](_0x1ba122,function(_0xb44896){return _0xb44896+_0xee04('0x2c');})})[_0xee04('0x25')](function(){return _0x414b99[_0xee04('0x15')](0xc8)[_0xee04('0x16')]({'output':'Database\x20migrated\x20successfully\x20from\x20version\x20'+module[_0xee04('0x13')][_0xee04('0x4')]+'\x20to\x20'+_[_0xee04('0x35')](_0x1ba122),'migrations':_[_0xee04('0x29')](_0x1ba122)});})[_0xee04('0x26')](function(_0x3b9c85){if(_0x3b9c85 instanceof db[_0xee04('0x2f')]['UniqueConstraintError']){return _0x414b99[_0xee04('0x15')](0xc8)[_0xee04('0x16')]({'output':'Database\x20already\x20up-to-date'});}else{return _0x414b99[_0xee04('0x15')](0x1f4)['json'](_0x3b9c85);}});}else{return _0x414b99['status'](0xc8)[_0xee04('0x16')]({'output':'Database\x20already\x20up-to-date'});}};
\ No newline at end of file
index 28a7682..9f04d63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd447=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceAgentReport.controller','get','index','isAuthenticated','describe','put','delete','/:id','destroy','exports'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xd447,0xbe));var _0x7d44=function(_0x5a7708,_0x2ae50f){_0x5a7708=_0x5a7708-0x0;var _0x5e3d5a=_0xd447[_0x5a7708];return _0x5e3d5a;};'use strict';var multer=require('multer');var util=require(_0x7d44('0x0'));var path=require(_0x7d44('0x1'));var timeout=require(_0x7d44('0x2'));var express=require(_0x7d44('0x3'));var router=express[_0x7d44('0x4')]();var fs_extra=require(_0x7d44('0x5'));var auth=require(_0x7d44('0x6'));var interaction=require(_0x7d44('0x7'));var config=require(_0x7d44('0x8'));var controller=require(_0x7d44('0x9'));router[_0x7d44('0xa')]('/',auth['isAuthenticated'](),controller[_0x7d44('0xb')]);router[_0x7d44('0xa')]('/describe',auth[_0x7d44('0xc')](),controller[_0x7d44('0xd')]);router[_0x7d44('0xa')]('/:id',auth[_0x7d44('0xc')](),controller['show']);router['post']('/',auth[_0x7d44('0xc')](),controller['create']);router[_0x7d44('0xe')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0x7d44('0xf')](_0x7d44('0x10'),auth['isAuthenticated'](),controller[_0x7d44('0x11')]);module[_0x7d44('0x12')]=router;
\ No newline at end of file
+var _0x633a=['../../config/environment','get','isAuthenticated','/describe','describe','/:id','show','post','create','put','delete','multer','util','connect-timeout','express','fs-extra','../../components/interaction/service'];(function(_0x26d526,_0x25536b){var _0x4945bb=function(_0x968ab6){while(--_0x968ab6){_0x26d526['push'](_0x26d526['shift']());}};_0x4945bb(++_0x25536b);}(_0x633a,0xd7));var _0xa633=function(_0x44135a,_0x51b809){_0x44135a=_0x44135a-0x0;var _0x418199=_0x633a[_0x44135a];return _0x418199;};'use strict';var multer=require(_0xa633('0x0'));var util=require(_0xa633('0x1'));var path=require('path');var timeout=require(_0xa633('0x2'));var express=require(_0xa633('0x3'));var router=express['Router']();var fs_extra=require(_0xa633('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xa633('0x5'));var config=require(_0xa633('0x6'));var controller=require('./voiceAgentReport.controller');router[_0xa633('0x7')]('/',auth[_0xa633('0x8')](),controller['index']);router[_0xa633('0x7')](_0xa633('0x9'),auth['isAuthenticated'](),controller[_0xa633('0xa')]);router[_0xa633('0x7')](_0xa633('0xb'),auth[_0xa633('0x8')](),controller[_0xa633('0xc')]);router[_0xa633('0xd')]('/',auth['isAuthenticated'](),controller[_0xa633('0xe')]);router[_0xa633('0xf')](_0xa633('0xb'),auth[_0xa633('0x8')](),controller['update']);router[_0xa633('0x10')](_0xa633('0xb'),auth[_0xa633('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 5800334..0e79949 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55f1=['STRING','DATE','INTEGER','BOOLEAN','FORWARD,\x20BLIND,\x20ATTENDED','sequelize'];(function(_0x151178,_0x22d5e7){var _0x5339bb=function(_0x2a7bc2){while(--_0x2a7bc2){_0x151178['push'](_0x151178['shift']());}};_0x5339bb(++_0x22d5e7);}(_0x55f1,0x9b));var _0x155f=function(_0x245e1c,_0x1213a8){_0x245e1c=_0x245e1c-0x0;var _0x4308ca=_0x55f1[_0x245e1c];return _0x4308ca;};'use strict';var Sequelize=require(_0x155f('0x0'));module['exports']={'type':{'type':Sequelize[_0x155f('0x1')]},'uniqueid':{'type':Sequelize[_0x155f('0x1')]},'calleridnum':{'type':Sequelize[_0x155f('0x1')]},'calleridname':{'type':Sequelize[_0x155f('0x1')]},'queue':{'type':Sequelize[_0x155f('0x1')]},'interface':{'type':Sequelize[_0x155f('0x1')]},'membername':{'type':Sequelize[_0x155f('0x1')]},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize['DATE']},'agentcompleteAt':{'type':Sequelize[_0x155f('0x2')]},'agentringnoanswerAt':{'type':Sequelize['DATE']},'agentdumpAt':{'type':Sequelize[_0x155f('0x2')]},'holdtime':{'type':Sequelize[_0x155f('0x3')]},'agentcomplete':{'type':Sequelize[_0x155f('0x4')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0x155f('0x4')],'defaultValue':![]},'agentdump':{'type':Sequelize[_0x155f('0x4')],'defaultValue':![]},'talktime':{'type':Sequelize[_0x155f('0x3')]},'agentacw':{'type':Sequelize[_0x155f('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x155f('0x3')]},'reason':{'type':Sequelize[_0x155f('0x1')]},'lastevent':{'type':Sequelize[_0x155f('0x1')]},'channel':{'type':Sequelize[_0x155f('0x1')]},'channelstate':{'type':Sequelize[_0x155f('0x3')]},'channelstatedesc':{'type':Sequelize[_0x155f('0x1')]},'connectedlinenum':{'type':Sequelize[_0x155f('0x1')]},'connectedlinename':{'type':Sequelize[_0x155f('0x1')]},'language':{'type':Sequelize[_0x155f('0x1')]},'accountcode':{'type':Sequelize[_0x155f('0x1')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x155f('0x1')]},'priority':{'type':Sequelize[_0x155f('0x1')]},'destchannel':{'type':Sequelize[_0x155f('0x1')]},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize[_0x155f('0x1')]},'destcalleridname':{'type':Sequelize[_0x155f('0x1')]},'destconnectedlinenum':{'type':Sequelize[_0x155f('0x1')]},'destconnectedlinename':{'type':Sequelize[_0x155f('0x1')]},'destlanguage':{'type':Sequelize[_0x155f('0x1')]},'destaccountcode':{'type':Sequelize[_0x155f('0x1')]},'destcontext':{'type':Sequelize[_0x155f('0x1')]},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0x155f('0x1')]},'destuniqueid':{'type':Sequelize[_0x155f('0x1')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize['STRING']},'answeredelsewheremembername':{'type':Sequelize[_0x155f('0x1')]},'transfer':{'type':Sequelize[_0x155f('0x4')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x155f('0x1')],'comment':_0x155f('0x5')},'transferexten':{'type':Sequelize[_0x155f('0x1')]},'transferuniqueid':{'type':Sequelize[_0x155f('0x1')]},'agententerreason':{'type':Sequelize[_0x155f('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xefe2=['BOOLEAN','sequelize','exports','STRING','DATE','INTEGER'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xefe2,0xd9));var _0x2efe=function(_0x417593,_0x1c318b){_0x417593=_0x417593-0x0;var _0x359e45=_0xefe2[_0x417593];return _0x359e45;};'use strict';var Sequelize=require(_0x2efe('0x0'));module[_0x2efe('0x1')]={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x2efe('0x2')]},'calleridnum':{'type':Sequelize[_0x2efe('0x2')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x2efe('0x2')]},'interface':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0x2efe('0x2')]},'agentcalledAt':{'type':Sequelize[_0x2efe('0x3')]},'agentconnectAt':{'type':Sequelize[_0x2efe('0x3')]},'agentcompleteAt':{'type':Sequelize[_0x2efe('0x3')]},'agentringnoanswerAt':{'type':Sequelize[_0x2efe('0x3')]},'agentdumpAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize[_0x2efe('0x4')]},'agentcomplete':{'type':Sequelize[_0x2efe('0x5')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0x2efe('0x5')],'defaultValue':![]},'agentdump':{'type':Sequelize[_0x2efe('0x5')],'defaultValue':![]},'talktime':{'type':Sequelize['INTEGER']},'agentacw':{'type':Sequelize[_0x2efe('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x2efe('0x4')]},'reason':{'type':Sequelize[_0x2efe('0x2')]},'lastevent':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize[_0x2efe('0x4')]},'channelstatedesc':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize[_0x2efe('0x2')]},'language':{'type':Sequelize[_0x2efe('0x2')]},'accountcode':{'type':Sequelize[_0x2efe('0x2')]},'context':{'type':Sequelize[_0x2efe('0x2')]},'exten':{'type':Sequelize[_0x2efe('0x2')]},'priority':{'type':Sequelize[_0x2efe('0x2')]},'destchannel':{'type':Sequelize[_0x2efe('0x2')]},'destchannelstate':{'type':Sequelize[_0x2efe('0x4')]},'destchannelstatedesc':{'type':Sequelize[_0x2efe('0x2')]},'destcalleridnum':{'type':Sequelize[_0x2efe('0x2')]},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize[_0x2efe('0x2')]},'destlanguage':{'type':Sequelize[_0x2efe('0x2')]},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0x2efe('0x2')]},'destpriority':{'type':Sequelize['STRING']},'destuniqueid':{'type':Sequelize[_0x2efe('0x2')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0x2efe('0x2')]},'answeredelsewheremembername':{'type':Sequelize['STRING']},'transfer':{'type':Sequelize[_0x2efe('0x5')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x2efe('0x2')],'comment':'FORWARD,\x20BLIND,\x20ATTENDED'},'transferexten':{'type':Sequelize[_0x2efe('0x2')]},'transferuniqueid':{'type':Sequelize['STRING']},'agententerreason':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 59a97c3..1fbca53 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(_0x20ef64,_0x4a8fe9){var _0x3707d8=function(_0x5b9a88){while(--_0x5b9a88){_0x20ef64['push'](_0x20ef64['shift']());}};_0x3707d8(++_0x4a8fe9);}(_0xa9e0,0x123));var _0x0a9e=function(_0x9aada2,_0xd2d349){_0x9aada2=_0x9aada2-0x0;var _0x196dff=_0xa9e0[_0x9aada2];return _0x196dff;};'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(_0x87b0ff,_0x314389){var _0x3bc0b2=function(_0x41682b){while(--_0x41682b){_0x87b0ff['push'](_0x87b0ff['shift']());}};_0x3bc0b2(++_0x314389);}(_0xa9e0,0x123));var _0x0a9e=function(_0x55f8b4,_0x43f30d){_0x55f8b4=_0x55f8b4-0x0;var _0x2475f9=_0xa9e0[_0x55f8b4];return _0x2475f9;};'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 fde2663..6b2bb9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ab0=['moment','bluebird','rimraf','../../config/environment','exports','define','VoiceAgentReport','report_agent','destuniqueid','util','../../config/logger','api'];(function(_0x20f7b0,_0x376c05){var _0x5d31e9=function(_0x5dc16c){while(--_0x5dc16c){_0x20f7b0['push'](_0x20f7b0['shift']());}};_0x5d31e9(++_0x376c05);}(_0x4ab0,0xd5));var _0x04ab=function(_0x58f460,_0x510933){_0x58f460=_0x58f460-0x0;var _0x548965=_0x4ab0[_0x58f460];return _0x548965;};'use strict';var _=require('lodash');var util=require(_0x04ab('0x0'));var logger=require(_0x04ab('0x1'))(_0x04ab('0x2'));var moment=require(_0x04ab('0x3'));var BPromise=require(_0x04ab('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x04ab('0x5'));var config=require(_0x04ab('0x6'));var attributes=require('./voiceAgentReport.attributes');module[_0x04ab('0x7')]=function(_0x2c5730,_0x4edd2e){return _0x2c5730[_0x04ab('0x8')](_0x04ab('0x9'),attributes,{'tableName':_0x04ab('0xa'),'paranoid':![],'indexes':[{'fields':['uniqueid',_0x04ab('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x78d3=['exports','report_agent','destuniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceAgentReport.attributes'];(function(_0x3a4156,_0x1b44b2){var _0x3cb632=function(_0x4b9c5){while(--_0x4b9c5){_0x3a4156['push'](_0x3a4156['shift']());}};_0x3cb632(++_0x1b44b2);}(_0x78d3,0x73));var _0x378d=function(_0x29d06f,_0x41fd3c){_0x29d06f=_0x29d06f-0x0;var _0x10b1e5=_0x78d3[_0x29d06f];return _0x10b1e5;};'use strict';var _=require(_0x378d('0x0'));var util=require(_0x378d('0x1'));var logger=require(_0x378d('0x2'))(_0x378d('0x3'));var moment=require(_0x378d('0x4'));var BPromise=require(_0x378d('0x5'));var rp=require(_0x378d('0x6'));var fs=require('fs');var path=require(_0x378d('0x7'));var rimraf=require(_0x378d('0x8'));var config=require(_0x378d('0x9'));var attributes=require(_0x378d('0xa'));module[_0x378d('0xb')]=function(_0xc18c0b,_0x59117c){return _0xc18c0b['define']('VoiceAgentReport',attributes,{'tableName':_0x378d('0xc'),'paranoid':![],'indexes':[{'fields':['uniqueid',_0x378d('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 813610c..81ea50d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64ba=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','debug','VoiceAgentReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','VoiceAgentReport,\x20%s,\x20%s','message','result','CreateVoiceAgentReport','VoiceAgentReport','body','options','catch','UpdateVoiceAgentReport','where','attributes','limit','lodash','util','moment','bluebird'];(function(_0x533e4e,_0x4eba54){var _0x1f14bb=function(_0x33a485){while(--_0x33a485){_0x533e4e['push'](_0x533e4e['shift']());}};_0x1f14bb(++_0x4eba54);}(_0x64ba,0x1d8));var _0xa64b=function(_0x2b9b7f,_0x4d47df){_0x2b9b7f=_0x2b9b7f-0x0;var _0x4ed19a=_0x64ba[_0x2b9b7f];return _0x4ed19a;};'use strict';var _=require(_0xa64b('0x0'));var util=require(_0xa64b('0x1'));var moment=require(_0xa64b('0x2'));var BPromise=require(_0xa64b('0x3'));var rs=require(_0xa64b('0x4'));var fs=require('fs');var Redis=require(_0xa64b('0x5'));var db=require(_0xa64b('0x6'))['db'];var utils=require(_0xa64b('0x7'));var logger=require(_0xa64b('0x8'))(_0xa64b('0x9'));var config=require(_0xa64b('0xa'));var jayson=require('jayson/promise');var client=jayson[_0xa64b('0xb')][_0xa64b('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x3d487b,_0x1456be,_0x4f8226){return new BPromise(function(_0x3a2797,_0x5e2be8){return client[_0xa64b('0xd')](_0x3d487b,_0x4f8226)[_0xa64b('0xe')](function(_0x504e94){logger[_0xa64b('0xf')]('VoiceAgentReport,\x20%s,\x20%s',_0x1456be,'request\x20sent');logger[_0xa64b('0x10')](_0xa64b('0x11'),_0x1456be,_0xa64b('0x12'),JSON[_0xa64b('0x13')](_0x504e94));if(_0x504e94[_0xa64b('0x14')]){if(_0x504e94['error'][_0xa64b('0x15')]===0x1f4){logger[_0xa64b('0x14')](_0xa64b('0x16'),_0x1456be,_0x504e94['error']['message']);return _0x5e2be8(_0x504e94['error']['message']);}logger['error']('VoiceAgentReport,\x20%s,\x20%s',_0x1456be,_0x504e94[_0xa64b('0x14')][_0xa64b('0x17')]);return _0x3a2797(_0x504e94[_0xa64b('0x14')]['message']);}else{logger[_0xa64b('0xf')](_0xa64b('0x16'),_0x1456be,_0xa64b('0x12'));_0x3a2797(_0x504e94[_0xa64b('0x18')][_0xa64b('0x17')]);}})['catch'](function(_0x28f5f0){logger[_0xa64b('0x14')](_0xa64b('0x16'),_0x1456be,_0x28f5f0);_0x5e2be8(_0x28f5f0);});});}exports[_0xa64b('0x19')]=function(_0x13f1fc){var _0x36f356=this;return new Promise(function(_0xa9838c,_0x17ce20){return db[_0xa64b('0x1a')]['create'](_0x13f1fc[_0xa64b('0x1b')],{'raw':_0x13f1fc['options']?_0x13f1fc[_0xa64b('0x1c')]['raw']===undefined?!![]:![]:!![]})[_0xa64b('0xe')](function(_0x46a836){logger[_0xa64b('0xf')](_0xa64b('0x19'),_0x13f1fc);logger[_0xa64b('0x10')](_0xa64b('0x19'),_0x13f1fc,JSON[_0xa64b('0x13')](_0x46a836));_0xa9838c(_0x46a836);})[_0xa64b('0x1d')](function(_0x580a83){logger['error'](_0xa64b('0x19'),_0x580a83[_0xa64b('0x17')],_0x13f1fc);_0x17ce20(_0x36f356['error'](0x1f4,_0x580a83['message']));});});};exports[_0xa64b('0x1e')]=function(_0x3622bc){var _0x4fbaa7=this;return new Promise(function(_0x18067a,_0x5902d4){return db[_0xa64b('0x1a')]['update'](_0x3622bc[_0xa64b('0x1b')],{'raw':_0x3622bc['options']?_0x3622bc['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3622bc[_0xa64b('0x1c')]?_0x3622bc[_0xa64b('0x1c')][_0xa64b('0x1f')]||null:null,'attributes':_0x3622bc[_0xa64b('0x1c')]?_0x3622bc[_0xa64b('0x1c')][_0xa64b('0x20')]||null:null,'limit':_0x3622bc[_0xa64b('0x1c')]?_0x3622bc[_0xa64b('0x1c')][_0xa64b('0x21')]||null:null})[_0xa64b('0xe')](function(_0x1cef12){logger[_0xa64b('0xf')](_0xa64b('0x1e'),_0x3622bc);logger[_0xa64b('0x10')](_0xa64b('0x1e'),_0x3622bc,JSON[_0xa64b('0x13')](_0x1cef12));_0x18067a(_0x1cef12);})['catch'](function(_0xc71032){logger[_0xa64b('0x14')](_0xa64b('0x1e'),_0xc71032[_0xa64b('0x17')],_0x3622bc);_0x5902d4(_0x4fbaa7[_0xa64b('0x14')](0x1f4,_0xc71032[_0xa64b('0x17')]));});});};
\ No newline at end of file
+var _0x8ba3=['request\x20sent','error','code','message','result','catch','VoiceAgentReport','body','options','raw','CreateVoiceAgentReport','stringify','UpdateVoiceAgentReport','where','attributes','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','VoiceAgentReport,\x20%s,\x20%s','debug'];(function(_0x141689,_0x18d74a){var _0x39f301=function(_0x294d07){while(--_0x294d07){_0x141689['push'](_0x141689['shift']());}};_0x39f301(++_0x18d74a);}(_0x8ba3,0xd6));var _0x38ba=function(_0x516a71,_0x149687){_0x516a71=_0x516a71-0x0;var _0x120734=_0x8ba3[_0x516a71];return _0x120734;};'use strict';var _=require(_0x38ba('0x0'));var util=require(_0x38ba('0x1'));var moment=require(_0x38ba('0x2'));var BPromise=require(_0x38ba('0x3'));var rs=require(_0x38ba('0x4'));var fs=require('fs');var Redis=require(_0x38ba('0x5'));var db=require(_0x38ba('0x6'))['db'];var utils=require(_0x38ba('0x7'));var logger=require(_0x38ba('0x8'))('rpc');var config=require('../../config/environment');var jayson=require(_0x38ba('0x9'));var client=jayson[_0x38ba('0xa')][_0x38ba('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x112633,_0x215872,_0x38ce6f){return new BPromise(function(_0x467a7b,_0x44c985){return client[_0x38ba('0xc')](_0x112633,_0x38ce6f)[_0x38ba('0xd')](function(_0x2920){logger[_0x38ba('0xe')](_0x38ba('0xf'),_0x215872,'request\x20sent');logger[_0x38ba('0x10')]('VoiceAgentReport,\x20%s,\x20%s,\x20%s',_0x215872,_0x38ba('0x11'),JSON['stringify'](_0x2920));if(_0x2920[_0x38ba('0x12')]){if(_0x2920[_0x38ba('0x12')][_0x38ba('0x13')]===0x1f4){logger[_0x38ba('0x12')]('VoiceAgentReport,\x20%s,\x20%s',_0x215872,_0x2920['error'][_0x38ba('0x14')]);return _0x44c985(_0x2920[_0x38ba('0x12')]['message']);}logger[_0x38ba('0x12')](_0x38ba('0xf'),_0x215872,_0x2920[_0x38ba('0x12')][_0x38ba('0x14')]);return _0x467a7b(_0x2920[_0x38ba('0x12')][_0x38ba('0x14')]);}else{logger[_0x38ba('0xe')](_0x38ba('0xf'),_0x215872,_0x38ba('0x11'));_0x467a7b(_0x2920[_0x38ba('0x15')][_0x38ba('0x14')]);}})[_0x38ba('0x16')](function(_0xdad451){logger['error'](_0x38ba('0xf'),_0x215872,_0xdad451);_0x44c985(_0xdad451);});});}exports['CreateVoiceAgentReport']=function(_0x1a607f){var _0x65a8d=this;return new Promise(function(_0x32977e,_0x332d2f){return db[_0x38ba('0x17')]['create'](_0x1a607f[_0x38ba('0x18')],{'raw':_0x1a607f[_0x38ba('0x19')]?_0x1a607f[_0x38ba('0x19')][_0x38ba('0x1a')]===undefined?!![]:![]:!![]})['then'](function(_0x550926){logger[_0x38ba('0xe')](_0x38ba('0x1b'),_0x1a607f);logger['debug'](_0x38ba('0x1b'),_0x1a607f,JSON[_0x38ba('0x1c')](_0x550926));_0x32977e(_0x550926);})[_0x38ba('0x16')](function(_0x1c1b19){logger['error'](_0x38ba('0x1b'),_0x1c1b19[_0x38ba('0x14')],_0x1a607f);_0x332d2f(_0x65a8d[_0x38ba('0x12')](0x1f4,_0x1c1b19[_0x38ba('0x14')]));});});};exports[_0x38ba('0x1d')]=function(_0x72fa82){var _0x3e5d2a=this;return new Promise(function(_0x279d49,_0x5798b9){return db['VoiceAgentReport']['update'](_0x72fa82[_0x38ba('0x18')],{'raw':_0x72fa82[_0x38ba('0x19')]?_0x72fa82[_0x38ba('0x19')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x72fa82[_0x38ba('0x19')]?_0x72fa82[_0x38ba('0x19')][_0x38ba('0x1e')]||null:null,'attributes':_0x72fa82['options']?_0x72fa82[_0x38ba('0x19')][_0x38ba('0x1f')]||null:null,'limit':_0x72fa82[_0x38ba('0x19')]?_0x72fa82[_0x38ba('0x19')][_0x38ba('0x20')]||null:null})[_0x38ba('0xd')](function(_0x276ecc){logger[_0x38ba('0xe')](_0x38ba('0x1d'),_0x72fa82);logger[_0x38ba('0x10')](_0x38ba('0x1d'),_0x72fa82,JSON['stringify'](_0x276ecc));_0x279d49(_0x276ecc);})[_0x38ba('0x16')](function(_0x5db8c7){logger[_0x38ba('0x12')](_0x38ba('0x1d'),_0x5db8c7['message'],_0x72fa82);_0x5798b9(_0x3e5d2a[_0x38ba('0x12')](0x1f4,_0x5db8c7[_0x38ba('0x14')]));});});};
\ No newline at end of file
index ed89d35..66dcae9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57d4=['../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceCallReport.controller','get','isAuthenticated','index','/describe','/:id','show','put','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra'];(function(_0x4bfac3,_0x58324d){var _0x15f0f2=function(_0xf0c511){while(--_0xf0c511){_0x4bfac3['push'](_0x4bfac3['shift']());}};_0x15f0f2(++_0x58324d);}(_0x57d4,0x78));var _0x457d=function(_0x31dcc9,_0x476fc7){_0x31dcc9=_0x31dcc9-0x0;var _0x324aec=_0x57d4[_0x31dcc9];return _0x324aec;};'use strict';var multer=require(_0x457d('0x0'));var util=require(_0x457d('0x1'));var path=require('path');var timeout=require(_0x457d('0x2'));var express=require(_0x457d('0x3'));var router=express[_0x457d('0x4')]();var fs_extra=require(_0x457d('0x5'));var auth=require(_0x457d('0x6'));var interaction=require(_0x457d('0x7'));var config=require(_0x457d('0x8'));var controller=require(_0x457d('0x9'));router[_0x457d('0xa')]('/',auth[_0x457d('0xb')](),controller[_0x457d('0xc')]);router['get'](_0x457d('0xd'),auth[_0x457d('0xb')](),controller['describe']);router['get'](_0x457d('0xe'),auth[_0x457d('0xb')](),controller[_0x457d('0xf')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x457d('0x10')](_0x457d('0xe'),auth[_0x457d('0xb')](),controller[_0x457d('0x11')]);router[_0x457d('0x12')](_0x457d('0xe'),auth[_0x457d('0xb')](),controller[_0x457d('0x13')]);module[_0x457d('0x14')]=router;
\ No newline at end of file
+var _0x0fda=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','/describe','isAuthenticated','describe','/:id','show','post','create','put','update','delete','destroy','multer','path','connect-timeout','express'];(function(_0x442ef4,_0x145157){var _0x5db4dd=function(_0x495e20){while(--_0x495e20){_0x442ef4['push'](_0x442ef4['shift']());}};_0x5db4dd(++_0x145157);}(_0x0fda,0x1a0));var _0xa0fd=function(_0x5de927,_0x393d2b){_0x5de927=_0x5de927-0x0;var _0x44987b=_0x0fda[_0x5de927];return _0x44987b;};'use strict';var multer=require(_0xa0fd('0x0'));var util=require('util');var path=require(_0xa0fd('0x1'));var timeout=require(_0xa0fd('0x2'));var express=require(_0xa0fd('0x3'));var router=express[_0xa0fd('0x4')]();var fs_extra=require(_0xa0fd('0x5'));var auth=require(_0xa0fd('0x6'));var interaction=require(_0xa0fd('0x7'));var config=require('../../config/environment');var controller=require('./voiceCallReport.controller');router[_0xa0fd('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0xa0fd('0x8')](_0xa0fd('0x9'),auth[_0xa0fd('0xa')](),controller[_0xa0fd('0xb')]);router['get'](_0xa0fd('0xc'),auth[_0xa0fd('0xa')](),controller[_0xa0fd('0xd')]);router[_0xa0fd('0xe')]('/',auth['isAuthenticated'](),controller[_0xa0fd('0xf')]);router[_0xa0fd('0x10')](_0xa0fd('0xc'),auth['isAuthenticated'](),controller[_0xa0fd('0x11')]);router[_0xa0fd('0x12')](_0xa0fd('0xc'),auth[_0xa0fd('0xa')](),controller[_0xa0fd('0x13')]);module['exports']=router;
\ No newline at end of file
index 0c7df44..253f1bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3719=['INTEGER','sequelize','STRING','ENUM','inbound','internal','outbound','outbound-fax','dialer','DATE'];(function(_0x313c4a,_0x9fc91e){var _0x3de44a=function(_0x48fa3d){while(--_0x48fa3d){_0x313c4a['push'](_0x313c4a['shift']());}};_0x3de44a(++_0x9fc91e);}(_0x3719,0x123));var _0x9371=function(_0xed9b68,_0x33f3ba){_0xed9b68=_0xed9b68-0x0;var _0x4da1b1=_0x3719[_0xed9b68];return _0x4da1b1;};'use strict';var Sequelize=require(_0x9371('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x9371('0x1')]},'type':{'type':Sequelize[_0x9371('0x2')](_0x9371('0x3'),_0x9371('0x4'),_0x9371('0x5'),'inbound-fax',_0x9371('0x6'),_0x9371('0x7'))},'tag':{'type':Sequelize[_0x9371('0x1')]},'accountcode':{'type':Sequelize[_0x9371('0x1')]},'source':{'type':Sequelize[_0x9371('0x1')]},'destination':{'type':Sequelize[_0x9371('0x1')]},'destinationcontext':{'type':Sequelize[_0x9371('0x1')]},'callerid':{'type':Sequelize[_0x9371('0x1')]},'channel':{'type':Sequelize['STRING']},'destinationchannel':{'type':Sequelize[_0x9371('0x1')]},'lastapplication':{'type':Sequelize[_0x9371('0x1')]},'lastdata':{'type':Sequelize['TEXT']},'starttime':{'type':Sequelize['DATE']},'systemanswertime':{'type':Sequelize[_0x9371('0x8')]},'answertime':{'type':Sequelize[_0x9371('0x8')]},'endtime':{'type':Sequelize['DATE']},'duration':{'type':Sequelize['INTEGER']},'billableseconds':{'type':Sequelize['INTEGER']},'mohtime':{'type':Sequelize[_0x9371('0x9')],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x9371('0x1')]},'amaflags':{'type':Sequelize[_0x9371('0x1')]},'userfield':{'type':Sequelize[_0x9371('0x1')]},'userDisposition':{'type':Sequelize['STRING']},'userSecondDisposition':{'type':Sequelize[_0x9371('0x1')]},'userThirdDisposition':{'type':Sequelize[_0x9371('0x1')]},'note':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize[_0x9371('0x1')]},'routeid':{'type':Sequelize[_0x9371('0x9')]},'sipcallid':{'type':Sequelize[_0x9371('0x1')]}};
\ No newline at end of file
+var _0x757a=['inbound-fax','outbound-fax','dialer','TEXT','DATE','INTEGER','exports','STRING','outbound'];(function(_0x30c649,_0x2ebbac){var _0x3edfb9=function(_0xab82f5){while(--_0xab82f5){_0x30c649['push'](_0x30c649['shift']());}};_0x3edfb9(++_0x2ebbac);}(_0x757a,0xde));var _0xa757=function(_0x1fd66c,_0x10de09){_0x1fd66c=_0x1fd66c-0x0;var _0x45e93f=_0x757a[_0x1fd66c];return _0x45e93f;};'use strict';var Sequelize=require('sequelize');module[_0xa757('0x0')]={'uniqueid':{'type':Sequelize[_0xa757('0x1')]},'type':{'type':Sequelize['ENUM']('inbound','internal',_0xa757('0x2'),_0xa757('0x3'),_0xa757('0x4'),_0xa757('0x5'))},'tag':{'type':Sequelize[_0xa757('0x1')]},'accountcode':{'type':Sequelize[_0xa757('0x1')]},'source':{'type':Sequelize['STRING']},'destination':{'type':Sequelize[_0xa757('0x1')]},'destinationcontext':{'type':Sequelize[_0xa757('0x1')]},'callerid':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xa757('0x1')]},'destinationchannel':{'type':Sequelize[_0xa757('0x1')]},'lastapplication':{'type':Sequelize[_0xa757('0x1')]},'lastdata':{'type':Sequelize[_0xa757('0x6')]},'starttime':{'type':Sequelize[_0xa757('0x7')]},'systemanswertime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0xa757('0x7')]},'endtime':{'type':Sequelize[_0xa757('0x7')]},'duration':{'type':Sequelize[_0xa757('0x8')]},'billableseconds':{'type':Sequelize[_0xa757('0x8')]},'mohtime':{'type':Sequelize[_0xa757('0x8')],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xa757('0x1')]},'amaflags':{'type':Sequelize[_0xa757('0x1')]},'userfield':{'type':Sequelize['STRING']},'userDisposition':{'type':Sequelize['STRING']},'userSecondDisposition':{'type':Sequelize['STRING']},'userThirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize[_0xa757('0x1')]},'routeid':{'type':Sequelize['INTEGER']},'sipcallid':{'type':Sequelize['STRING']}};
\ No newline at end of file
index c940a18..0b40bce 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(_0x36743b,_0x41426a){var _0xc6db05=function(_0xa1afe5){while(--_0xa1afe5){_0x36743b['push'](_0x36743b['shift']());}};_0xc6db05(++_0x41426a);}(_0x0b0e,0x187));var _0xe0b0=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x0b0e[_0xfae23b];return _0x200640;};'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 _0x5f66=['../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','apply','reject','save','destroy','then','error','name','send','index','map','VoiceCallReport','rawAttributes','fieldName','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filter','merge','type','VIRTUAL','includeAll','include','fullname','alias','User','rows','catch','show','params','find','create','body','describe','uniqueid','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x5f66,0x1a0));var _0x65f6=function(_0x580576,_0x2f107d){_0x580576=_0x580576-0x0;var _0x3f55a0=_0x5f66[_0x580576];return _0x3f55a0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x65f6('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x65f6('0x1'));var rp=require(_0x65f6('0x2'));var moment=require(_0x65f6('0x3'));var BPromise=require(_0x65f6('0x4'));var Mustache=require(_0x65f6('0x5'));var util=require('util');var path=require(_0x65f6('0x6'));var sox=require('sox');var csv=require(_0x65f6('0x7'));var ejs=require(_0x65f6('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x65f6('0x9'));var crypto=require(_0x65f6('0xa'));var jsforce=require(_0x65f6('0xb'));var deskjs=require(_0x65f6('0xc'));var toCsv=require(_0x65f6('0x7'));var querystring=require(_0x65f6('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x65f6('0xe'));var qs=require(_0x65f6('0xf'));var as=require(_0x65f6('0x10'));var hardwareService=require(_0x65f6('0x11'));var logger=require('../../config/logger')(_0x65f6('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x65f6('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x419819,_0x4862a5){_0x4862a5=_0x4862a5||0xcc;return function(_0x2f964a){if(_0x2f964a){return _0x419819[_0x65f6('0x14')](_0x4862a5);}return _0x419819[_0x65f6('0x15')](_0x4862a5)[_0x65f6('0x16')]();};}function respondWithResult(_0x369f96,_0x1d29fd){_0x1d29fd=_0x1d29fd||0xc8;return function(_0x44144b){if(_0x44144b){return _0x369f96[_0x65f6('0x15')](_0x1d29fd)[_0x65f6('0x17')](_0x44144b);}};}function respondWithFilteredResult(_0x3440af,_0x59154e){return function(_0x19b9ff){if(_0x19b9ff){var _0x49a913=typeof _0x59154e['offset']===_0x65f6('0x18')&&typeof _0x59154e[_0x65f6('0x19')]===_0x65f6('0x18');var _0x1c955c=_0x19b9ff[_0x65f6('0x1a')];var _0x1f974c=_0x49a913?0x0:_0x59154e[_0x65f6('0x1b')];var _0x18380e=_0x49a913?_0x19b9ff['count']:_0x59154e['offset']+_0x59154e[_0x65f6('0x19')];var _0x5b4055;if(_0x18380e>=_0x1c955c){_0x18380e=_0x1c955c;_0x5b4055=0xc8;}else{_0x5b4055=0xce;}_0x3440af['status'](_0x5b4055);return _0x3440af['set'](_0x65f6('0x1c'),_0x1f974c+'-'+_0x18380e+'/'+_0x1c955c)[_0x65f6('0x17')](_0x19b9ff);}return null;};}function patchUpdates(_0x5114a4){return function(_0x39e19f){try{jsonpatch[_0x65f6('0x1d')](_0x39e19f,_0x5114a4,!![]);}catch(_0xbee6a4){return BPromise[_0x65f6('0x1e')](_0xbee6a4);}return _0x39e19f[_0x65f6('0x1f')]();};}function saveUpdates(_0xc139c2,_0x581374){return function(_0x197a49){if(_0x197a49){return _0x197a49['update'](_0xc139c2)['then'](function(_0x212247){return _0x212247;});}return null;};}function removeEntity(_0xd173f4,_0x524e42){return function(_0x1eeaaa){if(_0x1eeaaa){return _0x1eeaaa[_0x65f6('0x20')]()[_0x65f6('0x21')](function(){_0xd173f4[_0x65f6('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x9d7bb0,_0x59ea32){return function(_0x20a161){if(!_0x20a161){_0x9d7bb0['sendStatus'](0x194);}return _0x20a161;};}function handleError(_0x5cb131,_0x4fde2f){_0x4fde2f=_0x4fde2f||0x1f4;return function(_0x29abdb){logger[_0x65f6('0x22')](_0x29abdb['stack']);if(_0x29abdb[_0x65f6('0x23')]){delete _0x29abdb[_0x65f6('0x23')];}_0x5cb131['status'](_0x4fde2f)[_0x65f6('0x24')](_0x29abdb);};}exports[_0x65f6('0x25')]=function(_0x28d0df,_0x559330){var _0x4ac04b={},_0x488d36={},_0x266cfe={'count':0x0,'rows':[]};var _0x3c032f=_[_0x65f6('0x26')](db[_0x65f6('0x27')][_0x65f6('0x28')],function(_0x14a387){return{'name':_0x14a387[_0x65f6('0x29')],'type':_0x14a387['type']['key']};});_0x488d36[_0x65f6('0x2a')]=_[_0x65f6('0x26')](_0x3c032f,'name');_0x488d36['query']=_[_0x65f6('0x2b')](_0x28d0df[_0x65f6('0x2c')]);_0x488d36[_0x65f6('0x2d')]=_[_0x65f6('0x2e')](_0x488d36[_0x65f6('0x2a')],_0x488d36[_0x65f6('0x2c')]);_0x4ac04b['attributes']=_[_0x65f6('0x2e')](_0x488d36[_0x65f6('0x2a')],qs[_0x65f6('0x2f')](_0x28d0df['query'][_0x65f6('0x2f')]));_0x4ac04b[_0x65f6('0x30')]=_0x4ac04b[_0x65f6('0x30')][_0x65f6('0x31')]?_0x4ac04b[_0x65f6('0x30')]:_0x488d36[_0x65f6('0x2a')];if(!_0x28d0df['query'][_0x65f6('0x32')](_0x65f6('0x33'))){_0x4ac04b['limit']=qs[_0x65f6('0x19')](_0x28d0df['query'][_0x65f6('0x19')]);_0x4ac04b['offset']=qs[_0x65f6('0x1b')](_0x28d0df[_0x65f6('0x2c')]['offset']);}_0x4ac04b[_0x65f6('0x34')]=qs[_0x65f6('0x35')](_0x28d0df[_0x65f6('0x2c')]['sort']);_0x4ac04b['where']=qs[_0x65f6('0x2d')](_['pick'](_0x28d0df[_0x65f6('0x2c')],_0x488d36['filters']),_0x3c032f);if(_0x28d0df[_0x65f6('0x2c')][_0x65f6('0x36')]){_0x4ac04b['where']=_[_0x65f6('0x37')](_0x4ac04b['where'],{'$or':_['map'](_0x3c032f,function(_0x71b16b){if(_0x71b16b[_0x65f6('0x38')]!==_0x65f6('0x39')){var _0x313be5={};_0x313be5[_0x71b16b[_0x65f6('0x23')]]={'$like':'%'+_0x28d0df[_0x65f6('0x2c')][_0x65f6('0x36')]+'%'};return _0x313be5;}})});}_0x4ac04b=_[_0x65f6('0x37')]({},_0x4ac04b,_0x28d0df['options']);var _0x3aa254={'where':_0x4ac04b['where']};return db[_0x65f6('0x27')][_0x65f6('0x1a')](_0x3aa254)[_0x65f6('0x21')](function(_0x2ea7f7){_0x266cfe['count']=_0x2ea7f7;if(_0x28d0df[_0x65f6('0x2c')][_0x65f6('0x3a')]){_0x4ac04b[_0x65f6('0x3b')]=[{'attributes':['id',_0x65f6('0x23'),_0x65f6('0x3c'),_0x65f6('0x3d')],'model':db[_0x65f6('0x3e')],'as':_0x65f6('0x3e')}];}return db[_0x65f6('0x27')]['findAll'](_0x4ac04b);})[_0x65f6('0x21')](function(_0x400ed2){_0x266cfe[_0x65f6('0x3f')]=_0x400ed2;return _0x266cfe;})[_0x65f6('0x21')](respondWithFilteredResult(_0x559330,_0x4ac04b))[_0x65f6('0x40')](handleError(_0x559330,null));};exports[_0x65f6('0x41')]=function(_0xe0b72d,_0x2e91e8){var _0x461393={'raw':!![],'where':{'id':_0xe0b72d[_0x65f6('0x42')]['id']}},_0x2abbed={};_0x2abbed[_0x65f6('0x2a')]=_[_0x65f6('0x2b')](db[_0x65f6('0x27')][_0x65f6('0x28')]);_0x2abbed[_0x65f6('0x2c')]=_['keys'](_0xe0b72d[_0x65f6('0x2c')]);_0x2abbed[_0x65f6('0x2d')]=_[_0x65f6('0x2e')](_0x2abbed[_0x65f6('0x2a')],_0x2abbed['query']);_0x461393[_0x65f6('0x30')]=_[_0x65f6('0x2e')](_0x2abbed[_0x65f6('0x2a')],qs['fields'](_0xe0b72d[_0x65f6('0x2c')][_0x65f6('0x2f')]));_0x461393[_0x65f6('0x30')]=_0x461393[_0x65f6('0x30')]['length']?_0x461393[_0x65f6('0x30')]:_0x2abbed['model'];if(_0xe0b72d[_0x65f6('0x2c')][_0x65f6('0x3a')]){_0x461393['include']=[{'all':!![]}];}_0x461393=_[_0x65f6('0x37')]({},_0x461393,_0xe0b72d['options']);return db[_0x65f6('0x27')][_0x65f6('0x43')](_0x461393)[_0x65f6('0x21')](handleEntityNotFound(_0x2e91e8,null))[_0x65f6('0x21')](respondWithResult(_0x2e91e8,null))[_0x65f6('0x40')](handleError(_0x2e91e8,null));};exports[_0x65f6('0x44')]=function(_0x4d30c5,_0x51bf6c){return db[_0x65f6('0x27')][_0x65f6('0x44')](_0x4d30c5[_0x65f6('0x45')],{})[_0x65f6('0x21')](respondWithResult(_0x51bf6c,0xc9))[_0x65f6('0x40')](handleError(_0x51bf6c,null));};exports[_0x65f6('0x20')]=function(_0x149c28,_0x41690c){return db[_0x65f6('0x27')]['find']({'where':{'id':_0x149c28[_0x65f6('0x42')]['id']}})[_0x65f6('0x21')](handleEntityNotFound(_0x41690c,null))[_0x65f6('0x21')](removeEntity(_0x41690c,null))['catch'](handleError(_0x41690c,null));};exports[_0x65f6('0x46')]=function(_0x42d453,_0x49ba5a){return db[_0x65f6('0x27')][_0x65f6('0x46')]()['then'](respondWithResult(_0x49ba5a,null))[_0x65f6('0x40')](handleError(_0x49ba5a,null));};exports['update']=function(_0x247be3,_0x3b241f){if(_0x247be3[_0x65f6('0x45')]['uniqueid']){delete _0x247be3[_0x65f6('0x45')][_0x65f6('0x47')];}return db['VoiceCallReport'][_0x65f6('0x43')]({'where':{'uniqueid':_0x247be3[_0x65f6('0x42')]['id'],'UserId':{'$or':[null,_0x247be3['user']['id']]}}})[_0x65f6('0x21')](handleEntityNotFound(_0x3b241f,null))[_0x65f6('0x21')](saveUpdates(_0x247be3[_0x65f6('0x45')],null))[_0x65f6('0x21')](respondWithResult(_0x3b241f,null))[_0x65f6('0x40')](handleError(_0x3b241f,null));};
\ No newline at end of file
index 6980317..6d31c43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3da=['exports','define','VoiceCallReport','report_call','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceCallReport.attributes'];(function(_0x4216ba,_0x5739c5){var _0x2592ca=function(_0x58ecea){while(--_0x58ecea){_0x4216ba['push'](_0x4216ba['shift']());}};_0x2592ca(++_0x5739c5);}(_0xa3da,0x195));var _0xaa3d=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0xa3da[_0x1ac595];return _0x455fff;};'use strict';var _=require(_0xaa3d('0x0'));var util=require(_0xaa3d('0x1'));var logger=require(_0xaa3d('0x2'))(_0xaa3d('0x3'));var moment=require(_0xaa3d('0x4'));var BPromise=require(_0xaa3d('0x5'));var rp=require(_0xaa3d('0x6'));var fs=require('fs');var path=require(_0xaa3d('0x7'));var rimraf=require(_0xaa3d('0x8'));var config=require(_0xaa3d('0x9'));var attributes=require(_0xaa3d('0xa'));module[_0xaa3d('0xb')]=function(_0x392139,_0xbee26){return _0x392139[_0xaa3d('0xc')](_0xaa3d('0xd'),attributes,{'tableName':_0xaa3d('0xe'),'paranoid':![],'indexes':[{'fields':[_0xaa3d('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x8922=['../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./voiceCallReport.attributes','define','VoiceCallReport','uniqueid','lodash','util'];(function(_0xb1174e,_0x1e68a7){var _0x285bac=function(_0x32c505){while(--_0x32c505){_0xb1174e['push'](_0xb1174e['shift']());}};_0x285bac(++_0x1e68a7);}(_0x8922,0xe2));var _0x2892=function(_0x12af4d,_0x2b82c4){_0x12af4d=_0x12af4d-0x0;var _0x2e950e=_0x8922[_0x12af4d];return _0x2e950e;};'use strict';var _=require(_0x2892('0x0'));var util=require(_0x2892('0x1'));var logger=require(_0x2892('0x2'))(_0x2892('0x3'));var moment=require(_0x2892('0x4'));var BPromise=require(_0x2892('0x5'));var rp=require(_0x2892('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x2892('0x7'));var attributes=require(_0x2892('0x8'));module['exports']=function(_0x222a12,_0x361152){return _0x222a12[_0x2892('0x9')](_0x2892('0xa'),attributes,{'tableName':'report_call','paranoid':![],'indexes':[{'fields':[_0x2892('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 8a9746b..4c6124e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8714=['then','CreateVoiceCallReport','VoiceCallReport','create','body','UpdateVoiceCallReport','update','util','moment','randomstring','ioredis','jayson/promise','client','http','request','info','VoiceCallReport,\x20%s,\x20%s','request\x20sent','debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetVoiceCallReport','findAll','options','raw','attributes','limit','include','model','map'];(function(_0x4ca985,_0x345ada){var _0x9f53b5=function(_0x559a58){while(--_0x559a58){_0x4ca985['push'](_0x4ca985['shift']());}};_0x9f53b5(++_0x345ada);}(_0x8714,0xfc));var _0x4871=function(_0x491a7f,_0x28bb80){_0x491a7f=_0x491a7f-0x0;var _0x3d8f44=_0x8714[_0x491a7f];return _0x3d8f44;};'use strict';var _=require('lodash');var util=require(_0x4871('0x0'));var moment=require(_0x4871('0x1'));var BPromise=require('bluebird');var rs=require(_0x4871('0x2'));var fs=require('fs');var Redis=require(_0x4871('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x4871('0x4'));var client=jayson[_0x4871('0x5')][_0x4871('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x373b43,_0x381d21,_0x3e3f9b){return new BPromise(function(_0x1c183d,_0x509902){return client[_0x4871('0x7')](_0x373b43,_0x3e3f9b)['then'](function(_0x36de70){logger[_0x4871('0x8')](_0x4871('0x9'),_0x381d21,_0x4871('0xa'));logger[_0x4871('0xb')](_0x4871('0xc'),_0x381d21,_0x4871('0xa'),JSON[_0x4871('0xd')](_0x36de70));if(_0x36de70['error']){if(_0x36de70[_0x4871('0xe')][_0x4871('0xf')]===0x1f4){logger[_0x4871('0xe')](_0x4871('0x9'),_0x381d21,_0x36de70[_0x4871('0xe')][_0x4871('0x10')]);return _0x509902(_0x36de70['error'][_0x4871('0x10')]);}logger['error'](_0x4871('0x9'),_0x381d21,_0x36de70[_0x4871('0xe')][_0x4871('0x10')]);return _0x1c183d(_0x36de70['error'][_0x4871('0x10')]);}else{logger['info'](_0x4871('0x9'),_0x381d21,_0x4871('0xa'));_0x1c183d(_0x36de70[_0x4871('0x11')][_0x4871('0x10')]);}})[_0x4871('0x12')](function(_0x408329){logger[_0x4871('0xe')](_0x4871('0x9'),_0x381d21,_0x408329);_0x509902(_0x408329);});});}exports[_0x4871('0x13')]=function(_0x12c4fc){var _0x1872c1=this;return new Promise(function(_0x5e7511,_0x47c48c){return db['VoiceCallReport'][_0x4871('0x14')]({'raw':_0x12c4fc[_0x4871('0x15')]?_0x12c4fc[_0x4871('0x15')][_0x4871('0x16')]===undefined?!![]:![]:!![],'where':_0x12c4fc[_0x4871('0x15')]?_0x12c4fc['options']['where']||null:null,'attributes':_0x12c4fc[_0x4871('0x15')]?_0x12c4fc['options'][_0x4871('0x17')]||null:null,'limit':_0x12c4fc[_0x4871('0x15')]?_0x12c4fc[_0x4871('0x15')][_0x4871('0x18')]||null:null,'include':_0x12c4fc[_0x4871('0x15')]?_0x12c4fc[_0x4871('0x15')]['include']?_['map'](_0x12c4fc['options'][_0x4871('0x19')],function(_0x4b0d93){return{'model':db[_0x4b0d93[_0x4871('0x1a')]],'as':_0x4b0d93['as'],'attributes':_0x4b0d93[_0x4871('0x17')],'include':_0x4b0d93[_0x4871('0x19')]?_[_0x4871('0x1b')](_0x4b0d93[_0x4871('0x19')],function(_0x2bb39e){return{'model':db[_0x2bb39e['model']],'as':_0x2bb39e['as'],'attributes':_0x2bb39e[_0x4871('0x17')],'include':_0x2bb39e['include']?_[_0x4871('0x1b')](_0x2bb39e[_0x4871('0x19')],function(_0x5f4014){return{'model':db[_0x5f4014['model']],'as':_0x5f4014['as'],'attributes':_0x5f4014['attributes']};}):[]};}):[]};}):[]:[]})[_0x4871('0x1c')](function(_0x505f99){logger[_0x4871('0x8')]('GetVoiceCallReport',_0x12c4fc);logger[_0x4871('0xb')](_0x4871('0x13'),_0x12c4fc,JSON[_0x4871('0xd')](_0x505f99));_0x5e7511(_0x505f99);})[_0x4871('0x12')](function(_0x28ec57){logger[_0x4871('0xe')]('GetVoiceCallReport',_0x28ec57[_0x4871('0x10')],_0x12c4fc);_0x47c48c(_0x1872c1['error'](0x1f4,_0x28ec57[_0x4871('0x10')]));});});};exports[_0x4871('0x1d')]=function(_0x3ac9a2){var _0x5b1bd4=this;return new Promise(function(_0x45313e,_0x2d2196){return db[_0x4871('0x1e')][_0x4871('0x1f')](_0x3ac9a2[_0x4871('0x20')],{'raw':_0x3ac9a2[_0x4871('0x15')]?_0x3ac9a2[_0x4871('0x15')][_0x4871('0x16')]===undefined?!![]:![]:!![]})['then'](function(_0x547595){logger['info'](_0x4871('0x1d'),_0x3ac9a2);logger['debug'](_0x4871('0x1d'),_0x3ac9a2,JSON[_0x4871('0xd')](_0x547595));_0x45313e(_0x547595);})[_0x4871('0x12')](function(_0x2a226f){logger['error'](_0x4871('0x1d'),_0x2a226f[_0x4871('0x10')],_0x3ac9a2);_0x2d2196(_0x5b1bd4[_0x4871('0xe')](0x1f4,_0x2a226f[_0x4871('0x10')]));});});};exports[_0x4871('0x21')]=function(_0x17a070){var _0x13f16a=this;return new Promise(function(_0x2b7c6a,_0x53288b){return db['VoiceCallReport'][_0x4871('0x22')](_0x17a070[_0x4871('0x20')],{'raw':_0x17a070[_0x4871('0x15')]?_0x17a070[_0x4871('0x15')][_0x4871('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x17a070['options']?_0x17a070[_0x4871('0x15')]['where']||null:null,'attributes':_0x17a070[_0x4871('0x15')]?_0x17a070['options'][_0x4871('0x17')]||null:null,'limit':_0x17a070['options']?_0x17a070['options'][_0x4871('0x18')]||null:null})[_0x4871('0x1c')](function(_0x4d144b){logger[_0x4871('0x8')]('UpdateVoiceCallReport',_0x17a070);logger[_0x4871('0xb')]('UpdateVoiceCallReport',_0x17a070,JSON[_0x4871('0xd')](_0x4d144b));_0x2b7c6a(_0x4d144b);})['catch'](function(_0x3ea816){logger[_0x4871('0xe')](_0x4871('0x21'),_0x3ea816[_0x4871('0x10')],_0x17a070);_0x53288b(_0x13f16a[_0x4871('0xe')](0x1f4,_0x3ea816[_0x4871('0x10')]));});});};
\ No newline at end of file
+var _0x1091=['info','VoiceCallReport,\x20%s,\x20%s','request\x20sent','VoiceCallReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetVoiceCallReport','VoiceCallReport','findAll','options','where','attributes','limit','include','model','map','debug','CreateVoiceCallReport','create','body','raw','UpdateVoiceCallReport','update','util','moment','bluebird','randomstring','ioredis','../../config/logger','../../config/environment','jayson/promise','client','http','request','then'];(function(_0x129eac,_0x3c3cae){var _0x48cef0=function(_0x1cf759){while(--_0x1cf759){_0x129eac['push'](_0x129eac['shift']());}};_0x48cef0(++_0x3c3cae);}(_0x1091,0x69));var _0x1109=function(_0x3c826c,_0x573527){_0x3c826c=_0x3c826c-0x0;var _0x3ccdfd=_0x1091[_0x3c826c];return _0x3ccdfd;};'use strict';var _=require('lodash');var util=require(_0x1109('0x0'));var moment=require(_0x1109('0x1'));var BPromise=require(_0x1109('0x2'));var rs=require(_0x1109('0x3'));var fs=require('fs');var Redis=require(_0x1109('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x1109('0x5'))('rpc');var config=require(_0x1109('0x6'));var jayson=require(_0x1109('0x7'));var client=jayson[_0x1109('0x8')][_0x1109('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x422014,_0x4fcbb6,_0x50ce8c){return new BPromise(function(_0x305d5f,_0x1a24cc){return client[_0x1109('0xa')](_0x422014,_0x50ce8c)[_0x1109('0xb')](function(_0xef61fc){logger[_0x1109('0xc')](_0x1109('0xd'),_0x4fcbb6,_0x1109('0xe'));logger['debug'](_0x1109('0xf'),_0x4fcbb6,_0x1109('0xe'),JSON[_0x1109('0x10')](_0xef61fc));if(_0xef61fc[_0x1109('0x11')]){if(_0xef61fc[_0x1109('0x11')][_0x1109('0x12')]===0x1f4){logger[_0x1109('0x11')](_0x1109('0xd'),_0x4fcbb6,_0xef61fc['error'][_0x1109('0x13')]);return _0x1a24cc(_0xef61fc[_0x1109('0x11')]['message']);}logger[_0x1109('0x11')](_0x1109('0xd'),_0x4fcbb6,_0xef61fc[_0x1109('0x11')][_0x1109('0x13')]);return _0x305d5f(_0xef61fc[_0x1109('0x11')][_0x1109('0x13')]);}else{logger[_0x1109('0xc')](_0x1109('0xd'),_0x4fcbb6,'request\x20sent');_0x305d5f(_0xef61fc[_0x1109('0x14')]['message']);}})[_0x1109('0x15')](function(_0x5abd38){logger[_0x1109('0x11')](_0x1109('0xd'),_0x4fcbb6,_0x5abd38);_0x1a24cc(_0x5abd38);});});}exports[_0x1109('0x16')]=function(_0x4a8173){var _0x1f512a=this;return new Promise(function(_0x400edc,_0x42f1d0){return db[_0x1109('0x17')][_0x1109('0x18')]({'raw':_0x4a8173['options']?_0x4a8173[_0x1109('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x4a8173[_0x1109('0x19')]?_0x4a8173[_0x1109('0x19')][_0x1109('0x1a')]||null:null,'attributes':_0x4a8173['options']?_0x4a8173[_0x1109('0x19')][_0x1109('0x1b')]||null:null,'limit':_0x4a8173[_0x1109('0x19')]?_0x4a8173[_0x1109('0x19')][_0x1109('0x1c')]||null:null,'include':_0x4a8173[_0x1109('0x19')]?_0x4a8173[_0x1109('0x19')][_0x1109('0x1d')]?_['map'](_0x4a8173[_0x1109('0x19')][_0x1109('0x1d')],function(_0x101a6b){return{'model':db[_0x101a6b[_0x1109('0x1e')]],'as':_0x101a6b['as'],'attributes':_0x101a6b[_0x1109('0x1b')],'include':_0x101a6b['include']?_[_0x1109('0x1f')](_0x101a6b[_0x1109('0x1d')],function(_0x3e19dd){return{'model':db[_0x3e19dd[_0x1109('0x1e')]],'as':_0x3e19dd['as'],'attributes':_0x3e19dd[_0x1109('0x1b')],'include':_0x3e19dd[_0x1109('0x1d')]?_[_0x1109('0x1f')](_0x3e19dd[_0x1109('0x1d')],function(_0x295085){return{'model':db[_0x295085['model']],'as':_0x295085['as'],'attributes':_0x295085['attributes']};}):[]};}):[]};}):[]:[]})[_0x1109('0xb')](function(_0x62ded6){logger[_0x1109('0xc')](_0x1109('0x16'),_0x4a8173);logger[_0x1109('0x20')](_0x1109('0x16'),_0x4a8173,JSON[_0x1109('0x10')](_0x62ded6));_0x400edc(_0x62ded6);})[_0x1109('0x15')](function(_0x5350f8){logger['error']('GetVoiceCallReport',_0x5350f8[_0x1109('0x13')],_0x4a8173);_0x42f1d0(_0x1f512a[_0x1109('0x11')](0x1f4,_0x5350f8['message']));});});};exports[_0x1109('0x21')]=function(_0x44a556){var _0x23e4e2=this;return new Promise(function(_0x1857d6,_0x1a78d4){return db[_0x1109('0x17')][_0x1109('0x22')](_0x44a556[_0x1109('0x23')],{'raw':_0x44a556[_0x1109('0x19')]?_0x44a556[_0x1109('0x19')][_0x1109('0x24')]===undefined?!![]:![]:!![]})[_0x1109('0xb')](function(_0x10c905){logger[_0x1109('0xc')](_0x1109('0x21'),_0x44a556);logger[_0x1109('0x20')](_0x1109('0x21'),_0x44a556,JSON[_0x1109('0x10')](_0x10c905));_0x1857d6(_0x10c905);})[_0x1109('0x15')](function(_0x414ed7){logger[_0x1109('0x11')]('CreateVoiceCallReport',_0x414ed7[_0x1109('0x13')],_0x44a556);_0x1a78d4(_0x23e4e2['error'](0x1f4,_0x414ed7[_0x1109('0x13')]));});});};exports[_0x1109('0x25')]=function(_0x29c7ba){var _0x11b0e2=this;return new Promise(function(_0x40b347,_0x316c49){return db[_0x1109('0x17')][_0x1109('0x26')](_0x29c7ba[_0x1109('0x23')],{'raw':_0x29c7ba[_0x1109('0x19')]?_0x29c7ba[_0x1109('0x19')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x29c7ba[_0x1109('0x19')]?_0x29c7ba[_0x1109('0x19')][_0x1109('0x1a')]||null:null,'attributes':_0x29c7ba[_0x1109('0x19')]?_0x29c7ba[_0x1109('0x19')][_0x1109('0x1b')]||null:null,'limit':_0x29c7ba[_0x1109('0x19')]?_0x29c7ba['options'][_0x1109('0x1c')]||null:null})[_0x1109('0xb')](function(_0x4a5bd6){logger['info'](_0x1109('0x25'),_0x29c7ba);logger[_0x1109('0x20')]('UpdateVoiceCallReport',_0x29c7ba,JSON[_0x1109('0x10')](_0x4a5bd6));_0x40b347(_0x4a5bd6);})[_0x1109('0x15')](function(_0x55695f){logger['error']('UpdateVoiceCallReport',_0x55695f[_0x1109('0x13')],_0x29c7ba);_0x316c49(_0x11b0e2['error'](0x1f4,_0x55695f['message']));});});};
\ No newline at end of file
index 91b8b3f..db1df53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80ca=['get','post','create','/:id','update','delete','exports','multer','express','Router','../../components/interaction/service','../../config/environment','./voiceChanSpy.controller','isAuthenticated'];(function(_0x545795,_0x176bcf){var _0x4ad27f=function(_0x34a367){while(--_0x34a367){_0x545795['push'](_0x545795['shift']());}};_0x4ad27f(++_0x176bcf);}(_0x80ca,0x1b9));var _0xa80c=function(_0x1a96ef,_0x11d2fa){_0x1a96ef=_0x1a96ef-0x0;var _0x170d11=_0x80ca[_0x1a96ef];return _0x170d11;};'use strict';var multer=require(_0xa80c('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xa80c('0x1'));var router=express[_0xa80c('0x2')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xa80c('0x3'));var config=require(_0xa80c('0x4'));var controller=require(_0xa80c('0x5'));router['get']('/',auth[_0xa80c('0x6')](),controller['index']);router[_0xa80c('0x7')]('/:id',auth[_0xa80c('0x6')](),controller['show']);router[_0xa80c('0x8')]('/',auth[_0xa80c('0x6')](),controller[_0xa80c('0x9')]);router['put'](_0xa80c('0xa'),auth[_0xa80c('0x6')](),controller[_0xa80c('0xb')]);router[_0xa80c('0xc')]('/:id',auth[_0xa80c('0x6')](),controller['destroy']);module[_0xa80c('0xd')]=router;
\ No newline at end of file
+var _0xa612=['show','post','put','update','delete','destroy','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./voiceChanSpy.controller','get','isAuthenticated','index','/:id'];(function(_0x19c505,_0x2aa22e){var _0xbf44e7=function(_0x3b9e28){while(--_0x3b9e28){_0x19c505['push'](_0x19c505['shift']());}};_0xbf44e7(++_0x2aa22e);}(_0xa612,0x14a));var _0x2a61=function(_0x5c982f,_0x192e0c){_0x5c982f=_0x5c982f-0x0;var _0x21f729=_0xa612[_0x5c982f];return _0x21f729;};'use strict';var multer=require('multer');var util=require(_0x2a61('0x0'));var path=require('path');var timeout=require(_0x2a61('0x1'));var express=require(_0x2a61('0x2'));var router=express[_0x2a61('0x3')]();var fs_extra=require(_0x2a61('0x4'));var auth=require(_0x2a61('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x2a61('0x6'));var controller=require(_0x2a61('0x7'));router[_0x2a61('0x8')]('/',auth[_0x2a61('0x9')](),controller[_0x2a61('0xa')]);router[_0x2a61('0x8')](_0x2a61('0xb'),auth[_0x2a61('0x9')](),controller[_0x2a61('0xc')]);router[_0x2a61('0xd')]('/',auth[_0x2a61('0x9')](),controller['create']);router[_0x2a61('0xe')](_0x2a61('0xb'),auth[_0x2a61('0x9')](),controller[_0x2a61('0xf')]);router[_0x2a61('0x10')](_0x2a61('0xb'),auth[_0x2a61('0x9')](),controller[_0x2a61('0x11')]);module[_0x2a61('0x12')]=router;
\ No newline at end of file
index 0efc338..063c951 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ebf=['options','join','getDataValue','split','BOOLEAN','sequelize','STRING','setDataValue'];(function(_0x2ddf2d,_0x272b8a){var _0x53dd02=function(_0x5a889c){while(--_0x5a889c){_0x2ddf2d['push'](_0x2ddf2d['shift']());}};_0x53dd02(++_0x272b8a);}(_0x3ebf,0x1ed));var _0xf3eb=function(_0x2658f7,_0x480b29){_0x2658f7=_0x2658f7-0x0;var _0x35ae99=_0x3ebf[_0x2658f7];return _0x35ae99;};'use strict';var Sequelize=require(_0xf3eb('0x0'));module['exports']={'name':{'type':Sequelize[_0xf3eb('0x1')]},'prefix':{'type':Sequelize[_0xf3eb('0x1')],'unique':'name','allowNull':![]},'options':{'type':Sequelize[_0xf3eb('0x1')],'set':function(_0x2f1cc9){this[_0xf3eb('0x2')](_0xf3eb('0x3'),_0x2f1cc9?_0x2f1cc9[_0xf3eb('0x4')](''):[]);},'get':function(){return this[_0xf3eb('0x5')](_0xf3eb('0x3'))?this[_0xf3eb('0x5')]('options')[_0xf3eb('0x6')](''):[];}},'auth':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'password':{'type':Sequelize['STRING']},'record':{'type':Sequelize[_0xf3eb('0x7')],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0xf3eb('0x1')]},'description':{'type':Sequelize[_0xf3eb('0x1')]}};
\ No newline at end of file
+var _0xe338=['getDataValue','BOOLEAN','sequelize','exports','STRING','name','setDataValue','options'];(function(_0x2e781d,_0x33a1f3){var _0x2e0e54=function(_0x357846){while(--_0x357846){_0x2e781d['push'](_0x2e781d['shift']());}};_0x2e0e54(++_0x33a1f3);}(_0xe338,0x18a));var _0x8e33=function(_0x15a8bb,_0x166b3e){_0x15a8bb=_0x15a8bb-0x0;var _0x4d62da=_0xe338[_0x15a8bb];return _0x4d62da;};'use strict';var Sequelize=require(_0x8e33('0x0'));module[_0x8e33('0x1')]={'name':{'type':Sequelize[_0x8e33('0x2')]},'prefix':{'type':Sequelize[_0x8e33('0x2')],'unique':_0x8e33('0x3'),'allowNull':![]},'options':{'type':Sequelize[_0x8e33('0x2')],'set':function(_0x158e15){this[_0x8e33('0x4')](_0x8e33('0x5'),_0x158e15?_0x158e15['join'](''):[]);},'get':function(){return this['getDataValue'](_0x8e33('0x5'))?this[_0x8e33('0x6')](_0x8e33('0x5'))['split'](''):[];}},'auth':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'password':{'type':Sequelize['STRING']},'record':{'type':Sequelize[_0x8e33('0x7')],'defaultValue':![]},'recordingFormat':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x8e33('0x2')]}};
\ No newline at end of file
index 2a0d58b..26594aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36f1=['params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','then','destroy','get','ChanSpies','UserProfileResource','sendStatus','error','stack','name','index','map','rawAttributes','fieldName','type','key','model','keys','intersection','fields','attributes','length','query','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','options','VoiceChanSpy','includeAll','include','findAll','rows','catch','show'];(function(_0x5c2a88,_0x491a16){var _0x1742f2=function(_0x57bd85){while(--_0x57bd85){_0x5c2a88['push'](_0x5c2a88['shift']());}};_0x1742f2(++_0x491a16);}(_0x36f1,0xb0));var _0x136f=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x36f1[_0x3b380d];return _0x54502b;};'use strict';var emlformat=require(_0x136f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x136f('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x136f('0x2'));var moment=require(_0x136f('0x3'));var BPromise=require(_0x136f('0x4'));var Mustache=require(_0x136f('0x5'));var util=require(_0x136f('0x6'));var path=require(_0x136f('0x7'));var sox=require(_0x136f('0x8'));var csv=require(_0x136f('0x9'));var ejs=require(_0x136f('0xa'));var fs=require('fs');var fs_extra=require(_0x136f('0xb'));var _=require('lodash');var squel=require(_0x136f('0xc'));var crypto=require(_0x136f('0xd'));var jsforce=require(_0x136f('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x136f('0x9'));var querystring=require(_0x136f('0xf'));var Papa=require(_0x136f('0x10'));var Redis=require(_0x136f('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x136f('0x12'));var hardwareService=require(_0x136f('0x13'));var logger=require(_0x136f('0x14'))('api');var utils=require('../../config/utils');var config=require(_0x136f('0x15'));var licenseUtil=require(_0x136f('0x16'));var db=require(_0x136f('0x17'))['db'];function respondWithStatusCode(_0x227d03,_0x32cd2d){_0x32cd2d=_0x32cd2d||0xcc;return function(_0x58d3ef){if(_0x58d3ef){return _0x227d03['sendStatus'](_0x32cd2d);}return _0x227d03[_0x136f('0x18')](_0x32cd2d)[_0x136f('0x19')]();};}function respondWithResult(_0x21ede1,_0x541865){_0x541865=_0x541865||0xc8;return function(_0x43fca8){if(_0x43fca8){return _0x21ede1[_0x136f('0x18')](_0x541865)[_0x136f('0x1a')](_0x43fca8);}};}function respondWithFilteredResult(_0x91d7fc,_0x1c89fa){return function(_0x685a22){if(_0x685a22){var _0x3a4a84=typeof _0x1c89fa[_0x136f('0x1b')]==='undefined'&&typeof _0x1c89fa[_0x136f('0x1c')]===_0x136f('0x1d');var _0x66cee=_0x685a22[_0x136f('0x1e')];var _0x3e2b02=_0x3a4a84?0x0:_0x1c89fa[_0x136f('0x1b')];var _0x54b793=_0x3a4a84?_0x685a22[_0x136f('0x1e')]:_0x1c89fa[_0x136f('0x1b')]+_0x1c89fa['limit'];var _0x3722c2;if(_0x54b793>=_0x66cee){_0x54b793=_0x66cee;_0x3722c2=0xc8;}else{_0x3722c2=0xce;}_0x91d7fc[_0x136f('0x18')](_0x3722c2);return _0x91d7fc[_0x136f('0x1f')](_0x136f('0x20'),_0x3e2b02+'-'+_0x54b793+'/'+_0x66cee)[_0x136f('0x1a')](_0x685a22);}return null;};}function patchUpdates(_0x372f55){return function(_0x493b41){try{jsonpatch[_0x136f('0x21')](_0x493b41,_0x372f55,!![]);}catch(_0x6b3282){return BPromise[_0x136f('0x22')](_0x6b3282);}return _0x493b41['save']();};}function saveUpdates(_0x4e8c6c,_0xa0416a){return function(_0x5b600f){if(_0x5b600f){return _0x5b600f['update'](_0x4e8c6c)[_0x136f('0x23')](function(_0x44014f){return _0x44014f;});}return null;};}function removeEntity(_0x581b7c,_0xf3ad9b){return function(_0x34f467){if(_0x34f467){return _0x34f467[_0x136f('0x24')]()['then'](function(){var _0x115ad5=_0x34f467[_0x136f('0x25')]({'plain':!![]});var _0x538101=_0x136f('0x26');return db[_0x136f('0x27')]['destroy']({'where':{'type':_0x538101,'resourceId':_0x115ad5['id']}})[_0x136f('0x23')](function(){return _0x34f467;});})[_0x136f('0x23')](function(){_0x581b7c[_0x136f('0x18')](0xcc)[_0x136f('0x19')]();});}};}function handleEntityNotFound(_0x4e2587,_0x164e96){return function(_0x1400c9){if(!_0x1400c9){_0x4e2587[_0x136f('0x28')](0x194);}return _0x1400c9;};}function handleError(_0x23ab25,_0x5dbc94){_0x5dbc94=_0x5dbc94||0x1f4;return function(_0x3a630c){logger[_0x136f('0x29')](_0x3a630c[_0x136f('0x2a')]);if(_0x3a630c[_0x136f('0x2b')]){delete _0x3a630c[_0x136f('0x2b')];}_0x23ab25[_0x136f('0x18')](_0x5dbc94)['send'](_0x3a630c);};}exports[_0x136f('0x2c')]=function(_0xb09aa5,_0x1cea33){var _0x4eb639={},_0x3341ea={},_0x5bfdbd={'count':0x0,'rows':[]};var _0x207c91=_[_0x136f('0x2d')](db['VoiceChanSpy'][_0x136f('0x2e')],function(_0x65ef2){return{'name':_0x65ef2[_0x136f('0x2f')],'type':_0x65ef2[_0x136f('0x30')][_0x136f('0x31')]};});_0x3341ea[_0x136f('0x32')]=_[_0x136f('0x2d')](_0x207c91,_0x136f('0x2b'));_0x3341ea['query']=_[_0x136f('0x33')](_0xb09aa5['query']);_0x3341ea['filters']=_[_0x136f('0x34')](_0x3341ea[_0x136f('0x32')],_0x3341ea['query']);_0x4eb639['attributes']=_[_0x136f('0x34')](_0x3341ea[_0x136f('0x32')],qs[_0x136f('0x35')](_0xb09aa5['query'][_0x136f('0x35')]));_0x4eb639[_0x136f('0x36')]=_0x4eb639[_0x136f('0x36')][_0x136f('0x37')]?_0x4eb639[_0x136f('0x36')]:_0x3341ea['model'];if(!_0xb09aa5[_0x136f('0x38')][_0x136f('0x39')](_0x136f('0x3a'))){_0x4eb639[_0x136f('0x1c')]=qs[_0x136f('0x1c')](_0xb09aa5[_0x136f('0x38')][_0x136f('0x1c')]);_0x4eb639[_0x136f('0x1b')]=qs['offset'](_0xb09aa5[_0x136f('0x38')][_0x136f('0x1b')]);}_0x4eb639['order']=qs['sort'](_0xb09aa5[_0x136f('0x38')][_0x136f('0x3b')]);_0x4eb639[_0x136f('0x3c')]=qs[_0x136f('0x3d')](_[_0x136f('0x3e')](_0xb09aa5[_0x136f('0x38')],_0x3341ea[_0x136f('0x3d')]),_0x207c91);if(_0xb09aa5[_0x136f('0x38')][_0x136f('0x3f')]){_0x4eb639[_0x136f('0x3c')]=_['merge'](_0x4eb639[_0x136f('0x3c')],{'$or':_[_0x136f('0x2d')](_0x207c91,function(_0x281789){if(_0x281789['type']!=='VIRTUAL'){var _0x5c4237={};_0x5c4237[_0x281789[_0x136f('0x2b')]]={'$like':'%'+_0xb09aa5[_0x136f('0x38')][_0x136f('0x3f')]+'%'};return _0x5c4237;}})});}_0x4eb639=_[_0x136f('0x40')]({},_0x4eb639,_0xb09aa5[_0x136f('0x41')]);var _0x9b57c={'where':_0x4eb639[_0x136f('0x3c')]};return db[_0x136f('0x42')][_0x136f('0x1e')](_0x9b57c)[_0x136f('0x23')](function(_0x177715){_0x5bfdbd[_0x136f('0x1e')]=_0x177715;if(_0xb09aa5[_0x136f('0x38')][_0x136f('0x43')]){_0x4eb639[_0x136f('0x44')]=[{'all':!![]}];}return db[_0x136f('0x42')][_0x136f('0x45')](_0x4eb639);})[_0x136f('0x23')](function(_0x560ec3){_0x5bfdbd[_0x136f('0x46')]=_0x560ec3;return _0x5bfdbd;})[_0x136f('0x23')](respondWithFilteredResult(_0x1cea33,_0x4eb639))[_0x136f('0x47')](handleError(_0x1cea33,null));};exports[_0x136f('0x48')]=function(_0x379940,_0x392a51){var _0x3a2af0={'raw':![],'where':{'id':_0x379940[_0x136f('0x49')]['id']}},_0x238efc={};_0x238efc[_0x136f('0x32')]=_[_0x136f('0x33')](db[_0x136f('0x42')]['rawAttributes']);_0x238efc[_0x136f('0x38')]=_[_0x136f('0x33')](_0x379940['query']);_0x238efc[_0x136f('0x3d')]=_[_0x136f('0x34')](_0x238efc[_0x136f('0x32')],_0x238efc[_0x136f('0x38')]);_0x3a2af0[_0x136f('0x36')]=_[_0x136f('0x34')](_0x238efc[_0x136f('0x32')],qs[_0x136f('0x35')](_0x379940[_0x136f('0x38')][_0x136f('0x35')]));_0x3a2af0[_0x136f('0x36')]=_0x3a2af0[_0x136f('0x36')][_0x136f('0x37')]?_0x3a2af0[_0x136f('0x36')]:_0x238efc['model'];if(_0x379940[_0x136f('0x38')][_0x136f('0x43')]){_0x3a2af0[_0x136f('0x44')]=[{'all':!![]}];}_0x3a2af0=_[_0x136f('0x40')]({},_0x3a2af0,_0x379940[_0x136f('0x41')]);return db[_0x136f('0x42')][_0x136f('0x4a')](_0x3a2af0)[_0x136f('0x23')](handleEntityNotFound(_0x392a51,null))[_0x136f('0x23')](respondWithResult(_0x392a51,null))['catch'](handleError(_0x392a51,null));};exports[_0x136f('0x4b')]=function(_0x4376f6,_0x2a8749){return db['VoiceChanSpy'][_0x136f('0x4b')](_0x4376f6[_0x136f('0x4c')],{})[_0x136f('0x23')](function(_0x1953b4){var _0x4e9a52=_0x4376f6[_0x136f('0x4d')][_0x136f('0x25')]({'plain':!![]});if(!_0x4e9a52)throw new Error(_0x136f('0x4e'));if(_0x4e9a52['role']==='user'){var _0x418e34=_0x1953b4[_0x136f('0x25')]({'plain':!![]});var _0x48d472=_0x136f('0x26');return db[_0x136f('0x4f')][_0x136f('0x4a')]({'where':{'name':_0x48d472,'userProfileId':_0x4e9a52[_0x136f('0x50')]},'raw':!![]})['then'](function(_0x4371f4){if(_0x4371f4&&_0x4371f4[_0x136f('0x51')]===0x0){return db[_0x136f('0x27')][_0x136f('0x4b')]({'name':_0x418e34['name'],'resourceId':_0x418e34['id'],'type':_0x4371f4[_0x136f('0x2b')],'sectionId':_0x4371f4['id']},{})['then'](function(){return _0x1953b4;});}else{return _0x1953b4;}})['catch'](function(_0x13313b){logger[_0x136f('0x29')](_0x136f('0x52'),_0x13313b);throw _0x13313b;});}return _0x1953b4;})[_0x136f('0x23')](respondWithResult(_0x2a8749,0xc9))[_0x136f('0x47')](handleError(_0x2a8749,null));};exports['update']=function(_0x44fc7e,_0x7edaa2){if(_0x44fc7e[_0x136f('0x4c')]['id']){delete _0x44fc7e[_0x136f('0x4c')]['id'];}return db[_0x136f('0x42')][_0x136f('0x4a')]({'where':{'id':_0x44fc7e[_0x136f('0x49')]['id']}})[_0x136f('0x23')](handleEntityNotFound(_0x7edaa2,null))['then'](saveUpdates(_0x44fc7e[_0x136f('0x4c')],null))[_0x136f('0x23')](respondWithResult(_0x7edaa2,null))[_0x136f('0x47')](handleError(_0x7edaa2,null));};exports[_0x136f('0x24')]=function(_0x316d9b,_0x499b2f){return db[_0x136f('0x42')][_0x136f('0x4a')]({'where':{'id':_0x316d9b[_0x136f('0x49')]['id']}})[_0x136f('0x23')](handleEntityNotFound(_0x499b2f,null))['then'](removeEntity(_0x499b2f,null))[_0x136f('0x47')](handleError(_0x499b2f,null));};
\ No newline at end of file
+var _0xe205=['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','get','ChanSpies','UserProfileResource','destroy','error','stack','name','index','map','VoiceChanSpy','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','keys','includeAll','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format'];(function(_0xabbd2f,_0x44d05a){var _0x34a040=function(_0x3736d9){while(--_0x3736d9){_0xabbd2f['push'](_0xabbd2f['shift']());}};_0x34a040(++_0x44d05a);}(_0xe205,0xa7));var _0x5e20=function(_0x398d0f,_0x5dbf9d){_0x398d0f=_0x398d0f-0x0;var _0x1f54c2=_0xe205[_0x398d0f];return _0x1f54c2;};'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(){var _0x33993a=_0x15705f[_0x5e20('0x26')]({'plain':!![]});var _0x2bae08=_0x5e20('0x27');return db[_0x5e20('0x28')][_0x5e20('0x29')]({'where':{'type':_0x2bae08,'resourceId':_0x33993a['id']}})[_0x5e20('0x25')](function(){return _0x15705f;});})['then'](function(){_0x2d4614[_0x5e20('0x1b')](0xcc)[_0x5e20('0x1a')]();});}};}function handleEntityNotFound(_0x238758,_0x3032ef){return function(_0x4c799d){if(!_0x4c799d){_0x238758[_0x5e20('0x19')](0x194);}return _0x4c799d;};}function handleError(_0x2c5d80,_0x37f09a){_0x37f09a=_0x37f09a||0x1f4;return function(_0x222e7a){logger[_0x5e20('0x2a')](_0x222e7a[_0x5e20('0x2b')]);if(_0x222e7a['name']){delete _0x222e7a[_0x5e20('0x2c')];}_0x2c5d80[_0x5e20('0x1b')](_0x37f09a)['send'](_0x222e7a);};}exports[_0x5e20('0x2d')]=function(_0x21d1d8,_0x335f1e){var _0x4196a3={},_0x1548c8={},_0x395a27={'count':0x0,'rows':[]};var _0x4ff715=_[_0x5e20('0x2e')](db[_0x5e20('0x2f')][_0x5e20('0x30')],function(_0x5f2f1d){return{'name':_0x5f2f1d[_0x5e20('0x31')],'type':_0x5f2f1d[_0x5e20('0x32')][_0x5e20('0x33')]};});_0x1548c8[_0x5e20('0x34')]=_[_0x5e20('0x2e')](_0x4ff715,_0x5e20('0x2c'));_0x1548c8[_0x5e20('0x35')]=_['keys'](_0x21d1d8[_0x5e20('0x35')]);_0x1548c8[_0x5e20('0x36')]=_[_0x5e20('0x37')](_0x1548c8['model'],_0x1548c8[_0x5e20('0x35')]);_0x4196a3[_0x5e20('0x38')]=_[_0x5e20('0x37')](_0x1548c8[_0x5e20('0x34')],qs[_0x5e20('0x39')](_0x21d1d8[_0x5e20('0x35')][_0x5e20('0x39')]));_0x4196a3[_0x5e20('0x38')]=_0x4196a3[_0x5e20('0x38')][_0x5e20('0x3a')]?_0x4196a3[_0x5e20('0x38')]:_0x1548c8[_0x5e20('0x34')];if(!_0x21d1d8[_0x5e20('0x35')][_0x5e20('0x3b')]('nolimit')){_0x4196a3[_0x5e20('0x1f')]=qs['limit'](_0x21d1d8['query'][_0x5e20('0x1f')]);_0x4196a3[_0x5e20('0x1d')]=qs['offset'](_0x21d1d8[_0x5e20('0x35')][_0x5e20('0x1d')]);}_0x4196a3['order']=qs[_0x5e20('0x3c')](_0x21d1d8[_0x5e20('0x35')][_0x5e20('0x3c')]);_0x4196a3[_0x5e20('0x3d')]=qs[_0x5e20('0x36')](_[_0x5e20('0x3e')](_0x21d1d8[_0x5e20('0x35')],_0x1548c8[_0x5e20('0x36')]),_0x4ff715);if(_0x21d1d8[_0x5e20('0x35')][_0x5e20('0x3f')]){_0x4196a3[_0x5e20('0x3d')]=_[_0x5e20('0x40')](_0x4196a3[_0x5e20('0x3d')],{'$or':_[_0x5e20('0x2e')](_0x4ff715,function(_0x5ad136){if(_0x5ad136[_0x5e20('0x32')]!==_0x5e20('0x41')){var _0x17feb4={};_0x17feb4[_0x5ad136['name']]={'$like':'%'+_0x21d1d8[_0x5e20('0x35')][_0x5e20('0x3f')]+'%'};return _0x17feb4;}})});}_0x4196a3=_[_0x5e20('0x40')]({},_0x4196a3,_0x21d1d8[_0x5e20('0x42')]);var _0x39018d={'where':_0x4196a3['where']};return db[_0x5e20('0x2f')][_0x5e20('0x20')](_0x39018d)[_0x5e20('0x25')](function(_0x24c05f){_0x395a27[_0x5e20('0x20')]=_0x24c05f;if(_0x21d1d8[_0x5e20('0x35')]['includeAll']){_0x4196a3[_0x5e20('0x43')]=[{'all':!![]}];}return db[_0x5e20('0x2f')][_0x5e20('0x44')](_0x4196a3);})['then'](function(_0x2b031d){_0x395a27[_0x5e20('0x45')]=_0x2b031d;return _0x395a27;})[_0x5e20('0x25')](respondWithFilteredResult(_0x335f1e,_0x4196a3))[_0x5e20('0x46')](handleError(_0x335f1e,null));};exports[_0x5e20('0x47')]=function(_0x336d61,_0x113133){var _0x3edea7={'raw':![],'where':{'id':_0x336d61[_0x5e20('0x48')]['id']}},_0x5c9504={};_0x5c9504[_0x5e20('0x34')]=_[_0x5e20('0x49')](db['VoiceChanSpy'][_0x5e20('0x30')]);_0x5c9504['query']=_[_0x5e20('0x49')](_0x336d61[_0x5e20('0x35')]);_0x5c9504[_0x5e20('0x36')]=_[_0x5e20('0x37')](_0x5c9504[_0x5e20('0x34')],_0x5c9504['query']);_0x3edea7[_0x5e20('0x38')]=_['intersection'](_0x5c9504['model'],qs[_0x5e20('0x39')](_0x336d61[_0x5e20('0x35')][_0x5e20('0x39')]));_0x3edea7[_0x5e20('0x38')]=_0x3edea7[_0x5e20('0x38')][_0x5e20('0x3a')]?_0x3edea7[_0x5e20('0x38')]:_0x5c9504['model'];if(_0x336d61['query'][_0x5e20('0x4a')]){_0x3edea7[_0x5e20('0x43')]=[{'all':!![]}];}_0x3edea7=_['merge']({},_0x3edea7,_0x336d61[_0x5e20('0x42')]);return db[_0x5e20('0x2f')][_0x5e20('0x4b')](_0x3edea7)[_0x5e20('0x25')](handleEntityNotFound(_0x113133,null))[_0x5e20('0x25')](respondWithResult(_0x113133,null))['catch'](handleError(_0x113133,null));};exports[_0x5e20('0x4c')]=function(_0x245b52,_0x25491e){return db[_0x5e20('0x2f')][_0x5e20('0x4c')](_0x245b52[_0x5e20('0x4d')],{})[_0x5e20('0x25')](function(_0x4485bb){var _0x4fb004=_0x245b52['user']['get']({'plain':!![]});if(!_0x4fb004)throw new Error(_0x5e20('0x4e'));if(_0x4fb004[_0x5e20('0x4f')]==='user'){var _0x4392ca=_0x4485bb['get']({'plain':!![]});var _0x61a3f1='ChanSpies';return db[_0x5e20('0x50')]['find']({'where':{'name':_0x61a3f1,'userProfileId':_0x4fb004[_0x5e20('0x51')]},'raw':!![]})[_0x5e20('0x25')](function(_0x285d2e){if(_0x285d2e&&_0x285d2e[_0x5e20('0x52')]===0x0){return db[_0x5e20('0x28')][_0x5e20('0x4c')]({'name':_0x4392ca[_0x5e20('0x2c')],'resourceId':_0x4392ca['id'],'type':_0x285d2e[_0x5e20('0x2c')],'sectionId':_0x285d2e['id']},{})[_0x5e20('0x25')](function(){return _0x4485bb;});}else{return _0x4485bb;}})[_0x5e20('0x46')](function(_0x13b716){logger[_0x5e20('0x2a')](_0x5e20('0x53'),_0x13b716);throw _0x13b716;});}return _0x4485bb;})[_0x5e20('0x25')](respondWithResult(_0x25491e,0xc9))[_0x5e20('0x46')](handleError(_0x25491e,null));};exports[_0x5e20('0x24')]=function(_0x1619fa,_0x1ace56){if(_0x1619fa['body']['id']){delete _0x1619fa['body']['id'];}return db[_0x5e20('0x2f')]['find']({'where':{'id':_0x1619fa[_0x5e20('0x48')]['id']}})[_0x5e20('0x25')](handleEntityNotFound(_0x1ace56,null))[_0x5e20('0x25')](saveUpdates(_0x1619fa['body'],null))[_0x5e20('0x25')](respondWithResult(_0x1ace56,null))[_0x5e20('0x46')](handleError(_0x1ace56,null));};exports[_0x5e20('0x29')]=function(_0x5d0345,_0x5d2aa2){return db['VoiceChanSpy'][_0x5e20('0x4b')]({'where':{'id':_0x5d0345[_0x5e20('0x48')]['id']}})[_0x5e20('0x25')](handleEntityNotFound(_0x5d2aa2,null))[_0x5e20('0x25')](removeEntity(_0x5d2aa2,null))[_0x5e20('0x46')](handleError(_0x5d2aa2,null));};
\ No newline at end of file
index d406fdf..d8075f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe538=['models','define','VoiceChanSpy','voice_chanspy','VoiceExtension','bulkCreate','catch','destroy','lodash','util','bluebird','./voiceChanSpy.attributes','%s%s','system','push','merge','format','CDR(type)=%s','chanspy','record','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','ChanSpy','name','options','join','StopMixMonitor','length','internal','concat','User','findAll','agent','then','exports'];(function(_0x3054be,_0x1bdc8b){var _0x3df150=function(_0x56cfbf){while(--_0x56cfbf){_0x3054be['push'](_0x3054be['shift']());}};_0x3df150(++_0x1bdc8b);}(_0xe538,0x138));var _0x8e53=function(_0x3a814f,_0x553e5b){_0x3a814f=_0x3a814f-0x0;var _0x150de1=_0xe538[_0x3a814f];return _0x150de1;};'use strict';var _=require(_0x8e53('0x0'));var util=require(_0x8e53('0x1'));var BPromise=require(_0x8e53('0x2'));var attributes=require(_0x8e53('0x3'));var getUserApplications=function(_0x369fdc,_0x27a3d8,_0x44ba57){var _0x48dc72=0x1;var _0x3f2085=[];var _0x2c46c8={'context':_0x27a3d8['context']||'from-sip','exten':util['format'](_0x8e53('0x4'),_0x369fdc['prefix'],_0x44ba57),'type':_0x8e53('0x5'),'isApp':![],'ChanSpyId':_0x369fdc['id'],'UserId':_0x27a3d8['id']};_0x3f2085[_0x8e53('0x6')](_[_0x8e53('0x7')]({'app':'Set','appdata':util[_0x8e53('0x8')](_0x8e53('0x9'),_0x8e53('0xa')),'priority':_0x48dc72++},_0x2c46c8));if(_0x369fdc[_0x8e53('0xb')]){_0x3f2085[_0x8e53('0x6')](_['merge']({'app':'MixMonitor','appdata':util['format'](_0x8e53('0xc'),_0x369fdc[_0x8e53('0xd')]),'priority':_0x48dc72++},_0x2c46c8));}if(_0x369fdc[_0x8e53('0xe')]){_0x3f2085[_0x8e53('0x6')](_[_0x8e53('0x7')]({'app':_0x8e53('0xf'),'appdata':_0x369fdc[_0x8e53('0x10')],'priority':_0x48dc72++},_0x2c46c8));}_0x3f2085[_0x8e53('0x6')](_[_0x8e53('0x7')]({'app':_0x8e53('0x11'),'appdata':util[_0x8e53('0x8')]('SIP/%s,%s',_0x27a3d8[_0x8e53('0x12')],_0x369fdc[_0x8e53('0x13')]?_0x369fdc[_0x8e53('0x13')][_0x8e53('0x14')](''):''),'priority':_0x48dc72++},_0x2c46c8));if(_0x369fdc['record']){_0x3f2085[_0x8e53('0x6')](_[_0x8e53('0x7')]({'app':_0x8e53('0x15'),'priority':_0x48dc72++},_0x2c46c8));}return _0x3f2085;};var getChanSpyApplications=function(_0x4dfdf4,_0x1281e5){var _0x3266fd=[];for(var _0x12a840=0x0,_0x5844b1=0x1;_0x12a840<_0x1281e5[_0x8e53('0x16')];_0x12a840++,_0x5844b1=0x1){_0x3266fd=_0x3266fd['concat'](getUserApplications(_0x4dfdf4,_0x1281e5[_0x12a840],_0x1281e5[_0x12a840][_0x8e53('0x17')]));if(_0x1281e5[_0x12a840][_0x8e53('0x17')]!=_0x1281e5[_0x12a840][_0x8e53('0x12')]){_0x3266fd=_0x3266fd[_0x8e53('0x18')](getUserApplications(_0x4dfdf4,_0x1281e5[_0x12a840],_0x1281e5[_0x12a840][_0x8e53('0x12')]));}}return _0x3266fd;};var getChanSpyPromise=function(_0x2dc0c2,_0x92056){return new BPromise(function(_0x25d95b,_0x36ab32){return _0x2dc0c2[_0x8e53('0x19')][_0x8e53('0x1a')]({'attributes':['id',_0x8e53('0x12'),_0x8e53('0x17')],'where':{'role':_0x8e53('0x1b'),'chanspy':!![]},'raw':!![]})[_0x8e53('0x1c')](function(_0x5d1726){if(_0x5d1726){return _0x25d95b(getChanSpyApplications(_0x92056,_0x5d1726));}return _0x25d95b([]);})['catch'](function(_0x5a2445){_0x36ab32(_0x5a2445);});});};module[_0x8e53('0x1d')]=function(_0x37e9d7,_0x1a5158){var _0x304853=_0x37e9d7[_0x8e53('0x1e')];return _0x37e9d7[_0x8e53('0x1f')](_0x8e53('0x20'),attributes,{'tableName':_0x8e53('0x21'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x408df1,_0x30f3e6,_0x105df5){return getChanSpyPromise(_0x304853,_0x408df1)[_0x8e53('0x1c')](function(_0x13066c){if(_0x13066c&&_0x13066c[_0x8e53('0x16')]){return _0x304853[_0x8e53('0x22')][_0x8e53('0x23')](_0x13066c);}})[_0x8e53('0x1c')](function(){_0x105df5();})[_0x8e53('0x24')](function(_0x4bbcab){_0x105df5(_0x4bbcab);});},'afterUpdate':function(_0x466bae,_0x18a6da,_0x2c007f){return _0x304853[_0x8e53('0x22')][_0x8e53('0x25')]({'where':{'ChanSpyId':_0x466bae['id']}})['then'](function(){return getChanSpyPromise(_0x304853,_0x466bae);})[_0x8e53('0x1c')](function(_0x2cb18){if(_0x2cb18&&_0x2cb18[_0x8e53('0x16')]){return _0x304853[_0x8e53('0x22')][_0x8e53('0x23')](_0x2cb18);}})[_0x8e53('0x1c')](function(){_0x2c007f();})[_0x8e53('0x24')](function(_0x2a8c8d){_0x2c007f(_0x2a8c8d);});},'afterDestroy':function(_0x5bb599,_0x2173b7,_0x5dec8f){return _0x304853[_0x8e53('0x22')][_0x8e53('0x25')]({'where':{'ChanSpyId':_0x5bb599['id']}})['then'](function(){_0x5dec8f();})[_0x8e53('0x24')](function(_0x92387){_0x5dec8f(_0x92387);});}}});};
\ No newline at end of file
+var _0xe7b9=['name','options','join','concat','User','agent','catch','exports','models','define','VoiceChanSpy','voice_chanspy','then','length','VoiceExtension','bulkCreate','destroy','util','bluebird','context','from-sip','format','%s%s','merge','Set','CDR(type)=%s','chanspy','record','push','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','ChanSpy'];(function(_0x2a6809,_0x44edde){var _0x11c371=function(_0x1a4888){while(--_0x1a4888){_0x2a6809['push'](_0x2a6809['shift']());}};_0x11c371(++_0x44edde);}(_0xe7b9,0x106));var _0x9e7b=function(_0x331e32,_0x34b00f){_0x331e32=_0x331e32-0x0;var _0x49f17e=_0xe7b9[_0x331e32];return _0x49f17e;};'use strict';var _=require('lodash');var util=require(_0x9e7b('0x0'));var BPromise=require(_0x9e7b('0x1'));var attributes=require('./voiceChanSpy.attributes');var getUserApplications=function(_0x585b7d,_0x586868,_0x440370){var _0x5c27f3=0x1;var _0x70fae6=[];var _0x159840={'context':_0x586868[_0x9e7b('0x2')]||_0x9e7b('0x3'),'exten':util[_0x9e7b('0x4')](_0x9e7b('0x5'),_0x585b7d['prefix'],_0x440370),'type':'system','isApp':![],'ChanSpyId':_0x585b7d['id'],'UserId':_0x586868['id']};_0x70fae6['push'](_[_0x9e7b('0x6')]({'app':_0x9e7b('0x7'),'appdata':util[_0x9e7b('0x4')](_0x9e7b('0x8'),_0x9e7b('0x9')),'priority':_0x5c27f3++},_0x159840));if(_0x585b7d[_0x9e7b('0xa')]){_0x70fae6[_0x9e7b('0xb')](_['merge']({'app':_0x9e7b('0xc'),'appdata':util[_0x9e7b('0x4')](_0x9e7b('0xd'),_0x585b7d[_0x9e7b('0xe')]),'priority':_0x5c27f3++},_0x159840));}if(_0x585b7d[_0x9e7b('0xf')]){_0x70fae6[_0x9e7b('0xb')](_[_0x9e7b('0x6')]({'app':_0x9e7b('0x10'),'appdata':_0x585b7d['password'],'priority':_0x5c27f3++},_0x159840));}_0x70fae6[_0x9e7b('0xb')](_['merge']({'app':_0x9e7b('0x11'),'appdata':util[_0x9e7b('0x4')]('SIP/%s,%s',_0x586868[_0x9e7b('0x12')],_0x585b7d[_0x9e7b('0x13')]?_0x585b7d['options'][_0x9e7b('0x14')](''):''),'priority':_0x5c27f3++},_0x159840));if(_0x585b7d[_0x9e7b('0xa')]){_0x70fae6[_0x9e7b('0xb')](_[_0x9e7b('0x6')]({'app':'StopMixMonitor','priority':_0x5c27f3++},_0x159840));}return _0x70fae6;};var getChanSpyApplications=function(_0x533d91,_0x6eb39d){var _0x401fef=[];for(var _0x2b34f1=0x0,_0x4c5c5f=0x1;_0x2b34f1<_0x6eb39d['length'];_0x2b34f1++,_0x4c5c5f=0x1){_0x401fef=_0x401fef[_0x9e7b('0x15')](getUserApplications(_0x533d91,_0x6eb39d[_0x2b34f1],_0x6eb39d[_0x2b34f1]['internal']));if(_0x6eb39d[_0x2b34f1]['internal']!=_0x6eb39d[_0x2b34f1][_0x9e7b('0x12')]){_0x401fef=_0x401fef[_0x9e7b('0x15')](getUserApplications(_0x533d91,_0x6eb39d[_0x2b34f1],_0x6eb39d[_0x2b34f1][_0x9e7b('0x12')]));}}return _0x401fef;};var getChanSpyPromise=function(_0x1df6d1,_0x555553){return new BPromise(function(_0x39aaef,_0x94c477){return _0x1df6d1[_0x9e7b('0x16')]['findAll']({'attributes':['id',_0x9e7b('0x12'),'internal'],'where':{'role':_0x9e7b('0x17'),'chanspy':!![]},'raw':!![]})['then'](function(_0x398954){if(_0x398954){return _0x39aaef(getChanSpyApplications(_0x555553,_0x398954));}return _0x39aaef([]);})[_0x9e7b('0x18')](function(_0x32154f){_0x94c477(_0x32154f);});});};module[_0x9e7b('0x19')]=function(_0x38c526,_0x252a7e){var _0x50cb07=_0x38c526[_0x9e7b('0x1a')];return _0x38c526[_0x9e7b('0x1b')](_0x9e7b('0x1c'),attributes,{'tableName':_0x9e7b('0x1d'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x59ce0f,_0x121951,_0x16acd5){return getChanSpyPromise(_0x50cb07,_0x59ce0f)[_0x9e7b('0x1e')](function(_0x405cd0){if(_0x405cd0&&_0x405cd0[_0x9e7b('0x1f')]){return _0x50cb07[_0x9e7b('0x20')][_0x9e7b('0x21')](_0x405cd0);}})[_0x9e7b('0x1e')](function(){_0x16acd5();})[_0x9e7b('0x18')](function(_0x3c6a17){_0x16acd5(_0x3c6a17);});},'afterUpdate':function(_0x3f27dd,_0x38d172,_0x5d6571){return _0x50cb07[_0x9e7b('0x20')][_0x9e7b('0x22')]({'where':{'ChanSpyId':_0x3f27dd['id']}})[_0x9e7b('0x1e')](function(){return getChanSpyPromise(_0x50cb07,_0x3f27dd);})[_0x9e7b('0x1e')](function(_0x2ca28f){if(_0x2ca28f&&_0x2ca28f[_0x9e7b('0x1f')]){return _0x50cb07[_0x9e7b('0x20')][_0x9e7b('0x21')](_0x2ca28f);}})[_0x9e7b('0x1e')](function(){_0x5d6571();})[_0x9e7b('0x18')](function(_0x1086fd){_0x5d6571(_0x1086fd);});},'afterDestroy':function(_0x1fb41a,_0x2c5433,_0x2125a6){return _0x50cb07['VoiceExtension'][_0x9e7b('0x22')]({'where':{'ChanSpyId':_0x1fb41a['id']}})['then'](function(){_0x2125a6();})[_0x9e7b('0x18')](function(_0x536817){_0x2125a6(_0x536817);});}}});};
\ No newline at end of file
index 2bcc035..99a6dc9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x878f=['../../config/logger','rpc','../../config/environment','jayson/promise','request','info','VoiceChanSpy,\x20%s,\x20%s','request\x20sent','VoiceChanSpy,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0xabcea5,_0x2d2869){var _0x38c879=function(_0x1d69d7){while(--_0x1d69d7){_0xabcea5['push'](_0xabcea5['shift']());}};_0x38c879(++_0x2d2869);}(_0x878f,0x173));var _0xf878=function(_0x5b0cde,_0x5b5ca3){_0x5b0cde=_0x5b0cde-0x0;var _0x5442f7=_0x878f[_0x5b0cde];return _0x5442f7;};'use strict';var _=require('lodash');var util=require(_0xf878('0x0'));var moment=require(_0xf878('0x1'));var BPromise=require(_0xf878('0x2'));var rs=require(_0xf878('0x3'));var fs=require('fs');var Redis=require(_0xf878('0x4'));var db=require(_0xf878('0x5'))['db'];var utils=require(_0xf878('0x6'));var logger=require(_0xf878('0x7'))(_0xf878('0x8'));var config=require(_0xf878('0x9'));var jayson=require(_0xf878('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3c5f5c,_0x62b420,_0x59e564){return new BPromise(function(_0x52851e,_0x530767){return client[_0xf878('0xb')](_0x3c5f5c,_0x59e564)['then'](function(_0x4a9d79){logger[_0xf878('0xc')](_0xf878('0xd'),_0x62b420,_0xf878('0xe'));logger['debug'](_0xf878('0xf'),_0x62b420,_0xf878('0xe'),JSON['stringify'](_0x4a9d79));if(_0x4a9d79[_0xf878('0x10')]){if(_0x4a9d79['error'][_0xf878('0x11')]===0x1f4){logger[_0xf878('0x10')](_0xf878('0xd'),_0x62b420,_0x4a9d79['error'][_0xf878('0x12')]);return _0x530767(_0x4a9d79[_0xf878('0x10')][_0xf878('0x12')]);}logger['error'](_0xf878('0xd'),_0x62b420,_0x4a9d79[_0xf878('0x10')][_0xf878('0x12')]);return _0x52851e(_0x4a9d79['error']['message']);}else{logger[_0xf878('0xc')](_0xf878('0xd'),_0x62b420,_0xf878('0xe'));_0x52851e(_0x4a9d79[_0xf878('0x13')][_0xf878('0x12')]);}})[_0xf878('0x14')](function(_0x415056){logger[_0xf878('0x10')](_0xf878('0xd'),_0x62b420,_0x415056);_0x530767(_0x415056);});});}
\ No newline at end of file
+var _0x6b20=['request','VoiceChanSpy,\x20%s,\x20%s','VoiceChanSpy,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','info','result','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x3f5d89,_0x19134a){var _0x296170=function(_0x5e30de){while(--_0x5e30de){_0x3f5d89['push'](_0x3f5d89['shift']());}};_0x296170(++_0x19134a);}(_0x6b20,0xd1));var _0x06b2=function(_0x2da898,_0x1e3858){_0x2da898=_0x2da898-0x0;var _0x4b0b19=_0x6b20[_0x2da898];return _0x4b0b19;};'use strict';var _=require(_0x06b2('0x0'));var util=require(_0x06b2('0x1'));var moment=require('moment');var BPromise=require(_0x06b2('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x06b2('0x3'));var db=require(_0x06b2('0x4'))['db'];var utils=require(_0x06b2('0x5'));var logger=require('../../config/logger')(_0x06b2('0x6'));var config=require(_0x06b2('0x7'));var jayson=require(_0x06b2('0x8'));var client=jayson[_0x06b2('0x9')][_0x06b2('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x37b825,_0x26a325,_0x4e6d3b){return new BPromise(function(_0x21cd31,_0x1828e4){return client[_0x06b2('0xb')](_0x37b825,_0x4e6d3b)['then'](function(_0x37ace0){logger['info'](_0x06b2('0xc'),_0x26a325,'request\x20sent');logger['debug'](_0x06b2('0xd'),_0x26a325,_0x06b2('0xe'),JSON['stringify'](_0x37ace0));if(_0x37ace0[_0x06b2('0xf')]){if(_0x37ace0[_0x06b2('0xf')][_0x06b2('0x10')]===0x1f4){logger[_0x06b2('0xf')](_0x06b2('0xc'),_0x26a325,_0x37ace0[_0x06b2('0xf')][_0x06b2('0x11')]);return _0x1828e4(_0x37ace0[_0x06b2('0xf')][_0x06b2('0x11')]);}logger[_0x06b2('0xf')](_0x06b2('0xc'),_0x26a325,_0x37ace0[_0x06b2('0xf')][_0x06b2('0x11')]);return _0x21cd31(_0x37ace0['error'][_0x06b2('0x11')]);}else{logger[_0x06b2('0x12')](_0x06b2('0xc'),_0x26a325,_0x06b2('0xe'));_0x21cd31(_0x37ace0[_0x06b2('0x13')][_0x06b2('0x11')]);}})['catch'](function(_0x17e69b){logger[_0x06b2('0xf')]('VoiceChanSpy,\x20%s,\x20%s',_0x26a325,_0x17e69b);_0x1828e4(_0x17e69b);});});}
\ No newline at end of file
index 9ba6ef6..8afdb57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb579=['/:id','show','post','create','put','update','delete','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./voiceContext.controller','get','isAuthenticated','index'];(function(_0x45a694,_0x23da14){var _0x380226=function(_0x18d7ba){while(--_0x18d7ba){_0x45a694['push'](_0x45a694['shift']());}};_0x380226(++_0x23da14);}(_0xb579,0x1e3));var _0x9b57=function(_0x1b06b4,_0x5b446d){_0x1b06b4=_0x1b06b4-0x0;var _0x4dfaf1=_0xb579[_0x1b06b4];return _0x4dfaf1;};'use strict';var multer=require(_0x9b57('0x0'));var util=require('util');var path=require(_0x9b57('0x1'));var timeout=require(_0x9b57('0x2'));var express=require(_0x9b57('0x3'));var router=express[_0x9b57('0x4')]();var fs_extra=require(_0x9b57('0x5'));var auth=require(_0x9b57('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x9b57('0x7'));router[_0x9b57('0x8')]('/',auth[_0x9b57('0x9')](),controller[_0x9b57('0xa')]);router['get'](_0x9b57('0xb'),auth['isAuthenticated'](),controller[_0x9b57('0xc')]);router[_0x9b57('0xd')]('/',auth[_0x9b57('0x9')](),controller[_0x9b57('0xe')]);router[_0x9b57('0xf')](_0x9b57('0xb'),auth[_0x9b57('0x9')](),controller[_0x9b57('0x10')]);router[_0x9b57('0x11')](_0x9b57('0xb'),auth[_0x9b57('0x9')](),controller['destroy']);module[_0x9b57('0x12')]=router;
\ No newline at end of file
+var _0x1e37=['put','update','delete','destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/:id','show','post'];(function(_0x4aa4e6,_0x278c45){var _0x322588=function(_0x19279d){while(--_0x19279d){_0x4aa4e6['push'](_0x4aa4e6['shift']());}};_0x322588(++_0x278c45);}(_0x1e37,0x1b5));var _0x71e3=function(_0x57e476,_0x453bb0){_0x57e476=_0x57e476-0x0;var _0x4a7458=_0x1e37[_0x57e476];return _0x4a7458;};'use strict';var multer=require(_0x71e3('0x0'));var util=require('util');var path=require(_0x71e3('0x1'));var timeout=require(_0x71e3('0x2'));var express=require('express');var router=express[_0x71e3('0x3')]();var fs_extra=require(_0x71e3('0x4'));var auth=require(_0x71e3('0x5'));var interaction=require(_0x71e3('0x6'));var config=require('../../config/environment');var controller=require('./voiceContext.controller');router[_0x71e3('0x7')]('/',auth[_0x71e3('0x8')](),controller[_0x71e3('0x9')]);router['get'](_0x71e3('0xa'),auth[_0x71e3('0x8')](),controller[_0x71e3('0xb')]);router[_0x71e3('0xc')]('/',auth[_0x71e3('0x8')](),controller['create']);router[_0x71e3('0xd')](_0x71e3('0xa'),auth['isAuthenticated'](),controller[_0x71e3('0xe')]);router[_0x71e3('0xf')](_0x71e3('0xa'),auth['isAuthenticated'](),controller[_0x71e3('0x10')]);module[_0x71e3('0x11')]=router;
\ No newline at end of file
index a5cfe3b..2e59e34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5019=['STRING','name','exports'];(function(_0x38cc41,_0x168f2e){var _0x1f59e9=function(_0x3bad3f){while(--_0x3bad3f){_0x38cc41['push'](_0x38cc41['shift']());}};_0x1f59e9(++_0x168f2e);}(_0x5019,0xd1));var _0x9501=function(_0x43b8b0,_0xce5a24){_0x43b8b0=_0x43b8b0-0x0;var _0x111dd9=_0x5019[_0x43b8b0];return _0x111dd9;};'use strict';var Sequelize=require('sequelize');module[_0x9501('0x0')]={'name':{'type':Sequelize[_0x9501('0x1')],'unique':_0x9501('0x2')},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'defaultEntry':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xdfa2=['BOOLEAN','sequelize','exports','name','STRING'];(function(_0x4ff92f,_0x40ad0f){var _0x1a688c=function(_0x1571fd){while(--_0x1571fd){_0x4ff92f['push'](_0x4ff92f['shift']());}};_0x1a688c(++_0x40ad0f);}(_0xdfa2,0x17d));var _0x2dfa=function(_0x3218bb,_0x104689){_0x3218bb=_0x3218bb-0x0;var _0x5c479e=_0xdfa2[_0x3218bb];return _0x5c479e;};'use strict';var Sequelize=require(_0x2dfa('0x0'));module[_0x2dfa('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x2dfa('0x2')},'description':{'type':Sequelize[_0x2dfa('0x3')],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0x2dfa('0x4')],'defaultValue':0x0}};
\ No newline at end of file
index 62c6371..7264d72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29c8=['jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','VoiceContext,\x20%s,\x20%s','VoiceContext,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','destroy','get','Contexts','name','send','index','map','VoiceContext','fieldName','type','query','keys','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filters','pick','where','merge','VIRTUAL','filter','options','includeAll','include','rows','show','params','rawAttributes','find','create','body','findAll','readFileSync','join','root','server/files/templates/context.ejs','utf8','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','chan_sip.so','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','render','Reload','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto'];(function(_0x556bb1,_0x34830d){var _0x45455f=function(_0x13c6ba){while(--_0x13c6ba){_0x556bb1['push'](_0x556bb1['shift']());}};_0x45455f(++_0x34830d);}(_0x29c8,0x12e));var _0x829c=function(_0x4def2a,_0x39e43b){_0x4def2a=_0x4def2a-0x0;var _0x410242=_0x29c8[_0x4def2a];return _0x410242;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x829c('0x0'));var rp=require(_0x829c('0x1'));var moment=require(_0x829c('0x2'));var BPromise=require(_0x829c('0x3'));var Mustache=require(_0x829c('0x4'));var util=require(_0x829c('0x5'));var path=require(_0x829c('0x6'));var sox=require(_0x829c('0x7'));var csv=require(_0x829c('0x8'));var ejs=require(_0x829c('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x829c('0xa'));var squel=require(_0x829c('0xb'));var crypto=require(_0x829c('0xc'));var jsforce=require(_0x829c('0xd'));var deskjs=require(_0x829c('0xe'));var toCsv=require(_0x829c('0x8'));var querystring=require(_0x829c('0xf'));var Papa=require(_0x829c('0x10'));var Redis=require(_0x829c('0x11'));var authService=require(_0x829c('0x12'));var qs=require(_0x829c('0x13'));var as=require(_0x829c('0x14'));var hardwareService=require(_0x829c('0x15'));var logger=require('../../config/logger')(_0x829c('0x16'));var utils=require(_0x829c('0x17'));var config=require(_0x829c('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var jayson=require(_0x829c('0x19'));var client=jayson[_0x829c('0x1a')][_0x829c('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x45b39a,_0x480ffa,_0x54a430,_0x58bf59){return new BPromise(function(_0x561705,_0x19bb66){var _0x10f588=_0x58bf59||client;return _0x10f588[_0x829c('0x1c')](_0x45b39a,_0x54a430)[_0x829c('0x1d')](function(_0x10a708){logger[_0x829c('0x1e')](_0x829c('0x1f'),_0x480ffa,'request\x20sent');logger['debug'](_0x829c('0x20'),_0x480ffa,_0x829c('0x21'),JSON[_0x829c('0x22')](_0x10a708));if(_0x10a708['error']){if(_0x10a708[_0x829c('0x23')]['code']===0x1f4){logger['error'](_0x829c('0x1f'),_0x480ffa,_0x10a708['error'][_0x829c('0x24')]);return _0x19bb66(_0x10a708['error'][_0x829c('0x24')]);}logger['error'](_0x829c('0x1f'),_0x480ffa,_0x10a708[_0x829c('0x23')]['message']);return _0x561705(_0x10a708[_0x829c('0x23')][_0x829c('0x24')]);}else{logger[_0x829c('0x1e')](_0x829c('0x1f'),_0x480ffa,'request\x20sent');_0x561705(_0x10a708[_0x829c('0x25')][_0x829c('0x24')]);}})[_0x829c('0x26')](function(_0x31201b){logger[_0x829c('0x23')](_0x829c('0x1f'),_0x480ffa,_0x31201b);_0x19bb66(_0x31201b);});});}function respondWithStatusCode(_0x515e78,_0x5e1356){_0x5e1356=_0x5e1356||0xcc;return function(_0x453bde){if(_0x453bde){return _0x515e78[_0x829c('0x27')](_0x5e1356);}return _0x515e78[_0x829c('0x28')](_0x5e1356)[_0x829c('0x29')]();};}function respondWithResult(_0x20ec87,_0x52fb95){_0x52fb95=_0x52fb95||0xc8;return function(_0x4417fb){if(_0x4417fb){return _0x20ec87[_0x829c('0x28')](_0x52fb95)[_0x829c('0x2a')](_0x4417fb);}};}function respondWithFilteredResult(_0x3a9c82,_0x3f6b0b){return function(_0x5d1eeb){if(_0x5d1eeb){var _0x3f887a=typeof _0x3f6b0b[_0x829c('0x2b')]===_0x829c('0x2c')&&typeof _0x3f6b0b[_0x829c('0x2d')]==='undefined';var _0x269bd=_0x5d1eeb[_0x829c('0x2e')];var _0x299003=_0x3f887a?0x0:_0x3f6b0b[_0x829c('0x2b')];var _0x21399d=_0x3f887a?_0x5d1eeb['count']:_0x3f6b0b[_0x829c('0x2b')]+_0x3f6b0b[_0x829c('0x2d')];var _0x4953cf;if(_0x21399d>=_0x269bd){_0x21399d=_0x269bd;_0x4953cf=0xc8;}else{_0x4953cf=0xce;}_0x3a9c82[_0x829c('0x28')](_0x4953cf);return _0x3a9c82['set'](_0x829c('0x2f'),_0x299003+'-'+_0x21399d+'/'+_0x269bd)[_0x829c('0x2a')](_0x5d1eeb);}return null;};}function patchUpdates(_0xd0771f){return function(_0x5079f5){try{jsonpatch[_0x829c('0x30')](_0x5079f5,_0xd0771f,!![]);}catch(_0x1aef61){return BPromise[_0x829c('0x31')](_0x1aef61);}return _0x5079f5[_0x829c('0x32')]();};}function saveUpdates(_0x506b1d,_0x3fe7b9){return function(_0x23a8b9){if(_0x23a8b9){return _0x23a8b9['update'](_0x506b1d)['then'](function(_0x19bb73){return _0x19bb73;});}return null;};}function removeEntity(_0x13252e,_0x959ce7){return function(_0x26ba7e){if(_0x26ba7e){return _0x26ba7e[_0x829c('0x33')]()[_0x829c('0x1d')](function(){var _0x487b38=_0x26ba7e[_0x829c('0x34')]({'plain':!![]});var _0x461fbe=_0x829c('0x35');return db['UserProfileResource'][_0x829c('0x33')]({'where':{'type':_0x461fbe,'resourceId':_0x487b38['id']}})['then'](function(){return _0x26ba7e;});})[_0x829c('0x1d')](function(){_0x13252e[_0x829c('0x28')](0xcc)[_0x829c('0x29')]();});}};}function handleEntityNotFound(_0x4b0168,_0x25e1cf){return function(_0x4f31d0){if(!_0x4f31d0){_0x4b0168[_0x829c('0x27')](0x194);}return _0x4f31d0;};}function handleError(_0x219df3,_0x2dee79){_0x2dee79=_0x2dee79||0x1f4;return function(_0x3f2fcf){logger[_0x829c('0x23')](_0x3f2fcf['stack']);if(_0x3f2fcf[_0x829c('0x36')]){delete _0x3f2fcf['name'];}_0x219df3[_0x829c('0x28')](_0x2dee79)[_0x829c('0x37')](_0x3f2fcf);};}exports[_0x829c('0x38')]=function(_0x161db3,_0x4400f4){var _0x3ac569={},_0x32f53a={},_0x1e65f9={'count':0x0,'rows':[]};var _0x1b00be=_[_0x829c('0x39')](db[_0x829c('0x3a')]['rawAttributes'],function(_0x24a999){return{'name':_0x24a999[_0x829c('0x3b')],'type':_0x24a999[_0x829c('0x3c')]['key']};});_0x32f53a['model']=_[_0x829c('0x39')](_0x1b00be,'name');_0x32f53a[_0x829c('0x3d')]=_[_0x829c('0x3e')](_0x161db3['query']);_0x32f53a['filters']=_[_0x829c('0x3f')](_0x32f53a[_0x829c('0x40')],_0x32f53a[_0x829c('0x3d')]);_0x3ac569['attributes']=_['intersection'](_0x32f53a[_0x829c('0x40')],qs[_0x829c('0x41')](_0x161db3['query'][_0x829c('0x41')]));_0x3ac569[_0x829c('0x42')]=_0x3ac569[_0x829c('0x42')][_0x829c('0x43')]?_0x3ac569[_0x829c('0x42')]:_0x32f53a[_0x829c('0x40')];if(!_0x161db3['query'][_0x829c('0x44')](_0x829c('0x45'))){_0x3ac569['limit']=qs['limit'](_0x161db3[_0x829c('0x3d')][_0x829c('0x2d')]);_0x3ac569[_0x829c('0x2b')]=qs[_0x829c('0x2b')](_0x161db3[_0x829c('0x3d')][_0x829c('0x2b')]);}_0x3ac569[_0x829c('0x46')]=qs[_0x829c('0x47')](_0x161db3['query']['sort']);_0x3ac569['where']=qs[_0x829c('0x48')](_[_0x829c('0x49')](_0x161db3[_0x829c('0x3d')],_0x32f53a['filters']),_0x1b00be);if(_0x161db3[_0x829c('0x3d')]['filter']){_0x3ac569[_0x829c('0x4a')]=_[_0x829c('0x4b')](_0x3ac569[_0x829c('0x4a')],{'$or':_[_0x829c('0x39')](_0x1b00be,function(_0x5662de){if(_0x5662de['type']!==_0x829c('0x4c')){var _0x42c6db={};_0x42c6db[_0x5662de[_0x829c('0x36')]]={'$like':'%'+_0x161db3['query'][_0x829c('0x4d')]+'%'};return _0x42c6db;}})});}_0x3ac569=_[_0x829c('0x4b')]({},_0x3ac569,_0x161db3[_0x829c('0x4e')]);var _0x1403ef={'where':_0x3ac569[_0x829c('0x4a')]};return db[_0x829c('0x3a')][_0x829c('0x2e')](_0x1403ef)[_0x829c('0x1d')](function(_0x31ade0){_0x1e65f9[_0x829c('0x2e')]=_0x31ade0;if(_0x161db3['query'][_0x829c('0x4f')]){_0x3ac569[_0x829c('0x50')]=[{'all':!![]}];}return db[_0x829c('0x3a')]['findAll'](_0x3ac569);})['then'](function(_0x4fdd9a){_0x1e65f9[_0x829c('0x51')]=_0x4fdd9a;return _0x1e65f9;})[_0x829c('0x1d')](respondWithFilteredResult(_0x4400f4,_0x3ac569))['catch'](handleError(_0x4400f4,null));};exports[_0x829c('0x52')]=function(_0x336ec7,_0x10ec70){var _0x580d60={'raw':![],'where':{'id':_0x336ec7[_0x829c('0x53')]['id']}},_0x55dd33={};_0x55dd33[_0x829c('0x40')]=_[_0x829c('0x3e')](db[_0x829c('0x3a')][_0x829c('0x54')]);_0x55dd33[_0x829c('0x3d')]=_[_0x829c('0x3e')](_0x336ec7[_0x829c('0x3d')]);_0x55dd33[_0x829c('0x48')]=_[_0x829c('0x3f')](_0x55dd33[_0x829c('0x40')],_0x55dd33['query']);_0x580d60[_0x829c('0x42')]=_[_0x829c('0x3f')](_0x55dd33[_0x829c('0x40')],qs[_0x829c('0x41')](_0x336ec7[_0x829c('0x3d')][_0x829c('0x41')]));_0x580d60[_0x829c('0x42')]=_0x580d60['attributes'][_0x829c('0x43')]?_0x580d60[_0x829c('0x42')]:_0x55dd33['model'];if(_0x336ec7[_0x829c('0x3d')][_0x829c('0x4f')]){_0x580d60['include']=[{'all':!![]}];}_0x580d60=_[_0x829c('0x4b')]({},_0x580d60,_0x336ec7['options']);return db[_0x829c('0x3a')][_0x829c('0x55')](_0x580d60)[_0x829c('0x1d')](handleEntityNotFound(_0x10ec70,null))[_0x829c('0x1d')](respondWithResult(_0x10ec70,null))[_0x829c('0x26')](handleError(_0x10ec70,null));};exports[_0x829c('0x56')]=function(_0xe2f1f8,_0x3be741,_0x1366b2){var _0x170d25;return db['VoiceContext']['create'](_0xe2f1f8[_0x829c('0x57')],{'raw':!![]})[_0x829c('0x1d')](function(_0x1c6ddc){_0x170d25=_0x1c6ddc;return db[_0x829c('0x3a')][_0x829c('0x58')]({'raw':!![]});})[_0x829c('0x1d')](function(_0x1825ec){var _0xa0c03c=fs[_0x829c('0x59')](path[_0x829c('0x5a')](config[_0x829c('0x5b')],_0x829c('0x5c')),_0x829c('0x5d'));var _0x136ade=ejs['render'](_0xa0c03c,{'contexts':_0x1825ec||[]});fs[_0x829c('0x5e')](_0x829c('0x5f'),_0x136ade);})['then'](function(){return respondWithRpcPromise('Reload',_0x829c('0x56'),{'module':_0x829c('0x60')});})[_0x829c('0x1d')](function(){var _0x3129af=_0xe2f1f8[_0x829c('0x61')][_0x829c('0x34')]({'plain':!![]});if(!_0x3129af)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3129af['role']===_0x829c('0x61')){var _0x2fb3c7=_0x170d25[_0x829c('0x34')]({'plain':!![]});return db[_0x829c('0x62')][_0x829c('0x55')]({'where':{'name':_0x829c('0x35'),'userProfileId':_0x3129af[_0x829c('0x63')]},'raw':!![]})[_0x829c('0x1d')](function(_0x4d3315){if(_0x4d3315&&_0x4d3315[_0x829c('0x64')]===0x0){return db['UserProfileResource'][_0x829c('0x56')]({'name':_0x2fb3c7[_0x829c('0x36')],'resourceId':_0x2fb3c7['id'],'type':_0x4d3315[_0x829c('0x36')],'sectionId':_0x4d3315['id']},{})[_0x829c('0x1d')](function(){return _0x170d25;});}else{return _0x170d25;}})['catch'](function(_0x592109){logger[_0x829c('0x23')](_0x829c('0x65'),_0x592109);throw _0x592109;});}return _0x170d25;})[_0x829c('0x1d')](respondWithResult(_0x3be741,0xc9))[_0x829c('0x26')](handleError(_0x3be741,null));};exports[_0x829c('0x66')]=function(_0xb45b5,_0x194a09,_0x48adf3){var _0x2ae9ab;return db[_0x829c('0x3a')][_0x829c('0x55')]({'where':{'id':_0xb45b5[_0x829c('0x53')]['id']}})[_0x829c('0x1d')](handleEntityNotFound(_0x194a09,null))[_0x829c('0x1d')](saveUpdates(_0xb45b5['body'],null))[_0x829c('0x1d')](function(_0x2c2b17){if(_0x2c2b17){_0x2ae9ab=_0x2c2b17;return db['VoiceContext'][_0x829c('0x58')]({'raw':!![]});}})[_0x829c('0x1d')](function(_0xbe3f9c){var _0x391816=fs[_0x829c('0x59')](path['join'](config[_0x829c('0x5b')],'server/files/templates/context.ejs'),_0x829c('0x5d'));var _0x58080f=ejs[_0x829c('0x67')](_0x391816,{'contexts':_0xbe3f9c||[]});fs[_0x829c('0x5e')](_0x829c('0x5f'),_0x58080f);})['then'](function(){return respondWithRpcPromise(_0x829c('0x68'),_0x829c('0x66'),{'module':_0x829c('0x60')});})[_0x829c('0x1d')](function(){return _0x2ae9ab;})['then'](respondWithResult(_0x194a09,null))[_0x829c('0x26')](handleError(_0x194a09,null));};exports[_0x829c('0x33')]=function(_0x3694db,_0x3884de,_0x4bb191){var _0x4d3729;return db[_0x829c('0x3a')]['find']({'where':{'id':_0x3694db[_0x829c('0x53')]['id']}})[_0x829c('0x1d')](handleEntityNotFound(_0x3884de,null))[_0x829c('0x1d')](removeEntity(_0x3884de,null))[_0x829c('0x1d')](function(){return db[_0x829c('0x3a')][_0x829c('0x58')]({'raw':!![]});})[_0x829c('0x1d')](function(_0x41bbfa){var _0xe7a069=fs[_0x829c('0x59')](path[_0x829c('0x5a')](config[_0x829c('0x5b')],_0x829c('0x5c')),'utf8');var _0x30cdbd=ejs[_0x829c('0x67')](_0xe7a069,{'contexts':_0x41bbfa});fs[_0x829c('0x5e')](_0x829c('0x5f'),_0x30cdbd);return respondWithRpcPromise('Reload',_0x829c('0x33'),{'module':_0x829c('0x60')});})[_0x829c('0x26')](handleError(_0x3884de,null));};
\ No newline at end of file
+var _0xecbe=['name','send','map','VoiceContext','fieldName','type','key','query','filters','intersection','model','attributes','fields','hasOwnProperty','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','keys','rawAttributes','length','find','create','readFileSync','root','server/files/templates/context.ejs','utf8','render','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','Reload','chan_sip.so','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','join','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','client','http','request','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','info','result','catch','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','get','Contexts','UserProfileResource'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xecbe,0x9b));var _0xeecb=function(_0x2109a8,_0x3a7797){_0x2109a8=_0x2109a8-0x0;var _0x522094=_0xecbe[_0x2109a8];return _0x522094;};'use strict';var emlformat=require(_0xeecb('0x0'));var rimraf=require(_0xeecb('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xeecb('0x2'));var moment=require(_0xeecb('0x3'));var BPromise=require(_0xeecb('0x4'));var Mustache=require(_0xeecb('0x5'));var util=require(_0xeecb('0x6'));var path=require(_0xeecb('0x7'));var sox=require(_0xeecb('0x8'));var csv=require(_0xeecb('0x9'));var ejs=require(_0xeecb('0xa'));var fs=require('fs');var fs_extra=require(_0xeecb('0xb'));var _=require(_0xeecb('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xeecb('0xd'));var deskjs=require(_0xeecb('0xe'));var toCsv=require(_0xeecb('0x9'));var querystring=require(_0xeecb('0xf'));var Papa=require('papaparse');var Redis=require(_0xeecb('0x10'));var authService=require(_0xeecb('0x11'));var qs=require(_0xeecb('0x12'));var as=require(_0xeecb('0x13'));var hardwareService=require(_0xeecb('0x14'));var logger=require(_0xeecb('0x15'))(_0xeecb('0x16'));var utils=require(_0xeecb('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xeecb('0x18'));var db=require(_0xeecb('0x19'))['db'];var jayson=require('jayson/promise');var client=jayson[_0xeecb('0x1a')][_0xeecb('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x20be3f,_0x53b429,_0x20851c,_0x2637b9){return new BPromise(function(_0x5b4749,_0x580ca3){var _0x199792=_0x2637b9||client;return _0x199792[_0xeecb('0x1c')](_0x20be3f,_0x20851c)['then'](function(_0xcb598){logger['info'](_0xeecb('0x1d'),_0x53b429,_0xeecb('0x1e'));logger[_0xeecb('0x1f')]('VoiceContext,\x20%s,\x20%s,\x20%s',_0x53b429,_0xeecb('0x1e'),JSON[_0xeecb('0x20')](_0xcb598));if(_0xcb598['error']){if(_0xcb598[_0xeecb('0x21')]['code']===0x1f4){logger[_0xeecb('0x21')](_0xeecb('0x1d'),_0x53b429,_0xcb598[_0xeecb('0x21')][_0xeecb('0x22')]);return _0x580ca3(_0xcb598[_0xeecb('0x21')][_0xeecb('0x22')]);}logger[_0xeecb('0x21')]('VoiceContext,\x20%s,\x20%s',_0x53b429,_0xcb598[_0xeecb('0x21')][_0xeecb('0x22')]);return _0x5b4749(_0xcb598[_0xeecb('0x21')][_0xeecb('0x22')]);}else{logger[_0xeecb('0x23')](_0xeecb('0x1d'),_0x53b429,_0xeecb('0x1e'));_0x5b4749(_0xcb598[_0xeecb('0x24')][_0xeecb('0x22')]);}})[_0xeecb('0x25')](function(_0x47e256){logger[_0xeecb('0x21')](_0xeecb('0x1d'),_0x53b429,_0x47e256);_0x580ca3(_0x47e256);});});}function respondWithStatusCode(_0x394faa,_0x37479d){_0x37479d=_0x37479d||0xcc;return function(_0x5235f7){if(_0x5235f7){return _0x394faa[_0xeecb('0x26')](_0x37479d);}return _0x394faa[_0xeecb('0x27')](_0x37479d)[_0xeecb('0x28')]();};}function respondWithResult(_0x186ebb,_0x5721da){_0x5721da=_0x5721da||0xc8;return function(_0xd446da){if(_0xd446da){return _0x186ebb[_0xeecb('0x27')](_0x5721da)[_0xeecb('0x29')](_0xd446da);}};}function respondWithFilteredResult(_0x36410a,_0x1489c4){return function(_0x4e37b6){if(_0x4e37b6){var _0x1b27d1=typeof _0x1489c4[_0xeecb('0x2a')]==='undefined'&&typeof _0x1489c4[_0xeecb('0x2b')]===_0xeecb('0x2c');var _0x233cd=_0x4e37b6[_0xeecb('0x2d')];var _0x27211c=_0x1b27d1?0x0:_0x1489c4[_0xeecb('0x2a')];var _0xe3a151=_0x1b27d1?_0x4e37b6[_0xeecb('0x2d')]:_0x1489c4['offset']+_0x1489c4[_0xeecb('0x2b')];var _0x409baf;if(_0xe3a151>=_0x233cd){_0xe3a151=_0x233cd;_0x409baf=0xc8;}else{_0x409baf=0xce;}_0x36410a[_0xeecb('0x27')](_0x409baf);return _0x36410a[_0xeecb('0x2e')](_0xeecb('0x2f'),_0x27211c+'-'+_0xe3a151+'/'+_0x233cd)[_0xeecb('0x29')](_0x4e37b6);}return null;};}function patchUpdates(_0x5f2567){return function(_0x368115){try{jsonpatch[_0xeecb('0x30')](_0x368115,_0x5f2567,!![]);}catch(_0x3f6f7f){return BPromise[_0xeecb('0x31')](_0x3f6f7f);}return _0x368115[_0xeecb('0x32')]();};}function saveUpdates(_0x1fdb54,_0x475cbb){return function(_0x27eb79){if(_0x27eb79){return _0x27eb79[_0xeecb('0x33')](_0x1fdb54)[_0xeecb('0x34')](function(_0x22378b){return _0x22378b;});}return null;};}function removeEntity(_0x1aec96,_0x5ac01d){return function(_0x187a6b){if(_0x187a6b){return _0x187a6b[_0xeecb('0x35')]()[_0xeecb('0x34')](function(){var _0x32038b=_0x187a6b[_0xeecb('0x36')]({'plain':!![]});var _0x302ce2=_0xeecb('0x37');return db[_0xeecb('0x38')][_0xeecb('0x35')]({'where':{'type':_0x302ce2,'resourceId':_0x32038b['id']}})[_0xeecb('0x34')](function(){return _0x187a6b;});})[_0xeecb('0x34')](function(){_0x1aec96[_0xeecb('0x27')](0xcc)[_0xeecb('0x28')]();});}};}function handleEntityNotFound(_0x2dfb51,_0x109a13){return function(_0x3fffa7){if(!_0x3fffa7){_0x2dfb51[_0xeecb('0x26')](0x194);}return _0x3fffa7;};}function handleError(_0x10a281,_0x5cda34){_0x5cda34=_0x5cda34||0x1f4;return function(_0x307a1d){logger[_0xeecb('0x21')](_0x307a1d['stack']);if(_0x307a1d[_0xeecb('0x39')]){delete _0x307a1d[_0xeecb('0x39')];}_0x10a281[_0xeecb('0x27')](_0x5cda34)[_0xeecb('0x3a')](_0x307a1d);};}exports['index']=function(_0x921134,_0x3c5450){var _0x305764={},_0x508818={},_0x572879={'count':0x0,'rows':[]};var _0x3a780d=_[_0xeecb('0x3b')](db[_0xeecb('0x3c')]['rawAttributes'],function(_0x4a8c67){return{'name':_0x4a8c67[_0xeecb('0x3d')],'type':_0x4a8c67[_0xeecb('0x3e')][_0xeecb('0x3f')]};});_0x508818['model']=_[_0xeecb('0x3b')](_0x3a780d,'name');_0x508818[_0xeecb('0x40')]=_['keys'](_0x921134[_0xeecb('0x40')]);_0x508818[_0xeecb('0x41')]=_[_0xeecb('0x42')](_0x508818[_0xeecb('0x43')],_0x508818[_0xeecb('0x40')]);_0x305764[_0xeecb('0x44')]=_[_0xeecb('0x42')](_0x508818['model'],qs[_0xeecb('0x45')](_0x921134[_0xeecb('0x40')]['fields']));_0x305764[_0xeecb('0x44')]=_0x305764[_0xeecb('0x44')]['length']?_0x305764[_0xeecb('0x44')]:_0x508818[_0xeecb('0x43')];if(!_0x921134['query'][_0xeecb('0x46')]('nolimit')){_0x305764['limit']=qs[_0xeecb('0x2b')](_0x921134[_0xeecb('0x40')][_0xeecb('0x2b')]);_0x305764[_0xeecb('0x2a')]=qs[_0xeecb('0x2a')](_0x921134['query'][_0xeecb('0x2a')]);}_0x305764['order']=qs[_0xeecb('0x47')](_0x921134[_0xeecb('0x40')][_0xeecb('0x47')]);_0x305764['where']=qs['filters'](_[_0xeecb('0x48')](_0x921134['query'],_0x508818[_0xeecb('0x41')]),_0x3a780d);if(_0x921134[_0xeecb('0x40')][_0xeecb('0x49')]){_0x305764[_0xeecb('0x4a')]=_[_0xeecb('0x4b')](_0x305764[_0xeecb('0x4a')],{'$or':_[_0xeecb('0x3b')](_0x3a780d,function(_0x182795){if(_0x182795['type']!==_0xeecb('0x4c')){var _0x427099={};_0x427099[_0x182795['name']]={'$like':'%'+_0x921134['query'][_0xeecb('0x49')]+'%'};return _0x427099;}})});}_0x305764=_[_0xeecb('0x4b')]({},_0x305764,_0x921134[_0xeecb('0x4d')]);var _0x36fdb0={'where':_0x305764[_0xeecb('0x4a')]};return db[_0xeecb('0x3c')][_0xeecb('0x2d')](_0x36fdb0)['then'](function(_0x25c31d){_0x572879[_0xeecb('0x2d')]=_0x25c31d;if(_0x921134[_0xeecb('0x40')][_0xeecb('0x4e')]){_0x305764[_0xeecb('0x4f')]=[{'all':!![]}];}return db['VoiceContext'][_0xeecb('0x50')](_0x305764);})[_0xeecb('0x34')](function(_0x291ec2){_0x572879[_0xeecb('0x51')]=_0x291ec2;return _0x572879;})['then'](respondWithFilteredResult(_0x3c5450,_0x305764))[_0xeecb('0x25')](handleError(_0x3c5450,null));};exports[_0xeecb('0x52')]=function(_0x87265f,_0x32f31a){var _0x61aec6={'raw':![],'where':{'id':_0x87265f[_0xeecb('0x53')]['id']}},_0x265874={};_0x265874[_0xeecb('0x43')]=_[_0xeecb('0x54')](db[_0xeecb('0x3c')][_0xeecb('0x55')]);_0x265874[_0xeecb('0x40')]=_['keys'](_0x87265f[_0xeecb('0x40')]);_0x265874['filters']=_[_0xeecb('0x42')](_0x265874[_0xeecb('0x43')],_0x265874['query']);_0x61aec6[_0xeecb('0x44')]=_[_0xeecb('0x42')](_0x265874[_0xeecb('0x43')],qs[_0xeecb('0x45')](_0x87265f['query'][_0xeecb('0x45')]));_0x61aec6[_0xeecb('0x44')]=_0x61aec6[_0xeecb('0x44')][_0xeecb('0x56')]?_0x61aec6[_0xeecb('0x44')]:_0x265874[_0xeecb('0x43')];if(_0x87265f[_0xeecb('0x40')][_0xeecb('0x4e')]){_0x61aec6['include']=[{'all':!![]}];}_0x61aec6=_[_0xeecb('0x4b')]({},_0x61aec6,_0x87265f[_0xeecb('0x4d')]);return db[_0xeecb('0x3c')][_0xeecb('0x57')](_0x61aec6)[_0xeecb('0x34')](handleEntityNotFound(_0x32f31a,null))[_0xeecb('0x34')](respondWithResult(_0x32f31a,null))['catch'](handleError(_0x32f31a,null));};exports[_0xeecb('0x58')]=function(_0x2d3421,_0x43b324,_0x549310){var _0x76492f;return db[_0xeecb('0x3c')][_0xeecb('0x58')](_0x2d3421['body'],{'raw':!![]})[_0xeecb('0x34')](function(_0x459493){_0x76492f=_0x459493;return db['VoiceContext'][_0xeecb('0x50')]({'raw':!![]});})[_0xeecb('0x34')](function(_0x488698){var _0x55c5d0=fs[_0xeecb('0x59')](path['join'](config[_0xeecb('0x5a')],_0xeecb('0x5b')),_0xeecb('0x5c'));var _0x2804a6=ejs[_0xeecb('0x5d')](_0x55c5d0,{'contexts':_0x488698||[]});fs[_0xeecb('0x5e')](_0xeecb('0x5f'),_0x2804a6);})['then'](function(){return respondWithRpcPromise(_0xeecb('0x60'),_0xeecb('0x58'),{'module':_0xeecb('0x61')});})[_0xeecb('0x34')](function(){var _0x43f314=_0x2d3421[_0xeecb('0x62')][_0xeecb('0x36')]({'plain':!![]});if(!_0x43f314)throw new Error(_0xeecb('0x63'));if(_0x43f314[_0xeecb('0x64')]===_0xeecb('0x62')){var _0x57b8cf=_0x76492f[_0xeecb('0x36')]({'plain':!![]});return db[_0xeecb('0x65')][_0xeecb('0x57')]({'where':{'name':_0xeecb('0x37'),'userProfileId':_0x43f314[_0xeecb('0x66')]},'raw':!![]})[_0xeecb('0x34')](function(_0x23af82){if(_0x23af82&&_0x23af82['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x57b8cf[_0xeecb('0x39')],'resourceId':_0x57b8cf['id'],'type':_0x23af82['name'],'sectionId':_0x23af82['id']},{})['then'](function(){return _0x76492f;});}else{return _0x76492f;}})[_0xeecb('0x25')](function(_0x9e06c5){logger['error'](_0xeecb('0x67'),_0x9e06c5);throw _0x9e06c5;});}return _0x76492f;})[_0xeecb('0x34')](respondWithResult(_0x43b324,0xc9))['catch'](handleError(_0x43b324,null));};exports[_0xeecb('0x33')]=function(_0x5272bd,_0x544d96,_0xd9d5c7){var _0x56ba2b;return db[_0xeecb('0x3c')][_0xeecb('0x57')]({'where':{'id':_0x5272bd[_0xeecb('0x53')]['id']}})[_0xeecb('0x34')](handleEntityNotFound(_0x544d96,null))['then'](saveUpdates(_0x5272bd[_0xeecb('0x68')],null))['then'](function(_0x499663){if(_0x499663){_0x56ba2b=_0x499663;return db[_0xeecb('0x3c')][_0xeecb('0x50')]({'raw':!![]});}})[_0xeecb('0x34')](function(_0x3c9298){var _0x33f1ef=fs[_0xeecb('0x59')](path[_0xeecb('0x69')](config[_0xeecb('0x5a')],_0xeecb('0x5b')),_0xeecb('0x5c'));var _0x1c7382=ejs[_0xeecb('0x5d')](_0x33f1ef,{'contexts':_0x3c9298||[]});fs[_0xeecb('0x5e')](_0xeecb('0x5f'),_0x1c7382);})[_0xeecb('0x34')](function(){return respondWithRpcPromise('Reload',_0xeecb('0x33'),{'module':_0xeecb('0x61')});})[_0xeecb('0x34')](function(){return _0x56ba2b;})['then'](respondWithResult(_0x544d96,null))['catch'](handleError(_0x544d96,null));};exports['destroy']=function(_0x2f12a9,_0x57bc73,_0xc1be66){var _0x2ff7ce;return db[_0xeecb('0x3c')][_0xeecb('0x57')]({'where':{'id':_0x2f12a9[_0xeecb('0x53')]['id']}})[_0xeecb('0x34')](handleEntityNotFound(_0x57bc73,null))[_0xeecb('0x34')](removeEntity(_0x57bc73,null))[_0xeecb('0x34')](function(){return db[_0xeecb('0x3c')][_0xeecb('0x50')]({'raw':!![]});})[_0xeecb('0x34')](function(_0x492f51){var _0x2306d8=fs[_0xeecb('0x59')](path[_0xeecb('0x69')](config['root'],_0xeecb('0x5b')),'utf8');var _0x17301a=ejs[_0xeecb('0x5d')](_0x2306d8,{'contexts':_0x492f51});fs[_0xeecb('0x5e')](_0xeecb('0x5f'),_0x17301a);return respondWithRpcPromise(_0xeecb('0x60'),_0xeecb('0x35'),{'module':_0xeecb('0x61')});})[_0xeecb('0x25')](handleError(_0x57bc73,null));};
\ No newline at end of file
index 2a0d960..7791741 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec7c=['VoiceContext','voice_contexts','lodash','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./voiceContext.attributes','exports','define'];(function(_0x2e2467,_0x56c489){var _0x5969d7=function(_0x278c7d){while(--_0x278c7d){_0x2e2467['push'](_0x2e2467['shift']());}};_0x5969d7(++_0x56c489);}(_0xec7c,0x154));var _0xcec7=function(_0x10ddc4,_0x29acf9){_0x10ddc4=_0x10ddc4-0x0;var _0x1fdb84=_0xec7c[_0x10ddc4];return _0x1fdb84;};'use strict';var _=require(_0xcec7('0x0'));var util=require('util');var logger=require(_0xcec7('0x1'))(_0xcec7('0x2'));var moment=require(_0xcec7('0x3'));var BPromise=require('bluebird');var rp=require(_0xcec7('0x4'));var fs=require('fs');var path=require(_0xcec7('0x5'));var rimraf=require(_0xcec7('0x6'));var config=require(_0xcec7('0x7'));var attributes=require(_0xcec7('0x8'));module[_0xcec7('0x9')]=function(_0x5aafce,_0x30efd6){return _0x5aafce[_0xcec7('0xa')](_0xcec7('0xb'),attributes,{'tableName':_0xcec7('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8aa7=['voice_contexts','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','./voiceContext.attributes','define','VoiceContext'];(function(_0x488693,_0x412610){var _0x1d5e3a=function(_0x40d889){while(--_0x40d889){_0x488693['push'](_0x488693['shift']());}};_0x1d5e3a(++_0x412610);}(_0x8aa7,0x1c4));var _0x78aa=function(_0x5608a3,_0x5b33c5){_0x5608a3=_0x5608a3-0x0;var _0x1ed50a=_0x8aa7[_0x5608a3];return _0x1ed50a;};'use strict';var _=require(_0x78aa('0x0'));var util=require(_0x78aa('0x1'));var logger=require(_0x78aa('0x2'))('api');var moment=require('moment');var BPromise=require(_0x78aa('0x3'));var rp=require(_0x78aa('0x4'));var fs=require('fs');var path=require(_0x78aa('0x5'));var rimraf=require(_0x78aa('0x6'));var config=require('../../config/environment');var attributes=require(_0x78aa('0x7'));module['exports']=function(_0x2c8a13,_0x38f615){return _0x2c8a13[_0x78aa('0x8')](_0x78aa('0x9'),attributes,{'tableName':_0x78aa('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 18fd1cf..8bdc16d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x40a3=['randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','error','message','info','lodash'];(function(_0x2d631d,_0x5443e7){var _0x36c3f5=function(_0x2ec5b1){while(--_0x2ec5b1){_0x2d631d['push'](_0x2d631d['shift']());}};_0x36c3f5(++_0x5443e7);}(_0x40a3,0x153));var _0x340a=function(_0x50fd54,_0x1a9e96){_0x50fd54=_0x50fd54-0x0;var _0x4d8580=_0x40a3[_0x50fd54];return _0x4d8580;};'use strict';var _=require(_0x340a('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x340a('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x340a('0x2'))['db'];var utils=require(_0x340a('0x3'));var logger=require(_0x340a('0x4'))(_0x340a('0x5'));var config=require(_0x340a('0x6'));var jayson=require(_0x340a('0x7'));var client=jayson[_0x340a('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1c1457,_0x41df9f,_0x535230){return new BPromise(function(_0x1c4655,_0x15a515){return client[_0x340a('0x9')](_0x1c1457,_0x535230)[_0x340a('0xa')](function(_0x120fb2){logger['info'](_0x340a('0xb'),_0x41df9f,_0x340a('0xc'));logger[_0x340a('0xd')]('VoiceContext,\x20%s,\x20%s,\x20%s',_0x41df9f,_0x340a('0xc'),JSON['stringify'](_0x120fb2));if(_0x120fb2[_0x340a('0xe')]){if(_0x120fb2[_0x340a('0xe')]['code']===0x1f4){logger[_0x340a('0xe')](_0x340a('0xb'),_0x41df9f,_0x120fb2[_0x340a('0xe')][_0x340a('0xf')]);return _0x15a515(_0x120fb2[_0x340a('0xe')][_0x340a('0xf')]);}logger[_0x340a('0xe')](_0x340a('0xb'),_0x41df9f,_0x120fb2[_0x340a('0xe')][_0x340a('0xf')]);return _0x1c4655(_0x120fb2[_0x340a('0xe')][_0x340a('0xf')]);}else{logger[_0x340a('0x10')](_0x340a('0xb'),_0x41df9f,_0x340a('0xc'));_0x1c4655(_0x120fb2['result'][_0x340a('0xf')]);}})['catch'](function(_0x52fee8){logger[_0x340a('0xe')](_0x340a('0xb'),_0x41df9f,_0x52fee8);_0x15a515(_0x52fee8);});});}
\ No newline at end of file
+var _0x10dc=['util','moment','bluebird','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','VoiceContext,\x20%s,\x20%s','debug','VoiceContext,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','info','result','catch','lodash'];(function(_0x3242f8,_0x452998){var _0x47e17f=function(_0x4caf30){while(--_0x4caf30){_0x3242f8['push'](_0x3242f8['shift']());}};_0x47e17f(++_0x452998);}(_0x10dc,0x13f));var _0xc10d=function(_0x5352d0,_0x41e8b4){_0x5352d0=_0x5352d0-0x0;var _0x352b00=_0x10dc[_0x5352d0];return _0x352b00;};'use strict';var _=require(_0xc10d('0x0'));var util=require(_0xc10d('0x1'));var moment=require(_0xc10d('0x2'));var BPromise=require(_0xc10d('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(_0xc10d('0x4'))(_0xc10d('0x5'));var config=require(_0xc10d('0x6'));var jayson=require(_0xc10d('0x7'));var client=jayson['client'][_0xc10d('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x359469,_0x46848b,_0x223749){return new BPromise(function(_0x58c0de,_0x162808){return client['request'](_0x359469,_0x223749)[_0xc10d('0x9')](function(_0x55c00d){logger['info'](_0xc10d('0xa'),_0x46848b,'request\x20sent');logger[_0xc10d('0xb')](_0xc10d('0xc'),_0x46848b,_0xc10d('0xd'),JSON['stringify'](_0x55c00d));if(_0x55c00d[_0xc10d('0xe')]){if(_0x55c00d[_0xc10d('0xe')][_0xc10d('0xf')]===0x1f4){logger['error'](_0xc10d('0xa'),_0x46848b,_0x55c00d[_0xc10d('0xe')][_0xc10d('0x10')]);return _0x162808(_0x55c00d['error'][_0xc10d('0x10')]);}logger[_0xc10d('0xe')](_0xc10d('0xa'),_0x46848b,_0x55c00d[_0xc10d('0xe')]['message']);return _0x58c0de(_0x55c00d['error'][_0xc10d('0x10')]);}else{logger[_0xc10d('0x11')](_0xc10d('0xa'),_0x46848b,_0xc10d('0xd'));_0x58c0de(_0x55c00d[_0xc10d('0x12')][_0xc10d('0x10')]);}})[_0xc10d('0x13')](function(_0x1bfa30){logger[_0xc10d('0xe')](_0xc10d('0xa'),_0x46848b,_0x1bfa30);_0x162808(_0x1bfa30);});});}
\ No newline at end of file
index fcd8789..6d1280e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x908b=['isAuthenticated','index','describe','get','/:id','show','create','put','update','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceDialReport.controller'];(function(_0x1d7332,_0x23e627){var _0x4a85bc=function(_0xe34551){while(--_0xe34551){_0x1d7332['push'](_0x1d7332['shift']());}};_0x4a85bc(++_0x23e627);}(_0x908b,0x137));var _0xb908=function(_0x1ba950,_0x4d57bc){_0x1ba950=_0x1ba950-0x0;var _0x4d2343=_0x908b[_0x1ba950];return _0x4d2343;};'use strict';var multer=require('multer');var util=require(_0xb908('0x0'));var path=require(_0xb908('0x1'));var timeout=require(_0xb908('0x2'));var express=require(_0xb908('0x3'));var router=express[_0xb908('0x4')]();var fs_extra=require(_0xb908('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xb908('0x6'));var config=require(_0xb908('0x7'));var controller=require(_0xb908('0x8'));router['get']('/',auth[_0xb908('0x9')](),controller[_0xb908('0xa')]);router['get']('/describe',auth[_0xb908('0x9')](),controller[_0xb908('0xb')]);router[_0xb908('0xc')](_0xb908('0xd'),auth['isAuthenticated'](),controller[_0xb908('0xe')]);router['post']('/',auth[_0xb908('0x9')](),controller[_0xb908('0xf')]);router[_0xb908('0x10')](_0xb908('0xd'),auth[_0xb908('0x9')](),controller[_0xb908('0x11')]);router['delete']('/:id',auth[_0xb908('0x9')](),controller[_0xb908('0x12')]);module[_0xb908('0x13')]=router;
\ No newline at end of file
+var _0xff84=['connect-timeout','express','Router','../../components/auth/service','../../config/environment','./voiceDialReport.controller','get','isAuthenticated','/describe','describe','/:id','show','post','create','put','update','exports','multer','util','path'];(function(_0x5c3c0b,_0x4ee35e){var _0x52ecd2=function(_0x3cf575){while(--_0x3cf575){_0x5c3c0b['push'](_0x5c3c0b['shift']());}};_0x52ecd2(++_0x4ee35e);}(_0xff84,0x18d));var _0x4ff8=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0xff84[_0x21a9d9];return _0x46adce;};'use strict';var multer=require(_0x4ff8('0x0'));var util=require(_0x4ff8('0x1'));var path=require(_0x4ff8('0x2'));var timeout=require(_0x4ff8('0x3'));var express=require(_0x4ff8('0x4'));var router=express[_0x4ff8('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x4ff8('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x4ff8('0x7'));var controller=require(_0x4ff8('0x8'));router[_0x4ff8('0x9')]('/',auth[_0x4ff8('0xa')](),controller['index']);router[_0x4ff8('0x9')](_0x4ff8('0xb'),auth['isAuthenticated'](),controller[_0x4ff8('0xc')]);router['get'](_0x4ff8('0xd'),auth['isAuthenticated'](),controller[_0x4ff8('0xe')]);router[_0x4ff8('0xf')]('/',auth[_0x4ff8('0xa')](),controller[_0x4ff8('0x10')]);router[_0x4ff8('0x11')]('/:id',auth[_0x4ff8('0xa')](),controller[_0x4ff8('0x12')]);router['delete'](_0x4ff8('0xd'),auth[_0x4ff8('0xa')](),controller['destroy']);module[_0x4ff8('0x13')]=router;
\ No newline at end of file
index f6813bb..a61297c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5b3=['STRING','INTEGER','DATE','exports'];(function(_0x3a4e14,_0x22e3a2){var _0x5769b0=function(_0x4f2fc7){while(--_0x4f2fc7){_0x3a4e14['push'](_0x3a4e14['shift']());}};_0x5769b0(++_0x22e3a2);}(_0xe5b3,0x133));var _0x3e5b=function(_0x137f1a,_0x2887df){_0x137f1a=_0x137f1a-0x0;var _0x439923=_0xe5b3[_0x137f1a];return _0x439923;};'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
+var _0x3e74=['DATE','sequelize','STRING','INTEGER'];(function(_0x1969a7,_0x5a133a){var _0x3d665f=function(_0x39c64b){while(--_0x39c64b){_0x1969a7['push'](_0x1969a7['shift']());}};_0x3d665f(++_0x5a133a);}(_0x3e74,0x175));var _0x43e7=function(_0x577ac8,_0xef6a4c){_0x577ac8=_0x577ac8-0x0;var _0x38ac2e=_0x3e74[_0x577ac8];return _0x38ac2e;};'use strict';var Sequelize=require(_0x43e7('0x0'));module['exports']={'privilege':{'type':Sequelize[_0x43e7('0x1')]},'channel':{'type':Sequelize[_0x43e7('0x1')]},'channelstate':{'type':Sequelize[_0x43e7('0x2')]},'channelstatedesc':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x43e7('0x1')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize[_0x43e7('0x1')]},'language':{'type':Sequelize[_0x43e7('0x1')]},'accountcode':{'type':Sequelize[_0x43e7('0x1')]},'context':{'type':Sequelize[_0x43e7('0x1')]},'exten':{'type':Sequelize[_0x43e7('0x1')]},'priority':{'type':Sequelize['INTEGER']},'uniqueid':{'type':Sequelize[_0x43e7('0x1')]},'linkedid':{'type':Sequelize[_0x43e7('0x1')]},'destchannel':{'type':Sequelize[_0x43e7('0x1')]},'destchannelstate':{'type':Sequelize[_0x43e7('0x2')]},'destchannelstatedesc':{'type':Sequelize[_0x43e7('0x1')]},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize[_0x43e7('0x1')]},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize[_0x43e7('0x1')]},'destaccountcode':{'type':Sequelize[_0x43e7('0x1')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0x43e7('0x1')]},'destpriority':{'type':Sequelize['INTEGER']},'destuniqueid':{'type':Sequelize[_0x43e7('0x1')]},'destlinkedid':{'type':Sequelize[_0x43e7('0x1')]},'dialstring':{'type':Sequelize['STRING']},'dialstatus':{'type':Sequelize[_0x43e7('0x1')]},'starttime':{'type':Sequelize[_0x43e7('0x3')]},'answertime':{'type':Sequelize[_0x43e7('0x3')]},'endtime':{'type':Sequelize[_0x43e7('0x3')]},'lastevent':{'type':Sequelize['STRING'],'comment':'called,connect,complete'},'routeId':{'type':Sequelize[_0x43e7('0x2')]},'duration':{'type':Sequelize[_0x43e7('0x2')]},'holdtime':{'type':Sequelize[_0x43e7('0x2')]},'billableseconds':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 8aa3411..f66e45b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89cc=['ejs','fs-extra','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','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','send','map','fieldName','type','key','model','name','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','options','rows','catch','show','keys','VoiceDialReport','includeAll','include','find','create','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x89cc,0xda));var _0xc89c=function(_0x881002,_0x238316){_0x881002=_0x881002-0x0;var _0x574dcf=_0x89cc[_0x881002];return _0x574dcf;};'use strict';var emlformat=require(_0xc89c('0x0'));var rimraf=require(_0xc89c('0x1'));var zipdir=require(_0xc89c('0x2'));var jsonpatch=require(_0xc89c('0x3'));var rp=require(_0xc89c('0x4'));var moment=require(_0xc89c('0x5'));var BPromise=require(_0xc89c('0x6'));var Mustache=require(_0xc89c('0x7'));var util=require(_0xc89c('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0xc89c('0x9'));var ejs=require(_0xc89c('0xa'));var fs=require('fs');var fs_extra=require(_0xc89c('0xb'));var _=require('lodash');var squel=require(_0xc89c('0xc'));var crypto=require(_0xc89c('0xd'));var jsforce=require(_0xc89c('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xc89c('0x9'));var querystring=require(_0xc89c('0xf'));var Papa=require('papaparse');var Redis=require(_0xc89c('0x10'));var authService=require(_0xc89c('0x11'));var qs=require(_0xc89c('0x12'));var as=require(_0xc89c('0x13'));var hardwareService=require(_0xc89c('0x14'));var logger=require(_0xc89c('0x15'))(_0xc89c('0x16'));var utils=require(_0xc89c('0x17'));var config=require(_0xc89c('0x18'));var licenseUtil=require(_0xc89c('0x19'));var db=require(_0xc89c('0x1a'))['db'];function respondWithStatusCode(_0x1faaf9,_0x4a21aa){_0x4a21aa=_0x4a21aa||0xcc;return function(_0x4fb62a){if(_0x4fb62a){return _0x1faaf9[_0xc89c('0x1b')](_0x4a21aa);}return _0x1faaf9[_0xc89c('0x1c')](_0x4a21aa)[_0xc89c('0x1d')]();};}function respondWithResult(_0x33b74c,_0x5d4ce7){_0x5d4ce7=_0x5d4ce7||0xc8;return function(_0x353311){if(_0x353311){return _0x33b74c[_0xc89c('0x1c')](_0x5d4ce7)[_0xc89c('0x1e')](_0x353311);}};}function respondWithFilteredResult(_0x2cc0cd,_0x29c114){return function(_0x55ed9d){if(_0x55ed9d){var _0x524398=typeof _0x29c114[_0xc89c('0x1f')]===_0xc89c('0x20')&&typeof _0x29c114[_0xc89c('0x21')]===_0xc89c('0x20');var _0x42b012=_0x55ed9d[_0xc89c('0x22')];var _0x318639=_0x524398?0x0:_0x29c114[_0xc89c('0x1f')];var _0x23d5f7=_0x524398?_0x55ed9d[_0xc89c('0x22')]:_0x29c114[_0xc89c('0x1f')]+_0x29c114['limit'];var _0x35b840;if(_0x23d5f7>=_0x42b012){_0x23d5f7=_0x42b012;_0x35b840=0xc8;}else{_0x35b840=0xce;}_0x2cc0cd[_0xc89c('0x1c')](_0x35b840);return _0x2cc0cd['set'](_0xc89c('0x23'),_0x318639+'-'+_0x23d5f7+'/'+_0x42b012)[_0xc89c('0x1e')](_0x55ed9d);}return null;};}function patchUpdates(_0x18629d){return function(_0x596b59){try{jsonpatch[_0xc89c('0x24')](_0x596b59,_0x18629d,!![]);}catch(_0x2c26f7){return BPromise[_0xc89c('0x25')](_0x2c26f7);}return _0x596b59[_0xc89c('0x26')]();};}function saveUpdates(_0x16a76a,_0x53047a){return function(_0x105b81){if(_0x105b81){return _0x105b81[_0xc89c('0x27')](_0x16a76a)[_0xc89c('0x28')](function(_0x131a21){return _0x131a21;});}return null;};}function removeEntity(_0x5d66e6,_0x43a1ae){return function(_0x44bb7a){if(_0x44bb7a){return _0x44bb7a[_0xc89c('0x29')]()[_0xc89c('0x28')](function(){_0x5d66e6[_0xc89c('0x1c')](0xcc)[_0xc89c('0x1d')]();});}};}function handleEntityNotFound(_0x7feaec,_0x4754a7){return function(_0x2d3ab1){if(!_0x2d3ab1){_0x7feaec[_0xc89c('0x1b')](0x194);}return _0x2d3ab1;};}function handleError(_0x343b82,_0x19fbca){_0x19fbca=_0x19fbca||0x1f4;return function(_0x342dcf){logger['error'](_0x342dcf['stack']);if(_0x342dcf['name']){delete _0x342dcf['name'];}_0x343b82[_0xc89c('0x1c')](_0x19fbca)[_0xc89c('0x2a')](_0x342dcf);};}exports['index']=function(_0x3cf982,_0x2344e5){var _0x5c87ec={},_0x5304df={},_0x21046a={'count':0x0,'rows':[]};var _0x516bc4=_[_0xc89c('0x2b')](db['VoiceDialReport']['rawAttributes'],function(_0x32164c){return{'name':_0x32164c[_0xc89c('0x2c')],'type':_0x32164c[_0xc89c('0x2d')][_0xc89c('0x2e')]};});_0x5304df[_0xc89c('0x2f')]=_[_0xc89c('0x2b')](_0x516bc4,_0xc89c('0x30'));_0x5304df[_0xc89c('0x31')]=_['keys'](_0x3cf982[_0xc89c('0x31')]);_0x5304df[_0xc89c('0x32')]=_[_0xc89c('0x33')](_0x5304df[_0xc89c('0x2f')],_0x5304df[_0xc89c('0x31')]);_0x5c87ec['attributes']=_[_0xc89c('0x33')](_0x5304df[_0xc89c('0x2f')],qs[_0xc89c('0x34')](_0x3cf982['query'][_0xc89c('0x34')]));_0x5c87ec[_0xc89c('0x35')]=_0x5c87ec[_0xc89c('0x35')][_0xc89c('0x36')]?_0x5c87ec[_0xc89c('0x35')]:_0x5304df['model'];if(!_0x3cf982[_0xc89c('0x31')][_0xc89c('0x37')]('nolimit')){_0x5c87ec[_0xc89c('0x21')]=qs[_0xc89c('0x21')](_0x3cf982['query'][_0xc89c('0x21')]);_0x5c87ec['offset']=qs[_0xc89c('0x1f')](_0x3cf982[_0xc89c('0x31')][_0xc89c('0x1f')]);}_0x5c87ec[_0xc89c('0x38')]=qs[_0xc89c('0x39')](_0x3cf982[_0xc89c('0x31')][_0xc89c('0x39')]);_0x5c87ec[_0xc89c('0x3a')]=qs[_0xc89c('0x32')](_[_0xc89c('0x3b')](_0x3cf982[_0xc89c('0x31')],_0x5304df[_0xc89c('0x32')]),_0x516bc4);if(_0x3cf982[_0xc89c('0x31')][_0xc89c('0x3c')]){_0x5c87ec['where']=_['merge'](_0x5c87ec[_0xc89c('0x3a')],{'$or':_['map'](_0x516bc4,function(_0x20e599){if(_0x20e599[_0xc89c('0x2d')]!==_0xc89c('0x3d')){var _0x1f1c82={};_0x1f1c82[_0x20e599[_0xc89c('0x30')]]={'$like':'%'+_0x3cf982[_0xc89c('0x31')]['filter']+'%'};return _0x1f1c82;}})});}_0x5c87ec=_[_0xc89c('0x3e')]({},_0x5c87ec,_0x3cf982[_0xc89c('0x3f')]);var _0x5ed30a={'where':_0x5c87ec['where']};return db['VoiceDialReport'][_0xc89c('0x22')](_0x5ed30a)[_0xc89c('0x28')](function(_0x1b4e09){_0x21046a[_0xc89c('0x22')]=_0x1b4e09;if(_0x3cf982[_0xc89c('0x31')]['includeAll']){_0x5c87ec['include']=[{'all':!![]}];}return db['VoiceDialReport']['findAll'](_0x5c87ec);})[_0xc89c('0x28')](function(_0x56ce64){_0x21046a[_0xc89c('0x40')]=_0x56ce64;return _0x21046a;})[_0xc89c('0x28')](respondWithFilteredResult(_0x2344e5,_0x5c87ec))[_0xc89c('0x41')](handleError(_0x2344e5,null));};exports[_0xc89c('0x42')]=function(_0x49317a,_0x705a6a){var _0x3d14d1={'raw':!![],'where':{'id':_0x49317a['params']['id']}},_0x14d2b0={};_0x14d2b0['model']=_[_0xc89c('0x43')](db[_0xc89c('0x44')]['rawAttributes']);_0x14d2b0[_0xc89c('0x31')]=_['keys'](_0x49317a[_0xc89c('0x31')]);_0x14d2b0[_0xc89c('0x32')]=_[_0xc89c('0x33')](_0x14d2b0['model'],_0x14d2b0['query']);_0x3d14d1['attributes']=_[_0xc89c('0x33')](_0x14d2b0[_0xc89c('0x2f')],qs[_0xc89c('0x34')](_0x49317a['query'][_0xc89c('0x34')]));_0x3d14d1[_0xc89c('0x35')]=_0x3d14d1['attributes'][_0xc89c('0x36')]?_0x3d14d1[_0xc89c('0x35')]:_0x14d2b0[_0xc89c('0x2f')];if(_0x49317a[_0xc89c('0x31')][_0xc89c('0x45')]){_0x3d14d1[_0xc89c('0x46')]=[{'all':!![]}];}_0x3d14d1=_[_0xc89c('0x3e')]({},_0x3d14d1,_0x49317a[_0xc89c('0x3f')]);return db['VoiceDialReport'][_0xc89c('0x47')](_0x3d14d1)['then'](handleEntityNotFound(_0x705a6a,null))[_0xc89c('0x28')](respondWithResult(_0x705a6a,null))[_0xc89c('0x41')](handleError(_0x705a6a,null));};exports[_0xc89c('0x48')]=function(_0x4fb415,_0x37f8e8){return db[_0xc89c('0x44')][_0xc89c('0x48')](_0x4fb415[_0xc89c('0x49')],{})['then'](respondWithResult(_0x37f8e8,0xc9))[_0xc89c('0x41')](handleError(_0x37f8e8,null));};exports[_0xc89c('0x27')]=function(_0x1a3149,_0x58b79b){if(_0x1a3149[_0xc89c('0x49')]['id']){delete _0x1a3149['body']['id'];}return db[_0xc89c('0x44')][_0xc89c('0x47')]({'where':{'id':_0x1a3149[_0xc89c('0x4a')]['id']}})['then'](handleEntityNotFound(_0x58b79b,null))['then'](saveUpdates(_0x1a3149['body'],null))[_0xc89c('0x28')](respondWithResult(_0x58b79b,null))['catch'](handleError(_0x58b79b,null));};exports[_0xc89c('0x29')]=function(_0x1ea0ad,_0x113556){return db[_0xc89c('0x44')][_0xc89c('0x47')]({'where':{'id':_0x1ea0ad[_0xc89c('0x4a')]['id']}})[_0xc89c('0x28')](handleEntityNotFound(_0x113556,null))['then'](removeEntity(_0x113556,null))['catch'](handleError(_0x113556,null));};exports[_0xc89c('0x4b')]=function(_0x12e90c,_0x388dee){return db['VoiceDialReport'][_0xc89c('0x4b')]()[_0xc89c('0x28')](respondWithResult(_0x388dee,null))['catch'](handleError(_0x388dee,null));};
\ No newline at end of file
+var _0xa0da=['squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','status','end','json','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','name','map','VoiceDialReport','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','options','includeAll','findAll','rows','catch','show','params','include','create','body','find','describe','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra'];(function(_0x18b9ed,_0x13a0c5){var _0x172cb1=function(_0x595c36){while(--_0x595c36){_0x18b9ed['push'](_0x18b9ed['shift']());}};_0x172cb1(++_0x13a0c5);}(_0xa0da,0x8a));var _0xaa0d=function(_0x1ed831,_0x52e779){_0x1ed831=_0x1ed831-0x0;var _0x22b3ce=_0xa0da[_0x1ed831];return _0x22b3ce;};'use strict';var emlformat=require(_0xaa0d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xaa0d('0x1'));var jsonpatch=require(_0xaa0d('0x2'));var rp=require('request-promise');var moment=require(_0xaa0d('0x3'));var BPromise=require(_0xaa0d('0x4'));var Mustache=require(_0xaa0d('0x5'));var util=require(_0xaa0d('0x6'));var path=require(_0xaa0d('0x7'));var sox=require(_0xaa0d('0x8'));var csv=require(_0xaa0d('0x9'));var ejs=require(_0xaa0d('0xa'));var fs=require('fs');var fs_extra=require(_0xaa0d('0xb'));var _=require('lodash');var squel=require(_0xaa0d('0xc'));var crypto=require(_0xaa0d('0xd'));var jsforce=require(_0xaa0d('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xaa0d('0xf'));var Papa=require('papaparse');var Redis=require(_0xaa0d('0x10'));var authService=require(_0xaa0d('0x11'));var qs=require(_0xaa0d('0x12'));var as=require(_0xaa0d('0x13'));var hardwareService=require(_0xaa0d('0x14'));var logger=require(_0xaa0d('0x15'))(_0xaa0d('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xaa0d('0x17'));var db=require(_0xaa0d('0x18'))['db'];function respondWithStatusCode(_0x12e748,_0x1a304b){_0x1a304b=_0x1a304b||0xcc;return function(_0x586dc0){if(_0x586dc0){return _0x12e748['sendStatus'](_0x1a304b);}return _0x12e748[_0xaa0d('0x19')](_0x1a304b)[_0xaa0d('0x1a')]();};}function respondWithResult(_0x2fe2d8,_0x390e0e){_0x390e0e=_0x390e0e||0xc8;return function(_0x39cb5d){if(_0x39cb5d){return _0x2fe2d8[_0xaa0d('0x19')](_0x390e0e)[_0xaa0d('0x1b')](_0x39cb5d);}};}function respondWithFilteredResult(_0x448046,_0x668149){return function(_0x4d7fed){if(_0x4d7fed){var _0x3ea248=typeof _0x668149['offset']==='undefined'&&typeof _0x668149[_0xaa0d('0x1c')]==='undefined';var _0x540449=_0x4d7fed[_0xaa0d('0x1d')];var _0x699691=_0x3ea248?0x0:_0x668149[_0xaa0d('0x1e')];var _0xf4bf1=_0x3ea248?_0x4d7fed[_0xaa0d('0x1d')]:_0x668149[_0xaa0d('0x1e')]+_0x668149[_0xaa0d('0x1c')];var _0x23ab88;if(_0xf4bf1>=_0x540449){_0xf4bf1=_0x540449;_0x23ab88=0xc8;}else{_0x23ab88=0xce;}_0x448046[_0xaa0d('0x19')](_0x23ab88);return _0x448046[_0xaa0d('0x1f')](_0xaa0d('0x20'),_0x699691+'-'+_0xf4bf1+'/'+_0x540449)[_0xaa0d('0x1b')](_0x4d7fed);}return null;};}function patchUpdates(_0x1778b9){return function(_0x273a46){try{jsonpatch[_0xaa0d('0x21')](_0x273a46,_0x1778b9,!![]);}catch(_0x32b9c0){return BPromise[_0xaa0d('0x22')](_0x32b9c0);}return _0x273a46[_0xaa0d('0x23')]();};}function saveUpdates(_0x575082,_0x1428bc){return function(_0x1b2517){if(_0x1b2517){return _0x1b2517[_0xaa0d('0x24')](_0x575082)[_0xaa0d('0x25')](function(_0x2d2d06){return _0x2d2d06;});}return null;};}function removeEntity(_0xf3c56c,_0x2e3dfb){return function(_0x4a47e3){if(_0x4a47e3){return _0x4a47e3[_0xaa0d('0x26')]()['then'](function(){_0xf3c56c[_0xaa0d('0x19')](0xcc)[_0xaa0d('0x1a')]();});}};}function handleEntityNotFound(_0x8f0265,_0x1a82cf){return function(_0x3d7a15){if(!_0x3d7a15){_0x8f0265[_0xaa0d('0x27')](0x194);}return _0x3d7a15;};}function handleError(_0xea673e,_0x3bd939){_0x3bd939=_0x3bd939||0x1f4;return function(_0x5a2ab1){logger[_0xaa0d('0x28')](_0x5a2ab1['stack']);if(_0x5a2ab1[_0xaa0d('0x29')]){delete _0x5a2ab1[_0xaa0d('0x29')];}_0xea673e[_0xaa0d('0x19')](_0x3bd939)['send'](_0x5a2ab1);};}exports['index']=function(_0x53406f,_0x3e48ea){var _0x3c5690={},_0x2bdff2={},_0x47074b={'count':0x0,'rows':[]};var _0x2e4434=_[_0xaa0d('0x2a')](db[_0xaa0d('0x2b')][_0xaa0d('0x2c')],function(_0x504c71){return{'name':_0x504c71[_0xaa0d('0x2d')],'type':_0x504c71[_0xaa0d('0x2e')][_0xaa0d('0x2f')]};});_0x2bdff2['model']=_[_0xaa0d('0x2a')](_0x2e4434,'name');_0x2bdff2[_0xaa0d('0x30')]=_[_0xaa0d('0x31')](_0x53406f['query']);_0x2bdff2[_0xaa0d('0x32')]=_[_0xaa0d('0x33')](_0x2bdff2[_0xaa0d('0x34')],_0x2bdff2[_0xaa0d('0x30')]);_0x3c5690['attributes']=_[_0xaa0d('0x33')](_0x2bdff2[_0xaa0d('0x34')],qs['fields'](_0x53406f[_0xaa0d('0x30')][_0xaa0d('0x35')]));_0x3c5690['attributes']=_0x3c5690[_0xaa0d('0x36')][_0xaa0d('0x37')]?_0x3c5690[_0xaa0d('0x36')]:_0x2bdff2['model'];if(!_0x53406f[_0xaa0d('0x30')][_0xaa0d('0x38')](_0xaa0d('0x39'))){_0x3c5690[_0xaa0d('0x1c')]=qs[_0xaa0d('0x1c')](_0x53406f[_0xaa0d('0x30')]['limit']);_0x3c5690[_0xaa0d('0x1e')]=qs[_0xaa0d('0x1e')](_0x53406f['query'][_0xaa0d('0x1e')]);}_0x3c5690[_0xaa0d('0x3a')]=qs['sort'](_0x53406f[_0xaa0d('0x30')][_0xaa0d('0x3b')]);_0x3c5690[_0xaa0d('0x3c')]=qs[_0xaa0d('0x32')](_[_0xaa0d('0x3d')](_0x53406f[_0xaa0d('0x30')],_0x2bdff2[_0xaa0d('0x32')]),_0x2e4434);if(_0x53406f['query']['filter']){_0x3c5690['where']=_['merge'](_0x3c5690[_0xaa0d('0x3c')],{'$or':_[_0xaa0d('0x2a')](_0x2e4434,function(_0x3b5749){if(_0x3b5749['type']!=='VIRTUAL'){var _0x268ea9={};_0x268ea9[_0x3b5749[_0xaa0d('0x29')]]={'$like':'%'+_0x53406f[_0xaa0d('0x30')]['filter']+'%'};return _0x268ea9;}})});}_0x3c5690=_[_0xaa0d('0x3e')]({},_0x3c5690,_0x53406f[_0xaa0d('0x3f')]);var _0x6c87cb={'where':_0x3c5690[_0xaa0d('0x3c')]};return db['VoiceDialReport'][_0xaa0d('0x1d')](_0x6c87cb)[_0xaa0d('0x25')](function(_0x56bf25){_0x47074b[_0xaa0d('0x1d')]=_0x56bf25;if(_0x53406f[_0xaa0d('0x30')][_0xaa0d('0x40')]){_0x3c5690['include']=[{'all':!![]}];}return db['VoiceDialReport'][_0xaa0d('0x41')](_0x3c5690);})[_0xaa0d('0x25')](function(_0x4b10db){_0x47074b[_0xaa0d('0x42')]=_0x4b10db;return _0x47074b;})['then'](respondWithFilteredResult(_0x3e48ea,_0x3c5690))[_0xaa0d('0x43')](handleError(_0x3e48ea,null));};exports[_0xaa0d('0x44')]=function(_0x1b9d86,_0x12690a){var _0x52a32b={'raw':!![],'where':{'id':_0x1b9d86[_0xaa0d('0x45')]['id']}},_0x1ece39={};_0x1ece39[_0xaa0d('0x34')]=_[_0xaa0d('0x31')](db[_0xaa0d('0x2b')][_0xaa0d('0x2c')]);_0x1ece39['query']=_[_0xaa0d('0x31')](_0x1b9d86[_0xaa0d('0x30')]);_0x1ece39['filters']=_['intersection'](_0x1ece39[_0xaa0d('0x34')],_0x1ece39[_0xaa0d('0x30')]);_0x52a32b[_0xaa0d('0x36')]=_[_0xaa0d('0x33')](_0x1ece39[_0xaa0d('0x34')],qs[_0xaa0d('0x35')](_0x1b9d86[_0xaa0d('0x30')][_0xaa0d('0x35')]));_0x52a32b[_0xaa0d('0x36')]=_0x52a32b[_0xaa0d('0x36')]['length']?_0x52a32b['attributes']:_0x1ece39[_0xaa0d('0x34')];if(_0x1b9d86[_0xaa0d('0x30')]['includeAll']){_0x52a32b[_0xaa0d('0x46')]=[{'all':!![]}];}_0x52a32b=_[_0xaa0d('0x3e')]({},_0x52a32b,_0x1b9d86[_0xaa0d('0x3f')]);return db[_0xaa0d('0x2b')]['find'](_0x52a32b)[_0xaa0d('0x25')](handleEntityNotFound(_0x12690a,null))[_0xaa0d('0x25')](respondWithResult(_0x12690a,null))[_0xaa0d('0x43')](handleError(_0x12690a,null));};exports['create']=function(_0x10082b,_0x42b560){return db[_0xaa0d('0x2b')][_0xaa0d('0x47')](_0x10082b['body'],{})[_0xaa0d('0x25')](respondWithResult(_0x42b560,0xc9))[_0xaa0d('0x43')](handleError(_0x42b560,null));};exports[_0xaa0d('0x24')]=function(_0x18e7b7,_0xf590c4){if(_0x18e7b7[_0xaa0d('0x48')]['id']){delete _0x18e7b7[_0xaa0d('0x48')]['id'];}return db[_0xaa0d('0x2b')][_0xaa0d('0x49')]({'where':{'id':_0x18e7b7['params']['id']}})[_0xaa0d('0x25')](handleEntityNotFound(_0xf590c4,null))['then'](saveUpdates(_0x18e7b7[_0xaa0d('0x48')],null))[_0xaa0d('0x25')](respondWithResult(_0xf590c4,null))[_0xaa0d('0x43')](handleError(_0xf590c4,null));};exports['destroy']=function(_0x33f1f3,_0x3d9fbf){return db['VoiceDialReport'][_0xaa0d('0x49')]({'where':{'id':_0x33f1f3[_0xaa0d('0x45')]['id']}})['then'](handleEntityNotFound(_0x3d9fbf,null))['then'](removeEntity(_0x3d9fbf,null))[_0xaa0d('0x43')](handleError(_0x3d9fbf,null));};exports[_0xaa0d('0x4a')]=function(_0x15d20e,_0x13ec59){return db[_0xaa0d('0x2b')][_0xaa0d('0x4a')]()[_0xaa0d('0x25')](respondWithResult(_0x13ec59,null))[_0xaa0d('0x43')](handleError(_0x13ec59,null));};
\ No newline at end of file
index b4bee46..602c190 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d3f=['request-promise','../../config/environment','./voiceDialReport.attributes','define','VoiceDialReport','report_dial','uniqueid','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x4e1991,_0xeb727c){var _0x318050=function(_0x1af113){while(--_0x1af113){_0x4e1991['push'](_0x4e1991['shift']());}};_0x318050(++_0xeb727c);}(_0x5d3f,0x18d));var _0xf5d3=function(_0x2f3610,_0x248f57){_0x2f3610=_0x2f3610-0x0;var _0x502dbe=_0x5d3f[_0x2f3610];return _0x502dbe;};'use strict';var _=require(_0xf5d3('0x0'));var util=require(_0xf5d3('0x1'));var logger=require(_0xf5d3('0x2'))(_0xf5d3('0x3'));var moment=require(_0xf5d3('0x4'));var BPromise=require(_0xf5d3('0x5'));var rp=require(_0xf5d3('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xf5d3('0x7'));var attributes=require(_0xf5d3('0x8'));module['exports']=function(_0x2e0c26,_0x395f9d){return _0x2e0c26[_0xf5d3('0x9')](_0xf5d3('0xa'),attributes,{'tableName':_0xf5d3('0xb'),'paranoid':![],'indexes':[{'fields':[_0xf5d3('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x72b1=['path','rimraf','./voiceDialReport.attributes','exports','VoiceDialReport','uniqueid','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0xae8724,_0x53e4f8){var _0x23c476=function(_0x4e1d31){while(--_0x4e1d31){_0xae8724['push'](_0xae8724['shift']());}};_0x23c476(++_0x53e4f8);}(_0x72b1,0x16e));var _0x172b=function(_0x190743,_0x6b7818){_0x190743=_0x190743-0x0;var _0x5169dc=_0x72b1[_0x190743];return _0x5169dc;};'use strict';var _=require(_0x172b('0x0'));var util=require('util');var logger=require(_0x172b('0x1'))(_0x172b('0x2'));var moment=require(_0x172b('0x3'));var BPromise=require(_0x172b('0x4'));var rp=require(_0x172b('0x5'));var fs=require('fs');var path=require(_0x172b('0x6'));var rimraf=require(_0x172b('0x7'));var config=require('../../config/environment');var attributes=require(_0x172b('0x8'));module[_0x172b('0x9')]=function(_0x475fd6,_0x222624){return _0x475fd6['define'](_0x172b('0xa'),attributes,{'tableName':'report_dial','paranoid':![],'indexes':[{'fields':[_0x172b('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 7cdc853..dc157ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf162=['../../config/environment','jayson/promise','client','http','request','info','VoiceDialReport,\x20%s,\x20%s','debug','VoiceDialReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateVoiceDialReport','VoiceDialReport','body','options','raw','then','update','where','attributes','UpdateVoiceDialReport','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x120b1e,_0x4d2bec){var _0x186859=function(_0xed22d){while(--_0xed22d){_0x120b1e['push'](_0x120b1e['shift']());}};_0x186859(++_0x4d2bec);}(_0xf162,0x1a6));var _0x2f16=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0xf162[_0x59ee6f];return _0x4c0979;};'use strict';var _=require('lodash');var util=require(_0x2f16('0x0'));var moment=require(_0x2f16('0x1'));var BPromise=require('bluebird');var rs=require(_0x2f16('0x2'));var fs=require('fs');var Redis=require(_0x2f16('0x3'));var db=require(_0x2f16('0x4'))['db'];var utils=require(_0x2f16('0x5'));var logger=require('../../config/logger')(_0x2f16('0x6'));var config=require(_0x2f16('0x7'));var jayson=require(_0x2f16('0x8'));var client=jayson[_0x2f16('0x9')][_0x2f16('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3af307,_0x1e8372,_0x29050f){return new BPromise(function(_0x5a40c2,_0x4f2995){return client[_0x2f16('0xb')](_0x3af307,_0x29050f)['then'](function(_0x140fac){logger[_0x2f16('0xc')](_0x2f16('0xd'),_0x1e8372,'request\x20sent');logger[_0x2f16('0xe')](_0x2f16('0xf'),_0x1e8372,_0x2f16('0x10'),JSON[_0x2f16('0x11')](_0x140fac));if(_0x140fac[_0x2f16('0x12')]){if(_0x140fac[_0x2f16('0x12')][_0x2f16('0x13')]===0x1f4){logger[_0x2f16('0x12')]('VoiceDialReport,\x20%s,\x20%s',_0x1e8372,_0x140fac['error']['message']);return _0x4f2995(_0x140fac[_0x2f16('0x12')]['message']);}logger['error'](_0x2f16('0xd'),_0x1e8372,_0x140fac[_0x2f16('0x12')][_0x2f16('0x14')]);return _0x5a40c2(_0x140fac[_0x2f16('0x12')][_0x2f16('0x14')]);}else{logger[_0x2f16('0xc')](_0x2f16('0xd'),_0x1e8372,_0x2f16('0x10'));_0x5a40c2(_0x140fac[_0x2f16('0x15')]['message']);}})[_0x2f16('0x16')](function(_0x4fc742){logger[_0x2f16('0x12')](_0x2f16('0xd'),_0x1e8372,_0x4fc742);_0x4f2995(_0x4fc742);});});}exports[_0x2f16('0x17')]=function(_0x18bb84){var _0xe37adb=this;return new Promise(function(_0x15b763,_0x43e2e6){return db[_0x2f16('0x18')]['create'](_0x18bb84[_0x2f16('0x19')],{'raw':_0x18bb84[_0x2f16('0x1a')]?_0x18bb84['options'][_0x2f16('0x1b')]===undefined?!![]:![]:!![]})[_0x2f16('0x1c')](function(_0x60e55){logger[_0x2f16('0xc')]('CreateVoiceDialReport',_0x18bb84);logger[_0x2f16('0xe')]('CreateVoiceDialReport',_0x18bb84,JSON[_0x2f16('0x11')](_0x60e55));_0x15b763(_0x60e55);})[_0x2f16('0x16')](function(_0x33e0e8){logger[_0x2f16('0x12')](_0x2f16('0x17'),_0x33e0e8[_0x2f16('0x14')],_0x18bb84);_0x43e2e6(_0xe37adb[_0x2f16('0x12')](0x1f4,_0x33e0e8[_0x2f16('0x14')]));});});};exports['UpdateVoiceDialReport']=function(_0x4e7be0){var _0x1259f5=this;return new Promise(function(_0x19f512,_0x32d7c7){return db[_0x2f16('0x18')][_0x2f16('0x1d')](_0x4e7be0['body'],{'raw':_0x4e7be0[_0x2f16('0x1a')]?_0x4e7be0[_0x2f16('0x1a')][_0x2f16('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4e7be0[_0x2f16('0x1a')]?_0x4e7be0[_0x2f16('0x1a')][_0x2f16('0x1e')]||null:null,'attributes':_0x4e7be0['options']?_0x4e7be0[_0x2f16('0x1a')][_0x2f16('0x1f')]||null:null,'limit':_0x4e7be0[_0x2f16('0x1a')]?_0x4e7be0[_0x2f16('0x1a')]['limit']||null:null})[_0x2f16('0x1c')](function(_0x16c4ff){logger[_0x2f16('0xc')](_0x2f16('0x20'),_0x4e7be0);logger[_0x2f16('0xe')](_0x2f16('0x20'),_0x4e7be0,JSON[_0x2f16('0x11')](_0x16c4ff));_0x19f512(_0x16c4ff);})[_0x2f16('0x16')](function(_0x55268a){logger['error'](_0x2f16('0x20'),_0x55268a[_0x2f16('0x14')],_0x4e7be0);_0x32d7c7(_0x1259f5[_0x2f16('0x12')](0x1f4,_0x55268a[_0x2f16('0x14')]));});});};
\ No newline at end of file
+var _0xe675=['UpdateVoiceDialReport','where','attributes','limit','stringify','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','info','debug','request\x20sent','error','code','VoiceDialReport,\x20%s,\x20%s','message','result','catch','VoiceDialReport','create','body','options','raw','CreateVoiceDialReport'];(function(_0x748d6b,_0x464a7a){var _0x4048d7=function(_0x3073ab){while(--_0x3073ab){_0x748d6b['push'](_0x748d6b['shift']());}};_0x4048d7(++_0x464a7a);}(_0xe675,0x68));var _0x5e67=function(_0x48188b,_0x1adcc5){_0x48188b=_0x48188b-0x0;var _0x24357c=_0xe675[_0x48188b];return _0x24357c;};'use strict';var _=require(_0x5e67('0x0'));var util=require(_0x5e67('0x1'));var moment=require('moment');var BPromise=require(_0x5e67('0x2'));var rs=require(_0x5e67('0x3'));var fs=require('fs');var Redis=require(_0x5e67('0x4'));var db=require(_0x5e67('0x5'))['db'];var utils=require(_0x5e67('0x6'));var logger=require('../../config/logger')(_0x5e67('0x7'));var config=require(_0x5e67('0x8'));var jayson=require(_0x5e67('0x9'));var client=jayson[_0x5e67('0xa')][_0x5e67('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x183908,_0x566593,_0x9e7b49){return new BPromise(function(_0x92d0a1,_0x2d32e9){return client['request'](_0x183908,_0x9e7b49)[_0x5e67('0xc')](function(_0x4c54ee){logger[_0x5e67('0xd')]('VoiceDialReport,\x20%s,\x20%s',_0x566593,'request\x20sent');logger[_0x5e67('0xe')]('VoiceDialReport,\x20%s,\x20%s,\x20%s',_0x566593,_0x5e67('0xf'),JSON['stringify'](_0x4c54ee));if(_0x4c54ee[_0x5e67('0x10')]){if(_0x4c54ee[_0x5e67('0x10')][_0x5e67('0x11')]===0x1f4){logger[_0x5e67('0x10')](_0x5e67('0x12'),_0x566593,_0x4c54ee[_0x5e67('0x10')][_0x5e67('0x13')]);return _0x2d32e9(_0x4c54ee[_0x5e67('0x10')][_0x5e67('0x13')]);}logger[_0x5e67('0x10')](_0x5e67('0x12'),_0x566593,_0x4c54ee[_0x5e67('0x10')][_0x5e67('0x13')]);return _0x92d0a1(_0x4c54ee[_0x5e67('0x10')]['message']);}else{logger[_0x5e67('0xd')]('VoiceDialReport,\x20%s,\x20%s',_0x566593,'request\x20sent');_0x92d0a1(_0x4c54ee[_0x5e67('0x14')]['message']);}})[_0x5e67('0x15')](function(_0x256402){logger[_0x5e67('0x10')](_0x5e67('0x12'),_0x566593,_0x256402);_0x2d32e9(_0x256402);});});}exports['CreateVoiceDialReport']=function(_0x8a13d2){var _0x4eedf7=this;return new Promise(function(_0x5381ff,_0x4995a7){return db[_0x5e67('0x16')][_0x5e67('0x17')](_0x8a13d2[_0x5e67('0x18')],{'raw':_0x8a13d2[_0x5e67('0x19')]?_0x8a13d2[_0x5e67('0x19')][_0x5e67('0x1a')]===undefined?!![]:![]:!![]})['then'](function(_0x5e39c4){logger[_0x5e67('0xd')]('CreateVoiceDialReport',_0x8a13d2);logger[_0x5e67('0xe')](_0x5e67('0x1b'),_0x8a13d2,JSON['stringify'](_0x5e39c4));_0x5381ff(_0x5e39c4);})[_0x5e67('0x15')](function(_0x2c0066){logger['error'](_0x5e67('0x1b'),_0x2c0066[_0x5e67('0x13')],_0x8a13d2);_0x4995a7(_0x4eedf7[_0x5e67('0x10')](0x1f4,_0x2c0066[_0x5e67('0x13')]));});});};exports[_0x5e67('0x1c')]=function(_0xed81f8){var _0x22163d=this;return new Promise(function(_0xef20c1,_0x3852a8){return db[_0x5e67('0x16')]['update'](_0xed81f8[_0x5e67('0x18')],{'raw':_0xed81f8[_0x5e67('0x19')]?_0xed81f8['options'][_0x5e67('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xed81f8[_0x5e67('0x19')]?_0xed81f8[_0x5e67('0x19')][_0x5e67('0x1d')]||null:null,'attributes':_0xed81f8[_0x5e67('0x19')]?_0xed81f8[_0x5e67('0x19')][_0x5e67('0x1e')]||null:null,'limit':_0xed81f8[_0x5e67('0x19')]?_0xed81f8[_0x5e67('0x19')][_0x5e67('0x1f')]||null:null})[_0x5e67('0xc')](function(_0x37f8ec){logger[_0x5e67('0xd')](_0x5e67('0x1c'),_0xed81f8);logger['debug'](_0x5e67('0x1c'),_0xed81f8,JSON[_0x5e67('0x20')](_0x37f8ec));_0xef20c1(_0x37f8ec);})[_0x5e67('0x15')](function(_0x6fba80){logger[_0x5e67('0x10')](_0x5e67('0x1c'),_0x6fba80[_0x5e67('0x13')],_0xed81f8);_0x3852a8(_0x22163d[_0x5e67('0x10')](0x1f4,_0x6fba80[_0x5e67('0x13')]));});});};
\ No newline at end of file
index 96eb5d0..74fc46b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x503f=['show','post','create','/:id/applications','put','delete','destroy','exports','multer','util','path','fs-extra','./voiceExtension.controller','get','index','/:id','isAuthenticated'];(function(_0x11062a,_0x286e8d){var _0x511a54=function(_0x36207a){while(--_0x36207a){_0x11062a['push'](_0x11062a['shift']());}};_0x511a54(++_0x286e8d);}(_0x503f,0x90));var _0xf503=function(_0x389f9e,_0x5d41ac){_0x389f9e=_0x389f9e-0x0;var _0x5cce80=_0x503f[_0x389f9e];return _0x5cce80;};'use strict';var multer=require(_0xf503('0x0'));var util=require(_0xf503('0x1'));var path=require(_0xf503('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xf503('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xf503('0x4'));router[_0xf503('0x5')]('/',auth['isAuthenticated'](),controller[_0xf503('0x6')]);router[_0xf503('0x5')](_0xf503('0x7'),auth[_0xf503('0x8')](),controller[_0xf503('0x9')]);router[_0xf503('0xa')]('/',auth[_0xf503('0x8')](),controller[_0xf503('0xb')]);router['post'](_0xf503('0xc'),auth[_0xf503('0x8')](),controller['addApplications']);router[_0xf503('0xd')](_0xf503('0x7'),auth[_0xf503('0x8')](),controller['update']);router[_0xf503('0xe')](_0xf503('0x7'),auth[_0xf503('0x8')](),controller[_0xf503('0xf')]);module[_0xf503('0x10')]=router;
\ No newline at end of file
+var _0x772b=['index','/:id','show','post','create','/:id/applications','addApplications','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated'];(function(_0x30d568,_0x2a6441){var _0x402532=function(_0x1c49f3){while(--_0x1c49f3){_0x30d568['push'](_0x30d568['shift']());}};_0x402532(++_0x2a6441);}(_0x772b,0x17c));var _0xb772=function(_0xdc5406,_0x3df8ab){_0xdc5406=_0xdc5406-0x0;var _0x153d03=_0x772b[_0xdc5406];return _0x153d03;};'use strict';var multer=require(_0xb772('0x0'));var util=require(_0xb772('0x1'));var path=require(_0xb772('0x2'));var timeout=require(_0xb772('0x3'));var express=require(_0xb772('0x4'));var router=express['Router']();var fs_extra=require(_0xb772('0x5'));var auth=require(_0xb772('0x6'));var interaction=require(_0xb772('0x7'));var config=require(_0xb772('0x8'));var controller=require('./voiceExtension.controller');router[_0xb772('0x9')]('/',auth[_0xb772('0xa')](),controller[_0xb772('0xb')]);router['get'](_0xb772('0xc'),auth[_0xb772('0xa')](),controller[_0xb772('0xd')]);router[_0xb772('0xe')]('/',auth[_0xb772('0xa')](),controller[_0xb772('0xf')]);router[_0xb772('0xe')](_0xb772('0x10'),auth['isAuthenticated'](),controller[_0xb772('0x11')]);router[_0xb772('0x12')](_0xb772('0xc'),auth[_0xb772('0xa')](),controller[_0xb772('0x13')]);router[_0xb772('0x14')](_0xb772('0xc'),auth[_0xb772('0xa')](),controller[_0xb772('0x15')]);module[_0xb772('0x16')]=router;
\ No newline at end of file
index 36f8e0a..4f5ad47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e81=['ENUM','inbound','internal','inbound-fax','outbound-fax','system','any','*,*,*,*','BOOLEAN','INTEGER','VIRTUAL','getDataValue','exten','sequelize','exports','STRING','compositeIndex'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x7e81,0xd9));var _0x17e8=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x7e81[_0x502c7d];return _0x30b7ed;};'use strict';var Sequelize=require(_0x17e8('0x0'));module[_0x17e8('0x1')]={'context':{'type':Sequelize[_0x17e8('0x2')],'allowNull':![],'unique':_0x17e8('0x3'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x17e8('0x3')},'priority':{'type':Sequelize[_0x17e8('0x2')],'allowNull':![],'defaultValue':'1','unique':_0x17e8('0x3')},'tag':{'type':Sequelize[_0x17e8('0x2')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'NoOp'},'appdata':{'type':Sequelize['STRING'](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0x17e8('0x4')](_0x17e8('0x5'),'outbound',_0x17e8('0x6'),_0x17e8('0x7'),_0x17e8('0x8'),_0x17e8('0x9'),_0x17e8('0xa')),'allowNull':![]},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x17e8('0x2')],'allowNull':![],'defaultValue':_0x17e8('0xb')},'IntervalId':{'type':Sequelize['INTEGER']},'isApp':{'type':Sequelize[_0x17e8('0xc')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0x17e8('0x2')],'defaultValue':null},'callerID':{'type':Sequelize['STRING'],'allowNull':!![]},'record':{'type':Sequelize[_0x17e8('0xc')],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0x17e8('0xd')]},'recordingFormat':{'type':Sequelize[_0x17e8('0x2')],'defaultValue':'wav'},'answer':{'type':Sequelize[_0x17e8('0xc')],'defaultValue':!![]},'name':{'type':Sequelize[_0x17e8('0xe')],'get':function(_0x361655){return this[_0x17e8('0xf')](_0x17e8('0x10'));}},'alias':{'type':Sequelize[_0x17e8('0x2')],'allowNull':!![]}};
\ No newline at end of file
+var _0x2085=['NoOp','ENUM','internal','inbound-fax','outbound-fax','system','*,*,*,*','INTEGER','BOOLEAN','getDataValue','sequelize','exports','STRING','compositeIndex'];(function(_0x3aa9c0,_0x242ff3){var _0x49c51d=function(_0x5b8f07){while(--_0x5b8f07){_0x3aa9c0['push'](_0x3aa9c0['shift']());}};_0x49c51d(++_0x242ff3);}(_0x2085,0x1ae));var _0x5208=function(_0x5678b5,_0x1c4aa8){_0x5678b5=_0x5678b5-0x0;var _0x4c09a5=_0x2085[_0x5678b5];return _0x4c09a5;};'use strict';var Sequelize=require(_0x5208('0x0'));module[_0x5208('0x1')]={'context':{'type':Sequelize[_0x5208('0x2')],'allowNull':![],'unique':_0x5208('0x3'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0x5208('0x2')],'allowNull':![],'unique':_0x5208('0x3')},'priority':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'1','unique':_0x5208('0x3')},'tag':{'type':Sequelize[_0x5208('0x2')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0x5208('0x2')],'allowNull':![],'defaultValue':_0x5208('0x4')},'appdata':{'type':Sequelize[_0x5208('0x2')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0x5208('0x5')]('inbound','outbound',_0x5208('0x6'),_0x5208('0x7'),_0x5208('0x8'),_0x5208('0x9'),'any'),'allowNull':![]},'description':{'type':Sequelize[_0x5208('0x2')]},'interval':{'type':Sequelize[_0x5208('0x2')],'allowNull':![],'defaultValue':_0x5208('0xa')},'IntervalId':{'type':Sequelize[_0x5208('0xb')]},'isApp':{'type':Sequelize[_0x5208('0xc')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0x5208('0x2')],'defaultValue':null},'callerID':{'type':Sequelize[_0x5208('0x2')],'allowNull':!![]},'record':{'type':Sequelize[_0x5208('0xc')],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0x5208('0xb')]},'recordingFormat':{'type':Sequelize[_0x5208('0x2')],'defaultValue':'wav'},'answer':{'type':Sequelize[_0x5208('0xc')],'defaultValue':!![]},'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x541818){return this[_0x5208('0xd')]('exten');}},'alias':{'type':Sequelize['STRING'],'allowNull':!![]}};
\ No newline at end of file
index 60695a2..7f1eeab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5eb8=['hasOwnProperty','sort','where','pick','merge','VIRTUAL','options','includeAll','include','VoiceExtension','findAll','rows','catch','show','params','keys','find','create','body','exten','concat','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','internal','UserProfileSection','userProfileId','update','context','recordingFormat','mandatoryDisposition','alias','addApplications','transaction','Transaction','ISOLATION_LEVELS','VoiceExtensionId','isApp','createRouting','bulkCreate','findAndCountAll','cast(priority\x20as\x20unsigned)','send','lodash','ioredis','../../components/parsers/qs','../../config/logger','api','../../mysqldb','redis','localhost','socket.io-emitter','./voiceExtension.socket','sendStatus','status','offset','undefined','limit','count','set','json','destroy','then','get','InboundRoutes','inbound','OutboundRoutes','outbound','InternalRoutes','filter','ignore','map','value','type','name','UserProfileResource','error','stack','index','rawAttributes','query','filters','intersection','model','fields','attributes','length'];(function(_0x2a457d,_0x1f4ee4){var _0x6074eb=function(_0x283d77){while(--_0x283d77){_0x2a457d['push'](_0x2a457d['shift']());}};_0x6074eb(++_0x1f4ee4);}(_0x5eb8,0x130));var _0x85eb=function(_0x35da42,_0x5c2610){_0x35da42=_0x35da42-0x0;var _0x370035=_0x5eb8[_0x35da42];return _0x370035;};'use strict';var _=require(_0x85eb('0x0'));var Redis=require(_0x85eb('0x1'));var qs=require(_0x85eb('0x2'));var logger=require(_0x85eb('0x3'))(_0x85eb('0x4'));var config=require('../../config/environment');var db=require(_0x85eb('0x5'))['db'];config['redis']=_['defaults'](config[_0x85eb('0x6')],{'host':_0x85eb('0x7'),'port':0x18eb});var socket=require(_0x85eb('0x8'))(new Redis(config[_0x85eb('0x6')]));require(_0x85eb('0x9'))['register'](socket);function respondWithStatusCode(_0x27f6a6,_0x5a7c28){_0x5a7c28=_0x5a7c28||0xcc;return function(_0x3afdf6){if(_0x3afdf6){return _0x27f6a6[_0x85eb('0xa')](_0x5a7c28);}return _0x27f6a6[_0x85eb('0xb')](_0x5a7c28)['end']();};}function respondWithResult(_0x25bd88,_0x119075){_0x119075=_0x119075||0xc8;return function(_0x47c56c){if(_0x47c56c){return _0x25bd88[_0x85eb('0xb')](_0x119075)['json'](_0x47c56c);}};}function respondWithFilteredResult(_0xebc5ca,_0x263948){return function(_0x1f1c40){if(_0x1f1c40){var _0x50f476=typeof _0x263948[_0x85eb('0xc')]===_0x85eb('0xd')&&typeof _0x263948[_0x85eb('0xe')]===_0x85eb('0xd');var _0x4ca0e8=_0x1f1c40[_0x85eb('0xf')];var _0x18fd45=_0x50f476?0x0:_0x263948['offset'];var _0x12b661=_0x50f476?_0x1f1c40[_0x85eb('0xf')]:_0x263948[_0x85eb('0xc')]+_0x263948[_0x85eb('0xe')];var _0x485ec7;if(_0x12b661>=_0x4ca0e8){_0x12b661=_0x4ca0e8;_0x485ec7=0xc8;}else{_0x485ec7=0xce;}_0xebc5ca[_0x85eb('0xb')](_0x485ec7);return _0xebc5ca[_0x85eb('0x10')]('Content-Range',_0x18fd45+'-'+_0x12b661+'/'+_0x4ca0e8)[_0x85eb('0x11')](_0x1f1c40);}return null;};}function removeEntity(_0x5d0f3b){return function(_0x4890d8){if(_0x4890d8){return _0x4890d8[_0x85eb('0x12')]()[_0x85eb('0x13')](function(){var _0x2acb3f=_0x4890d8[_0x85eb('0x14')]({'plain':!![]});var _0x2d6fcd=[{'name':_0x85eb('0x15'),'value':_0x85eb('0x16'),'ignore':![]},{'name':_0x85eb('0x17'),'value':_0x85eb('0x18'),'ignore':![]},{'name':_0x85eb('0x19'),'value':'internal','ignore':![]}];var _0x5c16e3=_(_0x2d6fcd)[_0x85eb('0x1a')](_0x85eb('0x1b'))[_0x85eb('0x1c')](_0x85eb('0x1d'))[_0x85eb('0x1d')]();if(_['includes'](_0x5c16e3,_0x2acb3f[_0x85eb('0x1e')])){return;}var _0x51c2af=_['find'](_0x2d6fcd,['value',_0x2acb3f['type']])[_0x85eb('0x1f')];return db[_0x85eb('0x20')][_0x85eb('0x12')]({'where':{'type':_0x51c2af,'resourceId':_0x2acb3f['id']}})[_0x85eb('0x13')](function(){return _0x4890d8;});})[_0x85eb('0x13')](function(){_0x5d0f3b[_0x85eb('0xb')](0xcc)['end']();});}};}function handleEntityNotFound(_0x45b237){return function(_0x4eb01a){if(!_0x4eb01a){_0x45b237['sendStatus'](0x194);}return _0x4eb01a;};}function handleError(_0x4ef37a,_0x39e180){_0x39e180=_0x39e180||0x1f4;return function(_0x7aab7d){logger[_0x85eb('0x21')](_0x7aab7d[_0x85eb('0x22')]);if(_0x7aab7d['name']){delete _0x7aab7d['name'];}_0x4ef37a['status'](_0x39e180)['send'](_0x7aab7d);};}exports[_0x85eb('0x23')]=function(_0x8224c8,_0x4e077a){var _0x1c3637={},_0x3e1905={},_0x350b42={'count':0x0,'rows':[]};var _0x55ec8a=_[_0x85eb('0x1c')](db['VoiceExtension'][_0x85eb('0x24')],function(_0x3a6b57){return{'name':_0x3a6b57['fieldName'],'type':_0x3a6b57[_0x85eb('0x1e')]['key']};});_0x3e1905['model']=_['map'](_0x55ec8a,_0x85eb('0x1f'));_0x3e1905[_0x85eb('0x25')]=_['keys'](_0x8224c8[_0x85eb('0x25')]);_0x3e1905[_0x85eb('0x26')]=_[_0x85eb('0x27')](_0x3e1905['model'],_0x3e1905[_0x85eb('0x25')]);_0x1c3637['attributes']=_['intersection'](_0x3e1905[_0x85eb('0x28')],qs[_0x85eb('0x29')](_0x8224c8[_0x85eb('0x25')][_0x85eb('0x29')]));_0x1c3637[_0x85eb('0x2a')]=_0x1c3637[_0x85eb('0x2a')][_0x85eb('0x2b')]?_0x1c3637[_0x85eb('0x2a')]:_0x3e1905[_0x85eb('0x28')];if(!_0x8224c8[_0x85eb('0x25')][_0x85eb('0x2c')]('nolimit')){_0x1c3637[_0x85eb('0xe')]=qs[_0x85eb('0xe')](_0x8224c8[_0x85eb('0x25')]['limit']);_0x1c3637[_0x85eb('0xc')]=qs[_0x85eb('0xc')](_0x8224c8[_0x85eb('0x25')]['offset']);}_0x1c3637['order']=qs[_0x85eb('0x2d')](_0x8224c8[_0x85eb('0x25')][_0x85eb('0x2d')]);_0x1c3637[_0x85eb('0x2e')]=qs[_0x85eb('0x26')](_[_0x85eb('0x2f')](_0x8224c8[_0x85eb('0x25')],_0x3e1905[_0x85eb('0x26')]),_0x55ec8a);if(_0x8224c8[_0x85eb('0x25')][_0x85eb('0x1a')]){_0x1c3637[_0x85eb('0x2e')]=_[_0x85eb('0x30')](_0x1c3637['where'],{'$or':_[_0x85eb('0x1c')](_0x55ec8a,function(_0x703deb){if(_0x703deb['type']!==_0x85eb('0x31')){var _0x48d1f9={};_0x48d1f9[_0x703deb['name']]={'$like':'%'+_0x8224c8[_0x85eb('0x25')][_0x85eb('0x1a')]+'%'};return _0x48d1f9;}})});}_0x1c3637=_[_0x85eb('0x30')]({},_0x1c3637,_0x8224c8[_0x85eb('0x32')]);var _0x581fc2={'where':_0x1c3637[_0x85eb('0x2e')]};return db['VoiceExtension'][_0x85eb('0xf')](_0x581fc2)['then'](function(_0x4a61b2){_0x350b42[_0x85eb('0xf')]=_0x4a61b2;if(_0x8224c8[_0x85eb('0x25')][_0x85eb('0x33')]){_0x1c3637[_0x85eb('0x34')]=[{'all':!![]}];}return db[_0x85eb('0x35')][_0x85eb('0x36')](_0x1c3637);})['then'](function(_0x289714){_0x350b42[_0x85eb('0x37')]=_0x289714;return _0x350b42;})[_0x85eb('0x13')](respondWithFilteredResult(_0x4e077a,_0x1c3637))[_0x85eb('0x38')](handleError(_0x4e077a,null));};exports[_0x85eb('0x39')]=function(_0x1d8034,_0x4d56d8){var _0x1abe94={'raw':![],'where':{'id':_0x1d8034[_0x85eb('0x3a')]['id']}},_0x3ad1cd={};_0x3ad1cd['model']=_[_0x85eb('0x3b')](db[_0x85eb('0x35')][_0x85eb('0x24')]);_0x3ad1cd[_0x85eb('0x25')]=_[_0x85eb('0x3b')](_0x1d8034['query']);_0x3ad1cd[_0x85eb('0x26')]=_[_0x85eb('0x27')](_0x3ad1cd['model'],_0x3ad1cd[_0x85eb('0x25')]);_0x1abe94['attributes']=_[_0x85eb('0x27')](_0x3ad1cd[_0x85eb('0x28')],qs[_0x85eb('0x29')](_0x1d8034['query']['fields']));_0x1abe94[_0x85eb('0x2a')]=_0x1abe94[_0x85eb('0x2a')][_0x85eb('0x2b')]?_0x1abe94['attributes']:_0x3ad1cd[_0x85eb('0x28')];if(_0x1d8034[_0x85eb('0x25')]['includeAll']){_0x1abe94[_0x85eb('0x34')]=[{'all':!![]}];}_0x1abe94=_[_0x85eb('0x30')]({},_0x1abe94,_0x1d8034[_0x85eb('0x32')]);return db[_0x85eb('0x35')][_0x85eb('0x3c')](_0x1abe94)[_0x85eb('0x13')](handleEntityNotFound(_0x4d56d8,null))[_0x85eb('0x13')](respondWithResult(_0x4d56d8,null))[_0x85eb('0x38')](handleError(_0x4d56d8,null));};exports['destroy']=function(_0x262217,_0xc1cba7){return db[_0x85eb('0x35')][_0x85eb('0x3c')]({'where':{'id':_0x262217[_0x85eb('0x3a')]['id']}})[_0x85eb('0x13')](handleEntityNotFound(_0xc1cba7,null))[_0x85eb('0x13')](removeEntity(_0xc1cba7,null))['catch'](handleError(_0xc1cba7,null));};exports[_0x85eb('0x3d')]=function(_0x44834b,_0x5d3c53){if(_0x44834b['body'][_0x85eb('0x1e')]===_0x85eb('0x18')&&!_['startsWith'](_0x44834b[_0x85eb('0x3e')][_0x85eb('0x3f')],'_')){_0x44834b[_0x85eb('0x3e')][_0x85eb('0x3f')]='_'[_0x85eb('0x40')](_0x44834b[_0x85eb('0x3e')][_0x85eb('0x3f')]);}return db['VoiceExtension']['create'](_0x44834b[_0x85eb('0x3e')],{'raw':![]})['then'](function(_0x8fd76f){var _0x124023=_0x44834b[_0x85eb('0x41')][_0x85eb('0x14')]({'plain':!![]});if(!_0x124023)throw new Error(_0x85eb('0x42'));if(_0x124023[_0x85eb('0x43')]===_0x85eb('0x41')){var _0x26174c=_0x8fd76f[_0x85eb('0x14')]({'plain':!![]});var _0x5c06cf=[{'name':_0x85eb('0x15'),'value':_0x85eb('0x16')},{'name':_0x85eb('0x17'),'value':_0x85eb('0x18')},{'name':_0x85eb('0x19'),'value':_0x85eb('0x44')}];var _0x513729=_['find'](_0x5c06cf,[_0x85eb('0x1d'),_0x26174c['type']])[_0x85eb('0x1f')];return db[_0x85eb('0x45')][_0x85eb('0x3c')]({'where':{'name':_0x513729,'userProfileId':_0x124023[_0x85eb('0x46')]},'raw':!![]})[_0x85eb('0x13')](function(_0x5a821f){if(_0x5a821f&&_0x5a821f['autoAssociation']===0x0){return db[_0x85eb('0x20')][_0x85eb('0x3d')]({'name':_0x26174c[_0x85eb('0x1f')],'resourceId':_0x26174c['id'],'type':_0x5a821f[_0x85eb('0x1f')],'sectionId':_0x5a821f['id']},{})[_0x85eb('0x13')](function(){return _0x8fd76f;});}else{return _0x8fd76f;}})[_0x85eb('0x38')](function(_0x3054a4){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3054a4);throw _0x3054a4;});}return _0x8fd76f;})[_0x85eb('0x13')](respondWithResult(_0x5d3c53,0xc9))[_0x85eb('0x38')](handleError(_0x5d3c53,null));};exports['update']=function(_0x133143,_0x79a21){if(_0x133143[_0x85eb('0x3e')]['id']){delete _0x133143[_0x85eb('0x3e')]['id'];}return db[_0x85eb('0x35')]['find']({'where':{'id':_0x133143[_0x85eb('0x3a')]['id']}})[_0x85eb('0x13')](handleEntityNotFound(_0x79a21,null))['then'](function(_0x4a881c){if(_0x4a881c){return db[_0x85eb('0x35')][_0x85eb('0x47')](_['pick'](_0x133143['body'],[_0x85eb('0x3f'),_0x85eb('0x48'),'description',_0x85eb('0x49'),'cutdigits',_0x85eb('0x4a'),_0x85eb('0x4b')]),{'where':{'context':_0x4a881c['context'],'exten':_0x4a881c[_0x85eb('0x3f')]},'individualHooks':!![]})[_0x85eb('0x13')](function(_0x10c70c){return _0x10c70c;});}return null;})[_0x85eb('0x13')](respondWithStatusCode(_0x79a21,null))['catch'](handleError(_0x79a21,null));};exports[_0x85eb('0x4c')]=function(_0xd07634,_0x502bf9){var _0x63148b=_0xd07634['params']['id'];var _0x155554=_0xd07634[_0x85eb('0x3e')];var _0x5276ed=0xc8;var _0x1b6f85=null;return db['sequelize'][_0x85eb('0x4d')]({'isolationLevel':db['sequelize'][_0x85eb('0x4e')][_0x85eb('0x4f')]['READ_COMMITTED']},function(_0x3c8fa6){return db[_0x85eb('0x35')]['findOne']({'where':{'id':_0x63148b},'transaction':_0x3c8fa6})[_0x85eb('0x13')](function(_0x20dc97){if(_0x20dc97){return db['VoiceExtension'][_0x85eb('0x12')]({'where':{'VoiceExtensionId':_0x63148b},'transaction':_0x3c8fa6})[_0x85eb('0x13')](function(){var _0x578edc=_[_0x85eb('0x1c')](_0x155554,function(_0x3b6c2d){_0x3b6c2d[_0x85eb('0x50')]=_0x63148b;_0x3b6c2d[_0x85eb('0x51')]=!![];return _0x3b6c2d;});return _0x20dc97[_0x85eb('0x52')](_0x578edc);})[_0x85eb('0x13')](function(_0x1e925e){return db[_0x85eb('0x35')][_0x85eb('0x53')](_0x1e925e,{'transaction':_0x3c8fa6});});}else{_0x5276ed=0x194;_0x1b6f85=[];}});})['then'](function(){if(_0x5276ed!==0x194){return db[_0x85eb('0x35')][_0x85eb('0x54')]({'where':{'isApp':!![],'VoiceExtensionId':_0x63148b},'order':_0x85eb('0x55')})['then'](function(_0xeeb257){_0x1b6f85=_0xeeb257;});}})[_0x85eb('0x38')](function(_0x518f2d){_0x5276ed=0x1f4;logger[_0x85eb('0x21')](_0x518f2d[_0x85eb('0x22')]);if(_0x518f2d[_0x85eb('0x1f')]){delete _0x518f2d[_0x85eb('0x1f')];}_0x1b6f85=_0x518f2d;})['finally'](function(){if(_0x1b6f85===null){_0x502bf9[_0x85eb('0xa')](_0x5276ed);}else{if(_0x5276ed===0x1f4){_0x502bf9[_0x85eb('0xb')](_0x5276ed)[_0x85eb('0x56')](_0x1b6f85);}else{_0x502bf9[_0x85eb('0xb')](_0x5276ed)['json'](_0x1b6f85);}}});};
\ No newline at end of file
+var _0xee6f=['filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','merge','where','VIRTUAL','options','count','include','findAll','rows','catch','show','params','keys','includeAll','create','body','startsWith','exten','concat','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','pick','context','description','recordingFormat','mandatoryDisposition','alias','addApplications','transaction','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','isApp','createRouting','bulkCreate','findAndCountAll','cast(priority\x20as\x20unsigned)','lodash','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./voiceExtension.socket','register','sendStatus','status','end','json','offset','limit','undefined','set','Content-Range','destroy','then','get','InboundRoutes','inbound','OutboundRoutes','outbound','InternalRoutes','internal','filter','ignore','value','includes','type','find','name','UserProfileResource','error','stack','send','index','VoiceExtension','rawAttributes','fieldName','key','model','map','query'];(function(_0x5338b3,_0x148023){var _0x50d986=function(_0x3299b){while(--_0x3299b){_0x5338b3['push'](_0x5338b3['shift']());}};_0x50d986(++_0x148023);}(_0xee6f,0x100));var _0xfee6=function(_0x2d1ff6,_0x182530){_0x2d1ff6=_0x2d1ff6-0x0;var _0x2f1298=_0xee6f[_0x2d1ff6];return _0x2f1298;};'use strict';var _=require(_0xfee6('0x0'));var Redis=require(_0xfee6('0x1'));var qs=require(_0xfee6('0x2'));var logger=require(_0xfee6('0x3'))(_0xfee6('0x4'));var config=require(_0xfee6('0x5'));var db=require(_0xfee6('0x6'))['db'];config[_0xfee6('0x7')]=_[_0xfee6('0x8')](config[_0xfee6('0x7')],{'host':_0xfee6('0x9'),'port':0x18eb});var socket=require(_0xfee6('0xa'))(new Redis(config['redis']));require(_0xfee6('0xb'))[_0xfee6('0xc')](socket);function respondWithStatusCode(_0x43fc1d,_0xf98a0c){_0xf98a0c=_0xf98a0c||0xcc;return function(_0x2cc3e1){if(_0x2cc3e1){return _0x43fc1d[_0xfee6('0xd')](_0xf98a0c);}return _0x43fc1d[_0xfee6('0xe')](_0xf98a0c)[_0xfee6('0xf')]();};}function respondWithResult(_0x214c07,_0x3fac37){_0x3fac37=_0x3fac37||0xc8;return function(_0x4f65d5){if(_0x4f65d5){return _0x214c07[_0xfee6('0xe')](_0x3fac37)[_0xfee6('0x10')](_0x4f65d5);}};}function respondWithFilteredResult(_0x2db456,_0x1b035e){return function(_0xd7baef){if(_0xd7baef){var _0x4e2100=typeof _0x1b035e[_0xfee6('0x11')]==='undefined'&&typeof _0x1b035e[_0xfee6('0x12')]===_0xfee6('0x13');var _0x205741=_0xd7baef['count'];var _0x164793=_0x4e2100?0x0:_0x1b035e[_0xfee6('0x11')];var _0x50b34c=_0x4e2100?_0xd7baef['count']:_0x1b035e[_0xfee6('0x11')]+_0x1b035e[_0xfee6('0x12')];var _0x334f8a;if(_0x50b34c>=_0x205741){_0x50b34c=_0x205741;_0x334f8a=0xc8;}else{_0x334f8a=0xce;}_0x2db456['status'](_0x334f8a);return _0x2db456[_0xfee6('0x14')](_0xfee6('0x15'),_0x164793+'-'+_0x50b34c+'/'+_0x205741)[_0xfee6('0x10')](_0xd7baef);}return null;};}function removeEntity(_0x3498cc){return function(_0x580b77){if(_0x580b77){return _0x580b77[_0xfee6('0x16')]()[_0xfee6('0x17')](function(){var _0x4e305d=_0x580b77[_0xfee6('0x18')]({'plain':!![]});var _0xd0c4c2=[{'name':_0xfee6('0x19'),'value':_0xfee6('0x1a'),'ignore':![]},{'name':_0xfee6('0x1b'),'value':_0xfee6('0x1c'),'ignore':![]},{'name':_0xfee6('0x1d'),'value':_0xfee6('0x1e'),'ignore':![]}];var _0x1d1dcb=_(_0xd0c4c2)[_0xfee6('0x1f')](_0xfee6('0x20'))['map'](_0xfee6('0x21'))[_0xfee6('0x21')]();if(_[_0xfee6('0x22')](_0x1d1dcb,_0x4e305d[_0xfee6('0x23')])){return;}var _0xb6d429=_[_0xfee6('0x24')](_0xd0c4c2,['value',_0x4e305d[_0xfee6('0x23')]])[_0xfee6('0x25')];return db[_0xfee6('0x26')][_0xfee6('0x16')]({'where':{'type':_0xb6d429,'resourceId':_0x4e305d['id']}})[_0xfee6('0x17')](function(){return _0x580b77;});})[_0xfee6('0x17')](function(){_0x3498cc[_0xfee6('0xe')](0xcc)[_0xfee6('0xf')]();});}};}function handleEntityNotFound(_0x40705f){return function(_0x1072e2){if(!_0x1072e2){_0x40705f[_0xfee6('0xd')](0x194);}return _0x1072e2;};}function handleError(_0x4a2392,_0x5a42bc){_0x5a42bc=_0x5a42bc||0x1f4;return function(_0x2e6494){logger[_0xfee6('0x27')](_0x2e6494[_0xfee6('0x28')]);if(_0x2e6494[_0xfee6('0x25')]){delete _0x2e6494[_0xfee6('0x25')];}_0x4a2392['status'](_0x5a42bc)[_0xfee6('0x29')](_0x2e6494);};}exports[_0xfee6('0x2a')]=function(_0x411081,_0x6a54fd){var _0x6e743={},_0x2b7d2a={},_0x3aea5a={'count':0x0,'rows':[]};var _0x568296=_['map'](db[_0xfee6('0x2b')][_0xfee6('0x2c')],function(_0xee1dee){return{'name':_0xee1dee[_0xfee6('0x2d')],'type':_0xee1dee['type'][_0xfee6('0x2e')]};});_0x2b7d2a[_0xfee6('0x2f')]=_[_0xfee6('0x30')](_0x568296,_0xfee6('0x25'));_0x2b7d2a[_0xfee6('0x31')]=_['keys'](_0x411081['query']);_0x2b7d2a[_0xfee6('0x32')]=_['intersection'](_0x2b7d2a[_0xfee6('0x2f')],_0x2b7d2a[_0xfee6('0x31')]);_0x6e743[_0xfee6('0x33')]=_[_0xfee6('0x34')](_0x2b7d2a[_0xfee6('0x2f')],qs[_0xfee6('0x35')](_0x411081[_0xfee6('0x31')][_0xfee6('0x35')]));_0x6e743[_0xfee6('0x33')]=_0x6e743[_0xfee6('0x33')][_0xfee6('0x36')]?_0x6e743['attributes']:_0x2b7d2a[_0xfee6('0x2f')];if(!_0x411081[_0xfee6('0x31')][_0xfee6('0x37')](_0xfee6('0x38'))){_0x6e743[_0xfee6('0x12')]=qs[_0xfee6('0x12')](_0x411081[_0xfee6('0x31')][_0xfee6('0x12')]);_0x6e743[_0xfee6('0x11')]=qs[_0xfee6('0x11')](_0x411081['query']['offset']);}_0x6e743[_0xfee6('0x39')]=qs[_0xfee6('0x3a')](_0x411081[_0xfee6('0x31')][_0xfee6('0x3a')]);_0x6e743['where']=qs[_0xfee6('0x32')](_['pick'](_0x411081[_0xfee6('0x31')],_0x2b7d2a[_0xfee6('0x32')]),_0x568296);if(_0x411081['query']['filter']){_0x6e743['where']=_[_0xfee6('0x3b')](_0x6e743[_0xfee6('0x3c')],{'$or':_[_0xfee6('0x30')](_0x568296,function(_0x4ce64e){if(_0x4ce64e[_0xfee6('0x23')]!==_0xfee6('0x3d')){var _0x385b60={};_0x385b60[_0x4ce64e[_0xfee6('0x25')]]={'$like':'%'+_0x411081[_0xfee6('0x31')][_0xfee6('0x1f')]+'%'};return _0x385b60;}})});}_0x6e743=_[_0xfee6('0x3b')]({},_0x6e743,_0x411081[_0xfee6('0x3e')]);var _0x2b958e={'where':_0x6e743[_0xfee6('0x3c')]};return db['VoiceExtension'][_0xfee6('0x3f')](_0x2b958e)['then'](function(_0x4fe9fe){_0x3aea5a[_0xfee6('0x3f')]=_0x4fe9fe;if(_0x411081[_0xfee6('0x31')]['includeAll']){_0x6e743[_0xfee6('0x40')]=[{'all':!![]}];}return db[_0xfee6('0x2b')][_0xfee6('0x41')](_0x6e743);})[_0xfee6('0x17')](function(_0x552c00){_0x3aea5a[_0xfee6('0x42')]=_0x552c00;return _0x3aea5a;})[_0xfee6('0x17')](respondWithFilteredResult(_0x6a54fd,_0x6e743))[_0xfee6('0x43')](handleError(_0x6a54fd,null));};exports[_0xfee6('0x44')]=function(_0x4ef527,_0xb4da99){var _0x2a92b8={'raw':![],'where':{'id':_0x4ef527[_0xfee6('0x45')]['id']}},_0x93a63d={};_0x93a63d[_0xfee6('0x2f')]=_['keys'](db[_0xfee6('0x2b')]['rawAttributes']);_0x93a63d[_0xfee6('0x31')]=_[_0xfee6('0x46')](_0x4ef527['query']);_0x93a63d[_0xfee6('0x32')]=_[_0xfee6('0x34')](_0x93a63d[_0xfee6('0x2f')],_0x93a63d[_0xfee6('0x31')]);_0x2a92b8[_0xfee6('0x33')]=_[_0xfee6('0x34')](_0x93a63d['model'],qs[_0xfee6('0x35')](_0x4ef527[_0xfee6('0x31')][_0xfee6('0x35')]));_0x2a92b8[_0xfee6('0x33')]=_0x2a92b8['attributes'][_0xfee6('0x36')]?_0x2a92b8['attributes']:_0x93a63d['model'];if(_0x4ef527[_0xfee6('0x31')][_0xfee6('0x47')]){_0x2a92b8[_0xfee6('0x40')]=[{'all':!![]}];}_0x2a92b8=_[_0xfee6('0x3b')]({},_0x2a92b8,_0x4ef527[_0xfee6('0x3e')]);return db['VoiceExtension']['find'](_0x2a92b8)[_0xfee6('0x17')](handleEntityNotFound(_0xb4da99,null))[_0xfee6('0x17')](respondWithResult(_0xb4da99,null))[_0xfee6('0x43')](handleError(_0xb4da99,null));};exports[_0xfee6('0x16')]=function(_0x42cd88,_0x352930){return db[_0xfee6('0x2b')][_0xfee6('0x24')]({'where':{'id':_0x42cd88[_0xfee6('0x45')]['id']}})[_0xfee6('0x17')](handleEntityNotFound(_0x352930,null))[_0xfee6('0x17')](removeEntity(_0x352930,null))['catch'](handleError(_0x352930,null));};exports[_0xfee6('0x48')]=function(_0x3c6d3e,_0x2274f8){if(_0x3c6d3e[_0xfee6('0x49')][_0xfee6('0x23')]==='outbound'&&!_[_0xfee6('0x4a')](_0x3c6d3e[_0xfee6('0x49')][_0xfee6('0x4b')],'_')){_0x3c6d3e['body'][_0xfee6('0x4b')]='_'[_0xfee6('0x4c')](_0x3c6d3e[_0xfee6('0x49')]['exten']);}return db[_0xfee6('0x2b')]['create'](_0x3c6d3e[_0xfee6('0x49')],{'raw':![]})[_0xfee6('0x17')](function(_0x9d9d8a){var _0xfa072a=_0x3c6d3e[_0xfee6('0x4d')][_0xfee6('0x18')]({'plain':!![]});if(!_0xfa072a)throw new Error(_0xfee6('0x4e'));if(_0xfa072a[_0xfee6('0x4f')]==='user'){var _0x59865c=_0x9d9d8a['get']({'plain':!![]});var _0x3007fb=[{'name':'InboundRoutes','value':_0xfee6('0x1a')},{'name':_0xfee6('0x1b'),'value':_0xfee6('0x1c')},{'name':_0xfee6('0x1d'),'value':_0xfee6('0x1e')}];var _0x4946d9=_['find'](_0x3007fb,[_0xfee6('0x21'),_0x59865c[_0xfee6('0x23')]])[_0xfee6('0x25')];return db[_0xfee6('0x50')][_0xfee6('0x24')]({'where':{'name':_0x4946d9,'userProfileId':_0xfa072a[_0xfee6('0x51')]},'raw':!![]})[_0xfee6('0x17')](function(_0x1d1c64){if(_0x1d1c64&&_0x1d1c64[_0xfee6('0x52')]===0x0){return db['UserProfileResource'][_0xfee6('0x48')]({'name':_0x59865c['name'],'resourceId':_0x59865c['id'],'type':_0x1d1c64[_0xfee6('0x25')],'sectionId':_0x1d1c64['id']},{})[_0xfee6('0x17')](function(){return _0x9d9d8a;});}else{return _0x9d9d8a;}})['catch'](function(_0x513d1b){logger[_0xfee6('0x27')](_0xfee6('0x53'),_0x513d1b);throw _0x513d1b;});}return _0x9d9d8a;})[_0xfee6('0x17')](respondWithResult(_0x2274f8,0xc9))[_0xfee6('0x43')](handleError(_0x2274f8,null));};exports[_0xfee6('0x54')]=function(_0x24fdbe,_0x582ce6){if(_0x24fdbe[_0xfee6('0x49')]['id']){delete _0x24fdbe[_0xfee6('0x49')]['id'];}return db['VoiceExtension']['find']({'where':{'id':_0x24fdbe[_0xfee6('0x45')]['id']}})['then'](handleEntityNotFound(_0x582ce6,null))[_0xfee6('0x17')](function(_0x462a49){if(_0x462a49){return db[_0xfee6('0x2b')][_0xfee6('0x54')](_[_0xfee6('0x55')](_0x24fdbe[_0xfee6('0x49')],[_0xfee6('0x4b'),_0xfee6('0x56'),_0xfee6('0x57'),_0xfee6('0x58'),'cutdigits',_0xfee6('0x59'),_0xfee6('0x5a')]),{'where':{'context':_0x462a49[_0xfee6('0x56')],'exten':_0x462a49[_0xfee6('0x4b')]},'individualHooks':!![]})[_0xfee6('0x17')](function(_0x386ae7){return _0x386ae7;});}return null;})['then'](respondWithStatusCode(_0x582ce6,null))['catch'](handleError(_0x582ce6,null));};exports[_0xfee6('0x5b')]=function(_0x36cd76,_0xd2304b){var _0x2ef74a=_0x36cd76[_0xfee6('0x45')]['id'];var _0x506582=_0x36cd76[_0xfee6('0x49')];var _0x48acdf=0xc8;var _0x1bd645=null;return db['sequelize'][_0xfee6('0x5c')]({'isolationLevel':db[_0xfee6('0x5d')][_0xfee6('0x5e')][_0xfee6('0x5f')][_0xfee6('0x60')]},function(_0x14826e){return db[_0xfee6('0x2b')]['findOne']({'where':{'id':_0x2ef74a},'transaction':_0x14826e})[_0xfee6('0x17')](function(_0x3f8f8b){if(_0x3f8f8b){return db['VoiceExtension'][_0xfee6('0x16')]({'where':{'VoiceExtensionId':_0x2ef74a},'transaction':_0x14826e})['then'](function(){var _0x3d5713=_['map'](_0x506582,function(_0xdddad){_0xdddad['VoiceExtensionId']=_0x2ef74a;_0xdddad[_0xfee6('0x61')]=!![];return _0xdddad;});return _0x3f8f8b[_0xfee6('0x62')](_0x3d5713);})['then'](function(_0x35e87e){return db[_0xfee6('0x2b')][_0xfee6('0x63')](_0x35e87e,{'transaction':_0x14826e});});}else{_0x48acdf=0x194;_0x1bd645=[];}});})[_0xfee6('0x17')](function(){if(_0x48acdf!==0x194){return db['VoiceExtension'][_0xfee6('0x64')]({'where':{'isApp':!![],'VoiceExtensionId':_0x2ef74a},'order':_0xfee6('0x65')})[_0xfee6('0x17')](function(_0x449e99){_0x1bd645=_0x449e99;});}})[_0xfee6('0x43')](function(_0x1b37c9){_0x48acdf=0x1f4;logger[_0xfee6('0x27')](_0x1b37c9['stack']);if(_0x1b37c9['name']){delete _0x1b37c9[_0xfee6('0x25')];}_0x1bd645=_0x1b37c9;})['finally'](function(){if(_0x1bd645===null){_0xd2304b['sendStatus'](_0x48acdf);}else{if(_0x48acdf===0x1f4){_0xd2304b[_0xfee6('0xe')](_0x48acdf)['send'](_0x1bd645);}else{_0xd2304b['status'](_0x48acdf)[_0xfee6('0x10')](_0x1bd645);}}});};
\ No newline at end of file
index 5cffd97..b95d22e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49b0=['VoiceExtension','setMaxListeners','save','update','emit','hasOwnProperty','hook','exports','../../mysqldb'];(function(_0x91a997,_0x411892){var _0x2ee914=function(_0x5443a5){while(--_0x5443a5){_0x91a997['push'](_0x91a997['shift']());}};_0x2ee914(++_0x411892);}(_0x49b0,0xa1));var _0x049b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x49b0[_0x20a584];return _0x4b41a8;};'use strict';var EventEmitter=require('events');var VoiceExtension=require(_0x049b('0x0'))['db'][_0x049b('0x1')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0x049b('0x2')](0x0);var events={'afterCreate':_0x049b('0x3'),'afterUpdate':_0x049b('0x4'),'afterDestroy':'remove'};function emitEvent(_0x2e560a){return function(_0x4909df,_0x39248e,_0x382031){VoiceExtensionEvents[_0x049b('0x5')](_0x2e560a+':'+_0x4909df['id'],_0x4909df);VoiceExtensionEvents['emit'](_0x2e560a,_0x4909df);_0x382031(null);};}for(var e in events){if(events[_0x049b('0x6')](e)){var event=events[e];VoiceExtension[_0x049b('0x7')](e,emitEvent(event));}}module[_0x049b('0x8')]=VoiceExtensionEvents;
\ No newline at end of file
+var _0x411a=['exports','events','../../mysqldb','setMaxListeners','save','update','emit','hasOwnProperty','hook'];(function(_0x6c993a,_0x5ea3ab){var _0x27f547=function(_0x22df20){while(--_0x22df20){_0x6c993a['push'](_0x6c993a['shift']());}};_0x27f547(++_0x5ea3ab);}(_0x411a,0x121));var _0xa411=function(_0x514260,_0x1891e1){_0x514260=_0x514260-0x0;var _0x4ac81b=_0x411a[_0x514260];return _0x4ac81b;};'use strict';var EventEmitter=require(_0xa411('0x0'));var VoiceExtension=require(_0xa411('0x1'))['db']['VoiceExtension'];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0xa411('0x2')](0x0);var events={'afterCreate':_0xa411('0x3'),'afterUpdate':_0xa411('0x4'),'afterDestroy':'remove'};function emitEvent(_0x43a577){return function(_0xe5ce82,_0x13fc2d,_0x4e4d77){VoiceExtensionEvents[_0xa411('0x5')](_0x43a577+':'+_0xe5ce82['id'],_0xe5ce82);VoiceExtensionEvents['emit'](_0x43a577,_0xe5ce82);_0x4e4d77(null);};}for(var e in events){if(events[_0xa411('0x6')](e)){var event=events[e];VoiceExtension[_0xa411('0x7')](e,emitEvent(event));}}module[_0xa411('0x8')]=VoiceExtensionEvents;
\ No newline at end of file
index 8574479..523d4d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x09da=[',${EXTEN},','outboundDial','appdata','priority','concat','last','catch','VoiceExtension','voice_extensions','Hangup','./voiceExtension.attributes','exports','models','type','CDR(type)=','context','exten','Set','NoOp','CDR(routeAlias)=','No\x20alias\x20set','inbound','push','CDR(routeid)=','XCALLY-MOTION-ANSWER=0','MONITOR_OPTIONS=ab','outbound','alias','cutdigits','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','XCALLY-MOTION-PROGRESS=0','hasOwnProperty','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','trunk','timeout','options','url','length','name','param','split','phone','prefix','${EXTEN:','indexOf','U(xcally-mixmonitor-context)','Interval','findAll','interval','IntervalId','then','*,*,*,*','intervals','map','filter','tag','toLowerCase','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','Set(CALLERID(all)=','NoOp(No\x20number\x20available)','answer','playback','includes','app','appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','splice'];(function(_0x4fcca7,_0x2f7f74){var _0x28ef84=function(_0x17ca82){while(--_0x17ca82){_0x4fcca7['push'](_0x4fcca7['shift']());}};_0x28ef84(++_0x2f7f74);}(_0x09da,0xf4));var _0xa09d=function(_0x11e18a,_0x4da734){_0x11e18a=_0x11e18a-0x0;var _0xc2d8ff=_0x09da[_0x11e18a];return _0xc2d8ff;};'use strict';var _=require('lodash');var attributes=require(_0xa09d('0x0'));module[_0xa09d('0x1')]=function(_0x14b512){var _0x3f871b=_0x14b512[_0xa09d('0x2')];function _0x1e4d24(_0x129dc6){var _0x50a6b8=0x2;var _0x2a4f75=[{'type':_0x129dc6[_0xa09d('0x3')],'app':'Set','appdata':_0xa09d('0x4')+_0x129dc6[_0xa09d('0x3')],'context':_0x129dc6[_0xa09d('0x5')],'exten':_0x129dc6[_0xa09d('0x6')],'priority':_0x50a6b8++,'VoiceExtensionId':_0x129dc6['id']},{'type':_0x129dc6['type'],'app':_0x129dc6['alias']?_0xa09d('0x7'):_0xa09d('0x8'),'appdata':_0x129dc6['alias']?_0xa09d('0x9')+_0x129dc6['alias']:_0xa09d('0xa'),'context':_0x129dc6[_0xa09d('0x5')],'exten':_0x129dc6[_0xa09d('0x6')],'priority':_0x50a6b8++,'VoiceExtensionId':_0x129dc6['id']}];if(_0x129dc6[_0xa09d('0x3')]===_0xa09d('0xb')){_0x2a4f75[_0xa09d('0xc')]({'type':_0xa09d('0xb'),'app':_0xa09d('0x7'),'appdata':_0xa09d('0xd')+_0x129dc6['id'],'context':_0x129dc6[_0xa09d('0x5')],'exten':_0x129dc6[_0xa09d('0x6')],'priority':_0x50a6b8++,'VoiceExtensionId':_0x129dc6['id']});}_0x2a4f75[_0xa09d('0xc')]({'type':_0x129dc6['type'],'app':_0xa09d('0x7'),'appdata':_0xa09d('0xe'),'context':_0x129dc6['context'],'exten':_0x129dc6[_0xa09d('0x6')],'priority':_0x50a6b8++,'VoiceExtensionId':_0x129dc6['id']},{'type':_0x129dc6[_0xa09d('0x3')],'app':_0xa09d('0x7'),'appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x129dc6['context'],'exten':_0x129dc6['exten'],'priority':_0x50a6b8++,'VoiceExtensionId':_0x129dc6['id']},{'type':_0x129dc6[_0xa09d('0x3')],'app':_0xa09d('0x7'),'appdata':_0xa09d('0xf'),'context':_0x129dc6[_0xa09d('0x5')],'exten':_0x129dc6[_0xa09d('0x6')],'priority':_0x50a6b8++,'VoiceExtensionId':_0x129dc6['id']});return _0x2a4f75;}function _0x4c0fc9(_0x2320e9){var _0x22c06a=0x2;var _0x194899=[{'type':_0xa09d('0x10'),'app':_0xa09d('0x7'),'appdata':'CDR(type)=outbound','context':_0x2320e9[_0xa09d('0x5')],'exten':_0x2320e9[_0xa09d('0x6')],'priority':_0x22c06a++,'VoiceExtensionId':_0x2320e9['id']},{'type':_0xa09d('0x10'),'app':_0x2320e9[_0xa09d('0x11')]?_0xa09d('0x7'):_0xa09d('0x8'),'appdata':_0x2320e9[_0xa09d('0x11')]?_0xa09d('0x9')+_0x2320e9[_0xa09d('0x11')]:_0xa09d('0xa'),'context':_0x2320e9[_0xa09d('0x5')],'exten':_0x2320e9[_0xa09d('0x6')],'priority':_0x22c06a++,'VoiceExtensionId':_0x2320e9['id']},{'type':_0xa09d('0x10'),'app':_0xa09d('0x7'),'appdata':'CDR(destination)='+(_0x2320e9[_0xa09d('0x12')]?'${EXTEN:'+_0x2320e9['cutdigits']+'}':_0xa09d('0x13')),'context':_0x2320e9[_0xa09d('0x5')],'exten':_0x2320e9[_0xa09d('0x6')],'priority':_0x22c06a++,'VoiceExtensionId':_0x2320e9['id']},{'type':_0xa09d('0x10'),'app':_0xa09d('0x7'),'appdata':_0xa09d('0xd')+_0x2320e9['id'],'context':_0x2320e9[_0xa09d('0x5')],'exten':_0x2320e9[_0xa09d('0x6')],'priority':_0x22c06a++,'VoiceExtensionId':_0x2320e9['id']},{'type':'outbound','app':_0xa09d('0x14'),'appdata':_0xa09d('0x15')+(_0x22c06a+0x2)+'):Goto('+(_0x22c06a+0x1)+')','context':_0x2320e9['context'],'exten':_0x2320e9[_0xa09d('0x6')],'priority':_0x22c06a++,'VoiceExtensionId':_0x2320e9['id']},{'type':_0xa09d('0x10'),'app':_0xa09d('0x7'),'appdata':_0x2320e9['cutdigits']?_0xa09d('0x16')+_0x2320e9[_0xa09d('0x12')]+'}':_0xa09d('0x17'),'context':_0x2320e9['context'],'exten':_0x2320e9[_0xa09d('0x6')],'priority':_0x22c06a++,'VoiceExtensionId':_0x2320e9['id']},{'type':_0xa09d('0x10'),'app':_0xa09d('0x7'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x2320e9[_0xa09d('0x5')],'exten':_0x2320e9[_0xa09d('0x6')],'priority':_0x22c06a++,'VoiceExtensionId':_0x2320e9['id']},{'type':_0xa09d('0x10'),'app':_0xa09d('0x7'),'appdata':_0xa09d('0x18'),'context':_0x2320e9['context'],'exten':_0x2320e9['exten'],'priority':_0x22c06a++,'VoiceExtensionId':_0x2320e9['id']},{'type':_0xa09d('0x10'),'app':_0xa09d('0x7'),'appdata':_0xa09d('0xf'),'context':_0x2320e9['context'],'exten':_0x2320e9[_0xa09d('0x6')],'priority':_0x22c06a++,'VoiceExtensionId':_0x2320e9['id']},{'type':_0xa09d('0x10'),'app':'Set','appdata':'outboundrouteid='+_0x2320e9['id'],'context':_0x2320e9[_0xa09d('0x5')],'exten':_0x2320e9[_0xa09d('0x6')],'priority':_0x22c06a++,'VoiceExtensionId':_0x2320e9['id']}];if(_0x2320e9[_0xa09d('0x19')](_0xa09d('0x1a'))&&_0x2320e9[_0xa09d('0x1a')]!==_0xa09d('0x1b')){_0x194899['push']({'type':_0xa09d('0x10'),'app':_0xa09d('0x7'),'appdata':_0xa09d('0x1c'),'context':_0x2320e9['context'],'exten':_0x2320e9[_0xa09d('0x6')],'priority':_0x22c06a++,'VoiceExtensionId':_0x2320e9['id']},{'type':_0xa09d('0x10'),'app':_0xa09d('0x7'),'appdata':_0xa09d('0x1d')+_0x2320e9['recordingFormat']||_0xa09d('0x1e'),'context':_0x2320e9[_0xa09d('0x5')],'exten':_0x2320e9[_0xa09d('0x6')],'priority':_0x22c06a++,'VoiceExtensionId':_0x2320e9['id']});}return _0x194899;}function _0x2b3bac(_0x467cc5,_0x4a069a){var _0x78a182=[{'name':_0xa09d('0x1f'),'param':0x0},{'name':_0xa09d('0x20'),'param':0x1},{'name':_0xa09d('0x21'),'param':0x2},{'name':_0xa09d('0x22'),'param':0x3}];var _0x12b84d={};var _0x187ff3=_0x4a069a['split'](',');var _0xdcfbe8=[];for(var _0x1bd855=0x0;_0x1bd855<_0x78a182[_0xa09d('0x23')];_0x1bd855++){switch(_0x78a182[_0x1bd855][_0xa09d('0x24')]){case _0xa09d('0x1f'):_0x12b84d[_0xa09d('0x1f')]=_0x187ff3[_0x78a182[_0x1bd855][_0xa09d('0x25')]][_0xa09d('0x26')]('/')[0x1];_0x12b84d['phone']=_0x187ff3[_0x78a182[_0x1bd855][_0xa09d('0x25')]][_0xa09d('0x26')]('/')[0x2];_0x12b84d['prefix']=_0x12b84d[_0xa09d('0x27')]?_0x12b84d[_0xa09d('0x27')][_0xa09d('0x26')]('$')[0x0]:undefined;_0x12b84d['phone']=_0x467cc5[_0xa09d('0x12')]?(_0x12b84d[_0xa09d('0x28')]||'')+_0xa09d('0x29')+_0x467cc5['cutdigits']+'}':(_0x12b84d['prefix']||'')+_0xa09d('0x13');_0xdcfbe8[_0x78a182[_0x1bd855][_0xa09d('0x25')]]=['SIP',_0x12b84d[_0xa09d('0x1f')],_0x12b84d[_0xa09d('0x27')]]['join']('/');break;case'options':_0x12b84d[_0xa09d('0x21')]=_0x187ff3[_0x78a182[_0x1bd855][_0xa09d('0x25')]];if(_0x467cc5[_0xa09d('0x1a')]!==_0xa09d('0x1b')){if(_0x12b84d[_0xa09d('0x21')][_0xa09d('0x2a')](_0xa09d('0x2b'))<0x0){_0x12b84d[_0xa09d('0x21')]+=_0xa09d('0x2b');}}else{_0x12b84d[_0xa09d('0x21')]=_0x12b84d[_0xa09d('0x21')]['replace'](_0xa09d('0x2b'),'');}_0xdcfbe8[_0x78a182[_0x1bd855][_0xa09d('0x25')]]=_0x12b84d[_0xa09d('0x21')];break;default:_0xdcfbe8[_0x78a182[_0x1bd855][_0xa09d('0x25')]]=_0x187ff3[_0x78a182[_0x1bd855][_0xa09d('0x25')]];}}return _0xdcfbe8['join'](',');}function _0x3b850c(_0x50b64b,_0x335f53,_0x15d791){return new Promise(function(_0x48da1e,_0x2fd762){var _0x442514=[];if(_['isEmpty'](_0x335f53))return _0x48da1e(_0x442514);_0x3f871b[_0xa09d('0x2c')][_0xa09d('0x2d')]({'attributes':['id',_0xa09d('0x2e'),_0xa09d('0x2f')],'raw':!![]})[_0xa09d('0x30')](function(_0x22519b){for(var _0x32e0c5=0x0,_0x1dcbf7=0x0;_0x32e0c5<_0x335f53[_0xa09d('0x23')];_0x32e0c5++,_0x1dcbf7=0x0){var _0x256e57=_0x335f53[_0x32e0c5];var _0x2b3635=[];var _0x1c0a65=[];delete _0x256e57['id'];if(_0x256e57['interval']!==_0xa09d('0x31')){_0x256e57[_0xa09d('0x32')]=[_0x256e57[_0xa09d('0x2e')]];}else{_0x256e57[_0xa09d('0x32')]=_0x256e57[_0xa09d('0x2f')]?_[_0xa09d('0x33')](_[_0xa09d('0x34')](_0x22519b,{'IntervalId':_0x256e57['IntervalId']}),_0xa09d('0x2e')):[];}_0x256e57[_0xa09d('0x5')]=_0x50b64b[_0xa09d('0x5')];_0x256e57[_0xa09d('0x6')]=_0x50b64b[_0xa09d('0x6')];if(_0x256e57[_0xa09d('0x3')])_0x256e57[_0xa09d('0x3')]=_0x256e57['type']['toLowerCase']();if(_0x50b64b[_0xa09d('0x3')]===_0xa09d('0x10')){if(_0x256e57[_0xa09d('0x19')]('tag')&&_0x256e57[_0xa09d('0x35')]&&_0x256e57[_0xa09d('0x35')]!=='--'){_0x2b3635['push']({'type':_0x256e57[_0xa09d('0x3')]['toLowerCase'](),'app':'Set','appdata':'CDR(tag)='+_0x256e57[_0xa09d('0x35')],'context':_0x50b64b[_0xa09d('0x5')],'exten':_0x50b64b[_0xa09d('0x6')],'priority':_0x256e57[_0xa09d('0x32')][_0xa09d('0x23')]+_0x15d791+_0x1dcbf7++,'VoiceExtensionId':_0x50b64b['id']});}_0x2b3635[_0xa09d('0xc')]({'type':_0x256e57[_0xa09d('0x3')][_0xa09d('0x36')](),'app':_0xa09d('0x14'),'appdata':_0xa09d('0x37')+(_0x256e57[_0xa09d('0x38')]?_0xa09d('0x39')+_0x256e57['callerID']+')':_0xa09d('0x3a')),'context':_0x50b64b[_0xa09d('0x5')],'exten':_0x50b64b[_0xa09d('0x6')],'priority':_0x256e57['intervals'][_0xa09d('0x23')]+_0x15d791+_0x1dcbf7++,'VoiceExtensionId':_0x50b64b['id']});}else{if(_0x256e57[_0xa09d('0x19')](_0xa09d('0x3b'))){if(['queue',_0xa09d('0x3c')][_0xa09d('0x3d')](_0x256e57[_0xa09d('0x3e')][_0xa09d('0x36')]())&&_0x256e57[_0xa09d('0x3f')]!==_0xa09d('0x40')){if(_0x256e57[_0xa09d('0x3b')]){_0x2b3635[_0xa09d('0xc')]({'type':_0x256e57[_0xa09d('0x3')][_0xa09d('0x36')](),'app':_0xa09d('0x14'),'appdata':_0xa09d('0x41'),'context':_0x50b64b['context'],'exten':_0x50b64b[_0xa09d('0x6')],'priority':_0x256e57[_0xa09d('0x32')][_0xa09d('0x23')]+_0x15d791+_0x1dcbf7++,'VoiceExtensionId':_0x50b64b['id']});_0x2b3635[_0xa09d('0xc')]({'type':_0x256e57['type'][_0xa09d('0x36')](),'app':_0xa09d('0x7'),'appdata':_0xa09d('0x42'),'context':_0x50b64b[_0xa09d('0x5')],'exten':_0x50b64b['exten'],'priority':_0x256e57[_0xa09d('0x32')][_0xa09d('0x23')]+_0x15d791+_0x1dcbf7++,'VoiceExtensionId':_0x50b64b['id']});}else{_0x2b3635['push']({'type':_0x256e57['type'][_0xa09d('0x36')](),'app':_0xa09d('0x14'),'appdata':'$[${XCALLY-MOTION-PROGRESS}=0]?Progress','context':_0x50b64b[_0xa09d('0x5')],'exten':_0x50b64b['exten'],'priority':_0x256e57[_0xa09d('0x32')][_0xa09d('0x23')]+_0x15d791+_0x1dcbf7++,'VoiceExtensionId':_0x50b64b['id']});_0x2b3635['push']({'type':_0x256e57[_0xa09d('0x3')][_0xa09d('0x36')](),'app':'Set','appdata':'XCALLY-MOTION-PROGRESS=1','context':_0x50b64b['context'],'exten':_0x50b64b[_0xa09d('0x6')],'priority':_0x256e57[_0xa09d('0x32')]['length']+_0x15d791+_0x1dcbf7++,'VoiceExtensionId':_0x50b64b['id']});}}}}for(var _0x1f50b4=0x0;_0x1f50b4<_0x256e57['intervals'][_0xa09d('0x23')];_0x1f50b4++){var _0x2cc58d=_0x15d791+_0x256e57[_0xa09d('0x32')][_0xa09d('0x23')];var _0xaeb77b=_0x1f50b4===_0x256e57['intervals'][_0xa09d('0x23')]-0x1?_0x15d791+_0x2b3635[_0xa09d('0x23')]+_0x1c0a65[_0xa09d('0x23')]+0x2:_0x15d791+_0x1f50b4+0x1;_0x2b3635[_0xa09d('0x43')](_0x1f50b4,0x0,{'type':_0x50b64b[_0xa09d('0x3')],'app':'GotoIfTime','appdata':_0x256e57[_0xa09d('0x32')][_0x1f50b4]+'?'+_0x50b64b[_0xa09d('0x5')]+',${EXTEN},'+_0x2cc58d+':'+_0x50b64b[_0xa09d('0x5')]+_0xa09d('0x44')+_0xaeb77b,'exten':_0x50b64b[_0xa09d('0x6')],'context':_0x50b64b[_0xa09d('0x5')],'priority':_0x15d791+_0x1f50b4,'VoiceExtensionId':_0x50b64b['id']});}if(_0x256e57['appType']===_0xa09d('0x45'))_0x256e57[_0xa09d('0x46')]=_0x2b3bac(_0x50b64b,_0x256e57[_0xa09d('0x46')]);_0x256e57[_0xa09d('0x47')]=_0x2b3635[_0xa09d('0x23')]?_['last'](_0x2b3635)['priority']+0x1:_0x15d791;_0x442514=_[_0xa09d('0x48')](_0x442514,_0x2b3635,[_0x256e57],_0x1c0a65);_0x15d791=_[_0xa09d('0x49')](_0x442514)[_0xa09d('0x47')]+0x1;}return _0x48da1e(_0x442514);})[_0xa09d('0x4a')](function(_0x475782){_0x2fd762(_0x475782);});});}return _0x14b512['define'](_0xa09d('0x4b'),attributes,{'tableName':_0xa09d('0x4c'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x1b47e9){var _0x2d43c1=this['get']({'plain':!![]});var _0x5135ce=_0x2d43c1['type']===_0xa09d('0x10')?_0x4c0fc9(_0x2d43c1):_0x1e4d24(_0x2d43c1);return _0x3b850c(_0x2d43c1,_0x1b47e9,_['last'](_0x5135ce)[_0xa09d('0x47')]+0x1)[_0xa09d('0x30')](function(_0x220845){var _0x20dfc5=_['concat'](_0x5135ce,_0x220845);_0x20dfc5[_0xa09d('0xc')]({'type':_0x2d43c1['type'],'app':_0xa09d('0x4d'),'exten':_0x2d43c1['exten'],'context':_0x2d43c1['context'],'priority':_[_0xa09d('0x49')](_0x20dfc5)[_0xa09d('0x47')]+0x1,'VoiceExtensionId':_0x2d43c1['id']});return _0x20dfc5;});}}});};
\ No newline at end of file
+var _0x379e=['answer','includes','toLowerCase','appType','$[${XCALLY-MOTION-ANSWER}=0]?Answer','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice',',${EXTEN},','outboundDial','appdata','last','concat','priority','catch','define','VoiceExtension','voice_extensions','get','Hangup','lodash','models','type','CDR(type)=','context','exten','Set','NoOp','alias','CDR(routeAlias)=','No\x20alias\x20set','push','inbound','CDR(routeid)=','XCALLY-MOTION-ANSWER=0','MONITOR_OPTIONS=ab','outbound','CDR(type)=outbound','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','):Goto(','CDR(prefix)=${EXTEN:0:','XCALLY-MOTION-PROGRESS=0','outboundrouteid=','recordingFormat','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','trunk','timeout','options','split','name','param','phone','prefix','SIP','join','none','U(xcally-mixmonitor-context)','replace','Interval','findAll','interval','IntervalId','then','length','*,*,*,*','intervals','map','filter','tag','CDR(tag)=','ExecIf','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','Set(CALLERID(all)=','hasOwnProperty'];(function(_0x45df9d,_0x377fa9){var _0x3ef722=function(_0x5c9c3c){while(--_0x5c9c3c){_0x45df9d['push'](_0x45df9d['shift']());}};_0x3ef722(++_0x377fa9);}(_0x379e,0x104));var _0xe379=function(_0x4e0b66,_0x212210){_0x4e0b66=_0x4e0b66-0x0;var _0x466c9e=_0x379e[_0x4e0b66];return _0x466c9e;};'use strict';var _=require(_0xe379('0x0'));var attributes=require('./voiceExtension.attributes');module['exports']=function(_0x4bbe70){var _0x594cd4=_0x4bbe70[_0xe379('0x1')];function _0x1e24f9(_0x4387fd){var _0x3db31a=0x2;var _0x475418=[{'type':_0x4387fd[_0xe379('0x2')],'app':'Set','appdata':_0xe379('0x3')+_0x4387fd[_0xe379('0x2')],'context':_0x4387fd[_0xe379('0x4')],'exten':_0x4387fd[_0xe379('0x5')],'priority':_0x3db31a++,'VoiceExtensionId':_0x4387fd['id']},{'type':_0x4387fd[_0xe379('0x2')],'app':_0x4387fd['alias']?_0xe379('0x6'):_0xe379('0x7'),'appdata':_0x4387fd[_0xe379('0x8')]?_0xe379('0x9')+_0x4387fd[_0xe379('0x8')]:_0xe379('0xa'),'context':_0x4387fd[_0xe379('0x4')],'exten':_0x4387fd[_0xe379('0x5')],'priority':_0x3db31a++,'VoiceExtensionId':_0x4387fd['id']}];if(_0x4387fd[_0xe379('0x2')]==='inbound'){_0x475418[_0xe379('0xb')]({'type':_0xe379('0xc'),'app':_0xe379('0x6'),'appdata':_0xe379('0xd')+_0x4387fd['id'],'context':_0x4387fd['context'],'exten':_0x4387fd['exten'],'priority':_0x3db31a++,'VoiceExtensionId':_0x4387fd['id']});}_0x475418[_0xe379('0xb')]({'type':_0x4387fd[_0xe379('0x2')],'app':_0xe379('0x6'),'appdata':_0xe379('0xe'),'context':_0x4387fd[_0xe379('0x4')],'exten':_0x4387fd[_0xe379('0x5')],'priority':_0x3db31a++,'VoiceExtensionId':_0x4387fd['id']},{'type':_0x4387fd[_0xe379('0x2')],'app':_0xe379('0x6'),'appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x4387fd[_0xe379('0x4')],'exten':_0x4387fd[_0xe379('0x5')],'priority':_0x3db31a++,'VoiceExtensionId':_0x4387fd['id']},{'type':_0x4387fd[_0xe379('0x2')],'app':_0xe379('0x6'),'appdata':_0xe379('0xf'),'context':_0x4387fd[_0xe379('0x4')],'exten':_0x4387fd['exten'],'priority':_0x3db31a++,'VoiceExtensionId':_0x4387fd['id']});return _0x475418;}function _0x2615bd(_0x5cb274){var _0x2c2bd9=0x2;var _0x56c11d=[{'type':_0xe379('0x10'),'app':_0xe379('0x6'),'appdata':_0xe379('0x11'),'context':_0x5cb274[_0xe379('0x4')],'exten':_0x5cb274['exten'],'priority':_0x2c2bd9++,'VoiceExtensionId':_0x5cb274['id']},{'type':_0xe379('0x10'),'app':_0x5cb274[_0xe379('0x8')]?_0xe379('0x6'):_0xe379('0x7'),'appdata':_0x5cb274[_0xe379('0x8')]?'CDR(routeAlias)='+_0x5cb274[_0xe379('0x8')]:_0xe379('0xa'),'context':_0x5cb274['context'],'exten':_0x5cb274[_0xe379('0x5')],'priority':_0x2c2bd9++,'VoiceExtensionId':_0x5cb274['id']},{'type':_0xe379('0x10'),'app':_0xe379('0x6'),'appdata':_0xe379('0x12')+(_0x5cb274[_0xe379('0x13')]?_0xe379('0x14')+_0x5cb274['cutdigits']+'}':_0xe379('0x15')),'context':_0x5cb274[_0xe379('0x4')],'exten':_0x5cb274[_0xe379('0x5')],'priority':_0x2c2bd9++,'VoiceExtensionId':_0x5cb274['id']},{'type':'outbound','app':_0xe379('0x6'),'appdata':_0xe379('0xd')+_0x5cb274['id'],'context':_0x5cb274['context'],'exten':_0x5cb274[_0xe379('0x5')],'priority':_0x2c2bd9++,'VoiceExtensionId':_0x5cb274['id']},{'type':_0xe379('0x10'),'app':'ExecIf','appdata':'$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto('+(_0x2c2bd9+0x2)+_0xe379('0x16')+(_0x2c2bd9+0x1)+')','context':_0x5cb274[_0xe379('0x4')],'exten':_0x5cb274[_0xe379('0x5')],'priority':_0x2c2bd9++,'VoiceExtensionId':_0x5cb274['id']},{'type':'outbound','app':_0xe379('0x6'),'appdata':_0x5cb274[_0xe379('0x13')]?_0xe379('0x17')+_0x5cb274[_0xe379('0x13')]+'}':'CDR(prefix)=noprefix','context':_0x5cb274[_0xe379('0x4')],'exten':_0x5cb274[_0xe379('0x5')],'priority':_0x2c2bd9++,'VoiceExtensionId':_0x5cb274['id']},{'type':_0xe379('0x10'),'app':'Set','appdata':_0xe379('0xe'),'context':_0x5cb274[_0xe379('0x4')],'exten':_0x5cb274['exten'],'priority':_0x2c2bd9++,'VoiceExtensionId':_0x5cb274['id']},{'type':_0xe379('0x10'),'app':'Set','appdata':_0xe379('0x18'),'context':_0x5cb274['context'],'exten':_0x5cb274[_0xe379('0x5')],'priority':_0x2c2bd9++,'VoiceExtensionId':_0x5cb274['id']},{'type':_0xe379('0x10'),'app':_0xe379('0x6'),'appdata':_0xe379('0xf'),'context':_0x5cb274[_0xe379('0x4')],'exten':_0x5cb274[_0xe379('0x5')],'priority':_0x2c2bd9++,'VoiceExtensionId':_0x5cb274['id']},{'type':_0xe379('0x10'),'app':'Set','appdata':_0xe379('0x19')+_0x5cb274['id'],'context':_0x5cb274[_0xe379('0x4')],'exten':_0x5cb274[_0xe379('0x5')],'priority':_0x2c2bd9++,'VoiceExtensionId':_0x5cb274['id']}];if(_0x5cb274['hasOwnProperty'](_0xe379('0x1a'))&&_0x5cb274['recordingFormat']!=='none'){_0x56c11d[_0xe379('0xb')]({'type':_0xe379('0x10'),'app':_0xe379('0x6'),'appdata':_0xe379('0x1b'),'context':_0x5cb274['context'],'exten':_0x5cb274[_0xe379('0x5')],'priority':_0x2c2bd9++,'VoiceExtensionId':_0x5cb274['id']},{'type':_0xe379('0x10'),'app':'Set','appdata':_0xe379('0x1c')+_0x5cb274[_0xe379('0x1a')]||_0xe379('0x1d'),'context':_0x5cb274[_0xe379('0x4')],'exten':_0x5cb274['exten'],'priority':_0x2c2bd9++,'VoiceExtensionId':_0x5cb274['id']});}return _0x56c11d;}function _0x2a3a99(_0x5936ec,_0xdc957d){var _0x38d971=[{'name':_0xe379('0x1e'),'param':0x0},{'name':_0xe379('0x1f'),'param':0x1},{'name':_0xe379('0x20'),'param':0x2},{'name':'url','param':0x3}];var _0x142c9a={};var _0x528c36=_0xdc957d[_0xe379('0x21')](',');var _0x199e28=[];for(var _0x15db56=0x0;_0x15db56<_0x38d971['length'];_0x15db56++){switch(_0x38d971[_0x15db56][_0xe379('0x22')]){case _0xe379('0x1e'):_0x142c9a[_0xe379('0x1e')]=_0x528c36[_0x38d971[_0x15db56][_0xe379('0x23')]]['split']('/')[0x1];_0x142c9a[_0xe379('0x24')]=_0x528c36[_0x38d971[_0x15db56]['param']][_0xe379('0x21')]('/')[0x2];_0x142c9a[_0xe379('0x25')]=_0x142c9a[_0xe379('0x24')]?_0x142c9a[_0xe379('0x24')][_0xe379('0x21')]('$')[0x0]:undefined;_0x142c9a[_0xe379('0x24')]=_0x5936ec['cutdigits']?(_0x142c9a[_0xe379('0x25')]||'')+'${EXTEN:'+_0x5936ec[_0xe379('0x13')]+'}':(_0x142c9a[_0xe379('0x25')]||'')+_0xe379('0x15');_0x199e28[_0x38d971[_0x15db56][_0xe379('0x23')]]=[_0xe379('0x26'),_0x142c9a['trunk'],_0x142c9a[_0xe379('0x24')]][_0xe379('0x27')]('/');break;case'options':_0x142c9a['options']=_0x528c36[_0x38d971[_0x15db56]['param']];if(_0x5936ec[_0xe379('0x1a')]!==_0xe379('0x28')){if(_0x142c9a[_0xe379('0x20')]['indexOf'](_0xe379('0x29'))<0x0){_0x142c9a[_0xe379('0x20')]+=_0xe379('0x29');}}else{_0x142c9a[_0xe379('0x20')]=_0x142c9a['options'][_0xe379('0x2a')](_0xe379('0x29'),'');}_0x199e28[_0x38d971[_0x15db56][_0xe379('0x23')]]=_0x142c9a[_0xe379('0x20')];break;default:_0x199e28[_0x38d971[_0x15db56][_0xe379('0x23')]]=_0x528c36[_0x38d971[_0x15db56]['param']];}}return _0x199e28[_0xe379('0x27')](',');}function _0x1b8050(_0x43cf2e,_0x35b663,_0x35a5e8){return new Promise(function(_0x444fa9,_0x5e0d55){var _0x26d868=[];if(_['isEmpty'](_0x35b663))return _0x444fa9(_0x26d868);_0x594cd4[_0xe379('0x2b')][_0xe379('0x2c')]({'attributes':['id',_0xe379('0x2d'),_0xe379('0x2e')],'raw':!![]})[_0xe379('0x2f')](function(_0x2b20e4){for(var _0x460dc4=0x0,_0x6182d1=0x0;_0x460dc4<_0x35b663[_0xe379('0x30')];_0x460dc4++,_0x6182d1=0x0){var _0x9a0533=_0x35b663[_0x460dc4];var _0x399bc6=[];var _0x3aa919=[];delete _0x9a0533['id'];if(_0x9a0533[_0xe379('0x2d')]!==_0xe379('0x31')){_0x9a0533[_0xe379('0x32')]=[_0x9a0533[_0xe379('0x2d')]];}else{_0x9a0533[_0xe379('0x32')]=_0x9a0533[_0xe379('0x2e')]?_[_0xe379('0x33')](_[_0xe379('0x34')](_0x2b20e4,{'IntervalId':_0x9a0533[_0xe379('0x2e')]}),_0xe379('0x2d')):[];}_0x9a0533['context']=_0x43cf2e[_0xe379('0x4')];_0x9a0533[_0xe379('0x5')]=_0x43cf2e[_0xe379('0x5')];if(_0x9a0533[_0xe379('0x2')])_0x9a0533[_0xe379('0x2')]=_0x9a0533[_0xe379('0x2')]['toLowerCase']();if(_0x43cf2e['type']===_0xe379('0x10')){if(_0x9a0533['hasOwnProperty']('tag')&&_0x9a0533[_0xe379('0x35')]&&_0x9a0533[_0xe379('0x35')]!=='--'){_0x399bc6[_0xe379('0xb')]({'type':_0x9a0533[_0xe379('0x2')]['toLowerCase'](),'app':_0xe379('0x6'),'appdata':_0xe379('0x36')+_0x9a0533['tag'],'context':_0x43cf2e[_0xe379('0x4')],'exten':_0x43cf2e[_0xe379('0x5')],'priority':_0x9a0533['intervals']['length']+_0x35a5e8+_0x6182d1++,'VoiceExtensionId':_0x43cf2e['id']});}_0x399bc6[_0xe379('0xb')]({'type':_0x9a0533[_0xe379('0x2')]['toLowerCase'](),'app':_0xe379('0x37'),'appdata':_0xe379('0x38')+(_0x9a0533[_0xe379('0x39')]?_0xe379('0x3a')+_0x9a0533[_0xe379('0x39')]+')':'NoOp(No\x20number\x20available)'),'context':_0x43cf2e[_0xe379('0x4')],'exten':_0x43cf2e['exten'],'priority':_0x9a0533['intervals'][_0xe379('0x30')]+_0x35a5e8+_0x6182d1++,'VoiceExtensionId':_0x43cf2e['id']});}else{if(_0x9a0533[_0xe379('0x3b')](_0xe379('0x3c'))){if(['queue','playback'][_0xe379('0x3d')](_0x9a0533['app'][_0xe379('0x3e')]())&&_0x9a0533[_0xe379('0x3f')]!=='custom'){if(_0x9a0533['answer']){_0x399bc6[_0xe379('0xb')]({'type':_0x9a0533[_0xe379('0x2')][_0xe379('0x3e')](),'app':_0xe379('0x37'),'appdata':_0xe379('0x40'),'context':_0x43cf2e[_0xe379('0x4')],'exten':_0x43cf2e[_0xe379('0x5')],'priority':_0x9a0533[_0xe379('0x32')][_0xe379('0x30')]+_0x35a5e8+_0x6182d1++,'VoiceExtensionId':_0x43cf2e['id']});_0x399bc6[_0xe379('0xb')]({'type':_0x9a0533['type'][_0xe379('0x3e')](),'app':_0xe379('0x6'),'appdata':'XCALLY-MOTION-ANSWER=1','context':_0x43cf2e[_0xe379('0x4')],'exten':_0x43cf2e[_0xe379('0x5')],'priority':_0x9a0533[_0xe379('0x32')][_0xe379('0x30')]+_0x35a5e8+_0x6182d1++,'VoiceExtensionId':_0x43cf2e['id']});}else{_0x399bc6[_0xe379('0xb')]({'type':_0x9a0533[_0xe379('0x2')]['toLowerCase'](),'app':_0xe379('0x37'),'appdata':_0xe379('0x41'),'context':_0x43cf2e['context'],'exten':_0x43cf2e['exten'],'priority':_0x9a0533['intervals'][_0xe379('0x30')]+_0x35a5e8+_0x6182d1++,'VoiceExtensionId':_0x43cf2e['id']});_0x399bc6[_0xe379('0xb')]({'type':_0x9a0533[_0xe379('0x2')][_0xe379('0x3e')](),'app':'Set','appdata':_0xe379('0x42'),'context':_0x43cf2e['context'],'exten':_0x43cf2e[_0xe379('0x5')],'priority':_0x9a0533[_0xe379('0x32')]['length']+_0x35a5e8+_0x6182d1++,'VoiceExtensionId':_0x43cf2e['id']});}}}}for(var _0x480b39=0x0;_0x480b39<_0x9a0533['intervals'][_0xe379('0x30')];_0x480b39++){var _0x5390f7=_0x35a5e8+_0x9a0533[_0xe379('0x32')][_0xe379('0x30')];var _0x13acba=_0x480b39===_0x9a0533['intervals'][_0xe379('0x30')]-0x1?_0x35a5e8+_0x399bc6[_0xe379('0x30')]+_0x3aa919[_0xe379('0x30')]+0x2:_0x35a5e8+_0x480b39+0x1;_0x399bc6[_0xe379('0x43')](_0x480b39,0x0,{'type':_0x43cf2e[_0xe379('0x2')],'app':'GotoIfTime','appdata':_0x9a0533['intervals'][_0x480b39]+'?'+_0x43cf2e['context']+_0xe379('0x44')+_0x5390f7+':'+_0x43cf2e[_0xe379('0x4')]+_0xe379('0x44')+_0x13acba,'exten':_0x43cf2e[_0xe379('0x5')],'context':_0x43cf2e[_0xe379('0x4')],'priority':_0x35a5e8+_0x480b39,'VoiceExtensionId':_0x43cf2e['id']});}if(_0x9a0533[_0xe379('0x3f')]===_0xe379('0x45'))_0x9a0533[_0xe379('0x46')]=_0x2a3a99(_0x43cf2e,_0x9a0533[_0xe379('0x46')]);_0x9a0533['priority']=_0x399bc6[_0xe379('0x30')]?_[_0xe379('0x47')](_0x399bc6)['priority']+0x1:_0x35a5e8;_0x26d868=_[_0xe379('0x48')](_0x26d868,_0x399bc6,[_0x9a0533],_0x3aa919);_0x35a5e8=_[_0xe379('0x47')](_0x26d868)[_0xe379('0x49')]+0x1;}return _0x444fa9(_0x26d868);})[_0xe379('0x4a')](function(_0x569e4a){_0x5e0d55(_0x569e4a);});});}return _0x4bbe70[_0xe379('0x4b')](_0xe379('0x4c'),attributes,{'tableName':_0xe379('0x4d'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x1ab78a){var _0x504971=this[_0xe379('0x4e')]({'plain':!![]});var _0x106924=_0x504971[_0xe379('0x2')]===_0xe379('0x10')?_0x2615bd(_0x504971):_0x1e24f9(_0x504971);return _0x1b8050(_0x504971,_0x1ab78a,_['last'](_0x106924)[_0xe379('0x49')]+0x1)['then'](function(_0x52e4cc){var _0x93978c=_[_0xe379('0x48')](_0x106924,_0x52e4cc);_0x93978c[_0xe379('0xb')]({'type':_0x504971[_0xe379('0x2')],'app':_0xe379('0x4f'),'exten':_0x504971[_0xe379('0x5')],'context':_0x504971[_0xe379('0x4')],'priority':_['last'](_0x93978c)[_0xe379('0x49')]+0x1,'VoiceExtensionId':_0x504971['id']});return _0x93978c;});}}});};
\ No newline at end of file
index 1f9cf71..7488b2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55c1=['../../config/logger','rpc','jayson/promise','client','http','defaults','redis','localhost','register','request','info','request\x20sent','debug','stringify','error','code','VoiceExtension,\x20%s,\x20%s','message','result','catch','GetVoiceExtension','VoiceExtension','findAll','options','raw','where','attributes','include','map','model','lodash','util','ioredis','../../mysqldb','../../config/utils'];(function(_0x477159,_0x4a2728){var _0x81a2ed=function(_0xa103f9){while(--_0xa103f9){_0x477159['push'](_0x477159['shift']());}};_0x81a2ed(++_0x4a2728);}(_0x55c1,0x1e5));var _0x155c=function(_0x5b6fd3,_0x4af8d4){_0x5b6fd3=_0x5b6fd3-0x0;var _0x75ef1e=_0x55c1[_0x5b6fd3];return _0x75ef1e;};'use strict';var _=require(_0x155c('0x0'));var util=require(_0x155c('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x155c('0x2'));var db=require(_0x155c('0x3'))['db'];var utils=require(_0x155c('0x4'));var logger=require(_0x155c('0x5'))(_0x155c('0x6'));var config=require('../../config/environment');var jayson=require(_0x155c('0x7'));var client=jayson[_0x155c('0x8')][_0x155c('0x9')]({'port':0x232a});config['redis']=_[_0x155c('0xa')](config[_0x155c('0xb')],{'host':_0x155c('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./voiceExtension.socket')[_0x155c('0xd')](socket);function respondWithRpcPromise(_0xb51331,_0x2bf577,_0x2194ff){return new BPromise(function(_0x4f95f0,_0x228de5){return client[_0x155c('0xe')](_0xb51331,_0x2194ff)['then'](function(_0x192182){logger[_0x155c('0xf')]('VoiceExtension,\x20%s,\x20%s',_0x2bf577,_0x155c('0x10'));logger[_0x155c('0x11')]('VoiceExtension,\x20%s,\x20%s,\x20%s',_0x2bf577,_0x155c('0x10'),JSON[_0x155c('0x12')](_0x192182));if(_0x192182[_0x155c('0x13')]){if(_0x192182['error'][_0x155c('0x14')]===0x1f4){logger[_0x155c('0x13')](_0x155c('0x15'),_0x2bf577,_0x192182[_0x155c('0x13')][_0x155c('0x16')]);return _0x228de5(_0x192182['error'][_0x155c('0x16')]);}logger[_0x155c('0x13')]('VoiceExtension,\x20%s,\x20%s',_0x2bf577,_0x192182[_0x155c('0x13')]['message']);return _0x4f95f0(_0x192182[_0x155c('0x13')][_0x155c('0x16')]);}else{logger[_0x155c('0xf')]('VoiceExtension,\x20%s,\x20%s',_0x2bf577,_0x155c('0x10'));_0x4f95f0(_0x192182[_0x155c('0x17')][_0x155c('0x16')]);}})[_0x155c('0x18')](function(_0x43f537){logger[_0x155c('0x13')](_0x155c('0x15'),_0x2bf577,_0x43f537);_0x228de5(_0x43f537);});});}exports[_0x155c('0x19')]=function(_0x105206){var _0x137342=this;return new Promise(function(_0x32134a,_0xe422f6){return db[_0x155c('0x1a')][_0x155c('0x1b')]({'raw':_0x105206[_0x155c('0x1c')]?_0x105206[_0x155c('0x1c')][_0x155c('0x1d')]===undefined?!![]:![]:!![],'where':_0x105206['options']?_0x105206[_0x155c('0x1c')][_0x155c('0x1e')]||null:null,'attributes':_0x105206[_0x155c('0x1c')]?_0x105206[_0x155c('0x1c')][_0x155c('0x1f')]||null:null,'limit':_0x105206[_0x155c('0x1c')]?_0x105206['options']['limit']||null:null,'include':_0x105206[_0x155c('0x1c')]?_0x105206[_0x155c('0x1c')][_0x155c('0x20')]?_[_0x155c('0x21')](_0x105206[_0x155c('0x1c')][_0x155c('0x20')],function(_0x452175){return{'model':db[_0x452175[_0x155c('0x22')]],'as':_0x452175['as'],'attributes':_0x452175[_0x155c('0x1f')],'include':_0x452175[_0x155c('0x20')]?_[_0x155c('0x21')](_0x452175[_0x155c('0x20')],function(_0xf4e683){return{'model':db[_0xf4e683[_0x155c('0x22')]],'as':_0xf4e683['as'],'attributes':_0xf4e683[_0x155c('0x1f')],'include':_0xf4e683[_0x155c('0x20')]?_['map'](_0xf4e683[_0x155c('0x20')],function(_0x5a2004){return{'model':db[_0x5a2004['model']],'as':_0x5a2004['as'],'attributes':_0x5a2004['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x43608a){logger[_0x155c('0xf')](_0x155c('0x19'),_0x105206);logger['debug'](_0x155c('0x19'),_0x105206,JSON[_0x155c('0x12')](_0x43608a));_0x32134a(_0x43608a);})[_0x155c('0x18')](function(_0x595d47){logger['error']('GetVoiceExtension',_0x595d47[_0x155c('0x16')],_0x105206);_0xe422f6(_0x137342[_0x155c('0x13')](0x1f4,_0x595d47['message']));});});};
\ No newline at end of file
+var _0x1561=['debug','GetVoiceExtension','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','defaults','redis','localhost','socket.io-emitter','register','request','VoiceExtension,\x20%s,\x20%s','request\x20sent','error','message','info','result','VoiceExtension','findAll','options','where','limit','include','model','attributes','map'];(function(_0xaca81c,_0x2df861){var _0x3b0001=function(_0x3be21d){while(--_0x3be21d){_0xaca81c['push'](_0xaca81c['shift']());}};_0x3b0001(++_0x2df861);}(_0x1561,0x1bd));var _0x1156=function(_0x2b0fd0,_0xd01a2f){_0x2b0fd0=_0x2b0fd0-0x0;var _0x19b33c=_0x1561[_0x2b0fd0];return _0x19b33c;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1156('0x0'));var BPromise=require(_0x1156('0x1'));var rs=require(_0x1156('0x2'));var fs=require('fs');var Redis=require(_0x1156('0x3'));var db=require(_0x1156('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x1156('0x5'))(_0x1156('0x6'));var config=require(_0x1156('0x7'));var jayson=require(_0x1156('0x8'));var client=jayson['client'][_0x1156('0x9')]({'port':0x232a});config['redis']=_[_0x1156('0xa')](config[_0x1156('0xb')],{'host':_0x1156('0xc'),'port':0x18eb});var socket=require(_0x1156('0xd'))(new Redis(config[_0x1156('0xb')]));require('./voiceExtension.socket')[_0x1156('0xe')](socket);function respondWithRpcPromise(_0x4ca332,_0x49b380,_0x30ab38){return new BPromise(function(_0x44f351,_0x55bb5f){return client[_0x1156('0xf')](_0x4ca332,_0x30ab38)['then'](function(_0x340673){logger['info'](_0x1156('0x10'),_0x49b380,_0x1156('0x11'));logger['debug']('VoiceExtension,\x20%s,\x20%s,\x20%s',_0x49b380,_0x1156('0x11'),JSON['stringify'](_0x340673));if(_0x340673[_0x1156('0x12')]){if(_0x340673[_0x1156('0x12')]['code']===0x1f4){logger['error'](_0x1156('0x10'),_0x49b380,_0x340673[_0x1156('0x12')][_0x1156('0x13')]);return _0x55bb5f(_0x340673['error']['message']);}logger[_0x1156('0x12')](_0x1156('0x10'),_0x49b380,_0x340673[_0x1156('0x12')][_0x1156('0x13')]);return _0x44f351(_0x340673[_0x1156('0x12')][_0x1156('0x13')]);}else{logger[_0x1156('0x14')](_0x1156('0x10'),_0x49b380,_0x1156('0x11'));_0x44f351(_0x340673[_0x1156('0x15')][_0x1156('0x13')]);}})['catch'](function(_0x18bc91){logger[_0x1156('0x12')](_0x1156('0x10'),_0x49b380,_0x18bc91);_0x55bb5f(_0x18bc91);});});}exports['GetVoiceExtension']=function(_0x30353b){var _0x340fae=this;return new Promise(function(_0x33f611,_0x1cc21f){return db[_0x1156('0x16')][_0x1156('0x17')]({'raw':_0x30353b[_0x1156('0x18')]?_0x30353b[_0x1156('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x30353b[_0x1156('0x18')]?_0x30353b['options'][_0x1156('0x19')]||null:null,'attributes':_0x30353b[_0x1156('0x18')]?_0x30353b[_0x1156('0x18')]['attributes']||null:null,'limit':_0x30353b[_0x1156('0x18')]?_0x30353b[_0x1156('0x18')][_0x1156('0x1a')]||null:null,'include':_0x30353b[_0x1156('0x18')]?_0x30353b[_0x1156('0x18')][_0x1156('0x1b')]?_['map'](_0x30353b[_0x1156('0x18')][_0x1156('0x1b')],function(_0x204acc){return{'model':db[_0x204acc[_0x1156('0x1c')]],'as':_0x204acc['as'],'attributes':_0x204acc[_0x1156('0x1d')],'include':_0x204acc[_0x1156('0x1b')]?_[_0x1156('0x1e')](_0x204acc[_0x1156('0x1b')],function(_0x195aef){return{'model':db[_0x195aef[_0x1156('0x1c')]],'as':_0x195aef['as'],'attributes':_0x195aef[_0x1156('0x1d')],'include':_0x195aef[_0x1156('0x1b')]?_[_0x1156('0x1e')](_0x195aef[_0x1156('0x1b')],function(_0x4f5c32){return{'model':db[_0x4f5c32[_0x1156('0x1c')]],'as':_0x4f5c32['as'],'attributes':_0x4f5c32[_0x1156('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xef8892){logger[_0x1156('0x14')]('GetVoiceExtension',_0x30353b);logger[_0x1156('0x1f')](_0x1156('0x20'),_0x30353b,JSON['stringify'](_0xef8892));_0x33f611(_0xef8892);})[_0x1156('0x21')](function(_0x265406){logger['error'](_0x1156('0x20'),_0x265406[_0x1156('0x13')],_0x30353b);_0x1cc21f(_0x340fae['error'](0x1f4,_0x265406[_0x1156('0x13')]));});});};
\ No newline at end of file
index fa0c02b..3102f10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0295=['emit','removeListener','register','voiceExtension:','./voiceExtension.events','update'];(function(_0x2290aa,_0x288e44){var _0x362ee8=function(_0x9db4f3){while(--_0x9db4f3){_0x2290aa['push'](_0x2290aa['shift']());}};_0x362ee8(++_0x288e44);}(_0x0295,0x1f0));var _0x5029=function(_0x3aeae6,_0x201d94){_0x3aeae6=_0x3aeae6-0x0;var _0xc3594=_0x0295[_0x3aeae6];return _0xc3594;};'use strict';var VoiceExtensionEvents=require(_0x5029('0x0'));var events=['save','remove',_0x5029('0x1')];function createListener(_0x4f552a,_0x53c2e1){return function(_0x315589){_0x53c2e1[_0x5029('0x2')](_0x4f552a,_0x315589);};}function removeListener(_0x157a4f,_0x3d0af1){return function(){VoiceExtensionEvents[_0x5029('0x3')](_0x157a4f,_0x3d0af1);};}exports[_0x5029('0x4')]=function(_0x200217){for(var _0x215955=0x0,_0x5b3cd=events['length'];_0x215955<_0x5b3cd;_0x215955++){var _0x54978f=events[_0x215955];var _0x4ee867=createListener(_0x5029('0x5')+_0x54978f,_0x200217);VoiceExtensionEvents['on'](_0x54978f,_0x4ee867);}};
\ No newline at end of file
+var _0xe14b=['removeListener','register','length','./voiceExtension.events','save','emit'];(function(_0x3461d0,_0x43091e){var _0x138789=function(_0x3335f4){while(--_0x3335f4){_0x3461d0['push'](_0x3461d0['shift']());}};_0x138789(++_0x43091e);}(_0xe14b,0x93));var _0xbe14=function(_0x23a4ff,_0x58045e){_0x23a4ff=_0x23a4ff-0x0;var _0x233eae=_0xe14b[_0x23a4ff];return _0x233eae;};'use strict';var VoiceExtensionEvents=require(_0xbe14('0x0'));var events=[_0xbe14('0x1'),'remove','update'];function createListener(_0x11c3a0,_0x36393a){return function(_0x48a116){_0x36393a[_0xbe14('0x2')](_0x11c3a0,_0x48a116);};}function removeListener(_0x5ce8fb,_0x496c04){return function(){VoiceExtensionEvents[_0xbe14('0x3')](_0x5ce8fb,_0x496c04);};}exports[_0xbe14('0x4')]=function(_0x1fe204){for(var _0x1ff100=0x0,_0x1d9ade=events[_0xbe14('0x5')];_0x1ff100<_0x1d9ade;_0x1ff100++){var _0x196fca=events[_0x1ff100];var _0x566ae7=createListener('voiceExtension:'+_0x196fca,_0x1fe204);VoiceExtensionEvents['on'](_0x196fca,_0x566ae7);}};
\ No newline at end of file
index 445426e..641e574 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd117=['./voiceMail.controller','get','isAuthenticated','index','/:id','show','/:id/messages','getMessages','post','put','update','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x105944,_0x7f391){var _0x315964=function(_0x2c2328){while(--_0x2c2328){_0x105944['push'](_0x105944['shift']());}};_0x315964(++_0x7f391);}(_0xd117,0x182));var _0x7d11=function(_0x30182f,_0x30ce41){_0x30182f=_0x30182f-0x0;var _0x5207db=_0xd117[_0x30182f];return _0x5207db;};'use strict';var multer=require(_0x7d11('0x0'));var util=require(_0x7d11('0x1'));var path=require(_0x7d11('0x2'));var timeout=require(_0x7d11('0x3'));var express=require(_0x7d11('0x4'));var router=express[_0x7d11('0x5')]();var fs_extra=require(_0x7d11('0x6'));var auth=require(_0x7d11('0x7'));var interaction=require(_0x7d11('0x8'));var config=require(_0x7d11('0x9'));var controller=require(_0x7d11('0xa'));router[_0x7d11('0xb')]('/',auth[_0x7d11('0xc')](),controller[_0x7d11('0xd')]);router[_0x7d11('0xb')](_0x7d11('0xe'),auth['isAuthenticated'](),controller[_0x7d11('0xf')]);router[_0x7d11('0xb')](_0x7d11('0x10'),auth['isAuthenticated'](),controller[_0x7d11('0x11')]);router[_0x7d11('0x12')]('/',auth[_0x7d11('0xc')](),controller['create']);router[_0x7d11('0x13')]('/:id',auth['isAuthenticated'](),controller[_0x7d11('0x14')]);router['delete']('/:id',auth[_0x7d11('0xc')](),controller['destroy']);module[_0x7d11('0x15')]=router;
\ No newline at end of file
+var _0xd117=['./voiceMail.controller','get','isAuthenticated','index','/:id','show','/:id/messages','getMessages','post','put','update','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x2dbbe2,_0x11424b){var _0x2e3147=function(_0x1912c0){while(--_0x1912c0){_0x2dbbe2['push'](_0x2dbbe2['shift']());}};_0x2e3147(++_0x11424b);}(_0xd117,0x182));var _0x7d11=function(_0x5c768b,_0x5e88a6){_0x5c768b=_0x5c768b-0x0;var _0x335af8=_0xd117[_0x5c768b];return _0x335af8;};'use strict';var multer=require(_0x7d11('0x0'));var util=require(_0x7d11('0x1'));var path=require(_0x7d11('0x2'));var timeout=require(_0x7d11('0x3'));var express=require(_0x7d11('0x4'));var router=express[_0x7d11('0x5')]();var fs_extra=require(_0x7d11('0x6'));var auth=require(_0x7d11('0x7'));var interaction=require(_0x7d11('0x8'));var config=require(_0x7d11('0x9'));var controller=require(_0x7d11('0xa'));router[_0x7d11('0xb')]('/',auth[_0x7d11('0xc')](),controller[_0x7d11('0xd')]);router[_0x7d11('0xb')](_0x7d11('0xe'),auth['isAuthenticated'](),controller[_0x7d11('0xf')]);router[_0x7d11('0xb')](_0x7d11('0x10'),auth['isAuthenticated'](),controller[_0x7d11('0x11')]);router[_0x7d11('0x12')]('/',auth[_0x7d11('0xc')](),controller['create']);router[_0x7d11('0x13')]('/:id',auth['isAuthenticated'](),controller[_0x7d11('0x14')]);router['delete']('/:id',auth[_0x7d11('0xc')](),controller['destroy']);module[_0x7d11('0x15')]=router;
\ No newline at end of file
index ad88330..2a2a576 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffcf=['sequelize','STRING','contest_mailbox','setDataValue','email','string','ENUM','yes','TINYINT(4)','TIMESTAMP','VIRTUAL','getDataValue','mailbox'];(function(_0xa2e621,_0x35d1a5){var _0x376bcc=function(_0x353a15){while(--_0x353a15){_0xa2e621['push'](_0xa2e621['shift']());}};_0x376bcc(++_0x35d1a5);}(_0xffcf,0x8f));var _0xfffc=function(_0xd39959,_0x302d09){_0xd39959=_0xd39959-0x0;var _0x1ff69c=_0xffcf[_0xd39959];return _0x1ff69c;};'use strict';var Sequelize=require(_0xfffc('0x0'));module['exports']={'customer_id':{'type':Sequelize[_0xfffc('0x1')]},'context':{'type':Sequelize[_0xfffc('0x1')],'defaultValue':'from-voicemail','unique':'contest_mailbox'},'mailbox':{'type':Sequelize[_0xfffc('0x1')],'defaultValue':'','allowNull':![],'unique':_0xfffc('0x2')},'password':{'type':Sequelize[_0xfffc('0x1')]},'fullname':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0xfffc('0x1')],'validate':{'isEmail':!![]},'set':function(_0xd1cfc9){this[_0xfffc('0x3')](_0xfffc('0x4'),typeof _0xd1cfc9===_0xfffc('0x5')&&_0xd1cfc9['trim']()?_0xd1cfc9['trim']():null);}},'pager':{'type':Sequelize[_0xfffc('0x1')]},'tz':{'type':Sequelize[_0xfffc('0x1')],'defaultValue':'central'},'attach':{'type':Sequelize[_0xfffc('0x6')](_0xfffc('0x7'),'no'),'defaultValue':_0xfffc('0x7'),'allowNull':![]},'saycid':{'type':Sequelize[_0xfffc('0x6')](_0xfffc('0x7'),'no'),'defaultValue':'yes','allowNull':![]},'dialout':{'type':Sequelize['STRING']},'callback':{'type':Sequelize[_0xfffc('0x1')]},'review':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0xfffc('0x6')](_0xfffc('0x7'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0xfffc('0x6')](_0xfffc('0x7'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0xfffc('0x6')](_0xfffc('0x7'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0xfffc('0x8'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0xfffc('0x6')](_0xfffc('0x7'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0xfffc('0x6')](_0xfffc('0x7'),'no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0xfffc('0x6')](_0xfffc('0x7'),'no'),'defaultValue':_0xfffc('0x7'),'allowNull':![]},'forcename':{'type':Sequelize[_0xfffc('0x6')](_0xfffc('0x7'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize['ENUM'](_0xfffc('0x7'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize['ENUM'](_0xfffc('0x7'),'no'),'defaultValue':_0xfffc('0x7'),'allowNull':![]},'stamp':{'type':_0xfffc('0x9')},'emailsubject':{'type':Sequelize[_0xfffc('0x1')]},'emailbody':{'type':Sequelize[_0xfffc('0x1')]},'maxsecs':{'type':Sequelize['INTEGER'](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize['INTEGER'](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0xfffc('0xa')],'get':function(){return this[_0xfffc('0xb')]('fullname')+'\x20-\x20'+this['getDataValue'](_0xfffc('0xc'));}}};
\ No newline at end of file
+var _0x918e=['email','string','trim','yes','ENUM','TIMESTAMP','INTEGER','VIRTUAL','getDataValue','fullname','mailbox','sequelize','exports','STRING','from-voicemail','contest_mailbox','setDataValue'];(function(_0x4819e9,_0x4bcdd7){var _0x2a95be=function(_0x22c52f){while(--_0x22c52f){_0x4819e9['push'](_0x4819e9['shift']());}};_0x2a95be(++_0x4bcdd7);}(_0x918e,0x12c));var _0xe918=function(_0xfa9b97,_0x24a570){_0xfa9b97=_0xfa9b97-0x0;var _0x48cc61=_0x918e[_0xfa9b97];return _0x48cc61;};'use strict';var Sequelize=require(_0xe918('0x0'));module[_0xe918('0x1')]={'customer_id':{'type':Sequelize[_0xe918('0x2')]},'context':{'type':Sequelize[_0xe918('0x2')],'defaultValue':_0xe918('0x3'),'unique':_0xe918('0x4')},'mailbox':{'type':Sequelize[_0xe918('0x2')],'defaultValue':'','allowNull':![],'unique':_0xe918('0x4')},'password':{'type':Sequelize['STRING']},'fullname':{'type':Sequelize[_0xe918('0x2')]},'email':{'type':Sequelize[_0xe918('0x2')],'validate':{'isEmail':!![]},'set':function(_0x551d3e){this[_0xe918('0x5')](_0xe918('0x6'),typeof _0x551d3e===_0xe918('0x7')&&_0x551d3e[_0xe918('0x8')]()?_0x551d3e['trim']():null);}},'pager':{'type':Sequelize[_0xe918('0x2')]},'tz':{'type':Sequelize[_0xe918('0x2')],'defaultValue':'central'},'attach':{'type':Sequelize['ENUM'](_0xe918('0x9'),'no'),'defaultValue':'yes','allowNull':![]},'saycid':{'type':Sequelize['ENUM'](_0xe918('0x9'),'no'),'defaultValue':_0xe918('0x9'),'allowNull':![]},'dialout':{'type':Sequelize['STRING']},'callback':{'type':Sequelize[_0xe918('0x2')]},'review':{'type':Sequelize[_0xe918('0xa')]('yes','no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0xe918('0xa')](_0xe918('0x9'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0xe918('0xa')](_0xe918('0x9'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0xe918('0xa')](_0xe918('0x9'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':'TINYINT(4)','defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0xe918('0xa')](_0xe918('0x9'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0xe918('0xa')]('yes','no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0xe918('0xa')](_0xe918('0x9'),'no'),'defaultValue':_0xe918('0x9'),'allowNull':![]},'forcename':{'type':Sequelize[_0xe918('0xa')](_0xe918('0x9'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize['ENUM'](_0xe918('0x9'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0xe918('0xa')](_0xe918('0x9'),'no'),'defaultValue':'yes','allowNull':![]},'stamp':{'type':_0xe918('0xb')},'emailsubject':{'type':Sequelize[_0xe918('0x2')]},'emailbody':{'type':Sequelize[_0xe918('0x2')]},'maxsecs':{'type':Sequelize[_0xe918('0xc')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize['INTEGER'](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0xe918('0xd')],'get':function(){return this[_0xe918('0xe')](_0xe918('0xf'))+'\x20-\x20'+this[_0xe918('0xe')](_0xe918('0x10'));}}};
\ No newline at end of file
index a9cffd7..a971b5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9be=['filter','options','include','findAll','rows','catch','show','rawAttributes','length','includeAll','create','body','user','UserProfileSection','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','getMessages','findOne','VoiceMailMessage','mailbox','findAndCountAll','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','end','offset','undefined','limit','count','status','Content-Range','apply','reject','save','update','then','destroy','get','UserProfileResource','sendStatus','error','name','index','VoiceMail','fieldName','type','key','model','map','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','filters','pick','where','merge','VIRTUAL'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0xb9be,0xc5));var _0xeb9b=function(_0x503950,_0x5022eb){_0x503950=_0x503950-0x0;var _0x1657a9=_0xb9be[_0x503950];return _0x1657a9;};'use strict';var emlformat=require(_0xeb9b('0x0'));var rimraf=require(_0xeb9b('0x1'));var zipdir=require(_0xeb9b('0x2'));var jsonpatch=require(_0xeb9b('0x3'));var rp=require(_0xeb9b('0x4'));var moment=require(_0xeb9b('0x5'));var BPromise=require(_0xeb9b('0x6'));var Mustache=require(_0xeb9b('0x7'));var util=require(_0xeb9b('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0xeb9b('0x9'));var ejs=require(_0xeb9b('0xa'));var fs=require('fs');var fs_extra=require(_0xeb9b('0xb'));var _=require('lodash');var squel=require(_0xeb9b('0xc'));var crypto=require(_0xeb9b('0xd'));var jsforce=require(_0xeb9b('0xe'));var deskjs=require(_0xeb9b('0xf'));var toCsv=require(_0xeb9b('0x9'));var querystring=require(_0xeb9b('0x10'));var Papa=require(_0xeb9b('0x11'));var Redis=require(_0xeb9b('0x12'));var authService=require(_0xeb9b('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xeb9b('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xeb9b('0x15'));var utils=require(_0xeb9b('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xeb9b('0x17'));var db=require(_0xeb9b('0x18'))['db'];function respondWithStatusCode(_0x3df18a,_0x2a01df){_0x2a01df=_0x2a01df||0xcc;return function(_0x51598f){if(_0x51598f){return _0x3df18a['sendStatus'](_0x2a01df);}return _0x3df18a['status'](_0x2a01df)[_0xeb9b('0x19')]();};}function respondWithResult(_0x1ef03f,_0x2674e6){_0x2674e6=_0x2674e6||0xc8;return function(_0x4ec46d){if(_0x4ec46d){return _0x1ef03f['status'](_0x2674e6)['json'](_0x4ec46d);}};}function respondWithFilteredResult(_0x32538b,_0x1a5f27){return function(_0x406afd){if(_0x406afd){var _0x3fa308=typeof _0x1a5f27[_0xeb9b('0x1a')]===_0xeb9b('0x1b')&&typeof _0x1a5f27[_0xeb9b('0x1c')]==='undefined';var _0x2e8645=_0x406afd[_0xeb9b('0x1d')];var _0x21aca6=_0x3fa308?0x0:_0x1a5f27[_0xeb9b('0x1a')];var _0x3cbe3e=_0x3fa308?_0x406afd[_0xeb9b('0x1d')]:_0x1a5f27[_0xeb9b('0x1a')]+_0x1a5f27[_0xeb9b('0x1c')];var _0x2c199f;if(_0x3cbe3e>=_0x2e8645){_0x3cbe3e=_0x2e8645;_0x2c199f=0xc8;}else{_0x2c199f=0xce;}_0x32538b[_0xeb9b('0x1e')](_0x2c199f);return _0x32538b['set'](_0xeb9b('0x1f'),_0x21aca6+'-'+_0x3cbe3e+'/'+_0x2e8645)['json'](_0x406afd);}return null;};}function patchUpdates(_0x5d5f54){return function(_0x580498){try{jsonpatch[_0xeb9b('0x20')](_0x580498,_0x5d5f54,!![]);}catch(_0x4ab4b8){return BPromise[_0xeb9b('0x21')](_0x4ab4b8);}return _0x580498[_0xeb9b('0x22')]();};}function saveUpdates(_0x37935c,_0x37d7e0){return function(_0x3c8be7){if(_0x3c8be7){return _0x3c8be7[_0xeb9b('0x23')](_0x37935c)[_0xeb9b('0x24')](function(_0x15e5b8){return _0x15e5b8;});}return null;};}function removeEntity(_0x142d1c,_0x46df93){return function(_0x61c86d){if(_0x61c86d){return _0x61c86d[_0xeb9b('0x25')]()[_0xeb9b('0x24')](function(){var _0xe6d3e1=_0x61c86d[_0xeb9b('0x26')]({'plain':!![]});var _0x434461='Voicemails';return db[_0xeb9b('0x27')]['destroy']({'where':{'type':_0x434461,'resourceId':_0xe6d3e1['id']}})[_0xeb9b('0x24')](function(){return _0x61c86d;});})['then'](function(){_0x142d1c[_0xeb9b('0x1e')](0xcc)[_0xeb9b('0x19')]();});}};}function handleEntityNotFound(_0x7e0134,_0xe3eda5){return function(_0x52f6c1){if(!_0x52f6c1){_0x7e0134[_0xeb9b('0x28')](0x194);}return _0x52f6c1;};}function handleError(_0x42fe78,_0x54ab67){_0x54ab67=_0x54ab67||0x1f4;return function(_0x35ff07){logger[_0xeb9b('0x29')](_0x35ff07['stack']);if(_0x35ff07[_0xeb9b('0x2a')]){delete _0x35ff07[_0xeb9b('0x2a')];}_0x42fe78[_0xeb9b('0x1e')](_0x54ab67)['send'](_0x35ff07);};}exports[_0xeb9b('0x2b')]=function(_0x5336f2,_0x6bb66){var _0x4c1331={},_0x411467={},_0x54c659={'count':0x0,'rows':[]};var _0x27578d=_['map'](db[_0xeb9b('0x2c')]['rawAttributes'],function(_0x25b8da){return{'name':_0x25b8da[_0xeb9b('0x2d')],'type':_0x25b8da[_0xeb9b('0x2e')][_0xeb9b('0x2f')]};});_0x411467[_0xeb9b('0x30')]=_[_0xeb9b('0x31')](_0x27578d,_0xeb9b('0x2a'));_0x411467[_0xeb9b('0x32')]=_[_0xeb9b('0x33')](_0x5336f2[_0xeb9b('0x32')]);_0x411467['filters']=_[_0xeb9b('0x34')](_0x411467[_0xeb9b('0x30')],_0x411467[_0xeb9b('0x32')]);_0x4c1331[_0xeb9b('0x35')]=_[_0xeb9b('0x34')](_0x411467[_0xeb9b('0x30')],qs[_0xeb9b('0x36')](_0x5336f2['query'][_0xeb9b('0x36')]));_0x4c1331[_0xeb9b('0x35')]=_0x4c1331[_0xeb9b('0x35')]['length']?_0x4c1331[_0xeb9b('0x35')]:_0x411467[_0xeb9b('0x30')];if(!_0x5336f2[_0xeb9b('0x32')][_0xeb9b('0x37')](_0xeb9b('0x38'))){_0x4c1331[_0xeb9b('0x1c')]=qs['limit'](_0x5336f2[_0xeb9b('0x32')][_0xeb9b('0x1c')]);_0x4c1331['offset']=qs[_0xeb9b('0x1a')](_0x5336f2[_0xeb9b('0x32')][_0xeb9b('0x1a')]);}_0x4c1331[_0xeb9b('0x39')]=qs[_0xeb9b('0x3a')](_0x5336f2[_0xeb9b('0x32')][_0xeb9b('0x3a')]);_0x4c1331['where']=qs[_0xeb9b('0x3b')](_[_0xeb9b('0x3c')](_0x5336f2[_0xeb9b('0x32')],_0x411467['filters']),_0x27578d);if(_0x5336f2['query']['filter']){_0x4c1331[_0xeb9b('0x3d')]=_[_0xeb9b('0x3e')](_0x4c1331[_0xeb9b('0x3d')],{'$or':_['map'](_0x27578d,function(_0x409ce6){if(_0x409ce6[_0xeb9b('0x2e')]!==_0xeb9b('0x3f')){var _0x20da52={};_0x20da52[_0x409ce6[_0xeb9b('0x2a')]]={'$like':'%'+_0x5336f2[_0xeb9b('0x32')][_0xeb9b('0x40')]+'%'};return _0x20da52;}})});}_0x4c1331=_['merge']({},_0x4c1331,_0x5336f2[_0xeb9b('0x41')]);var _0x3ccf45={'where':_0x4c1331[_0xeb9b('0x3d')]};return db['VoiceMail']['count'](_0x3ccf45)[_0xeb9b('0x24')](function(_0x110122){_0x54c659['count']=_0x110122;if(_0x5336f2[_0xeb9b('0x32')]['includeAll']){_0x4c1331[_0xeb9b('0x42')]=[{'all':!![]}];}return db[_0xeb9b('0x2c')][_0xeb9b('0x43')](_0x4c1331);})[_0xeb9b('0x24')](function(_0xbee63e){_0x54c659[_0xeb9b('0x44')]=_0xbee63e;return _0x54c659;})[_0xeb9b('0x24')](respondWithFilteredResult(_0x6bb66,_0x4c1331))[_0xeb9b('0x45')](handleError(_0x6bb66,null));};exports[_0xeb9b('0x46')]=function(_0x311e7d,_0x21bcf1){var _0x761d18={'raw':!![],'where':{'id':_0x311e7d['params']['id']}},_0x5e270a={};_0x5e270a[_0xeb9b('0x30')]=_['keys'](db[_0xeb9b('0x2c')][_0xeb9b('0x47')]);_0x5e270a[_0xeb9b('0x32')]=_['keys'](_0x311e7d[_0xeb9b('0x32')]);_0x5e270a[_0xeb9b('0x3b')]=_['intersection'](_0x5e270a[_0xeb9b('0x30')],_0x5e270a[_0xeb9b('0x32')]);_0x761d18[_0xeb9b('0x35')]=_[_0xeb9b('0x34')](_0x5e270a[_0xeb9b('0x30')],qs[_0xeb9b('0x36')](_0x311e7d[_0xeb9b('0x32')][_0xeb9b('0x36')]));_0x761d18['attributes']=_0x761d18['attributes'][_0xeb9b('0x48')]?_0x761d18['attributes']:_0x5e270a['model'];if(_0x311e7d[_0xeb9b('0x32')][_0xeb9b('0x49')]){_0x761d18[_0xeb9b('0x42')]=[{'all':!![]}];}_0x761d18=_[_0xeb9b('0x3e')]({},_0x761d18,_0x311e7d[_0xeb9b('0x41')]);return db[_0xeb9b('0x2c')]['find'](_0x761d18)['then'](handleEntityNotFound(_0x21bcf1,null))['then'](respondWithResult(_0x21bcf1,null))[_0xeb9b('0x45')](handleError(_0x21bcf1,null));};exports['create']=function(_0x4901b0,_0x2ee59c){return db[_0xeb9b('0x2c')][_0xeb9b('0x4a')](_0x4901b0[_0xeb9b('0x4b')],{})[_0xeb9b('0x24')](function(_0x202ef3){var _0x1a2189=_0x4901b0[_0xeb9b('0x4c')][_0xeb9b('0x26')]({'plain':!![]});if(!_0x1a2189)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1a2189['role']===_0xeb9b('0x4c')){var _0x21c93a=_0x202ef3['get']({'plain':!![]});var _0x19bfe9='Voicemails';return db[_0xeb9b('0x4d')][_0xeb9b('0x4e')]({'where':{'name':_0x19bfe9,'userProfileId':_0x1a2189['userProfileId']},'raw':!![]})['then'](function(_0x530c1c){if(_0x530c1c&&_0x530c1c[_0xeb9b('0x4f')]===0x0){return db[_0xeb9b('0x27')][_0xeb9b('0x4a')]({'name':_0x21c93a['name'],'resourceId':_0x21c93a['id'],'type':_0x530c1c['name'],'sectionId':_0x530c1c['id']},{})[_0xeb9b('0x24')](function(){return _0x202ef3;});}else{return _0x202ef3;}})[_0xeb9b('0x45')](function(_0x3e6e73){logger[_0xeb9b('0x29')](_0xeb9b('0x50'),_0x3e6e73);throw _0x3e6e73;});}return _0x202ef3;})[_0xeb9b('0x24')](respondWithResult(_0x2ee59c,0xc9))['catch'](handleError(_0x2ee59c,null));};exports[_0xeb9b('0x23')]=function(_0x1fab7a,_0x47e84a){if(_0x1fab7a[_0xeb9b('0x4b')]['id']){delete _0x1fab7a['body']['id'];}return db[_0xeb9b('0x2c')][_0xeb9b('0x4e')]({'where':{'id':_0x1fab7a['params']['id']}})[_0xeb9b('0x24')](handleEntityNotFound(_0x47e84a,null))['then'](saveUpdates(_0x1fab7a[_0xeb9b('0x4b')],null))[_0xeb9b('0x24')](respondWithResult(_0x47e84a,null))[_0xeb9b('0x45')](handleError(_0x47e84a,null));};exports[_0xeb9b('0x25')]=function(_0x5c769e,_0x5a641a){return db[_0xeb9b('0x2c')][_0xeb9b('0x4e')]({'where':{'id':_0x5c769e[_0xeb9b('0x51')]['id']}})['then'](handleEntityNotFound(_0x5a641a,null))[_0xeb9b('0x24')](removeEntity(_0x5a641a,null))[_0xeb9b('0x45')](handleError(_0x5a641a,null));};exports[_0xeb9b('0x52')]=function(_0x24444e,_0x2d0ba9,_0x114132){return db[_0xeb9b('0x2c')][_0xeb9b('0x53')]({'where':{'id':_0x24444e[_0xeb9b('0x51')]['id']}})[_0xeb9b('0x24')](handleEntityNotFound(_0x2d0ba9,null))[_0xeb9b('0x24')](function(_0x58e550){var _0x5531a4;var _0x4b2506={},_0x83d48a={};_0x83d48a['model']=_[_0xeb9b('0x33')](db[_0xeb9b('0x54')][_0xeb9b('0x47')]);_0x83d48a['query']=_[_0xeb9b('0x33')](_0x24444e[_0xeb9b('0x32')]);_0x83d48a[_0xeb9b('0x3b')]=_[_0xeb9b('0x34')](_0x83d48a[_0xeb9b('0x30')],_0x83d48a[_0xeb9b('0x32')]);_0x4b2506[_0xeb9b('0x35')]=_[_0xeb9b('0x34')](_0x83d48a['model'],qs['fields'](_0x24444e[_0xeb9b('0x32')][_0xeb9b('0x36')]));_0x4b2506[_0xeb9b('0x35')]=_0x4b2506['attributes'][_0xeb9b('0x48')]?_0x4b2506['attributes']:_0x83d48a[_0xeb9b('0x30')];if(!_0x24444e['query'][_0xeb9b('0x37')](_0xeb9b('0x38'))){_0x4b2506[_0xeb9b('0x1c')]=qs[_0xeb9b('0x1c')](_0x24444e[_0xeb9b('0x32')]['limit']);_0x4b2506[_0xeb9b('0x1a')]=qs[_0xeb9b('0x1a')](_0x24444e['query']['offset']);}_0x4b2506[_0xeb9b('0x39')]=qs[_0xeb9b('0x3a')](_0x24444e['query'][_0xeb9b('0x3a')]);_0x4b2506['where']=qs[_0xeb9b('0x3b')](_['pick'](_0x24444e[_0xeb9b('0x32')],_0x83d48a[_0xeb9b('0x3b')]));if(_0x24444e[_0xeb9b('0x32')][_0xeb9b('0x40')]){_0x4b2506[_0xeb9b('0x3d')]=_[_0xeb9b('0x3e')](_0x4b2506['where'],{'$or':_[_0xeb9b('0x31')](_0x4b2506[_0xeb9b('0x35')],function(_0x5b670b){var _0x1acf82={};_0x1acf82[_0x5b670b]={'$like':'%'+_0x24444e[_0xeb9b('0x32')][_0xeb9b('0x40')]+'%'};return _0x1acf82;})});}_0x4b2506[_0xeb9b('0x3d')]=_['merge'](_0x4b2506[_0xeb9b('0x3d')],{'mailboxuser':_0x58e550[_0xeb9b('0x55')]});_0x4b2506=_['merge']({},_0x4b2506,_0x24444e[_0xeb9b('0x41')]);return db[_0xeb9b('0x54')][_0xeb9b('0x56')](_0x4b2506)[_0xeb9b('0x24')](respondWithFilteredResult(_0x2d0ba9,_0x4b2506));})[_0xeb9b('0x45')](handleError(_0x2d0ba9,null));};
\ No newline at end of file
+var _0x76dc=['desk.js','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','count','offset','limit','set','json','apply','reject','save','update','then','destroy','get','Voicemails','UserProfileResource','error','name','send','VoiceMail','fieldName','query','keys','filters','model','attributes','fields','length','hasOwnProperty','nolimit','where','pick','filter','merge','map','type','VIRTUAL','options','findAll','rows','catch','show','params','intersection','includeAll','include','find','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getMessages','findOne','VoiceMailMessage','rawAttributes','sort','findAndCountAll','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','to-csv','ejs','fs-extra','crypto','jsforce'];(function(_0xf6763d,_0x1ee231){var _0x212ae2=function(_0x211ed2){while(--_0x211ed2){_0xf6763d['push'](_0xf6763d['shift']());}};_0x212ae2(++_0x1ee231);}(_0x76dc,0x1f2));var _0xc76d=function(_0xc4530e,_0x34936d){_0xc4530e=_0xc4530e-0x0;var _0x453131=_0x76dc[_0xc4530e];return _0x453131;};'use strict';var emlformat=require(_0xc76d('0x0'));var rimraf=require(_0xc76d('0x1'));var zipdir=require(_0xc76d('0x2'));var jsonpatch=require(_0xc76d('0x3'));var rp=require('request-promise');var moment=require(_0xc76d('0x4'));var BPromise=require(_0xc76d('0x5'));var Mustache=require('mustache');var util=require(_0xc76d('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0xc76d('0x7'));var ejs=require(_0xc76d('0x8'));var fs=require('fs');var fs_extra=require(_0xc76d('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xc76d('0xa'));var jsforce=require(_0xc76d('0xb'));var deskjs=require(_0xc76d('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xc76d('0xd'));var Redis=require(_0xc76d('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xc76d('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc76d('0x10'));var logger=require(_0xc76d('0x11'))(_0xc76d('0x12'));var utils=require(_0xc76d('0x13'));var config=require(_0xc76d('0x14'));var licenseUtil=require(_0xc76d('0x15'));var db=require(_0xc76d('0x16'))['db'];function respondWithStatusCode(_0x2e02e9,_0x1722b3){_0x1722b3=_0x1722b3||0xcc;return function(_0x311814){if(_0x311814){return _0x2e02e9[_0xc76d('0x17')](_0x1722b3);}return _0x2e02e9[_0xc76d('0x18')](_0x1722b3)[_0xc76d('0x19')]();};}function respondWithResult(_0x3ed1bd,_0x5cda20){_0x5cda20=_0x5cda20||0xc8;return function(_0x8696db){if(_0x8696db){return _0x3ed1bd[_0xc76d('0x18')](_0x5cda20)['json'](_0x8696db);}};}function respondWithFilteredResult(_0x4741a4,_0x2d23d2){return function(_0x47a4ee){if(_0x47a4ee){var _0x6f94e=typeof _0x2d23d2['offset']===_0xc76d('0x1a')&&typeof _0x2d23d2['limit']==='undefined';var _0x45a83e=_0x47a4ee[_0xc76d('0x1b')];var _0x339623=_0x6f94e?0x0:_0x2d23d2[_0xc76d('0x1c')];var _0xd1d16f=_0x6f94e?_0x47a4ee['count']:_0x2d23d2[_0xc76d('0x1c')]+_0x2d23d2[_0xc76d('0x1d')];var _0xa0c5b6;if(_0xd1d16f>=_0x45a83e){_0xd1d16f=_0x45a83e;_0xa0c5b6=0xc8;}else{_0xa0c5b6=0xce;}_0x4741a4[_0xc76d('0x18')](_0xa0c5b6);return _0x4741a4[_0xc76d('0x1e')]('Content-Range',_0x339623+'-'+_0xd1d16f+'/'+_0x45a83e)[_0xc76d('0x1f')](_0x47a4ee);}return null;};}function patchUpdates(_0x324db7){return function(_0x5dffde){try{jsonpatch[_0xc76d('0x20')](_0x5dffde,_0x324db7,!![]);}catch(_0x777f22){return BPromise[_0xc76d('0x21')](_0x777f22);}return _0x5dffde[_0xc76d('0x22')]();};}function saveUpdates(_0x18f546,_0x3d357b){return function(_0x42b89c){if(_0x42b89c){return _0x42b89c[_0xc76d('0x23')](_0x18f546)[_0xc76d('0x24')](function(_0x20e09c){return _0x20e09c;});}return null;};}function removeEntity(_0x15328d,_0x5de11f){return function(_0x11b42f){if(_0x11b42f){return _0x11b42f[_0xc76d('0x25')]()['then'](function(){var _0x637d68=_0x11b42f[_0xc76d('0x26')]({'plain':!![]});var _0x55ca79=_0xc76d('0x27');return db[_0xc76d('0x28')][_0xc76d('0x25')]({'where':{'type':_0x55ca79,'resourceId':_0x637d68['id']}})[_0xc76d('0x24')](function(){return _0x11b42f;});})[_0xc76d('0x24')](function(){_0x15328d[_0xc76d('0x18')](0xcc)[_0xc76d('0x19')]();});}};}function handleEntityNotFound(_0x59ebd1,_0x59dabf){return function(_0x285430){if(!_0x285430){_0x59ebd1[_0xc76d('0x17')](0x194);}return _0x285430;};}function handleError(_0x5069ea,_0x31501a){_0x31501a=_0x31501a||0x1f4;return function(_0x52a79a){logger[_0xc76d('0x29')](_0x52a79a['stack']);if(_0x52a79a[_0xc76d('0x2a')]){delete _0x52a79a['name'];}_0x5069ea[_0xc76d('0x18')](_0x31501a)[_0xc76d('0x2b')](_0x52a79a);};}exports['index']=function(_0x3d4076,_0x1c68f3){var _0x9ab96c={},_0x2cf501={},_0x4feeda={'count':0x0,'rows':[]};var _0x283e16=_['map'](db[_0xc76d('0x2c')]['rawAttributes'],function(_0x30769f){return{'name':_0x30769f[_0xc76d('0x2d')],'type':_0x30769f['type']['key']};});_0x2cf501['model']=_['map'](_0x283e16,_0xc76d('0x2a'));_0x2cf501[_0xc76d('0x2e')]=_[_0xc76d('0x2f')](_0x3d4076[_0xc76d('0x2e')]);_0x2cf501[_0xc76d('0x30')]=_['intersection'](_0x2cf501[_0xc76d('0x31')],_0x2cf501['query']);_0x9ab96c[_0xc76d('0x32')]=_['intersection'](_0x2cf501[_0xc76d('0x31')],qs[_0xc76d('0x33')](_0x3d4076[_0xc76d('0x2e')][_0xc76d('0x33')]));_0x9ab96c[_0xc76d('0x32')]=_0x9ab96c['attributes'][_0xc76d('0x34')]?_0x9ab96c[_0xc76d('0x32')]:_0x2cf501[_0xc76d('0x31')];if(!_0x3d4076['query'][_0xc76d('0x35')](_0xc76d('0x36'))){_0x9ab96c[_0xc76d('0x1d')]=qs['limit'](_0x3d4076[_0xc76d('0x2e')][_0xc76d('0x1d')]);_0x9ab96c[_0xc76d('0x1c')]=qs[_0xc76d('0x1c')](_0x3d4076[_0xc76d('0x2e')][_0xc76d('0x1c')]);}_0x9ab96c['order']=qs['sort'](_0x3d4076[_0xc76d('0x2e')]['sort']);_0x9ab96c[_0xc76d('0x37')]=qs[_0xc76d('0x30')](_[_0xc76d('0x38')](_0x3d4076[_0xc76d('0x2e')],_0x2cf501['filters']),_0x283e16);if(_0x3d4076['query'][_0xc76d('0x39')]){_0x9ab96c[_0xc76d('0x37')]=_[_0xc76d('0x3a')](_0x9ab96c[_0xc76d('0x37')],{'$or':_[_0xc76d('0x3b')](_0x283e16,function(_0x58c724){if(_0x58c724[_0xc76d('0x3c')]!==_0xc76d('0x3d')){var _0x321989={};_0x321989[_0x58c724[_0xc76d('0x2a')]]={'$like':'%'+_0x3d4076[_0xc76d('0x2e')][_0xc76d('0x39')]+'%'};return _0x321989;}})});}_0x9ab96c=_[_0xc76d('0x3a')]({},_0x9ab96c,_0x3d4076[_0xc76d('0x3e')]);var _0x305f7d={'where':_0x9ab96c[_0xc76d('0x37')]};return db['VoiceMail']['count'](_0x305f7d)[_0xc76d('0x24')](function(_0x2a0759){_0x4feeda[_0xc76d('0x1b')]=_0x2a0759;if(_0x3d4076[_0xc76d('0x2e')]['includeAll']){_0x9ab96c['include']=[{'all':!![]}];}return db[_0xc76d('0x2c')][_0xc76d('0x3f')](_0x9ab96c);})[_0xc76d('0x24')](function(_0x15eb42){_0x4feeda[_0xc76d('0x40')]=_0x15eb42;return _0x4feeda;})[_0xc76d('0x24')](respondWithFilteredResult(_0x1c68f3,_0x9ab96c))[_0xc76d('0x41')](handleError(_0x1c68f3,null));};exports[_0xc76d('0x42')]=function(_0x50e922,_0x7bf0){var _0x95193f={'raw':!![],'where':{'id':_0x50e922[_0xc76d('0x43')]['id']}},_0x1bf8a0={};_0x1bf8a0['model']=_['keys'](db['VoiceMail']['rawAttributes']);_0x1bf8a0['query']=_['keys'](_0x50e922['query']);_0x1bf8a0[_0xc76d('0x30')]=_[_0xc76d('0x44')](_0x1bf8a0[_0xc76d('0x31')],_0x1bf8a0[_0xc76d('0x2e')]);_0x95193f[_0xc76d('0x32')]=_[_0xc76d('0x44')](_0x1bf8a0[_0xc76d('0x31')],qs[_0xc76d('0x33')](_0x50e922['query'][_0xc76d('0x33')]));_0x95193f[_0xc76d('0x32')]=_0x95193f[_0xc76d('0x32')][_0xc76d('0x34')]?_0x95193f[_0xc76d('0x32')]:_0x1bf8a0[_0xc76d('0x31')];if(_0x50e922[_0xc76d('0x2e')][_0xc76d('0x45')]){_0x95193f[_0xc76d('0x46')]=[{'all':!![]}];}_0x95193f=_['merge']({},_0x95193f,_0x50e922['options']);return db[_0xc76d('0x2c')][_0xc76d('0x47')](_0x95193f)[_0xc76d('0x24')](handleEntityNotFound(_0x7bf0,null))[_0xc76d('0x24')](respondWithResult(_0x7bf0,null))[_0xc76d('0x41')](handleError(_0x7bf0,null));};exports['create']=function(_0x25fc9d,_0x1ede13){return db['VoiceMail']['create'](_0x25fc9d[_0xc76d('0x48')],{})[_0xc76d('0x24')](function(_0x48cad0){var _0xe44a25=_0x25fc9d[_0xc76d('0x49')][_0xc76d('0x26')]({'plain':!![]});if(!_0xe44a25)throw new Error(_0xc76d('0x4a'));if(_0xe44a25[_0xc76d('0x4b')]===_0xc76d('0x49')){var _0x25a549=_0x48cad0[_0xc76d('0x26')]({'plain':!![]});var _0x4452a8=_0xc76d('0x27');return db['UserProfileSection'][_0xc76d('0x47')]({'where':{'name':_0x4452a8,'userProfileId':_0xe44a25[_0xc76d('0x4c')]},'raw':!![]})[_0xc76d('0x24')](function(_0x55e3af){if(_0x55e3af&&_0x55e3af[_0xc76d('0x4d')]===0x0){return db[_0xc76d('0x28')]['create']({'name':_0x25a549[_0xc76d('0x2a')],'resourceId':_0x25a549['id'],'type':_0x55e3af['name'],'sectionId':_0x55e3af['id']},{})[_0xc76d('0x24')](function(){return _0x48cad0;});}else{return _0x48cad0;}})[_0xc76d('0x41')](function(_0x316978){logger[_0xc76d('0x29')](_0xc76d('0x4e'),_0x316978);throw _0x316978;});}return _0x48cad0;})['then'](respondWithResult(_0x1ede13,0xc9))['catch'](handleError(_0x1ede13,null));};exports['update']=function(_0x320483,_0x746759){if(_0x320483[_0xc76d('0x48')]['id']){delete _0x320483[_0xc76d('0x48')]['id'];}return db[_0xc76d('0x2c')][_0xc76d('0x47')]({'where':{'id':_0x320483['params']['id']}})[_0xc76d('0x24')](handleEntityNotFound(_0x746759,null))[_0xc76d('0x24')](saveUpdates(_0x320483[_0xc76d('0x48')],null))[_0xc76d('0x24')](respondWithResult(_0x746759,null))[_0xc76d('0x41')](handleError(_0x746759,null));};exports['destroy']=function(_0x275dfd,_0x463cbe){return db[_0xc76d('0x2c')][_0xc76d('0x47')]({'where':{'id':_0x275dfd[_0xc76d('0x43')]['id']}})[_0xc76d('0x24')](handleEntityNotFound(_0x463cbe,null))['then'](removeEntity(_0x463cbe,null))[_0xc76d('0x41')](handleError(_0x463cbe,null));};exports[_0xc76d('0x4f')]=function(_0x49105d,_0x5f3973,_0x1e9461){return db['VoiceMail'][_0xc76d('0x50')]({'where':{'id':_0x49105d[_0xc76d('0x43')]['id']}})[_0xc76d('0x24')](handleEntityNotFound(_0x5f3973,null))[_0xc76d('0x24')](function(_0x254128){var _0x4746a5;var _0x106c85={},_0x1db7bc={};_0x1db7bc[_0xc76d('0x31')]=_[_0xc76d('0x2f')](db[_0xc76d('0x51')][_0xc76d('0x52')]);_0x1db7bc[_0xc76d('0x2e')]=_[_0xc76d('0x2f')](_0x49105d['query']);_0x1db7bc[_0xc76d('0x30')]=_[_0xc76d('0x44')](_0x1db7bc[_0xc76d('0x31')],_0x1db7bc[_0xc76d('0x2e')]);_0x106c85[_0xc76d('0x32')]=_['intersection'](_0x1db7bc[_0xc76d('0x31')],qs[_0xc76d('0x33')](_0x49105d['query']['fields']));_0x106c85['attributes']=_0x106c85[_0xc76d('0x32')][_0xc76d('0x34')]?_0x106c85[_0xc76d('0x32')]:_0x1db7bc[_0xc76d('0x31')];if(!_0x49105d[_0xc76d('0x2e')][_0xc76d('0x35')](_0xc76d('0x36'))){_0x106c85[_0xc76d('0x1d')]=qs['limit'](_0x49105d[_0xc76d('0x2e')]['limit']);_0x106c85['offset']=qs[_0xc76d('0x1c')](_0x49105d[_0xc76d('0x2e')][_0xc76d('0x1c')]);}_0x106c85['order']=qs[_0xc76d('0x53')](_0x49105d['query']['sort']);_0x106c85['where']=qs[_0xc76d('0x30')](_[_0xc76d('0x38')](_0x49105d['query'],_0x1db7bc[_0xc76d('0x30')]));if(_0x49105d[_0xc76d('0x2e')][_0xc76d('0x39')]){_0x106c85[_0xc76d('0x37')]=_[_0xc76d('0x3a')](_0x106c85[_0xc76d('0x37')],{'$or':_[_0xc76d('0x3b')](_0x106c85['attributes'],function(_0x5035fd){var _0x4c523f={};_0x4c523f[_0x5035fd]={'$like':'%'+_0x49105d[_0xc76d('0x2e')][_0xc76d('0x39')]+'%'};return _0x4c523f;})});}_0x106c85[_0xc76d('0x37')]=_[_0xc76d('0x3a')](_0x106c85[_0xc76d('0x37')],{'mailboxuser':_0x254128['mailbox']});_0x106c85=_[_0xc76d('0x3a')]({},_0x106c85,_0x49105d[_0xc76d('0x3e')]);return db[_0xc76d('0x51')][_0xc76d('0x54')](_0x106c85)[_0xc76d('0x24')](respondWithFilteredResult(_0x5f3973,_0x106c85));})[_0xc76d('0x41')](handleError(_0x5f3973,null));};
\ No newline at end of file
index 6e546bf..9d26e34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5acd=['mailbox','context','util','../../config/logger','api','bluebird','rimraf','../../config/environment','./voiceMail.attributes','exports','define','voice_voicemail','mailbox_context'];(function(_0x473b41,_0x1c320f){var _0x4e521d=function(_0x19a745){while(--_0x19a745){_0x473b41['push'](_0x473b41['shift']());}};_0x4e521d(++_0x1c320f);}(_0x5acd,0x154));var _0xd5ac=function(_0x4d7431,_0x148aa9){_0x4d7431=_0x4d7431-0x0;var _0x38b6e9=_0x5acd[_0x4d7431];return _0x38b6e9;};'use strict';var _=require('lodash');var util=require(_0xd5ac('0x0'));var logger=require(_0xd5ac('0x1'))(_0xd5ac('0x2'));var moment=require('moment');var BPromise=require(_0xd5ac('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xd5ac('0x4'));var config=require(_0xd5ac('0x5'));var attributes=require(_0xd5ac('0x6'));module[_0xd5ac('0x7')]=function(_0x5f2c5c,_0x26d132){return _0x5f2c5c[_0xd5ac('0x8')]('VoiceMail',attributes,{'tableName':_0xd5ac('0x9'),'paranoid':![],'indexes':[{'name':_0xd5ac('0xa'),'fields':[_0xd5ac('0xb'),_0xd5ac('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5abc=['bluebird','rimraf','exports','define','VoiceMail','voice_voicemail','mailbox_context','mailbox','context','lodash','util','../../config/logger','api'];(function(_0x3f8f3a,_0xc552d5){var _0x54006f=function(_0x170757){while(--_0x170757){_0x3f8f3a['push'](_0x3f8f3a['shift']());}};_0x54006f(++_0xc552d5);}(_0x5abc,0x182));var _0xc5ab=function(_0x30840b,_0x55a1f4){_0x30840b=_0x30840b-0x0;var _0x2db2c1=_0x5abc[_0x30840b];return _0x2db2c1;};'use strict';var _=require(_0xc5ab('0x0'));var util=require(_0xc5ab('0x1'));var logger=require(_0xc5ab('0x2'))(_0xc5ab('0x3'));var moment=require('moment');var BPromise=require(_0xc5ab('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xc5ab('0x5'));var config=require('../../config/environment');var attributes=require('./voiceMail.attributes');module[_0xc5ab('0x6')]=function(_0x3c0afe,_0x44d324){return _0x3c0afe[_0xc5ab('0x7')](_0xc5ab('0x8'),attributes,{'tableName':_0xc5ab('0x9'),'paranoid':![],'indexes':[{'name':_0xc5ab('0xa'),'fields':[_0xc5ab('0xb'),_0xc5ab('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 4653cae..ea32720 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd09=['jayson/promise','client','request','then','info','VoiceMail,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x3b29cc,_0x428036){var _0x5ed34b=function(_0x1df4e4){while(--_0x1df4e4){_0x3b29cc['push'](_0x3b29cc['shift']());}};_0x5ed34b(++_0x428036);}(_0xbd09,0x124));var _0x9bd0=function(_0xa1e3e3,_0x29fe0e){_0xa1e3e3=_0xa1e3e3-0x0;var _0xc980e9=_0xbd09[_0xa1e3e3];return _0xc980e9;};'use strict';var _=require(_0x9bd0('0x0'));var util=require(_0x9bd0('0x1'));var moment=require(_0x9bd0('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9bd0('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x9bd0('0x4'));var logger=require(_0x9bd0('0x5'))(_0x9bd0('0x6'));var config=require(_0x9bd0('0x7'));var jayson=require(_0x9bd0('0x8'));var client=jayson[_0x9bd0('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1ecbb7,_0x1aafa2,_0x2bbc8){return new BPromise(function(_0x4df289,_0x3bd762){return client[_0x9bd0('0xa')](_0x1ecbb7,_0x2bbc8)[_0x9bd0('0xb')](function(_0x861a7a){logger[_0x9bd0('0xc')](_0x9bd0('0xd'),_0x1aafa2,_0x9bd0('0xe'));logger[_0x9bd0('0xf')]('VoiceMail,\x20%s,\x20%s,\x20%s',_0x1aafa2,_0x9bd0('0xe'),JSON['stringify'](_0x861a7a));if(_0x861a7a[_0x9bd0('0x10')]){if(_0x861a7a['error'][_0x9bd0('0x11')]===0x1f4){logger[_0x9bd0('0x10')](_0x9bd0('0xd'),_0x1aafa2,_0x861a7a[_0x9bd0('0x10')][_0x9bd0('0x12')]);return _0x3bd762(_0x861a7a[_0x9bd0('0x10')][_0x9bd0('0x12')]);}logger[_0x9bd0('0x10')](_0x9bd0('0xd'),_0x1aafa2,_0x861a7a[_0x9bd0('0x10')][_0x9bd0('0x12')]);return _0x4df289(_0x861a7a[_0x9bd0('0x10')][_0x9bd0('0x12')]);}else{logger[_0x9bd0('0xc')](_0x9bd0('0xd'),_0x1aafa2,_0x9bd0('0xe'));_0x4df289(_0x861a7a[_0x9bd0('0x13')][_0x9bd0('0x12')]);}})['catch'](function(_0x737f7a){logger['error'](_0x9bd0('0xd'),_0x1aafa2,_0x737f7a);_0x3bd762(_0x737f7a);});});}
\ No newline at end of file
+var _0x022f=['jayson/promise','client','http','then','debug','request\x20sent','stringify','error','code','VoiceMail,\x20%s,\x20%s','message','info','result','catch','lodash','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x307af1,_0x351d29){var _0x354eba=function(_0x56b3af){while(--_0x56b3af){_0x307af1['push'](_0x307af1['shift']());}};_0x354eba(++_0x351d29);}(_0x022f,0x15e));var _0xf022=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x022f[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0xf022('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xf022('0x1'));var rs=require(_0xf022('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf022('0x3'))['db'];var utils=require(_0xf022('0x4'));var logger=require(_0xf022('0x5'))(_0xf022('0x6'));var config=require('../../config/environment');var jayson=require(_0xf022('0x7'));var client=jayson[_0xf022('0x8')][_0xf022('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x32e596,_0x22dd21,_0x5f39f3){return new BPromise(function(_0x3b0a09,_0x3245d1){return client['request'](_0x32e596,_0x5f39f3)[_0xf022('0xa')](function(_0x4766d9){logger['info']('VoiceMail,\x20%s,\x20%s',_0x22dd21,'request\x20sent');logger[_0xf022('0xb')]('VoiceMail,\x20%s,\x20%s,\x20%s',_0x22dd21,_0xf022('0xc'),JSON[_0xf022('0xd')](_0x4766d9));if(_0x4766d9[_0xf022('0xe')]){if(_0x4766d9[_0xf022('0xe')][_0xf022('0xf')]===0x1f4){logger['error'](_0xf022('0x10'),_0x22dd21,_0x4766d9[_0xf022('0xe')][_0xf022('0x11')]);return _0x3245d1(_0x4766d9['error'][_0xf022('0x11')]);}logger[_0xf022('0xe')](_0xf022('0x10'),_0x22dd21,_0x4766d9[_0xf022('0xe')][_0xf022('0x11')]);return _0x3b0a09(_0x4766d9['error'][_0xf022('0x11')]);}else{logger[_0xf022('0x12')]('VoiceMail,\x20%s,\x20%s',_0x22dd21,_0xf022('0xc'));_0x3b0a09(_0x4766d9[_0xf022('0x13')][_0xf022('0x11')]);}})[_0xf022('0x14')](function(_0x323c87){logger[_0xf022('0xe')](_0xf022('0x10'),_0x22dd21,_0x323c87);_0x3245d1(_0x323c87);});});}
\ No newline at end of file
index 0cec070..2d021f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca8f=['exports','multer','path','connect-timeout','express','../../components/auth/service','../../config/environment','./voiceMailMessage.controller','get','isAuthenticated','index','/:id','show','/:id/download','download','post','put','update','delete','destroy'];(function(_0x547456,_0x1de17e){var _0xc1fd7b=function(_0x12be35){while(--_0x12be35){_0x547456['push'](_0x547456['shift']());}};_0xc1fd7b(++_0x1de17e);}(_0xca8f,0x155));var _0xfca8=function(_0x3511d3,_0x4107ae){_0x3511d3=_0x3511d3-0x0;var _0x5d6321=_0xca8f[_0x3511d3];return _0x5d6321;};'use strict';var multer=require(_0xfca8('0x0'));var util=require('util');var path=require(_0xfca8('0x1'));var timeout=require(_0xfca8('0x2'));var express=require(_0xfca8('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xfca8('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xfca8('0x5'));var controller=require(_0xfca8('0x6'));router[_0xfca8('0x7')]('/',auth[_0xfca8('0x8')](),controller[_0xfca8('0x9')]);router[_0xfca8('0x7')](_0xfca8('0xa'),auth[_0xfca8('0x8')](),controller[_0xfca8('0xb')]);router['get'](_0xfca8('0xc'),auth[_0xfca8('0x8')](),controller[_0xfca8('0xd')]);router[_0xfca8('0xe')]('/',auth['isAuthenticated'](),controller['create']);router[_0xfca8('0xf')](_0xfca8('0xa'),auth[_0xfca8('0x8')](),controller[_0xfca8('0x10')]);router[_0xfca8('0x11')](_0xfca8('0xa'),auth['isAuthenticated'](),controller[_0xfca8('0x12')]);module[_0xfca8('0x13')]=router;
\ No newline at end of file
+var _0xcd98=['util','path','express','Router','../../components/auth/service','../../config/environment','get','index','/:id','show','/:id/download','isAuthenticated','download','post','create','put','update','delete','multer'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0xcd98,0x1ed));var _0x8cd9=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xcd98[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x8cd9('0x0'));var util=require(_0x8cd9('0x1'));var path=require(_0x8cd9('0x2'));var timeout=require('connect-timeout');var express=require(_0x8cd9('0x3'));var router=express[_0x8cd9('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x8cd9('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x8cd9('0x6'));var controller=require('./voiceMailMessage.controller');router[_0x8cd9('0x7')]('/',auth['isAuthenticated'](),controller[_0x8cd9('0x8')]);router[_0x8cd9('0x7')](_0x8cd9('0x9'),auth['isAuthenticated'](),controller[_0x8cd9('0xa')]);router[_0x8cd9('0x7')](_0x8cd9('0xb'),auth[_0x8cd9('0xc')](),controller[_0x8cd9('0xd')]);router[_0x8cd9('0xe')]('/',auth['isAuthenticated'](),controller[_0x8cd9('0xf')]);router[_0x8cd9('0x10')](_0x8cd9('0x9'),auth[_0x8cd9('0xc')](),controller[_0x8cd9('0x11')]);router[_0x8cd9('0x12')](_0x8cd9('0x9'),auth[_0x8cd9('0xc')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 4f0ecbb..8691068 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa97f=['CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','getDataValue','STRING','long','TIMESTAMP','literal'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa97f,0x67));var _0xfa97=function(_0x4d38cb,_0x28c8b7){_0x4d38cb=_0x4d38cb-0x0;var _0x58c2e9=_0xa97f[_0x4d38cb];return _0x58c2e9;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x41b7dc){return this[_0xfa97('0x0')]('id');}},'msgnum':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0xfa97('0x1')],'defaultValue':''},'context':{'type':Sequelize[_0xfa97('0x1')],'defaultValue':''},'macrocontext':{'type':Sequelize[_0xfa97('0x1')],'defaultValue':''},'callerid':{'type':Sequelize[_0xfa97('0x1')],'defaultValue':''},'origtime':{'type':Sequelize[_0xfa97('0x1')],'defaultValue':''},'duration':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0xfa97('0x1')],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0xfa97('0x1')],'defaultValue':''},'recording':{'type':Sequelize['BLOB'](_0xfa97('0x2')),'defaultValue':null},'flag':{'type':Sequelize['STRING'],'defaultValue':''},'msg_id':{'type':Sequelize['STRING'],'defaultValue':''},'stamp':{'type':_0xfa97('0x3'),'defaultValue':Sequelize[_0xfa97('0x4')](_0xfa97('0x5'))}};
\ No newline at end of file
+var _0x04e0=['literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','exports','VIRTUAL','STRING','BLOB','long','TIMESTAMP'];(function(_0x179194,_0x8fca3){var _0x1b3ac7=function(_0x321450){while(--_0x321450){_0x179194['push'](_0x179194['shift']());}};_0x1b3ac7(++_0x8fca3);}(_0x04e0,0x1b2));var _0x004e=function(_0x299f4c,_0x45f7e3){_0x299f4c=_0x299f4c-0x0;var _0x16ee3a=_0x04e0[_0x299f4c];return _0x16ee3a;};'use strict';var Sequelize=require(_0x004e('0x0'));module[_0x004e('0x1')]={'name':{'type':Sequelize[_0x004e('0x2')],'get':function(_0x3d373f){return this['getDataValue']('id');}},'msgnum':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0x004e('0x3')],'defaultValue':''},'context':{'type':Sequelize[_0x004e('0x3')],'defaultValue':''},'macrocontext':{'type':Sequelize[_0x004e('0x3')],'defaultValue':''},'callerid':{'type':Sequelize['STRING'],'defaultValue':''},'origtime':{'type':Sequelize['STRING'],'defaultValue':''},'duration':{'type':Sequelize[_0x004e('0x3')],'defaultValue':''},'mailboxuser':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0x004e('0x3')],'defaultValue':''},'recording':{'type':Sequelize[_0x004e('0x4')](_0x004e('0x5')),'defaultValue':null},'flag':{'type':Sequelize[_0x004e('0x3')],'defaultValue':''},'msg_id':{'type':Sequelize['STRING'],'defaultValue':''},'stamp':{'type':_0x004e('0x6'),'defaultValue':Sequelize[_0x004e('0x7')](_0x004e('0x8'))}};
\ No newline at end of file
index 0b96c46..1147ef4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0888=['update','then','error','stack','name','send','index','map','VoiceMailMessage','fieldName','type','key','model','differenceBy','query','filters','intersection','fields','attributes','length','order','sort','where','pick','filter','VIRTUAL','merge','options','include','findAll','rows','catch','show','params','rawAttributes','keys','includeAll','find','create','body','destroy','download','msg_id','recording','Sequelize','ValidationError','VoiceMailMessage\x20not\x20found','audio/wav','attachment','Content-Disposition','attachment;\x20filename=\x22','.wav\x22','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save'];(function(_0x5a905e,_0x31aa4a){var _0x4124d6=function(_0x37c28a){while(--_0x37c28a){_0x5a905e['push'](_0x5a905e['shift']());}};_0x4124d6(++_0x31aa4a);}(_0x0888,0x14b));var _0x8088=function(_0x46dbaf,_0x44a1f2){_0x46dbaf=_0x46dbaf-0x0;var _0x3a7022=_0x0888[_0x46dbaf];return _0x3a7022;};'use strict';var emlformat=require(_0x8088('0x0'));var rimraf=require(_0x8088('0x1'));var zipdir=require(_0x8088('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8088('0x3'));var moment=require(_0x8088('0x4'));var BPromise=require(_0x8088('0x5'));var Mustache=require(_0x8088('0x6'));var util=require(_0x8088('0x7'));var path=require('path');var sox=require(_0x8088('0x8'));var csv=require(_0x8088('0x9'));var ejs=require(_0x8088('0xa'));var fs=require('fs');var fs_extra=require(_0x8088('0xb'));var _=require(_0x8088('0xc'));var squel=require(_0x8088('0xd'));var crypto=require(_0x8088('0xe'));var jsforce=require(_0x8088('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x8088('0x9'));var querystring=require('querystring');var Papa=require(_0x8088('0x10'));var Redis=require(_0x8088('0x11'));var authService=require(_0x8088('0x12'));var qs=require(_0x8088('0x13'));var as=require(_0x8088('0x14'));var hardwareService=require(_0x8088('0x15'));var logger=require(_0x8088('0x16'))(_0x8088('0x17'));var utils=require(_0x8088('0x18'));var config=require(_0x8088('0x19'));var licenseUtil=require(_0x8088('0x1a'));var db=require(_0x8088('0x1b'))['db'];function respondWithStatusCode(_0x582154,_0x13f401){_0x13f401=_0x13f401||0xcc;return function(_0x17fdd9){if(_0x17fdd9){return _0x582154[_0x8088('0x1c')](_0x13f401);}return _0x582154['status'](_0x13f401)[_0x8088('0x1d')]();};}function respondWithResult(_0x4587fa,_0x10786f){_0x10786f=_0x10786f||0xc8;return function(_0x2f9092){if(_0x2f9092){return _0x4587fa[_0x8088('0x1e')](_0x10786f)[_0x8088('0x1f')](_0x2f9092);}};}function respondWithFilteredResult(_0x5d490b,_0x1c33aa){return function(_0x45e64d){if(_0x45e64d){var _0x1a011f=typeof _0x1c33aa[_0x8088('0x20')]===_0x8088('0x21')&&typeof _0x1c33aa[_0x8088('0x22')]===_0x8088('0x21');var _0x24dc45=_0x45e64d[_0x8088('0x23')];var _0x52e0a4=_0x1a011f?0x0:_0x1c33aa[_0x8088('0x20')];var _0x5d2f4b=_0x1a011f?_0x45e64d[_0x8088('0x23')]:_0x1c33aa[_0x8088('0x20')]+_0x1c33aa['limit'];var _0x4eedde;if(_0x5d2f4b>=_0x24dc45){_0x5d2f4b=_0x24dc45;_0x4eedde=0xc8;}else{_0x4eedde=0xce;}_0x5d490b[_0x8088('0x1e')](_0x4eedde);return _0x5d490b[_0x8088('0x24')](_0x8088('0x25'),_0x52e0a4+'-'+_0x5d2f4b+'/'+_0x24dc45)[_0x8088('0x1f')](_0x45e64d);}return null;};}function patchUpdates(_0x54a180){return function(_0x509f74){try{jsonpatch[_0x8088('0x26')](_0x509f74,_0x54a180,!![]);}catch(_0x1027c5){return BPromise[_0x8088('0x27')](_0x1027c5);}return _0x509f74[_0x8088('0x28')]();};}function saveUpdates(_0x4b5467,_0x2c6689){return function(_0x23b189){if(_0x23b189){return _0x23b189[_0x8088('0x29')](_0x4b5467)['then'](function(_0x336ba7){return _0x336ba7;});}return null;};}function removeEntity(_0x1c0d83,_0x50225a){return function(_0x3b006e){if(_0x3b006e){return _0x3b006e['destroy']()[_0x8088('0x2a')](function(){_0x1c0d83[_0x8088('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x111b6e,_0x2b4931){return function(_0x3cc89c){if(!_0x3cc89c){_0x111b6e[_0x8088('0x1c')](0x194);}return _0x3cc89c;};}function handleError(_0x291161,_0xcc176b){_0xcc176b=_0xcc176b||0x1f4;return function(_0x312d5e){logger[_0x8088('0x2b')](_0x312d5e[_0x8088('0x2c')]);if(_0x312d5e['name']){delete _0x312d5e[_0x8088('0x2d')];}_0x291161[_0x8088('0x1e')](_0xcc176b)[_0x8088('0x2e')](_0x312d5e);};}exports[_0x8088('0x2f')]=function(_0x502b4f,_0xf2f374){var _0xbbb715={},_0x42149a={},_0x789757={'count':0x0,'rows':[]};var _0x1c72d9=_[_0x8088('0x30')](db[_0x8088('0x31')]['rawAttributes'],function(_0x1d7709){return{'name':_0x1d7709[_0x8088('0x32')],'type':_0x1d7709[_0x8088('0x33')][_0x8088('0x34')]};});_0x42149a[_0x8088('0x35')]=_[_0x8088('0x36')](_[_0x8088('0x30')](_0x1c72d9,_0x8088('0x2d')),[_0x8088('0x2d')]);_0x42149a[_0x8088('0x37')]=_['keys'](_0x502b4f['query']);_0x42149a[_0x8088('0x38')]=_[_0x8088('0x39')](_0x42149a[_0x8088('0x35')],_0x42149a[_0x8088('0x37')]);_0xbbb715['attributes']=_[_0x8088('0x39')](_0x42149a['model'],qs[_0x8088('0x3a')](_0x502b4f[_0x8088('0x37')][_0x8088('0x3a')]));_0xbbb715[_0x8088('0x3b')]=_0xbbb715['attributes'][_0x8088('0x3c')]?_0xbbb715[_0x8088('0x3b')]:_0x42149a[_0x8088('0x35')];if(!_0x502b4f['query']['hasOwnProperty']('nolimit')){_0xbbb715[_0x8088('0x22')]=qs['limit'](_0x502b4f[_0x8088('0x37')][_0x8088('0x22')]);_0xbbb715[_0x8088('0x20')]=qs[_0x8088('0x20')](_0x502b4f['query'][_0x8088('0x20')]);}_0xbbb715[_0x8088('0x3d')]=qs[_0x8088('0x3e')](_0x502b4f['query'][_0x8088('0x3e')]);_0xbbb715[_0x8088('0x3f')]=qs[_0x8088('0x38')](_[_0x8088('0x40')](_0x502b4f[_0x8088('0x37')],_0x42149a['filters']),_0x1c72d9);if(_0x502b4f['query'][_0x8088('0x41')]){_0xbbb715[_0x8088('0x3f')]=_['merge'](_0xbbb715[_0x8088('0x3f')],{'$or':_[_0x8088('0x30')](_0x1c72d9,function(_0x16a233){if(_0x16a233['type']!==_0x8088('0x42')){var _0x1e31fa={};_0x1e31fa[_0x16a233[_0x8088('0x2d')]]={'$like':'%'+_0x502b4f[_0x8088('0x37')]['filter']+'%'};return _0x1e31fa;}})});}_0xbbb715=_[_0x8088('0x43')]({},_0xbbb715,_0x502b4f[_0x8088('0x44')]);var _0x11203e={'where':_0xbbb715[_0x8088('0x3f')]};return db[_0x8088('0x31')][_0x8088('0x23')](_0x11203e)[_0x8088('0x2a')](function(_0x17d4ea){_0x789757['count']=_0x17d4ea;if(_0x502b4f[_0x8088('0x37')]['includeAll']){_0xbbb715[_0x8088('0x45')]=[{'all':!![]}];}return db['VoiceMailMessage'][_0x8088('0x46')](_0xbbb715);})[_0x8088('0x2a')](function(_0x4ecb70){_0x789757[_0x8088('0x47')]=_0x4ecb70;return _0x789757;})[_0x8088('0x2a')](respondWithFilteredResult(_0xf2f374,_0xbbb715))[_0x8088('0x48')](handleError(_0xf2f374,null));};exports[_0x8088('0x49')]=function(_0x592e5a,_0x4d79d5){var _0x27af27={'raw':!![],'where':{'id':_0x592e5a[_0x8088('0x4a')]['id']}},_0x136793={};_0x136793[_0x8088('0x35')]=_['keys'](db['VoiceMailMessage'][_0x8088('0x4b')]);_0x136793['query']=_[_0x8088('0x4c')](_0x592e5a['query']);_0x136793[_0x8088('0x38')]=_[_0x8088('0x39')](_0x136793[_0x8088('0x35')],_0x136793[_0x8088('0x37')]);_0x27af27['attributes']=_[_0x8088('0x39')](_0x136793[_0x8088('0x35')],qs[_0x8088('0x3a')](_0x592e5a[_0x8088('0x37')][_0x8088('0x3a')]));_0x27af27[_0x8088('0x3b')]=_0x27af27['attributes'][_0x8088('0x3c')]?_0x27af27['attributes']:_0x136793['model'];if(_0x592e5a[_0x8088('0x37')][_0x8088('0x4d')]){_0x27af27[_0x8088('0x45')]=[{'all':!![]}];}_0x27af27=_[_0x8088('0x43')]({},_0x27af27,_0x592e5a[_0x8088('0x44')]);return db['VoiceMailMessage'][_0x8088('0x4e')](_0x27af27)[_0x8088('0x2a')](handleEntityNotFound(_0x4d79d5,null))[_0x8088('0x2a')](respondWithResult(_0x4d79d5,null))['catch'](handleError(_0x4d79d5,null));};exports[_0x8088('0x4f')]=function(_0x25e38f,_0x10d439){return db[_0x8088('0x31')][_0x8088('0x4f')](_0x25e38f['body'],{})[_0x8088('0x2a')](respondWithResult(_0x10d439,0xc9))['catch'](handleError(_0x10d439,null));};exports[_0x8088('0x29')]=function(_0x53548b,_0x27b80d){if(_0x53548b[_0x8088('0x50')]['id']){delete _0x53548b['body']['id'];}return db['VoiceMailMessage']['find']({'where':{'id':_0x53548b[_0x8088('0x4a')]['id']}})[_0x8088('0x2a')](handleEntityNotFound(_0x27b80d,null))[_0x8088('0x2a')](saveUpdates(_0x53548b[_0x8088('0x50')],null))[_0x8088('0x2a')](respondWithResult(_0x27b80d,null))[_0x8088('0x48')](handleError(_0x27b80d,null));};exports[_0x8088('0x51')]=function(_0x489dd9,_0x2de124){return db[_0x8088('0x31')]['find']({'where':{'id':_0x489dd9[_0x8088('0x4a')]['id']}})['then'](handleEntityNotFound(_0x2de124,null))[_0x8088('0x2a')](removeEntity(_0x2de124,null))[_0x8088('0x48')](handleError(_0x2de124,null));};exports[_0x8088('0x52')]=function(_0x42356f,_0x3e62ba,_0x28c438){return db['VoiceMailMessage'][_0x8088('0x4e')]({'where':{'id':_0x42356f[_0x8088('0x4a')]['id']},'attributes':['id','recording',_0x8088('0x53')]})[_0x8088('0x2a')](handleEntityNotFound(_0x3e62ba,null))[_0x8088('0x2a')](function(_0x20213a){if(_0x20213a){if(!_0x20213a[_0x8088('0x54')]){throw new db[(_0x8088('0x55'))][(_0x8088('0x56'))](_0x8088('0x57'));}var _0x37e731={'Content-Type':_0x8088('0x58'),'Content-Disposition':_0x8088('0x59')};if(_0x20213a['msg_id']){_0x37e731[_0x8088('0x5a')]=_0x8088('0x5b')+_0x20213a[_0x8088('0x53')]+_0x8088('0x5c');}_0x3e62ba[_0x8088('0x24')](_0x37e731);return _0x3e62ba[_0x8088('0x2e')](new Buffer(_0x20213a[_0x8088('0x54')]));}})['catch'](handleError(_0x3e62ba,null));};
\ No newline at end of file
+var _0x5254=['crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','limit','undefined','count','status','set','Content-Range','apply','save','update','then','error','stack','name','send','index','map','type','model','differenceBy','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','where','pick','VIRTUAL','filter','merge','VoiceMailMessage','findAll','rows','catch','show','params','includeAll','include','options','find','create','body','destroy','download','recording','msg_id','Sequelize','audio/wav','attachment','Content-Disposition','attachment;\x20filename=\x22','.wav\x22','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x5254,0x18d));var _0x4525=function(_0x1f2e5e,_0x36db41){_0x1f2e5e=_0x1f2e5e-0x0;var _0x16fcdb=_0x5254[_0x1f2e5e];return _0x16fcdb;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4525('0x0'));var zipdir=require(_0x4525('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x4525('0x2'));var BPromise=require(_0x4525('0x3'));var Mustache=require(_0x4525('0x4'));var util=require(_0x4525('0x5'));var path=require(_0x4525('0x6'));var sox=require(_0x4525('0x7'));var csv=require(_0x4525('0x8'));var ejs=require(_0x4525('0x9'));var fs=require('fs');var fs_extra=require(_0x4525('0xa'));var _=require(_0x4525('0xb'));var squel=require(_0x4525('0xc'));var crypto=require(_0x4525('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x4525('0x8'));var querystring=require(_0x4525('0xe'));var Papa=require(_0x4525('0xf'));var Redis=require('ioredis');var authService=require(_0x4525('0x10'));var qs=require(_0x4525('0x11'));var as=require(_0x4525('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x4525('0x13'));var utils=require('../../config/utils');var config=require(_0x4525('0x14'));var licenseUtil=require(_0x4525('0x15'));var db=require(_0x4525('0x16'))['db'];function respondWithStatusCode(_0x57dcd4,_0x232408){_0x232408=_0x232408||0xcc;return function(_0x5ab877){if(_0x5ab877){return _0x57dcd4[_0x4525('0x17')](_0x232408);}return _0x57dcd4['status'](_0x232408)[_0x4525('0x18')]();};}function respondWithResult(_0x22a971,_0x2c9937){_0x2c9937=_0x2c9937||0xc8;return function(_0x97a5f3){if(_0x97a5f3){return _0x22a971['status'](_0x2c9937)[_0x4525('0x19')](_0x97a5f3);}};}function respondWithFilteredResult(_0x4e9859,_0x1f565a){return function(_0x3bf696){if(_0x3bf696){var _0x5b9095=typeof _0x1f565a[_0x4525('0x1a')]==='undefined'&&typeof _0x1f565a[_0x4525('0x1b')]===_0x4525('0x1c');var _0x27f03b=_0x3bf696[_0x4525('0x1d')];var _0x34e765=_0x5b9095?0x0:_0x1f565a[_0x4525('0x1a')];var _0x2267d2=_0x5b9095?_0x3bf696[_0x4525('0x1d')]:_0x1f565a[_0x4525('0x1a')]+_0x1f565a[_0x4525('0x1b')];var _0x5b480d;if(_0x2267d2>=_0x27f03b){_0x2267d2=_0x27f03b;_0x5b480d=0xc8;}else{_0x5b480d=0xce;}_0x4e9859[_0x4525('0x1e')](_0x5b480d);return _0x4e9859[_0x4525('0x1f')](_0x4525('0x20'),_0x34e765+'-'+_0x2267d2+'/'+_0x27f03b)[_0x4525('0x19')](_0x3bf696);}return null;};}function patchUpdates(_0x21fda0){return function(_0xe5e24a){try{jsonpatch[_0x4525('0x21')](_0xe5e24a,_0x21fda0,!![]);}catch(_0x2cbbb2){return BPromise['reject'](_0x2cbbb2);}return _0xe5e24a[_0x4525('0x22')]();};}function saveUpdates(_0x1cb9d4,_0x428443){return function(_0x3ec1af){if(_0x3ec1af){return _0x3ec1af[_0x4525('0x23')](_0x1cb9d4)[_0x4525('0x24')](function(_0xce2143){return _0xce2143;});}return null;};}function removeEntity(_0x415378,_0xe81671){return function(_0x20f569){if(_0x20f569){return _0x20f569['destroy']()[_0x4525('0x24')](function(){_0x415378['status'](0xcc)[_0x4525('0x18')]();});}};}function handleEntityNotFound(_0x1d55ad,_0x160e48){return function(_0x3a87a0){if(!_0x3a87a0){_0x1d55ad[_0x4525('0x17')](0x194);}return _0x3a87a0;};}function handleError(_0x46901b,_0x1b235c){_0x1b235c=_0x1b235c||0x1f4;return function(_0x1990dd){logger[_0x4525('0x25')](_0x1990dd[_0x4525('0x26')]);if(_0x1990dd[_0x4525('0x27')]){delete _0x1990dd[_0x4525('0x27')];}_0x46901b['status'](_0x1b235c)[_0x4525('0x28')](_0x1990dd);};}exports[_0x4525('0x29')]=function(_0xcda423,_0x32f6e3){var _0x1940df={},_0x57337f={},_0xe73006={'count':0x0,'rows':[]};var _0x1e800f=_[_0x4525('0x2a')](db['VoiceMailMessage']['rawAttributes'],function(_0x4263b8){return{'name':_0x4263b8['fieldName'],'type':_0x4263b8[_0x4525('0x2b')]['key']};});_0x57337f[_0x4525('0x2c')]=_[_0x4525('0x2d')](_[_0x4525('0x2a')](_0x1e800f,_0x4525('0x27')),[_0x4525('0x27')]);_0x57337f[_0x4525('0x2e')]=_[_0x4525('0x2f')](_0xcda423[_0x4525('0x2e')]);_0x57337f[_0x4525('0x30')]=_[_0x4525('0x31')](_0x57337f[_0x4525('0x2c')],_0x57337f[_0x4525('0x2e')]);_0x1940df[_0x4525('0x32')]=_[_0x4525('0x31')](_0x57337f[_0x4525('0x2c')],qs['fields'](_0xcda423['query'][_0x4525('0x33')]));_0x1940df[_0x4525('0x32')]=_0x1940df[_0x4525('0x32')][_0x4525('0x34')]?_0x1940df['attributes']:_0x57337f[_0x4525('0x2c')];if(!_0xcda423[_0x4525('0x2e')][_0x4525('0x35')]('nolimit')){_0x1940df[_0x4525('0x1b')]=qs[_0x4525('0x1b')](_0xcda423[_0x4525('0x2e')][_0x4525('0x1b')]);_0x1940df[_0x4525('0x1a')]=qs[_0x4525('0x1a')](_0xcda423['query']['offset']);}_0x1940df[_0x4525('0x36')]=qs['sort'](_0xcda423[_0x4525('0x2e')]['sort']);_0x1940df[_0x4525('0x37')]=qs[_0x4525('0x30')](_[_0x4525('0x38')](_0xcda423[_0x4525('0x2e')],_0x57337f['filters']),_0x1e800f);if(_0xcda423[_0x4525('0x2e')]['filter']){_0x1940df[_0x4525('0x37')]=_['merge'](_0x1940df[_0x4525('0x37')],{'$or':_['map'](_0x1e800f,function(_0x12cfe6){if(_0x12cfe6['type']!==_0x4525('0x39')){var _0x48d01a={};_0x48d01a[_0x12cfe6['name']]={'$like':'%'+_0xcda423[_0x4525('0x2e')][_0x4525('0x3a')]+'%'};return _0x48d01a;}})});}_0x1940df=_[_0x4525('0x3b')]({},_0x1940df,_0xcda423['options']);var _0x1d1e33={'where':_0x1940df['where']};return db[_0x4525('0x3c')][_0x4525('0x1d')](_0x1d1e33)[_0x4525('0x24')](function(_0x51b80d){_0xe73006[_0x4525('0x1d')]=_0x51b80d;if(_0xcda423['query']['includeAll']){_0x1940df['include']=[{'all':!![]}];}return db['VoiceMailMessage'][_0x4525('0x3d')](_0x1940df);})[_0x4525('0x24')](function(_0x262750){_0xe73006[_0x4525('0x3e')]=_0x262750;return _0xe73006;})[_0x4525('0x24')](respondWithFilteredResult(_0x32f6e3,_0x1940df))[_0x4525('0x3f')](handleError(_0x32f6e3,null));};exports[_0x4525('0x40')]=function(_0xeba5f9,_0xd92050){var _0x598643={'raw':!![],'where':{'id':_0xeba5f9[_0x4525('0x41')]['id']}},_0x1b51e7={};_0x1b51e7[_0x4525('0x2c')]=_['keys'](db[_0x4525('0x3c')]['rawAttributes']);_0x1b51e7['query']=_[_0x4525('0x2f')](_0xeba5f9['query']);_0x1b51e7['filters']=_[_0x4525('0x31')](_0x1b51e7[_0x4525('0x2c')],_0x1b51e7[_0x4525('0x2e')]);_0x598643[_0x4525('0x32')]=_[_0x4525('0x31')](_0x1b51e7[_0x4525('0x2c')],qs['fields'](_0xeba5f9['query'][_0x4525('0x33')]));_0x598643['attributes']=_0x598643[_0x4525('0x32')][_0x4525('0x34')]?_0x598643['attributes']:_0x1b51e7[_0x4525('0x2c')];if(_0xeba5f9['query'][_0x4525('0x42')]){_0x598643[_0x4525('0x43')]=[{'all':!![]}];}_0x598643=_[_0x4525('0x3b')]({},_0x598643,_0xeba5f9[_0x4525('0x44')]);return db['VoiceMailMessage'][_0x4525('0x45')](_0x598643)['then'](handleEntityNotFound(_0xd92050,null))['then'](respondWithResult(_0xd92050,null))[_0x4525('0x3f')](handleError(_0xd92050,null));};exports[_0x4525('0x46')]=function(_0x3f776e,_0x32dcbf){return db[_0x4525('0x3c')][_0x4525('0x46')](_0x3f776e[_0x4525('0x47')],{})[_0x4525('0x24')](respondWithResult(_0x32dcbf,0xc9))[_0x4525('0x3f')](handleError(_0x32dcbf,null));};exports[_0x4525('0x23')]=function(_0x2a6f1b,_0x16529f){if(_0x2a6f1b[_0x4525('0x47')]['id']){delete _0x2a6f1b[_0x4525('0x47')]['id'];}return db['VoiceMailMessage'][_0x4525('0x45')]({'where':{'id':_0x2a6f1b[_0x4525('0x41')]['id']}})['then'](handleEntityNotFound(_0x16529f,null))[_0x4525('0x24')](saveUpdates(_0x2a6f1b['body'],null))[_0x4525('0x24')](respondWithResult(_0x16529f,null))[_0x4525('0x3f')](handleError(_0x16529f,null));};exports[_0x4525('0x48')]=function(_0x2ff035,_0x1c04f3){return db[_0x4525('0x3c')][_0x4525('0x45')]({'where':{'id':_0x2ff035['params']['id']}})[_0x4525('0x24')](handleEntityNotFound(_0x1c04f3,null))[_0x4525('0x24')](removeEntity(_0x1c04f3,null))['catch'](handleError(_0x1c04f3,null));};exports[_0x4525('0x49')]=function(_0xda1454,_0x1bd991,_0x2b4fdd){return db[_0x4525('0x3c')][_0x4525('0x45')]({'where':{'id':_0xda1454[_0x4525('0x41')]['id']},'attributes':['id',_0x4525('0x4a'),_0x4525('0x4b')]})[_0x4525('0x24')](handleEntityNotFound(_0x1bd991,null))[_0x4525('0x24')](function(_0x348567){if(_0x348567){if(!_0x348567[_0x4525('0x4a')]){throw new db[(_0x4525('0x4c'))]['ValidationError']('VoiceMailMessage\x20not\x20found');}var _0x181674={'Content-Type':_0x4525('0x4d'),'Content-Disposition':_0x4525('0x4e')};if(_0x348567[_0x4525('0x4b')]){_0x181674[_0x4525('0x4f')]=_0x4525('0x50')+_0x348567[_0x4525('0x4b')]+_0x4525('0x51');}_0x1bd991['set'](_0x181674);return _0x1bd991['send'](new Buffer(_0x348567['recording']));}})[_0x4525('0x3f')](handleError(_0x1bd991,null));};
\ No newline at end of file
index 68f2970..8d540ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabfc=['api','moment','bluebird','path','./voiceMailMessage.attributes','exports','define','voice_voicemail_messages','dir','util','../../config/logger'];(function(_0x403a34,_0x3c3010){var _0x2736d7=function(_0x3f640d){while(--_0x3f640d){_0x403a34['push'](_0x403a34['shift']());}};_0x2736d7(++_0x3c3010);}(_0xabfc,0x11c));var _0xcabf=function(_0x3b0731,_0xcf9925){_0x3b0731=_0x3b0731-0x0;var _0x4204d7=_0xabfc[_0x3b0731];return _0x4204d7;};'use strict';var _=require('lodash');var util=require(_0xcabf('0x0'));var logger=require(_0xcabf('0x1'))(_0xcabf('0x2'));var moment=require(_0xcabf('0x3'));var BPromise=require(_0xcabf('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xcabf('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xcabf('0x6'));module[_0xcabf('0x7')]=function(_0x2b2cac,_0x37b74a){return _0x2b2cac[_0xcabf('0x8')]('VoiceMailMessage',attributes,{'tableName':_0xcabf('0x9'),'paranoid':![],'indexes':[{'name':'dir','fields':[_0xcabf('0xa')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x72ec=['api','moment','request-promise','path','../../config/environment','exports','define','VoiceMailMessage','dir','lodash','util','../../config/logger'];(function(_0x57a402,_0x40596b){var _0x753a36=function(_0x13b76b){while(--_0x13b76b){_0x57a402['push'](_0x57a402['shift']());}};_0x753a36(++_0x40596b);}(_0x72ec,0xd5));var _0xc72e=function(_0x5b7e20,_0x17cfec){_0x5b7e20=_0x5b7e20-0x0;var _0x57eddf=_0x72ec[_0x5b7e20];return _0x57eddf;};'use strict';var _=require(_0xc72e('0x0'));var util=require(_0xc72e('0x1'));var logger=require(_0xc72e('0x2'))(_0xc72e('0x3'));var moment=require(_0xc72e('0x4'));var BPromise=require('bluebird');var rp=require(_0xc72e('0x5'));var fs=require('fs');var path=require(_0xc72e('0x6'));var rimraf=require('rimraf');var config=require(_0xc72e('0x7'));var attributes=require('./voiceMailMessage.attributes');module[_0xc72e('0x8')]=function(_0x257eb8,_0x223720){return _0x257eb8[_0xc72e('0x9')](_0xc72e('0xa'),attributes,{'tableName':'voice_voicemail_messages','paranoid':![],'indexes':[{'name':'dir','fields':[_0xc72e('0xb')]}],'timestamps':![]});};
\ No newline at end of file
index 57fa5ad..1959bc1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe778=['lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','request\x20sent','debug','VoiceMailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','VoiceMailMessage,\x20%s,\x20%s','catch'];(function(_0x15d173,_0x932049){var _0x4ef635=function(_0x5ea3da){while(--_0x5ea3da){_0x15d173['push'](_0x15d173['shift']());}};_0x4ef635(++_0x932049);}(_0xe778,0x1cc));var _0x8e77=function(_0xef92ad,_0x50851c){_0xef92ad=_0xef92ad-0x0;var _0x1e20d8=_0xe778[_0xef92ad];return _0x1e20d8;};'use strict';var _=require(_0x8e77('0x0'));var util=require(_0x8e77('0x1'));var moment=require(_0x8e77('0x2'));var BPromise=require('bluebird');var rs=require(_0x8e77('0x3'));var fs=require('fs');var Redis=require(_0x8e77('0x4'));var db=require(_0x8e77('0x5'))['db'];var utils=require(_0x8e77('0x6'));var logger=require(_0x8e77('0x7'))(_0x8e77('0x8'));var config=require(_0x8e77('0x9'));var jayson=require(_0x8e77('0xa'));var client=jayson[_0x8e77('0xb')][_0x8e77('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x328451,_0x58b669,_0x9246b0){return new BPromise(function(_0x113db4,_0x55fe9c){return client['request'](_0x328451,_0x9246b0)[_0x8e77('0xd')](function(_0x3a8a76){logger['info']('VoiceMailMessage,\x20%s,\x20%s',_0x58b669,_0x8e77('0xe'));logger[_0x8e77('0xf')](_0x8e77('0x10'),_0x58b669,_0x8e77('0xe'),JSON[_0x8e77('0x11')](_0x3a8a76));if(_0x3a8a76[_0x8e77('0x12')]){if(_0x3a8a76[_0x8e77('0x12')][_0x8e77('0x13')]===0x1f4){logger['error']('VoiceMailMessage,\x20%s,\x20%s',_0x58b669,_0x3a8a76['error'][_0x8e77('0x14')]);return _0x55fe9c(_0x3a8a76['error']['message']);}logger[_0x8e77('0x12')](_0x8e77('0x15'),_0x58b669,_0x3a8a76[_0x8e77('0x12')]['message']);return _0x113db4(_0x3a8a76['error'][_0x8e77('0x14')]);}else{logger['info'](_0x8e77('0x15'),_0x58b669,_0x8e77('0xe'));_0x113db4(_0x3a8a76['result'][_0x8e77('0x14')]);}})[_0x8e77('0x16')](function(_0x3151d3){logger['error'](_0x8e77('0x15'),_0x58b669,_0x3151d3);_0x55fe9c(_0x3151d3);});});}
\ No newline at end of file
+var _0x4149=['request\x20sent','debug','VoiceMailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','info','VoiceMailMessage,\x20%s,\x20%s'];(function(_0x253935,_0x43d337){var _0x4680b6=function(_0x43e53b){while(--_0x43e53b){_0x253935['push'](_0x253935['shift']());}};_0x4680b6(++_0x43d337);}(_0x4149,0x184));var _0x9414=function(_0x1c3353,_0x3e9185){_0x1c3353=_0x1c3353-0x0;var _0x33ad22=_0x4149[_0x1c3353];return _0x33ad22;};'use strict';var _=require(_0x9414('0x0'));var util=require('util');var moment=require(_0x9414('0x1'));var BPromise=require('bluebird');var rs=require(_0x9414('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9414('0x3'))['db'];var utils=require(_0x9414('0x4'));var logger=require(_0x9414('0x5'))('rpc');var config=require(_0x9414('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x9414('0x7')][_0x9414('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2f6498,_0x368d60,_0x30744a){return new BPromise(function(_0x4b26cc,_0x3c3204){return client['request'](_0x2f6498,_0x30744a)['then'](function(_0x5d7e96){logger[_0x9414('0x9')](_0x9414('0xa'),_0x368d60,_0x9414('0xb'));logger[_0x9414('0xc')](_0x9414('0xd'),_0x368d60,'request\x20sent',JSON[_0x9414('0xe')](_0x5d7e96));if(_0x5d7e96[_0x9414('0xf')]){if(_0x5d7e96['error'][_0x9414('0x10')]===0x1f4){logger[_0x9414('0xf')](_0x9414('0xa'),_0x368d60,_0x5d7e96['error']['message']);return _0x3c3204(_0x5d7e96['error']['message']);}logger[_0x9414('0xf')](_0x9414('0xa'),_0x368d60,_0x5d7e96[_0x9414('0xf')][_0x9414('0x11')]);return _0x4b26cc(_0x5d7e96['error']['message']);}else{logger[_0x9414('0x9')](_0x9414('0xa'),_0x368d60,_0x9414('0xb'));_0x4b26cc(_0x5d7e96[_0x9414('0x12')][_0x9414('0x11')]);}})['catch'](function(_0x45dc1d){logger[_0x9414('0xf')]('VoiceMailMessage,\x20%s,\x20%s',_0x368d60,_0x45dc1d);_0x3c3204(_0x45dc1d);});});}
\ No newline at end of file
index 9838961..b5e2cdf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5bb9=['express','fs-extra','../../config/environment','./voiceMusicOnHold.controller','get','isAuthenticated','index','/:id','/:id/sounds','post','addSound','update','delete','/:id/sounds/:id2','removeSound','exports','multer','path','connect-timeout'];(function(_0x525b2f,_0x54ef4e){var _0x234cec=function(_0x29f29a){while(--_0x29f29a){_0x525b2f['push'](_0x525b2f['shift']());}};_0x234cec(++_0x54ef4e);}(_0x5bb9,0x95));var _0x95bb=function(_0x4c23a3,_0x52e5f8){_0x4c23a3=_0x4c23a3-0x0;var _0x4113fa=_0x5bb9[_0x4c23a3];return _0x4113fa;};'use strict';var multer=require(_0x95bb('0x0'));var util=require('util');var path=require(_0x95bb('0x1'));var timeout=require(_0x95bb('0x2'));var express=require(_0x95bb('0x3'));var router=express['Router']();var fs_extra=require(_0x95bb('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x95bb('0x5'));var controller=require(_0x95bb('0x6'));router[_0x95bb('0x7')]('/',auth[_0x95bb('0x8')](),controller[_0x95bb('0x9')]);router[_0x95bb('0x7')](_0x95bb('0xa'),auth[_0x95bb('0x8')](),controller['show']);router[_0x95bb('0x7')](_0x95bb('0xb'),auth[_0x95bb('0x8')](),controller['getSounds']);router[_0x95bb('0xc')]('/',auth[_0x95bb('0x8')](),controller['create']);router[_0x95bb('0xc')]('/:id/sounds',auth[_0x95bb('0x8')](),controller[_0x95bb('0xd')]);router['put'](_0x95bb('0xa'),auth['isAuthenticated'](),controller[_0x95bb('0xe')]);router[_0x95bb('0xf')](_0x95bb('0xa'),auth[_0x95bb('0x8')](),controller['destroy']);router[_0x95bb('0xf')](_0x95bb('0x10'),auth[_0x95bb('0x8')](),controller[_0x95bb('0x11')]);module[_0x95bb('0x12')]=router;
\ No newline at end of file
+var _0xadef=['get','isAuthenticated','index','/:id/sounds','create','/:id','destroy','/:id/sounds/:id2','removeSound','multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','./voiceMusicOnHold.controller'];(function(_0x10d75d,_0x137376){var _0x4bf8a1=function(_0x590c50){while(--_0x590c50){_0x10d75d['push'](_0x10d75d['shift']());}};_0x4bf8a1(++_0x137376);}(_0xadef,0x16e));var _0xfade=function(_0x5b5347,_0x3c9cbd){_0x5b5347=_0x5b5347-0x0;var _0x2a6698=_0xadef[_0x5b5347];return _0x2a6698;};'use strict';var multer=require(_0xfade('0x0'));var util=require(_0xfade('0x1'));var path=require(_0xfade('0x2'));var timeout=require(_0xfade('0x3'));var express=require('express');var router=express[_0xfade('0x4')]();var fs_extra=require(_0xfade('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xfade('0x6'));var config=require('../../config/environment');var controller=require(_0xfade('0x7'));router[_0xfade('0x8')]('/',auth[_0xfade('0x9')](),controller[_0xfade('0xa')]);router['get']('/:id',auth[_0xfade('0x9')](),controller['show']);router[_0xfade('0x8')](_0xfade('0xb'),auth[_0xfade('0x9')](),controller['getSounds']);router['post']('/',auth[_0xfade('0x9')](),controller[_0xfade('0xc')]);router['post'](_0xfade('0xb'),auth[_0xfade('0x9')](),controller['addSound']);router['put'](_0xfade('0xd'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xfade('0xd'),auth[_0xfade('0x9')](),controller[_0xfade('0xe')]);router['delete'](_0xfade('0xf'),auth[_0xfade('0x9')](),controller[_0xfade('0x10')]);module['exports']=router;
\ No newline at end of file
index 0c31948..b410990 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80d8=['ENUM','files','quietmp3nb','alpha','TIMESTAMP','BOOLEAN','exports','STRING'];(function(_0x1da6a2,_0x253fac){var _0x2eccd0=function(_0x296d55){while(--_0x296d55){_0x1da6a2['push'](_0x1da6a2['shift']());}};_0x2eccd0(++_0x253fac);}(_0x80d8,0x136));var _0x880d=function(_0x13486c,_0x139348){_0x13486c=_0x13486c-0x0;var _0x135738=_0x80d8[_0x13486c];return _0x135738;};'use strict';var Sequelize=require('sequelize');module[_0x880d('0x0')]={'name':{'type':Sequelize[_0x880d('0x1')],'allowNull':![],'unique':'name'},'mode':{'type':Sequelize[_0x880d('0x2')]('custom',_0x880d('0x3'),'mp3nb',_0x880d('0x4'),'quietmp3','mp3'),'allowNull':!![],'defaultValue':_0x880d('0x3')},'directory':{'type':Sequelize['STRING'],'allowNull':!![]},'application':{'type':Sequelize[_0x880d('0x1')],'allowNull':!![]},'digit':{'type':Sequelize[_0x880d('0x1')],'allowNull':!![]},'sort':{'type':Sequelize[_0x880d('0x1')],'allowNull':!![],'defaultValue':_0x880d('0x5')},'format':{'type':Sequelize[_0x880d('0x1')],'allowNull':!![]},'stamp':{'type':_0x880d('0x6')},'defaultEntry':{'type':Sequelize[_0x880d('0x7')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xb848=['files','mp3nb','quietmp3nb','quietmp3','mp3','alpha','TIMESTAMP','sequelize','STRING','name','ENUM','custom'];(function(_0x5220f5,_0x2a499a){var _0x29997b=function(_0x3bcc98){while(--_0x3bcc98){_0x5220f5['push'](_0x5220f5['shift']());}};_0x29997b(++_0x2a499a);}(_0xb848,0x127));var _0x8b84=function(_0x3c2507,_0x457a90){_0x3c2507=_0x3c2507-0x0;var _0x316d6c=_0xb848[_0x3c2507];return _0x316d6c;};'use strict';var Sequelize=require(_0x8b84('0x0'));module['exports']={'name':{'type':Sequelize[_0x8b84('0x1')],'allowNull':![],'unique':_0x8b84('0x2')},'mode':{'type':Sequelize[_0x8b84('0x3')](_0x8b84('0x4'),_0x8b84('0x5'),_0x8b84('0x6'),_0x8b84('0x7'),_0x8b84('0x8'),_0x8b84('0x9')),'allowNull':!![],'defaultValue':_0x8b84('0x5')},'directory':{'type':Sequelize[_0x8b84('0x1')],'allowNull':!![]},'application':{'type':Sequelize['STRING'],'allowNull':!![]},'digit':{'type':Sequelize[_0x8b84('0x1')],'allowNull':!![]},'sort':{'type':Sequelize[_0x8b84('0x1')],'allowNull':!![],'defaultValue':_0x8b84('0xa')},'format':{'type':Sequelize['STRING'],'allowNull':!![]},'stamp':{'type':_0x8b84('0xb')},'defaultEntry':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0}};
\ No newline at end of file
index 664d3ff..46a66ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03af=['filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','findAll','rows','catch','show','params','includeAll','include','find','body','create','sequelize','transaction','files','directory','join','root','server/files/moh','mode','mkdirSync','user','get','UserProfileSection','userProfileId','autoAssociation','readdirSync','unlinkSync','rmdirSync','Sequelize','message','addSound','findOne','save_name','converted_format','createdAt','format','basename','extname','symlinkSync','ValidationError','removeSound','id2','Sound','%s.%s','getSounds','eml-format','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','update','then','destroy','UserProfileResource','error','stack','name','send','index','map','VoiceMusicOnHold','rawAttributes','type','key','model','query','keys'];(function(_0x5ea0fd,_0x3c36e4){var _0x32ebf6=function(_0x4ee91d){while(--_0x4ee91d){_0x5ea0fd['push'](_0x5ea0fd['shift']());}};_0x32ebf6(++_0x3c36e4);}(_0x03af,0x191));var _0xf03a=function(_0x25de51,_0x104ef9){_0x25de51=_0x25de51-0x0;var _0x36b88e=_0x03af[_0x25de51];return _0x36b88e;};'use strict';var emlformat=require(_0xf03a('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xf03a('0x1'));var BPromise=require(_0xf03a('0x2'));var Mustache=require(_0xf03a('0x3'));var util=require(_0xf03a('0x4'));var path=require(_0xf03a('0x5'));var sox=require(_0xf03a('0x6'));var csv=require('to-csv');var ejs=require(_0xf03a('0x7'));var fs=require('fs');var fs_extra=require(_0xf03a('0x8'));var _=require(_0xf03a('0x9'));var squel=require(_0xf03a('0xa'));var crypto=require(_0xf03a('0xb'));var jsforce=require(_0xf03a('0xc'));var deskjs=require(_0xf03a('0xd'));var toCsv=require(_0xf03a('0xe'));var querystring=require(_0xf03a('0xf'));var Papa=require('papaparse');var Redis=require(_0xf03a('0x10'));var authService=require(_0xf03a('0x11'));var qs=require(_0xf03a('0x12'));var as=require(_0xf03a('0x13'));var hardwareService=require(_0xf03a('0x14'));var logger=require(_0xf03a('0x15'))(_0xf03a('0x16'));var utils=require('../../config/utils');var config=require(_0xf03a('0x17'));var licenseUtil=require(_0xf03a('0x18'));var db=require(_0xf03a('0x19'))['db'];function respondWithStatusCode(_0x5f2af7,_0x1bd1f5){_0x1bd1f5=_0x1bd1f5||0xcc;return function(_0x26750a){if(_0x26750a){return _0x5f2af7[_0xf03a('0x1a')](_0x1bd1f5);}return _0x5f2af7[_0xf03a('0x1b')](_0x1bd1f5)[_0xf03a('0x1c')]();};}function respondWithResult(_0x592d90,_0x21fa2c){_0x21fa2c=_0x21fa2c||0xc8;return function(_0x35abcb){if(_0x35abcb){return _0x592d90['status'](_0x21fa2c)[_0xf03a('0x1d')](_0x35abcb);}};}function respondWithFilteredResult(_0xdce09f,_0x3507b7){return function(_0x577a49){if(_0x577a49){var _0x53f978=typeof _0x3507b7['offset']===_0xf03a('0x1e')&&typeof _0x3507b7[_0xf03a('0x1f')]===_0xf03a('0x1e');var _0x779515=_0x577a49[_0xf03a('0x20')];var _0x24cbe4=_0x53f978?0x0:_0x3507b7[_0xf03a('0x21')];var _0x236202=_0x53f978?_0x577a49[_0xf03a('0x20')]:_0x3507b7[_0xf03a('0x21')]+_0x3507b7[_0xf03a('0x1f')];var _0x148900;if(_0x236202>=_0x779515){_0x236202=_0x779515;_0x148900=0xc8;}else{_0x148900=0xce;}_0xdce09f['status'](_0x148900);return _0xdce09f[_0xf03a('0x22')](_0xf03a('0x23'),_0x24cbe4+'-'+_0x236202+'/'+_0x779515)[_0xf03a('0x1d')](_0x577a49);}return null;};}function patchUpdates(_0xec8c35){return function(_0x3f9fef){try{jsonpatch[_0xf03a('0x24')](_0x3f9fef,_0xec8c35,!![]);}catch(_0x6beffb){return BPromise[_0xf03a('0x25')](_0x6beffb);}return _0x3f9fef['save']();};}function saveUpdates(_0x4bbe15,_0x123fef){return function(_0x38dd48){if(_0x38dd48){return _0x38dd48[_0xf03a('0x26')](_0x4bbe15)[_0xf03a('0x27')](function(_0x16c554){return _0x16c554;});}return null;};}function removeEntity(_0x1e94fa,_0x2a105a){return function(_0x59b714){if(_0x59b714){return _0x59b714[_0xf03a('0x28')]()[_0xf03a('0x27')](function(){var _0x4b2c09=_0x59b714['get']({'plain':!![]});var _0x5d8c3a='MusicOnHolds';return db[_0xf03a('0x29')][_0xf03a('0x28')]({'where':{'type':_0x5d8c3a,'resourceId':_0x4b2c09['id']}})[_0xf03a('0x27')](function(){return _0x59b714;});})[_0xf03a('0x27')](function(){_0x1e94fa[_0xf03a('0x1b')](0xcc)[_0xf03a('0x1c')]();});}};}function handleEntityNotFound(_0x4bca2f,_0x3008df){return function(_0x320a84){if(!_0x320a84){_0x4bca2f[_0xf03a('0x1a')](0x194);}return _0x320a84;};}function handleError(_0x5d7459,_0x560e54){_0x560e54=_0x560e54||0x1f4;return function(_0x281036){logger[_0xf03a('0x2a')](_0x281036[_0xf03a('0x2b')]);if(_0x281036[_0xf03a('0x2c')]){delete _0x281036[_0xf03a('0x2c')];}_0x5d7459[_0xf03a('0x1b')](_0x560e54)[_0xf03a('0x2d')](_0x281036);};}exports[_0xf03a('0x2e')]=function(_0x5c90b2,_0x3d2c1e){var _0x2f5f01={},_0x30ffa3={},_0x481a68={'count':0x0,'rows':[]};var _0x5b708f=_[_0xf03a('0x2f')](db[_0xf03a('0x30')][_0xf03a('0x31')],function(_0x4341d9){return{'name':_0x4341d9['fieldName'],'type':_0x4341d9[_0xf03a('0x32')][_0xf03a('0x33')]};});_0x30ffa3[_0xf03a('0x34')]=_['map'](_0x5b708f,_0xf03a('0x2c'));_0x30ffa3[_0xf03a('0x35')]=_[_0xf03a('0x36')](_0x5c90b2['query']);_0x30ffa3[_0xf03a('0x37')]=_[_0xf03a('0x38')](_0x30ffa3[_0xf03a('0x34')],_0x30ffa3[_0xf03a('0x35')]);_0x2f5f01[_0xf03a('0x39')]=_[_0xf03a('0x38')](_0x30ffa3[_0xf03a('0x34')],qs[_0xf03a('0x3a')](_0x5c90b2[_0xf03a('0x35')][_0xf03a('0x3a')]));_0x2f5f01[_0xf03a('0x39')]=_0x2f5f01[_0xf03a('0x39')][_0xf03a('0x3b')]?_0x2f5f01[_0xf03a('0x39')]:_0x30ffa3[_0xf03a('0x34')];if(!_0x5c90b2[_0xf03a('0x35')][_0xf03a('0x3c')](_0xf03a('0x3d'))){_0x2f5f01['limit']=qs[_0xf03a('0x1f')](_0x5c90b2[_0xf03a('0x35')][_0xf03a('0x1f')]);_0x2f5f01[_0xf03a('0x21')]=qs['offset'](_0x5c90b2[_0xf03a('0x35')][_0xf03a('0x21')]);}_0x2f5f01[_0xf03a('0x3e')]=qs['sort'](_0x5c90b2['query']['sort']);delete _0x5c90b2[_0xf03a('0x35')][_0xf03a('0x3f')];_0x2f5f01[_0xf03a('0x40')]=qs[_0xf03a('0x37')](_[_0xf03a('0x41')](_0x5c90b2[_0xf03a('0x35')],_0x30ffa3['filters']),_0x5b708f);if(_0x5c90b2[_0xf03a('0x35')]['filter']){_0x2f5f01['where']=_[_0xf03a('0x42')](_0x2f5f01['where'],{'$or':_[_0xf03a('0x2f')](_0x5b708f,function(_0x4bb9e8){if(_0x4bb9e8[_0xf03a('0x32')]!==_0xf03a('0x43')){var _0x23f4e4={};_0x23f4e4[_0x4bb9e8[_0xf03a('0x2c')]]={'$like':'%'+_0x5c90b2['query'][_0xf03a('0x44')]+'%'};return _0x23f4e4;}})});}_0x2f5f01=_[_0xf03a('0x42')]({},_0x2f5f01,_0x5c90b2[_0xf03a('0x45')]);var _0x4884f1={'where':_0x2f5f01['where']};return db[_0xf03a('0x30')]['count'](_0x4884f1)[_0xf03a('0x27')](function(_0x3b556a){_0x481a68[_0xf03a('0x20')]=_0x3b556a;if(_0x5c90b2[_0xf03a('0x35')]['includeAll']){_0x2f5f01['include']=[{'all':!![]}];}return db[_0xf03a('0x30')][_0xf03a('0x46')](_0x2f5f01);})[_0xf03a('0x27')](function(_0x462ec1){_0x481a68[_0xf03a('0x47')]=_0x462ec1;return _0x481a68;})[_0xf03a('0x27')](respondWithFilteredResult(_0x3d2c1e,_0x2f5f01))[_0xf03a('0x48')](handleError(_0x3d2c1e,null));};exports[_0xf03a('0x49')]=function(_0x2335af,_0x2769c2){var _0x29f147={'raw':![],'where':{'id':_0x2335af[_0xf03a('0x4a')]['id']}},_0xca708f={};_0xca708f[_0xf03a('0x34')]=_[_0xf03a('0x36')](db[_0xf03a('0x30')][_0xf03a('0x31')]);_0xca708f[_0xf03a('0x35')]=_[_0xf03a('0x36')](_0x2335af[_0xf03a('0x35')]);_0xca708f['filters']=_[_0xf03a('0x38')](_0xca708f[_0xf03a('0x34')],_0xca708f['query']);_0x29f147[_0xf03a('0x39')]=_[_0xf03a('0x38')](_0xca708f[_0xf03a('0x34')],qs[_0xf03a('0x3a')](_0x2335af['query']['fields']));_0x29f147[_0xf03a('0x39')]=_0x29f147['attributes']['length']?_0x29f147[_0xf03a('0x39')]:_0xca708f[_0xf03a('0x34')];if(_0x2335af[_0xf03a('0x35')][_0xf03a('0x4b')]){_0x29f147[_0xf03a('0x4c')]=[{'all':!![]}];}_0x29f147=_[_0xf03a('0x42')]({},_0x29f147,_0x2335af[_0xf03a('0x45')]);return db[_0xf03a('0x30')][_0xf03a('0x4d')](_0x29f147)[_0xf03a('0x27')](handleEntityNotFound(_0x2769c2,null))[_0xf03a('0x27')](respondWithResult(_0x2769c2,null))[_0xf03a('0x48')](handleError(_0x2769c2,null));};exports[_0xf03a('0x26')]=function(_0x1d534b,_0x277cd6){if(_0x1d534b[_0xf03a('0x4e')]['id']){delete _0x1d534b[_0xf03a('0x4e')]['id'];}return db[_0xf03a('0x30')]['find']({'where':{'id':_0x1d534b[_0xf03a('0x4a')]['id']}})['then'](handleEntityNotFound(_0x277cd6,null))['then'](saveUpdates(_0x1d534b[_0xf03a('0x4e')],null))[_0xf03a('0x27')](respondWithResult(_0x277cd6,null))[_0xf03a('0x48')](handleError(_0x277cd6,null));};exports[_0xf03a('0x4f')]=function(_0x86a476,_0x3fd424,_0x5b32c6){return db[_0xf03a('0x50')][_0xf03a('0x51')](function(_0x3e8229){if(_0x86a476[_0xf03a('0x4e')]['mode']===_0xf03a('0x52')){_0x86a476[_0xf03a('0x4e')][_0xf03a('0x53')]=path[_0xf03a('0x54')](config[_0xf03a('0x55')],_0xf03a('0x56'),_0x86a476[_0xf03a('0x4e')]['name']);}return db['VoiceMusicOnHold'][_0xf03a('0x4f')](_0x86a476['body'],{'transaction':_0x3e8229})['then'](function(_0x4a11f6){if(_0x86a476[_0xf03a('0x4e')][_0xf03a('0x57')]===_0xf03a('0x52')){fs[_0xf03a('0x58')](_0x4a11f6[_0xf03a('0x53')],parseInt('0777',0x8));}var _0x5ab811=_0x86a476[_0xf03a('0x59')][_0xf03a('0x5a')]({'plain':!![]});if(!_0x5ab811)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5ab811['role']===_0xf03a('0x59')){var _0x46c19b=_0x4a11f6['get']({'plain':!![]});return db[_0xf03a('0x5b')][_0xf03a('0x4d')]({'where':{'name':'MusicOnHolds','userProfileId':_0x5ab811[_0xf03a('0x5c')]},'raw':!![]})[_0xf03a('0x27')](function(_0x59895e){if(_0x59895e&&_0x59895e[_0xf03a('0x5d')]===0x0){return db[_0xf03a('0x29')][_0xf03a('0x4f')]({'name':_0x46c19b[_0xf03a('0x2c')],'resourceId':_0x46c19b['id'],'type':_0x59895e[_0xf03a('0x2c')],'sectionId':_0x59895e['id']},{})[_0xf03a('0x27')](function(){return _0x4a11f6;});}else{return _0x4a11f6;}})['catch'](function(_0x592774){logger[_0xf03a('0x2a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x592774);});}return _0x4a11f6;});})[_0xf03a('0x27')](respondWithResult(_0x3fd424,0xc9))['catch'](handleError(_0x3fd424,null));};exports[_0xf03a('0x28')]=function(_0x40df38,_0x44d795,_0x4aab91){var _0x38d10c;return db[_0xf03a('0x30')][_0xf03a('0x4d')]({'where':{'id':_0x40df38[_0xf03a('0x4a')]['id']}})['then'](function(_0x42d34d){if(_0x42d34d){return db['sequelize'][_0xf03a('0x51')](function(_0x4d4047){return _0x42d34d[_0xf03a('0x28')]({'transaction':_0x4d4047,'raw':!![]})[_0xf03a('0x27')](function(_0x4ce6b2){if(_0x4ce6b2['directory']){fs[_0xf03a('0x5e')](_0x4ce6b2[_0xf03a('0x53')])['forEach'](function(_0x441099){fs[_0xf03a('0x5f')](path['join'](_0x4ce6b2['directory'],_0x441099));});fs[_0xf03a('0x60')](_0x4ce6b2['directory']);}return _0x4ce6b2;});})[_0xf03a('0x48')](function(_0x3595fa){throw new db[(_0xf03a('0x61'))]['ValidationError'](_0x3595fa[_0xf03a('0x62')]);});}})[_0xf03a('0x27')](handleEntityNotFound(_0x44d795,null))[_0xf03a('0x27')](removeEntity(_0x44d795,null))[_0xf03a('0x48')](handleError(_0x44d795,null));};exports[_0xf03a('0x63')]=function(_0x5a9e48,_0xbea1f7,_0x14175f){return db['sequelize'][_0xf03a('0x51')](function(_0x2f9cf6){var _0x443109;return db[_0xf03a('0x30')][_0xf03a('0x4d')]({'where':{'id':_0x5a9e48['params']['id']}})[_0xf03a('0x27')](function(_0x1e2cc3){if(_0x1e2cc3){_0x443109=_0x1e2cc3;return _0x1e2cc3[_0xf03a('0x63')](_0x5a9e48['body']['id'],{'transaction':_0x2f9cf6});}})[_0xf03a('0x27')](function(_0x58f247){if(_0x58f247){return db['Sound'][_0xf03a('0x64')]({'where':{'id':_0x5a9e48[_0xf03a('0x4e')]['id']},'attributes':['id',_0xf03a('0x2c'),_0xf03a('0x65'),_0xf03a('0x66'),_0xf03a('0x67')],'raw':!![]});}})[_0xf03a('0x27')](function(_0x231795){if(_0x231795){var _0x4bb512=path[_0xf03a('0x54')](config[_0xf03a('0x55')],'server/files/sounds/converted',util[_0xf03a('0x68')]('%s.%s',path[_0xf03a('0x69')](_0x231795[_0xf03a('0x65')],path[_0xf03a('0x6a')](_0x231795[_0xf03a('0x65')])),_0x231795[_0xf03a('0x66')]));var _0x416c2c=path[_0xf03a('0x54')](config[_0xf03a('0x55')],_0xf03a('0x56'),_0x443109[_0xf03a('0x2c')],util[_0xf03a('0x68')]('%s.%s',_0x231795[_0xf03a('0x2c')],_0x231795[_0xf03a('0x66')]));fs[_0xf03a('0x6b')](_0x4bb512,_0x416c2c);return _0x231795;}})[_0xf03a('0x48')](function(_0x27d441){throw new db[(_0xf03a('0x61'))][(_0xf03a('0x6c'))](_0x27d441[_0xf03a('0x62')]);});})[_0xf03a('0x27')](handleEntityNotFound(_0xbea1f7,null))[_0xf03a('0x27')](respondWithResult(_0xbea1f7,0xc9))['catch'](handleError(_0xbea1f7,null));};exports[_0xf03a('0x6d')]=function(_0x47ca0d,_0x3601a2,_0x5c55fc){return db[_0xf03a('0x50')][_0xf03a('0x51')](function(_0x57ef80){var _0x11830b;return db[_0xf03a('0x30')][_0xf03a('0x64')]({'where':{'id':_0x47ca0d[_0xf03a('0x4a')]['id']}})[_0xf03a('0x27')](handleEntityNotFound(_0x3601a2,null))['then'](function(_0x517a81){if(_0x517a81){_0x11830b=_0x517a81;return _0x517a81['removeSound'](_0x47ca0d[_0xf03a('0x4a')][_0xf03a('0x6e')]);}})[_0xf03a('0x27')](function(_0x397fc0){if(_0x397fc0){return db[_0xf03a('0x6f')]['findOne']({'where':{'id':_0x47ca0d[_0xf03a('0x4a')][_0xf03a('0x6e')]},'attributes':['id',_0xf03a('0x2c'),_0xf03a('0x65'),'converted_format',_0xf03a('0x67')],'raw':!![]});}})['then'](function(_0x18df8e){if(_0x18df8e){fs[_0xf03a('0x5f')](path[_0xf03a('0x54')](_0x11830b[_0xf03a('0x53')],util[_0xf03a('0x68')](_0xf03a('0x70'),_0x18df8e[_0xf03a('0x2c')],_0x18df8e['converted_format'])));return _0x18df8e;}})['catch'](function(_0x1ad3ee){throw new db[(_0xf03a('0x61'))]['ValidationError'](_0x1ad3ee['message']);});})['then'](handleEntityNotFound(_0x3601a2,null))[_0xf03a('0x27')](respondWithStatusCode(_0x3601a2,0xcc))[_0xf03a('0x48')](handleError(_0x3601a2,null));};exports[_0xf03a('0x71')]=function(_0x4f0a50,_0x2c8a49,_0x143c68){var _0x23fa3a={};var _0x5816d9={};var _0xd3ffc8;var _0x49e948;return db[_0xf03a('0x30')]['findOne']({'where':{'id':_0x4f0a50[_0xf03a('0x4a')]['id']}})[_0xf03a('0x27')](handleEntityNotFound(_0x2c8a49,null))[_0xf03a('0x27')](function(_0x3cd894){if(_0x3cd894){_0xd3ffc8=_0x3cd894;_0x5816d9[_0xf03a('0x34')]=_['keys'](db[_0xf03a('0x6f')]['rawAttributes']);_0x5816d9[_0xf03a('0x35')]=_['keys'](_0x4f0a50[_0xf03a('0x35')]);_0x5816d9[_0xf03a('0x37')]=_[_0xf03a('0x38')](_0x5816d9['model'],_0x5816d9[_0xf03a('0x35')]);_0x23fa3a[_0xf03a('0x39')]=_[_0xf03a('0x38')](_0x5816d9[_0xf03a('0x34')],qs[_0xf03a('0x3a')](_0x4f0a50[_0xf03a('0x35')]['fields']));_0x23fa3a[_0xf03a('0x39')]=_0x23fa3a[_0xf03a('0x39')]['length']?_0x23fa3a['attributes']:_0x5816d9[_0xf03a('0x34')];_0x23fa3a['order']=qs[_0xf03a('0x3f')](_0x4f0a50[_0xf03a('0x35')][_0xf03a('0x3f')]);_0x23fa3a[_0xf03a('0x40')]=qs[_0xf03a('0x37')](_[_0xf03a('0x41')](_0x4f0a50[_0xf03a('0x35')],_0x5816d9['filters']));if(_0x4f0a50[_0xf03a('0x35')][_0xf03a('0x44')]){_0x23fa3a[_0xf03a('0x40')]=_[_0xf03a('0x42')](_0x23fa3a[_0xf03a('0x40')],{'$or':_[_0xf03a('0x2f')](_0x23fa3a[_0xf03a('0x39')],function(_0x4c45cb){var _0x7c75bd={};_0x7c75bd[_0x4c45cb]={'$like':'%'+_0x4f0a50[_0xf03a('0x35')][_0xf03a('0x44')]+'%'};return _0x7c75bd;})});}_0x23fa3a=_[_0xf03a('0x42')]({},_0x23fa3a,_0x4f0a50[_0xf03a('0x45')]);return _0xd3ffc8[_0xf03a('0x71')](_0x23fa3a);}})['then'](function(_0x52d5a9){if(_0x52d5a9){_0x49e948=_0x52d5a9[_0xf03a('0x3b')];if(!_0x4f0a50['query'][_0xf03a('0x3c')](_0xf03a('0x3d'))){_0x23fa3a[_0xf03a('0x1f')]=qs[_0xf03a('0x1f')](_0x4f0a50[_0xf03a('0x35')][_0xf03a('0x1f')]);_0x23fa3a[_0xf03a('0x21')]=qs[_0xf03a('0x21')](_0x4f0a50['query'][_0xf03a('0x21')]);}return _0xd3ffc8[_0xf03a('0x71')](_0x23fa3a);}})[_0xf03a('0x27')](function(_0x285802){if(_0x285802){return _0x285802?{'count':_0x49e948,'rows':_0x285802}:null;}})['then'](respondWithResult(_0x2c8a49,null))[_0xf03a('0x48')](handleError(_0x2c8a49,null));};
\ No newline at end of file
+var _0x14b9=['fields','attributes','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','keys','intersection','length','find','body','create','sequelize','transaction','files','root','mode','mkdirSync','directory','user','get','UserProfileSection','MusicOnHolds','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readdirSync','forEach','join','Sequelize','ValidationError','message','addSound','Sound','findOne','save_name','createdAt','server/files/sounds/converted','format','%s.%s','basename','extname','converted_format','symlinkSync','id2','unlinkSync','getSounds','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','reject','then','destroy','UserProfileResource','error','stack','name','send','index','map','VoiceMusicOnHold','rawAttributes','fieldName','type','key','model','query'];(function(_0x16ddd5,_0x50df63){var _0x286946=function(_0x4b85ed){while(--_0x4b85ed){_0x16ddd5['push'](_0x16ddd5['shift']());}};_0x286946(++_0x50df63);}(_0x14b9,0x185));var _0x914b=function(_0x4f4bd5,_0x1c3f77){_0x4f4bd5=_0x4f4bd5-0x0;var _0x3837a6=_0x14b9[_0x4f4bd5];return _0x3837a6;};'use strict';var emlformat=require(_0x914b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x914b('0x1'));var jsonpatch=require(_0x914b('0x2'));var rp=require(_0x914b('0x3'));var moment=require('moment');var BPromise=require(_0x914b('0x4'));var Mustache=require(_0x914b('0x5'));var util=require('util');var path=require(_0x914b('0x6'));var sox=require(_0x914b('0x7'));var csv=require(_0x914b('0x8'));var ejs=require(_0x914b('0x9'));var fs=require('fs');var fs_extra=require(_0x914b('0xa'));var _=require(_0x914b('0xb'));var squel=require(_0x914b('0xc'));var crypto=require('crypto');var jsforce=require(_0x914b('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x914b('0x8'));var querystring=require(_0x914b('0xe'));var Papa=require(_0x914b('0xf'));var Redis=require('ioredis');var authService=require(_0x914b('0x10'));var qs=require(_0x914b('0x11'));var as=require(_0x914b('0x12'));var hardwareService=require(_0x914b('0x13'));var logger=require(_0x914b('0x14'))(_0x914b('0x15'));var utils=require(_0x914b('0x16'));var config=require(_0x914b('0x17'));var licenseUtil=require(_0x914b('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1a92ee,_0xa91af0){_0xa91af0=_0xa91af0||0xcc;return function(_0x1b840e){if(_0x1b840e){return _0x1a92ee[_0x914b('0x19')](_0xa91af0);}return _0x1a92ee[_0x914b('0x1a')](_0xa91af0)[_0x914b('0x1b')]();};}function respondWithResult(_0x64be8c,_0x54ea4c){_0x54ea4c=_0x54ea4c||0xc8;return function(_0x241b07){if(_0x241b07){return _0x64be8c[_0x914b('0x1a')](_0x54ea4c)['json'](_0x241b07);}};}function respondWithFilteredResult(_0x243251,_0x1de482){return function(_0x2eade4){if(_0x2eade4){var _0x2d71fd=typeof _0x1de482['offset']===_0x914b('0x1c')&&typeof _0x1de482[_0x914b('0x1d')]===_0x914b('0x1c');var _0xe8987e=_0x2eade4[_0x914b('0x1e')];var _0x58be0b=_0x2d71fd?0x0:_0x1de482[_0x914b('0x1f')];var _0x385bd6=_0x2d71fd?_0x2eade4[_0x914b('0x1e')]:_0x1de482['offset']+_0x1de482[_0x914b('0x1d')];var _0xb00d12;if(_0x385bd6>=_0xe8987e){_0x385bd6=_0xe8987e;_0xb00d12=0xc8;}else{_0xb00d12=0xce;}_0x243251[_0x914b('0x1a')](_0xb00d12);return _0x243251[_0x914b('0x20')](_0x914b('0x21'),_0x58be0b+'-'+_0x385bd6+'/'+_0xe8987e)['json'](_0x2eade4);}return null;};}function patchUpdates(_0x25c154){return function(_0x5225b8){try{jsonpatch['apply'](_0x5225b8,_0x25c154,!![]);}catch(_0x497c5e){return BPromise[_0x914b('0x22')](_0x497c5e);}return _0x5225b8['save']();};}function saveUpdates(_0x3fd999,_0x2b1c68){return function(_0x377982){if(_0x377982){return _0x377982['update'](_0x3fd999)[_0x914b('0x23')](function(_0x475afd){return _0x475afd;});}return null;};}function removeEntity(_0x3276a1,_0x5e1bcd){return function(_0xe454c4){if(_0xe454c4){return _0xe454c4[_0x914b('0x24')]()[_0x914b('0x23')](function(){var _0x41f4b8=_0xe454c4['get']({'plain':!![]});var _0x4bb673='MusicOnHolds';return db[_0x914b('0x25')]['destroy']({'where':{'type':_0x4bb673,'resourceId':_0x41f4b8['id']}})[_0x914b('0x23')](function(){return _0xe454c4;});})[_0x914b('0x23')](function(){_0x3276a1[_0x914b('0x1a')](0xcc)[_0x914b('0x1b')]();});}};}function handleEntityNotFound(_0x1d85b0,_0x3e24e6){return function(_0xb3035c){if(!_0xb3035c){_0x1d85b0['sendStatus'](0x194);}return _0xb3035c;};}function handleError(_0x257898,_0x2c2194){_0x2c2194=_0x2c2194||0x1f4;return function(_0x5ba40f){logger[_0x914b('0x26')](_0x5ba40f[_0x914b('0x27')]);if(_0x5ba40f[_0x914b('0x28')]){delete _0x5ba40f[_0x914b('0x28')];}_0x257898[_0x914b('0x1a')](_0x2c2194)[_0x914b('0x29')](_0x5ba40f);};}exports[_0x914b('0x2a')]=function(_0x34ea6f,_0x3d3ca1){var _0x3379ef={},_0x46db2a={},_0x3ab276={'count':0x0,'rows':[]};var _0x2a3b85=_[_0x914b('0x2b')](db[_0x914b('0x2c')][_0x914b('0x2d')],function(_0x5dfad2){return{'name':_0x5dfad2[_0x914b('0x2e')],'type':_0x5dfad2[_0x914b('0x2f')][_0x914b('0x30')]};});_0x46db2a[_0x914b('0x31')]=_[_0x914b('0x2b')](_0x2a3b85,'name');_0x46db2a[_0x914b('0x32')]=_['keys'](_0x34ea6f[_0x914b('0x32')]);_0x46db2a['filters']=_['intersection'](_0x46db2a[_0x914b('0x31')],_0x46db2a[_0x914b('0x32')]);_0x3379ef['attributes']=_['intersection'](_0x46db2a[_0x914b('0x31')],qs[_0x914b('0x33')](_0x34ea6f[_0x914b('0x32')]['fields']));_0x3379ef[_0x914b('0x34')]=_0x3379ef['attributes']['length']?_0x3379ef[_0x914b('0x34')]:_0x46db2a[_0x914b('0x31')];if(!_0x34ea6f[_0x914b('0x32')][_0x914b('0x35')](_0x914b('0x36'))){_0x3379ef[_0x914b('0x1d')]=qs[_0x914b('0x1d')](_0x34ea6f[_0x914b('0x32')][_0x914b('0x1d')]);_0x3379ef[_0x914b('0x1f')]=qs['offset'](_0x34ea6f['query'][_0x914b('0x1f')]);}_0x3379ef[_0x914b('0x37')]=qs[_0x914b('0x38')](_0x34ea6f[_0x914b('0x32')]['sort']);delete _0x34ea6f['query'][_0x914b('0x38')];_0x3379ef[_0x914b('0x39')]=qs[_0x914b('0x3a')](_[_0x914b('0x3b')](_0x34ea6f[_0x914b('0x32')],_0x46db2a[_0x914b('0x3a')]),_0x2a3b85);if(_0x34ea6f[_0x914b('0x32')][_0x914b('0x3c')]){_0x3379ef[_0x914b('0x39')]=_[_0x914b('0x3d')](_0x3379ef[_0x914b('0x39')],{'$or':_['map'](_0x2a3b85,function(_0x2ab58b){if(_0x2ab58b[_0x914b('0x2f')]!==_0x914b('0x3e')){var _0x326af5={};_0x326af5[_0x2ab58b[_0x914b('0x28')]]={'$like':'%'+_0x34ea6f[_0x914b('0x32')]['filter']+'%'};return _0x326af5;}})});}_0x3379ef=_['merge']({},_0x3379ef,_0x34ea6f[_0x914b('0x3f')]);var _0xcd066={'where':_0x3379ef[_0x914b('0x39')]};return db[_0x914b('0x2c')][_0x914b('0x1e')](_0xcd066)['then'](function(_0x39014f){_0x3ab276[_0x914b('0x1e')]=_0x39014f;if(_0x34ea6f[_0x914b('0x32')][_0x914b('0x40')]){_0x3379ef['include']=[{'all':!![]}];}return db[_0x914b('0x2c')][_0x914b('0x41')](_0x3379ef);})[_0x914b('0x23')](function(_0x98b83b){_0x3ab276[_0x914b('0x42')]=_0x98b83b;return _0x3ab276;})[_0x914b('0x23')](respondWithFilteredResult(_0x3d3ca1,_0x3379ef))[_0x914b('0x43')](handleError(_0x3d3ca1,null));};exports[_0x914b('0x44')]=function(_0x4de5ce,_0x1a7132){var _0x18961e={'raw':![],'where':{'id':_0x4de5ce[_0x914b('0x45')]['id']}},_0x532450={};_0x532450['model']=_[_0x914b('0x46')](db['VoiceMusicOnHold'][_0x914b('0x2d')]);_0x532450[_0x914b('0x32')]=_[_0x914b('0x46')](_0x4de5ce['query']);_0x532450[_0x914b('0x3a')]=_[_0x914b('0x47')](_0x532450[_0x914b('0x31')],_0x532450[_0x914b('0x32')]);_0x18961e[_0x914b('0x34')]=_['intersection'](_0x532450[_0x914b('0x31')],qs[_0x914b('0x33')](_0x4de5ce[_0x914b('0x32')][_0x914b('0x33')]));_0x18961e[_0x914b('0x34')]=_0x18961e['attributes'][_0x914b('0x48')]?_0x18961e[_0x914b('0x34')]:_0x532450[_0x914b('0x31')];if(_0x4de5ce['query']['includeAll']){_0x18961e['include']=[{'all':!![]}];}_0x18961e=_[_0x914b('0x3d')]({},_0x18961e,_0x4de5ce[_0x914b('0x3f')]);return db[_0x914b('0x2c')][_0x914b('0x49')](_0x18961e)[_0x914b('0x23')](handleEntityNotFound(_0x1a7132,null))[_0x914b('0x23')](respondWithResult(_0x1a7132,null))[_0x914b('0x43')](handleError(_0x1a7132,null));};exports['update']=function(_0x17cd7e,_0x4072e4){if(_0x17cd7e[_0x914b('0x4a')]['id']){delete _0x17cd7e[_0x914b('0x4a')]['id'];}return db['VoiceMusicOnHold'][_0x914b('0x49')]({'where':{'id':_0x17cd7e['params']['id']}})[_0x914b('0x23')](handleEntityNotFound(_0x4072e4,null))[_0x914b('0x23')](saveUpdates(_0x17cd7e['body'],null))[_0x914b('0x23')](respondWithResult(_0x4072e4,null))[_0x914b('0x43')](handleError(_0x4072e4,null));};exports[_0x914b('0x4b')]=function(_0x5e48ec,_0x475ef3,_0x31dab7){return db[_0x914b('0x4c')][_0x914b('0x4d')](function(_0x572843){if(_0x5e48ec[_0x914b('0x4a')]['mode']===_0x914b('0x4e')){_0x5e48ec['body']['directory']=path['join'](config[_0x914b('0x4f')],'server/files/moh',_0x5e48ec['body'][_0x914b('0x28')]);}return db['VoiceMusicOnHold'][_0x914b('0x4b')](_0x5e48ec['body'],{'transaction':_0x572843})['then'](function(_0x4b8548){if(_0x5e48ec[_0x914b('0x4a')][_0x914b('0x50')]==='files'){fs[_0x914b('0x51')](_0x4b8548[_0x914b('0x52')],parseInt('0777',0x8));}var _0x4e1697=_0x5e48ec[_0x914b('0x53')]['get']({'plain':!![]});if(!_0x4e1697)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4e1697['role']===_0x914b('0x53')){var _0x5a8d77=_0x4b8548[_0x914b('0x54')]({'plain':!![]});return db[_0x914b('0x55')]['find']({'where':{'name':_0x914b('0x56'),'userProfileId':_0x4e1697[_0x914b('0x57')]},'raw':!![]})['then'](function(_0x2bc4c8){if(_0x2bc4c8&&_0x2bc4c8['autoAssociation']===0x0){return db['UserProfileResource'][_0x914b('0x4b')]({'name':_0x5a8d77[_0x914b('0x28')],'resourceId':_0x5a8d77['id'],'type':_0x2bc4c8['name'],'sectionId':_0x2bc4c8['id']},{})[_0x914b('0x23')](function(){return _0x4b8548;});}else{return _0x4b8548;}})[_0x914b('0x43')](function(_0x4a5e09){logger[_0x914b('0x26')](_0x914b('0x58'),_0x4a5e09);});}return _0x4b8548;});})[_0x914b('0x23')](respondWithResult(_0x475ef3,0xc9))[_0x914b('0x43')](handleError(_0x475ef3,null));};exports[_0x914b('0x24')]=function(_0x5b37a2,_0x4369b1,_0x5707ce){var _0x397946;return db['VoiceMusicOnHold'][_0x914b('0x49')]({'where':{'id':_0x5b37a2[_0x914b('0x45')]['id']}})[_0x914b('0x23')](function(_0x3956e2){if(_0x3956e2){return db[_0x914b('0x4c')][_0x914b('0x4d')](function(_0x4455c4){return _0x3956e2[_0x914b('0x24')]({'transaction':_0x4455c4,'raw':!![]})[_0x914b('0x23')](function(_0x22ae5b){if(_0x22ae5b[_0x914b('0x52')]){fs[_0x914b('0x59')](_0x22ae5b['directory'])[_0x914b('0x5a')](function(_0xe0c303){fs['unlinkSync'](path[_0x914b('0x5b')](_0x22ae5b['directory'],_0xe0c303));});fs['rmdirSync'](_0x22ae5b[_0x914b('0x52')]);}return _0x22ae5b;});})['catch'](function(_0x5ebe31){throw new db[(_0x914b('0x5c'))][(_0x914b('0x5d'))](_0x5ebe31[_0x914b('0x5e')]);});}})[_0x914b('0x23')](handleEntityNotFound(_0x4369b1,null))[_0x914b('0x23')](removeEntity(_0x4369b1,null))[_0x914b('0x43')](handleError(_0x4369b1,null));};exports['addSound']=function(_0x55300f,_0x44b840,_0x477531){return db[_0x914b('0x4c')]['transaction'](function(_0x16b5cf){var _0x21efd9;return db[_0x914b('0x2c')]['find']({'where':{'id':_0x55300f[_0x914b('0x45')]['id']}})[_0x914b('0x23')](function(_0x558ead){if(_0x558ead){_0x21efd9=_0x558ead;return _0x558ead[_0x914b('0x5f')](_0x55300f[_0x914b('0x4a')]['id'],{'transaction':_0x16b5cf});}})['then'](function(_0x2a8bc3){if(_0x2a8bc3){return db[_0x914b('0x60')][_0x914b('0x61')]({'where':{'id':_0x55300f[_0x914b('0x4a')]['id']},'attributes':['id',_0x914b('0x28'),_0x914b('0x62'),'converted_format',_0x914b('0x63')],'raw':!![]});}})[_0x914b('0x23')](function(_0x18fbce){if(_0x18fbce){var _0x37ce36=path[_0x914b('0x5b')](config[_0x914b('0x4f')],_0x914b('0x64'),util[_0x914b('0x65')](_0x914b('0x66'),path[_0x914b('0x67')](_0x18fbce[_0x914b('0x62')],path[_0x914b('0x68')](_0x18fbce[_0x914b('0x62')])),_0x18fbce['converted_format']));var _0x4123c0=path[_0x914b('0x5b')](config[_0x914b('0x4f')],'server/files/moh',_0x21efd9[_0x914b('0x28')],util[_0x914b('0x65')](_0x914b('0x66'),_0x18fbce['name'],_0x18fbce[_0x914b('0x69')]));fs[_0x914b('0x6a')](_0x37ce36,_0x4123c0);return _0x18fbce;}})['catch'](function(_0x11b4d8){throw new db[(_0x914b('0x5c'))]['ValidationError'](_0x11b4d8['message']);});})[_0x914b('0x23')](handleEntityNotFound(_0x44b840,null))[_0x914b('0x23')](respondWithResult(_0x44b840,0xc9))[_0x914b('0x43')](handleError(_0x44b840,null));};exports['removeSound']=function(_0x30d37f,_0x11c51a,_0x52b884){return db[_0x914b('0x4c')][_0x914b('0x4d')](function(_0x375e1f){var _0x216ed1;return db[_0x914b('0x2c')][_0x914b('0x61')]({'where':{'id':_0x30d37f[_0x914b('0x45')]['id']}})[_0x914b('0x23')](handleEntityNotFound(_0x11c51a,null))[_0x914b('0x23')](function(_0x5b20cd){if(_0x5b20cd){_0x216ed1=_0x5b20cd;return _0x5b20cd['removeSound'](_0x30d37f[_0x914b('0x45')][_0x914b('0x6b')]);}})[_0x914b('0x23')](function(_0x46f2b8){if(_0x46f2b8){return db['Sound']['findOne']({'where':{'id':_0x30d37f[_0x914b('0x45')]['id2']},'attributes':['id',_0x914b('0x28'),_0x914b('0x62'),_0x914b('0x69'),_0x914b('0x63')],'raw':!![]});}})[_0x914b('0x23')](function(_0x146732){if(_0x146732){fs[_0x914b('0x6c')](path[_0x914b('0x5b')](_0x216ed1[_0x914b('0x52')],util[_0x914b('0x65')]('%s.%s',_0x146732['name'],_0x146732[_0x914b('0x69')])));return _0x146732;}})['catch'](function(_0x3ed49d){throw new db[(_0x914b('0x5c'))][(_0x914b('0x5d'))](_0x3ed49d['message']);});})['then'](handleEntityNotFound(_0x11c51a,null))[_0x914b('0x23')](respondWithStatusCode(_0x11c51a,0xcc))[_0x914b('0x43')](handleError(_0x11c51a,null));};exports[_0x914b('0x6d')]=function(_0x54bf03,_0x20a15e,_0x13c408){var _0x13dd52={};var _0x1fc683={};var _0x5dd747;var _0x42234d;return db['VoiceMusicOnHold'][_0x914b('0x61')]({'where':{'id':_0x54bf03[_0x914b('0x45')]['id']}})[_0x914b('0x23')](handleEntityNotFound(_0x20a15e,null))[_0x914b('0x23')](function(_0x30689b){if(_0x30689b){_0x5dd747=_0x30689b;_0x1fc683[_0x914b('0x31')]=_['keys'](db[_0x914b('0x60')][_0x914b('0x2d')]);_0x1fc683[_0x914b('0x32')]=_[_0x914b('0x46')](_0x54bf03[_0x914b('0x32')]);_0x1fc683[_0x914b('0x3a')]=_['intersection'](_0x1fc683[_0x914b('0x31')],_0x1fc683['query']);_0x13dd52[_0x914b('0x34')]=_[_0x914b('0x47')](_0x1fc683[_0x914b('0x31')],qs[_0x914b('0x33')](_0x54bf03['query'][_0x914b('0x33')]));_0x13dd52[_0x914b('0x34')]=_0x13dd52[_0x914b('0x34')]['length']?_0x13dd52['attributes']:_0x1fc683['model'];_0x13dd52[_0x914b('0x37')]=qs[_0x914b('0x38')](_0x54bf03[_0x914b('0x32')][_0x914b('0x38')]);_0x13dd52[_0x914b('0x39')]=qs[_0x914b('0x3a')](_[_0x914b('0x3b')](_0x54bf03[_0x914b('0x32')],_0x1fc683[_0x914b('0x3a')]));if(_0x54bf03[_0x914b('0x32')][_0x914b('0x3c')]){_0x13dd52[_0x914b('0x39')]=_['merge'](_0x13dd52[_0x914b('0x39')],{'$or':_[_0x914b('0x2b')](_0x13dd52[_0x914b('0x34')],function(_0x244fe2){var _0x12d471={};_0x12d471[_0x244fe2]={'$like':'%'+_0x54bf03[_0x914b('0x32')]['filter']+'%'};return _0x12d471;})});}_0x13dd52=_[_0x914b('0x3d')]({},_0x13dd52,_0x54bf03[_0x914b('0x3f')]);return _0x5dd747[_0x914b('0x6d')](_0x13dd52);}})['then'](function(_0x1f3757){if(_0x1f3757){_0x42234d=_0x1f3757[_0x914b('0x48')];if(!_0x54bf03[_0x914b('0x32')][_0x914b('0x35')](_0x914b('0x36'))){_0x13dd52[_0x914b('0x1d')]=qs[_0x914b('0x1d')](_0x54bf03[_0x914b('0x32')][_0x914b('0x1d')]);_0x13dd52['offset']=qs[_0x914b('0x1f')](_0x54bf03[_0x914b('0x32')]['offset']);}return _0x5dd747[_0x914b('0x6d')](_0x13dd52);}})['then'](function(_0x10ae1b){if(_0x10ae1b){return _0x10ae1b?{'count':_0x42234d,'rows':_0x10ae1b}:null;}})[_0x914b('0x23')](respondWithResult(_0x20a15e,null))[_0x914b('0x43')](handleError(_0x20a15e,null));};
\ No newline at end of file
index 4265a2a..ea06068 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe295=['define','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x2b1b2e,_0x1557ff){var _0x419099=function(_0x536efd){while(--_0x536efd){_0x2b1b2e['push'](_0x2b1b2e['shift']());}};_0x419099(++_0x1557ff);}(_0xe295,0xd0));var _0x5e29=function(_0x502ca3,_0x36be36){_0x502ca3=_0x502ca3-0x0;var _0x27f42c=_0xe295[_0x502ca3];return _0x27f42c;};'use strict';var _=require('lodash');var util=require(_0x5e29('0x0'));var logger=require(_0x5e29('0x1'))('api');var moment=require(_0x5e29('0x2'));var BPromise=require(_0x5e29('0x3'));var rp=require(_0x5e29('0x4'));var fs=require('fs');var path=require(_0x5e29('0x5'));var rimraf=require(_0x5e29('0x6'));var config=require(_0x5e29('0x7'));var attributes=require('./voiceMusicOnHold.attributes');module['exports']=function(_0x542ede,_0x188c5d){return _0x542ede[_0x5e29('0x8')]('VoiceMusicOnHold',attributes,{'tableName':'voice_musiconhold','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xaf5c=['rimraf','../../config/environment','./voiceMusicOnHold.attributes','exports','define','VoiceMusicOnHold','voice_musiconhold','lodash','util','../../config/logger','bluebird','request-promise'];(function(_0x4c883a,_0x423a46){var _0x35b150=function(_0x46bf0a){while(--_0x46bf0a){_0x4c883a['push'](_0x4c883a['shift']());}};_0x35b150(++_0x423a46);}(_0xaf5c,0x1e7));var _0xcaf5=function(_0x5b34b5,_0xdbccb4){_0x5b34b5=_0x5b34b5-0x0;var _0x5e465b=_0xaf5c[_0x5b34b5];return _0x5e465b;};'use strict';var _=require(_0xcaf5('0x0'));var util=require(_0xcaf5('0x1'));var logger=require(_0xcaf5('0x2'))('api');var moment=require('moment');var BPromise=require(_0xcaf5('0x3'));var rp=require(_0xcaf5('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xcaf5('0x5'));var config=require(_0xcaf5('0x6'));var attributes=require(_0xcaf5('0x7'));module[_0xcaf5('0x8')]=function(_0x44421b,_0x535bde){return _0x44421b[_0xcaf5('0x9')](_0xcaf5('0xa'),attributes,{'tableName':_0xcaf5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b02bab7..e7290a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['http','request','then','info','VoiceMusicOnHold,\x20%s,\x20%s','request\x20sent','debug','VoiceMusicOnHold,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x4ca5dc,_0x55177d){var _0x3b12ab=function(_0x533f24){while(--_0x533f24){_0x4ca5dc['push'](_0x4ca5dc['shift']());}};_0x3b12ab(++_0x55177d);}(_0xe706,0xa3));var _0x6e70=function(_0x34c825,_0x44cad4){_0x34c825=_0x34c825-0x0;var _0x2fde13=_0xe706[_0x34c825];return _0x2fde13;};'use strict';var _=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var moment=require(_0x6e70('0x2'));var BPromise=require('bluebird');var rs=require(_0x6e70('0x3'));var fs=require('fs');var Redis=require(_0x6e70('0x4'));var db=require(_0x6e70('0x5'))['db'];var utils=require(_0x6e70('0x6'));var logger=require(_0x6e70('0x7'))(_0x6e70('0x8'));var config=require(_0x6e70('0x9'));var jayson=require(_0x6e70('0xa'));var client=jayson[_0x6e70('0xb')][_0x6e70('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x36357b,_0x293ce7,_0x45a2d4){return new BPromise(function(_0x188ed3,_0x3c4843){return client[_0x6e70('0xd')](_0x36357b,_0x45a2d4)[_0x6e70('0xe')](function(_0x25e61c){logger[_0x6e70('0xf')](_0x6e70('0x10'),_0x293ce7,_0x6e70('0x11'));logger[_0x6e70('0x12')](_0x6e70('0x13'),_0x293ce7,_0x6e70('0x11'),JSON['stringify'](_0x25e61c));if(_0x25e61c['error']){if(_0x25e61c[_0x6e70('0x14')][_0x6e70('0x15')]===0x1f4){logger[_0x6e70('0x14')](_0x6e70('0x10'),_0x293ce7,_0x25e61c[_0x6e70('0x14')][_0x6e70('0x16')]);return _0x3c4843(_0x25e61c[_0x6e70('0x14')][_0x6e70('0x16')]);}logger['error']('VoiceMusicOnHold,\x20%s,\x20%s',_0x293ce7,_0x25e61c['error'][_0x6e70('0x16')]);return _0x188ed3(_0x25e61c['error']['message']);}else{logger[_0x6e70('0xf')](_0x6e70('0x10'),_0x293ce7,'request\x20sent');_0x188ed3(_0x25e61c[_0x6e70('0x17')]['message']);}})[_0x6e70('0x18')](function(_0x161f23){logger['error']('VoiceMusicOnHold,\x20%s,\x20%s',_0x293ce7,_0x161f23);_0x3c4843(_0x161f23);});});}
\ No newline at end of file
+var _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(_0x456ade,_0x2b2f52){var _0x2ac94c=function(_0x1bee1d){while(--_0x1bee1d){_0x456ade['push'](_0x456ade['shift']());}};_0x2ac94c(++_0x2b2f52);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x4c440b,_0x3ea627){_0x4c440b=_0x4c440b-0x0;var _0x2d48cf=_0xcb91[_0x4c440b];return _0x2d48cf;};'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
index b35e060..71a5153 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e67=['update','removeAgents','delete','removeTeams','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voicePrefix.controller','get','isAuthenticated','/:id','show','/:id/users','getAgents','getTeams','create','post','addAgents','/:id/teams','put'];(function(_0x35f635,_0x47dc4b){var _0x55b60a=function(_0x3cdc2){while(--_0x3cdc2){_0x35f635['push'](_0x35f635['shift']());}};_0x55b60a(++_0x47dc4b);}(_0x5e67,0x70));var _0x75e6=function(_0x2ea202,_0xdbba97){_0x2ea202=_0x2ea202-0x0;var _0x13c370=_0x5e67[_0x2ea202];return _0x13c370;};'use strict';var multer=require(_0x75e6('0x0'));var util=require(_0x75e6('0x1'));var path=require(_0x75e6('0x2'));var timeout=require(_0x75e6('0x3'));var express=require(_0x75e6('0x4'));var router=express[_0x75e6('0x5')]();var fs_extra=require(_0x75e6('0x6'));var auth=require(_0x75e6('0x7'));var interaction=require(_0x75e6('0x8'));var config=require(_0x75e6('0x9'));var controller=require(_0x75e6('0xa'));router[_0x75e6('0xb')]('/',auth['isAuthenticated'](),controller['index']);router['get']('/describe',auth[_0x75e6('0xc')](),controller['describe']);router[_0x75e6('0xb')](_0x75e6('0xd'),auth[_0x75e6('0xc')](),controller[_0x75e6('0xe')]);router['get'](_0x75e6('0xf'),auth[_0x75e6('0xc')](),controller[_0x75e6('0x10')]);router['get']('/:id/teams',auth[_0x75e6('0xc')](),controller[_0x75e6('0x11')]);router['post']('/',auth['isAuthenticated'](),controller[_0x75e6('0x12')]);router[_0x75e6('0x13')](_0x75e6('0xf'),auth[_0x75e6('0xc')](),controller[_0x75e6('0x14')]);router[_0x75e6('0x13')](_0x75e6('0x15'),auth[_0x75e6('0xc')](),controller['addTeams']);router[_0x75e6('0x16')](_0x75e6('0xd'),auth[_0x75e6('0xc')](),controller[_0x75e6('0x17')]);router['delete'](_0x75e6('0xd'),auth[_0x75e6('0xc')](),controller['destroy']);router['delete'](_0x75e6('0xf'),auth[_0x75e6('0xc')](),controller[_0x75e6('0x18')]);router[_0x75e6('0x19')](_0x75e6('0x15'),auth[_0x75e6('0xc')](),controller[_0x75e6('0x1a')]);module['exports']=router;
\ No newline at end of file
+var _0x34e7=['/:id','show','/:id/users','getAgents','getTeams','post','create','/:id/teams','addTeams','put','update','delete','removeAgents','removeTeams','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voicePrefix.controller','get','isAuthenticated','index','/describe','describe'];(function(_0x4ebb1e,_0x1051c7){var _0x18846b=function(_0x494c66){while(--_0x494c66){_0x4ebb1e['push'](_0x4ebb1e['shift']());}};_0x18846b(++_0x1051c7);}(_0x34e7,0x164));var _0x734e=function(_0x2b7c38,_0x496d14){_0x2b7c38=_0x2b7c38-0x0;var _0x313fcc=_0x34e7[_0x2b7c38];return _0x313fcc;};'use strict';var multer=require(_0x734e('0x0'));var util=require(_0x734e('0x1'));var path=require(_0x734e('0x2'));var timeout=require(_0x734e('0x3'));var express=require(_0x734e('0x4'));var router=express[_0x734e('0x5')]();var fs_extra=require(_0x734e('0x6'));var auth=require(_0x734e('0x7'));var interaction=require(_0x734e('0x8'));var config=require(_0x734e('0x9'));var controller=require(_0x734e('0xa'));router[_0x734e('0xb')]('/',auth[_0x734e('0xc')](),controller[_0x734e('0xd')]);router['get'](_0x734e('0xe'),auth[_0x734e('0xc')](),controller[_0x734e('0xf')]);router['get'](_0x734e('0x10'),auth['isAuthenticated'](),controller[_0x734e('0x11')]);router[_0x734e('0xb')](_0x734e('0x12'),auth[_0x734e('0xc')](),controller[_0x734e('0x13')]);router[_0x734e('0xb')]('/:id/teams',auth['isAuthenticated'](),controller[_0x734e('0x14')]);router[_0x734e('0x15')]('/',auth[_0x734e('0xc')](),controller[_0x734e('0x16')]);router['post'](_0x734e('0x12'),auth[_0x734e('0xc')](),controller['addAgents']);router[_0x734e('0x15')](_0x734e('0x17'),auth[_0x734e('0xc')](),controller[_0x734e('0x18')]);router[_0x734e('0x19')]('/:id',auth[_0x734e('0xc')](),controller[_0x734e('0x1a')]);router[_0x734e('0x1b')]('/:id',auth[_0x734e('0xc')](),controller['destroy']);router[_0x734e('0x1b')](_0x734e('0x12'),auth['isAuthenticated'](),controller[_0x734e('0x1c')]);router['delete'](_0x734e('0x17'),auth['isAuthenticated'](),controller[_0x734e('0x1d')]);module[_0x734e('0x1e')]=router;
\ No newline at end of file
index 3520051..1a428fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1901=['exports','STRING','name','system-','getDataValue','INTEGER','sequelize'];(function(_0x1666af,_0x3d5121){var _0x247b79=function(_0xec9044){while(--_0xec9044){_0x1666af['push'](_0x1666af['shift']());}};_0x247b79(++_0x3d5121);}(_0x1901,0xc3));var _0x1190=function(_0x48eef4,_0x54ca8f){_0x48eef4=_0x48eef4-0x0;var _0xbcb029=_0x1901[_0x48eef4];return _0xbcb029;};'use strict';var Sequelize=require(_0x1190('0x0'));module[_0x1190('0x1')]={'name':{'type':Sequelize[_0x1190('0x2')],'allowNull':![],'unique':_0x1190('0x3')},'prefix':{'type':Sequelize['VIRTUAL'],'get':function(_0x5a9e07){return _0x1190('0x4')+this[_0x1190('0x5')]('name')+'-';}},'description':{'type':Sequelize[_0x1190('0x2')]},'callerIdAll':{'type':Sequelize[_0x1190('0x2')]},'VoiceExtensionId':{'type':Sequelize[_0x1190('0x6')]}};
\ No newline at end of file
+var _0xb449=['name','sequelize','exports','STRING','getDataValue'];(function(_0x3efa0e,_0x298acc){var _0x46f8e0=function(_0x1fe8f1){while(--_0x1fe8f1){_0x3efa0e['push'](_0x3efa0e['shift']());}};_0x46f8e0(++_0x298acc);}(_0xb449,0x187));var _0x9b44=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb449[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x9b44('0x0'));module[_0x9b44('0x1')]={'name':{'type':Sequelize[_0x9b44('0x2')],'allowNull':![],'unique':'name'},'prefix':{'type':Sequelize['VIRTUAL'],'get':function(_0x3bdad3){return'system-'+this[_0x9b44('0x3')](_0x9b44('0x4'))+'-';}},'description':{'type':Sequelize[_0x9b44('0x2')]},'callerIdAll':{'type':Sequelize[_0x9b44('0x2')]},'VoiceExtensionId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index da56b57..4f1f54a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9582=['path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','VoicePrefixes','UserProfileResource','end','error','stack','name','index','map','rawAttributes','fieldName','type','key','model','query','intersection','attributes','fields','length','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','VoicePrefix','include','rows','catch','show','params','keys','includeAll','find','describe','sequelize','create','body','VoiceExtension','VoiceExtensionId','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','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)=','callerIdAll','PREFIX-CALLERIDALL=','goto','${EXTEN:','charAt','transaction','findById','addAgents','ids','omit','spread','emit','userVoicePrefix:save','removeAgents','isArray','userVoicePrefix:remove','getAgents','findOne','User','hasOwnProperty','getTeams','Team','addTeams','findAll','Agents','each','TeamVoicePrefix','upsert','UserVoicePrefix','findOrCreate','forEach','removeTeams','select','field','join','ut.TeamId\x20=\x20tq.TeamId','VoicePrefixId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','TeamId','includes','isEmpty','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util'];(function(_0x158825,_0x1eff7f){var _0x127265=function(_0x1e3710){while(--_0x1e3710){_0x158825['push'](_0x158825['shift']());}};_0x127265(++_0x1eff7f);}(_0x9582,0x95));var _0x2958=function(_0x270e72,_0x3d65fa){_0x270e72=_0x270e72-0x0;var _0x11affa=_0x9582[_0x270e72];return _0x11affa;};'use strict';var emlformat=require(_0x2958('0x0'));var rimraf=require(_0x2958('0x1'));var zipdir=require(_0x2958('0x2'));var jsonpatch=require(_0x2958('0x3'));var rp=require(_0x2958('0x4'));var moment=require(_0x2958('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x2958('0x6'));var util=require(_0x2958('0x7'));var path=require(_0x2958('0x8'));var sox=require(_0x2958('0x9'));var csv=require(_0x2958('0xa'));var ejs=require(_0x2958('0xb'));var fs=require('fs');var fs_extra=require(_0x2958('0xc'));var _=require(_0x2958('0xd'));var squel=require(_0x2958('0xe'));var crypto=require(_0x2958('0xf'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x2958('0xa'));var querystring=require('querystring');var Papa=require(_0x2958('0x10'));var Redis=require('ioredis');var authService=require(_0x2958('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x2958('0x12'));var hardwareService=require(_0x2958('0x13'));var logger=require(_0x2958('0x14'))(_0x2958('0x15'));var utils=require(_0x2958('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x2958('0x17'));var db=require(_0x2958('0x18'))['db'];config[_0x2958('0x19')]=_[_0x2958('0x1a')](config[_0x2958('0x19')],{'host':_0x2958('0x1b'),'port':0x18eb});var socket=require(_0x2958('0x1c'))(new Redis(config[_0x2958('0x19')]));require('./voicePrefix.socket')[_0x2958('0x1d')](socket);function respondWithStatusCode(_0x2e12d4,_0x4f2a1b){_0x4f2a1b=_0x4f2a1b||0xcc;return function(_0x4c762e){if(_0x4c762e){return _0x2e12d4[_0x2958('0x1e')](_0x4f2a1b);}return _0x2e12d4[_0x2958('0x1f')](_0x4f2a1b)['end']();};}function respondWithResult(_0x3bef50,_0x544563){_0x544563=_0x544563||0xc8;return function(_0x5c3ac3){if(_0x5c3ac3){return _0x3bef50[_0x2958('0x1f')](_0x544563)[_0x2958('0x20')](_0x5c3ac3);}};}function respondWithFilteredResult(_0x55e261,_0x54ef76){return function(_0x28a92c){if(_0x28a92c){var _0x160949=typeof _0x54ef76[_0x2958('0x21')]===_0x2958('0x22')&&typeof _0x54ef76[_0x2958('0x23')]==='undefined';var _0x19a614=_0x28a92c[_0x2958('0x24')];var _0x1a12fa=_0x160949?0x0:_0x54ef76['offset'];var _0x1e77eb=_0x160949?_0x28a92c['count']:_0x54ef76[_0x2958('0x21')]+_0x54ef76['limit'];var _0x5eaf36;if(_0x1e77eb>=_0x19a614){_0x1e77eb=_0x19a614;_0x5eaf36=0xc8;}else{_0x5eaf36=0xce;}_0x55e261[_0x2958('0x1f')](_0x5eaf36);return _0x55e261[_0x2958('0x25')](_0x2958('0x26'),_0x1a12fa+'-'+_0x1e77eb+'/'+_0x19a614)[_0x2958('0x20')](_0x28a92c);}return null;};}function patchUpdates(_0x2202f8){return function(_0x412e42){try{jsonpatch[_0x2958('0x27')](_0x412e42,_0x2202f8,!![]);}catch(_0x2b9818){return BPromise[_0x2958('0x28')](_0x2b9818);}return _0x412e42[_0x2958('0x29')]();};}function saveUpdates(_0xaf5547,_0xd58ae1){return function(_0x119242){if(_0x119242){return _0x119242[_0x2958('0x2a')](_0xaf5547)[_0x2958('0x2b')](function(_0x4f811a){return _0x4f811a;});}return null;};}function removeEntity(_0x574df5,_0x3c1155){return function(_0x33c5b0){if(_0x33c5b0){return _0x33c5b0[_0x2958('0x2c')]()[_0x2958('0x2b')](function(){var _0x52bd32=_0x33c5b0[_0x2958('0x2d')]({'plain':!![]});var _0x57ae96=_0x2958('0x2e');return db[_0x2958('0x2f')][_0x2958('0x2c')]({'where':{'type':_0x57ae96,'resourceId':_0x52bd32['id']}})[_0x2958('0x2b')](function(){return _0x33c5b0;});})[_0x2958('0x2b')](function(){_0x574df5[_0x2958('0x1f')](0xcc)[_0x2958('0x30')]();});}};}function handleEntityNotFound(_0x5d1dfc,_0x21b919){return function(_0x5053d0){if(!_0x5053d0){_0x5d1dfc['sendStatus'](0x194);}return _0x5053d0;};}function handleError(_0x28ee09,_0x15bab3){_0x15bab3=_0x15bab3||0x1f4;return function(_0x973486){logger[_0x2958('0x31')](_0x973486[_0x2958('0x32')]);if(_0x973486[_0x2958('0x33')]){delete _0x973486[_0x2958('0x33')];}_0x28ee09[_0x2958('0x1f')](_0x15bab3)['send'](_0x973486);};}exports[_0x2958('0x34')]=function(_0x32e366,_0x5f34d4){var _0x430484={},_0x5ed343={},_0x380e1d={'count':0x0,'rows':[]};var _0x56d9fd=_[_0x2958('0x35')](db['VoicePrefix'][_0x2958('0x36')],function(_0x2e2a0b){return{'name':_0x2e2a0b[_0x2958('0x37')],'type':_0x2e2a0b[_0x2958('0x38')][_0x2958('0x39')]};});_0x5ed343[_0x2958('0x3a')]=_[_0x2958('0x35')](_0x56d9fd,_0x2958('0x33'));_0x5ed343[_0x2958('0x3b')]=_['keys'](_0x32e366[_0x2958('0x3b')]);_0x5ed343['filters']=_[_0x2958('0x3c')](_0x5ed343['model'],_0x5ed343[_0x2958('0x3b')]);_0x430484[_0x2958('0x3d')]=_[_0x2958('0x3c')](_0x5ed343[_0x2958('0x3a')],qs[_0x2958('0x3e')](_0x32e366[_0x2958('0x3b')][_0x2958('0x3e')]));_0x430484[_0x2958('0x3d')]=_0x430484[_0x2958('0x3d')][_0x2958('0x3f')]?_0x430484[_0x2958('0x3d')]:_0x5ed343[_0x2958('0x3a')];if(!_0x32e366[_0x2958('0x3b')]['hasOwnProperty'](_0x2958('0x40'))){_0x430484[_0x2958('0x23')]=qs[_0x2958('0x23')](_0x32e366[_0x2958('0x3b')]['limit']);_0x430484[_0x2958('0x21')]=qs[_0x2958('0x21')](_0x32e366[_0x2958('0x3b')][_0x2958('0x21')]);}_0x430484[_0x2958('0x41')]=qs[_0x2958('0x42')](_0x32e366[_0x2958('0x3b')][_0x2958('0x42')]);_0x430484[_0x2958('0x43')]=qs[_0x2958('0x44')](_[_0x2958('0x45')](_0x32e366[_0x2958('0x3b')],_0x5ed343[_0x2958('0x44')]),_0x56d9fd);if(_0x32e366['query'][_0x2958('0x46')]){_0x430484[_0x2958('0x43')]=_['merge'](_0x430484['where'],{'$or':_[_0x2958('0x35')](_0x56d9fd,function(_0x265055){if(_0x265055[_0x2958('0x38')]!==_0x2958('0x47')){var _0x3ec87a={};_0x3ec87a[_0x265055[_0x2958('0x33')]]={'$like':'%'+_0x32e366[_0x2958('0x3b')][_0x2958('0x46')]+'%'};return _0x3ec87a;}})});}_0x430484=_[_0x2958('0x48')]({},_0x430484,_0x32e366[_0x2958('0x49')]);var _0x16aae8={'where':_0x430484[_0x2958('0x43')]};return db[_0x2958('0x4a')]['count'](_0x16aae8)[_0x2958('0x2b')](function(_0x112256){_0x380e1d[_0x2958('0x24')]=_0x112256;if(_0x32e366[_0x2958('0x3b')]['includeAll']){_0x430484[_0x2958('0x4b')]=[{'all':!![]}];}return db['VoicePrefix']['findAll'](_0x430484);})[_0x2958('0x2b')](function(_0x35993f){_0x380e1d[_0x2958('0x4c')]=_0x35993f;return _0x380e1d;})[_0x2958('0x2b')](respondWithFilteredResult(_0x5f34d4,_0x430484))[_0x2958('0x4d')](handleError(_0x5f34d4,null));};exports[_0x2958('0x4e')]=function(_0x52d40e,_0x17e8d6){var _0x4fb27a={'raw':![],'where':{'id':_0x52d40e[_0x2958('0x4f')]['id']}},_0x488f49={};_0x488f49['model']=_[_0x2958('0x50')](db[_0x2958('0x4a')][_0x2958('0x36')]);_0x488f49[_0x2958('0x3b')]=_[_0x2958('0x50')](_0x52d40e[_0x2958('0x3b')]);_0x488f49[_0x2958('0x44')]=_[_0x2958('0x3c')](_0x488f49['model'],_0x488f49[_0x2958('0x3b')]);_0x4fb27a[_0x2958('0x3d')]=_[_0x2958('0x3c')](_0x488f49[_0x2958('0x3a')],qs['fields'](_0x52d40e[_0x2958('0x3b')][_0x2958('0x3e')]));_0x4fb27a['attributes']=_0x4fb27a[_0x2958('0x3d')][_0x2958('0x3f')]?_0x4fb27a[_0x2958('0x3d')]:_0x488f49[_0x2958('0x3a')];if(_0x52d40e[_0x2958('0x3b')][_0x2958('0x51')]){_0x4fb27a['include']=[{'all':!![]}];}_0x4fb27a=_[_0x2958('0x48')]({},_0x4fb27a,_0x52d40e[_0x2958('0x49')]);return db[_0x2958('0x4a')][_0x2958('0x52')](_0x4fb27a)[_0x2958('0x2b')](handleEntityNotFound(_0x17e8d6,null))[_0x2958('0x2b')](respondWithResult(_0x17e8d6,null))[_0x2958('0x4d')](handleError(_0x17e8d6,null));};exports[_0x2958('0x2c')]=function(_0x2e0fc7,_0x329652){return db[_0x2958('0x4a')][_0x2958('0x52')]({'where':{'id':_0x2e0fc7[_0x2958('0x4f')]['id']}})[_0x2958('0x2b')](handleEntityNotFound(_0x329652,null))[_0x2958('0x2b')](removeEntity(_0x329652,null))[_0x2958('0x4d')](handleError(_0x329652,null));};exports[_0x2958('0x53')]=function(_0x4889b6,_0xa1073b){return db['VoicePrefix'][_0x2958('0x53')]()[_0x2958('0x2b')](respondWithResult(_0xa1073b,null))[_0x2958('0x4d')](handleError(_0xa1073b,null));};exports['create']=function(_0x497a30,_0x39cc25){var _0x394c29;return db[_0x2958('0x54')]['transaction'](function(_0x524562){return db[_0x2958('0x4a')][_0x2958('0x55')](_0x497a30[_0x2958('0x56')],{'transaction':_0x524562})[_0x2958('0x2b')](function(_0x4347c0){_0x394c29=_0x4347c0[_0x2958('0x2d')]({'plain':!![]});return db[_0x2958('0x57')][_0x2958('0x52')]({'where':{'id':_0x394c29[_0x2958('0x58')]},'raw':!![]})['then'](function(_0x30c739){return createVoicePrefixExtensions(_0x394c29,_0x30c739,_0x524562);});});})[_0x2958('0x2b')](function(){var _0x5671d1=_0x497a30[_0x2958('0x59')][_0x2958('0x2d')]({'plain':!![]});if(!_0x5671d1)throw new Error(_0x2958('0x5a'));if(_0x5671d1[_0x2958('0x5b')]===_0x2958('0x59')){var _0x16d927=_0x394c29;return db['UserProfileSection'][_0x2958('0x52')]({'where':{'name':_0x2958('0x2e'),'userProfileId':_0x5671d1[_0x2958('0x5c')]},'raw':!![]})['then'](function(_0x595738){if(_0x595738&&_0x595738[_0x2958('0x5d')]===0x0){return db['UserProfileResource'][_0x2958('0x55')]({'name':_0x16d927['name'],'resourceId':_0x16d927['id'],'type':_0x595738[_0x2958('0x33')],'sectionId':_0x595738['id']},{})[_0x2958('0x2b')](function(){return _0x394c29;});}else{return _0x394c29;}})[_0x2958('0x4d')](function(_0x474f6b){logger[_0x2958('0x31')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x474f6b);throw _0x474f6b;});}return _0x394c29;})['then'](respondWithResult(_0x39cc25,null))[_0x2958('0x4d')](handleError(_0x39cc25,null));};function Extension(_0x3e11eb,_0xfa171d,_0x51bf4c,_0x55676f){this[_0x2958('0x5e')]=_0x2958('0x5f');this[_0x2958('0x60')]=_0x3e11eb;this[_0x2958('0x61')]=_0x51bf4c;this[_0x2958('0x38')]=_0x2958('0x62');this[_0x2958('0x63')]=_0x2958('0x64');this[_0x2958('0x65')]=_0xfa171d;this[_0x2958('0x66')]=_0x55676f;}function createVoicePrefixExtensions(_0x2de03a,_0x2bef16,_0x3cc345){return new BPromise(function(_0x49d190,_0x3a4ad9){var _0x8c7203=new Extension(formatPrefixName(_0x2de03a[_0x2958('0x67')]),0x1,_0x2958('0x68'),_0x2958('0x69'));_0x8c7203[_0x2958('0x6a')]=_0x2de03a['id'];return db[_0x2958('0x57')][_0x2958('0x55')](_0x8c7203,{'transaction':_0x3cc345})[_0x2958('0x2b')](function(_0x4dd3de){var _0x2269e1=_0x4dd3de['get']({'plain':!![]});var _0x196901=_[_0x2958('0x35')](addVoicePrefixExtensions(_0x2de03a,_0x2bef16),function(_0x31a596){_0x31a596['VoiceExtensionId']=_0x2269e1['id'];_0x31a596['VoicePrefixId']=_0x2de03a['id'];return _0x31a596;});return db['VoiceExtension'][_0x2958('0x6b')](_0x196901,{'transaction':_0x3cc345})[_0x2958('0x2b')](function(_0x4c1516){if(!_0x4c1516){return _0x3a4ad9(_0x2958('0x6c'));}else{return _0x49d190(_0x4c1516);}})[_0x2958('0x4d')](function(_0xb2fe28){return _0x3a4ad9(_0xb2fe28);});});;});};function addVoicePrefixExtensions(_0x32a216,_0x13f850){var _0x538298=[];var _0x55da00=formatPrefixName(_0x32a216[_0x2958('0x67')]);_0x538298[_0x2958('0x6d')](new Extension(_0x55da00,0x2,_0x2958('0x6e'),_0x2958('0x6f')+_0x32a216['name']));if(_0x32a216[_0x2958('0x70')]){_0x538298[_0x2958('0x6d')](new Extension(_0x55da00,0x3,_0x2958('0x6e'),_0x2958('0x71')+_0x32a216['callerIdAll']));}else{_0x538298['push'](new Extension(_0x55da00,0x3,'NoOp','No\x20callerid\x20available'));}_0x538298[_0x2958('0x6d')](new Extension(_0x55da00,0x4,_0x2958('0x72'),_0x13f850['context']+','+_0x2958('0x73')+(0x8+_0x32a216[_0x2958('0x33')][_0x2958('0x3f')])+'}'+','+0x1));return _0x538298;}function formatPrefixName(_0x234d7f){var _0x1eefb5='_';for(var _0x41ab26=0x0;_0x41ab26<_0x234d7f['length'];_0x41ab26++){if(_0x234d7f[_0x2958('0x74')](_0x41ab26)=='-'){_0x1eefb5+=_0x234d7f[_0x2958('0x74')](_0x41ab26);}else{_0x1eefb5+='['+_0x234d7f[_0x2958('0x74')](_0x41ab26)+']';}}_0x1eefb5+='.';return _0x1eefb5;}exports['update']=function(_0xd61e21,_0x566123,_0x546721){var _0x584429=_0xd61e21['body'];_0x584429[_0x2958('0x67')]='system-'+_0x584429[_0x2958('0x33')]+'-';return db[_0x2958('0x54')][_0x2958('0x75')](function(_0x41ead9){return db[_0x2958('0x4a')][_0x2958('0x2a')](_0x584429,{'where':{'id':_0x584429['id']},'transaction':_0x41ead9})['then'](function(){return db[_0x2958('0x57')][_0x2958('0x2c')]({'where':{'VoicePrefixId':_0x584429['id']},'transaction':_0x41ead9})[_0x2958('0x2b')](function(){return db[_0x2958('0x57')][_0x2958('0x52')]({'where':{'id':_0x584429[_0x2958('0x58')]},'raw':!![]})[_0x2958('0x2b')](function(_0x3674b3){return createVoicePrefixExtensions(_0x584429,_0x3674b3,_0x41ead9);});});});})[_0x2958('0x2b')](function(){return db[_0x2958('0x4a')][_0x2958('0x76')](_0x584429['id']);})[_0x2958('0x2b')](respondWithResult(_0x566123,null))[_0x2958('0x4d')](handleError(_0x566123,null));};exports[_0x2958('0x77')]=function(_0x1a2cf2,_0x2136fe,_0x19b819){return db[_0x2958('0x4a')][_0x2958('0x52')]({'where':{'id':_0x1a2cf2[_0x2958('0x4f')]['id']}})[_0x2958('0x2b')](handleEntityNotFound(_0x2136fe,null))['then'](function(_0x831f42){if(_0x831f42){return _0x831f42[_0x2958('0x77')](_0x1a2cf2[_0x2958('0x56')][_0x2958('0x78')],_[_0x2958('0x79')](_0x1a2cf2['body'],[_0x2958('0x78'),'id'])||{})[_0x2958('0x7a')](function(_0x214b51){for(var _0x1a9f51=0x0;_0x1a9f51<_0x1a2cf2[_0x2958('0x56')][_0x2958('0x78')][_0x2958('0x3f')];_0x1a9f51+=0x1){socket[_0x2958('0x7b')](_0x2958('0x7c'),{'UserId':Number(_0x1a2cf2[_0x2958('0x56')][_0x2958('0x78')][_0x1a9f51]),'VoicePrefixId':Number(_0x1a2cf2[_0x2958('0x4f')]['id'])});}return _0x214b51;});}})[_0x2958('0x2b')](respondWithResult(_0x2136fe,null))[_0x2958('0x4d')](handleError(_0x2136fe,null));};exports[_0x2958('0x7d')]=function(_0x33e4b5,_0x3c7a19,_0x80a4db){return db[_0x2958('0x4a')][_0x2958('0x52')]({'where':{'id':_0x33e4b5[_0x2958('0x4f')]['id']}})[_0x2958('0x2b')](handleEntityNotFound(_0x3c7a19,null))[_0x2958('0x2b')](function(_0x2a3c34){if(_0x2a3c34){return _0x2a3c34['removeAgents'](_0x33e4b5[_0x2958('0x3b')][_0x2958('0x78')])[_0x2958('0x2b')](function(){if(_[_0x2958('0x7e')](_0x33e4b5[_0x2958('0x3b')][_0x2958('0x78')])){for(var _0x1d0bfd=0x0;_0x1d0bfd<_0x33e4b5[_0x2958('0x3b')][_0x2958('0x78')][_0x2958('0x3f')];_0x1d0bfd+=0x1){socket[_0x2958('0x7b')](_0x2958('0x7f'),{'UserId':Number(_0x33e4b5['query'][_0x2958('0x78')][_0x1d0bfd]),'VoicePrefixId':Number(_0x33e4b5[_0x2958('0x4f')]['id'])});}}else{socket[_0x2958('0x7b')](_0x2958('0x7f'),{'UserId':Number(_0x33e4b5[_0x2958('0x3b')][_0x2958('0x78')]),'VoicePrefixId':Number(_0x33e4b5['params']['id'])});}});}})[_0x2958('0x2b')](respondWithStatusCode(_0x3c7a19,null))[_0x2958('0x4d')](handleError(_0x3c7a19,null));};exports[_0x2958('0x80')]=function(_0xe483b9,_0x2b7e0e,_0x558b10){var _0x158c43={};var _0x5be9e={};var _0x2f3f81;var _0x171717;return db[_0x2958('0x4a')][_0x2958('0x81')]({'where':{'id':_0xe483b9[_0x2958('0x4f')]['id']}})[_0x2958('0x2b')](handleEntityNotFound(_0x2b7e0e,null))[_0x2958('0x2b')](function(_0x4739b0){if(_0x4739b0){_0x2f3f81=_0x4739b0;_0x5be9e[_0x2958('0x3a')]=_['keys'](db[_0x2958('0x82')][_0x2958('0x36')]);_0x5be9e['query']=_['keys'](_0xe483b9[_0x2958('0x3b')]);_0x5be9e[_0x2958('0x44')]=_['intersection'](_0x5be9e[_0x2958('0x3a')],_0x5be9e[_0x2958('0x3b')]);_0x158c43[_0x2958('0x3d')]=_['intersection'](_0x5be9e[_0x2958('0x3a')],qs[_0x2958('0x3e')](_0xe483b9[_0x2958('0x3b')][_0x2958('0x3e')]));_0x158c43[_0x2958('0x3d')]=_0x158c43[_0x2958('0x3d')]['length']?_0x158c43[_0x2958('0x3d')]:_0x5be9e[_0x2958('0x3a')];_0x158c43[_0x2958('0x41')]=qs[_0x2958('0x42')](_0xe483b9['query']['sort']);_0x158c43['where']=qs[_0x2958('0x44')](_['pick'](_0xe483b9[_0x2958('0x3b')],_0x5be9e['filters']));if(_0xe483b9['query'][_0x2958('0x46')]){_0x158c43[_0x2958('0x43')]=_['merge'](_0x158c43[_0x2958('0x43')],{'$or':_[_0x2958('0x35')](_0x158c43[_0x2958('0x3d')],function(_0x2aa634){var _0x37b94a={};_0x37b94a[_0x2aa634]={'$like':'%'+_0xe483b9['query'][_0x2958('0x46')]+'%'};return _0x37b94a;})});}_0x158c43=_[_0x2958('0x48')]({},_0x158c43,_0xe483b9[_0x2958('0x49')]);return _0x2f3f81[_0x2958('0x80')](_0x158c43);}})[_0x2958('0x2b')](function(_0x17b2bf){if(_0x17b2bf){_0x171717=_0x17b2bf[_0x2958('0x3f')];if(!_0xe483b9[_0x2958('0x3b')][_0x2958('0x83')]('nolimit')){_0x158c43[_0x2958('0x23')]=qs[_0x2958('0x23')](_0xe483b9[_0x2958('0x3b')]['limit']);_0x158c43[_0x2958('0x21')]=qs[_0x2958('0x21')](_0xe483b9[_0x2958('0x3b')][_0x2958('0x21')]);}return _0x2f3f81[_0x2958('0x80')](_0x158c43);}})[_0x2958('0x2b')](function(_0xb41929){if(_0xb41929){return _0xb41929?{'count':_0x171717,'rows':_0xb41929}:null;}})[_0x2958('0x2b')](respondWithResult(_0x2b7e0e,null))[_0x2958('0x4d')](handleError(_0x2b7e0e,null));};exports[_0x2958('0x84')]=function(_0x57db70,_0x3077ef,_0x5d9ad0){var _0x57ae87={};var _0x2f279a={};var _0x445e57;var _0x561ecc;return db['VoicePrefix']['findOne']({'where':{'id':_0x57db70[_0x2958('0x4f')]['id']}})[_0x2958('0x2b')](handleEntityNotFound(_0x3077ef,null))['then'](function(_0x3876cb){if(_0x3876cb){_0x445e57=_0x3876cb;_0x2f279a[_0x2958('0x3a')]=_[_0x2958('0x50')](db[_0x2958('0x85')][_0x2958('0x36')]);_0x2f279a[_0x2958('0x3b')]=_[_0x2958('0x50')](_0x57db70['query']);_0x2f279a[_0x2958('0x44')]=_[_0x2958('0x3c')](_0x2f279a[_0x2958('0x3a')],_0x2f279a[_0x2958('0x3b')]);_0x57ae87[_0x2958('0x3d')]=_[_0x2958('0x3c')](_0x2f279a[_0x2958('0x3a')],qs[_0x2958('0x3e')](_0x57db70[_0x2958('0x3b')][_0x2958('0x3e')]));_0x57ae87['attributes']=_0x57ae87['attributes'][_0x2958('0x3f')]?_0x57ae87['attributes']:_0x2f279a[_0x2958('0x3a')];_0x57ae87[_0x2958('0x41')]=qs[_0x2958('0x42')](_0x57db70[_0x2958('0x3b')][_0x2958('0x42')]);_0x57ae87[_0x2958('0x43')]=qs[_0x2958('0x44')](_['pick'](_0x57db70[_0x2958('0x3b')],_0x2f279a[_0x2958('0x44')]));if(_0x57db70[_0x2958('0x3b')][_0x2958('0x46')]){_0x57ae87[_0x2958('0x43')]=_['merge'](_0x57ae87[_0x2958('0x43')],{'$or':_[_0x2958('0x35')](_0x57ae87[_0x2958('0x3d')],function(_0x533243){var _0x12ffd1={};_0x12ffd1[_0x533243]={'$like':'%'+_0x57db70[_0x2958('0x3b')][_0x2958('0x46')]+'%'};return _0x12ffd1;})});}_0x57ae87=_[_0x2958('0x48')]({},_0x57ae87,_0x57db70[_0x2958('0x49')]);return _0x445e57[_0x2958('0x84')](_0x57ae87);}})['then'](function(_0x5f4622){if(_0x5f4622){_0x561ecc=_0x5f4622[_0x2958('0x3f')];if(!_0x57db70[_0x2958('0x3b')][_0x2958('0x83')]('nolimit')){_0x57ae87[_0x2958('0x23')]=qs['limit'](_0x57db70[_0x2958('0x3b')][_0x2958('0x23')]);_0x57ae87[_0x2958('0x21')]=qs['offset'](_0x57db70[_0x2958('0x3b')][_0x2958('0x21')]);}return _0x445e57[_0x2958('0x84')](_0x57ae87);}})[_0x2958('0x2b')](function(_0x49bd35){if(_0x49bd35){return _0x49bd35?{'count':_0x561ecc,'rows':_0x49bd35}:null;}})['then'](respondWithResult(_0x3077ef,null))[_0x2958('0x4d')](handleError(_0x3077ef,null));};exports[_0x2958('0x86')]=function(_0x118318,_0x39d235,_0x3eeedf){var _0x498e07=_0x118318[_0x2958('0x56')][_0x2958('0x78')];var _0x1437a7;return db[_0x2958('0x85')][_0x2958('0x87')]({'where':{'id':_0x498e07},'attributes':['id'],'include':[{'model':db[_0x2958('0x82')],'as':_0x2958('0x88'),'attributes':['id',_0x2958('0x33'),'online','voicePause','interface'],'raw':!![]}]})[_0x2958('0x2b')](function(_0x45fcc5){if(_0x45fcc5){_0x1437a7=_0x45fcc5;var _0x3d4314=_['flatMap'](_0x45fcc5,function(_0x413447){var _0x42c8b0=_0x413447[_0x2958('0x2d')]({'plain':!![]});return _0x42c8b0['Agents'];});return db['VoicePrefix']['find']({'where':{'id':_0x118318[_0x2958('0x4f')]['id']}})[_0x2958('0x2b')](function(_0x36c52a){return db[_0x2958('0x54')][_0x2958('0x75')](function(_0x43b9ec){return _0x36c52a['addTeams'](_0x498e07,{'transaction':_0x43b9ec})[_0x2958('0x2b')](function(){return BPromise[_0x2958('0x89')](_0x1437a7,function(_0x9b8367){return db[_0x2958('0x8a')][_0x2958('0x8b')]({'TeamId':_0x9b8367['id'],'VoicePrefixId':_0x118318[_0x2958('0x4f')]['id']},{'transaction':_0x43b9ec});});})['then'](function(){return BPromise['each'](_0x3d4314,function(_0x38a789){return db[_0x2958('0x8c')][_0x2958('0x8d')]({'where':{'UserId':_0x38a789['id'],'VoicePrefixId':_0x118318[_0x2958('0x4f')]['id']},'transaction':_0x43b9ec});});})[_0x2958('0x2b')](function(){_0x3d4314[_0x2958('0x8e')](function(_0x1ec753){socket[_0x2958('0x7b')]('userVoicePrefix:save',{'UserId':_0x1ec753['id'],'VoicePrefixId':_0x36c52a['id']});});});});});}})[_0x2958('0x2b')](respondWithStatusCode(_0x39d235,null))[_0x2958('0x4d')](handleError(_0x39d235,null));};exports[_0x2958('0x8f')]=function(_0x6f44ca,_0x1ddda5,_0x2f5a39){return db[_0x2958('0x85')][_0x2958('0x87')]({'where':{'id':_0x6f44ca['query'][_0x2958('0x78')]},'attributes':['id'],'include':[{'model':db[_0x2958('0x82')],'as':_0x2958('0x88'),'attributes':['id'],'raw':!![]}]})[_0x2958('0x2b')](handleEntityNotFound(_0x1ddda5,null))[_0x2958('0x2b')](function(_0x1c926e){var _0x245a12=_['map'](_0x1c926e,'id');var _0x270846=[];var _0x1d0d0d=[];var _0xc3b770=squel[_0x2958('0x90')]();_0xc3b770[_0x2958('0x91')]('tq.TeamId')['from']('team_has_voice_prefixes','tq')[_0x2958('0x92')]('user_has_teams','ut',_0x2958('0x93'))[_0x2958('0x43')](_0x2958('0x94'),_0x6f44ca['params']['id']);for(var _0x56c6a3=0x0;_0x56c6a3<_0x1c926e[_0x2958('0x3f')];_0x56c6a3+=0x1){let _0x1fd536=_0x1c926e[_0x56c6a3];for(var _0x3fbe11=0x0;_0x3fbe11<_0x1fd536[_0x2958('0x88')][_0x2958('0x3f')];_0x3fbe11+=0x1){let _0x21c020=_0x1fd536[_0x2958('0x88')][_0x3fbe11];var _0x89b78c=_0xc3b770[_0x2958('0x95')]();_0x89b78c[_0x2958('0x43')](_0x2958('0x96'),_0x21c020['id']);_0x1d0d0d[_0x2958('0x6d')](db[_0x2958('0x54')][_0x2958('0x3b')](_0x89b78c[_0x2958('0x97')](),{'type':db[_0x2958('0x54')][_0x2958('0x98')][_0x2958('0x99')]})[_0x2958('0x2b')](function(_0x729aaf){if(_0x729aaf[_0x2958('0x3f')]===0x1){return _0x21c020['id'];}else{var _0x362837=_['every'](_[_0x2958('0x35')](_0x729aaf,_0x2958('0x9a')),function(_0x33af4f){return _[_0x2958('0x9b')](_0x245a12,_0x33af4f);});if(_0x362837){return _0x21c020['id'];}}}));}}return BPromise['all'](_0x1d0d0d)[_0x2958('0x2b')](function(_0x119ff3){_0x270846=_(_0x270846)['union'](_0x119ff3)['compact']()['value']();return db[_0x2958('0x4a')]['find']({'where':{'id':_0x6f44ca[_0x2958('0x4f')]['id']}})[_0x2958('0x2b')](function(_0x26c52f){return db['sequelize'][_0x2958('0x75')](function(_0x2355a0){return _0x26c52f[_0x2958('0x8f')](_0x6f44ca[_0x2958('0x3b')][_0x2958('0x78')],{'transaction':_0x2355a0})[_0x2958('0x2b')](function(){if(!_[_0x2958('0x9c')](_0x270846)){return _0x26c52f[_0x2958('0x7d')](_0x270846,{'transaction':_0x2355a0});}})['then'](function(){_0x270846['forEach'](function(_0x1c5d40){socket[_0x2958('0x7b')](_0x2958('0x7f'),{'UserId':_0x1c5d40,'VoicePrefixId':_0x26c52f['id']});});});});});});})[_0x2958('0x2b')](respondWithStatusCode(_0x1ddda5,null))[_0x2958('0x4d')](handleError(_0x1ddda5,null));};
\ No newline at end of file
+var _0x32b6=['request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./voicePrefix.socket','sendStatus','status','end','json','undefined','limit','offset','count','set','Content-Range','apply','reject','save','update','destroy','get','VoicePrefixes','UserProfileResource','then','error','stack','name','send','index','VoicePrefix','rawAttributes','fieldName','key','map','keys','query','filters','intersection','model','attributes','fields','length','order','sort','where','pick','filter','type','merge','options','includeAll','include','rows','params','find','catch','describe','create','sequelize','transaction','body','VoiceExtensionId','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','exten','system','priority','appdata','prefix','Voice\x20Prefix','VoicePrefixId','VoiceExtension','bulkCreate','Extensions\x20creation\x20failed','push','Set','CDR(prefix)=','callerIdAll','NoOp','No\x20callerid\x20available','goto','${EXTEN:','charAt','system-','findById','ids','omit','spread','userVoicePrefix:save','removeAgents','isArray','userVoicePrefix:remove','emit','getAgents','findOne','User','nolimit','getTeams','hasOwnProperty','addTeams','Team','findAll','Agents','online','voicePause','interface','each','TeamVoicePrefix','UserVoicePrefix','findOrCreate','forEach','removeTeams','select','from','team_has_voice_prefixes','join','VoicePrefixId\x20=\x20?','ut.UserId\x20=\x20?','toString','QueryTypes','every','TeamId','includes','all','union','compact','isEmpty','eml-format','rimraf','fast-json-patch'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x32b6,0x1d1));var _0x632b=function(_0x537bf6,_0x1ec738){_0x537bf6=_0x537bf6-0x0;var _0x5f8f5=_0x32b6[_0x537bf6];return _0x5f8f5;};'use strict';var emlformat=require(_0x632b('0x0'));var rimraf=require(_0x632b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x632b('0x2'));var rp=require(_0x632b('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x632b('0x4'));var util=require(_0x632b('0x5'));var path=require(_0x632b('0x6'));var sox=require(_0x632b('0x7'));var csv=require(_0x632b('0x8'));var ejs=require(_0x632b('0x9'));var fs=require('fs');var fs_extra=require(_0x632b('0xa'));var _=require(_0x632b('0xb'));var squel=require(_0x632b('0xc'));var crypto=require(_0x632b('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x632b('0xe'));var toCsv=require(_0x632b('0x8'));var querystring=require(_0x632b('0xf'));var Papa=require(_0x632b('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x632b('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x632b('0x12'))(_0x632b('0x13'));var utils=require(_0x632b('0x14'));var config=require(_0x632b('0x15'));var licenseUtil=require(_0x632b('0x16'));var db=require(_0x632b('0x17'))['db'];config[_0x632b('0x18')]=_[_0x632b('0x19')](config[_0x632b('0x18')],{'host':'localhost','port':0x18eb});var socket=require(_0x632b('0x1a'))(new Redis(config[_0x632b('0x18')]));require(_0x632b('0x1b'))['register'](socket);function respondWithStatusCode(_0x721883,_0x1a3a60){_0x1a3a60=_0x1a3a60||0xcc;return function(_0x108249){if(_0x108249){return _0x721883[_0x632b('0x1c')](_0x1a3a60);}return _0x721883[_0x632b('0x1d')](_0x1a3a60)[_0x632b('0x1e')]();};}function respondWithResult(_0x4efe39,_0x17ddc5){_0x17ddc5=_0x17ddc5||0xc8;return function(_0x52f353){if(_0x52f353){return _0x4efe39['status'](_0x17ddc5)[_0x632b('0x1f')](_0x52f353);}};}function respondWithFilteredResult(_0x5afa1e,_0x2c8340){return function(_0x3bb27f){if(_0x3bb27f){var _0x28c472=typeof _0x2c8340['offset']===_0x632b('0x20')&&typeof _0x2c8340[_0x632b('0x21')]===_0x632b('0x20');var _0x3683e4=_0x3bb27f['count'];var _0x472e34=_0x28c472?0x0:_0x2c8340[_0x632b('0x22')];var _0x4f377f=_0x28c472?_0x3bb27f[_0x632b('0x23')]:_0x2c8340['offset']+_0x2c8340['limit'];var _0x1b1092;if(_0x4f377f>=_0x3683e4){_0x4f377f=_0x3683e4;_0x1b1092=0xc8;}else{_0x1b1092=0xce;}_0x5afa1e['status'](_0x1b1092);return _0x5afa1e[_0x632b('0x24')](_0x632b('0x25'),_0x472e34+'-'+_0x4f377f+'/'+_0x3683e4)[_0x632b('0x1f')](_0x3bb27f);}return null;};}function patchUpdates(_0x540bfb){return function(_0x10fc32){try{jsonpatch[_0x632b('0x26')](_0x10fc32,_0x540bfb,!![]);}catch(_0x59d83a){return BPromise[_0x632b('0x27')](_0x59d83a);}return _0x10fc32[_0x632b('0x28')]();};}function saveUpdates(_0x30ffb9,_0x1e448c){return function(_0x45d017){if(_0x45d017){return _0x45d017[_0x632b('0x29')](_0x30ffb9)['then'](function(_0x5e7b20){return _0x5e7b20;});}return null;};}function removeEntity(_0x11fe61,_0x4d3a70){return function(_0x4ebd26){if(_0x4ebd26){return _0x4ebd26[_0x632b('0x2a')]()['then'](function(){var _0x273e89=_0x4ebd26[_0x632b('0x2b')]({'plain':!![]});var _0x29d9aa=_0x632b('0x2c');return db[_0x632b('0x2d')][_0x632b('0x2a')]({'where':{'type':_0x29d9aa,'resourceId':_0x273e89['id']}})[_0x632b('0x2e')](function(){return _0x4ebd26;});})[_0x632b('0x2e')](function(){_0x11fe61[_0x632b('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1bb484,_0x35348e){return function(_0x1819fa){if(!_0x1819fa){_0x1bb484[_0x632b('0x1c')](0x194);}return _0x1819fa;};}function handleError(_0x17a5ba,_0x2a34fa){_0x2a34fa=_0x2a34fa||0x1f4;return function(_0x3c5dc9){logger[_0x632b('0x2f')](_0x3c5dc9[_0x632b('0x30')]);if(_0x3c5dc9[_0x632b('0x31')]){delete _0x3c5dc9[_0x632b('0x31')];}_0x17a5ba[_0x632b('0x1d')](_0x2a34fa)[_0x632b('0x32')](_0x3c5dc9);};}exports[_0x632b('0x33')]=function(_0x227497,_0x3dff99){var _0x18efab={},_0x36936d={},_0x3f3dc4={'count':0x0,'rows':[]};var _0x12f00=_['map'](db[_0x632b('0x34')][_0x632b('0x35')],function(_0x397f36){return{'name':_0x397f36[_0x632b('0x36')],'type':_0x397f36['type'][_0x632b('0x37')]};});_0x36936d['model']=_[_0x632b('0x38')](_0x12f00,_0x632b('0x31'));_0x36936d['query']=_[_0x632b('0x39')](_0x227497[_0x632b('0x3a')]);_0x36936d[_0x632b('0x3b')]=_[_0x632b('0x3c')](_0x36936d[_0x632b('0x3d')],_0x36936d[_0x632b('0x3a')]);_0x18efab[_0x632b('0x3e')]=_[_0x632b('0x3c')](_0x36936d['model'],qs['fields'](_0x227497[_0x632b('0x3a')][_0x632b('0x3f')]));_0x18efab[_0x632b('0x3e')]=_0x18efab[_0x632b('0x3e')][_0x632b('0x40')]?_0x18efab[_0x632b('0x3e')]:_0x36936d[_0x632b('0x3d')];if(!_0x227497[_0x632b('0x3a')]['hasOwnProperty']('nolimit')){_0x18efab[_0x632b('0x21')]=qs['limit'](_0x227497[_0x632b('0x3a')][_0x632b('0x21')]);_0x18efab[_0x632b('0x22')]=qs[_0x632b('0x22')](_0x227497[_0x632b('0x3a')][_0x632b('0x22')]);}_0x18efab[_0x632b('0x41')]=qs[_0x632b('0x42')](_0x227497[_0x632b('0x3a')][_0x632b('0x42')]);_0x18efab[_0x632b('0x43')]=qs[_0x632b('0x3b')](_[_0x632b('0x44')](_0x227497[_0x632b('0x3a')],_0x36936d[_0x632b('0x3b')]),_0x12f00);if(_0x227497[_0x632b('0x3a')][_0x632b('0x45')]){_0x18efab['where']=_['merge'](_0x18efab['where'],{'$or':_['map'](_0x12f00,function(_0x57f099){if(_0x57f099[_0x632b('0x46')]!=='VIRTUAL'){var _0x5529cb={};_0x5529cb[_0x57f099['name']]={'$like':'%'+_0x227497[_0x632b('0x3a')][_0x632b('0x45')]+'%'};return _0x5529cb;}})});}_0x18efab=_[_0x632b('0x47')]({},_0x18efab,_0x227497[_0x632b('0x48')]);var _0x5a1017={'where':_0x18efab[_0x632b('0x43')]};return db[_0x632b('0x34')][_0x632b('0x23')](_0x5a1017)['then'](function(_0x15bb30){_0x3f3dc4[_0x632b('0x23')]=_0x15bb30;if(_0x227497[_0x632b('0x3a')][_0x632b('0x49')]){_0x18efab[_0x632b('0x4a')]=[{'all':!![]}];}return db[_0x632b('0x34')]['findAll'](_0x18efab);})[_0x632b('0x2e')](function(_0x2b90c8){_0x3f3dc4[_0x632b('0x4b')]=_0x2b90c8;return _0x3f3dc4;})[_0x632b('0x2e')](respondWithFilteredResult(_0x3dff99,_0x18efab))['catch'](handleError(_0x3dff99,null));};exports['show']=function(_0x39b17c,_0x26b35b){var _0x70ddc9={'raw':![],'where':{'id':_0x39b17c[_0x632b('0x4c')]['id']}},_0x3566e7={};_0x3566e7[_0x632b('0x3d')]=_['keys'](db[_0x632b('0x34')][_0x632b('0x35')]);_0x3566e7[_0x632b('0x3a')]=_[_0x632b('0x39')](_0x39b17c[_0x632b('0x3a')]);_0x3566e7[_0x632b('0x3b')]=_[_0x632b('0x3c')](_0x3566e7[_0x632b('0x3d')],_0x3566e7['query']);_0x70ddc9[_0x632b('0x3e')]=_['intersection'](_0x3566e7[_0x632b('0x3d')],qs['fields'](_0x39b17c[_0x632b('0x3a')][_0x632b('0x3f')]));_0x70ddc9[_0x632b('0x3e')]=_0x70ddc9[_0x632b('0x3e')][_0x632b('0x40')]?_0x70ddc9['attributes']:_0x3566e7[_0x632b('0x3d')];if(_0x39b17c[_0x632b('0x3a')][_0x632b('0x49')]){_0x70ddc9['include']=[{'all':!![]}];}_0x70ddc9=_[_0x632b('0x47')]({},_0x70ddc9,_0x39b17c[_0x632b('0x48')]);return db[_0x632b('0x34')][_0x632b('0x4d')](_0x70ddc9)[_0x632b('0x2e')](handleEntityNotFound(_0x26b35b,null))['then'](respondWithResult(_0x26b35b,null))[_0x632b('0x4e')](handleError(_0x26b35b,null));};exports['destroy']=function(_0x33da2b,_0x369cdc){return db[_0x632b('0x34')][_0x632b('0x4d')]({'where':{'id':_0x33da2b[_0x632b('0x4c')]['id']}})['then'](handleEntityNotFound(_0x369cdc,null))['then'](removeEntity(_0x369cdc,null))[_0x632b('0x4e')](handleError(_0x369cdc,null));};exports[_0x632b('0x4f')]=function(_0x3ad524,_0xdc6242){return db[_0x632b('0x34')][_0x632b('0x4f')]()['then'](respondWithResult(_0xdc6242,null))[_0x632b('0x4e')](handleError(_0xdc6242,null));};exports[_0x632b('0x50')]=function(_0x3ff81c,_0x4dc021){var _0x33e428;return db[_0x632b('0x51')][_0x632b('0x52')](function(_0x1a79fa){return db['VoicePrefix'][_0x632b('0x50')](_0x3ff81c[_0x632b('0x53')],{'transaction':_0x1a79fa})[_0x632b('0x2e')](function(_0x92884f){_0x33e428=_0x92884f[_0x632b('0x2b')]({'plain':!![]});return db['VoiceExtension'][_0x632b('0x4d')]({'where':{'id':_0x33e428[_0x632b('0x54')]},'raw':!![]})[_0x632b('0x2e')](function(_0x36a7c5){return createVoicePrefixExtensions(_0x33e428,_0x36a7c5,_0x1a79fa);});});})[_0x632b('0x2e')](function(){var _0x5d1d05=_0x3ff81c[_0x632b('0x55')][_0x632b('0x2b')]({'plain':!![]});if(!_0x5d1d05)throw new Error(_0x632b('0x56'));if(_0x5d1d05[_0x632b('0x57')]===_0x632b('0x55')){var _0x9accea=_0x33e428;return db[_0x632b('0x58')][_0x632b('0x4d')]({'where':{'name':_0x632b('0x2c'),'userProfileId':_0x5d1d05[_0x632b('0x59')]},'raw':!![]})[_0x632b('0x2e')](function(_0x5ca000){if(_0x5ca000&&_0x5ca000[_0x632b('0x5a')]===0x0){return db[_0x632b('0x2d')][_0x632b('0x50')]({'name':_0x9accea[_0x632b('0x31')],'resourceId':_0x9accea['id'],'type':_0x5ca000[_0x632b('0x31')],'sectionId':_0x5ca000['id']},{})['then'](function(){return _0x33e428;});}else{return _0x33e428;}})[_0x632b('0x4e')](function(_0x2239ec){logger[_0x632b('0x2f')](_0x632b('0x5b'),_0x2239ec);throw _0x2239ec;});}return _0x33e428;})[_0x632b('0x2e')](respondWithResult(_0x4dc021,null))[_0x632b('0x4e')](handleError(_0x4dc021,null));};function Extension(_0x3e14d0,_0x4ffa35,_0x14ee44,_0x4b7307){this[_0x632b('0x5c')]='from-sip';this[_0x632b('0x5d')]=_0x3e14d0;this['app']=_0x14ee44;this[_0x632b('0x46')]=_0x632b('0x5e');this['description']='Voice\x20Prefix\x20Extension';this[_0x632b('0x5f')]=_0x4ffa35;this[_0x632b('0x60')]=_0x4b7307;}function createVoicePrefixExtensions(_0x1618b3,_0xbbaf46,_0x52eed9){return new BPromise(function(_0x1420d9,_0x20672b){var _0x5abf95=new Extension(formatPrefixName(_0x1618b3[_0x632b('0x61')]),0x1,'NoOp',_0x632b('0x62'));_0x5abf95[_0x632b('0x63')]=_0x1618b3['id'];return db['VoiceExtension'][_0x632b('0x50')](_0x5abf95,{'transaction':_0x52eed9})[_0x632b('0x2e')](function(_0x32cc27){var _0x1bf6f4=_0x32cc27['get']({'plain':!![]});var _0x2711d5=_[_0x632b('0x38')](addVoicePrefixExtensions(_0x1618b3,_0xbbaf46),function(_0x3d1ac3){_0x3d1ac3[_0x632b('0x54')]=_0x1bf6f4['id'];_0x3d1ac3['VoicePrefixId']=_0x1618b3['id'];return _0x3d1ac3;});return db[_0x632b('0x64')][_0x632b('0x65')](_0x2711d5,{'transaction':_0x52eed9})[_0x632b('0x2e')](function(_0x3fd888){if(!_0x3fd888){return _0x20672b(_0x632b('0x66'));}else{return _0x1420d9(_0x3fd888);}})[_0x632b('0x4e')](function(_0x5c614e){return _0x20672b(_0x5c614e);});});;});};function addVoicePrefixExtensions(_0x132223,_0x83d8f9){var _0x307132=[];var _0x5b0c6d=formatPrefixName(_0x132223['prefix']);_0x307132[_0x632b('0x67')](new Extension(_0x5b0c6d,0x2,_0x632b('0x68'),_0x632b('0x69')+_0x132223[_0x632b('0x31')]));if(_0x132223[_0x632b('0x6a')]){_0x307132[_0x632b('0x67')](new Extension(_0x5b0c6d,0x3,_0x632b('0x68'),'PREFIX-CALLERIDALL='+_0x132223[_0x632b('0x6a')]));}else{_0x307132[_0x632b('0x67')](new Extension(_0x5b0c6d,0x3,_0x632b('0x6b'),_0x632b('0x6c')));}_0x307132[_0x632b('0x67')](new Extension(_0x5b0c6d,0x4,_0x632b('0x6d'),_0x83d8f9['context']+','+_0x632b('0x6e')+(0x8+_0x132223[_0x632b('0x31')][_0x632b('0x40')])+'}'+','+0x1));return _0x307132;}function formatPrefixName(_0x14b55f){var _0x51cb45='_';for(var _0x3a3f80=0x0;_0x3a3f80<_0x14b55f[_0x632b('0x40')];_0x3a3f80++){if(_0x14b55f[_0x632b('0x6f')](_0x3a3f80)=='-'){_0x51cb45+=_0x14b55f['charAt'](_0x3a3f80);}else{_0x51cb45+='['+_0x14b55f[_0x632b('0x6f')](_0x3a3f80)+']';}}_0x51cb45+='.';return _0x51cb45;}exports[_0x632b('0x29')]=function(_0x3aa6ca,_0x26f891,_0x225d81){var _0x4599fc=_0x3aa6ca['body'];_0x4599fc[_0x632b('0x61')]=_0x632b('0x70')+_0x4599fc['name']+'-';return db['sequelize']['transaction'](function(_0x3605b6){return db[_0x632b('0x34')][_0x632b('0x29')](_0x4599fc,{'where':{'id':_0x4599fc['id']},'transaction':_0x3605b6})[_0x632b('0x2e')](function(){return db[_0x632b('0x64')]['destroy']({'where':{'VoicePrefixId':_0x4599fc['id']},'transaction':_0x3605b6})['then'](function(){return db[_0x632b('0x64')][_0x632b('0x4d')]({'where':{'id':_0x4599fc['VoiceExtensionId']},'raw':!![]})['then'](function(_0x11cc11){return createVoicePrefixExtensions(_0x4599fc,_0x11cc11,_0x3605b6);});});});})[_0x632b('0x2e')](function(){return db['VoicePrefix'][_0x632b('0x71')](_0x4599fc['id']);})[_0x632b('0x2e')](respondWithResult(_0x26f891,null))[_0x632b('0x4e')](handleError(_0x26f891,null));};exports['addAgents']=function(_0x495a99,_0x563cfa,_0x2ff526){return db[_0x632b('0x34')][_0x632b('0x4d')]({'where':{'id':_0x495a99['params']['id']}})['then'](handleEntityNotFound(_0x563cfa,null))['then'](function(_0x38190c){if(_0x38190c){return _0x38190c['addAgents'](_0x495a99[_0x632b('0x53')][_0x632b('0x72')],_[_0x632b('0x73')](_0x495a99[_0x632b('0x53')],[_0x632b('0x72'),'id'])||{})[_0x632b('0x74')](function(_0xa87c08){for(var _0x360796=0x0;_0x360796<_0x495a99[_0x632b('0x53')][_0x632b('0x72')]['length'];_0x360796+=0x1){socket['emit'](_0x632b('0x75'),{'UserId':Number(_0x495a99['body'][_0x632b('0x72')][_0x360796]),'VoicePrefixId':Number(_0x495a99[_0x632b('0x4c')]['id'])});}return _0xa87c08;});}})[_0x632b('0x2e')](respondWithResult(_0x563cfa,null))[_0x632b('0x4e')](handleError(_0x563cfa,null));};exports['removeAgents']=function(_0x2a3d8f,_0x4febe2,_0x57edcb){return db['VoicePrefix'][_0x632b('0x4d')]({'where':{'id':_0x2a3d8f['params']['id']}})[_0x632b('0x2e')](handleEntityNotFound(_0x4febe2,null))[_0x632b('0x2e')](function(_0x48ccd3){if(_0x48ccd3){return _0x48ccd3[_0x632b('0x76')](_0x2a3d8f[_0x632b('0x3a')]['ids'])['then'](function(){if(_[_0x632b('0x77')](_0x2a3d8f[_0x632b('0x3a')][_0x632b('0x72')])){for(var _0xff7d0b=0x0;_0xff7d0b<_0x2a3d8f[_0x632b('0x3a')][_0x632b('0x72')][_0x632b('0x40')];_0xff7d0b+=0x1){socket['emit'](_0x632b('0x78'),{'UserId':Number(_0x2a3d8f[_0x632b('0x3a')]['ids'][_0xff7d0b]),'VoicePrefixId':Number(_0x2a3d8f['params']['id'])});}}else{socket[_0x632b('0x79')]('userVoicePrefix:remove',{'UserId':Number(_0x2a3d8f['query'][_0x632b('0x72')]),'VoicePrefixId':Number(_0x2a3d8f['params']['id'])});}});}})[_0x632b('0x2e')](respondWithStatusCode(_0x4febe2,null))['catch'](handleError(_0x4febe2,null));};exports[_0x632b('0x7a')]=function(_0x590e68,_0x4393e9,_0x3669d9){var _0x57a2a6={};var _0x10c901={};var _0x64f45a;var _0x1e07da;return db[_0x632b('0x34')][_0x632b('0x7b')]({'where':{'id':_0x590e68[_0x632b('0x4c')]['id']}})[_0x632b('0x2e')](handleEntityNotFound(_0x4393e9,null))[_0x632b('0x2e')](function(_0x5a90f7){if(_0x5a90f7){_0x64f45a=_0x5a90f7;_0x10c901['model']=_[_0x632b('0x39')](db[_0x632b('0x7c')][_0x632b('0x35')]);_0x10c901[_0x632b('0x3a')]=_[_0x632b('0x39')](_0x590e68[_0x632b('0x3a')]);_0x10c901['filters']=_[_0x632b('0x3c')](_0x10c901['model'],_0x10c901[_0x632b('0x3a')]);_0x57a2a6['attributes']=_[_0x632b('0x3c')](_0x10c901[_0x632b('0x3d')],qs[_0x632b('0x3f')](_0x590e68[_0x632b('0x3a')]['fields']));_0x57a2a6[_0x632b('0x3e')]=_0x57a2a6[_0x632b('0x3e')]['length']?_0x57a2a6[_0x632b('0x3e')]:_0x10c901[_0x632b('0x3d')];_0x57a2a6[_0x632b('0x41')]=qs[_0x632b('0x42')](_0x590e68[_0x632b('0x3a')]['sort']);_0x57a2a6[_0x632b('0x43')]=qs[_0x632b('0x3b')](_['pick'](_0x590e68[_0x632b('0x3a')],_0x10c901['filters']));if(_0x590e68[_0x632b('0x3a')]['filter']){_0x57a2a6[_0x632b('0x43')]=_['merge'](_0x57a2a6[_0x632b('0x43')],{'$or':_[_0x632b('0x38')](_0x57a2a6[_0x632b('0x3e')],function(_0x1f5d21){var _0x405b3c={};_0x405b3c[_0x1f5d21]={'$like':'%'+_0x590e68['query'][_0x632b('0x45')]+'%'};return _0x405b3c;})});}_0x57a2a6=_[_0x632b('0x47')]({},_0x57a2a6,_0x590e68['options']);return _0x64f45a[_0x632b('0x7a')](_0x57a2a6);}})['then'](function(_0x1bbb23){if(_0x1bbb23){_0x1e07da=_0x1bbb23['length'];if(!_0x590e68[_0x632b('0x3a')]['hasOwnProperty'](_0x632b('0x7d'))){_0x57a2a6[_0x632b('0x21')]=qs[_0x632b('0x21')](_0x590e68['query'][_0x632b('0x21')]);_0x57a2a6[_0x632b('0x22')]=qs[_0x632b('0x22')](_0x590e68[_0x632b('0x3a')][_0x632b('0x22')]);}return _0x64f45a[_0x632b('0x7a')](_0x57a2a6);}})[_0x632b('0x2e')](function(_0x31eee9){if(_0x31eee9){return _0x31eee9?{'count':_0x1e07da,'rows':_0x31eee9}:null;}})[_0x632b('0x2e')](respondWithResult(_0x4393e9,null))[_0x632b('0x4e')](handleError(_0x4393e9,null));};exports[_0x632b('0x7e')]=function(_0xf1a293,_0x1fcb2a,_0x55c36d){var _0x23385d={};var _0x376112={};var _0x1e6905;var _0x3293be;return db[_0x632b('0x34')][_0x632b('0x7b')]({'where':{'id':_0xf1a293[_0x632b('0x4c')]['id']}})[_0x632b('0x2e')](handleEntityNotFound(_0x1fcb2a,null))[_0x632b('0x2e')](function(_0x40fb13){if(_0x40fb13){_0x1e6905=_0x40fb13;_0x376112[_0x632b('0x3d')]=_[_0x632b('0x39')](db['Team'][_0x632b('0x35')]);_0x376112[_0x632b('0x3a')]=_[_0x632b('0x39')](_0xf1a293[_0x632b('0x3a')]);_0x376112[_0x632b('0x3b')]=_[_0x632b('0x3c')](_0x376112[_0x632b('0x3d')],_0x376112[_0x632b('0x3a')]);_0x23385d['attributes']=_[_0x632b('0x3c')](_0x376112[_0x632b('0x3d')],qs[_0x632b('0x3f')](_0xf1a293[_0x632b('0x3a')][_0x632b('0x3f')]));_0x23385d[_0x632b('0x3e')]=_0x23385d[_0x632b('0x3e')][_0x632b('0x40')]?_0x23385d[_0x632b('0x3e')]:_0x376112['model'];_0x23385d[_0x632b('0x41')]=qs[_0x632b('0x42')](_0xf1a293[_0x632b('0x3a')][_0x632b('0x42')]);_0x23385d[_0x632b('0x43')]=qs[_0x632b('0x3b')](_['pick'](_0xf1a293[_0x632b('0x3a')],_0x376112[_0x632b('0x3b')]));if(_0xf1a293[_0x632b('0x3a')]['filter']){_0x23385d['where']=_[_0x632b('0x47')](_0x23385d[_0x632b('0x43')],{'$or':_[_0x632b('0x38')](_0x23385d[_0x632b('0x3e')],function(_0x16c798){var _0x384439={};_0x384439[_0x16c798]={'$like':'%'+_0xf1a293[_0x632b('0x3a')]['filter']+'%'};return _0x384439;})});}_0x23385d=_[_0x632b('0x47')]({},_0x23385d,_0xf1a293['options']);return _0x1e6905[_0x632b('0x7e')](_0x23385d);}})['then'](function(_0x4d3bb7){if(_0x4d3bb7){_0x3293be=_0x4d3bb7[_0x632b('0x40')];if(!_0xf1a293[_0x632b('0x3a')][_0x632b('0x7f')]('nolimit')){_0x23385d['limit']=qs[_0x632b('0x21')](_0xf1a293[_0x632b('0x3a')][_0x632b('0x21')]);_0x23385d['offset']=qs['offset'](_0xf1a293[_0x632b('0x3a')][_0x632b('0x22')]);}return _0x1e6905[_0x632b('0x7e')](_0x23385d);}})[_0x632b('0x2e')](function(_0x66cbf3){if(_0x66cbf3){return _0x66cbf3?{'count':_0x3293be,'rows':_0x66cbf3}:null;}})[_0x632b('0x2e')](respondWithResult(_0x1fcb2a,null))['catch'](handleError(_0x1fcb2a,null));};exports[_0x632b('0x80')]=function(_0x352ba8,_0x3b7be7,_0x32facd){var _0x366643=_0x352ba8[_0x632b('0x53')]['ids'];var _0x5db842;return db[_0x632b('0x81')][_0x632b('0x82')]({'where':{'id':_0x366643},'attributes':['id'],'include':[{'model':db['User'],'as':_0x632b('0x83'),'attributes':['id',_0x632b('0x31'),_0x632b('0x84'),_0x632b('0x85'),_0x632b('0x86')],'raw':!![]}]})[_0x632b('0x2e')](function(_0x17bfa2){if(_0x17bfa2){_0x5db842=_0x17bfa2;var _0x28b626=_['flatMap'](_0x17bfa2,function(_0x4ce406){var _0x1b274d=_0x4ce406[_0x632b('0x2b')]({'plain':!![]});return _0x1b274d['Agents'];});return db[_0x632b('0x34')][_0x632b('0x4d')]({'where':{'id':_0x352ba8[_0x632b('0x4c')]['id']}})[_0x632b('0x2e')](function(_0x36564e){return db['sequelize']['transaction'](function(_0x824140){return _0x36564e[_0x632b('0x80')](_0x366643,{'transaction':_0x824140})[_0x632b('0x2e')](function(){return BPromise[_0x632b('0x87')](_0x5db842,function(_0x214851){return db[_0x632b('0x88')]['upsert']({'TeamId':_0x214851['id'],'VoicePrefixId':_0x352ba8[_0x632b('0x4c')]['id']},{'transaction':_0x824140});});})['then'](function(){return BPromise[_0x632b('0x87')](_0x28b626,function(_0x26e1a9){return db[_0x632b('0x89')][_0x632b('0x8a')]({'where':{'UserId':_0x26e1a9['id'],'VoicePrefixId':_0x352ba8[_0x632b('0x4c')]['id']},'transaction':_0x824140});});})[_0x632b('0x2e')](function(){_0x28b626[_0x632b('0x8b')](function(_0x19d11e){socket[_0x632b('0x79')](_0x632b('0x75'),{'UserId':_0x19d11e['id'],'VoicePrefixId':_0x36564e['id']});});});});});}})['then'](respondWithStatusCode(_0x3b7be7,null))[_0x632b('0x4e')](handleError(_0x3b7be7,null));};exports[_0x632b('0x8c')]=function(_0x36244e,_0x1cc52f,_0x5cd2b7){return db[_0x632b('0x81')][_0x632b('0x82')]({'where':{'id':_0x36244e['query']['ids']},'attributes':['id'],'include':[{'model':db['User'],'as':_0x632b('0x83'),'attributes':['id'],'raw':!![]}]})[_0x632b('0x2e')](handleEntityNotFound(_0x1cc52f,null))[_0x632b('0x2e')](function(_0x2a45f3){var _0x56d205=_[_0x632b('0x38')](_0x2a45f3,'id');var _0x392b6b=[];var _0x1cfc20=[];var _0x5bd1bb=squel[_0x632b('0x8d')]();_0x5bd1bb['field']('tq.TeamId')[_0x632b('0x8e')](_0x632b('0x8f'),'tq')[_0x632b('0x90')]('user_has_teams','ut','ut.TeamId\x20=\x20tq.TeamId')['where'](_0x632b('0x91'),_0x36244e[_0x632b('0x4c')]['id']);for(var _0x2d0712=0x0;_0x2d0712<_0x2a45f3['length'];_0x2d0712+=0x1){let _0x1f9cb4=_0x2a45f3[_0x2d0712];for(var _0x90b25c=0x0;_0x90b25c<_0x1f9cb4[_0x632b('0x83')][_0x632b('0x40')];_0x90b25c+=0x1){let _0x163ad2=_0x1f9cb4['Agents'][_0x90b25c];var _0x21af7a=_0x5bd1bb['clone']();_0x21af7a['where'](_0x632b('0x92'),_0x163ad2['id']);_0x1cfc20[_0x632b('0x67')](db['sequelize']['query'](_0x21af7a[_0x632b('0x93')](),{'type':db[_0x632b('0x51')][_0x632b('0x94')]['SELECT']})[_0x632b('0x2e')](function(_0x53c0c4){if(_0x53c0c4['length']===0x1){return _0x163ad2['id'];}else{var _0x112ecc=_[_0x632b('0x95')](_[_0x632b('0x38')](_0x53c0c4,_0x632b('0x96')),function(_0x4e5523){return _[_0x632b('0x97')](_0x56d205,_0x4e5523);});if(_0x112ecc){return _0x163ad2['id'];}}}));}}return BPromise[_0x632b('0x98')](_0x1cfc20)[_0x632b('0x2e')](function(_0x350a1b){_0x392b6b=_(_0x392b6b)[_0x632b('0x99')](_0x350a1b)[_0x632b('0x9a')]()['value']();return db[_0x632b('0x34')]['find']({'where':{'id':_0x36244e[_0x632b('0x4c')]['id']}})['then'](function(_0x460dce){return db[_0x632b('0x51')][_0x632b('0x52')](function(_0x2c88a){return _0x460dce[_0x632b('0x8c')](_0x36244e[_0x632b('0x3a')][_0x632b('0x72')],{'transaction':_0x2c88a})[_0x632b('0x2e')](function(){if(!_[_0x632b('0x9b')](_0x392b6b)){return _0x460dce[_0x632b('0x76')](_0x392b6b,{'transaction':_0x2c88a});}})[_0x632b('0x2e')](function(){_0x392b6b[_0x632b('0x8b')](function(_0x3784d2){socket[_0x632b('0x79')](_0x632b('0x78'),{'UserId':_0x3784d2,'VoicePrefixId':_0x460dce['id']});});});});});});})['then'](respondWithStatusCode(_0x1cc52f,null))[_0x632b('0x4e')](handleError(_0x1cc52f,null));};
\ No newline at end of file
index 392aeab..9a3c42f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc44=['remove','emit','hasOwnProperty','exports','events','../../mysqldb','VoicePrefix','update'];(function(_0x168b64,_0x3bd2a8){var _0x298845=function(_0x5ecf2e){while(--_0x5ecf2e){_0x168b64['push'](_0x168b64['shift']());}};_0x298845(++_0x3bd2a8);}(_0xfc44,0x13c));var _0x4fc4=function(_0x4717d4,_0x1c8e1e){_0x4717d4=_0x4717d4-0x0;var _0x11edeb=_0xfc44[_0x4717d4];return _0x11edeb;};'use strict';var EventEmitter=require(_0x4fc4('0x0'));var VoicePrefix=require(_0x4fc4('0x1'))['db'][_0x4fc4('0x2')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x4fc4('0x3'),'afterDestroy':_0x4fc4('0x4')};function emitEvent(_0x1da771){return function(_0x3141c4,_0x3287b8,_0x40b490){VoicePrefixEvents[_0x4fc4('0x5')](_0x1da771+':'+_0x3141c4['id'],_0x3141c4);VoicePrefixEvents[_0x4fc4('0x5')](_0x1da771,_0x3141c4);_0x40b490(null);};}for(var e in events){if(events[_0x4fc4('0x6')](e)){var event=events[e];VoicePrefix['hook'](e,emitEvent(event));}}module[_0x4fc4('0x7')]=VoicePrefixEvents;
\ No newline at end of file
+var _0x6f5c=['hook','exports','events','save','remove','emit','hasOwnProperty'];(function(_0x153eaf,_0x3a2505){var _0x286e4f=function(_0x4d5b36){while(--_0x4d5b36){_0x153eaf['push'](_0x153eaf['shift']());}};_0x286e4f(++_0x3a2505);}(_0x6f5c,0x17c));var _0xc6f5=function(_0x4027af,_0x31054f){_0x4027af=_0x4027af-0x0;var _0x286cf2=_0x6f5c[_0x4027af];return _0x286cf2;};'use strict';var EventEmitter=require(_0xc6f5('0x0'));var VoicePrefix=require('../../mysqldb')['db']['VoicePrefix'];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xc6f5('0x1'),'afterUpdate':'update','afterDestroy':_0xc6f5('0x2')};function emitEvent(_0x2b89b3){return function(_0x5c470c,_0x354946,_0x32f184){VoicePrefixEvents[_0xc6f5('0x3')](_0x2b89b3+':'+_0x5c470c['id'],_0x5c470c);VoicePrefixEvents['emit'](_0x2b89b3,_0x5c470c);_0x32f184(null);};}for(var e in events){if(events[_0xc6f5('0x4')](e)){var event=events[e];VoicePrefix[_0xc6f5('0x5')](e,emitEvent(event));}}module[_0xc6f5('0x6')]=VoicePrefixEvents;
\ No newline at end of file
index f746f7b..a453190 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f89=['bluebird','path','rimraf','../../config/environment','./voicePrefix.attributes','exports','define','voice_prefixes','lodash','util','../../config/logger','api'];(function(_0x139a3c,_0x4fc883){var _0x2b375b=function(_0x525dbf){while(--_0x525dbf){_0x139a3c['push'](_0x139a3c['shift']());}};_0x2b375b(++_0x4fc883);}(_0x7f89,0x17c));var _0x97f8=function(_0x598b78,_0xf4ee7e){_0x598b78=_0x598b78-0x0;var _0x6392fa=_0x7f89[_0x598b78];return _0x6392fa;};'use strict';var _=require(_0x97f8('0x0'));var util=require(_0x97f8('0x1'));var logger=require(_0x97f8('0x2'))(_0x97f8('0x3'));var moment=require('moment');var BPromise=require(_0x97f8('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x97f8('0x5'));var rimraf=require(_0x97f8('0x6'));var config=require(_0x97f8('0x7'));var attributes=require(_0x97f8('0x8'));module[_0x97f8('0x9')]=function(_0xaf90bf,_0x28392d){return _0xaf90bf[_0x97f8('0xa')]('VoicePrefix',attributes,{'tableName':_0x97f8('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x981a=['util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','./voicePrefix.attributes','define','voice_prefixes','lodash'];(function(_0x291fa6,_0x482111){var _0x1f1052=function(_0x40fcbb){while(--_0x40fcbb){_0x291fa6['push'](_0x291fa6['shift']());}};_0x1f1052(++_0x482111);}(_0x981a,0x83));var _0xa981=function(_0x40f0fc,_0x20134e){_0x40f0fc=_0x40f0fc-0x0;var _0x5ae843=_0x981a[_0x40f0fc];return _0x5ae843;};'use strict';var _=require(_0xa981('0x0'));var util=require(_0xa981('0x1'));var logger=require(_0xa981('0x2'))('api');var moment=require(_0xa981('0x3'));var BPromise=require(_0xa981('0x4'));var rp=require(_0xa981('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa981('0x6'));var config=require(_0xa981('0x7'));var attributes=require(_0xa981('0x8'));module['exports']=function(_0x520ab7,_0x1325c8){return _0x520ab7[_0xa981('0x9')]('VoicePrefix',attributes,{'tableName':_0xa981('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 62b126c..a7df0a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cff=['stringify','error','code','message','info','result','lodash','util','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./voicePrefix.socket','register','request','then','VoicePrefix,\x20%s,\x20%s','request\x20sent'];(function(_0x75c542,_0x51d3bf){var _0x38e6e0=function(_0x3e06ff){while(--_0x3e06ff){_0x75c542['push'](_0x75c542['shift']());}};_0x38e6e0(++_0x51d3bf);}(_0x4cff,0x14a));var _0xf4cf=function(_0x4fef01,_0x2abe19){_0x4fef01=_0x4fef01-0x0;var _0x2ebdea=_0x4cff[_0x4fef01];return _0x2ebdea;};'use strict';var _=require(_0xf4cf('0x0'));var util=require(_0xf4cf('0x1'));var moment=require('moment');var BPromise=require(_0xf4cf('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf4cf('0x3'));var db=require(_0xf4cf('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xf4cf('0x5'))(_0xf4cf('0x6'));var config=require(_0xf4cf('0x7'));var jayson=require(_0xf4cf('0x8'));var client=jayson[_0xf4cf('0x9')][_0xf4cf('0xa')]({'port':0x232a});config['redis']=_[_0xf4cf('0xb')](config[_0xf4cf('0xc')],{'host':_0xf4cf('0xd'),'port':0x18eb});var socket=require(_0xf4cf('0xe'))(new Redis(config['redis']));require(_0xf4cf('0xf'))[_0xf4cf('0x10')](socket);function respondWithRpcPromise(_0x10dd9e,_0x16a6f1,_0x520c03){return new BPromise(function(_0x3c40ab,_0xec3042){return client[_0xf4cf('0x11')](_0x10dd9e,_0x520c03)[_0xf4cf('0x12')](function(_0x50f939){logger['info'](_0xf4cf('0x13'),_0x16a6f1,'request\x20sent');logger['debug']('VoicePrefix,\x20%s,\x20%s,\x20%s',_0x16a6f1,_0xf4cf('0x14'),JSON[_0xf4cf('0x15')](_0x50f939));if(_0x50f939[_0xf4cf('0x16')]){if(_0x50f939[_0xf4cf('0x16')][_0xf4cf('0x17')]===0x1f4){logger[_0xf4cf('0x16')](_0xf4cf('0x13'),_0x16a6f1,_0x50f939[_0xf4cf('0x16')][_0xf4cf('0x18')]);return _0xec3042(_0x50f939[_0xf4cf('0x16')]['message']);}logger[_0xf4cf('0x16')](_0xf4cf('0x13'),_0x16a6f1,_0x50f939[_0xf4cf('0x16')][_0xf4cf('0x18')]);return _0x3c40ab(_0x50f939[_0xf4cf('0x16')][_0xf4cf('0x18')]);}else{logger[_0xf4cf('0x19')]('VoicePrefix,\x20%s,\x20%s',_0x16a6f1,_0xf4cf('0x14'));_0x3c40ab(_0x50f939[_0xf4cf('0x1a')][_0xf4cf('0x18')]);}})['catch'](function(_0x23f181){logger['error'](_0xf4cf('0x13'),_0x16a6f1,_0x23f181);_0xec3042(_0x23f181);});});}
\ No newline at end of file
+var _0x9261=['register','request','then','info','VoicePrefix,\x20%s,\x20%s','request\x20sent','debug','VoicePrefix,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','defaults','redis','socket.io-emitter','./voicePrefix.socket'];(function(_0x53a02d,_0x1d10c8){var _0x118f81=function(_0x5a8b28){while(--_0x5a8b28){_0x53a02d['push'](_0x53a02d['shift']());}};_0x118f81(++_0x1d10c8);}(_0x9261,0x1de));var _0x1926=function(_0x838813,_0x448f0f){_0x838813=_0x838813-0x0;var _0x2bd32d=_0x9261[_0x838813];return _0x2bd32d;};'use strict';var _=require(_0x1926('0x0'));var util=require(_0x1926('0x1'));var moment=require('moment');var BPromise=require(_0x1926('0x2'));var rs=require(_0x1926('0x3'));var fs=require('fs');var Redis=require(_0x1926('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x1926('0x5'));var logger=require(_0x1926('0x6'))(_0x1926('0x7'));var config=require(_0x1926('0x8'));var jayson=require(_0x1926('0x9'));var client=jayson['client'][_0x1926('0xa')]({'port':0x232a});config['redis']=_[_0x1926('0xb')](config[_0x1926('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x1926('0xd'))(new Redis(config[_0x1926('0xc')]));require(_0x1926('0xe'))[_0x1926('0xf')](socket);function respondWithRpcPromise(_0xe63b09,_0x3231ba,_0x2e03e1){return new BPromise(function(_0x2a5ee5,_0x284dd6){return client[_0x1926('0x10')](_0xe63b09,_0x2e03e1)[_0x1926('0x11')](function(_0xdf0c50){logger[_0x1926('0x12')](_0x1926('0x13'),_0x3231ba,_0x1926('0x14'));logger[_0x1926('0x15')](_0x1926('0x16'),_0x3231ba,_0x1926('0x14'),JSON[_0x1926('0x17')](_0xdf0c50));if(_0xdf0c50[_0x1926('0x18')]){if(_0xdf0c50[_0x1926('0x18')][_0x1926('0x19')]===0x1f4){logger[_0x1926('0x18')](_0x1926('0x13'),_0x3231ba,_0xdf0c50[_0x1926('0x18')][_0x1926('0x1a')]);return _0x284dd6(_0xdf0c50['error'][_0x1926('0x1a')]);}logger[_0x1926('0x18')](_0x1926('0x13'),_0x3231ba,_0xdf0c50['error'][_0x1926('0x1a')]);return _0x2a5ee5(_0xdf0c50[_0x1926('0x18')]['message']);}else{logger[_0x1926('0x12')](_0x1926('0x13'),_0x3231ba,_0x1926('0x14'));_0x2a5ee5(_0xdf0c50[_0x1926('0x1b')][_0x1926('0x1a')]);}})[_0x1926('0x1c')](function(_0x441b18){logger[_0x1926('0x18')](_0x1926('0x13'),_0x3231ba,_0x441b18);_0x284dd6(_0x441b18);});});}
\ No newline at end of file
index 78c000c..f6c1d19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4746=['length','voicePrefix:','./voicePrefix.events','save','update','emit','register'];(function(_0x8e7772,_0x9d77b0){var _0x408200=function(_0x1c61b6){while(--_0x1c61b6){_0x8e7772['push'](_0x8e7772['shift']());}};_0x408200(++_0x9d77b0);}(_0x4746,0xc6));var _0x6474=function(_0x12c39e,_0x3f158a){_0x12c39e=_0x12c39e-0x0;var _0x372933=_0x4746[_0x12c39e];return _0x372933;};'use strict';var VoicePrefixEvents=require(_0x6474('0x0'));var events=[_0x6474('0x1'),'remove',_0x6474('0x2')];function createListener(_0x59b95a,_0xd115f7){return function(_0x244bc5){_0xd115f7[_0x6474('0x3')](_0x59b95a,_0x244bc5);};}function removeListener(_0x156374,_0x1314f4){return function(){VoicePrefixEvents['removeListener'](_0x156374,_0x1314f4);};}exports[_0x6474('0x4')]=function(_0x2bcf7c){for(var _0x4cadd7=0x0,_0x433af9=events[_0x6474('0x5')];_0x4cadd7<_0x433af9;_0x4cadd7++){var _0xcd065e=events[_0x4cadd7];var _0xec3cda=createListener(_0x6474('0x6')+_0xcd065e,_0x2bcf7c);VoicePrefixEvents['on'](_0xcd065e,_0xec3cda);}};
\ No newline at end of file
+var _0x4bd1=['removeListener','register','length','voicePrefix:','save','update','emit'];(function(_0x125ff8,_0x41925f){var _0x2d9ef=function(_0x4ef34c){while(--_0x4ef34c){_0x125ff8['push'](_0x125ff8['shift']());}};_0x2d9ef(++_0x41925f);}(_0x4bd1,0x90));var _0x14bd=function(_0x4320ce,_0x49f5f5){_0x4320ce=_0x4320ce-0x0;var _0x537dae=_0x4bd1[_0x4320ce];return _0x537dae;};'use strict';var VoicePrefixEvents=require('./voicePrefix.events');var events=[_0x14bd('0x0'),'remove',_0x14bd('0x1')];function createListener(_0xa0d344,_0x50d79a){return function(_0x17e7b6){_0x50d79a[_0x14bd('0x2')](_0xa0d344,_0x17e7b6);};}function removeListener(_0x51fcdb,_0x4080e1){return function(){VoicePrefixEvents[_0x14bd('0x3')](_0x51fcdb,_0x4080e1);};}exports[_0x14bd('0x4')]=function(_0x31b468){for(var _0x5c4680=0x0,_0x35806e=events[_0x14bd('0x5')];_0x5c4680<_0x35806e;_0x5c4680++){var _0xb06dbf=events[_0x5c4680];var _0x2e9a2f=createListener(_0x14bd('0x6')+_0xb06dbf,_0x31b468);VoicePrefixEvents['on'](_0xb06dbf,_0x2e9a2f);}};
\ No newline at end of file
index edc9765..5e1a235 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(_0xdb1da0,_0x5813b2){var _0x53065e=function(_0x24f83b){while(--_0x24f83b){_0xdb1da0['push'](_0xdb1da0['shift']());}};_0x53065e(++_0x5813b2);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0xa9e0[_0x4243a3];return _0x1b2a33;};'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(_0x9729d7,_0x1b79a8){var _0x3c4ac6=function(_0x401ba6){while(--_0x401ba6){_0x9729d7['push'](_0x9729d7['shift']());}};_0x3c4ac6(++_0x1b79a8);}(_0xb10b,0x12a));var _0xbb10=function(_0x32faa6,_0x231c1f){_0x32faa6=_0x32faa6-0x0;var _0x1526dd=_0xb10b[_0x32faa6];return _0x1526dd;};'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 8d13582..71a8855 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe44=['Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always','onlyIfOpen','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','#RecallMe\x20Timeout\x20(min:1)','Active/Disactive\x20Recall\x20In\x20Queue','DESC','ASC','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','#Machine\x20Retry\x20(min:1,\x20max:999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','exports','STRING','name','ENUM','outbound','inbound','leastrecent','rrmemory','linear','rrordered','ringall','strategy','type','getDataValue','booked','roundrobin','progressive','predictive','power','INTEGER','yes','all','once','TEXT','periodic_announce','split','setDataValue','join','joinempty','leavewhenempty','BOOLEAN','wrapuptime','preview','Dial\x20Method.','UNSIGNED','Max\x209999\x20channels,\x200\x20means\x20unlimited.','FLOAT','Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).','agentBusyFactor','dropRate','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','#Congestion\x20Retry\x20(min:1,\x20max:999)'];(function(_0x1c1bbb,_0x38a0b8){var _0x2e667c=function(_0x154180){while(--_0x154180){_0x1c1bbb['push'](_0x1c1bbb['shift']());}};_0x2e667c(++_0x38a0b8);}(_0xbe44,0x1e0));var _0x4be4=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0xbe44[_0x2c91e9];return _0x13f0ff;};'use strict';var Sequelize=require('sequelize');module[_0x4be4('0x0')]={'name':{'type':Sequelize[_0x4be4('0x1')],'allowNull':![],'unique':_0x4be4('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x4be4('0x3')]('inbound',_0x4be4('0x4')),'allowNull':![],'defaultValue':_0x4be4('0x5')},'musiconhold':{'type':Sequelize[_0x4be4('0x1')],'defaultValue':'default'},'announce':{'type':Sequelize['STRING'],'defaultValue':''},'strategy':{'type':Sequelize['ENUM']('rr','ringall',_0x4be4('0x6'),'fewestcalls','random',_0x4be4('0x7'),_0x4be4('0x8'),'wrandom',_0x4be4('0x9')),'allowNull':![],'defaultValue':_0x4be4('0xa'),'set':function(_0x315020){this['setDataValue'](_0x4be4('0xb'),_0x315020?_0x315020:'rrmemory');},'get':function(){var _0x4f9f55=this['getDataValue'](_0x4be4('0xc'));var _0x516854=this[_0x4be4('0xd')]('dialMethod');var _0x311aa9=this[_0x4be4('0xd')](_0x4be4('0xb'));if(_0x4f9f55==='inbound'){return _0x311aa9;}if(_0x516854===_0x4be4('0xe')&&_0x311aa9===_0x4be4('0x7')||_0x516854==='booked'&&_0x311aa9===_0x4be4('0xf')){return _0x311aa9;}if(_0x516854===_0x4be4('0x10')||_0x516854===_0x4be4('0x11')||_0x516854===_0x4be4('0x12')){return _0x311aa9;}return null;}},'servicelevel':{'type':Sequelize[_0x4be4('0x13')](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0x4be4('0x1')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0x4be4('0x13')](0xb)},'timeout':{'type':Sequelize[_0x4be4('0x13')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0x4be4('0x1')]},'weight':{'type':Sequelize[_0x4be4('0x13')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0x4be4('0x13')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize['ENUM'](_0x4be4('0x14'),'no'),'defaultValue':_0x4be4('0x14')},'autopause':{'type':Sequelize[_0x4be4('0x3')](_0x4be4('0x14'),'no',_0x4be4('0x15')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0x4be4('0x13')](0xb)},'autopausebusy':{'type':Sequelize[_0x4be4('0x3')]('yes','no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0x4be4('0x3')](_0x4be4('0x14'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0x4be4('0x13')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0x4be4('0x3')](_0x4be4('0x14'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0x4be4('0x3')]('yes','no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0x4be4('0x3')](_0x4be4('0x14'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0x4be4('0x3')](_0x4be4('0x14'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize['STRING'],'allowNull':!![]},'membergosub':{'type':Sequelize['STRING'],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0x4be4('0x13')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0x4be4('0x13')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize[_0x4be4('0x13')](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0x4be4('0x3')]('yes','no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0x4be4('0x3')](_0x4be4('0x14'),'no'),'defaultValue':_0x4be4('0x14')},'announce_holdtime':{'type':Sequelize[_0x4be4('0x3')]('yes','no',_0x4be4('0x16')),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0x4be4('0x1')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0x4be4('0x3')](_0x4be4('0x14'),'no')},'announce_position_limit':{'type':Sequelize[_0x4be4('0x13')](0xb)},'announce_round_seconds':{'type':Sequelize['ENUM']('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0x4be4('0x1')],'defaultValue':''},'monitor_type':{'type':Sequelize['STRING']},'queue_youarenext':{'type':Sequelize[_0x4be4('0x1')],'defaultValue':null},'queue_thereare':{'type':Sequelize['STRING'],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0x4be4('0x1')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0x4be4('0x1')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0x4be4('0x1')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize['STRING'],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0x4be4('0x1')],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0x4be4('0x1')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0x4be4('0x1')]},'queue_quantity1':{'type':Sequelize[_0x4be4('0x1')]},'queue_quantity2':{'type':Sequelize[_0x4be4('0x1')]},'queue_periodic_announce':{'type':Sequelize['STRING']},'queue_less_than':{'type':Sequelize[_0x4be4('0x1')]},'periodic_announce':{'type':Sequelize[_0x4be4('0x17')],'set':function(_0x33fe51){this['setDataValue'](_0x4be4('0x18'),_0x33fe51?_0x33fe51['join'](','):[]);},'get':function(){return this[_0x4be4('0xd')](_0x4be4('0x18'))?this['getDataValue'](_0x4be4('0x18'))[_0x4be4('0x19')](','):[];}},'joinempty':{'type':Sequelize[_0x4be4('0x1')],'defaultValue':_0x4be4('0x14'),'set':function(_0xa344d3){this[_0x4be4('0x1a')]('joinempty',_0xa344d3?_0xa344d3[_0x4be4('0x1b')](','):undefined);},'get':function(){return this[_0x4be4('0xd')](_0x4be4('0x1c'))?this[_0x4be4('0xd')](_0x4be4('0x1c'))[_0x4be4('0x19')](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0x4be4('0x1')],'defaultValue':'no','set':function(_0x53a92a){this[_0x4be4('0x1a')]('leavewhenempty',_0x53a92a?_0x53a92a['join'](','):undefined);},'get':function(){return this['getDataValue'](_0x4be4('0x1d'))?this[_0x4be4('0xd')](_0x4be4('0x1d'))[_0x4be4('0x19')](','):undefined;}},'reportholdtime':{'type':Sequelize[_0x4be4('0x3')](_0x4be4('0x14'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0x4be4('0x3')]('yes','no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize['ENUM'](_0x4be4('0x14'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x4be4('0x1')]},'acw':{'type':Sequelize[_0x4be4('0x1e')],'defaultValue':0x0,'set':function(_0x549e72){this['setDataValue']('acw',_0x549e72);if(_0x549e72){if(this[_0x4be4('0xd')](_0x4be4('0x1f'))<0x2){this['setDataValue'](_0x4be4('0x1f'),0x2);}}}},'acwTimeout':{'type':Sequelize[_0x4be4('0x13')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0x4be4('0x1e')],'defaultValue':0x0,'comment':'Active/Disactive\x20Campaign'},'dialMethod':{'type':Sequelize[_0x4be4('0x3')](_0x4be4('0x20'),_0x4be4('0x10'),_0x4be4('0x12'),_0x4be4('0x11'),_0x4be4('0xe')),'defaultValue':_0x4be4('0x10'),'comment':_0x4be4('0x21')},'dialLimitChannel':{'type':Sequelize[_0x4be4('0x13')](0x4)[_0x4be4('0x22')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x4be4('0x23')},'dialLimitQueue':{'type':Sequelize[_0x4be4('0x13')](0x4)['UNSIGNED'],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':'Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.'},'dialPowerLevel':{'type':Sequelize[_0x4be4('0x24')](0x2)[_0x4be4('0x22')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0x4be4('0x25')},'dialPredictiveOptimization':{'type':Sequelize[_0x4be4('0x3')](_0x4be4('0x26'),_0x4be4('0x27')),'defaultValue':_0x4be4('0x27'),'comment':'Only\x20for\x20predictive\x20method.'},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0x4be4('0x24')](0x2)[_0x4be4('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':'Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)'},'dialPredictiveInterval':{'type':Sequelize[_0x4be4('0x13')](0x3)[_0x4be4('0x22')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0x4be4('0x28')},'dialOriginateCallerIdName':{'type':Sequelize[_0x4be4('0x1')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x4be4('0x1')]},'dialOriginateTimeout':{'type':Sequelize[_0x4be4('0x13')](0x3)[_0x4be4('0x22')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x4be4('0x29')},'dialQueueOptions':{'type':Sequelize[_0x4be4('0x1')],'defaultValue':_0x4be4('0x2a'),'comment':_0x4be4('0x2b')},'dialQueueTimeout':{'type':Sequelize[_0x4be4('0x13')](0x3)[_0x4be4('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialQueueProject':{'type':Sequelize[_0x4be4('0x1')],'comment':'AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)'},'dialCongestionMaxRetry':{'type':Sequelize[_0x4be4('0x13')](0x3)[_0x4be4('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x4be4('0x2c')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x4be4('0x13')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x4be4('0x2d')},'dialBusyMaxRetry':{'type':Sequelize[_0x4be4('0x13')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x4be4('0x2e')},'dialBusyRetryFrequency':{'type':Sequelize[_0x4be4('0x13')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x4be4('0x2f')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x4be4('0x13')](0x3)[_0x4be4('0x22')],'defaultValue':0x3,'comment':_0x4be4('0x30')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x4be4('0x13')](0x5)[_0x4be4('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x4be4('0x31')},'dialGlobalMaxRetry':{'type':Sequelize[_0x4be4('0x13')](0x3)[_0x4be4('0x22')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x4be4('0x32')},'dialTimezone':{'type':Sequelize[_0x4be4('0x1')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize['STRING'],'defaultValue':_0x4be4('0x33')},'dialPrefix':{'type':Sequelize[_0x4be4('0x1')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0x4be4('0x3')](_0x4be4('0x34'),'never',_0x4be4('0x35')),'defaultValue':_0x4be4('0x34')},'dialAMDActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':'Active/Disactive\x20AMD'},'dialAMDInitialSilence':{'type':Sequelize[_0x4be4('0x13')](0x9)['UNSIGNED'],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x4be4('0x36')},'dialAMDGreeting':{'type':Sequelize[_0x4be4('0x13')](0x9)['UNSIGNED'],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x4be4('0x37')},'dialAMDAfterGreetingSilence':{'type':Sequelize['INTEGER'](0x9)[_0x4be4('0x22')],'defaultValue':0x320,'validate':{'min':0x0},'comment':'#AMD\x20After\x20Greeting\x20Silence'},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x4be4('0x13')](0x9)[_0x4be4('0x22')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x4be4('0x38')},'dialAMDMinWordLength':{'type':Sequelize[_0x4be4('0x13')](0x9)['UNSIGNED'],'defaultValue':0x64,'validate':{'min':0x0},'comment':'#AMD\x20Min\x20Word\x20Length'},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x4be4('0x13')](0x9)['UNSIGNED'],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x4be4('0x39')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x4be4('0x13')](0x9)[_0x4be4('0x22')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x4be4('0x3a')},'dialAMDSilenceThreshold':{'type':Sequelize['INTEGER'](0x5)[_0x4be4('0x22')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x4be4('0x3b')},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x4be4('0x3c')},'dialRecallMeTimeout':{'type':Sequelize[_0x4be4('0x13')](0x5)[_0x4be4('0x22')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0x4be4('0x3d')},'dialRecallInQueue':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x4be4('0x3e')},'dialOrderByScheduledAt':{'type':Sequelize[_0x4be4('0x3')](_0x4be4('0x3f'),_0x4be4('0x40')),'defaultValue':_0x4be4('0x3f')},'dialQueueProject2':{'type':Sequelize[_0x4be4('0x1')],'comment':'AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)'},'dialAgiAfterHangupClient':{'type':Sequelize[_0x4be4('0x1e')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0x4be4('0x1e')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize['INTEGER'](0x3)[_0x4be4('0x22')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Random\x20Last\x20Digit\x20(min:1,\x20max:15)'},'dialCutDigit':{'type':Sequelize[_0x4be4('0x13')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Cut\x20Digit\x20(min:1,\x20max:15)'},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x4be4('0x13')](0x3)[_0x4be4('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x4be4('0x41')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x4be4('0x13')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x4be4('0x42')},'dialDropMaxRetry':{'type':Sequelize[_0x4be4('0x13')](0x3)[_0x4be4('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x4be4('0x43')},'dialDropRetryFrequency':{'type':Sequelize[_0x4be4('0x13')](0x5)[_0x4be4('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAbandonedMaxRetry':{'type':Sequelize[_0x4be4('0x13')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x4be4('0x44')},'dialAbandonedRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x4be4('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialMachineMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x4be4('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x4be4('0x45')},'dialMachineRetryFrequency':{'type':Sequelize[_0x4be4('0x13')](0x5)[_0x4be4('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x4be4('0x13')](0x3)[_0x4be4('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x4be4('0x46')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x4be4('0x13')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'mandatoryDispositionPauseId':{'type':Sequelize[_0x4be4('0x13')],'allowNull':!![],'comment':_0x4be4('0x47')},'mandatoryDisposition':{'type':Sequelize[_0x4be4('0x1e')],'defaultValue':![],'comment':_0x4be4('0x48'),'set':function(_0x407722){if(!_0x407722)this['setDataValue'](_0x4be4('0x49'),null);this[_0x4be4('0x1a')](_0x4be4('0x4a'),_0x407722);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0x4be4('0x13')](0x3)[_0x4be4('0x22')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0x4be4('0x13')](0x3)['UNSIGNED'],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}},'dialPreviewAutoRecallMe':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'callAdditionalPhoneAfterMin':{'type':Sequelize[_0x4be4('0x13')](0x3)[_0x4be4('0x22')],'defaultValue':0x4},'dialPreviewRecallmeReminder':{'type':Sequelize[_0x4be4('0x1e')],'defaultValue':![]}};
\ No newline at end of file
+var _0x8e35=['#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always','never','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','DESC','ASC','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','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)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Machine\x20Retry\x20(min:1,\x20max:999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','mandatoryDispositionPauseId','mandatoryDisposition','exports','STRING','inbound','outbound','default','ENUM','ringall','fewestcalls','random','wrandom','strategy','rrmemory','getDataValue','type','booked','progressive','predictive','power','INTEGER','yes','all','once','setDataValue','periodic_announce','join','split','joinempty','leavewhenempty','BOOLEAN','acw','wrapuptime','Active/Disactive\x20Campaign','Dial\x20Method.','Max\x209999\x20channels,\x200\x20means\x20unlimited.','UNSIGNED','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)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'];(function(_0x431c33,_0x5b78e0){var _0x5bfa0e=function(_0x4432d7){while(--_0x4432d7){_0x431c33['push'](_0x431c33['shift']());}};_0x5bfa0e(++_0x5b78e0);}(_0x8e35,0x76));var _0x58e3=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x8e35[_0x432682];return _0x463d05;};'use strict';var Sequelize=require('sequelize');module[_0x58e3('0x0')]={'name':{'type':Sequelize[_0x58e3('0x1')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize['ENUM'](_0x58e3('0x2'),_0x58e3('0x3')),'allowNull':![],'defaultValue':'inbound'},'musiconhold':{'type':Sequelize[_0x58e3('0x1')],'defaultValue':_0x58e3('0x4')},'announce':{'type':Sequelize[_0x58e3('0x1')],'defaultValue':''},'strategy':{'type':Sequelize[_0x58e3('0x5')]('rr',_0x58e3('0x6'),'leastrecent',_0x58e3('0x7'),_0x58e3('0x8'),'rrmemory','linear',_0x58e3('0x9'),'rrordered'),'allowNull':![],'defaultValue':_0x58e3('0x6'),'set':function(_0x322b26){this['setDataValue'](_0x58e3('0xa'),_0x322b26?_0x322b26:_0x58e3('0xb'));},'get':function(){var _0x2366c8=this[_0x58e3('0xc')](_0x58e3('0xd'));var _0x27d251=this[_0x58e3('0xc')]('dialMethod');var _0xbcee0f=this['getDataValue']('strategy');if(_0x2366c8===_0x58e3('0x2')){return _0xbcee0f;}if(_0x27d251===_0x58e3('0xe')&&_0xbcee0f===_0x58e3('0xb')||_0x27d251==='booked'&&_0xbcee0f==='roundrobin'){return _0xbcee0f;}if(_0x27d251===_0x58e3('0xf')||_0x27d251===_0x58e3('0x10')||_0x27d251===_0x58e3('0x11')){return _0xbcee0f;}return null;}},'servicelevel':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'context':{'type':Sequelize['STRING'],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0x58e3('0x12')](0xb)},'timeout':{'type':Sequelize[_0x58e3('0x12')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0x58e3('0x1')]},'weight':{'type':Sequelize[_0x58e3('0x12')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0x58e3('0x5')](_0x58e3('0x13'),'no'),'defaultValue':_0x58e3('0x13')},'autopause':{'type':Sequelize[_0x58e3('0x5')]('yes','no',_0x58e3('0x14')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0x58e3('0x12')](0xb)},'autopausebusy':{'type':Sequelize[_0x58e3('0x5')](_0x58e3('0x13'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0x58e3('0x5')](_0x58e3('0x13'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0x58e3('0x12')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0x58e3('0x5')](_0x58e3('0x13'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0x58e3('0x5')](_0x58e3('0x13'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize['ENUM'](_0x58e3('0x13'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0x58e3('0x1')],'allowNull':!![]},'membergosub':{'type':Sequelize[_0x58e3('0x1')],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0x58e3('0x12')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0x58e3('0x5')](_0x58e3('0x13'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize['ENUM'](_0x58e3('0x13'),'no'),'defaultValue':_0x58e3('0x13')},'announce_holdtime':{'type':Sequelize[_0x58e3('0x5')](_0x58e3('0x13'),'no',_0x58e3('0x15')),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0x58e3('0x1')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0x58e3('0x5')](_0x58e3('0x13'),'no')},'announce_position_limit':{'type':Sequelize[_0x58e3('0x12')](0xb)},'announce_round_seconds':{'type':Sequelize[_0x58e3('0x5')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize['STRING'],'defaultValue':''},'monitor_type':{'type':Sequelize['STRING']},'queue_youarenext':{'type':Sequelize[_0x58e3('0x1')],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0x58e3('0x1')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0x58e3('0x1')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0x58e3('0x1')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0x58e3('0x1')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0x58e3('0x1')],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0x58e3('0x1')],'defaultValue':null},'queue_thankyou':{'type':Sequelize['STRING'],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0x58e3('0x1')]},'queue_quantity1':{'type':Sequelize[_0x58e3('0x1')]},'queue_quantity2':{'type':Sequelize['STRING']},'queue_periodic_announce':{'type':Sequelize[_0x58e3('0x1')]},'queue_less_than':{'type':Sequelize['STRING']},'periodic_announce':{'type':Sequelize['TEXT'],'set':function(_0xbf400d){this[_0x58e3('0x16')](_0x58e3('0x17'),_0xbf400d?_0xbf400d[_0x58e3('0x18')](','):[]);},'get':function(){return this['getDataValue']('periodic_announce')?this[_0x58e3('0xc')]('periodic_announce')[_0x58e3('0x19')](','):[];}},'joinempty':{'type':Sequelize[_0x58e3('0x1')],'defaultValue':'yes','set':function(_0x993428){this[_0x58e3('0x16')](_0x58e3('0x1a'),_0x993428?_0x993428[_0x58e3('0x18')](','):undefined);},'get':function(){return this['getDataValue'](_0x58e3('0x1a'))?this[_0x58e3('0xc')](_0x58e3('0x1a'))[_0x58e3('0x19')](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0x58e3('0x1')],'defaultValue':'no','set':function(_0xb6c427){this[_0x58e3('0x16')](_0x58e3('0x1b'),_0xb6c427?_0xb6c427[_0x58e3('0x18')](','):undefined);},'get':function(){return this[_0x58e3('0xc')]('leavewhenempty')?this['getDataValue'](_0x58e3('0x1b'))[_0x58e3('0x19')](','):undefined;}},'reportholdtime':{'type':Sequelize['ENUM'](_0x58e3('0x13'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0x58e3('0x5')](_0x58e3('0x13'),'no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0x58e3('0x12')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0x58e3('0x5')]('yes','no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0x58e3('0x1')]},'description':{'type':Sequelize[_0x58e3('0x1')]},'acw':{'type':Sequelize[_0x58e3('0x1c')],'defaultValue':0x0,'set':function(_0x27a4d6){this[_0x58e3('0x16')](_0x58e3('0x1d'),_0x27a4d6);if(_0x27a4d6){if(this['getDataValue'](_0x58e3('0x1e'))<0x2){this[_0x58e3('0x16')](_0x58e3('0x1e'),0x2);}}}},'acwTimeout':{'type':Sequelize[_0x58e3('0x12')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0x58e3('0x1c')],'defaultValue':0x0,'comment':_0x58e3('0x1f')},'dialMethod':{'type':Sequelize['ENUM']('preview',_0x58e3('0xf'),_0x58e3('0x11'),_0x58e3('0x10'),_0x58e3('0xe')),'defaultValue':'progressive','comment':_0x58e3('0x20')},'dialLimitChannel':{'type':Sequelize[_0x58e3('0x12')](0x4)['UNSIGNED'],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x58e3('0x21')},'dialLimitQueue':{'type':Sequelize[_0x58e3('0x12')](0x4)[_0x58e3('0x22')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':'Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.'},'dialPowerLevel':{'type':Sequelize[_0x58e3('0x23')](0x2)[_0x58e3('0x22')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0x58e3('0x24')},'dialPredictiveOptimization':{'type':Sequelize['ENUM'](_0x58e3('0x25'),_0x58e3('0x26')),'defaultValue':'dropRate','comment':_0x58e3('0x27')},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0x58e3('0x23')](0x2)[_0x58e3('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0x58e3('0x28')},'dialPredictiveInterval':{'type':Sequelize[_0x58e3('0x12')](0x3)['UNSIGNED'],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0x58e3('0x29')},'dialOriginateCallerIdName':{'type':Sequelize[_0x58e3('0x1')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x58e3('0x1')]},'dialOriginateTimeout':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x58e3('0x2a')},'dialQueueOptions':{'type':Sequelize[_0x58e3('0x1')],'defaultValue':_0x58e3('0x2b'),'comment':_0x58e3('0x2c')},'dialQueueTimeout':{'type':Sequelize['INTEGER'](0x3)[_0x58e3('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x58e3('0x2d')},'dialQueueProject':{'type':Sequelize[_0x58e3('0x1')],'comment':'AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)'},'dialCongestionMaxRetry':{'type':Sequelize[_0x58e3('0x12')](0x3)[_0x58e3('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x58e3('0x2e')},'dialCongestionRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x58e3('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x58e3('0x2f')},'dialBusyMaxRetry':{'type':Sequelize[_0x58e3('0x12')](0x3)[_0x58e3('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x58e3('0x30')},'dialBusyRetryFrequency':{'type':Sequelize[_0x58e3('0x12')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x58e3('0x31')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x58e3('0x12')](0x3)[_0x58e3('0x22')],'defaultValue':0x3,'comment':_0x58e3('0x32')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x58e3('0x12')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x58e3('0x33')},'dialGlobalMaxRetry':{'type':Sequelize[_0x58e3('0x12')](0x3)[_0x58e3('0x22')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x58e3('0x34')},'dialTimezone':{'type':Sequelize[_0x58e3('0x1')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize['STRING'],'defaultValue':_0x58e3('0x35')},'dialPrefix':{'type':Sequelize['STRING'],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0x58e3('0x5')](_0x58e3('0x36'),_0x58e3('0x37'),_0x58e3('0x38')),'defaultValue':_0x58e3('0x36')},'dialAMDActive':{'type':Sequelize[_0x58e3('0x1c')],'defaultValue':0x0,'comment':_0x58e3('0x39')},'dialAMDInitialSilence':{'type':Sequelize[_0x58e3('0x12')](0x9)[_0x58e3('0x22')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x58e3('0x3a')},'dialAMDGreeting':{'type':Sequelize[_0x58e3('0x12')](0x9)[_0x58e3('0x22')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x58e3('0x3b')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x58e3('0x12')](0x9)[_0x58e3('0x22')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x58e3('0x3c')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x58e3('0x12')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x58e3('0x3d')},'dialAMDMinWordLength':{'type':Sequelize['INTEGER'](0x9)[_0x58e3('0x22')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x58e3('0x3e')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x58e3('0x12')](0x9)[_0x58e3('0x22')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x58e3('0x3f')},'dialAMDMaximumNumberOfWords':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x58e3('0x40')},'dialAMDSilenceThreshold':{'type':Sequelize['INTEGER'](0x5)[_0x58e3('0x22')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x58e3('0x41')},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)[_0x58e3('0x22')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x58e3('0x42')},'dialRecallMeTimeout':{'type':Sequelize['INTEGER'](0x5)[_0x58e3('0x22')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':'#RecallMe\x20Timeout\x20(min:1)'},'dialRecallInQueue':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':'Active/Disactive\x20Recall\x20In\x20Queue'},'dialOrderByScheduledAt':{'type':Sequelize[_0x58e3('0x5')](_0x58e3('0x43'),_0x58e3('0x44')),'defaultValue':_0x58e3('0x43')},'dialQueueProject2':{'type':Sequelize[_0x58e3('0x1')],'comment':_0x58e3('0x45')},'dialAgiAfterHangupClient':{'type':Sequelize[_0x58e3('0x1c')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize['INTEGER'](0x3)[_0x58e3('0x22')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x58e3('0x46')},'dialCutDigit':{'type':Sequelize['INTEGER'](0x3)[_0x58e3('0x22')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x58e3('0x47')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x58e3('0x12')](0x3)[_0x58e3('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)'},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x58e3('0x12')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x58e3('0x48')},'dialDropMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x58e3('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x58e3('0x49')},'dialDropRetryFrequency':{'type':Sequelize[_0x58e3('0x12')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x58e3('0x4a')},'dialAbandonedMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x58e3('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x58e3('0x4b')},'dialAbandonedRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x58e3('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x58e3('0x4c')},'dialMachineMaxRetry':{'type':Sequelize[_0x58e3('0x12')](0x3)[_0x58e3('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x58e3('0x4d')},'dialMachineRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x58e3('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x58e3('0x4e')},'dialAgentRejectMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x58e3('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x58e3('0x4f')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x58e3('0x12')](0x5)[_0x58e3('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'comment':_0x58e3('0x50')},'mandatoryDisposition':{'type':Sequelize[_0x58e3('0x1c')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x11ee86){if(!_0x11ee86)this[_0x58e3('0x16')](_0x58e3('0x51'),null);this[_0x58e3('0x16')](_0x58e3('0x52'),_0x11ee86);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0x58e3('0x12')](0x3)['UNSIGNED'],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0x58e3('0x12')](0x3)[_0x58e3('0x22')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}},'dialPreviewAutoRecallMe':{'type':Sequelize[_0x58e3('0x1c')],'defaultValue':!![]},'callAdditionalPhoneAfterMin':{'type':Sequelize[_0x58e3('0x12')](0x3)[_0x58e3('0x22')],'defaultValue':0x4},'dialPreviewRecallmeReminder':{'type':Sequelize[_0x58e3('0x1c')],'defaultValue':![]}};
\ No newline at end of file
index 756223c..db34ce0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2ac=['redis','defaults','localhost','./voiceQueue.socket','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','get','VoiceQueues','inbound','QueueCampaigns','ignore','map','value','includes','type','UserProfileResource','stack','name','VoiceQueue','fieldName','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','options','include','findAll','show','params','rawAttributes','keys','includeAll','catch','create','body','user','outbound','UserProfileSection','find','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','createdAt','updatedAt','role','getHoppers','findOne','CmHopper','nolimit','VoiceQueueId','CmHopperHistory','rows','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getTeams','Team','addTeams','teams','User','online','interface','flatMap','Agents','forEach','penalty','sequelize','transaction','each','TeamVoiceQueue','upsert','UserVoiceQueue','findOrCreate','UserVoiceQueueRt','isNil','format','SIP/%s','voicePause','userVoiceQueue:save','ids','select','field','tq.TeamId','team_has_voice_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoiceQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','QueryTypes','TeamId','all','union','compact','isEmpty','userVoiceQueue:remove','addAgents','omit','spread','removeAgents','isArray','emit','getAgents','getMembers','getLists','CmList','addLists','YYYY-MM-DD\x20HH:mm:ss','dialCheckDuplicateType','always','insert','into','cm_hopper','fromQuery','scheduledAt','ListId','phone','ContactId','from','cm_contacts','deletedAt\x20IS\x20NULL','CmListId','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','onlyIfOpen','COALESCE(phone,\x27\x27)','ListId\x20=\x20?','CmHopperId','OrderBy','ci.item','cm_contact_has_items','h.ContactId=ci.CmContactId','h.scheduledat=?','PHONE','removeLists','getBlackLists','addBlackLists','cm_hopper_black','removeBlackLists','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','lodash','squel','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment'];(function(_0x58129e,_0x3e073b){var _0x3b80c0=function(_0x1388e7){while(--_0x1388e7){_0x58129e['push'](_0x58129e['shift']());}};_0x3b80c0(++_0x3e073b);}(_0xb2ac,0x16a));var _0xcb2a=function(_0x4076a4,_0x4b373b){_0x4076a4=_0x4076a4-0x0;var _0x440575=_0xb2ac[_0x4076a4];return _0x440575;};'use strict';var emlformat=require(_0xcb2a('0x0'));var rimraf=require(_0xcb2a('0x1'));var zipdir=require(_0xcb2a('0x2'));var jsonpatch=require(_0xcb2a('0x3'));var rp=require(_0xcb2a('0x4'));var moment=require(_0xcb2a('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xcb2a('0x6'));var util=require(_0xcb2a('0x7'));var path=require(_0xcb2a('0x8'));var sox=require(_0xcb2a('0x9'));var csv=require(_0xcb2a('0xa'));var ejs=require(_0xcb2a('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xcb2a('0xc'));var squel=require(_0xcb2a('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xcb2a('0xa'));var querystring=require('querystring');var Papa=require(_0xcb2a('0xe'));var Redis=require(_0xcb2a('0xf'));var authService=require(_0xcb2a('0x10'));var qs=require(_0xcb2a('0x11'));var as=require(_0xcb2a('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xcb2a('0x13'))(_0xcb2a('0x14'));var utils=require('../../config/utils');var config=require(_0xcb2a('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0xcb2a('0x16')]=_[_0xcb2a('0x17')](config[_0xcb2a('0x16')],{'host':_0xcb2a('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xcb2a('0x16')]));require(_0xcb2a('0x19'))['register'](socket);function respondWithStatusCode(_0x3a647c,_0x2b88e9){_0x2b88e9=_0x2b88e9||0xcc;return function(_0xfca62f){if(_0xfca62f){return _0x3a647c[_0xcb2a('0x1a')](_0x2b88e9);}return _0x3a647c[_0xcb2a('0x1b')](_0x2b88e9)[_0xcb2a('0x1c')]();};}function respondWithResult(_0x27b758,_0x2a3541){_0x2a3541=_0x2a3541||0xc8;return function(_0x51bba7){if(_0x51bba7){return _0x27b758['status'](_0x2a3541)[_0xcb2a('0x1d')](_0x51bba7);}};}function respondWithFilteredResult(_0x31fe86,_0x5279be){return function(_0x4e595b){if(_0x4e595b){var _0x60836a=typeof _0x5279be[_0xcb2a('0x1e')]===_0xcb2a('0x1f')&&typeof _0x5279be[_0xcb2a('0x20')]===_0xcb2a('0x1f');var _0x1a9f50=_0x4e595b[_0xcb2a('0x21')];var _0x5eb1f3=_0x60836a?0x0:_0x5279be[_0xcb2a('0x1e')];var _0x2eee07=_0x60836a?_0x4e595b[_0xcb2a('0x21')]:_0x5279be[_0xcb2a('0x1e')]+_0x5279be[_0xcb2a('0x20')];var _0x2f0343;if(_0x2eee07>=_0x1a9f50){_0x2eee07=_0x1a9f50;_0x2f0343=0xc8;}else{_0x2f0343=0xce;}_0x31fe86[_0xcb2a('0x1b')](_0x2f0343);return _0x31fe86[_0xcb2a('0x22')]('Content-Range',_0x5eb1f3+'-'+_0x2eee07+'/'+_0x1a9f50)[_0xcb2a('0x1d')](_0x4e595b);}return null;};}function patchUpdates(_0x269fa1){return function(_0x2509e0){try{jsonpatch[_0xcb2a('0x23')](_0x2509e0,_0x269fa1,!![]);}catch(_0x5752bd){return BPromise[_0xcb2a('0x24')](_0x5752bd);}return _0x2509e0[_0xcb2a('0x25')]();};}function saveUpdates(_0x20eee4,_0xbedade){return function(_0x4eddd6){if(_0x4eddd6){return _0x4eddd6[_0xcb2a('0x26')](_0x20eee4)[_0xcb2a('0x27')](function(_0x20b76a){return _0x20b76a;});}return null;};}function removeEntity(_0x3548f4,_0x4f9887){return function(_0x246a3d){if(_0x246a3d){return _0x246a3d[_0xcb2a('0x28')]()[_0xcb2a('0x27')](function(){var _0x5d70df=_0x246a3d[_0xcb2a('0x29')]({'plain':!![]});var _0x47511d=[{'name':_0xcb2a('0x2a'),'value':_0xcb2a('0x2b'),'ignore':![]},{'name':_0xcb2a('0x2c'),'value':'outbound','ignore':![]}];var _0xf9ea0d=_(_0x47511d)['filter'](_0xcb2a('0x2d'))[_0xcb2a('0x2e')](_0xcb2a('0x2f'))[_0xcb2a('0x2f')]();if(_[_0xcb2a('0x30')](_0xf9ea0d,_0x5d70df[_0xcb2a('0x31')])){return;}var _0x318146=_['find'](_0x47511d,[_0xcb2a('0x2f'),_0x5d70df[_0xcb2a('0x31')]])['name'];return db[_0xcb2a('0x32')][_0xcb2a('0x28')]({'where':{'type':_0x318146,'resourceId':_0x5d70df['id']}})['then'](function(){return _0x246a3d;});})['then'](function(){_0x3548f4['status'](0xcc)[_0xcb2a('0x1c')]();});}};}function handleEntityNotFound(_0x4545e3,_0x37bedb){return function(_0x111c81){if(!_0x111c81){_0x4545e3[_0xcb2a('0x1a')](0x194);}return _0x111c81;};}function handleError(_0x3285b0,_0x2d0569){_0x2d0569=_0x2d0569||0x1f4;return function(_0x19006f){logger['error'](_0x19006f[_0xcb2a('0x33')]);if(_0x19006f[_0xcb2a('0x34')]){delete _0x19006f['name'];}_0x3285b0[_0xcb2a('0x1b')](_0x2d0569)['send'](_0x19006f);};}exports['index']=function(_0x5c1b60,_0x19d6f2){var _0x311fe4={},_0x25fabc={},_0x6329c6={'count':0x0,'rows':[]};var _0x5b744f=_[_0xcb2a('0x2e')](db[_0xcb2a('0x35')]['rawAttributes'],function(_0xd54f07){return{'name':_0xd54f07[_0xcb2a('0x36')],'type':_0xd54f07[_0xcb2a('0x31')][_0xcb2a('0x37')]};});_0x25fabc[_0xcb2a('0x38')]=_[_0xcb2a('0x2e')](_0x5b744f,_0xcb2a('0x34'));_0x25fabc['query']=_['keys'](_0x5c1b60[_0xcb2a('0x39')]);_0x25fabc[_0xcb2a('0x3a')]=_[_0xcb2a('0x3b')](_0x25fabc[_0xcb2a('0x38')],_0x25fabc[_0xcb2a('0x39')]);_0x311fe4[_0xcb2a('0x3c')]=_['intersection'](_0x25fabc['model'],qs[_0xcb2a('0x3d')](_0x5c1b60['query'][_0xcb2a('0x3d')]));_0x311fe4[_0xcb2a('0x3c')]=_0x311fe4['attributes'][_0xcb2a('0x3e')]?_0x311fe4[_0xcb2a('0x3c')]:_0x25fabc['model'];if(!_0x5c1b60[_0xcb2a('0x39')][_0xcb2a('0x3f')]('nolimit')){_0x311fe4[_0xcb2a('0x20')]=qs[_0xcb2a('0x20')](_0x5c1b60['query'][_0xcb2a('0x20')]);_0x311fe4[_0xcb2a('0x1e')]=qs[_0xcb2a('0x1e')](_0x5c1b60[_0xcb2a('0x39')][_0xcb2a('0x1e')]);}_0x311fe4[_0xcb2a('0x40')]=qs[_0xcb2a('0x41')](_0x5c1b60['query'][_0xcb2a('0x41')]);_0x311fe4[_0xcb2a('0x42')]=qs[_0xcb2a('0x3a')](_[_0xcb2a('0x43')](_0x5c1b60['query'],_0x25fabc[_0xcb2a('0x3a')]),_0x5b744f);if(_0x5c1b60['query'][_0xcb2a('0x44')]){_0x311fe4['where']=_[_0xcb2a('0x45')](_0x311fe4[_0xcb2a('0x42')],{'$or':_[_0xcb2a('0x2e')](_0x5b744f,function(_0x2a6778){if(_0x2a6778[_0xcb2a('0x31')]!=='VIRTUAL'){var _0x2e593c={};_0x2e593c[_0x2a6778[_0xcb2a('0x34')]]={'$like':'%'+_0x5c1b60[_0xcb2a('0x39')][_0xcb2a('0x44')]+'%'};return _0x2e593c;}})});}_0x311fe4=_[_0xcb2a('0x45')]({},_0x311fe4,_0x5c1b60[_0xcb2a('0x46')]);var _0x3af282={'where':_0x311fe4[_0xcb2a('0x42')]};return db[_0xcb2a('0x35')][_0xcb2a('0x21')](_0x3af282)['then'](function(_0x3a90b1){_0x6329c6[_0xcb2a('0x21')]=_0x3a90b1;if(_0x5c1b60[_0xcb2a('0x39')]['includeAll']){_0x311fe4[_0xcb2a('0x47')]=[{'all':!![]}];}return db['VoiceQueue'][_0xcb2a('0x48')](_0x311fe4);})['then'](function(_0x4f869e){_0x6329c6['rows']=_0x4f869e;return _0x6329c6;})[_0xcb2a('0x27')](respondWithFilteredResult(_0x19d6f2,_0x311fe4))['catch'](handleError(_0x19d6f2,null));};exports[_0xcb2a('0x49')]=function(_0x28a41b,_0x15dbbb){var _0x171efb={'raw':![],'where':{'id':_0x28a41b[_0xcb2a('0x4a')]['id']}},_0x363252={};_0x363252['model']=_['keys'](db['VoiceQueue'][_0xcb2a('0x4b')]);_0x363252[_0xcb2a('0x39')]=_[_0xcb2a('0x4c')](_0x28a41b[_0xcb2a('0x39')]);_0x363252[_0xcb2a('0x3a')]=_['intersection'](_0x363252[_0xcb2a('0x38')],_0x363252[_0xcb2a('0x39')]);_0x171efb[_0xcb2a('0x3c')]=_[_0xcb2a('0x3b')](_0x363252[_0xcb2a('0x38')],qs[_0xcb2a('0x3d')](_0x28a41b[_0xcb2a('0x39')][_0xcb2a('0x3d')]));_0x171efb['attributes']=_0x171efb['attributes']['length']?_0x171efb[_0xcb2a('0x3c')]:_0x363252[_0xcb2a('0x38')];if(_0x28a41b[_0xcb2a('0x39')][_0xcb2a('0x4d')]){_0x171efb[_0xcb2a('0x47')]=[{'all':!![]}];}_0x171efb=_[_0xcb2a('0x45')]({},_0x171efb,_0x28a41b[_0xcb2a('0x46')]);return db['VoiceQueue']['find'](_0x171efb)[_0xcb2a('0x27')](handleEntityNotFound(_0x15dbbb,null))['then'](respondWithResult(_0x15dbbb,null))[_0xcb2a('0x4e')](handleError(_0x15dbbb,null));};exports[_0xcb2a('0x4f')]=function(_0x264ad3,_0x41748a){return db[_0xcb2a('0x35')][_0xcb2a('0x4f')](_0x264ad3[_0xcb2a('0x50')],{})['then'](function(_0x364772){var _0x48171c=_0x264ad3[_0xcb2a('0x51')]['get']({'plain':!![]});if(!_0x48171c)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x48171c['role']===_0xcb2a('0x51')){var _0x2803c9=_0x364772[_0xcb2a('0x29')]({'plain':!![]});var _0x1d61db=[{'name':_0xcb2a('0x2a'),'value':_0xcb2a('0x2b')},{'name':'QueueCampaigns','value':_0xcb2a('0x52')}];var _0x177d6e=_['find'](_0x1d61db,[_0xcb2a('0x2f'),_0x2803c9[_0xcb2a('0x31')]])['name'];return db[_0xcb2a('0x53')][_0xcb2a('0x54')]({'where':{'name':_0x177d6e,'userProfileId':_0x48171c[_0xcb2a('0x55')]},'raw':!![]})[_0xcb2a('0x27')](function(_0xa6c172){if(_0xa6c172&&_0xa6c172[_0xcb2a('0x56')]===0x0){return db[_0xcb2a('0x32')][_0xcb2a('0x4f')]({'name':_0x2803c9[_0xcb2a('0x34')],'resourceId':_0x2803c9['id'],'type':_0xa6c172[_0xcb2a('0x34')],'sectionId':_0xa6c172['id']},{})[_0xcb2a('0x27')](function(){return _0x364772;});}else{return _0x364772;}})['catch'](function(_0x276578){logger[_0xcb2a('0x57')](_0xcb2a('0x58'),_0x276578);throw _0x276578;});}return _0x364772;})[_0xcb2a('0x27')](respondWithResult(_0x41748a,0xc9))['catch'](handleError(_0x41748a,null));};exports[_0xcb2a('0x59')]=function(_0x31f5c2,_0x19d253){var _0x5a9782={'where':{'id':_0x31f5c2['params']['id']}},_0x45aaa4={};_0x45aaa4[_0xcb2a('0x38')]=_[_0xcb2a('0x4c')](db[_0xcb2a('0x35')][_0xcb2a('0x4b')]);_0x5a9782[_0xcb2a('0x3c')]=_['intersection'](_0x45aaa4['model'],qs['fields'](_0x31f5c2[_0xcb2a('0x39')][_0xcb2a('0x3d')]));_0x5a9782[_0xcb2a('0x3c')]=_0x5a9782[_0xcb2a('0x3c')]['length']?_0x5a9782[_0xcb2a('0x3c')]:_0x45aaa4[_0xcb2a('0x38')];if(_0x31f5c2[_0xcb2a('0x39')][_0xcb2a('0x4d')]){_0x5a9782[_0xcb2a('0x47')]=[{'all':!![]}];}_0x5a9782=_[_0xcb2a('0x45')]({},_0x5a9782,_0x31f5c2[_0xcb2a('0x46')]);return db[_0xcb2a('0x35')][_0xcb2a('0x54')](_0x5a9782)[_0xcb2a('0x27')](handleEntityNotFound(_0x19d253,null))[_0xcb2a('0x27')](function(_0x4ca650){if(_0x4ca650){var _0x1a1f6d=_0x4ca650[_0xcb2a('0x29')]({'plain':!![]});_0x1a1f6d=qs['omit'](_0x1a1f6d,['id',_0xcb2a('0x5a'),'updatedAt']);_0x31f5c2[_0xcb2a('0x50')]=_['omit'](_0x31f5c2[_0xcb2a('0x50')],['id','createdAt',_0xcb2a('0x5b')]);return db['VoiceQueue'][_0xcb2a('0x4f')](_[_0xcb2a('0x45')](_0x1a1f6d,_0x31f5c2[_0xcb2a('0x50')]),{'include':_0x31f5c2[_0xcb2a('0x39')][_0xcb2a('0x4d')]?[{'all':!![]}]:undefined})['then'](function(_0x1740d5){var _0x38b06c=_0x31f5c2[_0xcb2a('0x51')]['get']({'plain':!![]});if(!_0x38b06c)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x38b06c[_0xcb2a('0x5c')]===_0xcb2a('0x51')){var _0x8205a7=_0x1740d5['get']({'plain':!![]});var _0x58495d=[{'name':_0xcb2a('0x2a'),'value':_0xcb2a('0x2b')},{'name':'QueueCampaigns','value':'outbound'}];var _0x5e1a89=_['find'](_0x58495d,[_0xcb2a('0x2f'),_0x8205a7['type']])[_0xcb2a('0x34')];return db[_0xcb2a('0x53')][_0xcb2a('0x54')]({'where':{'name':_0x5e1a89,'userProfileId':_0x38b06c[_0xcb2a('0x55')]},'raw':!![]})[_0xcb2a('0x27')](function(_0x2e7e33){if(_0x2e7e33&&_0x2e7e33['autoAssociation']===0x0){return db[_0xcb2a('0x32')][_0xcb2a('0x4f')]({'name':_0x8205a7['name'],'resourceId':_0x8205a7['id'],'type':_0x2e7e33['name'],'sectionId':_0x2e7e33['id']},{})[_0xcb2a('0x27')](function(){return _0x1740d5;});}else{return _0x1740d5;}})[_0xcb2a('0x4e')](function(_0x36c89b){logger[_0xcb2a('0x57')](_0xcb2a('0x58'),_0x36c89b);throw _0x36c89b;});}return _0x1740d5;});}})[_0xcb2a('0x27')](respondWithResult(_0x19d253,0xc9))[_0xcb2a('0x4e')](handleError(_0x19d253,null));};exports[_0xcb2a('0x26')]=function(_0x4d86b8,_0x473dc3){if(_0x4d86b8[_0xcb2a('0x50')]['id']){delete _0x4d86b8[_0xcb2a('0x50')]['id'];}return db[_0xcb2a('0x35')][_0xcb2a('0x54')]({'where':{'id':_0x4d86b8['params']['id']}})[_0xcb2a('0x27')](handleEntityNotFound(_0x473dc3,null))[_0xcb2a('0x27')](saveUpdates(_0x4d86b8[_0xcb2a('0x50')],null))[_0xcb2a('0x27')](respondWithResult(_0x473dc3,null))[_0xcb2a('0x4e')](handleError(_0x473dc3,null));};exports[_0xcb2a('0x28')]=function(_0x1053eb,_0x3448c9){return db[_0xcb2a('0x35')]['find']({'where':{'id':_0x1053eb[_0xcb2a('0x4a')]['id']}})['then'](handleEntityNotFound(_0x3448c9,null))[_0xcb2a('0x27')](removeEntity(_0x3448c9,null))[_0xcb2a('0x4e')](handleError(_0x3448c9,null));};exports[_0xcb2a('0x5d')]=function(_0x2a4997,_0x50ca76,_0x50deb6){var _0x9738ab={'raw':![],'where':{}};var _0x1bffd8={};var _0xdd22fe={'count':0x0,'rows':[]};return db[_0xcb2a('0x35')][_0xcb2a('0x5e')]({'where':{'id':_0x2a4997[_0xcb2a('0x4a')]['id']}})['then'](handleEntityNotFound(_0x50ca76,null))['then'](function(_0x508d4b){if(_0x508d4b){_0x1bffd8['model']=_['keys'](db[_0xcb2a('0x5f')]['rawAttributes']);_0x1bffd8[_0xcb2a('0x39')]=_['keys'](_0x2a4997[_0xcb2a('0x39')]);_0x1bffd8[_0xcb2a('0x3a')]=_[_0xcb2a('0x3b')](_0x1bffd8[_0xcb2a('0x38')],_0x1bffd8[_0xcb2a('0x39')]);_0x9738ab[_0xcb2a('0x3c')]=_[_0xcb2a('0x3b')](_0x1bffd8['model'],qs[_0xcb2a('0x3d')](_0x2a4997[_0xcb2a('0x39')]['fields']));_0x9738ab[_0xcb2a('0x3c')]=_0x9738ab[_0xcb2a('0x3c')][_0xcb2a('0x3e')]?_0x9738ab[_0xcb2a('0x3c')]:_0x1bffd8['model'];if(!_0x2a4997[_0xcb2a('0x39')][_0xcb2a('0x3f')](_0xcb2a('0x60'))){_0x9738ab[_0xcb2a('0x20')]=qs[_0xcb2a('0x20')](_0x2a4997[_0xcb2a('0x39')][_0xcb2a('0x20')]);_0x9738ab[_0xcb2a('0x1e')]=qs[_0xcb2a('0x1e')](_0x2a4997['query'][_0xcb2a('0x1e')]);}_0x9738ab[_0xcb2a('0x40')]=qs[_0xcb2a('0x41')](_0x2a4997[_0xcb2a('0x39')][_0xcb2a('0x41')]);_0x9738ab[_0xcb2a('0x42')]=qs[_0xcb2a('0x3a')](_['pick'](_0x2a4997['query'],_0x1bffd8[_0xcb2a('0x3a')]));_0x9738ab[_0xcb2a('0x42')][_0xcb2a('0x61')]=_0x508d4b['id'];if(_0x2a4997[_0xcb2a('0x39')][_0xcb2a('0x44')]){_0x9738ab[_0xcb2a('0x42')]=_[_0xcb2a('0x45')](_0x9738ab[_0xcb2a('0x42')],{'$or':_[_0xcb2a('0x2e')](_0x9738ab[_0xcb2a('0x3c')],function(_0x5bb182){var _0x1c52f5={};_0x1c52f5[_0x5bb182]={'$like':'%'+_0x2a4997[_0xcb2a('0x39')][_0xcb2a('0x44')]+'%'};return _0x1c52f5;})});}_0x9738ab=_[_0xcb2a('0x45')]({},_0x9738ab,_0x2a4997[_0xcb2a('0x46')]);return db['CmHopper'][_0xcb2a('0x21')]({'where':_0x9738ab[_0xcb2a('0x42')]})[_0xcb2a('0x27')](function(_0x399771){_0xdd22fe[_0xcb2a('0x21')]=_0x399771;if(_0x2a4997['query']['includeAll']){_0x9738ab['include']=[{'all':!![]}];}return db[_0xcb2a('0x5f')][_0xcb2a('0x48')](_0x9738ab);})[_0xcb2a('0x27')](function(_0x38d4ad){_0xdd22fe['rows']=_0x38d4ad;return _0xdd22fe;});}})[_0xcb2a('0x27')](respondWithFilteredResult(_0x50ca76,_0x9738ab))[_0xcb2a('0x4e')](handleError(_0x50ca76,null));};exports['getHopperHistories']=function(_0x779c0c,_0x2b853b,_0x5e51fb){var _0x485032={'raw':!![],'where':{}};var _0x53e227={};var _0x17329f={'count':0x0,'rows':[]};return db[_0xcb2a('0x35')][_0xcb2a('0x5e')]({'where':{'id':_0x779c0c[_0xcb2a('0x4a')]['id']}})[_0xcb2a('0x27')](handleEntityNotFound(_0x2b853b,null))[_0xcb2a('0x27')](function(_0x2a6ffe){if(_0x2a6ffe){_0x53e227[_0xcb2a('0x38')]=_[_0xcb2a('0x4c')](db[_0xcb2a('0x62')][_0xcb2a('0x4b')]);_0x53e227[_0xcb2a('0x39')]=_['keys'](_0x779c0c[_0xcb2a('0x39')]);_0x53e227[_0xcb2a('0x3a')]=_[_0xcb2a('0x3b')](_0x53e227[_0xcb2a('0x38')],_0x53e227['query']);_0x485032['attributes']=_[_0xcb2a('0x3b')](_0x53e227[_0xcb2a('0x38')],qs[_0xcb2a('0x3d')](_0x779c0c[_0xcb2a('0x39')][_0xcb2a('0x3d')]));_0x485032['attributes']=_0x485032[_0xcb2a('0x3c')]['length']?_0x485032[_0xcb2a('0x3c')]:_0x53e227[_0xcb2a('0x38')];if(!_0x779c0c[_0xcb2a('0x39')][_0xcb2a('0x3f')](_0xcb2a('0x60'))){_0x485032[_0xcb2a('0x20')]=qs[_0xcb2a('0x20')](_0x779c0c[_0xcb2a('0x39')][_0xcb2a('0x20')]);_0x485032[_0xcb2a('0x1e')]=qs[_0xcb2a('0x1e')](_0x779c0c['query'][_0xcb2a('0x1e')]);}_0x485032[_0xcb2a('0x40')]=qs[_0xcb2a('0x41')](_0x779c0c['query'][_0xcb2a('0x41')]);_0x485032[_0xcb2a('0x42')]=qs[_0xcb2a('0x3a')](_['pick'](_0x779c0c[_0xcb2a('0x39')],_0x53e227[_0xcb2a('0x3a')]));_0x485032[_0xcb2a('0x42')]['VoiceQueueId']=_0x2a6ffe['id'];if(_0x779c0c[_0xcb2a('0x39')][_0xcb2a('0x44')]){_0x485032['where']=_[_0xcb2a('0x45')](_0x485032[_0xcb2a('0x42')],{'$or':_[_0xcb2a('0x2e')](_0x485032[_0xcb2a('0x3c')],function(_0x2aff74){var _0x584966={};_0x584966[_0x2aff74]={'$like':'%'+_0x779c0c[_0xcb2a('0x39')][_0xcb2a('0x44')]+'%'};return _0x584966;})});}_0x485032=_[_0xcb2a('0x45')]({},_0x485032,_0x779c0c['options']);return db[_0xcb2a('0x62')]['count']({'where':_0x485032[_0xcb2a('0x42')]})['then'](function(_0x3bf2b8){_0x17329f['count']=_0x3bf2b8;if(_0x779c0c[_0xcb2a('0x39')][_0xcb2a('0x4d')]){_0x485032['include']=[{'all':!![]}];}return db[_0xcb2a('0x62')][_0xcb2a('0x48')](_0x485032);})[_0xcb2a('0x27')](function(_0x52a8ae){_0x17329f[_0xcb2a('0x63')]=_0x52a8ae;return _0x17329f;});}})[_0xcb2a('0x27')](respondWithFilteredResult(_0x2b853b,_0x485032))['catch'](handleError(_0x2b853b,null));};exports[_0xcb2a('0x64')]=function(_0x573aaf,_0x316579,_0x3334d8){var _0x1ca29f={'raw':!![],'where':{}};var _0x420365={};var _0x5eb8c7={'count':0x0,'rows':[]};return db['VoiceQueue']['findOne']({'where':{'id':_0x573aaf[_0xcb2a('0x4a')]['id']}})['then'](handleEntityNotFound(_0x316579,null))[_0xcb2a('0x27')](function(_0x2fccd6){if(_0x2fccd6){_0x420365[_0xcb2a('0x38')]=_[_0xcb2a('0x4c')](db['CmHopperFinal'][_0xcb2a('0x4b')]);_0x420365[_0xcb2a('0x39')]=_['keys'](_0x573aaf[_0xcb2a('0x39')]);_0x420365[_0xcb2a('0x3a')]=_[_0xcb2a('0x3b')](_0x420365[_0xcb2a('0x38')],_0x420365[_0xcb2a('0x39')]);_0x1ca29f['attributes']=_['intersection'](_0x420365['model'],qs[_0xcb2a('0x3d')](_0x573aaf[_0xcb2a('0x39')][_0xcb2a('0x3d')]));_0x1ca29f[_0xcb2a('0x3c')]=_0x1ca29f[_0xcb2a('0x3c')][_0xcb2a('0x3e')]?_0x1ca29f[_0xcb2a('0x3c')]:_0x420365[_0xcb2a('0x38')];if(!_0x573aaf['query']['hasOwnProperty'](_0xcb2a('0x60'))){_0x1ca29f[_0xcb2a('0x20')]=qs[_0xcb2a('0x20')](_0x573aaf[_0xcb2a('0x39')][_0xcb2a('0x20')]);_0x1ca29f[_0xcb2a('0x1e')]=qs[_0xcb2a('0x1e')](_0x573aaf[_0xcb2a('0x39')][_0xcb2a('0x1e')]);}_0x1ca29f[_0xcb2a('0x40')]=qs[_0xcb2a('0x41')](_0x573aaf[_0xcb2a('0x39')][_0xcb2a('0x41')]);_0x1ca29f[_0xcb2a('0x42')]=qs[_0xcb2a('0x3a')](_[_0xcb2a('0x43')](_0x573aaf[_0xcb2a('0x39')],_0x420365[_0xcb2a('0x3a')]));_0x1ca29f[_0xcb2a('0x42')][_0xcb2a('0x61')]=_0x2fccd6['id'];if(_0x573aaf[_0xcb2a('0x39')][_0xcb2a('0x44')]){_0x1ca29f[_0xcb2a('0x42')]=_[_0xcb2a('0x45')](_0x1ca29f[_0xcb2a('0x42')],{'$or':_[_0xcb2a('0x2e')](_0x1ca29f[_0xcb2a('0x3c')],function(_0x475650){var _0x395f70={};_0x395f70[_0x475650]={'$like':'%'+_0x573aaf['query'][_0xcb2a('0x44')]+'%'};return _0x395f70;})});}_0x1ca29f=_[_0xcb2a('0x45')]({},_0x1ca29f,_0x573aaf[_0xcb2a('0x46')]);return db['CmHopperFinal'][_0xcb2a('0x21')]({'where':_0x1ca29f[_0xcb2a('0x42')]})[_0xcb2a('0x27')](function(_0x5dd6b7){_0x5eb8c7[_0xcb2a('0x21')]=_0x5dd6b7;if(_0x573aaf['query']['includeAll']){_0x1ca29f['include']=[{'all':!![]}];}return db[_0xcb2a('0x65')][_0xcb2a('0x48')](_0x1ca29f);})[_0xcb2a('0x27')](function(_0x1574e3){_0x5eb8c7['rows']=_0x1574e3;return _0x5eb8c7;});}})[_0xcb2a('0x27')](respondWithFilteredResult(_0x316579,_0x1ca29f))['catch'](handleError(_0x316579,null));};exports[_0xcb2a('0x66')]=function(_0x4d3dc2,_0x4074bb,_0x1de18a){var _0x4ab0c9={'raw':!![],'where':{}};var _0x221e3d={};var _0x12b199={'count':0x0,'rows':[]};return db[_0xcb2a('0x35')]['findOne']({'where':{'id':_0x4d3dc2[_0xcb2a('0x4a')]['id']}})[_0xcb2a('0x27')](handleEntityNotFound(_0x4074bb,null))[_0xcb2a('0x27')](function(_0x4dcc0d){if(_0x4dcc0d){_0x221e3d[_0xcb2a('0x38')]=_[_0xcb2a('0x4c')](db[_0xcb2a('0x67')]['rawAttributes']);_0x221e3d[_0xcb2a('0x39')]=_['keys'](_0x4d3dc2['query']);_0x221e3d[_0xcb2a('0x3a')]=_['intersection'](_0x221e3d[_0xcb2a('0x38')],_0x221e3d['query']);_0x4ab0c9['attributes']=_[_0xcb2a('0x3b')](_0x221e3d['model'],qs['fields'](_0x4d3dc2[_0xcb2a('0x39')][_0xcb2a('0x3d')]));_0x4ab0c9[_0xcb2a('0x3c')]=_0x4ab0c9[_0xcb2a('0x3c')][_0xcb2a('0x3e')]?_0x4ab0c9[_0xcb2a('0x3c')]:_0x221e3d[_0xcb2a('0x38')];if(!_0x4d3dc2['query'][_0xcb2a('0x3f')]('nolimit')){_0x4ab0c9[_0xcb2a('0x20')]=qs[_0xcb2a('0x20')](_0x4d3dc2[_0xcb2a('0x39')][_0xcb2a('0x20')]);_0x4ab0c9[_0xcb2a('0x1e')]=qs[_0xcb2a('0x1e')](_0x4d3dc2['query'][_0xcb2a('0x1e')]);}_0x4ab0c9[_0xcb2a('0x40')]=qs[_0xcb2a('0x41')](_0x4d3dc2[_0xcb2a('0x39')]['sort']);_0x4ab0c9[_0xcb2a('0x42')]=qs[_0xcb2a('0x3a')](_[_0xcb2a('0x43')](_0x4d3dc2[_0xcb2a('0x39')],_0x221e3d[_0xcb2a('0x3a')]));_0x4ab0c9[_0xcb2a('0x42')][_0xcb2a('0x61')]=_0x4dcc0d['id'];if(_0x4d3dc2[_0xcb2a('0x39')]['filter']){_0x4ab0c9[_0xcb2a('0x42')]=_[_0xcb2a('0x45')](_0x4ab0c9[_0xcb2a('0x42')],{'$or':_[_0xcb2a('0x2e')](_0x4ab0c9[_0xcb2a('0x3c')],function(_0x730d25){var _0x34fb97={};_0x34fb97[_0x730d25]={'$like':'%'+_0x4d3dc2[_0xcb2a('0x39')]['filter']+'%'};return _0x34fb97;})});}_0x4ab0c9=_[_0xcb2a('0x45')]({},_0x4ab0c9,_0x4d3dc2[_0xcb2a('0x46')]);return db[_0xcb2a('0x67')]['count']({'where':_0x4ab0c9[_0xcb2a('0x42')]})[_0xcb2a('0x27')](function(_0x107408){_0x12b199[_0xcb2a('0x21')]=_0x107408;if(_0x4d3dc2[_0xcb2a('0x39')][_0xcb2a('0x4d')]){_0x4ab0c9['include']=[{'all':!![]}];}return db[_0xcb2a('0x67')][_0xcb2a('0x48')](_0x4ab0c9);})[_0xcb2a('0x27')](function(_0x2993fd){_0x12b199[_0xcb2a('0x63')]=_0x2993fd;return _0x12b199;});}})['then'](respondWithFilteredResult(_0x4074bb,_0x4ab0c9))[_0xcb2a('0x4e')](handleError(_0x4074bb,null));};exports[_0xcb2a('0x68')]=function(_0x4f22cb,_0x46d6ac,_0x40fc2b){var _0x1d10df={};var _0x1c5f5c={};var _0x3d0ac4;var _0x5540a5;return db[_0xcb2a('0x35')][_0xcb2a('0x5e')]({'where':{'id':_0x4f22cb[_0xcb2a('0x4a')]['id']}})[_0xcb2a('0x27')](handleEntityNotFound(_0x46d6ac,null))['then'](function(_0x286b96){if(_0x286b96){_0x3d0ac4=_0x286b96;_0x1c5f5c[_0xcb2a('0x38')]=_['keys'](db[_0xcb2a('0x69')]['rawAttributes']);_0x1c5f5c[_0xcb2a('0x39')]=_['keys'](_0x4f22cb['query']);_0x1c5f5c['filters']=_['intersection'](_0x1c5f5c['model'],_0x1c5f5c[_0xcb2a('0x39')]);_0x1d10df[_0xcb2a('0x3c')]=_[_0xcb2a('0x3b')](_0x1c5f5c['model'],qs[_0xcb2a('0x3d')](_0x4f22cb[_0xcb2a('0x39')][_0xcb2a('0x3d')]));_0x1d10df[_0xcb2a('0x3c')]=_0x1d10df[_0xcb2a('0x3c')][_0xcb2a('0x3e')]?_0x1d10df['attributes']:_0x1c5f5c[_0xcb2a('0x38')];_0x1d10df[_0xcb2a('0x40')]=qs[_0xcb2a('0x41')](_0x4f22cb[_0xcb2a('0x39')][_0xcb2a('0x41')]);_0x1d10df[_0xcb2a('0x42')]=qs[_0xcb2a('0x3a')](_[_0xcb2a('0x43')](_0x4f22cb[_0xcb2a('0x39')],_0x1c5f5c[_0xcb2a('0x3a')]));if(_0x4f22cb[_0xcb2a('0x39')][_0xcb2a('0x44')]){_0x1d10df[_0xcb2a('0x42')]=_[_0xcb2a('0x45')](_0x1d10df[_0xcb2a('0x42')],{'$or':_[_0xcb2a('0x2e')](_0x1d10df[_0xcb2a('0x3c')],function(_0x244a4e){var _0x3e7cd5={};_0x3e7cd5[_0x244a4e]={'$like':'%'+_0x4f22cb[_0xcb2a('0x39')][_0xcb2a('0x44')]+'%'};return _0x3e7cd5;})});}_0x1d10df=_[_0xcb2a('0x45')]({},_0x1d10df,_0x4f22cb[_0xcb2a('0x46')]);return _0x3d0ac4[_0xcb2a('0x68')](_0x1d10df);}})['then'](function(_0x993fd8){if(_0x993fd8){_0x5540a5=_0x993fd8[_0xcb2a('0x3e')];if(!_0x4f22cb['query']['hasOwnProperty'](_0xcb2a('0x60'))){_0x1d10df['limit']=qs[_0xcb2a('0x20')](_0x4f22cb[_0xcb2a('0x39')][_0xcb2a('0x20')]);_0x1d10df[_0xcb2a('0x1e')]=qs[_0xcb2a('0x1e')](_0x4f22cb[_0xcb2a('0x39')][_0xcb2a('0x1e')]);}return _0x3d0ac4[_0xcb2a('0x68')](_0x1d10df);}})['then'](function(_0x950123){if(_0x950123){return _0x950123?{'count':_0x5540a5,'rows':_0x950123}:null;}})[_0xcb2a('0x27')](respondWithResult(_0x46d6ac,null))['catch'](handleError(_0x46d6ac,null));};exports[_0xcb2a('0x6a')]=function(_0x13e41b,_0x2184fb,_0x3cbab5){var _0x121484=_0x13e41b[_0xcb2a('0x50')][_0xcb2a('0x6b')];var _0x2cf1c5=_[_0xcb2a('0x2e')](_0x121484,'id');return db[_0xcb2a('0x69')][_0xcb2a('0x48')]({'where':{'id':_0x2cf1c5},'attributes':['id'],'include':[{'model':db[_0xcb2a('0x6c')],'as':'Agents','attributes':['id',_0xcb2a('0x34'),_0xcb2a('0x6d'),'voicePause',_0xcb2a('0x6e')],'raw':!![]}]})['then'](function(_0x2d7ca4){if(_0x2d7ca4){var _0x356b0f=_[_0xcb2a('0x6f')](_0x2d7ca4,function(_0x3c4139){var _0x5d7ca5=_0x3c4139[_0xcb2a('0x29')]({'plain':!![]});_0x5d7ca5[_0xcb2a('0x70')][_0xcb2a('0x71')](function(_0x84bf53){_0x84bf53[_0xcb2a('0x72')]=_[_0xcb2a('0x54')](_0x121484,{'id':_0x5d7ca5['id']})[_0xcb2a('0x72')];});return _0x5d7ca5['Agents'];});return db['VoiceQueue'][_0xcb2a('0x54')]({'where':{'id':_0x13e41b[_0xcb2a('0x4a')]['id']}})[_0xcb2a('0x27')](function(_0x3860d2){return db[_0xcb2a('0x73')][_0xcb2a('0x74')](function(_0x2e8fbd){return _0x3860d2[_0xcb2a('0x6a')](_0x2cf1c5,{'transaction':_0x2e8fbd})[_0xcb2a('0x27')](function(){return BPromise[_0xcb2a('0x75')](_0x121484,function(_0x5ab4ab){return db[_0xcb2a('0x76')][_0xcb2a('0x77')]({'TeamId':_0x5ab4ab['id'],'VoiceQueueId':_0x13e41b['params']['id'],'penalty':_0x5ab4ab[_0xcb2a('0x72')]},{'transaction':_0x2e8fbd});});})['then'](function(){return BPromise[_0xcb2a('0x75')](_0x356b0f,function(_0x1ffac9){return db[_0xcb2a('0x78')][_0xcb2a('0x79')]({'where':{'UserId':_0x1ffac9['id'],'VoiceQueueId':_0x13e41b[_0xcb2a('0x4a')]['id']},'defaults':{'penalty':_0x1ffac9[_0xcb2a('0x72')]},'transaction':_0x2e8fbd});});})['then'](function(){return BPromise[_0xcb2a('0x75')](_[_0xcb2a('0x44')](_0x356b0f,{'online':!![]}),function(_0x4ef138){return db[_0xcb2a('0x7a')][_0xcb2a('0x77')]({'membername':_0x4ef138['name'],'UserId':_0x4ef138['id'],'queue_name':_0x3860d2[_0xcb2a('0x34')],'VoiceQueueId':_0x3860d2['id'],'interface':_[_0xcb2a('0x7b')](_0x4ef138[_0xcb2a('0x6e')])?util[_0xcb2a('0x7c')](_0xcb2a('0x7d'),_0x4ef138[_0xcb2a('0x34')]):_0x4ef138['interface'],'paused':_0x4ef138[_0xcb2a('0x7e')]||![],'penalty':_0x4ef138['penalty']},{'transaction':_0x2e8fbd});});})[_0xcb2a('0x27')](function(){_0x356b0f['forEach'](function(_0x1f599c){socket['emit'](_0xcb2a('0x7f'),{'UserId':_0x1f599c['id'],'VoiceQueueId':_0x3860d2['id']});});});});});}})[_0xcb2a('0x27')](respondWithStatusCode(_0x2184fb,null))[_0xcb2a('0x4e')](handleError(_0x2184fb,null));};exports['removeTeams']=function(_0x56b25c,_0x3aa012,_0x2d3cd4){return db[_0xcb2a('0x69')][_0xcb2a('0x48')]({'where':{'id':_0x56b25c[_0xcb2a('0x39')][_0xcb2a('0x80')]},'attributes':['id'],'include':[{'model':db[_0xcb2a('0x6c')],'as':_0xcb2a('0x70'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x3aa012,null))['then'](function(_0x4a145d){var _0x14cde6=_[_0xcb2a('0x2e')](_0x4a145d,'id');var _0x16a503=[];var _0x13a846=[];var _0x3de516=squel[_0xcb2a('0x81')]();_0x3de516[_0xcb2a('0x82')](_0xcb2a('0x83'))['from'](_0xcb2a('0x84'),'tq')[_0xcb2a('0x85')](_0xcb2a('0x86'),'ut',_0xcb2a('0x87'))[_0xcb2a('0x42')](_0xcb2a('0x88'),_0x56b25c[_0xcb2a('0x4a')]['id']);for(var _0x544c1f=0x0;_0x544c1f<_0x4a145d[_0xcb2a('0x3e')];_0x544c1f+=0x1){let _0x4d67dc=_0x4a145d[_0x544c1f];for(var _0x141572=0x0;_0x141572<_0x4d67dc[_0xcb2a('0x70')][_0xcb2a('0x3e')];_0x141572+=0x1){let _0x5219b4=_0x4d67dc['Agents'][_0x141572];var _0x6b4a1=_0x3de516[_0xcb2a('0x59')]();_0x6b4a1[_0xcb2a('0x42')](_0xcb2a('0x89'),_0x5219b4['id']);_0x13a846[_0xcb2a('0x8a')](db[_0xcb2a('0x73')][_0xcb2a('0x39')](_0x6b4a1[_0xcb2a('0x8b')](),{'type':db[_0xcb2a('0x73')][_0xcb2a('0x8c')]['SELECT']})[_0xcb2a('0x27')](function(_0x2a9236){if(_0x2a9236[_0xcb2a('0x3e')]===0x1){return _0x5219b4['id'];}else{var _0x21e4f3=_['every'](_[_0xcb2a('0x2e')](_0x2a9236,_0xcb2a('0x8d')),function(_0x560073){return _[_0xcb2a('0x30')](_0x14cde6,_0x560073);});if(_0x21e4f3){return _0x5219b4['id'];}}}));}}return BPromise[_0xcb2a('0x8e')](_0x13a846)[_0xcb2a('0x27')](function(_0x2f03d0){_0x16a503=_(_0x16a503)[_0xcb2a('0x8f')](_0x2f03d0)[_0xcb2a('0x90')]()[_0xcb2a('0x2f')]();return db[_0xcb2a('0x35')][_0xcb2a('0x54')]({'where':{'id':_0x56b25c[_0xcb2a('0x4a')]['id']}})[_0xcb2a('0x27')](function(_0x48d28f){return db['sequelize'][_0xcb2a('0x74')](function(_0x45644b){return _0x48d28f['removeTeams'](_0x56b25c[_0xcb2a('0x39')][_0xcb2a('0x80')],{'transaction':_0x45644b})[_0xcb2a('0x27')](function(){if(!_[_0xcb2a('0x91')](_0x16a503)){return _0x48d28f['removeAgents'](_0x16a503,{'transaction':_0x45644b})[_0xcb2a('0x27')](function(){return db[_0xcb2a('0x7a')][_0xcb2a('0x28')]({'where':{'VoiceQueueId':_0x56b25c['params']['id'],'UserId':_0x16a503},'transaction':_0x45644b});});}})[_0xcb2a('0x27')](function(){_0x16a503[_0xcb2a('0x71')](function(_0x17fa90){socket['emit'](_0xcb2a('0x92'),{'UserId':_0x17fa90,'VoiceQueueId':_0x48d28f['id']});});});});});});})['then'](respondWithStatusCode(_0x3aa012,null))[_0xcb2a('0x4e')](handleError(_0x3aa012,null));};exports[_0xcb2a('0x93')]=function(_0x503fb7,_0xeaec3,_0x2dccf6){var _0x282692,_0xa7bba3;return db[_0xcb2a('0x35')][_0xcb2a('0x54')]({'where':{'id':_0x503fb7['params']['id']}})['then'](handleEntityNotFound(_0xeaec3,null))['then'](function(_0xf95c42){if(_0xf95c42){_0xa7bba3=_0xf95c42;return _0xf95c42[_0xcb2a('0x93')](_0x503fb7[_0xcb2a('0x50')]['ids'],_[_0xcb2a('0x94')](_0x503fb7['body'],[_0xcb2a('0x80'),'id'])||{})[_0xcb2a('0x95')](function(_0x306dc7){for(var _0x1870f9=0x0;_0x1870f9<_0x503fb7[_0xcb2a('0x50')][_0xcb2a('0x80')][_0xcb2a('0x3e')];_0x1870f9+=0x1){socket['emit'](_0xcb2a('0x7f'),{'UserId':Number(_0x503fb7[_0xcb2a('0x50')][_0xcb2a('0x80')][_0x1870f9]),'VoiceQueueId':Number(_0x503fb7[_0xcb2a('0x4a')]['id'])});}return _0x306dc7;});}})[_0xcb2a('0x27')](function(_0x4fb023){_0x282692=_0x4fb023||[];if(_0xa7bba3){return db[_0xcb2a('0x6c')][_0xcb2a('0x48')]({'where':{'id':_0x503fb7[_0xcb2a('0x50')][_0xcb2a('0x80')]},'attributes':['id','name',_0xcb2a('0x6d'),_0xcb2a('0x7e'),_0xcb2a('0x6e')],'raw':!![]});}})[_0xcb2a('0x27')](function(_0x14e0b1){if(!_[_0xcb2a('0x91')](_0x14e0b1)){var _0x507c47=[];for(var _0x1acd7e=0x0;_0x1acd7e<_0x14e0b1['length'];_0x1acd7e++){if(_0x14e0b1[_0x1acd7e][_0xcb2a('0x6d')]){_0x507c47[_0xcb2a('0x8a')](db[_0xcb2a('0x7a')]['upsert']({'membername':_0x14e0b1[_0x1acd7e][_0xcb2a('0x34')],'UserId':_0x14e0b1[_0x1acd7e]['id'],'queue_name':_0xa7bba3[_0xcb2a('0x34')],'VoiceQueueId':_0xa7bba3['id'],'interface':_[_0xcb2a('0x7b')](_0x14e0b1[_0x1acd7e]['interface'])?util[_0xcb2a('0x7c')](_0xcb2a('0x7d'),_0x14e0b1[_0x1acd7e]['name']):_0x14e0b1[_0x1acd7e][_0xcb2a('0x6e')],'paused':_0x14e0b1[_0x1acd7e][_0xcb2a('0x7e')]||![],'penalty':_0x503fb7['body'][_0xcb2a('0x72')]||0x0}));}}return BPromise[_0xcb2a('0x8e')](_0x507c47);}})[_0xcb2a('0x27')](function(){return _0x282692;})['then'](respondWithResult(_0xeaec3,null))[_0xcb2a('0x4e')](handleError(_0xeaec3,null));};exports[_0xcb2a('0x96')]=function(_0x334ff8,_0x5d476b,_0x1462bf){return db[_0xcb2a('0x35')][_0xcb2a('0x54')]({'where':{'id':_0x334ff8['params']['id']}})[_0xcb2a('0x27')](handleEntityNotFound(_0x5d476b,null))[_0xcb2a('0x27')](function(_0x5ee714){if(_0x5ee714){return _0x5ee714[_0xcb2a('0x96')](_0x334ff8[_0xcb2a('0x39')][_0xcb2a('0x80')])[_0xcb2a('0x27')](function(){if(_[_0xcb2a('0x97')](_0x334ff8[_0xcb2a('0x39')][_0xcb2a('0x80')])){for(var _0x392f8f=0x0;_0x392f8f<_0x334ff8[_0xcb2a('0x39')][_0xcb2a('0x80')][_0xcb2a('0x3e')];_0x392f8f+=0x1){socket[_0xcb2a('0x98')](_0xcb2a('0x92'),{'UserId':Number(_0x334ff8[_0xcb2a('0x39')][_0xcb2a('0x80')][_0x392f8f]),'VoiceQueueId':Number(_0x334ff8[_0xcb2a('0x4a')]['id'])});}}else{socket[_0xcb2a('0x98')]('userVoiceQueue:remove',{'UserId':Number(_0x334ff8[_0xcb2a('0x39')][_0xcb2a('0x80')]),'VoiceQueueId':Number(_0x334ff8[_0xcb2a('0x4a')]['id'])});}});}})[_0xcb2a('0x27')](function(_0x2109c8){return db[_0xcb2a('0x7a')][_0xcb2a('0x28')]({'where':{'VoiceQueueId':_0x334ff8['params']['id'],'UserId':_0x334ff8[_0xcb2a('0x39')][_0xcb2a('0x80')]}})[_0xcb2a('0x27')](function(){return _0x2109c8;});})['then'](respondWithStatusCode(_0x5d476b,null))[_0xcb2a('0x4e')](handleError(_0x5d476b,null));};exports[_0xcb2a('0x99')]=function(_0x2314f6,_0x5e15a0,_0x24a216){var _0x31d303={};var _0x17fccc={};var _0x5d0c78;var _0x59461c;return db[_0xcb2a('0x35')][_0xcb2a('0x5e')]({'where':{'id':_0x2314f6[_0xcb2a('0x4a')]['id']}})[_0xcb2a('0x27')](handleEntityNotFound(_0x5e15a0,null))[_0xcb2a('0x27')](function(_0x3d2e07){if(_0x3d2e07){_0x5d0c78=_0x3d2e07;_0x17fccc[_0xcb2a('0x38')]=_[_0xcb2a('0x4c')](db[_0xcb2a('0x6c')][_0xcb2a('0x4b')]);_0x17fccc[_0xcb2a('0x39')]=_[_0xcb2a('0x4c')](_0x2314f6[_0xcb2a('0x39')]);_0x17fccc[_0xcb2a('0x3a')]=_[_0xcb2a('0x3b')](_0x17fccc[_0xcb2a('0x38')],_0x17fccc[_0xcb2a('0x39')]);_0x31d303[_0xcb2a('0x3c')]=_[_0xcb2a('0x3b')](_0x17fccc['model'],qs[_0xcb2a('0x3d')](_0x2314f6[_0xcb2a('0x39')]['fields']));_0x31d303[_0xcb2a('0x3c')]=_0x31d303[_0xcb2a('0x3c')][_0xcb2a('0x3e')]?_0x31d303[_0xcb2a('0x3c')]:_0x17fccc['model'];_0x31d303[_0xcb2a('0x40')]=qs[_0xcb2a('0x41')](_0x2314f6[_0xcb2a('0x39')][_0xcb2a('0x41')]);_0x31d303['where']=qs['filters'](_['pick'](_0x2314f6['query'],_0x17fccc[_0xcb2a('0x3a')]));if(_0x2314f6[_0xcb2a('0x39')][_0xcb2a('0x44')]){_0x31d303[_0xcb2a('0x42')]=_['merge'](_0x31d303[_0xcb2a('0x42')],{'$or':_[_0xcb2a('0x2e')](_0x31d303[_0xcb2a('0x3c')],function(_0x4d1e64){var _0x56d97d={};_0x56d97d[_0x4d1e64]={'$like':'%'+_0x2314f6[_0xcb2a('0x39')][_0xcb2a('0x44')]+'%'};return _0x56d97d;})});}_0x31d303=_[_0xcb2a('0x45')]({},_0x31d303,_0x2314f6['options']);return _0x5d0c78['getAgents'](_0x31d303);}})[_0xcb2a('0x27')](function(_0xaac358){if(_0xaac358){_0x59461c=_0xaac358[_0xcb2a('0x3e')];if(!_0x2314f6[_0xcb2a('0x39')][_0xcb2a('0x3f')]('nolimit')){_0x31d303['limit']=qs['limit'](_0x2314f6[_0xcb2a('0x39')][_0xcb2a('0x20')]);_0x31d303[_0xcb2a('0x1e')]=qs['offset'](_0x2314f6['query'][_0xcb2a('0x1e')]);}return _0x5d0c78['getAgents'](_0x31d303);}})[_0xcb2a('0x27')](function(_0x149fa3){if(_0x149fa3){return _0x149fa3?{'count':_0x59461c,'rows':_0x149fa3}:null;}})[_0xcb2a('0x27')](respondWithResult(_0x5e15a0,null))[_0xcb2a('0x4e')](handleError(_0x5e15a0,null));};exports[_0xcb2a('0x9a')]=function(_0x401a03,_0x263369,_0x2c6f9c){var _0x10d0ec={};var _0x1a57f1={};var _0x19d888;var _0x1008d8;return db['VoiceQueue']['findOne']({'where':{'id':_0x401a03[_0xcb2a('0x4a')]['id']}})[_0xcb2a('0x27')](handleEntityNotFound(_0x263369,null))[_0xcb2a('0x27')](function(_0xd0e831){if(_0xd0e831){_0x19d888=_0xd0e831;_0x1a57f1['model']=_[_0xcb2a('0x4c')](db[_0xcb2a('0x7a')]['rawAttributes']);_0x1a57f1['query']=_[_0xcb2a('0x4c')](_0x401a03[_0xcb2a('0x39')]);_0x1a57f1['filters']=_[_0xcb2a('0x3b')](_0x1a57f1['model'],_0x1a57f1['query']);_0x10d0ec['attributes']=_[_0xcb2a('0x3b')](_0x1a57f1['model'],qs[_0xcb2a('0x3d')](_0x401a03[_0xcb2a('0x39')]['fields']));_0x10d0ec[_0xcb2a('0x3c')]=_0x10d0ec[_0xcb2a('0x3c')][_0xcb2a('0x3e')]?_0x10d0ec[_0xcb2a('0x3c')]:_0x1a57f1['model'];_0x10d0ec[_0xcb2a('0x40')]=qs[_0xcb2a('0x41')](_0x401a03[_0xcb2a('0x39')]['sort']);_0x10d0ec[_0xcb2a('0x42')]=qs['filters'](_[_0xcb2a('0x43')](_0x401a03[_0xcb2a('0x39')],_0x1a57f1[_0xcb2a('0x3a')]));if(_0x401a03[_0xcb2a('0x39')][_0xcb2a('0x44')]){_0x10d0ec[_0xcb2a('0x42')]=_['merge'](_0x10d0ec[_0xcb2a('0x42')],{'$or':_['map'](_0x10d0ec[_0xcb2a('0x3c')],function(_0x3d5f93){var _0x4f6ba5={};_0x4f6ba5[_0x3d5f93]={'$like':'%'+_0x401a03[_0xcb2a('0x39')][_0xcb2a('0x44')]+'%'};return _0x4f6ba5;})});}_0x10d0ec=_[_0xcb2a('0x45')]({},_0x10d0ec,_0x401a03[_0xcb2a('0x46')]);return _0x19d888[_0xcb2a('0x9a')](_0x10d0ec);}})[_0xcb2a('0x27')](function(_0x4237e9){if(_0x4237e9){_0x1008d8=_0x4237e9['length'];if(!_0x401a03[_0xcb2a('0x39')][_0xcb2a('0x3f')](_0xcb2a('0x60'))){_0x10d0ec[_0xcb2a('0x20')]=qs[_0xcb2a('0x20')](_0x401a03[_0xcb2a('0x39')][_0xcb2a('0x20')]);_0x10d0ec['offset']=qs[_0xcb2a('0x1e')](_0x401a03[_0xcb2a('0x39')][_0xcb2a('0x1e')]);}return _0x19d888[_0xcb2a('0x9a')](_0x10d0ec);}})['then'](function(_0xd0ebc1){return _0xd0ebc1?{'count':_0x1008d8,'rows':_0xd0ebc1}:null;})[_0xcb2a('0x27')](respondWithResult(_0x263369,null))[_0xcb2a('0x4e')](handleError(_0x263369,null));};exports[_0xcb2a('0x9b')]=function(_0x599024,_0x5548f7,_0xf787c6){var _0x4af4b5={};var _0x6173e7={};var _0x52bbe6;var _0x45ca4d;return db[_0xcb2a('0x35')][_0xcb2a('0x5e')]({'where':{'id':_0x599024[_0xcb2a('0x4a')]['id']}})[_0xcb2a('0x27')](handleEntityNotFound(_0x5548f7,null))[_0xcb2a('0x27')](function(_0x435218){if(_0x435218){_0x52bbe6=_0x435218;_0x6173e7[_0xcb2a('0x38')]=_[_0xcb2a('0x4c')](db[_0xcb2a('0x9c')][_0xcb2a('0x4b')]);_0x6173e7[_0xcb2a('0x39')]=_[_0xcb2a('0x4c')](_0x599024[_0xcb2a('0x39')]);_0x6173e7[_0xcb2a('0x3a')]=_[_0xcb2a('0x3b')](_0x6173e7[_0xcb2a('0x38')],_0x6173e7[_0xcb2a('0x39')]);_0x4af4b5[_0xcb2a('0x3c')]=_[_0xcb2a('0x3b')](_0x6173e7[_0xcb2a('0x38')],qs['fields'](_0x599024[_0xcb2a('0x39')]['fields']));_0x4af4b5[_0xcb2a('0x3c')]=_0x4af4b5['attributes']['length']?_0x4af4b5[_0xcb2a('0x3c')]:_0x6173e7[_0xcb2a('0x38')];_0x4af4b5[_0xcb2a('0x40')]=qs[_0xcb2a('0x41')](_0x599024['query'][_0xcb2a('0x41')]);_0x4af4b5[_0xcb2a('0x42')]=qs[_0xcb2a('0x3a')](_[_0xcb2a('0x43')](_0x599024[_0xcb2a('0x39')],_0x6173e7[_0xcb2a('0x3a')]));if(_0x599024[_0xcb2a('0x39')][_0xcb2a('0x44')]){_0x4af4b5[_0xcb2a('0x42')]=_[_0xcb2a('0x45')](_0x4af4b5[_0xcb2a('0x42')],{'$or':_[_0xcb2a('0x2e')](_0x4af4b5[_0xcb2a('0x3c')],function(_0x32699b){var _0x40d6f9={};_0x40d6f9[_0x32699b]={'$like':'%'+_0x599024[_0xcb2a('0x39')][_0xcb2a('0x44')]+'%'};return _0x40d6f9;})});}_0x4af4b5=_[_0xcb2a('0x45')]({},_0x4af4b5,_0x599024[_0xcb2a('0x46')]);return _0x52bbe6[_0xcb2a('0x9b')](_0x4af4b5);}})[_0xcb2a('0x27')](function(_0x300c2c){if(_0x300c2c){_0x45ca4d=_0x300c2c[_0xcb2a('0x3e')];if(!_0x599024[_0xcb2a('0x39')][_0xcb2a('0x3f')]('nolimit')){_0x4af4b5[_0xcb2a('0x20')]=qs[_0xcb2a('0x20')](_0x599024[_0xcb2a('0x39')][_0xcb2a('0x20')]);_0x4af4b5[_0xcb2a('0x1e')]=qs['offset'](_0x599024[_0xcb2a('0x39')][_0xcb2a('0x1e')]);}return _0x52bbe6[_0xcb2a('0x9b')](_0x4af4b5);}})[_0xcb2a('0x27')](function(_0x2b8e38){if(_0x2b8e38){return _0x2b8e38?{'count':_0x45ca4d,'rows':_0x2b8e38}:null;}})['then'](respondWithResult(_0x5548f7,null))[_0xcb2a('0x4e')](handleError(_0x5548f7,null));};exports[_0xcb2a('0x9d')]=function(_0x3b7037,_0x5d09f3,_0xfc190f){var _0x301948=moment()[_0xcb2a('0x7c')](_0xcb2a('0x9e'));var _0x177a68,_0x2a495f;return db[_0xcb2a('0x35')]['find']({'where':{'id':_0x3b7037[_0xcb2a('0x4a')]['id']}})[_0xcb2a('0x27')](handleEntityNotFound(_0x5d09f3,null))[_0xcb2a('0x27')](function(_0x44b4ae){if(_0x44b4ae){_0x2a495f=_0x44b4ae;return _0x44b4ae[_0xcb2a('0x9d')](_0x3b7037[_0xcb2a('0x50')][_0xcb2a('0x80')],_[_0xcb2a('0x94')](_0x3b7037[_0xcb2a('0x50')],[_0xcb2a('0x80'),'id'])||{});}return null;})[_0xcb2a('0x95')](function(_0x2d6398){var _0x779abc;_0x177a68=_0x2d6398||[];var _0x210353=[];if(_0x2d6398){for(var _0x4e8645=0x0;_0x4e8645<_0x2d6398[_0xcb2a('0x3e')];_0x4e8645+=0x1){var _0x420701=_0x2d6398[_0x4e8645][_0xcb2a('0x29')]({'plain':!![]});_0x2a495f['dialCheckDuplicateType']=_0x3b7037[_0xcb2a('0x50')]['dialCheckDuplicateType']?_0x3b7037['body']['dialCheckDuplicateType']:_0x2a495f[_0xcb2a('0x9f')];switch(_0x2a495f[_0xcb2a('0x9f')]){case _0xcb2a('0xa0'):_0x779abc=squel[_0xcb2a('0xa1')]()[_0xcb2a('0xa2')](_0xcb2a('0xa3'))[_0xcb2a('0xa4')](['phone',_0xcb2a('0xa5'),'ContactId',_0xcb2a('0xa6'),'VoiceQueueId',_0xcb2a('0x5a'),'updatedAt'],squel['select']()[_0xcb2a('0x82')](_0xcb2a('0xa7'),_0xcb2a('0xa7'))[_0xcb2a('0x82')]('\x27'+_0x301948+'\x27','scheduledAt')[_0xcb2a('0x82')]('id',_0xcb2a('0xa8'))[_0xcb2a('0x82')](_0x420701['CmListId'][_0xcb2a('0x8b')](),'ListId')[_0xcb2a('0x82')](_0x3b7037[_0xcb2a('0x4a')]['id'][_0xcb2a('0x8b')](),'VoiceQueueId')[_0xcb2a('0x82')]('\x27'+_0x301948+'\x27',_0xcb2a('0x5a'))['field']('\x27'+_0x301948+'\x27',_0xcb2a('0x5b'))[_0xcb2a('0xa9')](_0xcb2a('0xaa'))['where'](_0xcb2a('0xab'))[_0xcb2a('0x42')]('ListId\x20=\x20?',_0x420701[_0xcb2a('0xac')][_0xcb2a('0x8b')]())[_0xcb2a('0x42')](_0xcb2a('0xad'))[_0xcb2a('0x42')](_0xcb2a('0xae'),squel[_0xcb2a('0x81')]()['field'](_0xcb2a('0xaf'))[_0xcb2a('0xa9')](_0xcb2a('0xb0'))[_0xcb2a('0x42')]('VoiceQueueId\x20=\x20?',_0x3b7037[_0xcb2a('0x4a')]['id'][_0xcb2a('0x8b')]()))['where'](_0xcb2a('0xae'),squel[_0xcb2a('0x81')]()[_0xcb2a('0x82')]('COALESCE(phone,\x27\x27)')[_0xcb2a('0xa9')]('cm_hopper')[_0xcb2a('0x42')]('VoiceQueueId\x20=\x20?',_0x3b7037[_0xcb2a('0x4a')]['id'][_0xcb2a('0x8b')]())))['toString']();break;case _0xcb2a('0xb1'):_0x779abc=squel[_0xcb2a('0xa1')]()['into']('cm_hopper')[_0xcb2a('0xa4')]([_0xcb2a('0xa7'),_0xcb2a('0xa5'),_0xcb2a('0xa8'),_0xcb2a('0xa6'),_0xcb2a('0x61'),_0xcb2a('0x5a'),'updatedAt'],squel['select']()[_0xcb2a('0x82')](_0xcb2a('0xa7'),_0xcb2a('0xa7'))[_0xcb2a('0x82')]('\x27'+_0x301948+'\x27',_0xcb2a('0xa5'))[_0xcb2a('0x82')]('id','ContactId')[_0xcb2a('0x82')](_0x420701[_0xcb2a('0xac')]['toString'](),'ListId')[_0xcb2a('0x82')](_0x3b7037[_0xcb2a('0x4a')]['id'][_0xcb2a('0x8b')](),_0xcb2a('0x61'))[_0xcb2a('0x82')]('\x27'+_0x301948+'\x27','createdAt')[_0xcb2a('0x82')]('\x27'+_0x301948+'\x27','updatedAt')['from']('cm_contacts')[_0xcb2a('0x42')](_0xcb2a('0xab'))[_0xcb2a('0x42')]('ListId\x20=\x20?',_0x420701[_0xcb2a('0xac')][_0xcb2a('0x8b')]())[_0xcb2a('0x42')](_0xcb2a('0xad'))[_0xcb2a('0x42')](_0xcb2a('0xae'),squel[_0xcb2a('0x81')]()[_0xcb2a('0x82')](_0xcb2a('0xb2'))[_0xcb2a('0xa9')]('cm_hopper')[_0xcb2a('0x42')](_0xcb2a('0x88'),_0x3b7037[_0xcb2a('0x4a')]['id'][_0xcb2a('0x8b')]())))[_0xcb2a('0x8b')]();break;default:_0x779abc=squel[_0xcb2a('0xa1')]()[_0xcb2a('0xa2')](_0xcb2a('0xa3'))[_0xcb2a('0xa4')]([_0xcb2a('0xa7'),'scheduledAt',_0xcb2a('0xa8'),_0xcb2a('0xa6'),_0xcb2a('0x61'),_0xcb2a('0x5a'),_0xcb2a('0x5b')],squel['select']()[_0xcb2a('0x82')](_0xcb2a('0xa7'),'phone')['field']('\x27'+_0x301948+'\x27',_0xcb2a('0xa5'))['field']('id','ContactId')[_0xcb2a('0x82')](_0x420701['CmListId'][_0xcb2a('0x8b')](),_0xcb2a('0xa6'))['field'](_0x3b7037['params']['id'][_0xcb2a('0x8b')](),_0xcb2a('0x61'))[_0xcb2a('0x82')]('\x27'+_0x301948+'\x27',_0xcb2a('0x5a'))[_0xcb2a('0x82')]('\x27'+_0x301948+'\x27',_0xcb2a('0x5b'))[_0xcb2a('0xa9')](_0xcb2a('0xaa'))[_0xcb2a('0x42')](_0xcb2a('0xab'))['where'](_0xcb2a('0xb3'),_0x420701[_0xcb2a('0xac')]['toString']())['where'](_0xcb2a('0xad')))[_0xcb2a('0x8b')]();}_0x210353['push'](db[_0xcb2a('0x73')][_0xcb2a('0x39')](_0x779abc));}return BPromise[_0xcb2a('0x8e')](_0x210353);}})[_0xcb2a('0x27')](function(){var _0x78617b=[];var _0x504b73=squel[_0xcb2a('0xa1')]()[_0xcb2a('0xa2')]('cm_hopper_additional_phones')['fromQuery']([_0xcb2a('0xb4'),_0xcb2a('0xa7'),_0xcb2a('0xb5'),_0xcb2a('0x5a'),_0xcb2a('0x5b')],squel['select']()['field']('h.id')['field'](_0xcb2a('0xb6'))[_0xcb2a('0x82')]('ci.OrderBy+1')[_0xcb2a('0x82')]('\x27'+_0x301948+'\x27',_0xcb2a('0x5a'))['field']('\x27'+_0x301948+'\x27',_0xcb2a('0x5b'))[_0xcb2a('0xa9')](_0xcb2a('0xb7'),'ci')[_0xcb2a('0x85')](_0xcb2a('0xa3'),'h',_0xcb2a('0xb8'))['where'](_0xcb2a('0xb9'),_0x301948)[_0xcb2a('0x42')]('ci.ItemClass=?',_0xcb2a('0xba')))[_0xcb2a('0x8b')]();_0x78617b['push'](db[_0xcb2a('0x73')]['query'](_0x504b73));return BPromise[_0xcb2a('0x8e')](_0x78617b);})[_0xcb2a('0x27')](function(){return _0x177a68;})['then'](respondWithResult(_0x5d09f3,null))['catch'](handleError(_0x5d09f3,null));};exports['removeLists']=function(_0x43b606,_0x5f2e10,_0x56727d){return db[_0xcb2a('0x35')]['find']({'where':{'id':_0x43b606[_0xcb2a('0x4a')]['id']}})['then'](handleEntityNotFound(_0x5f2e10,null))[_0xcb2a('0x27')](function(_0x5f3c9e){if(_0x5f3c9e){return _0x5f3c9e[_0xcb2a('0xbb')](_0x43b606[_0xcb2a('0x39')][_0xcb2a('0x80')]);}})[_0xcb2a('0x27')](function(_0x5c84b2){if(_0x5c84b2){return db[_0xcb2a('0x5f')][_0xcb2a('0x28')]({'where':{'ListId':_0x43b606['query'][_0xcb2a('0x80')],'VoiceQueueId':_0x43b606[_0xcb2a('0x4a')]['id']}})['then'](function(){return _0x5c84b2;});}})[_0xcb2a('0x27')](respondWithStatusCode(_0x5f2e10,null))[_0xcb2a('0x4e')](handleError(_0x5f2e10,null));};exports[_0xcb2a('0xbc')]=function(_0x34d874,_0x290451,_0x478eb6){var _0x29f30={};var _0x1b31b6={};var _0x265791;var _0x36013b;return db[_0xcb2a('0x35')][_0xcb2a('0x5e')]({'where':{'id':_0x34d874[_0xcb2a('0x4a')]['id']}})[_0xcb2a('0x27')](handleEntityNotFound(_0x290451,null))['then'](function(_0x2a3ea2){if(_0x2a3ea2){_0x265791=_0x2a3ea2;_0x1b31b6[_0xcb2a('0x38')]=_[_0xcb2a('0x4c')](db[_0xcb2a('0x9c')]['rawAttributes']);_0x1b31b6[_0xcb2a('0x39')]=_[_0xcb2a('0x4c')](_0x34d874[_0xcb2a('0x39')]);_0x1b31b6[_0xcb2a('0x3a')]=_['intersection'](_0x1b31b6[_0xcb2a('0x38')],_0x1b31b6[_0xcb2a('0x39')]);_0x29f30[_0xcb2a('0x3c')]=_[_0xcb2a('0x3b')](_0x1b31b6[_0xcb2a('0x38')],qs[_0xcb2a('0x3d')](_0x34d874[_0xcb2a('0x39')][_0xcb2a('0x3d')]));_0x29f30[_0xcb2a('0x3c')]=_0x29f30['attributes'][_0xcb2a('0x3e')]?_0x29f30[_0xcb2a('0x3c')]:_0x1b31b6[_0xcb2a('0x38')];_0x29f30[_0xcb2a('0x40')]=qs[_0xcb2a('0x41')](_0x34d874[_0xcb2a('0x39')][_0xcb2a('0x41')]);_0x29f30[_0xcb2a('0x42')]=qs['filters'](_[_0xcb2a('0x43')](_0x34d874[_0xcb2a('0x39')],_0x1b31b6[_0xcb2a('0x3a')]));if(_0x34d874['query'][_0xcb2a('0x44')]){_0x29f30['where']=_[_0xcb2a('0x45')](_0x29f30['where'],{'$or':_['map'](_0x29f30[_0xcb2a('0x3c')],function(_0x18f32b){var _0x487bd8={};_0x487bd8[_0x18f32b]={'$like':'%'+_0x34d874[_0xcb2a('0x39')][_0xcb2a('0x44')]+'%'};return _0x487bd8;})});}_0x29f30=_[_0xcb2a('0x45')]({},_0x29f30,_0x34d874[_0xcb2a('0x46')]);return _0x265791['getBlackLists'](_0x29f30);}})['then'](function(_0x5d73c3){if(_0x5d73c3){_0x36013b=_0x5d73c3[_0xcb2a('0x3e')];if(!_0x34d874[_0xcb2a('0x39')][_0xcb2a('0x3f')]('nolimit')){_0x29f30[_0xcb2a('0x20')]=qs[_0xcb2a('0x20')](_0x34d874[_0xcb2a('0x39')][_0xcb2a('0x20')]);_0x29f30['offset']=qs[_0xcb2a('0x1e')](_0x34d874[_0xcb2a('0x39')][_0xcb2a('0x1e')]);}return _0x265791[_0xcb2a('0xbc')](_0x29f30);}})[_0xcb2a('0x27')](function(_0x4fc784){if(_0x4fc784){return _0x4fc784?{'count':_0x36013b,'rows':_0x4fc784}:null;}})['then'](respondWithResult(_0x290451,null))[_0xcb2a('0x4e')](handleError(_0x290451,null));};exports[_0xcb2a('0xbd')]=function(_0x46be03,_0x58a0f6,_0xd5df16){var _0x1ea1a0,_0x49293f;return db[_0xcb2a('0x35')][_0xcb2a('0x54')]({'where':{'id':_0x46be03[_0xcb2a('0x4a')]['id']}})[_0xcb2a('0x27')](handleEntityNotFound(_0x58a0f6,null))[_0xcb2a('0x27')](function(_0x5a0727){if(_0x5a0727){_0x49293f=_0x5a0727;return _0x5a0727[_0xcb2a('0xbd')](_0x46be03['body'][_0xcb2a('0x80')],_[_0xcb2a('0x94')](_0x46be03[_0xcb2a('0x50')],[_0xcb2a('0x80'),'id'])||{});}return null;})[_0xcb2a('0x95')](function(_0x145857){var _0x407d1f;_0x1ea1a0=_0x145857||[];var _0x275461=[];if(_0x145857){for(var _0x214a3a=0x0;_0x214a3a<_0x145857[_0xcb2a('0x3e')];_0x214a3a+=0x1){var _0xc8f3ea=_0x145857[_0x214a3a][_0xcb2a('0x29')]({'plain':!![]});_0x407d1f=squel['insert']()[_0xcb2a('0xa2')](_0xcb2a('0xbe'))[_0xcb2a('0xa4')]([_0xcb2a('0xa7'),'ContactId',_0xcb2a('0xa6'),_0xcb2a('0x61'),_0xcb2a('0x5a'),_0xcb2a('0x5b')],squel['select']()[_0xcb2a('0x82')]('phone',_0xcb2a('0xa7'))[_0xcb2a('0x82')]('id',_0xcb2a('0xa8'))[_0xcb2a('0x82')](_0xc8f3ea['CmListId'][_0xcb2a('0x8b')](),_0xcb2a('0xa6'))[_0xcb2a('0x82')](_0x46be03[_0xcb2a('0x4a')]['id'][_0xcb2a('0x8b')](),'VoiceQueueId')['field']('NOW()',_0xcb2a('0x5a'))['field']('NOW()',_0xcb2a('0x5b'))[_0xcb2a('0xa9')](_0xcb2a('0xaa'))[_0xcb2a('0x42')](_0xcb2a('0xab'))[_0xcb2a('0x42')](_0xcb2a('0xb3'),_0xc8f3ea[_0xcb2a('0xac')][_0xcb2a('0x8b')]())[_0xcb2a('0x42')](_0xcb2a('0xad')))[_0xcb2a('0x8b')]();_0x275461['push'](db['sequelize'][_0xcb2a('0x39')](_0x407d1f));}return BPromise[_0xcb2a('0x8e')](_0x275461);}})[_0xcb2a('0x27')](function(){return _0x1ea1a0;})['then'](respondWithResult(_0x58a0f6,null))['catch'](handleError(_0x58a0f6,null));};exports[_0xcb2a('0xbf')]=function(_0x22a0d2,_0x31ae39,_0x41ddae){return db[_0xcb2a('0x35')][_0xcb2a('0x54')]({'where':{'id':_0x22a0d2['params']['id']}})['then'](handleEntityNotFound(_0x31ae39,null))['then'](function(_0x4b6331){if(_0x4b6331){return _0x4b6331['removeBlackLists'](_0x22a0d2['query'][_0xcb2a('0x80')]);}})[_0xcb2a('0x27')](function(_0x2ab840){if(_0x2ab840){return db[_0xcb2a('0x67')]['destroy']({'where':{'ListId':_0x22a0d2[_0xcb2a('0x39')][_0xcb2a('0x80')],'VoiceQueueId':_0x22a0d2[_0xcb2a('0x4a')]['id']}})[_0xcb2a('0x27')](function(){return _0x2ab840;});}})[_0xcb2a('0x27')](respondWithStatusCode(_0x31ae39,null))[_0xcb2a('0x4e')](handleError(_0x31ae39,null));};
\ No newline at end of file
+var _0x5226=['params','intersection','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','outbound','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','keys','omit','createdAt','updatedAt','user','userProfileId','update','getHoppers','CmHopper','findOne','CmHopperHistory','nolimit','VoiceQueueId','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','Team','getTeams','teams','User','Agents','online','interface','forEach','penalty','sequelize','transaction','addTeams','each','UserVoiceQueue','findOrCreate','UserVoiceQueueRt','upsert','format','SIP/%s','voicePause','emit','userVoiceQueue:save','removeTeams','ids','select','field','tq.TeamId','from','team_has_voice_queues','join','user_has_teams','VoiceQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','removeAgents','userVoiceQueue:remove','addAgents','isEmpty','isNil','all','isArray','getAgents','getMembers','getLists','CmList','addLists','YYYY-MM-DD\x20HH:mm:ss','dialCheckDuplicateType','always','insert','into','fromQuery','phone','scheduledAt','ContactId','ListId','CmListId','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','cm_hopper','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','cm_hopper_additional_phones','CmHopperId','OrderBy','h.id','ci.OrderBy+1','cm_contact_has_items','h.scheduledat=?','PHONE','removeLists','getBlackLists','addBlackLists','spread','cm_hopper_black','NOW()','removeBlackLists','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','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','localhost','socket.io-emitter','./voiceQueue.socket','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','apply','save','then','VoiceQueues','inbound','QueueCampaigns','filter','ignore','map','value','includes','type','find','UserProfileResource','destroy','error','stack','name','send','index','VoiceQueue','rawAttributes','fieldName','key','model','query','filters','fields','attributes','length','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show'];(function(_0x2ba54c,_0x3ac715){var _0x15eeb1=function(_0xf38406){while(--_0xf38406){_0x2ba54c['push'](_0x2ba54c['shift']());}};_0x15eeb1(++_0x3ac715);}(_0x5226,0x137));var _0x6522=function(_0x58dc41,_0x19cadf){_0x58dc41=_0x58dc41-0x0;var _0x4cd4fc=_0x5226[_0x58dc41];return _0x4cd4fc;};'use strict';var emlformat=require(_0x6522('0x0'));var rimraf=require(_0x6522('0x1'));var zipdir=require(_0x6522('0x2'));var jsonpatch=require(_0x6522('0x3'));var rp=require(_0x6522('0x4'));var moment=require('moment');var BPromise=require(_0x6522('0x5'));var Mustache=require(_0x6522('0x6'));var util=require(_0x6522('0x7'));var path=require('path');var sox=require(_0x6522('0x8'));var csv=require('to-csv');var ejs=require(_0x6522('0x9'));var fs=require('fs');var fs_extra=require(_0x6522('0xa'));var _=require(_0x6522('0xb'));var squel=require(_0x6522('0xc'));var crypto=require(_0x6522('0xd'));var jsforce=require(_0x6522('0xe'));var deskjs=require(_0x6522('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x6522('0x10'));var Redis=require(_0x6522('0x11'));var authService=require(_0x6522('0x12'));var qs=require(_0x6522('0x13'));var as=require(_0x6522('0x14'));var hardwareService=require(_0x6522('0x15'));var logger=require(_0x6522('0x16'))(_0x6522('0x17'));var utils=require(_0x6522('0x18'));var config=require(_0x6522('0x19'));var licenseUtil=require(_0x6522('0x1a'));var db=require(_0x6522('0x1b'))['db'];config[_0x6522('0x1c')]=_['defaults'](config[_0x6522('0x1c')],{'host':_0x6522('0x1d'),'port':0x18eb});var socket=require(_0x6522('0x1e'))(new Redis(config[_0x6522('0x1c')]));require(_0x6522('0x1f'))['register'](socket);function respondWithStatusCode(_0x3c855a,_0x2ab9a0){_0x2ab9a0=_0x2ab9a0||0xcc;return function(_0x26ed67){if(_0x26ed67){return _0x3c855a[_0x6522('0x20')](_0x2ab9a0);}return _0x3c855a[_0x6522('0x21')](_0x2ab9a0)[_0x6522('0x22')]();};}function respondWithResult(_0x31ddff,_0x1e12b7){_0x1e12b7=_0x1e12b7||0xc8;return function(_0x36a557){if(_0x36a557){return _0x31ddff[_0x6522('0x21')](_0x1e12b7)[_0x6522('0x23')](_0x36a557);}};}function respondWithFilteredResult(_0x434a84,_0x51a8e0){return function(_0x6f0909){if(_0x6f0909){var _0x1edcb6=typeof _0x51a8e0[_0x6522('0x24')]===_0x6522('0x25')&&typeof _0x51a8e0['limit']===_0x6522('0x25');var _0x9a5622=_0x6f0909['count'];var _0x38aae6=_0x1edcb6?0x0:_0x51a8e0['offset'];var _0x1bb7df=_0x1edcb6?_0x6f0909[_0x6522('0x26')]:_0x51a8e0[_0x6522('0x24')]+_0x51a8e0[_0x6522('0x27')];var _0x44bd23;if(_0x1bb7df>=_0x9a5622){_0x1bb7df=_0x9a5622;_0x44bd23=0xc8;}else{_0x44bd23=0xce;}_0x434a84[_0x6522('0x21')](_0x44bd23);return _0x434a84['set'](_0x6522('0x28'),_0x38aae6+'-'+_0x1bb7df+'/'+_0x9a5622)[_0x6522('0x23')](_0x6f0909);}return null;};}function patchUpdates(_0x13ec44){return function(_0x14ba8f){try{jsonpatch[_0x6522('0x29')](_0x14ba8f,_0x13ec44,!![]);}catch(_0x16c3cf){return BPromise['reject'](_0x16c3cf);}return _0x14ba8f[_0x6522('0x2a')]();};}function saveUpdates(_0x415f16,_0xcb377c){return function(_0x2c3269){if(_0x2c3269){return _0x2c3269['update'](_0x415f16)['then'](function(_0x263d7d){return _0x263d7d;});}return null;};}function removeEntity(_0x38045b,_0x2c20dc){return function(_0x29b7f4){if(_0x29b7f4){return _0x29b7f4['destroy']()[_0x6522('0x2b')](function(){var _0x1af303=_0x29b7f4['get']({'plain':!![]});var _0x375555=[{'name':_0x6522('0x2c'),'value':_0x6522('0x2d'),'ignore':![]},{'name':_0x6522('0x2e'),'value':'outbound','ignore':![]}];var _0x204305=_(_0x375555)[_0x6522('0x2f')](_0x6522('0x30'))[_0x6522('0x31')](_0x6522('0x32'))[_0x6522('0x32')]();if(_[_0x6522('0x33')](_0x204305,_0x1af303[_0x6522('0x34')])){return;}var _0xdec8cc=_[_0x6522('0x35')](_0x375555,[_0x6522('0x32'),_0x1af303[_0x6522('0x34')]])['name'];return db[_0x6522('0x36')][_0x6522('0x37')]({'where':{'type':_0xdec8cc,'resourceId':_0x1af303['id']}})[_0x6522('0x2b')](function(){return _0x29b7f4;});})[_0x6522('0x2b')](function(){_0x38045b[_0x6522('0x21')](0xcc)[_0x6522('0x22')]();});}};}function handleEntityNotFound(_0x527deb,_0x432bd3){return function(_0x280def){if(!_0x280def){_0x527deb[_0x6522('0x20')](0x194);}return _0x280def;};}function handleError(_0x1ae339,_0x43bb7c){_0x43bb7c=_0x43bb7c||0x1f4;return function(_0x4496c8){logger[_0x6522('0x38')](_0x4496c8[_0x6522('0x39')]);if(_0x4496c8[_0x6522('0x3a')]){delete _0x4496c8[_0x6522('0x3a')];}_0x1ae339[_0x6522('0x21')](_0x43bb7c)[_0x6522('0x3b')](_0x4496c8);};}exports[_0x6522('0x3c')]=function(_0x5cce37,_0x5c00df){var _0x4a8108={},_0x38f92e={},_0xa69153={'count':0x0,'rows':[]};var _0x28cafc=_[_0x6522('0x31')](db[_0x6522('0x3d')][_0x6522('0x3e')],function(_0x499956){return{'name':_0x499956[_0x6522('0x3f')],'type':_0x499956[_0x6522('0x34')][_0x6522('0x40')]};});_0x38f92e[_0x6522('0x41')]=_[_0x6522('0x31')](_0x28cafc,'name');_0x38f92e['query']=_['keys'](_0x5cce37[_0x6522('0x42')]);_0x38f92e[_0x6522('0x43')]=_['intersection'](_0x38f92e['model'],_0x38f92e[_0x6522('0x42')]);_0x4a8108['attributes']=_['intersection'](_0x38f92e[_0x6522('0x41')],qs[_0x6522('0x44')](_0x5cce37[_0x6522('0x42')][_0x6522('0x44')]));_0x4a8108[_0x6522('0x45')]=_0x4a8108['attributes'][_0x6522('0x46')]?_0x4a8108[_0x6522('0x45')]:_0x38f92e[_0x6522('0x41')];if(!_0x5cce37[_0x6522('0x42')][_0x6522('0x47')]('nolimit')){_0x4a8108[_0x6522('0x27')]=qs[_0x6522('0x27')](_0x5cce37['query']['limit']);_0x4a8108[_0x6522('0x24')]=qs[_0x6522('0x24')](_0x5cce37[_0x6522('0x42')][_0x6522('0x24')]);}_0x4a8108[_0x6522('0x48')]=qs['sort'](_0x5cce37[_0x6522('0x42')][_0x6522('0x49')]);_0x4a8108[_0x6522('0x4a')]=qs[_0x6522('0x43')](_[_0x6522('0x4b')](_0x5cce37[_0x6522('0x42')],_0x38f92e['filters']),_0x28cafc);if(_0x5cce37[_0x6522('0x42')]['filter']){_0x4a8108['where']=_[_0x6522('0x4c')](_0x4a8108[_0x6522('0x4a')],{'$or':_[_0x6522('0x31')](_0x28cafc,function(_0x14d658){if(_0x14d658['type']!==_0x6522('0x4d')){var _0x358a20={};_0x358a20[_0x14d658[_0x6522('0x3a')]]={'$like':'%'+_0x5cce37['query'][_0x6522('0x2f')]+'%'};return _0x358a20;}})});}_0x4a8108=_['merge']({},_0x4a8108,_0x5cce37[_0x6522('0x4e')]);var _0x3cc083={'where':_0x4a8108[_0x6522('0x4a')]};return db['VoiceQueue'][_0x6522('0x26')](_0x3cc083)[_0x6522('0x2b')](function(_0x2fe032){_0xa69153[_0x6522('0x26')]=_0x2fe032;if(_0x5cce37[_0x6522('0x42')][_0x6522('0x4f')]){_0x4a8108[_0x6522('0x50')]=[{'all':!![]}];}return db[_0x6522('0x3d')][_0x6522('0x51')](_0x4a8108);})[_0x6522('0x2b')](function(_0x56fe82){_0xa69153[_0x6522('0x52')]=_0x56fe82;return _0xa69153;})[_0x6522('0x2b')](respondWithFilteredResult(_0x5c00df,_0x4a8108))[_0x6522('0x53')](handleError(_0x5c00df,null));};exports[_0x6522('0x54')]=function(_0x18dbc7,_0x44156d){var _0x475ee6={'raw':![],'where':{'id':_0x18dbc7[_0x6522('0x55')]['id']}},_0xe7e589={};_0xe7e589[_0x6522('0x41')]=_['keys'](db['VoiceQueue'][_0x6522('0x3e')]);_0xe7e589[_0x6522('0x42')]=_['keys'](_0x18dbc7[_0x6522('0x42')]);_0xe7e589[_0x6522('0x43')]=_['intersection'](_0xe7e589['model'],_0xe7e589['query']);_0x475ee6['attributes']=_[_0x6522('0x56')](_0xe7e589[_0x6522('0x41')],qs[_0x6522('0x44')](_0x18dbc7[_0x6522('0x42')][_0x6522('0x44')]));_0x475ee6[_0x6522('0x45')]=_0x475ee6['attributes'][_0x6522('0x46')]?_0x475ee6[_0x6522('0x45')]:_0xe7e589['model'];if(_0x18dbc7[_0x6522('0x42')][_0x6522('0x4f')]){_0x475ee6[_0x6522('0x50')]=[{'all':!![]}];}_0x475ee6=_[_0x6522('0x4c')]({},_0x475ee6,_0x18dbc7[_0x6522('0x4e')]);return db['VoiceQueue'][_0x6522('0x35')](_0x475ee6)[_0x6522('0x2b')](handleEntityNotFound(_0x44156d,null))[_0x6522('0x2b')](respondWithResult(_0x44156d,null))['catch'](handleError(_0x44156d,null));};exports[_0x6522('0x57')]=function(_0x183a09,_0x2e983b){return db[_0x6522('0x3d')][_0x6522('0x57')](_0x183a09[_0x6522('0x58')],{})['then'](function(_0x3d45a7){var _0x59e1db=_0x183a09['user'][_0x6522('0x59')]({'plain':!![]});if(!_0x59e1db)throw new Error(_0x6522('0x5a'));if(_0x59e1db['role']==='user'){var _0x3bdc82=_0x3d45a7['get']({'plain':!![]});var _0x50e8e1=[{'name':_0x6522('0x2c'),'value':_0x6522('0x2d')},{'name':_0x6522('0x2e'),'value':_0x6522('0x5b')}];var _0x25f878=_[_0x6522('0x35')](_0x50e8e1,[_0x6522('0x32'),_0x3bdc82['type']])[_0x6522('0x3a')];return db[_0x6522('0x5c')][_0x6522('0x35')]({'where':{'name':_0x25f878,'userProfileId':_0x59e1db['userProfileId']},'raw':!![]})[_0x6522('0x2b')](function(_0x5637ab){if(_0x5637ab&&_0x5637ab[_0x6522('0x5d')]===0x0){return db[_0x6522('0x36')][_0x6522('0x57')]({'name':_0x3bdc82[_0x6522('0x3a')],'resourceId':_0x3bdc82['id'],'type':_0x5637ab['name'],'sectionId':_0x5637ab['id']},{})[_0x6522('0x2b')](function(){return _0x3d45a7;});}else{return _0x3d45a7;}})[_0x6522('0x53')](function(_0x1fdb2e){logger[_0x6522('0x38')](_0x6522('0x5e'),_0x1fdb2e);throw _0x1fdb2e;});}return _0x3d45a7;})[_0x6522('0x2b')](respondWithResult(_0x2e983b,0xc9))[_0x6522('0x53')](handleError(_0x2e983b,null));};exports[_0x6522('0x5f')]=function(_0x3fe09e,_0x583399){var _0x366ada={'where':{'id':_0x3fe09e['params']['id']}},_0x5c08fa={};_0x5c08fa[_0x6522('0x41')]=_[_0x6522('0x60')](db['VoiceQueue'][_0x6522('0x3e')]);_0x366ada[_0x6522('0x45')]=_[_0x6522('0x56')](_0x5c08fa[_0x6522('0x41')],qs[_0x6522('0x44')](_0x3fe09e['query'][_0x6522('0x44')]));_0x366ada[_0x6522('0x45')]=_0x366ada[_0x6522('0x45')][_0x6522('0x46')]?_0x366ada[_0x6522('0x45')]:_0x5c08fa['model'];if(_0x3fe09e[_0x6522('0x42')][_0x6522('0x4f')]){_0x366ada['include']=[{'all':!![]}];}_0x366ada=_['merge']({},_0x366ada,_0x3fe09e[_0x6522('0x4e')]);return db[_0x6522('0x3d')][_0x6522('0x35')](_0x366ada)[_0x6522('0x2b')](handleEntityNotFound(_0x583399,null))[_0x6522('0x2b')](function(_0x44fcee){if(_0x44fcee){var _0x3eeae5=_0x44fcee[_0x6522('0x59')]({'plain':!![]});_0x3eeae5=qs[_0x6522('0x61')](_0x3eeae5,['id','createdAt','updatedAt']);_0x3fe09e[_0x6522('0x58')]=_[_0x6522('0x61')](_0x3fe09e[_0x6522('0x58')],['id',_0x6522('0x62'),_0x6522('0x63')]);return db[_0x6522('0x3d')][_0x6522('0x57')](_[_0x6522('0x4c')](_0x3eeae5,_0x3fe09e[_0x6522('0x58')]),{'include':_0x3fe09e[_0x6522('0x42')][_0x6522('0x4f')]?[{'all':!![]}]:undefined})[_0x6522('0x2b')](function(_0x52efd1){var _0x1cac9e=_0x3fe09e[_0x6522('0x64')][_0x6522('0x59')]({'plain':!![]});if(!_0x1cac9e)throw new Error(_0x6522('0x5a'));if(_0x1cac9e['role']===_0x6522('0x64')){var _0x602bc4=_0x52efd1['get']({'plain':!![]});var _0x1fa69e=[{'name':_0x6522('0x2c'),'value':_0x6522('0x2d')},{'name':_0x6522('0x2e'),'value':_0x6522('0x5b')}];var _0x11f1e1=_[_0x6522('0x35')](_0x1fa69e,[_0x6522('0x32'),_0x602bc4[_0x6522('0x34')]])[_0x6522('0x3a')];return db[_0x6522('0x5c')][_0x6522('0x35')]({'where':{'name':_0x11f1e1,'userProfileId':_0x1cac9e[_0x6522('0x65')]},'raw':!![]})['then'](function(_0x55766c){if(_0x55766c&&_0x55766c[_0x6522('0x5d')]===0x0){return db['UserProfileResource'][_0x6522('0x57')]({'name':_0x602bc4['name'],'resourceId':_0x602bc4['id'],'type':_0x55766c['name'],'sectionId':_0x55766c['id']},{})['then'](function(){return _0x52efd1;});}else{return _0x52efd1;}})[_0x6522('0x53')](function(_0x56f7bc){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x56f7bc);throw _0x56f7bc;});}return _0x52efd1;});}})[_0x6522('0x2b')](respondWithResult(_0x583399,0xc9))['catch'](handleError(_0x583399,null));};exports[_0x6522('0x66')]=function(_0x2124f6,_0x4c4b4c){if(_0x2124f6['body']['id']){delete _0x2124f6[_0x6522('0x58')]['id'];}return db[_0x6522('0x3d')]['find']({'where':{'id':_0x2124f6[_0x6522('0x55')]['id']}})[_0x6522('0x2b')](handleEntityNotFound(_0x4c4b4c,null))[_0x6522('0x2b')](saveUpdates(_0x2124f6[_0x6522('0x58')],null))[_0x6522('0x2b')](respondWithResult(_0x4c4b4c,null))[_0x6522('0x53')](handleError(_0x4c4b4c,null));};exports['destroy']=function(_0x2e45dd,_0x4d6fbe){return db['VoiceQueue'][_0x6522('0x35')]({'where':{'id':_0x2e45dd[_0x6522('0x55')]['id']}})[_0x6522('0x2b')](handleEntityNotFound(_0x4d6fbe,null))['then'](removeEntity(_0x4d6fbe,null))[_0x6522('0x53')](handleError(_0x4d6fbe,null));};exports[_0x6522('0x67')]=function(_0x535b78,_0x2b773b,_0x199428){var _0x5a3443={'raw':![],'where':{}};var _0x1ec7a4={};var _0x2f7a37={'count':0x0,'rows':[]};return db[_0x6522('0x3d')]['findOne']({'where':{'id':_0x535b78[_0x6522('0x55')]['id']}})[_0x6522('0x2b')](handleEntityNotFound(_0x2b773b,null))[_0x6522('0x2b')](function(_0x34a25a){if(_0x34a25a){_0x1ec7a4[_0x6522('0x41')]=_[_0x6522('0x60')](db['CmHopper'][_0x6522('0x3e')]);_0x1ec7a4['query']=_[_0x6522('0x60')](_0x535b78[_0x6522('0x42')]);_0x1ec7a4[_0x6522('0x43')]=_[_0x6522('0x56')](_0x1ec7a4[_0x6522('0x41')],_0x1ec7a4[_0x6522('0x42')]);_0x5a3443[_0x6522('0x45')]=_[_0x6522('0x56')](_0x1ec7a4[_0x6522('0x41')],qs[_0x6522('0x44')](_0x535b78[_0x6522('0x42')][_0x6522('0x44')]));_0x5a3443[_0x6522('0x45')]=_0x5a3443[_0x6522('0x45')][_0x6522('0x46')]?_0x5a3443[_0x6522('0x45')]:_0x1ec7a4['model'];if(!_0x535b78[_0x6522('0x42')][_0x6522('0x47')]('nolimit')){_0x5a3443[_0x6522('0x27')]=qs[_0x6522('0x27')](_0x535b78['query'][_0x6522('0x27')]);_0x5a3443[_0x6522('0x24')]=qs[_0x6522('0x24')](_0x535b78[_0x6522('0x42')]['offset']);}_0x5a3443['order']=qs[_0x6522('0x49')](_0x535b78[_0x6522('0x42')]['sort']);_0x5a3443[_0x6522('0x4a')]=qs[_0x6522('0x43')](_[_0x6522('0x4b')](_0x535b78['query'],_0x1ec7a4[_0x6522('0x43')]));_0x5a3443[_0x6522('0x4a')]['VoiceQueueId']=_0x34a25a['id'];if(_0x535b78['query'][_0x6522('0x2f')]){_0x5a3443[_0x6522('0x4a')]=_['merge'](_0x5a3443[_0x6522('0x4a')],{'$or':_['map'](_0x5a3443[_0x6522('0x45')],function(_0x3b6e7d){var _0xb7db0b={};_0xb7db0b[_0x3b6e7d]={'$like':'%'+_0x535b78[_0x6522('0x42')][_0x6522('0x2f')]+'%'};return _0xb7db0b;})});}_0x5a3443=_['merge']({},_0x5a3443,_0x535b78['options']);return db[_0x6522('0x68')][_0x6522('0x26')]({'where':_0x5a3443[_0x6522('0x4a')]})['then'](function(_0xbda33a){_0x2f7a37[_0x6522('0x26')]=_0xbda33a;if(_0x535b78['query']['includeAll']){_0x5a3443[_0x6522('0x50')]=[{'all':!![]}];}return db[_0x6522('0x68')][_0x6522('0x51')](_0x5a3443);})[_0x6522('0x2b')](function(_0x4673a3){_0x2f7a37[_0x6522('0x52')]=_0x4673a3;return _0x2f7a37;});}})[_0x6522('0x2b')](respondWithFilteredResult(_0x2b773b,_0x5a3443))[_0x6522('0x53')](handleError(_0x2b773b,null));};exports['getHopperHistories']=function(_0x5eb09b,_0x4c89da,_0x36b3c0){var _0x11ea56={'raw':!![],'where':{}};var _0x5de387={};var _0x2720f1={'count':0x0,'rows':[]};return db[_0x6522('0x3d')][_0x6522('0x69')]({'where':{'id':_0x5eb09b[_0x6522('0x55')]['id']}})[_0x6522('0x2b')](handleEntityNotFound(_0x4c89da,null))['then'](function(_0x53f5bf){if(_0x53f5bf){_0x5de387[_0x6522('0x41')]=_[_0x6522('0x60')](db[_0x6522('0x6a')][_0x6522('0x3e')]);_0x5de387[_0x6522('0x42')]=_['keys'](_0x5eb09b['query']);_0x5de387[_0x6522('0x43')]=_['intersection'](_0x5de387[_0x6522('0x41')],_0x5de387[_0x6522('0x42')]);_0x11ea56[_0x6522('0x45')]=_[_0x6522('0x56')](_0x5de387[_0x6522('0x41')],qs['fields'](_0x5eb09b[_0x6522('0x42')][_0x6522('0x44')]));_0x11ea56[_0x6522('0x45')]=_0x11ea56[_0x6522('0x45')][_0x6522('0x46')]?_0x11ea56[_0x6522('0x45')]:_0x5de387['model'];if(!_0x5eb09b['query'][_0x6522('0x47')](_0x6522('0x6b'))){_0x11ea56[_0x6522('0x27')]=qs[_0x6522('0x27')](_0x5eb09b['query']['limit']);_0x11ea56[_0x6522('0x24')]=qs['offset'](_0x5eb09b['query'][_0x6522('0x24')]);}_0x11ea56[_0x6522('0x48')]=qs[_0x6522('0x49')](_0x5eb09b[_0x6522('0x42')][_0x6522('0x49')]);_0x11ea56[_0x6522('0x4a')]=qs['filters'](_['pick'](_0x5eb09b[_0x6522('0x42')],_0x5de387['filters']));_0x11ea56[_0x6522('0x4a')][_0x6522('0x6c')]=_0x53f5bf['id'];if(_0x5eb09b[_0x6522('0x42')][_0x6522('0x2f')]){_0x11ea56[_0x6522('0x4a')]=_[_0x6522('0x4c')](_0x11ea56[_0x6522('0x4a')],{'$or':_['map'](_0x11ea56[_0x6522('0x45')],function(_0x4d95b3){var _0x5b1240={};_0x5b1240[_0x4d95b3]={'$like':'%'+_0x5eb09b[_0x6522('0x42')]['filter']+'%'};return _0x5b1240;})});}_0x11ea56=_['merge']({},_0x11ea56,_0x5eb09b[_0x6522('0x4e')]);return db[_0x6522('0x6a')][_0x6522('0x26')]({'where':_0x11ea56['where']})[_0x6522('0x2b')](function(_0x14d854){_0x2720f1['count']=_0x14d854;if(_0x5eb09b[_0x6522('0x42')]['includeAll']){_0x11ea56[_0x6522('0x50')]=[{'all':!![]}];}return db[_0x6522('0x6a')][_0x6522('0x51')](_0x11ea56);})[_0x6522('0x2b')](function(_0x5749a0){_0x2720f1[_0x6522('0x52')]=_0x5749a0;return _0x2720f1;});}})[_0x6522('0x2b')](respondWithFilteredResult(_0x4c89da,_0x11ea56))[_0x6522('0x53')](handleError(_0x4c89da,null));};exports[_0x6522('0x6d')]=function(_0x3298a7,_0x3b2de9,_0xa63e0e){var _0x556446={'raw':!![],'where':{}};var _0x969bd4={};var _0x35791d={'count':0x0,'rows':[]};return db['VoiceQueue'][_0x6522('0x69')]({'where':{'id':_0x3298a7[_0x6522('0x55')]['id']}})[_0x6522('0x2b')](handleEntityNotFound(_0x3b2de9,null))['then'](function(_0x3e3933){if(_0x3e3933){_0x969bd4['model']=_[_0x6522('0x60')](db[_0x6522('0x6e')]['rawAttributes']);_0x969bd4[_0x6522('0x42')]=_[_0x6522('0x60')](_0x3298a7['query']);_0x969bd4['filters']=_[_0x6522('0x56')](_0x969bd4[_0x6522('0x41')],_0x969bd4[_0x6522('0x42')]);_0x556446[_0x6522('0x45')]=_[_0x6522('0x56')](_0x969bd4['model'],qs[_0x6522('0x44')](_0x3298a7[_0x6522('0x42')][_0x6522('0x44')]));_0x556446['attributes']=_0x556446[_0x6522('0x45')][_0x6522('0x46')]?_0x556446['attributes']:_0x969bd4[_0x6522('0x41')];if(!_0x3298a7['query'][_0x6522('0x47')](_0x6522('0x6b'))){_0x556446['limit']=qs['limit'](_0x3298a7[_0x6522('0x42')][_0x6522('0x27')]);_0x556446[_0x6522('0x24')]=qs['offset'](_0x3298a7['query'][_0x6522('0x24')]);}_0x556446['order']=qs[_0x6522('0x49')](_0x3298a7['query']['sort']);_0x556446['where']=qs[_0x6522('0x43')](_[_0x6522('0x4b')](_0x3298a7[_0x6522('0x42')],_0x969bd4[_0x6522('0x43')]));_0x556446[_0x6522('0x4a')][_0x6522('0x6c')]=_0x3e3933['id'];if(_0x3298a7[_0x6522('0x42')][_0x6522('0x2f')]){_0x556446[_0x6522('0x4a')]=_[_0x6522('0x4c')](_0x556446[_0x6522('0x4a')],{'$or':_['map'](_0x556446['attributes'],function(_0x365e07){var _0x4a64d0={};_0x4a64d0[_0x365e07]={'$like':'%'+_0x3298a7[_0x6522('0x42')]['filter']+'%'};return _0x4a64d0;})});}_0x556446=_[_0x6522('0x4c')]({},_0x556446,_0x3298a7[_0x6522('0x4e')]);return db['CmHopperFinal'][_0x6522('0x26')]({'where':_0x556446[_0x6522('0x4a')]})['then'](function(_0x123740){_0x35791d[_0x6522('0x26')]=_0x123740;if(_0x3298a7[_0x6522('0x42')][_0x6522('0x4f')]){_0x556446[_0x6522('0x50')]=[{'all':!![]}];}return db[_0x6522('0x6e')][_0x6522('0x51')](_0x556446);})[_0x6522('0x2b')](function(_0x5abf6a){_0x35791d['rows']=_0x5abf6a;return _0x35791d;});}})[_0x6522('0x2b')](respondWithFilteredResult(_0x3b2de9,_0x556446))['catch'](handleError(_0x3b2de9,null));};exports[_0x6522('0x6f')]=function(_0x4ed7d7,_0x160e3d,_0x4e9657){var _0x474d7f={'raw':!![],'where':{}};var _0x3e1457={};var _0x26a960={'count':0x0,'rows':[]};return db[_0x6522('0x3d')][_0x6522('0x69')]({'where':{'id':_0x4ed7d7[_0x6522('0x55')]['id']}})['then'](handleEntityNotFound(_0x160e3d,null))['then'](function(_0x17e2bc){if(_0x17e2bc){_0x3e1457[_0x6522('0x41')]=_['keys'](db[_0x6522('0x70')][_0x6522('0x3e')]);_0x3e1457[_0x6522('0x42')]=_[_0x6522('0x60')](_0x4ed7d7[_0x6522('0x42')]);_0x3e1457['filters']=_[_0x6522('0x56')](_0x3e1457['model'],_0x3e1457[_0x6522('0x42')]);_0x474d7f[_0x6522('0x45')]=_[_0x6522('0x56')](_0x3e1457[_0x6522('0x41')],qs[_0x6522('0x44')](_0x4ed7d7[_0x6522('0x42')][_0x6522('0x44')]));_0x474d7f[_0x6522('0x45')]=_0x474d7f[_0x6522('0x45')][_0x6522('0x46')]?_0x474d7f['attributes']:_0x3e1457[_0x6522('0x41')];if(!_0x4ed7d7[_0x6522('0x42')][_0x6522('0x47')](_0x6522('0x6b'))){_0x474d7f[_0x6522('0x27')]=qs[_0x6522('0x27')](_0x4ed7d7[_0x6522('0x42')][_0x6522('0x27')]);_0x474d7f['offset']=qs[_0x6522('0x24')](_0x4ed7d7['query']['offset']);}_0x474d7f[_0x6522('0x48')]=qs[_0x6522('0x49')](_0x4ed7d7[_0x6522('0x42')][_0x6522('0x49')]);_0x474d7f[_0x6522('0x4a')]=qs[_0x6522('0x43')](_[_0x6522('0x4b')](_0x4ed7d7[_0x6522('0x42')],_0x3e1457[_0x6522('0x43')]));_0x474d7f[_0x6522('0x4a')][_0x6522('0x6c')]=_0x17e2bc['id'];if(_0x4ed7d7[_0x6522('0x42')]['filter']){_0x474d7f[_0x6522('0x4a')]=_[_0x6522('0x4c')](_0x474d7f[_0x6522('0x4a')],{'$or':_[_0x6522('0x31')](_0x474d7f[_0x6522('0x45')],function(_0x45582a){var _0x32b9fc={};_0x32b9fc[_0x45582a]={'$like':'%'+_0x4ed7d7[_0x6522('0x42')][_0x6522('0x2f')]+'%'};return _0x32b9fc;})});}_0x474d7f=_[_0x6522('0x4c')]({},_0x474d7f,_0x4ed7d7[_0x6522('0x4e')]);return db['CmHopperBlack'][_0x6522('0x26')]({'where':_0x474d7f[_0x6522('0x4a')]})[_0x6522('0x2b')](function(_0x21bf1b){_0x26a960[_0x6522('0x26')]=_0x21bf1b;if(_0x4ed7d7[_0x6522('0x42')][_0x6522('0x4f')]){_0x474d7f[_0x6522('0x50')]=[{'all':!![]}];}return db[_0x6522('0x70')][_0x6522('0x51')](_0x474d7f);})['then'](function(_0x5f33d6){_0x26a960['rows']=_0x5f33d6;return _0x26a960;});}})[_0x6522('0x2b')](respondWithFilteredResult(_0x160e3d,_0x474d7f))[_0x6522('0x53')](handleError(_0x160e3d,null));};exports['getTeams']=function(_0x38dbd1,_0x2507d4,_0x33198a){var _0x508ea4={};var _0x12fc92={};var _0x5dc002;var _0x1e1f31;return db[_0x6522('0x3d')][_0x6522('0x69')]({'where':{'id':_0x38dbd1['params']['id']}})[_0x6522('0x2b')](handleEntityNotFound(_0x2507d4,null))['then'](function(_0x55f31d){if(_0x55f31d){_0x5dc002=_0x55f31d;_0x12fc92[_0x6522('0x41')]=_[_0x6522('0x60')](db[_0x6522('0x71')][_0x6522('0x3e')]);_0x12fc92[_0x6522('0x42')]=_[_0x6522('0x60')](_0x38dbd1[_0x6522('0x42')]);_0x12fc92[_0x6522('0x43')]=_[_0x6522('0x56')](_0x12fc92[_0x6522('0x41')],_0x12fc92[_0x6522('0x42')]);_0x508ea4[_0x6522('0x45')]=_[_0x6522('0x56')](_0x12fc92['model'],qs[_0x6522('0x44')](_0x38dbd1[_0x6522('0x42')][_0x6522('0x44')]));_0x508ea4[_0x6522('0x45')]=_0x508ea4['attributes'][_0x6522('0x46')]?_0x508ea4['attributes']:_0x12fc92[_0x6522('0x41')];_0x508ea4[_0x6522('0x48')]=qs[_0x6522('0x49')](_0x38dbd1[_0x6522('0x42')][_0x6522('0x49')]);_0x508ea4['where']=qs[_0x6522('0x43')](_[_0x6522('0x4b')](_0x38dbd1['query'],_0x12fc92[_0x6522('0x43')]));if(_0x38dbd1[_0x6522('0x42')][_0x6522('0x2f')]){_0x508ea4[_0x6522('0x4a')]=_[_0x6522('0x4c')](_0x508ea4[_0x6522('0x4a')],{'$or':_[_0x6522('0x31')](_0x508ea4[_0x6522('0x45')],function(_0x3fc2f8){var _0x476e7e={};_0x476e7e[_0x3fc2f8]={'$like':'%'+_0x38dbd1[_0x6522('0x42')]['filter']+'%'};return _0x476e7e;})});}_0x508ea4=_[_0x6522('0x4c')]({},_0x508ea4,_0x38dbd1[_0x6522('0x4e')]);return _0x5dc002[_0x6522('0x72')](_0x508ea4);}})[_0x6522('0x2b')](function(_0xc7fcae){if(_0xc7fcae){_0x1e1f31=_0xc7fcae[_0x6522('0x46')];if(!_0x38dbd1[_0x6522('0x42')][_0x6522('0x47')](_0x6522('0x6b'))){_0x508ea4['limit']=qs[_0x6522('0x27')](_0x38dbd1['query'][_0x6522('0x27')]);_0x508ea4[_0x6522('0x24')]=qs['offset'](_0x38dbd1[_0x6522('0x42')][_0x6522('0x24')]);}return _0x5dc002['getTeams'](_0x508ea4);}})[_0x6522('0x2b')](function(_0x51a70d){if(_0x51a70d){return _0x51a70d?{'count':_0x1e1f31,'rows':_0x51a70d}:null;}})['then'](respondWithResult(_0x2507d4,null))[_0x6522('0x53')](handleError(_0x2507d4,null));};exports['addTeams']=function(_0x17b423,_0x711096,_0x513d14){var _0x3b6236=_0x17b423['body'][_0x6522('0x73')];var _0x100374=_[_0x6522('0x31')](_0x3b6236,'id');return db[_0x6522('0x71')][_0x6522('0x51')]({'where':{'id':_0x100374},'attributes':['id'],'include':[{'model':db[_0x6522('0x74')],'as':_0x6522('0x75'),'attributes':['id',_0x6522('0x3a'),_0x6522('0x76'),'voicePause',_0x6522('0x77')],'raw':!![]}]})[_0x6522('0x2b')](function(_0x329ea){if(_0x329ea){var _0x231dbd=_['flatMap'](_0x329ea,function(_0x1511ef){var _0x5e046a=_0x1511ef[_0x6522('0x59')]({'plain':!![]});_0x5e046a[_0x6522('0x75')][_0x6522('0x78')](function(_0x583ede){_0x583ede[_0x6522('0x79')]=_[_0x6522('0x35')](_0x3b6236,{'id':_0x5e046a['id']})['penalty'];});return _0x5e046a[_0x6522('0x75')];});return db['VoiceQueue'][_0x6522('0x35')]({'where':{'id':_0x17b423[_0x6522('0x55')]['id']}})[_0x6522('0x2b')](function(_0x48db18){return db[_0x6522('0x7a')][_0x6522('0x7b')](function(_0x3810d3){return _0x48db18[_0x6522('0x7c')](_0x100374,{'transaction':_0x3810d3})[_0x6522('0x2b')](function(){return BPromise['each'](_0x3b6236,function(_0x594b14){return db['TeamVoiceQueue']['upsert']({'TeamId':_0x594b14['id'],'VoiceQueueId':_0x17b423['params']['id'],'penalty':_0x594b14['penalty']},{'transaction':_0x3810d3});});})[_0x6522('0x2b')](function(){return BPromise[_0x6522('0x7d')](_0x231dbd,function(_0x56dce4){return db[_0x6522('0x7e')][_0x6522('0x7f')]({'where':{'UserId':_0x56dce4['id'],'VoiceQueueId':_0x17b423[_0x6522('0x55')]['id']},'defaults':{'penalty':_0x56dce4[_0x6522('0x79')]},'transaction':_0x3810d3});});})['then'](function(){return BPromise['each'](_[_0x6522('0x2f')](_0x231dbd,{'online':!![]}),function(_0x317902){return db[_0x6522('0x80')][_0x6522('0x81')]({'membername':_0x317902[_0x6522('0x3a')],'UserId':_0x317902['id'],'queue_name':_0x48db18[_0x6522('0x3a')],'VoiceQueueId':_0x48db18['id'],'interface':_['isNil'](_0x317902[_0x6522('0x77')])?util[_0x6522('0x82')](_0x6522('0x83'),_0x317902['name']):_0x317902[_0x6522('0x77')],'paused':_0x317902[_0x6522('0x84')]||![],'penalty':_0x317902[_0x6522('0x79')]},{'transaction':_0x3810d3});});})['then'](function(){_0x231dbd[_0x6522('0x78')](function(_0x4d91f9){socket[_0x6522('0x85')](_0x6522('0x86'),{'UserId':_0x4d91f9['id'],'VoiceQueueId':_0x48db18['id']});});});});});}})[_0x6522('0x2b')](respondWithStatusCode(_0x711096,null))[_0x6522('0x53')](handleError(_0x711096,null));};exports[_0x6522('0x87')]=function(_0x5e7f75,_0x13daa9,_0x45d205){return db[_0x6522('0x71')][_0x6522('0x51')]({'where':{'id':_0x5e7f75[_0x6522('0x42')][_0x6522('0x88')]},'attributes':['id'],'include':[{'model':db[_0x6522('0x74')],'as':_0x6522('0x75'),'attributes':['id'],'raw':!![]}]})[_0x6522('0x2b')](handleEntityNotFound(_0x13daa9,null))['then'](function(_0x2f85eb){var _0x5c3b61=_[_0x6522('0x31')](_0x2f85eb,'id');var _0x3fb9b2=[];var _0x3e1e7f=[];var _0x117569=squel[_0x6522('0x89')]();_0x117569[_0x6522('0x8a')](_0x6522('0x8b'))[_0x6522('0x8c')](_0x6522('0x8d'),'tq')[_0x6522('0x8e')](_0x6522('0x8f'),'ut','ut.TeamId\x20=\x20tq.TeamId')['where'](_0x6522('0x90'),_0x5e7f75[_0x6522('0x55')]['id']);for(var _0x1d4398=0x0;_0x1d4398<_0x2f85eb[_0x6522('0x46')];_0x1d4398+=0x1){let _0x39f128=_0x2f85eb[_0x1d4398];for(var _0x3051cf=0x0;_0x3051cf<_0x39f128[_0x6522('0x75')][_0x6522('0x46')];_0x3051cf+=0x1){let _0x176e8d=_0x39f128['Agents'][_0x3051cf];var _0x286cb4=_0x117569[_0x6522('0x5f')]();_0x286cb4[_0x6522('0x4a')](_0x6522('0x91'),_0x176e8d['id']);_0x3e1e7f[_0x6522('0x92')](db[_0x6522('0x7a')]['query'](_0x286cb4[_0x6522('0x93')](),{'type':db['sequelize'][_0x6522('0x94')][_0x6522('0x95')]})['then'](function(_0x508711){if(_0x508711[_0x6522('0x46')]===0x1){return _0x176e8d['id'];}else{var _0x45691f=_[_0x6522('0x96')](_['map'](_0x508711,_0x6522('0x97')),function(_0x3b9ce9){return _[_0x6522('0x33')](_0x5c3b61,_0x3b9ce9);});if(_0x45691f){return _0x176e8d['id'];}}}));}}return BPromise['all'](_0x3e1e7f)['then'](function(_0x3ae8f4){_0x3fb9b2=_(_0x3fb9b2)['union'](_0x3ae8f4)['compact']()['value']();return db[_0x6522('0x3d')][_0x6522('0x35')]({'where':{'id':_0x5e7f75[_0x6522('0x55')]['id']}})[_0x6522('0x2b')](function(_0x19efb1){return db[_0x6522('0x7a')][_0x6522('0x7b')](function(_0x3dfc91){return _0x19efb1['removeTeams'](_0x5e7f75['query']['ids'],{'transaction':_0x3dfc91})[_0x6522('0x2b')](function(){if(!_['isEmpty'](_0x3fb9b2)){return _0x19efb1[_0x6522('0x98')](_0x3fb9b2,{'transaction':_0x3dfc91})[_0x6522('0x2b')](function(){return db[_0x6522('0x80')]['destroy']({'where':{'VoiceQueueId':_0x5e7f75[_0x6522('0x55')]['id'],'UserId':_0x3fb9b2},'transaction':_0x3dfc91});});}})['then'](function(){_0x3fb9b2[_0x6522('0x78')](function(_0x32e0c6){socket['emit'](_0x6522('0x99'),{'UserId':_0x32e0c6,'VoiceQueueId':_0x19efb1['id']});});});});});});})[_0x6522('0x2b')](respondWithStatusCode(_0x13daa9,null))[_0x6522('0x53')](handleError(_0x13daa9,null));};exports[_0x6522('0x9a')]=function(_0x38d235,_0x1b010f,_0x205c57){var _0x2bf3b7,_0x189306;return db[_0x6522('0x3d')][_0x6522('0x35')]({'where':{'id':_0x38d235[_0x6522('0x55')]['id']}})['then'](handleEntityNotFound(_0x1b010f,null))[_0x6522('0x2b')](function(_0x348222){if(_0x348222){_0x189306=_0x348222;return _0x348222['addAgents'](_0x38d235['body'][_0x6522('0x88')],_[_0x6522('0x61')](_0x38d235['body'],[_0x6522('0x88'),'id'])||{})['spread'](function(_0x34f9fc){for(var _0x220720=0x0;_0x220720<_0x38d235[_0x6522('0x58')][_0x6522('0x88')][_0x6522('0x46')];_0x220720+=0x1){socket[_0x6522('0x85')](_0x6522('0x86'),{'UserId':Number(_0x38d235[_0x6522('0x58')][_0x6522('0x88')][_0x220720]),'VoiceQueueId':Number(_0x38d235[_0x6522('0x55')]['id'])});}return _0x34f9fc;});}})[_0x6522('0x2b')](function(_0x55cb24){_0x2bf3b7=_0x55cb24||[];if(_0x189306){return db[_0x6522('0x74')][_0x6522('0x51')]({'where':{'id':_0x38d235[_0x6522('0x58')][_0x6522('0x88')]},'attributes':['id',_0x6522('0x3a'),'online','voicePause',_0x6522('0x77')],'raw':!![]});}})['then'](function(_0x4fd7a1){if(!_[_0x6522('0x9b')](_0x4fd7a1)){var _0x51e850=[];for(var _0x1c8a94=0x0;_0x1c8a94<_0x4fd7a1[_0x6522('0x46')];_0x1c8a94++){if(_0x4fd7a1[_0x1c8a94]['online']){_0x51e850[_0x6522('0x92')](db[_0x6522('0x80')][_0x6522('0x81')]({'membername':_0x4fd7a1[_0x1c8a94][_0x6522('0x3a')],'UserId':_0x4fd7a1[_0x1c8a94]['id'],'queue_name':_0x189306[_0x6522('0x3a')],'VoiceQueueId':_0x189306['id'],'interface':_[_0x6522('0x9c')](_0x4fd7a1[_0x1c8a94]['interface'])?util['format'](_0x6522('0x83'),_0x4fd7a1[_0x1c8a94][_0x6522('0x3a')]):_0x4fd7a1[_0x1c8a94][_0x6522('0x77')],'paused':_0x4fd7a1[_0x1c8a94][_0x6522('0x84')]||![],'penalty':_0x38d235[_0x6522('0x58')]['penalty']||0x0}));}}return BPromise[_0x6522('0x9d')](_0x51e850);}})['then'](function(){return _0x2bf3b7;})['then'](respondWithResult(_0x1b010f,null))[_0x6522('0x53')](handleError(_0x1b010f,null));};exports['removeAgents']=function(_0x5249be,_0x52f297,_0x154011){return db[_0x6522('0x3d')][_0x6522('0x35')]({'where':{'id':_0x5249be[_0x6522('0x55')]['id']}})['then'](handleEntityNotFound(_0x52f297,null))[_0x6522('0x2b')](function(_0x186003){if(_0x186003){return _0x186003['removeAgents'](_0x5249be[_0x6522('0x42')][_0x6522('0x88')])[_0x6522('0x2b')](function(){if(_[_0x6522('0x9e')](_0x5249be[_0x6522('0x42')][_0x6522('0x88')])){for(var _0xd11629=0x0;_0xd11629<_0x5249be['query']['ids']['length'];_0xd11629+=0x1){socket['emit'](_0x6522('0x99'),{'UserId':Number(_0x5249be['query'][_0x6522('0x88')][_0xd11629]),'VoiceQueueId':Number(_0x5249be[_0x6522('0x55')]['id'])});}}else{socket[_0x6522('0x85')](_0x6522('0x99'),{'UserId':Number(_0x5249be['query'][_0x6522('0x88')]),'VoiceQueueId':Number(_0x5249be[_0x6522('0x55')]['id'])});}});}})['then'](function(_0xed1fa4){return db[_0x6522('0x80')][_0x6522('0x37')]({'where':{'VoiceQueueId':_0x5249be[_0x6522('0x55')]['id'],'UserId':_0x5249be[_0x6522('0x42')]['ids']}})['then'](function(){return _0xed1fa4;});})[_0x6522('0x2b')](respondWithStatusCode(_0x52f297,null))[_0x6522('0x53')](handleError(_0x52f297,null));};exports[_0x6522('0x9f')]=function(_0x59c320,_0x4c7a78,_0x27f007){var _0x45cf69={};var _0x5cb595={};var _0x4d9b92;var _0x20f7d5;return db[_0x6522('0x3d')][_0x6522('0x69')]({'where':{'id':_0x59c320['params']['id']}})['then'](handleEntityNotFound(_0x4c7a78,null))[_0x6522('0x2b')](function(_0x1883f1){if(_0x1883f1){_0x4d9b92=_0x1883f1;_0x5cb595[_0x6522('0x41')]=_['keys'](db[_0x6522('0x74')][_0x6522('0x3e')]);_0x5cb595['query']=_[_0x6522('0x60')](_0x59c320[_0x6522('0x42')]);_0x5cb595[_0x6522('0x43')]=_[_0x6522('0x56')](_0x5cb595[_0x6522('0x41')],_0x5cb595[_0x6522('0x42')]);_0x45cf69['attributes']=_['intersection'](_0x5cb595['model'],qs['fields'](_0x59c320['query'][_0x6522('0x44')]));_0x45cf69[_0x6522('0x45')]=_0x45cf69['attributes']['length']?_0x45cf69[_0x6522('0x45')]:_0x5cb595['model'];_0x45cf69[_0x6522('0x48')]=qs[_0x6522('0x49')](_0x59c320[_0x6522('0x42')][_0x6522('0x49')]);_0x45cf69['where']=qs[_0x6522('0x43')](_[_0x6522('0x4b')](_0x59c320['query'],_0x5cb595[_0x6522('0x43')]));if(_0x59c320['query'][_0x6522('0x2f')]){_0x45cf69[_0x6522('0x4a')]=_['merge'](_0x45cf69[_0x6522('0x4a')],{'$or':_[_0x6522('0x31')](_0x45cf69[_0x6522('0x45')],function(_0x4dc21e){var _0x5d8265={};_0x5d8265[_0x4dc21e]={'$like':'%'+_0x59c320['query'][_0x6522('0x2f')]+'%'};return _0x5d8265;})});}_0x45cf69=_[_0x6522('0x4c')]({},_0x45cf69,_0x59c320['options']);return _0x4d9b92[_0x6522('0x9f')](_0x45cf69);}})[_0x6522('0x2b')](function(_0x44c917){if(_0x44c917){_0x20f7d5=_0x44c917['length'];if(!_0x59c320['query'][_0x6522('0x47')](_0x6522('0x6b'))){_0x45cf69[_0x6522('0x27')]=qs[_0x6522('0x27')](_0x59c320['query'][_0x6522('0x27')]);_0x45cf69['offset']=qs[_0x6522('0x24')](_0x59c320[_0x6522('0x42')][_0x6522('0x24')]);}return _0x4d9b92['getAgents'](_0x45cf69);}})[_0x6522('0x2b')](function(_0x59dc6a){if(_0x59dc6a){return _0x59dc6a?{'count':_0x20f7d5,'rows':_0x59dc6a}:null;}})[_0x6522('0x2b')](respondWithResult(_0x4c7a78,null))[_0x6522('0x53')](handleError(_0x4c7a78,null));};exports['getMembers']=function(_0x1b5155,_0x19fde3,_0x2ac7b6){var _0x18400e={};var _0x1723d5={};var _0x4abf76;var _0x213f58;return db[_0x6522('0x3d')][_0x6522('0x69')]({'where':{'id':_0x1b5155[_0x6522('0x55')]['id']}})[_0x6522('0x2b')](handleEntityNotFound(_0x19fde3,null))['then'](function(_0x2d5dad){if(_0x2d5dad){_0x4abf76=_0x2d5dad;_0x1723d5[_0x6522('0x41')]=_[_0x6522('0x60')](db[_0x6522('0x80')][_0x6522('0x3e')]);_0x1723d5[_0x6522('0x42')]=_[_0x6522('0x60')](_0x1b5155['query']);_0x1723d5[_0x6522('0x43')]=_['intersection'](_0x1723d5[_0x6522('0x41')],_0x1723d5[_0x6522('0x42')]);_0x18400e[_0x6522('0x45')]=_[_0x6522('0x56')](_0x1723d5['model'],qs[_0x6522('0x44')](_0x1b5155[_0x6522('0x42')]['fields']));_0x18400e[_0x6522('0x45')]=_0x18400e[_0x6522('0x45')][_0x6522('0x46')]?_0x18400e[_0x6522('0x45')]:_0x1723d5[_0x6522('0x41')];_0x18400e['order']=qs[_0x6522('0x49')](_0x1b5155[_0x6522('0x42')]['sort']);_0x18400e[_0x6522('0x4a')]=qs[_0x6522('0x43')](_[_0x6522('0x4b')](_0x1b5155[_0x6522('0x42')],_0x1723d5['filters']));if(_0x1b5155[_0x6522('0x42')][_0x6522('0x2f')]){_0x18400e[_0x6522('0x4a')]=_[_0x6522('0x4c')](_0x18400e[_0x6522('0x4a')],{'$or':_[_0x6522('0x31')](_0x18400e['attributes'],function(_0x375540){var _0x3ab59d={};_0x3ab59d[_0x375540]={'$like':'%'+_0x1b5155[_0x6522('0x42')][_0x6522('0x2f')]+'%'};return _0x3ab59d;})});}_0x18400e=_[_0x6522('0x4c')]({},_0x18400e,_0x1b5155['options']);return _0x4abf76[_0x6522('0xa0')](_0x18400e);}})[_0x6522('0x2b')](function(_0x23fa52){if(_0x23fa52){_0x213f58=_0x23fa52[_0x6522('0x46')];if(!_0x1b5155[_0x6522('0x42')][_0x6522('0x47')](_0x6522('0x6b'))){_0x18400e[_0x6522('0x27')]=qs['limit'](_0x1b5155['query'][_0x6522('0x27')]);_0x18400e[_0x6522('0x24')]=qs[_0x6522('0x24')](_0x1b5155[_0x6522('0x42')][_0x6522('0x24')]);}return _0x4abf76[_0x6522('0xa0')](_0x18400e);}})[_0x6522('0x2b')](function(_0x201bfb){return _0x201bfb?{'count':_0x213f58,'rows':_0x201bfb}:null;})[_0x6522('0x2b')](respondWithResult(_0x19fde3,null))[_0x6522('0x53')](handleError(_0x19fde3,null));};exports[_0x6522('0xa1')]=function(_0x1753eb,_0x11159b,_0x127cee){var _0x558d0f={};var _0x12f51a={};var _0x18df5c;var _0x1af1c0;return db[_0x6522('0x3d')][_0x6522('0x69')]({'where':{'id':_0x1753eb['params']['id']}})['then'](handleEntityNotFound(_0x11159b,null))[_0x6522('0x2b')](function(_0x3f1dd3){if(_0x3f1dd3){_0x18df5c=_0x3f1dd3;_0x12f51a['model']=_[_0x6522('0x60')](db[_0x6522('0xa2')][_0x6522('0x3e')]);_0x12f51a[_0x6522('0x42')]=_['keys'](_0x1753eb[_0x6522('0x42')]);_0x12f51a[_0x6522('0x43')]=_[_0x6522('0x56')](_0x12f51a[_0x6522('0x41')],_0x12f51a[_0x6522('0x42')]);_0x558d0f[_0x6522('0x45')]=_[_0x6522('0x56')](_0x12f51a[_0x6522('0x41')],qs[_0x6522('0x44')](_0x1753eb[_0x6522('0x42')][_0x6522('0x44')]));_0x558d0f['attributes']=_0x558d0f[_0x6522('0x45')]['length']?_0x558d0f[_0x6522('0x45')]:_0x12f51a['model'];_0x558d0f[_0x6522('0x48')]=qs[_0x6522('0x49')](_0x1753eb[_0x6522('0x42')][_0x6522('0x49')]);_0x558d0f[_0x6522('0x4a')]=qs[_0x6522('0x43')](_[_0x6522('0x4b')](_0x1753eb[_0x6522('0x42')],_0x12f51a[_0x6522('0x43')]));if(_0x1753eb['query']['filter']){_0x558d0f[_0x6522('0x4a')]=_[_0x6522('0x4c')](_0x558d0f[_0x6522('0x4a')],{'$or':_['map'](_0x558d0f[_0x6522('0x45')],function(_0x57bfcf){var _0x281746={};_0x281746[_0x57bfcf]={'$like':'%'+_0x1753eb[_0x6522('0x42')][_0x6522('0x2f')]+'%'};return _0x281746;})});}_0x558d0f=_[_0x6522('0x4c')]({},_0x558d0f,_0x1753eb[_0x6522('0x4e')]);return _0x18df5c[_0x6522('0xa1')](_0x558d0f);}})['then'](function(_0x2e0252){if(_0x2e0252){_0x1af1c0=_0x2e0252[_0x6522('0x46')];if(!_0x1753eb[_0x6522('0x42')][_0x6522('0x47')](_0x6522('0x6b'))){_0x558d0f[_0x6522('0x27')]=qs[_0x6522('0x27')](_0x1753eb[_0x6522('0x42')]['limit']);_0x558d0f[_0x6522('0x24')]=qs['offset'](_0x1753eb[_0x6522('0x42')][_0x6522('0x24')]);}return _0x18df5c['getLists'](_0x558d0f);}})[_0x6522('0x2b')](function(_0x3c6191){if(_0x3c6191){return _0x3c6191?{'count':_0x1af1c0,'rows':_0x3c6191}:null;}})[_0x6522('0x2b')](respondWithResult(_0x11159b,null))[_0x6522('0x53')](handleError(_0x11159b,null));};exports[_0x6522('0xa3')]=function(_0x59003f,_0x4ca4cc,_0x29f651){var _0x2496bb=moment()[_0x6522('0x82')](_0x6522('0xa4'));var _0x1dc06c,_0x5e16fd;return db[_0x6522('0x3d')][_0x6522('0x35')]({'where':{'id':_0x59003f[_0x6522('0x55')]['id']}})[_0x6522('0x2b')](handleEntityNotFound(_0x4ca4cc,null))[_0x6522('0x2b')](function(_0x3c8a62){if(_0x3c8a62){_0x5e16fd=_0x3c8a62;return _0x3c8a62[_0x6522('0xa3')](_0x59003f[_0x6522('0x58')][_0x6522('0x88')],_[_0x6522('0x61')](_0x59003f[_0x6522('0x58')],['ids','id'])||{});}return null;})['spread'](function(_0x9155ab){var _0x286d6f;_0x1dc06c=_0x9155ab||[];var _0x24561b=[];if(_0x9155ab){for(var _0x582664=0x0;_0x582664<_0x9155ab[_0x6522('0x46')];_0x582664+=0x1){var _0x2183a0=_0x9155ab[_0x582664]['get']({'plain':!![]});_0x5e16fd[_0x6522('0xa5')]=_0x59003f['body']['dialCheckDuplicateType']?_0x59003f['body'][_0x6522('0xa5')]:_0x5e16fd[_0x6522('0xa5')];switch(_0x5e16fd['dialCheckDuplicateType']){case _0x6522('0xa6'):_0x286d6f=squel[_0x6522('0xa7')]()[_0x6522('0xa8')]('cm_hopper')[_0x6522('0xa9')]([_0x6522('0xaa'),_0x6522('0xab'),_0x6522('0xac'),_0x6522('0xad'),'VoiceQueueId',_0x6522('0x62'),'updatedAt'],squel[_0x6522('0x89')]()[_0x6522('0x8a')](_0x6522('0xaa'),_0x6522('0xaa'))[_0x6522('0x8a')]('\x27'+_0x2496bb+'\x27','scheduledAt')['field']('id',_0x6522('0xac'))[_0x6522('0x8a')](_0x2183a0['CmListId']['toString'](),_0x6522('0xad'))[_0x6522('0x8a')](_0x59003f[_0x6522('0x55')]['id']['toString'](),'VoiceQueueId')[_0x6522('0x8a')]('\x27'+_0x2496bb+'\x27',_0x6522('0x62'))['field']('\x27'+_0x2496bb+'\x27',_0x6522('0x63'))['from']('cm_contacts')[_0x6522('0x4a')]('deletedAt\x20IS\x20NULL')['where']('ListId\x20=\x20?',_0x2183a0[_0x6522('0xae')]['toString']())[_0x6522('0x4a')]('phone\x20IS\x20NOT\x20NULL')[_0x6522('0x4a')](_0x6522('0xaf'),squel[_0x6522('0x89')]()[_0x6522('0x8a')](_0x6522('0xb0'))[_0x6522('0x8c')](_0x6522('0xb1'))[_0x6522('0x4a')](_0x6522('0x90'),_0x59003f[_0x6522('0x55')]['id'][_0x6522('0x93')]()))['where'](_0x6522('0xaf'),squel[_0x6522('0x89')]()[_0x6522('0x8a')]('COALESCE(phone,\x27\x27)')['from'](_0x6522('0xb2'))['where'](_0x6522('0x90'),_0x59003f['params']['id']['toString']())))[_0x6522('0x93')]();break;case'onlyIfOpen':_0x286d6f=squel[_0x6522('0xa7')]()[_0x6522('0xa8')]('cm_hopper')[_0x6522('0xa9')]([_0x6522('0xaa'),_0x6522('0xab'),_0x6522('0xac'),_0x6522('0xad'),_0x6522('0x6c'),_0x6522('0x62'),_0x6522('0x63')],squel[_0x6522('0x89')]()['field']('phone','phone')[_0x6522('0x8a')]('\x27'+_0x2496bb+'\x27','scheduledAt')[_0x6522('0x8a')]('id','ContactId')['field'](_0x2183a0[_0x6522('0xae')][_0x6522('0x93')](),_0x6522('0xad'))[_0x6522('0x8a')](_0x59003f[_0x6522('0x55')]['id'][_0x6522('0x93')](),_0x6522('0x6c'))['field']('\x27'+_0x2496bb+'\x27',_0x6522('0x62'))['field']('\x27'+_0x2496bb+'\x27',_0x6522('0x63'))[_0x6522('0x8c')](_0x6522('0xb3'))['where'](_0x6522('0xb4'))[_0x6522('0x4a')](_0x6522('0xb5'),_0x2183a0[_0x6522('0xae')]['toString']())[_0x6522('0x4a')](_0x6522('0xb6'))[_0x6522('0x4a')](_0x6522('0xaf'),squel[_0x6522('0x89')]()[_0x6522('0x8a')]('COALESCE(phone,\x27\x27)')[_0x6522('0x8c')](_0x6522('0xb2'))[_0x6522('0x4a')](_0x6522('0x90'),_0x59003f[_0x6522('0x55')]['id'][_0x6522('0x93')]())))[_0x6522('0x93')]();break;default:_0x286d6f=squel[_0x6522('0xa7')]()['into'](_0x6522('0xb2'))[_0x6522('0xa9')]([_0x6522('0xaa'),'scheduledAt',_0x6522('0xac'),_0x6522('0xad'),'VoiceQueueId',_0x6522('0x62'),_0x6522('0x63')],squel[_0x6522('0x89')]()['field']('phone',_0x6522('0xaa'))[_0x6522('0x8a')]('\x27'+_0x2496bb+'\x27',_0x6522('0xab'))['field']('id',_0x6522('0xac'))[_0x6522('0x8a')](_0x2183a0['CmListId'][_0x6522('0x93')](),_0x6522('0xad'))['field'](_0x59003f[_0x6522('0x55')]['id'][_0x6522('0x93')](),'VoiceQueueId')['field']('\x27'+_0x2496bb+'\x27',_0x6522('0x62'))[_0x6522('0x8a')]('\x27'+_0x2496bb+'\x27',_0x6522('0x63'))[_0x6522('0x8c')](_0x6522('0xb3'))[_0x6522('0x4a')](_0x6522('0xb4'))[_0x6522('0x4a')](_0x6522('0xb5'),_0x2183a0[_0x6522('0xae')][_0x6522('0x93')]())['where'](_0x6522('0xb6')))[_0x6522('0x93')]();}_0x24561b[_0x6522('0x92')](db['sequelize'][_0x6522('0x42')](_0x286d6f));}return BPromise[_0x6522('0x9d')](_0x24561b);}})['then'](function(){var _0x7f7daf=[];var _0x13c188=squel['insert']()[_0x6522('0xa8')](_0x6522('0xb7'))['fromQuery']([_0x6522('0xb8'),_0x6522('0xaa'),_0x6522('0xb9'),'createdAt',_0x6522('0x63')],squel[_0x6522('0x89')]()[_0x6522('0x8a')](_0x6522('0xba'))[_0x6522('0x8a')]('ci.item')[_0x6522('0x8a')](_0x6522('0xbb'))[_0x6522('0x8a')]('\x27'+_0x2496bb+'\x27',_0x6522('0x62'))['field']('\x27'+_0x2496bb+'\x27','updatedAt')[_0x6522('0x8c')](_0x6522('0xbc'),'ci')[_0x6522('0x8e')]('cm_hopper','h','h.ContactId=ci.CmContactId')[_0x6522('0x4a')](_0x6522('0xbd'),_0x2496bb)['where']('ci.ItemClass=?',_0x6522('0xbe')))[_0x6522('0x93')]();_0x7f7daf[_0x6522('0x92')](db[_0x6522('0x7a')][_0x6522('0x42')](_0x13c188));return BPromise['all'](_0x7f7daf);})['then'](function(){return _0x1dc06c;})[_0x6522('0x2b')](respondWithResult(_0x4ca4cc,null))[_0x6522('0x53')](handleError(_0x4ca4cc,null));};exports['removeLists']=function(_0x17a758,_0x39c4b2,_0x3a1f3a){return db['VoiceQueue'][_0x6522('0x35')]({'where':{'id':_0x17a758[_0x6522('0x55')]['id']}})[_0x6522('0x2b')](handleEntityNotFound(_0x39c4b2,null))[_0x6522('0x2b')](function(_0x3a9810){if(_0x3a9810){return _0x3a9810[_0x6522('0xbf')](_0x17a758[_0x6522('0x42')][_0x6522('0x88')]);}})[_0x6522('0x2b')](function(_0x29c1a0){if(_0x29c1a0){return db[_0x6522('0x68')][_0x6522('0x37')]({'where':{'ListId':_0x17a758[_0x6522('0x42')][_0x6522('0x88')],'VoiceQueueId':_0x17a758[_0x6522('0x55')]['id']}})[_0x6522('0x2b')](function(){return _0x29c1a0;});}})[_0x6522('0x2b')](respondWithStatusCode(_0x39c4b2,null))[_0x6522('0x53')](handleError(_0x39c4b2,null));};exports[_0x6522('0xc0')]=function(_0x2a8faa,_0x2fa442,_0x1c01d0){var _0x12a85a={};var _0x2205b3={};var _0x368cec;var _0x822c22;return db[_0x6522('0x3d')][_0x6522('0x69')]({'where':{'id':_0x2a8faa[_0x6522('0x55')]['id']}})[_0x6522('0x2b')](handleEntityNotFound(_0x2fa442,null))[_0x6522('0x2b')](function(_0x406973){if(_0x406973){_0x368cec=_0x406973;_0x2205b3[_0x6522('0x41')]=_['keys'](db[_0x6522('0xa2')]['rawAttributes']);_0x2205b3[_0x6522('0x42')]=_[_0x6522('0x60')](_0x2a8faa['query']);_0x2205b3[_0x6522('0x43')]=_[_0x6522('0x56')](_0x2205b3['model'],_0x2205b3[_0x6522('0x42')]);_0x12a85a[_0x6522('0x45')]=_['intersection'](_0x2205b3[_0x6522('0x41')],qs[_0x6522('0x44')](_0x2a8faa[_0x6522('0x42')][_0x6522('0x44')]));_0x12a85a[_0x6522('0x45')]=_0x12a85a[_0x6522('0x45')][_0x6522('0x46')]?_0x12a85a[_0x6522('0x45')]:_0x2205b3[_0x6522('0x41')];_0x12a85a[_0x6522('0x48')]=qs['sort'](_0x2a8faa['query'][_0x6522('0x49')]);_0x12a85a[_0x6522('0x4a')]=qs['filters'](_[_0x6522('0x4b')](_0x2a8faa[_0x6522('0x42')],_0x2205b3['filters']));if(_0x2a8faa[_0x6522('0x42')][_0x6522('0x2f')]){_0x12a85a[_0x6522('0x4a')]=_[_0x6522('0x4c')](_0x12a85a[_0x6522('0x4a')],{'$or':_['map'](_0x12a85a['attributes'],function(_0x29ae96){var _0x4085d6={};_0x4085d6[_0x29ae96]={'$like':'%'+_0x2a8faa[_0x6522('0x42')][_0x6522('0x2f')]+'%'};return _0x4085d6;})});}_0x12a85a=_[_0x6522('0x4c')]({},_0x12a85a,_0x2a8faa[_0x6522('0x4e')]);return _0x368cec[_0x6522('0xc0')](_0x12a85a);}})['then'](function(_0xc1bf1d){if(_0xc1bf1d){_0x822c22=_0xc1bf1d['length'];if(!_0x2a8faa[_0x6522('0x42')]['hasOwnProperty'](_0x6522('0x6b'))){_0x12a85a['limit']=qs[_0x6522('0x27')](_0x2a8faa[_0x6522('0x42')][_0x6522('0x27')]);_0x12a85a[_0x6522('0x24')]=qs[_0x6522('0x24')](_0x2a8faa['query']['offset']);}return _0x368cec[_0x6522('0xc0')](_0x12a85a);}})[_0x6522('0x2b')](function(_0x53c7ab){if(_0x53c7ab){return _0x53c7ab?{'count':_0x822c22,'rows':_0x53c7ab}:null;}})['then'](respondWithResult(_0x2fa442,null))['catch'](handleError(_0x2fa442,null));};exports[_0x6522('0xc1')]=function(_0xd8819f,_0x431e15,_0x86995b){var _0x36f02d,_0x11bb66;return db[_0x6522('0x3d')]['find']({'where':{'id':_0xd8819f[_0x6522('0x55')]['id']}})[_0x6522('0x2b')](handleEntityNotFound(_0x431e15,null))['then'](function(_0x5ba395){if(_0x5ba395){_0x11bb66=_0x5ba395;return _0x5ba395['addBlackLists'](_0xd8819f['body'][_0x6522('0x88')],_['omit'](_0xd8819f[_0x6522('0x58')],[_0x6522('0x88'),'id'])||{});}return null;})[_0x6522('0xc2')](function(_0x2098fa){var _0x2439f6;_0x36f02d=_0x2098fa||[];var _0x298166=[];if(_0x2098fa){for(var _0x1bde03=0x0;_0x1bde03<_0x2098fa['length'];_0x1bde03+=0x1){var _0x519a30=_0x2098fa[_0x1bde03][_0x6522('0x59')]({'plain':!![]});_0x2439f6=squel[_0x6522('0xa7')]()[_0x6522('0xa8')](_0x6522('0xc3'))[_0x6522('0xa9')]([_0x6522('0xaa'),'ContactId',_0x6522('0xad'),_0x6522('0x6c'),'createdAt',_0x6522('0x63')],squel[_0x6522('0x89')]()[_0x6522('0x8a')](_0x6522('0xaa'),_0x6522('0xaa'))[_0x6522('0x8a')]('id','ContactId')['field'](_0x519a30[_0x6522('0xae')][_0x6522('0x93')](),'ListId')[_0x6522('0x8a')](_0xd8819f['params']['id']['toString'](),_0x6522('0x6c'))['field'](_0x6522('0xc4'),_0x6522('0x62'))[_0x6522('0x8a')](_0x6522('0xc4'),'updatedAt')[_0x6522('0x8c')](_0x6522('0xb3'))[_0x6522('0x4a')](_0x6522('0xb4'))[_0x6522('0x4a')]('ListId\x20=\x20?',_0x519a30[_0x6522('0xae')][_0x6522('0x93')]())[_0x6522('0x4a')](_0x6522('0xb6')))[_0x6522('0x93')]();_0x298166['push'](db['sequelize']['query'](_0x2439f6));}return BPromise['all'](_0x298166);}})['then'](function(){return _0x36f02d;})['then'](respondWithResult(_0x431e15,null))[_0x6522('0x53')](handleError(_0x431e15,null));};exports[_0x6522('0xc5')]=function(_0x4cb022,_0x1c16fa,_0x259f7d){return db[_0x6522('0x3d')][_0x6522('0x35')]({'where':{'id':_0x4cb022['params']['id']}})['then'](handleEntityNotFound(_0x1c16fa,null))['then'](function(_0x49488a){if(_0x49488a){return _0x49488a[_0x6522('0xc5')](_0x4cb022['query'][_0x6522('0x88')]);}})[_0x6522('0x2b')](function(_0x82efa3){if(_0x82efa3){return db['CmHopperBlack'][_0x6522('0x37')]({'where':{'ListId':_0x4cb022[_0x6522('0x42')][_0x6522('0x88')],'VoiceQueueId':_0x4cb022['params']['id']}})[_0x6522('0x2b')](function(){return _0x82efa3;});}})['then'](respondWithStatusCode(_0x1c16fa,null))[_0x6522('0x53')](handleError(_0x1c16fa,null));};
\ No newline at end of file
index 0770e41..a4f384b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec5a=['../../mysqldb','VoiceQueue','setMaxListeners','save','update','remove','emit','hasOwnProperty','exports'];(function(_0x490b58,_0x3902bf){var _0x2ff908=function(_0x2a1b0b){while(--_0x2a1b0b){_0x490b58['push'](_0x490b58['shift']());}};_0x2ff908(++_0x3902bf);}(_0xec5a,0x195));var _0xaec5=function(_0x41070a,_0x34c057){_0x41070a=_0x41070a-0x0;var _0xe50e7=_0xec5a[_0x41070a];return _0xe50e7;};'use strict';var EventEmitter=require('events');var VoiceQueue=require(_0xaec5('0x0'))['db'][_0xaec5('0x1')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0xaec5('0x2')](0x0);var events={'afterCreate':_0xaec5('0x3'),'afterUpdate':_0xaec5('0x4'),'afterDestroy':_0xaec5('0x5')};function emitEvent(_0x336a65){return function(_0x30c2a2,_0x21f7ee,_0x4c20bf){VoiceQueueEvents[_0xaec5('0x6')](_0x336a65+':'+_0x30c2a2['id'],_0x30c2a2);VoiceQueueEvents[_0xaec5('0x6')](_0x336a65,_0x30c2a2);_0x4c20bf(null);};}for(var e in events){if(events[_0xaec5('0x7')](e)){var event=events[e];VoiceQueue['hook'](e,emitEvent(event));}}module[_0xaec5('0x8')]=VoiceQueueEvents;
\ No newline at end of file
+var _0xabb3=['emit','hasOwnProperty','exports','../../mysqldb','setMaxListeners','save','remove'];(function(_0x35ddcd,_0xe1cf3d){var _0x443216=function(_0x267d02){while(--_0x267d02){_0x35ddcd['push'](_0x35ddcd['shift']());}};_0x443216(++_0xe1cf3d);}(_0xabb3,0xff));var _0x3abb=function(_0x19c0b4,_0x56944c){_0x19c0b4=_0x19c0b4-0x0;var _0x573aee=_0xabb3[_0x19c0b4];return _0x573aee;};'use strict';var EventEmitter=require('events');var VoiceQueue=require(_0x3abb('0x0'))['db']['VoiceQueue'];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0x3abb('0x1')](0x0);var events={'afterCreate':_0x3abb('0x2'),'afterUpdate':'update','afterDestroy':_0x3abb('0x3')};function emitEvent(_0x5d2376){return function(_0x495955,_0x3a26cd,_0x27fba9){VoiceQueueEvents[_0x3abb('0x4')](_0x5d2376+':'+_0x495955['id'],_0x495955);VoiceQueueEvents[_0x3abb('0x4')](_0x5d2376,_0x495955);_0x27fba9(null);};}for(var e in events){if(events[_0x3abb('0x5')](e)){var event=events[e];VoiceQueue['hook'](e,emitEvent(event));}}module[_0x3abb('0x6')]=VoiceQueueEvents;
\ No newline at end of file
index 4514704..98f5fc5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['voice_queues','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./voiceQueue.attributes','exports','VoiceQueue'];(function(_0x379973,_0x3d37c3){var _0x3e78b3=function(_0x1d5c66){while(--_0x1d5c66){_0x379973['push'](_0x379973['shift']());}};_0x3e78b3(++_0x3d37c3);}(_0x34e8,0x12c));var _0x834e=function(_0x48880b,_0x5ed8cb){_0x48880b=_0x48880b-0x0;var _0x4771ce=_0x34e8[_0x48880b];return _0x4771ce;};'use strict';var _=require(_0x834e('0x0'));var util=require(_0x834e('0x1'));var logger=require(_0x834e('0x2'))(_0x834e('0x3'));var moment=require('moment');var BPromise=require(_0x834e('0x4'));var rp=require(_0x834e('0x5'));var fs=require('fs');var path=require(_0x834e('0x6'));var rimraf=require(_0x834e('0x7'));var config=require(_0x834e('0x8'));var attributes=require(_0x834e('0x9'));module[_0x834e('0xa')]=function(_0x4a2018,_0x858aa1){return _0x4a2018['define'](_0x834e('0xb'),attributes,{'tableName':_0x834e('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x34e8=['voice_queues','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./voiceQueue.attributes','exports','VoiceQueue'];(function(_0x5e6a98,_0x5524bb){var _0xb8fe10=function(_0x479a47){while(--_0x479a47){_0x5e6a98['push'](_0x5e6a98['shift']());}};_0xb8fe10(++_0x5524bb);}(_0x34e8,0x12c));var _0x834e=function(_0x1fa77a,_0x3f84f6){_0x1fa77a=_0x1fa77a-0x0;var _0x49de11=_0x34e8[_0x1fa77a];return _0x49de11;};'use strict';var _=require(_0x834e('0x0'));var util=require(_0x834e('0x1'));var logger=require(_0x834e('0x2'))(_0x834e('0x3'));var moment=require('moment');var BPromise=require(_0x834e('0x4'));var rp=require(_0x834e('0x5'));var fs=require('fs');var path=require(_0x834e('0x6'));var rimraf=require(_0x834e('0x7'));var config=require(_0x834e('0x8'));var attributes=require(_0x834e('0x9'));module[_0x834e('0xa')]=function(_0x4a2018,_0x858aa1){return _0x4a2018['define'](_0x834e('0xb'),attributes,{'tableName':_0x834e('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2f07d25..021b4a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee6a=['register','request','then','info','VoiceQueue,\x20%s,\x20%s','request\x20sent','debug','VoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetVoiceQueue','VoiceQueue','findAll','options','attributes','limit','map','model','include','ShowVoiceQueue','raw','where','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/logger','../../config/environment','client','http','redis','socket.io-emitter'];(function(_0x2642cb,_0x4b917f){var _0xe6e41=function(_0x281676){while(--_0x281676){_0x2642cb['push'](_0x2642cb['shift']());}};_0xe6e41(++_0x4b917f);}(_0xee6a,0x18c));var _0xaee6=function(_0x59fc33,_0x2e182d){_0x59fc33=_0x59fc33-0x0;var _0x39066f=_0xee6a[_0x59fc33];return _0x39066f;};'use strict';var _=require(_0xaee6('0x0'));var util=require('util');var moment=require(_0xaee6('0x1'));var BPromise=require(_0xaee6('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xaee6('0x3'));var db=require(_0xaee6('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xaee6('0x5'))('rpc');var config=require(_0xaee6('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xaee6('0x7')][_0xaee6('0x8')]({'port':0x232a});config[_0xaee6('0x9')]=_['defaults'](config[_0xaee6('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0xaee6('0xa'))(new Redis(config['redis']));require('./voiceQueue.socket')[_0xaee6('0xb')](socket);function respondWithRpcPromise(_0x117a31,_0x4ce197,_0x490e40){return new BPromise(function(_0x12ec7b,_0x3d67bb){return client[_0xaee6('0xc')](_0x117a31,_0x490e40)[_0xaee6('0xd')](function(_0x5dd832){logger[_0xaee6('0xe')](_0xaee6('0xf'),_0x4ce197,_0xaee6('0x10'));logger[_0xaee6('0x11')](_0xaee6('0x12'),_0x4ce197,_0xaee6('0x10'),JSON[_0xaee6('0x13')](_0x5dd832));if(_0x5dd832['error']){if(_0x5dd832[_0xaee6('0x14')][_0xaee6('0x15')]===0x1f4){logger['error'](_0xaee6('0xf'),_0x4ce197,_0x5dd832[_0xaee6('0x14')]['message']);return _0x3d67bb(_0x5dd832[_0xaee6('0x14')][_0xaee6('0x16')]);}logger[_0xaee6('0x14')](_0xaee6('0xf'),_0x4ce197,_0x5dd832[_0xaee6('0x14')]['message']);return _0x12ec7b(_0x5dd832[_0xaee6('0x14')][_0xaee6('0x16')]);}else{logger[_0xaee6('0xe')](_0xaee6('0xf'),_0x4ce197,_0xaee6('0x10'));_0x12ec7b(_0x5dd832[_0xaee6('0x17')][_0xaee6('0x16')]);}})[_0xaee6('0x18')](function(_0x2f8196){logger['error'](_0xaee6('0xf'),_0x4ce197,_0x2f8196);_0x3d67bb(_0x2f8196);});});}exports[_0xaee6('0x19')]=function(_0x5f21e1){var _0x2a8030=this;return new Promise(function(_0x3d5535,_0xb27fee){return db[_0xaee6('0x1a')][_0xaee6('0x1b')]({'raw':_0x5f21e1[_0xaee6('0x1c')]?_0x5f21e1['options']['raw']===undefined?!![]:![]:!![],'where':_0x5f21e1[_0xaee6('0x1c')]?_0x5f21e1[_0xaee6('0x1c')]['where']||null:null,'attributes':_0x5f21e1[_0xaee6('0x1c')]?_0x5f21e1[_0xaee6('0x1c')][_0xaee6('0x1d')]||null:null,'limit':_0x5f21e1['options']?_0x5f21e1[_0xaee6('0x1c')][_0xaee6('0x1e')]||null:null,'include':_0x5f21e1[_0xaee6('0x1c')]?_0x5f21e1[_0xaee6('0x1c')]['include']?_[_0xaee6('0x1f')](_0x5f21e1[_0xaee6('0x1c')]['include'],function(_0x3cbb20){return{'model':db[_0x3cbb20[_0xaee6('0x20')]],'as':_0x3cbb20['as'],'attributes':_0x3cbb20[_0xaee6('0x1d')],'include':_0x3cbb20[_0xaee6('0x21')]?_[_0xaee6('0x1f')](_0x3cbb20['include'],function(_0x15dbd7){return{'model':db[_0x15dbd7[_0xaee6('0x20')]],'as':_0x15dbd7['as'],'attributes':_0x15dbd7[_0xaee6('0x1d')],'include':_0x15dbd7[_0xaee6('0x21')]?_[_0xaee6('0x1f')](_0x15dbd7[_0xaee6('0x21')],function(_0xd90fb4){return{'model':db[_0xd90fb4[_0xaee6('0x20')]],'as':_0xd90fb4['as'],'attributes':_0xd90fb4[_0xaee6('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xaee6('0xd')](function(_0x2332fa){logger[_0xaee6('0xe')](_0xaee6('0x19'),_0x5f21e1);logger[_0xaee6('0x11')]('GetVoiceQueue',_0x5f21e1,JSON[_0xaee6('0x13')](_0x2332fa));_0x3d5535(_0x2332fa);})['catch'](function(_0x32c855){logger[_0xaee6('0x14')](_0xaee6('0x19'),_0x32c855[_0xaee6('0x16')],_0x5f21e1);_0xb27fee(_0x2a8030[_0xaee6('0x14')](0x1f4,_0x32c855[_0xaee6('0x16')]));});});};exports[_0xaee6('0x22')]=function(_0x29caed){var _0x249e03=this;return new Promise(function(_0x101c8e,_0x40c324){return db[_0xaee6('0x1a')]['find']({'raw':_0x29caed[_0xaee6('0x1c')]?_0x29caed[_0xaee6('0x1c')][_0xaee6('0x23')]===undefined?!![]:![]:!![],'where':_0x29caed['options']?_0x29caed['options'][_0xaee6('0x24')]||null:null,'attributes':_0x29caed['options']?_0x29caed[_0xaee6('0x1c')]['attributes']||null:null,'include':_0x29caed[_0xaee6('0x1c')]?_0x29caed[_0xaee6('0x1c')][_0xaee6('0x21')]?_[_0xaee6('0x1f')](_0x29caed[_0xaee6('0x1c')][_0xaee6('0x21')],function(_0x10eead){return{'model':db[_0x10eead[_0xaee6('0x20')]],'as':_0x10eead['as'],'attributes':_0x10eead[_0xaee6('0x1d')],'include':_0x10eead[_0xaee6('0x21')]?_['map'](_0x10eead[_0xaee6('0x21')],function(_0x3993c4){return{'model':db[_0x3993c4[_0xaee6('0x20')]],'as':_0x3993c4['as'],'attributes':_0x3993c4[_0xaee6('0x1d')],'include':_0x3993c4[_0xaee6('0x21')]?_['map'](_0x3993c4[_0xaee6('0x21')],function(_0x3fc28a){return{'model':db[_0x3fc28a[_0xaee6('0x20')]],'as':_0x3fc28a['as'],'attributes':_0x3fc28a[_0xaee6('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xaee6('0xd')](function(_0x3821f6){logger[_0xaee6('0xe')](_0xaee6('0x22'),_0x29caed);logger['debug']('ShowVoiceQueue',_0x29caed,JSON[_0xaee6('0x13')](_0x3821f6));_0x101c8e(_0x3821f6);})[_0xaee6('0x18')](function(_0x30ab82){logger['error']('ShowVoiceQueue',_0x30ab82[_0xaee6('0x16')],_0x29caed);_0x40c324(_0x249e03[_0xaee6('0x14')](0x1f4,_0x30ab82[_0xaee6('0x16')]));});});};
\ No newline at end of file
+var _0x1d52=['rpc','../../config/environment','http','defaults','redis','localhost','socket.io-emitter','register','request','then','VoiceQueue,\x20%s,\x20%s','request\x20sent','debug','VoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetVoiceQueue','VoiceQueue','findAll','options','raw','where','attributes','limit','map','include','model','ShowVoiceQueue','find','util','randomstring','ioredis','../../mysqldb','../../config/logger'];(function(_0x48450b,_0x468c0e){var _0x29f063=function(_0x121509){while(--_0x121509){_0x48450b['push'](_0x48450b['shift']());}};_0x29f063(++_0x468c0e);}(_0x1d52,0x19d));var _0x21d5=function(_0x339a76,_0x3c390f){_0x339a76=_0x339a76-0x0;var _0x1c402c=_0x1d52[_0x339a76];return _0x1c402c;};'use strict';var _=require('lodash');var util=require(_0x21d5('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x21d5('0x1'));var fs=require('fs');var Redis=require(_0x21d5('0x2'));var db=require(_0x21d5('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x21d5('0x4'))(_0x21d5('0x5'));var config=require(_0x21d5('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0x21d5('0x7')]({'port':0x232a});config['redis']=_[_0x21d5('0x8')](config[_0x21d5('0x9')],{'host':_0x21d5('0xa'),'port':0x18eb});var socket=require(_0x21d5('0xb'))(new Redis(config[_0x21d5('0x9')]));require('./voiceQueue.socket')[_0x21d5('0xc')](socket);function respondWithRpcPromise(_0x3a70b7,_0x142941,_0x53a2e0){return new BPromise(function(_0x349cca,_0x5293cd){return client[_0x21d5('0xd')](_0x3a70b7,_0x53a2e0)[_0x21d5('0xe')](function(_0x3993bd){logger['info'](_0x21d5('0xf'),_0x142941,_0x21d5('0x10'));logger[_0x21d5('0x11')](_0x21d5('0x12'),_0x142941,'request\x20sent',JSON[_0x21d5('0x13')](_0x3993bd));if(_0x3993bd[_0x21d5('0x14')]){if(_0x3993bd['error'][_0x21d5('0x15')]===0x1f4){logger[_0x21d5('0x14')](_0x21d5('0xf'),_0x142941,_0x3993bd[_0x21d5('0x14')]['message']);return _0x5293cd(_0x3993bd[_0x21d5('0x14')][_0x21d5('0x16')]);}logger[_0x21d5('0x14')](_0x21d5('0xf'),_0x142941,_0x3993bd[_0x21d5('0x14')]['message']);return _0x349cca(_0x3993bd[_0x21d5('0x14')][_0x21d5('0x16')]);}else{logger['info'](_0x21d5('0xf'),_0x142941,_0x21d5('0x10'));_0x349cca(_0x3993bd[_0x21d5('0x17')][_0x21d5('0x16')]);}})[_0x21d5('0x18')](function(_0x3af80a){logger['error'](_0x21d5('0xf'),_0x142941,_0x3af80a);_0x5293cd(_0x3af80a);});});}exports[_0x21d5('0x19')]=function(_0x47e7f0){var _0x4d0b64=this;return new Promise(function(_0x44e7b0,_0x132442){return db[_0x21d5('0x1a')][_0x21d5('0x1b')]({'raw':_0x47e7f0[_0x21d5('0x1c')]?_0x47e7f0[_0x21d5('0x1c')][_0x21d5('0x1d')]===undefined?!![]:![]:!![],'where':_0x47e7f0[_0x21d5('0x1c')]?_0x47e7f0[_0x21d5('0x1c')][_0x21d5('0x1e')]||null:null,'attributes':_0x47e7f0['options']?_0x47e7f0[_0x21d5('0x1c')][_0x21d5('0x1f')]||null:null,'limit':_0x47e7f0[_0x21d5('0x1c')]?_0x47e7f0['options'][_0x21d5('0x20')]||null:null,'include':_0x47e7f0[_0x21d5('0x1c')]?_0x47e7f0[_0x21d5('0x1c')]['include']?_[_0x21d5('0x21')](_0x47e7f0['options'][_0x21d5('0x22')],function(_0x3e1aa5){return{'model':db[_0x3e1aa5[_0x21d5('0x23')]],'as':_0x3e1aa5['as'],'attributes':_0x3e1aa5[_0x21d5('0x1f')],'include':_0x3e1aa5['include']?_['map'](_0x3e1aa5[_0x21d5('0x22')],function(_0x478aee){return{'model':db[_0x478aee[_0x21d5('0x23')]],'as':_0x478aee['as'],'attributes':_0x478aee[_0x21d5('0x1f')],'include':_0x478aee[_0x21d5('0x22')]?_[_0x21d5('0x21')](_0x478aee[_0x21d5('0x22')],function(_0x211bbf){return{'model':db[_0x211bbf[_0x21d5('0x23')]],'as':_0x211bbf['as'],'attributes':_0x211bbf[_0x21d5('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x579eec){logger['info'](_0x21d5('0x19'),_0x47e7f0);logger[_0x21d5('0x11')](_0x21d5('0x19'),_0x47e7f0,JSON['stringify'](_0x579eec));_0x44e7b0(_0x579eec);})['catch'](function(_0x3ae8aa){logger[_0x21d5('0x14')]('GetVoiceQueue',_0x3ae8aa[_0x21d5('0x16')],_0x47e7f0);_0x132442(_0x4d0b64[_0x21d5('0x14')](0x1f4,_0x3ae8aa[_0x21d5('0x16')]));});});};exports[_0x21d5('0x24')]=function(_0x2064f6){var _0xc2d2b9=this;return new Promise(function(_0x4707ee,_0x44f8a9){return db[_0x21d5('0x1a')][_0x21d5('0x25')]({'raw':_0x2064f6[_0x21d5('0x1c')]?_0x2064f6[_0x21d5('0x1c')][_0x21d5('0x1d')]===undefined?!![]:![]:!![],'where':_0x2064f6[_0x21d5('0x1c')]?_0x2064f6[_0x21d5('0x1c')][_0x21d5('0x1e')]||null:null,'attributes':_0x2064f6[_0x21d5('0x1c')]?_0x2064f6[_0x21d5('0x1c')][_0x21d5('0x1f')]||null:null,'include':_0x2064f6[_0x21d5('0x1c')]?_0x2064f6[_0x21d5('0x1c')][_0x21d5('0x22')]?_['map'](_0x2064f6[_0x21d5('0x1c')]['include'],function(_0x292e47){return{'model':db[_0x292e47[_0x21d5('0x23')]],'as':_0x292e47['as'],'attributes':_0x292e47[_0x21d5('0x1f')],'include':_0x292e47[_0x21d5('0x22')]?_[_0x21d5('0x21')](_0x292e47[_0x21d5('0x22')],function(_0x3639cb){return{'model':db[_0x3639cb[_0x21d5('0x23')]],'as':_0x3639cb['as'],'attributes':_0x3639cb[_0x21d5('0x1f')],'include':_0x3639cb[_0x21d5('0x22')]?_[_0x21d5('0x21')](_0x3639cb[_0x21d5('0x22')],function(_0x2b22d8){return{'model':db[_0x2b22d8[_0x21d5('0x23')]],'as':_0x2b22d8['as'],'attributes':_0x2b22d8[_0x21d5('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x21d5('0xe')](function(_0x36c369){logger['info'](_0x21d5('0x24'),_0x2064f6);logger[_0x21d5('0x11')](_0x21d5('0x24'),_0x2064f6,JSON[_0x21d5('0x13')](_0x36c369));_0x4707ee(_0x36c369);})[_0x21d5('0x18')](function(_0x50cbb7){logger[_0x21d5('0x14')]('ShowVoiceQueue',_0x50cbb7['message'],_0x2064f6);_0x44f8a9(_0xc2d2b9[_0x21d5('0x14')](0x1f4,_0x50cbb7[_0x21d5('0x16')]));});});};
\ No newline at end of file
index ba0fef6..707c686 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5faf=['./voiceQueue.events','save','remove','update','emit','removeListener','length','voiceQueue:'];(function(_0x2242a1,_0x38f44d){var _0x2c298b=function(_0x4f4246){while(--_0x4f4246){_0x2242a1['push'](_0x2242a1['shift']());}};_0x2c298b(++_0x38f44d);}(_0x5faf,0x1a8));var _0xf5fa=function(_0x2ae9f6,_0xd4264e){_0x2ae9f6=_0x2ae9f6-0x0;var _0xc2aead=_0x5faf[_0x2ae9f6];return _0xc2aead;};'use strict';var VoiceQueueEvents=require(_0xf5fa('0x0'));var events=[_0xf5fa('0x1'),_0xf5fa('0x2'),_0xf5fa('0x3')];function createListener(_0x53feb2,_0x3b25cb){return function(_0x1881ba){_0x3b25cb[_0xf5fa('0x4')](_0x53feb2,_0x1881ba);};}function removeListener(_0x254304,_0x58c775){return function(){VoiceQueueEvents[_0xf5fa('0x5')](_0x254304,_0x58c775);};}exports['register']=function(_0x45474f){for(var _0x106c69=0x0,_0x26e33e=events[_0xf5fa('0x6')];_0x106c69<_0x26e33e;_0x106c69++){var _0x1323ac=events[_0x106c69];var _0x3b970c=createListener(_0xf5fa('0x7')+_0x1323ac,_0x45474f);VoiceQueueEvents['on'](_0x1323ac,_0x3b970c);}};
\ No newline at end of file
+var _0xf324=['remove','update','emit','removeListener','length','voiceQueue:','./voiceQueue.events'];(function(_0x5a4fb6,_0x1c022c){var _0x15fe52=function(_0x3f7226){while(--_0x3f7226){_0x5a4fb6['push'](_0x5a4fb6['shift']());}};_0x15fe52(++_0x1c022c);}(_0xf324,0x1db));var _0x4f32=function(_0xe4c97e,_0x1b3388){_0xe4c97e=_0xe4c97e-0x0;var _0x9cf58c=_0xf324[_0xe4c97e];return _0x9cf58c;};'use strict';var VoiceQueueEvents=require(_0x4f32('0x0'));var events=['save',_0x4f32('0x1'),_0x4f32('0x2')];function createListener(_0x5109ab,_0x3afbc8){return function(_0x1a4f00){_0x3afbc8[_0x4f32('0x3')](_0x5109ab,_0x1a4f00);};}function removeListener(_0x5de431,_0x3e5ba6){return function(){VoiceQueueEvents[_0x4f32('0x4')](_0x5de431,_0x3e5ba6);};}exports['register']=function(_0x16e41c){for(var _0x1db3d0=0x0,_0x518603=events[_0x4f32('0x5')];_0x1db3d0<_0x518603;_0x1db3d0++){var _0x32edbc=events[_0x1db3d0];var _0x4bd75b=createListener(_0x4f32('0x6')+_0x32edbc,_0x16e41c);VoiceQueueEvents['on'](_0x32edbc,_0x4bd75b);}};
\ No newline at end of file
index dbb6ee2..1ab9222 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b3f=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueueReport.controller','get','isAuthenticated','index','/describe','describe','/index','getVoiceQueuesReport','/:id','show','post','create','put','destroy','multer','path','connect-timeout'];(function(_0xec9daf,_0x13ba78){var _0x271ec4=function(_0x1b752){while(--_0x1b752){_0xec9daf['push'](_0xec9daf['shift']());}};_0x271ec4(++_0x13ba78);}(_0x2b3f,0x1e1));var _0xf2b3=function(_0x114353,_0x1044a7){_0x114353=_0x114353-0x0;var _0x4a3565=_0x2b3f[_0x114353];return _0x4a3565;};'use strict';var multer=require(_0xf2b3('0x0'));var util=require('util');var path=require(_0xf2b3('0x1'));var timeout=require(_0xf2b3('0x2'));var express=require(_0xf2b3('0x3'));var router=express['Router']();var fs_extra=require(_0xf2b3('0x4'));var auth=require(_0xf2b3('0x5'));var interaction=require(_0xf2b3('0x6'));var config=require(_0xf2b3('0x7'));var controller=require(_0xf2b3('0x8'));router[_0xf2b3('0x9')]('/',auth[_0xf2b3('0xa')](),controller[_0xf2b3('0xb')]);router[_0xf2b3('0x9')](_0xf2b3('0xc'),auth[_0xf2b3('0xa')](),controller[_0xf2b3('0xd')]);router[_0xf2b3('0x9')](_0xf2b3('0xe'),auth[_0xf2b3('0xa')](),controller[_0xf2b3('0xf')]);router[_0xf2b3('0x9')](_0xf2b3('0x10'),auth['isAuthenticated'](),controller[_0xf2b3('0x11')]);router[_0xf2b3('0x12')]('/',auth[_0xf2b3('0xa')](),controller[_0xf2b3('0x13')]);router[_0xf2b3('0x14')](_0xf2b3('0x10'),auth[_0xf2b3('0xa')](),controller['update']);router['delete'](_0xf2b3('0x10'),auth[_0xf2b3('0xa')](),controller[_0xf2b3('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0x50ce=['delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceQueueReport.controller','get','isAuthenticated','index','describe','/index','getVoiceQueuesReport','post','create','put','/:id'];(function(_0x5ce8b9,_0x5cded8){var _0xe34be0=function(_0xe3d4e5){while(--_0xe3d4e5){_0x5ce8b9['push'](_0x5ce8b9['shift']());}};_0xe34be0(++_0x5cded8);}(_0x50ce,0xde));var _0xe50c=function(_0x51942a,_0x3bd294){_0x51942a=_0x51942a-0x0;var _0x2ad705=_0x50ce[_0x51942a];return _0x2ad705;};'use strict';var multer=require(_0xe50c('0x0'));var util=require(_0xe50c('0x1'));var path=require(_0xe50c('0x2'));var timeout=require(_0xe50c('0x3'));var express=require(_0xe50c('0x4'));var router=express[_0xe50c('0x5')]();var fs_extra=require(_0xe50c('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xe50c('0x7'));var config=require(_0xe50c('0x8'));var controller=require(_0xe50c('0x9'));router[_0xe50c('0xa')]('/',auth[_0xe50c('0xb')](),controller[_0xe50c('0xc')]);router[_0xe50c('0xa')]('/describe',auth['isAuthenticated'](),controller[_0xe50c('0xd')]);router['get'](_0xe50c('0xe'),auth['isAuthenticated'](),controller[_0xe50c('0xf')]);router[_0xe50c('0xa')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0xe50c('0x10')]('/',auth[_0xe50c('0xb')](),controller[_0xe50c('0x11')]);router[_0xe50c('0x12')](_0xe50c('0x13'),auth[_0xe50c('0xb')](),controller['update']);router[_0xe50c('0x14')](_0xe50c('0x13'),auth[_0xe50c('0xb')](),controller[_0xe50c('0x15')]);module['exports']=router;
\ No newline at end of file
index ba9a00f..c47332a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27e0=['INTEGER','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','FORWARD,\x20BLIND,\x20ATTENDED','moment','exports','STRING','DATE','queuecallerjoinAt','format','YYYY-MM-DD\x20HH:mm:ss','seconds','setDataValue','queuecallerleaveAt','holdtime'];(function(_0xf89a62,_0x5e0eec){var _0x44fabf=function(_0x1b3375){while(--_0x1b3375){_0xf89a62['push'](_0xf89a62['shift']());}};_0x44fabf(++_0x5e0eec);}(_0x27e0,0x1e4));var _0x027e=function(_0x41a4c7,_0x542e7c){_0x41a4c7=_0x41a4c7-0x0;var _0x3d11bc=_0x27e0[_0x41a4c7];return _0x3d11bc;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x027e('0x0'));module[_0x027e('0x1')]={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x027e('0x2')]},'calleridnum':{'type':Sequelize[_0x027e('0x2')]},'calleridname':{'type':Sequelize[_0x027e('0x2')]},'queue':{'type':Sequelize[_0x027e('0x2')]},'queuecallerjoinAt':{'type':Sequelize['DATE']},'queuecallerleaveAt':{'type':Sequelize[_0x027e('0x3')],'set':function(_0x1689f6){var _0x2a7026=moment(_0x1689f6);var _0xa6b2bb=moment(this['getDataValue'](_0x027e('0x4')))[_0x027e('0x5')](_0x027e('0x6'));var _0x47add3=_0x2a7026['diff'](_0xa6b2bb,_0x027e('0x7'));this[_0x027e('0x8')](_0x027e('0x9'),_0x1689f6);this[_0x027e('0x8')](_0x027e('0xa'),_0x47add3||null);}},'position':{'type':Sequelize[_0x027e('0xb')]},'count':{'type':Sequelize[_0x027e('0xb')]},'queuecallerabandon':{'type':Sequelize[_0x027e('0xc')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0x027e('0x3')]},'queuecallercomplete':{'type':Sequelize[_0x027e('0xc')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0x027e('0x3')]},'queuecallerexit':{'type':Sequelize[_0x027e('0xc')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0x027e('0x3')]},'queuecallerexitreason':{'type':Sequelize[_0x027e('0x2')],'comment':_0x027e('0xd')},'originalposition':{'type':Sequelize['INTEGER']},'channel':{'type':Sequelize[_0x027e('0x2')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x027e('0x2')]},'exten':{'type':Sequelize[_0x027e('0x2')]},'priority':{'type':Sequelize[_0x027e('0x2')]},'holdtime':{'type':Sequelize[_0x027e('0xb')]},'mohtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x027e('0xc')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0x027e('0x2')]},'transfer':{'type':Sequelize[_0x027e('0xc')],'defaultValue':![]},'transfertype':{'type':Sequelize['STRING'],'comment':_0x027e('0xe')},'transferexten':{'type':Sequelize[_0x027e('0x2')]},'transferuniqueid':{'type':Sequelize[_0x027e('0x2')]},'disposition':{'type':Sequelize[_0x027e('0x2')]},'secondDisposition':{'type':Sequelize[_0x027e('0x2')]},'thirdDisposition':{'type':Sequelize[_0x027e('0x2')]},'queuecallerenterreason':{'type':Sequelize[_0x027e('0xb')],'defaultValue':0x0},'note':{'type':Sequelize[_0x027e('0x2')]}};
\ No newline at end of file
+var _0xdd49=['BOOLEAN','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','moment','exports','STRING','DATE','getDataValue','format','YYYY-MM-DD\x20HH:mm:ss','diff','queuecallerleaveAt','setDataValue','holdtime','INTEGER'];(function(_0x4ecedb,_0x2dffa3){var _0x3544cc=function(_0x107383){while(--_0x107383){_0x4ecedb['push'](_0x4ecedb['shift']());}};_0x3544cc(++_0x2dffa3);}(_0xdd49,0x14c));var _0x9dd4=function(_0x4132d1,_0x41fbbd){_0x4132d1=_0x4132d1-0x0;var _0x27d9cb=_0xdd49[_0x4132d1];return _0x27d9cb;};'use strict';var Sequelize=require(_0x9dd4('0x0'));var moment=require(_0x9dd4('0x1'));module[_0x9dd4('0x2')]={'type':{'type':Sequelize[_0x9dd4('0x3')]},'uniqueid':{'type':Sequelize[_0x9dd4('0x3')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x9dd4('0x3')]},'queue':{'type':Sequelize['STRING']},'queuecallerjoinAt':{'type':Sequelize[_0x9dd4('0x4')]},'queuecallerleaveAt':{'type':Sequelize[_0x9dd4('0x4')],'set':function(_0x22ce6d){var _0x1a1a3c=moment(_0x22ce6d);var _0x33f187=moment(this[_0x9dd4('0x5')]('queuecallerjoinAt'))[_0x9dd4('0x6')](_0x9dd4('0x7'));var _0x49e601=_0x1a1a3c[_0x9dd4('0x8')](_0x33f187,'seconds');this['setDataValue'](_0x9dd4('0x9'),_0x22ce6d);this[_0x9dd4('0xa')](_0x9dd4('0xb'),_0x49e601||null);}},'position':{'type':Sequelize[_0x9dd4('0xc')]},'count':{'type':Sequelize[_0x9dd4('0xc')]},'queuecallerabandon':{'type':Sequelize[_0x9dd4('0xd')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0x9dd4('0x4')]},'queuecallercomplete':{'type':Sequelize[_0x9dd4('0xd')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize['DATE']},'queuecallerexit':{'type':Sequelize[_0x9dd4('0xd')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0x9dd4('0x4')]},'queuecallerexitreason':{'type':Sequelize[_0x9dd4('0x3')],'comment':'COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT'},'originalposition':{'type':Sequelize[_0x9dd4('0xc')]},'channel':{'type':Sequelize[_0x9dd4('0x3')]},'connectedlinenum':{'type':Sequelize[_0x9dd4('0x3')]},'connectedlinename':{'type':Sequelize[_0x9dd4('0x3')]},'accountcode':{'type':Sequelize[_0x9dd4('0x3')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x9dd4('0x3')]},'priority':{'type':Sequelize[_0x9dd4('0x3')]},'holdtime':{'type':Sequelize[_0x9dd4('0xc')]},'mohtime':{'type':Sequelize[_0x9dd4('0xc')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x9dd4('0xd')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0x9dd4('0x3')]},'transfer':{'type':Sequelize[_0x9dd4('0xd')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x9dd4('0x3')],'comment':_0x9dd4('0xe')},'transferexten':{'type':Sequelize[_0x9dd4('0x3')]},'transferuniqueid':{'type':Sequelize['STRING']},'disposition':{'type':Sequelize[_0x9dd4('0x3')]},'secondDisposition':{'type':Sequelize[_0x9dd4('0x3')]},'thirdDisposition':{'type':Sequelize[_0x9dd4('0x3')]},'queuecallerenterreason':{'type':Sequelize[_0x9dd4('0xc')],'defaultValue':0x0},'note':{'type':Sequelize[_0x9dd4('0x3')]}};
\ No newline at end of file
index b879635..9810970 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8aa2=['bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','redis','defaults','localhost','./voiceQueueReport.socket','sendStatus','status','offset','undefined','limit','count','Content-Range','json','apply','reject','update','then','error','stack','name','send','index','map','VoiceQueueReport','fieldName','type','key','query','keys','intersection','attributes','model','fields','length','nolimit','order','sort','where','filters','pick','filter','merge','includeAll','include','findAll','catch','params','rawAttributes','options','find','create','body','destroy','describe','getVoiceQueuesReport','hasOwnProperty','eml-format','zip-dir','fast-json-patch','request-promise','moment'];(function(_0x59c888,_0xdb422c){var _0x3bd480=function(_0x1d6daa){while(--_0x1d6daa){_0x59c888['push'](_0x59c888['shift']());}};_0x3bd480(++_0xdb422c);}(_0x8aa2,0x13f));var _0x28aa=function(_0x4985aa,_0x1072b3){_0x4985aa=_0x4985aa-0x0;var _0x4e16c6=_0x8aa2[_0x4985aa];return _0x4e16c6;};'use strict';var emlformat=require(_0x28aa('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x28aa('0x1'));var jsonpatch=require(_0x28aa('0x2'));var rp=require(_0x28aa('0x3'));var moment=require(_0x28aa('0x4'));var BPromise=require(_0x28aa('0x5'));var Mustache=require(_0x28aa('0x6'));var util=require(_0x28aa('0x7'));var path=require(_0x28aa('0x8'));var sox=require(_0x28aa('0x9'));var csv=require(_0x28aa('0xa'));var ejs=require(_0x28aa('0xb'));var fs=require('fs');var fs_extra=require(_0x28aa('0xc'));var _=require(_0x28aa('0xd'));var squel=require(_0x28aa('0xe'));var crypto=require(_0x28aa('0xf'));var jsforce=require(_0x28aa('0x10'));var deskjs=require('desk.js');var toCsv=require(_0x28aa('0xa'));var querystring=require(_0x28aa('0x11'));var Papa=require(_0x28aa('0x12'));var Redis=require(_0x28aa('0x13'));var authService=require(_0x28aa('0x14'));var qs=require(_0x28aa('0x15'));var as=require(_0x28aa('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x28aa('0x17'));var utils=require('../../config/utils');var config=require(_0x28aa('0x18'));var licenseUtil=require(_0x28aa('0x19'));var db=require('../../mysqldb')['db'];config[_0x28aa('0x1a')]=_[_0x28aa('0x1b')](config[_0x28aa('0x1a')],{'host':_0x28aa('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x28aa('0x1d'))['register'](socket);function respondWithStatusCode(_0x241baa,_0x21cdb3){_0x21cdb3=_0x21cdb3||0xcc;return function(_0x24a3e6){if(_0x24a3e6){return _0x241baa[_0x28aa('0x1e')](_0x21cdb3);}return _0x241baa[_0x28aa('0x1f')](_0x21cdb3)['end']();};}function respondWithResult(_0x405474,_0x4358f0){_0x4358f0=_0x4358f0||0xc8;return function(_0x582688){if(_0x582688){return _0x405474['status'](_0x4358f0)['json'](_0x582688);}};}function respondWithFilteredResult(_0x1dad00,_0x1850b6){return function(_0x219bf6){if(_0x219bf6){var _0x327a32=typeof _0x1850b6[_0x28aa('0x20')]===_0x28aa('0x21')&&typeof _0x1850b6[_0x28aa('0x22')]===_0x28aa('0x21');var _0x281e97=_0x219bf6[_0x28aa('0x23')];var _0x3aa912=_0x327a32?0x0:_0x1850b6['offset'];var _0x1604ec=_0x327a32?_0x219bf6['count']:_0x1850b6[_0x28aa('0x20')]+_0x1850b6['limit'];var _0x39a21f;if(_0x1604ec>=_0x281e97){_0x1604ec=_0x281e97;_0x39a21f=0xc8;}else{_0x39a21f=0xce;}_0x1dad00[_0x28aa('0x1f')](_0x39a21f);return _0x1dad00['set'](_0x28aa('0x24'),_0x3aa912+'-'+_0x1604ec+'/'+_0x281e97)[_0x28aa('0x25')](_0x219bf6);}return null;};}function patchUpdates(_0x4b6f20){return function(_0x2c022c){try{jsonpatch[_0x28aa('0x26')](_0x2c022c,_0x4b6f20,!![]);}catch(_0x23ada3){return BPromise[_0x28aa('0x27')](_0x23ada3);}return _0x2c022c['save']();};}function saveUpdates(_0x434ef7,_0x42edba){return function(_0x7677be){if(_0x7677be){return _0x7677be[_0x28aa('0x28')](_0x434ef7)[_0x28aa('0x29')](function(_0x19e944){return _0x19e944;});}return null;};}function removeEntity(_0x40cf91,_0x42054c){return function(_0x5732a6){if(_0x5732a6){return _0x5732a6['destroy']()[_0x28aa('0x29')](function(){_0x40cf91[_0x28aa('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4eba61,_0x1807a5){return function(_0x39d958){if(!_0x39d958){_0x4eba61[_0x28aa('0x1e')](0x194);}return _0x39d958;};}function handleError(_0xbb3f3a,_0x2a8e57){_0x2a8e57=_0x2a8e57||0x1f4;return function(_0xa63972){logger[_0x28aa('0x2a')](_0xa63972[_0x28aa('0x2b')]);if(_0xa63972[_0x28aa('0x2c')]){delete _0xa63972[_0x28aa('0x2c')];}_0xbb3f3a['status'](_0x2a8e57)[_0x28aa('0x2d')](_0xa63972);};}exports[_0x28aa('0x2e')]=function(_0x2218fb,_0x1d11f4){var _0x539287={},_0x25f3cb={},_0x395fa5={'count':0x0,'rows':[]};var _0x41278e=_[_0x28aa('0x2f')](db[_0x28aa('0x30')]['rawAttributes'],function(_0x2521c1){return{'name':_0x2521c1[_0x28aa('0x31')],'type':_0x2521c1[_0x28aa('0x32')][_0x28aa('0x33')]};});_0x25f3cb['model']=_[_0x28aa('0x2f')](_0x41278e,_0x28aa('0x2c'));_0x25f3cb[_0x28aa('0x34')]=_[_0x28aa('0x35')](_0x2218fb[_0x28aa('0x34')]);_0x25f3cb['filters']=_[_0x28aa('0x36')](_0x25f3cb['model'],_0x25f3cb['query']);_0x539287[_0x28aa('0x37')]=_['intersection'](_0x25f3cb[_0x28aa('0x38')],qs[_0x28aa('0x39')](_0x2218fb[_0x28aa('0x34')]['fields']));_0x539287[_0x28aa('0x37')]=_0x539287[_0x28aa('0x37')][_0x28aa('0x3a')]?_0x539287['attributes']:_0x25f3cb['model'];if(!_0x2218fb['query']['hasOwnProperty'](_0x28aa('0x3b'))){_0x539287['limit']=qs['limit'](_0x2218fb[_0x28aa('0x34')]['limit']);_0x539287[_0x28aa('0x20')]=qs[_0x28aa('0x20')](_0x2218fb[_0x28aa('0x34')][_0x28aa('0x20')]);}_0x539287[_0x28aa('0x3c')]=qs['sort'](_0x2218fb[_0x28aa('0x34')][_0x28aa('0x3d')]);_0x539287[_0x28aa('0x3e')]=qs[_0x28aa('0x3f')](_[_0x28aa('0x40')](_0x2218fb['query'],_0x25f3cb[_0x28aa('0x3f')]),_0x41278e);if(_0x2218fb[_0x28aa('0x34')]['filter']){_0x539287[_0x28aa('0x3e')]=_['merge'](_0x539287[_0x28aa('0x3e')],{'$or':_[_0x28aa('0x2f')](_0x41278e,function(_0x131d2e){if(_0x131d2e['type']!=='VIRTUAL'){var _0x5c5449={};_0x5c5449[_0x131d2e[_0x28aa('0x2c')]]={'$like':'%'+_0x2218fb['query'][_0x28aa('0x41')]+'%'};return _0x5c5449;}})});}_0x539287=_[_0x28aa('0x42')]({},_0x539287,_0x2218fb['options']);var _0x463d35={'where':_0x539287[_0x28aa('0x3e')]};return db[_0x28aa('0x30')][_0x28aa('0x23')](_0x463d35)[_0x28aa('0x29')](function(_0x500559){_0x395fa5[_0x28aa('0x23')]=_0x500559;if(_0x2218fb[_0x28aa('0x34')][_0x28aa('0x43')]){_0x539287[_0x28aa('0x44')]=[{'all':!![]}];}return db[_0x28aa('0x30')][_0x28aa('0x45')](_0x539287);})['then'](function(_0x12a70e){_0x395fa5['rows']=_0x12a70e;return _0x395fa5;})[_0x28aa('0x29')](respondWithFilteredResult(_0x1d11f4,_0x539287))[_0x28aa('0x46')](handleError(_0x1d11f4,null));};exports['show']=function(_0x45b4bf,_0x384f6e){var _0x1ebe5c={'raw':![],'where':{'id':_0x45b4bf[_0x28aa('0x47')]['id']}},_0x4b4164={};_0x4b4164[_0x28aa('0x38')]=_['keys'](db[_0x28aa('0x30')][_0x28aa('0x48')]);_0x4b4164[_0x28aa('0x34')]=_[_0x28aa('0x35')](_0x45b4bf[_0x28aa('0x34')]);_0x4b4164[_0x28aa('0x3f')]=_[_0x28aa('0x36')](_0x4b4164[_0x28aa('0x38')],_0x4b4164[_0x28aa('0x34')]);_0x1ebe5c[_0x28aa('0x37')]=_[_0x28aa('0x36')](_0x4b4164['model'],qs[_0x28aa('0x39')](_0x45b4bf[_0x28aa('0x34')][_0x28aa('0x39')]));_0x1ebe5c[_0x28aa('0x37')]=_0x1ebe5c[_0x28aa('0x37')]['length']?_0x1ebe5c[_0x28aa('0x37')]:_0x4b4164[_0x28aa('0x38')];if(_0x45b4bf['query'][_0x28aa('0x43')]){_0x1ebe5c[_0x28aa('0x44')]=[{'all':!![]}];}_0x1ebe5c=_[_0x28aa('0x42')]({},_0x1ebe5c,_0x45b4bf[_0x28aa('0x49')]);return db['VoiceQueueReport'][_0x28aa('0x4a')](_0x1ebe5c)['then'](handleEntityNotFound(_0x384f6e,null))[_0x28aa('0x29')](respondWithResult(_0x384f6e,null))[_0x28aa('0x46')](handleError(_0x384f6e,null));};exports[_0x28aa('0x4b')]=function(_0x2a736a,_0x4afa1b){return db[_0x28aa('0x30')][_0x28aa('0x4b')](_0x2a736a[_0x28aa('0x4c')],{})[_0x28aa('0x29')](respondWithResult(_0x4afa1b,0xc9))[_0x28aa('0x46')](handleError(_0x4afa1b,null));};exports[_0x28aa('0x28')]=function(_0x45b97f,_0x2e56d0){if(_0x45b97f['body']['id']){delete _0x45b97f[_0x28aa('0x4c')]['id'];}return db[_0x28aa('0x30')][_0x28aa('0x4a')]({'where':{'id':_0x45b97f['params']['id']}})['then'](handleEntityNotFound(_0x2e56d0,null))[_0x28aa('0x29')](saveUpdates(_0x45b97f[_0x28aa('0x4c')],null))['then'](respondWithResult(_0x2e56d0,null))[_0x28aa('0x46')](handleError(_0x2e56d0,null));};exports[_0x28aa('0x4d')]=function(_0x397359,_0x4acaa9){return db['VoiceQueueReport'][_0x28aa('0x4a')]({'where':{'id':_0x397359['params']['id']}})[_0x28aa('0x29')](handleEntityNotFound(_0x4acaa9,null))[_0x28aa('0x29')](removeEntity(_0x4acaa9,null))[_0x28aa('0x46')](handleError(_0x4acaa9,null));};exports[_0x28aa('0x4e')]=function(_0x5d8c69,_0x58eea4){return db[_0x28aa('0x30')][_0x28aa('0x4e')]()['then'](respondWithResult(_0x58eea4,null))[_0x28aa('0x46')](handleError(_0x58eea4,null));};exports[_0x28aa('0x4f')]=function(_0x19e25f,_0x1e4dc3){var _0x59d800={},_0xbe9a84={},_0x54cf03={'count':0x0,'rows':[]};_0xbe9a84['model']=_[_0x28aa('0x35')](db[_0x28aa('0x30')][_0x28aa('0x48')]);_0xbe9a84[_0x28aa('0x34')]=_[_0x28aa('0x35')](_0x19e25f['query']);_0xbe9a84[_0x28aa('0x3f')]=_[_0x28aa('0x36')](_0xbe9a84[_0x28aa('0x38')],_0xbe9a84[_0x28aa('0x34')]);_0x59d800[_0x28aa('0x37')]=_[_0x28aa('0x36')](_0xbe9a84[_0x28aa('0x38')],qs['fields'](_0x19e25f['query'][_0x28aa('0x39')]));_0x59d800[_0x28aa('0x37')]=_0x59d800['attributes'][_0x28aa('0x3a')]?_0x59d800[_0x28aa('0x37')]:_0xbe9a84[_0x28aa('0x38')];if(!_0x19e25f[_0x28aa('0x34')][_0x28aa('0x50')](_0x28aa('0x3b'))){_0x59d800[_0x28aa('0x22')]=qs['limit'](_0x19e25f['query'][_0x28aa('0x22')]);_0x59d800['offset']=qs['offset'](_0x19e25f['query']['offset']);}_0x59d800[_0x28aa('0x3c')]=qs[_0x28aa('0x3d')](_0x19e25f['query'][_0x28aa('0x3d')]);_0x59d800[_0x28aa('0x3e')]=qs[_0x28aa('0x3f')](_[_0x28aa('0x40')](_0x19e25f[_0x28aa('0x34')],_0xbe9a84[_0x28aa('0x3f')]));if(_0x19e25f[_0x28aa('0x34')]['filter']){_0x59d800['where']=_[_0x28aa('0x42')](_0x59d800[_0x28aa('0x3e')],{'$or':_[_0x28aa('0x2f')](_0x59d800['attributes'],function(_0x45a328){var _0x3cc2b5={};_0x3cc2b5[_0x45a328]={'$like':'%'+_0x19e25f[_0x28aa('0x34')]['filter']+'%'};return _0x3cc2b5;})});}_0x59d800=_[_0x28aa('0x42')]({},_0x59d800,_0x19e25f[_0x28aa('0x49')]);var _0x2dae63={'where':_0x59d800[_0x28aa('0x3e')]};return db[_0x28aa('0x30')][_0x28aa('0x23')](_0x2dae63)[_0x28aa('0x29')](function(_0x66e9b1){_0x54cf03['count']=_0x66e9b1;if(_0x19e25f[_0x28aa('0x34')]['includeAll']){_0x59d800[_0x28aa('0x44')]=[{'all':!![]}];}return db[_0x28aa('0x30')][_0x28aa('0x45')](_0x59d800);})[_0x28aa('0x29')](function(_0xd0c2ac){_0x54cf03['rows']=_0xd0c2ac;return _0x54cf03;})[_0x28aa('0x29')](respondWithFilteredResult(_0x1e4dc3,_0x59d800,_0x28aa('0x4f')))[_0x28aa('0x46')](handleError(_0x1e4dc3,null,_0x28aa('0x4f')));};
\ No newline at end of file
+var _0x07ee=['error','stack','name','index','map','VoiceQueueReport','rawAttributes','fieldName','type','key','model','keys','filters','intersection','query','attributes','fields','hasOwnProperty','nolimit','limit','sort','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','length','find','create','body','describe','getVoiceQueuesReport','order','pick','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./voiceQueueReport.socket','register','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy'];(function(_0x35c3cc,_0x2b9e33){var _0x23c0a0=function(_0x156012){while(--_0x156012){_0x35c3cc['push'](_0x35c3cc['shift']());}};_0x23c0a0(++_0x2b9e33);}(_0x07ee,0x185));var _0xe07e=function(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0x07ee[_0x30ae5e];return _0x1f2e93;};'use strict';var emlformat=require(_0xe07e('0x0'));var rimraf=require(_0xe07e('0x1'));var zipdir=require(_0xe07e('0x2'));var jsonpatch=require(_0xe07e('0x3'));var rp=require(_0xe07e('0x4'));var moment=require(_0xe07e('0x5'));var BPromise=require(_0xe07e('0x6'));var Mustache=require(_0xe07e('0x7'));var util=require(_0xe07e('0x8'));var path=require(_0xe07e('0x9'));var sox=require(_0xe07e('0xa'));var csv=require(_0xe07e('0xb'));var ejs=require(_0xe07e('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe07e('0xd'));var squel=require('squel');var crypto=require(_0xe07e('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xe07e('0xf'));var toCsv=require('to-csv');var querystring=require(_0xe07e('0x10'));var Papa=require(_0xe07e('0x11'));var Redis=require(_0xe07e('0x12'));var authService=require(_0xe07e('0x13'));var qs=require(_0xe07e('0x14'));var as=require(_0xe07e('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xe07e('0x16'));var utils=require(_0xe07e('0x17'));var config=require(_0xe07e('0x18'));var licenseUtil=require(_0xe07e('0x19'));var db=require(_0xe07e('0x1a'))['db'];config['redis']=_['defaults'](config[_0xe07e('0x1b')],{'host':_0xe07e('0x1c'),'port':0x18eb});var socket=require(_0xe07e('0x1d'))(new Redis(config[_0xe07e('0x1b')]));require(_0xe07e('0x1e'))[_0xe07e('0x1f')](socket);function respondWithStatusCode(_0x18baa6,_0x4cc855){_0x4cc855=_0x4cc855||0xcc;return function(_0x536692){if(_0x536692){return _0x18baa6['sendStatus'](_0x4cc855);}return _0x18baa6[_0xe07e('0x20')](_0x4cc855)[_0xe07e('0x21')]();};}function respondWithResult(_0x527ebc,_0x438cb6){_0x438cb6=_0x438cb6||0xc8;return function(_0x2a5933){if(_0x2a5933){return _0x527ebc['status'](_0x438cb6)[_0xe07e('0x22')](_0x2a5933);}};}function respondWithFilteredResult(_0x1ba892,_0x4876ee){return function(_0x212447){if(_0x212447){var _0x34e958=typeof _0x4876ee[_0xe07e('0x23')]===_0xe07e('0x24')&&typeof _0x4876ee['limit']===_0xe07e('0x24');var _0x22ab73=_0x212447[_0xe07e('0x25')];var _0xb5e064=_0x34e958?0x0:_0x4876ee[_0xe07e('0x23')];var _0x32f28d=_0x34e958?_0x212447[_0xe07e('0x25')]:_0x4876ee[_0xe07e('0x23')]+_0x4876ee['limit'];var _0x1af003;if(_0x32f28d>=_0x22ab73){_0x32f28d=_0x22ab73;_0x1af003=0xc8;}else{_0x1af003=0xce;}_0x1ba892[_0xe07e('0x20')](_0x1af003);return _0x1ba892[_0xe07e('0x26')](_0xe07e('0x27'),_0xb5e064+'-'+_0x32f28d+'/'+_0x22ab73)[_0xe07e('0x22')](_0x212447);}return null;};}function patchUpdates(_0x2ff317){return function(_0x26b332){try{jsonpatch[_0xe07e('0x28')](_0x26b332,_0x2ff317,!![]);}catch(_0xc35e4b){return BPromise[_0xe07e('0x29')](_0xc35e4b);}return _0x26b332[_0xe07e('0x2a')]();};}function saveUpdates(_0x47f701,_0x8e358){return function(_0x2b8fff){if(_0x2b8fff){return _0x2b8fff[_0xe07e('0x2b')](_0x47f701)[_0xe07e('0x2c')](function(_0x4b9318){return _0x4b9318;});}return null;};}function removeEntity(_0x163030,_0x462244){return function(_0x1c08fb){if(_0x1c08fb){return _0x1c08fb[_0xe07e('0x2d')]()[_0xe07e('0x2c')](function(){_0x163030['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x53eb19,_0x37661b){return function(_0x2d66ba){if(!_0x2d66ba){_0x53eb19['sendStatus'](0x194);}return _0x2d66ba;};}function handleError(_0x182505,_0x31bce2){_0x31bce2=_0x31bce2||0x1f4;return function(_0x446bfa){logger[_0xe07e('0x2e')](_0x446bfa[_0xe07e('0x2f')]);if(_0x446bfa['name']){delete _0x446bfa[_0xe07e('0x30')];}_0x182505['status'](_0x31bce2)['send'](_0x446bfa);};}exports[_0xe07e('0x31')]=function(_0x34f495,_0x1df9f3){var _0x5e29bb={},_0x1db5c8={},_0x438e36={'count':0x0,'rows':[]};var _0x58d213=_[_0xe07e('0x32')](db[_0xe07e('0x33')][_0xe07e('0x34')],function(_0x2462d8){return{'name':_0x2462d8[_0xe07e('0x35')],'type':_0x2462d8[_0xe07e('0x36')][_0xe07e('0x37')]};});_0x1db5c8[_0xe07e('0x38')]=_[_0xe07e('0x32')](_0x58d213,_0xe07e('0x30'));_0x1db5c8['query']=_[_0xe07e('0x39')](_0x34f495['query']);_0x1db5c8[_0xe07e('0x3a')]=_[_0xe07e('0x3b')](_0x1db5c8[_0xe07e('0x38')],_0x1db5c8[_0xe07e('0x3c')]);_0x5e29bb[_0xe07e('0x3d')]=_[_0xe07e('0x3b')](_0x1db5c8[_0xe07e('0x38')],qs['fields'](_0x34f495['query'][_0xe07e('0x3e')]));_0x5e29bb[_0xe07e('0x3d')]=_0x5e29bb[_0xe07e('0x3d')]['length']?_0x5e29bb[_0xe07e('0x3d')]:_0x1db5c8['model'];if(!_0x34f495[_0xe07e('0x3c')][_0xe07e('0x3f')](_0xe07e('0x40'))){_0x5e29bb[_0xe07e('0x41')]=qs[_0xe07e('0x41')](_0x34f495[_0xe07e('0x3c')]['limit']);_0x5e29bb[_0xe07e('0x23')]=qs['offset'](_0x34f495[_0xe07e('0x3c')][_0xe07e('0x23')]);}_0x5e29bb['order']=qs[_0xe07e('0x42')](_0x34f495['query'][_0xe07e('0x42')]);_0x5e29bb[_0xe07e('0x43')]=qs[_0xe07e('0x3a')](_['pick'](_0x34f495[_0xe07e('0x3c')],_0x1db5c8[_0xe07e('0x3a')]),_0x58d213);if(_0x34f495[_0xe07e('0x3c')]['filter']){_0x5e29bb['where']=_[_0xe07e('0x44')](_0x5e29bb[_0xe07e('0x43')],{'$or':_['map'](_0x58d213,function(_0x1073fa){if(_0x1073fa[_0xe07e('0x36')]!==_0xe07e('0x45')){var _0x18e332={};_0x18e332[_0x1073fa['name']]={'$like':'%'+_0x34f495[_0xe07e('0x3c')][_0xe07e('0x46')]+'%'};return _0x18e332;}})});}_0x5e29bb=_[_0xe07e('0x44')]({},_0x5e29bb,_0x34f495[_0xe07e('0x47')]);var _0x1d0610={'where':_0x5e29bb['where']};return db['VoiceQueueReport'][_0xe07e('0x25')](_0x1d0610)['then'](function(_0x378194){_0x438e36[_0xe07e('0x25')]=_0x378194;if(_0x34f495[_0xe07e('0x3c')][_0xe07e('0x48')]){_0x5e29bb[_0xe07e('0x49')]=[{'all':!![]}];}return db[_0xe07e('0x33')][_0xe07e('0x4a')](_0x5e29bb);})[_0xe07e('0x2c')](function(_0x1a397a){_0x438e36[_0xe07e('0x4b')]=_0x1a397a;return _0x438e36;})['then'](respondWithFilteredResult(_0x1df9f3,_0x5e29bb))[_0xe07e('0x4c')](handleError(_0x1df9f3,null));};exports[_0xe07e('0x4d')]=function(_0x56799e,_0x14bc11){var _0x5ea50d={'raw':![],'where':{'id':_0x56799e[_0xe07e('0x4e')]['id']}},_0x734dba={};_0x734dba['model']=_['keys'](db['VoiceQueueReport'][_0xe07e('0x34')]);_0x734dba[_0xe07e('0x3c')]=_[_0xe07e('0x39')](_0x56799e[_0xe07e('0x3c')]);_0x734dba[_0xe07e('0x3a')]=_[_0xe07e('0x3b')](_0x734dba[_0xe07e('0x38')],_0x734dba[_0xe07e('0x3c')]);_0x5ea50d[_0xe07e('0x3d')]=_[_0xe07e('0x3b')](_0x734dba[_0xe07e('0x38')],qs[_0xe07e('0x3e')](_0x56799e[_0xe07e('0x3c')][_0xe07e('0x3e')]));_0x5ea50d['attributes']=_0x5ea50d['attributes'][_0xe07e('0x4f')]?_0x5ea50d['attributes']:_0x734dba[_0xe07e('0x38')];if(_0x56799e['query'][_0xe07e('0x48')]){_0x5ea50d[_0xe07e('0x49')]=[{'all':!![]}];}_0x5ea50d=_[_0xe07e('0x44')]({},_0x5ea50d,_0x56799e[_0xe07e('0x47')]);return db['VoiceQueueReport'][_0xe07e('0x50')](_0x5ea50d)[_0xe07e('0x2c')](handleEntityNotFound(_0x14bc11,null))[_0xe07e('0x2c')](respondWithResult(_0x14bc11,null))[_0xe07e('0x4c')](handleError(_0x14bc11,null));};exports[_0xe07e('0x51')]=function(_0x46fb24,_0x5612fa){return db[_0xe07e('0x33')][_0xe07e('0x51')](_0x46fb24[_0xe07e('0x52')],{})[_0xe07e('0x2c')](respondWithResult(_0x5612fa,0xc9))['catch'](handleError(_0x5612fa,null));};exports[_0xe07e('0x2b')]=function(_0x358b8a,_0x37116e){if(_0x358b8a[_0xe07e('0x52')]['id']){delete _0x358b8a[_0xe07e('0x52')]['id'];}return db[_0xe07e('0x33')][_0xe07e('0x50')]({'where':{'id':_0x358b8a['params']['id']}})[_0xe07e('0x2c')](handleEntityNotFound(_0x37116e,null))['then'](saveUpdates(_0x358b8a['body'],null))[_0xe07e('0x2c')](respondWithResult(_0x37116e,null))[_0xe07e('0x4c')](handleError(_0x37116e,null));};exports[_0xe07e('0x2d')]=function(_0x51c5ae,_0x588bc4){return db[_0xe07e('0x33')][_0xe07e('0x50')]({'where':{'id':_0x51c5ae[_0xe07e('0x4e')]['id']}})[_0xe07e('0x2c')](handleEntityNotFound(_0x588bc4,null))['then'](removeEntity(_0x588bc4,null))[_0xe07e('0x4c')](handleError(_0x588bc4,null));};exports[_0xe07e('0x53')]=function(_0xe39f26,_0x20eb2d){return db[_0xe07e('0x33')]['describe']()['then'](respondWithResult(_0x20eb2d,null))[_0xe07e('0x4c')](handleError(_0x20eb2d,null));};exports[_0xe07e('0x54')]=function(_0x36a3c1,_0x16ae9f){var _0x4f1024={},_0x3b0f68={},_0xd381b6={'count':0x0,'rows':[]};_0x3b0f68[_0xe07e('0x38')]=_[_0xe07e('0x39')](db[_0xe07e('0x33')][_0xe07e('0x34')]);_0x3b0f68['query']=_[_0xe07e('0x39')](_0x36a3c1[_0xe07e('0x3c')]);_0x3b0f68[_0xe07e('0x3a')]=_[_0xe07e('0x3b')](_0x3b0f68[_0xe07e('0x38')],_0x3b0f68[_0xe07e('0x3c')]);_0x4f1024['attributes']=_[_0xe07e('0x3b')](_0x3b0f68[_0xe07e('0x38')],qs['fields'](_0x36a3c1['query']['fields']));_0x4f1024['attributes']=_0x4f1024[_0xe07e('0x3d')][_0xe07e('0x4f')]?_0x4f1024[_0xe07e('0x3d')]:_0x3b0f68['model'];if(!_0x36a3c1[_0xe07e('0x3c')]['hasOwnProperty'](_0xe07e('0x40'))){_0x4f1024[_0xe07e('0x41')]=qs[_0xe07e('0x41')](_0x36a3c1['query'][_0xe07e('0x41')]);_0x4f1024[_0xe07e('0x23')]=qs[_0xe07e('0x23')](_0x36a3c1[_0xe07e('0x3c')][_0xe07e('0x23')]);}_0x4f1024[_0xe07e('0x55')]=qs[_0xe07e('0x42')](_0x36a3c1[_0xe07e('0x3c')][_0xe07e('0x42')]);_0x4f1024[_0xe07e('0x43')]=qs[_0xe07e('0x3a')](_[_0xe07e('0x56')](_0x36a3c1[_0xe07e('0x3c')],_0x3b0f68[_0xe07e('0x3a')]));if(_0x36a3c1[_0xe07e('0x3c')][_0xe07e('0x46')]){_0x4f1024[_0xe07e('0x43')]=_[_0xe07e('0x44')](_0x4f1024[_0xe07e('0x43')],{'$or':_[_0xe07e('0x32')](_0x4f1024['attributes'],function(_0x3e91e9){var _0x2da9b3={};_0x2da9b3[_0x3e91e9]={'$like':'%'+_0x36a3c1['query']['filter']+'%'};return _0x2da9b3;})});}_0x4f1024=_[_0xe07e('0x44')]({},_0x4f1024,_0x36a3c1[_0xe07e('0x47')]);var _0x2270f9={'where':_0x4f1024[_0xe07e('0x43')]};return db[_0xe07e('0x33')][_0xe07e('0x25')](_0x2270f9)['then'](function(_0x2de8d3){_0xd381b6[_0xe07e('0x25')]=_0x2de8d3;if(_0x36a3c1[_0xe07e('0x3c')][_0xe07e('0x48')]){_0x4f1024[_0xe07e('0x49')]=[{'all':!![]}];}return db[_0xe07e('0x33')][_0xe07e('0x4a')](_0x4f1024);})[_0xe07e('0x2c')](function(_0x268dd4){_0xd381b6[_0xe07e('0x4b')]=_0x268dd4;return _0xd381b6;})['then'](respondWithFilteredResult(_0x16ae9f,_0x4f1024,'getVoiceQueuesReport'))[_0xe07e('0x4c')](handleError(_0x16ae9f,null,'getVoiceQueuesReport'));};
\ No newline at end of file
index fd897aa..2b40069 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4cd=['hook','exports','events','../../mysqldb','VoiceQueueReport','save','update','emit'];(function(_0x200766,_0x5114fa){var _0x8cc5d1=function(_0x11d1c3){while(--_0x11d1c3){_0x200766['push'](_0x200766['shift']());}};_0x8cc5d1(++_0x5114fa);}(_0xb4cd,0x72));var _0xdb4c=function(_0x5a1186,_0xf64424){_0x5a1186=_0x5a1186-0x0;var _0x3264c0=_0xb4cd[_0x5a1186];return _0x3264c0;};'use strict';var EventEmitter=require(_0xdb4c('0x0'));var VoiceQueueReport=require(_0xdb4c('0x1'))['db'][_0xdb4c('0x2')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xdb4c('0x3'),'afterUpdate':_0xdb4c('0x4'),'afterDestroy':'remove'};function emitEvent(_0x4b74c2){return function(_0x3d5972,_0x3d5098,_0x14026f){VoiceQueueReportEvents[_0xdb4c('0x5')](_0x4b74c2+':'+_0x3d5972['id'],_0x3d5972);VoiceQueueReportEvents[_0xdb4c('0x5')](_0x4b74c2,_0x3d5972);_0x14026f(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueueReport[_0xdb4c('0x6')](e,emitEvent(event));}}module[_0xdb4c('0x7')]=VoiceQueueReportEvents;
\ No newline at end of file
+var _0xe9f2=['events','setMaxListeners','update','remove','emit','hasOwnProperty','hook'];(function(_0x3529e7,_0x54f17b){var _0x1b219e=function(_0x52bc19){while(--_0x52bc19){_0x3529e7['push'](_0x3529e7['shift']());}};_0x1b219e(++_0x54f17b);}(_0xe9f2,0x69));var _0x2e9f=function(_0x21806e,_0x321cfe){_0x21806e=_0x21806e-0x0;var _0x224e6f=_0xe9f2[_0x21806e];return _0x224e6f;};'use strict';var EventEmitter=require(_0x2e9f('0x0'));var VoiceQueueReport=require('../../mysqldb')['db']['VoiceQueueReport'];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0x2e9f('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x2e9f('0x2'),'afterDestroy':_0x2e9f('0x3')};function emitEvent(_0x233163){return function(_0x71689f,_0x4f0e2,_0x81d2d5){VoiceQueueReportEvents['emit'](_0x233163+':'+_0x71689f['id'],_0x71689f);VoiceQueueReportEvents[_0x2e9f('0x4')](_0x233163,_0x71689f);_0x81d2d5(null);};}for(var e in events){if(events[_0x2e9f('0x5')](e)){var event=events[e];VoiceQueueReport[_0x2e9f('0x6')](e,emitEvent(event));}}module['exports']=VoiceQueueReportEvents;
\ No newline at end of file
index 7ce0d29..dbcbf8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb97b=['rimraf','./voiceQueueReport.attributes','exports','define','VoiceQueueReport','report_queue','uniqueid','calleridnum','util','../../config/logger','api','bluebird','request-promise'];(function(_0x1a1bae,_0x32c63b){var _0x299846=function(_0x38867f){while(--_0x38867f){_0x1a1bae['push'](_0x1a1bae['shift']());}};_0x299846(++_0x32c63b);}(_0xb97b,0xd8));var _0xbb97=function(_0x45cc5b,_0x4e00c8){_0x45cc5b=_0x45cc5b-0x0;var _0x2a8c69=_0xb97b[_0x45cc5b];return _0x2a8c69;};'use strict';var _=require('lodash');var util=require(_0xbb97('0x0'));var logger=require(_0xbb97('0x1'))(_0xbb97('0x2'));var moment=require('moment');var BPromise=require(_0xbb97('0x3'));var rp=require(_0xbb97('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xbb97('0x5'));var config=require('../../config/environment');var attributes=require(_0xbb97('0x6'));module[_0xbb97('0x7')]=function(_0x47a823,_0x383267){return _0x47a823[_0xbb97('0x8')](_0xbb97('0x9'),attributes,{'tableName':_0xbb97('0xa'),'paranoid':![],'indexes':[{'fields':[_0xbb97('0xb')]},{'fields':[_0xbb97('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa9a4=['util','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./voiceQueueReport.attributes','exports','define','VoiceQueueReport','report_queue','uniqueid','calleridnum','lodash'];(function(_0x58547b,_0x4b89c2){var _0x1d3fd2=function(_0x4ac500){while(--_0x4ac500){_0x58547b['push'](_0x58547b['shift']());}};_0x1d3fd2(++_0x4b89c2);}(_0xa9a4,0x68));var _0x4a9a=function(_0x5b8d4c,_0x3c5d26){_0x5b8d4c=_0x5b8d4c-0x0;var _0x2574b4=_0xa9a4[_0x5b8d4c];return _0x2574b4;};'use strict';var _=require(_0x4a9a('0x0'));var util=require(_0x4a9a('0x1'));var logger=require(_0x4a9a('0x2'))(_0x4a9a('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x4a9a('0x4'));var fs=require('fs');var path=require(_0x4a9a('0x5'));var rimraf=require(_0x4a9a('0x6'));var config=require(_0x4a9a('0x7'));var attributes=require(_0x4a9a('0x8'));module[_0x4a9a('0x9')]=function(_0x4bf039,_0x150c5f){return _0x4bf039[_0x4a9a('0xa')](_0x4a9a('0xb'),attributes,{'tableName':_0x4a9a('0xc'),'paranoid':![],'indexes':[{'fields':[_0x4a9a('0xd')]},{'fields':[_0x4a9a('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 18641e5..32287b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83b9=['map','CreateVoiceQueueReport','VoiceQueueReport','create','update','body','where','limit','UpdateVoiceQueueReport','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./voiceQueueReport.socket','request','then','request\x20sent','debug','VoiceQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','VoiceQueueReport,\x20%s,\x20%s','message','info','result','catch','GetVoiceQueueReport','findAll','options','raw','attributes','include','model'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x83b9,0x10b));var _0x983b=function(_0x556bd0,_0xb1b8a4){_0x556bd0=_0x556bd0-0x0;var _0x362c89=_0x83b9[_0x556bd0];return _0x362c89;};'use strict';var _=require('lodash');var util=require(_0x983b('0x0'));var moment=require('moment');var BPromise=require(_0x983b('0x1'));var rs=require(_0x983b('0x2'));var fs=require('fs');var Redis=require(_0x983b('0x3'));var db=require(_0x983b('0x4'))['db'];var utils=require(_0x983b('0x5'));var logger=require('../../config/logger')(_0x983b('0x6'));var config=require('../../config/environment');var jayson=require(_0x983b('0x7'));var client=jayson[_0x983b('0x8')]['http']({'port':0x232a});config[_0x983b('0x9')]=_[_0x983b('0xa')](config[_0x983b('0x9')],{'host':_0x983b('0xb'),'port':0x18eb});var socket=require(_0x983b('0xc'))(new Redis(config['redis']));require(_0x983b('0xd'))['register'](socket);function respondWithRpcPromise(_0x3a7cba,_0x12b20c,_0x540b79){return new BPromise(function(_0x546688,_0x2fa6dc){return client[_0x983b('0xe')](_0x3a7cba,_0x540b79)[_0x983b('0xf')](function(_0x217b77){logger['info']('VoiceQueueReport,\x20%s,\x20%s',_0x12b20c,_0x983b('0x10'));logger[_0x983b('0x11')](_0x983b('0x12'),_0x12b20c,'request\x20sent',JSON[_0x983b('0x13')](_0x217b77));if(_0x217b77['error']){if(_0x217b77[_0x983b('0x14')][_0x983b('0x15')]===0x1f4){logger[_0x983b('0x14')](_0x983b('0x16'),_0x12b20c,_0x217b77[_0x983b('0x14')]['message']);return _0x2fa6dc(_0x217b77['error'][_0x983b('0x17')]);}logger[_0x983b('0x14')]('VoiceQueueReport,\x20%s,\x20%s',_0x12b20c,_0x217b77['error'][_0x983b('0x17')]);return _0x546688(_0x217b77[_0x983b('0x14')]['message']);}else{logger[_0x983b('0x18')](_0x983b('0x16'),_0x12b20c,_0x983b('0x10'));_0x546688(_0x217b77[_0x983b('0x19')][_0x983b('0x17')]);}})[_0x983b('0x1a')](function(_0x1be816){logger[_0x983b('0x14')](_0x983b('0x16'),_0x12b20c,_0x1be816);_0x2fa6dc(_0x1be816);});});}exports[_0x983b('0x1b')]=function(_0x453142){var _0x527cc4=this;return new Promise(function(_0x5f536b,_0x170242){return db['VoiceQueueReport'][_0x983b('0x1c')]({'raw':_0x453142[_0x983b('0x1d')]?_0x453142[_0x983b('0x1d')][_0x983b('0x1e')]===undefined?!![]:![]:!![],'where':_0x453142[_0x983b('0x1d')]?_0x453142['options']['where']||null:null,'attributes':_0x453142[_0x983b('0x1d')]?_0x453142[_0x983b('0x1d')][_0x983b('0x1f')]||null:null,'limit':_0x453142['options']?_0x453142[_0x983b('0x1d')]['limit']||null:null,'include':_0x453142[_0x983b('0x1d')]?_0x453142[_0x983b('0x1d')]['include']?_['map'](_0x453142[_0x983b('0x1d')][_0x983b('0x20')],function(_0xc5f090){return{'model':db[_0xc5f090[_0x983b('0x21')]],'as':_0xc5f090['as'],'attributes':_0xc5f090['attributes'],'include':_0xc5f090[_0x983b('0x20')]?_[_0x983b('0x22')](_0xc5f090['include'],function(_0x2d569b){return{'model':db[_0x2d569b['model']],'as':_0x2d569b['as'],'attributes':_0x2d569b[_0x983b('0x1f')],'include':_0x2d569b[_0x983b('0x20')]?_[_0x983b('0x22')](_0x2d569b[_0x983b('0x20')],function(_0x6fb230){return{'model':db[_0x6fb230['model']],'as':_0x6fb230['as'],'attributes':_0x6fb230[_0x983b('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3bf69c){logger['info'](_0x983b('0x1b'),_0x453142);logger[_0x983b('0x11')](_0x983b('0x1b'),_0x453142,JSON[_0x983b('0x13')](_0x3bf69c));_0x5f536b(_0x3bf69c);})[_0x983b('0x1a')](function(_0x245ba9){logger[_0x983b('0x14')](_0x983b('0x1b'),_0x245ba9[_0x983b('0x17')],_0x453142);_0x170242(_0x527cc4[_0x983b('0x14')](0x1f4,_0x245ba9[_0x983b('0x17')]));});});};exports[_0x983b('0x23')]=function(_0x3cc17f){var _0x3ecdab=this;return new Promise(function(_0x4caddb,_0x2c52a4){return db[_0x983b('0x24')][_0x983b('0x25')](_0x3cc17f['body'],{'raw':_0x3cc17f[_0x983b('0x1d')]?_0x3cc17f['options'][_0x983b('0x1e')]===undefined?!![]:![]:!![]})['then'](function(_0x42d630){logger['info'](_0x983b('0x23'),_0x3cc17f);logger[_0x983b('0x11')](_0x983b('0x23'),_0x3cc17f,JSON[_0x983b('0x13')](_0x42d630));_0x4caddb(_0x42d630);})[_0x983b('0x1a')](function(_0x488a27){logger[_0x983b('0x14')]('CreateVoiceQueueReport',_0x488a27[_0x983b('0x17')],_0x3cc17f);_0x2c52a4(_0x3ecdab[_0x983b('0x14')](0x1f4,_0x488a27[_0x983b('0x17')]));});});};exports['UpdateVoiceQueueReport']=function(_0x1f2e9f){var _0x59859c=this;return new Promise(function(_0x3c8480,_0x4f87ba){return db[_0x983b('0x24')][_0x983b('0x26')](_0x1f2e9f[_0x983b('0x27')],{'raw':_0x1f2e9f['options']?_0x1f2e9f[_0x983b('0x1d')][_0x983b('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1f2e9f[_0x983b('0x1d')]?_0x1f2e9f[_0x983b('0x1d')][_0x983b('0x28')]||null:null,'attributes':_0x1f2e9f[_0x983b('0x1d')]?_0x1f2e9f['options'][_0x983b('0x1f')]||null:null,'limit':_0x1f2e9f[_0x983b('0x1d')]?_0x1f2e9f[_0x983b('0x1d')][_0x983b('0x29')]||null:null})[_0x983b('0xf')](function(_0x425277){logger[_0x983b('0x18')](_0x983b('0x2a'),_0x1f2e9f);logger['debug'](_0x983b('0x2a'),_0x1f2e9f,JSON[_0x983b('0x13')](_0x425277));_0x3c8480(_0x425277);})[_0x983b('0x1a')](function(_0x46de88){logger[_0x983b('0x14')]('UpdateVoiceQueueReport',_0x46de88['message'],_0x1f2e9f);_0x4f87ba(_0x59859c['error'](0x1f4,_0x46de88[_0x983b('0x17')]));});});};
\ No newline at end of file
+var _0x77c5=['result','catch','VoiceQueueReport','findAll','options','raw','where','attributes','include','map','model','then','GetVoiceQueueReport','stringify','CreateVoiceQueueReport','create','UpdateVoiceQueueReport','update','body','limit','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','redis','defaults','socket.io-emitter','./voiceQueueReport.socket','register','request','info','debug','VoiceQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','VoiceQueueReport,\x20%s,\x20%s','message'];(function(_0x31bcd8,_0x49d67a){var _0x10946f=function(_0x48d153){while(--_0x48d153){_0x31bcd8['push'](_0x31bcd8['shift']());}};_0x10946f(++_0x49d67a);}(_0x77c5,0xeb));var _0x577c=function(_0x337175,_0x4eb3fc){_0x337175=_0x337175-0x0;var _0x45ed13=_0x77c5[_0x337175];return _0x45ed13;};'use strict';var _=require('lodash');var util=require(_0x577c('0x0'));var moment=require(_0x577c('0x1'));var BPromise=require('bluebird');var rs=require(_0x577c('0x2'));var fs=require('fs');var Redis=require(_0x577c('0x3'));var db=require(_0x577c('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x577c('0x5'))(_0x577c('0x6'));var config=require(_0x577c('0x7'));var jayson=require(_0x577c('0x8'));var client=jayson['client']['http']({'port':0x232a});config[_0x577c('0x9')]=_[_0x577c('0xa')](config[_0x577c('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x577c('0xb'))(new Redis(config['redis']));require(_0x577c('0xc'))[_0x577c('0xd')](socket);function respondWithRpcPromise(_0x4b11ca,_0x3a7c5b,_0x14f61a){return new BPromise(function(_0x1c24b5,_0x19917a){return client[_0x577c('0xe')](_0x4b11ca,_0x14f61a)['then'](function(_0x4d6bf5){logger[_0x577c('0xf')]('VoiceQueueReport,\x20%s,\x20%s',_0x3a7c5b,'request\x20sent');logger[_0x577c('0x10')](_0x577c('0x11'),_0x3a7c5b,_0x577c('0x12'),JSON['stringify'](_0x4d6bf5));if(_0x4d6bf5[_0x577c('0x13')]){if(_0x4d6bf5[_0x577c('0x13')][_0x577c('0x14')]===0x1f4){logger[_0x577c('0x13')](_0x577c('0x15'),_0x3a7c5b,_0x4d6bf5['error'][_0x577c('0x16')]);return _0x19917a(_0x4d6bf5[_0x577c('0x13')][_0x577c('0x16')]);}logger['error']('VoiceQueueReport,\x20%s,\x20%s',_0x3a7c5b,_0x4d6bf5[_0x577c('0x13')][_0x577c('0x16')]);return _0x1c24b5(_0x4d6bf5[_0x577c('0x13')][_0x577c('0x16')]);}else{logger['info'](_0x577c('0x15'),_0x3a7c5b,_0x577c('0x12'));_0x1c24b5(_0x4d6bf5[_0x577c('0x17')][_0x577c('0x16')]);}})[_0x577c('0x18')](function(_0x13716f){logger[_0x577c('0x13')](_0x577c('0x15'),_0x3a7c5b,_0x13716f);_0x19917a(_0x13716f);});});}exports['GetVoiceQueueReport']=function(_0x37edbf){var _0x5c8df2=this;return new Promise(function(_0x512c48,_0x24ba01){return db[_0x577c('0x19')][_0x577c('0x1a')]({'raw':_0x37edbf[_0x577c('0x1b')]?_0x37edbf[_0x577c('0x1b')][_0x577c('0x1c')]===undefined?!![]:![]:!![],'where':_0x37edbf[_0x577c('0x1b')]?_0x37edbf['options'][_0x577c('0x1d')]||null:null,'attributes':_0x37edbf[_0x577c('0x1b')]?_0x37edbf[_0x577c('0x1b')][_0x577c('0x1e')]||null:null,'limit':_0x37edbf[_0x577c('0x1b')]?_0x37edbf[_0x577c('0x1b')]['limit']||null:null,'include':_0x37edbf[_0x577c('0x1b')]?_0x37edbf[_0x577c('0x1b')][_0x577c('0x1f')]?_[_0x577c('0x20')](_0x37edbf['options'][_0x577c('0x1f')],function(_0x59c92b){return{'model':db[_0x59c92b['model']],'as':_0x59c92b['as'],'attributes':_0x59c92b[_0x577c('0x1e')],'include':_0x59c92b[_0x577c('0x1f')]?_['map'](_0x59c92b['include'],function(_0x17302a){return{'model':db[_0x17302a['model']],'as':_0x17302a['as'],'attributes':_0x17302a['attributes'],'include':_0x17302a[_0x577c('0x1f')]?_[_0x577c('0x20')](_0x17302a[_0x577c('0x1f')],function(_0xd202f9){return{'model':db[_0xd202f9[_0x577c('0x21')]],'as':_0xd202f9['as'],'attributes':_0xd202f9[_0x577c('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x577c('0x22')](function(_0x122806){logger[_0x577c('0xf')](_0x577c('0x23'),_0x37edbf);logger[_0x577c('0x10')](_0x577c('0x23'),_0x37edbf,JSON[_0x577c('0x24')](_0x122806));_0x512c48(_0x122806);})['catch'](function(_0x1d0627){logger[_0x577c('0x13')](_0x577c('0x23'),_0x1d0627[_0x577c('0x16')],_0x37edbf);_0x24ba01(_0x5c8df2[_0x577c('0x13')](0x1f4,_0x1d0627[_0x577c('0x16')]));});});};exports[_0x577c('0x25')]=function(_0x45ab9f){var _0x5ee1d6=this;return new Promise(function(_0x53e7aa,_0x1e6b5f){return db[_0x577c('0x19')][_0x577c('0x26')](_0x45ab9f['body'],{'raw':_0x45ab9f[_0x577c('0x1b')]?_0x45ab9f[_0x577c('0x1b')][_0x577c('0x1c')]===undefined?!![]:![]:!![]})[_0x577c('0x22')](function(_0x4e51b9){logger[_0x577c('0xf')](_0x577c('0x25'),_0x45ab9f);logger[_0x577c('0x10')](_0x577c('0x25'),_0x45ab9f,JSON['stringify'](_0x4e51b9));_0x53e7aa(_0x4e51b9);})[_0x577c('0x18')](function(_0x4698a3){logger[_0x577c('0x13')](_0x577c('0x25'),_0x4698a3['message'],_0x45ab9f);_0x1e6b5f(_0x5ee1d6[_0x577c('0x13')](0x1f4,_0x4698a3[_0x577c('0x16')]));});});};exports[_0x577c('0x27')]=function(_0x3408f2){var _0x268c5c=this;return new Promise(function(_0x416d2d,_0xa4eb84){return db[_0x577c('0x19')][_0x577c('0x28')](_0x3408f2[_0x577c('0x29')],{'raw':_0x3408f2[_0x577c('0x1b')]?_0x3408f2[_0x577c('0x1b')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3408f2[_0x577c('0x1b')]?_0x3408f2[_0x577c('0x1b')][_0x577c('0x1d')]||null:null,'attributes':_0x3408f2[_0x577c('0x1b')]?_0x3408f2[_0x577c('0x1b')][_0x577c('0x1e')]||null:null,'limit':_0x3408f2[_0x577c('0x1b')]?_0x3408f2[_0x577c('0x1b')][_0x577c('0x2a')]||null:null})[_0x577c('0x22')](function(_0x2d6327){logger['info'](_0x577c('0x27'),_0x3408f2);logger['debug']('UpdateVoiceQueueReport',_0x3408f2,JSON[_0x577c('0x24')](_0x2d6327));_0x416d2d(_0x2d6327);})['catch'](function(_0x57399c){logger['error']('UpdateVoiceQueueReport',_0x57399c[_0x577c('0x16')],_0x3408f2);_0xa4eb84(_0x268c5c[_0x577c('0x13')](0x1f4,_0x57399c[_0x577c('0x16')]));});});};
\ No newline at end of file
index 96386d1..7a4fbde 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb97c=['register','length','voiceQueueReport:','remove','update','removeListener'];(function(_0x3d3895,_0x3ffddc){var _0x4ec39e=function(_0x2ffde7){while(--_0x2ffde7){_0x3d3895['push'](_0x3d3895['shift']());}};_0x4ec39e(++_0x3ffddc);}(_0xb97c,0x19b));var _0xcb97=function(_0x2a9398,_0x4206f1){_0x2a9398=_0x2a9398-0x0;var _0x28abe9=_0xb97c[_0x2a9398];return _0x28abe9;};'use strict';var VoiceQueueReportEvents=require('./voiceQueueReport.events');var events=['save',_0xcb97('0x0'),_0xcb97('0x1')];function createListener(_0x18cecd,_0x352d71){return function(_0x58b860){_0x352d71['emit'](_0x18cecd,_0x58b860);};}function removeListener(_0xb96d7f,_0x11bfb9){return function(){VoiceQueueReportEvents[_0xcb97('0x2')](_0xb96d7f,_0x11bfb9);};}exports[_0xcb97('0x3')]=function(_0xf87cc2){for(var _0x4b17c9=0x0,_0xf7c6e5=events[_0xcb97('0x4')];_0x4b17c9<_0xf7c6e5;_0x4b17c9++){var _0x2b72c7=events[_0x4b17c9];var _0x6e2720=createListener(_0xcb97('0x5')+_0x2b72c7,_0xf87cc2);VoiceQueueReportEvents['on'](_0x2b72c7,_0x6e2720);}};
\ No newline at end of file
+var _0xdbf5=['save','emit','removeListener','register','length','voiceQueueReport:'];(function(_0x171a8a,_0x2c6407){var _0x178cbc=function(_0x17cec0){while(--_0x17cec0){_0x171a8a['push'](_0x171a8a['shift']());}};_0x178cbc(++_0x2c6407);}(_0xdbf5,0x18c));var _0x5dbf=function(_0x17660f,_0x1fa64b){_0x17660f=_0x17660f-0x0;var _0x277c7d=_0xdbf5[_0x17660f];return _0x277c7d;};'use strict';var VoiceQueueReportEvents=require('./voiceQueueReport.events');var events=[_0x5dbf('0x0'),'remove','update'];function createListener(_0x19d2b4,_0xfd972b){return function(_0x32ec6b){_0xfd972b[_0x5dbf('0x1')](_0x19d2b4,_0x32ec6b);};}function removeListener(_0x38b629,_0x1a1ea9){return function(){VoiceQueueReportEvents[_0x5dbf('0x2')](_0x38b629,_0x1a1ea9);};}exports[_0x5dbf('0x3')]=function(_0x3f8628){for(var _0x3f8222=0x0,_0x209b7d=events[_0x5dbf('0x4')];_0x3f8222<_0x209b7d;_0x3f8222++){var _0x93e657=events[_0x3f8222];var _0x52b039=createListener(_0x5dbf('0x5')+_0x93e657,_0x3f8628);VoiceQueueReportEvents['on'](_0x93e657,_0x52b039);}};
\ No newline at end of file
index 58ae927..936f11d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2f4=['update','delete','/:id','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueuesLog.controller','get','isAuthenticated','index','show','post','create'];(function(_0x2b9c55,_0x3977d0){var _0x48257a=function(_0x3dea34){while(--_0x3dea34){_0x2b9c55['push'](_0x2b9c55['shift']());}};_0x48257a(++_0x3977d0);}(_0xb2f4,0x14f));var _0x4b2f=function(_0x17144e,_0x54b854){_0x17144e=_0x17144e-0x0;var _0x393e3e=_0xb2f4[_0x17144e];return _0x393e3e;};'use strict';var multer=require(_0x4b2f('0x0'));var util=require(_0x4b2f('0x1'));var path=require(_0x4b2f('0x2'));var timeout=require(_0x4b2f('0x3'));var express=require(_0x4b2f('0x4'));var router=express[_0x4b2f('0x5')]();var fs_extra=require(_0x4b2f('0x6'));var auth=require(_0x4b2f('0x7'));var interaction=require(_0x4b2f('0x8'));var config=require(_0x4b2f('0x9'));var controller=require(_0x4b2f('0xa'));router[_0x4b2f('0xb')]('/',auth[_0x4b2f('0xc')](),controller[_0x4b2f('0xd')]);router[_0x4b2f('0xb')]('/:id',auth[_0x4b2f('0xc')](),controller[_0x4b2f('0xe')]);router[_0x4b2f('0xf')]('/',auth[_0x4b2f('0xc')](),controller[_0x4b2f('0x10')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0x4b2f('0x11')]);router[_0x4b2f('0x12')](_0x4b2f('0x13'),auth[_0x4b2f('0xc')](),controller[_0x4b2f('0x14')]);module[_0x4b2f('0x15')]=router;
\ No newline at end of file
+var _0x1753=['/:id','show','create','put','update','delete','destroy','exports','multer','path','connect-timeout','express','../../components/auth/service','../../config/environment','./voiceQueuesLog.controller','get','isAuthenticated','index'];(function(_0x1322b1,_0x237be1){var _0x5ca30a=function(_0x20e37a){while(--_0x20e37a){_0x1322b1['push'](_0x1322b1['shift']());}};_0x5ca30a(++_0x237be1);}(_0x1753,0x86));var _0x3175=function(_0xb5c522,_0x4b2c88){_0xb5c522=_0xb5c522-0x0;var _0x47da31=_0x1753[_0xb5c522];return _0x47da31;};'use strict';var multer=require(_0x3175('0x0'));var util=require('util');var path=require(_0x3175('0x1'));var timeout=require(_0x3175('0x2'));var express=require(_0x3175('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x3175('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x3175('0x5'));var controller=require(_0x3175('0x6'));router[_0x3175('0x7')]('/',auth[_0x3175('0x8')](),controller[_0x3175('0x9')]);router[_0x3175('0x7')](_0x3175('0xa'),auth[_0x3175('0x8')](),controller[_0x3175('0xb')]);router['post']('/',auth[_0x3175('0x8')](),controller[_0x3175('0xc')]);router[_0x3175('0xd')](_0x3175('0xa'),auth[_0x3175('0x8')](),controller[_0x3175('0xe')]);router[_0x3175('0xf')](_0x3175('0xa'),auth['isAuthenticated'](),controller[_0x3175('0x10')]);module[_0x3175('0x11')]=router;
\ No newline at end of file
index cfa46fa..75648b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b20=['exports','STRING','DATE','literal','moment'];(function(_0x1992f1,_0x5c61f0){var _0x413dfe=function(_0x2136e5){while(--_0x2136e5){_0x1992f1['push'](_0x1992f1['shift']());}};_0x413dfe(++_0x5c61f0);}(_0x1b20,0x1b2));var _0x01b2=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x1b20[_0x502c7d];return _0x30b7ed;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x01b2('0x0'));module[_0x01b2('0x1')]={'time':{'type':Sequelize[_0x01b2('0x2')]},'callid':{'type':Sequelize[_0x01b2('0x2')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0x01b2('0x2')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0x01b2('0x2')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0x01b2('0x2')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0x01b2('0x2')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0x01b2('0x2')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0x01b2('0x2')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0x01b2('0x2')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0x01b2('0x2')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0x01b2('0x2')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0x01b2('0x3')],'allowNull':![],'defaultValue':Sequelize[_0x01b2('0x4')]('CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP')}};
\ No newline at end of file
+var _0xe5aa=['STRING','DATE','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','moment','exports'];(function(_0x51ed7d,_0x5cb489){var _0x397025=function(_0x52fa5f){while(--_0x52fa5f){_0x51ed7d['push'](_0x51ed7d['shift']());}};_0x397025(++_0x5cb489);}(_0xe5aa,0x1bf));var _0xae5a=function(_0x154c9c,_0x141160){_0x154c9c=_0x154c9c-0x0;var _0x69c0ef=_0xe5aa[_0x154c9c];return _0x69c0ef;};'use strict';var Sequelize=require(_0xae5a('0x0'));var moment=require(_0xae5a('0x1'));module[_0xae5a('0x2')]={'time':{'type':Sequelize[_0xae5a('0x3')]},'callid':{'type':Sequelize[_0xae5a('0x3')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0xae5a('0x3')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0xae5a('0x3')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0xae5a('0x3')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0xae5a('0x3')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0xae5a('0x3')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0xae5a('0x3')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0xae5a('0x3')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0xae5a('0x3')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0xae5a('0x4')],'allowNull':![],'defaultValue':Sequelize['literal'](_0xae5a('0x5'))}};
\ No newline at end of file
index 4ba5de8..e9cec63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6396=['undefined','limit','set','apply','reject','save','update','destroy','end','error','stack','name','send','index','map','VoiceQueuesLog','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','count','includeAll','include','findAll','rows','then','catch','params','keys','find','create','body','eml-format','rimraf','zip-dir','request-promise','bluebird','util','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','json','offset'];(function(_0x1e4483,_0x12d73e){var _0x2ab5be=function(_0x4cb35c){while(--_0x4cb35c){_0x1e4483['push'](_0x1e4483['shift']());}};_0x2ab5be(++_0x12d73e);}(_0x6396,0xc6));var _0x6639=function(_0x113e32,_0x5339f0){_0x113e32=_0x113e32-0x0;var _0x4ff939=_0x6396[_0x113e32];return _0x4ff939;};'use strict';var emlformat=require(_0x6639('0x0'));var rimraf=require(_0x6639('0x1'));var zipdir=require(_0x6639('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6639('0x3'));var moment=require('moment');var BPromise=require(_0x6639('0x4'));var Mustache=require('mustache');var util=require(_0x6639('0x5'));var path=require(_0x6639('0x6'));var sox=require(_0x6639('0x7'));var csv=require(_0x6639('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6639('0x9'));var squel=require(_0x6639('0xa'));var crypto=require(_0x6639('0xb'));var jsforce=require(_0x6639('0xc'));var deskjs=require(_0x6639('0xd'));var toCsv=require(_0x6639('0x8'));var querystring=require('querystring');var Papa=require(_0x6639('0xe'));var Redis=require(_0x6639('0xf'));var authService=require(_0x6639('0x10'));var qs=require(_0x6639('0x11'));var as=require(_0x6639('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6639('0x13'))(_0x6639('0x14'));var utils=require('../../config/utils');var config=require(_0x6639('0x15'));var licenseUtil=require(_0x6639('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x27d61c,_0x1e969e){_0x1e969e=_0x1e969e||0xcc;return function(_0x33a3b4){if(_0x33a3b4){return _0x27d61c[_0x6639('0x17')](_0x1e969e);}return _0x27d61c['status'](_0x1e969e)['end']();};}function respondWithResult(_0x437be1,_0x1e51fd){_0x1e51fd=_0x1e51fd||0xc8;return function(_0x48e635){if(_0x48e635){return _0x437be1[_0x6639('0x18')](_0x1e51fd)[_0x6639('0x19')](_0x48e635);}};}function respondWithFilteredResult(_0x162448,_0x58f48c){return function(_0xafca40){if(_0xafca40){var _0x18a153=typeof _0x58f48c[_0x6639('0x1a')]===_0x6639('0x1b')&&typeof _0x58f48c[_0x6639('0x1c')]===_0x6639('0x1b');var _0x4b213f=_0xafca40['count'];var _0x27cfbd=_0x18a153?0x0:_0x58f48c[_0x6639('0x1a')];var _0x918702=_0x18a153?_0xafca40['count']:_0x58f48c['offset']+_0x58f48c['limit'];var _0x11d3b8;if(_0x918702>=_0x4b213f){_0x918702=_0x4b213f;_0x11d3b8=0xc8;}else{_0x11d3b8=0xce;}_0x162448['status'](_0x11d3b8);return _0x162448[_0x6639('0x1d')]('Content-Range',_0x27cfbd+'-'+_0x918702+'/'+_0x4b213f)[_0x6639('0x19')](_0xafca40);}return null;};}function patchUpdates(_0x28a231){return function(_0x3fdc2b){try{jsonpatch[_0x6639('0x1e')](_0x3fdc2b,_0x28a231,!![]);}catch(_0x582231){return BPromise[_0x6639('0x1f')](_0x582231);}return _0x3fdc2b[_0x6639('0x20')]();};}function saveUpdates(_0x44eb6d,_0x4f898a){return function(_0x14badc){if(_0x14badc){return _0x14badc[_0x6639('0x21')](_0x44eb6d)['then'](function(_0x2fb045){return _0x2fb045;});}return null;};}function removeEntity(_0x5b96ba,_0x49a13a){return function(_0x410586){if(_0x410586){return _0x410586[_0x6639('0x22')]()['then'](function(){_0x5b96ba['status'](0xcc)[_0x6639('0x23')]();});}};}function handleEntityNotFound(_0x3b76f0,_0x379360){return function(_0x5a85c9){if(!_0x5a85c9){_0x3b76f0[_0x6639('0x17')](0x194);}return _0x5a85c9;};}function handleError(_0x412614,_0x7f3ded){_0x7f3ded=_0x7f3ded||0x1f4;return function(_0x3d38d0){logger[_0x6639('0x24')](_0x3d38d0[_0x6639('0x25')]);if(_0x3d38d0[_0x6639('0x26')]){delete _0x3d38d0[_0x6639('0x26')];}_0x412614[_0x6639('0x18')](_0x7f3ded)[_0x6639('0x27')](_0x3d38d0);};}exports[_0x6639('0x28')]=function(_0x36a115,_0x40af67){var _0x2da5b7={},_0x32cc6f={},_0x18c76f={'count':0x0,'rows':[]};var _0x2a4679=_[_0x6639('0x29')](db[_0x6639('0x2a')][_0x6639('0x2b')],function(_0x3a12ed){return{'name':_0x3a12ed[_0x6639('0x2c')],'type':_0x3a12ed[_0x6639('0x2d')][_0x6639('0x2e')]};});_0x32cc6f[_0x6639('0x2f')]=_[_0x6639('0x29')](_0x2a4679,_0x6639('0x26'));_0x32cc6f[_0x6639('0x30')]=_['keys'](_0x36a115[_0x6639('0x30')]);_0x32cc6f[_0x6639('0x31')]=_['intersection'](_0x32cc6f[_0x6639('0x2f')],_0x32cc6f['query']);_0x2da5b7['attributes']=_[_0x6639('0x32')](_0x32cc6f[_0x6639('0x2f')],qs[_0x6639('0x33')](_0x36a115[_0x6639('0x30')][_0x6639('0x33')]));_0x2da5b7[_0x6639('0x34')]=_0x2da5b7[_0x6639('0x34')][_0x6639('0x35')]?_0x2da5b7['attributes']:_0x32cc6f['model'];if(!_0x36a115['query'][_0x6639('0x36')](_0x6639('0x37'))){_0x2da5b7[_0x6639('0x1c')]=qs['limit'](_0x36a115[_0x6639('0x30')][_0x6639('0x1c')]);_0x2da5b7['offset']=qs[_0x6639('0x1a')](_0x36a115[_0x6639('0x30')]['offset']);}_0x2da5b7[_0x6639('0x38')]=qs[_0x6639('0x39')](_0x36a115['query']['sort']);_0x2da5b7[_0x6639('0x3a')]=qs[_0x6639('0x31')](_['pick'](_0x36a115[_0x6639('0x30')],_0x32cc6f[_0x6639('0x31')]),_0x2a4679);if(_0x36a115[_0x6639('0x30')][_0x6639('0x3b')]){_0x2da5b7[_0x6639('0x3a')]=_[_0x6639('0x3c')](_0x2da5b7[_0x6639('0x3a')],{'$or':_[_0x6639('0x29')](_0x2a4679,function(_0x120a89){if(_0x120a89[_0x6639('0x2d')]!==_0x6639('0x3d')){var _0x2c1840={};_0x2c1840[_0x120a89[_0x6639('0x26')]]={'$like':'%'+_0x36a115['query'][_0x6639('0x3b')]+'%'};return _0x2c1840;}})});}_0x2da5b7=_[_0x6639('0x3c')]({},_0x2da5b7,_0x36a115[_0x6639('0x3e')]);var _0x55944d={'where':_0x2da5b7[_0x6639('0x3a')]};return db[_0x6639('0x2a')][_0x6639('0x3f')](_0x55944d)['then'](function(_0x5bea69){_0x18c76f['count']=_0x5bea69;if(_0x36a115[_0x6639('0x30')][_0x6639('0x40')]){_0x2da5b7[_0x6639('0x41')]=[{'all':!![]}];}return db[_0x6639('0x2a')][_0x6639('0x42')](_0x2da5b7);})['then'](function(_0x3a718c){_0x18c76f[_0x6639('0x43')]=_0x3a718c;return _0x18c76f;})[_0x6639('0x44')](respondWithFilteredResult(_0x40af67,_0x2da5b7))[_0x6639('0x45')](handleError(_0x40af67,null));};exports['show']=function(_0x220bb4,_0x545cdc){var _0x259ef9={'raw':!![],'where':{'id':_0x220bb4[_0x6639('0x46')]['id']}},_0x2176cc={};_0x2176cc[_0x6639('0x2f')]=_[_0x6639('0x47')](db[_0x6639('0x2a')][_0x6639('0x2b')]);_0x2176cc[_0x6639('0x30')]=_[_0x6639('0x47')](_0x220bb4['query']);_0x2176cc[_0x6639('0x31')]=_[_0x6639('0x32')](_0x2176cc['model'],_0x2176cc[_0x6639('0x30')]);_0x259ef9[_0x6639('0x34')]=_[_0x6639('0x32')](_0x2176cc[_0x6639('0x2f')],qs['fields'](_0x220bb4['query'][_0x6639('0x33')]));_0x259ef9[_0x6639('0x34')]=_0x259ef9[_0x6639('0x34')][_0x6639('0x35')]?_0x259ef9[_0x6639('0x34')]:_0x2176cc['model'];if(_0x220bb4[_0x6639('0x30')]['includeAll']){_0x259ef9[_0x6639('0x41')]=[{'all':!![]}];}_0x259ef9=_[_0x6639('0x3c')]({},_0x259ef9,_0x220bb4[_0x6639('0x3e')]);return db[_0x6639('0x2a')][_0x6639('0x48')](_0x259ef9)['then'](handleEntityNotFound(_0x545cdc,null))['then'](respondWithResult(_0x545cdc,null))[_0x6639('0x45')](handleError(_0x545cdc,null));};exports['create']=function(_0x257c77,_0x142e64){return db[_0x6639('0x2a')][_0x6639('0x49')](_0x257c77['body'],{})[_0x6639('0x44')](respondWithResult(_0x142e64,0xc9))['catch'](handleError(_0x142e64,null));};exports[_0x6639('0x21')]=function(_0x1bd521,_0x264d8f){if(_0x1bd521[_0x6639('0x4a')]['id']){delete _0x1bd521[_0x6639('0x4a')]['id'];}return db[_0x6639('0x2a')][_0x6639('0x48')]({'where':{'id':_0x1bd521[_0x6639('0x46')]['id']}})['then'](handleEntityNotFound(_0x264d8f,null))['then'](saveUpdates(_0x1bd521[_0x6639('0x4a')],null))[_0x6639('0x44')](respondWithResult(_0x264d8f,null))[_0x6639('0x45')](handleError(_0x264d8f,null));};exports[_0x6639('0x22')]=function(_0x3055a1,_0x2deb47){return db['VoiceQueuesLog'][_0x6639('0x48')]({'where':{'id':_0x3055a1[_0x6639('0x46')]['id']}})[_0x6639('0x44')](handleEntityNotFound(_0x2deb47,null))[_0x6639('0x44')](removeEntity(_0x2deb47,null))[_0x6639('0x45')](handleError(_0x2deb47,null));};
\ No newline at end of file
+var _0xdfb7=['type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','include','findAll','show','includeAll','options','find','create','body','catch','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','apply','reject','update','then','destroy','end','error','stack','name','send','map','VoiceQueuesLog','rawAttributes','fieldName'];(function(_0x45620c,_0x43d90f){var _0x24c85e=function(_0x315461){while(--_0x315461){_0x45620c['push'](_0x45620c['shift']());}};_0x24c85e(++_0x43d90f);}(_0xdfb7,0x6a));var _0x7dfb=function(_0x3feee2,_0x1fdf65){_0x3feee2=_0x3feee2-0x0;var _0x127ee9=_0xdfb7[_0x3feee2];return _0x127ee9;};'use strict';var emlformat=require(_0x7dfb('0x0'));var rimraf=require(_0x7dfb('0x1'));var zipdir=require(_0x7dfb('0x2'));var jsonpatch=require(_0x7dfb('0x3'));var rp=require(_0x7dfb('0x4'));var moment=require(_0x7dfb('0x5'));var BPromise=require(_0x7dfb('0x6'));var Mustache=require(_0x7dfb('0x7'));var util=require(_0x7dfb('0x8'));var path=require(_0x7dfb('0x9'));var sox=require(_0x7dfb('0xa'));var csv=require('to-csv');var ejs=require(_0x7dfb('0xb'));var fs=require('fs');var fs_extra=require(_0x7dfb('0xc'));var _=require(_0x7dfb('0xd'));var squel=require(_0x7dfb('0xe'));var crypto=require(_0x7dfb('0xf'));var jsforce=require(_0x7dfb('0x10'));var deskjs=require(_0x7dfb('0x11'));var toCsv=require('to-csv');var querystring=require(_0x7dfb('0x12'));var Papa=require('papaparse');var Redis=require(_0x7dfb('0x13'));var authService=require(_0x7dfb('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0x7dfb('0x15'));var hardwareService=require(_0x7dfb('0x16'));var logger=require('../../config/logger')(_0x7dfb('0x17'));var utils=require(_0x7dfb('0x18'));var config=require(_0x7dfb('0x19'));var licenseUtil=require(_0x7dfb('0x1a'));var db=require(_0x7dfb('0x1b'))['db'];function respondWithStatusCode(_0x2b0a47,_0x5b4379){_0x5b4379=_0x5b4379||0xcc;return function(_0x4500e6){if(_0x4500e6){return _0x2b0a47[_0x7dfb('0x1c')](_0x5b4379);}return _0x2b0a47[_0x7dfb('0x1d')](_0x5b4379)['end']();};}function respondWithResult(_0xd9d2,_0x3f65a5){_0x3f65a5=_0x3f65a5||0xc8;return function(_0x10a117){if(_0x10a117){return _0xd9d2['status'](_0x3f65a5)[_0x7dfb('0x1e')](_0x10a117);}};}function respondWithFilteredResult(_0x5647d9,_0x5b6b80){return function(_0x14b40c){if(_0x14b40c){var _0x140b68=typeof _0x5b6b80[_0x7dfb('0x1f')]===_0x7dfb('0x20')&&typeof _0x5b6b80[_0x7dfb('0x21')]===_0x7dfb('0x20');var _0x4c735a=_0x14b40c[_0x7dfb('0x22')];var _0x418d1d=_0x140b68?0x0:_0x5b6b80[_0x7dfb('0x1f')];var _0x4aa552=_0x140b68?_0x14b40c['count']:_0x5b6b80[_0x7dfb('0x1f')]+_0x5b6b80['limit'];var _0x144c40;if(_0x4aa552>=_0x4c735a){_0x4aa552=_0x4c735a;_0x144c40=0xc8;}else{_0x144c40=0xce;}_0x5647d9[_0x7dfb('0x1d')](_0x144c40);return _0x5647d9[_0x7dfb('0x23')]('Content-Range',_0x418d1d+'-'+_0x4aa552+'/'+_0x4c735a)[_0x7dfb('0x1e')](_0x14b40c);}return null;};}function patchUpdates(_0x5983a5){return function(_0x184bc6){try{jsonpatch[_0x7dfb('0x24')](_0x184bc6,_0x5983a5,!![]);}catch(_0x389510){return BPromise[_0x7dfb('0x25')](_0x389510);}return _0x184bc6['save']();};}function saveUpdates(_0x53235a,_0x1c6acd){return function(_0x494b88){if(_0x494b88){return _0x494b88[_0x7dfb('0x26')](_0x53235a)[_0x7dfb('0x27')](function(_0x4e43c1){return _0x4e43c1;});}return null;};}function removeEntity(_0x40d2e6,_0x44a1d9){return function(_0x41c868){if(_0x41c868){return _0x41c868[_0x7dfb('0x28')]()[_0x7dfb('0x27')](function(){_0x40d2e6[_0x7dfb('0x1d')](0xcc)[_0x7dfb('0x29')]();});}};}function handleEntityNotFound(_0x263d81,_0x23cb2f){return function(_0x36a6db){if(!_0x36a6db){_0x263d81[_0x7dfb('0x1c')](0x194);}return _0x36a6db;};}function handleError(_0xb1c39b,_0x1f12fb){_0x1f12fb=_0x1f12fb||0x1f4;return function(_0x360aab){logger[_0x7dfb('0x2a')](_0x360aab[_0x7dfb('0x2b')]);if(_0x360aab['name']){delete _0x360aab[_0x7dfb('0x2c')];}_0xb1c39b['status'](_0x1f12fb)[_0x7dfb('0x2d')](_0x360aab);};}exports['index']=function(_0x28d048,_0x1275fc){var _0x9a7380={},_0x301c67={},_0x3569b8={'count':0x0,'rows':[]};var _0x43f6cd=_[_0x7dfb('0x2e')](db[_0x7dfb('0x2f')][_0x7dfb('0x30')],function(_0x1bd569){return{'name':_0x1bd569[_0x7dfb('0x31')],'type':_0x1bd569[_0x7dfb('0x32')][_0x7dfb('0x33')]};});_0x301c67[_0x7dfb('0x34')]=_[_0x7dfb('0x2e')](_0x43f6cd,_0x7dfb('0x2c'));_0x301c67[_0x7dfb('0x35')]=_[_0x7dfb('0x36')](_0x28d048[_0x7dfb('0x35')]);_0x301c67[_0x7dfb('0x37')]=_[_0x7dfb('0x38')](_0x301c67[_0x7dfb('0x34')],_0x301c67[_0x7dfb('0x35')]);_0x9a7380[_0x7dfb('0x39')]=_['intersection'](_0x301c67[_0x7dfb('0x34')],qs[_0x7dfb('0x3a')](_0x28d048[_0x7dfb('0x35')][_0x7dfb('0x3a')]));_0x9a7380[_0x7dfb('0x39')]=_0x9a7380[_0x7dfb('0x39')][_0x7dfb('0x3b')]?_0x9a7380['attributes']:_0x301c67[_0x7dfb('0x34')];if(!_0x28d048[_0x7dfb('0x35')][_0x7dfb('0x3c')]('nolimit')){_0x9a7380[_0x7dfb('0x21')]=qs['limit'](_0x28d048[_0x7dfb('0x35')][_0x7dfb('0x21')]);_0x9a7380[_0x7dfb('0x1f')]=qs['offset'](_0x28d048[_0x7dfb('0x35')][_0x7dfb('0x1f')]);}_0x9a7380[_0x7dfb('0x3d')]=qs[_0x7dfb('0x3e')](_0x28d048['query']['sort']);_0x9a7380[_0x7dfb('0x3f')]=qs['filters'](_[_0x7dfb('0x40')](_0x28d048[_0x7dfb('0x35')],_0x301c67[_0x7dfb('0x37')]),_0x43f6cd);if(_0x28d048[_0x7dfb('0x35')][_0x7dfb('0x41')]){_0x9a7380[_0x7dfb('0x3f')]=_[_0x7dfb('0x42')](_0x9a7380['where'],{'$or':_['map'](_0x43f6cd,function(_0x1886b4){if(_0x1886b4[_0x7dfb('0x32')]!==_0x7dfb('0x43')){var _0x2e0b55={};_0x2e0b55[_0x1886b4['name']]={'$like':'%'+_0x28d048[_0x7dfb('0x35')][_0x7dfb('0x41')]+'%'};return _0x2e0b55;}})});}_0x9a7380=_[_0x7dfb('0x42')]({},_0x9a7380,_0x28d048['options']);var _0x48b5b2={'where':_0x9a7380[_0x7dfb('0x3f')]};return db['VoiceQueuesLog']['count'](_0x48b5b2)[_0x7dfb('0x27')](function(_0xef5920){_0x3569b8[_0x7dfb('0x22')]=_0xef5920;if(_0x28d048[_0x7dfb('0x35')]['includeAll']){_0x9a7380[_0x7dfb('0x44')]=[{'all':!![]}];}return db[_0x7dfb('0x2f')][_0x7dfb('0x45')](_0x9a7380);})[_0x7dfb('0x27')](function(_0x5c4159){_0x3569b8['rows']=_0x5c4159;return _0x3569b8;})['then'](respondWithFilteredResult(_0x1275fc,_0x9a7380))['catch'](handleError(_0x1275fc,null));};exports[_0x7dfb('0x46')]=function(_0x3650cb,_0x4a7cb2){var _0x401361={'raw':!![],'where':{'id':_0x3650cb['params']['id']}},_0x467e60={};_0x467e60[_0x7dfb('0x34')]=_[_0x7dfb('0x36')](db[_0x7dfb('0x2f')][_0x7dfb('0x30')]);_0x467e60[_0x7dfb('0x35')]=_['keys'](_0x3650cb[_0x7dfb('0x35')]);_0x467e60[_0x7dfb('0x37')]=_[_0x7dfb('0x38')](_0x467e60[_0x7dfb('0x34')],_0x467e60[_0x7dfb('0x35')]);_0x401361[_0x7dfb('0x39')]=_['intersection'](_0x467e60[_0x7dfb('0x34')],qs['fields'](_0x3650cb[_0x7dfb('0x35')][_0x7dfb('0x3a')]));_0x401361['attributes']=_0x401361[_0x7dfb('0x39')][_0x7dfb('0x3b')]?_0x401361[_0x7dfb('0x39')]:_0x467e60[_0x7dfb('0x34')];if(_0x3650cb[_0x7dfb('0x35')][_0x7dfb('0x47')]){_0x401361[_0x7dfb('0x44')]=[{'all':!![]}];}_0x401361=_[_0x7dfb('0x42')]({},_0x401361,_0x3650cb[_0x7dfb('0x48')]);return db['VoiceQueuesLog'][_0x7dfb('0x49')](_0x401361)[_0x7dfb('0x27')](handleEntityNotFound(_0x4a7cb2,null))[_0x7dfb('0x27')](respondWithResult(_0x4a7cb2,null))['catch'](handleError(_0x4a7cb2,null));};exports['create']=function(_0x1ecc4c,_0x5a3b38){return db['VoiceQueuesLog'][_0x7dfb('0x4a')](_0x1ecc4c[_0x7dfb('0x4b')],{})[_0x7dfb('0x27')](respondWithResult(_0x5a3b38,0xc9))[_0x7dfb('0x4c')](handleError(_0x5a3b38,null));};exports[_0x7dfb('0x26')]=function(_0x471f88,_0x3f3653){if(_0x471f88['body']['id']){delete _0x471f88['body']['id'];}return db[_0x7dfb('0x2f')][_0x7dfb('0x49')]({'where':{'id':_0x471f88[_0x7dfb('0x4d')]['id']}})[_0x7dfb('0x27')](handleEntityNotFound(_0x3f3653,null))[_0x7dfb('0x27')](saveUpdates(_0x471f88['body'],null))[_0x7dfb('0x27')](respondWithResult(_0x3f3653,null))[_0x7dfb('0x4c')](handleError(_0x3f3653,null));};exports['destroy']=function(_0x1d06ea,_0x25a447){return db[_0x7dfb('0x2f')][_0x7dfb('0x49')]({'where':{'id':_0x1d06ea[_0x7dfb('0x4d')]['id']}})[_0x7dfb('0x27')](handleEntityNotFound(_0x25a447,null))['then'](removeEntity(_0x25a447,null))[_0x7dfb('0x4c')](handleError(_0x25a447,null));};
\ No newline at end of file
index fcb3607..d55c3ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x09d3=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','exports','define','VoiceQueuesLog','event_dtm','event','dtm'];(function(_0x522a13,_0x4bf8f4){var _0x2d4f5a=function(_0x1ba55c){while(--_0x1ba55c){_0x522a13['push'](_0x522a13['shift']());}};_0x2d4f5a(++_0x4bf8f4);}(_0x09d3,0xa5));var _0x309d=function(_0x211a9f,_0x4aeef4){_0x211a9f=_0x211a9f-0x0;var _0x5ea1a1=_0x09d3[_0x211a9f];return _0x5ea1a1;};'use strict';var _=require(_0x309d('0x0'));var util=require(_0x309d('0x1'));var logger=require(_0x309d('0x2'))(_0x309d('0x3'));var moment=require(_0x309d('0x4'));var BPromise=require(_0x309d('0x5'));var rp=require(_0x309d('0x6'));var fs=require('fs');var path=require(_0x309d('0x7'));var rimraf=require('rimraf');var config=require(_0x309d('0x8'));var attributes=require('./voiceQueuesLog.attributes');module[_0x309d('0x9')]=function(_0x1332e8,_0x4b2653){return _0x1332e8[_0x309d('0xa')](_0x309d('0xb'),attributes,{'tableName':'voice_queues_log','paranoid':![],'indexes':[{'name':_0x309d('0xc'),'fields':[_0x309d('0xd'),_0x309d('0xe')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x0993=['dtm','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./voiceQueuesLog.attributes','exports','VoiceQueuesLog','voice_queues_log','event'];(function(_0x9a7ea6,_0x1807a2){var _0x1c2040=function(_0x55b7ec){while(--_0x55b7ec){_0x9a7ea6['push'](_0x9a7ea6['shift']());}};_0x1c2040(++_0x1807a2);}(_0x0993,0x13c));var _0x3099=function(_0x4e5f73,_0x5bc994){_0x4e5f73=_0x4e5f73-0x0;var _0x382813=_0x0993[_0x4e5f73];return _0x382813;};'use strict';var _=require(_0x3099('0x0'));var util=require(_0x3099('0x1'));var logger=require(_0x3099('0x2'))(_0x3099('0x3'));var moment=require(_0x3099('0x4'));var BPromise=require(_0x3099('0x5'));var rp=require(_0x3099('0x6'));var fs=require('fs');var path=require(_0x3099('0x7'));var rimraf=require('rimraf');var config=require(_0x3099('0x8'));var attributes=require(_0x3099('0x9'));module[_0x3099('0xa')]=function(_0x562d2c,_0x479e3a){return _0x562d2c['define'](_0x3099('0xb'),attributes,{'tableName':_0x3099('0xc'),'paranoid':![],'indexes':[{'name':'event_dtm','fields':[_0x3099('0xd'),_0x3099('0xe')]}],'timestamps':![]});};
\ No newline at end of file
index b602680..e84c5bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf958=['then','info','VoiceQueuesLog,\x20%s,\x20%s','debug','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','catch','lodash','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request'];(function(_0x3ac156,_0x355f1f){var _0xaf44c5=function(_0x887794){while(--_0x887794){_0x3ac156['push'](_0x3ac156['shift']());}};_0xaf44c5(++_0x355f1f);}(_0xf958,0xe6));var _0x8f95=function(_0x2f61d3,_0x461271){_0x2f61d3=_0x2f61d3-0x0;var _0x52aa7a=_0xf958[_0x2f61d3];return _0x52aa7a;};'use strict';var _=require(_0x8f95('0x0'));var util=require('util');var moment=require(_0x8f95('0x1'));var BPromise=require('bluebird');var rs=require(_0x8f95('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8f95('0x3'))['db'];var utils=require(_0x8f95('0x4'));var logger=require(_0x8f95('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x8f95('0x6'));var client=jayson[_0x8f95('0x7')][_0x8f95('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5c2af8,_0x5cfc04,_0x1ae9c4){return new BPromise(function(_0x109bed,_0x435b5b){return client[_0x8f95('0x9')](_0x5c2af8,_0x1ae9c4)[_0x8f95('0xa')](function(_0x585025){logger[_0x8f95('0xb')](_0x8f95('0xc'),_0x5cfc04,'request\x20sent');logger[_0x8f95('0xd')](_0x8f95('0xe'),_0x5cfc04,_0x8f95('0xf'),JSON['stringify'](_0x585025));if(_0x585025[_0x8f95('0x10')]){if(_0x585025[_0x8f95('0x10')][_0x8f95('0x11')]===0x1f4){logger['error'](_0x8f95('0xc'),_0x5cfc04,_0x585025[_0x8f95('0x10')][_0x8f95('0x12')]);return _0x435b5b(_0x585025['error'][_0x8f95('0x12')]);}logger[_0x8f95('0x10')](_0x8f95('0xc'),_0x5cfc04,_0x585025[_0x8f95('0x10')][_0x8f95('0x12')]);return _0x109bed(_0x585025[_0x8f95('0x10')][_0x8f95('0x12')]);}else{logger['info']('VoiceQueuesLog,\x20%s,\x20%s',_0x5cfc04,'request\x20sent');_0x109bed(_0x585025['result']['message']);}})[_0x8f95('0x13')](function(_0x2f01cd){logger[_0x8f95('0x10')](_0x8f95('0xc'),_0x5cfc04,_0x2f01cd);_0x435b5b(_0x2f01cd);});});}
\ No newline at end of file
+var _0x1aa8=['then','info','VoiceQueuesLog,\x20%s,\x20%s','request\x20sent','debug','error','code','message','lodash','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','request'];(function(_0x22a7c5,_0x5e21dd){var _0x694018=function(_0x7dca46){while(--_0x7dca46){_0x22a7c5['push'](_0x22a7c5['shift']());}};_0x694018(++_0x5e21dd);}(_0x1aa8,0x197));var _0x81aa=function(_0x12717e,_0x2d2dc2){_0x12717e=_0x12717e-0x0;var _0x3b494d=_0x1aa8[_0x12717e];return _0x3b494d;};'use strict';var _=require(_0x81aa('0x0'));var util=require('util');var moment=require(_0x81aa('0x1'));var BPromise=require(_0x81aa('0x2'));var rs=require(_0x81aa('0x3'));var fs=require('fs');var Redis=require(_0x81aa('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x81aa('0x5'))(_0x81aa('0x6'));var config=require(_0x81aa('0x7'));var jayson=require(_0x81aa('0x8'));var client=jayson[_0x81aa('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x285823,_0x517a5d,_0x5ba651){return new BPromise(function(_0x50f089,_0x820c53){return client[_0x81aa('0xa')](_0x285823,_0x5ba651)[_0x81aa('0xb')](function(_0x373dca){logger[_0x81aa('0xc')](_0x81aa('0xd'),_0x517a5d,_0x81aa('0xe'));logger[_0x81aa('0xf')]('VoiceQueuesLog,\x20%s,\x20%s,\x20%s',_0x517a5d,_0x81aa('0xe'),JSON['stringify'](_0x373dca));if(_0x373dca[_0x81aa('0x10')]){if(_0x373dca[_0x81aa('0x10')][_0x81aa('0x11')]===0x1f4){logger['error'](_0x81aa('0xd'),_0x517a5d,_0x373dca[_0x81aa('0x10')][_0x81aa('0x12')]);return _0x820c53(_0x373dca['error'][_0x81aa('0x12')]);}logger[_0x81aa('0x10')](_0x81aa('0xd'),_0x517a5d,_0x373dca['error'][_0x81aa('0x12')]);return _0x50f089(_0x373dca[_0x81aa('0x10')][_0x81aa('0x12')]);}else{logger[_0x81aa('0xc')]('VoiceQueuesLog,\x20%s,\x20%s',_0x517a5d,_0x81aa('0xe'));_0x50f089(_0x373dca['result'][_0x81aa('0x12')]);}})['catch'](function(_0x4611d0){logger[_0x81aa('0x10')](_0x81aa('0xd'),_0x517a5d,_0x4611d0);_0x820c53(_0x4611d0);});});}
\ No newline at end of file
index 3f57fd5..6f0920c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13d0=['/:id','show','download','/:id/downloads','downloads','downloadTranscribe','create','post','/:id/transcribe','runTranscribe','update','delete','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','./voiceRecording.controller','get','isAuthenticated','describe'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x13d0,0x1ed));var _0x013d=function(_0x23584a,_0x7abb50){_0x23584a=_0x23584a-0x0;var _0x5bd540=_0x13d0[_0x23584a];return _0x5bd540;};'use strict';var multer=require(_0x013d('0x0'));var util=require(_0x013d('0x1'));var path=require(_0x013d('0x2'));var timeout=require(_0x013d('0x3'));var express=require(_0x013d('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x013d('0x5'));var interaction=require(_0x013d('0x6'));var config=require('../../config/environment');var controller=require(_0x013d('0x7'));router[_0x013d('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x013d('0x8')]('/describe',auth[_0x013d('0x9')](),controller[_0x013d('0xa')]);router[_0x013d('0x8')](_0x013d('0xb'),auth[_0x013d('0x9')](),controller[_0x013d('0xc')]);router[_0x013d('0x8')]('/:id/download',auth[_0x013d('0x9')](),controller[_0x013d('0xd')]);router[_0x013d('0x8')](_0x013d('0xe'),controller[_0x013d('0xf')]);router['get']('/:id/transcribe',auth['isAuthenticated'](),controller[_0x013d('0x10')]);router['post']('/',auth[_0x013d('0x9')](),controller[_0x013d('0x11')]);router[_0x013d('0x12')](_0x013d('0x13'),auth[_0x013d('0x9')](),controller[_0x013d('0x14')]);router['put'](_0x013d('0xb'),auth['isAuthenticated'](),controller[_0x013d('0x15')]);router[_0x013d('0x16')](_0x013d('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0x013d('0x17')]=router;
\ No newline at end of file
+var _0xf64d=['/:id','show','download','downloads','/:id/transcribe','post','create','runTranscribe','put','update','delete','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','describe'];(function(_0x322306,_0x31fc80){var _0x4f9152=function(_0x565bbf){while(--_0x565bbf){_0x322306['push'](_0x322306['shift']());}};_0x4f9152(++_0x31fc80);}(_0xf64d,0x83));var _0xdf64=function(_0x489730,_0x5226b9){_0x489730=_0x489730-0x0;var _0x7855d1=_0xf64d[_0x489730];return _0x7855d1;};'use strict';var multer=require(_0xdf64('0x0'));var util=require(_0xdf64('0x1'));var path=require(_0xdf64('0x2'));var timeout=require(_0xdf64('0x3'));var express=require(_0xdf64('0x4'));var router=express[_0xdf64('0x5')]();var fs_extra=require(_0xdf64('0x6'));var auth=require(_0xdf64('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xdf64('0x8'));var controller=require('./voiceRecording.controller');router[_0xdf64('0x9')]('/',auth[_0xdf64('0xa')](),controller[_0xdf64('0xb')]);router[_0xdf64('0x9')]('/describe',auth[_0xdf64('0xa')](),controller[_0xdf64('0xc')]);router[_0xdf64('0x9')](_0xdf64('0xd'),auth['isAuthenticated'](),controller[_0xdf64('0xe')]);router[_0xdf64('0x9')]('/:id/download',auth[_0xdf64('0xa')](),controller[_0xdf64('0xf')]);router[_0xdf64('0x9')]('/:id/downloads',controller[_0xdf64('0x10')]);router[_0xdf64('0x9')](_0xdf64('0x11'),auth[_0xdf64('0xa')](),controller['downloadTranscribe']);router[_0xdf64('0x12')]('/',auth[_0xdf64('0xa')](),controller[_0xdf64('0x13')]);router[_0xdf64('0x12')](_0xdf64('0x11'),auth[_0xdf64('0xa')](),controller[_0xdf64('0x14')]);router[_0xdf64('0x15')](_0xdf64('0xd'),auth[_0xdf64('0xa')](),controller[_0xdf64('0x16')]);router[_0xdf64('0x17')](_0xdf64('0xd'),auth[_0xdf64('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index d3d6d94..9689085 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(_0x5d4607,_0x6b5e7b){var _0x5e4a86=function(_0x46891a){while(--_0x46891a){_0x5d4607['push'](_0x5d4607['shift']());}};_0x5e4a86(++_0x6b5e7b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x187ee1,_0x3fd1e6){_0x187ee1=_0x187ee1-0x0;var _0x388160=_0xa9e0[_0x187ee1];return _0x388160;};'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(_0x4b7895,_0x3c4f5d){var _0x264180=function(_0xe0e861){while(--_0xe0e861){_0x4b7895['push'](_0x4b7895['shift']());}};_0x264180(++_0x3c4f5d);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf50820,_0x56f041){_0xf50820=_0xf50820-0x0;var _0x2a9b10=_0xa9e0[_0xf50820];return _0x2a9b10;};'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 960e252..1c44fbf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1eea=['Cloud\x20Provider\x20not\x20available','data2','Cloud\x20Provider\x20not\x20configured','data1','Buckets','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','NEW','downloadTranscribe','fileText','root','/server/files/transcribes/transcribe_','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','querystring','papaparse','aws-sdk','uuid/v4','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','destroy','stack','name','index','map','VoiceRecording','rawAttributes','type','key','model','format','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','where','pick','filter','merge','options','then','includeAll','include','catch','find','create','body','update','params','describe','download','../../components/encryptor','uniqueid','value','%s.cypher','existsSync','decryptFile','secrets','recording','Sequelize','VoiceRecording\x20not\x20found','extname','unlink','send','downloads','sequelize','MD5','col','token','$and','push','filename','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','listBuckets','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)','Location','bucket','location','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','TranscriptionJobName','transcribeName','transcribeStatus','runTranscribe','Voice\x20Recording\x20not\x20found','Setting','findOne','transcribe','transcribeAccountId','transcribeRegion','language','ValidationError','Transcribe\x20not\x20configured','runSentiment','sentiment','sentimentAccountId','sentimentRegion','Sentiment\x20Analysis\x20not\x20configured'];(function(_0x4b6507,_0x5518b5){var _0x2001ec=function(_0x330ddf){while(--_0x330ddf){_0x4b6507['push'](_0x4b6507['shift']());}};_0x2001ec(++_0x5518b5);}(_0x1eea,0x13d));var _0xa1ee=function(_0x74cd0,_0x3aeec3){_0x74cd0=_0x74cd0-0x0;var _0x4c2836=_0x1eea[_0x74cd0];return _0x4c2836;};'use strict';var emlformat=require(_0xa1ee('0x0'));var rimraf=require(_0xa1ee('0x1'));var zipdir=require(_0xa1ee('0x2'));var jsonpatch=require(_0xa1ee('0x3'));var rp=require(_0xa1ee('0x4'));var moment=require(_0xa1ee('0x5'));var BPromise=require(_0xa1ee('0x6'));var Mustache=require(_0xa1ee('0x7'));var util=require(_0xa1ee('0x8'));var path=require(_0xa1ee('0x9'));var sox=require(_0xa1ee('0xa'));var csv=require(_0xa1ee('0xb'));var ejs=require(_0xa1ee('0xc'));var fs=require('fs');var fs_extra=require(_0xa1ee('0xd'));var _=require(_0xa1ee('0xe'));var squel=require(_0xa1ee('0xf'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xa1ee('0xb'));var querystring=require(_0xa1ee('0x10'));var Papa=require(_0xa1ee('0x11'));var AWS=require(_0xa1ee('0x12'));var uuidv4=require(_0xa1ee('0x13'));var Redis=require('ioredis');var authService=require(_0xa1ee('0x14'));var qs=require(_0xa1ee('0x15'));var as=require(_0xa1ee('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xa1ee('0x17'));var utils=require(_0xa1ee('0x18'));var config=require(_0xa1ee('0x19'));var licenseUtil=require(_0xa1ee('0x1a'));var db=require(_0xa1ee('0x1b'))['db'];function respondWithStatusCode(_0x4b72fc,_0x36e6df){_0x36e6df=_0x36e6df||0xcc;return function(_0x557b7c){if(_0x557b7c){return _0x4b72fc[_0xa1ee('0x1c')](_0x36e6df);}return _0x4b72fc[_0xa1ee('0x1d')](_0x36e6df)[_0xa1ee('0x1e')]();};}function respondWithResult(_0x3a924d,_0x3974e6){_0x3974e6=_0x3974e6||0xc8;return function(_0x1d68bb){if(_0x1d68bb){return _0x3a924d[_0xa1ee('0x1d')](_0x3974e6)[_0xa1ee('0x1f')](_0x1d68bb);}};}function respondWithFilteredResult(_0x1ceac1,_0x4ed57f){return function(_0x19c066){if(_0x19c066){var _0x577ae7=typeof _0x4ed57f[_0xa1ee('0x20')]===_0xa1ee('0x21')&&typeof _0x4ed57f['limit']===_0xa1ee('0x21');var _0x19bb9b=_0x19c066[_0xa1ee('0x22')];var _0x177d8c=_0x577ae7?0x0:_0x4ed57f[_0xa1ee('0x20')];var _0x42dbfc=_0x577ae7?_0x19c066[_0xa1ee('0x22')]:_0x4ed57f['offset']+_0x4ed57f[_0xa1ee('0x23')];var _0x54ff08;if(_0x42dbfc>=_0x19bb9b){_0x42dbfc=_0x19bb9b;_0x54ff08=0xc8;}else{_0x54ff08=0xce;}_0x1ceac1[_0xa1ee('0x1d')](_0x54ff08);return _0x1ceac1[_0xa1ee('0x24')](_0xa1ee('0x25'),_0x177d8c+'-'+_0x42dbfc+'/'+_0x19bb9b)[_0xa1ee('0x1f')](_0x19c066);}return null;};}function patchUpdates(_0xef5c6d){return function(_0x2ef821){try{jsonpatch[_0xa1ee('0x26')](_0x2ef821,_0xef5c6d,!![]);}catch(_0x233b08){return BPromise[_0xa1ee('0x27')](_0x233b08);}return _0x2ef821[_0xa1ee('0x28')]();};}function saveUpdates(_0x4b07f0,_0x5a533b){return function(_0x1fd144){if(_0x1fd144){return _0x1fd144['update'](_0x4b07f0)['then'](function(_0x4b898c){return _0x4b898c;});}return null;};}function removeEntity(_0x9409c,_0x102475){return function(_0x37e145){if(_0x37e145){return _0x37e145[_0xa1ee('0x29')]()['then'](function(){_0x9409c[_0xa1ee('0x1d')](0xcc)[_0xa1ee('0x1e')]();});}};}function handleEntityNotFound(_0x91e693,_0x5eba63){return function(_0x29a162){if(!_0x29a162){_0x91e693[_0xa1ee('0x1c')](0x194);}return _0x29a162;};}function handleError(_0x485a7a,_0x1ea4f3){_0x1ea4f3=_0x1ea4f3||0x1f4;return function(_0x47f71d){logger['error'](_0x47f71d[_0xa1ee('0x2a')]);if(_0x47f71d[_0xa1ee('0x2b')]){delete _0x47f71d[_0xa1ee('0x2b')];}_0x485a7a[_0xa1ee('0x1d')](_0x1ea4f3)['send'](_0x47f71d);};}exports[_0xa1ee('0x2c')]=function(_0x6fbdd6,_0x54d181){var _0x48ab44={},_0x5afeb6={},_0x4d627f={'count':0x0,'rows':[]};var _0x4d3e65=_[_0xa1ee('0x2d')](db[_0xa1ee('0x2e')][_0xa1ee('0x2f')],function(_0x1e1613){return{'name':_0x1e1613['fieldName'],'type':_0x1e1613[_0xa1ee('0x30')][_0xa1ee('0x31')]};});_0x5afeb6[_0xa1ee('0x32')]=_['differenceBy'](_[_0xa1ee('0x2d')](_0x4d3e65,'name'),[_0xa1ee('0x33')]);_0x5afeb6[_0xa1ee('0x34')]=_[_0xa1ee('0x35')](_0x6fbdd6[_0xa1ee('0x34')]);_0x5afeb6[_0xa1ee('0x36')]=_['intersection'](_0x5afeb6[_0xa1ee('0x32')],_0x5afeb6[_0xa1ee('0x34')]);_0x48ab44[_0xa1ee('0x37')]=_[_0xa1ee('0x38')](_0x5afeb6['model'],qs['fields'](_0x6fbdd6[_0xa1ee('0x34')][_0xa1ee('0x39')]));_0x48ab44[_0xa1ee('0x37')]=_0x48ab44[_0xa1ee('0x37')][_0xa1ee('0x3a')]?_0x48ab44[_0xa1ee('0x37')]:_0x5afeb6[_0xa1ee('0x32')];if(!_0x6fbdd6[_0xa1ee('0x34')][_0xa1ee('0x3b')](_0xa1ee('0x3c'))){_0x48ab44[_0xa1ee('0x23')]=qs[_0xa1ee('0x23')](_0x6fbdd6[_0xa1ee('0x34')][_0xa1ee('0x23')]);_0x48ab44[_0xa1ee('0x20')]=qs[_0xa1ee('0x20')](_0x6fbdd6[_0xa1ee('0x34')][_0xa1ee('0x20')]);}_0x48ab44[_0xa1ee('0x3d')]=qs['sort'](_0x6fbdd6['query']['sort']);_0x48ab44[_0xa1ee('0x3e')]=qs[_0xa1ee('0x36')](_[_0xa1ee('0x3f')](_0x6fbdd6[_0xa1ee('0x34')],_0x5afeb6[_0xa1ee('0x36')]),_0x4d3e65);if(_0x6fbdd6[_0xa1ee('0x34')][_0xa1ee('0x40')]){_0x48ab44['where']=_[_0xa1ee('0x41')](_0x48ab44[_0xa1ee('0x3e')],{'$or':_[_0xa1ee('0x2d')](_0x4d3e65,function(_0x2abc2f){if(_0x2abc2f[_0xa1ee('0x30')]!=='VIRTUAL'){var _0x21c7de={};_0x21c7de[_0x2abc2f[_0xa1ee('0x2b')]]={'$like':'%'+_0x6fbdd6[_0xa1ee('0x34')][_0xa1ee('0x40')]+'%'};return _0x21c7de;}})});}_0x48ab44=_['merge']({},_0x48ab44,_0x6fbdd6[_0xa1ee('0x42')]);var _0x2b96a2={'where':_0x48ab44[_0xa1ee('0x3e')]};return db[_0xa1ee('0x2e')][_0xa1ee('0x22')](_0x2b96a2)[_0xa1ee('0x43')](function(_0x2178ff){_0x4d627f[_0xa1ee('0x22')]=_0x2178ff;if(_0x6fbdd6['query'][_0xa1ee('0x44')]){_0x48ab44[_0xa1ee('0x45')]=[{'all':!![]}];}return db[_0xa1ee('0x2e')]['findAll'](_0x48ab44);})['then'](function(_0x22cbe0){_0x4d627f['rows']=_0x22cbe0;return _0x4d627f;})[_0xa1ee('0x43')](respondWithFilteredResult(_0x54d181,_0x48ab44))[_0xa1ee('0x46')](handleError(_0x54d181,null));};exports['show']=function(_0xa5cd07,_0x4cf20e){var _0x15b1e6={'raw':![],'where':{'id':_0xa5cd07['params']['id']}},_0x1f14d3={};_0x1f14d3[_0xa1ee('0x32')]=_[_0xa1ee('0x35')](db[_0xa1ee('0x2e')][_0xa1ee('0x2f')]);_0x1f14d3[_0xa1ee('0x34')]=_['keys'](_0xa5cd07[_0xa1ee('0x34')]);_0x1f14d3[_0xa1ee('0x36')]=_['intersection'](_0x1f14d3['model'],_0x1f14d3[_0xa1ee('0x34')]);_0x15b1e6[_0xa1ee('0x37')]=_[_0xa1ee('0x38')](_0x1f14d3[_0xa1ee('0x32')],qs[_0xa1ee('0x39')](_0xa5cd07[_0xa1ee('0x34')][_0xa1ee('0x39')]));_0x15b1e6[_0xa1ee('0x37')]=_0x15b1e6[_0xa1ee('0x37')]['length']?_0x15b1e6['attributes']:_0x1f14d3['model'];if(_0xa5cd07['query'][_0xa1ee('0x44')]){_0x15b1e6['include']=[{'all':!![]}];}_0x15b1e6=_[_0xa1ee('0x41')]({},_0x15b1e6,_0xa5cd07['options']);return db['VoiceRecording'][_0xa1ee('0x47')](_0x15b1e6)[_0xa1ee('0x43')](handleEntityNotFound(_0x4cf20e,null))[_0xa1ee('0x43')](respondWithResult(_0x4cf20e,null))['catch'](handleError(_0x4cf20e,null));};exports[_0xa1ee('0x48')]=function(_0x2a558d,_0x5d4df7){return db[_0xa1ee('0x2e')][_0xa1ee('0x48')](_0x2a558d[_0xa1ee('0x49')],{})[_0xa1ee('0x43')](respondWithResult(_0x5d4df7,0xc9))['catch'](handleError(_0x5d4df7,null));};exports[_0xa1ee('0x4a')]=function(_0x9b11b1,_0x2c38b5){if(_0x9b11b1[_0xa1ee('0x49')]['id']){delete _0x9b11b1['body']['id'];}return db[_0xa1ee('0x2e')][_0xa1ee('0x47')]({'where':{'id':_0x9b11b1[_0xa1ee('0x4b')]['id']}})[_0xa1ee('0x43')](handleEntityNotFound(_0x2c38b5,null))[_0xa1ee('0x43')](saveUpdates(_0x9b11b1[_0xa1ee('0x49')],null))[_0xa1ee('0x43')](respondWithResult(_0x2c38b5,null))[_0xa1ee('0x46')](handleError(_0x2c38b5,null));};exports[_0xa1ee('0x4c')]=function(_0x1b01e8,_0x46fdc2){return db[_0xa1ee('0x2e')]['describe']()['then'](respondWithResult(_0x46fdc2,null))[_0xa1ee('0x46')](handleError(_0x46fdc2,null));};exports[_0xa1ee('0x4d')]=function(_0x50d56a,_0x206911,_0x102b98){var _0x2afba8=require(_0xa1ee('0x4e'));var _0x1f152f=![];var _0x469d66={};if(_0x50d56a[_0xa1ee('0x34')]['type']&&_0x50d56a[_0xa1ee('0x34')][_0xa1ee('0x30')]===_0xa1ee('0x4f')){_0x469d66[_0xa1ee('0x4f')]=_0x50d56a['params']['id'];}else{_0x469d66['id']=_0x50d56a[_0xa1ee('0x4b')]['id'];}return db[_0xa1ee('0x2e')][_0xa1ee('0x47')]({'where':_0x469d66,'attributes':['id',_0xa1ee('0x50')],'raw':!![]})[_0xa1ee('0x43')](handleEntityNotFound(_0x206911,null))[_0xa1ee('0x43')](function(_0x1e1792){if(_0x1e1792){var _0x20ccbc=_0x1e1792[_0xa1ee('0x50')];var _0x205e18=util[_0xa1ee('0x33')](_0xa1ee('0x51'),_0x20ccbc);if(fs[_0xa1ee('0x52')](_0x205e18)){_0x1f152f=!![];return _0x2afba8[_0xa1ee('0x53')](_0x205e18,_0x20ccbc,config[_0xa1ee('0x54')][_0xa1ee('0x55')])[_0xa1ee('0x43')](function(){return _0x1e1792;});}return _0x1e1792;}})['then'](function(_0xc7dec3){if(_0xc7dec3){var _0x40ca79=_0xc7dec3['value'];if(!fs[_0xa1ee('0x52')](_0x40ca79)){throw new db[(_0xa1ee('0x56'))]['ValidationError'](_0xa1ee('0x57'));}if(_0xc7dec3['filename']){return _0x206911['download'](_0x40ca79,_0xc7dec3['filename']+path[_0xa1ee('0x58')](_0x40ca79),function(){if(_0x1f152f){fs[_0xa1ee('0x59')](_0x40ca79);}});}else{return _0x206911[_0xa1ee('0x4d')](_0x40ca79,function(_0x1533fa){if(_0x1f152f){fs['unlink'](_0x40ca79);}});}}})[_0xa1ee('0x46')](function(_0x490b3a){if(_0x490b3a['message']==='VoiceRecording\x20not\x20found'){_0x206911['status'](0x194)[_0xa1ee('0x5a')]('Not\x20found');}else{return handleError(_0x206911,null);}});};exports[_0xa1ee('0x5b')]=function(_0x7e586f,_0x479ea9,_0x2769a7){var _0xab04cf=require(_0xa1ee('0x4e'));var _0x5cfdbf=![];var _0x5d0ef8={'$and':[db[_0xa1ee('0x5c')][_0xa1ee('0x3e')](db[_0xa1ee('0x5c')]['fn'](_0xa1ee('0x5d'),db[_0xa1ee('0x5c')][_0xa1ee('0x5e')](_0xa1ee('0x4f'))),_0x7e586f['query'][_0xa1ee('0x5f')])]};if(_0x7e586f[_0xa1ee('0x34')][_0xa1ee('0x30')]&&_0x7e586f[_0xa1ee('0x34')][_0xa1ee('0x30')]===_0xa1ee('0x4f')){_0x5d0ef8[_0xa1ee('0x60')]['push']({'uniqueid':_0x7e586f[_0xa1ee('0x4b')]['id']});}else{_0x5d0ef8['$and'][_0xa1ee('0x61')]({'id':_0x7e586f['params']['id']});}return db[_0xa1ee('0x2e')][_0xa1ee('0x47')]({'where':_0x5d0ef8,'attributes':['id',_0xa1ee('0x50')],'raw':!![]})[_0xa1ee('0x43')](handleEntityNotFound(_0x479ea9,null))['then'](function(_0x52b49c){if(_0x52b49c){var _0x329714=util['format']('%s.cypher',_0x52b49c[_0xa1ee('0x50')]);if(fs[_0xa1ee('0x52')](_0x329714)){_0x5cfdbf=!![];return _0xab04cf['decryptFile'](_0x329714,_0x52b49c[_0xa1ee('0x50')],config[_0xa1ee('0x54')][_0xa1ee('0x55')])[_0xa1ee('0x43')](function(){return _0x52b49c;});}return _0x52b49c;}})['then'](function(_0x1412cf){if(_0x1412cf){if(!fs[_0xa1ee('0x52')](_0x1412cf[_0xa1ee('0x50')])){throw new db[(_0xa1ee('0x56'))]['ValidationError'](_0xa1ee('0x57'));}if(_0x1412cf[_0xa1ee('0x62')]){return _0x479ea9[_0xa1ee('0x4d')](_0x1412cf[_0xa1ee('0x50')],_0x1412cf[_0xa1ee('0x62')]+path['extname'](_0x1412cf[_0xa1ee('0x50')]),function(){if(_0x5cfdbf){fs[_0xa1ee('0x59')](_0x1412cf['value']);}});}else{return _0x479ea9[_0xa1ee('0x4d')](_0x1412cf[_0xa1ee('0x50')],function(_0x1960c0){if(_0x5cfdbf){fs[_0xa1ee('0x59')](_0x1412cf['value']);}});}}})[_0xa1ee('0x46')](handleError(_0x479ea9,null));};exports[_0xa1ee('0x29')]=function(_0x395a70,_0x2e959e){return db[_0xa1ee('0x2e')][_0xa1ee('0x47')]({'where':{'id':_0x395a70['params']['id']}})[_0xa1ee('0x43')](function(_0x2400ad){if(_[_0xa1ee('0x63')](_0x2400ad)){throw new ReferenceError(_0xa1ee('0x64'));}return _0x2400ad;})[_0xa1ee('0x43')](function(_0x31dab5){var _0xec474b=_0x31dab5[_0xa1ee('0x50')];logger[_0xa1ee('0x65')](_0xa1ee('0x66'),_0xec474b);if(!_[_0xa1ee('0x63')](_0x31dab5['value'])&&fs[_0xa1ee('0x52')](_0xec474b)){logger['info'](_0xa1ee('0x67')+_0xec474b+_0xa1ee('0x68'));fs[_0xa1ee('0x69')](_0xec474b);}_0xec474b=_0xec474b+_0xa1ee('0x6a');if(!_[_0xa1ee('0x63')](_0x31dab5['value'])&&fs[_0xa1ee('0x52')](_0xec474b)){logger[_0xa1ee('0x65')](_0xa1ee('0x67')+_0xec474b+_0xa1ee('0x68'));fs[_0xa1ee('0x69')](_0xec474b);}return _0x31dab5;})[_0xa1ee('0x43')](function(_0x4dfcca){if(!_0x4dfcca)throw new InternalError();return _0x4dfcca['destroy']();})[_0xa1ee('0x43')](function(){_0x2e959e[_0xa1ee('0x1d')](0xcc)[_0xa1ee('0x1e')]();})['catch'](handleError(_0x2e959e,null));};function getBucketslist(_0x2b81d9,_0x7905d0,_0xf64797){return new Promise(function(_0x25c4e1,_0x185243){var _0x5f0bb9=new AWS['S3']({'accessKeyId':_0x7905d0,'secretAccessKey':_0x2b81d9,'region':_0xf64797});_0x5f0bb9[_0xa1ee('0x6b')]({},function(_0x2e19ef,_0x38b035){if(_0x2e19ef){return _0x185243(_0x2e19ef);}else{return _0x25c4e1(_0x38b035);}});});}function createBucket(_0x23eb36,_0x50a185,_0x425df5,_0x19d791){return new Promise(function(_0x3f695c,_0x1295fb){var _0x517fed=new AWS['S3']({'accessKeyId':_0x50a185,'secretAccessKey':_0x23eb36,'region':_0x425df5});_0x517fed['createBucket']({'Bucket':_0x19d791},function(_0x1ee6a7,_0x20e5da){if(_0x1ee6a7){return _0x1295fb(_0x1ee6a7);}else{return _0x3f695c(_0x20e5da);}});});}function uploadFile(_0xd807a2,_0x2d753a,_0x9eefcb,_0x334633,_0x3343f1,_0x193ade){return new Promise(function(_0x20e05f,_0x5ed681){var _0x14e196=new AWS['S3']({'accessKeyId':_0x2d753a,'secretAccessKey':_0xd807a2,'region':_0x9eefcb});_0x14e196[_0xa1ee('0x6c')]({'Bucket':_0x334633,'Key':_0x3343f1,'Body':_0x193ade},function(_0x783a86,_0x80dc16){if(_0x783a86){return _0x5ed681(_0x783a86);}else{return _0x20e05f(_0x80dc16);}});});}function startTranscribe(_0x589852,_0x18d389,_0x36b77b,_0x16229c,_0x45ae32,_0x27bc08){return new Promise(function(_0x26e78b,_0x42f639){var _0x41af05=new AWS[(_0xa1ee('0x6d'))]({'accessKeyId':_0x18d389,'secretAccessKey':_0x589852,'region':_0x36b77b});_0x41af05[_0xa1ee('0x6e')]({'TranscriptionJobName':_0x16229c,'LanguageCode':_0x45ae32,'Media':{'MediaFileUri':_0x27bc08}},function(_0x42d62e,_0x3313f3){if(_0x42d62e){return _0x42f639(_0x42d62e);}else{return _0x26e78b(_0x3313f3);}});});}function transcribe(_0x5bf453,_0x36fe97,_0x3f3b7f,_0x16d25b,_0x3377c1,_0x146c58,_0x4541ce){return new Promise(function(_0x4b5c37,_0x131c69){var _0x23b388={};logger[_0xa1ee('0x65')](util[_0xa1ee('0x33')](_0xa1ee('0x6f'),_0x5bf453,_0x3377c1));return uploadFile(_0x36fe97,_0x3f3b7f,_0x16d25b,_0x3377c1,path[_0xa1ee('0x70')](_0x146c58),fs[_0xa1ee('0x71')](_0x146c58))[_0xa1ee('0x43')](function(_0x240e7a){logger[_0xa1ee('0x65')](util['format'](_0xa1ee('0x72'),_0x5bf453,_0x3377c1,_0x240e7a[_0xa1ee('0x73')]));_0x23b388[_0xa1ee('0x74')]=_0x240e7a['Bucket'];_0x23b388[_0xa1ee('0x75')]=_0x240e7a[_0xa1ee('0x73')];logger[_0xa1ee('0x65')](util[_0xa1ee('0x33')](_0xa1ee('0x76'),_0x5bf453));return startTranscribe(_0x36fe97,_0x3f3b7f,_0x16d25b,uuidv4(),_0x4541ce,_0x240e7a[_0xa1ee('0x73')]);})[_0xa1ee('0x43')](function(_0x36e0c8){logger[_0xa1ee('0x65')](util[_0xa1ee('0x33')](_0xa1ee('0x77'),_0x5bf453,_0x36e0c8[_0xa1ee('0x78')][_0xa1ee('0x79')]));_0x23b388[_0xa1ee('0x7a')]=_0x36e0c8['TranscriptionJob'][_0xa1ee('0x79')];_0x23b388[_0xa1ee('0x7b')]=_0x36e0c8[_0xa1ee('0x78')]['TranscriptionJobStatus'];return _0x4b5c37(_0x23b388);})[_0xa1ee('0x46')](function(_0x260aaa){return _0x131c69(_0x260aaa);});});}exports[_0xa1ee('0x7c')]=function(_0x3a8c66,_0xe4c696,_0x57c7b4){var _0x2ff99d;var _0x3b39a0;var _0x4eb47a;var _0x57237b=require(_0xa1ee('0x4e'));return db[_0xa1ee('0x2e')]['findOne']({'where':{'id':_0x3a8c66['params']['id']}})[_0xa1ee('0x43')](function(_0x277319){if(_0x277319){var _0x10d30e=util[_0xa1ee('0x33')]('%s.cypher',_0x277319[_0xa1ee('0x50')]);if(fs[_0xa1ee('0x52')](_0x10d30e)){cypher=!![];return _0x57237b[_0xa1ee('0x53')](_0x10d30e,_0x277319[_0xa1ee('0x50')],config[_0xa1ee('0x54')][_0xa1ee('0x55')])[_0xa1ee('0x43')](function(){return _0x277319;});}return _0x277319;}})['then'](function(_0x5288e6){if(!_0x5288e6){throw new db['Sequelize']['ValidationError'](_0xa1ee('0x7d'));}_0x3b39a0=_0x5288e6;return db[_0xa1ee('0x7e')][_0xa1ee('0x7f')]({'where':{'id':0x1}});})[_0xa1ee('0x43')](handleEntityNotFound(_0xe4c696,null))[_0xa1ee('0x43')](function(_0x16754a){if(_0x16754a){_0x2ff99d=_0x16754a;if(!_0x2ff99d[_0xa1ee('0x80')]||!_0x2ff99d[_0xa1ee('0x81')]||!_0x2ff99d[_0xa1ee('0x82')]||!_0x2ff99d[_0xa1ee('0x83')]||!_0x2ff99d['bucket']){throw new db['Sequelize'][(_0xa1ee('0x84'))](_0xa1ee('0x85'));}if(_0x3a8c66['body'][_0xa1ee('0x86')]&&(!_0x2ff99d[_0xa1ee('0x87')]||!_0x2ff99d[_0xa1ee('0x88')]||!_0x2ff99d[_0xa1ee('0x89')]||!_0x2ff99d['language']||!_0x2ff99d[_0xa1ee('0x74')])){throw new db['Sequelize']['ValidationError'](_0xa1ee('0x8a'));}return db['CloudProvider'][_0xa1ee('0x7f')]({'where':{'id':_0x2ff99d[_0xa1ee('0x81')]}});}})[_0xa1ee('0x43')](function(_0x54f71b){if(!_0x54f71b){throw new db[(_0xa1ee('0x56'))][(_0xa1ee('0x84'))](_0xa1ee('0x8b'));}if(!_0x54f71b['data1']||!_0x54f71b[_0xa1ee('0x8c')]){throw new db[(_0xa1ee('0x56'))][(_0xa1ee('0x84'))](_0xa1ee('0x8d'));}_0x4eb47a=_0x54f71b;return getBucketslist(_0x4eb47a[_0xa1ee('0x8e')],_0x4eb47a[_0xa1ee('0x8c')],_0x2ff99d[_0xa1ee('0x82')]);})['then'](function(_0x4ea24e){if(_0x4ea24e&&_0x4ea24e[_0xa1ee('0x8f')]){var _0x2563eb=_[_0xa1ee('0x47')](_0x4ea24e[_0xa1ee('0x8f')],function(_0x3a0740){return _0x3a0740[_0xa1ee('0x90')]===_0x2ff99d[_0xa1ee('0x74')];});if(!_0x2563eb){logger['info'](util['format'](_0xa1ee('0x91'),_0x3a8c66[_0xa1ee('0x4b')]['id'],_0x2ff99d[_0xa1ee('0x74')]));return createBucket(_0x4eb47a[_0xa1ee('0x8e')],_0x4eb47a[_0xa1ee('0x8c')],_0x2ff99d[_0xa1ee('0x82')],_0x2ff99d['bucket']);}logger[_0xa1ee('0x65')](util[_0xa1ee('0x33')](_0xa1ee('0x92'),_0x3a8c66['params']['id'],_0x2ff99d[_0xa1ee('0x74')]));return;}})[_0xa1ee('0x43')](function(_0x4e15b2){if(_0x3b39a0[_0xa1ee('0x7b')]===_0xa1ee('0x93')){return transcribe(_0x3a8c66[_0xa1ee('0x4b')]['id'],_0x4eb47a[_0xa1ee('0x8e')],_0x4eb47a[_0xa1ee('0x8c')],_0x2ff99d['transcribeRegion'],_0x2ff99d['bucket'],_0x3b39a0[_0xa1ee('0x50')],_0x2ff99d[_0xa1ee('0x83')]);}else{logger[_0xa1ee('0x65')](util[_0xa1ee('0x33')]('[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested',_0x3a8c66['params']['id']));return{'transcribeStatus':'IN_PROGRESS'};}})[_0xa1ee('0x43')](function(_0x2f92d2){if(_0x2f92d2){_0x2f92d2['tempSentiment']=_0x3a8c66['body'][_0xa1ee('0x86')];return _0x3b39a0['updateAttributes'](_0x2f92d2);}})[_0xa1ee('0x43')](respondWithResult(_0xe4c696,null))[_0xa1ee('0x46')](handleError(_0xe4c696,null));};function writeFile(_0x3c0250,_0xe0e9f2){return new Promise(function(_0x5b141b,_0x337929){fs['writeFile'](_0xe0e9f2,_0x3c0250,function(_0x5ec447,_0x46daa2){if(_0x5ec447){return _0x337929(_0x5ec447);}else{return _0x5b141b(_0x46daa2);}});});}exports[_0xa1ee('0x94')]=function(_0x5acf0d,_0x43b927,_0x4ef78e){return db[_0xa1ee('0x2e')][_0xa1ee('0x7f')]({'where':{'id':_0x5acf0d[_0xa1ee('0x4b')]['id']}})[_0xa1ee('0x43')](handleEntityNotFound(_0x43b927))[_0xa1ee('0x43')](function(_0x21d8ce){if(_0x21d8ce&&_0x21d8ce[_0xa1ee('0x95')]){var _0x217964=_0x21d8ce[_0xa1ee('0x95')];var _0x4f5fa9=config[_0xa1ee('0x96')]+_0xa1ee('0x97')+_0x21d8ce['id']+'.txt';if(fs[_0xa1ee('0x52')](_0x4f5fa9)){return _0x4f5fa9;}return writeFile(_0x217964,_0x4f5fa9)['then'](function(){return _0x4f5fa9;});}else{throw new db['Sequelize']['ValidationError']('Transcript\x20not\x20available');}})[_0xa1ee('0x43')](function(_0x3a5ecb){return _0x43b927['download'](_0x3a5ecb);})[_0xa1ee('0x46')](handleError(_0x43b927));};
\ No newline at end of file
+var _0x4b0e=['desk.js','to-csv','papaparse','aws-sdk','uuid/v4','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','save','update','then','end','index','map','VoiceRecording','fieldName','type','model','query','filters','attributes','length','nolimit','sort','where','pick','filter','merge','VIRTUAL','name','options','includeAll','include','findAll','catch','show','keys','rawAttributes','fields','find','create','body','params','describe','../../components/encryptor','uniqueid','value','format','%s.cypher','decryptFile','secrets','recording','existsSync','Sequelize','ValidationError','VoiceRecording\x20not\x20found','download','filename','extname','unlink','message','downloads','sequelize','MD5','col','token','$and','push','destroy','isNil','cancellazione\x20fisica\x20documento\x20%s','info','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','listBuckets','createBucket','upload','startTranscriptionJob','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','basename','Location','bucket','Bucket','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','TranscriptionJobName','transcribeStatus','TranscriptionJobStatus','Voice\x20Recording\x20not\x20found','findOne','transcribe','transcribeAccountId','transcribeRegion','language','Transcribe\x20not\x20configured','sentiment','sentimentRegion','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','data1','Buckets','Name','data2','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','NEW','[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested','IN_PROGRESS','tempSentiment','runSentiment','updateAttributes','writeFile','downloadTranscribe','fileText','root','.txt','Transcript\x20not\x20available','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','path','sox','fs-extra','lodash','crypto','jsforce'];(function(_0x14a36a,_0x7f96a2){var _0x308aa2=function(_0x3ebd6c){while(--_0x3ebd6c){_0x14a36a['push'](_0x14a36a['shift']());}};_0x308aa2(++_0x7f96a2);}(_0x4b0e,0x1a7));var _0xe4b0=function(_0x11da6e,_0xf882f2){_0x11da6e=_0x11da6e-0x0;var _0x106821=_0x4b0e[_0x11da6e];return _0x106821;};'use strict';var emlformat=require(_0xe4b0('0x0'));var rimraf=require(_0xe4b0('0x1'));var zipdir=require(_0xe4b0('0x2'));var jsonpatch=require(_0xe4b0('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xe4b0('0x4'));var Mustache=require(_0xe4b0('0x5'));var util=require('util');var path=require(_0xe4b0('0x6'));var sox=require(_0xe4b0('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe4b0('0x8'));var _=require(_0xe4b0('0x9'));var squel=require('squel');var crypto=require(_0xe4b0('0xa'));var jsforce=require(_0xe4b0('0xb'));var deskjs=require(_0xe4b0('0xc'));var toCsv=require(_0xe4b0('0xd'));var querystring=require('querystring');var Papa=require(_0xe4b0('0xe'));var AWS=require(_0xe4b0('0xf'));var uuidv4=require(_0xe4b0('0x10'));var Redis=require(_0xe4b0('0x11'));var authService=require(_0xe4b0('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe4b0('0x13'));var logger=require(_0xe4b0('0x14'))('api');var utils=require(_0xe4b0('0x15'));var config=require(_0xe4b0('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xe4b0('0x17'))['db'];function respondWithStatusCode(_0x3eb989,_0x11ed2a){_0x11ed2a=_0x11ed2a||0xcc;return function(_0x2b639e){if(_0x2b639e){return _0x3eb989[_0xe4b0('0x18')](_0x11ed2a);}return _0x3eb989[_0xe4b0('0x19')](_0x11ed2a)['end']();};}function respondWithResult(_0x47e793,_0x4abec4){_0x4abec4=_0x4abec4||0xc8;return function(_0x206c13){if(_0x206c13){return _0x47e793[_0xe4b0('0x19')](_0x4abec4)[_0xe4b0('0x1a')](_0x206c13);}};}function respondWithFilteredResult(_0x5a6ad0,_0x153dc6){return function(_0x5ef954){if(_0x5ef954){var _0x2a2abb=typeof _0x153dc6[_0xe4b0('0x1b')]===_0xe4b0('0x1c')&&typeof _0x153dc6['limit']===_0xe4b0('0x1c');var _0xc8795=_0x5ef954[_0xe4b0('0x1d')];var _0x571d83=_0x2a2abb?0x0:_0x153dc6[_0xe4b0('0x1b')];var _0xdf3f44=_0x2a2abb?_0x5ef954[_0xe4b0('0x1d')]:_0x153dc6[_0xe4b0('0x1b')]+_0x153dc6[_0xe4b0('0x1e')];var _0x32251c;if(_0xdf3f44>=_0xc8795){_0xdf3f44=_0xc8795;_0x32251c=0xc8;}else{_0x32251c=0xce;}_0x5a6ad0[_0xe4b0('0x19')](_0x32251c);return _0x5a6ad0[_0xe4b0('0x1f')](_0xe4b0('0x20'),_0x571d83+'-'+_0xdf3f44+'/'+_0xc8795)[_0xe4b0('0x1a')](_0x5ef954);}return null;};}function patchUpdates(_0x3e6e83){return function(_0x524534){try{jsonpatch[_0xe4b0('0x21')](_0x524534,_0x3e6e83,!![]);}catch(_0x3cbd5f){return BPromise['reject'](_0x3cbd5f);}return _0x524534[_0xe4b0('0x22')]();};}function saveUpdates(_0x335bad,_0x4c6860){return function(_0x339387){if(_0x339387){return _0x339387[_0xe4b0('0x23')](_0x335bad)[_0xe4b0('0x24')](function(_0x26468e){return _0x26468e;});}return null;};}function removeEntity(_0xca3821,_0x5cec82){return function(_0x3e3471){if(_0x3e3471){return _0x3e3471['destroy']()[_0xe4b0('0x24')](function(){_0xca3821[_0xe4b0('0x19')](0xcc)[_0xe4b0('0x25')]();});}};}function handleEntityNotFound(_0x2e9920,_0x515e9b){return function(_0x1a15df){if(!_0x1a15df){_0x2e9920['sendStatus'](0x194);}return _0x1a15df;};}function handleError(_0x3ce189,_0x3e7fe0){_0x3e7fe0=_0x3e7fe0||0x1f4;return function(_0x40eae6){logger['error'](_0x40eae6['stack']);if(_0x40eae6['name']){delete _0x40eae6['name'];}_0x3ce189['status'](_0x3e7fe0)['send'](_0x40eae6);};}exports[_0xe4b0('0x26')]=function(_0x15affa,_0x5068dd){var _0x304336={},_0x271a19={},_0x5bb943={'count':0x0,'rows':[]};var _0x3c311c=_[_0xe4b0('0x27')](db[_0xe4b0('0x28')]['rawAttributes'],function(_0x40d000){return{'name':_0x40d000[_0xe4b0('0x29')],'type':_0x40d000[_0xe4b0('0x2a')]['key']};});_0x271a19[_0xe4b0('0x2b')]=_['differenceBy'](_['map'](_0x3c311c,'name'),['format']);_0x271a19[_0xe4b0('0x2c')]=_['keys'](_0x15affa[_0xe4b0('0x2c')]);_0x271a19[_0xe4b0('0x2d')]=_['intersection'](_0x271a19['model'],_0x271a19['query']);_0x304336[_0xe4b0('0x2e')]=_['intersection'](_0x271a19[_0xe4b0('0x2b')],qs['fields'](_0x15affa[_0xe4b0('0x2c')]['fields']));_0x304336['attributes']=_0x304336[_0xe4b0('0x2e')][_0xe4b0('0x2f')]?_0x304336[_0xe4b0('0x2e')]:_0x271a19[_0xe4b0('0x2b')];if(!_0x15affa[_0xe4b0('0x2c')]['hasOwnProperty'](_0xe4b0('0x30'))){_0x304336[_0xe4b0('0x1e')]=qs['limit'](_0x15affa['query'][_0xe4b0('0x1e')]);_0x304336['offset']=qs[_0xe4b0('0x1b')](_0x15affa[_0xe4b0('0x2c')][_0xe4b0('0x1b')]);}_0x304336['order']=qs[_0xe4b0('0x31')](_0x15affa[_0xe4b0('0x2c')][_0xe4b0('0x31')]);_0x304336[_0xe4b0('0x32')]=qs[_0xe4b0('0x2d')](_[_0xe4b0('0x33')](_0x15affa[_0xe4b0('0x2c')],_0x271a19[_0xe4b0('0x2d')]),_0x3c311c);if(_0x15affa[_0xe4b0('0x2c')][_0xe4b0('0x34')]){_0x304336[_0xe4b0('0x32')]=_[_0xe4b0('0x35')](_0x304336['where'],{'$or':_[_0xe4b0('0x27')](_0x3c311c,function(_0x38f852){if(_0x38f852['type']!==_0xe4b0('0x36')){var _0x31c327={};_0x31c327[_0x38f852[_0xe4b0('0x37')]]={'$like':'%'+_0x15affa[_0xe4b0('0x2c')][_0xe4b0('0x34')]+'%'};return _0x31c327;}})});}_0x304336=_[_0xe4b0('0x35')]({},_0x304336,_0x15affa[_0xe4b0('0x38')]);var _0x3f962b={'where':_0x304336[_0xe4b0('0x32')]};return db[_0xe4b0('0x28')][_0xe4b0('0x1d')](_0x3f962b)[_0xe4b0('0x24')](function(_0x80a147){_0x5bb943['count']=_0x80a147;if(_0x15affa[_0xe4b0('0x2c')][_0xe4b0('0x39')]){_0x304336[_0xe4b0('0x3a')]=[{'all':!![]}];}return db['VoiceRecording'][_0xe4b0('0x3b')](_0x304336);})[_0xe4b0('0x24')](function(_0x59e990){_0x5bb943['rows']=_0x59e990;return _0x5bb943;})[_0xe4b0('0x24')](respondWithFilteredResult(_0x5068dd,_0x304336))[_0xe4b0('0x3c')](handleError(_0x5068dd,null));};exports[_0xe4b0('0x3d')]=function(_0x56fb5e,_0x4d0f92){var _0x53dcfc={'raw':![],'where':{'id':_0x56fb5e['params']['id']}},_0x1c8804={};_0x1c8804['model']=_[_0xe4b0('0x3e')](db[_0xe4b0('0x28')][_0xe4b0('0x3f')]);_0x1c8804[_0xe4b0('0x2c')]=_['keys'](_0x56fb5e[_0xe4b0('0x2c')]);_0x1c8804[_0xe4b0('0x2d')]=_['intersection'](_0x1c8804['model'],_0x1c8804[_0xe4b0('0x2c')]);_0x53dcfc[_0xe4b0('0x2e')]=_['intersection'](_0x1c8804[_0xe4b0('0x2b')],qs[_0xe4b0('0x40')](_0x56fb5e[_0xe4b0('0x2c')][_0xe4b0('0x40')]));_0x53dcfc[_0xe4b0('0x2e')]=_0x53dcfc['attributes'][_0xe4b0('0x2f')]?_0x53dcfc[_0xe4b0('0x2e')]:_0x1c8804[_0xe4b0('0x2b')];if(_0x56fb5e[_0xe4b0('0x2c')][_0xe4b0('0x39')]){_0x53dcfc[_0xe4b0('0x3a')]=[{'all':!![]}];}_0x53dcfc=_[_0xe4b0('0x35')]({},_0x53dcfc,_0x56fb5e[_0xe4b0('0x38')]);return db[_0xe4b0('0x28')][_0xe4b0('0x41')](_0x53dcfc)[_0xe4b0('0x24')](handleEntityNotFound(_0x4d0f92,null))['then'](respondWithResult(_0x4d0f92,null))[_0xe4b0('0x3c')](handleError(_0x4d0f92,null));};exports[_0xe4b0('0x42')]=function(_0x571912,_0x18209a){return db['VoiceRecording'][_0xe4b0('0x42')](_0x571912[_0xe4b0('0x43')],{})[_0xe4b0('0x24')](respondWithResult(_0x18209a,0xc9))['catch'](handleError(_0x18209a,null));};exports[_0xe4b0('0x23')]=function(_0x23f26b,_0x23d7e6){if(_0x23f26b['body']['id']){delete _0x23f26b[_0xe4b0('0x43')]['id'];}return db[_0xe4b0('0x28')][_0xe4b0('0x41')]({'where':{'id':_0x23f26b[_0xe4b0('0x44')]['id']}})[_0xe4b0('0x24')](handleEntityNotFound(_0x23d7e6,null))[_0xe4b0('0x24')](saveUpdates(_0x23f26b[_0xe4b0('0x43')],null))[_0xe4b0('0x24')](respondWithResult(_0x23d7e6,null))[_0xe4b0('0x3c')](handleError(_0x23d7e6,null));};exports[_0xe4b0('0x45')]=function(_0xd3774f,_0x10be9e){return db['VoiceRecording'][_0xe4b0('0x45')]()[_0xe4b0('0x24')](respondWithResult(_0x10be9e,null))[_0xe4b0('0x3c')](handleError(_0x10be9e,null));};exports['download']=function(_0x4f5dec,_0x17066b,_0x3b70cc){var _0xaf7c48=require(_0xe4b0('0x46'));var _0x18edfc=![];var _0x35aa86={};if(_0x4f5dec['query']['type']&&_0x4f5dec[_0xe4b0('0x2c')][_0xe4b0('0x2a')]===_0xe4b0('0x47')){_0x35aa86[_0xe4b0('0x47')]=_0x4f5dec['params']['id'];}else{_0x35aa86['id']=_0x4f5dec[_0xe4b0('0x44')]['id'];}return db['VoiceRecording'][_0xe4b0('0x41')]({'where':_0x35aa86,'attributes':['id',_0xe4b0('0x48')],'raw':!![]})['then'](handleEntityNotFound(_0x17066b,null))['then'](function(_0xbf55fd){if(_0xbf55fd){var _0x5a3201=_0xbf55fd[_0xe4b0('0x48')];var _0x4698f8=util[_0xe4b0('0x49')](_0xe4b0('0x4a'),_0x5a3201);if(fs['existsSync'](_0x4698f8)){_0x18edfc=!![];return _0xaf7c48[_0xe4b0('0x4b')](_0x4698f8,_0x5a3201,config[_0xe4b0('0x4c')][_0xe4b0('0x4d')])['then'](function(){return _0xbf55fd;});}return _0xbf55fd;}})[_0xe4b0('0x24')](function(_0x35508a){if(_0x35508a){var _0x124614=_0x35508a[_0xe4b0('0x48')];if(!fs[_0xe4b0('0x4e')](_0x124614)){throw new db[(_0xe4b0('0x4f'))][(_0xe4b0('0x50'))](_0xe4b0('0x51'));}if(_0x35508a['filename']){return _0x17066b[_0xe4b0('0x52')](_0x124614,_0x35508a[_0xe4b0('0x53')]+path[_0xe4b0('0x54')](_0x124614),function(){if(_0x18edfc){fs[_0xe4b0('0x55')](_0x124614);}});}else{return _0x17066b['download'](_0x124614,function(_0x5f6f6a){if(_0x18edfc){fs[_0xe4b0('0x55')](_0x124614);}});}}})[_0xe4b0('0x3c')](function(_0x199535){if(_0x199535[_0xe4b0('0x56')]===_0xe4b0('0x51')){_0x17066b['status'](0x194)['send']('Not\x20found');}else{return handleError(_0x17066b,null);}});};exports[_0xe4b0('0x57')]=function(_0xc3c419,_0x49cdba,_0x40a119){var _0x551b86=require('../../components/encryptor');var _0x420330=![];var _0x4eeb78={'$and':[db[_0xe4b0('0x58')][_0xe4b0('0x32')](db[_0xe4b0('0x58')]['fn'](_0xe4b0('0x59'),db[_0xe4b0('0x58')][_0xe4b0('0x5a')]('uniqueid')),_0xc3c419[_0xe4b0('0x2c')][_0xe4b0('0x5b')])]};if(_0xc3c419[_0xe4b0('0x2c')][_0xe4b0('0x2a')]&&_0xc3c419[_0xe4b0('0x2c')][_0xe4b0('0x2a')]==='uniqueid'){_0x4eeb78[_0xe4b0('0x5c')]['push']({'uniqueid':_0xc3c419[_0xe4b0('0x44')]['id']});}else{_0x4eeb78['$and'][_0xe4b0('0x5d')]({'id':_0xc3c419[_0xe4b0('0x44')]['id']});}return db[_0xe4b0('0x28')][_0xe4b0('0x41')]({'where':_0x4eeb78,'attributes':['id',_0xe4b0('0x48')],'raw':!![]})[_0xe4b0('0x24')](handleEntityNotFound(_0x49cdba,null))[_0xe4b0('0x24')](function(_0x526ac4){if(_0x526ac4){var _0x20c0a2=util[_0xe4b0('0x49')](_0xe4b0('0x4a'),_0x526ac4[_0xe4b0('0x48')]);if(fs[_0xe4b0('0x4e')](_0x20c0a2)){_0x420330=!![];return _0x551b86[_0xe4b0('0x4b')](_0x20c0a2,_0x526ac4[_0xe4b0('0x48')],config[_0xe4b0('0x4c')][_0xe4b0('0x4d')])[_0xe4b0('0x24')](function(){return _0x526ac4;});}return _0x526ac4;}})[_0xe4b0('0x24')](function(_0x34434f){if(_0x34434f){if(!fs['existsSync'](_0x34434f[_0xe4b0('0x48')])){throw new db[(_0xe4b0('0x4f'))][(_0xe4b0('0x50'))]('VoiceRecording\x20not\x20found');}if(_0x34434f[_0xe4b0('0x53')]){return _0x49cdba[_0xe4b0('0x52')](_0x34434f[_0xe4b0('0x48')],_0x34434f['filename']+path[_0xe4b0('0x54')](_0x34434f[_0xe4b0('0x48')]),function(){if(_0x420330){fs[_0xe4b0('0x55')](_0x34434f['value']);}});}else{return _0x49cdba[_0xe4b0('0x52')](_0x34434f[_0xe4b0('0x48')],function(_0x5e9ace){if(_0x420330){fs[_0xe4b0('0x55')](_0x34434f[_0xe4b0('0x48')]);}});}}})['catch'](handleError(_0x49cdba,null));};exports[_0xe4b0('0x5e')]=function(_0x4a1eb2,_0x266703){return db[_0xe4b0('0x28')][_0xe4b0('0x41')]({'where':{'id':_0x4a1eb2[_0xe4b0('0x44')]['id']}})[_0xe4b0('0x24')](function(_0x4c4059){if(_[_0xe4b0('0x5f')](_0x4c4059)){throw new ReferenceError('Entity\x20not\x20found');}return _0x4c4059;})['then'](function(_0x2ca33c){var _0x342fd3=_0x2ca33c['value'];logger['info'](_0xe4b0('0x60'),_0x342fd3);if(!_[_0xe4b0('0x5f')](_0x2ca33c['value'])&&fs[_0xe4b0('0x4e')](_0x342fd3)){logger[_0xe4b0('0x61')](_0xe4b0('0x62')+_0x342fd3+_0xe4b0('0x63'));fs[_0xe4b0('0x64')](_0x342fd3);}_0x342fd3=_0x342fd3+_0xe4b0('0x65');if(!_['isNil'](_0x2ca33c[_0xe4b0('0x48')])&&fs[_0xe4b0('0x4e')](_0x342fd3)){logger[_0xe4b0('0x61')]('File:\x20\x22'+_0x342fd3+_0xe4b0('0x63'));fs[_0xe4b0('0x64')](_0x342fd3);}return _0x2ca33c;})[_0xe4b0('0x24')](function(_0x575036){if(!_0x575036)throw new InternalError();return _0x575036[_0xe4b0('0x5e')]();})[_0xe4b0('0x24')](function(){_0x266703[_0xe4b0('0x19')](0xcc)[_0xe4b0('0x25')]();})[_0xe4b0('0x3c')](handleError(_0x266703,null));};function getBucketslist(_0x2563e0,_0x137b7d,_0x151782){return new Promise(function(_0x5b26d3,_0x149d38){var _0x71a590=new AWS['S3']({'accessKeyId':_0x137b7d,'secretAccessKey':_0x2563e0,'region':_0x151782});_0x71a590[_0xe4b0('0x66')]({},function(_0x56761f,_0x3f9e32){if(_0x56761f){return _0x149d38(_0x56761f);}else{return _0x5b26d3(_0x3f9e32);}});});}function createBucket(_0x490f2a,_0x21d9a8,_0x1b636d,_0x234ac8){return new Promise(function(_0x4b9416,_0x178763){var _0x59d6f6=new AWS['S3']({'accessKeyId':_0x21d9a8,'secretAccessKey':_0x490f2a,'region':_0x1b636d});_0x59d6f6[_0xe4b0('0x67')]({'Bucket':_0x234ac8},function(_0x5ee29e,_0x121ea6){if(_0x5ee29e){return _0x178763(_0x5ee29e);}else{return _0x4b9416(_0x121ea6);}});});}function uploadFile(_0x2e3ebe,_0x1ee3ad,_0x143ed3,_0x1cfa7a,_0xb2a39a,_0x4ed5cb){return new Promise(function(_0xa2c964,_0x5c1fc7){var _0x279563=new AWS['S3']({'accessKeyId':_0x1ee3ad,'secretAccessKey':_0x2e3ebe,'region':_0x143ed3});_0x279563[_0xe4b0('0x68')]({'Bucket':_0x1cfa7a,'Key':_0xb2a39a,'Body':_0x4ed5cb},function(_0x193062,_0x1b8d09){if(_0x193062){return _0x5c1fc7(_0x193062);}else{return _0xa2c964(_0x1b8d09);}});});}function startTranscribe(_0xdf70b6,_0x4d1b4c,_0x3a9ada,_0x591fde,_0x2a9759,_0x56ec71){return new Promise(function(_0x1301d5,_0x2b65af){var _0x6bbacb=new AWS['TranscribeService']({'accessKeyId':_0x4d1b4c,'secretAccessKey':_0xdf70b6,'region':_0x3a9ada});_0x6bbacb[_0xe4b0('0x69')]({'TranscriptionJobName':_0x591fde,'LanguageCode':_0x2a9759,'Media':{'MediaFileUri':_0x56ec71}},function(_0x3cfc20,_0x454866){if(_0x3cfc20){return _0x2b65af(_0x3cfc20);}else{return _0x1301d5(_0x454866);}});});}function transcribe(_0x4764cb,_0x151712,_0x8b1e67,_0x57302c,_0x24e320,_0x1ceaf7,_0xff77dc){return new Promise(function(_0x367b34,_0x545a1f){var _0x10a017={};logger[_0xe4b0('0x61')](util['format'](_0xe4b0('0x6a'),_0x4764cb,_0x24e320));return uploadFile(_0x151712,_0x8b1e67,_0x57302c,_0x24e320,path[_0xe4b0('0x6b')](_0x1ceaf7),fs['readFileSync'](_0x1ceaf7))[_0xe4b0('0x24')](function(_0x10e5a4){logger[_0xe4b0('0x61')](util[_0xe4b0('0x49')]('[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)',_0x4764cb,_0x24e320,_0x10e5a4[_0xe4b0('0x6c')]));_0x10a017[_0xe4b0('0x6d')]=_0x10e5a4[_0xe4b0('0x6e')];_0x10a017['location']=_0x10e5a4[_0xe4b0('0x6c')];logger['info'](util['format'](_0xe4b0('0x6f'),_0x4764cb));return startTranscribe(_0x151712,_0x8b1e67,_0x57302c,uuidv4(),_0xff77dc,_0x10e5a4[_0xe4b0('0x6c')]);})[_0xe4b0('0x24')](function(_0x228bf9){logger[_0xe4b0('0x61')](util[_0xe4b0('0x49')](_0xe4b0('0x70'),_0x4764cb,_0x228bf9[_0xe4b0('0x71')][_0xe4b0('0x72')]));_0x10a017['transcribeName']=_0x228bf9[_0xe4b0('0x71')][_0xe4b0('0x72')];_0x10a017[_0xe4b0('0x73')]=_0x228bf9['TranscriptionJob'][_0xe4b0('0x74')];return _0x367b34(_0x10a017);})[_0xe4b0('0x3c')](function(_0xb2bb54){return _0x545a1f(_0xb2bb54);});});}exports['runTranscribe']=function(_0x5af83e,_0x4800f5,_0xf5c3bf){var _0x352904;var _0x313e5c;var _0x2b4b9d;var _0x216675=require(_0xe4b0('0x46'));return db['VoiceRecording']['findOne']({'where':{'id':_0x5af83e[_0xe4b0('0x44')]['id']}})[_0xe4b0('0x24')](function(_0x231320){if(_0x231320){var _0x43f05c=util[_0xe4b0('0x49')](_0xe4b0('0x4a'),_0x231320['value']);if(fs['existsSync'](_0x43f05c)){cypher=!![];return _0x216675[_0xe4b0('0x4b')](_0x43f05c,_0x231320[_0xe4b0('0x48')],config[_0xe4b0('0x4c')][_0xe4b0('0x4d')])[_0xe4b0('0x24')](function(){return _0x231320;});}return _0x231320;}})[_0xe4b0('0x24')](function(_0x38465b){if(!_0x38465b){throw new db['Sequelize'][(_0xe4b0('0x50'))](_0xe4b0('0x75'));}_0x313e5c=_0x38465b;return db['Setting'][_0xe4b0('0x76')]({'where':{'id':0x1}});})[_0xe4b0('0x24')](handleEntityNotFound(_0x4800f5,null))[_0xe4b0('0x24')](function(_0x46bacc){if(_0x46bacc){_0x352904=_0x46bacc;if(!_0x352904[_0xe4b0('0x77')]||!_0x352904[_0xe4b0('0x78')]||!_0x352904[_0xe4b0('0x79')]||!_0x352904[_0xe4b0('0x7a')]||!_0x352904['bucket']){throw new db[(_0xe4b0('0x4f'))][(_0xe4b0('0x50'))](_0xe4b0('0x7b'));}if(_0x5af83e[_0xe4b0('0x43')]['runSentiment']&&(!_0x352904[_0xe4b0('0x7c')]||!_0x352904['sentimentAccountId']||!_0x352904[_0xe4b0('0x7d')]||!_0x352904[_0xe4b0('0x7a')]||!_0x352904['bucket'])){throw new db[(_0xe4b0('0x4f'))]['ValidationError'](_0xe4b0('0x7e'));}return db[_0xe4b0('0x7f')]['findOne']({'where':{'id':_0x352904[_0xe4b0('0x78')]}});}})[_0xe4b0('0x24')](function(_0x32fca9){if(!_0x32fca9){throw new db[(_0xe4b0('0x4f'))]['ValidationError']('Cloud\x20Provider\x20not\x20available');}if(!_0x32fca9[_0xe4b0('0x80')]||!_0x32fca9['data2']){throw new db['Sequelize'][(_0xe4b0('0x50'))]('Cloud\x20Provider\x20not\x20configured');}_0x2b4b9d=_0x32fca9;return getBucketslist(_0x2b4b9d['data1'],_0x2b4b9d['data2'],_0x352904[_0xe4b0('0x79')]);})['then'](function(_0x167cce){if(_0x167cce&&_0x167cce[_0xe4b0('0x81')]){var _0x3f56e9=_[_0xe4b0('0x41')](_0x167cce[_0xe4b0('0x81')],function(_0x359a5a){return _0x359a5a[_0xe4b0('0x82')]===_0x352904[_0xe4b0('0x6d')];});if(!_0x3f56e9){logger['info'](util[_0xe4b0('0x49')]('[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available',_0x5af83e[_0xe4b0('0x44')]['id'],_0x352904[_0xe4b0('0x6d')]));return createBucket(_0x2b4b9d[_0xe4b0('0x80')],_0x2b4b9d[_0xe4b0('0x83')],_0x352904[_0xe4b0('0x79')],_0x352904[_0xe4b0('0x6d')]);}logger[_0xe4b0('0x61')](util[_0xe4b0('0x49')](_0xe4b0('0x84'),_0x5af83e['params']['id'],_0x352904['bucket']));return;}})[_0xe4b0('0x24')](function(_0x4ecb14){if(_0x313e5c[_0xe4b0('0x73')]===_0xe4b0('0x85')){return transcribe(_0x5af83e[_0xe4b0('0x44')]['id'],_0x2b4b9d['data1'],_0x2b4b9d[_0xe4b0('0x83')],_0x352904['transcribeRegion'],_0x352904[_0xe4b0('0x6d')],_0x313e5c[_0xe4b0('0x48')],_0x352904[_0xe4b0('0x7a')]);}else{logger[_0xe4b0('0x61')](util[_0xe4b0('0x49')](_0xe4b0('0x86'),_0x5af83e[_0xe4b0('0x44')]['id']));return{'transcribeStatus':_0xe4b0('0x87')};}})[_0xe4b0('0x24')](function(_0x5ea4df){if(_0x5ea4df){_0x5ea4df[_0xe4b0('0x88')]=_0x5af83e['body'][_0xe4b0('0x89')];return _0x313e5c[_0xe4b0('0x8a')](_0x5ea4df);}})[_0xe4b0('0x24')](respondWithResult(_0x4800f5,null))[_0xe4b0('0x3c')](handleError(_0x4800f5,null));};function writeFile(_0x28964b,_0x5e23dc){return new Promise(function(_0x2454d4,_0x52cbc0){fs[_0xe4b0('0x8b')](_0x5e23dc,_0x28964b,function(_0x5f13b1,_0x225ece){if(_0x5f13b1){return _0x52cbc0(_0x5f13b1);}else{return _0x2454d4(_0x225ece);}});});}exports[_0xe4b0('0x8c')]=function(_0x4612a7,_0x2e6de9,_0x467be3){return db['VoiceRecording'][_0xe4b0('0x76')]({'where':{'id':_0x4612a7[_0xe4b0('0x44')]['id']}})['then'](handleEntityNotFound(_0x2e6de9))[_0xe4b0('0x24')](function(_0x26eb8f){if(_0x26eb8f&&_0x26eb8f[_0xe4b0('0x8d')]){var _0x2c0eb0=_0x26eb8f['fileText'];var _0x2baa28=config[_0xe4b0('0x8e')]+'/server/files/transcribes/transcribe_'+_0x26eb8f['id']+_0xe4b0('0x8f');if(fs[_0xe4b0('0x4e')](_0x2baa28)){return _0x2baa28;}return writeFile(_0x2c0eb0,_0x2baa28)[_0xe4b0('0x24')](function(){return _0x2baa28;});}else{throw new db['Sequelize']['ValidationError'](_0xe4b0('0x90'));}})[_0xe4b0('0x24')](function(_0x5456b5){return _0x2e6de9[_0xe4b0('0x52')](_0x5456b5);})[_0xe4b0('0x3c')](handleError(_0x2e6de9));};
\ No newline at end of file
index f3f27e1..d08217b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc252=['./voiceRecording.attributes','exports','define','VoiceRecording','voice_recordings','uniqueid','transcribeStatus'];(function(_0x843465,_0x31002c){var _0x53560b=function(_0x2e7b30){while(--_0x2e7b30){_0x843465['push'](_0x843465['shift']());}};_0x53560b(++_0x31002c);}(_0xc252,0x118));var _0x2c25=function(_0x4998e9,_0x145977){_0x4998e9=_0x4998e9-0x0;var _0x1787bb=_0xc252[_0x4998e9];return _0x1787bb;};'use strict';var attributes=require(_0x2c25('0x0'));module[_0x2c25('0x1')]=function(_0x34155a,_0x2755dd){return _0x34155a[_0x2c25('0x2')](_0x2c25('0x3'),attributes,{'tableName':_0x2c25('0x4'),'paranoid':![],'indexes':[{'name':_0x2c25('0x5'),'fields':['uniqueid']},{'name':'transcribeStatus','fields':[_0x2c25('0x6')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x43b1=['exports','define','voice_recordings','uniqueid','transcribeStatus','./voiceRecording.attributes'];(function(_0x18e49a,_0x5bf163){var _0x1397b5=function(_0x28dfb0){while(--_0x28dfb0){_0x18e49a['push'](_0x18e49a['shift']());}};_0x1397b5(++_0x5bf163);}(_0x43b1,0x7d));var _0x143b=function(_0x2ae8f3,_0x297a82){_0x2ae8f3=_0x2ae8f3-0x0;var _0x5370ef=_0x43b1[_0x2ae8f3];return _0x5370ef;};'use strict';var attributes=require(_0x143b('0x0'));module[_0x143b('0x1')]=function(_0x426f2c,_0x4c0b11){return _0x426f2c[_0x143b('0x2')]('VoiceRecording',attributes,{'tableName':_0x143b('0x3'),'paranoid':![],'indexes':[{'name':_0x143b('0x4'),'fields':[_0x143b('0x4')]},{'name':_0x143b('0x5'),'fields':[_0x143b('0x5')]}],'timestamps':!![]});};
\ No newline at end of file
index 56e936a..3d75169 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a85=['existsSync','value','format','secrets','recording','unlink','CreateVoiceRecording\x20file\x20encrypted','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','jayson/promise','http','info','VoiceRecording,\x20%s,\x20%s','request\x20sent','debug','VoiceRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateVoiceRecording','VoiceRecording','body','options','raw','where','attributes','limit','then','CreateVoiceRecording','../../components/encryptor','Setting','findOne','callRecordingEncryption','create'];(function(_0x2ad975,_0x564307){var _0x10d72a=function(_0x3e5363){while(--_0x3e5363){_0x2ad975['push'](_0x2ad975['shift']());}};_0x10d72a(++_0x564307);}(_0x1a85,0x178));var _0x51a8=function(_0x31ddea,_0x40de6d){_0x31ddea=_0x31ddea-0x0;var _0x12539b=_0x1a85[_0x31ddea];return _0x12539b;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x51a8('0x0'));var BPromise=require(_0x51a8('0x1'));var rs=require(_0x51a8('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x51a8('0x3'));var logger=require(_0x51a8('0x4'))(_0x51a8('0x5'));var config=require('../../config/environment');var jayson=require(_0x51a8('0x6'));var client=jayson['client'][_0x51a8('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x5cf430,_0x331117,_0x16a21e){return new BPromise(function(_0x4f3919,_0x228c64){return client['request'](_0x5cf430,_0x16a21e)['then'](function(_0x39e06a){logger[_0x51a8('0x8')](_0x51a8('0x9'),_0x331117,_0x51a8('0xa'));logger[_0x51a8('0xb')](_0x51a8('0xc'),_0x331117,_0x51a8('0xa'),JSON[_0x51a8('0xd')](_0x39e06a));if(_0x39e06a[_0x51a8('0xe')]){if(_0x39e06a[_0x51a8('0xe')][_0x51a8('0xf')]===0x1f4){logger[_0x51a8('0xe')](_0x51a8('0x9'),_0x331117,_0x39e06a[_0x51a8('0xe')][_0x51a8('0x10')]);return _0x228c64(_0x39e06a[_0x51a8('0xe')][_0x51a8('0x10')]);}logger['error'](_0x51a8('0x9'),_0x331117,_0x39e06a[_0x51a8('0xe')][_0x51a8('0x10')]);return _0x4f3919(_0x39e06a['error'][_0x51a8('0x10')]);}else{logger['info'](_0x51a8('0x9'),_0x331117,_0x51a8('0xa'));_0x4f3919(_0x39e06a[_0x51a8('0x11')][_0x51a8('0x10')]);}})[_0x51a8('0x12')](function(_0x3e0603){logger[_0x51a8('0xe')]('VoiceRecording,\x20%s,\x20%s',_0x331117,_0x3e0603);_0x228c64(_0x3e0603);});});}exports[_0x51a8('0x13')]=function(_0x45a433){var _0xd52230=this;return new Promise(function(_0x23539e,_0x3bc1a2){return db[_0x51a8('0x14')]['update'](_0x45a433[_0x51a8('0x15')],{'raw':_0x45a433[_0x51a8('0x16')]?_0x45a433[_0x51a8('0x16')][_0x51a8('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x45a433[_0x51a8('0x16')]?_0x45a433[_0x51a8('0x16')][_0x51a8('0x18')]||null:null,'attributes':_0x45a433[_0x51a8('0x16')]?_0x45a433['options'][_0x51a8('0x19')]||null:null,'limit':_0x45a433['options']?_0x45a433[_0x51a8('0x16')][_0x51a8('0x1a')]||null:null})[_0x51a8('0x1b')](function(_0x3759d6){logger['info'](_0x51a8('0x13'),_0x45a433);logger['debug']('UpdateVoiceRecording',_0x45a433,JSON[_0x51a8('0xd')](_0x3759d6));_0x23539e(_0x3759d6);})['catch'](function(_0x384d25){logger[_0x51a8('0xe')](_0x51a8('0x13'),_0x384d25[_0x51a8('0x10')],_0x45a433);_0x3bc1a2(_0xd52230[_0x51a8('0xe')](0x1f4,_0x384d25[_0x51a8('0x10')]));});});};exports[_0x51a8('0x1c')]=function(_0x1326a2){var _0x5b3f49=this;return new Promise(function(_0x273ce2,_0x1b7577){var _0xca5746=require(_0x51a8('0x1d'));var _0x1c150d;return db[_0x51a8('0x1e')][_0x51a8('0x1f')]({'attributes':['id',_0x51a8('0x20')],'where':{'id':0x1},'raw':!![]})[_0x51a8('0x1b')](function(_0x4b5cda){_0x1c150d=_0x4b5cda;return db[_0x51a8('0x14')][_0x51a8('0x21')](_0x1326a2['body']);})[_0x51a8('0x1b')](function(_0x58cba0){if(_0x1c150d[_0x51a8('0x20')]&&fs[_0x51a8('0x22')](_0x58cba0[_0x51a8('0x23')])){var _0x41df56=util[_0x51a8('0x24')]('%s.cypher',_0x58cba0[_0x51a8('0x23')]);return _0xca5746['encryptFile'](_0x58cba0[_0x51a8('0x23')],_0x41df56,config[_0x51a8('0x25')][_0x51a8('0x26')])['then'](function(){fs[_0x51a8('0x27')](_0x58cba0['value']);logger[_0x51a8('0x8')](_0x51a8('0x28'));return _0x58cba0;});}return _0x58cba0;})[_0x51a8('0x1b')](function(_0x224099){logger[_0x51a8('0x8')]('CreateVoiceRecording',_0x1326a2);logger[_0x51a8('0xb')]('CreateVoiceRecording',_0x1326a2,JSON[_0x51a8('0xd')](_0x224099));_0x273ce2(_0x224099);})[_0x51a8('0x12')](function(_0x41561a){logger['error'](_0x51a8('0x1c'),_0x41561a[_0x51a8('0x10')],_0x1326a2);_0x1b7577(_0x5b3f49[_0x51a8('0xe')](0x1f4,_0x41561a[_0x51a8('0x10')]));});});};
\ No newline at end of file
+var _0xe5af=['util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','jayson/promise','client','then','VoiceRecording,\x20%s,\x20%s','request\x20sent','VoiceRecording,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','UpdateVoiceRecording','VoiceRecording','update','body','raw','options','where','limit','debug','../../components/encryptor','Setting','create','existsSync','%s.cypher','value','encryptFile','secrets','recording','unlink','CreateVoiceRecording\x20file\x20encrypted','CreateVoiceRecording'];(function(_0x4b73a2,_0x40b5fe){var _0x383c66=function(_0x3917ae){while(--_0x3917ae){_0x4b73a2['push'](_0x4b73a2['shift']());}};_0x383c66(++_0x40b5fe);}(_0xe5af,0x9c));var _0xfe5a=function(_0x555cac,_0x220fc4){_0x555cac=_0x555cac-0x0;var _0x26850b=_0xe5af[_0x555cac];return _0x26850b;};'use strict';var _=require('lodash');var util=require(_0xfe5a('0x0'));var moment=require(_0xfe5a('0x1'));var BPromise=require('bluebird');var rs=require(_0xfe5a('0x2'));var fs=require('fs');var Redis=require(_0xfe5a('0x3'));var db=require(_0xfe5a('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xfe5a('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0xfe5a('0x6'));var client=jayson[_0xfe5a('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5eea2e,_0x356c69,_0x106492){return new BPromise(function(_0xfb4357,_0x3e683c){return client['request'](_0x5eea2e,_0x106492)[_0xfe5a('0x8')](function(_0x5a48ff){logger['info'](_0xfe5a('0x9'),_0x356c69,_0xfe5a('0xa'));logger['debug'](_0xfe5a('0xb'),_0x356c69,_0xfe5a('0xa'),JSON[_0xfe5a('0xc')](_0x5a48ff));if(_0x5a48ff[_0xfe5a('0xd')]){if(_0x5a48ff[_0xfe5a('0xd')]['code']===0x1f4){logger[_0xfe5a('0xd')](_0xfe5a('0x9'),_0x356c69,_0x5a48ff[_0xfe5a('0xd')][_0xfe5a('0xe')]);return _0x3e683c(_0x5a48ff[_0xfe5a('0xd')]['message']);}logger[_0xfe5a('0xd')](_0xfe5a('0x9'),_0x356c69,_0x5a48ff[_0xfe5a('0xd')][_0xfe5a('0xe')]);return _0xfb4357(_0x5a48ff[_0xfe5a('0xd')][_0xfe5a('0xe')]);}else{logger[_0xfe5a('0xf')](_0xfe5a('0x9'),_0x356c69,_0xfe5a('0xa'));_0xfb4357(_0x5a48ff[_0xfe5a('0x10')][_0xfe5a('0xe')]);}})[_0xfe5a('0x11')](function(_0x22afa7){logger[_0xfe5a('0xd')](_0xfe5a('0x9'),_0x356c69,_0x22afa7);_0x3e683c(_0x22afa7);});});}exports[_0xfe5a('0x12')]=function(_0x5bf597){var _0x20620b=this;return new Promise(function(_0x456707,_0x54d5fb){return db[_0xfe5a('0x13')][_0xfe5a('0x14')](_0x5bf597[_0xfe5a('0x15')],{'raw':_0x5bf597['options']?_0x5bf597['options'][_0xfe5a('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5bf597[_0xfe5a('0x17')]?_0x5bf597[_0xfe5a('0x17')][_0xfe5a('0x18')]||null:null,'attributes':_0x5bf597[_0xfe5a('0x17')]?_0x5bf597[_0xfe5a('0x17')]['attributes']||null:null,'limit':_0x5bf597[_0xfe5a('0x17')]?_0x5bf597['options'][_0xfe5a('0x19')]||null:null})[_0xfe5a('0x8')](function(_0x1fbde5){logger['info']('UpdateVoiceRecording',_0x5bf597);logger[_0xfe5a('0x1a')](_0xfe5a('0x12'),_0x5bf597,JSON['stringify'](_0x1fbde5));_0x456707(_0x1fbde5);})[_0xfe5a('0x11')](function(_0x26f744){logger['error'](_0xfe5a('0x12'),_0x26f744[_0xfe5a('0xe')],_0x5bf597);_0x54d5fb(_0x20620b[_0xfe5a('0xd')](0x1f4,_0x26f744[_0xfe5a('0xe')]));});});};exports['CreateVoiceRecording']=function(_0x42136e){var _0x2f5d04=this;return new Promise(function(_0x24481f,_0x1cd531){var _0x36bf20=require(_0xfe5a('0x1b'));var _0xdbf1e0;return db[_0xfe5a('0x1c')]['findOne']({'attributes':['id','callRecordingEncryption'],'where':{'id':0x1},'raw':!![]})[_0xfe5a('0x8')](function(_0x485f9d){_0xdbf1e0=_0x485f9d;return db[_0xfe5a('0x13')][_0xfe5a('0x1d')](_0x42136e[_0xfe5a('0x15')]);})['then'](function(_0x48a061){if(_0xdbf1e0['callRecordingEncryption']&&fs[_0xfe5a('0x1e')](_0x48a061['value'])){var _0x51d1f4=util['format'](_0xfe5a('0x1f'),_0x48a061[_0xfe5a('0x20')]);return _0x36bf20[_0xfe5a('0x21')](_0x48a061[_0xfe5a('0x20')],_0x51d1f4,config[_0xfe5a('0x22')][_0xfe5a('0x23')])[_0xfe5a('0x8')](function(){fs[_0xfe5a('0x24')](_0x48a061[_0xfe5a('0x20')]);logger[_0xfe5a('0xf')](_0xfe5a('0x25'));return _0x48a061;});}return _0x48a061;})['then'](function(_0x1f0c86){logger[_0xfe5a('0xf')]('CreateVoiceRecording',_0x42136e);logger[_0xfe5a('0x1a')](_0xfe5a('0x26'),_0x42136e,JSON[_0xfe5a('0xc')](_0x1f0c86));_0x24481f(_0x1f0c86);})[_0xfe5a('0x11')](function(_0xe5a992){logger['error']('CreateVoiceRecording',_0xe5a992[_0xfe5a('0xe')],_0x42136e);_0x1cd531(_0x2f5d04['error'](0x1f4,_0xe5a992[_0xfe5a('0xe')]));});});};
\ No newline at end of file
index 5137967..fb56f2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c4c=['delete','destroy','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./voiceTransferReport.controller','get','isAuthenticated','index','/describe','describe','/:id','post','put','update'];(function(_0x35c5e9,_0x30de92){var _0x258216=function(_0x1e5c2){while(--_0x1e5c2){_0x35c5e9['push'](_0x35c5e9['shift']());}};_0x258216(++_0x30de92);}(_0x5c4c,0xa3));var _0xc5c4=function(_0x4f5328,_0x3815af){_0x4f5328=_0x4f5328-0x0;var _0x1f2143=_0x5c4c[_0x4f5328];return _0x1f2143;};'use strict';var multer=require('multer');var util=require(_0xc5c4('0x0'));var path=require(_0xc5c4('0x1'));var timeout=require(_0xc5c4('0x2'));var express=require(_0xc5c4('0x3'));var router=express[_0xc5c4('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xc5c4('0x5'));var interaction=require(_0xc5c4('0x6'));var config=require('../../config/environment');var controller=require(_0xc5c4('0x7'));router[_0xc5c4('0x8')]('/',auth[_0xc5c4('0x9')](),controller[_0xc5c4('0xa')]);router[_0xc5c4('0x8')](_0xc5c4('0xb'),auth[_0xc5c4('0x9')](),controller[_0xc5c4('0xc')]);router[_0xc5c4('0x8')](_0xc5c4('0xd'),auth[_0xc5c4('0x9')](),controller['show']);router[_0xc5c4('0xe')]('/',auth[_0xc5c4('0x9')](),controller['create']);router[_0xc5c4('0xf')](_0xc5c4('0xd'),auth[_0xc5c4('0x9')](),controller[_0xc5c4('0x10')]);router[_0xc5c4('0x11')](_0xc5c4('0xd'),auth['isAuthenticated'](),controller[_0xc5c4('0x12')]);module[_0xc5c4('0x13')]=router;
\ No newline at end of file
+var _0xbfa1=['isAuthenticated','show','post','create','put','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','index','/describe','describe','/:id'];(function(_0x4cc71f,_0x55f42b){var _0xe136f4=function(_0x555a6a){while(--_0x555a6a){_0x4cc71f['push'](_0x4cc71f['shift']());}};_0xe136f4(++_0x55f42b);}(_0xbfa1,0xc5));var _0x1bfa=function(_0x447870,_0x53ea03){_0x447870=_0x447870-0x0;var _0x21fd74=_0xbfa1[_0x447870];return _0x21fd74;};'use strict';var multer=require(_0x1bfa('0x0'));var util=require(_0x1bfa('0x1'));var path=require(_0x1bfa('0x2'));var timeout=require('connect-timeout');var express=require(_0x1bfa('0x3'));var router=express[_0x1bfa('0x4')]();var fs_extra=require(_0x1bfa('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x1bfa('0x6'));var config=require(_0x1bfa('0x7'));var controller=require('./voiceTransferReport.controller');router[_0x1bfa('0x8')]('/',auth['isAuthenticated'](),controller[_0x1bfa('0x9')]);router[_0x1bfa('0x8')](_0x1bfa('0xa'),auth['isAuthenticated'](),controller[_0x1bfa('0xb')]);router['get'](_0x1bfa('0xc'),auth[_0x1bfa('0xd')](),controller[_0x1bfa('0xe')]);router[_0x1bfa('0xf')]('/',auth[_0x1bfa('0xd')](),controller[_0x1bfa('0x10')]);router[_0x1bfa('0x11')](_0x1bfa('0xc'),auth[_0x1bfa('0xd')](),controller['update']);router[_0x1bfa('0x12')](_0x1bfa('0xc'),auth[_0x1bfa('0xd')](),controller[_0x1bfa('0x13')]);module[_0x1bfa('0x14')]=router;
\ No newline at end of file
index 62a210a..15a705a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69d6=['ENUM','Yes','sequelize','moment','exports','blind','attended','STRING'];(function(_0x3a13ad,_0xa03fc4){var _0x442f3e=function(_0x1ef012){while(--_0x1ef012){_0x3a13ad['push'](_0x3a13ad['shift']());}};_0x442f3e(++_0xa03fc4);}(_0x69d6,0x1b2));var _0x669d=function(_0x192e49,_0x20c95a){_0x192e49=_0x192e49-0x0;var _0x4cf1a5=_0x69d6[_0x192e49];return _0x4cf1a5;};'use strict';var Sequelize=require(_0x669d('0x0'));var moment=require(_0x669d('0x1'));module[_0x669d('0x2')]={'type':{'type':Sequelize['ENUM'](_0x669d('0x3'),_0x669d('0x4'))},'result':{'type':Sequelize[_0x669d('0x5')]},'transfererchannel':{'type':Sequelize['STRING']},'transferercalleridnum':{'type':Sequelize[_0x669d('0x5')]},'transferercalleridname':{'type':Sequelize['STRING']},'transfererconnectedlinenum':{'type':Sequelize[_0x669d('0x5')]},'transfererconnectedlinename':{'type':Sequelize[_0x669d('0x5')]},'transfereraccountcode':{'type':Sequelize[_0x669d('0x5')]},'transferercontext':{'type':Sequelize[_0x669d('0x5')]},'transfererexten':{'type':Sequelize[_0x669d('0x5')]},'transfererlinkedid':{'type':Sequelize[_0x669d('0x5')]},'transfereechannel':{'type':Sequelize[_0x669d('0x5')]},'transfereecalleridnum':{'type':Sequelize[_0x669d('0x5')]},'transfereecalleridname':{'type':Sequelize[_0x669d('0x5')]},'transfereeconnectedlinenum':{'type':Sequelize[_0x669d('0x5')]},'transfereeconnectedlinename':{'type':Sequelize['STRING']},'transfereeaccountcode':{'type':Sequelize[_0x669d('0x5')]},'transfereecontext':{'type':Sequelize[_0x669d('0x5')]},'transfereeexten':{'type':Sequelize['STRING']},'transfereelinkedid':{'type':Sequelize['STRING']},'isexternal':{'type':Sequelize[_0x669d('0x6')](_0x669d('0x7'),'No')},'context':{'type':Sequelize[_0x669d('0x5')]},'extension':{'type':Sequelize[_0x669d('0x5')]}};
\ No newline at end of file
+var _0x3667=['exports','ENUM','blind','STRING','moment'];(function(_0x59a3f7,_0x3e7462){var _0x3c2fb2=function(_0x568e84){while(--_0x568e84){_0x59a3f7['push'](_0x59a3f7['shift']());}};_0x3c2fb2(++_0x3e7462);}(_0x3667,0xae));var _0x7366=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3667[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x7366('0x0'));module[_0x7366('0x1')]={'type':{'type':Sequelize[_0x7366('0x2')](_0x7366('0x3'),'attended')},'result':{'type':Sequelize[_0x7366('0x4')]},'transfererchannel':{'type':Sequelize[_0x7366('0x4')]},'transferercalleridnum':{'type':Sequelize[_0x7366('0x4')]},'transferercalleridname':{'type':Sequelize[_0x7366('0x4')]},'transfererconnectedlinenum':{'type':Sequelize[_0x7366('0x4')]},'transfererconnectedlinename':{'type':Sequelize[_0x7366('0x4')]},'transfereraccountcode':{'type':Sequelize[_0x7366('0x4')]},'transferercontext':{'type':Sequelize[_0x7366('0x4')]},'transfererexten':{'type':Sequelize[_0x7366('0x4')]},'transfererlinkedid':{'type':Sequelize[_0x7366('0x4')]},'transfereechannel':{'type':Sequelize['STRING']},'transfereecalleridnum':{'type':Sequelize[_0x7366('0x4')]},'transfereecalleridname':{'type':Sequelize[_0x7366('0x4')]},'transfereeconnectedlinenum':{'type':Sequelize[_0x7366('0x4')]},'transfereeconnectedlinename':{'type':Sequelize[_0x7366('0x4')]},'transfereeaccountcode':{'type':Sequelize[_0x7366('0x4')]},'transfereecontext':{'type':Sequelize[_0x7366('0x4')]},'transfereeexten':{'type':Sequelize[_0x7366('0x4')]},'transfereelinkedid':{'type':Sequelize['STRING']},'isexternal':{'type':Sequelize['ENUM']('Yes','No')},'context':{'type':Sequelize[_0x7366('0x4')]},'extension':{'type':Sequelize[_0x7366('0x4')]}};
\ No newline at end of file
index 71ad094..41374d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a6e=['util','to-csv','ejs','squel','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','status','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','VoiceTransferReport','rawAttributes','type','key','model','map','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','rows','show','params','create','body','catch','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache'];(function(_0xa1656f,_0x22f026){var _0x45a3c9=function(_0x31ffa3){while(--_0x31ffa3){_0xa1656f['push'](_0xa1656f['shift']());}};_0x45a3c9(++_0x22f026);}(_0x6a6e,0x88));var _0xe6a6=function(_0x5da730,_0x27c81c){_0x5da730=_0x5da730-0x0;var _0x459c62=_0x6a6e[_0x5da730];return _0x459c62;};'use strict';var emlformat=require(_0xe6a6('0x0'));var rimraf=require(_0xe6a6('0x1'));var zipdir=require(_0xe6a6('0x2'));var jsonpatch=require(_0xe6a6('0x3'));var rp=require(_0xe6a6('0x4'));var moment=require(_0xe6a6('0x5'));var BPromise=require(_0xe6a6('0x6'));var Mustache=require(_0xe6a6('0x7'));var util=require(_0xe6a6('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0xe6a6('0x9'));var ejs=require(_0xe6a6('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xe6a6('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xe6a6('0xc'));var toCsv=require('to-csv');var querystring=require(_0xe6a6('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xe6a6('0xe'));var qs=require(_0xe6a6('0xf'));var as=require(_0xe6a6('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe6a6('0x11'))(_0xe6a6('0x12'));var utils=require('../../config/utils');var config=require(_0xe6a6('0x13'));var licenseUtil=require(_0xe6a6('0x14'));var db=require(_0xe6a6('0x15'))['db'];function respondWithStatusCode(_0x2f04c5,_0x233050){_0x233050=_0x233050||0xcc;return function(_0x5e8e87){if(_0x5e8e87){return _0x2f04c5[_0xe6a6('0x16')](_0x233050);}return _0x2f04c5['status'](_0x233050)[_0xe6a6('0x17')]();};}function respondWithResult(_0x4bc0e7,_0x32cebc){_0x32cebc=_0x32cebc||0xc8;return function(_0x57a5f5){if(_0x57a5f5){return _0x4bc0e7['status'](_0x32cebc)[_0xe6a6('0x18')](_0x57a5f5);}};}function respondWithFilteredResult(_0x2082be,_0x2425bd){return function(_0x3573ec){if(_0x3573ec){var _0x1f74c3=typeof _0x2425bd[_0xe6a6('0x19')]===_0xe6a6('0x1a')&&typeof _0x2425bd[_0xe6a6('0x1b')]==='undefined';var _0x6170f6=_0x3573ec['count'];var _0x53883f=_0x1f74c3?0x0:_0x2425bd['offset'];var _0x5f3c78=_0x1f74c3?_0x3573ec[_0xe6a6('0x1c')]:_0x2425bd['offset']+_0x2425bd[_0xe6a6('0x1b')];var _0x56a247;if(_0x5f3c78>=_0x6170f6){_0x5f3c78=_0x6170f6;_0x56a247=0xc8;}else{_0x56a247=0xce;}_0x2082be[_0xe6a6('0x1d')](_0x56a247);return _0x2082be[_0xe6a6('0x1e')](_0xe6a6('0x1f'),_0x53883f+'-'+_0x5f3c78+'/'+_0x6170f6)[_0xe6a6('0x18')](_0x3573ec);}return null;};}function patchUpdates(_0x740896){return function(_0x539dc4){try{jsonpatch[_0xe6a6('0x20')](_0x539dc4,_0x740896,!![]);}catch(_0x292ac7){return BPromise[_0xe6a6('0x21')](_0x292ac7);}return _0x539dc4[_0xe6a6('0x22')]();};}function saveUpdates(_0x32333e,_0x22e3cd){return function(_0x51102e){if(_0x51102e){return _0x51102e[_0xe6a6('0x23')](_0x32333e)[_0xe6a6('0x24')](function(_0x2a3626){return _0x2a3626;});}return null;};}function removeEntity(_0x2518e5,_0x1de973){return function(_0x18f3be){if(_0x18f3be){return _0x18f3be[_0xe6a6('0x25')]()[_0xe6a6('0x24')](function(){_0x2518e5['status'](0xcc)[_0xe6a6('0x17')]();});}};}function handleEntityNotFound(_0x2584f9,_0x2d5e87){return function(_0x2e9b5a){if(!_0x2e9b5a){_0x2584f9[_0xe6a6('0x16')](0x194);}return _0x2e9b5a;};}function handleError(_0x4f4ad2,_0x41f66b){_0x41f66b=_0x41f66b||0x1f4;return function(_0xfffbb8){logger['error'](_0xfffbb8[_0xe6a6('0x26')]);if(_0xfffbb8[_0xe6a6('0x27')]){delete _0xfffbb8[_0xe6a6('0x27')];}_0x4f4ad2[_0xe6a6('0x1d')](_0x41f66b)[_0xe6a6('0x28')](_0xfffbb8);};}exports['index']=function(_0x481c7d,_0x3bca66){var _0x26d3a1={},_0x3f2a17={},_0x1f90e0={'count':0x0,'rows':[]};var _0x199a19=_['map'](db[_0xe6a6('0x29')][_0xe6a6('0x2a')],function(_0x35df0b){return{'name':_0x35df0b['fieldName'],'type':_0x35df0b[_0xe6a6('0x2b')][_0xe6a6('0x2c')]};});_0x3f2a17[_0xe6a6('0x2d')]=_[_0xe6a6('0x2e')](_0x199a19,_0xe6a6('0x27'));_0x3f2a17[_0xe6a6('0x2f')]=_[_0xe6a6('0x30')](_0x481c7d[_0xe6a6('0x2f')]);_0x3f2a17[_0xe6a6('0x31')]=_[_0xe6a6('0x32')](_0x3f2a17['model'],_0x3f2a17[_0xe6a6('0x2f')]);_0x26d3a1['attributes']=_[_0xe6a6('0x32')](_0x3f2a17[_0xe6a6('0x2d')],qs[_0xe6a6('0x33')](_0x481c7d[_0xe6a6('0x2f')][_0xe6a6('0x33')]));_0x26d3a1['attributes']=_0x26d3a1[_0xe6a6('0x34')][_0xe6a6('0x35')]?_0x26d3a1[_0xe6a6('0x34')]:_0x3f2a17['model'];if(!_0x481c7d[_0xe6a6('0x2f')]['hasOwnProperty'](_0xe6a6('0x36'))){_0x26d3a1[_0xe6a6('0x1b')]=qs[_0xe6a6('0x1b')](_0x481c7d['query']['limit']);_0x26d3a1['offset']=qs['offset'](_0x481c7d[_0xe6a6('0x2f')][_0xe6a6('0x19')]);}_0x26d3a1[_0xe6a6('0x37')]=qs[_0xe6a6('0x38')](_0x481c7d[_0xe6a6('0x2f')]['sort']);_0x26d3a1[_0xe6a6('0x39')]=qs[_0xe6a6('0x31')](_[_0xe6a6('0x3a')](_0x481c7d['query'],_0x3f2a17[_0xe6a6('0x31')]),_0x199a19);if(_0x481c7d['query'][_0xe6a6('0x3b')]){_0x26d3a1['where']=_[_0xe6a6('0x3c')](_0x26d3a1['where'],{'$or':_['map'](_0x199a19,function(_0x482b2c){if(_0x482b2c[_0xe6a6('0x2b')]!=='VIRTUAL'){var _0x6488b9={};_0x6488b9[_0x482b2c[_0xe6a6('0x27')]]={'$like':'%'+_0x481c7d['query'][_0xe6a6('0x3b')]+'%'};return _0x6488b9;}})});}_0x26d3a1=_['merge']({},_0x26d3a1,_0x481c7d[_0xe6a6('0x3d')]);var _0x4061ec={'where':_0x26d3a1['where']};return db[_0xe6a6('0x29')][_0xe6a6('0x1c')](_0x4061ec)['then'](function(_0x678342){_0x1f90e0[_0xe6a6('0x1c')]=_0x678342;if(_0x481c7d[_0xe6a6('0x2f')][_0xe6a6('0x3e')]){_0x26d3a1[_0xe6a6('0x3f')]=[{'all':!![]}];}return db['VoiceTransferReport']['findAll'](_0x26d3a1);})[_0xe6a6('0x24')](function(_0x595d36){_0x1f90e0[_0xe6a6('0x40')]=_0x595d36;return _0x1f90e0;})[_0xe6a6('0x24')](respondWithFilteredResult(_0x3bca66,_0x26d3a1))['catch'](handleError(_0x3bca66,null));};exports[_0xe6a6('0x41')]=function(_0x3b991b,_0x686cae){var _0xc65e26={'raw':!![],'where':{'id':_0x3b991b[_0xe6a6('0x42')]['id']}},_0x24f395={};_0x24f395['model']=_[_0xe6a6('0x30')](db[_0xe6a6('0x29')][_0xe6a6('0x2a')]);_0x24f395[_0xe6a6('0x2f')]=_['keys'](_0x3b991b[_0xe6a6('0x2f')]);_0x24f395[_0xe6a6('0x31')]=_['intersection'](_0x24f395[_0xe6a6('0x2d')],_0x24f395['query']);_0xc65e26[_0xe6a6('0x34')]=_[_0xe6a6('0x32')](_0x24f395[_0xe6a6('0x2d')],qs[_0xe6a6('0x33')](_0x3b991b['query'][_0xe6a6('0x33')]));_0xc65e26[_0xe6a6('0x34')]=_0xc65e26[_0xe6a6('0x34')]['length']?_0xc65e26[_0xe6a6('0x34')]:_0x24f395[_0xe6a6('0x2d')];if(_0x3b991b[_0xe6a6('0x2f')][_0xe6a6('0x3e')]){_0xc65e26['include']=[{'all':!![]}];}_0xc65e26=_[_0xe6a6('0x3c')]({},_0xc65e26,_0x3b991b['options']);return db['VoiceTransferReport']['find'](_0xc65e26)['then'](handleEntityNotFound(_0x686cae,null))[_0xe6a6('0x24')](respondWithResult(_0x686cae,null))['catch'](handleError(_0x686cae,null));};exports[_0xe6a6('0x43')]=function(_0x4947fc,_0x2d2662){return db[_0xe6a6('0x29')]['create'](_0x4947fc[_0xe6a6('0x44')],{})[_0xe6a6('0x24')](respondWithResult(_0x2d2662,0xc9))[_0xe6a6('0x45')](handleError(_0x2d2662,null));};exports[_0xe6a6('0x23')]=function(_0xd00cd9,_0x49c1d2){if(_0xd00cd9[_0xe6a6('0x44')]['id']){delete _0xd00cd9['body']['id'];}return db[_0xe6a6('0x29')][_0xe6a6('0x46')]({'where':{'id':_0xd00cd9[_0xe6a6('0x42')]['id']}})[_0xe6a6('0x24')](handleEntityNotFound(_0x49c1d2,null))[_0xe6a6('0x24')](saveUpdates(_0xd00cd9[_0xe6a6('0x44')],null))['then'](respondWithResult(_0x49c1d2,null))['catch'](handleError(_0x49c1d2,null));};exports[_0xe6a6('0x25')]=function(_0x231725,_0x378681){return db[_0xe6a6('0x29')][_0xe6a6('0x46')]({'where':{'id':_0x231725[_0xe6a6('0x42')]['id']}})[_0xe6a6('0x24')](handleEntityNotFound(_0x378681,null))[_0xe6a6('0x24')](removeEntity(_0x378681,null))['catch'](handleError(_0x378681,null));};exports[_0xe6a6('0x47')]=function(_0x1102cc,_0x2a71bd){return db[_0xe6a6('0x29')][_0xe6a6('0x47')]()[_0xe6a6('0x24')](respondWithResult(_0x2a71bd,null))[_0xe6a6('0x45')](handleError(_0x2a71bd,null));};
\ No newline at end of file
+var _0x86d9=['desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','end','json','undefined','count','offset','limit','set','apply','save','then','destroy','status','error','stack','name','send','index','map','VoiceTransferReport','rawAttributes','fieldName','type','model','keys','query','filters','intersection','fields','attributes','length','nolimit','sort','where','merge','VIRTUAL','filter','findAll','rows','catch','show','params','include','options','find','create','body','update','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs','lodash','squel','crypto'];(function(_0x70ef14,_0x5aaadc){var _0x33f013=function(_0x1e071f){while(--_0x1e071f){_0x70ef14['push'](_0x70ef14['shift']());}};_0x33f013(++_0x5aaadc);}(_0x86d9,0xc8));var _0x986d=function(_0x38db26,_0xf08b74){_0x38db26=_0x38db26-0x0;var _0x39c57a=_0x86d9[_0x38db26];return _0x39c57a;};'use strict';var emlformat=require(_0x986d('0x0'));var rimraf=require(_0x986d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x986d('0x2'));var rp=require(_0x986d('0x3'));var moment=require(_0x986d('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x986d('0x5'));var path=require(_0x986d('0x6'));var sox=require(_0x986d('0x7'));var csv=require(_0x986d('0x8'));var ejs=require(_0x986d('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x986d('0xa'));var squel=require(_0x986d('0xb'));var crypto=require(_0x986d('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x986d('0xd'));var toCsv=require(_0x986d('0x8'));var querystring=require(_0x986d('0xe'));var Papa=require(_0x986d('0xf'));var Redis=require('ioredis');var authService=require(_0x986d('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x986d('0x11'));var hardwareService=require(_0x986d('0x12'));var logger=require(_0x986d('0x13'))('api');var utils=require(_0x986d('0x14'));var config=require(_0x986d('0x15'));var licenseUtil=require(_0x986d('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4a66c7,_0x50fae9){_0x50fae9=_0x50fae9||0xcc;return function(_0x3240a6){if(_0x3240a6){return _0x4a66c7['sendStatus'](_0x50fae9);}return _0x4a66c7['status'](_0x50fae9)[_0x986d('0x17')]();};}function respondWithResult(_0x46a19e,_0x411d09){_0x411d09=_0x411d09||0xc8;return function(_0x207707){if(_0x207707){return _0x46a19e['status'](_0x411d09)[_0x986d('0x18')](_0x207707);}};}function respondWithFilteredResult(_0x5c3aa6,_0x3ffd2c){return function(_0x109ebe){if(_0x109ebe){var _0x285708=typeof _0x3ffd2c['offset']===_0x986d('0x19')&&typeof _0x3ffd2c['limit']===_0x986d('0x19');var _0x30b097=_0x109ebe[_0x986d('0x1a')];var _0x55d8d0=_0x285708?0x0:_0x3ffd2c['offset'];var _0x246f59=_0x285708?_0x109ebe[_0x986d('0x1a')]:_0x3ffd2c[_0x986d('0x1b')]+_0x3ffd2c[_0x986d('0x1c')];var _0x25bb2e;if(_0x246f59>=_0x30b097){_0x246f59=_0x30b097;_0x25bb2e=0xc8;}else{_0x25bb2e=0xce;}_0x5c3aa6['status'](_0x25bb2e);return _0x5c3aa6[_0x986d('0x1d')]('Content-Range',_0x55d8d0+'-'+_0x246f59+'/'+_0x30b097)[_0x986d('0x18')](_0x109ebe);}return null;};}function patchUpdates(_0x31026a){return function(_0x2daf9f){try{jsonpatch[_0x986d('0x1e')](_0x2daf9f,_0x31026a,!![]);}catch(_0x15effe){return BPromise['reject'](_0x15effe);}return _0x2daf9f[_0x986d('0x1f')]();};}function saveUpdates(_0x56f6d1,_0x333922){return function(_0x2a3710){if(_0x2a3710){return _0x2a3710['update'](_0x56f6d1)[_0x986d('0x20')](function(_0x1cc953){return _0x1cc953;});}return null;};}function removeEntity(_0x15813f,_0x46e823){return function(_0x200dc6){if(_0x200dc6){return _0x200dc6[_0x986d('0x21')]()['then'](function(){_0x15813f[_0x986d('0x22')](0xcc)['end']();});}};}function handleEntityNotFound(_0xa74568,_0x4840b0){return function(_0x4b04c6){if(!_0x4b04c6){_0xa74568['sendStatus'](0x194);}return _0x4b04c6;};}function handleError(_0x16ed23,_0x196cf6){_0x196cf6=_0x196cf6||0x1f4;return function(_0xbe4eed){logger[_0x986d('0x23')](_0xbe4eed[_0x986d('0x24')]);if(_0xbe4eed[_0x986d('0x25')]){delete _0xbe4eed['name'];}_0x16ed23[_0x986d('0x22')](_0x196cf6)[_0x986d('0x26')](_0xbe4eed);};}exports[_0x986d('0x27')]=function(_0x11286a,_0x11de08){var _0x4ab495={},_0x1baaad={},_0x5645be={'count':0x0,'rows':[]};var _0xf7f670=_[_0x986d('0x28')](db[_0x986d('0x29')][_0x986d('0x2a')],function(_0x3020ed){return{'name':_0x3020ed[_0x986d('0x2b')],'type':_0x3020ed[_0x986d('0x2c')]['key']};});_0x1baaad[_0x986d('0x2d')]=_[_0x986d('0x28')](_0xf7f670,'name');_0x1baaad['query']=_[_0x986d('0x2e')](_0x11286a[_0x986d('0x2f')]);_0x1baaad[_0x986d('0x30')]=_['intersection'](_0x1baaad[_0x986d('0x2d')],_0x1baaad[_0x986d('0x2f')]);_0x4ab495['attributes']=_[_0x986d('0x31')](_0x1baaad[_0x986d('0x2d')],qs[_0x986d('0x32')](_0x11286a[_0x986d('0x2f')][_0x986d('0x32')]));_0x4ab495[_0x986d('0x33')]=_0x4ab495[_0x986d('0x33')][_0x986d('0x34')]?_0x4ab495[_0x986d('0x33')]:_0x1baaad['model'];if(!_0x11286a[_0x986d('0x2f')]['hasOwnProperty'](_0x986d('0x35'))){_0x4ab495['limit']=qs[_0x986d('0x1c')](_0x11286a[_0x986d('0x2f')][_0x986d('0x1c')]);_0x4ab495['offset']=qs['offset'](_0x11286a[_0x986d('0x2f')]['offset']);}_0x4ab495['order']=qs[_0x986d('0x36')](_0x11286a[_0x986d('0x2f')][_0x986d('0x36')]);_0x4ab495[_0x986d('0x37')]=qs[_0x986d('0x30')](_['pick'](_0x11286a[_0x986d('0x2f')],_0x1baaad['filters']),_0xf7f670);if(_0x11286a[_0x986d('0x2f')]['filter']){_0x4ab495[_0x986d('0x37')]=_[_0x986d('0x38')](_0x4ab495['where'],{'$or':_[_0x986d('0x28')](_0xf7f670,function(_0x2a592f){if(_0x2a592f['type']!==_0x986d('0x39')){var _0x2bfa3f={};_0x2bfa3f[_0x2a592f[_0x986d('0x25')]]={'$like':'%'+_0x11286a[_0x986d('0x2f')][_0x986d('0x3a')]+'%'};return _0x2bfa3f;}})});}_0x4ab495=_[_0x986d('0x38')]({},_0x4ab495,_0x11286a['options']);var _0x4705ff={'where':_0x4ab495[_0x986d('0x37')]};return db[_0x986d('0x29')][_0x986d('0x1a')](_0x4705ff)[_0x986d('0x20')](function(_0x5f1e60){_0x5645be['count']=_0x5f1e60;if(_0x11286a[_0x986d('0x2f')]['includeAll']){_0x4ab495['include']=[{'all':!![]}];}return db[_0x986d('0x29')][_0x986d('0x3b')](_0x4ab495);})[_0x986d('0x20')](function(_0x5c945d){_0x5645be[_0x986d('0x3c')]=_0x5c945d;return _0x5645be;})[_0x986d('0x20')](respondWithFilteredResult(_0x11de08,_0x4ab495))[_0x986d('0x3d')](handleError(_0x11de08,null));};exports[_0x986d('0x3e')]=function(_0x37d460,_0x39a8d8){var _0x1a26a3={'raw':!![],'where':{'id':_0x37d460[_0x986d('0x3f')]['id']}},_0x3438e6={};_0x3438e6['model']=_[_0x986d('0x2e')](db[_0x986d('0x29')]['rawAttributes']);_0x3438e6['query']=_[_0x986d('0x2e')](_0x37d460[_0x986d('0x2f')]);_0x3438e6[_0x986d('0x30')]=_[_0x986d('0x31')](_0x3438e6[_0x986d('0x2d')],_0x3438e6[_0x986d('0x2f')]);_0x1a26a3[_0x986d('0x33')]=_[_0x986d('0x31')](_0x3438e6[_0x986d('0x2d')],qs[_0x986d('0x32')](_0x37d460['query']['fields']));_0x1a26a3[_0x986d('0x33')]=_0x1a26a3[_0x986d('0x33')][_0x986d('0x34')]?_0x1a26a3['attributes']:_0x3438e6[_0x986d('0x2d')];if(_0x37d460[_0x986d('0x2f')]['includeAll']){_0x1a26a3[_0x986d('0x40')]=[{'all':!![]}];}_0x1a26a3=_[_0x986d('0x38')]({},_0x1a26a3,_0x37d460[_0x986d('0x41')]);return db[_0x986d('0x29')][_0x986d('0x42')](_0x1a26a3)['then'](handleEntityNotFound(_0x39a8d8,null))[_0x986d('0x20')](respondWithResult(_0x39a8d8,null))['catch'](handleError(_0x39a8d8,null));};exports[_0x986d('0x43')]=function(_0x494252,_0x26dd07){return db[_0x986d('0x29')]['create'](_0x494252[_0x986d('0x44')],{})[_0x986d('0x20')](respondWithResult(_0x26dd07,0xc9))[_0x986d('0x3d')](handleError(_0x26dd07,null));};exports[_0x986d('0x45')]=function(_0x4c14d7,_0x1cbc1e){if(_0x4c14d7[_0x986d('0x44')]['id']){delete _0x4c14d7[_0x986d('0x44')]['id'];}return db['VoiceTransferReport']['find']({'where':{'id':_0x4c14d7[_0x986d('0x3f')]['id']}})['then'](handleEntityNotFound(_0x1cbc1e,null))[_0x986d('0x20')](saveUpdates(_0x4c14d7[_0x986d('0x44')],null))[_0x986d('0x20')](respondWithResult(_0x1cbc1e,null))[_0x986d('0x3d')](handleError(_0x1cbc1e,null));};exports[_0x986d('0x21')]=function(_0x1d19c9,_0x263164){return db[_0x986d('0x29')]['find']({'where':{'id':_0x1d19c9[_0x986d('0x3f')]['id']}})[_0x986d('0x20')](handleEntityNotFound(_0x263164,null))[_0x986d('0x20')](removeEntity(_0x263164,null))['catch'](handleError(_0x263164,null));};exports[_0x986d('0x46')]=function(_0x10f695,_0x17be3c){return db['VoiceTransferReport']['describe']()[_0x986d('0x20')](respondWithResult(_0x17be3c,null))['catch'](handleError(_0x17be3c,null));};
\ No newline at end of file
index 56348ba..0fd373b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x016c=['rimraf','../../config/environment','./voiceTransferReport.attributes','exports','define','VoiceTransferReport','report_call_transfer','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x5352aa,_0x13fbee){var _0x19b8ad=function(_0x482514){while(--_0x482514){_0x5352aa['push'](_0x5352aa['shift']());}};_0x19b8ad(++_0x13fbee);}(_0x016c,0x8b));var _0xc016=function(_0x4599bc,_0x4fdcb5){_0x4599bc=_0x4599bc-0x0;var _0x378745=_0x016c[_0x4599bc];return _0x378745;};'use strict';var _=require('lodash');var util=require(_0xc016('0x0'));var logger=require(_0xc016('0x1'))('api');var moment=require(_0xc016('0x2'));var BPromise=require(_0xc016('0x3'));var rp=require(_0xc016('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc016('0x5'));var config=require(_0xc016('0x6'));var attributes=require(_0xc016('0x7'));module[_0xc016('0x8')]=function(_0x57f730,_0x4a7642){return _0x57f730[_0xc016('0x9')](_0xc016('0xa'),attributes,{'tableName':_0xc016('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3b33=['define','VoiceTransferReport','report_call_transfer','util','../../config/logger','api','moment','request-promise','rimraf','../../config/environment'];(function(_0x407461,_0x1cf61c){var _0x2b3ffa=function(_0x2acb31){while(--_0x2acb31){_0x407461['push'](_0x407461['shift']());}};_0x2b3ffa(++_0x1cf61c);}(_0x3b33,0x1c5));var _0x33b3=function(_0x33cc1a,_0x47052c){_0x33cc1a=_0x33cc1a-0x0;var _0x59c536=_0x3b33[_0x33cc1a];return _0x59c536;};'use strict';var _=require('lodash');var util=require(_0x33b3('0x0'));var logger=require(_0x33b3('0x1'))(_0x33b3('0x2'));var moment=require(_0x33b3('0x3'));var BPromise=require('bluebird');var rp=require(_0x33b3('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x33b3('0x5'));var config=require(_0x33b3('0x6'));var attributes=require('./voiceTransferReport.attributes');module['exports']=function(_0x5caf0b,_0x4070bd){return _0x5caf0b[_0x33b3('0x7')](_0x33b3('0x8'),attributes,{'tableName':_0x33b3('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index de30ee2..640c7c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc150=['VoiceTransferReport,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','VoiceTransferReport','body','options','raw','CreateVoiceTransferReport','debug','stringify','lodash','util','moment','randomstring','ioredis','rpc','jayson/promise','client','request','then','VoiceTransferReport,\x20%s,\x20%s','request\x20sent'];(function(_0x21fca0,_0x5e3b8f){var _0x58c78a=function(_0x249b82){while(--_0x249b82){_0x21fca0['push'](_0x21fca0['shift']());}};_0x58c78a(++_0x5e3b8f);}(_0xc150,0xaa));var _0x0c15=function(_0x2bc462,_0xc4f984){_0x2bc462=_0x2bc462-0x0;var _0x541d74=_0xc150[_0x2bc462];return _0x541d74;};'use strict';var _=require(_0x0c15('0x0'));var util=require(_0x0c15('0x1'));var moment=require(_0x0c15('0x2'));var BPromise=require('bluebird');var rs=require(_0x0c15('0x3'));var fs=require('fs');var Redis=require(_0x0c15('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x0c15('0x5'));var config=require('../../config/environment');var jayson=require(_0x0c15('0x6'));var client=jayson[_0x0c15('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1867f1,_0x52d8e1,_0x4b7fd2){return new BPromise(function(_0x19e551,_0x59f586){return client[_0x0c15('0x8')](_0x1867f1,_0x4b7fd2)[_0x0c15('0x9')](function(_0x1b523b){logger['info'](_0x0c15('0xa'),_0x52d8e1,_0x0c15('0xb'));logger['debug'](_0x0c15('0xc'),_0x52d8e1,'request\x20sent',JSON['stringify'](_0x1b523b));if(_0x1b523b['error']){if(_0x1b523b[_0x0c15('0xd')][_0x0c15('0xe')]===0x1f4){logger['error']('VoiceTransferReport,\x20%s,\x20%s',_0x52d8e1,_0x1b523b[_0x0c15('0xd')][_0x0c15('0xf')]);return _0x59f586(_0x1b523b[_0x0c15('0xd')]['message']);}logger[_0x0c15('0xd')](_0x0c15('0xa'),_0x52d8e1,_0x1b523b[_0x0c15('0xd')][_0x0c15('0xf')]);return _0x19e551(_0x1b523b[_0x0c15('0xd')][_0x0c15('0xf')]);}else{logger[_0x0c15('0x10')]('VoiceTransferReport,\x20%s,\x20%s',_0x52d8e1,_0x0c15('0xb'));_0x19e551(_0x1b523b[_0x0c15('0x11')]['message']);}})[_0x0c15('0x12')](function(_0x36f479){logger['error'](_0x0c15('0xa'),_0x52d8e1,_0x36f479);_0x59f586(_0x36f479);});});}exports['CreateVoiceTransferReport']=function(_0x3d5ca0){var _0x37ee2f=this;return new Promise(function(_0x35cc3f,_0x1ee56f){return db[_0x0c15('0x13')]['create'](_0x3d5ca0[_0x0c15('0x14')],{'raw':_0x3d5ca0['options']?_0x3d5ca0[_0x0c15('0x15')][_0x0c15('0x16')]===undefined?!![]:![]:!![]})[_0x0c15('0x9')](function(_0x367a97){logger['info'](_0x0c15('0x17'),_0x3d5ca0);logger[_0x0c15('0x18')]('CreateVoiceTransferReport',_0x3d5ca0,JSON[_0x0c15('0x19')](_0x367a97));_0x35cc3f(_0x367a97);})[_0x0c15('0x12')](function(_0x4c03d6){logger[_0x0c15('0xd')](_0x0c15('0x17'),_0x4c03d6[_0x0c15('0xf')],_0x3d5ca0);_0x1ee56f(_0x37ee2f['error'](0x1f4,_0x4c03d6[_0x0c15('0xf')]));});});};
\ No newline at end of file
+var _0xcba8=['request\x20sent','debug','VoiceTransferReport,\x20%s,\x20%s,\x20%s','error','message','result','catch','CreateVoiceTransferReport','VoiceTransferReport','create','body','options','stringify','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VoiceTransferReport,\x20%s,\x20%s'];(function(_0xa10366,_0x221663){var _0x20df6f=function(_0x5d8808){while(--_0x5d8808){_0xa10366['push'](_0xa10366['shift']());}};_0x20df6f(++_0x221663);}(_0xcba8,0x169));var _0x8cba=function(_0x197f55,_0x48dec5){_0x197f55=_0x197f55-0x0;var _0x468d60=_0xcba8[_0x197f55];return _0x468d60;};'use strict';var _=require('lodash');var util=require(_0x8cba('0x0'));var moment=require(_0x8cba('0x1'));var BPromise=require(_0x8cba('0x2'));var rs=require(_0x8cba('0x3'));var fs=require('fs');var Redis=require(_0x8cba('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x8cba('0x5'));var logger=require(_0x8cba('0x6'))(_0x8cba('0x7'));var config=require(_0x8cba('0x8'));var jayson=require(_0x8cba('0x9'));var client=jayson[_0x8cba('0xa')][_0x8cba('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x622b9,_0x285393,_0x124873){return new BPromise(function(_0x41f201,_0x50154f){return client[_0x8cba('0xc')](_0x622b9,_0x124873)[_0x8cba('0xd')](function(_0x53a9ac){logger[_0x8cba('0xe')](_0x8cba('0xf'),_0x285393,_0x8cba('0x10'));logger[_0x8cba('0x11')](_0x8cba('0x12'),_0x285393,'request\x20sent',JSON['stringify'](_0x53a9ac));if(_0x53a9ac[_0x8cba('0x13')]){if(_0x53a9ac['error']['code']===0x1f4){logger[_0x8cba('0x13')]('VoiceTransferReport,\x20%s,\x20%s',_0x285393,_0x53a9ac[_0x8cba('0x13')][_0x8cba('0x14')]);return _0x50154f(_0x53a9ac['error'][_0x8cba('0x14')]);}logger[_0x8cba('0x13')](_0x8cba('0xf'),_0x285393,_0x53a9ac[_0x8cba('0x13')][_0x8cba('0x14')]);return _0x41f201(_0x53a9ac[_0x8cba('0x13')][_0x8cba('0x14')]);}else{logger[_0x8cba('0xe')](_0x8cba('0xf'),_0x285393,_0x8cba('0x10'));_0x41f201(_0x53a9ac[_0x8cba('0x15')][_0x8cba('0x14')]);}})[_0x8cba('0x16')](function(_0x438b2e){logger[_0x8cba('0x13')](_0x8cba('0xf'),_0x285393,_0x438b2e);_0x50154f(_0x438b2e);});});}exports[_0x8cba('0x17')]=function(_0x159574){var _0x3350c1=this;return new Promise(function(_0x273e65,_0x23bd50){return db[_0x8cba('0x18')][_0x8cba('0x19')](_0x159574[_0x8cba('0x1a')],{'raw':_0x159574[_0x8cba('0x1b')]?_0x159574[_0x8cba('0x1b')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0xcc39be){logger[_0x8cba('0xe')](_0x8cba('0x17'),_0x159574);logger[_0x8cba('0x11')]('CreateVoiceTransferReport',_0x159574,JSON[_0x8cba('0x1c')](_0xcc39be));_0x273e65(_0xcc39be);})[_0x8cba('0x16')](function(_0x3c67ca){logger['error'](_0x8cba('0x17'),_0x3c67ca[_0x8cba('0x14')],_0x159574);_0x23bd50(_0x3350c1[_0x8cba('0x13')](0x1f4,_0x3c67ca['message']));});});};
\ No newline at end of file
index 86b3544..57d778e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4eb=['/hangup','isAuthenticated','isWebrtcLicence','hangup','/hold','hold','/unhold','unhold','/calls','calls','transfer','exports','express','/originate','originate','post'];(function(_0x28c245,_0x22d0eb){var _0x4774d2=function(_0x8ddc5b){while(--_0x8ddc5b){_0x28c245['push'](_0x28c245['shift']());}};_0x4774d2(++_0x22d0eb);}(_0xf4eb,0xec));var _0xbf4e=function(_0x209ed4,_0x12abb2){_0x209ed4=_0x209ed4-0x0;var _0x146a02=_0xf4eb[_0x209ed4];return _0x146a02;};'use strict';var express=require(_0xbf4e('0x0'));var router=express['Router']();var auth=require('../../components/auth/service');var controller=require('./webbar.controller');router['post'](_0xbf4e('0x1'),auth['isAuthenticated'](),auth['isWebrtcLicence'](),controller[_0xbf4e('0x2')]);router[_0xbf4e('0x3')](_0xbf4e('0x4'),auth[_0xbf4e('0x5')](),auth[_0xbf4e('0x6')](),controller[_0xbf4e('0x7')]);router[_0xbf4e('0x3')]('/answer',auth[_0xbf4e('0x5')](),auth['isWebrtcLicence'](),controller['answer']);router[_0xbf4e('0x3')](_0xbf4e('0x8'),auth[_0xbf4e('0x5')](),auth[_0xbf4e('0x6')](),controller[_0xbf4e('0x9')]);router[_0xbf4e('0x3')](_0xbf4e('0xa'),auth['isAuthenticated'](),auth['isWebrtcLicence'](),controller[_0xbf4e('0xb')]);router['post'](_0xbf4e('0xc'),auth[_0xbf4e('0x5')](),auth['isWebrtcLicence'](),controller[_0xbf4e('0xd')]);router['post']('/transfer',auth[_0xbf4e('0x5')](),auth[_0xbf4e('0x6')](),controller[_0xbf4e('0xe')]);module[_0xbf4e('0xf')]=router;
\ No newline at end of file
+var _0xf3cd=['/unhold','unhold','/calls','calls','/transfer','transfer','exports','express','Router','../../components/auth/service','./webbar.controller','post','/originate','isWebrtcLicence','originate','isAuthenticated','hangup','/answer','answer'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x1e5b8b,_0x4937be){_0x1e5b8b=_0x1e5b8b-0x0;var _0x59393f=_0xf3cd[_0x1e5b8b];return _0x59393f;};'use strict';var express=require(_0xdf3c('0x0'));var router=express[_0xdf3c('0x1')]();var auth=require(_0xdf3c('0x2'));var controller=require(_0xdf3c('0x3'));router[_0xdf3c('0x4')](_0xdf3c('0x5'),auth['isAuthenticated'](),auth[_0xdf3c('0x6')](),controller[_0xdf3c('0x7')]);router[_0xdf3c('0x4')]('/hangup',auth[_0xdf3c('0x8')](),auth[_0xdf3c('0x6')](),controller[_0xdf3c('0x9')]);router[_0xdf3c('0x4')](_0xdf3c('0xa'),auth[_0xdf3c('0x8')](),auth['isWebrtcLicence'](),controller[_0xdf3c('0xb')]);router['post']('/hold',auth[_0xdf3c('0x8')](),auth[_0xdf3c('0x6')](),controller['hold']);router[_0xdf3c('0x4')](_0xdf3c('0xc'),auth[_0xdf3c('0x8')](),auth[_0xdf3c('0x6')](),controller[_0xdf3c('0xd')]);router[_0xdf3c('0x4')](_0xdf3c('0xe'),auth[_0xdf3c('0x8')](),auth['isWebrtcLicence'](),controller[_0xdf3c('0xf')]);router[_0xdf3c('0x4')](_0xdf3c('0x10'),auth[_0xdf3c('0x8')](),auth['isWebrtcLicence'](),controller[_0xdf3c('0x11')]);module[_0xdf3c('0x12')]=router;
\ No newline at end of file
index 84fed2e..26be631 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6921=['string','sessionId\x20is\x20required','transferNumber\x20is\x20required','stringify','emit','handleError:','error','name','status','send','NotFound','request','then','code','result','User','findOne','agent','all','rows','UserId','sessionId','length','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','body','json','userId','callNumber','callerId','callbackUrl','info','entityFound:','format','webbar:originate','originate\x20executed!','catch','hangup','hangup\x20fired:','user:%s','webbar:hangup','hangup\x20executed!','answer','answer\x20fired:','webbar:answer','answer\x20executed!','hold','hold\x20fired:','unhold','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls','calls\x20fired:','VoiceChannels','filter','conference','webbar:conference','conference\x20executed!','transfer','transfer\x20fired:','transferNumber','transfer\x20executed!','lodash','../../config/environment','bluebird','jayson/promise','http','webbarapi','ioredis','redis','defaults','localhost','socket.io-emitter','validate','number','userId\x20is\x20required','callNumber\x20is\x20required'];(function(_0x1e2721,_0x4141ca){var _0x52dddb=function(_0x483455){while(--_0x483455){_0x1e2721['push'](_0x1e2721['shift']());}};_0x52dddb(++_0x4141ca);}(_0x6921,0x1d1));var _0x1692=function(_0x11b04f,_0x129fbd){_0x11b04f=_0x11b04f-0x0;var _0x43ac42=_0x6921[_0x11b04f];return _0x43ac42;};'use strict';var path=require('path');var fs=require('fs');var _=require(_0x1692('0x0'));var db=require('../../mysqldb')['db'];var config=require(_0x1692('0x1'));var util=require('util');var BPromise=require(_0x1692('0x2'));var jayson=require(_0x1692('0x3'));var amiClient=jayson['client'][_0x1692('0x4')]({'port':0x232a});var logger=require('../../config/logger')(_0x1692('0x5'));var Redis=require(_0x1692('0x6'));config[_0x1692('0x7')]=_[_0x1692('0x8')](config[_0x1692('0x7')],{'host':_0x1692('0x9'),'port':0x18eb});var io=require(_0x1692('0xa'))(new Redis(config[_0x1692('0x7')]));var Schema=require(_0x1692('0xb'));var originateValidation=new Schema({'userId':{'type':_0x1692('0xc'),'required':[!![],_0x1692('0xd')]},'callNumber':{'type':'string','required':[!![],_0x1692('0xe')]},'callerId':{'type':'string'},'callbackUrl':{'type':_0x1692('0xf')}});var hangupValidation=new Schema({'userId':{'type':_0x1692('0xc'),'required':[!![],_0x1692('0xd')]},'sessionId':{'type':_0x1692('0xf'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0x1692('0xc'),'required':[!![],_0x1692('0xd')]},'sessionId':{'type':'string','required':![]}});var transferValidation=new Schema({'userId':{'type':_0x1692('0xc'),'required':[!![],_0x1692('0xd')]},'sessionId':{'type':_0x1692('0xf'),'required':[!![],_0x1692('0x10')]},'transferNumber':{'type':_0x1692('0xf'),'required':[!![],_0x1692('0x11')]}});var holdValidation=new Schema({'userId':{'type':'number','required':[!![],_0x1692('0xd')]},'sessionId':{'type':_0x1692('0xf'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x1692('0xc'),'required':[!![],_0x1692('0xd')]},'sessionId':{'type':_0x1692('0xf'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x1692('0xc'),'required':[!![],_0x1692('0xd')]}});var conferenceValidation=new Schema({'userId':{'type':_0x1692('0xc'),'required':[!![],'userId\x20is\x20required']}});function emit(_0x12989e,_0x4990b1,_0x450509){logger['info'](_0x12989e,_0x4990b1,JSON[_0x1692('0x12')](_0x450509));io['to'](_0x12989e)[_0x1692('0x13')](_0x4990b1,_0x450509);}function handleError(_0x188026){return function(_0x4ea36d){console['log'](_0x1692('0x14'),_0x4ea36d,_0x4ea36d instanceof RangeError);logger[_0x1692('0x15')](_0x4ea36d['stack']);if(_0x4ea36d instanceof RangeError){if(_0x4ea36d[_0x1692('0x16')]){delete _0x4ea36d['name'];}_0x188026[_0x1692('0x17')](0x194)['send'](_0x4ea36d);}else{if(_0x4ea36d['name']){delete _0x4ea36d[_0x1692('0x16')];}_0x188026['status'](0x1f4)[_0x1692('0x18')](_0x4ea36d);}};}function checkError(){return function(_0x3c4d2f){if(!_0x3c4d2f){throw new RangeError(_0x1692('0x19'));}return _0x3c4d2f;};}function respondWithRpcPromise(_0x4c24c1,_0x234073){return new BPromise(function(_0x1d156a,_0x477e9d){var _0x1bc519=amiClient;return _0x1bc519[_0x1692('0x1a')](_0x4c24c1,_0x234073)[_0x1692('0x1b')](function(_0x4146af){if(_0x4146af['error']){if(_0x4146af[_0x1692('0x15')][_0x1692('0x1c')]===0x1f4){return _0x477e9d(_0x4146af['error']['message']);}return _0x1d156a(_0x4146af['error']['message']);}else{_0x1d156a(_0x4146af[_0x1692('0x1d')]);}})['catch'](function(_0x1a6a71){_0x477e9d(_0x1a6a71);});});}function getAgent(_0xf78abe){return db[_0x1692('0x1e')][_0x1692('0x1f')]({'where':{'id':_0xf78abe,'role':_0x1692('0x20')}})[_0x1692('0x1b')](checkError());}function getAgentCheckSession(_0x5a355b,_0x1a6708){return new BPromise(function(_0x1a4e1c,_0x429687){var _0x46fec4=respondWithRpcPromise('VoiceChannels');var _0x5364cd=getAgent(_0x5a355b);Promise[_0x1692('0x21')]([_0x46fec4,_0x5364cd])[_0x1692('0x1b')](function(_0x3d0d78){var _0x32b5c4=_0x3d0d78[0x0];var _0x4a2dba=_0x3d0d78[0x1];var _0x5341c8=_['filter'](_0x32b5c4[_0x1692('0x22')],function(_0x274dba){return _0x274dba[_0x1692('0x23')]==_0x4a2dba['id']&&_0x274dba[_0x1692('0x24')]==_0x1a6708;});if(_0x5341c8[_0x1692('0x25')]==0x1){_0x1a4e1c(_0x4a2dba);}else{_0x429687(new RangeError(_0x1692('0x26')+_0x1a6708+_0x1692('0x27')));}});});}exports[_0x1692('0x28')]=function(_0x5eb05b,_0x170884){logger['info'](_0x1692('0x29'),_0x5eb05b[_0x1692('0x2a')]);var _0x30bd6d=originateValidation[_0x1692('0xb')](_0x5eb05b['body']);if(_0x30bd6d[_0x1692('0x25')]>0x0){return _0x170884[_0x1692('0x17')](0x190)[_0x1692('0x2b')](_0x30bd6d);}var _0x2cc16f=_0x5eb05b[_0x1692('0x2a')][_0x1692('0x2c')];var _0x5d466e=_0x5eb05b[_0x1692('0x2a')][_0x1692('0x2d')];var _0x2fef78=_0x5eb05b[_0x1692('0x2a')][_0x1692('0x2e')];var _0x1dc18e=_0x5eb05b[_0x1692('0x2a')][_0x1692('0x2f')];return getAgent(_0x2cc16f)[_0x1692('0x1b')](function(_0x3fc4d0){logger[_0x1692('0x30')](_0x1692('0x31'),_0x3fc4d0[_0x1692('0x16')]);emit(util[_0x1692('0x32')]('user:%s',_0x3fc4d0[_0x1692('0x16')]),_0x1692('0x33'),{'callNumber':_0x5d466e,'callerId':_0x2fef78,'callbackUrl':_0x1dc18e});return _0x170884[_0x1692('0x17')](0xc8)['json']({'error':![],'message':_0x1692('0x34')});})[_0x1692('0x35')](handleError(_0x170884));};exports[_0x1692('0x36')]=function(_0x4f0116,_0x5260c6){logger['info'](_0x1692('0x37'),_0x4f0116[_0x1692('0x2a')]);var _0x1c8a42=hangupValidation[_0x1692('0xb')](_0x4f0116[_0x1692('0x2a')]);if(_0x1c8a42[_0x1692('0x25')]>0x0){return _0x5260c6[_0x1692('0x17')](0x190)[_0x1692('0x2b')](_0x1c8a42);}var _0x168ba7=_0x4f0116[_0x1692('0x2a')][_0x1692('0x2c')];var _0x1f113c=_0x4f0116['body'][_0x1692('0x24')];return getAgent(_0x168ba7)[_0x1692('0x1b')](function(_0xdb4303){logger['info'](_0x1692('0x31'),_0xdb4303[_0x1692('0x16')]);emit(util['format'](_0x1692('0x38'),_0xdb4303[_0x1692('0x16')]),_0x1692('0x39'),{'sessionId':_0x1f113c});return _0x5260c6['status'](0xc8)[_0x1692('0x2b')]({'error':![],'message':_0x1692('0x3a')});})[_0x1692('0x35')](handleError(_0x5260c6));};exports[_0x1692('0x3b')]=function(_0x193b6b,_0x2743c4){logger[_0x1692('0x30')](_0x1692('0x3c'),_0x193b6b[_0x1692('0x2a')]);var _0x45eec0=answerValidation[_0x1692('0xb')](_0x193b6b[_0x1692('0x2a')]);if(_0x45eec0[_0x1692('0x25')]>0x0){return _0x2743c4[_0x1692('0x17')](0x190)[_0x1692('0x2b')](_0x45eec0);}var _0x17c965=_0x193b6b[_0x1692('0x2a')][_0x1692('0x2c')];var _0x125396=_0x193b6b[_0x1692('0x2a')][_0x1692('0x24')];return getAgent(_0x17c965)[_0x1692('0x1b')](function(_0x3e40b3){logger['info'](_0x1692('0x31'),_0x3e40b3['name']);emit(util[_0x1692('0x32')](_0x1692('0x38'),_0x3e40b3[_0x1692('0x16')]),_0x1692('0x3d'),{'sessionId':_0x125396});return _0x2743c4['status'](0xc8)[_0x1692('0x2b')]({'error':![],'message':_0x1692('0x3e')});})[_0x1692('0x35')](handleError(_0x2743c4));};exports[_0x1692('0x3f')]=function(_0x3046f6,_0x41a1b4){logger[_0x1692('0x30')](_0x1692('0x40'),_0x3046f6[_0x1692('0x2a')]);var _0x6224a7=holdValidation['validate'](_0x3046f6['body']);if(_0x6224a7[_0x1692('0x25')]>0x0){return _0x41a1b4[_0x1692('0x17')](0x190)[_0x1692('0x2b')](_0x6224a7);}var _0x2521c5=_0x3046f6[_0x1692('0x2a')][_0x1692('0x2c')];var _0x4cb62b=_0x3046f6['body']['sessionId'];return getAgent(_0x2521c5)[_0x1692('0x1b')](function(_0xffbb6){logger[_0x1692('0x30')](_0x1692('0x31'),_0xffbb6[_0x1692('0x16')]);emit(util['format']('user:%s',_0xffbb6[_0x1692('0x16')]),'webbar:hold',{'sessionId':_0x4cb62b});return _0x41a1b4[_0x1692('0x17')](0xc8)[_0x1692('0x2b')]({'error':![],'message':'hold\x20executed!'});})[_0x1692('0x35')](handleError(_0x41a1b4));};exports[_0x1692('0x41')]=function(_0x302daa,_0x73e1b5){logger[_0x1692('0x30')](_0x1692('0x42'),_0x302daa[_0x1692('0x2a')]);var _0x243882=unholdValidation[_0x1692('0xb')](_0x302daa[_0x1692('0x2a')]);if(_0x243882[_0x1692('0x25')]>0x0){return _0x73e1b5[_0x1692('0x17')](0x190)['json'](_0x243882);}var _0x2bbddf=_0x302daa[_0x1692('0x2a')][_0x1692('0x2c')];var _0xa81da9=_0x302daa[_0x1692('0x2a')][_0x1692('0x24')];return getAgent(_0x2bbddf)['then'](function(_0x56ac1b){logger[_0x1692('0x30')](_0x1692('0x31'),_0x56ac1b['name']);emit(util[_0x1692('0x32')](_0x1692('0x38'),_0x56ac1b['name']),_0x1692('0x43'),{'sessionId':_0xa81da9});return _0x73e1b5[_0x1692('0x17')](0xc8)[_0x1692('0x2b')]({'error':![],'message':_0x1692('0x44')});})['catch'](handleError(_0x73e1b5));};exports[_0x1692('0x45')]=function(_0xf08614,_0x35771e){logger[_0x1692('0x30')](_0x1692('0x46'),_0x35771e[_0x1692('0x2a')]);var _0x4eec6a=callsValidation[_0x1692('0xb')](_0xf08614[_0x1692('0x2a')]);if(_0x4eec6a['length']>0x0){return _0x35771e[_0x1692('0x17')](0x190)['json'](_0x4eec6a);}var _0x13a73f=_0xf08614[_0x1692('0x2a')][_0x1692('0x2c')];var _0x5cd581=respondWithRpcPromise(_0x1692('0x47'));var _0x332952=getAgent(_0x13a73f);return Promise[_0x1692('0x21')]([_0x5cd581,_0x332952])[_0x1692('0x1b')](function(_0x59a9dd){var _0xae2489=_0x59a9dd[0x0];var _0x4b82db=_0x59a9dd[0x1];var _0xd1e4c1=_[_0x1692('0x48')](_0xae2489['rows'],function(_0x5b3013){return _0x5b3013[_0x1692('0x23')]==_0x4b82db['id'];});return _0x35771e[_0x1692('0x17')](0xc8)[_0x1692('0x2b')]({'count':_0xd1e4c1['length'],'rows':_0xd1e4c1});})[_0x1692('0x35')](handleError(_0x35771e));};exports[_0x1692('0x49')]=function(_0x5ac42f,_0x21ff8e){logger[_0x1692('0x30')]('conference\x20fired:',_0x5ac42f[_0x1692('0x2a')]);var _0x519c3a=conferenceValidation[_0x1692('0xb')](_0x5ac42f[_0x1692('0x2a')]);if(_0x519c3a[_0x1692('0x25')]>0x0){return _0x21ff8e[_0x1692('0x17')](0x190)[_0x1692('0x2b')](_0x519c3a);}var _0x15d5ee=_0x5ac42f[_0x1692('0x2a')][_0x1692('0x2c')];return getAgent(_0x15d5ee)[_0x1692('0x1b')](function(_0x4976ac){logger['info']('entityFound:',_0x4976ac['name']);emit(util[_0x1692('0x32')](_0x1692('0x38'),_0x4976ac[_0x1692('0x16')]),_0x1692('0x4a'));return _0x21ff8e['status'](0xc8)['json']({'error':![],'message':_0x1692('0x4b')});})[_0x1692('0x35')](handleError(_0x21ff8e));};exports[_0x1692('0x4c')]=function(_0x333158,_0x183ad){logger[_0x1692('0x30')](_0x1692('0x4d'),_0x333158['body']);var _0xd5cc0c=transferValidation['validate'](_0x333158[_0x1692('0x2a')]);if(_0xd5cc0c[_0x1692('0x25')]>0x0){return _0x183ad[_0x1692('0x17')](0x190)['json'](_0xd5cc0c);}var _0x4ce7d3=_0x333158['body'][_0x1692('0x2c')];var _0x4603ca=_0x333158[_0x1692('0x2a')]['sessionId'];var _0x3a4b0a=_0x333158[_0x1692('0x2a')][_0x1692('0x4e')];return getAgent(_0x4ce7d3)[_0x1692('0x1b')](function(_0x36dd89){logger[_0x1692('0x30')](_0x1692('0x31'),_0x36dd89[_0x1692('0x16')]);emit(util[_0x1692('0x32')](_0x1692('0x38'),_0x36dd89[_0x1692('0x16')]),'webbar:transfer',{'sessionId':_0x4603ca,'transferNumber':_0x3a4b0a});return _0x183ad[_0x1692('0x17')](0xc8)[_0x1692('0x2b')]({'error':![],'message':_0x1692('0x4f')});})[_0x1692('0x35')](handleError(_0x183ad));};
\ No newline at end of file
+var _0xd58c=['hangup\x20fired:','length','webbar:hangup','answer','entityFound:','webbar:answer','answer\x20executed!','hold','hold\x20fired:','webbar:hold','hold\x20executed!','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls','calls\x20fired:','VoiceChannels','all','filter','conference','conference\x20fired:','webbar:conference','conference\x20executed!','transfer','transfer\x20fired:','transferNumber','webbar:transfer','transfer\x20executed!','path','lodash','../../mysqldb','util','jayson/promise','http','../../config/logger','webbarapi','ioredis','redis','localhost','socket.io-emitter','validate','number','string','callNumber\x20is\x20required','userId\x20is\x20required','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','stringify','handleError:','error','stack','name','status','send','request','code','message','findOne','then','rows','UserId','sessionId','sessionId\x20','originate','originate\x20fired:','body','json','userId','callerId','callbackUrl','format','user:%s','webbar:originate','originate\x20executed!','catch','hangup'];(function(_0x41f1ac,_0x48eb21){var _0x1b2cdf=function(_0x198c09){while(--_0x198c09){_0x41f1ac['push'](_0x41f1ac['shift']());}};_0x1b2cdf(++_0x48eb21);}(_0xd58c,0xb6));var _0xcd58=function(_0x587c92,_0xf793e4){_0x587c92=_0x587c92-0x0;var _0x19bd28=_0xd58c[_0x587c92];return _0x19bd28;};'use strict';var path=require(_0xcd58('0x0'));var fs=require('fs');var _=require(_0xcd58('0x1'));var db=require(_0xcd58('0x2'))['db'];var config=require('../../config/environment');var util=require(_0xcd58('0x3'));var BPromise=require('bluebird');var jayson=require(_0xcd58('0x4'));var amiClient=jayson['client'][_0xcd58('0x5')]({'port':0x232a});var logger=require(_0xcd58('0x6'))(_0xcd58('0x7'));var Redis=require(_0xcd58('0x8'));config[_0xcd58('0x9')]=_['defaults'](config['redis'],{'host':_0xcd58('0xa'),'port':0x18eb});var io=require(_0xcd58('0xb'))(new Redis(config[_0xcd58('0x9')]));var Schema=require(_0xcd58('0xc'));var originateValidation=new Schema({'userId':{'type':_0xcd58('0xd'),'required':[!![],'userId\x20is\x20required']},'callNumber':{'type':_0xcd58('0xe'),'required':[!![],_0xcd58('0xf')]},'callerId':{'type':'string'},'callbackUrl':{'type':_0xcd58('0xe')}});var hangupValidation=new Schema({'userId':{'type':'number','required':[!![],_0xcd58('0x10')]},'sessionId':{'type':_0xcd58('0xe'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0xcd58('0xd'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xcd58('0xe'),'required':![]}});var transferValidation=new Schema({'userId':{'type':'number','required':[!![],_0xcd58('0x10')]},'sessionId':{'type':'string','required':[!![],_0xcd58('0x11')]},'transferNumber':{'type':_0xcd58('0xe'),'required':[!![],_0xcd58('0x12')]}});var holdValidation=new Schema({'userId':{'type':_0xcd58('0xd'),'required':[!![],_0xcd58('0x10')]},'sessionId':{'type':_0xcd58('0xe'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xcd58('0xd'),'required':[!![],_0xcd58('0x10')]},'sessionId':{'type':'string','required':![]}});var callsValidation=new Schema({'userId':{'type':'number','required':[!![],_0xcd58('0x10')]}});var conferenceValidation=new Schema({'userId':{'type':_0xcd58('0xd'),'required':[!![],_0xcd58('0x10')]}});function emit(_0x51f5b6,_0x515fc3,_0xea2532){logger[_0xcd58('0x13')](_0x51f5b6,_0x515fc3,JSON[_0xcd58('0x14')](_0xea2532));io['to'](_0x51f5b6)['emit'](_0x515fc3,_0xea2532);}function handleError(_0x4e9b76){return function(_0x3686ad){console['log'](_0xcd58('0x15'),_0x3686ad,_0x3686ad instanceof RangeError);logger[_0xcd58('0x16')](_0x3686ad[_0xcd58('0x17')]);if(_0x3686ad instanceof RangeError){if(_0x3686ad[_0xcd58('0x18')]){delete _0x3686ad['name'];}_0x4e9b76[_0xcd58('0x19')](0x194)['send'](_0x3686ad);}else{if(_0x3686ad['name']){delete _0x3686ad['name'];}_0x4e9b76[_0xcd58('0x19')](0x1f4)[_0xcd58('0x1a')](_0x3686ad);}};}function checkError(){return function(_0x44b002){if(!_0x44b002){throw new RangeError('NotFound');}return _0x44b002;};}function respondWithRpcPromise(_0xb7325f,_0x2a8681){return new BPromise(function(_0x5c241c,_0x18f953){var _0x1765d3=amiClient;return _0x1765d3[_0xcd58('0x1b')](_0xb7325f,_0x2a8681)['then'](function(_0x566d56){if(_0x566d56[_0xcd58('0x16')]){if(_0x566d56[_0xcd58('0x16')][_0xcd58('0x1c')]===0x1f4){return _0x18f953(_0x566d56[_0xcd58('0x16')][_0xcd58('0x1d')]);}return _0x5c241c(_0x566d56[_0xcd58('0x16')][_0xcd58('0x1d')]);}else{_0x5c241c(_0x566d56['result']);}})['catch'](function(_0x19010d){_0x18f953(_0x19010d);});});}function getAgent(_0xaa4a53){return db['User'][_0xcd58('0x1e')]({'where':{'id':_0xaa4a53,'role':'agent'}})[_0xcd58('0x1f')](checkError());}function getAgentCheckSession(_0x2ec6b1,_0x75bb8e){return new BPromise(function(_0x1784ff,_0x2b64b8){var _0x30cf55=respondWithRpcPromise('VoiceChannels');var _0x1c369f=getAgent(_0x2ec6b1);Promise['all']([_0x30cf55,_0x1c369f])[_0xcd58('0x1f')](function(_0x5e1b62){var _0x34d063=_0x5e1b62[0x0];var _0x55c551=_0x5e1b62[0x1];var _0x3499c4=_['filter'](_0x34d063[_0xcd58('0x20')],function(_0x5871da){return _0x5871da[_0xcd58('0x21')]==_0x55c551['id']&&_0x5871da[_0xcd58('0x22')]==_0x75bb8e;});if(_0x3499c4['length']==0x1){_0x1784ff(_0x55c551);}else{_0x2b64b8(new RangeError(_0xcd58('0x23')+_0x75bb8e+'\x20not\x20found!'));}});});}exports[_0xcd58('0x24')]=function(_0x3852c8,_0x2a7ce1){logger[_0xcd58('0x13')](_0xcd58('0x25'),_0x3852c8[_0xcd58('0x26')]);var _0x5b5d90=originateValidation['validate'](_0x3852c8[_0xcd58('0x26')]);if(_0x5b5d90['length']>0x0){return _0x2a7ce1['status'](0x190)[_0xcd58('0x27')](_0x5b5d90);}var _0x3ef48e=_0x3852c8[_0xcd58('0x26')][_0xcd58('0x28')];var _0xd5fc97=_0x3852c8[_0xcd58('0x26')]['callNumber'];var _0x535ad4=_0x3852c8[_0xcd58('0x26')][_0xcd58('0x29')];var _0x1c1ce4=_0x3852c8['body'][_0xcd58('0x2a')];return getAgent(_0x3ef48e)[_0xcd58('0x1f')](function(_0x6a7872){logger['info']('entityFound:',_0x6a7872[_0xcd58('0x18')]);emit(util[_0xcd58('0x2b')](_0xcd58('0x2c'),_0x6a7872[_0xcd58('0x18')]),_0xcd58('0x2d'),{'callNumber':_0xd5fc97,'callerId':_0x535ad4,'callbackUrl':_0x1c1ce4});return _0x2a7ce1[_0xcd58('0x19')](0xc8)[_0xcd58('0x27')]({'error':![],'message':_0xcd58('0x2e')});})[_0xcd58('0x2f')](handleError(_0x2a7ce1));};exports[_0xcd58('0x30')]=function(_0x455ce1,_0x37e840){logger[_0xcd58('0x13')](_0xcd58('0x31'),_0x455ce1[_0xcd58('0x26')]);var _0x1139c2=hangupValidation[_0xcd58('0xc')](_0x455ce1[_0xcd58('0x26')]);if(_0x1139c2[_0xcd58('0x32')]>0x0){return _0x37e840[_0xcd58('0x19')](0x190)[_0xcd58('0x27')](_0x1139c2);}var _0x5cd1eb=_0x455ce1[_0xcd58('0x26')][_0xcd58('0x28')];var _0x464158=_0x455ce1['body'][_0xcd58('0x22')];return getAgent(_0x5cd1eb)[_0xcd58('0x1f')](function(_0x4ced85){logger[_0xcd58('0x13')]('entityFound:',_0x4ced85['name']);emit(util[_0xcd58('0x2b')]('user:%s',_0x4ced85['name']),_0xcd58('0x33'),{'sessionId':_0x464158});return _0x37e840[_0xcd58('0x19')](0xc8)[_0xcd58('0x27')]({'error':![],'message':'hangup\x20executed!'});})['catch'](handleError(_0x37e840));};exports[_0xcd58('0x34')]=function(_0x55fdf9,_0x3ab135){logger[_0xcd58('0x13')]('answer\x20fired:',_0x55fdf9['body']);var _0x1f5e98=answerValidation[_0xcd58('0xc')](_0x55fdf9[_0xcd58('0x26')]);if(_0x1f5e98[_0xcd58('0x32')]>0x0){return _0x3ab135[_0xcd58('0x19')](0x190)[_0xcd58('0x27')](_0x1f5e98);}var _0x14a574=_0x55fdf9[_0xcd58('0x26')][_0xcd58('0x28')];var _0x297478=_0x55fdf9[_0xcd58('0x26')][_0xcd58('0x22')];return getAgent(_0x14a574)[_0xcd58('0x1f')](function(_0x503ee3){logger[_0xcd58('0x13')](_0xcd58('0x35'),_0x503ee3[_0xcd58('0x18')]);emit(util['format'](_0xcd58('0x2c'),_0x503ee3[_0xcd58('0x18')]),_0xcd58('0x36'),{'sessionId':_0x297478});return _0x3ab135[_0xcd58('0x19')](0xc8)['json']({'error':![],'message':_0xcd58('0x37')});})[_0xcd58('0x2f')](handleError(_0x3ab135));};exports[_0xcd58('0x38')]=function(_0x13e0cb,_0x3aa129){logger[_0xcd58('0x13')](_0xcd58('0x39'),_0x13e0cb[_0xcd58('0x26')]);var _0x452e7e=holdValidation[_0xcd58('0xc')](_0x13e0cb['body']);if(_0x452e7e[_0xcd58('0x32')]>0x0){return _0x3aa129[_0xcd58('0x19')](0x190)[_0xcd58('0x27')](_0x452e7e);}var _0x1ead66=_0x13e0cb[_0xcd58('0x26')][_0xcd58('0x28')];var _0x11aa04=_0x13e0cb[_0xcd58('0x26')][_0xcd58('0x22')];return getAgent(_0x1ead66)[_0xcd58('0x1f')](function(_0x1416fa){logger[_0xcd58('0x13')]('entityFound:',_0x1416fa[_0xcd58('0x18')]);emit(util[_0xcd58('0x2b')]('user:%s',_0x1416fa[_0xcd58('0x18')]),_0xcd58('0x3a'),{'sessionId':_0x11aa04});return _0x3aa129[_0xcd58('0x19')](0xc8)[_0xcd58('0x27')]({'error':![],'message':_0xcd58('0x3b')});})[_0xcd58('0x2f')](handleError(_0x3aa129));};exports['unhold']=function(_0x51735b,_0x8a5d52){logger['info'](_0xcd58('0x3c'),_0x51735b[_0xcd58('0x26')]);var _0x3eb747=unholdValidation[_0xcd58('0xc')](_0x51735b['body']);if(_0x3eb747['length']>0x0){return _0x8a5d52[_0xcd58('0x19')](0x190)['json'](_0x3eb747);}var _0x4972b7=_0x51735b[_0xcd58('0x26')][_0xcd58('0x28')];var _0x361422=_0x51735b[_0xcd58('0x26')]['sessionId'];return getAgent(_0x4972b7)[_0xcd58('0x1f')](function(_0x5530f3){logger['info'](_0xcd58('0x35'),_0x5530f3[_0xcd58('0x18')]);emit(util['format'](_0xcd58('0x2c'),_0x5530f3['name']),_0xcd58('0x3d'),{'sessionId':_0x361422});return _0x8a5d52[_0xcd58('0x19')](0xc8)[_0xcd58('0x27')]({'error':![],'message':_0xcd58('0x3e')});})[_0xcd58('0x2f')](handleError(_0x8a5d52));};exports[_0xcd58('0x3f')]=function(_0x2e4157,_0xe1a29a){logger[_0xcd58('0x13')](_0xcd58('0x40'),_0xe1a29a[_0xcd58('0x26')]);var _0x2220af=callsValidation['validate'](_0x2e4157[_0xcd58('0x26')]);if(_0x2220af['length']>0x0){return _0xe1a29a[_0xcd58('0x19')](0x190)[_0xcd58('0x27')](_0x2220af);}var _0x13df99=_0x2e4157[_0xcd58('0x26')]['userId'];var _0x3d2fe7=respondWithRpcPromise(_0xcd58('0x41'));var _0x458157=getAgent(_0x13df99);return Promise[_0xcd58('0x42')]([_0x3d2fe7,_0x458157])['then'](function(_0x5ab979){var _0x2bd97b=_0x5ab979[0x0];var _0x386388=_0x5ab979[0x1];var _0x418fb5=_[_0xcd58('0x43')](_0x2bd97b[_0xcd58('0x20')],function(_0x10cf46){return _0x10cf46[_0xcd58('0x21')]==_0x386388['id'];});return _0xe1a29a['status'](0xc8)[_0xcd58('0x27')]({'count':_0x418fb5[_0xcd58('0x32')],'rows':_0x418fb5});})[_0xcd58('0x2f')](handleError(_0xe1a29a));};exports[_0xcd58('0x44')]=function(_0x3a4699,_0x29f03b){logger[_0xcd58('0x13')](_0xcd58('0x45'),_0x3a4699[_0xcd58('0x26')]);var _0x2d16d0=conferenceValidation[_0xcd58('0xc')](_0x3a4699[_0xcd58('0x26')]);if(_0x2d16d0[_0xcd58('0x32')]>0x0){return _0x29f03b[_0xcd58('0x19')](0x190)[_0xcd58('0x27')](_0x2d16d0);}var _0x322466=_0x3a4699[_0xcd58('0x26')]['userId'];return getAgent(_0x322466)[_0xcd58('0x1f')](function(_0x183762){logger[_0xcd58('0x13')](_0xcd58('0x35'),_0x183762['name']);emit(util[_0xcd58('0x2b')](_0xcd58('0x2c'),_0x183762[_0xcd58('0x18')]),_0xcd58('0x46'));return _0x29f03b[_0xcd58('0x19')](0xc8)['json']({'error':![],'message':_0xcd58('0x47')});})[_0xcd58('0x2f')](handleError(_0x29f03b));};exports[_0xcd58('0x48')]=function(_0x1cc739,_0x3a13ab){logger[_0xcd58('0x13')](_0xcd58('0x49'),_0x1cc739[_0xcd58('0x26')]);var _0x2729dd=transferValidation[_0xcd58('0xc')](_0x1cc739['body']);if(_0x2729dd['length']>0x0){return _0x3a13ab[_0xcd58('0x19')](0x190)[_0xcd58('0x27')](_0x2729dd);}var _0x5913b2=_0x1cc739['body'][_0xcd58('0x28')];var _0x19887d=_0x1cc739['body'][_0xcd58('0x22')];var _0x29d4a4=_0x1cc739[_0xcd58('0x26')][_0xcd58('0x4a')];return getAgent(_0x5913b2)[_0xcd58('0x1f')](function(_0x3c3f38){logger[_0xcd58('0x13')](_0xcd58('0x35'),_0x3c3f38['name']);emit(util['format'](_0xcd58('0x2c'),_0x3c3f38['name']),_0xcd58('0x4b'),{'sessionId':_0x19887d,'transferNumber':_0x29d4a4});return _0x3a13ab['status'](0xc8)[_0xcd58('0x27')]({'error':![],'message':_0xcd58('0x4c')});})[_0xcd58('0x2f')](handleError(_0x3a13ab));};
\ No newline at end of file
index 2caf48c..c0963a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x955f=['addApplications','notify','/:id/send','send','update','destroy','delete','removeDispositions','/:id/canned_answers','removeAnswers','removeAgents','multer','util','path','connect-timeout','express','fs-extra','../../config/environment','get','isAuthenticated','index','/describe','/:id','show','/:id/dispositions','getAnswers','getApplications','post','create','addDisposition','/:id/users','addAgents'];(function(_0x3f79a3,_0x39c1cc){var _0x1895a6=function(_0x5ba625){while(--_0x5ba625){_0x3f79a3['push'](_0x3f79a3['shift']());}};_0x1895a6(++_0x39c1cc);}(_0x955f,0x1eb));var _0xf955=function(_0xcd7b5e,_0x1aabe1){_0xcd7b5e=_0xcd7b5e-0x0;var _0x4244be=_0x955f[_0xcd7b5e];return _0x4244be;};'use strict';var multer=require(_0xf955('0x0'));var util=require(_0xf955('0x1'));var path=require(_0xf955('0x2'));var timeout=require(_0xf955('0x3'));var express=require(_0xf955('0x4'));var router=express['Router']();var fs_extra=require(_0xf955('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xf955('0x6'));var controller=require('./whatsappAccount.controller');router[_0xf955('0x7')]('/',auth[_0xf955('0x8')](),controller[_0xf955('0x9')]);router['get'](_0xf955('0xa'),auth[_0xf955('0x8')](),controller['describe']);router[_0xf955('0x7')](_0xf955('0xb'),auth[_0xf955('0x8')](),controller[_0xf955('0xc')]);router[_0xf955('0x7')](_0xf955('0xd'),auth[_0xf955('0x8')](),controller['getDispositions']);router[_0xf955('0x7')]('/:id/canned_answers',auth[_0xf955('0x8')](),controller[_0xf955('0xe')]);router[_0xf955('0x7')]('/:id/users',auth[_0xf955('0x8')](),controller['getAgents']);router[_0xf955('0x7')]('/:id/applications',auth[_0xf955('0x8')](),controller[_0xf955('0xf')]);router[_0xf955('0x10')]('/',auth[_0xf955('0x8')](),controller[_0xf955('0x11')]);router[_0xf955('0x10')](_0xf955('0xd'),auth[_0xf955('0x8')](),controller[_0xf955('0x12')]);router[_0xf955('0x10')]('/:id/canned_answers',auth[_0xf955('0x8')](),controller['addAnswer']);router[_0xf955('0x10')](_0xf955('0x13'),auth[_0xf955('0x8')](),controller[_0xf955('0x14')]);router['post']('/:id/applications',auth[_0xf955('0x8')](),controller[_0xf955('0x15')]);router[_0xf955('0x10')]('/:id/notify',controller[_0xf955('0x16')]);router[_0xf955('0x10')](_0xf955('0x17'),auth[_0xf955('0x8')](),controller[_0xf955('0x18')]);router['put'](_0xf955('0xb'),auth[_0xf955('0x8')](),controller[_0xf955('0x19')]);router['delete'](_0xf955('0xb'),auth['isAuthenticated'](),controller[_0xf955('0x1a')]);router[_0xf955('0x1b')](_0xf955('0xd'),auth[_0xf955('0x8')](),controller[_0xf955('0x1c')]);router['delete'](_0xf955('0x1d'),auth[_0xf955('0x8')](),controller[_0xf955('0x1e')]);router[_0xf955('0x1b')](_0xf955('0x13'),auth[_0xf955('0x8')](),controller[_0xf955('0x1f')]);module['exports']=router;
\ No newline at end of file
+var _0x896e=['/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/users','getAgents','/:id/applications','getApplications','create','post','addDisposition','addAnswer','/:id/notify','notify','/:id/send','send','put','destroy','delete','removeAnswers','removeAgents','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappAccount.controller','get','index','/describe','isAuthenticated','describe','/:id','show'];(function(_0x460fd7,_0x2012db){var _0x44d1c2=function(_0x545e11){while(--_0x545e11){_0x460fd7['push'](_0x460fd7['shift']());}};_0x44d1c2(++_0x2012db);}(_0x896e,0x1e9));var _0xe896=function(_0x14024d,_0x4aa2a2){_0x14024d=_0x14024d-0x0;var _0x3ddac3=_0x896e[_0x14024d];return _0x3ddac3;};'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['get'](_0xe896('0x16'),auth[_0xe896('0xe')](),controller[_0xe896('0x17')]);router['get'](_0xe896('0x18'),auth[_0xe896('0xe')](),controller[_0xe896('0x19')]);router['post']('/',auth[_0xe896('0xe')](),controller[_0xe896('0x1a')]);router[_0xe896('0x1b')]('/:id/dispositions',auth['isAuthenticated'](),controller[_0xe896('0x1c')]);router[_0xe896('0x1b')]('/:id/canned_answers',auth['isAuthenticated'](),controller[_0xe896('0x1d')]);router[_0xe896('0x1b')]('/:id/users',auth[_0xe896('0xe')](),controller['addAgents']);router[_0xe896('0x1b')](_0xe896('0x18'),auth[_0xe896('0xe')](),controller['addApplications']);router[_0xe896('0x1b')](_0xe896('0x1e'),controller[_0xe896('0x1f')]);router[_0xe896('0x1b')](_0xe896('0x20'),auth[_0xe896('0xe')](),controller[_0xe896('0x21')]);router[_0xe896('0x22')]('/:id',auth[_0xe896('0xe')](),controller['update']);router['delete'](_0xe896('0x10'),auth[_0xe896('0xe')](),controller[_0xe896('0x23')]);router[_0xe896('0x24')]('/:id/dispositions',auth[_0xe896('0xe')](),controller['removeDispositions']);router['delete'](_0xe896('0x14'),auth[_0xe896('0xe')](),controller[_0xe896('0x25')]);router[_0xe896('0x24')](_0xe896('0x16'),auth[_0xe896('0xe')](),controller[_0xe896('0x26')]);module['exports']=router;
\ No newline at end of file
index 5ac3283..9e45b74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb824=['setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring','name','STRING','generate','ENUM','twilio','sinch','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue'];(function(_0x5a6d21,_0x407cf5){var _0xf8bcd2=function(_0x15c182){while(--_0x15c182){_0x5a6d21['push'](_0x5a6d21['shift']());}};_0xf8bcd2(++_0x407cf5);}(_0xb824,0x1f3));var _0x4b82=function(_0x50b789,_0x3fe82b){_0x50b789=_0x50b789-0x0;var _0x3ec3fe=_0xb824[_0x50b789];return _0x3ec3fe;};'use strict';var Sequelize=require(_0x4b82('0x0'));var rs=require(_0x4b82('0x1'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x4b82('0x2'),'allowNull':![]},'key':{'type':Sequelize[_0x4b82('0x3')],'allowNull':![]},'remote':{'type':Sequelize[_0x4b82('0x3')],'allowNull':![]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0x4b82('0x4')]();}},'phone':{'type':Sequelize[_0x4b82('0x3')]},'type':{'type':Sequelize[_0x4b82('0x5')](_0x4b82('0x6'),_0x4b82('0x7'))},'accountSid':{'type':Sequelize[_0x4b82('0x3')]},'baseUrl':{'type':Sequelize[_0x4b82('0x3')]},'authToken':{'type':Sequelize[_0x4b82('0x3')]},'notificationTemplate':{'type':Sequelize[_0x4b82('0x8')],'defaultValue':function(){return _0x4b82('0x9');}},'notificationSound':{'type':Sequelize[_0x4b82('0xa')],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0x4b82('0xa')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x4b82('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x4b82('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x4b82('0xb')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x4b82('0xa')],'defaultValue':![],'comment':_0x4b82('0xc'),'set':function(_0x38ff91){if(!_0x38ff91){this[_0x4b82('0xd')](_0x4b82('0xe'),null);}this[_0x4b82('0xd')](_0x4b82('0xf'),_0x38ff91);}},'description':{'type':Sequelize[_0x4b82('0x3')]}};
\ No newline at end of file
+var _0x5c12=['ENUM','twilio','sinch','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDispositionPauseId','sequelize','randomstring','exports','STRING'];(function(_0x56b3bb,_0x297eb3){var _0x47ba15=function(_0x194701){while(--_0x194701){_0x56b3bb['push'](_0x56b3bb['shift']());}};_0x47ba15(++_0x297eb3);}(_0x5c12,0x1ac));var _0x25c1=function(_0x2cc569,_0x4e9568){_0x2cc569=_0x2cc569-0x0;var _0x1bfc2e=_0x5c12[_0x2cc569];return _0x1bfc2e;};'use strict';var Sequelize=require(_0x25c1('0x0'));var rs=require(_0x25c1('0x1'));module[_0x25c1('0x2')]={'name':{'type':Sequelize[_0x25c1('0x3')],'unique':'name','allowNull':![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'remote':{'type':Sequelize[_0x25c1('0x3')],'allowNull':![]},'token':{'type':Sequelize[_0x25c1('0x3')],'defaultValue':function(){return rs['generate']();}},'phone':{'type':Sequelize[_0x25c1('0x3')]},'type':{'type':Sequelize[_0x25c1('0x4')](_0x25c1('0x5'),_0x25c1('0x6'))},'accountSid':{'type':Sequelize['STRING']},'baseUrl':{'type':Sequelize[_0x25c1('0x3')]},'authToken':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0x25c1('0x7')],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0x25c1('0x7')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x25c1('0x7')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x25c1('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x25c1('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':_0x25c1('0x9')},'mandatoryDisposition':{'type':Sequelize[_0x25c1('0x7')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x1867a8){if(!_0x1867a8){this[_0x25c1('0xa')](_0x25c1('0xb'),null);}this[_0x25c1('0xa')]('mandatoryDisposition',_0x1867a8);}},'description':{'type':Sequelize[_0x25c1('0x3')]}};
\ No newline at end of file
index 8777b34..54cf78d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedbd=['redis','defaults','socket.io-emitter','./whatsappAccount.socket','client','request','then','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','sendStatus','end','status','offset','undefined','count','set','Content-Range','json','apply','reject','save','update','destroy','get','UserProfileResource','stack','name','send','Pause','mandatoryDispositionPause','WhatsappAccount','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','limit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','length','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','WhatsappAccounts','UserProfileSection','userProfileId','body','addDisposition','Disposition','getDispositions','findOne','nolimit','WhatsappAccountId','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','addAgents','omit','spread','emit','removeAgents','userWhatsappAccount:remove','getAgents','User','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','WhatsappApplication','findAndCountAll','priority','getApplications','notify','whatsapp','Applications','account','statuses','state','WhatsappMessage','message_id','orderBy','asc','CmContact','describe','Sequelize','ValidationError','difference','createdAt','updatedAt','CompanyId','ListId','mobile','replace','whatsapp:','Body','messageId','MessageSid','sinch','from','notifications','isNil','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey','CmList','Contacts','DESC','list','WhatsappInteraction','interaction','autoclose','applications','push','close','unmanaged','ContactId','AttachmentId','UserId','agent','waitForTheAssignedAgent','*,*,*,*','Start','startRouting','receiveMessage','entity\x20found','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','List','Messages','dataValues','eml-format','rimraf','fast-json-patch','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xedbd,0x16b));var _0xdedb=function(_0x1294aa,_0x48f904){_0x1294aa=_0x1294aa-0x0;var _0x365d73=_0xedbd[_0x1294aa];return _0x365d73;};'use strict';var emlformat=require(_0xdedb('0x0'));var rimraf=require(_0xdedb('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xdedb('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xdedb('0x3'));var Mustache=require(_0xdedb('0x4'));var util=require(_0xdedb('0x5'));var path=require(_0xdedb('0x6'));var sox=require('sox');var csv=require(_0xdedb('0x7'));var ejs=require(_0xdedb('0x8'));var fs=require('fs');var fs_extra=require(_0xdedb('0x9'));var _=require(_0xdedb('0xa'));var squel=require(_0xdedb('0xb'));var crypto=require(_0xdedb('0xc'));var jsforce=require(_0xdedb('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xdedb('0x7'));var querystring=require(_0xdedb('0xe'));var Papa=require(_0xdedb('0xf'));var Redis=require(_0xdedb('0x10'));var authService=require(_0xdedb('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xdedb('0x12'));var hardwareService=require(_0xdedb('0x13'));var logger=require(_0xdedb('0x14'))('api');var utils=require(_0xdedb('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xdedb('0x16'))['db'];config[_0xdedb('0x17')]=_[_0xdedb('0x18')](config[_0xdedb('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0xdedb('0x19'))(new Redis(config[_0xdedb('0x17')]));require(_0xdedb('0x1a'))['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0xdedb('0x1b')]['http']({'port':0x232c});function respondWithRpcPromise(_0x411200,_0x5d763d,_0x1c623e,_0x39a709){return new BPromise(function(_0x5d3352,_0x1699e8){var _0x911939=_0x39a709||client;return _0x911939[_0xdedb('0x1c')](_0x411200,_0x1c623e)[_0xdedb('0x1d')](function(_0x4e0fef){logger[_0xdedb('0x1e')](_0xdedb('0x1f'),_0x5d763d,_0xdedb('0x20'));logger[_0xdedb('0x21')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x5d763d,'request\x20sent',JSON[_0xdedb('0x22')](_0x4e0fef));if(_0x4e0fef[_0xdedb('0x23')]){if(_0x4e0fef[_0xdedb('0x23')][_0xdedb('0x24')]===0x1f4){logger[_0xdedb('0x23')](_0xdedb('0x1f'),_0x5d763d,_0x4e0fef[_0xdedb('0x23')]['message']);return _0x1699e8(_0x4e0fef[_0xdedb('0x23')][_0xdedb('0x25')]);}logger[_0xdedb('0x23')](_0xdedb('0x1f'),_0x5d763d,_0x4e0fef[_0xdedb('0x23')][_0xdedb('0x25')]);return _0x5d3352(_0x4e0fef[_0xdedb('0x23')][_0xdedb('0x25')]);}else{logger['info'](_0xdedb('0x1f'),_0x5d763d,_0xdedb('0x20'));_0x5d3352(_0x4e0fef[_0xdedb('0x26')][_0xdedb('0x25')]);}})[_0xdedb('0x27')](function(_0x41eec6){logger[_0xdedb('0x23')](_0xdedb('0x1f'),_0x5d763d,_0x41eec6);_0x1699e8(_0x41eec6);});});}function respondWithStatusCode(_0x54f65e,_0x3bad7d){_0x3bad7d=_0x3bad7d||0xcc;return function(_0x4a5867){if(_0x4a5867){return _0x54f65e[_0xdedb('0x28')](_0x3bad7d);}return _0x54f65e['status'](_0x3bad7d)[_0xdedb('0x29')]();};}function respondWithResult(_0xf610a9,_0x16525f){_0x16525f=_0x16525f||0xc8;return function(_0xf15585){if(_0xf15585){return _0xf610a9[_0xdedb('0x2a')](_0x16525f)['json'](_0xf15585);}};}function respondWithFilteredResult(_0xcfcb37,_0x803894){return function(_0x4dcfb0){if(_0x4dcfb0){var _0x2d206a=typeof _0x803894[_0xdedb('0x2b')]===_0xdedb('0x2c')&&typeof _0x803894['limit']==='undefined';var _0xdb6d26=_0x4dcfb0['count'];var _0x3431db=_0x2d206a?0x0:_0x803894[_0xdedb('0x2b')];var _0x2525a5=_0x2d206a?_0x4dcfb0[_0xdedb('0x2d')]:_0x803894[_0xdedb('0x2b')]+_0x803894['limit'];var _0x356763;if(_0x2525a5>=_0xdb6d26){_0x2525a5=_0xdb6d26;_0x356763=0xc8;}else{_0x356763=0xce;}_0xcfcb37[_0xdedb('0x2a')](_0x356763);return _0xcfcb37[_0xdedb('0x2e')](_0xdedb('0x2f'),_0x3431db+'-'+_0x2525a5+'/'+_0xdb6d26)[_0xdedb('0x30')](_0x4dcfb0);}return null;};}function patchUpdates(_0x2838fe){return function(_0x5e0ba2){try{jsonpatch[_0xdedb('0x31')](_0x5e0ba2,_0x2838fe,!![]);}catch(_0x1c0050){return BPromise[_0xdedb('0x32')](_0x1c0050);}return _0x5e0ba2[_0xdedb('0x33')]();};}function saveUpdates(_0x5c73ca,_0x4084e6){return function(_0x310b11){if(_0x310b11){return _0x310b11[_0xdedb('0x34')](_0x5c73ca)['then'](function(_0x5a3631){return _0x5a3631;});}return null;};}function removeEntity(_0x1a83dc,_0x5107a4){return function(_0x11fcde){if(_0x11fcde){return _0x11fcde[_0xdedb('0x35')]()['then'](function(){var _0x1f015b=_0x11fcde[_0xdedb('0x36')]({'plain':!![]});var _0x5fe619='WhatsappAccounts';return db[_0xdedb('0x37')][_0xdedb('0x35')]({'where':{'type':_0x5fe619,'resourceId':_0x1f015b['id']}})['then'](function(){return _0x11fcde;});})[_0xdedb('0x1d')](function(){_0x1a83dc['status'](0xcc)[_0xdedb('0x29')]();});}};}function handleEntityNotFound(_0x327721,_0x1ad784){return function(_0x3fa1c9){if(!_0x3fa1c9){_0x327721[_0xdedb('0x28')](0x194);}return _0x3fa1c9;};}function handleError(_0x5f369f,_0x2479a2){_0x2479a2=_0x2479a2||0x1f4;return function(_0x4745f7){logger['error'](_0x4745f7[_0xdedb('0x38')]);if(_0x4745f7[_0xdedb('0x39')]){delete _0x4745f7[_0xdedb('0x39')];}_0x5f369f['status'](_0x2479a2)[_0xdedb('0x3a')](_0x4745f7);};}exports['index']=function(_0x5b6871,_0x246396){var _0x3cbced={'include':[{'model':db[_0xdedb('0x3b')],'as':_0xdedb('0x3c')}]},_0x172841={},_0x383587={'count':0x0,'rows':[]};var _0x27ff3c=_['map'](db[_0xdedb('0x3d')][_0xdedb('0x3e')],function(_0x504c34){return{'name':_0x504c34[_0xdedb('0x3f')],'type':_0x504c34[_0xdedb('0x40')][_0xdedb('0x41')]};});_0x172841[_0xdedb('0x42')]=_[_0xdedb('0x43')](_0x27ff3c,_0xdedb('0x39'));_0x172841[_0xdedb('0x44')]=_[_0xdedb('0x45')](_0x5b6871[_0xdedb('0x44')]);_0x172841[_0xdedb('0x46')]=_[_0xdedb('0x47')](_0x172841[_0xdedb('0x42')],_0x172841[_0xdedb('0x44')]);_0x3cbced[_0xdedb('0x48')]=_['intersection'](_0x172841[_0xdedb('0x42')],qs['fields'](_0x5b6871[_0xdedb('0x44')][_0xdedb('0x49')]));_0x3cbced[_0xdedb('0x48')]=_0x3cbced[_0xdedb('0x48')]['length']?_0x3cbced[_0xdedb('0x48')]:_0x172841[_0xdedb('0x42')];if(!_0x5b6871[_0xdedb('0x44')][_0xdedb('0x4a')]('nolimit')){_0x3cbced[_0xdedb('0x4b')]=qs[_0xdedb('0x4b')](_0x5b6871['query'][_0xdedb('0x4b')]);_0x3cbced[_0xdedb('0x2b')]=qs['offset'](_0x5b6871[_0xdedb('0x44')][_0xdedb('0x2b')]);}_0x3cbced[_0xdedb('0x4c')]=qs[_0xdedb('0x4d')](_0x5b6871[_0xdedb('0x44')][_0xdedb('0x4d')]);_0x3cbced[_0xdedb('0x4e')]=qs[_0xdedb('0x46')](_[_0xdedb('0x4f')](_0x5b6871['query'],_0x172841[_0xdedb('0x46')]),_0x27ff3c);if(_0x5b6871[_0xdedb('0x44')][_0xdedb('0x50')]){_0x3cbced[_0xdedb('0x4e')]=_[_0xdedb('0x51')](_0x3cbced[_0xdedb('0x4e')],{'$or':_[_0xdedb('0x43')](_0x27ff3c,function(_0x5a08a1){if(_0x5a08a1[_0xdedb('0x40')]!==_0xdedb('0x52')){var _0xa027ee={};_0xa027ee[_0x5a08a1[_0xdedb('0x39')]]={'$like':'%'+_0x5b6871['query'][_0xdedb('0x50')]+'%'};return _0xa027ee;}})});}_0x3cbced=_[_0xdedb('0x51')]({},_0x3cbced,_0x5b6871[_0xdedb('0x53')]);var _0x465be0={'where':_0x3cbced[_0xdedb('0x4e')]};return db[_0xdedb('0x3d')][_0xdedb('0x2d')](_0x465be0)[_0xdedb('0x1d')](function(_0x122382){_0x383587[_0xdedb('0x2d')]=_0x122382;if(_0x5b6871[_0xdedb('0x44')][_0xdedb('0x54')]){_0x3cbced[_0xdedb('0x55')]=[{'all':!![]}];}return db[_0xdedb('0x3d')][_0xdedb('0x56')](_0x3cbced);})[_0xdedb('0x1d')](function(_0x5407fa){_0x383587[_0xdedb('0x57')]=_0x5407fa;return _0x383587;})[_0xdedb('0x1d')](respondWithFilteredResult(_0x246396,_0x3cbced))['catch'](handleError(_0x246396,null));};exports[_0xdedb('0x58')]=function(_0x3709d4,_0x48dd1a){var _0x59e229={'raw':![],'where':{'id':_0x3709d4[_0xdedb('0x59')]['id']},'include':[{'model':db[_0xdedb('0x3b')],'as':_0xdedb('0x3c')}]},_0x406a1b={};_0x406a1b['model']=_[_0xdedb('0x45')](db[_0xdedb('0x3d')]['rawAttributes']);_0x406a1b['query']=_[_0xdedb('0x45')](_0x3709d4[_0xdedb('0x44')]);_0x406a1b[_0xdedb('0x46')]=_[_0xdedb('0x47')](_0x406a1b['model'],_0x406a1b[_0xdedb('0x44')]);_0x59e229[_0xdedb('0x48')]=_['intersection'](_0x406a1b['model'],qs[_0xdedb('0x49')](_0x3709d4[_0xdedb('0x44')][_0xdedb('0x49')]));_0x59e229[_0xdedb('0x48')]=_0x59e229['attributes'][_0xdedb('0x5a')]?_0x59e229[_0xdedb('0x48')]:_0x406a1b[_0xdedb('0x42')];if(_0x3709d4['query'][_0xdedb('0x54')]){_0x59e229[_0xdedb('0x55')]=[{'all':!![]}];}_0x59e229=_['merge']({},_0x59e229,_0x3709d4[_0xdedb('0x53')]);return db[_0xdedb('0x3d')][_0xdedb('0x5b')](_0x59e229)[_0xdedb('0x1d')](handleEntityNotFound(_0x48dd1a,null))[_0xdedb('0x1d')](respondWithResult(_0x48dd1a,null))[_0xdedb('0x27')](handleError(_0x48dd1a,null));};exports[_0xdedb('0x5c')]=function(_0x1ba21a,_0x126dc7){return db[_0xdedb('0x3d')]['create'](_0x1ba21a['body'],{})[_0xdedb('0x1d')](function(_0x287f8a){var _0x1336d9=_0x1ba21a[_0xdedb('0x5d')][_0xdedb('0x36')]({'plain':!![]});if(!_0x1336d9)throw new Error(_0xdedb('0x5e'));if(_0x1336d9[_0xdedb('0x5f')]===_0xdedb('0x5d')){var _0x3cb915=_0x287f8a[_0xdedb('0x36')]({'plain':!![]});var _0x3bb454=_0xdedb('0x60');return db[_0xdedb('0x61')][_0xdedb('0x5b')]({'where':{'name':_0x3bb454,'userProfileId':_0x1336d9[_0xdedb('0x62')]},'raw':!![]})[_0xdedb('0x1d')](function(_0x1b3549){if(_0x1b3549&&_0x1b3549['autoAssociation']===0x0){return db[_0xdedb('0x37')][_0xdedb('0x5c')]({'name':_0x3cb915['name'],'resourceId':_0x3cb915['id'],'type':_0x1b3549[_0xdedb('0x39')],'sectionId':_0x1b3549['id']},{})[_0xdedb('0x1d')](function(){return _0x287f8a;});}else{return _0x287f8a;}})[_0xdedb('0x27')](function(_0x5e7ffd){logger[_0xdedb('0x23')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5e7ffd);throw _0x5e7ffd;});}return _0x287f8a;})[_0xdedb('0x1d')](respondWithResult(_0x126dc7,0xc9))[_0xdedb('0x27')](handleError(_0x126dc7,null));};exports['update']=function(_0x3ec865,_0x5014c7){if(_0x3ec865['body']['id']){delete _0x3ec865['body']['id'];}return db['WhatsappAccount'][_0xdedb('0x5b')]({'where':{'id':_0x3ec865[_0xdedb('0x59')]['id']},'include':[{'model':db[_0xdedb('0x3b')],'as':_0xdedb('0x3c')}]})[_0xdedb('0x1d')](handleEntityNotFound(_0x5014c7,null))[_0xdedb('0x1d')](saveUpdates(_0x3ec865[_0xdedb('0x63')],null))[_0xdedb('0x1d')](respondWithResult(_0x5014c7,null))[_0xdedb('0x27')](handleError(_0x5014c7,null));};exports[_0xdedb('0x35')]=function(_0xbdeea1,_0x32d555){return db['WhatsappAccount']['find']({'where':{'id':_0xbdeea1[_0xdedb('0x59')]['id']}})[_0xdedb('0x1d')](handleEntityNotFound(_0x32d555,null))['then'](removeEntity(_0x32d555,null))[_0xdedb('0x27')](handleError(_0x32d555,null));};exports['describe']=function(_0x457d54,_0x36ef3c){return db[_0xdedb('0x3d')]['describe']()[_0xdedb('0x1d')](respondWithResult(_0x36ef3c,null))[_0xdedb('0x27')](handleError(_0x36ef3c,null));};exports[_0xdedb('0x64')]=function(_0x113860,_0xea275e,_0x286dfc){if(_0x113860['body']['id']){delete _0x113860[_0xdedb('0x63')]['id'];}return db[_0xdedb('0x3d')][_0xdedb('0x5b')]({'where':{'id':_0x113860[_0xdedb('0x59')]['id']}})[_0xdedb('0x1d')](handleEntityNotFound(_0xea275e,null))[_0xdedb('0x1d')](function(_0x116b1d){if(_0x116b1d){_0x113860[_0xdedb('0x63')]['WhatsappAccountId']=_0x116b1d['id'];return db[_0xdedb('0x65')][_0xdedb('0x5c')](_0x113860[_0xdedb('0x63')]);}})[_0xdedb('0x1d')](respondWithResult(_0xea275e,null))[_0xdedb('0x27')](handleError(_0xea275e,null));};exports[_0xdedb('0x66')]=function(_0x9bff5,_0x21a845,_0x299157){var _0x1d8f2a={'raw':![],'where':{}};var _0x5c8332={};var _0x4e12c3={'count':0x0,'rows':[]};return db['WhatsappAccount'][_0xdedb('0x67')]({'where':{'id':_0x9bff5[_0xdedb('0x59')]['id']}})['then'](handleEntityNotFound(_0x21a845,null))[_0xdedb('0x1d')](function(_0x4dc029){if(_0x4dc029){_0x5c8332['model']=_[_0xdedb('0x45')](db[_0xdedb('0x65')][_0xdedb('0x3e')]);_0x5c8332[_0xdedb('0x44')]=_[_0xdedb('0x45')](_0x9bff5[_0xdedb('0x44')]);_0x5c8332[_0xdedb('0x46')]=_['intersection'](_0x5c8332['model'],_0x5c8332[_0xdedb('0x44')]);_0x1d8f2a[_0xdedb('0x48')]=_[_0xdedb('0x47')](_0x5c8332[_0xdedb('0x42')],qs['fields'](_0x9bff5[_0xdedb('0x44')][_0xdedb('0x49')]));_0x1d8f2a[_0xdedb('0x48')]=_0x1d8f2a[_0xdedb('0x48')][_0xdedb('0x5a')]?_0x1d8f2a[_0xdedb('0x48')]:_0x5c8332[_0xdedb('0x42')];if(!_0x9bff5['query'][_0xdedb('0x4a')](_0xdedb('0x68'))){_0x1d8f2a[_0xdedb('0x4b')]=qs['limit'](_0x9bff5[_0xdedb('0x44')][_0xdedb('0x4b')]);_0x1d8f2a[_0xdedb('0x2b')]=qs[_0xdedb('0x2b')](_0x9bff5[_0xdedb('0x44')][_0xdedb('0x2b')]);}_0x1d8f2a[_0xdedb('0x4c')]=qs[_0xdedb('0x4d')](_0x9bff5[_0xdedb('0x44')][_0xdedb('0x4d')]);_0x1d8f2a[_0xdedb('0x4e')]=qs[_0xdedb('0x46')](_[_0xdedb('0x4f')](_0x9bff5[_0xdedb('0x44')],_0x5c8332['filters']));_0x1d8f2a[_0xdedb('0x4e')][_0xdedb('0x69')]=_0x4dc029['id'];if(_0x9bff5[_0xdedb('0x44')][_0xdedb('0x50')]){_0x1d8f2a[_0xdedb('0x4e')]=_[_0xdedb('0x51')](_0x1d8f2a['where'],{'$or':_[_0xdedb('0x43')](_0x1d8f2a[_0xdedb('0x48')],function(_0x51b99b){var _0x39db94={};_0x39db94[_0x51b99b]={'$like':'%'+_0x9bff5[_0xdedb('0x44')]['filter']+'%'};return _0x39db94;})});}_0x1d8f2a=_[_0xdedb('0x51')]({},_0x1d8f2a,_0x9bff5[_0xdedb('0x53')]);return db[_0xdedb('0x65')][_0xdedb('0x2d')]({'where':_0x1d8f2a[_0xdedb('0x4e')]})[_0xdedb('0x1d')](function(_0x37c0b5){_0x4e12c3[_0xdedb('0x2d')]=_0x37c0b5;if(_0x9bff5['query'][_0xdedb('0x54')]){_0x1d8f2a[_0xdedb('0x55')]=[{'all':!![]}];}return db[_0xdedb('0x65')][_0xdedb('0x56')](_0x1d8f2a);})['then'](function(_0x368c06){_0x4e12c3['rows']=_0x368c06;return _0x4e12c3;});}})[_0xdedb('0x1d')](respondWithFilteredResult(_0x21a845,_0x1d8f2a))[_0xdedb('0x27')](handleError(_0x21a845,null));};exports[_0xdedb('0x6a')]=function(_0xd21a0b,_0x1d7a9b,_0x3f198b){return db[_0xdedb('0x3d')][_0xdedb('0x5b')]({'where':{'id':_0xd21a0b[_0xdedb('0x59')]['id']}})[_0xdedb('0x1d')](handleEntityNotFound(_0x1d7a9b,null))['then'](function(_0x4e885e){if(_0x4e885e){return _0x4e885e['removeDispositions'](_0xd21a0b[_0xdedb('0x44')][_0xdedb('0x6b')]);}})[_0xdedb('0x1d')](respondWithStatusCode(_0x1d7a9b,null))[_0xdedb('0x27')](handleError(_0x1d7a9b,null));};exports[_0xdedb('0x6c')]=function(_0x18c788,_0x3f11af,_0x41d48a){if(_0x18c788[_0xdedb('0x63')]['id']){delete _0x18c788[_0xdedb('0x63')]['id'];}return db['WhatsappAccount']['find']({'where':{'id':_0x18c788[_0xdedb('0x59')]['id']}})[_0xdedb('0x1d')](handleEntityNotFound(_0x3f11af,null))['then'](function(_0x2f8ca9){if(_0x2f8ca9){_0x18c788[_0xdedb('0x63')][_0xdedb('0x69')]=_0x2f8ca9['id'];return db[_0xdedb('0x6d')][_0xdedb('0x5c')](_0x18c788[_0xdedb('0x63')]);}})[_0xdedb('0x1d')](respondWithResult(_0x3f11af,null))[_0xdedb('0x27')](handleError(_0x3f11af,null));};exports[_0xdedb('0x6e')]=function(_0x9e4ce6,_0xe1b6ae,_0x2087e9){var _0x4a7d65={'raw':![],'where':{}};var _0x4b8208={};var _0x3804ab={'count':0x0,'rows':[]};return db[_0xdedb('0x3d')][_0xdedb('0x67')]({'where':{'id':_0x9e4ce6[_0xdedb('0x59')]['id']}})[_0xdedb('0x1d')](handleEntityNotFound(_0xe1b6ae,null))[_0xdedb('0x1d')](function(_0x1b39ac){if(_0x1b39ac){_0x4b8208[_0xdedb('0x42')]=_['keys'](db[_0xdedb('0x6d')]['rawAttributes']);_0x4b8208[_0xdedb('0x44')]=_['keys'](_0x9e4ce6[_0xdedb('0x44')]);_0x4b8208[_0xdedb('0x46')]=_[_0xdedb('0x47')](_0x4b8208['model'],_0x4b8208['query']);_0x4a7d65[_0xdedb('0x48')]=_['intersection'](_0x4b8208[_0xdedb('0x42')],qs['fields'](_0x9e4ce6[_0xdedb('0x44')][_0xdedb('0x49')]));_0x4a7d65[_0xdedb('0x48')]=_0x4a7d65[_0xdedb('0x48')]['length']?_0x4a7d65[_0xdedb('0x48')]:_0x4b8208['model'];if(!_0x9e4ce6[_0xdedb('0x44')][_0xdedb('0x4a')](_0xdedb('0x68'))){_0x4a7d65[_0xdedb('0x4b')]=qs['limit'](_0x9e4ce6[_0xdedb('0x44')]['limit']);_0x4a7d65['offset']=qs[_0xdedb('0x2b')](_0x9e4ce6[_0xdedb('0x44')]['offset']);}_0x4a7d65[_0xdedb('0x4c')]=qs[_0xdedb('0x4d')](_0x9e4ce6[_0xdedb('0x44')]['sort']);_0x4a7d65[_0xdedb('0x4e')]=qs['filters'](_['pick'](_0x9e4ce6[_0xdedb('0x44')],_0x4b8208[_0xdedb('0x46')]));_0x4a7d65['where']['WhatsappAccountId']=_0x1b39ac['id'];if(_0x9e4ce6[_0xdedb('0x44')][_0xdedb('0x50')]){_0x4a7d65[_0xdedb('0x4e')]=_[_0xdedb('0x51')](_0x4a7d65[_0xdedb('0x4e')],{'$or':_[_0xdedb('0x43')](_0x4a7d65['attributes'],function(_0x4f07be){var _0x40c3cc={};_0x40c3cc[_0x4f07be]={'$like':'%'+_0x9e4ce6[_0xdedb('0x44')][_0xdedb('0x50')]+'%'};return _0x40c3cc;})});}_0x4a7d65=_[_0xdedb('0x51')]({},_0x4a7d65,_0x9e4ce6[_0xdedb('0x53')]);return db[_0xdedb('0x6d')][_0xdedb('0x2d')]({'where':_0x4a7d65['where']})[_0xdedb('0x1d')](function(_0x1cdbed){_0x3804ab[_0xdedb('0x2d')]=_0x1cdbed;if(_0x9e4ce6[_0xdedb('0x44')]['includeAll']){_0x4a7d65[_0xdedb('0x55')]=[{'all':!![]}];}return db['CannedAnswer'][_0xdedb('0x56')](_0x4a7d65);})[_0xdedb('0x1d')](function(_0x438bd9){_0x3804ab[_0xdedb('0x57')]=_0x438bd9;return _0x3804ab;});}})[_0xdedb('0x1d')](respondWithFilteredResult(_0xe1b6ae,_0x4a7d65))[_0xdedb('0x27')](handleError(_0xe1b6ae,null));};exports[_0xdedb('0x6f')]=function(_0x428e82,_0x91257f,_0x2fa7c2){return db['WhatsappAccount']['find']({'where':{'id':_0x428e82[_0xdedb('0x59')]['id']}})['then'](handleEntityNotFound(_0x91257f,null))[_0xdedb('0x1d')](function(_0x7e7cff){if(_0x7e7cff){return _0x7e7cff[_0xdedb('0x6f')](_0x428e82[_0xdedb('0x44')][_0xdedb('0x6b')]);}})[_0xdedb('0x1d')](respondWithStatusCode(_0x91257f,null))[_0xdedb('0x27')](handleError(_0x91257f,null));};exports[_0xdedb('0x70')]=function(_0x107c10,_0x42c5ad,_0x47b146){return db[_0xdedb('0x3d')]['find']({'where':{'id':_0x107c10[_0xdedb('0x59')]['id']}})[_0xdedb('0x1d')](handleEntityNotFound(_0x42c5ad,null))[_0xdedb('0x1d')](function(_0x598cd8){if(_0x598cd8){return _0x598cd8[_0xdedb('0x70')](_0x107c10[_0xdedb('0x63')]['ids'],_[_0xdedb('0x71')](_0x107c10[_0xdedb('0x63')],[_0xdedb('0x6b'),'id'])||{})[_0xdedb('0x72')](function(_0x5a85fb){for(var _0x57295a=0x0;_0x57295a<_0x107c10['body'][_0xdedb('0x6b')]['length'];_0x57295a+=0x1){socket[_0xdedb('0x73')]('userWhatsappAccount:save',{'UserId':Number(_0x107c10[_0xdedb('0x63')][_0xdedb('0x6b')][_0x57295a]),'WhatsappAccountId':Number(_0x107c10[_0xdedb('0x59')]['id'])});}return _0x5a85fb;});}})[_0xdedb('0x1d')](respondWithResult(_0x42c5ad,null))[_0xdedb('0x27')](handleError(_0x42c5ad,null));};exports[_0xdedb('0x74')]=function(_0x3934c9,_0x40e774,_0x2e9bd0){return db[_0xdedb('0x3d')][_0xdedb('0x5b')]({'where':{'id':_0x3934c9[_0xdedb('0x59')]['id']}})[_0xdedb('0x1d')](handleEntityNotFound(_0x40e774,null))[_0xdedb('0x1d')](function(_0x2af459){if(_0x2af459){return _0x2af459['removeAgents'](_0x3934c9[_0xdedb('0x44')]['ids'])[_0xdedb('0x1d')](function(){if(_['isArray'](_0x3934c9[_0xdedb('0x44')][_0xdedb('0x6b')])){for(var _0x25fb21=0x0;_0x25fb21<_0x3934c9[_0xdedb('0x44')][_0xdedb('0x6b')][_0xdedb('0x5a')];_0x25fb21+=0x1){socket[_0xdedb('0x73')](_0xdedb('0x75'),{'UserId':Number(_0x3934c9[_0xdedb('0x44')]['ids'][_0x25fb21]),'WhatsappAccountId':Number(_0x3934c9[_0xdedb('0x59')]['id'])});}}else{socket[_0xdedb('0x73')](_0xdedb('0x75'),{'UserId':Number(_0x3934c9[_0xdedb('0x44')][_0xdedb('0x6b')]),'WhatsappAccountId':Number(_0x3934c9[_0xdedb('0x59')]['id'])});}});}})[_0xdedb('0x1d')](respondWithStatusCode(_0x40e774,null))[_0xdedb('0x27')](handleError(_0x40e774,null));};exports[_0xdedb('0x76')]=function(_0x12e7f9,_0x18bd5f,_0x3ab6c9){var _0x5a31b9={};var _0x465e08={};var _0x1c7a27;var _0x27ce84;return db[_0xdedb('0x3d')][_0xdedb('0x67')]({'where':{'id':_0x12e7f9[_0xdedb('0x59')]['id']}})[_0xdedb('0x1d')](handleEntityNotFound(_0x18bd5f,null))[_0xdedb('0x1d')](function(_0x366a7b){if(_0x366a7b){_0x1c7a27=_0x366a7b;_0x465e08['model']=_[_0xdedb('0x45')](db[_0xdedb('0x77')][_0xdedb('0x3e')]);_0x465e08[_0xdedb('0x44')]=_[_0xdedb('0x45')](_0x12e7f9[_0xdedb('0x44')]);_0x465e08[_0xdedb('0x46')]=_[_0xdedb('0x47')](_0x465e08[_0xdedb('0x42')],_0x465e08[_0xdedb('0x44')]);_0x5a31b9[_0xdedb('0x48')]=_['intersection'](_0x465e08[_0xdedb('0x42')],qs['fields'](_0x12e7f9[_0xdedb('0x44')]['fields']));_0x5a31b9['attributes']=_0x5a31b9[_0xdedb('0x48')][_0xdedb('0x5a')]?_0x5a31b9['attributes']:_0x465e08[_0xdedb('0x42')];_0x5a31b9[_0xdedb('0x4c')]=qs[_0xdedb('0x4d')](_0x12e7f9['query']['sort']);_0x5a31b9[_0xdedb('0x4e')]=qs[_0xdedb('0x46')](_['pick'](_0x12e7f9['query'],_0x465e08['filters']));if(_0x12e7f9[_0xdedb('0x44')][_0xdedb('0x50')]){_0x5a31b9[_0xdedb('0x4e')]=_['merge'](_0x5a31b9['where'],{'$or':_[_0xdedb('0x43')](_0x5a31b9[_0xdedb('0x48')],function(_0x53b021){var _0x41867f={};_0x41867f[_0x53b021]={'$like':'%'+_0x12e7f9[_0xdedb('0x44')][_0xdedb('0x50')]+'%'};return _0x41867f;})});}_0x5a31b9=_[_0xdedb('0x51')]({},_0x5a31b9,_0x12e7f9[_0xdedb('0x53')]);return _0x1c7a27[_0xdedb('0x76')](_0x5a31b9);}})[_0xdedb('0x1d')](function(_0x1d9cac){if(_0x1d9cac){_0x27ce84=_0x1d9cac['length'];if(!_0x12e7f9[_0xdedb('0x44')]['hasOwnProperty'](_0xdedb('0x68'))){_0x5a31b9['limit']=qs['limit'](_0x12e7f9[_0xdedb('0x44')][_0xdedb('0x4b')]);_0x5a31b9[_0xdedb('0x2b')]=qs[_0xdedb('0x2b')](_0x12e7f9[_0xdedb('0x44')][_0xdedb('0x2b')]);}return _0x1c7a27[_0xdedb('0x76')](_0x5a31b9);}})[_0xdedb('0x1d')](function(_0x35f145){if(_0x35f145){return _0x35f145?{'count':_0x27ce84,'rows':_0x35f145}:null;}})[_0xdedb('0x1d')](respondWithResult(_0x18bd5f,null))[_0xdedb('0x27')](handleError(_0x18bd5f,null));};exports[_0xdedb('0x78')]=function(_0x52cbff,_0x3ba712){var _0xb91579=_0x52cbff[_0xdedb('0x59')]['id'];var _0x3d6062=_0x52cbff[_0xdedb('0x63')];var _0x998b0c=0xc8;var _0x32ed33=null;return db[_0xdedb('0x79')][_0xdedb('0x7a')]({'isolationLevel':db[_0xdedb('0x79')][_0xdedb('0x7b')][_0xdedb('0x7c')][_0xdedb('0x7d')]},function(_0x46cfd0){return db[_0xdedb('0x3d')][_0xdedb('0x67')]({'where':{'id':_0xb91579},'transaction':_0x46cfd0})['then'](function(_0x5e8704){if(_0x5e8704){return db[_0xdedb('0x7e')][_0xdedb('0x35')]({'where':{'WhatsappAccountId':_0xb91579},'transaction':_0x46cfd0})[_0xdedb('0x1d')](function(){var _0x42665e=_[_0xdedb('0x43')](_0x3d6062,function(_0x25ec1a){_0x25ec1a['WhatsappAccountId']=_0xb91579;return _0x25ec1a;});return db[_0xdedb('0x7e')]['bulkCreate'](_0x42665e,{'transaction':_0x46cfd0});});}else{_0x998b0c=0x194;_0x32ed33=[];}});})[_0xdedb('0x1d')](function(){if(_0x998b0c!==0x194){return db[_0xdedb('0x7e')][_0xdedb('0x7f')]({'where':{'WhatsappAccountId':_0xb91579},'order':_0xdedb('0x80')})[_0xdedb('0x1d')](function(_0x298b17){_0x32ed33=_0x298b17;});}})['catch'](function(_0x1b0709){_0x998b0c=0x1f4;logger['error'](_0x1b0709[_0xdedb('0x38')]);if(_0x1b0709[_0xdedb('0x39')]){delete _0x1b0709[_0xdedb('0x39')];}_0x32ed33=_0x1b0709;})['finally'](function(){if(_0x32ed33===null){_0x3ba712[_0xdedb('0x28')](_0x998b0c);}else{if(_0x998b0c===0x1f4){_0x3ba712[_0xdedb('0x2a')](_0x998b0c)[_0xdedb('0x3a')](_0x32ed33);}else{_0x3ba712[_0xdedb('0x2a')](_0x998b0c)[_0xdedb('0x30')](_0x32ed33);}}});};exports[_0xdedb('0x81')]=function(_0x215a84,_0x2e6f37,_0x40c939){var _0x2f9f44={};var _0x16c359={};var _0x12d6ce;var _0x2c9675;return db['WhatsappAccount']['findOne']({'where':{'id':_0x215a84['params']['id']}})['then'](handleEntityNotFound(_0x2e6f37,null))[_0xdedb('0x1d')](function(_0xa8d18e){if(_0xa8d18e){_0x12d6ce=_0xa8d18e;_0x16c359[_0xdedb('0x42')]=_[_0xdedb('0x45')](db[_0xdedb('0x7e')]['rawAttributes']);_0x16c359[_0xdedb('0x44')]=_[_0xdedb('0x45')](_0x215a84[_0xdedb('0x44')]);_0x16c359['filters']=_['intersection'](_0x16c359[_0xdedb('0x42')],_0x16c359[_0xdedb('0x44')]);_0x2f9f44['attributes']=_[_0xdedb('0x47')](_0x16c359[_0xdedb('0x42')],qs[_0xdedb('0x49')](_0x215a84[_0xdedb('0x44')]['fields']));_0x2f9f44['attributes']=_0x2f9f44['attributes']['length']?_0x2f9f44['attributes']:_0x16c359[_0xdedb('0x42')];_0x2f9f44['order']=qs['sort'](_0x215a84[_0xdedb('0x44')][_0xdedb('0x4d')]);_0x2f9f44['where']=qs[_0xdedb('0x46')](_[_0xdedb('0x4f')](_0x215a84['query'],_0x16c359[_0xdedb('0x46')]));if(_0x215a84[_0xdedb('0x44')]['filter']){_0x2f9f44[_0xdedb('0x4e')]=_[_0xdedb('0x51')](_0x2f9f44[_0xdedb('0x4e')],{'$or':_[_0xdedb('0x43')](_0x2f9f44['attributes'],function(_0xe61336){var _0x494814={};_0x494814[_0xe61336]={'$like':'%'+_0x215a84['query']['filter']+'%'};return _0x494814;})});}_0x2f9f44=_[_0xdedb('0x51')]({},_0x2f9f44,_0x215a84[_0xdedb('0x53')]);return _0x12d6ce[_0xdedb('0x81')](_0x2f9f44);}})[_0xdedb('0x1d')](function(_0x5ccd62){if(_0x5ccd62){_0x2c9675=_0x5ccd62[_0xdedb('0x5a')];if(!_0x215a84[_0xdedb('0x44')][_0xdedb('0x4a')](_0xdedb('0x68'))){_0x2f9f44['limit']=qs[_0xdedb('0x4b')](_0x215a84[_0xdedb('0x44')][_0xdedb('0x4b')]);_0x2f9f44[_0xdedb('0x2b')]=qs['offset'](_0x215a84[_0xdedb('0x44')][_0xdedb('0x2b')]);}return _0x12d6ce[_0xdedb('0x81')](_0x2f9f44);}})[_0xdedb('0x1d')](function(_0x338885){if(_0x338885){return _0x338885?{'count':_0x2c9675,'rows':_0x338885}:null;}})[_0xdedb('0x1d')](respondWithResult(_0x2e6f37,null))[_0xdedb('0x27')](handleError(_0x2e6f37,null));};exports[_0xdedb('0x82')]=function(_0x3a1c00,_0x40742c,_0xbf75c){var _0x5b322c={'channel':_0xdedb('0x83')};var _0x1daef0=[];var _0x3d01dc=[];var _0x4958f9={};return db['WhatsappAccount']['find']({'where':{'id':_0x3a1c00[_0xdedb('0x59')]['id']},'include':[{'model':db[_0xdedb('0x7e')],'as':_0xdedb('0x84')}]})['then'](handleEntityNotFound(_0x40742c,null))[_0xdedb('0x1d')](function(_0x30b713){_0x5b322c[_0xdedb('0x85')]=_0x30b713;if(_0x5b322c[_0xdedb('0x85')]&&_0x5b322c['account'][_0xdedb('0x40')]==='sinch'&&_0x3a1c00[_0xdedb('0x63')][_0xdedb('0x86')]){if(_0x3a1c00[_0xdedb('0x63')]['statuses'][_0xdedb('0x5a')]===0x0)return;if(_0x3a1c00[_0xdedb('0x63')][_0xdedb('0x86')][0x0][_0xdedb('0x87')]!=='read')return;return db[_0xdedb('0x88')]['update']({'read':!![],'readAt':_0x3a1c00[_0xdedb('0x63')][_0xdedb('0x86')][0x0]['timestamp']},{'where':{'messageId':_0x3a1c00[_0xdedb('0x63')][_0xdedb('0x86')][0x0][_0xdedb('0x89')]},'individualHooks':!![]})[_0xdedb('0x1d')](function(_0x1e8471){return _0x40742c[_0xdedb('0x2a')](0xc8)[_0xdedb('0x30')](_0x1e8471);});}_0x5b322c['applications']=_[_0xdedb('0x8a')](_0x30b713[_0xdedb('0x84')],[_0xdedb('0x80')],[_0xdedb('0x8b')]);if(_0x5b322c['account'][_0xdedb('0x84')]){delete _0x5b322c['account'][_0xdedb('0x84')];}return db[_0xdedb('0x8c')][_0xdedb('0x8d')]()[_0xdedb('0x1d')](function(_0x16bc48){if(!_0x16bc48){throw new db[(_0xdedb('0x8e'))][(_0xdedb('0x8f'))]('no\x20available\x20attributes');}_0x1daef0=_[_0xdedb('0x90')](_[_0xdedb('0x45')](_0x16bc48),[_0xdedb('0x91'),_0xdedb('0x92')]);_0x3d01dc=_['difference'](_[_0xdedb('0x45')](_0x16bc48),['createdAt',_0xdedb('0x92'),_0xdedb('0x93'),_0xdedb('0x94')]);_0x5b322c[_0xdedb('0x63')]={'mapKey':_0xdedb('0x95')};if(_0x5b322c['account']&&_0x5b322c[_0xdedb('0x85')][_0xdedb('0x40')]==='twilio'){_0x5b322c['body']['from']=_0x3a1c00[_0xdedb('0x63')]['From'][_0xdedb('0x96')](_0xdedb('0x97'),'');_0x5b322c[_0xdedb('0x63')][_0xdedb('0x63')]=_0x3a1c00[_0xdedb('0x63')][_0xdedb('0x98')];_0x5b322c[_0xdedb('0x63')][_0xdedb('0x99')]=_0x3a1c00[_0xdedb('0x63')][_0xdedb('0x9a')];}if(_0x5b322c[_0xdedb('0x85')]&&_0x5b322c[_0xdedb('0x85')][_0xdedb('0x40')]===_0xdedb('0x9b')){_0x5b322c[_0xdedb('0x63')][_0xdedb('0x9c')]=_0x3a1c00['body'][_0xdedb('0x9d')][0x0]['from'];_0x5b322c[_0xdedb('0x63')][_0xdedb('0x63')]=_0x3a1c00[_0xdedb('0x63')][_0xdedb('0x9d')][0x0]['message'][_0xdedb('0x63')];_0x5b322c[_0xdedb('0x63')][_0xdedb('0x99')]=_0x3a1c00['body'][_0xdedb('0x9d')][0x0][_0xdedb('0x89')];}if(_0x5b322c[_0xdedb('0x63')]['id']){delete _0x5b322c[_0xdedb('0x63')]['id'];}if(_[_0xdedb('0x9e')](_0x5b322c[_0xdedb('0x63')][_0xdedb('0x9c')])){throw new db[(_0xdedb('0x8e'))][(_0xdedb('0x8f'))](_0xdedb('0x9f'));}if(_[_0xdedb('0x9e')](_0x5b322c[_0xdedb('0x63')][_0xdedb('0x63')])||_0x5b322c['body'][_0xdedb('0x63')]===''){throw new db[(_0xdedb('0x8e'))][(_0xdedb('0x8f'))](_0xdedb('0xa0'));}if(_['isNil'](_0x5b322c[_0xdedb('0x63')]['mapKey'])){throw new db[(_0xdedb('0x8e'))]['ValidationError'](_0xdedb('0xa1')+_0x3d01dc);}if(!_[_0xdedb('0xa2')](_0x3d01dc,_0x5b322c[_0xdedb('0x63')]['mapKey'])){throw new db['Sequelize'][(_0xdedb('0x8f'))](_0xdedb('0xa3')+_0x3d01dc);}_0x4958f9[_0x5b322c[_0xdedb('0x63')][_0xdedb('0xa4')]]=_0x5b322c[_0xdedb('0x63')][_0xdedb('0x9c')];return db[_0xdedb('0xa5')]['find']({'where':{'id':_0x5b322c['account']['ListId']},'include':[{'model':db[_0xdedb('0x8c')],'as':_0xdedb('0xa6'),'where':_0x4958f9,'limit':0x1,'order':[[_0xdedb('0x92'),_0xdedb('0xa7')]]}]});})[_0xdedb('0x1d')](handleEntityNotFound(_0x40742c,null))['then'](function(_0x37087f){if(_0x37087f){_0x5b322c[_0xdedb('0xa8')]=_['omit'](_0x37087f,[_0xdedb('0xa6')]);if(_0x37087f[_0xdedb('0xa6')]['length']){return _0x37087f['Contacts'][0x0];}var _0x447ab3=_['defaults'](_0x5b322c[_0xdedb('0x63')],{'firstName':_0x5b322c['body'][_0xdedb('0x9c')],'ListId':_0x37087f['id']});_0x447ab3[_0x5b322c[_0xdedb('0x63')][_0xdedb('0xa4')]]=_0x5b322c['body'][_0xdedb('0x9c')];return db['CmContact'][_0xdedb('0x5c')](_0x447ab3,{'fields':_0x1daef0,'raw':!![]});}})[_0xdedb('0x1d')](handleEntityNotFound(_0x40742c,null))[_0xdedb('0x1d')](function(_0x267f3b){if(_0x267f3b){_0x5b322c['contact']=_0x267f3b;var _0x26428e={'ContactId':_0x267f3b['id'],'phone':_0x5b322c['body'][_0xdedb('0x9c')],'WhatsappAccountId':_0x3a1c00[_0xdedb('0x59')]['id']};var _0x2ba44e={'ContactId':_0x267f3b['id'],'WhatsappAccountId':_0x3a1c00[_0xdedb('0x59')]['id'],'closed':![]};return db[_0xdedb('0xa9')][_0xdedb('0x5b')]({'where':_0x2ba44e})[_0xdedb('0x1d')](function(_0x1a36ae){if(_0x1a36ae){return[_0x1a36ae,![]];}return db[_0xdedb('0xa9')][_0xdedb('0x5c')](_0x26428e)['then'](function(_0x327142){return[_0x327142,!![]];});});}})[_0xdedb('0x72')](function(_0x2445f8,_0x5eb48d){_0x5b322c[_0xdedb('0xaa')]=_0x2445f8[_0xdedb('0x36')]({'plain':!![]});_0x5b322c[_0xdedb('0xaa')]['created']=![];if(_0x5eb48d){if(_0x5b322c[_0xdedb('0x85')][_0xdedb('0xab')]){_0x5b322c[_0xdedb('0xac')][_0xdedb('0xad')]({'id':0x0,'priority':_0x5b322c['applications'][_0xdedb('0x5a')]+0x1,'app':_0xdedb('0xae'),'appdata':_0xdedb('0xaf'),'interval':'*,*,*,*'});}_0x5b322c[_0xdedb('0xaa')]['created']=!![];}return db['WhatsappMessage'][_0xdedb('0x5c')]({'phone':_0x5b322c[_0xdedb('0x63')]['from'],'messageId':_0x5b322c[_0xdedb('0x63')][_0xdedb('0x99')],'body':_0x5b322c[_0xdedb('0x63')][_0xdedb('0x63')],'WhatsappAccountId':_0x3a1c00['params']['id'],'WhatsappInteractionId':_0x2445f8['id'],'direction':'in','ContactId':_0x2445f8[_0xdedb('0xb0')],'AttachmentId':_0x5b322c[_0xdedb('0x63')][_0xdedb('0xb1')]});})[_0xdedb('0x1d')](function(_0x1029e3){_0x5b322c['message']=_0x1029e3;if(_0x5b322c[_0xdedb('0xaa')][_0xdedb('0xb2')]){return db[_0xdedb('0x77')][_0xdedb('0x5b')]({'attributes':['id',_0xdedb('0x39')],'where':{'id':_0x5b322c[_0xdedb('0xaa')]['UserId']}})['then'](function(_0x87f627){if(_0x87f627){_0x5b322c[_0xdedb('0xac')]['unshift']({'id':0x0,'priority':0x0,'app':_0xdedb('0xb3'),'appdata':_0x87f627[_0xdedb('0x39')]+','+(_0x5b322c[_0xdedb('0x85')][_0xdedb('0xb4')]||0xa),'interval':_0xdedb('0xb5')});}return respondWithRpcPromise(_0xdedb('0xb6'),_0xdedb('0xb7'),_0x5b322c);});}return respondWithRpcPromise(_0xdedb('0xb6'),'startRouting',_0x5b322c);})[_0xdedb('0x1d')](function(_0x156cb7){if(_0x156cb7){var _0x517c2f=0xc8;var _0x3497db=_0xdedb('0xb8');logger['info']('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x3497db,_0x517c2f,_0xdedb('0xb9'));logger[_0xdedb('0x21')](_0xdedb('0xba'),_0x3497db,_0x517c2f,_0xdedb('0xb9'),JSON[_0xdedb('0x22')](_0x156cb7));if(_0x5b322c['account'][_0xdedb('0x40')]==='twilio'){return _0x40742c['status'](_0x517c2f)['set'](_0xdedb('0xbb'),_0xdedb('0xbc'))['send'](_0xdedb('0xbd'));}else{return _0x40742c[_0xdedb('0x2a')](_0x517c2f)[_0xdedb('0x30')](_0x156cb7);}}});})[_0xdedb('0x27')](handleError(_0x40742c,null));};exports[_0xdedb('0x3a')]=function(_0x12c75b,_0x2347ad,_0x5dd270){var _0x56e0b6,_0x59f9b1,_0x250b7e;if(_[_0xdedb('0x9e')](_0x12c75b['body'][_0xdedb('0x63')])||_0x12c75b[_0xdedb('0x63')][_0xdedb('0x63')]===''){throw new db[(_0xdedb('0x8e'))][(_0xdedb('0x8f'))](_0xdedb('0xa0'));}if(_['isNil'](_0x12c75b[_0xdedb('0x63')]['to'])){throw new db[(_0xdedb('0x8e'))]['ValidationError']('to\x20is\x20mandatory');}_0x56e0b6=_0x12c75b[_0xdedb('0x63')]['to'];return db[_0xdedb('0x3d')][_0xdedb('0x5b')]({'where':{'id':_0x12c75b[_0xdedb('0x59')]['id']},'include':[{'model':db[_0xdedb('0xa5')],'as':_0xdedb('0xbe'),'include':[{'model':db['CmContact'],'as':_0xdedb('0xa6'),'where':{'mobile':_0x56e0b6},'limit':0x1,'order':[[_0xdedb('0x92'),_0xdedb('0xa7')]]}]}]})[_0xdedb('0x1d')](handleEntityNotFound(_0x2347ad,null))['then'](function(_0x556e4f){if(_0x556e4f&&_0x556e4f[_0xdedb('0xbe')]){_0x59f9b1=_0x556e4f[_0xdedb('0x36')]({'plain':!![]});if(_0x59f9b1[_0xdedb('0xbe')]&&_0x59f9b1[_0xdedb('0xbe')][_0xdedb('0xa6')]['length']){return _0x59f9b1[_0xdedb('0xbe')]['Contacts'][0x0];}return db[_0xdedb('0x8c')][_0xdedb('0x5c')](_[_0xdedb('0x18')](_0x12c75b[_0xdedb('0x63')],{'firstName':_0x56e0b6,'mobile':_0x56e0b6,'phone':_0x56e0b6,'ListId':_0x59f9b1[_0xdedb('0x94')]}));}})[_0xdedb('0x1d')](handleEntityNotFound(_0x2347ad,null))[_0xdedb('0x1d')](function(_0x2498dc){if(_0x2498dc){_0x250b7e=_0x2498dc;return db[_0xdedb('0xa9')][_0xdedb('0x5b')]({'where':{'ContactId':_0x250b7e['id'],'closed':![],'WhatsappAccountId':_0x59f9b1['id']}})[_0xdedb('0x1d')](function(_0x150617){if(_0x150617){return[_0x150617,![]];}return db[_0xdedb('0xa9')][_0xdedb('0x5c')]({'UserId':_0x12c75b[_0xdedb('0x5d')]['id'],'ContactId':_0x250b7e['id'],'WhatsappAccountId':_0x59f9b1['id'],'phone':_0x56e0b6,'firstMsgDirection':'out','Messages':[_['merge'](_0x12c75b[_0xdedb('0x63')],{'read':![],'body':_0x12c75b['body']['body'],'phone':_0x56e0b6,'WhatsappAccountId':_0x59f9b1['id'],'UserId':_0x12c75b[_0xdedb('0x5d')]['id'],'ContactId':_0x250b7e['id']})]},{'include':[{'model':db[_0xdedb('0x88')],'as':_0xdedb('0xbf')}]})[_0xdedb('0x1d')](function(_0x4e0acc){return[_0x4e0acc,!![]];});});}})['spread'](function(_0x1522c9,_0x1cb248){if(_0x1cb248){return _0x1522c9;}return db['WhatsappMessage'][_0xdedb('0x5c')](_[_0xdedb('0x51')](_0x12c75b[_0xdedb('0x63')],{'read':![],'body':_0x12c75b[_0xdedb('0x63')][_0xdedb('0x63')],'phone':_0x56e0b6,'WhatsappAccountId':_0x59f9b1['id'],'WhatsappInteractionId':_0x1522c9['id'],'UserId':_0x12c75b[_0xdedb('0x5d')]['id'],'ContactId':_0x250b7e['id']}))[_0xdedb('0x1d')](function(_0xcb3da5){_0x1522c9[_0xdedb('0xc0')]['Messages']=[];_0x1522c9[_0xdedb('0xc0')]['Messages']['push'](_0xcb3da5[_0xdedb('0xc0')]);return _0x1522c9;});})[_0xdedb('0x1d')](respondWithResult(_0x2347ad,null))[_0xdedb('0x27')](handleError(_0x2347ad,null));};
\ No newline at end of file
+var _0x3025=['crypto','desk.js','querystring','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./whatsappAccount.socket','register','jayson/promise','http','request','then','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','json','offset','undefined','count','limit','set','apply','save','update','destroy','get','WhatsappAccounts','UserProfileResource','stack','name','send','index','Pause','rawAttributes','type','model','map','query','keys','intersection','attributes','fields','length','order','where','filters','pick','filter','merge','options','WhatsappAccount','includeAll','findAll','params','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','mandatoryDispositionPause','describe','WhatsappAccountId','Disposition','getDispositions','findOne','hasOwnProperty','nolimit','sort','rows','removeDispositions','ids','CannedAnswer','removeAnswers','removeAgents','isArray','emit','userWhatsappAccount:remove','getAgents','User','addApplications','sequelize','transaction','ISOLATION_LEVELS','READ_COMMITTED','WhatsappApplication','bulkCreate','findAndCountAll','finally','getApplications','notify','whatsapp','Applications','account','sinch','statuses','read','WhatsappMessage','orderBy','priority','asc','ValidationError','createdAt','updatedAt','difference','ListId','mobile','twilio','From','replace','whatsapp:','Body','messageId','MessageSid','notifications','from','Sequelize','from\x20is\x20mandatory','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','CmContact','Contacts','omit','contact','WhatsappInteraction','spread','interaction','autoclose','applications','push','close','unmanaged','*,*,*,*','ContactId','AttachmentId','UserId','unshift','waitForTheAssignedAgent','Start','startRouting','receiveMessage','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','isNil','to\x20is\x20mandatory','List','out','Messages','dataValues','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','lodash','squel'];(function(_0x519c78,_0x20fdc7){var _0x224cb3=function(_0x2cd2ed){while(--_0x2cd2ed){_0x519c78['push'](_0x519c78['shift']());}};_0x224cb3(++_0x20fdc7);}(_0x3025,0x16a));var _0x5302=function(_0x34d4f1,_0x472338){_0x34d4f1=_0x34d4f1-0x0;var _0x3572a8=_0x3025[_0x34d4f1];return _0x3572a8;};'use strict';var emlformat=require(_0x5302('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5302('0x1'));var jsonpatch=require(_0x5302('0x2'));var rp=require(_0x5302('0x3'));var moment=require(_0x5302('0x4'));var BPromise=require(_0x5302('0x5'));var Mustache=require(_0x5302('0x6'));var util=require('util');var path=require(_0x5302('0x7'));var sox=require(_0x5302('0x8'));var csv=require(_0x5302('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5302('0xa'));var squel=require(_0x5302('0xb'));var crypto=require(_0x5302('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x5302('0xd'));var toCsv=require(_0x5302('0x9'));var querystring=require(_0x5302('0xe'));var Papa=require('papaparse');var Redis=require(_0x5302('0xf'));var authService=require(_0x5302('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5302('0x11'));var logger=require(_0x5302('0x12'))(_0x5302('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x5302('0x14'));var db=require(_0x5302('0x15'))['db'];config['redis']=_[_0x5302('0x16')](config[_0x5302('0x17')],{'host':_0x5302('0x18'),'port':0x18eb});var socket=require(_0x5302('0x19'))(new Redis(config[_0x5302('0x17')]));require(_0x5302('0x1a'))[_0x5302('0x1b')](socket);var jayson=require(_0x5302('0x1c'));var client=jayson['client'][_0x5302('0x1d')]({'port':0x232c});function respondWithRpcPromise(_0x3cd5fc,_0xb3387c,_0x2f137b,_0x3bf340){return new BPromise(function(_0x87805c,_0x56104b){var _0x149733=_0x3bf340||client;return _0x149733[_0x5302('0x1e')](_0x3cd5fc,_0x2f137b)[_0x5302('0x1f')](function(_0x5df2af){logger[_0x5302('0x20')](_0x5302('0x21'),_0xb3387c,_0x5302('0x22'));logger[_0x5302('0x23')](_0x5302('0x24'),_0xb3387c,_0x5302('0x22'),JSON[_0x5302('0x25')](_0x5df2af));if(_0x5df2af[_0x5302('0x26')]){if(_0x5df2af[_0x5302('0x26')][_0x5302('0x27')]===0x1f4){logger['error'](_0x5302('0x21'),_0xb3387c,_0x5df2af[_0x5302('0x26')]['message']);return _0x56104b(_0x5df2af[_0x5302('0x26')][_0x5302('0x28')]);}logger['error'](_0x5302('0x21'),_0xb3387c,_0x5df2af['error']['message']);return _0x87805c(_0x5df2af[_0x5302('0x26')][_0x5302('0x28')]);}else{logger['info'](_0x5302('0x21'),_0xb3387c,_0x5302('0x22'));_0x87805c(_0x5df2af[_0x5302('0x29')][_0x5302('0x28')]);}})[_0x5302('0x2a')](function(_0x5ebeb6){logger[_0x5302('0x26')]('WhatsappAccount,\x20%s,\x20%s',_0xb3387c,_0x5ebeb6);_0x56104b(_0x5ebeb6);});});}function respondWithStatusCode(_0x43710a,_0x56551d){_0x56551d=_0x56551d||0xcc;return function(_0x23f11f){if(_0x23f11f){return _0x43710a[_0x5302('0x2b')](_0x56551d);}return _0x43710a[_0x5302('0x2c')](_0x56551d)[_0x5302('0x2d')]();};}function respondWithResult(_0x14d742,_0x3a36ef){_0x3a36ef=_0x3a36ef||0xc8;return function(_0x93fbf4){if(_0x93fbf4){return _0x14d742[_0x5302('0x2c')](_0x3a36ef)[_0x5302('0x2e')](_0x93fbf4);}};}function respondWithFilteredResult(_0x472a08,_0x47ec01){return function(_0x186029){if(_0x186029){var _0x443dd6=typeof _0x47ec01[_0x5302('0x2f')]==='undefined'&&typeof _0x47ec01['limit']===_0x5302('0x30');var _0x182c22=_0x186029[_0x5302('0x31')];var _0x52de91=_0x443dd6?0x0:_0x47ec01[_0x5302('0x2f')];var _0xe244c2=_0x443dd6?_0x186029['count']:_0x47ec01[_0x5302('0x2f')]+_0x47ec01[_0x5302('0x32')];var _0x9d694e;if(_0xe244c2>=_0x182c22){_0xe244c2=_0x182c22;_0x9d694e=0xc8;}else{_0x9d694e=0xce;}_0x472a08[_0x5302('0x2c')](_0x9d694e);return _0x472a08[_0x5302('0x33')]('Content-Range',_0x52de91+'-'+_0xe244c2+'/'+_0x182c22)[_0x5302('0x2e')](_0x186029);}return null;};}function patchUpdates(_0x3a9c86){return function(_0x2f9cbf){try{jsonpatch[_0x5302('0x34')](_0x2f9cbf,_0x3a9c86,!![]);}catch(_0x8386d7){return BPromise['reject'](_0x8386d7);}return _0x2f9cbf[_0x5302('0x35')]();};}function saveUpdates(_0x95dfb6,_0x39f6c1){return function(_0x1a94b2){if(_0x1a94b2){return _0x1a94b2[_0x5302('0x36')](_0x95dfb6)[_0x5302('0x1f')](function(_0x3ba11d){return _0x3ba11d;});}return null;};}function removeEntity(_0x536113,_0x295699){return function(_0xb8adc0){if(_0xb8adc0){return _0xb8adc0[_0x5302('0x37')]()['then'](function(){var _0x5c29a3=_0xb8adc0[_0x5302('0x38')]({'plain':!![]});var _0xe5cad5=_0x5302('0x39');return db[_0x5302('0x3a')][_0x5302('0x37')]({'where':{'type':_0xe5cad5,'resourceId':_0x5c29a3['id']}})[_0x5302('0x1f')](function(){return _0xb8adc0;});})['then'](function(){_0x536113[_0x5302('0x2c')](0xcc)[_0x5302('0x2d')]();});}};}function handleEntityNotFound(_0x311e2c,_0x49bbd0){return function(_0x256bef){if(!_0x256bef){_0x311e2c['sendStatus'](0x194);}return _0x256bef;};}function handleError(_0x1c4c12,_0x8473f4){_0x8473f4=_0x8473f4||0x1f4;return function(_0x39c865){logger[_0x5302('0x26')](_0x39c865[_0x5302('0x3b')]);if(_0x39c865[_0x5302('0x3c')]){delete _0x39c865[_0x5302('0x3c')];}_0x1c4c12[_0x5302('0x2c')](_0x8473f4)[_0x5302('0x3d')](_0x39c865);};}exports[_0x5302('0x3e')]=function(_0x1a1bd2,_0x121465){var _0x1cc7d4={'include':[{'model':db[_0x5302('0x3f')],'as':'mandatoryDispositionPause'}]},_0xae63f={},_0x342543={'count':0x0,'rows':[]};var _0x2d7c2c=_['map'](db['WhatsappAccount'][_0x5302('0x40')],function(_0x38e45b){return{'name':_0x38e45b['fieldName'],'type':_0x38e45b[_0x5302('0x41')]['key']};});_0xae63f[_0x5302('0x42')]=_[_0x5302('0x43')](_0x2d7c2c,_0x5302('0x3c'));_0xae63f[_0x5302('0x44')]=_[_0x5302('0x45')](_0x1a1bd2[_0x5302('0x44')]);_0xae63f['filters']=_[_0x5302('0x46')](_0xae63f[_0x5302('0x42')],_0xae63f[_0x5302('0x44')]);_0x1cc7d4[_0x5302('0x47')]=_[_0x5302('0x46')](_0xae63f[_0x5302('0x42')],qs['fields'](_0x1a1bd2[_0x5302('0x44')][_0x5302('0x48')]));_0x1cc7d4['attributes']=_0x1cc7d4[_0x5302('0x47')][_0x5302('0x49')]?_0x1cc7d4['attributes']:_0xae63f['model'];if(!_0x1a1bd2['query']['hasOwnProperty']('nolimit')){_0x1cc7d4[_0x5302('0x32')]=qs[_0x5302('0x32')](_0x1a1bd2[_0x5302('0x44')][_0x5302('0x32')]);_0x1cc7d4['offset']=qs[_0x5302('0x2f')](_0x1a1bd2[_0x5302('0x44')]['offset']);}_0x1cc7d4[_0x5302('0x4a')]=qs['sort'](_0x1a1bd2[_0x5302('0x44')]['sort']);_0x1cc7d4[_0x5302('0x4b')]=qs[_0x5302('0x4c')](_[_0x5302('0x4d')](_0x1a1bd2[_0x5302('0x44')],_0xae63f[_0x5302('0x4c')]),_0x2d7c2c);if(_0x1a1bd2[_0x5302('0x44')]['filter']){_0x1cc7d4['where']=_['merge'](_0x1cc7d4[_0x5302('0x4b')],{'$or':_[_0x5302('0x43')](_0x2d7c2c,function(_0x34f019){if(_0x34f019[_0x5302('0x41')]!=='VIRTUAL'){var _0xd9b741={};_0xd9b741[_0x34f019[_0x5302('0x3c')]]={'$like':'%'+_0x1a1bd2[_0x5302('0x44')][_0x5302('0x4e')]+'%'};return _0xd9b741;}})});}_0x1cc7d4=_[_0x5302('0x4f')]({},_0x1cc7d4,_0x1a1bd2[_0x5302('0x50')]);var _0x57002f={'where':_0x1cc7d4[_0x5302('0x4b')]};return db[_0x5302('0x51')][_0x5302('0x31')](_0x57002f)['then'](function(_0x4ebf4e){_0x342543['count']=_0x4ebf4e;if(_0x1a1bd2[_0x5302('0x44')][_0x5302('0x52')]){_0x1cc7d4['include']=[{'all':!![]}];}return db[_0x5302('0x51')][_0x5302('0x53')](_0x1cc7d4);})[_0x5302('0x1f')](function(_0x37948e){_0x342543['rows']=_0x37948e;return _0x342543;})['then'](respondWithFilteredResult(_0x121465,_0x1cc7d4))['catch'](handleError(_0x121465,null));};exports['show']=function(_0x5b58a7,_0x1cf4af){var _0x181cc1={'raw':![],'where':{'id':_0x5b58a7[_0x5302('0x54')]['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x1f6715={};_0x1f6715['model']=_[_0x5302('0x45')](db[_0x5302('0x51')][_0x5302('0x40')]);_0x1f6715[_0x5302('0x44')]=_[_0x5302('0x45')](_0x5b58a7[_0x5302('0x44')]);_0x1f6715[_0x5302('0x4c')]=_[_0x5302('0x46')](_0x1f6715[_0x5302('0x42')],_0x1f6715['query']);_0x181cc1[_0x5302('0x47')]=_[_0x5302('0x46')](_0x1f6715[_0x5302('0x42')],qs[_0x5302('0x48')](_0x5b58a7[_0x5302('0x44')][_0x5302('0x48')]));_0x181cc1['attributes']=_0x181cc1['attributes'][_0x5302('0x49')]?_0x181cc1[_0x5302('0x47')]:_0x1f6715['model'];if(_0x5b58a7[_0x5302('0x44')]['includeAll']){_0x181cc1[_0x5302('0x55')]=[{'all':!![]}];}_0x181cc1=_[_0x5302('0x4f')]({},_0x181cc1,_0x5b58a7['options']);return db['WhatsappAccount'][_0x5302('0x56')](_0x181cc1)['then'](handleEntityNotFound(_0x1cf4af,null))['then'](respondWithResult(_0x1cf4af,null))[_0x5302('0x2a')](handleError(_0x1cf4af,null));};exports[_0x5302('0x57')]=function(_0x2eef48,_0x21fc08){return db['WhatsappAccount'][_0x5302('0x57')](_0x2eef48[_0x5302('0x58')],{})[_0x5302('0x1f')](function(_0x5dccb5){var _0x538cbc=_0x2eef48[_0x5302('0x59')][_0x5302('0x38')]({'plain':!![]});if(!_0x538cbc)throw new Error(_0x5302('0x5a'));if(_0x538cbc[_0x5302('0x5b')]===_0x5302('0x59')){var _0x160e87=_0x5dccb5[_0x5302('0x38')]({'plain':!![]});var _0x3ae1b5=_0x5302('0x39');return db[_0x5302('0x5c')][_0x5302('0x56')]({'where':{'name':_0x3ae1b5,'userProfileId':_0x538cbc[_0x5302('0x5d')]},'raw':!![]})[_0x5302('0x1f')](function(_0x51ec40){if(_0x51ec40&&_0x51ec40[_0x5302('0x5e')]===0x0){return db['UserProfileResource'][_0x5302('0x57')]({'name':_0x160e87[_0x5302('0x3c')],'resourceId':_0x160e87['id'],'type':_0x51ec40[_0x5302('0x3c')],'sectionId':_0x51ec40['id']},{})['then'](function(){return _0x5dccb5;});}else{return _0x5dccb5;}})[_0x5302('0x2a')](function(_0x2211c1){logger[_0x5302('0x26')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2211c1);throw _0x2211c1;});}return _0x5dccb5;})[_0x5302('0x1f')](respondWithResult(_0x21fc08,0xc9))[_0x5302('0x2a')](handleError(_0x21fc08,null));};exports[_0x5302('0x36')]=function(_0x387dba,_0x12e645){if(_0x387dba[_0x5302('0x58')]['id']){delete _0x387dba[_0x5302('0x58')]['id'];}return db['WhatsappAccount'][_0x5302('0x56')]({'where':{'id':_0x387dba['params']['id']},'include':[{'model':db[_0x5302('0x3f')],'as':_0x5302('0x5f')}]})[_0x5302('0x1f')](handleEntityNotFound(_0x12e645,null))[_0x5302('0x1f')](saveUpdates(_0x387dba[_0x5302('0x58')],null))['then'](respondWithResult(_0x12e645,null))['catch'](handleError(_0x12e645,null));};exports[_0x5302('0x37')]=function(_0x5621f4,_0x52b777){return db[_0x5302('0x51')][_0x5302('0x56')]({'where':{'id':_0x5621f4['params']['id']}})[_0x5302('0x1f')](handleEntityNotFound(_0x52b777,null))['then'](removeEntity(_0x52b777,null))[_0x5302('0x2a')](handleError(_0x52b777,null));};exports[_0x5302('0x60')]=function(_0x2d0117,_0x2ca118){return db[_0x5302('0x51')][_0x5302('0x60')]()[_0x5302('0x1f')](respondWithResult(_0x2ca118,null))[_0x5302('0x2a')](handleError(_0x2ca118,null));};exports['addDisposition']=function(_0x25d36d,_0x62c5b0,_0x87b484){if(_0x25d36d[_0x5302('0x58')]['id']){delete _0x25d36d[_0x5302('0x58')]['id'];}return db['WhatsappAccount']['find']({'where':{'id':_0x25d36d[_0x5302('0x54')]['id']}})[_0x5302('0x1f')](handleEntityNotFound(_0x62c5b0,null))['then'](function(_0x23fa3c){if(_0x23fa3c){_0x25d36d['body'][_0x5302('0x61')]=_0x23fa3c['id'];return db[_0x5302('0x62')][_0x5302('0x57')](_0x25d36d['body']);}})['then'](respondWithResult(_0x62c5b0,null))['catch'](handleError(_0x62c5b0,null));};exports[_0x5302('0x63')]=function(_0x4b4a7c,_0x215d99,_0x1ac63e){var _0x520206={'raw':![],'where':{}};var _0x4d9200={};var _0x24ee9f={'count':0x0,'rows':[]};return db[_0x5302('0x51')][_0x5302('0x64')]({'where':{'id':_0x4b4a7c[_0x5302('0x54')]['id']}})['then'](handleEntityNotFound(_0x215d99,null))[_0x5302('0x1f')](function(_0x25222c){if(_0x25222c){_0x4d9200[_0x5302('0x42')]=_['keys'](db['Disposition']['rawAttributes']);_0x4d9200['query']=_[_0x5302('0x45')](_0x4b4a7c['query']);_0x4d9200[_0x5302('0x4c')]=_[_0x5302('0x46')](_0x4d9200['model'],_0x4d9200['query']);_0x520206[_0x5302('0x47')]=_[_0x5302('0x46')](_0x4d9200[_0x5302('0x42')],qs[_0x5302('0x48')](_0x4b4a7c[_0x5302('0x44')][_0x5302('0x48')]));_0x520206['attributes']=_0x520206['attributes'][_0x5302('0x49')]?_0x520206['attributes']:_0x4d9200[_0x5302('0x42')];if(!_0x4b4a7c[_0x5302('0x44')][_0x5302('0x65')](_0x5302('0x66'))){_0x520206[_0x5302('0x32')]=qs[_0x5302('0x32')](_0x4b4a7c[_0x5302('0x44')][_0x5302('0x32')]);_0x520206[_0x5302('0x2f')]=qs[_0x5302('0x2f')](_0x4b4a7c[_0x5302('0x44')][_0x5302('0x2f')]);}_0x520206['order']=qs[_0x5302('0x67')](_0x4b4a7c['query'][_0x5302('0x67')]);_0x520206[_0x5302('0x4b')]=qs[_0x5302('0x4c')](_['pick'](_0x4b4a7c[_0x5302('0x44')],_0x4d9200[_0x5302('0x4c')]));_0x520206['where'][_0x5302('0x61')]=_0x25222c['id'];if(_0x4b4a7c[_0x5302('0x44')][_0x5302('0x4e')]){_0x520206[_0x5302('0x4b')]=_[_0x5302('0x4f')](_0x520206[_0x5302('0x4b')],{'$or':_[_0x5302('0x43')](_0x520206[_0x5302('0x47')],function(_0x24d689){var _0x2fbcbf={};_0x2fbcbf[_0x24d689]={'$like':'%'+_0x4b4a7c[_0x5302('0x44')][_0x5302('0x4e')]+'%'};return _0x2fbcbf;})});}_0x520206=_[_0x5302('0x4f')]({},_0x520206,_0x4b4a7c[_0x5302('0x50')]);return db['Disposition'][_0x5302('0x31')]({'where':_0x520206[_0x5302('0x4b')]})[_0x5302('0x1f')](function(_0x5d6a6e){_0x24ee9f[_0x5302('0x31')]=_0x5d6a6e;if(_0x4b4a7c[_0x5302('0x44')][_0x5302('0x52')]){_0x520206[_0x5302('0x55')]=[{'all':!![]}];}return db[_0x5302('0x62')][_0x5302('0x53')](_0x520206);})[_0x5302('0x1f')](function(_0x3dd282){_0x24ee9f[_0x5302('0x68')]=_0x3dd282;return _0x24ee9f;});}})[_0x5302('0x1f')](respondWithFilteredResult(_0x215d99,_0x520206))[_0x5302('0x2a')](handleError(_0x215d99,null));};exports[_0x5302('0x69')]=function(_0x234792,_0xb41035,_0x54bf50){return db[_0x5302('0x51')][_0x5302('0x56')]({'where':{'id':_0x234792[_0x5302('0x54')]['id']}})[_0x5302('0x1f')](handleEntityNotFound(_0xb41035,null))['then'](function(_0x4a8fd1){if(_0x4a8fd1){return _0x4a8fd1[_0x5302('0x69')](_0x234792[_0x5302('0x44')][_0x5302('0x6a')]);}})[_0x5302('0x1f')](respondWithStatusCode(_0xb41035,null))[_0x5302('0x2a')](handleError(_0xb41035,null));};exports['addAnswer']=function(_0x33d661,_0x1400f0,_0x3ac7fd){if(_0x33d661[_0x5302('0x58')]['id']){delete _0x33d661[_0x5302('0x58')]['id'];}return db[_0x5302('0x51')][_0x5302('0x56')]({'where':{'id':_0x33d661[_0x5302('0x54')]['id']}})[_0x5302('0x1f')](handleEntityNotFound(_0x1400f0,null))[_0x5302('0x1f')](function(_0x1e2e45){if(_0x1e2e45){_0x33d661['body'][_0x5302('0x61')]=_0x1e2e45['id'];return db['CannedAnswer'][_0x5302('0x57')](_0x33d661[_0x5302('0x58')]);}})['then'](respondWithResult(_0x1400f0,null))[_0x5302('0x2a')](handleError(_0x1400f0,null));};exports['getAnswers']=function(_0x42095e,_0x857e16,_0x2ade82){var _0x3ca407={'raw':![],'where':{}};var _0x4abc8f={};var _0x5ad168={'count':0x0,'rows':[]};return db[_0x5302('0x51')][_0x5302('0x64')]({'where':{'id':_0x42095e[_0x5302('0x54')]['id']}})[_0x5302('0x1f')](handleEntityNotFound(_0x857e16,null))['then'](function(_0x365f57){if(_0x365f57){_0x4abc8f[_0x5302('0x42')]=_['keys'](db['CannedAnswer'][_0x5302('0x40')]);_0x4abc8f[_0x5302('0x44')]=_[_0x5302('0x45')](_0x42095e[_0x5302('0x44')]);_0x4abc8f[_0x5302('0x4c')]=_[_0x5302('0x46')](_0x4abc8f['model'],_0x4abc8f[_0x5302('0x44')]);_0x3ca407[_0x5302('0x47')]=_[_0x5302('0x46')](_0x4abc8f['model'],qs[_0x5302('0x48')](_0x42095e[_0x5302('0x44')]['fields']));_0x3ca407[_0x5302('0x47')]=_0x3ca407['attributes']['length']?_0x3ca407[_0x5302('0x47')]:_0x4abc8f[_0x5302('0x42')];if(!_0x42095e['query'][_0x5302('0x65')](_0x5302('0x66'))){_0x3ca407['limit']=qs['limit'](_0x42095e['query'][_0x5302('0x32')]);_0x3ca407[_0x5302('0x2f')]=qs[_0x5302('0x2f')](_0x42095e[_0x5302('0x44')]['offset']);}_0x3ca407[_0x5302('0x4a')]=qs[_0x5302('0x67')](_0x42095e[_0x5302('0x44')][_0x5302('0x67')]);_0x3ca407[_0x5302('0x4b')]=qs[_0x5302('0x4c')](_[_0x5302('0x4d')](_0x42095e[_0x5302('0x44')],_0x4abc8f['filters']));_0x3ca407['where'][_0x5302('0x61')]=_0x365f57['id'];if(_0x42095e[_0x5302('0x44')][_0x5302('0x4e')]){_0x3ca407[_0x5302('0x4b')]=_[_0x5302('0x4f')](_0x3ca407[_0x5302('0x4b')],{'$or':_[_0x5302('0x43')](_0x3ca407[_0x5302('0x47')],function(_0x37c87c){var _0x64605a={};_0x64605a[_0x37c87c]={'$like':'%'+_0x42095e[_0x5302('0x44')]['filter']+'%'};return _0x64605a;})});}_0x3ca407=_[_0x5302('0x4f')]({},_0x3ca407,_0x42095e[_0x5302('0x50')]);return db[_0x5302('0x6b')][_0x5302('0x31')]({'where':_0x3ca407[_0x5302('0x4b')]})[_0x5302('0x1f')](function(_0x483508){_0x5ad168['count']=_0x483508;if(_0x42095e[_0x5302('0x44')][_0x5302('0x52')]){_0x3ca407[_0x5302('0x55')]=[{'all':!![]}];}return db[_0x5302('0x6b')][_0x5302('0x53')](_0x3ca407);})[_0x5302('0x1f')](function(_0x3b3771){_0x5ad168[_0x5302('0x68')]=_0x3b3771;return _0x5ad168;});}})[_0x5302('0x1f')](respondWithFilteredResult(_0x857e16,_0x3ca407))[_0x5302('0x2a')](handleError(_0x857e16,null));};exports[_0x5302('0x6c')]=function(_0x20d2c4,_0x4d20c8,_0x214d6c){return db[_0x5302('0x51')]['find']({'where':{'id':_0x20d2c4[_0x5302('0x54')]['id']}})[_0x5302('0x1f')](handleEntityNotFound(_0x4d20c8,null))[_0x5302('0x1f')](function(_0x38eb51){if(_0x38eb51){return _0x38eb51['removeAnswers'](_0x20d2c4[_0x5302('0x44')]['ids']);}})[_0x5302('0x1f')](respondWithStatusCode(_0x4d20c8,null))[_0x5302('0x2a')](handleError(_0x4d20c8,null));};exports['addAgents']=function(_0x13df89,_0x5e9022,_0x43c2a1){return db[_0x5302('0x51')][_0x5302('0x56')]({'where':{'id':_0x13df89[_0x5302('0x54')]['id']}})[_0x5302('0x1f')](handleEntityNotFound(_0x5e9022,null))['then'](function(_0x24f1ad){if(_0x24f1ad){return _0x24f1ad['addAgents'](_0x13df89[_0x5302('0x58')][_0x5302('0x6a')],_['omit'](_0x13df89[_0x5302('0x58')],[_0x5302('0x6a'),'id'])||{})['spread'](function(_0x36ce29){for(var _0x5e46f4=0x0;_0x5e46f4<_0x13df89[_0x5302('0x58')][_0x5302('0x6a')][_0x5302('0x49')];_0x5e46f4+=0x1){socket['emit']('userWhatsappAccount:save',{'UserId':Number(_0x13df89[_0x5302('0x58')][_0x5302('0x6a')][_0x5e46f4]),'WhatsappAccountId':Number(_0x13df89['params']['id'])});}return _0x36ce29;});}})['then'](respondWithResult(_0x5e9022,null))[_0x5302('0x2a')](handleError(_0x5e9022,null));};exports[_0x5302('0x6d')]=function(_0x366099,_0x35e7bf,_0x463959){return db['WhatsappAccount'][_0x5302('0x56')]({'where':{'id':_0x366099[_0x5302('0x54')]['id']}})[_0x5302('0x1f')](handleEntityNotFound(_0x35e7bf,null))[_0x5302('0x1f')](function(_0xba3e37){if(_0xba3e37){return _0xba3e37[_0x5302('0x6d')](_0x366099[_0x5302('0x44')]['ids'])['then'](function(){if(_[_0x5302('0x6e')](_0x366099[_0x5302('0x44')]['ids'])){for(var _0x349e62=0x0;_0x349e62<_0x366099[_0x5302('0x44')][_0x5302('0x6a')][_0x5302('0x49')];_0x349e62+=0x1){socket[_0x5302('0x6f')]('userWhatsappAccount:remove',{'UserId':Number(_0x366099['query'][_0x5302('0x6a')][_0x349e62]),'WhatsappAccountId':Number(_0x366099[_0x5302('0x54')]['id'])});}}else{socket[_0x5302('0x6f')](_0x5302('0x70'),{'UserId':Number(_0x366099[_0x5302('0x44')][_0x5302('0x6a')]),'WhatsappAccountId':Number(_0x366099['params']['id'])});}});}})[_0x5302('0x1f')](respondWithStatusCode(_0x35e7bf,null))[_0x5302('0x2a')](handleError(_0x35e7bf,null));};exports[_0x5302('0x71')]=function(_0x59c623,_0x4737c5,_0x2ab5ec){var _0x194cfa={};var _0x421ab8={};var _0x1420c2;var _0x42ad28;return db[_0x5302('0x51')][_0x5302('0x64')]({'where':{'id':_0x59c623['params']['id']}})[_0x5302('0x1f')](handleEntityNotFound(_0x4737c5,null))['then'](function(_0x229a84){if(_0x229a84){_0x1420c2=_0x229a84;_0x421ab8[_0x5302('0x42')]=_['keys'](db[_0x5302('0x72')][_0x5302('0x40')]);_0x421ab8['query']=_[_0x5302('0x45')](_0x59c623['query']);_0x421ab8[_0x5302('0x4c')]=_[_0x5302('0x46')](_0x421ab8[_0x5302('0x42')],_0x421ab8['query']);_0x194cfa[_0x5302('0x47')]=_[_0x5302('0x46')](_0x421ab8[_0x5302('0x42')],qs['fields'](_0x59c623['query'][_0x5302('0x48')]));_0x194cfa[_0x5302('0x47')]=_0x194cfa[_0x5302('0x47')]['length']?_0x194cfa['attributes']:_0x421ab8[_0x5302('0x42')];_0x194cfa[_0x5302('0x4a')]=qs[_0x5302('0x67')](_0x59c623[_0x5302('0x44')][_0x5302('0x67')]);_0x194cfa[_0x5302('0x4b')]=qs['filters'](_[_0x5302('0x4d')](_0x59c623[_0x5302('0x44')],_0x421ab8['filters']));if(_0x59c623[_0x5302('0x44')][_0x5302('0x4e')]){_0x194cfa[_0x5302('0x4b')]=_[_0x5302('0x4f')](_0x194cfa[_0x5302('0x4b')],{'$or':_[_0x5302('0x43')](_0x194cfa[_0x5302('0x47')],function(_0x4e3c21){var _0x317a4b={};_0x317a4b[_0x4e3c21]={'$like':'%'+_0x59c623[_0x5302('0x44')]['filter']+'%'};return _0x317a4b;})});}_0x194cfa=_[_0x5302('0x4f')]({},_0x194cfa,_0x59c623['options']);return _0x1420c2[_0x5302('0x71')](_0x194cfa);}})['then'](function(_0x1a4f0b){if(_0x1a4f0b){_0x42ad28=_0x1a4f0b['length'];if(!_0x59c623[_0x5302('0x44')][_0x5302('0x65')]('nolimit')){_0x194cfa[_0x5302('0x32')]=qs['limit'](_0x59c623[_0x5302('0x44')][_0x5302('0x32')]);_0x194cfa[_0x5302('0x2f')]=qs[_0x5302('0x2f')](_0x59c623[_0x5302('0x44')][_0x5302('0x2f')]);}return _0x1420c2[_0x5302('0x71')](_0x194cfa);}})['then'](function(_0x26b3ca){if(_0x26b3ca){return _0x26b3ca?{'count':_0x42ad28,'rows':_0x26b3ca}:null;}})[_0x5302('0x1f')](respondWithResult(_0x4737c5,null))[_0x5302('0x2a')](handleError(_0x4737c5,null));};exports[_0x5302('0x73')]=function(_0x9404fd,_0x533d02){var _0x213baa=_0x9404fd[_0x5302('0x54')]['id'];var _0x519c97=_0x9404fd[_0x5302('0x58')];var _0x384979=0xc8;var _0x22d304=null;return db[_0x5302('0x74')][_0x5302('0x75')]({'isolationLevel':db[_0x5302('0x74')]['Transaction'][_0x5302('0x76')][_0x5302('0x77')]},function(_0x40b5b0){return db[_0x5302('0x51')][_0x5302('0x64')]({'where':{'id':_0x213baa},'transaction':_0x40b5b0})['then'](function(_0x1fc7c0){if(_0x1fc7c0){return db[_0x5302('0x78')][_0x5302('0x37')]({'where':{'WhatsappAccountId':_0x213baa},'transaction':_0x40b5b0})[_0x5302('0x1f')](function(){var _0x2cdea6=_['map'](_0x519c97,function(_0x457d7c){_0x457d7c['WhatsappAccountId']=_0x213baa;return _0x457d7c;});return db[_0x5302('0x78')][_0x5302('0x79')](_0x2cdea6,{'transaction':_0x40b5b0});});}else{_0x384979=0x194;_0x22d304=[];}});})[_0x5302('0x1f')](function(){if(_0x384979!==0x194){return db[_0x5302('0x78')][_0x5302('0x7a')]({'where':{'WhatsappAccountId':_0x213baa},'order':'priority'})[_0x5302('0x1f')](function(_0x19d949){_0x22d304=_0x19d949;});}})[_0x5302('0x2a')](function(_0x576686){_0x384979=0x1f4;logger['error'](_0x576686[_0x5302('0x3b')]);if(_0x576686[_0x5302('0x3c')]){delete _0x576686['name'];}_0x22d304=_0x576686;})[_0x5302('0x7b')](function(){if(_0x22d304===null){_0x533d02['sendStatus'](_0x384979);}else{if(_0x384979===0x1f4){_0x533d02[_0x5302('0x2c')](_0x384979)[_0x5302('0x3d')](_0x22d304);}else{_0x533d02[_0x5302('0x2c')](_0x384979)['json'](_0x22d304);}}});};exports[_0x5302('0x7c')]=function(_0x3f1dbb,_0x18716b,_0x161c39){var _0xb61a5d={};var _0x17ec15={};var _0x55c3b;var _0x389f30;return db[_0x5302('0x51')][_0x5302('0x64')]({'where':{'id':_0x3f1dbb[_0x5302('0x54')]['id']}})['then'](handleEntityNotFound(_0x18716b,null))['then'](function(_0x5f2e33){if(_0x5f2e33){_0x55c3b=_0x5f2e33;_0x17ec15['model']=_['keys'](db[_0x5302('0x78')][_0x5302('0x40')]);_0x17ec15[_0x5302('0x44')]=_[_0x5302('0x45')](_0x3f1dbb[_0x5302('0x44')]);_0x17ec15[_0x5302('0x4c')]=_[_0x5302('0x46')](_0x17ec15['model'],_0x17ec15['query']);_0xb61a5d[_0x5302('0x47')]=_['intersection'](_0x17ec15[_0x5302('0x42')],qs['fields'](_0x3f1dbb[_0x5302('0x44')][_0x5302('0x48')]));_0xb61a5d[_0x5302('0x47')]=_0xb61a5d['attributes'][_0x5302('0x49')]?_0xb61a5d[_0x5302('0x47')]:_0x17ec15[_0x5302('0x42')];_0xb61a5d[_0x5302('0x4a')]=qs['sort'](_0x3f1dbb['query'][_0x5302('0x67')]);_0xb61a5d[_0x5302('0x4b')]=qs[_0x5302('0x4c')](_[_0x5302('0x4d')](_0x3f1dbb['query'],_0x17ec15[_0x5302('0x4c')]));if(_0x3f1dbb['query'][_0x5302('0x4e')]){_0xb61a5d[_0x5302('0x4b')]=_[_0x5302('0x4f')](_0xb61a5d[_0x5302('0x4b')],{'$or':_[_0x5302('0x43')](_0xb61a5d[_0x5302('0x47')],function(_0x327fa7){var _0x3939e2={};_0x3939e2[_0x327fa7]={'$like':'%'+_0x3f1dbb[_0x5302('0x44')][_0x5302('0x4e')]+'%'};return _0x3939e2;})});}_0xb61a5d=_[_0x5302('0x4f')]({},_0xb61a5d,_0x3f1dbb[_0x5302('0x50')]);return _0x55c3b[_0x5302('0x7c')](_0xb61a5d);}})[_0x5302('0x1f')](function(_0x33001c){if(_0x33001c){_0x389f30=_0x33001c[_0x5302('0x49')];if(!_0x3f1dbb[_0x5302('0x44')]['hasOwnProperty'](_0x5302('0x66'))){_0xb61a5d[_0x5302('0x32')]=qs[_0x5302('0x32')](_0x3f1dbb[_0x5302('0x44')][_0x5302('0x32')]);_0xb61a5d[_0x5302('0x2f')]=qs['offset'](_0x3f1dbb[_0x5302('0x44')][_0x5302('0x2f')]);}return _0x55c3b[_0x5302('0x7c')](_0xb61a5d);}})[_0x5302('0x1f')](function(_0xdbe38a){if(_0xdbe38a){return _0xdbe38a?{'count':_0x389f30,'rows':_0xdbe38a}:null;}})[_0x5302('0x1f')](respondWithResult(_0x18716b,null))[_0x5302('0x2a')](handleError(_0x18716b,null));};exports[_0x5302('0x7d')]=function(_0x2105f9,_0x16c07f,_0x1accfb){var _0x59632c={'channel':_0x5302('0x7e')};var _0x5be486=[];var _0x28bca3=[];var _0x3281cb={};return db[_0x5302('0x51')]['find']({'where':{'id':_0x2105f9['params']['id']},'include':[{'model':db[_0x5302('0x78')],'as':_0x5302('0x7f')}]})['then'](handleEntityNotFound(_0x16c07f,null))[_0x5302('0x1f')](function(_0x41194f){_0x59632c[_0x5302('0x80')]=_0x41194f;if(_0x59632c['account']&&_0x59632c['account'][_0x5302('0x41')]===_0x5302('0x81')&&_0x2105f9[_0x5302('0x58')][_0x5302('0x82')]){if(_0x2105f9[_0x5302('0x58')][_0x5302('0x82')][_0x5302('0x49')]===0x0)return;if(_0x2105f9[_0x5302('0x58')][_0x5302('0x82')][0x0]['state']!==_0x5302('0x83'))return;return db[_0x5302('0x84')][_0x5302('0x36')]({'read':!![],'readAt':_0x2105f9[_0x5302('0x58')][_0x5302('0x82')][0x0]['timestamp']},{'where':{'messageId':_0x2105f9['body']['statuses'][0x0]['message_id']},'individualHooks':!![]})[_0x5302('0x1f')](function(_0x124990){return _0x16c07f[_0x5302('0x2c')](0xc8)[_0x5302('0x2e')](_0x124990);});}_0x59632c['applications']=_[_0x5302('0x85')](_0x41194f[_0x5302('0x7f')],[_0x5302('0x86')],[_0x5302('0x87')]);if(_0x59632c[_0x5302('0x80')]['Applications']){delete _0x59632c['account'][_0x5302('0x7f')];}return db['CmContact']['describe']()[_0x5302('0x1f')](function(_0x1aed60){if(!_0x1aed60){throw new db['Sequelize'][(_0x5302('0x88'))]('no\x20available\x20attributes');}_0x5be486=_['difference'](_[_0x5302('0x45')](_0x1aed60),[_0x5302('0x89'),_0x5302('0x8a')]);_0x28bca3=_[_0x5302('0x8b')](_[_0x5302('0x45')](_0x1aed60),['createdAt','updatedAt','CompanyId',_0x5302('0x8c')]);_0x59632c[_0x5302('0x58')]={'mapKey':_0x5302('0x8d')};if(_0x59632c[_0x5302('0x80')]&&_0x59632c[_0x5302('0x80')][_0x5302('0x41')]===_0x5302('0x8e')){_0x59632c[_0x5302('0x58')]['from']=_0x2105f9[_0x5302('0x58')][_0x5302('0x8f')][_0x5302('0x90')](_0x5302('0x91'),'');_0x59632c[_0x5302('0x58')][_0x5302('0x58')]=_0x2105f9[_0x5302('0x58')][_0x5302('0x92')];_0x59632c[_0x5302('0x58')][_0x5302('0x93')]=_0x2105f9[_0x5302('0x58')][_0x5302('0x94')];}if(_0x59632c['account']&&_0x59632c['account'][_0x5302('0x41')]===_0x5302('0x81')){_0x59632c['body']['from']=_0x2105f9['body'][_0x5302('0x95')][0x0][_0x5302('0x96')];_0x59632c['body'][_0x5302('0x58')]=_0x2105f9['body'][_0x5302('0x95')][0x0]['message'][_0x5302('0x58')];_0x59632c['body'][_0x5302('0x93')]=_0x2105f9[_0x5302('0x58')][_0x5302('0x95')][0x0]['message_id'];}if(_0x59632c['body']['id']){delete _0x59632c[_0x5302('0x58')]['id'];}if(_['isNil'](_0x59632c['body']['from'])){throw new db[(_0x5302('0x97'))][(_0x5302('0x88'))](_0x5302('0x98'));}if(_['isNil'](_0x59632c['body'][_0x5302('0x58')])||_0x59632c[_0x5302('0x58')][_0x5302('0x58')]===''){throw new db['Sequelize'][(_0x5302('0x88'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_['isNil'](_0x59632c[_0x5302('0x58')][_0x5302('0x99')])){throw new db[(_0x5302('0x97'))][(_0x5302('0x88'))](_0x5302('0x9a')+_0x28bca3);}if(!_['includes'](_0x28bca3,_0x59632c['body'][_0x5302('0x99')])){throw new db[(_0x5302('0x97'))]['ValidationError'](_0x5302('0x9b')+_0x28bca3);}_0x3281cb[_0x59632c[_0x5302('0x58')]['mapKey']]=_0x59632c[_0x5302('0x58')][_0x5302('0x96')];return db[_0x5302('0x9c')]['find']({'where':{'id':_0x59632c[_0x5302('0x80')]['ListId']},'include':[{'model':db[_0x5302('0x9d')],'as':_0x5302('0x9e'),'where':_0x3281cb,'limit':0x1,'order':[[_0x5302('0x8a'),'DESC']]}]});})[_0x5302('0x1f')](handleEntityNotFound(_0x16c07f,null))[_0x5302('0x1f')](function(_0x1c7f92){if(_0x1c7f92){_0x59632c['list']=_[_0x5302('0x9f')](_0x1c7f92,['Contacts']);if(_0x1c7f92[_0x5302('0x9e')]['length']){return _0x1c7f92['Contacts'][0x0];}var _0x2e52df=_[_0x5302('0x16')](_0x59632c[_0x5302('0x58')],{'firstName':_0x59632c[_0x5302('0x58')]['from'],'ListId':_0x1c7f92['id']});_0x2e52df[_0x59632c[_0x5302('0x58')][_0x5302('0x99')]]=_0x59632c[_0x5302('0x58')][_0x5302('0x96')];return db[_0x5302('0x9d')][_0x5302('0x57')](_0x2e52df,{'fields':_0x5be486,'raw':!![]});}})[_0x5302('0x1f')](handleEntityNotFound(_0x16c07f,null))[_0x5302('0x1f')](function(_0x5f4f9b){if(_0x5f4f9b){_0x59632c[_0x5302('0xa0')]=_0x5f4f9b;var _0x371bec={'ContactId':_0x5f4f9b['id'],'phone':_0x59632c[_0x5302('0x58')]['from'],'WhatsappAccountId':_0x2105f9[_0x5302('0x54')]['id']};var _0x430d07={'ContactId':_0x5f4f9b['id'],'WhatsappAccountId':_0x2105f9[_0x5302('0x54')]['id'],'closed':![]};return db['WhatsappInteraction'][_0x5302('0x56')]({'where':_0x430d07})[_0x5302('0x1f')](function(_0x37b9ee){if(_0x37b9ee){return[_0x37b9ee,![]];}return db[_0x5302('0xa1')][_0x5302('0x57')](_0x371bec)[_0x5302('0x1f')](function(_0x13c0d3){return[_0x13c0d3,!![]];});});}})[_0x5302('0xa2')](function(_0xd897bf,_0x2883d2){_0x59632c[_0x5302('0xa3')]=_0xd897bf[_0x5302('0x38')]({'plain':!![]});_0x59632c['interaction']['created']=![];if(_0x2883d2){if(_0x59632c[_0x5302('0x80')][_0x5302('0xa4')]){_0x59632c[_0x5302('0xa5')][_0x5302('0xa6')]({'id':0x0,'priority':_0x59632c[_0x5302('0xa5')][_0x5302('0x49')]+0x1,'app':_0x5302('0xa7'),'appdata':_0x5302('0xa8'),'interval':_0x5302('0xa9')});}_0x59632c['interaction']['created']=!![];}return db[_0x5302('0x84')][_0x5302('0x57')]({'phone':_0x59632c[_0x5302('0x58')][_0x5302('0x96')],'messageId':_0x59632c[_0x5302('0x58')][_0x5302('0x93')],'body':_0x59632c[_0x5302('0x58')][_0x5302('0x58')],'WhatsappAccountId':_0x2105f9[_0x5302('0x54')]['id'],'WhatsappInteractionId':_0xd897bf['id'],'direction':'in','ContactId':_0xd897bf[_0x5302('0xaa')],'AttachmentId':_0x59632c[_0x5302('0x58')][_0x5302('0xab')]});})[_0x5302('0x1f')](function(_0x4c9d91){_0x59632c[_0x5302('0x28')]=_0x4c9d91;if(_0x59632c['interaction'][_0x5302('0xac')]){return db[_0x5302('0x72')][_0x5302('0x56')]({'attributes':['id','name'],'where':{'id':_0x59632c[_0x5302('0xa3')][_0x5302('0xac')]}})[_0x5302('0x1f')](function(_0x472f75){if(_0x472f75){_0x59632c[_0x5302('0xa5')][_0x5302('0xad')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x472f75[_0x5302('0x3c')]+','+(_0x59632c[_0x5302('0x80')][_0x5302('0xae')]||0xa),'interval':_0x5302('0xa9')});}return respondWithRpcPromise(_0x5302('0xaf'),_0x5302('0xb0'),_0x59632c);});}return respondWithRpcPromise(_0x5302('0xaf'),_0x5302('0xb0'),_0x59632c);})[_0x5302('0x1f')](function(_0x5702bc){if(_0x5702bc){var _0x35fe1a=0xc8;var _0x3d5fcd=_0x5302('0xb1');logger[_0x5302('0x20')](_0x5302('0x24'),_0x3d5fcd,_0x35fe1a,'entity\x20found');logger[_0x5302('0x23')]('WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s',_0x3d5fcd,_0x35fe1a,'entity\x20found',JSON[_0x5302('0x25')](_0x5702bc));if(_0x59632c[_0x5302('0x80')][_0x5302('0x41')]===_0x5302('0x8e')){return _0x16c07f[_0x5302('0x2c')](_0x35fe1a)[_0x5302('0x33')](_0x5302('0xb2'),_0x5302('0xb3'))['send'](_0x5302('0xb4'));}else{return _0x16c07f['status'](_0x35fe1a)[_0x5302('0x2e')](_0x5702bc);}}});})[_0x5302('0x2a')](handleError(_0x16c07f,null));};exports['send']=function(_0x49ae4b,_0xe42e95,_0x44543c){var _0xf75fa2,_0x12be8c,_0x4e8077;if(_[_0x5302('0xb5')](_0x49ae4b[_0x5302('0x58')]['body'])||_0x49ae4b[_0x5302('0x58')][_0x5302('0x58')]===''){throw new db[(_0x5302('0x97'))][(_0x5302('0x88'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x5302('0xb5')](_0x49ae4b['body']['to'])){throw new db[(_0x5302('0x97'))]['ValidationError'](_0x5302('0xb6'));}_0xf75fa2=_0x49ae4b[_0x5302('0x58')]['to'];return db[_0x5302('0x51')][_0x5302('0x56')]({'where':{'id':_0x49ae4b[_0x5302('0x54')]['id']},'include':[{'model':db[_0x5302('0x9c')],'as':'List','include':[{'model':db[_0x5302('0x9d')],'as':_0x5302('0x9e'),'where':{'mobile':_0xf75fa2},'limit':0x1,'order':[[_0x5302('0x8a'),'DESC']]}]}]})['then'](handleEntityNotFound(_0xe42e95,null))[_0x5302('0x1f')](function(_0x3d960a){if(_0x3d960a&&_0x3d960a[_0x5302('0xb7')]){_0x12be8c=_0x3d960a[_0x5302('0x38')]({'plain':!![]});if(_0x12be8c[_0x5302('0xb7')]&&_0x12be8c[_0x5302('0xb7')]['Contacts'][_0x5302('0x49')]){return _0x12be8c[_0x5302('0xb7')][_0x5302('0x9e')][0x0];}return db[_0x5302('0x9d')][_0x5302('0x57')](_[_0x5302('0x16')](_0x49ae4b[_0x5302('0x58')],{'firstName':_0xf75fa2,'mobile':_0xf75fa2,'phone':_0xf75fa2,'ListId':_0x12be8c[_0x5302('0x8c')]}));}})[_0x5302('0x1f')](handleEntityNotFound(_0xe42e95,null))[_0x5302('0x1f')](function(_0x16f280){if(_0x16f280){_0x4e8077=_0x16f280;return db['WhatsappInteraction'][_0x5302('0x56')]({'where':{'ContactId':_0x4e8077['id'],'closed':![],'WhatsappAccountId':_0x12be8c['id']}})[_0x5302('0x1f')](function(_0x2ab6ea){if(_0x2ab6ea){return[_0x2ab6ea,![]];}return db[_0x5302('0xa1')][_0x5302('0x57')]({'UserId':_0x49ae4b['user']['id'],'ContactId':_0x4e8077['id'],'WhatsappAccountId':_0x12be8c['id'],'phone':_0xf75fa2,'firstMsgDirection':_0x5302('0xb8'),'Messages':[_[_0x5302('0x4f')](_0x49ae4b['body'],{'read':![],'body':_0x49ae4b[_0x5302('0x58')][_0x5302('0x58')],'phone':_0xf75fa2,'WhatsappAccountId':_0x12be8c['id'],'UserId':_0x49ae4b[_0x5302('0x59')]['id'],'ContactId':_0x4e8077['id']})]},{'include':[{'model':db['WhatsappMessage'],'as':_0x5302('0xb9')}]})[_0x5302('0x1f')](function(_0x18f9f0){return[_0x18f9f0,!![]];});});}})[_0x5302('0xa2')](function(_0x44cb5d,_0x27607d){if(_0x27607d){return _0x44cb5d;}return db[_0x5302('0x84')][_0x5302('0x57')](_['merge'](_0x49ae4b[_0x5302('0x58')],{'read':![],'body':_0x49ae4b[_0x5302('0x58')][_0x5302('0x58')],'phone':_0xf75fa2,'WhatsappAccountId':_0x12be8c['id'],'WhatsappInteractionId':_0x44cb5d['id'],'UserId':_0x49ae4b['user']['id'],'ContactId':_0x4e8077['id']}))[_0x5302('0x1f')](function(_0x46230e){_0x44cb5d[_0x5302('0xba')][_0x5302('0xb9')]=[];_0x44cb5d['dataValues'][_0x5302('0xb9')]['push'](_0x46230e[_0x5302('0xba')]);return _0x44cb5d;});})['then'](respondWithResult(_0xe42e95,null))[_0x5302('0x2a')](handleError(_0xe42e95,null));};
\ No newline at end of file
index 4242b0e..b0ab906 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0233=['update','emit','hook','exports','events','../../mysqldb','WhatsappAccount','setMaxListeners','save'];(function(_0x4f53a6,_0x582ff5){var _0x30e4b7=function(_0x1aaf04){while(--_0x1aaf04){_0x4f53a6['push'](_0x4f53a6['shift']());}};_0x30e4b7(++_0x582ff5);}(_0x0233,0x15a));var _0x3023=function(_0x44946b,_0xf874ec){_0x44946b=_0x44946b-0x0;var _0x249bc4=_0x0233[_0x44946b];return _0x249bc4;};'use strict';var EventEmitter=require(_0x3023('0x0'));var WhatsappAccount=require(_0x3023('0x1'))['db'][_0x3023('0x2')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0x3023('0x3')](0x0);var events={'afterCreate':_0x3023('0x4'),'afterUpdate':_0x3023('0x5'),'afterDestroy':'remove'};function emitEvent(_0x2f64ea){return function(_0x3e96ab,_0x149648,_0x12432d){WhatsappAccountEvents[_0x3023('0x6')](_0x2f64ea+':'+_0x3e96ab['id'],_0x3e96ab);WhatsappAccountEvents['emit'](_0x2f64ea,_0x3e96ab);_0x12432d(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappAccount[_0x3023('0x7')](e,emitEvent(event));}}module[_0x3023('0x8')]=WhatsappAccountEvents;
\ No newline at end of file
+var _0xe363=['emit','hasOwnProperty','hook','../../mysqldb','WhatsappAccount','setMaxListeners','save','update','remove'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe363,0x1aa));var _0x3e36=function(_0x55ea15,_0x53c5d1){_0x55ea15=_0x55ea15-0x0;var _0x3ceeb0=_0xe363[_0x55ea15];return _0x3ceeb0;};'use strict';var EventEmitter=require('events');var WhatsappAccount=require(_0x3e36('0x0'))['db'][_0x3e36('0x1')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0x3e36('0x2')](0x0);var events={'afterCreate':_0x3e36('0x3'),'afterUpdate':_0x3e36('0x4'),'afterDestroy':_0x3e36('0x5')};function emitEvent(_0x16032a){return function(_0x125e07,_0x26715f,_0x5bf241){WhatsappAccountEvents[_0x3e36('0x6')](_0x16032a+':'+_0x125e07['id'],_0x125e07);WhatsappAccountEvents[_0x3e36('0x6')](_0x16032a,_0x125e07);_0x5bf241(null);};}for(var e in events){if(events[_0x3e36('0x7')](e)){var event=events[e];WhatsappAccount[_0x3e36('0x8')](e,emitEvent(event));}}module['exports']=WhatsappAccountEvents;
\ No newline at end of file
index a11f3d3..df6c0ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1f0=['whatsapp_accounts','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./whatsappAccount.attributes','exports','define','WhatsappAccount'];(function(_0x2d84d1,_0x409a6a){var _0x598435=function(_0x27d3ad){while(--_0x27d3ad){_0x2d84d1['push'](_0x2d84d1['shift']());}};_0x598435(++_0x409a6a);}(_0xe1f0,0x76));var _0x0e1f=function(_0x2ccab4,_0x1fb61d){_0x2ccab4=_0x2ccab4-0x0;var _0x380ae1=_0xe1f0[_0x2ccab4];return _0x380ae1;};'use strict';var _=require('lodash');var util=require(_0x0e1f('0x0'));var logger=require(_0x0e1f('0x1'))(_0x0e1f('0x2'));var moment=require(_0x0e1f('0x3'));var BPromise=require('bluebird');var rp=require(_0x0e1f('0x4'));var fs=require('fs');var path=require(_0x0e1f('0x5'));var rimraf=require(_0x0e1f('0x6'));var config=require(_0x0e1f('0x7'));var attributes=require(_0x0e1f('0x8'));module[_0x0e1f('0x9')]=function(_0x8efd8d,_0x212cf7){return _0x8efd8d[_0x0e1f('0xa')](_0x0e1f('0xb'),attributes,{'tableName':_0x0e1f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x70ac=['exports','define','WhatsappAccount','whatsapp_accounts','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./whatsappAccount.attributes'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x70ac,0x86));var _0xc70a=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x70ac[_0x1ac595];return _0x455fff;};'use strict';var _=require(_0xc70a('0x0'));var util=require(_0xc70a('0x1'));var logger=require(_0xc70a('0x2'))(_0xc70a('0x3'));var moment=require('moment');var BPromise=require(_0xc70a('0x4'));var rp=require(_0xc70a('0x5'));var fs=require('fs');var path=require(_0xc70a('0x6'));var rimraf=require(_0xc70a('0x7'));var config=require('../../config/environment');var attributes=require(_0xc70a('0x8'));module[_0xc70a('0x9')]=function(_0x5c6e6f,_0x22a9cb){return _0x5c6e6f[_0xc70a('0xa')](_0xc70a('0xb'),attributes,{'tableName':_0xc70a('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 87fb982..66af9fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd5d=['../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','./whatsappAccount.socket','request','info','request\x20sent','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','code','message','error','WhatsappAccount,\x20%s,\x20%s','catch','ShowWhatsappAccount','WhatsappAccount','find','options','raw','where','model','attributes','map','debug','lodash','util','moment','bluebird','randomstring'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xdd5d,0x87));var _0xddd5=function(_0x31a39f,_0x122fd0){_0x31a39f=_0x31a39f-0x0;var _0x252338=_0xdd5d[_0x31a39f];return _0x252338;};'use strict';var _=require(_0xddd5('0x0'));var util=require(_0xddd5('0x1'));var moment=require(_0xddd5('0x2'));var BPromise=require(_0xddd5('0x3'));var rs=require(_0xddd5('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xddd5('0x5'))['db'];var utils=require(_0xddd5('0x6'));var logger=require('../../config/logger')(_0xddd5('0x7'));var config=require(_0xddd5('0x8'));var jayson=require(_0xddd5('0x9'));var client=jayson['client'][_0xddd5('0xa')]({'port':0x232a});config[_0xddd5('0xb')]=_[_0xddd5('0xc')](config[_0xddd5('0xb')],{'host':_0xddd5('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xddd5('0xb')]));require(_0xddd5('0xe'))['register'](socket);function respondWithRpcPromise(_0xcb7ca2,_0x1b4cfb,_0x1f0783){return new BPromise(function(_0x138a47,_0x2eb945){return client[_0xddd5('0xf')](_0xcb7ca2,_0x1f0783)['then'](function(_0x394d66){logger[_0xddd5('0x10')]('WhatsappAccount,\x20%s,\x20%s',_0x1b4cfb,_0xddd5('0x11'));logger['debug'](_0xddd5('0x12'),_0x1b4cfb,'request\x20sent',JSON[_0xddd5('0x13')](_0x394d66));if(_0x394d66['error']){if(_0x394d66['error'][_0xddd5('0x14')]===0x1f4){logger['error']('WhatsappAccount,\x20%s,\x20%s',_0x1b4cfb,_0x394d66['error'][_0xddd5('0x15')]);return _0x2eb945(_0x394d66[_0xddd5('0x16')][_0xddd5('0x15')]);}logger['error'](_0xddd5('0x17'),_0x1b4cfb,_0x394d66[_0xddd5('0x16')]['message']);return _0x138a47(_0x394d66[_0xddd5('0x16')]['message']);}else{logger['info'](_0xddd5('0x17'),_0x1b4cfb,_0xddd5('0x11'));_0x138a47(_0x394d66['result'][_0xddd5('0x15')]);}})[_0xddd5('0x18')](function(_0x40466d){logger[_0xddd5('0x16')](_0xddd5('0x17'),_0x1b4cfb,_0x40466d);_0x2eb945(_0x40466d);});});}exports[_0xddd5('0x19')]=function(_0x423ae6){var _0x433f7c=this;return new Promise(function(_0x33f5a3,_0x4c4192){return db[_0xddd5('0x1a')][_0xddd5('0x1b')]({'raw':_0x423ae6['options']?_0x423ae6[_0xddd5('0x1c')][_0xddd5('0x1d')]===undefined?!![]:![]:!![],'where':_0x423ae6[_0xddd5('0x1c')]?_0x423ae6[_0xddd5('0x1c')][_0xddd5('0x1e')]||null:null,'attributes':_0x423ae6[_0xddd5('0x1c')]?_0x423ae6[_0xddd5('0x1c')]['attributes']||null:null,'include':_0x423ae6[_0xddd5('0x1c')]?_0x423ae6[_0xddd5('0x1c')]['include']?_['map'](_0x423ae6[_0xddd5('0x1c')]['include'],function(_0xbda4e9){return{'model':db[_0xbda4e9[_0xddd5('0x1f')]],'as':_0xbda4e9['as'],'attributes':_0xbda4e9['attributes'],'include':_0xbda4e9['include']?_['map'](_0xbda4e9['include'],function(_0x313a0c){return{'model':db[_0x313a0c[_0xddd5('0x1f')]],'as':_0x313a0c['as'],'attributes':_0x313a0c[_0xddd5('0x20')],'include':_0x313a0c['include']?_[_0xddd5('0x21')](_0x313a0c['include'],function(_0x3d0400){return{'model':db[_0x3d0400[_0xddd5('0x1f')]],'as':_0x3d0400['as'],'attributes':_0x3d0400[_0xddd5('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5c7189){logger[_0xddd5('0x10')]('ShowWhatsappAccount',_0x423ae6);logger[_0xddd5('0x22')]('ShowWhatsappAccount',_0x423ae6,JSON[_0xddd5('0x13')](_0x5c7189));_0x33f5a3(_0x5c7189);})[_0xddd5('0x18')](function(_0x213599){logger[_0xddd5('0x16')](_0xddd5('0x19'),_0x213599[_0xddd5('0x15')],_0x423ae6);_0x4c4192(_0x433f7c['error'](0x1f4,_0x213599[_0xddd5('0x15')]));});});};
\ No newline at end of file
+var _0x54ac=['error','code','message','result','ShowWhatsappAccount','options','where','attributes','include','map','model','then','debug','stringify','catch','lodash','util','moment','bluebird','randomstring','../../config/utils','rpc','../../config/environment','jayson/promise','http','redis','defaults','socket.io-emitter','request','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','WhatsappAccount,\x20%s,\x20%s,\x20%s'];(function(_0x33ab41,_0xa2d039){var _0x12403d=function(_0x41f3a9){while(--_0x41f3a9){_0x33ab41['push'](_0x33ab41['shift']());}};_0x12403d(++_0xa2d039);}(_0x54ac,0x159));var _0xc54a=function(_0x50a463,_0x517a1a){_0x50a463=_0x50a463-0x0;var _0x2971df=_0x54ac[_0x50a463];return _0x2971df;};'use strict';var _=require(_0xc54a('0x0'));var util=require(_0xc54a('0x1'));var moment=require(_0xc54a('0x2'));var BPromise=require(_0xc54a('0x3'));var rs=require(_0xc54a('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xc54a('0x5'));var logger=require('../../config/logger')(_0xc54a('0x6'));var config=require(_0xc54a('0x7'));var jayson=require(_0xc54a('0x8'));var client=jayson['client'][_0xc54a('0x9')]({'port':0x232a});config[_0xc54a('0xa')]=_[_0xc54a('0xb')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xc54a('0xc'))(new Redis(config[_0xc54a('0xa')]));require('./whatsappAccount.socket')['register'](socket);function respondWithRpcPromise(_0x3d131b,_0x15118c,_0x1376f1){return new BPromise(function(_0x29859b,_0x5689b9){return client[_0xc54a('0xd')](_0x3d131b,_0x1376f1)['then'](function(_0x103734){logger[_0xc54a('0xe')](_0xc54a('0xf'),_0x15118c,_0xc54a('0x10'));logger['debug'](_0xc54a('0x11'),_0x15118c,_0xc54a('0x10'),JSON['stringify'](_0x103734));if(_0x103734[_0xc54a('0x12')]){if(_0x103734['error'][_0xc54a('0x13')]===0x1f4){logger[_0xc54a('0x12')](_0xc54a('0xf'),_0x15118c,_0x103734[_0xc54a('0x12')][_0xc54a('0x14')]);return _0x5689b9(_0x103734['error'][_0xc54a('0x14')]);}logger[_0xc54a('0x12')](_0xc54a('0xf'),_0x15118c,_0x103734['error']['message']);return _0x29859b(_0x103734[_0xc54a('0x12')][_0xc54a('0x14')]);}else{logger[_0xc54a('0xe')](_0xc54a('0xf'),_0x15118c,'request\x20sent');_0x29859b(_0x103734[_0xc54a('0x15')][_0xc54a('0x14')]);}})['catch'](function(_0x29594d){logger[_0xc54a('0x12')]('WhatsappAccount,\x20%s,\x20%s',_0x15118c,_0x29594d);_0x5689b9(_0x29594d);});});}exports[_0xc54a('0x16')]=function(_0x578d87){var _0x426dad=this;return new Promise(function(_0x2e4ad1,_0x120c86){return db['WhatsappAccount']['find']({'raw':_0x578d87[_0xc54a('0x17')]?_0x578d87['options']['raw']===undefined?!![]:![]:!![],'where':_0x578d87['options']?_0x578d87[_0xc54a('0x17')][_0xc54a('0x18')]||null:null,'attributes':_0x578d87[_0xc54a('0x17')]?_0x578d87[_0xc54a('0x17')][_0xc54a('0x19')]||null:null,'include':_0x578d87[_0xc54a('0x17')]?_0x578d87['options'][_0xc54a('0x1a')]?_[_0xc54a('0x1b')](_0x578d87[_0xc54a('0x17')][_0xc54a('0x1a')],function(_0x11b205){return{'model':db[_0x11b205['model']],'as':_0x11b205['as'],'attributes':_0x11b205[_0xc54a('0x19')],'include':_0x11b205[_0xc54a('0x1a')]?_[_0xc54a('0x1b')](_0x11b205[_0xc54a('0x1a')],function(_0x322823){return{'model':db[_0x322823['model']],'as':_0x322823['as'],'attributes':_0x322823[_0xc54a('0x19')],'include':_0x322823['include']?_[_0xc54a('0x1b')](_0x322823[_0xc54a('0x1a')],function(_0x2f0fe0){return{'model':db[_0x2f0fe0[_0xc54a('0x1c')]],'as':_0x2f0fe0['as'],'attributes':_0x2f0fe0['attributes']};}):[]};}):[]};}):[]:[]})[_0xc54a('0x1d')](function(_0x27df41){logger[_0xc54a('0xe')](_0xc54a('0x16'),_0x578d87);logger[_0xc54a('0x1e')](_0xc54a('0x16'),_0x578d87,JSON[_0xc54a('0x1f')](_0x27df41));_0x2e4ad1(_0x27df41);})[_0xc54a('0x20')](function(_0x3736a8){logger[_0xc54a('0x12')](_0xc54a('0x16'),_0x3736a8[_0xc54a('0x14')],_0x578d87);_0x120c86(_0x426dad[_0xc54a('0x12')](0x1f4,_0x3736a8[_0xc54a('0x14')]));});});};
\ No newline at end of file
index 005a5df..4115e99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0001=['./whatsappAccount.events','save','remove','emit','removeListener','length','whatsappAccount:'];(function(_0x189b3b,_0x484de8){var _0x7c4721=function(_0x1ca32b){while(--_0x1ca32b){_0x189b3b['push'](_0x189b3b['shift']());}};_0x7c4721(++_0x484de8);}(_0x0001,0x1c7));var _0x1000=function(_0x44bebc,_0x4ad68b){_0x44bebc=_0x44bebc-0x0;var _0x9cc1c6=_0x0001[_0x44bebc];return _0x9cc1c6;};'use strict';var WhatsappAccountEvents=require(_0x1000('0x0'));var events=[_0x1000('0x1'),_0x1000('0x2'),'update'];function createListener(_0x296d68,_0xf4a36){return function(_0x129436){_0xf4a36[_0x1000('0x3')](_0x296d68,_0x129436);};}function removeListener(_0xfd200,_0x1e18e3){return function(){WhatsappAccountEvents[_0x1000('0x4')](_0xfd200,_0x1e18e3);};}exports['register']=function(_0x247019){for(var _0x307db5=0x0,_0x160609=events[_0x1000('0x5')];_0x307db5<_0x160609;_0x307db5++){var _0x334d8d=events[_0x307db5];var _0x98cd8e=createListener(_0x1000('0x6')+_0x334d8d,_0x247019);WhatsappAccountEvents['on'](_0x334d8d,_0x98cd8e);}};
\ No newline at end of file
+var _0x4eae=['emit','removeListener','register','whatsappAccount:','./whatsappAccount.events','save','remove','update'];(function(_0x1fd345,_0x25eb9e){var _0x4508ae=function(_0x55fe5c){while(--_0x55fe5c){_0x1fd345['push'](_0x1fd345['shift']());}};_0x4508ae(++_0x25eb9e);}(_0x4eae,0x1b4));var _0xe4ea=function(_0x5678b5,_0x1c4aa8){_0x5678b5=_0x5678b5-0x0;var _0x4c09a5=_0x4eae[_0x5678b5];return _0x4c09a5;};'use strict';var WhatsappAccountEvents=require(_0xe4ea('0x0'));var events=[_0xe4ea('0x1'),_0xe4ea('0x2'),_0xe4ea('0x3')];function createListener(_0xd2cde9,_0x290edd){return function(_0x8774fb){_0x290edd[_0xe4ea('0x4')](_0xd2cde9,_0x8774fb);};}function removeListener(_0x1c87ea,_0x3b48bb){return function(){WhatsappAccountEvents[_0xe4ea('0x5')](_0x1c87ea,_0x3b48bb);};}exports[_0xe4ea('0x6')]=function(_0x256e4b){for(var _0x57cc94=0x0,_0x4d7f2b=events['length'];_0x57cc94<_0x4d7f2b;_0x57cc94++){var _0x2e9dc5=events[_0x57cc94];var _0x3618d8=createListener(_0xe4ea('0x7')+_0x2e9dc5,_0x256e4b);WhatsappAccountEvents['on'](_0x2e9dc5,_0x3618d8);}};
\ No newline at end of file
index 4051c61..805ca67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x12e6=['../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','get','show','post','/:id','update','delete','destroy','multer','util','path','connect-timeout','express'];(function(_0x12dcc3,_0x1e9203){var _0x13ec97=function(_0x6b47c4){while(--_0x6b47c4){_0x12dcc3['push'](_0x12dcc3['shift']());}};_0x13ec97(++_0x1e9203);}(_0x12e6,0x16b));var _0x612e=function(_0x590ce1,_0xf5c48e){_0x590ce1=_0x590ce1-0x0;var _0x40f868=_0x12e6[_0x590ce1];return _0x40f868;};'use strict';var multer=require(_0x612e('0x0'));var util=require(_0x612e('0x1'));var path=require(_0x612e('0x2'));var timeout=require(_0x612e('0x3'));var express=require(_0x612e('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x612e('0x5'));var interaction=require(_0x612e('0x6'));var config=require(_0x612e('0x7'));var controller=require('./whatsappApplication.controller');router['get']('/',auth[_0x612e('0x8')](),controller['index']);router[_0x612e('0x9')]('/:id',auth[_0x612e('0x8')](),controller[_0x612e('0xa')]);router[_0x612e('0xb')]('/',auth[_0x612e('0x8')](),controller['create']);router['put'](_0x612e('0xc'),auth[_0x612e('0x8')](),controller[_0x612e('0xd')]);router[_0x612e('0xe')](_0x612e('0xc'),auth[_0x612e('0x8')](),controller[_0x612e('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0xbf52=['/:id','isAuthenticated','show','post','put','update','destroy','exports','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./whatsappApplication.controller','get'];(function(_0x350182,_0x2a9feb){var _0x4a0892=function(_0x2c994d){while(--_0x2c994d){_0x350182['push'](_0x350182['shift']());}};_0x4a0892(++_0x2a9feb);}(_0xbf52,0x71));var _0x2bf5=function(_0x12f570,_0x2bdad1){_0x12f570=_0x12f570-0x0;var _0x820efc=_0xbf52[_0x12f570];return _0x820efc;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x2bf5('0x0'));var timeout=require(_0x2bf5('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x2bf5('0x2'));var auth=require('../../components/auth/service');var interaction=require(_0x2bf5('0x3'));var config=require(_0x2bf5('0x4'));var controller=require(_0x2bf5('0x5'));router[_0x2bf5('0x6')]('/',auth['isAuthenticated'](),controller['index']);router[_0x2bf5('0x6')](_0x2bf5('0x7'),auth[_0x2bf5('0x8')](),controller[_0x2bf5('0x9')]);router[_0x2bf5('0xa')]('/',auth[_0x2bf5('0x8')](),controller['create']);router[_0x2bf5('0xb')](_0x2bf5('0x7'),auth[_0x2bf5('0x8')](),controller[_0x2bf5('0xc')]);router['delete']('/:id',auth[_0x2bf5('0x8')](),controller[_0x2bf5('0xd')]);module[_0x2bf5('0xe')]=router;
\ No newline at end of file
index b73fb7e..33acf9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe23a=['STRING','noop','sequelize','exports','INTEGER'];(function(_0x17089b,_0x324c5e){var _0x209ed1=function(_0xbe9656){while(--_0xbe9656){_0x17089b['push'](_0x17089b['shift']());}};_0x209ed1(++_0x324c5e);}(_0xe23a,0x165));var _0xae23=function(_0x55ff3e,_0x41077f){_0x55ff3e=_0x55ff3e-0x0;var _0x2709eb=_0xe23a[_0x55ff3e];return _0x2709eb;};'use strict';var Sequelize=require(_0xae23('0x0'));module[_0xae23('0x1')]={'priority':{'type':Sequelize[_0xae23('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xae23('0x3')],'allowNull':![],'defaultValue':_0xae23('0x4')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0xae23('0x3')]},'interval':{'type':Sequelize['STRING'],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0xdb63=['exports','INTEGER','STRING','*,*,*,*'];(function(_0x4d54bd,_0x594255){var _0x5b6ead=function(_0x4344dd){while(--_0x4344dd){_0x4d54bd['push'](_0x4d54bd['shift']());}};_0x5b6ead(++_0x594255);}(_0xdb63,0x1b4));var _0x3db6=function(_0x379ddc,_0x512634){_0x379ddc=_0x379ddc-0x0;var _0x3fca64=_0xdb63[_0x379ddc];return _0x3fca64;};'use strict';var Sequelize=require('sequelize');module[_0x3db6('0x0')]={'priority':{'type':Sequelize[_0x3db6('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x3db6('0x2')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x3db6('0x2')]},'interval':{'type':Sequelize[_0x3db6('0x2')],'defaultValue':_0x3db6('0x3')}};
\ No newline at end of file
index 58eb7f4..5bae565 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x585e=['eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','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','sendStatus','end','status','offset','limit','undefined','count','Content-Range','json','apply','update','then','destroy','error','name','send','index','map','WhatsappApplication','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','options','includeAll','rows','catch','show','params','include','find','create','body'];(function(_0x3f084c,_0x2e4c3f){var _0x2d6b89=function(_0x480b30){while(--_0x480b30){_0x3f084c['push'](_0x3f084c['shift']());}};_0x2d6b89(++_0x2e4c3f);}(_0x585e,0x1c2));var _0xe585=function(_0x3f1967,_0x457f40){_0x3f1967=_0x3f1967-0x0;var _0x208207=_0x585e[_0x3f1967];return _0x208207;};'use strict';var emlformat=require(_0xe585('0x0'));var rimraf=require(_0xe585('0x1'));var zipdir=require(_0xe585('0x2'));var jsonpatch=require(_0xe585('0x3'));var rp=require(_0xe585('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xe585('0x5'));var util=require(_0xe585('0x6'));var path=require('path');var sox=require(_0xe585('0x7'));var csv=require(_0xe585('0x8'));var ejs=require(_0xe585('0x9'));var fs=require('fs');var fs_extra=require(_0xe585('0xa'));var _=require(_0xe585('0xb'));var squel=require(_0xe585('0xc'));var crypto=require(_0xe585('0xd'));var jsforce=require(_0xe585('0xe'));var deskjs=require(_0xe585('0xf'));var toCsv=require(_0xe585('0x8'));var querystring=require(_0xe585('0x10'));var Papa=require(_0xe585('0x11'));var Redis=require(_0xe585('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xe585('0x13'));var as=require(_0xe585('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe585('0x15'))('api');var utils=require(_0xe585('0x16'));var config=require(_0xe585('0x17'));var licenseUtil=require(_0xe585('0x18'));var db=require(_0xe585('0x19'))['db'];function respondWithStatusCode(_0x5dda28,_0x1c997b){_0x1c997b=_0x1c997b||0xcc;return function(_0x28659a){if(_0x28659a){return _0x5dda28[_0xe585('0x1a')](_0x1c997b);}return _0x5dda28['status'](_0x1c997b)[_0xe585('0x1b')]();};}function respondWithResult(_0x1fd1e6,_0x293344){_0x293344=_0x293344||0xc8;return function(_0x419c6b){if(_0x419c6b){return _0x1fd1e6[_0xe585('0x1c')](_0x293344)['json'](_0x419c6b);}};}function respondWithFilteredResult(_0x282fec,_0x55f637){return function(_0x4c66e0){if(_0x4c66e0){var _0x2c9830=typeof _0x55f637[_0xe585('0x1d')]==='undefined'&&typeof _0x55f637[_0xe585('0x1e')]===_0xe585('0x1f');var _0x56c57f=_0x4c66e0[_0xe585('0x20')];var _0x119a94=_0x2c9830?0x0:_0x55f637[_0xe585('0x1d')];var _0x3c64b8=_0x2c9830?_0x4c66e0[_0xe585('0x20')]:_0x55f637[_0xe585('0x1d')]+_0x55f637['limit'];var _0x453875;if(_0x3c64b8>=_0x56c57f){_0x3c64b8=_0x56c57f;_0x453875=0xc8;}else{_0x453875=0xce;}_0x282fec[_0xe585('0x1c')](_0x453875);return _0x282fec['set'](_0xe585('0x21'),_0x119a94+'-'+_0x3c64b8+'/'+_0x56c57f)[_0xe585('0x22')](_0x4c66e0);}return null;};}function patchUpdates(_0x1994b9){return function(_0x48ce0a){try{jsonpatch[_0xe585('0x23')](_0x48ce0a,_0x1994b9,!![]);}catch(_0x495990){return BPromise['reject'](_0x495990);}return _0x48ce0a['save']();};}function saveUpdates(_0x469e2c,_0x50f306){return function(_0x455af1){if(_0x455af1){return _0x455af1[_0xe585('0x24')](_0x469e2c)[_0xe585('0x25')](function(_0x16aa43){return _0x16aa43;});}return null;};}function removeEntity(_0x2e54f8,_0x813051){return function(_0x32d91a){if(_0x32d91a){return _0x32d91a[_0xe585('0x26')]()[_0xe585('0x25')](function(){_0x2e54f8[_0xe585('0x1c')](0xcc)[_0xe585('0x1b')]();});}};}function handleEntityNotFound(_0x30dd09,_0x404b6c){return function(_0x556fd5){if(!_0x556fd5){_0x30dd09[_0xe585('0x1a')](0x194);}return _0x556fd5;};}function handleError(_0x228a70,_0x1fb096){_0x1fb096=_0x1fb096||0x1f4;return function(_0x3556c3){logger[_0xe585('0x27')](_0x3556c3['stack']);if(_0x3556c3[_0xe585('0x28')]){delete _0x3556c3[_0xe585('0x28')];}_0x228a70['status'](_0x1fb096)[_0xe585('0x29')](_0x3556c3);};}exports[_0xe585('0x2a')]=function(_0x30862c,_0x49241a){var _0x2fe41a={},_0x194cab={},_0x2a0456={'count':0x0,'rows':[]};var _0x2149d6=_[_0xe585('0x2b')](db[_0xe585('0x2c')][_0xe585('0x2d')],function(_0x4dbb7e){return{'name':_0x4dbb7e[_0xe585('0x2e')],'type':_0x4dbb7e[_0xe585('0x2f')][_0xe585('0x30')]};});_0x194cab[_0xe585('0x31')]=_['map'](_0x2149d6,_0xe585('0x28'));_0x194cab[_0xe585('0x32')]=_[_0xe585('0x33')](_0x30862c[_0xe585('0x32')]);_0x194cab[_0xe585('0x34')]=_[_0xe585('0x35')](_0x194cab['model'],_0x194cab['query']);_0x2fe41a[_0xe585('0x36')]=_['intersection'](_0x194cab[_0xe585('0x31')],qs[_0xe585('0x37')](_0x30862c['query'][_0xe585('0x37')]));_0x2fe41a[_0xe585('0x36')]=_0x2fe41a['attributes'][_0xe585('0x38')]?_0x2fe41a[_0xe585('0x36')]:_0x194cab[_0xe585('0x31')];if(!_0x30862c[_0xe585('0x32')][_0xe585('0x39')](_0xe585('0x3a'))){_0x2fe41a[_0xe585('0x1e')]=qs['limit'](_0x30862c[_0xe585('0x32')][_0xe585('0x1e')]);_0x2fe41a[_0xe585('0x1d')]=qs[_0xe585('0x1d')](_0x30862c[_0xe585('0x32')][_0xe585('0x1d')]);}_0x2fe41a[_0xe585('0x3b')]=qs[_0xe585('0x3c')](_0x30862c[_0xe585('0x32')][_0xe585('0x3c')]);_0x2fe41a['where']=qs[_0xe585('0x34')](_[_0xe585('0x3d')](_0x30862c[_0xe585('0x32')],_0x194cab[_0xe585('0x34')]),_0x2149d6);if(_0x30862c[_0xe585('0x32')][_0xe585('0x3e')]){_0x2fe41a[_0xe585('0x3f')]=_[_0xe585('0x40')](_0x2fe41a[_0xe585('0x3f')],{'$or':_[_0xe585('0x2b')](_0x2149d6,function(_0x139da8){if(_0x139da8['type']!=='VIRTUAL'){var _0x5aaf5b={};_0x5aaf5b[_0x139da8[_0xe585('0x28')]]={'$like':'%'+_0x30862c['query']['filter']+'%'};return _0x5aaf5b;}})});}_0x2fe41a=_['merge']({},_0x2fe41a,_0x30862c[_0xe585('0x41')]);var _0x49c6a9={'where':_0x2fe41a[_0xe585('0x3f')]};return db[_0xe585('0x2c')]['count'](_0x49c6a9)[_0xe585('0x25')](function(_0xc50470){_0x2a0456['count']=_0xc50470;if(_0x30862c[_0xe585('0x32')][_0xe585('0x42')]){_0x2fe41a['include']=[{'all':!![]}];}return db[_0xe585('0x2c')]['findAll'](_0x2fe41a);})[_0xe585('0x25')](function(_0x1008b6){_0x2a0456[_0xe585('0x43')]=_0x1008b6;return _0x2a0456;})[_0xe585('0x25')](respondWithFilteredResult(_0x49241a,_0x2fe41a))[_0xe585('0x44')](handleError(_0x49241a,null));};exports[_0xe585('0x45')]=function(_0x18607f,_0x2918e8){var _0xc3fe16={'raw':!![],'where':{'id':_0x18607f[_0xe585('0x46')]['id']}},_0x1bcc46={};_0x1bcc46[_0xe585('0x31')]=_[_0xe585('0x33')](db[_0xe585('0x2c')]['rawAttributes']);_0x1bcc46[_0xe585('0x32')]=_[_0xe585('0x33')](_0x18607f[_0xe585('0x32')]);_0x1bcc46[_0xe585('0x34')]=_[_0xe585('0x35')](_0x1bcc46[_0xe585('0x31')],_0x1bcc46[_0xe585('0x32')]);_0xc3fe16[_0xe585('0x36')]=_['intersection'](_0x1bcc46[_0xe585('0x31')],qs[_0xe585('0x37')](_0x18607f[_0xe585('0x32')][_0xe585('0x37')]));_0xc3fe16[_0xe585('0x36')]=_0xc3fe16[_0xe585('0x36')]['length']?_0xc3fe16['attributes']:_0x1bcc46[_0xe585('0x31')];if(_0x18607f[_0xe585('0x32')]['includeAll']){_0xc3fe16[_0xe585('0x47')]=[{'all':!![]}];}_0xc3fe16=_[_0xe585('0x40')]({},_0xc3fe16,_0x18607f['options']);return db[_0xe585('0x2c')][_0xe585('0x48')](_0xc3fe16)[_0xe585('0x25')](handleEntityNotFound(_0x2918e8,null))[_0xe585('0x25')](respondWithResult(_0x2918e8,null))[_0xe585('0x44')](handleError(_0x2918e8,null));};exports[_0xe585('0x49')]=function(_0x335cf5,_0x148a61){return db[_0xe585('0x2c')][_0xe585('0x49')](_0x335cf5[_0xe585('0x4a')],{})[_0xe585('0x25')](respondWithResult(_0x148a61,0xc9))[_0xe585('0x44')](handleError(_0x148a61,null));};exports[_0xe585('0x24')]=function(_0x2f5cfb,_0x29f5f1){if(_0x2f5cfb['body']['id']){delete _0x2f5cfb[_0xe585('0x4a')]['id'];}return db['WhatsappApplication']['find']({'where':{'id':_0x2f5cfb[_0xe585('0x46')]['id']}})[_0xe585('0x25')](handleEntityNotFound(_0x29f5f1,null))[_0xe585('0x25')](saveUpdates(_0x2f5cfb[_0xe585('0x4a')],null))[_0xe585('0x25')](respondWithResult(_0x29f5f1,null))[_0xe585('0x44')](handleError(_0x29f5f1,null));};exports[_0xe585('0x26')]=function(_0x503fe8,_0x42e12c){return db[_0xe585('0x2c')]['find']({'where':{'id':_0x503fe8[_0xe585('0x46')]['id']}})[_0xe585('0x25')](handleEntityNotFound(_0x42e12c,null))[_0xe585('0x25')](removeEntity(_0x42e12c,null))['catch'](handleError(_0x42e12c,null));};
\ No newline at end of file
+var _0x958a=['../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply','save','update','destroy','then','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','WhatsappApplication','include','findAll','rows','catch','show','params','keys','includeAll','create','body','find','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api'];(function(_0x1e48d3,_0x5d8c43){var _0x2852b1=function(_0x11d7b3){while(--_0x11d7b3){_0x1e48d3['push'](_0x1e48d3['shift']());}};_0x2852b1(++_0x5d8c43);}(_0x958a,0x128));var _0xa958=function(_0xdf8947,_0x188316){_0xdf8947=_0xdf8947-0x0;var _0x3b0f8d=_0x958a[_0xdf8947];return _0x3b0f8d;};'use strict';var emlformat=require(_0xa958('0x0'));var rimraf=require(_0xa958('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa958('0x2'));var rp=require(_0xa958('0x3'));var moment=require(_0xa958('0x4'));var BPromise=require(_0xa958('0x5'));var Mustache=require(_0xa958('0x6'));var util=require('util');var path=require(_0xa958('0x7'));var sox=require('sox');var csv=require(_0xa958('0x8'));var ejs=require(_0xa958('0x9'));var fs=require('fs');var fs_extra=require(_0xa958('0xa'));var _=require(_0xa958('0xb'));var squel=require(_0xa958('0xc'));var crypto=require(_0xa958('0xd'));var jsforce=require(_0xa958('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xa958('0xf'));var Papa=require(_0xa958('0x10'));var Redis=require(_0xa958('0x11'));var authService=require(_0xa958('0x12'));var qs=require(_0xa958('0x13'));var as=require(_0xa958('0x14'));var hardwareService=require(_0xa958('0x15'));var logger=require(_0xa958('0x16'))(_0xa958('0x17'));var utils=require(_0xa958('0x18'));var config=require(_0xa958('0x19'));var licenseUtil=require(_0xa958('0x1a'));var db=require(_0xa958('0x1b'))['db'];function respondWithStatusCode(_0x53bf27,_0x5063ae){_0x5063ae=_0x5063ae||0xcc;return function(_0x5bcc66){if(_0x5bcc66){return _0x53bf27[_0xa958('0x1c')](_0x5063ae);}return _0x53bf27[_0xa958('0x1d')](_0x5063ae)[_0xa958('0x1e')]();};}function respondWithResult(_0x591d4d,_0x3ebc66){_0x3ebc66=_0x3ebc66||0xc8;return function(_0x54c439){if(_0x54c439){return _0x591d4d['status'](_0x3ebc66)['json'](_0x54c439);}};}function respondWithFilteredResult(_0x1fe41e,_0x15fca8){return function(_0xb90ac6){if(_0xb90ac6){var _0x6a81c7=typeof _0x15fca8[_0xa958('0x1f')]===_0xa958('0x20')&&typeof _0x15fca8[_0xa958('0x21')]===_0xa958('0x20');var _0x4d836f=_0xb90ac6[_0xa958('0x22')];var _0x4eadc9=_0x6a81c7?0x0:_0x15fca8[_0xa958('0x1f')];var _0x70d13e=_0x6a81c7?_0xb90ac6['count']:_0x15fca8[_0xa958('0x1f')]+_0x15fca8[_0xa958('0x21')];var _0x47636f;if(_0x70d13e>=_0x4d836f){_0x70d13e=_0x4d836f;_0x47636f=0xc8;}else{_0x47636f=0xce;}_0x1fe41e[_0xa958('0x1d')](_0x47636f);return _0x1fe41e[_0xa958('0x23')](_0xa958('0x24'),_0x4eadc9+'-'+_0x70d13e+'/'+_0x4d836f)['json'](_0xb90ac6);}return null;};}function patchUpdates(_0x4a90c2){return function(_0x373661){try{jsonpatch[_0xa958('0x25')](_0x373661,_0x4a90c2,!![]);}catch(_0x16c0be){return BPromise['reject'](_0x16c0be);}return _0x373661[_0xa958('0x26')]();};}function saveUpdates(_0x383aa3,_0x5c091a){return function(_0x28cf12){if(_0x28cf12){return _0x28cf12[_0xa958('0x27')](_0x383aa3)['then'](function(_0x5c5a2b){return _0x5c5a2b;});}return null;};}function removeEntity(_0x201ed3,_0x40b51e){return function(_0x50b3c3){if(_0x50b3c3){return _0x50b3c3[_0xa958('0x28')]()[_0xa958('0x29')](function(){_0x201ed3[_0xa958('0x1d')](0xcc)[_0xa958('0x1e')]();});}};}function handleEntityNotFound(_0x16b04a,_0xf1436e){return function(_0x50fdb1){if(!_0x50fdb1){_0x16b04a[_0xa958('0x1c')](0x194);}return _0x50fdb1;};}function handleError(_0x48ef34,_0x43df63){_0x43df63=_0x43df63||0x1f4;return function(_0x3c2ea3){logger[_0xa958('0x2a')](_0x3c2ea3[_0xa958('0x2b')]);if(_0x3c2ea3[_0xa958('0x2c')]){delete _0x3c2ea3[_0xa958('0x2c')];}_0x48ef34[_0xa958('0x1d')](_0x43df63)[_0xa958('0x2d')](_0x3c2ea3);};}exports[_0xa958('0x2e')]=function(_0x404d07,_0x4c4c37){var _0x47895c={},_0xd2fcc9={},_0x4ef4f6={'count':0x0,'rows':[]};var _0x1febd2=_[_0xa958('0x2f')](db['WhatsappApplication'][_0xa958('0x30')],function(_0x3d4711){return{'name':_0x3d4711[_0xa958('0x31')],'type':_0x3d4711[_0xa958('0x32')][_0xa958('0x33')]};});_0xd2fcc9['model']=_['map'](_0x1febd2,_0xa958('0x2c'));_0xd2fcc9['query']=_['keys'](_0x404d07[_0xa958('0x34')]);_0xd2fcc9[_0xa958('0x35')]=_[_0xa958('0x36')](_0xd2fcc9[_0xa958('0x37')],_0xd2fcc9[_0xa958('0x34')]);_0x47895c[_0xa958('0x38')]=_['intersection'](_0xd2fcc9[_0xa958('0x37')],qs['fields'](_0x404d07['query'][_0xa958('0x39')]));_0x47895c[_0xa958('0x38')]=_0x47895c[_0xa958('0x38')][_0xa958('0x3a')]?_0x47895c[_0xa958('0x38')]:_0xd2fcc9[_0xa958('0x37')];if(!_0x404d07[_0xa958('0x34')][_0xa958('0x3b')]('nolimit')){_0x47895c['limit']=qs[_0xa958('0x21')](_0x404d07[_0xa958('0x34')][_0xa958('0x21')]);_0x47895c[_0xa958('0x1f')]=qs[_0xa958('0x1f')](_0x404d07['query'][_0xa958('0x1f')]);}_0x47895c[_0xa958('0x3c')]=qs[_0xa958('0x3d')](_0x404d07[_0xa958('0x34')]['sort']);_0x47895c[_0xa958('0x3e')]=qs[_0xa958('0x35')](_[_0xa958('0x3f')](_0x404d07[_0xa958('0x34')],_0xd2fcc9[_0xa958('0x35')]),_0x1febd2);if(_0x404d07['query'][_0xa958('0x40')]){_0x47895c[_0xa958('0x3e')]=_[_0xa958('0x41')](_0x47895c[_0xa958('0x3e')],{'$or':_[_0xa958('0x2f')](_0x1febd2,function(_0x45603f){if(_0x45603f[_0xa958('0x32')]!==_0xa958('0x42')){var _0x2378df={};_0x2378df[_0x45603f[_0xa958('0x2c')]]={'$like':'%'+_0x404d07['query'][_0xa958('0x40')]+'%'};return _0x2378df;}})});}_0x47895c=_[_0xa958('0x41')]({},_0x47895c,_0x404d07[_0xa958('0x43')]);var _0x5d5ae1={'where':_0x47895c[_0xa958('0x3e')]};return db[_0xa958('0x44')]['count'](_0x5d5ae1)['then'](function(_0x53710e){_0x4ef4f6['count']=_0x53710e;if(_0x404d07[_0xa958('0x34')]['includeAll']){_0x47895c[_0xa958('0x45')]=[{'all':!![]}];}return db['WhatsappApplication'][_0xa958('0x46')](_0x47895c);})[_0xa958('0x29')](function(_0x44fa44){_0x4ef4f6[_0xa958('0x47')]=_0x44fa44;return _0x4ef4f6;})[_0xa958('0x29')](respondWithFilteredResult(_0x4c4c37,_0x47895c))[_0xa958('0x48')](handleError(_0x4c4c37,null));};exports[_0xa958('0x49')]=function(_0x18f110,_0x517319){var _0x10e4ee={'raw':!![],'where':{'id':_0x18f110[_0xa958('0x4a')]['id']}},_0x38dfb4={};_0x38dfb4['model']=_['keys'](db['WhatsappApplication'][_0xa958('0x30')]);_0x38dfb4[_0xa958('0x34')]=_[_0xa958('0x4b')](_0x18f110[_0xa958('0x34')]);_0x38dfb4[_0xa958('0x35')]=_['intersection'](_0x38dfb4[_0xa958('0x37')],_0x38dfb4[_0xa958('0x34')]);_0x10e4ee[_0xa958('0x38')]=_[_0xa958('0x36')](_0x38dfb4[_0xa958('0x37')],qs[_0xa958('0x39')](_0x18f110[_0xa958('0x34')][_0xa958('0x39')]));_0x10e4ee[_0xa958('0x38')]=_0x10e4ee[_0xa958('0x38')][_0xa958('0x3a')]?_0x10e4ee[_0xa958('0x38')]:_0x38dfb4[_0xa958('0x37')];if(_0x18f110[_0xa958('0x34')][_0xa958('0x4c')]){_0x10e4ee[_0xa958('0x45')]=[{'all':!![]}];}_0x10e4ee=_[_0xa958('0x41')]({},_0x10e4ee,_0x18f110['options']);return db['WhatsappApplication']['find'](_0x10e4ee)[_0xa958('0x29')](handleEntityNotFound(_0x517319,null))[_0xa958('0x29')](respondWithResult(_0x517319,null))[_0xa958('0x48')](handleError(_0x517319,null));};exports[_0xa958('0x4d')]=function(_0x55ab45,_0x34faa2){return db[_0xa958('0x44')][_0xa958('0x4d')](_0x55ab45[_0xa958('0x4e')],{})[_0xa958('0x29')](respondWithResult(_0x34faa2,0xc9))['catch'](handleError(_0x34faa2,null));};exports[_0xa958('0x27')]=function(_0x2bbb2e,_0x3f8407){if(_0x2bbb2e['body']['id']){delete _0x2bbb2e[_0xa958('0x4e')]['id'];}return db['WhatsappApplication'][_0xa958('0x4f')]({'where':{'id':_0x2bbb2e[_0xa958('0x4a')]['id']}})[_0xa958('0x29')](handleEntityNotFound(_0x3f8407,null))['then'](saveUpdates(_0x2bbb2e[_0xa958('0x4e')],null))['then'](respondWithResult(_0x3f8407,null))[_0xa958('0x48')](handleError(_0x3f8407,null));};exports[_0xa958('0x28')]=function(_0x85fc0d,_0x402d0a){return db[_0xa958('0x44')]['find']({'where':{'id':_0x85fc0d[_0xa958('0x4a')]['id']}})['then'](handleEntityNotFound(_0x402d0a,null))[_0xa958('0x29')](removeEntity(_0x402d0a,null))[_0xa958('0x48')](handleError(_0x402d0a,null));};
\ No newline at end of file
index 90f9520..eb4b204 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x815b=['./whatsappApplication.attributes','exports','define','whatsapp_applications','lodash','util','../../config/logger','api','moment','request-promise','../../config/environment'];(function(_0x1dc62a,_0x5d2186){var _0x3895ae=function(_0x56f99a){while(--_0x56f99a){_0x1dc62a['push'](_0x1dc62a['shift']());}};_0x3895ae(++_0x5d2186);}(_0x815b,0xb4));var _0xb815=function(_0x5cd569,_0x506ebc){_0x5cd569=_0x5cd569-0x0;var _0x2fd3ec=_0x815b[_0x5cd569];return _0x2fd3ec;};'use strict';var _=require(_0xb815('0x0'));var util=require(_0xb815('0x1'));var logger=require(_0xb815('0x2'))(_0xb815('0x3'));var moment=require(_0xb815('0x4'));var BPromise=require('bluebird');var rp=require(_0xb815('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xb815('0x6'));var attributes=require(_0xb815('0x7'));module[_0xb815('0x8')]=function(_0x5a5c18,_0x466899){return _0x5a5c18[_0xb815('0x9')]('WhatsappApplication',attributes,{'tableName':_0xb815('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xe107=['../../config/logger','api','moment','request-promise','../../config/environment','./whatsappApplication.attributes','exports','define','WhatsappApplication','whatsapp_applications','utf8mb4','lodash'];(function(_0x65d317,_0x1b81a3){var _0x51ee61=function(_0x11ca43){while(--_0x11ca43){_0x65d317['push'](_0x65d317['shift']());}};_0x51ee61(++_0x1b81a3);}(_0xe107,0xb3));var _0x7e10=function(_0x383acc,_0x55c2b2){_0x383acc=_0x383acc-0x0;var _0x5c1a55=_0xe107[_0x383acc];return _0x5c1a55;};'use strict';var _=require(_0x7e10('0x0'));var util=require('util');var logger=require(_0x7e10('0x1'))(_0x7e10('0x2'));var moment=require(_0x7e10('0x3'));var BPromise=require('bluebird');var rp=require(_0x7e10('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x7e10('0x5'));var attributes=require(_0x7e10('0x6'));module[_0x7e10('0x7')]=function(_0x5be19f,_0x5f1edf){return _0x5be19f[_0x7e10('0x8')](_0x7e10('0x9'),attributes,{'tableName':_0x7e10('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x7e10('0xb'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 352f7e0..6f88923 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x425d=['lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','WhatsappApplication,\x20%s,\x20%s','request\x20sent','debug','WhatsappApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch'];(function(_0x397ce2,_0x516a32){var _0xf4aa13=function(_0x2d9d00){while(--_0x2d9d00){_0x397ce2['push'](_0x397ce2['shift']());}};_0xf4aa13(++_0x516a32);}(_0x425d,0x1e0));var _0xd425=function(_0x33b335,_0x3f422a){_0x33b335=_0x33b335-0x0;var _0x12f19d=_0x425d[_0x33b335];return _0x12f19d;};'use strict';var _=require(_0xd425('0x0'));var util=require('util');var moment=require(_0xd425('0x1'));var BPromise=require(_0xd425('0x2'));var rs=require(_0xd425('0x3'));var fs=require('fs');var Redis=require(_0xd425('0x4'));var db=require(_0xd425('0x5'))['db'];var utils=require(_0xd425('0x6'));var logger=require(_0xd425('0x7'))('rpc');var config=require(_0xd425('0x8'));var jayson=require(_0xd425('0x9'));var client=jayson[_0xd425('0xa')][_0xd425('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1d97d9,_0x1d2ed0,_0x50b061){return new BPromise(function(_0xb6ba8e,_0x374c3d){return client[_0xd425('0xc')](_0x1d97d9,_0x50b061)[_0xd425('0xd')](function(_0x2db9da){logger[_0xd425('0xe')](_0xd425('0xf'),_0x1d2ed0,_0xd425('0x10'));logger[_0xd425('0x11')](_0xd425('0x12'),_0x1d2ed0,_0xd425('0x10'),JSON[_0xd425('0x13')](_0x2db9da));if(_0x2db9da[_0xd425('0x14')]){if(_0x2db9da[_0xd425('0x14')][_0xd425('0x15')]===0x1f4){logger[_0xd425('0x14')](_0xd425('0xf'),_0x1d2ed0,_0x2db9da[_0xd425('0x14')][_0xd425('0x16')]);return _0x374c3d(_0x2db9da[_0xd425('0x14')]['message']);}logger[_0xd425('0x14')](_0xd425('0xf'),_0x1d2ed0,_0x2db9da[_0xd425('0x14')]['message']);return _0xb6ba8e(_0x2db9da[_0xd425('0x14')][_0xd425('0x16')]);}else{logger[_0xd425('0xe')](_0xd425('0xf'),_0x1d2ed0,_0xd425('0x10'));_0xb6ba8e(_0x2db9da['result'][_0xd425('0x16')]);}})[_0xd425('0x17')](function(_0x7e267e){logger[_0xd425('0x14')]('WhatsappApplication,\x20%s,\x20%s',_0x1d2ed0,_0x7e267e);_0x374c3d(_0x7e267e);});});}
\ No newline at end of file
+var _0x0e85=['bluebird','randomstring','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','WhatsappApplication,\x20%s,\x20%s','request\x20sent','debug','WhatsappApplication,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util'];(function(_0x4e665a,_0x4e4bda){var _0x427e27=function(_0x43bacd){while(--_0x43bacd){_0x4e665a['push'](_0x4e665a['shift']());}};_0x427e27(++_0x4e4bda);}(_0x0e85,0x7c));var _0x50e8=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x0e85[_0x4565bf];return _0x5610ba;};'use strict';var _=require(_0x50e8('0x0'));var util=require(_0x50e8('0x1'));var moment=require('moment');var BPromise=require(_0x50e8('0x2'));var rs=require(_0x50e8('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x50e8('0x4'))('rpc');var config=require(_0x50e8('0x5'));var jayson=require(_0x50e8('0x6'));var client=jayson[_0x50e8('0x7')][_0x50e8('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5e8b01,_0x3ce904,_0x108edc){return new BPromise(function(_0x42665e,_0x988da0){return client[_0x50e8('0x9')](_0x5e8b01,_0x108edc)[_0x50e8('0xa')](function(_0x5825f5){logger[_0x50e8('0xb')](_0x50e8('0xc'),_0x3ce904,_0x50e8('0xd'));logger[_0x50e8('0xe')](_0x50e8('0xf'),_0x3ce904,_0x50e8('0xd'),JSON[_0x50e8('0x10')](_0x5825f5));if(_0x5825f5[_0x50e8('0x11')]){if(_0x5825f5['error']['code']===0x1f4){logger[_0x50e8('0x11')](_0x50e8('0xc'),_0x3ce904,_0x5825f5['error']['message']);return _0x988da0(_0x5825f5[_0x50e8('0x11')][_0x50e8('0x12')]);}logger[_0x50e8('0x11')](_0x50e8('0xc'),_0x3ce904,_0x5825f5['error'][_0x50e8('0x12')]);return _0x42665e(_0x5825f5[_0x50e8('0x11')][_0x50e8('0x12')]);}else{logger['info']('WhatsappApplication,\x20%s,\x20%s',_0x3ce904,_0x50e8('0xd'));_0x42665e(_0x5825f5[_0x50e8('0x13')][_0x50e8('0x12')]);}})[_0x50e8('0x14')](function(_0x211731){logger[_0x50e8('0x11')]('WhatsappApplication,\x20%s,\x20%s',_0x3ce904,_0x211731);_0x988da0(_0x211731);});});}
\ No newline at end of file
index baffeca..dcf4a5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd10=['/:id/tags','whatsapp','whatsappinteraction:addtags','addTags','tracked','update','delete','whatsappinteraction:destroy','exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./whatsappInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','/:id/messages','getMessages','/:id/download','download','post','create','addMessage'];(function(_0x190eb4,_0x52875e){var _0x306aeb=function(_0x10795e){while(--_0x10795e){_0x190eb4['push'](_0x190eb4['shift']());}};_0x306aeb(++_0x52875e);}(_0xbd10,0x85));var _0x0bd1=function(_0x23b21d,_0x4f1ff6){_0x23b21d=_0x23b21d-0x0;var _0x395d66=_0xbd10[_0x23b21d];return _0x395d66;};'use strict';var multer=require(_0x0bd1('0x0'));var util=require(_0x0bd1('0x1'));var path=require(_0x0bd1('0x2'));var timeout=require('connect-timeout');var express=require(_0x0bd1('0x3'));var router=express[_0x0bd1('0x4')]();var fs_extra=require(_0x0bd1('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x0bd1('0x6'));var config=require(_0x0bd1('0x7'));var controller=require(_0x0bd1('0x8'));router[_0x0bd1('0x9')]('/',auth[_0x0bd1('0xa')](),controller[_0x0bd1('0xb')]);router['get'](_0x0bd1('0xc'),auth['isAuthenticated'](),controller[_0x0bd1('0xd')]);router[_0x0bd1('0x9')](_0x0bd1('0xe'),auth[_0x0bd1('0xa')](),controller['show']);router[_0x0bd1('0x9')](_0x0bd1('0xf'),auth[_0x0bd1('0xa')](),controller[_0x0bd1('0x10')]);router[_0x0bd1('0x9')](_0x0bd1('0x11'),auth['isAuthenticated'](),controller[_0x0bd1('0x12')]);router[_0x0bd1('0x13')]('/',auth[_0x0bd1('0xa')](),controller[_0x0bd1('0x14')]);router[_0x0bd1('0x13')](_0x0bd1('0xf'),auth['isAuthenticated'](),controller[_0x0bd1('0x15')]);router[_0x0bd1('0x13')](_0x0bd1('0x16'),auth['isAuthenticated'](),interaction['tracked'](_0x0bd1('0x17'),_0x0bd1('0x18')),controller[_0x0bd1('0x19')]);router['put']('/:id',auth[_0x0bd1('0xa')](),interaction[_0x0bd1('0x1a')](_0x0bd1('0x17'),'whatsappinteraction:update'),controller[_0x0bd1('0x1b')]);router[_0x0bd1('0x1c')](_0x0bd1('0xe'),auth[_0x0bd1('0xa')](),interaction['tracked'](_0x0bd1('0x17'),_0x0bd1('0x1d')),controller['destroy']);router[_0x0bd1('0x1c')](_0x0bd1('0x16'),auth['isAuthenticated'](),controller['removeTags']);module[_0x0bd1('0x1e')]=router;
\ No newline at end of file
+var _0xdb8b=['delete','whatsappinteraction:destroy','removeTags','exports','util','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./whatsappInteraction.controller','get','index','/describe','isAuthenticated','describe','/:id','/:id/messages','getMessages','/:id/download','post','/:id/tags','tracked','whatsapp','whatsappinteraction:addtags','addTags','put','whatsappinteraction:update'];(function(_0x3bbbcf,_0x1465a9){var _0x543e7c=function(_0x1f495f){while(--_0x1f495f){_0x3bbbcf['push'](_0x3bbbcf['shift']());}};_0x543e7c(++_0x1465a9);}(_0xdb8b,0x1c4));var _0xbdb8=function(_0x4e74c4,_0x59614b){_0x4e74c4=_0x4e74c4-0x0;var _0x251318=_0xdb8b[_0x4e74c4];return _0x251318;};'use strict';var multer=require('multer');var util=require(_0xbdb8('0x0'));var path=require(_0xbdb8('0x1'));var timeout=require(_0xbdb8('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xbdb8('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xbdb8('0x4'));var config=require(_0xbdb8('0x5'));var controller=require(_0xbdb8('0x6'));router[_0xbdb8('0x7')]('/',auth['isAuthenticated'](),controller[_0xbdb8('0x8')]);router['get'](_0xbdb8('0x9'),auth[_0xbdb8('0xa')](),controller[_0xbdb8('0xb')]);router[_0xbdb8('0x7')](_0xbdb8('0xc'),auth[_0xbdb8('0xa')](),controller['show']);router[_0xbdb8('0x7')](_0xbdb8('0xd'),auth[_0xbdb8('0xa')](),controller[_0xbdb8('0xe')]);router[_0xbdb8('0x7')](_0xbdb8('0xf'),auth[_0xbdb8('0xa')](),controller['download']);router['post']('/',auth[_0xbdb8('0xa')](),controller['create']);router[_0xbdb8('0x10')]('/:id/messages',auth[_0xbdb8('0xa')](),controller['addMessage']);router[_0xbdb8('0x10')](_0xbdb8('0x11'),auth[_0xbdb8('0xa')](),interaction[_0xbdb8('0x12')](_0xbdb8('0x13'),_0xbdb8('0x14')),controller[_0xbdb8('0x15')]);router[_0xbdb8('0x16')](_0xbdb8('0xc'),auth[_0xbdb8('0xa')](),interaction[_0xbdb8('0x12')](_0xbdb8('0x13'),_0xbdb8('0x17')),controller['update']);router[_0xbdb8('0x18')](_0xbdb8('0xc'),auth[_0xbdb8('0xa')](),interaction['tracked']('whatsapp',_0xbdb8('0x19')),controller['destroy']);router[_0xbdb8('0x18')](_0xbdb8('0x11'),auth[_0xbdb8('0xa')](),controller[_0xbdb8('0x1a')]);module[_0xbdb8('0x1b')]=router;
\ No newline at end of file
index bedb65c..5dc009f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0967=['DATE','STRING','ENUM','out','sequelize','exports','BOOLEAN'];(function(_0x2a7038,_0x5a5f6c){var _0x4b506b=function(_0x2bf3f3){while(--_0x2bf3f3){_0x2a7038['push'](_0x2a7038['shift']());}};_0x4b506b(++_0x5a5f6c);}(_0x0967,0x100));var _0x7096=function(_0x166f2a,_0x30055f){_0x166f2a=_0x166f2a-0x0;var _0x1ee965=_0x0967[_0x166f2a];return _0x1ee965;};'use strict';var Sequelize=require(_0x7096('0x0'));var moment=require('moment');module[_0x7096('0x1')]={'closed':{'type':Sequelize[_0x7096('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x7096('0x3')]},'disposition':{'type':Sequelize[_0x7096('0x4')]},'secondDisposition':{'type':Sequelize[_0x7096('0x4')]},'thirdDisposition':{'type':Sequelize[_0x7096('0x4')]},'note':{'type':Sequelize[_0x7096('0x4')]},'phone':{'type':Sequelize[_0x7096('0x4')]},'read1stAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0x7096('0x5')]('in',_0x7096('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x7096('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x7096('0x5')]('in',_0x7096('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x7096('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0x0c75=['DATE','STRING','ENUM','out','moment','BOOLEAN'];(function(_0x169fa6,_0x20b647){var _0x117021=function(_0x10b878){while(--_0x10b878){_0x169fa6['push'](_0x169fa6['shift']());}};_0x117021(++_0x20b647);}(_0x0c75,0x6a));var _0x50c7=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x0c75[_0x122ef9];return _0x42fba0;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x50c7('0x0'));module['exports']={'closed':{'type':Sequelize[_0x50c7('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x50c7('0x2')]},'disposition':{'type':Sequelize[_0x50c7('0x3')]},'secondDisposition':{'type':Sequelize[_0x50c7('0x3')]},'thirdDisposition':{'type':Sequelize[_0x50c7('0x3')]},'note':{'type':Sequelize[_0x50c7('0x3')]},'phone':{'type':Sequelize[_0x50c7('0x3')]},'read1stAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0x50c7('0x4')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x50c7('0x2')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x50c7('0x5')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x50c7('0x1')],'defaultValue':![]}};
\ No newline at end of file
index 79406a7..b4555c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe8a1=['keys','filters','intersection','attributes','fields','length','includeAll','include','merge','find','create','update','body','describe','addMessage','WhatsappMessage','ids','omit','getMessages','findOne','hasOwnProperty','nolimit','order','sort','where','pick','map','filter','$gte','format','options','rows','setTags','spread','Tag','color','emit','whatsappInteractionTags:save','removeTags','download','toString','join','root','server','files','tmp','transcript-%d-%s.zip','User','fullname','CmContact','Contact','firstName','attachments','push','Attachment','Messages','createdAt','direction','secret','read','Account','get','mkdirSync','Owner','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','disposition','existsSync','createReadStream','pipe','createWriteStream','basename','out','System','lastName','value','views','downloadInteraction.ejs','transcript-','.pdf','Whatsapp','createPdfFromHTML','err','unlinkSync','rimraf','zip-dir','moment','util','path','ejs','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','api','../../config/environment','../../mysqldb','redis','localhost','./whatsappInteraction.socket','sendStatus','end','status','json','offset','undefined','limit','count','set','destroy','error','stack','name','send','rawAttributes','fieldName','type','key','getOptions','findAll','whatsapp','query','user','then','catch','params','model','WhatsappInteraction'];(function(_0x118b0a,_0x4318e5){var _0xb9c9b=function(_0x559ecd){while(--_0x559ecd){_0x118b0a['push'](_0x118b0a['shift']());}};_0xb9c9b(++_0x4318e5);}(_0xe8a1,0x1d8));var _0x1e8a=function(_0x127a3c,_0xd22972){_0x127a3c=_0x127a3c-0x0;var _0x5a999b=_0xe8a1[_0x127a3c];return _0x5a999b;};'use strict';var rimraf=require(_0x1e8a('0x0'));var zipdir=require(_0x1e8a('0x1'));var moment=require(_0x1e8a('0x2'));var BPromise=require('bluebird');var util=require(_0x1e8a('0x3'));var path=require(_0x1e8a('0x4'));var ejs=require(_0x1e8a('0x5'));var fs=require('fs');var _=require(_0x1e8a('0x6'));var Redis=require(_0x1e8a('0x7'));var interaction=require(_0x1e8a('0x8'));var qs=require(_0x1e8a('0x9'));var pdf=require('../../components/export/pdf');var logger=require('../../config/logger')(_0x1e8a('0xa'));var config=require(_0x1e8a('0xb'));var db=require(_0x1e8a('0xc'))['db'];config[_0x1e8a('0xd')]=_['defaults'](config['redis'],{'host':_0x1e8a('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x1e8a('0xd')]));require(_0x1e8a('0xf'))['register'](socket);function respondWithStatusCode(_0x5793af,_0x439024){_0x439024=_0x439024||0xcc;return function(_0x170fc4){if(_0x170fc4){return _0x5793af[_0x1e8a('0x10')](_0x439024);}return _0x5793af['status'](_0x439024)[_0x1e8a('0x11')]();};}function respondWithResult(_0x5dc275,_0x104852){_0x104852=_0x104852||0xc8;return function(_0xf5ac1d){if(_0xf5ac1d){return _0x5dc275[_0x1e8a('0x12')](_0x104852)[_0x1e8a('0x13')](_0xf5ac1d);}};}function respondWithFilteredResult(_0x486f09,_0x50a1a8){return function(_0x53dcb3){if(_0x53dcb3){var _0x4a5576=typeof _0x50a1a8[_0x1e8a('0x14')]===_0x1e8a('0x15')&&typeof _0x50a1a8[_0x1e8a('0x16')]==='undefined';var _0x5a70bf=_0x53dcb3[_0x1e8a('0x17')];var _0x34faca=_0x4a5576?0x0:_0x50a1a8['offset'];var _0x1a466a=_0x4a5576?_0x53dcb3[_0x1e8a('0x17')]:_0x50a1a8[_0x1e8a('0x14')]+_0x50a1a8[_0x1e8a('0x16')];var _0x24b50b;if(_0x1a466a>=_0x5a70bf){_0x1a466a=_0x5a70bf;_0x24b50b=0xc8;}else{_0x24b50b=0xce;}_0x486f09['status'](_0x24b50b);return _0x486f09[_0x1e8a('0x18')]('Content-Range',_0x34faca+'-'+_0x1a466a+'/'+_0x5a70bf)[_0x1e8a('0x13')](_0x53dcb3);}return null;};}function saveUpdates(_0x54d6fc){return function(_0x3727ed){if(_0x3727ed){return _0x3727ed['update'](_0x54d6fc)['then'](function(_0x5c6d50){return _0x5c6d50;});}return null;};}function removeEntity(_0x7c85f1){return function(_0x2a9e0e){if(_0x2a9e0e){return _0x2a9e0e[_0x1e8a('0x19')]()['then'](function(){_0x7c85f1[_0x1e8a('0x12')](0xcc)['end']();});}};}function handleEntityNotFound(_0x546f0e){return function(_0x4d7995){if(!_0x4d7995){_0x546f0e['sendStatus'](0x194);}return _0x4d7995;};}function handleError(_0x3fdb89,_0x16e4fc){_0x16e4fc=_0x16e4fc||0x1f4;return function(_0x511359){logger[_0x1e8a('0x1a')](_0x511359[_0x1e8a('0x1b')]);if(_0x511359[_0x1e8a('0x1c')]){delete _0x511359[_0x1e8a('0x1c')];}_0x3fdb89[_0x1e8a('0x12')](_0x16e4fc)[_0x1e8a('0x1d')](_0x511359);};}exports['index']=function(_0x1de545,_0x52985e){var _0xcc7f93={};var _0x4cf1ee=_['map'](db['WhatsappInteraction'][_0x1e8a('0x1e')],function(_0x38865c){return{'name':_0x38865c[_0x1e8a('0x1f')],'type':_0x38865c[_0x1e8a('0x20')][_0x1e8a('0x21')]};});_0xcc7f93=qs[_0x1e8a('0x22')](_0x4cf1ee,_0x1de545);return interaction[_0x1e8a('0x23')](_0x1e8a('0x24'),_0x1de545[_0x1e8a('0x25')],_0x1de545[_0x1e8a('0x26')],_0xcc7f93,_0x4cf1ee)[_0x1e8a('0x27')](respondWithFilteredResult(_0x52985e,_0xcc7f93))[_0x1e8a('0x28')](handleError(_0x52985e,null));};exports['show']=function(_0x3ee751,_0x235427){var _0x37c0c9={'raw':![],'where':{'id':_0x3ee751[_0x1e8a('0x29')]['id']}},_0x1d2d48={};_0x1d2d48[_0x1e8a('0x2a')]=_['keys'](db[_0x1e8a('0x2b')][_0x1e8a('0x1e')]);_0x1d2d48[_0x1e8a('0x25')]=_[_0x1e8a('0x2c')](_0x3ee751[_0x1e8a('0x25')]);_0x1d2d48[_0x1e8a('0x2d')]=_[_0x1e8a('0x2e')](_0x1d2d48[_0x1e8a('0x2a')],_0x1d2d48[_0x1e8a('0x25')]);_0x37c0c9[_0x1e8a('0x2f')]=_[_0x1e8a('0x2e')](_0x1d2d48[_0x1e8a('0x2a')],qs['fields'](_0x3ee751[_0x1e8a('0x25')][_0x1e8a('0x30')]));_0x37c0c9[_0x1e8a('0x2f')]=_0x37c0c9[_0x1e8a('0x2f')][_0x1e8a('0x31')]?_0x37c0c9[_0x1e8a('0x2f')]:_0x1d2d48['model'];if(_0x3ee751[_0x1e8a('0x25')][_0x1e8a('0x32')]){_0x37c0c9[_0x1e8a('0x33')]=[{'all':!![]}];}_0x37c0c9=_[_0x1e8a('0x34')]({},_0x37c0c9,_0x3ee751['options']);return db[_0x1e8a('0x2b')][_0x1e8a('0x35')](_0x37c0c9)[_0x1e8a('0x27')](handleEntityNotFound(_0x235427,null))[_0x1e8a('0x27')](respondWithResult(_0x235427,null))[_0x1e8a('0x28')](handleError(_0x235427,null));};exports[_0x1e8a('0x36')]=function(_0x151a62,_0x5db509){return db[_0x1e8a('0x2b')]['create'](_0x151a62['body'],{})['then'](respondWithResult(_0x5db509,0xc9))['catch'](handleError(_0x5db509,null));};exports[_0x1e8a('0x37')]=function(_0x4840b9,_0x36a0af){if(_0x4840b9[_0x1e8a('0x38')]['id']){delete _0x4840b9[_0x1e8a('0x38')]['id'];}return db['WhatsappInteraction']['find']({'where':{'id':_0x4840b9[_0x1e8a('0x29')]['id']}})[_0x1e8a('0x27')](handleEntityNotFound(_0x36a0af,null))['then'](saveUpdates(_0x4840b9[_0x1e8a('0x38')],null))[_0x1e8a('0x27')](respondWithResult(_0x36a0af,null))['catch'](handleError(_0x36a0af,null));};exports[_0x1e8a('0x19')]=function(_0x25fd51,_0x4687b9){return db['WhatsappInteraction']['find']({'where':{'id':_0x25fd51[_0x1e8a('0x29')]['id']}})['then'](handleEntityNotFound(_0x4687b9,null))[_0x1e8a('0x27')](removeEntity(_0x4687b9,null))[_0x1e8a('0x28')](handleError(_0x4687b9,null));};exports[_0x1e8a('0x39')]=function(_0x3a8d76,_0x257718){return db[_0x1e8a('0x2b')][_0x1e8a('0x39')]()[_0x1e8a('0x27')](respondWithResult(_0x257718,null))[_0x1e8a('0x28')](handleError(_0x257718,null));};exports[_0x1e8a('0x3a')]=function(_0x583602,_0x2554f0){return db[_0x1e8a('0x3b')][_0x1e8a('0x35')]({'where':{'id':_0x583602[_0x1e8a('0x29')]['id']}})[_0x1e8a('0x27')](handleEntityNotFound(_0x2554f0,null))[_0x1e8a('0x27')](function(_0x24176e){if(_0x24176e){return _0x24176e[_0x1e8a('0x3a')](_0x583602[_0x1e8a('0x38')][_0x1e8a('0x3c')],_[_0x1e8a('0x3d')](_0x583602[_0x1e8a('0x38')],[_0x1e8a('0x3c'),'id'])||{});}})[_0x1e8a('0x27')](respondWithResult(_0x2554f0,null))['catch'](handleError(_0x2554f0,null));};exports[_0x1e8a('0x3e')]=function(_0x3ca832,_0x394bd6){var _0x24e8a4={'raw':![],'where':{}};var _0xc1d4be={};var _0x22c709={'count':0x0,'rows':[]};return db['WhatsappInteraction'][_0x1e8a('0x3f')]({'where':{'id':_0x3ca832[_0x1e8a('0x29')]['id']}})[_0x1e8a('0x27')](handleEntityNotFound(_0x394bd6,null))[_0x1e8a('0x27')](function(_0xfa714c){if(_0xfa714c){_0xc1d4be[_0x1e8a('0x2a')]=_[_0x1e8a('0x2c')](db[_0x1e8a('0x3b')][_0x1e8a('0x1e')]);_0xc1d4be[_0x1e8a('0x25')]=_[_0x1e8a('0x2c')](_0x3ca832[_0x1e8a('0x25')]);_0xc1d4be[_0x1e8a('0x2d')]=_[_0x1e8a('0x2e')](_0xc1d4be['model'],_0xc1d4be[_0x1e8a('0x25')]);_0x24e8a4[_0x1e8a('0x2f')]=_['intersection'](_0xc1d4be[_0x1e8a('0x2a')],qs[_0x1e8a('0x30')](_0x3ca832[_0x1e8a('0x25')]['fields']));_0x24e8a4[_0x1e8a('0x2f')]=_0x24e8a4[_0x1e8a('0x2f')][_0x1e8a('0x31')]?_0x24e8a4[_0x1e8a('0x2f')]:_0xc1d4be['model'];if(!_0x3ca832[_0x1e8a('0x25')][_0x1e8a('0x40')](_0x1e8a('0x41'))){_0x24e8a4['limit']=qs[_0x1e8a('0x16')](_0x3ca832[_0x1e8a('0x25')][_0x1e8a('0x16')]);_0x24e8a4[_0x1e8a('0x14')]=qs[_0x1e8a('0x14')](_0x3ca832[_0x1e8a('0x25')][_0x1e8a('0x14')]);}_0x24e8a4[_0x1e8a('0x42')]=qs[_0x1e8a('0x43')](_0x3ca832[_0x1e8a('0x25')][_0x1e8a('0x43')]);_0x24e8a4[_0x1e8a('0x44')]=qs[_0x1e8a('0x2d')](_[_0x1e8a('0x45')](_0x3ca832[_0x1e8a('0x25')],_0xc1d4be[_0x1e8a('0x2d')]));_0x24e8a4['where']['WhatsappInteractionId']=_0xfa714c['id'];if(_0x3ca832[_0x1e8a('0x25')]['filter']){_0x24e8a4[_0x1e8a('0x44')]=_[_0x1e8a('0x34')](_0x24e8a4['where'],{'$or':_[_0x1e8a('0x46')](_0x24e8a4[_0x1e8a('0x2f')],function(_0xa7b709){var _0x2ece68={};_0x2ece68[_0xa7b709]={'$like':'%'+_0x3ca832[_0x1e8a('0x25')][_0x1e8a('0x47')]+'%'};return _0x2ece68;})});}if(_0x3ca832[_0x1e8a('0x25')][_0x1e8a('0x48')]){var _0x576886=_0x3ca832[_0x1e8a('0x25')]['$gte']['split'](',');var _0xf9337f={};_0xf9337f[_0x576886[0x0]]={'$gte':moment(_0x576886[0x1])[_0x1e8a('0x49')]('YYYY-MM-DD\x20HH:mm:ss')};_0x24e8a4[_0x1e8a('0x44')]=_[_0x1e8a('0x34')](_0x24e8a4[_0x1e8a('0x44')],_0xf9337f);}_0x24e8a4=_[_0x1e8a('0x34')]({},_0x24e8a4,_0x3ca832[_0x1e8a('0x4a')]);return db[_0x1e8a('0x3b')][_0x1e8a('0x17')]({'where':_0x24e8a4['where']})[_0x1e8a('0x27')](function(_0x1ee1d6){_0x22c709[_0x1e8a('0x17')]=_0x1ee1d6;if(_0x3ca832['query'][_0x1e8a('0x32')]){_0x24e8a4[_0x1e8a('0x33')]=[{'all':!![]}];}return db[_0x1e8a('0x3b')][_0x1e8a('0x23')](_0x24e8a4);})['then'](function(_0x1eff36){_0x22c709[_0x1e8a('0x4b')]=_0x1eff36;return _0x22c709;});}})['then'](respondWithFilteredResult(_0x394bd6,_0x24e8a4))['catch'](handleError(_0x394bd6,null));};exports['addTags']=function(_0x532d2a,_0x50620a){return db[_0x1e8a('0x2b')][_0x1e8a('0x35')]({'where':{'id':_0x532d2a['params']['id']}})[_0x1e8a('0x27')](handleEntityNotFound(_0x50620a,null))[_0x1e8a('0x27')](function(_0x349d6e){if(_0x349d6e){return _0x349d6e[_0x1e8a('0x4c')](_0x532d2a[_0x1e8a('0x38')][_0x1e8a('0x3c')],_[_0x1e8a('0x3d')](_0x532d2a[_0x1e8a('0x38')],[_0x1e8a('0x3c'),'id'])||{})[_0x1e8a('0x4d')](function(){return db[_0x1e8a('0x4e')]['findAll']({'attributes':['id',_0x1e8a('0x1c'),_0x1e8a('0x4f')],'where':{'id':_0x532d2a['body'][_0x1e8a('0x3c')]}});})[_0x1e8a('0x27')](function(_0x65f6cd){socket[_0x1e8a('0x50')](_0x1e8a('0x51'),{'id':Number(_0x532d2a[_0x1e8a('0x29')]['id']),'tags':_0x65f6cd||[]});return{'id':Number(_0x532d2a[_0x1e8a('0x29')]['id']),'tags':_0x65f6cd||[]};});}})[_0x1e8a('0x27')](respondWithResult(_0x50620a,null))[_0x1e8a('0x28')](handleError(_0x50620a,null));};exports[_0x1e8a('0x52')]=function(_0x58fbf2,_0xd5efc3){return db[_0x1e8a('0x2b')]['find']({'where':{'id':_0x58fbf2[_0x1e8a('0x29')]['id']}})[_0x1e8a('0x27')](handleEntityNotFound(_0xd5efc3,null))[_0x1e8a('0x27')](function(_0x15f2ab){if(_0x15f2ab){return _0x15f2ab['removeTags'](_0x58fbf2[_0x1e8a('0x25')]['ids']);}})[_0x1e8a('0x27')](respondWithStatusCode(_0xd5efc3,null))['catch'](handleError(_0xd5efc3,null));};exports[_0x1e8a('0x53')]=function(_0x304e62,_0x25f2e4){var _0x5431c6=moment()['unix']()[_0x1e8a('0x54')]();var _0x394620=path[_0x1e8a('0x55')](config[_0x1e8a('0x56')],_0x1e8a('0x57'),_0x1e8a('0x58'),_0x1e8a('0x59'));var _0x59d62a=path[_0x1e8a('0x55')](config['root'],_0x1e8a('0x57'),_0x1e8a('0x58'),'attachments');var _0x4a9d8e=path[_0x1e8a('0x55')](_0x394620,_0x5431c6);var _0x598dfa=util[_0x1e8a('0x49')](_0x1e8a('0x5a'),_0x304e62['params']['id'],_0x5431c6);var _0x238014=path[_0x1e8a('0x55')](_0x394620,_0x598dfa);var _0x4b6feb=[];_0x4b6feb['push']({'model':db[_0x1e8a('0x5b')],'as':_0x1e8a('0x5b'),'attributes':['id',_0x1e8a('0x5c')],'raw':!![]});_0x4b6feb['push']({'model':db[_0x1e8a('0x5d')],'as':_0x1e8a('0x5e'),'attributes':['id',_0x1e8a('0x5f'),'lastName'],'raw':!![]});if(_0x304e62[_0x1e8a('0x25')][_0x1e8a('0x60')]){_0x4b6feb[_0x1e8a('0x61')]({'model':db[_0x1e8a('0x62')],'as':_0x1e8a('0x62'),'raw':!![]});}var _0x59fb72=[{'model':db['WhatsappMessage'],'as':_0x1e8a('0x63'),'attributes':['id',_0x1e8a('0x38'),_0x1e8a('0x64'),_0x1e8a('0x65'),_0x1e8a('0x66'),_0x1e8a('0x67')],'include':_0x4b6feb}];_0x59fb72[_0x1e8a('0x61')]({'model':db['WhatsappAccount'],'as':_0x1e8a('0x68'),'attributes':['id','name']});_0x59fb72[_0x1e8a('0x61')]({'model':db[_0x1e8a('0x5b')],'as':'Owner','attributes':['id',_0x1e8a('0x5c')]});return db[_0x1e8a('0x2b')][_0x1e8a('0x35')]({'where':{'id':_0x304e62[_0x1e8a('0x29')]['id']},'include':_0x59fb72})[_0x1e8a('0x27')](handleEntityNotFound(_0x25f2e4,null))[_0x1e8a('0x27')](function(_0x50cc51){if(_0x50cc51){var _0x6ea72a=_0x50cc51[_0x1e8a('0x69')]({'plain':!![]});fs[_0x1e8a('0x6a')](_0x4a9d8e);var _0x247d58={'channel':'Whatsapp','account':_0x6ea72a[_0x1e8a('0x68')]['name'],'agent':_0x6ea72a[_0x1e8a('0x6b')]?_0x6ea72a[_0x1e8a('0x6b')][_0x1e8a('0x5c')]:'N.A.','createdAt':moment(_0x6ea72a[_0x1e8a('0x64')])[_0x1e8a('0x49')](_0x1e8a('0x6c'))[_0x1e8a('0x54')](),'closedAt':_0x6ea72a[_0x1e8a('0x6d')]?moment(_0x6ea72a[_0x1e8a('0x6e')])[_0x1e8a('0x49')](_0x1e8a('0x6c'))[_0x1e8a('0x54')]():'','disposition':_0x6ea72a[_0x1e8a('0x6f')],'messages':_(_0x6ea72a[_0x1e8a('0x63')])['filter']({'secret':![]})[_0x1e8a('0x46')](function(_0x57bc26){if(_0x57bc26[_0x1e8a('0x62')]){var _0xcf3732=path[_0x1e8a('0x55')](_0x59d62a,_0x57bc26['Attachment']['basename']);if(fs[_0x1e8a('0x70')](_0xcf3732)){fs[_0x1e8a('0x71')](_0xcf3732)[_0x1e8a('0x72')](fs[_0x1e8a('0x73')](path['join'](_0x4a9d8e,_0x57bc26[_0x1e8a('0x62')][_0x1e8a('0x74')])));}}return{'date':moment(_0x57bc26[_0x1e8a('0x64')])[_0x1e8a('0x49')]('YYYY-MM-DD\x20HH:mm:ss')[_0x1e8a('0x54')](),'sender':_0x57bc26['direction']===_0x1e8a('0x75')?_0x57bc26[_0x1e8a('0x5b')]?_0x57bc26[_0x1e8a('0x5b')][_0x1e8a('0x5c')]:_0x1e8a('0x76'):_0x57bc26[_0x1e8a('0x5e')][_0x1e8a('0x5f')]+(_0x57bc26['Contact'][_0x1e8a('0x77')]?'\x20'+_0x57bc26[_0x1e8a('0x5e')]['lastName']:''),'body':_0x57bc26[_0x1e8a('0x62')]?_0x57bc26['Attachment'][_0x1e8a('0x74')]:_0x57bc26[_0x1e8a('0x38')],'direction':_0x57bc26[_0x1e8a('0x65')]===_0x1e8a('0x75')?'A':'C','secret':_0x57bc26[_0x1e8a('0x66')],'read':_0x57bc26[_0x1e8a('0x67')],'attachment':_0x57bc26[_0x1e8a('0x62')]};})[_0x1e8a('0x78')]()};return ejs['renderFile'](path['join'](config[_0x1e8a('0x56')],_0x1e8a('0x57'),_0x1e8a('0x79'),_0x1e8a('0x7a')),{'interaction':_0x247d58})[_0x1e8a('0x27')](function(_0x379348){var _0x3e3a25=path[_0x1e8a('0x55')](_0x4a9d8e,_0x1e8a('0x7b')+_0x6ea72a['id']+'-'+_0x5431c6+_0x1e8a('0x7c'));var _0x358510={'path':_0x3e3a25,'channel':_0x1e8a('0x7d'),'interactionId':_0x6ea72a['id']};return pdf[_0x1e8a('0x7e')](_0x379348,_0x358510);})[_0x1e8a('0x27')](function(){return new BPromise(function(_0x562722,_0x5d55ca){zipdir(_0x4a9d8e,{'saveTo':_0x238014},function(_0x23aa63,_0x4d5c7b){if(_0x23aa63)return _0x5d55ca(_0x23aa63);return _0x562722(_0x4d5c7b);});})['then'](function(){return new BPromise(function(_0x4bcf58,_0x3fec7d){rimraf(_0x4a9d8e,function(_0x43111a){if(_0x43111a)_0x3fec7d(_0x43111a);return _0x4bcf58();});});})['then'](function(){return _0x25f2e4[_0x1e8a('0x53')](_0x238014,_0x598dfa,function(_0x4b6f15){if(_0x4b6f15){console['log'](_0x1e8a('0x7f'),_0x4b6f15);}else{fs[_0x1e8a('0x80')](_0x238014);}});});});}else{return _0x25f2e4[_0x1e8a('0x10')](0xc8);}})[_0x1e8a('0x28')](handleError(_0x25f2e4,null));};
\ No newline at end of file
+var _0x238e=['set','Content-Range','json','update','then','destroy','error','name','send','index','map','rawAttributes','fieldName','type','key','findAll','query','show','params','model','WhatsappInteraction','keys','intersection','attributes','fields','length','includeAll','merge','options','find','catch','create','body','describe','addMessage','WhatsappMessage','omit','filters','hasOwnProperty','nolimit','order','sort','pick','where','WhatsappInteractionId','filter','$gte','split','YYYY-MM-DD\x20HH:mm:ss','include','rows','addTags','setTags','ids','Tag','color','emit','whatsappInteractionTags:save','removeTags','download','unix','toString','root','files','tmp','join','server','attachments','push','User','fullname','firstName','Attachment','Messages','direction','secret','read','WhatsappAccount','Account','Owner','get','mkdirSync','Whatsapp','N.A.','createdAt','format','closed','existsSync','createReadStream','pipe','createWriteStream','out','System','lastName','Contact','basename','value','renderFile','views','transcript-','.pdf','createPdfFromHTML','log','err','unlinkSync','rimraf','zip-dir','moment','util','path','ejs','ioredis','../../components/export/pdf','api','../../config/environment','../../mysqldb','defaults','localhost','redis','./whatsappInteraction.socket','register','sendStatus','status','end','offset','undefined','count','limit'];(function(_0x118d39,_0x43be87){var _0x47958b=function(_0x5aaceb){while(--_0x5aaceb){_0x118d39['push'](_0x118d39['shift']());}};_0x47958b(++_0x43be87);}(_0x238e,0x69));var _0xe238=function(_0x22610f,_0x185abc){_0x22610f=_0x22610f-0x0;var _0x53c6bd=_0x238e[_0x22610f];return _0x53c6bd;};'use strict';var rimraf=require(_0xe238('0x0'));var zipdir=require(_0xe238('0x1'));var moment=require(_0xe238('0x2'));var BPromise=require('bluebird');var util=require(_0xe238('0x3'));var path=require(_0xe238('0x4'));var ejs=require(_0xe238('0x5'));var fs=require('fs');var _=require('lodash');var Redis=require(_0xe238('0x6'));var interaction=require('../../components/interaction/service');var qs=require('../../components/parsers/qs');var pdf=require(_0xe238('0x7'));var logger=require('../../config/logger')(_0xe238('0x8'));var config=require(_0xe238('0x9'));var db=require(_0xe238('0xa'))['db'];config['redis']=_[_0xe238('0xb')](config['redis'],{'host':_0xe238('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe238('0xd')]));require(_0xe238('0xe'))[_0xe238('0xf')](socket);function respondWithStatusCode(_0xe00317,_0x31be1b){_0x31be1b=_0x31be1b||0xcc;return function(_0x415d27){if(_0x415d27){return _0xe00317[_0xe238('0x10')](_0x31be1b);}return _0xe00317[_0xe238('0x11')](_0x31be1b)[_0xe238('0x12')]();};}function respondWithResult(_0x47088,_0x478a36){_0x478a36=_0x478a36||0xc8;return function(_0x491622){if(_0x491622){return _0x47088[_0xe238('0x11')](_0x478a36)['json'](_0x491622);}};}function respondWithFilteredResult(_0xe9168b,_0x44e4f0){return function(_0x56a6bb){if(_0x56a6bb){var _0x212709=typeof _0x44e4f0[_0xe238('0x13')]===_0xe238('0x14')&&typeof _0x44e4f0['limit']===_0xe238('0x14');var _0x39ddd9=_0x56a6bb['count'];var _0x3e9704=_0x212709?0x0:_0x44e4f0[_0xe238('0x13')];var _0x2585f3=_0x212709?_0x56a6bb[_0xe238('0x15')]:_0x44e4f0['offset']+_0x44e4f0[_0xe238('0x16')];var _0x45067c;if(_0x2585f3>=_0x39ddd9){_0x2585f3=_0x39ddd9;_0x45067c=0xc8;}else{_0x45067c=0xce;}_0xe9168b[_0xe238('0x11')](_0x45067c);return _0xe9168b[_0xe238('0x17')](_0xe238('0x18'),_0x3e9704+'-'+_0x2585f3+'/'+_0x39ddd9)[_0xe238('0x19')](_0x56a6bb);}return null;};}function saveUpdates(_0x3e0d8e){return function(_0x667bb6){if(_0x667bb6){return _0x667bb6[_0xe238('0x1a')](_0x3e0d8e)[_0xe238('0x1b')](function(_0x2f9825){return _0x2f9825;});}return null;};}function removeEntity(_0x33ab6d){return function(_0x506b22){if(_0x506b22){return _0x506b22[_0xe238('0x1c')]()[_0xe238('0x1b')](function(){_0x33ab6d[_0xe238('0x11')](0xcc)[_0xe238('0x12')]();});}};}function handleEntityNotFound(_0x1052f8){return function(_0x218ea8){if(!_0x218ea8){_0x1052f8[_0xe238('0x10')](0x194);}return _0x218ea8;};}function handleError(_0x381762,_0x3f6613){_0x3f6613=_0x3f6613||0x1f4;return function(_0x20be50){logger[_0xe238('0x1d')](_0x20be50['stack']);if(_0x20be50[_0xe238('0x1e')]){delete _0x20be50[_0xe238('0x1e')];}_0x381762[_0xe238('0x11')](_0x3f6613)[_0xe238('0x1f')](_0x20be50);};}exports[_0xe238('0x20')]=function(_0x19174a,_0x4959cf){var _0x3dfe9a={};var _0x18fce2=_[_0xe238('0x21')](db['WhatsappInteraction'][_0xe238('0x22')],function(_0x315745){return{'name':_0x315745[_0xe238('0x23')],'type':_0x315745[_0xe238('0x24')][_0xe238('0x25')]};});_0x3dfe9a=qs['getOptions'](_0x18fce2,_0x19174a);return interaction[_0xe238('0x26')]('whatsapp',_0x19174a[_0xe238('0x27')],_0x19174a['user'],_0x3dfe9a,_0x18fce2)[_0xe238('0x1b')](respondWithFilteredResult(_0x4959cf,_0x3dfe9a))['catch'](handleError(_0x4959cf,null));};exports[_0xe238('0x28')]=function(_0x51755c,_0x192028){var _0x328aec={'raw':![],'where':{'id':_0x51755c[_0xe238('0x29')]['id']}},_0x269c57={};_0x269c57[_0xe238('0x2a')]=_['keys'](db[_0xe238('0x2b')][_0xe238('0x22')]);_0x269c57[_0xe238('0x27')]=_[_0xe238('0x2c')](_0x51755c['query']);_0x269c57['filters']=_[_0xe238('0x2d')](_0x269c57[_0xe238('0x2a')],_0x269c57[_0xe238('0x27')]);_0x328aec[_0xe238('0x2e')]=_['intersection'](_0x269c57['model'],qs['fields'](_0x51755c[_0xe238('0x27')][_0xe238('0x2f')]));_0x328aec['attributes']=_0x328aec[_0xe238('0x2e')][_0xe238('0x30')]?_0x328aec[_0xe238('0x2e')]:_0x269c57['model'];if(_0x51755c[_0xe238('0x27')][_0xe238('0x31')]){_0x328aec['include']=[{'all':!![]}];}_0x328aec=_[_0xe238('0x32')]({},_0x328aec,_0x51755c[_0xe238('0x33')]);return db['WhatsappInteraction'][_0xe238('0x34')](_0x328aec)[_0xe238('0x1b')](handleEntityNotFound(_0x192028,null))['then'](respondWithResult(_0x192028,null))[_0xe238('0x35')](handleError(_0x192028,null));};exports[_0xe238('0x36')]=function(_0x15fe13,_0x5ecb2b){return db[_0xe238('0x2b')][_0xe238('0x36')](_0x15fe13[_0xe238('0x37')],{})[_0xe238('0x1b')](respondWithResult(_0x5ecb2b,0xc9))[_0xe238('0x35')](handleError(_0x5ecb2b,null));};exports['update']=function(_0x2e537c,_0x3c6316){if(_0x2e537c[_0xe238('0x37')]['id']){delete _0x2e537c['body']['id'];}return db[_0xe238('0x2b')]['find']({'where':{'id':_0x2e537c[_0xe238('0x29')]['id']}})[_0xe238('0x1b')](handleEntityNotFound(_0x3c6316,null))['then'](saveUpdates(_0x2e537c[_0xe238('0x37')],null))[_0xe238('0x1b')](respondWithResult(_0x3c6316,null))['catch'](handleError(_0x3c6316,null));};exports[_0xe238('0x1c')]=function(_0x583a11,_0x300b5b){return db[_0xe238('0x2b')]['find']({'where':{'id':_0x583a11[_0xe238('0x29')]['id']}})[_0xe238('0x1b')](handleEntityNotFound(_0x300b5b,null))[_0xe238('0x1b')](removeEntity(_0x300b5b,null))[_0xe238('0x35')](handleError(_0x300b5b,null));};exports['describe']=function(_0x42d215,_0x1e9056){return db[_0xe238('0x2b')][_0xe238('0x38')]()['then'](respondWithResult(_0x1e9056,null))[_0xe238('0x35')](handleError(_0x1e9056,null));};exports[_0xe238('0x39')]=function(_0x2a2daf,_0x15e2a5){return db[_0xe238('0x3a')][_0xe238('0x34')]({'where':{'id':_0x2a2daf[_0xe238('0x29')]['id']}})['then'](handleEntityNotFound(_0x15e2a5,null))[_0xe238('0x1b')](function(_0x14710d){if(_0x14710d){return _0x14710d['addMessage'](_0x2a2daf[_0xe238('0x37')]['ids'],_[_0xe238('0x3b')](_0x2a2daf[_0xe238('0x37')],['ids','id'])||{});}})[_0xe238('0x1b')](respondWithResult(_0x15e2a5,null))[_0xe238('0x35')](handleError(_0x15e2a5,null));};exports['getMessages']=function(_0x2d070c,_0x1723e1){var _0x36bcd7={'raw':![],'where':{}};var _0x206466={};var _0x168656={'count':0x0,'rows':[]};return db[_0xe238('0x2b')]['findOne']({'where':{'id':_0x2d070c[_0xe238('0x29')]['id']}})[_0xe238('0x1b')](handleEntityNotFound(_0x1723e1,null))[_0xe238('0x1b')](function(_0x298595){if(_0x298595){_0x206466[_0xe238('0x2a')]=_['keys'](db['WhatsappMessage']['rawAttributes']);_0x206466['query']=_['keys'](_0x2d070c['query']);_0x206466[_0xe238('0x3c')]=_[_0xe238('0x2d')](_0x206466[_0xe238('0x2a')],_0x206466[_0xe238('0x27')]);_0x36bcd7[_0xe238('0x2e')]=_[_0xe238('0x2d')](_0x206466[_0xe238('0x2a')],qs['fields'](_0x2d070c['query']['fields']));_0x36bcd7[_0xe238('0x2e')]=_0x36bcd7['attributes'][_0xe238('0x30')]?_0x36bcd7['attributes']:_0x206466[_0xe238('0x2a')];if(!_0x2d070c[_0xe238('0x27')][_0xe238('0x3d')](_0xe238('0x3e'))){_0x36bcd7[_0xe238('0x16')]=qs[_0xe238('0x16')](_0x2d070c['query']['limit']);_0x36bcd7[_0xe238('0x13')]=qs['offset'](_0x2d070c[_0xe238('0x27')]['offset']);}_0x36bcd7[_0xe238('0x3f')]=qs[_0xe238('0x40')](_0x2d070c['query'][_0xe238('0x40')]);_0x36bcd7['where']=qs[_0xe238('0x3c')](_[_0xe238('0x41')](_0x2d070c['query'],_0x206466[_0xe238('0x3c')]));_0x36bcd7[_0xe238('0x42')][_0xe238('0x43')]=_0x298595['id'];if(_0x2d070c[_0xe238('0x27')][_0xe238('0x44')]){_0x36bcd7[_0xe238('0x42')]=_['merge'](_0x36bcd7[_0xe238('0x42')],{'$or':_[_0xe238('0x21')](_0x36bcd7[_0xe238('0x2e')],function(_0xec799a){var _0x220642={};_0x220642[_0xec799a]={'$like':'%'+_0x2d070c[_0xe238('0x27')][_0xe238('0x44')]+'%'};return _0x220642;})});}if(_0x2d070c[_0xe238('0x27')][_0xe238('0x45')]){var _0x284e35=_0x2d070c['query'][_0xe238('0x45')][_0xe238('0x46')](',');var _0x43e10b={};_0x43e10b[_0x284e35[0x0]]={'$gte':moment(_0x284e35[0x1])['format'](_0xe238('0x47'))};_0x36bcd7['where']=_[_0xe238('0x32')](_0x36bcd7[_0xe238('0x42')],_0x43e10b);}_0x36bcd7=_[_0xe238('0x32')]({},_0x36bcd7,_0x2d070c[_0xe238('0x33')]);return db[_0xe238('0x3a')][_0xe238('0x15')]({'where':_0x36bcd7['where']})[_0xe238('0x1b')](function(_0x4f5884){_0x168656[_0xe238('0x15')]=_0x4f5884;if(_0x2d070c['query'][_0xe238('0x31')]){_0x36bcd7[_0xe238('0x48')]=[{'all':!![]}];}return db['WhatsappMessage'][_0xe238('0x26')](_0x36bcd7);})[_0xe238('0x1b')](function(_0xb2aad4){_0x168656[_0xe238('0x49')]=_0xb2aad4;return _0x168656;});}})[_0xe238('0x1b')](respondWithFilteredResult(_0x1723e1,_0x36bcd7))[_0xe238('0x35')](handleError(_0x1723e1,null));};exports[_0xe238('0x4a')]=function(_0x117d72,_0x2a1494){return db[_0xe238('0x2b')][_0xe238('0x34')]({'where':{'id':_0x117d72[_0xe238('0x29')]['id']}})[_0xe238('0x1b')](handleEntityNotFound(_0x2a1494,null))[_0xe238('0x1b')](function(_0x4b52de){if(_0x4b52de){return _0x4b52de[_0xe238('0x4b')](_0x117d72[_0xe238('0x37')]['ids'],_[_0xe238('0x3b')](_0x117d72[_0xe238('0x37')],[_0xe238('0x4c'),'id'])||{})['spread'](function(){return db[_0xe238('0x4d')]['findAll']({'attributes':['id',_0xe238('0x1e'),_0xe238('0x4e')],'where':{'id':_0x117d72[_0xe238('0x37')][_0xe238('0x4c')]}});})[_0xe238('0x1b')](function(_0x3bbb1c){socket[_0xe238('0x4f')](_0xe238('0x50'),{'id':Number(_0x117d72['params']['id']),'tags':_0x3bbb1c||[]});return{'id':Number(_0x117d72[_0xe238('0x29')]['id']),'tags':_0x3bbb1c||[]};});}})['then'](respondWithResult(_0x2a1494,null))[_0xe238('0x35')](handleError(_0x2a1494,null));};exports[_0xe238('0x51')]=function(_0x595bc4,_0x2f9e43){return db[_0xe238('0x2b')]['find']({'where':{'id':_0x595bc4[_0xe238('0x29')]['id']}})[_0xe238('0x1b')](handleEntityNotFound(_0x2f9e43,null))[_0xe238('0x1b')](function(_0x195579){if(_0x195579){return _0x195579['removeTags'](_0x595bc4[_0xe238('0x27')][_0xe238('0x4c')]);}})[_0xe238('0x1b')](respondWithStatusCode(_0x2f9e43,null))[_0xe238('0x35')](handleError(_0x2f9e43,null));};exports[_0xe238('0x52')]=function(_0x35e266,_0x53698f){var _0x490019=moment()[_0xe238('0x53')]()[_0xe238('0x54')]();var _0x430ba2=path['join'](config[_0xe238('0x55')],'server',_0xe238('0x56'),_0xe238('0x57'));var _0x160286=path[_0xe238('0x58')](config[_0xe238('0x55')],_0xe238('0x59'),_0xe238('0x56'),_0xe238('0x5a'));var _0x267024=path[_0xe238('0x58')](_0x430ba2,_0x490019);var _0x5ab590=util['format']('transcript-%d-%s.zip',_0x35e266[_0xe238('0x29')]['id'],_0x490019);var _0x2432bb=path[_0xe238('0x58')](_0x430ba2,_0x5ab590);var _0x3cdff2=[];_0x3cdff2[_0xe238('0x5b')]({'model':db[_0xe238('0x5c')],'as':_0xe238('0x5c'),'attributes':['id',_0xe238('0x5d')],'raw':!![]});_0x3cdff2['push']({'model':db['CmContact'],'as':'Contact','attributes':['id',_0xe238('0x5e'),'lastName'],'raw':!![]});if(_0x35e266[_0xe238('0x27')][_0xe238('0x5a')]){_0x3cdff2[_0xe238('0x5b')]({'model':db['Attachment'],'as':_0xe238('0x5f'),'raw':!![]});}var _0xc9ab1b=[{'model':db['WhatsappMessage'],'as':_0xe238('0x60'),'attributes':['id',_0xe238('0x37'),'createdAt',_0xe238('0x61'),_0xe238('0x62'),_0xe238('0x63')],'include':_0x3cdff2}];_0xc9ab1b[_0xe238('0x5b')]({'model':db[_0xe238('0x64')],'as':_0xe238('0x65'),'attributes':['id',_0xe238('0x1e')]});_0xc9ab1b[_0xe238('0x5b')]({'model':db[_0xe238('0x5c')],'as':_0xe238('0x66'),'attributes':['id','fullname']});return db['WhatsappInteraction'][_0xe238('0x34')]({'where':{'id':_0x35e266['params']['id']},'include':_0xc9ab1b})['then'](handleEntityNotFound(_0x53698f,null))[_0xe238('0x1b')](function(_0xed3d55){if(_0xed3d55){var _0x1d9569=_0xed3d55[_0xe238('0x67')]({'plain':!![]});fs[_0xe238('0x68')](_0x267024);var _0x46778c={'channel':_0xe238('0x69'),'account':_0x1d9569[_0xe238('0x65')][_0xe238('0x1e')],'agent':_0x1d9569[_0xe238('0x66')]?_0x1d9569[_0xe238('0x66')][_0xe238('0x5d')]:_0xe238('0x6a'),'createdAt':moment(_0x1d9569[_0xe238('0x6b')])[_0xe238('0x6c')](_0xe238('0x47'))[_0xe238('0x54')](),'closedAt':_0x1d9569[_0xe238('0x6d')]?moment(_0x1d9569['closedAt'])[_0xe238('0x6c')](_0xe238('0x47'))[_0xe238('0x54')]():'','disposition':_0x1d9569['disposition'],'messages':_(_0x1d9569['Messages'])[_0xe238('0x44')]({'secret':![]})[_0xe238('0x21')](function(_0x1f4023){if(_0x1f4023[_0xe238('0x5f')]){var _0x2fb18f=path[_0xe238('0x58')](_0x160286,_0x1f4023[_0xe238('0x5f')]['basename']);if(fs[_0xe238('0x6e')](_0x2fb18f)){fs[_0xe238('0x6f')](_0x2fb18f)[_0xe238('0x70')](fs[_0xe238('0x71')](path[_0xe238('0x58')](_0x267024,_0x1f4023[_0xe238('0x5f')]['basename'])));}}return{'date':moment(_0x1f4023[_0xe238('0x6b')])[_0xe238('0x6c')](_0xe238('0x47'))[_0xe238('0x54')](),'sender':_0x1f4023['direction']===_0xe238('0x72')?_0x1f4023['User']?_0x1f4023[_0xe238('0x5c')][_0xe238('0x5d')]:_0xe238('0x73'):_0x1f4023['Contact'][_0xe238('0x5e')]+(_0x1f4023['Contact'][_0xe238('0x74')]?'\x20'+_0x1f4023[_0xe238('0x75')][_0xe238('0x74')]:''),'body':_0x1f4023['Attachment']?_0x1f4023[_0xe238('0x5f')][_0xe238('0x76')]:_0x1f4023[_0xe238('0x37')],'direction':_0x1f4023[_0xe238('0x61')]===_0xe238('0x72')?'A':'C','secret':_0x1f4023[_0xe238('0x62')],'read':_0x1f4023[_0xe238('0x63')],'attachment':_0x1f4023[_0xe238('0x5f')]};})[_0xe238('0x77')]()};return ejs[_0xe238('0x78')](path['join'](config[_0xe238('0x55')],_0xe238('0x59'),_0xe238('0x79'),'downloadInteraction.ejs'),{'interaction':_0x46778c})[_0xe238('0x1b')](function(_0x4a0e96){var _0x2ce3e5=path[_0xe238('0x58')](_0x267024,_0xe238('0x7a')+_0x1d9569['id']+'-'+_0x490019+_0xe238('0x7b'));var _0x90097b={'path':_0x2ce3e5,'channel':_0xe238('0x69'),'interactionId':_0x1d9569['id']};return pdf[_0xe238('0x7c')](_0x4a0e96,_0x90097b);})[_0xe238('0x1b')](function(){return new BPromise(function(_0xb2b743,_0x90055f){zipdir(_0x267024,{'saveTo':_0x2432bb},function(_0xd6b904,_0x16e856){if(_0xd6b904)return _0x90055f(_0xd6b904);return _0xb2b743(_0x16e856);});})[_0xe238('0x1b')](function(){return new BPromise(function(_0x514791,_0x1275f8){rimraf(_0x267024,function(_0x20b8b5){if(_0x20b8b5)_0x1275f8(_0x20b8b5);return _0x514791();});});})[_0xe238('0x1b')](function(){return _0x53698f['download'](_0x2432bb,_0x5ab590,function(_0x5908c0){if(_0x5908c0){console[_0xe238('0x7d')](_0xe238('0x7e'),_0x5908c0);}else{fs[_0xe238('0x7f')](_0x2432bb);}});});});}else{return _0x53698f[_0xe238('0x10')](0xc8);}})[_0xe238('0x35')](handleError(_0x53698f,null));};
\ No newline at end of file
index 822cc7b..5447ad7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1e8=['unreadMessages','length','catch','hasOwnProperty','hook','exports','events','WhatsappInteraction','../../mysqldb','WhatsappMessage','save','remove','getUsers','then','setDataValue','map','findAll'];(function(_0x589f05,_0x1c5a16){var _0x3a11b4=function(_0x1ec7fb){while(--_0x1ec7fb){_0x589f05['push'](_0x589f05['shift']());}};_0x3a11b4(++_0x1c5a16);}(_0xa1e8,0x1af));var _0x8a1e=function(_0x3216d8,_0x4c1efc){_0x3216d8=_0x3216d8-0x0;var _0x5be759=_0xa1e8[_0x3216d8];return _0x5be759;};'use strict';var EventEmitter=require(_0x8a1e('0x0'));var WhatsappInteraction=require('../../mysqldb')['db'][_0x8a1e('0x1')];var WhatsappMessage=require(_0x8a1e('0x2'))['db'][_0x8a1e('0x3')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x8a1e('0x4'),'afterUpdate':'update','afterDestroy':_0x8a1e('0x5')};function emitEvent(_0x4f642b){return function(_0x20fe9d,_0x5b46f1,_0x5730e0){_0x20fe9d[_0x8a1e('0x6')]({'attributes':['id'],'raw':!![]})[_0x8a1e('0x7')](function(_0xeaba17){_0x20fe9d[_0x8a1e('0x8')]('Users',_0xeaba17[_0x8a1e('0x9')](function(_0x365845){return{'id':_0x365845['id']};}));return WhatsappMessage[_0x8a1e('0xa')]({'where':{'WhatsappInteractionId':_0x20fe9d['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x31afa4){_0x20fe9d['setDataValue'](_0x8a1e('0xb'),_0x31afa4[_0x8a1e('0xc')]);WhatsappInteractionEvents['emit'](_0x4f642b+':'+_0x20fe9d['id'],_0x20fe9d);WhatsappInteractionEvents['emit'](_0x4f642b,_0x20fe9d);_0x5730e0(null);})[_0x8a1e('0xd')](_0x5730e0(null));};}for(var e in events){if(events[_0x8a1e('0xe')](e)){var event=events[e];WhatsappInteraction[_0x8a1e('0xf')](e,emitEvent(event));}}module[_0x8a1e('0x10')]=WhatsappInteractionEvents;
\ No newline at end of file
+var _0x41bb=['length','emit','hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners','save','update','remove','setDataValue','Users','findAll','then','unreadMessages'];(function(_0x3113d0,_0x3db98f){var _0x12b6f0=function(_0x49f369){while(--_0x49f369){_0x3113d0['push'](_0x3113d0['shift']());}};_0x12b6f0(++_0x3db98f);}(_0x41bb,0xc5));var _0xb41b=function(_0x9bcde0,_0x34e749){_0x9bcde0=_0x9bcde0-0x0;var _0x511f42=_0x41bb[_0x9bcde0];return _0x511f42;};'use strict';var EventEmitter=require(_0xb41b('0x0'));var WhatsappInteraction=require(_0xb41b('0x1'))['db']['WhatsappInteraction'];var WhatsappMessage=require(_0xb41b('0x1'))['db']['WhatsappMessage'];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0xb41b('0x2')](0x0);var events={'afterCreate':_0xb41b('0x3'),'afterUpdate':_0xb41b('0x4'),'afterDestroy':_0xb41b('0x5')};function emitEvent(_0x4ee21b){return function(_0x12cea3,_0x2c9f9e,_0x2dbaa3){_0x12cea3['getUsers']({'attributes':['id'],'raw':!![]})['then'](function(_0x497242){_0x12cea3[_0xb41b('0x6')](_0xb41b('0x7'),_0x497242['map'](function(_0x13d44e){return{'id':_0x13d44e['id']};}));return WhatsappMessage[_0xb41b('0x8')]({'where':{'WhatsappInteractionId':_0x12cea3['id'],'direction':'in','read':![]},'raw':!![]});})[_0xb41b('0x9')](function(_0xa2aa66){_0x12cea3[_0xb41b('0x6')](_0xb41b('0xa'),_0xa2aa66[_0xb41b('0xb')]);WhatsappInteractionEvents['emit'](_0x4ee21b+':'+_0x12cea3['id'],_0x12cea3);WhatsappInteractionEvents[_0xb41b('0xc')](_0x4ee21b,_0x12cea3);_0x2dbaa3(null);})['catch'](_0x2dbaa3(null));};}for(var e in events){if(events[_0xb41b('0xd')](e)){var event=events[e];WhatsappInteraction[_0xb41b('0xe')](e,emitEvent(event));}}module[_0xb41b('0xf')]=WhatsappInteractionEvents;
\ No newline at end of file
index 1aa3cbb..1c7c742 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf08=['changed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','bluebird','request-promise','../../config/environment','./whatsappInteraction.attributes','exports','define'];(function(_0x17af15,_0x1fba93){var _0x3ec0ae=function(_0x337f36){while(--_0x337f36){_0x17af15['push'](_0x17af15['shift']());}};_0x3ec0ae(++_0x1fba93);}(_0xdf08,0x1f2));var _0x8df0=function(_0x378381,_0x57d229){_0x378381=_0x378381-0x0;var _0x13c1ae=_0xdf08[_0x378381];return _0x13c1ae;};'use strict';var _=require(_0x8df0('0x0'));var util=require(_0x8df0('0x1'));var logger=require(_0x8df0('0x2'))('api');var moment=require('moment');var BPromise=require(_0x8df0('0x3'));var rp=require(_0x8df0('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x8df0('0x5'));var attributes=require(_0x8df0('0x6'));module[_0x8df0('0x7')]=function(_0x5580e6,_0xb63bcd){return _0x5580e6[_0x8df0('0x8')]('WhatsappInteraction',attributes,{'tableName':'whatsapp_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x245c72,_0x2dc996,_0x4a9c2d){if(_0x245c72[_0x8df0('0x9')]('closed')){_0x245c72[_0x8df0('0xa')]=moment()[_0x8df0('0xb')](_0x8df0('0xc'));}_0x4a9c2d(null,_0x245c72);}}});};
\ No newline at end of file
+var _0x5066=['closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','api','bluebird','request-promise','path','rimraf','../../config/environment','./whatsappInteraction.attributes','exports','define','changed','closed'];(function(_0x40a825,_0x3bac79){var _0x273a54=function(_0x5628d8){while(--_0x5628d8){_0x40a825['push'](_0x40a825['shift']());}};_0x273a54(++_0x3bac79);}(_0x5066,0x1a3));var _0x6506=function(_0x24b897,_0x38df26){_0x24b897=_0x24b897-0x0;var _0x522698=_0x5066[_0x24b897];return _0x522698;};'use strict';var _=require(_0x6506('0x0'));var util=require(_0x6506('0x1'));var logger=require('../../config/logger')(_0x6506('0x2'));var moment=require('moment');var BPromise=require(_0x6506('0x3'));var rp=require(_0x6506('0x4'));var fs=require('fs');var path=require(_0x6506('0x5'));var rimraf=require(_0x6506('0x6'));var config=require(_0x6506('0x7'));var attributes=require(_0x6506('0x8'));module[_0x6506('0x9')]=function(_0x2e8f02,_0x2ff8be){return _0x2e8f02[_0x6506('0xa')]('WhatsappInteraction',attributes,{'tableName':'whatsapp_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x5ca913,_0x374718,_0x9c5624){if(_0x5ca913[_0x6506('0xb')](_0x6506('0xc'))){_0x5ca913[_0x6506('0xd')]=moment()[_0x6506('0xe')](_0x6506('0xf'));}_0x9c5624(null,_0x5ca913);}}});};
\ No newline at end of file
index 5819f4a..b4062e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d4e=['AddTagsToWhatsappInteraction','find','addTags','body','ids','omit','AddTags','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/environment','client','http','redis','localhost','socket.io-emitter','request','then','WhatsappInteraction,\x20%s,\x20%s','request\x20sent','debug','WhatsappInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','UpdateWhatsappInteraction','WhatsappInteraction','options','raw','where','attributes','limit'];(function(_0x4fc9e6,_0xc51915){var _0x551d28=function(_0x1a603b){while(--_0x1a603b){_0x4fc9e6['push'](_0x4fc9e6['shift']());}};_0x551d28(++_0xc51915);}(_0x8d4e,0x12f));var _0xe8d4=function(_0x40581a,_0x255aa3){_0x40581a=_0x40581a-0x0;var _0x5e4fb4=_0x8d4e[_0x40581a];return _0x5e4fb4;};'use strict';var _=require('lodash');var util=require(_0xe8d4('0x0'));var moment=require(_0xe8d4('0x1'));var BPromise=require('bluebird');var rs=require(_0xe8d4('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe8d4('0x3'))['db'];var utils=require(_0xe8d4('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0xe8d4('0x5'));var jayson=require('jayson/promise');var client=jayson[_0xe8d4('0x6')][_0xe8d4('0x7')]({'port':0x232a});config[_0xe8d4('0x8')]=_['defaults'](config[_0xe8d4('0x8')],{'host':_0xe8d4('0x9'),'port':0x18eb});var socket=require(_0xe8d4('0xa'))(new Redis(config[_0xe8d4('0x8')]));require('./whatsappInteraction.socket')['register'](socket);function respondWithRpcPromise(_0x2b3149,_0x1462bf,_0x3c18c5){return new BPromise(function(_0xc72f21,_0x306907){return client[_0xe8d4('0xb')](_0x2b3149,_0x3c18c5)[_0xe8d4('0xc')](function(_0x5f4059){logger['info'](_0xe8d4('0xd'),_0x1462bf,_0xe8d4('0xe'));logger[_0xe8d4('0xf')](_0xe8d4('0x10'),_0x1462bf,'request\x20sent',JSON[_0xe8d4('0x11')](_0x5f4059));if(_0x5f4059[_0xe8d4('0x12')]){if(_0x5f4059['error'][_0xe8d4('0x13')]===0x1f4){logger[_0xe8d4('0x12')]('WhatsappInteraction,\x20%s,\x20%s',_0x1462bf,_0x5f4059[_0xe8d4('0x12')][_0xe8d4('0x14')]);return _0x306907(_0x5f4059[_0xe8d4('0x12')]['message']);}logger[_0xe8d4('0x12')](_0xe8d4('0xd'),_0x1462bf,_0x5f4059[_0xe8d4('0x12')][_0xe8d4('0x14')]);return _0xc72f21(_0x5f4059[_0xe8d4('0x12')][_0xe8d4('0x14')]);}else{logger[_0xe8d4('0x15')](_0xe8d4('0xd'),_0x1462bf,_0xe8d4('0xe'));_0xc72f21(_0x5f4059['result'][_0xe8d4('0x14')]);}})[_0xe8d4('0x16')](function(_0x13b50a){logger[_0xe8d4('0x12')]('WhatsappInteraction,\x20%s,\x20%s',_0x1462bf,_0x13b50a);_0x306907(_0x13b50a);});});}exports[_0xe8d4('0x17')]=function(_0x5c8ec7){var _0x5df43c=this;return new Promise(function(_0x4988d9,_0x5ade6c){return db[_0xe8d4('0x18')]['update'](_0x5c8ec7['body'],{'raw':_0x5c8ec7[_0xe8d4('0x19')]?_0x5c8ec7[_0xe8d4('0x19')][_0xe8d4('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5c8ec7[_0xe8d4('0x19')]?_0x5c8ec7['options'][_0xe8d4('0x1b')]||null:null,'attributes':_0x5c8ec7[_0xe8d4('0x19')]?_0x5c8ec7['options'][_0xe8d4('0x1c')]||null:null,'limit':_0x5c8ec7[_0xe8d4('0x19')]?_0x5c8ec7['options'][_0xe8d4('0x1d')]||null:null})[_0xe8d4('0xc')](function(_0x275774){logger[_0xe8d4('0x15')](_0xe8d4('0x17'),_0x5c8ec7);logger[_0xe8d4('0xf')]('UpdateWhatsappInteraction',_0x5c8ec7,JSON['stringify'](_0x275774));_0x4988d9(_0x275774);})['catch'](function(_0x4cf8ab){logger['error']('UpdateWhatsappInteraction',_0x4cf8ab[_0xe8d4('0x14')],_0x5c8ec7);_0x5ade6c(_0x5df43c[_0xe8d4('0x12')](0x1f4,_0x4cf8ab[_0xe8d4('0x14')]));});});};exports[_0xe8d4('0x1e')]=function(_0x25c428){return new Promise(function(_0x59e666,_0x3567e6){return db['WhatsappInteraction'][_0xe8d4('0x1f')]({'where':_0x25c428[_0xe8d4('0x19')]?_0x25c428[_0xe8d4('0x19')]['where']||null:null})[_0xe8d4('0xc')](function(_0x27169c){if(_0x27169c){return _0x27169c[_0xe8d4('0x20')](_0x25c428[_0xe8d4('0x21')][_0xe8d4('0x22')],_[_0xe8d4('0x23')](_0x25c428[_0xe8d4('0x21')],[_0xe8d4('0x22'),'id'])||{});}})['spread'](function(_0x28a713){logger[_0xe8d4('0x15')](_0xe8d4('0x24'),_0x25c428);logger[_0xe8d4('0xf')]('AddTags',_0x25c428,JSON['stringify'](_0x28a713));_0x59e666(_0x28a713);})[_0xe8d4('0x16')](function(_0xa38717){logger[_0xe8d4('0x12')](_0xe8d4('0x24'),_0xa38717['message'],_0x25c428);_0x3567e6(_this[_0xe8d4('0x12')](0x1f4,_0xa38717[_0xe8d4('0x14')]));});});};
\ No newline at end of file
+var _0x3836=['http','redis','defaults','localhost','socket.io-emitter','./whatsappInteraction.socket','info','debug','WhatsappInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','WhatsappInteraction,\x20%s,\x20%s','message','result','catch','UpdateWhatsappInteraction','WhatsappInteraction','update','body','options','raw','attributes','limit','then','find','where','addTags','ids','spread','AddTags','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client'];(function(_0x43f881,_0xd6e5a2){var _0x365c14=function(_0x50d386){while(--_0x50d386){_0x43f881['push'](_0x43f881['shift']());}};_0x365c14(++_0xd6e5a2);}(_0x3836,0x160));var _0x6383=function(_0x4c41b3,_0x20d9b0){_0x4c41b3=_0x4c41b3-0x0;var _0x46e316=_0x3836[_0x4c41b3];return _0x46e316;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x6383('0x0'));var BPromise=require(_0x6383('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6383('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x6383('0x3'));var logger=require(_0x6383('0x4'))(_0x6383('0x5'));var config=require(_0x6383('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x6383('0x7')][_0x6383('0x8')]({'port':0x232a});config[_0x6383('0x9')]=_[_0x6383('0xa')](config['redis'],{'host':_0x6383('0xb'),'port':0x18eb});var socket=require(_0x6383('0xc'))(new Redis(config['redis']));require(_0x6383('0xd'))['register'](socket);function respondWithRpcPromise(_0x3f23d0,_0x1b7738,_0x25646b){return new BPromise(function(_0x350d6a,_0x238e1f){return client['request'](_0x3f23d0,_0x25646b)['then'](function(_0x3c188e){logger[_0x6383('0xe')]('WhatsappInteraction,\x20%s,\x20%s',_0x1b7738,'request\x20sent');logger[_0x6383('0xf')](_0x6383('0x10'),_0x1b7738,_0x6383('0x11'),JSON[_0x6383('0x12')](_0x3c188e));if(_0x3c188e[_0x6383('0x13')]){if(_0x3c188e['error'][_0x6383('0x14')]===0x1f4){logger[_0x6383('0x13')](_0x6383('0x15'),_0x1b7738,_0x3c188e['error'][_0x6383('0x16')]);return _0x238e1f(_0x3c188e[_0x6383('0x13')]['message']);}logger['error'](_0x6383('0x15'),_0x1b7738,_0x3c188e['error']['message']);return _0x350d6a(_0x3c188e[_0x6383('0x13')]['message']);}else{logger[_0x6383('0xe')](_0x6383('0x15'),_0x1b7738,_0x6383('0x11'));_0x350d6a(_0x3c188e[_0x6383('0x17')][_0x6383('0x16')]);}})[_0x6383('0x18')](function(_0x5bef79){logger['error'](_0x6383('0x15'),_0x1b7738,_0x5bef79);_0x238e1f(_0x5bef79);});});}exports[_0x6383('0x19')]=function(_0x5941dd){var _0x3dac59=this;return new Promise(function(_0xccb2a0,_0x2e96b0){return db[_0x6383('0x1a')][_0x6383('0x1b')](_0x5941dd[_0x6383('0x1c')],{'raw':_0x5941dd[_0x6383('0x1d')]?_0x5941dd[_0x6383('0x1d')][_0x6383('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5941dd[_0x6383('0x1d')]?_0x5941dd[_0x6383('0x1d')]['where']||null:null,'attributes':_0x5941dd[_0x6383('0x1d')]?_0x5941dd[_0x6383('0x1d')][_0x6383('0x1f')]||null:null,'limit':_0x5941dd[_0x6383('0x1d')]?_0x5941dd[_0x6383('0x1d')][_0x6383('0x20')]||null:null})[_0x6383('0x21')](function(_0x42b75f){logger['info'](_0x6383('0x19'),_0x5941dd);logger[_0x6383('0xf')](_0x6383('0x19'),_0x5941dd,JSON[_0x6383('0x12')](_0x42b75f));_0xccb2a0(_0x42b75f);})[_0x6383('0x18')](function(_0x50d887){logger[_0x6383('0x13')](_0x6383('0x19'),_0x50d887[_0x6383('0x16')],_0x5941dd);_0x2e96b0(_0x3dac59[_0x6383('0x13')](0x1f4,_0x50d887['message']));});});};exports['AddTagsToWhatsappInteraction']=function(_0x51956e){return new Promise(function(_0x4137bd,_0x15ea7a){return db[_0x6383('0x1a')][_0x6383('0x22')]({'where':_0x51956e[_0x6383('0x1d')]?_0x51956e['options'][_0x6383('0x23')]||null:null})[_0x6383('0x21')](function(_0x5b38a1){if(_0x5b38a1){return _0x5b38a1[_0x6383('0x24')](_0x51956e[_0x6383('0x1c')][_0x6383('0x25')],_['omit'](_0x51956e[_0x6383('0x1c')],[_0x6383('0x25'),'id'])||{});}})[_0x6383('0x26')](function(_0x1142f9){logger[_0x6383('0xe')](_0x6383('0x27'),_0x51956e);logger['debug'](_0x6383('0x27'),_0x51956e,JSON[_0x6383('0x12')](_0x1142f9));_0x4137bd(_0x1142f9);})[_0x6383('0x18')](function(_0x3c73d6){logger[_0x6383('0x13')](_0x6383('0x27'),_0x3c73d6['message'],_0x51956e);_0x15ea7a(_this['error'](0x1f4,_0x3c73d6[_0x6383('0x16')]));});});};
\ No newline at end of file
index ad7240b..57712ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2852=['./whatsappInteraction.events','save','remove','update','register','length','whatsappInteraction:'];(function(_0x1faca9,_0x598962){var _0x5df1af=function(_0xcfb105){while(--_0xcfb105){_0x1faca9['push'](_0x1faca9['shift']());}};_0x5df1af(++_0x598962);}(_0x2852,0x157));var _0x2285=function(_0x24d843,_0x254c58){_0x24d843=_0x24d843-0x0;var _0x3189f5=_0x2852[_0x24d843];return _0x3189f5;};'use strict';var WhatsappInteractionEvents=require(_0x2285('0x0'));var events=[_0x2285('0x1'),_0x2285('0x2'),_0x2285('0x3')];function createListener(_0x27c6f3,_0x3bcddb){return function(_0x56988e){_0x3bcddb['emit'](_0x27c6f3,_0x56988e);};}function removeListener(_0x4ac43b,_0x494099){return function(){WhatsappInteractionEvents['removeListener'](_0x4ac43b,_0x494099);};}exports[_0x2285('0x4')]=function(_0x28fd42){for(var _0x1ae162=0x0,_0x2f39c2=events[_0x2285('0x5')];_0x1ae162<_0x2f39c2;_0x1ae162++){var _0x259541=events[_0x1ae162];var _0x92fe0b=createListener(_0x2285('0x6')+_0x259541,_0x28fd42);WhatsappInteractionEvents['on'](_0x259541,_0x92fe0b);}};
\ No newline at end of file
+var _0x433a=['remove','register','length','whatsappInteraction:','./whatsappInteraction.events'];(function(_0x4ded65,_0xc8d7c1){var _0x5864fb=function(_0x40df9d){while(--_0x40df9d){_0x4ded65['push'](_0x4ded65['shift']());}};_0x5864fb(++_0xc8d7c1);}(_0x433a,0x9f));var _0xa433=function(_0x39b118,_0x40a0fc){_0x39b118=_0x39b118-0x0;var _0x393691=_0x433a[_0x39b118];return _0x393691;};'use strict';var WhatsappInteractionEvents=require(_0xa433('0x0'));var events=['save',_0xa433('0x1'),'update'];function createListener(_0x47c1a5,_0x3bdfb4){return function(_0x41c352){_0x3bdfb4['emit'](_0x47c1a5,_0x41c352);};}function removeListener(_0x40da03,_0xbb576e){return function(){WhatsappInteractionEvents['removeListener'](_0x40da03,_0xbb576e);};}exports[_0xa433('0x2')]=function(_0x1dad6a){for(var _0x2f2afa=0x0,_0x2ca6a1=events[_0xa433('0x3')];_0x2f2afa<_0x2ca6a1;_0x2f2afa++){var _0x332bd0=events[_0x2f2afa];var _0x2ed0b1=createListener(_0xa433('0x4')+_0x332bd0,_0x1dad6a);WhatsappInteractionEvents['on'](_0x332bd0,_0x2ed0b1);}};
\ No newline at end of file
index 35e98c0..ebf84e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe137=['../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappMessage.controller','get','isAuthenticated','/describe','/:id','show','post','tracked','whatsapp','whatsappmessage:create','put','update','/:id/accept','/:id/reject','reject','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra'];(function(_0x3f1b6d,_0x5df4c6){var _0x440bc9=function(_0x4b2539){while(--_0x4b2539){_0x3f1b6d['push'](_0x3f1b6d['shift']());}};_0x440bc9(++_0x5df4c6);}(_0xe137,0x108));var _0x7e13=function(_0x1f9f37,_0x18776e){_0x1f9f37=_0x1f9f37-0x0;var _0x21c080=_0xe137[_0x1f9f37];return _0x21c080;};'use strict';var multer=require(_0x7e13('0x0'));var util=require(_0x7e13('0x1'));var path=require(_0x7e13('0x2'));var timeout=require(_0x7e13('0x3'));var express=require(_0x7e13('0x4'));var router=express['Router']();var fs_extra=require(_0x7e13('0x5'));var auth=require(_0x7e13('0x6'));var interaction=require(_0x7e13('0x7'));var config=require(_0x7e13('0x8'));var controller=require(_0x7e13('0x9'));router[_0x7e13('0xa')]('/',auth[_0x7e13('0xb')](),controller['index']);router[_0x7e13('0xa')](_0x7e13('0xc'),auth['isAuthenticated'](),controller['describe']);router[_0x7e13('0xa')](_0x7e13('0xd'),auth['isAuthenticated'](),controller[_0x7e13('0xe')]);router[_0x7e13('0xf')]('/',auth[_0x7e13('0xb')](),interaction[_0x7e13('0x10')](_0x7e13('0x11'),_0x7e13('0x12')),controller['create']);router['post']('/:id/status',controller['status']);router[_0x7e13('0x13')](_0x7e13('0xd'),auth[_0x7e13('0xb')](),controller[_0x7e13('0x14')]);router[_0x7e13('0x13')](_0x7e13('0x15'),auth[_0x7e13('0xb')](),controller['accept']);router[_0x7e13('0x13')](_0x7e13('0x16'),auth['isAuthenticated'](),controller[_0x7e13('0x17')]);router[_0x7e13('0x18')]('/:id',auth[_0x7e13('0xb')](),controller[_0x7e13('0x19')]);module[_0x7e13('0x1a')]=router;
\ No newline at end of file
+var _0xd609=['../../components/auth/service','../../config/environment','isAuthenticated','index','get','/describe','describe','/:id','show','post','tracked','whatsapp','whatsappmessage:create','create','/:id/status','put','update','/:id/accept','accept','/:id/reject','reject','delete','destroy','multer','path','connect-timeout','express','Router','fs-extra'];(function(_0x2e7560,_0x48cd8f){var _0x57a2be=function(_0xfc4df3){while(--_0xfc4df3){_0x2e7560['push'](_0x2e7560['shift']());}};_0x57a2be(++_0x48cd8f);}(_0xd609,0xe2));var _0x9d60=function(_0x1b563d,_0x549ed0){_0x1b563d=_0x1b563d-0x0;var _0x578f76=_0xd609[_0x1b563d];return _0x578f76;};'use strict';var multer=require(_0x9d60('0x0'));var util=require('util');var path=require(_0x9d60('0x1'));var timeout=require(_0x9d60('0x2'));var express=require(_0x9d60('0x3'));var router=express[_0x9d60('0x4')]();var fs_extra=require(_0x9d60('0x5'));var auth=require(_0x9d60('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x9d60('0x7'));var controller=require('./whatsappMessage.controller');router['get']('/',auth[_0x9d60('0x8')](),controller[_0x9d60('0x9')]);router[_0x9d60('0xa')](_0x9d60('0xb'),auth['isAuthenticated'](),controller[_0x9d60('0xc')]);router[_0x9d60('0xa')](_0x9d60('0xd'),auth['isAuthenticated'](),controller[_0x9d60('0xe')]);router[_0x9d60('0xf')]('/',auth['isAuthenticated'](),interaction[_0x9d60('0x10')](_0x9d60('0x11'),_0x9d60('0x12')),controller[_0x9d60('0x13')]);router['post'](_0x9d60('0x14'),controller['status']);router[_0x9d60('0x15')]('/:id',auth[_0x9d60('0x8')](),controller[_0x9d60('0x16')]);router['put'](_0x9d60('0x17'),auth['isAuthenticated'](),controller[_0x9d60('0x18')]);router[_0x9d60('0x15')](_0x9d60('0x19'),auth['isAuthenticated'](),controller[_0x9d60('0x1a')]);router[_0x9d60('0x1b')](_0x9d60('0xd'),auth['isAuthenticated'](),controller[_0x9d60('0x1c')]);module['exports']=router;
\ No newline at end of file
index cef0f63..3bc1e2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56e6=['exports','TEXT','medium','BOOLEAN','ENUM','out','STRING','DATE','sequelize'];(function(_0x25dbd4,_0x359199){var _0x55ca7e=function(_0x4cafad){while(--_0x4cafad){_0x25dbd4['push'](_0x25dbd4['shift']());}};_0x55ca7e(++_0x359199);}(_0x56e6,0x6b));var _0x656e=function(_0x2f0581,_0x3fe95c){_0x2f0581=_0x2f0581-0x0;var _0x472be8=_0x56e6[_0x2f0581];return _0x472be8;};'use strict';var Sequelize=require(_0x656e('0x0'));module[_0x656e('0x1')]={'body':{'type':Sequelize[_0x656e('0x2')](_0x656e('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x656e('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0x656e('0x5')]('in','out'),'defaultValue':_0x656e('0x6'),'allowNull':![]},'messageId':{'type':Sequelize[_0x656e('0x7')](0xbe)},'phone':{'type':Sequelize[_0x656e('0x7')]},'readAt':{'type':Sequelize[_0x656e('0x8')]},'secret':{'type':Sequelize[_0x656e('0x4')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x656e('0x7')]},'providerResponse':{'type':Sequelize[_0x656e('0x2')]}};
\ No newline at end of file
+var _0x7fef=['DATE','BOOLEAN','sequelize','TEXT','out','STRING'];(function(_0x3f25b2,_0x412bd4){var _0xd8caeb=function(_0x52d252){while(--_0x52d252){_0x3f25b2['push'](_0x3f25b2['shift']());}};_0xd8caeb(++_0x412bd4);}(_0x7fef,0x110));var _0xf7fe=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7fef[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xf7fe('0x0'));module['exports']={'body':{'type':Sequelize[_0xf7fe('0x1')]('medium'),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0xf7fe('0x2')),'defaultValue':_0xf7fe('0x2'),'allowNull':![]},'messageId':{'type':Sequelize['STRING'](0xbe)},'phone':{'type':Sequelize[_0xf7fe('0x3')]},'readAt':{'type':Sequelize[_0xf7fe('0x4')]},'secret':{'type':Sequelize[_0xf7fe('0x5')],'defaultValue':![]},'providerName':{'type':Sequelize[_0xf7fe('0x3')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index cb6209b..9cacfbd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeef1=['isNil','YYYY-MM-DD\x20HH:mm:ss','get','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','contact','User','fullname','email','internal','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','../../config/logger','reject','interaction','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','SELECT','rejectmessage','WhatsappAccount','debug','WhatsppMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','inspect','twilio','messageId','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\x20%s','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappMessage.socket','register','jayson/promise','client','http','then','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','status','end','offset','undefined','count','limit','set','Content-Range','json','apply','save','update','destroy','stack','name','send','index','WhatsappMessage','rawAttributes','fieldName','type','key','model','map','keys','filters','intersection','query','fields','attributes','length','nolimit','order','sort','where','merge','filter','options','includeAll','include','findAll','show','params','find','create','body','describe','whatsapp-interactions','accept','whatsapp','read','readAt','format','UserId','user','agent','WhatsappInteraction','WhatsappInteractionId'];(function(_0x54dfbb,_0x55338d){var _0x23ca1a=function(_0x58c862){while(--_0x58c862){_0x54dfbb['push'](_0x54dfbb['shift']());}};_0x23ca1a(++_0x55338d);}(_0xeef1,0x1cc));var _0x1eef=function(_0x3e9503,_0x2deda6){_0x3e9503=_0x3e9503-0x0;var _0x1404ec=_0xeef1[_0x3e9503];return _0x1404ec;};'use strict';var emlformat=require(_0x1eef('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1eef('0x1'));var jsonpatch=require(_0x1eef('0x2'));var rp=require(_0x1eef('0x3'));var moment=require(_0x1eef('0x4'));var BPromise=require(_0x1eef('0x5'));var Mustache=require(_0x1eef('0x6'));var util=require(_0x1eef('0x7'));var path=require(_0x1eef('0x8'));var sox=require(_0x1eef('0x9'));var csv=require(_0x1eef('0xa'));var ejs=require(_0x1eef('0xb'));var fs=require('fs');var fs_extra=require(_0x1eef('0xc'));var _=require(_0x1eef('0xd'));var squel=require('squel');var crypto=require(_0x1eef('0xe'));var jsforce=require(_0x1eef('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x1eef('0xa'));var querystring=require('querystring');var Papa=require(_0x1eef('0x10'));var Redis=require(_0x1eef('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x1eef('0x12'));var as=require(_0x1eef('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x1eef('0x14'));var utils=require(_0x1eef('0x15'));var config=require(_0x1eef('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x1eef('0x17'))['db'];config[_0x1eef('0x18')]=_[_0x1eef('0x19')](config[_0x1eef('0x18')],{'host':_0x1eef('0x1a'),'port':0x18eb});var socket=require(_0x1eef('0x1b'))(new Redis(config[_0x1eef('0x18')]));require(_0x1eef('0x1c'))[_0x1eef('0x1d')](socket);var jayson=require(_0x1eef('0x1e'));var client=jayson[_0x1eef('0x1f')][_0x1eef('0x20')]({'port':0x232c});var client9002=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3b907c,_0x388992,_0x53b3cc,_0xd88da5){return new BPromise(function(_0x4cfc03,_0x1774c3){var _0x2b21fb=_0xd88da5||client;return _0x2b21fb['request'](_0x3b907c,_0x53b3cc)[_0x1eef('0x21')](function(_0x416f98){logger[_0x1eef('0x22')](_0x1eef('0x23'),_0x388992,_0x1eef('0x24'));logger['debug']('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x388992,_0x1eef('0x24'),JSON[_0x1eef('0x25')](_0x416f98));if(_0x416f98[_0x1eef('0x26')]){if(_0x416f98[_0x1eef('0x26')][_0x1eef('0x27')]===0x1f4){logger[_0x1eef('0x26')](_0x1eef('0x23'),_0x388992,_0x416f98[_0x1eef('0x26')][_0x1eef('0x28')]);return _0x1774c3(_0x416f98[_0x1eef('0x26')]['message']);}logger[_0x1eef('0x26')](_0x1eef('0x23'),_0x388992,_0x416f98[_0x1eef('0x26')][_0x1eef('0x28')]);return _0x4cfc03(_0x416f98['error'][_0x1eef('0x28')]);}else{logger[_0x1eef('0x22')]('WhatsappMessage,\x20%s,\x20%s',_0x388992,_0x1eef('0x24'));_0x4cfc03(_0x416f98['result'][_0x1eef('0x28')]);}})[_0x1eef('0x29')](function(_0x309ce9){logger[_0x1eef('0x26')](_0x1eef('0x23'),_0x388992,_0x309ce9);_0x1774c3(_0x309ce9);});});}function respondWithStatusCode(_0x55b30f,_0x251411){_0x251411=_0x251411||0xcc;return function(_0x101c30){if(_0x101c30){return _0x55b30f['sendStatus'](_0x251411);}return _0x55b30f[_0x1eef('0x2a')](_0x251411)[_0x1eef('0x2b')]();};}function respondWithResult(_0x3c4ffe,_0x317660){_0x317660=_0x317660||0xc8;return function(_0x1926ac){if(_0x1926ac){return _0x3c4ffe[_0x1eef('0x2a')](_0x317660)['json'](_0x1926ac);}};}function respondWithFilteredResult(_0x1d511d,_0x325e68){return function(_0x3e7938){if(_0x3e7938){var _0x2ab9e1=typeof _0x325e68[_0x1eef('0x2c')]===_0x1eef('0x2d')&&typeof _0x325e68['limit']==='undefined';var _0x55905b=_0x3e7938[_0x1eef('0x2e')];var _0x4e2de4=_0x2ab9e1?0x0:_0x325e68[_0x1eef('0x2c')];var _0x265d72=_0x2ab9e1?_0x3e7938[_0x1eef('0x2e')]:_0x325e68[_0x1eef('0x2c')]+_0x325e68[_0x1eef('0x2f')];var _0x38cf7a;if(_0x265d72>=_0x55905b){_0x265d72=_0x55905b;_0x38cf7a=0xc8;}else{_0x38cf7a=0xce;}_0x1d511d[_0x1eef('0x2a')](_0x38cf7a);return _0x1d511d[_0x1eef('0x30')](_0x1eef('0x31'),_0x4e2de4+'-'+_0x265d72+'/'+_0x55905b)[_0x1eef('0x32')](_0x3e7938);}return null;};}function patchUpdates(_0x16abe9){return function(_0x2befea){try{jsonpatch[_0x1eef('0x33')](_0x2befea,_0x16abe9,!![]);}catch(_0x4149b1){return BPromise['reject'](_0x4149b1);}return _0x2befea[_0x1eef('0x34')]();};}function saveUpdates(_0x17d102,_0xf0825c){return function(_0x2f91b9){if(_0x2f91b9){return _0x2f91b9[_0x1eef('0x35')](_0x17d102)[_0x1eef('0x21')](function(_0x160846){return _0x160846;});}return null;};}function removeEntity(_0x1b4acf,_0x1e417f){return function(_0x1ea851){if(_0x1ea851){return _0x1ea851[_0x1eef('0x36')]()[_0x1eef('0x21')](function(){_0x1b4acf['status'](0xcc)[_0x1eef('0x2b')]();});}};}function handleEntityNotFound(_0x437402,_0xe02807){return function(_0x1d78bd){if(!_0x1d78bd){_0x437402['sendStatus'](0x194);}return _0x1d78bd;};}function handleError(_0x3bdb05,_0x15ecec){_0x15ecec=_0x15ecec||0x1f4;return function(_0x406c0a){logger[_0x1eef('0x26')](_0x406c0a[_0x1eef('0x37')]);if(_0x406c0a['name']){delete _0x406c0a[_0x1eef('0x38')];}_0x3bdb05[_0x1eef('0x2a')](_0x15ecec)[_0x1eef('0x39')](_0x406c0a);};}exports[_0x1eef('0x3a')]=function(_0x3b7256,_0x48c034){var _0x556f7e={},_0x2e3faa={},_0xe8a468={'count':0x0,'rows':[]};var _0x4dbcb2=_['map'](db[_0x1eef('0x3b')][_0x1eef('0x3c')],function(_0x4e3aca){return{'name':_0x4e3aca[_0x1eef('0x3d')],'type':_0x4e3aca[_0x1eef('0x3e')][_0x1eef('0x3f')]};});_0x2e3faa[_0x1eef('0x40')]=_[_0x1eef('0x41')](_0x4dbcb2,'name');_0x2e3faa['query']=_[_0x1eef('0x42')](_0x3b7256['query']);_0x2e3faa[_0x1eef('0x43')]=_[_0x1eef('0x44')](_0x2e3faa['model'],_0x2e3faa[_0x1eef('0x45')]);_0x556f7e['attributes']=_['intersection'](_0x2e3faa[_0x1eef('0x40')],qs['fields'](_0x3b7256[_0x1eef('0x45')][_0x1eef('0x46')]));_0x556f7e[_0x1eef('0x47')]=_0x556f7e[_0x1eef('0x47')][_0x1eef('0x48')]?_0x556f7e['attributes']:_0x2e3faa[_0x1eef('0x40')];if(!_0x3b7256[_0x1eef('0x45')]['hasOwnProperty'](_0x1eef('0x49'))){_0x556f7e[_0x1eef('0x2f')]=qs[_0x1eef('0x2f')](_0x3b7256[_0x1eef('0x45')][_0x1eef('0x2f')]);_0x556f7e[_0x1eef('0x2c')]=qs[_0x1eef('0x2c')](_0x3b7256['query'][_0x1eef('0x2c')]);}_0x556f7e[_0x1eef('0x4a')]=qs[_0x1eef('0x4b')](_0x3b7256['query'][_0x1eef('0x4b')]);_0x556f7e[_0x1eef('0x4c')]=qs[_0x1eef('0x43')](_['pick'](_0x3b7256[_0x1eef('0x45')],_0x2e3faa[_0x1eef('0x43')]),_0x4dbcb2);if(_0x3b7256[_0x1eef('0x45')]['filter']){_0x556f7e[_0x1eef('0x4c')]=_[_0x1eef('0x4d')](_0x556f7e['where'],{'$or':_[_0x1eef('0x41')](_0x4dbcb2,function(_0x4b5080){if(_0x4b5080['type']!=='VIRTUAL'){var _0x14173f={};_0x14173f[_0x4b5080[_0x1eef('0x38')]]={'$like':'%'+_0x3b7256['query'][_0x1eef('0x4e')]+'%'};return _0x14173f;}})});}_0x556f7e=_[_0x1eef('0x4d')]({},_0x556f7e,_0x3b7256[_0x1eef('0x4f')]);var _0x5a685c={'where':_0x556f7e['where']};return db[_0x1eef('0x3b')][_0x1eef('0x2e')](_0x5a685c)[_0x1eef('0x21')](function(_0x2aae3a){_0xe8a468[_0x1eef('0x2e')]=_0x2aae3a;if(_0x3b7256[_0x1eef('0x45')][_0x1eef('0x50')]){_0x556f7e[_0x1eef('0x51')]=[{'all':!![]}];}return db[_0x1eef('0x3b')][_0x1eef('0x52')](_0x556f7e);})['then'](function(_0x126a3e){_0xe8a468['rows']=_0x126a3e;return _0xe8a468;})[_0x1eef('0x21')](respondWithFilteredResult(_0x48c034,_0x556f7e))[_0x1eef('0x29')](handleError(_0x48c034,null));};exports[_0x1eef('0x53')]=function(_0x146d0e,_0x4964ad){var _0x46409d={'raw':!![],'where':{'id':_0x146d0e[_0x1eef('0x54')]['id']}},_0x17621f={};_0x17621f[_0x1eef('0x40')]=_['keys'](db[_0x1eef('0x3b')][_0x1eef('0x3c')]);_0x17621f[_0x1eef('0x45')]=_[_0x1eef('0x42')](_0x146d0e[_0x1eef('0x45')]);_0x17621f['filters']=_[_0x1eef('0x44')](_0x17621f[_0x1eef('0x40')],_0x17621f[_0x1eef('0x45')]);_0x46409d[_0x1eef('0x47')]=_[_0x1eef('0x44')](_0x17621f[_0x1eef('0x40')],qs['fields'](_0x146d0e[_0x1eef('0x45')]['fields']));_0x46409d[_0x1eef('0x47')]=_0x46409d[_0x1eef('0x47')][_0x1eef('0x48')]?_0x46409d[_0x1eef('0x47')]:_0x17621f[_0x1eef('0x40')];if(_0x146d0e['query']['includeAll']){_0x46409d[_0x1eef('0x51')]=[{'all':!![]}];}_0x46409d=_[_0x1eef('0x4d')]({},_0x46409d,_0x146d0e[_0x1eef('0x4f')]);return db['WhatsappMessage'][_0x1eef('0x55')](_0x46409d)[_0x1eef('0x21')](handleEntityNotFound(_0x4964ad,null))[_0x1eef('0x21')](respondWithResult(_0x4964ad,null))[_0x1eef('0x29')](handleError(_0x4964ad,null));};exports[_0x1eef('0x56')]=function(_0x4dfbfa,_0x277562){return db['WhatsappMessage']['create'](_0x4dfbfa['body'],{})[_0x1eef('0x21')](respondWithResult(_0x277562,0xc9))[_0x1eef('0x29')](handleError(_0x277562,null));};exports[_0x1eef('0x35')]=function(_0x290add,_0x38f510){if(_0x290add['body']['id']){delete _0x290add['body']['id'];}return db['WhatsappMessage']['find']({'where':{'id':_0x290add[_0x1eef('0x54')]['id']}})[_0x1eef('0x21')](handleEntityNotFound(_0x38f510,null))['then'](saveUpdates(_0x290add[_0x1eef('0x57')],null))[_0x1eef('0x21')](respondWithResult(_0x38f510,null))[_0x1eef('0x29')](handleError(_0x38f510,null));};exports['destroy']=function(_0x2a9528,_0x2dd72d){return db['WhatsappMessage'][_0x1eef('0x55')]({'where':{'id':_0x2a9528['params']['id']}})[_0x1eef('0x21')](handleEntityNotFound(_0x2dd72d,null))[_0x1eef('0x21')](removeEntity(_0x2dd72d,null))[_0x1eef('0x29')](handleError(_0x2dd72d,null));};exports[_0x1eef('0x58')]=function(_0x2eb754,_0x53dff7){return db[_0x1eef('0x3b')][_0x1eef('0x58')]()[_0x1eef('0x21')](respondWithResult(_0x53dff7,null))[_0x1eef('0x29')](handleError(_0x53dff7,null));};var interaction_log=require('../../config/logger')(_0x1eef('0x59'));exports[_0x1eef('0x5a')]=function(_0x53de31,_0x322855,_0x128075){var _0xc6face={'agent':{},'channel':_0x1eef('0x5b')};if(_0x53de31[_0x1eef('0x57')]['id']){delete _0x53de31[_0x1eef('0x57')]['id'];}_0x53de31[_0x1eef('0x57')][_0x1eef('0x5c')]=!![];_0x53de31[_0x1eef('0x57')][_0x1eef('0x5d')]=moment()[_0x1eef('0x5e')]('YYYY-MM-DD\x20HH:mm:ss');_0x53de31[_0x1eef('0x57')][_0x1eef('0x5f')]=_0x53de31[_0x1eef('0x57')][_0x1eef('0x5f')]||_0x53de31[_0x1eef('0x60')]['id'];_0xc6face[_0x1eef('0x61')]['id']=_0x53de31['body'][_0x1eef('0x5f')];return db[_0x1eef('0x3b')][_0x1eef('0x55')]({'where':{'id':_0x53de31[_0x1eef('0x54')]['id'],'UserId':null}})[_0x1eef('0x21')](handleEntityNotFound(_0x322855,null))[_0x1eef('0x21')](saveUpdates(_0x53de31['body'],null))['then'](function(_0x219f0c){if(_0x219f0c){_0xc6face[_0x1eef('0x28')]=_0x219f0c['get']({'plain':!![]});return db[_0x1eef('0x62')][_0x1eef('0x55')]({'where':{'id':_0x219f0c[_0x1eef('0x63')]}});}return null;})['then'](handleEntityNotFound(_0x322855,null))[_0x1eef('0x21')](function(_0x127600){if(_0x127600){return _0x127600[_0x1eef('0x35')]({'UserId':_0x53de31[_0x1eef('0x57')][_0x1eef('0x5f')],'read1stAt':_[_0x1eef('0x64')](_0x127600['read1stAt'])?moment()[_0x1eef('0x5e')](_0x1eef('0x65')):undefined});}return null;})['then'](function(_0x5c1ae2){if(_0x5c1ae2){_0xc6face['interaction']=_0x5c1ae2[_0x1eef('0x66')]({'plain':!![]});interaction_log['info']('[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x53de31[_0x1eef('0x60')]['id'],_0x53de31[_0x1eef('0x60')][_0x1eef('0x38')],_0x53de31['user'][_0x1eef('0x67')],_0xc6face['interaction']['id'],_0x53de31[_0x1eef('0x57')]?JSON[_0x1eef('0x25')](_0x53de31[_0x1eef('0x57')]):_0x1eef('0x68'));return respondWithRpcPromise(_0x1eef('0x69'),_0x1eef('0x6a'),_0xc6face);}return null;})[_0x1eef('0x21')](function(_0x8eb1ca){var _0x1af3ca=_0x1eef('0x6b')+_0x8eb1ca[_0x1eef('0x28')][_0x1eef('0x6c')];return db[_0x1eef('0x6d')][_0x1eef('0x45')](_0x1af3ca,{'type':db[_0x1eef('0x6e')]['QueryTypes']['SELECT'],'raw':!![]})[_0x1eef('0x21')](function(_0x552438){return _0x552438;});})[_0x1eef('0x21')](function(_0x367073){if(_0x367073){_0xc6face['message'][_0x1eef('0x6f')]=_0x367073[0x0];if(!_0x53de31['body']['UserId'])return;return db[_0x1eef('0x70')][_0x1eef('0x55')]({'where':{'id':_0x53de31[_0x1eef('0x57')][_0x1eef('0x5f')],'role':_0x1eef('0x61')},'attributes':['id',_0x1eef('0x38'),_0x1eef('0x71'),_0x1eef('0x72'),_0x1eef('0x73')],'raw':!![]});}return null;})[_0x1eef('0x21')](function(_0x506022){if(!_0x506022)return null;_0xc6face['message']['agent']=_0x506022;return _0xc6face;})[_0x1eef('0x21')](function(_0x1099ff){if(_0x1099ff){if(_0x53de31[_0x1eef('0x57')][_0x1eef('0x74')]){_0xc6face['message'][_0x1eef('0x75')]=util[_0x1eef('0x5e')](_0x1eef('0x76'),_0x53de31[_0x1eef('0x60')][_0x1eef('0x38')]);_0xc6face[_0x1eef('0x28')]['channel']=_0xc6face[_0x1eef('0x77')];_0xc6face[_0x1eef('0x28')][_0x1eef('0x78')]=_0xc6face['channel'];_0xc6face['message'][_0x1eef('0x79')]='accept';return respondWithRpcPromise('EventManager',_0x1eef('0x7a'),{'event':'acceptmessage','message':_0xc6face['message']},client9002)[_0x1eef('0x21')](function(){return _0xc6face;});}return _0xc6face;}return null;})[_0x1eef('0x21')](respondWithResult(_0x322855,null))[_0x1eef('0x29')](handleError(_0x322855,null));};var interaction_log=require(_0x1eef('0x7b'))('whatsapp-interactions');exports[_0x1eef('0x7c')]=function(_0x1361fe,_0x884520,_0x3e4543){var _0x28a48d={'agent':{},'channel':_0x1eef('0x5b')};if(_0x1361fe[_0x1eef('0x57')]['id']){delete _0x1361fe['body']['id'];}_0x1361fe['body'][_0x1eef('0x5f')]=_0x1361fe['body'][_0x1eef('0x5f')]||_0x1361fe[_0x1eef('0x60')]['id'];_0x28a48d[_0x1eef('0x61')]['id']=_0x1361fe[_0x1eef('0x57')][_0x1eef('0x5f')];return db[_0x1eef('0x3b')]['find']({'where':{'id':_0x1361fe[_0x1eef('0x54')]['id'],'UserId':null}})[_0x1eef('0x21')](handleEntityNotFound(_0x884520,null))['then'](function(_0x40f60d){if(_0x40f60d){_0x28a48d[_0x1eef('0x28')]=_0x40f60d[_0x1eef('0x66')]({'plain':!![]});return db[_0x1eef('0x62')][_0x1eef('0x55')]({'where':{'id':_0x40f60d['WhatsappInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x884520,null))[_0x1eef('0x21')](function(_0x5db2f4){if(_0x5db2f4){_0x28a48d[_0x1eef('0x7d')]=_0x5db2f4[_0x1eef('0x66')]({'plain':!![]});interaction_log[_0x1eef('0x22')](_0x1eef('0x7e'),_0x1361fe[_0x1eef('0x60')]['id'],_0x1361fe['user']['name'],_0x1361fe[_0x1eef('0x60')][_0x1eef('0x67')],_0x28a48d[_0x1eef('0x7d')]['id'],_0x1361fe[_0x1eef('0x57')]?JSON['stringify'](_0x1361fe[_0x1eef('0x57')]):_0x1eef('0x68'));return respondWithRpcPromise(_0x1eef('0x7f'),_0x1eef('0x80'),_0x28a48d);}return null;})[_0x1eef('0x21')](function(_0x21fc43){var _0x24d152='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x21fc43['message'][_0x1eef('0x6c')];return db['sequelize'][_0x1eef('0x45')](_0x24d152,{'type':db[_0x1eef('0x6e')]['QueryTypes'][_0x1eef('0x81')],'raw':!![]})['then'](function(_0x355b23){return _0x355b23;});})[_0x1eef('0x21')](function(_0x3c9a13){if(_0x3c9a13){_0x28a48d[_0x1eef('0x28')][_0x1eef('0x6f')]=_0x3c9a13[0x0];if(!_0x1361fe[_0x1eef('0x57')][_0x1eef('0x5f')])return;return db['User']['find']({'where':{'id':_0x1361fe[_0x1eef('0x57')][_0x1eef('0x5f')],'role':_0x1eef('0x61')},'attributes':['id',_0x1eef('0x38'),_0x1eef('0x71'),_0x1eef('0x72'),'internal'],'raw':!![]});}return null;})[_0x1eef('0x21')](function(_0x177f85){if(!_0x177f85)return null;_0x28a48d[_0x1eef('0x28')][_0x1eef('0x61')]=_0x177f85;return _0x28a48d;})[_0x1eef('0x21')](function(_0x4804d1){if(_0x4804d1){_0x4804d1[_0x1eef('0x28')][_0x1eef('0x75')]=util[_0x1eef('0x5e')](_0x1eef('0x76'),_0x1361fe['user'][_0x1eef('0x38')]);_0x4804d1[_0x1eef('0x28')][_0x1eef('0x77')]=_0x28a48d[_0x1eef('0x77')];_0x4804d1[_0x1eef('0x28')][_0x1eef('0x78')]=_0x28a48d[_0x1eef('0x77')];_0x4804d1[_0x1eef('0x28')][_0x1eef('0x79')]=_0x1eef('0x7c');respondWithRpcPromise('EventManager','EventManager',{'event':_0x1eef('0x82'),'message':_0x4804d1['message']},client9002);return _0x28a48d;}return null;})[_0x1eef('0x21')](respondWithResult(_0x884520,null))['catch'](handleError(_0x884520,null));};exports[_0x1eef('0x2a')]=function(_0x139061,_0x2c0a82,_0x20b3d2){if(_0x139061['body']['id']){delete _0x139061[_0x1eef('0x57')]['id'];}var _0x115614;return db[_0x1eef('0x3b')][_0x1eef('0x55')]({'where':{'id':_0x139061[_0x1eef('0x54')]['id']}})[_0x1eef('0x21')](handleEntityNotFound(_0x2c0a82,null))[_0x1eef('0x21')](function(_0x34bfe8){if(_0x34bfe8){_0x115614=_0x34bfe8;return db[_0x1eef('0x83')][_0x1eef('0x55')]({'where':{'id':_0x34bfe8['WhatsappAccountId']}});}})[_0x1eef('0x21')](handleEntityNotFound(_0x2c0a82,null))[_0x1eef('0x21')](function(_0x43af93){if(_0x43af93){logger[_0x1eef('0x84')](_0x1eef('0x85'),_0x1eef('0x2a'),_0x1eef('0x86'),_0x43af93[_0x1eef('0x3e')],util[_0x1eef('0x87')](_0x139061[_0x1eef('0x57')],{'showHidden':![],'depth':null}));switch(_0x43af93[_0x1eef('0x3e')]){case _0x1eef('0x88'):if(_0x139061[_0x1eef('0x57')]['MessageSid']&&_0x139061[_0x1eef('0x57')]['MessageSid']===_0x115614[_0x1eef('0x89')]&&_0x139061[_0x1eef('0x57')][_0x1eef('0x8a')]&&_0x139061[_0x1eef('0x57')][_0x1eef('0x8a')]===_0x1eef('0x5c')){return _0x115614['update']({'read':!![]});}else{logger['error'](_0x1eef('0x8b'),_0x1eef('0x2a'),_0x1eef('0x88'),util['inspect'](_0x139061['body'],{'showHidden':![],'depth':null}));}break;}return _0x115614;}})[_0x1eef('0x21')](respondWithResult(_0x2c0a82,null))[_0x1eef('0x29')](handleError(_0x2c0a82,null));};
\ No newline at end of file
+var _0x3129=['params','length','find','create','update','body','describe','accept','whatsapp','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','WhatsappInteractionId','read1stAt','role','interaction','null','acceptMessage','ContactId','sequelize','Sequelize','QueryTypes','User','fullname','internal','manual','SIP/%s','channel','motionChannel','acceptmessage','whatsapp-interactions','reject','get','WhatsappInteraction','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','SELECT','contact','email','event','EventManager','rejectmessage','WhatsappAccount','WhatsappAccountId','received\x20delivery\x20report\x20from','inspect','MessageSid','messageId','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\x20%s','twilio','eml-format','rimraf','zip-dir','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappMessage.socket','register','jayson/promise','http','client','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','sendStatus','end','json','undefined','offset','count','limit','set','Content-Range','then','destroy','status','stack','send','index','map','rawAttributes','type','model','name','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','merge','options','WhatsappMessage','include','findAll','catch'];(function(_0x98e64,_0x216f4d){var _0x48d537=function(_0x573983){while(--_0x573983){_0x98e64['push'](_0x98e64['shift']());}};_0x48d537(++_0x216f4d);}(_0x3129,0x1d1));var _0x9312=function(_0x8881b4,_0x268c38){_0x8881b4=_0x8881b4-0x0;var _0x7de271=_0x3129[_0x8881b4];return _0x7de271;};'use strict';var emlformat=require(_0x9312('0x0'));var rimraf=require(_0x9312('0x1'));var zipdir=require(_0x9312('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x9312('0x3'));var Mustache=require(_0x9312('0x4'));var util=require(_0x9312('0x5'));var path=require(_0x9312('0x6'));var sox=require('sox');var csv=require(_0x9312('0x7'));var ejs=require(_0x9312('0x8'));var fs=require('fs');var fs_extra=require(_0x9312('0x9'));var _=require(_0x9312('0xa'));var squel=require(_0x9312('0xb'));var crypto=require(_0x9312('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x9312('0xd'));var toCsv=require('to-csv');var querystring=require(_0x9312('0xe'));var Papa=require('papaparse');var Redis=require(_0x9312('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x9312('0x10'));var as=require(_0x9312('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9312('0x12'))(_0x9312('0x13'));var utils=require('../../config/utils');var config=require(_0x9312('0x14'));var licenseUtil=require(_0x9312('0x15'));var db=require(_0x9312('0x16'))['db'];config[_0x9312('0x17')]=_[_0x9312('0x18')](config[_0x9312('0x17')],{'host':_0x9312('0x19'),'port':0x18eb});var socket=require(_0x9312('0x1a'))(new Redis(config['redis']));require(_0x9312('0x1b'))[_0x9312('0x1c')](socket);var jayson=require(_0x9312('0x1d'));var client=jayson['client'][_0x9312('0x1e')]({'port':0x232c});var client9002=jayson[_0x9312('0x1f')][_0x9312('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x1403c9,_0x4e4dc4,_0x54509b,_0x162413){return new BPromise(function(_0x233ba2,_0x268ac1){var _0x36931a=_0x162413||client;return _0x36931a['request'](_0x1403c9,_0x54509b)['then'](function(_0x171e6f){logger['info'](_0x9312('0x20'),_0x4e4dc4,_0x9312('0x21'));logger[_0x9312('0x22')](_0x9312('0x23'),_0x4e4dc4,_0x9312('0x21'),JSON[_0x9312('0x24')](_0x171e6f));if(_0x171e6f[_0x9312('0x25')]){if(_0x171e6f['error'][_0x9312('0x26')]===0x1f4){logger['error'](_0x9312('0x20'),_0x4e4dc4,_0x171e6f[_0x9312('0x25')]['message']);return _0x268ac1(_0x171e6f[_0x9312('0x25')][_0x9312('0x27')]);}logger[_0x9312('0x25')](_0x9312('0x20'),_0x4e4dc4,_0x171e6f[_0x9312('0x25')]['message']);return _0x233ba2(_0x171e6f[_0x9312('0x25')]['message']);}else{logger[_0x9312('0x28')](_0x9312('0x20'),_0x4e4dc4,_0x9312('0x21'));_0x233ba2(_0x171e6f[_0x9312('0x29')][_0x9312('0x27')]);}})['catch'](function(_0x3ca184){logger[_0x9312('0x25')](_0x9312('0x20'),_0x4e4dc4,_0x3ca184);_0x268ac1(_0x3ca184);});});}function respondWithStatusCode(_0x418e8e,_0x35c10e){_0x35c10e=_0x35c10e||0xcc;return function(_0x9df4cd){if(_0x9df4cd){return _0x418e8e[_0x9312('0x2a')](_0x35c10e);}return _0x418e8e['status'](_0x35c10e)[_0x9312('0x2b')]();};}function respondWithResult(_0x14f716,_0x480c27){_0x480c27=_0x480c27||0xc8;return function(_0x2f526d){if(_0x2f526d){return _0x14f716['status'](_0x480c27)[_0x9312('0x2c')](_0x2f526d);}};}function respondWithFilteredResult(_0xf80c36,_0x4a8b76){return function(_0x46fe60){if(_0x46fe60){var _0x222958=typeof _0x4a8b76['offset']==='undefined'&&typeof _0x4a8b76['limit']===_0x9312('0x2d');var _0x13a574=_0x46fe60['count'];var _0x55a9f9=_0x222958?0x0:_0x4a8b76[_0x9312('0x2e')];var _0x1027f9=_0x222958?_0x46fe60[_0x9312('0x2f')]:_0x4a8b76['offset']+_0x4a8b76[_0x9312('0x30')];var _0x571e9a;if(_0x1027f9>=_0x13a574){_0x1027f9=_0x13a574;_0x571e9a=0xc8;}else{_0x571e9a=0xce;}_0xf80c36['status'](_0x571e9a);return _0xf80c36[_0x9312('0x31')](_0x9312('0x32'),_0x55a9f9+'-'+_0x1027f9+'/'+_0x13a574)[_0x9312('0x2c')](_0x46fe60);}return null;};}function patchUpdates(_0x398d7b){return function(_0x5968b8){try{jsonpatch['apply'](_0x5968b8,_0x398d7b,!![]);}catch(_0x33260a){return BPromise['reject'](_0x33260a);}return _0x5968b8['save']();};}function saveUpdates(_0x1ea6fa,_0xaded2b){return function(_0x297c13){if(_0x297c13){return _0x297c13['update'](_0x1ea6fa)[_0x9312('0x33')](function(_0x58d0f9){return _0x58d0f9;});}return null;};}function removeEntity(_0x3ac587,_0x2c96de){return function(_0x29d918){if(_0x29d918){return _0x29d918[_0x9312('0x34')]()[_0x9312('0x33')](function(){_0x3ac587[_0x9312('0x35')](0xcc)[_0x9312('0x2b')]();});}};}function handleEntityNotFound(_0x2f334f,_0xc509e7){return function(_0x7a407d){if(!_0x7a407d){_0x2f334f[_0x9312('0x2a')](0x194);}return _0x7a407d;};}function handleError(_0x36e372,_0x4cd3a2){_0x4cd3a2=_0x4cd3a2||0x1f4;return function(_0x2e8bb8){logger[_0x9312('0x25')](_0x2e8bb8[_0x9312('0x36')]);if(_0x2e8bb8['name']){delete _0x2e8bb8['name'];}_0x36e372['status'](_0x4cd3a2)[_0x9312('0x37')](_0x2e8bb8);};}exports[_0x9312('0x38')]=function(_0x2913e2,_0x4c47a2){var _0x102855={},_0x46b1b5={},_0x5a201b={'count':0x0,'rows':[]};var _0x30ff32=_[_0x9312('0x39')](db['WhatsappMessage'][_0x9312('0x3a')],function(_0xa212cc){return{'name':_0xa212cc['fieldName'],'type':_0xa212cc[_0x9312('0x3b')]['key']};});_0x46b1b5[_0x9312('0x3c')]=_['map'](_0x30ff32,_0x9312('0x3d'));_0x46b1b5['query']=_[_0x9312('0x3e')](_0x2913e2[_0x9312('0x3f')]);_0x46b1b5[_0x9312('0x40')]=_[_0x9312('0x41')](_0x46b1b5[_0x9312('0x3c')],_0x46b1b5[_0x9312('0x3f')]);_0x102855[_0x9312('0x42')]=_['intersection'](_0x46b1b5[_0x9312('0x3c')],qs[_0x9312('0x43')](_0x2913e2[_0x9312('0x3f')][_0x9312('0x43')]));_0x102855['attributes']=_0x102855[_0x9312('0x42')]['length']?_0x102855[_0x9312('0x42')]:_0x46b1b5[_0x9312('0x3c')];if(!_0x2913e2[_0x9312('0x3f')][_0x9312('0x44')](_0x9312('0x45'))){_0x102855['limit']=qs[_0x9312('0x30')](_0x2913e2['query'][_0x9312('0x30')]);_0x102855['offset']=qs[_0x9312('0x2e')](_0x2913e2[_0x9312('0x3f')]['offset']);}_0x102855[_0x9312('0x46')]=qs[_0x9312('0x47')](_0x2913e2[_0x9312('0x3f')][_0x9312('0x47')]);_0x102855[_0x9312('0x48')]=qs['filters'](_['pick'](_0x2913e2[_0x9312('0x3f')],_0x46b1b5[_0x9312('0x40')]),_0x30ff32);if(_0x2913e2['query']['filter']){_0x102855[_0x9312('0x48')]=_[_0x9312('0x49')](_0x102855['where'],{'$or':_[_0x9312('0x39')](_0x30ff32,function(_0x424861){if(_0x424861[_0x9312('0x3b')]!=='VIRTUAL'){var _0x320107={};_0x320107[_0x424861['name']]={'$like':'%'+_0x2913e2[_0x9312('0x3f')]['filter']+'%'};return _0x320107;}})});}_0x102855=_[_0x9312('0x49')]({},_0x102855,_0x2913e2[_0x9312('0x4a')]);var _0x1e598d={'where':_0x102855[_0x9312('0x48')]};return db[_0x9312('0x4b')][_0x9312('0x2f')](_0x1e598d)['then'](function(_0xa27cdb){_0x5a201b[_0x9312('0x2f')]=_0xa27cdb;if(_0x2913e2[_0x9312('0x3f')]['includeAll']){_0x102855[_0x9312('0x4c')]=[{'all':!![]}];}return db[_0x9312('0x4b')][_0x9312('0x4d')](_0x102855);})['then'](function(_0x56804e){_0x5a201b['rows']=_0x56804e;return _0x5a201b;})[_0x9312('0x33')](respondWithFilteredResult(_0x4c47a2,_0x102855))[_0x9312('0x4e')](handleError(_0x4c47a2,null));};exports['show']=function(_0x25f57d,_0x51f1c8){var _0x151c63={'raw':!![],'where':{'id':_0x25f57d[_0x9312('0x4f')]['id']}},_0x189a01={};_0x189a01[_0x9312('0x3c')]=_['keys'](db[_0x9312('0x4b')]['rawAttributes']);_0x189a01[_0x9312('0x3f')]=_['keys'](_0x25f57d[_0x9312('0x3f')]);_0x189a01[_0x9312('0x40')]=_[_0x9312('0x41')](_0x189a01[_0x9312('0x3c')],_0x189a01[_0x9312('0x3f')]);_0x151c63[_0x9312('0x42')]=_['intersection'](_0x189a01['model'],qs[_0x9312('0x43')](_0x25f57d['query'][_0x9312('0x43')]));_0x151c63[_0x9312('0x42')]=_0x151c63['attributes'][_0x9312('0x50')]?_0x151c63['attributes']:_0x189a01[_0x9312('0x3c')];if(_0x25f57d[_0x9312('0x3f')]['includeAll']){_0x151c63[_0x9312('0x4c')]=[{'all':!![]}];}_0x151c63=_[_0x9312('0x49')]({},_0x151c63,_0x25f57d[_0x9312('0x4a')]);return db[_0x9312('0x4b')][_0x9312('0x51')](_0x151c63)[_0x9312('0x33')](handleEntityNotFound(_0x51f1c8,null))[_0x9312('0x33')](respondWithResult(_0x51f1c8,null))[_0x9312('0x4e')](handleError(_0x51f1c8,null));};exports[_0x9312('0x52')]=function(_0x30ff43,_0x2769f5){return db[_0x9312('0x4b')][_0x9312('0x52')](_0x30ff43['body'],{})[_0x9312('0x33')](respondWithResult(_0x2769f5,0xc9))[_0x9312('0x4e')](handleError(_0x2769f5,null));};exports[_0x9312('0x53')]=function(_0x78da5d,_0x2db091){if(_0x78da5d['body']['id']){delete _0x78da5d[_0x9312('0x54')]['id'];}return db['WhatsappMessage'][_0x9312('0x51')]({'where':{'id':_0x78da5d['params']['id']}})['then'](handleEntityNotFound(_0x2db091,null))[_0x9312('0x33')](saveUpdates(_0x78da5d['body'],null))[_0x9312('0x33')](respondWithResult(_0x2db091,null))[_0x9312('0x4e')](handleError(_0x2db091,null));};exports[_0x9312('0x34')]=function(_0x51938b,_0x1599c2){return db[_0x9312('0x4b')][_0x9312('0x51')]({'where':{'id':_0x51938b[_0x9312('0x4f')]['id']}})[_0x9312('0x33')](handleEntityNotFound(_0x1599c2,null))[_0x9312('0x33')](removeEntity(_0x1599c2,null))[_0x9312('0x4e')](handleError(_0x1599c2,null));};exports['describe']=function(_0x95f977,_0x19d87e){return db[_0x9312('0x4b')][_0x9312('0x55')]()[_0x9312('0x33')](respondWithResult(_0x19d87e,null))['catch'](handleError(_0x19d87e,null));};var interaction_log=require(_0x9312('0x12'))('whatsapp-interactions');exports[_0x9312('0x56')]=function(_0x517f1c,_0x38f0ab,_0x3c15f1){var _0x2aac68={'agent':{},'channel':_0x9312('0x57')};if(_0x517f1c['body']['id']){delete _0x517f1c[_0x9312('0x54')]['id'];}_0x517f1c[_0x9312('0x54')][_0x9312('0x58')]=!![];_0x517f1c['body'][_0x9312('0x59')]=moment()[_0x9312('0x5a')](_0x9312('0x5b'));_0x517f1c[_0x9312('0x54')][_0x9312('0x5c')]=_0x517f1c[_0x9312('0x54')][_0x9312('0x5c')]||_0x517f1c[_0x9312('0x5d')]['id'];_0x2aac68[_0x9312('0x5e')]['id']=_0x517f1c[_0x9312('0x54')][_0x9312('0x5c')];return db[_0x9312('0x4b')]['find']({'where':{'id':_0x517f1c['params']['id'],'UserId':null}})[_0x9312('0x33')](handleEntityNotFound(_0x38f0ab,null))[_0x9312('0x33')](saveUpdates(_0x517f1c['body'],null))[_0x9312('0x33')](function(_0x4d915d){if(_0x4d915d){_0x2aac68['message']=_0x4d915d['get']({'plain':!![]});return db['WhatsappInteraction'][_0x9312('0x51')]({'where':{'id':_0x4d915d[_0x9312('0x5f')]}});}return null;})[_0x9312('0x33')](handleEntityNotFound(_0x38f0ab,null))['then'](function(_0x3568f1){if(_0x3568f1){return _0x3568f1[_0x9312('0x53')]({'UserId':_0x517f1c[_0x9312('0x54')]['UserId'],'read1stAt':_['isNil'](_0x3568f1[_0x9312('0x60')])?moment()[_0x9312('0x5a')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})['then'](function(_0x47dd5b){if(_0x47dd5b){_0x2aac68['interaction']=_0x47dd5b['get']({'plain':!![]});interaction_log['info']('[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x517f1c[_0x9312('0x5d')]['id'],_0x517f1c[_0x9312('0x5d')][_0x9312('0x3d')],_0x517f1c[_0x9312('0x5d')][_0x9312('0x61')],_0x2aac68[_0x9312('0x62')]['id'],_0x517f1c[_0x9312('0x54')]?JSON['stringify'](_0x517f1c[_0x9312('0x54')]):_0x9312('0x63'));return respondWithRpcPromise('AcceptMessage',_0x9312('0x64'),_0x2aac68);}return null;})[_0x9312('0x33')](function(_0x3a6db5){var _0x2f1d8='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x3a6db5['message'][_0x9312('0x65')];return db[_0x9312('0x66')]['query'](_0x2f1d8,{'type':db[_0x9312('0x67')][_0x9312('0x68')]['SELECT'],'raw':!![]})['then'](function(_0x1314d4){return _0x1314d4;});})[_0x9312('0x33')](function(_0x3917ad){if(_0x3917ad){_0x2aac68['message']['contact']=_0x3917ad[0x0];if(!_0x517f1c[_0x9312('0x54')][_0x9312('0x5c')])return;return db[_0x9312('0x69')][_0x9312('0x51')]({'where':{'id':_0x517f1c[_0x9312('0x54')][_0x9312('0x5c')],'role':_0x9312('0x5e')},'attributes':['id','name',_0x9312('0x6a'),'email',_0x9312('0x6b')],'raw':!![]});}return null;})[_0x9312('0x33')](function(_0x5d0bfd){if(!_0x5d0bfd)return null;_0x2aac68[_0x9312('0x27')][_0x9312('0x5e')]=_0x5d0bfd;return _0x2aac68;})[_0x9312('0x33')](function(_0x501801){if(_0x501801){if(_0x517f1c[_0x9312('0x54')][_0x9312('0x6c')]){_0x2aac68[_0x9312('0x27')]['interface']=util['format'](_0x9312('0x6d'),_0x517f1c[_0x9312('0x5d')][_0x9312('0x3d')]);_0x2aac68[_0x9312('0x27')][_0x9312('0x6e')]=_0x2aac68[_0x9312('0x6e')];_0x2aac68[_0x9312('0x27')][_0x9312('0x6f')]=_0x2aac68[_0x9312('0x6e')];_0x2aac68[_0x9312('0x27')]['event']=_0x9312('0x56');return respondWithRpcPromise('EventManager','EventManager',{'event':_0x9312('0x70'),'message':_0x2aac68['message']},client9002)[_0x9312('0x33')](function(){return _0x2aac68;});}return _0x2aac68;}return null;})[_0x9312('0x33')](respondWithResult(_0x38f0ab,null))[_0x9312('0x4e')](handleError(_0x38f0ab,null));};var interaction_log=require('../../config/logger')(_0x9312('0x71'));exports[_0x9312('0x72')]=function(_0x43bbf4,_0x3d3a55,_0x2f036c){var _0x258a8d={'agent':{},'channel':_0x9312('0x57')};if(_0x43bbf4[_0x9312('0x54')]['id']){delete _0x43bbf4[_0x9312('0x54')]['id'];}_0x43bbf4['body'][_0x9312('0x5c')]=_0x43bbf4[_0x9312('0x54')]['UserId']||_0x43bbf4[_0x9312('0x5d')]['id'];_0x258a8d['agent']['id']=_0x43bbf4[_0x9312('0x54')]['UserId'];return db[_0x9312('0x4b')][_0x9312('0x51')]({'where':{'id':_0x43bbf4[_0x9312('0x4f')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x3d3a55,null))[_0x9312('0x33')](function(_0x29ab0a){if(_0x29ab0a){_0x258a8d[_0x9312('0x27')]=_0x29ab0a[_0x9312('0x73')]({'plain':!![]});return db[_0x9312('0x74')][_0x9312('0x51')]({'where':{'id':_0x29ab0a[_0x9312('0x5f')]}});}return null;})['then'](handleEntityNotFound(_0x3d3a55,null))[_0x9312('0x33')](function(_0x159618){if(_0x159618){_0x258a8d['interaction']=_0x159618[_0x9312('0x73')]({'plain':!![]});interaction_log['info'](_0x9312('0x75'),_0x43bbf4[_0x9312('0x5d')]['id'],_0x43bbf4['user'][_0x9312('0x3d')],_0x43bbf4[_0x9312('0x5d')][_0x9312('0x61')],_0x258a8d[_0x9312('0x62')]['id'],_0x43bbf4[_0x9312('0x54')]?JSON[_0x9312('0x24')](_0x43bbf4[_0x9312('0x54')]):_0x9312('0x63'));return respondWithRpcPromise(_0x9312('0x76'),_0x9312('0x77'),_0x258a8d);}return null;})[_0x9312('0x33')](function(_0x487fd8){var _0x410e74=_0x9312('0x78')+_0x487fd8[_0x9312('0x27')]['ContactId'];return db['sequelize'][_0x9312('0x3f')](_0x410e74,{'type':db['Sequelize'][_0x9312('0x68')][_0x9312('0x79')],'raw':!![]})[_0x9312('0x33')](function(_0x226529){return _0x226529;});})[_0x9312('0x33')](function(_0x10e950){if(_0x10e950){_0x258a8d[_0x9312('0x27')][_0x9312('0x7a')]=_0x10e950[0x0];if(!_0x43bbf4[_0x9312('0x54')][_0x9312('0x5c')])return;return db['User'][_0x9312('0x51')]({'where':{'id':_0x43bbf4['body'][_0x9312('0x5c')],'role':_0x9312('0x5e')},'attributes':['id',_0x9312('0x3d'),_0x9312('0x6a'),_0x9312('0x7b'),_0x9312('0x6b')],'raw':!![]});}return null;})[_0x9312('0x33')](function(_0x46f099){if(!_0x46f099)return null;_0x258a8d[_0x9312('0x27')][_0x9312('0x5e')]=_0x46f099;return _0x258a8d;})['then'](function(_0x32418f){if(_0x32418f){_0x32418f['message']['interface']=util[_0x9312('0x5a')](_0x9312('0x6d'),_0x43bbf4[_0x9312('0x5d')][_0x9312('0x3d')]);_0x32418f['message']['channel']=_0x258a8d['channel'];_0x32418f[_0x9312('0x27')][_0x9312('0x6f')]=_0x258a8d[_0x9312('0x6e')];_0x32418f[_0x9312('0x27')][_0x9312('0x7c')]='reject';respondWithRpcPromise('EventManager',_0x9312('0x7d'),{'event':_0x9312('0x7e'),'message':_0x32418f[_0x9312('0x27')]},client9002);return _0x258a8d;}return null;})[_0x9312('0x33')](respondWithResult(_0x3d3a55,null))[_0x9312('0x4e')](handleError(_0x3d3a55,null));};exports[_0x9312('0x35')]=function(_0xb00c3a,_0x5db6dd,_0x5ad509){if(_0xb00c3a[_0x9312('0x54')]['id']){delete _0xb00c3a[_0x9312('0x54')]['id'];}var _0x29dead;return db[_0x9312('0x4b')]['find']({'where':{'id':_0xb00c3a['params']['id']}})['then'](handleEntityNotFound(_0x5db6dd,null))[_0x9312('0x33')](function(_0x34520d){if(_0x34520d){_0x29dead=_0x34520d;return db[_0x9312('0x7f')]['find']({'where':{'id':_0x34520d[_0x9312('0x80')]}});}})['then'](handleEntityNotFound(_0x5db6dd,null))[_0x9312('0x33')](function(_0x233458){if(_0x233458){logger[_0x9312('0x22')]('WhatsppMessage,\x20%s,\x20%s,\x20%s','status',_0x9312('0x81'),_0x233458[_0x9312('0x3b')],util[_0x9312('0x82')](_0xb00c3a['body'],{'showHidden':![],'depth':null}));switch(_0x233458[_0x9312('0x3b')]){case'twilio':if(_0xb00c3a[_0x9312('0x54')][_0x9312('0x83')]&&_0xb00c3a[_0x9312('0x54')][_0x9312('0x83')]===_0x29dead[_0x9312('0x84')]&&_0xb00c3a[_0x9312('0x54')]['MessageStatus']&&_0xb00c3a[_0x9312('0x54')][_0x9312('0x85')]===_0x9312('0x58')){return _0x29dead[_0x9312('0x53')]({'read':!![]});}else{logger[_0x9312('0x25')](_0x9312('0x86'),'status',_0x9312('0x87'),util[_0x9312('0x82')](_0xb00c3a[_0x9312('0x54')],{'showHidden':![],'depth':null}));}break;}return _0x29dead;}})[_0x9312('0x33')](respondWithResult(_0x5db6dd,null))['catch'](handleError(_0x5db6dd,null));};
\ No newline at end of file
index 70ae3f2..33164e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0972=['hasOwnProperty','hook','../../mysqldb','setMaxListeners','update','remove','emit'];(function(_0xf8f204,_0x4c620f){var _0x532cda=function(_0x571a62){while(--_0x571a62){_0xf8f204['push'](_0xf8f204['shift']());}};_0x532cda(++_0x4c620f);}(_0x0972,0x64));var _0x2097=function(_0x532590,_0x27288b){_0x532590=_0x532590-0x0;var _0x272d7d=_0x0972[_0x532590];return _0x272d7d;};'use strict';var EventEmitter=require('events');var WhatsappMessage=require(_0x2097('0x0'))['db']['WhatsappMessage'];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0x2097('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x2097('0x2'),'afterDestroy':_0x2097('0x3')};function emitEvent(_0x5b16c0){return function(_0x348ad8,_0x431d1c,_0xe6fbae){WhatsappMessageEvents[_0x2097('0x4')](_0x5b16c0+':'+_0x348ad8['id'],_0x348ad8);WhatsappMessageEvents[_0x2097('0x4')](_0x5b16c0,_0x348ad8);_0xe6fbae(null);};}for(var e in events){if(events[_0x2097('0x5')](e)){var event=events[e];WhatsappMessage[_0x2097('0x6')](e,emitEvent(event));}}module['exports']=WhatsappMessageEvents;
\ No newline at end of file
+var _0x1ba2=['remove','emit','hasOwnProperty','exports','events','WhatsappMessage','save','update'];(function(_0x57054d,_0x3f5d58){var _0x2729fc=function(_0x3c0899){while(--_0x3c0899){_0x57054d['push'](_0x57054d['shift']());}};_0x2729fc(++_0x3f5d58);}(_0x1ba2,0xb4));var _0x21ba=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1ba2[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0x21ba('0x0'));var WhatsappMessage=require('../../mysqldb')['db'][_0x21ba('0x1')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x21ba('0x2'),'afterUpdate':_0x21ba('0x3'),'afterDestroy':_0x21ba('0x4')};function emitEvent(_0xface0a){return function(_0x3661dd,_0x527ad5,_0x36e207){WhatsappMessageEvents[_0x21ba('0x5')](_0xface0a+':'+_0x3661dd['id'],_0x3661dd);WhatsappMessageEvents['emit'](_0xface0a,_0x3661dd);_0x36e207(null);};}for(var e in events){if(events[_0x21ba('0x6')](e)){var event=events[e];WhatsappMessage['hook'](e,emitEvent(event));}}module[_0x21ba('0x7')]=WhatsappMessageEvents;
\ No newline at end of file
index 9477c42..13a826e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c5c=['POST','application/json','statuses','message_id','err','finally','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','request-promise','node-fetch','path','rimraf','../../config/environment','define','whatsapp_messages','messageId','body','FULLTEXT','models','get','direction','toLowerCase','out','secret','isNil','WhatsappInteraction','WhatsappInteractionId','update','catch','WhatsappAccount','find','WhatsappAccountId','then','type','twilio','accountSid','authToken','phone','messages','create','whatsapp:','/api/whatsapp/messages/','/status?token=','token','sid','error','WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','sinch','baseUrl','/whatsapp/v1/','/messages/','text'];(function(_0x10f004,_0x5c561d){var _0xd2a785=function(_0x417c1d){while(--_0x417c1d){_0x10f004['push'](_0x10f004['shift']());}};_0xd2a785(++_0x5c561d);}(_0x6c5c,0x129));var _0xc6c5=function(_0x493499,_0x72e454){_0x493499=_0x493499-0x0;var _0x21766f=_0x6c5c[_0x493499];return _0x21766f;};'use strict';var _=require(_0xc6c5('0x0'));var util=require(_0xc6c5('0x1'));var logger=require(_0xc6c5('0x2'))('api');var moment=require(_0xc6c5('0x3'));var BPromise=require('bluebird');var rp=require(_0xc6c5('0x4'));var fetch=require(_0xc6c5('0x5'));var fs=require('fs');var path=require(_0xc6c5('0x6'));var rimraf=require(_0xc6c5('0x7'));var config=require(_0xc6c5('0x8'));var attributes=require('./whatsappMessage.attributes');module['exports']=function(_0x19d12a,_0x93a458){return _0x19d12a[_0xc6c5('0x9')]('WhatsappMessage',attributes,{'tableName':_0xc6c5('0xa'),'paranoid':![],'indexes':[{'name':_0xc6c5('0xb'),'fields':['messageId']},{'name':'fti_whatsapp_messages','fields':[_0xc6c5('0xc')],'type':_0xc6c5('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4d9c48,_0x374ee1,_0x55b366){var _0x119bce=_0x19d12a[_0xc6c5('0xe')];var _0x3e9be8=_0x4d9c48[_0xc6c5('0xf')]({'plain':!![]});if(_0x3e9be8[_0xc6c5('0x10')][_0xc6c5('0x11')]()==='in'||_0x3e9be8[_0xc6c5('0x10')][_0xc6c5('0x11')]()===_0xc6c5('0x12')&&!_0x3e9be8[_0xc6c5('0x13')]&&!_[_0xc6c5('0x14')](_0x3e9be8['UserId'])){_0x119bce[_0xc6c5('0x15')]['findOne']({'where':{'id':_0x3e9be8[_0xc6c5('0x16')]}})['then'](function(_0x2052f3){if(_0x2052f3){_0x2052f3[_0xc6c5('0x17')]({'lastMsgAt':_0x3e9be8['createdAt'],'lastMsgDirection':_0x3e9be8[_0xc6c5('0x10')]['toLowerCase']()});}})[_0xc6c5('0x18')](function(_0x267af8){console['error'](_0x267af8);});}if(_0x3e9be8[_0xc6c5('0x10')]===_0xc6c5('0x12')&&!_0x3e9be8['secret']){var _0x1050f7;_0x119bce[_0xc6c5('0x19')][_0xc6c5('0x1a')]({'where':{'id':_0x3e9be8[_0xc6c5('0x1b')]},'raw':!![]})[_0xc6c5('0x1c')](function(_0x5e7ad2){_0x1050f7=_0x5e7ad2;if(_0x1050f7&&_0x1050f7[_0xc6c5('0x1d')]){switch(_0x1050f7[_0xc6c5('0x1d')]){case _0xc6c5('0x1e'):var _0x5a335a=require(_0xc6c5('0x1e'));if(_0x1050f7[_0xc6c5('0x1f')]&&_0x1050f7[_0xc6c5('0x20')]&&_0x1050f7[_0xc6c5('0x21')]){var _0x6a591=new _0x5a335a(_0x1050f7[_0xc6c5('0x1f')],_0x1050f7[_0xc6c5('0x20')]);_0x6a591[_0xc6c5('0x22')][_0xc6c5('0x23')]({'body':_0x3e9be8['body'],'to':_0xc6c5('0x24')+_0x3e9be8[_0xc6c5('0x21')],'from':'whatsapp:'+_0x1050f7['phone'],'statusCallback':_0x1050f7['remote']+_0xc6c5('0x25')+_0x3e9be8['id']+_0xc6c5('0x26')+_0x1050f7[_0xc6c5('0x27')]})[_0xc6c5('0x1c')](function(_0x22ee93){if(_0x22ee93[_0xc6c5('0x28')]){return _0x4d9c48['update']({'messageId':_0x22ee93[_0xc6c5('0x28')]});}})[_0xc6c5('0x18')](function(_0x1669ee){logger[_0xc6c5('0x29')](_0xc6c5('0x2a'),_0xc6c5('0x2b'),_0xc6c5('0x1e'),util[_0xc6c5('0x2c')](_0x1669ee,{'showHidden':![],'depth':null}));});}else{logger[_0xc6c5('0x29')](_0xc6c5('0x2a'),_0xc6c5('0x2b'),'twilio',_0xc6c5('0x2d'));}break;case _0xc6c5('0x2e'):var _0x20c701=_0x1050f7[_0xc6c5('0x1f')];var _0x30e1a4=_0x1050f7[_0xc6c5('0x20')];var _0x162817=_0x1050f7[_0xc6c5('0x2f')]+_0xc6c5('0x30')+_0x20c701+_0xc6c5('0x31');var _0x54b96f={'to':[_0x3e9be8['phone']],'message':{'type':_0xc6c5('0x32'),'text':_0x3e9be8['body']}};var _0x5d1645={'method':_0xc6c5('0x33'),'uri':_0x162817,'headers':{'Authorization':'Bearer\x20'+_0x30e1a4,'Content-Type':_0xc6c5('0x34')},'body':_0x54b96f,'json':!![]};rp(_0x5d1645)[_0xc6c5('0x1c')](function(_0x154937){if(_0x154937[_0xc6c5('0x35')][0x0][_0xc6c5('0x36')]){return _0x4d9c48[_0xc6c5('0x17')]({'messageId':_0x154937['statuses'][0x0]['message_id']});}})[_0xc6c5('0x18')](function(_0x230a8d){logger[_0xc6c5('0x37')]('WhatsappMessage,\x20%s',_0x230a8d);});break;}}})[_0xc6c5('0x38')](function(){_0x55b366();});}else{_0x55b366();}}},'charset':'utf8mb4','collate':_0xc6c5('0x39')});};
\ No newline at end of file
+var _0x6ff5=['whatsapp_messages','messageId','fti_whatsapp_messages','body','FULLTEXT','models','get','direction','toLowerCase','out','secret','isNil','UserId','WhatsappInteraction','findOne','WhatsappInteractionId','then','createdAt','catch','WhatsappAccount','find','WhatsappAccountId','type','twilio','authToken','phone','accountSid','messages','create','whatsapp:','remote','/status?token=','update','sid','error','WhatsappMessage,\x20%s,\x20%s,\x20%s','inspect','afterCreate','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','sinch','baseUrl','/whatsapp/v1/','/messages/','POST','application/json','message_id','statuses','WhatsappMessage,\x20%s','finally','utf8mb4','utf8mb4_unicode_ci','lodash','moment','request-promise','node-fetch','../../config/environment','./whatsappMessage.attributes','exports','define','WhatsappMessage'];(function(_0x18d486,_0x59d5bb){var _0x1f39d0=function(_0x26bdae){while(--_0x26bdae){_0x18d486['push'](_0x18d486['shift']());}};_0x1f39d0(++_0x59d5bb);}(_0x6ff5,0xab));var _0x56ff=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x6ff5[_0x432682];return _0x463d05;};'use strict';var _=require(_0x56ff('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x56ff('0x1'));var BPromise=require('bluebird');var rp=require(_0x56ff('0x2'));var fetch=require(_0x56ff('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x56ff('0x4'));var attributes=require(_0x56ff('0x5'));module[_0x56ff('0x6')]=function(_0x3f06be,_0x1f7c30){return _0x3f06be[_0x56ff('0x7')](_0x56ff('0x8'),attributes,{'tableName':_0x56ff('0x9'),'paranoid':![],'indexes':[{'name':_0x56ff('0xa'),'fields':[_0x56ff('0xa')]},{'name':_0x56ff('0xb'),'fields':[_0x56ff('0xc')],'type':_0x56ff('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x291c5c,_0x12a622,_0x2ea094){var _0x7d3fd0=_0x3f06be[_0x56ff('0xe')];var _0x243a54=_0x291c5c[_0x56ff('0xf')]({'plain':!![]});if(_0x243a54[_0x56ff('0x10')][_0x56ff('0x11')]()==='in'||_0x243a54[_0x56ff('0x10')][_0x56ff('0x11')]()===_0x56ff('0x12')&&!_0x243a54[_0x56ff('0x13')]&&!_[_0x56ff('0x14')](_0x243a54[_0x56ff('0x15')])){_0x7d3fd0[_0x56ff('0x16')][_0x56ff('0x17')]({'where':{'id':_0x243a54[_0x56ff('0x18')]}})[_0x56ff('0x19')](function(_0x135b3b){if(_0x135b3b){_0x135b3b['update']({'lastMsgAt':_0x243a54[_0x56ff('0x1a')],'lastMsgDirection':_0x243a54[_0x56ff('0x10')][_0x56ff('0x11')]()});}})[_0x56ff('0x1b')](function(_0x227d5f){console['error'](_0x227d5f);});}if(_0x243a54['direction']===_0x56ff('0x12')&&!_0x243a54[_0x56ff('0x13')]){var _0x5d5c08;_0x7d3fd0[_0x56ff('0x1c')][_0x56ff('0x1d')]({'where':{'id':_0x243a54[_0x56ff('0x1e')]},'raw':!![]})[_0x56ff('0x19')](function(_0x5c4378){_0x5d5c08=_0x5c4378;if(_0x5d5c08&&_0x5d5c08[_0x56ff('0x1f')]){switch(_0x5d5c08['type']){case _0x56ff('0x20'):var _0x474d8d=require(_0x56ff('0x20'));if(_0x5d5c08['accountSid']&&_0x5d5c08[_0x56ff('0x21')]&&_0x5d5c08[_0x56ff('0x22')]){var _0x133d85=new _0x474d8d(_0x5d5c08[_0x56ff('0x23')],_0x5d5c08[_0x56ff('0x21')]);_0x133d85[_0x56ff('0x24')][_0x56ff('0x25')]({'body':_0x243a54[_0x56ff('0xc')],'to':_0x56ff('0x26')+_0x243a54[_0x56ff('0x22')],'from':_0x56ff('0x26')+_0x5d5c08[_0x56ff('0x22')],'statusCallback':_0x5d5c08[_0x56ff('0x27')]+'/api/whatsapp/messages/'+_0x243a54['id']+_0x56ff('0x28')+_0x5d5c08['token']})['then'](function(_0x494055){if(_0x494055['sid']){return _0x291c5c[_0x56ff('0x29')]({'messageId':_0x494055[_0x56ff('0x2a')]});}})[_0x56ff('0x1b')](function(_0x11f3df){logger[_0x56ff('0x2b')](_0x56ff('0x2c'),'afterCreate',_0x56ff('0x20'),util[_0x56ff('0x2d')](_0x11f3df,{'showHidden':![],'depth':null}));});}else{logger[_0x56ff('0x2b')](_0x56ff('0x2c'),_0x56ff('0x2e'),_0x56ff('0x20'),_0x56ff('0x2f'));}break;case _0x56ff('0x30'):var _0x36429f=_0x5d5c08['accountSid'];var _0x347ea4=_0x5d5c08[_0x56ff('0x21')];var _0x24937e=_0x5d5c08[_0x56ff('0x31')]+_0x56ff('0x32')+_0x36429f+_0x56ff('0x33');var _0x2eb700={'to':[_0x243a54['phone']],'message':{'type':'text','text':_0x243a54['body']}};var _0x5b6bdc={'method':_0x56ff('0x34'),'uri':_0x24937e,'headers':{'Authorization':'Bearer\x20'+_0x347ea4,'Content-Type':_0x56ff('0x35')},'body':_0x2eb700,'json':!![]};rp(_0x5b6bdc)[_0x56ff('0x19')](function(_0x11fbf1){if(_0x11fbf1['statuses'][0x0][_0x56ff('0x36')]){return _0x291c5c[_0x56ff('0x29')]({'messageId':_0x11fbf1[_0x56ff('0x37')][0x0]['message_id']});}})[_0x56ff('0x1b')](function(_0x3144ff){logger['err'](_0x56ff('0x38'),_0x3144ff);});break;}}})[_0x56ff('0x39')](function(){_0x2ea094();});}else{_0x2ea094();}}},'charset':_0x56ff('0x3a'),'collate':_0x56ff('0x3b')});};
\ No newline at end of file
index 0751223..5a8fbca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa004=['request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','CreateWhatsappMessage','WhatsappMessage','create','body','options','raw','then','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','./whatsappMessage.socket','register','request','WhatsappMessage,\x20%s,\x20%s'];(function(_0x5bb910,_0x172aa8){var _0x1398a4=function(_0x597f6d){while(--_0x597f6d){_0x5bb910['push'](_0x5bb910['shift']());}};_0x1398a4(++_0x172aa8);}(_0xa004,0x1a9));var _0x4a00=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa004[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x4a00('0x0'));var util=require(_0x4a00('0x1'));var moment=require('moment');var BPromise=require(_0x4a00('0x2'));var rs=require(_0x4a00('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4a00('0x4'))['db'];var utils=require(_0x4a00('0x5'));var logger=require('../../config/logger')(_0x4a00('0x6'));var config=require(_0x4a00('0x7'));var jayson=require(_0x4a00('0x8'));var client=jayson[_0x4a00('0x9')][_0x4a00('0xa')]({'port':0x232a});config['redis']=_['defaults'](config[_0x4a00('0xb')],{'host':_0x4a00('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x4a00('0xd'))[_0x4a00('0xe')](socket);function respondWithRpcPromise(_0x22d84c,_0x2b7294,_0x6a52e7){return new BPromise(function(_0x220ed3,_0x434289){return client[_0x4a00('0xf')](_0x22d84c,_0x6a52e7)['then'](function(_0x4e7426){logger['info'](_0x4a00('0x10'),_0x2b7294,_0x4a00('0x11'));logger[_0x4a00('0x12')](_0x4a00('0x13'),_0x2b7294,_0x4a00('0x11'),JSON[_0x4a00('0x14')](_0x4e7426));if(_0x4e7426['error']){if(_0x4e7426[_0x4a00('0x15')][_0x4a00('0x16')]===0x1f4){logger[_0x4a00('0x15')](_0x4a00('0x10'),_0x2b7294,_0x4e7426[_0x4a00('0x15')]['message']);return _0x434289(_0x4e7426[_0x4a00('0x15')][_0x4a00('0x17')]);}logger[_0x4a00('0x15')](_0x4a00('0x10'),_0x2b7294,_0x4e7426[_0x4a00('0x15')]['message']);return _0x220ed3(_0x4e7426[_0x4a00('0x15')][_0x4a00('0x17')]);}else{logger[_0x4a00('0x18')](_0x4a00('0x10'),_0x2b7294,_0x4a00('0x11'));_0x220ed3(_0x4e7426[_0x4a00('0x19')][_0x4a00('0x17')]);}})[_0x4a00('0x1a')](function(_0xcd4167){logger[_0x4a00('0x15')]('WhatsappMessage,\x20%s,\x20%s',_0x2b7294,_0xcd4167);_0x434289(_0xcd4167);});});}exports[_0x4a00('0x1b')]=function(_0x25ec32){var _0x3fce6e=this;return new Promise(function(_0x57b2ed,_0x1919fb){return db[_0x4a00('0x1c')][_0x4a00('0x1d')](_0x25ec32[_0x4a00('0x1e')],{'raw':_0x25ec32[_0x4a00('0x1f')]?_0x25ec32[_0x4a00('0x1f')][_0x4a00('0x20')]===undefined?!![]:![]:!![]})[_0x4a00('0x21')](function(_0x292061){logger[_0x4a00('0x18')](_0x4a00('0x1b'),_0x25ec32);logger[_0x4a00('0x12')](_0x4a00('0x1b'),_0x25ec32,JSON['stringify'](_0x292061));_0x57b2ed(_0x292061);})[_0x4a00('0x1a')](function(_0x6edf0d){logger[_0x4a00('0x15')](_0x4a00('0x1b'),_0x6edf0d['message'],_0x25ec32);_0x1919fb(_0x3fce6e[_0x4a00('0x15')](0x1f4,_0x6edf0d[_0x4a00('0x17')]));});});};
\ No newline at end of file
+var _0x1843=['create','body','options','raw','stringify','lodash','moment','randomstring','../../mysqldb','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','register','request','then','WhatsappMessage,\x20%s,\x20%s','debug','request\x20sent','error','code','message','info','result','catch','CreateWhatsappMessage','WhatsappMessage'];(function(_0x20c3c7,_0x8f099a){var _0x30f5bb=function(_0x8ec9e0){while(--_0x8ec9e0){_0x20c3c7['push'](_0x20c3c7['shift']());}};_0x30f5bb(++_0x8f099a);}(_0x1843,0x7d));var _0x3184=function(_0x527fd3,_0x8311fd){_0x527fd3=_0x527fd3-0x0;var _0xfcd113=_0x1843[_0x527fd3];return _0xfcd113;};'use strict';var _=require(_0x3184('0x0'));var util=require('util');var moment=require(_0x3184('0x1'));var BPromise=require('bluebird');var rs=require(_0x3184('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3184('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x3184('0x4'));var jayson=require(_0x3184('0x5'));var client=jayson[_0x3184('0x6')][_0x3184('0x7')]({'port':0x232a});config[_0x3184('0x8')]=_[_0x3184('0x9')](config['redis'],{'host':_0x3184('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./whatsappMessage.socket')[_0x3184('0xb')](socket);function respondWithRpcPromise(_0x2092aa,_0x3671c8,_0x211f8b){return new BPromise(function(_0x1cca44,_0x4e6d12){return client[_0x3184('0xc')](_0x2092aa,_0x211f8b)[_0x3184('0xd')](function(_0x1a8761){logger['info'](_0x3184('0xe'),_0x3671c8,'request\x20sent');logger[_0x3184('0xf')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x3671c8,_0x3184('0x10'),JSON['stringify'](_0x1a8761));if(_0x1a8761[_0x3184('0x11')]){if(_0x1a8761['error'][_0x3184('0x12')]===0x1f4){logger[_0x3184('0x11')](_0x3184('0xe'),_0x3671c8,_0x1a8761[_0x3184('0x11')]['message']);return _0x4e6d12(_0x1a8761[_0x3184('0x11')][_0x3184('0x13')]);}logger['error'](_0x3184('0xe'),_0x3671c8,_0x1a8761[_0x3184('0x11')][_0x3184('0x13')]);return _0x1cca44(_0x1a8761[_0x3184('0x11')]['message']);}else{logger[_0x3184('0x14')](_0x3184('0xe'),_0x3671c8,'request\x20sent');_0x1cca44(_0x1a8761[_0x3184('0x15')][_0x3184('0x13')]);}})[_0x3184('0x16')](function(_0x241304){logger[_0x3184('0x11')](_0x3184('0xe'),_0x3671c8,_0x241304);_0x4e6d12(_0x241304);});});}exports[_0x3184('0x17')]=function(_0x20311b){var _0x253e22=this;return new Promise(function(_0x3b2a73,_0x316e22){return db[_0x3184('0x18')][_0x3184('0x19')](_0x20311b[_0x3184('0x1a')],{'raw':_0x20311b[_0x3184('0x1b')]?_0x20311b[_0x3184('0x1b')][_0x3184('0x1c')]===undefined?!![]:![]:!![]})[_0x3184('0xd')](function(_0x5deea7){logger[_0x3184('0x14')]('CreateWhatsappMessage',_0x20311b);logger[_0x3184('0xf')](_0x3184('0x17'),_0x20311b,JSON[_0x3184('0x1d')](_0x5deea7));_0x3b2a73(_0x5deea7);})[_0x3184('0x16')](function(_0x50e0b2){logger[_0x3184('0x11')](_0x3184('0x17'),_0x50e0b2[_0x3184('0x13')],_0x20311b);_0x316e22(_0x253e22[_0x3184('0x11')](0x1f4,_0x50e0b2['message']));});});};
\ No newline at end of file
index de28873..509456e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3d8=['update','emit','removeListener','register','length','./whatsappMessage.events','remove'];(function(_0x505df9,_0x14138e){var _0x1cc025=function(_0x5d2a1f){while(--_0x5d2a1f){_0x505df9['push'](_0x505df9['shift']());}};_0x1cc025(++_0x14138e);}(_0xf3d8,0x139));var _0x8f3d=function(_0x456032,_0x1a799d){_0x456032=_0x456032-0x0;var _0x1a53cd=_0xf3d8[_0x456032];return _0x1a53cd;};'use strict';var WhatsappMessageEvents=require(_0x8f3d('0x0'));var events=['save',_0x8f3d('0x1'),_0x8f3d('0x2')];function createListener(_0x5a650b,_0x149de2){return function(_0xd25380){_0x149de2[_0x8f3d('0x3')](_0x5a650b,_0xd25380);};}function removeListener(_0x5ee665,_0x14671e){return function(){WhatsappMessageEvents[_0x8f3d('0x4')](_0x5ee665,_0x14671e);};}exports[_0x8f3d('0x5')]=function(_0x321561){for(var _0x4a91bb=0x0,_0x33cd19=events[_0x8f3d('0x6')];_0x4a91bb<_0x33cd19;_0x4a91bb++){var _0x251a99=events[_0x4a91bb];var _0x53fe66=createListener('whatsappMessage:'+_0x251a99,_0x321561);WhatsappMessageEvents['on'](_0x251a99,_0x53fe66);}};
\ No newline at end of file
+var _0x6f7a=['removeListener','register','length','whatsappMessage:','./whatsappMessage.events','save','remove','update'];(function(_0x53cb10,_0x2ffc93){var _0x55ee03=function(_0x4d4b1a){while(--_0x4d4b1a){_0x53cb10['push'](_0x53cb10['shift']());}};_0x55ee03(++_0x2ffc93);}(_0x6f7a,0xfc));var _0xa6f7=function(_0xe76cc0,_0x4fa572){_0xe76cc0=_0xe76cc0-0x0;var _0x3609f1=_0x6f7a[_0xe76cc0];return _0x3609f1;};'use strict';var WhatsappMessageEvents=require(_0xa6f7('0x0'));var events=[_0xa6f7('0x1'),_0xa6f7('0x2'),_0xa6f7('0x3')];function createListener(_0x1ed59d,_0x1522fc){return function(_0x8e0057){_0x1522fc['emit'](_0x1ed59d,_0x8e0057);};}function removeListener(_0x31c175,_0x4414e8){return function(){WhatsappMessageEvents[_0xa6f7('0x4')](_0x31c175,_0x4414e8);};}exports[_0xa6f7('0x5')]=function(_0x1c0ddc){for(var _0x4f931e=0x0,_0x4b12dc=events[_0xa6f7('0x6')];_0x4f931e<_0x4b12dc;_0x4f931e++){var _0x3be26b=events[_0x4f931e];var _0x5af72f=createListener(_0xa6f7('0x7')+_0x3be26b,_0x1c0ddc);WhatsappMessageEvents['on'](_0x3be26b,_0x5af72f);}};
\ No newline at end of file
index 26e044d..e3d71c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd0c=['getAgents','post','addTeams','addAgents','delete','destroy','removeTeams','removeAgents','exports','util','path','fs-extra','../../components/interaction/service','../../config/environment','./whatsappQueue.controller','get','index','/describe','describe','/:id','isAuthenticated','show','/:id/teams','getTeams','/:id/users'];(function(_0x1ab122,_0x4949bb){var _0x244b56=function(_0x2e0249){while(--_0x2e0249){_0x1ab122['push'](_0x1ab122['shift']());}};_0x244b56(++_0x4949bb);}(_0xbd0c,0x11c));var _0xcbd0=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0xbd0c[_0x6c993a];return _0x27f547;};'use strict';var multer=require('multer');var util=require(_0xcbd0('0x0'));var path=require(_0xcbd0('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xcbd0('0x2'));var auth=require('../../components/auth/service');var interaction=require(_0xcbd0('0x3'));var config=require(_0xcbd0('0x4'));var controller=require(_0xcbd0('0x5'));router[_0xcbd0('0x6')]('/',auth['isAuthenticated'](),controller[_0xcbd0('0x7')]);router[_0xcbd0('0x6')](_0xcbd0('0x8'),auth['isAuthenticated'](),controller[_0xcbd0('0x9')]);router[_0xcbd0('0x6')](_0xcbd0('0xa'),auth[_0xcbd0('0xb')](),controller[_0xcbd0('0xc')]);router['get']('/:id/members',auth['isAuthenticated'](),controller['getMembers']);router[_0xcbd0('0x6')](_0xcbd0('0xd'),auth[_0xcbd0('0xb')](),controller[_0xcbd0('0xe')]);router[_0xcbd0('0x6')](_0xcbd0('0xf'),auth['isAuthenticated'](),controller[_0xcbd0('0x10')]);router['post']('/',auth[_0xcbd0('0xb')](),controller['create']);router[_0xcbd0('0x11')](_0xcbd0('0xd'),auth[_0xcbd0('0xb')](),controller[_0xcbd0('0x12')]);router[_0xcbd0('0x11')](_0xcbd0('0xf'),auth['isAuthenticated'](),controller[_0xcbd0('0x13')]);router['put'](_0xcbd0('0xa'),auth[_0xcbd0('0xb')](),controller['update']);router[_0xcbd0('0x14')](_0xcbd0('0xa'),auth[_0xcbd0('0xb')](),controller[_0xcbd0('0x15')]);router[_0xcbd0('0x14')](_0xcbd0('0xd'),auth[_0xcbd0('0xb')](),controller[_0xcbd0('0x16')]);router[_0xcbd0('0x14')](_0xcbd0('0xf'),auth[_0xcbd0('0xb')](),controller[_0xcbd0('0x17')]);module[_0xcbd0('0x18')]=router;
\ No newline at end of file
+var _0x050f=['destroy','removeTeams','exports','util','path','connect-timeout','fs-extra','../../components/auth/service','../../config/environment','./whatsappQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','put','update','delete'];(function(_0x4d53e9,_0x5d054b){var _0x2774e7=function(_0xb5d200){while(--_0xb5d200){_0x4d53e9['push'](_0x4d53e9['shift']());}};_0x2774e7(++_0x5d054b);}(_0x050f,0xd5));var _0xf050=function(_0x311799,_0x397e8e){_0x311799=_0x311799-0x0;var _0x274410=_0x050f[_0x311799];return _0x274410;};'use strict';var multer=require('multer');var util=require(_0xf050('0x0'));var path=require(_0xf050('0x1'));var timeout=require(_0xf050('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xf050('0x3'));var auth=require(_0xf050('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xf050('0x5'));var controller=require(_0xf050('0x6'));router[_0xf050('0x7')]('/',auth[_0xf050('0x8')](),controller[_0xf050('0x9')]);router[_0xf050('0x7')](_0xf050('0xa'),auth[_0xf050('0x8')](),controller[_0xf050('0xb')]);router[_0xf050('0x7')](_0xf050('0xc'),auth['isAuthenticated'](),controller[_0xf050('0xd')]);router[_0xf050('0x7')](_0xf050('0xe'),auth['isAuthenticated'](),controller[_0xf050('0xf')]);router['get'](_0xf050('0x10'),auth['isAuthenticated'](),controller[_0xf050('0x11')]);router[_0xf050('0x7')](_0xf050('0x12'),auth[_0xf050('0x8')](),controller[_0xf050('0x13')]);router[_0xf050('0x14')]('/',auth[_0xf050('0x8')](),controller[_0xf050('0x15')]);router[_0xf050('0x14')]('/:id/teams',auth[_0xf050('0x8')](),controller[_0xf050('0x16')]);router[_0xf050('0x14')](_0xf050('0x12'),auth[_0xf050('0x8')](),controller[_0xf050('0x17')]);router[_0xf050('0x18')](_0xf050('0xc'),auth[_0xf050('0x8')](),controller[_0xf050('0x19')]);router[_0xf050('0x1a')]('/:id',auth['isAuthenticated'](),controller[_0xf050('0x1b')]);router[_0xf050('0x1a')](_0xf050('0x10'),auth[_0xf050('0x8')](),controller[_0xf050('0x1c')]);router['delete'](_0xf050('0x12'),auth[_0xf050('0x8')](),controller['removeAgents']);module[_0xf050('0x1d')]=router;
\ No newline at end of file
index 153d1b5..6c52629 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82b0=['ENUM','rrmemory','beepall','sequelize','exports','STRING','INTEGER'];(function(_0x3cb465,_0x36d920){var _0x4e197b=function(_0x25fd7d){while(--_0x25fd7d){_0x3cb465['push'](_0x3cb465['shift']());}};_0x4e197b(++_0x36d920);}(_0x82b0,0x81));var _0x082b=function(_0x2badac,_0x4b93fa){_0x2badac=_0x2badac-0x0;var _0x28276c=_0x82b0[_0x2badac];return _0x28276c;};'use strict';var Sequelize=require(_0x082b('0x0'));module[_0x082b('0x1')]={'name':{'type':Sequelize[_0x082b('0x2')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0x082b('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x082b('0x4')](_0x082b('0x5'),_0x082b('0x6'),'roundrobin')},'description':{'type':Sequelize[_0x082b('0x2')]}};
\ No newline at end of file
+var _0xca56=['ENUM','rrmemory','beepall','roundrobin','sequelize','exports','STRING','name','INTEGER'];(function(_0x3e3ca8,_0x58ec9e){var _0x5f39a0=function(_0x1ae644){while(--_0x1ae644){_0x3e3ca8['push'](_0x3e3ca8['shift']());}};_0x5f39a0(++_0x58ec9e);}(_0xca56,0xee));var _0x6ca5=function(_0x1e6267,_0x459df1){_0x1e6267=_0x1e6267-0x0;var _0xba14c7=_0xca56[_0x1e6267];return _0xba14c7;};'use strict';var Sequelize=require(_0x6ca5('0x0'));module[_0x6ca5('0x1')]={'name':{'type':Sequelize[_0x6ca5('0x2')],'unique':_0x6ca5('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0x6ca5('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x6ca5('0x5')](_0x6ca5('0x6'),_0x6ca5('0x7'),_0x6ca5('0x8'))},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 32786d4..a0787e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ee6=['nolimit','WhatsappQueueId','User','findAndCountAll','UserId','agent','updatedAt','createdAt','format','%s/%s','whatsappPause','Team','order','getTeams','addTeams','ids','Agents','interface','flatMap','transaction','each','forEach','emit','userWhatsappQueue:save','removeTeams','field','from','team_has_whatsapp_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','clone','push','sequelize','SELECT','every','TeamId','includes','all','value','isEmpty','removeAgents','userWhatsappQueue:remove','addAgents','omit','spread','getAgents','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','squel','crypto','desk.js','querystring','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','socket.io-emitter','register','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','destroy','get','WhatsappQueues','UserProfileResource','error','stack','name','send','index','map','WhatsappQueue','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','findOne'];(function(_0x5c082a,_0x19ac27){var _0x3b60ac=function(_0x2f37ef){while(--_0x2f37ef){_0x5c082a['push'](_0x5c082a['shift']());}};_0x3b60ac(++_0x19ac27);}(_0x0ee6,0x133));var _0x60ee=function(_0xf62b5d,_0xae0e68){_0xf62b5d=_0xf62b5d-0x0;var _0x11e986=_0x0ee6[_0xf62b5d];return _0x11e986;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x60ee('0x0'));var zipdir=require(_0x60ee('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x60ee('0x2'));var moment=require('moment');var BPromise=require(_0x60ee('0x3'));var Mustache=require(_0x60ee('0x4'));var util=require(_0x60ee('0x5'));var path=require(_0x60ee('0x6'));var sox=require(_0x60ee('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x60ee('0x8'));var crypto=require(_0x60ee('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x60ee('0xa'));var toCsv=require('to-csv');var querystring=require(_0x60ee('0xb'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x60ee('0xc'));var hardwareService=require(_0x60ee('0xd'));var logger=require(_0x60ee('0xe'))(_0x60ee('0xf'));var utils=require('../../config/utils');var config=require(_0x60ee('0x10'));var licenseUtil=require(_0x60ee('0x11'));var db=require(_0x60ee('0x12'))['db'];config[_0x60ee('0x13')]=_['defaults'](config[_0x60ee('0x13')],{'host':'localhost','port':0x18eb});var socket=require(_0x60ee('0x14'))(new Redis(config[_0x60ee('0x13')]));require('./whatsappQueue.socket')[_0x60ee('0x15')](socket);function respondWithStatusCode(_0x4a60aa,_0x2d0191){_0x2d0191=_0x2d0191||0xcc;return function(_0x315f67){if(_0x315f67){return _0x4a60aa[_0x60ee('0x16')](_0x2d0191);}return _0x4a60aa[_0x60ee('0x17')](_0x2d0191)[_0x60ee('0x18')]();};}function respondWithResult(_0x2c9114,_0x5378de){_0x5378de=_0x5378de||0xc8;return function(_0x485d30){if(_0x485d30){return _0x2c9114[_0x60ee('0x17')](_0x5378de)['json'](_0x485d30);}};}function respondWithFilteredResult(_0x443550,_0x989507){return function(_0x53b0f4){if(_0x53b0f4){var _0x1ddc36=typeof _0x989507[_0x60ee('0x19')]===_0x60ee('0x1a')&&typeof _0x989507[_0x60ee('0x1b')]==='undefined';var _0xa398b1=_0x53b0f4[_0x60ee('0x1c')];var _0x329a9c=_0x1ddc36?0x0:_0x989507[_0x60ee('0x19')];var _0x4bdc37=_0x1ddc36?_0x53b0f4[_0x60ee('0x1c')]:_0x989507['offset']+_0x989507['limit'];var _0x3b3434;if(_0x4bdc37>=_0xa398b1){_0x4bdc37=_0xa398b1;_0x3b3434=0xc8;}else{_0x3b3434=0xce;}_0x443550['status'](_0x3b3434);return _0x443550[_0x60ee('0x1d')](_0x60ee('0x1e'),_0x329a9c+'-'+_0x4bdc37+'/'+_0xa398b1)[_0x60ee('0x1f')](_0x53b0f4);}return null;};}function patchUpdates(_0x216831){return function(_0x1f4717){try{jsonpatch[_0x60ee('0x20')](_0x1f4717,_0x216831,!![]);}catch(_0x5b2051){return BPromise[_0x60ee('0x21')](_0x5b2051);}return _0x1f4717['save']();};}function saveUpdates(_0x3af4c4,_0x40588b){return function(_0x3ba806){if(_0x3ba806){return _0x3ba806[_0x60ee('0x22')](_0x3af4c4)[_0x60ee('0x23')](function(_0x58580c){return _0x58580c;});}return null;};}function removeEntity(_0x1f5145,_0x2c4faf){return function(_0x2c5382){if(_0x2c5382){return _0x2c5382[_0x60ee('0x24')]()['then'](function(){var _0x334e42=_0x2c5382[_0x60ee('0x25')]({'plain':!![]});var _0x5105a0=_0x60ee('0x26');return db[_0x60ee('0x27')]['destroy']({'where':{'type':_0x5105a0,'resourceId':_0x334e42['id']}})['then'](function(){return _0x2c5382;});})['then'](function(){_0x1f5145['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4be012,_0x51fa9c){return function(_0x2984d6){if(!_0x2984d6){_0x4be012['sendStatus'](0x194);}return _0x2984d6;};}function handleError(_0x11a976,_0x1053f2){_0x1053f2=_0x1053f2||0x1f4;return function(_0x390002){logger[_0x60ee('0x28')](_0x390002[_0x60ee('0x29')]);if(_0x390002['name']){delete _0x390002[_0x60ee('0x2a')];}_0x11a976[_0x60ee('0x17')](_0x1053f2)[_0x60ee('0x2b')](_0x390002);};}exports[_0x60ee('0x2c')]=function(_0x3184d6,_0x424eac){var _0x4c02b1={},_0x14cc64={},_0x2b900a={'count':0x0,'rows':[]};var _0x423bb5=_[_0x60ee('0x2d')](db[_0x60ee('0x2e')][_0x60ee('0x2f')],function(_0x3be919){return{'name':_0x3be919[_0x60ee('0x30')],'type':_0x3be919[_0x60ee('0x31')][_0x60ee('0x32')]};});_0x14cc64[_0x60ee('0x33')]=_[_0x60ee('0x2d')](_0x423bb5,_0x60ee('0x2a'));_0x14cc64[_0x60ee('0x34')]=_[_0x60ee('0x35')](_0x3184d6[_0x60ee('0x34')]);_0x14cc64[_0x60ee('0x36')]=_[_0x60ee('0x37')](_0x14cc64[_0x60ee('0x33')],_0x14cc64[_0x60ee('0x34')]);_0x4c02b1[_0x60ee('0x38')]=_[_0x60ee('0x37')](_0x14cc64['model'],qs[_0x60ee('0x39')](_0x3184d6[_0x60ee('0x34')][_0x60ee('0x39')]));_0x4c02b1['attributes']=_0x4c02b1['attributes']['length']?_0x4c02b1[_0x60ee('0x38')]:_0x14cc64['model'];if(!_0x3184d6[_0x60ee('0x34')][_0x60ee('0x3a')]('nolimit')){_0x4c02b1[_0x60ee('0x1b')]=qs['limit'](_0x3184d6[_0x60ee('0x34')][_0x60ee('0x1b')]);_0x4c02b1['offset']=qs[_0x60ee('0x19')](_0x3184d6[_0x60ee('0x34')][_0x60ee('0x19')]);}_0x4c02b1['order']=qs[_0x60ee('0x3b')](_0x3184d6['query'][_0x60ee('0x3b')]);_0x4c02b1[_0x60ee('0x3c')]=qs[_0x60ee('0x36')](_[_0x60ee('0x3d')](_0x3184d6[_0x60ee('0x34')],_0x14cc64[_0x60ee('0x36')]),_0x423bb5);if(_0x3184d6[_0x60ee('0x34')][_0x60ee('0x3e')]){_0x4c02b1[_0x60ee('0x3c')]=_[_0x60ee('0x3f')](_0x4c02b1[_0x60ee('0x3c')],{'$or':_[_0x60ee('0x2d')](_0x423bb5,function(_0x362493){if(_0x362493[_0x60ee('0x31')]!==_0x60ee('0x40')){var _0x3fa7fa={};_0x3fa7fa[_0x362493[_0x60ee('0x2a')]]={'$like':'%'+_0x3184d6[_0x60ee('0x34')][_0x60ee('0x3e')]+'%'};return _0x3fa7fa;}})});}_0x4c02b1=_[_0x60ee('0x3f')]({},_0x4c02b1,_0x3184d6[_0x60ee('0x41')]);var _0x1713f2={'where':_0x4c02b1['where']};return db[_0x60ee('0x2e')][_0x60ee('0x1c')](_0x1713f2)['then'](function(_0x51a2cb){_0x2b900a[_0x60ee('0x1c')]=_0x51a2cb;if(_0x3184d6[_0x60ee('0x34')][_0x60ee('0x42')]){_0x4c02b1[_0x60ee('0x43')]=[{'all':!![]}];}return db[_0x60ee('0x2e')][_0x60ee('0x44')](_0x4c02b1);})[_0x60ee('0x23')](function(_0x35749f){_0x2b900a['rows']=_0x35749f;return _0x2b900a;})[_0x60ee('0x23')](respondWithFilteredResult(_0x424eac,_0x4c02b1))[_0x60ee('0x45')](handleError(_0x424eac,null));};exports[_0x60ee('0x46')]=function(_0x2c7f6b,_0x3d2f43){var _0x3a1145={'raw':!![],'where':{'id':_0x2c7f6b[_0x60ee('0x47')]['id']}},_0x564777={};_0x564777['model']=_['keys'](db['WhatsappQueue'][_0x60ee('0x2f')]);_0x564777[_0x60ee('0x34')]=_[_0x60ee('0x35')](_0x2c7f6b[_0x60ee('0x34')]);_0x564777[_0x60ee('0x36')]=_['intersection'](_0x564777[_0x60ee('0x33')],_0x564777[_0x60ee('0x34')]);_0x3a1145['attributes']=_[_0x60ee('0x37')](_0x564777[_0x60ee('0x33')],qs[_0x60ee('0x39')](_0x2c7f6b['query']['fields']));_0x3a1145[_0x60ee('0x38')]=_0x3a1145[_0x60ee('0x38')][_0x60ee('0x48')]?_0x3a1145[_0x60ee('0x38')]:_0x564777[_0x60ee('0x33')];if(_0x2c7f6b[_0x60ee('0x34')][_0x60ee('0x42')]){_0x3a1145[_0x60ee('0x43')]=[{'all':!![]}];}_0x3a1145=_[_0x60ee('0x3f')]({},_0x3a1145,_0x2c7f6b[_0x60ee('0x41')]);return db[_0x60ee('0x2e')][_0x60ee('0x49')](_0x3a1145)['then'](handleEntityNotFound(_0x3d2f43,null))[_0x60ee('0x23')](respondWithResult(_0x3d2f43,null))[_0x60ee('0x45')](handleError(_0x3d2f43,null));};exports[_0x60ee('0x4a')]=function(_0xee961b,_0x2dd5e3){return db[_0x60ee('0x2e')][_0x60ee('0x4a')](_0xee961b[_0x60ee('0x4b')],{})[_0x60ee('0x23')](function(_0x193c87){var _0xd32fd4=_0xee961b[_0x60ee('0x4c')]['get']({'plain':!![]});if(!_0xd32fd4)throw new Error(_0x60ee('0x4d'));if(_0xd32fd4[_0x60ee('0x4e')]===_0x60ee('0x4c')){var _0x54d6c2=_0x193c87[_0x60ee('0x25')]({'plain':!![]});var _0x3905bf=_0x60ee('0x26');return db[_0x60ee('0x4f')]['find']({'where':{'name':_0x3905bf,'userProfileId':_0xd32fd4['userProfileId']},'raw':!![]})[_0x60ee('0x23')](function(_0x546e07){if(_0x546e07&&_0x546e07['autoAssociation']===0x0){return db[_0x60ee('0x27')][_0x60ee('0x4a')]({'name':_0x54d6c2['name'],'resourceId':_0x54d6c2['id'],'type':_0x546e07[_0x60ee('0x2a')],'sectionId':_0x546e07['id']},{})[_0x60ee('0x23')](function(){return _0x193c87;});}else{return _0x193c87;}})[_0x60ee('0x45')](function(_0x4573aa){logger[_0x60ee('0x28')](_0x60ee('0x50'),_0x4573aa);throw _0x4573aa;});}return _0x193c87;})[_0x60ee('0x23')](respondWithResult(_0x2dd5e3,0xc9))['catch'](handleError(_0x2dd5e3,null));};exports['update']=function(_0x2bd5c0,_0x516f1e){if(_0x2bd5c0['body']['id']){delete _0x2bd5c0['body']['id'];}return db['WhatsappQueue'][_0x60ee('0x49')]({'where':{'id':_0x2bd5c0[_0x60ee('0x47')]['id']}})['then'](handleEntityNotFound(_0x516f1e,null))[_0x60ee('0x23')](saveUpdates(_0x2bd5c0[_0x60ee('0x4b')],null))['then'](respondWithResult(_0x516f1e,null))[_0x60ee('0x45')](handleError(_0x516f1e,null));};exports['destroy']=function(_0x57b862,_0x40aa72){return db[_0x60ee('0x2e')][_0x60ee('0x49')]({'where':{'id':_0x57b862[_0x60ee('0x47')]['id']}})['then'](handleEntityNotFound(_0x40aa72,null))[_0x60ee('0x23')](removeEntity(_0x40aa72,null))[_0x60ee('0x45')](handleError(_0x40aa72,null));};exports[_0x60ee('0x51')]=function(_0x2dd5e,_0x3b5415){return db['WhatsappQueue']['describe']()[_0x60ee('0x23')](respondWithResult(_0x3b5415,null))[_0x60ee('0x45')](handleError(_0x3b5415,null));};exports['getMembers']=function(_0x2df078,_0x5c10e6,_0x3a055f){var _0x254c57={'raw':!![],'where':{}},_0x248727={},_0x5a98a7;return db[_0x60ee('0x2e')][_0x60ee('0x52')]({'where':{'id':_0x2df078[_0x60ee('0x47')]['id']}})[_0x60ee('0x23')](handleEntityNotFound(_0x5c10e6,null))['then'](function(_0x303e93){if(_0x303e93){_0x5a98a7=_0x303e93[_0x60ee('0x25')]({'plain':!![]});_0x248727[_0x60ee('0x33')]=_[_0x60ee('0x35')](db['UserWhatsappQueue']['rawAttributes']);_0x248727[_0x60ee('0x34')]=_[_0x60ee('0x35')](_0x2df078[_0x60ee('0x34')]);_0x248727['filters']=_[_0x60ee('0x37')](_0x248727[_0x60ee('0x33')],_0x248727['query']);_0x254c57['attributes']=_[_0x60ee('0x37')](_0x248727[_0x60ee('0x33')],qs[_0x60ee('0x39')](_0x2df078[_0x60ee('0x34')]['fields']));_0x254c57[_0x60ee('0x38')]=_0x254c57['attributes']['length']?_0x254c57[_0x60ee('0x38')]:_0x248727['model'];if(!_0x2df078[_0x60ee('0x34')][_0x60ee('0x3a')](_0x60ee('0x53'))){_0x254c57[_0x60ee('0x1b')]=qs[_0x60ee('0x1b')](_0x2df078[_0x60ee('0x34')][_0x60ee('0x1b')]);_0x254c57[_0x60ee('0x19')]=qs['offset'](_0x2df078[_0x60ee('0x34')][_0x60ee('0x19')]);}_0x254c57['order']=qs[_0x60ee('0x3b')](_0x2df078[_0x60ee('0x34')]['sort']);_0x254c57[_0x60ee('0x3c')]=qs['filters'](_[_0x60ee('0x3d')](_0x2df078['query'],_0x248727[_0x60ee('0x36')]));_0x254c57[_0x60ee('0x3c')][_0x60ee('0x54')]=_0x303e93['id'];if(_0x2df078[_0x60ee('0x34')][_0x60ee('0x3e')]){_0x254c57[_0x60ee('0x3c')]=_[_0x60ee('0x3f')](_0x254c57[_0x60ee('0x3c')],{'$or':_[_0x60ee('0x2d')](_0x254c57['attributes'],function(_0x6b9d8f){var _0x2dd915={};_0x2dd915[_0x6b9d8f]={'$like':'%'+_0x2df078[_0x60ee('0x34')]['filter']+'%'};return _0x2dd915;})});}_0x254c57=_['merge']({},_0x254c57,_0x2df078['options']);return db['UserWhatsappQueue'][_0x60ee('0x44')](_0x254c57);}})[_0x60ee('0x23')](function(_0x566658){if(_0x566658){return db[_0x60ee('0x55')][_0x60ee('0x56')]({'where':{'id':_[_0x60ee('0x2d')](_0x566658,_0x60ee('0x57')),'role':_0x60ee('0x58')},'attributes':['id',_0x60ee('0x2a'),'whatsappPause',_0x60ee('0x59'),_0x60ee('0x5a')]});}})[_0x60ee('0x23')](function(_0x369324){if(_0x369324){return{'count':_0x369324[_0x60ee('0x1c')],'rows':_[_0x60ee('0x2d')](_0x369324['rows'],function(_0x2991b5){return{'membername':_0x2991b5[_0x60ee('0x2a')],'UserId':_0x2991b5['id'],'queue_name':_0x5a98a7[_0x60ee('0x2a')],'WhatsappQueueId':_0x5a98a7['id'],'interface':util[_0x60ee('0x5b')](_0x60ee('0x5c'),'SIP',_0x2991b5[_0x60ee('0x2a')]),'penalty':0x0,'paused':_0x2991b5[_0x60ee('0x5d')],'createdAt':_0x2991b5[_0x60ee('0x5a')],'updatedAt':_0x2991b5[_0x60ee('0x59')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x60ee('0x23')](respondWithFilteredResult(_0x5c10e6,_0x254c57))[_0x60ee('0x45')](handleError(_0x5c10e6,null));};exports['getTeams']=function(_0x238725,_0x4bd8dd,_0x7b4ec3){var _0x3cc476={};var _0x56e26c={};var _0x49b48e;var _0x558fda;return db[_0x60ee('0x2e')][_0x60ee('0x52')]({'where':{'id':_0x238725[_0x60ee('0x47')]['id']}})['then'](handleEntityNotFound(_0x4bd8dd,null))[_0x60ee('0x23')](function(_0x39a602){if(_0x39a602){_0x49b48e=_0x39a602;_0x56e26c[_0x60ee('0x33')]=_['keys'](db[_0x60ee('0x5e')]['rawAttributes']);_0x56e26c['query']=_[_0x60ee('0x35')](_0x238725['query']);_0x56e26c[_0x60ee('0x36')]=_['intersection'](_0x56e26c[_0x60ee('0x33')],_0x56e26c['query']);_0x3cc476['attributes']=_[_0x60ee('0x37')](_0x56e26c[_0x60ee('0x33')],qs[_0x60ee('0x39')](_0x238725[_0x60ee('0x34')]['fields']));_0x3cc476[_0x60ee('0x38')]=_0x3cc476[_0x60ee('0x38')]['length']?_0x3cc476[_0x60ee('0x38')]:_0x56e26c[_0x60ee('0x33')];_0x3cc476[_0x60ee('0x5f')]=qs['sort'](_0x238725[_0x60ee('0x34')][_0x60ee('0x3b')]);_0x3cc476[_0x60ee('0x3c')]=qs[_0x60ee('0x36')](_[_0x60ee('0x3d')](_0x238725['query'],_0x56e26c['filters']));if(_0x238725[_0x60ee('0x34')][_0x60ee('0x3e')]){_0x3cc476[_0x60ee('0x3c')]=_[_0x60ee('0x3f')](_0x3cc476[_0x60ee('0x3c')],{'$or':_[_0x60ee('0x2d')](_0x3cc476[_0x60ee('0x38')],function(_0x93c419){var _0x38443e={};_0x38443e[_0x93c419]={'$like':'%'+_0x238725[_0x60ee('0x34')][_0x60ee('0x3e')]+'%'};return _0x38443e;})});}_0x3cc476=_[_0x60ee('0x3f')]({},_0x3cc476,_0x238725[_0x60ee('0x41')]);return _0x49b48e[_0x60ee('0x60')](_0x3cc476);}})[_0x60ee('0x23')](function(_0x5b03){if(_0x5b03){_0x558fda=_0x5b03[_0x60ee('0x48')];if(!_0x238725[_0x60ee('0x34')][_0x60ee('0x3a')](_0x60ee('0x53'))){_0x3cc476[_0x60ee('0x1b')]=qs['limit'](_0x238725['query']['limit']);_0x3cc476[_0x60ee('0x19')]=qs['offset'](_0x238725['query']['offset']);}return _0x49b48e[_0x60ee('0x60')](_0x3cc476);}})['then'](function(_0x42b167){if(_0x42b167){return _0x42b167?{'count':_0x558fda,'rows':_0x42b167}:null;}})[_0x60ee('0x23')](respondWithResult(_0x4bd8dd,null))[_0x60ee('0x45')](handleError(_0x4bd8dd,null));};exports[_0x60ee('0x61')]=function(_0x21298d,_0x67325,_0x1f0f66){var _0x410b34=_0x21298d[_0x60ee('0x4b')][_0x60ee('0x62')];return db[_0x60ee('0x5e')][_0x60ee('0x44')]({'where':{'id':_0x410b34},'attributes':['id'],'include':[{'model':db[_0x60ee('0x55')],'as':_0x60ee('0x63'),'attributes':['id',_0x60ee('0x2a'),'online','voicePause',_0x60ee('0x64')],'raw':!![]}]})[_0x60ee('0x23')](function(_0x2cb872){if(_0x2cb872){var _0x33cf63=_[_0x60ee('0x65')](_0x2cb872,function(_0x34bbf7){var _0x16213e=_0x34bbf7[_0x60ee('0x25')]({'plain':!![]});return _0x16213e[_0x60ee('0x63')];});return db[_0x60ee('0x2e')][_0x60ee('0x49')]({'where':{'id':_0x21298d[_0x60ee('0x47')]['id']}})[_0x60ee('0x23')](function(_0x48b79f){return db['sequelize'][_0x60ee('0x66')](function(_0x5b1af0){return _0x48b79f['addTeams'](_0x410b34,{'transaction':_0x5b1af0})[_0x60ee('0x23')](function(){return BPromise[_0x60ee('0x67')](_0x33cf63,function(_0x547131){return db['UserWhatsappQueue']['findOrCreate']({'where':{'UserId':_0x547131['id'],'WhatsappQueueId':_0x21298d[_0x60ee('0x47')]['id']},'transaction':_0x5b1af0});});})[_0x60ee('0x23')](function(){_0x33cf63[_0x60ee('0x68')](function(_0x12d4de){socket[_0x60ee('0x69')](_0x60ee('0x6a'),{'UserId':_0x12d4de['id'],'WhatsappQueueId':_0x48b79f['id']});});});});});}})['then'](respondWithStatusCode(_0x67325,null))['catch'](handleError(_0x67325,null));};exports[_0x60ee('0x6b')]=function(_0x581e34,_0x3402e5,_0x5b014d){return db[_0x60ee('0x5e')][_0x60ee('0x44')]({'where':{'id':_0x581e34[_0x60ee('0x34')]['ids']},'attributes':['id'],'include':[{'model':db[_0x60ee('0x55')],'as':_0x60ee('0x63'),'attributes':['id'],'raw':!![]}]})[_0x60ee('0x23')](handleEntityNotFound(_0x3402e5,null))[_0x60ee('0x23')](function(_0xe7b28a){var _0x6b51ce=_[_0x60ee('0x2d')](_0xe7b28a,'id');var _0x3d4811=[];var _0x44a6ab=[];var _0x4fea48=squel['select']();_0x4fea48[_0x60ee('0x6c')]('tq.TeamId')[_0x60ee('0x6d')](_0x60ee('0x6e'),'tq')['join'](_0x60ee('0x6f'),'ut',_0x60ee('0x70'))[_0x60ee('0x3c')](_0x60ee('0x71'),_0x581e34[_0x60ee('0x47')]['id']);for(var _0x548980=0x0;_0x548980<_0xe7b28a[_0x60ee('0x48')];_0x548980+=0x1){let _0xd1628a=_0xe7b28a[_0x548980];for(var _0x592bc0=0x0;_0x592bc0<_0xd1628a[_0x60ee('0x63')]['length'];_0x592bc0+=0x1){let _0x34ef3c=_0xd1628a[_0x60ee('0x63')][_0x592bc0];var _0x296a73=_0x4fea48[_0x60ee('0x72')]();_0x296a73['where']('ut.UserId\x20=\x20?',_0x34ef3c['id']);_0x44a6ab[_0x60ee('0x73')](db['sequelize']['query'](_0x296a73['toString'](),{'type':db[_0x60ee('0x74')]['QueryTypes'][_0x60ee('0x75')]})[_0x60ee('0x23')](function(_0x47f8b3){if(_0x47f8b3[_0x60ee('0x48')]===0x1){return _0x34ef3c['id'];}else{var _0x511129=_[_0x60ee('0x76')](_[_0x60ee('0x2d')](_0x47f8b3,_0x60ee('0x77')),function(_0x8c8dea){return _[_0x60ee('0x78')](_0x6b51ce,_0x8c8dea);});if(_0x511129){return _0x34ef3c['id'];}}}));}}return BPromise[_0x60ee('0x79')](_0x44a6ab)[_0x60ee('0x23')](function(_0x4e1b8d){_0x3d4811=_(_0x3d4811)['union'](_0x4e1b8d)['compact']()[_0x60ee('0x7a')]();return db[_0x60ee('0x2e')]['find']({'where':{'id':_0x581e34[_0x60ee('0x47')]['id']}})[_0x60ee('0x23')](function(_0x2a1d1b){return db[_0x60ee('0x74')]['transaction'](function(_0x954977){return _0x2a1d1b[_0x60ee('0x6b')](_0x581e34[_0x60ee('0x34')][_0x60ee('0x62')],{'transaction':_0x954977})[_0x60ee('0x23')](function(){if(!_[_0x60ee('0x7b')](_0x3d4811)){return _0x2a1d1b[_0x60ee('0x7c')](_0x3d4811,{'transaction':_0x954977});}})['then'](function(){_0x3d4811[_0x60ee('0x68')](function(_0xa6aa38){socket[_0x60ee('0x69')](_0x60ee('0x7d'),{'UserId':_0xa6aa38,'WhatsappQueueId':_0x2a1d1b['id']});});});});});});})[_0x60ee('0x23')](respondWithStatusCode(_0x3402e5,null))[_0x60ee('0x45')](handleError(_0x3402e5,null));};exports[_0x60ee('0x7e')]=function(_0x43b846,_0x1a1aaf,_0x1f92aa){return db[_0x60ee('0x2e')][_0x60ee('0x49')]({'where':{'id':_0x43b846['params']['id']}})['then'](handleEntityNotFound(_0x1a1aaf,null))[_0x60ee('0x23')](function(_0x2fb97d){if(_0x2fb97d){return _0x2fb97d[_0x60ee('0x7e')](_0x43b846[_0x60ee('0x4b')][_0x60ee('0x62')],_[_0x60ee('0x7f')](_0x43b846[_0x60ee('0x4b')],[_0x60ee('0x62'),'id'])||{})[_0x60ee('0x80')](function(_0x402d0d){for(var _0x68c76d=0x0;_0x68c76d<_0x43b846[_0x60ee('0x4b')][_0x60ee('0x62')][_0x60ee('0x48')];_0x68c76d+=0x1){socket['emit'](_0x60ee('0x6a'),{'UserId':Number(_0x43b846['body'][_0x60ee('0x62')][_0x68c76d]),'WhatsappQueueId':Number(_0x43b846['params']['id'])});}return _0x402d0d;});}})[_0x60ee('0x23')](respondWithResult(_0x1a1aaf,null))[_0x60ee('0x45')](handleError(_0x1a1aaf,null));};exports[_0x60ee('0x7c')]=function(_0x1926ea,_0x5140ab,_0x1e5a04){return db[_0x60ee('0x2e')][_0x60ee('0x49')]({'where':{'id':_0x1926ea[_0x60ee('0x47')]['id']}})[_0x60ee('0x23')](handleEntityNotFound(_0x5140ab,null))[_0x60ee('0x23')](function(_0x4681bf){if(_0x4681bf){return _0x4681bf[_0x60ee('0x7c')](_0x1926ea[_0x60ee('0x34')][_0x60ee('0x62')])[_0x60ee('0x23')](function(){if(_['isArray'](_0x1926ea[_0x60ee('0x34')][_0x60ee('0x62')])){for(var _0x10441d=0x0;_0x10441d<_0x1926ea[_0x60ee('0x34')]['ids'][_0x60ee('0x48')];_0x10441d+=0x1){socket[_0x60ee('0x69')]('userWhatsappQueue:remove',{'UserId':Number(_0x1926ea[_0x60ee('0x34')][_0x60ee('0x62')][_0x10441d]),'WhatsappQueueId':Number(_0x1926ea[_0x60ee('0x47')]['id'])});}}else{socket[_0x60ee('0x69')](_0x60ee('0x7d'),{'UserId':Number(_0x1926ea['query'][_0x60ee('0x62')]),'WhatsappQueueId':Number(_0x1926ea[_0x60ee('0x47')]['id'])});}});}})[_0x60ee('0x23')](respondWithStatusCode(_0x5140ab,null))['catch'](handleError(_0x5140ab,null));};exports[_0x60ee('0x81')]=function(_0x586c3f,_0x24d435,_0x2ad724){var _0x540381={};var _0xd9d133={};var _0x472394;var _0x5eb02a;return db['WhatsappQueue']['findOne']({'where':{'id':_0x586c3f[_0x60ee('0x47')]['id']}})[_0x60ee('0x23')](handleEntityNotFound(_0x24d435,null))[_0x60ee('0x23')](function(_0x163367){if(_0x163367){_0x472394=_0x163367;_0xd9d133[_0x60ee('0x33')]=_[_0x60ee('0x35')](db[_0x60ee('0x55')]['rawAttributes']);_0xd9d133['query']=_['keys'](_0x586c3f[_0x60ee('0x34')]);_0xd9d133['filters']=_['intersection'](_0xd9d133[_0x60ee('0x33')],_0xd9d133['query']);_0x540381[_0x60ee('0x38')]=_['intersection'](_0xd9d133[_0x60ee('0x33')],qs[_0x60ee('0x39')](_0x586c3f['query'][_0x60ee('0x39')]));_0x540381[_0x60ee('0x38')]=_0x540381[_0x60ee('0x38')][_0x60ee('0x48')]?_0x540381[_0x60ee('0x38')]:_0xd9d133[_0x60ee('0x33')];_0x540381['order']=qs[_0x60ee('0x3b')](_0x586c3f[_0x60ee('0x34')][_0x60ee('0x3b')]);_0x540381[_0x60ee('0x3c')]=qs['filters'](_[_0x60ee('0x3d')](_0x586c3f[_0x60ee('0x34')],_0xd9d133[_0x60ee('0x36')]));if(_0x586c3f[_0x60ee('0x34')]['filter']){_0x540381[_0x60ee('0x3c')]=_[_0x60ee('0x3f')](_0x540381[_0x60ee('0x3c')],{'$or':_[_0x60ee('0x2d')](_0x540381[_0x60ee('0x38')],function(_0x56e832){var _0x10c4bc={};_0x10c4bc[_0x56e832]={'$like':'%'+_0x586c3f[_0x60ee('0x34')][_0x60ee('0x3e')]+'%'};return _0x10c4bc;})});}_0x540381=_[_0x60ee('0x3f')]({},_0x540381,_0x586c3f[_0x60ee('0x41')]);return _0x472394['getAgents'](_0x540381);}})['then'](function(_0x2bfac8){if(_0x2bfac8){_0x5eb02a=_0x2bfac8[_0x60ee('0x48')];if(!_0x586c3f[_0x60ee('0x34')][_0x60ee('0x3a')](_0x60ee('0x53'))){_0x540381['limit']=qs[_0x60ee('0x1b')](_0x586c3f[_0x60ee('0x34')][_0x60ee('0x1b')]);_0x540381[_0x60ee('0x19')]=qs[_0x60ee('0x19')](_0x586c3f[_0x60ee('0x34')][_0x60ee('0x19')]);}return _0x472394['getAgents'](_0x540381);}})[_0x60ee('0x23')](function(_0x1b48e3){if(_0x1b48e3){return _0x1b48e3?{'count':_0x5eb02a,'rows':_0x1b48e3}:null;}})[_0x60ee('0x23')](respondWithResult(_0x24d435,null))[_0x60ee('0x45')](handleError(_0x24d435,null));};
\ No newline at end of file
+var _0x15d2=['from','team_has_whatsapp_queues','user_has_teams','WhatsappQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','TeamId','includes','all','union','compact','value','isEmpty','removeAgents','addAgents','omit','spread','userWhatsappQueue:save','isArray','userWhatsappQueue:remove','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','to-csv','ejs','lodash','crypto','jsforce','querystring','papaparse','../../config/license/hardware','../../config/logger','../../config/utils','redis','defaults','socket.io-emitter','./whatsappQueue.socket','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','reject','save','then','destroy','get','UserProfileResource','stack','name','send','map','WhatsappQueue','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','length','attributes','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','role','WhatsappQueues','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','findOne','UserWhatsappQueue','User','findAndCountAll','UserId','agent','whatsappPause','updatedAt','createdAt','format','%s/%s','getTeams','Team','addTeams','ids','online','voicePause','interface','flatMap','Agents','sequelize','transaction','each','forEach','emit','removeTeams','select','field','tq.TeamId'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x15d2,0x1ae));var _0x215d=function(_0x58965a,_0x2e71db){_0x58965a=_0x58965a-0x0;var _0x254efc=_0x15d2[_0x58965a];return _0x254efc;};'use strict';var emlformat=require(_0x215d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x215d('0x1'));var jsonpatch=require(_0x215d('0x2'));var rp=require(_0x215d('0x3'));var moment=require('moment');var BPromise=require(_0x215d('0x4'));var Mustache=require(_0x215d('0x5'));var util=require('util');var path=require(_0x215d('0x6'));var sox=require('sox');var csv=require(_0x215d('0x7'));var ejs=require(_0x215d('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x215d('0x9'));var squel=require('squel');var crypto=require(_0x215d('0xa'));var jsforce=require(_0x215d('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x215d('0x7'));var querystring=require(_0x215d('0xc'));var Papa=require(_0x215d('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x215d('0xe'));var logger=require(_0x215d('0xf'))('api');var utils=require(_0x215d('0x10'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x215d('0x11')]=_[_0x215d('0x12')](config[_0x215d('0x11')],{'host':'localhost','port':0x18eb});var socket=require(_0x215d('0x13'))(new Redis(config['redis']));require(_0x215d('0x14'))['register'](socket);function respondWithStatusCode(_0x351c26,_0x35b731){_0x35b731=_0x35b731||0xcc;return function(_0x51a469){if(_0x51a469){return _0x351c26[_0x215d('0x15')](_0x35b731);}return _0x351c26[_0x215d('0x16')](_0x35b731)[_0x215d('0x17')]();};}function respondWithResult(_0x143b8c,_0x551c3f){_0x551c3f=_0x551c3f||0xc8;return function(_0x270b0b){if(_0x270b0b){return _0x143b8c[_0x215d('0x16')](_0x551c3f)[_0x215d('0x18')](_0x270b0b);}};}function respondWithFilteredResult(_0x30501b,_0x448f48){return function(_0x46b714){if(_0x46b714){var _0x19d661=typeof _0x448f48['offset']===_0x215d('0x19')&&typeof _0x448f48['limit']===_0x215d('0x19');var _0x59b50c=_0x46b714[_0x215d('0x1a')];var _0x8beaf=_0x19d661?0x0:_0x448f48[_0x215d('0x1b')];var _0x410af4=_0x19d661?_0x46b714[_0x215d('0x1a')]:_0x448f48[_0x215d('0x1b')]+_0x448f48[_0x215d('0x1c')];var _0x2b4ff6;if(_0x410af4>=_0x59b50c){_0x410af4=_0x59b50c;_0x2b4ff6=0xc8;}else{_0x2b4ff6=0xce;}_0x30501b['status'](_0x2b4ff6);return _0x30501b[_0x215d('0x1d')](_0x215d('0x1e'),_0x8beaf+'-'+_0x410af4+'/'+_0x59b50c)[_0x215d('0x18')](_0x46b714);}return null;};}function patchUpdates(_0x37c920){return function(_0x286c76){try{jsonpatch[_0x215d('0x1f')](_0x286c76,_0x37c920,!![]);}catch(_0x133e74){return BPromise[_0x215d('0x20')](_0x133e74);}return _0x286c76[_0x215d('0x21')]();};}function saveUpdates(_0x2dd889,_0x16d59f){return function(_0x25a6a6){if(_0x25a6a6){return _0x25a6a6['update'](_0x2dd889)[_0x215d('0x22')](function(_0x5c8d3d){return _0x5c8d3d;});}return null;};}function removeEntity(_0xd61889,_0x3513dc){return function(_0x317962){if(_0x317962){return _0x317962[_0x215d('0x23')]()[_0x215d('0x22')](function(){var _0x13c54b=_0x317962[_0x215d('0x24')]({'plain':!![]});var _0x53edc7='WhatsappQueues';return db[_0x215d('0x25')][_0x215d('0x23')]({'where':{'type':_0x53edc7,'resourceId':_0x13c54b['id']}})[_0x215d('0x22')](function(){return _0x317962;});})['then'](function(){_0xd61889[_0x215d('0x16')](0xcc)[_0x215d('0x17')]();});}};}function handleEntityNotFound(_0x383a08,_0x2c5094){return function(_0x263643){if(!_0x263643){_0x383a08['sendStatus'](0x194);}return _0x263643;};}function handleError(_0x109a7a,_0x1456b1){_0x1456b1=_0x1456b1||0x1f4;return function(_0x523c83){logger['error'](_0x523c83[_0x215d('0x26')]);if(_0x523c83[_0x215d('0x27')]){delete _0x523c83[_0x215d('0x27')];}_0x109a7a[_0x215d('0x16')](_0x1456b1)[_0x215d('0x28')](_0x523c83);};}exports['index']=function(_0x6eac1d,_0x1162e2){var _0x5098c5={},_0x167008={},_0x2c82d8={'count':0x0,'rows':[]};var _0x322ae9=_[_0x215d('0x29')](db[_0x215d('0x2a')][_0x215d('0x2b')],function(_0x481d48){return{'name':_0x481d48[_0x215d('0x2c')],'type':_0x481d48[_0x215d('0x2d')]['key']};});_0x167008[_0x215d('0x2e')]=_[_0x215d('0x29')](_0x322ae9,'name');_0x167008[_0x215d('0x2f')]=_[_0x215d('0x30')](_0x6eac1d['query']);_0x167008[_0x215d('0x31')]=_[_0x215d('0x32')](_0x167008[_0x215d('0x2e')],_0x167008[_0x215d('0x2f')]);_0x5098c5['attributes']=_[_0x215d('0x32')](_0x167008[_0x215d('0x2e')],qs[_0x215d('0x33')](_0x6eac1d[_0x215d('0x2f')]['fields']));_0x5098c5['attributes']=_0x5098c5['attributes'][_0x215d('0x34')]?_0x5098c5[_0x215d('0x35')]:_0x167008[_0x215d('0x2e')];if(!_0x6eac1d[_0x215d('0x2f')][_0x215d('0x36')](_0x215d('0x37'))){_0x5098c5[_0x215d('0x1c')]=qs[_0x215d('0x1c')](_0x6eac1d['query'][_0x215d('0x1c')]);_0x5098c5[_0x215d('0x1b')]=qs[_0x215d('0x1b')](_0x6eac1d[_0x215d('0x2f')][_0x215d('0x1b')]);}_0x5098c5[_0x215d('0x38')]=qs[_0x215d('0x39')](_0x6eac1d[_0x215d('0x2f')][_0x215d('0x39')]);_0x5098c5['where']=qs['filters'](_[_0x215d('0x3a')](_0x6eac1d[_0x215d('0x2f')],_0x167008[_0x215d('0x31')]),_0x322ae9);if(_0x6eac1d['query'][_0x215d('0x3b')]){_0x5098c5[_0x215d('0x3c')]=_[_0x215d('0x3d')](_0x5098c5[_0x215d('0x3c')],{'$or':_['map'](_0x322ae9,function(_0x58dbf6){if(_0x58dbf6[_0x215d('0x2d')]!==_0x215d('0x3e')){var _0x21688e={};_0x21688e[_0x58dbf6[_0x215d('0x27')]]={'$like':'%'+_0x6eac1d[_0x215d('0x2f')][_0x215d('0x3b')]+'%'};return _0x21688e;}})});}_0x5098c5=_[_0x215d('0x3d')]({},_0x5098c5,_0x6eac1d[_0x215d('0x3f')]);var _0x5d506d={'where':_0x5098c5[_0x215d('0x3c')]};return db[_0x215d('0x2a')][_0x215d('0x1a')](_0x5d506d)[_0x215d('0x22')](function(_0x5ab423){_0x2c82d8[_0x215d('0x1a')]=_0x5ab423;if(_0x6eac1d[_0x215d('0x2f')][_0x215d('0x40')]){_0x5098c5[_0x215d('0x41')]=[{'all':!![]}];}return db[_0x215d('0x2a')][_0x215d('0x42')](_0x5098c5);})[_0x215d('0x22')](function(_0x1181f8){_0x2c82d8[_0x215d('0x43')]=_0x1181f8;return _0x2c82d8;})[_0x215d('0x22')](respondWithFilteredResult(_0x1162e2,_0x5098c5))[_0x215d('0x44')](handleError(_0x1162e2,null));};exports[_0x215d('0x45')]=function(_0x417143,_0x1a6a6b){var _0x48a4c5={'raw':!![],'where':{'id':_0x417143[_0x215d('0x46')]['id']}},_0xf444fc={};_0xf444fc[_0x215d('0x2e')]=_[_0x215d('0x30')](db[_0x215d('0x2a')][_0x215d('0x2b')]);_0xf444fc[_0x215d('0x2f')]=_[_0x215d('0x30')](_0x417143[_0x215d('0x2f')]);_0xf444fc[_0x215d('0x31')]=_['intersection'](_0xf444fc[_0x215d('0x2e')],_0xf444fc[_0x215d('0x2f')]);_0x48a4c5[_0x215d('0x35')]=_[_0x215d('0x32')](_0xf444fc[_0x215d('0x2e')],qs[_0x215d('0x33')](_0x417143[_0x215d('0x2f')][_0x215d('0x33')]));_0x48a4c5['attributes']=_0x48a4c5['attributes']['length']?_0x48a4c5[_0x215d('0x35')]:_0xf444fc[_0x215d('0x2e')];if(_0x417143[_0x215d('0x2f')][_0x215d('0x40')]){_0x48a4c5[_0x215d('0x41')]=[{'all':!![]}];}_0x48a4c5=_['merge']({},_0x48a4c5,_0x417143['options']);return db[_0x215d('0x2a')][_0x215d('0x47')](_0x48a4c5)[_0x215d('0x22')](handleEntityNotFound(_0x1a6a6b,null))['then'](respondWithResult(_0x1a6a6b,null))[_0x215d('0x44')](handleError(_0x1a6a6b,null));};exports[_0x215d('0x48')]=function(_0x225d66,_0x52d683){return db[_0x215d('0x2a')][_0x215d('0x48')](_0x225d66[_0x215d('0x49')],{})[_0x215d('0x22')](function(_0x2afce5){var _0x45f413=_0x225d66[_0x215d('0x4a')][_0x215d('0x24')]({'plain':!![]});if(!_0x45f413)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x45f413[_0x215d('0x4b')]==='user'){var _0x440216=_0x2afce5[_0x215d('0x24')]({'plain':!![]});var _0x46ca40=_0x215d('0x4c');return db['UserProfileSection'][_0x215d('0x47')]({'where':{'name':_0x46ca40,'userProfileId':_0x45f413[_0x215d('0x4d')]},'raw':!![]})[_0x215d('0x22')](function(_0x33714d){if(_0x33714d&&_0x33714d[_0x215d('0x4e')]===0x0){return db['UserProfileResource'][_0x215d('0x48')]({'name':_0x440216[_0x215d('0x27')],'resourceId':_0x440216['id'],'type':_0x33714d[_0x215d('0x27')],'sectionId':_0x33714d['id']},{})[_0x215d('0x22')](function(){return _0x2afce5;});}else{return _0x2afce5;}})[_0x215d('0x44')](function(_0x2372c3){logger['error'](_0x215d('0x4f'),_0x2372c3);throw _0x2372c3;});}return _0x2afce5;})[_0x215d('0x22')](respondWithResult(_0x52d683,0xc9))[_0x215d('0x44')](handleError(_0x52d683,null));};exports['update']=function(_0x11d89e,_0x41b675){if(_0x11d89e[_0x215d('0x49')]['id']){delete _0x11d89e['body']['id'];}return db[_0x215d('0x2a')]['find']({'where':{'id':_0x11d89e['params']['id']}})[_0x215d('0x22')](handleEntityNotFound(_0x41b675,null))[_0x215d('0x22')](saveUpdates(_0x11d89e['body'],null))[_0x215d('0x22')](respondWithResult(_0x41b675,null))[_0x215d('0x44')](handleError(_0x41b675,null));};exports[_0x215d('0x23')]=function(_0xfda493,_0xc883e4){return db[_0x215d('0x2a')][_0x215d('0x47')]({'where':{'id':_0xfda493[_0x215d('0x46')]['id']}})[_0x215d('0x22')](handleEntityNotFound(_0xc883e4,null))[_0x215d('0x22')](removeEntity(_0xc883e4,null))[_0x215d('0x44')](handleError(_0xc883e4,null));};exports[_0x215d('0x50')]=function(_0x38015a,_0x2c2b35){return db[_0x215d('0x2a')]['describe']()[_0x215d('0x22')](respondWithResult(_0x2c2b35,null))['catch'](handleError(_0x2c2b35,null));};exports['getMembers']=function(_0x6b4a64,_0x2332f7,_0x459b72){var _0x55156d={'raw':!![],'where':{}},_0x497d1c={},_0x5655ea;return db[_0x215d('0x2a')][_0x215d('0x51')]({'where':{'id':_0x6b4a64[_0x215d('0x46')]['id']}})[_0x215d('0x22')](handleEntityNotFound(_0x2332f7,null))[_0x215d('0x22')](function(_0x53f64a){if(_0x53f64a){_0x5655ea=_0x53f64a[_0x215d('0x24')]({'plain':!![]});_0x497d1c[_0x215d('0x2e')]=_[_0x215d('0x30')](db['UserWhatsappQueue'][_0x215d('0x2b')]);_0x497d1c['query']=_['keys'](_0x6b4a64['query']);_0x497d1c['filters']=_[_0x215d('0x32')](_0x497d1c['model'],_0x497d1c[_0x215d('0x2f')]);_0x55156d[_0x215d('0x35')]=_['intersection'](_0x497d1c[_0x215d('0x2e')],qs[_0x215d('0x33')](_0x6b4a64[_0x215d('0x2f')][_0x215d('0x33')]));_0x55156d[_0x215d('0x35')]=_0x55156d[_0x215d('0x35')][_0x215d('0x34')]?_0x55156d[_0x215d('0x35')]:_0x497d1c[_0x215d('0x2e')];if(!_0x6b4a64[_0x215d('0x2f')]['hasOwnProperty'](_0x215d('0x37'))){_0x55156d[_0x215d('0x1c')]=qs[_0x215d('0x1c')](_0x6b4a64[_0x215d('0x2f')][_0x215d('0x1c')]);_0x55156d['offset']=qs['offset'](_0x6b4a64[_0x215d('0x2f')][_0x215d('0x1b')]);}_0x55156d[_0x215d('0x38')]=qs[_0x215d('0x39')](_0x6b4a64[_0x215d('0x2f')][_0x215d('0x39')]);_0x55156d[_0x215d('0x3c')]=qs[_0x215d('0x31')](_[_0x215d('0x3a')](_0x6b4a64['query'],_0x497d1c['filters']));_0x55156d[_0x215d('0x3c')]['WhatsappQueueId']=_0x53f64a['id'];if(_0x6b4a64[_0x215d('0x2f')][_0x215d('0x3b')]){_0x55156d[_0x215d('0x3c')]=_['merge'](_0x55156d[_0x215d('0x3c')],{'$or':_['map'](_0x55156d[_0x215d('0x35')],function(_0x4fdef5){var _0x48270d={};_0x48270d[_0x4fdef5]={'$like':'%'+_0x6b4a64[_0x215d('0x2f')][_0x215d('0x3b')]+'%'};return _0x48270d;})});}_0x55156d=_[_0x215d('0x3d')]({},_0x55156d,_0x6b4a64[_0x215d('0x3f')]);return db[_0x215d('0x52')][_0x215d('0x42')](_0x55156d);}})[_0x215d('0x22')](function(_0x43d268){if(_0x43d268){return db[_0x215d('0x53')][_0x215d('0x54')]({'where':{'id':_[_0x215d('0x29')](_0x43d268,_0x215d('0x55')),'role':_0x215d('0x56')},'attributes':['id','name',_0x215d('0x57'),_0x215d('0x58'),_0x215d('0x59')]});}})['then'](function(_0x5e0650){if(_0x5e0650){return{'count':_0x5e0650[_0x215d('0x1a')],'rows':_[_0x215d('0x29')](_0x5e0650['rows'],function(_0x3f148f){return{'membername':_0x3f148f[_0x215d('0x27')],'UserId':_0x3f148f['id'],'queue_name':_0x5655ea[_0x215d('0x27')],'WhatsappQueueId':_0x5655ea['id'],'interface':util[_0x215d('0x5a')](_0x215d('0x5b'),'SIP',_0x3f148f[_0x215d('0x27')]),'penalty':0x0,'paused':_0x3f148f[_0x215d('0x57')],'createdAt':_0x3f148f['createdAt'],'updatedAt':_0x3f148f[_0x215d('0x58')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x215d('0x22')](respondWithFilteredResult(_0x2332f7,_0x55156d))['catch'](handleError(_0x2332f7,null));};exports[_0x215d('0x5c')]=function(_0x8dd61c,_0x447500,_0x49fa83){var _0x4d51e5={};var _0x59a836={};var _0x239693;var _0x5386dd;return db[_0x215d('0x2a')][_0x215d('0x51')]({'where':{'id':_0x8dd61c[_0x215d('0x46')]['id']}})[_0x215d('0x22')](handleEntityNotFound(_0x447500,null))[_0x215d('0x22')](function(_0x468faa){if(_0x468faa){_0x239693=_0x468faa;_0x59a836[_0x215d('0x2e')]=_[_0x215d('0x30')](db[_0x215d('0x5d')]['rawAttributes']);_0x59a836[_0x215d('0x2f')]=_[_0x215d('0x30')](_0x8dd61c[_0x215d('0x2f')]);_0x59a836[_0x215d('0x31')]=_['intersection'](_0x59a836[_0x215d('0x2e')],_0x59a836['query']);_0x4d51e5[_0x215d('0x35')]=_[_0x215d('0x32')](_0x59a836[_0x215d('0x2e')],qs['fields'](_0x8dd61c['query'][_0x215d('0x33')]));_0x4d51e5[_0x215d('0x35')]=_0x4d51e5[_0x215d('0x35')]['length']?_0x4d51e5['attributes']:_0x59a836[_0x215d('0x2e')];_0x4d51e5[_0x215d('0x38')]=qs[_0x215d('0x39')](_0x8dd61c[_0x215d('0x2f')][_0x215d('0x39')]);_0x4d51e5[_0x215d('0x3c')]=qs['filters'](_['pick'](_0x8dd61c[_0x215d('0x2f')],_0x59a836['filters']));if(_0x8dd61c[_0x215d('0x2f')][_0x215d('0x3b')]){_0x4d51e5[_0x215d('0x3c')]=_['merge'](_0x4d51e5[_0x215d('0x3c')],{'$or':_[_0x215d('0x29')](_0x4d51e5[_0x215d('0x35')],function(_0x456438){var _0x4f178e={};_0x4f178e[_0x456438]={'$like':'%'+_0x8dd61c['query'][_0x215d('0x3b')]+'%'};return _0x4f178e;})});}_0x4d51e5=_[_0x215d('0x3d')]({},_0x4d51e5,_0x8dd61c[_0x215d('0x3f')]);return _0x239693[_0x215d('0x5c')](_0x4d51e5);}})['then'](function(_0x1a73b3){if(_0x1a73b3){_0x5386dd=_0x1a73b3['length'];if(!_0x8dd61c['query'][_0x215d('0x36')]('nolimit')){_0x4d51e5[_0x215d('0x1c')]=qs['limit'](_0x8dd61c[_0x215d('0x2f')]['limit']);_0x4d51e5[_0x215d('0x1b')]=qs[_0x215d('0x1b')](_0x8dd61c[_0x215d('0x2f')][_0x215d('0x1b')]);}return _0x239693[_0x215d('0x5c')](_0x4d51e5);}})[_0x215d('0x22')](function(_0x51575e){if(_0x51575e){return _0x51575e?{'count':_0x5386dd,'rows':_0x51575e}:null;}})[_0x215d('0x22')](respondWithResult(_0x447500,null))[_0x215d('0x44')](handleError(_0x447500,null));};exports[_0x215d('0x5e')]=function(_0x5e6cbe,_0x1ba531,_0x58e961){var _0xca6afd=_0x5e6cbe['body'][_0x215d('0x5f')];return db[_0x215d('0x5d')][_0x215d('0x42')]({'where':{'id':_0xca6afd},'attributes':['id'],'include':[{'model':db[_0x215d('0x53')],'as':'Agents','attributes':['id','name',_0x215d('0x60'),_0x215d('0x61'),_0x215d('0x62')],'raw':!![]}]})['then'](function(_0x4f96b9){if(_0x4f96b9){var _0x35bc83=_[_0x215d('0x63')](_0x4f96b9,function(_0x22360f){var _0x3ab565=_0x22360f['get']({'plain':!![]});return _0x3ab565[_0x215d('0x64')];});return db['WhatsappQueue']['find']({'where':{'id':_0x5e6cbe[_0x215d('0x46')]['id']}})['then'](function(_0x180c90){return db[_0x215d('0x65')][_0x215d('0x66')](function(_0x43c443){return _0x180c90[_0x215d('0x5e')](_0xca6afd,{'transaction':_0x43c443})[_0x215d('0x22')](function(){return BPromise[_0x215d('0x67')](_0x35bc83,function(_0x50bae2){return db[_0x215d('0x52')]['findOrCreate']({'where':{'UserId':_0x50bae2['id'],'WhatsappQueueId':_0x5e6cbe[_0x215d('0x46')]['id']},'transaction':_0x43c443});});})[_0x215d('0x22')](function(){_0x35bc83[_0x215d('0x68')](function(_0x4051bc){socket[_0x215d('0x69')]('userWhatsappQueue:save',{'UserId':_0x4051bc['id'],'WhatsappQueueId':_0x180c90['id']});});});});});}})[_0x215d('0x22')](respondWithStatusCode(_0x1ba531,null))[_0x215d('0x44')](handleError(_0x1ba531,null));};exports[_0x215d('0x6a')]=function(_0x54b686,_0x7393f,_0x5a1e9a){return db['Team'][_0x215d('0x42')]({'where':{'id':_0x54b686['query'][_0x215d('0x5f')]},'attributes':['id'],'include':[{'model':db[_0x215d('0x53')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x215d('0x22')](handleEntityNotFound(_0x7393f,null))[_0x215d('0x22')](function(_0x3ad7fe){var _0x359b21=_[_0x215d('0x29')](_0x3ad7fe,'id');var _0x26e2b2=[];var _0x1b5f03=[];var _0x1ba801=squel[_0x215d('0x6b')]();_0x1ba801[_0x215d('0x6c')](_0x215d('0x6d'))[_0x215d('0x6e')](_0x215d('0x6f'),'tq')['join'](_0x215d('0x70'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x215d('0x3c')](_0x215d('0x71'),_0x54b686[_0x215d('0x46')]['id']);for(var _0x46539e=0x0;_0x46539e<_0x3ad7fe[_0x215d('0x34')];_0x46539e+=0x1){let _0x435259=_0x3ad7fe[_0x46539e];for(var _0xd467b2=0x0;_0xd467b2<_0x435259[_0x215d('0x64')][_0x215d('0x34')];_0xd467b2+=0x1){let _0x44308c=_0x435259[_0x215d('0x64')][_0xd467b2];var _0x76585d=_0x1ba801[_0x215d('0x72')]();_0x76585d[_0x215d('0x3c')](_0x215d('0x73'),_0x44308c['id']);_0x1b5f03[_0x215d('0x74')](db[_0x215d('0x65')][_0x215d('0x2f')](_0x76585d[_0x215d('0x75')](),{'type':db['sequelize'][_0x215d('0x76')][_0x215d('0x77')]})['then'](function(_0x449e85){if(_0x449e85['length']===0x1){return _0x44308c['id'];}else{var _0x4e86d1=_['every'](_[_0x215d('0x29')](_0x449e85,_0x215d('0x78')),function(_0x51d061){return _[_0x215d('0x79')](_0x359b21,_0x51d061);});if(_0x4e86d1){return _0x44308c['id'];}}}));}}return BPromise[_0x215d('0x7a')](_0x1b5f03)[_0x215d('0x22')](function(_0x10e1a1){_0x26e2b2=_(_0x26e2b2)[_0x215d('0x7b')](_0x10e1a1)[_0x215d('0x7c')]()[_0x215d('0x7d')]();return db[_0x215d('0x2a')][_0x215d('0x47')]({'where':{'id':_0x54b686[_0x215d('0x46')]['id']}})[_0x215d('0x22')](function(_0x4e5cb0){return db[_0x215d('0x65')]['transaction'](function(_0x1a84d4){return _0x4e5cb0[_0x215d('0x6a')](_0x54b686[_0x215d('0x2f')][_0x215d('0x5f')],{'transaction':_0x1a84d4})[_0x215d('0x22')](function(){if(!_[_0x215d('0x7e')](_0x26e2b2)){return _0x4e5cb0[_0x215d('0x7f')](_0x26e2b2,{'transaction':_0x1a84d4});}})['then'](function(){_0x26e2b2[_0x215d('0x68')](function(_0x5909a1){socket['emit']('userWhatsappQueue:remove',{'UserId':_0x5909a1,'WhatsappQueueId':_0x4e5cb0['id']});});});});});});})[_0x215d('0x22')](respondWithStatusCode(_0x7393f,null))[_0x215d('0x44')](handleError(_0x7393f,null));};exports[_0x215d('0x80')]=function(_0x4cce83,_0x450d34,_0x53db61){return db[_0x215d('0x2a')]['find']({'where':{'id':_0x4cce83[_0x215d('0x46')]['id']}})['then'](handleEntityNotFound(_0x450d34,null))[_0x215d('0x22')](function(_0x2f6a2c){if(_0x2f6a2c){return _0x2f6a2c['addAgents'](_0x4cce83[_0x215d('0x49')][_0x215d('0x5f')],_[_0x215d('0x81')](_0x4cce83['body'],['ids','id'])||{})[_0x215d('0x82')](function(_0xc832fe){for(var _0x3d2344=0x0;_0x3d2344<_0x4cce83[_0x215d('0x49')][_0x215d('0x5f')][_0x215d('0x34')];_0x3d2344+=0x1){socket[_0x215d('0x69')](_0x215d('0x83'),{'UserId':Number(_0x4cce83['body'][_0x215d('0x5f')][_0x3d2344]),'WhatsappQueueId':Number(_0x4cce83[_0x215d('0x46')]['id'])});}return _0xc832fe;});}})[_0x215d('0x22')](respondWithResult(_0x450d34,null))['catch'](handleError(_0x450d34,null));};exports[_0x215d('0x7f')]=function(_0x5ebcd3,_0x28dbad,_0x1ef82c){return db['WhatsappQueue'][_0x215d('0x47')]({'where':{'id':_0x5ebcd3['params']['id']}})[_0x215d('0x22')](handleEntityNotFound(_0x28dbad,null))[_0x215d('0x22')](function(_0x58aaed){if(_0x58aaed){return _0x58aaed['removeAgents'](_0x5ebcd3[_0x215d('0x2f')][_0x215d('0x5f')])[_0x215d('0x22')](function(){if(_[_0x215d('0x84')](_0x5ebcd3['query'][_0x215d('0x5f')])){for(var _0x1850c8=0x0;_0x1850c8<_0x5ebcd3[_0x215d('0x2f')][_0x215d('0x5f')][_0x215d('0x34')];_0x1850c8+=0x1){socket[_0x215d('0x69')](_0x215d('0x85'),{'UserId':Number(_0x5ebcd3[_0x215d('0x2f')][_0x215d('0x5f')][_0x1850c8]),'WhatsappQueueId':Number(_0x5ebcd3[_0x215d('0x46')]['id'])});}}else{socket[_0x215d('0x69')](_0x215d('0x85'),{'UserId':Number(_0x5ebcd3[_0x215d('0x2f')][_0x215d('0x5f')]),'WhatsappQueueId':Number(_0x5ebcd3[_0x215d('0x46')]['id'])});}});}})[_0x215d('0x22')](respondWithStatusCode(_0x28dbad,null))['catch'](handleError(_0x28dbad,null));};exports[_0x215d('0x86')]=function(_0x1e358f,_0x4c2326,_0x5f216b){var _0x3fdd01={};var _0x50dd21={};var _0x26dc3f;var _0x3ea223;return db[_0x215d('0x2a')]['findOne']({'where':{'id':_0x1e358f[_0x215d('0x46')]['id']}})[_0x215d('0x22')](handleEntityNotFound(_0x4c2326,null))['then'](function(_0x3fbd2b){if(_0x3fbd2b){_0x26dc3f=_0x3fbd2b;_0x50dd21[_0x215d('0x2e')]=_[_0x215d('0x30')](db['User'][_0x215d('0x2b')]);_0x50dd21[_0x215d('0x2f')]=_[_0x215d('0x30')](_0x1e358f['query']);_0x50dd21['filters']=_[_0x215d('0x32')](_0x50dd21[_0x215d('0x2e')],_0x50dd21[_0x215d('0x2f')]);_0x3fdd01[_0x215d('0x35')]=_['intersection'](_0x50dd21[_0x215d('0x2e')],qs[_0x215d('0x33')](_0x1e358f[_0x215d('0x2f')][_0x215d('0x33')]));_0x3fdd01['attributes']=_0x3fdd01[_0x215d('0x35')]['length']?_0x3fdd01[_0x215d('0x35')]:_0x50dd21[_0x215d('0x2e')];_0x3fdd01[_0x215d('0x38')]=qs['sort'](_0x1e358f['query'][_0x215d('0x39')]);_0x3fdd01[_0x215d('0x3c')]=qs['filters'](_[_0x215d('0x3a')](_0x1e358f['query'],_0x50dd21[_0x215d('0x31')]));if(_0x1e358f[_0x215d('0x2f')]['filter']){_0x3fdd01[_0x215d('0x3c')]=_[_0x215d('0x3d')](_0x3fdd01[_0x215d('0x3c')],{'$or':_['map'](_0x3fdd01[_0x215d('0x35')],function(_0x208d7d){var _0x1f34cc={};_0x1f34cc[_0x208d7d]={'$like':'%'+_0x1e358f[_0x215d('0x2f')][_0x215d('0x3b')]+'%'};return _0x1f34cc;})});}_0x3fdd01=_['merge']({},_0x3fdd01,_0x1e358f[_0x215d('0x3f')]);return _0x26dc3f[_0x215d('0x86')](_0x3fdd01);}})[_0x215d('0x22')](function(_0x55d1b3){if(_0x55d1b3){_0x3ea223=_0x55d1b3[_0x215d('0x34')];if(!_0x1e358f[_0x215d('0x2f')][_0x215d('0x36')](_0x215d('0x37'))){_0x3fdd01[_0x215d('0x1c')]=qs[_0x215d('0x1c')](_0x1e358f[_0x215d('0x2f')][_0x215d('0x1c')]);_0x3fdd01[_0x215d('0x1b')]=qs[_0x215d('0x1b')](_0x1e358f[_0x215d('0x2f')][_0x215d('0x1b')]);}return _0x26dc3f[_0x215d('0x86')](_0x3fdd01);}})['then'](function(_0x2ab1b7){if(_0x2ab1b7){return _0x2ab1b7?{'count':_0x3ea223,'rows':_0x2ab1b7}:null;}})[_0x215d('0x22')](respondWithResult(_0x4c2326,null))['catch'](handleError(_0x4c2326,null));};
\ No newline at end of file
index 7149f22..df78fa2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06d1=['events','../../mysqldb','WhatsappQueue','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x512832,_0x26efd7){var _0x674e7a=function(_0x54b6d0){while(--_0x54b6d0){_0x512832['push'](_0x512832['shift']());}};_0x674e7a(++_0x26efd7);}(_0x06d1,0x197));var _0x106d=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0x06d1[_0x53ccf2];return _0x5a2964;};'use strict';var EventEmitter=require(_0x106d('0x0'));var WhatsappQueue=require(_0x106d('0x1'))['db'][_0x106d('0x2')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0x106d('0x3')](0x0);var events={'afterCreate':_0x106d('0x4'),'afterUpdate':_0x106d('0x5'),'afterDestroy':_0x106d('0x6')};function emitEvent(_0xeb62f0){return function(_0x181714,_0x1195d2,_0x68b646){WhatsappQueueEvents['emit'](_0xeb62f0+':'+_0x181714['id'],_0x181714);WhatsappQueueEvents[_0x106d('0x7')](_0xeb62f0,_0x181714);_0x68b646(null);};}for(var e in events){if(events[_0x106d('0x8')](e)){var event=events[e];WhatsappQueue[_0x106d('0x9')](e,emitEvent(event));}}module[_0x106d('0xa')]=WhatsappQueueEvents;
\ No newline at end of file
+var _0x2412=['emit','hook','events','setMaxListeners','save','update','remove'];(function(_0x10755c,_0x1e0e1e){var _0x350ee0=function(_0x40742b){while(--_0x40742b){_0x10755c['push'](_0x10755c['shift']());}};_0x350ee0(++_0x1e0e1e);}(_0x2412,0x14b));var _0x2241=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2412[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0x2241('0x0'));var WhatsappQueue=require('../../mysqldb')['db']['WhatsappQueue'];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0x2241('0x1')](0x0);var events={'afterCreate':_0x2241('0x2'),'afterUpdate':_0x2241('0x3'),'afterDestroy':_0x2241('0x4')};function emitEvent(_0x59249a){return function(_0x44e022,_0x2d14de,_0x2d0dae){WhatsappQueueEvents[_0x2241('0x5')](_0x59249a+':'+_0x44e022['id'],_0x44e022);WhatsappQueueEvents['emit'](_0x59249a,_0x44e022);_0x2d0dae(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappQueue[_0x2241('0x6')](e,emitEvent(event));}}module['exports']=WhatsappQueueEvents;
\ No newline at end of file
index c325f12..5717381 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6aa2=['whatsapp_queues','lodash','api','moment','request-promise','path','../../config/environment','./whatsappQueue.attributes','exports'];(function(_0x233289,_0x4a511a){var _0x48ba82=function(_0x687235){while(--_0x687235){_0x233289['push'](_0x233289['shift']());}};_0x48ba82(++_0x4a511a);}(_0x6aa2,0xfd));var _0x26aa=function(_0x171520,_0x1cee8c){_0x171520=_0x171520-0x0;var _0x3cc729=_0x6aa2[_0x171520];return _0x3cc729;};'use strict';var _=require(_0x26aa('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x26aa('0x1'));var moment=require(_0x26aa('0x2'));var BPromise=require('bluebird');var rp=require(_0x26aa('0x3'));var fs=require('fs');var path=require(_0x26aa('0x4'));var rimraf=require('rimraf');var config=require(_0x26aa('0x5'));var attributes=require(_0x26aa('0x6'));module[_0x26aa('0x7')]=function(_0x5ad9bf,_0x30bd79){return _0x5ad9bf['define']('WhatsappQueue',attributes,{'tableName':_0x26aa('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf1e0=['api','moment','bluebird','request-promise','path','../../config/environment','./whatsappQueue.attributes','define','WhatsappQueue','whatsapp_queues','lodash','../../config/logger'];(function(_0x113281,_0x146ba3){var _0x55f082=function(_0x176fe2){while(--_0x176fe2){_0x113281['push'](_0x113281['shift']());}};_0x55f082(++_0x146ba3);}(_0xf1e0,0xd6));var _0x0f1e=function(_0x251c1a,_0x5e3518){_0x251c1a=_0x251c1a-0x0;var _0x5089a4=_0xf1e0[_0x251c1a];return _0x5089a4;};'use strict';var _=require(_0x0f1e('0x0'));var util=require('util');var logger=require(_0x0f1e('0x1'))(_0x0f1e('0x2'));var moment=require(_0x0f1e('0x3'));var BPromise=require(_0x0f1e('0x4'));var rp=require(_0x0f1e('0x5'));var fs=require('fs');var path=require(_0x0f1e('0x6'));var rimraf=require('rimraf');var config=require(_0x0f1e('0x7'));var attributes=require(_0x0f1e('0x8'));module['exports']=function(_0x41a5bd,_0x33e454){return _0x41a5bd[_0x0f1e('0x9')](_0x0f1e('0xa'),attributes,{'tableName':_0x0f1e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c5cc1fc..c9464b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb261=['ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','http','redis','defaults','./whatsappQueue.socket','register','then','info','WhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','GetWhatsappQueue','WhatsappQueue','findAll','options','raw','attributes','limit','include','map','model','ShowWhatsappQueue','find','util','moment','randomstring'];(function(_0x127ce4,_0x5b0ba5){var _0x5bbedd=function(_0x402175){while(--_0x402175){_0x127ce4['push'](_0x127ce4['shift']());}};_0x5bbedd(++_0x5b0ba5);}(_0xb261,0x8d));var _0x1b26=function(_0x56ea44,_0x368863){_0x56ea44=_0x56ea44-0x0;var _0xabc9b=_0xb261[_0x56ea44];return _0xabc9b;};'use strict';var _=require('lodash');var util=require(_0x1b26('0x0'));var moment=require(_0x1b26('0x1'));var BPromise=require('bluebird');var rs=require(_0x1b26('0x2'));var fs=require('fs');var Redis=require(_0x1b26('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x1b26('0x4'));var logger=require(_0x1b26('0x5'))(_0x1b26('0x6'));var config=require(_0x1b26('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x1b26('0x8')]({'port':0x232a});config[_0x1b26('0x9')]=_[_0x1b26('0xa')](config[_0x1b26('0x9')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x1b26('0x9')]));require(_0x1b26('0xb'))[_0x1b26('0xc')](socket);function respondWithRpcPromise(_0x2cb0ad,_0x5445e0,_0x8ccbc5){return new BPromise(function(_0x5d6631,_0x9d555){return client['request'](_0x2cb0ad,_0x8ccbc5)[_0x1b26('0xd')](function(_0x78b45){logger[_0x1b26('0xe')](_0x1b26('0xf'),_0x5445e0,_0x1b26('0x10'));logger[_0x1b26('0x11')]('WhatsappQueue,\x20%s,\x20%s,\x20%s',_0x5445e0,_0x1b26('0x10'),JSON[_0x1b26('0x12')](_0x78b45));if(_0x78b45[_0x1b26('0x13')]){if(_0x78b45[_0x1b26('0x13')][_0x1b26('0x14')]===0x1f4){logger[_0x1b26('0x13')](_0x1b26('0xf'),_0x5445e0,_0x78b45[_0x1b26('0x13')]['message']);return _0x9d555(_0x78b45[_0x1b26('0x13')][_0x1b26('0x15')]);}logger[_0x1b26('0x13')](_0x1b26('0xf'),_0x5445e0,_0x78b45['error'][_0x1b26('0x15')]);return _0x5d6631(_0x78b45[_0x1b26('0x13')][_0x1b26('0x15')]);}else{logger[_0x1b26('0xe')](_0x1b26('0xf'),_0x5445e0,_0x1b26('0x10'));_0x5d6631(_0x78b45[_0x1b26('0x16')][_0x1b26('0x15')]);}})[_0x1b26('0x17')](function(_0x3dfe59){logger['error']('WhatsappQueue,\x20%s,\x20%s',_0x5445e0,_0x3dfe59);_0x9d555(_0x3dfe59);});});}exports[_0x1b26('0x18')]=function(_0x58adb7){var _0x6a9f85=this;return new Promise(function(_0x158dc2,_0x25fb6f){return db[_0x1b26('0x19')][_0x1b26('0x1a')]({'raw':_0x58adb7['options']?_0x58adb7[_0x1b26('0x1b')][_0x1b26('0x1c')]===undefined?!![]:![]:!![],'where':_0x58adb7[_0x1b26('0x1b')]?_0x58adb7[_0x1b26('0x1b')]['where']||null:null,'attributes':_0x58adb7[_0x1b26('0x1b')]?_0x58adb7[_0x1b26('0x1b')][_0x1b26('0x1d')]||null:null,'limit':_0x58adb7[_0x1b26('0x1b')]?_0x58adb7[_0x1b26('0x1b')][_0x1b26('0x1e')]||null:null,'include':_0x58adb7[_0x1b26('0x1b')]?_0x58adb7[_0x1b26('0x1b')][_0x1b26('0x1f')]?_[_0x1b26('0x20')](_0x58adb7[_0x1b26('0x1b')]['include'],function(_0x4cf3e2){return{'model':db[_0x4cf3e2[_0x1b26('0x21')]],'as':_0x4cf3e2['as'],'attributes':_0x4cf3e2[_0x1b26('0x1d')],'include':_0x4cf3e2[_0x1b26('0x1f')]?_[_0x1b26('0x20')](_0x4cf3e2[_0x1b26('0x1f')],function(_0x231629){return{'model':db[_0x231629[_0x1b26('0x21')]],'as':_0x231629['as'],'attributes':_0x231629[_0x1b26('0x1d')],'include':_0x231629[_0x1b26('0x1f')]?_[_0x1b26('0x20')](_0x231629['include'],function(_0x4fb57a){return{'model':db[_0x4fb57a['model']],'as':_0x4fb57a['as'],'attributes':_0x4fb57a[_0x1b26('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x1b26('0xd')](function(_0x2defb3){logger['info'](_0x1b26('0x18'),_0x58adb7);logger[_0x1b26('0x11')](_0x1b26('0x18'),_0x58adb7,JSON[_0x1b26('0x12')](_0x2defb3));_0x158dc2(_0x2defb3);})[_0x1b26('0x17')](function(_0x30528f){logger[_0x1b26('0x13')](_0x1b26('0x18'),_0x30528f[_0x1b26('0x15')],_0x58adb7);_0x25fb6f(_0x6a9f85[_0x1b26('0x13')](0x1f4,_0x30528f['message']));});});};exports[_0x1b26('0x22')]=function(_0xd65d29){var _0x48c1a3=this;return new Promise(function(_0x577689,_0x49f3bf){return db['WhatsappQueue'][_0x1b26('0x23')]({'raw':_0xd65d29[_0x1b26('0x1b')]?_0xd65d29[_0x1b26('0x1b')][_0x1b26('0x1c')]===undefined?!![]:![]:!![],'where':_0xd65d29['options']?_0xd65d29[_0x1b26('0x1b')]['where']||null:null,'attributes':_0xd65d29[_0x1b26('0x1b')]?_0xd65d29['options'][_0x1b26('0x1d')]||null:null,'include':_0xd65d29['options']?_0xd65d29[_0x1b26('0x1b')]['include']?_[_0x1b26('0x20')](_0xd65d29[_0x1b26('0x1b')][_0x1b26('0x1f')],function(_0x43f22a){return{'model':db[_0x43f22a[_0x1b26('0x21')]],'as':_0x43f22a['as'],'attributes':_0x43f22a[_0x1b26('0x1d')],'include':_0x43f22a[_0x1b26('0x1f')]?_[_0x1b26('0x20')](_0x43f22a[_0x1b26('0x1f')],function(_0x4f8e83){return{'model':db[_0x4f8e83[_0x1b26('0x21')]],'as':_0x4f8e83['as'],'attributes':_0x4f8e83['attributes'],'include':_0x4f8e83['include']?_[_0x1b26('0x20')](_0x4f8e83['include'],function(_0x3b6ea3){return{'model':db[_0x3b6ea3[_0x1b26('0x21')]],'as':_0x3b6ea3['as'],'attributes':_0x3b6ea3['attributes']};}):[]};}):[]};}):[]:[]})[_0x1b26('0xd')](function(_0x3ca4f0){logger[_0x1b26('0xe')](_0x1b26('0x22'),_0xd65d29);logger[_0x1b26('0x11')]('ShowWhatsappQueue',_0xd65d29,JSON[_0x1b26('0x12')](_0x3ca4f0));_0x577689(_0x3ca4f0);})[_0x1b26('0x17')](function(_0x14626a){logger[_0x1b26('0x13')](_0x1b26('0x22'),_0x14626a['message'],_0xd65d29);_0x49f3bf(_0x48c1a3['error'](0x1f4,_0x14626a['message']));});});};
\ No newline at end of file
+var _0x82d1=['client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','info','WhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','GetWhatsappQueue','WhatsappQueue','findAll','options','where','limit','include','attributes','map','model','catch','ShowWhatsappQueue','raw','lodash','util','moment','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0xfb0281,_0x3ff38b){var _0x408dd3=function(_0x5d8017){while(--_0x5d8017){_0xfb0281['push'](_0xfb0281['shift']());}};_0x408dd3(++_0x3ff38b);}(_0x82d1,0x1c1));var _0x182d=function(_0x1c34c5,_0x1dc485){_0x1c34c5=_0x1c34c5-0x0;var _0x2d6092=_0x82d1[_0x1c34c5];return _0x2d6092;};'use strict';var _=require(_0x182d('0x0'));var util=require(_0x182d('0x1'));var moment=require(_0x182d('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x182d('0x3'))(_0x182d('0x4'));var config=require(_0x182d('0x5'));var jayson=require(_0x182d('0x6'));var client=jayson[_0x182d('0x7')][_0x182d('0x8')]({'port':0x232a});config[_0x182d('0x9')]=_[_0x182d('0xa')](config['redis'],{'host':_0x182d('0xb'),'port':0x18eb});var socket=require(_0x182d('0xc'))(new Redis(config[_0x182d('0x9')]));require('./whatsappQueue.socket')[_0x182d('0xd')](socket);function respondWithRpcPromise(_0xc110c7,_0x19e320,_0x327d92){return new BPromise(function(_0x572e0a,_0x4785cb){return client[_0x182d('0xe')](_0xc110c7,_0x327d92)[_0x182d('0xf')](function(_0x39c361){logger[_0x182d('0x10')](_0x182d('0x11'),_0x19e320,_0x182d('0x12'));logger[_0x182d('0x13')]('WhatsappQueue,\x20%s,\x20%s,\x20%s',_0x19e320,_0x182d('0x12'),JSON[_0x182d('0x14')](_0x39c361));if(_0x39c361[_0x182d('0x15')]){if(_0x39c361[_0x182d('0x15')][_0x182d('0x16')]===0x1f4){logger[_0x182d('0x15')](_0x182d('0x11'),_0x19e320,_0x39c361[_0x182d('0x15')][_0x182d('0x17')]);return _0x4785cb(_0x39c361[_0x182d('0x15')]['message']);}logger['error']('WhatsappQueue,\x20%s,\x20%s',_0x19e320,_0x39c361[_0x182d('0x15')][_0x182d('0x17')]);return _0x572e0a(_0x39c361[_0x182d('0x15')]['message']);}else{logger[_0x182d('0x10')](_0x182d('0x11'),_0x19e320,_0x182d('0x12'));_0x572e0a(_0x39c361[_0x182d('0x18')][_0x182d('0x17')]);}})['catch'](function(_0x1413d1){logger['error'](_0x182d('0x11'),_0x19e320,_0x1413d1);_0x4785cb(_0x1413d1);});});}exports[_0x182d('0x19')]=function(_0x1defce){var _0x4b6cf0=this;return new Promise(function(_0x31bdf0,_0x1acd80){return db[_0x182d('0x1a')][_0x182d('0x1b')]({'raw':_0x1defce['options']?_0x1defce[_0x182d('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x1defce[_0x182d('0x1c')]?_0x1defce[_0x182d('0x1c')][_0x182d('0x1d')]||null:null,'attributes':_0x1defce['options']?_0x1defce['options']['attributes']||null:null,'limit':_0x1defce[_0x182d('0x1c')]?_0x1defce['options'][_0x182d('0x1e')]||null:null,'include':_0x1defce[_0x182d('0x1c')]?_0x1defce[_0x182d('0x1c')][_0x182d('0x1f')]?_['map'](_0x1defce[_0x182d('0x1c')][_0x182d('0x1f')],function(_0x3cbc3f){return{'model':db[_0x3cbc3f['model']],'as':_0x3cbc3f['as'],'attributes':_0x3cbc3f[_0x182d('0x20')],'include':_0x3cbc3f[_0x182d('0x1f')]?_[_0x182d('0x21')](_0x3cbc3f['include'],function(_0x5e9de8){return{'model':db[_0x5e9de8['model']],'as':_0x5e9de8['as'],'attributes':_0x5e9de8[_0x182d('0x20')],'include':_0x5e9de8[_0x182d('0x1f')]?_[_0x182d('0x21')](_0x5e9de8[_0x182d('0x1f')],function(_0x2a7189){return{'model':db[_0x2a7189[_0x182d('0x22')]],'as':_0x2a7189['as'],'attributes':_0x2a7189[_0x182d('0x20')]};}):[]};}):[]};}):[]:[]})[_0x182d('0xf')](function(_0x3c9975){logger[_0x182d('0x10')]('GetWhatsappQueue',_0x1defce);logger[_0x182d('0x13')](_0x182d('0x19'),_0x1defce,JSON[_0x182d('0x14')](_0x3c9975));_0x31bdf0(_0x3c9975);})[_0x182d('0x23')](function(_0x2f68e1){logger[_0x182d('0x15')](_0x182d('0x19'),_0x2f68e1[_0x182d('0x17')],_0x1defce);_0x1acd80(_0x4b6cf0[_0x182d('0x15')](0x1f4,_0x2f68e1['message']));});});};exports[_0x182d('0x24')]=function(_0x36bd2d){var _0x213de8=this;return new Promise(function(_0x13fde8,_0x1c5a5f){return db[_0x182d('0x1a')]['find']({'raw':_0x36bd2d[_0x182d('0x1c')]?_0x36bd2d[_0x182d('0x1c')][_0x182d('0x25')]===undefined?!![]:![]:!![],'where':_0x36bd2d['options']?_0x36bd2d[_0x182d('0x1c')][_0x182d('0x1d')]||null:null,'attributes':_0x36bd2d['options']?_0x36bd2d['options']['attributes']||null:null,'include':_0x36bd2d[_0x182d('0x1c')]?_0x36bd2d[_0x182d('0x1c')]['include']?_['map'](_0x36bd2d[_0x182d('0x1c')][_0x182d('0x1f')],function(_0x2f6145){return{'model':db[_0x2f6145['model']],'as':_0x2f6145['as'],'attributes':_0x2f6145[_0x182d('0x20')],'include':_0x2f6145[_0x182d('0x1f')]?_[_0x182d('0x21')](_0x2f6145['include'],function(_0x2de9a4){return{'model':db[_0x2de9a4[_0x182d('0x22')]],'as':_0x2de9a4['as'],'attributes':_0x2de9a4['attributes'],'include':_0x2de9a4['include']?_[_0x182d('0x21')](_0x2de9a4[_0x182d('0x1f')],function(_0x26c868){return{'model':db[_0x26c868['model']],'as':_0x26c868['as'],'attributes':_0x26c868[_0x182d('0x20')]};}):[]};}):[]};}):[]:[]})[_0x182d('0xf')](function(_0x1c7906){logger[_0x182d('0x10')](_0x182d('0x24'),_0x36bd2d);logger[_0x182d('0x13')](_0x182d('0x24'),_0x36bd2d,JSON[_0x182d('0x14')](_0x1c7906));_0x13fde8(_0x1c7906);})[_0x182d('0x23')](function(_0x672e96){logger[_0x182d('0x15')](_0x182d('0x24'),_0x672e96[_0x182d('0x17')],_0x36bd2d);_0x1c5a5f(_0x213de8[_0x182d('0x15')](0x1f4,_0x672e96[_0x182d('0x17')]));});});};
\ No newline at end of file
index 02e7550..28f5cb8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0815=['./whatsappQueue.events','remove','update','emit','length','whatsappQueue:'];(function(_0x3efd37,_0x5dc424){var _0x4e7b11=function(_0xf6d404){while(--_0xf6d404){_0x3efd37['push'](_0x3efd37['shift']());}};_0x4e7b11(++_0x5dc424);}(_0x0815,0x150));var _0x5081=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x0815[_0x20a584];return _0x4b41a8;};'use strict';var WhatsappQueueEvents=require(_0x5081('0x0'));var events=['save',_0x5081('0x1'),_0x5081('0x2')];function createListener(_0x4262c6,_0x247bb2){return function(_0x562d8b){_0x247bb2[_0x5081('0x3')](_0x4262c6,_0x562d8b);};}function removeListener(_0xba1901,_0x406bf4){return function(){WhatsappQueueEvents['removeListener'](_0xba1901,_0x406bf4);};}exports['register']=function(_0x248890){for(var _0x51f13d=0x0,_0x38d8ca=events[_0x5081('0x4')];_0x51f13d<_0x38d8ca;_0x51f13d++){var _0x5dfec4=events[_0x51f13d];var _0x41068d=createListener(_0x5081('0x5')+_0x5dfec4,_0x248890);WhatsappQueueEvents['on'](_0x5dfec4,_0x41068d);}};
\ No newline at end of file
+var _0x2f22=['./whatsappQueue.events','remove','emit','register','length','whatsappQueue:'];(function(_0x275285,_0x22307e){var _0x3c12e3=function(_0x3e2a0f){while(--_0x3e2a0f){_0x275285['push'](_0x275285['shift']());}};_0x3c12e3(++_0x22307e);}(_0x2f22,0x120));var _0x22f2=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2f22[_0x3dd15e];return _0x231fd0;};'use strict';var WhatsappQueueEvents=require(_0x22f2('0x0'));var events=['save',_0x22f2('0x1'),'update'];function createListener(_0xaa7667,_0x53e9fd){return function(_0x57658f){_0x53e9fd[_0x22f2('0x2')](_0xaa7667,_0x57658f);};}function removeListener(_0xd08298,_0x2c673a){return function(){WhatsappQueueEvents['removeListener'](_0xd08298,_0x2c673a);};}exports[_0x22f2('0x3')]=function(_0x2acf24){for(var _0x149786=0x0,_0x30e501=events[_0x22f2('0x4')];_0x149786<_0x30e501;_0x149786++){var _0x225dc8=events[_0x149786];var _0x47b563=createListener(_0x22f2('0x5')+_0x225dc8,_0x2acf24);WhatsappQueueEvents['on'](_0x225dc8,_0x47b563);}};
\ No newline at end of file
index 3d4aa47..fae023d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb71=['connect-timeout','express','Router','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','path'];(function(_0x46b0ee,_0x4aa2b1){var _0x109fba=function(_0x37a041){while(--_0x37a041){_0x46b0ee['push'](_0x46b0ee['shift']());}};_0x109fba(++_0x4aa2b1);}(_0xfb71,0x178));var _0x1fb7=function(_0xd1bc4e,_0x410f38){_0xd1bc4e=_0xd1bc4e-0x0;var _0x475d6f=_0xfb71[_0xd1bc4e];return _0x475d6f;};'use strict';var multer=require(_0x1fb7('0x0'));var util=require('util');var path=require(_0x1fb7('0x1'));var timeout=require(_0x1fb7('0x2'));var express=require(_0x1fb7('0x3'));var router=express[_0x1fb7('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x1fb7('0x5'));var config=require(_0x1fb7('0x6'));var controller=require('./whatsappQueueReport.controller');router[_0x1fb7('0x7')]('/',auth[_0x1fb7('0x8')](),controller[_0x1fb7('0x9')]);router[_0x1fb7('0x7')](_0x1fb7('0xa'),auth['isAuthenticated'](),controller[_0x1fb7('0xb')]);router[_0x1fb7('0x7')](_0x1fb7('0xc'),auth[_0x1fb7('0x8')](),controller[_0x1fb7('0xd')]);router[_0x1fb7('0xe')]('/',auth['isAuthenticated'](),controller[_0x1fb7('0xf')]);router[_0x1fb7('0x10')](_0x1fb7('0xc'),auth[_0x1fb7('0x8')](),controller[_0x1fb7('0x11')]);router[_0x1fb7('0x12')](_0x1fb7('0xc'),auth[_0x1fb7('0x8')](),controller[_0x1fb7('0x13')]);module[_0x1fb7('0x14')]=router;
\ No newline at end of file
+var _0xdb6e=['show','post','create','put','delete','multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','get','index','isAuthenticated','describe','/:id'];(function(_0x3e205a,_0x268aa4){var _0x2092e0=function(_0x3e524e){while(--_0x3e524e){_0x3e205a['push'](_0x3e205a['shift']());}};_0x2092e0(++_0x268aa4);}(_0xdb6e,0x17b));var _0xedb6=function(_0x34271c,_0x28a8b){_0x34271c=_0x34271c-0x0;var _0x83585f=_0xdb6e[_0x34271c];return _0x83585f;};'use strict';var multer=require(_0xedb6('0x0'));var util=require(_0xedb6('0x1'));var path=require(_0xedb6('0x2'));var timeout=require('connect-timeout');var express=require(_0xedb6('0x3'));var router=express['Router']();var fs_extra=require(_0xedb6('0x4'));var auth=require(_0xedb6('0x5'));var interaction=require(_0xedb6('0x6'));var config=require('../../config/environment');var controller=require('./whatsappQueueReport.controller');router[_0xedb6('0x7')]('/',auth['isAuthenticated'](),controller[_0xedb6('0x8')]);router[_0xedb6('0x7')]('/describe',auth[_0xedb6('0x9')](),controller[_0xedb6('0xa')]);router[_0xedb6('0x7')](_0xedb6('0xb'),auth[_0xedb6('0x9')](),controller[_0xedb6('0xc')]);router[_0xedb6('0xd')]('/',auth[_0xedb6('0x9')](),controller[_0xedb6('0xe')]);router[_0xedb6('0xf')](_0xedb6('0xb'),auth[_0xedb6('0x9')](),controller['update']);router[_0xedb6('0x10')](_0xedb6('0xb'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 12682c6..edc162f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['STRING','DATE','sequelize','exports'];(function(_0x357cb0,_0x5b87e0){var _0x450d01=function(_0xdc36e5){while(--_0xdc36e5){_0x357cb0['push'](_0x357cb0['shift']());}};_0x450d01(++_0x5b87e0);}(_0x7a54,0x106));var _0x47a5=function(_0x2da75e,_0x10ee6c){_0x2da75e=_0x2da75e-0x0;var _0x44e077=_0x7a54[_0x2da75e];return _0x44e077;};'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(_0x30e112,_0x31790b){var _0x4380d5=function(_0x2261d3){while(--_0x2261d3){_0x30e112['push'](_0x30e112['shift']());}};_0x4380d5(++_0x31790b);}(_0x9957,0x93));var _0x7995=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x9957[_0x4cf98e];return _0x1623ac;};'use strict';var Sequelize=require(_0x7995('0x0'));module[_0x7995('0x1')]={'uniqueid':{'type':Sequelize[_0x7995('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x7995('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x7995('0x3')]},'acceptAt':{'type':Sequelize[_0x7995('0x3')]},'exitAt':{'type':Sequelize[_0x7995('0x3')]},'reason':{'type':Sequelize[_0x7995('0x2')]}};
\ No newline at end of file
index a6b3b97..2151f16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbdb7=['then','findAll','rows','catch','params','rawAttributes','length','include','options','find','create','body','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','fs-extra','lodash','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../mysqldb','end','json','offset','undefined','limit','count','status','set','Content-Range','apply','save','update','error','stack','name','send','index','map','WhatsappQueueReport','fieldName','type','key','model','query','keys','intersection','fields','attributes','hasOwnProperty','order','sort','where','filters','pick','merge'];(function(_0x3a60b8,_0x47caab){var _0x4eb583=function(_0x2251b5){while(--_0x2251b5){_0x3a60b8['push'](_0x3a60b8['shift']());}};_0x4eb583(++_0x47caab);}(_0xbdb7,0x12e));var _0x7bdb=function(_0x44caf2,_0x8ffb16){_0x44caf2=_0x44caf2-0x0;var _0x25978d=_0xbdb7[_0x44caf2];return _0x25978d;};'use strict';var emlformat=require(_0x7bdb('0x0'));var rimraf=require(_0x7bdb('0x1'));var zipdir=require(_0x7bdb('0x2'));var jsonpatch=require(_0x7bdb('0x3'));var rp=require(_0x7bdb('0x4'));var moment=require(_0x7bdb('0x5'));var BPromise=require(_0x7bdb('0x6'));var Mustache=require(_0x7bdb('0x7'));var util=require(_0x7bdb('0x8'));var path=require('path');var sox=require(_0x7bdb('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7bdb('0xa'));var _=require(_0x7bdb('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x7bdb('0xc'));var deskjs=require(_0x7bdb('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x7bdb('0xe'));var Redis=require(_0x7bdb('0xf'));var authService=require(_0x7bdb('0x10'));var qs=require(_0x7bdb('0x11'));var as=require(_0x7bdb('0x12'));var hardwareService=require(_0x7bdb('0x13'));var logger=require(_0x7bdb('0x14'))(_0x7bdb('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x7bdb('0x16'))['db'];function respondWithStatusCode(_0x25e3cb,_0x496613){_0x496613=_0x496613||0xcc;return function(_0x8d74ff){if(_0x8d74ff){return _0x25e3cb['sendStatus'](_0x496613);}return _0x25e3cb['status'](_0x496613)[_0x7bdb('0x17')]();};}function respondWithResult(_0x46dd4a,_0x4fd91a){_0x4fd91a=_0x4fd91a||0xc8;return function(_0x50eeca){if(_0x50eeca){return _0x46dd4a['status'](_0x4fd91a)[_0x7bdb('0x18')](_0x50eeca);}};}function respondWithFilteredResult(_0x195b2e,_0xe9919f){return function(_0x25d417){if(_0x25d417){var _0x31c909=typeof _0xe9919f[_0x7bdb('0x19')]===_0x7bdb('0x1a')&&typeof _0xe9919f[_0x7bdb('0x1b')]==='undefined';var _0x1c5750=_0x25d417[_0x7bdb('0x1c')];var _0x5723f4=_0x31c909?0x0:_0xe9919f[_0x7bdb('0x19')];var _0x4ffd4b=_0x31c909?_0x25d417[_0x7bdb('0x1c')]:_0xe9919f[_0x7bdb('0x19')]+_0xe9919f['limit'];var _0x3e5f8e;if(_0x4ffd4b>=_0x1c5750){_0x4ffd4b=_0x1c5750;_0x3e5f8e=0xc8;}else{_0x3e5f8e=0xce;}_0x195b2e[_0x7bdb('0x1d')](_0x3e5f8e);return _0x195b2e[_0x7bdb('0x1e')](_0x7bdb('0x1f'),_0x5723f4+'-'+_0x4ffd4b+'/'+_0x1c5750)[_0x7bdb('0x18')](_0x25d417);}return null;};}function patchUpdates(_0x5bfc35){return function(_0x49f353){try{jsonpatch[_0x7bdb('0x20')](_0x49f353,_0x5bfc35,!![]);}catch(_0xcb25f2){return BPromise['reject'](_0xcb25f2);}return _0x49f353[_0x7bdb('0x21')]();};}function saveUpdates(_0x118ea1,_0x346c72){return function(_0x3f53e7){if(_0x3f53e7){return _0x3f53e7[_0x7bdb('0x22')](_0x118ea1)['then'](function(_0x1d37ac){return _0x1d37ac;});}return null;};}function removeEntity(_0xdad53d,_0x40c447){return function(_0x3a456f){if(_0x3a456f){return _0x3a456f['destroy']()['then'](function(){_0xdad53d[_0x7bdb('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x47abaf,_0x4a9e02){return function(_0x2abef6){if(!_0x2abef6){_0x47abaf['sendStatus'](0x194);}return _0x2abef6;};}function handleError(_0x2b14bc,_0x72ba69){_0x72ba69=_0x72ba69||0x1f4;return function(_0x3ec129){logger[_0x7bdb('0x23')](_0x3ec129[_0x7bdb('0x24')]);if(_0x3ec129['name']){delete _0x3ec129[_0x7bdb('0x25')];}_0x2b14bc[_0x7bdb('0x1d')](_0x72ba69)[_0x7bdb('0x26')](_0x3ec129);};}exports[_0x7bdb('0x27')]=function(_0x371e8a,_0x2e8e65){var _0x1e9996={},_0xd2d7be={},_0x25a1fe={'count':0x0,'rows':[]};var _0x365c02=_[_0x7bdb('0x28')](db[_0x7bdb('0x29')]['rawAttributes'],function(_0x388a45){return{'name':_0x388a45[_0x7bdb('0x2a')],'type':_0x388a45[_0x7bdb('0x2b')][_0x7bdb('0x2c')]};});_0xd2d7be[_0x7bdb('0x2d')]=_['map'](_0x365c02,_0x7bdb('0x25'));_0xd2d7be[_0x7bdb('0x2e')]=_[_0x7bdb('0x2f')](_0x371e8a[_0x7bdb('0x2e')]);_0xd2d7be['filters']=_['intersection'](_0xd2d7be['model'],_0xd2d7be[_0x7bdb('0x2e')]);_0x1e9996['attributes']=_[_0x7bdb('0x30')](_0xd2d7be['model'],qs[_0x7bdb('0x31')](_0x371e8a[_0x7bdb('0x2e')][_0x7bdb('0x31')]));_0x1e9996['attributes']=_0x1e9996[_0x7bdb('0x32')]['length']?_0x1e9996['attributes']:_0xd2d7be[_0x7bdb('0x2d')];if(!_0x371e8a['query'][_0x7bdb('0x33')]('nolimit')){_0x1e9996['limit']=qs[_0x7bdb('0x1b')](_0x371e8a[_0x7bdb('0x2e')][_0x7bdb('0x1b')]);_0x1e9996[_0x7bdb('0x19')]=qs[_0x7bdb('0x19')](_0x371e8a[_0x7bdb('0x2e')]['offset']);}_0x1e9996[_0x7bdb('0x34')]=qs[_0x7bdb('0x35')](_0x371e8a[_0x7bdb('0x2e')][_0x7bdb('0x35')]);_0x1e9996[_0x7bdb('0x36')]=qs[_0x7bdb('0x37')](_[_0x7bdb('0x38')](_0x371e8a[_0x7bdb('0x2e')],_0xd2d7be[_0x7bdb('0x37')]),_0x365c02);if(_0x371e8a['query']['filter']){_0x1e9996[_0x7bdb('0x36')]=_[_0x7bdb('0x39')](_0x1e9996[_0x7bdb('0x36')],{'$or':_[_0x7bdb('0x28')](_0x365c02,function(_0x3732b2){if(_0x3732b2['type']!=='VIRTUAL'){var _0x27164f={};_0x27164f[_0x3732b2['name']]={'$like':'%'+_0x371e8a[_0x7bdb('0x2e')]['filter']+'%'};return _0x27164f;}})});}_0x1e9996=_[_0x7bdb('0x39')]({},_0x1e9996,_0x371e8a['options']);var _0x4cf3fa={'where':_0x1e9996[_0x7bdb('0x36')]};return db[_0x7bdb('0x29')][_0x7bdb('0x1c')](_0x4cf3fa)[_0x7bdb('0x3a')](function(_0x43c7d3){_0x25a1fe[_0x7bdb('0x1c')]=_0x43c7d3;if(_0x371e8a[_0x7bdb('0x2e')]['includeAll']){_0x1e9996['include']=[{'all':!![]}];}return db[_0x7bdb('0x29')][_0x7bdb('0x3b')](_0x1e9996);})[_0x7bdb('0x3a')](function(_0x3509e4){_0x25a1fe[_0x7bdb('0x3c')]=_0x3509e4;return _0x25a1fe;})[_0x7bdb('0x3a')](respondWithFilteredResult(_0x2e8e65,_0x1e9996))[_0x7bdb('0x3d')](handleError(_0x2e8e65,null));};exports['show']=function(_0x4a2ebc,_0x1bcbcd){var _0x8e893e={'raw':!![],'where':{'id':_0x4a2ebc[_0x7bdb('0x3e')]['id']}},_0x4636f8={};_0x4636f8['model']=_[_0x7bdb('0x2f')](db['WhatsappQueueReport'][_0x7bdb('0x3f')]);_0x4636f8[_0x7bdb('0x2e')]=_[_0x7bdb('0x2f')](_0x4a2ebc[_0x7bdb('0x2e')]);_0x4636f8[_0x7bdb('0x37')]=_[_0x7bdb('0x30')](_0x4636f8[_0x7bdb('0x2d')],_0x4636f8[_0x7bdb('0x2e')]);_0x8e893e[_0x7bdb('0x32')]=_['intersection'](_0x4636f8[_0x7bdb('0x2d')],qs[_0x7bdb('0x31')](_0x4a2ebc['query'][_0x7bdb('0x31')]));_0x8e893e['attributes']=_0x8e893e[_0x7bdb('0x32')][_0x7bdb('0x40')]?_0x8e893e[_0x7bdb('0x32')]:_0x4636f8[_0x7bdb('0x2d')];if(_0x4a2ebc[_0x7bdb('0x2e')]['includeAll']){_0x8e893e[_0x7bdb('0x41')]=[{'all':!![]}];}_0x8e893e=_[_0x7bdb('0x39')]({},_0x8e893e,_0x4a2ebc[_0x7bdb('0x42')]);return db[_0x7bdb('0x29')][_0x7bdb('0x43')](_0x8e893e)['then'](handleEntityNotFound(_0x1bcbcd,null))[_0x7bdb('0x3a')](respondWithResult(_0x1bcbcd,null))[_0x7bdb('0x3d')](handleError(_0x1bcbcd,null));};exports[_0x7bdb('0x44')]=function(_0xb26a9,_0x259007){return db[_0x7bdb('0x29')][_0x7bdb('0x44')](_0xb26a9[_0x7bdb('0x45')],{})[_0x7bdb('0x3a')](respondWithResult(_0x259007,0xc9))[_0x7bdb('0x3d')](handleError(_0x259007,null));};exports['update']=function(_0x189cf8,_0x58c4bc){if(_0x189cf8['body']['id']){delete _0x189cf8[_0x7bdb('0x45')]['id'];}return db[_0x7bdb('0x29')]['find']({'where':{'id':_0x189cf8[_0x7bdb('0x3e')]['id']}})[_0x7bdb('0x3a')](handleEntityNotFound(_0x58c4bc,null))['then'](saveUpdates(_0x189cf8['body'],null))['then'](respondWithResult(_0x58c4bc,null))[_0x7bdb('0x3d')](handleError(_0x58c4bc,null));};exports[_0x7bdb('0x46')]=function(_0x2fab74,_0x46410c){return db[_0x7bdb('0x29')][_0x7bdb('0x43')]({'where':{'id':_0x2fab74[_0x7bdb('0x3e')]['id']}})[_0x7bdb('0x3a')](handleEntityNotFound(_0x46410c,null))[_0x7bdb('0x3a')](removeEntity(_0x46410c,null))[_0x7bdb('0x3d')](handleError(_0x46410c,null));};exports['describe']=function(_0x299ef0,_0x4806e0){return db[_0x7bdb('0x29')][_0x7bdb('0x47')]()[_0x7bdb('0x3a')](respondWithResult(_0x4806e0,null))[_0x7bdb('0x3d')](handleError(_0x4806e0,null));};
\ No newline at end of file
+var _0x6cb4=['apply','reject','save','update','then','stack','name','send','index','map','WhatsappQueueReport','fieldName','key','model','query','keys','filters','intersection','fields','attributes','nolimit','order','sort','where','filter','merge','includeAll','rows','catch','show','params','rawAttributes','length','options','find','create','body','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../mysqldb','status','end','json','undefined','offset','count','limit','set','Content-Range'];(function(_0x309385,_0x3ab38f){var _0x45b0f5=function(_0x4fa7e0){while(--_0x4fa7e0){_0x309385['push'](_0x309385['shift']());}};_0x45b0f5(++_0x3ab38f);}(_0x6cb4,0xff));var _0x46cb=function(_0x5bbfdc,_0x19691f){_0x5bbfdc=_0x5bbfdc-0x0;var _0x2f287e=_0x6cb4[_0x5bbfdc];return _0x2f287e;};'use strict';var emlformat=require(_0x46cb('0x0'));var rimraf=require(_0x46cb('0x1'));var zipdir=require(_0x46cb('0x2'));var jsonpatch=require(_0x46cb('0x3'));var rp=require(_0x46cb('0x4'));var moment=require(_0x46cb('0x5'));var BPromise=require(_0x46cb('0x6'));var Mustache=require(_0x46cb('0x7'));var util=require(_0x46cb('0x8'));var path=require('path');var sox=require(_0x46cb('0x9'));var csv=require('to-csv');var ejs=require(_0x46cb('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x46cb('0xb'));var squel=require(_0x46cb('0xc'));var crypto=require(_0x46cb('0xd'));var jsforce=require(_0x46cb('0xe'));var deskjs=require(_0x46cb('0xf'));var toCsv=require(_0x46cb('0x10'));var querystring=require('querystring');var Papa=require(_0x46cb('0x11'));var Redis=require(_0x46cb('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x46cb('0x13'));var as=require(_0x46cb('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x46cb('0x15'))(_0x46cb('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x46cb('0x17'))['db'];function respondWithStatusCode(_0x323ac2,_0x1058a8){_0x1058a8=_0x1058a8||0xcc;return function(_0xf22158){if(_0xf22158){return _0x323ac2['sendStatus'](_0x1058a8);}return _0x323ac2[_0x46cb('0x18')](_0x1058a8)[_0x46cb('0x19')]();};}function respondWithResult(_0x2a1f9d,_0x3c0071){_0x3c0071=_0x3c0071||0xc8;return function(_0x1f7150){if(_0x1f7150){return _0x2a1f9d[_0x46cb('0x18')](_0x3c0071)[_0x46cb('0x1a')](_0x1f7150);}};}function respondWithFilteredResult(_0x3c396b,_0x37d368){return function(_0x41e398){if(_0x41e398){var _0x136215=typeof _0x37d368['offset']===_0x46cb('0x1b')&&typeof _0x37d368['limit']===_0x46cb('0x1b');var _0x4ab22b=_0x41e398['count'];var _0x4e3454=_0x136215?0x0:_0x37d368[_0x46cb('0x1c')];var _0x1f2891=_0x136215?_0x41e398[_0x46cb('0x1d')]:_0x37d368[_0x46cb('0x1c')]+_0x37d368[_0x46cb('0x1e')];var _0x26e38d;if(_0x1f2891>=_0x4ab22b){_0x1f2891=_0x4ab22b;_0x26e38d=0xc8;}else{_0x26e38d=0xce;}_0x3c396b[_0x46cb('0x18')](_0x26e38d);return _0x3c396b[_0x46cb('0x1f')](_0x46cb('0x20'),_0x4e3454+'-'+_0x1f2891+'/'+_0x4ab22b)[_0x46cb('0x1a')](_0x41e398);}return null;};}function patchUpdates(_0x149483){return function(_0x46e541){try{jsonpatch[_0x46cb('0x21')](_0x46e541,_0x149483,!![]);}catch(_0x2f438b){return BPromise[_0x46cb('0x22')](_0x2f438b);}return _0x46e541[_0x46cb('0x23')]();};}function saveUpdates(_0x7084b2,_0x1fb467){return function(_0x41ecd2){if(_0x41ecd2){return _0x41ecd2[_0x46cb('0x24')](_0x7084b2)[_0x46cb('0x25')](function(_0x1e9e38){return _0x1e9e38;});}return null;};}function removeEntity(_0x309e4b,_0xadcad6){return function(_0x40e0e5){if(_0x40e0e5){return _0x40e0e5['destroy']()['then'](function(){_0x309e4b[_0x46cb('0x18')](0xcc)[_0x46cb('0x19')]();});}};}function handleEntityNotFound(_0x2711ac,_0xe078a8){return function(_0x6e6d9){if(!_0x6e6d9){_0x2711ac['sendStatus'](0x194);}return _0x6e6d9;};}function handleError(_0xc5a9a4,_0x578ffd){_0x578ffd=_0x578ffd||0x1f4;return function(_0x495886){logger['error'](_0x495886[_0x46cb('0x26')]);if(_0x495886[_0x46cb('0x27')]){delete _0x495886[_0x46cb('0x27')];}_0xc5a9a4[_0x46cb('0x18')](_0x578ffd)[_0x46cb('0x28')](_0x495886);};}exports[_0x46cb('0x29')]=function(_0x378dc7,_0x8c65b2){var _0x2b846a={},_0x12e01e={},_0x4620ef={'count':0x0,'rows':[]};var _0x4a1517=_[_0x46cb('0x2a')](db[_0x46cb('0x2b')]['rawAttributes'],function(_0x49e0bc){return{'name':_0x49e0bc[_0x46cb('0x2c')],'type':_0x49e0bc['type'][_0x46cb('0x2d')]};});_0x12e01e[_0x46cb('0x2e')]=_[_0x46cb('0x2a')](_0x4a1517,_0x46cb('0x27'));_0x12e01e[_0x46cb('0x2f')]=_[_0x46cb('0x30')](_0x378dc7['query']);_0x12e01e[_0x46cb('0x31')]=_['intersection'](_0x12e01e[_0x46cb('0x2e')],_0x12e01e[_0x46cb('0x2f')]);_0x2b846a['attributes']=_[_0x46cb('0x32')](_0x12e01e[_0x46cb('0x2e')],qs[_0x46cb('0x33')](_0x378dc7[_0x46cb('0x2f')][_0x46cb('0x33')]));_0x2b846a['attributes']=_0x2b846a[_0x46cb('0x34')]['length']?_0x2b846a[_0x46cb('0x34')]:_0x12e01e[_0x46cb('0x2e')];if(!_0x378dc7[_0x46cb('0x2f')]['hasOwnProperty'](_0x46cb('0x35'))){_0x2b846a[_0x46cb('0x1e')]=qs['limit'](_0x378dc7[_0x46cb('0x2f')][_0x46cb('0x1e')]);_0x2b846a[_0x46cb('0x1c')]=qs[_0x46cb('0x1c')](_0x378dc7[_0x46cb('0x2f')][_0x46cb('0x1c')]);}_0x2b846a[_0x46cb('0x36')]=qs[_0x46cb('0x37')](_0x378dc7[_0x46cb('0x2f')][_0x46cb('0x37')]);_0x2b846a[_0x46cb('0x38')]=qs['filters'](_['pick'](_0x378dc7['query'],_0x12e01e[_0x46cb('0x31')]),_0x4a1517);if(_0x378dc7[_0x46cb('0x2f')][_0x46cb('0x39')]){_0x2b846a[_0x46cb('0x38')]=_[_0x46cb('0x3a')](_0x2b846a[_0x46cb('0x38')],{'$or':_['map'](_0x4a1517,function(_0x1f2e11){if(_0x1f2e11['type']!=='VIRTUAL'){var _0x173fac={};_0x173fac[_0x1f2e11['name']]={'$like':'%'+_0x378dc7['query'][_0x46cb('0x39')]+'%'};return _0x173fac;}})});}_0x2b846a=_['merge']({},_0x2b846a,_0x378dc7['options']);var _0x67bd14={'where':_0x2b846a[_0x46cb('0x38')]};return db[_0x46cb('0x2b')][_0x46cb('0x1d')](_0x67bd14)[_0x46cb('0x25')](function(_0x4075b4){_0x4620ef[_0x46cb('0x1d')]=_0x4075b4;if(_0x378dc7['query'][_0x46cb('0x3b')]){_0x2b846a['include']=[{'all':!![]}];}return db[_0x46cb('0x2b')]['findAll'](_0x2b846a);})[_0x46cb('0x25')](function(_0x2fbad9){_0x4620ef[_0x46cb('0x3c')]=_0x2fbad9;return _0x4620ef;})['then'](respondWithFilteredResult(_0x8c65b2,_0x2b846a))[_0x46cb('0x3d')](handleError(_0x8c65b2,null));};exports[_0x46cb('0x3e')]=function(_0x4d24b6,_0x18be96){var _0x3d0b83={'raw':!![],'where':{'id':_0x4d24b6[_0x46cb('0x3f')]['id']}},_0x1f67af={};_0x1f67af[_0x46cb('0x2e')]=_['keys'](db['WhatsappQueueReport'][_0x46cb('0x40')]);_0x1f67af['query']=_[_0x46cb('0x30')](_0x4d24b6[_0x46cb('0x2f')]);_0x1f67af['filters']=_[_0x46cb('0x32')](_0x1f67af[_0x46cb('0x2e')],_0x1f67af[_0x46cb('0x2f')]);_0x3d0b83['attributes']=_['intersection'](_0x1f67af['model'],qs['fields'](_0x4d24b6[_0x46cb('0x2f')][_0x46cb('0x33')]));_0x3d0b83[_0x46cb('0x34')]=_0x3d0b83[_0x46cb('0x34')][_0x46cb('0x41')]?_0x3d0b83['attributes']:_0x1f67af['model'];if(_0x4d24b6[_0x46cb('0x2f')][_0x46cb('0x3b')]){_0x3d0b83['include']=[{'all':!![]}];}_0x3d0b83=_[_0x46cb('0x3a')]({},_0x3d0b83,_0x4d24b6[_0x46cb('0x42')]);return db[_0x46cb('0x2b')][_0x46cb('0x43')](_0x3d0b83)[_0x46cb('0x25')](handleEntityNotFound(_0x18be96,null))[_0x46cb('0x25')](respondWithResult(_0x18be96,null))[_0x46cb('0x3d')](handleError(_0x18be96,null));};exports['create']=function(_0x58c69f,_0x449593){return db['WhatsappQueueReport'][_0x46cb('0x44')](_0x58c69f[_0x46cb('0x45')],{})[_0x46cb('0x25')](respondWithResult(_0x449593,0xc9))['catch'](handleError(_0x449593,null));};exports[_0x46cb('0x24')]=function(_0x5c1665,_0x5c02c9){if(_0x5c1665[_0x46cb('0x45')]['id']){delete _0x5c1665[_0x46cb('0x45')]['id'];}return db[_0x46cb('0x2b')][_0x46cb('0x43')]({'where':{'id':_0x5c1665[_0x46cb('0x3f')]['id']}})[_0x46cb('0x25')](handleEntityNotFound(_0x5c02c9,null))[_0x46cb('0x25')](saveUpdates(_0x5c1665['body'],null))['then'](respondWithResult(_0x5c02c9,null))[_0x46cb('0x3d')](handleError(_0x5c02c9,null));};exports[_0x46cb('0x46')]=function(_0x52e479,_0x34399d){return db[_0x46cb('0x2b')][_0x46cb('0x43')]({'where':{'id':_0x52e479[_0x46cb('0x3f')]['id']}})[_0x46cb('0x25')](handleEntityNotFound(_0x34399d,null))['then'](removeEntity(_0x34399d,null))[_0x46cb('0x3d')](handleError(_0x34399d,null));};exports[_0x46cb('0x47')]=function(_0x20cf6d,_0x52d1a7){return db[_0x46cb('0x2b')]['describe']()['then'](respondWithResult(_0x52d1a7,null))[_0x46cb('0x3d')](handleError(_0x52d1a7,null));};
\ No newline at end of file
index 4d4a4bb..9b76728 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb60=['define','report_whatsapp_queue','uniqueid','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./whatsappQueueReport.attributes','exports'];(function(_0x528fd5,_0x116c22){var _0x43f1f8=function(_0x4e2af8){while(--_0x4e2af8){_0x528fd5['push'](_0x528fd5['shift']());}};_0x43f1f8(++_0x116c22);}(_0xcb60,0xf1));var _0x0cb6=function(_0x273c39,_0x1052e6){_0x273c39=_0x273c39-0x0;var _0x46d6b5=_0xcb60[_0x273c39];return _0x46d6b5;};'use strict';var _=require('lodash');var util=require(_0x0cb6('0x0'));var logger=require(_0x0cb6('0x1'))(_0x0cb6('0x2'));var moment=require(_0x0cb6('0x3'));var BPromise=require(_0x0cb6('0x4'));var rp=require(_0x0cb6('0x5'));var fs=require('fs');var path=require(_0x0cb6('0x6'));var rimraf=require(_0x0cb6('0x7'));var config=require(_0x0cb6('0x8'));var attributes=require(_0x0cb6('0x9'));module[_0x0cb6('0xa')]=function(_0x59f6c7,_0xf2f463){return _0x59f6c7[_0x0cb6('0xb')]('WhatsappQueueReport',attributes,{'tableName':_0x0cb6('0xc'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x0cb6('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3f47=['../../config/logger','moment','bluebird','request-promise','path','../../config/environment','exports','define','WhatsappQueueReport','report_whatsapp_queue','uniqueid','lodash'];(function(_0xf50820,_0x56f041){var _0x2a9b10=function(_0x33f0f4){while(--_0x33f0f4){_0xf50820['push'](_0xf50820['shift']());}};_0x2a9b10(++_0x56f041);}(_0x3f47,0xcb));var _0x73f4=function(_0x4a5b13,_0x43d46){_0x4a5b13=_0x4a5b13-0x0;var _0xc627dd=_0x3f47[_0x4a5b13];return _0xc627dd;};'use strict';var _=require(_0x73f4('0x0'));var util=require('util');var logger=require(_0x73f4('0x1'))('api');var moment=require(_0x73f4('0x2'));var BPromise=require(_0x73f4('0x3'));var rp=require(_0x73f4('0x4'));var fs=require('fs');var path=require(_0x73f4('0x5'));var rimraf=require('rimraf');var config=require(_0x73f4('0x6'));var attributes=require('./whatsappQueueReport.attributes');module[_0x73f4('0x7')]=function(_0x584944,_0x402b93){return _0x584944[_0x73f4('0x8')](_0x73f4('0x9'),attributes,{'tableName':_0x73f4('0xa'),'paranoid':![],'indexes':[{'name':_0x73f4('0xb'),'fields':[_0x73f4('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 4919360..ae46a8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b4a=['code','message','WhatsappQueueReport','create','options','raw','CreateWhatsappQueueReport','debug','catch','UpdateWhatsappQueueReport','update','body','attributes','limit','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','then','info','WhatsappQueueReport,\x20%s,\x20%s','WhatsappQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x2b9bcd,_0x503a87){var _0x474bc9=function(_0x43cca1){while(--_0x43cca1){_0x2b9bcd['push'](_0x2b9bcd['shift']());}};_0x474bc9(++_0x503a87);}(_0x2b4a,0x1ae));var _0xa2b4=function(_0x1477ef,_0x54a5d6){_0x1477ef=_0x1477ef-0x0;var _0x164acd=_0x2b4a[_0x1477ef];return _0x164acd;};'use strict';var _=require(_0xa2b4('0x0'));var util=require(_0xa2b4('0x1'));var moment=require(_0xa2b4('0x2'));var BPromise=require(_0xa2b4('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa2b4('0x4'));var db=require(_0xa2b4('0x5'))['db'];var utils=require(_0xa2b4('0x6'));var logger=require(_0xa2b4('0x7'))(_0xa2b4('0x8'));var config=require('../../config/environment');var jayson=require(_0xa2b4('0x9'));var client=jayson['client'][_0xa2b4('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4d073a,_0x2992bf,_0x441ab7){return new BPromise(function(_0x2bada6,_0x208859){return client['request'](_0x4d073a,_0x441ab7)[_0xa2b4('0xb')](function(_0x58ebc2){logger[_0xa2b4('0xc')](_0xa2b4('0xd'),_0x2992bf,'request\x20sent');logger['debug'](_0xa2b4('0xe'),_0x2992bf,_0xa2b4('0xf'),JSON[_0xa2b4('0x10')](_0x58ebc2));if(_0x58ebc2[_0xa2b4('0x11')]){if(_0x58ebc2['error'][_0xa2b4('0x12')]===0x1f4){logger[_0xa2b4('0x11')](_0xa2b4('0xd'),_0x2992bf,_0x58ebc2['error'][_0xa2b4('0x13')]);return _0x208859(_0x58ebc2[_0xa2b4('0x11')][_0xa2b4('0x13')]);}logger[_0xa2b4('0x11')](_0xa2b4('0xd'),_0x2992bf,_0x58ebc2[_0xa2b4('0x11')][_0xa2b4('0x13')]);return _0x2bada6(_0x58ebc2[_0xa2b4('0x11')][_0xa2b4('0x13')]);}else{logger[_0xa2b4('0xc')]('WhatsappQueueReport,\x20%s,\x20%s',_0x2992bf,'request\x20sent');_0x2bada6(_0x58ebc2['result'][_0xa2b4('0x13')]);}})['catch'](function(_0x2dcc9f){logger[_0xa2b4('0x11')](_0xa2b4('0xd'),_0x2992bf,_0x2dcc9f);_0x208859(_0x2dcc9f);});});}exports['CreateWhatsappQueueReport']=function(_0x1ba253){var _0x4c4703=this;return new Promise(function(_0x1fb501,_0x174ee4){return db[_0xa2b4('0x14')][_0xa2b4('0x15')](_0x1ba253['body'],{'raw':_0x1ba253[_0xa2b4('0x16')]?_0x1ba253[_0xa2b4('0x16')][_0xa2b4('0x17')]===undefined?!![]:![]:!![]})['then'](function(_0x5b5a7d){logger[_0xa2b4('0xc')](_0xa2b4('0x18'),_0x1ba253);logger[_0xa2b4('0x19')](_0xa2b4('0x18'),_0x1ba253,JSON[_0xa2b4('0x10')](_0x5b5a7d));_0x1fb501(_0x5b5a7d);})[_0xa2b4('0x1a')](function(_0x2dc1af){logger['error'](_0xa2b4('0x18'),_0x2dc1af[_0xa2b4('0x13')],_0x1ba253);_0x174ee4(_0x4c4703[_0xa2b4('0x11')](0x1f4,_0x2dc1af[_0xa2b4('0x13')]));});});};exports[_0xa2b4('0x1b')]=function(_0x23294b){var _0x144bf0=this;return new Promise(function(_0x3545c6,_0x1b3af6){return db[_0xa2b4('0x14')][_0xa2b4('0x1c')](_0x23294b[_0xa2b4('0x1d')],{'raw':_0x23294b['options']?_0x23294b[_0xa2b4('0x16')][_0xa2b4('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x23294b[_0xa2b4('0x16')]?_0x23294b[_0xa2b4('0x16')]['where']||null:null,'attributes':_0x23294b['options']?_0x23294b[_0xa2b4('0x16')][_0xa2b4('0x1e')]||null:null,'limit':_0x23294b[_0xa2b4('0x16')]?_0x23294b[_0xa2b4('0x16')][_0xa2b4('0x1f')]||null:null})[_0xa2b4('0xb')](function(_0x3f52d1){logger[_0xa2b4('0xc')]('UpdateWhatsappQueueReport',_0x23294b);logger[_0xa2b4('0x19')]('UpdateWhatsappQueueReport',_0x23294b,JSON['stringify'](_0x3f52d1));_0x3545c6(_0x3f52d1);})['catch'](function(_0x515389){logger['error'](_0xa2b4('0x1b'),_0x515389['message'],_0x23294b);_0x1b3af6(_0x144bf0[_0xa2b4('0x11')](0x1f4,_0x515389[_0xa2b4('0x13')]));});});};
\ No newline at end of file
+var _0x8cb3=['jayson/promise','request','then','info','WhatsappQueueReport,\x20%s,\x20%s','request\x20sent','WhatsappQueueReport,\x20%s,\x20%s,\x20%s','error','code','message','catch','CreateWhatsappQueueReport','options','debug','UpdateWhatsappQueueReport','update','body','raw','where','attributes','limit','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x53e3bf,_0x547106){var _0x59b198=function(_0x329bb4){while(--_0x329bb4){_0x53e3bf['push'](_0x53e3bf['shift']());}};_0x59b198(++_0x547106);}(_0x8cb3,0x76));var _0x38cb=function(_0x3567d6,_0x33e4e3){_0x3567d6=_0x3567d6-0x0;var _0x20a3f4=_0x8cb3[_0x3567d6];return _0x20a3f4;};'use strict';var _=require(_0x38cb('0x0'));var util=require(_0x38cb('0x1'));var moment=require(_0x38cb('0x2'));var BPromise=require(_0x38cb('0x3'));var rs=require(_0x38cb('0x4'));var fs=require('fs');var Redis=require(_0x38cb('0x5'));var db=require(_0x38cb('0x6'))['db'];var utils=require(_0x38cb('0x7'));var logger=require(_0x38cb('0x8'))(_0x38cb('0x9'));var config=require('../../config/environment');var jayson=require(_0x38cb('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x57c8fa,_0x1adae7,_0x4f06af){return new BPromise(function(_0x4498d7,_0x2c1d64){return client[_0x38cb('0xb')](_0x57c8fa,_0x4f06af)[_0x38cb('0xc')](function(_0x5285af){logger[_0x38cb('0xd')](_0x38cb('0xe'),_0x1adae7,_0x38cb('0xf'));logger['debug'](_0x38cb('0x10'),_0x1adae7,_0x38cb('0xf'),JSON['stringify'](_0x5285af));if(_0x5285af[_0x38cb('0x11')]){if(_0x5285af[_0x38cb('0x11')][_0x38cb('0x12')]===0x1f4){logger[_0x38cb('0x11')](_0x38cb('0xe'),_0x1adae7,_0x5285af[_0x38cb('0x11')][_0x38cb('0x13')]);return _0x2c1d64(_0x5285af[_0x38cb('0x11')]['message']);}logger['error']('WhatsappQueueReport,\x20%s,\x20%s',_0x1adae7,_0x5285af[_0x38cb('0x11')][_0x38cb('0x13')]);return _0x4498d7(_0x5285af[_0x38cb('0x11')][_0x38cb('0x13')]);}else{logger[_0x38cb('0xd')](_0x38cb('0xe'),_0x1adae7,_0x38cb('0xf'));_0x4498d7(_0x5285af['result']['message']);}})[_0x38cb('0x14')](function(_0x18e1ec){logger['error']('WhatsappQueueReport,\x20%s,\x20%s',_0x1adae7,_0x18e1ec);_0x2c1d64(_0x18e1ec);});});}exports[_0x38cb('0x15')]=function(_0x320c41){var _0x52390b=this;return new Promise(function(_0x22dc5b,_0x57026e){return db['WhatsappQueueReport']['create'](_0x320c41['body'],{'raw':_0x320c41[_0x38cb('0x16')]?_0x320c41[_0x38cb('0x16')]['raw']===undefined?!![]:![]:!![]})[_0x38cb('0xc')](function(_0xaf7f90){logger['info'](_0x38cb('0x15'),_0x320c41);logger[_0x38cb('0x17')](_0x38cb('0x15'),_0x320c41,JSON['stringify'](_0xaf7f90));_0x22dc5b(_0xaf7f90);})[_0x38cb('0x14')](function(_0x4516da){logger[_0x38cb('0x11')]('CreateWhatsappQueueReport',_0x4516da[_0x38cb('0x13')],_0x320c41);_0x57026e(_0x52390b[_0x38cb('0x11')](0x1f4,_0x4516da[_0x38cb('0x13')]));});});};exports[_0x38cb('0x18')]=function(_0x4c4c74){var _0x5e844d=this;return new Promise(function(_0x96355,_0x31f1a1){return db['WhatsappQueueReport'][_0x38cb('0x19')](_0x4c4c74[_0x38cb('0x1a')],{'raw':_0x4c4c74[_0x38cb('0x16')]?_0x4c4c74[_0x38cb('0x16')][_0x38cb('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4c4c74[_0x38cb('0x16')]?_0x4c4c74['options'][_0x38cb('0x1c')]||null:null,'attributes':_0x4c4c74[_0x38cb('0x16')]?_0x4c4c74[_0x38cb('0x16')][_0x38cb('0x1d')]||null:null,'limit':_0x4c4c74[_0x38cb('0x16')]?_0x4c4c74['options'][_0x38cb('0x1e')]||null:null})[_0x38cb('0xc')](function(_0x3623d8){logger[_0x38cb('0xd')](_0x38cb('0x18'),_0x4c4c74);logger[_0x38cb('0x17')](_0x38cb('0x18'),_0x4c4c74,JSON[_0x38cb('0x1f')](_0x3623d8));_0x96355(_0x3623d8);})[_0x38cb('0x14')](function(_0x49af2c){logger['error'](_0x38cb('0x18'),_0x49af2c['message'],_0x4c4c74);_0x31f1a1(_0x5e844d['error'](0x1f4,_0x49af2c[_0x38cb('0x13')]));});});};
\ No newline at end of file
index 65855f1..ad960e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1808=['../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappTransferReport.controller','get','isAuthenticated','/describe','describe','show','post','create','put','delete','/:id','destroy','exports','multer','path','connect-timeout','express','Router'];(function(_0x435b4e,_0x158fe1){var _0x4349b5=function(_0xac48b2){while(--_0xac48b2){_0x435b4e['push'](_0x435b4e['shift']());}};_0x4349b5(++_0x158fe1);}(_0x1808,0xf7));var _0x8180=function(_0xaadc70,_0x2c050d){_0xaadc70=_0xaadc70-0x0;var _0x3ac647=_0x1808[_0xaadc70];return _0x3ac647;};'use strict';var multer=require(_0x8180('0x0'));var util=require('util');var path=require(_0x8180('0x1'));var timeout=require(_0x8180('0x2'));var express=require(_0x8180('0x3'));var router=express[_0x8180('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x8180('0x5'));var interaction=require(_0x8180('0x6'));var config=require(_0x8180('0x7'));var controller=require(_0x8180('0x8'));router[_0x8180('0x9')]('/',auth[_0x8180('0xa')](),controller['index']);router[_0x8180('0x9')](_0x8180('0xb'),auth['isAuthenticated'](),controller[_0x8180('0xc')]);router[_0x8180('0x9')]('/:id',auth[_0x8180('0xa')](),controller[_0x8180('0xd')]);router[_0x8180('0xe')]('/',auth[_0x8180('0xa')](),controller[_0x8180('0xf')]);router[_0x8180('0x10')]('/:id',auth[_0x8180('0xa')](),controller['update']);router[_0x8180('0x11')](_0x8180('0x12'),auth[_0x8180('0xa')](),controller[_0x8180('0x13')]);module[_0x8180('0x14')]=router;
\ No newline at end of file
+var _0x7966=['create','put','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','/describe','describe','/:id','isAuthenticated','show','post'];(function(_0x2b152a,_0x3dd988){var _0x2ad4c7=function(_0x2fa97c){while(--_0x2fa97c){_0x2b152a['push'](_0x2b152a['shift']());}};_0x2ad4c7(++_0x3dd988);}(_0x7966,0xe7));var _0x6796=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x7966[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x6796('0x0'));var util=require(_0x6796('0x1'));var path=require(_0x6796('0x2'));var timeout=require(_0x6796('0x3'));var express=require(_0x6796('0x4'));var router=express[_0x6796('0x5')]();var fs_extra=require(_0x6796('0x6'));var auth=require(_0x6796('0x7'));var interaction=require(_0x6796('0x8'));var config=require('../../config/environment');var controller=require('./whatsappTransferReport.controller');router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x6796('0x9')](_0x6796('0xa'),auth['isAuthenticated'](),controller[_0x6796('0xb')]);router[_0x6796('0x9')](_0x6796('0xc'),auth[_0x6796('0xd')](),controller[_0x6796('0xe')]);router[_0x6796('0xf')]('/',auth[_0x6796('0xd')](),controller[_0x6796('0x10')]);router[_0x6796('0x11')](_0x6796('0xc'),auth[_0x6796('0xd')](),controller['update']);router['delete']('/:id',auth[_0x6796('0xd')](),controller['destroy']);module[_0x6796('0x12')]=router;
\ No newline at end of file
index 01521c6..ed80687 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafcd=['sequelize','exports','STRING','ENUM','account','agent','queue'];(function(_0x45f7c9,_0x192a73){var _0x2c6810=function(_0xddb463){while(--_0xddb463){_0x45f7c9['push'](_0x45f7c9['shift']());}};_0x2c6810(++_0x192a73);}(_0xafcd,0x157));var _0xdafc=function(_0x3c68bb,_0x3ee29d){_0x3c68bb=_0x3c68bb-0x0;var _0x5e1fde=_0xafcd[_0x3c68bb];return _0x5e1fde;};'use strict';var Sequelize=require(_0xdafc('0x0'));module[_0xdafc('0x1')]={'uniqueid':{'type':Sequelize[_0xdafc('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xdafc('0x3')](_0xdafc('0x4'),_0xdafc('0x5'),_0xdafc('0x6')),'allowNull':![]},'transferredAt':{'type':Sequelize['DATE']}};
\ No newline at end of file
+var _0x1707=['account','agent','DATE','sequelize'];(function(_0x4e676e,_0x2a7c6d){var _0x336a3c=function(_0x4767c4){while(--_0x4767c4){_0x4e676e['push'](_0x4e676e['shift']());}};_0x336a3c(++_0x2a7c6d);}(_0x1707,0x1df));var _0x7170=function(_0x48f971,_0x23518){_0x48f971=_0x48f971-0x0;var _0x4de7a8=_0x1707[_0x48f971];return _0x4de7a8;};'use strict';var Sequelize=require(_0x7170('0x0'));module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x7170('0x1'),_0x7170('0x2'),'queue'),'allowNull':![]},'transferredAt':{'type':Sequelize[_0x7170('0x3')]}};
\ No newline at end of file
index db973c1..3b8a07a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x73f5=['key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filter','merge','VIRTUAL','options','where','findAll','rows','catch','show','params','keys','rawAttributes','include','find','create','body','update','describe','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','offset','limit','undefined','count','apply','reject','save','then','destroy','error','stack','name','index','map','WhatsappTransferReport','fieldName','type'];(function(_0x697114,_0x196d93){var _0x1a9edb=function(_0x46b11e){while(--_0x46b11e){_0x697114['push'](_0x697114['shift']());}};_0x1a9edb(++_0x196d93);}(_0x73f5,0x181));var _0x573f=function(_0x199128,_0x3022af){_0x199128=_0x199128-0x0;var _0x4ca850=_0x73f5[_0x199128];return _0x4ca850;};'use strict';var emlformat=require(_0x573f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x573f('0x1'));var jsonpatch=require(_0x573f('0x2'));var rp=require(_0x573f('0x3'));var moment=require('moment');var BPromise=require(_0x573f('0x4'));var Mustache=require(_0x573f('0x5'));var util=require(_0x573f('0x6'));var path=require(_0x573f('0x7'));var sox=require('sox');var csv=require(_0x573f('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x573f('0x9'));var crypto=require(_0x573f('0xa'));var jsforce=require(_0x573f('0xb'));var deskjs=require(_0x573f('0xc'));var toCsv=require(_0x573f('0x8'));var querystring=require('querystring');var Papa=require(_0x573f('0xd'));var Redis=require('ioredis');var authService=require(_0x573f('0xe'));var qs=require(_0x573f('0xf'));var as=require(_0x573f('0x10'));var hardwareService=require(_0x573f('0x11'));var logger=require('../../config/logger')(_0x573f('0x12'));var utils=require(_0x573f('0x13'));var config=require(_0x573f('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x573f('0x15'))['db'];function respondWithStatusCode(_0x3b3a71,_0x2889c9){_0x2889c9=_0x2889c9||0xcc;return function(_0x4e2bb9){if(_0x4e2bb9){return _0x3b3a71[_0x573f('0x16')](_0x2889c9);}return _0x3b3a71['status'](_0x2889c9)['end']();};}function respondWithResult(_0x177fac,_0xcb9532){_0xcb9532=_0xcb9532||0xc8;return function(_0x57804b){if(_0x57804b){return _0x177fac[_0x573f('0x17')](_0xcb9532)['json'](_0x57804b);}};}function respondWithFilteredResult(_0x450999,_0x2a2b7d){return function(_0x2505d9){if(_0x2505d9){var _0x486295=typeof _0x2a2b7d[_0x573f('0x18')]==='undefined'&&typeof _0x2a2b7d[_0x573f('0x19')]===_0x573f('0x1a');var _0x53b706=_0x2505d9[_0x573f('0x1b')];var _0x430271=_0x486295?0x0:_0x2a2b7d['offset'];var _0x2e203d=_0x486295?_0x2505d9[_0x573f('0x1b')]:_0x2a2b7d[_0x573f('0x18')]+_0x2a2b7d[_0x573f('0x19')];var _0x5e683b;if(_0x2e203d>=_0x53b706){_0x2e203d=_0x53b706;_0x5e683b=0xc8;}else{_0x5e683b=0xce;}_0x450999[_0x573f('0x17')](_0x5e683b);return _0x450999['set']('Content-Range',_0x430271+'-'+_0x2e203d+'/'+_0x53b706)['json'](_0x2505d9);}return null;};}function patchUpdates(_0x45ef03){return function(_0x113a33){try{jsonpatch[_0x573f('0x1c')](_0x113a33,_0x45ef03,!![]);}catch(_0x5d1710){return BPromise[_0x573f('0x1d')](_0x5d1710);}return _0x113a33[_0x573f('0x1e')]();};}function saveUpdates(_0x59b46a,_0xbab176){return function(_0x5e6776){if(_0x5e6776){return _0x5e6776['update'](_0x59b46a)[_0x573f('0x1f')](function(_0xf03e90){return _0xf03e90;});}return null;};}function removeEntity(_0x59a6a8,_0x41553e){return function(_0xe7cb49){if(_0xe7cb49){return _0xe7cb49[_0x573f('0x20')]()[_0x573f('0x1f')](function(){_0x59a6a8[_0x573f('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2d0f0b,_0x1f2251){return function(_0x7a1795){if(!_0x7a1795){_0x2d0f0b['sendStatus'](0x194);}return _0x7a1795;};}function handleError(_0x2b1d22,_0x4c0084){_0x4c0084=_0x4c0084||0x1f4;return function(_0x24d6ec){logger[_0x573f('0x21')](_0x24d6ec[_0x573f('0x22')]);if(_0x24d6ec[_0x573f('0x23')]){delete _0x24d6ec[_0x573f('0x23')];}_0x2b1d22[_0x573f('0x17')](_0x4c0084)['send'](_0x24d6ec);};}exports[_0x573f('0x24')]=function(_0xd02182,_0x6a5f1){var _0x14a1a9={},_0x11978b={},_0x36891={'count':0x0,'rows':[]};var _0x29603e=_[_0x573f('0x25')](db[_0x573f('0x26')]['rawAttributes'],function(_0x10ac4){return{'name':_0x10ac4[_0x573f('0x27')],'type':_0x10ac4[_0x573f('0x28')][_0x573f('0x29')]};});_0x11978b[_0x573f('0x2a')]=_[_0x573f('0x25')](_0x29603e,_0x573f('0x23'));_0x11978b['query']=_['keys'](_0xd02182[_0x573f('0x2b')]);_0x11978b[_0x573f('0x2c')]=_[_0x573f('0x2d')](_0x11978b[_0x573f('0x2a')],_0x11978b[_0x573f('0x2b')]);_0x14a1a9[_0x573f('0x2e')]=_[_0x573f('0x2d')](_0x11978b[_0x573f('0x2a')],qs[_0x573f('0x2f')](_0xd02182['query'][_0x573f('0x2f')]));_0x14a1a9[_0x573f('0x2e')]=_0x14a1a9['attributes'][_0x573f('0x30')]?_0x14a1a9[_0x573f('0x2e')]:_0x11978b[_0x573f('0x2a')];if(!_0xd02182[_0x573f('0x2b')][_0x573f('0x31')](_0x573f('0x32'))){_0x14a1a9[_0x573f('0x19')]=qs[_0x573f('0x19')](_0xd02182[_0x573f('0x2b')][_0x573f('0x19')]);_0x14a1a9[_0x573f('0x18')]=qs[_0x573f('0x18')](_0xd02182[_0x573f('0x2b')][_0x573f('0x18')]);}_0x14a1a9[_0x573f('0x33')]=qs['sort'](_0xd02182[_0x573f('0x2b')][_0x573f('0x34')]);_0x14a1a9['where']=qs[_0x573f('0x2c')](_['pick'](_0xd02182[_0x573f('0x2b')],_0x11978b[_0x573f('0x2c')]),_0x29603e);if(_0xd02182[_0x573f('0x2b')][_0x573f('0x35')]){_0x14a1a9['where']=_[_0x573f('0x36')](_0x14a1a9['where'],{'$or':_[_0x573f('0x25')](_0x29603e,function(_0x521ec9){if(_0x521ec9['type']!==_0x573f('0x37')){var _0x5a0747={};_0x5a0747[_0x521ec9['name']]={'$like':'%'+_0xd02182[_0x573f('0x2b')][_0x573f('0x35')]+'%'};return _0x5a0747;}})});}_0x14a1a9=_[_0x573f('0x36')]({},_0x14a1a9,_0xd02182[_0x573f('0x38')]);var _0x3b8615={'where':_0x14a1a9[_0x573f('0x39')]};return db[_0x573f('0x26')][_0x573f('0x1b')](_0x3b8615)[_0x573f('0x1f')](function(_0x58450c){_0x36891[_0x573f('0x1b')]=_0x58450c;if(_0xd02182[_0x573f('0x2b')]['includeAll']){_0x14a1a9['include']=[{'all':!![]}];}return db[_0x573f('0x26')][_0x573f('0x3a')](_0x14a1a9);})[_0x573f('0x1f')](function(_0x3d0566){_0x36891[_0x573f('0x3b')]=_0x3d0566;return _0x36891;})[_0x573f('0x1f')](respondWithFilteredResult(_0x6a5f1,_0x14a1a9))[_0x573f('0x3c')](handleError(_0x6a5f1,null));};exports[_0x573f('0x3d')]=function(_0x14ea37,_0x21aa86){var _0x271c75={'raw':!![],'where':{'id':_0x14ea37[_0x573f('0x3e')]['id']}},_0x46e958={};_0x46e958['model']=_[_0x573f('0x3f')](db[_0x573f('0x26')][_0x573f('0x40')]);_0x46e958[_0x573f('0x2b')]=_['keys'](_0x14ea37[_0x573f('0x2b')]);_0x46e958[_0x573f('0x2c')]=_[_0x573f('0x2d')](_0x46e958[_0x573f('0x2a')],_0x46e958[_0x573f('0x2b')]);_0x271c75['attributes']=_[_0x573f('0x2d')](_0x46e958['model'],qs[_0x573f('0x2f')](_0x14ea37[_0x573f('0x2b')][_0x573f('0x2f')]));_0x271c75[_0x573f('0x2e')]=_0x271c75['attributes'][_0x573f('0x30')]?_0x271c75[_0x573f('0x2e')]:_0x46e958[_0x573f('0x2a')];if(_0x14ea37[_0x573f('0x2b')]['includeAll']){_0x271c75[_0x573f('0x41')]=[{'all':!![]}];}_0x271c75=_['merge']({},_0x271c75,_0x14ea37[_0x573f('0x38')]);return db[_0x573f('0x26')][_0x573f('0x42')](_0x271c75)[_0x573f('0x1f')](handleEntityNotFound(_0x21aa86,null))[_0x573f('0x1f')](respondWithResult(_0x21aa86,null))['catch'](handleError(_0x21aa86,null));};exports[_0x573f('0x43')]=function(_0x89af20,_0x5919f8){return db[_0x573f('0x26')][_0x573f('0x43')](_0x89af20[_0x573f('0x44')],{})[_0x573f('0x1f')](respondWithResult(_0x5919f8,0xc9))[_0x573f('0x3c')](handleError(_0x5919f8,null));};exports[_0x573f('0x45')]=function(_0x55c08e,_0x32a52e){if(_0x55c08e['body']['id']){delete _0x55c08e[_0x573f('0x44')]['id'];}return db['WhatsappTransferReport'][_0x573f('0x42')]({'where':{'id':_0x55c08e[_0x573f('0x3e')]['id']}})['then'](handleEntityNotFound(_0x32a52e,null))[_0x573f('0x1f')](saveUpdates(_0x55c08e[_0x573f('0x44')],null))[_0x573f('0x1f')](respondWithResult(_0x32a52e,null))[_0x573f('0x3c')](handleError(_0x32a52e,null));};exports['destroy']=function(_0x587b38,_0x3f4185){return db[_0x573f('0x26')][_0x573f('0x42')]({'where':{'id':_0x587b38['params']['id']}})[_0x573f('0x1f')](handleEntityNotFound(_0x3f4185,null))['then'](removeEntity(_0x3f4185,null))[_0x573f('0x3c')](handleError(_0x3f4185,null));};exports[_0x573f('0x46')]=function(_0x3d0831,_0x1fdfec){return db['WhatsappTransferReport'][_0x573f('0x46')]()[_0x573f('0x1f')](respondWithResult(_0x1fdfec,null))[_0x573f('0x3c')](handleError(_0x1fdfec,null));};
\ No newline at end of file
+var _0x832c=['key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','merge','options','WhatsappTransferReport','include','findAll','catch','show','filters','find','create','body','params','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','path','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/utils','../../config/license/util','end','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','sendStatus','error','stack','name','send','index','map','rawAttributes','fieldName','type'];(function(_0x2fbd91,_0x18668d){var _0x5998ea=function(_0x1539a7){while(--_0x1539a7){_0x2fbd91['push'](_0x2fbd91['shift']());}};_0x5998ea(++_0x18668d);}(_0x832c,0x1e5));var _0xc832=function(_0x5441ce,_0x4fb889){_0x5441ce=_0x5441ce-0x0;var _0x21f8fa=_0x832c[_0x5441ce];return _0x21f8fa;};'use strict';var emlformat=require(_0xc832('0x0'));var rimraf=require(_0xc832('0x1'));var zipdir=require(_0xc832('0x2'));var jsonpatch=require(_0xc832('0x3'));var rp=require('request-promise');var moment=require(_0xc832('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xc832('0x5'));var sox=require('sox');var csv=require(_0xc832('0x6'));var ejs=require(_0xc832('0x7'));var fs=require('fs');var fs_extra=require(_0xc832('0x8'));var _=require(_0xc832('0x9'));var squel=require(_0xc832('0xa'));var crypto=require(_0xc832('0xb'));var jsforce=require(_0xc832('0xc'));var deskjs=require(_0xc832('0xd'));var toCsv=require(_0xc832('0x6'));var querystring=require(_0xc832('0xe'));var Papa=require(_0xc832('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xc832('0x10'));var as=require(_0xc832('0x11'));var hardwareService=require(_0xc832('0x12'));var logger=require(_0xc832('0x13'))(_0xc832('0x14'));var utils=require(_0xc832('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xc832('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x46676c,_0xa1c7c0){_0xa1c7c0=_0xa1c7c0||0xcc;return function(_0x5aa6ef){if(_0x5aa6ef){return _0x46676c['sendStatus'](_0xa1c7c0);}return _0x46676c['status'](_0xa1c7c0)[_0xc832('0x17')]();};}function respondWithResult(_0x1229d5,_0x33c84e){_0x33c84e=_0x33c84e||0xc8;return function(_0x2b4d05){if(_0x2b4d05){return _0x1229d5[_0xc832('0x18')](_0x33c84e)[_0xc832('0x19')](_0x2b4d05);}};}function respondWithFilteredResult(_0x427205,_0x36cd88){return function(_0x4d22bb){if(_0x4d22bb){var _0x586299=typeof _0x36cd88[_0xc832('0x1a')]==='undefined'&&typeof _0x36cd88['limit']===_0xc832('0x1b');var _0x476334=_0x4d22bb['count'];var _0x21fb7d=_0x586299?0x0:_0x36cd88[_0xc832('0x1a')];var _0x1ec564=_0x586299?_0x4d22bb[_0xc832('0x1c')]:_0x36cd88['offset']+_0x36cd88[_0xc832('0x1d')];var _0x503613;if(_0x1ec564>=_0x476334){_0x1ec564=_0x476334;_0x503613=0xc8;}else{_0x503613=0xce;}_0x427205[_0xc832('0x18')](_0x503613);return _0x427205[_0xc832('0x1e')](_0xc832('0x1f'),_0x21fb7d+'-'+_0x1ec564+'/'+_0x476334)[_0xc832('0x19')](_0x4d22bb);}return null;};}function patchUpdates(_0x42b7f8){return function(_0x2d9de5){try{jsonpatch[_0xc832('0x20')](_0x2d9de5,_0x42b7f8,!![]);}catch(_0x5c7e03){return BPromise[_0xc832('0x21')](_0x5c7e03);}return _0x2d9de5[_0xc832('0x22')]();};}function saveUpdates(_0x3b068d,_0x111910){return function(_0x3a0ac8){if(_0x3a0ac8){return _0x3a0ac8[_0xc832('0x23')](_0x3b068d)[_0xc832('0x24')](function(_0x46d6b1){return _0x46d6b1;});}return null;};}function removeEntity(_0x357dfb,_0x3bbd44){return function(_0x315f83){if(_0x315f83){return _0x315f83['destroy']()[_0xc832('0x24')](function(){_0x357dfb[_0xc832('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4f1e27,_0x21fd28){return function(_0x53efa0){if(!_0x53efa0){_0x4f1e27[_0xc832('0x25')](0x194);}return _0x53efa0;};}function handleError(_0x167c4d,_0x346293){_0x346293=_0x346293||0x1f4;return function(_0x34f69a){logger[_0xc832('0x26')](_0x34f69a[_0xc832('0x27')]);if(_0x34f69a[_0xc832('0x28')]){delete _0x34f69a[_0xc832('0x28')];}_0x167c4d['status'](_0x346293)[_0xc832('0x29')](_0x34f69a);};}exports[_0xc832('0x2a')]=function(_0x3ff764,_0x5526a4){var _0x4a77f5={},_0x5b66c7={},_0x2b9fe5={'count':0x0,'rows':[]};var _0x3cf523=_[_0xc832('0x2b')](db['WhatsappTransferReport'][_0xc832('0x2c')],function(_0x2771ea){return{'name':_0x2771ea[_0xc832('0x2d')],'type':_0x2771ea[_0xc832('0x2e')][_0xc832('0x2f')]};});_0x5b66c7[_0xc832('0x30')]=_['map'](_0x3cf523,_0xc832('0x28'));_0x5b66c7[_0xc832('0x31')]=_[_0xc832('0x32')](_0x3ff764[_0xc832('0x31')]);_0x5b66c7['filters']=_[_0xc832('0x33')](_0x5b66c7[_0xc832('0x30')],_0x5b66c7[_0xc832('0x31')]);_0x4a77f5['attributes']=_[_0xc832('0x33')](_0x5b66c7[_0xc832('0x30')],qs['fields'](_0x3ff764[_0xc832('0x31')][_0xc832('0x34')]));_0x4a77f5[_0xc832('0x35')]=_0x4a77f5[_0xc832('0x35')][_0xc832('0x36')]?_0x4a77f5['attributes']:_0x5b66c7[_0xc832('0x30')];if(!_0x3ff764[_0xc832('0x31')][_0xc832('0x37')](_0xc832('0x38'))){_0x4a77f5[_0xc832('0x1d')]=qs[_0xc832('0x1d')](_0x3ff764[_0xc832('0x31')]['limit']);_0x4a77f5[_0xc832('0x1a')]=qs[_0xc832('0x1a')](_0x3ff764[_0xc832('0x31')][_0xc832('0x1a')]);}_0x4a77f5[_0xc832('0x39')]=qs[_0xc832('0x3a')](_0x3ff764[_0xc832('0x31')][_0xc832('0x3a')]);_0x4a77f5[_0xc832('0x3b')]=qs['filters'](_['pick'](_0x3ff764[_0xc832('0x31')],_0x5b66c7['filters']),_0x3cf523);if(_0x3ff764[_0xc832('0x31')][_0xc832('0x3c')]){_0x4a77f5[_0xc832('0x3b')]=_['merge'](_0x4a77f5[_0xc832('0x3b')],{'$or':_[_0xc832('0x2b')](_0x3cf523,function(_0x333c1e){if(_0x333c1e[_0xc832('0x2e')]!==_0xc832('0x3d')){var _0x4add87={};_0x4add87[_0x333c1e[_0xc832('0x28')]]={'$like':'%'+_0x3ff764[_0xc832('0x31')][_0xc832('0x3c')]+'%'};return _0x4add87;}})});}_0x4a77f5=_[_0xc832('0x3e')]({},_0x4a77f5,_0x3ff764[_0xc832('0x3f')]);var _0x39f91d={'where':_0x4a77f5['where']};return db[_0xc832('0x40')][_0xc832('0x1c')](_0x39f91d)['then'](function(_0x3f574a){_0x2b9fe5[_0xc832('0x1c')]=_0x3f574a;if(_0x3ff764['query']['includeAll']){_0x4a77f5[_0xc832('0x41')]=[{'all':!![]}];}return db['WhatsappTransferReport'][_0xc832('0x42')](_0x4a77f5);})[_0xc832('0x24')](function(_0x292bda){_0x2b9fe5['rows']=_0x292bda;return _0x2b9fe5;})['then'](respondWithFilteredResult(_0x5526a4,_0x4a77f5))[_0xc832('0x43')](handleError(_0x5526a4,null));};exports[_0xc832('0x44')]=function(_0xec2137,_0x512b0a){var _0x319333={'raw':!![],'where':{'id':_0xec2137['params']['id']}},_0x1d0771={};_0x1d0771[_0xc832('0x30')]=_[_0xc832('0x32')](db[_0xc832('0x40')][_0xc832('0x2c')]);_0x1d0771[_0xc832('0x31')]=_[_0xc832('0x32')](_0xec2137['query']);_0x1d0771[_0xc832('0x45')]=_[_0xc832('0x33')](_0x1d0771['model'],_0x1d0771[_0xc832('0x31')]);_0x319333[_0xc832('0x35')]=_[_0xc832('0x33')](_0x1d0771[_0xc832('0x30')],qs[_0xc832('0x34')](_0xec2137[_0xc832('0x31')][_0xc832('0x34')]));_0x319333[_0xc832('0x35')]=_0x319333['attributes']['length']?_0x319333[_0xc832('0x35')]:_0x1d0771[_0xc832('0x30')];if(_0xec2137[_0xc832('0x31')]['includeAll']){_0x319333[_0xc832('0x41')]=[{'all':!![]}];}_0x319333=_[_0xc832('0x3e')]({},_0x319333,_0xec2137[_0xc832('0x3f')]);return db[_0xc832('0x40')][_0xc832('0x46')](_0x319333)[_0xc832('0x24')](handleEntityNotFound(_0x512b0a,null))['then'](respondWithResult(_0x512b0a,null))[_0xc832('0x43')](handleError(_0x512b0a,null));};exports[_0xc832('0x47')]=function(_0x5732ee,_0x324121){return db[_0xc832('0x40')][_0xc832('0x47')](_0x5732ee[_0xc832('0x48')],{})['then'](respondWithResult(_0x324121,0xc9))[_0xc832('0x43')](handleError(_0x324121,null));};exports[_0xc832('0x23')]=function(_0x5c5063,_0x231519){if(_0x5c5063['body']['id']){delete _0x5c5063[_0xc832('0x48')]['id'];}return db[_0xc832('0x40')][_0xc832('0x46')]({'where':{'id':_0x5c5063[_0xc832('0x49')]['id']}})[_0xc832('0x24')](handleEntityNotFound(_0x231519,null))[_0xc832('0x24')](saveUpdates(_0x5c5063[_0xc832('0x48')],null))[_0xc832('0x24')](respondWithResult(_0x231519,null))['catch'](handleError(_0x231519,null));};exports[_0xc832('0x4a')]=function(_0x4faead,_0x4c03ac){return db[_0xc832('0x40')][_0xc832('0x46')]({'where':{'id':_0x4faead[_0xc832('0x49')]['id']}})[_0xc832('0x24')](handleEntityNotFound(_0x4c03ac,null))['then'](removeEntity(_0x4c03ac,null))[_0xc832('0x43')](handleError(_0x4c03ac,null));};exports['describe']=function(_0x30058b,_0x4ae0f4){return db[_0xc832('0x40')][_0xc832('0x4b')]()[_0xc832('0x24')](respondWithResult(_0x4ae0f4,null))[_0xc832('0x43')](handleError(_0x4ae0f4,null));};
\ No newline at end of file
index cc5c054..27f025f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34b9=['moment','request-promise','../../config/environment','./whatsappTransferReport.attributes','define','uniqueid','util','../../config/logger','api'];(function(_0x9ea8f8,_0x12912f){var _0x1839e9=function(_0x98b293){while(--_0x98b293){_0x9ea8f8['push'](_0x9ea8f8['shift']());}};_0x1839e9(++_0x12912f);}(_0x34b9,0x84));var _0x934b=function(_0x62c954,_0x374355){_0x62c954=_0x62c954-0x0;var _0x47f48c=_0x34b9[_0x62c954];return _0x47f48c;};'use strict';var _=require('lodash');var util=require(_0x934b('0x0'));var logger=require(_0x934b('0x1'))(_0x934b('0x2'));var moment=require(_0x934b('0x3'));var BPromise=require('bluebird');var rp=require(_0x934b('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x934b('0x5'));var attributes=require(_0x934b('0x6'));module['exports']=function(_0x1f2833,_0x34317a){return _0x1f2833[_0x934b('0x7')]('WhatsappTransferReport',attributes,{'tableName':'report_whatsapp_transfer','paranoid':![],'indexes':[{'name':_0x934b('0x8'),'fields':[_0x934b('0x8')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc89f=['rimraf','./whatsappTransferReport.attributes','define','uniqueid','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x2aa0e7,_0x4e5145){var _0x1472c0=function(_0x4deaeb){while(--_0x4deaeb){_0x2aa0e7['push'](_0x2aa0e7['shift']());}};_0x1472c0(++_0x4e5145);}(_0xc89f,0x1ee));var _0xfc89=function(_0x1486ee,_0x37885b){_0x1486ee=_0x1486ee-0x0;var _0x5928a6=_0xc89f[_0x1486ee];return _0x5928a6;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xfc89('0x0'))(_0xfc89('0x1'));var moment=require(_0xfc89('0x2'));var BPromise=require(_0xfc89('0x3'));var rp=require(_0xfc89('0x4'));var fs=require('fs');var path=require(_0xfc89('0x5'));var rimraf=require(_0xfc89('0x6'));var config=require('../../config/environment');var attributes=require(_0xfc89('0x7'));module['exports']=function(_0x2bb119,_0x5bba32){return _0x2bb119[_0xfc89('0x8')]('WhatsappTransferReport',attributes,{'tableName':'report_whatsapp_transfer','paranoid':![],'indexes':[{'name':_0xfc89('0x9'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index e8c2144..07849b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x496d=['code','WhatsappTransferReport,\x20%s,\x20%s','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','request\x20sent','debug','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x427e1c,_0x312041){var _0x377e3f=function(_0x15f411){while(--_0x15f411){_0x427e1c['push'](_0x427e1c['shift']());}};_0x377e3f(++_0x312041);}(_0x496d,0x125));var _0xd496=function(_0x106a7d,_0x2d4d63){_0x106a7d=_0x106a7d-0x0;var _0x4a609a=_0x496d[_0x106a7d];return _0x4a609a;};'use strict';var _=require(_0xd496('0x0'));var util=require(_0xd496('0x1'));var moment=require(_0xd496('0x2'));var BPromise=require('bluebird');var rs=require(_0xd496('0x3'));var fs=require('fs');var Redis=require(_0xd496('0x4'));var db=require(_0xd496('0x5'))['db'];var utils=require(_0xd496('0x6'));var logger=require(_0xd496('0x7'))(_0xd496('0x8'));var config=require(_0xd496('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0xd496('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1932e0,_0x345928,_0x5ee135){return new BPromise(function(_0x300998,_0x304b78){return client[_0xd496('0xb')](_0x1932e0,_0x5ee135)[_0xd496('0xc')](function(_0xbce809){logger[_0xd496('0xd')]('WhatsappTransferReport,\x20%s,\x20%s',_0x345928,_0xd496('0xe'));logger[_0xd496('0xf')](_0xd496('0x10'),_0x345928,_0xd496('0xe'),JSON[_0xd496('0x11')](_0xbce809));if(_0xbce809[_0xd496('0x12')]){if(_0xbce809[_0xd496('0x12')][_0xd496('0x13')]===0x1f4){logger['error'](_0xd496('0x14'),_0x345928,_0xbce809[_0xd496('0x12')][_0xd496('0x15')]);return _0x304b78(_0xbce809[_0xd496('0x12')][_0xd496('0x15')]);}logger[_0xd496('0x12')](_0xd496('0x14'),_0x345928,_0xbce809['error'][_0xd496('0x15')]);return _0x300998(_0xbce809[_0xd496('0x12')][_0xd496('0x15')]);}else{logger['info'](_0xd496('0x14'),_0x345928,_0xd496('0xe'));_0x300998(_0xbce809[_0xd496('0x16')]['message']);}})[_0xd496('0x17')](function(_0x767457){logger[_0xd496('0x12')]('WhatsappTransferReport,\x20%s,\x20%s',_0x345928,_0x767457);_0x304b78(_0x767457);});});}
\ No newline at end of file
+var _0x408e=['error','message','info','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','WhatsappTransferReport,\x20%s,\x20%s','request\x20sent','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0x408e,0xc2));var _0xe408=function(_0x388e6d,_0x4db588){_0x388e6d=_0x388e6d-0x0;var _0x33bf25=_0x408e[_0x388e6d];return _0x33bf25;};'use strict';var _=require(_0xe408('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xe408('0x1'));var rs=require(_0xe408('0x2'));var fs=require('fs');var Redis=require(_0xe408('0x3'));var db=require(_0xe408('0x4'))['db'];var utils=require(_0xe408('0x5'));var logger=require(_0xe408('0x6'))('rpc');var config=require(_0xe408('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xe408('0x8')][_0xe408('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1f9795,_0x36bbe9,_0x19471b){return new BPromise(function(_0x1cf72a,_0x1aad5e){return client[_0xe408('0xa')](_0x1f9795,_0x19471b)['then'](function(_0xccf260){logger['info'](_0xe408('0xb'),_0x36bbe9,_0xe408('0xc'));logger['debug'](_0xe408('0xd'),_0x36bbe9,'request\x20sent',JSON[_0xe408('0xe')](_0xccf260));if(_0xccf260['error']){if(_0xccf260[_0xe408('0xf')]['code']===0x1f4){logger['error']('WhatsappTransferReport,\x20%s,\x20%s',_0x36bbe9,_0xccf260['error'][_0xe408('0x10')]);return _0x1aad5e(_0xccf260[_0xe408('0xf')][_0xe408('0x10')]);}logger['error']('WhatsappTransferReport,\x20%s,\x20%s',_0x36bbe9,_0xccf260['error'][_0xe408('0x10')]);return _0x1cf72a(_0xccf260[_0xe408('0xf')][_0xe408('0x10')]);}else{logger[_0xe408('0x11')](_0xe408('0xb'),_0x36bbe9,_0xe408('0xc'));_0x1cf72a(_0xccf260['result'][_0xe408('0x10')]);}})[_0xe408('0x12')](function(_0x8f1269){logger[_0xe408('0xf')](_0xe408('0xb'),_0x36bbe9,_0x8f1269);_0x1aad5e(_0x8f1269);});});}
\ No newline at end of file
index de97362..f90acf2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbac8=['catch','log','error','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','exit','lodash','./mysqldb','./rpc','./config/environment','./config/logger','./config/pm2','./config/pm2/config','./config/schedule/whatsapp','./config/schedule/transcribe','./config/schedule/cloud-provider','sequelize','sync','then','seedDB','default','listen','info','start','exitCode','number','length','Online\x20apps:','map','filter','online','name','Offline\x20apps:','status','None','App\x20Ready!'];(function(_0x229665,_0xc00fd0){var _0x32b2f1=function(_0x3a99c1){while(--_0x3a99c1){_0x229665['push'](_0x229665['shift']());}};_0x32b2f1(++_0xc00fd0);}(_0xbac8,0x140));var _0x8bac=function(_0x5bbbe0,_0x4e474c){_0x5bbbe0=_0x5bbbe0-0x0;var _0x5d838c=_0xbac8[_0x5bbbe0];return _0x5d838c;};'use strict';var _=require(_0x8bac('0x0'));var db=require(_0x8bac('0x1'))['db'];var seedDb=require('./config/seedDB');var checkLicense=require('./config/license');var rpc=require(_0x8bac('0x2'));var config=require(_0x8bac('0x3'));var logger=require(_0x8bac('0x4'))('app');var pm2=require(_0x8bac('0x5'));var pm2Config=require(_0x8bac('0x6'));var schedule=require('./config/schedule');var chat=require('./config/schedule/chat');var whatsapp=require(_0x8bac('0x7'));var transcribe=require(_0x8bac('0x8'));var provider=require(_0x8bac('0x9'));function main(){return db[_0x8bac('0xa')][_0x8bac('0xb')]()[_0x8bac('0xc')](function(){if(config[_0x8bac('0xd')]){return seedDb[_0x8bac('0xe')]();}})[_0x8bac('0xc')](function(){return checkLicense['default']();})[_0x8bac('0xc')](function(){return rpc[_0x8bac('0xf')]();})[_0x8bac('0xc')](function(_0x4d1a27){logger[_0x8bac('0x10')](_0x4d1a27);return chat['start']();})[_0x8bac('0xc')](function(){return whatsapp[_0x8bac('0x11')]();})['then'](function(){return schedule[_0x8bac('0x11')]();})[_0x8bac('0xc')](function(){return transcribe[_0x8bac('0x11')]();})[_0x8bac('0xc')](function(){return provider[_0x8bac('0x11')]();})['then'](function(_0x4e571a){logger[_0x8bac('0x10')](_0x4e571a);return pm2[_0x8bac('0x11')](pm2Config);})['then'](function(_0x45170a){var _0x5264ad=_0x45170a['filter'](function(_0x7617a6){return typeof _0x7617a6[_0x8bac('0x12')]===_0x8bac('0x13')&&_0x7617a6[_0x8bac('0x12')]>=0x0;});if(_0x5264ad[_0x8bac('0x14')]>0x0){throw new Error(_0x5264ad[_0x8bac('0x14')]+'\x20processes\x20failed\x20at\x20startup:\x20'+_['map'](_0x5264ad,function(_0x41692b){return'\x22'+_0x41692b['pm2_env']['name']+'\x22';}));}logger[_0x8bac('0x10')](_0x8bac('0x15'),_[_0x8bac('0x16')](_[_0x8bac('0x17')](_0x45170a,{'status':_0x8bac('0x18')}),_0x8bac('0x19'))['join']());logger[_0x8bac('0x10')](_0x8bac('0x1a'),_[_0x8bac('0x16')](_[_0x8bac('0x17')](_0x45170a,function(_0x16b4e6){return _0x16b4e6[_0x8bac('0x1b')]!==_0x8bac('0x18');}),_0x8bac('0x19'))['join']()||_0x8bac('0x1c'));console['log'](_0x8bac('0x1d'));})[_0x8bac('0x1e')](function(_0x2c04c2){console[_0x8bac('0x1f')]('Server\x20failed\x20to\x20start\x20due\x20to\x20error!',_0x2c04c2);logger[_0x8bac('0x20')](_0x8bac('0x21'),_0x2c04c2);process[_0x8bac('0x22')](0x1);});}main();
\ No newline at end of file
+var _0x8c79=['sequelize','sync','then','default','info','start','exitCode','number','\x20processes\x20failed\x20at\x20startup:\x20','pm2_env','name','map','filter','online','join','Offline\x20apps:','None','log','App\x20Ready!','catch','Server\x20failed\x20to\x20start\x20due\x20to\x20error!','error','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','lodash','./rpc','./config/logger','app','./config/pm2/config','./config/schedule/transcribe'];(function(_0x4409e7,_0x307f17){var _0x24c751=function(_0x3a7d33){while(--_0x3a7d33){_0x4409e7['push'](_0x4409e7['shift']());}};_0x24c751(++_0x307f17);}(_0x8c79,0xa8));var _0x98c7=function(_0x361704,_0x3af61c){_0x361704=_0x361704-0x0;var _0x258953=_0x8c79[_0x361704];return _0x258953;};'use strict';var _=require(_0x98c7('0x0'));var db=require('./mysqldb')['db'];var seedDb=require('./config/seedDB');var checkLicense=require('./config/license');var rpc=require(_0x98c7('0x1'));var config=require('./config/environment');var logger=require(_0x98c7('0x2'))(_0x98c7('0x3'));var pm2=require('./config/pm2');var pm2Config=require(_0x98c7('0x4'));var schedule=require('./config/schedule');var chat=require('./config/schedule/chat');var whatsapp=require('./config/schedule/whatsapp');var transcribe=require(_0x98c7('0x5'));var provider=require('./config/schedule/cloud-provider');function main(){return db[_0x98c7('0x6')][_0x98c7('0x7')]()['then'](function(){if(config['seedDB']){return seedDb['default']();}})[_0x98c7('0x8')](function(){return checkLicense[_0x98c7('0x9')]();})[_0x98c7('0x8')](function(){return rpc['listen']();})[_0x98c7('0x8')](function(_0x4d6c3c){logger[_0x98c7('0xa')](_0x4d6c3c);return chat[_0x98c7('0xb')]();})[_0x98c7('0x8')](function(){return whatsapp[_0x98c7('0xb')]();})[_0x98c7('0x8')](function(){return schedule[_0x98c7('0xb')]();})[_0x98c7('0x8')](function(){return transcribe[_0x98c7('0xb')]();})[_0x98c7('0x8')](function(){return provider[_0x98c7('0xb')]();})[_0x98c7('0x8')](function(_0x30055b){logger[_0x98c7('0xa')](_0x30055b);return pm2[_0x98c7('0xb')](pm2Config);})[_0x98c7('0x8')](function(_0x238e98){var _0x49a7b6=_0x238e98['filter'](function(_0x3b9ced){return typeof _0x3b9ced[_0x98c7('0xc')]===_0x98c7('0xd')&&_0x3b9ced[_0x98c7('0xc')]>=0x0;});if(_0x49a7b6['length']>0x0){throw new Error(_0x49a7b6['length']+_0x98c7('0xe')+_['map'](_0x49a7b6,function(_0x37543f){return'\x22'+_0x37543f[_0x98c7('0xf')][_0x98c7('0x10')]+'\x22';}));}logger[_0x98c7('0xa')]('Online\x20apps:',_[_0x98c7('0x11')](_[_0x98c7('0x12')](_0x238e98,{'status':_0x98c7('0x13')}),_0x98c7('0x10'))[_0x98c7('0x14')]());logger[_0x98c7('0xa')](_0x98c7('0x15'),_['map'](_[_0x98c7('0x12')](_0x238e98,function(_0xec028){return _0xec028['status']!==_0x98c7('0x13');}),_0x98c7('0x10'))[_0x98c7('0x14')]()||_0x98c7('0x16'));console[_0x98c7('0x17')](_0x98c7('0x18'));})[_0x98c7('0x19')](function(_0x23a74c){console[_0x98c7('0x17')](_0x98c7('0x1a'),_0x23a74c);logger[_0x98c7('0x1b')](_0x98c7('0x1c'),_0x23a74c);process['exit'](0x1);});}main();
\ No newline at end of file
index 40a22e8..7c16ce8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x23b3b4,_0x27b281){var _0x4c8df0=function(_0x3bdea9){while(--_0x3bdea9){_0x23b3b4['push'](_0x23b3b4['shift']());}};_0x4c8df0(++_0x27b281);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x4c06a3,_0x1e6b6f){_0x4c06a3=_0x4c06a3-0x0;var _0x7ff53c=_0xf3cd[_0x4c06a3];return _0x7ff53c;};'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
+var _0x4b84=['User\x20not\x20found.','User\x20object\x20not\x20found.','canUpdate','getLicense','update','Forbidden','isWebrtcLicence','webrtc','isMiddleware','signToken','setTokenCookie','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','role','cookie','motion.token','redirect','/dashboards/general','retrieveApiKey','isNil','apiKeyIat','generateApiKey','regenerateApiKey','Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one','validatePasswordPattern','test','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','The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.','The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.','Sequelize','ValidationError','updatePasswordsHistory','length','splice','unshift','encryptString','join','promisify','secret','secrets','payload','randomBytes','hex','now','toString','HS512','../../mysqldb','../../config/environment','../encryptor','express-jwt','composable-middleware','basic-auth','moment','session','fullname','email','userpic','permissions','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','pauseType','lastLoginAt','lastPauseAt','allowmessenger','alias','phoneBarAutoAnswer','phoneBarDnd','phoneBarEnableSettings','phoneBarExpires','phoneBarPrefixRequired','phoneBarRemoteControl','userProfileId','settingsEnabled','wssPort','downloadOmnichannelInteractions','downloadAttachments','selectRecallMeCampaign','chatAutoanswer','emailAutoanswer','emailAutoanswerDelay','smsAutoanswer','smsAutoanswerDelay','openchannelAutoanswer','openchannelAutoanswerDelay','faxAutoanswer','faxAutoanswerDelay','whatsappAutoanswer','whatsappAutoanswerDelay','isChatInteractionAuthorized','isAuthenticated','user','ChatInteraction','params','disposition','then','closed','status','unmanaged','Forbidden.','catch','use','headers','authorization','Basic','User','find','name','authenticate','pass','json','startsWith','Bearer','Unknown\x20authorization\x20format','query','apikey','getUuid','sub','Setting','findOne','allowedLoginAttempts','blockDuration','isEqual','apiKeyNonce','nonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','blocked','blockedAt','add','minutes','Invalid\x20API\x20access\x20key'];(function(_0x592b13,_0x3f3a48){var _0x362545=function(_0x25096c){while(--_0x25096c){_0x592b13['push'](_0x592b13['shift']());}};_0x362545(++_0x3f3a48);}(_0x4b84,0x1cc));var _0x44b8=function(_0x26d386,_0x1660c0){_0x26d386=_0x26d386-0x0;var _0x4ef9a8=_0x4b84[_0x26d386];return _0x4ef9a8;};'use strict';var db=require(_0x44b8('0x0'))['db'];var config=require(_0x44b8('0x1'));var hardwareConf=require('../../config/license/hardware');var licenseUtil=require('../../config/license/util');var encryptor=require(_0x44b8('0x2'));var _=require('lodash');var jwt=require('jsonwebtoken');var expressJwt=require(_0x44b8('0x3'));var compose=require(_0x44b8('0x4'));var basicAuth=require(_0x44b8('0x5'));var crypto=require('crypto');var BPromise=require('bluebird');var util=require('util');var moment=require(_0x44b8('0x6'));var validateJwt=expressJwt({'secret':config['secrets'][_0x44b8('0x7')]});var userAttributes=['id','role',_0x44b8('0x8'),'name','internal',_0x44b8('0x9'),_0x44b8('0xa'),_0x44b8('0xb'),'md5secret',_0x44b8('0xc'),_0x44b8('0xd'),_0x44b8('0xe'),_0x44b8('0xf'),_0x44b8('0x10'),_0x44b8('0x11'),_0x44b8('0x12'),'showWebBar',_0x44b8('0x13'),_0x44b8('0x14'),'crudPermissions',_0x44b8('0x15'),'passwordResetAt',_0x44b8('0x16'),_0x44b8('0x17'),'phoneBarAutoAnswerDelay',_0x44b8('0x18'),'phoneBarEnableRecording','phoneBarEnableDtmfTone',_0x44b8('0x19'),_0x44b8('0x1a'),_0x44b8('0x1b'),_0x44b8('0x1c'),'phoneBarRemoteControlPort','hotdesk','interface',_0x44b8('0x1d'),'privacyEnabled',_0x44b8('0x1e'),_0x44b8('0x1f'),'downloadVoiceRecordings',_0x44b8('0x20'),_0x44b8('0x21'),'ignorePauseForPreviewCalls',_0x44b8('0x22'),_0x44b8('0x23'),'chatAutoanswerDelay',_0x44b8('0x24'),_0x44b8('0x25'),_0x44b8('0x26'),_0x44b8('0x27'),_0x44b8('0x28'),_0x44b8('0x29'),_0x44b8('0x2a'),_0x44b8('0x2b'),_0x44b8('0x2c'),_0x44b8('0x2d')];exports[_0x44b8('0x2e')]=function(){return this[_0x44b8('0x2f')](!![])['use'](function(_0x56549a,_0x3a8aa4,_0x416b34){if(_0x56549a[_0x44b8('0x30')]){_0x416b34();}else{return db[_0x44b8('0x31')]['findOne']({'where':{'id':_0x56549a[_0x44b8('0x32')]['id']},'attributes':['id','closed',_0x44b8('0x33')],'raw':!![]})[_0x44b8('0x34')](function(_0x25a0c1){if(_0x25a0c1&&_0x25a0c1[_0x44b8('0x35')]){return _0x3a8aa4[_0x44b8('0x36')](_0x25a0c1['disposition']===_0x44b8('0x37')?0x195:0x193)['json']({'message':_0x25a0c1[_0x44b8('0x33')]===_0x44b8('0x37')?'Unmanaged.':_0x44b8('0x38')});}else{_0x416b34();}})[_0x44b8('0x39')](function(_0x2656d7){_0x416b34(_0x2656d7);});}});};exports['isAuthenticated']=function isAuthenticated(_0xb22107){return compose()[_0x44b8('0x3a')](function(_0x53d9c7,_0x2e0174,_0x4a182d){var _0xfb0028;if(_0x53d9c7['headers']['authorization']){if(_['startsWith'](_0x53d9c7[_0x44b8('0x3b')][_0x44b8('0x3c')],_0x44b8('0x3d'))){var _0x1bd1be=basicAuth(_0x53d9c7);db[_0x44b8('0x3e')][_0x44b8('0x3f')]({'where':{'name':_0x1bd1be[_0x44b8('0x40')]}})[_0x44b8('0x34')](function(_0xd1d320){if(!_0xd1d320||!_0xd1d320[_0x44b8('0x41')](_0x1bd1be[_0x44b8('0x42')])){return _0x2e0174[_0x44b8('0x36')](0x191)[_0x44b8('0x43')]({'message':'Wrong\x20credentials.'});}_0x53d9c7[_0x44b8('0x30')]={'id':_0xd1d320['id']};_0x4a182d();})['catch'](function(_0x212983){_0x4a182d(_0x212983);});}else if(_[_0x44b8('0x44')](_0x53d9c7[_0x44b8('0x3b')][_0x44b8('0x3c')],_0x44b8('0x45'))){validateJwt(_0x53d9c7,_0x2e0174,_0x4a182d);}else{if(_0xb22107){_0x4a182d();}else{return _0x2e0174['status'](0x193)[_0x44b8('0x43')]({'message':_0x44b8('0x46')});}}}else if(_0x53d9c7[_0x44b8('0x47')][_0x44b8('0x48')]){try{var _0x46b008={'audience':hardwareConf['getUuid'](),'issuer':hardwareConf[_0x44b8('0x49')]()};verifyJwt(_0x53d9c7[_0x44b8('0x47')][_0x44b8('0x48')],_0x46b008)[_0x44b8('0x34')](function(_0x140a79){return db[_0x44b8('0x3e')][_0x44b8('0x3f')]({'where':{'id':_0x140a79[_0x44b8('0x4a')]}})[_0x44b8('0x34')](function(_0x181761){_0xfb0028=_0x181761;return db[_0x44b8('0x4b')][_0x44b8('0x4c')]({'where':{'id':0x1},'attributes':[_0x44b8('0x4d'),_0x44b8('0x4e')],'raw':!![]});})[_0x44b8('0x34')](function(_0x1becb0){if(!_0xfb0028||!_[_0x44b8('0x4f')](_0xfb0028[_0x44b8('0x50')],_0x140a79[_0x44b8('0x51')])){return _0x2e0174[_0x44b8('0x36')](0x191)[_0x44b8('0x43')]({'message':_0x44b8('0x52')});}if(_0xfb0028['disabled']){return _0x2e0174[_0x44b8('0x36')](0x191)[_0x44b8('0x43')]({'message':'Invalid\x20API\x20access\x20key'});}if(_0xfb0028[_0x44b8('0x53')]){if(_0x1becb0[_0x44b8('0x4e')]>0x0){if(moment(_0xfb0028[_0x44b8('0x54')])[_0x44b8('0x55')](_0x1becb0['blockDuration'],_0x44b8('0x56'))>moment()){return _0x2e0174[_0x44b8('0x36')](0x191)[_0x44b8('0x43')]({'message':_0x44b8('0x57')});}}else{return _0x2e0174[_0x44b8('0x36')](0x191)[_0x44b8('0x43')]({'message':_0x44b8('0x57')});}}_0x53d9c7[_0x44b8('0x30')]={'id':_0xfb0028['id']};_0x4a182d();});})[_0x44b8('0x39')](function(){return _0x2e0174[_0x44b8('0x36')](0x191)[_0x44b8('0x43')]({'message':_0x44b8('0x57')});});}catch(_0xd69398){_0x4a182d(_0xd69398);}}else if(_0xb22107){_0x4a182d();}else{return _0x2e0174[_0x44b8('0x36')](0x193)[_0x44b8('0x43')]({'message':_0x44b8('0x46')});}})['use'](function(_0x12a0a4,_0x43e43a,_0xbf444f){if(_0x12a0a4['user']){db[_0x44b8('0x3e')][_0x44b8('0x3f')]({'where':{'id':_0x12a0a4[_0x44b8('0x30')]['id']},'attributes':userAttributes})['then'](function(_0xbad4bb){if(!_0xbad4bb){return _0x43e43a[_0x44b8('0x36')](0x194)[_0x44b8('0x43')]({'message':_0x44b8('0x58')});}_0x12a0a4[_0x44b8('0x30')]=_0xbad4bb;_0xbf444f();})['catch'](function(_0x5ae5f9){_0xbf444f(_0x5ae5f9);});}else if(_0xb22107){_0xbf444f();}else{return _0x43e43a[_0x44b8('0x36')](0x194)[_0x44b8('0x43')]({'message':_0x44b8('0x59')});}});};exports[_0x44b8('0x5a')]=function canUpdate(){return compose()[_0x44b8('0x3a')](function(_0x26e1f1,_0x3fc41b,_0x457348){return licenseUtil[_0x44b8('0x5b')]()[_0x44b8('0x34')](function(_0x197782){if(_0x197782[_0x44b8('0x5c')]){_0x457348();}else{return _0x3fc41b[_0x44b8('0x36')](0x193)[_0x44b8('0x43')]({'message':_0x44b8('0x5d')});}})[_0x44b8('0x39')](function(_0xce06dc){_0x457348(_0xce06dc);});});};exports[_0x44b8('0x5e')]=function isWebrtcLicence(){return compose()[_0x44b8('0x3a')](function(_0x49c507,_0x547dc1,_0x3b1b12){return licenseUtil[_0x44b8('0x5b')]()[_0x44b8('0x34')](function(_0x269284){if(_0x269284[_0x44b8('0x5f')]){_0x3b1b12();}else{return _0x547dc1[_0x44b8('0x36')](0x193)[_0x44b8('0x43')]({'message':'Forbidden'});}})[_0x44b8('0x39')](function(_0x53edca){_0x3b1b12(_0x53edca);});});};exports[_0x44b8('0x60')]=function(_0x3ef886,_0x1dbc28,_0x9207bf){_0x3ef886[_0x44b8('0x60')]=!![];return _0x9207bf();};exports[_0x44b8('0x61')]=function signToken(_0x491600){return signJwt(_0x491600);};exports[_0x44b8('0x62')]=function(_0xff92fb,_0x10602c){if(!_0xff92fb[_0x44b8('0x30')]){return _0x10602c['status'](0x194)[_0x44b8('0x43')]({'message':_0x44b8('0x63')});}var _0x36afa9={'payload':{'id':_0xff92fb[_0x44b8('0x30')]['id'],'role':_0xff92fb[_0x44b8('0x30')][_0x44b8('0x64')]},'options':{'expiresIn':0x15180}};return signJwt(_0x36afa9)['then'](function(_0x19d95d){_0x10602c[_0x44b8('0x65')](_0x44b8('0x66'),_0x19d95d);_0x10602c[_0x44b8('0x67')](_0x44b8('0x68'));})['catch'](function(_0x493840){return _0x10602c[_0x44b8('0x36')](0x1f4)['send'](_0x493840);});};exports[_0x44b8('0x69')]=function(_0x5785ef){if(_[_0x44b8('0x6a')](_0x5785ef[_0x44b8('0x50')])||_[_0x44b8('0x6a')](_0x5785ef[_0x44b8('0x6b')])){return null;}else{return createJwt(_0x5785ef);}};exports[_0x44b8('0x6c')]=function(_0x32f588){_0x32f588[_0x44b8('0x50')]=generateNonce();_0x32f588['apiKeyIat']=generateIssuedAt();return createJwt(_0x32f588);};exports[_0x44b8('0x6d')]=function(_0x37b2c2,_0x1e6a5e){var _0x492be6=_0x37b2c2[_0x44b8('0x47')][_0x44b8('0x48')];if(_0x492be6){var _0x45f9a0={'nonce':_0x1e6a5e[_0x44b8('0x50')],'iat':_0x1e6a5e['apiKeyIat'],'audience':hardwareConf[_0x44b8('0x49')](),'issuer':hardwareConf[_0x44b8('0x49')]()};return verifyJwt(_0x492be6,_0x45f9a0)['then'](function(){return generateApiKey(_0x1e6a5e);});}else{throw{'message':_0x44b8('0x6e')};}};exports[_0x44b8('0x6f')]=function(_0x35136e){var _0x3df6aa=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x3df6aa[_0x44b8('0x70')](_0x35136e))throw new db['Sequelize']['ValidationError'](_0x44b8('0x71'));return;};exports[_0x44b8('0x72')]=function(_0xa30834,_0x4358aa,_0x765e45){var _0x3f6b92=encryptor[_0x44b8('0x73')](_0x4358aa)[_0x44b8('0x74')](',');for(var _0x10bbd9=0x0;_0x10bbd9<_0x765e45;_0x10bbd9++){if(!_0x3f6b92[_0x10bbd9])break;if(_0xa30834[_0x44b8('0x75')]()===_0x3f6b92[_0x10bbd9][_0x44b8('0x75')]()){var _0x3f7576=util['format'](_0x44b8('0x76'),_0x765e45);if(_0x765e45===0x1){_0x3f7576=_0x44b8('0x77');}throw new db[(_0x44b8('0x78'))][(_0x44b8('0x79'))](_0x3f7576);}}return;};exports[_0x44b8('0x7a')]=function(_0x1df915,_0x426a6a){var _0x172ff3=_0x426a6a?encryptor[_0x44b8('0x73')](_0x426a6a)[_0x44b8('0x74')](','):[];if(_0x172ff3[_0x44b8('0x7b')]===0x5){_0x172ff3[_0x44b8('0x7c')](-0x1,0x1);}_0x172ff3[_0x44b8('0x7d')](_0x1df915);return encryptor[_0x44b8('0x7e')](_0x172ff3[_0x44b8('0x7f')](','));};function signJwt(_0x293c2e){var _0x25f91c=BPromise[_0x44b8('0x80')](jwt['sign'],{'context':jwt});var _0x1ec516=_0x293c2e[_0x44b8('0x81')]||config[_0x44b8('0x82')][_0x44b8('0x7')];return new BPromise(function(_0x51f763,_0x29ed5d){_0x25f91c(_0x293c2e[_0x44b8('0x83')],_0x1ec516,_0x293c2e['options'])[_0x44b8('0x34')](function(_0xc4d667){_0x51f763(_0xc4d667);})['catch'](function(_0x2a95f6){_0x29ed5d(_0x2a95f6);});});}function verifyJwt(_0x3354bd,_0x520929,_0x37e42e){var _0x454fe6=BPromise[_0x44b8('0x80')](jwt['verify'],{'context':jwt});var _0x16e790=_0x37e42e||config['secrets'][_0x44b8('0x7')];return new BPromise(function(_0x5161ea,_0x176536){_0x454fe6(_0x3354bd,_0x16e790,_0x520929)[_0x44b8('0x34')](function(_0xf4d81f){_0x5161ea(_0xf4d81f);})[_0x44b8('0x39')](function(_0x3c6aad){_0x176536(_0x3c6aad);});});}function generateNonce(){return crypto[_0x44b8('0x84')](0x10)['toString'](_0x44b8('0x85'));}function generateIssuedAt(){return Math['floor'](Date[_0x44b8('0x86')]()/0x3e8)[_0x44b8('0x87')]();}function createJwt(_0x4c1a7c){var _0x3f9438={'payload':{'iat':_0x4c1a7c[_0x44b8('0x6b')],'nonce':_0x4c1a7c[_0x44b8('0x50')]},'options':{'algorithm':_0x44b8('0x88'),'subject':_0x4c1a7c['id'][_0x44b8('0x87')](),'issuer':hardwareConf[_0x44b8('0x49')](),'audience':hardwareConf[_0x44b8('0x49')]()}};return signJwt(_0x3f9438)[_0x44b8('0x34')](function(_0x3f9102){return{'iat':_0x4c1a7c[_0x44b8('0x6b')],'nonce':_0x4c1a7c[_0x44b8('0x50')],'token':_0x3f9102};});}
\ No newline at end of file
index 02c34bf..f3bfbbf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['skip','ids','tag','countFilteredContacts','count','buildContactsQuery','getFilteredContacts','rows','catch','CmContact','describe','keys','startsWith','slice','length','cf_','type','map','./sql-utils','../../mysqldb','findAll','skipContactsQuery','resolve','getContactsSubquery','then','parseAdvancedSearchFilter','search','parseQueryParameters','where','default','fields','filter','clause','tags','user'];(function(_0x488876,_0x6baec9){var _0x58e179=function(_0x4e75b8){while(--_0x4e75b8){_0x488876['push'](_0x488876['shift']());}};_0x58e179(++_0x6baec9);}(_0xbaf0,0x12a));var _0x0baf=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xbaf0[_0x3947c9];return _0x2e7871;};'use strict';var _=require('lodash');var sqlUtils=require(_0x0baf('0x0'));var db=require(_0x0baf('0x1'))['db'];exports[_0x0baf('0x2')]=function(_0x263f79,_0x1688bc,_0x4d2e72,_0x5a3e42){var _0x232cc7={'count':0x0,'rows':[]};var _0x1c383e=sqlUtils[_0x0baf('0x3')](_0x1688bc,_0x263f79);if(_0x1c383e){return Promise[_0x0baf('0x4')](_0x232cc7);}var _0xe4c3c4=sqlUtils[_0x0baf('0x5')]();var _0x1a10b1={};var _0x2dcaac=![];var _0x1d0a0d=![];return Promise['resolve']()[_0x0baf('0x6')](function(){if(_0x263f79['search']){return sqlUtils[_0x0baf('0x7')](_0x263f79[_0x0baf('0x8')],_0x5a3e42);}else{return sqlUtils[_0x0baf('0x9')](_0x263f79,_0x5a3e42);}})[_0x0baf('0x6')](function(_0x7f54d4){_0xe4c3c4[_0x0baf('0xa')](_0x7f54d4[_0x0baf('0xb')]);_0xe4c3c4[_0x0baf('0xa')](_0x7f54d4[_0x0baf('0xc')]);_0xe4c3c4[_0x0baf('0xa')](_0x7f54d4[_0x0baf('0xd')]);_0xe4c3c4['where'](_0x7f54d4['user'][_0x0baf('0xe')]);_0x1a10b1=_0x7f54d4[_0x0baf('0xf')];_0x1d0a0d=_0x7f54d4[_0x0baf('0x10')][_0x0baf('0x11')];return sqlUtils['checkListsRestrictions'](_0x1688bc,_0x263f79,_0x1d0a0d);})[_0x0baf('0x6')](function(_0x49e44b){_0xe4c3c4[_0x0baf('0xa')](_0x49e44b);var _0x1f50c3=_0x263f79[_0x0baf('0x8')]?_0x1a10b1[_0x0baf('0x12')]:_0x263f79[_0x0baf('0x13')];_0x2dcaac=_0x1f50c3?!![]:![];return sqlUtils[_0x0baf('0x14')](_0xe4c3c4,_0x1f50c3);})['then'](function(_0x4cd79d){_0x232cc7[_0x0baf('0x15')]=_0x4cd79d;if(_0x232cc7[_0x0baf('0x15')]===0x0){return;}return sqlUtils[_0x0baf('0x16')](_0xe4c3c4,_0x263f79[_0x0baf('0xc')],_0x4d2e72,_0x2dcaac,_0x1a10b1[_0x0baf('0xe')],_0x1d0a0d);})[_0x0baf('0x6')](function(_0x53c338){if(!_0x53c338){return[];}return sqlUtils[_0x0baf('0x17')](_0x53c338,_0x263f79,_0x4d2e72);})[_0x0baf('0x6')](function(_0x1ef0e5){_0x232cc7[_0x0baf('0x18')]=_0x1ef0e5;return _0x232cc7;})[_0x0baf('0x19')](function(_0x42b7f2){throw _0x42b7f2;});};exports['describe']=function(){var _0x5cff5d={};var _0x1410ec=[];return db[_0x0baf('0x1a')][_0x0baf('0x1b')]()[_0x0baf('0x6')](function(_0x1fa92b){_0x5cff5d=_0x1fa92b;var _0x3e3e20=Object[_0x0baf('0x1c')](_0x5cff5d)[_0x0baf('0xd')](function(_0x2c42e2){return _[_0x0baf('0x1d')](_0x2c42e2,'cf_')?_0x2c42e2:undefined;});var _0x334bd6=_0x3e3e20['map'](function(_0xf6c158){return db['CmCustomField']['findOne']({'where':{'id':_0xf6c158[_0x0baf('0x1e')](0x3)},'raw':!![]});});return Promise['all'](_0x334bd6);})['then'](function(_0x47c4b){for(var _0x27b59c=0x0;_0x27b59c<_0x47c4b[_0x0baf('0x1f')];_0x27b59c++){if(_0x47c4b[_0x27b59c]){var _0x19d9fd=_0x0baf('0x20')+_0x47c4b[_0x27b59c]['id'];_0x5cff5d[_0x19d9fd]['fieldType']=_0x47c4b[_0x27b59c][_0x0baf('0x21')];}}_0x1410ec=_[_0x0baf('0x22')](Object[_0x0baf('0x1c')](_0x5cff5d),function(_0x366e71){return{'name':_0x366e71,'type':_0x5cff5d[_0x366e71][_0x0baf('0x21')]};});return _0x1410ec;})[_0x0baf('0x19')](function(_0x453525){throw _0x453525;});};
\ No newline at end of file
+var _0x757a=['findOne','slice','fieldType','keys','type','./sql-utils','../../mysqldb','skipContactsQuery','resolve','getContactsSubquery','then','search','parseAdvancedSearchFilter','parseQueryParameters','where','default','fields','tags','checkListsRestrictions','ids','tag','countFilteredContacts','count','clause','rows','catch','describe','startsWith','cf_','map','CmCustomField'];(function(_0x5ddd87,_0x4cee42){var _0x4e4161=function(_0x50fb9d){while(--_0x50fb9d){_0x5ddd87['push'](_0x5ddd87['shift']());}};_0x4e4161(++_0x4cee42);}(_0x757a,0xde));var _0xa757=function(_0x136220,_0x4d828c){_0x136220=_0x136220-0x0;var _0x272545=_0x757a[_0x136220];return _0x272545;};'use strict';var _=require('lodash');var sqlUtils=require(_0xa757('0x0'));var db=require(_0xa757('0x1'))['db'];exports['findAll']=function(_0x5c03c3,_0x5709ed,_0x32be3b,_0x1721c6){var _0x1c2932={'count':0x0,'rows':[]};var _0x453d07=sqlUtils[_0xa757('0x2')](_0x5709ed,_0x5c03c3);if(_0x453d07){return Promise[_0xa757('0x3')](_0x1c2932);}var _0x5edca8=sqlUtils[_0xa757('0x4')]();var _0x4343b6={};var _0x53be0e=![];var _0x2930fa=![];return Promise[_0xa757('0x3')]()[_0xa757('0x5')](function(){if(_0x5c03c3[_0xa757('0x6')]){return sqlUtils[_0xa757('0x7')](_0x5c03c3['search'],_0x1721c6);}else{return sqlUtils[_0xa757('0x8')](_0x5c03c3,_0x1721c6);}})[_0xa757('0x5')](function(_0x32f0ec){_0x5edca8[_0xa757('0x9')](_0x32f0ec[_0xa757('0xa')]);_0x5edca8[_0xa757('0x9')](_0x32f0ec[_0xa757('0xb')]);_0x5edca8['where'](_0x32f0ec['filter']);_0x5edca8['where'](_0x32f0ec['user']['clause']);_0x4343b6=_0x32f0ec[_0xa757('0xc')];_0x2930fa=_0x32f0ec['user']['skip'];return sqlUtils[_0xa757('0xd')](_0x5709ed,_0x5c03c3,_0x2930fa);})['then'](function(_0x481508){_0x5edca8[_0xa757('0x9')](_0x481508);var _0x1b670e=_0x5c03c3[_0xa757('0x6')]?_0x4343b6[_0xa757('0xe')]:_0x5c03c3[_0xa757('0xf')];_0x53be0e=_0x1b670e?!![]:![];return sqlUtils[_0xa757('0x10')](_0x5edca8,_0x1b670e);})[_0xa757('0x5')](function(_0x2f7947){_0x1c2932[_0xa757('0x11')]=_0x2f7947;if(_0x1c2932[_0xa757('0x11')]===0x0){return;}return sqlUtils['buildContactsQuery'](_0x5edca8,_0x5c03c3[_0xa757('0xb')],_0x32be3b,_0x53be0e,_0x4343b6[_0xa757('0x12')],_0x2930fa);})[_0xa757('0x5')](function(_0x4d9f58){if(!_0x4d9f58){return[];}return sqlUtils['getFilteredContacts'](_0x4d9f58,_0x5c03c3,_0x32be3b);})[_0xa757('0x5')](function(_0x468d45){_0x1c2932[_0xa757('0x13')]=_0x468d45;return _0x1c2932;})[_0xa757('0x14')](function(_0x27f4ba){throw _0x27f4ba;});};exports[_0xa757('0x15')]=function(){var _0x4bd137={};var _0x58954=[];return db['CmContact'][_0xa757('0x15')]()[_0xa757('0x5')](function(_0x14014c){_0x4bd137=_0x14014c;var _0x2c9ec6=Object['keys'](_0x4bd137)['filter'](function(_0x40ec48){return _[_0xa757('0x16')](_0x40ec48,_0xa757('0x17'))?_0x40ec48:undefined;});var _0x8d121f=_0x2c9ec6[_0xa757('0x18')](function(_0x40562f){return db[_0xa757('0x19')][_0xa757('0x1a')]({'where':{'id':_0x40562f[_0xa757('0x1b')](0x3)},'raw':!![]});});return Promise['all'](_0x8d121f);})[_0xa757('0x5')](function(_0x59e9d4){for(var _0x422e9e=0x0;_0x422e9e<_0x59e9d4['length'];_0x422e9e++){if(_0x59e9d4[_0x422e9e]){var _0x40551d=_0xa757('0x17')+_0x59e9d4[_0x422e9e]['id'];_0x4bd137[_0x40551d][_0xa757('0x1c')]=_0x59e9d4[_0x422e9e]['type'];}}_0x58954=_[_0xa757('0x18')](Object[_0xa757('0x1d')](_0x4bd137),function(_0x471e84){return{'name':_0x471e84,'type':_0x4bd137[_0x471e84][_0xa757('0x1e')]};});return _0x58954;})['catch'](function(_0x449a7d){throw _0x449a7d;});};
\ No newline at end of file
index 272a0df..6131b86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e51=['sequelize','query','toString','Tags','clone','isEmpty','COUNT(*)','lodash','squel','../parsers/advancedSearch','../parsers/qs','../interaction/utils','../../mysqldb','role','agent','search','ListId','autocomplete','true','from','cm_contacts','where','c.deletedAt\x20IS\x20NULL','subqry','left_join','.id','ct.CmContactId\x20=\x20','tools_tags','t.id\x20=\x20ct.TagId','firstName','lastName','phone','mobile','email','CompanyId','createdAt','updatedAt','deletedAt','includes','push','forEach','TagIds','field','GROUP_CONCAT(DISTINCT\x20t.id)','expr','getSelectedTags','CONCAT(\x27,\x27,\x20subqry.TagIds,\x20\x27,\x27)\x20LIKE\x20?','replace','split','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.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','c.email\x20LIKE\x20?','parseSearch','conditions','find','name','dateOfBirth','fieldType','datetime','castTo','buildExpression','type','default','text','value','start','map','tags','clause','User','user','and','uc.UserId\x20=\x20?','skip','compact','Contact','c.ListId\x20IN\x20?','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','resolve','then','fields','tag','filter','getLists','c.ListId\x20IS\x20NULL','select','group','c.id','limit','offset','subqry.id','having','order','subqry.','findAll','color','keyBy','Sequelize','QueryTypes','SELECT'];(function(_0x5e0689,_0x212e63){var _0x4b3981=function(_0x4645c){while(--_0x4645c){_0x5e0689['push'](_0x5e0689['shift']());}};_0x4b3981(++_0x212e63);}(_0x3e51,0x74));var _0x13e5=function(_0x5c39ec,_0x324bef){_0x5c39ec=_0x5c39ec-0x0;var _0x1a2a44=_0x3e51[_0x5c39ec];return _0x1a2a44;};'use strict';var _=require(_0x13e5('0x0'));var squel=require(_0x13e5('0x1'));var as=require(_0x13e5('0x2'));var qs=require(_0x13e5('0x3'));var utils=require(_0x13e5('0x4'));var db=require(_0x13e5('0x5'))['db'];function skipContactsQuery(_0x5c77d7,_0x27658e){var _0x3edc3e=![];if(_0x5c77d7[_0x13e5('0x6')]===_0x13e5('0x7')&&!_0x27658e[_0x13e5('0x8')]&&!_0x27658e[_0x13e5('0x9')]&&_0x27658e[_0x13e5('0xa')]!==_0x13e5('0xb')){_0x3edc3e=!![];}return _0x3edc3e;}function getContactsSubquery(){return squel['select']()[_0x13e5('0xc')](_0x13e5('0xd'),'c')[_0x13e5('0xe')](_0x13e5('0xf'));}function applyJoinClauses(_0x27c7fc,_0x59ed31){var _0x3d5bc3=_0x59ed31?'c':_0x13e5('0x10');_0x27c7fc[_0x13e5('0x11')]('cm_user_has_contacts','uc','uc.CmContactId\x20=\x20'+_0x3d5bc3+_0x13e5('0x12'))[_0x13e5('0x11')]('cm_contact_has_tags','ct',_0x13e5('0x13')+_0x3d5bc3+_0x13e5('0x12'))[_0x13e5('0x11')](_0x13e5('0x14'),'t',_0x13e5('0x15'));return _0x27c7fc;}function addFieldsToQuery(_0x5b66b9,_0x5a5e2c,_0xdc5658,_0x2d61a7,_0xb1dd18){var _0x287427=_0xb1dd18?'c':_0x13e5('0x10');if(!_0x5a5e2c){_0x5a5e2c=['id',_0x13e5('0x16'),_0x13e5('0x17'),_0x13e5('0x18'),_0x13e5('0x19'),'fax',_0x13e5('0x1a'),_0x13e5('0x9'),_0x13e5('0x1b'),_0x13e5('0x1c'),_0x13e5('0x1d'),_0x13e5('0x1e'),'TagIds'];}else if(!_0x5a5e2c[_0x13e5('0x1f')]('id')){_0x5a5e2c[_0x13e5('0x20')]('id');}var _0x34f067=_0xdc5658&&_0xb1dd18||!_0xdc5658&&!_0xb1dd18;if(_0x2d61a7){_0x34f067=_0x2d61a7&&_0xb1dd18||!_0x2d61a7&&!_0xb1dd18;}_0x5a5e2c[_0x13e5('0x21')](function(_0x4f07cf){if(_0x4f07cf===_0x13e5('0x22')){if(_0x34f067){_0x5b66b9[_0x13e5('0x23')](_0x13e5('0x24'),_0x4f07cf);}else if(_0xdc5658||_0x2d61a7){_0x5b66b9[_0x13e5('0x23')](_0x287427+'.'+_0x4f07cf);}}else{_0x5b66b9[_0x13e5('0x23')](_0x287427+'.'+_0x4f07cf);}});return _0x5b66b9;}function getSqlClauses(){var _0x4c0c65={'default':squel[_0x13e5('0x25')](),'fields':squel[_0x13e5('0x25')](),'filter':squel[_0x13e5('0x25')](),'tags':{'clause':squel['expr'](),'ids':null},'user':{'clause':squel[_0x13e5('0x25')](),'skip':![]}};return _0x4c0c65;}function parseTagParameter(_0x181ecf){var _0x4a90a0=squel['expr']();if(_0x181ecf){var _0x516075=utils[_0x13e5('0x26')](_0x181ecf);_0x516075[_0x13e5('0x21')](function(_0x1df0c5){_0x4a90a0['or'](_0x13e5('0x27'),'%,'+_0x1df0c5+',%');});}return _0x4a90a0;}function parseSearchFilter(_0x121709){var _0x236238=squel['expr']();if(_0x121709){var _0x1f28a5=_0x121709[_0x13e5('0x28')]('\x5c','\x5c\x5c')[_0x13e5('0x28')](/'/g,'\x27\x27');if(_0x1f28a5[_0x13e5('0x29')]('\x20')[_0x13e5('0x2a')]>0x1){_0x236238['or'](_0x13e5('0x2b'),qs[_0x13e5('0x2c')](_0x1f28a5),null);}else{if(qs[_0x13e5('0x2d')](_0x1f28a5)){_0x236238['or']('c.id\x20LIKE\x20?',_0x1f28a5+'%');_0x236238['or'](_0x13e5('0x2e'),_0x1f28a5+'%');_0x236238['or'](_0x13e5('0x2f'),_0x1f28a5+'%');_0x236238['or'](_0x13e5('0x30'),_0x1f28a5+'%');}else if(qs[_0x13e5('0x31')](_0x1f28a5)){_0x236238['or']('c.email\x20LIKE\x20?',_0x1f28a5+'%');}else{_0x236238['or'](_0x13e5('0x32'),'%'+_0x1f28a5+'%');_0x236238['or'](_0x13e5('0x33'),'%'+_0x1f28a5+'%');_0x236238['or'](_0x13e5('0x34'),'%'+_0x1f28a5+'%');}}}return _0x236238;}function parseAdvancedSearchFilter(_0x1f436c,_0x11f3ed){var _0x1512bc=getSqlClauses();var _0x5f0e35=as[_0x13e5('0x35')](_0x1f436c);var _0x49d07d=_0x5f0e35['sqlOperator'];for(var _0x4f8c82=0x0;_0x4f8c82<_0x5f0e35[_0x13e5('0x36')]['length'];_0x4f8c82++){var _0x3bc2f3=_0x5f0e35[_0x13e5('0x36')][_0x4f8c82];var _0x152ae1='c';var _0x15c836=_[_0x13e5('0x37')](_0x11f3ed,[_0x13e5('0x38'),_0x3bc2f3[_0x13e5('0x23')]]);if(_0x15c836){if(_0x3bc2f3['field']===_0x13e5('0x39')||_0x15c836[_0x13e5('0x3a')]===_0x13e5('0x3b')){_0x3bc2f3[_0x13e5('0x3c')]='DATE';}var _0x27fc2=as[_0x13e5('0x3d')](_0x152ae1,_0x15c836[_0x13e5('0x3e')],_0x3bc2f3);_0x1512bc[_0x13e5('0x3f')][_0x49d07d](_0x27fc2[_0x13e5('0x40')],_0x27fc2[_0x13e5('0x41')][_0x13e5('0x42')],_0x27fc2[_0x13e5('0x41')]['end']);}else{if(_0x3bc2f3['field']==='Tag'){var _0x231151=_0x3bc2f3[_0x13e5('0x41')][_0x13e5('0x29')](',')[_0x13e5('0x43')](function(_0x21f87c){return Number(_0x21f87c);});var _0x293cad=parseTagParameter(_0x231151);_0x1512bc[_0x13e5('0x44')][_0x13e5('0x45')]['and'](_0x293cad);_0x1512bc[_0x13e5('0x44')]['ids']=_0x231151;}else if(_0x3bc2f3[_0x13e5('0x23')]===_0x13e5('0x46')){_0x1512bc[_0x13e5('0x47')][_0x13e5('0x45')][_0x13e5('0x48')](_0x13e5('0x49'),_0x3bc2f3[_0x13e5('0x41')]);_0x1512bc[_0x13e5('0x47')][_0x13e5('0x4a')]=!![];}}}return _0x1512bc;}function parseModelFields(_0x58ba32,_0x46a899){var _0x27dbe3=squel['expr']();var _0x2561a6=_(_0x58ba32)['keys']()[_0x13e5('0x43')](function(_0x4c844a){return _['some'](_0x46a899,['name',_0x4c844a])?_0x4c844a:undefined;})[_0x13e5('0x4b')]()['value']();if(_0x58ba32[_0x13e5('0x4c')]){_0x2561a6[_0x13e5('0x20')](_0x13e5('0x4c'));}if(_0x2561a6['length']>0x0){_0x2561a6[_0x13e5('0x21')](function(_0x5ec88d){if(_0x5ec88d===_0x13e5('0x9')){_0x27dbe3[_0x13e5('0x48')](_0x13e5('0x4d'),[][_0x13e5('0x4e')](_0x58ba32[_0x5ec88d]));}else if(_0x5ec88d===_0x13e5('0x4c')){var _0x3b2335='%'+_0x58ba32[_0x5ec88d]+'%';_0x27dbe3['and'](_0x13e5('0x4f'),_0x3b2335);}else{_0x27dbe3[_0x13e5('0x48')]('c.'+_0x5ec88d+'\x20=\x20?',_0x58ba32[_0x5ec88d]);}});}return _0x27dbe3;}function parseQueryParameters(_0x4b3d90,_0x5f32c0){var _0x3df340=getSqlClauses();return Promise[_0x13e5('0x50')]()[_0x13e5('0x51')](function(){return parseModelFields(_0x4b3d90,_0x5f32c0);})[_0x13e5('0x51')](function(_0x463477){_0x3df340[_0x13e5('0x52')][_0x13e5('0x48')](_0x463477);return parseTagParameter(_0x4b3d90[_0x13e5('0x53')]);})[_0x13e5('0x51')](function(_0x5db504){_0x3df340[_0x13e5('0x44')][_0x13e5('0x45')][_0x13e5('0x48')](_0x5db504);return parseSearchFilter(_0x4b3d90['filter']);})[_0x13e5('0x51')](function(_0x48c6a2){_0x3df340[_0x13e5('0x54')]=_0x48c6a2;return _0x3df340;});}function checkListsRestrictions(_0x3a3117,_0x3b8ea1,_0x4662a7){var _0x4b4d8b=squel[_0x13e5('0x25')]();return Promise[_0x13e5('0x50')]()[_0x13e5('0x51')](function(){if(_0x3b8ea1['search']&&_0x3a3117['role']===_0x13e5('0x7')&&!_0x4662a7){return _0x3a3117[_0x13e5('0x55')]({'attributes':['id'],'raw':!![]});}})['then'](function(_0x35e672){if(_0x35e672){if(_0x35e672['length']===0x0){_0x4b4d8b[_0x13e5('0x48')](_0x13e5('0x56'));}else{_0x4b4d8b[_0x13e5('0x48')](_0x13e5('0x4d'),_[_0x13e5('0x43')](_0x35e672,'id'));}}})[_0x13e5('0x51')](function(){return _0x4b4d8b;});}function buildContactsQuery(_0x272f87,_0xee689c,_0x4e79fb,_0x4d1d55,_0xef9980,_0x3470f7){if(_0xee689c){_0xee689c=_0x4e79fb['attributes'];}_0x272f87=addFieldsToQuery(_0x272f87,_0xee689c,_0x4d1d55,_0x3470f7,!![]);var _0x8546=squel[_0x13e5('0x57')]();_0x8546=addFieldsToQuery(_0x8546,_0xee689c,_0x4d1d55,_0x3470f7,![]);if(_0x4d1d55||_0x3470f7){_0x272f87=applyJoinClauses(_0x272f87,!![]);_0x272f87[_0x13e5('0x58')](_0x13e5('0x59'));if(_0x4e79fb[_0x13e5('0x5a')]){_0x8546[_0x13e5('0x5a')](_0x4e79fb['limit']);}if(_0x4e79fb[_0x13e5('0x5b')]){_0x8546[_0x13e5('0x5b')](_0x4e79fb[_0x13e5('0x5b')]);}}else{_0x8546=applyJoinClauses(_0x8546,![]);_0x8546[_0x13e5('0x58')](_0x13e5('0x5c'));if(_0x4e79fb[_0x13e5('0x5a')]){_0x272f87[_0x13e5('0x5a')](_0x4e79fb[_0x13e5('0x5a')]);}if(_0x4e79fb['offset']){_0x272f87[_0x13e5('0x5b')](_0x4e79fb[_0x13e5('0x5b')]);}}_0x8546[_0x13e5('0x5d')](_0xef9980);if(_0x4e79fb[_0x13e5('0x5e')]){_0x4e79fb[_0x13e5('0x5e')]['forEach'](function(_0x97b7c6){_0x272f87[_0x13e5('0x5e')]('c.'+_0x97b7c6[0x0],_0x97b7c6[0x1]==='DESC'?![]:!![]);_0x8546[_0x13e5('0x5e')](_0x13e5('0x5f')+_0x97b7c6[0x0],_0x97b7c6[0x1]==='DESC'?![]:!![]);});}_0x8546[_0x13e5('0xc')](_0x272f87,_0x13e5('0x10'));return _0x8546;}function getFilteredContacts(_0x573821){var _0x719068=[];return db['Tag'][_0x13e5('0x60')]({'attributes':['id',_0x13e5('0x38'),_0x13e5('0x61')],'raw':!![]})[_0x13e5('0x51')](function(_0x4bb468){_0x719068=_[_0x13e5('0x62')](_0x4bb468,'id');var _0x362e25={'type':db[_0x13e5('0x63')][_0x13e5('0x64')][_0x13e5('0x65')],'model':db['CmContact'],'mapToModel':!![],'nest':!![],'raw':!![]};return db[_0x13e5('0x66')][_0x13e5('0x67')](_0x573821[_0x13e5('0x68')](),_0x362e25);})['then'](function(_0x4e5c12){_0x4e5c12[_0x13e5('0x21')](function(_0x2fc3bb){if(_0x2fc3bb[_0x13e5('0x22')]){_0x2fc3bb[_0x13e5('0x69')]=[];_0x2fc3bb['TagIds'][_0x13e5('0x29')](',')[_0x13e5('0x21')](function(_0x3f1f8e){_0x2fc3bb[_0x13e5('0x69')][_0x13e5('0x20')](_0x719068[_0x3f1f8e]);});}delete _0x2fc3bb[_0x13e5('0x22')];});return _0x4e5c12;});}function countFilteredContacts(_0x2bd29e,_0x230311){var _0xbc1868=_0x2bd29e[_0x13e5('0x6a')]();_0xbc1868[_0x13e5('0x23')]('COUNT(*)');_0xbc1868=applyJoinClauses(_0xbc1868,!![]);_0x2bd29e[_0x13e5('0x58')](_0x13e5('0x59'));var _0x3fb95e=utils[_0x13e5('0x26')](_0x230311);if(!_[_0x13e5('0x6b')](_0x3fb95e)){_0xbc1868[_0x13e5('0xe')]('t.id\x20IN\x20?',_0x3fb95e);}var _0x257bd5={'type':db[_0x13e5('0x63')][_0x13e5('0x64')][_0x13e5('0x65')],'raw':!![]};return db[_0x13e5('0x66')][_0x13e5('0x67')](_0xbc1868[_0x13e5('0x68')](),_0x257bd5)[_0x13e5('0x51')](function(_0x3994d3){return _0x3994d3[0x0][_0x13e5('0x6c')];});}module['exports']={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};
\ No newline at end of file
+var _0x050f=['squel','../parsers/advancedSearch','../parsers/qs','../interaction/utils','../../mysqldb','role','agent','search','ListId','autocomplete','true','cm_contacts','where','c.deletedAt\x20IS\x20NULL','subqry','left_join','cm_user_has_contacts','uc.CmContactId\x20=\x20','.id','cm_contact_has_tags','ct.CmContactId\x20=\x20','tools_tags','t.id\x20=\x20ct.TagId','lastName','phone','mobile','fax','email','CompanyId','updatedAt','deletedAt','TagIds','push','field','GROUP_CONCAT(DISTINCT\x20t.id)','expr','getSelectedTags','forEach','CONCAT(\x27,\x27,\x20subqry.TagIds,\x20\x27,\x27)\x20LIKE\x20?','replace','split','length','getFullTextValue','isNumeric','c.id\x20LIKE\x20?','c.fax\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','parseSearch','sqlOperator','conditions','find','fieldType','datetime','castTo','buildExpression','type','default','text','value','start','end','Tag','map','tags','clause','and','User','user','uc.UserId\x20=\x20?','keys','some','compact','Contact','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','attributes','select','group','c.id','limit','offset','subqry.id','order','subqry.','DESC','from','findAll','color','keyBy','Sequelize','QueryTypes','SELECT','CmContact','query','toString','Tags','clone','COUNT(*)','isEmpty','t.id\x20IN\x20?','sequelize','exports','lodash'];(function(_0x367e5b,_0x5721e4){var _0x4b909e=function(_0x22c6a4){while(--_0x22c6a4){_0x367e5b['push'](_0x367e5b['shift']());}};_0x4b909e(++_0x5721e4);}(_0x050f,0xe5));var _0xf050=function(_0x1a2409,_0x50ab30){_0x1a2409=_0x1a2409-0x0;var _0x4e9d30=_0x050f[_0x1a2409];return _0x4e9d30;};'use strict';var _=require(_0xf050('0x0'));var squel=require(_0xf050('0x1'));var as=require(_0xf050('0x2'));var qs=require(_0xf050('0x3'));var utils=require(_0xf050('0x4'));var db=require(_0xf050('0x5'))['db'];function skipContactsQuery(_0x2ec582,_0x205630){var _0x599452=![];if(_0x2ec582[_0xf050('0x6')]===_0xf050('0x7')&&!_0x205630[_0xf050('0x8')]&&!_0x205630[_0xf050('0x9')]&&_0x205630[_0xf050('0xa')]!==_0xf050('0xb')){_0x599452=!![];}return _0x599452;}function getContactsSubquery(){return squel['select']()['from'](_0xf050('0xc'),'c')[_0xf050('0xd')](_0xf050('0xe'));}function applyJoinClauses(_0x4a291e,_0x4b4c1c){var _0x40e7a3=_0x4b4c1c?'c':_0xf050('0xf');_0x4a291e[_0xf050('0x10')](_0xf050('0x11'),'uc',_0xf050('0x12')+_0x40e7a3+_0xf050('0x13'))['left_join'](_0xf050('0x14'),'ct',_0xf050('0x15')+_0x40e7a3+_0xf050('0x13'))[_0xf050('0x10')](_0xf050('0x16'),'t',_0xf050('0x17'));return _0x4a291e;}function addFieldsToQuery(_0x5c8d09,_0x152c15,_0x2a5fc5,_0x50a5db,_0x155970){var _0xb15a8d=_0x155970?'c':_0xf050('0xf');if(!_0x152c15){_0x152c15=['id','firstName',_0xf050('0x18'),_0xf050('0x19'),_0xf050('0x1a'),_0xf050('0x1b'),_0xf050('0x1c'),_0xf050('0x9'),_0xf050('0x1d'),'createdAt',_0xf050('0x1e'),_0xf050('0x1f'),_0xf050('0x20')];}else if(!_0x152c15['includes']('id')){_0x152c15[_0xf050('0x21')]('id');}var _0x1a12c5=_0x2a5fc5&&_0x155970||!_0x2a5fc5&&!_0x155970;if(_0x50a5db){_0x1a12c5=_0x50a5db&&_0x155970||!_0x50a5db&&!_0x155970;}_0x152c15['forEach'](function(_0x1b5376){if(_0x1b5376===_0xf050('0x20')){if(_0x1a12c5){_0x5c8d09[_0xf050('0x22')](_0xf050('0x23'),_0x1b5376);}else if(_0x2a5fc5||_0x50a5db){_0x5c8d09[_0xf050('0x22')](_0xb15a8d+'.'+_0x1b5376);}}else{_0x5c8d09[_0xf050('0x22')](_0xb15a8d+'.'+_0x1b5376);}});return _0x5c8d09;}function getSqlClauses(){var _0x31f2bc={'default':squel[_0xf050('0x24')](),'fields':squel[_0xf050('0x24')](),'filter':squel[_0xf050('0x24')](),'tags':{'clause':squel[_0xf050('0x24')](),'ids':null},'user':{'clause':squel[_0xf050('0x24')](),'skip':![]}};return _0x31f2bc;}function parseTagParameter(_0x101225){var _0x14afe0=squel[_0xf050('0x24')]();if(_0x101225){var _0x3ec234=utils[_0xf050('0x25')](_0x101225);_0x3ec234[_0xf050('0x26')](function(_0x8ddf45){_0x14afe0['or'](_0xf050('0x27'),'%,'+_0x8ddf45+',%');});}return _0x14afe0;}function parseSearchFilter(_0x13e8c8){var _0x9e9ea9=squel[_0xf050('0x24')]();if(_0x13e8c8){var _0x10d6d9=_0x13e8c8[_0xf050('0x28')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(_0x10d6d9[_0xf050('0x29')]('\x20')[_0xf050('0x2a')]>0x1){_0x9e9ea9['or']('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xf050('0x2b')](_0x10d6d9),null);}else{if(qs[_0xf050('0x2c')](_0x10d6d9)){_0x9e9ea9['or'](_0xf050('0x2d'),_0x10d6d9+'%');_0x9e9ea9['or']('c.phone\x20LIKE\x20?',_0x10d6d9+'%');_0x9e9ea9['or']('c.mobile\x20LIKE\x20?',_0x10d6d9+'%');_0x9e9ea9['or'](_0xf050('0x2e'),_0x10d6d9+'%');}else if(qs[_0xf050('0x2f')](_0x10d6d9)){_0x9e9ea9['or'](_0xf050('0x30'),_0x10d6d9+'%');}else{_0x9e9ea9['or'](_0xf050('0x31'),'%'+_0x10d6d9+'%');_0x9e9ea9['or'](_0xf050('0x32'),'%'+_0x10d6d9+'%');_0x9e9ea9['or'](_0xf050('0x30'),'%'+_0x10d6d9+'%');}}}return _0x9e9ea9;}function parseAdvancedSearchFilter(_0x313c79,_0x363cc8){var _0x1224b3=getSqlClauses();var _0x1b575a=as[_0xf050('0x33')](_0x313c79);var _0x489107=_0x1b575a[_0xf050('0x34')];for(var _0xc1613a=0x0;_0xc1613a<_0x1b575a[_0xf050('0x35')][_0xf050('0x2a')];_0xc1613a++){var _0x4508a7=_0x1b575a[_0xf050('0x35')][_0xc1613a];var _0x460660='c';var _0x2af162=_[_0xf050('0x36')](_0x363cc8,['name',_0x4508a7[_0xf050('0x22')]]);if(_0x2af162){if(_0x4508a7[_0xf050('0x22')]==='dateOfBirth'||_0x2af162[_0xf050('0x37')]===_0xf050('0x38')){_0x4508a7[_0xf050('0x39')]='DATE';}var _0x1d624d=as[_0xf050('0x3a')](_0x460660,_0x2af162[_0xf050('0x3b')],_0x4508a7);_0x1224b3[_0xf050('0x3c')][_0x489107](_0x1d624d[_0xf050('0x3d')],_0x1d624d[_0xf050('0x3e')][_0xf050('0x3f')],_0x1d624d['value'][_0xf050('0x40')]);}else{if(_0x4508a7[_0xf050('0x22')]===_0xf050('0x41')){var _0xd14deb=_0x4508a7[_0xf050('0x3e')][_0xf050('0x29')](',')[_0xf050('0x42')](function(_0x1f17e2){return Number(_0x1f17e2);});var _0x5befc7=parseTagParameter(_0xd14deb);_0x1224b3[_0xf050('0x43')][_0xf050('0x44')][_0xf050('0x45')](_0x5befc7);_0x1224b3[_0xf050('0x43')]['ids']=_0xd14deb;}else if(_0x4508a7['field']===_0xf050('0x46')){_0x1224b3[_0xf050('0x47')][_0xf050('0x44')][_0xf050('0x45')](_0xf050('0x48'),_0x4508a7['value']);_0x1224b3[_0xf050('0x47')]['skip']=!![];}}}return _0x1224b3;}function parseModelFields(_0x697edd,_0x54e460){var _0x52af2f=squel['expr']();var _0x368ca1=_(_0x697edd)[_0xf050('0x49')]()[_0xf050('0x42')](function(_0x5108c6){return _[_0xf050('0x4a')](_0x54e460,['name',_0x5108c6])?_0x5108c6:undefined;})[_0xf050('0x4b')]()[_0xf050('0x3e')]();if(_0x697edd['Contact']){_0x368ca1[_0xf050('0x21')](_0xf050('0x4c'));}if(_0x368ca1['length']>0x0){_0x368ca1[_0xf050('0x26')](function(_0x397358){if(_0x397358===_0xf050('0x9')){_0x52af2f[_0xf050('0x45')](_0xf050('0x4d'),[][_0xf050('0x4e')](_0x697edd[_0x397358]));}else if(_0x397358===_0xf050('0x4c')){var _0x5c5bbf='%'+_0x697edd[_0x397358]+'%';_0x52af2f[_0xf050('0x45')](_0xf050('0x4f'),_0x5c5bbf);}else{_0x52af2f['and']('c.'+_0x397358+_0xf050('0x50'),_0x697edd[_0x397358]);}});}return _0x52af2f;}function parseQueryParameters(_0x4fdd13,_0x2d8f78){var _0x382d1d=getSqlClauses();return Promise[_0xf050('0x51')]()[_0xf050('0x52')](function(){return parseModelFields(_0x4fdd13,_0x2d8f78);})[_0xf050('0x52')](function(_0x4f5be0){_0x382d1d[_0xf050('0x53')][_0xf050('0x45')](_0x4f5be0);return parseTagParameter(_0x4fdd13[_0xf050('0x54')]);})[_0xf050('0x52')](function(_0x961c34){_0x382d1d[_0xf050('0x43')][_0xf050('0x44')][_0xf050('0x45')](_0x961c34);return parseSearchFilter(_0x4fdd13[_0xf050('0x55')]);})[_0xf050('0x52')](function(_0x27fceb){_0x382d1d[_0xf050('0x55')]=_0x27fceb;return _0x382d1d;});}function checkListsRestrictions(_0x552ffa,_0x59c975,_0x456cf4){var _0x9bb32a=squel[_0xf050('0x24')]();return Promise['resolve']()[_0xf050('0x52')](function(){if(_0x59c975[_0xf050('0x8')]&&_0x552ffa[_0xf050('0x6')]===_0xf050('0x7')&&!_0x456cf4){return _0x552ffa[_0xf050('0x56')]({'attributes':['id'],'raw':!![]});}})[_0xf050('0x52')](function(_0x24e2f9){if(_0x24e2f9){if(_0x24e2f9[_0xf050('0x2a')]===0x0){_0x9bb32a[_0xf050('0x45')](_0xf050('0x57'));}else{_0x9bb32a[_0xf050('0x45')]('c.ListId\x20IN\x20?',_[_0xf050('0x42')](_0x24e2f9,'id'));}}})[_0xf050('0x52')](function(){return _0x9bb32a;});}function buildContactsQuery(_0x2f3499,_0x1e0eb7,_0x8e43fe,_0x5573a4,_0x4fc125,_0x4de31e){if(_0x1e0eb7){_0x1e0eb7=_0x8e43fe[_0xf050('0x58')];}_0x2f3499=addFieldsToQuery(_0x2f3499,_0x1e0eb7,_0x5573a4,_0x4de31e,!![]);var _0x187d48=squel[_0xf050('0x59')]();_0x187d48=addFieldsToQuery(_0x187d48,_0x1e0eb7,_0x5573a4,_0x4de31e,![]);if(_0x5573a4||_0x4de31e){_0x2f3499=applyJoinClauses(_0x2f3499,!![]);_0x2f3499[_0xf050('0x5a')](_0xf050('0x5b'));if(_0x8e43fe[_0xf050('0x5c')]){_0x187d48[_0xf050('0x5c')](_0x8e43fe[_0xf050('0x5c')]);}if(_0x8e43fe[_0xf050('0x5d')]){_0x187d48[_0xf050('0x5d')](_0x8e43fe[_0xf050('0x5d')]);}}else{_0x187d48=applyJoinClauses(_0x187d48,![]);_0x187d48['group'](_0xf050('0x5e'));if(_0x8e43fe[_0xf050('0x5c')]){_0x2f3499['limit'](_0x8e43fe[_0xf050('0x5c')]);}if(_0x8e43fe[_0xf050('0x5d')]){_0x2f3499['offset'](_0x8e43fe[_0xf050('0x5d')]);}}_0x187d48['having'](_0x4fc125);if(_0x8e43fe[_0xf050('0x5f')]){_0x8e43fe[_0xf050('0x5f')][_0xf050('0x26')](function(_0x3c26f5){_0x2f3499['order']('c.'+_0x3c26f5[0x0],_0x3c26f5[0x1]==='DESC'?![]:!![]);_0x187d48[_0xf050('0x5f')](_0xf050('0x60')+_0x3c26f5[0x0],_0x3c26f5[0x1]===_0xf050('0x61')?![]:!![]);});}_0x187d48[_0xf050('0x62')](_0x2f3499,_0xf050('0xf'));return _0x187d48;}function getFilteredContacts(_0x8ae5cf){var _0x39fef9=[];return db['Tag'][_0xf050('0x63')]({'attributes':['id','name',_0xf050('0x64')],'raw':!![]})[_0xf050('0x52')](function(_0x502b7d){_0x39fef9=_[_0xf050('0x65')](_0x502b7d,'id');var _0x663e6a={'type':db[_0xf050('0x66')][_0xf050('0x67')][_0xf050('0x68')],'model':db[_0xf050('0x69')],'mapToModel':!![],'nest':!![],'raw':!![]};return db['sequelize'][_0xf050('0x6a')](_0x8ae5cf[_0xf050('0x6b')](),_0x663e6a);})['then'](function(_0x430309){_0x430309[_0xf050('0x26')](function(_0x3a3d27){if(_0x3a3d27[_0xf050('0x20')]){_0x3a3d27[_0xf050('0x6c')]=[];_0x3a3d27['TagIds']['split'](',')[_0xf050('0x26')](function(_0x28b6b7){_0x3a3d27[_0xf050('0x6c')][_0xf050('0x21')](_0x39fef9[_0x28b6b7]);});}delete _0x3a3d27[_0xf050('0x20')];});return _0x430309;});}function countFilteredContacts(_0x19cbf7,_0xc2ca83){var _0x2a9957=_0x19cbf7[_0xf050('0x6d')]();_0x2a9957[_0xf050('0x22')](_0xf050('0x6e'));_0x2a9957=applyJoinClauses(_0x2a9957,!![]);_0x19cbf7[_0xf050('0x5a')](_0xf050('0x5b'));var _0x48de11=utils[_0xf050('0x25')](_0xc2ca83);if(!_[_0xf050('0x6f')](_0x48de11)){_0x2a9957[_0xf050('0xd')](_0xf050('0x70'),_0x48de11);}var _0x603859={'type':db[_0xf050('0x66')][_0xf050('0x67')]['SELECT'],'raw':!![]};return db[_0xf050('0x71')][_0xf050('0x6a')](_0x2a9957[_0xf050('0x6b')](),_0x603859)['then'](function(_0x2f6e60){return _0x2f6e60[0x0][_0xf050('0x6e')];});}module[_0xf050('0x72')]={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};
\ No newline at end of file
index 78a70c2..fdb2df3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x032c=['data','update','binary','write','end','unlink','decryptFile','createReadStream','createWriteStream','final','close','utf8','base64','decryptString','secret','createDecipher','crypto','bluebird','../../config/environment','../../config/logger','app','secrets','session','aes192','encrypt','algorithm','join','error','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','indexOf','hasOwnProperty','encryptFile','createCipher'];(function(_0xb8e44,_0x2a6a20){var _0x3dbb16=function(_0x15fca8){while(--_0x15fca8){_0xb8e44['push'](_0xb8e44['shift']());}};_0x3dbb16(++_0x2a6a20);}(_0x032c,0x1de));var _0xc032=function(_0x17d8b7,_0x51310a){_0x17d8b7=_0x17d8b7-0x0;var _0x2184f4=_0x032c[_0x17d8b7];return _0x2184f4;};'use strict';var crypto=require(_0xc032('0x0'));var fs=require('fs');var BPromise=require(_0xc032('0x1'));var _=require('lodash');var config=require(_0xc032('0x2'));var logger=require(_0xc032('0x3'))(_0xc032('0x4'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0xc032('0x5')][_0xc032('0x6')],'algorithm':'aes-256-ctr'};const fileOptions={'algorithm':_0xc032('0x7')};if(config[_0xc032('0x8')]&&config[_0xc032('0x8')][_0xc032('0x9')]){var isSupported=isAlgorithmSupported(config[_0xc032('0x8')][_0xc032('0x9')]);if(isSupported){fileOptions['algorithm']=config['encrypt'][_0xc032('0x9')];}else{var supportedAlgorithms=getSupportedCiphers()[_0xc032('0xa')](',\x20');logger[_0xc032('0xb')](config[_0xc032('0x8')][_0xc032('0x9')],_0xc032('0xc'),supportedAlgorithms);}}function isASupportedCipher(_0x164b3e){return AES_SUPPORTED_RX['test'](_0x164b3e);}function getSupportedCiphers(){return crypto['getCiphers']()['filter'](isASupportedCipher);}function isAlgorithmSupported(_0x100ef0){return getSupportedCiphers()[_0xc032('0xd')](_0x100ef0)>-0x1;}function combineOptions(_0x213525){var _0x46c182={};for(var _0x12cdee in fileOptions){if(fileOptions[_0xc032('0xe')](_0x12cdee)){_0x46c182[_0x12cdee]=fileOptions[_0x12cdee];}}if(_0x213525){for(var _0x2c14f6 in _0x213525){if(_0x213525[_0xc032('0xe')](_0x2c14f6)){_0x46c182[_0x2c14f6]=_0x213525[_0x2c14f6];}}}return _0x46c182;}exports[_0xc032('0xf')]=function(_0x6616a6,_0x5c72e8,_0xc524ef,_0x36c6d7){return new BPromise(function(_0x3aa1b5,_0x5be46b){_0x36c6d7=combineOptions(_0x36c6d7);var _0x283331=new Buffer(_0xc524ef);var _0x4701f8=fs['createReadStream'](_0x6616a6);var _0x2b8d1c=fs['createWriteStream'](_0x5c72e8);var _0x331f25=crypto[_0xc032('0x10')](_0x36c6d7['algorithm'],_0x283331);_0x4701f8['on'](_0xc032('0x11'),function(_0x40b18f){var _0x175c3c=new Buffer(_0x331f25[_0xc032('0x12')](_0x40b18f),_0xc032('0x13'));_0x2b8d1c[_0xc032('0x14')](_0x175c3c);});_0x4701f8['on'](_0xc032('0x15'),function(){try{var _0x305d99=new Buffer(_0x331f25['final'](_0xc032('0x13')),_0xc032('0x13'));_0x2b8d1c[_0xc032('0x14')](_0x305d99);_0x2b8d1c[_0xc032('0x15')]();_0x2b8d1c['on']('close',function(){return _0x3aa1b5(_0x5c72e8);});}catch(_0xed4fd){fs[_0xc032('0x16')](_0x5c72e8);return _0x5be46b(_0xed4fd);}});});};exports[_0xc032('0x17')]=function(_0x417155,_0x4d6693,_0x298215,_0x1c8a43){return new BPromise(function(_0x2b69a0,_0x529972){_0x1c8a43=combineOptions(_0x1c8a43);var _0x11cc1a=new Buffer(_0x298215);var _0x15c0c1=fs[_0xc032('0x18')](_0x417155);var _0x48ad90=fs[_0xc032('0x19')](_0x4d6693);var _0x529430=crypto['createDecipher'](_0x1c8a43['algorithm'],_0x11cc1a);_0x15c0c1['on'](_0xc032('0x11'),function(_0x5e6f16){var _0x4a06b9=new Buffer(_0x529430[_0xc032('0x12')](_0x5e6f16),'binary');_0x48ad90[_0xc032('0x14')](_0x4a06b9);});_0x15c0c1['on']('end',function(){try{var _0x58922a=new Buffer(_0x529430[_0xc032('0x1a')]('binary'),_0xc032('0x13'));_0x48ad90[_0xc032('0x14')](_0x58922a);_0x48ad90[_0xc032('0x15')]();_0x48ad90['on'](_0xc032('0x1b'),function(){return _0x2b69a0(_0x4d6693);});}catch(_0x340f89){fs['unlink'](_0x4d6693);return _0x529972(_0x340f89);}});});};exports['encryptString']=function(_0x2060c4,_0x37db94,_0x165571){var _0x527708=_0x165571||stringOptions[_0xc032('0x9')];var _0x337634=_0x37db94||stringOptions['secret'];var _0xbc3dfb=crypto[_0xc032('0x10')](_0x527708,_0x337634);var _0x8a73f1=_0xbc3dfb[_0xc032('0x12')](_0x2060c4,_0xc032('0x1c'),_0xc032('0x1d'));_0x8a73f1+=_0xbc3dfb['final']('base64');return _0x8a73f1;};exports[_0xc032('0x1e')]=function(_0x86c431,_0xe2e676,_0x2f1fcf){var _0x4301c5=_0x2f1fcf||stringOptions[_0xc032('0x9')];var _0x84622b=_0xe2e676||stringOptions[_0xc032('0x1f')];var _0x12c58d=crypto[_0xc032('0x20')](_0x4301c5,_0x84622b);var _0x3557c1=_0x12c58d[_0xc032('0x12')](_0x86c431,_0xc032('0x1d'),_0xc032('0x1c'));_0x3557c1+=_0x12c58d[_0xc032('0x1a')]('utf8');return _0x3557c1;};
\ No newline at end of file
+var _0x09be=['is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','getCiphers','indexOf','hasOwnProperty','encryptFile','createCipher','update','binary','write','end','final','close','unlink','decryptFile','createReadStream','createWriteStream','utf8','base64','decryptString','secret','createDecipher','crypto','bluebird','lodash','../../config/logger','app','secrets','aes-256-ctr','aes192','encrypt','algorithm','join','error'];(function(_0x3b76f7,_0x566c53){var _0x43984e=function(_0x164f77){while(--_0x164f77){_0x3b76f7['push'](_0x3b76f7['shift']());}};_0x43984e(++_0x566c53);}(_0x09be,0x148));var _0xe09b=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x09be[_0x14add3];return _0x4a174f;};'use strict';var crypto=require(_0xe09b('0x0'));var fs=require('fs');var BPromise=require(_0xe09b('0x1'));var _=require(_0xe09b('0x2'));var config=require('../../config/environment');var logger=require(_0xe09b('0x3'))(_0xe09b('0x4'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0xe09b('0x5')]['session'],'algorithm':_0xe09b('0x6')};const fileOptions={'algorithm':_0xe09b('0x7')};if(config[_0xe09b('0x8')]&&config[_0xe09b('0x8')][_0xe09b('0x9')]){var isSupported=isAlgorithmSupported(config[_0xe09b('0x8')][_0xe09b('0x9')]);if(isSupported){fileOptions[_0xe09b('0x9')]=config[_0xe09b('0x8')]['algorithm'];}else{var supportedAlgorithms=getSupportedCiphers()[_0xe09b('0xa')](',\x20');logger[_0xe09b('0xb')](config[_0xe09b('0x8')][_0xe09b('0x9')],_0xe09b('0xc'),supportedAlgorithms);}}function isASupportedCipher(_0x3e460f){return AES_SUPPORTED_RX[_0xe09b('0xd')](_0x3e460f);}function getSupportedCiphers(){return crypto[_0xe09b('0xe')]()['filter'](isASupportedCipher);}function isAlgorithmSupported(_0x27da84){return getSupportedCiphers()[_0xe09b('0xf')](_0x27da84)>-0x1;}function combineOptions(_0x2d4f9f){var _0x41519c={};for(var _0x463804 in fileOptions){if(fileOptions[_0xe09b('0x10')](_0x463804)){_0x41519c[_0x463804]=fileOptions[_0x463804];}}if(_0x2d4f9f){for(var _0x33316b in _0x2d4f9f){if(_0x2d4f9f['hasOwnProperty'](_0x33316b)){_0x41519c[_0x33316b]=_0x2d4f9f[_0x33316b];}}}return _0x41519c;}exports[_0xe09b('0x11')]=function(_0x2afe14,_0x3ccd2d,_0x34ede1,_0x21a53f){return new BPromise(function(_0x57d3a5,_0x430da4){_0x21a53f=combineOptions(_0x21a53f);var _0x324239=new Buffer(_0x34ede1);var _0x324b38=fs['createReadStream'](_0x2afe14);var _0x470d6b=fs['createWriteStream'](_0x3ccd2d);var _0xb39591=crypto[_0xe09b('0x12')](_0x21a53f[_0xe09b('0x9')],_0x324239);_0x324b38['on']('data',function(_0x5d3995){var _0xf7ed11=new Buffer(_0xb39591[_0xe09b('0x13')](_0x5d3995),_0xe09b('0x14'));_0x470d6b[_0xe09b('0x15')](_0xf7ed11);});_0x324b38['on'](_0xe09b('0x16'),function(){try{var _0x1fe4b9=new Buffer(_0xb39591[_0xe09b('0x17')](_0xe09b('0x14')),_0xe09b('0x14'));_0x470d6b['write'](_0x1fe4b9);_0x470d6b[_0xe09b('0x16')]();_0x470d6b['on'](_0xe09b('0x18'),function(){return _0x57d3a5(_0x3ccd2d);});}catch(_0x3a453a){fs[_0xe09b('0x19')](_0x3ccd2d);return _0x430da4(_0x3a453a);}});});};exports[_0xe09b('0x1a')]=function(_0x45a688,_0x4e64bc,_0x1803b1,_0x1d500b){return new BPromise(function(_0x332f63,_0x1d29e0){_0x1d500b=combineOptions(_0x1d500b);var _0x4b2c7f=new Buffer(_0x1803b1);var _0x5306e9=fs[_0xe09b('0x1b')](_0x45a688);var _0x3a95b9=fs[_0xe09b('0x1c')](_0x4e64bc);var _0x1c599b=crypto['createDecipher'](_0x1d500b[_0xe09b('0x9')],_0x4b2c7f);_0x5306e9['on']('data',function(_0x21f12a){var _0x46c101=new Buffer(_0x1c599b[_0xe09b('0x13')](_0x21f12a),'binary');_0x3a95b9['write'](_0x46c101);});_0x5306e9['on'](_0xe09b('0x16'),function(){try{var _0x4f0627=new Buffer(_0x1c599b[_0xe09b('0x17')](_0xe09b('0x14')),_0xe09b('0x14'));_0x3a95b9[_0xe09b('0x15')](_0x4f0627);_0x3a95b9['end']();_0x3a95b9['on']('close',function(){return _0x332f63(_0x4e64bc);});}catch(_0x449c6f){fs['unlink'](_0x4e64bc);return _0x1d29e0(_0x449c6f);}});});};exports['encryptString']=function(_0x4d71f5,_0x5c4bcc,_0x561b4e){var _0x23817d=_0x561b4e||stringOptions[_0xe09b('0x9')];var _0x46e37b=_0x5c4bcc||stringOptions['secret'];var _0x2dbe1d=crypto[_0xe09b('0x12')](_0x23817d,_0x46e37b);var _0x197f0f=_0x2dbe1d[_0xe09b('0x13')](_0x4d71f5,_0xe09b('0x1d'),_0xe09b('0x1e'));_0x197f0f+=_0x2dbe1d['final'](_0xe09b('0x1e'));return _0x197f0f;};exports[_0xe09b('0x1f')]=function(_0x31d8e8,_0x5dccbc,_0xf53159){var _0x10d6c9=_0xf53159||stringOptions[_0xe09b('0x9')];var _0x2c25dd=_0x5dccbc||stringOptions[_0xe09b('0x20')];var _0x1bb8b1=crypto[_0xe09b('0x21')](_0x10d6c9,_0x2c25dd);var _0x5351bf=_0x1bb8b1[_0xe09b('0x13')](_0x31d8e8,_0xe09b('0x1e'),'utf8');_0x5351bf+=_0x1bb8b1[_0xe09b('0x17')](_0xe09b('0x1d'));return _0x5351bf;};
\ No newline at end of file
index 3d0c806..c30aebb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd75e=['AnalyticExtractedReport','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','Setting','find','split','splitSizeCsv','then','sequelize','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','num','Empty','length','range','isInteger','forEach','push','SELECT','%s\x20limit\x20%d\x20OFFSET\x20%d','dirname','.csv','existsSync','join','each','%s%d.%s','csv','%s.%s','writeFileSync','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','exit','util','../../mysqldb','../../config/logger','analytics','argv','savename'];(function(_0x6637,_0x520cfc){var _0x49ad62=function(_0x378e35){while(--_0x378e35){_0x6637['push'](_0x6637['shift']());}};_0x49ad62(++_0x520cfc);}(_0xd75e,0x135));var _0xed75=function(_0x4513c7,_0x4109d5){_0x4513c7=_0x4513c7-0x0;var _0x26b1e9=_0xd75e[_0x4513c7];return _0x26b1e9;};'use strict';var util=require(_0xed75('0x0'));var path=require('path');var _=require('lodash');var csv=require('to-csv');var fs=require('fs');var BPromise=require('bluebird');var zipdir=require('zip-dir');var rimraf=require('rimraf');var db=require('../../mysqldb')['db'];var dbH=require(_0xed75('0x1'))['dbH'];var logger=require(_0xed75('0x2'))(_0xed75('0x3'));var EXTRACTED_REPORT_ID=Number(process[_0xed75('0x4')][0x2]);var QUERY=process[_0xed75('0x4')][0x3];var PATH=process['argv'][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x30f58d,_0x126913){var _0x6e0a15={'status':_0x30f58d};var _0x40ac3c={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x126913){_0x6e0a15[_0xed75('0x5')]=_0x126913;}return db[_0xed75('0x6')]['update'](_0x6e0a15,_0x40ac3c);}function main(){var _0x29e82d=0x1388;var _0xec70d8;logger[_0xed75('0x7')](util[_0xed75('0x8')](_0xed75('0x9'),EXTRACTED_REPORT_ID,_0xed75('0xa')));return db[_0xed75('0xb')][_0xed75('0xc')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xed75('0xd'),_0xed75('0xe')]})['then'](function(_0x3d4ff7){if(_0x3d4ff7){_0xec70d8=_0x3d4ff7;_0x29e82d=_0xec70d8[_0xed75('0xe')]||0x1388;}})[_0xed75('0xf')](function(){return dbH[_0xed75('0x10')][_0xed75('0x11')](util[_0xed75('0x8')](_0xed75('0x12'),QUERY),{'type':dbH[_0xed75('0x10')][_0xed75('0x13')]['SELECT']});})[_0xed75('0xf')](function(_0x3734e7){if(!_0x3734e7[0x0][_0xed75('0x14')]){return analyticExtractedReport(_0xed75('0x15'));}var _0xec1049=[];var _0x2ab107=0x0;if(_0xec70d8['split']){if(_0x3734e7&&_0x3734e7[_0xed75('0x16')]){var _0x5f0ff9=_[_0xed75('0x17')](_0x3734e7[0x0][_0xed75('0x14')]/_0x29e82d);var _0x3ac742=Number[_0xed75('0x18')](_0x3734e7[0x0][_0xed75('0x14')]/_0x29e82d)?_0x3734e7[0x0][_0xed75('0x14')]%_0x29e82d:0x0;_0x5f0ff9[_0xed75('0x19')](function(_0x2517f0){if(_0x2517f0>0x0){_0x2ab107+=_0x29e82d;}_0xec1049[_0xed75('0x1a')](dbH[_0xed75('0x10')][_0xed75('0x11')](util[_0xed75('0x8')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x29e82d,_0x2ab107),{'type':dbH[_0xed75('0x10')][_0xed75('0x13')][_0xed75('0x1b')]}));});if(_0x3ac742>0x0){_0x2ab107+=_0x29e82d;_0xec1049[_0xed75('0x1a')](dbH[_0xed75('0x10')]['query'](util[_0xed75('0x8')](_0xed75('0x1c'),QUERY,_0x3ac742,_0x2ab107),{'type':dbH[_0xed75('0x10')][_0xed75('0x13')][_0xed75('0x1b')]}));}}}else{_0xec1049['push'](dbH[_0xed75('0x10')][_0xed75('0x11')](QUERY,{'type':dbH[_0xed75('0x10')][_0xed75('0x13')][_0xed75('0x1b')]}));}var _0x268461=path[_0xed75('0x1d')](PATH);var _0x35e094=path['basename'](PATH,_0xed75('0x1e'));var _0xae945a=_0xec70d8[_0xed75('0xd')]&&_0xec1049[_0xed75('0x16')]>0x1;var _0x71c1ef=[];if(!fs[_0xed75('0x1f')](path[_0xed75('0x20')](_0x268461,_0x35e094))&&_0xae945a){fs['mkdirSync'](path['join'](_0x268461,_0x35e094));}return BPromise[_0xed75('0x21')](_0xec1049,function(_0x40d21c){_0x71c1ef[_0xed75('0x1a')](_0x40d21c);})[_0xed75('0xf')](function(){for(var _0x112208=0x0;_0x112208<_0x71c1ef[_0xed75('0x16')];_0x112208+=0x1){var _0x570b00;var _0x46a9d2=_0x71c1ef[_0x112208];if(_0xae945a){_0x570b00=path[_0xed75('0x20')](_0x268461,_0x35e094,util['format'](_0xed75('0x22'),_0x35e094,_0x112208,_0xed75('0x23')));}else{_0x570b00=path[_0xed75('0x20')](_0x268461,util[_0xed75('0x8')](_0xed75('0x24'),_0x35e094,_0xed75('0x23')));}fs[_0xed75('0x25')](_0x570b00,csv(_0x46a9d2));}})[_0xed75('0xf')](function(){if(_0xae945a){return new Promise(function(_0x5e9029){zipdir(path['join'](_0x268461,_0x35e094),{'saveTo':path[_0xed75('0x20')](_0x268461,util[_0xed75('0x8')](_0xed75('0x24'),_0x35e094,'zip'))},function(_0x45068f,_0x5bf8f3){rimraf(path['join'](_0x268461,_0x35e094),function(){});_0x5e9029(_0xed75('0x26'));});});}})[_0xed75('0xf')](function(){logger[_0xed75('0x7')](util[_0xed75('0x8')](_0xed75('0x27'),EXTRACTED_REPORT_ID,_0xed75('0xa')));return analyticExtractedReport('Completed',_0xae945a?util[_0xed75('0x8')](_0xed75('0x24'),_0x35e094,_0xae945a?'zip':_0xed75('0x23')):null);});})['catch'](function(_0x58efcf){logger[_0xed75('0x7')](util['format'](_0xed75('0x28'),EXTRACTED_REPORT_ID,_0xed75('0xa')),util[_0xed75('0x29')](_0x58efcf,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xed75('0x2a'));})[_0xed75('0x2b')](function(){process[_0xed75('0x2c')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0x71bd=['bluebird','rimraf','../../mysqldb','dbH','../../config/logger','analytics','argv','savename','AnalyticExtractedReport','update','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','find','split','splitSizeCsv','then','sequelize','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','SELECT','Empty','length','range','num','forEach','push','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','query','dirname','basename','.csv','existsSync','join','mkdirSync','csv','%s.%s','writeFileSync','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','CSV','zip','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','exit','util','path','lodash','to-csv'];(function(_0x26d15c,_0x501fa0){var _0x2e85d4=function(_0x36a778){while(--_0x36a778){_0x26d15c['push'](_0x26d15c['shift']());}};_0x2e85d4(++_0x501fa0);}(_0x71bd,0x1f0));var _0xd71b=function(_0x1e0af0,_0x130a21){_0x1e0af0=_0x1e0af0-0x0;var _0x1e8cc9=_0x71bd[_0x1e0af0];return _0x1e8cc9;};'use strict';var util=require(_0xd71b('0x0'));var path=require(_0xd71b('0x1'));var _=require(_0xd71b('0x2'));var csv=require(_0xd71b('0x3'));var fs=require('fs');var BPromise=require(_0xd71b('0x4'));var zipdir=require('zip-dir');var rimraf=require(_0xd71b('0x5'));var db=require('../../mysqldb')['db'];var dbH=require(_0xd71b('0x6'))[_0xd71b('0x7')];var logger=require(_0xd71b('0x8'))(_0xd71b('0x9'));var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process[_0xd71b('0xa')][0x3];var PATH=process[_0xd71b('0xa')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x55e675,_0x595bb7){var _0x2cfdcc={'status':_0x55e675};var _0x3d7646={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x595bb7){_0x2cfdcc[_0xd71b('0xb')]=_0x595bb7;}return db[_0xd71b('0xc')][_0xd71b('0xd')](_0x2cfdcc,_0x3d7646);}function main(){var _0x5412e2=0x1388;var _0x386d03;logger[_0xd71b('0xe')](util[_0xd71b('0xf')](_0xd71b('0x10'),EXTRACTED_REPORT_ID,'CSV'));return db['Setting'][_0xd71b('0x11')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xd71b('0x12'),_0xd71b('0x13')]})['then'](function(_0x479a78){if(_0x479a78){_0x386d03=_0x479a78;_0x5412e2=_0x386d03[_0xd71b('0x13')]||0x1388;}})[_0xd71b('0x14')](function(){return dbH[_0xd71b('0x15')]['query'](util[_0xd71b('0xf')](_0xd71b('0x16'),QUERY),{'type':dbH[_0xd71b('0x15')]['QueryTypes'][_0xd71b('0x17')]});})[_0xd71b('0x14')](function(_0x44feb9){if(!_0x44feb9[0x0]['num']){return analyticExtractedReport(_0xd71b('0x18'));}var _0x261268=[];var _0x332ae7=0x0;if(_0x386d03[_0xd71b('0x12')]){if(_0x44feb9&&_0x44feb9[_0xd71b('0x19')]){var _0x4f41fe=_[_0xd71b('0x1a')](_0x44feb9[0x0]['num']/_0x5412e2);var _0x180ece=Number['isInteger'](_0x44feb9[0x0]['num']/_0x5412e2)?_0x44feb9[0x0][_0xd71b('0x1b')]%_0x5412e2:0x0;_0x4f41fe[_0xd71b('0x1c')](function(_0x208011){if(_0x208011>0x0){_0x332ae7+=_0x5412e2;}_0x261268[_0xd71b('0x1d')](dbH[_0xd71b('0x15')]['query'](util['format'](_0xd71b('0x1e'),QUERY,_0x5412e2,_0x332ae7),{'type':dbH[_0xd71b('0x15')][_0xd71b('0x1f')][_0xd71b('0x17')]}));});if(_0x180ece>0x0){_0x332ae7+=_0x5412e2;_0x261268[_0xd71b('0x1d')](dbH[_0xd71b('0x15')][_0xd71b('0x20')](util[_0xd71b('0xf')](_0xd71b('0x1e'),QUERY,_0x180ece,_0x332ae7),{'type':dbH[_0xd71b('0x15')][_0xd71b('0x1f')]['SELECT']}));}}}else{_0x261268[_0xd71b('0x1d')](dbH['sequelize']['query'](QUERY,{'type':dbH[_0xd71b('0x15')][_0xd71b('0x1f')]['SELECT']}));}var _0x42f95f=path[_0xd71b('0x21')](PATH);var _0x2f2764=path[_0xd71b('0x22')](PATH,_0xd71b('0x23'));var _0x147bfd=_0x386d03[_0xd71b('0x12')]&&_0x261268[_0xd71b('0x19')]>0x1;var _0x233bd1=[];if(!fs[_0xd71b('0x24')](path[_0xd71b('0x25')](_0x42f95f,_0x2f2764))&&_0x147bfd){fs[_0xd71b('0x26')](path[_0xd71b('0x25')](_0x42f95f,_0x2f2764));}return BPromise['each'](_0x261268,function(_0x3a5c8b){_0x233bd1[_0xd71b('0x1d')](_0x3a5c8b);})[_0xd71b('0x14')](function(){for(var _0x26cdb2=0x0;_0x26cdb2<_0x233bd1['length'];_0x26cdb2+=0x1){var _0x16e648;var _0x3bce44=_0x233bd1[_0x26cdb2];if(_0x147bfd){_0x16e648=path[_0xd71b('0x25')](_0x42f95f,_0x2f2764,util['format']('%s%d.%s',_0x2f2764,_0x26cdb2,_0xd71b('0x27')));}else{_0x16e648=path['join'](_0x42f95f,util[_0xd71b('0xf')](_0xd71b('0x28'),_0x2f2764,_0xd71b('0x27')));}fs[_0xd71b('0x29')](_0x16e648,csv(_0x3bce44));}})[_0xd71b('0x14')](function(){if(_0x147bfd){return new Promise(function(_0x28c46d){zipdir(path[_0xd71b('0x25')](_0x42f95f,_0x2f2764),{'saveTo':path[_0xd71b('0x25')](_0x42f95f,util[_0xd71b('0xf')]('%s.%s',_0x2f2764,'zip'))},function(_0x231954,_0x4d1cd1){rimraf(path[_0xd71b('0x25')](_0x42f95f,_0x2f2764),function(){});_0x28c46d(_0xd71b('0x2a'));});});}})[_0xd71b('0x14')](function(){logger[_0xd71b('0xe')](util['format'](_0xd71b('0x2b'),EXTRACTED_REPORT_ID,_0xd71b('0x2c')));return analyticExtractedReport('Completed',_0x147bfd?util[_0xd71b('0xf')]('%s.%s',_0x2f2764,_0x147bfd?_0xd71b('0x2d'):_0xd71b('0x27')):null);});})[_0xd71b('0x2e')](function(_0x456016){logger[_0xd71b('0xe')](util[_0xd71b('0xf')](_0xd71b('0x2f'),EXTRACTED_REPORT_ID,_0xd71b('0x2c')),util[_0xd71b('0x30')](_0x456016,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})['finally'](function(){process[_0xd71b('0x31')](EXIT_CODE);});}main();
\ No newline at end of file
index c272c63..15a6c10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe940=['Completed','%s.%s','findOne','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','exit','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','channel','interactionId','YYYY-MM-DD','Arial','center','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','pipe','finish','error','end','createPdfFromHTML','lodash','util','path','moment','pdfmake/src/printer','zip-dir','rimraf','jsdom','JSDOM','../../mysqldb','dbH','../../config/logger','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','AnalyticExtractedReport','map','tableHeader','toString','value','fill','length','auto','body','push','concat','chunk','keys','forEach','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','startDate','endDate','header','before','landscape','\x20/\x20','footer','black','right','num','Empty','splitSizePdf','then','split','range','isInteger','query','%s\x20limit\x20%d\x20OFFSET\x20%d','SELECT','sequelize','dirname','basename','.pdf','existsSync','join','mkdirSync','each','flatten','%s%d.%s','pdf','all','zip','info','PDF'];(function(_0x12d82d,_0x40a7ab){var _0x5fde95=function(_0x432761){while(--_0x432761){_0x12d82d['push'](_0x12d82d['shift']());}};_0x5fde95(++_0x40a7ab);}(_0xe940,0x180));var _0x0e94=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe940[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x0e94('0x0'));var fs=require('fs');var util=require(_0x0e94('0x1'));var path=require(_0x0e94('0x2'));var moment=require(_0x0e94('0x3'));var htmlToPdfmake=require('html-to-pdfmake');var PdfPrinter=require(_0x0e94('0x4'));var zipdir=require(_0x0e94('0x5'));var rimraf=require(_0x0e94('0x6'));var JSDOM=require(_0x0e94('0x7'))[_0x0e94('0x8')];var window=new JSDOM('')['window'];var BPromise=require('bluebird');var db=require(_0x0e94('0x9'))['db'];var dbH=require(_0x0e94('0x9'))[_0x0e94('0xa')];var logger=require(_0x0e94('0xb'))('analytics');var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process[_0x0e94('0xc')][0x3];var PATH=process[_0x0e94('0xc')][0x4];var NAME=process[_0x0e94('0xc')][0x5];var FORMAT=_0x0e94('0xd');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x5773a9,_0x1ed7f4){var _0x3c8bca={'status':_0x5773a9};var _0xdfc100={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x1ed7f4){_0x3c8bca[_0x0e94('0xe')]=_0x1ed7f4;}return db[_0x0e94('0xf')]['update'](_0x3c8bca,_0xdfc100);}function getHeaders(_0x1f2021){return _[_0x0e94('0x10')](_0x1f2021,function(_0xbe785e){return{'text':_0xbe785e,'style':_0x0e94('0x11')};});}function getRows(_0x120294,_0x5b1d22){return _[_0x0e94('0x10')](_0x5b1d22,function(_0xba9ec){return _(_0xba9ec)['pick'](_0x120294)[_0x0e94('0x10')](function(_0x47fc27){return _0x47fc27?_[_0x0e94('0x12')](_0x47fc27):'';})[_0x0e94('0x13')]();});}function createTable(_0x4ff5ec,_0xade745){var _0x239239={'widths':_[_0x0e94('0x14')](Array(_0x4ff5ec[_0x0e94('0x15')]),0x91),'heights':function(_0x28b011){return _0x28b011===0x0?_0x0e94('0x16'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x5f4557=getHeaders(_0x4ff5ec);_0x239239[_0x0e94('0x17')][_0x0e94('0x18')](_0x5f4557);var _0x586ed5=getRows(_0x4ff5ec,_0xade745);_0x239239[_0x0e94('0x17')]=_0x239239[_0x0e94('0x17')][_0x0e94('0x19')](_0x586ed5);return _0x239239;}function createTables(_0x5521cf){var _0x34054a=[];var _0x442198=_[_0x0e94('0x1a')](Object[_0x0e94('0x1b')](_0x5521cf[0x0]),0x5);_0x442198[_0x0e94('0x1c')](function(_0x3e5b71){_0x34054a[_0x0e94('0x18')](createTable(_0x3e5b71,_0x5521cf));});return _0x34054a;}function getPDFDocDefinition(_0x57007d){var _0x9806ec=util[_0x0e94('0x1d')](_0x0e94('0x1e'),NAME,EXTRACTED_REPORT[_0x0e94('0x1f')],moment(EXTRACTED_REPORT[_0x0e94('0x20')])[_0x0e94('0x1d')](FORMAT),moment(EXTRACTED_REPORT[_0x0e94('0x21')])[_0x0e94('0x1d')](FORMAT));var _0x5d9703=[];for(var _0x49fc5f=0x0;_0x49fc5f<_0x57007d[_0x0e94('0x15')];_0x49fc5f++){var _0x57537f=[];if(_0x49fc5f===0x0){_0x57537f[_0x0e94('0x18')]({'text':_0x9806ec,'style':_0x0e94('0x22')});}var _0x8075ee={'table':_0x57007d[_0x49fc5f]};if(_0x49fc5f>0x0){_0x8075ee['pageBreak']=_0x0e94('0x23');_0x8075ee['margin']=[0x0,0x46,0x0,0x0];}_0x57537f[_0x0e94('0x18')](_0x8075ee);_0x5d9703['push'](_0x57537f);}return{'pageSize':'A4','pageOrientation':_0x0e94('0x24'),'content':_0x5d9703,'footer':function(_0x3881e6,_0x398417){return{'text':_0x3881e6['toString']()+_0x0e94('0x25')+_0x398417,'style':_0x0e94('0x26')};},'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x0e94('0x27')},'footer':{'alignment':_0x0e94('0x28'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x3908b4){var _0x4b4f7e=0x1388;var _0x326555;if(!_0x3908b4[0x0][_0x0e94('0x29')]){return analyticExtractedReport(_0x0e94('0x2a'));}return db['Setting']['find']({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0x0e94('0x2b')]})['then'](function(_0x326aa3){if(_0x326aa3){_0x326555=_0x326aa3;_0x4b4f7e=_0x326555[_0x0e94('0x2b')]||0x3e8;}})[_0x0e94('0x2c')](function(){var _0x101aea=[];var _0x4518db=0x0;if(_0x326555[_0x0e94('0x2d')]){if(_0x3908b4&&_0x3908b4[_0x0e94('0x15')]){var _0x21f2e6=_[_0x0e94('0x2e')](_0x3908b4[0x0]['num']/_0x4b4f7e);var _0x458d56=Number[_0x0e94('0x2f')](_0x3908b4[0x0]['num']/_0x4b4f7e)?_0x3908b4[0x0]['num']%_0x4b4f7e:0x0;_0x21f2e6[_0x0e94('0x1c')](function(_0x56b43e){if(_0x56b43e>0x0){_0x4518db+=_0x4b4f7e;}_0x101aea[_0x0e94('0x18')](dbH['sequelize'][_0x0e94('0x30')](util[_0x0e94('0x1d')](_0x0e94('0x31'),QUERY,_0x4b4f7e,_0x4518db),{'type':dbH['sequelize']['QueryTypes'][_0x0e94('0x32')]}));});if(_0x458d56>0x0){_0x4518db+=_0x4b4f7e;_0x101aea[_0x0e94('0x18')](dbH[_0x0e94('0x33')]['query'](util[_0x0e94('0x1d')](_0x0e94('0x31'),QUERY,_0x458d56,_0x4518db),{'type':dbH[_0x0e94('0x33')]['QueryTypes'][_0x0e94('0x32')]}));}}}else{_0x101aea[_0x0e94('0x18')](dbH['sequelize'][_0x0e94('0x30')](QUERY,{'type':dbH[_0x0e94('0x33')]['QueryTypes'][_0x0e94('0x32')]}));}var _0x2492f4=path[_0x0e94('0x34')](PATH);var _0x54e489=path[_0x0e94('0x35')](PATH,_0x0e94('0x36'));var _0x19394f=_0x326555[_0x0e94('0x2d')]&&_0x101aea[_0x0e94('0x15')]>0x1;var _0x3fb4e7=[];if(!fs[_0x0e94('0x37')](path[_0x0e94('0x38')](_0x2492f4,_0x54e489))&&_0x19394f){fs[_0x0e94('0x39')](path[_0x0e94('0x38')](_0x2492f4,_0x54e489));}return BPromise[_0x0e94('0x3a')](_0x101aea,function(_0x5f11d7){_0x3fb4e7[_0x0e94('0x18')](_0x5f11d7);})[_0x0e94('0x2c')](function(){var _0x5b8cff=[];for(var _0x59af59=0x0;_0x59af59<_0x3fb4e7[_0x0e94('0x15')];_0x59af59+=0x1){var _0x2431ae=_0x3fb4e7[_0x59af59];var _0x962e36=createTables(_[_0x0e94('0x3b')](_0x2431ae));var _0x363d0f;var _0x4aa140=getPDFDocDefinition(_0x962e36);var _0xb2a211=getPDFPrinter();var _0x3761b4=_0xb2a211['createPdfKitDocument'](_0x4aa140);if(_0x19394f){_0x363d0f=path[_0x0e94('0x38')](_0x2492f4,_0x54e489,util[_0x0e94('0x1d')](_0x0e94('0x3c'),_0x54e489,_0x59af59,_0x0e94('0x3d')));}else{_0x363d0f=path['join'](_0x2492f4,util[_0x0e94('0x1d')]('%s.%s',_0x54e489,_0x0e94('0x3d')));}_0x5b8cff['push'](writePDFDocument(_0x3761b4,_0x363d0f));}return Promise[_0x0e94('0x3e')](_0x5b8cff);})[_0x0e94('0x2c')](function(){if(_0x19394f){return new Promise(function(_0x24559c){zipdir(path[_0x0e94('0x38')](_0x2492f4,_0x54e489),{'saveTo':path[_0x0e94('0x38')](_0x2492f4,util[_0x0e94('0x1d')]('%s.%s',_0x54e489,_0x0e94('0x3f')))},function(){rimraf(path[_0x0e94('0x38')](_0x2492f4,_0x54e489),function(){});_0x24559c('zip\x20finished');});});}})[_0x0e94('0x2c')](function(){if(!_0x19394f)return;rimraf(path[_0x0e94('0x38')](_0x2492f4,_0x54e489),function(){});})[_0x0e94('0x2c')](function(){logger[_0x0e94('0x40')](util[_0x0e94('0x1d')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0x0e94('0x41')));return analyticExtractedReport(_0x0e94('0x42'),_0x19394f?util[_0x0e94('0x1d')](_0x0e94('0x43'),_0x54e489,_0x19394f?'zip':_0x0e94('0x3d')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger['info'](util[_0x0e94('0x1d')]('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x0e94('0x41')));return db[_0x0e94('0xf')][_0x0e94('0x44')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0x0e94('0x2c')](function(_0x3ab319){EXTRACTED_REPORT=_0x3ab319;return dbH[_0x0e94('0x33')]['query'](util['format'](_0x0e94('0x45'),QUERY),{'type':dbH[_0x0e94('0x33')][_0x0e94('0x46')][_0x0e94('0x32')]});})[_0x0e94('0x2c')](extractReport)[_0x0e94('0x47')](function(_0x465a16){logger['info'](util[_0x0e94('0x1d')](_0x0e94('0x48'),EXTRACTED_REPORT_ID,_0x0e94('0x41')),util['inspect'](_0x465a16,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})['finally'](function(){process[_0x0e94('0x49')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x1add62=new PdfPrinter({'Arial':{'normal':__dirname+_0x0e94('0x4a'),'bold':__dirname+_0x0e94('0x4b'),'italics':__dirname+_0x0e94('0x4c'),'bolditalics':__dirname+_0x0e94('0x4d')}});return _0x1add62;}function getPDFDocDefinitionFromHTML(_0x1eb46e,_0x4f3b50){var _0x3c6dda=util[_0x0e94('0x1d')](_0x0e94('0x4e'),_0x4f3b50[_0x0e94('0x4f')],_0x4f3b50[_0x0e94('0x50')]);var _0x11cddf=moment()[_0x0e94('0x1d')](_0x0e94('0x51'))[_0x0e94('0x12')]();var _0x467163=htmlToPdfmake(_0x1eb46e,{'window':window,'tableAutoSize':!![]});return{'content':[_0x467163],'defaultStyle':{'font':_0x0e94('0x52')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x0e94('0x53'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x0e94('0x53'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0x0e94('0x53')}},'header':function(){return[{'text':'Interaction\x20Transcript','style':_0x0e94('0x22')}];},'footer':function(_0x54ddd8,_0x112272){return[{'text':util['format'](_0x0e94('0x54'),_0x3c6dda,_0x54ddd8,_0x112272,_0x11cddf),'style':_0x0e94('0x26')}];}};}function writePDFDocument(_0x4c076c,_0x3d5d18){return new Promise(function(_0x81e719,_0x3971e2){var _0x23613c=_0x4c076c[_0x0e94('0x55')](fs['createWriteStream'](_0x3d5d18));_0x23613c['on']('finish',function(){_0x81e719(_0x0e94('0x56'));});_0x23613c['on'](_0x0e94('0x57'),function(_0x301e0e){_0x3971e2(_0x301e0e);});_0x4c076c[_0x0e94('0x58')]();});}exports[_0x0e94('0x59')]=function(_0x425ad1,_0x7e4463){var _0x16639f=getPDFPrinter();var _0x4dfc55=getPDFDocDefinitionFromHTML(_0x425ad1,_0x7e4463);var _0x44c7a0=_0x16639f['createPdfKitDocument'](_0x4dfc55);return writePDFDocument(_0x44c7a0,_0x7e4463[_0x0e94('0x2')])['catch'](function(_0x3b84ba){throw _0x3b84ba;});};
\ No newline at end of file
+var _0xad62=['SELECT','query','QueryTypes','basename','.pdf','join','mkdirSync','each','flatten','%s%d.%s','pdf','%s.%s','all','zip\x20finished','PDF','Completed','zip','info','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','findOne','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','finally','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-bold-italic.ttf','channel','interactionId','YYYY-MM-DD','Arial','center','Interaction\x20Transcript','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','footer','createWriteStream','finish','error','createPdfFromHTML','createPdfKitDocument','lodash','util','path','moment','pdfmake/src/printer','rimraf','jsdom','window','bluebird','../../mysqldb','dbH','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','AnalyticExtractedReport','update','map','tableHeader','toString','value','fill','length','auto','body','concat','chunk','keys','forEach','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','format','push','header','pageBreak','margin','landscape','\x20/\x20','num','Empty','Setting','find','split','splitSizePdf','then','range','isInteger','sequelize','%s\x20limit\x20%d\x20OFFSET\x20%d'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xad62,0xd8));var _0x2ad6=function(_0x43b08c,_0x15e99e){_0x43b08c=_0x43b08c-0x0;var _0x3c2958=_0xad62[_0x43b08c];return _0x3c2958;};'use strict';var _=require(_0x2ad6('0x0'));var fs=require('fs');var util=require(_0x2ad6('0x1'));var path=require(_0x2ad6('0x2'));var moment=require(_0x2ad6('0x3'));var htmlToPdfmake=require('html-to-pdfmake');var PdfPrinter=require(_0x2ad6('0x4'));var zipdir=require('zip-dir');var rimraf=require(_0x2ad6('0x5'));var JSDOM=require(_0x2ad6('0x6'))['JSDOM'];var window=new JSDOM('')[_0x2ad6('0x7')];var BPromise=require(_0x2ad6('0x8'));var db=require(_0x2ad6('0x9'))['db'];var dbH=require('../../mysqldb')[_0x2ad6('0xa')];var logger=require('../../config/logger')(_0x2ad6('0xb'));var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process[_0x2ad6('0xc')][0x3];var PATH=process[_0x2ad6('0xc')][0x4];var NAME=process['argv'][0x5];var FORMAT=_0x2ad6('0xd');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x1557a6,_0x100771){var _0xc391d3={'status':_0x1557a6};var _0x30f70e={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x100771){_0xc391d3[_0x2ad6('0xe')]=_0x100771;}return db[_0x2ad6('0xf')][_0x2ad6('0x10')](_0xc391d3,_0x30f70e);}function getHeaders(_0x1ea6bf){return _[_0x2ad6('0x11')](_0x1ea6bf,function(_0x1d1983){return{'text':_0x1d1983,'style':_0x2ad6('0x12')};});}function getRows(_0x1535f3,_0x55d0ff){return _[_0x2ad6('0x11')](_0x55d0ff,function(_0x1f566b){return _(_0x1f566b)['pick'](_0x1535f3)[_0x2ad6('0x11')](function(_0x455db1){return _0x455db1?_[_0x2ad6('0x13')](_0x455db1):'';})[_0x2ad6('0x14')]();});}function createTable(_0x3a95f2,_0x3b4019){var _0x3b9dee={'widths':_[_0x2ad6('0x15')](Array(_0x3a95f2[_0x2ad6('0x16')]),0x91),'heights':function(_0x353c0b){return _0x353c0b===0x0?_0x2ad6('0x17'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0xf94106=getHeaders(_0x3a95f2);_0x3b9dee[_0x2ad6('0x18')]['push'](_0xf94106);var _0x135ddf=getRows(_0x3a95f2,_0x3b4019);_0x3b9dee['body']=_0x3b9dee[_0x2ad6('0x18')][_0x2ad6('0x19')](_0x135ddf);return _0x3b9dee;}function createTables(_0x1ab53a){var _0x19ceb2=[];var _0x1b9808=_[_0x2ad6('0x1a')](Object[_0x2ad6('0x1b')](_0x1ab53a[0x0]),0x5);_0x1b9808[_0x2ad6('0x1c')](function(_0x91d978){_0x19ceb2['push'](createTable(_0x91d978,_0x1ab53a));});return _0x19ceb2;}function getPDFDocDefinition(_0x53ecb0){var _0x3eb086=util['format'](_0x2ad6('0x1d'),NAME,EXTRACTED_REPORT['name'],moment(EXTRACTED_REPORT['startDate'])[_0x2ad6('0x1e')](FORMAT),moment(EXTRACTED_REPORT['endDate'])['format'](FORMAT));var _0x2860a6=[];for(var _0x90b1b3=0x0;_0x90b1b3<_0x53ecb0[_0x2ad6('0x16')];_0x90b1b3++){var _0x18ddf0=[];if(_0x90b1b3===0x0){_0x18ddf0[_0x2ad6('0x1f')]({'text':_0x3eb086,'style':_0x2ad6('0x20')});}var _0x51615e={'table':_0x53ecb0[_0x90b1b3]};if(_0x90b1b3>0x0){_0x51615e[_0x2ad6('0x21')]='before';_0x51615e[_0x2ad6('0x22')]=[0x0,0x46,0x0,0x0];}_0x18ddf0[_0x2ad6('0x1f')](_0x51615e);_0x2860a6[_0x2ad6('0x1f')](_0x18ddf0);}return{'pageSize':'A4','pageOrientation':_0x2ad6('0x23'),'content':_0x2860a6,'footer':function(_0x54f6cf,_0x5e1779){return{'text':_0x54f6cf[_0x2ad6('0x13')]()+_0x2ad6('0x24')+_0x5e1779,'style':'footer'};},'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':'black'},'footer':{'alignment':'right','margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x249742){var _0x7be2dc=0x1388;var _0x5882dd;if(!_0x249742[0x0][_0x2ad6('0x25')]){return analyticExtractedReport(_0x2ad6('0x26'));}return db[_0x2ad6('0x27')][_0x2ad6('0x28')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x2ad6('0x29'),_0x2ad6('0x2a')]})[_0x2ad6('0x2b')](function(_0x32be0f){if(_0x32be0f){_0x5882dd=_0x32be0f;_0x7be2dc=_0x5882dd[_0x2ad6('0x2a')]||0x3e8;}})[_0x2ad6('0x2b')](function(){var _0x3facb2=[];var _0x3cbbd8=0x0;if(_0x5882dd[_0x2ad6('0x29')]){if(_0x249742&&_0x249742['length']){var _0x21abe3=_[_0x2ad6('0x2c')](_0x249742[0x0][_0x2ad6('0x25')]/_0x7be2dc);var _0x150856=Number[_0x2ad6('0x2d')](_0x249742[0x0][_0x2ad6('0x25')]/_0x7be2dc)?_0x249742[0x0][_0x2ad6('0x25')]%_0x7be2dc:0x0;_0x21abe3[_0x2ad6('0x1c')](function(_0x2e806c){if(_0x2e806c>0x0){_0x3cbbd8+=_0x7be2dc;}_0x3facb2['push'](dbH[_0x2ad6('0x2e')]['query'](util[_0x2ad6('0x1e')](_0x2ad6('0x2f'),QUERY,_0x7be2dc,_0x3cbbd8),{'type':dbH[_0x2ad6('0x2e')]['QueryTypes'][_0x2ad6('0x30')]}));});if(_0x150856>0x0){_0x3cbbd8+=_0x7be2dc;_0x3facb2[_0x2ad6('0x1f')](dbH['sequelize'][_0x2ad6('0x31')](util[_0x2ad6('0x1e')](_0x2ad6('0x2f'),QUERY,_0x150856,_0x3cbbd8),{'type':dbH[_0x2ad6('0x2e')][_0x2ad6('0x32')][_0x2ad6('0x30')]}));}}}else{_0x3facb2[_0x2ad6('0x1f')](dbH[_0x2ad6('0x2e')][_0x2ad6('0x31')](QUERY,{'type':dbH[_0x2ad6('0x2e')][_0x2ad6('0x32')][_0x2ad6('0x30')]}));}var _0x2dd537=path['dirname'](PATH);var _0x2875d6=path[_0x2ad6('0x33')](PATH,_0x2ad6('0x34'));var _0x5abe44=_0x5882dd[_0x2ad6('0x29')]&&_0x3facb2[_0x2ad6('0x16')]>0x1;var _0x3e798e=[];if(!fs['existsSync'](path[_0x2ad6('0x35')](_0x2dd537,_0x2875d6))&&_0x5abe44){fs[_0x2ad6('0x36')](path[_0x2ad6('0x35')](_0x2dd537,_0x2875d6));}return BPromise[_0x2ad6('0x37')](_0x3facb2,function(_0x5941ce){_0x3e798e[_0x2ad6('0x1f')](_0x5941ce);})['then'](function(){var _0xd87ce0=[];for(var _0x283348=0x0;_0x283348<_0x3e798e['length'];_0x283348+=0x1){var _0xbdd74a=_0x3e798e[_0x283348];var _0x1a98b4=createTables(_[_0x2ad6('0x38')](_0xbdd74a));var _0x2cedec;var _0xef6131=getPDFDocDefinition(_0x1a98b4);var _0x87809f=getPDFPrinter();var _0x23a7fb=_0x87809f['createPdfKitDocument'](_0xef6131);if(_0x5abe44){_0x2cedec=path[_0x2ad6('0x35')](_0x2dd537,_0x2875d6,util[_0x2ad6('0x1e')](_0x2ad6('0x39'),_0x2875d6,_0x283348,_0x2ad6('0x3a')));}else{_0x2cedec=path[_0x2ad6('0x35')](_0x2dd537,util[_0x2ad6('0x1e')](_0x2ad6('0x3b'),_0x2875d6,_0x2ad6('0x3a')));}_0xd87ce0[_0x2ad6('0x1f')](writePDFDocument(_0x23a7fb,_0x2cedec));}return Promise[_0x2ad6('0x3c')](_0xd87ce0);})[_0x2ad6('0x2b')](function(){if(_0x5abe44){return new Promise(function(_0x2c9299){zipdir(path[_0x2ad6('0x35')](_0x2dd537,_0x2875d6),{'saveTo':path[_0x2ad6('0x35')](_0x2dd537,util[_0x2ad6('0x1e')]('%s.%s',_0x2875d6,'zip'))},function(){rimraf(path[_0x2ad6('0x35')](_0x2dd537,_0x2875d6),function(){});_0x2c9299(_0x2ad6('0x3d'));});});}})[_0x2ad6('0x2b')](function(){if(!_0x5abe44)return;rimraf(path['join'](_0x2dd537,_0x2875d6),function(){});})[_0x2ad6('0x2b')](function(){logger['info'](util[_0x2ad6('0x1e')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0x2ad6('0x3e')));return analyticExtractedReport(_0x2ad6('0x3f'),_0x5abe44?util['format'](_0x2ad6('0x3b'),_0x2875d6,_0x5abe44?_0x2ad6('0x40'):'pdf'):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0x2ad6('0x41')](util['format'](_0x2ad6('0x42'),EXTRACTED_REPORT_ID,_0x2ad6('0x3e')));return db[_0x2ad6('0xf')][_0x2ad6('0x43')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0x2ad6('0x2b')](function(_0x52d7a2){EXTRACTED_REPORT=_0x52d7a2;return dbH['sequelize'][_0x2ad6('0x31')](util[_0x2ad6('0x1e')](_0x2ad6('0x44'),QUERY),{'type':dbH[_0x2ad6('0x2e')][_0x2ad6('0x32')][_0x2ad6('0x30')]});})[_0x2ad6('0x2b')](extractReport)[_0x2ad6('0x45')](function(_0x44d7f9){logger['info'](util[_0x2ad6('0x1e')](_0x2ad6('0x46'),EXTRACTED_REPORT_ID,_0x2ad6('0x3e')),util['inspect'](_0x44d7f9,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0x2ad6('0x47')](function(){process['exit'](EXIT_CODE);});}main();function getPDFPrinter(){var _0x94d6a5=new PdfPrinter({'Arial':{'normal':__dirname+_0x2ad6('0x48'),'bold':__dirname+_0x2ad6('0x49'),'italics':__dirname+'/fonts/arial-italic.ttf','bolditalics':__dirname+_0x2ad6('0x4a')}});return _0x94d6a5;}function getPDFDocDefinitionFromHTML(_0x2b5fbf,_0x4b9da0){var _0x2ccf25=util[_0x2ad6('0x1e')]('%s\x20#%d',_0x4b9da0[_0x2ad6('0x4b')],_0x4b9da0[_0x2ad6('0x4c')]);var _0x433d27=moment()[_0x2ad6('0x1e')](_0x2ad6('0x4d'))['toString']();var _0x37abf0=htmlToPdfmake(_0x2b5fbf,{'window':window,'tableAutoSize':!![]});return{'content':[_0x37abf0],'defaultStyle':{'font':_0x2ad6('0x4e')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x2ad6('0x4f'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x2ad6('0x4f'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':'center'}},'header':function(){return[{'text':_0x2ad6('0x50'),'style':_0x2ad6('0x20')}];},'footer':function(_0x1837ce,_0x5a54d6){return[{'text':util['format'](_0x2ad6('0x51'),_0x2ccf25,_0x1837ce,_0x5a54d6,_0x433d27),'style':_0x2ad6('0x52')}];}};}function writePDFDocument(_0x1f110f,_0x225f7f){return new Promise(function(_0x375d9f,_0x357853){var _0xb67da7=_0x1f110f['pipe'](fs[_0x2ad6('0x53')](_0x225f7f));_0xb67da7['on'](_0x2ad6('0x54'),function(){_0x375d9f(_0x2ad6('0x54'));});_0xb67da7['on'](_0x2ad6('0x55'),function(_0x1c6233){_0x357853(_0x1c6233);});_0x1f110f['end']();});}exports[_0x2ad6('0x56')]=function(_0x1ddbe6,_0xb32be9){var _0x213a34=getPDFPrinter();var _0x5749ac=getPDFDocDefinitionFromHTML(_0x1ddbe6,_0xb32be9);var _0x367642=_0x213a34[_0x2ad6('0x57')](_0x5749ac);return writePDFDocument(_0x367642,_0xb32be9['path'])[_0x2ad6('0x45')](function(_0x334427){throw _0x334427;});};
\ No newline at end of file
index 7790159..8e118b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae9e=['basename','.xlsx','existsSync','join','mkdirSync','each','%s%d.%s','xlsx','%s.%s','writeFileSync','binary','zip','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','exit','path','lodash','json2xls','zip-dir','rimraf','../../mysqldb','dbH','../../config/logger','analytics','argv','savename','AnalyticExtractedReport','update','info','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','Setting','find','splitSizeXlsx','then','sequelize','query','format','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','num','Empty','split','length','range','isInteger','forEach','push','dirname'];(function(_0x411d6e,_0x3febf6){var _0x1e2887=function(_0x95a6cc){while(--_0x95a6cc){_0x411d6e['push'](_0x411d6e['shift']());}};_0x1e2887(++_0x3febf6);}(_0xae9e,0xbd));var _0xeae9=function(_0x3236b5,_0x3f11e1){_0x3236b5=_0x3236b5-0x0;var _0x528e20=_0xae9e[_0x3236b5];return _0x528e20;};'use strict';var util=require('util');var path=require(_0xeae9('0x0'));var _=require(_0xeae9('0x1'));var fs=require('fs');var json2xls=require(_0xeae9('0x2'));var BPromise=require('bluebird');var zipdir=require(_0xeae9('0x3'));var rimraf=require(_0xeae9('0x4'));var db=require(_0xeae9('0x5'))['db'];var dbH=require(_0xeae9('0x5'))[_0xeae9('0x6')];var logger=require(_0xeae9('0x7'))(_0xeae9('0x8'));var EXTRACTED_REPORT_ID=Number(process[_0xeae9('0x9')][0x2]);var QUERY=process[_0xeae9('0x9')][0x3];var PATH=process['argv'][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x3b027d,_0x5afaf4){var _0x2e6ef0={'status':_0x3b027d};var _0x555d80={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x5afaf4){_0x2e6ef0[_0xeae9('0xa')]=_0x5afaf4;}return db[_0xeae9('0xb')][_0xeae9('0xc')](_0x2e6ef0,_0x555d80);}function main(){var _0x19aecc=0x1388;var _0x5bddc9;logger[_0xeae9('0xd')](util['format'](_0xeae9('0xe'),EXTRACTED_REPORT_ID,_0xeae9('0xf')));return db[_0xeae9('0x10')][_0xeae9('0x11')]({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0xeae9('0x12')]})[_0xeae9('0x13')](function(_0x2d5478){if(_0x2d5478){_0x5bddc9=_0x2d5478;_0x19aecc=_0x5bddc9['splitSizeXlsx']||0x1388;}})[_0xeae9('0x13')](function(){return dbH[_0xeae9('0x14')][_0xeae9('0x15')](util[_0xeae9('0x16')](_0xeae9('0x17'),QUERY),{'type':dbH[_0xeae9('0x14')][_0xeae9('0x18')][_0xeae9('0x19')]});})[_0xeae9('0x13')](function(_0x286132){if(!_0x286132[0x0][_0xeae9('0x1a')]){return analyticExtractedReport(_0xeae9('0x1b'));}var _0x3d639b=[];var _0x3cf03d=0x0;if(_0x5bddc9[_0xeae9('0x1c')]){if(_0x286132&&_0x286132[_0xeae9('0x1d')]){var _0x245e6a=_[_0xeae9('0x1e')](_0x286132[0x0][_0xeae9('0x1a')]/_0x19aecc);var _0x10b3db=Number[_0xeae9('0x1f')](_0x286132[0x0][_0xeae9('0x1a')]/_0x19aecc)?_0x286132[0x0]['num']%_0x19aecc:0x0;_0x245e6a[_0xeae9('0x20')](function(_0x15d483){if(_0x15d483>0x0){_0x3cf03d+=_0x19aecc;}_0x3d639b[_0xeae9('0x21')](dbH[_0xeae9('0x14')][_0xeae9('0x15')](util['format']('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x19aecc,_0x3cf03d),{'type':dbH[_0xeae9('0x14')]['QueryTypes']['SELECT']}));});if(_0x10b3db>0x0){_0x3cf03d+=_0x19aecc;_0x3d639b[_0xeae9('0x21')](dbH[_0xeae9('0x14')]['query'](util['format']('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x10b3db,_0x3cf03d),{'type':dbH[_0xeae9('0x14')][_0xeae9('0x18')][_0xeae9('0x19')]}));}}}else{_0x3d639b['push'](dbH['sequelize']['query'](QUERY,{'type':dbH[_0xeae9('0x14')][_0xeae9('0x18')][_0xeae9('0x19')]}));}var _0x108b04=path[_0xeae9('0x22')](PATH);var _0x3a8a7d=path[_0xeae9('0x23')](PATH,_0xeae9('0x24'));var _0x15ef08=_0x5bddc9[_0xeae9('0x1c')]&&_0x3d639b[_0xeae9('0x1d')]>0x1;var _0x2ee6c8=[];if(!fs[_0xeae9('0x25')](path[_0xeae9('0x26')](_0x108b04,_0x3a8a7d))&&_0x15ef08){fs[_0xeae9('0x27')](path[_0xeae9('0x26')](_0x108b04,_0x3a8a7d));}return BPromise[_0xeae9('0x28')](_0x3d639b,function(_0x3d816f){_0x2ee6c8[_0xeae9('0x21')](_0x3d816f);})[_0xeae9('0x13')](function(){for(var _0x543479=0x0;_0x543479<_0x2ee6c8[_0xeae9('0x1d')];_0x543479+=0x1){var _0x1e32b1;var _0x2fcd94=_0x2ee6c8[_0x543479];if(_0x15ef08){_0x1e32b1=path[_0xeae9('0x26')](_0x108b04,_0x3a8a7d,util[_0xeae9('0x16')](_0xeae9('0x29'),_0x3a8a7d,_0x543479,_0xeae9('0x2a')));}else{_0x1e32b1=path[_0xeae9('0x26')](_0x108b04,util['format'](_0xeae9('0x2b'),_0x3a8a7d,_0xeae9('0x2a')));}fs[_0xeae9('0x2c')](_0x1e32b1,json2xls(_0x2fcd94),_0xeae9('0x2d'));}})[_0xeae9('0x13')](function(){if(_0x15ef08){return new Promise(function(_0x548d25){zipdir(path[_0xeae9('0x26')](_0x108b04,_0x3a8a7d),{'saveTo':path[_0xeae9('0x26')](_0x108b04,util['format']('%s.%s',_0x3a8a7d,_0xeae9('0x2e')))},function(_0x3bd249,_0x257d1a){rimraf(path[_0xeae9('0x26')](_0x108b04,_0x3a8a7d),function(){});_0x548d25(_0xeae9('0x2f'));});});}})[_0xeae9('0x13')](function(){logger['info'](util[_0xeae9('0x16')](_0xeae9('0x30'),EXTRACTED_REPORT_ID,_0xeae9('0xf')));return analyticExtractedReport(_0xeae9('0x31'),_0x15ef08?util[_0xeae9('0x16')](_0xeae9('0x2b'),_0x3a8a7d,_0x15ef08?_0xeae9('0x2e'):'xlsx'):null);});})[_0xeae9('0x32')](function(_0xe517c6){logger[_0xeae9('0xd')](util[_0xeae9('0x16')](_0xeae9('0x33'),EXTRACTED_REPORT_ID,_0xeae9('0xf')),util[_0xeae9('0x34')](_0xe517c6,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xeae9('0x35'));})[_0xeae9('0x36')](function(){process[_0xeae9('0x37')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0x3bd3=['sequelize','query','SELECT','num','Empty','length','range','isInteger','forEach','push','QueryTypes','%s\x20limit\x20%d\x20OFFSET\x20%d','dirname','basename','existsSync','mkdirSync','join','each','%s.%s','xlsx','zip','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','catch','Failed','exit','util','path','lodash','json2xls','bluebird','zip-dir','rimraf','../../mysqldb','../../config/logger','analytics','argv','savename','AnalyticExtractedReport','update','info','format','XLSX','Setting','find','split','splitSizeXlsx','then'];(function(_0x4a53d,_0x58a95e){var _0x27410e=function(_0x38fc90){while(--_0x38fc90){_0x4a53d['push'](_0x4a53d['shift']());}};_0x27410e(++_0x58a95e);}(_0x3bd3,0x110));var _0x33bd=function(_0x2dd7fc,_0x42c03c){_0x2dd7fc=_0x2dd7fc-0x0;var _0x1eac5d=_0x3bd3[_0x2dd7fc];return _0x1eac5d;};'use strict';var util=require(_0x33bd('0x0'));var path=require(_0x33bd('0x1'));var _=require(_0x33bd('0x2'));var fs=require('fs');var json2xls=require(_0x33bd('0x3'));var BPromise=require(_0x33bd('0x4'));var zipdir=require(_0x33bd('0x5'));var rimraf=require(_0x33bd('0x6'));var db=require(_0x33bd('0x7'))['db'];var dbH=require(_0x33bd('0x7'))['dbH'];var logger=require(_0x33bd('0x8'))(_0x33bd('0x9'));var EXTRACTED_REPORT_ID=Number(process[_0x33bd('0xa')][0x2]);var QUERY=process[_0x33bd('0xa')][0x3];var PATH=process['argv'][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x483d46,_0x43ca66){var _0x35d9dc={'status':_0x483d46};var _0x344db6={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x43ca66){_0x35d9dc[_0x33bd('0xb')]=_0x43ca66;}return db[_0x33bd('0xc')][_0x33bd('0xd')](_0x35d9dc,_0x344db6);}function main(){var _0x1921ee=0x1388;var _0x52f5e6;logger[_0x33bd('0xe')](util[_0x33bd('0xf')]('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x33bd('0x10')));return db[_0x33bd('0x11')][_0x33bd('0x12')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x33bd('0x13'),_0x33bd('0x14')]})[_0x33bd('0x15')](function(_0x46cc82){if(_0x46cc82){_0x52f5e6=_0x46cc82;_0x1921ee=_0x52f5e6[_0x33bd('0x14')]||0x1388;}})[_0x33bd('0x15')](function(){return dbH[_0x33bd('0x16')][_0x33bd('0x17')](util[_0x33bd('0xf')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH[_0x33bd('0x16')]['QueryTypes'][_0x33bd('0x18')]});})[_0x33bd('0x15')](function(_0x5c5573){if(!_0x5c5573[0x0][_0x33bd('0x19')]){return analyticExtractedReport(_0x33bd('0x1a'));}var _0x2654c6=[];var _0xf70c61=0x0;if(_0x52f5e6[_0x33bd('0x13')]){if(_0x5c5573&&_0x5c5573[_0x33bd('0x1b')]){var _0x129792=_[_0x33bd('0x1c')](_0x5c5573[0x0]['num']/_0x1921ee);var _0x1903cd=Number[_0x33bd('0x1d')](_0x5c5573[0x0]['num']/_0x1921ee)?_0x5c5573[0x0][_0x33bd('0x19')]%_0x1921ee:0x0;_0x129792[_0x33bd('0x1e')](function(_0x3dcaa1){if(_0x3dcaa1>0x0){_0xf70c61+=_0x1921ee;}_0x2654c6[_0x33bd('0x1f')](dbH[_0x33bd('0x16')]['query'](util[_0x33bd('0xf')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x1921ee,_0xf70c61),{'type':dbH[_0x33bd('0x16')][_0x33bd('0x20')][_0x33bd('0x18')]}));});if(_0x1903cd>0x0){_0xf70c61+=_0x1921ee;_0x2654c6['push'](dbH[_0x33bd('0x16')][_0x33bd('0x17')](util[_0x33bd('0xf')](_0x33bd('0x21'),QUERY,_0x1903cd,_0xf70c61),{'type':dbH['sequelize']['QueryTypes'][_0x33bd('0x18')]}));}}}else{_0x2654c6[_0x33bd('0x1f')](dbH[_0x33bd('0x16')][_0x33bd('0x17')](QUERY,{'type':dbH[_0x33bd('0x16')][_0x33bd('0x20')][_0x33bd('0x18')]}));}var _0x47aae4=path[_0x33bd('0x22')](PATH);var _0x11d5a6=path[_0x33bd('0x23')](PATH,'.xlsx');var _0x5b75dc=_0x52f5e6[_0x33bd('0x13')]&&_0x2654c6[_0x33bd('0x1b')]>0x1;var _0x477aa5=[];if(!fs[_0x33bd('0x24')](path['join'](_0x47aae4,_0x11d5a6))&&_0x5b75dc){fs[_0x33bd('0x25')](path[_0x33bd('0x26')](_0x47aae4,_0x11d5a6));}return BPromise[_0x33bd('0x27')](_0x2654c6,function(_0x25f609){_0x477aa5['push'](_0x25f609);})[_0x33bd('0x15')](function(){for(var _0x18920c=0x0;_0x18920c<_0x477aa5[_0x33bd('0x1b')];_0x18920c+=0x1){var _0x296795;var _0x10d801=_0x477aa5[_0x18920c];if(_0x5b75dc){_0x296795=path['join'](_0x47aae4,_0x11d5a6,util[_0x33bd('0xf')]('%s%d.%s',_0x11d5a6,_0x18920c,'xlsx'));}else{_0x296795=path[_0x33bd('0x26')](_0x47aae4,util[_0x33bd('0xf')](_0x33bd('0x28'),_0x11d5a6,_0x33bd('0x29')));}fs['writeFileSync'](_0x296795,json2xls(_0x10d801),'binary');}})['then'](function(){if(_0x5b75dc){return new Promise(function(_0x135d8d){zipdir(path['join'](_0x47aae4,_0x11d5a6),{'saveTo':path[_0x33bd('0x26')](_0x47aae4,util[_0x33bd('0xf')](_0x33bd('0x28'),_0x11d5a6,_0x33bd('0x2a')))},function(_0x79326e,_0x593b78){rimraf(path[_0x33bd('0x26')](_0x47aae4,_0x11d5a6),function(){});_0x135d8d(_0x33bd('0x2b'));});});}})[_0x33bd('0x15')](function(){logger[_0x33bd('0xe')](util['format'](_0x33bd('0x2c'),EXTRACTED_REPORT_ID,_0x33bd('0x10')));return analyticExtractedReport(_0x33bd('0x2d'),_0x5b75dc?util[_0x33bd('0xf')](_0x33bd('0x28'),_0x11d5a6,_0x5b75dc?_0x33bd('0x2a'):_0x33bd('0x29')):null);});})[_0x33bd('0x2e')](function(_0xb22aea){logger[_0x33bd('0xe')](util[_0x33bd('0xf')]('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x33bd('0x10')),util['inspect'](_0xb22aea,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x33bd('0x2f'));})['finally'](function(){process[_0x33bd('0x30')](EXIT_CODE);});}main();
\ No newline at end of file
index 89411cc..f21a45a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2ec=['$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','answer','indexOf','appType','custom','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','last','concat','Hangup','destroy','bulkCreate','sortBy','catch','error','lodash','models','Interval','findAll','then','intervals','VoiceExtension','IntervalId','uniq','map','CAST(priority\x20AS\x20UNSIGNED)','filter','exten','queue','playback','hasOwnProperty','priority','extensions','extension','find','type','CDR(type)=%s','context','VoiceExtensionId','inbound','push','Set','CDR(routeid)=','outbound','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','ExecIf','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','outboundrouteid=','recordingFormat','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','length','toLowerCase','createdAt','updatedAt','interval','*,*,*,*','tag','CDR(tag)=','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)='];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xb2ec,0xa2));var _0xcb2e=function(_0x2e0435,_0x560036){_0x2e0435=_0x2e0435-0x0;var _0x500586=_0xb2ec[_0x2e0435];return _0x500586;};'use strict';var _=require(_0xcb2e('0x0'));var util=require('util');function rewrite(_0x5f5830,_0x268d5b){var _0x19982e=this;return _0x5f5830[_0xcb2e('0x1')][_0xcb2e('0x2')][_0xcb2e('0x3')]({'raw':!![]})[_0xcb2e('0x4')](function(_0x3c5f3a){_0x19982e[_0xcb2e('0x5')]=_0x3c5f3a;return _0x5f5830['models'][_0xcb2e('0x6')][_0xcb2e('0x3')]({'where':{'IntervalId':_0x268d5b[_0xcb2e('0x7')]},'raw':!![]});})[_0xcb2e('0x4')](function(_0x342cb6){return _0x5f5830['models']['VoiceExtension'][_0xcb2e('0x3')]({'where':{'exten':{'$in':_[_0xcb2e('0x8')](_[_0xcb2e('0x9')](_0x342cb6,'exten'))}},'order':[{'raw':_0xcb2e('0xa')}],'raw':!![]});})[_0xcb2e('0x4')](function(_0x38a170){var _0xd3f289=_[_0xcb2e('0xb')](_0x38a170,{'priority':'1'});var _0x260c48=_['filter'](_0x38a170,{'isApp':0x1});var _0x396247=_['groupBy'](_0x260c48,_0xcb2e('0xc'));var _0xb8a229=[_0xcb2e('0xd'),_0xcb2e('0xe')];var _0xca9c26=[];var _0x57939e=[];for(var _0x3ccb42 in _0x396247){if(_0x396247[_0xcb2e('0xf')](_0x3ccb42)){_0x19982e[_0xcb2e('0x10')]=0x2;_0x19982e[_0xcb2e('0x11')]=[];_0x19982e[_0xcb2e('0x12')]=_[_0xcb2e('0x13')](_0xd3f289,{'exten':_0x396247[_0x3ccb42][0x0]['exten']});_0x19982e[_0xcb2e('0x11')]['push']({'type':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x14')],'app':'Set','appdata':util['format'](_0xcb2e('0x15'),_0x396247[_0x3ccb42][0x0]['type']),'context':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x16')],'exten':_0x396247[_0x3ccb42][0x0][_0xcb2e('0xc')],'priority':_0x19982e[_0xcb2e('0x10')]++,'VoiceExtensionId':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x17')]});if(_0x396247[_0x3ccb42][0x0][_0xcb2e('0x14')]===_0xcb2e('0x18')){_0x19982e['extensions'][_0xcb2e('0x19')]({'type':_0x396247[_0x3ccb42][0x0]['type'],'app':_0xcb2e('0x1a'),'appdata':_0xcb2e('0x1b')+_0x396247[_0x3ccb42][0x0][_0xcb2e('0x17')],'context':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x16')],'exten':_0x396247[_0x3ccb42][0x0][_0xcb2e('0xc')],'priority':_0x19982e[_0xcb2e('0x10')]++,'VoiceExtensionId':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x17')]});}else if(_0x396247[_0x3ccb42][0x0]['type']===_0xcb2e('0x1c')){if(_0x19982e[_0xcb2e('0x12')]){_0x19982e[_0xcb2e('0x11')]['push']({'type':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x14')],'app':_0xcb2e('0x1a'),'appdata':_0xcb2e('0x1d')+(_0x19982e[_0xcb2e('0x12')][_0xcb2e('0x1e')]?_0xcb2e('0x1f')+_0x19982e[_0xcb2e('0x12')][_0xcb2e('0x1e')]+'}':_0xcb2e('0x20')),'context':_0x396247[_0x3ccb42][0x0]['context'],'exten':_0x396247[_0x3ccb42][0x0]['exten'],'priority':_0x19982e[_0xcb2e('0x10')]++,'VoiceExtensionId':_0x396247[_0x3ccb42][0x0]['VoiceExtensionId']});}_0x19982e[_0xcb2e('0x11')][_0xcb2e('0x19')]({'type':_0x396247[_0x3ccb42][0x0]['type'],'app':'Set','appdata':_0xcb2e('0x1b')+_0x396247[_0x3ccb42][0x0]['VoiceExtensionId'],'context':_0x396247[_0x3ccb42][0x0]['context'],'exten':_0x396247[_0x3ccb42][0x0][_0xcb2e('0xc')],'priority':_0x19982e[_0xcb2e('0x10')]++,'VoiceExtensionId':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x17')]});var _0x3d76e0=_0x19982e['priority']++;_0x19982e[_0xcb2e('0x11')][_0xcb2e('0x19')]({'type':_0x396247[_0x3ccb42][0x0]['type'],'app':_0xcb2e('0x21'),'appdata':'$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto('+(_0x3d76e0+0x2)+_0xcb2e('0x22')+(_0x3d76e0+0x1)+')','context':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x16')],'exten':_0x396247[_0x3ccb42][0x0][_0xcb2e('0xc')],'priority':_0x3d76e0,'VoiceExtensionId':_0x396247[_0x3ccb42][0x0]['VoiceExtensionId']});if(_0x19982e['extension']){_0x19982e[_0xcb2e('0x11')][_0xcb2e('0x19')]({'type':_0x396247[_0x3ccb42][0x0]['type'],'app':_0xcb2e('0x1a'),'appdata':_0x19982e[_0xcb2e('0x12')][_0xcb2e('0x1e')]?_0xcb2e('0x23')+_0x19982e[_0xcb2e('0x12')][_0xcb2e('0x1e')]+'}':_0xcb2e('0x24'),'context':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x16')],'exten':_0x396247[_0x3ccb42][0x0]['exten'],'priority':_0x19982e['priority']++,'VoiceExtensionId':_0x396247[_0x3ccb42][0x0]['VoiceExtensionId']});}_0x19982e['extensions'][_0xcb2e('0x19')]({'type':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x14')],'app':_0xcb2e('0x1a'),'appdata':_0xcb2e('0x25')+_0x396247[_0x3ccb42][0x0]['VoiceExtensionId'],'context':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x16')],'exten':_0x396247[_0x3ccb42][0x0][_0xcb2e('0xc')],'priority':_0x19982e[_0xcb2e('0x10')]++,'VoiceExtensionId':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x17')]});if(_0x19982e[_0xcb2e('0x12')]&&_0x19982e[_0xcb2e('0x12')]['hasOwnProperty'](_0xcb2e('0x26'))&&_0x19982e[_0xcb2e('0x12')][_0xcb2e('0x26')]!=='none'){_0x19982e[_0xcb2e('0x11')]['push']({'type':_0x396247[_0x3ccb42][0x0]['type'],'app':_0xcb2e('0x1a'),'appdata':_0xcb2e('0x27'),'context':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x16')],'exten':_0x396247[_0x3ccb42][0x0][_0xcb2e('0xc')],'priority':_0x19982e['priority']++,'VoiceExtensionId':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x17')]});_0x19982e[_0xcb2e('0x11')][_0xcb2e('0x19')]({'type':_0x396247[_0x3ccb42][0x0]['type'],'app':_0xcb2e('0x1a'),'appdata':_0xcb2e('0x28')+_0x19982e[_0xcb2e('0x12')]['recordingFormat']||_0xcb2e('0x29'),'context':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x16')],'exten':_0x396247[_0x3ccb42][0x0][_0xcb2e('0xc')],'priority':_0x19982e[_0xcb2e('0x10')]++,'VoiceExtensionId':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x17')]});}}_0x19982e[_0xcb2e('0x11')][_0xcb2e('0x19')]({'type':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x14')],'app':'Set','appdata':'XCALLY-MOTION-ANSWER=0','context':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x16')],'exten':_0x396247[_0x3ccb42][0x0][_0xcb2e('0xc')],'priority':_0x19982e[_0xcb2e('0x10')]++,'VoiceExtensionId':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x17')]});_0x19982e[_0xcb2e('0x11')]['push']({'type':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x14')],'app':_0xcb2e('0x1a'),'appdata':_0xcb2e('0x2a'),'context':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x16')],'exten':_0x396247[_0x3ccb42][0x0][_0xcb2e('0xc')],'priority':_0x19982e['priority']++,'VoiceExtensionId':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x17')]});_0x19982e['extensions'][_0xcb2e('0x19')]({'type':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x14')],'app':_0xcb2e('0x1a'),'appdata':_0xcb2e('0x2b'),'context':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x16')],'exten':_0x396247[_0x3ccb42][0x0][_0xcb2e('0xc')],'priority':_0x19982e[_0xcb2e('0x10')]++,'VoiceExtensionId':_0x396247[_0x3ccb42][0x0]['VoiceExtensionId']});for(var _0x401b3e=0x0,_0x3b3e33=0x0;_0x401b3e<_0x396247[_0x3ccb42][_0xcb2e('0x2c')];_0x401b3e+=0x1,_0x3b3e33=0x0){var _0x466d63=_0x396247[_0x3ccb42][_0x401b3e];if(_0x466d63['type']){_0x466d63[_0xcb2e('0x14')]=_0x466d63[_0xcb2e('0x14')][_0xcb2e('0x2d')]();}var _0x5a18f5=[];var _0xe4bc2=[];delete _0x466d63['id'];delete _0x466d63[_0xcb2e('0x2e')];delete _0x466d63[_0xcb2e('0x2f')];var _0x73efbe=_0x466d63[_0xcb2e('0x30')]!==_0xcb2e('0x31')?[_0x466d63['interval']]:_0x466d63[_0xcb2e('0x7')]?_[_0xcb2e('0x9')](_[_0xcb2e('0xb')](_0x19982e['intervals'],{'IntervalId':_0x466d63[_0xcb2e('0x7')]}),'interval'):[];if(_0x466d63[_0xcb2e('0xf')](_0xcb2e('0x32'))){if(_0x466d63[_0xcb2e('0x32')]&&_0x466d63[_0xcb2e('0x32')]!=='--'){_0x5a18f5[_0xcb2e('0x19')]({'type':_0x466d63[_0xcb2e('0x14')],'app':_0xcb2e('0x1a'),'appdata':_0xcb2e('0x33')+_0x466d63[_0xcb2e('0x32')],'context':_0x466d63['context'],'exten':_0x466d63[_0xcb2e('0xc')],'priority':_0x73efbe[_0xcb2e('0x2c')]+_0x19982e[_0xcb2e('0x10')]+_0x3b3e33++,'VoiceExtensionId':_0x466d63[_0xcb2e('0x17')]});}}if(_0x466d63[_0xcb2e('0x14')]===_0xcb2e('0x1c')&&_0x466d63['hasOwnProperty'](_0xcb2e('0x34'))){if(_0x466d63['callerID']){_0x5a18f5['push']({'type':_0x466d63[_0xcb2e('0x14')],'app':_0xcb2e('0x21'),'appdata':_0xcb2e('0x35')+_0x466d63[_0xcb2e('0x34')]+')','context':_0x466d63['context'],'exten':_0x466d63['exten'],'priority':_0x73efbe[_0xcb2e('0x2c')]+_0x19982e['priority']+_0x3b3e33++,'VoiceExtensionId':_0x466d63[_0xcb2e('0x17')]});}else{_0x5a18f5[_0xcb2e('0x19')]({'type':_0x466d63[_0xcb2e('0x14')],'app':_0xcb2e('0x21'),'appdata':_0xcb2e('0x36'),'context':_0x466d63['context'],'exten':_0x466d63[_0xcb2e('0xc')],'priority':_0x73efbe[_0xcb2e('0x2c')]+_0x19982e['priority']+_0x3b3e33++,'VoiceExtensionId':_0x466d63[_0xcb2e('0x17')]});}}if(_0x466d63[_0xcb2e('0xf')](_0xcb2e('0x37'))){if(_0xb8a229[_0xcb2e('0x38')](_0x466d63['app'][_0xcb2e('0x2d')]())>=0x0&&_0x466d63[_0xcb2e('0x39')]!==_0xcb2e('0x3a')){if(_0x466d63['answer']){_0x5a18f5[_0xcb2e('0x19')]({'type':_0x466d63[_0xcb2e('0x14')],'app':_0xcb2e('0x21'),'appdata':'$[${XCALLY-MOTION-ANSWER}=0]?Answer','context':_0x466d63['context'],'exten':_0x466d63[_0xcb2e('0xc')],'priority':_0x73efbe[_0xcb2e('0x2c')]+_0x19982e[_0xcb2e('0x10')]+_0x3b3e33++,'VoiceExtensionId':_0x466d63[_0xcb2e('0x17')]});_0x5a18f5['push']({'type':_0x466d63[_0xcb2e('0x14')],'app':_0xcb2e('0x1a'),'appdata':'XCALLY-MOTION-ANSWER=1','context':_0x466d63[_0xcb2e('0x16')],'exten':_0x466d63[_0xcb2e('0xc')],'priority':_0x73efbe[_0xcb2e('0x2c')]+_0x19982e[_0xcb2e('0x10')]+_0x3b3e33++,'VoiceExtensionId':_0x466d63[_0xcb2e('0x17')]});}else{_0x5a18f5['push']({'type':_0x466d63[_0xcb2e('0x14')],'app':_0xcb2e('0x21'),'appdata':_0xcb2e('0x3b'),'context':_0x466d63[_0xcb2e('0x16')],'exten':_0x466d63[_0xcb2e('0xc')],'priority':_0x73efbe[_0xcb2e('0x2c')]+_0x19982e[_0xcb2e('0x10')]+_0x3b3e33++,'VoiceExtensionId':_0x466d63[_0xcb2e('0x17')]});_0x5a18f5[_0xcb2e('0x19')]({'type':_0x466d63[_0xcb2e('0x14')],'app':_0xcb2e('0x1a'),'appdata':_0xcb2e('0x3c'),'context':_0x466d63[_0xcb2e('0x16')],'exten':_0x466d63['exten'],'priority':_0x73efbe[_0xcb2e('0x2c')]+_0x19982e[_0xcb2e('0x10')]+_0x3b3e33++,'VoiceExtensionId':_0x466d63[_0xcb2e('0x17')]});}}}for(var _0x19661f=0x0;_0x19661f<_0x73efbe[_0xcb2e('0x2c')];_0x19661f+=0x1){var _0x4e6529=_0x19982e[_0xcb2e('0x10')]+_0x73efbe[_0xcb2e('0x2c')];var _0x549fa8=_0x19661f===_0x73efbe[_0xcb2e('0x2c')]-0x1?_0x19982e[_0xcb2e('0x10')]+_0x5a18f5['length']+_0xe4bc2['length']+0x2:_0x19982e[_0xcb2e('0x10')]+_0x19661f+0x1;_0x5a18f5[_0xcb2e('0x3d')](_0x19661f,0x0,{'type':_0x466d63[_0xcb2e('0x14')],'app':_0xcb2e('0x3e'),'appdata':_0x73efbe[_0x19661f]+'?'+_0x466d63[_0xcb2e('0x16')]+_0xcb2e('0x3f')+_0x4e6529+':'+_0x466d63[_0xcb2e('0x16')]+_0xcb2e('0x3f')+_0x549fa8,'exten':_0x466d63[_0xcb2e('0xc')],'context':_0x466d63[_0xcb2e('0x16')],'priority':_0x19982e['priority']+_0x19661f,'VoiceExtensionId':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x17')]});}_0x466d63['priority']=_0x5a18f5[_0xcb2e('0x2c')]?_[_0xcb2e('0x40')](_0x5a18f5)['priority']+0x1:_0x19982e[_0xcb2e('0x10')];_0x19982e[_0xcb2e('0x10')]=(_0xe4bc2[_0xcb2e('0x2c')]?_[_0xcb2e('0x40')](_0xe4bc2)['priority']:_0x466d63[_0xcb2e('0x10')])+0x1;_0x19982e[_0xcb2e('0x11')]=_[_0xcb2e('0x41')](_0x19982e[_0xcb2e('0x11')],_0x5a18f5,[_0x466d63],_0xe4bc2);}_0x19982e[_0xcb2e('0x11')]['push']({'type':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x14')],'app':_0xcb2e('0x42'),'exten':_0x396247[_0x3ccb42][0x0]['exten'],'context':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x16')],'priority':_0x19982e[_0xcb2e('0x10')],'VoiceExtensionId':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x17')]});_0xca9c26[_0xcb2e('0x19')](_0x396247[_0x3ccb42][0x0][_0xcb2e('0x17')]);_0x57939e=_[_0xcb2e('0x41')](_0x57939e,_0x19982e[_0xcb2e('0x11')]);}}return _0x5f5830['transaction'](function(_0x36ad7f){return _0x5f5830[_0xcb2e('0x1')][_0xcb2e('0x6')][_0xcb2e('0x43')]({'where':{'VoiceExtensionId':{'$in':_0xca9c26}},'transaction':_0x36ad7f})[_0xcb2e('0x4')](function(_0x2b6cc9){return _0x5f5830[_0xcb2e('0x1')][_0xcb2e('0x6')][_0xcb2e('0x44')](_[_0xcb2e('0x45')](_0x57939e,_0xcb2e('0x10')),{'transaction':_0x36ad7f});});});})[_0xcb2e('0x46')](function(_0x2e6fac){console[_0xcb2e('0x47')](_0x2e6fac);});}exports['rewrite']=rewrite;
\ No newline at end of file
+var _0xa17f=['*,*,*,*','tag','CDR(tag)=','outbound','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','answer','indexOf','app','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','last','transaction','destroy','bulkCreate','catch','lodash','util','models','Interval','findAll','then','intervals','VoiceExtension','IntervalId','map','exten','CAST(priority\x20AS\x20UNSIGNED)','filter','hasOwnProperty','extension','extensions','Set','format','CDR(type)=%s','context','VoiceExtensionId','type','inbound','push','CDR(routeid)=','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','priority','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','length','toLowerCase','createdAt','interval'];(function(_0x30bfd7,_0x35de19){var _0xb4734=function(_0x288afe){while(--_0x288afe){_0x30bfd7['push'](_0x30bfd7['shift']());}};_0xb4734(++_0x35de19);}(_0xa17f,0xa1));var _0xfa17=function(_0x4d613c,_0x55f220){_0x4d613c=_0x4d613c-0x0;var _0x301fe3=_0xa17f[_0x4d613c];return _0x301fe3;};'use strict';var _=require(_0xfa17('0x0'));var util=require(_0xfa17('0x1'));function rewrite(_0x41c7ed,_0x2f3624){var _0x4c5b24=this;return _0x41c7ed[_0xfa17('0x2')][_0xfa17('0x3')][_0xfa17('0x4')]({'raw':!![]})[_0xfa17('0x5')](function(_0x2b1ff8){_0x4c5b24[_0xfa17('0x6')]=_0x2b1ff8;return _0x41c7ed[_0xfa17('0x2')][_0xfa17('0x7')][_0xfa17('0x4')]({'where':{'IntervalId':_0x2f3624[_0xfa17('0x8')]},'raw':!![]});})[_0xfa17('0x5')](function(_0x2fb54a){return _0x41c7ed[_0xfa17('0x2')][_0xfa17('0x7')][_0xfa17('0x4')]({'where':{'exten':{'$in':_['uniq'](_[_0xfa17('0x9')](_0x2fb54a,_0xfa17('0xa')))}},'order':[{'raw':_0xfa17('0xb')}],'raw':!![]});})[_0xfa17('0x5')](function(_0x5ab543){var _0x5bf2d1=_[_0xfa17('0xc')](_0x5ab543,{'priority':'1'});var _0xb6b0e0=_[_0xfa17('0xc')](_0x5ab543,{'isApp':0x1});var _0x31f80e=_['groupBy'](_0xb6b0e0,_0xfa17('0xa'));var _0x9a7873=['queue','playback'];var _0x1ce810=[];var _0x1cb0d7=[];for(var _0x7cc6db in _0x31f80e){if(_0x31f80e[_0xfa17('0xd')](_0x7cc6db)){_0x4c5b24['priority']=0x2;_0x4c5b24['extensions']=[];_0x4c5b24[_0xfa17('0xe')]=_['find'](_0x5bf2d1,{'exten':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0xa')]});_0x4c5b24[_0xfa17('0xf')]['push']({'type':_0x31f80e[_0x7cc6db][0x0]['type'],'app':_0xfa17('0x10'),'appdata':util[_0xfa17('0x11')](_0xfa17('0x12'),_0x31f80e[_0x7cc6db][0x0]['type']),'context':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x13')],'exten':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0xa')],'priority':_0x4c5b24['priority']++,'VoiceExtensionId':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x14')]});if(_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x15')]===_0xfa17('0x16')){_0x4c5b24['extensions'][_0xfa17('0x17')]({'type':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x15')],'app':_0xfa17('0x10'),'appdata':_0xfa17('0x18')+_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x14')],'context':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x13')],'exten':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0xa')],'priority':_0x4c5b24['priority']++,'VoiceExtensionId':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x14')]});}else if(_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x15')]==='outbound'){if(_0x4c5b24['extension']){_0x4c5b24[_0xfa17('0xf')][_0xfa17('0x17')]({'type':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x15')],'app':_0xfa17('0x10'),'appdata':_0xfa17('0x19')+(_0x4c5b24[_0xfa17('0xe')][_0xfa17('0x1a')]?_0xfa17('0x1b')+_0x4c5b24[_0xfa17('0xe')][_0xfa17('0x1a')]+'}':_0xfa17('0x1c')),'context':_0x31f80e[_0x7cc6db][0x0]['context'],'exten':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0xa')],'priority':_0x4c5b24['priority']++,'VoiceExtensionId':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x14')]});}_0x4c5b24[_0xfa17('0xf')][_0xfa17('0x17')]({'type':_0x31f80e[_0x7cc6db][0x0]['type'],'app':_0xfa17('0x10'),'appdata':_0xfa17('0x18')+_0x31f80e[_0x7cc6db][0x0]['VoiceExtensionId'],'context':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x13')],'exten':_0x31f80e[_0x7cc6db][0x0]['exten'],'priority':_0x4c5b24[_0xfa17('0x1d')]++,'VoiceExtensionId':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x14')]});var _0x1d737d=_0x4c5b24[_0xfa17('0x1d')]++;_0x4c5b24[_0xfa17('0xf')]['push']({'type':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x15')],'app':_0xfa17('0x1e'),'appdata':_0xfa17('0x1f')+(_0x1d737d+0x2)+_0xfa17('0x20')+(_0x1d737d+0x1)+')','context':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x13')],'exten':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0xa')],'priority':_0x1d737d,'VoiceExtensionId':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x14')]});if(_0x4c5b24[_0xfa17('0xe')]){_0x4c5b24[_0xfa17('0xf')]['push']({'type':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x15')],'app':'Set','appdata':_0x4c5b24[_0xfa17('0xe')][_0xfa17('0x1a')]?_0xfa17('0x21')+_0x4c5b24[_0xfa17('0xe')][_0xfa17('0x1a')]+'}':_0xfa17('0x22'),'context':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x13')],'exten':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0xa')],'priority':_0x4c5b24[_0xfa17('0x1d')]++,'VoiceExtensionId':_0x31f80e[_0x7cc6db][0x0]['VoiceExtensionId']});}_0x4c5b24[_0xfa17('0xf')][_0xfa17('0x17')]({'type':_0x31f80e[_0x7cc6db][0x0]['type'],'app':_0xfa17('0x10'),'appdata':'outboundrouteid='+_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x14')],'context':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x13')],'exten':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0xa')],'priority':_0x4c5b24[_0xfa17('0x1d')]++,'VoiceExtensionId':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x14')]});if(_0x4c5b24['extension']&&_0x4c5b24[_0xfa17('0xe')][_0xfa17('0xd')](_0xfa17('0x23'))&&_0x4c5b24[_0xfa17('0xe')][_0xfa17('0x23')]!==_0xfa17('0x24')){_0x4c5b24['extensions'][_0xfa17('0x17')]({'type':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x15')],'app':_0xfa17('0x10'),'appdata':_0xfa17('0x25'),'context':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x13')],'exten':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0xa')],'priority':_0x4c5b24[_0xfa17('0x1d')]++,'VoiceExtensionId':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x14')]});_0x4c5b24[_0xfa17('0xf')]['push']({'type':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x15')],'app':_0xfa17('0x10'),'appdata':_0xfa17('0x26')+_0x4c5b24[_0xfa17('0xe')][_0xfa17('0x23')]||_0xfa17('0x27'),'context':_0x31f80e[_0x7cc6db][0x0]['context'],'exten':_0x31f80e[_0x7cc6db][0x0]['exten'],'priority':_0x4c5b24[_0xfa17('0x1d')]++,'VoiceExtensionId':_0x31f80e[_0x7cc6db][0x0]['VoiceExtensionId']});}}_0x4c5b24['extensions'][_0xfa17('0x17')]({'type':_0x31f80e[_0x7cc6db][0x0]['type'],'app':_0xfa17('0x10'),'appdata':_0xfa17('0x28'),'context':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x13')],'exten':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0xa')],'priority':_0x4c5b24[_0xfa17('0x1d')]++,'VoiceExtensionId':_0x31f80e[_0x7cc6db][0x0]['VoiceExtensionId']});_0x4c5b24[_0xfa17('0xf')]['push']({'type':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x15')],'app':_0xfa17('0x10'),'appdata':_0xfa17('0x29'),'context':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x13')],'exten':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0xa')],'priority':_0x4c5b24[_0xfa17('0x1d')]++,'VoiceExtensionId':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x14')]});_0x4c5b24['extensions'][_0xfa17('0x17')]({'type':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x15')],'app':_0xfa17('0x10'),'appdata':'MONITOR_OPTIONS=ab','context':_0x31f80e[_0x7cc6db][0x0]['context'],'exten':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0xa')],'priority':_0x4c5b24['priority']++,'VoiceExtensionId':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x14')]});for(var _0x4cb1e3=0x0,_0x4fd48e=0x0;_0x4cb1e3<_0x31f80e[_0x7cc6db][_0xfa17('0x2a')];_0x4cb1e3+=0x1,_0x4fd48e=0x0){var _0x1be3af=_0x31f80e[_0x7cc6db][_0x4cb1e3];if(_0x1be3af['type']){_0x1be3af[_0xfa17('0x15')]=_0x1be3af[_0xfa17('0x15')][_0xfa17('0x2b')]();}var _0x5c104e=[];var _0x5725b4=[];delete _0x1be3af['id'];delete _0x1be3af[_0xfa17('0x2c')];delete _0x1be3af['updatedAt'];var _0x1c883a=_0x1be3af[_0xfa17('0x2d')]!==_0xfa17('0x2e')?[_0x1be3af[_0xfa17('0x2d')]]:_0x1be3af['IntervalId']?_[_0xfa17('0x9')](_[_0xfa17('0xc')](_0x4c5b24[_0xfa17('0x6')],{'IntervalId':_0x1be3af[_0xfa17('0x8')]}),_0xfa17('0x2d')):[];if(_0x1be3af[_0xfa17('0xd')]('tag')){if(_0x1be3af[_0xfa17('0x2f')]&&_0x1be3af[_0xfa17('0x2f')]!=='--'){_0x5c104e[_0xfa17('0x17')]({'type':_0x1be3af[_0xfa17('0x15')],'app':'Set','appdata':_0xfa17('0x30')+_0x1be3af[_0xfa17('0x2f')],'context':_0x1be3af[_0xfa17('0x13')],'exten':_0x1be3af[_0xfa17('0xa')],'priority':_0x1c883a['length']+_0x4c5b24[_0xfa17('0x1d')]+_0x4fd48e++,'VoiceExtensionId':_0x1be3af[_0xfa17('0x14')]});}}if(_0x1be3af[_0xfa17('0x15')]===_0xfa17('0x31')&&_0x1be3af['hasOwnProperty']('callerID')){if(_0x1be3af[_0xfa17('0x32')]){_0x5c104e[_0xfa17('0x17')]({'type':_0x1be3af[_0xfa17('0x15')],'app':_0xfa17('0x1e'),'appdata':_0xfa17('0x33')+_0x1be3af['callerID']+')','context':_0x1be3af[_0xfa17('0x13')],'exten':_0x1be3af[_0xfa17('0xa')],'priority':_0x1c883a[_0xfa17('0x2a')]+_0x4c5b24[_0xfa17('0x1d')]+_0x4fd48e++,'VoiceExtensionId':_0x1be3af[_0xfa17('0x14')]});}else{_0x5c104e[_0xfa17('0x17')]({'type':_0x1be3af[_0xfa17('0x15')],'app':_0xfa17('0x1e'),'appdata':_0xfa17('0x34'),'context':_0x1be3af[_0xfa17('0x13')],'exten':_0x1be3af[_0xfa17('0xa')],'priority':_0x1c883a[_0xfa17('0x2a')]+_0x4c5b24[_0xfa17('0x1d')]+_0x4fd48e++,'VoiceExtensionId':_0x1be3af[_0xfa17('0x14')]});}}if(_0x1be3af['hasOwnProperty'](_0xfa17('0x35'))){if(_0x9a7873[_0xfa17('0x36')](_0x1be3af[_0xfa17('0x37')][_0xfa17('0x2b')]())>=0x0&&_0x1be3af['appType']!==_0xfa17('0x38')){if(_0x1be3af[_0xfa17('0x35')]){_0x5c104e[_0xfa17('0x17')]({'type':_0x1be3af['type'],'app':_0xfa17('0x1e'),'appdata':_0xfa17('0x39'),'context':_0x1be3af[_0xfa17('0x13')],'exten':_0x1be3af['exten'],'priority':_0x1c883a[_0xfa17('0x2a')]+_0x4c5b24[_0xfa17('0x1d')]+_0x4fd48e++,'VoiceExtensionId':_0x1be3af[_0xfa17('0x14')]});_0x5c104e[_0xfa17('0x17')]({'type':_0x1be3af['type'],'app':_0xfa17('0x10'),'appdata':_0xfa17('0x3a'),'context':_0x1be3af[_0xfa17('0x13')],'exten':_0x1be3af[_0xfa17('0xa')],'priority':_0x1c883a[_0xfa17('0x2a')]+_0x4c5b24['priority']+_0x4fd48e++,'VoiceExtensionId':_0x1be3af[_0xfa17('0x14')]});}else{_0x5c104e[_0xfa17('0x17')]({'type':_0x1be3af[_0xfa17('0x15')],'app':_0xfa17('0x1e'),'appdata':_0xfa17('0x3b'),'context':_0x1be3af[_0xfa17('0x13')],'exten':_0x1be3af[_0xfa17('0xa')],'priority':_0x1c883a[_0xfa17('0x2a')]+_0x4c5b24['priority']+_0x4fd48e++,'VoiceExtensionId':_0x1be3af[_0xfa17('0x14')]});_0x5c104e[_0xfa17('0x17')]({'type':_0x1be3af[_0xfa17('0x15')],'app':_0xfa17('0x10'),'appdata':_0xfa17('0x3c'),'context':_0x1be3af[_0xfa17('0x13')],'exten':_0x1be3af[_0xfa17('0xa')],'priority':_0x1c883a[_0xfa17('0x2a')]+_0x4c5b24[_0xfa17('0x1d')]+_0x4fd48e++,'VoiceExtensionId':_0x1be3af['VoiceExtensionId']});}}}for(var _0xbcde24=0x0;_0xbcde24<_0x1c883a[_0xfa17('0x2a')];_0xbcde24+=0x1){var _0x156990=_0x4c5b24['priority']+_0x1c883a[_0xfa17('0x2a')];var _0x5c07a6=_0xbcde24===_0x1c883a[_0xfa17('0x2a')]-0x1?_0x4c5b24[_0xfa17('0x1d')]+_0x5c104e[_0xfa17('0x2a')]+_0x5725b4[_0xfa17('0x2a')]+0x2:_0x4c5b24[_0xfa17('0x1d')]+_0xbcde24+0x1;_0x5c104e[_0xfa17('0x3d')](_0xbcde24,0x0,{'type':_0x1be3af['type'],'app':_0xfa17('0x3e'),'appdata':_0x1c883a[_0xbcde24]+'?'+_0x1be3af[_0xfa17('0x13')]+_0xfa17('0x3f')+_0x156990+':'+_0x1be3af[_0xfa17('0x13')]+_0xfa17('0x3f')+_0x5c07a6,'exten':_0x1be3af['exten'],'context':_0x1be3af[_0xfa17('0x13')],'priority':_0x4c5b24['priority']+_0xbcde24,'VoiceExtensionId':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x14')]});}_0x1be3af[_0xfa17('0x1d')]=_0x5c104e[_0xfa17('0x2a')]?_[_0xfa17('0x40')](_0x5c104e)[_0xfa17('0x1d')]+0x1:_0x4c5b24[_0xfa17('0x1d')];_0x4c5b24['priority']=(_0x5725b4['length']?_[_0xfa17('0x40')](_0x5725b4)[_0xfa17('0x1d')]:_0x1be3af[_0xfa17('0x1d')])+0x1;_0x4c5b24[_0xfa17('0xf')]=_['concat'](_0x4c5b24[_0xfa17('0xf')],_0x5c104e,[_0x1be3af],_0x5725b4);}_0x4c5b24[_0xfa17('0xf')][_0xfa17('0x17')]({'type':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x15')],'app':'Hangup','exten':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0xa')],'context':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x13')],'priority':_0x4c5b24[_0xfa17('0x1d')],'VoiceExtensionId':_0x31f80e[_0x7cc6db][0x0]['VoiceExtensionId']});_0x1ce810[_0xfa17('0x17')](_0x31f80e[_0x7cc6db][0x0]['VoiceExtensionId']);_0x1cb0d7=_['concat'](_0x1cb0d7,_0x4c5b24[_0xfa17('0xf')]);}}return _0x41c7ed[_0xfa17('0x41')](function(_0x4cd5b8){return _0x41c7ed['models'][_0xfa17('0x7')][_0xfa17('0x42')]({'where':{'VoiceExtensionId':{'$in':_0x1ce810}},'transaction':_0x4cd5b8})[_0xfa17('0x5')](function(_0x13c848){return _0x41c7ed[_0xfa17('0x2')][_0xfa17('0x7')][_0xfa17('0x43')](_['sortBy'](_0x1cb0d7,'priority'),{'transaction':_0x4cd5b8});});});})[_0xfa17('0x44')](function(_0x4213a0){console['error'](_0x4213a0);});}exports['rewrite']=rewrite;
\ No newline at end of file
index 0973a43..05789c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18ba=['get','onlyIfOpen','CampaignId','BlackLists','cmContact,\x20%s,\x20%s','Error\x20processing\x20rows\x20block:','stringify','finally','emit','contact:csv_','resume','resolve','unlinkSync','Unable\x20to\x20delete\x20temp\x20file:','SIGINT','info','CSV\x20import\x20process\x20stopped!','CmContact','createReadStream','parse','duplicate','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','bluebird','util','squel','papaparse','../../../config/environment','../../../config/logger','redis','localhost','socket.io-emitter','register','argv','null','Missing\x20filepath\x20parameter!','undefined','Missing\x20binding\x20parameters!','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','hasOwnProperty','data','firstName','firstName\x20not\x20specified!','phone\x20not\x20specified!','birthDate','YYYY-MM-DD','isValid','email','ListId','find','Duplicate\x20Contact','create','keys','then','push','catch','Error\x20while\x20creating\x20contact:\x20','cmContact','checkHopper','inspect','into','cm_hopper','fromQuery','phone','createdAt','updatedAt','select','field','ContactId','toString','NOW()','from','cm_contacts','where','deletedAt\x20IS\x20NULL','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','insert','scheduledAt','ListId\x20=\x20?','id\x20IN\x20?','calleridnum','\x20=\x20?','str','VoiceQueue','findAll','outbound','dialCheckDuplicateType','CmList','Lists','always','sequelize','VoiceQueueId','query','all','Campaign'];(function(_0x4ae89d,_0x5af74b){var _0x411fd7=function(_0x14079d){while(--_0x14079d){_0x4ae89d['push'](_0x4ae89d['shift']());}};_0x411fd7(++_0x5af74b);}(_0x18ba,0x1cb));var _0xa18b=function(_0x1ad15c,_0x127625){_0x1ad15c=_0x1ad15c-0x0;var _0xe556f6=_0x18ba[_0x1ad15c];return _0xe556f6;};'use strict';var BPromise=require(_0xa18b('0x0'));var util=require(_0xa18b('0x1'));var _=require('lodash');var fs=require('fs');var squel=require(_0xa18b('0x2'));var Papa=require(_0xa18b('0x3'));var Redis=require('ioredis');var db=require('../../../mysqldb')['db'];var config=require(_0xa18b('0x4'));var logger=require(_0xa18b('0x5'))('api');config[_0xa18b('0x6')]=_['defaults'](config[_0xa18b('0x6')],{'host':_0xa18b('0x7'),'port':0x18eb});var socket=require(_0xa18b('0x8'))(new Redis(config[_0xa18b('0x6')]));require('../../../api/cmContact/cmContact.socket')[_0xa18b('0x9')](socket);try{if(!process[_0xa18b('0xa')][0x2]||process[_0xa18b('0xa')][0x2]==='undefined'||process['argv'][0x2]===_0xa18b('0xb')){throw new Error(_0xa18b('0xc'));}var FILEPATH=process[_0xa18b('0xa')][0x2];if(!process[_0xa18b('0xa')][0x3]||process[_0xa18b('0xa')][0x3]===_0xa18b('0xd')||process[_0xa18b('0xa')][0x3]===_0xa18b('0xb')||!process[_0xa18b('0xa')][0x4]||process['argv'][0x4]===_0xa18b('0xd')||process[_0xa18b('0xa')][0x4]===_0xa18b('0xb')){throw new Error(_0xa18b('0xe'));}var FIELDS=_[_0xa18b('0xf')](process[_0xa18b('0xa')][0x3]['split'](','),process['argv'][0x4][_0xa18b('0x10')](','));if(!process[_0xa18b('0xa')][0x5]||process[_0xa18b('0xa')][0x5]===_0xa18b('0xd')||process[_0xa18b('0xa')][0x5]===_0xa18b('0xb')){throw new Error(_0xa18b('0x11'));}var LISTID=process['argv'][0x5];var COMPANYID=process[_0xa18b('0xa')][0x6]&&process[_0xa18b('0xa')][0x6]!==_0xa18b('0xd')&&process[_0xa18b('0xa')][0x6]!=='null'?process[_0xa18b('0xa')][0x6]:null;var DUPLICATES=process[_0xa18b('0xa')][0x7]&&process[_0xa18b('0xa')][0x7]!==_0xa18b('0xd')&&process[_0xa18b('0xa')][0x7]!==_0xa18b('0xb')?process['argv'][0x7]:null;if(!process[_0xa18b('0xa')][0x8]||process['argv'][0x8]===_0xa18b('0xd')||process['argv'][0x8]===_0xa18b('0xb')){throw new Error(_0xa18b('0x12'));}var SOCKET_TIMESTAMP=process[_0xa18b('0xa')][0x8];}catch(_0x2297b0){logger[_0xa18b('0x13')](_0x2297b0);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(_0x2b694b,_0x43f198,_0x19f499,_0x3f70fe){var _0x5481d7={'message':_0x43f198};_0x5481d7[_0x2b694b]=!![];if(_0x19f499){_0x5481d7[_0xa18b('0x14')]=_0x19f499;}if(_0x3f70fe){_0x5481d7[_0xa18b('0x15')]=_0x3f70fe;}return _0x5481d7;}function isEmail(_0x2d7172){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))*$/[_0xa18b('0x16')](_0x2d7172);}function checkRow(_0x35e1c4,_0x4540d9,_0x448ab8){return new BPromise(function(_0x992e65,_0x56ca8d){if(_[_0xa18b('0x17')](_0x35e1c4)){return _0x56ca8d(handleCheckRowError(_0xa18b('0x13'),_0xa18b('0x18'),null,_0x448ab8));}if(_0x35e1c4[_0xa18b('0x19')]&&_0x35e1c4[_0xa18b('0x19')][_0xa18b('0x1a')]){var _0x417306=_[_0xa18b('0x1b')](_0x35e1c4[_0xa18b('0x19')],_0xa18b('0x1c'))['join'](';');return _0x56ca8d(handleCheckRowError('error',_0x417306,null,_0x448ab8));}var _0x2756ef={};for(var _0x54d218 in FIELDS){if(FIELDS[_0xa18b('0x1d')](_0x54d218)&&FIELDS[_0x54d218]){_0x2756ef[_0x54d218]=_0x35e1c4[_0xa18b('0x1e')][0x0][FIELDS[_0x54d218]]||_0x35e1c4[_0xa18b('0x1e')][0x0]['\ufeff'+FIELDS[_0x54d218]];}}if(!_0x2756ef[_0xa18b('0x1f')]){return _0x56ca8d(handleCheckRowError(_0xa18b('0x13'),_0xa18b('0x20'),null,_0x448ab8));}if(!_0x2756ef['phone']){return _0x56ca8d(handleCheckRowError('error',_0xa18b('0x21'),null,_0x448ab8));}if(_0x2756ef[_0xa18b('0x22')]){var _0x149729=moment(_0x2756ef[_0xa18b('0x22')],_0xa18b('0x23'));if(!_0x149729[_0xa18b('0x24')]()){return _0x56ca8d(handleCheckRowError(_0xa18b('0x13'),'birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!',null,_0x448ab8));}}if(_0x2756ef[_0xa18b('0x25')]){if(!isEmail(_0x2756ef[_0xa18b('0x25')])){return _0x56ca8d(handleCheckRowError(_0xa18b('0x13'),'email\x20format\x20is\x20not\x20valid!',null,_0x448ab8));}}_0x2756ef[_0xa18b('0x26')]=LISTID;_0x2756ef['CompanyId']=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES['length']&&_0x4540d9){var _0x559c52={};for(var _0x44bc3c=0x0,_0x4e077e=DUPLICATES[_0xa18b('0x1a')];_0x44bc3c<_0x4e077e;_0x44bc3c+=0x1){_0x559c52[DUPLICATES[_0x44bc3c]]=_0x2756ef[DUPLICATES[_0x44bc3c]];}var _0x3518ec=_[_0xa18b('0x27')](_0x4540d9,_0x559c52);if(_0x3518ec){return _0x56ca8d(handleCheckRowError('duplicate',_0xa18b('0x28'),_0x3518ec,_0x448ab8));}}return db['CmContact'][_0xa18b('0x29')](_0x2756ef,{'raw':!![],'hooks':![],'fields':_[_0xa18b('0x2a')](_0x2756ef)})[_0xa18b('0x2b')](function(_0x2f4082){if(DUPLICATES&&DUPLICATES['length']&&_0x4540d9){_0x4540d9[_0xa18b('0x2c')](_['pick'](_0x2756ef,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x2f4082['id'];return _0x992e65();})[_0xa18b('0x2d')](function(_0x496a04){return _0x56ca8d(handleCheckRowError(_0xa18b('0x13'),_0xa18b('0x2e')+(_0x496a04[_0xa18b('0x1c')]||JSON['stringify'](_0x496a04)),null,_0x448ab8));});});}function checkHopper(){function _0x14d422(){return function(_0x35bb10){logger[_0xa18b('0x13')](_0xa18b('0x2f'),_0xa18b('0x30'),util[_0xa18b('0x31')](_0x35bb10,{'showHidden':![],'depth':null}));};}var _0x5aba03=function(_0x377e2d,_0x3ab553){var _0x4d9a00=squel['insert']()[_0xa18b('0x32')](_0xa18b('0x33'))[_0xa18b('0x34')]([_0xa18b('0x35'),'scheduledAt','ContactId',_0xa18b('0x26'),_0x3ab553,_0xa18b('0x36'),_0xa18b('0x37')],squel[_0xa18b('0x38')]()[_0xa18b('0x39')](_0xa18b('0x35'),_0xa18b('0x35'))[_0xa18b('0x39')]('NOW()','scheduledAt')[_0xa18b('0x39')]('id',_0xa18b('0x3a'))[_0xa18b('0x39')](LISTID[_0xa18b('0x3b')](),'ListId')[_0xa18b('0x39')](_0x377e2d['id'][_0xa18b('0x3b')](),_0x3ab553)[_0xa18b('0x39')](_0xa18b('0x3c'),_0xa18b('0x36'))[_0xa18b('0x39')](_0xa18b('0x3c'),_0xa18b('0x37'))[_0xa18b('0x3d')](_0xa18b('0x3e'))[_0xa18b('0x3f')](_0xa18b('0x40'))[_0xa18b('0x3f')]('ListId\x20=\x20?',LISTID[_0xa18b('0x3b')]())[_0xa18b('0x3f')](_0xa18b('0x41'))['where'](_0xa18b('0x42'),squel[_0xa18b('0x38')]()[_0xa18b('0x39')]('phone')[_0xa18b('0x3d')](_0xa18b('0x33'))[_0xa18b('0x3f')](_0x3ab553+'\x20=\x20?',_0x377e2d['id'][_0xa18b('0x3b')]())))[_0xa18b('0x3b')]();return _0x4d9a00;};var _0x2259a2=function(_0x109437,_0x4a44fc){var _0x40a473=squel[_0xa18b('0x43')]()[_0xa18b('0x32')](_0xa18b('0x33'))[_0xa18b('0x34')]([_0xa18b('0x35'),_0xa18b('0x44'),_0xa18b('0x3a'),_0xa18b('0x26'),_0x4a44fc,_0xa18b('0x36'),_0xa18b('0x37')],squel[_0xa18b('0x38')]()['field']('phone',_0xa18b('0x35'))[_0xa18b('0x39')](_0xa18b('0x3c'),_0xa18b('0x44'))[_0xa18b('0x39')]('id','ContactId')[_0xa18b('0x39')](LISTID[_0xa18b('0x3b')](),'ListId')[_0xa18b('0x39')](_0x109437['id'][_0xa18b('0x3b')](),_0x4a44fc)[_0xa18b('0x39')](_0xa18b('0x3c'),_0xa18b('0x36'))['field']('NOW()','updatedAt')['from'](_0xa18b('0x3e'))[_0xa18b('0x3f')](_0xa18b('0x40'))[_0xa18b('0x3f')](_0xa18b('0x45'),LISTID[_0xa18b('0x3b')]())[_0xa18b('0x3f')](_0xa18b('0x46'),squel['str'](hopperContacts))[_0xa18b('0x3f')](_0xa18b('0x41'))[_0xa18b('0x3f')](_0xa18b('0x42'),squel['select']()[_0xa18b('0x39')](_0xa18b('0x47'))[_0xa18b('0x3d')]('cm_hopper_final')['where'](_0x4a44fc+'\x20=\x20?',_0x109437['id']['toString']()))['where'](_0xa18b('0x42'),squel[_0xa18b('0x38')]()['field'](_0xa18b('0x35'))[_0xa18b('0x3d')]('cm_hopper')[_0xa18b('0x3f')](_0x4a44fc+_0xa18b('0x48'),_0x109437['id'][_0xa18b('0x3b')]())))[_0xa18b('0x3b')]();return _0x40a473;};function _0x1e08b7(_0x2983d5,_0x29d42f){var _0x3a3960=squel['insert']()[_0xa18b('0x32')](_0xa18b('0x33'))['fromQuery']([_0xa18b('0x35'),'scheduledAt',_0xa18b('0x3a'),_0xa18b('0x26'),_0x29d42f,'createdAt','updatedAt'],squel[_0xa18b('0x38')]()['field'](_0xa18b('0x35'),_0xa18b('0x35'))[_0xa18b('0x39')](_0xa18b('0x3c'),'scheduledAt')[_0xa18b('0x39')]('id',_0xa18b('0x3a'))['field'](LISTID[_0xa18b('0x3b')](),_0xa18b('0x26'))['field'](_0x2983d5['id']['toString'](),_0x29d42f)[_0xa18b('0x39')](_0xa18b('0x3c'),_0xa18b('0x36'))[_0xa18b('0x39')](_0xa18b('0x3c'),_0xa18b('0x37'))[_0xa18b('0x3d')](_0xa18b('0x3e'))[_0xa18b('0x3f')]('deletedAt\x20IS\x20NULL')[_0xa18b('0x3f')](_0xa18b('0x45'),LISTID[_0xa18b('0x3b')]())['where'](_0xa18b('0x46'),squel[_0xa18b('0x49')](hopperContacts))[_0xa18b('0x3f')]('phone\x20IS\x20NOT\x20NULL'))['toString']();return _0x3a3960;}function _0x8584e4(_0x51fd11,_0x4bf32b){var _0x5972bc=squel[_0xa18b('0x43')]()[_0xa18b('0x32')]('cm_hopper_black')[_0xa18b('0x34')]([_0xa18b('0x35'),_0xa18b('0x3a'),_0xa18b('0x26'),_0x4bf32b,_0xa18b('0x36'),'updatedAt'],squel[_0xa18b('0x38')]()[_0xa18b('0x39')](_0xa18b('0x35'),_0xa18b('0x35'))[_0xa18b('0x39')]('id','ContactId')[_0xa18b('0x39')](LISTID[_0xa18b('0x3b')](),'ListId')['field'](_0x51fd11['id'][_0xa18b('0x3b')](),_0x4bf32b)[_0xa18b('0x39')]('NOW()',_0xa18b('0x36'))[_0xa18b('0x39')](_0xa18b('0x3c'),_0xa18b('0x37'))['from'](_0xa18b('0x3e'))[_0xa18b('0x3f')](_0xa18b('0x40'))[_0xa18b('0x3f')](_0xa18b('0x45'),LISTID['toString']())[_0xa18b('0x3f')](_0xa18b('0x46'),squel['str'](hopperContacts))[_0xa18b('0x3f')](_0xa18b('0x41')))[_0xa18b('0x3b')]();return _0x5972bc;}return db[_0xa18b('0x4a')][_0xa18b('0x4b')]({'where':{'type':_0xa18b('0x4c')},'attributes':['id',_0xa18b('0x4d')],'include':[{'model':db[_0xa18b('0x4e')],'as':_0xa18b('0x4f'),'where':{'id':LISTID}}]})[_0xa18b('0x2b')](function(_0x18d0ba){var _0x3d1504=[];if(_0x18d0ba){var _0x596377;for(var _0x51889f=0x0,_0x886b;_0x51889f<_0x18d0ba['length'];_0x51889f+=0x1){_0x886b=_0x18d0ba[_0x51889f]['get']({'plain':!![]});switch(_0x886b[_0xa18b('0x4d')]){case _0xa18b('0x50'):_0x3d1504[_0xa18b('0x2c')](db[_0xa18b('0x51')]['query'](_0x2259a2(_0x886b,_0xa18b('0x52')))[_0xa18b('0x2b')](function(){})[_0xa18b('0x2d')](_0x14d422()));break;case'onlyIfOpen':_0x3d1504['push'](db[_0xa18b('0x51')][_0xa18b('0x53')](_0x5aba03(_0x886b,_0xa18b('0x52')))[_0xa18b('0x2b')](function(){})[_0xa18b('0x2d')](_0x14d422()));break;default:_0x3d1504[_0xa18b('0x2c')](db[_0xa18b('0x51')][_0xa18b('0x53')](_0x1e08b7(_0x886b,_0xa18b('0x52')))[_0xa18b('0x2b')](function(){})[_0xa18b('0x2d')](_0x14d422()));}}}return _0x3d1504;})[_0xa18b('0x54')]()['then'](function(){return db[_0xa18b('0x4a')][_0xa18b('0x4b')]({'where':{'type':_0xa18b('0x4c')},'attributes':['id'],'include':[{'model':db[_0xa18b('0x4e')],'as':'BlackLists','where':{'id':LISTID}}]})[_0xa18b('0x2b')](function(_0x133244){var _0x405a5e=[];if(_0x133244){var _0x4e3e2b;for(var _0x4fcd62=0x0,_0x337b2c;_0x4fcd62<_0x133244[_0xa18b('0x1a')];_0x4fcd62+=0x1){_0x337b2c=_0x133244[_0x4fcd62]['get']({'plain':!![]});_0x405a5e['push'](db[_0xa18b('0x51')][_0xa18b('0x53')](_0x8584e4(_0x337b2c,_0xa18b('0x52')))['then'](function(){})[_0xa18b('0x2d')](_0x14d422()));}}return _0x405a5e;})[_0xa18b('0x54')]();})['then'](function(){return db[_0xa18b('0x55')][_0xa18b('0x4b')]({'attributes':['id',_0xa18b('0x4d')],'include':[{'model':db[_0xa18b('0x4e')],'as':_0xa18b('0x4f'),'where':{'id':LISTID}}]})[_0xa18b('0x2b')](function(_0x16f704){var _0x2a07dc=[];if(_0x16f704){for(var _0x5d8be0=0x0,_0x1c5fd3;_0x5d8be0<_0x16f704[_0xa18b('0x1a')];_0x5d8be0+=0x1){_0x1c5fd3=_0x16f704[_0x5d8be0][_0xa18b('0x56')]({'plain':!![]});switch(_0x1c5fd3[_0xa18b('0x4d')]){case _0xa18b('0x50'):_0x2a07dc[_0xa18b('0x2c')](db[_0xa18b('0x51')][_0xa18b('0x53')](_0x2259a2(_0x1c5fd3,'CampaignId'))[_0xa18b('0x2b')](function(){})[_0xa18b('0x2d')](_0x14d422()));break;case _0xa18b('0x57'):_0x2a07dc[_0xa18b('0x2c')](db['sequelize'][_0xa18b('0x53')](_0x5aba03(_0x1c5fd3,_0xa18b('0x58')))[_0xa18b('0x2b')](function(){})[_0xa18b('0x2d')](_0x14d422()));break;default:_0x2a07dc[_0xa18b('0x2c')](db[_0xa18b('0x51')][_0xa18b('0x53')](_0x1e08b7(_0x1c5fd3,_0xa18b('0x58')))[_0xa18b('0x2b')](function(){})[_0xa18b('0x2d')](_0x14d422()));}}}return _0x2a07dc;})[_0xa18b('0x54')]();})[_0xa18b('0x2b')](function(){return db[_0xa18b('0x55')]['findAll']({'attributes':['id'],'include':[{'model':db['CmList'],'as':_0xa18b('0x59'),'where':{'id':LISTID}}]})[_0xa18b('0x2b')](function(_0xd6b81a){var _0xa750ad=[];if(_0xd6b81a){for(var _0x5a2ff7=0x0,_0x53a8ce;_0x5a2ff7<_0xd6b81a['length'];_0x5a2ff7+=0x1){_0x53a8ce=_0xd6b81a[_0x5a2ff7][_0xa18b('0x56')]({'plain':!![]});_0xa750ad[_0xa18b('0x2c')](db[_0xa18b('0x51')]['query'](_0x8584e4(_0x53a8ce,_0xa18b('0x58')))[_0xa18b('0x2b')](function(){})[_0xa18b('0x2d')](_0x14d422()));}}return _0xa750ad;})[_0xa18b('0x54')]();})['catch'](function(_0x5db45a){logger[_0xa18b('0x13')](_0xa18b('0x5a'),'generalCheckHopper',_0x5db45a[_0xa18b('0x1c')]);});}var processPromises=function(_0x4fe71e){return BPromise[_0xa18b('0x54')](promises)[_0xa18b('0x2b')](function(_0x12ad39){})[_0xa18b('0x2d')](function(_0x77939){logger[_0xa18b('0x13')](_0xa18b('0x5b'),JSON[_0xa18b('0x5c')](_0x77939));})[_0xa18b('0x5d')](function(){socket[_0xa18b('0x5e')](_0xa18b('0x5f')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x4fe71e){return _0x4fe71e[_0xa18b('0x60')]();}});};var endCsv=function(){return BPromise[_0xa18b('0x61')]()[_0xa18b('0x2b')](function(){if(hopperContacts){return checkHopper();}})[_0xa18b('0x2b')](function(){socket[_0xa18b('0x5e')](_0xa18b('0x5f')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0xa18b('0x62')](FILEPATH);}catch(_0x46957d){logger[_0xa18b('0x13')](_0xa18b('0x63'),JSON['stringify'](_0x46957d));}finally{process['exit'](0x0);}});};process['on'](_0xa18b('0x64'),function(){logger[_0xa18b('0x65')](_0xa18b('0x66'));endCsv();});function main(){return BPromise['resolve']()['then'](function(){if(DUPLICATES){DUPLICATES=DUPLICATES['split'](',');return db[_0xa18b('0x67')]['findAll']({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0xa18b('0x2b')](function(_0x108cd7){var _0x35c500=fs[_0xa18b('0x68')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0xa18b('0x69')](_0x35c500,{'header':!![],'skipEmptyLines':!![],'step':function(_0x378201,_0x58c974){total+=0x1;var _0x171653=total;promises[_0xa18b('0x2c')](checkRow(_0x378201,_0x108cd7,_0x171653)[_0xa18b('0x2b')](function(){success+=0x1;})[_0xa18b('0x2d')](function(_0x592400){if(_0x592400['error']){errors+=0x1;delete _0x592400['error'];}else if(_0x592400[_0xa18b('0x6a')]){duplicates+=0x1;delete _0x592400[_0xa18b('0x6a')];}rows[_0xa18b('0x2c')](_0x592400);}));if(total%0xc8===0x0){_0x58c974['pause']();return processPromises(_0x58c974);}},'complete':function(){return processPromises()[_0xa18b('0x2b')](function(){logger[_0xa18b('0x65')]('CSV\x20parsed\x20correctly!');endCsv();});},'error':function(_0x2b95d4,_0x2870bc){logger[_0xa18b('0x65')](_0xa18b('0x6b'),JSON[_0xa18b('0x5c')](_0x2b95d4));endCsv();}});})[_0xa18b('0x2d')](function(_0x185a59){logger['error'](_0xa18b('0x6c'),JSON['stringify'](_0x185a59));});}main();
\ No newline at end of file
+var _0x26d1=['onlyIfOpen','VoiceQueue','CmList','BlackLists','all','Campaign','CampaignId','cmContact,\x20%s,\x20%s','finally','emit','resolve','contact:csv_','unlinkSync','Unable\x20to\x20delete\x20temp\x20file:','exit','SIGINT','info','CSV\x20import\x20process\x20stopped!','createReadStream','parse','pause','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','bluebird','util','squel','papaparse','ioredis','../../../mysqldb','../../../config/environment','../../../config/logger','api','defaults','redis','register','argv','undefined','null','Missing\x20filepath\x20parameter!','Missing\x20binding\x20parameters!','zipObject','split','Missing\x20socket_timestamp\x20parameter!','error','contact','index','test','isNil','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','length','map','errors','join','data','firstName','firstName\x20not\x20specified!','phone','birthDate','YYYY-MM-DD','isValid','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!','email','duplicate','Duplicate\x20Contact','CmContact','keys','then','push','pick','catch','Error\x20while\x20creating\x20contact:\x20','message','stringify','cmContact','checkHopper','inspect','into','cm_hopper','scheduledAt','ContactId','ListId','updatedAt','select','field','NOW()','toString','createdAt','from','where','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','\x20=\x20?','fromQuery','cm_contacts','id\x20IN\x20?','str','phone\x20NOT\x20IN\x20(?)','calleridnum','cm_hopper_final','insert','cm_hopper_black','findAll','outbound','dialCheckDuplicateType','Lists','get','sequelize','query','VoiceQueueId'];(function(_0x1d2bbb,_0x202267){var _0x38082b=function(_0x27d153){while(--_0x27d153){_0x1d2bbb['push'](_0x1d2bbb['shift']());}};_0x38082b(++_0x202267);}(_0x26d1,0x165));var _0x126d=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x26d1[_0x59ee6f];return _0x4c0979;};'use strict';var BPromise=require(_0x126d('0x0'));var util=require(_0x126d('0x1'));var _=require('lodash');var fs=require('fs');var squel=require(_0x126d('0x2'));var Papa=require(_0x126d('0x3'));var Redis=require(_0x126d('0x4'));var db=require(_0x126d('0x5'))['db'];var config=require(_0x126d('0x6'));var logger=require(_0x126d('0x7'))(_0x126d('0x8'));config['redis']=_[_0x126d('0x9')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x126d('0xa')]));require('../../../api/cmContact/cmContact.socket')[_0x126d('0xb')](socket);try{if(!process['argv'][0x2]||process[_0x126d('0xc')][0x2]===_0x126d('0xd')||process[_0x126d('0xc')][0x2]===_0x126d('0xe')){throw new Error(_0x126d('0xf'));}var FILEPATH=process[_0x126d('0xc')][0x2];if(!process[_0x126d('0xc')][0x3]||process[_0x126d('0xc')][0x3]===_0x126d('0xd')||process['argv'][0x3]===_0x126d('0xe')||!process[_0x126d('0xc')][0x4]||process[_0x126d('0xc')][0x4]==='undefined'||process['argv'][0x4]===_0x126d('0xe')){throw new Error(_0x126d('0x10'));}var FIELDS=_[_0x126d('0x11')](process[_0x126d('0xc')][0x3][_0x126d('0x12')](','),process[_0x126d('0xc')][0x4][_0x126d('0x12')](','));if(!process[_0x126d('0xc')][0x5]||process[_0x126d('0xc')][0x5]===_0x126d('0xd')||process[_0x126d('0xc')][0x5]===_0x126d('0xe')){throw new Error('Missing\x20ListId\x20parameter!');}var LISTID=process[_0x126d('0xc')][0x5];var COMPANYID=process[_0x126d('0xc')][0x6]&&process[_0x126d('0xc')][0x6]!==_0x126d('0xd')&&process['argv'][0x6]!==_0x126d('0xe')?process[_0x126d('0xc')][0x6]:null;var DUPLICATES=process[_0x126d('0xc')][0x7]&&process[_0x126d('0xc')][0x7]!==_0x126d('0xd')&&process[_0x126d('0xc')][0x7]!==_0x126d('0xe')?process[_0x126d('0xc')][0x7]:null;if(!process[_0x126d('0xc')][0x8]||process[_0x126d('0xc')][0x8]===_0x126d('0xd')||process[_0x126d('0xc')][0x8]==='null'){throw new Error(_0x126d('0x13'));}var SOCKET_TIMESTAMP=process['argv'][0x8];}catch(_0x12e996){logger[_0x126d('0x14')](_0x12e996);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(_0xbd9b33,_0x42f625,_0x417bdd,_0xd9de4a){var _0x4afacb={'message':_0x42f625};_0x4afacb[_0xbd9b33]=!![];if(_0x417bdd){_0x4afacb[_0x126d('0x15')]=_0x417bdd;}if(_0xd9de4a){_0x4afacb[_0x126d('0x16')]=_0xd9de4a;}return _0x4afacb;}function isEmail(_0x3c6d06){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))*$/[_0x126d('0x17')](_0x3c6d06);}function checkRow(_0x3aab76,_0x3ea28a,_0x4f94ea){return new BPromise(function(_0x40f424,_0x49a302){if(_[_0x126d('0x18')](_0x3aab76)){return _0x49a302(handleCheckRowError(_0x126d('0x14'),_0x126d('0x19'),null,_0x4f94ea));}if(_0x3aab76['errors']&&_0x3aab76['errors'][_0x126d('0x1a')]){var _0x408bb9=_[_0x126d('0x1b')](_0x3aab76[_0x126d('0x1c')],'message')[_0x126d('0x1d')](';');return _0x49a302(handleCheckRowError(_0x126d('0x14'),_0x408bb9,null,_0x4f94ea));}var _0x52ce88={};for(var _0x3729fc in FIELDS){if(FIELDS['hasOwnProperty'](_0x3729fc)&&FIELDS[_0x3729fc]){_0x52ce88[_0x3729fc]=_0x3aab76[_0x126d('0x1e')][0x0][FIELDS[_0x3729fc]]||_0x3aab76['data'][0x0]['\ufeff'+FIELDS[_0x3729fc]];}}if(!_0x52ce88[_0x126d('0x1f')]){return _0x49a302(handleCheckRowError(_0x126d('0x14'),_0x126d('0x20'),null,_0x4f94ea));}if(!_0x52ce88[_0x126d('0x21')]){return _0x49a302(handleCheckRowError('error','phone\x20not\x20specified!',null,_0x4f94ea));}if(_0x52ce88[_0x126d('0x22')]){var _0xd39677=moment(_0x52ce88[_0x126d('0x22')],_0x126d('0x23'));if(!_0xd39677[_0x126d('0x24')]()){return _0x49a302(handleCheckRowError('error',_0x126d('0x25'),null,_0x4f94ea));}}if(_0x52ce88[_0x126d('0x26')]){if(!isEmail(_0x52ce88[_0x126d('0x26')])){return _0x49a302(handleCheckRowError(_0x126d('0x14'),'email\x20format\x20is\x20not\x20valid!',null,_0x4f94ea));}}_0x52ce88['ListId']=LISTID;_0x52ce88['CompanyId']=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0x126d('0x1a')]&&_0x3ea28a){var _0x30d2f2={};for(var _0x2b0109=0x0,_0x577cf1=DUPLICATES[_0x126d('0x1a')];_0x2b0109<_0x577cf1;_0x2b0109+=0x1){_0x30d2f2[DUPLICATES[_0x2b0109]]=_0x52ce88[DUPLICATES[_0x2b0109]];}var _0x5e3e88=_['find'](_0x3ea28a,_0x30d2f2);if(_0x5e3e88){return _0x49a302(handleCheckRowError(_0x126d('0x27'),_0x126d('0x28'),_0x5e3e88,_0x4f94ea));}}return db[_0x126d('0x29')]['create'](_0x52ce88,{'raw':!![],'hooks':![],'fields':_[_0x126d('0x2a')](_0x52ce88)})[_0x126d('0x2b')](function(_0x436fbd){if(DUPLICATES&&DUPLICATES['length']&&_0x3ea28a){_0x3ea28a[_0x126d('0x2c')](_[_0x126d('0x2d')](_0x52ce88,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x436fbd['id'];return _0x40f424();})[_0x126d('0x2e')](function(_0x3be6bc){return _0x49a302(handleCheckRowError(_0x126d('0x14'),_0x126d('0x2f')+(_0x3be6bc[_0x126d('0x30')]||JSON[_0x126d('0x31')](_0x3be6bc)),null,_0x4f94ea));});});}function checkHopper(){function _0x3ed80f(){return function(_0x16afef){logger[_0x126d('0x14')](_0x126d('0x32'),_0x126d('0x33'),util[_0x126d('0x34')](_0x16afef,{'showHidden':![],'depth':null}));};}var _0x4f4d82=function(_0x1d23d4,_0x4adb72){var _0x30edde=squel['insert']()[_0x126d('0x35')](_0x126d('0x36'))['fromQuery']([_0x126d('0x21'),_0x126d('0x37'),_0x126d('0x38'),_0x126d('0x39'),_0x4adb72,'createdAt',_0x126d('0x3a')],squel[_0x126d('0x3b')]()['field'](_0x126d('0x21'),'phone')[_0x126d('0x3c')](_0x126d('0x3d'),_0x126d('0x37'))[_0x126d('0x3c')]('id',_0x126d('0x38'))[_0x126d('0x3c')](LISTID['toString'](),_0x126d('0x39'))['field'](_0x1d23d4['id'][_0x126d('0x3e')](),_0x4adb72)[_0x126d('0x3c')](_0x126d('0x3d'),_0x126d('0x3f'))[_0x126d('0x3c')](_0x126d('0x3d'),'updatedAt')[_0x126d('0x40')]('cm_contacts')[_0x126d('0x41')](_0x126d('0x42'))[_0x126d('0x41')](_0x126d('0x43'),LISTID['toString']())[_0x126d('0x41')](_0x126d('0x44'))[_0x126d('0x41')]('phone\x20NOT\x20IN\x20(?)',squel[_0x126d('0x3b')]()['field'](_0x126d('0x21'))[_0x126d('0x40')](_0x126d('0x36'))[_0x126d('0x41')](_0x4adb72+_0x126d('0x45'),_0x1d23d4['id'][_0x126d('0x3e')]())))[_0x126d('0x3e')]();return _0x30edde;};var _0x34cf4d=function(_0x4f4c99,_0x5e9fb0){var _0x497483=squel['insert']()[_0x126d('0x35')](_0x126d('0x36'))[_0x126d('0x46')]([_0x126d('0x21'),_0x126d('0x37'),'ContactId',_0x126d('0x39'),_0x5e9fb0,_0x126d('0x3f'),_0x126d('0x3a')],squel[_0x126d('0x3b')]()[_0x126d('0x3c')](_0x126d('0x21'),'phone')['field']('NOW()','scheduledAt')[_0x126d('0x3c')]('id',_0x126d('0x38'))[_0x126d('0x3c')](LISTID['toString'](),_0x126d('0x39'))['field'](_0x4f4c99['id'][_0x126d('0x3e')](),_0x5e9fb0)[_0x126d('0x3c')]('NOW()',_0x126d('0x3f'))[_0x126d('0x3c')](_0x126d('0x3d'),_0x126d('0x3a'))[_0x126d('0x40')](_0x126d('0x47'))[_0x126d('0x41')](_0x126d('0x42'))[_0x126d('0x41')](_0x126d('0x43'),LISTID['toString']())[_0x126d('0x41')](_0x126d('0x48'),squel[_0x126d('0x49')](hopperContacts))[_0x126d('0x41')](_0x126d('0x44'))[_0x126d('0x41')](_0x126d('0x4a'),squel[_0x126d('0x3b')]()[_0x126d('0x3c')](_0x126d('0x4b'))['from'](_0x126d('0x4c'))['where'](_0x5e9fb0+_0x126d('0x45'),_0x4f4c99['id']['toString']()))[_0x126d('0x41')]('phone\x20NOT\x20IN\x20(?)',squel[_0x126d('0x3b')]()['field'](_0x126d('0x21'))[_0x126d('0x40')]('cm_hopper')['where'](_0x5e9fb0+_0x126d('0x45'),_0x4f4c99['id']['toString']())))[_0x126d('0x3e')]();return _0x497483;};function _0x167721(_0x5555cb,_0x671ff7){var _0x37da13=squel['insert']()[_0x126d('0x35')](_0x126d('0x36'))[_0x126d('0x46')]([_0x126d('0x21'),_0x126d('0x37'),_0x126d('0x38'),_0x126d('0x39'),_0x671ff7,_0x126d('0x3f'),_0x126d('0x3a')],squel[_0x126d('0x3b')]()['field']('phone',_0x126d('0x21'))[_0x126d('0x3c')]('NOW()',_0x126d('0x37'))[_0x126d('0x3c')]('id',_0x126d('0x38'))[_0x126d('0x3c')](LISTID[_0x126d('0x3e')](),_0x126d('0x39'))['field'](_0x5555cb['id'][_0x126d('0x3e')](),_0x671ff7)['field'](_0x126d('0x3d'),_0x126d('0x3f'))['field'](_0x126d('0x3d'),'updatedAt')['from'](_0x126d('0x47'))[_0x126d('0x41')](_0x126d('0x42'))['where'](_0x126d('0x43'),LISTID['toString']())[_0x126d('0x41')](_0x126d('0x48'),squel[_0x126d('0x49')](hopperContacts))[_0x126d('0x41')](_0x126d('0x44')))[_0x126d('0x3e')]();return _0x37da13;}function _0x90ec93(_0x96b755,_0x2a9fbc){var _0x2d19a9=squel[_0x126d('0x4d')]()[_0x126d('0x35')](_0x126d('0x4e'))['fromQuery']([_0x126d('0x21'),'ContactId',_0x126d('0x39'),_0x2a9fbc,_0x126d('0x3f'),_0x126d('0x3a')],squel['select']()[_0x126d('0x3c')](_0x126d('0x21'),_0x126d('0x21'))[_0x126d('0x3c')]('id',_0x126d('0x38'))[_0x126d('0x3c')](LISTID[_0x126d('0x3e')](),'ListId')[_0x126d('0x3c')](_0x96b755['id']['toString'](),_0x2a9fbc)[_0x126d('0x3c')](_0x126d('0x3d'),_0x126d('0x3f'))['field'](_0x126d('0x3d'),_0x126d('0x3a'))['from'](_0x126d('0x47'))[_0x126d('0x41')](_0x126d('0x42'))['where'](_0x126d('0x43'),LISTID[_0x126d('0x3e')]())[_0x126d('0x41')](_0x126d('0x48'),squel['str'](hopperContacts))[_0x126d('0x41')](_0x126d('0x44')))[_0x126d('0x3e')]();return _0x2d19a9;}return db['VoiceQueue'][_0x126d('0x4f')]({'where':{'type':_0x126d('0x50')},'attributes':['id',_0x126d('0x51')],'include':[{'model':db['CmList'],'as':_0x126d('0x52'),'where':{'id':LISTID}}]})[_0x126d('0x2b')](function(_0x3c9f5d){var _0x41bee8=[];if(_0x3c9f5d){var _0x23508e;for(var _0xc4941=0x0,_0x7cf963;_0xc4941<_0x3c9f5d['length'];_0xc4941+=0x1){_0x7cf963=_0x3c9f5d[_0xc4941][_0x126d('0x53')]({'plain':!![]});switch(_0x7cf963['dialCheckDuplicateType']){case'always':_0x41bee8[_0x126d('0x2c')](db[_0x126d('0x54')][_0x126d('0x55')](_0x34cf4d(_0x7cf963,_0x126d('0x56')))[_0x126d('0x2b')](function(){})[_0x126d('0x2e')](_0x3ed80f()));break;case _0x126d('0x57'):_0x41bee8[_0x126d('0x2c')](db[_0x126d('0x54')]['query'](_0x4f4d82(_0x7cf963,_0x126d('0x56')))['then'](function(){})[_0x126d('0x2e')](_0x3ed80f()));break;default:_0x41bee8[_0x126d('0x2c')](db[_0x126d('0x54')][_0x126d('0x55')](_0x167721(_0x7cf963,_0x126d('0x56')))[_0x126d('0x2b')](function(){})[_0x126d('0x2e')](_0x3ed80f()));}}}return _0x41bee8;})['all']()[_0x126d('0x2b')](function(){return db[_0x126d('0x58')][_0x126d('0x4f')]({'where':{'type':_0x126d('0x50')},'attributes':['id'],'include':[{'model':db[_0x126d('0x59')],'as':_0x126d('0x5a'),'where':{'id':LISTID}}]})[_0x126d('0x2b')](function(_0x567e8e){var _0x34e65d=[];if(_0x567e8e){var _0x2e9253;for(var _0x2eb109=0x0,_0x42fe2a;_0x2eb109<_0x567e8e[_0x126d('0x1a')];_0x2eb109+=0x1){_0x42fe2a=_0x567e8e[_0x2eb109][_0x126d('0x53')]({'plain':!![]});_0x34e65d[_0x126d('0x2c')](db[_0x126d('0x54')]['query'](_0x90ec93(_0x42fe2a,_0x126d('0x56')))[_0x126d('0x2b')](function(){})[_0x126d('0x2e')](_0x3ed80f()));}}return _0x34e65d;})[_0x126d('0x5b')]();})[_0x126d('0x2b')](function(){return db[_0x126d('0x5c')]['findAll']({'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db[_0x126d('0x59')],'as':'Lists','where':{'id':LISTID}}]})['then'](function(_0x476ab2){var _0x89cf5=[];if(_0x476ab2){for(var _0x1ae2c2=0x0,_0x35f54e;_0x1ae2c2<_0x476ab2[_0x126d('0x1a')];_0x1ae2c2+=0x1){_0x35f54e=_0x476ab2[_0x1ae2c2]['get']({'plain':!![]});switch(_0x35f54e[_0x126d('0x51')]){case'always':_0x89cf5[_0x126d('0x2c')](db[_0x126d('0x54')]['query'](_0x34cf4d(_0x35f54e,_0x126d('0x5d')))[_0x126d('0x2b')](function(){})[_0x126d('0x2e')](_0x3ed80f()));break;case _0x126d('0x57'):_0x89cf5[_0x126d('0x2c')](db[_0x126d('0x54')]['query'](_0x4f4d82(_0x35f54e,_0x126d('0x5d')))['then'](function(){})[_0x126d('0x2e')](_0x3ed80f()));break;default:_0x89cf5['push'](db[_0x126d('0x54')][_0x126d('0x55')](_0x167721(_0x35f54e,'CampaignId'))[_0x126d('0x2b')](function(){})[_0x126d('0x2e')](_0x3ed80f()));}}}return _0x89cf5;})['all']();})['then'](function(){return db[_0x126d('0x5c')]['findAll']({'attributes':['id'],'include':[{'model':db['CmList'],'as':_0x126d('0x5a'),'where':{'id':LISTID}}]})[_0x126d('0x2b')](function(_0x3f6b12){var _0x5a71e9=[];if(_0x3f6b12){for(var _0x54829c=0x0,_0x297f46;_0x54829c<_0x3f6b12[_0x126d('0x1a')];_0x54829c+=0x1){_0x297f46=_0x3f6b12[_0x54829c][_0x126d('0x53')]({'plain':!![]});_0x5a71e9[_0x126d('0x2c')](db[_0x126d('0x54')]['query'](_0x90ec93(_0x297f46,'CampaignId'))['then'](function(){})[_0x126d('0x2e')](_0x3ed80f()));}}return _0x5a71e9;})[_0x126d('0x5b')]();})[_0x126d('0x2e')](function(_0x214f4b){logger[_0x126d('0x14')](_0x126d('0x5e'),'generalCheckHopper',_0x214f4b['message']);});}var processPromises=function(_0x3fea4a){return BPromise[_0x126d('0x5b')](promises)[_0x126d('0x2b')](function(_0x106121){})['catch'](function(_0x4c507b){logger[_0x126d('0x14')]('Error\x20processing\x20rows\x20block:',JSON[_0x126d('0x31')](_0x4c507b));})[_0x126d('0x5f')](function(){socket[_0x126d('0x60')]('contact:csv_'+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x3fea4a){return _0x3fea4a['resume']();}});};var endCsv=function(){return BPromise[_0x126d('0x61')]()[_0x126d('0x2b')](function(){if(hopperContacts){return checkHopper();}})[_0x126d('0x2b')](function(){socket[_0x126d('0x60')](_0x126d('0x62')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0x126d('0x63')](FILEPATH);}catch(_0x5495e8){logger[_0x126d('0x14')](_0x126d('0x64'),JSON['stringify'](_0x5495e8));}finally{process[_0x126d('0x65')](0x0);}});};process['on'](_0x126d('0x66'),function(){logger[_0x126d('0x67')](_0x126d('0x68'));endCsv();});function main(){return BPromise['resolve']()['then'](function(){if(DUPLICATES){DUPLICATES=DUPLICATES['split'](',');return db[_0x126d('0x29')][_0x126d('0x4f')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0x126d('0x2b')](function(_0xab65de){var _0xa14c33=fs[_0x126d('0x69')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0x126d('0x6a')](_0xa14c33,{'header':!![],'skipEmptyLines':!![],'step':function(_0x557d75,_0x4e6a27){total+=0x1;var _0x8550d4=total;promises['push'](checkRow(_0x557d75,_0xab65de,_0x8550d4)[_0x126d('0x2b')](function(){success+=0x1;})[_0x126d('0x2e')](function(_0x3b9706){if(_0x3b9706[_0x126d('0x14')]){errors+=0x1;delete _0x3b9706[_0x126d('0x14')];}else if(_0x3b9706[_0x126d('0x27')]){duplicates+=0x1;delete _0x3b9706['duplicate'];}rows[_0x126d('0x2c')](_0x3b9706);}));if(total%0xc8===0x0){_0x4e6a27[_0x126d('0x6b')]();return processPromises(_0x4e6a27);}},'complete':function(){return processPromises()['then'](function(){logger[_0x126d('0x67')](_0x126d('0x6c'));endCsv();});},'error':function(_0x3114e5,_0x44130c){logger['info'](_0x126d('0x6d'),JSON[_0x126d('0x31')](_0x3114e5));endCsv();}});})[_0x126d('0x2e')](function(_0x1d6505){logger['error'](_0x126d('0x6e'),JSON['stringify'](_0x1d6505));});}main();
\ No newline at end of file
index 71ec650..270c053 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd566=['timezones','dialTimezone','utcOffset','set','offset','main','stringify','send','start','binding','socket_timestamp','server/files/tmp','.csv','includes','header','ContactItemType','findAll','name','_description','writeFileSync','parse','rows','data','find','hasOwnProperty','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNumber','agent\x20not\x20exists','email','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','\x20not\x20specified','trim','replace','itemTypeId','description','SystemRow','appendFileSync','emit','contact:import:','Abort\x20parser','abort','SystemError','duplicates','cm_contacts_','\x20LIKE\x20cm_contacts;','campaigns_','voice_queues_','CREATE\x20TABLE\x20','(id\x20int,dialTimezone\x20varchar(255),offset\x20int);','each','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','scheduledat',',\x20scheduledAt\x20=\x20NOW()','DROP\x20TABLE\x20','contactId','VoiceQueueId','CampaignId','campaigns_has_cm_blacklists','finish','affectedRows','unlink','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','root','phone\x20is\x20mandatory','firstName\x20is\x20mandatory','map','SIGINT','uncaughtException','path','lodash','papaparse','util','bluebird','moment','ioredis','../../../mysqldb','../../../config/environment','../../../config/environment/shared','redis','defaults','localhost','socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss','test','select','field','phone','join','.id\x20=\x20','where','\x20=\x20','.dialCheckDuplicateType\x20IN\x20(','CmContact','AdditionalPhones','length','push','all','then','split','isNil','filter','CmContactHasItem','findOne','update','updated','create','PHONE','inserted','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.UserId','insert','cm_hopper','fromQuery','ContactId','ListId','createdAt','updatedAt','priority','UserId','recallme','fields','cm_contacts','.CmListId','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','\x22always\x22','\x22onlyIfOpen\x22','cm_contacts.phone\x20NOT\x20IN\x20(?)','toString','cm_contacts.phone','cm_hopper_black','from','ListId\x20=\x20?','date_add(cm_contacts.scheduledat,interval\x20','.offset-cm_contacts.utcOffset\x20minute)','cm_contacts.ListId\x20=\x20','into','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','OrderBy','cm_contacts.id\x20=\x20cm_hopper.ContactId','cm_contact_has_items','keys','CompanyId','deletedAt\x20IS\x20NULL','MIN(id)','min_id','group','Received\x20SIGINT','error','message','exit','errors','code','info','query','spread','campaigns.id','campaigns.dialTimezone','campaigns','campaigns_has_cm_lists','campaigns_has_cm_lists.CmListId=','sequelize','catch','voice_queues.id','voice_queues','voice_queues_has_cm_lists','voice_queues.id\x20=\x20voice_queues_has_cm_lists.VoiceQueueId','voice_queues_has_cm_lists.CmListId='];(function(_0x7d5858,_0x51bff3){var _0x3c8041=function(_0x44af52){while(--_0x44af52){_0x7d5858['push'](_0x7d5858['shift']());}};_0x3c8041(++_0x51bff3);}(_0xd566,0x100));var _0x6d56=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0xd566[_0xfae23b];return _0x200640;};'use strict';var fs=require('fs');var path=require(_0x6d56('0x0'));var _=require(_0x6d56('0x1'));var Papa=require(_0x6d56('0x2'));var util=require(_0x6d56('0x3'));var BPromise=require(_0x6d56('0x4'));var moment=require(_0x6d56('0x5'));var squel=require('squel');var Redis=require(_0x6d56('0x6'));var db=require(_0x6d56('0x7'))['db'];var config=require(_0x6d56('0x8'));var shared=require(_0x6d56('0x9'));var logger=require('../../../config/logger')('import');config[_0x6d56('0xa')]=_[_0x6d56('0xb')](config['redis'],{'host':_0x6d56('0xc'),'port':0x18eb});var socket=require(_0x6d56('0xd'))(new Redis(config[_0x6d56('0xa')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var orderBy=0x0;var stopped=![];var NOW=moment()[_0x6d56('0xe')](_0x6d56('0xf'));var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];var tmp_voice_queues;var tmp_campaigns;var tzOffset=0x0;var hasTZ;var NOW=moment()[_0x6d56('0xe')](_0x6d56('0xf'));function isEmail(_0x511a5e){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))*$/[_0x6d56('0x10')](_0x511a5e);}function selectNotIn(_0x19506f,_0x736ff9,_0x3e2809,_0x2b27a0,_0x3cd576){return squel[_0x6d56('0x11')]()[_0x6d56('0x12')](_0x6d56('0x13'))['from'](_0x2b27a0)[_0x6d56('0x14')](_0x736ff9,null,_0x736ff9+_0x6d56('0x15')+_0x2b27a0+'.'+_0x3e2809)[_0x6d56('0x16')](_0x2b27a0+'.'+_0x3e2809+_0x6d56('0x17')+_0x19506f+'.'+_0x3e2809)[_0x6d56('0x16')](_0x736ff9+_0x6d56('0x18')+_0x3cd576[_0x6d56('0x14')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x42a7f9,_0x377cdb){promisesAdditionalPhones=[];return db[_0x6d56('0x19')]['findAll']({'raw':!![],'attributes':['id',_0x6d56('0x1a')],'where':{'createdAt':NOW,'AdditionalPhones':{'$ne':null}}})['then'](function(_0xa0fccd){if(_0xa0fccd!==null){var _0x1416e8=[];for(var _0x47a601=0x0;_0x47a601<_0xa0fccd[_0x6d56('0x1b')];_0x47a601++){var _0x380d3a=_0xa0fccd[_0x47a601];_0x1416e8[_0x6d56('0x1c')](insertAdditionalPhones(_0x380d3a));}}Promise[_0x6d56('0x1d')](_0x1416e8)[_0x6d56('0x1e')](function(){_0x42a7f9({'val':0x1});});});});}function insertAdditionalPhones(_0x1525f9){return new Promise(function(_0x1e428c,_0x229919){var _0x2a22d3=_0x1525f9[_0x6d56('0x1a')];var _0xd39e9=_0x2a22d3[_0x6d56('0x1f')](';');var _0x1987e1=[];orderBy=0x0;for(var _0x57a9e2=0x0;_0x57a9e2<_0xd39e9[_0x6d56('0x1b')];_0x57a9e2++){_0x1987e1[_0x6d56('0x1c')](splitAdditionalPhone(_0x1525f9['id'],_0xd39e9[_0x57a9e2]));}Promise[_0x6d56('0x1d')](_0x1987e1)[_0x6d56('0x1e')](function(){_0x1e428c({'val':_0xd39e9[_0x6d56('0x1b')]});});});}function splitAdditionalPhone(_0x2af517,_0x1a6481){return new Promise(function(_0x53d6cd,_0x420581){var _0x362183=_0x1a6481[_0x6d56('0x1f')](':');var _0x2e2a4f=_0x362183[0x0];var _0x17fa99=_0x362183[0x1];if(!_[_0x6d56('0x20')](_0x17fa99)){var _0x1d588d=_0x17fa99['split']('|');var _0x383fa0=[];for(var _0x231bb3=0x0;_0x231bb3<_0x1d588d[_0x6d56('0x1b')];_0x231bb3++){if(_0x1d588d[_0x231bb3]!==''){var _0x35d57b=_[_0x6d56('0x21')](promisesAdditionalPhones,{'contactId':_0x2af517,'phone':_0x1d588d[_0x231bb3]});if(_0x35d57b[_0x6d56('0x1b')]==0x0){orderBy++;promisesAdditionalPhones['push']({'contactId':_0x2af517,'contactTypeId':_0x2e2a4f,'phone':_0x1d588d[_0x231bb3],'orderBy':orderBy});}}}_0x53d6cd({'ok':0x1});}else _0x53d6cd({'res':0x0});});}function createAdditionalPhone(_0x2820f2,_0x24892c,_0x5ab9f9,_0x1f9be9){var _0x517ee1='';var _0x45088c='';var _0x4751ef=_0x5ab9f9[_0x6d56('0x1f')]('§');_0x517ee1=_0x4751ef[0x0];if(_0x4751ef['length']==0x2)_0x45088c=_0x4751ef[0x1];return new Promise(function(_0x5a79b5,_0x88f2a1){return db[_0x6d56('0x22')][_0x6d56('0x23')]({'where':{'CmContactId':_0x2820f2,'item':_0x517ee1}})['then'](function(_0x125cdd){if(_0x125cdd){return db['CmContactHasItem'][_0x6d56('0x24')]({'ItemTypeId':_0x24892c,'description':_0x45088c,'OrderBy':_0x1f9be9},{'where':{'CmContactId':_0x2820f2,'item':_0x517ee1}})['then'](function(_0x37caa6){_0x5a79b5({'res':_0x6d56('0x25')});});}else{return db[_0x6d56('0x22')][_0x6d56('0x26')]({'CmContactId':_0x2820f2,'item':_0x517ee1,'description':_0x45088c,'ItemTypeId':_0x24892c,'OrderBy':_0x1f9be9,'ItemClass':_0x6d56('0x27')})['then'](function(_0x1a64de){_0x5a79b5({'res':_0x6d56('0x28')});});}});});}function insertCmHopper(_0xa9e0a2,_0x476915,_0x269fc3,_0x34cbe7,_0x25ab00){var _0x3848f1=['cm_contacts.phone',_0x6d56('0x29'),_0x6d56('0x2a'),_0x6d56('0x2b'),_0x476915+'.'+_0x34cbe7,_0x6d56('0x2c'),_0x6d56('0x2d'),'cm_contacts.priority',_0x6d56('0x2e'),'\x22'+_0x25ab00+'\x22'];return squel[_0x6d56('0x2f')]()['into'](_0x6d56('0x30'))[_0x6d56('0x31')]([_0x6d56('0x13'),'scheduledat',_0x6d56('0x32'),_0x6d56('0x33'),_0x34cbe7,_0x6d56('0x34'),_0x6d56('0x35'),_0x6d56('0x36'),_0x6d56('0x37'),_0x6d56('0x38')],squel[_0x6d56('0x11')]()[_0x6d56('0x39')](_0x3848f1)['from'](_0x476915)[_0x6d56('0x14')](_0x6d56('0x3a'),null,'cm_contacts.ListId\x20=\x20'+_0x476915+_0x6d56('0x3b'))[_0x6d56('0x14')](_0x269fc3,null,_0x269fc3+'.id\x20=\x20'+_0x476915+'.'+_0x34cbe7)[_0x6d56('0x16')](_0x476915+_0x6d56('0x3c'),_0xa9e0a2)[_0x6d56('0x16')](_0x6d56('0x3d'),NOW)['where']('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x476915,_0x269fc3,_0x34cbe7,_0x6d56('0x30'),[_0x6d56('0x3e'),_0x6d56('0x3f')]))[_0x6d56('0x16')](_0x6d56('0x40'),selectNotIn(_0x476915,_0x269fc3,_0x34cbe7,_0x6d56('0x30'),['\x22always\x22'])))[_0x6d56('0x41')]();}function insertCmHopperBlack(_0x1b9184,_0x3cd511,_0x35e992,_0x3c828a){var _0xd25302=[_0x6d56('0x42'),_0x6d56('0x2a'),'cm_contacts.ListId',_0x3cd511+'.'+_0x3c828a,_0x6d56('0x2c'),'cm_contacts.updatedAt'];return squel[_0x6d56('0x2f')]()['into'](_0x6d56('0x43'))[_0x6d56('0x31')]([_0x6d56('0x13'),'ContactId',_0x6d56('0x33'),_0x3c828a,_0x6d56('0x34'),'updatedAt'],squel[_0x6d56('0x11')]()['fields'](_0xd25302)[_0x6d56('0x44')](_0x3cd511)[_0x6d56('0x14')]('cm_contacts',null,'cm_contacts.ListId\x20=\x20'+_0x3cd511+_0x6d56('0x3b'))[_0x6d56('0x14')](_0x35e992,null,_0x35e992+_0x6d56('0x15')+_0x3cd511+'.'+_0x3c828a)[_0x6d56('0x16')](_0x3cd511+'.CmListId\x20=\x20?',_0x1b9184)['where'](_0x6d56('0x3d'),NOW)['where'](_0x6d56('0x40'),squel['select']()[_0x6d56('0x12')](_0x6d56('0x13'))[_0x6d56('0x44')](_0x6d56('0x43'))[_0x6d56('0x16')](_0x6d56('0x45'),_0x1b9184)[_0x6d56('0x16')](_0x3c828a+_0x6d56('0x17')+_0x3cd511+'.'+_0x3c828a)))[_0x6d56('0x41')]();}function insertTzCmHopper(_0x3b2467,_0x36b80d,_0x17b1cc,_0x4fc39d,_0x16bd5c,_0x1dc87d){var _0x2e8734=['cm_contacts.phone',_0x6d56('0x46')+_0x1dc87d+_0x6d56('0x47'),_0x6d56('0x2a'),_0x6d56('0x2b'),_0x36b80d+'.'+_0x4fc39d,_0x6d56('0x2c'),_0x6d56('0x2d'),'cm_contacts.priority','cm_contacts.UserId','\x22'+_0x16bd5c+'\x22'];var _0x209e9e=squel[_0x6d56('0x2f')]()['into'](_0x6d56('0x30'))[_0x6d56('0x31')]([_0x6d56('0x13'),'scheduledat','ContactId',_0x6d56('0x33'),_0x4fc39d,_0x6d56('0x34'),_0x6d56('0x35'),_0x6d56('0x36'),_0x6d56('0x37'),'recallme'],squel[_0x6d56('0x11')]()[_0x6d56('0x39')](_0x2e8734)[_0x6d56('0x44')](_0x36b80d)[_0x6d56('0x14')](_0x6d56('0x3a'),null,_0x6d56('0x48')+_0x36b80d+_0x6d56('0x3b'))[_0x6d56('0x14')](_0x17b1cc,null,_0x17b1cc+_0x6d56('0x15')+_0x36b80d+'.'+_0x4fc39d)[_0x6d56('0x14')](_0x1dc87d,null,_0x1dc87d+_0x6d56('0x15')+_0x36b80d+'.'+_0x4fc39d)['where'](_0x36b80d+_0x6d56('0x3c'),_0x3b2467)['where'](_0x6d56('0x3d'),NOW)['where']('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x36b80d,_0x17b1cc,_0x4fc39d,_0x6d56('0x30'),[_0x6d56('0x3e'),'\x22onlyIfOpen\x22']))[_0x6d56('0x16')](_0x6d56('0x40'),selectNotIn(_0x36b80d,_0x17b1cc,_0x4fc39d,_0x6d56('0x30'),[_0x6d56('0x3e')])))[_0x6d56('0x41')]();return _0x209e9e;}function insertTzCmHopperBlack(_0x53626f,_0x14ef36,_0x395cd5,_0x2fffdd){var _0x4a1d9a=[_0x6d56('0x42'),_0x6d56('0x2a'),'cm_contacts.ListId',_0x14ef36+'.'+_0x2fffdd,_0x6d56('0x2c'),_0x6d56('0x2d')];return squel['insert']()[_0x6d56('0x49')](_0x6d56('0x43'))['fromQuery']([_0x6d56('0x13'),'ContactId',_0x6d56('0x33'),_0x2fffdd,_0x6d56('0x34'),_0x6d56('0x35')],squel[_0x6d56('0x11')]()[_0x6d56('0x39')](_0x4a1d9a)['from'](_0x14ef36)['join'](_0x6d56('0x3a'),null,_0x6d56('0x48')+_0x14ef36+_0x6d56('0x3b'))['join'](_0x395cd5,null,_0x395cd5+_0x6d56('0x15')+_0x14ef36+'.'+_0x2fffdd)[_0x6d56('0x16')](_0x14ef36+_0x6d56('0x3c'),_0x53626f)[_0x6d56('0x16')]('cm_contacts.createdAt\x20=\x20?',NOW)[_0x6d56('0x16')](_0x6d56('0x40'),squel[_0x6d56('0x11')]()['field'](_0x6d56('0x13'))[_0x6d56('0x44')](_0x6d56('0x43'))[_0x6d56('0x16')](_0x6d56('0x45'),_0x53626f)[_0x6d56('0x16')](_0x2fffdd+_0x6d56('0x17')+_0x14ef36+'.'+_0x2fffdd)))[_0x6d56('0x41')]();}function insertCmHopperAdditionalPhones(_0x349ffe){var _0x867393=[_0x6d56('0x4a'),_0x6d56('0x4b'),_0x6d56('0x4c'),_0x6d56('0x4d'),_0x6d56('0x4e')];return squel[_0x6d56('0x2f')]()[_0x6d56('0x49')](_0x6d56('0x4f'))[_0x6d56('0x31')](['CmHopperId',_0x6d56('0x13'),_0x6d56('0x50'),_0x6d56('0x34'),_0x6d56('0x35')],squel[_0x6d56('0x11')]()[_0x6d56('0x39')](_0x867393)['from'](_0x6d56('0x30'))['join']('cm_contacts',null,_0x6d56('0x51'))[_0x6d56('0x14')](_0x6d56('0x52'),null,'cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId')[_0x6d56('0x16')]('cm_hopper.ListId\x20=\x20?',_0x349ffe)[_0x6d56('0x16')]('cm_contacts.createdAt\x20=\x20?',NOW))[_0x6d56('0x41')]();}function insertCmContact(_0x4e7205,_0x290001,_0x569819,_0x5dc8d8){var _0xc033b1=_['concat'](_[_0x6d56('0x53')](_0x5dc8d8),['ListId',_0x6d56('0x54'),_0x6d56('0x34'),_0x6d56('0x35')]);return squel['insert']()[_0x6d56('0x49')](_0x6d56('0x3a'))[_0x6d56('0x31')](_0xc033b1,squel[_0x6d56('0x11')]()[_0x6d56('0x39')](_0xc033b1)['from'](_0x290001)['where']('('+_0x569819[_0x6d56('0x14')](',')+')\x20NOT\x20IN\x20?',squel['select']()[_0x6d56('0x39')](_0x569819)['from'](_0x6d56('0x3a'))['where'](_0x6d56('0x45'),_0x4e7205)['where'](_0x6d56('0x55')))[_0x6d56('0x16')]('id\x20IN\x20?',squel[_0x6d56('0x11')]()['field'](_0x6d56('0x56'),_0x6d56('0x57'))['from'](_0x290001)[_0x6d56('0x58')](_0x569819[_0x6d56('0x14')](','))))[_0x6d56('0x41')]();}function handleStop(){logger['info'](_0x6d56('0x59'));stopped=!![];}function handleUncaughtException(_0x27461f){logger[_0x6d56('0x5a')](_0x27461f[_0x6d56('0x5b')]);process[_0x6d56('0x5c')](0x1);}function handleError(_0x5ad17c,_0x3b50c1){stats[_0x6d56('0x5d')]['push']({'name':_0x3b50c1[_0x6d56('0x5e')],'message':_0x3b50c1[_0x6d56('0x5b')],'row':_0x5ad17c});}function handleQuery(_0x513b2a){logger[_0x6d56('0x5f')](_0x513b2a);return db['sequelize'][_0x6d56('0x60')](_0x513b2a)[_0x6d56('0x61')](function(_0x285fb1){results[_0x6d56('0x1c')](_0x285fb1);})['catch'](function(_0x5dab91){logger[_0x6d56('0x5a')](_0x5dab91[_0x6d56('0x5b')]);});}function updateTzCampaigns(_0x51951f){return new Promise(function(_0x3ddfef,_0x39e1c7){var _0x595df1=squel[_0x6d56('0x11')]()[_0x6d56('0x39')]([_0x6d56('0x62'),_0x6d56('0x63')])[_0x6d56('0x44')](_0x6d56('0x64'))[_0x6d56('0x14')](_0x6d56('0x65'),null,'campaigns.id\x20=\x20campaigns_has_cm_lists.CampaignId')[_0x6d56('0x16')](_0x6d56('0x66')+_0x51951f);db[_0x6d56('0x67')][_0x6d56('0x60')](_0x595df1['toString']())[_0x6d56('0x61')](function(_0x5a5b26){var _0x24ed6b=[];for(var _0x29bbe0=0x0;_0x29bbe0<_0x5a5b26[_0x6d56('0x1b')];_0x29bbe0++){_0x24ed6b['push'](getTimezoneData(_0x5a5b26[_0x29bbe0],tmp_campaigns));}BPromise[_0x6d56('0x1d')](_0x24ed6b)[_0x6d56('0x1e')](function(){_0x3ddfef({'val':0x1});});})[_0x6d56('0x68')](function(_0x16042c){logger[_0x6d56('0x5a')](_0x16042c[_0x6d56('0x5b')]);_0x3ddfef({'val':0x0});});});}function updateTzVoiceQueues(_0x73405a){return new Promise(function(_0x49679f,_0x355ab2){var _0x3a7d49=squel[_0x6d56('0x11')]()[_0x6d56('0x39')]([_0x6d56('0x69'),'voice_queues.dialTimezone'])[_0x6d56('0x44')](_0x6d56('0x6a'))[_0x6d56('0x14')](_0x6d56('0x6b'),null,_0x6d56('0x6c'))[_0x6d56('0x16')](_0x6d56('0x6d')+_0x73405a);db[_0x6d56('0x67')][_0x6d56('0x60')](_0x3a7d49[_0x6d56('0x41')]())['spread'](function(_0x49d32b){var _0x35cf68=[];for(var _0x1e843a=0x0;_0x1e843a<_0x49d32b['length'];_0x1e843a++){_0x35cf68[_0x6d56('0x1c')](getTimezoneData(_0x49d32b[_0x1e843a],tmp_voice_queues));}BPromise['all'](_0x35cf68)[_0x6d56('0x1e')](function(){_0x49679f({'val':0x1});});})[_0x6d56('0x68')](function(_0x12e99c){logger[_0x6d56('0x5a')](_0x12e99c[_0x6d56('0x5b')]);_0x49679f({'val':0x0});});});}function getTimezoneData(_0x4115d4,_0x225181){return new Promise(function(_0x37d2e2,_0x13f84e){var _0x38dd75=shared[_0x6d56('0x6e')];var _0x4abc3e=_0x38dd75[_0x4115d4[_0x6d56('0x6f')]];if(_['isNil'](_0x4abc3e)){_0x37d2e2({'ret':0x1});}else{var _0x491b6a=_0x4abc3e[_0x6d56('0x70')];var _0x1f3485=squel['insert']()[_0x6d56('0x49')](_0x225181)['set']('id',_0x4115d4['id'])[_0x6d56('0x71')](_0x6d56('0x72'),_0x491b6a)[_0x6d56('0x71')]('dialTimezone',_0x4115d4['dialTimezone'])[_0x6d56('0x41')]();return db['sequelize'][_0x6d56('0x60')](_0x1f3485)[_0x6d56('0x61')](function(_0x4ec4c4){_0x37d2e2({'ret':0x1});})['catch'](function(_0x2b3e22){logger['error'](_0x2b3e22[_0x6d56('0x5b')]);_0x13f84e({'ret':0x1});});}});}function handleTZQuery(_0x43b2b2){logger[_0x6d56('0x5f')](_0x43b2b2);return db[_0x6d56('0x67')]['query'](_0x43b2b2)['spread'](function(_0x3bc8e4){})['catch'](function(_0x452f7f){logger[_0x6d56('0x5a')](_0x452f7f['message']);});}function main(_0x34dd67,_0x2f1792,_0x21b8cf,_0x6f423f){logger[_0x6d56('0x5f')](_0x6d56('0x73'),_0x34dd67,JSON[_0x6d56('0x74')](_0x2f1792));process[_0x6d56('0x75')](_0x6d56('0x76'));var _0x117c67=_0x2f1792[_0x6d56('0x77')];var _0x3d4a7d=_['clone'](_0x117c67);var _0x20f403=_0x2f1792[_0x6d56('0x78')];var _0x296d2f=path[_0x6d56('0x14')](config['root'],_0x6d56('0x79'),_0x20f403+_0x6d56('0x7a'));hasTZ=_[_0x6d56('0x53')](_0x117c67)[_0x6d56('0x7b')](_0x6d56('0x6f'));var _0x1047fb=_[_0x6d56('0x53')](_0x117c67)[_0x6d56('0x14')]();logger['info'](_0x6d56('0x7c'),_0x1047fb);db[_0x6d56('0x7d')][_0x6d56('0x7e')]({'raw':!![],'attributes':['id',_0x6d56('0x7f')]})[_0x6d56('0x1e')](function(_0x199d66){for(var _0x32823b=0x0;_0x32823b<_0x199d66[_0x6d56('0x1b')];_0x32823b++){if(_0x199d66[_0x32823b][_0x6d56('0x7f')]in _0x117c67){contactItemTypes[_0x6d56('0x1c')](_0x199d66[_0x32823b]);delete _0x3d4a7d[_0x199d66[_0x32823b][_0x6d56('0x7f')]];hasAdditionalPhones=!![];}for(var _0x4dff41 in _0x117c67){if(_0x199d66[_0x32823b][_0x6d56('0x7f')]+_0x6d56('0x80')===_0x4dff41){phoneDescriptions['push']({'itemTypeId':_0x199d66[_0x32823b]['id'],'description':_0x4dff41});delete _0x3d4a7d[_0x4dff41];}}}if(hasAdditionalPhones)_0x3d4a7d[_0x6d56('0x1a')]='';var _0x5db039=_[_0x6d56('0x53')](_0x3d4a7d)['join']();logger[_0x6d56('0x5f')](_0x6d56('0x7c'),_0x5db039);fs[_0x6d56('0x81')](_0x296d2f,_0x5db039+'\x0a');Papa[_0x6d56('0x82')](fs['createReadStream'](_0x34dd67),{'header':!![],'skipEmptyLines':!![],'step':function(_0x321773,_0x18dc26){try{for(var _0x4367e1=0x0,_0x140936=[];_0x4367e1<_0x321773['data'][_0x6d56('0x1b')];_0x4367e1++){stats[_0x6d56('0x83')]+=0x1;if(_0x321773['errors'][_0x4367e1]){handleError(_0x321773[_0x6d56('0x84')][_0x4367e1],_0x321773[_0x6d56('0x5d')][_0x4367e1]);}else{var _0x2bd335=[];var _0x178f16=[];var _0x2587f8={};for(var _0x1747c7 in _0x117c67){let _0x2b0746=contactItemTypes['find'](_0x2b7a3f=>_0x2b7a3f[_0x6d56('0x7f')]===_0x1747c7);let _0x5f09c5=contactItemTypes[_0x6d56('0x85')](_0x393cbb=>_0x393cbb['name']+_0x6d56('0x80')===_0x1747c7);if(_[_0x6d56('0x20')](_0x2b0746)&&_['isNil'](_0x5f09c5)){if(_0x117c67[_0x6d56('0x86')](_0x1747c7)){if(_0x321773['data'][_0x4367e1][_0x117c67[_0x1747c7]]){var _0x440db3=_['trim'](_0x321773[_0x6d56('0x84')][_0x4367e1][_0x117c67[_0x1747c7]]['replace'](/"/g,'\x27'));switch(_0x1747c7){case'scheduledat':var _0x5422a1=moment(_0x440db3,_0x6d56('0xf'),!![]);if(_0x5422a1[_0x6d56('0x87')]()){_0x140936['push']('\x22'+_0x440db3+'\x22');}else{_0x2bd335[_0x6d56('0x1c')](_0x6d56('0x88'));}break;case _0x6d56('0x36'):var _0xf3b45b=parseInt(_0x440db3);_0x440db3=_['isNaN'](_0xf3b45b)||_0xf3b45b<0x0||_0xf3b45b>0x4?_0x6f423f?0x3:0x2:_0xf3b45b;_0x140936[_0x6d56('0x1c')]('\x22'+_0x440db3+'\x22');break;case _0x6d56('0x37'):var _0x309bca=parseInt(_0x440db3);if(_[_0x6d56('0x89')](_0x309bca)&&_[_0x6d56('0x7b')](_0x21b8cf,_0x309bca)){_0x140936[_0x6d56('0x1c')]('\x22'+_0x309bca+'\x22');}else{_0x2bd335[_0x6d56('0x1c')](_0x6d56('0x8a'));}break;case _0x6d56('0x8b'):if(isEmail(_0x440db3)){_0x140936[_0x6d56('0x1c')]('\x22'+_0x440db3+'\x22');}else{_0x2bd335[_0x6d56('0x1c')]('email\x20wrong\x20format');}break;case'dateOfBirth':var _0x274ca4=moment(_0x440db3,_0x6d56('0x8c'),!![]);if(_0x274ca4['isValid']()){_0x140936['push']('\x22'+_0x440db3+'\x22');}else{_0x2bd335[_0x6d56('0x1c')](_0x6d56('0x8d'));}break;case _0x6d56('0x6f'):var _0xb0f974=shared['timezones'];var _0x164b65=_0xb0f974[_0x440db3];if(!_[_0x6d56('0x20')](_0x164b65)){var _0x1ce5ea=_0x164b65[_0x6d56('0x70')];_0x140936[_0x6d56('0x1c')]('\x22'+_0x440db3+'\x22');_0x140936[_0x6d56('0x1c')]('\x22'+_0x1ce5ea+'\x22');}break;default:_0x140936['push']('\x22'+_0x440db3+'\x22');}}else{switch(_0x1747c7){case'firstName':case'phone':_0x2bd335[_0x6d56('0x1c')](_0x1747c7+_0x6d56('0x8e'));break;default:_0x140936[_0x6d56('0x1c')]('\x22\x22');}}}}else{var _0x5c284a='';if(!_[_0x6d56('0x20')](_0x2b0746)){if(!_0x2587f8[_0x6d56('0x86')](_0x2b0746['id'])){if(!_[_0x6d56('0x20')](_0x321773[_0x6d56('0x84')][_0x4367e1][_0x117c67[_0x1747c7]])){var _0x440db3=_[_0x6d56('0x8f')](_0x321773[_0x6d56('0x84')][_0x4367e1][_0x117c67[_0x1747c7]][_0x6d56('0x90')](/"/g,'\x27'));var _0x21aa7b=phoneDescriptions['find'](_0x45045a=>_0x45045a[_0x6d56('0x91')]===_0x2b0746['id']);if(!_[_0x6d56('0x20')](_0x21aa7b)){var _0x44e265=_[_0x6d56('0x8f')](_0x321773[_0x6d56('0x84')][_0x4367e1][_0x117c67[_0x21aa7b[_0x6d56('0x92')]]][_0x6d56('0x90')](/"/g,'\x27'));if(!_[_0x6d56('0x20')](_0x44e265))_0x440db3=_0x440db3+'§'+_0x44e265;}if(_0x5c284a=='')_0x5c284a=_0x440db3;else _0x5c284a+='|'+_0x440db3;}_0x178f16[_0x6d56('0x1c')](_0x2b0746['id']+':'+_0x5c284a);_0x2587f8[_0x2b0746['id']]=0x1;}}}}if(hasAdditionalPhones){_0x140936[_0x6d56('0x1c')]('\x22'+_0x178f16[_0x6d56('0x14')](';')+'\x22');}if(_0x2bd335['length']){handleError(_0x321773[_0x6d56('0x84')][_0x4367e1],{'code':_0x6d56('0x93'),'message':_0x2bd335[_0x6d56('0x14')]()});}else{fs[_0x6d56('0x94')](_0x296d2f,_0x140936[_0x6d56('0x14')]()+'\x0a');}_0x140936=[];}if(!(stats[_0x6d56('0x83')]%0xc8)){socket[_0x6d56('0x95')](_0x6d56('0x96')+_0x20f403,stats);stats[_0x6d56('0x5d')]=[];}}if(stopped){logger[_0x6d56('0x5f')](_0x6d56('0x97'));_0x18dc26[_0x6d56('0x98')]();}}catch(_0x55a781){handleError(_0x321773['data'][_0x4367e1],{'code':_0x6d56('0x99'),'message':_0x55a781['message']});logger[_0x6d56('0x5a')]('step',_0x55a781[_0x6d56('0x5b')]);}},'complete':function(){try{var _0xddf178=[];var _0x120ec6=[];var _0x276cd9=_0x6d56('0x3a');if(_0x2f1792[_0x6d56('0x9a')]&&_0x2f1792[_0x6d56('0x9a')][_0x6d56('0x1b')]){_0x276cd9=_0x6d56('0x9b')+_0x20f403;_0xddf178[_0x6d56('0x1c')]('CREATE\x20TABLE\x20'+_0x276cd9+_0x6d56('0x9c'));}tmp_campaigns=_0x6d56('0x9d')+_0x20f403;tmp_voice_queues=_0x6d56('0x9e')+_0x20f403;_0x120ec6[_0x6d56('0x1c')](_0x6d56('0x9f')+tmp_campaigns+'(id\x20int,dialTimezone\x20varchar(255),offset\x20int);');_0x120ec6['push']('CREATE\x20TABLE\x20'+tmp_voice_queues+_0x6d56('0xa0'));BPromise[_0x6d56('0xa1')](_0x120ec6,handleTZQuery)[_0x6d56('0x1e')](function(_0x466596){updateTzCampaigns(_0x2f1792['ListId'])[_0x6d56('0x1e')](function(_0x404875){updateTzVoiceQueues(_0x2f1792[_0x6d56('0x33')])[_0x6d56('0x1e')](function(_0x471ff2){if(hasTZ)_0x5db039=_0x5db039[_0x6d56('0x90')](_0x6d56('0x6f'),_0x6d56('0xa2'));var _0x8b2c54=util[_0x6d56('0xe')](_0x6d56('0xa3'),_0x296d2f,_0x276cd9,_0x5db039,_0x2f1792['ListId'],_0x2f1792[_0x6d56('0x54')]||null,NOW,NOW);if(_['isNil'](_0x117c67[_0x6d56('0xa4')])){_0x8b2c54+=_0x6d56('0xa5');}_0xddf178[_0x6d56('0x1c')](_0x8b2c54);if(_0x2f1792[_0x6d56('0x9a')]&&_0x2f1792['duplicates'][_0x6d56('0x1b')]){_0xddf178[_0x6d56('0x1c')](insertCmContact(_0x2f1792[_0x6d56('0x33')],_0x276cd9,_0x2f1792[_0x6d56('0x9a')],_0x117c67));_0xddf178['push'](_0x6d56('0xa6')+_0x276cd9+';');}BPromise[_0x6d56('0xa1')](_0xddf178,handleQuery)[_0x6d56('0x1e')](function(_0xf82928){BPromise[_0x6d56('0x1d')]([handleAdditionalPhones()])[_0x6d56('0x1e')](function(){_0xddf178=[];for(var _0x5d54c5=0x0;_0x5d54c5<promisesAdditionalPhones[_0x6d56('0x1b')];_0x5d54c5++){if(promisesAdditionalPhones[_0x5d54c5][_0x6d56('0x13')]!='§'){_0xddf178[_0x6d56('0x1c')](createAdditionalPhone(promisesAdditionalPhones[_0x5d54c5][_0x6d56('0xa7')],promisesAdditionalPhones[_0x5d54c5]['contactTypeId'],promisesAdditionalPhones[_0x5d54c5][_0x6d56('0x13')],promisesAdditionalPhones[_0x5d54c5]['orderBy']));}}BPromise['all'](_0xddf178)[_0x6d56('0x1e')](function(){_0xddf178=[];if(hasTZ){_0xddf178[_0x6d56('0x1c')](insertTzCmHopper(_0x2f1792[_0x6d56('0x33')],_0x6d56('0x6b'),'voice_queues',_0x6d56('0xa8'),_0x6f423f,tmp_voice_queues));_0xddf178[_0x6d56('0x1c')](insertTzCmHopperBlack(_0x2f1792[_0x6d56('0x33')],'voice_queues_has_cm_blacklists',_0x6d56('0x6a'),_0x6d56('0xa8')));_0xddf178[_0x6d56('0x1c')](insertTzCmHopper(_0x2f1792[_0x6d56('0x33')],_0x6d56('0x65'),'campaigns',_0x6d56('0xa9'),_0x6f423f,tmp_campaigns));_0xddf178[_0x6d56('0x1c')](insertTzCmHopperBlack(_0x2f1792[_0x6d56('0x33')],_0x6d56('0xaa'),_0x6d56('0x64'),_0x6d56('0xa9')));_0xddf178[_0x6d56('0x1c')](insertCmHopperAdditionalPhones(_0x2f1792[_0x6d56('0x33')]));}else{_0xddf178[_0x6d56('0x1c')](insertCmHopper(_0x2f1792['ListId'],_0x6d56('0x6b'),'voice_queues',_0x6d56('0xa8'),_0x6f423f));_0xddf178[_0x6d56('0x1c')](insertCmHopperBlack(_0x2f1792[_0x6d56('0x33')],'voice_queues_has_cm_blacklists','voice_queues',_0x6d56('0xa8')));_0xddf178[_0x6d56('0x1c')](insertCmHopper(_0x2f1792[_0x6d56('0x33')],_0x6d56('0x65'),_0x6d56('0x64'),'CampaignId',_0x6f423f));_0xddf178['push'](insertCmHopperBlack(_0x2f1792[_0x6d56('0x33')],_0x6d56('0xaa'),_0x6d56('0x64'),'CampaignId'));_0xddf178[_0x6d56('0x1c')](insertCmHopperAdditionalPhones(_0x2f1792[_0x6d56('0x33')]));}_0xddf178[_0x6d56('0x1c')](_0x6d56('0xa6')+tmp_campaigns+';');_0xddf178[_0x6d56('0x1c')](_0x6d56('0xa6')+tmp_voice_queues+';');BPromise[_0x6d56('0xa1')](_0xddf178,handleQuery)[_0x6d56('0x1e')](function(_0x47b3c7){stats[_0x6d56('0xab')]=!![];stats[_0x6d56('0xac')]=_0x2f1792[_0x6d56('0x9a')]&&_0x2f1792[_0x6d56('0x9a')]['length']?results[0x2][_0x6d56('0xac')]:results[0x0][_0x6d56('0xac')];socket[_0x6d56('0x95')](_0x6d56('0x96')+_0x20f403,stats);fs[_0x6d56('0xad')](_0x34dd67);fs[_0x6d56('0xad')](_0x296d2f);process[_0x6d56('0x5c')](0x0);})[_0x6d56('0x68')](function(_0x45cacc){logger[_0x6d56('0x5a')](_0x45cacc[_0x6d56('0x5b')]);process[_0x6d56('0x5c')](0x1);});});});})[_0x6d56('0x68')](function(_0x1dcb7e){logger[_0x6d56('0x5a')](_0x1dcb7e[_0x6d56('0x5b')]);process[_0x6d56('0x5c')](0x1);});});});});}catch(_0x543e0c){logger['error'](_0x6d56('0xae'),_0x543e0c[_0x6d56('0x5b')]);process[_0x6d56('0x5c')](0x1);}},'error':function(_0x3b8749,_0x38fa2f,_0x4d3888,_0x5e7945){throw new Error(_0x5e7945);}});});}function validate(){if(process[_0x6d56('0xaf')]&&process[_0x6d56('0xaf')]['length']<0x4){throw new Error(_0x6d56('0xb0'));}var _0x389643=path[_0x6d56('0x14')](config[_0x6d56('0xb1')],_0x6d56('0x79'),process[_0x6d56('0xaf')][0x2]);if(!fs['existsSync'](_0x389643)){throw new Error('file\x20doesn\x27t\x20exists');}var _0x5bbfd8={};try{_0x5bbfd8=JSON[_0x6d56('0x82')](process['argv'][0x3]);if(!_0x5bbfd8['binding']){throw new Error('binding\x20doesn\x27t\x20exists');}if(!_0x5bbfd8[_0x6d56('0x77')][_0x6d56('0x13')]){throw new Error(_0x6d56('0xb2'));}if(!_0x5bbfd8['binding']['firstName']){throw new Error(_0x6d56('0xb3'));}var _0x46d3a4=0x0;if(_0x5bbfd8[_0x6d56('0x77')][_0x6d56('0x37')]){_0x46d3a4=0x1;}if(!_0x5bbfd8[_0x6d56('0x33')]){throw new Error('ListId\x20is\x20mandatory');}}catch(_0x1d6c2d){throw new Error('body\x20id\x20mandatory');}var _0xa7166=[];try{_0xa7166=_[_0x6d56('0xb4')](JSON[_0x6d56('0x82')](process[_0x6d56('0xaf')][0x4]),'id');}catch(_0x44f912){logger[_0x6d56('0x5f')]('No\x20agent\x20available');}main(_0x389643,_0x5bbfd8,_0xa7166,_0x46d3a4);}validate();process['on'](_0x6d56('0xb5'),handleStop);process['on'](_0x6d56('0xb6'),handleUncaughtException);
\ No newline at end of file
+var _0xfacb=['cm_contacts.scheduledat','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','into','cm_hopper','scheduledat','ContactId','ListId','updatedAt','priority','UserId','fields','cm_contacts.ListId\x20=\x20','.CmListId','.CmListId\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','cm_contacts.id','cm_contacts.ListId','insert','cm_hopper_black','fromQuery','createdAt','cm_contacts','cm_contacts.createdAt\x20=\x20?','ListId\x20=\x20?','toString','recallme','\x22always\x22','\x22onlyIfOpen\x22','cm_hopper.id','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?','keys','CompanyId',')\x20NOT\x20IN\x20?','deletedAt\x20IS\x20NULL','min_id','group','info','Received\x20SIGINT','error','message','exit','errors','code','sequelize','query','spread','catch','campaigns.id','campaigns.dialTimezone','campaigns','campaigns_has_cm_lists.CmListId=','voice_queues.id','voice_queues.dialTimezone','voice_queues','voice_queues_has_cm_lists.CmListId=','timezones','dialTimezone','utcOffset','set','main','stringify','send','start','binding','clone','socket_timestamp','server/files/tmp','includes','name','header','writeFileSync','createReadStream','rows','data','find','_description','trim','replace','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','agent\x20not\x20exists','email','email\x20wrong\x20format','dateOfBirth','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','\x20not\x20specified','hasOwnProperty','description','SystemRow','emit','contact:import:','Abort\x20parser','abort','SystemError','step','cm_contacts_','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','campaigns_','(id\x20int,dialTimezone\x20varchar(255),offset\x20int);','each','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','duplicates','contactId','contactTypeId','orderBy','voice_queues_has_cm_lists','VoiceQueueId','voice_queues_has_cm_blacklists','campaigns_has_cm_lists','CampaignId','campaigns_has_cm_blacklists','DROP\x20TABLE\x20','finish','affectedRows','unlink','complete','argv','existsSync','parse','binding\x20doesn\x27t\x20exists','firstName','ListId\x20is\x20mandatory','body\x20id\x20mandatory','No\x20agent\x20available','SIGINT','uncaughtException','path','lodash','papaparse','util','bluebird','../../../mysqldb','import','redis','localhost','socket.io-emitter','YYYY-MM-DD\x20HH:mm:ss','format','test','select','field','phone','from','join','.id\x20=\x20','where','.dialCheckDuplicateType\x20IN\x20(','findAll','AdditionalPhones','push','all','then','length','split','isNil','filter','findOne','CmContactHasItem','updated','create','inserted','cm_contacts.phone'];(function(_0x1b9bc2,_0x15952b){var _0x3ee566=function(_0x593b8d){while(--_0x593b8d){_0x1b9bc2['push'](_0x1b9bc2['shift']());}};_0x3ee566(++_0x15952b);}(_0xfacb,0x8b));var _0xbfac=function(_0x26d094,_0x2faa94){_0x26d094=_0x26d094-0x0;var _0x1ee37d=_0xfacb[_0x26d094];return _0x1ee37d;};'use strict';var fs=require('fs');var path=require(_0xbfac('0x0'));var _=require(_0xbfac('0x1'));var Papa=require(_0xbfac('0x2'));var util=require(_0xbfac('0x3'));var BPromise=require(_0xbfac('0x4'));var moment=require('moment');var squel=require('squel');var Redis=require('ioredis');var db=require(_0xbfac('0x5'))['db'];var config=require('../../../config/environment');var shared=require('../../../config/environment/shared');var logger=require('../../../config/logger')(_0xbfac('0x6'));config['redis']=_['defaults'](config[_0xbfac('0x7')],{'host':_0xbfac('0x8'),'port':0x18eb});var socket=require(_0xbfac('0x9'))(new Redis(config[_0xbfac('0x7')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var orderBy=0x0;var stopped=![];var NOW=moment()['format'](_0xbfac('0xa'));var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];var tmp_voice_queues;var tmp_campaigns;var tzOffset=0x0;var hasTZ;var NOW=moment()[_0xbfac('0xb')](_0xbfac('0xa'));function isEmail(_0x5e69bb){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))*$/[_0xbfac('0xc')](_0x5e69bb);}function selectNotIn(_0x400edc,_0x6831fb,_0x59cb91,_0x5191cb,_0x74c467){return squel[_0xbfac('0xd')]()[_0xbfac('0xe')](_0xbfac('0xf'))[_0xbfac('0x10')](_0x5191cb)[_0xbfac('0x11')](_0x6831fb,null,_0x6831fb+_0xbfac('0x12')+_0x5191cb+'.'+_0x59cb91)[_0xbfac('0x13')](_0x5191cb+'.'+_0x59cb91+'\x20=\x20'+_0x400edc+'.'+_0x59cb91)[_0xbfac('0x13')](_0x6831fb+_0xbfac('0x14')+_0x74c467['join']()+')');}function handleAdditionalPhones(){return new Promise(function(_0x2cefe8,_0x545748){promisesAdditionalPhones=[];return db['CmContact'][_0xbfac('0x15')]({'raw':!![],'attributes':['id',_0xbfac('0x16')],'where':{'createdAt':NOW,'AdditionalPhones':{'$ne':null}}})['then'](function(_0x9506b2){if(_0x9506b2!==null){var _0x355184=[];for(var _0x214408=0x0;_0x214408<_0x9506b2['length'];_0x214408++){var _0x1f9c4d=_0x9506b2[_0x214408];_0x355184[_0xbfac('0x17')](insertAdditionalPhones(_0x1f9c4d));}}Promise[_0xbfac('0x18')](_0x355184)[_0xbfac('0x19')](function(){_0x2cefe8({'val':0x1});});});});}function insertAdditionalPhones(_0x4cf79d){return new Promise(function(_0xe3fc07,_0x25981e){var _0x423814=_0x4cf79d[_0xbfac('0x16')];var _0x5437fd=_0x423814['split'](';');var _0x40e630=[];orderBy=0x0;for(var _0x2347c3=0x0;_0x2347c3<_0x5437fd[_0xbfac('0x1a')];_0x2347c3++){_0x40e630[_0xbfac('0x17')](splitAdditionalPhone(_0x4cf79d['id'],_0x5437fd[_0x2347c3]));}Promise[_0xbfac('0x18')](_0x40e630)['then'](function(){_0xe3fc07({'val':_0x5437fd[_0xbfac('0x1a')]});});});}function splitAdditionalPhone(_0x8f054e,_0x1734ed){return new Promise(function(_0x2734f7,_0x2c4721){var _0x5a3e7a=_0x1734ed[_0xbfac('0x1b')](':');var _0x190a3a=_0x5a3e7a[0x0];var _0x2e6209=_0x5a3e7a[0x1];if(!_[_0xbfac('0x1c')](_0x2e6209)){var _0x1cbf29=_0x2e6209[_0xbfac('0x1b')]('|');var _0x2173dc=[];for(var _0x259e67=0x0;_0x259e67<_0x1cbf29[_0xbfac('0x1a')];_0x259e67++){if(_0x1cbf29[_0x259e67]!==''){var _0x17ee02=_[_0xbfac('0x1d')](promisesAdditionalPhones,{'contactId':_0x8f054e,'phone':_0x1cbf29[_0x259e67]});if(_0x17ee02[_0xbfac('0x1a')]==0x0){orderBy++;promisesAdditionalPhones[_0xbfac('0x17')]({'contactId':_0x8f054e,'contactTypeId':_0x190a3a,'phone':_0x1cbf29[_0x259e67],'orderBy':orderBy});}}}_0x2734f7({'ok':0x1});}else _0x2734f7({'res':0x0});});}function createAdditionalPhone(_0x48b57d,_0x1a234c,_0x16a0ff,_0x9ffe3){var _0x8b9b7c='';var _0x4ce31d='';var _0xfa90fe=_0x16a0ff[_0xbfac('0x1b')]('§');_0x8b9b7c=_0xfa90fe[0x0];if(_0xfa90fe[_0xbfac('0x1a')]==0x2)_0x4ce31d=_0xfa90fe[0x1];return new Promise(function(_0x4b9cbb,_0x3c10d7){return db['CmContactHasItem'][_0xbfac('0x1e')]({'where':{'CmContactId':_0x48b57d,'item':_0x8b9b7c}})[_0xbfac('0x19')](function(_0x1db465){if(_0x1db465){return db[_0xbfac('0x1f')]['update']({'ItemTypeId':_0x1a234c,'description':_0x4ce31d,'OrderBy':_0x9ffe3},{'where':{'CmContactId':_0x48b57d,'item':_0x8b9b7c}})[_0xbfac('0x19')](function(_0x11932f){_0x4b9cbb({'res':_0xbfac('0x20')});});}else{return db[_0xbfac('0x1f')][_0xbfac('0x21')]({'CmContactId':_0x48b57d,'item':_0x8b9b7c,'description':_0x4ce31d,'ItemTypeId':_0x1a234c,'OrderBy':_0x9ffe3,'ItemClass':'PHONE'})[_0xbfac('0x19')](function(_0x153828){_0x4b9cbb({'res':_0xbfac('0x22')});});}});});}function insertCmHopper(_0x3c5a0a,_0x4b8644,_0xb1c555,_0x306675,_0x143f67){var _0x36bfe7=[_0xbfac('0x23'),_0xbfac('0x24'),'cm_contacts.id','cm_contacts.ListId',_0x4b8644+'.'+_0x306675,_0xbfac('0x25'),_0xbfac('0x26'),_0xbfac('0x27'),_0xbfac('0x28'),'\x22'+_0x143f67+'\x22'];return squel['insert']()[_0xbfac('0x29')](_0xbfac('0x2a'))['fromQuery']([_0xbfac('0xf'),_0xbfac('0x2b'),_0xbfac('0x2c'),_0xbfac('0x2d'),_0x306675,'createdAt',_0xbfac('0x2e'),_0xbfac('0x2f'),_0xbfac('0x30'),'recallme'],squel[_0xbfac('0xd')]()[_0xbfac('0x31')](_0x36bfe7)['from'](_0x4b8644)[_0xbfac('0x11')]('cm_contacts',null,_0xbfac('0x32')+_0x4b8644+_0xbfac('0x33'))['join'](_0xb1c555,null,_0xb1c555+_0xbfac('0x12')+_0x4b8644+'.'+_0x306675)['where'](_0x4b8644+_0xbfac('0x34'),_0x3c5a0a)[_0xbfac('0x13')]('cm_contacts.createdAt\x20=\x20?',NOW)[_0xbfac('0x13')](_0xbfac('0x35'),selectNotIn(_0x4b8644,_0xb1c555,_0x306675,'cm_hopper',['\x22always\x22','\x22onlyIfOpen\x22']))[_0xbfac('0x13')](_0xbfac('0x35'),selectNotIn(_0x4b8644,_0xb1c555,_0x306675,_0xbfac('0x2a'),['\x22always\x22'])))['toString']();}function insertCmHopperBlack(_0x685d46,_0x150202,_0x23b746,_0x37978f){var _0x40a4fb=['cm_contacts.phone',_0xbfac('0x36'),_0xbfac('0x37'),_0x150202+'.'+_0x37978f,_0xbfac('0x25'),_0xbfac('0x26')];return squel[_0xbfac('0x38')]()[_0xbfac('0x29')](_0xbfac('0x39'))[_0xbfac('0x3a')]([_0xbfac('0xf'),_0xbfac('0x2c'),_0xbfac('0x2d'),_0x37978f,_0xbfac('0x3b'),_0xbfac('0x2e')],squel[_0xbfac('0xd')]()[_0xbfac('0x31')](_0x40a4fb)['from'](_0x150202)[_0xbfac('0x11')](_0xbfac('0x3c'),null,_0xbfac('0x32')+_0x150202+_0xbfac('0x33'))['join'](_0x23b746,null,_0x23b746+_0xbfac('0x12')+_0x150202+'.'+_0x37978f)[_0xbfac('0x13')](_0x150202+'.CmListId\x20=\x20?',_0x685d46)[_0xbfac('0x13')](_0xbfac('0x3d'),NOW)[_0xbfac('0x13')](_0xbfac('0x35'),squel['select']()['field'](_0xbfac('0xf'))[_0xbfac('0x10')](_0xbfac('0x39'))[_0xbfac('0x13')](_0xbfac('0x3e'),_0x685d46)[_0xbfac('0x13')](_0x37978f+'\x20=\x20'+_0x150202+'.'+_0x37978f)))[_0xbfac('0x3f')]();}function insertTzCmHopper(_0x11d23d,_0x4bf6bf,_0x9f6f24,_0x255bf0,_0x4ece85,_0x326d7a){var _0x10ebe0=[_0xbfac('0x23'),'date_add(cm_contacts.scheduledat,interval\x20'+_0x326d7a+'.offset-cm_contacts.utcOffset\x20minute)',_0xbfac('0x36'),_0xbfac('0x37'),_0x4bf6bf+'.'+_0x255bf0,_0xbfac('0x25'),_0xbfac('0x26'),_0xbfac('0x27'),_0xbfac('0x28'),'\x22'+_0x4ece85+'\x22'];var _0x4589f6=squel['insert']()['into']('cm_hopper')[_0xbfac('0x3a')]([_0xbfac('0xf'),'scheduledat',_0xbfac('0x2c'),_0xbfac('0x2d'),_0x255bf0,'createdAt',_0xbfac('0x2e'),_0xbfac('0x2f'),_0xbfac('0x30'),_0xbfac('0x40')],squel[_0xbfac('0xd')]()[_0xbfac('0x31')](_0x10ebe0)[_0xbfac('0x10')](_0x4bf6bf)[_0xbfac('0x11')](_0xbfac('0x3c'),null,_0xbfac('0x32')+_0x4bf6bf+_0xbfac('0x33'))[_0xbfac('0x11')](_0x9f6f24,null,_0x9f6f24+_0xbfac('0x12')+_0x4bf6bf+'.'+_0x255bf0)[_0xbfac('0x11')](_0x326d7a,null,_0x326d7a+_0xbfac('0x12')+_0x4bf6bf+'.'+_0x255bf0)[_0xbfac('0x13')](_0x4bf6bf+_0xbfac('0x34'),_0x11d23d)['where']('cm_contacts.createdAt\x20=\x20?',NOW)['where'](_0xbfac('0x35'),selectNotIn(_0x4bf6bf,_0x9f6f24,_0x255bf0,_0xbfac('0x2a'),[_0xbfac('0x41'),_0xbfac('0x42')]))[_0xbfac('0x13')](_0xbfac('0x35'),selectNotIn(_0x4bf6bf,_0x9f6f24,_0x255bf0,_0xbfac('0x2a'),[_0xbfac('0x41')])))[_0xbfac('0x3f')]();return _0x4589f6;}function insertTzCmHopperBlack(_0x164976,_0x533d5d,_0x5c5777,_0x29a6b2){var _0x19e728=['cm_contacts.phone',_0xbfac('0x36'),'cm_contacts.ListId',_0x533d5d+'.'+_0x29a6b2,_0xbfac('0x25'),_0xbfac('0x26')];return squel[_0xbfac('0x38')]()['into'](_0xbfac('0x39'))[_0xbfac('0x3a')]([_0xbfac('0xf'),'ContactId',_0xbfac('0x2d'),_0x29a6b2,'createdAt',_0xbfac('0x2e')],squel[_0xbfac('0xd')]()[_0xbfac('0x31')](_0x19e728)[_0xbfac('0x10')](_0x533d5d)[_0xbfac('0x11')](_0xbfac('0x3c'),null,_0xbfac('0x32')+_0x533d5d+'.CmListId')[_0xbfac('0x11')](_0x5c5777,null,_0x5c5777+'.id\x20=\x20'+_0x533d5d+'.'+_0x29a6b2)[_0xbfac('0x13')](_0x533d5d+_0xbfac('0x34'),_0x164976)[_0xbfac('0x13')]('cm_contacts.createdAt\x20=\x20?',NOW)[_0xbfac('0x13')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',squel[_0xbfac('0xd')]()[_0xbfac('0xe')]('phone')['from'](_0xbfac('0x39'))[_0xbfac('0x13')](_0xbfac('0x3e'),_0x164976)[_0xbfac('0x13')](_0x29a6b2+'\x20=\x20'+_0x533d5d+'.'+_0x29a6b2)))[_0xbfac('0x3f')]();}function insertCmHopperAdditionalPhones(_0x5e715c){var _0x26562f=[_0xbfac('0x43'),'cm_contact_has_items.item',_0xbfac('0x44'),_0xbfac('0x45'),'cm_contact_has_items.updatedAt'];return squel['insert']()[_0xbfac('0x29')](_0xbfac('0x46'))[_0xbfac('0x3a')]([_0xbfac('0x47'),_0xbfac('0xf'),_0xbfac('0x48'),_0xbfac('0x3b'),_0xbfac('0x2e')],squel[_0xbfac('0xd')]()['fields'](_0x26562f)[_0xbfac('0x10')]('cm_hopper')[_0xbfac('0x11')](_0xbfac('0x3c'),null,_0xbfac('0x49'))[_0xbfac('0x11')](_0xbfac('0x4a'),null,_0xbfac('0x4b'))[_0xbfac('0x13')](_0xbfac('0x4c'),_0x5e715c)[_0xbfac('0x13')](_0xbfac('0x3d'),NOW))['toString']();}function insertCmContact(_0x20526c,_0x28d721,_0x17a56c,_0x4241c8){var _0x2d954c=_['concat'](_[_0xbfac('0x4d')](_0x4241c8),[_0xbfac('0x2d'),_0xbfac('0x4e'),_0xbfac('0x3b'),_0xbfac('0x2e')]);return squel[_0xbfac('0x38')]()[_0xbfac('0x29')]('cm_contacts')['fromQuery'](_0x2d954c,squel['select']()[_0xbfac('0x31')](_0x2d954c)[_0xbfac('0x10')](_0x28d721)[_0xbfac('0x13')]('('+_0x17a56c[_0xbfac('0x11')](',')+_0xbfac('0x4f'),squel[_0xbfac('0xd')]()[_0xbfac('0x31')](_0x17a56c)[_0xbfac('0x10')](_0xbfac('0x3c'))['where'](_0xbfac('0x3e'),_0x20526c)[_0xbfac('0x13')](_0xbfac('0x50')))[_0xbfac('0x13')]('id\x20IN\x20?',squel['select']()[_0xbfac('0xe')]('MIN(id)',_0xbfac('0x51'))[_0xbfac('0x10')](_0x28d721)[_0xbfac('0x52')](_0x17a56c[_0xbfac('0x11')](','))))[_0xbfac('0x3f')]();}function handleStop(){logger[_0xbfac('0x53')](_0xbfac('0x54'));stopped=!![];}function handleUncaughtException(_0x11f8a4){logger[_0xbfac('0x55')](_0x11f8a4[_0xbfac('0x56')]);process[_0xbfac('0x57')](0x1);}function handleError(_0x358d43,_0x2bd52e){stats[_0xbfac('0x58')][_0xbfac('0x17')]({'name':_0x2bd52e[_0xbfac('0x59')],'message':_0x2bd52e[_0xbfac('0x56')],'row':_0x358d43});}function handleQuery(_0x4f52ea){logger[_0xbfac('0x53')](_0x4f52ea);return db[_0xbfac('0x5a')][_0xbfac('0x5b')](_0x4f52ea)[_0xbfac('0x5c')](function(_0x162063){results[_0xbfac('0x17')](_0x162063);})[_0xbfac('0x5d')](function(_0x16aabc){logger['error'](_0x16aabc[_0xbfac('0x56')]);});}function updateTzCampaigns(_0x222492){return new Promise(function(_0x25b9b0,_0x4463f4){var _0x43b7bc=squel[_0xbfac('0xd')]()['fields']([_0xbfac('0x5e'),_0xbfac('0x5f')])['from'](_0xbfac('0x60'))[_0xbfac('0x11')]('campaigns_has_cm_lists',null,'campaigns.id\x20=\x20campaigns_has_cm_lists.CampaignId')['where'](_0xbfac('0x61')+_0x222492);db[_0xbfac('0x5a')][_0xbfac('0x5b')](_0x43b7bc[_0xbfac('0x3f')]())[_0xbfac('0x5c')](function(_0x303525){var _0x4f4ff6=[];for(var _0x594be3=0x0;_0x594be3<_0x303525[_0xbfac('0x1a')];_0x594be3++){_0x4f4ff6[_0xbfac('0x17')](getTimezoneData(_0x303525[_0x594be3],tmp_campaigns));}BPromise[_0xbfac('0x18')](_0x4f4ff6)[_0xbfac('0x19')](function(){_0x25b9b0({'val':0x1});});})[_0xbfac('0x5d')](function(_0x3cdc1e){logger['error'](_0x3cdc1e[_0xbfac('0x56')]);_0x25b9b0({'val':0x0});});});}function updateTzVoiceQueues(_0x44eb62){return new Promise(function(_0x32e68b,_0x5774c9){var _0x5e825b=squel[_0xbfac('0xd')]()[_0xbfac('0x31')]([_0xbfac('0x62'),_0xbfac('0x63')])['from'](_0xbfac('0x64'))[_0xbfac('0x11')]('voice_queues_has_cm_lists',null,'voice_queues.id\x20=\x20voice_queues_has_cm_lists.VoiceQueueId')[_0xbfac('0x13')](_0xbfac('0x65')+_0x44eb62);db['sequelize'][_0xbfac('0x5b')](_0x5e825b[_0xbfac('0x3f')]())[_0xbfac('0x5c')](function(_0x163efc){var _0x2ff5e3=[];for(var _0x21d7d0=0x0;_0x21d7d0<_0x163efc[_0xbfac('0x1a')];_0x21d7d0++){_0x2ff5e3['push'](getTimezoneData(_0x163efc[_0x21d7d0],tmp_voice_queues));}BPromise[_0xbfac('0x18')](_0x2ff5e3)[_0xbfac('0x19')](function(){_0x32e68b({'val':0x1});});})[_0xbfac('0x5d')](function(_0x451a88){logger['error'](_0x451a88[_0xbfac('0x56')]);_0x32e68b({'val':0x0});});});}function getTimezoneData(_0x575f9a,_0xce0566){return new Promise(function(_0x1c7b99,_0x1cd7c2){var _0x1da2e8=shared[_0xbfac('0x66')];var _0x1795ab=_0x1da2e8[_0x575f9a[_0xbfac('0x67')]];if(_[_0xbfac('0x1c')](_0x1795ab)){_0x1c7b99({'ret':0x1});}else{var _0x159d73=_0x1795ab[_0xbfac('0x68')];var _0x1ac4ed=squel['insert']()[_0xbfac('0x29')](_0xce0566)['set']('id',_0x575f9a['id'])[_0xbfac('0x69')]('offset',_0x159d73)[_0xbfac('0x69')](_0xbfac('0x67'),_0x575f9a[_0xbfac('0x67')])[_0xbfac('0x3f')]();return db['sequelize'][_0xbfac('0x5b')](_0x1ac4ed)[_0xbfac('0x5c')](function(_0x500b52){_0x1c7b99({'ret':0x1});})[_0xbfac('0x5d')](function(_0x56a6d9){logger[_0xbfac('0x55')](_0x56a6d9[_0xbfac('0x56')]);_0x1cd7c2({'ret':0x1});});}});}function handleTZQuery(_0x3f4b7e){logger['info'](_0x3f4b7e);return db[_0xbfac('0x5a')]['query'](_0x3f4b7e)['spread'](function(_0x4df827){})['catch'](function(_0x52411a){logger[_0xbfac('0x55')](_0x52411a[_0xbfac('0x56')]);});}function main(_0x59281c,_0x368ab7,_0x119391,_0x3f00a3){logger[_0xbfac('0x53')](_0xbfac('0x6a'),_0x59281c,JSON[_0xbfac('0x6b')](_0x368ab7));process[_0xbfac('0x6c')](_0xbfac('0x6d'));var _0x496863=_0x368ab7[_0xbfac('0x6e')];var _0x16e8b9=_[_0xbfac('0x6f')](_0x496863);var _0x46c340=_0x368ab7[_0xbfac('0x70')];var _0x14ee4f=path[_0xbfac('0x11')](config['root'],_0xbfac('0x71'),_0x46c340+'.csv');hasTZ=_[_0xbfac('0x4d')](_0x496863)[_0xbfac('0x72')](_0xbfac('0x67'));var _0x1d9d47=_[_0xbfac('0x4d')](_0x496863)[_0xbfac('0x11')]();logger[_0xbfac('0x53')]('header',_0x1d9d47);db['ContactItemType'][_0xbfac('0x15')]({'raw':!![],'attributes':['id',_0xbfac('0x73')]})[_0xbfac('0x19')](function(_0x574972){for(var _0x22df85=0x0;_0x22df85<_0x574972[_0xbfac('0x1a')];_0x22df85++){if(_0x574972[_0x22df85][_0xbfac('0x73')]in _0x496863){contactItemTypes[_0xbfac('0x17')](_0x574972[_0x22df85]);delete _0x16e8b9[_0x574972[_0x22df85][_0xbfac('0x73')]];hasAdditionalPhones=!![];}for(var _0x28076f in _0x496863){if(_0x574972[_0x22df85][_0xbfac('0x73')]+'_description'===_0x28076f){phoneDescriptions['push']({'itemTypeId':_0x574972[_0x22df85]['id'],'description':_0x28076f});delete _0x16e8b9[_0x28076f];}}}if(hasAdditionalPhones)_0x16e8b9[_0xbfac('0x16')]='';var _0x375f30=_[_0xbfac('0x4d')](_0x16e8b9)['join']();logger[_0xbfac('0x53')](_0xbfac('0x74'),_0x375f30);fs[_0xbfac('0x75')](_0x14ee4f,_0x375f30+'\x0a');Papa['parse'](fs[_0xbfac('0x76')](_0x59281c),{'header':!![],'skipEmptyLines':!![],'step':function(_0x2fee76,_0x2d3502){try{for(var _0x332a0b=0x0,_0x275644=[];_0x332a0b<_0x2fee76['data'][_0xbfac('0x1a')];_0x332a0b++){stats[_0xbfac('0x77')]+=0x1;if(_0x2fee76[_0xbfac('0x58')][_0x332a0b]){handleError(_0x2fee76[_0xbfac('0x78')][_0x332a0b],_0x2fee76['errors'][_0x332a0b]);}else{var _0x38f0c8=[];var _0xc41684=[];var _0x183514={};for(var _0xa8951a in _0x496863){let _0x17e1f3=contactItemTypes[_0xbfac('0x79')](_0x1279a8=>_0x1279a8['name']===_0xa8951a);let _0x4f0381=contactItemTypes[_0xbfac('0x79')](_0x482410=>_0x482410[_0xbfac('0x73')]+_0xbfac('0x7a')===_0xa8951a);if(_['isNil'](_0x17e1f3)&&_[_0xbfac('0x1c')](_0x4f0381)){if(_0x496863['hasOwnProperty'](_0xa8951a)){if(_0x2fee76[_0xbfac('0x78')][_0x332a0b][_0x496863[_0xa8951a]]){var _0x4b9c0c=_[_0xbfac('0x7b')](_0x2fee76[_0xbfac('0x78')][_0x332a0b][_0x496863[_0xa8951a]][_0xbfac('0x7c')](/"/g,'\x27'));switch(_0xa8951a){case _0xbfac('0x2b'):var _0x13f504=moment(_0x4b9c0c,'YYYY-MM-DD\x20HH:mm:ss',!![]);if(_0x13f504[_0xbfac('0x7d')]()){_0x275644[_0xbfac('0x17')]('\x22'+_0x4b9c0c+'\x22');}else{_0x38f0c8[_0xbfac('0x17')](_0xbfac('0x7e'));}break;case'priority':var _0x5c0688=parseInt(_0x4b9c0c);_0x4b9c0c=_['isNaN'](_0x5c0688)||_0x5c0688<0x0||_0x5c0688>0x4?_0x3f00a3?0x3:0x2:_0x5c0688;_0x275644[_0xbfac('0x17')]('\x22'+_0x4b9c0c+'\x22');break;case _0xbfac('0x30'):var _0x2aa933=parseInt(_0x4b9c0c);if(_['isNumber'](_0x2aa933)&&_[_0xbfac('0x72')](_0x119391,_0x2aa933)){_0x275644[_0xbfac('0x17')]('\x22'+_0x2aa933+'\x22');}else{_0x38f0c8['push'](_0xbfac('0x7f'));}break;case _0xbfac('0x80'):if(isEmail(_0x4b9c0c)){_0x275644['push']('\x22'+_0x4b9c0c+'\x22');}else{_0x38f0c8['push'](_0xbfac('0x81'));}break;case _0xbfac('0x82'):var _0x39fcab=moment(_0x4b9c0c,_0xbfac('0x83'),!![]);if(_0x39fcab[_0xbfac('0x7d')]()){_0x275644['push']('\x22'+_0x4b9c0c+'\x22');}else{_0x38f0c8[_0xbfac('0x17')](_0xbfac('0x84'));}break;case'dialTimezone':var _0x6fe5b2=shared[_0xbfac('0x66')];var _0x4a7c63=_0x6fe5b2[_0x4b9c0c];if(!_['isNil'](_0x4a7c63)){var _0x19b8e7=_0x4a7c63[_0xbfac('0x68')];_0x275644[_0xbfac('0x17')]('\x22'+_0x4b9c0c+'\x22');_0x275644['push']('\x22'+_0x19b8e7+'\x22');}break;default:_0x275644[_0xbfac('0x17')]('\x22'+_0x4b9c0c+'\x22');}}else{switch(_0xa8951a){case'firstName':case _0xbfac('0xf'):_0x38f0c8[_0xbfac('0x17')](_0xa8951a+_0xbfac('0x85'));break;default:_0x275644[_0xbfac('0x17')]('\x22\x22');}}}}else{var _0x3ee4c9='';if(!_['isNil'](_0x17e1f3)){if(!_0x183514[_0xbfac('0x86')](_0x17e1f3['id'])){if(!_[_0xbfac('0x1c')](_0x2fee76[_0xbfac('0x78')][_0x332a0b][_0x496863[_0xa8951a]])){var _0x4b9c0c=_[_0xbfac('0x7b')](_0x2fee76[_0xbfac('0x78')][_0x332a0b][_0x496863[_0xa8951a]][_0xbfac('0x7c')](/"/g,'\x27'));var _0x3ef609=phoneDescriptions[_0xbfac('0x79')](_0x1d550f=>_0x1d550f['itemTypeId']===_0x17e1f3['id']);if(!_['isNil'](_0x3ef609)){var _0x45f629=_[_0xbfac('0x7b')](_0x2fee76[_0xbfac('0x78')][_0x332a0b][_0x496863[_0x3ef609[_0xbfac('0x87')]]][_0xbfac('0x7c')](/"/g,'\x27'));if(!_[_0xbfac('0x1c')](_0x45f629))_0x4b9c0c=_0x4b9c0c+'§'+_0x45f629;}if(_0x3ee4c9=='')_0x3ee4c9=_0x4b9c0c;else _0x3ee4c9+='|'+_0x4b9c0c;}_0xc41684[_0xbfac('0x17')](_0x17e1f3['id']+':'+_0x3ee4c9);_0x183514[_0x17e1f3['id']]=0x1;}}}}if(hasAdditionalPhones){_0x275644[_0xbfac('0x17')]('\x22'+_0xc41684[_0xbfac('0x11')](';')+'\x22');}if(_0x38f0c8[_0xbfac('0x1a')]){handleError(_0x2fee76[_0xbfac('0x78')][_0x332a0b],{'code':_0xbfac('0x88'),'message':_0x38f0c8[_0xbfac('0x11')]()});}else{fs['appendFileSync'](_0x14ee4f,_0x275644[_0xbfac('0x11')]()+'\x0a');}_0x275644=[];}if(!(stats[_0xbfac('0x77')]%0xc8)){socket[_0xbfac('0x89')](_0xbfac('0x8a')+_0x46c340,stats);stats[_0xbfac('0x58')]=[];}}if(stopped){logger[_0xbfac('0x53')](_0xbfac('0x8b'));_0x2d3502[_0xbfac('0x8c')]();}}catch(_0xe2484d){handleError(_0x2fee76['data'][_0x332a0b],{'code':_0xbfac('0x8d'),'message':_0xe2484d[_0xbfac('0x56')]});logger['error'](_0xbfac('0x8e'),_0xe2484d['message']);}},'complete':function(){try{var _0x43d5c1=[];var _0x405932=[];var _0x3e9b91=_0xbfac('0x3c');if(_0x368ab7['duplicates']&&_0x368ab7['duplicates'][_0xbfac('0x1a')]){_0x3e9b91=_0xbfac('0x8f')+_0x46c340;_0x43d5c1['push'](_0xbfac('0x90')+_0x3e9b91+_0xbfac('0x91'));}tmp_campaigns=_0xbfac('0x92')+_0x46c340;tmp_voice_queues='voice_queues_'+_0x46c340;_0x405932[_0xbfac('0x17')](_0xbfac('0x90')+tmp_campaigns+_0xbfac('0x93'));_0x405932[_0xbfac('0x17')](_0xbfac('0x90')+tmp_voice_queues+_0xbfac('0x93'));BPromise[_0xbfac('0x94')](_0x405932,handleTZQuery)['then'](function(_0x29d04f){updateTzCampaigns(_0x368ab7['ListId'])[_0xbfac('0x19')](function(_0x2a2018){updateTzVoiceQueues(_0x368ab7[_0xbfac('0x2d')])['then'](function(_0x338cf2){if(hasTZ)_0x375f30=_0x375f30[_0xbfac('0x7c')](_0xbfac('0x67'),'dialTimezone,utcOffset');var _0x48f6f0=util['format'](_0xbfac('0x95'),_0x14ee4f,_0x3e9b91,_0x375f30,_0x368ab7[_0xbfac('0x2d')],_0x368ab7['CompanyId']||null,NOW,NOW);if(_['isNil'](_0x496863[_0xbfac('0x2b')])){_0x48f6f0+=',\x20scheduledAt\x20=\x20NOW()';}_0x43d5c1[_0xbfac('0x17')](_0x48f6f0);if(_0x368ab7[_0xbfac('0x96')]&&_0x368ab7[_0xbfac('0x96')][_0xbfac('0x1a')]){_0x43d5c1[_0xbfac('0x17')](insertCmContact(_0x368ab7[_0xbfac('0x2d')],_0x3e9b91,_0x368ab7[_0xbfac('0x96')],_0x496863));_0x43d5c1['push']('DROP\x20TABLE\x20'+_0x3e9b91+';');}BPromise[_0xbfac('0x94')](_0x43d5c1,handleQuery)[_0xbfac('0x19')](function(_0x285713){BPromise[_0xbfac('0x18')]([handleAdditionalPhones()])[_0xbfac('0x19')](function(){_0x43d5c1=[];for(var _0x513782=0x0;_0x513782<promisesAdditionalPhones[_0xbfac('0x1a')];_0x513782++){if(promisesAdditionalPhones[_0x513782][_0xbfac('0xf')]!='§'){_0x43d5c1['push'](createAdditionalPhone(promisesAdditionalPhones[_0x513782][_0xbfac('0x97')],promisesAdditionalPhones[_0x513782][_0xbfac('0x98')],promisesAdditionalPhones[_0x513782][_0xbfac('0xf')],promisesAdditionalPhones[_0x513782][_0xbfac('0x99')]));}}BPromise[_0xbfac('0x18')](_0x43d5c1)[_0xbfac('0x19')](function(){_0x43d5c1=[];if(hasTZ){_0x43d5c1[_0xbfac('0x17')](insertTzCmHopper(_0x368ab7['ListId'],_0xbfac('0x9a'),'voice_queues',_0xbfac('0x9b'),_0x3f00a3,tmp_voice_queues));_0x43d5c1[_0xbfac('0x17')](insertTzCmHopperBlack(_0x368ab7[_0xbfac('0x2d')],_0xbfac('0x9c'),_0xbfac('0x64'),_0xbfac('0x9b')));_0x43d5c1['push'](insertTzCmHopper(_0x368ab7['ListId'],_0xbfac('0x9d'),_0xbfac('0x60'),_0xbfac('0x9e'),_0x3f00a3,tmp_campaigns));_0x43d5c1[_0xbfac('0x17')](insertTzCmHopperBlack(_0x368ab7[_0xbfac('0x2d')],_0xbfac('0x9f'),_0xbfac('0x60'),_0xbfac('0x9e')));_0x43d5c1[_0xbfac('0x17')](insertCmHopperAdditionalPhones(_0x368ab7['ListId']));}else{_0x43d5c1['push'](insertCmHopper(_0x368ab7[_0xbfac('0x2d')],'voice_queues_has_cm_lists','voice_queues',_0xbfac('0x9b'),_0x3f00a3));_0x43d5c1[_0xbfac('0x17')](insertCmHopperBlack(_0x368ab7[_0xbfac('0x2d')],_0xbfac('0x9c'),_0xbfac('0x64'),'VoiceQueueId'));_0x43d5c1[_0xbfac('0x17')](insertCmHopper(_0x368ab7[_0xbfac('0x2d')],_0xbfac('0x9d'),_0xbfac('0x60'),_0xbfac('0x9e'),_0x3f00a3));_0x43d5c1[_0xbfac('0x17')](insertCmHopperBlack(_0x368ab7[_0xbfac('0x2d')],_0xbfac('0x9f'),_0xbfac('0x60'),_0xbfac('0x9e')));_0x43d5c1[_0xbfac('0x17')](insertCmHopperAdditionalPhones(_0x368ab7['ListId']));}_0x43d5c1[_0xbfac('0x17')]('DROP\x20TABLE\x20'+tmp_campaigns+';');_0x43d5c1['push'](_0xbfac('0xa0')+tmp_voice_queues+';');BPromise[_0xbfac('0x94')](_0x43d5c1,handleQuery)[_0xbfac('0x19')](function(_0x4b9107){stats[_0xbfac('0xa1')]=!![];stats[_0xbfac('0xa2')]=_0x368ab7[_0xbfac('0x96')]&&_0x368ab7[_0xbfac('0x96')]['length']?results[0x2][_0xbfac('0xa2')]:results[0x0][_0xbfac('0xa2')];socket[_0xbfac('0x89')](_0xbfac('0x8a')+_0x46c340,stats);fs[_0xbfac('0xa3')](_0x59281c);fs[_0xbfac('0xa3')](_0x14ee4f);process[_0xbfac('0x57')](0x0);})[_0xbfac('0x5d')](function(_0x238ed8){logger[_0xbfac('0x55')](_0x238ed8[_0xbfac('0x56')]);process['exit'](0x1);});});});})[_0xbfac('0x5d')](function(_0x35a060){logger[_0xbfac('0x55')](_0x35a060[_0xbfac('0x56')]);process[_0xbfac('0x57')](0x1);});});});});}catch(_0x5333c2){logger['error'](_0xbfac('0xa4'),_0x5333c2[_0xbfac('0x56')]);process[_0xbfac('0x57')](0x1);}},'error':function(_0x2f4964,_0x2f6f4a,_0x2effbf,_0x25ddc8){throw new Error(_0x25ddc8);}});});}function validate(){if(process[_0xbfac('0xa5')]&&process[_0xbfac('0xa5')][_0xbfac('0x1a')]<0x4){throw new Error('arguments\x20<filename>\x20<parameters>\x20<agents>');}var _0x3b604e=path['join'](config['root'],_0xbfac('0x71'),process[_0xbfac('0xa5')][0x2]);if(!fs[_0xbfac('0xa6')](_0x3b604e)){throw new Error('file\x20doesn\x27t\x20exists');}var _0x16e7eb={};try{_0x16e7eb=JSON[_0xbfac('0xa7')](process[_0xbfac('0xa5')][0x3]);if(!_0x16e7eb[_0xbfac('0x6e')]){throw new Error(_0xbfac('0xa8'));}if(!_0x16e7eb[_0xbfac('0x6e')][_0xbfac('0xf')]){throw new Error('phone\x20is\x20mandatory');}if(!_0x16e7eb[_0xbfac('0x6e')][_0xbfac('0xa9')]){throw new Error('firstName\x20is\x20mandatory');}var _0x37f0f8=0x0;if(_0x16e7eb['binding'][_0xbfac('0x30')]){_0x37f0f8=0x1;}if(!_0x16e7eb[_0xbfac('0x2d')]){throw new Error(_0xbfac('0xaa'));}}catch(_0x51e696){throw new Error(_0xbfac('0xab'));}var _0x47315d=[];try{_0x47315d=_['map'](JSON[_0xbfac('0xa7')](process[_0xbfac('0xa5')][0x4]),'id');}catch(_0x3841a6){logger[_0xbfac('0x53')](_0xbfac('0xac'));}main(_0x3b604e,_0x16e7eb,_0x47315d,_0x37f0f8);}validate();process['on'](_0xbfac('0xad'),handleStop);process['on'](_0xbfac('0xae'),handleUncaughtException);
\ No newline at end of file
index 5a1d722..818b30c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x505d=['socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss','YYYYMMDDHHmmss','test','phone','join','.id\x20=\x20','where','.dialCheckDuplicateType\x20IN\x20(','sequelize','query','select\x20*\x20from\x20','spread','length','isNil','AdditionalPhones','push','all','then','catch','message','split','filter','CmContactHasItem','findOne','update','create','inserted','CmContact','CmHopper','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','into','cm_hopper','fromQuery','scheduledat','ContactId','ListId','createdAt','priority','UserId','recallme','fields','from','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','\x22onlyIfOpen\x22','toString','cm_contacts.ListId','cm_contacts.createdAt','insert','cm_hopper_black','select','\x20=\x20?','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','updatedAt','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?','keys','CompanyId','ListId\x20=\x20?','id\x20IN\x20?','field','MIN(id)','group','info','exit','errors','code','error','main','send','start','clone','socket_timestamp','root','server/files/tmp','body','ContactItemType','findAll','name','header','writeFileSync','parse','createReadStream','data','rows','find','_description','trim','isValid','includes','agent\x20not\x20exists','email\x20wrong\x20format','dateOfBirth','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','\x20not\x20specified','hasOwnProperty','replace','itemTypeId','SystemRow','appendFileSync','emit','SystemError','step','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','LOAD\x20DATA\x20LOCAL\x20INFILE\x20\x27%s\x27\x20INTO\x20TABLE\x20%s\x20CHARACTER\x20SET\x20UTF8\x20FIELDS\x20TERMINATED\x20BY\x20\x27,\x27\x20ENCLOSED\x20BY\x20\x27\x22\x27\x20LINES\x20TERMINATED\x20BY\x20\x27\x0a\x27\x20IGNORE\x201\x20ROWS\x20(%s)\x20SET\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','DROP\x20TABLE\x20','finish','affectedRows','contact:import:','unlink','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','file\x20doesn\x27t\x20exists','binding','binding\x20doesn\x27t\x20exists','ListId\x20is\x20mandatory','body\x20id\x20mandatory','map','SIGINT','papaparse','util','bluebird','moment','squel','../../../mysqldb','../../../config/environment','../../../config/logger','import','defaults','localhost'];(function(_0x540e2c,_0x44b443){var _0x4c15e8=function(_0x864b01){while(--_0x864b01){_0x540e2c['push'](_0x540e2c['shift']());}};_0x4c15e8(++_0x44b443);}(_0x505d,0x93));var _0xd505=function(_0x220dbb,_0x99328d){_0x220dbb=_0x220dbb-0x0;var _0x2b77de=_0x505d[_0x220dbb];return _0x2b77de;};'use strict';var fs=require('fs');var path=require('path');var _=require('lodash');var Papa=require(_0xd505('0x0'));var util=require(_0xd505('0x1'));var BPromise=require(_0xd505('0x2'));var moment=require(_0xd505('0x3'));var squel=require(_0xd505('0x4'));var Redis=require('ioredis');var db=require(_0xd505('0x5'))['db'];var config=require(_0xd505('0x6'));var logger=require(_0xd505('0x7'))(_0xd505('0x8'));config['redis']=_[_0xd505('0x9')](config['redis'],{'host':_0xd505('0xa'),'port':0x18eb});var socket=require(_0xd505('0xb'))(new Redis(config['redis']));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()[_0xd505('0xc')](_0xd505('0xd'));var tempTableName='cm_contacts_temp_'+moment()['format'](_0xd505('0xe'));var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];function isEmail(_0x47e587){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))*$/[_0xd505('0xf')](_0x47e587);}function selectNotIn(_0x5d0112,_0xbe2b81,_0x57e18c,_0x2bb3d8,_0x524bb5){return squel['select']()['field'](_0xd505('0x10'))['from'](_0x2bb3d8)[_0xd505('0x11')](_0xbe2b81,null,_0xbe2b81+_0xd505('0x12')+_0x2bb3d8+'.'+_0x57e18c)['where'](_0x2bb3d8+'.'+_0x57e18c+'\x20=\x20'+_0x5d0112+'.'+_0x57e18c)[_0xd505('0x13')](_0xbe2b81+_0xd505('0x14')+_0x524bb5[_0xd505('0x11')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x29d0ad,_0x1fe089){promisesAdditionalPhones=[];promisesContact=[];return db[_0xd505('0x15')][_0xd505('0x16')](_0xd505('0x17')+tempTableName)[_0xd505('0x18')](function(_0x50e8d2){if(_0x50e8d2!==null){var _0x2b8094=[];for(var _0xf71091=0x0;_0xf71091<_0x50e8d2[_0xd505('0x19')];_0xf71091++){var _0x5b69cf=_0x50e8d2[_0xf71091];if(!_[_0xd505('0x1a')](_0x5b69cf['phone'])){if(!_[_0xd505('0x1a')](_0x5b69cf[_0xd505('0x1b')]))_0x2b8094['push'](insertAdditionalPhones(_0x5b69cf));promisesContact[_0xd505('0x1c')]({'contact':_0x5b69cf});}}}Promise[_0xd505('0x1d')](_0x2b8094)[_0xd505('0x1e')](function(){_0x29d0ad({'val':0x1});});})[_0xd505('0x1f')](function(_0x405471){logger['error'](_0x405471[_0xd505('0x20')]);});});}function insertAdditionalPhones(_0x17e5dc){return new Promise(function(_0x5229d2,_0x5ccf7e){var _0x48cf99=_0x17e5dc[_0xd505('0x1b')];if(_[_0xd505('0x1a')](_0x48cf99))_0x5ccf7e({'val':0x0});else{var _0x5f1eea=_0x48cf99[_0xd505('0x21')](';');var _0x570d6a=[];orderBy=0x0;for(var _0x5bdd88=0x0;_0x5bdd88<_0x5f1eea[_0xd505('0x19')];_0x5bdd88++){_0x570d6a[_0xd505('0x1c')](splitAdditionalPhone(_0x17e5dc['id'],_0x5f1eea[_0x5bdd88]));}Promise['all'](_0x570d6a)[_0xd505('0x1e')](function(){_0x5229d2({'val':_0x5f1eea[_0xd505('0x19')]});});}});}function splitAdditionalPhone(_0x4e885b,_0xfd478e){return new Promise(function(_0x2a0465,_0xe42477){var _0x55b70b=_0xfd478e[_0xd505('0x21')](':');var _0x404784=_0x55b70b[0x0];var _0x5e4317=_0x55b70b[0x1];if(_0x5e4317!==''){var _0x5daa3a=_0x5e4317[_0xd505('0x21')]('|');var _0x16be66=[];for(var _0xeb2af1=0x0;_0xeb2af1<_0x5daa3a[_0xd505('0x19')];_0xeb2af1++){if(_0x5daa3a[_0xeb2af1]!==''){var _0x217a4e=_[_0xd505('0x22')](promisesAdditionalPhones,{'contactId':_0x4e885b,'phone':_0x5daa3a[_0xeb2af1]});if(_0x217a4e[_0xd505('0x19')]==0x0){orderBy++;promisesAdditionalPhones['push']({'contactId':_0x4e885b,'contactTypeId':_0x404784,'phone':_0x5daa3a[_0xeb2af1],'orderBy':orderBy});}}}_0x2a0465({'ok':0x1});}else _0x2a0465({'res':0x0});});}function createAdditionalPhone(_0x3d360a,_0x2eec0c,_0x311533,_0x3a58d4){var _0x5894b2='';var _0x2d8d67='';var _0x38867e=_0x311533['split']('§');_0x5894b2=_0x38867e[0x0];if(_0x38867e['length']==0x2)_0x2d8d67=_0x38867e[0x1];return new Promise(function(_0x4c33ea,_0x2c010c){return db[_0xd505('0x23')][_0xd505('0x24')]({'where':{'CmContactId':_0x3d360a,'item':_0x5894b2}})['then'](function(_0x548934){if(_0x548934){return db['CmContactHasItem'][_0xd505('0x25')]({'ItemTypeId':_0x2eec0c,'description':_0x2d8d67,'OrderBy':_0x3a58d4},{'where':{'CmContactId':_0x3d360a,'item':_0x5894b2}})[_0xd505('0x1e')](function(_0x17b4a3){_0x4c33ea({'res':'updated'});});}else{return db[_0xd505('0x23')][_0xd505('0x26')]({'CmContactId':_0x3d360a,'item':_0x5894b2,'ItemTypeId':_0x2eec0c,'description':_0x2d8d67,'OrderBy':_0x3a58d4,'ItemClass':'PHONE'})[_0xd505('0x1e')](function(_0x2ff2ca){_0x4c33ea({'res':_0xd505('0x27')});});}});});}function updateContact(_0x42900b){return new Promise(function(_0x54e975,_0x596b04){var _0x45a6d1=_0x42900b['id'];delete _0x42900b['id'];return db[_0xd505('0x28')][_0xd505('0x25')](_0x42900b,{'where':{'id':_0x45a6d1}})[_0xd505('0x1e')](function(_0x2d8abd){updatedRows+=0x1;return db[_0xd505('0x29')]['update']({'phone':_0x42900b[_0xd505('0x10')]},{'where':{'ContactId':_0x45a6d1}})['then'](function(_0xbd015f){_0x54e975({'ret':'OK'});});});});}function insertCmHopper(_0x592898,_0xd98aa3,_0x103af1,_0x311b95,_0x227473){var _0x3f6cae=[_0xd505('0x2a'),_0xd505('0x2b'),_0xd505('0x2c'),'cm_contacts.ListId',_0xd98aa3+'.'+_0x311b95,'cm_contacts.createdAt',_0xd505('0x2d'),_0xd505('0x2e'),_0xd505('0x2f'),'\x22'+_0x227473+'\x22'];return squel['insert']()[_0xd505('0x30')](_0xd505('0x31'))[_0xd505('0x32')]([_0xd505('0x10'),_0xd505('0x33'),_0xd505('0x34'),_0xd505('0x35'),_0x311b95,_0xd505('0x36'),'updatedAt',_0xd505('0x37'),_0xd505('0x38'),_0xd505('0x39')],squel['select']()[_0xd505('0x3a')](_0x3f6cae)[_0xd505('0x3b')](_0xd98aa3)['join'](_0xd505('0x3c'),null,_0xd505('0x3d')+_0xd98aa3+_0xd505('0x3e'))['join'](_0x103af1,null,_0x103af1+_0xd505('0x12')+_0xd98aa3+'.'+_0x311b95)[_0xd505('0x13')](_0xd98aa3+_0xd505('0x3f'),_0x592898)[_0xd505('0x13')](_0xd505('0x40'),NOW)[_0xd505('0x13')](_0xd505('0x41'),selectNotIn(_0xd98aa3,_0x103af1,_0x311b95,'cm_hopper',[_0xd505('0x42'),_0xd505('0x43')]))['where'](_0xd505('0x41'),selectNotIn(_0xd98aa3,_0x103af1,_0x311b95,_0xd505('0x31'),[_0xd505('0x42')])))[_0xd505('0x44')]();}function insertCmHopperBlack(_0x96ee7,_0x32849d,_0x55d9ef,_0x530113){var _0xaa3331=[_0xd505('0x2a'),'cm_contacts.id',_0xd505('0x45'),_0x32849d+'.'+_0x530113,_0xd505('0x46'),'cm_contacts.updatedAt'];return squel[_0xd505('0x47')]()[_0xd505('0x30')](_0xd505('0x48'))[_0xd505('0x32')]([_0xd505('0x10'),_0xd505('0x34'),_0xd505('0x35'),_0x530113,_0xd505('0x36'),'updatedAt'],squel[_0xd505('0x49')]()[_0xd505('0x3a')](_0xaa3331)[_0xd505('0x3b')](_0x32849d)[_0xd505('0x11')](_0xd505('0x3c'),null,_0xd505('0x3d')+_0x32849d+'.CmListId')['join'](_0x55d9ef,null,_0x55d9ef+'.id\x20=\x20'+_0x32849d+'.'+_0x530113)['where'](_0x32849d+_0xd505('0x3f'),_0x96ee7)[_0xd505('0x13')]('cm_contacts.createdAt\x20=\x20?',NOW)[_0xd505('0x13')](_0xd505('0x41'),squel[_0xd505('0x49')]()['field']('phone')[_0xd505('0x3b')](_0xd505('0x48'))['where']('ListId\x20=\x20?',_0x96ee7)['where'](_0x530113+_0xd505('0x4a'),_0x32849d+'.'+_0x530113)))['toString']();}function insertCmHopperAdditionalPhones(_0x4f19ac){var _0x318ce8=[_0xd505('0x4b'),_0xd505('0x4c'),_0xd505('0x4d'),_0xd505('0x4e'),_0xd505('0x4f')];return squel['insert']()[_0xd505('0x30')](_0xd505('0x50'))[_0xd505('0x32')](['CmHopperId',_0xd505('0x10'),'OrderBy',_0xd505('0x36'),_0xd505('0x51')],squel[_0xd505('0x49')]()['fields'](_0x318ce8)[_0xd505('0x3b')]('cm_hopper')[_0xd505('0x11')](_0xd505('0x3c'),null,_0xd505('0x52'))[_0xd505('0x11')](_0xd505('0x53'),null,_0xd505('0x54'))['where'](_0xd505('0x55'),_0x4f19ac)[_0xd505('0x13')]('cm_contacts.createdAt\x20=\x20?',NOW))[_0xd505('0x44')]();}function insertCmContact(_0x489f66,_0x416d58,_0x410e35,_0x3486fd){var _0x39c05f=_['concat'](_[_0xd505('0x56')](_0x3486fd),['ListId',_0xd505('0x57'),'createdAt',_0xd505('0x51')]);return squel[_0xd505('0x47')]()[_0xd505('0x30')](_0xd505('0x3c'))[_0xd505('0x32')](_0x39c05f,squel['select']()['fields'](_0x39c05f)[_0xd505('0x3b')](_0x416d58)[_0xd505('0x13')]('('+_0x410e35[_0xd505('0x11')](',')+')\x20NOT\x20IN\x20?',squel['select']()[_0xd505('0x3a')](_0x410e35)[_0xd505('0x3b')](_0xd505('0x3c'))[_0xd505('0x13')](_0xd505('0x58'),_0x489f66))['where'](_0xd505('0x59'),squel[_0xd505('0x49')]()[_0xd505('0x5a')](_0xd505('0x5b'),'min_id')[_0xd505('0x3b')](_0x416d58)[_0xd505('0x5c')](_0x410e35['join'](','))))[_0xd505('0x44')]();}function handleStop(){logger[_0xd505('0x5d')]('Received\x20SIGINT');stopped=!![];}function handleUncaughtException(_0x337c4c){logger['error'](_0x337c4c['message']);process[_0xd505('0x5e')](0x1);}function handleError(_0x10e652,_0xab3413){stats[_0xd505('0x5f')][_0xd505('0x1c')]({'name':_0xab3413[_0xd505('0x60')],'message':_0xab3413[_0xd505('0x20')],'row':_0x10e652});}function handleQuery(_0x39b1fa){logger[_0xd505('0x5d')](_0x39b1fa);return db[_0xd505('0x15')][_0xd505('0x16')](_0x39b1fa)[_0xd505('0x18')](function(_0x261229){results[_0xd505('0x1c')](_0x261229);})[_0xd505('0x1f')](function(_0x15f77e){logger[_0xd505('0x61')](_0x15f77e[_0xd505('0x20')]);});}function main(_0x1bca5f,_0x171b73,_0x58dcc8,_0x2c9646){logger[_0xd505('0x5d')](_0xd505('0x62'),_0x1bca5f,JSON['stringify'](_0x171b73));process[_0xd505('0x63')](_0xd505('0x64'));var _0x52b11b=_0x171b73['binding'];var _0x2fabfc=_[_0xd505('0x65')](_0x52b11b);var _0x3a71e6=_0x171b73[_0xd505('0x66')];var _0x4b679f=path[_0xd505('0x11')](config[_0xd505('0x67')],_0xd505('0x68'),_0x3a71e6+'.csv');logger[_0xd505('0x5d')](_0xd505('0x69'),_0x171b73);db[_0xd505('0x6a')][_0xd505('0x6b')]({'raw':!![],'attributes':['id',_0xd505('0x6c')]})['then'](function(_0x29373d){for(var _0x255208=0x0;_0x255208<_0x29373d['length'];_0x255208++){if(_0x29373d[_0x255208]['name']in _0x52b11b){contactItemTypes[_0xd505('0x1c')](_0x29373d[_0x255208]);delete _0x2fabfc[_0x29373d[_0x255208][_0xd505('0x6c')]];hasAdditionalPhones=!![];}for(var _0x37a29f in _0x52b11b){if(_0x29373d[_0x255208]['name']+'_description'===_0x37a29f){phoneDescriptions[_0xd505('0x1c')]({'itemTypeId':_0x29373d[_0x255208]['id'],'description':_0x37a29f});delete _0x2fabfc[_0x37a29f];}}}if(hasAdditionalPhones)_0x2fabfc[_0xd505('0x1b')]='';var _0x48296b=_['keys'](_0x2fabfc)[_0xd505('0x11')]();logger[_0xd505('0x5d')](_0xd505('0x6d'),_0x48296b);fs[_0xd505('0x6e')](_0x4b679f,_0x48296b+'\x0a');Papa[_0xd505('0x6f')](fs[_0xd505('0x70')](_0x1bca5f),{'header':!![],'skipEmptyLines':!![],'step':function(_0x23d38f,_0x42554c){try{for(var _0x39df0e=0x0,_0x4a0f02=[];_0x39df0e<_0x23d38f[_0xd505('0x71')][_0xd505('0x19')];_0x39df0e++){stats[_0xd505('0x72')]+=0x1;if(_0x23d38f[_0xd505('0x5f')][_0x39df0e]){handleError(_0x23d38f[_0xd505('0x71')][_0x39df0e],_0x23d38f[_0xd505('0x5f')][_0x39df0e]);}else{var _0x4a0318=[];var _0x48281f=[];var _0x35b1d9={};for(var _0x26fe3c in _0x52b11b){let _0x84cfb6=contactItemTypes['find'](_0x974798=>_0x974798[_0xd505('0x6c')]===_0x26fe3c);let _0xc23a6=contactItemTypes[_0xd505('0x73')](_0x4563b0=>_0x4563b0['name']+_0xd505('0x74')===_0x26fe3c);if(_[_0xd505('0x1a')](_0x84cfb6)&&_['isNil'](_0xc23a6)){if(_0x52b11b['hasOwnProperty'](_0x26fe3c)){if(_0x23d38f['data'][_0x39df0e][_0x52b11b[_0x26fe3c]]){var _0xc5f2b7=_[_0xd505('0x75')](_0x23d38f[_0xd505('0x71')][_0x39df0e][_0x52b11b[_0x26fe3c]]['replace'](/"/g,'\x27'));switch(_0x26fe3c){case _0xd505('0x33'):var _0x584b52=moment(_0xc5f2b7,_0xd505('0xd'),!![]);if(_0x584b52[_0xd505('0x76')]()){_0x4a0f02[_0xd505('0x1c')]('\x22'+_0xc5f2b7+'\x22');}else{_0x4a0318['push']('scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)');}break;case'priority':var _0x516f35=parseInt(_0xc5f2b7);_0xc5f2b7=_['isNaN'](_0x516f35)||_0x516f35<0x0||_0x516f35>0x4?_0x2c9646?0x3:0x2:_0x516f35;_0x4a0f02[_0xd505('0x1c')]('\x22'+_0xc5f2b7+'\x22');break;case'UserId':var _0x2472e4=parseInt(_0xc5f2b7);if(_['isNumber'](_0x2472e4)&&_[_0xd505('0x77')](_0x58dcc8,_0x2472e4)){_0x4a0f02[_0xd505('0x1c')]('\x22'+_0x2472e4+'\x22');}else{_0x4a0318[_0xd505('0x1c')](_0xd505('0x78'));}break;case'email':if(isEmail(_0xc5f2b7)){_0x4a0f02[_0xd505('0x1c')]('\x22'+_0xc5f2b7+'\x22');}else{_0x4a0318[_0xd505('0x1c')](_0xd505('0x79'));}break;case _0xd505('0x7a'):var _0x40a359=moment(_0xc5f2b7,_0xd505('0x7b'),!![]);if(_0x40a359[_0xd505('0x76')]()){_0x4a0f02['push']('\x22'+_0xc5f2b7+'\x22');}else{_0x4a0318[_0xd505('0x1c')](_0xd505('0x7c'));}break;default:_0x4a0f02[_0xd505('0x1c')]('\x22'+_0xc5f2b7+'\x22');}}else{switch(_0x26fe3c){case'firstName':case _0xd505('0x10'):_0x4a0318[_0xd505('0x1c')](_0x26fe3c+_0xd505('0x7d'));break;default:_0x4a0f02[_0xd505('0x1c')]('\x22\x22');}}}}else{var _0x543d74='';if(!_[_0xd505('0x1a')](_0x84cfb6)){if(!_0x35b1d9[_0xd505('0x7e')](_0x84cfb6['id'])){for(var _0x51dee7=0x0;_0x51dee7<_0x52b11b[_0x26fe3c][_0xd505('0x19')];_0x51dee7++){var _0xc5f2b7=_[_0xd505('0x75')](_0x23d38f['data'][_0x39df0e][_0x52b11b[_0x26fe3c][_0x51dee7]][_0xd505('0x7f')](/"/g,'\x27'));var _0x59c4d4=phoneDescriptions['find'](_0x3b772d=>_0x3b772d[_0xd505('0x80')]===_0x84cfb6['id']);if(!_[_0xd505('0x1a')](_0x59c4d4)){var _0x1770a2=_[_0xd505('0x75')](_0x23d38f[_0xd505('0x71')][_0x39df0e][_0x52b11b[_0x59c4d4['description']][0x0]][_0xd505('0x7f')](/"/g,'\x27'));if(!_['isNil'](_0x1770a2))_0xc5f2b7=_0xc5f2b7+'§'+_0x1770a2;}if(_0x543d74=='')_0x543d74=_0xc5f2b7;else _0x543d74+='|'+_0xc5f2b7;}_0x48281f['push'](_0x84cfb6['id']+':'+_0x543d74);_0x35b1d9[_0x84cfb6['id']]=0x1;}}}}if(hasAdditionalPhones){_0x4a0f02[_0xd505('0x1c')]('\x22'+_0x48281f[_0xd505('0x11')](';')+'\x22');}if(_0x4a0318[_0xd505('0x19')]){handleError(_0x23d38f[_0xd505('0x71')][_0x39df0e],{'code':_0xd505('0x81'),'message':_0x4a0318[_0xd505('0x11')]()});}else{fs[_0xd505('0x82')](_0x4b679f,_0x4a0f02['join']()+'\x0a');}_0x4a0f02=[];}if(!(stats[_0xd505('0x72')]%0xc8)){socket[_0xd505('0x83')]('contact:import:'+_0x3a71e6,stats);stats[_0xd505('0x5f')]=[];}}if(stopped){logger['info']('Abort\x20parser');_0x42554c['abort']();}}catch(_0xc5c9a8){handleError(_0x23d38f[_0xd505('0x71')][_0x39df0e],{'code':_0xd505('0x84'),'message':_0xc5c9a8[_0xd505('0x20')]});logger[_0xd505('0x61')](_0xd505('0x85'),_0xc5c9a8[_0xd505('0x20')]);}},'complete':function(){try{var _0x2e8a65=[];var _0x114899=tempTableName;_0x2e8a65[_0xd505('0x1c')](_0xd505('0x86')+_0x114899+_0xd505('0x87'));logger[_0xd505('0x5d')]('CIS\x20len',contactItemTypes[_0xd505('0x19')]);var _0x5b3d6a=util[_0xd505('0xc')](_0xd505('0x88'),_0x4b679f,_0x114899,_0x48296b,_0x171b73[_0xd505('0x35')],_0x171b73[_0xd505('0x57')]||null,NOW,NOW);if(_[_0xd505('0x1a')](_0x52b11b[_0xd505('0x33')])){_0x5b3d6a+=_0xd505('0x89');}_0x2e8a65[_0xd505('0x1c')](_0x5b3d6a);BPromise[_0xd505('0x8a')](_0x2e8a65,handleQuery)[_0xd505('0x1e')](function(_0xef3a78){BPromise[_0xd505('0x1d')]([handleAdditionalPhones()])[_0xd505('0x1e')](function(){_0x2e8a65=[];for(var _0x51aadc=0x0;_0x51aadc<promisesContact[_0xd505('0x19')];_0x51aadc++){_0x2e8a65['push'](updateContact(promisesContact[_0x51aadc][_0xd505('0x8b')]));}BPromise[_0xd505('0x1d')](_0x2e8a65)[_0xd505('0x1e')](function(){_0x2e8a65=[];for(var _0x1962ec=0x0;_0x1962ec<promisesAdditionalPhones[_0xd505('0x19')];_0x1962ec++){_0x2e8a65[_0xd505('0x1c')](createAdditionalPhone(promisesAdditionalPhones[_0x1962ec][_0xd505('0x8c')],promisesAdditionalPhones[_0x1962ec][_0xd505('0x8d')],promisesAdditionalPhones[_0x1962ec]['phone'],promisesAdditionalPhones[_0x1962ec][_0xd505('0x8e')]));}BPromise['all'](_0x2e8a65)[_0xd505('0x1e')](function(){_0x2e8a65=[];_0x2e8a65[_0xd505('0x1c')](insertCmHopperAdditionalPhones(_0x171b73['ListId']));_0x2e8a65[_0xd505('0x1c')](_0xd505('0x8f')+_0x114899+';');BPromise[_0xd505('0x8a')](_0x2e8a65,handleQuery)[_0xd505('0x1e')](function(_0x113be8){stats[_0xd505('0x90')]=!![];stats[_0xd505('0x91')]=updatedRows;socket[_0xd505('0x83')](_0xd505('0x92')+_0x3a71e6,stats);fs[_0xd505('0x93')](_0x1bca5f);fs['unlink'](_0x4b679f);process[_0xd505('0x5e')](0x0);})[_0xd505('0x1f')](function(_0x2ef255){logger[_0xd505('0x61')](_0x2ef255[_0xd505('0x20')]);process[_0xd505('0x5e')](0x1);});});});});})['catch'](function(_0x374456){logger[_0xd505('0x61')](_0x374456[_0xd505('0x20')]);process[_0xd505('0x5e')](0x1);});}catch(_0x10470e){logger[_0xd505('0x61')](_0xd505('0x94'),_0x10470e['message']);process[_0xd505('0x5e')](0x1);}},'error':function(_0x4d1562,_0x3b553d,_0xf71b94,_0x2a68a5){throw new Error(_0x2a68a5);}});});}function validate(){if(process[_0xd505('0x95')]&&process[_0xd505('0x95')][_0xd505('0x19')]<0x4){throw new Error(_0xd505('0x96'));}var _0x169cf5=path[_0xd505('0x11')](config[_0xd505('0x67')],_0xd505('0x68'),process['argv'][0x2]);if(!fs['existsSync'](_0x169cf5)){throw new Error(_0xd505('0x97'));}var _0x403e1d={};try{_0x403e1d=JSON['parse'](process['argv'][0x3]);if(!_0x403e1d[_0xd505('0x98')]){throw new Error(_0xd505('0x99'));}var _0x332c5d=0x0;if(_0x403e1d[_0xd505('0x98')]['UserId']){_0x332c5d=0x1;}if(!_0x403e1d['ListId']){throw new Error(_0xd505('0x9a'));}}catch(_0x5d9fcc){throw new Error(_0xd505('0x9b'));}var _0xb0b52d=[];try{_0xb0b52d=_[_0xd505('0x9c')](JSON['parse'](process[_0xd505('0x95')][0x4]),'id');}catch(_0x4e7927){logger[_0xd505('0x5d')]('No\x20agent\x20available');}main(_0x169cf5,_0x403e1d,_0xb0b52d,_0x332c5d);}validate();process['on'](_0xd505('0x9d'),handleStop);process['on']('uncaughtException',handleUncaughtException);
\ No newline at end of file
+var _0x6bab=['cm_contacts_temp_','field','phone','from','join','.id\x20=\x20','where','\x20=\x20','.dialCheckDuplicateType\x20IN\x20(','sequelize','query','select\x20*\x20from\x20','spread','isNil','AdditionalPhones','push','all','catch','error','message','split','length','filter','CmContactHasItem','findOne','then','update','updated','create','PHONE','inserted','CmContact','CmHopper','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.ListId','cm_contacts.updatedAt','insert','into','cm_hopper','fromQuery','scheduledat','ListId','updatedAt','priority','UserId','select','fields','cm_contacts.ListId\x20=\x20','.CmListId','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22onlyIfOpen\x22','\x22always\x22','toString','cm_contacts.createdAt','ContactId','createdAt','cm_contacts','ListId\x20=\x20?','\x20=\x20?','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','cm_contact_has_items','cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId','cm_hopper.ListId\x20=\x20?','concat','CompanyId',')\x20NOT\x20IN\x20?','MIN(id)','min_id','group','info','Received\x20SIGINT','exit','errors','code','stringify','send','start','binding','socket_timestamp','root','server/files/tmp','.csv','ContactItemType','name','keys','header','parse','createReadStream','data','rows','find','trim','isNaN','includes','agent\x20not\x20exists','email\x20wrong\x20format','dateOfBirth','YYYY-MM-DD','isValid','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','hasOwnProperty','replace','itemTypeId','description','appendFileSync','emit','contact:import:','abort','SystemError','step','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','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','contactId','contactTypeId','finish','affectedRows','unlink','argv','existsSync','file\x20doesn\x27t\x20exists','binding\x20doesn\x27t\x20exists','ListId\x20is\x20mandatory','body\x20id\x20mandatory','No\x20agent\x20available','uncaughtException','path','lodash','papaparse','util','moment','squel','ioredis','../../../mysqldb','../../../config/environment','import','defaults','redis','localhost','socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x30217c,_0x1f03d8){var _0x5891eb=function(_0x3d3fa3){while(--_0x3d3fa3){_0x30217c['push'](_0x30217c['shift']());}};_0x5891eb(++_0x1f03d8);}(_0x6bab,0x1c7));var _0xb6ba=function(_0x323d87,_0x4ef3f9){_0x323d87=_0x323d87-0x0;var _0x5e8f74=_0x6bab[_0x323d87];return _0x5e8f74;};'use strict';var fs=require('fs');var path=require(_0xb6ba('0x0'));var _=require(_0xb6ba('0x1'));var Papa=require(_0xb6ba('0x2'));var util=require(_0xb6ba('0x3'));var BPromise=require('bluebird');var moment=require(_0xb6ba('0x4'));var squel=require(_0xb6ba('0x5'));var Redis=require(_0xb6ba('0x6'));var db=require(_0xb6ba('0x7'))['db'];var config=require(_0xb6ba('0x8'));var logger=require('../../../config/logger')(_0xb6ba('0x9'));config['redis']=_[_0xb6ba('0xa')](config[_0xb6ba('0xb')],{'host':_0xb6ba('0xc'),'port':0x18eb});var socket=require(_0xb6ba('0xd'))(new Redis(config[_0xb6ba('0xb')]));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()[_0xb6ba('0xe')](_0xb6ba('0xf'));var tempTableName=_0xb6ba('0x10')+moment()[_0xb6ba('0xe')]('YYYYMMDDHHmmss');var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];function isEmail(_0x16cb3a){return/^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/['test'](_0x16cb3a);}function selectNotIn(_0x5c4eac,_0x5c556d,_0x31e74b,_0x1dc636,_0x1cb42c){return squel['select']()[_0xb6ba('0x11')](_0xb6ba('0x12'))[_0xb6ba('0x13')](_0x1dc636)[_0xb6ba('0x14')](_0x5c556d,null,_0x5c556d+_0xb6ba('0x15')+_0x1dc636+'.'+_0x31e74b)[_0xb6ba('0x16')](_0x1dc636+'.'+_0x31e74b+_0xb6ba('0x17')+_0x5c4eac+'.'+_0x31e74b)[_0xb6ba('0x16')](_0x5c556d+_0xb6ba('0x18')+_0x1cb42c[_0xb6ba('0x14')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x210454,_0x24a901){promisesAdditionalPhones=[];promisesContact=[];return db[_0xb6ba('0x19')][_0xb6ba('0x1a')](_0xb6ba('0x1b')+tempTableName)[_0xb6ba('0x1c')](function(_0x3ec867){if(_0x3ec867!==null){var _0x3a0eb1=[];for(var _0xeefc49=0x0;_0xeefc49<_0x3ec867['length'];_0xeefc49++){var _0x35e47b=_0x3ec867[_0xeefc49];if(!_['isNil'](_0x35e47b['phone'])){if(!_[_0xb6ba('0x1d')](_0x35e47b[_0xb6ba('0x1e')]))_0x3a0eb1['push'](insertAdditionalPhones(_0x35e47b));promisesContact[_0xb6ba('0x1f')]({'contact':_0x35e47b});}}}Promise[_0xb6ba('0x20')](_0x3a0eb1)['then'](function(){_0x210454({'val':0x1});});})[_0xb6ba('0x21')](function(_0x3b03fb){logger[_0xb6ba('0x22')](_0x3b03fb[_0xb6ba('0x23')]);});});}function insertAdditionalPhones(_0x298207){return new Promise(function(_0x40b66e,_0x213a36){var _0x739ecf=_0x298207[_0xb6ba('0x1e')];if(_[_0xb6ba('0x1d')](_0x739ecf))_0x213a36({'val':0x0});else{var _0x41a5a4=_0x739ecf[_0xb6ba('0x24')](';');var _0x2350a5=[];orderBy=0x0;for(var _0x35dbc9=0x0;_0x35dbc9<_0x41a5a4[_0xb6ba('0x25')];_0x35dbc9++){_0x2350a5[_0xb6ba('0x1f')](splitAdditionalPhone(_0x298207['id'],_0x41a5a4[_0x35dbc9]));}Promise['all'](_0x2350a5)['then'](function(){_0x40b66e({'val':_0x41a5a4[_0xb6ba('0x25')]});});}});}function splitAdditionalPhone(_0x48d466,_0x5ae772){return new Promise(function(_0x150c66,_0xa0bf12){var _0x38c354=_0x5ae772[_0xb6ba('0x24')](':');var _0x4e4b6a=_0x38c354[0x0];var _0x5ce5d7=_0x38c354[0x1];if(_0x5ce5d7!==''){var _0x34fc23=_0x5ce5d7['split']('|');var _0x418394=[];for(var _0x253f32=0x0;_0x253f32<_0x34fc23[_0xb6ba('0x25')];_0x253f32++){if(_0x34fc23[_0x253f32]!==''){var _0xca634=_[_0xb6ba('0x26')](promisesAdditionalPhones,{'contactId':_0x48d466,'phone':_0x34fc23[_0x253f32]});if(_0xca634[_0xb6ba('0x25')]==0x0){orderBy++;promisesAdditionalPhones[_0xb6ba('0x1f')]({'contactId':_0x48d466,'contactTypeId':_0x4e4b6a,'phone':_0x34fc23[_0x253f32],'orderBy':orderBy});}}}_0x150c66({'ok':0x1});}else _0x150c66({'res':0x0});});}function createAdditionalPhone(_0x400d88,_0x4e1637,_0x2d5038,_0x5f0864){var _0x1534fb='';var _0x1041e8='';var _0x190ee3=_0x2d5038['split']('§');_0x1534fb=_0x190ee3[0x0];if(_0x190ee3[_0xb6ba('0x25')]==0x2)_0x1041e8=_0x190ee3[0x1];return new Promise(function(_0x576863,_0x21f27c){return db[_0xb6ba('0x27')][_0xb6ba('0x28')]({'where':{'CmContactId':_0x400d88,'item':_0x1534fb}})[_0xb6ba('0x29')](function(_0x4c7777){if(_0x4c7777){return db['CmContactHasItem'][_0xb6ba('0x2a')]({'ItemTypeId':_0x4e1637,'description':_0x1041e8,'OrderBy':_0x5f0864},{'where':{'CmContactId':_0x400d88,'item':_0x1534fb}})[_0xb6ba('0x29')](function(_0x196fea){_0x576863({'res':_0xb6ba('0x2b')});});}else{return db[_0xb6ba('0x27')][_0xb6ba('0x2c')]({'CmContactId':_0x400d88,'item':_0x1534fb,'ItemTypeId':_0x4e1637,'description':_0x1041e8,'OrderBy':_0x5f0864,'ItemClass':_0xb6ba('0x2d')})['then'](function(_0x49b35d){_0x576863({'res':_0xb6ba('0x2e')});});}});});}function updateContact(_0x7eb230){return new Promise(function(_0xf22fd7,_0x48eb13){var _0x3325c6=_0x7eb230['id'];delete _0x7eb230['id'];return db[_0xb6ba('0x2f')][_0xb6ba('0x2a')](_0x7eb230,{'where':{'id':_0x3325c6}})[_0xb6ba('0x29')](function(_0x11e2fb){updatedRows+=0x1;return db[_0xb6ba('0x30')][_0xb6ba('0x2a')]({'phone':_0x7eb230['phone']},{'where':{'ContactId':_0x3325c6}})[_0xb6ba('0x29')](function(_0xa136c6){_0xf22fd7({'ret':'OK'});});});});}function insertCmHopper(_0xd568c7,_0x2abaf3,_0x26d0ed,_0x89da2a,_0x10d4f9){var _0x561139=[_0xb6ba('0x31'),_0xb6ba('0x32'),_0xb6ba('0x33'),_0xb6ba('0x34'),_0x2abaf3+'.'+_0x89da2a,'cm_contacts.createdAt',_0xb6ba('0x35'),'cm_contacts.priority','cm_contacts.UserId','\x22'+_0x10d4f9+'\x22'];return squel[_0xb6ba('0x36')]()[_0xb6ba('0x37')](_0xb6ba('0x38'))[_0xb6ba('0x39')]([_0xb6ba('0x12'),_0xb6ba('0x3a'),'ContactId',_0xb6ba('0x3b'),_0x89da2a,'createdAt',_0xb6ba('0x3c'),_0xb6ba('0x3d'),_0xb6ba('0x3e'),'recallme'],squel[_0xb6ba('0x3f')]()[_0xb6ba('0x40')](_0x561139)[_0xb6ba('0x13')](_0x2abaf3)[_0xb6ba('0x14')]('cm_contacts',null,_0xb6ba('0x41')+_0x2abaf3+_0xb6ba('0x42'))[_0xb6ba('0x14')](_0x26d0ed,null,_0x26d0ed+_0xb6ba('0x15')+_0x2abaf3+'.'+_0x89da2a)[_0xb6ba('0x16')](_0x2abaf3+_0xb6ba('0x43'),_0xd568c7)[_0xb6ba('0x16')](_0xb6ba('0x44'),NOW)['where'](_0xb6ba('0x45'),selectNotIn(_0x2abaf3,_0x26d0ed,_0x89da2a,_0xb6ba('0x38'),['\x22always\x22',_0xb6ba('0x46')]))[_0xb6ba('0x16')](_0xb6ba('0x45'),selectNotIn(_0x2abaf3,_0x26d0ed,_0x89da2a,'cm_hopper',[_0xb6ba('0x47')])))[_0xb6ba('0x48')]();}function insertCmHopperBlack(_0x385278,_0x399326,_0x8ff870,_0x1c2def){var _0x5327f2=[_0xb6ba('0x31'),_0xb6ba('0x33'),_0xb6ba('0x34'),_0x399326+'.'+_0x1c2def,_0xb6ba('0x49'),_0xb6ba('0x35')];return squel['insert']()[_0xb6ba('0x37')]('cm_hopper_black')[_0xb6ba('0x39')](['phone',_0xb6ba('0x4a'),_0xb6ba('0x3b'),_0x1c2def,_0xb6ba('0x4b'),'updatedAt'],squel[_0xb6ba('0x3f')]()[_0xb6ba('0x40')](_0x5327f2)['from'](_0x399326)[_0xb6ba('0x14')](_0xb6ba('0x4c'),null,_0xb6ba('0x41')+_0x399326+'.CmListId')['join'](_0x8ff870,null,_0x8ff870+_0xb6ba('0x15')+_0x399326+'.'+_0x1c2def)[_0xb6ba('0x16')](_0x399326+_0xb6ba('0x43'),_0x385278)[_0xb6ba('0x16')](_0xb6ba('0x44'),NOW)[_0xb6ba('0x16')](_0xb6ba('0x45'),squel[_0xb6ba('0x3f')]()['field'](_0xb6ba('0x12'))[_0xb6ba('0x13')]('cm_hopper_black')['where'](_0xb6ba('0x4d'),_0x385278)[_0xb6ba('0x16')](_0x1c2def+_0xb6ba('0x4e'),_0x399326+'.'+_0x1c2def)))['toString']();}function insertCmHopperAdditionalPhones(_0x1e8bb5){var _0x1312d5=[_0xb6ba('0x4f'),_0xb6ba('0x50'),_0xb6ba('0x51'),_0xb6ba('0x52'),_0xb6ba('0x53')];return squel['insert']()[_0xb6ba('0x37')](_0xb6ba('0x54'))[_0xb6ba('0x39')]([_0xb6ba('0x55'),'phone',_0xb6ba('0x56'),'createdAt',_0xb6ba('0x3c')],squel[_0xb6ba('0x3f')]()[_0xb6ba('0x40')](_0x1312d5)[_0xb6ba('0x13')](_0xb6ba('0x38'))['join'](_0xb6ba('0x4c'),null,'cm_contacts.id\x20=\x20cm_hopper.ContactId')[_0xb6ba('0x14')](_0xb6ba('0x57'),null,_0xb6ba('0x58'))[_0xb6ba('0x16')](_0xb6ba('0x59'),_0x1e8bb5)[_0xb6ba('0x16')](_0xb6ba('0x44'),NOW))[_0xb6ba('0x48')]();}function insertCmContact(_0x540a62,_0x5d6fe6,_0x1b8766,_0x3ac57c){var _0x4e6ca2=_[_0xb6ba('0x5a')](_['keys'](_0x3ac57c),[_0xb6ba('0x3b'),_0xb6ba('0x5b'),'createdAt',_0xb6ba('0x3c')]);return squel[_0xb6ba('0x36')]()[_0xb6ba('0x37')](_0xb6ba('0x4c'))[_0xb6ba('0x39')](_0x4e6ca2,squel[_0xb6ba('0x3f')]()[_0xb6ba('0x40')](_0x4e6ca2)[_0xb6ba('0x13')](_0x5d6fe6)[_0xb6ba('0x16')]('('+_0x1b8766[_0xb6ba('0x14')](',')+_0xb6ba('0x5c'),squel[_0xb6ba('0x3f')]()['fields'](_0x1b8766)[_0xb6ba('0x13')](_0xb6ba('0x4c'))['where']('ListId\x20=\x20?',_0x540a62))[_0xb6ba('0x16')]('id\x20IN\x20?',squel[_0xb6ba('0x3f')]()[_0xb6ba('0x11')](_0xb6ba('0x5d'),_0xb6ba('0x5e'))['from'](_0x5d6fe6)[_0xb6ba('0x5f')](_0x1b8766['join'](','))))[_0xb6ba('0x48')]();}function handleStop(){logger[_0xb6ba('0x60')](_0xb6ba('0x61'));stopped=!![];}function handleUncaughtException(_0x1d298a){logger[_0xb6ba('0x22')](_0x1d298a['message']);process[_0xb6ba('0x62')](0x1);}function handleError(_0x5bde4b,_0x39bca7){stats[_0xb6ba('0x63')][_0xb6ba('0x1f')]({'name':_0x39bca7[_0xb6ba('0x64')],'message':_0x39bca7[_0xb6ba('0x23')],'row':_0x5bde4b});}function handleQuery(_0x2f35c8){logger[_0xb6ba('0x60')](_0x2f35c8);return db[_0xb6ba('0x19')][_0xb6ba('0x1a')](_0x2f35c8)[_0xb6ba('0x1c')](function(_0x162a4a){results[_0xb6ba('0x1f')](_0x162a4a);})['catch'](function(_0x12d4a0){logger[_0xb6ba('0x22')](_0x12d4a0[_0xb6ba('0x23')]);});}function main(_0x4b211b,_0x5de6aa,_0x3d6974,_0x4bce5d){logger[_0xb6ba('0x60')]('main',_0x4b211b,JSON[_0xb6ba('0x65')](_0x5de6aa));process[_0xb6ba('0x66')](_0xb6ba('0x67'));var _0xdaff5f=_0x5de6aa[_0xb6ba('0x68')];var _0x57a738=_['clone'](_0xdaff5f);var _0x1e0ef6=_0x5de6aa[_0xb6ba('0x69')];var _0x57be91=path[_0xb6ba('0x14')](config[_0xb6ba('0x6a')],_0xb6ba('0x6b'),_0x1e0ef6+_0xb6ba('0x6c'));logger[_0xb6ba('0x60')]('body',_0x5de6aa);db[_0xb6ba('0x6d')]['findAll']({'raw':!![],'attributes':['id',_0xb6ba('0x6e')]})[_0xb6ba('0x29')](function(_0x243350){for(var _0x4ab998=0x0;_0x4ab998<_0x243350[_0xb6ba('0x25')];_0x4ab998++){if(_0x243350[_0x4ab998][_0xb6ba('0x6e')]in _0xdaff5f){contactItemTypes[_0xb6ba('0x1f')](_0x243350[_0x4ab998]);delete _0x57a738[_0x243350[_0x4ab998][_0xb6ba('0x6e')]];hasAdditionalPhones=!![];}for(var _0x77c6bf in _0xdaff5f){if(_0x243350[_0x4ab998][_0xb6ba('0x6e')]+'_description'===_0x77c6bf){phoneDescriptions[_0xb6ba('0x1f')]({'itemTypeId':_0x243350[_0x4ab998]['id'],'description':_0x77c6bf});delete _0x57a738[_0x77c6bf];}}}if(hasAdditionalPhones)_0x57a738[_0xb6ba('0x1e')]='';var _0x451d26=_[_0xb6ba('0x6f')](_0x57a738)[_0xb6ba('0x14')]();logger['info'](_0xb6ba('0x70'),_0x451d26);fs['writeFileSync'](_0x57be91,_0x451d26+'\x0a');Papa[_0xb6ba('0x71')](fs[_0xb6ba('0x72')](_0x4b211b),{'header':!![],'skipEmptyLines':!![],'step':function(_0x52487f,_0x2da7c2){try{for(var _0x37133c=0x0,_0x2099de=[];_0x37133c<_0x52487f[_0xb6ba('0x73')][_0xb6ba('0x25')];_0x37133c++){stats[_0xb6ba('0x74')]+=0x1;if(_0x52487f['errors'][_0x37133c]){handleError(_0x52487f[_0xb6ba('0x73')][_0x37133c],_0x52487f[_0xb6ba('0x63')][_0x37133c]);}else{var _0x135f4c=[];var _0x409139=[];var _0x1089b3={};for(var _0x13619c in _0xdaff5f){let _0x53bf59=contactItemTypes[_0xb6ba('0x75')](_0x481230=>_0x481230['name']===_0x13619c);let _0xbabc19=contactItemTypes[_0xb6ba('0x75')](_0x175d95=>_0x175d95[_0xb6ba('0x6e')]+'_description'===_0x13619c);if(_[_0xb6ba('0x1d')](_0x53bf59)&&_[_0xb6ba('0x1d')](_0xbabc19)){if(_0xdaff5f['hasOwnProperty'](_0x13619c)){if(_0x52487f[_0xb6ba('0x73')][_0x37133c][_0xdaff5f[_0x13619c]]){var _0x174c8d=_[_0xb6ba('0x76')](_0x52487f['data'][_0x37133c][_0xdaff5f[_0x13619c]]['replace'](/"/g,'\x27'));switch(_0x13619c){case'scheduledat':var _0x46489f=moment(_0x174c8d,'YYYY-MM-DD\x20HH:mm:ss',!![]);if(_0x46489f['isValid']()){_0x2099de['push']('\x22'+_0x174c8d+'\x22');}else{_0x135f4c['push']('scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)');}break;case _0xb6ba('0x3d'):var _0x61de05=parseInt(_0x174c8d);_0x174c8d=_[_0xb6ba('0x77')](_0x61de05)||_0x61de05<0x0||_0x61de05>0x4?_0x4bce5d?0x3:0x2:_0x61de05;_0x2099de[_0xb6ba('0x1f')]('\x22'+_0x174c8d+'\x22');break;case _0xb6ba('0x3e'):var _0x904623=parseInt(_0x174c8d);if(_['isNumber'](_0x904623)&&_[_0xb6ba('0x78')](_0x3d6974,_0x904623)){_0x2099de['push']('\x22'+_0x904623+'\x22');}else{_0x135f4c[_0xb6ba('0x1f')](_0xb6ba('0x79'));}break;case'email':if(isEmail(_0x174c8d)){_0x2099de[_0xb6ba('0x1f')]('\x22'+_0x174c8d+'\x22');}else{_0x135f4c[_0xb6ba('0x1f')](_0xb6ba('0x7a'));}break;case _0xb6ba('0x7b'):var _0x160f6a=moment(_0x174c8d,_0xb6ba('0x7c'),!![]);if(_0x160f6a[_0xb6ba('0x7d')]()){_0x2099de[_0xb6ba('0x1f')]('\x22'+_0x174c8d+'\x22');}else{_0x135f4c[_0xb6ba('0x1f')](_0xb6ba('0x7e'));}break;default:_0x2099de[_0xb6ba('0x1f')]('\x22'+_0x174c8d+'\x22');}}else{switch(_0x13619c){case _0xb6ba('0x7f'):case _0xb6ba('0x12'):_0x135f4c[_0xb6ba('0x1f')](_0x13619c+'\x20not\x20specified');break;default:_0x2099de[_0xb6ba('0x1f')]('\x22\x22');}}}}else{var _0x449120='';if(!_['isNil'](_0x53bf59)){if(!_0x1089b3[_0xb6ba('0x80')](_0x53bf59['id'])){for(var _0x38e738=0x0;_0x38e738<_0xdaff5f[_0x13619c][_0xb6ba('0x25')];_0x38e738++){var _0x174c8d=_[_0xb6ba('0x76')](_0x52487f[_0xb6ba('0x73')][_0x37133c][_0xdaff5f[_0x13619c][_0x38e738]][_0xb6ba('0x81')](/"/g,'\x27'));var _0x176a99=phoneDescriptions[_0xb6ba('0x75')](_0xa0c1b4=>_0xa0c1b4[_0xb6ba('0x82')]===_0x53bf59['id']);if(!_['isNil'](_0x176a99)){var _0x1fd7ec=_[_0xb6ba('0x76')](_0x52487f[_0xb6ba('0x73')][_0x37133c][_0xdaff5f[_0x176a99[_0xb6ba('0x83')]][0x0]]['replace'](/"/g,'\x27'));if(!_['isNil'](_0x1fd7ec))_0x174c8d=_0x174c8d+'§'+_0x1fd7ec;}if(_0x449120=='')_0x449120=_0x174c8d;else _0x449120+='|'+_0x174c8d;}_0x409139[_0xb6ba('0x1f')](_0x53bf59['id']+':'+_0x449120);_0x1089b3[_0x53bf59['id']]=0x1;}}}}if(hasAdditionalPhones){_0x2099de[_0xb6ba('0x1f')]('\x22'+_0x409139[_0xb6ba('0x14')](';')+'\x22');}if(_0x135f4c[_0xb6ba('0x25')]){handleError(_0x52487f['data'][_0x37133c],{'code':'SystemRow','message':_0x135f4c[_0xb6ba('0x14')]()});}else{fs[_0xb6ba('0x84')](_0x57be91,_0x2099de[_0xb6ba('0x14')]()+'\x0a');}_0x2099de=[];}if(!(stats[_0xb6ba('0x74')]%0xc8)){socket[_0xb6ba('0x85')](_0xb6ba('0x86')+_0x1e0ef6,stats);stats[_0xb6ba('0x63')]=[];}}if(stopped){logger[_0xb6ba('0x60')]('Abort\x20parser');_0x2da7c2[_0xb6ba('0x87')]();}}catch(_0x1023a2){handleError(_0x52487f['data'][_0x37133c],{'code':_0xb6ba('0x88'),'message':_0x1023a2[_0xb6ba('0x23')]});logger[_0xb6ba('0x22')](_0xb6ba('0x89'),_0x1023a2[_0xb6ba('0x23')]);}},'complete':function(){try{var _0x12e283=[];var _0x87547f=tempTableName;_0x12e283[_0xb6ba('0x1f')](_0xb6ba('0x8a')+_0x87547f+_0xb6ba('0x8b'));logger[_0xb6ba('0x60')](_0xb6ba('0x8c'),contactItemTypes[_0xb6ba('0x25')]);var _0x551293=util[_0xb6ba('0xe')](_0xb6ba('0x8d'),_0x57be91,_0x87547f,_0x451d26,_0x5de6aa[_0xb6ba('0x3b')],_0x5de6aa['CompanyId']||null,NOW,NOW);if(_[_0xb6ba('0x1d')](_0xdaff5f[_0xb6ba('0x3a')])){_0x551293+=_0xb6ba('0x8e');}_0x12e283[_0xb6ba('0x1f')](_0x551293);BPromise[_0xb6ba('0x8f')](_0x12e283,handleQuery)[_0xb6ba('0x29')](function(_0x11f79c){BPromise[_0xb6ba('0x20')]([handleAdditionalPhones()])[_0xb6ba('0x29')](function(){_0x12e283=[];for(var _0x5262e8=0x0;_0x5262e8<promisesContact['length'];_0x5262e8++){_0x12e283['push'](updateContact(promisesContact[_0x5262e8]['contact']));}BPromise[_0xb6ba('0x20')](_0x12e283)[_0xb6ba('0x29')](function(){_0x12e283=[];for(var _0x13f7d5=0x0;_0x13f7d5<promisesAdditionalPhones[_0xb6ba('0x25')];_0x13f7d5++){_0x12e283[_0xb6ba('0x1f')](createAdditionalPhone(promisesAdditionalPhones[_0x13f7d5][_0xb6ba('0x90')],promisesAdditionalPhones[_0x13f7d5][_0xb6ba('0x91')],promisesAdditionalPhones[_0x13f7d5][_0xb6ba('0x12')],promisesAdditionalPhones[_0x13f7d5]['orderBy']));}BPromise['all'](_0x12e283)[_0xb6ba('0x29')](function(){_0x12e283=[];_0x12e283[_0xb6ba('0x1f')](insertCmHopperAdditionalPhones(_0x5de6aa['ListId']));_0x12e283[_0xb6ba('0x1f')]('DROP\x20TABLE\x20'+_0x87547f+';');BPromise[_0xb6ba('0x8f')](_0x12e283,handleQuery)['then'](function(_0x519d25){stats[_0xb6ba('0x92')]=!![];stats[_0xb6ba('0x93')]=updatedRows;socket[_0xb6ba('0x85')](_0xb6ba('0x86')+_0x1e0ef6,stats);fs[_0xb6ba('0x94')](_0x4b211b);fs[_0xb6ba('0x94')](_0x57be91);process['exit'](0x0);})[_0xb6ba('0x21')](function(_0x37b925){logger[_0xb6ba('0x22')](_0x37b925[_0xb6ba('0x23')]);process[_0xb6ba('0x62')](0x1);});});});});})[_0xb6ba('0x21')](function(_0x1c2bae){logger['error'](_0x1c2bae[_0xb6ba('0x23')]);process['exit'](0x1);});}catch(_0xf1f742){logger['error']('complete',_0xf1f742[_0xb6ba('0x23')]);process[_0xb6ba('0x62')](0x1);}},'error':function(_0x38ee62,_0x522f3b,_0x447c92,_0x251d8e){throw new Error(_0x251d8e);}});});}function validate(){if(process['argv']&&process[_0xb6ba('0x95')]['length']<0x4){throw new Error('arguments\x20<filename>\x20<parameters>\x20<agents>');}var _0x1506f8=path[_0xb6ba('0x14')](config[_0xb6ba('0x6a')],_0xb6ba('0x6b'),process[_0xb6ba('0x95')][0x2]);if(!fs[_0xb6ba('0x96')](_0x1506f8)){throw new Error(_0xb6ba('0x97'));}var _0x5a3e89={};try{_0x5a3e89=JSON[_0xb6ba('0x71')](process['argv'][0x3]);if(!_0x5a3e89[_0xb6ba('0x68')]){throw new Error(_0xb6ba('0x98'));}var _0x3282e4=0x0;if(_0x5a3e89[_0xb6ba('0x68')]['UserId']){_0x3282e4=0x1;}if(!_0x5a3e89[_0xb6ba('0x3b')]){throw new Error(_0xb6ba('0x99'));}}catch(_0x3ae8d3){throw new Error(_0xb6ba('0x9a'));}var _0x4cb90b=[];try{_0x4cb90b=_['map'](JSON[_0xb6ba('0x71')](process[_0xb6ba('0x95')][0x4]),'id');}catch(_0x2f86d9){logger[_0xb6ba('0x60')](_0xb6ba('0x9b'));}main(_0x1506f8,_0x5a3e89,_0x4cb90b,_0x3282e4);}validate();process['on']('SIGINT',handleStop);process['on'](_0xb6ba('0x9c'),handleUncaughtException);
\ No newline at end of file
index 5ca5e0e..b25a091 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3742=['variable','queue','outbound','string','destcalleridnum','***\x20Call\x20Info\x20***','keyValue','calleridnum','calleridname','Call\x20To','destexten','Queue','UniqueId','uniqueid','Date','agentcalledAt','Agent\x20Name','destcalleridname','Agent\x20Number','***\x20Time\x20Info\x20***','Agent\x20Ring','Agent\x20Connect','agentconnectAt','Agent\x20Complete','agentcompleteAt','Hold\x20Time','holdtime','Talk\x20Time','Called\x20Number','Member\x20Name','starttime','Answer\x20Time','answertime','endtime','Duration','Billable\x20Time','billableseconds','[xCALLY\x20Ticket]','voice','toLowerCase','inbound','push'];(function(_0x36f96f,_0x4139cb){var _0x1b27a8=function(_0xe2e33a){while(--_0xe2e33a){_0x36f96f['push'](_0x36f96f['shift']());}};_0x1b27a8(++_0x4139cb);}(_0x3742,0x175));var _0x2374=function(_0x20a8e4,_0x41ce9d){_0x20a8e4=_0x20a8e4-0x0;var _0x50d35d=_0x3742[_0x20a8e4];return _0x50d35d;};'use strict';exports['getSubjects']=function(_0x36b72f,_0x7fa3a2){var _0x5a7248=[{'type':'string','content':_0x2374('0x0'),'variableName':null}];switch(_0x36b72f['toLowerCase']()){case _0x2374('0x1'):switch(_0x7fa3a2[_0x2374('0x2')]()){case _0x2374('0x3'):_0x5a7248[_0x2374('0x4')]({'type':_0x2374('0x5'),'content':'','variableName':_0x2374('0x6')});_0x5a7248[_0x2374('0x4')]({'type':_0x2374('0x5'),'content':'','variableName':'calleridnum'});break;case _0x2374('0x7'):_0x5a7248[_0x2374('0x4')]({'type':_0x2374('0x8'),'content':'Outbound\x20Call','variableName':null});_0x5a7248['push']({'type':_0x2374('0x5'),'content':'','variableName':_0x2374('0x9')});break;}}return _0x5a7248;};exports['getDescriptions']=function(_0x30df34,_0x238d4b){var _0xa9d137=[];switch(_0x30df34[_0x2374('0x2')]()){case _0x2374('0x1'):switch(_0x238d4b[_0x2374('0x2')]()){case _0x2374('0x3'):_0xa9d137=[{'type':_0x2374('0x8'),'content':_0x2374('0xa'),'key':null,'keyType':null,'variableName':null},{'type':_0x2374('0xb'),'content':'','key':'Caller\x20Number','keyType':_0x2374('0x5'),'variableName':_0x2374('0xc')},{'type':_0x2374('0xb'),'content':'','key':'Caller\x20Name','keyType':_0x2374('0x5'),'variableName':_0x2374('0xd')},{'type':_0x2374('0xb'),'content':'','key':_0x2374('0xe'),'keyType':_0x2374('0x5'),'variableName':_0x2374('0xf')},{'type':'keyValue','content':'','key':_0x2374('0x10'),'keyType':_0x2374('0x5'),'variableName':_0x2374('0x6')},{'type':_0x2374('0xb'),'content':'','key':_0x2374('0x11'),'keyType':_0x2374('0x5'),'variableName':_0x2374('0x12')},{'type':_0x2374('0xb'),'content':'','key':_0x2374('0x13'),'keyType':_0x2374('0x5'),'variableName':_0x2374('0x14')},{'type':_0x2374('0x8'),'content':'***\x20Agent\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':_0x2374('0xb'),'content':'','key':_0x2374('0x15'),'keyType':_0x2374('0x5'),'variableName':_0x2374('0x16')},{'type':_0x2374('0xb'),'content':'','key':_0x2374('0x17'),'keyType':_0x2374('0x5'),'variableName':_0x2374('0x9')},{'type':_0x2374('0x8'),'content':_0x2374('0x18'),'key':null,'keyType':null,'variableName':null},{'type':_0x2374('0xb'),'content':'','key':_0x2374('0x19'),'keyType':'variable','variableName':_0x2374('0x14')},{'type':_0x2374('0xb'),'content':'','key':_0x2374('0x1a'),'keyType':'variable','variableName':_0x2374('0x1b')},{'type':_0x2374('0xb'),'content':'','key':_0x2374('0x1c'),'keyType':_0x2374('0x5'),'variableName':_0x2374('0x1d')},{'type':'keyValue','content':'','key':_0x2374('0x1e'),'keyType':'variable','variableName':_0x2374('0x1f')},{'type':_0x2374('0xb'),'content':'','key':_0x2374('0x20'),'keyType':_0x2374('0x5'),'variableName':'talktime'}];break;case _0x2374('0x7'):_0xa9d137=[{'type':'string','content':_0x2374('0xa'),'variableName':null},{'type':_0x2374('0xb'),'content':'','key':_0x2374('0x21'),'keyType':_0x2374('0x5'),'keyContent':'','variableName':_0x2374('0x9')},{'type':_0x2374('0xb'),'content':'','key':_0x2374('0x22'),'keyType':'variable','keyContent':'','variableName':'membername'},{'type':_0x2374('0xb'),'content':'','key':_0x2374('0x11'),'keyType':_0x2374('0x5'),'keyContent':'','variableName':_0x2374('0x12')},{'type':'keyValue','content':'','key':_0x2374('0x13'),'keyType':_0x2374('0x5'),'keyContent':'','variableName':_0x2374('0x23')},{'type':_0x2374('0x8'),'content':'***\x20Time\x20Info\x20***'},{'type':_0x2374('0xb'),'content':'','key':_0x2374('0x24'),'keyType':'variable','keyContent':'','variableName':_0x2374('0x25')},{'type':'keyValue','content':'','key':'Complete\x20Time','keyType':'variable','keyContent':'','variableName':_0x2374('0x26')},{'type':_0x2374('0xb'),'content':'','key':_0x2374('0x27'),'keyType':_0x2374('0x5'),'keyContent':'','variableName':'duration'},{'type':_0x2374('0xb'),'content':'','key':_0x2374('0x28'),'keyType':_0x2374('0x5'),'keyContent':'','variableName':_0x2374('0x29')}];break;}}return _0xa9d137;};
\ No newline at end of file
+var _0x76d0=['***\x20Call\x20Info\x20***','keyValue','Caller\x20Number','Caller\x20Name','calleridname','destexten','Queue','UniqueId','uniqueid','Date','agentcalledAt','***\x20Agent\x20Info\x20***','destcalleridname','***\x20Time\x20Info\x20***','Agent\x20Ring','Agent\x20Connect','agentconnectAt','agentcompleteAt','Hold\x20Time','holdtime','Talk\x20Time','Called\x20Number','membername','starttime','Answer\x20Time','answertime','Complete\x20Time','endtime','Duration','Billable\x20Time','getSubjects','string','toLowerCase','voice','inbound','push','variable','queue','calleridnum','outbound','Outbound\x20Call','destcalleridnum','getDescriptions'];(function(_0x3b956b,_0x2a9d86){var _0x1fe6a8=function(_0x4d99c0){while(--_0x4d99c0){_0x3b956b['push'](_0x3b956b['shift']());}};_0x1fe6a8(++_0x2a9d86);}(_0x76d0,0x176));var _0x076d=function(_0x2a06e4,_0x499578){_0x2a06e4=_0x2a06e4-0x0;var _0x1046cf=_0x76d0[_0x2a06e4];return _0x1046cf;};'use strict';exports[_0x076d('0x0')]=function(_0x8eb35a,_0x22a790){var _0x2a30f3=[{'type':_0x076d('0x1'),'content':'[xCALLY\x20Ticket]','variableName':null}];switch(_0x8eb35a[_0x076d('0x2')]()){case _0x076d('0x3'):switch(_0x22a790[_0x076d('0x2')]()){case _0x076d('0x4'):_0x2a30f3[_0x076d('0x5')]({'type':_0x076d('0x6'),'content':'','variableName':_0x076d('0x7')});_0x2a30f3[_0x076d('0x5')]({'type':_0x076d('0x6'),'content':'','variableName':_0x076d('0x8')});break;case _0x076d('0x9'):_0x2a30f3['push']({'type':_0x076d('0x1'),'content':_0x076d('0xa'),'variableName':null});_0x2a30f3[_0x076d('0x5')]({'type':_0x076d('0x6'),'content':'','variableName':_0x076d('0xb')});break;}}return _0x2a30f3;};exports[_0x076d('0xc')]=function(_0x49b1bb,_0x48486a){var _0x25ad81=[];switch(_0x49b1bb['toLowerCase']()){case _0x076d('0x3'):switch(_0x48486a['toLowerCase']()){case _0x076d('0x4'):_0x25ad81=[{'type':_0x076d('0x1'),'content':_0x076d('0xd'),'key':null,'keyType':null,'variableName':null},{'type':_0x076d('0xe'),'content':'','key':_0x076d('0xf'),'keyType':_0x076d('0x6'),'variableName':'calleridnum'},{'type':'keyValue','content':'','key':_0x076d('0x10'),'keyType':_0x076d('0x6'),'variableName':_0x076d('0x11')},{'type':_0x076d('0xe'),'content':'','key':'Call\x20To','keyType':_0x076d('0x6'),'variableName':_0x076d('0x12')},{'type':_0x076d('0xe'),'content':'','key':_0x076d('0x13'),'keyType':_0x076d('0x6'),'variableName':_0x076d('0x7')},{'type':_0x076d('0xe'),'content':'','key':_0x076d('0x14'),'keyType':'variable','variableName':_0x076d('0x15')},{'type':_0x076d('0xe'),'content':'','key':_0x076d('0x16'),'keyType':_0x076d('0x6'),'variableName':_0x076d('0x17')},{'type':_0x076d('0x1'),'content':_0x076d('0x18'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':'Agent\x20Name','keyType':_0x076d('0x6'),'variableName':_0x076d('0x19')},{'type':_0x076d('0xe'),'content':'','key':'Agent\x20Number','keyType':_0x076d('0x6'),'variableName':_0x076d('0xb')},{'type':_0x076d('0x1'),'content':_0x076d('0x1a'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0x076d('0x1b'),'keyType':'variable','variableName':'agentcalledAt'},{'type':'keyValue','content':'','key':_0x076d('0x1c'),'keyType':'variable','variableName':_0x076d('0x1d')},{'type':_0x076d('0xe'),'content':'','key':'Agent\x20Complete','keyType':_0x076d('0x6'),'variableName':_0x076d('0x1e')},{'type':'keyValue','content':'','key':_0x076d('0x1f'),'keyType':_0x076d('0x6'),'variableName':_0x076d('0x20')},{'type':_0x076d('0xe'),'content':'','key':_0x076d('0x21'),'keyType':'variable','variableName':'talktime'}];break;case'outbound':_0x25ad81=[{'type':_0x076d('0x1'),'content':_0x076d('0xd'),'variableName':null},{'type':_0x076d('0xe'),'content':'','key':_0x076d('0x22'),'keyType':_0x076d('0x6'),'keyContent':'','variableName':_0x076d('0xb')},{'type':_0x076d('0xe'),'content':'','key':'Member\x20Name','keyType':_0x076d('0x6'),'keyContent':'','variableName':_0x076d('0x23')},{'type':_0x076d('0xe'),'content':'','key':_0x076d('0x14'),'keyType':_0x076d('0x6'),'keyContent':'','variableName':_0x076d('0x15')},{'type':_0x076d('0xe'),'content':'','key':_0x076d('0x16'),'keyType':_0x076d('0x6'),'keyContent':'','variableName':_0x076d('0x24')},{'type':'string','content':_0x076d('0x1a')},{'type':'keyValue','content':'','key':_0x076d('0x25'),'keyType':_0x076d('0x6'),'keyContent':'','variableName':_0x076d('0x26')},{'type':'keyValue','content':'','key':_0x076d('0x27'),'keyType':_0x076d('0x6'),'keyContent':'','variableName':_0x076d('0x28')},{'type':'keyValue','content':'','key':_0x076d('0x29'),'keyType':_0x076d('0x6'),'keyContent':'','variableName':'duration'},{'type':'keyValue','content':'','key':_0x076d('0x2a'),'keyType':_0x076d('0x6'),'keyContent':'','variableName':'billableseconds'}];break;}}return _0x25ad81;};
\ No newline at end of file
index b604c8c..ec1e09d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b15=['count','length','clause','order','contactName','DESC','closed','getClosedOrderClause','rows','catch','clone','omit','html','phone','fax','mobile','./sql-utils','./utils','findAll','skipInteractionsQuery','resolve','then','search','parseAdvancedSearchFilter','parseQueryParameters','body','where','fields','user','having','checkAccountsRestrictions','i.id','ids','tag','countFilteredInteractions'];(function(_0x506eb5,_0x67de5c){var _0x1d0804=function(_0x3b712a){while(--_0x3b712a){_0x506eb5['push'](_0x506eb5['shift']());}};_0x1d0804(++_0x67de5c);}(_0x1b15,0xbf));var _0x51b1=function(_0x3680ba,_0x40f805){_0x3680ba=_0x3680ba-0x0;var _0x4ac079=_0x1b15[_0x3680ba];return _0x4ac079;};'use strict';var _=require('lodash');var sqlUtils=require(_0x51b1('0x0'));var utils=require(_0x51b1('0x1'));exports[_0x51b1('0x2')]=function(_0x280897,_0x365429,_0x198db7,_0x129feb,_0x28b4a3){var _0x23bfbb={'count':0x0,'rows':[]};var _0x19757d=sqlUtils[_0x51b1('0x3')](_0x280897,_0x198db7,_0x365429);if(_0x19757d){return Promise[_0x51b1('0x4')](_0x23bfbb);}var _0x2fa80b=sqlUtils['getInteractionsQuery'](_0x280897);var _0x3b2327={};return Promise['resolve']()[_0x51b1('0x5')](function(){if(_0x365429[_0x51b1('0x6')]){return sqlUtils[_0x51b1('0x7')](_0x365429['search'],_0x28b4a3);}else{return sqlUtils[_0x51b1('0x8')](_0x280897,_0x365429,_0x28b4a3);}})[_0x51b1('0x5')](function(_0x560648){_0x2fa80b['where'](_0x560648[_0x51b1('0x9')]);_0x2fa80b[_0x51b1('0xa')](_0x560648['contact']);_0x2fa80b[_0x51b1('0xa')](_0x560648['default']);_0x2fa80b['where'](_0x560648[_0x51b1('0xb')]);_0x2fa80b[_0x51b1('0xa')](_0x560648['filter']);_0x2fa80b['where'](_0x560648[_0x51b1('0xc')]);_0x2fa80b[_0x51b1('0xd')](_0x560648['read']);_0x3b2327=_0x560648['tags'];return sqlUtils[_0x51b1('0xe')](_0x280897,_0x198db7,_0x365429);})[_0x51b1('0x5')](function(_0x58027d){_0x2fa80b[_0x51b1('0xa')](_0x58027d);_0x2fa80b['group'](_0x51b1('0xf'));var _0x2bb1d7=_0x365429[_0x51b1('0x6')]?_0x3b2327[_0x51b1('0x10')]:_0x365429[_0x51b1('0x11')];return sqlUtils[_0x51b1('0x12')](_0x2fa80b,_0x2bb1d7);})[_0x51b1('0x5')](function(_0x398dec){_0x23bfbb[_0x51b1('0x13')]=_0x398dec[_0x51b1('0x14')];if(_0x23bfbb[_0x51b1('0x13')]===0x0){return[];}_0x2fa80b[_0x51b1('0xd')](_0x3b2327[_0x51b1('0x15')]);if(_0x129feb[_0x51b1('0x16')]){_0x129feb[_0x51b1('0x16')]['forEach'](function(_0x42152e){var _0x1e1b4a=_0x42152e[0x0]===_0x51b1('0x17')?_0x42152e[0x0]:'i.'+_0x42152e[0x0];_0x2fa80b[_0x51b1('0x16')](_0x1e1b4a,_0x42152e[0x1]===_0x51b1('0x18')?![]:!![]);if(_0x42152e[0x0]===_0x51b1('0x19')){var _0x29b80f=sqlUtils[_0x51b1('0x1a')](_0x280897,_0x365429);_0x2fa80b[_0x51b1('0x16')](_0x29b80f,_0x42152e[0x1]===_0x51b1('0x18')?![]:!![]);}});}return sqlUtils['getFilteredInteractions'](_0x280897,_0x2fa80b,_0x365429,_0x129feb);})[_0x51b1('0x5')](function(_0x1a37c8){_0x23bfbb[_0x51b1('0x1b')]=_0x1a37c8;return _0x23bfbb;})[_0x51b1('0x1c')](function(_0x2ae939){throw _0x2ae939;});};exports['tracked']=function(_0x2d14cb,_0x725756){return function(_0x90e7cb,_0x27a069,_0x291cf4){var _0x39c647=_0x90e7cb[_0x51b1('0xc')];var _0x433392={};var _0xea40bf=_0x90e7cb['query'];if(_0x433392){_0x433392=_[_0x51b1('0x1d')](_0x90e7cb[_0x51b1('0x9')]);_0x433392=_[_0x51b1('0x1e')](_0x433392,[_0x51b1('0x9'),_0x51b1('0x1f'),_0x51b1('0x20'),_0x51b1('0x21'),_0x51b1('0x22')]);}utils['updateUser'](_0x39c647,_0x433392,_0xea40bf,_0x2d14cb,_0x725756);_0x291cf4(null);};};
\ No newline at end of file
+var _0x9159=['length','clause','order','forEach','DESC','closed','getClosedOrderClause','getFilteredInteractions','rows','catch','tracked','query','body','omit','html','phone','fax','mobile','updateUser','./sql-utils','skipInteractionsQuery','resolve','then','search','parseAdvancedSearchFilter','parseQueryParameters','where','contact','filter','user','having','read','checkAccountsRestrictions','group','i.id','ids','tag'];(function(_0x451999,_0x1b3908){var _0x1b696e=function(_0x259ab1){while(--_0x259ab1){_0x451999['push'](_0x451999['shift']());}};_0x1b696e(++_0x1b3908);}(_0x9159,0xa7));var _0x9915=function(_0xfad1a7,_0x2e3b8d){_0xfad1a7=_0xfad1a7-0x0;var _0x571012=_0x9159[_0xfad1a7];return _0x571012;};'use strict';var _=require('lodash');var sqlUtils=require(_0x9915('0x0'));var utils=require('./utils');exports['findAll']=function(_0x1be57c,_0x36ab31,_0x44723a,_0x78521f,_0x24771d){var _0x243ec5={'count':0x0,'rows':[]};var _0x3ea89c=sqlUtils[_0x9915('0x1')](_0x1be57c,_0x44723a,_0x36ab31);if(_0x3ea89c){return Promise[_0x9915('0x2')](_0x243ec5);}var _0x5569de=sqlUtils['getInteractionsQuery'](_0x1be57c);var _0xa14abf={};return Promise[_0x9915('0x2')]()[_0x9915('0x3')](function(){if(_0x36ab31[_0x9915('0x4')]){return sqlUtils[_0x9915('0x5')](_0x36ab31[_0x9915('0x4')],_0x24771d);}else{return sqlUtils[_0x9915('0x6')](_0x1be57c,_0x36ab31,_0x24771d);}})[_0x9915('0x3')](function(_0x1c6af5){_0x5569de[_0x9915('0x7')](_0x1c6af5['body']);_0x5569de[_0x9915('0x7')](_0x1c6af5[_0x9915('0x8')]);_0x5569de[_0x9915('0x7')](_0x1c6af5['default']);_0x5569de[_0x9915('0x7')](_0x1c6af5['fields']);_0x5569de['where'](_0x1c6af5[_0x9915('0x9')]);_0x5569de[_0x9915('0x7')](_0x1c6af5[_0x9915('0xa')]);_0x5569de[_0x9915('0xb')](_0x1c6af5[_0x9915('0xc')]);_0xa14abf=_0x1c6af5['tags'];return sqlUtils[_0x9915('0xd')](_0x1be57c,_0x44723a,_0x36ab31);})[_0x9915('0x3')](function(_0x1398e1){_0x5569de[_0x9915('0x7')](_0x1398e1);_0x5569de[_0x9915('0xe')](_0x9915('0xf'));var _0x9e1b42=_0x36ab31[_0x9915('0x4')]?_0xa14abf[_0x9915('0x10')]:_0x36ab31[_0x9915('0x11')];return sqlUtils['countFilteredInteractions'](_0x5569de,_0x9e1b42);})[_0x9915('0x3')](function(_0x4c9811){_0x243ec5['count']=_0x4c9811[_0x9915('0x12')];if(_0x243ec5['count']===0x0){return[];}_0x5569de[_0x9915('0xb')](_0xa14abf[_0x9915('0x13')]);if(_0x78521f[_0x9915('0x14')]){_0x78521f[_0x9915('0x14')][_0x9915('0x15')](function(_0x222ffd){var _0x1fb651=_0x222ffd[0x0]==='contactName'?_0x222ffd[0x0]:'i.'+_0x222ffd[0x0];_0x5569de['order'](_0x1fb651,_0x222ffd[0x1]===_0x9915('0x16')?![]:!![]);if(_0x222ffd[0x0]===_0x9915('0x17')){var _0x58bbde=sqlUtils[_0x9915('0x18')](_0x1be57c,_0x36ab31);_0x5569de[_0x9915('0x14')](_0x58bbde,_0x222ffd[0x1]===_0x9915('0x16')?![]:!![]);}});}return sqlUtils[_0x9915('0x19')](_0x1be57c,_0x5569de,_0x36ab31,_0x78521f);})['then'](function(_0x46ed53){_0x243ec5[_0x9915('0x1a')]=_0x46ed53;return _0x243ec5;})[_0x9915('0x1b')](function(_0x109a20){throw _0x109a20;});};exports[_0x9915('0x1c')]=function(_0x296a63,_0x16ef79){return function(_0x5ae5e1,_0x32f42d,_0x349193){var _0x2871b0=_0x5ae5e1[_0x9915('0xa')];var _0x366ee6={};var _0x3ac397=_0x5ae5e1[_0x9915('0x1d')];if(_0x366ee6){_0x366ee6=_['clone'](_0x5ae5e1[_0x9915('0x1e')]);_0x366ee6=_[_0x9915('0x1f')](_0x366ee6,[_0x9915('0x1e'),_0x9915('0x20'),_0x9915('0x21'),_0x9915('0x22'),_0x9915('0x23')]);}utils[_0x9915('0x24')](_0x2871b0,_0x366ee6,_0x3ac397,_0x296a63,_0x16ef79);_0x349193(null);};};
\ No newline at end of file
index c0e47c5..5fb99f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x131e=['offset','sequelize','query','groupBy','Setting','findOne','enableEmailPreview','clone','COUNT(*)','isEmpty','Sequelize','exports','../parsers/qs','./update-interaction','updateInteraction','./utils','../../mysqldb','getAccountFK','role','field','name','color','tools_tags','getInteractionFK','user_has_','u.id','u.fullname','ui.','from','left_join','users','u.id\x20=\x20ui.UserId','getInteractionsTables','select','interactions','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','messages','\x20=\x20i.id','it.','t.id\x20=\x20it.TagId','expr','getSelectedTags','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','unreadMessages\x20{OPERATOR}\x200','replace','{OPERATOR}','isNumeric','sms','whatsapp','includes','i.fax\x20LIKE\x20?','openchannel','i.from\x20LIKE\x20?','mail','isEmail','c.email\x20LIKE\x20?','MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','fax','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','parseSearch','sqlOperator','conditions','find','type','text','start','value','end','unreadMessages','and','operator','$substring','length','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','contact','split','tags','ids','User','user','UserId','buildExpression','plainBody','body','keys','map','some','compact','concat','createdAt','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','resolve','then','fields','read','clause','filter','get','capitalize','search','agent','\x20IS\x20NOT\x20NULL','i.thirdDisposition','i.secondDisposition','i.disposition','closed','shift','join','Interaction','QueryTypes','SELECT','toString','keyBy','merge','attributes','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.key','Account.mandatoryDisposition','a.email','Account.email','contactName','i.id','i.createdAt','i.updatedAt','i.closed','i.closedAt','i.lastMsgAt','i.lastMsgDirection','i.subject','i.substatus','i.to','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','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','Contact.mobile','c.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','TagIds','limit'];(function(_0x223c42,_0x9b0446){var _0x105e48=function(_0x3ac3f3){while(--_0x3ac3f3){_0x223c42['push'](_0x223c42['shift']());}};_0x105e48(++_0x9b0446);}(_0x131e,0x1ec));var _0xe131=function(_0xf9954e,_0x47a35a){_0xf9954e=_0xf9954e-0x0;var _0x58038e=_0x131e[_0xf9954e];return _0x58038e;};'use strict';var _=require('lodash');var squel=require('squel');var as=require('../parsers/advancedSearch');var qs=require(_0xe131('0x0'));var updateInteraction=require(_0xe131('0x1'))[_0xe131('0x2')];var utils=require(_0xe131('0x3'));var db=require(_0xe131('0x4'))['db'];function skipInteractionsQuery(_0x761c,_0x4ff7f7,_0x2fc440){var _0x344903=![];var _0x2de969=utils[_0xe131('0x5')](_0x761c);if(_0x4ff7f7[_0xe131('0x6')]==='agent'&&!_0x2fc440['search']&&!_0x2fc440[_0x2de969]){_0x344903=!![];}return _0x344903;}function getTagsQuery(){return squel['select']()['field']('id')[_0xe131('0x7')](_0xe131('0x8'))['field'](_0xe131('0x9'))['from'](_0xe131('0xa'));}function getUsersQuery(_0x18f749,_0x5ae4c1){var _0x28e9e1=utils[_0xe131('0xb')](_0x18f749);var _0x2438af=_0xe131('0xc')+_0x18f749+'_interactions';var _0x55768a=squel['select']()['field'](_0xe131('0xd'))[_0xe131('0x7')](_0xe131('0xe'))[_0xe131('0x7')](_0xe131('0xf')+_0x28e9e1)[_0xe131('0x10')](_0x2438af,'ui')[_0xe131('0x11')](_0xe131('0x12'),'u',_0xe131('0x13'));if(_0x5ae4c1['length']>0x0){_0x55768a['where']('ui.'+_0x28e9e1+'\x20IN\x20?',_['map'](_0x5ae4c1,'id'));}return _0x55768a;}function getInteractionsQuery(_0x2628e7){var _0x32091b=utils[_0xe131('0x14')](_0x2628e7);var _0x5a02b6=utils['getAccountFK'](_0x2628e7);var _0x400f6b=utils[_0xe131('0xb')](_0x2628e7);return squel[_0xe131('0x15')]()[_0xe131('0x10')](_0x32091b[_0xe131('0x16')],'i')[_0xe131('0x11')]('cm_contacts','c',_0xe131('0x17'))[_0xe131('0x11')](_0xe131('0x12'),'o',_0xe131('0x18'))[_0xe131('0x11')](_0x32091b['accounts'],'a','a.id\x20=\x20i.'+_0x5a02b6)[_0xe131('0x11')](_0x32091b[_0xe131('0x19')],'me','me.'+_0x400f6b+_0xe131('0x1a'))['left_join'](_0x32091b['interactionsTags'],'it',_0xe131('0x1b')+_0x400f6b+_0xe131('0x1a'))[_0xe131('0x11')](_0xe131('0xa'),'t',_0xe131('0x1c'));}function getSqlClauses(){var _0x225278={'body':squel[_0xe131('0x1d')](),'contact':squel['expr'](),'default':squel[_0xe131('0x1d')](),'fields':squel[_0xe131('0x1d')](),'filter':squel['expr'](),'read':squel['expr'](),'tags':{'clause':squel[_0xe131('0x1d')](),'ids':null},'user':squel['expr']()};return _0x225278;}function parseTagParameter(_0x41c386){var _0x3b95bf=squel['expr']();if(_0x41c386){var _0x44935b=utils[_0xe131('0x1e')](_0x41c386);_0x44935b[_0xe131('0x1f')](function(_0x499ca8){_0x3b95bf['or'](_0xe131('0x20'),'%,'+_0x499ca8+',%');});}return _0x3b95bf;}function parseReadParameter(_0x442279){var _0x219fe1='';if(_0x442279){_0x219fe1=_0xe131('0x21');if(_0x442279==='1'){_0x219fe1=_0x219fe1[_0xe131('0x22')](_0xe131('0x23'),'=');}else{_0x219fe1=_0x219fe1[_0xe131('0x22')](_0xe131('0x23'),'>');}}return _0x219fe1;}function parseSearchFilter(_0x9f8c66,_0x341294){var _0x58e75a=squel[_0xe131('0x1d')]();if(_0x341294){var _0x554b62=_0x341294[_0xe131('0x22')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0xe131('0x24')](_0x554b62)){_0x58e75a['or']('i.id\x20LIKE\x20?',_0x554b62+'%');if([_0xe131('0x25'),_0xe131('0x26')][_0xe131('0x27')](_0x9f8c66)){_0x58e75a['or']('i.phone\x20LIKE\x20?',_0x554b62+'%');}else if(_0x9f8c66==='fax'){_0x58e75a['or'](_0xe131('0x28'),_0x554b62+'%');}else if(_0x9f8c66===_0xe131('0x29')){_0x58e75a['or'](_0xe131('0x2a'),_0x554b62+'%');}}else if(_0x9f8c66===_0xe131('0x2b')&&qs[_0xe131('0x2c')](_0x554b62)){_0x58e75a['or'](_0xe131('0x2d'),_0x554b62+'%');}else{if(_0x9f8c66===_0xe131('0x2b')){_0x58e75a['or'](_0xe131('0x2e'),qs['getFullTextValue'](_0x554b62))['or']('MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xe131('0x2f')](_0x554b62));}else{if(_0x9f8c66!==_0xe131('0x30')){_0x58e75a['or'](_0xe131('0x31'),qs[_0xe131('0x2f')](_0x554b62));}_0x58e75a['or'](_0xe131('0x32'),_0x554b62+'%');}}}return _0x58e75a;}function parseAdvancedSearchFilter(_0x44cc9f,_0x12168a){var _0x4d2327=getSqlClauses();var _0x54d331=as[_0xe131('0x33')](_0x44cc9f);var _0x53f7bd=_0x54d331[_0xe131('0x34')];for(var _0x584cc9=0x0;_0x584cc9<_0x54d331[_0xe131('0x35')]['length'];_0x584cc9++){var _0x39735c=_0x54d331['conditions'][_0x584cc9];var _0x28bb6a='i';var _0x3e2a0d=_[_0xe131('0x36')](_0x12168a,[_0xe131('0x8'),_0x39735c[_0xe131('0x7')]]);if(_0x3e2a0d){var _0x17016b=as['buildExpression'](_0x28bb6a,_0x3e2a0d[_0xe131('0x37')],_0x39735c);_0x4d2327['default'][_0x53f7bd](_0x17016b[_0xe131('0x38')],_0x17016b['value'][_0xe131('0x39')],_0x17016b[_0xe131('0x3a')][_0xe131('0x3b')]);}else{switch(_0x39735c[_0xe131('0x7')]){case _0xe131('0x3c'):var _0xe76882=parseReadParameter(_0x39735c[_0xe131('0x3a')]);_0x4d2327['read'][_0xe131('0x3d')](_0xe76882);break;case'Contact':if(_0x39735c[_0xe131('0x3e')]===_0xe131('0x3f')){if(_0x39735c['value']['split']('\x20')[_0xe131('0x40')]>0x1){_0x4d2327['contact'][_0x53f7bd]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xe131('0x2f')](_0x39735c['value']),null);}else{var _0x17a3c5='%'+_0x39735c[_0xe131('0x3a')]+'%';_0x4d2327['contact'][_0x53f7bd](_0xe131('0x41'),_0x17a3c5,_0x17a3c5,_0x17a3c5);}}else{_0x3e2a0d=_[_0xe131('0x36')](_0x12168a,[_0xe131('0x8'),_0xe131('0x42')]);_0x39735c[_0xe131('0x7')]='ContactId';_0x17016b=as['buildExpression'](_0x28bb6a,_0x3e2a0d[_0xe131('0x37')],_0x39735c);_0x4d2327[_0xe131('0x43')][_0x53f7bd](_0x17016b[_0xe131('0x38')],_0x17016b['value'][_0xe131('0x39')],_0x17016b[_0xe131('0x3a')][_0xe131('0x3b')]);}break;case'Tag':var _0x149c8c=_0x39735c[_0xe131('0x3a')][_0xe131('0x44')](',')['map'](function(_0x1da932){return Number(_0x1da932);});var _0xffa6bc=parseTagParameter(_0x149c8c);_0x4d2327[_0xe131('0x45')]['clause'][_0xe131('0x3d')](_0xffa6bc);_0x4d2327[_0xe131('0x45')][_0xe131('0x46')]=_0x149c8c;break;case _0xe131('0x47'):if(_0x39735c[_0xe131('0x3e')]===_0xe131('0x3f')){_0x4d2327[_0xe131('0x48')][_0x53f7bd]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x39735c['value']+'%',null);}else{_0x3e2a0d=_[_0xe131('0x36')](_0x12168a,[_0xe131('0x8'),_0xe131('0x49')]);_0x39735c[_0xe131('0x7')]=_0xe131('0x49');_0x17016b=as[_0xe131('0x4a')](_0x28bb6a,_0x3e2a0d['type'],_0x39735c);_0x4d2327[_0xe131('0x48')][_0x53f7bd](_0x17016b[_0xe131('0x38')],_0x17016b[_0xe131('0x3a')][_0xe131('0x39')],_0x17016b[_0xe131('0x3a')][_0xe131('0x3b')]);}break;case'body':case _0xe131('0x4b'):_0x17016b=as[_0xe131('0x4a')]('me',null,_0x39735c);_0x4d2327[_0xe131('0x4c')][_0x53f7bd](_0x17016b[_0xe131('0x38')],_0x17016b[_0xe131('0x3a')][_0xe131('0x39')],_0x17016b[_0xe131('0x3a')][_0xe131('0x3b')]);break;}}}return _0x4d2327;}function parseModelFields(_0x3d7ae8,_0x320699,_0x442f06){var _0x4a06c8=utils[_0xe131('0x5')](_0x3d7ae8);var _0x5b03ab=squel['expr']();var _0x2c8f44=_(_0x320699)[_0xe131('0x4d')]()[_0xe131('0x4e')](function(_0x3860b2){return _[_0xe131('0x4f')](_0x442f06,[_0xe131('0x8'),_0x3860b2])?_0x3860b2:undefined;})[_0xe131('0x50')]()[_0xe131('0x3a')]();if(_0x2c8f44[_0xe131('0x40')]>0x0){_0x2c8f44[_0xe131('0x1f')](function(_0x32c687){if(_0x32c687===_0x4a06c8){_0x5b03ab['and']('i.'+_0x4a06c8+'\x20IN\x20?',[][_0xe131('0x51')](_0x320699[_0x32c687]));}else if(_0x32c687===_0xe131('0x52')){var _0x513f94=JSON['parse'](_0x320699[_0x32c687])[_0xe131('0x53')];var _0x564a29=JSON['parse'](_0x320699[_0x32c687])[_0xe131('0x54')];_0x5b03ab[_0xe131('0x3d')](_0xe131('0x55'),_0x513f94,_0x564a29);}else{if(_0x320699[_0x32c687]===_0xe131('0x56')){_0x5b03ab[_0xe131('0x3d')]('i.'+_0x32c687+_0xe131('0x57'));}else{_0x5b03ab['and']('i.'+_0x32c687+'\x20=\x20?',_0x320699[_0x32c687]);}}});}return _0x5b03ab;}function parseQueryParameters(_0x40d0cb,_0xc3867d,_0x4837de){var _0x19692b=getSqlClauses();return Promise[_0xe131('0x58')]()[_0xe131('0x59')](function(){return parseModelFields(_0x40d0cb,_0xc3867d,_0x4837de);})[_0xe131('0x59')](function(_0x1aa623){_0x19692b[_0xe131('0x5a')]['and'](_0x1aa623);return parseReadParameter(_0xc3867d[_0xe131('0x5b')]);})['then'](function(_0x5b1712){_0x19692b[_0xe131('0x5b')][_0xe131('0x3d')](_0x5b1712);return parseTagParameter(_0xc3867d['tag']);})['then'](function(_0xbcd75e){_0x19692b[_0xe131('0x45')][_0xe131('0x5c')]['and'](_0xbcd75e);return parseSearchFilter(_0x40d0cb,_0xc3867d[_0xe131('0x5d')]);})[_0xe131('0x59')](function(_0x45d00d){_0x19692b[_0xe131('0x5d')]=_0x45d00d;return _0x19692b;});}function checkAccountsRestrictions(_0x2a65fd,_0x5e61c5,_0x25eec7){var _0x5185dd=utils[_0xe131('0x5')](_0x2a65fd);var _0x45ac9c=_0xe131('0x5e')+_[_0xe131('0x5f')](_0x2a65fd)+(_0x2a65fd==='chat'?'Websites':'Accounts');var _0x44552d=squel['expr']();return Promise[_0xe131('0x58')]()[_0xe131('0x59')](function(){if(_0x25eec7[_0xe131('0x60')]&&_0x5e61c5[_0xe131('0x6')]===_0xe131('0x61')){return _0x5e61c5[_0x45ac9c]({'attributes':['id'],'raw':!![]});}})[_0xe131('0x59')](function(_0x126bb4){if(_0x126bb4){if(_0x126bb4[_0xe131('0x40')]===0x0){_0x44552d[_0xe131('0x3d')]('i.'+_0x5185dd+_0xe131('0x57'));}else{_0x44552d['and']('i.'+_0x5185dd+'\x20IN\x20?',_['map'](_0x126bb4,'id'));}}else if(!_0x25eec7[_0x5185dd]){_0x44552d[_0xe131('0x3d')]('i.'+_0x5185dd+_0xe131('0x62'));}})[_0xe131('0x59')](function(){return _0x44552d;});}function getClosedOrderClause(_0x2d64cf,_0x4bf1be){var _0x11e2c9='';var _0x2fb950=[_0xe131('0x63'),_0xe131('0x64'),_0xe131('0x65')];if(_0x2d64cf===_0xe131('0x2b')){_0x2fb950['unshift']('i.substatus');}if(_0x4bf1be[_0xe131('0x66')]==='0'&&_0x2d64cf==='mail'){_0x11e2c9='i.substatus';}else{if(_0x4bf1be['closed']==='1'){_0x2fb950[_0xe131('0x67')]();}_0x11e2c9='CONCAT_WS(\x27\x27,\x20'+_0x2fb950[_0xe131('0x68')](',\x20')+')';}return _0x11e2c9;}function getFilteredInteractions(_0x564e65,_0x4bf040,_0x2357f2,_0x2b6cdc){var _0x6fb417=utils['getInteractionFK'](_0x564e65);var _0x32abb6=_[_0xe131('0x5f')](_0x564e65)+_0xe131('0x69');var _0x3c1fe4=[];var _0x167195=getTagsQuery();var _0x185f89={'type':db['Sequelize'][_0xe131('0x6a')][_0xe131('0x6b')],'raw':!![]};var _0x4f3b0d=[];var _0x3eaf12=[];return db['sequelize']['query'](_0x167195[_0xe131('0x6c')](),_0x185f89)['then'](function(_0x45b291){_0x3c1fe4=_[_0xe131('0x6d')](_0x45b291,'id');_0x185f89=_[_0xe131('0x6e')](_0x185f89,{'model':db[_0x32abb6],'mapToModel':!![],'nest':!![]});if(_0x2357f2['fields']){_0x2b6cdc[_0xe131('0x6f')][_0xe131('0x1f')](function(_0x240c33){_0x4bf040[_0xe131('0x7')]('i.'+_0x240c33);});}else{_0x4bf040[_0xe131('0x7')](_0xe131('0x70'),'unreadMessages');_0x4bf040['field'](_0xe131('0x71'),'Account.key');_0x4bf040[_0xe131('0x7')]('a.mandatoryDisposition',_0xe131('0x72'));if(_0x564e65===_0xe131('0x2b')){_0x4bf040[_0xe131('0x7')](_0xe131('0x73'),_0xe131('0x74'));_0x4bf040[_0xe131('0x7')]('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',_0xe131('0x75'));_0x4bf040[_0xe131('0x7')](_0xe131('0x76'));_0x4bf040[_0xe131('0x7')](_0xe131('0x77'));_0x4bf040[_0xe131('0x7')](_0xe131('0x78'));_0x4bf040[_0xe131('0x7')](_0xe131('0x79'));_0x4bf040[_0xe131('0x7')](_0xe131('0x7a'));_0x4bf040[_0xe131('0x7')]('i.attach');_0x4bf040[_0xe131('0x7')](_0xe131('0x7b'));_0x4bf040['field'](_0xe131('0x7c'));_0x4bf040[_0xe131('0x7')](_0xe131('0x7d'));_0x4bf040['field'](_0xe131('0x65'));_0x4bf040[_0xe131('0x7')](_0xe131('0x64'));_0x4bf040[_0xe131('0x7')](_0xe131('0x63'));_0x4bf040[_0xe131('0x7')](_0xe131('0x7e'));_0x4bf040[_0xe131('0x7')](_0xe131('0x7f'));_0x4bf040[_0xe131('0x7')](_0xe131('0x80'));_0x4bf040[_0xe131('0x7')](_0xe131('0x81'));_0x4bf040[_0xe131('0x7')](_0xe131('0x82'));}else if(_0x564e65==='openchannel'){_0x4bf040['field'](_0xe131('0x83'),'contactName');}else{_0x4bf040[_0xe131('0x7')](_0xe131('0x84'),_0xe131('0x75'));}if(_0x564e65!==_0xe131('0x2b')){_0x4bf040[_0xe131('0x7')]('i.*');}_0x4bf040[_0xe131('0x7')]('c.firstName',_0xe131('0x85'));_0x4bf040[_0xe131('0x7')](_0xe131('0x86'),_0xe131('0x87'));_0x4bf040['field'](_0xe131('0x88'),_0xe131('0x89'));_0x4bf040[_0xe131('0x7')](_0xe131('0x8a'),_0xe131('0x8b'));_0x4bf040['field']('c.mobile',_0xe131('0x8c'));_0x4bf040[_0xe131('0x7')](_0xe131('0x8d'),'Contact.fax');_0x4bf040['field'](_0xe131('0x8e'),_0xe131('0x8f'));_0x4bf040[_0xe131('0x7')](_0xe131('0x90'),_0xe131('0x91'));_0x4bf040[_0xe131('0x7')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0xe131('0x92'));}if(_0x2b6cdc[_0xe131('0x93')]){_0x4bf040[_0xe131('0x93')](_0x2b6cdc[_0xe131('0x93')]);}if(_0x2b6cdc['offset']){_0x4bf040[_0xe131('0x94')](_0x2b6cdc['offset']);}return db[_0xe131('0x95')][_0xe131('0x96')](_0x4bf040[_0xe131('0x6c')](),_0x185f89);})['then'](function(_0x4ba4d4){_0x4f3b0d=_0x4ba4d4;var _0xffd447=getUsersQuery(_0x564e65,_0x4f3b0d);return db[_0xe131('0x95')][_0xe131('0x96')](_0xffd447[_0xe131('0x6c')](),_0x185f89);})[_0xe131('0x59')](function(_0x3a50ae){_0x3eaf12=_[_0xe131('0x97')](_0x3a50ae,_0x6fb417);if(_0x564e65===_0xe131('0x2b')){return db[_0xe131('0x98')][_0xe131('0x99')]({'attributes':[_0xe131('0x9a')],'raw':!![]});}})[_0xe131('0x59')](function(_0x7a1b0){var _0x5538ec=_0x7a1b0?_0x7a1b0[_0xe131('0x9a')]:undefined;var _0x14f031=_0x4f3b0d[_0xe131('0x4e')](function(_0x330b33){return updateInteraction(_0x330b33,_0x3c1fe4,_0x3eaf12,_0x5538ec);});return Promise['all'](_0x14f031);});}function countFilteredInteractions(_0x3a9777,_0xd65773){var _0x26a413=_0x3a9777[_0xe131('0x9b')]();_0x26a413['field'](_0xe131('0x9c'));_0x26a413[_0xe131('0x7')](_0xe131('0x70'),'unreadMessages');var _0x3a1bac=utils['getSelectedTags'](_0xd65773);if(!_[_0xe131('0x9d')](_0x3a1bac)){_0x26a413['where']('t.id\x20IN\x20?',_0x3a1bac);}var _0x3304f6={'type':db[_0xe131('0x9e')]['QueryTypes'][_0xe131('0x6b')],'raw':!![]};return db[_0xe131('0x95')]['query'](_0x26a413[_0xe131('0x6c')](),_0x3304f6);}module[_0xe131('0x9f')]={'checkAccountsRestrictions':checkAccountsRestrictions,'countFilteredInteractions':countFilteredInteractions,'getClosedOrderClause':getClosedOrderClause,'getFilteredInteractions':getFilteredInteractions,'getInteractionsQuery':getInteractionsQuery,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipInteractionsQuery':skipInteractionsQuery};
\ No newline at end of file
+var _0xa0bc=['type','default','text','value','start','end','unreadMessages','read','and','Contact','operator','$substring','split','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','Tag','tags','clause','user','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','body','keys','some','\x20IN\x20?','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','resolve','then','fields','tag','filter','capitalize','Websites','Accounts','\x20IS\x20NOT\x20NULL','i.thirdDisposition','i.secondDisposition','i.disposition','i.substatus','closed','shift','CONCAT_WS(\x27\x27,\x20','join','Sequelize','QueryTypes','SELECT','sequelize','query','keyBy','attributes','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.key','Account.key','Account.mandatoryDisposition','Account.email','contactName','i.createdAt','i.closed','i.attach','i.lastMsgAt','i.lastMsgDirection','i.subject','i.to','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','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','Owner.fullname','o.internal','TagIds','limit','offset','toString','groupBy','Setting','findOne','enableEmailPreview','all','COUNT(*)','isEmpty','t.id\x20IN\x20?','exports','squel','../parsers/advancedSearch','./update-interaction','updateInteraction','./utils','../../mysqldb','getAccountFK','role','agent','search','select','field','name','color','from','tools_tags','getInteractionFK','user_has_','_interactions','u.id','u.fullname','ui.','left_join','users','u.id\x20=\x20ui.UserId','length','where','map','getInteractionsTables','cm_contacts','o.id\x20=\x20i.UserId','accounts','a.id\x20=\x20i.','messages','me.','\x20=\x20i.id','interactionsTags','it.','t.id\x20=\x20it.TagId','expr','getSelectedTags','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','unreadMessages\x20{OPERATOR}\x200','replace','{OPERATOR}','i.id\x20LIKE\x20?','sms','whatsapp','includes','i.phone\x20LIKE\x20?','fax','i.fax\x20LIKE\x20?','openchannel','i.from\x20LIKE\x20?','mail','isEmail','c.email\x20LIKE\x20?','MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','parseSearch','sqlOperator','conditions','find','buildExpression'];(function(_0x1fedbf,_0x54fafd){var _0x254432=function(_0x2cf985){while(--_0x2cf985){_0x1fedbf['push'](_0x1fedbf['shift']());}};_0x254432(++_0x54fafd);}(_0xa0bc,0x1b6));var _0xca0b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa0bc[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var squel=require(_0xca0b('0x0'));var as=require(_0xca0b('0x1'));var qs=require('../parsers/qs');var updateInteraction=require(_0xca0b('0x2'))[_0xca0b('0x3')];var utils=require(_0xca0b('0x4'));var db=require(_0xca0b('0x5'))['db'];function skipInteractionsQuery(_0x2f7b56,_0x3a53b4,_0xf39a90){var _0x29ae7e=![];var _0x3cb084=utils[_0xca0b('0x6')](_0x2f7b56);if(_0x3a53b4[_0xca0b('0x7')]===_0xca0b('0x8')&&!_0xf39a90[_0xca0b('0x9')]&&!_0xf39a90[_0x3cb084]){_0x29ae7e=!![];}return _0x29ae7e;}function getTagsQuery(){return squel[_0xca0b('0xa')]()['field']('id')[_0xca0b('0xb')](_0xca0b('0xc'))[_0xca0b('0xb')](_0xca0b('0xd'))[_0xca0b('0xe')](_0xca0b('0xf'));}function getUsersQuery(_0x589187,_0x31a0d1){var _0x45c0cf=utils[_0xca0b('0x10')](_0x589187);var _0x18af13=_0xca0b('0x11')+_0x589187+_0xca0b('0x12');var _0x2ab14f=squel[_0xca0b('0xa')]()[_0xca0b('0xb')](_0xca0b('0x13'))['field'](_0xca0b('0x14'))[_0xca0b('0xb')](_0xca0b('0x15')+_0x45c0cf)['from'](_0x18af13,'ui')[_0xca0b('0x16')](_0xca0b('0x17'),'u',_0xca0b('0x18'));if(_0x31a0d1[_0xca0b('0x19')]>0x0){_0x2ab14f[_0xca0b('0x1a')](_0xca0b('0x15')+_0x45c0cf+'\x20IN\x20?',_[_0xca0b('0x1b')](_0x31a0d1,'id'));}return _0x2ab14f;}function getInteractionsQuery(_0x3bcd2a){var _0x4d9b16=utils[_0xca0b('0x1c')](_0x3bcd2a);var _0x5db810=utils[_0xca0b('0x6')](_0x3bcd2a);var _0x5050b7=utils[_0xca0b('0x10')](_0x3bcd2a);return squel[_0xca0b('0xa')]()[_0xca0b('0xe')](_0x4d9b16['interactions'],'i')[_0xca0b('0x16')](_0xca0b('0x1d'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0xca0b('0x16')](_0xca0b('0x17'),'o',_0xca0b('0x1e'))['left_join'](_0x4d9b16[_0xca0b('0x1f')],'a',_0xca0b('0x20')+_0x5db810)[_0xca0b('0x16')](_0x4d9b16[_0xca0b('0x21')],'me',_0xca0b('0x22')+_0x5050b7+_0xca0b('0x23'))['left_join'](_0x4d9b16[_0xca0b('0x24')],'it',_0xca0b('0x25')+_0x5050b7+_0xca0b('0x23'))['left_join']('tools_tags','t',_0xca0b('0x26'));}function getSqlClauses(){var _0x428459={'body':squel[_0xca0b('0x27')](),'contact':squel[_0xca0b('0x27')](),'default':squel[_0xca0b('0x27')](),'fields':squel['expr'](),'filter':squel[_0xca0b('0x27')](),'read':squel[_0xca0b('0x27')](),'tags':{'clause':squel[_0xca0b('0x27')](),'ids':null},'user':squel[_0xca0b('0x27')]()};return _0x428459;}function parseTagParameter(_0x15478d){var _0x48e172=squel['expr']();if(_0x15478d){var _0x4e0515=utils[_0xca0b('0x28')](_0x15478d);_0x4e0515[_0xca0b('0x29')](function(_0x3fd832){_0x48e172['or'](_0xca0b('0x2a'),'%,'+_0x3fd832+',%');});}return _0x48e172;}function parseReadParameter(_0xe7673b){var _0x515f83='';if(_0xe7673b){_0x515f83=_0xca0b('0x2b');if(_0xe7673b==='1'){_0x515f83=_0x515f83[_0xca0b('0x2c')](_0xca0b('0x2d'),'=');}else{_0x515f83=_0x515f83[_0xca0b('0x2c')](_0xca0b('0x2d'),'>');}}return _0x515f83;}function parseSearchFilter(_0x449a3a,_0xa59ab0){var _0x4a99cb=squel[_0xca0b('0x27')]();if(_0xa59ab0){var _0x17a365=_0xa59ab0[_0xca0b('0x2c')]('\x5c','\x5c\x5c')[_0xca0b('0x2c')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x17a365)){_0x4a99cb['or'](_0xca0b('0x2e'),_0x17a365+'%');if([_0xca0b('0x2f'),_0xca0b('0x30')][_0xca0b('0x31')](_0x449a3a)){_0x4a99cb['or'](_0xca0b('0x32'),_0x17a365+'%');}else if(_0x449a3a===_0xca0b('0x33')){_0x4a99cb['or'](_0xca0b('0x34'),_0x17a365+'%');}else if(_0x449a3a===_0xca0b('0x35')){_0x4a99cb['or'](_0xca0b('0x36'),_0x17a365+'%');}}else if(_0x449a3a===_0xca0b('0x37')&&qs[_0xca0b('0x38')](_0x17a365)){_0x4a99cb['or'](_0xca0b('0x39'),_0x17a365+'%');}else{if(_0x449a3a===_0xca0b('0x37')){_0x4a99cb['or'](_0xca0b('0x3a'),qs[_0xca0b('0x3b')](_0x17a365))['or']('MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xca0b('0x3b')](_0x17a365));}else{if(_0x449a3a!==_0xca0b('0x33')){_0x4a99cb['or'](_0xca0b('0x3c'),qs[_0xca0b('0x3b')](_0x17a365));}_0x4a99cb['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x17a365+'%');}}}return _0x4a99cb;}function parseAdvancedSearchFilter(_0x3d5fef,_0x4657bd){var _0x50d87d=getSqlClauses();var _0x39846e=as[_0xca0b('0x3d')](_0x3d5fef);var _0xe7f5f5=_0x39846e[_0xca0b('0x3e')];for(var _0xe54fbc=0x0;_0xe54fbc<_0x39846e[_0xca0b('0x3f')][_0xca0b('0x19')];_0xe54fbc++){var _0x14acd3=_0x39846e['conditions'][_0xe54fbc];var _0x50642d='i';var _0x370db4=_[_0xca0b('0x40')](_0x4657bd,[_0xca0b('0xc'),_0x14acd3[_0xca0b('0xb')]]);if(_0x370db4){var _0x351f5a=as[_0xca0b('0x41')](_0x50642d,_0x370db4[_0xca0b('0x42')],_0x14acd3);_0x50d87d[_0xca0b('0x43')][_0xe7f5f5](_0x351f5a[_0xca0b('0x44')],_0x351f5a[_0xca0b('0x45')][_0xca0b('0x46')],_0x351f5a[_0xca0b('0x45')][_0xca0b('0x47')]);}else{switch(_0x14acd3[_0xca0b('0xb')]){case _0xca0b('0x48'):var _0x21b9a9=parseReadParameter(_0x14acd3[_0xca0b('0x45')]);_0x50d87d[_0xca0b('0x49')][_0xca0b('0x4a')](_0x21b9a9);break;case _0xca0b('0x4b'):if(_0x14acd3[_0xca0b('0x4c')]===_0xca0b('0x4d')){if(_0x14acd3[_0xca0b('0x45')][_0xca0b('0x4e')]('\x20')[_0xca0b('0x19')]>0x1){_0x50d87d['contact'][_0xe7f5f5]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xca0b('0x3b')](_0x14acd3[_0xca0b('0x45')]),null);}else{var _0x5da705='%'+_0x14acd3['value']+'%';_0x50d87d['contact'][_0xe7f5f5](_0xca0b('0x4f'),_0x5da705,_0x5da705,_0x5da705);}}else{_0x370db4=_[_0xca0b('0x40')](_0x4657bd,[_0xca0b('0xc'),_0xca0b('0x50')]);_0x14acd3[_0xca0b('0xb')]='ContactId';_0x351f5a=as['buildExpression'](_0x50642d,_0x370db4[_0xca0b('0x42')],_0x14acd3);_0x50d87d['contact'][_0xe7f5f5](_0x351f5a[_0xca0b('0x44')],_0x351f5a['value']['start'],_0x351f5a['value'][_0xca0b('0x47')]);}break;case _0xca0b('0x51'):var _0x460819=_0x14acd3[_0xca0b('0x45')][_0xca0b('0x4e')](',')[_0xca0b('0x1b')](function(_0x54bcb7){return Number(_0x54bcb7);});var _0x8ecb03=parseTagParameter(_0x460819);_0x50d87d[_0xca0b('0x52')][_0xca0b('0x53')][_0xca0b('0x4a')](_0x8ecb03);_0x50d87d[_0xca0b('0x52')]['ids']=_0x460819;break;case'User':if(_0x14acd3[_0xca0b('0x4c')]===_0xca0b('0x4d')){_0x50d87d[_0xca0b('0x54')][_0xe7f5f5](_0xca0b('0x55'),'%'+_0x14acd3['value']+'%',null);}else{_0x370db4=_[_0xca0b('0x40')](_0x4657bd,[_0xca0b('0xc'),_0xca0b('0x56')]);_0x14acd3[_0xca0b('0xb')]='UserId';_0x351f5a=as['buildExpression'](_0x50642d,_0x370db4[_0xca0b('0x42')],_0x14acd3);_0x50d87d[_0xca0b('0x54')][_0xe7f5f5](_0x351f5a[_0xca0b('0x44')],_0x351f5a['value'][_0xca0b('0x46')],_0x351f5a[_0xca0b('0x45')]['end']);}break;case'body':case'plainBody':_0x351f5a=as[_0xca0b('0x41')]('me',null,_0x14acd3);_0x50d87d[_0xca0b('0x57')][_0xe7f5f5](_0x351f5a[_0xca0b('0x44')],_0x351f5a['value']['start'],_0x351f5a[_0xca0b('0x45')][_0xca0b('0x47')]);break;}}}return _0x50d87d;}function parseModelFields(_0x250288,_0x174e81,_0xeea21f){var _0x32e498=utils['getAccountFK'](_0x250288);var _0x4e81ec=squel['expr']();var _0x456ea1=_(_0x174e81)[_0xca0b('0x58')]()['map'](function(_0xcb9937){return _[_0xca0b('0x59')](_0xeea21f,[_0xca0b('0xc'),_0xcb9937])?_0xcb9937:undefined;})['compact']()[_0xca0b('0x45')]();if(_0x456ea1['length']>0x0){_0x456ea1[_0xca0b('0x29')](function(_0x40f0fe){if(_0x40f0fe===_0x32e498){_0x4e81ec[_0xca0b('0x4a')]('i.'+_0x32e498+_0xca0b('0x5a'),[][_0xca0b('0x5b')](_0x174e81[_0x40f0fe]));}else if(_0x40f0fe===_0xca0b('0x5c')){var _0x1be210=JSON[_0xca0b('0x5d')](_0x174e81[_0x40f0fe])[_0xca0b('0x5e')];var _0x35a678=JSON[_0xca0b('0x5d')](_0x174e81[_0x40f0fe])[_0xca0b('0x5f')];_0x4e81ec[_0xca0b('0x4a')](_0xca0b('0x60'),_0x1be210,_0x35a678);}else{if(_0x174e81[_0x40f0fe]===_0xca0b('0x61')){_0x4e81ec[_0xca0b('0x4a')]('i.'+_0x40f0fe+_0xca0b('0x62'));}else{_0x4e81ec[_0xca0b('0x4a')]('i.'+_0x40f0fe+'\x20=\x20?',_0x174e81[_0x40f0fe]);}}});}return _0x4e81ec;}function parseQueryParameters(_0x27fdbd,_0xbef02e,_0x597cc4){var _0x6b80aa=getSqlClauses();return Promise[_0xca0b('0x63')]()[_0xca0b('0x64')](function(){return parseModelFields(_0x27fdbd,_0xbef02e,_0x597cc4);})[_0xca0b('0x64')](function(_0x36763b){_0x6b80aa[_0xca0b('0x65')][_0xca0b('0x4a')](_0x36763b);return parseReadParameter(_0xbef02e[_0xca0b('0x49')]);})['then'](function(_0x197f17){_0x6b80aa[_0xca0b('0x49')][_0xca0b('0x4a')](_0x197f17);return parseTagParameter(_0xbef02e[_0xca0b('0x66')]);})['then'](function(_0x4e2e13){_0x6b80aa[_0xca0b('0x52')][_0xca0b('0x53')]['and'](_0x4e2e13);return parseSearchFilter(_0x27fdbd,_0xbef02e[_0xca0b('0x67')]);})['then'](function(_0x578bef){_0x6b80aa[_0xca0b('0x67')]=_0x578bef;return _0x6b80aa;});}function checkAccountsRestrictions(_0x3716e8,_0x30e70f,_0x47b3fc){var _0x571d30=utils[_0xca0b('0x6')](_0x3716e8);var _0x5aee92='get'+_[_0xca0b('0x68')](_0x3716e8)+(_0x3716e8==='chat'?_0xca0b('0x69'):_0xca0b('0x6a'));var _0x1426bc=squel['expr']();return Promise[_0xca0b('0x63')]()['then'](function(){if(_0x47b3fc[_0xca0b('0x9')]&&_0x30e70f[_0xca0b('0x7')]===_0xca0b('0x8')){return _0x30e70f[_0x5aee92]({'attributes':['id'],'raw':!![]});}})[_0xca0b('0x64')](function(_0x5cf29b){if(_0x5cf29b){if(_0x5cf29b[_0xca0b('0x19')]===0x0){_0x1426bc[_0xca0b('0x4a')]('i.'+_0x571d30+_0xca0b('0x62'));}else{_0x1426bc[_0xca0b('0x4a')]('i.'+_0x571d30+_0xca0b('0x5a'),_[_0xca0b('0x1b')](_0x5cf29b,'id'));}}else if(!_0x47b3fc[_0x571d30]){_0x1426bc[_0xca0b('0x4a')]('i.'+_0x571d30+_0xca0b('0x6b'));}})[_0xca0b('0x64')](function(){return _0x1426bc;});}function getClosedOrderClause(_0x52ad21,_0x5a7608){var _0x122764='';var _0xdcb0a0=[_0xca0b('0x6c'),_0xca0b('0x6d'),_0xca0b('0x6e')];if(_0x52ad21===_0xca0b('0x37')){_0xdcb0a0['unshift'](_0xca0b('0x6f'));}if(_0x5a7608[_0xca0b('0x70')]==='0'&&_0x52ad21===_0xca0b('0x37')){_0x122764='i.substatus';}else{if(_0x5a7608[_0xca0b('0x70')]==='1'){_0xdcb0a0[_0xca0b('0x71')]();}_0x122764=_0xca0b('0x72')+_0xdcb0a0[_0xca0b('0x73')](',\x20')+')';}return _0x122764;}function getFilteredInteractions(_0x7e1c9f,_0x395c99,_0x39c71e,_0x1f123b){var _0x4bf574=utils['getInteractionFK'](_0x7e1c9f);var _0x5cc68e=_['capitalize'](_0x7e1c9f)+'Interaction';var _0x412d78=[];var _0x294e6c=getTagsQuery();var _0x1d07a2={'type':db[_0xca0b('0x74')][_0xca0b('0x75')][_0xca0b('0x76')],'raw':!![]};var _0x28a14b=[];var _0x67c743=[];return db[_0xca0b('0x77')][_0xca0b('0x78')](_0x294e6c['toString'](),_0x1d07a2)[_0xca0b('0x64')](function(_0x5f31c6){_0x412d78=_[_0xca0b('0x79')](_0x5f31c6,'id');_0x1d07a2=_['merge'](_0x1d07a2,{'model':db[_0x5cc68e],'mapToModel':!![],'nest':!![]});if(_0x39c71e[_0xca0b('0x65')]){_0x1f123b[_0xca0b('0x7a')]['forEach'](function(_0x57bdb3){_0x395c99[_0xca0b('0xb')]('i.'+_0x57bdb3);});}else{_0x395c99[_0xca0b('0xb')](_0xca0b('0x7b'),'unreadMessages');_0x395c99[_0xca0b('0xb')](_0xca0b('0x7c'),_0xca0b('0x7d'));_0x395c99[_0xca0b('0xb')]('a.mandatoryDisposition',_0xca0b('0x7e'));if(_0x7e1c9f==='mail'){_0x395c99[_0xca0b('0xb')]('a.email',_0xca0b('0x7f'));_0x395c99[_0xca0b('0xb')]('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',_0xca0b('0x80'));_0x395c99[_0xca0b('0xb')]('i.id');_0x395c99[_0xca0b('0xb')](_0xca0b('0x81'));_0x395c99[_0xca0b('0xb')]('i.updatedAt');_0x395c99[_0xca0b('0xb')](_0xca0b('0x82'));_0x395c99[_0xca0b('0xb')]('i.closedAt');_0x395c99[_0xca0b('0xb')](_0xca0b('0x83'));_0x395c99[_0xca0b('0xb')](_0xca0b('0x84'));_0x395c99[_0xca0b('0xb')](_0xca0b('0x85'));_0x395c99[_0xca0b('0xb')](_0xca0b('0x86'));_0x395c99[_0xca0b('0xb')](_0xca0b('0x6e'));_0x395c99[_0xca0b('0xb')](_0xca0b('0x6d'));_0x395c99[_0xca0b('0xb')](_0xca0b('0x6c'));_0x395c99[_0xca0b('0xb')]('i.substatus');_0x395c99[_0xca0b('0xb')](_0xca0b('0x87'));_0x395c99[_0xca0b('0xb')](_0xca0b('0x88'));_0x395c99[_0xca0b('0xb')](_0xca0b('0x89'));_0x395c99[_0xca0b('0xb')](_0xca0b('0x8a'));}else if(_0x7e1c9f==='openchannel'){_0x395c99[_0xca0b('0xb')](_0xca0b('0x8b'),_0xca0b('0x80'));}else{_0x395c99[_0xca0b('0xb')](_0xca0b('0x8c'),_0xca0b('0x80'));}if(_0x7e1c9f!=='mail'){_0x395c99[_0xca0b('0xb')](_0xca0b('0x8d'));}_0x395c99[_0xca0b('0xb')](_0xca0b('0x8e'),_0xca0b('0x8f'));_0x395c99[_0xca0b('0xb')](_0xca0b('0x90'),_0xca0b('0x91'));_0x395c99[_0xca0b('0xb')](_0xca0b('0x92'),_0xca0b('0x93'));_0x395c99[_0xca0b('0xb')]('c.phone',_0xca0b('0x94'));_0x395c99['field'](_0xca0b('0x95'),_0xca0b('0x96'));_0x395c99['field'](_0xca0b('0x97'),_0xca0b('0x98'));_0x395c99['field']('o.fullname',_0xca0b('0x99'));_0x395c99[_0xca0b('0xb')](_0xca0b('0x9a'),'Owner.internal');_0x395c99[_0xca0b('0xb')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0xca0b('0x9b'));}if(_0x1f123b['limit']){_0x395c99[_0xca0b('0x9c')](_0x1f123b[_0xca0b('0x9c')]);}if(_0x1f123b[_0xca0b('0x9d')]){_0x395c99['offset'](_0x1f123b['offset']);}return db['sequelize'][_0xca0b('0x78')](_0x395c99[_0xca0b('0x9e')](),_0x1d07a2);})[_0xca0b('0x64')](function(_0x3cd7d6){_0x28a14b=_0x3cd7d6;var _0x23d2b1=getUsersQuery(_0x7e1c9f,_0x28a14b);return db[_0xca0b('0x77')][_0xca0b('0x78')](_0x23d2b1['toString'](),_0x1d07a2);})['then'](function(_0x283628){_0x67c743=_[_0xca0b('0x9f')](_0x283628,_0x4bf574);if(_0x7e1c9f===_0xca0b('0x37')){return db[_0xca0b('0xa0')][_0xca0b('0xa1')]({'attributes':[_0xca0b('0xa2')],'raw':!![]});}})[_0xca0b('0x64')](function(_0x2d857f){var _0x9b78b=_0x2d857f?_0x2d857f[_0xca0b('0xa2')]:undefined;var _0x4b9764=_0x28a14b['map'](function(_0x5a453b){return updateInteraction(_0x5a453b,_0x412d78,_0x67c743,_0x9b78b);});return Promise[_0xca0b('0xa3')](_0x4b9764);});}function countFilteredInteractions(_0x2cee7e,_0x144cc1){var _0x50e10a=_0x2cee7e['clone']();_0x50e10a[_0xca0b('0xb')](_0xca0b('0xa4'));_0x50e10a[_0xca0b('0xb')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0xca0b('0x48'));var _0x3ff232=utils['getSelectedTags'](_0x144cc1);if(!_[_0xca0b('0xa5')](_0x3ff232)){_0x50e10a[_0xca0b('0x1a')](_0xca0b('0xa6'),_0x3ff232);}var _0x26e684={'type':db['Sequelize'][_0xca0b('0x75')][_0xca0b('0x76')],'raw':!![]};return db[_0xca0b('0x77')]['query'](_0x50e10a[_0xca0b('0x9e')](),_0x26e684);}module[_0xca0b('0xa7')]={'checkAccountsRestrictions':checkAccountsRestrictions,'countFilteredInteractions':countFilteredInteractions,'getClosedOrderClause':getClosedOrderClause,'getFilteredInteractions':getFilteredInteractions,'getInteractionsQuery':getInteractionsQuery,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipInteractionsQuery':skipInteractionsQuery};
\ No newline at end of file
index 5731be4..6ff9793 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x92d4=['../../mysqldb','map','fullname','split','forEach','push','waiting','unmanaged','total','closed','disposition','abandoned','UserId','talking','MailMessage','out','plainBody','-id','then','lastMsgText','trimStart','catch','updateInteraction','Users','TagIds','Tags','lodash'];(function(_0xd5aeb,_0x3cbde2){var _0x2e1d20=function(_0x216fb5){while(--_0x216fb5){_0xd5aeb['push'](_0xd5aeb['shift']());}};_0x2e1d20(++_0x3cbde2);}(_0x92d4,0x194));var _0x492d=function(_0x1f9075,_0x5e1e11){_0x1f9075=_0x1f9075-0x0;var _0x59b741=_0x92d4[_0x1f9075];return _0x59b741;};'use strict';var _=require(_0x492d('0x0'));var db=require(_0x492d('0x1'))['db'];function getInteractionUsers(_0x335f7b,_0xf41c89){return new Promise(function(_0x290c20,_0x9961e8){try{var _0x3c5942=[];if(_0xf41c89[_0x335f7b]){_0x3c5942=_0xf41c89[_0x335f7b][_0x492d('0x2')](function(_0x2e4139){return{'id':_0x2e4139['id'],'fullname':_0x2e4139[_0x492d('0x3')]};});}return _0x290c20(_0x3c5942);}catch(_0xde1ead){_0x9961e8(_0xde1ead);}});}function getInteractionTags(_0x4b7d0a,_0x3b7462){var _0x40464e=[];if(_0x4b7d0a){_0x4b7d0a[_0x492d('0x4')](',')[_0x492d('0x5')](function(_0x1ee1b0){_0x40464e[_0x492d('0x6')](_0x3b7462[_0x1ee1b0]);});}return _0x40464e;}function updateWaitingCounter(_0x17b7e3){if(_0x17b7e3[_0x492d('0x7')]){_0x17b7e3[_0x492d('0x7')]-=0x1;}}function updateInteractionCounters(_0x41a3b2){_0x41a3b2[_0x492d('0x7')]=0x0;_0x41a3b2['talking']=0x0;_0x41a3b2['answered']=0x0;_0x41a3b2[_0x492d('0x8')]=0x0;_0x41a3b2['abandoned']=0x0;_0x41a3b2[_0x492d('0x9')]=0x0;if(_0x41a3b2[_0x492d('0xa')]){if(_0x41a3b2[_0x492d('0xb')]===_0x492d('0xc')){_0x41a3b2[_0x492d('0xc')]+=0x1;updateWaitingCounter(_0x41a3b2);}if(_0x41a3b2[_0x492d('0xd')]){_0x41a3b2['answered']+=0x1;if(_0x41a3b2[_0x492d('0xe')]){_0x41a3b2[_0x492d('0xe')]-=0x1;}}else{if(_0x41a3b2[_0x492d('0xb')]){_0x41a3b2[_0x492d('0x8')]+=0x1;updateWaitingCounter(_0x41a3b2);}}}else{if(!_0x41a3b2[_0x492d('0xd')]){_0x41a3b2['waiting']+=0x1;}if(_0x41a3b2['UserId']){_0x41a3b2[_0x492d('0xe')]+=0x1;updateWaitingCounter(_0x41a3b2);}}_0x41a3b2[_0x492d('0x9')]+=0x1;return _0x41a3b2;}function getLastMessageText(_0x4fd112){return db[_0x492d('0xf')]['findOne']({'where':{'$and':[{'MailInteractionId':_0x4fd112['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0x492d('0x10')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':[_0x492d('0x11')],'order':_0x492d('0x12'),'raw':!![]})[_0x492d('0x13')](function(_0x1224a4){if(_0x1224a4&&_0x1224a4[_0x492d('0x11')]){_0x4fd112[_0x492d('0x14')]=_[_0x492d('0x15')](_0x1224a4[_0x492d('0x11')]);}return _0x4fd112;})[_0x492d('0x16')](function(_0x1df93c){throw _0x1df93c;});}exports[_0x492d('0x17')]=function(_0x367bd4,_0x40432c,_0x949e42,_0x39a69d){return new Promise(function(_0x580c72,_0x2f767f){return getInteractionUsers(_0x367bd4['id'],_0x949e42)[_0x492d('0x13')](function(_0x262415){_0x367bd4[_0x492d('0x18')]=_0x262415;return getInteractionTags(_0x367bd4[_0x492d('0x19')],_0x40432c);})[_0x492d('0x13')](function(_0x4ae203){_0x367bd4[_0x492d('0x1a')]=_0x4ae203;delete _0x367bd4['TagIds'];return updateInteractionCounters(_0x367bd4);})[_0x492d('0x13')](function(_0x5ad6a3){if(_0x39a69d){return getLastMessageText(_0x5ad6a3);}else{return _0x5ad6a3;}})['then'](function(_0x141ac5){_0x580c72(_0x141ac5);})[_0x492d('0x16')](function(_0x1fc33b){_0x2f767f(_0x1fc33b);});});};
\ No newline at end of file
+var _0x1a95=['talking','MailMessage','findOne','out','plainBody','-id','then','catch','Users','TagIds','Tags','../../mysqldb','map','fullname','forEach','push','waiting','answered','unmanaged','abandoned','total','closed','disposition'];(function(_0x212249,_0xefef34){var _0x5e091e=function(_0x326e81){while(--_0x326e81){_0x212249['push'](_0x212249['shift']());}};_0x5e091e(++_0xefef34);}(_0x1a95,0x14d));var _0x51a9=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x1a95[_0x321bb2];return _0x9c12ed;};'use strict';var _=require('lodash');var db=require(_0x51a9('0x0'))['db'];function getInteractionUsers(_0x5259e0,_0x3651c1){return new Promise(function(_0x4e392c,_0x41f901){try{var _0x2894e2=[];if(_0x3651c1[_0x5259e0]){_0x2894e2=_0x3651c1[_0x5259e0][_0x51a9('0x1')](function(_0xb048c3){return{'id':_0xb048c3['id'],'fullname':_0xb048c3[_0x51a9('0x2')]};});}return _0x4e392c(_0x2894e2);}catch(_0x406add){_0x41f901(_0x406add);}});}function getInteractionTags(_0x3d7fd4,_0x25c5b2){var _0x21fb05=[];if(_0x3d7fd4){_0x3d7fd4['split'](',')[_0x51a9('0x3')](function(_0x55288e){_0x21fb05[_0x51a9('0x4')](_0x25c5b2[_0x55288e]);});}return _0x21fb05;}function updateWaitingCounter(_0x356ef4){if(_0x356ef4[_0x51a9('0x5')]){_0x356ef4['waiting']-=0x1;}}function updateInteractionCounters(_0x5652c5){_0x5652c5[_0x51a9('0x5')]=0x0;_0x5652c5['talking']=0x0;_0x5652c5[_0x51a9('0x6')]=0x0;_0x5652c5[_0x51a9('0x7')]=0x0;_0x5652c5[_0x51a9('0x8')]=0x0;_0x5652c5[_0x51a9('0x9')]=0x0;if(_0x5652c5[_0x51a9('0xa')]){if(_0x5652c5[_0x51a9('0xb')]===_0x51a9('0x8')){_0x5652c5[_0x51a9('0x8')]+=0x1;updateWaitingCounter(_0x5652c5);}if(_0x5652c5['UserId']){_0x5652c5[_0x51a9('0x6')]+=0x1;if(_0x5652c5[_0x51a9('0xc')]){_0x5652c5[_0x51a9('0xc')]-=0x1;}}else{if(_0x5652c5[_0x51a9('0xb')]){_0x5652c5[_0x51a9('0x7')]+=0x1;updateWaitingCounter(_0x5652c5);}}}else{if(!_0x5652c5['UserId']){_0x5652c5[_0x51a9('0x5')]+=0x1;}if(_0x5652c5['UserId']){_0x5652c5[_0x51a9('0xc')]+=0x1;updateWaitingCounter(_0x5652c5);}}_0x5652c5['total']+=0x1;return _0x5652c5;}function getLastMessageText(_0x59b514){return db[_0x51a9('0xd')][_0x51a9('0xe')]({'where':{'$and':[{'MailInteractionId':_0x59b514['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0x51a9('0xf')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':[_0x51a9('0x10')],'order':_0x51a9('0x11'),'raw':!![]})[_0x51a9('0x12')](function(_0x2aa3ff){if(_0x2aa3ff&&_0x2aa3ff[_0x51a9('0x10')]){_0x59b514['lastMsgText']=_['trimStart'](_0x2aa3ff['plainBody']);}return _0x59b514;})[_0x51a9('0x13')](function(_0x33a1ad){throw _0x33a1ad;});}exports['updateInteraction']=function(_0x221401,_0x1a7ceb,_0x33d057,_0xc60387){return new Promise(function(_0x5035b0,_0x346687){return getInteractionUsers(_0x221401['id'],_0x33d057)[_0x51a9('0x12')](function(_0x35c006){_0x221401[_0x51a9('0x14')]=_0x35c006;return getInteractionTags(_0x221401[_0x51a9('0x15')],_0x1a7ceb);})['then'](function(_0x3b3b7c){_0x221401[_0x51a9('0x16')]=_0x3b3b7c;delete _0x221401[_0x51a9('0x15')];return updateInteractionCounters(_0x221401);})['then'](function(_0xc43de){if(_0xc60387){return getLastMessageText(_0xc43de);}else{return _0xc43de;}})['then'](function(_0x591374){_0x5035b0(_0x591374);})[_0x51a9('0x13')](function(_0x5e2a82){_0x346687(_0x5e2a82);});});};
\ No newline at end of file
index a461ade..37194b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3145=['sms-interactions','chat-interactions','chat','Website','capitalize','InteractionId','upperFirst','unknown','websites','accounts','_interactions','_interaction_has_tags','_messages','user_has_','toLowerCase','toUpperCase','role','stringify','null','findOne','update','then','info','catch','lodash','../../mysqldb','../../config/logger','openchannel-interactions','mail-interactions','fax-interactions'];(function(_0x28c972,_0x19f399){var _0x425ed3=function(_0x25cb24){while(--_0x25cb24){_0x28c972['push'](_0x28c972['shift']());}};_0x425ed3(++_0x19f399);}(_0x3145,0x162));var _0x5314=function(_0x5d474d,_0x94abd6){_0x5d474d=_0x5d474d-0x0;var _0x3425b1=_0x3145[_0x5d474d];return _0x3425b1;};'use strict';var _=require(_0x5314('0x0'));var db=require(_0x5314('0x1'))['db'];var loggers={'openchannel':require(_0x5314('0x2'))(_0x5314('0x3')),'mail':require(_0x5314('0x2'))(_0x5314('0x4')),'fax':require('../../config/logger')(_0x5314('0x5')),'sms':require('../../config/logger')(_0x5314('0x6')),'chat':require('../../config/logger')(_0x5314('0x7')),'whatsapp':require(_0x5314('0x2'))('whatsapp-interactions')};function getAccountFK(_0x1b2f9d){return _['capitalize'](_0x1b2f9d)+(_0x1b2f9d===_0x5314('0x8')?_0x5314('0x9'):'Account')+'Id';}function getInteractionFK(_0x27f083){return _[_0x5314('0xa')](_0x27f083)+_0x5314('0xb');}function getInteractionId(_0x1e30bb,_0x12231b,_0x2a7d08){if(_0x1e30bb&&_0x1e30bb[_[_0x5314('0xc')](_0x2a7d08)+_0x5314('0xb')]){return _0x1e30bb[_[_0x5314('0xc')](_0x2a7d08)+_0x5314('0xb')];}else if(_0x1e30bb&&_0x1e30bb['id']){return _0x1e30bb['id'];}else if(_0x12231b&&_0x12231b['id']){return _0x12231b['id'];}else{return _0x5314('0xd');}}function getInteractionsTables(_0x3ffde3){return{'accounts':_0x3ffde3+'_'+(_0x3ffde3===_0x5314('0x8')?_0x5314('0xe'):_0x5314('0xf')),'interactions':_0x3ffde3+_0x5314('0x10'),'interactionsTags':_0x3ffde3+_0x5314('0x11'),'messages':_0x3ffde3+_0x5314('0x12'),'userInteractions':_0x5314('0x13')+_0x3ffde3+_0x5314('0x10')};}function getSelectedTags(_0xc98906){var _0x357416=[];if(_0xc98906){_0x357416=Array['isArray'](_0xc98906)?_0xc98906:[_0xc98906];}return _0x357416;}function log(_0x527fa5,_0x55f8d3,_0x350da2,_0xd0f091,_0x45333a,_0x53a974){loggers[_0x45333a[_0x5314('0x14')]()][_0x527fa5]('[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x53a974[_0x5314('0x15')](),_0x55f8d3?_0x55f8d3['id']:null,_0x55f8d3?_0x55f8d3['name']:null,_0x55f8d3?_0x55f8d3[_0x5314('0x16')]:null,getInteractionId(_0x350da2,_0xd0f091,_0x45333a),_0x350da2?JSON[_0x5314('0x17')](_0x350da2):_0x5314('0x18'));}function updateUser(_0x2d9a90,_0x589de0,_0x253a54,_0x21ce8b,_0x41d193){db[_['upperFirst'](_0x21ce8b)+'Interaction'][_0x5314('0x19')]({'where':{'id':getInteractionId(_0x589de0,_0x253a54,_0x21ce8b)}})['then'](function(_0x26ba3b){if(_0x26ba3b){return _0x26ba3b[_0x5314('0x1a')]({'UserId':_0x2d9a90?_0x2d9a90['id']:null});}})[_0x5314('0x1b')](function(_0xb6451b){if(_0xb6451b){log(_0x5314('0x1c'),_0x2d9a90,_0x589de0,_0x253a54,_0x21ce8b,_0x41d193);}})[_0x5314('0x1d')](function(){log('error',_0x2d9a90,_0x589de0,_0x253a54,_0x21ce8b,_0x41d193);});}module['exports']={'getAccountFK':getAccountFK,'getInteractionFK':getInteractionFK,'getInteractionsTables':getInteractionsTables,'getSelectedTags':getSelectedTags,'updateUser':updateUser};
\ No newline at end of file
+var _0xf0ad=['Interaction','then','update','info','catch','error','exports','../../mysqldb','../../config/logger','openchannel-interactions','mail-interactions','fax-interactions','sms-interactions','chat-interactions','whatsapp-interactions','chat','Website','Account','capitalize','InteractionId','upperFirst','unknown','websites','accounts','_interactions','_messages','user_has_','isArray','toLowerCase','stringify','null'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0xf0ad,0x19a));var _0xdf0a=function(_0x263a74,_0xc31414){_0x263a74=_0x263a74-0x0;var _0x2aa86c=_0xf0ad[_0x263a74];return _0x2aa86c;};'use strict';var _=require('lodash');var db=require(_0xdf0a('0x0'))['db'];var loggers={'openchannel':require(_0xdf0a('0x1'))(_0xdf0a('0x2')),'mail':require(_0xdf0a('0x1'))(_0xdf0a('0x3')),'fax':require(_0xdf0a('0x1'))(_0xdf0a('0x4')),'sms':require(_0xdf0a('0x1'))(_0xdf0a('0x5')),'chat':require('../../config/logger')(_0xdf0a('0x6')),'whatsapp':require('../../config/logger')(_0xdf0a('0x7'))};function getAccountFK(_0x8ebdea){return _['capitalize'](_0x8ebdea)+(_0x8ebdea===_0xdf0a('0x8')?_0xdf0a('0x9'):_0xdf0a('0xa'))+'Id';}function getInteractionFK(_0x35e858){return _[_0xdf0a('0xb')](_0x35e858)+_0xdf0a('0xc');}function getInteractionId(_0xb4b0e7,_0x28852f,_0x10913f){if(_0xb4b0e7&&_0xb4b0e7[_[_0xdf0a('0xd')](_0x10913f)+_0xdf0a('0xc')]){return _0xb4b0e7[_[_0xdf0a('0xd')](_0x10913f)+_0xdf0a('0xc')];}else if(_0xb4b0e7&&_0xb4b0e7['id']){return _0xb4b0e7['id'];}else if(_0x28852f&&_0x28852f['id']){return _0x28852f['id'];}else{return _0xdf0a('0xe');}}function getInteractionsTables(_0x51c0cf){return{'accounts':_0x51c0cf+'_'+(_0x51c0cf===_0xdf0a('0x8')?_0xdf0a('0xf'):_0xdf0a('0x10')),'interactions':_0x51c0cf+_0xdf0a('0x11'),'interactionsTags':_0x51c0cf+'_interaction_has_tags','messages':_0x51c0cf+_0xdf0a('0x12'),'userInteractions':_0xdf0a('0x13')+_0x51c0cf+'_interactions'};}function getSelectedTags(_0x2df64a){var _0x26a814=[];if(_0x2df64a){_0x26a814=Array[_0xdf0a('0x14')](_0x2df64a)?_0x2df64a:[_0x2df64a];}return _0x26a814;}function log(_0x2d892c,_0x30f820,_0x279a36,_0x1c23b7,_0xced9c,_0x2a69ca){loggers[_0xced9c[_0xdf0a('0x15')]()][_0x2d892c]('[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x2a69ca['toUpperCase'](),_0x30f820?_0x30f820['id']:null,_0x30f820?_0x30f820['name']:null,_0x30f820?_0x30f820['role']:null,getInteractionId(_0x279a36,_0x1c23b7,_0xced9c),_0x279a36?JSON[_0xdf0a('0x16')](_0x279a36):_0xdf0a('0x17'));}function updateUser(_0x20c2cc,_0x159a97,_0x41513f,_0x2c8ad4,_0x17a8f8){db[_[_0xdf0a('0xd')](_0x2c8ad4)+_0xdf0a('0x18')]['findOne']({'where':{'id':getInteractionId(_0x159a97,_0x41513f,_0x2c8ad4)}})[_0xdf0a('0x19')](function(_0x3e382e){if(_0x3e382e){return _0x3e382e[_0xdf0a('0x1a')]({'UserId':_0x20c2cc?_0x20c2cc['id']:null});}})[_0xdf0a('0x19')](function(_0x54d03d){if(_0x54d03d){log(_0xdf0a('0x1b'),_0x20c2cc,_0x159a97,_0x41513f,_0x2c8ad4,_0x17a8f8);}})[_0xdf0a('0x1c')](function(){log(_0xdf0a('0x1d'),_0x20c2cc,_0x159a97,_0x41513f,_0x2c8ad4,_0x17a8f8);});}module[_0xdf0a('0x1e')]={'getAccountFK':getAccountFK,'getInteractionFK':getInteractionFK,'getInteractionsTables':getInteractionsTables,'getSelectedTags':getSelectedTags,'updateUser':updateUser};
\ No newline at end of file
index 7b81185..70084ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f5c=['parse','use','findOne','then','status','json','users','User','admin','user','isUserLimit','crypto','util','composable-middleware','../../mysqldb','../../config/environment','data1','license','split','createDecipher','aes-256-ctr','format','%s:%s:%s','base64','utf8','final'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x4f5c,0x10f));var _0xc4f5=function(_0x271ade,_0x378273){_0x271ade=_0x271ade-0x0;var _0x49bf1a=_0x4f5c[_0x271ade];return _0x49bf1a;};'use strict';var crypto=require(_0xc4f5('0x0'));var util=require(_0xc4f5('0x1'));var compose=require(_0xc4f5('0x2'));var db=require(_0xc4f5('0x3'))['db'];var config=require(_0xc4f5('0x4'));function getValueFromLicense(_0x41a7e9,_0x29272e){if(_0x41a7e9&&_0x29272e){if(_0x29272e[_0xc4f5('0x5')]&&_0x29272e['license']){var _0xacbda2=_0x29272e['data1'];var _0xdd80e2=_0x29272e[_0xc4f5('0x6')];var _0x1c9520=_0xacbda2[_0xc4f5('0x7')]('-')[0x4];var _0x326836=_0xacbda2[_0xc4f5('0x7')]('-')[0x0];var _0x3f052e=crypto[_0xc4f5('0x8')](_0xc4f5('0x9'),util[_0xc4f5('0xa')](_0xc4f5('0xb'),_0x1c9520,_0xacbda2,_0x326836));var _0x2cee23=_0x3f052e['update'](_0xdd80e2,_0xc4f5('0xc'),_0xc4f5('0xd'));_0x2cee23+=_0x3f052e[_0xc4f5('0xe')](_0xc4f5('0xd'));var _0x2aa39f=JSON[_0xc4f5('0xf')](_0x2cee23);return _0x2aa39f['hasOwnProperty'](_0x41a7e9)?_0x2aa39f[_0x41a7e9]:null;}}return null;}function isLimit(_0x2b2eb3,_0x458ed7,_0x1808d5,_0x29d8f8){var _0x3f7ae6=_0x458ed7;return compose()[_0xc4f5('0x10')](function(_0x2864f3,_0x15245c,_0x5d726f){return db['License'][_0xc4f5('0x11')]({'where':{'id':0x1},'raw':!![]})[_0xc4f5('0x12')](function(_0x5a8bc2){var _0xeb9210=getValueFromLicense(_0x2b2eb3,_0x5a8bc2);return _0xeb9210?_0xeb9210:_0x3f7ae6;})['then'](function(_0x3d3ff3){_0x3f7ae6=_0x3d3ff3;return _0x1808d5['count'](_0x29d8f8);})[_0xc4f5('0x12')](function(_0x520eb5){if(_0x520eb5>=_0x3f7ae6){return _0x15245c[_0xc4f5('0x13')](0x193)[_0xc4f5('0x14')]({'message':util[_0xc4f5('0xa')]('Maximum\x20%s\x20limit\x20have\x20been\x20reached',_0x2b2eb3)});}_0x5d726f();})['catch'](function(_0x1bc9d6){_0x5d726f(_0x1bc9d6);});});}function isUserLimit(){return isLimit(_0xc4f5('0x15'),0x1,db[_0xc4f5('0x16')],{'where':{'$or':[{'role':_0xc4f5('0x17')},{'role':_0xc4f5('0x18')}]}});}exports[_0xc4f5('0x19')]=isUserLimit;
\ No newline at end of file
+var _0x5644=['then','count','status','json','Maximum\x20%s\x20limit\x20have\x20been\x20reached','users','admin','user','isUserLimit','crypto','util','composable-middleware','../../mysqldb','data1','license','split','createDecipher','aes-256-ctr','format','update','base64','utf8','hasOwnProperty','use','findOne'];(function(_0x260088,_0x4cb751){var _0x1c25e8=function(_0x33384f){while(--_0x33384f){_0x260088['push'](_0x260088['shift']());}};_0x1c25e8(++_0x4cb751);}(_0x5644,0x167));var _0x4564=function(_0x7a3247,_0x15cb12){_0x7a3247=_0x7a3247-0x0;var _0x1bfde5=_0x5644[_0x7a3247];return _0x1bfde5;};'use strict';var crypto=require(_0x4564('0x0'));var util=require(_0x4564('0x1'));var compose=require(_0x4564('0x2'));var db=require(_0x4564('0x3'))['db'];var config=require('../../config/environment');function getValueFromLicense(_0x1961c2,_0x3f24a9){if(_0x1961c2&&_0x3f24a9){if(_0x3f24a9[_0x4564('0x4')]&&_0x3f24a9[_0x4564('0x5')]){var _0x5645f0=_0x3f24a9[_0x4564('0x4')];var _0x2a2554=_0x3f24a9[_0x4564('0x5')];var _0x4fee05=_0x5645f0[_0x4564('0x6')]('-')[0x4];var _0x24979b=_0x5645f0[_0x4564('0x6')]('-')[0x0];var _0x1792b2=crypto[_0x4564('0x7')](_0x4564('0x8'),util[_0x4564('0x9')]('%s:%s:%s',_0x4fee05,_0x5645f0,_0x24979b));var _0x4866ad=_0x1792b2[_0x4564('0xa')](_0x2a2554,_0x4564('0xb'),_0x4564('0xc'));_0x4866ad+=_0x1792b2['final'](_0x4564('0xc'));var _0x2743a8=JSON['parse'](_0x4866ad);return _0x2743a8[_0x4564('0xd')](_0x1961c2)?_0x2743a8[_0x1961c2]:null;}}return null;}function isLimit(_0x25b24b,_0x30f631,_0xaafe1b,_0x367ecb){var _0x24a03b=_0x30f631;return compose()[_0x4564('0xe')](function(_0x3a763c,_0x574c07,_0x31c8fa){return db['License'][_0x4564('0xf')]({'where':{'id':0x1},'raw':!![]})[_0x4564('0x10')](function(_0x1908db){var _0x3c72f5=getValueFromLicense(_0x25b24b,_0x1908db);return _0x3c72f5?_0x3c72f5:_0x24a03b;})[_0x4564('0x10')](function(_0x37cbc2){_0x24a03b=_0x37cbc2;return _0xaafe1b[_0x4564('0x11')](_0x367ecb);})['then'](function(_0x385657){if(_0x385657>=_0x24a03b){return _0x574c07[_0x4564('0x12')](0x193)[_0x4564('0x13')]({'message':util['format'](_0x4564('0x14'),_0x25b24b)});}_0x31c8fa();})['catch'](function(_0x1ea326){_0x31c8fa(_0x1ea326);});});}function isUserLimit(){return isLimit(_0x4564('0x15'),0x1,db['User'],{'where':{'$or':[{'role':_0x4564('0x16')},{'role':_0x4564('0x17')}]}});}exports[_0x4564('0x18')]=isUserLimit;
\ No newline at end of file
index 1bfb32e..2c3ad16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5638=['filter','indexOf','map','push','buildExpression','DATE','operator','$eq','$between','value','includes','$gt','add','format','castTo','text','CAST(','field','\x20AS\x20','$ne','\x20OR\x20','\x20IS\x20NULL)','$in','IN\x20?','$notIn','=\x20?','<>\x20?','$substring','$startsWith','$endsWith','LIKE\x20?','$lt','<\x20?','>\x20?','$lte','<=\x20?','>=\x20?','BETWEEN\x20?\x20AND\x20?','start','pop','utcOffset','hours','minutes','seconds','parseSearch','startsWith','[$or]','and','replace','length','split','forEach','shift'];(function(_0x2aa492,_0x5ce9bb){var _0x528316=function(_0x2f0e6f){while(--_0x2f0e6f){_0x2aa492['push'](_0x2aa492['shift']());}};_0x528316(++_0x5ce9bb);}(_0x5638,0x96));var _0x8563=function(_0xd8825,_0x40f5eb){_0xd8825=_0xd8825-0x0;var _0x782b17=_0x5638[_0xd8825];return _0x782b17;};'use strict';var _=require('lodash');var moment=require('moment');exports[_0x8563('0x0')]=function(_0x4191a5){var _0x22e75b={'conditions':[]};_0x22e75b['sqlOperator']=_[_0x8563('0x1')](_0x4191a5,_0x8563('0x2'))?'or':_0x8563('0x3');var _0x39813a=_0x4191a5[_0x8563('0x4')]('[$and]','')[_0x8563('0x4')](_0x8563('0x2'),'')['split']('||');for(var _0x32b403=0x0;_0x32b403<_0x39813a[_0x8563('0x5')];_0x32b403++){var _0x1a4e91=_0x39813a[_0x32b403][_0x8563('0x6')](':=');var _0x374b6c=_0x1a4e91[0x0];var _0x39b17b=_0x1a4e91['slice'](0x1);_0x39b17b[_0x8563('0x7')](function(_0x37549c){var _0x4cb222=_0x37549c[_0x8563('0x6')]('[')[_0x8563('0x8')]();var _0x4b2606=_0x37549c['match'](/\[(.*?)\]/g);_0x4b2606[_0x8563('0x7')](function(_0x37f240){var _0x39ee86=_0x37f240[_0x8563('0x6')]('[')[_0x8563('0x9')](function(_0x164078){return _0x164078[_0x8563('0xa')](']')>-0x1;})[_0x8563('0xb')](function(_0x5a1d38){return _0x5a1d38[_0x8563('0x6')](']')[0x0];})[0x0];_0x22e75b['conditions'][_0x8563('0xc')]({'field':_0x374b6c,'operator':_0x4cb222,'value':_0x39ee86});});});}return _0x22e75b;};exports[_0x8563('0xd')]=function(_0x26bba1,_0x3d2e7b,_0x2ffda6){var _0x377d5e={};if(_0x3d2e7b===_0x8563('0xe')){if(_0x2ffda6[_0x8563('0xf')]===_0x8563('0x10')){_0x2ffda6[_0x8563('0xf')]=_0x8563('0x11');_0x2ffda6[_0x8563('0x12')]+=','+_0x2ffda6['value'];}else if(_[_0x8563('0x13')]([_0x8563('0x14'),'$lte'],_0x2ffda6[_0x8563('0xf')])){_0x2ffda6[_0x8563('0x12')]=moment(_0x2ffda6['value'])[_0x8563('0x15')](0x1,'days')[_0x8563('0x16')]('YYYY-MM-DD');}}if(_0x2ffda6[_0x8563('0x17')]){_0x3d2e7b=_0x2ffda6[_0x8563('0x17')];_0x377d5e[_0x8563('0x18')]=_0x8563('0x19')+_0x26bba1+'.'+_0x2ffda6[_0x8563('0x1a')]+_0x8563('0x1b')+_0x2ffda6['castTo']+')\x20'+parseOperator(_0x2ffda6[_0x8563('0xf')]);}else{_0x377d5e[_0x8563('0x18')]=_0x26bba1+'.'+_0x2ffda6[_0x8563('0x1a')]+'\x20'+parseOperator(_0x2ffda6[_0x8563('0xf')]);}if(_['includes']([_0x8563('0x1c'),'$notIn'],_0x2ffda6[_0x8563('0xf')]))_0x377d5e[_0x8563('0x18')]='('+_0x377d5e[_0x8563('0x18')]+_0x8563('0x1d')+_0x26bba1+'.'+_0x2ffda6[_0x8563('0x1a')]+_0x8563('0x1e');_0x377d5e[_0x8563('0x12')]=parseValue(_0x3d2e7b,_0x2ffda6['operator'],_0x2ffda6['value']);return _0x377d5e;};function parseOperator(_0x1cffca){var _0x2f9d6e;switch(_0x1cffca){case _0x8563('0x1f'):_0x2f9d6e=_0x8563('0x20');break;case _0x8563('0x21'):_0x2f9d6e='NOT\x20IN\x20?';break;case _0x8563('0x10'):_0x2f9d6e=_0x8563('0x22');break;case _0x8563('0x1c'):_0x2f9d6e=_0x8563('0x23');break;case _0x8563('0x24'):case _0x8563('0x25'):case _0x8563('0x26'):_0x2f9d6e=_0x8563('0x27');break;case _0x8563('0x28'):_0x2f9d6e=_0x8563('0x29');break;case _0x8563('0x14'):_0x2f9d6e=_0x8563('0x2a');break;case _0x8563('0x2b'):_0x2f9d6e=_0x8563('0x2c');break;case'$gte':_0x2f9d6e=_0x8563('0x2d');break;case _0x8563('0x11'):_0x2f9d6e=_0x8563('0x2e');break;}return _0x2f9d6e;}function parseValue(_0x48cb36,_0x27552d,_0x227ff5){var _0x321e4b={'start':undefined,'end':undefined};switch(_0x27552d){case'$in':case'$notIn':_0x321e4b[_0x8563('0x2f')]=_0x227ff5[_0x8563('0x6')](',');break;case _0x8563('0x24'):_0x321e4b[_0x8563('0x2f')]='%'+_0x227ff5+'%';break;case _0x8563('0x25'):_0x321e4b[_0x8563('0x2f')]=_0x227ff5+'%';break;case _0x8563('0x26'):_0x321e4b[_0x8563('0x2f')]='%'+_0x227ff5;break;case'$between':var _0x56f42b=_0x227ff5[_0x8563('0x6')](',');var _0x227ff5=_0x56f42b['shift']();var _0x5760c7=_0x56f42b[_0x8563('0x30')]();if(_0x48cb36===_0x8563('0xe')){_0x227ff5=moment(_0x227ff5)['utcOffset'](0x0,!![])['format']();_0x5760c7=moment(_0x5760c7)[_0x8563('0x31')](0x0,!![])[_0x8563('0x15')](0x17,_0x8563('0x32'))[_0x8563('0x15')](0x3b,_0x8563('0x33'))[_0x8563('0x15')](0x3b,_0x8563('0x34'))[_0x8563('0x16')]();}_0x321e4b={'start':_0x227ff5,'end':_0x5760c7};break;default:_0x321e4b['start']=_0x227ff5;break;}return _0x321e4b;}
\ No newline at end of file
+var _0xe739=['DATE','hours','minutes','seconds','lodash','moment','parseSearch','and','replace','[$or]','split','length','forEach','match','indexOf','map','conditions','push','buildExpression','operator','$eq','$between','value','includes','$lte','add','format','YYYY-MM-DD','castTo','text','CAST(','field','$notIn','\x20IS\x20NULL)','$in','IN\x20?','NOT\x20IN\x20?','=\x20?','$ne','$substring','$startsWith','$endsWith','LIKE\x20?','$lt','<\x20?','$gt','<=\x20?','>=\x20?','start','shift'];(function(_0xa1e3e3,_0x29fe0e){var _0xc980e9=function(_0x1f5adc){while(--_0x1f5adc){_0xa1e3e3['push'](_0xa1e3e3['shift']());}};_0xc980e9(++_0x29fe0e);}(_0xe739,0xfe));var _0x9e73=function(_0xa5fe8a,_0x1f8745){_0xa5fe8a=_0xa5fe8a-0x0;var _0x4df430=_0xe739[_0xa5fe8a];return _0x4df430;};'use strict';var _=require(_0x9e73('0x0'));var moment=require(_0x9e73('0x1'));exports[_0x9e73('0x2')]=function(_0x37e71d){var _0x19830c={'conditions':[]};_0x19830c['sqlOperator']=_['startsWith'](_0x37e71d,'[$or]')?'or':_0x9e73('0x3');var _0x19d1f3=_0x37e71d[_0x9e73('0x4')]('[$and]','')['replace'](_0x9e73('0x5'),'')[_0x9e73('0x6')]('||');for(var _0x4f5c9c=0x0;_0x4f5c9c<_0x19d1f3[_0x9e73('0x7')];_0x4f5c9c++){var _0x5e9816=_0x19d1f3[_0x4f5c9c]['split'](':=');var _0x14640a=_0x5e9816[0x0];var _0x166e52=_0x5e9816['slice'](0x1);_0x166e52[_0x9e73('0x8')](function(_0x12e3cd){var _0x4da961=_0x12e3cd[_0x9e73('0x6')]('[')['shift']();var _0x2b15e7=_0x12e3cd[_0x9e73('0x9')](/\[(.*?)\]/g);_0x2b15e7[_0x9e73('0x8')](function(_0x49697a){var _0x5c2a72=_0x49697a['split']('[')['filter'](function(_0x3c267f){return _0x3c267f[_0x9e73('0xa')](']')>-0x1;})[_0x9e73('0xb')](function(_0x424469){return _0x424469['split'](']')[0x0];})[0x0];_0x19830c[_0x9e73('0xc')][_0x9e73('0xd')]({'field':_0x14640a,'operator':_0x4da961,'value':_0x5c2a72});});});}return _0x19830c;};exports[_0x9e73('0xe')]=function(_0x4f623b,_0x4b9c75,_0x377db8){var _0xfdf542={};if(_0x4b9c75==='DATE'){if(_0x377db8[_0x9e73('0xf')]===_0x9e73('0x10')){_0x377db8[_0x9e73('0xf')]=_0x9e73('0x11');_0x377db8[_0x9e73('0x12')]+=','+_0x377db8['value'];}else if(_[_0x9e73('0x13')](['$gt',_0x9e73('0x14')],_0x377db8[_0x9e73('0xf')])){_0x377db8[_0x9e73('0x12')]=moment(_0x377db8[_0x9e73('0x12')])[_0x9e73('0x15')](0x1,'days')[_0x9e73('0x16')](_0x9e73('0x17'));}}if(_0x377db8[_0x9e73('0x18')]){_0x4b9c75=_0x377db8[_0x9e73('0x18')];_0xfdf542[_0x9e73('0x19')]=_0x9e73('0x1a')+_0x4f623b+'.'+_0x377db8[_0x9e73('0x1b')]+'\x20AS\x20'+_0x377db8['castTo']+')\x20'+parseOperator(_0x377db8[_0x9e73('0xf')]);}else{_0xfdf542[_0x9e73('0x19')]=_0x4f623b+'.'+_0x377db8[_0x9e73('0x1b')]+'\x20'+parseOperator(_0x377db8['operator']);}if(_[_0x9e73('0x13')](['$ne',_0x9e73('0x1c')],_0x377db8[_0x9e73('0xf')]))_0xfdf542[_0x9e73('0x19')]='('+_0xfdf542['text']+'\x20OR\x20'+_0x4f623b+'.'+_0x377db8[_0x9e73('0x1b')]+_0x9e73('0x1d');_0xfdf542['value']=parseValue(_0x4b9c75,_0x377db8[_0x9e73('0xf')],_0x377db8[_0x9e73('0x12')]);return _0xfdf542;};function parseOperator(_0x236e34){var _0x2a339a;switch(_0x236e34){case _0x9e73('0x1e'):_0x2a339a=_0x9e73('0x1f');break;case _0x9e73('0x1c'):_0x2a339a=_0x9e73('0x20');break;case _0x9e73('0x10'):_0x2a339a=_0x9e73('0x21');break;case _0x9e73('0x22'):_0x2a339a='<>\x20?';break;case _0x9e73('0x23'):case _0x9e73('0x24'):case _0x9e73('0x25'):_0x2a339a=_0x9e73('0x26');break;case _0x9e73('0x27'):_0x2a339a=_0x9e73('0x28');break;case _0x9e73('0x29'):_0x2a339a='>\x20?';break;case _0x9e73('0x14'):_0x2a339a=_0x9e73('0x2a');break;case'$gte':_0x2a339a=_0x9e73('0x2b');break;case _0x9e73('0x11'):_0x2a339a='BETWEEN\x20?\x20AND\x20?';break;}return _0x2a339a;}function parseValue(_0x123ca9,_0x824cf8,_0x2d38aa){var _0x5c8404={'start':undefined,'end':undefined};switch(_0x824cf8){case _0x9e73('0x1e'):case _0x9e73('0x1c'):_0x5c8404[_0x9e73('0x2c')]=_0x2d38aa[_0x9e73('0x6')](',');break;case _0x9e73('0x23'):_0x5c8404[_0x9e73('0x2c')]='%'+_0x2d38aa+'%';break;case _0x9e73('0x24'):_0x5c8404[_0x9e73('0x2c')]=_0x2d38aa+'%';break;case _0x9e73('0x25'):_0x5c8404['start']='%'+_0x2d38aa;break;case _0x9e73('0x11'):var _0x1ba1b1=_0x2d38aa[_0x9e73('0x6')](',');var _0x2d38aa=_0x1ba1b1[_0x9e73('0x2d')]();var _0x4abba5=_0x1ba1b1['pop']();if(_0x123ca9===_0x9e73('0x2e')){_0x2d38aa=moment(_0x2d38aa)['utcOffset'](0x0,!![])[_0x9e73('0x16')]();_0x4abba5=moment(_0x4abba5)['utcOffset'](0x0,!![])['add'](0x17,_0x9e73('0x2f'))[_0x9e73('0x15')](0x3b,_0x9e73('0x30'))[_0x9e73('0x15')](0x3b,_0x9e73('0x31'))[_0x9e73('0x16')]();}_0x5c8404={'start':_0x2d38aa,'end':_0x4abba5};break;default:_0x5c8404[_0x9e73('0x2c')]=_0x2d38aa;break;}return _0x5c8404;}
\ No newline at end of file
index 237e6f3..c5b3f0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7dfd=['col','unsigned','length','omit','isObject','isString','unset','hasOwnProperty','isNumeric','getFullTextValue','replace','match','push','join','getOptions','query','$id','model','intersection','fields','attributes','offset','order','where','object','filter','VIRTUAL','lower','merge','options','lodash','sequelize','moment','parse','keys','includes','split','filters','isEmpty','find','type','DATE','isPlainObject','$gte','format','YYYY-MM-DD','utc','$lte','subtract','name','uniqueid','isArray','limit','sort','map','indexOf','priority','cast','substr','DESC'];(function(_0x8cd82b,_0x2bb9a9){var _0x3e30d6=function(_0x255201){while(--_0x255201){_0x8cd82b['push'](_0x8cd82b['shift']());}};_0x3e30d6(++_0x2bb9a9);}(_0x7dfd,0x1c2));var _0xd7df=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7dfd[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xd7df('0x0'));var sequelize=require(_0xd7df('0x1'));var moment=require(_0xd7df('0x2'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x2d48e6){var _0x346f5f=['ne'];try{var _0x28c3c9=JSON[_0xd7df('0x3')](_0x2d48e6);var _0x38eee7=Object[_0xd7df('0x4')](_0x28c3c9)[0x0];return _0x346f5f[_0xd7df('0x5')](_0x38eee7);}catch(_0x65a0b6){return![];}}function getOperatorValue(_0x3304f9){var _0x36cf0f=JSON[_0xd7df('0x3')](_0x3304f9);var _0x354ea7=Object[_0xd7df('0x4')](_0x36cf0f)[0x0];var _0x2c48a4=_0x36cf0f[_0x354ea7];return{['$'+_0x354ea7]:_0x2c48a4};}exports['fields']=function(_0xab6742){var _0xb3557a=null;if(_0xab6742){_0xb3557a=_0xab6742[_0xd7df('0x6')](',');}return _0xb3557a;};exports[_0xd7df('0x7')]=function(_0x5e59c3,_0x32c5b5){var _0x532c14={};if(!_[_0xd7df('0x8')](_0x5e59c3)){_['forOwn'](_0x5e59c3,function(_0x394d32,_0x82f1c0){try{if(_0x32c5b5){var _0x28d358=_[_0xd7df('0x9')](_0x32c5b5,{'name':_0x82f1c0})||{};if(hasSequelizeOperator(_0x394d32)){_0x532c14[_0x82f1c0]=getOperatorValue(_0x394d32);}else if(_0x28d358[_0xd7df('0xa')]===_0xd7df('0xb')&&_[_0xd7df('0xc')](_0x394d32)){var _0x3da618=JSON[_0xd7df('0x3')](_0x394d32);var _0x4d6f17={'$gte':moment(moment(_0x3da618[_0xd7df('0xd')])[_0xd7df('0xe')](_0xd7df('0xf')))[_0xd7df('0x10')]()[_0xd7df('0xe')](),'$lte':moment(moment(_0x3da618[_0xd7df('0x11')])[_0xd7df('0xe')]('YYYY-MM-DD'))[_0xd7df('0x10')]()[_0xd7df('0x12')](0x1,'s')['format']()};_0x532c14[_0x82f1c0]=_0x4d6f17;}else if(_0x28d358[_0xd7df('0x13')]===_0xd7df('0x14')){_0x532c14[_0x82f1c0]=_0x394d32;}else{_0x532c14[_0x82f1c0]=_['isArray'](_0x394d32)?_0x394d32:JSON[_0xd7df('0x3')](_0x394d32);}}else{_0x532c14[_0x82f1c0]=_[_0xd7df('0x15')](_0x394d32)?_0x394d32:JSON[_0xd7df('0x3')](_0x394d32);}}catch(_0x5210e5){_0x532c14[_0x82f1c0]=_0x394d32[_0xd7df('0x6')](',');}});}return _0x532c14;};exports[_0xd7df('0x16')]=function(_0x3cea3){_0x3cea3=parseInt(_0x3cea3,0xa);if(!_0x3cea3||_0x3cea3<0x0){_0x3cea3=LIMIT_VALUE;}return _0x3cea3;};exports['offset']=function(_0x96d86e){_0x96d86e=parseInt(_0x96d86e,0xa);if(!_0x96d86e||_0x96d86e<0x0){_0x96d86e=0x0;}return _0x96d86e;};exports[_0xd7df('0x17')]=function(_0x4e1985){var _0x5acb0a,_0x4188af=null;if(_0x4e1985){_0x5acb0a=_0x4e1985['split'](',');_0x4188af=_[_0xd7df('0x18')](_0x5acb0a,function(_0x5ab737){if(_0x5ab737[_0xd7df('0x19')]('-')===0x0){return[_0x5ab737===_0xd7df('0x1a')?sequelize[_0xd7df('0x1b')](sequelize['col'](_0xd7df('0x1a')),'unsigned'):_0x5ab737[_0xd7df('0x1c')](0x1),_0xd7df('0x1d')];}else{return[_0x5ab737===_0xd7df('0x1a')?sequelize[_0xd7df('0x1b')](sequelize[_0xd7df('0x1e')](_0xd7df('0x1a')),_0xd7df('0x1f')):_0x5ab737,'ASC'];}});}return _0x4188af;};exports['omit']=function(_0x36f2bd,_0x38db14){if(_[_0xd7df('0x8')](_0x36f2bd)){return _0x36f2bd;}if(_[_0xd7df('0x15')](_0x36f2bd)){for(var _0x13f190=0x0;_0x13f190<_0x36f2bd[_0xd7df('0x20')];_0x13f190+=0x1){_0x36f2bd[_0x13f190]=this[_0xd7df('0x21')](_0x36f2bd[_0x13f190],_0x38db14);}return _0x36f2bd;}if(!_[_0xd7df('0x22')](_0x36f2bd)){return _0x36f2bd;}if(_[_0xd7df('0x23')](_0x38db14)){_0x38db14=[_0x38db14];}if(!_['isArray'](_0x38db14)){return _0x36f2bd;}for(var _0xe53f53=0x0;_0xe53f53<_0x38db14[_0xd7df('0x20')];_0xe53f53+=0x1){_[_0xd7df('0x24')](_0x36f2bd,_0x38db14[_0xe53f53]);}for(var _0x29f0e8 in _0x36f2bd){if(_0x36f2bd[_0xd7df('0x25')](_0x29f0e8)){_0x36f2bd[_0x29f0e8]=this[_0xd7df('0x21')](_0x36f2bd[_0x29f0e8],_0x38db14);}}return _0x36f2bd;};exports[_0xd7df('0x26')]=function(_0x36de76){return _0x36de76['match'](RegExp('^[+]?[0-9]*$'))?!![]:![];};exports['isEmail']=function(_0x58584d){return _0x58584d['match'](/^\S+@\S+$/)?!![]:![];};exports[_0xd7df('0x27')]=function(_0x4e87cd){var _0xd366b=[];_0x4e87cd[_0xd7df('0x6')](/[ ,]+/)['forEach'](function(_0x3ef553){_0x3ef553=_0x3ef553[_0xd7df('0x28')](/([^:]")"+/g,'$1');_0x3ef553='+'+_0x3ef553+'*';var _0x4fe918=/[ `!@#$%^&*()_\-?~]/;if(_0x3ef553[_0xd7df('0x29')](_0x4fe918))_0x3ef553='\x22'+_0x3ef553+'\x22';_0xd366b[_0xd7df('0x2a')](_0x3ef553);});return _0xd366b[_0xd7df('0x2b')]('\x20');};exports[_0xd7df('0x2c')]=function(_0x40f965,_0x3304c4,_0x5a658f){var _0x428b4b={},_0x149813={};if(_0x3304c4[_0xd7df('0x2d')][_0xd7df('0x2e')]){_0x3304c4[_0xd7df('0x2d')]['id']=_0x3304c4[_0xd7df('0x2d')][_0xd7df('0x2e')];delete _0x3304c4[_0xd7df('0x2d')][_0xd7df('0x2e')];}_0x428b4b[_0xd7df('0x2f')]=_[_0xd7df('0x18')](_0x40f965,'name');_0x428b4b['query']=_[_0xd7df('0x4')](_0x3304c4['query']);_0x428b4b[_0xd7df('0x7')]=_[_0xd7df('0x30')](_0x428b4b[_0xd7df('0x2f')],_0x428b4b[_0xd7df('0x2d')]);_0x149813['attributes']=_['intersection'](_0x428b4b['model'],this[_0xd7df('0x31')](_0x3304c4[_0xd7df('0x2d')]['fields']));_0x149813[_0xd7df('0x32')]=_0x149813[_0xd7df('0x32')][_0xd7df('0x20')]?_0x149813[_0xd7df('0x32')]:_0x428b4b['model'];if(!_0x3304c4[_0xd7df('0x2d')][_0xd7df('0x25')]('nolimit')){_0x149813[_0xd7df('0x16')]=this['limit'](_0x3304c4[_0xd7df('0x2d')][_0xd7df('0x16')]);_0x149813[_0xd7df('0x33')]=this['offset'](_0x3304c4[_0xd7df('0x2d')][_0xd7df('0x33')]);}_0x149813[_0xd7df('0x34')]=this[_0xd7df('0x17')](_0x3304c4['query'][_0xd7df('0x17')]);_0x149813[_0xd7df('0x35')]=this[_0xd7df('0x7')](_['pick'](_0x3304c4[_0xd7df('0x2d')],_0x428b4b[_0xd7df('0x7')]),_0x40f965);if(_0x3304c4[_0xd7df('0x2d')]['filter']){var _0x80019d=_0x40f965;var _0x445467=_0x3304c4['query']['filter'];if(typeof _0x445467===_0xd7df('0x36')){_0x80019d=_[_0xd7df('0x37')](_0x40f965,function(_0x6a024a){return _['includes'](_0x445467['columns'],_0x6a024a[_0xd7df('0x13')]);});_0x445467=_0x445467['value'];}_0x149813[_0xd7df('0x35')]=_['merge'](_0x149813['where'],{'$or':_[_0xd7df('0x18')](_0x80019d,function(_0x579d0f){if(_0x579d0f[_0xd7df('0xa')]!==_0xd7df('0x38')){if(_0x5a658f){return sequelize[_0xd7df('0x35')](sequelize['fn'](_0xd7df('0x39'),sequelize[_0xd7df('0x1e')](_0x579d0f[_0xd7df('0x13')])),{'$like':sequelize['fn'](_0xd7df('0x39'),'%'+_0x3304c4[_0xd7df('0x2d')][_0xd7df('0x37')]+'%')});}else{var _0x5b3179={};_0x5b3179[_0x579d0f[_0xd7df('0x13')]]={'$like':'%'+_0x3304c4['query'][_0xd7df('0x37')]+'%'};return _0x5b3179;}}})});}_0x149813=_[_0xd7df('0x3a')]({},_0x149813,_0x3304c4[_0xd7df('0x3b')]);return _0x149813;};
\ No newline at end of file
+var _0xd13e=['DESC','ASC','omit','length','isObject','isString','unset','isNumeric','match','^[+]?[0-9]*$','isEmail','getFullTextValue','replace','push','join','getOptions','query','$id','model','map','intersection','attributes','hasOwnProperty','order','where','filter','object','value','merge','VIRTUAL','lower','lodash','sequelize','moment','includes','keys','fields','split','filters','isEmpty','forOwn','find','type','DATE','isPlainObject','parse','$gte','YYYY-MM-DD','format','utc','subtract','name','uniqueid','isArray','limit','offset','sort','cast','col','priority','unsigned','substr'];(function(_0x1abb09,_0x18ee91){var _0xea1c07=function(_0x38f42c){while(--_0x38f42c){_0x1abb09['push'](_0x1abb09['shift']());}};_0xea1c07(++_0x18ee91);}(_0xd13e,0x193));var _0xed13=function(_0x8f3e02,_0x4c6b51){_0x8f3e02=_0x8f3e02-0x0;var _0x5bbca1=_0xd13e[_0x8f3e02];return _0x5bbca1;};'use strict';var _=require(_0xed13('0x0'));var sequelize=require(_0xed13('0x1'));var moment=require(_0xed13('0x2'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x32c6ee){var _0x50b476=['ne'];try{var _0x1a064e=JSON['parse'](_0x32c6ee);var _0x282bda=Object['keys'](_0x1a064e)[0x0];return _0x50b476[_0xed13('0x3')](_0x282bda);}catch(_0xcba1c4){return![];}}function getOperatorValue(_0x5e3571){var _0x50de44=JSON['parse'](_0x5e3571);var _0x95ff4c=Object[_0xed13('0x4')](_0x50de44)[0x0];var _0xab0fff=_0x50de44[_0x95ff4c];return{['$'+_0x95ff4c]:_0xab0fff};}exports[_0xed13('0x5')]=function(_0x369798){var _0x2ba0d2=null;if(_0x369798){_0x2ba0d2=_0x369798[_0xed13('0x6')](',');}return _0x2ba0d2;};exports[_0xed13('0x7')]=function(_0x8543ad,_0x4e1e07){var _0x26442d={};if(!_[_0xed13('0x8')](_0x8543ad)){_[_0xed13('0x9')](_0x8543ad,function(_0x39575c,_0x2b290c){try{if(_0x4e1e07){var _0x57f4d4=_[_0xed13('0xa')](_0x4e1e07,{'name':_0x2b290c})||{};if(hasSequelizeOperator(_0x39575c)){_0x26442d[_0x2b290c]=getOperatorValue(_0x39575c);}else if(_0x57f4d4[_0xed13('0xb')]===_0xed13('0xc')&&_[_0xed13('0xd')](_0x39575c)){var _0x936103=JSON[_0xed13('0xe')](_0x39575c);var _0x5b950a={'$gte':moment(moment(_0x936103[_0xed13('0xf')])['format'](_0xed13('0x10')))['utc']()[_0xed13('0x11')](),'$lte':moment(moment(_0x936103['$lte'])[_0xed13('0x11')]('YYYY-MM-DD'))[_0xed13('0x12')]()[_0xed13('0x13')](0x1,'s')[_0xed13('0x11')]()};_0x26442d[_0x2b290c]=_0x5b950a;}else if(_0x57f4d4[_0xed13('0x14')]===_0xed13('0x15')){_0x26442d[_0x2b290c]=_0x39575c;}else{_0x26442d[_0x2b290c]=_[_0xed13('0x16')](_0x39575c)?_0x39575c:JSON[_0xed13('0xe')](_0x39575c);}}else{_0x26442d[_0x2b290c]=_[_0xed13('0x16')](_0x39575c)?_0x39575c:JSON[_0xed13('0xe')](_0x39575c);}}catch(_0x1e161f){_0x26442d[_0x2b290c]=_0x39575c[_0xed13('0x6')](',');}});}return _0x26442d;};exports[_0xed13('0x17')]=function(_0x2893d2){_0x2893d2=parseInt(_0x2893d2,0xa);if(!_0x2893d2||_0x2893d2<0x0){_0x2893d2=LIMIT_VALUE;}return _0x2893d2;};exports[_0xed13('0x18')]=function(_0x356344){_0x356344=parseInt(_0x356344,0xa);if(!_0x356344||_0x356344<0x0){_0x356344=0x0;}return _0x356344;};exports[_0xed13('0x19')]=function(_0x580870){var _0x50512a,_0x1f3646=null;if(_0x580870){_0x50512a=_0x580870[_0xed13('0x6')](',');_0x1f3646=_['map'](_0x50512a,function(_0x40dd86){if(_0x40dd86['indexOf']('-')===0x0){return[_0x40dd86==='priority'?sequelize[_0xed13('0x1a')](sequelize[_0xed13('0x1b')](_0xed13('0x1c')),_0xed13('0x1d')):_0x40dd86[_0xed13('0x1e')](0x1),_0xed13('0x1f')];}else{return[_0x40dd86==='priority'?sequelize['cast'](sequelize['col'](_0xed13('0x1c')),_0xed13('0x1d')):_0x40dd86,_0xed13('0x20')];}});}return _0x1f3646;};exports[_0xed13('0x21')]=function(_0x1a0458,_0x28f8b8){if(_[_0xed13('0x8')](_0x1a0458)){return _0x1a0458;}if(_[_0xed13('0x16')](_0x1a0458)){for(var _0x2410e2=0x0;_0x2410e2<_0x1a0458[_0xed13('0x22')];_0x2410e2+=0x1){_0x1a0458[_0x2410e2]=this[_0xed13('0x21')](_0x1a0458[_0x2410e2],_0x28f8b8);}return _0x1a0458;}if(!_[_0xed13('0x23')](_0x1a0458)){return _0x1a0458;}if(_[_0xed13('0x24')](_0x28f8b8)){_0x28f8b8=[_0x28f8b8];}if(!_[_0xed13('0x16')](_0x28f8b8)){return _0x1a0458;}for(var _0x4e03d1=0x0;_0x4e03d1<_0x28f8b8['length'];_0x4e03d1+=0x1){_[_0xed13('0x25')](_0x1a0458,_0x28f8b8[_0x4e03d1]);}for(var _0x2ebdf6 in _0x1a0458){if(_0x1a0458['hasOwnProperty'](_0x2ebdf6)){_0x1a0458[_0x2ebdf6]=this[_0xed13('0x21')](_0x1a0458[_0x2ebdf6],_0x28f8b8);}}return _0x1a0458;};exports[_0xed13('0x26')]=function(_0x4ed119){return _0x4ed119[_0xed13('0x27')](RegExp(_0xed13('0x28')))?!![]:![];};exports[_0xed13('0x29')]=function(_0x570929){return _0x570929[_0xed13('0x27')](/^\S+@\S+$/)?!![]:![];};exports[_0xed13('0x2a')]=function(_0x489840){var _0x433665=[];_0x489840[_0xed13('0x6')](/[ ,]+/)['forEach'](function(_0x11cb93){_0x11cb93=_0x11cb93[_0xed13('0x2b')](/([^:]")"+/g,'$1');_0x11cb93='+'+_0x11cb93+'*';var _0x2bcc8b=/[ `!@#$%^&*()_\-?~]/;if(_0x11cb93[_0xed13('0x27')](_0x2bcc8b))_0x11cb93='\x22'+_0x11cb93+'\x22';_0x433665[_0xed13('0x2c')](_0x11cb93);});return _0x433665[_0xed13('0x2d')]('\x20');};exports[_0xed13('0x2e')]=function(_0x5b3828,_0x7ee14a,_0x55c1db){var _0x590a4a={},_0x3ac2f7={};if(_0x7ee14a[_0xed13('0x2f')][_0xed13('0x30')]){_0x7ee14a['query']['id']=_0x7ee14a[_0xed13('0x2f')][_0xed13('0x30')];delete _0x7ee14a[_0xed13('0x2f')]['$id'];}_0x590a4a[_0xed13('0x31')]=_[_0xed13('0x32')](_0x5b3828,_0xed13('0x14'));_0x590a4a[_0xed13('0x2f')]=_['keys'](_0x7ee14a[_0xed13('0x2f')]);_0x590a4a[_0xed13('0x7')]=_[_0xed13('0x33')](_0x590a4a[_0xed13('0x31')],_0x590a4a[_0xed13('0x2f')]);_0x3ac2f7[_0xed13('0x34')]=_[_0xed13('0x33')](_0x590a4a[_0xed13('0x31')],this[_0xed13('0x5')](_0x7ee14a[_0xed13('0x2f')]['fields']));_0x3ac2f7[_0xed13('0x34')]=_0x3ac2f7[_0xed13('0x34')]['length']?_0x3ac2f7['attributes']:_0x590a4a['model'];if(!_0x7ee14a[_0xed13('0x2f')][_0xed13('0x35')]('nolimit')){_0x3ac2f7['limit']=this[_0xed13('0x17')](_0x7ee14a[_0xed13('0x2f')][_0xed13('0x17')]);_0x3ac2f7[_0xed13('0x18')]=this[_0xed13('0x18')](_0x7ee14a['query']['offset']);}_0x3ac2f7[_0xed13('0x36')]=this['sort'](_0x7ee14a[_0xed13('0x2f')]['sort']);_0x3ac2f7[_0xed13('0x37')]=this['filters'](_['pick'](_0x7ee14a['query'],_0x590a4a[_0xed13('0x7')]),_0x5b3828);if(_0x7ee14a[_0xed13('0x2f')][_0xed13('0x38')]){var _0x42d5f7=_0x5b3828;var _0x2d29aa=_0x7ee14a['query'][_0xed13('0x38')];if(typeof _0x2d29aa===_0xed13('0x39')){_0x42d5f7=_[_0xed13('0x38')](_0x5b3828,function(_0x166bf4){return _[_0xed13('0x3')](_0x2d29aa['columns'],_0x166bf4[_0xed13('0x14')]);});_0x2d29aa=_0x2d29aa[_0xed13('0x3a')];}_0x3ac2f7[_0xed13('0x37')]=_[_0xed13('0x3b')](_0x3ac2f7[_0xed13('0x37')],{'$or':_[_0xed13('0x32')](_0x42d5f7,function(_0x535de7){if(_0x535de7[_0xed13('0xb')]!==_0xed13('0x3c')){if(_0x55c1db){return sequelize[_0xed13('0x37')](sequelize['fn'](_0xed13('0x3d'),sequelize[_0xed13('0x1b')](_0x535de7[_0xed13('0x14')])),{'$like':sequelize['fn'](_0xed13('0x3d'),'%'+_0x7ee14a[_0xed13('0x2f')][_0xed13('0x38')]+'%')});}else{var _0x25a734={};_0x25a734[_0x535de7[_0xed13('0x14')]]={'$like':'%'+_0x7ee14a[_0xed13('0x2f')][_0xed13('0x38')]+'%'};return _0x25a734;}}})});}_0x3ac2f7=_[_0xed13('0x3b')]({},_0x3ac2f7,_0x7ee14a['options']);return _0x3ac2f7;};
\ No newline at end of file
index 149b274..3e0ef68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6fbd=['result','merge','getRealtimeAgents','*pause','isArray','startCase','Queue','map','findOne','all','flatten','uniq','value','getAgentIdsByQueues','filter','includes','busy','getAgentIdsByStatus','resolve','User','name','fullname','chatPause','whatsappPause','pauseType','find','globalStatus','catch','getSortedAgentsIdsByStatus','split','fields','order','startsWith','ASC','internal','substring','indexOf','validateSortParameter','pause','DESC','toLowerCase','sortAgentsByStatus','userpic','online','lastLoginAt','lastPauseAt','address','chatCapacity','openchannelCapacity','mailCapacity','whatsappCapacity','faxCapacity','chatCurrentCapacity','openchannelCurrentCapacity','mailCurrentCapacity','smsCurrentCapacity','whatsappCurrentCapacity','faxCurrentCapacity','faxStatus','voiceStatus','chatStatusTime','openchannelStatusTime','mailStatusTime','smsStatusTime','whatsappStatusTime','faxStatusTime','voiceStatusTime','screenrecording','phoneBarEnableScreenRecordingByAgent','phoneBarEnableAutomaticScreenRecording','routealias','omit','pick','lodash','jayson/promise','../../mysqldb','http','client','faxPause','mailPause','openchannelPause','smsPause','voicePause','length','idle','unknown','unavailable','ringing','isNil','every','mailStatus','openchannelStatus','smsStatus','whatsappStatus','request','Agents','then','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','error'];(function(_0x2d0d28,_0x3bb917){var _0x22c9eb=function(_0x465bce){while(--_0x465bce){_0x2d0d28['push'](_0x2d0d28['shift']());}};_0x22c9eb(++_0x3bb917);}(_0x6fbd,0x1d5));var _0xd6fb=function(_0x9c2427,_0x17c865){_0x9c2427=_0x9c2427-0x0;var _0x51984f=_0x6fbd[_0x9c2427];return _0x51984f;};'use strict';var _=require(_0xd6fb('0x0'));var jayson=require(_0xd6fb('0x1'));var db=require(_0xd6fb('0x2'))['db'];var amiClient=jayson['client'][_0xd6fb('0x3')]({'port':0x232a});var routingClient=jayson[_0xd6fb('0x4')][_0xd6fb('0x3')]({'port':0x232c});function isAgentPaused(_0x1abbf9,_0x5d55b9){var _0x121056=[_0x1abbf9['chatPause'],_0x1abbf9[_0xd6fb('0x5')],_0x1abbf9[_0xd6fb('0x6')],_0x1abbf9[_0xd6fb('0x7')],_0x1abbf9[_0xd6fb('0x8')],_0x1abbf9[_0xd6fb('0x9')],_0x1abbf9['whatsappPause']];if(!_0x5d55b9)return _['every'](_0x121056);var _0x33a689=_['filter'](_0x121056);return _0x33a689[_0xd6fb('0xa')]>0x0&&_0x33a689[_0xd6fb('0xa')]<_0x121056['length']?!![]:![];}function isIdle(_0x55ed6c){return _0x55ed6c===_0xd6fb('0xb')||_0x55ed6c===_0xd6fb('0xc')||_0x55ed6c===_0xd6fb('0xd')||_0x55ed6c===_0xd6fb('0xe')||_[_0xd6fb('0xf')](_0x55ed6c);}function isAgentIdle(_0x2c814d){if(_0x2c814d['voiceStatus']!==_0xd6fb('0xb')&&_0x2c814d[_0xd6fb('0x9')]){_0x2c814d['voiceStatus']='pause';return![];}return _[_0xd6fb('0x10')]([_0x2c814d['chatStatus'],_0x2c814d['faxStatus'],_0x2c814d[_0xd6fb('0x11')],_0x2c814d[_0xd6fb('0x12')],_0x2c814d[_0xd6fb('0x13')],_0x2c814d['voiceStatus'],_0x2c814d[_0xd6fb('0x14')]],isIdle);}function getRealtimeAgents(){return amiClient[_0xd6fb('0x15')](_0xd6fb('0x16'),{})[_0xd6fb('0x17')](function(_0x1c03a2){if(_0x1c03a2['error']){throw new Error(_0xd6fb('0x18'));}var _0x6ba4f7=_0x1c03a2['result'];return routingClient['request'](_0xd6fb('0x16'),{})[_0xd6fb('0x17')](function(_0x153b9a){if(_0x153b9a[_0xd6fb('0x19')]){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)');}var _0x1b68c9=_0x153b9a[_0xd6fb('0x1a')];return _[_0xd6fb('0x1b')]({},_0x6ba4f7,_0x1b68c9);});})['catch'](function(_0x26c2c9){throw _0x26c2c9;});}exports[_0xd6fb('0x1c')]=getRealtimeAgents;function getAgentStatus(_0x5442bd){var _0x2f8f0b=_0xd6fb('0xc');if(isAgentPaused(_0x5442bd))_0x2f8f0b='pause';else if(isAgentPaused(_0x5442bd,!![]))_0x2f8f0b=_0xd6fb('0x1d');else if(isAgentIdle(_0x5442bd))_0x2f8f0b=_0xd6fb('0xb');else _0x2f8f0b='busy';return _0x2f8f0b;}exports['getAgentStatus']=getAgentStatus;function getAgentIdsByQueues(_0x4f8120,_0x288cfa){var _0x1e03bf=_[_0xd6fb('0x1e')](_0x4f8120)?_0x4f8120:[_0x4f8120];var _0x244198=_[_0xd6fb('0x1f')](_0x288cfa)+_0xd6fb('0x20');var _0x103bfd=_[_0xd6fb('0x21')](_0x1e03bf,function(_0x32dc2e){return db[_0x244198][_0xd6fb('0x22')]({'where':{'id':_0x32dc2e}})[_0xd6fb('0x17')](function(_0x594fa9){if(!_0x594fa9)return[];return _0x594fa9['getAgents']({'attributes':['id'],'raw':!![]});});});return Promise[_0xd6fb('0x23')](_0x103bfd)[_0xd6fb('0x17')](function(_0x2255e0){var _0x1ee9c5=_(_0x2255e0)[_0xd6fb('0x24')]()[_0xd6fb('0x21')]('id')[_0xd6fb('0x25')]()[_0xd6fb('0x26')]();return _0x1ee9c5;});}exports[_0xd6fb('0x27')]=getAgentIdsByQueues;function getAgentIdsByStatus(_0x20a39a,_0x319021,_0x35ac19){try{if(_0x319021[_0xd6fb('0xa')]>0x0){_0x20a39a=_0x20a39a[_0xd6fb('0x28')](function(_0x534688){return _0x319021[_0xd6fb('0x29')](_0x534688['id']);});}var _0x9770d1=_0x20a39a[_0xd6fb('0x28')](function(_0x566974){var _0x240a02=_0xd6fb('0x2a');if(isAgentIdle(_0x566974)){_0x240a02=_0xd6fb('0xb');}return _0x240a02===_0x35ac19;});return _['map'](_0x9770d1,'id');}catch(_0x1cfcfe){throw _0x1cfcfe;}}exports[_0xd6fb('0x2b')]=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x2cd444,_0x2992e1,_0x2b692e){return Promise[_0xd6fb('0x2c')]()['then'](function(){if(_0x2992e1[_0xd6fb('0xa')]>0x0){_0x2cd444=_0x2cd444['filter'](function(_0x42e818){return _0x2992e1['includes'](_0x42e818['id']);});}return _0x2cd444;})[_0xd6fb('0x17')](function(){return db[_0xd6fb('0x2d')]['findAll']({'attributes':['id',_0xd6fb('0x2e'),_0xd6fb('0x2f'),_0xd6fb('0x30'),_0xd6fb('0x5'),'mailPause',_0xd6fb('0x7'),'smsPause',_0xd6fb('0x9'),_0xd6fb('0x31'),_0xd6fb('0x32')],'where':{'id':{'$in':_['map'](_0x2cd444,'id')}},'raw':!![]});})[_0xd6fb('0x17')](function(_0x2c2e71){return _0x2c2e71['map'](function(_0x4e010d){var _0x3dd45f=_[_0xd6fb('0x33')](_0x2cd444,['id',_0x4e010d['id']]);var _0x712b8=filterAgentAttributes(_0x3dd45f);_[_0xd6fb('0x1b')](_0x4e010d,_0x712b8);_0x4e010d[_0xd6fb('0x34')]=getAgentStatus(_0x4e010d);return _0x4e010d;});})[_0xd6fb('0x17')](function(_0x41162b){var _0x125c28=sortAgentsByStatus(_0x41162b,_0x2b692e);return _[_0xd6fb('0x21')](_0x125c28,'id');})[_0xd6fb('0x35')](function(_0x537627){throw _0x537627;});}exports[_0xd6fb('0x36')]=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0x590355){var _0x5a0fe0={'fields':[],'order':null};var _0x57e0bf=_0x590355[_0xd6fb('0x37')](',');_0x5a0fe0[_0xd6fb('0x38')]=_['filter'](_0x57e0bf,function(_0x5d029c){if(!_0x5d029c[_0xd6fb('0x29')](_0xd6fb('0x34'))){return!![];}_0x5a0fe0[_0xd6fb('0x39')]=_[_0xd6fb('0x3a')](_0x5d029c,'-')?'DESC':_0xd6fb('0x3b');return![];});return _0x5a0fe0;}exports['getUpdatedSortOptions']=getUpdatedSortOptions;function validateSortParameter(_0x32a671){if(_0x32a671[_0xd6fb('0x29')](_0xd6fb('0x2f'))&&!_0x32a671[_0xd6fb('0x29')](_0xd6fb('0x3c'))){var _0x3ae057=_0x32a671[_0xd6fb('0x3d')](0x0,_0x32a671[_0xd6fb('0x3e')](_0xd6fb('0x2f')));_0x32a671+=','+_0x3ae057+'internal';}return _0x32a671;}exports[_0xd6fb('0x3f')]=validateSortParameter;function sortAgentsByStatus(_0x5980ca,_0x89041){var _0xcf3c9b=_0x5980ca['sort'](function(_0x1cfaf9,_0x43e507){if(_0x1cfaf9['globalStatus']===_0x43e507[_0xd6fb('0x34')]){if(_0x1cfaf9['globalStatus']===_0xd6fb('0x40')){if(_0x89041===_0xd6fb('0x41')){return(_0x1cfaf9[_0xd6fb('0x32')]||'')<(_0x43e507[_0xd6fb('0x32')]||'')||_0x1cfaf9[_0xd6fb('0x2f')][_0xd6fb('0x42')]()>_0x43e507[_0xd6fb('0x2f')][_0xd6fb('0x42')]()?0x1:-0x1;}else{return(_0x1cfaf9[_0xd6fb('0x32')]||'')<(_0x43e507[_0xd6fb('0x32')]||'')||_0x1cfaf9[_0xd6fb('0x2f')][_0xd6fb('0x42')]()>_0x43e507['fullname'][_0xd6fb('0x42')]()?-0x1:0x1;}}else{if(_0x89041==='DESC'){return _0x1cfaf9['fullname'][_0xd6fb('0x42')]()<_0x43e507[_0xd6fb('0x2f')]['toLowerCase']()?0x1:-0x1;}else{return _0x1cfaf9[_0xd6fb('0x2f')][_0xd6fb('0x42')]()<_0x43e507[_0xd6fb('0x2f')][_0xd6fb('0x42')]()?-0x1:0x1;}}}else{if(_0x89041===_0xd6fb('0x41')){return _0x1cfaf9[_0xd6fb('0x34')]<_0x43e507[_0xd6fb('0x34')]?0x1:-0x1;}else{return _0x1cfaf9['globalStatus']<_0x43e507[_0xd6fb('0x34')]?-0x1:0x1;}}});return _0xcf3c9b;}exports[_0xd6fb('0x43')]=sortAgentsByStatus;function filterAgentAttributes(_0x262e38){var _0x480d82=[_0xd6fb('0x44'),_0xd6fb('0x45'),_0xd6fb('0x46'),_0xd6fb('0x47'),'pauseType',_0xd6fb('0x47'),_0xd6fb('0x3c'),_0xd6fb('0x48'),_0xd6fb('0x30'),_0xd6fb('0x7'),_0xd6fb('0x6'),_0xd6fb('0x8'),_0xd6fb('0x31'),'faxPause',_0xd6fb('0x9'),_0xd6fb('0x49'),_0xd6fb('0x4a'),_0xd6fb('0x4b'),'smsCapacity',_0xd6fb('0x4c'),_0xd6fb('0x4d'),_0xd6fb('0x4e'),_0xd6fb('0x4f'),_0xd6fb('0x50'),_0xd6fb('0x51'),_0xd6fb('0x52'),_0xd6fb('0x53'),'chatStatus',_0xd6fb('0x12'),_0xd6fb('0x11'),_0xd6fb('0x13'),_0xd6fb('0x14'),_0xd6fb('0x54'),_0xd6fb('0x55'),_0xd6fb('0x56'),_0xd6fb('0x57'),_0xd6fb('0x58'),_0xd6fb('0x59'),_0xd6fb('0x5a'),_0xd6fb('0x5b'),_0xd6fb('0x5c'),'queue','destconnectedlinenum',_0xd6fb('0x5d'),_0xd6fb('0x5e'),_0xd6fb('0x5f'),_0xd6fb('0x60')];var _0x14db9f=[_0xd6fb('0x30'),_0xd6fb('0x7'),_0xd6fb('0x6'),'smsPause',_0xd6fb('0x31'),'faxPause',_0xd6fb('0x9'),'online'];var _0x4da936=_(_0x262e38)[_0xd6fb('0x61')](_0x14db9f)[_0xd6fb('0x62')](_0x480d82)[_0xd6fb('0x26')]();return _0x4da936;}exports['filterAgentAttributes']=filterAgentAttributes;
\ No newline at end of file
+var _0x9c23=['mailCapacity','smsCapacity','faxCapacity','chatCurrentCapacity','openchannelCurrentCapacity','smsCurrentCapacity','whatsappCurrentCapacity','faxCurrentCapacity','mailStatus','chatStatusTime','openchannelStatusTime','mailStatusTime','whatsappStatusTime','faxStatusTime','voiceStatusTime','queue','destconnectedlinenum','screenrecording','phoneBarEnableScreenRecordingByAgent','phoneBarEnableAutomaticScreenRecording','omit','pick','lodash','../../mysqldb','client','http','chatPause','faxPause','mailPause','openchannelPause','smsPause','voicePause','whatsappPause','length','idle','unknown','ringing','voiceStatus','pause','every','chatStatus','faxStatus','openchannelStatus','smsStatus','whatsappStatus','request','Agents','then','error','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','merge','catch','getRealtimeAgents','isArray','startCase','Queue','map','findOne','getAgents','uniq','value','getAgentIdsByQueues','includes','filter','busy','resolve','findAll','name','fullname','pauseType','find','globalStatus','startsWith','DESC','ASC','getUpdatedSortOptions','substring','indexOf','internal','sort','toLowerCase','sortAgentsByStatus','userpic','online','lastLoginAt','lastPauseAt','address','openchannelCapacity'];(function(_0x178668,_0x1ec300){var _0x26107d=function(_0x4c0aa8){while(--_0x4c0aa8){_0x178668['push'](_0x178668['shift']());}};_0x26107d(++_0x1ec300);}(_0x9c23,0x1d3));var _0x39c2=function(_0x5da875,_0x475a8b){_0x5da875=_0x5da875-0x0;var _0x25d687=_0x9c23[_0x5da875];return _0x25d687;};'use strict';var _=require(_0x39c2('0x0'));var jayson=require('jayson/promise');var db=require(_0x39c2('0x1'))['db'];var amiClient=jayson[_0x39c2('0x2')][_0x39c2('0x3')]({'port':0x232a});var routingClient=jayson[_0x39c2('0x2')][_0x39c2('0x3')]({'port':0x232c});function isAgentPaused(_0x19f9ec,_0x251f3a){var _0x2d8e82=[_0x19f9ec[_0x39c2('0x4')],_0x19f9ec[_0x39c2('0x5')],_0x19f9ec[_0x39c2('0x6')],_0x19f9ec[_0x39c2('0x7')],_0x19f9ec[_0x39c2('0x8')],_0x19f9ec[_0x39c2('0x9')],_0x19f9ec[_0x39c2('0xa')]];if(!_0x251f3a)return _['every'](_0x2d8e82);var _0x2c49f5=_['filter'](_0x2d8e82);return _0x2c49f5[_0x39c2('0xb')]>0x0&&_0x2c49f5[_0x39c2('0xb')]<_0x2d8e82[_0x39c2('0xb')]?!![]:![];}function isIdle(_0x37462e){return _0x37462e===_0x39c2('0xc')||_0x37462e===_0x39c2('0xd')||_0x37462e==='unavailable'||_0x37462e===_0x39c2('0xe')||_['isNil'](_0x37462e);}function isAgentIdle(_0x2dbf43){if(_0x2dbf43[_0x39c2('0xf')]!==_0x39c2('0xc')&&_0x2dbf43[_0x39c2('0x9')]){_0x2dbf43['voiceStatus']=_0x39c2('0x10');return![];}return _[_0x39c2('0x11')]([_0x2dbf43[_0x39c2('0x12')],_0x2dbf43[_0x39c2('0x13')],_0x2dbf43['mailStatus'],_0x2dbf43[_0x39c2('0x14')],_0x2dbf43[_0x39c2('0x15')],_0x2dbf43[_0x39c2('0xf')],_0x2dbf43[_0x39c2('0x16')]],isIdle);}function getRealtimeAgents(){return amiClient[_0x39c2('0x17')](_0x39c2('0x18'),{})[_0x39c2('0x19')](function(_0x2f53b1){if(_0x2f53b1[_0x39c2('0x1a')]){throw new Error(_0x39c2('0x1b'));}var _0x594f4f=_0x2f53b1[_0x39c2('0x1c')];return routingClient['request']('Agents',{})[_0x39c2('0x19')](function(_0x22846e){if(_0x22846e[_0x39c2('0x1a')]){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)');}var _0x44706a=_0x22846e[_0x39c2('0x1c')];return _[_0x39c2('0x1d')]({},_0x594f4f,_0x44706a);});})[_0x39c2('0x1e')](function(_0x4fc772){throw _0x4fc772;});}exports[_0x39c2('0x1f')]=getRealtimeAgents;function getAgentStatus(_0x34a64b){var _0x26984d=_0x39c2('0xd');if(isAgentPaused(_0x34a64b))_0x26984d=_0x39c2('0x10');else if(isAgentPaused(_0x34a64b,!![]))_0x26984d='*pause';else if(isAgentIdle(_0x34a64b))_0x26984d=_0x39c2('0xc');else _0x26984d='busy';return _0x26984d;}exports['getAgentStatus']=getAgentStatus;function getAgentIdsByQueues(_0x581ad4,_0x2911e3){var _0xd68b87=_[_0x39c2('0x20')](_0x581ad4)?_0x581ad4:[_0x581ad4];var _0x2e2f45=_[_0x39c2('0x21')](_0x2911e3)+_0x39c2('0x22');var _0x40a062=_[_0x39c2('0x23')](_0xd68b87,function(_0x4be2e9){return db[_0x2e2f45][_0x39c2('0x24')]({'where':{'id':_0x4be2e9}})['then'](function(_0x501045){if(!_0x501045)return[];return _0x501045[_0x39c2('0x25')]({'attributes':['id'],'raw':!![]});});});return Promise['all'](_0x40a062)[_0x39c2('0x19')](function(_0x22568){var _0x33038e=_(_0x22568)['flatten']()['map']('id')[_0x39c2('0x26')]()[_0x39c2('0x27')]();return _0x33038e;});}exports[_0x39c2('0x28')]=getAgentIdsByQueues;function getAgentIdsByStatus(_0x410773,_0x27795f,_0x103939){try{if(_0x27795f[_0x39c2('0xb')]>0x0){_0x410773=_0x410773['filter'](function(_0x42edb5){return _0x27795f[_0x39c2('0x29')](_0x42edb5['id']);});}var _0x4507dd=_0x410773[_0x39c2('0x2a')](function(_0x1dac9c){var _0x3a8ffb=_0x39c2('0x2b');if(isAgentIdle(_0x1dac9c)){_0x3a8ffb=_0x39c2('0xc');}return _0x3a8ffb===_0x103939;});return _[_0x39c2('0x23')](_0x4507dd,'id');}catch(_0x57f535){throw _0x57f535;}}exports['getAgentIdsByStatus']=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x54e903,_0x42031b,_0x58e85e){return Promise[_0x39c2('0x2c')]()[_0x39c2('0x19')](function(){if(_0x42031b['length']>0x0){_0x54e903=_0x54e903[_0x39c2('0x2a')](function(_0x23b9ee){return _0x42031b['includes'](_0x23b9ee['id']);});}return _0x54e903;})[_0x39c2('0x19')](function(){return db['User'][_0x39c2('0x2d')]({'attributes':['id',_0x39c2('0x2e'),_0x39c2('0x2f'),'chatPause',_0x39c2('0x5'),'mailPause',_0x39c2('0x7'),_0x39c2('0x8'),_0x39c2('0x9'),'whatsappPause',_0x39c2('0x30')],'where':{'id':{'$in':_['map'](_0x54e903,'id')}},'raw':!![]});})[_0x39c2('0x19')](function(_0x36a53b){return _0x36a53b[_0x39c2('0x23')](function(_0x293a4d){var _0x45ce08=_[_0x39c2('0x31')](_0x54e903,['id',_0x293a4d['id']]);var _0x4fa09d=filterAgentAttributes(_0x45ce08);_[_0x39c2('0x1d')](_0x293a4d,_0x4fa09d);_0x293a4d[_0x39c2('0x32')]=getAgentStatus(_0x293a4d);return _0x293a4d;});})[_0x39c2('0x19')](function(_0x50a09a){var _0x1a46c2=sortAgentsByStatus(_0x50a09a,_0x58e85e);return _[_0x39c2('0x23')](_0x1a46c2,'id');})[_0x39c2('0x1e')](function(_0x31b912){throw _0x31b912;});}exports['getSortedAgentsIdsByStatus']=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0x2b5c63){var _0x1b4608={'fields':[],'order':null};var _0x3f19a2=_0x2b5c63['split'](',');_0x1b4608['fields']=_['filter'](_0x3f19a2,function(_0x1bc98d){if(!_0x1bc98d['includes']('globalStatus')){return!![];}_0x1b4608['order']=_[_0x39c2('0x33')](_0x1bc98d,'-')?_0x39c2('0x34'):_0x39c2('0x35');return![];});return _0x1b4608;}exports[_0x39c2('0x36')]=getUpdatedSortOptions;function validateSortParameter(_0x2fc6a4){if(_0x2fc6a4[_0x39c2('0x29')](_0x39c2('0x2f'))&&!_0x2fc6a4['includes']('internal')){var _0x3a51d7=_0x2fc6a4[_0x39c2('0x37')](0x0,_0x2fc6a4[_0x39c2('0x38')](_0x39c2('0x2f')));_0x2fc6a4+=','+_0x3a51d7+_0x39c2('0x39');}return _0x2fc6a4;}exports['validateSortParameter']=validateSortParameter;function sortAgentsByStatus(_0x4b7c3f,_0x31b1c4){var _0x29350f=_0x4b7c3f[_0x39c2('0x3a')](function(_0x7e45d4,_0x1d68db){if(_0x7e45d4['globalStatus']===_0x1d68db[_0x39c2('0x32')]){if(_0x7e45d4[_0x39c2('0x32')]===_0x39c2('0x10')){if(_0x31b1c4===_0x39c2('0x34')){return(_0x7e45d4[_0x39c2('0x30')]||'')<(_0x1d68db[_0x39c2('0x30')]||'')||_0x7e45d4['fullname'][_0x39c2('0x3b')]()>_0x1d68db['fullname']['toLowerCase']()?0x1:-0x1;}else{return(_0x7e45d4[_0x39c2('0x30')]||'')<(_0x1d68db[_0x39c2('0x30')]||'')||_0x7e45d4[_0x39c2('0x2f')]['toLowerCase']()>_0x1d68db[_0x39c2('0x2f')]['toLowerCase']()?-0x1:0x1;}}else{if(_0x31b1c4===_0x39c2('0x34')){return _0x7e45d4[_0x39c2('0x2f')][_0x39c2('0x3b')]()<_0x1d68db[_0x39c2('0x2f')]['toLowerCase']()?0x1:-0x1;}else{return _0x7e45d4[_0x39c2('0x2f')][_0x39c2('0x3b')]()<_0x1d68db[_0x39c2('0x2f')][_0x39c2('0x3b')]()?-0x1:0x1;}}}else{if(_0x31b1c4==='DESC'){return _0x7e45d4[_0x39c2('0x32')]<_0x1d68db[_0x39c2('0x32')]?0x1:-0x1;}else{return _0x7e45d4[_0x39c2('0x32')]<_0x1d68db['globalStatus']?-0x1:0x1;}}});return _0x29350f;}exports[_0x39c2('0x3c')]=sortAgentsByStatus;function filterAgentAttributes(_0x417b1c){var _0x39e24c=[_0x39c2('0x3d'),_0x39c2('0x3e'),_0x39c2('0x3f'),_0x39c2('0x40'),_0x39c2('0x30'),_0x39c2('0x40'),_0x39c2('0x39'),_0x39c2('0x41'),_0x39c2('0x4'),_0x39c2('0x7'),_0x39c2('0x6'),'smsPause',_0x39c2('0xa'),_0x39c2('0x5'),_0x39c2('0x9'),'chatCapacity',_0x39c2('0x42'),_0x39c2('0x43'),_0x39c2('0x44'),'whatsappCapacity',_0x39c2('0x45'),_0x39c2('0x46'),_0x39c2('0x47'),'mailCurrentCapacity',_0x39c2('0x48'),_0x39c2('0x49'),_0x39c2('0x4a'),_0x39c2('0x12'),_0x39c2('0x14'),_0x39c2('0x4b'),'smsStatus','whatsappStatus',_0x39c2('0x13'),'voiceStatus',_0x39c2('0x4c'),_0x39c2('0x4d'),_0x39c2('0x4e'),'smsStatusTime',_0x39c2('0x4f'),_0x39c2('0x50'),_0x39c2('0x51'),_0x39c2('0x52'),_0x39c2('0x53'),_0x39c2('0x54'),_0x39c2('0x55'),_0x39c2('0x56'),'routealias'];var _0x4e5eba=[_0x39c2('0x4'),_0x39c2('0x7'),_0x39c2('0x6'),'smsPause',_0x39c2('0xa'),'faxPause',_0x39c2('0x9'),_0x39c2('0x3e')];var _0x2e4606=_(_0x417b1c)[_0x39c2('0x57')](_0x4e5eba)[_0x39c2('0x58')](_0x39e24c)[_0x39c2('0x27')]();return _0x2e4606;}exports['filterAgentAttributes']=filterAgentAttributes;
\ No newline at end of file
index f65cef9..b48fc09 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(_0x2aefb6,_0x1bd384){var _0x202772=function(_0x507d3f){while(--_0x507d3f){_0x2aefb6['push'](_0x2aefb6['shift']());}};_0x202772(++_0x1bd384);}(_0xa9e0,0x123));var _0x0a9e=function(_0xa1e3e3,_0x29fe0e){_0xa1e3e3=_0xa1e3e3-0x0;var _0xc980e9=_0xa9e0[_0xa1e3e3];return _0xc980e9;};'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(_0x4dbc5b,_0xf50059){var _0x4bb4a8=function(_0x494403){while(--_0x494403){_0x4dbc5b['push'](_0x4dbc5b['shift']());}};_0x4bb4a8(++_0xf50059);}(_0x9957,0x93));var _0x7995=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x9957[_0x3947c9];return _0x2e7871;};'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 17d5a91..1489102 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb74=['test','dmidecode\x20--string\x20system-uuid','utf8','replace','hostname','macAddress','ipAddress','createHash','substring','bimedia-machine-uuid','execSync','../environment','networkInterfaces','orderBy','keys','filter','family','IPv4','internal','concat','head','mac','00:00:00:00:00:00','address','127.0.0.1','map','model','update','digest','hex','getUuid','licenseToken'];(function(_0x50c082,_0x527861){var _0x5d231c=function(_0x5bb47a){while(--_0x5bb47a){_0x50c082['push'](_0x50c082['shift']());}};_0x5d231c(++_0x527861);}(_0xbb74,0x149));var _0x4bb7=function(_0x488262,_0x3521e9){_0x488262=_0x488262-0x0;var _0x47ea76=_0xbb74[_0x488262];return _0x47ea76;};'use strict';var _=require('lodash');var os=require('os');var crypto=require('crypto');var machine=require(_0x4bb7('0x0'));var exec=require('child_process')[_0x4bb7('0x1')];var config=require(_0x4bb7('0x2'));function getInterfaces(){var _0x12aff6=[];var _0x3bb2a2=os[_0x4bb7('0x3')]();var _0x3f5fa7=_[_0x4bb7('0x4')](_[_0x4bb7('0x5')](_0x3bb2a2));for(var _0x4a6647=0x0;_0x4a6647<_0x3f5fa7['length'];_0x4a6647++){var _0x295f05=_0x3bb2a2[_0x3f5fa7[_0x4a6647]][_0x4bb7('0x6')](function(_0x81c8f0){return _0x81c8f0[_0x4bb7('0x7')]===_0x4bb7('0x8')&&_0x81c8f0[_0x4bb7('0x9')]===![];});_0x12aff6=_0x12aff6[_0x4bb7('0xa')](_0x295f05);}return _0x12aff6;}function getFirstInterface(){var _0x1e370f=_[_0x4bb7('0xb')](getInterfaces());return{'macAddress':_0x1e370f&&_0x1e370f[_0x4bb7('0xc')]?_0x1e370f[_0x4bb7('0xc')]:_0x4bb7('0xd'),'ipAddress':_0x1e370f&&_0x1e370f[_0x4bb7('0xe')]?_0x1e370f['address']:_0x4bb7('0xf')};}exports['getFirstInterface']=getFirstInterface;function getCPUhash(){var _0x1b0824=_[_0x4bb7('0x4')](os['cpus']()[_0x4bb7('0x10')](function(_0x1f654e){return _0x1f654e[_0x4bb7('0x11')];}))['join'](':');return crypto['createHash']('md5')[_0x4bb7('0x12')](_0x1b0824)[_0x4bb7('0x13')](_0x4bb7('0x14'));}exports[_0x4bb7('0x15')]=function(){var _0x43a799=os['platform']();var _0x411617=/[0-9a-f-]{36}/;if(config[_0x4bb7('0x16')]&&_0x411617[_0x4bb7('0x17')](config[_0x4bb7('0x16')])){return config['licenseToken'];}else if(_0x43a799==='win32'){return exec(_0x4bb7('0x18'),{'encoding':_0x4bb7('0x19')})[_0x4bb7('0x1a')]('\x0d\x0a','');}else{var _0x253a04=getFirstInterface();var _0x29cc8d=getCPUhash();var _0x37c861=_0x29cc8d+'|'+os[_0x4bb7('0x1b')]()+'|'+_0x253a04[_0x4bb7('0x1c')]+'|'+_0x253a04[_0x4bb7('0x1d')];var _0x4c79c3=crypto[_0x4bb7('0x1e')]('md5')[_0x4bb7('0x12')](_0x37c861)['digest']('hex');return _0x4c79c3[_0x4bb7('0x1f')](0x0,0x8)+'-'+_0x4c79c3[_0x4bb7('0x1f')](0x8,0xc)+'-'+_0x4c79c3[_0x4bb7('0x1f')](0xc,0x10)+'-'+_0x4c79c3[_0x4bb7('0x1f')](0x10,0x14)+'-'+_0x4c79c3[_0x4bb7('0x1f')](0x14);}};
\ No newline at end of file
+var _0xf7f0=['head','mac','00:00:00:00:00:00','address','127.0.0.1','cpus','map','model','join','md5','digest','hex','getUuid','licenseToken','win32','dmidecode\x20--string\x20system-uuid','replace','macAddress','createHash','update','substring','crypto','bimedia-machine-uuid','execSync','../environment','networkInterfaces','orderBy','keys','filter','family','IPv4','internal','concat'];(function(_0x173441,_0x26b0d9){var _0x2423a8=function(_0x4d96c2){while(--_0x4d96c2){_0x173441['push'](_0x173441['shift']());}};_0x2423a8(++_0x26b0d9);}(_0xf7f0,0x1e3));var _0x0f7f=function(_0x29c3ff,_0x20cdb0){_0x29c3ff=_0x29c3ff-0x0;var _0x372b5c=_0xf7f0[_0x29c3ff];return _0x372b5c;};'use strict';var _=require('lodash');var os=require('os');var crypto=require(_0x0f7f('0x0'));var machine=require(_0x0f7f('0x1'));var exec=require('child_process')[_0x0f7f('0x2')];var config=require(_0x0f7f('0x3'));function getInterfaces(){var _0x3e5518=[];var _0x2f90d0=os[_0x0f7f('0x4')]();var _0x20ac5d=_[_0x0f7f('0x5')](_[_0x0f7f('0x6')](_0x2f90d0));for(var _0x40dc2e=0x0;_0x40dc2e<_0x20ac5d['length'];_0x40dc2e++){var _0x2aa4c1=_0x2f90d0[_0x20ac5d[_0x40dc2e]][_0x0f7f('0x7')](function(_0x51d391){return _0x51d391[_0x0f7f('0x8')]===_0x0f7f('0x9')&&_0x51d391[_0x0f7f('0xa')]===![];});_0x3e5518=_0x3e5518[_0x0f7f('0xb')](_0x2aa4c1);}return _0x3e5518;}function getFirstInterface(){var _0x28d554=_[_0x0f7f('0xc')](getInterfaces());return{'macAddress':_0x28d554&&_0x28d554[_0x0f7f('0xd')]?_0x28d554[_0x0f7f('0xd')]:_0x0f7f('0xe'),'ipAddress':_0x28d554&&_0x28d554[_0x0f7f('0xf')]?_0x28d554[_0x0f7f('0xf')]:_0x0f7f('0x10')};}exports['getFirstInterface']=getFirstInterface;function getCPUhash(){var _0x301d2c=_['orderBy'](os[_0x0f7f('0x11')]()[_0x0f7f('0x12')](function(_0x3430b9){return _0x3430b9[_0x0f7f('0x13')];}))[_0x0f7f('0x14')](':');return crypto['createHash'](_0x0f7f('0x15'))['update'](_0x301d2c)[_0x0f7f('0x16')](_0x0f7f('0x17'));}exports[_0x0f7f('0x18')]=function(){var _0x2118d0=os['platform']();var _0x2732fc=/[0-9a-f-]{36}/;if(config[_0x0f7f('0x19')]&&_0x2732fc['test'](config['licenseToken'])){return config[_0x0f7f('0x19')];}else if(_0x2118d0===_0x0f7f('0x1a')){return exec(_0x0f7f('0x1b'),{'encoding':'utf8'})[_0x0f7f('0x1c')]('\x0d\x0a','');}else{var _0x206f8b=getFirstInterface();var _0x182816=getCPUhash();var _0x44ce67=_0x182816+'|'+os['hostname']()+'|'+_0x206f8b[_0x0f7f('0x1d')]+'|'+_0x206f8b['ipAddress'];var _0x3f1ccb=crypto[_0x0f7f('0x1e')]('md5')[_0x0f7f('0x1f')](_0x44ce67)[_0x0f7f('0x16')](_0x0f7f('0x17'));return _0x3f1ccb['substring'](0x0,0x8)+'-'+_0x3f1ccb[_0x0f7f('0x20')](0x8,0xc)+'-'+_0x3f1ccb['substring'](0xc,0x10)+'-'+_0x3f1ccb[_0x0f7f('0x20')](0x10,0x14)+'-'+_0x3f1ccb['substring'](0x14);}};
\ No newline at end of file
index bdd7a99..be1c112 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5214=['Disabled','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','Changed','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','toUpperCase','YYYY-MM-DD\x20HH:mm','encryptString','diff','decryptString','days','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','error','message','finally','getUuid','License','findOrCreate','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','default','util','moment','request-promise','pkginfo','version','../../mysqldb','../../components/encryptor','./hardware','../logger','license','https://www.xcallymotion.com','format','%s/api/servers/%s/check?version=%s','exports','then','catch','get','data1','active','info','data2','update'];(function(_0x57c048,_0x3c8971){var _0x17a265=function(_0x58c951){while(--_0x58c951){_0x57c048['push'](_0x57c048['shift']());}};_0x17a265(++_0x3c8971);}(_0x5214,0x68));var _0x4521=function(_0x27c248,_0x384dff){_0x27c248=_0x27c248-0x0;var _0x1b2fc2=_0x5214[_0x27c248];return _0x1b2fc2;};'use strict';var util=require(_0x4521('0x0'));var moment=require(_0x4521('0x1'));var rp=require(_0x4521('0x2'));var BPromise=require('bluebird');var pkginfo=require(_0x4521('0x3'))(module,_0x4521('0x4'));var db=require(_0x4521('0x5'))['db'];var encryptor=require(_0x4521('0x6'));var hardware=require(_0x4521('0x7'));var logger=require(_0x4521('0x8'))(_0x4521('0x9'));var HOST=_0x4521('0xa');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x13dd10){return new BPromise(function(_0x2e0110,_0x5074e0){var _0x425bb7=util[_0x4521('0xb')](_0x4521('0xc'),HOST,_0x13dd10,module[_0x4521('0xd')][_0x4521('0x4')]);if(oldToken){_0x425bb7=util[_0x4521('0xb')]('%s/api/servers/%s/check?version=%s&oldtoken=%s',HOST,_0x13dd10,module['exports'][_0x4521('0x4')],oldToken);}var _0x238a14={'uri':_0x425bb7,'method':'GET','timeout':0xea60,'json':!![]};return rp(_0x238a14)[_0x4521('0xe')](function(_0x47a5a7){_0x2e0110(_0x47a5a7);})[_0x4521('0xf')](function(_0x139a78){_0x5074e0(_0x139a78);});});}function manageLicense(_0x53cc3a,_0x57d3de){var _0x3017a3=_0x57d3de[_0x4521('0x10')]({'plain':!![]});if(!isOldTokenSent&&_0x3017a3[_0x4521('0x11')]!==_0x53cc3a&&!_0x3017a3['data2']){oldToken=_0x3017a3['data1'];}httpRequest(_0x53cc3a)[_0x4521('0xe')](function(_0x22a142){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x22a142[_0x4521('0x12')]){isOldTokenSent=![];if(!_0x3017a3[_0x4521('0x9')]&&_0x3017a3[_0x4521('0x9')]!=_0x22a142[_0x4521('0x9')]||_0x3017a3[_0x4521('0x9')]&&_0x3017a3['data2']){logger[_0x4521('0x13')]('THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED');}if(_0x3017a3[_0x4521('0x9')]&&!_0x3017a3[_0x4521('0x14')]&&_0x3017a3[_0x4521('0x9')]!=_0x22a142[_0x4521('0x9')]){logger[_0x4521('0x13')]('THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED');}if(_0x3017a3[_0x4521('0x9')]&&!_0x3017a3[_0x4521('0x14')]&&_0x3017a3[_0x4521('0x9')]==_0x22a142[_0x4521('0x9')]){return _0x57d3de;}return _0x57d3de[_0x4521('0x15')]({'data1':_0x53cc3a,'data2':null,'license':_0x22a142[_0x4521('0x9')]});}else{if(_0x22a142[_0x4521('0x9')]||_0x3017a3[_0x4521('0x9')]){if(!_0x3017a3[_0x4521('0x14')]){if(_0x3017a3['data1']==_0x53cc3a){GRAY_PERIOD_REASON=_0x4521('0x16');logger[_0x4521('0x13')](_0x4521('0x17'));}else{GRAY_PERIOD_REASON=_0x4521('0x18');logger[_0x4521('0x13')]('NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s',_0x3017a3[_0x4521('0x11')],_0x53cc3a);}logger[_0x4521('0x13')](_0x4521('0x19'),GRAY_PERIOD_REASON[_0x4521('0x1a')](),moment()['format'](_0x4521('0x1b')));return _0x57d3de[_0x4521('0x15')]({'data2':encryptor[_0x4521('0x1c')](moment()[_0x4521('0xb')](_0x4521('0x1b')))});}else{if(moment()[_0x4521('0x1d')](encryptor[_0x4521('0x1e')](_0x3017a3[_0x4521('0x14')]),_0x4521('0x1f'))>DAYS){logger[_0x4521('0x13')]('DEMO\x20START\x20AT\x20%s',moment()[_0x4521('0xb')]('YYYY-MM-DD\x20HH:mm'));isOldTokenSent=![];return _0x57d3de['update']({'data1':_0x53cc3a,'data2':null,'license':null});}}}else{if(_0x3017a3[_0x4521('0x11')]!=_0x53cc3a){logger[_0x4521('0x13')](_0x4521('0x20'),_0x3017a3[_0x4521('0x11')],_0x53cc3a);return _0x57d3de[_0x4521('0x15')]({'data1':_0x53cc3a,'data2':null,'license':null});}}}return _0x57d3de;})['then'](function(_0x495c4a){_0x57d3de=_0x495c4a;})['catch'](function(_0x2fae75){logger[_0x4521('0x21')](_0x2fae75[_0x4521('0x22')]);})[_0x4521('0x23')](function(){setTimeout(function(){manageLicense(hardware[_0x4521('0x24')](),_0x57d3de);},TIME);});}function defaultLicense(){var _0x24751d=hardware[_0x4521('0x24')]();if(_0x24751d){return db[_0x4521('0x25')][_0x4521('0x26')]({'where':{'id':0x1},'defaults':{'data1':_0x24751d}})[_0x4521('0x27')](function(_0x53ab21,_0x8622ac){logger[_0x4521('0x13')](_0x4521('0x28'),_0x24751d);manageLicense(_0x24751d,_0x53ab21);})['catch'](function(_0x2b3c32){logger[_0x4521('0x21')](_0x2b3c32['message']);});}}exports[_0x4521('0x29')]=defaultLicense;
\ No newline at end of file
+var _0x24d9=['GET','then','active','data2','info','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','update','data1','Disabled','Changed','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','toUpperCase','YYYY-MM-DD\x20HH:mm','encryptString','diff','decryptString','days','catch','error','message','finally','License','findOrCreate','spread','default','request-promise','bluebird','pkginfo','version','../../mysqldb','../../components/encryptor','license','https://www.xcallymotion.com','format','%s/api/servers/%s/check?version=%s','exports','%s/api/servers/%s/check?version=%s&oldtoken=%s'];(function(_0x57cb46,_0x5546e9){var _0x302404=function(_0x30c8ca){while(--_0x30c8ca){_0x57cb46['push'](_0x57cb46['shift']());}};_0x302404(++_0x5546e9);}(_0x24d9,0x1bc));var _0x924d=function(_0x2fadbe,_0x161ecf){_0x2fadbe=_0x2fadbe-0x0;var _0x29074f=_0x24d9[_0x2fadbe];return _0x29074f;};'use strict';var util=require('util');var moment=require('moment');var rp=require(_0x924d('0x0'));var BPromise=require(_0x924d('0x1'));var pkginfo=require(_0x924d('0x2'))(module,_0x924d('0x3'));var db=require(_0x924d('0x4'))['db'];var encryptor=require(_0x924d('0x5'));var hardware=require('./hardware');var logger=require('../logger')(_0x924d('0x6'));var HOST=_0x924d('0x7');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x40808d){return new BPromise(function(_0x337f43,_0x15eb95){var _0x12bfb7=util[_0x924d('0x8')](_0x924d('0x9'),HOST,_0x40808d,module[_0x924d('0xa')][_0x924d('0x3')]);if(oldToken){_0x12bfb7=util[_0x924d('0x8')](_0x924d('0xb'),HOST,_0x40808d,module[_0x924d('0xa')][_0x924d('0x3')],oldToken);}var _0x47d26e={'uri':_0x12bfb7,'method':_0x924d('0xc'),'timeout':0xea60,'json':!![]};return rp(_0x47d26e)[_0x924d('0xd')](function(_0x11d27f){_0x337f43(_0x11d27f);})['catch'](function(_0x34030b){_0x15eb95(_0x34030b);});});}function manageLicense(_0x2e32bd,_0x1d5d0a){var _0x5a77e8=_0x1d5d0a['get']({'plain':!![]});if(!isOldTokenSent&&_0x5a77e8['data1']!==_0x2e32bd&&!_0x5a77e8['data2']){oldToken=_0x5a77e8['data1'];}httpRequest(_0x2e32bd)[_0x924d('0xd')](function(_0x3bd822){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x3bd822[_0x924d('0xe')]){isOldTokenSent=![];if(!_0x5a77e8['license']&&_0x5a77e8[_0x924d('0x6')]!=_0x3bd822['license']||_0x5a77e8[_0x924d('0x6')]&&_0x5a77e8[_0x924d('0xf')]){logger[_0x924d('0x10')]('THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED');}if(_0x5a77e8[_0x924d('0x6')]&&!_0x5a77e8[_0x924d('0xf')]&&_0x5a77e8[_0x924d('0x6')]!=_0x3bd822[_0x924d('0x6')]){logger['info'](_0x924d('0x11'));}if(_0x5a77e8[_0x924d('0x6')]&&!_0x5a77e8[_0x924d('0xf')]&&_0x5a77e8[_0x924d('0x6')]==_0x3bd822['license']){return _0x1d5d0a;}return _0x1d5d0a[_0x924d('0x12')]({'data1':_0x2e32bd,'data2':null,'license':_0x3bd822['license']});}else{if(_0x3bd822['license']||_0x5a77e8[_0x924d('0x6')]){if(!_0x5a77e8[_0x924d('0xf')]){if(_0x5a77e8[_0x924d('0x13')]==_0x2e32bd){GRAY_PERIOD_REASON=_0x924d('0x14');logger[_0x924d('0x10')]('THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED');}else{GRAY_PERIOD_REASON=_0x924d('0x15');logger[_0x924d('0x10')](_0x924d('0x16'),_0x5a77e8[_0x924d('0x13')],_0x2e32bd);}logger[_0x924d('0x10')](_0x924d('0x17'),GRAY_PERIOD_REASON[_0x924d('0x18')](),moment()[_0x924d('0x8')](_0x924d('0x19')));return _0x1d5d0a[_0x924d('0x12')]({'data2':encryptor[_0x924d('0x1a')](moment()[_0x924d('0x8')]('YYYY-MM-DD\x20HH:mm'))});}else{if(moment()[_0x924d('0x1b')](encryptor[_0x924d('0x1c')](_0x5a77e8[_0x924d('0xf')]),_0x924d('0x1d'))>DAYS){logger[_0x924d('0x10')]('DEMO\x20START\x20AT\x20%s',moment()['format'](_0x924d('0x19')));isOldTokenSent=![];return _0x1d5d0a[_0x924d('0x12')]({'data1':_0x2e32bd,'data2':null,'license':null});}}}else{if(_0x5a77e8[_0x924d('0x13')]!=_0x2e32bd){logger[_0x924d('0x10')](_0x924d('0x16'),_0x5a77e8['data1'],_0x2e32bd);return _0x1d5d0a[_0x924d('0x12')]({'data1':_0x2e32bd,'data2':null,'license':null});}}}return _0x1d5d0a;})['then'](function(_0x1a7f69){_0x1d5d0a=_0x1a7f69;})[_0x924d('0x1e')](function(_0x477082){logger[_0x924d('0x1f')](_0x477082[_0x924d('0x20')]);})[_0x924d('0x21')](function(){setTimeout(function(){manageLicense(hardware['getUuid'](),_0x1d5d0a);},TIME);});}function defaultLicense(){var _0x39df71=hardware['getUuid']();if(_0x39df71){return db[_0x924d('0x22')][_0x924d('0x23')]({'where':{'id':0x1},'defaults':{'data1':_0x39df71}})[_0x924d('0x24')](function(_0x3b4f0b,_0x74b44c){logger[_0x924d('0x10')]('SERVICE\x20LICENSE\x20STARTED\x20%s',_0x39df71);manageLicense(_0x39df71,_0x3b4f0b);})[_0x924d('0x1e')](function(_0x494f38){logger['error'](_0x494f38[_0x924d('0x20')]);});}}exports[_0x924d('0x25')]=defaultLicense;
\ No newline at end of file
index 2c93919..eca3f37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99fd=['./hardware','../../components/encryptor','../../mysqldb','2027-01-01T00:00:00.000Z','Demo\x20license','getUuid','Breaking\x20license','License','find','defaults','then','isEmpty','data1','decryptString','format','%s:%s:%s','parse','uuid','machineUuid','gray','deadline','add','days','changed','message','User','findAll','sequelize','COUNT','col','count','admin','user','telephone','users','telephones','forEach','role','pick','countBy','util','lodash'];(function(_0xca82a4,_0x407eb4){var _0x5eed21=function(_0x5d553e){while(--_0x5d553e){_0xca82a4['push'](_0xca82a4['shift']());}};_0x5eed21(++_0x407eb4);}(_0x99fd,0x7c));var _0xd99f=function(_0x1e293e,_0x51a403){_0x1e293e=_0x1e293e-0x0;var _0x223db9=_0x99fd[_0x1e293e];return _0x223db9;};'use strict';var util=require(_0xd99f('0x0'));var _=require(_0xd99f('0x1'));var moment=require('moment');var BPromise=require('bluebird');var hardware=require(_0xd99f('0x2'));var encryptor=require(_0xd99f('0x3'));var db=require(_0xd99f('0x4'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0xd99f('0x5'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0xd99f('0x6'),'machineUuid':hardware[_0xd99f('0x7')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0xd99f('0x5'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0xd99f('0x8'),'machineUuid':hardware['getUuid'](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x2599a4){return new BPromise(function(_0x3fd6f3,_0x1a0c92){return db[_0xd99f('0x9')][_0xd99f('0xa')](_[_0xd99f('0xb')](_0x2599a4,{'raw':!![],'where':{'id':0x1}}))[_0xd99f('0xc')](function(_0x47c09a){return checkLicense(_0x47c09a,null);})['then'](function(_0x53d4b3){_0x3fd6f3(_0x53d4b3);return;})['catch'](function(_0xf4f258){_0x1a0c92(_0xf4f258);});});}function checkLicense(_0x3e36a6,_0x5a3a5f){if(!_0x3e36a6){demoLicense['uuid']=_0x3e36a6['data1'];return demoLicense;}try{var _0x3ca284=_0x5a3a5f||_0x3e36a6['license'];if(_[_0xd99f('0xd')](_0x3ca284)){throw new Error('License\x20key\x20value\x20not\x20found');}var _0x43a277=_0x3e36a6[_0xd99f('0xe')];var _0x50b399=_0x3e36a6['data2'];var _0x4cde35=_0x43a277['split']('-')[0x4];var _0x38a74f=_0x43a277['split']('-')[0x0];var _0xb6514c=encryptor[_0xd99f('0xf')](_0x3ca284,util[_0xd99f('0x10')](_0xd99f('0x11'),_0x4cde35,_0x43a277,_0x38a74f));var _0xb05533=JSON[_0xd99f('0x12')](_0xb6514c);_0xb05533['demo']=![];_0xb05533[_0xd99f('0x13')]=_0x43a277;_0xb05533[_0xd99f('0x14')]=hardware['getUuid']();if(_0x50b399){var _0x1b14ef=encryptor[_0xd99f('0xf')](_0x50b399);_0xb05533[_0xd99f('0x15')]=_0x1b14ef;_0xb05533[_0xd99f('0x16')]=moment(_0x1b14ef)[_0xd99f('0x17')](0x7,_0xd99f('0x18'))[_0xd99f('0x10')]();_0xb05533['grayReason']=_0xb05533['uuid']!=_0xb05533[_0xd99f('0x14')]?_0xd99f('0x19'):'disabled';}return _0xb05533;}catch(_0x47733f){breakingLicense['uuid']=_0x3e36a6['data1'];breakingLicense[_0xd99f('0x1a')]=_0x47733f[_0xd99f('0x1a')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x45d89d,_0x2e347b){getLicense()['then'](function(_0x32aa3e){return db[_0xd99f('0x1b')][_0xd99f('0x1c')]({'attributes':['role',[db[_0xd99f('0x1d')]['fn'](_0xd99f('0x1e'),db[_0xd99f('0x1d')][_0xd99f('0x1f')]('role')),_0xd99f('0x20')]],'group':'role','where':{'role':{'$or':[_0xd99f('0x21'),_0xd99f('0x22'),_0xd99f('0x23')]}},'raw':!![]})['then'](function(_0x2e4cdd){var _0x208403={'user':_0x32aa3e[_0xd99f('0x24')]||0x0,'telephone':_0x32aa3e[_0xd99f('0x25')]||0x0};_0x2e4cdd[_0xd99f('0x26')](function(_0x462162){var _0x4e81de=_0x462162[_0xd99f('0x27')]===_0xd99f('0x21')?_0xd99f('0x22'):_0x462162[_0xd99f('0x27')];_0x208403[_0x4e81de]-=_0x462162[_0xd99f('0x20')];if(_0x208403[_0x4e81de]<0x0)_0x208403[_0x4e81de]=0x0;});_0x45d89d(_0x208403);return;});})['catch'](function(_0xf1bc8){_0x2e347b(_0xf1bc8);});});}function checkUserLimits(_0x1a968f){return new BPromise(function(_0x4c4348,_0x41fae6){getLimits()[_0xd99f('0xc')](function(_0x22598a){var _0x373dfa=_[_0xd99f('0x28')](_[_0xd99f('0x29')](_0x1a968f,_0xd99f('0x27')),[_0xd99f('0x21'),_0xd99f('0x22'),_0xd99f('0x23')]);var _0x41f14c=(_0x373dfa['admin']||0x0)+(_0x373dfa['user']||0x0);var _0x11faf2=_0x373dfa[_0xd99f('0x23')]||0x0;if(_0x41f14c>_0x22598a['user'])return _0x41fae6('License\x20limit\x20reached\x20for\x20users');if(_0x11faf2>_0x22598a['telephone'])return _0x41fae6('License\x20limit\x20reached\x20for\x20telephones');return _0x4c4348();})['catch'](function(_0x3a4a6d){_0x41fae6(_0x3a4a6d);});});}module['exports']={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
+var _0x4e01=['message','User','findAll','role','sequelize','COUNT','col','count','telephone','users','forEach','admin','user','License\x20limit\x20reached\x20for\x20users','License\x20limit\x20reached\x20for\x20telephones','util','moment','bluebird','./hardware','../../components/encryptor','2027-01-01T00:00:00.000Z','Breaking\x20license','getUuid','find','defaults','then','catch','uuid','data1','license','isEmpty','License\x20key\x20value\x20not\x20found','data2','split','format','%s:%s:%s','parse','demo','machineUuid','decryptString','days','grayReason','changed','disabled'];(function(_0x594725,_0x2b7ded){var _0x1110d6=function(_0x4a337f){while(--_0x4a337f){_0x594725['push'](_0x594725['shift']());}};_0x1110d6(++_0x2b7ded);}(_0x4e01,0x1c7));var _0x14e0=function(_0x3cee7b,_0x1b403e){_0x3cee7b=_0x3cee7b-0x0;var _0x5bcb71=_0x4e01[_0x3cee7b];return _0x5bcb71;};'use strict';var util=require(_0x14e0('0x0'));var _=require('lodash');var moment=require(_0x14e0('0x1'));var BPromise=require(_0x14e0('0x2'));var hardware=require(_0x14e0('0x3'));var encryptor=require(_0x14e0('0x4'));var db=require('../../mysqldb')['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x14e0('0x5'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':'Demo\x20license','machineUuid':hardware['getUuid'](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x14e0('0x5'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0x14e0('0x6'),'machineUuid':hardware[_0x14e0('0x7')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x33c581){return new BPromise(function(_0x19bd1f,_0x10589d){return db['License'][_0x14e0('0x8')](_[_0x14e0('0x9')](_0x33c581,{'raw':!![],'where':{'id':0x1}}))[_0x14e0('0xa')](function(_0x366fea){return checkLicense(_0x366fea,null);})[_0x14e0('0xa')](function(_0x1a4b5b){_0x19bd1f(_0x1a4b5b);return;})[_0x14e0('0xb')](function(_0x7c3be4){_0x10589d(_0x7c3be4);});});}function checkLicense(_0x1578fc,_0x28e70e){if(!_0x1578fc){demoLicense[_0x14e0('0xc')]=_0x1578fc[_0x14e0('0xd')];return demoLicense;}try{var _0x2f57fc=_0x28e70e||_0x1578fc[_0x14e0('0xe')];if(_[_0x14e0('0xf')](_0x2f57fc)){throw new Error(_0x14e0('0x10'));}var _0x279cba=_0x1578fc[_0x14e0('0xd')];var _0x5d16a0=_0x1578fc[_0x14e0('0x11')];var _0x5bc85d=_0x279cba[_0x14e0('0x12')]('-')[0x4];var _0x35c603=_0x279cba[_0x14e0('0x12')]('-')[0x0];var _0x17717c=encryptor['decryptString'](_0x2f57fc,util[_0x14e0('0x13')](_0x14e0('0x14'),_0x5bc85d,_0x279cba,_0x35c603));var _0x16ff81=JSON[_0x14e0('0x15')](_0x17717c);_0x16ff81[_0x14e0('0x16')]=![];_0x16ff81[_0x14e0('0xc')]=_0x279cba;_0x16ff81[_0x14e0('0x17')]=hardware[_0x14e0('0x7')]();if(_0x5d16a0){var _0x1fcfe9=encryptor[_0x14e0('0x18')](_0x5d16a0);_0x16ff81['gray']=_0x1fcfe9;_0x16ff81['deadline']=moment(_0x1fcfe9)['add'](0x7,_0x14e0('0x19'))['format']();_0x16ff81[_0x14e0('0x1a')]=_0x16ff81['uuid']!=_0x16ff81[_0x14e0('0x17')]?_0x14e0('0x1b'):_0x14e0('0x1c');}return _0x16ff81;}catch(_0x5c14dd){breakingLicense[_0x14e0('0xc')]=_0x1578fc[_0x14e0('0xd')];breakingLicense[_0x14e0('0x1d')]=_0x5c14dd[_0x14e0('0x1d')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x332e67,_0x5be57b){getLicense()[_0x14e0('0xa')](function(_0x544cd0){return db[_0x14e0('0x1e')][_0x14e0('0x1f')]({'attributes':[_0x14e0('0x20'),[db[_0x14e0('0x21')]['fn'](_0x14e0('0x22'),db[_0x14e0('0x21')][_0x14e0('0x23')]('role')),_0x14e0('0x24')]],'group':_0x14e0('0x20'),'where':{'role':{'$or':['admin','user',_0x14e0('0x25')]}},'raw':!![]})[_0x14e0('0xa')](function(_0x43bda0){var _0x3c891a={'user':_0x544cd0[_0x14e0('0x26')]||0x0,'telephone':_0x544cd0['telephones']||0x0};_0x43bda0[_0x14e0('0x27')](function(_0x5da91c){var _0x48933b=_0x5da91c[_0x14e0('0x20')]===_0x14e0('0x28')?_0x14e0('0x29'):_0x5da91c[_0x14e0('0x20')];_0x3c891a[_0x48933b]-=_0x5da91c['count'];if(_0x3c891a[_0x48933b]<0x0)_0x3c891a[_0x48933b]=0x0;});_0x332e67(_0x3c891a);return;});})[_0x14e0('0xb')](function(_0x2fed0e){_0x5be57b(_0x2fed0e);});});}function checkUserLimits(_0x1c1989){return new BPromise(function(_0x5d5214,_0x4bab95){getLimits()['then'](function(_0x41b0ae){var _0x5b3b8e=_['pick'](_['countBy'](_0x1c1989,_0x14e0('0x20')),[_0x14e0('0x28'),_0x14e0('0x29'),_0x14e0('0x25')]);var _0x405bc3=(_0x5b3b8e['admin']||0x0)+(_0x5b3b8e[_0x14e0('0x29')]||0x0);var _0x225f11=_0x5b3b8e[_0x14e0('0x25')]||0x0;if(_0x405bc3>_0x41b0ae[_0x14e0('0x29')])return _0x4bab95(_0x14e0('0x2a'));if(_0x225f11>_0x41b0ae[_0x14e0('0x25')])return _0x4bab95(_0x14e0('0x2b'));return _0x5d5214();})[_0x14e0('0xb')](function(_0x49fc10){_0x4bab95(_0x49fc10);});});}module['exports']={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
index 6c6d913..ca2ba12 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a85=['secret','myappanuglar-secret','app-id'];(function(_0x5c1662,_0x382d5e){var _0x52037e=function(_0x3c58bf){while(--_0x3c58bf){_0x5c1662['push'](_0x5c1662['shift']());}};_0x52037e(++_0x382d5e);}(_0x1a85,0x178));var _0x51a8=function(_0x45d56b,_0x3b99e4){_0x45d56b=_0x45d56b-0x0;var _0xd62e37=_0x1a85[_0x45d56b];return _0xd62e37;};'use strict';module['exports']={'DOMAIN':'http://localhost:9000','SESSION_SECRET':_0x51a8('0x0'),'GOOGLE_ID':_0x51a8('0x1'),'GOOGLE_SECRET':_0x51a8('0x2'),'DEBUG':''};
\ No newline at end of file
+var _0x5204=['http://localhost:9000','app-id','secret','exports'];(function(_0x1ca9eb,_0x99a10b){var _0x2e284e=function(_0x1196a4){while(--_0x1196a4){_0x1ca9eb['push'](_0x1ca9eb['shift']());}};_0x2e284e(++_0x99a10b);}(_0x5204,0xdf));var _0x4520=function(_0x474c66,_0xbce925){_0x474c66=_0x474c66-0x0;var _0xcbd9bf=_0x5204[_0x474c66];return _0xcbd9bf;};'use strict';module[_0x4520('0x0')]={'DOMAIN':_0x4520('0x1'),'SESSION_SECRET':'myappanuglar-secret','GOOGLE_ID':_0x4520('0x2'),'GOOGLE_SECRET':_0x4520('0x3'),'DEBUG':''};
\ No newline at end of file
index 726022c..7001b0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x949a=['exports','../utils/loggers'];(function(_0x2264d5,_0x39037a){var _0x3de3af=function(_0x554dec){while(--_0x554dec){_0x2264d5['push'](_0x2264d5['shift']());}};_0x3de3af(++_0x39037a);}(_0x949a,0x191));var _0xa949=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x949a[_0x321bb2];return _0x9c12ed;};'use strict';var fileLogger=require(_0xa949('0x0'))['fileLogger'];module[_0xa949('0x1')]=fileLogger;
\ No newline at end of file
+var _0x2e34=['exports','fileLogger'];(function(_0x55c1f0,_0x4f574f){var _0x1530fa=function(_0x631542){while(--_0x631542){_0x55c1f0['push'](_0x55c1f0['shift']());}};_0x1530fa(++_0x4f574f);}(_0x2e34,0x19d));var _0x42e3=function(_0x25afc5,_0x27cf79){_0x25afc5=_0x25afc5-0x0;var _0x5e58b6=_0x2e34[_0x25afc5];return _0x5e58b6;};'use strict';var fileLogger=require('../utils/loggers')[_0x42e3('0x0')];module[_0x42e3('0x1')]=fileLogger;
\ No newline at end of file
index 012c1a3..7ef1356 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x188f=['xdr','../../services/xdr/index.js','path','join','../../services/express/index.js','email','../../services/email/index.js','routing','../../services/routing/index.js'];(function(_0x115d5b,_0x26aff2){var _0x6cfc50=function(_0x39a786){while(--_0x39a786){_0x115d5b['push'](_0x115d5b['shift']());}};_0x6cfc50(++_0x26aff2);}(_0x188f,0x134));var _0xf188=function(_0x1a0621,_0x1817a7){_0x1a0621=_0x1a0621-0x0;var _0xc5806f=_0x188f[_0x1a0621];return _0xc5806f;};'use strict';var path=require(_0xf188('0x0'));var os=require('os');var config={'apps':[{'name':'express','script':path[_0xf188('0x1')](__dirname,_0xf188('0x2'))},{'name':'ami','script':path[_0xf188('0x1')](__dirname,'../../services/ami/index.js')},{'name':'agi','script':path[_0xf188('0x1')](__dirname,'../../services/agi/index.js')},{'name':_0xf188('0x3'),'script':path[_0xf188('0x1')](__dirname,_0xf188('0x4'))},{'name':_0xf188('0x5'),'script':path[_0xf188('0x1')](__dirname,_0xf188('0x6'))},{'name':_0xf188('0x7'),'script':path[_0xf188('0x1')](__dirname,_0xf188('0x8'))}]};module['exports']=config;
\ No newline at end of file
+var _0xdc96=['email','routing','../../services/routing/index.js','xdr','../../services/xdr/index.js','path','express','join','../../services/express/index.js','ami','../../services/ami/index.js','../../services/agi/index.js'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xdc96,0x125));var _0x6dc9=function(_0x5f309e,_0x66e31){_0x5f309e=_0x5f309e-0x0;var _0x487b5e=_0xdc96[_0x5f309e];return _0x487b5e;};'use strict';var path=require(_0x6dc9('0x0'));var os=require('os');var config={'apps':[{'name':_0x6dc9('0x1'),'script':path[_0x6dc9('0x2')](__dirname,_0x6dc9('0x3'))},{'name':_0x6dc9('0x4'),'script':path[_0x6dc9('0x2')](__dirname,_0x6dc9('0x5'))},{'name':'agi','script':path[_0x6dc9('0x2')](__dirname,_0x6dc9('0x6'))},{'name':_0x6dc9('0x7'),'script':path[_0x6dc9('0x2')](__dirname,'../../services/email/index.js')},{'name':_0x6dc9('0x8'),'script':path['join'](__dirname,_0x6dc9('0x9'))},{'name':_0x6dc9('0xa'),'script':path[_0x6dc9('0x2')](__dirname,_0x6dc9('0xb'))}]};module['exports']=config;
\ No newline at end of file
index c5a3848..0c64c18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e52=['describe','delete','dump','saved','pm2','./config','connected','then','start','disconnect','stop','restart','list'];(function(_0xbf56c6,_0x1289b3){var _0x4d56c0=function(_0x3039a0){while(--_0x3039a0){_0xbf56c6['push'](_0xbf56c6['shift']());}};_0x4d56c0(++_0x1289b3);}(_0x8e52,0x170));var _0x28e5=function(_0x38af48,_0x400460){_0x38af48=_0x38af48-0x0;var _0x445384=_0x8e52[_0x38af48];return _0x445384;};'use strict';var pm2=require(_0x28e5('0x0'));var BPromise=require('bluebird');var config=require(_0x28e5('0x1'));function connect(){return new BPromise(function(_0x5afa35,_0x3c39b1){return pm2['connect'](function(_0x5c95eb){if(_0x5c95eb){return _0x3c39b1(_0x5c95eb);}return _0x5afa35(_0x28e5('0x2'));});});};exports['start']=function(_0xcdeab2){return connect()[_0x28e5('0x3')](function(){return new BPromise(function(_0x17f071,_0x1ad1c2){return pm2[_0x28e5('0x4')](_0xcdeab2,function(_0x4eafcf,_0x4f244c){if(_0x4eafcf){return _0x1ad1c2(_0x4eafcf);}pm2[_0x28e5('0x5')]();return _0x17f071(_0x4f244c);});});});};exports['stop']=function(_0x28b4e4){return connect()[_0x28e5('0x3')](function(){return new BPromise(function(_0x2ed524,_0x5b5c91){return pm2[_0x28e5('0x6')](_0x28b4e4,function(_0x15a54e,_0x163da0){if(_0x15a54e){return _0x5b5c91(_0x15a54e);}pm2[_0x28e5('0x5')]();return _0x2ed524(_0x163da0);});});});};exports['restart']=function(_0x3d7299){return connect()[_0x28e5('0x3')](function(){return new BPromise(function(_0x1f9aa3,_0x180f74){return pm2[_0x28e5('0x7')](_0x3d7299,function(_0x40e02a,_0x81f8bb){if(_0x40e02a){return _0x180f74(_0x40e02a);}pm2[_0x28e5('0x5')]();return _0x1f9aa3(_0x81f8bb);});});});};exports[_0x28e5('0x8')]=function(){return connect()[_0x28e5('0x3')](function(){return new BPromise(function(_0x2d02db,_0x550f9f){return pm2[_0x28e5('0x8')](function(_0x546511,_0x3978b8){if(_0x546511){return _0x550f9f(_0x546511);}pm2[_0x28e5('0x5')]();return _0x2d02db(_0x3978b8);});});});};exports[_0x28e5('0x9')]=function(_0x1eef37){return connect()[_0x28e5('0x3')](function(){return new BPromise(function(_0x255bca,_0x2408bb){return pm2[_0x28e5('0x9')](_0x1eef37,function(_0x11c681,_0x16619c){if(_0x11c681){return _0x2408bb(_0x11c681);}pm2['disconnect']();return _0x255bca(_0x16619c);});});});};exports[_0x28e5('0xa')]=function(_0x48d79c){return connect()[_0x28e5('0x3')](function(){return new BPromise(function(_0x1c1291,_0x462719){return pm2['delete'](_0x48d79c,function(_0x57b41,_0x5cea57){if(_0x57b41){return _0x462719(_0x57b41);}pm2[_0x28e5('0x5')]();return _0x1c1291(_0x5cea57);});});});};exports[_0x28e5('0xb')]=function(){return connect()[_0x28e5('0x3')](function(){return new BPromise(function(_0x437aea,_0x3629bf){return pm2[_0x28e5('0xb')](function(_0x4b5d5a){if(_0x4b5d5a){return _0x3629bf(_0x4b5d5a);}return _0x437aea(_0x28e5('0xc'));});});});};
\ No newline at end of file
+var _0xc330=['list','describe','delete','dump','saved','pm2','./config','connect','connected','start','then','stop','disconnect','restart'];(function(_0x185f2e,_0x5be869){var _0x31f111=function(_0x1c8f82){while(--_0x1c8f82){_0x185f2e['push'](_0x185f2e['shift']());}};_0x31f111(++_0x5be869);}(_0xc330,0x19b));var _0x0c33=function(_0x5bd426,_0x4878e5){_0x5bd426=_0x5bd426-0x0;var _0x23a7eb=_0xc330[_0x5bd426];return _0x23a7eb;};'use strict';var pm2=require(_0x0c33('0x0'));var BPromise=require('bluebird');var config=require(_0x0c33('0x1'));function connect(){return new BPromise(function(_0x2211f7,_0x94ec8e){return pm2[_0x0c33('0x2')](function(_0x5b0db3){if(_0x5b0db3){return _0x94ec8e(_0x5b0db3);}return _0x2211f7(_0x0c33('0x3'));});});};exports[_0x0c33('0x4')]=function(_0x5f4e61){return connect()[_0x0c33('0x5')](function(){return new BPromise(function(_0x1a822c,_0x20c377){return pm2[_0x0c33('0x4')](_0x5f4e61,function(_0x32943d,_0x26fad5){if(_0x32943d){return _0x20c377(_0x32943d);}pm2['disconnect']();return _0x1a822c(_0x26fad5);});});});};exports[_0x0c33('0x6')]=function(_0x2a03dd){return connect()[_0x0c33('0x5')](function(){return new BPromise(function(_0x571cef,_0x7adcb1){return pm2[_0x0c33('0x6')](_0x2a03dd,function(_0x4ef247,_0x1aad01){if(_0x4ef247){return _0x7adcb1(_0x4ef247);}pm2[_0x0c33('0x7')]();return _0x571cef(_0x1aad01);});});});};exports[_0x0c33('0x8')]=function(_0x5bb4af){return connect()[_0x0c33('0x5')](function(){return new BPromise(function(_0x1adf58,_0x588387){return pm2[_0x0c33('0x8')](_0x5bb4af,function(_0x5bbdce,_0x51421e){if(_0x5bbdce){return _0x588387(_0x5bbdce);}pm2[_0x0c33('0x7')]();return _0x1adf58(_0x51421e);});});});};exports[_0x0c33('0x9')]=function(){return connect()[_0x0c33('0x5')](function(){return new BPromise(function(_0x3be806,_0x54965e){return pm2[_0x0c33('0x9')](function(_0x502cff,_0x2106a8){if(_0x502cff){return _0x54965e(_0x502cff);}pm2['disconnect']();return _0x3be806(_0x2106a8);});});});};exports[_0x0c33('0xa')]=function(_0x311b47){return connect()[_0x0c33('0x5')](function(){return new BPromise(function(_0x53aa9f,_0x1882f0){return pm2[_0x0c33('0xa')](_0x311b47,function(_0x2be702,_0x3bcd95){if(_0x2be702){return _0x1882f0(_0x2be702);}pm2['disconnect']();return _0x53aa9f(_0x3bcd95);});});});};exports[_0x0c33('0xb')]=function(_0x544a5d){return connect()[_0x0c33('0x5')](function(){return new BPromise(function(_0x397c23,_0x2a35ac){return pm2['delete'](_0x544a5d,function(_0x55d56c,_0x53b281){if(_0x55d56c){return _0x2a35ac(_0x55d56c);}pm2[_0x0c33('0x7')]();return _0x397c23(_0x53b281);});});});};exports[_0x0c33('0xc')]=function(){return connect()[_0x0c33('0x5')](function(){return new BPromise(function(_0x551d15,_0x195db5){return pm2['dump'](function(_0x1585af){if(_0x1585af){return _0x195db5(_0x1585af);}return _0x551d15(_0x0c33('0xd'));});});});};
\ No newline at end of file
index eb0b679..46ed3b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x869d=['map','info','join','ChatInteraction','update','timeout','format','YYYY-MM-DD\x20HH:mm:ss','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','chatInteraction:update','catch','[CHAT]\x20Error\x20closing\x20interactions','inspect','start','ioredis','util','../../mysqldb','redis','defaults','socket.io-emitter','Setting','chatTimeout','then','findAll','lastMsgAt','subtract','minutes','length'];(function(_0x1928c9,_0x13a6d1){var _0x51b5fb=function(_0x24cf70){while(--_0x24cf70){_0x1928c9['push'](_0x1928c9['shift']());}};_0x51b5fb(++_0x13a6d1);}(_0x869d,0x142));var _0xd869=function(_0x393ebf,_0x449e5a){_0x393ebf=_0x393ebf-0x0;var _0x5808c2=_0x869d[_0x393ebf];return _0x5808c2;};'use strict';var _=require('lodash');var moment=require('moment');var Redis=require(_0xd869('0x0'));var util=require(_0xd869('0x1'));var config=require('../../config/environment');var db=require(_0xd869('0x2'))['db'];var logger=require('../logger')('schedule');config[_0xd869('0x3')]=_[_0xd869('0x4')](config[_0xd869('0x3')],{'host':'localhost','port':0x18eb});var io=require(_0xd869('0x5'))(new Redis(config['redis']));function closeInteractions(){var _0x368505=0x0;var _0x301fa4=[];return db[_0xd869('0x6')]['find']({'raw':!![],'attributes':['id',_0xd869('0x7')],'where':{'id':0x1}})[_0xd869('0x8')](function(_0x3a8fc9){_0x368505=_0x3a8fc9[_0xd869('0x7')];if(_0x368505){return db['ChatInteraction'][_0xd869('0x9')]({'raw':!![],'attributes':['id',_0xd869('0xa')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0xd869('0xb')](_0x3a8fc9[_0xd869('0x7')],_0xd869('0xc'))}}});}else{return[];}})[_0xd869('0x8')](function(_0x3364b7){if(_0x3364b7&&_0x3364b7[_0xd869('0xd')]){_0x301fa4=_[_0xd869('0xe')](_0x3364b7||[],'id');logger[_0xd869('0xf')]('[CHAT]\x20Interactions\x20to\x20close:',_0x301fa4[_0xd869('0x10')]());return db[_0xd869('0x11')][_0xd869('0x12')]({'closeReason':'system','disposition':_0xd869('0x13'),'closed':!![],'closedAt':moment()[_0xd869('0x14')](_0xd869('0x15'))},{'where':{'id':_0x301fa4}});}})[_0xd869('0x8')](function(){if(_0x301fa4&&_0x301fa4[_0xd869('0xd')]){logger[_0xd869('0xf')](_0xd869('0x16'),_0x301fa4[_0xd869('0x10')]());for(var _0x545aec=0x0;_0x545aec<_0x301fa4[_0xd869('0xd')];_0x545aec++){io['emit'](_0xd869('0x17'),{'id':_0x301fa4[_0x545aec],'closed':!![]});}}})[_0xd869('0x18')](function(_0x355992){logger['error'](_0xd869('0x19'),_0x355992?util[_0xd869('0x1a')](_0x355992,{'showHidden':![],'depth':null}):'');});}exports[_0xd869('0x1b')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0xf2dc=['join','update','timeout','format','YYYY-MM-DD\x20HH:mm:ss','length','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','chatInteraction:update','error','[CHAT]\x20Error\x20closing\x20interactions','inspect','lodash','moment','ioredis','util','../../config/environment','../../mysqldb','../logger','schedule','redis','defaults','socket.io-emitter','Setting','find','then','chatTimeout','ChatInteraction','findAll','info','[CHAT]\x20Interactions\x20to\x20close:'];(function(_0x3c0081,_0x7b86f7){var _0x12d697=function(_0x5e62ed){while(--_0x5e62ed){_0x3c0081['push'](_0x3c0081['shift']());}};_0x12d697(++_0x7b86f7);}(_0xf2dc,0x83));var _0xcf2d=function(_0xa4a2d5,_0x4f2ab8){_0xa4a2d5=_0xa4a2d5-0x0;var _0x555467=_0xf2dc[_0xa4a2d5];return _0x555467;};'use strict';var _=require(_0xcf2d('0x0'));var moment=require(_0xcf2d('0x1'));var Redis=require(_0xcf2d('0x2'));var util=require(_0xcf2d('0x3'));var config=require(_0xcf2d('0x4'));var db=require(_0xcf2d('0x5'))['db'];var logger=require(_0xcf2d('0x6'))(_0xcf2d('0x7'));config[_0xcf2d('0x8')]=_[_0xcf2d('0x9')](config[_0xcf2d('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0xcf2d('0xa'))(new Redis(config[_0xcf2d('0x8')]));function closeInteractions(){var _0x42fc4d=0x0;var _0x375127=[];return db[_0xcf2d('0xb')][_0xcf2d('0xc')]({'raw':!![],'attributes':['id','chatTimeout'],'where':{'id':0x1}})[_0xcf2d('0xd')](function(_0xb6a46d){_0x42fc4d=_0xb6a46d[_0xcf2d('0xe')];if(_0x42fc4d){return db[_0xcf2d('0xf')][_0xcf2d('0x10')]({'raw':!![],'attributes':['id','lastMsgAt'],'where':{'closed':![],'lastMsgAt':{'$lt':moment()['subtract'](_0xb6a46d[_0xcf2d('0xe')],'minutes')}}});}else{return[];}})[_0xcf2d('0xd')](function(_0x3b466d){if(_0x3b466d&&_0x3b466d['length']){_0x375127=_['map'](_0x3b466d||[],'id');logger[_0xcf2d('0x11')](_0xcf2d('0x12'),_0x375127[_0xcf2d('0x13')]());return db[_0xcf2d('0xf')][_0xcf2d('0x14')]({'closeReason':'system','disposition':_0xcf2d('0x15'),'closed':!![],'closedAt':moment()[_0xcf2d('0x16')](_0xcf2d('0x17'))},{'where':{'id':_0x375127}});}})[_0xcf2d('0xd')](function(){if(_0x375127&&_0x375127[_0xcf2d('0x18')]){logger[_0xcf2d('0x11')](_0xcf2d('0x19'),_0x375127[_0xcf2d('0x13')]());for(var _0x5ca5e6=0x0;_0x5ca5e6<_0x375127['length'];_0x5ca5e6++){io['emit'](_0xcf2d('0x1a'),{'id':_0x375127[_0x5ca5e6],'closed':!![]});}}})['catch'](function(_0x45260e){logger[_0xcf2d('0x1b')](_0xcf2d('0x1c'),_0x45260e?util[_0xcf2d('0x1d')](_0x45260e,{'showHidden':![],'depth':null}):'');});}exports['start']=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 912eff4..76dd9cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57de=['startAllRefreshIntervals','exports','../../api/cloudProvider/cloudProvider.oauth.js'];(function(_0x2a9dc6,_0x577bd6){var _0x4283d3=function(_0x399824){while(--_0x399824){_0x2a9dc6['push'](_0x2a9dc6['shift']());}};_0x4283d3(++_0x577bd6);}(_0x57de,0x1d9));var _0xe57d=function(_0x1573ea,_0x434f02){_0x1573ea=_0x1573ea-0x0;var _0x51c0e2=_0x57de[_0x1573ea];return _0x51c0e2;};'use strict';function start(){var _0x2499e3=require(_0xe57d('0x0'));return _0x2499e3[_0xe57d('0x1')]();}module[_0xe57d('0x2')]={'intervals':{},'start':start};
\ No newline at end of file
+var _0x2475=['../../api/cloudProvider/cloudProvider.oauth.js','startAllRefreshIntervals','exports'];(function(_0x50e0c5,_0x49351f){var _0x11d623=function(_0x1d8a43){while(--_0x1d8a43){_0x50e0c5['push'](_0x50e0c5['shift']());}};_0x11d623(++_0x49351f);}(_0x2475,0x186));var _0x5247=function(_0x3cb2db,_0x42de60){_0x3cb2db=_0x3cb2db-0x0;var _0x20cb33=_0x2475[_0x3cb2db];return _0x20cb33;};'use strict';function start(){var _0x28f243=require(_0x5247('0x0'));return _0x28f243[_0x5247('0x1')]();}module[_0x5247('0x2')]={'intervals':{},'start':start};
\ No newline at end of file
index 099d122..cc87709 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x770e=['no\x20report\x20id','Schedule','findAll','CloudProvider','keys','map','toString','keyBy','difference','intersection','length','exists','deleteJob','delete\x20cron','toRun','index','my\x20id','resolve','run\x20job','cron','active','isBetween','endAt','add','add\x20cron','stop','stop\x20cron','update','update\x20cron','run','start','util','path','lodash','cron-job-manager','jayson/promise','bluebird','../logger','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','getSmtpOptions','format','Smtp','Report\x20%s\x20last\x20%s\x20%s','subtractUnit','join','savename','basename','extname','zip','status','Sent','message','attachments','Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a','stringify','existsSync','text','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','info','empty\x20file,\x20email\x20not\x20sent','SendMail','then','error','catch','data','isNil','subtractNumber','subtractNumber\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','name','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','CustomReportId','exec\x20custom\x20report\x20id:%s'];(function(_0x5c80a1,_0x4f5771){var _0x259625=function(_0xd27c44){while(--_0xd27c44){_0x5c80a1['push'](_0x5c80a1['shift']());}};_0x259625(++_0x4f5771);}(_0x770e,0xc9));var _0xe770=function(_0x5e3b04,_0xbb6795){_0x5e3b04=_0x5e3b04-0x0;var _0x1fc44d=_0x770e[_0x5e3b04];return _0x1fc44d;};'use strict';var fs=require('fs');var util=require(_0xe770('0x0'));var path=require(_0xe770('0x1'));var _=require(_0xe770('0x2'));var moment=require('moment');var CronJobManager=require(_0xe770('0x3'));var jayson=require(_0xe770('0x4'));var BPromise=require(_0xe770('0x5'));var logger=require(_0xe770('0x6'))(_0xe770('0x7'));var db=require(_0xe770('0x8'))['db'];var analyticCustomReportController=require(_0xe770('0x9'));var analyticDefaultReportController=require(_0xe770('0xa'));var client=jayson[_0xe770('0xb')][_0xe770('0xc')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x4d0015,_0x2ef3dd){return function(){logger['info'](_0xe770('0xd'),_0x4d0015[_0xe770('0xe')]);var _0x59efe2=!![];var _0xf761dd=_0x4d0015[_0xe770('0xf')][_0xe770('0x10')]();var _0x25c6f5={'account':_0xf761dd,'message':{'from':util[_0xe770('0x11')]('\x22%s\x22\x20<%s>',_0x4d0015[_0xe770('0xf')]['name'],_0x4d0015[_0xe770('0xf')]['email']||_0x4d0015[_0xe770('0xf')][_0xe770('0x12')]['user']),'to':_0x4d0015[_0xe770('0xe')],'cc':_0x4d0015['cc'],'bcc':_0x4d0015['bcc'],'subject':util[_0xe770('0x11')](_0xe770('0x13'),_0x2ef3dd['name'],_0x4d0015['subtractNumber'],_0x4d0015[_0xe770('0x14')])}};var _0x29b919=path[_0xe770('0x15')](__dirname,'../../files/reports');var _0x294edf=_0x2ef3dd[_0xe770('0x16')];var _0x348196=util['format']('%s.%s',path[_0xe770('0x17')](_0x2ef3dd[_0xe770('0x16')],path[_0xe770('0x18')](_0x2ef3dd[_0xe770('0x16')])),_0xe770('0x19'));var _0x47732f=path[_0xe770('0x15')](_0x29b919,_0x294edf);var _0x16aab5=path[_0xe770('0x15')](_0x29b919,_0x348196);if(fs['existsSync'](_0x47732f)){_0x2ef3dd[_0xe770('0x1a')]=_0xe770('0x1b');_0x25c6f5[_0xe770('0x1c')][_0xe770('0x1d')]=[{'filename':_0x294edf,'path':_0x47732f}];_0x25c6f5[_0xe770('0x1c')]['text']=util[_0xe770('0x11')](_0xe770('0x1e'),JSON[_0xe770('0x1f')](_0x2ef3dd,null,0x2));}else if(fs[_0xe770('0x20')](_0x16aab5)){_0x2ef3dd[_0xe770('0x1a')]=_0xe770('0x1b');_0x25c6f5[_0xe770('0x1c')][_0xe770('0x1d')]=[{'filename':_0x348196,'path':_0x16aab5}];}else{_0x25c6f5[_0xe770('0x1c')][_0xe770('0x21')]=_0xe770('0x22');if(!_0x4d0015['sendIfEmpty']){_0x59efe2=![];logger[_0xe770('0x23')](_0xe770('0x24'));}}if(_0x59efe2){return client['request'](_0xe770('0x25'),_0x25c6f5)[_0xe770('0x26')](function(_0x1a9378){if(_0x1a9378[_0xe770('0x27')]){return logger[_0xe770('0x27')]('error\x20mail',JSON['stringify'](_0x1a9378));}return logger['info']('email\x20sent');})[_0xe770('0x28')](function(_0x56f1f3){return logger[_0xe770('0x27')]('error\x20mail',JSON['stringify'](_0x56f1f3));});}};}function handleError(){return function(_0x469aaa){return logger[_0xe770('0x27')](JSON[_0xe770('0x1f')](_0x469aaa));};}function handleResult(_0x352421){return function(_0x2bbd45){logger['info'](_0xe770('0x29'),JSON[_0xe770('0x1f')](_0x2bbd45));if(_0x352421[_0xe770('0xf')]&&_0x352421[_0xe770('0xf')][_0xe770('0x12')]&&!_['isNil'](_0x352421[_0xe770('0xe')])){setTimeout(handleSendEmail(_0x352421,_0x2bbd45),0x3c*0x3e8);}};}function handleJob(_0x173648){return function(){try{if(_[_0xe770('0x2a')](_0x173648[_0xe770('0x2b')])){return logger[_0xe770('0x23')](_0xe770('0x2c'));}if(_[_0xe770('0x2a')](_0x173648[_0xe770('0x14')])){return logger[_0xe770('0x23')]('subtractUnit\x20null\x20or\x20undefined');}var _0x5dd2ff={'startDate':moment()[_0xe770('0x2d')](_0x173648[_0xe770('0x2b')],_0x173648[_0xe770('0x14')])[_0xe770('0x11')](_0xe770('0x2e')),'endDate':moment()[_0xe770('0x11')](_0xe770('0x2e')),'type':_0xe770('0x2f'),'output':_0x173648['output'],'name':_0x173648[_0xe770('0x30')]};if(!_['isNil'](_0x173648[_0xe770('0x31')])){logger[_0xe770('0x23')](_0xe770('0x32'),_0x173648['DefaultReportId']);return analyticDefaultReportController[_0xe770('0x33')]({'id':_0x173648[_0xe770('0x31')]},_0x5dd2ff)[_0xe770('0x26')](handleResult(_0x173648))['catch'](handleError());}if(!_[_0xe770('0x2a')](_0x173648[_0xe770('0x34')])){logger['info'](_0xe770('0x35'),_0x173648[_0xe770('0x34')]);return analyticCustomReportController[_0xe770('0x33')]({'id':_0x173648[_0xe770('0x34')]},_0x5dd2ff)[_0xe770('0x26')](handleResult(_0x173648))[_0xe770('0x28')](handleError());}}catch(_0x20b6e5){logger[_0xe770('0x27')](JSON[_0xe770('0x1f')](_0x20b6e5));}return logger[_0xe770('0x23')](_0xe770('0x36'));};}function getJobs(_0x3b848f){var _0x151f00={};if(_0x3b848f){_0x151f00['id']=_0x3b848f;}return db[_0xe770('0x37')][_0xe770('0x38')]({'where':_0x151f00,'include':[{'model':db['MailAccount'],'attributes':['id','name',_0xe770('0xe')],'include':[{'model':db['MailServerOut'],'as':_0xe770('0x12'),'include':[{'model':db[_0xe770('0x39')],'as':_0xe770('0x39')}]}]}]})[_0xe770('0x26')](function(_0x3c87fb){var _0x4c7598=_[_0xe770('0x3a')](manager['jobs']);var _0x369d94=_[_0xe770('0x3b')](_0x3c87fb,function(_0x64508b){return _0x64508b['id'][_0xe770('0x3c')]();});var _0x257c37=_[_0xe770('0x3d')](_0x3c87fb,function(_0x2a6320){return _0x2a6320['id']['toString']();});var _0x4edc39=_0x3b848f?_0x369d94:_[_0xe770('0x3e')](_0x369d94,_0x4c7598);var _0x19eff6=_[_0xe770('0x3f')](_0x369d94,_0x4c7598);var _0x4afb5f=_[_0xe770('0x3e')](_0x4c7598,_0x369d94);var _0x119ebf;var _0x5bdfde;for(_0x119ebf=0x0;_0x119ebf<_0x4afb5f[_0xe770('0x40')]&&!_0x3b848f;_0x119ebf+=0x1){_0x5bdfde=_0x4afb5f[_0x119ebf]['toString']();if(manager[_0xe770('0x41')](_0x5bdfde)){manager['stop'](_0x5bdfde);manager[_0xe770('0x42')](_0x5bdfde);logger[_0xe770('0x23')](_0xe770('0x43'),_0x5bdfde);}}logger[_0xe770('0x23')](_0xe770('0x44'),JSON[_0xe770('0x1f')](_0x4edc39));for(_0x119ebf=0x0;_0x119ebf<_0x4edc39[_0xe770('0x40')];_0x119ebf+=0x1){_0x5bdfde=_0x4edc39[_0x119ebf][_0xe770('0x3c')]();logger[_0xe770('0x23')](_0xe770('0x45'),_0x5bdfde);if(_0x3b848f){logger[_0xe770('0x23')](_0xe770('0x46'),_0x3b848f);logger[_0xe770('0x23')](JSON[_0xe770('0x1f')](_0x257c37[_0x5bdfde]));BPromise[_0xe770('0x47')]()['then'](handleJob(_0x257c37[_0x5bdfde]));logger[_0xe770('0x23')](_0xe770('0x48'),_0x257c37[_0x5bdfde][_0xe770('0x30')],_0x257c37[_0x5bdfde]['cron']);}else if(_0x257c37[_0x5bdfde][_0xe770('0x49')]&&_0x257c37[_0x5bdfde][_0xe770('0x4a')]&&moment()[_0xe770('0x4b')](_0x257c37[_0x5bdfde]['startAt'],_0x257c37[_0x5bdfde][_0xe770('0x4c')])){manager[_0xe770('0x4d')](_0x5bdfde,_0x257c37[_0x5bdfde]['cron'],handleJob(_0x257c37[_0x5bdfde]));manager['start'](_0x5bdfde);logger[_0xe770('0x23')](_0xe770('0x4e'),_0x257c37[_0x5bdfde][_0xe770('0x30')],_0x257c37[_0x5bdfde][_0xe770('0x49')]);}else if(manager[_0xe770('0x41')](_0x5bdfde)){manager[_0xe770('0x4f')](_0x5bdfde);manager[_0xe770('0x42')](_0x5bdfde);logger[_0xe770('0x23')](_0xe770('0x50'),_0x257c37[_0x5bdfde]['name'],_0x257c37[_0x5bdfde]['cron']);}}for(_0x119ebf=0x0,_0x5bdfde;_0x119ebf<_0x19eff6[_0xe770('0x40')]&&!_0x3b848f;_0x119ebf+=0x1){_0x5bdfde=_0x19eff6[_0x119ebf]['toString']();if(manager['exists'](_0x5bdfde)){if(_0x257c37[_0x5bdfde][_0xe770('0x49')]&&_0x257c37[_0x5bdfde][_0xe770('0x4a')]&&moment()[_0xe770('0x4b')](_0x257c37[_0x5bdfde]['startAt'],_0x257c37[_0x5bdfde][_0xe770('0x4c')])){manager[_0xe770('0x51')](_0x5bdfde,_0x257c37[_0x5bdfde][_0xe770('0x49')],handleJob(_0x257c37[_0x5bdfde]));logger[_0xe770('0x23')](_0xe770('0x52'),_0x257c37[_0x5bdfde]['name'],_0x257c37[_0x5bdfde][_0xe770('0x49')]);}else{manager['stop'](_0x5bdfde);manager[_0xe770('0x42')](_0x5bdfde);logger[_0xe770('0x23')](_0xe770('0x50'),_0x257c37[_0x5bdfde][_0xe770('0x30')],_0x257c37[_0x5bdfde]['cron']);}}}})[_0xe770('0x28')](function(_0x390084){logger['error'](JSON[_0xe770('0x1f')](_0x390084));});}exports[_0xe770('0x53')]=function(_0x1acfc6){return getJobs(_0x1acfc6);};exports[_0xe770('0x54')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
+var _0x3f1b=['existsSync','status','Sent','attachments','message','text','Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a','stringify','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','request','SendMail','then','error','error\x20mail','email\x20sent','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','catch','CustomReportId','Schedule','findAll','MailServerOut','CloudProvider','map','toString','difference','intersection','length','stop','deleteJob','toRun','index','resolve','run\x20job','cron','isBetween','startAt','endAt','add','start','add\x20cron','stop\x20cron','exists','active','run','util','path','lodash','moment','cron-job-manager','jayson/promise','bluebird','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','info','Try\x20to\x20send\x20a\x20mail\x20to','email','format','MailAccount','name','user','bcc','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','join','%s.%s','savename','zip'];(function(_0x525bcf,_0x428c0c){var _0x4c3486=function(_0xf87f2){while(--_0xf87f2){_0x525bcf['push'](_0x525bcf['shift']());}};_0x4c3486(++_0x428c0c);}(_0x3f1b,0x84));var _0xb3f1=function(_0x3ba378,_0x5296db){_0x3ba378=_0x3ba378-0x0;var _0x1d6d05=_0x3f1b[_0x3ba378];return _0x1d6d05;};'use strict';var fs=require('fs');var util=require(_0xb3f1('0x0'));var path=require(_0xb3f1('0x1'));var _=require(_0xb3f1('0x2'));var moment=require(_0xb3f1('0x3'));var CronJobManager=require(_0xb3f1('0x4'));var jayson=require(_0xb3f1('0x5'));var BPromise=require(_0xb3f1('0x6'));var logger=require('../logger')('schedule');var db=require('../../mysqldb')['db'];var analyticCustomReportController=require(_0xb3f1('0x7'));var analyticDefaultReportController=require(_0xb3f1('0x8'));var client=jayson[_0xb3f1('0x9')]['http']({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x37963a,_0x50124e){return function(){logger[_0xb3f1('0xa')](_0xb3f1('0xb'),_0x37963a[_0xb3f1('0xc')]);var _0x3ada43=!![];var _0x4f6d5a=_0x37963a['MailAccount']['getSmtpOptions']();var _0x3b0043={'account':_0x4f6d5a,'message':{'from':util[_0xb3f1('0xd')]('\x22%s\x22\x20<%s>',_0x37963a[_0xb3f1('0xe')][_0xb3f1('0xf')],_0x37963a[_0xb3f1('0xe')][_0xb3f1('0xc')]||_0x37963a['MailAccount']['Smtp'][_0xb3f1('0x10')]),'to':_0x37963a['email'],'cc':_0x37963a['cc'],'bcc':_0x37963a[_0xb3f1('0x11')],'subject':util[_0xb3f1('0xd')](_0xb3f1('0x12'),_0x50124e[_0xb3f1('0xf')],_0x37963a[_0xb3f1('0x13')],_0x37963a['subtractUnit'])}};var _0x558714=path[_0xb3f1('0x14')](__dirname,'../../files/reports');var _0x1fda4c=_0x50124e['savename'];var _0x30197e=util[_0xb3f1('0xd')](_0xb3f1('0x15'),path['basename'](_0x50124e[_0xb3f1('0x16')],path['extname'](_0x50124e[_0xb3f1('0x16')])),_0xb3f1('0x17'));var _0x3f8331=path[_0xb3f1('0x14')](_0x558714,_0x1fda4c);var _0x5b6c64=path[_0xb3f1('0x14')](_0x558714,_0x30197e);if(fs[_0xb3f1('0x18')](_0x3f8331)){_0x50124e[_0xb3f1('0x19')]=_0xb3f1('0x1a');_0x3b0043['message'][_0xb3f1('0x1b')]=[{'filename':_0x1fda4c,'path':_0x3f8331}];_0x3b0043[_0xb3f1('0x1c')][_0xb3f1('0x1d')]=util[_0xb3f1('0xd')](_0xb3f1('0x1e'),JSON[_0xb3f1('0x1f')](_0x50124e,null,0x2));}else if(fs[_0xb3f1('0x18')](_0x5b6c64)){_0x50124e[_0xb3f1('0x19')]='Sent';_0x3b0043[_0xb3f1('0x1c')][_0xb3f1('0x1b')]=[{'filename':_0x30197e,'path':_0x5b6c64}];}else{_0x3b0043[_0xb3f1('0x1c')]['text']=_0xb3f1('0x20');if(!_0x37963a[_0xb3f1('0x21')]){_0x3ada43=![];logger[_0xb3f1('0xa')]('empty\x20file,\x20email\x20not\x20sent');}}if(_0x3ada43){return client[_0xb3f1('0x22')](_0xb3f1('0x23'),_0x3b0043)[_0xb3f1('0x24')](function(_0x2ec15f){if(_0x2ec15f[_0xb3f1('0x25')]){return logger[_0xb3f1('0x25')](_0xb3f1('0x26'),JSON[_0xb3f1('0x1f')](_0x2ec15f));}return logger[_0xb3f1('0xa')](_0xb3f1('0x27'));})['catch'](function(_0x263137){return logger['error']('error\x20mail',JSON[_0xb3f1('0x1f')](_0x263137));});}};}function handleError(){return function(_0x46bcdb){return logger['error'](JSON[_0xb3f1('0x1f')](_0x46bcdb));};}function handleResult(_0x54cf2f){return function(_0x277dfa){logger[_0xb3f1('0xa')]('data',JSON[_0xb3f1('0x1f')](_0x277dfa));if(_0x54cf2f[_0xb3f1('0xe')]&&_0x54cf2f[_0xb3f1('0xe')]['Smtp']&&!_[_0xb3f1('0x28')](_0x54cf2f[_0xb3f1('0xc')])){setTimeout(handleSendEmail(_0x54cf2f,_0x277dfa),0x3c*0x3e8);}};}function handleJob(_0x3c4c35){return function(){try{if(_['isNil'](_0x3c4c35[_0xb3f1('0x13')])){return logger[_0xb3f1('0xa')](_0xb3f1('0x29'));}if(_[_0xb3f1('0x28')](_0x3c4c35[_0xb3f1('0x2a')])){return logger[_0xb3f1('0xa')](_0xb3f1('0x2b'));}var _0xbc1ff8={'startDate':moment()[_0xb3f1('0x2c')](_0x3c4c35['subtractNumber'],_0x3c4c35[_0xb3f1('0x2a')])[_0xb3f1('0xd')](_0xb3f1('0x2d')),'endDate':moment()[_0xb3f1('0xd')](_0xb3f1('0x2d')),'type':'scheduled','output':_0x3c4c35[_0xb3f1('0x2e')],'name':_0x3c4c35['name']};if(!_[_0xb3f1('0x28')](_0x3c4c35[_0xb3f1('0x2f')])){logger[_0xb3f1('0xa')](_0xb3f1('0x30'),_0x3c4c35[_0xb3f1('0x2f')]);return analyticDefaultReportController[_0xb3f1('0x31')]({'id':_0x3c4c35[_0xb3f1('0x2f')]},_0xbc1ff8)[_0xb3f1('0x24')](handleResult(_0x3c4c35))[_0xb3f1('0x32')](handleError());}if(!_[_0xb3f1('0x28')](_0x3c4c35['CustomReportId'])){logger['info']('exec\x20custom\x20report\x20id:%s',_0x3c4c35[_0xb3f1('0x33')]);return analyticCustomReportController[_0xb3f1('0x31')]({'id':_0x3c4c35[_0xb3f1('0x33')]},_0xbc1ff8)[_0xb3f1('0x24')](handleResult(_0x3c4c35))['catch'](handleError());}}catch(_0x22596a){logger[_0xb3f1('0x25')](JSON[_0xb3f1('0x1f')](_0x22596a));}return logger['info']('no\x20report\x20id');};}function getJobs(_0x50f2e4){var _0x7c2119={};if(_0x50f2e4){_0x7c2119['id']=_0x50f2e4;}return db[_0xb3f1('0x34')][_0xb3f1('0x35')]({'where':_0x7c2119,'include':[{'model':db[_0xb3f1('0xe')],'attributes':['id',_0xb3f1('0xf'),_0xb3f1('0xc')],'include':[{'model':db[_0xb3f1('0x36')],'as':'Smtp','include':[{'model':db[_0xb3f1('0x37')],'as':_0xb3f1('0x37')}]}]}]})[_0xb3f1('0x24')](function(_0x57827b){var _0x3901df=_['keys'](manager['jobs']);var _0x4d7fde=_[_0xb3f1('0x38')](_0x57827b,function(_0x30c225){return _0x30c225['id'][_0xb3f1('0x39')]();});var _0x47a595=_['keyBy'](_0x57827b,function(_0x3f46fb){return _0x3f46fb['id'][_0xb3f1('0x39')]();});var _0x5e4581=_0x50f2e4?_0x4d7fde:_[_0xb3f1('0x3a')](_0x4d7fde,_0x3901df);var _0x59cea0=_[_0xb3f1('0x3b')](_0x4d7fde,_0x3901df);var _0x1fc001=_[_0xb3f1('0x3a')](_0x3901df,_0x4d7fde);var _0x313da9;var _0x4b9048;for(_0x313da9=0x0;_0x313da9<_0x1fc001[_0xb3f1('0x3c')]&&!_0x50f2e4;_0x313da9+=0x1){_0x4b9048=_0x1fc001[_0x313da9][_0xb3f1('0x39')]();if(manager['exists'](_0x4b9048)){manager[_0xb3f1('0x3d')](_0x4b9048);manager[_0xb3f1('0x3e')](_0x4b9048);logger['info']('delete\x20cron',_0x4b9048);}}logger['info'](_0xb3f1('0x3f'),JSON[_0xb3f1('0x1f')](_0x5e4581));for(_0x313da9=0x0;_0x313da9<_0x5e4581[_0xb3f1('0x3c')];_0x313da9+=0x1){_0x4b9048=_0x5e4581[_0x313da9][_0xb3f1('0x39')]();logger[_0xb3f1('0xa')](_0xb3f1('0x40'),_0x4b9048);if(_0x50f2e4){logger[_0xb3f1('0xa')]('my\x20id',_0x50f2e4);logger[_0xb3f1('0xa')](JSON[_0xb3f1('0x1f')](_0x47a595[_0x4b9048]));BPromise[_0xb3f1('0x41')]()[_0xb3f1('0x24')](handleJob(_0x47a595[_0x4b9048]));logger[_0xb3f1('0xa')](_0xb3f1('0x42'),_0x47a595[_0x4b9048][_0xb3f1('0xf')],_0x47a595[_0x4b9048]['cron']);}else if(_0x47a595[_0x4b9048][_0xb3f1('0x43')]&&_0x47a595[_0x4b9048]['active']&&moment()[_0xb3f1('0x44')](_0x47a595[_0x4b9048][_0xb3f1('0x45')],_0x47a595[_0x4b9048][_0xb3f1('0x46')])){manager[_0xb3f1('0x47')](_0x4b9048,_0x47a595[_0x4b9048][_0xb3f1('0x43')],handleJob(_0x47a595[_0x4b9048]));manager[_0xb3f1('0x48')](_0x4b9048);logger['info'](_0xb3f1('0x49'),_0x47a595[_0x4b9048][_0xb3f1('0xf')],_0x47a595[_0x4b9048]['cron']);}else if(manager['exists'](_0x4b9048)){manager['stop'](_0x4b9048);manager[_0xb3f1('0x3e')](_0x4b9048);logger[_0xb3f1('0xa')](_0xb3f1('0x4a'),_0x47a595[_0x4b9048][_0xb3f1('0xf')],_0x47a595[_0x4b9048][_0xb3f1('0x43')]);}}for(_0x313da9=0x0,_0x4b9048;_0x313da9<_0x59cea0[_0xb3f1('0x3c')]&&!_0x50f2e4;_0x313da9+=0x1){_0x4b9048=_0x59cea0[_0x313da9][_0xb3f1('0x39')]();if(manager[_0xb3f1('0x4b')](_0x4b9048)){if(_0x47a595[_0x4b9048][_0xb3f1('0x43')]&&_0x47a595[_0x4b9048][_0xb3f1('0x4c')]&&moment()['isBetween'](_0x47a595[_0x4b9048][_0xb3f1('0x45')],_0x47a595[_0x4b9048][_0xb3f1('0x46')])){manager['update'](_0x4b9048,_0x47a595[_0x4b9048][_0xb3f1('0x43')],handleJob(_0x47a595[_0x4b9048]));logger[_0xb3f1('0xa')]('update\x20cron',_0x47a595[_0x4b9048][_0xb3f1('0xf')],_0x47a595[_0x4b9048]['cron']);}else{manager[_0xb3f1('0x3d')](_0x4b9048);manager[_0xb3f1('0x3e')](_0x4b9048);logger[_0xb3f1('0xa')](_0xb3f1('0x4a'),_0x47a595[_0x4b9048][_0xb3f1('0xf')],_0x47a595[_0x4b9048][_0xb3f1('0x43')]);}}}})[_0xb3f1('0x32')](function(_0x588d5b){logger[_0xb3f1('0x25')](JSON[_0xb3f1('0x1f')](_0x588d5b));});}exports[_0xb3f1('0x4d')]=function(_0x225075){return getJobs(_0x225075);};exports['start']=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
index 4c79226..79a1320 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8efc=['transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','Sequelize','ValidationError','sentimentAccountId','language','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','sentimentRegion','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','SentimentScore','Positive','Mixed','Neutral','FAILED','FailureReason','resolve','tempSentiment','sentiment','Sentiment','catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','VoiceRecording','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','bucket','transcribeAccountId','push','all','inspect','aws-sdk','request-promise','util','bluebird','../../config/logger','transcribe','TranscribeService','getTranscriptionJob','Comprehend','detectSentiment','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','data2','transcribeRegion','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','Transcript','[RECORDING:%d]\x20Get\x20transcript','TranscriptFileUri','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length'];(function(_0x1254d8,_0x2433d0){var _0x5e8976=function(_0x26c8ca){while(--_0x26c8ca){_0x1254d8['push'](_0x1254d8['shift']());}};_0x5e8976(++_0x2433d0);}(_0x8efc,0xb3));var _0xc8ef=function(_0x59943d,_0x2e751b){_0x59943d=_0x59943d-0x0;var _0x46ace9=_0x8efc[_0x59943d];return _0x46ace9;};var _=require('lodash');var AWS=require(_0xc8ef('0x0'));var rp=require(_0xc8ef('0x1'));var util=require(_0xc8ef('0x2'));var BPromise=require(_0xc8ef('0x3'));var db=require('../../mysqldb')['db'];var logger=require(_0xc8ef('0x4'))(_0xc8ef('0x5'));function getTranscriptionJob(_0x33b9c9,_0x50d1f6,_0x2910b5,_0x3c6189){return new Promise(function(_0x1cd466,_0x13b433){var _0x576ff9=new AWS[(_0xc8ef('0x6'))]({'accessKeyId':_0x50d1f6,'secretAccessKey':_0x33b9c9,'region':_0x2910b5});_0x576ff9[_0xc8ef('0x7')]({'TranscriptionJobName':_0x3c6189},function(_0x1c8931,_0x489778){if(_0x1c8931){return _0x13b433(_0x1c8931);}else{return _0x1cd466(_0x489778);}});});}function sentiment(_0x11f3ba,_0x443ee3,_0x1a9a5f,_0xcc3c21,_0x56cfb1){return new Promise(function(_0x315d93,_0x574588){var _0x45dbd3=new AWS[(_0xc8ef('0x8'))]({'accessKeyId':_0x443ee3,'secretAccessKey':_0x11f3ba,'region':_0x1a9a5f});_0x45dbd3[_0xc8ef('0x9')]({'Text':_0xcc3c21,'LanguageCode':_0x56cfb1[_0xc8ef('0xa')](0x0,0x2)},function(_0xa76b59,_0x44d7da){if(_0xa76b59){return _0x574588(_0xa76b59);}else{return _0x315d93(_0x44d7da);}});});}function checkTranscribeJob(_0x18213f,_0x1c6744,_0xb90ed0){var _0x15669b;return new BPromise(function(_0x3e7c04,_0x1207d8){logger[_0xc8ef('0xb')](util[_0xc8ef('0xc')](_0xc8ef('0xd'),_0x18213f['id'],_0x18213f[_0xc8ef('0xe')]));return getTranscriptionJob(_0xb90ed0[_0xc8ef('0xf')],_0xb90ed0[_0xc8ef('0x10')],_0x1c6744[_0xc8ef('0x11')],_0x18213f[_0xc8ef('0xe')])[_0xc8ef('0x12')](function(_0x45eb4b){logger['info'](util[_0xc8ef('0xc')](_0xc8ef('0x13'),_0x18213f['id'],_0x18213f[_0xc8ef('0xe')],_0x45eb4b[_0xc8ef('0x14')][_0xc8ef('0x15')]));if(!_0x18213f[_0xc8ef('0x16')]){switch(_0x45eb4b[_0xc8ef('0x14')][_0xc8ef('0x15')]){case _0xc8ef('0x17'):var _0x3591c={'transcribeStatus':_0x45eb4b['TranscriptionJob'][_0xc8ef('0x15')],'fileUri':_0x45eb4b['TranscriptionJob'][_0xc8ef('0x18')]['TranscriptFileUri']};logger[_0xc8ef('0xb')](util['format'](_0xc8ef('0x19'),_0x18213f['id']));return rp({'uri':_0x45eb4b[_0xc8ef('0x14')][_0xc8ef('0x18')][_0xc8ef('0x1a')],'json':!![]})[_0xc8ef('0x12')](function(_0x4c57e3){logger[_0xc8ef('0xb')](util[_0xc8ef('0xc')](_0xc8ef('0x1b'),_0x18213f['id']));if(_0x4c57e3&&_0x4c57e3['results']&&_0x4c57e3[_0xc8ef('0x1c')]['transcripts']&&_0x4c57e3['results']['transcripts']['length']){_0x3591c[_0xc8ef('0x16')]='';for(var _0x128556=0x0;_0x128556<_0x4c57e3[_0xc8ef('0x1c')][_0xc8ef('0x1d')][_0xc8ef('0x1e')];_0x128556++){_0x3591c[_0xc8ef('0x16')]+=_0x4c57e3[_0xc8ef('0x1c')][_0xc8ef('0x1d')][_0x128556][_0xc8ef('0x1f')]+'';}}return _0x18213f[_0xc8ef('0x20')](_0x3591c);})[_0xc8ef('0x12')](function(){logger[_0xc8ef('0xb')](util[_0xc8ef('0xc')](_0xc8ef('0x21'),_0x18213f['id']));if(!_0x18213f['tempSentiment']){throw new db[(_0xc8ef('0x22'))][(_0xc8ef('0x23'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x1c6744['sentiment']||!_0x1c6744[_0xc8ef('0x24')]||!_0x1c6744['sentimentRegion']||!_0x1c6744[_0xc8ef('0x25')]||!_0x1c6744['bucket']){throw new db[(_0xc8ef('0x22'))]['ValidationError'](_0xc8ef('0x26'));}if(!_0x3591c[_0xc8ef('0x16')]){throw new Error('Transcript\x20not\x20available');}if(_0x1c6744['sentimentAccountId']===_0xb90ed0['id']){return _0xb90ed0;}else{return db[_0xc8ef('0x27')][_0xc8ef('0x28')]({'where':{'id':_settings['sentimentAccountId']}});}})[_0xc8ef('0x12')](function(_0x3bde31){if(!_0x3bde31){throw new db[(_0xc8ef('0x22'))][(_0xc8ef('0x23'))](_0xc8ef('0x29'));}if(!_0x3bde31[_0xc8ef('0xf')]||!_0x3bde31[_0xc8ef('0x10')]){throw new db[(_0xc8ef('0x22'))][(_0xc8ef('0x23'))](_0xc8ef('0x2a'));}_0x15669b=_0x3bde31;logger[_0xc8ef('0xb')](util[_0xc8ef('0xc')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x18213f['id']));return sentiment(_0x15669b[_0xc8ef('0xf')],_0x15669b[_0xc8ef('0x10')],_0x1c6744[_0xc8ef('0x2b')],_0x3591c[_0xc8ef('0x16')],_0x1c6744['language']);})[_0xc8ef('0x12')](function(_0x1890de){logger['info'](util[_0xc8ef('0xc')](_0xc8ef('0x2c'),_0x18213f['id']));return _0x18213f['update']({'sentiment':_0x1890de['Sentiment'],'sPositive':_0x1890de[_0xc8ef('0x2d')][_0xc8ef('0x2e')],'sNegative':_0x1890de[_0xc8ef('0x2d')]['Negative'],'sMixed':_0x1890de['SentimentScore'][_0xc8ef('0x2f')],'sNeutral':_0x1890de[_0xc8ef('0x2d')][_0xc8ef('0x30')]});})[_0xc8ef('0x12')](function(){logger[_0xc8ef('0xb')](util['format'](_0xc8ef('0x21'),_0x18213f['id']));_0x3e7c04();});case _0xc8ef('0x31'):return _0x18213f[_0xc8ef('0x20')]({'transcribeStatus':_0xc8ef('0x31'),'failureReason':_0x45eb4b[_0xc8ef('0x14')][_0xc8ef('0x32')]})['then'](function(){logger[_0xc8ef('0xb')](util[_0xc8ef('0xc')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x18213f['id']));_0x3e7c04();});default:logger['info'](util['format']('[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed',_0x18213f['id']));break;}}else{return BPromise[_0xc8ef('0x33')]()['then'](function(){if(!_0x18213f[_0xc8ef('0x34')]){throw new db[(_0xc8ef('0x22'))][(_0xc8ef('0x23'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x1c6744[_0xc8ef('0x35')]||!_0x1c6744[_0xc8ef('0x24')]||!_0x1c6744[_0xc8ef('0x2b')]||!_0x1c6744[_0xc8ef('0x25')]||!_0x1c6744['bucket']){throw new db[(_0xc8ef('0x22'))][(_0xc8ef('0x23'))](_0xc8ef('0x26'));}if(!_0x18213f[_0xc8ef('0x16')]){throw new Error('Transcript\x20not\x20available');}if(_0x1c6744['sentimentAccountId']===_0xb90ed0['id']){return _0xb90ed0;}else{return db[_0xc8ef('0x27')][_0xc8ef('0x28')]({'where':{'id':_settings[_0xc8ef('0x24')]}});}})[_0xc8ef('0x12')](function(_0x351109){if(!_0x351109){throw new db['Sequelize']['ValidationError'](_0xc8ef('0x29'));}if(!_0x351109['data1']||!_0x351109[_0xc8ef('0x10')]){throw new db[(_0xc8ef('0x22'))][(_0xc8ef('0x23'))]('Cloud\x20Provider\x20not\x20configured');}_0x15669b=_0x351109;logger[_0xc8ef('0xb')](util[_0xc8ef('0xc')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x18213f['id']));return sentiment(_0x15669b[_0xc8ef('0xf')],_0x15669b['data2'],_0x1c6744[_0xc8ef('0x2b')],_0x18213f[_0xc8ef('0x16')],_0x1c6744[_0xc8ef('0x25')]);})['then'](function(_0x5b1ef1){logger['info'](util[_0xc8ef('0xc')](_0xc8ef('0x2c'),_0x18213f['id']));return _0x18213f[_0xc8ef('0x20')]({'sentiment':_0x5b1ef1[_0xc8ef('0x36')],'sPositive':_0x5b1ef1[_0xc8ef('0x2d')][_0xc8ef('0x2e')],'sNegative':_0x5b1ef1[_0xc8ef('0x2d')]['Negative'],'sMixed':_0x5b1ef1['SentimentScore'][_0xc8ef('0x2f')],'sNeutral':_0x5b1ef1[_0xc8ef('0x2d')][_0xc8ef('0x30')],'transcribeStatus':_0xc8ef('0x17')});})[_0xc8ef('0x12')](function(){logger['info'](util[_0xc8ef('0xc')](_0xc8ef('0x21'),_0x18213f['id']));_0x3e7c04();});}})[_0xc8ef('0x37')](function(_0xc932df){if(_0xc932df){if(!_0xc932df['name']||_0xc932df[_0xc8ef('0x38')]!==_0xc8ef('0x39')){logger[_0xc8ef('0x3a')](util['format'](_0xc8ef('0x3b'),_0x18213f['id']),util['inspect'](_0xc932df,{'showHidden':![],'depth':null}));}}_0x3e7c04();});});}function checkTranscribe(){var _0x7e5c5a;var _0x52eac7;var _0x3dbb7a;return db[_0xc8ef('0x3c')][_0xc8ef('0x3d')]({'where':{'transcribeStatus':_0xc8ef('0x3e')}})[_0xc8ef('0x12')](function(_0x3e0398){if(!_0x3e0398||!_0x3e0398[_0xc8ef('0x1e')]){throw new db[(_0xc8ef('0x22'))]['ValidationError'](_0xc8ef('0x3f'));}_0x7e5c5a=_0x3e0398;return db[_0xc8ef('0x40')]['findOne']({'where':{'id':0x1}});})['then'](function(_0xe997a){if(!_0xe997a){throw new db['Sequelize'][(_0xc8ef('0x23'))]('Settings\x20not\x20available');}_0x52eac7=_0xe997a;if(!_0x52eac7[_0xc8ef('0x5')]||!_0x52eac7['transcribeAccountId']||!_0x52eac7[_0xc8ef('0x11')]||!_0x52eac7[_0xc8ef('0x25')]||!_0x52eac7[_0xc8ef('0x41')]){throw new db[(_0xc8ef('0x22'))][(_0xc8ef('0x23'))]('Transcribe\x20not\x20configured');}return db[_0xc8ef('0x27')][_0xc8ef('0x28')]({'where':{'id':_0x52eac7[_0xc8ef('0x42')]}});})[_0xc8ef('0x12')](function(_0x1b460a){if(!_0x1b460a){throw new db[(_0xc8ef('0x22'))]['ValidationError']('Cloud\x20Provider\x20not\x20available');}if(!_0x1b460a[_0xc8ef('0xf')]||!_0x1b460a[_0xc8ef('0x10')]){throw new db['Sequelize']['ValidationError'](_0xc8ef('0x2a'));}_0x3dbb7a=_0x1b460a;var _0x1cfab1=[];_0x7e5c5a['forEach'](function(_0x479742){_0x1cfab1[_0xc8ef('0x43')](checkTranscribeJob(_0x479742,_0x52eac7,_0x3dbb7a));});return BPromise[_0xc8ef('0x44')](_0x1cfab1);})[_0xc8ef('0x37')](function(_0xb58103){if(_0xb58103){if(!_0xb58103[_0xc8ef('0x38')]||_0xb58103['name']!==_0xc8ef('0x39')){logger[_0xc8ef('0x3a')](util[_0xc8ef('0x45')](_0xb58103,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
+var _0xa71a=['Negative','Neutral','FAILED','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','tempSentiment','sentiment','language','sentimentAccountId','findOne','Mixed','name','inspect','VoiceRecording','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribeAccountId','forEach','all','SequelizeValidationError','error','start','lodash','aws-sdk','request-promise','util','../../mysqldb','../../config/logger','transcribe','TranscribeService','getTranscriptionJob','Comprehend','detectSentiment','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','transcribeRegion','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','Sequelize','Sentiment\x20Analysis\x20not\x20requested','sentimentRegion','bucket','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','Cloud\x20Provider\x20not\x20available','data2','ValidationError','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','update','Sentiment','Positive','SentimentScore'];(function(_0x271607,_0x1cdaf2){var _0x2e87c1=function(_0x3186b2){while(--_0x3186b2){_0x271607['push'](_0x271607['shift']());}};_0x2e87c1(++_0x1cdaf2);}(_0xa71a,0xf1));var _0xaa71=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xa71a[_0x2641f9];return _0x585741;};var _=require(_0xaa71('0x0'));var AWS=require(_0xaa71('0x1'));var rp=require(_0xaa71('0x2'));var util=require(_0xaa71('0x3'));var BPromise=require('bluebird');var db=require(_0xaa71('0x4'))['db'];var logger=require(_0xaa71('0x5'))(_0xaa71('0x6'));function getTranscriptionJob(_0x5efe0e,_0x32d34b,_0x480d9b,_0xd325fb){return new Promise(function(_0x2f476b,_0x1f07bd){var _0x5893aa=new AWS[(_0xaa71('0x7'))]({'accessKeyId':_0x32d34b,'secretAccessKey':_0x5efe0e,'region':_0x480d9b});_0x5893aa[_0xaa71('0x8')]({'TranscriptionJobName':_0xd325fb},function(_0x5a0dca,_0x50ad8f){if(_0x5a0dca){return _0x1f07bd(_0x5a0dca);}else{return _0x2f476b(_0x50ad8f);}});});}function sentiment(_0x2fc645,_0x2ec823,_0xc26148,_0x59f523,_0x59e7b9){return new Promise(function(_0xb81c88,_0x28023d){var _0x1636f5=new AWS[(_0xaa71('0x9'))]({'accessKeyId':_0x2ec823,'secretAccessKey':_0x2fc645,'region':_0xc26148});_0x1636f5[_0xaa71('0xa')]({'Text':_0x59f523,'LanguageCode':_0x59e7b9[_0xaa71('0xb')](0x0,0x2)},function(_0x4ad162,_0x5ce035){if(_0x4ad162){return _0x28023d(_0x4ad162);}else{return _0xb81c88(_0x5ce035);}});});}function checkTranscribeJob(_0x4f9755,_0x464b95,_0x128712){var _0x3b7a53;return new BPromise(function(_0x5603e0,_0x331a56){logger[_0xaa71('0xc')](util[_0xaa71('0xd')](_0xaa71('0xe'),_0x4f9755['id'],_0x4f9755[_0xaa71('0xf')]));return getTranscriptionJob(_0x128712[_0xaa71('0x10')],_0x128712['data2'],_0x464b95[_0xaa71('0x11')],_0x4f9755[_0xaa71('0xf')])[_0xaa71('0x12')](function(_0x5b4f5a){logger[_0xaa71('0xc')](util[_0xaa71('0xd')](_0xaa71('0x13'),_0x4f9755['id'],_0x4f9755[_0xaa71('0xf')],_0x5b4f5a[_0xaa71('0x14')][_0xaa71('0x15')]));if(!_0x4f9755[_0xaa71('0x16')]){switch(_0x5b4f5a[_0xaa71('0x14')][_0xaa71('0x15')]){case _0xaa71('0x17'):var _0x58155d={'transcribeStatus':_0x5b4f5a[_0xaa71('0x14')][_0xaa71('0x15')],'fileUri':_0x5b4f5a[_0xaa71('0x14')][_0xaa71('0x18')][_0xaa71('0x19')]};logger['info'](util[_0xaa71('0xd')]('[RECORDING:%d]\x20Get\x20transcript',_0x4f9755['id']));return rp({'uri':_0x5b4f5a[_0xaa71('0x14')][_0xaa71('0x18')][_0xaa71('0x19')],'json':!![]})[_0xaa71('0x12')](function(_0x2e3f95){logger['info'](util['format'](_0xaa71('0x1a'),_0x4f9755['id']));if(_0x2e3f95&&_0x2e3f95['results']&&_0x2e3f95[_0xaa71('0x1b')][_0xaa71('0x1c')]&&_0x2e3f95[_0xaa71('0x1b')][_0xaa71('0x1c')][_0xaa71('0x1d')]){_0x58155d[_0xaa71('0x16')]='';for(var _0x1bde4f=0x0;_0x1bde4f<_0x2e3f95[_0xaa71('0x1b')][_0xaa71('0x1c')][_0xaa71('0x1d')];_0x1bde4f++){_0x58155d[_0xaa71('0x16')]+=_0x2e3f95[_0xaa71('0x1b')][_0xaa71('0x1c')][_0x1bde4f]['transcript']+'';}}return _0x4f9755['update'](_0x58155d);})[_0xaa71('0x12')](function(){logger[_0xaa71('0xc')](util[_0xaa71('0xd')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x4f9755['id']));if(!_0x4f9755['tempSentiment']){throw new db[(_0xaa71('0x1e'))]['ValidationError'](_0xaa71('0x1f'));}if(!_0x464b95['sentiment']||!_0x464b95['sentimentAccountId']||!_0x464b95[_0xaa71('0x20')]||!_0x464b95['language']||!_0x464b95[_0xaa71('0x21')]){throw new db[(_0xaa71('0x1e'))]['ValidationError'](_0xaa71('0x22'));}if(!_0x58155d[_0xaa71('0x16')]){throw new Error(_0xaa71('0x23'));}if(_0x464b95['sentimentAccountId']===_0x128712['id']){return _0x128712;}else{return db[_0xaa71('0x24')]['findOne']({'where':{'id':_settings['sentimentAccountId']}});}})[_0xaa71('0x12')](function(_0x4d8050){if(!_0x4d8050){throw new db[(_0xaa71('0x1e'))]['ValidationError'](_0xaa71('0x25'));}if(!_0x4d8050[_0xaa71('0x10')]||!_0x4d8050[_0xaa71('0x26')]){throw new db[(_0xaa71('0x1e'))][(_0xaa71('0x27'))](_0xaa71('0x28'));}_0x3b7a53=_0x4d8050;logger[_0xaa71('0xc')](util[_0xaa71('0xd')](_0xaa71('0x29'),_0x4f9755['id']));return sentiment(_0x3b7a53['data1'],_0x3b7a53['data2'],_0x464b95[_0xaa71('0x20')],_0x58155d[_0xaa71('0x16')],_0x464b95['language']);})[_0xaa71('0x12')](function(_0x448702){logger[_0xaa71('0xc')](util[_0xaa71('0xd')](_0xaa71('0x2a'),_0x4f9755['id']));return _0x4f9755[_0xaa71('0x2b')]({'sentiment':_0x448702[_0xaa71('0x2c')],'sPositive':_0x448702['SentimentScore'][_0xaa71('0x2d')],'sNegative':_0x448702[_0xaa71('0x2e')][_0xaa71('0x2f')],'sMixed':_0x448702[_0xaa71('0x2e')]['Mixed'],'sNeutral':_0x448702[_0xaa71('0x2e')][_0xaa71('0x30')]});})[_0xaa71('0x12')](function(){logger['info'](util[_0xaa71('0xd')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x4f9755['id']));_0x5603e0();});case'FAILED':return _0x4f9755[_0xaa71('0x2b')]({'transcribeStatus':_0xaa71('0x31'),'failureReason':_0x5b4f5a[_0xaa71('0x14')]['FailureReason']})[_0xaa71('0x12')](function(){logger[_0xaa71('0xc')](util[_0xaa71('0xd')](_0xaa71('0x32'),_0x4f9755['id']));_0x5603e0();});default:logger[_0xaa71('0xc')](util['format'](_0xaa71('0x33'),_0x4f9755['id']));break;}}else{return BPromise['resolve']()['then'](function(){if(!_0x4f9755[_0xaa71('0x34')]){throw new db['Sequelize'][(_0xaa71('0x27'))](_0xaa71('0x1f'));}if(!_0x464b95[_0xaa71('0x35')]||!_0x464b95['sentimentAccountId']||!_0x464b95[_0xaa71('0x20')]||!_0x464b95[_0xaa71('0x36')]||!_0x464b95['bucket']){throw new db[(_0xaa71('0x1e'))][(_0xaa71('0x27'))](_0xaa71('0x22'));}if(!_0x4f9755[_0xaa71('0x16')]){throw new Error(_0xaa71('0x23'));}if(_0x464b95[_0xaa71('0x37')]===_0x128712['id']){return _0x128712;}else{return db[_0xaa71('0x24')][_0xaa71('0x38')]({'where':{'id':_settings[_0xaa71('0x37')]}});}})[_0xaa71('0x12')](function(_0x3861bf){if(!_0x3861bf){throw new db[(_0xaa71('0x1e'))]['ValidationError'](_0xaa71('0x25'));}if(!_0x3861bf[_0xaa71('0x10')]||!_0x3861bf[_0xaa71('0x26')]){throw new db[(_0xaa71('0x1e'))][(_0xaa71('0x27'))](_0xaa71('0x28'));}_0x3b7a53=_0x3861bf;logger[_0xaa71('0xc')](util['format'](_0xaa71('0x29'),_0x4f9755['id']));return sentiment(_0x3b7a53[_0xaa71('0x10')],_0x3b7a53[_0xaa71('0x26')],_0x464b95[_0xaa71('0x20')],_0x4f9755[_0xaa71('0x16')],_0x464b95[_0xaa71('0x36')]);})[_0xaa71('0x12')](function(_0xd1ebc0){logger[_0xaa71('0xc')](util['format']('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x4f9755['id']));return _0x4f9755[_0xaa71('0x2b')]({'sentiment':_0xd1ebc0[_0xaa71('0x2c')],'sPositive':_0xd1ebc0[_0xaa71('0x2e')][_0xaa71('0x2d')],'sNegative':_0xd1ebc0[_0xaa71('0x2e')][_0xaa71('0x2f')],'sMixed':_0xd1ebc0[_0xaa71('0x2e')][_0xaa71('0x39')],'sNeutral':_0xd1ebc0[_0xaa71('0x2e')][_0xaa71('0x30')],'transcribeStatus':_0xaa71('0x17')});})[_0xaa71('0x12')](function(){logger[_0xaa71('0xc')](util[_0xaa71('0xd')](_0xaa71('0x32'),_0x4f9755['id']));_0x5603e0();});}})['catch'](function(_0x10a362){if(_0x10a362){if(!_0x10a362[_0xaa71('0x3a')]||_0x10a362[_0xaa71('0x3a')]!=='SequelizeValidationError'){logger['error'](util['format']('[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis',_0x4f9755['id']),util[_0xaa71('0x3b')](_0x10a362,{'showHidden':![],'depth':null}));}}_0x5603e0();});});}function checkTranscribe(){var _0x52fa61;var _0x1c9899;var _0x2b670d;return db[_0xaa71('0x3c')][_0xaa71('0x3d')]({'where':{'transcribeStatus':_0xaa71('0x3e')}})[_0xaa71('0x12')](function(_0x4e9be7){if(!_0x4e9be7||!_0x4e9be7[_0xaa71('0x1d')]){throw new db[(_0xaa71('0x1e'))][(_0xaa71('0x27'))](_0xaa71('0x3f'));}_0x52fa61=_0x4e9be7;return db[_0xaa71('0x40')][_0xaa71('0x38')]({'where':{'id':0x1}});})[_0xaa71('0x12')](function(_0x303417){if(!_0x303417){throw new db[(_0xaa71('0x1e'))][(_0xaa71('0x27'))](_0xaa71('0x41'));}_0x1c9899=_0x303417;if(!_0x1c9899[_0xaa71('0x6')]||!_0x1c9899[_0xaa71('0x42')]||!_0x1c9899['transcribeRegion']||!_0x1c9899[_0xaa71('0x36')]||!_0x1c9899[_0xaa71('0x21')]){throw new db[(_0xaa71('0x1e'))]['ValidationError']('Transcribe\x20not\x20configured');}return db[_0xaa71('0x24')][_0xaa71('0x38')]({'where':{'id':_0x1c9899[_0xaa71('0x42')]}});})[_0xaa71('0x12')](function(_0x5762b5){if(!_0x5762b5){throw new db['Sequelize']['ValidationError'](_0xaa71('0x25'));}if(!_0x5762b5[_0xaa71('0x10')]||!_0x5762b5[_0xaa71('0x26')]){throw new db[(_0xaa71('0x1e'))][(_0xaa71('0x27'))](_0xaa71('0x28'));}_0x2b670d=_0x5762b5;var _0x5a5c37=[];_0x52fa61[_0xaa71('0x43')](function(_0x1634b8){_0x5a5c37['push'](checkTranscribeJob(_0x1634b8,_0x1c9899,_0x2b670d));});return BPromise[_0xaa71('0x44')](_0x5a5c37);})['catch'](function(_0x331fd9){if(_0x331fd9){if(!_0x331fd9[_0xaa71('0x3a')]||_0x331fd9[_0xaa71('0x3a')]!==_0xaa71('0x45')){logger[_0xaa71('0x46')](util[_0xaa71('0x3b')](_0x331fd9,{'showHidden':![],'depth':null}));}}});}exports[_0xaa71('0x47')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
index 1d6688e..fc9cc2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4405=['ioredis','util','../../config/environment','defaults','redis','findAll','lastMsgAt','hours','then','length','map','info','[WHATSAPP]\x20Interactions\x20to\x20close:','join','WhatsappInteraction','system','timeout','YYYY-MM-DD\x20HH:mm:ss','emit','whatsappInteraction:update','error','[WHATSAPP]\x20Error\x20closing\x20interactions','inspect','start','lodash','moment'];(function(_0x1969a7,_0x5a133a){var _0x3d665f=function(_0x39c64b){while(--_0x39c64b){_0x1969a7['push'](_0x1969a7['shift']());}};_0x3d665f(++_0x5a133a);}(_0x4405,0xce));var _0x5440=function(_0x5cde8c,_0x1993af){_0x5cde8c=_0x5cde8c-0x0;var _0x44970c=_0x4405[_0x5cde8c];return _0x44970c;};'use strict';var _=require(_0x5440('0x0'));var moment=require(_0x5440('0x1'));var Redis=require(_0x5440('0x2'));var util=require(_0x5440('0x3'));var config=require(_0x5440('0x4'));var db=require('../../mysqldb')['db'];var logger=require('../logger')('schedule');config['redis']=_[_0x5440('0x5')](config[_0x5440('0x6')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function closeInteractions(){var _0x52f863=[];return db['WhatsappInteraction'][_0x5440('0x7')]({'raw':!![],'attributes':['id',_0x5440('0x8')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()['subtract'](0x18,_0x5440('0x9'))}}})[_0x5440('0xa')](function(_0x3510b7){if(_0x3510b7&&_0x3510b7[_0x5440('0xb')]){_0x52f863=_[_0x5440('0xc')](_0x3510b7||[],'id');logger[_0x5440('0xd')](_0x5440('0xe'),_0x52f863[_0x5440('0xf')]());return db[_0x5440('0x10')]['update']({'closeReason':_0x5440('0x11'),'disposition':_0x5440('0x12'),'closed':!![],'closedAt':moment()['format'](_0x5440('0x13'))},{'where':{'id':_0x52f863}});}})[_0x5440('0xa')](function(){if(_0x52f863&&_0x52f863[_0x5440('0xb')]){logger[_0x5440('0xd')]('[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:',_0x52f863[_0x5440('0xf')]());for(var _0x1697a6=0x0;_0x1697a6<_0x52f863[_0x5440('0xb')];_0x1697a6++){io[_0x5440('0x14')](_0x5440('0x15'),{'id':_0x52f863[_0x1697a6],'closed':!![]});}}})['catch'](function(_0xd279cf){logger[_0x5440('0x16')](_0x5440('0x17'),_0xd279cf?util[_0x5440('0x18')](_0xd279cf,{'showHidden':![],'depth':null}):'');});}exports[_0x5440('0x19')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x129d=['lastMsgAt','subtract','then','length','map','info','[WHATSAPP]\x20Interactions\x20to\x20close:','join','update','system','timeout','format','YYYY-MM-DD\x20HH:mm:ss','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','emit','whatsappInteraction:update','error','inspect','start','lodash','moment','ioredis','util','../../mysqldb','redis','localhost','WhatsappInteraction','findAll'];(function(_0x5ebf82,_0x5939d4){var _0x25f631=function(_0x4fe6ea){while(--_0x4fe6ea){_0x5ebf82['push'](_0x5ebf82['shift']());}};_0x25f631(++_0x5939d4);}(_0x129d,0x163));var _0xd129=function(_0x55b1fe,_0x5a6c9d){_0x55b1fe=_0x55b1fe-0x0;var _0x29c1c4=_0x129d[_0x55b1fe];return _0x29c1c4;};'use strict';var _=require(_0xd129('0x0'));var moment=require(_0xd129('0x1'));var Redis=require(_0xd129('0x2'));var util=require(_0xd129('0x3'));var config=require('../../config/environment');var db=require(_0xd129('0x4'))['db'];var logger=require('../logger')('schedule');config[_0xd129('0x5')]=_['defaults'](config['redis'],{'host':_0xd129('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function closeInteractions(){var _0x4d96d2=[];return db[_0xd129('0x7')][_0xd129('0x8')]({'raw':!![],'attributes':['id',_0xd129('0x9')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0xd129('0xa')](0x18,'hours')}}})[_0xd129('0xb')](function(_0x16af89){if(_0x16af89&&_0x16af89[_0xd129('0xc')]){_0x4d96d2=_[_0xd129('0xd')](_0x16af89||[],'id');logger[_0xd129('0xe')](_0xd129('0xf'),_0x4d96d2[_0xd129('0x10')]());return db['WhatsappInteraction'][_0xd129('0x11')]({'closeReason':_0xd129('0x12'),'disposition':_0xd129('0x13'),'closed':!![],'closedAt':moment()[_0xd129('0x14')](_0xd129('0x15'))},{'where':{'id':_0x4d96d2}});}})[_0xd129('0xb')](function(){if(_0x4d96d2&&_0x4d96d2[_0xd129('0xc')]){logger[_0xd129('0xe')](_0xd129('0x16'),_0x4d96d2[_0xd129('0x10')]());for(var _0x5a9409=0x0;_0x5a9409<_0x4d96d2[_0xd129('0xc')];_0x5a9409++){io[_0xd129('0x17')](_0xd129('0x18'),{'id':_0x4d96d2[_0x5a9409],'closed':!![]});}}})['catch'](function(_0x1e2735){logger[_0xd129('0x19')]('[WHATSAPP]\x20Error\x20closing\x20interactions',_0x1e2735?util[_0xd129('0x1a')](_0x1e2735,{'showHidden':![],'depth':null}):'');});}exports[_0xd129('0x1b')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index c83db95..e39bcc3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa249=['CmContact','destroy','then','bulkCreate','log','CmHopper','finished\x20populating','hopper1','catch','util','push','Innocenzo','Biondo','innocenzo.biondo','@xcally.com','now'];(function(_0x4e490c,_0x465e22){var _0xd46d71=function(_0x26ca96){while(--_0x26ca96){_0x4e490c['push'](_0x4e490c['shift']());}};_0xd46d71(++_0x465e22);}(_0xa249,0x149));var _0x9a24=function(_0x1b9dc8,_0x55f61f){_0x1b9dc8=_0x1b9dc8-0x0;var _0x5901b2=_0xa249[_0x1b9dc8];return _0x5901b2;};'use strict';var util=require(_0x9a24('0x0'));var db=require('../mysqldb')['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0x9a24('0x1')]({'id':i,'firstName':_0x9a24('0x2')+i,'lastName':_0x9a24('0x3')+i,'phone':0xf879fb460+i,'email':_0x9a24('0x4')+i+_0x9a24('0x5')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0x9a24('0x1')]({'id':i,'active':![],'scheduledat':Date[_0x9a24('0x6')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x9a24('0x6')](),'updatedAt':Date[_0x9a24('0x6')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0x9a24('0x1')]({'id':i,'firstName':_0x9a24('0x2')+i,'lastName':_0x9a24('0x3')+i,'phone':0xf879fb460+i,'email':_0x9a24('0x4')+i+_0x9a24('0x5')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0x9a24('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[_0x9a24('0x6')]()});}db[_0x9a24('0x7')][_0x9a24('0x8')]({'where':{}})[_0x9a24('0x9')](function(){return db[_0x9a24('0x7')][_0x9a24('0xa')](contacts);})[_0x9a24('0x9')](function(){console[_0x9a24('0xb')]('finished\x20populating','contacts1');return db[_0x9a24('0xc')][_0x9a24('0x8')]({'where':{}});})[_0x9a24('0x9')](function(){return db[_0x9a24('0xc')]['bulkCreate'](hopper);})[_0x9a24('0x9')](function(){console['log'](_0x9a24('0xd'),_0x9a24('0xe'));return db['CmContact'][_0x9a24('0xa')](contacts2);})['then'](function(){console[_0x9a24('0xb')](_0x9a24('0xd'),'contacts2');return db[_0x9a24('0xc')][_0x9a24('0xa')](hopper2);})[_0x9a24('0x9')](function(){console[_0x9a24('0xb')](_0x9a24('0xd'),'hopper2');})[_0x9a24('0xf')](function(_0x46971b){console[_0x9a24('0xb')](_0x46971b);});
\ No newline at end of file
+var _0x3e8f=['hopper1','contacts2','hopper2','catch','util','../mysqldb','push','Biondo','innocenzo.biondo','now','Innocenzo','@xcally.com','destroy','then','CmContact','bulkCreate','log','finished\x20populating','contacts1','CmHopper'];(function(_0x112baa,_0x5a7ba9){var _0x665e3c=function(_0xad962f){while(--_0xad962f){_0x112baa['push'](_0x112baa['shift']());}};_0x665e3c(++_0x5a7ba9);}(_0x3e8f,0xb8));var _0xf3e8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3e8f[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0xf3e8('0x0'));var db=require(_0xf3e8('0x1'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0xf3e8('0x2')]({'id':i,'firstName':'Innocenzo'+i,'lastName':_0xf3e8('0x3')+i,'phone':0xf879fb460+i,'email':_0xf3e8('0x4')+i+'@xcally.com'});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0xf3e8('0x2')]({'id':i,'active':![],'scheduledat':Date[_0xf3e8('0x5')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0xf3e8('0x5')](),'updatedAt':Date[_0xf3e8('0x5')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0xf3e8('0x2')]({'id':i,'firstName':_0xf3e8('0x6')+i,'lastName':_0xf3e8('0x3')+i,'phone':0xf879fb460+i,'email':_0xf3e8('0x4')+i+_0xf3e8('0x7')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0xf3e8('0x2')]({'id':i,'active':![],'scheduledat':Date[_0xf3e8('0x5')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0xf3e8('0x5')](),'updatedAt':Date[_0xf3e8('0x5')]()});}db['CmContact'][_0xf3e8('0x8')]({'where':{}})[_0xf3e8('0x9')](function(){return db[_0xf3e8('0xa')][_0xf3e8('0xb')](contacts);})[_0xf3e8('0x9')](function(){console[_0xf3e8('0xc')](_0xf3e8('0xd'),_0xf3e8('0xe'));return db['CmHopper']['destroy']({'where':{}});})[_0xf3e8('0x9')](function(){return db[_0xf3e8('0xf')][_0xf3e8('0xb')](hopper);})[_0xf3e8('0x9')](function(){console[_0xf3e8('0xc')](_0xf3e8('0xd'),_0xf3e8('0x10'));return db[_0xf3e8('0xa')]['bulkCreate'](contacts2);})['then'](function(){console[_0xf3e8('0xc')](_0xf3e8('0xd'),_0xf3e8('0x11'));return db[_0xf3e8('0xf')][_0xf3e8('0xb')](hopper2);})[_0xf3e8('0x9')](function(){console[_0xf3e8('0xc')](_0xf3e8('0xd'),_0xf3e8('0x12'));})[_0xf3e8('0x13')](function(_0x2ad22a){console[_0xf3e8('0xc')](_0x2ad22a);});
\ No newline at end of file
index fa7ecbc..8a2dd82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xced8=['then','log','util','push','format','%s%s','agent','%s%s@xcally.com','password','friend','wss','all','ulaw','yes','actpass','\x22%s\x22\x20<%s>'];(function(_0x4519dc,_0x3e1611){var _0x3d8eba=function(_0x5388b9){while(--_0x5388b9){_0x4519dc['push'](_0x4519dc['shift']());}};_0x3d8eba(++_0x3e1611);}(_0xced8,0x132));var _0x8ced=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xced8[_0x14add3];return _0x4a174f;};'use strict';var util=require(_0x8ced('0x0'));var db=require('../mysqldb')['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0x8ced('0x1')]({'name':util[_0x8ced('0x2')](_0x8ced('0x3'),_0x8ced('0x4'),i),'fullname':util[_0x8ced('0x2')](_0x8ced('0x3'),_0x8ced('0x4'),i),'email':util['format'](_0x8ced('0x5'),_0x8ced('0x4'),i),'role':_0x8ced('0x4'),'password':_0x8ced('0x6'),'internal':0xfa0+i,'type':_0x8ced('0x7'),'transport':['udp','ws',_0x8ced('0x8')],'disallow':[_0x8ced('0x9')],'allow':[_0x8ced('0xa')],'defaultuser':util[_0x8ced('0x2')](_0x8ced('0x3'),_0x8ced('0x4'),i),'encryption':'yes','avpf':_0x8ced('0xb'),'force_avp':_0x8ced('0xb'),'icesupport':_0x8ced('0xb'),'dtlsenable':'yes','dtlsverify':'no','dtlscertfile':'/etc/pki/tls/certs/motion.crt','dtlsprivatekey':'/etc/pki/tls/private/motion.key','dtlssetup':_0x8ced('0xc'),'callerid':util[_0x8ced('0x2')](_0x8ced('0xd'),util[_0x8ced('0x2')](_0x8ced('0x3'),_0x8ced('0x4'),i),0xfa0+i)});}db['User']['bulkCreate'](users)[_0x8ced('0xe')](function(){console[_0x8ced('0xf')]('add\x20user');})['catch'](function(_0x28c9de){console['log'](_0x28c9de);});
\ No newline at end of file
+var _0x858f=['log','add\x20user','catch','../mysqldb','push','format','%s%s','agent','%s%s@xcally.com','password','udp','wss','all','ulaw','yes','/etc/pki/tls/private/motion.key','\x22%s\x22\x20<%s>','bulkCreate','then'];(function(_0xf686a8,_0x19a514){var _0x4e411a=function(_0x402d50){while(--_0x402d50){_0xf686a8['push'](_0xf686a8['shift']());}};_0x4e411a(++_0x19a514);}(_0x858f,0x1b8));var _0xf858=function(_0x3f2d02,_0x2c7deb){_0x3f2d02=_0x3f2d02-0x0;var _0x54092b=_0x858f[_0x3f2d02];return _0x54092b;};'use strict';var util=require('util');var db=require(_0xf858('0x0'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0xf858('0x1')]({'name':util[_0xf858('0x2')]('%s%s','agent',i),'fullname':util[_0xf858('0x2')](_0xf858('0x3'),_0xf858('0x4'),i),'email':util[_0xf858('0x2')](_0xf858('0x5'),'agent',i),'role':'agent','password':_0xf858('0x6'),'internal':0xfa0+i,'type':'friend','transport':[_0xf858('0x7'),'ws',_0xf858('0x8')],'disallow':[_0xf858('0x9')],'allow':[_0xf858('0xa')],'defaultuser':util[_0xf858('0x2')](_0xf858('0x3'),_0xf858('0x4'),i),'encryption':_0xf858('0xb'),'avpf':'yes','force_avp':'yes','icesupport':'yes','dtlsenable':_0xf858('0xb'),'dtlsverify':'no','dtlscertfile':'/etc/pki/tls/certs/motion.crt','dtlsprivatekey':_0xf858('0xc'),'dtlssetup':'actpass','callerid':util['format'](_0xf858('0xd'),util[_0xf858('0x2')](_0xf858('0x3'),'agent',i),0xfa0+i)});}db['User'][_0xf858('0xe')](users)[_0xf858('0xf')](function(){console[_0xf858('0x10')](_0xf858('0x11'));})[_0xf858('0x12')](function(_0x1a7ed2){console[_0xf858('0x10')](_0x1a7ed2);});
\ No newline at end of file
index e2f62e3..c0c779c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf7=['emit','user_has_chat_interactions:remove','leave','removeMailInteractions','removeFaxInteractions','user_has_fax_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','log','join','connection','setMaxListeners','address','request','remotePort','connectedAt','SocketIO\x20','nsp','disconnect','CONNECTED','lodash','util','bluebird','../mysqldb','./environment','Agents','User','name','role','agent','telephone','type','ivr','findOne','autoAssociation','VoiceQueues','ChatQueues','SmsQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','resourceId','map','where','Campaign','then','format','%s:queue:%s','length','user:%s','handshake','query','find','ChatInteraction','MailInteractions','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','admin','voice:inbound','voice:outbound','include','push','VoiceQueue','SmsQueue','MailQueue','OpenchannelQueue','user','userProfileId','ChatQueue','FaxQueues','FaxQueue','WhatsappQueue','Trunk','getFaxQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','voice','chat','fax','mail','whatsapp','telephone:%s','campaign:%s:%s','ChatInteractions','removeChatInteractions'];(function(_0x4e0d05,_0x1252ef){var _0x568b50=function(_0x5f3071){while(--_0x5f3071){_0x4e0d05['push'](_0x4e0d05['shift']());}};_0x568b50(++_0x1252ef);}(_0xbaf7,0x137));var _0x7baf=function(_0x5a57c5,_0x485517){_0x5a57c5=_0x5a57c5-0x0;var _0xc29694=_0xbaf7[_0x5a57c5];return _0xc29694;};'use strict';var _=require(_0x7baf('0x0'));var util=require(_0x7baf('0x1'));var BPromise=require(_0x7baf('0x2'));var db=require(_0x7baf('0x3'))['db'];var config=require(_0x7baf('0x4'));var queryQueues={'attributes':['id','name'],'include':[{'as':_0x7baf('0x5'),'model':db[_0x7baf('0x6')],'attributes':['id',_0x7baf('0x7'),_0x7baf('0x8')],'raw':!![],'where':{'role':_0x7baf('0x9')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x7baf('0x7')],'where':{'role':_0x7baf('0xa')}};var queryTrunks={'raw':!![],'attributes':['id','name']};var queryAgents={'raw':!![],'attributes':['id',_0x7baf('0x7')],'where':{'role':_0x7baf('0x9')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x7baf('0x7'),_0x7baf('0xb')],'where':{'type':_0x7baf('0xc')}};function getAssociatedResources(_0x59ef84,_0x56997e,_0x38a8bf){return db['UserProfileSection'][_0x7baf('0xd')]({'where':{'name':_0x59ef84,'userProfileId':_0x56997e},'raw':!![]})['then'](function(_0x59303b){if(_0x59303b){if(_0x59303b[_0x7baf('0xe')]){switch(_0x59ef84){case _0x7baf('0xf'):case _0x7baf('0x10'):case'FaxQueues':case _0x7baf('0x11'):case _0x7baf('0x12'):case _0x7baf('0x13'):case _0x7baf('0x14'):return db[_0x38a8bf][_0x7baf('0x15')](queryQueues);case _0x7baf('0x16'):return db[_0x38a8bf][_0x7baf('0x15')](queryTelephones);case _0x7baf('0x17'):return db[_0x38a8bf]['findAll'](queryTrunks);case _0x7baf('0x18'):return db[_0x38a8bf]['findAll'](queryCampaigns);}}else{return db[_0x7baf('0x19')][_0x7baf('0x15')]({'attributes':[_0x7baf('0x1a')],'where':{'sectionId':_0x59303b['id']},'raw':!![]})['then'](function(_0x2ed6ac){if(_0x2ed6ac){var _0x264265={'where':{'id':_[_0x7baf('0x1b')](_0x2ed6ac,_0x7baf('0x1a'))},'raw':!![]};switch(_0x38a8bf){case _0x7baf('0x6'):_0x264265[_0x7baf('0x1c')][_0x7baf('0x8')]=_0x7baf('0xa');break;case _0x7baf('0x1d'):_0x264265[_0x7baf('0x1c')][_0x7baf('0xb')]=_0x7baf('0xc');break;}return db[_0x38a8bf][_0x7baf('0x15')](_0x264265);}else{return[];}});}}else{return[];}})[_0x7baf('0x1e')](function(_0x9932f4){return _0x9932f4;});}function joinOrLeaveQueues(_0x2890e1,_0x33c58e,_0x3211e8,_0x59b38d){_0x2890e1[_0x33c58e](util[_0x7baf('0x1f')](_0x7baf('0x20'),_0x3211e8,_0x59b38d['name']));if(_0x59b38d[_0x7baf('0x5')]){for(var _0xa7ee39=0x0;_0xa7ee39<_0x59b38d[_0x7baf('0x5')][_0x7baf('0x21')];_0xa7ee39+=0x1){_0x2890e1[_0x33c58e](util[_0x7baf('0x1f')](_0x7baf('0x22'),_0x59b38d[_0x7baf('0x5')][_0xa7ee39][_0x7baf('0x7')]));}}}function joinOrLeave(_0x420ad4,_0x56aa53,_0x549a1c){var _0xabf63e;if(_0x420ad4[_0x7baf('0x23')][_0x7baf('0x24')]['id']){db[_0x7baf('0x6')][_0x7baf('0x25')]({'attributes':['id','name',_0x7baf('0x8'),'userProfileId'],'where':{'id':_0x420ad4[_0x7baf('0x23')]['query']['id']},'include':[{'model':db[_0x7baf('0x26')],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db['MailInteraction'],'as':_0x7baf('0x27'),'attributes':['id'],'raw':!![]},{'model':db['FaxInteraction'],'as':_0x7baf('0x28'),'attributes':['id'],'raw':!![]},{'model':db[_0x7baf('0x29')],'as':_0x7baf('0x2a'),'attributes':['id'],'raw':!![]},{'model':db[_0x7baf('0x2b')],'as':_0x7baf('0x2c'),'attributes':['id'],'raw':!![]},{'model':db[_0x7baf('0x2d')],'as':_0x7baf('0x2e'),'attributes':['id'],'raw':!![]}]})['then'](function(_0x267809){if(_0x267809){_0xabf63e=_0x267809;_0x420ad4[_0x56aa53](util[_0x7baf('0x1f')](_0x7baf('0x22'),_0x267809[_0x7baf('0x7')]));var _0x16f8fb=[];switch(_0x267809[_0x7baf('0x8')]){case _0x7baf('0x2f'):_0x420ad4[_0x56aa53](_0x7baf('0x30'));_0x420ad4[_0x56aa53](_0x7baf('0x31'));if(queryQueues['hasOwnProperty'](_0x7baf('0x32'))){delete queryQueues[_0x7baf('0x32')];}_0x16f8fb[_0x7baf('0x33')](db[_0x7baf('0x34')][_0x7baf('0x15')](queryQueues));_0x16f8fb[_0x7baf('0x33')](db['ChatQueue'][_0x7baf('0x15')](queryQueues));_0x16f8fb[_0x7baf('0x33')](db['FaxQueue'][_0x7baf('0x15')](queryQueues));_0x16f8fb[_0x7baf('0x33')](db[_0x7baf('0x35')][_0x7baf('0x15')](queryQueues));_0x16f8fb['push'](db[_0x7baf('0x36')][_0x7baf('0x15')](queryQueues));_0x16f8fb[_0x7baf('0x33')](db[_0x7baf('0x37')]['findAll'](queryQueues));_0x16f8fb[_0x7baf('0x33')](db['WhatsappQueue'][_0x7baf('0x15')](queryQueues));_0x16f8fb[_0x7baf('0x33')](db[_0x7baf('0x6')]['findAll'](queryTelephones));_0x16f8fb[_0x7baf('0x33')](db['Trunk'][_0x7baf('0x15')](queryTrunks));_0x16f8fb['push'](db[_0x7baf('0x1d')][_0x7baf('0x15')](queryCampaigns));_0x16f8fb[_0x7baf('0x33')](db[_0x7baf('0x6')][_0x7baf('0x15')](queryAgents));break;case _0x7baf('0x38'):_0x420ad4[_0x56aa53](_0x7baf('0x30'));_0x420ad4[_0x56aa53]('voice:outbound');_0x16f8fb[_0x7baf('0x33')](getAssociatedResources('VoiceQueues',_0x267809[_0x7baf('0x39')],'VoiceQueue'));_0x16f8fb[_0x7baf('0x33')](getAssociatedResources(_0x7baf('0x10'),_0x267809[_0x7baf('0x39')],_0x7baf('0x3a')));_0x16f8fb['push'](getAssociatedResources(_0x7baf('0x3b'),_0x267809[_0x7baf('0x39')],_0x7baf('0x3c')));_0x16f8fb[_0x7baf('0x33')](getAssociatedResources(_0x7baf('0x11'),_0x267809['userProfileId'],_0x7baf('0x35')));_0x16f8fb[_0x7baf('0x33')](getAssociatedResources(_0x7baf('0x12'),_0x267809[_0x7baf('0x39')],_0x7baf('0x36')));_0x16f8fb[_0x7baf('0x33')](getAssociatedResources('OpenchannelQueues',_0x267809['userProfileId'],'OpenchannelQueue'));_0x16f8fb[_0x7baf('0x33')](getAssociatedResources(_0x7baf('0x14'),_0x267809[_0x7baf('0x39')],_0x7baf('0x3d')));_0x16f8fb[_0x7baf('0x33')](getAssociatedResources(_0x7baf('0x16'),_0x267809[_0x7baf('0x39')],'User'));_0x16f8fb[_0x7baf('0x33')](getAssociatedResources('Trunks',_0x267809[_0x7baf('0x39')],_0x7baf('0x3e')));_0x16f8fb[_0x7baf('0x33')](getAssociatedResources('IvrCampaigns',_0x267809['userProfileId'],_0x7baf('0x1d')));_0x16f8fb[_0x7baf('0x33')](db['User']['findAll'](queryAgents));break;case'agent':_0x420ad4[_0x56aa53]('voice:inbound');_0x420ad4[_0x56aa53](_0x7baf('0x31'));_0x16f8fb[_0x7baf('0x33')](_0x267809['getVoiceQueues']({'attributes':['id',_0x7baf('0x7')]}));_0x16f8fb[_0x7baf('0x33')](_0x267809['getChatQueues']({'attributes':['id','name']}));_0x16f8fb['push'](_0x267809[_0x7baf('0x3f')]({'attributes':['id',_0x7baf('0x7')]}));_0x16f8fb[_0x7baf('0x33')](_0x267809['getSmsQueues']({'attributes':['id',_0x7baf('0x7')]}));_0x16f8fb['push'](_0x267809[_0x7baf('0x40')]({'attributes':['id','name']}));_0x16f8fb[_0x7baf('0x33')](_0x267809[_0x7baf('0x41')]({'attributes':['id','name']}));_0x16f8fb[_0x7baf('0x33')](_0x267809[_0x7baf('0x42')]({'attributes':['id',_0x7baf('0x7')]}));break;}return BPromise[_0x7baf('0x43')](_0x16f8fb);}})[_0x7baf('0x1e')](function(_0x5be518){if(_0x5be518&&_0x5be518['length']){for(var _0x2d5eb0=0x0;_0x2d5eb0<_0x5be518['length'];_0x2d5eb0+=0x1){for(var _0x1a0839=0x0;_0x1a0839<_0x5be518[_0x2d5eb0][_0x7baf('0x21')];_0x1a0839+=0x1){switch(_0x2d5eb0){case 0x0:joinOrLeaveQueues(_0x420ad4,_0x56aa53,_0x7baf('0x44'),_0x5be518[_0x2d5eb0][_0x1a0839]);break;case 0x1:joinOrLeaveQueues(_0x420ad4,_0x56aa53,_0x7baf('0x45'),_0x5be518[_0x2d5eb0][_0x1a0839]);break;case 0x2:joinOrLeaveQueues(_0x420ad4,_0x56aa53,_0x7baf('0x46'),_0x5be518[_0x2d5eb0][_0x1a0839]);break;case 0x3:joinOrLeaveQueues(_0x420ad4,_0x56aa53,'sms',_0x5be518[_0x2d5eb0][_0x1a0839]);break;case 0x4:joinOrLeaveQueues(_0x420ad4,_0x56aa53,_0x7baf('0x47'),_0x5be518[_0x2d5eb0][_0x1a0839]);break;case 0x5:joinOrLeaveQueues(_0x420ad4,_0x56aa53,'openchannel',_0x5be518[_0x2d5eb0][_0x1a0839]);break;case 0x6:joinOrLeaveQueues(_0x420ad4,_0x56aa53,_0x7baf('0x48'),_0x5be518[_0x2d5eb0][_0x1a0839]);break;case 0x7:if(_0xabf63e[_0x7baf('0x8')]!==_0x7baf('0x9'))_0x420ad4[_0x56aa53](util[_0x7baf('0x1f')](_0x7baf('0x49'),_0x5be518[_0x2d5eb0][_0x1a0839]['name']));break;case 0x8:if(_0xabf63e[_0x7baf('0x8')]!==_0x7baf('0x9'))_0x420ad4[_0x56aa53](util[_0x7baf('0x1f')]('trunk:%s',_0x5be518[_0x2d5eb0][_0x1a0839][_0x7baf('0x7')]));break;case 0x9:if(_0xabf63e[_0x7baf('0x8')]!=='agent')_0x420ad4[_0x56aa53](util[_0x7baf('0x1f')](_0x7baf('0x4a'),_0x5be518[_0x2d5eb0][_0x1a0839]['type'],_0x5be518[_0x2d5eb0][_0x1a0839]['name']));break;case 0xa:_0x420ad4[_0x56aa53](util[_0x7baf('0x1f')](_0x7baf('0x22'),_0x5be518[_0x2d5eb0][_0x1a0839][_0x7baf('0x7')]));break;}}}}})[_0x7baf('0x1e')](function(){if(_0x56aa53==='leave'){var _0x523067=_['map'](_0xabf63e[_0x7baf('0x4b')],'id');return _0xabf63e[_0x7baf('0x4c')](_0x523067)[_0x7baf('0x1e')](function(){for(var _0x440af5=0x0;_0x440af5<_0x523067[_0x7baf('0x21')];_0x440af5+=0x1){_0x549a1c[_0x7baf('0x4d')](_0x7baf('0x4e'),{'ChatInteractionId':Number(_0x523067[_0x440af5]),'UserId':Number(_0xabf63e['id'])});}});}})[_0x7baf('0x1e')](function(){if(_0x56aa53===_0x7baf('0x4f')){var _0x788c5d=_[_0x7baf('0x1b')](_0xabf63e[_0x7baf('0x27')],'id');return _0xabf63e[_0x7baf('0x50')](_0x788c5d)[_0x7baf('0x1e')](function(){for(var _0x260a5d=0x0;_0x260a5d<_0x788c5d[_0x7baf('0x21')];_0x260a5d+=0x1){_0x549a1c[_0x7baf('0x4d')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x788c5d[_0x260a5d]),'UserId':Number(_0xabf63e['id'])});}});}})['then'](function(){if(_0x56aa53===_0x7baf('0x4f')){var _0x3a14f4=_['map'](_0xabf63e['FaxInteractions'],'id');return _0xabf63e[_0x7baf('0x51')](_0x3a14f4)[_0x7baf('0x1e')](function(){for(var _0x50a63a=0x0;_0x50a63a<_0x3a14f4['length'];_0x50a63a+=0x1){_0x549a1c[_0x7baf('0x4d')](_0x7baf('0x52'),{'FaxInteractionId':Number(_0x3a14f4[_0x50a63a]),'UserId':Number(_0xabf63e['id'])});}});}})['then'](function(){if(_0x56aa53==='leave'){var _0x54e4d0=_['map'](_0xabf63e[_0x7baf('0x2a')],'id');return _0xabf63e['removeSmsInteractions'](_0x54e4d0)[_0x7baf('0x1e')](function(){for(var _0x1f4451=0x0;_0x1f4451<_0x54e4d0[_0x7baf('0x21')];_0x1f4451+=0x1){_0x549a1c[_0x7baf('0x4d')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x54e4d0[_0x1f4451]),'UserId':Number(_0xabf63e['id'])});}});}})[_0x7baf('0x1e')](function(){if(_0x56aa53==='leave'){var _0x106158=_[_0x7baf('0x1b')](_0xabf63e['OpenchannelInteractions'],'id');return _0xabf63e[_0x7baf('0x53')](_0x106158)['then'](function(){for(var _0xc59f46=0x0;_0xc59f46<_0x106158['length'];_0xc59f46+=0x1){_0x549a1c[_0x7baf('0x4d')](_0x7baf('0x54'),{'OpenchannelInteractionId':Number(_0x106158[_0xc59f46]),'UserId':Number(_0xabf63e['id'])});}});}})['then'](function(){if(_0x56aa53===_0x7baf('0x4f')){var _0x43fd75=_[_0x7baf('0x1b')](_0xabf63e[_0x7baf('0x2e')],'id');return _0xabf63e['removeWhatsappInteractions'](_0x43fd75)['then'](function(){for(var _0x596347=0x0;_0x596347<_0x43fd75[_0x7baf('0x21')];_0x596347+=0x1){_0x549a1c[_0x7baf('0x4d')]('user_has_whatsapp_interactions:remove',{'WhatsappInteractionId':Number(_0x43fd75[_0x596347]),'UserId':Number(_0xabf63e['id'])});}});}})['catch'](function(_0x5dc42d){_0x420ad4[_0x7baf('0x55')](_0x5dc42d);});}}function onDisconnect(_0x2fd049,_0x39bee7){joinOrLeave(_0x2fd049,_0x7baf('0x4f'),_0x39bee7);}function onConnect(_0x331781){joinOrLeave(_0x331781,_0x7baf('0x56'));}exports['default']=function(_0xb70067){_0xb70067['on'](_0x7baf('0x57'),function(_0x51fd91){_0x51fd91[_0x7baf('0x58')](0x0);_0x51fd91[_0x7baf('0x59')]=_0x51fd91[_0x7baf('0x5a')][_0x7baf('0x57')]['remoteAddress']+':'+_0x51fd91[_0x7baf('0x5a')]['connection'][_0x7baf('0x5b')];_0x51fd91[_0x7baf('0x5c')]=new Date();_0x51fd91[_0x7baf('0x55')]=function(_0x80bf0c){console[_0x7baf('0x55')](_0x7baf('0x5d')+_0x51fd91[_0x7baf('0x5e')][_0x7baf('0x7')]+'['+_0x51fd91[_0x7baf('0x59')]+']',_0x80bf0c);};_0x51fd91['on'](_0x7baf('0x5f'),function(){onDisconnect(_0x51fd91,_0xb70067);_0x51fd91[_0x7baf('0x55')]('DISCONNECTED');});onConnect(_0x51fd91);_0x51fd91[_0x7baf('0x55')](_0x7baf('0x60'));});};
\ No newline at end of file
+var _0x4d68=['admin','voice:inbound','voice:outbound','include','push','VoiceQueue','ChatQueue','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','FaxQueues','Telephones','agent','getVoiceQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','chat','sms','mail','openchannel','whatsapp','telephone:%s','trunk:%s','leave','ChatInteractions','removeChatInteractions','emit','user_has_chat_interactions:remove','removeMailInteractions','FaxInteractions','removeFaxInteractions','user_has_fax_interactions:remove','SmsInteractions','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','log','default','connection','setMaxListeners','address','request','remoteAddress','remotePort','connectedAt','SocketIO\x20','nsp','disconnect','DISCONNECTED','CONNECTED','lodash','util','bluebird','../mysqldb','./environment','name','User','role','telephone','type','ivr','findOne','then','ChatQueues','SmsQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','IvrCampaigns','UserProfileResource','resourceId','map','where','Campaign','format','Agents','length','user:%s','query','find','userProfileId','ChatInteraction','MailInteraction','MailInteractions','SmsInteraction','OpenchannelInteraction','WhatsappInteraction','WhatsappInteractions'];(function(_0x12fb36,_0x2285e9){var _0x37952d=function(_0xb5fe2d){while(--_0xb5fe2d){_0x12fb36['push'](_0x12fb36['shift']());}};_0x37952d(++_0x2285e9);}(_0x4d68,0x1c3));var _0x84d6=function(_0x45fc6a,_0x166adb){_0x45fc6a=_0x45fc6a-0x0;var _0x14bcfd=_0x4d68[_0x45fc6a];return _0x14bcfd;};'use strict';var _=require(_0x84d6('0x0'));var util=require(_0x84d6('0x1'));var BPromise=require(_0x84d6('0x2'));var db=require(_0x84d6('0x3'))['db'];var config=require(_0x84d6('0x4'));var queryQueues={'attributes':['id',_0x84d6('0x5')],'include':[{'as':'Agents','model':db[_0x84d6('0x6')],'attributes':['id','name',_0x84d6('0x7')],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x84d6('0x5')],'where':{'role':_0x84d6('0x8')}};var queryTrunks={'raw':!![],'attributes':['id',_0x84d6('0x5')]};var queryAgents={'raw':!![],'attributes':['id','name'],'where':{'role':'agent'}};var queryCampaigns={'raw':!![],'attributes':['id',_0x84d6('0x5'),_0x84d6('0x9')],'where':{'type':_0x84d6('0xa')}};function getAssociatedResources(_0x367139,_0x5e9134,_0x411c7f){return db['UserProfileSection'][_0x84d6('0xb')]({'where':{'name':_0x367139,'userProfileId':_0x5e9134},'raw':!![]})[_0x84d6('0xc')](function(_0x103405){if(_0x103405){if(_0x103405['autoAssociation']){switch(_0x367139){case'VoiceQueues':case _0x84d6('0xd'):case'FaxQueues':case _0x84d6('0xe'):case _0x84d6('0xf'):case _0x84d6('0x10'):case _0x84d6('0x11'):return db[_0x411c7f][_0x84d6('0x12')](queryQueues);case'Telephones':return db[_0x411c7f][_0x84d6('0x12')](queryTelephones);case'Trunks':return db[_0x411c7f][_0x84d6('0x12')](queryTrunks);case _0x84d6('0x13'):return db[_0x411c7f][_0x84d6('0x12')](queryCampaigns);}}else{return db[_0x84d6('0x14')][_0x84d6('0x12')]({'attributes':[_0x84d6('0x15')],'where':{'sectionId':_0x103405['id']},'raw':!![]})[_0x84d6('0xc')](function(_0x4f39f0){if(_0x4f39f0){var _0x10646e={'where':{'id':_[_0x84d6('0x16')](_0x4f39f0,_0x84d6('0x15'))},'raw':!![]};switch(_0x411c7f){case _0x84d6('0x6'):_0x10646e[_0x84d6('0x17')]['role']=_0x84d6('0x8');break;case _0x84d6('0x18'):_0x10646e['where'][_0x84d6('0x9')]='ivr';break;}return db[_0x411c7f][_0x84d6('0x12')](_0x10646e);}else{return[];}});}}else{return[];}})[_0x84d6('0xc')](function(_0x652e57){return _0x652e57;});}function joinOrLeaveQueues(_0x2cbfb5,_0x2fb441,_0x5aa7b2,_0x32ccd1){_0x2cbfb5[_0x2fb441](util[_0x84d6('0x19')]('%s:queue:%s',_0x5aa7b2,_0x32ccd1['name']));if(_0x32ccd1[_0x84d6('0x1a')]){for(var _0x5ebfcb=0x0;_0x5ebfcb<_0x32ccd1['Agents'][_0x84d6('0x1b')];_0x5ebfcb+=0x1){_0x2cbfb5[_0x2fb441](util[_0x84d6('0x19')](_0x84d6('0x1c'),_0x32ccd1['Agents'][_0x5ebfcb][_0x84d6('0x5')]));}}}function joinOrLeave(_0x49902e,_0x5deb1f,_0x26e753){var _0x1b86f2;if(_0x49902e['handshake'][_0x84d6('0x1d')]['id']){db[_0x84d6('0x6')][_0x84d6('0x1e')]({'attributes':['id',_0x84d6('0x5'),'role',_0x84d6('0x1f')],'where':{'id':_0x49902e['handshake'][_0x84d6('0x1d')]['id']},'include':[{'model':db[_0x84d6('0x20')],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x84d6('0x21')],'as':_0x84d6('0x22'),'attributes':['id'],'raw':!![]},{'model':db['FaxInteraction'],'as':'FaxInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x84d6('0x23')],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x84d6('0x24')],'as':'OpenchannelInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x84d6('0x25')],'as':_0x84d6('0x26'),'attributes':['id'],'raw':!![]}]})[_0x84d6('0xc')](function(_0x37adf9){if(_0x37adf9){_0x1b86f2=_0x37adf9;_0x49902e[_0x5deb1f](util[_0x84d6('0x19')](_0x84d6('0x1c'),_0x37adf9[_0x84d6('0x5')]));var _0x1cce4a=[];switch(_0x37adf9[_0x84d6('0x7')]){case _0x84d6('0x27'):_0x49902e[_0x5deb1f](_0x84d6('0x28'));_0x49902e[_0x5deb1f](_0x84d6('0x29'));if(queryQueues['hasOwnProperty'](_0x84d6('0x2a'))){delete queryQueues[_0x84d6('0x2a')];}_0x1cce4a[_0x84d6('0x2b')](db[_0x84d6('0x2c')][_0x84d6('0x12')](queryQueues));_0x1cce4a[_0x84d6('0x2b')](db[_0x84d6('0x2d')][_0x84d6('0x12')](queryQueues));_0x1cce4a['push'](db[_0x84d6('0x2e')]['findAll'](queryQueues));_0x1cce4a[_0x84d6('0x2b')](db[_0x84d6('0x2f')]['findAll'](queryQueues));_0x1cce4a[_0x84d6('0x2b')](db[_0x84d6('0x30')]['findAll'](queryQueues));_0x1cce4a[_0x84d6('0x2b')](db[_0x84d6('0x31')][_0x84d6('0x12')](queryQueues));_0x1cce4a[_0x84d6('0x2b')](db[_0x84d6('0x32')]['findAll'](queryQueues));_0x1cce4a[_0x84d6('0x2b')](db[_0x84d6('0x6')][_0x84d6('0x12')](queryTelephones));_0x1cce4a['push'](db[_0x84d6('0x33')]['findAll'](queryTrunks));_0x1cce4a[_0x84d6('0x2b')](db['Campaign']['findAll'](queryCampaigns));_0x1cce4a[_0x84d6('0x2b')](db[_0x84d6('0x6')][_0x84d6('0x12')](queryAgents));break;case'user':_0x49902e[_0x5deb1f](_0x84d6('0x28'));_0x49902e[_0x5deb1f](_0x84d6('0x29'));_0x1cce4a[_0x84d6('0x2b')](getAssociatedResources('VoiceQueues',_0x37adf9['userProfileId'],'VoiceQueue'));_0x1cce4a[_0x84d6('0x2b')](getAssociatedResources(_0x84d6('0xd'),_0x37adf9[_0x84d6('0x1f')],_0x84d6('0x2d')));_0x1cce4a[_0x84d6('0x2b')](getAssociatedResources(_0x84d6('0x34'),_0x37adf9['userProfileId'],'FaxQueue'));_0x1cce4a[_0x84d6('0x2b')](getAssociatedResources(_0x84d6('0xe'),_0x37adf9[_0x84d6('0x1f')],_0x84d6('0x2f')));_0x1cce4a[_0x84d6('0x2b')](getAssociatedResources('MailQueues',_0x37adf9['userProfileId'],'MailQueue'));_0x1cce4a[_0x84d6('0x2b')](getAssociatedResources('OpenchannelQueues',_0x37adf9[_0x84d6('0x1f')],_0x84d6('0x31')));_0x1cce4a['push'](getAssociatedResources(_0x84d6('0x11'),_0x37adf9[_0x84d6('0x1f')],'WhatsappQueue'));_0x1cce4a[_0x84d6('0x2b')](getAssociatedResources(_0x84d6('0x35'),_0x37adf9[_0x84d6('0x1f')],_0x84d6('0x6')));_0x1cce4a[_0x84d6('0x2b')](getAssociatedResources('Trunks',_0x37adf9[_0x84d6('0x1f')],'Trunk'));_0x1cce4a[_0x84d6('0x2b')](getAssociatedResources(_0x84d6('0x13'),_0x37adf9[_0x84d6('0x1f')],'Campaign'));_0x1cce4a[_0x84d6('0x2b')](db[_0x84d6('0x6')][_0x84d6('0x12')](queryAgents));break;case _0x84d6('0x36'):_0x49902e[_0x5deb1f](_0x84d6('0x28'));_0x49902e[_0x5deb1f](_0x84d6('0x29'));_0x1cce4a['push'](_0x37adf9[_0x84d6('0x37')]({'attributes':['id','name']}));_0x1cce4a['push'](_0x37adf9['getChatQueues']({'attributes':['id',_0x84d6('0x5')]}));_0x1cce4a['push'](_0x37adf9['getFaxQueues']({'attributes':['id',_0x84d6('0x5')]}));_0x1cce4a[_0x84d6('0x2b')](_0x37adf9['getSmsQueues']({'attributes':['id',_0x84d6('0x5')]}));_0x1cce4a[_0x84d6('0x2b')](_0x37adf9[_0x84d6('0x38')]({'attributes':['id',_0x84d6('0x5')]}));_0x1cce4a[_0x84d6('0x2b')](_0x37adf9[_0x84d6('0x39')]({'attributes':['id','name']}));_0x1cce4a['push'](_0x37adf9[_0x84d6('0x3a')]({'attributes':['id',_0x84d6('0x5')]}));break;}return BPromise[_0x84d6('0x3b')](_0x1cce4a);}})[_0x84d6('0xc')](function(_0x2d3410){if(_0x2d3410&&_0x2d3410[_0x84d6('0x1b')]){for(var _0x282aa4=0x0;_0x282aa4<_0x2d3410['length'];_0x282aa4+=0x1){for(var _0x52e2ee=0x0;_0x52e2ee<_0x2d3410[_0x282aa4][_0x84d6('0x1b')];_0x52e2ee+=0x1){switch(_0x282aa4){case 0x0:joinOrLeaveQueues(_0x49902e,_0x5deb1f,'voice',_0x2d3410[_0x282aa4][_0x52e2ee]);break;case 0x1:joinOrLeaveQueues(_0x49902e,_0x5deb1f,_0x84d6('0x3c'),_0x2d3410[_0x282aa4][_0x52e2ee]);break;case 0x2:joinOrLeaveQueues(_0x49902e,_0x5deb1f,'fax',_0x2d3410[_0x282aa4][_0x52e2ee]);break;case 0x3:joinOrLeaveQueues(_0x49902e,_0x5deb1f,_0x84d6('0x3d'),_0x2d3410[_0x282aa4][_0x52e2ee]);break;case 0x4:joinOrLeaveQueues(_0x49902e,_0x5deb1f,_0x84d6('0x3e'),_0x2d3410[_0x282aa4][_0x52e2ee]);break;case 0x5:joinOrLeaveQueues(_0x49902e,_0x5deb1f,_0x84d6('0x3f'),_0x2d3410[_0x282aa4][_0x52e2ee]);break;case 0x6:joinOrLeaveQueues(_0x49902e,_0x5deb1f,_0x84d6('0x40'),_0x2d3410[_0x282aa4][_0x52e2ee]);break;case 0x7:if(_0x1b86f2['role']!==_0x84d6('0x36'))_0x49902e[_0x5deb1f](util['format'](_0x84d6('0x41'),_0x2d3410[_0x282aa4][_0x52e2ee][_0x84d6('0x5')]));break;case 0x8:if(_0x1b86f2[_0x84d6('0x7')]!=='agent')_0x49902e[_0x5deb1f](util['format'](_0x84d6('0x42'),_0x2d3410[_0x282aa4][_0x52e2ee]['name']));break;case 0x9:if(_0x1b86f2['role']!=='agent')_0x49902e[_0x5deb1f](util['format']('campaign:%s:%s',_0x2d3410[_0x282aa4][_0x52e2ee][_0x84d6('0x9')],_0x2d3410[_0x282aa4][_0x52e2ee]['name']));break;case 0xa:_0x49902e[_0x5deb1f](util[_0x84d6('0x19')](_0x84d6('0x1c'),_0x2d3410[_0x282aa4][_0x52e2ee][_0x84d6('0x5')]));break;}}}}})[_0x84d6('0xc')](function(){if(_0x5deb1f===_0x84d6('0x43')){var _0x401917=_[_0x84d6('0x16')](_0x1b86f2[_0x84d6('0x44')],'id');return _0x1b86f2[_0x84d6('0x45')](_0x401917)['then'](function(){for(var _0x4f73f9=0x0;_0x4f73f9<_0x401917[_0x84d6('0x1b')];_0x4f73f9+=0x1){_0x26e753[_0x84d6('0x46')](_0x84d6('0x47'),{'ChatInteractionId':Number(_0x401917[_0x4f73f9]),'UserId':Number(_0x1b86f2['id'])});}});}})[_0x84d6('0xc')](function(){if(_0x5deb1f===_0x84d6('0x43')){var _0x3476ee=_[_0x84d6('0x16')](_0x1b86f2[_0x84d6('0x22')],'id');return _0x1b86f2[_0x84d6('0x48')](_0x3476ee)[_0x84d6('0xc')](function(){for(var _0x221027=0x0;_0x221027<_0x3476ee[_0x84d6('0x1b')];_0x221027+=0x1){_0x26e753[_0x84d6('0x46')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x3476ee[_0x221027]),'UserId':Number(_0x1b86f2['id'])});}});}})[_0x84d6('0xc')](function(){if(_0x5deb1f===_0x84d6('0x43')){var _0x49a6fb=_['map'](_0x1b86f2[_0x84d6('0x49')],'id');return _0x1b86f2[_0x84d6('0x4a')](_0x49a6fb)[_0x84d6('0xc')](function(){for(var _0x5e000d=0x0;_0x5e000d<_0x49a6fb[_0x84d6('0x1b')];_0x5e000d+=0x1){_0x26e753[_0x84d6('0x46')](_0x84d6('0x4b'),{'FaxInteractionId':Number(_0x49a6fb[_0x5e000d]),'UserId':Number(_0x1b86f2['id'])});}});}})[_0x84d6('0xc')](function(){if(_0x5deb1f===_0x84d6('0x43')){var _0x56e7b4=_['map'](_0x1b86f2[_0x84d6('0x4c')],'id');return _0x1b86f2[_0x84d6('0x4d')](_0x56e7b4)[_0x84d6('0xc')](function(){for(var _0x5d94ec=0x0;_0x5d94ec<_0x56e7b4['length'];_0x5d94ec+=0x1){_0x26e753[_0x84d6('0x46')](_0x84d6('0x4e'),{'SmsInteractionId':Number(_0x56e7b4[_0x5d94ec]),'UserId':Number(_0x1b86f2['id'])});}});}})['then'](function(){if(_0x5deb1f===_0x84d6('0x43')){var _0x4f4d66=_[_0x84d6('0x16')](_0x1b86f2['OpenchannelInteractions'],'id');return _0x1b86f2[_0x84d6('0x4f')](_0x4f4d66)['then'](function(){for(var _0x8afbc7=0x0;_0x8afbc7<_0x4f4d66[_0x84d6('0x1b')];_0x8afbc7+=0x1){_0x26e753[_0x84d6('0x46')](_0x84d6('0x50'),{'OpenchannelInteractionId':Number(_0x4f4d66[_0x8afbc7]),'UserId':Number(_0x1b86f2['id'])});}});}})[_0x84d6('0xc')](function(){if(_0x5deb1f===_0x84d6('0x43')){var _0x271950=_[_0x84d6('0x16')](_0x1b86f2[_0x84d6('0x26')],'id');return _0x1b86f2[_0x84d6('0x51')](_0x271950)[_0x84d6('0xc')](function(){for(var _0x1684ca=0x0;_0x1684ca<_0x271950[_0x84d6('0x1b')];_0x1684ca+=0x1){_0x26e753['emit'](_0x84d6('0x52'),{'WhatsappInteractionId':Number(_0x271950[_0x1684ca]),'UserId':Number(_0x1b86f2['id'])});}});}})[_0x84d6('0x53')](function(_0x446515){_0x49902e[_0x84d6('0x54')](_0x446515);});}}function onDisconnect(_0x35987a,_0x2c9fc8){joinOrLeave(_0x35987a,_0x84d6('0x43'),_0x2c9fc8);}function onConnect(_0x5dc292){joinOrLeave(_0x5dc292,'join');}exports[_0x84d6('0x55')]=function(_0x224bdc){_0x224bdc['on'](_0x84d6('0x56'),function(_0x1f7839){_0x1f7839[_0x84d6('0x57')](0x0);_0x1f7839[_0x84d6('0x58')]=_0x1f7839[_0x84d6('0x59')][_0x84d6('0x56')][_0x84d6('0x5a')]+':'+_0x1f7839[_0x84d6('0x59')]['connection'][_0x84d6('0x5b')];_0x1f7839[_0x84d6('0x5c')]=new Date();_0x1f7839[_0x84d6('0x54')]=function(_0x42220d){console[_0x84d6('0x54')](_0x84d6('0x5d')+_0x1f7839[_0x84d6('0x5e')][_0x84d6('0x5')]+'['+_0x1f7839['address']+']',_0x42220d);};_0x1f7839['on'](_0x84d6('0x5f'),function(){onDisconnect(_0x1f7839,_0x224bdc);_0x1f7839['log'](_0x84d6('0x60'));});onConnect(_0x1f7839);_0x1f7839[_0x84d6('0x54')](_0x84d6('0x61'));});};
\ No newline at end of file
index 46f832d..5be55ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc17d=['resolve','then','ContactId','undefined','sequelize','Sequelize','QueryTypes','SELECT','contact','UserId','format','SIP/%s','name','agent','channel','incomingmessage','outgoingmessage','catch','AfterCreateMessage','offlineMessage','opened','query','interface','closed','changed','substatus','AfterUpdate','User','find','fullname','email','default','length','hasOwnProperty','model','hook','callback','toLowerCase','util','jayson/promise','../logger','client','http','ChatInteraction','newinteraction','afterUpdate','closedinteraction','Chat','ChatMessage','afterCreate','ChatOfflineMessage','Sms','SmsInteraction','SmsMessage','newmessage','WhatsappInteraction','Whatsapp','WhatsappMessage','Fax','FaxInteraction','FaxMessage','MailInteraction','Mail','MailMessage','OpenchannelInteraction','Openchannel','OpenchannelMessage','request','EventManager','info','Trigger,\x20%s','error','get','motionChannel','event','direction'];(function(_0x534b49,_0x464ea8){var _0x107e16=function(_0x5ab612){while(--_0x5ab612){_0x534b49['push'](_0x534b49['shift']());}};_0x107e16(++_0x464ea8);}(_0xc17d,0x1a2));var _0xdc17=function(_0x34abf3,_0x3f3e6d){_0x34abf3=_0x34abf3-0x0;var _0x25987e=_0xc17d[_0x34abf3];return _0x25987e;};'use strict';var util=require(_0xdc17('0x0'));var db=require('../../mysqldb')['db'];var jayson=require(_0xdc17('0x1'));var logger=require(_0xdc17('0x2'))('triggers');var client=jayson[_0xdc17('0x3')][_0xdc17('0x4')]({'port':0x232a});var triggers=[{'channel':'Chat','model':_0xdc17('0x5'),'event':'afterCreate','condition':_0xdc17('0x6'),'callback':afterCreate},{'channel':'Chat','model':_0xdc17('0x5'),'event':_0xdc17('0x7'),'condition':_0xdc17('0x8'),'callback':afterUpdate},{'channel':_0xdc17('0x9'),'model':_0xdc17('0xa'),'event':_0xdc17('0xb'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0xdc17('0x9'),'model':_0xdc17('0xc'),'event':_0xdc17('0xb'),'condition':'newmessage','callback':afterCreateOfflineMessage},{'channel':_0xdc17('0xd'),'model':'SmsInteraction','event':_0xdc17('0xb'),'condition':_0xdc17('0x6'),'callback':afterCreate},{'channel':_0xdc17('0xd'),'model':_0xdc17('0xe'),'event':_0xdc17('0x7'),'condition':'closedinteraction','callback':afterUpdate},{'channel':'Sms','model':_0xdc17('0xf'),'event':_0xdc17('0xb'),'condition':_0xdc17('0x10'),'callback':afterCreateMessage},{'channel':'Whatsapp','model':'WhatsappInteraction','event':_0xdc17('0xb'),'condition':_0xdc17('0x6'),'callback':afterCreate},{'channel':'Whatsapp','model':_0xdc17('0x11'),'event':_0xdc17('0x7'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0xdc17('0x12'),'model':_0xdc17('0x13'),'event':'afterCreate','condition':_0xdc17('0x10'),'callback':afterCreateMessage},{'channel':_0xdc17('0x14'),'model':_0xdc17('0x15'),'event':_0xdc17('0xb'),'condition':_0xdc17('0x6'),'callback':afterCreate},{'channel':_0xdc17('0x14'),'model':'FaxInteraction','event':_0xdc17('0x7'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0xdc17('0x14'),'model':_0xdc17('0x16'),'event':_0xdc17('0xb'),'condition':_0xdc17('0x10'),'callback':afterCreateMessage},{'channel':'Mail','model':_0xdc17('0x17'),'event':'afterCreate','condition':_0xdc17('0x6'),'callback':afterCreate},{'channel':_0xdc17('0x18'),'model':_0xdc17('0x17'),'event':_0xdc17('0x7'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0xdc17('0x18'),'model':_0xdc17('0x19'),'event':_0xdc17('0xb'),'condition':_0xdc17('0x10'),'callback':afterCreateMessage},{'channel':'Openchannel','model':_0xdc17('0x1a'),'event':_0xdc17('0xb'),'condition':_0xdc17('0x6'),'callback':afterCreate},{'channel':_0xdc17('0x1b'),'model':_0xdc17('0x1a'),'event':_0xdc17('0x7'),'condition':_0xdc17('0x8'),'callback':afterUpdate},{'channel':_0xdc17('0x1b'),'model':_0xdc17('0x1c'),'event':_0xdc17('0xb'),'condition':'newmessage','callback':afterCreateMessage}];function request(_0x4e9659){return client[_0xdc17('0x1d')](_0xdc17('0x1e'),_0x4e9659)['then'](function(_0x177dba){logger[_0xdc17('0x1f')](_0xdc17('0x20'),_0xdc17('0x1e'),_0x177dba);if(_0x177dba['error']){if(_0x177dba[_0xdc17('0x21')]['code']===0x1f4){logger[_0xdc17('0x21')](_0xdc17('0x20'),'EventManager',_0x177dba[_0xdc17('0x21')]);}}})['catch'](function(_0x4ac950){logger['error']('Trigger,\x20%s',_0xdc17('0x1e'),_0x4ac950);});}function afterCreateMessage(_0x41117b){return function(_0xc2612a){_0xc2612a=_0xc2612a[_0xdc17('0x22')]({'plain':!![]});_0xc2612a['channel']=_0x41117b;_0xc2612a[_0xdc17('0x23')]=_0x41117b;_0xc2612a[_0xdc17('0x24')]=_0xc2612a[_0xdc17('0x25')];Promise[_0xdc17('0x26')]()[_0xdc17('0x27')](function(){if(typeof _0xc2612a[_0xdc17('0x28')]===_0xdc17('0x29'))return null;var _0x477c10='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0xc2612a[_0xdc17('0x28')];return db[_0xdc17('0x2a')]['query'](_0x477c10,{'type':db[_0xdc17('0x2b')][_0xdc17('0x2c')][_0xdc17('0x2d')],'raw':!![]});})[_0xdc17('0x27')](function(_0x4ccfac){if(_0x4ccfac){_0xc2612a[_0xdc17('0x2e')]=_0x4ccfac[0x0];}if(typeof _0xc2612a[_0xdc17('0x2f')]==='undefined')return;return getAgent(_0xc2612a['UserId']);})['then'](function(_0x15d4a2){if(_0x15d4a2){_0xc2612a['interface']=util[_0xdc17('0x30')](_0xdc17('0x31'),_0x15d4a2[_0xdc17('0x32')]);_0xc2612a[_0xdc17('0x33')]=_0x15d4a2;_0xc2612a[_0xdc17('0x34')]=_0x41117b;return request({'event':_0xdc17('0x35'),'message':_0xc2612a});}else{return request({'event':_0xdc17('0x36'),'message':_0xc2612a});}})[_0xdc17('0x37')](function(_0x1cbbf9){logger[_0xdc17('0x21')](_0xdc17('0x20'),_0xdc17('0x38'),_0x1cbbf9);});};}function afterCreateOfflineMessage(_0x585441){return function(_0x27145a){_0x27145a=_0x27145a['get']({'plain':!![]});_0x27145a['channel']=_0x585441;_0x27145a[_0xdc17('0x23')]=_0x585441;_0x27145a[_0xdc17('0x24')]=_0xdc17('0x39');return request({'event':_0x27145a['event'],'message':_0x27145a});};}function afterCreate(_0x55786e,_0x11d309){return function(_0x3a213f){_0x3a213f=_0x3a213f[_0xdc17('0x22')]({'plain':!![]});_0x3a213f['channel']=_0x55786e;_0x3a213f[_0xdc17('0x23')]=_0x55786e;_0x3a213f[_0xdc17('0x24')]=_0xdc17('0x3a');Promise[_0xdc17('0x26')]()[_0xdc17('0x27')](function(){var _0x58715a='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x3a213f['ContactId'];return db['sequelize'][_0xdc17('0x3b')](_0x58715a,{'type':db[_0xdc17('0x2b')][_0xdc17('0x2c')][_0xdc17('0x2d')],'raw':!![]});})[_0xdc17('0x27')](function(_0x55f6ec){if(_0x55f6ec){_0x3a213f[_0xdc17('0x2e')]=_0x55f6ec[0x0];}if(typeof _0x3a213f['UserId']===_0xdc17('0x29'))return;return getAgent(_0x3a213f[_0xdc17('0x2f')]);})['then'](function(_0x5182a6){if(_0x5182a6){_0x3a213f[_0xdc17('0x3c')]=util['format']('SIP/%s',_0x5182a6[_0xdc17('0x32')]);_0x3a213f['agent']=_0x5182a6;}return request({'event':_0x11d309,'message':_0x3a213f});})['catch'](function(_0x50ace7){logger[_0xdc17('0x21')](_0xdc17('0x20'),'AfterCreate',_0x50ace7);});};}function afterUpdate(_0xdf5ec4){return function(_0x3d4318){var _0x2b939d=_0x3d4318['changed'](_0xdc17('0x3d'))&&_0x3d4318['closed'];var _0x484774=_0x3d4318[_0xdc17('0x3e')]('substatus');if(_0x2b939d||_0x484774){var _0x203e78=_0x2b939d?_0xdc17('0x8'):_0xdc17('0x3f');var _0x4ce633=_0x3d4318[_0xdc17('0x22')]({'plain':!![]});_0x4ce633[_0xdc17('0x34')]=_0xdf5ec4;_0x4ce633[_0xdc17('0x23')]=_0xdf5ec4;_0x4ce633[_0xdc17('0x24')]=_0x2b939d?_0xdc17('0x3d'):_0xdc17('0x3f');var _0x37b55a='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x4ce633['ContactId'];return db[_0xdc17('0x2a')][_0xdc17('0x3b')](_0x37b55a,{'type':db[_0xdc17('0x2b')][_0xdc17('0x2c')][_0xdc17('0x2d')],'raw':!![]})['then'](function(_0x376a52){if(_0x376a52){_0x4ce633['contact']=_0x376a52[0x0];}if(typeof _0x4ce633[_0xdc17('0x2f')]===_0xdc17('0x29'))return;return getAgent(_0x4ce633['UserId']);})['then'](function(_0xafff48){if(_0xafff48){_0x4ce633[_0xdc17('0x3c')]=util[_0xdc17('0x30')](_0xdc17('0x31'),_0xafff48[_0xdc17('0x32')]);_0x4ce633[_0xdc17('0x33')]=_0xafff48;}return request({'event':_0x203e78,'message':_0x4ce633});})['catch'](function(_0x496f07){logger[_0xdc17('0x21')](_0xdc17('0x20'),_0xdc17('0x40'),_0x496f07);});}};}function getAgent(_0x32df73){return db[_0xdc17('0x41')][_0xdc17('0x42')]({'where':{'id':_0x32df73},'attributes':['id','name',_0xdc17('0x43'),_0xdc17('0x44'),'internal'],'raw':!![]})[_0xdc17('0x27')](function(_0x4478c3){return _0x4478c3;});}exports[_0xdc17('0x45')]=function(){for(var _0x4ea86d=0x0;_0x4ea86d<triggers[_0xdc17('0x46')];_0x4ea86d+=0x1){if(db[_0xdc17('0x47')](triggers[_0x4ea86d]['model'])){db[triggers[_0x4ea86d][_0xdc17('0x48')]][_0xdc17('0x49')](triggers[_0x4ea86d][_0xdc17('0x24')],triggers[_0x4ea86d][_0xdc17('0x4a')](triggers[_0x4ea86d][_0xdc17('0x34')][_0xdc17('0x4b')](),triggers[_0x4ea86d]['condition']));}}};
\ No newline at end of file
+var _0x93e0=['default','hasOwnProperty','model','callback','toLowerCase','util','../../mysqldb','../logger','triggers','http','Chat','afterCreate','newinteraction','ChatInteraction','afterUpdate','closedinteraction','ChatMessage','newmessage','ChatOfflineMessage','Sms','SmsInteraction','SmsMessage','Whatsapp','Fax','FaxInteraction','FaxMessage','MailInteraction','Mail','MailMessage','Openchannel','OpenchannelInteraction','OpenchannelMessage','request','info','Trigger,\x20%s','EventManager','error','catch','channel','motionChannel','event','resolve','then','ContactId','undefined','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','QueryTypes','UserId','interface','SIP/%s','agent','incomingmessage','outgoingmessage','AfterCreateMessage','opened','query','SELECT','contact','format','name','AfterCreate','changed','closed','substatus','get','AfterUpdate','find','fullname','email','internal'];(function(_0x14f1a1,_0x4e1aff){var _0xa819f9=function(_0xd835f5){while(--_0xd835f5){_0x14f1a1['push'](_0x14f1a1['shift']());}};_0xa819f9(++_0x4e1aff);}(_0x93e0,0xdd));var _0x093e=function(_0x17746d,_0x53072a){_0x17746d=_0x17746d-0x0;var _0x508a12=_0x93e0[_0x17746d];return _0x508a12;};'use strict';var util=require(_0x093e('0x0'));var db=require(_0x093e('0x1'))['db'];var jayson=require('jayson/promise');var logger=require(_0x093e('0x2'))(_0x093e('0x3'));var client=jayson['client'][_0x093e('0x4')]({'port':0x232a});var triggers=[{'channel':_0x093e('0x5'),'model':'ChatInteraction','event':_0x093e('0x6'),'condition':_0x093e('0x7'),'callback':afterCreate},{'channel':'Chat','model':_0x093e('0x8'),'event':_0x093e('0x9'),'condition':_0x093e('0xa'),'callback':afterUpdate},{'channel':'Chat','model':_0x093e('0xb'),'event':_0x093e('0x6'),'condition':_0x093e('0xc'),'callback':afterCreateMessage},{'channel':_0x093e('0x5'),'model':_0x093e('0xd'),'event':_0x093e('0x6'),'condition':_0x093e('0xc'),'callback':afterCreateOfflineMessage},{'channel':'Sms','model':'SmsInteraction','event':_0x093e('0x6'),'condition':_0x093e('0x7'),'callback':afterCreate},{'channel':_0x093e('0xe'),'model':_0x093e('0xf'),'event':_0x093e('0x9'),'condition':_0x093e('0xa'),'callback':afterUpdate},{'channel':_0x093e('0xe'),'model':_0x093e('0x10'),'event':'afterCreate','condition':'newmessage','callback':afterCreateMessage},{'channel':'Whatsapp','model':'WhatsappInteraction','event':_0x093e('0x6'),'condition':_0x093e('0x7'),'callback':afterCreate},{'channel':_0x093e('0x11'),'model':'WhatsappInteraction','event':_0x093e('0x9'),'condition':_0x093e('0xa'),'callback':afterUpdate},{'channel':_0x093e('0x11'),'model':'WhatsappMessage','event':_0x093e('0x6'),'condition':_0x093e('0xc'),'callback':afterCreateMessage},{'channel':_0x093e('0x12'),'model':_0x093e('0x13'),'event':'afterCreate','condition':_0x093e('0x7'),'callback':afterCreate},{'channel':'Fax','model':_0x093e('0x13'),'event':'afterUpdate','condition':'closedinteraction','callback':afterUpdate},{'channel':_0x093e('0x12'),'model':_0x093e('0x14'),'event':_0x093e('0x6'),'condition':_0x093e('0xc'),'callback':afterCreateMessage},{'channel':'Mail','model':_0x093e('0x15'),'event':_0x093e('0x6'),'condition':_0x093e('0x7'),'callback':afterCreate},{'channel':_0x093e('0x16'),'model':_0x093e('0x15'),'event':_0x093e('0x9'),'condition':_0x093e('0xa'),'callback':afterUpdate},{'channel':'Mail','model':_0x093e('0x17'),'event':_0x093e('0x6'),'condition':_0x093e('0xc'),'callback':afterCreateMessage},{'channel':_0x093e('0x18'),'model':_0x093e('0x19'),'event':_0x093e('0x6'),'condition':_0x093e('0x7'),'callback':afterCreate},{'channel':_0x093e('0x18'),'model':'OpenchannelInteraction','event':_0x093e('0x9'),'condition':_0x093e('0xa'),'callback':afterUpdate},{'channel':'Openchannel','model':_0x093e('0x1a'),'event':'afterCreate','condition':_0x093e('0xc'),'callback':afterCreateMessage}];function request(_0x5148f8){return client[_0x093e('0x1b')]('EventManager',_0x5148f8)['then'](function(_0x31e39b){logger[_0x093e('0x1c')](_0x093e('0x1d'),_0x093e('0x1e'),_0x31e39b);if(_0x31e39b[_0x093e('0x1f')]){if(_0x31e39b[_0x093e('0x1f')]['code']===0x1f4){logger[_0x093e('0x1f')]('Trigger,\x20%s',_0x093e('0x1e'),_0x31e39b[_0x093e('0x1f')]);}}})[_0x093e('0x20')](function(_0x5dd194){logger[_0x093e('0x1f')](_0x093e('0x1d'),_0x093e('0x1e'),_0x5dd194);});}function afterCreateMessage(_0x254533){return function(_0x56d708){_0x56d708=_0x56d708['get']({'plain':!![]});_0x56d708[_0x093e('0x21')]=_0x254533;_0x56d708[_0x093e('0x22')]=_0x254533;_0x56d708[_0x093e('0x23')]=_0x56d708['direction'];Promise[_0x093e('0x24')]()[_0x093e('0x25')](function(){if(typeof _0x56d708[_0x093e('0x26')]===_0x093e('0x27'))return null;var _0x13064f=_0x093e('0x28')+_0x56d708[_0x093e('0x26')];return db[_0x093e('0x29')]['query'](_0x13064f,{'type':db[_0x093e('0x2a')][_0x093e('0x2b')]['SELECT'],'raw':!![]});})[_0x093e('0x25')](function(_0xcdc13e){if(_0xcdc13e){_0x56d708['contact']=_0xcdc13e[0x0];}if(typeof _0x56d708['UserId']===_0x093e('0x27'))return;return getAgent(_0x56d708[_0x093e('0x2c')]);})[_0x093e('0x25')](function(_0x56d1cb){if(_0x56d1cb){_0x56d708[_0x093e('0x2d')]=util['format'](_0x093e('0x2e'),_0x56d1cb['name']);_0x56d708[_0x093e('0x2f')]=_0x56d1cb;_0x56d708['channel']=_0x254533;return request({'event':_0x093e('0x30'),'message':_0x56d708});}else{return request({'event':_0x093e('0x31'),'message':_0x56d708});}})[_0x093e('0x20')](function(_0x478797){logger['error'](_0x093e('0x1d'),_0x093e('0x32'),_0x478797);});};}function afterCreateOfflineMessage(_0x1c35b2){return function(_0x382584){_0x382584=_0x382584['get']({'plain':!![]});_0x382584[_0x093e('0x21')]=_0x1c35b2;_0x382584[_0x093e('0x22')]=_0x1c35b2;_0x382584[_0x093e('0x23')]='offlineMessage';return request({'event':_0x382584[_0x093e('0x23')],'message':_0x382584});};}function afterCreate(_0x58d506,_0x1efe64){return function(_0x79ba1c){_0x79ba1c=_0x79ba1c['get']({'plain':!![]});_0x79ba1c[_0x093e('0x21')]=_0x58d506;_0x79ba1c[_0x093e('0x22')]=_0x58d506;_0x79ba1c[_0x093e('0x23')]=_0x093e('0x33');Promise[_0x093e('0x24')]()[_0x093e('0x25')](function(){var _0x199da9='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x79ba1c['ContactId'];return db['sequelize'][_0x093e('0x34')](_0x199da9,{'type':db[_0x093e('0x2a')][_0x093e('0x2b')][_0x093e('0x35')],'raw':!![]});})[_0x093e('0x25')](function(_0xecf0e8){if(_0xecf0e8){_0x79ba1c[_0x093e('0x36')]=_0xecf0e8[0x0];}if(typeof _0x79ba1c[_0x093e('0x2c')]==='undefined')return;return getAgent(_0x79ba1c[_0x093e('0x2c')]);})[_0x093e('0x25')](function(_0x4f2820){if(_0x4f2820){_0x79ba1c[_0x093e('0x2d')]=util[_0x093e('0x37')](_0x093e('0x2e'),_0x4f2820[_0x093e('0x38')]);_0x79ba1c[_0x093e('0x2f')]=_0x4f2820;}return request({'event':_0x1efe64,'message':_0x79ba1c});})[_0x093e('0x20')](function(_0x86ab4f){logger[_0x093e('0x1f')](_0x093e('0x1d'),_0x093e('0x39'),_0x86ab4f);});};}function afterUpdate(_0x561f4c){return function(_0x350884){var _0x5df6f6=_0x350884[_0x093e('0x3a')](_0x093e('0x3b'))&&_0x350884[_0x093e('0x3b')];var _0x576cc4=_0x350884[_0x093e('0x3a')](_0x093e('0x3c'));if(_0x5df6f6||_0x576cc4){var _0x600097=_0x5df6f6?'closedinteraction':_0x093e('0x3c');var _0x1720bb=_0x350884[_0x093e('0x3d')]({'plain':!![]});_0x1720bb['channel']=_0x561f4c;_0x1720bb[_0x093e('0x22')]=_0x561f4c;_0x1720bb[_0x093e('0x23')]=_0x5df6f6?_0x093e('0x3b'):_0x093e('0x3c');var _0x2612a2=_0x093e('0x28')+_0x1720bb[_0x093e('0x26')];return db[_0x093e('0x29')][_0x093e('0x34')](_0x2612a2,{'type':db[_0x093e('0x2a')][_0x093e('0x2b')][_0x093e('0x35')],'raw':!![]})[_0x093e('0x25')](function(_0xfc508b){if(_0xfc508b){_0x1720bb[_0x093e('0x36')]=_0xfc508b[0x0];}if(typeof _0x1720bb[_0x093e('0x2c')]===_0x093e('0x27'))return;return getAgent(_0x1720bb[_0x093e('0x2c')]);})[_0x093e('0x25')](function(_0x10566c){if(_0x10566c){_0x1720bb['interface']=util[_0x093e('0x37')](_0x093e('0x2e'),_0x10566c[_0x093e('0x38')]);_0x1720bb[_0x093e('0x2f')]=_0x10566c;}return request({'event':_0x600097,'message':_0x1720bb});})[_0x093e('0x20')](function(_0x3da414){logger['error'](_0x093e('0x1d'),_0x093e('0x3e'),_0x3da414);});}};}function getAgent(_0x3bb263){return db['User'][_0x093e('0x3f')]({'where':{'id':_0x3bb263},'attributes':['id',_0x093e('0x38'),_0x093e('0x40'),_0x093e('0x41'),_0x093e('0x42')],'raw':!![]})['then'](function(_0x3befcb){return _0x3befcb;});}exports[_0x093e('0x43')]=function(){for(var _0x44d19a=0x0;_0x44d19a<triggers['length'];_0x44d19a+=0x1){if(db[_0x093e('0x44')](triggers[_0x44d19a][_0x093e('0x45')])){db[triggers[_0x44d19a][_0x093e('0x45')]]['hook'](triggers[_0x44d19a][_0x093e('0x23')],triggers[_0x44d19a][_0x093e('0x46')](triggers[_0x44d19a][_0x093e('0x21')][_0x093e('0x47')](),triggers[_0x44d19a]['condition']));}}};
\ No newline at end of file
index 752ec6d..485c3f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c2c=['role','agent','User','getLicense','then','agents','Maximum\x20login\x20has\x20been\x20reached','catch','lodash','mail','chat','fax','sms','whatsapp','openchannel','getChannels','isValidChannel','toLowerCase','includes','clearBlockUser','isUndefined','updateAttributes'];(function(_0x4b64a4,_0x1bdc50){var _0xd19b0e=function(_0x4dfbe0){while(--_0x4dfbe0){_0x4b64a4['push'](_0x4b64a4['shift']());}};_0xd19b0e(++_0x1bdc50);}(_0x7c2c,0x1c0));var _0xc7c2=function(_0x2d6db8,_0x488dd7){_0x2d6db8=_0x2d6db8-0x0;var _0x5b08b3=_0x7c2c[_0x2d6db8];return _0x5b08b3;};'use strict';var _=require(_0xc7c2('0x0'));var BPromise=require('bluebird');var db=require('../mysqldb')['db'];var util=require('./license/util');var channels=['voice',_0xc7c2('0x1'),_0xc7c2('0x2'),_0xc7c2('0x3'),_0xc7c2('0x4'),_0xc7c2('0x5'),_0xc7c2('0x6')];exports[_0xc7c2('0x7')]=function(){return channels;};exports[_0xc7c2('0x8')]=function(_0x2312db){_0x2312db=_0x2312db[_0xc7c2('0x9')]();return _[_0xc7c2('0xa')](channels,_0x2312db);};exports[_0xc7c2('0xb')]=function(_0x4be88c,_0x1bab31,_0x3db795,_0x2f03af){var _0xe7dbe3={'loginAttempts':_0x1bab31,'blocked':_0x3db795};if(!_[_0xc7c2('0xc')](_0x2f03af)){_0xe7dbe3['blockedAt']=_0x2f03af;}return _0x4be88c[_0xc7c2('0xd')](_0xe7dbe3);};exports['getLicense']=function(_0x59faa5){return new BPromise(function(_0x388700,_0x4177a8){var _0x36a9b1=0x0;if(_0x59faa5[_0xc7c2('0xe')]!==_0xc7c2('0xf')){_0x388700(_0x59faa5);}db[_0xc7c2('0x10')]['count']({'where':{'role':_0xc7c2('0xf'),'online':!![],'id':{'$ne':_0x59faa5['id']}}})['then'](function(_0xa07c2f){_0x36a9b1=_0xa07c2f;return util[_0xc7c2('0x11')]();})[_0xc7c2('0x12')](function(_0x489718){if(_0x489718&&_0x489718[_0xc7c2('0x13')]&&_0x36a9b1>=_0x489718['agents']){throw Error(_0xc7c2('0x14'));}_0x388700(_0x59faa5);})[_0xc7c2('0x15')](function(_0x2c4740){_0x4177a8(_0x2c4740);});});};
\ No newline at end of file
+var _0xd143=['updateAttributes','getLicense','role','User','count','agent','then','agents','Maximum\x20login\x20has\x20been\x20reached','lodash','bluebird','../mysqldb','./license/util','voice','mail','chat','fax','sms','whatsapp','openchannel','getChannels','toLowerCase','clearBlockUser','blockedAt'];(function(_0x46e900,_0x4a2c54){var _0x1de732=function(_0x3e7bb){while(--_0x3e7bb){_0x46e900['push'](_0x46e900['shift']());}};_0x1de732(++_0x4a2c54);}(_0xd143,0x159));var _0x3d14=function(_0x4e452a,_0x5b5007){_0x4e452a=_0x4e452a-0x0;var _0x4e793a=_0xd143[_0x4e452a];return _0x4e793a;};'use strict';var _=require(_0x3d14('0x0'));var BPromise=require(_0x3d14('0x1'));var db=require(_0x3d14('0x2'))['db'];var util=require(_0x3d14('0x3'));var channels=[_0x3d14('0x4'),_0x3d14('0x5'),_0x3d14('0x6'),_0x3d14('0x7'),_0x3d14('0x8'),_0x3d14('0x9'),_0x3d14('0xa')];exports[_0x3d14('0xb')]=function(){return channels;};exports['isValidChannel']=function(_0xb6c38){_0xb6c38=_0xb6c38[_0x3d14('0xc')]();return _['includes'](channels,_0xb6c38);};exports[_0x3d14('0xd')]=function(_0x23092f,_0x495e06,_0x3d3dc9,_0x615806){var _0x49576f={'loginAttempts':_0x495e06,'blocked':_0x3d3dc9};if(!_['isUndefined'](_0x615806)){_0x49576f[_0x3d14('0xe')]=_0x615806;}return _0x23092f[_0x3d14('0xf')](_0x49576f);};exports[_0x3d14('0x10')]=function(_0x2b0b7d){return new BPromise(function(_0x181b1f,_0x2fc7bd){var _0xfc6f15=0x0;if(_0x2b0b7d[_0x3d14('0x11')]!=='agent'){_0x181b1f(_0x2b0b7d);}db[_0x3d14('0x12')][_0x3d14('0x13')]({'where':{'role':_0x3d14('0x14'),'online':!![],'id':{'$ne':_0x2b0b7d['id']}}})[_0x3d14('0x15')](function(_0xfb552e){_0xfc6f15=_0xfb552e;return util[_0x3d14('0x10')]();})[_0x3d14('0x15')](function(_0x29749){if(_0x29749&&_0x29749[_0x3d14('0x16')]&&_0xfc6f15>=_0x29749[_0x3d14('0x16')]){throw Error(_0x3d14('0x17'));}_0x181b1f(_0x2b0b7d);})['catch'](function(_0x3d3829){_0x2fc7bd(_0x3d3829);});});};
\ No newline at end of file
index bf099ed..5bf9336 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4483=['stack','send','exports','util','../config/logger','api','message','Internal\x20Server\x20Error','name','Error','Bad\x20Request','inherits','Not\x20Found','Forbidden','OutOfInterval','error'];(function(_0xd39959,_0x302d09){var _0x1ff69c=function(_0x17c97f){while(--_0x17c97f){_0xd39959['push'](_0xd39959['shift']());}};_0x1ff69c(++_0x302d09);}(_0x4483,0x1a3));var _0x3448=function(_0x46a802,_0x15772e){_0x46a802=_0x46a802-0x0;var _0x26ecf2=_0x4483[_0x46a802];return _0x26ecf2;};'use strict';var util=require(_0x3448('0x0'));var logger=require(_0x3448('0x1'))(_0x3448('0x2'));var APIError=function(_0x481d0c,_0x202d3d){this[_0x3448('0x3')]=_0x481d0c||_0x3448('0x4');this[_0x3448('0x5')]=_0x202d3d||_0x3448('0x6');util['inherits'](APIError,Error);};var APIBadRequestError=function(_0xeb5b8){this[_0x3448('0x3')]=_0xeb5b8||_0x3448('0x7');this[_0x3448('0x5')]=_0x3448('0x7');util[_0x3448('0x8')](APIBadRequestError,APIError);};var APINotFoundError=function(_0x3cc81d){this[_0x3448('0x3')]=_0x3cc81d||'Entity\x20not\x20found';this['name']=_0x3448('0x9');util[_0x3448('0x8')](APINotFoundError,APIError);};function getStatusCode(_0xc36409){switch(_0xc36409){case _0x3448('0x7'):return 0x190;case _0x3448('0xa'),_0x3448('0xb'):return 0x193;case _0x3448('0x9'):return 0x194;default:return 0x1f4;}}function handleError(_0x32cd61){return function(_0x39bd9e){logger[_0x3448('0xc')](_0x39bd9e[_0x3448('0xd')]);var _0x481a6f=getStatusCode(_0x39bd9e['name']);if(_0x39bd9e[_0x3448('0x5')])delete _0x39bd9e[_0x3448('0x5')];return _0x32cd61['status'](_0x481a6f)[_0x3448('0xe')](_0x39bd9e);};}module[_0x3448('0xf')]={'APIError':APIError,'APIBadRequestError':APIBadRequestError,'APINotFoundError':APINotFoundError,'handleError':handleError};
\ No newline at end of file
+var _0x54ef=['send','exports','util','../config/logger','api','message','Internal\x20Server\x20Error','name','Error','inherits','Bad\x20Request','Not\x20Found','Forbidden','OutOfInterval','error','stack','status'];(function(_0x363b9c,_0x175500){var _0x2a8edd=function(_0x423a78){while(--_0x423a78){_0x363b9c['push'](_0x363b9c['shift']());}};_0x2a8edd(++_0x175500);}(_0x54ef,0x112));var _0xf54e=function(_0x3cf934,_0x22cb63){_0x3cf934=_0x3cf934-0x0;var _0x336ed4=_0x54ef[_0x3cf934];return _0x336ed4;};'use strict';var util=require(_0xf54e('0x0'));var logger=require(_0xf54e('0x1'))(_0xf54e('0x2'));var APIError=function(_0x5d180f,_0xd936f7){this[_0xf54e('0x3')]=_0x5d180f||_0xf54e('0x4');this[_0xf54e('0x5')]=_0xd936f7||_0xf54e('0x6');util[_0xf54e('0x7')](APIError,Error);};var APIBadRequestError=function(_0x12d43f){this['message']=_0x12d43f||'Bad\x20Request';this[_0xf54e('0x5')]=_0xf54e('0x8');util[_0xf54e('0x7')](APIBadRequestError,APIError);};var APINotFoundError=function(_0x561870){this[_0xf54e('0x3')]=_0x561870||'Entity\x20not\x20found';this[_0xf54e('0x5')]=_0xf54e('0x9');util['inherits'](APINotFoundError,APIError);};function getStatusCode(_0x26fc3e){switch(_0x26fc3e){case _0xf54e('0x8'):return 0x190;case _0xf54e('0xa'),_0xf54e('0xb'):return 0x193;case'Not\x20Found':return 0x194;default:return 0x1f4;}}function handleError(_0x558502){return function(_0xc939ab){logger[_0xf54e('0xc')](_0xc939ab[_0xf54e('0xd')]);var _0x553759=getStatusCode(_0xc939ab[_0xf54e('0x5')]);if(_0xc939ab['name'])delete _0xc939ab['name'];return _0x558502[_0xf54e('0xe')](_0x553759)[_0xf54e('0xf')](_0xc939ab);};}module[_0xf54e('0x10')]={'APIError':APIError,'APIBadRequestError':APIBadRequestError,'APINotFoundError':APINotFoundError,'handleError':handleError};
\ No newline at end of file
index 45156b4..85d901b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c3b=['exports','404','status','render','send'];(function(_0x58ceb9,_0x5601df){var _0x3d0ff5=function(_0x3a79d0){while(--_0x3a79d0){_0x58ceb9['push'](_0x58ceb9['shift']());}};_0x3d0ff5(++_0x5601df);}(_0x0c3b,0x1a9));var _0xb0c3=function(_0x2eaacb,_0x5c68c9){_0x2eaacb=_0x2eaacb-0x0;var _0x3a84dd=_0x0c3b[_0x2eaacb];return _0x3a84dd;};'use strict';module[_0xb0c3('0x0')][0x194]=function pageNotFound(_0x5d31fc,_0x3870d3){var _0x2e3937=_0xb0c3('0x1');var _0x29a17b=0x194;var _0x3da228={'status':_0x29a17b};_0x3870d3[_0xb0c3('0x2')](_0x3da228[_0xb0c3('0x2')]);_0x3870d3[_0xb0c3('0x3')](_0x2e3937,{},function(_0x467e52,_0x1942e6){if(_0x467e52){return _0x3870d3['status'](_0x3da228['status'])['json'](_0x3da228);}_0x3870d3[_0xb0c3('0x4')](_0x1942e6);});};
\ No newline at end of file
+var _0x9755=['404','status','render','json','exports'];(function(_0x50d903,_0x4af768){var _0xf2c4be=function(_0x2d9c04){while(--_0x2d9c04){_0x50d903['push'](_0x50d903['shift']());}};_0xf2c4be(++_0x4af768);}(_0x9755,0x1c6));var _0x5975=function(_0x1221e8,_0x2e7229){_0x1221e8=_0x1221e8-0x0;var _0x3f3041=_0x9755[_0x1221e8];return _0x3f3041;};'use strict';module[_0x5975('0x0')][0x194]=function pageNotFound(_0x4c56bb,_0x7ec675){var _0x2d9d91=_0x5975('0x1');var _0x5e3640=0x194;var _0x53201e={'status':_0x5e3640};_0x7ec675['status'](_0x53201e[_0x5975('0x2')]);_0x7ec675[_0x5975('0x3')](_0x2d9d91,{},function(_0x2b7c96,_0x1a201e){if(_0x2b7c96){return _0x7ec675[_0x5975('0x2')](_0x53201e[_0x5975('0x2')])[_0x5975('0x4')](_0x53201e);}_0x7ec675['send'](_0x1a201e);});};
\ No newline at end of file
index 5de3775..94c3311 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbcd2=['chat_interaction_has_tags','ChatInteractionId','team_has_chat_queues','ChatGroupId','Phones','CmContactId','CmHopper','cm_user_has_contacts','cm_contact_has_tags','AdditionalPhones','CmHopperId','OwnerId','CampaignId','OneAll','AutomationAllId','Condition','Any','OneAny','Actions','AutomationId','ParentId','MailApplications','ChatApplications','FaxApplications','SmsApplications','Schedule','AnalyticDefaultReport','DefaultReportId','CustomReportId','ItemType','CmHopperAdditionalPhone','Hopper','Trigger','AllConditions','AllCondition','TriggerAllId','AnyConditions','AnyCondition','AnalyticCustomReport','Fields','MetricId','Configurations','AccountId','SalesforceField','Subjects','SubjectId','Descriptions','DescriptionId','FieldId','Subject','Description','Field','VariableId','SugarcrmAccount','ZohoConfiguration','ZohoField','ZendeskAccount','FreshdeskAccount','int_freshdesk_configuration_has_tags','ToId','SessionId','ProjectId','team_has_sms_queues','TeamVoicePrefix','TrunkId','TrunkBackup','SquareProject','SquareProjectId','campaigns_has_cm_blacklists','MailTransferReport','FromMailAccountId','FromAccount','FromUserId','ToUserId','ToAgent','ToMailQueueId','ToQueue','ToMailAccountId','ToAccount','FromChatWebsiteId','ToChatQueueId','ToChatWebsiteId','FaxTransferReport','FromAgent','ToFaxQueueId','ToFaxAccountId','OpenchannelTransferReport','FromOpenchannelAccountId','ToOpenchannelQueueId','ToOpenchannelAccountId','ToSmsQueueId','ToSmsAccountId','CustomFields','Queues','UserProfileSection','UserProfileSections','UserProfileResource','Resources','sectionId','WhatsappAccountId','WhatsappInteractionId','whatsapp_interaction_has_tags','WhatsappQueueReport','FromWhatsappAccountId','ToWhatsappAccountId','ToQueueId','WhatsappQueueId','team_has_whatsapp_queues','UserSetting','user','exports','sequelize','lodash','jstz','determine','defaultsDeep','xC@LL1234','127.0.0.1','mysql','utf8mb4','name','utf8','sequelizeHistory','motion2','xcall','utf8_general_ci','password','database','username','options','User','VoiceChanSpy','import','../api/voiceChanSpy/voiceChanSpy.model','VoiceContext','../api/voiceContext/voiceContext.model','VoiceExtension','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','../api/voiceQueue/voiceQueue.model','VoiceRecording','ScreenRecording','../api/screenRecording/screenRecording.model','VoiceMail','VoiceMailMessage','../api/voiceMailMessage/voiceMailMessage.model','VoiceCallReport','../api/voiceCallReport/voiceCallReport.model','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','MemberReport','../api/memberReport/memberReport.model','Trunk','../api/trunk/trunk.model','../api/voiceTransferReport/voiceTransferReport.model','UserVoiceQueueRt','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','../api/userVoiceQueue/userVoiceQueue.model','UserChatQueue','../api/userChatQueue/userChatQueue.model','../api/userMailQueue/userMailQueue.model','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','../api/userSmsQueue/userSmsQueue.model','UserOpenchannelQueue','UserWhatsappQueue','../api/userWhatsappQueue/userWhatsappQueue.model','../api/mailServerIn/mailServerIn.model','MailServerOut','../api/mailServerOut/mailServerOut.model','MailAccount','../api/mailAccount/mailAccount.model','MailQueue','../api/mailQueue/mailQueue.model','MailInteraction','../api/mailMessage/mailMessage.model','MailApplication','../api/mailApplication/mailApplication.model','MailQueueReport','../api/mailQueueReport/mailQueueReport.model','Dashboard','../api/dashboard/dashboard.model','DashboardItem','../api/dashboardItem/dashboardItem.model','FaxAccount','../api/faxAccount/faxAccount.model','../api/faxApplication/faxApplication.model','../api/faxMessage/faxMessage.model','../api/faxQueueReport/faxQueueReport.model','SmsApplication','../api/smsApplication/smsApplication.model','../api/smsInteraction/smsInteraction.model','SmsMessage','../api/smsMessage/smsMessage.model','SmsQueue','../api/smsQueue/smsQueue.model','../api/openchannelApplication/openchannelApplication.model','OpenchannelInteraction','../api/openchannelInteraction/openchannelInteraction.model','../api/openchannelMessage/openchannelMessage.model','OpenchannelQueue','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','../api/chatWebsite/chatWebsite.model','OpenchannelQueueReport','ChatApplication','ChatInteraction','../api/chatInteraction/chatInteraction.model','../api/chatMessage/chatMessage.model','ChatOfflineMessage','ChatGroup','../api/chatGroup/chatGroup.model','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','CmCompany','../api/cmCompany/cmCompany.model','CmContact','../api/cmContact/cmContact.model','CmHopperBlack','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','../api/cmHopperHistory/cmHopperHistory.model','ReportAgentPreview','../api/reportAgentPreview/reportAgentPreview.model','Action','Automation','../api/automation/automation.model','CannedAnswer','../api/cannedAnswer/cannedAnswer.model','../api/disposition/disposition.model','../api/condition/condition.model','Interval','../api/interval/interval.model','Cdr','VoiceQueuesLog','../api/voiceQueuesLog/voiceQueuesLog.model','../api/schedule/schedule.model','Sound','../api/sound/sound.model','../api/tag/tag.model','ContactItemType','CmContactHasItem','Template','../api/template/template.model','../api/trigger/trigger.model','Variable','../api/variable/variable.model','IntegrationReport','../api/integrationReport/integrationReport.model','../api/analyticCustomReport/analyticCustomReport.model','../api/analyticDefaultReport/analyticDefaultReport.model','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticMetric','AnalyticFieldReport','AnalyticTreeReport','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','SalesforceConfiguration','../api/intSalesforceField/intSalesforceField.model','../api/intSugarcrmAccount/intSugarcrmAccount.model','SugarcrmConfiguration','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','SugarcrmField','../api/intSugarcrmField/intSugarcrmField.model','DeskAccount','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','../api/intDeskConfiguration/intDeskConfiguration.model','DeskField','../api/intDeskField/intDeskField.model','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','../api/intZohoField/intZohoField.model','ZendeskConfiguration','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','../api/intZendeskField/intZendeskField.model','../api/intFreshdeskAccount/intFreshdeskAccount.model','FreshdeskConfiguration','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','FreshdeskField','../api/intFreshdeskField/intFreshdeskField.model','VtigerAccount','VtigerConfiguration','VtigerField','../api/intVtigerField/intVtigerField.model','ServicenowAccount','../api/intServicenowAccount/intServicenowAccount.model','ServicenowConfiguration','../api/intServicenowConfiguration/intServicenowConfiguration.model','ServicenowField','../api/intServicenowField/intServicenowField.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','Integration','../api/integration/integration.model','Network','../api/network/network.model','ChatQueueReport','ChatInternalMessage','../api/chatInternalMessage/chatInternalMessage.model','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','JscriptyQuestionReport','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','JscriptySessionReport','../api/jscriptySessionReport/jscriptySessionReport.model','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','SquareReport','../api/squareReport/squareReport.model','SquareDetailsReport','JscriptyProject','../api/jscriptyProject/jscriptyProject.model','Setting','../api/setting/setting.model','SquareOdbc','../api/squareOdbc/squareOdbc.model','../api/squareProject/squareProject.model','SquareRecording','../api/squareRecording/squareRecording.model','../api/squareMessage/squareMessage.model','../api/team/team.model','Campaign','../api/campaign/campaign.model','Migration','../api/migration/migration.model','Attachment','../api/attachment/attachment.model','Plugin','../api/plugin/plugin.model','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','../api/faxTransferReport/faxTransferReport.model','SmsTransferReport','../api/smsTransferReport/smsTransferReport.model','CmList','../api/cmList/cmList.model','VoicePrefix','../api/voicePrefix/voicePrefix.model','UserProfile','../api/userProfileResource/userProfileResource.model','UserNotification','../api/userNotification/userNotification.model','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','../api/whatsappApplication/whatsappApplication.model','WhatsappInteraction','../api/whatsappInteraction/whatsappInteraction.model','WhatsappMessage','../api/whatsappMessage/whatsappMessage.model','../api/whatsappQueueReport/whatsappQueueReport.model','WhatsappTransferReport','../api/whatsappTransferReport/whatsappTransferReport.model','WhatsappQueue','../api/whatsappQueue/whatsappQueue.model','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','../api/teamVoicePrefix/teamVoicePrefix.model','UserVoicePrefix','../api/userVoicePrefix/userVoicePrefix.model','../api/user-setting/user-setting.model','cascade','UserId','userSetting','hasMany','Recordings','VoiceQueuesRt','Extensions','CmHopperHistory','ChatInteractions','SmsInteraction','SmsInteractions','FaxInteraction','FaxInteractions','WhatsappInteractions','belongsTo','userProfileId','belongsToMany','Groups','chat_group_has_users','Contacts','Lists','cm_user_has_lists','Team','user_has_teams','MailInteractions','user_has_mail_interactions','user_has_chat_interactions','user_has_fax_interactions','OpenchannelInteractions','user_has_whatsapp_interactions','VoiceQueue','VoiceQueues','VoicePrefixes','MailQueues','ChatQueue','ChatQueues','FaxQueues','SmsQueues','UserSmsQueue','OpenchannelQueues','WhatsappQueues','user_has_chat_websites','MailAccounts','user_has_mail_accounts','OpenchannelAccount','OpenchannelAccounts','user_has_openchannel_accounts','SmsAccounts','WhatsappAccounts','user_has_whatsapp_accounts','SpiedAgents','ChanSpyId','Sounds','moh_has_sounds','Members','VoiceQueueId','Hoppers','HopperFinals','HopperHistories','JscriptySessions','TrunkBackupId','mandatoryDispositionPause','mandatoryDispositionPauseId','voice_queues_has_cm_lists','Teams','voice_queues_has_cm_blacklists','Messages','mailboxuser','mailbox','QueueCalls','uniqueid','VoiceAgentReport','AgentReports','Contact','MailServerIn','MailAccountId','CloudProvider','CloudProviderId','restrict','hasOne','Imap','Smtp','Disposition','Answers','MailMessage','Applications','List','ListId','TemplateId','Pause','Agents','UserMailQueue','team_has_mail_queues','MailInteractionId','Tag','mail_interaction_has_tags','Tags','ThroughTags','Users','Attachments','Interaction','Account','ChatWebsiteId','ChatOfflineMessageId','IntervalId','ContactId','Items','FaxAccountId','FaxApplication','FaxMessage','user_has_fax_accounts','FaxQueue','TagId','FaxInteractionId','Owner','fax_interaction_has_tags','team_has_fax_queues','FaxQueueReport','SmsAccount','Dispositions','SmsAccountId','Interactions','sms_interaction_has_tags','user_has_sms_interactions','SmsInteractionId','SmsQueueId','OpenchannelAccountId','OpenchannelMessage','OpenchannelApplication','OpenchannelQueueId','OpenchannelInteractionId','openchannel_interaction_has_tags','user_has_openchannel_interactions','AttachmentId','team_has_openchannel_queues','ProactiveActions','ChatMessage','Agent','Queue','ChatQueueId','Website'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xbcd2,0x6f));var _0x2bcd=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xbcd2[_0x3dd15e];return _0x231fd0;};'use strict';var config=require('../config/environment');var Sequelize=require(_0x2bcd('0x0'));var _=require(_0x2bcd('0x1'));var jstz=require(_0x2bcd('0x2'));var timezone=jstz[_0x2bcd('0x3')]();config[_0x2bcd('0x0')]=_[_0x2bcd('0x4')](config[_0x2bcd('0x0')],{'database':'motion2','username':'xcall','password':_0x2bcd('0x5'),'options':{'host':_0x2bcd('0x6'),'port':0xcea,'dialect':_0x2bcd('0x7'),'dialectOptions':{'charset':_0x2bcd('0x8')},'logging':![],'timezone':timezone[_0x2bcd('0x9')](),'define':{'charset':_0x2bcd('0xa'),'collate':'utf8_general_ci'}}});config['sequelizeHistory']=_['defaultsDeep'](config[_0x2bcd('0xb')],{'database':_0x2bcd('0xc'),'username':_0x2bcd('0xd'),'password':'xC@LL1234','options':{'host':'127.0.0.1','port':0xcea,'dialect':_0x2bcd('0x7'),'dialectOptions':{'charset':_0x2bcd('0x8')},'logging':![],'timezone':timezone[_0x2bcd('0x9')](),'define':{'charset':_0x2bcd('0xa'),'collate':_0x2bcd('0xe')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelize']['database'],config[_0x2bcd('0x0')]['username'],config['sequelize'][_0x2bcd('0xf')],config[_0x2bcd('0x0')]['options'])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x2bcd('0xb')][_0x2bcd('0x10')],config[_0x2bcd('0xb')][_0x2bcd('0x11')],config[_0x2bcd('0xb')]['password'],config[_0x2bcd('0xb')][_0x2bcd('0x12')])};db[_0x2bcd('0x13')]=db[_0x2bcd('0x0')]['import']('../api/user/user.model');db[_0x2bcd('0x14')]=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0x16'));db[_0x2bcd('0x17')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x18'));db[_0x2bcd('0x19')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x1a'));db[_0x2bcd('0x1b')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x1c'));db['VoiceQueue']=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0x1d'));db[_0x2bcd('0x1e')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/voiceRecording/voiceRecording.model');db[_0x2bcd('0x1f')]=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0x20'));db[_0x2bcd('0x21')]=db['sequelize'][_0x2bcd('0x15')]('../api/voiceMail/voiceMail.model');db[_0x2bcd('0x22')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x23'));db[_0x2bcd('0x24')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x25'));db[_0x2bcd('0x26')]=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0x27'));db['VoiceAgentReport']=db[_0x2bcd('0x0')]['import'](_0x2bcd('0x28'));db[_0x2bcd('0x29')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/voiceQueueReport/voiceQueueReport.model');db[_0x2bcd('0x2a')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x2b'));db[_0x2bcd('0x2c')]=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0x2d'));db['VoiceTransferReport']=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x2e'));db[_0x2bcd('0x2f')]=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0x30'));db[_0x2bcd('0x31')]=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0x32'));db[_0x2bcd('0x33')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x34'));db['UserMailQueue']=db['sequelize']['import'](_0x2bcd('0x35'));db[_0x2bcd('0x36')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x37'));db['UserSmsQueue']=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x38'));db[_0x2bcd('0x39')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/userOpenchannelQueue/userOpenchannelQueue.model');db[_0x2bcd('0x3a')]=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0x3b'));db['MailServerIn']=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x3c'));db[_0x2bcd('0x3d')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x3e'));db[_0x2bcd('0x3f')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x40'));db[_0x2bcd('0x41')]=db[_0x2bcd('0x0')]['import'](_0x2bcd('0x42'));db['MailSubstatus']=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/mailSubstatus/mailSubstatus.model');db[_0x2bcd('0x43')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/mailInteraction/mailInteraction.model');db['MailMessage']=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x44'));db[_0x2bcd('0x45')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x46'));db[_0x2bcd('0x47')]=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0x48'));db[_0x2bcd('0x49')]=db[_0x2bcd('0x0')]['import'](_0x2bcd('0x4a'));db[_0x2bcd('0x4b')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x4c'));db[_0x2bcd('0x4d')]=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0x4e'));db['FaxApplication']=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x4f'));db['FaxInteraction']=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/faxInteraction/faxInteraction.model');db['FaxMessage']=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x50'));db['FaxQueue']=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/faxQueue/faxQueue.model');db['FaxQueueReport']=db[_0x2bcd('0x0')]['import'](_0x2bcd('0x51'));db['SmsAccount']=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/smsAccount/smsAccount.model');db[_0x2bcd('0x52')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x53'));db['SmsInteraction']=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x54'));db[_0x2bcd('0x55')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x56'));db[_0x2bcd('0x57')]=db['sequelize']['import'](_0x2bcd('0x58'));db['OpenchannelAccount']=db[_0x2bcd('0x0')]['import']('../api/openchannelAccount/openchannelAccount.model');db['OpenchannelApplication']=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0x59'));db[_0x2bcd('0x5a')]=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0x5b'));db['OpenchannelMessage']=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x5c'));db[_0x2bcd('0x5d')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x5e'));db[_0x2bcd('0x5f')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x60'));db[_0x2bcd('0x61')]=db['sequelize'][_0x2bcd('0x15')]('../api/openchannelQueueReport/openchannelQueueReport.model');db[_0x2bcd('0x62')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/chatApplication/chatApplication.model');db[_0x2bcd('0x63')]=db[_0x2bcd('0x0')]['import'](_0x2bcd('0x64'));db['ChatMessage']=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x65'));db[_0x2bcd('0x66')]=db['sequelize'][_0x2bcd('0x15')]('../api/chatOfflineMessage/chatOfflineMessage.model');db['ChatQueue']=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/chatQueue/chatQueue.model');db[_0x2bcd('0x67')]=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0x68'));db[_0x2bcd('0x69')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x6a'));db[_0x2bcd('0x6b')]=db[_0x2bcd('0x0')]['import'](_0x2bcd('0x6c'));db[_0x2bcd('0x6d')]=db['sequelize']['import'](_0x2bcd('0x6e'));db['CmHopper']=db['sequelize']['import']('../api/cmHopper/cmHopper.model');db[_0x2bcd('0x6f')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/cmHopperBlack/cmHopperBlack.model');db[_0x2bcd('0x70')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x71'));db['CmHopperHistory']=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x72'));db[_0x2bcd('0x73')]=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0x74'));db['CmCustomField']=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/cmCustomField/cmCustomField.model');db[_0x2bcd('0x75')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/action/action.model');db[_0x2bcd('0x76')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x77'));db[_0x2bcd('0x78')]=db[_0x2bcd('0x0')]['import'](_0x2bcd('0x79'));db['Disposition']=db['sequelize']['import'](_0x2bcd('0x7a'));db['Condition']=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0x7b'));db[_0x2bcd('0x7c')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x7d'));db['Pause']=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/pause/pause.model');db[_0x2bcd('0x7e')]=db['sequelize'][_0x2bcd('0x15')]('../api/cdr/cdr.model');db[_0x2bcd('0x7f')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x80'));db['Schedule']=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x81'));db[_0x2bcd('0x82')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x83'));db['Tag']=db[_0x2bcd('0x0')]['import'](_0x2bcd('0x84'));db[_0x2bcd('0x85')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/contactItemType/contactItemType.model');db[_0x2bcd('0x86')]=db[_0x2bcd('0x0')]['import']('../api/cmContactHasItem/cmContactHasItem.model');db['CmHopperAdditionalPhone']=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model');db[_0x2bcd('0x87')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x88'));db['Trigger']=db[_0x2bcd('0x0')]['import'](_0x2bcd('0x89'));db[_0x2bcd('0x8a')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x8b'));db['Integration']=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/integration/integration.model');db[_0x2bcd('0x8c')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x8d'));db['AnalyticCustomReport']=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0x8e'));db['AnalyticDefaultReport']=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0x8f'));db['AnalyticExtractedReport']=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x90'));db[_0x2bcd('0x91')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/analyticMetric/analyticMetric.model');db[_0x2bcd('0x92')]=db['sequelize'][_0x2bcd('0x15')]('../api/analyticFieldReport/analyticFieldReport.model');db[_0x2bcd('0x93')]=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0x94'));db[_0x2bcd('0x95')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x96'));db[_0x2bcd('0x97')]=db[_0x2bcd('0x0')]['import']('../api/intSalesforceConfiguration/intSalesforceConfiguration.model');db['SalesforceField']=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x98'));db['SugarcrmAccount']=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x99'));db[_0x2bcd('0x9a')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x9b'));db[_0x2bcd('0x9c')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x9d'));db[_0x2bcd('0x9e')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x9f'));db[_0x2bcd('0xa0')]=db[_0x2bcd('0x0')]['import'](_0x2bcd('0xa1'));db[_0x2bcd('0xa2')]=db[_0x2bcd('0x0')]['import'](_0x2bcd('0xa3'));db[_0x2bcd('0xa4')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xa5'));db['ZohoConfiguration']=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/intZohoConfiguration/intZohoConfiguration.model');db['ZohoField']=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xa6'));db['ZendeskAccount']=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/intZendeskAccount/intZendeskAccount.model');db[_0x2bcd('0xa7')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xa8'));db[_0x2bcd('0xa9')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xaa'));db['FreshdeskAccount']=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xab'));db[_0x2bcd('0xac')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xad'));db[_0x2bcd('0xae')]=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0xaf'));db[_0x2bcd('0xb0')]=db[_0x2bcd('0x0')]['import']('../api/intVtigerAccount/intVtigerAccount.model');db[_0x2bcd('0xb1')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/intVtigerConfiguration/intVtigerConfiguration.model');db[_0x2bcd('0xb2')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xb3'));db[_0x2bcd('0xb4')]=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0xb5'));db[_0x2bcd('0xb6')]=db['sequelize']['import'](_0x2bcd('0xb7'));db[_0x2bcd('0xb8')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xb9'));db[_0x2bcd('0xba')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/intDynamics365Account/intDynamics365Account.model');db[_0x2bcd('0xbb')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xbc'));db[_0x2bcd('0xbd')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xbe'));db[_0x2bcd('0xbf')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xc0'));db[_0x2bcd('0xc1')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xc2'));db[_0x2bcd('0xc3')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xc4'));db[_0x2bcd('0xc5')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xc6'));db[_0x2bcd('0xc7')]=db[_0x2bcd('0x0')]['import'](_0x2bcd('0xc8'));db[_0x2bcd('0xc9')]=db['sequelize'][_0x2bcd('0x15')]('../api/chatQueueReport/chatQueueReport.model');db[_0x2bcd('0xca')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xcb'));db[_0x2bcd('0xcc')]=db[_0x2bcd('0x0')]['import'](_0x2bcd('0xcd'));db[_0x2bcd('0xce')]=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0xcf'));db[_0x2bcd('0xd0')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xd1'));db[_0x2bcd('0xd2')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xd3'));db[_0x2bcd('0xd4')]=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0xd5'));db[_0x2bcd('0xd6')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/squareReportDetail/squareReportDetail.model');db[_0x2bcd('0xd7')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xd8'));db[_0x2bcd('0xd9')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xda'));db[_0x2bcd('0xdb')]=db['sequelize']['import'](_0x2bcd('0xdc'));db['SquareProject']=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xdd'));db[_0x2bcd('0xde')]=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0xdf'));db['SquareMessage']=db[_0x2bcd('0x0')]['import'](_0x2bcd('0xe0'));db['Team']=db[_0x2bcd('0x0')]['import'](_0x2bcd('0xe1'));db['License']=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/license/license.model');db[_0x2bcd('0xe2')]=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0xe3'));db[_0x2bcd('0xe4')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xe5'));db[_0x2bcd('0xe6')]=db[_0x2bcd('0x0')]['import'](_0x2bcd('0xe7'));db[_0x2bcd('0xe8')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xe9'));db['MailTransferReport']=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/mailTransferReport/mailTransferReport.model');db[_0x2bcd('0xea')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xeb'));db['FaxTransferReport']=db[_0x2bcd('0x0')]['import'](_0x2bcd('0xec'));db['OpenchannelTransferReport']=db[_0x2bcd('0x0')]['import']('../api/openchannelTransferReport/openchannelTransferReport.model');db[_0x2bcd('0xed')]=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0xee'));db[_0x2bcd('0xef')]=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0xf0'));db[_0x2bcd('0xf1')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xf2'));db[_0x2bcd('0xf3')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/userProfile/userProfile.model');db['UserProfileSection']=db['sequelize'][_0x2bcd('0x15')]('../api/userProfileSection/userProfileSection.model');db['UserProfileResource']=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xf4'));db[_0x2bcd('0xf5')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xf6'));db[_0x2bcd('0xf7')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xf8'));db[_0x2bcd('0xf9')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xfa'));db[_0x2bcd('0xfb')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xfc'));db[_0x2bcd('0xfd')]=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0xfe'));db['WhatsappQueueReport']=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0xff'));db[_0x2bcd('0x100')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x101'));db[_0x2bcd('0x102')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x103'));db['CloudProvider']=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x104'));db[_0x2bcd('0x105')]=db['sequelize'][_0x2bcd('0x15')]('../api/teamVoiceQueue/teamVoiceQueue.model');db['TeamVoicePrefix']=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x106'));db[_0x2bcd('0x107')]=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0x108'));db['UserSetting']=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x109'));db[_0x2bcd('0x13')]['hasOne'](db[_0x2bcd('0x21')],{'as':'VoiceMail','onDelete':_0x2bcd('0x10a'),'foreignKey':_0x2bcd('0x10b')});db[_0x2bcd('0x13')]['hasOne'](db['UserSetting'],{'as':_0x2bcd('0x10c'),'onDelete':_0x2bcd('0x10a'),'foreignKey':_0x2bcd('0x10b')});db['User'][_0x2bcd('0x10d')](db[_0x2bcd('0x1e')],{'as':_0x2bcd('0x10e'),'foreignKey':_0x2bcd('0x10b')});db[_0x2bcd('0x13')][_0x2bcd('0x10d')](db[_0x2bcd('0x2f')],{'as':_0x2bcd('0x10f'),'foreignKey':_0x2bcd('0x10b')});db[_0x2bcd('0x13')][_0x2bcd('0x10d')](db[_0x2bcd('0x19')],{'as':_0x2bcd('0x110'),'onDelete':_0x2bcd('0x10a'),'hooks':!![]});db[_0x2bcd('0x13')][_0x2bcd('0x10d')](db[_0x2bcd('0x70')],{'as':'HopperFinals','foreignKey':_0x2bcd('0x10b')});db[_0x2bcd('0x13')][_0x2bcd('0x10d')](db[_0x2bcd('0x111')],{'as':'HopperHistory','foreignKey':'UserId'});db[_0x2bcd('0x13')][_0x2bcd('0x10d')](db[_0x2bcd('0x73')],{'as':_0x2bcd('0x73'),'foreignKey':'UserId'});db['User'][_0x2bcd('0x10d')](db[_0x2bcd('0x5a')],{'as':'OpenchannelInteractions','foreignKey':_0x2bcd('0x10b')});db[_0x2bcd('0x13')][_0x2bcd('0x10d')](db[_0x2bcd('0x63')],{'as':_0x2bcd('0x112'),'foreignKey':_0x2bcd('0x10b')});db[_0x2bcd('0x13')][_0x2bcd('0x10d')](db[_0x2bcd('0x113')],{'as':_0x2bcd('0x114'),'foreignKey':_0x2bcd('0x10b')});db[_0x2bcd('0x13')]['hasMany'](db[_0x2bcd('0x115')],{'as':_0x2bcd('0x116'),'foreignKey':'UserId'});db['User'][_0x2bcd('0x10d')](db[_0x2bcd('0x43')],{'as':'MailInteractions','foreignKey':_0x2bcd('0x10b')});db[_0x2bcd('0x13')][_0x2bcd('0x10d')](db[_0x2bcd('0xfb')],{'as':_0x2bcd('0x117'),'foreignKey':_0x2bcd('0x10b')});db[_0x2bcd('0x13')][_0x2bcd('0x10d')](db[_0x2bcd('0xf5')],{'as':'UserNotifications','foreignKey':'SenderId'});db[_0x2bcd('0x13')][_0x2bcd('0x118')](db['UserProfile'],{'as':_0x2bcd('0xf3'),'foreignKey':_0x2bcd('0x119')});db[_0x2bcd('0x13')][_0x2bcd('0x11a')](db[_0x2bcd('0x67')],{'as':_0x2bcd('0x11b'),'through':_0x2bcd('0x11c')});db[_0x2bcd('0x13')]['belongsToMany'](db[_0x2bcd('0x6d')],{'as':_0x2bcd('0x11d'),'through':'cm_user_has_contacts'});db[_0x2bcd('0x13')][_0x2bcd('0x11a')](db[_0x2bcd('0xef')],{'as':_0x2bcd('0x11e'),'through':_0x2bcd('0x11f')});db[_0x2bcd('0x13')][_0x2bcd('0x11a')](db[_0x2bcd('0x120')],{'through':_0x2bcd('0x121')});db[_0x2bcd('0x13')][_0x2bcd('0x11a')](db[_0x2bcd('0x43')],{'as':_0x2bcd('0x122'),'through':_0x2bcd('0x123')});db[_0x2bcd('0x13')][_0x2bcd('0x11a')](db[_0x2bcd('0x63')],{'as':_0x2bcd('0x112'),'through':_0x2bcd('0x124')});db[_0x2bcd('0x13')][_0x2bcd('0x11a')](db[_0x2bcd('0x115')],{'as':_0x2bcd('0x116'),'through':_0x2bcd('0x125')});db[_0x2bcd('0x13')][_0x2bcd('0x11a')](db[_0x2bcd('0x113')],{'as':_0x2bcd('0x114'),'through':'user_has_sms_interactions'});db[_0x2bcd('0x13')]['belongsToMany'](db[_0x2bcd('0x5a')],{'as':_0x2bcd('0x126'),'through':'user_has_openchannel_interactions'});db[_0x2bcd('0x13')][_0x2bcd('0x11a')](db[_0x2bcd('0xfb')],{'as':_0x2bcd('0x117'),'through':_0x2bcd('0x127')});db[_0x2bcd('0x13')][_0x2bcd('0x11a')](db[_0x2bcd('0x128')],{'as':_0x2bcd('0x129'),'through':_0x2bcd('0x31'),'required':![]});db['User'][_0x2bcd('0x11a')](db[_0x2bcd('0xf1')],{'as':_0x2bcd('0x12a'),'through':_0x2bcd('0x107'),'required':![]});db[_0x2bcd('0x13')][_0x2bcd('0x11a')](db['MailQueue'],{'as':_0x2bcd('0x12b'),'through':'UserMailQueue','required':![]});db[_0x2bcd('0x13')][_0x2bcd('0x11a')](db[_0x2bcd('0x12c')],{'as':_0x2bcd('0x12d'),'through':_0x2bcd('0x33'),'required':![],'hooks':!![]});db[_0x2bcd('0x13')][_0x2bcd('0x11a')](db['FaxQueue'],{'as':_0x2bcd('0x12e'),'through':'UserFaxQueue','required':![]});db[_0x2bcd('0x13')][_0x2bcd('0x11a')](db[_0x2bcd('0x57')],{'as':_0x2bcd('0x12f'),'through':_0x2bcd('0x130'),'required':![]});db[_0x2bcd('0x13')][_0x2bcd('0x11a')](db[_0x2bcd('0x5d')],{'as':_0x2bcd('0x131'),'through':_0x2bcd('0x39'),'required':![]});db[_0x2bcd('0x13')][_0x2bcd('0x11a')](db['WhatsappQueue'],{'as':_0x2bcd('0x132'),'through':_0x2bcd('0x3a'),'required':![]});db[_0x2bcd('0x13')]['belongsToMany'](db['CmList'],{'through':_0x2bcd('0x11f')});db[_0x2bcd('0x13')][_0x2bcd('0x11a')](db['ChatWebsite'],{'as':'ChatWebsites','through':_0x2bcd('0x133')});db[_0x2bcd('0x13')][_0x2bcd('0x11a')](db[_0x2bcd('0x4d')],{'as':'FaxAccounts','through':'user_has_fax_accounts'});db[_0x2bcd('0x13')][_0x2bcd('0x11a')](db[_0x2bcd('0x3f')],{'as':_0x2bcd('0x134'),'through':_0x2bcd('0x135')});db[_0x2bcd('0x13')][_0x2bcd('0x11a')](db[_0x2bcd('0x136')],{'as':_0x2bcd('0x137'),'through':_0x2bcd('0x138')});db['User'][_0x2bcd('0x11a')](db['SmsAccount'],{'as':_0x2bcd('0x139'),'through':'user_has_sms_accounts'});db[_0x2bcd('0x13')][_0x2bcd('0x11a')](db[_0x2bcd('0xf7')],{'as':_0x2bcd('0x13a'),'through':_0x2bcd('0x13b')});db[_0x2bcd('0x14')][_0x2bcd('0x10d')](db['VoiceExtension'],{'as':_0x2bcd('0x13c'),'onDelete':_0x2bcd('0x10a'),'foreignKey':_0x2bcd('0x13d')});db[_0x2bcd('0x17')][_0x2bcd('0x10d')](db[_0x2bcd('0x19')],{'onDelete':_0x2bcd('0x10a')});db[_0x2bcd('0x19')][_0x2bcd('0x10d')](db[_0x2bcd('0x19')],{'as':'Applications','onDelete':'cascade'});db[_0x2bcd('0x1b')][_0x2bcd('0x11a')](db[_0x2bcd('0x82')],{'as':_0x2bcd('0x13e'),'through':_0x2bcd('0x13f')});db[_0x2bcd('0x128')]['hasMany'](db[_0x2bcd('0x2f')],{'as':_0x2bcd('0x140'),'foreignKey':_0x2bcd('0x141')});db[_0x2bcd('0x128')][_0x2bcd('0x10d')](db['CmHopper'],{'as':_0x2bcd('0x142'),'foreignKey':_0x2bcd('0x141')});db[_0x2bcd('0x128')]['hasMany'](db[_0x2bcd('0x70')],{'as':_0x2bcd('0x143'),'foreignKey':_0x2bcd('0x141')});db[_0x2bcd('0x128')][_0x2bcd('0x10d')](db[_0x2bcd('0x111')],{'as':_0x2bcd('0x144'),'foreignKey':'VoiceQueueId'});db[_0x2bcd('0x128')][_0x2bcd('0x10d')](db['ReportAgentPreview'],{'as':_0x2bcd('0x73'),'foreignKey':_0x2bcd('0x141')});db['VoiceQueue']['hasMany'](db[_0x2bcd('0x6f')],{'as':'HopperBlacks','foreignKey':_0x2bcd('0x141')});db[_0x2bcd('0x128')][_0x2bcd('0x10d')](db[_0x2bcd('0xd0')],{'as':_0x2bcd('0x145'),'foreignKey':_0x2bcd('0x141')});db[_0x2bcd('0x128')][_0x2bcd('0x118')](db[_0x2bcd('0x2c')],{'as':'Trunk','foreignKey':'TrunkId'});db['VoiceQueue'][_0x2bcd('0x118')](db[_0x2bcd('0x2c')],{'as':'TrunkBackup','foreignKey':_0x2bcd('0x146')});db[_0x2bcd('0x128')]['belongsTo'](db[_0x2bcd('0x7c')],{'as':_0x2bcd('0x7c'),'foreignKey':'IntervalId'});db[_0x2bcd('0x128')][_0x2bcd('0x118')](db['Pause'],{'as':_0x2bcd('0x147'),'foreignKey':_0x2bcd('0x148')});db['VoiceQueue'][_0x2bcd('0x11a')](db[_0x2bcd('0xef')],{'as':'Lists','through':_0x2bcd('0x149')});db['VoiceQueue']['belongsToMany'](db[_0x2bcd('0x13')],{'as':'Agents','through':_0x2bcd('0x31')});db[_0x2bcd('0x128')][_0x2bcd('0x11a')](db[_0x2bcd('0x120')],{'as':_0x2bcd('0x14a'),'through':_0x2bcd('0x105')});db[_0x2bcd('0x128')][_0x2bcd('0x11a')](db[_0x2bcd('0xef')],{'as':'BlackLists','through':_0x2bcd('0x14b')});db[_0x2bcd('0x1e')][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{'as':_0x2bcd('0x13'),'foreignKey':'UserId'});db[_0x2bcd('0x1f')][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{'as':_0x2bcd('0x13'),'foreignKey':'UserId'});db[_0x2bcd('0x21')][_0x2bcd('0x10d')](db[_0x2bcd('0x22')],{'as':_0x2bcd('0x14c'),'onDelete':_0x2bcd('0x10a'),'foreignKey':_0x2bcd('0x14d'),'sourceKey':_0x2bcd('0x14e')});db[_0x2bcd('0x22')][_0x2bcd('0x118')](db['VoiceMail'],{'foreignKey':_0x2bcd('0x14d'),'targetKey':_0x2bcd('0x14e')});db[_0x2bcd('0x24')]['hasMany'](db[_0x2bcd('0x29')],{'as':_0x2bcd('0x14f'),'foreignKey':_0x2bcd('0x150'),'constraints':![]});db[_0x2bcd('0x24')][_0x2bcd('0x10d')](db[_0x2bcd('0x151')],{'as':_0x2bcd('0x152'),'foreignKey':_0x2bcd('0x150'),'constraints':![]});db[_0x2bcd('0x24')]['belongsTo'](db[_0x2bcd('0x13')],{'as':_0x2bcd('0x13'),'foreignKey':_0x2bcd('0x10b')});db[_0x2bcd('0x24')][_0x2bcd('0x118')](db[_0x2bcd('0x6d')],{'as':_0x2bcd('0x153'),'foreignKey':'ContactId'});db[_0x2bcd('0x154')][_0x2bcd('0x118')](db['MailAccount'],{'as':'MailAccount','foreignKey':_0x2bcd('0x155')});db['MailServerIn']['belongsTo'](db[_0x2bcd('0x156')],{'as':'CloudProvider','foreignKey':_0x2bcd('0x157'),'onDelete':_0x2bcd('0x158')});db[_0x2bcd('0x3d')]['belongsTo'](db[_0x2bcd('0x3f')],{'as':_0x2bcd('0x3f'),'foreignKey':'MailAccountId'});db[_0x2bcd('0x3d')]['belongsTo'](db[_0x2bcd('0x156')],{'as':_0x2bcd('0x156'),'foreignKey':_0x2bcd('0x157'),'onDelete':'restrict'});db['MailAccount'][_0x2bcd('0x159')](db[_0x2bcd('0x154')],{'as':_0x2bcd('0x15a'),'onDelete':_0x2bcd('0x10a')});db['MailAccount'][_0x2bcd('0x159')](db[_0x2bcd('0x3d')],{'as':_0x2bcd('0x15b'),'onDelete':_0x2bcd('0x10a')});db[_0x2bcd('0x3f')][_0x2bcd('0x10d')](db[_0x2bcd('0x15c')],{'as':'Dispositions','foreignKey':_0x2bcd('0x155'),'onDelete':_0x2bcd('0x10a')});db[_0x2bcd('0x3f')][_0x2bcd('0x10d')](db['CannedAnswer'],{'as':_0x2bcd('0x15d'),'foreignKey':_0x2bcd('0x155')});db['MailAccount']['hasMany'](db[_0x2bcd('0x15e')],{'as':'Messages','foreignKey':_0x2bcd('0x155')});db[_0x2bcd('0x3f')][_0x2bcd('0x10d')](db[_0x2bcd('0x43')],{'as':'Interactions'});db[_0x2bcd('0x3f')][_0x2bcd('0x10d')](db[_0x2bcd('0x45')],{'as':_0x2bcd('0x15f')});db['MailAccount'][_0x2bcd('0x118')](db[_0x2bcd('0xef')],{'as':_0x2bcd('0x160'),'foreignKey':_0x2bcd('0x161')});db[_0x2bcd('0x3f')][_0x2bcd('0x118')](db[_0x2bcd('0x87')],{'as':_0x2bcd('0x87'),'foreignKey':_0x2bcd('0x162')});db[_0x2bcd('0x3f')][_0x2bcd('0x118')](db[_0x2bcd('0x163')],{'as':'mandatoryDispositionPause','foreignKey':_0x2bcd('0x148')});db[_0x2bcd('0x3f')]['belongsToMany'](db[_0x2bcd('0x13')],{'as':_0x2bcd('0x164'),'through':'user_has_mail_accounts'});db[_0x2bcd('0x41')][_0x2bcd('0x11a')](db[_0x2bcd('0x13')],{'as':_0x2bcd('0x164'),'through':_0x2bcd('0x165')});db['MailQueue']['belongsToMany'](db['Team'],{'through':_0x2bcd('0x166'),'as':_0x2bcd('0x14a')});db[_0x2bcd('0x43')][_0x2bcd('0x10d')](db[_0x2bcd('0x15e')],{'as':_0x2bcd('0x14c'),'onDelete':'cascade','foreignKey':_0x2bcd('0x167')});db[_0x2bcd('0x43')][_0x2bcd('0x118')](db[_0x2bcd('0x3f')],{'as':'Account','foreignKey':_0x2bcd('0x155')});db[_0x2bcd('0x43')][_0x2bcd('0x118')](db['CmContact'],{'as':_0x2bcd('0x153'),'foreignKey':'ContactId'});db['MailInteraction'][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{'as':'Owner','foreignKey':_0x2bcd('0x10b')});db['MailInteraction'][_0x2bcd('0x11a')](db[_0x2bcd('0x168')],{'through':_0x2bcd('0x169'),'as':_0x2bcd('0x16a')});db[_0x2bcd('0x43')][_0x2bcd('0x11a')](db[_0x2bcd('0x168')],{'through':_0x2bcd('0x169'),'as':_0x2bcd('0x16b')});db['MailInteraction'][_0x2bcd('0x11a')](db['User'],{'as':_0x2bcd('0x16c'),'through':_0x2bcd('0x123'),'foreignKey':_0x2bcd('0x167')});db[_0x2bcd('0x15e')][_0x2bcd('0x10d')](db['Attachment'],{'as':_0x2bcd('0x16d'),'onDelete':_0x2bcd('0x10a')});db[_0x2bcd('0x15e')][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{'as':_0x2bcd('0x13')});db['MailMessage'][_0x2bcd('0x118')](db[_0x2bcd('0x6d')],{'onDelete':'cascade','as':_0x2bcd('0x153')});db[_0x2bcd('0x15e')][_0x2bcd('0x118')](db[_0x2bcd('0x43')],{'as':_0x2bcd('0x16e'),'foreignKey':_0x2bcd('0x167')});db[_0x2bcd('0x15e')][_0x2bcd('0x118')](db[_0x2bcd('0x3f')],{'as':_0x2bcd('0x16f'),'foreignKey':_0x2bcd('0x155')});db['MailMessage'][_0x2bcd('0x118')](db[_0x2bcd('0x5f')],{'as':_0x2bcd('0x5f'),'foreignKey':_0x2bcd('0x170')});db[_0x2bcd('0x15e')][_0x2bcd('0x118')](db['ChatOfflineMessage'],{'as':_0x2bcd('0x66'),'foreignKey':_0x2bcd('0x171')});db[_0x2bcd('0x45')][_0x2bcd('0x118')](db['User'],{'onDelete':'restrict'});db[_0x2bcd('0x45')]['belongsTo'](db['MailQueue'],{'onDelete':_0x2bcd('0x158')});db[_0x2bcd('0x45')][_0x2bcd('0x118')](db[_0x2bcd('0x3f')],{'onDelete':_0x2bcd('0x158')});db[_0x2bcd('0x45')][_0x2bcd('0x118')](db[_0x2bcd('0x7c')],{'onDelete':_0x2bcd('0x158'),'foreignKey':_0x2bcd('0x172')});db[_0x2bcd('0x45')][_0x2bcd('0x118')](db[_0x2bcd('0x168')],{'onDelete':'restrict','foreignKey':'TagId'});db[_0x2bcd('0x47')][_0x2bcd('0x118')](db[_0x2bcd('0x3f')],{});db['MailQueueReport'][_0x2bcd('0x118')](db[_0x2bcd('0xef')],{'as':_0x2bcd('0x160'),'foreignKey':_0x2bcd('0x161')});db['MailQueueReport'][_0x2bcd('0x118')](db[_0x2bcd('0x6d')],{'as':'Contact','foreignKey':_0x2bcd('0x173')});db[_0x2bcd('0x47')][_0x2bcd('0x118')](db[_0x2bcd('0x43')],{});db[_0x2bcd('0x47')][_0x2bcd('0x118')](db['MailMessage'],{});db['MailQueueReport'][_0x2bcd('0x118')](db['User'],{});db['MailQueueReport'][_0x2bcd('0x118')](db[_0x2bcd('0x41')],{});db[_0x2bcd('0x49')]['hasMany'](db[_0x2bcd('0x4b')],{'as':_0x2bcd('0x174'),'onDelete':_0x2bcd('0x10a')});db[_0x2bcd('0x4d')][_0x2bcd('0x10d')](db[_0x2bcd('0x15c')],{'as':'Dispositions','foreignKey':_0x2bcd('0x175'),'onDelete':_0x2bcd('0x10a')});db['FaxAccount']['hasMany'](db[_0x2bcd('0x78')],{'as':_0x2bcd('0x15d'),'foreignKey':'FaxAccountId'});db[_0x2bcd('0x4d')][_0x2bcd('0x10d')](db[_0x2bcd('0x115')],{'as':'Interactions'});db[_0x2bcd('0x4d')]['hasMany'](db[_0x2bcd('0x176')],{'as':_0x2bcd('0x15f')});db[_0x2bcd('0x4d')][_0x2bcd('0x10d')](db[_0x2bcd('0x19')],{'as':'Exntensions','onDelete':_0x2bcd('0x10a')});db[_0x2bcd('0x4d')][_0x2bcd('0x10d')](db[_0x2bcd('0x177')],{'as':_0x2bcd('0x14c')});db[_0x2bcd('0x4d')]['belongsTo'](db['Trunk'],{'as':_0x2bcd('0x2c')});db[_0x2bcd('0x4d')][_0x2bcd('0x118')](db['CmList'],{'as':_0x2bcd('0x160'),'foreignKey':'ListId'});db[_0x2bcd('0x4d')][_0x2bcd('0x118')](db[_0x2bcd('0x163')],{'as':'mandatoryDispositionPause','foreignKey':_0x2bcd('0x148')});db[_0x2bcd('0x4d')][_0x2bcd('0x11a')](db[_0x2bcd('0x13')],{'as':_0x2bcd('0x164'),'through':_0x2bcd('0x178')});db[_0x2bcd('0x176')][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{'onDelete':_0x2bcd('0x158')});db['FaxApplication'][_0x2bcd('0x118')](db[_0x2bcd('0x179')],{'onDelete':_0x2bcd('0x158')});db['FaxApplication'][_0x2bcd('0x118')](db[_0x2bcd('0x4d')],{'onDelete':'restrict'});db[_0x2bcd('0x176')]['belongsTo'](db['Tag'],{'onDelete':_0x2bcd('0x158'),'foreignKey':_0x2bcd('0x17a')});db[_0x2bcd('0x115')]['hasMany'](db[_0x2bcd('0x177')],{'as':_0x2bcd('0x14c'),'onDelete':_0x2bcd('0x10a'),'foreignKey':_0x2bcd('0x17b')});db[_0x2bcd('0x115')][_0x2bcd('0x118')](db[_0x2bcd('0x4d')],{'as':_0x2bcd('0x16f'),'foreignKey':_0x2bcd('0x175')});db[_0x2bcd('0x115')][_0x2bcd('0x118')](db[_0x2bcd('0x6d')],{'as':'Contact','foreignKey':'ContactId'});db[_0x2bcd('0x115')][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{'as':_0x2bcd('0x17c'),'foreignKey':_0x2bcd('0x10b')});db[_0x2bcd('0x115')][_0x2bcd('0x11a')](db[_0x2bcd('0x168')],{'through':'fax_interaction_has_tags','as':_0x2bcd('0x16a')});db[_0x2bcd('0x115')][_0x2bcd('0x11a')](db[_0x2bcd('0x168')],{'through':_0x2bcd('0x17d'),'as':'ThroughTags'});db[_0x2bcd('0x115')]['belongsToMany'](db[_0x2bcd('0x13')],{'as':_0x2bcd('0x16c'),'through':_0x2bcd('0x125'),'foreignKey':_0x2bcd('0x17b')});db[_0x2bcd('0x177')][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{'onDelete':_0x2bcd('0x10a'),'as':_0x2bcd('0x13')});db[_0x2bcd('0x177')][_0x2bcd('0x118')](db[_0x2bcd('0x115')],{'as':_0x2bcd('0x16e'),'foreignKey':'FaxInteractionId'});db[_0x2bcd('0x177')][_0x2bcd('0x118')](db['CmContact'],{'onDelete':'cascade','as':'Contact'});db[_0x2bcd('0x177')][_0x2bcd('0x118')](db[_0x2bcd('0xe6')],{'as':_0x2bcd('0xe6'),'foreignKey':'AttachmentId'});db[_0x2bcd('0x177')]['belongsTo'](db['FaxAccount'],{'as':_0x2bcd('0x16f'),'foreignKey':_0x2bcd('0x175')});db[_0x2bcd('0x179')][_0x2bcd('0x11a')](db['User'],{'as':_0x2bcd('0x164'),'through':_0x2bcd('0x36')});db[_0x2bcd('0x179')][_0x2bcd('0x11a')](db[_0x2bcd('0x120')],{'through':_0x2bcd('0x17e'),'as':_0x2bcd('0x14a')});db[_0x2bcd('0x17f')][_0x2bcd('0x118')](db[_0x2bcd('0x4d')],{});db[_0x2bcd('0x17f')][_0x2bcd('0x118')](db['CmList'],{'as':'List','foreignKey':_0x2bcd('0x161')});db[_0x2bcd('0x17f')][_0x2bcd('0x118')](db[_0x2bcd('0x6d')],{'as':_0x2bcd('0x153'),'foreignKey':_0x2bcd('0x173')});db[_0x2bcd('0x17f')][_0x2bcd('0x118')](db[_0x2bcd('0x115')],{});db['FaxQueueReport'][_0x2bcd('0x118')](db[_0x2bcd('0x177')],{});db[_0x2bcd('0x17f')][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{});db[_0x2bcd('0x17f')][_0x2bcd('0x118')](db['FaxQueue'],{});db[_0x2bcd('0x180')][_0x2bcd('0x10d')](db[_0x2bcd('0x15c')],{'as':_0x2bcd('0x181'),'foreignKey':'SmsAccountId','onDelete':_0x2bcd('0x10a')});db[_0x2bcd('0x180')][_0x2bcd('0x10d')](db['CannedAnswer'],{'as':_0x2bcd('0x15d'),'foreignKey':_0x2bcd('0x182')});db[_0x2bcd('0x180')][_0x2bcd('0x10d')](db[_0x2bcd('0x55')],{'as':_0x2bcd('0x14c'),'foreignKey':'SmsAccountId'});db[_0x2bcd('0x180')]['hasMany'](db['SmsInteraction'],{'as':_0x2bcd('0x183')});db[_0x2bcd('0x180')]['hasMany'](db[_0x2bcd('0x52')],{'as':_0x2bcd('0x15f')});db['SmsAccount'][_0x2bcd('0x118')](db[_0x2bcd('0xef')],{'as':_0x2bcd('0x160'),'foreignKey':_0x2bcd('0x161')});db[_0x2bcd('0x180')][_0x2bcd('0x118')](db[_0x2bcd('0x163')],{'as':_0x2bcd('0x147'),'foreignKey':_0x2bcd('0x148')});db[_0x2bcd('0x180')][_0x2bcd('0x11a')](db['User'],{'as':'Agents','through':'user_has_sms_accounts'});db[_0x2bcd('0x52')][_0x2bcd('0x118')](db['User'],{'onDelete':_0x2bcd('0x158')});db['SmsApplication']['belongsTo'](db[_0x2bcd('0x57')],{'onDelete':_0x2bcd('0x158')});db['SmsApplication'][_0x2bcd('0x118')](db['SmsAccount'],{'onDelete':'restrict'});db[_0x2bcd('0x52')][_0x2bcd('0x118')](db['Interval'],{'onDelete':_0x2bcd('0x158'),'foreignKey':'IntervalId'});db[_0x2bcd('0x52')][_0x2bcd('0x118')](db[_0x2bcd('0x168')],{'onDelete':_0x2bcd('0x158'),'foreignKey':'TagId'});db[_0x2bcd('0x113')][_0x2bcd('0x10d')](db[_0x2bcd('0x55')],{'as':_0x2bcd('0x14c'),'onDelete':_0x2bcd('0x10a'),'foreignKey':'SmsInteractionId'});db[_0x2bcd('0x113')]['belongsTo'](db[_0x2bcd('0x180')],{'as':_0x2bcd('0x16f'),'foreignKey':_0x2bcd('0x182')});db[_0x2bcd('0x113')][_0x2bcd('0x118')](db[_0x2bcd('0x6d')],{'as':_0x2bcd('0x153'),'foreignKey':_0x2bcd('0x173')});db[_0x2bcd('0x113')][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{'as':_0x2bcd('0x17c'),'foreignKey':_0x2bcd('0x10b')});db['SmsInteraction'][_0x2bcd('0x11a')](db[_0x2bcd('0x168')],{'through':'sms_interaction_has_tags','as':_0x2bcd('0x16a')});db[_0x2bcd('0x113')][_0x2bcd('0x11a')](db[_0x2bcd('0x168')],{'through':_0x2bcd('0x184'),'as':_0x2bcd('0x16b')});db[_0x2bcd('0x113')][_0x2bcd('0x11a')](db[_0x2bcd('0x13')],{'as':_0x2bcd('0x16c'),'through':_0x2bcd('0x185'),'foreignKey':_0x2bcd('0x186')});db[_0x2bcd('0x55')][_0x2bcd('0x118')](db['User'],{'as':'User'});db[_0x2bcd('0x55')]['belongsTo'](db[_0x2bcd('0x6d')],{'onDelete':_0x2bcd('0x10a'),'as':_0x2bcd('0x153')});db[_0x2bcd('0x55')]['belongsTo'](db[_0x2bcd('0x113')],{'onDelete':_0x2bcd('0x10a'),'as':_0x2bcd('0x16e'),'foreignKey':_0x2bcd('0x186')});db[_0x2bcd('0x55')]['belongsTo'](db[_0x2bcd('0x180')],{'as':_0x2bcd('0x16f'),'foreignKey':_0x2bcd('0x182')});db[_0x2bcd('0x57')]['belongsToMany'](db['User'],{'as':_0x2bcd('0x164'),'through':_0x2bcd('0x130'),'foreignKey':_0x2bcd('0x187')});db[_0x2bcd('0x57')]['belongsToMany'](db[_0x2bcd('0x120')],{'through':'team_has_sms_queues','as':_0x2bcd('0x14a')});db['OpenchannelAccount'][_0x2bcd('0x10d')](db[_0x2bcd('0x15c')],{'as':_0x2bcd('0x181'),'foreignKey':_0x2bcd('0x188'),'onDelete':_0x2bcd('0x10a')});db[_0x2bcd('0x136')][_0x2bcd('0x10d')](db[_0x2bcd('0x78')],{'as':_0x2bcd('0x15d'),'foreignKey':_0x2bcd('0x188')});db['OpenchannelAccount'][_0x2bcd('0x10d')](db[_0x2bcd('0x5a')],{'as':_0x2bcd('0x183'),'foreignKey':'OpenchannelAccountId'});db[_0x2bcd('0x136')][_0x2bcd('0x10d')](db[_0x2bcd('0x189')],{'as':_0x2bcd('0x14c'),'foreignKey':_0x2bcd('0x188')});db[_0x2bcd('0x136')][_0x2bcd('0x10d')](db[_0x2bcd('0x18a')],{'as':_0x2bcd('0x15f'),'foreignKey':_0x2bcd('0x188')});db[_0x2bcd('0x136')][_0x2bcd('0x118')](db[_0x2bcd('0xef')],{'as':_0x2bcd('0x160'),'foreignKey':'ListId'});db[_0x2bcd('0x136')][_0x2bcd('0x118')](db[_0x2bcd('0x163')],{'as':_0x2bcd('0x147'),'foreignKey':_0x2bcd('0x148')});db[_0x2bcd('0x136')][_0x2bcd('0x11a')](db[_0x2bcd('0x13')],{'as':'Agents','through':_0x2bcd('0x138')});db['OpenchannelApplication'][_0x2bcd('0x118')](db['User'],{'onDelete':_0x2bcd('0x158')});db[_0x2bcd('0x18a')]['belongsTo'](db['OpenchannelQueue'],{'onDelete':_0x2bcd('0x158'),'foreignKey':_0x2bcd('0x18b')});db[_0x2bcd('0x18a')][_0x2bcd('0x118')](db[_0x2bcd('0x136')],{'onDelete':_0x2bcd('0x158'),'foreignKey':_0x2bcd('0x188')});db[_0x2bcd('0x18a')][_0x2bcd('0x118')](db['Interval'],{'onDelete':'restrict','foreignKey':_0x2bcd('0x172')});db[_0x2bcd('0x18a')][_0x2bcd('0x118')](db['Tag'],{'onDelete':_0x2bcd('0x158'),'foreignKey':'TagId'});db[_0x2bcd('0x5a')][_0x2bcd('0x10d')](db['OpenchannelMessage'],{'as':_0x2bcd('0x14c'),'onDelete':'cascade','foreignKey':_0x2bcd('0x18c')});db[_0x2bcd('0x5a')][_0x2bcd('0x118')](db[_0x2bcd('0x136')],{'as':_0x2bcd('0x16f'),'foreignKey':_0x2bcd('0x188')});db[_0x2bcd('0x5a')]['belongsTo'](db[_0x2bcd('0x6d')],{'as':'Contact','foreignKey':'ContactId'});db[_0x2bcd('0x5a')]['belongsTo'](db[_0x2bcd('0x13')],{'as':'Owner','foreignKey':_0x2bcd('0x10b')});db['OpenchannelInteraction']['belongsToMany'](db['Tag'],{'through':'openchannel_interaction_has_tags','as':'Tags'});db[_0x2bcd('0x5a')][_0x2bcd('0x11a')](db['Tag'],{'through':_0x2bcd('0x18d'),'as':_0x2bcd('0x16b')});db[_0x2bcd('0x5a')][_0x2bcd('0x11a')](db[_0x2bcd('0x13')],{'as':_0x2bcd('0x16c'),'through':_0x2bcd('0x18e'),'foreignKey':'OpenchannelInteractionId'});db['OpenchannelMessage']['belongsTo'](db[_0x2bcd('0x13')],{'onDelete':'cascade','as':_0x2bcd('0x13')});db['OpenchannelMessage'][_0x2bcd('0x118')](db[_0x2bcd('0x6d')],{'onDelete':_0x2bcd('0x10a'),'as':_0x2bcd('0x153')});db[_0x2bcd('0x189')]['belongsTo'](db[_0x2bcd('0x5a')],{'onDelete':_0x2bcd('0x10a'),'as':_0x2bcd('0x16e'),'foreignKey':_0x2bcd('0x18c')});db[_0x2bcd('0x189')][_0x2bcd('0x118')](db['Attachment'],{'as':_0x2bcd('0xe6'),'foreignKey':_0x2bcd('0x18f')});db['OpenchannelMessage'][_0x2bcd('0x118')](db['OpenchannelAccount'],{'as':_0x2bcd('0x16f'),'foreignKey':'OpenchannelAccountId'});db['OpenchannelQueue']['belongsToMany'](db[_0x2bcd('0x13')],{'as':_0x2bcd('0x164'),'through':_0x2bcd('0x39'),'foreignKey':_0x2bcd('0x18b')});db['OpenchannelQueue'][_0x2bcd('0x11a')](db[_0x2bcd('0x120')],{'through':_0x2bcd('0x190'),'as':_0x2bcd('0x14a')});db[_0x2bcd('0x5f')][_0x2bcd('0x10d')](db['Disposition'],{'as':'Dispositions','foreignKey':_0x2bcd('0x170'),'onDelete':_0x2bcd('0x10a')});db[_0x2bcd('0x5f')][_0x2bcd('0x10d')](db[_0x2bcd('0x78')],{'as':'Answers','foreignKey':_0x2bcd('0x170')});db['ChatWebsite'][_0x2bcd('0x10d')](db[_0x2bcd('0x69')],{'as':_0x2bcd('0x191')});db[_0x2bcd('0x5f')][_0x2bcd('0x10d')](db[_0x2bcd('0x63')],{'as':_0x2bcd('0x183')});db[_0x2bcd('0x5f')][_0x2bcd('0x10d')](db['ChatApplication'],{'as':'Applications'});db[_0x2bcd('0x5f')][_0x2bcd('0x10d')](db[_0x2bcd('0x192')],{'as':_0x2bcd('0x14c')});db[_0x2bcd('0x5f')]['belongsTo'](db[_0x2bcd('0xef')],{'as':_0x2bcd('0x160'),'foreignKey':'ListId'});db[_0x2bcd('0x5f')][_0x2bcd('0x118')](db[_0x2bcd('0x7c')],{'as':_0x2bcd('0x7c'),'foreignKey':'IntervalId'});db[_0x2bcd('0x5f')]['belongsTo'](db['MailAccount'],{'as':'MailAccount','foreignKey':_0x2bcd('0x155')});db[_0x2bcd('0x5f')][_0x2bcd('0x118')](db['Pause'],{'as':_0x2bcd('0x147'),'foreignKey':'mandatoryDispositionPauseId'});db[_0x2bcd('0x5f')][_0x2bcd('0x11a')](db[_0x2bcd('0x13')],{'as':'Agents','through':_0x2bcd('0x133')});db[_0x2bcd('0x61')][_0x2bcd('0x118')](db[_0x2bcd('0x136')],{});db[_0x2bcd('0x61')]['belongsTo'](db[_0x2bcd('0xef')],{'as':'List','foreignKey':'ListId'});db['OpenchannelQueueReport']['belongsTo'](db[_0x2bcd('0x6d')],{'as':'Contact','foreignKey':'ContactId'});db[_0x2bcd('0x61')][_0x2bcd('0x118')](db[_0x2bcd('0x5a')],{});db['OpenchannelQueueReport']['belongsTo'](db['OpenchannelMessage'],{});db[_0x2bcd('0x61')][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{});db['OpenchannelQueueReport'][_0x2bcd('0x118')](db['OpenchannelQueue'],{});db['ChatApplication'][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{'as':_0x2bcd('0x193'),'foreignKey':_0x2bcd('0x10b'),'onDelete':_0x2bcd('0x158')});db[_0x2bcd('0x62')][_0x2bcd('0x118')](db[_0x2bcd('0x12c')],{'as':_0x2bcd('0x194'),'foreignKey':_0x2bcd('0x195'),'onDelete':'restrict'});db[_0x2bcd('0x62')][_0x2bcd('0x118')](db['ChatWebsite'],{'as':_0x2bcd('0x196'),'foreignKey':_0x2bcd('0x170'),'onDelete':_0x2bcd('0x158')});db[_0x2bcd('0x62')][_0x2bcd('0x118')](db[_0x2bcd('0x168')],{'onDelete':_0x2bcd('0x158'),'foreignKey':_0x2bcd('0x17a')});db[_0x2bcd('0x63')][_0x2bcd('0x10d')](db['ChatMessage'],{'as':'Messages','onDelete':'cascade','foreignKey':'ChatInteractionId'});db[_0x2bcd('0x63')][_0x2bcd('0x118')](db[_0x2bcd('0x5f')],{'as':_0x2bcd('0x16f'),'foreignKey':_0x2bcd('0x170')});db['ChatInteraction'][_0x2bcd('0x118')](db[_0x2bcd('0x6d')],{'as':_0x2bcd('0x153'),'foreignKey':_0x2bcd('0x173')});db['ChatInteraction'][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{'as':_0x2bcd('0x17c'),'foreignKey':_0x2bcd('0x10b')});db['ChatInteraction']['belongsToMany'](db['Tag'],{'through':_0x2bcd('0x197'),'as':_0x2bcd('0x16a')});db[_0x2bcd('0x63')][_0x2bcd('0x11a')](db[_0x2bcd('0x168')],{'through':_0x2bcd('0x197'),'as':_0x2bcd('0x16b')});db[_0x2bcd('0x63')][_0x2bcd('0x11a')](db[_0x2bcd('0x13')],{'as':'Users','through':_0x2bcd('0x124'),'foreignKey':'ChatInteractionId'});db[_0x2bcd('0x192')][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{'onDelete':'cascade','as':_0x2bcd('0x13')});db[_0x2bcd('0x192')]['belongsTo'](db[_0x2bcd('0x6d')],{'onDelete':_0x2bcd('0x10a'),'as':_0x2bcd('0x153'),'foreignKey':_0x2bcd('0x173')});db[_0x2bcd('0x192')][_0x2bcd('0x118')](db[_0x2bcd('0x63')],{'onDelete':'cascade','as':_0x2bcd('0x16e'),'foreignKey':_0x2bcd('0x198')});db[_0x2bcd('0x192')][_0x2bcd('0x118')](db[_0x2bcd('0xe6')],{'as':_0x2bcd('0xe6'),'foreignKey':'AttachmentId'});db[_0x2bcd('0x192')]['belongsTo'](db[_0x2bcd('0x5f')],{'as':_0x2bcd('0x16f'),'foreignKey':_0x2bcd('0x170')});db[_0x2bcd('0x66')][_0x2bcd('0x10d')](db[_0x2bcd('0xe6')],{'as':_0x2bcd('0x16d'),'foreignKey':'ChatOfflineMessageId','onDelete':'cascade','hooks':!![]});db[_0x2bcd('0x66')][_0x2bcd('0x118')](db[_0x2bcd('0x6d')],{'onDelete':_0x2bcd('0x10a'),'as':_0x2bcd('0x153'),'foreignKey':_0x2bcd('0x173')});db[_0x2bcd('0x66')][_0x2bcd('0x118')](db['ChatWebsite'],{'as':_0x2bcd('0x16f'),'foreignKey':_0x2bcd('0x170')});db['ChatQueue'][_0x2bcd('0x11a')](db['User'],{'as':_0x2bcd('0x164'),'through':_0x2bcd('0x33'),'hooks':!![]});db[_0x2bcd('0x12c')][_0x2bcd('0x11a')](db[_0x2bcd('0x120')],{'through':_0x2bcd('0x199'),'as':_0x2bcd('0x14a')});db[_0x2bcd('0x67')][_0x2bcd('0x10d')](db[_0x2bcd('0xca')],{'as':_0x2bcd('0x14c'),'foreignKey':_0x2bcd('0x19a'),'onDelete':'cascade'});db[_0x2bcd('0x67')]['belongsToMany'](db[_0x2bcd('0x13')],{'as':_0x2bcd('0x140'),'through':_0x2bcd('0x11c')});db['ChatProactiveAction']['belongsTo'](db[_0x2bcd('0x5f')],{'as':_0x2bcd('0x196'),'foreignKey':'ChatWebsiteId'});db['CmCompany'][_0x2bcd('0x10d')](db['CmContact'],{'as':_0x2bcd('0x11d'),'foreignKey':'CompanyId'});db[_0x2bcd('0x6d')][_0x2bcd('0x10d')](db[_0x2bcd('0x86')],{'as':_0x2bcd('0x19b'),'foreignKey':_0x2bcd('0x19c')});db['CmContact'][_0x2bcd('0x10d')](db[_0x2bcd('0x19d')],{'as':_0x2bcd('0x142'),'foreignKey':_0x2bcd('0x173')});db['CmContact'][_0x2bcd('0x10d')](db[_0x2bcd('0x70')],{'as':_0x2bcd('0x143'),'foreignKey':'ContactId'});db[_0x2bcd('0x6d')][_0x2bcd('0x10d')](db[_0x2bcd('0x111')],{'as':_0x2bcd('0x144'),'foreignKey':_0x2bcd('0x173')});db[_0x2bcd('0x6d')][_0x2bcd('0x10d')](db['ReportAgentPreview'],{'as':'ReportAgentPreview','foreignKey':_0x2bcd('0x173')});db[_0x2bcd('0x6d')][_0x2bcd('0x10d')](db['JscriptySessionReport'],{'as':_0x2bcd('0x145'),'foreignKey':_0x2bcd('0x173')});db['CmContact'][_0x2bcd('0x10d')](db[_0x2bcd('0x5a')],{'as':_0x2bcd('0x126'),'foreignKey':_0x2bcd('0x173'),'onDelete':_0x2bcd('0x158')});db[_0x2bcd('0x6d')]['hasMany'](db[_0x2bcd('0x63')],{'as':'ChatInteractions','foreignKey':_0x2bcd('0x173'),'onDelete':_0x2bcd('0x158')});db['CmContact']['hasMany'](db[_0x2bcd('0x113')],{'as':'SmsInteractions','foreignKey':_0x2bcd('0x173'),'onDelete':_0x2bcd('0x158')});db['CmContact'][_0x2bcd('0x10d')](db[_0x2bcd('0x115')],{'as':_0x2bcd('0x116'),'foreignKey':_0x2bcd('0x173'),'onDelete':_0x2bcd('0x158')});db[_0x2bcd('0x6d')][_0x2bcd('0x10d')](db[_0x2bcd('0x43')],{'as':_0x2bcd('0x122'),'foreignKey':_0x2bcd('0x173'),'onDelete':_0x2bcd('0x158')});db[_0x2bcd('0x6d')][_0x2bcd('0x118')](db[_0x2bcd('0x6b')],{'as':'Company','foreignKey':'CompanyId'});db[_0x2bcd('0x6d')][_0x2bcd('0x118')](db[_0x2bcd('0xef')],{'as':_0x2bcd('0x160'),'foreignKey':_0x2bcd('0x161'),'onDelete':_0x2bcd('0x10a')});db['CmContact']['belongsToMany'](db[_0x2bcd('0x13')],{'as':_0x2bcd('0x16c'),'through':_0x2bcd('0x19e')});db[_0x2bcd('0x6d')][_0x2bcd('0x11a')](db['Tag'],{'as':_0x2bcd('0x16a'),'through':_0x2bcd('0x19f')});db[_0x2bcd('0x6d')][_0x2bcd('0x11a')](db[_0x2bcd('0x168')],{'through':_0x2bcd('0x19f'),'as':_0x2bcd('0x16b')});db[_0x2bcd('0x19d')][_0x2bcd('0x10d')](db['CmHopperAdditionalPhone'],{'as':_0x2bcd('0x1a0'),'foreignKey':_0x2bcd('0x1a1')});db[_0x2bcd('0x19d')][_0x2bcd('0x118')](db['CmContact'],{'as':_0x2bcd('0x153'),'foreignKey':_0x2bcd('0x173'),'onDelete':_0x2bcd('0x10a')});db[_0x2bcd('0x19d')][_0x2bcd('0x118')](db[_0x2bcd('0xef')],{'as':_0x2bcd('0x160'),'foreignKey':_0x2bcd('0x161'),'onDelete':_0x2bcd('0x10a')});db[_0x2bcd('0x19d')][_0x2bcd('0x118')](db['User'],{'as':_0x2bcd('0x193'),'foreignKey':'UserId'});db['CmHopper'][_0x2bcd('0x118')](db['VoiceQueue'],{'as':'Queue','foreignKey':_0x2bcd('0x141'),'onDelete':_0x2bcd('0x10a')});db[_0x2bcd('0x19d')][_0x2bcd('0x118')](db['Campaign'],{'as':'Campaign','foreignKey':'CampaignId','onDelete':_0x2bcd('0x10a')});db[_0x2bcd('0x19d')][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{'as':_0x2bcd('0x17c'),'foreignKey':_0x2bcd('0x1a2')});db[_0x2bcd('0x6f')][_0x2bcd('0x118')](db['CmContact'],{'as':_0x2bcd('0x153'),'foreignKey':_0x2bcd('0x173'),'onDelete':'cascade'});db[_0x2bcd('0x6f')]['belongsTo'](db[_0x2bcd('0xef')],{'as':_0x2bcd('0x160'),'foreignKey':'ListId','onDelete':_0x2bcd('0x10a')});db[_0x2bcd('0x6f')]['belongsTo'](db[_0x2bcd('0x128')],{'as':_0x2bcd('0x194'),'foreignKey':_0x2bcd('0x141'),'onDelete':'cascade'});db['CmHopperBlack'][_0x2bcd('0x118')](db[_0x2bcd('0xe2')],{'as':_0x2bcd('0xe2'),'foreignKey':_0x2bcd('0x1a3'),'onDelete':'cascade'});db[_0x2bcd('0x76')][_0x2bcd('0x10d')](db['Condition'],{'as':{'plural':'All','singular':_0x2bcd('0x1a4')},'foreignKey':_0x2bcd('0x1a5'),'onDelete':_0x2bcd('0x10a'),'hooks':!![]});db['Automation'][_0x2bcd('0x10d')](db[_0x2bcd('0x1a6')],{'as':{'plural':_0x2bcd('0x1a7'),'singular':_0x2bcd('0x1a8')},'foreignKey':'AutomationAnyId','onDelete':'cascade','hooks':!![]});db[_0x2bcd('0x76')]['hasMany'](db[_0x2bcd('0x75')],{'as':_0x2bcd('0x1a9'),'foreignKey':_0x2bcd('0x1aa'),'onDelete':_0x2bcd('0x10a'),'hooks':!![]});db[_0x2bcd('0x15c')][_0x2bcd('0x10d')](db[_0x2bcd('0x15c')],{'as':_0x2bcd('0x181'),'foreignKey':_0x2bcd('0x1ab'),'onDelete':_0x2bcd('0x10a')});db[_0x2bcd('0x7c')][_0x2bcd('0x10d')](db['Interval'],{'as':'Intervals','foreignKey':'IntervalId','onDelete':_0x2bcd('0x10a'),'hooks':!![],'required':![]});db['Interval'][_0x2bcd('0x10d')](db['VoiceExtension'],{'as':_0x2bcd('0x110'),'foreignKey':_0x2bcd('0x172'),'onDelete':_0x2bcd('0x158')});db[_0x2bcd('0x7c')][_0x2bcd('0x10d')](db[_0x2bcd('0x45')],{'as':_0x2bcd('0x1ac'),'foreignKey':_0x2bcd('0x172')});db[_0x2bcd('0x7c')]['hasMany'](db[_0x2bcd('0x62')],{'as':_0x2bcd('0x1ad'),'foreignKey':_0x2bcd('0x172')});db[_0x2bcd('0x7c')][_0x2bcd('0x10d')](db[_0x2bcd('0x176')],{'as':_0x2bcd('0x1ae'),'foreignKey':_0x2bcd('0x172')});db[_0x2bcd('0x7c')]['hasMany'](db[_0x2bcd('0x52')],{'as':_0x2bcd('0x1af'),'foreignKey':_0x2bcd('0x172')});db['Schedule'][_0x2bcd('0x118')](db[_0x2bcd('0x3f')],{});db[_0x2bcd('0x1b0')][_0x2bcd('0x118')](db[_0x2bcd('0x1b1')],{'foreignKey':_0x2bcd('0x1b2')});db[_0x2bcd('0x1b0')][_0x2bcd('0x118')](db['AnalyticCustomReport'],{'foreignKey':_0x2bcd('0x1b3')});db['Sound']['belongsToMany'](db[_0x2bcd('0x1b')],{'as':'Mohs','through':_0x2bcd('0x13f'),'onDelete':_0x2bcd('0x158')});db['Tag'][_0x2bcd('0x11a')](db[_0x2bcd('0x6d')],{'through':'cm_contact_has_tags'});db['Tag'][_0x2bcd('0x11a')](db[_0x2bcd('0x63')],{'through':_0x2bcd('0x197')});db[_0x2bcd('0x168')][_0x2bcd('0x11a')](db[_0x2bcd('0x43')],{'through':_0x2bcd('0x169')});db[_0x2bcd('0x168')]['belongsToMany'](db[_0x2bcd('0x113')],{'through':_0x2bcd('0x184')});db['Tag'][_0x2bcd('0x11a')](db[_0x2bcd('0x115')],{'through':_0x2bcd('0x17d')});db[_0x2bcd('0x168')][_0x2bcd('0x11a')](db[_0x2bcd('0x5a')],{'through':_0x2bcd('0x18d')});db['Tag'][_0x2bcd('0x11a')](db[_0x2bcd('0xfb')],{'through':'whatsapp_interaction_has_tags'});db[_0x2bcd('0x86')][_0x2bcd('0x118')](db['ContactItemType'],{'as':_0x2bcd('0x1b4'),'foreignKey':'ItemTypeId'});db[_0x2bcd('0x1b5')][_0x2bcd('0x118')](db['CmHopper'],{'as':_0x2bcd('0x1b6'),'foreignKey':'CmHopperId'});db[_0x2bcd('0x86')][_0x2bcd('0x118')](db[_0x2bcd('0x6d')],{'as':'Contact','foreignKey':_0x2bcd('0x19c')});db[_0x2bcd('0x1b7')][_0x2bcd('0x10d')](db[_0x2bcd('0x1a6')],{'as':{'plural':_0x2bcd('0x1b8'),'singular':_0x2bcd('0x1b9')},'foreignKey':_0x2bcd('0x1ba'),'onDelete':_0x2bcd('0x10a'),'hooks':!![]});db['Trigger'][_0x2bcd('0x10d')](db['Condition'],{'as':{'plural':_0x2bcd('0x1bb'),'singular':_0x2bcd('0x1bc')},'foreignKey':'TriggerAnyId','onDelete':_0x2bcd('0x10a'),'hooks':!![]});db[_0x2bcd('0x1b7')]['hasMany'](db[_0x2bcd('0x75')],{'as':_0x2bcd('0x1a9'),'foreignKey':'TriggerId','onDelete':_0x2bcd('0x10a'),'hooks':!![]});db[_0x2bcd('0x1bd')][_0x2bcd('0x10d')](db['AnalyticFieldReport'],{'as':_0x2bcd('0x1be'),'onDelete':_0x2bcd('0x10a'),'foreignKey':'CustomReportId','hooks':!![]});db[_0x2bcd('0x1b1')][_0x2bcd('0x10d')](db['AnalyticFieldReport'],{'as':'Fields','onDelete':'cascade','foreignKey':'DefaultReportId'});db[_0x2bcd('0x91')]['hasMany'](db['AnalyticFieldReport'],{'as':_0x2bcd('0x1be'),'onDelete':'cascade','foreignKey':'MetricId'});db[_0x2bcd('0x92')][_0x2bcd('0x118')](db[_0x2bcd('0x91')],{'foreignKey':_0x2bcd('0x1bf')});db[_0x2bcd('0x95')][_0x2bcd('0x10d')](db['SalesforceConfiguration'],{'as':_0x2bcd('0x1c0'),'onDelete':_0x2bcd('0x10a'),'foreignKey':_0x2bcd('0x1c1')});db[_0x2bcd('0x97')][_0x2bcd('0x10d')](db[_0x2bcd('0x1c2')],{'as':_0x2bcd('0x1c3'),'onDelete':'cascade','foreignKey':_0x2bcd('0x1c4')});db[_0x2bcd('0x97')][_0x2bcd('0x10d')](db[_0x2bcd('0x1c2')],{'as':_0x2bcd('0x1c5'),'onDelete':_0x2bcd('0x10a'),'foreignKey':_0x2bcd('0x1c6')});db[_0x2bcd('0x97')][_0x2bcd('0x10d')](db[_0x2bcd('0x1c2')],{'as':'Fields','onDelete':_0x2bcd('0x10a'),'foreignKey':_0x2bcd('0x1c7')});db[_0x2bcd('0x97')][_0x2bcd('0x118')](db[_0x2bcd('0x95')],{'as':_0x2bcd('0x16f'),'foreignKey':_0x2bcd('0x1c1')});db[_0x2bcd('0x1c2')][_0x2bcd('0x10d')](db['SalesforceField'],{'as':_0x2bcd('0x1c8'),'foreignKey':_0x2bcd('0x1c4')});db[_0x2bcd('0x1c2')]['hasMany'](db[_0x2bcd('0x1c2')],{'as':_0x2bcd('0x1c9'),'foreignKey':_0x2bcd('0x1c6')});db['SalesforceField'][_0x2bcd('0x10d')](db[_0x2bcd('0x1c2')],{'as':_0x2bcd('0x1ca'),'foreignKey':_0x2bcd('0x1c7')});db[_0x2bcd('0x1c2')]['belongsTo'](db[_0x2bcd('0x8a')],{'as':_0x2bcd('0x8a'),'foreignKey':_0x2bcd('0x1cb')});db[_0x2bcd('0x1cc')][_0x2bcd('0x10d')](db[_0x2bcd('0x9a')],{'as':_0x2bcd('0x1c0'),'onDelete':'cascade','foreignKey':_0x2bcd('0x1c1')});db[_0x2bcd('0x9a')][_0x2bcd('0x10d')](db[_0x2bcd('0x9c')],{'as':'Subjects','onDelete':_0x2bcd('0x10a'),'foreignKey':_0x2bcd('0x1c4')});db[_0x2bcd('0x9a')][_0x2bcd('0x10d')](db['SugarcrmField'],{'as':_0x2bcd('0x1c5'),'onDelete':_0x2bcd('0x10a'),'foreignKey':_0x2bcd('0x1c6')});db['SugarcrmConfiguration'][_0x2bcd('0x10d')](db[_0x2bcd('0x9c')],{'as':_0x2bcd('0x1be'),'onDelete':_0x2bcd('0x10a'),'foreignKey':_0x2bcd('0x1c7')});db['SugarcrmConfiguration'][_0x2bcd('0x118')](db[_0x2bcd('0x1cc')],{'as':_0x2bcd('0x16f'),'foreignKey':'AccountId'});db['SugarcrmField'][_0x2bcd('0x10d')](db['SugarcrmField'],{'as':'Subject','foreignKey':'SubjectId'});db[_0x2bcd('0x9c')][_0x2bcd('0x10d')](db[_0x2bcd('0x9c')],{'as':_0x2bcd('0x1c9'),'foreignKey':'DescriptionId'});db[_0x2bcd('0x9c')][_0x2bcd('0x10d')](db[_0x2bcd('0x9c')],{'as':_0x2bcd('0x1ca'),'foreignKey':_0x2bcd('0x1c7')});db[_0x2bcd('0x9c')][_0x2bcd('0x118')](db[_0x2bcd('0x8a')],{'as':'Variable','foreignKey':_0x2bcd('0x1cb')});db['DeskAccount'][_0x2bcd('0x10d')](db[_0x2bcd('0xa0')],{'as':_0x2bcd('0x1c0'),'onDelete':'cascade','foreignKey':_0x2bcd('0x1c1')});db[_0x2bcd('0xa0')]['hasMany'](db['DeskField'],{'as':_0x2bcd('0x1c3'),'onDelete':_0x2bcd('0x10a'),'foreignKey':'SubjectId'});db[_0x2bcd('0xa0')][_0x2bcd('0x10d')](db[_0x2bcd('0xa2')],{'as':_0x2bcd('0x1c5'),'onDelete':'cascade','foreignKey':'DescriptionId'});db[_0x2bcd('0xa0')][_0x2bcd('0x10d')](db[_0x2bcd('0xa2')],{'as':_0x2bcd('0x1be'),'onDelete':'cascade','foreignKey':'FieldId'});db[_0x2bcd('0xa0')][_0x2bcd('0x118')](db['DeskAccount'],{'as':_0x2bcd('0x16f'),'foreignKey':_0x2bcd('0x1c1')});db[_0x2bcd('0xa0')]['belongsToMany'](db[_0x2bcd('0x168')],{'through':'int_desk_configuration_has_tags'});db[_0x2bcd('0xa2')]['hasMany'](db[_0x2bcd('0xa2')],{'as':_0x2bcd('0x1c8'),'foreignKey':_0x2bcd('0x1c4')});db['DeskField'][_0x2bcd('0x10d')](db[_0x2bcd('0xa2')],{'as':_0x2bcd('0x1c9'),'foreignKey':_0x2bcd('0x1c6')});db['DeskField'][_0x2bcd('0x10d')](db[_0x2bcd('0xa2')],{'as':'Field','foreignKey':'FieldId'});db['DeskField'][_0x2bcd('0x118')](db[_0x2bcd('0x8a')],{'as':'Variable','foreignKey':_0x2bcd('0x1cb')});db[_0x2bcd('0xa4')][_0x2bcd('0x10d')](db[_0x2bcd('0x1cd')],{'as':_0x2bcd('0x1c0'),'onDelete':_0x2bcd('0x10a'),'foreignKey':_0x2bcd('0x1c1')});db[_0x2bcd('0x1cd')][_0x2bcd('0x10d')](db[_0x2bcd('0x1ce')],{'as':_0x2bcd('0x1c3'),'onDelete':_0x2bcd('0x10a'),'foreignKey':'SubjectId'});db[_0x2bcd('0x1cd')][_0x2bcd('0x10d')](db['ZohoField'],{'as':_0x2bcd('0x1c5'),'onDelete':_0x2bcd('0x10a'),'foreignKey':'DescriptionId'});db['ZohoConfiguration'][_0x2bcd('0x10d')](db[_0x2bcd('0x1ce')],{'as':_0x2bcd('0x1be'),'onDelete':_0x2bcd('0x10a'),'foreignKey':_0x2bcd('0x1c7')});db[_0x2bcd('0x1cd')][_0x2bcd('0x118')](db[_0x2bcd('0xa4')],{'as':'Account','foreignKey':'AccountId'});db[_0x2bcd('0x1ce')][_0x2bcd('0x10d')](db[_0x2bcd('0x1ce')],{'as':_0x2bcd('0x1c8'),'foreignKey':'SubjectId'});db['ZohoField'][_0x2bcd('0x10d')](db['ZohoField'],{'as':_0x2bcd('0x1c9'),'foreignKey':_0x2bcd('0x1c6')});db['ZohoField'][_0x2bcd('0x10d')](db[_0x2bcd('0x1ce')],{'as':_0x2bcd('0x1ca'),'foreignKey':'FieldId'});db[_0x2bcd('0x1ce')][_0x2bcd('0x118')](db[_0x2bcd('0x8a')],{'as':_0x2bcd('0x8a'),'foreignKey':_0x2bcd('0x1cb')});db[_0x2bcd('0x1cf')][_0x2bcd('0x10d')](db[_0x2bcd('0xa7')],{'as':_0x2bcd('0x1c0'),'onDelete':_0x2bcd('0x10a'),'foreignKey':_0x2bcd('0x1c1')});db['ZendeskConfiguration'][_0x2bcd('0x10d')](db[_0x2bcd('0xa9')],{'as':_0x2bcd('0x1c3'),'foreignKey':_0x2bcd('0x1c4')});db[_0x2bcd('0xa7')][_0x2bcd('0x10d')](db[_0x2bcd('0xa9')],{'as':'Descriptions','foreignKey':_0x2bcd('0x1c6')});db[_0x2bcd('0xa7')][_0x2bcd('0x10d')](db[_0x2bcd('0xa9')],{'as':'Fields','foreignKey':_0x2bcd('0x1c7')});db[_0x2bcd('0xa7')][_0x2bcd('0x118')](db[_0x2bcd('0x1cf')],{'as':_0x2bcd('0x16f'),'foreignKey':_0x2bcd('0x1c1')});db[_0x2bcd('0xa7')][_0x2bcd('0x11a')](db[_0x2bcd('0x168')],{'through':'int_zendesk_configuration_has_tags'});db[_0x2bcd('0xa9')][_0x2bcd('0x10d')](db[_0x2bcd('0xa9')],{'as':_0x2bcd('0x1c8'),'foreignKey':'SubjectId'});db[_0x2bcd('0xa9')][_0x2bcd('0x10d')](db[_0x2bcd('0xa9')],{'as':_0x2bcd('0x1c9'),'foreignKey':_0x2bcd('0x1c6')});db['ZendeskField'][_0x2bcd('0x10d')](db[_0x2bcd('0xa9')],{'as':_0x2bcd('0x1ca'),'foreignKey':_0x2bcd('0x1c7')});db[_0x2bcd('0xa9')]['belongsTo'](db[_0x2bcd('0x8a')],{'as':_0x2bcd('0x8a'),'foreignKey':'VariableId'});db['FreshdeskAccount'][_0x2bcd('0x10d')](db[_0x2bcd('0xac')],{'as':_0x2bcd('0x1c0'),'onDelete':_0x2bcd('0x10a'),'foreignKey':'AccountId'});db['FreshdeskConfiguration']['hasMany'](db[_0x2bcd('0xae')],{'as':_0x2bcd('0x1c3'),'onDelete':_0x2bcd('0x10a'),'foreignKey':_0x2bcd('0x1c4')});db[_0x2bcd('0xac')][_0x2bcd('0x10d')](db[_0x2bcd('0xae')],{'as':'Descriptions','onDelete':_0x2bcd('0x10a'),'foreignKey':_0x2bcd('0x1c6')});db['FreshdeskConfiguration']['hasMany'](db[_0x2bcd('0xae')],{'as':_0x2bcd('0x1be'),'onDelete':_0x2bcd('0x10a'),'foreignKey':_0x2bcd('0x1c7')});db[_0x2bcd('0xac')]['belongsTo'](db[_0x2bcd('0x1d0')],{'as':_0x2bcd('0x16f'),'foreignKey':_0x2bcd('0x1c1')});db['FreshdeskConfiguration'][_0x2bcd('0x11a')](db[_0x2bcd('0x168')],{'through':_0x2bcd('0x1d1')});db[_0x2bcd('0xae')]['hasMany'](db['FreshdeskField'],{'as':'Subject','foreignKey':'SubjectId'});db['FreshdeskField']['hasMany'](db['FreshdeskField'],{'as':_0x2bcd('0x1c9'),'foreignKey':_0x2bcd('0x1c6')});db['FreshdeskField']['hasMany'](db[_0x2bcd('0xae')],{'as':_0x2bcd('0x1ca'),'foreignKey':_0x2bcd('0x1c7')});db[_0x2bcd('0xae')][_0x2bcd('0x118')](db[_0x2bcd('0x8a')],{'as':'Variable','foreignKey':_0x2bcd('0x1cb')});db[_0x2bcd('0xb0')][_0x2bcd('0x10d')](db[_0x2bcd('0xb1')],{'as':_0x2bcd('0x1c0'),'onDelete':_0x2bcd('0x10a'),'foreignKey':'AccountId'});db[_0x2bcd('0xb1')][_0x2bcd('0x10d')](db[_0x2bcd('0xb2')],{'as':'Subjects','foreignKey':_0x2bcd('0x1c4')});db[_0x2bcd('0xb1')][_0x2bcd('0x10d')](db[_0x2bcd('0xb2')],{'as':_0x2bcd('0x1c5'),'foreignKey':_0x2bcd('0x1c6')});db[_0x2bcd('0xb1')][_0x2bcd('0x10d')](db[_0x2bcd('0xb2')],{'as':'Fields','foreignKey':_0x2bcd('0x1c7')});db[_0x2bcd('0xb1')][_0x2bcd('0x118')](db[_0x2bcd('0xb0')],{'as':_0x2bcd('0x16f'),'foreignKey':'AccountId'});db[_0x2bcd('0xb2')][_0x2bcd('0x10d')](db[_0x2bcd('0xb2')],{'as':_0x2bcd('0x1c8'),'foreignKey':_0x2bcd('0x1c4')});db[_0x2bcd('0xb2')]['hasMany'](db[_0x2bcd('0xb2')],{'as':_0x2bcd('0x1c9'),'foreignKey':'DescriptionId'});db[_0x2bcd('0xb2')]['hasMany'](db['VtigerField'],{'as':_0x2bcd('0x1ca'),'foreignKey':'FieldId'});db[_0x2bcd('0xb2')][_0x2bcd('0x118')](db['Variable'],{'as':_0x2bcd('0x8a'),'foreignKey':'VariableId'});db[_0x2bcd('0xb4')][_0x2bcd('0x10d')](db[_0x2bcd('0xb6')],{'as':'Configurations','onDelete':'cascade','foreignKey':_0x2bcd('0x1c1')});db['ServicenowConfiguration'][_0x2bcd('0x10d')](db[_0x2bcd('0xb8')],{'as':_0x2bcd('0x1c3'),'foreignKey':_0x2bcd('0x1c4')});db[_0x2bcd('0xb6')][_0x2bcd('0x10d')](db[_0x2bcd('0xb8')],{'as':'Descriptions','foreignKey':'DescriptionId'});db[_0x2bcd('0xb6')][_0x2bcd('0x10d')](db[_0x2bcd('0xb8')],{'as':_0x2bcd('0x1be'),'foreignKey':_0x2bcd('0x1c7')});db[_0x2bcd('0xb6')][_0x2bcd('0x118')](db[_0x2bcd('0xb4')],{'as':_0x2bcd('0x16f'),'foreignKey':_0x2bcd('0x1c1')});db[_0x2bcd('0xb8')][_0x2bcd('0x10d')](db[_0x2bcd('0xb8')],{'as':_0x2bcd('0x1c8'),'foreignKey':_0x2bcd('0x1c4')});db[_0x2bcd('0xb8')][_0x2bcd('0x10d')](db['ServicenowField'],{'as':'Description','foreignKey':_0x2bcd('0x1c6')});db[_0x2bcd('0xb8')][_0x2bcd('0x10d')](db['ServicenowField'],{'as':_0x2bcd('0x1ca'),'foreignKey':_0x2bcd('0x1c7')});db[_0x2bcd('0xb8')][_0x2bcd('0x118')](db[_0x2bcd('0x8a')],{'as':_0x2bcd('0x8a'),'foreignKey':_0x2bcd('0x1cb')});db[_0x2bcd('0xba')][_0x2bcd('0x10d')](db[_0x2bcd('0xbb')],{'as':_0x2bcd('0x1c0'),'onDelete':_0x2bcd('0x10a'),'foreignKey':_0x2bcd('0x1c1')});db['Dynamics365Account'][_0x2bcd('0x118')](db[_0x2bcd('0x156')],{'as':_0x2bcd('0x156'),'foreignKey':'CloudProviderId'});db[_0x2bcd('0xbb')][_0x2bcd('0x10d')](db[_0x2bcd('0xbd')],{'as':'Subjects','onDelete':_0x2bcd('0x10a'),'foreignKey':_0x2bcd('0x1c4')});db[_0x2bcd('0xbb')][_0x2bcd('0x10d')](db[_0x2bcd('0xbd')],{'as':_0x2bcd('0x1c5'),'onDelete':'cascade','foreignKey':_0x2bcd('0x1c6')});db[_0x2bcd('0xbb')]['hasMany'](db[_0x2bcd('0xbd')],{'as':'Fields','onDelete':_0x2bcd('0x10a'),'foreignKey':_0x2bcd('0x1c7')});db['Dynamics365Configuration'][_0x2bcd('0x118')](db[_0x2bcd('0xba')],{'as':'Account','foreignKey':'AccountId'});db['Dynamics365Field'][_0x2bcd('0x10d')](db['Dynamics365Field'],{'as':_0x2bcd('0x1c8'),'foreignKey':_0x2bcd('0x1c4')});db['Dynamics365Field']['hasMany'](db[_0x2bcd('0xbd')],{'as':_0x2bcd('0x1c9'),'foreignKey':_0x2bcd('0x1c6')});db[_0x2bcd('0xbd')][_0x2bcd('0x10d')](db[_0x2bcd('0xbd')],{'as':'Field','foreignKey':_0x2bcd('0x1c7')});db[_0x2bcd('0xbd')]['belongsTo'](db['Variable'],{'as':_0x2bcd('0x8a'),'foreignKey':_0x2bcd('0x1cb')});db['FreshsalesAccount'][_0x2bcd('0x10d')](db[_0x2bcd('0xc1')],{'as':_0x2bcd('0x1c0'),'onDelete':_0x2bcd('0x10a'),'foreignKey':_0x2bcd('0x1c1')});db[_0x2bcd('0xc1')]['hasMany'](db['FreshsalesField'],{'as':_0x2bcd('0x1c3'),'foreignKey':'SubjectId'});db[_0x2bcd('0xc1')][_0x2bcd('0x10d')](db[_0x2bcd('0xc3')],{'as':_0x2bcd('0x1c5'),'foreignKey':_0x2bcd('0x1c6')});db[_0x2bcd('0xc1')][_0x2bcd('0x10d')](db['FreshsalesField'],{'as':'Fields','foreignKey':_0x2bcd('0x1c7')});db[_0x2bcd('0xc1')][_0x2bcd('0x118')](db['FreshsalesAccount'],{'as':_0x2bcd('0x16f'),'foreignKey':'AccountId'});db[_0x2bcd('0xc3')][_0x2bcd('0x10d')](db[_0x2bcd('0xc3')],{'as':_0x2bcd('0x1c8'),'foreignKey':_0x2bcd('0x1c4')});db[_0x2bcd('0xc3')][_0x2bcd('0x10d')](db['FreshsalesField'],{'as':'Description','foreignKey':'DescriptionId'});db[_0x2bcd('0xc3')][_0x2bcd('0x10d')](db[_0x2bcd('0xc3')],{'as':_0x2bcd('0x1ca'),'foreignKey':'FieldId'});db[_0x2bcd('0xc3')][_0x2bcd('0x118')](db['Variable'],{'as':'Variable','foreignKey':_0x2bcd('0x1cb')});db[_0x2bcd('0xc9')][_0x2bcd('0x118')](db[_0x2bcd('0x5f')],{});db[_0x2bcd('0xc9')][_0x2bcd('0x118')](db[_0x2bcd('0xef')],{'as':_0x2bcd('0x160'),'foreignKey':_0x2bcd('0x161')});db[_0x2bcd('0xc9')][_0x2bcd('0x118')](db[_0x2bcd('0x6d')],{'as':_0x2bcd('0x153'),'foreignKey':_0x2bcd('0x173')});db[_0x2bcd('0xc9')][_0x2bcd('0x118')](db[_0x2bcd('0x63')],{});db[_0x2bcd('0xc9')]['belongsTo'](db['ChatMessage'],{});db[_0x2bcd('0xc9')][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{});db[_0x2bcd('0xc9')][_0x2bcd('0x118')](db[_0x2bcd('0x12c')],{});db[_0x2bcd('0xca')][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{'onDelete':_0x2bcd('0x10a'),'foreignKey':'FromId'});db[_0x2bcd('0xca')][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{'onDelete':_0x2bcd('0x10a'),'foreignKey':_0x2bcd('0x1d2')});db[_0x2bcd('0xd0')][_0x2bcd('0x10d')](db[_0x2bcd('0xce')],{'foreignKey':_0x2bcd('0x1d3'),'onDelete':'cascade'});db['JscriptySessionReport'][_0x2bcd('0x10d')](db[_0x2bcd('0xcc')],{'foreignKey':_0x2bcd('0x1d3'),'onDelete':_0x2bcd('0x10a')});db[_0x2bcd('0xd2')][_0x2bcd('0x118')](db[_0x2bcd('0x180')],{});db[_0x2bcd('0xd2')]['belongsTo'](db['CmList'],{'as':_0x2bcd('0x160'),'foreignKey':_0x2bcd('0x161')});db['SmsQueueReport'][_0x2bcd('0x118')](db[_0x2bcd('0x6d')],{'as':'Contact','foreignKey':_0x2bcd('0x173')});db[_0x2bcd('0xd2')][_0x2bcd('0x118')](db[_0x2bcd('0x113')],{});db[_0x2bcd('0xd2')][_0x2bcd('0x118')](db[_0x2bcd('0x55')],{});db[_0x2bcd('0xd2')][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{});db[_0x2bcd('0xd2')][_0x2bcd('0x118')](db[_0x2bcd('0x57')],{});db[_0x2bcd('0xd7')][_0x2bcd('0x10d')](db[_0x2bcd('0xd0')],{'foreignKey':_0x2bcd('0x1d4')});db['JscriptyProject'][_0x2bcd('0x10d')](db[_0x2bcd('0xce')],{'foreignKey':'ProjectId'});db[_0x2bcd('0xd7')]['hasMany'](db[_0x2bcd('0xcc')],{'foreignKey':'ProjectId'});db[_0x2bcd('0x120')][_0x2bcd('0x11a')](db[_0x2bcd('0x13')],{'as':'Agents','through':_0x2bcd('0x121')});db[_0x2bcd('0x120')][_0x2bcd('0x11a')](db[_0x2bcd('0x128')],{'through':_0x2bcd('0x105'),'as':'VoiceQueues'});db[_0x2bcd('0x120')]['belongsToMany'](db[_0x2bcd('0x41')],{'through':_0x2bcd('0x166'),'as':_0x2bcd('0x12b')});db[_0x2bcd('0x120')][_0x2bcd('0x11a')](db[_0x2bcd('0x12c')],{'through':_0x2bcd('0x199'),'as':'ChatQueues'});db['Team'][_0x2bcd('0x11a')](db['FaxQueue'],{'through':_0x2bcd('0x17e'),'as':'FaxQueues'});db[_0x2bcd('0x120')][_0x2bcd('0x11a')](db[_0x2bcd('0x57')],{'through':_0x2bcd('0x1d5'),'as':_0x2bcd('0x12f')});db[_0x2bcd('0x120')][_0x2bcd('0x11a')](db[_0x2bcd('0x5d')],{'through':'team_has_openchannel_queues','as':_0x2bcd('0x131')});db['Team'][_0x2bcd('0x11a')](db[_0x2bcd('0x102')],{'through':'team_has_whatsapp_queues','as':_0x2bcd('0x132')});db['Team'][_0x2bcd('0x11a')](db['VoicePrefix'],{'through':_0x2bcd('0x1d6'),'as':_0x2bcd('0x12a')});db['Campaign'][_0x2bcd('0x10d')](db[_0x2bcd('0x19d')],{'as':_0x2bcd('0x142'),'foreignKey':_0x2bcd('0x1a3')});db[_0x2bcd('0xe2')][_0x2bcd('0x10d')](db['CmHopperFinal'],{'as':_0x2bcd('0x143'),'foreignKey':_0x2bcd('0x1a3')});db[_0x2bcd('0xe2')][_0x2bcd('0x10d')](db[_0x2bcd('0x111')],{'as':'HopperHistories','foreignKey':_0x2bcd('0x1a3')});db[_0x2bcd('0xe2')]['hasMany'](db[_0x2bcd('0x6f')],{'as':'HopperBlacks','foreignKey':_0x2bcd('0x1a3')});db['Campaign']['belongsTo'](db['Trunk'],{'as':_0x2bcd('0x2c'),'foreignKey':_0x2bcd('0x1d7')});db['Campaign'][_0x2bcd('0x118')](db['Trunk'],{'as':_0x2bcd('0x1d8'),'foreignKey':_0x2bcd('0x146')});db[_0x2bcd('0xe2')]['belongsTo'](db['Interval'],{'as':'Interval','foreignKey':_0x2bcd('0x172')});db[_0x2bcd('0xe2')]['belongsTo'](db[_0x2bcd('0x1d9')],{'as':'SquareProject','foreignKey':_0x2bcd('0x1da')});db[_0x2bcd('0xe2')]['belongsToMany'](db[_0x2bcd('0xef')],{'as':'Lists','through':'campaigns_has_cm_lists'});db[_0x2bcd('0xe2')]['belongsToMany'](db['CmList'],{'as':'BlackLists','through':_0x2bcd('0x1db')});db[_0x2bcd('0xe6')][_0x2bcd('0x118')](db['ChatOfflineMessage'],{'as':_0x2bcd('0x66'),'foreignKey':_0x2bcd('0x171')});db[_0x2bcd('0x1dc')]['belongsTo'](db['MailMessage'],{});db[_0x2bcd('0x1dc')][_0x2bcd('0x118')](db[_0x2bcd('0x43')],{});db['MailTransferReport']['belongsTo'](db[_0x2bcd('0x3f')],{'foreignKey':_0x2bcd('0x1dd'),'as':_0x2bcd('0x1de')});db[_0x2bcd('0x1dc')][_0x2bcd('0x118')](db['User'],{'foreignKey':_0x2bcd('0x1df'),'as':'FromAgent'});db['MailTransferReport'][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{'foreignKey':_0x2bcd('0x1e0'),'as':_0x2bcd('0x1e1')});db[_0x2bcd('0x1dc')][_0x2bcd('0x118')](db[_0x2bcd('0x41')],{'foreignKey':_0x2bcd('0x1e2'),'as':_0x2bcd('0x1e3')});db[_0x2bcd('0x1dc')]['belongsTo'](db['MailAccount'],{'foreignKey':_0x2bcd('0x1e4'),'as':_0x2bcd('0x1e5')});db[_0x2bcd('0xea')][_0x2bcd('0x118')](db['ChatMessage'],{});db['ChatTransferReport'][_0x2bcd('0x118')](db[_0x2bcd('0x63')],{});db[_0x2bcd('0xea')]['belongsTo'](db[_0x2bcd('0x5f')],{'foreignKey':_0x2bcd('0x1e6'),'as':'FromAccount'});db[_0x2bcd('0xea')][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{'foreignKey':_0x2bcd('0x1df'),'as':'FromAgent'});db[_0x2bcd('0xea')][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{'foreignKey':'ToUserId','as':'ToAgent'});db[_0x2bcd('0xea')][_0x2bcd('0x118')](db['ChatQueue'],{'foreignKey':_0x2bcd('0x1e7'),'as':_0x2bcd('0x1e3')});db[_0x2bcd('0xea')]['belongsTo'](db[_0x2bcd('0x5f')],{'foreignKey':_0x2bcd('0x1e8'),'as':_0x2bcd('0x1e5')});db[_0x2bcd('0x1e9')]['belongsTo'](db[_0x2bcd('0x177')],{});db[_0x2bcd('0x1e9')][_0x2bcd('0x118')](db['FaxInteraction'],{});db[_0x2bcd('0x1e9')][_0x2bcd('0x118')](db[_0x2bcd('0x4d')],{'foreignKey':'FromFaxAccountId','as':_0x2bcd('0x1de')});db[_0x2bcd('0x1e9')][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{'foreignKey':_0x2bcd('0x1df'),'as':_0x2bcd('0x1ea')});db['FaxTransferReport'][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{'foreignKey':_0x2bcd('0x1e0'),'as':'ToAgent'});db[_0x2bcd('0x1e9')][_0x2bcd('0x118')](db[_0x2bcd('0x179')],{'foreignKey':_0x2bcd('0x1eb'),'as':_0x2bcd('0x1e3')});db['FaxTransferReport'][_0x2bcd('0x118')](db[_0x2bcd('0x4d')],{'foreignKey':_0x2bcd('0x1ec'),'as':_0x2bcd('0x1e5')});db['OpenchannelTransferReport'][_0x2bcd('0x118')](db['OpenchannelMessage'],{});db[_0x2bcd('0x1ed')]['belongsTo'](db[_0x2bcd('0x5a')],{});db[_0x2bcd('0x1ed')][_0x2bcd('0x118')](db[_0x2bcd('0x136')],{'foreignKey':_0x2bcd('0x1ee'),'as':'FromAccount'});db['OpenchannelTransferReport']['belongsTo'](db[_0x2bcd('0x13')],{'foreignKey':_0x2bcd('0x1df'),'as':_0x2bcd('0x1ea')});db['OpenchannelTransferReport'][_0x2bcd('0x118')](db['User'],{'foreignKey':_0x2bcd('0x1e0'),'as':_0x2bcd('0x1e1')});db[_0x2bcd('0x1ed')]['belongsTo'](db[_0x2bcd('0x5d')],{'foreignKey':_0x2bcd('0x1ef'),'as':'ToQueue'});db[_0x2bcd('0x1ed')][_0x2bcd('0x118')](db[_0x2bcd('0x136')],{'foreignKey':_0x2bcd('0x1f0'),'as':'ToAccount'});db[_0x2bcd('0xed')]['belongsTo'](db[_0x2bcd('0x55')],{});db['SmsTransferReport'][_0x2bcd('0x118')](db['SmsInteraction'],{});db[_0x2bcd('0xed')]['belongsTo'](db[_0x2bcd('0x180')],{'foreignKey':'FromSmsAccountId','as':_0x2bcd('0x1de')});db[_0x2bcd('0xed')][_0x2bcd('0x118')](db['User'],{'foreignKey':_0x2bcd('0x1df'),'as':_0x2bcd('0x1ea')});db[_0x2bcd('0xed')]['belongsTo'](db[_0x2bcd('0x13')],{'foreignKey':_0x2bcd('0x1e0'),'as':_0x2bcd('0x1e1')});db['SmsTransferReport'][_0x2bcd('0x118')](db[_0x2bcd('0x57')],{'foreignKey':_0x2bcd('0x1f1'),'as':_0x2bcd('0x1e3')});db[_0x2bcd('0xed')][_0x2bcd('0x118')](db['SmsAccount'],{'foreignKey':_0x2bcd('0x1f2'),'as':_0x2bcd('0x1e5')});db['CmList'][_0x2bcd('0x10d')](db['Disposition'],{'as':_0x2bcd('0x181'),'foreignKey':_0x2bcd('0x161'),'onDelete':'cascade'});db[_0x2bcd('0xef')][_0x2bcd('0x10d')](db['CmCustomField'],{'as':_0x2bcd('0x1f3'),'foreignKey':_0x2bcd('0x161')});db[_0x2bcd('0xef')]['hasMany'](db[_0x2bcd('0x6d')],{'as':'Contacts','onDelete':'cascade','foreignKey':_0x2bcd('0x161')});db['CmList'][_0x2bcd('0x10d')](db[_0x2bcd('0x70')],{'as':_0x2bcd('0x143'),'foreignKey':_0x2bcd('0x161')});db['CmList']['hasMany'](db['CmHopperHistory'],{'as':'HopperHistory','foreignKey':_0x2bcd('0x161')});db[_0x2bcd('0xef')][_0x2bcd('0x10d')](db[_0x2bcd('0x73')],{'as':_0x2bcd('0x73'),'foreignKey':_0x2bcd('0x161')});db[_0x2bcd('0xef')]['belongsToMany'](db[_0x2bcd('0x128')],{'as':_0x2bcd('0x1f4'),'through':_0x2bcd('0x149')});db[_0x2bcd('0xef')][_0x2bcd('0x11a')](db['User'],{'as':_0x2bcd('0x164'),'through':_0x2bcd('0x11f')});db[_0x2bcd('0xf1')]['hasMany'](db['VoiceExtension'],{'as':'Extensions','onDelete':'cascade'});db['VoicePrefix'][_0x2bcd('0x11a')](db['User'],{'as':'Agents','through':_0x2bcd('0x107')});db[_0x2bcd('0xf1')]['belongsToMany'](db[_0x2bcd('0x120')],{'through':'TeamVoicePrefix','as':'Teams'});db[_0x2bcd('0xf3')][_0x2bcd('0x10d')](db[_0x2bcd('0x13')],{'as':_0x2bcd('0x16c'),'foreignKey':'userProfileId'});db[_0x2bcd('0xf3')]['hasMany'](db[_0x2bcd('0x1f5')],{'as':_0x2bcd('0x1f6'),'foreignKey':_0x2bcd('0x119'),'onDelete':_0x2bcd('0x10a')});db[_0x2bcd('0x1f5')][_0x2bcd('0x10d')](db[_0x2bcd('0x1f7')],{'as':_0x2bcd('0x1f8'),'foreignKey':_0x2bcd('0x1f9'),'onDelete':_0x2bcd('0x10a')});db[_0x2bcd('0xf7')][_0x2bcd('0x10d')](db[_0x2bcd('0x15c')],{'as':_0x2bcd('0x181'),'foreignKey':_0x2bcd('0x1fa'),'onDelete':'cascade'});db[_0x2bcd('0xf7')][_0x2bcd('0x10d')](db['CannedAnswer'],{'as':_0x2bcd('0x15d'),'foreignKey':'WhatsappAccountId'});db[_0x2bcd('0xf7')][_0x2bcd('0x10d')](db[_0x2bcd('0xfd')],{'as':_0x2bcd('0x14c'),'foreignKey':'WhatsappAccountId'});db['WhatsappAccount']['hasMany'](db[_0x2bcd('0xfb')],{'as':_0x2bcd('0x183')});db['WhatsappAccount']['hasMany'](db[_0x2bcd('0xf9')],{'as':_0x2bcd('0x15f')});db['WhatsappAccount'][_0x2bcd('0x118')](db[_0x2bcd('0xef')],{'as':_0x2bcd('0x160'),'foreignKey':_0x2bcd('0x161')});db[_0x2bcd('0xf7')][_0x2bcd('0x118')](db[_0x2bcd('0x163')],{'as':_0x2bcd('0x147'),'foreignKey':_0x2bcd('0x148')});db[_0x2bcd('0xf7')]['belongsToMany'](db[_0x2bcd('0x13')],{'as':_0x2bcd('0x164'),'through':_0x2bcd('0x13b')});db[_0x2bcd('0xf9')][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{'onDelete':_0x2bcd('0x158')});db[_0x2bcd('0xf9')][_0x2bcd('0x118')](db[_0x2bcd('0x102')],{'onDelete':_0x2bcd('0x158')});db[_0x2bcd('0xf9')][_0x2bcd('0x118')](db[_0x2bcd('0xf7')],{'onDelete':_0x2bcd('0x158')});db[_0x2bcd('0xf9')][_0x2bcd('0x118')](db['Interval'],{'onDelete':_0x2bcd('0x158'),'foreignKey':'IntervalId'});db[_0x2bcd('0xf9')][_0x2bcd('0x118')](db['Tag'],{'onDelete':_0x2bcd('0x158'),'foreignKey':_0x2bcd('0x17a')});db['WhatsappInteraction'][_0x2bcd('0x10d')](db[_0x2bcd('0xfd')],{'as':_0x2bcd('0x14c'),'onDelete':_0x2bcd('0x10a'),'foreignKey':_0x2bcd('0x1fb')});db['WhatsappInteraction']['belongsTo'](db[_0x2bcd('0xf7')],{'as':_0x2bcd('0x16f'),'foreignKey':'WhatsappAccountId'});db[_0x2bcd('0xfb')][_0x2bcd('0x118')](db['CmContact'],{'as':_0x2bcd('0x153'),'foreignKey':_0x2bcd('0x173')});db[_0x2bcd('0xfb')][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{'as':'Owner','foreignKey':'UserId'});db[_0x2bcd('0xfb')]['belongsToMany'](db[_0x2bcd('0x168')],{'through':'whatsapp_interaction_has_tags','as':_0x2bcd('0x16a')});db[_0x2bcd('0xfb')][_0x2bcd('0x11a')](db[_0x2bcd('0x168')],{'through':_0x2bcd('0x1fc'),'as':_0x2bcd('0x16b')});db[_0x2bcd('0xfb')][_0x2bcd('0x11a')](db['User'],{'as':_0x2bcd('0x16c'),'through':'user_has_whatsapp_interactions','foreignKey':_0x2bcd('0x1fb')});db[_0x2bcd('0xfd')][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{'as':_0x2bcd('0x13')});db[_0x2bcd('0xfd')][_0x2bcd('0x118')](db[_0x2bcd('0x6d')],{'onDelete':'cascade','as':'Contact'});db[_0x2bcd('0xfd')]['belongsTo'](db[_0x2bcd('0xfb')],{'onDelete':_0x2bcd('0x10a'),'as':'Interaction','foreignKey':_0x2bcd('0x1fb')});db[_0x2bcd('0xfd')][_0x2bcd('0x118')](db['WhatsappAccount'],{'as':'Account','foreignKey':'WhatsappAccountId'});db[_0x2bcd('0x1fd')]['belongsTo'](db['WhatsappAccount'],{});db[_0x2bcd('0x1fd')][_0x2bcd('0x118')](db[_0x2bcd('0xef')],{'as':'List','foreignKey':_0x2bcd('0x161')});db[_0x2bcd('0x1fd')][_0x2bcd('0x118')](db[_0x2bcd('0x6d')],{'as':_0x2bcd('0x153'),'foreignKey':_0x2bcd('0x173')});db[_0x2bcd('0x1fd')][_0x2bcd('0x118')](db[_0x2bcd('0xfb')],{});db[_0x2bcd('0x1fd')][_0x2bcd('0x118')](db[_0x2bcd('0x102')],{});db[_0x2bcd('0x1fd')][_0x2bcd('0x118')](db[_0x2bcd('0xfd')],{});db[_0x2bcd('0x1fd')]['belongsTo'](db['User'],{});db[_0x2bcd('0x100')][_0x2bcd('0x118')](db['WhatsappMessage'],{});db[_0x2bcd('0x100')][_0x2bcd('0x118')](db[_0x2bcd('0xfb')],{});db[_0x2bcd('0x100')][_0x2bcd('0x118')](db['WhatsappAccount'],{'foreignKey':_0x2bcd('0x1fe'),'as':'FromAccount'});db[_0x2bcd('0x100')][_0x2bcd('0x118')](db[_0x2bcd('0xf7')],{'foreignKey':_0x2bcd('0x1ff'),'as':_0x2bcd('0x1e5')});db[_0x2bcd('0x100')]['belongsTo'](db[_0x2bcd('0x102')],{'foreignKey':_0x2bcd('0x200'),'as':_0x2bcd('0x1e3')});db[_0x2bcd('0x100')]['belongsTo'](db[_0x2bcd('0x13')],{'foreignKey':_0x2bcd('0x1df'),'as':_0x2bcd('0x1ea')});db[_0x2bcd('0x100')][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{'foreignKey':_0x2bcd('0x1e0'),'as':_0x2bcd('0x1e1')});db[_0x2bcd('0x102')][_0x2bcd('0x11a')](db[_0x2bcd('0x13')],{'as':_0x2bcd('0x164'),'through':_0x2bcd('0x3a'),'foreignKey':_0x2bcd('0x201')});db[_0x2bcd('0x102')][_0x2bcd('0x11a')](db['Team'],{'through':_0x2bcd('0x202'),'as':_0x2bcd('0x14a')});db[_0x2bcd('0x203')][_0x2bcd('0x118')](db['User'],{'as':_0x2bcd('0x204'),'foreignKey':_0x2bcd('0x10b'),'onDelete':_0x2bcd('0x10a'),'hooks':!![]});db[_0x2bcd('0x156')][_0x2bcd('0x159')](db[_0x2bcd('0xba')],{'as':'Dynamics365Account','onDelete':_0x2bcd('0x158')});db[_0x2bcd('0x156')][_0x2bcd('0x159')](db[_0x2bcd('0x154')],{'as':_0x2bcd('0x15a'),'onDelete':_0x2bcd('0x158')});db[_0x2bcd('0x156')]['hasOne'](db[_0x2bcd('0x3d')],{'as':_0x2bcd('0x15b'),'onDelete':_0x2bcd('0x158')});module[_0x2bcd('0x205')]={'db':db,'dbH':dbH};
\ No newline at end of file
+var _0x4329=['../api/contactItemType/contactItemType.model','CmContactHasItem','CmHopperAdditionalPhone','../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model','Template','../api/template/template.model','Trigger','../api/trigger/trigger.model','Variable','Integration','../api/integration/integration.model','IntegrationReport','../api/integrationReport/integrationReport.model','AnalyticCustomReport','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','AnalyticExtractedReport','../api/analyticMetric/analyticMetric.model','AnalyticFieldReport','AnalyticTreeReport','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','SalesforceConfiguration','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','SalesforceField','../api/intSalesforceField/intSalesforceField.model','SugarcrmAccount','../api/intSugarcrmAccount/intSugarcrmAccount.model','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','SugarcrmField','../api/intSugarcrmField/intSugarcrmField.model','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','../api/intDeskConfiguration/intDeskConfiguration.model','../api/intDeskField/intDeskField.model','ZohoAccount','ZohoConfiguration','../api/intZohoConfiguration/intZohoConfiguration.model','ZohoField','../api/intZohoField/intZohoField.model','ZendeskAccount','../api/intZendeskAccount/intZendeskAccount.model','ZendeskConfiguration','../api/intZendeskConfiguration/intZendeskConfiguration.model','../api/intZendeskField/intZendeskField.model','FreshdeskAccount','../api/intFreshdeskAccount/intFreshdeskAccount.model','FreshdeskConfiguration','../api/intFreshdeskField/intFreshdeskField.model','VtigerAccount','../api/intVtigerAccount/intVtigerAccount.model','VtigerConfiguration','VtigerField','../api/intVtigerField/intVtigerField.model','../api/intServicenowAccount/intServicenowAccount.model','ServicenowConfiguration','ServicenowField','../api/intServicenowField/intServicenowField.model','Dynamics365Account','../api/intDynamics365Account/intDynamics365Account.model','../api/intDynamics365Configuration/intDynamics365Configuration.model','Dynamics365Field','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','FreshsalesConfiguration','FreshsalesField','../api/intFreshsalesField/intFreshsalesField.model','Network','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','../api/chatInternalMessage/chatInternalMessage.model','JscriptyAnswerReport','JscriptyQuestionReport','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','JscriptySessionReport','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','SquareReport','../api/squareReport/squareReport.model','SquareDetailsReport','../api/squareReportDetail/squareReportDetail.model','JscriptyProject','../api/jscriptyProject/jscriptyProject.model','Setting','../api/squareOdbc/squareOdbc.model','SquareProject','SquareRecording','../api/squareRecording/squareRecording.model','SquareMessage','../api/squareMessage/squareMessage.model','Team','../api/team/team.model','License','Campaign','../api/campaign/campaign.model','Attachment','../api/attachment/attachment.model','Plugin','../api/plugin/plugin.model','MailTransferReport','../api/mailTransferReport/mailTransferReport.model','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','../api/openchannelTransferReport/openchannelTransferReport.model','../api/smsTransferReport/smsTransferReport.model','CmList','../api/cmList/cmList.model','../api/voicePrefix/voicePrefix.model','UserProfile','../api/userProfile/userProfile.model','../api/userProfileSection/userProfileSection.model','../api/userProfileResource/userProfileResource.model','../api/userNotification/userNotification.model','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','../api/whatsappApplication/whatsappApplication.model','../api/whatsappInteraction/whatsappInteraction.model','WhatsappMessage','WhatsappTransferReport','WhatsappQueue','../api/whatsappQueue/whatsappQueue.model','CloudProvider','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','TeamVoicePrefix','../api/teamVoicePrefix/teamVoicePrefix.model','UserVoicePrefix','../api/userVoicePrefix/userVoicePrefix.model','UserSetting','../api/user-setting/user-setting.model','hasOne','cascade','UserId','userSetting','hasMany','Recordings','VoiceQueuesRt','Extensions','HopperFinals','HopperHistory','OpenchannelInteraction','OpenchannelInteractions','ChatInteractions','SmsInteractions','FaxInteractions','MailInteractions','UserNotification','belongsTo','userProfileId','Groups','chat_group_has_users','belongsToMany','Contacts','Lists','cm_user_has_lists','user_has_teams','user_has_mail_interactions','user_has_chat_interactions','user_has_fax_interactions','SmsInteraction','user_has_sms_interactions','WhatsappInteraction','WhatsappInteractions','user_has_whatsapp_interactions','VoiceQueues','VoicePrefix','VoicePrefixes','MailQueues','ChatQueues','FaxQueues','OpenchannelQueues','UserOpenchannelQueue','WhatsappQueues','user_has_chat_websites','user_has_fax_accounts','MailAccount','MailAccounts','user_has_mail_accounts','OpenchannelAccounts','user_has_openchannel_accounts','SmsAccounts','user_has_sms_accounts','WhatsappAccounts','user_has_whatsapp_accounts','VoiceChanSpy','SpiedAgents','ChanSpyId','Applications','Sounds','Members','VoiceQueueId','HopperHistories','HopperBlacks','JscriptySessions','Trunk','TrunkId','TrunkBackup','TrunkBackupId','mandatoryDispositionPause','mandatoryDispositionPauseId','voice_queues_has_cm_lists','Teams','BlackLists','voice_queues_has_cm_blacklists','VoiceMailMessage','Messages','mailboxuser','VoiceQueueReport','QueueCalls','uniqueid','AgentReports','Contact','MailServerIn','MailAccountId','CloudProviderId','restrict','MailServerOut','Imap','Smtp','Dispositions','Answers','ListId','Agents','team_has_mail_queues','MailInteractionId','Tags','Users','Interaction','Account','ChatWebsiteId','ChatOfflineMessageId','TagId','List','ContactId','Items','FaxAccountId','Interactions','Owner','fax_interaction_has_tags','ThroughTags','team_has_fax_queues','SmsAccountId','SmsQueue','sms_interaction_has_tags','SmsInteractionId','SmsQueueId','team_has_sms_queues','OpenchannelAccountId','OpenchannelQueueId','IntervalId','OpenchannelInteractionId','openchannel_interaction_has_tags','user_has_openchannel_interactions','team_has_openchannel_queues','ProactiveActions','ChatApplication','ChatMessage','Website','ChatInteractionId','chat_interaction_has_tags','AttachmentId','Attachments','ChatGroupId','CompanyId','Phones','CmContactId','Hoppers','Company','cm_user_has_contacts','cm_contact_has_tags','AdditionalPhones','CmHopperId','Agent','Queue','OwnerId','CampaignId','All','OneAll','AutomationAllId','Any','OneAny','AutomationAnyId','Intervals','ChatApplications','FaxApplications','DefaultReportId','Mohs','mail_interaction_has_tags','whatsapp_interaction_has_tags','ItemType','ItemTypeId','AllConditions','AllCondition','TriggerAllId','AnyConditions','AnyCondition','TriggerAnyId','Actions','TriggerId','Fields','CustomReportId','AnalyticMetric','MetricId','Configurations','AccountId','Subjects','Descriptions','DescriptionId','SubjectId','FieldId','VariableId','SugarcrmConfiguration','Description','Field','DeskAccount','DeskField','int_desk_configuration_has_tags','Subject','ZendeskField','int_zendesk_configuration_has_tags','FreshdeskField','int_freshdesk_configuration_has_tags','ServicenowAccount','Dynamics365Configuration','ChatQueueReport','ToId','SessionId','team_has_chat_queues','SquareProjectId','campaigns_has_cm_lists','campaigns_has_cm_blacklists','FromMailAccountId','FromAccount','FromAgent','ToUserId','ToMailQueueId','ToQueue','ToMailAccountId','ToAccount','ChatTransferReport','FromChatWebsiteId','ToAgent','ToChatWebsiteId','FromFaxAccountId','ToFaxAccountId','FromOpenchannelAccountId','ToOpenchannelQueueId','ToOpenchannelAccountId','SmsTransferReport','FromUserId','ToSmsQueueId','ToSmsAccountId','CustomFields','UserProfileSection','UserProfileSections','UserProfileResource','sectionId','WhatsappAccountId','WhatsappInteractionId','WhatsappQueueReport','FromWhatsappAccountId','ToWhatsappAccountId','ToQueueId','team_has_whatsapp_queues','exports','sequelize','lodash','determine','defaultsDeep','xcall','xC@LL1234','mysql','utf8mb4','utf8','sequelizeHistory','motion2','127.0.0.1','utf8_general_ci','password','options','username','User','import','../api/user/user.model','../api/voiceChanSpy/voiceChanSpy.model','VoiceContext','../api/voiceContext/voiceContext.model','VoiceExtension','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','VoiceQueue','VoiceRecording','ScreenRecording','../api/screenRecording/screenRecording.model','VoiceMail','../api/voiceMail/voiceMail.model','VoiceCallReport','../api/voiceCallReport/voiceCallReport.model','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','VoiceAgentReport','../api/voiceAgentReport/voiceAgentReport.model','../api/voiceQueueReport/voiceQueueReport.model','MemberReport','../api/memberReport/memberReport.model','../api/trunk/trunk.model','VoiceTransferReport','../api/voiceTransferReport/voiceTransferReport.model','UserVoiceQueueRt','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','UserChatQueue','../api/userChatQueue/userChatQueue.model','UserMailQueue','../api/userMailQueue/userMailQueue.model','UserFaxQueue','UserSmsQueue','../api/userOpenchannelQueue/userOpenchannelQueue.model','UserWhatsappQueue','../api/userWhatsappQueue/userWhatsappQueue.model','MailQueue','../api/mailQueue/mailQueue.model','MailSubstatus','../api/mailSubstatus/mailSubstatus.model','MailInteraction','../api/mailInteraction/mailInteraction.model','MailMessage','MailApplication','../api/mailApplication/mailApplication.model','MailQueueReport','../api/mailQueueReport/mailQueueReport.model','Dashboard','DashboardItem','../api/dashboardItem/dashboardItem.model','FaxAccount','../api/faxAccount/faxAccount.model','FaxApplication','../api/faxApplication/faxApplication.model','FaxInteraction','../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','../api/smsApplication/smsApplication.model','../api/smsInteraction/smsInteraction.model','SmsMessage','../api/smsQueue/smsQueue.model','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','OpenchannelApplication','../api/openchannelApplication/openchannelApplication.model','../api/openchannelInteraction/openchannelInteraction.model','OpenchannelMessage','../api/openchannelMessage/openchannelMessage.model','OpenchannelQueue','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','../api/chatWebsite/chatWebsite.model','OpenchannelQueueReport','../api/chatApplication/chatApplication.model','ChatInteraction','../api/chatInteraction/chatInteraction.model','../api/chatMessage/chatMessage.model','ChatOfflineMessage','../api/chatOfflineMessage/chatOfflineMessage.model','ChatQueue','../api/chatQueue/chatQueue.model','ChatGroup','ChatProactiveAction','CmCompany','../api/cmCompany/cmCompany.model','CmContact','CmHopper','../api/cmHopper/cmHopper.model','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','CmHopperHistory','../api/cmHopperHistory/cmHopperHistory.model','ReportAgentPreview','../api/reportAgentPreview/reportAgentPreview.model','CmCustomField','../api/cmCustomField/cmCustomField.model','Action','../api/action/action.model','Automation','CannedAnswer','../api/cannedAnswer/cannedAnswer.model','Disposition','../api/disposition/disposition.model','Condition','../api/condition/condition.model','Interval','../api/interval/interval.model','Pause','../api/pause/pause.model','VoiceQueuesLog','../api/voiceQueuesLog/voiceQueuesLog.model','Schedule','../api/schedule/schedule.model','Sound','../api/sound/sound.model','Tag','../api/tag/tag.model','ContactItemType'];(function(_0x4b03c9,_0x17ce03){var _0x161ba2=function(_0xb952db){while(--_0xb952db){_0x4b03c9['push'](_0x4b03c9['shift']());}};_0x161ba2(++_0x17ce03);}(_0x4329,0x170));var _0x9432=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x4329[_0x432682];return _0x463d05;};'use strict';var config=require('../config/environment');var Sequelize=require(_0x9432('0x0'));var _=require(_0x9432('0x1'));var jstz=require('jstz');var timezone=jstz[_0x9432('0x2')]();config[_0x9432('0x0')]=_[_0x9432('0x3')](config[_0x9432('0x0')],{'database':'motion2','username':_0x9432('0x4'),'password':_0x9432('0x5'),'options':{'host':'127.0.0.1','port':0xcea,'dialect':_0x9432('0x6'),'dialectOptions':{'charset':_0x9432('0x7')},'logging':![],'timezone':timezone['name'](),'define':{'charset':_0x9432('0x8'),'collate':'utf8_general_ci'}}});config[_0x9432('0x9')]=_['defaultsDeep'](config[_0x9432('0x9')],{'database':_0x9432('0xa'),'username':'xcall','password':_0x9432('0x5'),'options':{'host':_0x9432('0xb'),'port':0xcea,'dialect':_0x9432('0x6'),'dialectOptions':{'charset':_0x9432('0x7')},'logging':![],'timezone':timezone['name'](),'define':{'charset':_0x9432('0x8'),'collate':_0x9432('0xc')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x9432('0x0')]['database'],config[_0x9432('0x0')]['username'],config['sequelize'][_0x9432('0xd')],config[_0x9432('0x0')][_0x9432('0xe')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelizeHistory']['database'],config['sequelizeHistory'][_0x9432('0xf')],config[_0x9432('0x9')]['password'],config[_0x9432('0x9')][_0x9432('0xe')])};db[_0x9432('0x10')]=db['sequelize'][_0x9432('0x11')](_0x9432('0x12'));db['VoiceChanSpy']=db['sequelize'][_0x9432('0x11')](_0x9432('0x13'));db[_0x9432('0x14')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x15'));db[_0x9432('0x16')]=db[_0x9432('0x0')][_0x9432('0x11')]('../api/voiceExtension/voiceExtension.model');db[_0x9432('0x17')]=db['sequelize'][_0x9432('0x11')](_0x9432('0x18'));db[_0x9432('0x19')]=db[_0x9432('0x0')][_0x9432('0x11')]('../api/voiceQueue/voiceQueue.model');db[_0x9432('0x1a')]=db[_0x9432('0x0')][_0x9432('0x11')]('../api/voiceRecording/voiceRecording.model');db[_0x9432('0x1b')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x1c'));db[_0x9432('0x1d')]=db['sequelize']['import'](_0x9432('0x1e'));db['VoiceMailMessage']=db['sequelize'][_0x9432('0x11')]('../api/voiceMailMessage/voiceMailMessage.model');db[_0x9432('0x1f')]=db['sequelize'][_0x9432('0x11')](_0x9432('0x20'));db[_0x9432('0x21')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x22'));db[_0x9432('0x23')]=db['sequelize']['import'](_0x9432('0x24'));db['VoiceQueueReport']=db['sequelize'][_0x9432('0x11')](_0x9432('0x25'));db[_0x9432('0x26')]=db[_0x9432('0x0')]['import'](_0x9432('0x27'));db['Trunk']=db[_0x9432('0x0')]['import'](_0x9432('0x28'));db[_0x9432('0x29')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x2a'));db[_0x9432('0x2b')]=db[_0x9432('0x0')]['import'](_0x9432('0x2c'));db[_0x9432('0x2d')]=db[_0x9432('0x0')][_0x9432('0x11')]('../api/userVoiceQueue/userVoiceQueue.model');db[_0x9432('0x2e')]=db['sequelize']['import'](_0x9432('0x2f'));db[_0x9432('0x30')]=db['sequelize'][_0x9432('0x11')](_0x9432('0x31'));db[_0x9432('0x32')]=db['sequelize']['import']('../api/userFaxQueue/userFaxQueue.model');db[_0x9432('0x33')]=db[_0x9432('0x0')][_0x9432('0x11')]('../api/userSmsQueue/userSmsQueue.model');db['UserOpenchannelQueue']=db['sequelize'][_0x9432('0x11')](_0x9432('0x34'));db[_0x9432('0x35')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x36'));db['MailServerIn']=db['sequelize']['import']('../api/mailServerIn/mailServerIn.model');db['MailServerOut']=db[_0x9432('0x0')]['import']('../api/mailServerOut/mailServerOut.model');db['MailAccount']=db['sequelize'][_0x9432('0x11')]('../api/mailAccount/mailAccount.model');db[_0x9432('0x37')]=db['sequelize'][_0x9432('0x11')](_0x9432('0x38'));db[_0x9432('0x39')]=db[_0x9432('0x0')]['import'](_0x9432('0x3a'));db[_0x9432('0x3b')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x3c'));db[_0x9432('0x3d')]=db['sequelize'][_0x9432('0x11')]('../api/mailMessage/mailMessage.model');db[_0x9432('0x3e')]=db[_0x9432('0x0')]['import'](_0x9432('0x3f'));db[_0x9432('0x40')]=db['sequelize'][_0x9432('0x11')](_0x9432('0x41'));db[_0x9432('0x42')]=db[_0x9432('0x0')][_0x9432('0x11')]('../api/dashboard/dashboard.model');db[_0x9432('0x43')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x44'));db[_0x9432('0x45')]=db['sequelize'][_0x9432('0x11')](_0x9432('0x46'));db[_0x9432('0x47')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x48'));db[_0x9432('0x49')]=db[_0x9432('0x0')]['import'](_0x9432('0x4a'));db[_0x9432('0x4b')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x4c'));db[_0x9432('0x4d')]=db['sequelize'][_0x9432('0x11')](_0x9432('0x4e'));db[_0x9432('0x4f')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x50'));db[_0x9432('0x51')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x52'));db[_0x9432('0x53')]=db['sequelize']['import'](_0x9432('0x54'));db['SmsInteraction']=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x55'));db[_0x9432('0x56')]=db['sequelize'][_0x9432('0x11')]('../api/smsMessage/smsMessage.model');db['SmsQueue']=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x57'));db[_0x9432('0x58')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x59'));db[_0x9432('0x5a')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x5b'));db['OpenchannelInteraction']=db[_0x9432('0x0')]['import'](_0x9432('0x5c'));db[_0x9432('0x5d')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x5e'));db[_0x9432('0x5f')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x60'));db[_0x9432('0x61')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x62'));db[_0x9432('0x63')]=db[_0x9432('0x0')][_0x9432('0x11')]('../api/openchannelQueueReport/openchannelQueueReport.model');db['ChatApplication']=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x64'));db[_0x9432('0x65')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x66'));db['ChatMessage']=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x67'));db[_0x9432('0x68')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x69'));db[_0x9432('0x6a')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x6b'));db[_0x9432('0x6c')]=db[_0x9432('0x0')][_0x9432('0x11')]('../api/chatGroup/chatGroup.model');db[_0x9432('0x6d')]=db[_0x9432('0x0')]['import']('../api/chatProactiveAction/chatProactiveAction.model');db[_0x9432('0x6e')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x6f'));db[_0x9432('0x70')]=db['sequelize']['import']('../api/cmContact/cmContact.model');db[_0x9432('0x71')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x72'));db[_0x9432('0x73')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x74'));db[_0x9432('0x75')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x76'));db[_0x9432('0x77')]=db['sequelize'][_0x9432('0x11')](_0x9432('0x78'));db[_0x9432('0x79')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x7a'));db[_0x9432('0x7b')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x7c'));db[_0x9432('0x7d')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x7e'));db[_0x9432('0x7f')]=db[_0x9432('0x0')]['import']('../api/automation/automation.model');db[_0x9432('0x80')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x81'));db[_0x9432('0x82')]=db['sequelize'][_0x9432('0x11')](_0x9432('0x83'));db[_0x9432('0x84')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x85'));db[_0x9432('0x86')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x87'));db[_0x9432('0x88')]=db[_0x9432('0x0')]['import'](_0x9432('0x89'));db['Cdr']=db['sequelize'][_0x9432('0x11')]('../api/cdr/cdr.model');db[_0x9432('0x8a')]=db['sequelize'][_0x9432('0x11')](_0x9432('0x8b'));db[_0x9432('0x8c')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x8d'));db[_0x9432('0x8e')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x8f'));db[_0x9432('0x90')]=db['sequelize'][_0x9432('0x11')](_0x9432('0x91'));db[_0x9432('0x92')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x93'));db[_0x9432('0x94')]=db[_0x9432('0x0')][_0x9432('0x11')]('../api/cmContactHasItem/cmContactHasItem.model');db[_0x9432('0x95')]=db['sequelize'][_0x9432('0x11')](_0x9432('0x96'));db[_0x9432('0x97')]=db['sequelize'][_0x9432('0x11')](_0x9432('0x98'));db[_0x9432('0x99')]=db['sequelize'][_0x9432('0x11')](_0x9432('0x9a'));db[_0x9432('0x9b')]=db[_0x9432('0x0')][_0x9432('0x11')]('../api/variable/variable.model');db[_0x9432('0x9c')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x9d'));db[_0x9432('0x9e')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x9f'));db[_0x9432('0xa0')]=db[_0x9432('0x0')]['import'](_0x9432('0xa1'));db[_0x9432('0xa2')]=db[_0x9432('0x0')][_0x9432('0x11')]('../api/analyticDefaultReport/analyticDefaultReport.model');db[_0x9432('0xa3')]=db['sequelize'][_0x9432('0x11')]('../api/analyticExtractedReport/analyticExtractedReport.model');db['AnalyticMetric']=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0xa4'));db[_0x9432('0xa5')]=db[_0x9432('0x0')][_0x9432('0x11')]('../api/analyticFieldReport/analyticFieldReport.model');db[_0x9432('0xa6')]=db['sequelize'][_0x9432('0x11')](_0x9432('0xa7'));db[_0x9432('0xa8')]=db['sequelize'][_0x9432('0x11')](_0x9432('0xa9'));db[_0x9432('0xaa')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0xab'));db[_0x9432('0xac')]=db[_0x9432('0x0')]['import'](_0x9432('0xad'));db[_0x9432('0xae')]=db['sequelize'][_0x9432('0x11')](_0x9432('0xaf'));db['SugarcrmConfiguration']=db[_0x9432('0x0')]['import'](_0x9432('0xb0'));db[_0x9432('0xb1')]=db[_0x9432('0x0')]['import'](_0x9432('0xb2'));db['DeskAccount']=db[_0x9432('0x0')]['import'](_0x9432('0xb3'));db[_0x9432('0xb4')]=db['sequelize'][_0x9432('0x11')](_0x9432('0xb5'));db['DeskField']=db[_0x9432('0x0')]['import'](_0x9432('0xb6'));db[_0x9432('0xb7')]=db[_0x9432('0x0')][_0x9432('0x11')]('../api/intZohoAccount/intZohoAccount.model');db[_0x9432('0xb8')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0xb9'));db[_0x9432('0xba')]=db[_0x9432('0x0')]['import'](_0x9432('0xbb'));db[_0x9432('0xbc')]=db['sequelize']['import'](_0x9432('0xbd'));db[_0x9432('0xbe')]=db['sequelize'][_0x9432('0x11')](_0x9432('0xbf'));db['ZendeskField']=db[_0x9432('0x0')]['import'](_0x9432('0xc0'));db[_0x9432('0xc1')]=db['sequelize'][_0x9432('0x11')](_0x9432('0xc2'));db[_0x9432('0xc3')]=db[_0x9432('0x0')][_0x9432('0x11')]('../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model');db['FreshdeskField']=db['sequelize']['import'](_0x9432('0xc4'));db[_0x9432('0xc5')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0xc6'));db[_0x9432('0xc7')]=db[_0x9432('0x0')][_0x9432('0x11')]('../api/intVtigerConfiguration/intVtigerConfiguration.model');db[_0x9432('0xc8')]=db['sequelize'][_0x9432('0x11')](_0x9432('0xc9'));db['ServicenowAccount']=db['sequelize'][_0x9432('0x11')](_0x9432('0xca'));db[_0x9432('0xcb')]=db[_0x9432('0x0')]['import']('../api/intServicenowConfiguration/intServicenowConfiguration.model');db[_0x9432('0xcc')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0xcd'));db[_0x9432('0xce')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0xcf'));db['Dynamics365Configuration']=db[_0x9432('0x0')]['import'](_0x9432('0xd0'));db[_0x9432('0xd1')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0xd2'));db[_0x9432('0xd3')]=db[_0x9432('0x0')][_0x9432('0x11')]('../api/intFreshsalesAccount/intFreshsalesAccount.model');db[_0x9432('0xd4')]=db[_0x9432('0x0')][_0x9432('0x11')]('../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model');db[_0x9432('0xd5')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0xd6'));db[_0x9432('0x9c')]=db[_0x9432('0x0')]['import'](_0x9432('0x9d'));db[_0x9432('0xd7')]=db[_0x9432('0x0')][_0x9432('0x11')]('../api/network/network.model');db['ChatQueueReport']=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0xd8'));db[_0x9432('0xd9')]=db['sequelize']['import'](_0x9432('0xda'));db[_0x9432('0xdb')]=db[_0x9432('0x0')][_0x9432('0x11')]('../api/jscriptyAnswerReport/jscriptyAnswerReport.model');db[_0x9432('0xdc')]=db[_0x9432('0x0')]['import'](_0x9432('0xdd'));db[_0x9432('0xde')]=db[_0x9432('0x0')][_0x9432('0x11')]('../api/jscriptySessionReport/jscriptySessionReport.model');db[_0x9432('0xdf')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0xe0'));db[_0x9432('0xe1')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0xe2'));db[_0x9432('0xe3')]=db[_0x9432('0x0')]['import'](_0x9432('0xe4'));db[_0x9432('0xe5')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0xe6'));db[_0x9432('0xe7')]=db[_0x9432('0x0')]['import']('../api/setting/setting.model');db['SquareOdbc']=db['sequelize'][_0x9432('0x11')](_0x9432('0xe8'));db[_0x9432('0xe9')]=db[_0x9432('0x0')][_0x9432('0x11')]('../api/squareProject/squareProject.model');db[_0x9432('0xea')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0xeb'));db[_0x9432('0xec')]=db[_0x9432('0x0')]['import'](_0x9432('0xed'));db[_0x9432('0xee')]=db['sequelize'][_0x9432('0x11')](_0x9432('0xef'));db[_0x9432('0xf0')]=db[_0x9432('0x0')]['import']('../api/license/license.model');db[_0x9432('0xf1')]=db['sequelize'][_0x9432('0x11')](_0x9432('0xf2'));db['Migration']=db[_0x9432('0x0')][_0x9432('0x11')]('../api/migration/migration.model');db[_0x9432('0xf3')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0xf4'));db[_0x9432('0xf5')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0xf6'));db[_0x9432('0xf7')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0xf8'));db['ChatTransferReport']=db[_0x9432('0x0')]['import']('../api/chatTransferReport/chatTransferReport.model');db[_0x9432('0xf9')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0xfa'));db[_0x9432('0xfb')]=db[_0x9432('0x0')]['import'](_0x9432('0xfc'));db['SmsTransferReport']=db['sequelize'][_0x9432('0x11')](_0x9432('0xfd'));db[_0x9432('0xfe')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0xff'));db['VoicePrefix']=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x100'));db[_0x9432('0x101')]=db['sequelize'][_0x9432('0x11')](_0x9432('0x102'));db['UserProfileSection']=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x103'));db['UserProfileResource']=db['sequelize']['import'](_0x9432('0x104'));db['UserNotification']=db[_0x9432('0x0')]['import'](_0x9432('0x105'));db[_0x9432('0x106')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x107'));db[_0x9432('0x108')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x109'));db['WhatsappInteraction']=db['sequelize'][_0x9432('0x11')](_0x9432('0x10a'));db[_0x9432('0x10b')]=db[_0x9432('0x0')][_0x9432('0x11')]('../api/whatsappMessage/whatsappMessage.model');db['WhatsappQueueReport']=db[_0x9432('0x0')][_0x9432('0x11')]('../api/whatsappQueueReport/whatsappQueueReport.model');db[_0x9432('0x10c')]=db[_0x9432('0x0')]['import']('../api/whatsappTransferReport/whatsappTransferReport.model');db[_0x9432('0x10d')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x10e'));db[_0x9432('0x10f')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x110'));db[_0x9432('0x111')]=db[_0x9432('0x0')]['import']('../api/teamVoiceQueue/teamVoiceQueue.model');db[_0x9432('0x112')]=db['sequelize'][_0x9432('0x11')](_0x9432('0x113'));db[_0x9432('0x114')]=db[_0x9432('0x0')]['import'](_0x9432('0x115'));db[_0x9432('0x116')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x117'));db['User'][_0x9432('0x118')](db[_0x9432('0x1d')],{'as':'VoiceMail','onDelete':_0x9432('0x119'),'foreignKey':_0x9432('0x11a')});db['User'][_0x9432('0x118')](db[_0x9432('0x116')],{'as':_0x9432('0x11b'),'onDelete':_0x9432('0x119'),'foreignKey':'UserId'});db[_0x9432('0x10')][_0x9432('0x11c')](db[_0x9432('0x1a')],{'as':_0x9432('0x11d'),'foreignKey':_0x9432('0x11a')});db[_0x9432('0x10')][_0x9432('0x11c')](db[_0x9432('0x2b')],{'as':_0x9432('0x11e'),'foreignKey':'UserId'});db['User'][_0x9432('0x11c')](db[_0x9432('0x16')],{'as':_0x9432('0x11f'),'onDelete':_0x9432('0x119'),'hooks':!![]});db[_0x9432('0x10')][_0x9432('0x11c')](db[_0x9432('0x75')],{'as':_0x9432('0x120'),'foreignKey':'UserId'});db[_0x9432('0x10')][_0x9432('0x11c')](db[_0x9432('0x77')],{'as':_0x9432('0x121'),'foreignKey':_0x9432('0x11a')});db[_0x9432('0x10')][_0x9432('0x11c')](db['ReportAgentPreview'],{'as':_0x9432('0x79'),'foreignKey':_0x9432('0x11a')});db['User'][_0x9432('0x11c')](db[_0x9432('0x122')],{'as':_0x9432('0x123'),'foreignKey':_0x9432('0x11a')});db[_0x9432('0x10')][_0x9432('0x11c')](db[_0x9432('0x65')],{'as':_0x9432('0x124'),'foreignKey':'UserId'});db[_0x9432('0x10')][_0x9432('0x11c')](db['SmsInteraction'],{'as':_0x9432('0x125'),'foreignKey':_0x9432('0x11a')});db['User']['hasMany'](db['FaxInteraction'],{'as':_0x9432('0x126'),'foreignKey':'UserId'});db[_0x9432('0x10')][_0x9432('0x11c')](db[_0x9432('0x3b')],{'as':_0x9432('0x127'),'foreignKey':_0x9432('0x11a')});db[_0x9432('0x10')]['hasMany'](db['WhatsappInteraction'],{'as':'WhatsappInteractions','foreignKey':'UserId'});db['User'][_0x9432('0x11c')](db[_0x9432('0x128')],{'as':'UserNotifications','foreignKey':'SenderId'});db['User'][_0x9432('0x129')](db[_0x9432('0x101')],{'as':_0x9432('0x101'),'foreignKey':_0x9432('0x12a')});db[_0x9432('0x10')]['belongsToMany'](db[_0x9432('0x6c')],{'as':_0x9432('0x12b'),'through':_0x9432('0x12c')});db[_0x9432('0x10')][_0x9432('0x12d')](db['CmContact'],{'as':_0x9432('0x12e'),'through':'cm_user_has_contacts'});db['User']['belongsToMany'](db[_0x9432('0xfe')],{'as':_0x9432('0x12f'),'through':_0x9432('0x130')});db[_0x9432('0x10')]['belongsToMany'](db[_0x9432('0xee')],{'through':_0x9432('0x131')});db[_0x9432('0x10')][_0x9432('0x12d')](db[_0x9432('0x3b')],{'as':_0x9432('0x127'),'through':_0x9432('0x132')});db[_0x9432('0x10')][_0x9432('0x12d')](db[_0x9432('0x65')],{'as':_0x9432('0x124'),'through':_0x9432('0x133')});db[_0x9432('0x10')]['belongsToMany'](db[_0x9432('0x49')],{'as':_0x9432('0x126'),'through':_0x9432('0x134')});db[_0x9432('0x10')][_0x9432('0x12d')](db[_0x9432('0x135')],{'as':'SmsInteractions','through':_0x9432('0x136')});db['User']['belongsToMany'](db[_0x9432('0x122')],{'as':_0x9432('0x123'),'through':'user_has_openchannel_interactions'});db[_0x9432('0x10')][_0x9432('0x12d')](db[_0x9432('0x137')],{'as':_0x9432('0x138'),'through':_0x9432('0x139')});db[_0x9432('0x10')][_0x9432('0x12d')](db[_0x9432('0x19')],{'as':_0x9432('0x13a'),'through':'UserVoiceQueue','required':![]});db['User'][_0x9432('0x12d')](db[_0x9432('0x13b')],{'as':_0x9432('0x13c'),'through':_0x9432('0x114'),'required':![]});db[_0x9432('0x10')][_0x9432('0x12d')](db[_0x9432('0x37')],{'as':_0x9432('0x13d'),'through':_0x9432('0x30'),'required':![]});db[_0x9432('0x10')][_0x9432('0x12d')](db[_0x9432('0x6a')],{'as':_0x9432('0x13e'),'through':_0x9432('0x2e'),'required':![],'hooks':!![]});db[_0x9432('0x10')][_0x9432('0x12d')](db['FaxQueue'],{'as':_0x9432('0x13f'),'through':_0x9432('0x32'),'required':![]});db[_0x9432('0x10')][_0x9432('0x12d')](db['SmsQueue'],{'as':'SmsQueues','through':'UserSmsQueue','required':![]});db['User'][_0x9432('0x12d')](db[_0x9432('0x5f')],{'as':_0x9432('0x140'),'through':_0x9432('0x141'),'required':![]});db[_0x9432('0x10')]['belongsToMany'](db[_0x9432('0x10d')],{'as':_0x9432('0x142'),'through':_0x9432('0x35'),'required':![]});db[_0x9432('0x10')]['belongsToMany'](db[_0x9432('0xfe')],{'through':'cm_user_has_lists'});db[_0x9432('0x10')][_0x9432('0x12d')](db['ChatWebsite'],{'as':'ChatWebsites','through':_0x9432('0x143')});db['User'][_0x9432('0x12d')](db[_0x9432('0x45')],{'as':'FaxAccounts','through':_0x9432('0x144')});db[_0x9432('0x10')][_0x9432('0x12d')](db[_0x9432('0x145')],{'as':_0x9432('0x146'),'through':_0x9432('0x147')});db[_0x9432('0x10')][_0x9432('0x12d')](db[_0x9432('0x58')],{'as':_0x9432('0x148'),'through':_0x9432('0x149')});db[_0x9432('0x10')]['belongsToMany'](db[_0x9432('0x51')],{'as':_0x9432('0x14a'),'through':_0x9432('0x14b')});db[_0x9432('0x10')][_0x9432('0x12d')](db[_0x9432('0x106')],{'as':_0x9432('0x14c'),'through':_0x9432('0x14d')});db[_0x9432('0x14e')][_0x9432('0x11c')](db[_0x9432('0x16')],{'as':_0x9432('0x14f'),'onDelete':_0x9432('0x119'),'foreignKey':_0x9432('0x150')});db[_0x9432('0x14')]['hasMany'](db['VoiceExtension'],{'onDelete':_0x9432('0x119')});db['VoiceExtension']['hasMany'](db[_0x9432('0x16')],{'as':_0x9432('0x151'),'onDelete':_0x9432('0x119')});db[_0x9432('0x17')][_0x9432('0x12d')](db['Sound'],{'as':_0x9432('0x152'),'through':'moh_has_sounds'});db[_0x9432('0x19')][_0x9432('0x11c')](db['UserVoiceQueueRt'],{'as':_0x9432('0x153'),'foreignKey':'VoiceQueueId'});db[_0x9432('0x19')][_0x9432('0x11c')](db[_0x9432('0x71')],{'as':'Hoppers','foreignKey':'VoiceQueueId'});db[_0x9432('0x19')][_0x9432('0x11c')](db['CmHopperFinal'],{'as':_0x9432('0x120'),'foreignKey':_0x9432('0x154')});db[_0x9432('0x19')]['hasMany'](db['CmHopperHistory'],{'as':_0x9432('0x155'),'foreignKey':_0x9432('0x154')});db[_0x9432('0x19')][_0x9432('0x11c')](db[_0x9432('0x79')],{'as':_0x9432('0x79'),'foreignKey':_0x9432('0x154')});db[_0x9432('0x19')][_0x9432('0x11c')](db['CmHopperBlack'],{'as':_0x9432('0x156'),'foreignKey':_0x9432('0x154')});db[_0x9432('0x19')]['hasMany'](db[_0x9432('0xde')],{'as':_0x9432('0x157'),'foreignKey':_0x9432('0x154')});db[_0x9432('0x19')][_0x9432('0x129')](db[_0x9432('0x158')],{'as':_0x9432('0x158'),'foreignKey':_0x9432('0x159')});db['VoiceQueue'][_0x9432('0x129')](db[_0x9432('0x158')],{'as':_0x9432('0x15a'),'foreignKey':_0x9432('0x15b')});db[_0x9432('0x19')]['belongsTo'](db[_0x9432('0x86')],{'as':_0x9432('0x86'),'foreignKey':'IntervalId'});db['VoiceQueue'][_0x9432('0x129')](db[_0x9432('0x88')],{'as':_0x9432('0x15c'),'foreignKey':_0x9432('0x15d')});db['VoiceQueue'][_0x9432('0x12d')](db[_0x9432('0xfe')],{'as':'Lists','through':_0x9432('0x15e')});db['VoiceQueue'][_0x9432('0x12d')](db[_0x9432('0x10')],{'as':'Agents','through':_0x9432('0x2d')});db[_0x9432('0x19')][_0x9432('0x12d')](db[_0x9432('0xee')],{'as':_0x9432('0x15f'),'through':_0x9432('0x111')});db[_0x9432('0x19')][_0x9432('0x12d')](db[_0x9432('0xfe')],{'as':_0x9432('0x160'),'through':_0x9432('0x161')});db[_0x9432('0x1a')][_0x9432('0x129')](db['User'],{'as':_0x9432('0x10'),'foreignKey':_0x9432('0x11a')});db['ScreenRecording'][_0x9432('0x129')](db[_0x9432('0x10')],{'as':_0x9432('0x10'),'foreignKey':'UserId'});db[_0x9432('0x1d')][_0x9432('0x11c')](db[_0x9432('0x162')],{'as':_0x9432('0x163'),'onDelete':_0x9432('0x119'),'foreignKey':'mailboxuser','sourceKey':'mailbox'});db[_0x9432('0x162')][_0x9432('0x129')](db[_0x9432('0x1d')],{'foreignKey':_0x9432('0x164'),'targetKey':'mailbox'});db[_0x9432('0x1f')][_0x9432('0x11c')](db[_0x9432('0x165')],{'as':_0x9432('0x166'),'foreignKey':_0x9432('0x167'),'constraints':![]});db[_0x9432('0x1f')]['hasMany'](db['VoiceAgentReport'],{'as':_0x9432('0x168'),'foreignKey':'uniqueid','constraints':![]});db[_0x9432('0x1f')][_0x9432('0x129')](db['User'],{'as':_0x9432('0x10'),'foreignKey':_0x9432('0x11a')});db[_0x9432('0x1f')][_0x9432('0x129')](db[_0x9432('0x70')],{'as':_0x9432('0x169'),'foreignKey':'ContactId'});db[_0x9432('0x16a')][_0x9432('0x129')](db[_0x9432('0x145')],{'as':_0x9432('0x145'),'foreignKey':_0x9432('0x16b')});db['MailServerIn']['belongsTo'](db[_0x9432('0x10f')],{'as':'CloudProvider','foreignKey':_0x9432('0x16c'),'onDelete':_0x9432('0x16d')});db[_0x9432('0x16e')][_0x9432('0x129')](db[_0x9432('0x145')],{'as':'MailAccount','foreignKey':_0x9432('0x16b')});db[_0x9432('0x16e')][_0x9432('0x129')](db[_0x9432('0x10f')],{'as':_0x9432('0x10f'),'foreignKey':_0x9432('0x16c'),'onDelete':_0x9432('0x16d')});db[_0x9432('0x145')][_0x9432('0x118')](db[_0x9432('0x16a')],{'as':_0x9432('0x16f'),'onDelete':_0x9432('0x119')});db[_0x9432('0x145')]['hasOne'](db[_0x9432('0x16e')],{'as':_0x9432('0x170'),'onDelete':'cascade'});db[_0x9432('0x145')][_0x9432('0x11c')](db[_0x9432('0x82')],{'as':_0x9432('0x171'),'foreignKey':_0x9432('0x16b'),'onDelete':_0x9432('0x119')});db[_0x9432('0x145')][_0x9432('0x11c')](db[_0x9432('0x80')],{'as':_0x9432('0x172'),'foreignKey':_0x9432('0x16b')});db['MailAccount']['hasMany'](db['MailMessage'],{'as':_0x9432('0x163'),'foreignKey':_0x9432('0x16b')});db['MailAccount'][_0x9432('0x11c')](db[_0x9432('0x3b')],{'as':'Interactions'});db['MailAccount']['hasMany'](db[_0x9432('0x3e')],{'as':_0x9432('0x151')});db[_0x9432('0x145')][_0x9432('0x129')](db[_0x9432('0xfe')],{'as':'List','foreignKey':_0x9432('0x173')});db['MailAccount']['belongsTo'](db[_0x9432('0x97')],{'as':'Template','foreignKey':'TemplateId'});db[_0x9432('0x145')][_0x9432('0x129')](db['Pause'],{'as':_0x9432('0x15c'),'foreignKey':_0x9432('0x15d')});db[_0x9432('0x145')][_0x9432('0x12d')](db[_0x9432('0x10')],{'as':_0x9432('0x174'),'through':_0x9432('0x147')});db[_0x9432('0x37')][_0x9432('0x12d')](db[_0x9432('0x10')],{'as':_0x9432('0x174'),'through':'UserMailQueue'});db[_0x9432('0x37')][_0x9432('0x12d')](db['Team'],{'through':_0x9432('0x175'),'as':'Teams'});db['MailInteraction'][_0x9432('0x11c')](db[_0x9432('0x3d')],{'as':_0x9432('0x163'),'onDelete':_0x9432('0x119'),'foreignKey':_0x9432('0x176')});db[_0x9432('0x3b')]['belongsTo'](db[_0x9432('0x145')],{'as':'Account','foreignKey':_0x9432('0x16b')});db[_0x9432('0x3b')]['belongsTo'](db[_0x9432('0x70')],{'as':_0x9432('0x169'),'foreignKey':'ContactId'});db[_0x9432('0x3b')]['belongsTo'](db[_0x9432('0x10')],{'as':'Owner','foreignKey':_0x9432('0x11a')});db[_0x9432('0x3b')][_0x9432('0x12d')](db['Tag'],{'through':'mail_interaction_has_tags','as':_0x9432('0x177')});db['MailInteraction'][_0x9432('0x12d')](db[_0x9432('0x90')],{'through':'mail_interaction_has_tags','as':'ThroughTags'});db[_0x9432('0x3b')][_0x9432('0x12d')](db[_0x9432('0x10')],{'as':_0x9432('0x178'),'through':_0x9432('0x132'),'foreignKey':_0x9432('0x176')});db[_0x9432('0x3d')][_0x9432('0x11c')](db[_0x9432('0xf3')],{'as':'Attachments','onDelete':_0x9432('0x119')});db[_0x9432('0x3d')][_0x9432('0x129')](db[_0x9432('0x10')],{'as':_0x9432('0x10')});db[_0x9432('0x3d')][_0x9432('0x129')](db[_0x9432('0x70')],{'onDelete':_0x9432('0x119'),'as':_0x9432('0x169')});db[_0x9432('0x3d')]['belongsTo'](db['MailInteraction'],{'as':_0x9432('0x179'),'foreignKey':_0x9432('0x176')});db[_0x9432('0x3d')][_0x9432('0x129')](db['MailAccount'],{'as':_0x9432('0x17a'),'foreignKey':'MailAccountId'});db[_0x9432('0x3d')][_0x9432('0x129')](db['ChatWebsite'],{'as':_0x9432('0x61'),'foreignKey':_0x9432('0x17b')});db[_0x9432('0x3d')][_0x9432('0x129')](db[_0x9432('0x68')],{'as':_0x9432('0x68'),'foreignKey':_0x9432('0x17c')});db[_0x9432('0x3e')]['belongsTo'](db['User'],{'onDelete':'restrict'});db[_0x9432('0x3e')][_0x9432('0x129')](db[_0x9432('0x37')],{'onDelete':_0x9432('0x16d')});db[_0x9432('0x3e')][_0x9432('0x129')](db[_0x9432('0x145')],{'onDelete':_0x9432('0x16d')});db[_0x9432('0x3e')][_0x9432('0x129')](db[_0x9432('0x86')],{'onDelete':'restrict','foreignKey':'IntervalId'});db['MailApplication'][_0x9432('0x129')](db[_0x9432('0x90')],{'onDelete':_0x9432('0x16d'),'foreignKey':_0x9432('0x17d')});db['MailQueueReport'][_0x9432('0x129')](db[_0x9432('0x145')],{});db['MailQueueReport'][_0x9432('0x129')](db[_0x9432('0xfe')],{'as':_0x9432('0x17e'),'foreignKey':_0x9432('0x173')});db[_0x9432('0x40')][_0x9432('0x129')](db[_0x9432('0x70')],{'as':'Contact','foreignKey':_0x9432('0x17f')});db[_0x9432('0x40')]['belongsTo'](db[_0x9432('0x3b')],{});db['MailQueueReport'][_0x9432('0x129')](db[_0x9432('0x3d')],{});db[_0x9432('0x40')][_0x9432('0x129')](db['User'],{});db[_0x9432('0x40')][_0x9432('0x129')](db[_0x9432('0x37')],{});db[_0x9432('0x42')]['hasMany'](db[_0x9432('0x43')],{'as':_0x9432('0x180'),'onDelete':_0x9432('0x119')});db[_0x9432('0x45')][_0x9432('0x11c')](db[_0x9432('0x82')],{'as':_0x9432('0x171'),'foreignKey':_0x9432('0x181'),'onDelete':'cascade'});db[_0x9432('0x45')][_0x9432('0x11c')](db[_0x9432('0x80')],{'as':'Answers','foreignKey':_0x9432('0x181')});db[_0x9432('0x45')][_0x9432('0x11c')](db[_0x9432('0x49')],{'as':_0x9432('0x182')});db['FaxAccount'][_0x9432('0x11c')](db['FaxApplication'],{'as':_0x9432('0x151')});db[_0x9432('0x45')]['hasMany'](db['VoiceExtension'],{'as':'Exntensions','onDelete':_0x9432('0x119')});db['FaxAccount'][_0x9432('0x11c')](db[_0x9432('0x4b')],{'as':_0x9432('0x163')});db[_0x9432('0x45')][_0x9432('0x129')](db['Trunk'],{'as':_0x9432('0x158')});db[_0x9432('0x45')]['belongsTo'](db[_0x9432('0xfe')],{'as':_0x9432('0x17e'),'foreignKey':_0x9432('0x173')});db[_0x9432('0x45')][_0x9432('0x129')](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':_0x9432('0x15d')});db[_0x9432('0x45')][_0x9432('0x12d')](db['User'],{'as':'Agents','through':_0x9432('0x144')});db[_0x9432('0x47')][_0x9432('0x129')](db[_0x9432('0x10')],{'onDelete':'restrict'});db[_0x9432('0x47')]['belongsTo'](db[_0x9432('0x4d')],{'onDelete':_0x9432('0x16d')});db[_0x9432('0x47')][_0x9432('0x129')](db[_0x9432('0x45')],{'onDelete':_0x9432('0x16d')});db[_0x9432('0x47')][_0x9432('0x129')](db['Tag'],{'onDelete':_0x9432('0x16d'),'foreignKey':_0x9432('0x17d')});db[_0x9432('0x49')][_0x9432('0x11c')](db[_0x9432('0x4b')],{'as':_0x9432('0x163'),'onDelete':_0x9432('0x119'),'foreignKey':'FaxInteractionId'});db['FaxInteraction'][_0x9432('0x129')](db[_0x9432('0x45')],{'as':_0x9432('0x17a'),'foreignKey':'FaxAccountId'});db['FaxInteraction'][_0x9432('0x129')](db['CmContact'],{'as':_0x9432('0x169'),'foreignKey':_0x9432('0x17f')});db[_0x9432('0x49')][_0x9432('0x129')](db[_0x9432('0x10')],{'as':_0x9432('0x183'),'foreignKey':'UserId'});db[_0x9432('0x49')][_0x9432('0x12d')](db[_0x9432('0x90')],{'through':_0x9432('0x184'),'as':_0x9432('0x177')});db[_0x9432('0x49')]['belongsToMany'](db['Tag'],{'through':_0x9432('0x184'),'as':_0x9432('0x185')});db[_0x9432('0x49')]['belongsToMany'](db[_0x9432('0x10')],{'as':_0x9432('0x178'),'through':_0x9432('0x134'),'foreignKey':'FaxInteractionId'});db[_0x9432('0x4b')][_0x9432('0x129')](db[_0x9432('0x10')],{'onDelete':'cascade','as':'User'});db[_0x9432('0x4b')][_0x9432('0x129')](db[_0x9432('0x49')],{'as':_0x9432('0x179'),'foreignKey':'FaxInteractionId'});db[_0x9432('0x4b')]['belongsTo'](db[_0x9432('0x70')],{'onDelete':'cascade','as':'Contact'});db[_0x9432('0x4b')][_0x9432('0x129')](db[_0x9432('0xf3')],{'as':_0x9432('0xf3'),'foreignKey':'AttachmentId'});db[_0x9432('0x4b')][_0x9432('0x129')](db[_0x9432('0x45')],{'as':'Account','foreignKey':_0x9432('0x181')});db[_0x9432('0x4d')][_0x9432('0x12d')](db[_0x9432('0x10')],{'as':_0x9432('0x174'),'through':'UserFaxQueue'});db[_0x9432('0x4d')][_0x9432('0x12d')](db['Team'],{'through':_0x9432('0x186'),'as':'Teams'});db['FaxQueueReport'][_0x9432('0x129')](db[_0x9432('0x45')],{});db[_0x9432('0x4f')][_0x9432('0x129')](db[_0x9432('0xfe')],{'as':_0x9432('0x17e'),'foreignKey':_0x9432('0x173')});db[_0x9432('0x4f')]['belongsTo'](db[_0x9432('0x70')],{'as':_0x9432('0x169'),'foreignKey':_0x9432('0x17f')});db[_0x9432('0x4f')][_0x9432('0x129')](db['FaxInteraction'],{});db[_0x9432('0x4f')]['belongsTo'](db[_0x9432('0x4b')],{});db['FaxQueueReport']['belongsTo'](db['User'],{});db[_0x9432('0x4f')][_0x9432('0x129')](db[_0x9432('0x4d')],{});db[_0x9432('0x51')]['hasMany'](db[_0x9432('0x82')],{'as':_0x9432('0x171'),'foreignKey':_0x9432('0x187'),'onDelete':_0x9432('0x119')});db[_0x9432('0x51')][_0x9432('0x11c')](db[_0x9432('0x80')],{'as':'Answers','foreignKey':_0x9432('0x187')});db[_0x9432('0x51')][_0x9432('0x11c')](db[_0x9432('0x56')],{'as':_0x9432('0x163'),'foreignKey':_0x9432('0x187')});db['SmsAccount'][_0x9432('0x11c')](db['SmsInteraction'],{'as':_0x9432('0x182')});db[_0x9432('0x51')]['hasMany'](db[_0x9432('0x53')],{'as':_0x9432('0x151')});db[_0x9432('0x51')]['belongsTo'](db[_0x9432('0xfe')],{'as':_0x9432('0x17e'),'foreignKey':'ListId'});db['SmsAccount'][_0x9432('0x129')](db[_0x9432('0x88')],{'as':_0x9432('0x15c'),'foreignKey':'mandatoryDispositionPauseId'});db[_0x9432('0x51')][_0x9432('0x12d')](db['User'],{'as':'Agents','through':_0x9432('0x14b')});db[_0x9432('0x53')][_0x9432('0x129')](db[_0x9432('0x10')],{'onDelete':_0x9432('0x16d')});db[_0x9432('0x53')][_0x9432('0x129')](db[_0x9432('0x188')],{'onDelete':_0x9432('0x16d')});db[_0x9432('0x53')][_0x9432('0x129')](db['SmsAccount'],{'onDelete':'restrict'});db[_0x9432('0x53')][_0x9432('0x129')](db['Interval'],{'onDelete':'restrict','foreignKey':'IntervalId'});db[_0x9432('0x53')][_0x9432('0x129')](db[_0x9432('0x90')],{'onDelete':'restrict','foreignKey':_0x9432('0x17d')});db[_0x9432('0x135')][_0x9432('0x11c')](db['SmsMessage'],{'as':_0x9432('0x163'),'onDelete':_0x9432('0x119'),'foreignKey':'SmsInteractionId'});db['SmsInteraction'][_0x9432('0x129')](db[_0x9432('0x51')],{'as':_0x9432('0x17a'),'foreignKey':'SmsAccountId'});db[_0x9432('0x135')][_0x9432('0x129')](db[_0x9432('0x70')],{'as':_0x9432('0x169'),'foreignKey':'ContactId'});db[_0x9432('0x135')][_0x9432('0x129')](db[_0x9432('0x10')],{'as':_0x9432('0x183'),'foreignKey':_0x9432('0x11a')});db['SmsInteraction'][_0x9432('0x12d')](db['Tag'],{'through':_0x9432('0x189'),'as':'Tags'});db[_0x9432('0x135')][_0x9432('0x12d')](db['Tag'],{'through':'sms_interaction_has_tags','as':_0x9432('0x185')});db[_0x9432('0x135')][_0x9432('0x12d')](db[_0x9432('0x10')],{'as':_0x9432('0x178'),'through':_0x9432('0x136'),'foreignKey':_0x9432('0x18a')});db[_0x9432('0x56')][_0x9432('0x129')](db[_0x9432('0x10')],{'as':_0x9432('0x10')});db[_0x9432('0x56')]['belongsTo'](db[_0x9432('0x70')],{'onDelete':'cascade','as':_0x9432('0x169')});db['SmsMessage']['belongsTo'](db[_0x9432('0x135')],{'onDelete':_0x9432('0x119'),'as':_0x9432('0x179'),'foreignKey':_0x9432('0x18a')});db[_0x9432('0x56')][_0x9432('0x129')](db[_0x9432('0x51')],{'as':_0x9432('0x17a'),'foreignKey':'SmsAccountId'});db[_0x9432('0x188')]['belongsToMany'](db[_0x9432('0x10')],{'as':_0x9432('0x174'),'through':_0x9432('0x33'),'foreignKey':_0x9432('0x18b')});db[_0x9432('0x188')]['belongsToMany'](db[_0x9432('0xee')],{'through':_0x9432('0x18c'),'as':'Teams'});db['OpenchannelAccount']['hasMany'](db[_0x9432('0x82')],{'as':_0x9432('0x171'),'foreignKey':_0x9432('0x18d'),'onDelete':'cascade'});db[_0x9432('0x58')][_0x9432('0x11c')](db[_0x9432('0x80')],{'as':_0x9432('0x172'),'foreignKey':'OpenchannelAccountId'});db['OpenchannelAccount'][_0x9432('0x11c')](db[_0x9432('0x122')],{'as':_0x9432('0x182'),'foreignKey':_0x9432('0x18d')});db['OpenchannelAccount'][_0x9432('0x11c')](db[_0x9432('0x5d')],{'as':'Messages','foreignKey':_0x9432('0x18d')});db[_0x9432('0x58')][_0x9432('0x11c')](db['OpenchannelApplication'],{'as':_0x9432('0x151'),'foreignKey':_0x9432('0x18d')});db[_0x9432('0x58')]['belongsTo'](db['CmList'],{'as':_0x9432('0x17e'),'foreignKey':_0x9432('0x173')});db[_0x9432('0x58')][_0x9432('0x129')](db['Pause'],{'as':_0x9432('0x15c'),'foreignKey':_0x9432('0x15d')});db[_0x9432('0x58')][_0x9432('0x12d')](db[_0x9432('0x10')],{'as':'Agents','through':'user_has_openchannel_accounts'});db[_0x9432('0x5a')][_0x9432('0x129')](db['User'],{'onDelete':'restrict'});db['OpenchannelApplication'][_0x9432('0x129')](db['OpenchannelQueue'],{'onDelete':_0x9432('0x16d'),'foreignKey':_0x9432('0x18e')});db[_0x9432('0x5a')]['belongsTo'](db[_0x9432('0x58')],{'onDelete':'restrict','foreignKey':'OpenchannelAccountId'});db[_0x9432('0x5a')][_0x9432('0x129')](db[_0x9432('0x86')],{'onDelete':_0x9432('0x16d'),'foreignKey':_0x9432('0x18f')});db[_0x9432('0x5a')]['belongsTo'](db[_0x9432('0x90')],{'onDelete':'restrict','foreignKey':'TagId'});db[_0x9432('0x122')][_0x9432('0x11c')](db[_0x9432('0x5d')],{'as':'Messages','onDelete':_0x9432('0x119'),'foreignKey':_0x9432('0x190')});db[_0x9432('0x122')][_0x9432('0x129')](db['OpenchannelAccount'],{'as':'Account','foreignKey':_0x9432('0x18d')});db[_0x9432('0x122')][_0x9432('0x129')](db['CmContact'],{'as':'Contact','foreignKey':'ContactId'});db[_0x9432('0x122')]['belongsTo'](db[_0x9432('0x10')],{'as':_0x9432('0x183'),'foreignKey':_0x9432('0x11a')});db[_0x9432('0x122')][_0x9432('0x12d')](db[_0x9432('0x90')],{'through':'openchannel_interaction_has_tags','as':_0x9432('0x177')});db[_0x9432('0x122')][_0x9432('0x12d')](db[_0x9432('0x90')],{'through':_0x9432('0x191'),'as':'ThroughTags'});db[_0x9432('0x122')][_0x9432('0x12d')](db['User'],{'as':'Users','through':_0x9432('0x192'),'foreignKey':'OpenchannelInteractionId'});db[_0x9432('0x5d')]['belongsTo'](db[_0x9432('0x10')],{'onDelete':_0x9432('0x119'),'as':'User'});db[_0x9432('0x5d')][_0x9432('0x129')](db[_0x9432('0x70')],{'onDelete':'cascade','as':_0x9432('0x169')});db['OpenchannelMessage'][_0x9432('0x129')](db[_0x9432('0x122')],{'onDelete':_0x9432('0x119'),'as':_0x9432('0x179'),'foreignKey':_0x9432('0x190')});db[_0x9432('0x5d')][_0x9432('0x129')](db[_0x9432('0xf3')],{'as':'Attachment','foreignKey':'AttachmentId'});db[_0x9432('0x5d')][_0x9432('0x129')](db[_0x9432('0x58')],{'as':_0x9432('0x17a'),'foreignKey':_0x9432('0x18d')});db['OpenchannelQueue'][_0x9432('0x12d')](db[_0x9432('0x10')],{'as':_0x9432('0x174'),'through':_0x9432('0x141'),'foreignKey':_0x9432('0x18e')});db[_0x9432('0x5f')][_0x9432('0x12d')](db['Team'],{'through':_0x9432('0x193'),'as':'Teams'});db['ChatWebsite'][_0x9432('0x11c')](db[_0x9432('0x82')],{'as':'Dispositions','foreignKey':_0x9432('0x17b'),'onDelete':_0x9432('0x119')});db[_0x9432('0x61')][_0x9432('0x11c')](db[_0x9432('0x80')],{'as':_0x9432('0x172'),'foreignKey':_0x9432('0x17b')});db[_0x9432('0x61')]['hasMany'](db['ChatProactiveAction'],{'as':_0x9432('0x194')});db[_0x9432('0x61')][_0x9432('0x11c')](db[_0x9432('0x65')],{'as':_0x9432('0x182')});db[_0x9432('0x61')][_0x9432('0x11c')](db[_0x9432('0x195')],{'as':_0x9432('0x151')});db[_0x9432('0x61')][_0x9432('0x11c')](db[_0x9432('0x196')],{'as':'Messages'});db['ChatWebsite']['belongsTo'](db[_0x9432('0xfe')],{'as':_0x9432('0x17e'),'foreignKey':_0x9432('0x173')});db['ChatWebsite'][_0x9432('0x129')](db['Interval'],{'as':_0x9432('0x86'),'foreignKey':_0x9432('0x18f')});db['ChatWebsite'][_0x9432('0x129')](db[_0x9432('0x145')],{'as':_0x9432('0x145'),'foreignKey':_0x9432('0x16b')});db[_0x9432('0x61')][_0x9432('0x129')](db['Pause'],{'as':_0x9432('0x15c'),'foreignKey':_0x9432('0x15d')});db[_0x9432('0x61')][_0x9432('0x12d')](db[_0x9432('0x10')],{'as':_0x9432('0x174'),'through':_0x9432('0x143')});db[_0x9432('0x63')][_0x9432('0x129')](db[_0x9432('0x58')],{});db['OpenchannelQueueReport'][_0x9432('0x129')](db[_0x9432('0xfe')],{'as':_0x9432('0x17e'),'foreignKey':_0x9432('0x173')});db[_0x9432('0x63')]['belongsTo'](db[_0x9432('0x70')],{'as':_0x9432('0x169'),'foreignKey':_0x9432('0x17f')});db['OpenchannelQueueReport']['belongsTo'](db[_0x9432('0x122')],{});db['OpenchannelQueueReport'][_0x9432('0x129')](db[_0x9432('0x5d')],{});db[_0x9432('0x63')]['belongsTo'](db[_0x9432('0x10')],{});db['OpenchannelQueueReport'][_0x9432('0x129')](db[_0x9432('0x5f')],{});db[_0x9432('0x195')][_0x9432('0x129')](db['User'],{'as':'Agent','foreignKey':_0x9432('0x11a'),'onDelete':_0x9432('0x16d')});db['ChatApplication'][_0x9432('0x129')](db[_0x9432('0x6a')],{'as':'Queue','foreignKey':'ChatQueueId','onDelete':_0x9432('0x16d')});db[_0x9432('0x195')]['belongsTo'](db[_0x9432('0x61')],{'as':_0x9432('0x197'),'foreignKey':'ChatWebsiteId','onDelete':'restrict'});db[_0x9432('0x195')]['belongsTo'](db[_0x9432('0x90')],{'onDelete':_0x9432('0x16d'),'foreignKey':_0x9432('0x17d')});db[_0x9432('0x65')][_0x9432('0x11c')](db['ChatMessage'],{'as':_0x9432('0x163'),'onDelete':_0x9432('0x119'),'foreignKey':_0x9432('0x198')});db[_0x9432('0x65')][_0x9432('0x129')](db['ChatWebsite'],{'as':_0x9432('0x17a'),'foreignKey':'ChatWebsiteId'});db[_0x9432('0x65')][_0x9432('0x129')](db['CmContact'],{'as':_0x9432('0x169'),'foreignKey':'ContactId'});db['ChatInteraction']['belongsTo'](db['User'],{'as':_0x9432('0x183'),'foreignKey':_0x9432('0x11a')});db[_0x9432('0x65')][_0x9432('0x12d')](db[_0x9432('0x90')],{'through':'chat_interaction_has_tags','as':_0x9432('0x177')});db[_0x9432('0x65')][_0x9432('0x12d')](db[_0x9432('0x90')],{'through':_0x9432('0x199'),'as':_0x9432('0x185')});db['ChatInteraction']['belongsToMany'](db[_0x9432('0x10')],{'as':_0x9432('0x178'),'through':_0x9432('0x133'),'foreignKey':'ChatInteractionId'});db['ChatMessage'][_0x9432('0x129')](db[_0x9432('0x10')],{'onDelete':'cascade','as':_0x9432('0x10')});db['ChatMessage']['belongsTo'](db[_0x9432('0x70')],{'onDelete':'cascade','as':'Contact','foreignKey':_0x9432('0x17f')});db[_0x9432('0x196')][_0x9432('0x129')](db[_0x9432('0x65')],{'onDelete':_0x9432('0x119'),'as':_0x9432('0x179'),'foreignKey':'ChatInteractionId'});db['ChatMessage'][_0x9432('0x129')](db['Attachment'],{'as':_0x9432('0xf3'),'foreignKey':_0x9432('0x19a')});db[_0x9432('0x196')][_0x9432('0x129')](db[_0x9432('0x61')],{'as':'Account','foreignKey':'ChatWebsiteId'});db[_0x9432('0x68')][_0x9432('0x11c')](db[_0x9432('0xf3')],{'as':_0x9432('0x19b'),'foreignKey':_0x9432('0x17c'),'onDelete':_0x9432('0x119'),'hooks':!![]});db[_0x9432('0x68')]['belongsTo'](db[_0x9432('0x70')],{'onDelete':_0x9432('0x119'),'as':_0x9432('0x169'),'foreignKey':_0x9432('0x17f')});db[_0x9432('0x68')][_0x9432('0x129')](db[_0x9432('0x61')],{'as':_0x9432('0x17a'),'foreignKey':_0x9432('0x17b')});db[_0x9432('0x6a')][_0x9432('0x12d')](db[_0x9432('0x10')],{'as':'Agents','through':'UserChatQueue','hooks':!![]});db[_0x9432('0x6a')][_0x9432('0x12d')](db[_0x9432('0xee')],{'through':'team_has_chat_queues','as':_0x9432('0x15f')});db[_0x9432('0x6c')]['hasMany'](db['ChatInternalMessage'],{'as':_0x9432('0x163'),'foreignKey':_0x9432('0x19c'),'onDelete':_0x9432('0x119')});db[_0x9432('0x6c')][_0x9432('0x12d')](db[_0x9432('0x10')],{'as':_0x9432('0x153'),'through':'chat_group_has_users'});db[_0x9432('0x6d')][_0x9432('0x129')](db[_0x9432('0x61')],{'as':'Website','foreignKey':_0x9432('0x17b')});db['CmCompany'][_0x9432('0x11c')](db[_0x9432('0x70')],{'as':_0x9432('0x12e'),'foreignKey':_0x9432('0x19d')});db['CmContact'][_0x9432('0x11c')](db['CmContactHasItem'],{'as':_0x9432('0x19e'),'foreignKey':_0x9432('0x19f')});db[_0x9432('0x70')][_0x9432('0x11c')](db[_0x9432('0x71')],{'as':_0x9432('0x1a0'),'foreignKey':_0x9432('0x17f')});db[_0x9432('0x70')][_0x9432('0x11c')](db[_0x9432('0x75')],{'as':_0x9432('0x120'),'foreignKey':_0x9432('0x17f')});db[_0x9432('0x70')][_0x9432('0x11c')](db[_0x9432('0x77')],{'as':_0x9432('0x155'),'foreignKey':_0x9432('0x17f')});db[_0x9432('0x70')][_0x9432('0x11c')](db[_0x9432('0x79')],{'as':_0x9432('0x79'),'foreignKey':_0x9432('0x17f')});db[_0x9432('0x70')]['hasMany'](db[_0x9432('0xde')],{'as':_0x9432('0x157'),'foreignKey':_0x9432('0x17f')});db[_0x9432('0x70')][_0x9432('0x11c')](db['OpenchannelInteraction'],{'as':_0x9432('0x123'),'foreignKey':_0x9432('0x17f'),'onDelete':_0x9432('0x16d')});db[_0x9432('0x70')][_0x9432('0x11c')](db[_0x9432('0x65')],{'as':'ChatInteractions','foreignKey':'ContactId','onDelete':_0x9432('0x16d')});db[_0x9432('0x70')][_0x9432('0x11c')](db[_0x9432('0x135')],{'as':_0x9432('0x125'),'foreignKey':_0x9432('0x17f'),'onDelete':'restrict'});db[_0x9432('0x70')][_0x9432('0x11c')](db['FaxInteraction'],{'as':_0x9432('0x126'),'foreignKey':_0x9432('0x17f'),'onDelete':'restrict'});db[_0x9432('0x70')][_0x9432('0x11c')](db['MailInteraction'],{'as':_0x9432('0x127'),'foreignKey':'ContactId','onDelete':_0x9432('0x16d')});db[_0x9432('0x70')]['belongsTo'](db[_0x9432('0x6e')],{'as':_0x9432('0x1a1'),'foreignKey':_0x9432('0x19d')});db[_0x9432('0x70')]['belongsTo'](db[_0x9432('0xfe')],{'as':_0x9432('0x17e'),'foreignKey':_0x9432('0x173'),'onDelete':_0x9432('0x119')});db[_0x9432('0x70')][_0x9432('0x12d')](db[_0x9432('0x10')],{'as':_0x9432('0x178'),'through':_0x9432('0x1a2')});db[_0x9432('0x70')][_0x9432('0x12d')](db['Tag'],{'as':_0x9432('0x177'),'through':_0x9432('0x1a3')});db[_0x9432('0x70')][_0x9432('0x12d')](db['Tag'],{'through':_0x9432('0x1a3'),'as':'ThroughTags'});db[_0x9432('0x71')][_0x9432('0x11c')](db['CmHopperAdditionalPhone'],{'as':_0x9432('0x1a4'),'foreignKey':_0x9432('0x1a5')});db[_0x9432('0x71')][_0x9432('0x129')](db['CmContact'],{'as':_0x9432('0x169'),'foreignKey':_0x9432('0x17f'),'onDelete':_0x9432('0x119')});db[_0x9432('0x71')][_0x9432('0x129')](db['CmList'],{'as':'List','foreignKey':'ListId','onDelete':_0x9432('0x119')});db[_0x9432('0x71')][_0x9432('0x129')](db[_0x9432('0x10')],{'as':_0x9432('0x1a6'),'foreignKey':'UserId'});db[_0x9432('0x71')][_0x9432('0x129')](db[_0x9432('0x19')],{'as':_0x9432('0x1a7'),'foreignKey':'VoiceQueueId','onDelete':_0x9432('0x119')});db[_0x9432('0x71')][_0x9432('0x129')](db[_0x9432('0xf1')],{'as':_0x9432('0xf1'),'foreignKey':'CampaignId','onDelete':_0x9432('0x119')});db[_0x9432('0x71')][_0x9432('0x129')](db['User'],{'as':_0x9432('0x183'),'foreignKey':_0x9432('0x1a8')});db[_0x9432('0x73')][_0x9432('0x129')](db[_0x9432('0x70')],{'as':_0x9432('0x169'),'foreignKey':'ContactId','onDelete':_0x9432('0x119')});db['CmHopperBlack'][_0x9432('0x129')](db[_0x9432('0xfe')],{'as':_0x9432('0x17e'),'foreignKey':_0x9432('0x173'),'onDelete':_0x9432('0x119')});db['CmHopperBlack'][_0x9432('0x129')](db['VoiceQueue'],{'as':_0x9432('0x1a7'),'foreignKey':_0x9432('0x154'),'onDelete':'cascade'});db[_0x9432('0x73')][_0x9432('0x129')](db[_0x9432('0xf1')],{'as':_0x9432('0xf1'),'foreignKey':_0x9432('0x1a9'),'onDelete':'cascade'});db[_0x9432('0x7f')]['hasMany'](db[_0x9432('0x84')],{'as':{'plural':_0x9432('0x1aa'),'singular':_0x9432('0x1ab')},'foreignKey':_0x9432('0x1ac'),'onDelete':'cascade','hooks':!![]});db[_0x9432('0x7f')][_0x9432('0x11c')](db[_0x9432('0x84')],{'as':{'plural':_0x9432('0x1ad'),'singular':_0x9432('0x1ae')},'foreignKey':_0x9432('0x1af'),'onDelete':'cascade','hooks':!![]});db[_0x9432('0x7f')][_0x9432('0x11c')](db['Action'],{'as':'Actions','foreignKey':'AutomationId','onDelete':_0x9432('0x119'),'hooks':!![]});db['Disposition'][_0x9432('0x11c')](db['Disposition'],{'as':'Dispositions','foreignKey':'ParentId','onDelete':'cascade'});db[_0x9432('0x86')][_0x9432('0x11c')](db['Interval'],{'as':_0x9432('0x1b0'),'foreignKey':_0x9432('0x18f'),'onDelete':_0x9432('0x119'),'hooks':!![],'required':![]});db['Interval'][_0x9432('0x11c')](db['VoiceExtension'],{'as':_0x9432('0x11f'),'foreignKey':_0x9432('0x18f'),'onDelete':'restrict'});db[_0x9432('0x86')]['hasMany'](db['MailApplication'],{'as':'MailApplications','foreignKey':_0x9432('0x18f')});db[_0x9432('0x86')][_0x9432('0x11c')](db['ChatApplication'],{'as':_0x9432('0x1b1'),'foreignKey':_0x9432('0x18f')});db['Interval'][_0x9432('0x11c')](db[_0x9432('0x47')],{'as':_0x9432('0x1b2'),'foreignKey':_0x9432('0x18f')});db[_0x9432('0x86')]['hasMany'](db[_0x9432('0x53')],{'as':'SmsApplications','foreignKey':_0x9432('0x18f')});db[_0x9432('0x8c')]['belongsTo'](db[_0x9432('0x145')],{});db['Schedule'][_0x9432('0x129')](db['AnalyticDefaultReport'],{'foreignKey':_0x9432('0x1b3')});db[_0x9432('0x8c')][_0x9432('0x129')](db[_0x9432('0xa0')],{'foreignKey':'CustomReportId'});db['Sound'][_0x9432('0x12d')](db[_0x9432('0x17')],{'as':_0x9432('0x1b4'),'through':'moh_has_sounds','onDelete':_0x9432('0x16d')});db[_0x9432('0x90')][_0x9432('0x12d')](db[_0x9432('0x70')],{'through':_0x9432('0x1a3')});db[_0x9432('0x90')]['belongsToMany'](db[_0x9432('0x65')],{'through':_0x9432('0x199')});db[_0x9432('0x90')]['belongsToMany'](db[_0x9432('0x3b')],{'through':_0x9432('0x1b5')});db[_0x9432('0x90')][_0x9432('0x12d')](db[_0x9432('0x135')],{'through':_0x9432('0x189')});db[_0x9432('0x90')]['belongsToMany'](db[_0x9432('0x49')],{'through':_0x9432('0x184')});db[_0x9432('0x90')][_0x9432('0x12d')](db['OpenchannelInteraction'],{'through':_0x9432('0x191')});db[_0x9432('0x90')][_0x9432('0x12d')](db['WhatsappInteraction'],{'through':_0x9432('0x1b6')});db['CmContactHasItem'][_0x9432('0x129')](db[_0x9432('0x92')],{'as':_0x9432('0x1b7'),'foreignKey':_0x9432('0x1b8')});db['CmHopperAdditionalPhone'][_0x9432('0x129')](db[_0x9432('0x71')],{'as':'Hopper','foreignKey':'CmHopperId'});db[_0x9432('0x94')][_0x9432('0x129')](db['CmContact'],{'as':_0x9432('0x169'),'foreignKey':_0x9432('0x19f')});db['Trigger'][_0x9432('0x11c')](db[_0x9432('0x84')],{'as':{'plural':_0x9432('0x1b9'),'singular':_0x9432('0x1ba')},'foreignKey':_0x9432('0x1bb'),'onDelete':_0x9432('0x119'),'hooks':!![]});db['Trigger']['hasMany'](db[_0x9432('0x84')],{'as':{'plural':_0x9432('0x1bc'),'singular':_0x9432('0x1bd')},'foreignKey':_0x9432('0x1be'),'onDelete':_0x9432('0x119'),'hooks':!![]});db[_0x9432('0x99')][_0x9432('0x11c')](db[_0x9432('0x7d')],{'as':_0x9432('0x1bf'),'foreignKey':_0x9432('0x1c0'),'onDelete':_0x9432('0x119'),'hooks':!![]});db[_0x9432('0xa0')][_0x9432('0x11c')](db[_0x9432('0xa5')],{'as':_0x9432('0x1c1'),'onDelete':'cascade','foreignKey':_0x9432('0x1c2'),'hooks':!![]});db[_0x9432('0xa2')][_0x9432('0x11c')](db['AnalyticFieldReport'],{'as':'Fields','onDelete':_0x9432('0x119'),'foreignKey':_0x9432('0x1b3')});db[_0x9432('0x1c3')][_0x9432('0x11c')](db[_0x9432('0xa5')],{'as':'Fields','onDelete':_0x9432('0x119'),'foreignKey':_0x9432('0x1c4')});db['AnalyticFieldReport'][_0x9432('0x129')](db[_0x9432('0x1c3')],{'foreignKey':'MetricId'});db[_0x9432('0xa8')]['hasMany'](db[_0x9432('0xaa')],{'as':_0x9432('0x1c5'),'onDelete':_0x9432('0x119'),'foreignKey':_0x9432('0x1c6')});db[_0x9432('0xaa')]['hasMany'](db[_0x9432('0xac')],{'as':_0x9432('0x1c7'),'onDelete':_0x9432('0x119'),'foreignKey':'SubjectId'});db[_0x9432('0xaa')][_0x9432('0x11c')](db['SalesforceField'],{'as':_0x9432('0x1c8'),'onDelete':_0x9432('0x119'),'foreignKey':_0x9432('0x1c9')});db[_0x9432('0xaa')][_0x9432('0x11c')](db[_0x9432('0xac')],{'as':_0x9432('0x1c1'),'onDelete':_0x9432('0x119'),'foreignKey':'FieldId'});db[_0x9432('0xaa')]['belongsTo'](db[_0x9432('0xa8')],{'as':_0x9432('0x17a'),'foreignKey':_0x9432('0x1c6')});db[_0x9432('0xac')][_0x9432('0x11c')](db['SalesforceField'],{'as':'Subject','foreignKey':_0x9432('0x1ca')});db[_0x9432('0xac')][_0x9432('0x11c')](db[_0x9432('0xac')],{'as':'Description','foreignKey':'DescriptionId'});db['SalesforceField'][_0x9432('0x11c')](db[_0x9432('0xac')],{'as':'Field','foreignKey':_0x9432('0x1cb')});db[_0x9432('0xac')][_0x9432('0x129')](db[_0x9432('0x9b')],{'as':_0x9432('0x9b'),'foreignKey':_0x9432('0x1cc')});db[_0x9432('0xae')][_0x9432('0x11c')](db[_0x9432('0x1cd')],{'as':_0x9432('0x1c5'),'onDelete':'cascade','foreignKey':_0x9432('0x1c6')});db['SugarcrmConfiguration'][_0x9432('0x11c')](db[_0x9432('0xb1')],{'as':_0x9432('0x1c7'),'onDelete':_0x9432('0x119'),'foreignKey':_0x9432('0x1ca')});db[_0x9432('0x1cd')]['hasMany'](db[_0x9432('0xb1')],{'as':_0x9432('0x1c8'),'onDelete':_0x9432('0x119'),'foreignKey':'DescriptionId'});db[_0x9432('0x1cd')][_0x9432('0x11c')](db[_0x9432('0xb1')],{'as':_0x9432('0x1c1'),'onDelete':_0x9432('0x119'),'foreignKey':_0x9432('0x1cb')});db['SugarcrmConfiguration'][_0x9432('0x129')](db['SugarcrmAccount'],{'as':_0x9432('0x17a'),'foreignKey':_0x9432('0x1c6')});db['SugarcrmField']['hasMany'](db[_0x9432('0xb1')],{'as':'Subject','foreignKey':_0x9432('0x1ca')});db[_0x9432('0xb1')][_0x9432('0x11c')](db[_0x9432('0xb1')],{'as':_0x9432('0x1ce'),'foreignKey':_0x9432('0x1c9')});db[_0x9432('0xb1')][_0x9432('0x11c')](db['SugarcrmField'],{'as':_0x9432('0x1cf'),'foreignKey':'FieldId'});db[_0x9432('0xb1')][_0x9432('0x129')](db[_0x9432('0x9b')],{'as':_0x9432('0x9b'),'foreignKey':_0x9432('0x1cc')});db[_0x9432('0x1d0')][_0x9432('0x11c')](db[_0x9432('0xb4')],{'as':_0x9432('0x1c5'),'onDelete':_0x9432('0x119'),'foreignKey':_0x9432('0x1c6')});db[_0x9432('0xb4')]['hasMany'](db[_0x9432('0x1d1')],{'as':'Subjects','onDelete':'cascade','foreignKey':_0x9432('0x1ca')});db['DeskConfiguration']['hasMany'](db[_0x9432('0x1d1')],{'as':_0x9432('0x1c8'),'onDelete':'cascade','foreignKey':_0x9432('0x1c9')});db['DeskConfiguration'][_0x9432('0x11c')](db['DeskField'],{'as':_0x9432('0x1c1'),'onDelete':_0x9432('0x119'),'foreignKey':_0x9432('0x1cb')});db[_0x9432('0xb4')]['belongsTo'](db[_0x9432('0x1d0')],{'as':_0x9432('0x17a'),'foreignKey':_0x9432('0x1c6')});db[_0x9432('0xb4')][_0x9432('0x12d')](db['Tag'],{'through':_0x9432('0x1d2')});db[_0x9432('0x1d1')][_0x9432('0x11c')](db[_0x9432('0x1d1')],{'as':_0x9432('0x1d3'),'foreignKey':_0x9432('0x1ca')});db['DeskField'][_0x9432('0x11c')](db['DeskField'],{'as':_0x9432('0x1ce'),'foreignKey':_0x9432('0x1c9')});db[_0x9432('0x1d1')]['hasMany'](db[_0x9432('0x1d1')],{'as':_0x9432('0x1cf'),'foreignKey':_0x9432('0x1cb')});db['DeskField']['belongsTo'](db[_0x9432('0x9b')],{'as':_0x9432('0x9b'),'foreignKey':_0x9432('0x1cc')});db[_0x9432('0xb7')][_0x9432('0x11c')](db[_0x9432('0xb8')],{'as':_0x9432('0x1c5'),'onDelete':_0x9432('0x119'),'foreignKey':'AccountId'});db['ZohoConfiguration']['hasMany'](db[_0x9432('0xba')],{'as':'Subjects','onDelete':_0x9432('0x119'),'foreignKey':_0x9432('0x1ca')});db[_0x9432('0xb8')][_0x9432('0x11c')](db[_0x9432('0xba')],{'as':_0x9432('0x1c8'),'onDelete':_0x9432('0x119'),'foreignKey':_0x9432('0x1c9')});db[_0x9432('0xb8')][_0x9432('0x11c')](db['ZohoField'],{'as':_0x9432('0x1c1'),'onDelete':_0x9432('0x119'),'foreignKey':_0x9432('0x1cb')});db[_0x9432('0xb8')][_0x9432('0x129')](db[_0x9432('0xb7')],{'as':'Account','foreignKey':_0x9432('0x1c6')});db[_0x9432('0xba')][_0x9432('0x11c')](db[_0x9432('0xba')],{'as':_0x9432('0x1d3'),'foreignKey':_0x9432('0x1ca')});db[_0x9432('0xba')][_0x9432('0x11c')](db['ZohoField'],{'as':'Description','foreignKey':_0x9432('0x1c9')});db[_0x9432('0xba')][_0x9432('0x11c')](db[_0x9432('0xba')],{'as':'Field','foreignKey':'FieldId'});db['ZohoField'][_0x9432('0x129')](db['Variable'],{'as':_0x9432('0x9b'),'foreignKey':_0x9432('0x1cc')});db[_0x9432('0xbc')][_0x9432('0x11c')](db['ZendeskConfiguration'],{'as':_0x9432('0x1c5'),'onDelete':_0x9432('0x119'),'foreignKey':_0x9432('0x1c6')});db['ZendeskConfiguration'][_0x9432('0x11c')](db[_0x9432('0x1d4')],{'as':'Subjects','foreignKey':_0x9432('0x1ca')});db[_0x9432('0xbe')]['hasMany'](db[_0x9432('0x1d4')],{'as':'Descriptions','foreignKey':_0x9432('0x1c9')});db['ZendeskConfiguration'][_0x9432('0x11c')](db['ZendeskField'],{'as':_0x9432('0x1c1'),'foreignKey':_0x9432('0x1cb')});db[_0x9432('0xbe')][_0x9432('0x129')](db[_0x9432('0xbc')],{'as':_0x9432('0x17a'),'foreignKey':_0x9432('0x1c6')});db[_0x9432('0xbe')]['belongsToMany'](db[_0x9432('0x90')],{'through':_0x9432('0x1d5')});db[_0x9432('0x1d4')]['hasMany'](db[_0x9432('0x1d4')],{'as':_0x9432('0x1d3'),'foreignKey':'SubjectId'});db[_0x9432('0x1d4')]['hasMany'](db[_0x9432('0x1d4')],{'as':_0x9432('0x1ce'),'foreignKey':_0x9432('0x1c9')});db[_0x9432('0x1d4')]['hasMany'](db[_0x9432('0x1d4')],{'as':_0x9432('0x1cf'),'foreignKey':_0x9432('0x1cb')});db[_0x9432('0x1d4')][_0x9432('0x129')](db[_0x9432('0x9b')],{'as':'Variable','foreignKey':'VariableId'});db[_0x9432('0xc1')][_0x9432('0x11c')](db[_0x9432('0xc3')],{'as':'Configurations','onDelete':_0x9432('0x119'),'foreignKey':_0x9432('0x1c6')});db[_0x9432('0xc3')][_0x9432('0x11c')](db[_0x9432('0x1d6')],{'as':'Subjects','onDelete':_0x9432('0x119'),'foreignKey':_0x9432('0x1ca')});db[_0x9432('0xc3')]['hasMany'](db[_0x9432('0x1d6')],{'as':_0x9432('0x1c8'),'onDelete':_0x9432('0x119'),'foreignKey':_0x9432('0x1c9')});db[_0x9432('0xc3')][_0x9432('0x11c')](db['FreshdeskField'],{'as':_0x9432('0x1c1'),'onDelete':_0x9432('0x119'),'foreignKey':_0x9432('0x1cb')});db[_0x9432('0xc3')][_0x9432('0x129')](db['FreshdeskAccount'],{'as':_0x9432('0x17a'),'foreignKey':_0x9432('0x1c6')});db[_0x9432('0xc3')]['belongsToMany'](db[_0x9432('0x90')],{'through':_0x9432('0x1d7')});db[_0x9432('0x1d6')]['hasMany'](db[_0x9432('0x1d6')],{'as':_0x9432('0x1d3'),'foreignKey':_0x9432('0x1ca')});db[_0x9432('0x1d6')][_0x9432('0x11c')](db['FreshdeskField'],{'as':_0x9432('0x1ce'),'foreignKey':'DescriptionId'});db[_0x9432('0x1d6')][_0x9432('0x11c')](db[_0x9432('0x1d6')],{'as':'Field','foreignKey':_0x9432('0x1cb')});db['FreshdeskField'][_0x9432('0x129')](db['Variable'],{'as':_0x9432('0x9b'),'foreignKey':'VariableId'});db[_0x9432('0xc5')][_0x9432('0x11c')](db[_0x9432('0xc7')],{'as':'Configurations','onDelete':'cascade','foreignKey':_0x9432('0x1c6')});db[_0x9432('0xc7')][_0x9432('0x11c')](db[_0x9432('0xc8')],{'as':'Subjects','foreignKey':_0x9432('0x1ca')});db['VtigerConfiguration'][_0x9432('0x11c')](db['VtigerField'],{'as':'Descriptions','foreignKey':'DescriptionId'});db[_0x9432('0xc7')]['hasMany'](db['VtigerField'],{'as':_0x9432('0x1c1'),'foreignKey':_0x9432('0x1cb')});db[_0x9432('0xc7')]['belongsTo'](db['VtigerAccount'],{'as':_0x9432('0x17a'),'foreignKey':_0x9432('0x1c6')});db[_0x9432('0xc8')]['hasMany'](db[_0x9432('0xc8')],{'as':_0x9432('0x1d3'),'foreignKey':_0x9432('0x1ca')});db[_0x9432('0xc8')]['hasMany'](db[_0x9432('0xc8')],{'as':_0x9432('0x1ce'),'foreignKey':_0x9432('0x1c9')});db[_0x9432('0xc8')][_0x9432('0x11c')](db[_0x9432('0xc8')],{'as':_0x9432('0x1cf'),'foreignKey':_0x9432('0x1cb')});db[_0x9432('0xc8')]['belongsTo'](db['Variable'],{'as':_0x9432('0x9b'),'foreignKey':_0x9432('0x1cc')});db[_0x9432('0x1d8')][_0x9432('0x11c')](db[_0x9432('0xcb')],{'as':_0x9432('0x1c5'),'onDelete':_0x9432('0x119'),'foreignKey':_0x9432('0x1c6')});db['ServicenowConfiguration'][_0x9432('0x11c')](db[_0x9432('0xcc')],{'as':_0x9432('0x1c7'),'foreignKey':_0x9432('0x1ca')});db['ServicenowConfiguration']['hasMany'](db[_0x9432('0xcc')],{'as':_0x9432('0x1c8'),'foreignKey':_0x9432('0x1c9')});db['ServicenowConfiguration']['hasMany'](db[_0x9432('0xcc')],{'as':'Fields','foreignKey':_0x9432('0x1cb')});db[_0x9432('0xcb')]['belongsTo'](db[_0x9432('0x1d8')],{'as':_0x9432('0x17a'),'foreignKey':_0x9432('0x1c6')});db[_0x9432('0xcc')][_0x9432('0x11c')](db['ServicenowField'],{'as':_0x9432('0x1d3'),'foreignKey':_0x9432('0x1ca')});db[_0x9432('0xcc')][_0x9432('0x11c')](db[_0x9432('0xcc')],{'as':_0x9432('0x1ce'),'foreignKey':_0x9432('0x1c9')});db[_0x9432('0xcc')][_0x9432('0x11c')](db[_0x9432('0xcc')],{'as':_0x9432('0x1cf'),'foreignKey':_0x9432('0x1cb')});db[_0x9432('0xcc')][_0x9432('0x129')](db[_0x9432('0x9b')],{'as':_0x9432('0x9b'),'foreignKey':'VariableId'});db[_0x9432('0xce')][_0x9432('0x11c')](db[_0x9432('0x1d9')],{'as':_0x9432('0x1c5'),'onDelete':_0x9432('0x119'),'foreignKey':'AccountId'});db[_0x9432('0xce')][_0x9432('0x129')](db['CloudProvider'],{'as':_0x9432('0x10f'),'foreignKey':_0x9432('0x16c')});db[_0x9432('0x1d9')]['hasMany'](db[_0x9432('0xd1')],{'as':_0x9432('0x1c7'),'onDelete':_0x9432('0x119'),'foreignKey':'SubjectId'});db[_0x9432('0x1d9')][_0x9432('0x11c')](db['Dynamics365Field'],{'as':'Descriptions','onDelete':'cascade','foreignKey':_0x9432('0x1c9')});db[_0x9432('0x1d9')]['hasMany'](db[_0x9432('0xd1')],{'as':_0x9432('0x1c1'),'onDelete':'cascade','foreignKey':_0x9432('0x1cb')});db['Dynamics365Configuration'][_0x9432('0x129')](db[_0x9432('0xce')],{'as':_0x9432('0x17a'),'foreignKey':'AccountId'});db[_0x9432('0xd1')][_0x9432('0x11c')](db[_0x9432('0xd1')],{'as':'Subject','foreignKey':_0x9432('0x1ca')});db[_0x9432('0xd1')][_0x9432('0x11c')](db[_0x9432('0xd1')],{'as':_0x9432('0x1ce'),'foreignKey':_0x9432('0x1c9')});db[_0x9432('0xd1')][_0x9432('0x11c')](db[_0x9432('0xd1')],{'as':_0x9432('0x1cf'),'foreignKey':_0x9432('0x1cb')});db[_0x9432('0xd1')][_0x9432('0x129')](db[_0x9432('0x9b')],{'as':_0x9432('0x9b'),'foreignKey':_0x9432('0x1cc')});db[_0x9432('0xd3')][_0x9432('0x11c')](db[_0x9432('0xd4')],{'as':_0x9432('0x1c5'),'onDelete':_0x9432('0x119'),'foreignKey':'AccountId'});db[_0x9432('0xd4')][_0x9432('0x11c')](db[_0x9432('0xd5')],{'as':_0x9432('0x1c7'),'foreignKey':'SubjectId'});db[_0x9432('0xd4')][_0x9432('0x11c')](db[_0x9432('0xd5')],{'as':_0x9432('0x1c8'),'foreignKey':_0x9432('0x1c9')});db[_0x9432('0xd4')][_0x9432('0x11c')](db['FreshsalesField'],{'as':_0x9432('0x1c1'),'foreignKey':_0x9432('0x1cb')});db[_0x9432('0xd4')][_0x9432('0x129')](db[_0x9432('0xd3')],{'as':_0x9432('0x17a'),'foreignKey':_0x9432('0x1c6')});db[_0x9432('0xd5')]['hasMany'](db[_0x9432('0xd5')],{'as':_0x9432('0x1d3'),'foreignKey':_0x9432('0x1ca')});db['FreshsalesField']['hasMany'](db['FreshsalesField'],{'as':_0x9432('0x1ce'),'foreignKey':_0x9432('0x1c9')});db[_0x9432('0xd5')][_0x9432('0x11c')](db[_0x9432('0xd5')],{'as':_0x9432('0x1cf'),'foreignKey':_0x9432('0x1cb')});db[_0x9432('0xd5')][_0x9432('0x129')](db[_0x9432('0x9b')],{'as':_0x9432('0x9b'),'foreignKey':_0x9432('0x1cc')});db[_0x9432('0x1da')][_0x9432('0x129')](db[_0x9432('0x61')],{});db['ChatQueueReport'][_0x9432('0x129')](db[_0x9432('0xfe')],{'as':_0x9432('0x17e'),'foreignKey':_0x9432('0x173')});db[_0x9432('0x1da')][_0x9432('0x129')](db['CmContact'],{'as':'Contact','foreignKey':_0x9432('0x17f')});db['ChatQueueReport'][_0x9432('0x129')](db[_0x9432('0x65')],{});db['ChatQueueReport'][_0x9432('0x129')](db['ChatMessage'],{});db[_0x9432('0x1da')][_0x9432('0x129')](db[_0x9432('0x10')],{});db[_0x9432('0x1da')][_0x9432('0x129')](db[_0x9432('0x6a')],{});db[_0x9432('0xd9')][_0x9432('0x129')](db[_0x9432('0x10')],{'onDelete':_0x9432('0x119'),'foreignKey':'FromId'});db[_0x9432('0xd9')]['belongsTo'](db['User'],{'onDelete':'cascade','foreignKey':_0x9432('0x1db')});db[_0x9432('0xde')][_0x9432('0x11c')](db[_0x9432('0xdc')],{'foreignKey':_0x9432('0x1dc'),'onDelete':_0x9432('0x119')});db[_0x9432('0xde')][_0x9432('0x11c')](db[_0x9432('0xdb')],{'foreignKey':_0x9432('0x1dc'),'onDelete':'cascade'});db[_0x9432('0xdf')]['belongsTo'](db[_0x9432('0x51')],{});db[_0x9432('0xdf')][_0x9432('0x129')](db[_0x9432('0xfe')],{'as':_0x9432('0x17e'),'foreignKey':_0x9432('0x173')});db[_0x9432('0xdf')][_0x9432('0x129')](db['CmContact'],{'as':_0x9432('0x169'),'foreignKey':_0x9432('0x17f')});db[_0x9432('0xdf')][_0x9432('0x129')](db['SmsInteraction'],{});db[_0x9432('0xdf')][_0x9432('0x129')](db[_0x9432('0x56')],{});db[_0x9432('0xdf')]['belongsTo'](db['User'],{});db[_0x9432('0xdf')][_0x9432('0x129')](db[_0x9432('0x188')],{});db[_0x9432('0xe5')]['hasMany'](db[_0x9432('0xde')],{'foreignKey':'ProjectId'});db['JscriptyProject'][_0x9432('0x11c')](db[_0x9432('0xdc')],{'foreignKey':'ProjectId'});db[_0x9432('0xe5')]['hasMany'](db[_0x9432('0xdb')],{'foreignKey':'ProjectId'});db['Team']['belongsToMany'](db[_0x9432('0x10')],{'as':_0x9432('0x174'),'through':'user_has_teams'});db[_0x9432('0xee')][_0x9432('0x12d')](db[_0x9432('0x19')],{'through':_0x9432('0x111'),'as':_0x9432('0x13a')});db[_0x9432('0xee')][_0x9432('0x12d')](db[_0x9432('0x37')],{'through':'team_has_mail_queues','as':_0x9432('0x13d')});db[_0x9432('0xee')]['belongsToMany'](db['ChatQueue'],{'through':_0x9432('0x1dd'),'as':_0x9432('0x13e')});db[_0x9432('0xee')][_0x9432('0x12d')](db[_0x9432('0x4d')],{'through':_0x9432('0x186'),'as':_0x9432('0x13f')});db[_0x9432('0xee')][_0x9432('0x12d')](db[_0x9432('0x188')],{'through':_0x9432('0x18c'),'as':'SmsQueues'});db[_0x9432('0xee')][_0x9432('0x12d')](db[_0x9432('0x5f')],{'through':_0x9432('0x193'),'as':_0x9432('0x140')});db[_0x9432('0xee')]['belongsToMany'](db['WhatsappQueue'],{'through':'team_has_whatsapp_queues','as':_0x9432('0x142')});db['Team'][_0x9432('0x12d')](db['VoicePrefix'],{'through':_0x9432('0x112'),'as':_0x9432('0x13c')});db['Campaign']['hasMany'](db['CmHopper'],{'as':_0x9432('0x1a0'),'foreignKey':_0x9432('0x1a9')});db[_0x9432('0xf1')]['hasMany'](db['CmHopperFinal'],{'as':_0x9432('0x120'),'foreignKey':_0x9432('0x1a9')});db[_0x9432('0xf1')]['hasMany'](db[_0x9432('0x77')],{'as':_0x9432('0x155'),'foreignKey':'CampaignId'});db[_0x9432('0xf1')][_0x9432('0x11c')](db[_0x9432('0x73')],{'as':_0x9432('0x156'),'foreignKey':_0x9432('0x1a9')});db[_0x9432('0xf1')]['belongsTo'](db[_0x9432('0x158')],{'as':_0x9432('0x158'),'foreignKey':_0x9432('0x159')});db[_0x9432('0xf1')][_0x9432('0x129')](db[_0x9432('0x158')],{'as':'TrunkBackup','foreignKey':_0x9432('0x15b')});db[_0x9432('0xf1')]['belongsTo'](db[_0x9432('0x86')],{'as':_0x9432('0x86'),'foreignKey':_0x9432('0x18f')});db[_0x9432('0xf1')][_0x9432('0x129')](db[_0x9432('0xe9')],{'as':'SquareProject','foreignKey':_0x9432('0x1de')});db['Campaign'][_0x9432('0x12d')](db[_0x9432('0xfe')],{'as':_0x9432('0x12f'),'through':_0x9432('0x1df')});db[_0x9432('0xf1')][_0x9432('0x12d')](db['CmList'],{'as':_0x9432('0x160'),'through':_0x9432('0x1e0')});db['Attachment'][_0x9432('0x129')](db[_0x9432('0x68')],{'as':_0x9432('0x68'),'foreignKey':'ChatOfflineMessageId'});db[_0x9432('0xf7')][_0x9432('0x129')](db['MailMessage'],{});db[_0x9432('0xf7')][_0x9432('0x129')](db[_0x9432('0x3b')],{});db[_0x9432('0xf7')]['belongsTo'](db[_0x9432('0x145')],{'foreignKey':_0x9432('0x1e1'),'as':_0x9432('0x1e2')});db[_0x9432('0xf7')][_0x9432('0x129')](db[_0x9432('0x10')],{'foreignKey':'FromUserId','as':_0x9432('0x1e3')});db['MailTransferReport']['belongsTo'](db[_0x9432('0x10')],{'foreignKey':_0x9432('0x1e4'),'as':'ToAgent'});db[_0x9432('0xf7')][_0x9432('0x129')](db[_0x9432('0x37')],{'foreignKey':_0x9432('0x1e5'),'as':_0x9432('0x1e6')});db[_0x9432('0xf7')][_0x9432('0x129')](db[_0x9432('0x145')],{'foreignKey':_0x9432('0x1e7'),'as':_0x9432('0x1e8')});db['ChatTransferReport'][_0x9432('0x129')](db[_0x9432('0x196')],{});db['ChatTransferReport'][_0x9432('0x129')](db[_0x9432('0x65')],{});db[_0x9432('0x1e9')][_0x9432('0x129')](db[_0x9432('0x61')],{'foreignKey':_0x9432('0x1ea'),'as':_0x9432('0x1e2')});db[_0x9432('0x1e9')][_0x9432('0x129')](db[_0x9432('0x10')],{'foreignKey':'FromUserId','as':_0x9432('0x1e3')});db[_0x9432('0x1e9')][_0x9432('0x129')](db[_0x9432('0x10')],{'foreignKey':_0x9432('0x1e4'),'as':_0x9432('0x1eb')});db[_0x9432('0x1e9')][_0x9432('0x129')](db[_0x9432('0x6a')],{'foreignKey':'ToChatQueueId','as':_0x9432('0x1e6')});db[_0x9432('0x1e9')][_0x9432('0x129')](db[_0x9432('0x61')],{'foreignKey':_0x9432('0x1ec'),'as':_0x9432('0x1e8')});db[_0x9432('0xf9')][_0x9432('0x129')](db['FaxMessage'],{});db[_0x9432('0xf9')][_0x9432('0x129')](db[_0x9432('0x49')],{});db[_0x9432('0xf9')]['belongsTo'](db['FaxAccount'],{'foreignKey':_0x9432('0x1ed'),'as':_0x9432('0x1e2')});db[_0x9432('0xf9')][_0x9432('0x129')](db[_0x9432('0x10')],{'foreignKey':'FromUserId','as':'FromAgent'});db['FaxTransferReport']['belongsTo'](db['User'],{'foreignKey':_0x9432('0x1e4'),'as':_0x9432('0x1eb')});db[_0x9432('0xf9')]['belongsTo'](db[_0x9432('0x4d')],{'foreignKey':'ToFaxQueueId','as':_0x9432('0x1e6')});db[_0x9432('0xf9')][_0x9432('0x129')](db[_0x9432('0x45')],{'foreignKey':_0x9432('0x1ee'),'as':_0x9432('0x1e8')});db[_0x9432('0xfb')][_0x9432('0x129')](db[_0x9432('0x5d')],{});db[_0x9432('0xfb')][_0x9432('0x129')](db['OpenchannelInteraction'],{});db[_0x9432('0xfb')][_0x9432('0x129')](db[_0x9432('0x58')],{'foreignKey':_0x9432('0x1ef'),'as':_0x9432('0x1e2')});db[_0x9432('0xfb')][_0x9432('0x129')](db['User'],{'foreignKey':'FromUserId','as':_0x9432('0x1e3')});db[_0x9432('0xfb')][_0x9432('0x129')](db[_0x9432('0x10')],{'foreignKey':'ToUserId','as':_0x9432('0x1eb')});db[_0x9432('0xfb')][_0x9432('0x129')](db[_0x9432('0x5f')],{'foreignKey':_0x9432('0x1f0'),'as':'ToQueue'});db[_0x9432('0xfb')]['belongsTo'](db[_0x9432('0x58')],{'foreignKey':_0x9432('0x1f1'),'as':_0x9432('0x1e8')});db[_0x9432('0x1f2')][_0x9432('0x129')](db['SmsMessage'],{});db[_0x9432('0x1f2')][_0x9432('0x129')](db[_0x9432('0x135')],{});db[_0x9432('0x1f2')]['belongsTo'](db['SmsAccount'],{'foreignKey':'FromSmsAccountId','as':_0x9432('0x1e2')});db[_0x9432('0x1f2')]['belongsTo'](db[_0x9432('0x10')],{'foreignKey':_0x9432('0x1f3'),'as':_0x9432('0x1e3')});db[_0x9432('0x1f2')][_0x9432('0x129')](db[_0x9432('0x10')],{'foreignKey':_0x9432('0x1e4'),'as':_0x9432('0x1eb')});db[_0x9432('0x1f2')][_0x9432('0x129')](db[_0x9432('0x188')],{'foreignKey':_0x9432('0x1f4'),'as':_0x9432('0x1e6')});db[_0x9432('0x1f2')]['belongsTo'](db['SmsAccount'],{'foreignKey':_0x9432('0x1f5'),'as':_0x9432('0x1e8')});db[_0x9432('0xfe')][_0x9432('0x11c')](db[_0x9432('0x82')],{'as':_0x9432('0x171'),'foreignKey':'ListId','onDelete':'cascade'});db['CmList'][_0x9432('0x11c')](db['CmCustomField'],{'as':_0x9432('0x1f6'),'foreignKey':_0x9432('0x173')});db['CmList'][_0x9432('0x11c')](db[_0x9432('0x70')],{'as':_0x9432('0x12e'),'onDelete':_0x9432('0x119'),'foreignKey':'ListId'});db[_0x9432('0xfe')][_0x9432('0x11c')](db[_0x9432('0x75')],{'as':_0x9432('0x120'),'foreignKey':'ListId'});db[_0x9432('0xfe')][_0x9432('0x11c')](db[_0x9432('0x77')],{'as':_0x9432('0x121'),'foreignKey':_0x9432('0x173')});db[_0x9432('0xfe')][_0x9432('0x11c')](db[_0x9432('0x79')],{'as':_0x9432('0x79'),'foreignKey':_0x9432('0x173')});db['CmList'][_0x9432('0x12d')](db[_0x9432('0x19')],{'as':'Queues','through':_0x9432('0x15e')});db[_0x9432('0xfe')][_0x9432('0x12d')](db[_0x9432('0x10')],{'as':_0x9432('0x174'),'through':_0x9432('0x130')});db[_0x9432('0x13b')][_0x9432('0x11c')](db[_0x9432('0x16')],{'as':'Extensions','onDelete':_0x9432('0x119')});db['VoicePrefix']['belongsToMany'](db['User'],{'as':'Agents','through':'UserVoicePrefix'});db[_0x9432('0x13b')]['belongsToMany'](db[_0x9432('0xee')],{'through':'TeamVoicePrefix','as':_0x9432('0x15f')});db[_0x9432('0x101')][_0x9432('0x11c')](db['User'],{'as':'Users','foreignKey':_0x9432('0x12a')});db[_0x9432('0x101')][_0x9432('0x11c')](db[_0x9432('0x1f7')],{'as':_0x9432('0x1f8'),'foreignKey':_0x9432('0x12a'),'onDelete':_0x9432('0x119')});db[_0x9432('0x1f7')][_0x9432('0x11c')](db[_0x9432('0x1f9')],{'as':'Resources','foreignKey':_0x9432('0x1fa'),'onDelete':'cascade'});db['WhatsappAccount'][_0x9432('0x11c')](db[_0x9432('0x82')],{'as':_0x9432('0x171'),'foreignKey':_0x9432('0x1fb'),'onDelete':'cascade'});db[_0x9432('0x106')][_0x9432('0x11c')](db[_0x9432('0x80')],{'as':_0x9432('0x172'),'foreignKey':_0x9432('0x1fb')});db[_0x9432('0x106')][_0x9432('0x11c')](db[_0x9432('0x10b')],{'as':_0x9432('0x163'),'foreignKey':_0x9432('0x1fb')});db[_0x9432('0x106')]['hasMany'](db['WhatsappInteraction'],{'as':_0x9432('0x182')});db['WhatsappAccount'][_0x9432('0x11c')](db['WhatsappApplication'],{'as':_0x9432('0x151')});db[_0x9432('0x106')][_0x9432('0x129')](db[_0x9432('0xfe')],{'as':_0x9432('0x17e'),'foreignKey':'ListId'});db[_0x9432('0x106')]['belongsTo'](db[_0x9432('0x88')],{'as':_0x9432('0x15c'),'foreignKey':_0x9432('0x15d')});db[_0x9432('0x106')][_0x9432('0x12d')](db[_0x9432('0x10')],{'as':'Agents','through':_0x9432('0x14d')});db[_0x9432('0x108')]['belongsTo'](db[_0x9432('0x10')],{'onDelete':_0x9432('0x16d')});db[_0x9432('0x108')][_0x9432('0x129')](db['WhatsappQueue'],{'onDelete':_0x9432('0x16d')});db['WhatsappApplication'][_0x9432('0x129')](db[_0x9432('0x106')],{'onDelete':'restrict'});db[_0x9432('0x108')][_0x9432('0x129')](db['Interval'],{'onDelete':_0x9432('0x16d'),'foreignKey':_0x9432('0x18f')});db[_0x9432('0x108')][_0x9432('0x129')](db[_0x9432('0x90')],{'onDelete':_0x9432('0x16d'),'foreignKey':_0x9432('0x17d')});db[_0x9432('0x137')]['hasMany'](db[_0x9432('0x10b')],{'as':'Messages','onDelete':_0x9432('0x119'),'foreignKey':'WhatsappInteractionId'});db['WhatsappInteraction']['belongsTo'](db[_0x9432('0x106')],{'as':_0x9432('0x17a'),'foreignKey':_0x9432('0x1fb')});db[_0x9432('0x137')]['belongsTo'](db[_0x9432('0x70')],{'as':_0x9432('0x169'),'foreignKey':_0x9432('0x17f')});db['WhatsappInteraction'][_0x9432('0x129')](db[_0x9432('0x10')],{'as':'Owner','foreignKey':_0x9432('0x11a')});db[_0x9432('0x137')]['belongsToMany'](db['Tag'],{'through':_0x9432('0x1b6'),'as':_0x9432('0x177')});db[_0x9432('0x137')][_0x9432('0x12d')](db['Tag'],{'through':'whatsapp_interaction_has_tags','as':_0x9432('0x185')});db[_0x9432('0x137')][_0x9432('0x12d')](db['User'],{'as':'Users','through':_0x9432('0x139'),'foreignKey':'WhatsappInteractionId'});db[_0x9432('0x10b')][_0x9432('0x129')](db['User'],{'as':_0x9432('0x10')});db[_0x9432('0x10b')][_0x9432('0x129')](db[_0x9432('0x70')],{'onDelete':'cascade','as':_0x9432('0x169')});db['WhatsappMessage']['belongsTo'](db[_0x9432('0x137')],{'onDelete':_0x9432('0x119'),'as':_0x9432('0x179'),'foreignKey':_0x9432('0x1fc')});db['WhatsappMessage'][_0x9432('0x129')](db[_0x9432('0x106')],{'as':_0x9432('0x17a'),'foreignKey':_0x9432('0x1fb')});db[_0x9432('0x1fd')][_0x9432('0x129')](db[_0x9432('0x106')],{});db[_0x9432('0x1fd')][_0x9432('0x129')](db[_0x9432('0xfe')],{'as':_0x9432('0x17e'),'foreignKey':'ListId'});db[_0x9432('0x1fd')][_0x9432('0x129')](db[_0x9432('0x70')],{'as':_0x9432('0x169'),'foreignKey':_0x9432('0x17f')});db[_0x9432('0x1fd')][_0x9432('0x129')](db[_0x9432('0x137')],{});db[_0x9432('0x1fd')][_0x9432('0x129')](db[_0x9432('0x10d')],{});db[_0x9432('0x1fd')][_0x9432('0x129')](db[_0x9432('0x10b')],{});db[_0x9432('0x1fd')][_0x9432('0x129')](db[_0x9432('0x10')],{});db[_0x9432('0x10c')][_0x9432('0x129')](db['WhatsappMessage'],{});db[_0x9432('0x10c')][_0x9432('0x129')](db[_0x9432('0x137')],{});db['WhatsappTransferReport'][_0x9432('0x129')](db['WhatsappAccount'],{'foreignKey':_0x9432('0x1fe'),'as':_0x9432('0x1e2')});db[_0x9432('0x10c')]['belongsTo'](db[_0x9432('0x106')],{'foreignKey':_0x9432('0x1ff'),'as':_0x9432('0x1e8')});db[_0x9432('0x10c')][_0x9432('0x129')](db[_0x9432('0x10d')],{'foreignKey':_0x9432('0x200'),'as':'ToQueue'});db[_0x9432('0x10c')][_0x9432('0x129')](db[_0x9432('0x10')],{'foreignKey':_0x9432('0x1f3'),'as':_0x9432('0x1e3')});db['WhatsappTransferReport'][_0x9432('0x129')](db[_0x9432('0x10')],{'foreignKey':'ToUserId','as':_0x9432('0x1eb')});db[_0x9432('0x10d')][_0x9432('0x12d')](db['User'],{'as':_0x9432('0x174'),'through':_0x9432('0x35'),'foreignKey':'WhatsappQueueId'});db[_0x9432('0x10d')]['belongsToMany'](db[_0x9432('0xee')],{'through':_0x9432('0x201'),'as':_0x9432('0x15f')});db[_0x9432('0x116')][_0x9432('0x129')](db['User'],{'as':'user','foreignKey':'UserId','onDelete':'cascade','hooks':!![]});db[_0x9432('0x10f')][_0x9432('0x118')](db[_0x9432('0xce')],{'as':_0x9432('0xce'),'onDelete':_0x9432('0x16d')});db[_0x9432('0x10f')]['hasOne'](db['MailServerIn'],{'as':_0x9432('0x16f'),'onDelete':_0x9432('0x16d')});db[_0x9432('0x10f')][_0x9432('0x118')](db['MailServerOut'],{'as':_0x9432('0x170'),'onDelete':_0x9432('0x16d')});module[_0x9432('0x202')]={'db':db,'dbH':dbH};
\ No newline at end of file
index b3a943c..fb21c93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x550b=['./api/attachment','/api/plugins','./api/plugin','/api/mail/reports/transfer','./api/mailTransferReport','/api/chat/reports/transfer','./api/chatTransferReport','./api/faxTransferReport','/api/openchannel/reports/transfer','./api/openchannelTransferReport','/api/sms/reports/transfer','/api/cm/lists','./api/cmList','/api/userProfiles','./api/userProfileSection','./api/userProfileResource','/api/userNotifications','./api/userNotification','/api/whatsapp/accounts','./api/whatsappAccount','/api/whatsapp/applications','/api/whatsapp/interactions','./api/whatsappInteraction','/api/whatsapp/messages','./api/whatsappMessage','/api/whatsapp/reports/queue','./api/whatsappQueueReport','/api/whatsapp/reports/transfer','./api/whatsappTransferReport','/api/whatsapp/queues','/api/cloudProviders','./api/cloudProvider','/api/realtime','./api/realtime','/api/user-settings','./api/user-setting','/api/auth/local','./api/authLocal','/api/auth/activedirectory','/api/jira','./api/jira','/api/rpc','./api/rpc','/api/version','./api/version','/api/system','./api/system','/api/pm2','./api/pm2','/api/logs','root','/www','join','/demo','static','/snippet','snippet','/plugins','/server/files/plugins','/:url(api|auth|components|app|bower_components|assets)/*','get','sendFile','resolve','/index.html','path','./errors','setupLoggers','./api/client-side-logs','default','then','use','./api/user','/api/voice/chanspy','./api/voiceChanSpy','/api/voice/extensions','./api/voiceExtension','/api/voice/mohs','./api/voiceMusicOnHold','./api/voiceQueue','/api/voice/recordings','./api/voiceRecording','/api/screen/recordings','./api/screenRecording','/api/voice/mails','./api/voiceMail','/api/voice/calls/reports','./api/voiceCallReport','./api/voiceDialReport','/api/voice/queues/reports','./api/voiceQueueReport','/api/trunks','./api/trunk','/api/voice/transfers/reports','./api/voiceTransferReport','./api/mailServerOut','/api/mail/queues','/api/mail/substatuses','./api/mailSubstatus','/api/mail/interactions','./api/mailInteraction','./api/mailMessage','./api/mailApplication','/api/mail/reports/queue','./api/mailQueueReport','/api/dashboards','/api/dashboards/items','./api/faxAccount','./api/faxApplication','/api/fax/interactions','./api/faxInteraction','/api/fax/messages','./api/faxMessage','/api/fax/queues','./api/faxQueueReport','./api/smsAccount','/api/sms/applications','/api/sms/interactions','./api/smsInteraction','/api/sms/messages','./api/smsMessage','/api/sms/queues','./api/smsQueue','/api/openchannel/accounts','/api/openchannel/applications','./api/openchannelApplication','/api/openchannel/interactions','./api/openchannelInteraction','/api/openchannel/messages','./api/openchannelMessage','/api/openchannel/queues','./api/openchannelQueue','./api/chatWebsite','/api/openchannel/reports/queue','./api/openchannelQueueReport','./api/chatApplication','/api/chat/interactions','./api/chatInteraction','/api/chat/messages','/api/chat/offline_messages','./api/chatOfflineMessage','/api/chat/queues','/api/chat/groups','/api/chat/proactive_actions','/api/cm/companies','./api/cmCompany','./api/cmContact','/api/cm/hopper','./api/cmHopper','/api/cm/hopper_black','/api/cm/hopper_final','./api/cmHopperFinal','/api/cm/hopper_history','./api/cmHopperHistory','/api/cm/custom_fields','/api/actions','./api/action','/api/automations','/api/canned_answers','./api/cannedAnswer','./api/disposition','/api/conditions','./api/condition','/api/intervals','./api/pause','./api/cdr','/api/voiceQueuesLog','./api/voiceQueuesLog','/api/sounds','./api/sound','/api/tags','./api/contactItemType','/api/cm_contact_has_items','./api/cmContactHasItem','/api/cm_hopper_additional_phones','/api/templates','./api/template','/api/triggers','./api/trigger','/api/variables','./api/variable','./api/integration','/api/integrations/reports','/api/analytics/default_reports','./api/analyticDefaultReport','./api/analyticExtractedReport','/api/analytics/metrics','./api/analyticMetric','/api/analytics/field_reports','./api/analyticFieldReport','/api/analytics/tree_reports','./api/analyticTreeReport','./api/intSalesforceAccount','/api/integrations/salesforce/configurations','./api/intSalesforceConfiguration','/api/integrations/salesforce/fields','/api/integrations/sugarcrm/accounts','./api/intSugarcrmAccount','/api/integrations/sugarcrm/configurations','./api/intSugarcrmConfiguration','/api/integrations/sugarcrm/fields','/api/integrations/desk/accounts','./api/intDeskAccount','/api/integrations/desk/configurations','./api/intDeskConfiguration','./api/intDeskField','/api/integrations/zoho/accounts','./api/intZohoAccount','/api/integrations/zoho/configurations','./api/intZohoConfiguration','/api/integrations/zoho/fields','./api/intZohoField','/api/integrations/zendesk/accounts','./api/intZendeskAccount','/api/integrations/zendesk/configurations','./api/intZendeskConfiguration','./api/intFreshdeskAccount','/api/integrations/freshdesk/configurations','./api/intFreshdeskConfiguration','/api/integrations/freshdesk/fields','/api/integrations/vtiger/accounts','./api/intVtigerAccount','/api/integrations/vtiger/fields','./api/intVtigerField','./api/intServicenowAccount','/api/integrations/servicenow/configurations','./api/intServicenowConfiguration','/api/integrations/servicenow/fields','./api/intServicenowField','/api/integrations/dynamics365/accounts','./api/intDynamics365Account','./api/intDynamics365Configuration','/api/integrations/dynamics365/fields','./api/intDynamics365Field','/api/integrations/freshsales/accounts','/api/integrations/freshsales/configurations','./api/intFreshsalesConfiguration','./api/network','/api/chat/reports/queue','./api/chatQueueReport','/api/chat/internal/messages','./api/chatInternalMessage','/api/jscripty/answers/reports','./api/jscriptyAnswerReport','./api/jscriptyQuestionReport','/api/jscripty/sessions/reports','./api/jscriptySessionReport','./api/squareReport','/api/square/details/reports','./api/squareReportDetail','/api/jscripty/projects','/api/settings','./api/setting','/api/square/odbc','./api/squareOdbc','./api/squareProject','/api/square/recordings','./api/squareRecording','/api/square/messages','./api/squareMessage','/api/teams','./api/team','./api/license','/api/campaigns','/api/migrations','./api/migration','/api/attachments'];(function(_0x437767,_0x3e7b25){var _0x341ab1=function(_0x5c625f){while(--_0x5c625f){_0x437767['push'](_0x437767['shift']());}};_0x341ab1(++_0x3e7b25);}(_0x550b,0x14a));var _0xb550=function(_0x133277,_0xb1d6b2){_0x133277=_0x133277-0x0;var _0x5b4a22=_0x550b[_0x133277];return _0x5b4a22;};'use strict';var path=require(_0xb550('0x0'));var express=require('express');var errors=require(_0xb550('0x1'));var config=require('./config/environment');var setupLoggers=require('./utils/client-side-logger')[_0xb550('0x2')];var clientSideLogs=require(_0xb550('0x3'));exports[_0xb550('0x4')]=function(_0x17f6ac){return setupLoggers(_0x17f6ac)[_0xb550('0x5')](function(){_0x17f6ac[_0xb550('0x6')]('/api/users',require(_0xb550('0x7')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x8'),require(_0xb550('0x9')));_0x17f6ac['use']('/api/voice/contexts',require('./api/voiceContext'));_0x17f6ac[_0xb550('0x6')](_0xb550('0xa'),require(_0xb550('0xb')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xc'),require(_0xb550('0xd')));_0x17f6ac[_0xb550('0x6')]('/api/voice/queues',require(_0xb550('0xe')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xf'),require(_0xb550('0x10')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x11'),require(_0xb550('0x12')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x13'),require(_0xb550('0x14')));_0x17f6ac[_0xb550('0x6')]('/api/voice/mails/messages',require('./api/voiceMailMessage'));_0x17f6ac[_0xb550('0x6')](_0xb550('0x15'),require(_0xb550('0x16')));_0x17f6ac[_0xb550('0x6')]('/api/voice/dials/reports',require(_0xb550('0x17')));_0x17f6ac[_0xb550('0x6')]('/api/voice/agents/reports',require('./api/voiceAgentReport'));_0x17f6ac[_0xb550('0x6')](_0xb550('0x18'),require(_0xb550('0x19')));_0x17f6ac[_0xb550('0x6')]('/api/members/reports',require('./api/memberReport'));_0x17f6ac[_0xb550('0x6')](_0xb550('0x1a'),require(_0xb550('0x1b')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x1c'),require(_0xb550('0x1d')));_0x17f6ac[_0xb550('0x6')]('/api/mail/out_servers',require(_0xb550('0x1e')));_0x17f6ac[_0xb550('0x6')]('/api/mail/accounts',require('./api/mailAccount'));_0x17f6ac[_0xb550('0x6')](_0xb550('0x1f'),require('./api/mailQueue'));_0x17f6ac['use'](_0xb550('0x20'),require(_0xb550('0x21')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x22'),require(_0xb550('0x23')));_0x17f6ac['use']('/api/mail/messages',require(_0xb550('0x24')));_0x17f6ac['use']('/api/mail/applications',require(_0xb550('0x25')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x26'),require(_0xb550('0x27')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x28'),require('./api/dashboard'));_0x17f6ac[_0xb550('0x6')](_0xb550('0x29'),require('./api/dashboardItem'));_0x17f6ac[_0xb550('0x6')]('/api/fax/accounts',require(_0xb550('0x2a')));_0x17f6ac[_0xb550('0x6')]('/api/fax/applications',require(_0xb550('0x2b')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x2c'),require(_0xb550('0x2d')));_0x17f6ac['use'](_0xb550('0x2e'),require(_0xb550('0x2f')));_0x17f6ac['use'](_0xb550('0x30'),require('./api/faxQueue'));_0x17f6ac['use']('/api/fax/reports/queue',require(_0xb550('0x31')));_0x17f6ac[_0xb550('0x6')]('/api/sms/accounts',require(_0xb550('0x32')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x33'),require('./api/smsApplication'));_0x17f6ac[_0xb550('0x6')](_0xb550('0x34'),require(_0xb550('0x35')));_0x17f6ac['use'](_0xb550('0x36'),require(_0xb550('0x37')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x38'),require(_0xb550('0x39')));_0x17f6ac['use'](_0xb550('0x3a'),require('./api/openchannelAccount'));_0x17f6ac[_0xb550('0x6')](_0xb550('0x3b'),require(_0xb550('0x3c')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x3d'),require(_0xb550('0x3e')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x3f'),require(_0xb550('0x40')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x41'),require(_0xb550('0x42')));_0x17f6ac[_0xb550('0x6')]('/api/chat/websites',require(_0xb550('0x43')));_0x17f6ac['use'](_0xb550('0x44'),require(_0xb550('0x45')));_0x17f6ac[_0xb550('0x6')]('/api/chat/applications',require(_0xb550('0x46')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x47'),require(_0xb550('0x48')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x49'),require('./api/chatMessage'));_0x17f6ac[_0xb550('0x6')](_0xb550('0x4a'),require(_0xb550('0x4b')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x4c'),require('./api/chatQueue'));_0x17f6ac['use'](_0xb550('0x4d'),require('./api/chatGroup'));_0x17f6ac[_0xb550('0x6')](_0xb550('0x4e'),require('./api/chatProactiveAction'));_0x17f6ac['use'](_0xb550('0x4f'),require(_0xb550('0x50')));_0x17f6ac[_0xb550('0x6')]('/api/cm/contacts',require(_0xb550('0x51')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x52'),require(_0xb550('0x53')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x54'),require('./api/cmHopperBlack'));_0x17f6ac['use'](_0xb550('0x55'),require(_0xb550('0x56')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x57'),require(_0xb550('0x58')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x59'),require('./api/cmCustomField'));_0x17f6ac[_0xb550('0x6')](_0xb550('0x5a'),require(_0xb550('0x5b')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x5c'),require('./api/automation'));_0x17f6ac[_0xb550('0x6')](_0xb550('0x5d'),require(_0xb550('0x5e')));_0x17f6ac['use']('/api/dispositions',require(_0xb550('0x5f')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x60'),require(_0xb550('0x61')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x62'),require('./api/interval'));_0x17f6ac[_0xb550('0x6')]('/api/pauses',require(_0xb550('0x63')));_0x17f6ac[_0xb550('0x6')]('/api/cdr',require(_0xb550('0x64')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x65'),require(_0xb550('0x66')));_0x17f6ac['use']('/api/schedules',require('./api/schedule'));_0x17f6ac[_0xb550('0x6')](_0xb550('0x67'),require(_0xb550('0x68')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x69'),require('./api/tag'));_0x17f6ac[_0xb550('0x6')]('/api/contact_item_types',require(_0xb550('0x6a')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x6b'),require(_0xb550('0x6c')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x6d'),require('./api/cmHopperAdditionalPhone'));_0x17f6ac[_0xb550('0x6')](_0xb550('0x6e'),require(_0xb550('0x6f')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x70'),require(_0xb550('0x71')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x72'),require(_0xb550('0x73')));_0x17f6ac[_0xb550('0x6')]('/api/integrations',require(_0xb550('0x74')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x75'),require('./api/integrationReport'));_0x17f6ac['use']('/api/analytics/custom_reports',require('./api/analyticCustomReport'));_0x17f6ac[_0xb550('0x6')](_0xb550('0x76'),require(_0xb550('0x77')));_0x17f6ac[_0xb550('0x6')]('/api/analytics/extracted_reports',require(_0xb550('0x78')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x79'),require(_0xb550('0x7a')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x7b'),require(_0xb550('0x7c')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x7d'),require(_0xb550('0x7e')));_0x17f6ac[_0xb550('0x6')]('/api/integrations/salesforce/accounts',require(_0xb550('0x7f')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x80'),require(_0xb550('0x81')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x82'),require('./api/intSalesforceField'));_0x17f6ac[_0xb550('0x6')](_0xb550('0x83'),require(_0xb550('0x84')));_0x17f6ac['use'](_0xb550('0x85'),require(_0xb550('0x86')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x87'),require('./api/intSugarcrmField'));_0x17f6ac[_0xb550('0x6')](_0xb550('0x88'),require(_0xb550('0x89')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x8a'),require(_0xb550('0x8b')));_0x17f6ac[_0xb550('0x6')]('/api/integrations/desk/fields',require(_0xb550('0x8c')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x8d'),require(_0xb550('0x8e')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x8f'),require(_0xb550('0x90')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x91'),require(_0xb550('0x92')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x93'),require(_0xb550('0x94')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x95'),require(_0xb550('0x96')));_0x17f6ac[_0xb550('0x6')]('/api/integrations/zendesk/fields',require('./api/intZendeskField'));_0x17f6ac[_0xb550('0x6')]('/api/integrations/freshdesk/accounts',require(_0xb550('0x97')));_0x17f6ac['use'](_0xb550('0x98'),require(_0xb550('0x99')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x9a'),require('./api/intFreshdeskField'));_0x17f6ac[_0xb550('0x6')](_0xb550('0x9b'),require(_0xb550('0x9c')));_0x17f6ac[_0xb550('0x6')]('/api/integrations/vtiger/configurations',require('./api/intVtigerConfiguration'));_0x17f6ac[_0xb550('0x6')](_0xb550('0x9d'),require(_0xb550('0x9e')));_0x17f6ac[_0xb550('0x6')]('/api/integrations/servicenow/accounts',require(_0xb550('0x9f')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xa0'),require(_0xb550('0xa1')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xa2'),require(_0xb550('0xa3')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xa4'),require(_0xb550('0xa5')));_0x17f6ac['use']('/api/integrations/dynamics365/configurations',require(_0xb550('0xa6')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xa7'),require(_0xb550('0xa8')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xa9'),require('./api/intFreshsalesAccount'));_0x17f6ac['use'](_0xb550('0xaa'),require(_0xb550('0xab')));_0x17f6ac[_0xb550('0x6')]('/api/integrations/freshsales/fields',require('./api/intFreshsalesField'));_0x17f6ac[_0xb550('0x6')]('/api/networks',require(_0xb550('0xac')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xad'),require(_0xb550('0xae')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xaf'),require(_0xb550('0xb0')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xb1'),require(_0xb550('0xb2')));_0x17f6ac['use']('/api/jscripty/questions/reports',require(_0xb550('0xb3')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xb4'),require(_0xb550('0xb5')));_0x17f6ac[_0xb550('0x6')]('/api/sms/reports/queue',require('./api/smsQueueReport'));_0x17f6ac[_0xb550('0x6')]('/api/square/reports',require(_0xb550('0xb6')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xb7'),require(_0xb550('0xb8')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xb9'),require('./api/jscriptyProject'));_0x17f6ac[_0xb550('0x6')](_0xb550('0xba'),require(_0xb550('0xbb')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xbc'),require(_0xb550('0xbd')));_0x17f6ac[_0xb550('0x6')]('/api/square/projects',require(_0xb550('0xbe')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xbf'),require(_0xb550('0xc0')));_0x17f6ac['use'](_0xb550('0xc1'),require(_0xb550('0xc2')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xc3'),require(_0xb550('0xc4')));_0x17f6ac[_0xb550('0x6')]('/api/license',require(_0xb550('0xc5')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xc6'),require('./api/campaign'));_0x17f6ac[_0xb550('0x6')](_0xb550('0xc7'),require(_0xb550('0xc8')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xc9'),require(_0xb550('0xca')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xcb'),require(_0xb550('0xcc')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xcd'),require(_0xb550('0xce')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xcf'),require(_0xb550('0xd0')));_0x17f6ac[_0xb550('0x6')]('/api/fax/reports/transfer',require(_0xb550('0xd1')));_0x17f6ac['use'](_0xb550('0xd2'),require(_0xb550('0xd3')));_0x17f6ac['use'](_0xb550('0xd4'),require('./api/smsTransferReport'));_0x17f6ac['use'](_0xb550('0xd5'),require(_0xb550('0xd6')));_0x17f6ac[_0xb550('0x6')]('/api/voice/prefixes',require('./api/voicePrefix'));_0x17f6ac[_0xb550('0x6')](_0xb550('0xd7'),require('./api/userProfile'));_0x17f6ac[_0xb550('0x6')]('/api/userProfile/sections',require(_0xb550('0xd8')));_0x17f6ac[_0xb550('0x6')]('/api/userProfile/resources',require(_0xb550('0xd9')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xda'),require(_0xb550('0xdb')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xdc'),require(_0xb550('0xdd')));_0x17f6ac['use'](_0xb550('0xde'),require('./api/whatsappApplication'));_0x17f6ac[_0xb550('0x6')](_0xb550('0xdf'),require(_0xb550('0xe0')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xe1'),require(_0xb550('0xe2')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xe3'),require(_0xb550('0xe4')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xe5'),require(_0xb550('0xe6')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xe7'),require('./api/whatsappQueue'));_0x17f6ac[_0xb550('0x6')](_0xb550('0xe8'),require(_0xb550('0xe9')));_0x17f6ac['use'](_0xb550('0xea'),require(_0xb550('0xeb')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xec'),require(_0xb550('0xed')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xee'),require(_0xb550('0xef')));_0x17f6ac[_0xb550('0x6')]('/api/auth/google',require('./api/authGoogle'));_0x17f6ac[_0xb550('0x6')](_0xb550('0xf0'),require('./api/authActiveDirectory'));_0x17f6ac[_0xb550('0x6')](_0xb550('0xf1'),require(_0xb550('0xf2')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xf3'),require(_0xb550('0xf4')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xf5'),require(_0xb550('0xf6')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xf7'),require(_0xb550('0xf8')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xf9'),require(_0xb550('0xfa')));_0x17f6ac[_0xb550('0x6')]('/api/webbar',require('./api/webbar'));_0x17f6ac[_0xb550('0x6')](_0xb550('0xfb'),clientSideLogs);_0x17f6ac[_0xb550('0x6')]('/apidoc',express['static'](path['join'](config[_0xb550('0xfc')],'/apidoc')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xfd'),express['static'](path[_0xb550('0xfe')](config[_0xb550('0xfc')],'/www')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xff'),express[_0xb550('0x100')](path[_0xb550('0xfe')](config[_0xb550('0xfc')],_0xb550('0xff'))));_0x17f6ac[_0xb550('0x6')](_0xb550('0x101'),express['static'](path[_0xb550('0xfe')](config['root'],_0xb550('0x102'),'3.0.0')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x103'),express['static'](path[_0xb550('0xfe')](config[_0xb550('0xfc')],_0xb550('0x104'))));_0x17f6ac['route'](_0xb550('0x105'))[_0xb550('0x106')](errors[0x194]);_0x17f6ac['route']('/*')[_0xb550('0x106')](function(_0xec3a8f,_0x42b209){_0x42b209[_0xb550('0x107')](path[_0xb550('0x108')](_0x17f6ac['get']('appPath')+_0xb550('0x109')));});return _0x17f6ac;});};
\ No newline at end of file
+var _0x3626=['/api/variables','./api/variable','./api/integration','/api/integrations/reports','./api/integrationReport','./api/analyticCustomReport','./api/analyticDefaultReport','/api/analytics/extracted_reports','/api/analytics/metrics','./api/analyticFieldReport','./api/analyticTreeReport','/api/integrations/salesforce/accounts','./api/intSalesforceAccount','./api/intSalesforceConfiguration','/api/integrations/salesforce/fields','./api/intSalesforceField','/api/integrations/sugarcrm/accounts','./api/intSugarcrmAccount','/api/integrations/sugarcrm/configurations','./api/intSugarcrmConfiguration','/api/integrations/sugarcrm/fields','./api/intSugarcrmField','/api/integrations/desk/accounts','./api/intDeskAccount','/api/integrations/desk/configurations','./api/intDeskField','./api/intZohoAccount','/api/integrations/zoho/fields','/api/integrations/zendesk/accounts','./api/intZendeskAccount','/api/integrations/zendesk/configurations','./api/intZendeskField','./api/intFreshdeskAccount','/api/integrations/freshdesk/configurations','./api/intFreshdeskConfiguration','/api/integrations/freshdesk/fields','./api/intFreshdeskField','./api/intVtigerAccount','/api/integrations/vtiger/configurations','./api/intVtigerConfiguration','/api/integrations/vtiger/fields','./api/intVtigerField','./api/intServicenowAccount','./api/intServicenowConfiguration','/api/integrations/servicenow/fields','/api/integrations/dynamics365/accounts','./api/intDynamics365Account','/api/integrations/dynamics365/configurations','/api/integrations/dynamics365/fields','./api/intFreshsalesAccount','/api/integrations/freshsales/configurations','./api/intFreshsalesConfiguration','/api/integrations/freshsales/fields','./api/intFreshsalesField','/api/networks','./api/network','./api/chatQueueReport','./api/chatInternalMessage','./api/jscriptyAnswerReport','/api/jscripty/questions/reports','./api/jscriptyQuestionReport','/api/jscripty/sessions/reports','./api/jscriptySessionReport','/api/sms/reports/queue','./api/smsQueueReport','/api/square/reports','./api/squareReport','/api/square/details/reports','./api/squareReportDetail','/api/jscripty/projects','./api/jscriptyProject','/api/settings','./api/squareOdbc','/api/square/projects','./api/squareProject','./api/squareRecording','/api/square/messages','/api/migrations','./api/migration','./api/attachment','/api/plugins','./api/plugin','/api/mail/reports/transfer','./api/mailTransferReport','/api/chat/reports/transfer','./api/chatTransferReport','./api/faxTransferReport','/api/openchannel/reports/transfer','./api/smsTransferReport','/api/cm/lists','./api/cmList','/api/voice/prefixes','./api/voicePrefix','/api/userProfiles','./api/userProfile','/api/userProfile/sections','/api/userProfile/resources','/api/userNotifications','./api/userNotification','/api/whatsapp/accounts','./api/whatsappAccount','./api/whatsappInteraction','./api/whatsappMessage','./api/whatsappQueueReport','./api/whatsappTransferReport','/api/whatsapp/queues','/api/cloudProviders','/api/realtime','./api/realtime','/api/user-settings','./api/user-setting','/api/auth/local','./api/authLocal','./api/authGoogle','/api/auth/activedirectory','./api/authActiveDirectory','/api/jira','./api/jira','/api/version','./api/version','./api/system','/api/pm2','./api/pm2','/api/webbar','./api/webbar','/api/logs','/apidoc','static','join','/www','/demo','root','snippet','3.0.0','/server/files/plugins','/:url(api|auth|components|app|bower_components|assets)/*','get','sendFile','resolve','appPath','/index.html','path','express','./errors','./config/environment','setupLoggers','./api/client-side-logs','default','then','use','./api/user','/api/voice/chanspy','./api/voiceContext','/api/voice/extensions','./api/voiceExtension','./api/voiceMusicOnHold','/api/voice/queues','./api/voiceQueue','/api/voice/recordings','/api/screen/recordings','./api/screenRecording','/api/voice/mails','/api/voice/calls/reports','/api/voice/dials/reports','./api/voiceDialReport','/api/voice/agents/reports','./api/voiceAgentReport','/api/members/reports','./api/memberReport','/api/trunks','./api/trunk','/api/mail/out_servers','./api/mailServerOut','/api/mail/accounts','./api/mailAccount','/api/mail/queues','./api/mailQueue','/api/mail/substatuses','./api/mailSubstatus','/api/mail/interactions','/api/mail/messages','./api/mailMessage','/api/mail/reports/queue','/api/dashboards','./api/dashboard','/api/dashboards/items','./api/dashboardItem','/api/fax/accounts','./api/faxAccount','/api/fax/applications','./api/faxApplication','/api/fax/messages','./api/faxMessage','/api/fax/queues','./api/faxQueue','/api/fax/reports/queue','./api/faxQueueReport','/api/sms/accounts','./api/smsApplication','/api/sms/interactions','./api/smsInteraction','/api/sms/messages','./api/smsMessage','/api/sms/queues','/api/openchannel/accounts','/api/openchannel/applications','/api/openchannel/interactions','./api/openchannelInteraction','./api/openchannelMessage','/api/openchannel/queues','./api/openchannelQueue','./api/chatWebsite','/api/openchannel/reports/queue','/api/chat/applications','./api/chatApplication','./api/chatInteraction','/api/chat/messages','./api/chatMessage','/api/chat/offline_messages','./api/chatOfflineMessage','/api/chat/groups','/api/chat/proactive_actions','./api/chatProactiveAction','/api/cm/companies','./api/cmCompany','/api/cm/hopper','./api/cmHopper','/api/cm/hopper_black','./api/cmHopperBlack','/api/cm/hopper_final','./api/cmHopperHistory','/api/cm/custom_fields','./api/cmCustomField','/api/actions','./api/action','/api/automations','/api/canned_answers','/api/dispositions','./api/disposition','/api/conditions','./api/condition','/api/intervals','./api/interval','./api/pause','/api/cdr','/api/schedules','./api/schedule','/api/sounds','./api/sound','/api/tags','./api/tag','./api/contactItemType','/api/cm_contact_has_items','./api/cmContactHasItem','/api/cm_hopper_additional_phones','./api/cmHopperAdditionalPhone','/api/templates','/api/triggers','./api/trigger'];(function(_0x2703e5,_0x3319bf){var _0x4427a4=function(_0x39e0c3){while(--_0x39e0c3){_0x2703e5['push'](_0x2703e5['shift']());}};_0x4427a4(++_0x3319bf);}(_0x3626,0x190));var _0x6362=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x3626[_0x5b644e];return _0x49c6bf;};'use strict';var path=require(_0x6362('0x0'));var express=require(_0x6362('0x1'));var errors=require(_0x6362('0x2'));var config=require(_0x6362('0x3'));var setupLoggers=require('./utils/client-side-logger')[_0x6362('0x4')];var clientSideLogs=require(_0x6362('0x5'));exports[_0x6362('0x6')]=function(_0x56fe36){return setupLoggers(_0x56fe36)[_0x6362('0x7')](function(){_0x56fe36[_0x6362('0x8')]('/api/users',require(_0x6362('0x9')));_0x56fe36[_0x6362('0x8')](_0x6362('0xa'),require('./api/voiceChanSpy'));_0x56fe36['use']('/api/voice/contexts',require(_0x6362('0xb')));_0x56fe36[_0x6362('0x8')](_0x6362('0xc'),require(_0x6362('0xd')));_0x56fe36['use']('/api/voice/mohs',require(_0x6362('0xe')));_0x56fe36[_0x6362('0x8')](_0x6362('0xf'),require(_0x6362('0x10')));_0x56fe36[_0x6362('0x8')](_0x6362('0x11'),require('./api/voiceRecording'));_0x56fe36[_0x6362('0x8')](_0x6362('0x12'),require(_0x6362('0x13')));_0x56fe36[_0x6362('0x8')](_0x6362('0x14'),require('./api/voiceMail'));_0x56fe36[_0x6362('0x8')]('/api/voice/mails/messages',require('./api/voiceMailMessage'));_0x56fe36[_0x6362('0x8')](_0x6362('0x15'),require('./api/voiceCallReport'));_0x56fe36['use'](_0x6362('0x16'),require(_0x6362('0x17')));_0x56fe36['use'](_0x6362('0x18'),require(_0x6362('0x19')));_0x56fe36[_0x6362('0x8')]('/api/voice/queues/reports',require('./api/voiceQueueReport'));_0x56fe36[_0x6362('0x8')](_0x6362('0x1a'),require(_0x6362('0x1b')));_0x56fe36[_0x6362('0x8')](_0x6362('0x1c'),require(_0x6362('0x1d')));_0x56fe36[_0x6362('0x8')]('/api/voice/transfers/reports',require('./api/voiceTransferReport'));_0x56fe36[_0x6362('0x8')](_0x6362('0x1e'),require(_0x6362('0x1f')));_0x56fe36[_0x6362('0x8')](_0x6362('0x20'),require(_0x6362('0x21')));_0x56fe36['use'](_0x6362('0x22'),require(_0x6362('0x23')));_0x56fe36[_0x6362('0x8')](_0x6362('0x24'),require(_0x6362('0x25')));_0x56fe36['use'](_0x6362('0x26'),require('./api/mailInteraction'));_0x56fe36[_0x6362('0x8')](_0x6362('0x27'),require(_0x6362('0x28')));_0x56fe36[_0x6362('0x8')]('/api/mail/applications',require('./api/mailApplication'));_0x56fe36['use'](_0x6362('0x29'),require('./api/mailQueueReport'));_0x56fe36['use'](_0x6362('0x2a'),require(_0x6362('0x2b')));_0x56fe36[_0x6362('0x8')](_0x6362('0x2c'),require(_0x6362('0x2d')));_0x56fe36[_0x6362('0x8')](_0x6362('0x2e'),require(_0x6362('0x2f')));_0x56fe36[_0x6362('0x8')](_0x6362('0x30'),require(_0x6362('0x31')));_0x56fe36[_0x6362('0x8')]('/api/fax/interactions',require('./api/faxInteraction'));_0x56fe36[_0x6362('0x8')](_0x6362('0x32'),require(_0x6362('0x33')));_0x56fe36[_0x6362('0x8')](_0x6362('0x34'),require(_0x6362('0x35')));_0x56fe36['use'](_0x6362('0x36'),require(_0x6362('0x37')));_0x56fe36[_0x6362('0x8')](_0x6362('0x38'),require('./api/smsAccount'));_0x56fe36[_0x6362('0x8')]('/api/sms/applications',require(_0x6362('0x39')));_0x56fe36[_0x6362('0x8')](_0x6362('0x3a'),require(_0x6362('0x3b')));_0x56fe36['use'](_0x6362('0x3c'),require(_0x6362('0x3d')));_0x56fe36[_0x6362('0x8')](_0x6362('0x3e'),require('./api/smsQueue'));_0x56fe36[_0x6362('0x8')](_0x6362('0x3f'),require('./api/openchannelAccount'));_0x56fe36['use'](_0x6362('0x40'),require('./api/openchannelApplication'));_0x56fe36['use'](_0x6362('0x41'),require(_0x6362('0x42')));_0x56fe36['use']('/api/openchannel/messages',require(_0x6362('0x43')));_0x56fe36['use'](_0x6362('0x44'),require(_0x6362('0x45')));_0x56fe36[_0x6362('0x8')]('/api/chat/websites',require(_0x6362('0x46')));_0x56fe36['use'](_0x6362('0x47'),require('./api/openchannelQueueReport'));_0x56fe36['use'](_0x6362('0x48'),require(_0x6362('0x49')));_0x56fe36[_0x6362('0x8')]('/api/chat/interactions',require(_0x6362('0x4a')));_0x56fe36['use'](_0x6362('0x4b'),require(_0x6362('0x4c')));_0x56fe36['use'](_0x6362('0x4d'),require(_0x6362('0x4e')));_0x56fe36['use']('/api/chat/queues',require('./api/chatQueue'));_0x56fe36[_0x6362('0x8')](_0x6362('0x4f'),require('./api/chatGroup'));_0x56fe36[_0x6362('0x8')](_0x6362('0x50'),require(_0x6362('0x51')));_0x56fe36[_0x6362('0x8')](_0x6362('0x52'),require(_0x6362('0x53')));_0x56fe36['use']('/api/cm/contacts',require('./api/cmContact'));_0x56fe36[_0x6362('0x8')](_0x6362('0x54'),require(_0x6362('0x55')));_0x56fe36[_0x6362('0x8')](_0x6362('0x56'),require(_0x6362('0x57')));_0x56fe36[_0x6362('0x8')](_0x6362('0x58'),require('./api/cmHopperFinal'));_0x56fe36['use']('/api/cm/hopper_history',require(_0x6362('0x59')));_0x56fe36['use'](_0x6362('0x5a'),require(_0x6362('0x5b')));_0x56fe36['use'](_0x6362('0x5c'),require(_0x6362('0x5d')));_0x56fe36['use'](_0x6362('0x5e'),require('./api/automation'));_0x56fe36['use'](_0x6362('0x5f'),require('./api/cannedAnswer'));_0x56fe36[_0x6362('0x8')](_0x6362('0x60'),require(_0x6362('0x61')));_0x56fe36['use'](_0x6362('0x62'),require(_0x6362('0x63')));_0x56fe36['use'](_0x6362('0x64'),require(_0x6362('0x65')));_0x56fe36[_0x6362('0x8')]('/api/pauses',require(_0x6362('0x66')));_0x56fe36['use'](_0x6362('0x67'),require('./api/cdr'));_0x56fe36['use']('/api/voiceQueuesLog',require('./api/voiceQueuesLog'));_0x56fe36[_0x6362('0x8')](_0x6362('0x68'),require(_0x6362('0x69')));_0x56fe36['use'](_0x6362('0x6a'),require(_0x6362('0x6b')));_0x56fe36[_0x6362('0x8')](_0x6362('0x6c'),require(_0x6362('0x6d')));_0x56fe36[_0x6362('0x8')]('/api/contact_item_types',require(_0x6362('0x6e')));_0x56fe36[_0x6362('0x8')](_0x6362('0x6f'),require(_0x6362('0x70')));_0x56fe36['use'](_0x6362('0x71'),require(_0x6362('0x72')));_0x56fe36['use'](_0x6362('0x73'),require('./api/template'));_0x56fe36['use'](_0x6362('0x74'),require(_0x6362('0x75')));_0x56fe36[_0x6362('0x8')](_0x6362('0x76'),require(_0x6362('0x77')));_0x56fe36[_0x6362('0x8')]('/api/integrations',require(_0x6362('0x78')));_0x56fe36[_0x6362('0x8')](_0x6362('0x79'),require(_0x6362('0x7a')));_0x56fe36[_0x6362('0x8')]('/api/analytics/custom_reports',require(_0x6362('0x7b')));_0x56fe36['use']('/api/analytics/default_reports',require(_0x6362('0x7c')));_0x56fe36[_0x6362('0x8')](_0x6362('0x7d'),require('./api/analyticExtractedReport'));_0x56fe36[_0x6362('0x8')](_0x6362('0x7e'),require('./api/analyticMetric'));_0x56fe36[_0x6362('0x8')]('/api/analytics/field_reports',require(_0x6362('0x7f')));_0x56fe36['use']('/api/analytics/tree_reports',require(_0x6362('0x80')));_0x56fe36[_0x6362('0x8')](_0x6362('0x81'),require(_0x6362('0x82')));_0x56fe36['use']('/api/integrations/salesforce/configurations',require(_0x6362('0x83')));_0x56fe36['use'](_0x6362('0x84'),require(_0x6362('0x85')));_0x56fe36[_0x6362('0x8')](_0x6362('0x86'),require(_0x6362('0x87')));_0x56fe36[_0x6362('0x8')](_0x6362('0x88'),require(_0x6362('0x89')));_0x56fe36[_0x6362('0x8')](_0x6362('0x8a'),require(_0x6362('0x8b')));_0x56fe36['use'](_0x6362('0x8c'),require(_0x6362('0x8d')));_0x56fe36[_0x6362('0x8')](_0x6362('0x8e'),require('./api/intDeskConfiguration'));_0x56fe36[_0x6362('0x8')]('/api/integrations/desk/fields',require(_0x6362('0x8f')));_0x56fe36['use']('/api/integrations/zoho/accounts',require(_0x6362('0x90')));_0x56fe36[_0x6362('0x8')]('/api/integrations/zoho/configurations',require('./api/intZohoConfiguration'));_0x56fe36[_0x6362('0x8')](_0x6362('0x91'),require('./api/intZohoField'));_0x56fe36[_0x6362('0x8')](_0x6362('0x92'),require(_0x6362('0x93')));_0x56fe36[_0x6362('0x8')](_0x6362('0x94'),require('./api/intZendeskConfiguration'));_0x56fe36['use']('/api/integrations/zendesk/fields',require(_0x6362('0x95')));_0x56fe36['use']('/api/integrations/freshdesk/accounts',require(_0x6362('0x96')));_0x56fe36[_0x6362('0x8')](_0x6362('0x97'),require(_0x6362('0x98')));_0x56fe36[_0x6362('0x8')](_0x6362('0x99'),require(_0x6362('0x9a')));_0x56fe36[_0x6362('0x8')]('/api/integrations/vtiger/accounts',require(_0x6362('0x9b')));_0x56fe36[_0x6362('0x8')](_0x6362('0x9c'),require(_0x6362('0x9d')));_0x56fe36[_0x6362('0x8')](_0x6362('0x9e'),require(_0x6362('0x9f')));_0x56fe36[_0x6362('0x8')]('/api/integrations/servicenow/accounts',require(_0x6362('0xa0')));_0x56fe36[_0x6362('0x8')]('/api/integrations/servicenow/configurations',require(_0x6362('0xa1')));_0x56fe36[_0x6362('0x8')](_0x6362('0xa2'),require('./api/intServicenowField'));_0x56fe36[_0x6362('0x8')](_0x6362('0xa3'),require(_0x6362('0xa4')));_0x56fe36[_0x6362('0x8')](_0x6362('0xa5'),require('./api/intDynamics365Configuration'));_0x56fe36[_0x6362('0x8')](_0x6362('0xa6'),require('./api/intDynamics365Field'));_0x56fe36[_0x6362('0x8')]('/api/integrations/freshsales/accounts',require(_0x6362('0xa7')));_0x56fe36[_0x6362('0x8')](_0x6362('0xa8'),require(_0x6362('0xa9')));_0x56fe36[_0x6362('0x8')](_0x6362('0xaa'),require(_0x6362('0xab')));_0x56fe36['use'](_0x6362('0xac'),require(_0x6362('0xad')));_0x56fe36[_0x6362('0x8')]('/api/chat/reports/queue',require(_0x6362('0xae')));_0x56fe36[_0x6362('0x8')]('/api/chat/internal/messages',require(_0x6362('0xaf')));_0x56fe36['use']('/api/jscripty/answers/reports',require(_0x6362('0xb0')));_0x56fe36['use'](_0x6362('0xb1'),require(_0x6362('0xb2')));_0x56fe36[_0x6362('0x8')](_0x6362('0xb3'),require(_0x6362('0xb4')));_0x56fe36[_0x6362('0x8')](_0x6362('0xb5'),require(_0x6362('0xb6')));_0x56fe36[_0x6362('0x8')](_0x6362('0xb7'),require(_0x6362('0xb8')));_0x56fe36['use'](_0x6362('0xb9'),require(_0x6362('0xba')));_0x56fe36[_0x6362('0x8')](_0x6362('0xbb'),require(_0x6362('0xbc')));_0x56fe36[_0x6362('0x8')](_0x6362('0xbd'),require('./api/setting'));_0x56fe36[_0x6362('0x8')]('/api/square/odbc',require(_0x6362('0xbe')));_0x56fe36[_0x6362('0x8')](_0x6362('0xbf'),require(_0x6362('0xc0')));_0x56fe36['use']('/api/square/recordings',require(_0x6362('0xc1')));_0x56fe36['use'](_0x6362('0xc2'),require('./api/squareMessage'));_0x56fe36[_0x6362('0x8')]('/api/teams',require('./api/team'));_0x56fe36[_0x6362('0x8')]('/api/license',require('./api/license'));_0x56fe36[_0x6362('0x8')]('/api/campaigns',require('./api/campaign'));_0x56fe36[_0x6362('0x8')](_0x6362('0xc3'),require(_0x6362('0xc4')));_0x56fe36['use']('/api/attachments',require(_0x6362('0xc5')));_0x56fe36[_0x6362('0x8')](_0x6362('0xc6'),require(_0x6362('0xc7')));_0x56fe36[_0x6362('0x8')](_0x6362('0xc8'),require(_0x6362('0xc9')));_0x56fe36[_0x6362('0x8')](_0x6362('0xca'),require(_0x6362('0xcb')));_0x56fe36[_0x6362('0x8')]('/api/fax/reports/transfer',require(_0x6362('0xcc')));_0x56fe36['use'](_0x6362('0xcd'),require('./api/openchannelTransferReport'));_0x56fe36[_0x6362('0x8')]('/api/sms/reports/transfer',require(_0x6362('0xce')));_0x56fe36['use'](_0x6362('0xcf'),require(_0x6362('0xd0')));_0x56fe36['use'](_0x6362('0xd1'),require(_0x6362('0xd2')));_0x56fe36['use'](_0x6362('0xd3'),require(_0x6362('0xd4')));_0x56fe36[_0x6362('0x8')](_0x6362('0xd5'),require('./api/userProfileSection'));_0x56fe36['use'](_0x6362('0xd6'),require('./api/userProfileResource'));_0x56fe36[_0x6362('0x8')](_0x6362('0xd7'),require(_0x6362('0xd8')));_0x56fe36['use'](_0x6362('0xd9'),require(_0x6362('0xda')));_0x56fe36[_0x6362('0x8')]('/api/whatsapp/applications',require('./api/whatsappApplication'));_0x56fe36[_0x6362('0x8')]('/api/whatsapp/interactions',require(_0x6362('0xdb')));_0x56fe36[_0x6362('0x8')]('/api/whatsapp/messages',require(_0x6362('0xdc')));_0x56fe36['use']('/api/whatsapp/reports/queue',require(_0x6362('0xdd')));_0x56fe36[_0x6362('0x8')]('/api/whatsapp/reports/transfer',require(_0x6362('0xde')));_0x56fe36[_0x6362('0x8')](_0x6362('0xdf'),require('./api/whatsappQueue'));_0x56fe36[_0x6362('0x8')](_0x6362('0xe0'),require('./api/cloudProvider'));_0x56fe36[_0x6362('0x8')](_0x6362('0xe1'),require(_0x6362('0xe2')));_0x56fe36[_0x6362('0x8')](_0x6362('0xe3'),require(_0x6362('0xe4')));_0x56fe36['use'](_0x6362('0xe5'),require(_0x6362('0xe6')));_0x56fe36['use']('/api/auth/google',require(_0x6362('0xe7')));_0x56fe36[_0x6362('0x8')](_0x6362('0xe8'),require(_0x6362('0xe9')));_0x56fe36[_0x6362('0x8')](_0x6362('0xea'),require(_0x6362('0xeb')));_0x56fe36[_0x6362('0x8')]('/api/rpc',require('./api/rpc'));_0x56fe36['use'](_0x6362('0xec'),require(_0x6362('0xed')));_0x56fe36[_0x6362('0x8')]('/api/system',require(_0x6362('0xee')));_0x56fe36[_0x6362('0x8')](_0x6362('0xef'),require(_0x6362('0xf0')));_0x56fe36[_0x6362('0x8')](_0x6362('0xf1'),require(_0x6362('0xf2')));_0x56fe36['use'](_0x6362('0xf3'),clientSideLogs);_0x56fe36[_0x6362('0x8')](_0x6362('0xf4'),express[_0x6362('0xf5')](path[_0x6362('0xf6')](config['root'],'/apidoc')));_0x56fe36[_0x6362('0x8')](_0x6362('0xf7'),express[_0x6362('0xf5')](path[_0x6362('0xf6')](config['root'],_0x6362('0xf7'))));_0x56fe36[_0x6362('0x8')](_0x6362('0xf8'),express[_0x6362('0xf5')](path[_0x6362('0xf6')](config[_0x6362('0xf9')],'/demo')));_0x56fe36['use']('/snippet',express[_0x6362('0xf5')](path[_0x6362('0xf6')](config['root'],_0x6362('0xfa'),_0x6362('0xfb'))));_0x56fe36['use']('/plugins',express['static'](path[_0x6362('0xf6')](config[_0x6362('0xf9')],_0x6362('0xfc'))));_0x56fe36['route'](_0x6362('0xfd'))[_0x6362('0xfe')](errors[0x194]);_0x56fe36['route']('/*')['get'](function(_0x380a10,_0x3c8881){_0x3c8881[_0x6362('0xff')](path[_0x6362('0x100')](_0x56fe36[_0x6362('0xfe')](_0x6362('0x101'))+_0x6362('0x102')));});return _0x56fe36;});};
\ No newline at end of file
index 2612d83..1dcd138 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5dc=['../api/squareProject/squareProject.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','../api/whatsappQueueReport/whatsappQueueReport.rpc','server','http','rpc','port','error','../config/triggers','RPC\x20listening\x20on\x20','jayson/promise','lodash','../config/environment','listen','merge','../api/user/user.rpc','../api/voiceExtension/voiceExtension.rpc','../api/voiceQueue/voiceQueue.rpc','../api/voiceRecording/voiceRecording.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/voiceQueueReport/voiceQueueReport.rpc','../api/memberReport/memberReport.rpc','../api/voiceTransferReport/voiceTransferReport.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailQueue/mailQueue.rpc','../api/mailMessage/mailMessage.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxAccount/faxAccount.rpc','../api/faxApplication/faxApplication.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/openchannelQueue/openchannelQueue.rpc','../api/chatMessage/chatMessage.rpc','../api/chatQueue/chatQueue.rpc','../api/cmContact/cmContact.rpc','../api/cmHopper/cmHopper.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/interval/interval.rpc','../api/pause/pause.rpc','../api/sound/sound.rpc','../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc','../api/template/template.rpc','../api/trigger/trigger.rpc','../api/variable/variable.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intZendeskAccount/intZendeskAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc','../api/intServicenowAccount/intServicenowAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/intFreshsalesAccount/intFreshsalesAccount.rpc','../api/smsQueueReport/smsQueueReport.rpc','../api/squareReport/squareReport.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/setting/setting.rpc','../api/squareOdbc/squareOdbc.rpc'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xc5dc,0x128));var _0xcc5d=function(_0x30dec8,_0x54f8cb){_0x30dec8=_0x30dec8-0x0;var _0x6c966c=_0xc5dc[_0x30dec8];return _0x6c966c;};'use strict';var jayson=require(_0xcc5d('0x0'));var _=require(_0xcc5d('0x1'));var config=require(_0xcc5d('0x2'));exports[_0xcc5d('0x3')]=function(){return new Promise(function(_0x363cad,_0x468c7f){var _0x2dcbbf={};_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x5')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x6')));_0x2dcbbf=_['merge'](_0x2dcbbf,require(_0xcc5d('0x7')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x8')));_0x2dcbbf=_['merge'](_0x2dcbbf,require('../api/voiceCallReport/voiceCallReport.rpc'));_0x2dcbbf=_['merge'](_0x2dcbbf,require(_0xcc5d('0x9')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0xa')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0xb')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0xc')));_0x2dcbbf=_['merge'](_0x2dcbbf,require('../api/trunk/trunk.rpc'));_0x2dcbbf=_['merge'](_0x2dcbbf,require(_0xcc5d('0xd')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0xe')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require('../api/mailServerIn/mailServerIn.rpc'));_0x2dcbbf=_['merge'](_0x2dcbbf,require('../api/mailAccount/mailAccount.rpc'));_0x2dcbbf=_['merge'](_0x2dcbbf,require(_0xcc5d('0xf')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require('../api/mailInteraction/mailInteraction.rpc'));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x10')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require('../api/mailApplication/mailApplication.rpc'));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x11')));_0x2dcbbf=_['merge'](_0x2dcbbf,require(_0xcc5d('0x12')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x13')));_0x2dcbbf=_['merge'](_0x2dcbbf,require('../api/faxInteraction/faxInteraction.rpc'));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require('../api/faxMessage/faxMessage.rpc'));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x14')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x15')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x16')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x17')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x18')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require('../api/smsQueue/smsQueue.rpc'));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x19')));_0x2dcbbf=_['merge'](_0x2dcbbf,require('../api/openchannelInteraction/openchannelInteraction.rpc'));_0x2dcbbf=_['merge'](_0x2dcbbf,require('../api/openchannelMessage/openchannelMessage.rpc'));_0x2dcbbf=_['merge'](_0x2dcbbf,require(_0xcc5d('0x1a')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require('../api/openchannelQueueReport/openchannelQueueReport.rpc'));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require('../api/chatInteraction/chatInteraction.rpc'));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x1b')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x1c')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x1d')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x1e')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x1f')));_0x2dcbbf=_['merge'](_0x2dcbbf,require('../api/cmHopperFinal/cmHopperFinal.rpc'));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x20')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x21')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x22')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x23')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x24')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x25')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x26')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x27')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x28')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x29')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x2a')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require('../api/intDeskAccount/intDeskAccount.rpc'));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require('../api/intZohoAccount/intZohoAccount.rpc'));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x2b')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x2c')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x2d')));_0x2dcbbf=_['merge'](_0x2dcbbf,require(_0xcc5d('0x2e')));_0x2dcbbf=_['merge'](_0x2dcbbf,require(_0xcc5d('0x2f')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x30')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require('../api/chatQueueReport/chatQueueReport.rpc'));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x31')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x32')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x33')));_0x2dcbbf=_['merge'](_0x2dcbbf,require(_0xcc5d('0x34')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x35')));_0x2dcbbf=_['merge'](_0x2dcbbf,require(_0xcc5d('0x36')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require('../api/squareRecording/squareRecording.rpc'));_0x2dcbbf=_['merge'](_0x2dcbbf,require(_0xcc5d('0x37')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x38')));_0x2dcbbf=_['merge'](_0x2dcbbf,require(_0xcc5d('0x39')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x3a')));_0x2dcbbf=_['merge'](_0x2dcbbf,require(_0xcc5d('0x3b')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x3c')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x3d')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x3e')));_0x2dcbbf=_['merge'](_0x2dcbbf,require('../api/whatsappQueue/whatsappQueue.rpc'));var _0x4d92d9=jayson[_0xcc5d('0x3f')](_0x2dcbbf)[_0xcc5d('0x40')]();var _0x4250a9=config[_0xcc5d('0x41')][_0xcc5d('0x42')]||config[_0xcc5d('0x42')]+0x1;var _0x5dc72e=config['rpc']['ip']||'localhost';_0x4d92d9['on'](_0xcc5d('0x43'),function(_0xa8d8e){return _0x468c7f(_0xa8d8e);});_0x4d92d9[_0xcc5d('0x3')](_0x4250a9,_0x5dc72e,function(){console['log']('Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!',_0x5dc72e,_0x4250a9);require(_0xcc5d('0x44'))['default']();return _0x363cad(_0xcc5d('0x45')+_0x5dc72e+':'+_0x4250a9);});});};
\ No newline at end of file
+var _0xe2ef=['../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/squareRecording/squareRecording.rpc','../api/squareMessage/squareMessage.rpc','../api/campaign/campaign.rpc','../api/attachment/attachment.rpc','../api/plugin/plugin.rpc','../api/whatsappInteraction/whatsappInteraction.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','../api/whatsappQueue/whatsappQueue.rpc','http','rpc','localhost','error','log','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','default','lodash','../config/environment','listen','merge','../api/user/user.rpc','../api/voiceExtension/voiceExtension.rpc','../api/voiceQueue/voiceQueue.rpc','../api/voiceRecording/voiceRecording.rpc','../api/voiceCallReport/voiceCallReport.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/voiceQueueReport/voiceQueueReport.rpc','../api/memberReport/memberReport.rpc','../api/trunk/trunk.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailServerIn/mailServerIn.rpc','../api/mailAccount/mailAccount.rpc','../api/mailQueue/mailQueue.rpc','../api/mailInteraction/mailInteraction.rpc','../api/mailMessage/mailMessage.rpc','../api/faxAccount/faxAccount.rpc','../api/faxApplication/faxApplication.rpc','../api/faxInteraction/faxInteraction.rpc','../api/faxMessage/faxMessage.rpc','../api/faxQueue/faxQueue.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsAccount/smsAccount.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelInteraction/openchannelInteraction.rpc','../api/openchannelMessage/openchannelMessage.rpc','../api/openchannelQueue/openchannelQueue.rpc','../api/chatInteraction/chatInteraction.rpc','../api/chatQueue/chatQueue.rpc','../api/cmContact/cmContact.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/sound/sound.rpc','../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc','../api/template/template.rpc','../api/trigger/trigger.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intDeskAccount/intDeskAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intZendeskAccount/intZendeskAccount.rpc'];(function(_0x32dc7d,_0x1573c1){var _0x46fae3=function(_0x278ec5){while(--_0x278ec5){_0x32dc7d['push'](_0x32dc7d['shift']());}};_0x46fae3(++_0x1573c1);}(_0xe2ef,0x194));var _0xfe2e=function(_0xbe4716,_0xbedd1c){_0xbe4716=_0xbe4716-0x0;var _0x2b9241=_0xe2ef[_0xbe4716];return _0x2b9241;};'use strict';var jayson=require('jayson/promise');var _=require(_0xfe2e('0x0'));var config=require(_0xfe2e('0x1'));exports[_0xfe2e('0x2')]=function(){return new Promise(function(_0x3abf8b,_0x55741c){var _0x195a6e={};_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x4')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x5')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x6')));_0x195a6e=_['merge'](_0x195a6e,require(_0xfe2e('0x7')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x8')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x9')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0xa')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0xb')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0xc')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0xd')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require('../api/voiceTransferReport/voiceTransferReport.rpc'));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0xe')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0xf')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x10')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x11')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x12')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x13')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require('../api/mailApplication/mailApplication.rpc'));_0x195a6e=_['merge'](_0x195a6e,require('../api/mailQueueReport/mailQueueReport.rpc'));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x14')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x15')));_0x195a6e=_['merge'](_0x195a6e,require(_0xfe2e('0x16')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x17')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x18')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x19')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x1a')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require('../api/smsInteraction/smsInteraction.rpc'));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require('../api/smsMessage/smsMessage.rpc'));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require('../api/smsQueue/smsQueue.rpc'));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x1b')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x1c')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x1d')));_0x195a6e=_['merge'](_0x195a6e,require(_0xfe2e('0x1e')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require('../api/openchannelQueueReport/openchannelQueueReport.rpc'));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x1f')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require('../api/chatMessage/chatMessage.rpc'));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x20')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x21')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require('../api/cmHopper/cmHopper.rpc'));_0x195a6e=_['merge'](_0x195a6e,require(_0xfe2e('0x22')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require('../api/cmHopperFinal/cmHopperFinal.rpc'));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x23')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x24')));_0x195a6e=_['merge'](_0x195a6e,require('../api/interval/interval.rpc'));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require('../api/pause/pause.rpc'));_0x195a6e=_['merge'](_0x195a6e,require(_0xfe2e('0x25')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x26')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x27')));_0x195a6e=_['merge'](_0x195a6e,require(_0xfe2e('0x28')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require('../api/variable/variable.rpc'));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x29')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x2a')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x2b')));_0x195a6e=_['merge'](_0x195a6e,require(_0xfe2e('0x2c')));_0x195a6e=_['merge'](_0x195a6e,require(_0xfe2e('0x2d')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x2e')));_0x195a6e=_['merge'](_0x195a6e,require(_0xfe2e('0x2f')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x30')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x31')));_0x195a6e=_['merge'](_0x195a6e,require(_0xfe2e('0x32')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x33')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x34')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x35')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x36')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x37')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x38')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x39')));_0x195a6e=_['merge'](_0x195a6e,require(_0xfe2e('0x3a')));_0x195a6e=_['merge'](_0x195a6e,require(_0xfe2e('0x3b')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x3c')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x3d')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x3e')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require('../api/whatsappAccount/whatsappAccount.rpc'));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x3f')));_0x195a6e=_['merge'](_0x195a6e,require(_0xfe2e('0x40')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x41')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x42')));var _0x5232c7=jayson['server'](_0x195a6e)[_0xfe2e('0x43')]();var _0x1acbe9=config[_0xfe2e('0x44')]['port']||config['port']+0x1;var _0x4ee3b9=config['rpc']['ip']||_0xfe2e('0x45');_0x5232c7['on'](_0xfe2e('0x46'),function(_0x3d87ed){return _0x55741c(_0x3d87ed);});_0x5232c7[_0xfe2e('0x2')](_0x1acbe9,_0x4ee3b9,function(){console[_0xfe2e('0x47')](_0xfe2e('0x48'),_0x4ee3b9,_0x1acbe9);require(_0xfe2e('0x49'))[_0xfe2e('0x4a')]();return _0x3abf8b('RPC\x20listening\x20on\x20'+_0x4ee3b9+':'+_0x1acbe9);});});};
\ No newline at end of file
index d66ef2b..5b1f334 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd4a=['exec','isArray','EXEC\x20%s\x20%s','setContext','setExtension','SET\x20PRIORITY\x20%s','HANGUP','setVariable','isBoolean','isNumber','SET\x20VARIABLE\x20%s\x20\x22%s\x22','toString','sayNumber','SAY\x20NUMBER\x20%s\x20%s','sayDigits','SAY\x20DIGITS\x20%s\x20%s','sayPhonetic','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','continueAt','extension','noop','GOTO\x20%s\x20%s\x20%s','getVariable','recordFile','wav','BEEP','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','agi','AGI','wait','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','exports','util','lodash','EventEmitter','./reply','./error','call','utf8','setTimeout','setEncoding','headers','emit','ready','line','toLowerCase','hangup','substring','520-Invalid','520\x20End\x20of\x20proper','function','no\x20code','replace','result=','substr','indexOf','startsWith','length','match','error','E_AGI_SOCKET_ERROR','close','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','destroy','pipe','command','inherits','prototype','sendRequest','sync','answer','ANSWER','getData','format','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','VERBOSE\x20\x22%s\x22'];(function(_0x2ae2ad,_0xac5b0c){var _0x26dbd7=function(_0x5e685b){while(--_0x5e685b){_0x2ae2ad['push'](_0x2ae2ad['shift']());}};_0x26dbd7(++_0xac5b0c);}(_0xbd4a,0xbf));var _0xabd4=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0xbd4a[_0x4565bf];return _0x5610ba;};'use strict';var util=require(_0xabd4('0x0'));var _=require(_0xabd4('0x1'));var EventEmitter=require('events')[_0xabd4('0x2')];var AGIReply=require(_0xabd4('0x3'));var AGIError=require(_0xabd4('0x4'));function AGIChannel(_0x378a03){var _0x10289f=this,_0x5624b0=new AGIReply(),_0xb4b882=![],_0x2096e1={};EventEmitter[_0xabd4('0x5')](_0x10289f);_0x378a03['setEncoding'](_0xabd4('0x6'));_0x378a03[_0xabd4('0x7')](0x8*0x3c*0x3c*0x3e8);_0x5624b0[_0xabd4('0x8')](_0xabd4('0x6'));_0x5624b0['on'](_0xabd4('0x9'),function(_0x2ce16f){for(var _0x26bb37 in _0x2ce16f){_0x10289f[_0x26bb37]=_0x2ce16f[_0x26bb37];}_0x10289f[_0xabd4('0xa')](_0xabd4('0xb'));});_0x5624b0['on'](_0xabd4('0xc'),function(_0x60a203){if(_0x60a203[_0xabd4('0xd')]()==_0xabd4('0xe')){_0x10289f[_0xabd4('0xa')](_0xabd4('0xe'));return;}if(_0x60a203[_0xabd4('0xf')](0x0,0xb)==_0xabd4('0x10')){_0xb4b882=!![];}if(_0xb4b882){_0x2096e1['rx']+=_0x60a203+'\x0a';if(_0x60a203['search'](_0xabd4('0x11'))!=-0x1){_0xb4b882=![];}}else{_0x2096e1['rx']=_0x60a203;}if(_0xb4b882){return;}if(typeof _0x2096e1['cb']==_0xabd4('0x12')){var _0x3dd549=_0x2096e1['rx'][_0xabd4('0xf')](0x0,0x3),_0x47af64=null,_0x54937b=null;_0x3dd549=parseInt(_0x3dd549);if(isNaN(_0x3dd549)){_0x2096e1['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0xabd4('0x13')});return;}if(_0x3dd549!=0xc8){_0x2096e1['cb'](null,{'code':_0x3dd549,'result':-0x1,'extra':'KO'});return;}_0x47af64=_0x2096e1['rx'][_0xabd4('0xf')](0x4)[_0xabd4('0x14')](_0xabd4('0x15'),'');if(_0x47af64['indexOf']('\x20')!=-0x1){_0x47af64=_0x47af64[_0xabd4('0x16')](0x0,_0x47af64[_0xabd4('0x17')]('\x20'));}if(_[_0xabd4('0x18')](_0x47af64,'-1')){_0x47af64=parseInt(_0x47af64);}_0x54937b=_0x2096e1['rx']['split']('\x20');if(_0x54937b[_0xabd4('0x19')]==0x3){_0x54937b=_0x54937b[0x2][_0xabd4('0xf')](0x1,_0x54937b[0x2][_0xabd4('0x19')]-0x1);}else if(_0x54937b[_0xabd4('0x19')]>0x3){var _0x293ee8=/\((.+)\)/;var _0x1e7041=_0x2096e1['rx'][_0xabd4('0x1a')](_0x293ee8);if(_0x1e7041){_0x54937b=_0x1e7041[0x1];}else{_0x54937b=null;}}else{_0x54937b=null;}_0x2096e1['cb'](null,{'code':_0x3dd549,'result':_0x47af64,'extra':_0x54937b});}});_0x378a03['on'](_0xabd4('0x1b'),function(_0x436d81){_0x10289f[_0xabd4('0xa')]('error',new AGIError(_0xabd4('0x1c'),_0x436d81['code']));});_0x378a03['on'](_0xabd4('0x1d'),function(){_0x10289f[_0xabd4('0xa')](_0xabd4('0x1d'),new AGIError(_0xabd4('0x1e')));});_0x378a03['on']('timeout',function(){_0x10289f['emit'](_0xabd4('0x1f'),new AGIError(_0xabd4('0x20')));_0x378a03[_0xabd4('0x21')]();});_0x378a03[_0xabd4('0x22')](_0x5624b0);this[_0xabd4('0x23')]=function(_0x31b506,_0x38a5c0){var _0x31b506=_0x31b506||'',_0x38a5c0=typeof _0x38a5c0==_0xabd4('0x12')?_0x38a5c0:new Function();_0x2096e1={'tx':_0x31b506,'rx':'','cb':_0x38a5c0};_0x378a03['write'](_0x31b506+'\x0a');},this['close']=function(){_0x378a03[_0xabd4('0x21')]();};}util[_0xabd4('0x24')](AGIChannel,EventEmitter);AGIChannel[_0xabd4('0x25')][_0xabd4('0x26')]=function(_0x5f08cb){return this['command'][_0xabd4('0x27')](this,_0x5f08cb);};AGIChannel[_0xabd4('0x25')][_0xabd4('0x28')]=function(){return this[_0xabd4('0x26')](_0xabd4('0x29'));};AGIChannel['prototype'][_0xabd4('0x2a')]=function(_0x4280c8,_0x13242f,_0x38fbd9){_0x4280c8=_0x4280c8===undefined?'beep':_0x4280c8;_0x13242f=_0x13242f===undefined?'5':_0x13242f;_0x38fbd9=_0x38fbd9===undefined?'1':_0x38fbd9;return this['sendRequest'](util[_0xabd4('0x2b')](_0xabd4('0x2c'),_0x4280c8,_0x13242f*0x3e8,_0x38fbd9));};AGIChannel[_0xabd4('0x25')]['noop']=function(_0x4e1200){_0x4e1200=_0x4e1200||'NO\x20MESSAGE';return this[_0xabd4('0x26')](util[_0xabd4('0x2b')](_0xabd4('0x2d'),_0x4e1200));};AGIChannel[_0xabd4('0x25')][_0xabd4('0x2e')]=function(_0x270919,_0x3338eb){if(_[_0xabd4('0x2f')](_0x3338eb)){return this[_0xabd4('0x26')](util['format'](_0xabd4('0x30'),_0x270919,_0x3338eb['join'](',')));}return this['sendRequest'](util[_0xabd4('0x2b')](_0xabd4('0x30'),_0x270919,_0x3338eb));};AGIChannel[_0xabd4('0x25')][_0xabd4('0x31')]=function(_0x126623){return this[_0xabd4('0x26')](util[_0xabd4('0x2b')]('SET\x20CONTEXT\x20%s',_0x126623));};AGIChannel[_0xabd4('0x25')][_0xabd4('0x32')]=function(_0x1f9d91){return this[_0xabd4('0x26')](util['format']('SET\x20EXTENSION\x20%s',_0x1f9d91));};AGIChannel[_0xabd4('0x25')]['setPriority']=function(_0x1b456d){return this[_0xabd4('0x26')](util[_0xabd4('0x2b')](_0xabd4('0x33'),_0x1b456d));};AGIChannel[_0xabd4('0x25')][_0xabd4('0xe')]=function(){return this[_0xabd4('0x26')](_0xabd4('0x34'));};AGIChannel[_0xabd4('0x25')][_0xabd4('0x35')]=function(_0x57674b,_0x579b93){var _0x24e469=_[_0xabd4('0x36')](_0x579b93)||_[_0xabd4('0x37')](_0x579b93)?_0x579b93['toString']():_0x579b93;return this[_0xabd4('0x26')](util[_0xabd4('0x2b')](_0xabd4('0x38'),_0x57674b,_0x24e469?_0x24e469[_0xabd4('0x39')]()[_0xabd4('0x14')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel['prototype'][_0xabd4('0x3a')]=function(_0x510b66,_0x463862){return this['sendRequest'](util[_0xabd4('0x2b')](_0xabd4('0x3b'),_0x510b66,_0x463862));};AGIChannel[_0xabd4('0x25')][_0xabd4('0x3c')]=function(_0x574e62,_0x1d8a7b){return this['sendRequest'](util[_0xabd4('0x2b')](_0xabd4('0x3d'),_0x574e62,_0x1d8a7b));};AGIChannel['prototype'][_0xabd4('0x3e')]=function(_0x4d49ce,_0x113995){return this[_0xabd4('0x26')](util[_0xabd4('0x2b')](_0xabd4('0x3f'),_0x4d49ce,_0x113995));};AGIChannel[_0xabd4('0x25')][_0xabd4('0x40')]=function(_0x28ccfe,_0x3cf2f1,_0x2dde39){_0x3cf2f1=_0x3cf2f1||this[_0xabd4('0x41')];_0x2dde39=_0x2dde39||0x1;this[_0xabd4('0x31')](_0x28ccfe);this[_0xabd4('0x32')](_0x3cf2f1);this['setPriority'](_0x2dde39);return this[_0xabd4('0x42')](util[_0xabd4('0x2b')](_0xabd4('0x43'),_0x28ccfe,_0x3cf2f1,_0x2dde39));};AGIChannel[_0xabd4('0x25')][_0xabd4('0x44')]=function(_0x14177c){return this[_0xabd4('0x26')](util[_0xabd4('0x2b')]('GET\x20VARIABLE\x20\x22%s\x22',_0x14177c));};AGIChannel[_0xabd4('0x25')][_0xabd4('0x45')]=function(_0x3f7511,_0x1db495,_0x3f7bac,_0x4c94ea,_0xe08349,_0x3c42e0){_0x1db495=_0x1db495||_0xabd4('0x46');_0x3f7bac=_0x3f7bac||'';_0x4c94ea=_0x4c94ea===undefined?-0x1:_0x4c94ea==='-1'?-0x1:_0x4c94ea*0x3e8;_0xe08349=_0xe08349===undefined?'':'s='+_0xe08349;_0x3c42e0=_0x3c42e0?_0xabd4('0x47'):'';return this['sendRequest'](util[_0xabd4('0x2b')]('RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s',_0x3f7511,_0x1db495,_0x3f7bac,_0x4c94ea,_0x3c42e0,_0xe08349));};AGIChannel['prototype']['streamFile']=function(_0xf06d0b,_0xf56936){_0xf56936=_0xf56936||'';return this[_0xabd4('0x26')](util['format'](_0xabd4('0x48'),_0xf06d0b,_0xf56936));};AGIChannel['prototype'][_0xabd4('0x49')]=function(_0x35792d){return this[_0xabd4('0x2e')](_0xabd4('0x4a'),_0x35792d);};AGIChannel[_0xabd4('0x25')][_0xabd4('0x4b')]=function(_0x30cb23){return this['exec']('WAIT',_0x30cb23);};AGIChannel['prototype'][_0xabd4('0x1b')]=function(_0x40e6b0,_0x3c989e){this[_0xabd4('0x42')](util['format'](_0xabd4('0x4c'),_0x40e6b0['id'],_0x40e6b0[_0xabd4('0x4d')],_0x3c989e));return{'code':0x1f4,'result':'-1','extra':''};};module[_0xabd4('0x4e')]=AGIChannel;
\ No newline at end of file
+var _0x42ec=['ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','util','lodash','events','EventEmitter','./reply','call','utf8','setEncoding','emit','ready','toLowerCase','hangup','substring','520-Invalid','520\x20End\x20of\x20proper','function','replace','result=','substr','indexOf','startsWith','split','length','match','error','E_AGI_SOCKET_ERROR','code','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','destroy','pipe','command','write','close','inherits','prototype','sendRequest','answer','ANSWER','getData','format','noop','NO\x20MESSAGE','VERBOSE\x20\x22%s\x22','exec','isArray','EXEC\x20%s\x20%s','join','setContext','SET\x20EXTENSION\x20%s','setPriority','SET\x20PRIORITY\x20%s','HANGUP','setVariable','isBoolean','isNumber','toString','SET\x20VARIABLE\x20%s\x20\x22%s\x22','sayNumber','SAY\x20NUMBER\x20%s\x20%s','sayDigits','SAY\x20DIGITS\x20%s\x20%s','sayPhonetic','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','continueAt','extension','setExtension','GOTO\x20%s\x20%s\x20%s','getVariable','recordFile','wav','BEEP','RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s','streamFile','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','agi','wait','WAIT'];(function(_0x7798ef,_0x2b521b){var _0x42a5f4=function(_0x273ce9){while(--_0x273ce9){_0x7798ef['push'](_0x7798ef['shift']());}};_0x42a5f4(++_0x2b521b);}(_0x42ec,0x1e8));var _0xc42e=function(_0x3ebc47,_0x243394){_0x3ebc47=_0x3ebc47-0x0;var _0x301296=_0x42ec[_0x3ebc47];return _0x301296;};'use strict';var util=require(_0xc42e('0x0'));var _=require(_0xc42e('0x1'));var EventEmitter=require(_0xc42e('0x2'))[_0xc42e('0x3')];var AGIReply=require(_0xc42e('0x4'));var AGIError=require('./error');function AGIChannel(_0x44df26){var _0x49a4c9=this,_0x107a41=new AGIReply(),_0x2f1f54=![],_0x2baaa9={};EventEmitter[_0xc42e('0x5')](_0x49a4c9);_0x44df26['setEncoding'](_0xc42e('0x6'));_0x44df26['setTimeout'](0x8*0x3c*0x3c*0x3e8);_0x107a41[_0xc42e('0x7')](_0xc42e('0x6'));_0x107a41['on']('headers',function(_0x3698e7){for(var _0xb752f3 in _0x3698e7){_0x49a4c9[_0xb752f3]=_0x3698e7[_0xb752f3];}_0x49a4c9[_0xc42e('0x8')](_0xc42e('0x9'));});_0x107a41['on']('line',function(_0x113467){if(_0x113467[_0xc42e('0xa')]()==_0xc42e('0xb')){_0x49a4c9['emit'](_0xc42e('0xb'));return;}if(_0x113467[_0xc42e('0xc')](0x0,0xb)==_0xc42e('0xd')){_0x2f1f54=!![];}if(_0x2f1f54){_0x2baaa9['rx']+=_0x113467+'\x0a';if(_0x113467['search'](_0xc42e('0xe'))!=-0x1){_0x2f1f54=![];}}else{_0x2baaa9['rx']=_0x113467;}if(_0x2f1f54){return;}if(typeof _0x2baaa9['cb']==_0xc42e('0xf')){var _0x3c9f86=_0x2baaa9['rx'][_0xc42e('0xc')](0x0,0x3),_0x4056a3=null,_0x53f847=null;_0x3c9f86=parseInt(_0x3c9f86);if(isNaN(_0x3c9f86)){_0x2baaa9['cb'](null,{'code':0x1f4,'result':-0x1,'extra':'no\x20code'});return;}if(_0x3c9f86!=0xc8){_0x2baaa9['cb'](null,{'code':_0x3c9f86,'result':-0x1,'extra':'KO'});return;}_0x4056a3=_0x2baaa9['rx'][_0xc42e('0xc')](0x4)[_0xc42e('0x10')](_0xc42e('0x11'),'');if(_0x4056a3['indexOf']('\x20')!=-0x1){_0x4056a3=_0x4056a3[_0xc42e('0x12')](0x0,_0x4056a3[_0xc42e('0x13')]('\x20'));}if(_[_0xc42e('0x14')](_0x4056a3,'-1')){_0x4056a3=parseInt(_0x4056a3);}_0x53f847=_0x2baaa9['rx'][_0xc42e('0x15')]('\x20');if(_0x53f847[_0xc42e('0x16')]==0x3){_0x53f847=_0x53f847[0x2][_0xc42e('0xc')](0x1,_0x53f847[0x2][_0xc42e('0x16')]-0x1);}else if(_0x53f847['length']>0x3){var _0x179ee0=/\((.+)\)/;var _0x4fdda0=_0x2baaa9['rx'][_0xc42e('0x17')](_0x179ee0);if(_0x4fdda0){_0x53f847=_0x4fdda0[0x1];}else{_0x53f847=null;}}else{_0x53f847=null;}_0x2baaa9['cb'](null,{'code':_0x3c9f86,'result':_0x4056a3,'extra':_0x53f847});}});_0x44df26['on'](_0xc42e('0x18'),function(_0x27df8b){_0x49a4c9[_0xc42e('0x8')](_0xc42e('0x18'),new AGIError(_0xc42e('0x19'),_0x27df8b[_0xc42e('0x1a')]));});_0x44df26['on']('close',function(){_0x49a4c9['emit']('close',new AGIError(_0xc42e('0x1b')));});_0x44df26['on'](_0xc42e('0x1c'),function(){_0x49a4c9['emit']('timeout',new AGIError(_0xc42e('0x1d')));_0x44df26[_0xc42e('0x1e')]();});_0x44df26[_0xc42e('0x1f')](_0x107a41);this[_0xc42e('0x20')]=function(_0x4f87d0,_0xdaef48){var _0x4f87d0=_0x4f87d0||'',_0xdaef48=typeof _0xdaef48==_0xc42e('0xf')?_0xdaef48:new Function();_0x2baaa9={'tx':_0x4f87d0,'rx':'','cb':_0xdaef48};_0x44df26[_0xc42e('0x21')](_0x4f87d0+'\x0a');},this[_0xc42e('0x22')]=function(){_0x44df26[_0xc42e('0x1e')]();};}util[_0xc42e('0x23')](AGIChannel,EventEmitter);AGIChannel[_0xc42e('0x24')][_0xc42e('0x25')]=function(_0x2c8555){return this['command']['sync'](this,_0x2c8555);};AGIChannel[_0xc42e('0x24')][_0xc42e('0x26')]=function(){return this[_0xc42e('0x25')](_0xc42e('0x27'));};AGIChannel['prototype'][_0xc42e('0x28')]=function(_0x3f4569,_0x13d5a8,_0x3cda1f){_0x3f4569=_0x3f4569===undefined?'beep':_0x3f4569;_0x13d5a8=_0x13d5a8===undefined?'5':_0x13d5a8;_0x3cda1f=_0x3cda1f===undefined?'1':_0x3cda1f;return this['sendRequest'](util[_0xc42e('0x29')]('GET\x20DATA\x20\x22%s\x22\x20%s\x20%s',_0x3f4569,_0x13d5a8*0x3e8,_0x3cda1f));};AGIChannel['prototype'][_0xc42e('0x2a')]=function(_0x393448){_0x393448=_0x393448||_0xc42e('0x2b');return this['sendRequest'](util[_0xc42e('0x29')](_0xc42e('0x2c'),_0x393448));};AGIChannel[_0xc42e('0x24')][_0xc42e('0x2d')]=function(_0x40b8ad,_0x2b8084){if(_[_0xc42e('0x2e')](_0x2b8084)){return this['sendRequest'](util[_0xc42e('0x29')](_0xc42e('0x2f'),_0x40b8ad,_0x2b8084[_0xc42e('0x30')](',')));}return this[_0xc42e('0x25')](util[_0xc42e('0x29')]('EXEC\x20%s\x20%s',_0x40b8ad,_0x2b8084));};AGIChannel[_0xc42e('0x24')][_0xc42e('0x31')]=function(_0x3136d4){return this[_0xc42e('0x25')](util[_0xc42e('0x29')]('SET\x20CONTEXT\x20%s',_0x3136d4));};AGIChannel[_0xc42e('0x24')]['setExtension']=function(_0x13e680){return this[_0xc42e('0x25')](util['format'](_0xc42e('0x32'),_0x13e680));};AGIChannel['prototype'][_0xc42e('0x33')]=function(_0x5d9a60){return this['sendRequest'](util[_0xc42e('0x29')](_0xc42e('0x34'),_0x5d9a60));};AGIChannel['prototype'][_0xc42e('0xb')]=function(){return this[_0xc42e('0x25')](_0xc42e('0x35'));};AGIChannel[_0xc42e('0x24')][_0xc42e('0x36')]=function(_0x22e972,_0x340051){var _0x3a7b70=_[_0xc42e('0x37')](_0x340051)||_[_0xc42e('0x38')](_0x340051)?_0x340051[_0xc42e('0x39')]():_0x340051;return this['sendRequest'](util[_0xc42e('0x29')](_0xc42e('0x3a'),_0x22e972,_0x3a7b70?_0x3a7b70[_0xc42e('0x39')]()['replace'](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel['prototype'][_0xc42e('0x3b')]=function(_0x30b739,_0x26a223){return this[_0xc42e('0x25')](util[_0xc42e('0x29')](_0xc42e('0x3c'),_0x30b739,_0x26a223));};AGIChannel[_0xc42e('0x24')][_0xc42e('0x3d')]=function(_0x8688c6,_0x12f3d2){return this[_0xc42e('0x25')](util[_0xc42e('0x29')](_0xc42e('0x3e'),_0x8688c6,_0x12f3d2));};AGIChannel['prototype'][_0xc42e('0x3f')]=function(_0x5994a4,_0xab432d){return this[_0xc42e('0x25')](util[_0xc42e('0x29')](_0xc42e('0x40'),_0x5994a4,_0xab432d));};AGIChannel['prototype'][_0xc42e('0x41')]=function(_0x3b17aa,_0x4750e2,_0x260ebf){_0x4750e2=_0x4750e2||this[_0xc42e('0x42')];_0x260ebf=_0x260ebf||0x1;this[_0xc42e('0x31')](_0x3b17aa);this[_0xc42e('0x43')](_0x4750e2);this[_0xc42e('0x33')](_0x260ebf);return this['noop'](util[_0xc42e('0x29')](_0xc42e('0x44'),_0x3b17aa,_0x4750e2,_0x260ebf));};AGIChannel[_0xc42e('0x24')][_0xc42e('0x45')]=function(_0x32ff0a){return this['sendRequest'](util[_0xc42e('0x29')]('GET\x20VARIABLE\x20\x22%s\x22',_0x32ff0a));};AGIChannel[_0xc42e('0x24')][_0xc42e('0x46')]=function(_0x3a4f20,_0x3b45ac,_0x380745,_0x22ad7c,_0x498f7d,_0x410400){_0x3b45ac=_0x3b45ac||_0xc42e('0x47');_0x380745=_0x380745||'';_0x22ad7c=_0x22ad7c===undefined?-0x1:_0x22ad7c==='-1'?-0x1:_0x22ad7c*0x3e8;_0x498f7d=_0x498f7d===undefined?'':'s='+_0x498f7d;_0x410400=_0x410400?_0xc42e('0x48'):'';return this[_0xc42e('0x25')](util['format'](_0xc42e('0x49'),_0x3a4f20,_0x3b45ac,_0x380745,_0x22ad7c,_0x410400,_0x498f7d));};AGIChannel[_0xc42e('0x24')][_0xc42e('0x4a')]=function(_0x20e8c7,_0x3e865e){_0x3e865e=_0x3e865e||'';return this[_0xc42e('0x25')](util[_0xc42e('0x29')](_0xc42e('0x4b'),_0x20e8c7,_0x3e865e));};AGIChannel[_0xc42e('0x24')][_0xc42e('0x4c')]=function(_0x494312){return this[_0xc42e('0x2d')]('AGI',_0x494312);};AGIChannel[_0xc42e('0x24')][_0xc42e('0x4d')]=function(_0x59028d){return this[_0xc42e('0x2d')](_0xc42e('0x4e'),_0x59028d);};AGIChannel[_0xc42e('0x24')][_0xc42e('0x18')]=function(_0x13481a,_0x4028c5){this[_0xc42e('0x2a')](util['format'](_0xc42e('0x4f'),_0x13481a['id'],_0x13481a[_0xc42e('0x50')],_0x4028c5));return{'code':0x1f4,'result':'-1','extra':''};};module['exports']=AGIChannel;
\ No newline at end of file
index f41ecca..a9f0733 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc70d=['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','format','apply','message','util','Undefined\x20error.','Server\x20closed.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xc70d,0x119));var _0xdc70=function(_0xda8b61,_0x3ed3a4){_0xda8b61=_0xda8b61-0x0;var _0x113d5d=_0xc70d[_0xda8b61];return _0x113d5d;};'use strict';var util=require(_0xdc70('0x0'));var error={'E_AGI_UNDEFINED':_0xdc70('0x1'),'E_AGI_ARGUMENT_PORT':'Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','E_AGI_SERVER_ERROR':'Server\x20error.\x20Code:\x20%s.','E_AGI_SERVER_CLOSE':_0xdc70('0x2'),'E_AGI_SERVER_MAXCONNECTION':_0xdc70('0x3'),'E_AGI_SERVER_VOICE_DISABLED':'[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','E_AGI_SOCKET_ERROR':_0xdc70('0x4'),'E_AGI_SOCKET_CLOSE':_0xdc70('0x5'),'E_AGI_SOCKET_TIMEOUT':_0xdc70('0x6'),'E_AGI_COMMAND_EMPTY':_0xdc70('0x7'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':_0xdc70('0x8'),'E_AGI_IVR_ENTRY':_0xdc70('0x9')};function AGIError(_0x3d93b7){var _0x3d93b7=_0x3d93b7||null,_0x348475=_0x348475||[],_0x4293a6=0x1,_0xe497f4='';if(!error[_0x3d93b7]){_0x3d93b7=_0xdc70('0xa');}_0x348475[_0xdc70('0xb')](error[_0x3d93b7]);while(arguments[_0x4293a6]){_0x348475[_0xdc70('0xb')](arguments[_0x4293a6]);_0x4293a6++;}_0xe497f4=util[_0xdc70('0xc')][_0xdc70('0xd')](util,_0x348475);this[_0xdc70('0xe')]=_0xe497f4;this['name']=_0x3d93b7;}module['exports']=AGIError;
\ No newline at end of file
+var _0x2bb9=['Empty\x20command.','Missing\x20\x27ivr.entry\x27\x20menu.','format','apply','message','name','exports','util','Undefined\x20error.','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','Server\x20error.\x20Code:\x20%s.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20closed.'];(function(_0x4d7dff,_0x689604){var _0x56a3ae=function(_0x5207ff){while(--_0x5207ff){_0x4d7dff['push'](_0x4d7dff['shift']());}};_0x56a3ae(++_0x689604);}(_0x2bb9,0xcb));var _0x92bb=function(_0x1afc3c,_0x1ac25f){_0x1afc3c=_0x1afc3c-0x0;var _0x2c74ea=_0x2bb9[_0x1afc3c];return _0x2c74ea;};'use strict';var util=require(_0x92bb('0x0'));var error={'E_AGI_UNDEFINED':_0x92bb('0x1'),'E_AGI_ARGUMENT_PORT':_0x92bb('0x2'),'E_AGI_SERVER_ERROR':_0x92bb('0x3'),'E_AGI_SERVER_CLOSE':'Server\x20closed.','E_AGI_SERVER_MAXCONNECTION':_0x92bb('0x4'),'E_AGI_SERVER_VOICE_DISABLED':_0x92bb('0x5'),'E_AGI_SOCKET_ERROR':'Socket\x20error.\x20Code:\x20%s.','E_AGI_SOCKET_CLOSE':_0x92bb('0x6'),'E_AGI_SOCKET_TIMEOUT':'Socket\x20timeout.','E_AGI_COMMAND_EMPTY':_0x92bb('0x7'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':'Missing\x20\x27ivr.agi_network_script\x27.','E_AGI_IVR_ENTRY':_0x92bb('0x8')};function AGIError(_0x2379dc){var _0x2379dc=_0x2379dc||null,_0x58e755=_0x58e755||[],_0x35dd9a=0x1,_0x213b7f='';if(!error[_0x2379dc]){_0x2379dc='E_AGI_UNDEFINED';}_0x58e755['push'](error[_0x2379dc]);while(arguments[_0x35dd9a]){_0x58e755['push'](arguments[_0x35dd9a]);_0x35dd9a++;}_0x213b7f=util[_0x92bb('0x9')][_0x92bb('0xa')](util,_0x58e755);this[_0x92bb('0xb')]=_0x213b7f;this[_0x92bb('0xc')]=_0x2379dc;}module[_0x92bb('0xd')]=AGIError;
\ No newline at end of file
index 0346f51..3ee704e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d61=['defaults','localhost','subscribe','error','E_AGI_SERVER_ERROR','agi','parse','emit','exports','lodash','EventEmitter','./error','redis'];(function(_0xc13eb3,_0x233d02){var _0x4e052e=function(_0x83ea7b){while(--_0x83ea7b){_0xc13eb3['push'](_0xc13eb3['shift']());}};_0x4e052e(++_0x233d02);}(_0x2d61,0x1b6));var _0x12d6=function(_0x3e769e,_0x3c22d0){_0x3e769e=_0x3e769e-0x0;var _0x4afba7=_0x2d61[_0x3e769e];return _0x4afba7;};'use strict';var _=require(_0x12d6('0x0'));var EventEmitter=require('events')[_0x12d6('0x1')];var Redis=require('ioredis');var AGIError=require(_0x12d6('0x2'));var config=require('../../config/environment');config[_0x12d6('0x3')]=_[_0x12d6('0x4')](config[_0x12d6('0x3')],{'host':_0x12d6('0x5'),'port':0x18eb});var eventEmitter=new EventEmitter();var sub=new Redis(config['redis']);sub[_0x12d6('0x6')]('agi',function(_0x404e52){if(_0x404e52)return eventEmitter['emit'](_0x12d6('0x7'),new AGIError(_0x12d6('0x8'),_0x404e52));});sub['on']('message',function(_0x339eac,_0x230764){if(_0x339eac!==_0x12d6('0x9'))return;try{var _0x4003da=JSON[_0x12d6('0xa')](_0x230764);eventEmitter['emit']('projectUpdate',_0x4003da);}catch(_0x5162fc){eventEmitter[_0x12d6('0xb')](_0x12d6('0x7'),new AGIError(_0x12d6('0x8'),_0x5162fc));}});module[_0x12d6('0xc')]={'EventEmitter':eventEmitter};
\ No newline at end of file
+var _0x8856=['EventEmitter','ioredis','./error','../../config/environment','redis','defaults','localhost','subscribe','agi','emit','error','projectUpdate','exports','lodash','events'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8856,0x1b1));var _0x6885=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x8856[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x6885('0x0'));var EventEmitter=require(_0x6885('0x1'))[_0x6885('0x2')];var Redis=require(_0x6885('0x3'));var AGIError=require(_0x6885('0x4'));var config=require(_0x6885('0x5'));config[_0x6885('0x6')]=_[_0x6885('0x7')](config['redis'],{'host':_0x6885('0x8'),'port':0x18eb});var eventEmitter=new EventEmitter();var sub=new Redis(config['redis']);sub[_0x6885('0x9')](_0x6885('0xa'),function(_0x13a0da){if(_0x13a0da)return eventEmitter[_0x6885('0xb')](_0x6885('0xc'),new AGIError('E_AGI_SERVER_ERROR',_0x13a0da));});sub['on']('message',function(_0x3ed3ba,_0xbae1b8){if(_0x3ed3ba!==_0x6885('0xa'))return;try{var _0x2eac73=JSON['parse'](_0xbae1b8);eventEmitter['emit'](_0x6885('0xd'),_0x2eac73);}catch(_0x3f0b87){eventEmitter['emit']('error',new AGIError('E_AGI_SERVER_ERROR',_0x3f0b87));}});module[_0x6885('0xe')]={'EventEmitter':eventEmitter};
\ No newline at end of file
index 9cff0ed..6fdcb10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb23f=['vswitch','default\x20on\x20switch\x20not\x20found','includes','max\x20retry\x20reach','condition\x20not\x20found','lodash','../../../config/logger','agi','getdigits','getsecretdigits','vertices','edges','prototype','addVertex','addEdge','push','numberOfEdges','size','getVertex','info','length','no\x20edge/s\x20available','condition','split','agicommand','target','menu','traverseBFS'];(function(_0x1e3671,_0x9ae4fc){var _0x48d5f5=function(_0xfab713){while(--_0xfab713){_0x1e3671['push'](_0x1e3671['shift']());}};_0x48d5f5(++_0x9ae4fc);}(_0xb23f,0xad));var _0xfb23=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xb23f[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xfb23('0x0'));var logger=require(_0xfb23('0x1'))(_0xfb23('0x2'));var verticesWithRetry=['menu',_0xfb23('0x3'),_0xfb23('0x4')];var Graph=function(){this[_0xfb23('0x5')]={};this[_0xfb23('0x6')]={};this['numberOfEdges']=0x0;};Graph[_0xfb23('0x7')][_0xfb23('0x8')]=function(_0x49db7e){this['vertices'][_0x49db7e['id']]=_0x49db7e;this[_0xfb23('0x6')][_0x49db7e['id']]=[];};Graph['prototype'][_0xfb23('0x9')]=function(_0x4f570f,_0xf23b8e,_0x54928e){this[_0xfb23('0x6')][_0x4f570f][_0xfb23('0xa')]({'target':_0xf23b8e,'condition':_0x54928e});this[_0xfb23('0xb')]+=0x1;};Graph[_0xfb23('0x7')][_0xfb23('0xc')]=function(){return _['size'](this[_0xfb23('0x5')]);};Graph['prototype']['relations']=function(){return this['numberOfEdges'];};Graph[_0xfb23('0x7')][_0xfb23('0xd')]=function(_0x3b9716){return this[_0xfb23('0x5')][_0x3b9716];};Graph[_0xfb23('0x7')]['traverseBFS']=function(_0x45d9d0,_0xb19979){if(!this[_0xfb23('0x5')][_0x45d9d0]){return logger[_0xfb23('0xe')]('no\x20vertex\x20found');}var _0x490423=_0xb19979(this['vertices'][_0x45d9d0]);if(!_0x490423){return logger['info']('stop\x20traverse');}if(this[_0xfb23('0x6')][_0x45d9d0][_0xfb23('0xf')]===0x0){return logger[_0xfb23('0xe')](_0xfb23('0x10'));}for(var _0x1cd3c6=0x0,_0x3de47e=[],_0x28b893=![];_0x1cd3c6<this[_0xfb23('0x6')][_0x45d9d0][_0xfb23('0xf')];_0x1cd3c6+=0x1){if(this['edges'][_0x45d9d0][_0x1cd3c6]['condition']){_0x3de47e=this['edges'][_0x45d9d0][_0x1cd3c6][_0xfb23('0x11')][_0xfb23('0x12')](',');for(var _0xe2d9f3=0x0;_0xe2d9f3<_0x3de47e[_0xfb23('0xf')];_0xe2d9f3+=0x1){if(this[_0xfb23('0x5')][_0x45d9d0][_0xfb23('0x13')]==='vswitch'&&_0x3de47e[_0xe2d9f3]==='-'){_0x28b893=this[_0xfb23('0x6')][_0x45d9d0][_0x1cd3c6]['target'];logger['info']('default',_0x3de47e[_0xe2d9f3],this[_0xfb23('0x6')][_0x45d9d0][_0x1cd3c6][_0xfb23('0x14')]);}else if(this[_0xfb23('0x5')][_0x45d9d0][_0xfb23('0x13')]===_0xfb23('0x15')&&_0x3de47e[_0xe2d9f3]==='i'){_0x28b893=this['edges'][_0x45d9d0][_0x1cd3c6][_0xfb23('0x14')];logger[_0xfb23('0xe')]('invalid',_0x3de47e[_0xe2d9f3],this[_0xfb23('0x6')][_0x45d9d0][_0x1cd3c6][_0xfb23('0x14')]);}if(_0x3de47e[_0xe2d9f3]===_0x490423){return this[_0xfb23('0x16')](this[_0xfb23('0x6')][_0x45d9d0][_0x1cd3c6][_0xfb23('0x14')],_0xb19979);}}}else{return this[_0xfb23('0x16')](this[_0xfb23('0x6')][_0x45d9d0][_0x1cd3c6][_0xfb23('0x14')],_0xb19979);}}if(_0x3de47e[_0xfb23('0xf')]){if(this['vertices'][_0x45d9d0]['agicommand']===_0xfb23('0x17')){if(_0x28b893){return this[_0xfb23('0x16')](_0x28b893,_0xb19979);}return logger[_0xfb23('0xe')](_0xfb23('0x18'));}else if(_[_0xfb23('0x19')](verticesWithRetry,this[_0xfb23('0x5')][_0x45d9d0]['agicommand'])){if(_0x490423==='-'){return logger[_0xfb23('0xe')](_0xfb23('0x1a'));}if(_0x28b893&&_0x490423!=='t'){return this['traverseBFS'](_0x28b893,_0xb19979);}return this[_0xfb23('0x16')](_0x45d9d0,_0xb19979);}return logger[_0xfb23('0xe')](_0xfb23('0x1b'));}};module['exports']=Graph;
\ No newline at end of file
+var _0x3f64=['exports','lodash','../../../config/logger','agi','menu','getsecretdigits','edges','numberOfEdges','prototype','addVertex','vertices','addEdge','push','size','info','stop\x20traverse','length','condition','agicommand','vswitch','target','invalid','traverseBFS','default\x20on\x20switch\x20not\x20found','includes','condition\x20not\x20found'];(function(_0x358881,_0x1b748c){var _0x76792d=function(_0x322bb8){while(--_0x322bb8){_0x358881['push'](_0x358881['shift']());}};_0x76792d(++_0x1b748c);}(_0x3f64,0x153));var _0x43f6=function(_0x2d83f8,_0x23060a){_0x2d83f8=_0x2d83f8-0x0;var _0x46553b=_0x3f64[_0x2d83f8];return _0x46553b;};'use strict';var _=require(_0x43f6('0x0'));var logger=require(_0x43f6('0x1'))(_0x43f6('0x2'));var verticesWithRetry=[_0x43f6('0x3'),'getdigits',_0x43f6('0x4')];var Graph=function(){this['vertices']={};this[_0x43f6('0x5')]={};this[_0x43f6('0x6')]=0x0;};Graph[_0x43f6('0x7')][_0x43f6('0x8')]=function(_0x27582c){this[_0x43f6('0x9')][_0x27582c['id']]=_0x27582c;this[_0x43f6('0x5')][_0x27582c['id']]=[];};Graph[_0x43f6('0x7')][_0x43f6('0xa')]=function(_0x2c6f45,_0xe95fa7,_0x4545b5){this['edges'][_0x2c6f45][_0x43f6('0xb')]({'target':_0xe95fa7,'condition':_0x4545b5});this[_0x43f6('0x6')]+=0x1;};Graph[_0x43f6('0x7')][_0x43f6('0xc')]=function(){return _['size'](this[_0x43f6('0x9')]);};Graph[_0x43f6('0x7')]['relations']=function(){return this['numberOfEdges'];};Graph['prototype']['getVertex']=function(_0xcc81f1){return this[_0x43f6('0x9')][_0xcc81f1];};Graph['prototype']['traverseBFS']=function(_0x18bc3f,_0x3e9604){if(!this[_0x43f6('0x9')][_0x18bc3f]){return logger['info']('no\x20vertex\x20found');}var _0x240dec=_0x3e9604(this[_0x43f6('0x9')][_0x18bc3f]);if(!_0x240dec){return logger[_0x43f6('0xd')](_0x43f6('0xe'));}if(this[_0x43f6('0x5')][_0x18bc3f][_0x43f6('0xf')]===0x0){return logger[_0x43f6('0xd')]('no\x20edge/s\x20available');}for(var _0x5688be=0x0,_0x19f252=[],_0x121269=![];_0x5688be<this['edges'][_0x18bc3f]['length'];_0x5688be+=0x1){if(this['edges'][_0x18bc3f][_0x5688be][_0x43f6('0x10')]){_0x19f252=this[_0x43f6('0x5')][_0x18bc3f][_0x5688be]['condition']['split'](',');for(var _0x200e69=0x0;_0x200e69<_0x19f252['length'];_0x200e69+=0x1){if(this['vertices'][_0x18bc3f][_0x43f6('0x11')]===_0x43f6('0x12')&&_0x19f252[_0x200e69]==='-'){_0x121269=this[_0x43f6('0x5')][_0x18bc3f][_0x5688be]['target'];logger[_0x43f6('0xd')]('default',_0x19f252[_0x200e69],this[_0x43f6('0x5')][_0x18bc3f][_0x5688be][_0x43f6('0x13')]);}else if(this[_0x43f6('0x9')][_0x18bc3f]['agicommand']===_0x43f6('0x3')&&_0x19f252[_0x200e69]==='i'){_0x121269=this['edges'][_0x18bc3f][_0x5688be][_0x43f6('0x13')];logger[_0x43f6('0xd')](_0x43f6('0x14'),_0x19f252[_0x200e69],this['edges'][_0x18bc3f][_0x5688be]['target']);}if(_0x19f252[_0x200e69]===_0x240dec){return this[_0x43f6('0x15')](this[_0x43f6('0x5')][_0x18bc3f][_0x5688be]['target'],_0x3e9604);}}}else{return this['traverseBFS'](this['edges'][_0x18bc3f][_0x5688be][_0x43f6('0x13')],_0x3e9604);}}if(_0x19f252['length']){if(this['vertices'][_0x18bc3f]['agicommand']==='vswitch'){if(_0x121269){return this[_0x43f6('0x15')](_0x121269,_0x3e9604);}return logger[_0x43f6('0xd')](_0x43f6('0x16'));}else if(_[_0x43f6('0x17')](verticesWithRetry,this[_0x43f6('0x9')][_0x18bc3f][_0x43f6('0x11')])){if(_0x240dec==='-'){return logger['info']('max\x20retry\x20reach');}if(_0x121269&&_0x240dec!=='t'){return this['traverseBFS'](_0x121269,_0x3e9604);}return this[_0x43f6('0x15')](_0x18bc3f,_0x3e9604);}return logger['info'](_0x43f6('0x18'));}};module[_0x43f6('0x19')]=Graph;
\ No newline at end of file
index 034583d..629cb4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5bf0=['[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','port','name','message','format','[ERROR]\x20%s','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','calleridname','callerid','dnid','uniqueid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','createSquareReport','then','catch','indexOf','variables','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','timeout','evtHangup','find','handleNotFound','handleUnpublished','initialize','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','getAll','[LICENSE]','finally','./server','listening','connection','lodash','util','../../config/environment','../../config/license/util','./rpc','./project','./events','EventEmitter','agi','127.0.0.1','projectUpdate','nextTick','stack','deleted','error','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','info'];(function(_0x25ea25,_0x570998){var _0x1d453c=function(_0x2a5c09){while(--_0x2a5c09){_0x25ea25['push'](_0x25ea25['shift']());}};_0x1d453c(++_0x570998);}(_0x5bf0,0x145));var _0x05bf=function(_0x1ecc90,_0x33333f){_0x1ecc90=_0x1ecc90-0x0;var _0x446317=_0x5bf0[_0x1ecc90];return _0x446317;};'use strict';var _=require(_0x05bf('0x0'));var syncho=require('syncho');var util=require(_0x05bf('0x1'));var config=require(_0x05bf('0x2'));var logger=require('../../config/logger')('agi');var utilLicense=require(_0x05bf('0x3'));var rpc=require(_0x05bf('0x4'));var Project=require(_0x05bf('0x5'));var AGIEmitter=require(_0x05bf('0x6'))[_0x05bf('0x7')];var projects=[];config[_0x05bf('0x8')]=_['defaults'](config[_0x05bf('0x8')],{'ip':_0x05bf('0x9'),'port':0x11dd});AGIEmitter['on'](_0x05bf('0xa'),projectUpdateHandler);function connectionHandler(_0x2699e7){process[_0x05bf('0xb')](function(){syncho(function(){try{setChannelVariables(_0x2699e7);agiHandler(_0x2699e7);}catch(_0x4871a5){logger['error'](_0x4871a5[_0x05bf('0xc')]);}});});}function projectUpdateHandler(_0x3a4f9c){try{var _0x34fffd=_['findIndex'](projects,['id',_0x3a4f9c['id']]);if(_0x34fffd>-0x1){if(_0x3a4f9c[_0x05bf('0xd')]===!![]){projects['splice'](_0x34fffd,0x1);}else{projects[_0x34fffd]=_0x3a4f9c;}}else{projects['push'](_0x3a4f9c);}}catch(_0x2f36ff){logger[_0x05bf('0xe')](_0x2f36ff[_0x05bf('0xc')]);}}function listeningHandler(){console['log'](_0x05bf('0xf'),config[_0x05bf('0x8')]['port']);logger[_0x05bf('0x10')](util['format'](_0x05bf('0x11'),config[_0x05bf('0x8')]['ip'],config['agi'][_0x05bf('0x12')]));}function errorHandler(_0x9821ba){if(_0x9821ba&&_0x9821ba[_0x05bf('0x13')]&&_0x9821ba[_0x05bf('0x14')]){logger[_0x05bf('0xe')](util[_0x05bf('0x15')]('[%s]\x20%s',_0x9821ba['name'],_0x9821ba['message']));}else{logger['error'](util[_0x05bf('0x15')](_0x05bf('0x16'),_0x9821ba['stack']));}}function closeHandler(){logger[_0x05bf('0x10')](util['format'](_0x05bf('0x17'),this['arg_1'],this[_0x05bf('0x18')],this[_0x05bf('0x19')],this[_0x05bf('0x1a')],this[_0x05bf('0x1b')]));try{createSquareReport(this);}catch(_0x37ac8a){logger['error'](_0x37ac8a[_0x05bf('0xc')]);}}function timeoutHandler(){logger[_0x05bf('0x10')](util[_0x05bf('0x15')](_0x05bf('0x1c'),this['arg_1'],this[_0x05bf('0x18')],this[_0x05bf('0x19')],this[_0x05bf('0x1a')],this[_0x05bf('0x1b')]));}function hangupHandler(){logger['info'](util['format'](_0x05bf('0x1d'),this[_0x05bf('0x1e')],this[_0x05bf('0x18')],this[_0x05bf('0x19')],this[_0x05bf('0x1a')],this['uniqueid']));this['evtHangup']=!![];}function createSquareReport(_0x3779b8,_0x52ce26){rpc[_0x05bf('0x1f')](_0x3779b8)[_0x05bf('0x20')](function(_0x396f43){if(_0x52ce26){_0x52ce26(null,_0x396f43);}})[_0x05bf('0x21')](function(_0xa5bce0){if(_0x52ce26){_0x52ce26(null,_0xa5bce0);}});}function setChannelVariables(_0x33508a){for(var _0x3f33d5 in _0x33508a){if(_0x33508a['hasOwnProperty'](_0x3f33d5)){if(_0x3f33d5[_0x05bf('0x22')]('agi_')===0x0){_0x33508a[_0x3f33d5['substring'](0x4)]=_0x33508a[_0x3f33d5];delete _0x33508a[_0x3f33d5];}}}}function agiHandler(_0xbeb1bd){logger['debug'](_0x05bf('0x23'),JSON[_0x05bf('0x24')](_0xbeb1bd,null,0x2));logger[_0x05bf('0x10')](util[_0x05bf('0x15')](_0x05bf('0x25'),_0xbeb1bd['arg_1'],_0xbeb1bd[_0x05bf('0x18')],_0xbeb1bd[_0x05bf('0x19')],_0xbeb1bd[_0x05bf('0x1a')],_0xbeb1bd[_0x05bf('0x1b')]));_0xbeb1bd['on']('error',errorHandler);_0xbeb1bd['on'](_0x05bf('0x26'),closeHandler);_0xbeb1bd['on'](_0x05bf('0x27'),timeoutHandler);_0xbeb1bd[_0x05bf('0x28')]=![];_0xbeb1bd['on']('hangup',hangupHandler);var _0x4c84e8=_[_0x05bf('0x29')](projects,[_0x05bf('0x13'),_0xbeb1bd[_0x05bf('0x1e')]]);if(!_0x4c84e8)return Project[_0x05bf('0x2a')](_0xbeb1bd);if(!_0x4c84e8['production'])return Project[_0x05bf('0x2b')](_0xbeb1bd);return Project[_0x05bf('0x2c')](_0x4c84e8,_0xbeb1bd);}function main(){var _0x19a777;return utilLicense[_0x05bf('0x2d')]()[_0x05bf('0x20')](function(_0x1dad3e){if(!_0x1dad3e)return;if(_0x1dad3e[_0x05bf('0x2e')]){if(_0x1dad3e[_0x05bf('0x2f')]&&_0x1dad3e[_0x05bf('0x2f')]>0x0){logger[_0x05bf('0x10')](util[_0x05bf('0x15')](_0x05bf('0x30'),_0x1dad3e[_0x05bf('0x2f')]));_0x19a777=_0x1dad3e[_0x05bf('0x2f')];}else{logger[_0x05bf('0x10')](_0x05bf('0x31'));}}else{logger['info'](_0x05bf('0x32'));_0x19a777=-0x1;}})[_0x05bf('0x20')](function(){return Project[_0x05bf('0x33')]();})[_0x05bf('0x20')](function(_0x39860f){projects=_0x39860f;return;})[_0x05bf('0x21')](function(_0x3f43df){logger[_0x05bf('0xe')](_0x05bf('0x34'),_0x3f43df[_0x05bf('0xc')]);})[_0x05bf('0x35')](function(){var _0x4670b1=require(_0x05bf('0x36'))(config[_0x05bf('0x8')][_0x05bf('0x12')],config[_0x05bf('0x8')]['ip'],_0x19a777);_0x4670b1['on']('error',errorHandler);_0x4670b1['on'](_0x05bf('0x37'),listeningHandler);_0x4670b1['on'](_0x05bf('0x38'),connectionHandler);_0x4670b1['on'](_0x05bf('0x26'),closeHandler);});}main();
\ No newline at end of file
+var _0xfb52=['./rpc','./project','agi','127.0.0.1','projectUpdate','error','stack','deleted','splice','push','port','info','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','format','[%s]\x20%s','message','arg_1','calleridname','callerid','dnid','uniqueid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','createSquareReport','then','indexOf','agi_','substring','debug','stringify','close','timeout','evtHangup','hangup','find','handleUnpublished','initialize','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','getAll','finally','./server','listening','connection','syncho','util','../../config/environment','../../config/license/util'];(function(_0x464998,_0x234740){var _0x3306d7=function(_0x3e63ad){while(--_0x3e63ad){_0x464998['push'](_0x464998['shift']());}};_0x3306d7(++_0x234740);}(_0xfb52,0x1c7));var _0x2fb5=function(_0x317ea2,_0x32c0a5){_0x317ea2=_0x317ea2-0x0;var _0x4541bf=_0xfb52[_0x317ea2];return _0x4541bf;};'use strict';var _=require('lodash');var syncho=require(_0x2fb5('0x0'));var util=require(_0x2fb5('0x1'));var config=require(_0x2fb5('0x2'));var logger=require('../../config/logger')('agi');var utilLicense=require(_0x2fb5('0x3'));var rpc=require(_0x2fb5('0x4'));var Project=require(_0x2fb5('0x5'));var AGIEmitter=require('./events')['EventEmitter'];var projects=[];config[_0x2fb5('0x6')]=_['defaults'](config[_0x2fb5('0x6')],{'ip':_0x2fb5('0x7'),'port':0x11dd});AGIEmitter['on'](_0x2fb5('0x8'),projectUpdateHandler);function connectionHandler(_0x3e020d){process['nextTick'](function(){syncho(function(){try{setChannelVariables(_0x3e020d);agiHandler(_0x3e020d);}catch(_0x4e0180){logger[_0x2fb5('0x9')](_0x4e0180[_0x2fb5('0xa')]);}});});}function projectUpdateHandler(_0x5ad80e){try{var _0x110fd0=_['findIndex'](projects,['id',_0x5ad80e['id']]);if(_0x110fd0>-0x1){if(_0x5ad80e[_0x2fb5('0xb')]===!![]){projects[_0x2fb5('0xc')](_0x110fd0,0x1);}else{projects[_0x110fd0]=_0x5ad80e;}}else{projects[_0x2fb5('0xd')](_0x5ad80e);}}catch(_0x4f66b7){logger[_0x2fb5('0x9')](_0x4f66b7[_0x2fb5('0xa')]);}}function listeningHandler(){console['log']('Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!',config['agi'][_0x2fb5('0xe')]);logger[_0x2fb5('0xf')](util['format'](_0x2fb5('0x10'),config[_0x2fb5('0x6')]['ip'],config[_0x2fb5('0x6')][_0x2fb5('0xe')]));}function errorHandler(_0xd850e6){if(_0xd850e6&&_0xd850e6[_0x2fb5('0x11')]&&_0xd850e6['message']){logger[_0x2fb5('0x9')](util[_0x2fb5('0x12')](_0x2fb5('0x13'),_0xd850e6[_0x2fb5('0x11')],_0xd850e6[_0x2fb5('0x14')]));}else{logger['error'](util['format']('[ERROR]\x20%s',_0xd850e6[_0x2fb5('0xa')]));}}function closeHandler(){logger[_0x2fb5('0xf')](util[_0x2fb5('0x12')]('[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0x2fb5('0x15')],this[_0x2fb5('0x16')],this[_0x2fb5('0x17')],this[_0x2fb5('0x18')],this[_0x2fb5('0x19')]));try{createSquareReport(this);}catch(_0x4474bc){logger['error'](_0x4474bc[_0x2fb5('0xa')]);}}function timeoutHandler(){logger[_0x2fb5('0xf')](util[_0x2fb5('0x12')](_0x2fb5('0x1a'),this[_0x2fb5('0x15')],this[_0x2fb5('0x16')],this[_0x2fb5('0x17')],this[_0x2fb5('0x18')],this[_0x2fb5('0x19')]));}function hangupHandler(){logger[_0x2fb5('0xf')](util[_0x2fb5('0x12')](_0x2fb5('0x1b'),this[_0x2fb5('0x15')],this['calleridname'],this[_0x2fb5('0x17')],this[_0x2fb5('0x18')],this[_0x2fb5('0x19')]));this['evtHangup']=!![];}function createSquareReport(_0x575ac,_0x30e660){rpc[_0x2fb5('0x1c')](_0x575ac)[_0x2fb5('0x1d')](function(_0xa3b1f9){if(_0x30e660){_0x30e660(null,_0xa3b1f9);}})['catch'](function(_0x19b674){if(_0x30e660){_0x30e660(null,_0x19b674);}});}function setChannelVariables(_0x2e7438){for(var _0x4e6442 in _0x2e7438){if(_0x2e7438['hasOwnProperty'](_0x4e6442)){if(_0x4e6442[_0x2fb5('0x1e')](_0x2fb5('0x1f'))===0x0){_0x2e7438[_0x4e6442[_0x2fb5('0x20')](0x4)]=_0x2e7438[_0x4e6442];delete _0x2e7438[_0x4e6442];}}}}function agiHandler(_0x12ffc7){logger[_0x2fb5('0x21')]('variables',JSON[_0x2fb5('0x22')](_0x12ffc7,null,0x2));logger[_0x2fb5('0xf')](util[_0x2fb5('0x12')]('[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x12ffc7['arg_1'],_0x12ffc7[_0x2fb5('0x16')],_0x12ffc7[_0x2fb5('0x17')],_0x12ffc7['dnid'],_0x12ffc7[_0x2fb5('0x19')]));_0x12ffc7['on'](_0x2fb5('0x9'),errorHandler);_0x12ffc7['on'](_0x2fb5('0x23'),closeHandler);_0x12ffc7['on'](_0x2fb5('0x24'),timeoutHandler);_0x12ffc7[_0x2fb5('0x25')]=![];_0x12ffc7['on'](_0x2fb5('0x26'),hangupHandler);var _0x50a47f=_[_0x2fb5('0x27')](projects,[_0x2fb5('0x11'),_0x12ffc7[_0x2fb5('0x15')]]);if(!_0x50a47f)return Project['handleNotFound'](_0x12ffc7);if(!_0x50a47f['production'])return Project[_0x2fb5('0x28')](_0x12ffc7);return Project[_0x2fb5('0x29')](_0x50a47f,_0x12ffc7);}function main(){var _0x5f9b49;return utilLicense['getLicense']()[_0x2fb5('0x1d')](function(_0x4a5398){if(!_0x4a5398)return;if(_0x4a5398['voice']){if(_0x4a5398[_0x2fb5('0x2a')]&&_0x4a5398[_0x2fb5('0x2a')]>0x0){logger[_0x2fb5('0xf')](util[_0x2fb5('0x12')](_0x2fb5('0x2b'),_0x4a5398[_0x2fb5('0x2a')]));_0x5f9b49=_0x4a5398[_0x2fb5('0x2a')];}else{logger[_0x2fb5('0xf')](_0x2fb5('0x2c'));}}else{logger['info'](_0x2fb5('0x2d'));_0x5f9b49=-0x1;}})['then'](function(){return Project[_0x2fb5('0x2e')]();})['then'](function(_0x3a426a){projects=_0x3a426a;return;})['catch'](function(_0x54adc7){logger[_0x2fb5('0x9')]('[LICENSE]',_0x54adc7['stack']);})[_0x2fb5('0x2f')](function(){var _0x148135=require(_0x2fb5('0x30'))(config[_0x2fb5('0x6')][_0x2fb5('0xe')],config[_0x2fb5('0x6')]['ip'],_0x5f9b49);_0x148135['on']('error',errorHandler);_0x148135['on'](_0x2fb5('0x31'),listeningHandler);_0x148135['on'](_0x2fb5('0x32'),connectionHandler);_0x148135['on'](_0x2fb5('0x23'),closeHandler);});}main();
\ No newline at end of file
index 7d51e29..b80edf9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc22f=['request','error','message','sendMailMessage','SendMail','bluebird','client'];(function(_0x55d893,_0x325ebe){var _0x52d152=function(_0x5e6314){while(--_0x5e6314){_0x55d893['push'](_0x55d893['shift']());}};_0x52d152(++_0x325ebe);}(_0xc22f,0x178));var _0xfc22=function(_0x491282,_0x532f38){_0x491282=_0x491282-0x0;var _0x52f9e3=_0xc22f[_0x491282];return _0x52f9e3;};'use strict';var BPromise=require(_0xfc22('0x0'));var jayson=require('jayson/promise');var client=jayson[_0xfc22('0x1')]['http']({'port':0x232b});function request(_0x469403,_0x5754b6){return new BPromise(function(_0x18b42b,_0x406cd6){return client[_0xfc22('0x2')](_0x469403,_0x5754b6)['then'](function(_0x80aaa){if(_0x80aaa[_0xfc22('0x3')]){return _0x406cd6(_0x80aaa[_0xfc22('0x3')][_0xfc22('0x4')]);}else{return _0x18b42b(_0x80aaa['result']);}})['catch'](function(_0x316579){return _0x406cd6(_0x316579);});});}exports[_0xfc22('0x5')]=function(_0x29420a,_0x5a732d){return request(_0xfc22('0x6'),{'account':_0x29420a,'message':_0x5a732d});};
\ No newline at end of file
+var _0x06be=['bluebird','jayson/promise','client','http','then','error','message','catch','sendMailMessage'];(function(_0x8bb4c1,_0x2d6e53){var _0x67a6e1=function(_0x1155e5){while(--_0x1155e5){_0x8bb4c1['push'](_0x8bb4c1['shift']());}};_0x67a6e1(++_0x2d6e53);}(_0x06be,0xfc));var _0xe06b=function(_0x268228,_0x2fbc20){_0x268228=_0x268228-0x0;var _0x1bb11a=_0x06be[_0x268228];return _0x1bb11a;};'use strict';var BPromise=require(_0xe06b('0x0'));var jayson=require(_0xe06b('0x1'));var client=jayson[_0xe06b('0x2')][_0xe06b('0x3')]({'port':0x232b});function request(_0x20eea0,_0x3b6c9d){return new BPromise(function(_0x27dabf,_0x448a93){return client['request'](_0x20eea0,_0x3b6c9d)[_0xe06b('0x4')](function(_0x7481cb){if(_0x7481cb[_0xe06b('0x5')]){return _0x448a93(_0x7481cb['error'][_0xe06b('0x6')]);}else{return _0x27dabf(_0x7481cb['result']);}})[_0xe06b('0x7')](function(_0x335132){return _0x448a93(_0x335132);});});}exports[_0xe06b('0x8')]=function(_0x1e96db,_0x52cf5a){return request('SendMail',{'account':_0x1e96db,'message':_0x52cf5a});};
\ No newline at end of file
index df5212a..b13f4ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7b8=['inspect','production','start','debug','joinAt','format','omit','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','dnid','uniqueid','traverseBFS','clear','vertex','agicommand','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','stringify','evtHangup','result','toString','finally','info','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','callerid','agicommand\x20not\x20found','close','Project\x20%s\x20not\x20found','Project\x20%s\x20not\x20published','continueAt','exports','lodash','moment','xml2json','util','../../config/logger','agi','./rpc','./mailRpc','./graph','getSquareProjects','catch','error','Unable\x20to\x20download\x20CallySquare\x20projects','stack','maxRetry','retry','addVertex','mxCell','isArray','source','target','addEdge','value','root'];(function(_0x3d72aa,_0x4c1597){var _0x309a93=function(_0x10685){while(--_0x10685){_0x3d72aa['push'](_0x3d72aa['shift']());}};_0x309a93(++_0x4c1597);}(_0xc7b8,0x150));var _0x8c7b=function(_0x432996,_0x1703cc){_0x432996=_0x432996-0x0;var _0x231c54=_0xc7b8[_0x432996];return _0x231c54;};'use strict';var _=require(_0x8c7b('0x0'));var moment=require(_0x8c7b('0x1'));var parser=require(_0x8c7b('0x2'));var util=require(_0x8c7b('0x3'));var logger=require(_0x8c7b('0x4'))(_0x8c7b('0x5'));var rpc=require(_0x8c7b('0x6'));var mailRpc=require(_0x8c7b('0x7'));var Graph=require(_0x8c7b('0x8'));var Vertices=require('./vertices');var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;function getAll(){return rpc[_0x8c7b('0x9')]()[_0x8c7b('0xa')](function(_0x355c3b){logger[_0x8c7b('0xb')](_0x8c7b('0xc'),_0x355c3b[_0x8c7b('0xd')]);return[];});}function addVertex(_0x414ec2,_0x1c15c8,_0x39219d){_0x1c15c8['agicommand']=_0x39219d;if(_0x1c15c8['hasOwnProperty']('retry')){_0x1c15c8[_0x8c7b('0xe')]=parseInt(_0x1c15c8[_0x8c7b('0xf')],0xa);}_0x414ec2[_0x8c7b('0x10')](_['omit'](_0x1c15c8,_0x8c7b('0x11')));}function initGraph(_0x2344b9,_0x3caec5){var _0x494c70=new Graph();for(var _0x23a145 in _0x2344b9){if(_0x2344b9['hasOwnProperty'](_0x23a145)){if(_[_0x8c7b('0x12')](_0x2344b9[_0x23a145])){for(var _0x52c492=0x0;_0x52c492<_0x2344b9[_0x23a145]['length'];_0x52c492+=0x1){addVertex(_0x494c70,_0x2344b9[_0x23a145][_0x52c492],_0x23a145);}}else{addVertex(_0x494c70,_0x2344b9[_0x23a145],_0x23a145);}}}for(var _0xc1e2e0=0x0;_0xc1e2e0<_0x3caec5['length'];_0xc1e2e0+=0x1){if(_0x3caec5[_0xc1e2e0][_0x8c7b('0x13')]&&_0x3caec5[_0xc1e2e0][_0x8c7b('0x14')]){_0x494c70[_0x8c7b('0x15')](_0x3caec5[_0xc1e2e0][_0x8c7b('0x13')],_0x3caec5[_0xc1e2e0][_0x8c7b('0x14')],_0x3caec5[_0xc1e2e0][_0x8c7b('0x16')]);}}return _0x494c70;}function getRoot(_0x5412d8){return parser['toJson'](_0x5412d8,{'object':!![]})['mxGraphModel'][_0x8c7b('0x17')];}function inspect(_0x90445){return util[_0x8c7b('0x18')](_0x90445,{'showHidden':![],'depth':null});}function initialize(_0x519546,_0x2ff0ba){var _0x22701a=getRoot(_0x519546[_0x8c7b('0x19')]);if(!_0x22701a||!_0x22701a[_0x8c7b('0x1a')])return;var _0x5df332,_0x46a225,_0x3843f4;logger[_0x8c7b('0x1b')]('root',JSON['stringify'](_0x22701a,null,0x2));_0x2ff0ba[_0x8c7b('0x1c')]=moment()[_0x8c7b('0x1d')]('YYYY-MM-DD\x20HH:mm:ss');_0x5df332=initGraph(_[_0x8c7b('0x1e')](_0x22701a,_0x8c7b('0x11')),_0x22701a[_0x8c7b('0x11')]);_0x46a225=new Vertices(_0x2ff0ba,rpc,mailRpc);logger['info'](util[_0x8c7b('0x1d')](_0x8c7b('0x1f'),_0x2ff0ba[_0x8c7b('0x20')],_0x2ff0ba[_0x8c7b('0x21')],_0x2ff0ba['callerid'],_0x2ff0ba[_0x8c7b('0x22')],_0x2ff0ba[_0x8c7b('0x23')]));_0x5df332[_0x8c7b('0x24')](_0x22701a[_0x8c7b('0x1a')]['id'],function(_0x41382a){try{_0x41382a=_0x46a225[_0x8c7b('0x25')](_0x41382a);logger[_0x8c7b('0x1b')](_0x8c7b('0x26'),JSON['stringify'](_0x41382a,null,0x2));if(_0x41382a[_0x8c7b('0x27')]===_0x8c7b('0x28')){logger['info'](_0x8c7b('0x29'));_0x2ff0ba[_0x8c7b('0x2a')]=_0x41382a[_0x8c7b('0x2a')]||_0x2ff0ba[_0x8c7b('0x2a')];_0x2ff0ba['extension']=_0x41382a[_0x8c7b('0x2b')];_0x2ff0ba[_0x8c7b('0x2c')]=_0x41382a[_0x8c7b('0x2c')]?_0x41382a[_0x8c7b('0x2c')]-0x1:0x1;return null;}else if(_0x41382a&&_0x46a225[_0x41382a['agicommand']]){_0x3843f4=_0x46a225[_0x41382a[_0x8c7b('0x27')]](_0x41382a);logger['info'](_0x8c7b('0x2d'),JSON[_0x8c7b('0x2e')](_0x3843f4,null,0x2));if(_0x3843f4&&_0x3843f4['code']===AGI_CODE_SUCCESS&&_0x3843f4['result']!==AGI_RESULT_ERROR&&!_0x2ff0ba[_0x8c7b('0x2f')]){logger['debug']('response',inspect(_0x3843f4));return _['isUndefined'](_0x3843f4['result'])?null:_0x3843f4[_0x8c7b('0x30')][_0x8c7b('0x31')]();}else{logger['error'](_0x8c7b('0x2d'),inspect(_0x3843f4));return null;}}else{logger[_0x8c7b('0xb')]('agicommand\x20not\x20found');return null;}}catch(_0x562563){logger[_0x8c7b('0xb')](_0x562563[_0x8c7b('0xd')]);return null;}});if(_0x22701a[_0x8c7b('0x32')]){logger[_0x8c7b('0x33')](util[_0x8c7b('0x1d')](_0x8c7b('0x34'),_0x2ff0ba['arg_1'],_0x2ff0ba[_0x8c7b('0x21')],_0x2ff0ba[_0x8c7b('0x35')],_0x2ff0ba[_0x8c7b('0x22')],_0x2ff0ba[_0x8c7b('0x23')]));_0x5df332[_0x8c7b('0x24')](_0x22701a[_0x8c7b('0x32')]['id'],function(_0x1e276b){try{_0x1e276b=_0x46a225[_0x8c7b('0x25')](_0x1e276b);logger['debug'](_0x8c7b('0x26'),JSON[_0x8c7b('0x2e')](_0x1e276b,null,0x2));if(_0x1e276b&&_0x46a225[_0x1e276b['agicommand']]){_0x3843f4=_0x46a225[_0x1e276b['agicommand']](_0x1e276b);if(_0x3843f4){logger[_0x8c7b('0x1b')](_0x8c7b('0x2d'),inspect(_0x3843f4));return _['isUndefined'](_0x3843f4[_0x8c7b('0x30')])?null:_0x3843f4[_0x8c7b('0x30')][_0x8c7b('0x31')]();}else{logger[_0x8c7b('0xb')]('response',inspect(_0x3843f4));return null;}}else{logger[_0x8c7b('0xb')](_0x8c7b('0x36'));return null;}}catch(_0x476173){logger[_0x8c7b('0xb')](_0x476173[_0x8c7b('0xd')]);return null;}});}logger[_0x8c7b('0x33')](util['format']('[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x2ff0ba[_0x8c7b('0x20')],_0x2ff0ba['calleridname'],_0x2ff0ba['callerid'],_0x2ff0ba[_0x8c7b('0x22')],_0x2ff0ba[_0x8c7b('0x23')]));logger[_0x8c7b('0x33')](util[_0x8c7b('0x1d')]('[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s',_0x2ff0ba['context'],_0x2ff0ba[_0x8c7b('0x2b')],parseInt(_0x2ff0ba[_0x8c7b('0x2c')],0xa)+0x1));_0x2ff0ba['continueAt'](_0x2ff0ba['context'],_0x2ff0ba[_0x8c7b('0x2b')],parseInt(_0x2ff0ba[_0x8c7b('0x2c')],0xa)+0x1);_0x2ff0ba[_0x8c7b('0x37')]();}function handleNotFound(_0x277a7d){logger['error'](util[_0x8c7b('0x1d')](_0x8c7b('0x38'),_0x277a7d[_0x8c7b('0x20')]));_0x277a7d['continueAt'](_0x277a7d[_0x8c7b('0x2a')],_0x277a7d[_0x8c7b('0x2b')],parseInt(_0x277a7d['priority'],0xa)+0x1);_0x277a7d[_0x8c7b('0x37')]();}function handleUnpublished(_0x1fca6a){logger[_0x8c7b('0xb')](util[_0x8c7b('0x1d')](_0x8c7b('0x39'),_0x1fca6a[_0x8c7b('0x20')]));_0x1fca6a[_0x8c7b('0x3a')](_0x1fca6a['context'],_0x1fca6a[_0x8c7b('0x2b')],parseInt(_0x1fca6a[_0x8c7b('0x2c')],0xa)+0x1);_0x1fca6a[_0x8c7b('0x37')]();}module[_0x8c7b('0x3b')]={'getAll':getAll,'handleNotFound':handleNotFound,'handleUnpublished':handleUnpublished,'initialize':initialize};
\ No newline at end of file
+var _0x9272=['stringify','joinAt','format','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','callerid','dnid','uniqueid','traverseBFS','clear','vertex','agicommand','gotoc','info','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','code','result','evtHangup','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','isUndefined','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','continueAt','Project\x20%s\x20not\x20found','close','Project\x20%s\x20not\x20published','exports','lodash','xml2json','../../config/logger','./rpc','./mailRpc','./graph','getSquareProjects','catch','error','Unable\x20to\x20download\x20CallySquare\x20projects','stack','hasOwnProperty','retry','addVertex','omit','mxCell','length','source','target','addEdge','value','toJson','mxGraphModel','root','production','start','debug'];(function(_0x3042c5,_0x36cb88){var _0x7cd140=function(_0x4cdcd8){while(--_0x4cdcd8){_0x3042c5['push'](_0x3042c5['shift']());}};_0x7cd140(++_0x36cb88);}(_0x9272,0xd9));var _0x2927=function(_0x2a4372,_0xdd2087){_0x2a4372=_0x2a4372-0x0;var _0x32d206=_0x9272[_0x2a4372];return _0x32d206;};'use strict';var _=require(_0x2927('0x0'));var moment=require('moment');var parser=require(_0x2927('0x1'));var util=require('util');var logger=require(_0x2927('0x2'))('agi');var rpc=require(_0x2927('0x3'));var mailRpc=require(_0x2927('0x4'));var Graph=require(_0x2927('0x5'));var Vertices=require('./vertices');var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;function getAll(){return rpc[_0x2927('0x6')]()[_0x2927('0x7')](function(_0x4c32c0){logger[_0x2927('0x8')](_0x2927('0x9'),_0x4c32c0[_0x2927('0xa')]);return[];});}function addVertex(_0x1f115d,_0x2aca84,_0x4db049){_0x2aca84['agicommand']=_0x4db049;if(_0x2aca84[_0x2927('0xb')]('retry')){_0x2aca84['maxRetry']=parseInt(_0x2aca84[_0x2927('0xc')],0xa);}_0x1f115d[_0x2927('0xd')](_[_0x2927('0xe')](_0x2aca84,_0x2927('0xf')));}function initGraph(_0x114671,_0xcb8cd2){var _0xb06b=new Graph();for(var _0x11f263 in _0x114671){if(_0x114671[_0x2927('0xb')](_0x11f263)){if(_['isArray'](_0x114671[_0x11f263])){for(var _0x39b174=0x0;_0x39b174<_0x114671[_0x11f263][_0x2927('0x10')];_0x39b174+=0x1){addVertex(_0xb06b,_0x114671[_0x11f263][_0x39b174],_0x11f263);}}else{addVertex(_0xb06b,_0x114671[_0x11f263],_0x11f263);}}}for(var _0x7676b9=0x0;_0x7676b9<_0xcb8cd2['length'];_0x7676b9+=0x1){if(_0xcb8cd2[_0x7676b9][_0x2927('0x11')]&&_0xcb8cd2[_0x7676b9][_0x2927('0x12')]){_0xb06b[_0x2927('0x13')](_0xcb8cd2[_0x7676b9][_0x2927('0x11')],_0xcb8cd2[_0x7676b9][_0x2927('0x12')],_0xcb8cd2[_0x7676b9][_0x2927('0x14')]);}}return _0xb06b;}function getRoot(_0x4d2bf4){return parser[_0x2927('0x15')](_0x4d2bf4,{'object':!![]})[_0x2927('0x16')][_0x2927('0x17')];}function inspect(_0x4fdde8){return util['inspect'](_0x4fdde8,{'showHidden':![],'depth':null});}function initialize(_0x3ac690,_0x283f75){var _0x2f3b05=getRoot(_0x3ac690[_0x2927('0x18')]);if(!_0x2f3b05||!_0x2f3b05[_0x2927('0x19')])return;var _0x4006b2,_0x9fe6c6,_0x2338da;logger[_0x2927('0x1a')]('root',JSON[_0x2927('0x1b')](_0x2f3b05,null,0x2));_0x283f75[_0x2927('0x1c')]=moment()[_0x2927('0x1d')]('YYYY-MM-DD\x20HH:mm:ss');_0x4006b2=initGraph(_[_0x2927('0xe')](_0x2f3b05,_0x2927('0xf')),_0x2f3b05[_0x2927('0xf')]);_0x9fe6c6=new Vertices(_0x283f75,rpc,mailRpc);logger['info'](util['format'](_0x2927('0x1e'),_0x283f75[_0x2927('0x1f')],_0x283f75[_0x2927('0x20')],_0x283f75[_0x2927('0x21')],_0x283f75[_0x2927('0x22')],_0x283f75[_0x2927('0x23')]));_0x4006b2[_0x2927('0x24')](_0x2f3b05[_0x2927('0x19')]['id'],function(_0x2c8bb2){try{_0x2c8bb2=_0x9fe6c6[_0x2927('0x25')](_0x2c8bb2);logger[_0x2927('0x1a')](_0x2927('0x26'),JSON[_0x2927('0x1b')](_0x2c8bb2,null,0x2));if(_0x2c8bb2[_0x2927('0x27')]===_0x2927('0x28')){logger[_0x2927('0x29')](_0x2927('0x2a'));_0x283f75[_0x2927('0x2b')]=_0x2c8bb2[_0x2927('0x2b')]||_0x283f75[_0x2927('0x2b')];_0x283f75[_0x2927('0x2c')]=_0x2c8bb2[_0x2927('0x2c')];_0x283f75[_0x2927('0x2d')]=_0x2c8bb2['priority']?_0x2c8bb2[_0x2927('0x2d')]-0x1:0x1;return null;}else if(_0x2c8bb2&&_0x9fe6c6[_0x2c8bb2[_0x2927('0x27')]]){_0x2338da=_0x9fe6c6[_0x2c8bb2[_0x2927('0x27')]](_0x2c8bb2);logger[_0x2927('0x29')](_0x2927('0x2e'),JSON['stringify'](_0x2338da,null,0x2));if(_0x2338da&&_0x2338da[_0x2927('0x2f')]===AGI_CODE_SUCCESS&&_0x2338da[_0x2927('0x30')]!==AGI_RESULT_ERROR&&!_0x283f75[_0x2927('0x31')]){logger[_0x2927('0x1a')]('response',inspect(_0x2338da));return _['isUndefined'](_0x2338da[_0x2927('0x30')])?null:_0x2338da['result'][_0x2927('0x32')]();}else{logger[_0x2927('0x8')](_0x2927('0x2e'),inspect(_0x2338da));return null;}}else{logger['error'](_0x2927('0x33'));return null;}}catch(_0x2f581b){logger['error'](_0x2f581b['stack']);return null;}});if(_0x2f3b05[_0x2927('0x34')]){logger[_0x2927('0x29')](util[_0x2927('0x1d')](_0x2927('0x35'),_0x283f75['arg_1'],_0x283f75[_0x2927('0x20')],_0x283f75[_0x2927('0x21')],_0x283f75['dnid'],_0x283f75[_0x2927('0x23')]));_0x4006b2['traverseBFS'](_0x2f3b05[_0x2927('0x34')]['id'],function(_0x25b65b){try{_0x25b65b=_0x9fe6c6[_0x2927('0x25')](_0x25b65b);logger[_0x2927('0x1a')]('vertex',JSON[_0x2927('0x1b')](_0x25b65b,null,0x2));if(_0x25b65b&&_0x9fe6c6[_0x25b65b[_0x2927('0x27')]]){_0x2338da=_0x9fe6c6[_0x25b65b[_0x2927('0x27')]](_0x25b65b);if(_0x2338da){logger[_0x2927('0x1a')]('response',inspect(_0x2338da));return _[_0x2927('0x36')](_0x2338da['result'])?null:_0x2338da[_0x2927('0x30')][_0x2927('0x32')]();}else{logger['error'](_0x2927('0x2e'),inspect(_0x2338da));return null;}}else{logger['error'](_0x2927('0x33'));return null;}}catch(_0x47ac6d){logger[_0x2927('0x8')](_0x47ac6d[_0x2927('0xa')]);return null;}});}logger['info'](util['format']('[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x283f75[_0x2927('0x1f')],_0x283f75['calleridname'],_0x283f75[_0x2927('0x21')],_0x283f75[_0x2927('0x22')],_0x283f75[_0x2927('0x23')]));logger[_0x2927('0x29')](util[_0x2927('0x1d')](_0x2927('0x37'),_0x283f75[_0x2927('0x2b')],_0x283f75[_0x2927('0x2c')],parseInt(_0x283f75[_0x2927('0x2d')],0xa)+0x1));_0x283f75[_0x2927('0x38')](_0x283f75[_0x2927('0x2b')],_0x283f75[_0x2927('0x2c')],parseInt(_0x283f75['priority'],0xa)+0x1);_0x283f75['close']();}function handleNotFound(_0x56e47){logger['error'](util[_0x2927('0x1d')](_0x2927('0x39'),_0x56e47[_0x2927('0x1f')]));_0x56e47['continueAt'](_0x56e47[_0x2927('0x2b')],_0x56e47[_0x2927('0x2c')],parseInt(_0x56e47[_0x2927('0x2d')],0xa)+0x1);_0x56e47[_0x2927('0x3a')]();}function handleUnpublished(_0x45cf08){logger[_0x2927('0x8')](util[_0x2927('0x1d')](_0x2927('0x3b'),_0x45cf08[_0x2927('0x1f')]));_0x45cf08[_0x2927('0x38')](_0x45cf08[_0x2927('0x2b')],_0x45cf08[_0x2927('0x2c')],parseInt(_0x45cf08[_0x2927('0x2d')],0xa)+0x1);_0x45cf08[_0x2927('0x3a')]();}module[_0x2927('0x3c')]={'getAll':getAll,'handleNotFound':handleNotFound,'handleUnpublished':handleUnpublished,'initialize':initialize};
\ No newline at end of file
index 2623834..b371fe6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d26=['\x0d\x0a\x0d\x0a','substring','length','split','indexOf','slice','trim','emit','headers','exports','stream','call','_localBuffer','_inBody','inherits','prototype','_transform'];(function(_0x2dd576,_0x5bbb24){var _0x100c77=function(_0x55b9a0){while(--_0x55b9a0){_0x2dd576['push'](_0x2dd576['shift']());}};_0x100c77(++_0x5bbb24);}(_0x7d26,0x16f));var _0x67d2=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x7d26[_0x167cc1];return _0x10bc4b;};'use strict';var util=require('util');var Transform=require(_0x67d2('0x0'))['Transform'];function AGIReply(_0x373afc){Transform[_0x67d2('0x1')](this,_0x373afc);this[_0x67d2('0x2')]='';this[_0x67d2('0x3')]=![];}util[_0x67d2('0x4')](AGIReply,Transform);AGIReply[_0x67d2('0x5')][_0x67d2('0x6')]=function(_0x46c36d,_0x194525,_0x3e31dc){var _0x47d53e='\x0a',_0x2479fa=['\x0a\x0a',_0x67d2('0x7')],_0x46683f=-0x1,_0x1b3cfe=-0x1,_0x158c03='',_0xbd653e=0x0,_0x242e38='',_0x404c9b='';this[_0x67d2('0x2')]+=_0x46c36d['toString']();_0x242e38=this[_0x67d2('0x2')];if(!this[_0x67d2('0x3')]){_0xbd653e=0x0;while(_0x2479fa[_0xbd653e]){while((_0x1b3cfe=_0x242e38['indexOf'](_0x2479fa[_0xbd653e]))!=-0x1){_0x158c03=_0x2479fa[_0xbd653e];_0x404c9b=_0x242e38['substring'](0x0,_0x1b3cfe);_0x242e38=_0x242e38[_0x67d2('0x8')](_0x1b3cfe+_0x158c03[_0x67d2('0x9')]);var _0x2d9807=_0x404c9b[_0x67d2('0xa')](_0x47d53e),_0x54470c=0x0,_0xadf097={},_0x2a97fd='',_0x313374='',_0x155553=-0x1;while(_0x2d9807[_0x54470c]){_0x155553=_0x2d9807[_0x54470c][_0x67d2('0xb')](':');if(_0x155553!=-0x1){_0x2a97fd=_0x2d9807[_0x54470c][_0x67d2('0xc')](0x0,_0x155553)[_0x67d2('0xd')]();_0x313374=_0x2d9807[_0x54470c][_0x67d2('0xc')](_0x155553+0x1)['trim']();if(_0x2a97fd[_0x67d2('0x9')]>0x0){_0xadf097[_0x2a97fd]=_0x313374;}}else{}_0x54470c++;}this[_0x67d2('0xe')](_0x67d2('0xf'),_0xadf097);this[_0x67d2('0x3')]=!![];}_0xbd653e++;}this[_0x67d2('0x2')]=_0x242e38;}else{while((_0x46683f=_0x242e38[_0x67d2('0xb')](_0x47d53e))!=-0x1){_0x404c9b=_0x242e38['substring'](0x0,_0x46683f);this[_0x67d2('0xe')]('line',_0x404c9b);_0x242e38=_0x242e38['substring'](_0x46683f+_0x47d53e[_0x67d2('0x9')]);}this[_0x67d2('0x2')]=_0x242e38;}_0x3e31dc();};module[_0x67d2('0x10')]=AGIReply;
\ No newline at end of file
+var _0xb5a4=['headers','line','exports','stream','Transform','_localBuffer','_inBody','inherits','prototype','_transform','\x0d\x0a\x0d\x0a','substring','length','split','indexOf','slice','trim','emit'];(function(_0x210eae,_0x1a6007){var _0x11e4b6=function(_0x94a8de){while(--_0x94a8de){_0x210eae['push'](_0x210eae['shift']());}};_0x11e4b6(++_0x1a6007);}(_0xb5a4,0x17d));var _0x4b5a=function(_0x18fba8,_0x52ea05){_0x18fba8=_0x18fba8-0x0;var _0x48e89e=_0xb5a4[_0x18fba8];return _0x48e89e;};'use strict';var util=require('util');var Transform=require(_0x4b5a('0x0'))[_0x4b5a('0x1')];function AGIReply(_0x8488d8){Transform['call'](this,_0x8488d8);this[_0x4b5a('0x2')]='';this[_0x4b5a('0x3')]=![];}util[_0x4b5a('0x4')](AGIReply,Transform);AGIReply[_0x4b5a('0x5')][_0x4b5a('0x6')]=function(_0x1e7cff,_0x77e8b5,_0x812564){var _0x19a98a='\x0a',_0x56d278=['\x0a\x0a',_0x4b5a('0x7')],_0x2b3d11=-0x1,_0xa18b37=-0x1,_0x6be522='',_0x30fada=0x0,_0x380c48='',_0x15797c='';this[_0x4b5a('0x2')]+=_0x1e7cff['toString']();_0x380c48=this[_0x4b5a('0x2')];if(!this['_inBody']){_0x30fada=0x0;while(_0x56d278[_0x30fada]){while((_0xa18b37=_0x380c48['indexOf'](_0x56d278[_0x30fada]))!=-0x1){_0x6be522=_0x56d278[_0x30fada];_0x15797c=_0x380c48[_0x4b5a('0x8')](0x0,_0xa18b37);_0x380c48=_0x380c48['substring'](_0xa18b37+_0x6be522[_0x4b5a('0x9')]);var _0x460180=_0x15797c[_0x4b5a('0xa')](_0x19a98a),_0x3c85bc=0x0,_0x4dd1e0={},_0x4f7256='',_0x44c655='',_0x1a8c0d=-0x1;while(_0x460180[_0x3c85bc]){_0x1a8c0d=_0x460180[_0x3c85bc][_0x4b5a('0xb')](':');if(_0x1a8c0d!=-0x1){_0x4f7256=_0x460180[_0x3c85bc][_0x4b5a('0xc')](0x0,_0x1a8c0d)[_0x4b5a('0xd')]();_0x44c655=_0x460180[_0x3c85bc]['slice'](_0x1a8c0d+0x1)['trim']();if(_0x4f7256[_0x4b5a('0x9')]>0x0){_0x4dd1e0[_0x4f7256]=_0x44c655;}}else{}_0x3c85bc++;}this[_0x4b5a('0xe')](_0x4b5a('0xf'),_0x4dd1e0);this['_inBody']=!![];}_0x30fada++;}this['_localBuffer']=_0x380c48;}else{while((_0x2b3d11=_0x380c48[_0x4b5a('0xb')](_0x19a98a))!=-0x1){_0x15797c=_0x380c48['substring'](0x0,_0x2b3d11);this[_0x4b5a('0xe')](_0x4b5a('0x10'),_0x15797c);_0x380c48=_0x380c48['substring'](_0x2b3d11+_0x19a98a[_0x4b5a('0x9')]);}this[_0x4b5a('0x2')]=_0x380c48;}_0x812564();};module[_0x4b5a('0x11')]=AGIReply;
\ No newline at end of file
index 5835ba6..9372cb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5d5=['getSquareProjectById','ShowSquareProject','ShowVoiceQueue','ShowVariable','getSquareOdbcById','dsn','getUserById','ShowUser','getContactByPhone','GetContactByPhone','getTrunkById','ShowTrunk','getSoundById','save_name','ShowInterval','Interval','getSmsAccountById','ShowSmsAccount','createSmsMessage','createSquareDetailsReport','CreateSquareReport','merge','arg_2','format','createSquareRecording','CreateSquareRecording','createSquareMessage','CreateSquareMessage','createCmContact','ShowCmHopper','phone','ListId','CreateCmContact','getPauseById','ShowPause','agentLogin','LoginUser','agentPause','agentUnpause','UnpauseUser','agentLogout','LogoutUser','jayson/promise','http','request','then','error','message','result','catch','getSquareProjects','GetSquareProjects','name','production','getMailAccountById','ShowMailAccount','MailServerOut','Smtp','CloudProvider','email'];(function(_0x31cb5f,_0x2df766){var _0x586042=function(_0x53c807){while(--_0x53c807){_0x31cb5f['push'](_0x31cb5f['shift']());}};_0x586042(++_0x2df766);}(_0xe5d5,0x156));var _0x5e5d=function(_0x52d931,_0x3a135b){_0x52d931=_0x52d931-0x0;var _0x4437cf=_0xe5d5[_0x52d931];return _0x4437cf;};'use strict';var _=require('lodash');var moment=require('moment');var jayson=require(_0x5e5d('0x0'));var client=jayson['client'][_0x5e5d('0x1')]({'port':0x2329});function request(_0x4b8ae9,_0x50afd3){return new Promise(function(_0x5127ee,_0x3e2410){return client[_0x5e5d('0x2')](_0x4b8ae9,_0x50afd3)[_0x5e5d('0x3')](function(_0x3d014f){if(_0x3d014f[_0x5e5d('0x4')]){return _0x3e2410(_0x3d014f[_0x5e5d('0x4')][_0x5e5d('0x5')]);}else{return _0x5127ee(_0x3d014f[_0x5e5d('0x6')]);}})[_0x5e5d('0x7')](function(_0x131a59){return _0x3e2410(_0x131a59);});});}exports[_0x5e5d('0x8')]=function(){return request(_0x5e5d('0x9'),{'options':{'raw':![],'attributes':['id',_0x5e5d('0xa'),_0x5e5d('0xb')]}});};exports['getSquareProject']=function(_0x32d041){return request('ShowSquareProject',{'options':{'raw':![],'where':{'name':_0x32d041},'attributes':[_0x5e5d('0xb')]}});};exports[_0x5e5d('0xc')]=function(_0x55c119){return request(_0x5e5d('0xd'),{'options':{'raw':![],'where':{'id':_0x55c119},'include':[{'model':_0x5e5d('0xe'),'as':_0x5e5d('0xf'),'include':[{'model':_0x5e5d('0x10'),'as':'CloudProvider'}]}],'attributes':['id','name',_0x5e5d('0x11')],'smtp':!![]}});};exports[_0x5e5d('0x12')]=function(_0x51018d){return request(_0x5e5d('0x13'),{'options':{'where':{'id':_0x51018d},'attributes':[_0x5e5d('0xa')]}});};exports['getVoiceQueueById']=function(_0x42f1f8){return request(_0x5e5d('0x14'),{'options':{'where':{'id':_0x42f1f8},'attributes':['name']}});};exports['getVariableById']=function(_0x5bf617){return request(_0x5e5d('0x15'),{'options':{'where':{'id':_0x5bf617},'attributes':[_0x5e5d('0xa')]}});};exports[_0x5e5d('0x16')]=function(_0x1e2d44){return request('ShowSquareOdbc',{'options':{'where':{'id':_0x1e2d44},'attributes':[_0x5e5d('0x17')]}});};exports[_0x5e5d('0x18')]=function(_0x39964a){return request(_0x5e5d('0x19'),{'options':{'where':{'id':_0x39964a},'attributes':[_0x5e5d('0xa')]}});};exports[_0x5e5d('0x1a')]=function(_0x3b655b){return request(_0x5e5d('0x1b'),{'options':{'where':{'phone':_0x3b655b['phone']},'attributes':['id']}});};exports[_0x5e5d('0x1c')]=function(_0x1ceea7){return request(_0x5e5d('0x1d'),{'options':{'where':{'id':_0x1ceea7},'attributes':[_0x5e5d('0xa')]}});};exports[_0x5e5d('0x1e')]=function(_0xf8fe10){return request('ShowSound',{'options':{'where':{'id':_0xf8fe10},'attributes':[_0x5e5d('0x1f')]}});};exports['getIntervalById']=function(_0x968d4b){return request(_0x5e5d('0x20'),{'options':{'raw':![],'where':{'id':_0x968d4b},'include':[{'model':_0x5e5d('0x21'),'as':'Intervals'}]}});};exports[_0x5e5d('0x22')]=function(_0x488a49){return request(_0x5e5d('0x23'),{'options':{'where':{'id':_0x488a49},'attributes':['id',_0x5e5d('0xa')]}});};exports[_0x5e5d('0x24')]=function(_0x49a558){return request('CreateSmsMessage',{'body':_0x49a558});};exports[_0x5e5d('0x25')]=function(_0x1d5078){return request('CreateSquareDetailsReport',{'body':_0x1d5078});};exports['createSquareReport']=function(_0x28620d){return request(_0x5e5d('0x26'),{'body':_[_0x5e5d('0x27')](_0x28620d,{'project_name':_0x28620d['arg_1'],'prev_project_name':_0x28620d[_0x5e5d('0x28')]||'','is_subproject':_0x28620d['arg_2']?!![]:![],'leaveAt':moment()[_0x5e5d('0x29')]('YYYY-MM-DD\x20HH:mm:ss')})});};exports[_0x5e5d('0x2a')]=function(_0x20ba59){return request(_0x5e5d('0x2b'),{'body':_0x20ba59});};exports[_0x5e5d('0x2c')]=function(_0x425b5c){return request(_0x5e5d('0x2d'),{'body':_0x425b5c});};exports[_0x5e5d('0x2e')]=function(_0x56b166){return request(_0x5e5d('0x2f'),{'options':{'raw':![],'where':{'phone':_0x56b166[_0x5e5d('0x30')],'ListId':_0x56b166[_0x5e5d('0x31')]}}})[_0x5e5d('0x3')](function(_0x1f8484){if(_0x1f8484){return _0x1f8484;}return request(_0x5e5d('0x32'),{'body':_0x56b166});});};exports[_0x5e5d('0x33')]=function(_0x402caf){return request(_0x5e5d('0x34'),{'options':{'where':{'id':_0x402caf},'attributes':['name']}});};exports[_0x5e5d('0x35')]=function(_0x4ddd70,_0x568987){return request(_0x5e5d('0x36'),{'body':{'interface':_0x568987},'options':{'where':_0x4ddd70}});};exports[_0x5e5d('0x37')]=function(_0x38a8ed,_0x2e788f,_0x45f424){return request('PauseUser',{'body':{'type':_0x2e788f,'uniqueid':_0x45f424},'options':{'where':_0x38a8ed}});};exports[_0x5e5d('0x38')]=function(_0x13068e){return request(_0x5e5d('0x39'),{'body':{},'options':{'where':_0x13068e}});};exports[_0x5e5d('0x3a')]=function(_0x230198){return request(_0x5e5d('0x3b'),{'body':{},'options':{'where':_0x230198}});};
\ No newline at end of file
+var _0xc978=['ShowVariable','getSquareOdbcById','ShowSquareOdbc','dsn','getUserById','ShowUser','getContactByPhone','GetContactByPhone','phone','getTrunkById','ShowTrunk','getSoundById','ShowSound','save_name','getIntervalById','Interval','Intervals','getSmsAccountById','CreateSmsMessage','createSquareDetailsReport','CreateSquareDetailsReport','createSquareReport','arg_1','arg_2','createSquareRecording','CreateSquareRecording','createSquareMessage','CreateSquareMessage','getPauseById','ShowPause','agentLogin','LoginUser','PauseUser','LogoutUser','lodash','moment','jayson/promise','client','http','request','then','error','result','catch','getSquareProjects','GetSquareProjects','name','production','ShowSquareProject','getMailAccountById','ShowMailAccount','MailServerOut','Smtp','CloudProvider','email','getVoiceQueueById','getVariableById'];(function(_0xc6ea5d,_0x14f0cb){var _0x3170f6=function(_0x48414b){while(--_0x48414b){_0xc6ea5d['push'](_0xc6ea5d['shift']());}};_0x3170f6(++_0x14f0cb);}(_0xc978,0xcd));var _0x8c97=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xc978[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x8c97('0x0'));var moment=require(_0x8c97('0x1'));var jayson=require(_0x8c97('0x2'));var client=jayson[_0x8c97('0x3')][_0x8c97('0x4')]({'port':0x2329});function request(_0x44d4ea,_0x5ef47d){return new Promise(function(_0x23f5e9,_0x23c28d){return client[_0x8c97('0x5')](_0x44d4ea,_0x5ef47d)[_0x8c97('0x6')](function(_0x426a77){if(_0x426a77[_0x8c97('0x7')]){return _0x23c28d(_0x426a77[_0x8c97('0x7')]['message']);}else{return _0x23f5e9(_0x426a77[_0x8c97('0x8')]);}})[_0x8c97('0x9')](function(_0x332cd1){return _0x23c28d(_0x332cd1);});});}exports[_0x8c97('0xa')]=function(){return request(_0x8c97('0xb'),{'options':{'raw':![],'attributes':['id',_0x8c97('0xc'),_0x8c97('0xd')]}});};exports['getSquareProject']=function(_0x179342){return request(_0x8c97('0xe'),{'options':{'raw':![],'where':{'name':_0x179342},'attributes':[_0x8c97('0xd')]}});};exports[_0x8c97('0xf')]=function(_0x400eb6){return request(_0x8c97('0x10'),{'options':{'raw':![],'where':{'id':_0x400eb6},'include':[{'model':_0x8c97('0x11'),'as':_0x8c97('0x12'),'include':[{'model':_0x8c97('0x13'),'as':'CloudProvider'}]}],'attributes':['id',_0x8c97('0xc'),_0x8c97('0x14')],'smtp':!![]}});};exports['getSquareProjectById']=function(_0x31ae92){return request(_0x8c97('0xe'),{'options':{'where':{'id':_0x31ae92},'attributes':['name']}});};exports[_0x8c97('0x15')]=function(_0x4ec9cb){return request('ShowVoiceQueue',{'options':{'where':{'id':_0x4ec9cb},'attributes':['name']}});};exports[_0x8c97('0x16')]=function(_0xab3812){return request(_0x8c97('0x17'),{'options':{'where':{'id':_0xab3812},'attributes':[_0x8c97('0xc')]}});};exports[_0x8c97('0x18')]=function(_0x29767b){return request(_0x8c97('0x19'),{'options':{'where':{'id':_0x29767b},'attributes':[_0x8c97('0x1a')]}});};exports[_0x8c97('0x1b')]=function(_0x5edbc6){return request(_0x8c97('0x1c'),{'options':{'where':{'id':_0x5edbc6},'attributes':[_0x8c97('0xc')]}});};exports[_0x8c97('0x1d')]=function(_0x3b57ed){return request(_0x8c97('0x1e'),{'options':{'where':{'phone':_0x3b57ed[_0x8c97('0x1f')]},'attributes':['id']}});};exports[_0x8c97('0x20')]=function(_0x400bbc){return request(_0x8c97('0x21'),{'options':{'where':{'id':_0x400bbc},'attributes':[_0x8c97('0xc')]}});};exports[_0x8c97('0x22')]=function(_0xb55f9b){return request(_0x8c97('0x23'),{'options':{'where':{'id':_0xb55f9b},'attributes':[_0x8c97('0x24')]}});};exports[_0x8c97('0x25')]=function(_0x2b83a8){return request('ShowInterval',{'options':{'raw':![],'where':{'id':_0x2b83a8},'include':[{'model':_0x8c97('0x26'),'as':_0x8c97('0x27')}]}});};exports[_0x8c97('0x28')]=function(_0x5ed5ba){return request('ShowSmsAccount',{'options':{'where':{'id':_0x5ed5ba},'attributes':['id',_0x8c97('0xc')]}});};exports['createSmsMessage']=function(_0x41d276){return request(_0x8c97('0x29'),{'body':_0x41d276});};exports[_0x8c97('0x2a')]=function(_0x13a9de){return request(_0x8c97('0x2b'),{'body':_0x13a9de});};exports[_0x8c97('0x2c')]=function(_0x18c81a){return request('CreateSquareReport',{'body':_['merge'](_0x18c81a,{'project_name':_0x18c81a[_0x8c97('0x2d')],'prev_project_name':_0x18c81a[_0x8c97('0x2e')]||'','is_subproject':_0x18c81a[_0x8c97('0x2e')]?!![]:![],'leaveAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')})});};exports[_0x8c97('0x2f')]=function(_0x37986d){return request(_0x8c97('0x30'),{'body':_0x37986d});};exports[_0x8c97('0x31')]=function(_0x34f8be){return request(_0x8c97('0x32'),{'body':_0x34f8be});};exports['createCmContact']=function(_0x443dfd){return request('ShowCmHopper',{'options':{'raw':![],'where':{'phone':_0x443dfd[_0x8c97('0x1f')],'ListId':_0x443dfd['ListId']}}})[_0x8c97('0x6')](function(_0x154592){if(_0x154592){return _0x154592;}return request('CreateCmContact',{'body':_0x443dfd});});};exports[_0x8c97('0x33')]=function(_0x57fef8){return request(_0x8c97('0x34'),{'options':{'where':{'id':_0x57fef8},'attributes':[_0x8c97('0xc')]}});};exports[_0x8c97('0x35')]=function(_0x2ebba4,_0x4451d6){return request(_0x8c97('0x36'),{'body':{'interface':_0x4451d6},'options':{'where':_0x2ebba4}});};exports['agentPause']=function(_0x51ee86,_0x12a7d0,_0x26d5dc){return request(_0x8c97('0x37'),{'body':{'type':_0x12a7d0,'uniqueid':_0x26d5dc},'options':{'where':_0x51ee86}});};exports['agentUnpause']=function(_0x3cf202){return request('UnpauseUser',{'body':{},'options':{'where':_0x3cf202}});};exports['agentLogout']=function(_0x27f76d){return request(_0x8c97('0x38'),{'body':{},'options':{'where':_0x27f76d}});};
\ No newline at end of file
index d1d8fd5..0eab0df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa46e=['./polly','./lex'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xa46e,0x8a));var _0xea46=function(_0x4d613c,_0x55f220){_0x4d613c=_0x4d613c-0x0;var _0x301fe3=_0xa46e[_0x4d613c];return _0x301fe3;};var polly=require(_0xea46('0x0'));var lex=require(_0xea46('0x1'));module['exports']={'polly':polly,'lex':lex};
\ No newline at end of file
+var _0x814b=['exports','./polly','./lex'];(function(_0xe4dcd8,_0x2d8f16){var _0x3dafd8=function(_0xfd94ce){while(--_0xfd94ce){_0xe4dcd8['push'](_0xe4dcd8['shift']());}};_0x3dafd8(++_0x2d8f16);}(_0x814b,0x1a2));var _0xb814=function(_0x578275,_0xe7ae46){_0x578275=_0x578275-0x0;var _0xf78041=_0x814b[_0x578275];return _0xf78041;};var polly=require(_0xb814('0x0'));var lex=require(_0xb814('0x1'));module[_0xb814('0x2')]={'polly':polly,'lex':lex};
\ No newline at end of file
index 323237f..fd42197 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f7a=['./lib/api','exports'];(function(_0x2a353c,_0x1c2dc4){var _0x3e4945=function(_0x1e0ec5){while(--_0x1e0ec5){_0x2a353c['push'](_0x2a353c['shift']());}};_0x3e4945(++_0x1c2dc4);}(_0x6f7a,0x1ae));var _0xa6f7=function(_0x12eb74,_0x562ba7){_0x12eb74=_0x12eb74-0x0;var _0x576266=_0x6f7a[_0x12eb74];return _0x576266;};'use strict';var lex=require(_0xa6f7('0x0'));module[_0xa6f7('0x1')]=function(_0x205e14,_0x982062,_0x4dd99d,_0x93614a,_0x407de3,_0x12ecb8){return lex(_0x205e14,_0x982062,_0x4dd99d,_0x93614a,_0x407de3,_0x12ecb8);};
\ No newline at end of file
+var _0x878f=['exports'];(function(_0x101b3a,_0x39be60){var _0x18f2d4=function(_0x158839){while(--_0x158839){_0x101b3a['push'](_0x101b3a['shift']());}};_0x18f2d4(++_0x39be60);}(_0x878f,0x173));var _0xf878=function(_0x17f62b,_0x284501){_0x17f62b=_0x17f62b-0x0;var _0x473881=_0x878f[_0x17f62b];return _0x473881;};'use strict';var lex=require('./lib/api');module[_0xf878('0x0')]=function(_0x658976,_0x2e1d23,_0x12df2b,_0x1b3d0b,_0x3d74cf,_0x9e6783){return lex(_0x658976,_0x2e1d23,_0x12df2b,_0x1b3d0b,_0x3d74cf,_0x9e6783);};
\ No newline at end of file
index 6c8029c..58d10a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['LexRuntime','bluebird','aws-sdk','slots','hasOwnProperty'];(function(_0x37388b,_0x4ccac5){var _0x9ca091=function(_0x487031){while(--_0x487031){_0x37388b['push'](_0x37388b['shift']());}};_0x9ca091(++_0x4ccac5);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf71120,_0x25b7f9){_0xf71120=_0xf71120-0x0;var _0xbe2fd3=_0xa9e0[_0xf71120];return _0xbe2fd3;};'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(_0x738eb6,_0x2b9939){var _0x2a90b9=function(_0x13f404){while(--_0x13f404){_0x738eb6['push'](_0x738eb6['shift']());}};_0x2a90b9(++_0x2b9939);}(_0xa9e0,0x123));var _0x0a9e=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0xa9e0[_0x6c993a];return _0x27f547;};'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 6c4f91e..8973ef2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60a2=['exports','./lib/api'];(function(_0x307d86,_0x9264f2){var _0x361745=function(_0x1b64e1){while(--_0x1b64e1){_0x307d86['push'](_0x307d86['shift']());}};_0x361745(++_0x9264f2);}(_0x60a2,0x14f));var _0x260a=function(_0x432a52,_0xc30fa0){_0x432a52=_0x432a52-0x0;var _0x3d1acf=_0x60a2[_0x432a52];return _0x3d1acf;};'use strict';var polly=require(_0x260a('0x0'));module[_0x260a('0x1')]=function(_0x5b9c97,_0x5b4ea,_0x16fddd,_0x5cce86,_0x4ce1ce,_0x2c6b74,_0x289604){return polly(_0x5b9c97,_0x5b4ea,_0x16fddd,_0x5cce86,_0x4ce1ce,_0x2c6b74,_0x289604);};
\ No newline at end of file
+var _0xa519=['exports','./lib/api'];(function(_0x507a2d,_0x5835fc){var _0x5ec681=function(_0x145865){while(--_0x145865){_0x507a2d['push'](_0x507a2d['shift']());}};_0x5ec681(++_0x5835fc);}(_0xa519,0xfb));var _0x9a51=function(_0xa22b68,_0x31c162){_0xa22b68=_0xa22b68-0x0;var _0xd5cd0b=_0xa519[_0xa22b68];return _0xd5cd0b;};'use strict';var polly=require(_0x9a51('0x0'));module[_0x9a51('0x1')]=function(_0x312745,_0x235579,_0x1a2dcb,_0x30d3a3,_0xbce9f3,_0x3124d1,_0x169d12){return polly(_0x312745,_0x235579,_0x1a2dcb,_0x30d3a3,_0xbce9f3,_0x3124d1,_0x169d12);};
\ No newline at end of file
index e4854f5..728ea9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e1c=['writeFile','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','No\x20data\x20response\x20from\x20aws\x20Polly!','Polly','text','path','bluebird','randomstring','aws-sdk','AudioStream'];(function(_0x3a9df9,_0x57ca23){var _0x32cbf7=function(_0x24e3f5){while(--_0x24e3f5){_0x3a9df9['push'](_0x3a9df9['shift']());}};_0x32cbf7(++_0x57ca23);}(_0x6e1c,0x13b));var _0xc6e1=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x6e1c[_0x14add3];return _0x4a174f;};'use strict';var fs=require('fs');var path=require(_0xc6e1('0x0'));var BPromise=require(_0xc6e1('0x1'));var rs=require(_0xc6e1('0x2'));var AWS=require(_0xc6e1('0x3'));function pollyResult(_0x53a08d,_0x3c0332,_0x180cec){return new BPromise(function(_0x43799b,_0x393c33){_0x53a08d['synthesizeSpeech'](_0x3c0332,function(_0x11de0f,_0x7e6a22){if(_0x11de0f){_0x393c33(_0x11de0f);}else if(_0x7e6a22){if(_0x7e6a22[_0xc6e1('0x4')]instanceof Buffer){fs[_0xc6e1('0x5')](_0x180cec,_0x7e6a22[_0xc6e1('0x4')],function(_0x3036f6){if(_0x3036f6){_0x393c33(_0x3036f6);}else{_0x43799b();}});}else{_0x393c33(new Error(_0xc6e1('0x6')));}}else{_0x393c33(new Error(_0xc6e1('0x7')));}});});}module['exports']=function(_0x589f42,_0x5bcea8,_0x1817b9,_0x20671e,_0x5e4d24,_0xf395fd,_0x1e5e9a){var _0x425b9c=new AWS[(_0xc6e1('0x8'))]({'accessKeyId':_0x589f42,'secretAccessKey':_0x5bcea8,'region':_0x1817b9});var _0x23df23={'Text':_0x5e4d24,'TextType':_0xf395fd||_0xc6e1('0x9'),'OutputFormat':'mp3','VoiceId':_0x20671e};return pollyResult(_0x425b9c,_0x23df23,_0x1e5e9a);};
\ No newline at end of file
+var _0x1ed8=['No\x20data\x20response\x20from\x20aws\x20Polly!','exports','text','mp3','path','bluebird','randomstring','aws-sdk','synthesizeSpeech','AudioStream','writeFile','Invalid\x20data\x20response\x20from\x20aws\x20Polly!'];(function(_0x3d2483,_0x2d74cd){var _0x3cd99c=function(_0x2d0360){while(--_0x2d0360){_0x3d2483['push'](_0x3d2483['shift']());}};_0x3cd99c(++_0x2d74cd);}(_0x1ed8,0x13c));var _0x81ed=function(_0x464c79,_0xaac0a9){_0x464c79=_0x464c79-0x0;var _0x5f4fce=_0x1ed8[_0x464c79];return _0x5f4fce;};'use strict';var fs=require('fs');var path=require(_0x81ed('0x0'));var BPromise=require(_0x81ed('0x1'));var rs=require(_0x81ed('0x2'));var AWS=require(_0x81ed('0x3'));function pollyResult(_0x362346,_0xb367f4,_0x2fb111){return new BPromise(function(_0x4e4c60,_0x53bdfa){_0x362346[_0x81ed('0x4')](_0xb367f4,function(_0x34f0b9,_0x52c529){if(_0x34f0b9){_0x53bdfa(_0x34f0b9);}else if(_0x52c529){if(_0x52c529[_0x81ed('0x5')]instanceof Buffer){fs[_0x81ed('0x6')](_0x2fb111,_0x52c529[_0x81ed('0x5')],function(_0x186653){if(_0x186653){_0x53bdfa(_0x186653);}else{_0x4e4c60();}});}else{_0x53bdfa(new Error(_0x81ed('0x7')));}}else{_0x53bdfa(new Error(_0x81ed('0x8')));}});});}module[_0x81ed('0x9')]=function(_0x5d3b49,_0xbae9b2,_0x58e39d,_0x3fc071,_0x4c26c8,_0x2c99a5,_0x9291a6){var _0x1b370e=new AWS['Polly']({'accessKeyId':_0x5d3b49,'secretAccessKey':_0xbae9b2,'region':_0x58e39d});var _0x44adae={'Text':_0x4c26c8,'TextType':_0x2c99a5||_0x81ed('0xa'),'OutputFormat':_0x81ed('0xb'),'VoiceId':_0x3fc071};return pollyResult(_0x1b370e,_0x44adae,_0x9291a6);};
\ No newline at end of file
index 0862886..5b5ac4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62b4=['exports'];(function(_0x2c91a5,_0x891053){var _0x51180f=function(_0x42fcea){while(--_0x42fcea){_0x2c91a5['push'](_0x2c91a5['shift']());}};_0x51180f(++_0x891053);}(_0x62b4,0x1e5));var _0x462b=function(_0x3ce3c,_0x319337){_0x3ce3c=_0x3ce3c-0x0;var _0x55a2c9=_0x62b4[_0x3ce3c];return _0x55a2c9;};'use strict';var asr=require('./lib/api');module[_0x462b('0x0')]=function(_0x913582,_0x170dca,_0x268348,_0x28c702){return asr(_0x913582,_0x170dca,_0x268348);};
\ No newline at end of file
+'use strict';var asr=require('./lib/api');module['exports']=function(_0xc5240b,_0x378d43,_0xe446ff,_0xf33ab7){return asr(_0xc5240b,_0x378d43,_0xe446ff);};
\ No newline at end of file
index f47ff30..066c515 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f0d=['bluebird','https://speech.googleapis.com','exports','string','filepath\x20should\x20be\x20a\x20string','length','key\x20should\x20be\x20a\x20string','undefined','readFileSync','toString','base64','POST','LINEAR16','8000'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x6f0d,0x16c));var _0xd6f0=function(_0x22d4b8,_0x12a78c){_0x22d4b8=_0x22d4b8-0x0;var _0x2d4848=_0x6f0d[_0x22d4b8];return _0x2d4848;};'use strict';var url=require('url');var BPromise=require(_0xd6f0('0x0'));var fs=require('fs');var host=_0xd6f0('0x1');module[_0xd6f0('0x2')]=function(_0x107a8c,_0x573473,_0x275230){return new BPromise(function(_0x135a93,_0x2f78fb){var _0x25344b;if(typeof _0x107a8c!==_0xd6f0('0x3')||_0x107a8c['length']===0x0){return _0x2f78fb(_0xd6f0('0x4'));}if(typeof _0x573473!=='string'||_0x573473[_0xd6f0('0x5')]===0x0){return _0x2f78fb(_0xd6f0('0x6'));}if(typeof _0x275230!==_0xd6f0('0x7')&&(typeof _0x275230!==_0xd6f0('0x3')||_0x275230['length']===0x0)){return _0x2f78fb('lang\x20should\x20be\x20a\x20string');}try{_0x25344b=fs[_0xd6f0('0x8')](_0x107a8c)[_0xd6f0('0x9')](_0xd6f0('0xa'));}catch(_0x382a2e){return _0x2f78fb(_0x382a2e);}return _0x135a93({'method':_0xd6f0('0xb'),'uri':host+'/v1/speech:recognize?key='+_0x573473,'body':{'config':{'encoding':_0xd6f0('0xc'),'sampleRateHertz':_0xd6f0('0xd'),'languageCode':_0x275230},'audio':{'content':_0x25344b}},'json':!![]});});};
\ No newline at end of file
+var _0xdb4b=['lang\x20should\x20be\x20a\x20string','readFileSync','base64','POST','/v1/speech:recognize?key=','LINEAR16','bluebird','exports','string','length','filepath\x20should\x20be\x20a\x20string'];(function(_0x2341f3,_0x4b7150){var _0x39ff65=function(_0xe963d5){while(--_0xe963d5){_0x2341f3['push'](_0x2341f3['shift']());}};_0x39ff65(++_0x4b7150);}(_0xdb4b,0xd7));var _0xbdb4=function(_0x34cc52,_0x5f0c7e){_0x34cc52=_0x34cc52-0x0;var _0x296404=_0xdb4b[_0x34cc52];return _0x296404;};'use strict';var url=require('url');var BPromise=require(_0xbdb4('0x0'));var fs=require('fs');var host='https://speech.googleapis.com';module[_0xbdb4('0x1')]=function(_0x883c71,_0x3d5174,_0x257d67){return new BPromise(function(_0x47a78c,_0x3cc8c2){var _0x40e5ca;if(typeof _0x883c71!==_0xbdb4('0x2')||_0x883c71[_0xbdb4('0x3')]===0x0){return _0x3cc8c2(_0xbdb4('0x4'));}if(typeof _0x3d5174!==_0xbdb4('0x2')||_0x3d5174[_0xbdb4('0x3')]===0x0){return _0x3cc8c2('key\x20should\x20be\x20a\x20string');}if(typeof _0x257d67!=='undefined'&&(typeof _0x257d67!==_0xbdb4('0x2')||_0x257d67[_0xbdb4('0x3')]===0x0)){return _0x3cc8c2(_0xbdb4('0x5'));}try{_0x40e5ca=fs[_0xbdb4('0x6')](_0x883c71)['toString'](_0xbdb4('0x7'));}catch(_0x5ba9f8){return _0x3cc8c2(_0x5ba9f8);}return _0x47a78c({'method':_0xbdb4('0x8'),'uri':host+_0xbdb4('0x9')+_0x3d5174,'body':{'config':{'encoding':_0xbdb4('0xa'),'sampleRateHertz':'8000','languageCode':_0x257d67},'audio':{'content':_0x40e5ca}},'json':!![]});});};
\ No newline at end of file
index 595508b..ca599d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa812=['exports','./asr'];(function(_0x17f891,_0x34c577){var _0x5bf2d4=function(_0x208a07){while(--_0x208a07){_0x17f891['push'](_0x17f891['shift']());}};_0x5bf2d4(++_0x34c577);}(_0xa812,0x1cb));var _0x2a81=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0xa812[_0x46698a];return _0x356db0;};var asr=require(_0x2a81('0x0'));module[_0x2a81('0x1')]={'asr':asr};
\ No newline at end of file
+var _0xab44=['./asr','exports'];(function(_0x226af0,_0x299533){var _0x7288d9=function(_0x9b6ff6){while(--_0x9b6ff6){_0x226af0['push'](_0x226af0['shift']());}};_0x7288d9(++_0x299533);}(_0xab44,0x1e6));var _0x4ab4=function(_0x5d5d4f,_0x49e9ff){_0x5d5d4f=_0x5d5d4f-0x0;var _0x46e085=_0xab44[_0x5d5d4f];return _0x46e085;};var asr=require(_0x4ab4('0x0'));module[_0x4ab4('0x1')]={'asr':asr};
\ No newline at end of file
index 4bee957..fb4e6fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f17=['googleCloudTTS','https://texttospeech.googleapis.com/v1/','ssml','input','voice','MP3','text:synthesize','resolve','.mp3','from','writeFile','777','.wav','unlink','googleCloudTTS\x20path','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','POST','application/x-www-form-urlencoded','f.req=','stringify','jQ1olc','generic','slice','parse\x20response\x20failed:\x0a','length','text\x20length\x20limit\x20reached','lang\x20\x22','\x22\x20might\x20not\x20exist','asr','uri','results','map','alternatives','transcript','join','confidence','googleASR\x20transcription','googleASR\x20confidence','catch','[%s]\x20%s:%s','message','googleDialogflow','textRequest','result','action','actionIncomplete','fulfillment','score','status','metadata','endConversation','isFallbackIntent','replace','SessionsClient','sessionPath','detectIntent','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','intent','displayName','isFallback','languageCode','queryText','responseId','intentDetectionConfidence','fulfillmentText','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','awsLex','lex','ispeechTTS','format','model=%s','freeform=3','sestekNDA','nda','text','channelData','CustomActionData','AudioFromTts','Data','apiai-promise','bluebird','dialogflow','http','https','querystring','request-promise','randomstring','google-tts-api','url','parse','util','./aws','./google','./sestek','./tilde','../../../config/logger','agi','protocol','https:','host','path','WHAT_EVER','get','request\x20to\x20','statusCode','statusMessage','\x20failed,\x20status\x20code\x20=\x20','createWriteStream','info','close','error','download\x20error','data','end','transcode','wav','error\x20convert','finish\x20to\x20convert','start','tmp','generate','writeFileSync','base64','then','chmodSync','split'];(function(_0x3348ea,_0x18648b){var _0x54b807=function(_0x1f7a7e){while(--_0x1f7a7e){_0x3348ea['push'](_0x3348ea['shift']());}};_0x54b807(++_0x18648b);}(_0x3f17,0x1e1));var _0x73f1=function(_0xafc7bc,_0x40eff4){_0xafc7bc=_0xafc7bc-0x0;var _0x59c18e=_0x3f17[_0xafc7bc];return _0x59c18e;};'use strict';var apiai=require(_0x73f1('0x0'));var BPromise=require(_0x73f1('0x1'));var dialogflow=require(_0x73f1('0x2'));var fs=require('fs');var http=require(_0x73f1('0x3'));var https=require(_0x73f1('0x4'));var md5=require('md5');var path=require('path');var querystring=require(_0x73f1('0x5'));var rp=require(_0x73f1('0x6'));var rs=require(_0x73f1('0x7'));var sox=require('sox');var tts=require(_0x73f1('0x8'));var urlParse=require(_0x73f1('0x9'))[_0x73f1('0xa')];var util=require(_0x73f1('0xb'));var aws=require(_0x73f1('0xc'));var google=require(_0x73f1('0xd'));var sestek=require(_0x73f1('0xe'));var tilde=require(_0x73f1('0xf'));var logger=require(_0x73f1('0x10'))(_0x73f1('0x11'));var ISPEECH_API='https://api.ispeech.org/api/rest';function downloadFile(_0x5370d7,_0x5883a7){return new BPromise(function(_0x32780a,_0x8da94b){var _0x59d40b=urlParse(_0x5370d7);var _0x3902cb=_0x59d40b[_0x73f1('0x12')]===_0x73f1('0x13')?https:http;var _0x2b1333={'host':_0x59d40b[_0x73f1('0x14')],'path':_0x59d40b[_0x73f1('0x15')],'headers':{'user-agent':_0x73f1('0x16')}};_0x3902cb[_0x73f1('0x17')](_0x2b1333,function(_0x3203a5){if(_0x3203a5['statusCode']!==0xc8){logger['error'](_0x73f1('0x18')+_0x5370d7+'\x20failed,\x20status\x20code\x20=\x20'+_0x3203a5[_0x73f1('0x19')]+'\x20('+_0x3203a5[_0x73f1('0x1a')]+')');_0x8da94b(new Error(_0x73f1('0x18')+_0x5370d7+_0x73f1('0x1b')+_0x3203a5[_0x73f1('0x19')]+'\x20('+_0x3203a5[_0x73f1('0x1a')]+')'));return;}var _0x2502bb=fs[_0x73f1('0x1c')](_0x5883a7);_0x2502bb['on']('finish',function(){logger[_0x73f1('0x1d')]('finish\x20download\x20file');_0x2502bb[_0x73f1('0x1e')](_0x32780a);});_0x2502bb['on'](_0x73f1('0x1f'),function(_0x242a7a){fs['unlink'](_0x5883a7);logger['error'](_0x73f1('0x20'),_0x242a7a);_0x8da94b(_0x242a7a);});_0x3203a5['pipe'](_0x2502bb);})['on'](_0x73f1('0x1f'),function(_0x417bc8){logger['error'](_0x417bc8);_0x8da94b(_0x417bc8);})['end']();});}function uploadFile(_0x562405){return new BPromise(function(_0x3603a3,_0x196b36){var _0x409444=urlParse(_0x562405);var _0x3a7789=_0x409444[_0x73f1('0x12')]===_0x73f1('0x13')?https:http;var _0x212d1b={'host':_0x409444[_0x73f1('0x14')],'path':_0x409444['path'],'headers':{'user-agent':_0x73f1('0x16')}};_0x3a7789[_0x73f1('0x17')](_0x212d1b,function(_0x1aa9df){if(_0x1aa9df[_0x73f1('0x19')]!==0xc8){_0x196b36(new Error(_0x73f1('0x18')+_0x562405+_0x73f1('0x1b')+_0x1aa9df[_0x73f1('0x19')]+'\x20('+_0x1aa9df[_0x73f1('0x1a')]+')'));return;}var _0x55b3db='';_0x1aa9df['on'](_0x73f1('0x21'),function(_0x406659){_0x55b3db+=_0x406659;});_0x1aa9df['on'](_0x73f1('0x22'),function(){_0x3603a3(_0x55b3db);});})['on'](_0x73f1('0x1f'),function(_0x3b9d07){_0x196b36(_0x3b9d07);})[_0x73f1('0x22')]();});}function convertFile(_0x41aa0a,_0x1dc385){return new BPromise(function(_0x60a2e2,_0x44f286){var _0x394737=sox[_0x73f1('0x23')](_0x41aa0a,_0x1dc385,{'sampleRate':0x1f40,'format':_0x73f1('0x24'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x394737['on'](_0x73f1('0x1f'),function(_0x220071){logger[_0x73f1('0x1f')](_0x73f1('0x25'),_0x220071);_0x44f286(_0x220071);});_0x394737['on'](_0x73f1('0x22'),function(){logger['info'](_0x73f1('0x26'));_0x60a2e2();});_0x394737[_0x73f1('0x27')]();});}function base64Decode(_0x14206c,_0x27dd31){var _0x44668b=path['resolve'](__dirname,_0x73f1('0x28'),rs[_0x73f1('0x29')](0x4)+'.wav');fs[_0x73f1('0x2a')](_0x44668b,_0x14206c,_0x73f1('0x2b'));return convertFile(_0x44668b,_0x27dd31)[_0x73f1('0x2c')](function(){try{fs['unlink'](_0x44668b);fs[_0x73f1('0x2d')](_0x27dd31,'777');}catch(_0x125b08){logger[_0x73f1('0x1f')](_0x125b08);}return _0x27dd31[_0x73f1('0x2e')]('.')[0x0];});}function base64Encode(_0x4bbccc){var _0x3ee24c=fs['readFileSync'](_0x4bbccc);return new Buffer(_0x3ee24c)['toString']('base64');}exports[_0x73f1('0x2f')]=function(_0x4ca835,_0x20b392,_0x4d26ea,_0x5496a7,_0x5832b1,_0xaf39c7){var _0xd57595,_0x5b30a5;var _0x59e30d=_0x73f1('0x30');var _0xa5f55='?key='+_0x4ca835;var _0xa5c3e6={};if(_0x20b392===_0x73f1('0x31')){_0xa5c3e6[_0x73f1('0x32')]={'ssml':_0x4d26ea};}else{_0xa5c3e6[_0x73f1('0x32')]={'text':_0x4d26ea};};_0xa5c3e6[_0x73f1('0x33')]={'languageCode':_0x5496a7,'ssmlGender':_0x5832b1};_0xa5c3e6['audioConfig']={'audioEncoding':_0x73f1('0x34'),'sampleRateHertz':0x1f40};var _0x5547f1={'url':_0x59e30d+_0x73f1('0x35')+_0xa5f55,'method':'POST','json':!![],'body':_0xa5c3e6};return rp(_0x5547f1)[_0x73f1('0x2c')](function(_0x5da5fb){return new BPromise(function(_0x1e80ba,_0x50c4cd){_0xd57595=path[_0x73f1('0x36')](__dirname,_0x73f1('0x28'),rs[_0x73f1('0x29')](0x4)+_0x73f1('0x37'));var _0x8702d7=Buffer[_0x73f1('0x38')](_0x5da5fb['audioContent'],_0x73f1('0x2b'));return fs[_0x73f1('0x39')](_0xd57595,_0x8702d7,function(_0x559915){_0x50c4cd(_0x559915);},function(_0x542a95){fs['chmodSync'](_0xd57595,_0x73f1('0x3a'));_0x1e80ba(_0x542a95);});});})['then'](function(_0x32524b){_0x5b30a5=path['resolve'](__dirname,_0x73f1('0x28'),rs[_0x73f1('0x29')](0x4)+_0x73f1('0x3b'));return convertFile(_0xd57595,_0x5b30a5);})[_0x73f1('0x2c')](function(){try{fs[_0x73f1('0x3c')](_0xd57595);fs[_0x73f1('0x2d')](_0x5b30a5,_0x73f1('0x3a'));}catch(_0x253d84){logger[_0x73f1('0x1f')](_0x253d84);}logger[_0x73f1('0x1d')](_0x73f1('0x3d'),_0x5b30a5[_0x73f1('0x2e')]('.')[0x0]);return _0x5b30a5[_0x73f1('0x2e')]('.')[0x0];});};exports[_0x73f1('0x3e')]=function(_0x3ec9e8,_0x5a3282){var _0x433c6c=_0x73f1('0x3f');var _0x4f4fff,_0x2372f0;var _0x56bd94;var _0x50c2dd={'encoding':'utf8','method':_0x73f1('0x40'),'timeout':0x2710,'url':_0x433c6c,'headers':{'Content-Type':_0x73f1('0x41')},'body':_0x73f1('0x42')+encodeURIComponent(JSON[_0x73f1('0x43')]([[[_0x73f1('0x44'),JSON[_0x73f1('0x43')]([_0x3ec9e8,_0x5a3282||'en',![],'null']),null,_0x73f1('0x45')]]]))};return rp(_0x50c2dd)['then'](function(_0x51e20a){try{_0x56bd94=eval(_0x51e20a[_0x73f1('0x46')](0x5))[0x0][0x2];}catch(_0x45f1c1){throw new Error(_0x73f1('0x47')+_0x51e20a[_0x73f1('0x21')]);}if(!_0x56bd94){if(_0x3ec9e8[_0x73f1('0x48')]>0xc8){throw new Error(_0x73f1('0x49'));}else{throw new Error(_0x73f1('0x4a')+_0x5a3282+_0x73f1('0x4b'));}}try{_0x56bd94=eval(_0x56bd94)[0x0];}catch(_0x27a5e8){throw new Error(_0x73f1('0x47')+res[_0x73f1('0x21')]);}const _0x4bf68b=_0x56bd94;_0x4f4fff=path[_0x73f1('0x36')](__dirname,_0x73f1('0x28'),rs[_0x73f1('0x29')](0x4)+_0x73f1('0x37'));fs['writeFileSync'](_0x4f4fff,_0x56bd94,{'encoding':_0x73f1('0x2b')});_0x2372f0=path[_0x73f1('0x36')](__dirname,_0x73f1('0x28'),rs[_0x73f1('0x29')](0x4)+_0x73f1('0x3b'));return convertFile(_0x4f4fff,_0x2372f0);})[_0x73f1('0x2c')](function(){try{fs['unlink'](_0x4f4fff);fs['chmodSync'](_0x2372f0,_0x73f1('0x3a'));}catch(_0x2f98ce){logger[_0x73f1('0x1f')](_0x2f98ce);}logger[_0x73f1('0x1d')]('goggleTTS\x20path',_0x2372f0[_0x73f1('0x2e')]('.')[0x0]);return _0x2372f0[_0x73f1('0x2e')]('.')[0x0];});};exports['googleASR']=function(_0x58d42f,_0x42d593,_0x4d3475){return google[_0x73f1('0x4c')](_0x58d42f,_0x42d593,_0x4d3475)[_0x73f1('0x2c')](function(_0x59c10d){logger[_0x73f1('0x1d')](_0x59c10d[_0x73f1('0x4d')]);return rp(_0x59c10d);})['then'](function(_0x53ec3e){var _0x13feec='';var _0x3b45ed=0x0;try{fs['unlink'](_0x58d42f);}catch(_0x4fbf0d){logger[_0x73f1('0x1f')](_0x4fbf0d);}if(_0x53ec3e&&_0x53ec3e[_0x73f1('0x4e')]){_0x13feec=_0x53ec3e[_0x73f1('0x4e')][_0x73f1('0x4f')](function(_0x13b0e1){return _0x13b0e1&&_0x13b0e1[_0x73f1('0x50')][0x0]&&_0x13b0e1[_0x73f1('0x50')][0x0][_0x73f1('0x51')]?_0x13b0e1[_0x73f1('0x50')][0x0][_0x73f1('0x51')]:'';})[_0x73f1('0x52')]('\x0a');_0x3b45ed=_0x53ec3e['results']['map'](function(_0x397f8a){return _0x397f8a&&_0x397f8a['alternatives'][0x0]&&_0x397f8a[_0x73f1('0x50')][0x0][_0x73f1('0x53')]?_0x397f8a['alternatives'][0x0][_0x73f1('0x53')]:0x0;})['join']('\x0a');}logger[_0x73f1('0x1d')](_0x73f1('0x54'),_0x13feec);logger[_0x73f1('0x1d')](_0x73f1('0x55'),_0x3b45ed);return{'transcript':_0x13feec,'confidence':_0x3b45ed};})[_0x73f1('0x56')](function(_0x2c3497){logger[_0x73f1('0x1f')](_0x73f1('0x57'),_0x2c3497[_0x73f1('0x19')],_0x2c3497['name'],_0x2c3497[_0x73f1('0x58')]);});};exports[_0x73f1('0x59')]=function(_0xf1ad0d,_0x127e8f,_0x47560d,_0x3f3d71){var _0x294a7e=apiai(_0x127e8f,{'language':_0x3f3d71||'en'});return _0x294a7e[_0x73f1('0x5a')](_0x47560d,{'sessionId':md5(_0xf1ad0d)})['then'](function(_0x52669f){logger[_0x73f1('0x1d')](JSON[_0x73f1('0x43')](_0x52669f));return{'source':_0x52669f[_0x73f1('0x5b')]['source'],'resolvedQuery':_0x52669f[_0x73f1('0x5b')]['resolvedQuery'],'action':_0x52669f[_0x73f1('0x5b')][_0x73f1('0x5c')],'actionIncomplete':_0x52669f['result'][_0x73f1('0x5d')],'speech':_0x52669f[_0x73f1('0x5b')][_0x73f1('0x5e')]['speech'],'score':_0x52669f[_0x73f1('0x5b')][_0x73f1('0x5f')],'statusCode':_0x52669f[_0x73f1('0x60')]['code'],'endConversation':_0x52669f[_0x73f1('0x5b')][_0x73f1('0x61')][_0x73f1('0x62')]||![],'isFallbackIntent':_0x52669f[_0x73f1('0x5b')][_0x73f1('0x61')][_0x73f1('0x63')]};});};exports['googleDialogflowV2']=function(_0x1ee8c8,_0x100c45,_0x3fa04c,_0x5dc904,_0x1110e5,_0x543f4c){var _0x280701=_0x5dc904[_0x73f1('0x64')](/\\n/g,'\x0a');var _0x538a6b={'credentials':{'private_key':_0x280701,'client_email':_0x3fa04c}};var _0x165263=new dialogflow[(_0x73f1('0x65'))](_0x538a6b);var _0x58d616=_0x165263[_0x73f1('0x66')](_0x100c45,md5(_0x1ee8c8));var _0x3e7bb6={'session':_0x58d616,'queryInput':{'text':{'text':_0x1110e5,'languageCode':_0x543f4c}}};return _0x165263[_0x73f1('0x67')](_0x3e7bb6)[_0x73f1('0x2c')](function(_0x177627){if(_0x177627&&_0x177627['length']){logger['info']('Dialogflow\x20V2\x20response:',JSON[_0x73f1('0x43')](_0x177627));var _0x13ae6f=_0x177627[0x0];if(_0x13ae6f){var _0x5e92b2={'action':_0x13ae6f[_0x73f1('0x68')][_0x73f1('0x5c')],'allRequiredParamsPresent':_0x13ae6f['queryResult'][_0x73f1('0x69')],'endConversation':_0x13ae6f[_0x73f1('0x68')][_0x73f1('0x6a')]&&_0x13ae6f[_0x73f1('0x68')][_0x73f1('0x6a')]['fields']?_0x13ae6f[_0x73f1('0x68')][_0x73f1('0x6a')][_0x73f1('0x6b')]['end_conversation']['boolValue']:![],'fulfillmentText':_0x13ae6f[_0x73f1('0x68')]['fulfillmentText'],'intentName':_0x13ae6f['queryResult'][_0x73f1('0x6c')]['name'],'intentDisplayName':_0x13ae6f[_0x73f1('0x68')][_0x73f1('0x6c')][_0x73f1('0x6d')],'isFallbackIntent':_0x13ae6f[_0x73f1('0x68')][_0x73f1('0x6c')][_0x73f1('0x6e')],'languageCode':_0x13ae6f['queryResult'][_0x73f1('0x6f')],'queryText':_0x13ae6f[_0x73f1('0x68')][_0x73f1('0x70')],'responseId':_0x13ae6f[_0x73f1('0x71')],'score':_0x13ae6f[_0x73f1('0x68')][_0x73f1('0x72')],'speech':_0x13ae6f[_0x73f1('0x68')][_0x73f1('0x73')],'providerResponse':JSON[_0x73f1('0x43')](_0x177627)};return _0x5e92b2;}}});};exports['tildeASR']=function(_0x5506f7,_0x4f37ba,_0x2ee9c0,_0x2806dc){return tilde[_0x73f1('0x4c')](_0x5506f7,_0x4f37ba,_0x2ee9c0,_0x2806dc)[_0x73f1('0x2c')](function(_0x16c8b1){try{fs[_0x73f1('0x3c')](_0x5506f7);}catch(_0xc54452){logger[_0x73f1('0x1f')](_0xc54452);}logger[_0x73f1('0x1d')](_0x73f1('0x74'),_0x16c8b1[_0x73f1('0x51')]);logger['info'](_0x73f1('0x75'),_0x16c8b1[_0x73f1('0x53')]);return _0x16c8b1;});};exports[_0x73f1('0x76')]=function(_0xb0461c,_0x31ca32,_0xa73999,_0xd915cd,_0x8b8268,_0x50e060){var _0x4c2a94=path[_0x73f1('0x36')](__dirname,_0x73f1('0x28'),rs[_0x73f1('0x29')](0x4)+_0x73f1('0x37'));var _0x5ae913;return aws['polly'](_0xb0461c,_0x31ca32,_0xa73999,_0xd915cd,_0x8b8268,_0x50e060,_0x4c2a94)[_0x73f1('0x2c')](function(){_0x5ae913=path['resolve'](__dirname,_0x73f1('0x28'),rs[_0x73f1('0x29')](0x4)+_0x73f1('0x3b'));return convertFile(_0x4c2a94,_0x5ae913);})[_0x73f1('0x2c')](function(){try{fs[_0x73f1('0x3c')](_0x4c2a94);fs[_0x73f1('0x2d')](_0x5ae913,_0x73f1('0x3a'));}catch(_0x1941de){logger[_0x73f1('0x1f')](_0x1941de);}return _0x5ae913['split']('.')[0x0];});};exports[_0x73f1('0x77')]=function(_0x5f08d1,_0x42cd88,_0x17d774,_0x5d606c,_0x581780,_0x408e41){return aws[_0x73f1('0x78')](_0x5f08d1,_0x42cd88,_0x17d774,_0x5d606c,_0x581780,_0x408e41)[_0x73f1('0x2c')](function(_0x46e841){logger[_0x73f1('0x1d')](JSON[_0x73f1('0x43')](_0x46e841));return _0x46e841;});};exports[_0x73f1('0x79')]=function(_0x34b6e1,_0x29b5cc,_0x3a44dd,_0x5c8fe9){var _0x452454=util[_0x73f1('0x7a')]('%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3',ISPEECH_API,_0x34b6e1,encodeURIComponent(_0x29b5cc),_0x3a44dd,_0x5c8fe9);var _0x4dedfd=path[_0x73f1('0x36')](__dirname,'tmp',rs[_0x73f1('0x29')](0x4)+_0x73f1('0x37'));var _0x1bf026;return downloadFile(_0x452454,_0x4dedfd)[_0x73f1('0x2c')](function(){_0x1bf026=path['resolve'](__dirname,_0x73f1('0x28'),rs[_0x73f1('0x29')](0x4)+_0x73f1('0x3b'));return convertFile(_0x4dedfd,_0x1bf026);})['then'](function(){try{fs[_0x73f1('0x3c')](_0x4dedfd);fs[_0x73f1('0x2d')](_0x1bf026,_0x73f1('0x3a'));}catch(_0x1293b5){logger[_0x73f1('0x1f')](_0x1293b5);}return _0x1bf026[_0x73f1('0x2e')]('.')[0x0];});};exports['ispeechASR']=function(_0x2371d3,_0x45685b,_0x43ca74,_0x1f5ff9){var _0x526546=util['format']('%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s',ISPEECH_API,_0x45685b,_0x43ca74,base64Encode(_0x2371d3),_0x1f5ff9?util[_0x73f1('0x7a')](_0x73f1('0x7b'),encodeURIComponent(_0x1f5ff9)):_0x73f1('0x7c'));return uploadFile(_0x526546)[_0x73f1('0x2c')](function(_0x16a5e4){return querystring[_0x73f1('0xa')](_0x16a5e4);});};exports[_0x73f1('0x7d')]=function(_0x2eba89,_0x1d3649){return sestek[_0x73f1('0x7e')](_0x2eba89,_0x1d3649)[_0x73f1('0x2c')](function(_0x2fd6a6){logger[_0x73f1('0x1d')](JSON['stringify'](_0x2fd6a6));var _0x3c6949={'speech':_0x2fd6a6[_0x73f1('0x7f')],'action':_0x2fd6a6[_0x73f1('0x80')]?_0x2fd6a6[_0x73f1('0x80')]['CustomAction']:undefined,'actiondata':_0x2fd6a6[_0x73f1('0x80')]?_0x2fd6a6['channelData'][_0x73f1('0x81')]:undefined};if(_0x2fd6a6[_0x73f1('0x80')]&&_0x2fd6a6[_0x73f1('0x80')]['AudioFromTts']){return base64Decode(_0x2fd6a6[_0x73f1('0x80')][_0x73f1('0x82')][_0x73f1('0x83')],path[_0x73f1('0x36')](__dirname,_0x73f1('0x28'),rs['generate'](0x4)+_0x73f1('0x3b')))[_0x73f1('0x2c')](function(_0x45a0b3){_0x3c6949['audiofile']=_0x45a0b3;return _0x3c6949;});}return _0x3c6949;});};exports['dirName']=function(){return __dirname;};
\ No newline at end of file
+var _0xa8ae=['code','metadata','endConversation','isFallbackIntent','googleDialogflowV2','replace','sessionPath','detectIntent','length','Dialogflow\x20V2\x20response:','stringify','action','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','boolValue','intent','displayName','isFallback','languageCode','queryText','responseId','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','confidence','awsPolly','polly','awsLex','lex','ispeechTTS','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','freeform=3','sestekNDA','nda','text','channelData','CustomAction','AudioFromTts','Data','audiofile','apiai-promise','bluebird','https','md5','path','querystring','request-promise','randomstring','sox','google-tts-api','url','parse','./aws','./google','./sestek','./tilde','../../../config/logger','agi','protocol','https:','host','WHAT_EVER','get','statusCode','\x20failed,\x20status\x20code\x20=\x20','request\x20to\x20','statusMessage','createWriteStream','finish','info','finish\x20download\x20file','close','error','unlink','end','transcode','wav','finish\x20to\x20convert','start','resolve','tmp','generate','.wav','writeFileSync','base64','then','chmodSync','split','toString','https://texttospeech.googleapis.com/v1/','?key=','input','MP3','text:synthesize','.mp3','audioContent','writeFile','777','googleCloudTTS\x20path','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','POST','application/x-www-form-urlencoded','jQ1olc','null','generic','slice','parse\x20response\x20failed:\x0a','data','text\x20length\x20limit\x20reached','lang\x20\x22','googleASR','results','map','alternatives','transcript','join','googleASR\x20transcription','googleASR\x20confidence','[%s]\x20%s:%s','name','message','textRequest','result','resolvedQuery','actionIncomplete','fulfillment','score'];(function(_0x4956b7,_0x4960e8){var _0x56cb99=function(_0x5ae8dd){while(--_0x5ae8dd){_0x4956b7['push'](_0x4956b7['shift']());}};_0x56cb99(++_0x4960e8);}(_0xa8ae,0x1c0));var _0xea8a=function(_0x214273,_0x526efa){_0x214273=_0x214273-0x0;var _0x403a86=_0xa8ae[_0x214273];return _0x403a86;};'use strict';var apiai=require(_0xea8a('0x0'));var BPromise=require(_0xea8a('0x1'));var dialogflow=require('dialogflow');var fs=require('fs');var http=require('http');var https=require(_0xea8a('0x2'));var md5=require(_0xea8a('0x3'));var path=require(_0xea8a('0x4'));var querystring=require(_0xea8a('0x5'));var rp=require(_0xea8a('0x6'));var rs=require(_0xea8a('0x7'));var sox=require(_0xea8a('0x8'));var tts=require(_0xea8a('0x9'));var urlParse=require(_0xea8a('0xa'))[_0xea8a('0xb')];var util=require('util');var aws=require(_0xea8a('0xc'));var google=require(_0xea8a('0xd'));var sestek=require(_0xea8a('0xe'));var tilde=require(_0xea8a('0xf'));var logger=require(_0xea8a('0x10'))(_0xea8a('0x11'));var ISPEECH_API='https://api.ispeech.org/api/rest';function downloadFile(_0x555f7f,_0x5b439f){return new BPromise(function(_0x46f2a3,_0x10f335){var _0xd9cd8=urlParse(_0x555f7f);var _0x206e38=_0xd9cd8[_0xea8a('0x12')]===_0xea8a('0x13')?https:http;var _0x5c1a86={'host':_0xd9cd8[_0xea8a('0x14')],'path':_0xd9cd8[_0xea8a('0x4')],'headers':{'user-agent':_0xea8a('0x15')}};_0x206e38[_0xea8a('0x16')](_0x5c1a86,function(_0x25a996){if(_0x25a996[_0xea8a('0x17')]!==0xc8){logger['error']('request\x20to\x20'+_0x555f7f+_0xea8a('0x18')+_0x25a996[_0xea8a('0x17')]+'\x20('+_0x25a996['statusMessage']+')');_0x10f335(new Error(_0xea8a('0x19')+_0x555f7f+_0xea8a('0x18')+_0x25a996[_0xea8a('0x17')]+'\x20('+_0x25a996[_0xea8a('0x1a')]+')'));return;}var _0x2803cf=fs[_0xea8a('0x1b')](_0x5b439f);_0x2803cf['on'](_0xea8a('0x1c'),function(){logger[_0xea8a('0x1d')](_0xea8a('0x1e'));_0x2803cf[_0xea8a('0x1f')](_0x46f2a3);});_0x2803cf['on'](_0xea8a('0x20'),function(_0x5e0682){fs[_0xea8a('0x21')](_0x5b439f);logger[_0xea8a('0x20')]('download\x20error',_0x5e0682);_0x10f335(_0x5e0682);});_0x25a996['pipe'](_0x2803cf);})['on']('error',function(_0x771d8c){logger['error'](_0x771d8c);_0x10f335(_0x771d8c);})['end']();});}function uploadFile(_0xc27cab){return new BPromise(function(_0x52220a,_0x214f89){var _0x37a988=urlParse(_0xc27cab);var _0x194156=_0x37a988[_0xea8a('0x12')]===_0xea8a('0x13')?https:http;var _0xc3b2f6={'host':_0x37a988[_0xea8a('0x14')],'path':_0x37a988[_0xea8a('0x4')],'headers':{'user-agent':_0xea8a('0x15')}};_0x194156['get'](_0xc3b2f6,function(_0x1926f3){if(_0x1926f3[_0xea8a('0x17')]!==0xc8){_0x214f89(new Error(_0xea8a('0x19')+_0xc27cab+'\x20failed,\x20status\x20code\x20=\x20'+_0x1926f3['statusCode']+'\x20('+_0x1926f3['statusMessage']+')'));return;}var _0x3630b4='';_0x1926f3['on']('data',function(_0x270546){_0x3630b4+=_0x270546;});_0x1926f3['on'](_0xea8a('0x22'),function(){_0x52220a(_0x3630b4);});})['on'](_0xea8a('0x20'),function(_0xb6a72f){_0x214f89(_0xb6a72f);})['end']();});}function convertFile(_0x4f1e5d,_0x172382){return new BPromise(function(_0x34a28b,_0x37e5c5){var _0x5f2dc9=sox[_0xea8a('0x23')](_0x4f1e5d,_0x172382,{'sampleRate':0x1f40,'format':_0xea8a('0x24'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x5f2dc9['on'](_0xea8a('0x20'),function(_0x34f155){logger[_0xea8a('0x20')]('error\x20convert',_0x34f155);_0x37e5c5(_0x34f155);});_0x5f2dc9['on'](_0xea8a('0x22'),function(){logger[_0xea8a('0x1d')](_0xea8a('0x25'));_0x34a28b();});_0x5f2dc9[_0xea8a('0x26')]();});}function base64Decode(_0x218046,_0x567b11){var _0x594fc2=path[_0xea8a('0x27')](__dirname,_0xea8a('0x28'),rs[_0xea8a('0x29')](0x4)+_0xea8a('0x2a'));fs[_0xea8a('0x2b')](_0x594fc2,_0x218046,_0xea8a('0x2c'));return convertFile(_0x594fc2,_0x567b11)[_0xea8a('0x2d')](function(){try{fs[_0xea8a('0x21')](_0x594fc2);fs[_0xea8a('0x2e')](_0x567b11,'777');}catch(_0x4fb8c1){logger[_0xea8a('0x20')](_0x4fb8c1);}return _0x567b11[_0xea8a('0x2f')]('.')[0x0];});}function base64Encode(_0xa80d7a){var _0x54c347=fs['readFileSync'](_0xa80d7a);return new Buffer(_0x54c347)[_0xea8a('0x30')](_0xea8a('0x2c'));}exports['googleCloudTTS']=function(_0x3a42ed,_0x5a2509,_0xefcdd1,_0x17fe72,_0x54db3f,_0x361b76){var _0x28b252,_0x402f5f;var _0xf3467c=_0xea8a('0x31');var _0x12cf01=_0xea8a('0x32')+_0x3a42ed;var _0x1bc549={};if(_0x5a2509==='ssml'){_0x1bc549['input']={'ssml':_0xefcdd1};}else{_0x1bc549[_0xea8a('0x33')]={'text':_0xefcdd1};};_0x1bc549['voice']={'languageCode':_0x17fe72,'ssmlGender':_0x54db3f};_0x1bc549['audioConfig']={'audioEncoding':_0xea8a('0x34'),'sampleRateHertz':0x1f40};var _0x1fc79c={'url':_0xf3467c+_0xea8a('0x35')+_0x12cf01,'method':'POST','json':!![],'body':_0x1bc549};return rp(_0x1fc79c)['then'](function(_0x2f0fc5){return new BPromise(function(_0x1cf4ba,_0x2998d7){_0x28b252=path['resolve'](__dirname,_0xea8a('0x28'),rs[_0xea8a('0x29')](0x4)+_0xea8a('0x36'));var _0x2457d2=Buffer['from'](_0x2f0fc5[_0xea8a('0x37')],_0xea8a('0x2c'));return fs[_0xea8a('0x38')](_0x28b252,_0x2457d2,function(_0x40d2fb){_0x2998d7(_0x40d2fb);},function(_0x11e80e){fs['chmodSync'](_0x28b252,_0xea8a('0x39'));_0x1cf4ba(_0x11e80e);});});})[_0xea8a('0x2d')](function(_0x41b7b4){_0x402f5f=path['resolve'](__dirname,_0xea8a('0x28'),rs[_0xea8a('0x29')](0x4)+_0xea8a('0x2a'));return convertFile(_0x28b252,_0x402f5f);})[_0xea8a('0x2d')](function(){try{fs[_0xea8a('0x21')](_0x28b252);fs[_0xea8a('0x2e')](_0x402f5f,'777');}catch(_0x10feff){logger[_0xea8a('0x20')](_0x10feff);}logger['info'](_0xea8a('0x3a'),_0x402f5f[_0xea8a('0x2f')]('.')[0x0]);return _0x402f5f[_0xea8a('0x2f')]('.')[0x0];});};exports['googleTTS']=function(_0x22c81c,_0x55c86a){var _0x3dc0b5=_0xea8a('0x3b');var _0x4592b2,_0x31b8bd;var _0x5d204d;var _0x1eabeb={'encoding':_0xea8a('0x3c'),'method':_0xea8a('0x3d'),'timeout':0x2710,'url':_0x3dc0b5,'headers':{'Content-Type':_0xea8a('0x3e')},'body':'f.req='+encodeURIComponent(JSON['stringify']([[[_0xea8a('0x3f'),JSON['stringify']([_0x22c81c,_0x55c86a||'en',![],_0xea8a('0x40')]),null,_0xea8a('0x41')]]]))};return rp(_0x1eabeb)[_0xea8a('0x2d')](function(_0x28d79c){try{_0x5d204d=eval(_0x28d79c[_0xea8a('0x42')](0x5))[0x0][0x2];}catch(_0x46a1e3){throw new Error(_0xea8a('0x43')+_0x28d79c[_0xea8a('0x44')]);}if(!_0x5d204d){if(_0x22c81c['length']>0xc8){throw new Error(_0xea8a('0x45'));}else{throw new Error(_0xea8a('0x46')+_0x55c86a+'\x22\x20might\x20not\x20exist');}}try{_0x5d204d=eval(_0x5d204d)[0x0];}catch(_0x54dc90){throw new Error(_0xea8a('0x43')+res[_0xea8a('0x44')]);}const _0x5f3de6=_0x5d204d;_0x4592b2=path['resolve'](__dirname,_0xea8a('0x28'),rs['generate'](0x4)+_0xea8a('0x36'));fs['writeFileSync'](_0x4592b2,_0x5d204d,{'encoding':_0xea8a('0x2c')});_0x31b8bd=path[_0xea8a('0x27')](__dirname,_0xea8a('0x28'),rs['generate'](0x4)+_0xea8a('0x2a'));return convertFile(_0x4592b2,_0x31b8bd);})[_0xea8a('0x2d')](function(){try{fs[_0xea8a('0x21')](_0x4592b2);fs['chmodSync'](_0x31b8bd,_0xea8a('0x39'));}catch(_0x59f718){logger[_0xea8a('0x20')](_0x59f718);}logger[_0xea8a('0x1d')]('goggleTTS\x20path',_0x31b8bd[_0xea8a('0x2f')]('.')[0x0]);return _0x31b8bd[_0xea8a('0x2f')]('.')[0x0];});};exports[_0xea8a('0x47')]=function(_0x224556,_0x38a2fb,_0x22843f){return google['asr'](_0x224556,_0x38a2fb,_0x22843f)[_0xea8a('0x2d')](function(_0x2f2489){logger[_0xea8a('0x1d')](_0x2f2489['uri']);return rp(_0x2f2489);})[_0xea8a('0x2d')](function(_0x41ddce){var _0x498f3c='';var _0x5ab7e9=0x0;try{fs['unlink'](_0x224556);}catch(_0xffd2ad){logger[_0xea8a('0x20')](_0xffd2ad);}if(_0x41ddce&&_0x41ddce[_0xea8a('0x48')]){_0x498f3c=_0x41ddce[_0xea8a('0x48')][_0xea8a('0x49')](function(_0x5de891){return _0x5de891&&_0x5de891[_0xea8a('0x4a')][0x0]&&_0x5de891[_0xea8a('0x4a')][0x0][_0xea8a('0x4b')]?_0x5de891[_0xea8a('0x4a')][0x0]['transcript']:'';})[_0xea8a('0x4c')]('\x0a');_0x5ab7e9=_0x41ddce[_0xea8a('0x48')][_0xea8a('0x49')](function(_0x2a680e){return _0x2a680e&&_0x2a680e[_0xea8a('0x4a')][0x0]&&_0x2a680e[_0xea8a('0x4a')][0x0]['confidence']?_0x2a680e[_0xea8a('0x4a')][0x0]['confidence']:0x0;})[_0xea8a('0x4c')]('\x0a');}logger[_0xea8a('0x1d')](_0xea8a('0x4d'),_0x498f3c);logger['info'](_0xea8a('0x4e'),_0x5ab7e9);return{'transcript':_0x498f3c,'confidence':_0x5ab7e9};})['catch'](function(_0x456cc0){logger['error'](_0xea8a('0x4f'),_0x456cc0[_0xea8a('0x17')],_0x456cc0[_0xea8a('0x50')],_0x456cc0[_0xea8a('0x51')]);});};exports['googleDialogflow']=function(_0x2ceffc,_0x4acdf5,_0x52449e,_0xf59cb4){var _0x54e2d7=apiai(_0x4acdf5,{'language':_0xf59cb4||'en'});return _0x54e2d7[_0xea8a('0x52')](_0x52449e,{'sessionId':md5(_0x2ceffc)})[_0xea8a('0x2d')](function(_0x6278f4){logger['info'](JSON['stringify'](_0x6278f4));return{'source':_0x6278f4['result']['source'],'resolvedQuery':_0x6278f4[_0xea8a('0x53')][_0xea8a('0x54')],'action':_0x6278f4[_0xea8a('0x53')]['action'],'actionIncomplete':_0x6278f4[_0xea8a('0x53')][_0xea8a('0x55')],'speech':_0x6278f4[_0xea8a('0x53')][_0xea8a('0x56')]['speech'],'score':_0x6278f4['result'][_0xea8a('0x57')],'statusCode':_0x6278f4['status'][_0xea8a('0x58')],'endConversation':_0x6278f4[_0xea8a('0x53')][_0xea8a('0x59')][_0xea8a('0x5a')]||![],'isFallbackIntent':_0x6278f4[_0xea8a('0x53')][_0xea8a('0x59')][_0xea8a('0x5b')]};});};exports[_0xea8a('0x5c')]=function(_0x378647,_0x1cda25,_0x3aa9e8,_0x27a857,_0x154c0f,_0x243ad2){var _0x430d48=_0x27a857[_0xea8a('0x5d')](/\\n/g,'\x0a');var _0x1df2c6={'credentials':{'private_key':_0x430d48,'client_email':_0x3aa9e8}};var _0x5b69ec=new dialogflow['SessionsClient'](_0x1df2c6);var _0x2e98d7=_0x5b69ec[_0xea8a('0x5e')](_0x1cda25,md5(_0x378647));var _0x2f5a4d={'session':_0x2e98d7,'queryInput':{'text':{'text':_0x154c0f,'languageCode':_0x243ad2}}};return _0x5b69ec[_0xea8a('0x5f')](_0x2f5a4d)[_0xea8a('0x2d')](function(_0x3a8541){if(_0x3a8541&&_0x3a8541[_0xea8a('0x60')]){logger['info'](_0xea8a('0x61'),JSON[_0xea8a('0x62')](_0x3a8541));var _0x3dbd21=_0x3a8541[0x0];if(_0x3dbd21){var _0x99c49c={'action':_0x3dbd21['queryResult'][_0xea8a('0x63')],'allRequiredParamsPresent':_0x3dbd21[_0xea8a('0x64')][_0xea8a('0x65')],'endConversation':_0x3dbd21['queryResult']['diagnosticInfo']&&_0x3dbd21[_0xea8a('0x64')][_0xea8a('0x66')]['fields']?_0x3dbd21[_0xea8a('0x64')]['diagnosticInfo'][_0xea8a('0x67')]['end_conversation'][_0xea8a('0x68')]:![],'fulfillmentText':_0x3dbd21[_0xea8a('0x64')]['fulfillmentText'],'intentName':_0x3dbd21[_0xea8a('0x64')][_0xea8a('0x69')][_0xea8a('0x50')],'intentDisplayName':_0x3dbd21[_0xea8a('0x64')][_0xea8a('0x69')][_0xea8a('0x6a')],'isFallbackIntent':_0x3dbd21[_0xea8a('0x64')][_0xea8a('0x69')][_0xea8a('0x6b')],'languageCode':_0x3dbd21[_0xea8a('0x64')][_0xea8a('0x6c')],'queryText':_0x3dbd21['queryResult'][_0xea8a('0x6d')],'responseId':_0x3dbd21[_0xea8a('0x6e')],'score':_0x3dbd21[_0xea8a('0x64')][_0xea8a('0x6f')],'speech':_0x3dbd21[_0xea8a('0x64')]['fulfillmentText'],'providerResponse':JSON[_0xea8a('0x62')](_0x3a8541)};return _0x99c49c;}}});};exports[_0xea8a('0x70')]=function(_0x38fc43,_0x30b9fa,_0x1078f4,_0x5ecbcf){return tilde['asr'](_0x38fc43,_0x30b9fa,_0x1078f4,_0x5ecbcf)[_0xea8a('0x2d')](function(_0x5dd81b){try{fs['unlink'](_0x38fc43);}catch(_0x1e8277){logger[_0xea8a('0x20')](_0x1e8277);}logger[_0xea8a('0x1d')](_0xea8a('0x71'),_0x5dd81b[_0xea8a('0x4b')]);logger[_0xea8a('0x1d')](_0xea8a('0x72'),_0x5dd81b[_0xea8a('0x73')]);return _0x5dd81b;});};exports[_0xea8a('0x74')]=function(_0x47a621,_0x510c1a,_0x26cd0,_0x4aa16d,_0xaf7a17,_0x122dee){var _0x5f5326=path[_0xea8a('0x27')](__dirname,_0xea8a('0x28'),rs[_0xea8a('0x29')](0x4)+_0xea8a('0x36'));var _0x424e78;return aws[_0xea8a('0x75')](_0x47a621,_0x510c1a,_0x26cd0,_0x4aa16d,_0xaf7a17,_0x122dee,_0x5f5326)[_0xea8a('0x2d')](function(){_0x424e78=path[_0xea8a('0x27')](__dirname,_0xea8a('0x28'),rs[_0xea8a('0x29')](0x4)+_0xea8a('0x2a'));return convertFile(_0x5f5326,_0x424e78);})[_0xea8a('0x2d')](function(){try{fs['unlink'](_0x5f5326);fs[_0xea8a('0x2e')](_0x424e78,_0xea8a('0x39'));}catch(_0xcbec29){logger[_0xea8a('0x20')](_0xcbec29);}return _0x424e78[_0xea8a('0x2f')]('.')[0x0];});};exports[_0xea8a('0x76')]=function(_0x5afa27,_0x46a724,_0x4fecb1,_0x125809,_0x2b7313,_0x4d1450){return aws[_0xea8a('0x77')](_0x5afa27,_0x46a724,_0x4fecb1,_0x125809,_0x2b7313,_0x4d1450)[_0xea8a('0x2d')](function(_0x91cb2e){logger[_0xea8a('0x1d')](JSON[_0xea8a('0x62')](_0x91cb2e));return _0x91cb2e;});};exports[_0xea8a('0x78')]=function(_0x33c5e3,_0x402792,_0x3a8dfd,_0x4e9246){var _0x1f4078=util[_0xea8a('0x79')](_0xea8a('0x7a'),ISPEECH_API,_0x33c5e3,encodeURIComponent(_0x402792),_0x3a8dfd,_0x4e9246);var _0xef6d3c=path['resolve'](__dirname,_0xea8a('0x28'),rs[_0xea8a('0x29')](0x4)+'.mp3');var _0x1f7da6;return downloadFile(_0x1f4078,_0xef6d3c)['then'](function(){_0x1f7da6=path[_0xea8a('0x27')](__dirname,'tmp',rs['generate'](0x4)+'.wav');return convertFile(_0xef6d3c,_0x1f7da6);})[_0xea8a('0x2d')](function(){try{fs[_0xea8a('0x21')](_0xef6d3c);fs[_0xea8a('0x2e')](_0x1f7da6,'777');}catch(_0x20536e){logger[_0xea8a('0x20')](_0x20536e);}return _0x1f7da6[_0xea8a('0x2f')]('.')[0x0];});};exports['ispeechASR']=function(_0x16e0b3,_0x44e3ea,_0x3e47e0,_0x527394){var _0x52d984=util['format'](_0xea8a('0x7b'),ISPEECH_API,_0x44e3ea,_0x3e47e0,base64Encode(_0x16e0b3),_0x527394?util[_0xea8a('0x79')](_0xea8a('0x7c'),encodeURIComponent(_0x527394)):_0xea8a('0x7d'));return uploadFile(_0x52d984)[_0xea8a('0x2d')](function(_0x11f790){return querystring[_0xea8a('0xb')](_0x11f790);});};exports[_0xea8a('0x7e')]=function(_0xade741,_0x57ad04){return sestek[_0xea8a('0x7f')](_0xade741,_0x57ad04)[_0xea8a('0x2d')](function(_0x5ba132){logger[_0xea8a('0x1d')](JSON[_0xea8a('0x62')](_0x5ba132));var _0x4cc6da={'speech':_0x5ba132[_0xea8a('0x80')],'action':_0x5ba132[_0xea8a('0x81')]?_0x5ba132[_0xea8a('0x81')][_0xea8a('0x82')]:undefined,'actiondata':_0x5ba132[_0xea8a('0x81')]?_0x5ba132[_0xea8a('0x81')]['CustomActionData']:undefined};if(_0x5ba132['channelData']&&_0x5ba132['channelData'][_0xea8a('0x83')]){return base64Decode(_0x5ba132[_0xea8a('0x81')][_0xea8a('0x83')][_0xea8a('0x84')],path[_0xea8a('0x27')](__dirname,'tmp',rs[_0xea8a('0x29')](0x4)+_0xea8a('0x2a')))[_0xea8a('0x2d')](function(_0x550b46){_0x4cc6da[_0xea8a('0x85')]=_0x550b46;return _0x4cc6da;});}return _0x4cc6da;});};exports['dirName']=function(){return __dirname;};
\ No newline at end of file
index 445855a..1c0659e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ade=['./nda'];(function(_0xc9fe79,_0x10f71d){var _0x378a47=function(_0x4d9fa1){while(--_0x4d9fa1){_0xc9fe79['push'](_0xc9fe79['shift']());}};_0x378a47(++_0x10f71d);}(_0x8ade,0x144));var _0xe8ad=function(_0x2bf821,_0x3fe521){_0x2bf821=_0x2bf821-0x0;var _0xc06066=_0x8ade[_0x2bf821];return _0xc06066;};var nda=require(_0xe8ad('0x0'));module['exports']={'nda':nda};
\ No newline at end of file
+var _0x6515=['exports','./nda'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x6515,0xcb));var _0x5651=function(_0x3c8c33,_0x28e857){_0x3c8c33=_0x3c8c33-0x0;var _0x1e4c0d=_0x6515[_0x3c8c33];return _0x1e4c0d;};var nda=require(_0x5651('0x0'));module[_0x5651('0x1')]={'nda':nda};
\ No newline at end of file
index ddc72f0..c7774a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb377=['ndassistant_url','/api/NaturalDialogAssistant/v1/Run','ndaactivity_type','message','Nda','callerid','calleridname','text','Bearer\x20','access_token','project','body','channelData','ProjectName','ndagenerate_audio','AudioOutputSettings','audio/wav','custom_action','CustomAction','custom_action_data','info','stringify','request-promise','url','../../../../../config/logger','agi','exports','POST','resolve','ndauth_url','/token','password'];(function(_0x3e5595,_0xbe4275){var _0x3fd3a6=function(_0x43874c){while(--_0x43874c){_0x3e5595['push'](_0x3e5595['shift']());}};_0x3fd3a6(++_0xbe4275);}(_0xb377,0x1b6));var _0x7b37=function(_0x371b91,_0x3522ad){_0x371b91=_0x371b91-0x0;var _0x3c9204=_0xb377[_0x371b91];return _0x3c9204;};'use strict';var rp=require(_0x7b37('0x0'));var url=require(_0x7b37('0x1'));var logger=require(_0x7b37('0x2'))(_0x7b37('0x3'));module[_0x7b37('0x4')]=function(_0x36868b,_0x15bc68){var _0x3c4851={'method':_0x7b37('0x5'),'uri':url[_0x7b37('0x6')](_0x15bc68[_0x7b37('0x7')],_0x7b37('0x8')),'form':{'grant_type':'password','username':_0x15bc68['username'],'password':_0x15bc68[_0x7b37('0x9')]},'json':!![]};return rp(_0x3c4851)['then'](function(_0x5afdb8){var _0x3de992={'method':_0x7b37('0x5'),'uri':url[_0x7b37('0x6')](_0x15bc68[_0x7b37('0xa')],_0x7b37('0xb')),'body':{'type':_0x15bc68[_0x7b37('0xc')]||_0x7b37('0xd'),'channelId':_0x7b37('0xe'),'conversation':{'id':_0x36868b['uniqueid']},'from':{'id':_0x36868b[_0x7b37('0xf')],'name':_0x36868b[_0x7b37('0x10')]},'recipient':{'id':_0x36868b['dnid'],'name':_0x36868b['extension']},'text':_0x15bc68[_0x7b37('0x11')],'channelData':{}},'headers':{'Authorization':_0x7b37('0x12')+_0x5afdb8[_0x7b37('0x13')]},'json':!![]};if(_0x15bc68[_0x7b37('0x14')]){_0x3de992[_0x7b37('0x15')][_0x7b37('0x16')][_0x7b37('0x17')]=_0x15bc68[_0x7b37('0x14')];}if(_0x15bc68[_0x7b37('0x18')]=='1'){_0x3de992[_0x7b37('0x15')][_0x7b37('0x16')][_0x7b37('0x19')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0x7b37('0x1a')};}if(_0x15bc68[_0x7b37('0x1b')]){_0x3de992[_0x7b37('0x15')][_0x7b37('0x16')][_0x7b37('0x1c')]=_0x15bc68['custom_action'];if(_0x15bc68['custom_action_data']){_0x3de992[_0x7b37('0x15')]['channelData']['CustomActionData']=_0x15bc68[_0x7b37('0x1d')];}}logger[_0x7b37('0x1e')](JSON[_0x7b37('0x1f')](_0x3de992));return rp(_0x3de992);});};
\ No newline at end of file
+var _0xb04a=['agi','resolve','ndauth_url','/token','username','password','POST','ndaactivity_type','message','Nda','uniqueid','callerid','calleridname','dnid','extension','text','project','body','channelData','ProjectName','ndagenerate_audio','AudioOutputSettings','audio/wav','custom_action','custom_action_data','CustomActionData','stringify','request-promise','url','../../../../../config/logger'];(function(_0x436985,_0x2e7f0b){var _0x2a8d4d=function(_0x9aadd4){while(--_0x9aadd4){_0x436985['push'](_0x436985['shift']());}};_0x2a8d4d(++_0x2e7f0b);}(_0xb04a,0xcf));var _0xab04=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb04a[_0x3dd15e];return _0x231fd0;};'use strict';var rp=require(_0xab04('0x0'));var url=require(_0xab04('0x1'));var logger=require(_0xab04('0x2'))(_0xab04('0x3'));module['exports']=function(_0x28963e,_0x4657c4){var _0x20639d={'method':'POST','uri':url[_0xab04('0x4')](_0x4657c4[_0xab04('0x5')],_0xab04('0x6')),'form':{'grant_type':'password','username':_0x4657c4[_0xab04('0x7')],'password':_0x4657c4[_0xab04('0x8')]},'json':!![]};return rp(_0x20639d)['then'](function(_0x53a969){var _0x4d47f5={'method':_0xab04('0x9'),'uri':url['resolve'](_0x4657c4['ndassistant_url'],'/api/NaturalDialogAssistant/v1/Run'),'body':{'type':_0x4657c4[_0xab04('0xa')]||_0xab04('0xb'),'channelId':_0xab04('0xc'),'conversation':{'id':_0x28963e[_0xab04('0xd')]},'from':{'id':_0x28963e[_0xab04('0xe')],'name':_0x28963e[_0xab04('0xf')]},'recipient':{'id':_0x28963e[_0xab04('0x10')],'name':_0x28963e[_0xab04('0x11')]},'text':_0x4657c4[_0xab04('0x12')],'channelData':{}},'headers':{'Authorization':'Bearer\x20'+_0x53a969['access_token']},'json':!![]};if(_0x4657c4[_0xab04('0x13')]){_0x4d47f5[_0xab04('0x14')][_0xab04('0x15')][_0xab04('0x16')]=_0x4657c4['project'];}if(_0x4657c4[_0xab04('0x17')]=='1'){_0x4d47f5[_0xab04('0x14')]['channelData'][_0xab04('0x18')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0xab04('0x19')};}if(_0x4657c4[_0xab04('0x1a')]){_0x4d47f5[_0xab04('0x14')][_0xab04('0x15')]['CustomAction']=_0x4657c4[_0xab04('0x1a')];if(_0x4657c4[_0xab04('0x1b')]){_0x4d47f5[_0xab04('0x14')][_0xab04('0x15')][_0xab04('0x1c')]=_0x4657c4['custom_action_data'];}}logger['info'](JSON[_0xab04('0x1d')](_0x4d47f5));return rp(_0x4d47f5);});};
\ No newline at end of file
index c88faf0..34eeb6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77ed=['exports'];(function(_0x3acf51,_0x2b5f2a){var _0x2df595=function(_0x9c377){while(--_0x9c377){_0x3acf51['push'](_0x3acf51['shift']());}};_0x2df595(++_0x2b5f2a);}(_0x77ed,0xe2));var _0xd77e=function(_0x4ee70e,_0x342786){_0x4ee70e=_0x4ee70e-0x0;var _0xd08a64=_0x77ed[_0x4ee70e];return _0xd08a64;};'use strict';var asr=require('./lib/api');module[_0xd77e('0x0')]=function(_0x473769,_0x45efca,_0x4449e9,_0x3115e7){return asr(_0x473769,_0x45efca,_0x4449e9,_0x3115e7);};
\ No newline at end of file
+var _0xfafa=['./lib/api','exports'];(function(_0x411c35,_0x49868e){var _0x1cd407=function(_0xe02b9a){while(--_0xe02b9a){_0x411c35['push'](_0x411c35['shift']());}};_0x1cd407(++_0x49868e);}(_0xfafa,0x13a));var _0xafaf=function(_0x5aecf2,_0x39f419){_0x5aecf2=_0x5aecf2-0x0;var _0x1db641=_0xfafa[_0x5aecf2];return _0x1db641;};'use strict';var asr=require(_0xafaf('0x0'));module[_0xafaf('0x1')]=function(_0x8afe02,_0x37ca07,_0x5f4df3,_0x6668a5){return asr(_0x8afe02,_0x37ca07,_0x5f4df3,_0x6668a5);};
\ No newline at end of file
index 92a9991..bae6d6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10cb=['exports','info','Tilde\x20URI','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','createHash','update','digest','hex','Open\x20Tilde\x20ASR\x20socket','unix','send','stringify','createReadStream','close','error','Tilde\x20ASR\x20send\x20error','terminate','status','result','Tilde\x20ASR\x20hypoteses','hypotheses','likelihood','Success.','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Not\x20available.\x20Max\x20load\x20limit\x20reached.','Authentication\x20failed.','All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.','Tilde\x20ASR\x20parse\x20error','Close\x20Tilde\x20ASR\x20socket','Error\x20Tilde\x20ASR\x20socket','isNil','lodash','moment','agi'];(function(_0x3bdde6,_0x3ecba2){var _0x4fa146=function(_0x3f9202){while(--_0x3f9202){_0x3bdde6['push'](_0x3bdde6['shift']());}};_0x4fa146(++_0x3ecba2);}(_0x10cb,0x66));var _0xb10c=function(_0x1d0946,_0x3732fc){_0x1d0946=_0x1d0946-0x0;var _0x205df=_0x10cb[_0x1d0946];return _0x205df;};'use strict';var BPromise=require('bluebird');var _=require(_0xb10c('0x0'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0xb10c('0x1'));var crypto=require('crypto');var logger=require('../../../../../../config/logger')(_0xb10c('0x2'));module[_0xb10c('0x3')]=function(_0x134aa8,_0x3bebce,_0x6e854,_0xb561e1){return new BPromise(function(_0x5a17a0,_0x34d61b){logger[_0xb10c('0x4')](_0xb10c('0x5'),_0xb561e1||_0xb10c('0x6'));var _0x58f0d4=new WebSocket(_0xb561e1||_0xb10c('0x6'),{'perMessageDeflate':![]});var _0x6460e6='';var _0xdca2e5='0';var _0x4d67af='1';var _0x6a9f60=_0xb10c('0x7');function _0x11aa06(_0x4672d4){var _0xdefb9c=crypto[_0xb10c('0x8')]('sha1');_0xdefb9c[_0xb10c('0x9')](_0x4672d4);return _0xdefb9c[_0xb10c('0xa')](_0xb10c('0xb'));}function _0x12822e(){try{logger['info'](_0xb10c('0xc'));var _0x57a66a=moment()[_0xb10c('0xd')]();var _0xb67b2a=_0x11aa06(_0x57a66a+_0x3bebce+_0x6e854);_0x58f0d4[_0xb10c('0xe')](JSON[_0xb10c('0xf')]({'appID':_0x3bebce,'timestamp':_0x57a66a,'appKey':_0xb67b2a}));var _0x2d2458=fs[_0xb10c('0x10')](_0x134aa8);_0x2d2458['on']('data',function(_0x188a29){_0x58f0d4['send'](_0x188a29);});_0x2d2458['on'](_0xb10c('0x11'),function(){_0x58f0d4['send']('EOS');});}catch(_0x24f632){logger[_0xb10c('0x12')](_0xb10c('0x13'),JSON['stringify'](_0x24f632));_0x58f0d4[_0xb10c('0x14')]();}}function _0x2d4d40(_0x5da03c){try{if(_0x5da03c){var _0x4ddd55=JSON['parse'](_0x5da03c);switch(_0x4ddd55[_0xb10c('0x15')]){case 0x0:if(_0x4ddd55[_0xb10c('0x16')]){if(_0x4ddd55[_0xb10c('0x16')]['final']){logger['info'](_0xb10c('0x17'),JSON[_0xb10c('0xf')](_0x4ddd55[_0xb10c('0x16')][_0xb10c('0x18')]));_0x6460e6=_0x4ddd55['result'][_0xb10c('0x18')][0x0]['transcript'];_0xdca2e5=_0x4ddd55[_0xb10c('0x16')][_0xb10c('0x18')][0x0][_0xb10c('0x19')];_0x4d67af='0';_0x6a9f60=_0xb10c('0x1a');_0x58f0d4[_0xb10c('0x14')]();}}break;case 0x1:logger[_0xb10c('0x4')](_0xb10c('0x7'));_0x4d67af='1';_0x6a9f60=_0xb10c('0x7');break;case 0x2:logger[_0xb10c('0x4')](_0xb10c('0x1b'));_0x4d67af='2';_0x6a9f60=_0xb10c('0x1b');break;case 0x9:logger[_0xb10c('0x4')](_0xb10c('0x1c'));_0x4d67af='9';_0x6a9f60=_0xb10c('0x1c');break;case 0xa:logger[_0xb10c('0x4')](_0xb10c('0x1d'));_0x4d67af='10';_0x6a9f60='Authentication\x20failed.';break;case 0xb:logger[_0xb10c('0x4')](_0xb10c('0x1e'));_0x4d67af='11';_0x6a9f60=_0xb10c('0x1e');}}}catch(_0x310234){logger[_0xb10c('0x12')](_0xb10c('0x1f'),JSON[_0xb10c('0xf')](_0x310234));_0x58f0d4[_0xb10c('0x14')]();}}function _0x2cc814(){logger['info'](_0xb10c('0x20'));_0x5a17a0({'transcript':_0x6460e6,'confidence':_0xdca2e5,'status':_0x4d67af,'status_message':_0x6a9f60});}function _0x83cf07(_0x1f0ab1){logger[_0xb10c('0x12')](_0xb10c('0x21'));if(!_[_0xb10c('0x22')](_0x1f0ab1)){logger[_0xb10c('0x12')](_['isObject'](_0x1f0ab1)?JSON[_0xb10c('0xf')](_0x1f0ab1):_0x1f0ab1);}}_0x58f0d4['on']('open',_0x12822e);_0x58f0d4['on']('message',_0x2d4d40);_0x58f0d4['on'](_0xb10c('0x11'),_0x2cc814);_0x58f0d4['on'](_0xb10c('0x12'),_0x83cf07);});};
\ No newline at end of file
+var _0xc402=['crypto','../../../../../../config/logger','agi','exports','info','Tilde\x20URI','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','sha1','digest','hex','Open\x20Tilde\x20ASR\x20socket','unix','send','stringify','createReadStream','data','close','error','Tilde\x20ASR\x20send\x20error','parse','status','result','final','Tilde\x20ASR\x20hypoteses','hypotheses','transcript','Success.','terminate','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Authentication\x20failed.','All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.','Tilde\x20ASR\x20parse\x20error','Error\x20Tilde\x20ASR\x20socket','isNil','message','bluebird','moment'];(function(_0x5cd675,_0x352cca){var _0x2379b0=function(_0x2e510b){while(--_0x2e510b){_0x5cd675['push'](_0x5cd675['shift']());}};_0x2379b0(++_0x352cca);}(_0xc402,0x17a));var _0x2c40=function(_0x33fb9a,_0x4d13f8){_0x33fb9a=_0x33fb9a-0x0;var _0x10aa70=_0xc402[_0x33fb9a];return _0x10aa70;};'use strict';var BPromise=require(_0x2c40('0x0'));var _=require('lodash');var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x2c40('0x1'));var crypto=require(_0x2c40('0x2'));var logger=require(_0x2c40('0x3'))(_0x2c40('0x4'));module[_0x2c40('0x5')]=function(_0x57a03b,_0x4be8e0,_0x21f1f0,_0x5925cd){return new BPromise(function(_0x138c23,_0x11657d){logger[_0x2c40('0x6')](_0x2c40('0x7'),_0x5925cd||_0x2c40('0x8'));var _0x3af00f=new WebSocket(_0x5925cd||_0x2c40('0x8'),{'perMessageDeflate':![]});var _0x1010b7='';var _0x1ba74='0';var _0x341970='1';var _0x2340e9=_0x2c40('0x9');function _0x50bd00(_0x57aa83){var _0x373a72=crypto['createHash'](_0x2c40('0xa'));_0x373a72['update'](_0x57aa83);return _0x373a72[_0x2c40('0xb')](_0x2c40('0xc'));}function _0x372cee(){try{logger[_0x2c40('0x6')](_0x2c40('0xd'));var _0x16c240=moment()[_0x2c40('0xe')]();var _0x582715=_0x50bd00(_0x16c240+_0x4be8e0+_0x21f1f0);_0x3af00f[_0x2c40('0xf')](JSON[_0x2c40('0x10')]({'appID':_0x4be8e0,'timestamp':_0x16c240,'appKey':_0x582715}));var _0x4a8a0a=fs[_0x2c40('0x11')](_0x57a03b);_0x4a8a0a['on'](_0x2c40('0x12'),function(_0x3723e2){_0x3af00f[_0x2c40('0xf')](_0x3723e2);});_0x4a8a0a['on'](_0x2c40('0x13'),function(){_0x3af00f[_0x2c40('0xf')]('EOS');});}catch(_0x38316a){logger[_0x2c40('0x14')](_0x2c40('0x15'),JSON['stringify'](_0x38316a));_0x3af00f['terminate']();}}function _0xa25dac(_0x10f039){try{if(_0x10f039){var _0x754009=JSON[_0x2c40('0x16')](_0x10f039);switch(_0x754009[_0x2c40('0x17')]){case 0x0:if(_0x754009[_0x2c40('0x18')]){if(_0x754009[_0x2c40('0x18')][_0x2c40('0x19')]){logger['info'](_0x2c40('0x1a'),JSON[_0x2c40('0x10')](_0x754009[_0x2c40('0x18')][_0x2c40('0x1b')]));_0x1010b7=_0x754009[_0x2c40('0x18')][_0x2c40('0x1b')][0x0][_0x2c40('0x1c')];_0x1ba74=_0x754009[_0x2c40('0x18')][_0x2c40('0x1b')][0x0]['likelihood'];_0x341970='0';_0x2340e9=_0x2c40('0x1d');_0x3af00f[_0x2c40('0x1e')]();}}break;case 0x1:logger[_0x2c40('0x6')]('No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech');_0x341970='1';_0x2340e9=_0x2c40('0x9');break;case 0x2:logger[_0x2c40('0x6')]('Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.');_0x341970='2';_0x2340e9=_0x2c40('0x1f');break;case 0x9:logger['info']('Not\x20available.\x20Max\x20load\x20limit\x20reached.');_0x341970='9';_0x2340e9='Not\x20available.\x20Max\x20load\x20limit\x20reached.';break;case 0xa:logger[_0x2c40('0x6')]('Authentication\x20failed.');_0x341970='10';_0x2340e9=_0x2c40('0x20');break;case 0xb:logger[_0x2c40('0x6')](_0x2c40('0x21'));_0x341970='11';_0x2340e9=_0x2c40('0x21');}}}catch(_0x55cd73){logger['error'](_0x2c40('0x22'),JSON[_0x2c40('0x10')](_0x55cd73));_0x3af00f[_0x2c40('0x1e')]();}}function _0x5eeb0e(){logger[_0x2c40('0x6')]('Close\x20Tilde\x20ASR\x20socket');_0x138c23({'transcript':_0x1010b7,'confidence':_0x1ba74,'status':_0x341970,'status_message':_0x2340e9});}function _0x579644(_0x13d673){logger['error'](_0x2c40('0x23'));if(!_[_0x2c40('0x24')](_0x13d673)){logger[_0x2c40('0x14')](_['isObject'](_0x13d673)?JSON[_0x2c40('0x10')](_0x13d673):_0x13d673);}}_0x3af00f['on']('open',_0x372cee);_0x3af00f['on'](_0x2c40('0x25'),_0xa25dac);_0x3af00f['on'](_0x2c40('0x13'),_0x5eeb0e);_0x3af00f['on'](_0x2c40('0x14'),_0x579644);});};
\ No newline at end of file
index 0aa45aa..79cbf44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf00c=['exports','./asr'];(function(_0x1f266f,_0x256ade){var _0x20d410=function(_0x2e928f){while(--_0x2e928f){_0x1f266f['push'](_0x1f266f['shift']());}};_0x20d410(++_0x256ade);}(_0xf00c,0x19b));var _0xcf00=function(_0x7788b6,_0x571beb){_0x7788b6=_0x7788b6-0x0;var _0x13e697=_0xf00c[_0x7788b6];return _0x13e697;};var asr=require(_0xcf00('0x0'));module[_0xcf00('0x1')]={'asr':asr};
\ No newline at end of file
+var _0x5530=['./asr','exports'];(function(_0x5a8aa3,_0x2294d5){var _0x5d0458=function(_0x62d096){while(--_0x62d096){_0x5a8aa3['push'](_0x5a8aa3['shift']());}};_0x5d0458(++_0x2294d5);}(_0x5530,0x112));var _0x0553=function(_0x2d959f,_0x987285){_0x2d959f=_0x2d959f-0x0;var _0x554eec=_0x5530[_0x2d959f];return _0x554eec;};var asr=require(_0x0553('0x0'));module[_0x0553('0x1')]={'asr':asr};
\ No newline at end of file
index b85c784..91e4f58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x50a0c2,_0x4befab){_0x50a0c2=_0x50a0c2-0x0;var _0x5ebadd=_0x9c44[_0x50a0c2];return _0x5ebadd;};'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
+var _0xe706=['connection','getConnections','E_AGI_SERVER_ERROR','E_AGI_SERVER_VOICE_DISABLED','destroy','E_AGI_SERVER_MAXCONNECTION','close','nextTick','exports','util','net','events','./error','./channel','127.0.0.1','call','emit','error','E_AGI_ARGUMENT_PORT','createServer','listen','listening'];(function(_0x2a558d,_0x2df0ff){var _0xa7bc9c=function(_0x12a30e){while(--_0x12a30e){_0x2a558d['push'](_0x2a558d['shift']());}};_0xa7bc9c(++_0x2df0ff);}(_0xe706,0xa3));var _0x6e70=function(_0x2dd12a,_0x441a94){_0x2dd12a=_0x2dd12a-0x0;var _0x52069c=_0xe706[_0x2dd12a];return _0x52069c;};'use strict';var util=require(_0x6e70('0x0'));var net=require(_0x6e70('0x1'));var EventEmitter=require(_0x6e70('0x2'))['EventEmitter'];var AGIError=require(_0x6e70('0x3'));var AGIChannel=require(_0x6e70('0x4'));var AGIServer=function(_0x2ca810,_0x7dfbc3,_0x142c27){var _0x2164a4=this;var _0x376a8d=null;var _0x506db9=0x0;if(!_0x2ca810)_0x2ca810=0x11dd;if(!_0x7dfbc3)_0x7dfbc3=_0x6e70('0x5');EventEmitter[_0x6e70('0x6')](_0x2164a4);function _0x36357b(){if(!_0x2ca810){_0x2164a4[_0x6e70('0x7')](_0x6e70('0x8'),new AGIError(_0x6e70('0x9')));return![];}_0x376a8d=net[_0x6e70('0xa')]();_0x376a8d[_0x6e70('0xb')](_0x2ca810,_0x7dfbc3);_0x376a8d['on'](_0x6e70('0xc'),function(){_0x2164a4[_0x6e70('0x7')](_0x6e70('0xc'));});_0x376a8d['on'](_0x6e70('0xd'),function(_0x743eb5){_0x376a8d[_0x6e70('0xe')](function(_0x37b3e0,_0x4600f9){if(_0x37b3e0){_0x2164a4['emit']('error',new AGIError(_0x6e70('0xf'),_0x37b3e0));}else if(_0x142c27&&_0x142c27<0x0){_0x2164a4[_0x6e70('0x7')](_0x6e70('0x8'),new AGIError(_0x6e70('0x10')));_0x743eb5[_0x6e70('0x11')]();}else if(_0x142c27&&_0x142c27>0x0&&_0x142c27<_0x4600f9){_0x506db9+=0x1;_0x2164a4[_0x6e70('0x7')](_0x6e70('0x8'),new AGIError(_0x6e70('0x12'),_0x506db9));_0x743eb5['destroy']();}else{var _0x52737e=new AGIChannel(_0x743eb5);_0x52737e['on']('ready',function(){_0x2164a4[_0x6e70('0x7')]('connection',_0x52737e);});}});});_0x376a8d['on']('error',function(_0x304716){_0x2164a4[_0x6e70('0x7')]('error',new AGIError(_0x6e70('0xf'),_0x304716['code']));});_0x376a8d['on'](_0x6e70('0x13'),function(){_0x2164a4[_0x6e70('0x7')]('close',new AGIError('E_AGI_SERVER_CLOSE'));});}process[_0x6e70('0x14')](function(){_0x36357b();});};util['inherits'](AGIServer,EventEmitter);module[_0x6e70('0x15')]=function(_0x173afe,_0x53acdc,_0x497d61){return new AGIServer(_0x173afe,_0x53acdc,_0x497d61);};
\ No newline at end of file
index 31bb18f..c08c31a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed3c=['getSound','getSoundById','getSoundPath','save_name','getMailAccount','sendMailMessage','getIntervals','getIntervalById','IntervalId','map','Intervals','interval','format','%s/sounds/converted/%s','getQueryOdbc','open','info','query','Error\x20executing\x20query\x20%s','close','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','getSmsAccountById','createSmsMessage','createSquareDetailsReport','label','arg_1','createSquareRecording','uniqueid','callerid','calleridname','context','priority','accountcode','dnid','file','createSquareMessage','createCmContact','isNil','isEmpty','lastName','phone','scheduledAt','Callback\x20scheduled\x20at\x20','toString','callback_priority','getPause','agent','error','agentUnpause','agentLogout','agentLogin','internal','%s/%s@from-sip/n','LOCAL','exec','trim','replace','googleCloudTTS','apiKey','text','languageCode','en-US','ssmlGender','MALE','audioEncoding','googleTTS','url','timeout','number','includes','POST','PUT','method','toUpperCase','body','parse','rawBody','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','headers','rawHeaders','computedVariables','sync','uri','render','stringify','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','message','options','googleDialogflow','dialogflow_language','googleDialogflowV2','dialogflowV2_project_id','client_email','private_key','dialogflowV2_language','sestekNDA','ispeechTTS','key','ispeech_tts_language','ispeechASR','isConfigured','model','awsPolly','aws_polly_voice','Amy','aws_text_type','awsLex','aws_access_key_id','aws_secret_access_key','aws_lex_region','aws_bot_name','googleASR','google_asr_language','tildeASR','appid','clear','agicommand','clone','hasOwnProperty','isString','replaceObjectAllVariables','recursiveNodeIndex','isArray','length','replaceAllVariables','saveRestApiResult','isPlainObject','%s.%s','setVariable','split','replaceAll','extra','getAndSetVariable','getVariable','result','maxRetry','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','noop','Executed\x20command\x20MRCPSynth\x20%s','mrcprecog','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','grammar','MRCPRecog','RECOG_CONFIDENCE()','RECOG_INPUT()','MRCP_RECOG_TRANSCRIPT','RECOG_INSTANCE()','MRCP_RECOG_INSTANCE','Executed\x20command\x20MRCPRecog\x20%s','agi','Enter\x20in\x20AGI\x20(%s)\x20block','command','answer','callback','Enter\x20in\x20CALLBACK\x20(%s)\x20block','list_id','no\x20list\x20selected','delay','add','minutes','custom_app','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','application','Executed\x20command\x20%s\x20%s','lumenvoxtts','no\x20text\x20configured','MRCPSynth','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','lumenvoxasr','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','no\x20grammar\x20configured','LUMENVOX_ASR_CONFIDENCE','sestekasr','SESTEK_ASR_TRANSCRIPT','SESTEK_ASR_INSTANCE','database','Enter\x20in\x20DATABASE\x20(%s)\x20block','odbc_id','no\x20database\x20selected','no\x20odbc\x20database\x20found','no\x20query\x20configured','query:\x20%s','variable_id','no\x20variable\x20selected\x20for\x20the\x20result','forEach','keys','%s[%s][%s]','%s_ROWS_COUNT','variable\x20%s\x20set','debug','no\x20user\x20selected','sip_id','DIAL','SIP/%s','opts','Executed\x20command\x20%s','dialogflow','no\x20key\x20configured','Trying\x20Dialogflow:\x20%s','DIALOGFLOW_%s','speech','out','Dialogflow\x20Result\x20%s','dialogflowV2','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','no\x20client_email\x20configured','no\x20private_key\x20configured','no\x20anguage\x20configured','bot','Trying\x20DialogflowV2:\x20%s','providerResponse','DialogflowV2\x20Result\x20%s','DialogflowV2\x20is\x20unreachable','sesteknda','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','no\x20ndauth\x20url\x20configured','username','no\x20username\x20configured','password','SESTEK_NDA_%s','audiofile','Sestek\x20NDA\x20%s\x20file\x20created','unlink','SestekNDA\x20Result\x20%s','SestekNDA\x20is\x20unreachable','end','ext_dial','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block','trunk_id','no\x20trunk\x20selected','no\x20trunk\x20found','trunk_name','SIP/%s/%s','Enter\x20in\x20FINALLY\x20(%s)\x20block','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','retry','file_id','no\x20file\x20audio\x20found','response','test','no\x20variable\x20found','hiddendigitsnum','generate','hiddendigitspos','first','substr','getsecretdigits','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','goal','Enter\x20in\x20GOAL\x20(%s)\x20block','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','no\x20valid\x20credentials\x20configured','aws\x20Polly\x20%s\x20file\x20created','streamFile','.wav','awslex','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','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','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','wav','%s/recordings/%s','beep','NOBEEP','recordFile','google\x20%s\x20file\x20created','GOOGLE_ASR_%s','GoogleASR\x20Result\x20%s','Enter\x20in\x20TILDEASR\x20(%s)\x20block','no\x20appsecret\x20configured','intKey','tilde\x20%s\x20file\x20created','TILDE_ASR_%s','TildeASR\x20Result\x20%s','gotoc','Enter\x20in\x20GOTO\x20(%s)\x20block','continueAt','extension','gotoif','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','true','EVAL\x20CONDITION\x20%s\x20%s','false','gotoiftime','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','interval_id','no\x20interval\x20configured','no\x20intervals\x20found','IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','hangup','Enter\x20in\x20HANGUP\x20(%s)\x20block','ispeechasr','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','ispeech\x20%s\x20file\x20created','IspeechASR\x20Result\x20%s','ispeechtts','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','Trying\x20ispeech\x20TTS\x20%s','ispeech\x20TTS\x20is\x20unreachable','login','Enter\x20in\x20LOGIN\x20(%s)\x20block','findBy','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','Enter\x20in\x20LOGOUT\x20(%s)\x20block','no\x20find\x20by\x20configured','FIND\x20AGENT\x20%s\x20BY\x20%s','failure','math','Enter\x20in\x20MATH\x20(%s)\x20block','operation','math\x20%s','%s[%s]','variable\x20%s[key]\x20set','menu','no\x20file\x20audio\x20selected','digit','Enter\x20in\x20NOOP\x20(%s)\x20block','output','pause','pause_id','agentPause','PLAYBACK','queue','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','no\x20queue\x20selected','indexOf','XMCS-QUEUE','macro','gosub','position','Enter\x20in\x20RECORD\x20(%s)\x20block','recordingFormat','RECORDING_SAVENAME','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','restapi','Enter\x20in\x20RESTAPI\x20(%s)\x20block','no\x20url\x20configured','restAPI','Response:','statusCode','200','%s_STATUS_MESSAGE','statusMessage','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','sayDigits','digits','saynumber','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','sayNumber','sayphonetic','sayPhonetic','sendMail','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','account_id','no\x20mail\x20account\x20configured','Smtp','no\x20mail\x20account\x20found','\x22%s\x22\x20<%s>','email','bcc','subject','template_id','Trying\x20SendMail\x20with\x20account\x20%s','smtpOptions','sendFax','Enter\x20in\x20SENDFAX\x20(%s)\x20block','SENDFAX\x20block\x20not\x20implemented','sendSMS','Enter\x20in\x20SENDSMS\x20(%s)\x20block','no\x20sms\x20account\x20configured','sms_account_id','sms_text','sendSMS\x20message','Trying\x20SendSMS\x20with\x20account\x20%s','Sms\x20message\x20added\x20to\x20outgoing\x20process','Enter\x20in\x20SET\x20(%s)\x20block','no\x20variable\x20selected','variable_value','start','Answer','subproject','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','project_id','no\x20subproject\x20selected','getSquareProject','no\x20subproject\x20found\x20with\x20id\x20%d','project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project','host','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','shellCommand','sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s','sh\x20command:\x20%s\x20result\x20no\x20stored','google_cloud_tts','Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block','no\x20apiKey\x20configured','Trying\x20Google\x20Cloud\x20TTS\x20%s','Google\x20Cloud\x20TTS\x20%s\x20file\x20created','Google\x20Cloud\x20TTS\x20is\x20unreachable','tts','Google\x20TTS\x20%s\x20file\x20created','Google\x20TTS\x20is\x20unreachable','unpause','voicemail','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','VOICEMAIL','mailbox','vswitch','Enter\x20in\x20SWITCH\x20(%s)\x20block','exports','util','lodash','shelljs','odbc','moment','mustache','request-promise','../../config/environment','../../config/environment/shared','./scripts','/var/opt/motion2/server/files','getdigits','channel','rpc','mailRpc','prototype','then','name','catch','getVoiceQueue','getVoiceQueueById','getSquareProjectById','getSquareOdbc','getSquareOdbcById','dsn','getUser','getUserById','getTrunk'];(function(_0x53a85b,_0x43dbc8){var _0x50b2fd=function(_0x190124){while(--_0x190124){_0x53a85b['push'](_0x53a85b['shift']());}};_0x50b2fd(++_0x43dbc8);}(_0xed3c,0x1a6));var _0xced3=function(_0x180fc6,_0x5f3c92){_0x180fc6=_0x180fc6-0x0;var _0x4dbf08=_0xed3c[_0x180fc6];return _0x4dbf08;};'use strict';var fs=require('fs');var util=require(_0xced3('0x0'));var _=require(_0xced3('0x1'));var sh=require(_0xced3('0x2'));var odbc=require(_0xced3('0x3'))();var rs=require('randomstring');var moment=require(_0xced3('0x4'));var Mustache=require(_0xced3('0x5'));var rp=require(_0xced3('0x6'));var logger=require('../../config/logger')('agi');var config=require(_0xced3('0x7'));var shared=require(_0xced3('0x8'));var scripts=require(_0xced3('0x9'));var FILES_PATH=_0xced3('0xa');var recursiveMapAttributes=['rawHeaders','rawBody'];var verticesWithRetry=['menu',_0xced3('0xb'),'getsecretdigits'];var AGIVertices=function(_0x5bc7a7,_0x4be020,_0x19a727){this[_0xced3('0xc')]=_0x5bc7a7;this[_0xced3('0xd')]=_0x4be020;this[_0xced3('0xe')]=_0x19a727;};AGIVertices[_0xced3('0xf')]['getVariable']=function(_0x36ea7f,_0x32a95d){this[_0xced3('0xd')]['getVariableById'](_0x36ea7f)[_0xced3('0x10')](function(_0x19b8c2){_0x32a95d(null,_0x19b8c2?_0x19b8c2[_0xced3('0x11')]:![]);})[_0xced3('0x12')](function(_0x457caf){_0x32a95d(_0x457caf);});};AGIVertices[_0xced3('0xf')][_0xced3('0x13')]=function(_0x5aadb6,_0x65bb58){this['rpc'][_0xced3('0x14')](_0x5aadb6)[_0xced3('0x10')](function(_0x20d099){_0x65bb58(null,_0x20d099?_0x20d099[_0xced3('0x11')]:![]);})['catch'](function(_0x146a21){_0x65bb58(_0x146a21);});};AGIVertices[_0xced3('0xf')]['getSquareProject']=function(_0x3b5962,_0x37e2d5){this[_0xced3('0xd')][_0xced3('0x15')](_0x3b5962)['then'](function(_0x4569af){_0x37e2d5(null,_0x4569af?_0x4569af['name']:![]);})[_0xced3('0x12')](function(_0x4480a6){_0x37e2d5(_0x4480a6);});};AGIVertices[_0xced3('0xf')][_0xced3('0x16')]=function(_0x44143f,_0x688c97){this[_0xced3('0xd')][_0xced3('0x17')](_0x44143f)[_0xced3('0x10')](function(_0x17c011){_0x688c97(null,_0x17c011?_0x17c011[_0xced3('0x18')]:![]);})['catch'](function(_0x5b8b1f){_0x688c97(_0x5b8b1f);});};AGIVertices['prototype'][_0xced3('0x19')]=function(_0x342b9e,_0x21e074){this['rpc'][_0xced3('0x1a')](_0x342b9e)[_0xced3('0x10')](function(_0x526854){_0x21e074(null,_0x526854?_0x526854['name']:![]);})[_0xced3('0x12')](function(_0x101708){_0x21e074(_0x101708);});};AGIVertices[_0xced3('0xf')][_0xced3('0x1b')]=function(_0x50f7c1,_0x1905a3){this[_0xced3('0xd')]['getTrunkById'](_0x50f7c1)[_0xced3('0x10')](function(_0x4da7ce){_0x1905a3(null,_0x4da7ce?_0x4da7ce[_0xced3('0x11')]:![]);})[_0xced3('0x12')](function(_0x3b728d){_0x1905a3(_0x3b728d);});};AGIVertices[_0xced3('0xf')][_0xced3('0x1c')]=function(_0x502cf1,_0x5454c0){var _0x36b1fe=this;this['rpc'][_0xced3('0x1d')](_0x502cf1)[_0xced3('0x10')](function(_0x4a8e85){_0x5454c0(null,_0x4a8e85?_0x36b1fe[_0xced3('0x1e')](_0x4a8e85[_0xced3('0x1f')]):![]);})[_0xced3('0x12')](function(_0x1032d6){_0x5454c0(_0x1032d6);});};AGIVertices[_0xced3('0xf')][_0xced3('0x20')]=function(_0x895a32,_0x41d003){this[_0xced3('0xd')]['getMailAccountById'](_0x895a32)[_0xced3('0x10')](function(_0x1b8baa){_0x41d003(null,_0x1b8baa?_0x1b8baa:![]);})[_0xced3('0x12')](function(_0x5867af){_0x41d003(_0x5867af);});};AGIVertices[_0xced3('0xf')][_0xced3('0x21')]=function(_0x41ce44,_0x4f2439,_0xc8e557){this[_0xced3('0xe')][_0xced3('0x21')](_0x41ce44,_0x4f2439)[_0xced3('0x10')](function(){_0xc8e557(null);})[_0xced3('0x12')](function(_0x407a24){_0xc8e557(_0x407a24);});};AGIVertices[_0xced3('0xf')][_0xced3('0x22')]=function(_0x45897d,_0x25a408){this[_0xced3('0xd')][_0xced3('0x23')](_0x45897d)[_0xced3('0x10')](function(_0x565e70){if(_0x565e70){if(_0x565e70[_0xced3('0x24')]){_0x25a408(null,[_0x565e70['interval']]);}else{_0x25a408(null,_[_0xced3('0x25')](_0x565e70[_0xced3('0x26')],_0xced3('0x27')));}}else{_0x25a408(null,![]);}})[_0xced3('0x12')](function(_0x29f375){_0x25a408(_0x29f375);});};AGIVertices[_0xced3('0xf')][_0xced3('0x1e')]=function(_0x340be1){return util[_0xced3('0x28')](_0xced3('0x29'),FILES_PATH,_0x340be1);};AGIVertices['prototype'][_0xced3('0x2a')]=function(_0x26a435,_0x53e401,_0x468c21){odbc[_0xced3('0x2b')](_0x26a435,function(_0x1b5956){if(_0x1b5956){logger['error']('Error\x20getting\x20ODBC\x20connection\x20%s',_0x1b5956);_0x468c21(_0x1b5956);}else{logger[_0xced3('0x2c')]('ODBC\x20connection\x20successfully');odbc[_0xced3('0x2d')](_0x53e401,function(_0x413da3,_0x5f0ab8){if(_0x413da3){logger[_0xced3('0x2c')](_0xced3('0x2e'),_0x53e401);_0x468c21(_0x413da3);}else{logger[_0xced3('0x2c')]('Query\x20executed\x20correctly\x20%s',_0x53e401);odbc[_0xced3('0x2f')](function(_0x499b77){if(_0x499b77){logger['error'](_0xced3('0x30'),_0x499b77);}_0x468c21(null,_0x5f0ab8);});}});}});};AGIVertices[_0xced3('0xf')][_0xced3('0x31')]=function(_0x4e6926,_0xb2cf20){this[_0xced3('0xd')][_0xced3('0x32')](_0x4e6926)[_0xced3('0x10')](function(_0x28506e){_0xb2cf20(null,_0x28506e?_0x28506e:![]);})[_0xced3('0x12')](function(_0x30e890){_0xb2cf20(_0x30e890);});};AGIVertices[_0xced3('0xf')][_0xced3('0x33')]=function(_0x3eca11,_0x2b4a18){this[_0xced3('0xd')][_0xced3('0x33')](_0x3eca11)[_0xced3('0x10')](function(_0x1ced3a){_0x2b4a18(null,_0x1ced3a);})['catch'](function(_0x4279a3){_0x2b4a18(_0x4279a3);});};AGIVertices[_0xced3('0xf')][_0xced3('0x34')]=function(_0x1a6c1f,_0x1de086,_0x446f34){this[_0xced3('0xd')][_0xced3('0x34')]({'uniqueid':this[_0xced3('0xc')]['uniqueid'],'node':_0x1a6c1f[_0xced3('0x35')],'application':_0x1a6c1f['agicommand'],'data':_0x1de086||null,'project_name':this[_0xced3('0xc')][_0xced3('0x36')],'callerid':this[_0xced3('0xc')]['callerid']})[_0xced3('0x10')](function(_0x34f24a){if(_0x446f34){_0x446f34(null,_0x34f24a);}})[_0xced3('0x12')](function(_0x26b8ac){if(_0x446f34){_0x446f34(_0x26b8ac);}});};AGIVertices['prototype'][_0xced3('0x37')]=function(_0x133b47,_0xbf8cbc,_0x26d16c,_0x198aad){this['rpc'][_0xced3('0x37')]({'uniqueid':this[_0xced3('0xc')][_0xced3('0x38')],'callerid':this[_0xced3('0xc')][_0xced3('0x39')],'calleridname':this[_0xced3('0xc')][_0xced3('0x3a')],'context':this['channel'][_0xced3('0x3b')],'extension':this[_0xced3('0xc')]['extension'],'priority':this['channel'][_0xced3('0x3c')],'accountcode':this['channel'][_0xced3('0x3d')],'dnid':this[_0xced3('0xc')][_0xced3('0x3e')],'projectName':this[_0xced3('0xc')][_0xced3('0x36')],'saveName':_0xbf8cbc,'filename':_0x133b47[_0xced3('0x3f')]||_0xbf8cbc,'savePath':_0x26d16c})[_0xced3('0x10')](function(_0x10cc6c){_0x198aad(null,_0x10cc6c);})[_0xced3('0x12')](function(_0x5b3529){_0x198aad(_0x5b3529);});};AGIVertices[_0xced3('0xf')][_0xced3('0x40')]=function(_0x2aa876,_0x469b6,_0x24ee62,_0xe43a54,_0x4bfb2c){this[_0xced3('0xd')][_0xced3('0x40')]({'uniqueid':this[_0xced3('0xc')][_0xced3('0x38')],'body':_0x2aa876,'direction':_0x469b6,'providerName':_0x24ee62,'providerResponse':_0xe43a54})[_0xced3('0x10')](function(_0x14dbfe){if(_0x4bfb2c){_0x4bfb2c(null,_0x14dbfe);}})[_0xced3('0x12')](function(_0x120439){if(_0x4bfb2c){_0x4bfb2c(_0x120439);}});};AGIVertices[_0xced3('0xf')][_0xced3('0x41')]=function(_0x257ff0,_0x3e2a19){this['rpc'][_0xced3('0x41')]({'firstName':_['isEmpty'](_0x257ff0[_0xced3('0x11')])||_[_0xced3('0x42')](_0x257ff0[_0xced3('0x11')])?'callback_'+Math['random']():_0x257ff0[_0xced3('0x11')],'lastName':_[_0xced3('0x43')](_0x257ff0['lastName'])||_[_0xced3('0x42')](_0x257ff0['lastName'])?null:_0x257ff0[_0xced3('0x44')],'phone':_0x257ff0[_0xced3('0x45')],'ListId':_0x257ff0['list_id'],'scheduledat':_0x257ff0[_0xced3('0x46')],'callbackUniqueid':this[_0xced3('0xc')][_0xced3('0x38')],'tags':'callback','description':_0xced3('0x47')+_0x257ff0['scheduledAt'][_0xced3('0x48')](),'priority':_0x257ff0[_0xced3('0x49')]})[_0xced3('0x10')](function(_0x168c36){_0x3e2a19(null,_0x168c36);})[_0xced3('0x12')](function(_0xd3c7b9){_0x3e2a19(_0xd3c7b9);});};AGIVertices[_0xced3('0xf')][_0xced3('0x4a')]=function(_0x1b2592,_0x24ca7d){this[_0xced3('0xd')]['getPauseById'](_0x1b2592)[_0xced3('0x10')](function(_0x3de35d){_0x24ca7d(null,_0x3de35d?_0x3de35d[_0xced3('0x11')]:![]);})[_0xced3('0x12')](function(_0x21a22d){_0x24ca7d(_0x21a22d);});};AGIVertices[_0xced3('0xf')]['agentPause']=function(_0x9db425,_0x171081,_0x21ea6a){var _0x440a0f={'role':_0xced3('0x4b')};_0x440a0f[_0x9db425]=this[_0xced3('0xc')]['callerid'];this[_0xced3('0xd')]['agentPause'](_0x440a0f,_0x171081,this[_0xced3('0xc')]['uniqueid'])[_0xced3('0x10')](function(_0x12a961){_0x21ea6a(null,_['isNil'](_0x12a961)?![]:!![]);})[_0xced3('0x12')](function(_0xce41d9){logger[_0xced3('0x4c')](_0xce41d9);_0x21ea6a(null,![]);});};AGIVertices[_0xced3('0xf')][_0xced3('0x4d')]=function(_0x21eeec,_0x2318a0){var _0x206dd3={'role':_0xced3('0x4b')};_0x206dd3[_0x21eeec]=this[_0xced3('0xc')][_0xced3('0x39')];this[_0xced3('0xd')][_0xced3('0x4d')](_0x206dd3)['then'](function(_0x996530){_0x2318a0(null,_[_0xced3('0x42')](_0x996530)?![]:!![]);})[_0xced3('0x12')](function(_0x353a8e){logger['error'](_0x353a8e);_0x2318a0(null,![]);});};AGIVertices[_0xced3('0xf')][_0xced3('0x4e')]=function(_0x404241,_0x373f31){var _0x2a62f5={'role':_0xced3('0x4b')};_0x2a62f5[_0x404241]=this[_0xced3('0xc')]['callerid'];this[_0xced3('0xd')][_0xced3('0x4e')](_0x2a62f5)['then'](function(_0x1630d7){_0x373f31(null,_[_0xced3('0x42')](_0x1630d7)?![]:!![]);})[_0xced3('0x12')](function(_0x2ac060){logger['error'](_0x2ac060);_0x373f31(null,![]);});};AGIVertices[_0xced3('0xf')][_0xced3('0x4f')]=function(_0x19ae45,_0x3eb9dd){var _0x3992d2={'role':_0xced3('0x4b')};_0x3992d2[_0x19ae45]=this[_0xced3('0xc')][_0xced3('0x39')];var _0x3f3e55=_0x19ae45!=_0xced3('0x50')?util['format'](_0xced3('0x51'),_0xced3('0x52'),this['channel']['callerid']):undefined;this[_0xced3('0xd')]['agentLogin'](_0x3992d2,_0x3f3e55)[_0xced3('0x10')](function(_0x256216){_0x3eb9dd(null,_['isNil'](_0x256216)?![]:!![]);})[_0xced3('0x12')](function(_0x40c376){logger['error'](_0x40c376);_0x3eb9dd(null,![]);});};AGIVertices[_0xced3('0xf')]['shellCommand']=function(_0x39eead,_0x58b66b){sh[_0xced3('0x53')](_[_0xced3('0x54')](_0x39eead),function(_0x11f393,_0x4f2035){var _0x189da2=_0x4f2035[_0xced3('0x55')](/(\r\n|\n|\r)/gm,'');_0x58b66b(null,_0x189da2);});};AGIVertices[_0xced3('0xf')]['googleCloudTTS']=function(_0x3f8d6f,_0x1abe1a){scripts[_0xced3('0x56')](_0x3f8d6f[_0xced3('0x57')],_0x3f8d6f['google_cloud_tts_text_type']||'text',_0x3f8d6f[_0xced3('0x58')],_0x3f8d6f[_0xced3('0x59')]||_0xced3('0x5a'),_0x3f8d6f[_0xced3('0x5b')]||_0xced3('0x5c'),_0x3f8d6f[_0xced3('0x5d')]||'MP3')[_0xced3('0x10')](function(_0x5c7f04){_0x1abe1a(null,_0x5c7f04);})[_0xced3('0x12')](function(_0x28bcfa){_0x1abe1a(_0x28bcfa);});};AGIVertices[_0xced3('0xf')][_0xced3('0x5e')]=function(_0x569055,_0x24d0ad){scripts[_0xced3('0x5e')](_0x569055['text'],_0x569055['google_tts_language']||'en',0x1)[_0xced3('0x10')](function(_0x14818f){_0x24d0ad(null,_0x14818f);})[_0xced3('0x12')](function(_0x138e25){_0x24d0ad(_0x138e25);});};AGIVertices[_0xced3('0xf')]['restAPI']=function(_0x9acc9f,_0x1bde2f){var _0x34d8f5={'uri':_0x9acc9f[_0xced3('0x5f')],'method':_0x9acc9f['method'],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x9acc9f[_0xced3('0x60')])===_0xced3('0x61')&&parseInt(_0x9acc9f[_0xced3('0x60')])>=0x1?parseInt(_0x9acc9f[_0xced3('0x60')])*0x3e8:0x5*0x3e8};if(_[_0xced3('0x62')]([_0xced3('0x63'),_0xced3('0x64')],_0x34d8f5[_0xced3('0x65')][_0xced3('0x66')]())){try{_0x34d8f5[_0xced3('0x67')]=_0x9acc9f['rawBody']?JSON[_0xced3('0x68')](_0x9acc9f[_0xced3('0x69')]):{};}catch(_0x498ea9){logger[_0xced3('0x4c')](_0xced3('0x6a'),_0x498ea9);}}try{_0x34d8f5[_0xced3('0x6b')]=_0x9acc9f[_0xced3('0x6c')]?JSON[_0xced3('0x68')](_0x9acc9f['rawHeaders']):{};}catch(_0x165271){logger[_0xced3('0x4c')]('An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function',_0x165271);}if(_0x9acc9f[_0xced3('0x6d')]){try{var _0xab85c0=require(_0x9acc9f[_0xced3('0x6d')])[_0xced3('0x6e')](this,_0x34d8f5);_0x34d8f5[_0xced3('0x6f')]=Mustache[_0xced3('0x70')](_0x9acc9f['url'],_0xab85c0,{},['$$','$$']);if(_0x34d8f5[_0xced3('0x6b')]){_0x34d8f5[_0xced3('0x6b')]=JSON[_0xced3('0x68')](Mustache[_0xced3('0x70')](JSON[_0xced3('0x71')](_0x34d8f5[_0xced3('0x6b')]),_0xab85c0,{},['$$','$$']));}if(_0x34d8f5['body']){_0x34d8f5['body']=JSON[_0xced3('0x68')](Mustache[_0xced3('0x70')](JSON[_0xced3('0x71')](_0x34d8f5[_0xced3('0x67')]),_0xab85c0,{},['$$','$$']));}}catch(_0x86551){logger[_0xced3('0x4c')](_0xced3('0x72'),_0x86551);}}rp(_0x34d8f5)['then'](function(_0x3d64ec){var _0x290ca3={'statusCode':_0x3d64ec['statusCode']||0xc8,'statusMessage':_0x3d64ec['statusMessage']||'OK','headers':_0x3d64ec[_0xced3('0x6b')]||{},'body':_0x3d64ec[_0xced3('0x67')]||{}};_0x1bde2f(null,_0x290ca3);})[_0xced3('0x12')](function(_0x333041){var _0x2e7c1c={'statusCode':_0x333041['statusCode']||0x1f4,'statusMessage':_0x333041[_0xced3('0x73')]||'500\x20-\x20Internal\x20Server\x20Error','headers':_0x333041[_0xced3('0x74')][_0xced3('0x6b')]||{},'body':_0x333041[_0xced3('0x74')][_0xced3('0x67')]||{}};_0x1bde2f(null,_0x2e7c1c);});};AGIVertices[_0xced3('0xf')]['googleDialogflow']=function(_0x1d819c,_0x8b2477){scripts[_0xced3('0x75')](this[_0xced3('0xc')]['uniqueid'],_0x1d819c['key'],_0x1d819c[_0xced3('0x58')],_0x1d819c[_0xced3('0x76')]||'en')[_0xced3('0x10')](function(_0x7adbf6){_0x8b2477(null,_0x7adbf6);})[_0xced3('0x12')](function(_0x2f4a5b){_0x8b2477(_0x2f4a5b);});};AGIVertices[_0xced3('0xf')][_0xced3('0x77')]=function(_0x5a8763,_0x4e5874){scripts[_0xced3('0x77')](this[_0xced3('0xc')][_0xced3('0x38')],_0x5a8763[_0xced3('0x78')],_0x5a8763[_0xced3('0x79')],_0x5a8763[_0xced3('0x7a')],_0x5a8763[_0xced3('0x58')],_0x5a8763[_0xced3('0x7b')]||'en')[_0xced3('0x10')](function(_0x3b8160){_0x4e5874(null,_0x3b8160);})[_0xced3('0x12')](function(_0x4da239){_0x4e5874(_0x4da239);});};AGIVertices[_0xced3('0xf')]['sestekNDA']=function(_0x325a37,_0x278ecc){scripts[_0xced3('0x7c')](this[_0xced3('0xc')],_0x325a37)[_0xced3('0x10')](function(_0x39fdf4){_0x278ecc(null,_0x39fdf4);})[_0xced3('0x12')](function(_0x47480a){_0x278ecc(_0x47480a);});};AGIVertices[_0xced3('0xf')][_0xced3('0x7d')]=function(_0xb1c2c0,_0x3869f3){scripts[_0xced3('0x7d')](_0xb1c2c0[_0xced3('0x7e')],_0xb1c2c0[_0xced3('0x58')],_0xb1c2c0[_0xced3('0x7f')]||_0xced3('0x5a'),_0xb1c2c0['speed'])['then'](function(_0x4e3bcf){_0x3869f3(null,_0x4e3bcf);})[_0xced3('0x12')](function(_0x32d287){_0x3869f3(_0x32d287);});};AGIVertices[_0xced3('0xf')][_0xced3('0x80')]=function(_0x35133c,_0x1f9e9c,_0x587891){scripts[_0xced3('0x80')](_0x1f9e9c,_0x35133c[_0xced3('0x7e')],_0x35133c['ispeech_asr_language']||'en-US',this[_0xced3('0x81')](_0x35133c[_0xced3('0x82')])?_0x35133c[_0xced3('0x82')]:undefined)[_0xced3('0x10')](function(_0x3e5f7f){_0x587891(null,_0x3e5f7f);})[_0xced3('0x12')](function(_0x4f6515){_0x587891(_0x4f6515);});};AGIVertices[_0xced3('0xf')]['awsPolly']=function(_0x1633e1,_0x3d9158){scripts[_0xced3('0x83')](_0x1633e1['aws_access_key_id'],_0x1633e1['aws_secret_access_key'],_0x1633e1['aws_polly_region'],_0x1633e1[_0xced3('0x84')]||_0xced3('0x85'),_0x1633e1['text'],_0x1633e1[_0xced3('0x86')]||_0xced3('0x58'))['then'](function(_0x11a1b9){_0x3d9158(null,_0x11a1b9);})[_0xced3('0x12')](function(_0x16d946){_0x3d9158(_0x16d946);});};AGIVertices[_0xced3('0xf')][_0xced3('0x87')]=function(_0x434bbc,_0x442dbf){scripts[_0xced3('0x87')](this['channel'][_0xced3('0x38')],_0x434bbc[_0xced3('0x88')],_0x434bbc[_0xced3('0x89')],_0x434bbc[_0xced3('0x8a')],_0x434bbc[_0xced3('0x58')],_0x434bbc[_0xced3('0x8b')])[_0xced3('0x10')](function(_0x27c429){_0x442dbf(null,_0x27c429);})[_0xced3('0x12')](function(_0x36e738){_0x442dbf(_0x36e738);});};AGIVertices[_0xced3('0xf')][_0xced3('0x8c')]=function(_0x425057,_0xfe27a5,_0x46f536){scripts['googleASR'](_0xfe27a5,_0x425057[_0xced3('0x7e')],_0x425057[_0xced3('0x8d')]||_0xced3('0x5a'))[_0xced3('0x10')](function(_0x2c59f5){_0x46f536(null,_0x2c59f5);})['catch'](function(_0x4d5fc7){_0x46f536(_0x4d5fc7);});};AGIVertices[_0xced3('0xf')][_0xced3('0x8e')]=function(_0x2796fd,_0xbc64b,_0x81b3bc){scripts[_0xced3('0x8e')](_0xbc64b,_0x2796fd[_0xced3('0x8f')],_0x2796fd['appsecret'],_0x2796fd['uri'])[_0xced3('0x10')](function(_0x4a720b){_0x81b3bc(null,_0x4a720b);})[_0xced3('0x12')](function(_0x229cba){_0x81b3bc(_0x229cba);});};AGIVertices[_0xced3('0xf')][_0xced3('0x90')]=function(_0x2d0b41){var _0xca87c4=_[_0xced3('0x62')](verticesWithRetry,_0x2d0b41[_0xced3('0x91')])?_0x2d0b41:_[_0xced3('0x92')](_0x2d0b41);for(var _0x2b688c in _0xca87c4){if(_0xca87c4[_0xced3('0x93')](_0x2b688c)){if(_0xca87c4[_0x2b688c]&&_[_0xced3('0x94')](_0xca87c4[_0x2b688c])){if(_[_0xced3('0x62')](recursiveMapAttributes,_0x2b688c)){_0xca87c4[_0x2b688c]=this[_0xced3('0x95')](_0xca87c4[_0x2b688c]);}else{_0xca87c4[_0x2b688c]=this['replaceAllVariables'](_0xca87c4[_0x2b688c]);}}}}return _0xca87c4;};AGIVertices['prototype'][_0xced3('0x96')]=function(_0x5dca1c){for(var _0x3daacf in _0x5dca1c){if(_0x5dca1c['hasOwnProperty'](_0x3daacf)){if(_['isPlainObject'](_0x5dca1c[_0x3daacf])){this[_0xced3('0x96')](_0x5dca1c[_0x3daacf]);}else if(_[_0xced3('0x97')](_0x5dca1c[_0x3daacf])){for(var _0x3357a4=0x0;_0x3357a4<_0x5dca1c[_0x3daacf][_0xced3('0x98')];_0x3357a4++){this['recursiveNodeIndex'](_0x5dca1c[_0x3daacf][_0x3357a4]);}}else if(_['isString'](_0x5dca1c[_0x3daacf])){_0x5dca1c[_0x3daacf]=this[_0xced3('0x99')](_0x5dca1c[_0x3daacf]);}}}};AGIVertices[_0xced3('0xf')][_0xced3('0x9a')]=function(_0x5448d5,_0x3de2c6){for(var _0x50cc83 in _0x5448d5){if(_0x5448d5['hasOwnProperty'](_0x50cc83)){if(_[_0xced3('0x9b')](_0x5448d5[_0x50cc83])){if(!_[_0xced3('0x43')](_0x5448d5[_0x50cc83])){this[_0xced3('0x9a')](_0x5448d5[_0x50cc83],util[_0xced3('0x28')](_0xced3('0x9c'),_0x3de2c6,_0x50cc83));}}else if(_[_0xced3('0x97')](_0x5448d5[_0x50cc83])){for(var _0x420c12=0x0;_0x420c12<_0x5448d5[_0x50cc83][_0xced3('0x98')];_0x420c12++){this['saveRestApiResult'](_0x5448d5[_0x50cc83][_0x420c12],util['format'](_0xced3('0x9c'),_0x3de2c6,_0x50cc83+'['+_0x420c12+']'));}}else{if(!_['isNil'](_0x5448d5[_0x50cc83])){this[_0xced3('0xc')][_0xced3('0x9d')](util['format'](_0xced3('0x9c'),_0x3de2c6,_0x50cc83),_0x5448d5[_0x50cc83]);}}}}};AGIVertices[_0xced3('0xf')][_0xced3('0x95')]=function(_0x40e5a8){try{var _0x7fb3c7=JSON[_0xced3('0x68')](_0x40e5a8);this['recursiveNodeIndex'](_0x7fb3c7);return JSON[_0xced3('0x71')](_0x7fb3c7);}catch(_0x3e265){return this[_0xced3('0x99')](_0x40e5a8);}};AGIVertices[_0xced3('0xf')][_0xced3('0x99')]=function(_0x3a1b54){var _0x5afbec=_0x3a1b54['split']('{');for(var _0x51b895=0x1;_0x51b895<_0x5afbec[_0xced3('0x98')];_0x51b895+=0x1){var _0x2e2303=_0x5afbec[_0x51b895][_0xced3('0x9e')]('}');if(_0x2e2303[_0xced3('0x98')]>0x1){_0x3a1b54=_0x3a1b54[_0xced3('0x9f')]('{'+_0x2e2303[0x0]+'}',this['channel']['getVariable'](_0x2e2303[0x0])[_0xced3('0xa0')]||_0x2e2303[0x0]);}}if(_0x5afbec[_0xced3('0x98')]===0x1){return _0x3a1b54['toString']();}return this['replaceAllVariables'](_0x3a1b54);};AGIVertices[_0xced3('0xf')][_0xced3('0xa1')]=function(_0x28190,_0xbeffe6){var _0x2211ed=this[_0xced3('0xc')][_0xced3('0xa2')](_0x28190);if(_0x2211ed[_0xced3('0xa3')]===-0x1){return _0x2211ed;}logger[_0xced3('0x2c')](util[_0xced3('0x28')]('The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s',_0xbeffe6,_0x2211ed[_0xced3('0xa0')]));return this[_0xced3('0xc')]['setVariable'](_0xbeffe6,_0x2211ed[_0xced3('0xa0')]);};AGIVertices[_0xced3('0xf')][_0xced3('0x81')]=function(_0x268c72){return _0x268c72&&_0x268c72!=='0'&&_0x268c72!=='-1'&&_0x268c72!=='';};AGIVertices[_0xced3('0xf')][_0xced3('0xa4')]=function(_0x1ab60d){this[_0xced3('0x34')]['sync'](this,_0x1ab60d,'-');_0x1ab60d['retry']=_0x1ab60d[_0xced3('0xa4')];return{'code':0xc8,'result':'-'};};AGIVertices[_0xced3('0xf')]['mrcpsynth']=function(_0x3a39e9){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0xa5'),_0x3a39e9[_0xced3('0x35')]));if(!this[_0xced3('0x81')](_0x3a39e9['text'])){return this[_0xced3('0xc')]['noop']('no\x20text\x20configured');}var _0x2ed48f='\x22'+_0x3a39e9[_0xced3('0x58')]+'\x22';if(this[_0xced3('0x81')](_0x3a39e9[_0xced3('0x74')])){_0x2ed48f+=','+_0x3a39e9['options'];}var _0x177715=this[_0xced3('0xc')]['exec']('MRCPSynth',_0x2ed48f);if(_0x177715['result']===-0x1){return _0x177715;}return this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0xa7'),_0x2ed48f));};AGIVertices[_0xced3('0xf')][_0xced3('0xa8')]=function(_0x45ee35){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0xa9'),_0x45ee35['label']));if(!this['isConfigured'](_0x45ee35[_0xced3('0xaa')])){return this[_0xced3('0xc')]['noop']('no\x20grammar\x20configured');}var _0x41b53e=_0x45ee35[_0xced3('0xaa')];if(this[_0xced3('0x81')](_0x45ee35['options'])){_0x41b53e+=','+_0x45ee35[_0xced3('0x74')];}var _0x57e8ce=this[_0xced3('0xc')]['exec'](_0xced3('0xab'),_0x41b53e);if(_0x57e8ce['result']===-0x1){return _0x57e8ce;}var _0x19d0f8=this[_0xced3('0xa1')](_0xced3('0xac'),'MRCP_RECOG_CONFIDENCE');if(_0x19d0f8['result']===-0x1){return _0x19d0f8;}var _0x30f48c=this[_0xced3('0xa1')](_0xced3('0xad'),_0xced3('0xae'));if(_0x30f48c['result']===-0x1){return _0x30f48c;}var _0x2d5df8=this[_0xced3('0xa1')](_0xced3('0xaf'),_0xced3('0xb0'));if(_0x2d5df8['result']===-0x1){return _0x2d5df8;}return this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0xb1'),_0x41b53e));};AGIVertices[_0xced3('0xf')][_0xced3('0xb2')]=function(_0x1bc88c){logger[_0xced3('0x2c')](util['format'](_0xced3('0xb3'),_0x1bc88c[_0xced3('0x35')]));return this[_0xced3('0xc')][_0xced3('0xb2')]([_0x1bc88c[_0xced3('0xb4')],_0x1bc88c['args']]);};AGIVertices['prototype'][_0xced3('0xb5')]=function(_0x117861){logger[_0xced3('0x2c')](util[_0xced3('0x28')]('Enter\x20in\x20ANSWER\x20(%s)\x20block',_0x117861[_0xced3('0x35')]));if(this['isConfigured'](_0x117861['timeout'])){logger[_0xced3('0x2c')](util[_0xced3('0x28')]('Wait\x20%s\x20seconds\x20before\x20answer',_0x117861[_0xced3('0x60')]));var _0x554dd3=this[_0xced3('0xc')]['wait'](_0x117861[_0xced3('0x60')]);if(_0x554dd3[_0xced3('0xa3')]===-0x1){return _0x554dd3;}}return this[_0xced3('0xc')][_0xced3('0xb5')]();};AGIVertices[_0xced3('0xf')][_0xced3('0xb6')]=function(_0xd6e93c){logger[_0xced3('0x2c')](util['format'](_0xced3('0xb7'),_0xd6e93c[_0xced3('0x35')]));if(!this[_0xced3('0x81')](_0xd6e93c[_0xced3('0xb8')])){return this[_0xced3('0xc')]['error'](_0xd6e93c,_0xced3('0xb9'));}_0xd6e93c[_0xced3('0x46')]=moment();if(this[_0xced3('0x81')](_0xd6e93c[_0xced3('0xba')])){_0xd6e93c[_0xced3('0x46')]=moment()[_0xced3('0xbb')](_0xd6e93c[_0xced3('0xba')],_0xced3('0xbc'));}if(!this['isConfigured'](_0xd6e93c[_0xced3('0x49')])){_0xd6e93c['callback_priority']=0x2;}this[_0xced3('0x41')][_0xced3('0x6e')](this,_0xd6e93c);return this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')]('CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s',_0xd6e93c[_0xced3('0x45')],_0xd6e93c['list_id'],_0xd6e93c[_0xced3('0x46')]));};AGIVertices[_0xced3('0xf')][_0xced3('0xbd')]=function(_0x29db96){logger['info'](util[_0xced3('0x28')](_0xced3('0xbe'),_0x29db96[_0xced3('0x35')]));var _0x583a9d=this[_0xced3('0xc')]['exec'](_0x29db96[_0xced3('0xbf')],_0x29db96['options']);if(_0x583a9d[_0xced3('0xa3')]===-0x1){return _0x583a9d;}return this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0xc0'),_0x29db96['application'],_0x29db96[_0xced3('0x74')]));};AGIVertices['prototype'][_0xced3('0xc1')]=function(_0x10884a){logger[_0xced3('0x2c')](util[_0xced3('0x28')]('Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block',_0x10884a[_0xced3('0x35')]));if(!this[_0xced3('0x81')](_0x10884a['text'])){return this[_0xced3('0xc')][_0xced3('0xa6')](_0xced3('0xc2'));}var _0x3c7f0a='\x22'+_0x10884a[_0xced3('0x58')]+'\x22';if(this[_0xced3('0x81')](_0x10884a[_0xced3('0x74')])){_0x3c7f0a+=','+_0x10884a[_0xced3('0x74')];}var _0x4d3a09=this['channel']['exec'](_0xced3('0xc3'),_0x3c7f0a);if(_0x4d3a09['result']===-0x1){return _0x4d3a09;}return this['channel'][_0xced3('0xa6')](util['format']('Executed\x20command\x20MRCPSynth\x20%s',_0x3c7f0a));};AGIVertices[_0xced3('0xf')]['sestektts']=function(_0x5e80b9){logger[_0xced3('0x2c')](util['format'](_0xced3('0xc4'),_0x5e80b9['label']));if(!this[_0xced3('0x81')](_0x5e80b9[_0xced3('0x58')])){return this[_0xced3('0xc')]['noop']('no\x20text\x20configured');}var _0xc6298e='\x22'+_0x5e80b9[_0xced3('0x58')]+'\x22';if(this[_0xced3('0x81')](_0x5e80b9[_0xced3('0x74')])){_0xc6298e+=','+_0x5e80b9[_0xced3('0x74')];}var _0x2962e4=this['channel'][_0xced3('0x53')](_0xced3('0xc3'),_0xc6298e);if(_0x2962e4[_0xced3('0xa3')]===-0x1){return _0x2962e4;}return this[_0xced3('0xc')]['noop'](util['format'](_0xced3('0xa7'),_0xc6298e));};AGIVertices[_0xced3('0xf')][_0xced3('0xc5')]=function(_0x549d42){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0xc6'),_0x549d42[_0xced3('0x35')]));if(!this['isConfigured'](_0x549d42[_0xced3('0xaa')])){return this[_0xced3('0xc')][_0xced3('0xa6')](_0xced3('0xc7'));}var _0x119881=_0x549d42['grammar'];if(this['isConfigured'](_0x549d42[_0xced3('0x74')])){_0x119881+=','+_0x549d42[_0xced3('0x74')];}var _0x3a705d=this[_0xced3('0xc')][_0xced3('0x53')](_0xced3('0xab'),_0x119881);if(_0x3a705d[_0xced3('0xa3')]===-0x1){return _0x3a705d;}var _0x22c067=this[_0xced3('0xa1')]('RECOG_CONFIDENCE()',_0xced3('0xc8'));if(_0x22c067[_0xced3('0xa3')]===-0x1){return _0x22c067;}var _0x3a71d0=this[_0xced3('0xa1')](_0xced3('0xad'),'LUMENVOX_ASR_TRANSCRIPT');if(_0x3a71d0['result']===-0x1){return _0x3a71d0;}var _0x3dc69a=this[_0xced3('0xa1')]('RECOG_INSTANCE()','LUMENVOX_ASR_INSTANCE');if(_0x3dc69a[_0xced3('0xa3')]===-0x1){return _0x3dc69a;}return this['channel']['noop'](util[_0xced3('0x28')](_0xced3('0xb1'),_0x119881));};AGIVertices[_0xced3('0xf')][_0xced3('0xc9')]=function(_0x70019b){logger[_0xced3('0x2c')](util[_0xced3('0x28')]('Enter\x20in\x20SESTEKASR\x20(%s)\x20block',_0x70019b[_0xced3('0x35')]));if(!this[_0xced3('0x81')](_0x70019b[_0xced3('0xaa')])){return this[_0xced3('0xc')][_0xced3('0xa6')](_0xced3('0xc7'));}var _0x455e36=_0x70019b[_0xced3('0xaa')];if(this[_0xced3('0x81')](_0x70019b[_0xced3('0x74')])){_0x455e36+=','+_0x70019b[_0xced3('0x74')];}var _0x525bfe=this[_0xced3('0xc')][_0xced3('0x53')](_0xced3('0xab'),_0x455e36);if(_0x525bfe[_0xced3('0xa3')]===-0x1){return _0x525bfe;}var _0x530e42=this[_0xced3('0xa1')](_0xced3('0xac'),'SESTEK_ASR_CONFIDENCE');if(_0x530e42[_0xced3('0xa3')]===-0x1){return _0x530e42;}var _0x4f0cf1=this[_0xced3('0xa1')](_0xced3('0xad'),_0xced3('0xca'));if(_0x4f0cf1[_0xced3('0xa3')]===-0x1){return _0x4f0cf1;}var _0x193f50=this['getAndSetVariable'](_0xced3('0xaf'),_0xced3('0xcb'));if(_0x193f50[_0xced3('0xa3')]===-0x1){return _0x193f50;}return this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0xb1'),_0x455e36));};AGIVertices[_0xced3('0xf')][_0xced3('0xcc')]=function(_0xa7edc0){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0xcd'),_0xa7edc0[_0xced3('0x35')]));if(!this[_0xced3('0x81')](_0xa7edc0[_0xced3('0xce')])){return this[_0xced3('0xc')][_0xced3('0x4c')](_0xa7edc0,_0xced3('0xcf'));}var _0x463514=this[_0xced3('0x16')]['sync'](this,_0xa7edc0[_0xced3('0xce')]);if(!_0x463514){return this[_0xced3('0xc')][_0xced3('0x4c')](_0xa7edc0,_0xced3('0xd0'));}if(!this[_0xced3('0x81')](_0xa7edc0['query'])){return this[_0xced3('0xc')][_0xced3('0x4c')](_0xa7edc0,_0xced3('0xd1'));}var _0x36aee5=_0xa7edc0[_0xced3('0x2d')]['replace'](/(\r\n|\n|\r)/gm,'\x20');this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0xd2'),_0x36aee5));var _0x440713=this[_0xced3('0x2a')][_0xced3('0x6e')](this,_0x463514,_0x36aee5);this[_0xced3('0x34')]['sync'](this,_0xa7edc0,_0x36aee5);if(!this[_0xced3('0x81')](_0xa7edc0[_0xced3('0xd3')])){return this[_0xced3('0xc')][_0xced3('0xa6')](_0xced3('0xd4'));}var _0x2fdf88=this['getVariable']['sync'](this,_0xa7edc0[_0xced3('0xd3')]);if(!_0x2fdf88){return this[_0xced3('0xc')]['error'](_0xa7edc0,'no\x20variable\x20found');}var _0x45a4cc=this;_0x440713[_0xced3('0xd5')](function(_0x41f4bb,_0x1ef827){Object[_0xced3('0xd6')](_0x41f4bb)[_0xced3('0xd5')](function(_0x37fe55){_0x45a4cc['channel'][_0xced3('0x9d')](util[_0xced3('0x28')](_0xced3('0xd7'),_0x2fdf88,_0x1ef827,_0x37fe55),_0x41f4bb[_0x37fe55]);});});this[_0xced3('0xc')][_0xced3('0x9d')](util[_0xced3('0x28')](_0xced3('0xd8'),_0x2fdf88),_0x440713['length']);return this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0xd9'),_0x2fdf88));};AGIVertices[_0xced3('0xf')]['dial']=function(_0x45a8b7){logger[_0xced3('0xda')](util[_0xced3('0x28')]('Enter\x20in\x20DIAL\x20(%s)\x20block',_0x45a8b7['label']));if(!this['isConfigured'](_0x45a8b7['sip_id'])){return this[_0xced3('0xc')][_0xced3('0x4c')](_0x45a8b7,_0xced3('0xdb'));}var _0x2f33b7=this['getUser']['sync'](this,_0x45a8b7[_0xced3('0xdc')]);if(!_0x2f33b7){return this[_0xced3('0xc')][_0xced3('0x4c')](_0x45a8b7,'no\x20user\x20found');}var _0xb7a8da=this[_0xced3('0xc')][_0xced3('0x53')](_0xced3('0xdd'),[util[_0xced3('0x28')](_0xced3('0xde'),_0x2f33b7),_0x45a8b7[_0xced3('0x60')],_0x45a8b7[_0xced3('0xdf')],_0x45a8b7[_0xced3('0x5f')]]);if(_0xb7a8da[_0xced3('0xa3')]===-0x1){return _0xb7a8da;}return this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0xe0'),_0xced3('0xdd')));};AGIVertices['prototype'][_0xced3('0xe1')]=function(_0x512e84){logger[_0xced3('0x2c')](util[_0xced3('0x28')]('Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block',_0x512e84['label']));if(!this[_0xced3('0x81')](_0x512e84[_0xced3('0x7e')])){return this[_0xced3('0xc')]['noop'](_0xced3('0xe2'));}if(!this[_0xced3('0x81')](_0x512e84[_0xced3('0x58')])){return this['channel'][_0xced3('0xa6')](_0xced3('0xc2'));}this['channel']['bot']=!![];this[_0xced3('0x34')](_0x512e84);this[_0xced3('0x40')](_0x512e84[_0xced3('0x58')],'in','','');this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0xe3'),_0x512e84[_0xced3('0x58')]));var _0x4d08e8=this[_0xced3('0x75')][_0xced3('0x6e')](this,_0x512e84);if(_0x4d08e8){for(var _0x15b07e in _0x4d08e8){if(_0x4d08e8[_0xced3('0x93')](_0x15b07e)){this[_0xced3('0xc')][_0xced3('0x9d')](util[_0xced3('0x28')](_0xced3('0xe4'),_0x15b07e[_0xced3('0x66')]()),_0x4d08e8[_0x15b07e]);}}this[_0xced3('0x40')](_0x4d08e8[_0xced3('0xe5')],_0xced3('0xe6'),_0xced3('0xe1'),'');return this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0xe7'),_0x4d08e8[_0xced3('0xe5')]));}return this[_0xced3('0xc')][_0xced3('0x4c')](_0x512e84,'Dialogflow\x20is\x20unreachable');};AGIVertices[_0xced3('0xf')][_0xced3('0xe8')]=function(_0xa8ab9f){logger['info'](util[_0xced3('0x28')](_0xced3('0xe9'),_0xa8ab9f['label']));if(!this['isConfigured'](_0xa8ab9f[_0xced3('0x78')])){return this[_0xced3('0xc')]['noop']('no\x20project_id\x20configured');}if(!this[_0xced3('0x81')](_0xa8ab9f[_0xced3('0x79')])){return this['channel'][_0xced3('0xa6')](_0xced3('0xea'));}if(!this['isConfigured'](_0xa8ab9f[_0xced3('0x7a')])){return this[_0xced3('0xc')][_0xced3('0xa6')](_0xced3('0xeb'));}if(!this[_0xced3('0x81')](_0xa8ab9f[_0xced3('0x7b')])){return this[_0xced3('0xc')][_0xced3('0xa6')](_0xced3('0xec'));}if(!this['isConfigured'](_0xa8ab9f[_0xced3('0x58')])){return this[_0xced3('0xc')][_0xced3('0xa6')](_0xced3('0xc2'));}this[_0xced3('0xc')][_0xced3('0xed')]=!![];this[_0xced3('0x34')](_0xa8ab9f);this['createSquareMessage'](_0xa8ab9f['text'],'in','','');this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0xee'),_0xa8ab9f[_0xced3('0x58')]));var _0x48bfa8=this[_0xced3('0x77')][_0xced3('0x6e')](this,_0xa8ab9f);if(_0x48bfa8){for(var _0x499b46 in _0x48bfa8){if(_0x48bfa8['hasOwnProperty'](_0x499b46)){if(_0x499b46!==_0xced3('0xef')){this[_0xced3('0xc')][_0xced3('0x9d')](util[_0xced3('0x28')](_0xced3('0xe4'),_0x499b46[_0xced3('0x66')]()),_0x48bfa8[_0x499b46]);}}}this[_0xced3('0x40')](_0x48bfa8[_0xced3('0xe5')],_0xced3('0xe6'),_0xced3('0xe8'),_0x48bfa8[_0xced3('0xef')]);return this[_0xced3('0xc')][_0xced3('0xa6')](util['format'](_0xced3('0xf0'),_0x48bfa8['speech']));}return this[_0xced3('0xc')]['error'](_0xa8ab9f,_0xced3('0xf1'));};AGIVertices['prototype'][_0xced3('0xf2')]=function(_0x355776){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0xf3'),_0x355776[_0xced3('0x35')]));if(!this[_0xced3('0x81')](_0x355776['ndauth_url'])){return this[_0xced3('0xc')]['noop'](_0xced3('0xf4'));}if(!this[_0xced3('0x81')](_0x355776[_0xced3('0xf5')])){return this[_0xced3('0xc')][_0xced3('0xa6')](_0xced3('0xf6'));}if(!this['isConfigured'](_0x355776[_0xced3('0xf7')])){return this[_0xced3('0xc')][_0xced3('0xa6')]('no\x20password\x20configured');}if(!this[_0xced3('0x81')](_0x355776['ndassistant_url'])){return this[_0xced3('0xc')][_0xced3('0xa6')]('no\x20text\x20configured');}this[_0xced3('0xc')][_0xced3('0xed')]=!![];this[_0xced3('0x34')](_0x355776);this['createSquareMessage'](_0x355776['text'],'in','','');this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')]('Trying\x20SestekNDA:\x20%s',_0x355776['text']));var _0x30ce84=this[_0xced3('0x7c')]['sync'](this,_0x355776);if(_0x30ce84){for(var _0x33c350 in _0x30ce84){if(_0x30ce84[_0xced3('0x93')](_0x33c350)){this[_0xced3('0xc')][_0xced3('0x9d')](util[_0xced3('0x28')](_0xced3('0xf8'),_0x33c350[_0xced3('0x66')]()),_0x30ce84[_0x33c350]);}}this[_0xced3('0x40')](_0x30ce84[_0xced3('0xe5')],'out',_0xced3('0xf2'),'');if(_0x30ce84[_0xced3('0xf9')]){this[_0xced3('0xc')]['noop'](util[_0xced3('0x28')](_0xced3('0xfa'),_0x30ce84[_0xced3('0xf9')]));var _0x43c1ef=this[_0xced3('0xc')]['streamFile'](_0x30ce84[_0xced3('0xf9')]);try{fs[_0xced3('0xfb')](_0x30ce84[_0xced3('0xf9')]+'.wav');}catch(_0x1f746e){logger['error'](_0x1f746e);}return _0x43c1ef;}else{return this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0xfc'),_0x30ce84['speech']));}}return this['channel']['error'](_0x355776,_0xced3('0xfd'));};AGIVertices[_0xced3('0xf')]['end']=function(_0xe0a4a8){logger[_0xced3('0x2c')](util[_0xced3('0x28')]('Enter\x20in\x20END\x20(%s)\x20block',_0xe0a4a8[_0xced3('0x35')]));return this[_0xced3('0xc')][_0xced3('0xa6')](_0xced3('0xfe'));};AGIVertices[_0xced3('0xf')][_0xced3('0xff')]=function(_0x38c833){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x100'),_0x38c833['label']));var _0xa7973c='';if(_0x38c833[_0xced3('0x101')]){if(!this[_0xced3('0x81')](_0x38c833['trunk_id'])){return this[_0xced3('0xc')]['error'](_0x38c833,_0xced3('0x102'));}else{var _0x4b5355=parseInt(_0x38c833[_0xced3('0x101')],0xa);if(isNaN(_0x4b5355)){_0xa7973c=_0x38c833[_0xced3('0x101')];}else{_0xa7973c=this[_0xced3('0x1b')][_0xced3('0x6e')](this,_0x38c833[_0xced3('0x101')]);if(!_0xa7973c){return this['channel']['error'](_0x38c833,_0xced3('0x103'));}}}}else if(_0x38c833['trunk_name']){_0xa7973c=_0x38c833[_0xced3('0x104')];}else{return this[_0xced3('0xc')][_0xced3('0x4c')](_0x38c833,_0xced3('0x102'));}var _0xcea3bf=this['channel'][_0xced3('0x53')](_0xced3('0xdd'),[util[_0xced3('0x28')](_0xced3('0x105'),_0xa7973c,_0x38c833[_0xced3('0x45')]),_0x38c833[_0xced3('0x60')],_0x38c833[_0xced3('0xdf')],_0x38c833[_0xced3('0x5f')]]);if(_0xcea3bf['result']===-0x1){return _0xcea3bf;}return this['channel'][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0xe0'),_0xced3('0xdd')));};AGIVertices[_0xced3('0xf')]['finally']=function(_0x2a4266){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x106'),_0x2a4266[_0xced3('0x35')]));return this[_0xced3('0xc')][_0xced3('0xa6')]('finally');};AGIVertices[_0xced3('0xf')]['getdigits']=function(_0x1f1042){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x107'),_0x1f1042['label']));if(_0x1f1042[_0xced3('0x108')]===0x0){return this[_0xced3('0xa4')](_0x1f1042);}_0x1f1042['retry']-=0x1;if(!this[_0xced3('0x81')](_0x1f1042[_0xced3('0x109')])){return this['channel']['error'](_0x1f1042,'no\x20file\x20audio\x20selected');}var _0x39c5fa=this[_0xced3('0x1c')][_0xced3('0x6e')](this,_0x1f1042[_0xced3('0x109')]);if(!_0x39c5fa){return this[_0xced3('0xc')]['error'](_0x1f1042,_0xced3('0x10a'));}if(!this['isConfigured'](_0x1f1042[_0xced3('0xd3')])){return this[_0xced3('0xc')][_0xced3('0x4c')](_0xced3('0xd4'));}var _0x56a01f=this['channel']['getData'](_0x39c5fa,_0x1f1042[_0xced3('0x10b')],_0x1f1042['maxdigit']);var _0x25960f=_0x56a01f['result']?_0x56a01f[_0xced3('0xa3')][_0xced3('0x48')]():'';logger['info'](_0xced3('0x10c'),JSON[_0xced3('0x71')](_0x56a01f));if(_0x56a01f['result']===-0x1){this[_0xced3('0x34')][_0xced3('0x6e')](this,_0x1f1042,_0x25960f);return _0x56a01f;}else if(_0x56a01f[_0xced3('0xa0')]===_0xced3('0x60')){_0x56a01f[_0xced3('0xa3')]=_0x25960f[_0xced3('0x98')]>=parseInt(_0x1f1042['mindigit'])?'x':'i';}else{_0x56a01f[_0xced3('0xa3')]=_0x25960f[_0xced3('0x98')]>=parseInt(_0x1f1042['mindigit'])&&_0x25960f[_0xced3('0x98')]<=parseInt(_0x1f1042['maxdigit'])?'x':'i';}var _0x3a0e0f=this[_0xced3('0xa2')][_0xced3('0x6e')](this,_0x1f1042[_0xced3('0xd3')]);if(!_0x3a0e0f){return this[_0xced3('0xc')][_0xced3('0x4c')](_0x1f1042,_0xced3('0x10d'));}this[_0xced3('0xc')][_0xced3('0x9d')](_0x3a0e0f,_0x25960f);if(this[_0xced3('0x81')](_0x1f1042[_0xced3('0x10e')])){var _0x3dff75=parseInt(_0x1f1042[_0xced3('0x10e')],0xa);var _0x609df4=rs[_0xced3('0x10f')]({'charset':'*','length':_0x3dff75});var _0x2a2bc1=_0x25960f[_0xced3('0x98')];if(_0x2a2bc1>0x0){if(_0x2a2bc1>_0x3dff75){this[_0xced3('0x34')][_0xced3('0x6e')](this,_0x1f1042,_0x1f1042[_0xced3('0x110')]===_0xced3('0x111')?_0x609df4+_0x25960f[_0xced3('0x112')](_0x3dff75):_0x25960f[_0xced3('0x112')](0x0,_0x2a2bc1-_0x3dff75)+_0x609df4);}else{this[_0xced3('0x34')]['sync'](this,_0x1f1042,rs[_0xced3('0x10f')]({'charset':'*','length':_0x2a2bc1}));}}else{this[_0xced3('0x34')]['sync'](this,_0x1f1042,'');}}else{this[_0xced3('0x34')]['sync'](this,_0x1f1042,_0x25960f);}return _0x56a01f;};AGIVertices[_0xced3('0xf')][_0xced3('0x113')]=function(_0xa2cfe0){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x114'),_0xa2cfe0[_0xced3('0x35')]));return this[_0xced3('0xb')](_0xa2cfe0);};AGIVertices[_0xced3('0xf')][_0xced3('0x115')]=function(_0x321a4){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x116'),_0x321a4[_0xced3('0x35')]));this[_0xced3('0x34')][_0xced3('0x6e')](this,_0x321a4,_0x321a4['goalname']);return this[_0xced3('0xc')]['noop'](util[_0xced3('0x28')]('GOAL\x20%s',_0x321a4['goalname']));};AGIVertices[_0xced3('0xf')]['awspolly']=function(_0x551fa7){logger['info'](util[_0xced3('0x28')](_0xced3('0x117'),_0x551fa7['label']));if(!this[_0xced3('0x81')](_0x551fa7[_0xced3('0x88')])||!this[_0xced3('0x81')](_0x551fa7['aws_secret_access_key'])){return this['channel']['noop'](_0xced3('0x118'));}if(!this[_0xced3('0x81')](_0x551fa7[_0xced3('0x58')])){return this[_0xced3('0xc')]['noop'](_0xced3('0xc2'));}this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')]('Trying\x20aws\x20Polly\x20%s',_0x551fa7[_0xced3('0x58')]));var _0x18f38c=this[_0xced3('0x83')][_0xced3('0x6e')](this,_0x551fa7);if(_0x18f38c){this['channel'][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0x119'),_0x18f38c));var _0x278882=this['channel'][_0xced3('0x11a')](_0x18f38c);try{fs['unlink'](_0x18f38c+_0xced3('0x11b'));}catch(_0x5c6cf4){logger['error'](_0x5c6cf4);}return _0x278882;}return this[_0xced3('0xc')][_0xced3('0x4c')](_0x551fa7,'aws\x20Polly\x20is\x20unreachable');};AGIVertices[_0xced3('0xf')][_0xced3('0x11c')]=function(_0x457882){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x11d'),_0x457882[_0xced3('0x35')]));if(!this[_0xced3('0x81')](_0x457882['aws_access_key_id'])||!this[_0xced3('0x81')](_0x457882[_0xced3('0x89')])){return this[_0xced3('0xc')][_0xced3('0xa6')](_0xced3('0x118'));}if(!this[_0xced3('0x81')](_0x457882[_0xced3('0x8b')])){return this[_0xced3('0xc')][_0xced3('0xa6')](_0xced3('0x11e'));}if(!this[_0xced3('0x81')](_0x457882[_0xced3('0x58')])){return this['channel'][_0xced3('0xa6')](_0xced3('0xc2'));}this[_0xced3('0xc')][_0xced3('0xed')]=!![];this[_0xced3('0x34')](_0x457882);this[_0xced3('0x40')](_0x457882[_0xced3('0x58')],'in','','');this[_0xced3('0xc')][_0xced3('0xa6')](util['format'](_0xced3('0x11f'),_0x457882['text']));var _0x2c6e4d=this[_0xced3('0x87')][_0xced3('0x6e')](this,_0x457882);if(_0x2c6e4d){for(var _0x5d9122 in _0x2c6e4d){if(_0x2c6e4d[_0xced3('0x93')](_0x5d9122)&&_['isString'](_0x2c6e4d[_0x5d9122])){this['channel'][_0xced3('0x9d')](util[_0xced3('0x28')](_0xced3('0x120'),_0x5d9122[_0xced3('0x66')]()),_0x2c6e4d[_0x5d9122]);}}if(_[_0xced3('0x42')](_0x2c6e4d['message'])){return this[_0xced3('0xc')][_0xced3('0xa6')](_0xced3('0x121'));}else{this[_0xced3('0x40')](_0x2c6e4d[_0xced3('0x73')],_0xced3('0xe6'),_0xced3('0x122'),'');return this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0x123'),_0x2c6e4d[_0xced3('0x73')]));}}return this['channel'][_0xced3('0x4c')](_0x457882,_0xced3('0x124'));};AGIVertices[_0xced3('0xf')]['googleasr']=function(_0x449d02){logger['info'](util['format'](_0xced3('0x125'),_0x449d02[_0xced3('0x35')],_0x449d02[_0xced3('0x60')]));if(!this[_0xced3('0x81')](_0x449d02[_0xced3('0x7e')])){return this[_0xced3('0xc')][_0xced3('0xa6')](_0xced3('0xe2'));}var _0x40fc9c=_0xced3('0x126');var _0x26ad44=util[_0xced3('0x28')](_0xced3('0x127'),FILES_PATH,rs['generate'](0x4));var _0x565b0b=util[_0xced3('0x28')](_0xced3('0x9c'),_0x26ad44,_0x40fc9c);var _0x1cc564=!![];if(_0x449d02[_0xced3('0x128')]===_0xced3('0x129')){_0x1cc564=![];}var _0x1b77fb=this['channel'][_0xced3('0x12a')](_0x26ad44,_0x40fc9c,_0x449d02['intKey'],_0x449d02[_0xced3('0x60')],undefined,_0x1cc564);if(_0x1b77fb[_0xced3('0xa3')]!==-0x1){this[_0xced3('0xc')]['noop'](util[_0xced3('0x28')](_0xced3('0x12b'),_0x565b0b));var _0x53d10b=this[_0xced3('0x8c')][_0xced3('0x6e')](this,_0x449d02,_0x565b0b);if(_0x53d10b){for(var _0x3355c3 in _0x53d10b){if(_0x53d10b[_0xced3('0x93')](_0x3355c3)){this[_0xced3('0xc')][_0xced3('0x9d')](util[_0xced3('0x28')](_0xced3('0x12c'),_0x3355c3[_0xced3('0x66')]()),_0x53d10b[_0x3355c3]);}}return this['channel']['noop'](util[_0xced3('0x28')](_0xced3('0x12d'),JSON[_0xced3('0x71')](_0x53d10b)));}}return _0x1b77fb;};AGIVertices[_0xced3('0xf')]['tildeasr']=function(_0x465eeb){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x12e'),_0x465eeb[_0xced3('0x35')]));if(!this[_0xced3('0x81')](_0x465eeb[_0xced3('0x8f')])){return this[_0xced3('0xc')][_0xced3('0xa6')]('no\x20appid\x20configured');}if(!this['isConfigured'](_0x465eeb['appsecret'])){return this[_0xced3('0xc')][_0xced3('0xa6')](_0xced3('0x12f'));}var _0x5e08c7=_0xced3('0x126');var _0x47d4d5=util['format']('%s/recordings/%s',FILES_PATH,rs[_0xced3('0x10f')](0x4));var _0x26fc28=util[_0xced3('0x28')](_0xced3('0x9c'),_0x47d4d5,_0x5e08c7);var _0x7944a8=!![];if(_0x465eeb[_0xced3('0x128')]===_0xced3('0x129')){_0x7944a8=![];}var _0x396541=this['channel'][_0xced3('0x12a')](_0x47d4d5,_0x5e08c7,_0x465eeb[_0xced3('0x130')],_0x465eeb[_0xced3('0x60')],undefined,_0x7944a8);if(_0x396541[_0xced3('0xa3')]!==-0x1){this[_0xced3('0xc')]['noop'](util[_0xced3('0x28')](_0xced3('0x131'),_0x26fc28));var _0x4d49da=this[_0xced3('0x8e')][_0xced3('0x6e')](this,_0x465eeb,_0x26fc28);if(_0x4d49da){for(var _0x12cf69 in _0x4d49da){if(_0x4d49da['hasOwnProperty'](_0x12cf69)){this['channel'][_0xced3('0x9d')](util[_0xced3('0x28')](_0xced3('0x132'),_0x12cf69[_0xced3('0x66')]()),_0x4d49da[_0x12cf69]);}}return this[_0xced3('0xc')]['noop'](util[_0xced3('0x28')](_0xced3('0x133'),JSON[_0xced3('0x71')](_0x4d49da)));}}return _0x396541;};AGIVertices['prototype'][_0xced3('0x134')]=function(_0x28ead4){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x135'),_0x28ead4['label']));return this[_0xced3('0xc')][_0xced3('0x136')](_0x28ead4[_0xced3('0x3b')],_0x28ead4[_0xced3('0x137')],_0x28ead4[_0xced3('0x3c')]);};AGIVertices[_0xced3('0xf')][_0xced3('0x138')]=function(_0x238f2d){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x139'),_0x238f2d['label']));if(!this[_0xced3('0x81')](_0x238f2d[_0xced3('0x13a')])){return this[_0xced3('0xc')][_0xced3('0x4c')](_0x238f2d,'no\x20condition\x20configured');}try{var _0x4f1cdd=eval(_0x238f2d[_0xced3('0x13a')])?_0xced3('0x13b'):'false';this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0x13c'),_0x238f2d[_0xced3('0x13a')],_0x4f1cdd));return{'code':0xc8,'result':_0x4f1cdd};}catch(_0x21fd10){return{'code':0xc8,'result':_0xced3('0x13d')};}};AGIVertices[_0xced3('0xf')][_0xced3('0x13e')]=function(_0x4a22af){logger['info'](util['format'](_0xced3('0x13f'),_0x4a22af['label']));if(!this[_0xced3('0x81')](_0x4a22af[_0xced3('0x140')])){return this[_0xced3('0xc')]['error'](_0x4a22af,_0xced3('0x141'));}var _0x1c682b=this[_0xced3('0x22')][_0xced3('0x6e')](this,_0x4a22af[_0xced3('0x140')]);if(!_0x1c682b){return this[_0xced3('0xc')][_0xced3('0x4c')](_0x4a22af,_0xced3('0x142'));}for(var _0x9033=0x0;_0x9033<_0x1c682b[_0xced3('0x98')];_0x9033+=0x1){var _0x520863=this[_0xced3('0xc')][_0xced3('0xa2')](util[_0xced3('0x28')](_0xced3('0x143'),_0x1c682b[_0x9033]));if(_0x520863[_0xced3('0xa3')]===-0x1){return _0x520863;}logger['info'](util[_0xced3('0x28')](_0xced3('0x144'),_0x1c682b[_0x9033],_0x520863[_0xced3('0xa0')]));if(_0x520863[_0xced3('0xa0')]==='true'){logger['info'](util[_0xced3('0x28')](_0xced3('0x144'),_0x1c682b[_0x9033],_0xced3('0x13b')));this[_0xced3('0xc')]['noop'](util['format'](_0xced3('0x144'),_0x1c682b[_0x9033],_0xced3('0x13b')));return{'code':0xc8,'result':_0xced3('0x13b')};}else{logger[_0xced3('0x2c')](util[_0xced3('0x28')]('IFTIME\x20%s\x20%s',_0x1c682b[_0x9033],_0xced3('0x13d')));this['channel'][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0x144'),_0x1c682b[_0x9033],_0xced3('0x13d')));}}return{'code':0xc8,'result':_0xced3('0x13d')};};AGIVertices['prototype'][_0xced3('0x145')]=function(_0x39b6b6){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x146'),_0x39b6b6[_0xced3('0x35')]));return this[_0xced3('0xc')]['hangup']();};AGIVertices['prototype'][_0xced3('0x147')]=function(_0x23c441){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x148'),_0x23c441[_0xced3('0x35')]));if(!this[_0xced3('0x81')](_0x23c441[_0xced3('0x7e')])){return this[_0xced3('0xc')][_0xced3('0xa6')](_0xced3('0xe2'));}var _0x45e11b=_0xced3('0x126');var _0x50a4fc=util['format'](_0xced3('0x127'),FILES_PATH,rs[_0xced3('0x10f')](0x4));var _0x5273ae=util[_0xced3('0x28')](_0xced3('0x9c'),_0x50a4fc,_0x45e11b);var _0x2c006d=!![];if(_0x23c441[_0xced3('0x128')]===_0xced3('0x129')){_0x2c006d=![];}var _0x11b117=this[_0xced3('0xc')]['recordFile'](_0x50a4fc,_0x45e11b,_0x23c441[_0xced3('0x130')],_0x23c441[_0xced3('0x60')],undefined,_0x2c006d);if(_0x11b117[_0xced3('0xa3')]!==-0x1){this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0x149'),_0x5273ae));var _0x569957=this[_0xced3('0x80')][_0xced3('0x6e')](this,_0x23c441,_0x5273ae);if(_0x569957){for(var _0x2fd95f in _0x569957){if(_0x569957[_0xced3('0x93')](_0x2fd95f)){this[_0xced3('0xc')]['setVariable'](util[_0xced3('0x28')]('ISPEECH_ASR_%s',_0x2fd95f[_0xced3('0x66')]()),_0x569957[_0x2fd95f]);}}return this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0x14a'),JSON[_0xced3('0x71')](_0x569957)));}}return _0x11b117;};AGIVertices['prototype'][_0xced3('0x14b')]=function(_0x22934d){logger[_0xced3('0x2c')](util['format'](_0xced3('0x14c'),_0x22934d[_0xced3('0x35')]));if(!this[_0xced3('0x81')](_0x22934d[_0xced3('0x7e')])){return this[_0xced3('0xc')]['noop'](_0xced3('0xe2'));}if(!this[_0xced3('0x81')](_0x22934d[_0xced3('0x58')])){return this['channel'][_0xced3('0xa6')]('no\x20text\x20configured');}this['channel']['noop'](util[_0xced3('0x28')](_0xced3('0x14d'),_0x22934d[_0xced3('0x58')]));var _0x435e42=this[_0xced3('0x7d')][_0xced3('0x6e')](this,_0x22934d);if(_0x435e42){this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')]('ispeech\x20%s\x20file\x20created',_0x435e42));var _0x5534ca=this[_0xced3('0xc')]['streamFile'](_0x435e42,_0x22934d['intKey']);try{fs[_0xced3('0xfb')](_0x435e42+_0xced3('0x11b'));}catch(_0x1af1fe){logger[_0xced3('0x4c')](_0x1af1fe);}return _0x5534ca;}return this[_0xced3('0xc')][_0xced3('0x4c')](_0x22934d,_0xced3('0x14e'));};AGIVertices[_0xced3('0xf')][_0xced3('0x14f')]=function(_0x3ce284){logger['info'](util[_0xced3('0x28')](_0xced3('0x150'),_0x3ce284['label']));if(!this[_0xced3('0x81')](_0x3ce284[_0xced3('0x151')])){return this[_0xced3('0xc')][_0xced3('0x4c')](_0x3ce284,'no\x20find\x20by\x20configured');}logger[_0xced3('0x2c')](util['format']('FIND\x20AGENT\x20%s\x20BY\x20%s',this['channel'][_0xced3('0x39')],_0x3ce284[_0xced3('0x151')]));var _0x565d44=this[_0xced3('0x4f')]['sync'](this,_0x3ce284['findBy']);if(_0x565d44){logger[_0xced3('0x2c')](util[_0xced3('0x28')]('AGENT\x20%s\x20FOUND\x20BY',this[_0xced3('0xc')][_0xced3('0x39')],_0x3ce284['findBy']));this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0x152'),this[_0xced3('0xc')][_0xced3('0x39')],_0x3ce284[_0xced3('0x151')]));return{'code':0xc8,'result':_0xced3('0x153')};}else{logger[_0xced3('0x2c')](util['format'](_0xced3('0x154'),this['channel'][_0xced3('0x39')],_0x3ce284[_0xced3('0x151')]));this[_0xced3('0xc')][_0xced3('0xa6')](util['format'](_0xced3('0x154'),this['channel'][_0xced3('0x39')],_0x3ce284['findBy']));return{'code':0xc8,'result':'failure'};}};AGIVertices['prototype']['logout']=function(_0x19b531){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x155'),_0x19b531[_0xced3('0x35')]));if(!this['isConfigured'](_0x19b531[_0xced3('0x151')])){return this[_0xced3('0xc')][_0xced3('0x4c')](_0x19b531,_0xced3('0x156'));}logger['info'](util[_0xced3('0x28')](_0xced3('0x157'),this[_0xced3('0xc')]['callerid'],_0x19b531['findBy']));var _0xcd4259=this[_0xced3('0x4e')]['sync'](this,_0x19b531['findBy']);if(_0xcd4259){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x152'),this[_0xced3('0xc')][_0xced3('0x39')],_0x19b531[_0xced3('0x151')]));this['channel'][_0xced3('0xa6')](util[_0xced3('0x28')]('AGENT\x20%s\x20FOUND\x20BY',this[_0xced3('0xc')][_0xced3('0x39')],_0x19b531[_0xced3('0x151')]));return{'code':0xc8,'result':_0xced3('0x153')};}else{logger['info'](util['format'](_0xced3('0x154'),this[_0xced3('0xc')][_0xced3('0x39')],_0x19b531[_0xced3('0x151')]));this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this['channel'][_0xced3('0x39')],_0x19b531[_0xced3('0x151')]));return{'code':0xc8,'result':_0xced3('0x158')};}};AGIVertices[_0xced3('0xf')][_0xced3('0x159')]=function(_0x18eb5c){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x15a'),_0x18eb5c['label']));if(!this['isConfigured'](_0x18eb5c[_0xced3('0x15b')])){return this[_0xced3('0xc')][_0xced3('0x4c')](_0x18eb5c,'no\x20operation\x20configured');}this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0x15c'),_0x18eb5c[_0xced3('0x15b')]));var _0xcd0d=eval(_0x18eb5c[_0xced3('0x15b')]);if(!this[_0xced3('0x81')](_0x18eb5c[_0xced3('0xd3')])){return this[_0xced3('0xc')][_0xced3('0xa6')]('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x6a84a=this[_0xced3('0xa2')][_0xced3('0x6e')](this,_0x18eb5c[_0xced3('0xd3')]);if(!_0x6a84a){return this[_0xced3('0xc')][_0xced3('0x4c')](_0x18eb5c,_0xced3('0x10d'));}if(_[_0xced3('0x97')](_0xcd0d)){var _0x2ac077=this;_0xcd0d[_0xced3('0xd5')](function(_0x98af84,_0x273e8f){_0x2ac077['channel']['setVariable'](util[_0xced3('0x28')](_0xced3('0x15d'),_0x6a84a,_0x273e8f),_0x98af84);});return this['channel'][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0x15e'),_0x6a84a));}else{return this['channel']['setVariable'](_0x6a84a,_0xcd0d);}};AGIVertices['prototype'][_0xced3('0x15f')]=function(_0x157013){logger[_0xced3('0x2c')](util[_0xced3('0x28')]('Enter\x20in\x20MENU\x20(%s)\x20block',_0x157013['label']));if(_0x157013['retry']===0x0){return this[_0xced3('0xa4')](_0x157013);}_0x157013[_0xced3('0x108')]-=0x1;if(!this[_0xced3('0x81')](_0x157013[_0xced3('0x109')])){return this['channel'][_0xced3('0x4c')](_0x157013,_0xced3('0x160'));}var _0x23f074=this[_0xced3('0x1c')][_0xced3('0x6e')](this,_0x157013[_0xced3('0x109')]);if(!_0x23f074){return this['channel'][_0xced3('0x4c')](_0x157013,_0xced3('0x10a'));}var _0x2e8dc3=this[_0xced3('0xc')]['getData'](_0x23f074,_0x157013[_0xced3('0x10b')],_0x157013[_0xced3('0x161')]);var _0x3e46bc=_0x2e8dc3[_0xced3('0xa3')];if(_0x2e8dc3[_0xced3('0xa3')]===-0x1){this[_0xced3('0x34')]['sync'](this,_0x157013,'-1');return _0x2e8dc3;}else if(_0x2e8dc3[_0xced3('0xa0')]==='timeout'){_0x2e8dc3[_0xced3('0xa3')]=_0x2e8dc3[_0xced3('0xa3')][_0xced3('0x98')]>0x0?_0x2e8dc3['result']:'t';}else if(_['isEmpty'](_0x2e8dc3[_0xced3('0xa3')])){_0x2e8dc3[_0xced3('0xa3')]='#';_0x3e46bc='#';}if(!this[_0xced3('0x81')](_0x157013[_0xced3('0xd3')])){this[_0xced3('0xc')][_0xced3('0xa6')](_0xced3('0xd4'));}else{var _0x5c99b5=this[_0xced3('0xa2')]['sync'](this,_0x157013[_0xced3('0xd3')]);if(!_0x5c99b5){return this[_0xced3('0xc')][_0xced3('0x4c')](_0x157013,_0xced3('0x10d'));}this[_0xced3('0xc')][_0xced3('0x9d')](_0x5c99b5,_0x3e46bc);}this['createSquareDetailsReport'][_0xced3('0x6e')](this,_0x157013,_0x3e46bc);return _0x2e8dc3;};AGIVertices['prototype'][_0xced3('0xa6')]=function(_0x6ac8d1){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x162'),_0x6ac8d1[_0xced3('0x35')]));return this[_0xced3('0xc')][_0xced3('0xa6')](_0x6ac8d1[_0xced3('0x163')]||_0x6ac8d1[_0xced3('0x35')]);};AGIVertices[_0xced3('0xf')][_0xced3('0x164')]=function(_0x1382ef){logger[_0xced3('0x2c')](util[_0xced3('0x28')]('Enter\x20in\x20PAUSE\x20(%s)\x20block',_0x1382ef[_0xced3('0x35')]));if(!this[_0xced3('0x81')](_0x1382ef[_0xced3('0x151')])){return this['channel'][_0xced3('0x4c')](_0x1382ef,'no\x20find\x20by\x20configured');}logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x157'),this[_0xced3('0xc')][_0xced3('0x39')],_0x1382ef[_0xced3('0x151')]));var _0x1ef618=this['getPause']['sync'](this,_0x1382ef[_0xced3('0x165')]);var _0x355956=this[_0xced3('0x166')][_0xced3('0x6e')](this,_0x1382ef['findBy'],_0x1ef618);if(_0x355956){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x152'),this[_0xced3('0xc')][_0xced3('0x39')],_0x1382ef[_0xced3('0x151')]));this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')]('AGENT\x20%s\x20FOUND\x20BY',this[_0xced3('0xc')][_0xced3('0x39')],_0x1382ef[_0xced3('0x151')]));return{'code':0xc8,'result':'success'};}else{logger['info'](util['format']('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0xced3('0xc')][_0xced3('0x39')],_0x1382ef['findBy']));this['channel']['noop'](util[_0xced3('0x28')]('AGENT\x20%s\x20FOUND\x20BY',this['channel'][_0xced3('0x39')],_0x1382ef[_0xced3('0x151')]));return{'code':0xc8,'result':'failure'};}};AGIVertices['prototype']['playback']=function(_0x48e24b){logger[_0xced3('0x2c')](util[_0xced3('0x28')]('Enter\x20in\x20PLAYBACK\x20(%s)\x20block',_0x48e24b[_0xced3('0x35')]));if(!this[_0xced3('0x81')](_0x48e24b[_0xced3('0x109')])){return this[_0xced3('0xc')][_0xced3('0x4c')](_0x48e24b,_0xced3('0x160'));}var _0x12e2ae=this[_0xced3('0x1c')][_0xced3('0x6e')](this,_0x48e24b[_0xced3('0x109')]);if(!_0x12e2ae){return this[_0xced3('0xc')][_0xced3('0x4c')](_0x48e24b,'no\x20file\x20audio\x20found');}var _0x2677d6=this[_0xced3('0xc')][_0xced3('0x53')](_0xced3('0x167'),[_0x12e2ae,_0x48e24b[_0xced3('0xdf')]]);if(_0x2677d6['result']===-0x1){return _0x2677d6;}return this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0xc0'),_0xced3('0x167'),_0x12e2ae));};AGIVertices[_0xced3('0xf')][_0xced3('0x168')]=function(_0x2795e4){logger[_0xced3('0x2c')](util['format'](_0xced3('0x169'),_0x2795e4[_0xced3('0x35')]));if(!this[_0xced3('0x81')](_0x2795e4[_0xced3('0x16a')])){return this[_0xced3('0xc')][_0xced3('0x4c')](_0x2795e4,_0xced3('0x16b'));}var _0x1044fa='';var _0x2503f2=parseInt(_0x2795e4['queue_id'],0xa);if(isNaN(_0x2503f2)){_0x1044fa=_0x2795e4[_0xced3('0x16a')];}else{_0x1044fa=this['getVoiceQueue'][_0xced3('0x6e')](this,_0x2795e4[_0xced3('0x16a')]);if(!_0x1044fa){return this['channel'][_0xced3('0x4c')](_0x2795e4,'no\x20queue\x20found');}}var _0x53c03a='';if(this['isConfigured'](_0x2795e4[_0xced3('0x109')])){var _0x1dd828=this[_0xced3('0x1c')][_0xced3('0x6e')](this,_0x2795e4[_0xced3('0x109')]);if(_0x1dd828){_0x53c03a=_0x1dd828;}}this[_0xced3('0x34')]['sync'](this,_0x2795e4,_0x1044fa);if(_0x2795e4[_0xced3('0xdf')][_0xced3('0x16c')]('x')<0x0){_0x2795e4[_0xced3('0xdf')]+='x';}if(_0x2795e4[_0xced3('0xdf')][_0xced3('0x16c')]('X')<0x0){_0x2795e4['opts']+='X';}this[_0xced3('0xc')]['setVariable'](_0xced3('0x16d'),_0x1044fa?_0x1044fa['toLowerCase']():'');var _0x15129f=this[_0xced3('0xc')][_0xced3('0x53')]('QUEUE',[_0x1044fa,_0x2795e4['opts'],_0x2795e4['url'],_0x53c03a,_0x2795e4[_0xced3('0x60')],_0x2795e4['agi'],_0x2795e4[_0xced3('0x16e')],_0x2795e4[_0xced3('0x16f')],'',_0x2795e4[_0xced3('0x170')]]);if(_0x15129f[_0xced3('0xa3')]===-0x1){return _0x15129f;}return this['channel'][_0xced3('0xa6')](util[_0xced3('0x28')]('Executed\x20command\x20%s\x20%s','QUEUE',_0x1044fa));};AGIVertices[_0xced3('0xf')]['record']=function(_0x73ee28){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x171'),_0x73ee28[_0xced3('0x35')]));var _0x1ce17d=_0x73ee28[_0xced3('0x172')]||_0xced3('0x126');var _0xdbdd15=util[_0xced3('0x28')]('%s_%s',this[_0xced3('0xc')][_0xced3('0x38')],rs[_0xced3('0x10f')](0x5));var _0x5e568f=util['format']('%s/recordings/%s.%s',FILES_PATH,_0xdbdd15,_0x1ce17d);var _0x4289ad=util[_0xced3('0x28')](_0xced3('0x127'),FILES_PATH,_0xdbdd15);this['createSquareRecording']['sync'](this,_0x73ee28,_0xdbdd15,_0x5e568f);this[_0xced3('0xc')][_0xced3('0x9d')](_0xced3('0x173'),_0xdbdd15);logger['info'](_0xced3('0x174'),_0x4289ad,_0x1ce17d,_0x73ee28[_0xced3('0x175')],_0x73ee28[_0xced3('0x60')]);return this[_0xced3('0xc')]['recordFile'](_0x4289ad,_0x1ce17d,_0x73ee28[_0xced3('0x175')],_0x73ee28[_0xced3('0x60')],undefined,!![]);};AGIVertices[_0xced3('0xf')][_0xced3('0x176')]=function(_0x26e463){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x177'),_0x26e463['label']));if(!this[_0xced3('0x81')](_0x26e463[_0xced3('0x5f')])){return this[_0xced3('0xc')]['noop'](_0xced3('0x178'));}var _0x3875ce=this[_0xced3('0x179')]['sync'](this,_0x26e463);logger[_0xced3('0x2c')](util['format'](_0xced3('0x17a'),util['inspect'](_0x3875ce,{'showHidden':![],'depth':null})));if(!this['isConfigured'](_0x26e463[_0xced3('0xd3')])){return this['channel']['noop']('no\x20variable\x20selected\x20for\x20the\x20response');}var _0x310cf9=this['getVariable'][_0xced3('0x6e')](this,_0x26e463[_0xced3('0xd3')]);if(!_0x310cf9){return this[_0xced3('0xc')][_0xced3('0x4c')](_0x26e463,_0xced3('0x10d'));}this['channel'][_0xced3('0x9d')](util[_0xced3('0x28')]('%s_STATUS_CODE',_0x310cf9),_0x3875ce[_0xced3('0x17b')]?_0x3875ce[_0xced3('0x17b')]:_0xced3('0x17c'));this['channel'][_0xced3('0x9d')](util[_0xced3('0x28')](_0xced3('0x17d'),_0x310cf9),_0x3875ce[_0xced3('0x17e')]?_0x3875ce[_0xced3('0x17e')]:'OK');if(_0x3875ce[_0xced3('0x67')]){try{this['saveRestApiResult'](_0x3875ce['body'],_0x310cf9);}catch(_0x58e83c){logger['error'](util[_0xced3('0x28')](_0xced3('0x17f'),_0x310cf9));}}return this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')]('variable\x20%s\x20set',_0x310cf9));};AGIVertices[_0xced3('0xf')]['saydigits']=function(_0x4291d4){logger[_0xced3('0x2c')](util['format']('Enter\x20in\x20SAYDIGITS\x20(%s)\x20block',_0x4291d4[_0xced3('0x35')]));return this[_0xced3('0xc')][_0xced3('0x180')](_0x4291d4[_0xced3('0x181')][_0xced3('0x55')](/\s+/g,''),_0x4291d4[_0xced3('0x175')]);};AGIVertices[_0xced3('0xf')][_0xced3('0x182')]=function(_0x5698c9){logger[_0xced3('0x2c')](util['format'](_0xced3('0x183'),_0x5698c9[_0xced3('0x35')]));return this[_0xced3('0xc')][_0xced3('0x184')](_0x5698c9[_0xced3('0x61')]['replace'](/\s+/g,''),_0x5698c9[_0xced3('0x175')]);};AGIVertices[_0xced3('0xf')][_0xced3('0x185')]=function(_0xb07a10){logger[_0xced3('0x2c')](util[_0xced3('0x28')]('Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block',_0xb07a10[_0xced3('0x35')]));return this[_0xced3('0xc')][_0xced3('0x186')](_0xb07a10[_0xced3('0x58')],_0xb07a10['escape_digits']);};AGIVertices[_0xced3('0xf')][_0xced3('0x187')]=function(_0x2dbca8){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x188'),_0x2dbca8[_0xced3('0x35')]));if(!this['isConfigured'](_0x2dbca8[_0xced3('0x189')])){return this['channel'][_0xced3('0xa6')](_0xced3('0x18a'));}var _0x469dbe=this[_0xced3('0x20')][_0xced3('0x6e')](this,_0x2dbca8[_0xced3('0x189')]);if(!_0x469dbe||!_0x469dbe[_0xced3('0x18b')]){return this[_0xced3('0xc')][_0xced3('0x4c')](_0x2dbca8,_0xced3('0x18c'));}var _0x1e1ccb={'from':util[_0xced3('0x28')](_0xced3('0x18d'),_0x469dbe[_0xced3('0x11')],_0x469dbe[_0xced3('0x18e')]||_0x469dbe[_0xced3('0x18b')]['user']),'to':_0x2dbca8['to']||'','cc':_0x2dbca8['cc']||'','bcc':_0x2dbca8[_0xced3('0x18f')]||'','subject':_0x2dbca8[_0xced3('0x190')],'html':_0x2dbca8['text'],'text':_0x2dbca8[_0xced3('0x58')]};if(this[_0xced3('0x81')](_0x2dbca8[_0xced3('0x191')])){}logger[_0xced3('0xda')]('sendMail\x20message',JSON[_0xced3('0x71')](_0x1e1ccb));this[_0xced3('0x34')][_0xced3('0x6e')](this,_0x2dbca8,_0x2dbca8[_0xced3('0x189')]);this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0x192'),_0x469dbe[_0xced3('0x11')]));this[_0xced3('0x21')][_0xced3('0x6e')](this,_0x469dbe[_0xced3('0x193')],_0x1e1ccb);return this[_0xced3('0xc')][_0xced3('0xa6')]('Mail\x20message\x20added\x20to\x20outgoing\x20process');};AGIVertices[_0xced3('0xf')][_0xced3('0x194')]=function(_0x4d2e1f){logger[_0xced3('0x2c')](util['format'](_0xced3('0x195'),_0x4d2e1f[_0xced3('0x35')]));return this[_0xced3('0xc')][_0xced3('0xa6')](_0xced3('0x196'));};AGIVertices[_0xced3('0xf')][_0xced3('0x197')]=function(_0x56d54f){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x198'),_0x56d54f[_0xced3('0x35')]));if(!this[_0xced3('0x81')](_0x56d54f['sms_account_id'])){return this[_0xced3('0xc')][_0xced3('0xa6')](_0xced3('0x199'));}var _0x41269f=this['getSmsAccount']['sync'](this,_0x56d54f[_0xced3('0x19a')]);if(!_0x41269f){return this[_0xced3('0xc')]['error'](_0x56d54f,'no\x20sms\x20account\x20found');}var _0x17447d={'body':_0x56d54f[_0xced3('0x19b')],'phone':_0x56d54f['to']||'','SmsAccountId':_0x41269f['id']};logger[_0xced3('0xda')](_0xced3('0x19c'),JSON[_0xced3('0x71')](_0x17447d));this[_0xced3('0x34')][_0xced3('0x6e')](this,_0x56d54f,_0x56d54f['sms_account_id']);this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0x19d'),_0x41269f['name']));this['createSmsMessage'][_0xced3('0x6e')](this,_0x17447d);return this[_0xced3('0xc')][_0xced3('0xa6')](_0xced3('0x19e'));};AGIVertices[_0xced3('0xf')]['set']=function(_0x29a9bd){logger[_0xced3('0x2c')](util['format'](_0xced3('0x19f'),_0x29a9bd[_0xced3('0x35')]));if(!this[_0xced3('0x81')](_0x29a9bd['variable_id'])){return this[_0xced3('0xc')]['error'](_0x29a9bd,_0xced3('0x1a0'));}var _0x49ffbf=this[_0xced3('0xa2')][_0xced3('0x6e')](this,_0x29a9bd[_0xced3('0xd3')]);if(!_0x49ffbf){return this[_0xced3('0xc')]['error'](_0x29a9bd,'no\x20variable\x20found');}return this[_0xced3('0xc')][_0xced3('0x9d')](_0x49ffbf,_0x29a9bd[_0xced3('0x1a1')]);};AGIVertices[_0xced3('0xf')][_0xced3('0x1a2')]=function(_0x18e1f6){logger['info'](util[_0xced3('0x28')]('Enter\x20in\x20START\x20(%s)\x20block',_0x18e1f6['label']));this[_0xced3('0xc')][_0xced3('0xa6')]('START\x20CALLY\x20SQUARE');if(_0x18e1f6[_0xced3('0xb5')]==='yes'){this[_0xced3('0xc')][_0xced3('0xa6')](_0xced3('0x1a3'));return this[_0xced3('0xc')][_0xced3('0xb5')]();}return this['channel']['noop']('Skipped\x20Answer');};AGIVertices['prototype'][_0xced3('0x1a4')]=function(_0x1a573d){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x1a5'),_0x1a573d[_0xced3('0x35')]));if(!this[_0xced3('0x81')](_0x1a573d[_0xced3('0x1a6')])){return this[_0xced3('0xc')]['error'](_0x1a573d,_0xced3('0x1a7'));}var _0x1a842b=this[_0xced3('0x1a8')][_0xced3('0x6e')](this,_0x1a573d[_0xced3('0x1a6')]);if(!this[_0xced3('0x81')](_0x1a842b)){return this[_0xced3('0xc')][_0xced3('0x4c')](_0x1a573d,util[_0xced3('0x28')](_0xced3('0x1a9'),_0x1a573d[_0xced3('0x1a6')]));}if(_0x1a842b===this[_0xced3('0xc')][_0xced3('0x36')]){return this[_0xced3('0xc')]['error'](_0x1a573d,_0xced3('0x1aa'));}this[_0xced3('0x34')]['sync'](this,_0x1a573d,_0x1a842b);var _0x3b7d4f=this['channel'][_0xced3('0x53')]('AGI',util[_0xced3('0x28')]('agi://%s/square,\x22%s\x22,\x22%s\x22',config[_0xced3('0xb2')][_0xced3('0x1ab')]||'127.0.0.1',_0x1a842b,this['channel'][_0xced3('0x36')]));if(_0x3b7d4f[_0xced3('0xa3')]===-0x1){return _0x3b7d4f;}return this['channel'][_0xced3('0xa6')](util['format']('Executed\x20command\x20%s\x20%s','AGI',_0x1a842b));};AGIVertices[_0xced3('0xf')][_0xced3('0x1ac')]=function(_0x474f26){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x1ad'),_0x474f26[_0xced3('0x35')]));var _0x5d5dfd=this[_0xced3('0x1ae')][_0xced3('0x6e')](this,_0x474f26[_0xced3('0xb4')]);this['createSquareDetailsReport'][_0xced3('0x6e')](this,_0x474f26,_0x474f26['command']);if(this[_0xced3('0x81')](_0x474f26['variable_id'])){var _0x40552d=this['getVariable'][_0xced3('0x6e')](this,_0x474f26['variable_id']);if(_0x40552d){this[_0xced3('0xc')][_0xced3('0x9d')](_0x40552d,_0x5d5dfd);return this[_0xced3('0xc')]['noop'](util[_0xced3('0x28')](_0xced3('0x1af'),_0x474f26['command'],_0x40552d));}}return this[_0xced3('0xc')]['noop'](util[_0xced3('0x28')](_0xced3('0x1b0'),_0x474f26[_0xced3('0xb4')]));};AGIVertices[_0xced3('0xf')][_0xced3('0x1b1')]=function(_0x3a2c00){logger[_0xced3('0x2c')](util['format'](_0xced3('0x1b2'),_0x3a2c00['label']));_0x3a2c00[_0xced3('0x58')]=_0x3a2c00['text'][_0xced3('0x55')](/(\r\n|\n|\r)/gm,'\x20');if(!this['isConfigured'](_0x3a2c00[_0xced3('0x57')])){return this[_0xced3('0xc')][_0xced3('0xa6')](_0xced3('0x1b3'));}if(!this[_0xced3('0x81')](_0x3a2c00[_0xced3('0x58')])){return this[_0xced3('0xc')][_0xced3('0xa6')](_0xced3('0xc2'));}this[_0xced3('0xc')]['noop'](util[_0xced3('0x28')](_0xced3('0x1b4'),_0x3a2c00[_0xced3('0x58')]));var _0x256b23=this['googleCloudTTS']['sync'](this,_0x3a2c00);if(_0x256b23){this[_0xced3('0xc')][_0xced3('0xa6')](util['format'](_0xced3('0x1b5'),_0x256b23));var _0x15f469=this[_0xced3('0xc')]['streamFile'](_0x256b23);try{fs[_0xced3('0xfb')](_0x256b23+_0xced3('0x11b'));}catch(_0x131353){logger[_0xced3('0x4c')](_0x131353);}return _0x15f469;}return this[_0xced3('0xc')][_0xced3('0x4c')](_0x3a2c00,_0xced3('0x1b6'));};AGIVertices[_0xced3('0xf')][_0xced3('0x1b7')]=function(_0x1d9bf5){logger[_0xced3('0x2c')](util['format']('Enter\x20in\x20GOOGLETTS\x20(%s)\x20block',_0x1d9bf5['label']));_0x1d9bf5[_0xced3('0x58')]=_0x1d9bf5[_0xced3('0x58')][_0xced3('0x55')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0xced3('0x81')](_0x1d9bf5[_0xced3('0x58')])){return this['channel'][_0xced3('0xa6')](_0xced3('0xc2'));}this['channel'][_0xced3('0xa6')](util[_0xced3('0x28')]('Trying\x20Google\x20TTS\x20%s',_0x1d9bf5['text']));var _0x1d950c=this[_0xced3('0x5e')]['sync'](this,_0x1d9bf5);if(_0x1d950c){this[_0xced3('0xc')]['noop'](util[_0xced3('0x28')](_0xced3('0x1b8'),_0x1d950c));var _0x38cd87=this['channel'][_0xced3('0x11a')](_0x1d950c);try{fs[_0xced3('0xfb')](_0x1d950c+_0xced3('0x11b'));}catch(_0x4bdd05){logger[_0xced3('0x4c')](_0x4bdd05);}return _0x38cd87;}return this['channel'][_0xced3('0x4c')](_0x1d9bf5,_0xced3('0x1b9'));};AGIVertices[_0xced3('0xf')][_0xced3('0x1ba')]=function(_0x3064b5){logger['info'](util[_0xced3('0x28')]('Enter\x20in\x20UNPAUSE\x20(%s)\x20block',_0x3064b5['label']));if(!this[_0xced3('0x81')](_0x3064b5[_0xced3('0x151')])){return this[_0xced3('0xc')][_0xced3('0x4c')](_0x3064b5,_0xced3('0x156'));}logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x157'),this[_0xced3('0xc')][_0xced3('0x39')],_0x3064b5['findBy']));var _0x39ca93=this['agentUnpause'][_0xced3('0x6e')](this,_0x3064b5['findBy']);if(_0x39ca93){logger['info'](util['format'](_0xced3('0x152'),this[_0xced3('0xc')][_0xced3('0x39')],_0x3064b5[_0xced3('0x151')]));this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0x152'),this[_0xced3('0xc')]['callerid'],_0x3064b5[_0xced3('0x151')]));return{'code':0xc8,'result':_0xced3('0x153')};}else{logger['info'](util[_0xced3('0x28')](_0xced3('0x154'),this[_0xced3('0xc')]['callerid'],_0x3064b5[_0xced3('0x151')]));this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0x154'),this[_0xced3('0xc')][_0xced3('0x39')],_0x3064b5[_0xced3('0x151')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0xced3('0xf')][_0xced3('0x1bb')]=function(_0x3a52cb){logger['info'](util[_0xced3('0x28')](_0xced3('0x1bc'),_0x3a52cb['label']));var _0x4377e4=this[_0xced3('0xc')][_0xced3('0x53')](_0xced3('0x1bd'),[_0x3a52cb['mailbox'],_0x3a52cb['options']]);if(_0x4377e4[_0xced3('0xa3')]===-0x1){return _0x4377e4;}return this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')]('Executed\x20command\x20%s\x20%s',_0xced3('0x1bd'),_0x3a52cb[_0xced3('0x1be')]));};AGIVertices[_0xced3('0xf')][_0xced3('0x1bf')]=function(_0x158ba5){logger[_0xced3('0x2c')](util['format'](_0xced3('0x1c0'),_0x158ba5[_0xced3('0x35')]));if(!this[_0xced3('0x81')](_0x158ba5[_0xced3('0xd3')])){return this[_0xced3('0xc')][_0xced3('0x4c')](_0x158ba5,'no\x20variable\x20selected');}var _0x149ed9=this[_0xced3('0xa2')][_0xced3('0x6e')](this,_0x158ba5[_0xced3('0xd3')]);if(!_0x149ed9){return this['channel'][_0xced3('0x4c')](_0x158ba5,_0xced3('0x10d'));}var _0x5557e5=this[_0xced3('0xc')][_0xced3('0xa2')](_0x149ed9);return{'code':0xc8,'result':_0x5557e5[_0xced3('0xa0')]?_0x5557e5[_0xced3('0xa0')]:'-'};};String['prototype']['replaceAll']=function(_0x4e248b,_0x29787d){return this[_0xced3('0x9e')](_0x4e248b)['join'](_0x29787d);};module[_0xced3('0x1c1')]=AGIVertices;
\ No newline at end of file
+var _0x4ca7=['variable_value','start','Enter\x20in\x20START\x20(%s)\x20block','START\x20CALLY\x20SQUARE','yes','Answer','Skipped\x20Answer','subproject','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','project_id','no\x20subproject\x20selected','agi://%s/square,\x22%s\x22,\x22%s\x22','host','127.0.0.1','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','command','google_cloud_tts','Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block','no\x20apiKey\x20configured','Trying\x20Google\x20Cloud\x20TTS\x20%s','Google\x20Cloud\x20TTS\x20%s\x20file\x20created','Enter\x20in\x20GOOGLETTS\x20(%s)\x20block','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','replaceAll','join','exports','util','lodash','shelljs','randomstring','moment','../../config/logger','../../config/environment','../../config/environment/shared','/var/opt/motion2/server/files','rawBody','menu','getdigits','getsecretdigits','rpc','prototype','getVariable','getVariableById','then','name','catch','getVoiceQueue','getVoiceQueueById','getSquareProject','getSquareProjectById','getSquareOdbc','getSquareOdbcById','dsn','getUserById','getTrunkById','getSound','getSoundById','getSoundPath','getMailAccount','getMailAccountById','sendMailMessage','mailRpc','getIntervals','getIntervalById','IntervalId','interval','map','Intervals','%s/sounds/converted/%s','getQueryOdbc','open','error','Error\x20getting\x20ODBC\x20connection\x20%s','ODBC\x20connection\x20successfully','info','Error\x20executing\x20query\x20%s','Query\x20executed\x20correctly\x20%s','close','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','getSmsAccountById','createSmsMessage','createSquareDetailsReport','channel','uniqueid','arg_1','callerid','createSquareRecording','extension','priority','accountcode','file','createCmContact','isEmpty','random','lastName','isNil','phone','list_id','scheduledAt','callback','Callback\x20scheduled\x20at\x20','toString','callback_priority','getPause','getPauseById','agentPause','agent','agentUnpause','agentLogout','agentLogin','format','%s/%s@from-sip/n','shellCommand','exec','trim','replace','googleCloudTTS','apiKey','google_cloud_tts_text_type','text','languageCode','ssmlGender','MALE','audioEncoding','MP3','googleTTS','restAPI','url','timeout','number','includes','POST','PUT','method','toUpperCase','body','parse','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','headers','rawHeaders','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','computedVariables','sync','uri','render','stringify','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusCode','statusMessage','message','500\x20-\x20Internal\x20Server\x20Error','options','googleDialogflow','key','googleDialogflowV2','dialogflowV2_project_id','client_email','private_key','dialogflowV2_language','sestekNDA','ispeechTTS','ispeech_tts_language','speed','ispeechASR','ispeech_asr_language','en-US','isConfigured','model','awsPolly','aws_secret_access_key','aws_polly_region','awsLex','aws_access_key_id','aws_lex_region','aws_bot_name','googleASR','google_asr_language','tildeASR','appid','appsecret','clear','clone','hasOwnProperty','isString','replaceObjectAllVariables','replaceAllVariables','recursiveNodeIndex','isArray','length','saveRestApiResult','isPlainObject','%s.%s','setVariable','split','extra','getAndSetVariable','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','maxRetry','retry','label','no\x20text\x20configured','MRCPSynth','result','noop','Executed\x20command\x20MRCPSynth\x20%s','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','no\x20grammar\x20configured','MRCPRecog','RECOG_CONFIDENCE()','RECOG_INPUT()','RECOG_INSTANCE()','MRCP_RECOG_INSTANCE','Executed\x20command\x20MRCPRecog\x20%s','agi','Enter\x20in\x20AGI\x20(%s)\x20block','Wait\x20%s\x20seconds\x20before\x20answer','wait','answer','no\x20list\x20selected','delay','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','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','grammar','LUMENVOX_ASR_TRANSCRIPT','LUMENVOX_ASR_INSTANCE','sestekasr','SESTEK_ASR_INSTANCE','database','Enter\x20in\x20DATABASE\x20(%s)\x20block','no\x20odbc\x20database\x20found','query','no\x20query\x20configured','query:\x20%s','no\x20variable\x20selected\x20for\x20the\x20result','no\x20variable\x20found','forEach','keys','%s[%s][%s]','%s_ROWS_COUNT','variable\x20%s\x20set','dial','debug','sip_id','no\x20user\x20selected','getUser','no\x20user\x20found','DIAL','opts','Executed\x20command\x20%s','dialogflow','bot','Trying\x20Dialogflow:\x20%s','DIALOGFLOW_%s','createSquareMessage','speech','out','dialogflowV2','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','no\x20client_email\x20configured','no\x20private_key\x20configured','no\x20anguage\x20configured','Trying\x20DialogflowV2:\x20%s','providerResponse','DialogflowV2\x20Result\x20%s','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','audiofile','unlink','end','Enter\x20in\x20END\x20(%s)\x20block','ext_dial','trunk_id','no\x20trunk\x20selected','getTrunk','trunk_name','finally','Enter\x20in\x20FINALLY\x20(%s)\x20block','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','no\x20file\x20audio\x20selected','file_id','no\x20file\x20audio\x20found','getData','response','test','mindigit','maxdigit','variable_id','hiddendigitsnum','generate','hiddendigitspos','first','substr','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','goal','Enter\x20in\x20GOAL\x20(%s)\x20block','goalname','GOAL\x20%s','awspolly','Trying\x20aws\x20Polly\x20%s','streamFile','aws\x20Polly\x20is\x20unreachable','awslex','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','no\x20valid\x20credentials\x20configured','no\x20bot\x20name\x20configured','Trying\x20Amazon\x20Lex:\x20%s','AWS_LEX_%s','amazonlex','Amazon\x20Lex\x20Result\x20%s','Amazon\x20Lex\x20is\x20unreachable','googleasr','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','no\x20key\x20configured','%s/recordings/%s','beep','NOBEEP','recordFile','intKey','google\x20%s\x20file\x20created','GOOGLE_ASR_%s','GoogleASR\x20Result\x20%s','Enter\x20in\x20TILDEASR\x20(%s)\x20block','wav','TildeASR\x20Result\x20%s','gotoc','Enter\x20in\x20GOTO\x20(%s)\x20block','continueAt','context','gotoif','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','no\x20condition\x20configured','true','false','EVAL\x20CONDITION\x20%s\x20%s','gotoiftime','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','interval_id','no\x20interval\x20configured','IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','hangup','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','Trying\x20ispeech\x20TTS\x20%s','.wav','ispeech\x20TTS\x20is\x20unreachable','Enter\x20in\x20LOGIN\x20(%s)\x20block','findBy','no\x20find\x20by\x20configured','FIND\x20AGENT\x20%s\x20BY\x20%s','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','logout','Enter\x20in\x20LOGOUT\x20(%s)\x20block','math','Enter\x20in\x20MATH\x20(%s)\x20block','no\x20operation\x20configured','math\x20%s','operation','%s[%s]','variable\x20%s[key]\x20set','digit','Enter\x20in\x20NOOP\x20(%s)\x20block','output','pause','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','no\x20queue\x20selected','no\x20queue\x20found','indexOf','XMCS-QUEUE','QUEUE','macro','record','%s_%s','%s/recordings/%s.%s','RECORDING_SAVENAME','escape_digits','restapi','Enter\x20in\x20RESTAPI\x20(%s)\x20block','no\x20url\x20configured','Response:','inspect','no\x20variable\x20selected\x20for\x20the\x20response','200','%s_STATUS_MESSAGE','saydigits','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','sayDigits','digits','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','sayphonetic','sayPhonetic','account_id','no\x20mail\x20account\x20configured','Smtp','\x22%s\x22\x20<%s>','email','user','bcc','subject','template_id','sendMail\x20message','Trying\x20SendMail\x20with\x20account\x20%s','smtpOptions','Mail\x20message\x20added\x20to\x20outgoing\x20process','sendFax','Enter\x20in\x20SENDFAX\x20(%s)\x20block','sendSMS','Enter\x20in\x20SENDSMS\x20(%s)\x20block','sms_account_id','no\x20sms\x20account\x20configured','no\x20sms\x20account\x20found','sms_text','sendSMS\x20message','Trying\x20SendSMS\x20with\x20account\x20%s','Sms\x20message\x20added\x20to\x20outgoing\x20process','set','Enter\x20in\x20SET\x20(%s)\x20block','no\x20variable\x20selected'];(function(_0x5e7687,_0x4d1b77){var _0x516d68=function(_0x166c09){while(--_0x166c09){_0x5e7687['push'](_0x5e7687['shift']());}};_0x516d68(++_0x4d1b77);}(_0x4ca7,0x1e3));var _0x74ca=function(_0x5ea0bb,_0x90ae4b){_0x5ea0bb=_0x5ea0bb-0x0;var _0x34acaa=_0x4ca7[_0x5ea0bb];return _0x34acaa;};'use strict';var fs=require('fs');var util=require(_0x74ca('0x0'));var _=require(_0x74ca('0x1'));var sh=require(_0x74ca('0x2'));var odbc=require('odbc')();var rs=require(_0x74ca('0x3'));var moment=require(_0x74ca('0x4'));var Mustache=require('mustache');var rp=require('request-promise');var logger=require(_0x74ca('0x5'))('agi');var config=require(_0x74ca('0x6'));var shared=require(_0x74ca('0x7'));var scripts=require('./scripts');var FILES_PATH=_0x74ca('0x8');var recursiveMapAttributes=['rawHeaders',_0x74ca('0x9')];var verticesWithRetry=[_0x74ca('0xa'),_0x74ca('0xb'),_0x74ca('0xc')];var AGIVertices=function(_0xec5de5,_0x33507a,_0x116715){this['channel']=_0xec5de5;this[_0x74ca('0xd')]=_0x33507a;this['mailRpc']=_0x116715;};AGIVertices[_0x74ca('0xe')][_0x74ca('0xf')]=function(_0x5bf3eb,_0x27f6f7){this[_0x74ca('0xd')][_0x74ca('0x10')](_0x5bf3eb)[_0x74ca('0x11')](function(_0x13423a){_0x27f6f7(null,_0x13423a?_0x13423a[_0x74ca('0x12')]:![]);})[_0x74ca('0x13')](function(_0x3ace02){_0x27f6f7(_0x3ace02);});};AGIVertices['prototype'][_0x74ca('0x14')]=function(_0x1d649c,_0x85ab5f){this[_0x74ca('0xd')][_0x74ca('0x15')](_0x1d649c)[_0x74ca('0x11')](function(_0xf72dc){_0x85ab5f(null,_0xf72dc?_0xf72dc[_0x74ca('0x12')]:![]);})[_0x74ca('0x13')](function(_0x196b51){_0x85ab5f(_0x196b51);});};AGIVertices[_0x74ca('0xe')][_0x74ca('0x16')]=function(_0x1f11a7,_0x42b90e){this['rpc'][_0x74ca('0x17')](_0x1f11a7)[_0x74ca('0x11')](function(_0xdc8fc7){_0x42b90e(null,_0xdc8fc7?_0xdc8fc7[_0x74ca('0x12')]:![]);})[_0x74ca('0x13')](function(_0x5769e1){_0x42b90e(_0x5769e1);});};AGIVertices['prototype'][_0x74ca('0x18')]=function(_0x13ad11,_0x1e7b92){this[_0x74ca('0xd')][_0x74ca('0x19')](_0x13ad11)[_0x74ca('0x11')](function(_0x4eab63){_0x1e7b92(null,_0x4eab63?_0x4eab63[_0x74ca('0x1a')]:![]);})[_0x74ca('0x13')](function(_0x4a85a5){_0x1e7b92(_0x4a85a5);});};AGIVertices['prototype']['getUser']=function(_0x22be63,_0x2f7bb1){this[_0x74ca('0xd')][_0x74ca('0x1b')](_0x22be63)[_0x74ca('0x11')](function(_0x1cae32){_0x2f7bb1(null,_0x1cae32?_0x1cae32[_0x74ca('0x12')]:![]);})[_0x74ca('0x13')](function(_0x1ceb6c){_0x2f7bb1(_0x1ceb6c);});};AGIVertices[_0x74ca('0xe')]['getTrunk']=function(_0x4c020c,_0x1aeded){this[_0x74ca('0xd')][_0x74ca('0x1c')](_0x4c020c)[_0x74ca('0x11')](function(_0x3ef087){_0x1aeded(null,_0x3ef087?_0x3ef087['name']:![]);})[_0x74ca('0x13')](function(_0x13ef53){_0x1aeded(_0x13ef53);});};AGIVertices[_0x74ca('0xe')][_0x74ca('0x1d')]=function(_0x262978,_0x529ace){var _0x227930=this;this[_0x74ca('0xd')][_0x74ca('0x1e')](_0x262978)[_0x74ca('0x11')](function(_0x3491ef){_0x529ace(null,_0x3491ef?_0x227930[_0x74ca('0x1f')](_0x3491ef['save_name']):![]);})['catch'](function(_0x42e048){_0x529ace(_0x42e048);});};AGIVertices[_0x74ca('0xe')][_0x74ca('0x20')]=function(_0x27da17,_0x92cc29){this['rpc'][_0x74ca('0x21')](_0x27da17)[_0x74ca('0x11')](function(_0x52f02e){_0x92cc29(null,_0x52f02e?_0x52f02e:![]);})[_0x74ca('0x13')](function(_0x3d0800){_0x92cc29(_0x3d0800);});};AGIVertices['prototype'][_0x74ca('0x22')]=function(_0x761513,_0x130a4f,_0xf4972b){this[_0x74ca('0x23')][_0x74ca('0x22')](_0x761513,_0x130a4f)[_0x74ca('0x11')](function(){_0xf4972b(null);})['catch'](function(_0x4d3f62){_0xf4972b(_0x4d3f62);});};AGIVertices[_0x74ca('0xe')][_0x74ca('0x24')]=function(_0x3c140d,_0x1881a0){this[_0x74ca('0xd')][_0x74ca('0x25')](_0x3c140d)[_0x74ca('0x11')](function(_0x5466e3){if(_0x5466e3){if(_0x5466e3[_0x74ca('0x26')]){_0x1881a0(null,[_0x5466e3[_0x74ca('0x27')]]);}else{_0x1881a0(null,_[_0x74ca('0x28')](_0x5466e3[_0x74ca('0x29')],_0x74ca('0x27')));}}else{_0x1881a0(null,![]);}})[_0x74ca('0x13')](function(_0x3eacf8){_0x1881a0(_0x3eacf8);});};AGIVertices[_0x74ca('0xe')]['getSoundPath']=function(_0x3d4e45){return util['format'](_0x74ca('0x2a'),FILES_PATH,_0x3d4e45);};AGIVertices['prototype'][_0x74ca('0x2b')]=function(_0x1430c9,_0x54bb1d,_0x3413eb){odbc[_0x74ca('0x2c')](_0x1430c9,function(_0x4b0829){if(_0x4b0829){logger[_0x74ca('0x2d')](_0x74ca('0x2e'),_0x4b0829);_0x3413eb(_0x4b0829);}else{logger['info'](_0x74ca('0x2f'));odbc['query'](_0x54bb1d,function(_0x39fc9a,_0x2b910d){if(_0x39fc9a){logger[_0x74ca('0x30')](_0x74ca('0x31'),_0x54bb1d);_0x3413eb(_0x39fc9a);}else{logger[_0x74ca('0x30')](_0x74ca('0x32'),_0x54bb1d);odbc[_0x74ca('0x33')](function(_0x4c1635){if(_0x4c1635){logger[_0x74ca('0x2d')](_0x74ca('0x34'),_0x4c1635);}_0x3413eb(null,_0x2b910d);});}});}});};AGIVertices[_0x74ca('0xe')][_0x74ca('0x35')]=function(_0x3e8870,_0x145994){this[_0x74ca('0xd')][_0x74ca('0x36')](_0x3e8870)[_0x74ca('0x11')](function(_0x43a3ed){_0x145994(null,_0x43a3ed?_0x43a3ed:![]);})[_0x74ca('0x13')](function(_0x5b07e8){_0x145994(_0x5b07e8);});};AGIVertices['prototype'][_0x74ca('0x37')]=function(_0x10875d,_0x5ca35b){this[_0x74ca('0xd')]['createSmsMessage'](_0x10875d)[_0x74ca('0x11')](function(_0x2e9a37){_0x5ca35b(null,_0x2e9a37);})[_0x74ca('0x13')](function(_0x2ee173){_0x5ca35b(_0x2ee173);});};AGIVertices['prototype'][_0x74ca('0x38')]=function(_0x15a093,_0x2f3685,_0x360b37){this['rpc']['createSquareDetailsReport']({'uniqueid':this[_0x74ca('0x39')][_0x74ca('0x3a')],'node':_0x15a093['label'],'application':_0x15a093['agicommand'],'data':_0x2f3685||null,'project_name':this[_0x74ca('0x39')][_0x74ca('0x3b')],'callerid':this[_0x74ca('0x39')][_0x74ca('0x3c')]})['then'](function(_0x5198c6){if(_0x360b37){_0x360b37(null,_0x5198c6);}})['catch'](function(_0x117f98){if(_0x360b37){_0x360b37(_0x117f98);}});};AGIVertices[_0x74ca('0xe')][_0x74ca('0x3d')]=function(_0x2957b7,_0x4d9874,_0x58ec1b,_0xa75116){this[_0x74ca('0xd')][_0x74ca('0x3d')]({'uniqueid':this[_0x74ca('0x39')][_0x74ca('0x3a')],'callerid':this[_0x74ca('0x39')][_0x74ca('0x3c')],'calleridname':this[_0x74ca('0x39')]['calleridname'],'context':this[_0x74ca('0x39')]['context'],'extension':this[_0x74ca('0x39')][_0x74ca('0x3e')],'priority':this[_0x74ca('0x39')][_0x74ca('0x3f')],'accountcode':this[_0x74ca('0x39')][_0x74ca('0x40')],'dnid':this[_0x74ca('0x39')]['dnid'],'projectName':this[_0x74ca('0x39')][_0x74ca('0x3b')],'saveName':_0x4d9874,'filename':_0x2957b7[_0x74ca('0x41')]||_0x4d9874,'savePath':_0x58ec1b})[_0x74ca('0x11')](function(_0x5dddd3){_0xa75116(null,_0x5dddd3);})[_0x74ca('0x13')](function(_0x337b97){_0xa75116(_0x337b97);});};AGIVertices[_0x74ca('0xe')]['createSquareMessage']=function(_0x50aa19,_0x269e65,_0x3a0d02,_0x42ed76,_0x516f8e){this[_0x74ca('0xd')]['createSquareMessage']({'uniqueid':this[_0x74ca('0x39')][_0x74ca('0x3a')],'body':_0x50aa19,'direction':_0x269e65,'providerName':_0x3a0d02,'providerResponse':_0x42ed76})[_0x74ca('0x11')](function(_0x74d6a0){if(_0x516f8e){_0x516f8e(null,_0x74d6a0);}})['catch'](function(_0x3c4ef6){if(_0x516f8e){_0x516f8e(_0x3c4ef6);}});};AGIVertices[_0x74ca('0xe')][_0x74ca('0x42')]=function(_0x2ae0b8,_0x3d68f6){this['rpc'][_0x74ca('0x42')]({'firstName':_[_0x74ca('0x43')](_0x2ae0b8[_0x74ca('0x12')])||_['isNil'](_0x2ae0b8[_0x74ca('0x12')])?'callback_'+Math[_0x74ca('0x44')]():_0x2ae0b8[_0x74ca('0x12')],'lastName':_[_0x74ca('0x43')](_0x2ae0b8[_0x74ca('0x45')])||_[_0x74ca('0x46')](_0x2ae0b8[_0x74ca('0x45')])?null:_0x2ae0b8[_0x74ca('0x45')],'phone':_0x2ae0b8[_0x74ca('0x47')],'ListId':_0x2ae0b8[_0x74ca('0x48')],'scheduledat':_0x2ae0b8[_0x74ca('0x49')],'callbackUniqueid':this['channel'][_0x74ca('0x3a')],'tags':_0x74ca('0x4a'),'description':_0x74ca('0x4b')+_0x2ae0b8[_0x74ca('0x49')][_0x74ca('0x4c')](),'priority':_0x2ae0b8[_0x74ca('0x4d')]})[_0x74ca('0x11')](function(_0x3bfa45){_0x3d68f6(null,_0x3bfa45);})[_0x74ca('0x13')](function(_0x1c18c1){_0x3d68f6(_0x1c18c1);});};AGIVertices[_0x74ca('0xe')][_0x74ca('0x4e')]=function(_0x2bbebf,_0x152a0e){this[_0x74ca('0xd')][_0x74ca('0x4f')](_0x2bbebf)['then'](function(_0x2be321){_0x152a0e(null,_0x2be321?_0x2be321[_0x74ca('0x12')]:![]);})['catch'](function(_0x55139e){_0x152a0e(_0x55139e);});};AGIVertices[_0x74ca('0xe')][_0x74ca('0x50')]=function(_0x15b9fa,_0x2b7d42,_0x51c7c9){var _0x234120={'role':_0x74ca('0x51')};_0x234120[_0x15b9fa]=this[_0x74ca('0x39')][_0x74ca('0x3c')];this[_0x74ca('0xd')][_0x74ca('0x50')](_0x234120,_0x2b7d42,this['channel']['uniqueid'])[_0x74ca('0x11')](function(_0xa8f708){_0x51c7c9(null,_[_0x74ca('0x46')](_0xa8f708)?![]:!![]);})[_0x74ca('0x13')](function(_0x31dba8){logger[_0x74ca('0x2d')](_0x31dba8);_0x51c7c9(null,![]);});};AGIVertices[_0x74ca('0xe')][_0x74ca('0x52')]=function(_0x165ea6,_0x411d29){var _0x572e4e={'role':'agent'};_0x572e4e[_0x165ea6]=this[_0x74ca('0x39')][_0x74ca('0x3c')];this[_0x74ca('0xd')]['agentUnpause'](_0x572e4e)[_0x74ca('0x11')](function(_0x19f4cf){_0x411d29(null,_[_0x74ca('0x46')](_0x19f4cf)?![]:!![]);})['catch'](function(_0x1a8ad6){logger[_0x74ca('0x2d')](_0x1a8ad6);_0x411d29(null,![]);});};AGIVertices['prototype'][_0x74ca('0x53')]=function(_0xbfb8e1,_0x56d3e2){var _0x29ab6b={'role':_0x74ca('0x51')};_0x29ab6b[_0xbfb8e1]=this['channel'][_0x74ca('0x3c')];this[_0x74ca('0xd')][_0x74ca('0x53')](_0x29ab6b)[_0x74ca('0x11')](function(_0x3fa3f8){_0x56d3e2(null,_[_0x74ca('0x46')](_0x3fa3f8)?![]:!![]);})[_0x74ca('0x13')](function(_0xa6e574){logger[_0x74ca('0x2d')](_0xa6e574);_0x56d3e2(null,![]);});};AGIVertices[_0x74ca('0xe')][_0x74ca('0x54')]=function(_0x18b074,_0xa709fa){var _0x384c48={'role':_0x74ca('0x51')};_0x384c48[_0x18b074]=this[_0x74ca('0x39')][_0x74ca('0x3c')];var _0x29fc24=_0x18b074!='internal'?util[_0x74ca('0x55')](_0x74ca('0x56'),'LOCAL',this[_0x74ca('0x39')][_0x74ca('0x3c')]):undefined;this[_0x74ca('0xd')]['agentLogin'](_0x384c48,_0x29fc24)['then'](function(_0x507e77){_0xa709fa(null,_['isNil'](_0x507e77)?![]:!![]);})['catch'](function(_0x9a5dce){logger[_0x74ca('0x2d')](_0x9a5dce);_0xa709fa(null,![]);});};AGIVertices[_0x74ca('0xe')][_0x74ca('0x57')]=function(_0x2eaae7,_0xc8749c){sh[_0x74ca('0x58')](_[_0x74ca('0x59')](_0x2eaae7),function(_0x57677b,_0x5559de){var _0x18c8a8=_0x5559de[_0x74ca('0x5a')](/(\r\n|\n|\r)/gm,'');_0xc8749c(null,_0x18c8a8);});};AGIVertices[_0x74ca('0xe')]['googleCloudTTS']=function(_0x4b727a,_0x497dfb){scripts[_0x74ca('0x5b')](_0x4b727a[_0x74ca('0x5c')],_0x4b727a[_0x74ca('0x5d')]||'text',_0x4b727a[_0x74ca('0x5e')],_0x4b727a[_0x74ca('0x5f')]||'en-US',_0x4b727a[_0x74ca('0x60')]||_0x74ca('0x61'),_0x4b727a[_0x74ca('0x62')]||_0x74ca('0x63'))[_0x74ca('0x11')](function(_0x490886){_0x497dfb(null,_0x490886);})[_0x74ca('0x13')](function(_0x1a86ef){_0x497dfb(_0x1a86ef);});};AGIVertices['prototype'][_0x74ca('0x64')]=function(_0x31057a,_0x429efd){scripts[_0x74ca('0x64')](_0x31057a['text'],_0x31057a['google_tts_language']||'en',0x1)[_0x74ca('0x11')](function(_0x59789e){_0x429efd(null,_0x59789e);})[_0x74ca('0x13')](function(_0x369a7a){_0x429efd(_0x369a7a);});};AGIVertices['prototype'][_0x74ca('0x65')]=function(_0x3cacad,_0x15fafb){var _0x1ea9b9={'uri':_0x3cacad[_0x74ca('0x66')],'method':_0x3cacad['method'],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x3cacad[_0x74ca('0x67')])===_0x74ca('0x68')&&parseInt(_0x3cacad[_0x74ca('0x67')])>=0x1?parseInt(_0x3cacad[_0x74ca('0x67')])*0x3e8:0x5*0x3e8};if(_[_0x74ca('0x69')]([_0x74ca('0x6a'),_0x74ca('0x6b')],_0x1ea9b9[_0x74ca('0x6c')][_0x74ca('0x6d')]())){try{_0x1ea9b9[_0x74ca('0x6e')]=_0x3cacad[_0x74ca('0x9')]?JSON[_0x74ca('0x6f')](_0x3cacad['rawBody']):{};}catch(_0x2259d0){logger[_0x74ca('0x2d')](_0x74ca('0x70'),_0x2259d0);}}try{_0x1ea9b9[_0x74ca('0x71')]=_0x3cacad[_0x74ca('0x72')]?JSON[_0x74ca('0x6f')](_0x3cacad[_0x74ca('0x72')]):{};}catch(_0x1c3462){logger[_0x74ca('0x2d')](_0x74ca('0x73'),_0x1c3462);}if(_0x3cacad[_0x74ca('0x74')]){try{var _0x2ca16f=require(_0x3cacad[_0x74ca('0x74')])[_0x74ca('0x75')](this,_0x1ea9b9);_0x1ea9b9[_0x74ca('0x76')]=Mustache['render'](_0x3cacad['url'],_0x2ca16f,{},['$$','$$']);if(_0x1ea9b9['headers']){_0x1ea9b9[_0x74ca('0x71')]=JSON['parse'](Mustache[_0x74ca('0x77')](JSON[_0x74ca('0x78')](_0x1ea9b9['headers']),_0x2ca16f,{},['$$','$$']));}if(_0x1ea9b9[_0x74ca('0x6e')]){_0x1ea9b9[_0x74ca('0x6e')]=JSON[_0x74ca('0x6f')](Mustache[_0x74ca('0x77')](JSON[_0x74ca('0x78')](_0x1ea9b9[_0x74ca('0x6e')]),_0x2ca16f,{},['$$','$$']));}}catch(_0x2e4e96){logger[_0x74ca('0x2d')](_0x74ca('0x79'),_0x2e4e96);}}rp(_0x1ea9b9)[_0x74ca('0x11')](function(_0x34f02b){var _0x171e98={'statusCode':_0x34f02b[_0x74ca('0x7a')]||0xc8,'statusMessage':_0x34f02b[_0x74ca('0x7b')]||'OK','headers':_0x34f02b[_0x74ca('0x71')]||{},'body':_0x34f02b[_0x74ca('0x6e')]||{}};_0x15fafb(null,_0x171e98);})['catch'](function(_0x40feca){var _0x9679ba={'statusCode':_0x40feca['statusCode']||0x1f4,'statusMessage':_0x40feca[_0x74ca('0x7c')]||_0x74ca('0x7d'),'headers':_0x40feca[_0x74ca('0x7e')]['headers']||{},'body':_0x40feca[_0x74ca('0x7e')][_0x74ca('0x6e')]||{}};_0x15fafb(null,_0x9679ba);});};AGIVertices[_0x74ca('0xe')][_0x74ca('0x7f')]=function(_0x51aa5e,_0x43bcee){scripts[_0x74ca('0x7f')](this[_0x74ca('0x39')]['uniqueid'],_0x51aa5e[_0x74ca('0x80')],_0x51aa5e[_0x74ca('0x5e')],_0x51aa5e['dialogflow_language']||'en')[_0x74ca('0x11')](function(_0xc16735){_0x43bcee(null,_0xc16735);})[_0x74ca('0x13')](function(_0x382672){_0x43bcee(_0x382672);});};AGIVertices[_0x74ca('0xe')]['googleDialogflowV2']=function(_0x59307c,_0x3466b6){scripts[_0x74ca('0x81')](this[_0x74ca('0x39')]['uniqueid'],_0x59307c[_0x74ca('0x82')],_0x59307c[_0x74ca('0x83')],_0x59307c[_0x74ca('0x84')],_0x59307c[_0x74ca('0x5e')],_0x59307c[_0x74ca('0x85')]||'en')[_0x74ca('0x11')](function(_0x2ca374){_0x3466b6(null,_0x2ca374);})[_0x74ca('0x13')](function(_0x635e59){_0x3466b6(_0x635e59);});};AGIVertices[_0x74ca('0xe')][_0x74ca('0x86')]=function(_0x5751ef,_0xf7ca2c){scripts['sestekNDA'](this['channel'],_0x5751ef)[_0x74ca('0x11')](function(_0x3dba73){_0xf7ca2c(null,_0x3dba73);})[_0x74ca('0x13')](function(_0x3361b7){_0xf7ca2c(_0x3361b7);});};AGIVertices[_0x74ca('0xe')][_0x74ca('0x87')]=function(_0x4e52c7,_0x3a163d){scripts[_0x74ca('0x87')](_0x4e52c7['key'],_0x4e52c7[_0x74ca('0x5e')],_0x4e52c7[_0x74ca('0x88')]||'en-US',_0x4e52c7[_0x74ca('0x89')])[_0x74ca('0x11')](function(_0x476f52){_0x3a163d(null,_0x476f52);})[_0x74ca('0x13')](function(_0x7c68a2){_0x3a163d(_0x7c68a2);});};AGIVertices[_0x74ca('0xe')][_0x74ca('0x8a')]=function(_0x2790b7,_0x250ed5,_0x1fc629){scripts['ispeechASR'](_0x250ed5,_0x2790b7[_0x74ca('0x80')],_0x2790b7[_0x74ca('0x8b')]||_0x74ca('0x8c'),this[_0x74ca('0x8d')](_0x2790b7[_0x74ca('0x8e')])?_0x2790b7['model']:undefined)['then'](function(_0x383928){_0x1fc629(null,_0x383928);})[_0x74ca('0x13')](function(_0x4de8e3){_0x1fc629(_0x4de8e3);});};AGIVertices['prototype'][_0x74ca('0x8f')]=function(_0x631731,_0x32773a){scripts['awsPolly'](_0x631731['aws_access_key_id'],_0x631731[_0x74ca('0x90')],_0x631731[_0x74ca('0x91')],_0x631731['aws_polly_voice']||'Amy',_0x631731[_0x74ca('0x5e')],_0x631731['aws_text_type']||_0x74ca('0x5e'))[_0x74ca('0x11')](function(_0x44992f){_0x32773a(null,_0x44992f);})[_0x74ca('0x13')](function(_0x3a142a){_0x32773a(_0x3a142a);});};AGIVertices[_0x74ca('0xe')][_0x74ca('0x92')]=function(_0x5d9a9a,_0x119b0e){scripts[_0x74ca('0x92')](this[_0x74ca('0x39')]['uniqueid'],_0x5d9a9a[_0x74ca('0x93')],_0x5d9a9a[_0x74ca('0x90')],_0x5d9a9a[_0x74ca('0x94')],_0x5d9a9a[_0x74ca('0x5e')],_0x5d9a9a[_0x74ca('0x95')])[_0x74ca('0x11')](function(_0x1a14af){_0x119b0e(null,_0x1a14af);})[_0x74ca('0x13')](function(_0xf635ac){_0x119b0e(_0xf635ac);});};AGIVertices['prototype'][_0x74ca('0x96')]=function(_0x2b2c80,_0x1f73cd,_0x4223e0){scripts['googleASR'](_0x1f73cd,_0x2b2c80[_0x74ca('0x80')],_0x2b2c80[_0x74ca('0x97')]||_0x74ca('0x8c'))[_0x74ca('0x11')](function(_0x545d23){_0x4223e0(null,_0x545d23);})[_0x74ca('0x13')](function(_0x4743fa){_0x4223e0(_0x4743fa);});};AGIVertices[_0x74ca('0xe')][_0x74ca('0x98')]=function(_0x2221f3,_0x648e3c,_0x16b525){scripts[_0x74ca('0x98')](_0x648e3c,_0x2221f3[_0x74ca('0x99')],_0x2221f3[_0x74ca('0x9a')],_0x2221f3['uri'])[_0x74ca('0x11')](function(_0x1047b4){_0x16b525(null,_0x1047b4);})['catch'](function(_0x1db6a4){_0x16b525(_0x1db6a4);});};AGIVertices[_0x74ca('0xe')][_0x74ca('0x9b')]=function(_0x44ad1a){var _0x26cfd0=_[_0x74ca('0x69')](verticesWithRetry,_0x44ad1a['agicommand'])?_0x44ad1a:_[_0x74ca('0x9c')](_0x44ad1a);for(var _0x54cdf3 in _0x26cfd0){if(_0x26cfd0[_0x74ca('0x9d')](_0x54cdf3)){if(_0x26cfd0[_0x54cdf3]&&_[_0x74ca('0x9e')](_0x26cfd0[_0x54cdf3])){if(_[_0x74ca('0x69')](recursiveMapAttributes,_0x54cdf3)){_0x26cfd0[_0x54cdf3]=this[_0x74ca('0x9f')](_0x26cfd0[_0x54cdf3]);}else{_0x26cfd0[_0x54cdf3]=this[_0x74ca('0xa0')](_0x26cfd0[_0x54cdf3]);}}}}return _0x26cfd0;};AGIVertices['prototype'][_0x74ca('0xa1')]=function(_0x42ca69){for(var _0x2d7e23 in _0x42ca69){if(_0x42ca69[_0x74ca('0x9d')](_0x2d7e23)){if(_['isPlainObject'](_0x42ca69[_0x2d7e23])){this['recursiveNodeIndex'](_0x42ca69[_0x2d7e23]);}else if(_[_0x74ca('0xa2')](_0x42ca69[_0x2d7e23])){for(var _0x2a3a62=0x0;_0x2a3a62<_0x42ca69[_0x2d7e23][_0x74ca('0xa3')];_0x2a3a62++){this[_0x74ca('0xa1')](_0x42ca69[_0x2d7e23][_0x2a3a62]);}}else if(_[_0x74ca('0x9e')](_0x42ca69[_0x2d7e23])){_0x42ca69[_0x2d7e23]=this[_0x74ca('0xa0')](_0x42ca69[_0x2d7e23]);}}}};AGIVertices[_0x74ca('0xe')][_0x74ca('0xa4')]=function(_0x5389f8,_0x24c633){for(var _0x1cc8bc in _0x5389f8){if(_0x5389f8[_0x74ca('0x9d')](_0x1cc8bc)){if(_[_0x74ca('0xa5')](_0x5389f8[_0x1cc8bc])){if(!_[_0x74ca('0x43')](_0x5389f8[_0x1cc8bc])){this[_0x74ca('0xa4')](_0x5389f8[_0x1cc8bc],util[_0x74ca('0x55')](_0x74ca('0xa6'),_0x24c633,_0x1cc8bc));}}else if(_[_0x74ca('0xa2')](_0x5389f8[_0x1cc8bc])){for(var _0x353eca=0x0;_0x353eca<_0x5389f8[_0x1cc8bc][_0x74ca('0xa3')];_0x353eca++){this[_0x74ca('0xa4')](_0x5389f8[_0x1cc8bc][_0x353eca],util['format'](_0x74ca('0xa6'),_0x24c633,_0x1cc8bc+'['+_0x353eca+']'));}}else{if(!_[_0x74ca('0x46')](_0x5389f8[_0x1cc8bc])){this['channel'][_0x74ca('0xa7')](util[_0x74ca('0x55')]('%s.%s',_0x24c633,_0x1cc8bc),_0x5389f8[_0x1cc8bc]);}}}}};AGIVertices[_0x74ca('0xe')][_0x74ca('0x9f')]=function(_0x2fb480){try{var _0x44987c=JSON['parse'](_0x2fb480);this['recursiveNodeIndex'](_0x44987c);return JSON[_0x74ca('0x78')](_0x44987c);}catch(_0x32e429){return this[_0x74ca('0xa0')](_0x2fb480);}};AGIVertices[_0x74ca('0xe')]['replaceAllVariables']=function(_0x7df75a){var _0x19f5b5=_0x7df75a[_0x74ca('0xa8')]('{');for(var _0x4689b6=0x1;_0x4689b6<_0x19f5b5[_0x74ca('0xa3')];_0x4689b6+=0x1){var _0x2a9548=_0x19f5b5[_0x4689b6]['split']('}');if(_0x2a9548['length']>0x1){_0x7df75a=_0x7df75a['replaceAll']('{'+_0x2a9548[0x0]+'}',this[_0x74ca('0x39')][_0x74ca('0xf')](_0x2a9548[0x0])[_0x74ca('0xa9')]||_0x2a9548[0x0]);}}if(_0x19f5b5[_0x74ca('0xa3')]===0x1){return _0x7df75a[_0x74ca('0x4c')]();}return this[_0x74ca('0xa0')](_0x7df75a);};AGIVertices[_0x74ca('0xe')][_0x74ca('0xaa')]=function(_0x323da7,_0x5528c3){var _0x52625=this[_0x74ca('0x39')][_0x74ca('0xf')](_0x323da7);if(_0x52625['result']===-0x1){return _0x52625;}logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0xab'),_0x5528c3,_0x52625[_0x74ca('0xa9')]));return this['channel'][_0x74ca('0xa7')](_0x5528c3,_0x52625[_0x74ca('0xa9')]);};AGIVertices[_0x74ca('0xe')]['isConfigured']=function(_0xb2e0d2){return _0xb2e0d2&&_0xb2e0d2!=='0'&&_0xb2e0d2!=='-1'&&_0xb2e0d2!=='';};AGIVertices[_0x74ca('0xe')][_0x74ca('0xac')]=function(_0x153e29){this[_0x74ca('0x38')]['sync'](this,_0x153e29,'-');_0x153e29[_0x74ca('0xad')]=_0x153e29['maxRetry'];return{'code':0xc8,'result':'-'};};AGIVertices[_0x74ca('0xe')]['mrcpsynth']=function(_0x5d342a){logger['info'](util[_0x74ca('0x55')]('Enter\x20in\x20MRCPSynth\x20(%s)\x20block',_0x5d342a[_0x74ca('0xae')]));if(!this[_0x74ca('0x8d')](_0x5d342a[_0x74ca('0x5e')])){return this[_0x74ca('0x39')]['noop'](_0x74ca('0xaf'));}var _0x5b23c4='\x22'+_0x5d342a['text']+'\x22';if(this[_0x74ca('0x8d')](_0x5d342a[_0x74ca('0x7e')])){_0x5b23c4+=','+_0x5d342a[_0x74ca('0x7e')];}var _0x101244=this[_0x74ca('0x39')][_0x74ca('0x58')](_0x74ca('0xb0'),_0x5b23c4);if(_0x101244[_0x74ca('0xb1')]===-0x1){return _0x101244;}return this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0xb3'),_0x5b23c4));};AGIVertices[_0x74ca('0xe')]['mrcprecog']=function(_0x4d973c){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0xb4'),_0x4d973c['label']));if(!this[_0x74ca('0x8d')](_0x4d973c['grammar'])){return this[_0x74ca('0x39')][_0x74ca('0xb2')](_0x74ca('0xb5'));}var _0x17eb0c=_0x4d973c['grammar'];if(this[_0x74ca('0x8d')](_0x4d973c[_0x74ca('0x7e')])){_0x17eb0c+=','+_0x4d973c[_0x74ca('0x7e')];}var _0x1574a1=this[_0x74ca('0x39')][_0x74ca('0x58')](_0x74ca('0xb6'),_0x17eb0c);if(_0x1574a1[_0x74ca('0xb1')]===-0x1){return _0x1574a1;}var _0x786c44=this[_0x74ca('0xaa')](_0x74ca('0xb7'),'MRCP_RECOG_CONFIDENCE');if(_0x786c44[_0x74ca('0xb1')]===-0x1){return _0x786c44;}var _0x35181b=this[_0x74ca('0xaa')](_0x74ca('0xb8'),'MRCP_RECOG_TRANSCRIPT');if(_0x35181b[_0x74ca('0xb1')]===-0x1){return _0x35181b;}var _0x5ece14=this['getAndSetVariable'](_0x74ca('0xb9'),_0x74ca('0xba'));if(_0x5ece14['result']===-0x1){return _0x5ece14;}return this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0xbb'),_0x17eb0c));};AGIVertices['prototype'][_0x74ca('0xbc')]=function(_0x4a2c7f){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0xbd'),_0x4a2c7f['label']));return this[_0x74ca('0x39')][_0x74ca('0xbc')]([_0x4a2c7f['command'],_0x4a2c7f['args']]);};AGIVertices[_0x74ca('0xe')]['answer']=function(_0x4e14ec){logger[_0x74ca('0x30')](util[_0x74ca('0x55')]('Enter\x20in\x20ANSWER\x20(%s)\x20block',_0x4e14ec[_0x74ca('0xae')]));if(this['isConfigured'](_0x4e14ec['timeout'])){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0xbe'),_0x4e14ec[_0x74ca('0x67')]));var _0x4a4107=this[_0x74ca('0x39')][_0x74ca('0xbf')](_0x4e14ec[_0x74ca('0x67')]);if(_0x4a4107[_0x74ca('0xb1')]===-0x1){return _0x4a4107;}}return this[_0x74ca('0x39')][_0x74ca('0xc0')]();};AGIVertices[_0x74ca('0xe')][_0x74ca('0x4a')]=function(_0x3cca34){logger[_0x74ca('0x30')](util['format']('Enter\x20in\x20CALLBACK\x20(%s)\x20block',_0x3cca34[_0x74ca('0xae')]));if(!this[_0x74ca('0x8d')](_0x3cca34[_0x74ca('0x48')])){return this[_0x74ca('0x39')]['error'](_0x3cca34,_0x74ca('0xc1'));}_0x3cca34[_0x74ca('0x49')]=moment();if(this[_0x74ca('0x8d')](_0x3cca34[_0x74ca('0xc2')])){_0x3cca34['scheduledAt']=moment()['add'](_0x3cca34[_0x74ca('0xc2')],_0x74ca('0xc3'));}if(!this[_0x74ca('0x8d')](_0x3cca34['callback_priority'])){_0x3cca34[_0x74ca('0x4d')]=0x2;}this[_0x74ca('0x42')][_0x74ca('0x75')](this,_0x3cca34);return this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0xc4'),_0x3cca34[_0x74ca('0x47')],_0x3cca34[_0x74ca('0x48')],_0x3cca34['scheduledAt']));};AGIVertices[_0x74ca('0xe')]['custom_app']=function(_0x5657a9){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0xc5'),_0x5657a9[_0x74ca('0xae')]));var _0x2ee5b2=this[_0x74ca('0x39')]['exec'](_0x5657a9['application'],_0x5657a9[_0x74ca('0x7e')]);if(_0x2ee5b2[_0x74ca('0xb1')]===-0x1){return _0x2ee5b2;}return this[_0x74ca('0x39')][_0x74ca('0xb2')](util['format'](_0x74ca('0xc6'),_0x5657a9['application'],_0x5657a9[_0x74ca('0x7e')]));};AGIVertices[_0x74ca('0xe')]['lumenvoxtts']=function(_0x1bf0ec){logger['info'](util[_0x74ca('0x55')](_0x74ca('0xc7'),_0x1bf0ec['label']));if(!this[_0x74ca('0x8d')](_0x1bf0ec[_0x74ca('0x5e')])){return this[_0x74ca('0x39')][_0x74ca('0xb2')](_0x74ca('0xaf'));}var _0x2ff652='\x22'+_0x1bf0ec[_0x74ca('0x5e')]+'\x22';if(this[_0x74ca('0x8d')](_0x1bf0ec[_0x74ca('0x7e')])){_0x2ff652+=','+_0x1bf0ec[_0x74ca('0x7e')];}var _0x2c5887=this[_0x74ca('0x39')][_0x74ca('0x58')]('MRCPSynth',_0x2ff652);if(_0x2c5887['result']===-0x1){return _0x2c5887;}return this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0xb3'),_0x2ff652));};AGIVertices[_0x74ca('0xe')]['sestektts']=function(_0x2dd9f5){logger[_0x74ca('0x30')](util['format']('Enter\x20in\x20SESTEKTTS\x20(%s)\x20block',_0x2dd9f5[_0x74ca('0xae')]));if(!this[_0x74ca('0x8d')](_0x2dd9f5[_0x74ca('0x5e')])){return this[_0x74ca('0x39')][_0x74ca('0xb2')](_0x74ca('0xaf'));}var _0x26c0b4='\x22'+_0x2dd9f5[_0x74ca('0x5e')]+'\x22';if(this[_0x74ca('0x8d')](_0x2dd9f5[_0x74ca('0x7e')])){_0x26c0b4+=','+_0x2dd9f5[_0x74ca('0x7e')];}var _0x3ba424=this['channel']['exec'](_0x74ca('0xb0'),_0x26c0b4);if(_0x3ba424['result']===-0x1){return _0x3ba424;}return this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0xb3'),_0x26c0b4));};AGIVertices[_0x74ca('0xe')]['lumenvoxasr']=function(_0x5381be){logger[_0x74ca('0x30')](util[_0x74ca('0x55')]('Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block',_0x5381be['label']));if(!this[_0x74ca('0x8d')](_0x5381be['grammar'])){return this[_0x74ca('0x39')][_0x74ca('0xb2')](_0x74ca('0xb5'));}var _0x310e3b=_0x5381be[_0x74ca('0xc8')];if(this['isConfigured'](_0x5381be['options'])){_0x310e3b+=','+_0x5381be['options'];}var _0x52c950=this[_0x74ca('0x39')][_0x74ca('0x58')](_0x74ca('0xb6'),_0x310e3b);if(_0x52c950[_0x74ca('0xb1')]===-0x1){return _0x52c950;}var _0xe62b3c=this['getAndSetVariable'](_0x74ca('0xb7'),'LUMENVOX_ASR_CONFIDENCE');if(_0xe62b3c[_0x74ca('0xb1')]===-0x1){return _0xe62b3c;}var _0xf461c1=this[_0x74ca('0xaa')]('RECOG_INPUT()',_0x74ca('0xc9'));if(_0xf461c1[_0x74ca('0xb1')]===-0x1){return _0xf461c1;}var _0x1ed49c=this[_0x74ca('0xaa')]('RECOG_INSTANCE()',_0x74ca('0xca'));if(_0x1ed49c['result']===-0x1){return _0x1ed49c;}return this[_0x74ca('0x39')][_0x74ca('0xb2')](util['format'](_0x74ca('0xbb'),_0x310e3b));};AGIVertices[_0x74ca('0xe')][_0x74ca('0xcb')]=function(_0x27e380){logger['info'](util[_0x74ca('0x55')]('Enter\x20in\x20SESTEKASR\x20(%s)\x20block',_0x27e380[_0x74ca('0xae')]));if(!this['isConfigured'](_0x27e380['grammar'])){return this[_0x74ca('0x39')]['noop'](_0x74ca('0xb5'));}var _0x5120e0=_0x27e380['grammar'];if(this[_0x74ca('0x8d')](_0x27e380[_0x74ca('0x7e')])){_0x5120e0+=','+_0x27e380[_0x74ca('0x7e')];}var _0x346b19=this[_0x74ca('0x39')]['exec'](_0x74ca('0xb6'),_0x5120e0);if(_0x346b19['result']===-0x1){return _0x346b19;}var _0x13f2f2=this[_0x74ca('0xaa')]('RECOG_CONFIDENCE()','SESTEK_ASR_CONFIDENCE');if(_0x13f2f2[_0x74ca('0xb1')]===-0x1){return _0x13f2f2;}var _0x5bf4fc=this[_0x74ca('0xaa')](_0x74ca('0xb8'),'SESTEK_ASR_TRANSCRIPT');if(_0x5bf4fc[_0x74ca('0xb1')]===-0x1){return _0x5bf4fc;}var _0x47f34f=this[_0x74ca('0xaa')](_0x74ca('0xb9'),_0x74ca('0xcc'));if(_0x47f34f[_0x74ca('0xb1')]===-0x1){return _0x47f34f;}return this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0xbb'),_0x5120e0));};AGIVertices['prototype'][_0x74ca('0xcd')]=function(_0x13a9ef){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0xce'),_0x13a9ef[_0x74ca('0xae')]));if(!this[_0x74ca('0x8d')](_0x13a9ef['odbc_id'])){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x13a9ef,'no\x20database\x20selected');}var _0xdc4716=this[_0x74ca('0x18')][_0x74ca('0x75')](this,_0x13a9ef['odbc_id']);if(!_0xdc4716){return this[_0x74ca('0x39')]['error'](_0x13a9ef,_0x74ca('0xcf'));}if(!this['isConfigured'](_0x13a9ef[_0x74ca('0xd0')])){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x13a9ef,_0x74ca('0xd1'));}var _0x278558=_0x13a9ef[_0x74ca('0xd0')][_0x74ca('0x5a')](/(\r\n|\n|\r)/gm,'\x20');this[_0x74ca('0x39')]['noop'](util['format'](_0x74ca('0xd2'),_0x278558));var _0x37f5f4=this[_0x74ca('0x2b')]['sync'](this,_0xdc4716,_0x278558);this[_0x74ca('0x38')][_0x74ca('0x75')](this,_0x13a9ef,_0x278558);if(!this['isConfigured'](_0x13a9ef['variable_id'])){return this[_0x74ca('0x39')][_0x74ca('0xb2')](_0x74ca('0xd3'));}var _0x443d05=this[_0x74ca('0xf')]['sync'](this,_0x13a9ef['variable_id']);if(!_0x443d05){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x13a9ef,_0x74ca('0xd4'));}var _0xd86abb=this;_0x37f5f4[_0x74ca('0xd5')](function(_0x26f230,_0x3558ad){Object[_0x74ca('0xd6')](_0x26f230)['forEach'](function(_0x180c35){_0xd86abb['channel'][_0x74ca('0xa7')](util[_0x74ca('0x55')](_0x74ca('0xd7'),_0x443d05,_0x3558ad,_0x180c35),_0x26f230[_0x180c35]);});});this[_0x74ca('0x39')]['setVariable'](util['format'](_0x74ca('0xd8'),_0x443d05),_0x37f5f4[_0x74ca('0xa3')]);return this[_0x74ca('0x39')][_0x74ca('0xb2')](util['format'](_0x74ca('0xd9'),_0x443d05));};AGIVertices[_0x74ca('0xe')][_0x74ca('0xda')]=function(_0x5ba351){logger[_0x74ca('0xdb')](util[_0x74ca('0x55')]('Enter\x20in\x20DIAL\x20(%s)\x20block',_0x5ba351[_0x74ca('0xae')]));if(!this['isConfigured'](_0x5ba351[_0x74ca('0xdc')])){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x5ba351,_0x74ca('0xdd'));}var _0x2d0620=this[_0x74ca('0xde')][_0x74ca('0x75')](this,_0x5ba351[_0x74ca('0xdc')]);if(!_0x2d0620){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x5ba351,_0x74ca('0xdf'));}var _0x2034d9=this[_0x74ca('0x39')]['exec'](_0x74ca('0xe0'),[util[_0x74ca('0x55')]('SIP/%s',_0x2d0620),_0x5ba351['timeout'],_0x5ba351[_0x74ca('0xe1')],_0x5ba351[_0x74ca('0x66')]]);if(_0x2034d9['result']===-0x1){return _0x2034d9;}return this['channel']['noop'](util[_0x74ca('0x55')](_0x74ca('0xe2'),_0x74ca('0xe0')));};AGIVertices[_0x74ca('0xe')][_0x74ca('0xe3')]=function(_0x14e691){logger[_0x74ca('0x30')](util[_0x74ca('0x55')]('Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block',_0x14e691[_0x74ca('0xae')]));if(!this['isConfigured'](_0x14e691[_0x74ca('0x80')])){return this[_0x74ca('0x39')][_0x74ca('0xb2')]('no\x20key\x20configured');}if(!this[_0x74ca('0x8d')](_0x14e691[_0x74ca('0x5e')])){return this['channel'][_0x74ca('0xb2')]('no\x20text\x20configured');}this[_0x74ca('0x39')][_0x74ca('0xe4')]=!![];this[_0x74ca('0x38')](_0x14e691);this['createSquareMessage'](_0x14e691['text'],'in','','');this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0xe5'),_0x14e691[_0x74ca('0x5e')]));var _0x47d13b=this[_0x74ca('0x7f')][_0x74ca('0x75')](this,_0x14e691);if(_0x47d13b){for(var _0x1096d6 in _0x47d13b){if(_0x47d13b[_0x74ca('0x9d')](_0x1096d6)){this['channel'][_0x74ca('0xa7')](util[_0x74ca('0x55')](_0x74ca('0xe6'),_0x1096d6[_0x74ca('0x6d')]()),_0x47d13b[_0x1096d6]);}}this[_0x74ca('0xe7')](_0x47d13b[_0x74ca('0xe8')],_0x74ca('0xe9'),_0x74ca('0xe3'),'');return this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')]('Dialogflow\x20Result\x20%s',_0x47d13b[_0x74ca('0xe8')]));}return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x14e691,'Dialogflow\x20is\x20unreachable');};AGIVertices[_0x74ca('0xe')][_0x74ca('0xea')]=function(_0x270c03){logger['info'](util['format'](_0x74ca('0xeb'),_0x270c03[_0x74ca('0xae')]));if(!this[_0x74ca('0x8d')](_0x270c03[_0x74ca('0x82')])){return this[_0x74ca('0x39')][_0x74ca('0xb2')]('no\x20project_id\x20configured');}if(!this[_0x74ca('0x8d')](_0x270c03['client_email'])){return this[_0x74ca('0x39')]['noop'](_0x74ca('0xec'));}if(!this[_0x74ca('0x8d')](_0x270c03[_0x74ca('0x84')])){return this[_0x74ca('0x39')]['noop'](_0x74ca('0xed'));}if(!this['isConfigured'](_0x270c03[_0x74ca('0x85')])){return this['channel'][_0x74ca('0xb2')](_0x74ca('0xee'));}if(!this['isConfigured'](_0x270c03[_0x74ca('0x5e')])){return this[_0x74ca('0x39')][_0x74ca('0xb2')]('no\x20text\x20configured');}this[_0x74ca('0x39')][_0x74ca('0xe4')]=!![];this['createSquareDetailsReport'](_0x270c03);this[_0x74ca('0xe7')](_0x270c03['text'],'in','','');this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0xef'),_0x270c03[_0x74ca('0x5e')]));var _0x290247=this[_0x74ca('0x81')][_0x74ca('0x75')](this,_0x270c03);if(_0x290247){for(var _0x21f6bc in _0x290247){if(_0x290247[_0x74ca('0x9d')](_0x21f6bc)){if(_0x21f6bc!==_0x74ca('0xf0')){this[_0x74ca('0x39')][_0x74ca('0xa7')](util['format'](_0x74ca('0xe6'),_0x21f6bc['toUpperCase']()),_0x290247[_0x21f6bc]);}}}this[_0x74ca('0xe7')](_0x290247[_0x74ca('0xe8')],'out',_0x74ca('0xea'),_0x290247[_0x74ca('0xf0')]);return this['channel'][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0xf1'),_0x290247[_0x74ca('0xe8')]));}return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x270c03,_0x74ca('0xf2'));};AGIVertices[_0x74ca('0xe')][_0x74ca('0xf3')]=function(_0x1076de){logger['info'](util[_0x74ca('0x55')](_0x74ca('0xf4'),_0x1076de[_0x74ca('0xae')]));if(!this[_0x74ca('0x8d')](_0x1076de[_0x74ca('0xf5')])){return this[_0x74ca('0x39')][_0x74ca('0xb2')](_0x74ca('0xf6'));}if(!this[_0x74ca('0x8d')](_0x1076de[_0x74ca('0xf7')])){return this['channel']['noop'](_0x74ca('0xf8'));}if(!this[_0x74ca('0x8d')](_0x1076de['password'])){return this[_0x74ca('0x39')][_0x74ca('0xb2')](_0x74ca('0xf9'));}if(!this[_0x74ca('0x8d')](_0x1076de[_0x74ca('0xfa')])){return this[_0x74ca('0x39')]['noop']('no\x20text\x20configured');}this[_0x74ca('0x39')]['bot']=!![];this[_0x74ca('0x38')](_0x1076de);this[_0x74ca('0xe7')](_0x1076de['text'],'in','','');this['channel'][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0xfb'),_0x1076de[_0x74ca('0x5e')]));var _0x23831c=this[_0x74ca('0x86')][_0x74ca('0x75')](this,_0x1076de);if(_0x23831c){for(var _0x50c9fb in _0x23831c){if(_0x23831c[_0x74ca('0x9d')](_0x50c9fb)){this['channel'][_0x74ca('0xa7')](util[_0x74ca('0x55')]('SESTEK_NDA_%s',_0x50c9fb[_0x74ca('0x6d')]()),_0x23831c[_0x50c9fb]);}}this[_0x74ca('0xe7')](_0x23831c[_0x74ca('0xe8')],'out',_0x74ca('0xf3'),'');if(_0x23831c[_0x74ca('0xfc')]){this[_0x74ca('0x39')][_0x74ca('0xb2')](util['format']('Sestek\x20NDA\x20%s\x20file\x20created',_0x23831c[_0x74ca('0xfc')]));var _0x50283c=this[_0x74ca('0x39')]['streamFile'](_0x23831c['audiofile']);try{fs[_0x74ca('0xfd')](_0x23831c['audiofile']+'.wav');}catch(_0x5dba5e){logger['error'](_0x5dba5e);}return _0x50283c;}else{return this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')]('SestekNDA\x20Result\x20%s',_0x23831c[_0x74ca('0xe8')]));}}return this['channel'][_0x74ca('0x2d')](_0x1076de,'SestekNDA\x20is\x20unreachable');};AGIVertices['prototype'][_0x74ca('0xfe')]=function(_0x53a74d){logger['info'](util[_0x74ca('0x55')](_0x74ca('0xff'),_0x53a74d[_0x74ca('0xae')]));return this['channel'][_0x74ca('0xb2')](_0x74ca('0xfe'));};AGIVertices[_0x74ca('0xe')][_0x74ca('0x100')]=function(_0xf78252){logger[_0x74ca('0x30')](util[_0x74ca('0x55')]('Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block',_0xf78252[_0x74ca('0xae')]));var _0x40449b='';if(_0xf78252[_0x74ca('0x101')]){if(!this[_0x74ca('0x8d')](_0xf78252[_0x74ca('0x101')])){return this['channel'][_0x74ca('0x2d')](_0xf78252,_0x74ca('0x102'));}else{var _0x5cd79d=parseInt(_0xf78252['trunk_id'],0xa);if(isNaN(_0x5cd79d)){_0x40449b=_0xf78252[_0x74ca('0x101')];}else{_0x40449b=this[_0x74ca('0x103')][_0x74ca('0x75')](this,_0xf78252['trunk_id']);if(!_0x40449b){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0xf78252,'no\x20trunk\x20found');}}}}else if(_0xf78252[_0x74ca('0x104')]){_0x40449b=_0xf78252[_0x74ca('0x104')];}else{return this[_0x74ca('0x39')]['error'](_0xf78252,_0x74ca('0x102'));}var _0x561b17=this['channel']['exec'](_0x74ca('0xe0'),[util[_0x74ca('0x55')]('SIP/%s/%s',_0x40449b,_0xf78252[_0x74ca('0x47')]),_0xf78252[_0x74ca('0x67')],_0xf78252['opts'],_0xf78252[_0x74ca('0x66')]]);if(_0x561b17['result']===-0x1){return _0x561b17;}return this['channel'][_0x74ca('0xb2')](util[_0x74ca('0x55')]('Executed\x20command\x20%s',_0x74ca('0xe0')));};AGIVertices['prototype'][_0x74ca('0x105')]=function(_0x2ff192){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x106'),_0x2ff192['label']));return this['channel'][_0x74ca('0xb2')](_0x74ca('0x105'));};AGIVertices[_0x74ca('0xe')][_0x74ca('0xb')]=function(_0x556591){logger['info'](util['format'](_0x74ca('0x107'),_0x556591[_0x74ca('0xae')]));if(_0x556591[_0x74ca('0xad')]===0x0){return this[_0x74ca('0xac')](_0x556591);}_0x556591[_0x74ca('0xad')]-=0x1;if(!this[_0x74ca('0x8d')](_0x556591['file_id'])){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x556591,_0x74ca('0x108'));}var _0x3a56bd=this[_0x74ca('0x1d')][_0x74ca('0x75')](this,_0x556591[_0x74ca('0x109')]);if(!_0x3a56bd){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x556591,_0x74ca('0x10a'));}if(!this[_0x74ca('0x8d')](_0x556591['variable_id'])){return this[_0x74ca('0x39')]['error'](_0x74ca('0xd3'));}var _0x681d9e=this[_0x74ca('0x39')][_0x74ca('0x10b')](_0x3a56bd,_0x556591[_0x74ca('0x10c')],_0x556591['maxdigit']);var _0x57c095=_0x681d9e[_0x74ca('0xb1')]?_0x681d9e[_0x74ca('0xb1')][_0x74ca('0x4c')]():'';logger[_0x74ca('0x30')](_0x74ca('0x10d'),JSON['stringify'](_0x681d9e));if(_0x681d9e[_0x74ca('0xb1')]===-0x1){this[_0x74ca('0x38')][_0x74ca('0x75')](this,_0x556591,_0x57c095);return _0x681d9e;}else if(_0x681d9e[_0x74ca('0xa9')]===_0x74ca('0x67')){_0x681d9e['result']=_0x57c095['length']>=parseInt(_0x556591[_0x74ca('0x10e')])?'x':'i';}else{_0x681d9e[_0x74ca('0xb1')]=_0x57c095[_0x74ca('0xa3')]>=parseInt(_0x556591[_0x74ca('0x10e')])&&_0x57c095[_0x74ca('0xa3')]<=parseInt(_0x556591[_0x74ca('0x10f')])?'x':'i';}var _0x19187d=this['getVariable'][_0x74ca('0x75')](this,_0x556591[_0x74ca('0x110')]);if(!_0x19187d){return this[_0x74ca('0x39')]['error'](_0x556591,_0x74ca('0xd4'));}this[_0x74ca('0x39')][_0x74ca('0xa7')](_0x19187d,_0x57c095);if(this[_0x74ca('0x8d')](_0x556591[_0x74ca('0x111')])){var _0x586fab=parseInt(_0x556591['hiddendigitsnum'],0xa);var _0xcac6fc=rs[_0x74ca('0x112')]({'charset':'*','length':_0x586fab});var _0xb56e6a=_0x57c095['length'];if(_0xb56e6a>0x0){if(_0xb56e6a>_0x586fab){this[_0x74ca('0x38')][_0x74ca('0x75')](this,_0x556591,_0x556591[_0x74ca('0x113')]===_0x74ca('0x114')?_0xcac6fc+_0x57c095[_0x74ca('0x115')](_0x586fab):_0x57c095[_0x74ca('0x115')](0x0,_0xb56e6a-_0x586fab)+_0xcac6fc);}else{this[_0x74ca('0x38')][_0x74ca('0x75')](this,_0x556591,rs[_0x74ca('0x112')]({'charset':'*','length':_0xb56e6a}));}}else{this['createSquareDetailsReport']['sync'](this,_0x556591,'');}}else{this['createSquareDetailsReport'][_0x74ca('0x75')](this,_0x556591,_0x57c095);}return _0x681d9e;};AGIVertices[_0x74ca('0xe')][_0x74ca('0xc')]=function(_0x388789){logger['info'](util['format'](_0x74ca('0x116'),_0x388789[_0x74ca('0xae')]));return this[_0x74ca('0xb')](_0x388789);};AGIVertices[_0x74ca('0xe')][_0x74ca('0x117')]=function(_0x2413f2){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x118'),_0x2413f2[_0x74ca('0xae')]));this['createSquareDetailsReport'][_0x74ca('0x75')](this,_0x2413f2,_0x2413f2[_0x74ca('0x119')]);return this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0x11a'),_0x2413f2[_0x74ca('0x119')]));};AGIVertices[_0x74ca('0xe')][_0x74ca('0x11b')]=function(_0x244d83){logger['info'](util[_0x74ca('0x55')]('[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block',_0x244d83['label']));if(!this['isConfigured'](_0x244d83['aws_access_key_id'])||!this[_0x74ca('0x8d')](_0x244d83['aws_secret_access_key'])){return this['channel']['noop']('no\x20valid\x20credentials\x20configured');}if(!this[_0x74ca('0x8d')](_0x244d83['text'])){return this['channel'][_0x74ca('0xb2')](_0x74ca('0xaf'));}this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0x11c'),_0x244d83[_0x74ca('0x5e')]));var _0x495cc6=this[_0x74ca('0x8f')][_0x74ca('0x75')](this,_0x244d83);if(_0x495cc6){this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')]('aws\x20Polly\x20%s\x20file\x20created',_0x495cc6));var _0xbb731=this[_0x74ca('0x39')][_0x74ca('0x11d')](_0x495cc6);try{fs[_0x74ca('0xfd')](_0x495cc6+'.wav');}catch(_0xf4391f){logger['error'](_0xf4391f);}return _0xbb731;}return this['channel']['error'](_0x244d83,_0x74ca('0x11e'));};AGIVertices[_0x74ca('0xe')][_0x74ca('0x11f')]=function(_0x23ca99){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x120'),_0x23ca99['label']));if(!this[_0x74ca('0x8d')](_0x23ca99['aws_access_key_id'])||!this[_0x74ca('0x8d')](_0x23ca99[_0x74ca('0x90')])){return this[_0x74ca('0x39')][_0x74ca('0xb2')](_0x74ca('0x121'));}if(!this[_0x74ca('0x8d')](_0x23ca99['aws_bot_name'])){return this[_0x74ca('0x39')]['noop'](_0x74ca('0x122'));}if(!this[_0x74ca('0x8d')](_0x23ca99[_0x74ca('0x5e')])){return this[_0x74ca('0x39')]['noop']('no\x20text\x20configured');}this[_0x74ca('0x39')]['bot']=!![];this['createSquareDetailsReport'](_0x23ca99);this[_0x74ca('0xe7')](_0x23ca99['text'],'in','','');this[_0x74ca('0x39')]['noop'](util['format'](_0x74ca('0x123'),_0x23ca99[_0x74ca('0x5e')]));var _0x3f0368=this[_0x74ca('0x92')][_0x74ca('0x75')](this,_0x23ca99);if(_0x3f0368){for(var _0x389df3 in _0x3f0368){if(_0x3f0368[_0x74ca('0x9d')](_0x389df3)&&_[_0x74ca('0x9e')](_0x3f0368[_0x389df3])){this[_0x74ca('0x39')]['setVariable'](util['format'](_0x74ca('0x124'),_0x389df3['toUpperCase']()),_0x3f0368[_0x389df3]);}}if(_[_0x74ca('0x46')](_0x3f0368[_0x74ca('0x7c')])){return this[_0x74ca('0x39')][_0x74ca('0xb2')]('Amazon\x20Lex\x20ready\x20for\x20fulfillment');}else{this[_0x74ca('0xe7')](_0x3f0368['message'],_0x74ca('0xe9'),_0x74ca('0x125'),'');return this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0x126'),_0x3f0368[_0x74ca('0x7c')]));}}return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x23ca99,_0x74ca('0x127'));};AGIVertices['prototype'][_0x74ca('0x128')]=function(_0x227d68){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x129'),_0x227d68[_0x74ca('0xae')],_0x227d68[_0x74ca('0x67')]));if(!this[_0x74ca('0x8d')](_0x227d68[_0x74ca('0x80')])){return this['channel'][_0x74ca('0xb2')](_0x74ca('0x12a'));}var _0x135dd1='wav';var _0x17f1a1=util[_0x74ca('0x55')](_0x74ca('0x12b'),FILES_PATH,rs[_0x74ca('0x112')](0x4));var _0x3e5662=util[_0x74ca('0x55')](_0x74ca('0xa6'),_0x17f1a1,_0x135dd1);var _0x419505=!![];if(_0x227d68[_0x74ca('0x12c')]===_0x74ca('0x12d')){_0x419505=![];}var _0x4d253b=this[_0x74ca('0x39')][_0x74ca('0x12e')](_0x17f1a1,_0x135dd1,_0x227d68[_0x74ca('0x12f')],_0x227d68[_0x74ca('0x67')],undefined,_0x419505);if(_0x4d253b[_0x74ca('0xb1')]!==-0x1){this[_0x74ca('0x39')]['noop'](util[_0x74ca('0x55')](_0x74ca('0x130'),_0x3e5662));var _0x1148c6=this[_0x74ca('0x96')]['sync'](this,_0x227d68,_0x3e5662);if(_0x1148c6){for(var _0x3623e8 in _0x1148c6){if(_0x1148c6[_0x74ca('0x9d')](_0x3623e8)){this[_0x74ca('0x39')]['setVariable'](util[_0x74ca('0x55')](_0x74ca('0x131'),_0x3623e8[_0x74ca('0x6d')]()),_0x1148c6[_0x3623e8]);}}return this[_0x74ca('0x39')]['noop'](util['format'](_0x74ca('0x132'),JSON['stringify'](_0x1148c6)));}}return _0x4d253b;};AGIVertices[_0x74ca('0xe')]['tildeasr']=function(_0x39fb97){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x133'),_0x39fb97[_0x74ca('0xae')]));if(!this[_0x74ca('0x8d')](_0x39fb97['appid'])){return this[_0x74ca('0x39')][_0x74ca('0xb2')]('no\x20appid\x20configured');}if(!this[_0x74ca('0x8d')](_0x39fb97[_0x74ca('0x9a')])){return this[_0x74ca('0x39')][_0x74ca('0xb2')]('no\x20appsecret\x20configured');}var _0x2fe2e5=_0x74ca('0x134');var _0x2888e3=util[_0x74ca('0x55')]('%s/recordings/%s',FILES_PATH,rs[_0x74ca('0x112')](0x4));var _0x118672=util[_0x74ca('0x55')](_0x74ca('0xa6'),_0x2888e3,_0x2fe2e5);var _0x3aa654=!![];if(_0x39fb97[_0x74ca('0x12c')]===_0x74ca('0x12d')){_0x3aa654=![];}var _0x40848a=this[_0x74ca('0x39')]['recordFile'](_0x2888e3,_0x2fe2e5,_0x39fb97[_0x74ca('0x12f')],_0x39fb97[_0x74ca('0x67')],undefined,_0x3aa654);if(_0x40848a[_0x74ca('0xb1')]!==-0x1){this[_0x74ca('0x39')][_0x74ca('0xb2')](util['format']('tilde\x20%s\x20file\x20created',_0x118672));var _0x9151f1=this['tildeASR'][_0x74ca('0x75')](this,_0x39fb97,_0x118672);if(_0x9151f1){for(var _0x5d8a2c in _0x9151f1){if(_0x9151f1[_0x74ca('0x9d')](_0x5d8a2c)){this[_0x74ca('0x39')][_0x74ca('0xa7')](util[_0x74ca('0x55')]('TILDE_ASR_%s',_0x5d8a2c[_0x74ca('0x6d')]()),_0x9151f1[_0x5d8a2c]);}}return this['channel']['noop'](util[_0x74ca('0x55')](_0x74ca('0x135'),JSON[_0x74ca('0x78')](_0x9151f1)));}}return _0x40848a;};AGIVertices['prototype'][_0x74ca('0x136')]=function(_0x1d0a77){logger['info'](util[_0x74ca('0x55')](_0x74ca('0x137'),_0x1d0a77['label']));return this[_0x74ca('0x39')][_0x74ca('0x138')](_0x1d0a77[_0x74ca('0x139')],_0x1d0a77[_0x74ca('0x3e')],_0x1d0a77['priority']);};AGIVertices[_0x74ca('0xe')][_0x74ca('0x13a')]=function(_0x58dc65){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x13b'),_0x58dc65['label']));if(!this[_0x74ca('0x8d')](_0x58dc65[_0x74ca('0x13c')])){return this[_0x74ca('0x39')]['error'](_0x58dc65,_0x74ca('0x13d'));}try{var _0x17e4cc=eval(_0x58dc65[_0x74ca('0x13c')])?_0x74ca('0x13e'):_0x74ca('0x13f');this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0x140'),_0x58dc65[_0x74ca('0x13c')],_0x17e4cc));return{'code':0xc8,'result':_0x17e4cc};}catch(_0x100c5f){return{'code':0xc8,'result':'false'};}};AGIVertices[_0x74ca('0xe')][_0x74ca('0x141')]=function(_0x5837be){logger['info'](util[_0x74ca('0x55')](_0x74ca('0x142'),_0x5837be[_0x74ca('0xae')]));if(!this['isConfigured'](_0x5837be[_0x74ca('0x143')])){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x5837be,_0x74ca('0x144'));}var _0x536bff=this[_0x74ca('0x24')][_0x74ca('0x75')](this,_0x5837be['interval_id']);if(!_0x536bff){return this['channel']['error'](_0x5837be,'no\x20intervals\x20found');}for(var _0x36076d=0x0;_0x36076d<_0x536bff[_0x74ca('0xa3')];_0x36076d+=0x1){var _0x1a297a=this[_0x74ca('0x39')][_0x74ca('0xf')](util[_0x74ca('0x55')](_0x74ca('0x145'),_0x536bff[_0x36076d]));if(_0x1a297a[_0x74ca('0xb1')]===-0x1){return _0x1a297a;}logger['info'](util[_0x74ca('0x55')]('IFTIME\x20%s\x20%s',_0x536bff[_0x36076d],_0x1a297a['extra']));if(_0x1a297a['extra']===_0x74ca('0x13e')){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x146'),_0x536bff[_0x36076d],_0x74ca('0x13e')));this[_0x74ca('0x39')][_0x74ca('0xb2')](util['format'](_0x74ca('0x146'),_0x536bff[_0x36076d],'true'));return{'code':0xc8,'result':_0x74ca('0x13e')};}else{logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x146'),_0x536bff[_0x36076d],_0x74ca('0x13f')));this[_0x74ca('0x39')][_0x74ca('0xb2')](util['format'](_0x74ca('0x146'),_0x536bff[_0x36076d],'false'));}}return{'code':0xc8,'result':_0x74ca('0x13f')};};AGIVertices[_0x74ca('0xe')]['hangup']=function(_0x277118){logger['info'](util['format']('Enter\x20in\x20HANGUP\x20(%s)\x20block',_0x277118[_0x74ca('0xae')]));return this[_0x74ca('0x39')][_0x74ca('0x147')]();};AGIVertices['prototype']['ispeechasr']=function(_0x56202f){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x148'),_0x56202f[_0x74ca('0xae')]));if(!this[_0x74ca('0x8d')](_0x56202f[_0x74ca('0x80')])){return this[_0x74ca('0x39')][_0x74ca('0xb2')]('no\x20key\x20configured');}var _0x2bb1e0=_0x74ca('0x134');var _0x13c7aa=util[_0x74ca('0x55')](_0x74ca('0x12b'),FILES_PATH,rs[_0x74ca('0x112')](0x4));var _0xde88f9=util[_0x74ca('0x55')](_0x74ca('0xa6'),_0x13c7aa,_0x2bb1e0);var _0x9c577e=!![];if(_0x56202f[_0x74ca('0x12c')]===_0x74ca('0x12d')){_0x9c577e=![];}var _0x28e61d=this[_0x74ca('0x39')]['recordFile'](_0x13c7aa,_0x2bb1e0,_0x56202f[_0x74ca('0x12f')],_0x56202f[_0x74ca('0x67')],undefined,_0x9c577e);if(_0x28e61d[_0x74ca('0xb1')]!==-0x1){this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0x149'),_0xde88f9));var _0x15b673=this[_0x74ca('0x8a')][_0x74ca('0x75')](this,_0x56202f,_0xde88f9);if(_0x15b673){for(var _0x16e388 in _0x15b673){if(_0x15b673[_0x74ca('0x9d')](_0x16e388)){this['channel'][_0x74ca('0xa7')](util['format'](_0x74ca('0x14a'),_0x16e388[_0x74ca('0x6d')]()),_0x15b673[_0x16e388]);}}return this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0x14b'),JSON[_0x74ca('0x78')](_0x15b673)));}}return _0x28e61d;};AGIVertices[_0x74ca('0xe')][_0x74ca('0x14c')]=function(_0x3a9034){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x14d'),_0x3a9034[_0x74ca('0xae')]));if(!this[_0x74ca('0x8d')](_0x3a9034[_0x74ca('0x80')])){return this['channel'][_0x74ca('0xb2')](_0x74ca('0x12a'));}if(!this[_0x74ca('0x8d')](_0x3a9034[_0x74ca('0x5e')])){return this[_0x74ca('0x39')][_0x74ca('0xb2')](_0x74ca('0xaf'));}this[_0x74ca('0x39')][_0x74ca('0xb2')](util['format'](_0x74ca('0x14e'),_0x3a9034[_0x74ca('0x5e')]));var _0x16d1aa=this[_0x74ca('0x87')]['sync'](this,_0x3a9034);if(_0x16d1aa){this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')]('ispeech\x20%s\x20file\x20created',_0x16d1aa));var _0x4a9aad=this['channel'][_0x74ca('0x11d')](_0x16d1aa,_0x3a9034[_0x74ca('0x12f')]);try{fs['unlink'](_0x16d1aa+_0x74ca('0x14f'));}catch(_0x2cf5ef){logger[_0x74ca('0x2d')](_0x2cf5ef);}return _0x4a9aad;}return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x3a9034,_0x74ca('0x150'));};AGIVertices[_0x74ca('0xe')]['login']=function(_0x58d054){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x151'),_0x58d054['label']));if(!this['isConfigured'](_0x58d054[_0x74ca('0x152')])){return this['channel']['error'](_0x58d054,_0x74ca('0x153'));}logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x154'),this[_0x74ca('0x39')][_0x74ca('0x3c')],_0x58d054[_0x74ca('0x152')]));var _0x563d65=this[_0x74ca('0x54')][_0x74ca('0x75')](this,_0x58d054[_0x74ca('0x152')]);if(_0x563d65){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x155'),this[_0x74ca('0x39')][_0x74ca('0x3c')],_0x58d054[_0x74ca('0x152')]));this['channel'][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0x155'),this[_0x74ca('0x39')]['callerid'],_0x58d054[_0x74ca('0x152')]));return{'code':0xc8,'result':_0x74ca('0x156')};}else{logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x157'),this[_0x74ca('0x39')]['callerid'],_0x58d054['findBy']));this[_0x74ca('0x39')][_0x74ca('0xb2')](util['format'](_0x74ca('0x157'),this[_0x74ca('0x39')][_0x74ca('0x3c')],_0x58d054[_0x74ca('0x152')]));return{'code':0xc8,'result':_0x74ca('0x158')};}};AGIVertices[_0x74ca('0xe')][_0x74ca('0x159')]=function(_0x304cd6){logger[_0x74ca('0x30')](util['format'](_0x74ca('0x15a'),_0x304cd6[_0x74ca('0xae')]));if(!this[_0x74ca('0x8d')](_0x304cd6[_0x74ca('0x152')])){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x304cd6,_0x74ca('0x153'));}logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x154'),this['channel'][_0x74ca('0x3c')],_0x304cd6[_0x74ca('0x152')]));var _0x4388b5=this['agentLogout'][_0x74ca('0x75')](this,_0x304cd6[_0x74ca('0x152')]);if(_0x4388b5){logger['info'](util[_0x74ca('0x55')](_0x74ca('0x155'),this[_0x74ca('0x39')][_0x74ca('0x3c')],_0x304cd6['findBy']));this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0x155'),this[_0x74ca('0x39')][_0x74ca('0x3c')],_0x304cd6['findBy']));return{'code':0xc8,'result':_0x74ca('0x156')};}else{logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x157'),this[_0x74ca('0x39')][_0x74ca('0x3c')],_0x304cd6[_0x74ca('0x152')]));this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0x157'),this['channel'][_0x74ca('0x3c')],_0x304cd6[_0x74ca('0x152')]));return{'code':0xc8,'result':_0x74ca('0x158')};}};AGIVertices['prototype'][_0x74ca('0x15b')]=function(_0x2ce394){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x15c'),_0x2ce394[_0x74ca('0xae')]));if(!this[_0x74ca('0x8d')](_0x2ce394['operation'])){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x2ce394,_0x74ca('0x15d'));}this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0x15e'),_0x2ce394[_0x74ca('0x15f')]));var _0x2df812=eval(_0x2ce394[_0x74ca('0x15f')]);if(!this[_0x74ca('0x8d')](_0x2ce394['variable_id'])){return this['channel'][_0x74ca('0xb2')](_0x74ca('0xd3'));}var _0x1ee005=this[_0x74ca('0xf')]['sync'](this,_0x2ce394[_0x74ca('0x110')]);if(!_0x1ee005){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x2ce394,_0x74ca('0xd4'));}if(_['isArray'](_0x2df812)){var _0x23801b=this;_0x2df812[_0x74ca('0xd5')](function(_0x3065b7,_0x431bc8){_0x23801b[_0x74ca('0x39')][_0x74ca('0xa7')](util[_0x74ca('0x55')](_0x74ca('0x160'),_0x1ee005,_0x431bc8),_0x3065b7);});return this[_0x74ca('0x39')]['noop'](util[_0x74ca('0x55')](_0x74ca('0x161'),_0x1ee005));}else{return this[_0x74ca('0x39')][_0x74ca('0xa7')](_0x1ee005,_0x2df812);}};AGIVertices[_0x74ca('0xe')][_0x74ca('0xa')]=function(_0x1c3f90){logger[_0x74ca('0x30')](util[_0x74ca('0x55')]('Enter\x20in\x20MENU\x20(%s)\x20block',_0x1c3f90[_0x74ca('0xae')]));if(_0x1c3f90[_0x74ca('0xad')]===0x0){return this[_0x74ca('0xac')](_0x1c3f90);}_0x1c3f90[_0x74ca('0xad')]-=0x1;if(!this[_0x74ca('0x8d')](_0x1c3f90['file_id'])){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x1c3f90,_0x74ca('0x108'));}var _0x315e9a=this[_0x74ca('0x1d')][_0x74ca('0x75')](this,_0x1c3f90['file_id']);if(!_0x315e9a){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x1c3f90,_0x74ca('0x10a'));}var _0x25ab8a=this['channel']['getData'](_0x315e9a,_0x1c3f90[_0x74ca('0x10c')],_0x1c3f90[_0x74ca('0x162')]);var _0x34dc5=_0x25ab8a[_0x74ca('0xb1')];if(_0x25ab8a[_0x74ca('0xb1')]===-0x1){this[_0x74ca('0x38')][_0x74ca('0x75')](this,_0x1c3f90,'-1');return _0x25ab8a;}else if(_0x25ab8a[_0x74ca('0xa9')]==='timeout'){_0x25ab8a['result']=_0x25ab8a[_0x74ca('0xb1')][_0x74ca('0xa3')]>0x0?_0x25ab8a[_0x74ca('0xb1')]:'t';}else if(_['isEmpty'](_0x25ab8a['result'])){_0x25ab8a['result']='#';_0x34dc5='#';}if(!this[_0x74ca('0x8d')](_0x1c3f90['variable_id'])){this[_0x74ca('0x39')][_0x74ca('0xb2')](_0x74ca('0xd3'));}else{var _0x437972=this[_0x74ca('0xf')][_0x74ca('0x75')](this,_0x1c3f90[_0x74ca('0x110')]);if(!_0x437972){return this['channel'][_0x74ca('0x2d')](_0x1c3f90,_0x74ca('0xd4'));}this[_0x74ca('0x39')][_0x74ca('0xa7')](_0x437972,_0x34dc5);}this[_0x74ca('0x38')][_0x74ca('0x75')](this,_0x1c3f90,_0x34dc5);return _0x25ab8a;};AGIVertices[_0x74ca('0xe')]['noop']=function(_0xda36d6){logger['info'](util['format'](_0x74ca('0x163'),_0xda36d6['label']));return this[_0x74ca('0x39')]['noop'](_0xda36d6[_0x74ca('0x164')]||_0xda36d6[_0x74ca('0xae')]);};AGIVertices['prototype'][_0x74ca('0x165')]=function(_0x2b8af5){logger[_0x74ca('0x30')](util[_0x74ca('0x55')]('Enter\x20in\x20PAUSE\x20(%s)\x20block',_0x2b8af5[_0x74ca('0xae')]));if(!this[_0x74ca('0x8d')](_0x2b8af5[_0x74ca('0x152')])){return this[_0x74ca('0x39')]['error'](_0x2b8af5,_0x74ca('0x153'));}logger[_0x74ca('0x30')](util[_0x74ca('0x55')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this['channel']['callerid'],_0x2b8af5[_0x74ca('0x152')]));var _0x2e7490=this[_0x74ca('0x4e')]['sync'](this,_0x2b8af5['pause_id']);var _0x3472e9=this[_0x74ca('0x50')][_0x74ca('0x75')](this,_0x2b8af5[_0x74ca('0x152')],_0x2e7490);if(_0x3472e9){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x155'),this[_0x74ca('0x39')]['callerid'],_0x2b8af5[_0x74ca('0x152')]));this['channel']['noop'](util['format']('AGENT\x20%s\x20FOUND\x20BY',this[_0x74ca('0x39')][_0x74ca('0x3c')],_0x2b8af5['findBy']));return{'code':0xc8,'result':_0x74ca('0x156')};}else{logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x157'),this[_0x74ca('0x39')]['callerid'],_0x2b8af5[_0x74ca('0x152')]));this['channel'][_0x74ca('0xb2')](util[_0x74ca('0x55')]('AGENT\x20%s\x20FOUND\x20BY',this['channel']['callerid'],_0x2b8af5['findBy']));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0x74ca('0xe')]['playback']=function(_0x5372d6){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x166'),_0x5372d6[_0x74ca('0xae')]));if(!this[_0x74ca('0x8d')](_0x5372d6[_0x74ca('0x109')])){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x5372d6,_0x74ca('0x108'));}var _0x1fa168=this[_0x74ca('0x1d')][_0x74ca('0x75')](this,_0x5372d6[_0x74ca('0x109')]);if(!_0x1fa168){return this[_0x74ca('0x39')]['error'](_0x5372d6,_0x74ca('0x10a'));}var _0x5d96e7=this[_0x74ca('0x39')][_0x74ca('0x58')](_0x74ca('0x167'),[_0x1fa168,_0x5372d6[_0x74ca('0xe1')]]);if(_0x5d96e7[_0x74ca('0xb1')]===-0x1){return _0x5d96e7;}return this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0xc6'),'PLAYBACK',_0x1fa168));};AGIVertices[_0x74ca('0xe')]['queue']=function(_0x45b351){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x168'),_0x45b351[_0x74ca('0xae')]));if(!this['isConfigured'](_0x45b351[_0x74ca('0x169')])){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x45b351,_0x74ca('0x16a'));}var _0x3f6d4a='';var _0xa2699=parseInt(_0x45b351[_0x74ca('0x169')],0xa);if(isNaN(_0xa2699)){_0x3f6d4a=_0x45b351[_0x74ca('0x169')];}else{_0x3f6d4a=this[_0x74ca('0x14')]['sync'](this,_0x45b351[_0x74ca('0x169')]);if(!_0x3f6d4a){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x45b351,_0x74ca('0x16b'));}}var _0x8e54b7='';if(this['isConfigured'](_0x45b351['file_id'])){var _0x135dc5=this['getSound'][_0x74ca('0x75')](this,_0x45b351[_0x74ca('0x109')]);if(_0x135dc5){_0x8e54b7=_0x135dc5;}}this['createSquareDetailsReport'][_0x74ca('0x75')](this,_0x45b351,_0x3f6d4a);if(_0x45b351[_0x74ca('0xe1')][_0x74ca('0x16c')]('x')<0x0){_0x45b351[_0x74ca('0xe1')]+='x';}if(_0x45b351[_0x74ca('0xe1')][_0x74ca('0x16c')]('X')<0x0){_0x45b351['opts']+='X';}this[_0x74ca('0x39')][_0x74ca('0xa7')](_0x74ca('0x16d'),_0x3f6d4a?_0x3f6d4a['toLowerCase']():'');var _0xecfc6=this[_0x74ca('0x39')][_0x74ca('0x58')](_0x74ca('0x16e'),[_0x3f6d4a,_0x45b351[_0x74ca('0xe1')],_0x45b351['url'],_0x8e54b7,_0x45b351['timeout'],_0x45b351[_0x74ca('0xbc')],_0x45b351[_0x74ca('0x16f')],_0x45b351['gosub'],'',_0x45b351['position']]);if(_0xecfc6[_0x74ca('0xb1')]===-0x1){return _0xecfc6;}return this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0xc6'),_0x74ca('0x16e'),_0x3f6d4a));};AGIVertices[_0x74ca('0xe')][_0x74ca('0x170')]=function(_0x28d94c){logger[_0x74ca('0x30')](util['format']('Enter\x20in\x20RECORD\x20(%s)\x20block',_0x28d94c['label']));var _0x2d905b=_0x28d94c['recordingFormat']||_0x74ca('0x134');var _0x125995=util[_0x74ca('0x55')](_0x74ca('0x171'),this[_0x74ca('0x39')][_0x74ca('0x3a')],rs[_0x74ca('0x112')](0x5));var _0x3d894b=util['format'](_0x74ca('0x172'),FILES_PATH,_0x125995,_0x2d905b);var _0x4d2edd=util[_0x74ca('0x55')](_0x74ca('0x12b'),FILES_PATH,_0x125995);this[_0x74ca('0x3d')]['sync'](this,_0x28d94c,_0x125995,_0x3d894b);this[_0x74ca('0x39')][_0x74ca('0xa7')](_0x74ca('0x173'),_0x125995);logger[_0x74ca('0x30')]('Recording\x20%s\x20%s\x20%s\x20%s',_0x4d2edd,_0x2d905b,_0x28d94c[_0x74ca('0x174')],_0x28d94c[_0x74ca('0x67')]);return this[_0x74ca('0x39')][_0x74ca('0x12e')](_0x4d2edd,_0x2d905b,_0x28d94c['escape_digits'],_0x28d94c[_0x74ca('0x67')],undefined,!![]);};AGIVertices['prototype'][_0x74ca('0x175')]=function(_0x54b2c7){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x176'),_0x54b2c7[_0x74ca('0xae')]));if(!this[_0x74ca('0x8d')](_0x54b2c7[_0x74ca('0x66')])){return this[_0x74ca('0x39')][_0x74ca('0xb2')](_0x74ca('0x177'));}var _0x4ba15a=this[_0x74ca('0x65')][_0x74ca('0x75')](this,_0x54b2c7);logger['info'](util['format'](_0x74ca('0x178'),util[_0x74ca('0x179')](_0x4ba15a,{'showHidden':![],'depth':null})));if(!this[_0x74ca('0x8d')](_0x54b2c7[_0x74ca('0x110')])){return this[_0x74ca('0x39')][_0x74ca('0xb2')](_0x74ca('0x17a'));}var _0x203063=this[_0x74ca('0xf')]['sync'](this,_0x54b2c7[_0x74ca('0x110')]);if(!_0x203063){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x54b2c7,_0x74ca('0xd4'));}this[_0x74ca('0x39')][_0x74ca('0xa7')](util[_0x74ca('0x55')]('%s_STATUS_CODE',_0x203063),_0x4ba15a['statusCode']?_0x4ba15a[_0x74ca('0x7a')]:_0x74ca('0x17b'));this['channel']['setVariable'](util['format'](_0x74ca('0x17c'),_0x203063),_0x4ba15a[_0x74ca('0x7b')]?_0x4ba15a[_0x74ca('0x7b')]:'OK');if(_0x4ba15a[_0x74ca('0x6e')]){try{this[_0x74ca('0xa4')](_0x4ba15a[_0x74ca('0x6e')],_0x203063);}catch(_0x2273af){logger[_0x74ca('0x2d')](util[_0x74ca('0x55')]('Unable\x20to\x20set\x20result\x20in\x20variable\x20%s',_0x203063));}}return this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0xd9'),_0x203063));};AGIVertices['prototype'][_0x74ca('0x17d')]=function(_0x47e168){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x17e'),_0x47e168[_0x74ca('0xae')]));return this[_0x74ca('0x39')][_0x74ca('0x17f')](_0x47e168[_0x74ca('0x180')]['replace'](/\s+/g,''),_0x47e168[_0x74ca('0x174')]);};AGIVertices[_0x74ca('0xe')]['saynumber']=function(_0xa23797){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x181'),_0xa23797[_0x74ca('0xae')]));return this[_0x74ca('0x39')]['sayNumber'](_0xa23797[_0x74ca('0x68')][_0x74ca('0x5a')](/\s+/g,''),_0xa23797[_0x74ca('0x174')]);};AGIVertices[_0x74ca('0xe')][_0x74ca('0x182')]=function(_0x5b48ff){logger[_0x74ca('0x30')](util[_0x74ca('0x55')]('Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block',_0x5b48ff[_0x74ca('0xae')]));return this[_0x74ca('0x39')][_0x74ca('0x183')](_0x5b48ff[_0x74ca('0x5e')],_0x5b48ff[_0x74ca('0x174')]);};AGIVertices['prototype']['sendMail']=function(_0x4b731b){logger['info'](util[_0x74ca('0x55')]('Enter\x20in\x20SENDMAIL\x20(%s)\x20block',_0x4b731b[_0x74ca('0xae')]));if(!this['isConfigured'](_0x4b731b[_0x74ca('0x184')])){return this['channel'][_0x74ca('0xb2')](_0x74ca('0x185'));}var _0x564ebb=this[_0x74ca('0x20')][_0x74ca('0x75')](this,_0x4b731b['account_id']);if(!_0x564ebb||!_0x564ebb[_0x74ca('0x186')]){return this['channel'][_0x74ca('0x2d')](_0x4b731b,'no\x20mail\x20account\x20found');}var _0x4c1040={'from':util[_0x74ca('0x55')](_0x74ca('0x187'),_0x564ebb[_0x74ca('0x12')],_0x564ebb[_0x74ca('0x188')]||_0x564ebb[_0x74ca('0x186')][_0x74ca('0x189')]),'to':_0x4b731b['to']||'','cc':_0x4b731b['cc']||'','bcc':_0x4b731b[_0x74ca('0x18a')]||'','subject':_0x4b731b[_0x74ca('0x18b')],'html':_0x4b731b[_0x74ca('0x5e')],'text':_0x4b731b['text']};if(this[_0x74ca('0x8d')](_0x4b731b[_0x74ca('0x18c')])){}logger[_0x74ca('0xdb')](_0x74ca('0x18d'),JSON[_0x74ca('0x78')](_0x4c1040));this[_0x74ca('0x38')][_0x74ca('0x75')](this,_0x4b731b,_0x4b731b['account_id']);this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0x18e'),_0x564ebb[_0x74ca('0x12')]));this[_0x74ca('0x22')][_0x74ca('0x75')](this,_0x564ebb[_0x74ca('0x18f')],_0x4c1040);return this['channel'][_0x74ca('0xb2')](_0x74ca('0x190'));};AGIVertices[_0x74ca('0xe')][_0x74ca('0x191')]=function(_0x36344e){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x192'),_0x36344e[_0x74ca('0xae')]));return this[_0x74ca('0x39')]['noop']('SENDFAX\x20block\x20not\x20implemented');};AGIVertices['prototype'][_0x74ca('0x193')]=function(_0x2e452b){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x194'),_0x2e452b[_0x74ca('0xae')]));if(!this[_0x74ca('0x8d')](_0x2e452b[_0x74ca('0x195')])){return this[_0x74ca('0x39')][_0x74ca('0xb2')](_0x74ca('0x196'));}var _0x3f48b2=this[_0x74ca('0x35')][_0x74ca('0x75')](this,_0x2e452b[_0x74ca('0x195')]);if(!_0x3f48b2){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x2e452b,_0x74ca('0x197'));}var _0x29b88e={'body':_0x2e452b[_0x74ca('0x198')],'phone':_0x2e452b['to']||'','SmsAccountId':_0x3f48b2['id']};logger[_0x74ca('0xdb')](_0x74ca('0x199'),JSON[_0x74ca('0x78')](_0x29b88e));this[_0x74ca('0x38')][_0x74ca('0x75')](this,_0x2e452b,_0x2e452b['sms_account_id']);this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0x19a'),_0x3f48b2[_0x74ca('0x12')]));this[_0x74ca('0x37')][_0x74ca('0x75')](this,_0x29b88e);return this[_0x74ca('0x39')][_0x74ca('0xb2')](_0x74ca('0x19b'));};AGIVertices[_0x74ca('0xe')][_0x74ca('0x19c')]=function(_0x2b3b32){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x19d'),_0x2b3b32[_0x74ca('0xae')]));if(!this[_0x74ca('0x8d')](_0x2b3b32[_0x74ca('0x110')])){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x2b3b32,_0x74ca('0x19e'));}var _0x5310c6=this[_0x74ca('0xf')][_0x74ca('0x75')](this,_0x2b3b32[_0x74ca('0x110')]);if(!_0x5310c6){return this['channel']['error'](_0x2b3b32,_0x74ca('0xd4'));}return this['channel']['setVariable'](_0x5310c6,_0x2b3b32[_0x74ca('0x19f')]);};AGIVertices['prototype'][_0x74ca('0x1a0')]=function(_0x41c374){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x1a1'),_0x41c374[_0x74ca('0xae')]));this[_0x74ca('0x39')][_0x74ca('0xb2')](_0x74ca('0x1a2'));if(_0x41c374[_0x74ca('0xc0')]===_0x74ca('0x1a3')){this['channel']['noop'](_0x74ca('0x1a4'));return this[_0x74ca('0x39')][_0x74ca('0xc0')]();}return this[_0x74ca('0x39')][_0x74ca('0xb2')](_0x74ca('0x1a5'));};AGIVertices[_0x74ca('0xe')][_0x74ca('0x1a6')]=function(_0x491a5f){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x1a7'),_0x491a5f['label']));if(!this[_0x74ca('0x8d')](_0x491a5f[_0x74ca('0x1a8')])){return this['channel'][_0x74ca('0x2d')](_0x491a5f,_0x74ca('0x1a9'));}var _0x1c49ac=this[_0x74ca('0x16')]['sync'](this,_0x491a5f[_0x74ca('0x1a8')]);if(!this[_0x74ca('0x8d')](_0x1c49ac)){return this['channel'][_0x74ca('0x2d')](_0x491a5f,util[_0x74ca('0x55')]('no\x20subproject\x20found\x20with\x20id\x20%d',_0x491a5f[_0x74ca('0x1a8')]));}if(_0x1c49ac===this[_0x74ca('0x39')]['arg_1']){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x491a5f,'project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project');}this[_0x74ca('0x38')][_0x74ca('0x75')](this,_0x491a5f,_0x1c49ac);var _0x2fcacd=this[_0x74ca('0x39')][_0x74ca('0x58')]('AGI',util[_0x74ca('0x55')](_0x74ca('0x1aa'),config[_0x74ca('0xbc')][_0x74ca('0x1ab')]||_0x74ca('0x1ac'),_0x1c49ac,this[_0x74ca('0x39')][_0x74ca('0x3b')]));if(_0x2fcacd['result']===-0x1){return _0x2fcacd;}return this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0xc6'),'AGI',_0x1c49ac));};AGIVertices[_0x74ca('0xe')][_0x74ca('0x1ad')]=function(_0x3b0e2f){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x1ae'),_0x3b0e2f[_0x74ca('0xae')]));var _0x133de3=this['shellCommand'][_0x74ca('0x75')](this,_0x3b0e2f[_0x74ca('0x1af')]);this[_0x74ca('0x38')][_0x74ca('0x75')](this,_0x3b0e2f,_0x3b0e2f['command']);if(this['isConfigured'](_0x3b0e2f[_0x74ca('0x110')])){var _0x505a16=this[_0x74ca('0xf')][_0x74ca('0x75')](this,_0x3b0e2f[_0x74ca('0x110')]);if(_0x505a16){this[_0x74ca('0x39')][_0x74ca('0xa7')](_0x505a16,_0x133de3);return this['channel'][_0x74ca('0xb2')](util[_0x74ca('0x55')]('sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s',_0x3b0e2f['command'],_0x505a16));}}return this[_0x74ca('0x39')]['noop'](util[_0x74ca('0x55')]('sh\x20command:\x20%s\x20result\x20no\x20stored',_0x3b0e2f['command']));};AGIVertices[_0x74ca('0xe')][_0x74ca('0x1b0')]=function(_0x5bb2ef){logger['info'](util[_0x74ca('0x55')](_0x74ca('0x1b1'),_0x5bb2ef[_0x74ca('0xae')]));_0x5bb2ef[_0x74ca('0x5e')]=_0x5bb2ef['text'][_0x74ca('0x5a')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x74ca('0x8d')](_0x5bb2ef[_0x74ca('0x5c')])){return this[_0x74ca('0x39')][_0x74ca('0xb2')](_0x74ca('0x1b2'));}if(!this[_0x74ca('0x8d')](_0x5bb2ef[_0x74ca('0x5e')])){return this['channel'][_0x74ca('0xb2')]('no\x20text\x20configured');}this['channel']['noop'](util[_0x74ca('0x55')](_0x74ca('0x1b3'),_0x5bb2ef[_0x74ca('0x5e')]));var _0x771593=this['googleCloudTTS'][_0x74ca('0x75')](this,_0x5bb2ef);if(_0x771593){this['channel']['noop'](util['format'](_0x74ca('0x1b4'),_0x771593));var _0x9d9c46=this[_0x74ca('0x39')]['streamFile'](_0x771593);try{fs[_0x74ca('0xfd')](_0x771593+'.wav');}catch(_0x4e88fa){logger['error'](_0x4e88fa);}return _0x9d9c46;}return this[_0x74ca('0x39')]['error'](_0x5bb2ef,'Google\x20Cloud\x20TTS\x20is\x20unreachable');};AGIVertices[_0x74ca('0xe')]['tts']=function(_0x2be2d8){logger[_0x74ca('0x30')](util['format'](_0x74ca('0x1b5'),_0x2be2d8['label']));_0x2be2d8[_0x74ca('0x5e')]=_0x2be2d8[_0x74ca('0x5e')][_0x74ca('0x5a')](/(\r\n|\n|\r)/gm,'\x20');if(!this['isConfigured'](_0x2be2d8['text'])){return this[_0x74ca('0x39')][_0x74ca('0xb2')]('no\x20text\x20configured');}this['channel'][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0x1b6'),_0x2be2d8['text']));var _0x1ee1dd=this[_0x74ca('0x64')][_0x74ca('0x75')](this,_0x2be2d8);if(_0x1ee1dd){this[_0x74ca('0x39')]['noop'](util[_0x74ca('0x55')]('Google\x20TTS\x20%s\x20file\x20created',_0x1ee1dd));var _0x21c094=this['channel'][_0x74ca('0x11d')](_0x1ee1dd);try{fs['unlink'](_0x1ee1dd+'.wav');}catch(_0x2cb193){logger[_0x74ca('0x2d')](_0x2cb193);}return _0x21c094;}return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x2be2d8,_0x74ca('0x1b7'));};AGIVertices[_0x74ca('0xe')][_0x74ca('0x1b8')]=function(_0x5407f0){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x1b9'),_0x5407f0['label']));if(!this['isConfigured'](_0x5407f0[_0x74ca('0x152')])){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x5407f0,_0x74ca('0x153'));}logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x154'),this[_0x74ca('0x39')][_0x74ca('0x3c')],_0x5407f0[_0x74ca('0x152')]));var _0x54aea6=this[_0x74ca('0x52')][_0x74ca('0x75')](this,_0x5407f0[_0x74ca('0x152')]);if(_0x54aea6){logger[_0x74ca('0x30')](util[_0x74ca('0x55')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x74ca('0x39')][_0x74ca('0x3c')],_0x5407f0[_0x74ca('0x152')]));this[_0x74ca('0x39')]['noop'](util['format'](_0x74ca('0x155'),this[_0x74ca('0x39')]['callerid'],_0x5407f0['findBy']));return{'code':0xc8,'result':_0x74ca('0x156')};}else{logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x157'),this['channel']['callerid'],_0x5407f0['findBy']));this['channel'][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0x157'),this['channel'][_0x74ca('0x3c')],_0x5407f0['findBy']));return{'code':0xc8,'result':_0x74ca('0x158')};}};AGIVertices[_0x74ca('0xe')][_0x74ca('0x1ba')]=function(_0x407173){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x1bb'),_0x407173[_0x74ca('0xae')]));var _0x4013ee=this[_0x74ca('0x39')][_0x74ca('0x58')](_0x74ca('0x1bc'),[_0x407173[_0x74ca('0x1bd')],_0x407173['options']]);if(_0x4013ee[_0x74ca('0xb1')]===-0x1){return _0x4013ee;}return this['channel'][_0x74ca('0xb2')](util['format']('Executed\x20command\x20%s\x20%s','VOICEMAIL',_0x407173['mailbox']));};AGIVertices[_0x74ca('0xe')]['vswitch']=function(_0x25e484){logger[_0x74ca('0x30')](util['format']('Enter\x20in\x20SWITCH\x20(%s)\x20block',_0x25e484[_0x74ca('0xae')]));if(!this[_0x74ca('0x8d')](_0x25e484['variable_id'])){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x25e484,_0x74ca('0x19e'));}var _0x244120=this['getVariable']['sync'](this,_0x25e484[_0x74ca('0x110')]);if(!_0x244120){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x25e484,'no\x20variable\x20found');}var _0x949bf9=this['channel']['getVariable'](_0x244120);return{'code':0xc8,'result':_0x949bf9[_0x74ca('0xa9')]?_0x949bf9[_0x74ca('0xa9')]:'-'};};String[_0x74ca('0xe')][_0x74ca('0x1be')]=function(_0x4973e4,_0x5d6caf){return this['split'](_0x4973e4)[_0x74ca('0x1bf')](_0x5d6caf);};module[_0x74ca('0x1c0')]=AGIVertices;
\ No newline at end of file
index c6b7bdb..6095bb0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7a5=['stopAcw','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','updateAcw','update','[%s][UPDATE][ACWTIME:%s]','catch','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','finally','[ACW][START]\x20%s','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','prototype','[ACW][syncAgentConnect]\x20%s','syncAgentConnectPreview','[ACW][syncAgentConnectPreview]\x20%s','message','attended','[%s][HANGUP:UNIQUEID]','linkedid','isUndefined','[%s][HANGUP:LINKEDID]','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','[ACW][syncAgentRingNoAnswer]\x20%s','exports','lodash','moment','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','syncAgentConnect','bind','hanguprequest','syncHangupRequest','hangup','syncHangup','syncAgentRingNoAnswer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','milliseconds','diff','seconds','startAcw','channels','interface','queue','ACW','mandatoryDisposition','mandatoryDispositionPause','name','Action','QueuePause','then','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','destlinkedid','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','timer'];(function(_0xeedb87,_0x5ae6d5){var _0x25b961=function(_0x3bd67e){while(--_0x3bd67e){_0xeedb87['push'](_0xeedb87['shift']());}};_0x25b961(++_0x5ae6d5);}(_0xe7a5,0x18a));var _0x5e7a=function(_0x1e381c,_0x47b5b9){_0x1e381c=_0x1e381c-0x0;var _0x9b5ea9=_0xe7a5[_0x1e381c];return _0x9b5ea9;};'use strict';var util=require('util');var _=require(_0x5e7a('0x0'));var moment=require(_0x5e7a('0x1'));var ami=require('../ami');var logger=require('../../../config/logger')(_0x5e7a('0x2'));var RpcUser=require(_0x5e7a('0x3'));var RpcVoiceAgentReport=require(_0x5e7a('0x4'));function Acw(_0x2f4fd5){this[_0x5e7a('0x5')]=_0x2f4fd5['voiceQueues'];this[_0x5e7a('0x6')]=_0x2f4fd5['agents'];this[_0x5e7a('0x7')]=_0x2f4fd5[_0x5e7a('0x7')];this['channels']={};ami['on']('agentconnect',this[_0x5e7a('0x8')][_0x5e7a('0x9')](this));ami['on'](_0x5e7a('0xa'),this[_0x5e7a('0xb')]['bind'](this));ami['on'](_0x5e7a('0xc'),this[_0x5e7a('0xd')][_0x5e7a('0x9')](this));ami['on']('agentringnoanswer',this[_0x5e7a('0xe')][_0x5e7a('0x9')](this));ami['on']('attendedtransfer',this[_0x5e7a('0xf')][_0x5e7a('0x9')](this));ami['on'](_0x5e7a('0x10'),this[_0x5e7a('0x11')]['bind'](this));ami['on'](_0x5e7a('0x12'),this['syncAgentConnectPreview']['bind'](this));}function getDiff(_0x522835){var _0x9a79ed=moment()[_0x5e7a('0x13')](0x0);var _0x164d52=moment(_0x522835)[_0x5e7a('0x13')](0x0);return _0x9a79ed[_0x5e7a('0x14')](_0x164d52,_0x5e7a('0x15'));}Acw['prototype'][_0x5e7a('0x16')]=function(_0x11efba){try{var _0x4a92f5=this;var _0xc2095d=this[_0x5e7a('0x17')][_0x11efba][_0x5e7a('0x18')];var _0x182965=this['channels'][_0x11efba][_0x5e7a('0x19')];var _0x198312=this['voiceQueues'][_0x182965];var _0x4d4286=![];var _0x42c2e5=_0x5e7a('0x1a');if(_0x198312[_0x5e7a('0x1b')]){if(_0x198312[_0x5e7a('0x1c')][_0x5e7a('0x1d')]){_0x4d4286=!![];_0x42c2e5=_0x198312[_0x5e7a('0x1c')][_0x5e7a('0x1d')];}}ami[_0x5e7a('0x1e')]({'action':_0x5e7a('0x1f'),'interface':_0xc2095d,'paused':!![],'reason':_0x42c2e5})[_0x5e7a('0x20')](function(_0x2d12c8){if(_0x4a92f5['agents'][_0xc2095d]){return RpcUser['getAgent'](_0x4a92f5[_0x5e7a('0x6')][_0xc2095d]['id'])[_0x5e7a('0x20')](function(_0x42fd8b){if(_0x42fd8b&&!_0x42fd8b[_0x5e7a('0x21')]){logger[_0x5e7a('0x22')](_0x5e7a('0x23'),_0x11efba,_0xc2095d,_0x182965);var _0x46edf5=_0x4a92f5[_0x5e7a('0x17')][_0x11efba]['attended']&&_0x4a92f5[_0x5e7a('0x17')][_0x11efba][_0x5e7a('0x24')]?_0x4a92f5[_0x5e7a('0x17')][_0x11efba][_0x5e7a('0x24')]:_0x11efba;return RpcUser[_0x5e7a('0x25')](_0x4a92f5[_0x5e7a('0x6')][_0xc2095d],_0x42c2e5,_0x46edf5)[_0x5e7a('0x20')](function(_0x55d4f3){if(!_0x4d4286){_0x4a92f5['timers'][_0xc2095d]={};logger[_0x5e7a('0x22')](_0x5e7a('0x26'),_0x11efba,_0x4a92f5[_0x5e7a('0x5')][_0x182965][_0x5e7a('0x27')],_0xc2095d,_0x182965);_0x4a92f5[_0x5e7a('0x7')][_0xc2095d][_0x5e7a('0x28')]=setTimeout(_0x4a92f5[_0x5e7a('0x29')][_0x5e7a('0x9')](_0x4a92f5,_0xc2095d),_0x4a92f5[_0x5e7a('0x5')][_0x182965][_0x5e7a('0x27')]*0x3e8);_0x4a92f5[_0x5e7a('0x7')][_0xc2095d][_0x5e7a('0x2a')]=moment()[_0x5e7a('0x2b')](_0x5e7a('0x2c'));_0x4a92f5[_0x5e7a('0x7')][_0xc2095d][_0x5e7a('0x2d')]=_0x11efba;_0x4a92f5[_0x5e7a('0x7')][_0xc2095d][_0x5e7a('0x19')]=_0x182965;_0x4a92f5[_0x5e7a('0x7')][_0xc2095d][_0x5e7a('0x2e')]=function(){var _0x24d33f=getDiff(_0x4a92f5[_0x5e7a('0x7')][_0xc2095d][_0x5e7a('0x2a')]);clearTimeout(_0x4a92f5['timers'][_0xc2095d][_0x5e7a('0x28')]);_0x4a92f5['timers'][_0xc2095d]['timer']=![];RpcVoiceAgentReport[_0x5e7a('0x2f')]({'acwtime':_0x24d33f},_0x4a92f5[_0x5e7a('0x7')][_0xc2095d][_0x5e7a('0x2d')],_0xc2095d)['then'](function(_0x3aa305){logger[_0x5e7a('0x22')](_0x5e7a('0x30'),_0x11efba,_0x24d33f,_0x3aa305);})[_0x5e7a('0x31')](function(_0x569c7a){logger[_0x5e7a('0x32')](_0x5e7a('0x33'),_0x11efba,_0x569c7a);});delete _0x4a92f5[_0x5e7a('0x7')][_0xc2095d];};}});}else{logger['info'](_0x5e7a('0x34'),_0x11efba,_0xc2095d,_0x182965);}});}})[_0x5e7a('0x31')](function(_0x5a1e91){logger[_0x5e7a('0x32')](_0x5e7a('0x26'),_0x11efba,_0x4a92f5[_0x5e7a('0x5')][_0x182965][_0x5e7a('0x27')],_0xc2095d,_0x182965);})[_0x5e7a('0x35')](function(){delete _0x4a92f5[_0x5e7a('0x17')][_0x11efba];});}catch(_0x2c1528){logger[_0x5e7a('0x32')](_0x5e7a('0x36'),_0x2c1528['message']);}};Acw['prototype']['stopAcw']=function(_0x23b3ef){try{var _0x427aa9=this;if(_0x427aa9[_0x5e7a('0x7')][_0x23b3ef]){_0x427aa9[_0x5e7a('0x7')][_0x23b3ef][_0x5e7a('0x28')]=![];var _0x580dfb=_0x427aa9[_0x5e7a('0x7')][_0x23b3ef][_0x5e7a('0x2d')];var _0x4413da=_0x427aa9[_0x5e7a('0x7')][_0x23b3ef][_0x5e7a('0x19')];var _0x35f125=_0x427aa9[_0x5e7a('0x5')][_0x4413da]['acwTimeout'];logger['info'](_0x5e7a('0x37'),_0x580dfb,_0x23b3ef);RpcUser[_0x5e7a('0x38')](this['agents'][_0x23b3ef]);RpcVoiceAgentReport[_0x5e7a('0x2f')]({'acwtime':_0x35f125,'agentacw':!![]},_0x580dfb,_0x23b3ef)[_0x5e7a('0x20')](function(_0x3cb999){logger[_0x5e7a('0x22')](_0x5e7a('0x30'),_0x580dfb,_0x35f125,_0x3cb999);})[_0x5e7a('0x31')](function(_0x21f047){logger[_0x5e7a('0x32')](_0x5e7a('0x33'),_0x580dfb,_0x21f047);});}else{logger[_0x5e7a('0x32')](_0x5e7a('0x39'),_0x23b3ef);if(_0x427aa9[_0x5e7a('0x7')]){logger[_0x5e7a('0x22')](_0x5e7a('0x3a'),JSON[_0x5e7a('0x3b')](_0x427aa9['timers']));}}}catch(_0x142816){logger[_0x5e7a('0x32')]('[ACW][STOP]\x20%s',_0x142816['message']);}};Acw[_0x5e7a('0x3c')]['syncAgentConnect']=function(_0x5a7ea7){try{if(this[_0x5e7a('0x5')][_0x5a7ea7[_0x5e7a('0x19')]]&&(this[_0x5e7a('0x5')][_0x5a7ea7[_0x5e7a('0x19')]]['acw']||this['voiceQueues'][_0x5a7ea7[_0x5e7a('0x19')]][_0x5e7a('0x1b')])){if(this[_0x5e7a('0x6')][_0x5a7ea7['interface']]){this['channels'][_0x5a7ea7[_0x5e7a('0x2d')]]={'queue':_0x5a7ea7[_0x5e7a('0x19')],'interface':_0x5a7ea7[_0x5e7a('0x18')],'destlinkedid':_0x5a7ea7[_0x5e7a('0x24')]};}}}catch(_0x32bda9){logger['error'](_0x5e7a('0x3d'),_0x32bda9['message']);}};Acw['prototype'][_0x5e7a('0x3e')]=function(_0x539d6b){try{if(this[_0x5e7a('0x5')][_0x539d6b['queue']]&&(this[_0x5e7a('0x5')][_0x539d6b[_0x5e7a('0x19')]][_0x5e7a('0x2')]||this[_0x5e7a('0x5')][_0x539d6b[_0x5e7a('0x19')]][_0x5e7a('0x1b')])){if(this[_0x5e7a('0x6')][_0x539d6b[_0x5e7a('0x18')]]){this[_0x5e7a('0x17')][_0x539d6b[_0x5e7a('0x2d')]]={'queue':_0x539d6b[_0x5e7a('0x19')],'interface':_0x539d6b[_0x5e7a('0x18')]};}}}catch(_0x5cbe7c){logger[_0x5e7a('0x32')](_0x5e7a('0x3f'),_0x5cbe7c[_0x5e7a('0x40')]);}};Acw[_0x5e7a('0x3c')][_0x5e7a('0xb')]=function(_0xe8b91a){try{if(this[_0x5e7a('0x17')][_0xe8b91a['uniqueid']]&&_['isUndefined'](this[_0x5e7a('0x17')][_0xe8b91a['uniqueid']][_0x5e7a('0x41')])){logger[_0x5e7a('0x22')](_0x5e7a('0x42'),_0xe8b91a[_0x5e7a('0x2d')]);this[_0x5e7a('0x16')](_0xe8b91a[_0x5e7a('0x2d')]);}else if(this[_0x5e7a('0x17')][_0xe8b91a[_0x5e7a('0x43')]]&&_[_0x5e7a('0x44')](this['channels'][_0xe8b91a[_0x5e7a('0x43')]][_0x5e7a('0x41')])){logger[_0x5e7a('0x22')](_0x5e7a('0x45'),_0xe8b91a['linkedid']);this[_0x5e7a('0x16')](_0xe8b91a['linkedid']);}}catch(_0x49bb23){logger['error']('[ACW][syncHangupRequest]\x20%s',_0x49bb23['message']);}};Acw[_0x5e7a('0x3c')][_0x5e7a('0xd')]=function(_0x297dd8){try{if(this['channels'][_0x297dd8[_0x5e7a('0x2d')]]&&this[_0x5e7a('0x17')][_0x297dd8[_0x5e7a('0x2d')]][_0x5e7a('0x41')]){logger[_0x5e7a('0x22')](_0x5e7a('0x46'),_0x297dd8[_0x5e7a('0x2d')]);this[_0x5e7a('0x16')](_0x297dd8['uniqueid']);}else if(this['channels'][_0x297dd8[_0x5e7a('0x43')]]&&this[_0x5e7a('0x17')][_0x297dd8[_0x5e7a('0x43')]][_0x5e7a('0x41')]){logger[_0x5e7a('0x22')]('[%s][HANGUPATTENDEDTRANSFER:LINKEDID]',_0x297dd8[_0x5e7a('0x43')]);this['startAcw'](_0x297dd8[_0x5e7a('0x43')]);}}catch(_0xd7634a){logger['error'](_0x5e7a('0x47'),_0xd7634a[_0x5e7a('0x40')]);}};Acw[_0x5e7a('0x3c')][_0x5e7a('0xf')]=function(_0x4af70d){try{if(!_[_0x5e7a('0x48')](this[_0x5e7a('0x17')][_0x4af70d[_0x5e7a('0x49')]])){this[_0x5e7a('0x16')](_0x4af70d[_0x5e7a('0x49')]);if(this['channels'][_0x4af70d[_0x5e7a('0x4a')]]){this[_0x5e7a('0x17')][_0x4af70d[_0x5e7a('0x4a')]]['attended']=!![];this[_0x5e7a('0x17')][_0x4af70d[_0x5e7a('0x4b')]]=this[_0x5e7a('0x17')][_0x4af70d[_0x5e7a('0x4a')]];delete this[_0x5e7a('0x17')][_0x4af70d[_0x5e7a('0x4a')]];}}else if(!_[_0x5e7a('0x48')](this[_0x5e7a('0x17')][_0x4af70d[_0x5e7a('0x4b')]])){this['startAcw'](_0x4af70d['transfertargetuniqueid']);if(this['channels'][_0x4af70d[_0x5e7a('0x4c')]]){this[_0x5e7a('0x17')][_0x4af70d[_0x5e7a('0x4c')]][_0x5e7a('0x41')]=!![];this[_0x5e7a('0x17')][_0x4af70d['transfereeuniqueid']]=this[_0x5e7a('0x17')][_0x4af70d[_0x5e7a('0x4c')]];delete this[_0x5e7a('0x17')][_0x4af70d['origtransfereruniqueid']];}}}catch(_0x7ea0e2){logger[_0x5e7a('0x32')](_0x5e7a('0x4d'),_0x7ea0e2[_0x5e7a('0x40')]);}};Acw[_0x5e7a('0x3c')]['syncBlindTransfer']=function(_0x4afa24){try{if(this[_0x5e7a('0x17')][_0x4afa24[_0x5e7a('0x4e')]]){logger['info'](_0x5e7a('0x4f'),JSON[_0x5e7a('0x3b')](_0x4afa24[_0x5e7a('0x4e')]));this[_0x5e7a('0x16')](_0x4afa24[_0x5e7a('0x4e')]);}else if(this[_0x5e7a('0x17')][_0x4afa24[_0x5e7a('0x50')]]){logger[_0x5e7a('0x22')](_0x5e7a('0x51'),JSON[_0x5e7a('0x3b')](_0x4afa24[_0x5e7a('0x50')]));this[_0x5e7a('0x16')](_0x4afa24['transfererlinkedid']);}}catch(_0x3176de){logger[_0x5e7a('0x32')]('[ACW][syncBlindTransfer]\x20%s',_0x3176de['message']);}};Acw['prototype'][_0x5e7a('0xe')]=function(_0x261d66){try{if(this[_0x5e7a('0x5')][_0x261d66['queue']]&&this[_0x5e7a('0x5')][_0x261d66['queue']][_0x5e7a('0x52')]===_0x5e7a('0x53')){if(this['agents'][_0x261d66[_0x5e7a('0x18')]]){logger[_0x5e7a('0x22')](_0x5e7a('0x54'),_0x261d66['uniqueid'],_0x261d66['interface'],_0x261d66[_0x5e7a('0x19')]);return RpcUser['savePause'](this['agents'][_0x261d66[_0x5e7a('0x18')]],'Auto-Pause',_0x261d66['uniqueid']);}}}catch(_0x1059a6){logger['error'](_0x5e7a('0x55'),_0x1059a6[_0x5e7a('0x40')]);}};module[_0x5e7a('0x56')]=Acw;
\ No newline at end of file
+var _0x97b5=['[ACW][syncHangup]\x20%s','syncAttendedTransfer','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','syncAgentRingNoAnswer','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','savePause','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','util','lodash','../ami','../../../config/logger','acw','voiceQueues','agents','timers','channels','syncAgentConnect','bind','hanguprequest','syncHangupRequest','hangup','syncHangup','agentringnoanswer','attendedtransfer','blindtransfer','syncBlindTransfer','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','ACW','mandatoryDisposition','mandatoryDispositionPause','name','Action','QueuePause','then','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','timer','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','queue','updateAcw','update','info','[%s][UPDATE][ACWTIME:%s]','catch','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','finally','error','[ACW][START]\x20%s','message','stopAcw','uniqueid','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','interface','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','startAcw','[%s][HANGUP:LINKEDID]','linkedid','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x97b5,0x178));var _0x597b=function(_0x5b3ce1,_0xedd65b){_0x5b3ce1=_0x5b3ce1-0x0;var _0x38b358=_0x97b5[_0x5b3ce1];return _0x38b358;};'use strict';var util=require(_0x597b('0x0'));var _=require(_0x597b('0x1'));var moment=require('moment');var ami=require(_0x597b('0x2'));var logger=require(_0x597b('0x3'))(_0x597b('0x4'));var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');function Acw(_0x339b64){this[_0x597b('0x5')]=_0x339b64['voiceQueues'];this[_0x597b('0x6')]=_0x339b64[_0x597b('0x6')];this[_0x597b('0x7')]=_0x339b64[_0x597b('0x7')];this[_0x597b('0x8')]={};ami['on']('agentconnect',this[_0x597b('0x9')][_0x597b('0xa')](this));ami['on'](_0x597b('0xb'),this[_0x597b('0xc')]['bind'](this));ami['on'](_0x597b('0xd'),this[_0x597b('0xe')][_0x597b('0xa')](this));ami['on'](_0x597b('0xf'),this['syncAgentRingNoAnswer'][_0x597b('0xa')](this));ami['on'](_0x597b('0x10'),this['syncAttendedTransfer'][_0x597b('0xa')](this));ami['on'](_0x597b('0x11'),this[_0x597b('0x12')][_0x597b('0xa')](this));ami['on']('custom:agentConnectPreview',this[_0x597b('0x13')][_0x597b('0xa')](this));}function getDiff(_0x5bbf10){var _0x23278c=moment()[_0x597b('0x14')](0x0);var _0x204b4d=moment(_0x5bbf10)['milliseconds'](0x0);return _0x23278c[_0x597b('0x15')](_0x204b4d,_0x597b('0x16'));}Acw[_0x597b('0x17')]['startAcw']=function(_0x434431){try{var _0x1f0c14=this;var _0x3c648b=this[_0x597b('0x8')][_0x434431]['interface'];var _0xe2fbf8=this[_0x597b('0x8')][_0x434431]['queue'];var _0x7254bf=this[_0x597b('0x5')][_0xe2fbf8];var _0xd5e18a=![];var _0x37fa76=_0x597b('0x18');if(_0x7254bf[_0x597b('0x19')]){if(_0x7254bf[_0x597b('0x1a')][_0x597b('0x1b')]){_0xd5e18a=!![];_0x37fa76=_0x7254bf[_0x597b('0x1a')]['name'];}}ami[_0x597b('0x1c')]({'action':_0x597b('0x1d'),'interface':_0x3c648b,'paused':!![],'reason':_0x37fa76})[_0x597b('0x1e')](function(_0x2d6483){if(_0x1f0c14[_0x597b('0x6')][_0x3c648b]){return RpcUser['getAgent'](_0x1f0c14[_0x597b('0x6')][_0x3c648b]['id'])[_0x597b('0x1e')](function(_0x55d55b){if(_0x55d55b&&!_0x55d55b['voicePause']){logger['info'](_0x597b('0x1f'),_0x434431,_0x3c648b,_0xe2fbf8);var _0x3d9267=_0x1f0c14['channels'][_0x434431][_0x597b('0x20')]&&_0x1f0c14[_0x597b('0x8')][_0x434431][_0x597b('0x21')]?_0x1f0c14[_0x597b('0x8')][_0x434431][_0x597b('0x21')]:_0x434431;return RpcUser['savePause'](_0x1f0c14[_0x597b('0x6')][_0x3c648b],_0x37fa76,_0x3d9267)[_0x597b('0x1e')](function(_0x17c4e4){if(!_0xd5e18a){_0x1f0c14[_0x597b('0x7')][_0x3c648b]={};logger['info'](_0x597b('0x22'),_0x434431,_0x1f0c14['voiceQueues'][_0xe2fbf8][_0x597b('0x23')],_0x3c648b,_0xe2fbf8);_0x1f0c14['timers'][_0x3c648b][_0x597b('0x24')]=setTimeout(_0x1f0c14['stopAcw']['bind'](_0x1f0c14,_0x3c648b),_0x1f0c14['voiceQueues'][_0xe2fbf8]['acwTimeout']*0x3e8);_0x1f0c14['timers'][_0x3c648b][_0x597b('0x25')]=moment()[_0x597b('0x26')](_0x597b('0x27'));_0x1f0c14[_0x597b('0x7')][_0x3c648b]['uniqueid']=_0x434431;_0x1f0c14[_0x597b('0x7')][_0x3c648b][_0x597b('0x28')]=_0xe2fbf8;_0x1f0c14[_0x597b('0x7')][_0x3c648b][_0x597b('0x29')]=function(){var _0x127801=getDiff(_0x1f0c14[_0x597b('0x7')][_0x3c648b][_0x597b('0x25')]);clearTimeout(_0x1f0c14[_0x597b('0x7')][_0x3c648b][_0x597b('0x24')]);_0x1f0c14[_0x597b('0x7')][_0x3c648b]['timer']=![];RpcVoiceAgentReport[_0x597b('0x2a')]({'acwtime':_0x127801},_0x1f0c14['timers'][_0x3c648b]['uniqueid'],_0x3c648b)['then'](function(_0x25327a){logger[_0x597b('0x2b')](_0x597b('0x2c'),_0x434431,_0x127801,_0x25327a);})[_0x597b('0x2d')](function(_0x3f5401){logger['error']('[%s][UPDATE][ERRORS:%s]',_0x434431,_0x3f5401);});delete _0x1f0c14[_0x597b('0x7')][_0x3c648b];};}});}else{logger[_0x597b('0x2b')](_0x597b('0x2e'),_0x434431,_0x3c648b,_0xe2fbf8);}});}})['catch'](function(_0x356378){logger['error'](_0x597b('0x22'),_0x434431,_0x1f0c14[_0x597b('0x5')][_0xe2fbf8]['acwTimeout'],_0x3c648b,_0xe2fbf8);})[_0x597b('0x2f')](function(){delete _0x1f0c14[_0x597b('0x8')][_0x434431];});}catch(_0x2b0068){logger[_0x597b('0x30')](_0x597b('0x31'),_0x2b0068[_0x597b('0x32')]);}};Acw['prototype'][_0x597b('0x33')]=function(_0x2f3e87){try{var _0xc30586=this;if(_0xc30586[_0x597b('0x7')][_0x2f3e87]){_0xc30586[_0x597b('0x7')][_0x2f3e87][_0x597b('0x24')]=![];var _0x10b85e=_0xc30586['timers'][_0x2f3e87][_0x597b('0x34')];var _0x45bd57=_0xc30586[_0x597b('0x7')][_0x2f3e87][_0x597b('0x28')];var _0x2d7eee=_0xc30586[_0x597b('0x5')][_0x45bd57][_0x597b('0x23')];logger['info'](_0x597b('0x35'),_0x10b85e,_0x2f3e87);RpcUser[_0x597b('0x36')](this[_0x597b('0x6')][_0x2f3e87]);RpcVoiceAgentReport[_0x597b('0x2a')]({'acwtime':_0x2d7eee,'agentacw':!![]},_0x10b85e,_0x2f3e87)[_0x597b('0x1e')](function(_0x52e506){logger['info'](_0x597b('0x2c'),_0x10b85e,_0x2d7eee,_0x52e506);})['catch'](function(_0x5154e5){logger['error']('[%s][UPDATE][ERRORS:%s]',_0x10b85e,_0x5154e5);});}else{logger['error'](_0x597b('0x37'),_0x2f3e87);if(_0xc30586[_0x597b('0x7')]){logger[_0x597b('0x2b')](_0x597b('0x38'),JSON[_0x597b('0x39')](_0xc30586[_0x597b('0x7')]));}}}catch(_0x5c967d){logger[_0x597b('0x30')](_0x597b('0x3a'),_0x5c967d[_0x597b('0x32')]);}};Acw[_0x597b('0x17')][_0x597b('0x9')]=function(_0x267e12){try{if(this[_0x597b('0x5')][_0x267e12[_0x597b('0x28')]]&&(this[_0x597b('0x5')][_0x267e12['queue']][_0x597b('0x4')]||this[_0x597b('0x5')][_0x267e12['queue']][_0x597b('0x19')])){if(this[_0x597b('0x6')][_0x267e12[_0x597b('0x3b')]]){this[_0x597b('0x8')][_0x267e12[_0x597b('0x34')]]={'queue':_0x267e12[_0x597b('0x28')],'interface':_0x267e12[_0x597b('0x3b')],'destlinkedid':_0x267e12[_0x597b('0x21')]};}}}catch(_0x402941){logger['error']('[ACW][syncAgentConnect]\x20%s',_0x402941[_0x597b('0x32')]);}};Acw['prototype'][_0x597b('0x13')]=function(_0x24bb7a){try{if(this['voiceQueues'][_0x24bb7a['queue']]&&(this[_0x597b('0x5')][_0x24bb7a['queue']][_0x597b('0x4')]||this[_0x597b('0x5')][_0x24bb7a['queue']]['mandatoryDisposition'])){if(this[_0x597b('0x6')][_0x24bb7a[_0x597b('0x3b')]]){this[_0x597b('0x8')][_0x24bb7a[_0x597b('0x34')]]={'queue':_0x24bb7a['queue'],'interface':_0x24bb7a['interface']};}}}catch(_0x592682){logger['error'](_0x597b('0x3c'),_0x592682[_0x597b('0x32')]);}};Acw[_0x597b('0x17')][_0x597b('0xc')]=function(_0x5480ea){try{if(this['channels'][_0x5480ea['uniqueid']]&&_[_0x597b('0x3d')](this[_0x597b('0x8')][_0x5480ea[_0x597b('0x34')]][_0x597b('0x20')])){logger[_0x597b('0x2b')](_0x597b('0x3e'),_0x5480ea[_0x597b('0x34')]);this[_0x597b('0x3f')](_0x5480ea[_0x597b('0x34')]);}else if(this[_0x597b('0x8')][_0x5480ea['linkedid']]&&_[_0x597b('0x3d')](this[_0x597b('0x8')][_0x5480ea['linkedid']]['attended'])){logger[_0x597b('0x2b')](_0x597b('0x40'),_0x5480ea['linkedid']);this[_0x597b('0x3f')](_0x5480ea[_0x597b('0x41')]);}}catch(_0x8ff77f){logger[_0x597b('0x30')](_0x597b('0x42'),_0x8ff77f[_0x597b('0x32')]);}};Acw[_0x597b('0x17')][_0x597b('0xe')]=function(_0x5b35e8){try{if(this['channels'][_0x5b35e8[_0x597b('0x34')]]&&this[_0x597b('0x8')][_0x5b35e8[_0x597b('0x34')]][_0x597b('0x20')]){logger[_0x597b('0x2b')](_0x597b('0x43'),_0x5b35e8[_0x597b('0x34')]);this['startAcw'](_0x5b35e8[_0x597b('0x34')]);}else if(this['channels'][_0x5b35e8[_0x597b('0x41')]]&&this['channels'][_0x5b35e8[_0x597b('0x41')]][_0x597b('0x20')]){logger['info'](_0x597b('0x44'),_0x5b35e8['linkedid']);this[_0x597b('0x3f')](_0x5b35e8['linkedid']);}}catch(_0x207144){logger[_0x597b('0x30')](_0x597b('0x45'),_0x207144[_0x597b('0x32')]);}};Acw[_0x597b('0x17')][_0x597b('0x46')]=function(_0x4ad021){try{if(!_[_0x597b('0x47')](this[_0x597b('0x8')][_0x4ad021[_0x597b('0x48')]])){this[_0x597b('0x3f')](_0x4ad021[_0x597b('0x48')]);if(this[_0x597b('0x8')][_0x4ad021['secondtransfereruniqueid']]){this[_0x597b('0x8')][_0x4ad021[_0x597b('0x49')]][_0x597b('0x20')]=!![];this['channels'][_0x4ad021[_0x597b('0x4a')]]=this[_0x597b('0x8')][_0x4ad021[_0x597b('0x49')]];delete this[_0x597b('0x8')][_0x4ad021[_0x597b('0x49')]];}}else if(!_[_0x597b('0x47')](this[_0x597b('0x8')][_0x4ad021[_0x597b('0x4a')]])){this[_0x597b('0x3f')](_0x4ad021[_0x597b('0x4a')]);if(this[_0x597b('0x8')][_0x4ad021['origtransfereruniqueid']]){this[_0x597b('0x8')][_0x4ad021[_0x597b('0x4b')]][_0x597b('0x20')]=!![];this[_0x597b('0x8')][_0x4ad021['transfereeuniqueid']]=this[_0x597b('0x8')][_0x4ad021['origtransfereruniqueid']];delete this[_0x597b('0x8')][_0x4ad021[_0x597b('0x4b')]];}}}catch(_0x134b5a){logger[_0x597b('0x30')](_0x597b('0x4c'),_0x134b5a[_0x597b('0x32')]);}};Acw[_0x597b('0x17')][_0x597b('0x12')]=function(_0x44ff14){try{if(this['channels'][_0x44ff14[_0x597b('0x4d')]]){logger['info'](_0x597b('0x4e'),JSON['stringify'](_0x44ff14[_0x597b('0x4d')]));this['startAcw'](_0x44ff14[_0x597b('0x4d')]);}else if(this[_0x597b('0x8')][_0x44ff14['transfererlinkedid']]){logger[_0x597b('0x2b')]('[%s][BLINDTRANSFER:LINKEDID]',JSON[_0x597b('0x39')](_0x44ff14[_0x597b('0x4f')]));this['startAcw'](_0x44ff14[_0x597b('0x4f')]);}}catch(_0x43a9eb){logger[_0x597b('0x30')](_0x597b('0x50'),_0x43a9eb[_0x597b('0x32')]);}};Acw[_0x597b('0x17')][_0x597b('0x51')]=function(_0x3ddbab){try{if(this[_0x597b('0x5')][_0x3ddbab[_0x597b('0x28')]]&&this[_0x597b('0x5')][_0x3ddbab[_0x597b('0x28')]][_0x597b('0x52')]===_0x597b('0x53')){if(this[_0x597b('0x6')][_0x3ddbab[_0x597b('0x3b')]]){logger[_0x597b('0x2b')](_0x597b('0x54'),_0x3ddbab[_0x597b('0x34')],_0x3ddbab['interface'],_0x3ddbab[_0x597b('0x28')]);return RpcUser[_0x597b('0x55')](this[_0x597b('0x6')][_0x3ddbab[_0x597b('0x3b')]],_0x597b('0x56'),_0x3ddbab[_0x597b('0x34')]);}}}catch(_0x58bab1){logger[_0x597b('0x30')](_0x597b('0x57'),_0x58bab1[_0x597b('0x32')]);}};module[_0x597b('0x58')]=Acw;
\ No newline at end of file
index d2102ee..8135c9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['devicestatelist','actionSipPeerStatus','sippeerstatus','actionQueueSummary','queuesummary','actionCoreShowChannels','coreshowchannels','info','once','connect','shutdown','fullybooted','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','resolve','then','[ami.js][fullybooted]','close','exports','bluebird','moment','ami','../../config/environment','asterisk','port','password','Action','promisify','action','error','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','username','inspect','actionSipShowRegistry','actionDeviceStateList'];(function(_0x5a2a48,_0x1cef93){var _0x150b2b=function(_0x1b2c09){while(--_0x1b2c09){_0x5a2a48['push'](_0x5a2a48['shift']());}};_0x150b2b(++_0x1cef93);}(_0x757a,0xde));var _0xa757=function(_0x467a2a,_0x5d1656){_0x467a2a=_0x467a2a-0x0;var _0x2e4afa=_0x757a[_0x467a2a];return _0x2e4afa;};'use strict';var Manager=require('asterisk-manager');var BPromise=require(_0xa757('0x0'));var moment=require(_0xa757('0x1'));var util=require('util');var _=require('lodash');var logger=require('../../config/logger')(_0xa757('0x2'));var config=require(_0xa757('0x3'));var ami=new Manager(config[_0xa757('0x4')][_0xa757('0x5')],config[_0xa757('0x4')]['ip'],config[_0xa757('0x4')]['username'],config[_0xa757('0x4')][_0xa757('0x6')],!![]);ami['keepConnected']();ami[_0xa757('0x7')]=BPromise[_0xa757('0x8')](ami[_0xa757('0x9')]);function error(_0x1a95ee){logger[_0xa757('0xa')](util['format'](_0xa757('0xb'),config[_0xa757('0x4')][_0xa757('0xc')],config[_0xa757('0x4')]['ip'],config[_0xa757('0x4')][_0xa757('0x5')],util[_0xa757('0xd')](_0x1a95ee,![],null)));}function close(){logger['error'](util['format']('Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s',config['asterisk']['username'],config[_0xa757('0x4')]['ip'],config['asterisk']['port']));}ami[_0xa757('0xe')]=function(){return function(){return ami['Action']({'action':'sipshowregistry'});};};ami[_0xa757('0xf')]=function(){return function(){return ami[_0xa757('0x7')]({'action':_0xa757('0x10')});};};ami[_0xa757('0x11')]=function(){return function(){return ami[_0xa757('0x7')]({'action':_0xa757('0x12')});};};ami[_0xa757('0x13')]=function(){return function(){return ami[_0xa757('0x7')]({'action':_0xa757('0x14')});};};ami[_0xa757('0x15')]=function(){return function(){return ami['Action']({'action':_0xa757('0x16')});};};function connect(_0x44eab8){logger[_0xa757('0x17')](util['format']('Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s',config[_0xa757('0x4')][_0xa757('0xc')],config[_0xa757('0x4')]['ip'],config[_0xa757('0x4')][_0xa757('0x5')]));ami[_0xa757('0x18')]('error',error);ami[_0xa757('0x18')]('close',close);}ami['on'](_0xa757('0x19'),connect);ami['on'](_0xa757('0x1a'),function(_0x14014c){logger[_0xa757('0x17')](util['format']('Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s',config[_0xa757('0x4')][_0xa757('0xc')],config[_0xa757('0x4')]['ip'],config[_0xa757('0x4')][_0xa757('0x5')],util[_0xa757('0xd')](_0x14014c,![],null)));});ami['on'](_0xa757('0x1b'),function(_0x21f1af){logger[_0xa757('0x17')](util['format'](_0xa757('0x1c'),config['asterisk'][_0xa757('0xc')],config['asterisk']['ip'],config[_0xa757('0x4')][_0xa757('0x5')]));return BPromise[_0xa757('0x1d')]()['then'](ami[_0xa757('0xe')]())[_0xa757('0x1e')](ami[_0xa757('0xf')]())[_0xa757('0x1e')](ami['actionSipPeerStatus']())[_0xa757('0x1e')](ami['actionQueueSummary']())['then'](ami['actionCoreShowChannels']())['catch'](function(_0xfdf69d){logger['error'](_0xa757('0x1f'),util[_0xa757('0xd')](_0xfdf69d,{'showHidden':![],'depth':null}));});});ami['once'](_0xa757('0xa'),error);ami['once'](_0xa757('0x20'),close);module[_0xa757('0x21')]=ami;
\ No newline at end of file
+var _0xd8b0=['actionQueueSummary','queuesummary','actionCoreShowChannels','coreshowchannels','info','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once','close','connect','shutdown','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','fullybooted','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','resolve','then','[ami.js][fullybooted]','exports','asterisk-manager','bluebird','../../config/logger','ami','../../config/environment','asterisk','port','username','password','Action','promisify','error','format','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','inspect','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s','actionSipShowRegistry','sipshowregistry','actionDeviceStateList','devicestatelist','actionSipPeerStatus','sippeerstatus'];(function(_0x31b817,_0x517da3){var _0x47d88b=function(_0x5b2c0c){while(--_0x5b2c0c){_0x31b817['push'](_0x31b817['shift']());}};_0x47d88b(++_0x517da3);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var Manager=require(_0x0d8b('0x0'));var BPromise=require(_0x0d8b('0x1'));var moment=require('moment');var util=require('util');var _=require('lodash');var logger=require(_0x0d8b('0x2'))(_0x0d8b('0x3'));var config=require(_0x0d8b('0x4'));var ami=new Manager(config[_0x0d8b('0x5')][_0x0d8b('0x6')],config['asterisk']['ip'],config['asterisk'][_0x0d8b('0x7')],config[_0x0d8b('0x5')][_0x0d8b('0x8')],!![]);ami['keepConnected']();ami[_0x0d8b('0x9')]=BPromise[_0x0d8b('0xa')](ami['action']);function error(_0x129310){logger[_0x0d8b('0xb')](util[_0x0d8b('0xc')](_0x0d8b('0xd'),config[_0x0d8b('0x5')][_0x0d8b('0x7')],config[_0x0d8b('0x5')]['ip'],config[_0x0d8b('0x5')]['port'],util[_0x0d8b('0xe')](_0x129310,![],null)));}function close(){logger['error'](util[_0x0d8b('0xc')](_0x0d8b('0xf'),config[_0x0d8b('0x5')][_0x0d8b('0x7')],config[_0x0d8b('0x5')]['ip'],config[_0x0d8b('0x5')][_0x0d8b('0x6')]));}ami[_0x0d8b('0x10')]=function(){return function(){return ami[_0x0d8b('0x9')]({'action':_0x0d8b('0x11')});};};ami[_0x0d8b('0x12')]=function(){return function(){return ami[_0x0d8b('0x9')]({'action':_0x0d8b('0x13')});};};ami[_0x0d8b('0x14')]=function(){return function(){return ami['Action']({'action':_0x0d8b('0x15')});};};ami[_0x0d8b('0x16')]=function(){return function(){return ami[_0x0d8b('0x9')]({'action':_0x0d8b('0x17')});};};ami[_0x0d8b('0x18')]=function(){return function(){return ami['Action']({'action':_0x0d8b('0x19')});};};function connect(_0x4586c2){logger[_0x0d8b('0x1a')](util[_0x0d8b('0xc')](_0x0d8b('0x1b'),config[_0x0d8b('0x5')][_0x0d8b('0x7')],config[_0x0d8b('0x5')]['ip'],config['asterisk'][_0x0d8b('0x6')]));ami[_0x0d8b('0x1c')](_0x0d8b('0xb'),error);ami[_0x0d8b('0x1c')](_0x0d8b('0x1d'),close);}ami['on'](_0x0d8b('0x1e'),connect);ami['on'](_0x0d8b('0x1f'),function(_0x352c17){logger['info'](util['format'](_0x0d8b('0x20'),config['asterisk']['username'],config['asterisk']['ip'],config[_0x0d8b('0x5')][_0x0d8b('0x6')],util[_0x0d8b('0xe')](_0x352c17,![],null)));});ami['on'](_0x0d8b('0x21'),function(_0x221071){logger[_0x0d8b('0x1a')](util[_0x0d8b('0xc')](_0x0d8b('0x22'),config[_0x0d8b('0x5')]['username'],config[_0x0d8b('0x5')]['ip'],config[_0x0d8b('0x5')]['port']));return BPromise[_0x0d8b('0x23')]()['then'](ami[_0x0d8b('0x10')]())[_0x0d8b('0x24')](ami[_0x0d8b('0x12')]())['then'](ami['actionSipPeerStatus']())[_0x0d8b('0x24')](ami[_0x0d8b('0x16')]())['then'](ami[_0x0d8b('0x18')]())['catch'](function(_0x1b2b59){logger['error'](_0x0d8b('0x25'),util['inspect'](_0x1b2b59,{'showHidden':![],'depth':null}));});});ami[_0x0d8b('0x1c')]('error',error);ami[_0x0d8b('0x1c')]('close',close);module[_0x0d8b('0x26')]=ami;
\ No newline at end of file
index 4f37f7d..d80c1f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa88=['bluebird','../../config/logger','ami','http','Request','rpc','memberReport','error','message','result','catch','jayson/promise'];(function(_0x197f7a,_0x39567e){var _0x5210ae=function(_0x40ffc2){while(--_0x40ffc2){_0x197f7a['push'](_0x197f7a['shift']());}};_0x5210ae(++_0x39567e);}(_0xaa88,0x137));var _0x8aa8=function(_0x385eb1,_0x497a94){_0x385eb1=_0x385eb1-0x0;var _0x5d40eb=_0xaa88[_0x385eb1];return _0x5d40eb;};'use strict';var jayson=require(_0x8aa8('0x0'));var BPromise=require(_0x8aa8('0x1'));var logger=require(_0x8aa8('0x2'))(_0x8aa8('0x3'));var client=jayson['client'][_0x8aa8('0x4')]({'port':0x2329});client[_0x8aa8('0x5')]=function(_0x43f7e4,_0x3b2c88){return new BPromise(function(_0x3e3b70,_0x350e8b){return client['request'](_0x43f7e4,_0x3b2c88)['then'](function(_0x460042){logger['debug'](_0x8aa8('0x6'),_0x8aa8('0x7'),_0x43f7e4,_0x3b2c88,_0x460042);if(_0x460042[_0x8aa8('0x8')]){logger[_0x8aa8('0x8')]('rpc',_0x8aa8('0x7'),_0x43f7e4,_0x460042[_0x8aa8('0x8')][_0x8aa8('0x9')],_0x3b2c88);return _0x350e8b(_0x460042['error'][_0x8aa8('0x9')]);}else{return _0x3e3b70(_0x460042[_0x8aa8('0xa')]);}})[_0x8aa8('0xb')](function(_0x33cc5c){logger['error'](_0x8aa8('0x6'),_0x8aa8('0x7'),_0x43f7e4,_0x33cc5c,_0x3b2c88);return _0x350e8b(_0x33cc5c);});});};module['exports']=client;
\ No newline at end of file
+var _0x9bde=['message','result','catch','exports','bluebird','ami','http','Request','request','debug','rpc','memberReport','error'];(function(_0x62b58e,_0x46fe1e){var _0x37fe84=function(_0x12a2ca){while(--_0x12a2ca){_0x62b58e['push'](_0x62b58e['shift']());}};_0x37fe84(++_0x46fe1e);}(_0x9bde,0xe1));var _0xe9bd=function(_0x470785,_0x46a844){_0x470785=_0x470785-0x0;var _0x3e3d67=_0x9bde[_0x470785];return _0x3e3d67;};'use strict';var jayson=require('jayson/promise');var BPromise=require(_0xe9bd('0x0'));var logger=require('../../config/logger')(_0xe9bd('0x1'));var client=jayson['client'][_0xe9bd('0x2')]({'port':0x2329});client[_0xe9bd('0x3')]=function(_0x131f6a,_0x1c1b34){return new BPromise(function(_0x10822d,_0x1a4d14){return client[_0xe9bd('0x4')](_0x131f6a,_0x1c1b34)['then'](function(_0x4763e9){logger[_0xe9bd('0x5')](_0xe9bd('0x6'),_0xe9bd('0x7'),_0x131f6a,_0x1c1b34,_0x4763e9);if(_0x4763e9[_0xe9bd('0x8')]){logger[_0xe9bd('0x8')](_0xe9bd('0x6'),_0xe9bd('0x7'),_0x131f6a,_0x4763e9[_0xe9bd('0x8')][_0xe9bd('0x9')],_0x1c1b34);return _0x1a4d14(_0x4763e9['error']['message']);}else{return _0x10822d(_0x4763e9[_0xe9bd('0xa')]);}})[_0xe9bd('0xb')](function(_0x2601ac){logger['error'](_0xe9bd('0x6'),_0xe9bd('0x7'),_0x131f6a,_0x2601ac,_0x1c1b34);return _0x1a4d14(_0x2601ac);});});};module[_0xe9bd('0xc')]=client;
\ No newline at end of file
index 9c9d234..39d8adc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf35e=['prototype','getCaller','\x22%s\x22\x20<%s>','substring','getQueue','util','lodash','moment','isNil','string','voiceQueue','name','Contact','firstName','lastName','number','phone','queue','active','type','dialQueueTimeout','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','VoiceQueueId','CampaignId','format','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid','callbackat','recallme','originatecalleridnum','originatecalleridname'];(function(_0x1716cd,_0x5df480){var _0x405c05=function(_0x5de65b){while(--_0x5de65b){_0x1716cd['push'](_0x1716cd['shift']());}};_0x405c05(++_0x5df480);}(_0xf35e,0x80));var _0xef35=function(_0x5f3398,_0x458840){_0x5f3398=_0x5f3398-0x0;var _0x36cc71=_0xf35e[_0x5f3398];return _0x36cc71;};'use strict';var util=require(_0xef35('0x0'));var _=require(_0xef35('0x1'));var moment=require(_0xef35('0x2'));function checkNameSurname(_0x20899d,_0x1e1990,_0x2e077a){var _0x4bc0b1='';if(!_[_0xef35('0x3')](_0x1e1990)&&_0xef35('0x4')===typeof _0x1e1990){_0x4bc0b1+=_0x1e1990;}if(!_['isNil'](_0x2e077a)&&_0xef35('0x4')===typeof _0x2e077a){_0x4bc0b1+='\x20'+_0x2e077a;}if(_0x4bc0b1!==''){return _0x4bc0b1;}return _0x20899d;}function Action(_0x134b05,_0xccf0e8,_0x2d329f){this[_0xef35('0x5')]=_0x134b05;this['uniqueid']=_0x2d329f||undefined;this[_0xef35('0x6')]=checkNameSurname(_0xccf0e8[_0xef35('0x7')]['phone'],_0xccf0e8[_0xef35('0x7')][_0xef35('0x8')],_0xccf0e8[_0xef35('0x7')][_0xef35('0x9')]);this[_0xef35('0xa')]=_0xccf0e8[_0xef35('0xb')];this[_0xef35('0xc')]=_0x134b05[_0xef35('0x6')];this['active']=_0xccf0e8[_0xef35('0xd')]||![];this[_0xef35('0xe')]=_0x134b05[_0xef35('0xe')];this['dialQueueTimeout']=_0x134b05[_0xef35('0xf')]||0x3;this['scheduledat']=_0xccf0e8['scheduledat'];this[_0xef35('0x10')]=_0xccf0e8[_0xef35('0x10')];this[_0xef35('0x11')]=_0xccf0e8[_0xef35('0x11')];this[_0xef35('0x12')]=_0xccf0e8[_0xef35('0x12')];this['countnosuchnumberretry']=_0xccf0e8[_0xef35('0x13')];this[_0xef35('0x14')]=_0xccf0e8['countdropretry'];this[_0xef35('0x15')]=_0xccf0e8[_0xef35('0x15')];this[_0xef35('0x16')]=_0xccf0e8[_0xef35('0x16')];this[_0xef35('0x17')]=_0xccf0e8['countagentrejectretry'];this[_0xef35('0x18')]=_0xccf0e8['ContactId'];this[_0xef35('0x19')]=_0xccf0e8[_0xef35('0x19')];this['UserId']=_0xccf0e8['UserId'];this[_0xef35('0x1a')]=_0xccf0e8[_0xef35('0x1a')];this[_0xef35('0x1b')]=_0xccf0e8[_0xef35('0x1b')];this['idHopper']=_0xccf0e8['id'];this['ContactFirstName']=_0xccf0e8[_0xef35('0x7')]['firstName']||'';this['starttime']=moment()[_0xef35('0x1c')](_0xef35('0x1d'));this[_0xef35('0x1e')]=_0xccf0e8[_0xef35('0x1e')];this[_0xef35('0x1f')]=_0xccf0e8['callbackuniqueid'];this[_0xef35('0x20')]=_0xccf0e8[_0xef35('0x20')];this[_0xef35('0x21')]=_0xccf0e8[_0xef35('0x21')];this[_0xef35('0x22')]='';this[_0xef35('0x23')]='';}Action[_0xef35('0x24')][_0xef35('0x25')]=function(){return util['format'](_0xef35('0x26'),this[_0xef35('0x6')],this[_0xef35('0x5')]['dialCutDigit']>0x0?this[_0xef35('0xa')][_0xef35('0x27')](this['voiceQueue']['dialCutDigit']):this['number']);};Action[_0xef35('0x24')][_0xef35('0x28')]=function(){return this[_0xef35('0xc')];};module['exports']=Action;
\ No newline at end of file
+var _0xbc99=['callbackat','recallme','prototype','getCaller','\x22%s\x22\x20<%s>','name','dialCutDigit','substring','getQueue','exports','string','voiceQueue','uniqueid','firstName','Contact','lastName','number','phone','queue','active','type','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','UserId','VoiceQueueId','CampaignId','ContactFirstName','starttime','format','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid'];(function(_0x459ca8,_0x322b29){var _0x25f289=function(_0x24ac05){while(--_0x24ac05){_0x459ca8['push'](_0x459ca8['shift']());}};_0x25f289(++_0x322b29);}(_0xbc99,0x106));var _0x9bc9=function(_0x27dc9d,_0x5e5bd1){_0x27dc9d=_0x27dc9d-0x0;var _0x555ae2=_0xbc99[_0x27dc9d];return _0x555ae2;};'use strict';var util=require('util');var _=require('lodash');var moment=require('moment');function checkNameSurname(_0x184eaa,_0x2ab77b,_0x2ada91){var _0x21b2c4='';if(!_['isNil'](_0x2ab77b)&&'string'===typeof _0x2ab77b){_0x21b2c4+=_0x2ab77b;}if(!_['isNil'](_0x2ada91)&&_0x9bc9('0x0')===typeof _0x2ada91){_0x21b2c4+='\x20'+_0x2ada91;}if(_0x21b2c4!==''){return _0x21b2c4;}return _0x184eaa;}function Action(_0x3ad1c5,_0x56c67a,_0x23aad9){this[_0x9bc9('0x1')]=_0x3ad1c5;this[_0x9bc9('0x2')]=_0x23aad9||undefined;this['name']=checkNameSurname(_0x56c67a['Contact']['phone'],_0x56c67a['Contact'][_0x9bc9('0x3')],_0x56c67a[_0x9bc9('0x4')][_0x9bc9('0x5')]);this[_0x9bc9('0x6')]=_0x56c67a[_0x9bc9('0x7')];this[_0x9bc9('0x8')]=_0x3ad1c5['name'];this[_0x9bc9('0x9')]=_0x56c67a[_0x9bc9('0x9')]||![];this[_0x9bc9('0xa')]=_0x3ad1c5[_0x9bc9('0xa')];this[_0x9bc9('0xb')]=_0x3ad1c5['dialQueueTimeout']||0x3;this[_0x9bc9('0xc')]=_0x56c67a['scheduledat'];this['countbusyretry']=_0x56c67a[_0x9bc9('0xd')];this[_0x9bc9('0xe')]=_0x56c67a['countcongestionretry'];this[_0x9bc9('0xf')]=_0x56c67a['countnoanswerretry'];this[_0x9bc9('0x10')]=_0x56c67a[_0x9bc9('0x10')];this[_0x9bc9('0x11')]=_0x56c67a[_0x9bc9('0x11')];this[_0x9bc9('0x12')]=_0x56c67a[_0x9bc9('0x12')];this[_0x9bc9('0x13')]=_0x56c67a[_0x9bc9('0x13')];this[_0x9bc9('0x14')]=_0x56c67a[_0x9bc9('0x14')];this[_0x9bc9('0x15')]=_0x56c67a['ContactId'];this['ListId']=_0x56c67a[_0x9bc9('0x16')];this['UserId']=_0x56c67a[_0x9bc9('0x17')];this[_0x9bc9('0x18')]=_0x56c67a[_0x9bc9('0x18')];this[_0x9bc9('0x19')]=_0x56c67a[_0x9bc9('0x19')];this['idHopper']=_0x56c67a['id'];this[_0x9bc9('0x1a')]=_0x56c67a[_0x9bc9('0x4')][_0x9bc9('0x3')]||'';this[_0x9bc9('0x1b')]=moment()[_0x9bc9('0x1c')](_0x9bc9('0x1d'));this[_0x9bc9('0x1e')]=_0x56c67a[_0x9bc9('0x1e')];this[_0x9bc9('0x1f')]=_0x56c67a[_0x9bc9('0x1f')];this[_0x9bc9('0x20')]=_0x56c67a[_0x9bc9('0x20')];this[_0x9bc9('0x21')]=_0x56c67a[_0x9bc9('0x21')];this['originatecalleridnum']='';this['originatecalleridname']='';}Action[_0x9bc9('0x22')][_0x9bc9('0x23')]=function(){return util['format'](_0x9bc9('0x24'),this[_0x9bc9('0x25')],this['voiceQueue'][_0x9bc9('0x26')]>0x0?this[_0x9bc9('0x6')][_0x9bc9('0x27')](this[_0x9bc9('0x1')][_0x9bc9('0x26')]):this['number']);};Action[_0x9bc9('0x22')][_0x9bc9('0x28')]=function(){return this[_0x9bc9('0x8')];};module[_0x9bc9('0x29')]=Action;
\ No newline at end of file
index 0ef3dcf..8e40e4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ade=['callbackat','recallme','ContactId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','lodash','milliseconds','diff','seconds','state','statedesc','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countglobal','countnoanswerretry','countdropretry','countmachineretry','countnosuchnumberretry','countabandonedretry','countagentrejectretry','uniqueid','calleridname','name','number','starttime','responsetime','answertime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','holdtime','talktime','membername','reason','callback','callbackuniqueid'];(function(_0x282ccc,_0x5d66a1){var _0x27c2dd=function(_0x58431a){while(--_0x58431a){_0x282ccc['push'](_0x282ccc['shift']());}};_0x27c2dd(++_0x5d66a1);}(_0x8ade,0xbd));var _0xe8ad=function(_0x4a3e5e,_0xccd252){_0x4a3e5e=_0x4a3e5e-0x0;var _0x498d31=_0x8ade[_0x4a3e5e];return _0x498d31;};'use strict';var util=require('util');var _=require(_0xe8ad('0x0'));var moment=require('moment');function getSeconds(_0x5f33f9,_0x730f73){var _0x45e30d=moment(_0x5f33f9)[_0xe8ad('0x1')](0x0);var _0xf041ca=moment(_0x730f73)[_0xe8ad('0x1')](0x0);return _0x45e30d[_0xe8ad('0x2')](_0xf041ca,_0xe8ad('0x3'));}function AgentComplete(_0x8f0389,_0x4f205c){this[_0xe8ad('0x4')]=0x4;this[_0xe8ad('0x5')]='Answer';this['scheduledat']=_0x8f0389[_0xe8ad('0x6')];this[_0xe8ad('0x7')]=_0x8f0389['type'];this[_0xe8ad('0x8')]=_0x8f0389[_0xe8ad('0x7')]===_0xe8ad('0x9')?_0xe8ad('0xa'):_0x8f0389[_0xe8ad('0x7')];this[_0xe8ad('0xb')]=_0x8f0389[_0xe8ad('0xb')];this[_0xe8ad('0xc')]=_0x8f0389[_0xe8ad('0xc')];this['countnoanswerretry']=_0x8f0389['countnoanswerretry'];this[_0xe8ad('0xd')]=_0x8f0389['countbusyretry']+_0x8f0389[_0xe8ad('0xc')]+_0x8f0389[_0xe8ad('0xe')]+_0x8f0389['countnosuchnumberretry']+_0x8f0389[_0xe8ad('0xf')]+_0x8f0389['countabandonedretry']+_0x8f0389[_0xe8ad('0x10')]+_0x8f0389['countagentrejectretry'];this[_0xe8ad('0x11')]=_0x8f0389[_0xe8ad('0x11')];this[_0xe8ad('0xf')]=_0x8f0389[_0xe8ad('0xf')];this['countabandonedretry']=_0x8f0389[_0xe8ad('0x12')];this[_0xe8ad('0x10')]=_0x8f0389[_0xe8ad('0x10')];this[_0xe8ad('0x13')]=_0x8f0389[_0xe8ad('0x13')];this[_0xe8ad('0x14')]=_0x4f205c[_0xe8ad('0x14')];this[_0xe8ad('0x15')]=_0x8f0389[_0xe8ad('0x16')];this['calleridnum']=_0x8f0389[_0xe8ad('0x17')];this[_0xe8ad('0x18')]=_0x8f0389[_0xe8ad('0x18')];this[_0xe8ad('0x19')]=_0x8f0389[_0xe8ad('0x19')];this[_0xe8ad('0x1a')]=_0x8f0389[_0xe8ad('0x1a')];this[_0xe8ad('0x1b')]=moment()[_0xe8ad('0x1c')](_0xe8ad('0x1d'));this['ringtime']=getSeconds(_0x8f0389[_0xe8ad('0x19')],_0x8f0389[_0xe8ad('0x18')]);this[_0xe8ad('0x1e')]=getSeconds(_0x8f0389[_0xe8ad('0x1a')],_0x8f0389[_0xe8ad('0x19')]);this[_0xe8ad('0x1f')]=getSeconds(this[_0xe8ad('0x1b')],_0x8f0389[_0xe8ad('0x1a')]);this[_0xe8ad('0xa')]=_0x4f205c[_0xe8ad('0xa')];this[_0xe8ad('0x20')]=_0x4f205c[_0xe8ad('0x20')];this[_0xe8ad('0x21')]=_0x4f205c['reason'];this[_0xe8ad('0x22')]=_0x8f0389[_0xe8ad('0x22')];this['callbackuniqueid']=_0x8f0389[_0xe8ad('0x23')];this['callbackat']=_0x8f0389[_0xe8ad('0x24')];this['recallme']=_0x8f0389[_0xe8ad('0x25')];this[_0xe8ad('0x26')]=_0x8f0389['ContactId'];this['ListId']=_0x8f0389['ListId'];this['UserId']=_0x8f0389[_0xe8ad('0x27')];this[_0xe8ad('0x28')]=_0x8f0389[_0xe8ad('0x28')];this['CampaignId']=_0x8f0389[_0xe8ad('0x29')];this[_0xe8ad('0x2a')]=_0x8f0389['originatecalleridnum']||'';this['originatecalleridname']=_0x8f0389[_0xe8ad('0x2b')]||'';}module[_0xe8ad('0x2c')]=AgentComplete;
\ No newline at end of file
+var _0x59f2=['ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','milliseconds','seconds','statedesc','Answer','scheduledat','type','campaigntype','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countabandonedretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','countdropretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','answertime','endtime','YYYY-MM-DD\x20HH:mm:ss','ringtime','holdtime','talktime','queue','membername','reason','callback','callbackuniqueid','callbackat','recallme'];(function(_0x382bd0,_0x2b9d24){var _0x50b007=function(_0x17bbef){while(--_0x17bbef){_0x382bd0['push'](_0x382bd0['shift']());}};_0x50b007(++_0x2b9d24);}(_0x59f2,0xb3));var _0x259f=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0x59f2[_0x4154a6];return _0x3b2786;};'use strict';var util=require('util');var _=require('lodash');var moment=require('moment');function getSeconds(_0x42a1b8,_0x4d247c){var _0x198f6a=moment(_0x42a1b8)[_0x259f('0x0')](0x0);var _0x4334a3=moment(_0x4d247c)[_0x259f('0x0')](0x0);return _0x198f6a['diff'](_0x4334a3,_0x259f('0x1'));}function AgentComplete(_0x219b7a,_0x52d53e){this['state']=0x4;this[_0x259f('0x2')]=_0x259f('0x3');this[_0x259f('0x4')]=_0x219b7a['scheduledat'];this[_0x259f('0x5')]=_0x219b7a['type'];this[_0x259f('0x6')]=_0x219b7a[_0x259f('0x5')]===_0x259f('0x7')?'queue':_0x219b7a[_0x259f('0x5')];this[_0x259f('0x8')]=_0x219b7a[_0x259f('0x8')];this['countcongestionretry']=_0x219b7a[_0x259f('0x9')];this[_0x259f('0xa')]=_0x219b7a[_0x259f('0xa')];this['countglobal']=_0x219b7a['countbusyretry']+_0x219b7a[_0x259f('0x9')]+_0x219b7a[_0x259f('0xa')]+_0x219b7a['countnosuchnumberretry']+_0x219b7a['countdropretry']+_0x219b7a[_0x259f('0xb')]+_0x219b7a[_0x259f('0xc')]+_0x219b7a[_0x259f('0xd')];this[_0x259f('0xe')]=_0x219b7a[_0x259f('0xe')];this[_0x259f('0xf')]=_0x219b7a[_0x259f('0xf')];this[_0x259f('0xb')]=_0x219b7a[_0x259f('0xb')];this[_0x259f('0xc')]=_0x219b7a[_0x259f('0xc')];this[_0x259f('0xd')]=_0x219b7a[_0x259f('0xd')];this[_0x259f('0x10')]=_0x52d53e[_0x259f('0x10')];this[_0x259f('0x11')]=_0x219b7a[_0x259f('0x12')];this[_0x259f('0x13')]=_0x219b7a[_0x259f('0x14')];this[_0x259f('0x15')]=_0x219b7a[_0x259f('0x15')];this['responsetime']=_0x219b7a[_0x259f('0x16')];this[_0x259f('0x17')]=_0x219b7a['answertime'];this[_0x259f('0x18')]=moment()['format'](_0x259f('0x19'));this[_0x259f('0x1a')]=getSeconds(_0x219b7a['responsetime'],_0x219b7a[_0x259f('0x15')]);this[_0x259f('0x1b')]=getSeconds(_0x219b7a['answertime'],_0x219b7a['responsetime']);this[_0x259f('0x1c')]=getSeconds(this[_0x259f('0x18')],_0x219b7a[_0x259f('0x17')]);this['queue']=_0x52d53e[_0x259f('0x1d')];this['membername']=_0x52d53e[_0x259f('0x1e')];this['reason']=_0x52d53e[_0x259f('0x1f')];this[_0x259f('0x20')]=_0x219b7a[_0x259f('0x20')];this[_0x259f('0x21')]=_0x219b7a['callbackuniqueid'];this[_0x259f('0x22')]=_0x219b7a['callbackat'];this[_0x259f('0x23')]=_0x219b7a[_0x259f('0x23')];this['ContactId']=_0x219b7a['ContactId'];this[_0x259f('0x24')]=_0x219b7a[_0x259f('0x24')];this['UserId']=_0x219b7a[_0x259f('0x25')];this[_0x259f('0x26')]=_0x219b7a[_0x259f('0x26')];this[_0x259f('0x27')]=_0x219b7a['CampaignId'];this['originatecalleridnum']=_0x219b7a[_0x259f('0x28')]||'';this['originatecalleridname']=_0x219b7a[_0x259f('0x29')]||'';}module[_0x259f('0x2a')]=AgentComplete;
\ No newline at end of file
index baff2e3..a39271d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31af=['uniqueid','scheduledat','type','campaigntype','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countmachineretry','countagentrejectretry','countabandonedretry','queue','calleridname','calleridnum','starttime','responsetime','endtime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','util','lodash','moment','milliseconds','diff','seconds'];(function(_0x384a78,_0x5ba914){var _0xf4933b=function(_0x550e1c){while(--_0x550e1c){_0x384a78['push'](_0x384a78['shift']());}};_0xf4933b(++_0x5ba914);}(_0x31af,0xde));var _0xf31a=function(_0x20cea6,_0x3a0611){_0x20cea6=_0x20cea6-0x0;var _0x29f2ae=_0x31af[_0x20cea6];return _0x29f2ae;};'use strict';var util=require(_0xf31a('0x0'));var _=require(_0xf31a('0x1'));var moment=require(_0xf31a('0x2'));function getSeconds(_0x4d5e50,_0x5f5639){var _0x4596f6=moment(_0x4d5e50)['milliseconds'](0x0);var _0x3b7976=moment(_0x5f5639)[_0xf31a('0x3')](0x0);return _0x4596f6[_0xf31a('0x4')](_0x3b7976,_0xf31a('0x5'));}function Final(_0x5ad096){this[_0xf31a('0x6')]=_0x5ad096[_0xf31a('0x6')];this[_0xf31a('0x7')]=_0x5ad096[_0xf31a('0x7')];this['type']=_0x5ad096[_0xf31a('0x8')];this[_0xf31a('0x9')]=_0x5ad096[_0xf31a('0x8')]===_0xf31a('0xa')?'queue':_0x5ad096[_0xf31a('0x8')];this[_0xf31a('0xb')]=_0x5ad096[_0xf31a('0xb')];this[_0xf31a('0xc')]=_0x5ad096[_0xf31a('0xc')];this['countnoanswerretry']=_0x5ad096[_0xf31a('0xd')];this[_0xf31a('0xe')]=_0x5ad096[_0xf31a('0xb')]+_0x5ad096[_0xf31a('0xc')]+_0x5ad096['countnoanswerretry']+_0x5ad096[_0xf31a('0xf')]+_0x5ad096[_0xf31a('0x10')]+_0x5ad096['countabandonedretry']+_0x5ad096[_0xf31a('0x11')]+_0x5ad096[_0xf31a('0x12')];this[_0xf31a('0xf')]=_0x5ad096[_0xf31a('0xf')];this[_0xf31a('0x10')]=_0x5ad096[_0xf31a('0x10')];this[_0xf31a('0x13')]=_0x5ad096[_0xf31a('0x13')];this[_0xf31a('0x11')]=_0x5ad096[_0xf31a('0x11')];this[_0xf31a('0x12')]=_0x5ad096[_0xf31a('0x12')];this[_0xf31a('0x14')]=_0x5ad096[_0xf31a('0x14')];this[_0xf31a('0x15')]=_0x5ad096['calleridname'];this[_0xf31a('0x16')]=_0x5ad096[_0xf31a('0x16')];this[_0xf31a('0x17')]=_0x5ad096[_0xf31a('0x17')];this['responsetime']=_0x5ad096[_0xf31a('0x18')];this[_0xf31a('0x19')]=_0x5ad096[_0xf31a('0x18')];this[_0xf31a('0x1a')]=_0x5ad096[_0xf31a('0x1a')]||0x0;this['holdtime']=_0x5ad096[_0xf31a('0x1b')]||0x0;this[_0xf31a('0x1c')]=_0x5ad096['talktime']||0x0;this[_0xf31a('0x1d')]=_0x5ad096[_0xf31a('0x1d')];this['callbackuniqueid']=_0x5ad096[_0xf31a('0x1e')];this[_0xf31a('0x1f')]=_0x5ad096['callbackat'];this['recallme']=_0x5ad096['recallme'];this[_0xf31a('0x20')]=_0x5ad096[_0xf31a('0x20')];this['ListId']=_0x5ad096[_0xf31a('0x21')];this[_0xf31a('0x22')]=_0x5ad096[_0xf31a('0x22')];this[_0xf31a('0x23')]=_0x5ad096['VoiceQueueId'];this['CampaignId']=_0x5ad096[_0xf31a('0x24')];this[_0xf31a('0x25')]=_0x5ad096['originatecalleridnum']||'';this['originatecalleridname']=_0x5ad096['originatecalleridname']||'';}module['exports']=Final;
\ No newline at end of file
+var _0x202c=['UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','milliseconds','diff','seconds','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','calleridname','calleridnum','starttime','responsetime','endtime','ringtime','holdtime','talktime','callbackuniqueid','callbackat','ContactId','ListId'];(function(_0x3accf9,_0x1f09eb){var _0x2819e6=function(_0x596af7){while(--_0x596af7){_0x3accf9['push'](_0x3accf9['shift']());}};_0x2819e6(++_0x1f09eb);}(_0x202c,0x178));var _0xc202=function(_0x127775,_0x482d6b){_0x127775=_0x127775-0x0;var _0x1429cc=_0x202c[_0x127775];return _0x1429cc;};'use strict';var util=require(_0xc202('0x0'));var _=require('lodash');var moment=require('moment');function getSeconds(_0x1cf3fd,_0x1ab6a1){var _0x27b3b2=moment(_0x1cf3fd)['milliseconds'](0x0);var _0x215161=moment(_0x1ab6a1)[_0xc202('0x1')](0x0);return _0x27b3b2[_0xc202('0x2')](_0x215161,_0xc202('0x3'));}function Final(_0x4b4368){this[_0xc202('0x4')]=_0x4b4368[_0xc202('0x4')];this['scheduledat']=_0x4b4368[_0xc202('0x5')];this['type']=_0x4b4368[_0xc202('0x6')];this[_0xc202('0x7')]=_0x4b4368[_0xc202('0x6')]===_0xc202('0x8')?_0xc202('0x9'):_0x4b4368[_0xc202('0x6')];this[_0xc202('0xa')]=_0x4b4368[_0xc202('0xa')];this[_0xc202('0xb')]=_0x4b4368[_0xc202('0xb')];this[_0xc202('0xc')]=_0x4b4368[_0xc202('0xc')];this[_0xc202('0xd')]=_0x4b4368['countbusyretry']+_0x4b4368[_0xc202('0xb')]+_0x4b4368[_0xc202('0xc')]+_0x4b4368[_0xc202('0xe')]+_0x4b4368[_0xc202('0xf')]+_0x4b4368[_0xc202('0x10')]+_0x4b4368[_0xc202('0x11')]+_0x4b4368[_0xc202('0x12')];this['countnosuchnumberretry']=_0x4b4368[_0xc202('0xe')];this[_0xc202('0xf')]=_0x4b4368['countdropretry'];this['countabandonedretry']=_0x4b4368['countabandonedretry'];this[_0xc202('0x11')]=_0x4b4368['countmachineretry'];this[_0xc202('0x12')]=_0x4b4368['countagentrejectretry'];this[_0xc202('0x9')]=_0x4b4368[_0xc202('0x9')];this[_0xc202('0x13')]=_0x4b4368[_0xc202('0x13')];this[_0xc202('0x14')]=_0x4b4368[_0xc202('0x14')];this[_0xc202('0x15')]=_0x4b4368['starttime'];this[_0xc202('0x16')]=_0x4b4368[_0xc202('0x16')];this[_0xc202('0x17')]=_0x4b4368['responsetime'];this['ringtime']=_0x4b4368[_0xc202('0x18')]||0x0;this[_0xc202('0x19')]=_0x4b4368[_0xc202('0x19')]||0x0;this[_0xc202('0x1a')]=_0x4b4368[_0xc202('0x1a')]||0x0;this['callback']=_0x4b4368['callback'];this[_0xc202('0x1b')]=_0x4b4368['callbackuniqueid'];this[_0xc202('0x1c')]=_0x4b4368[_0xc202('0x1c')];this['recallme']=_0x4b4368['recallme'];this[_0xc202('0x1d')]=_0x4b4368['ContactId'];this[_0xc202('0x1e')]=_0x4b4368[_0xc202('0x1e')];this[_0xc202('0x1f')]=_0x4b4368[_0xc202('0x1f')];this[_0xc202('0x20')]=_0x4b4368['VoiceQueueId'];this['CampaignId']=_0x4b4368[_0xc202('0x21')];this[_0xc202('0x22')]=_0x4b4368[_0xc202('0x22')]||'';this['originatecalleridname']=_0x4b4368[_0xc202('0x23')]||'';}module[_0xc202('0x24')]=Final;
\ No newline at end of file
index c069ae3..bf6c544 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc892=['countnosuchnumberretry','countdropretry','countmachineretry','countagentrejectretry','countabandonedretry','uniqueid','calleridname','name','calleridnum','starttime','endtime','ringtime','responsetime','holdtime','talktime','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','exports','util','lodash','milliseconds','seconds','state','statedesc','Answer','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countnoanswerretry','countglobal','countcongestionretry'];(function(_0xef3d1d,_0x3ca3cb){var _0x4eb1e5=function(_0x42d4a1){while(--_0x42d4a1){_0xef3d1d['push'](_0xef3d1d['shift']());}};_0x4eb1e5(++_0x3ca3cb);}(_0xc892,0xc7));var _0x2c89=function(_0x3efc35,_0x6189a0){_0x3efc35=_0x3efc35-0x0;var _0x539917=_0xc892[_0x3efc35];return _0x539917;};'use strict';var util=require(_0x2c89('0x0'));var _=require(_0x2c89('0x1'));var moment=require('moment');function getSeconds(_0x133b6b,_0x207132){var _0x4dcb49=moment(_0x133b6b)[_0x2c89('0x2')](0x0);var _0x49f4e8=moment(_0x207132)[_0x2c89('0x2')](0x0);return _0x4dcb49['diff'](_0x49f4e8,_0x2c89('0x3'));}function Hangup(_0x541867,_0x219de4){this[_0x2c89('0x4')]=0x4;this[_0x2c89('0x5')]=_0x2c89('0x6');this[_0x2c89('0x7')]=_0x541867[_0x2c89('0x7')];this[_0x2c89('0x8')]=_0x541867['type'];this[_0x2c89('0x9')]=_0x541867[_0x2c89('0x8')]===_0x2c89('0xa')?_0x2c89('0xb'):_0x541867[_0x2c89('0x8')];this[_0x2c89('0xc')]=_0x541867['countbusyretry'];this['countcongestionretry']=_0x541867['countcongestionretry'];this[_0x2c89('0xd')]=_0x541867[_0x2c89('0xd')];this[_0x2c89('0xe')]=_0x541867['countbusyretry']+_0x541867[_0x2c89('0xf')]+_0x541867[_0x2c89('0xd')]+_0x541867[_0x2c89('0x10')]+_0x541867[_0x2c89('0x11')]+_0x541867['countabandonedretry']+_0x541867[_0x2c89('0x12')]+_0x541867[_0x2c89('0x13')];this[_0x2c89('0x10')]=_0x541867['countnosuchnumberretry'];this[_0x2c89('0x11')]=_0x541867['countdropretry'];this[_0x2c89('0x14')]=_0x541867[_0x2c89('0x14')];this[_0x2c89('0x12')]=_0x541867[_0x2c89('0x12')];this['countagentrejectretry']=_0x541867['countagentrejectretry'];this[_0x2c89('0x15')]=_0x219de4[_0x2c89('0x15')];this[_0x2c89('0x16')]=_0x541867[_0x2c89('0x17')];this[_0x2c89('0x18')]=_0x541867['number'];this[_0x2c89('0x19')]=_0x541867[_0x2c89('0x19')];this['responsetime']=_0x541867['responsetime'];this[_0x2c89('0x1a')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x2c89('0x1b')]=getSeconds(_0x541867[_0x2c89('0x1c')],_0x541867[_0x2c89('0x19')]);this[_0x2c89('0x1d')]=0x0;this[_0x2c89('0x1e')]=getSeconds(this[_0x2c89('0x1a')],_0x541867[_0x2c89('0x1c')]);this[_0x2c89('0xb')]=_0x541867[_0x2c89('0xb')];this[_0x2c89('0x1f')]='IVR';this[_0x2c89('0x20')]=_0x219de4['cause-txt'];this[_0x2c89('0x21')]=_0x541867[_0x2c89('0x21')];this[_0x2c89('0x22')]=_0x541867[_0x2c89('0x22')];this['callbackat']=_0x541867[_0x2c89('0x23')];this['recallme']=_0x541867[_0x2c89('0x24')];this[_0x2c89('0x25')]=_0x541867[_0x2c89('0x25')];this[_0x2c89('0x26')]=_0x541867[_0x2c89('0x26')];this['UserId']=_0x541867[_0x2c89('0x27')];this[_0x2c89('0x28')]=_0x541867[_0x2c89('0x28')];this[_0x2c89('0x29')]=_0x541867[_0x2c89('0x29')];}module[_0x2c89('0x2a')]=Hangup;
\ No newline at end of file
+var _0xd286=['responsetime','endtime','format','ringtime','holdtime','talktime','membername','IVR','reason','cause-txt','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','exports','lodash','moment','milliseconds','diff','seconds','state','statedesc','Answer','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','calleridnum','number','starttime'];(function(_0x34f965,_0x35e92f){var _0x3d2c9f=function(_0x268e41){while(--_0x268e41){_0x34f965['push'](_0x34f965['shift']());}};_0x3d2c9f(++_0x35e92f);}(_0xd286,0x6d));var _0x6d28=function(_0x1a93a5,_0x13f256){_0x1a93a5=_0x1a93a5-0x0;var _0x4893a2=_0xd286[_0x1a93a5];return _0x4893a2;};'use strict';var util=require('util');var _=require(_0x6d28('0x0'));var moment=require(_0x6d28('0x1'));function getSeconds(_0x6f7fb1,_0x1ec6e1){var _0x51aef1=moment(_0x6f7fb1)[_0x6d28('0x2')](0x0);var _0xd97188=moment(_0x1ec6e1)[_0x6d28('0x2')](0x0);return _0x51aef1[_0x6d28('0x3')](_0xd97188,_0x6d28('0x4'));}function Hangup(_0x42ee48,_0x29662e){this[_0x6d28('0x5')]=0x4;this[_0x6d28('0x6')]=_0x6d28('0x7');this['scheduledat']=_0x42ee48['scheduledat'];this[_0x6d28('0x8')]=_0x42ee48[_0x6d28('0x8')];this[_0x6d28('0x9')]=_0x42ee48['type']===_0x6d28('0xa')?_0x6d28('0xb'):_0x42ee48['type'];this[_0x6d28('0xc')]=_0x42ee48['countbusyretry'];this['countcongestionretry']=_0x42ee48[_0x6d28('0xd')];this[_0x6d28('0xe')]=_0x42ee48[_0x6d28('0xe')];this[_0x6d28('0xf')]=_0x42ee48[_0x6d28('0xc')]+_0x42ee48[_0x6d28('0xd')]+_0x42ee48['countnoanswerretry']+_0x42ee48[_0x6d28('0x10')]+_0x42ee48[_0x6d28('0x11')]+_0x42ee48[_0x6d28('0x12')]+_0x42ee48[_0x6d28('0x13')]+_0x42ee48[_0x6d28('0x14')];this[_0x6d28('0x10')]=_0x42ee48[_0x6d28('0x10')];this[_0x6d28('0x11')]=_0x42ee48[_0x6d28('0x11')];this[_0x6d28('0x12')]=_0x42ee48['countabandonedretry'];this[_0x6d28('0x13')]=_0x42ee48[_0x6d28('0x13')];this[_0x6d28('0x14')]=_0x42ee48[_0x6d28('0x14')];this[_0x6d28('0x15')]=_0x29662e['uniqueid'];this[_0x6d28('0x16')]=_0x42ee48['name'];this[_0x6d28('0x17')]=_0x42ee48[_0x6d28('0x18')];this[_0x6d28('0x19')]=_0x42ee48[_0x6d28('0x19')];this[_0x6d28('0x1a')]=_0x42ee48[_0x6d28('0x1a')];this[_0x6d28('0x1b')]=moment()[_0x6d28('0x1c')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x6d28('0x1d')]=getSeconds(_0x42ee48[_0x6d28('0x1a')],_0x42ee48[_0x6d28('0x19')]);this[_0x6d28('0x1e')]=0x0;this[_0x6d28('0x1f')]=getSeconds(this[_0x6d28('0x1b')],_0x42ee48['responsetime']);this[_0x6d28('0xb')]=_0x42ee48[_0x6d28('0xb')];this[_0x6d28('0x20')]=_0x6d28('0x21');this[_0x6d28('0x22')]=_0x29662e[_0x6d28('0x23')];this[_0x6d28('0x24')]=_0x42ee48['callback'];this[_0x6d28('0x25')]=_0x42ee48['callbackuniqueid'];this[_0x6d28('0x26')]=_0x42ee48[_0x6d28('0x26')];this[_0x6d28('0x27')]=_0x42ee48[_0x6d28('0x27')];this[_0x6d28('0x28')]=_0x42ee48[_0x6d28('0x28')];this[_0x6d28('0x29')]=_0x42ee48['ListId'];this['UserId']=_0x42ee48[_0x6d28('0x2a')];this[_0x6d28('0x2b')]=_0x42ee48[_0x6d28('0x2b')];this['CampaignId']=_0x42ee48['CampaignId'];}module[_0x6d28('0x2c')]=Hangup;
\ No newline at end of file
index c3ad86e..8b08aca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8266=['CampaignId','originatecalleridnum','originatecalleridname','exports','util','moment','milliseconds','seconds','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countagentrejectretry','countdropretry','countabandonedretry','countmachineretry','name','calleridnum','number','starttime','responsetime','endtime','ringtime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId'];(function(_0x2cb742,_0x16184d){var _0x4e9847=function(_0x16ce9d){while(--_0x16ce9d){_0x2cb742['push'](_0x2cb742['shift']());}};_0x4e9847(++_0x16184d);}(_0x8266,0x9c));var _0x6826=function(_0x1685e7,_0x3143ed){_0x1685e7=_0x1685e7-0x0;var _0x1832ab=_0x8266[_0x1685e7];return _0x1832ab;};'use strict';var util=require(_0x6826('0x0'));var _=require('lodash');var moment=require(_0x6826('0x1'));function getSeconds(_0xe8656f,_0x49eb6c){var _0xf003fa=moment(_0xe8656f)['milliseconds'](0x0);var _0x50f900=moment(_0x49eb6c)[_0x6826('0x2')](0x0);return _0xf003fa['diff'](_0x50f900,_0x6826('0x3'));}function History(_0x40bf27){this[_0x6826('0x4')]=_0x40bf27['uniqueid'];this[_0x6826('0x5')]=_0x40bf27[_0x6826('0x5')]||undefined;this['type']=_0x40bf27[_0x6826('0x6')];this[_0x6826('0x7')]=_0x40bf27['type']===_0x6826('0x8')?_0x6826('0x9'):_0x40bf27[_0x6826('0x6')];this[_0x6826('0xa')]=_0x40bf27[_0x6826('0xa')];this[_0x6826('0xb')]=_0x40bf27[_0x6826('0xb')];this[_0x6826('0xc')]=_0x40bf27[_0x6826('0xc')];this[_0x6826('0xd')]=_0x40bf27['countbusyretry']+_0x40bf27[_0x6826('0xb')]+_0x40bf27[_0x6826('0xc')]+_0x40bf27[_0x6826('0xe')]+_0x40bf27['countdropretry']+_0x40bf27['countabandonedretry']+_0x40bf27['countmachineretry']+_0x40bf27[_0x6826('0xf')];this[_0x6826('0xe')]=_0x40bf27['countnosuchnumberretry'];this[_0x6826('0x10')]=_0x40bf27[_0x6826('0x10')];this['countabandonedretry']=_0x40bf27[_0x6826('0x11')];this[_0x6826('0x12')]=_0x40bf27[_0x6826('0x12')];this[_0x6826('0xf')]=_0x40bf27['countagentrejectretry'];this['queue']=_0x40bf27[_0x6826('0x9')];this['calleridname']=_0x40bf27[_0x6826('0x13')];this[_0x6826('0x14')]=_0x40bf27[_0x6826('0x15')];this['starttime']=_0x40bf27[_0x6826('0x16')];this['responsetime']=_0x40bf27[_0x6826('0x17')];this[_0x6826('0x18')]=_0x40bf27[_0x6826('0x17')];this[_0x6826('0x19')]=getSeconds(_0x40bf27[_0x6826('0x17')],_0x40bf27['starttime']);this['holdtime']=0x0;this['talktime']=0x0;this[_0x6826('0x1a')]=_0x40bf27[_0x6826('0x1a')];this[_0x6826('0x1b')]=_0x40bf27[_0x6826('0x1b')];this['callbackat']=_0x40bf27[_0x6826('0x1c')];this[_0x6826('0x1d')]=_0x40bf27[_0x6826('0x1d')];this['ContactId']=_0x40bf27[_0x6826('0x1e')];this['ListId']=_0x40bf27[_0x6826('0x1f')];this[_0x6826('0x20')]=_0x40bf27[_0x6826('0x20')];this[_0x6826('0x21')]=_0x40bf27[_0x6826('0x21')];this['CampaignId']=_0x40bf27[_0x6826('0x22')];this[_0x6826('0x23')]=_0x40bf27['originatecalleridnum']||'';this[_0x6826('0x24')]=_0x40bf27[_0x6826('0x24')]||'';}module[_0x6826('0x25')]=History;
\ No newline at end of file
+var _0x1f8b=['exports','util','moment','milliseconds','diff','seconds','uniqueid','scheduledat','type','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countmachineretry','countagentrejectretry','countabandonedretry','calleridname','name','calleridnum','number','starttime','responsetime','endtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname'];(function(_0x789657,_0x401f21){var _0xc4e337=function(_0x1ecfe9){while(--_0x1ecfe9){_0x789657['push'](_0x789657['shift']());}};_0xc4e337(++_0x401f21);}(_0x1f8b,0x1e1));var _0xb1f8=function(_0x15c33e,_0x4882ac){_0x15c33e=_0x15c33e-0x0;var _0x352b6c=_0x1f8b[_0x15c33e];return _0x352b6c;};'use strict';var util=require(_0xb1f8('0x0'));var _=require('lodash');var moment=require(_0xb1f8('0x1'));function getSeconds(_0x436986,_0x5555fb){var _0x1bf119=moment(_0x436986)[_0xb1f8('0x2')](0x0);var _0x7ed33=moment(_0x5555fb)[_0xb1f8('0x2')](0x0);return _0x1bf119[_0xb1f8('0x3')](_0x7ed33,_0xb1f8('0x4'));}function History(_0x50ae3f){this[_0xb1f8('0x5')]=_0x50ae3f['uniqueid'];this[_0xb1f8('0x6')]=_0x50ae3f[_0xb1f8('0x6')]||undefined;this[_0xb1f8('0x7')]=_0x50ae3f[_0xb1f8('0x7')];this['campaigntype']=_0x50ae3f['type']===_0xb1f8('0x8')?_0xb1f8('0x9'):_0x50ae3f[_0xb1f8('0x7')];this[_0xb1f8('0xa')]=_0x50ae3f[_0xb1f8('0xa')];this[_0xb1f8('0xb')]=_0x50ae3f[_0xb1f8('0xb')];this[_0xb1f8('0xc')]=_0x50ae3f[_0xb1f8('0xc')];this[_0xb1f8('0xd')]=_0x50ae3f[_0xb1f8('0xa')]+_0x50ae3f[_0xb1f8('0xb')]+_0x50ae3f[_0xb1f8('0xc')]+_0x50ae3f[_0xb1f8('0xe')]+_0x50ae3f[_0xb1f8('0xf')]+_0x50ae3f['countabandonedretry']+_0x50ae3f[_0xb1f8('0x10')]+_0x50ae3f[_0xb1f8('0x11')];this[_0xb1f8('0xe')]=_0x50ae3f[_0xb1f8('0xe')];this[_0xb1f8('0xf')]=_0x50ae3f[_0xb1f8('0xf')];this[_0xb1f8('0x12')]=_0x50ae3f[_0xb1f8('0x12')];this[_0xb1f8('0x10')]=_0x50ae3f[_0xb1f8('0x10')];this[_0xb1f8('0x11')]=_0x50ae3f['countagentrejectretry'];this[_0xb1f8('0x9')]=_0x50ae3f[_0xb1f8('0x9')];this[_0xb1f8('0x13')]=_0x50ae3f[_0xb1f8('0x14')];this[_0xb1f8('0x15')]=_0x50ae3f[_0xb1f8('0x16')];this['starttime']=_0x50ae3f[_0xb1f8('0x17')];this[_0xb1f8('0x18')]=_0x50ae3f['responsetime'];this[_0xb1f8('0x19')]=_0x50ae3f[_0xb1f8('0x18')];this['ringtime']=getSeconds(_0x50ae3f[_0xb1f8('0x18')],_0x50ae3f['starttime']);this[_0xb1f8('0x1a')]=0x0;this[_0xb1f8('0x1b')]=0x0;this[_0xb1f8('0x1c')]=_0x50ae3f[_0xb1f8('0x1c')];this[_0xb1f8('0x1d')]=_0x50ae3f[_0xb1f8('0x1d')];this[_0xb1f8('0x1e')]=_0x50ae3f[_0xb1f8('0x1e')];this[_0xb1f8('0x1f')]=_0x50ae3f['recallme'];this[_0xb1f8('0x20')]=_0x50ae3f[_0xb1f8('0x20')];this[_0xb1f8('0x21')]=_0x50ae3f['ListId'];this[_0xb1f8('0x22')]=_0x50ae3f['UserId'];this[_0xb1f8('0x23')]=_0x50ae3f[_0xb1f8('0x23')];this[_0xb1f8('0x24')]=_0x50ae3f['CampaignId'];this[_0xb1f8('0x25')]=_0x50ae3f[_0xb1f8('0x25')]||'';this[_0xb1f8('0x26')]=_0x50ae3f[_0xb1f8('0x26')]||'';}module[_0xb1f8('0x27')]=History;
\ No newline at end of file
index 65fb990..97e3a0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x65c8=['outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','Trunk','active','md5','format','ivr','campaign:ivr:%s','campaign:save','-----\x20Stats\x20Predictive\x20---','info','Total\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Answered\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Dropped\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','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','History\x20information\x20are\x20empty','---------\x20ErlangB\x20---------','One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20','clearing\x20variable\x20start\x20progressive','clearing\x20variable\x20start\x20predictive','handlePredictive','clearing\x20variable\x20handle\x20predictive','\x22%s\x22\x20<%s>','string','inspect','error','stack','length','[decremetOriginate]\x20object\x20originated\x20is\x20negative','[decremetOriginate]\x20is\x20null\x20or\x20undefined','RESCHEDULED_CONTACTS','[getContactDialer2][ReScheduled]','contactsRescheduled','contacts','AVAILABLE_CONTACTS_FINISHED','sendMessageOneNotActive','debug','[syncQueueSummary]\x20Campaign\x20Queue:\x20','is\x20not\x20active','IS_DISACTIVED','is\x20disactive','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','state','endtime','clearZombieChannels','[uniqueid]','[actions]','undefined','sequence','enqueue','isNil','channel','catch','No\x20such\x20channel','updateOriginated','queue','[Dialer][checkChannel]','[Dialer][checkChannel][ivr]','countReScheduled','resolve','then','[countReScheduled]\x20','checkIsBlackList','verifyAdditionalPhones','[verifyAdditionalPhone]\x20','swapAdditionalPhones','checkIsBlackListIvr','[checkIsBlackListIvr]\x20','averageHandleTime','avgHandleTime','[averageHandleTime]\x20','rescheduleContact','unlockContact','[unlockContact]\x20','getContactDialer','temp','[getContactDialer]\x20','getContactDialerIvr','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','createHistory','[updateOriginated]\x20object\x20originated\x20is\x20negative','loggerHandler','emptyContact','notFound','saveInDb','merge','pick','UserId','VoiceQueueId','CampaignId','[emptyContact]','isTrunkReachable','SIP/%s','status','unmonitored','moveContactManagedDialer','uniqueid','variable','amdstatus','exten','HANGUP','statedesc','membername','custom:amd','amd','[syncHangupInAMD][createHistory]','[syncHangupInAMD]','dialAMDActive','value','Machine','AMD','countmachineretry','buildObj','[syncAgentComplete][createHistory][0]','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countabandonedretry','countagentrejectretry','dialGlobalMaxRetry','stateGlobal','reason19\x20machine....','dialMachineMaxRetry','createStateFinal','reason\x2019\x20machine....','dialMachineRetryFrequency','minutes','YYYY-MM-DD\x20HH:mm:ss','ContactId','ListId','[rescheduleContact][Machine]','HangupInAMD','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','MACHINE','countglobal','countbusyretry','countdropretry','ivrAnswerCallsDay','dialQueueProject','AnswerAGI','AGI','[syncHangupIvr][createHistory]','[syncHangupIvr]','cause-txt','Unknow','reason','agent','agiafterat','dialAgiAfterHangupAgent','[syncAgentComplete][createHistory]','answertime','queueCallerAbandonCreateState','droptime','responsetime','dialQueueTimeout','outboundDropCallsDayTimeout','Drop','TIMEOUT','dialQueueProject2','dialDropRetryFrequency','callAdditionalPhoneAfterMin','voiceQueue','additional','dialDropMaxRetry','add','[rescheduleContact][Drop]','starttime','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','dropreason','CALLEREXIT','dialAbandonedMaxRetry','[rescheduleContact][Abandoned]','Abandoned','[syncAgentComplete][createHistory][11]','actionid','locked','stateinterface','queueBooked','push','idHopper','paused','queueStatusComplete','[unlockQueueStatus][undefined]','[Catch][Preview][syncQueueStatusComplete]','[unlock][syncQueueStatusComplete]','queueBookedRR','_rr','unlockRR','[booked][RR]','Agent:\x20','contactAgent-idHopper:\x20','run','[booked][unlock]','[booked][unlock2]','[booked][unlock3]','[unlock3][syncQueueStatusComplete]','resetActiveCalls','syncCampaigns','checkIsTrunkReachable','TRUNK_IS_NOT_REACHABLE','\x20trunk\x20is\x20not\x20reachable','checkIfTime','ifTime','checkIfTimeIntervals','Failure','\x20Intervals\x20is\x20null\x20','timezones','TIMEZONE_UNKNOW','\x20Timezone\x20unknow\x20','isArray','Action','command','interval','content','indexOf','true','iftime\x20%s,%s','GLOBAL_INTERVAL_IS_OVERTIME','INTERVAL_IS_OVERTIME','[ifTime][promiseAll]','Global:\x20','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','checkDialMethod','progressive','handlePower','power','dialPowerLevel','predictive','Queue','method\x20not\x20recognized','checkPreviewRecallReminder','handlePreviewRecallNotifications','Agent','user:dialPreviewRecallReminder','launchHandleIvr','handleIvr','dialGlobalInterval','dialTimezone','[syncQueueSummary]','throttle','filter','online','map','user:%s','[syncCampaigns]','\x5cw{0,','pow','replace','random','match','actionOriginate','originate','voiceQueue\x20is\x20undefine','phone','contact\x20is\x20undefine','NONE','\x22%s,%s%s,,,%s\x22','dialer','ACTIVE','xcally-motion-dialer','XMD-AMDGREETING','dialAMDGreeting','XMD-AMDAFTERGREETINGSILENCE','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','XMD-AMDBETWEENWORDSSILENCE','dialAMDBetweenWordsSilence','XMD-AMDMAXIMUMNUMBEROFWORDS','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','XMD-VOICEQUEUEID','XMD-CAMPAIGNID','Contact','createdAt','updatedAt','XMD-','callerid','dialRandomLastDigitCallerIdNumber','dialOriginateCallerIdNumber','TrunkBackup','XMD-ORIGINATECALLERIDNAME','originatecalleridname','XMD-ORIGINATECALLERIDNUM','variables','SIP/%s/%s%s','trim','substring','dialCutDigit','from-sip','[originateError]:\x20%s','OriginateError','[originate][error]','originate\x20action\x20Error','getQueue','isSuccess','response','callProgressDetecting','[callProgressDetecting]\x20','checkRetriveMax','dialNoAnswerRetryFrequency','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','dialBusyRetryFrequency','[rescheduleContact]\x20[Busy]','dialCongestionMaxRetry','dialCongestionRetryFrequency','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','[rescheduleContact][NoSuchNumber]','dialAbandonedRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','object','entity\x20is\x20undefine','evt\x20is\x20undefine','NoSuchNumber','custom:agentnosuchnumber','nosuchnumber','reason\x200\x20no\x20such\x20number....','buildNoAnswerEventPayload','custom:agentnoanswer','dialNoAnswerMaxRetry','reason\x203\x20ringing\x20no\x20answer','outboundBusyCallsDay','busy','[syncAgentComplete][createHistory][5]','reason\x205\x20busy','Congestion','custom:agentcongestion','congestion','[syncAgentComplete][createHistory][8]','reason\x208\x20congestion','outboundAbandonedCallsDay','reason\x2011\x20abandoned','AgentReject','custom:agentreject','agentreject','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','Global','[callProgressDetecting]','Success','contact\x20not\x20moved','round','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','floor','startPredictive','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','collection\x20data\x20in\x20progressive\x20at','dialPredictiveOptimization','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Max\x20Drop\x20','Drop\x20in\x20this\x20interval','dialPredictiveInterval','getDataPredictive','startMethodPredictive','Predictive\x20after\x20first\x20interval','recalculate\x20predictive\x20at','Predictive\x20for\x20every\x20interval',')\x20are\x20less\x20than\x20threshold\x20(','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(','abandonmentRate','agentBusyFactor','dialPredictiveOptimizationPercentage','busyFactor','[getDataPredictive]','Unknown\x20Predictive','outboundQueuePauses','[CatchErlangB]','check\x20failure','one\x20call\x20every:','[handlePredictive]','fail\x20to\x20scheduled\x20calls','checkContactBlack','[booked][checkContactBlack]','queueStatusComplete:\x20','Queue:\x20','queuestatus','[unlockOriginate][syncQueueStatusComplete]','voicePause','[rescheduleContact][dialRecallInQueue]','RECALLINQUEUE','RecallInQueue','RecallFailedTimeout','[Originate][HistoryRecallClose][historyCatch]','[Originate][HistoryRecallClose]','outboundBlacklistCallsDay','Blacklist','[Originate][historyBlacklist]','[Originate][MoveBlacklist]','inBlackList','dialOrderByScheduledAt','RUNNING','ivrTotalCallsDays','[actionOriginate]\x20','[actionOriginateIvr]\x20','[getContactCampaign2]','dialLimitQueue','not_inuse','reachable','tryOriginatePredictive','[handlePredictive][limitChannel]','[actionOriginatePredictive]\x20','[getContactDialerPredictive]','--------\x20Drop\x20Rate\x20--------','M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','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','----\x20Agent\x20Busy\x20Factor\x20----','P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[busyFactor]','lodash','uuid','moment','ioredis','../preview/util/util','../../../config/environment/','../../../config/logger','booked','predictiveCalls','syncQueueSummary','../ami','redis','defaults','localhost','socket.io-emitter','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/voiceQueueRt','./action','./history','./final','./agentComplete','./queueCallerAbandon','./hangup','env','XCALLY_IP_AGI','127.0.0.1','rrmemory','roundrobin','prototype','tail','finally','preview','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','channels','actions','contactsId','uniqueId','optionPredictive','startProgressive','ivrOriginated','agentconnect','syncAgentConnect','bind','syncQueueCallerAbandon','originateresponse','syncOriginateResponse','agentcomplete','syncAgentComplete','custom:queuesummary','custom:queuesummarycomplete','syncQueueSummaryComplete','hangup','syncHangup','newexten','syncNewExten','syncVarSet','syncQueueMember','queuestatuscomplete','syncQueueStatusComplete','loopCampaigns','loopClearZombieChannels','getSettings','previewRecallmeReminderInterval','isUndefined','AGENTS_NOT_LOGGED','\x20AGENTS\x20NOT\x20LOGGED','message','NOT_ACTIVE','name','\x20NOT\x20Active','Interval','INTERVAL_IS_NULL','\x20INTERVAL_IS_NULL','Intervals','isEmpty','[ifTime][Action]','Error','stringify','milliseconds','diff','seconds','emit','type','outbound','strategy','available','loggedIn','pTalking','sumBillable','sumDuration','talking','unmanaged','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateTimeout','dialPrefix'];(function(_0x59585d,_0x2638c4){var _0x186e4c=function(_0x190e67){while(--_0x190e67){_0x59585d['push'](_0x59585d['shift']());}};_0x186e4c(++_0x2638c4);}(_0x65c8,0x1ce));var _0x865c=function(_0x5d26bd,_0x49c324){_0x5d26bd=_0x5d26bd-0x0;var _0x4399b5=_0x65c8[_0x5d26bd];return _0x4399b5;};'use strict';var util=require('util');var _=require(_0x865c('0x0'));var uuid=require(_0x865c('0x1'));var moment=require(_0x865c('0x2'));var rr=require('rr');var md5=require('md5');var Redis=require(_0x865c('0x3'));var ut=require(_0x865c('0x4'));var config=require(_0x865c('0x5'));var logger=require(_0x865c('0x6'))('dialer');var loggerBooked=require('../../../config/logger')(_0x865c('0x7'));var loggerPredictive=require(_0x865c('0x6'))('predictive');var loggerPredictiveCalls=require(_0x865c('0x6'))(_0x865c('0x8'));var loggerSyncQueueSummary=require(_0x865c('0x6'))(_0x865c('0x9'));var ami=require(_0x865c('0xa'));config[_0x865c('0xb')]=_[_0x865c('0xc')](config[_0x865c('0xb')],{'host':_0x865c('0xd'),'port':0x18eb});var io=require(_0x865c('0xe'))(new Redis(config[_0x865c('0xb')]));var cmHopper=require(_0x865c('0xf'));var cmHopperHistory=require(_0x865c('0x10'));var cmHopperAdditionalPhone=require('../rpc/cmHopperAdditionalPhone');var cmHopperBlack=require(_0x865c('0x11'));var voiceQueueRt=require(_0x865c('0x12'));var RpcSetting=require('../rpc/setting');var Action=require(_0x865c('0x13'));var History=require(_0x865c('0x14'));var Final=require(_0x865c('0x15'));var AgentComplete=require(_0x865c('0x16'));var QueueCallerAbandon=require(_0x865c('0x17'));var Hangup=require(_0x865c('0x18'));var ipAgi=process[_0x865c('0x19')][_0x865c('0x1a')]||_0x865c('0x1b');var strategy={'rrmemory':_0x865c('0x1c'),'roundrobin':_0x865c('0x1d')};var previewRecallmeReminderInterval=0x1;var Sequence=function(){};Sequence[_0x865c('0x1e')]['enqueue']=function(_0x144e6f){this[_0x865c('0x1f')]=this[_0x865c('0x1f')]?this[_0x865c('0x1f')][_0x865c('0x20')](_0x144e6f):_0x144e6f();};function Dialer(_0x161156,_0x4d282d){this['sequence']=new Sequence();this[_0x865c('0x21')]=_0x4d282d;this[_0x865c('0x22')]=_0x161156[_0x865c('0x22')];this['campaigns']=_0x161156[_0x865c('0x23')];this[_0x865c('0x24')]=_0x161156['agents'];this[_0x865c('0x25')]=_0x161156[_0x865c('0x25')];this['maxNumberOriginate']=config[_0x865c('0x26')]||0x2;this[_0x865c('0x27')]={};this[_0x865c('0x28')]={};this[_0x865c('0x29')]={};this[_0x865c('0x2a')]={};this[_0x865c('0x2b')]={};this['startPredictive']={};this[_0x865c('0x2c')]={};this[_0x865c('0x2d')]={};this['queueBooked']={};this['queueBookedRR']={};ami['on'](_0x865c('0x2e'),this[_0x865c('0x2f')][_0x865c('0x30')](this));ami['on']('queuecallerabandon',this[_0x865c('0x31')][_0x865c('0x30')](this));ami['on'](_0x865c('0x32'),this[_0x865c('0x33')][_0x865c('0x30')](this));ami['on'](_0x865c('0x34'),this[_0x865c('0x35')][_0x865c('0x30')](this));ami['on'](_0x865c('0x36'),this['syncQueueSummary'][_0x865c('0x30')](this));ami['on'](_0x865c('0x37'),this[_0x865c('0x38')][_0x865c('0x30')](this));ami['on'](_0x865c('0x39'),this[_0x865c('0x3a')][_0x865c('0x30')](this));ami['on'](_0x865c('0x3b'),this[_0x865c('0x3c')][_0x865c('0x30')](this));ami['on']('varset',this[_0x865c('0x3d')][_0x865c('0x30')](this));ami['on']('queuemember',this[_0x865c('0x3e')][_0x865c('0x30')](this));ami['on'](_0x865c('0x3f'),this[_0x865c('0x40')]['bind'](this));this[_0x865c('0x41')]();this[_0x865c('0x42')]();RpcSetting[_0x865c('0x43')]()['then'](function(_0x68df73){previewRecallmeReminderInterval=_0x68df73[_0x865c('0x44')];});}function isNotNull(_0x5d915a){return _0x5d915a!==null&&!_[_0x865c('0x45')](_0x5d915a);}function checkIsLoggedIn(_0x503030,_0x5f1a89){return function(){if(_0x5f1a89<=0x0){_0x503030['message']=_0x865c('0x46');throw _0x503030['name']+_0x865c('0x47');}};}function isActive(_0x52544a){return _0x52544a;}function checkIsActive(_0x33f168,_0x2f564f){return function(){if(!isActive(_0x2f564f)){_0x33f168[_0x865c('0x48')]=_0x865c('0x49');throw _0x33f168[_0x865c('0x4a')]+_0x865c('0x4b');}};}function checkInterval(_0x3b53ba){return function(){if(!isNotNull(_0x3b53ba[_0x865c('0x4c')])){_0x3b53ba['message']=_0x865c('0x4d');throw _0x3b53ba[_0x865c('0x4a')]+_0x865c('0x4e');}if(!isNotNull(_0x3b53ba['Interval'][_0x865c('0x4f')])){_0x3b53ba[_0x865c('0x48')]='INTERVAL_IS_NULL';throw _0x3b53ba['name']+_0x865c('0x4e');}if(!isNotNull(_[_0x865c('0x50')](_0x3b53ba[_0x865c('0x4c')]['Intervals']))){_0x3b53ba[_0x865c('0x48')]=_0x865c('0x4d');throw _0x3b53ba[_0x865c('0x4a')]+_0x865c('0x4e');}};}function msgResponse(_0x8e08db,_0x539b7c,_0x518ced){return{'action':_0x8e08db,'response':_0x539b7c,'message':_0x518ced,'stack':_0x518ced};}function myreject(_0x5646ac){return function(_0x3f9119){return _0x5646ac(msgResponse(_0x865c('0x51'),_0x865c('0x52'),JSON[_0x865c('0x53')](_0x3f9119)));};}function getSeconds(_0xd516a2,_0x26a116){var _0x3a616d=moment(_0xd516a2)[_0x865c('0x54')](0x0);var _0xfdec0e=moment(_0x26a116)['milliseconds'](0x0);return _0x3a616d[_0x865c('0x55')](_0xfdec0e,_0x865c('0x56'));}function emit(_0x1decab,_0x4f46a1,_0x2a6ba5){io['to'](_0x1decab)[_0x865c('0x57')](_0x4f46a1,_0x2a6ba5);}function emitVoiceQueueSummary(_0x1ab95a){if(_0x1ab95a[_0x865c('0x58')]===_0x865c('0x59')){var _0x1c8347={'id':_0x1ab95a['id'],'name':_0x1ab95a['name'],'strategy':_0x1ab95a[_0x865c('0x5a')],'answered':_0x1ab95a['answered'],'available':_0x1ab95a[_0x865c('0x5b')],'loggedIn':_0x1ab95a[_0x865c('0x5c')],'pTalking':_0x1ab95a[_0x865c('0x5d')],'sumBillable':_0x1ab95a[_0x865c('0x5e')],'sumDuration':_0x1ab95a[_0x865c('0x5f')],'sumHoldTime':_0x1ab95a['sumHoldTime']||0x0,'talking':_0x1ab95a[_0x865c('0x60')],'total':_0x1ab95a['total'],'type':_0x1ab95a[_0x865c('0x58')],'unmanaged':_0x1ab95a[_0x865c('0x61')],'abandoned':_0x1ab95a['abandoned'],'waiting':_0x1ab95a['waiting'],'loggedInDb':_0x1ab95a[_0x865c('0x62')],'dialActive':_0x1ab95a[_0x865c('0x63')],'dialMethod':_0x1ab95a[_0x865c('0x64')],'dialOriginateCallerIdName':_0x1ab95a[_0x865c('0x65')],'dialOriginateCallerIdNumber':_0x1ab95a['dialOriginateCallerIdNumber'],'dialOriginateTimeout':_0x1ab95a[_0x865c('0x66')],'dialPrefix':_0x1ab95a[_0x865c('0x67')],'outboundAnswerAgiCallsDay':_0x1ab95a[_0x865c('0x68')],'outboundAnswerCallsDay':_0x1ab95a[_0x865c('0x69')],'outboundBlacklistCallsDay':_0x1ab95a['outboundBlacklistCallsDay'],'outboundBusyCallsDay':_0x1ab95a['outboundBusyCallsDay'],'outboundCongestionCallsDay':_0x1ab95a[_0x865c('0x6a')],'outboundDropCallsDayACS':_0x1ab95a[_0x865c('0x6b')],'outboundDropCallsDayCallersExit':_0x1ab95a[_0x865c('0x6c')],'outboundDropCallsDayTimeout':_0x1ab95a['outboundDropCallsDayTimeout'],'outboundNoAnswerCallsDay':_0x1ab95a[_0x865c('0x6d')],'outboundNoSuchCallsDay':_0x1ab95a[_0x865c('0x6e')],'outboundOriginateFailureCallsDay':_0x1ab95a[_0x865c('0x6f')],'outboundReCallsDay':_0x1ab95a[_0x865c('0x70')],'outboundRejectCallsDay':_0x1ab95a[_0x865c('0x71')],'outboundUnknownCallsDay':_0x1ab95a[_0x865c('0x72')],'predictiveIntervalAnsweredCalls':_0x1ab95a[_0x865c('0x73')],'predictiveIntervalAvgHoldtime':_0x1ab95a[_0x865c('0x74')],'predictiveIntervalAvgTalktime':_0x1ab95a[_0x865c('0x75')],'predictiveIntervalDroppedCallsCallersExit':_0x1ab95a['predictiveIntervalDroppedCallsCallersExit'],'predictiveIntervalDroppedCallsTimeout':_0x1ab95a[_0x865c('0x76')],'predictiveIntervalErlangCalls':_0x1ab95a[_0x865c('0x77')],'predictiveIntervalErlangCallsDroppedCalls':_0x1ab95a[_0x865c('0x78')],'predictiveIntervalHitRate':_0x1ab95a[_0x865c('0x79')],'predictiveIntervalMultiplicativeFactor':_0x1ab95a[_0x865c('0x7a')],'predictiveIntervalPauses':_0x1ab95a[_0x865c('0x7b')],'predictiveIntervalAvailable':_0x1ab95a['predictiveIntervalAvailable'],'predictiveIntervalTotalCalls':_0x1ab95a[_0x865c('0x7c')],'message':_0x1ab95a[_0x865c('0x48')],'originated':_0x1ab95a[_0x865c('0x7d')],'erlangCalls':_0x1ab95a[_0x865c('0x7e')],'erlangCallToSecond':_0x1ab95a[_0x865c('0x7f')],'erlangAbandonmentRate':_0x1ab95a[_0x865c('0x80')],'erlangBusyFactor':_0x1ab95a[_0x865c('0x81')],'startPredictive':_0x1ab95a['startPredictive'],'startProgressive':_0x1ab95a['startProgressive']};if(_0x1ab95a[_0x865c('0x82')]){_0x1c8347[_0x865c('0x82')]={'id':_0x1ab95a[_0x865c('0x82')]['id'],'name':_0x1ab95a[_0x865c('0x82')][_0x865c('0x4a')],'active':_0x1ab95a[_0x865c('0x82')][_0x865c('0x83')],'callerid':_0x1ab95a[_0x865c('0x82')]['callerid']};}if(_0x1ab95a[_0x865c('0x4c')]){_0x1c8347[_0x865c('0x4c')]={'id':_0x1ab95a[_0x865c('0x4c')]['id'],'name':_0x1ab95a[_0x865c('0x4c')][_0x865c('0x4a')]};}var _0xc22b7a=md5(JSON[_0x865c('0x53')](_0x1c8347));if(_0x1ab95a[_0x865c('0x84')]!==_0xc22b7a){_0x1ab95a[_0x865c('0x84')]=_0xc22b7a;emit(util[_0x865c('0x85')]('voice:queue:%s',_0x1c8347[_0x865c('0x4a')]),'voice_queue:save',_0x1c8347);}}}function emitCampaignSummary(_0x146f60){if(_0x146f60[_0x865c('0x58')]===_0x865c('0x86')){emit(util[_0x865c('0x85')](_0x865c('0x87'),_0x146f60[_0x865c('0x4a')]),_0x865c('0x88'),_0x146f60);}}function checkGetDataPredictive(_0x322d3a){if(isNotNull(_0x322d3a)&&!_[_0x865c('0x50')](_0x322d3a)){loggerPredictive['info'](_0x865c('0x89'));loggerPredictive[_0x865c('0x8a')](_0x865c('0x8b'),_0x322d3a[_0x865c('0x7c')]);loggerPredictive['info'](_0x865c('0x8c'),_0x322d3a[_0x865c('0x73')]);loggerPredictive[_0x865c('0x8a')](_0x865c('0x8d'),_0x322d3a[_0x865c('0x76')]);loggerPredictive['info'](_0x865c('0x8e'),_0x322d3a[_0x865c('0x8f')]);loggerPredictive[_0x865c('0x8a')](_0x865c('0x90'),_0x322d3a[_0x865c('0x74')]);loggerPredictive['info'](_0x865c('0x91'),_0x322d3a['predictiveIntervalAvgTalktime']);loggerPredictive['info']('---------------------------');if(_0x322d3a['predictiveIntervalTotalCalls']>0x0){if(!_[_0x865c('0x45')](_0x322d3a[_0x865c('0x75')])&&_0x322d3a[_0x865c('0x75')]>0x0){return!![];}loggerPredictive['info'](_0x865c('0x92'));if(!_[_0x865c('0x45')](_0x322d3a['predictiveIntervalAvgHoldtime'])&&_0x322d3a[_0x865c('0x74')]>0x0){return!![];}loggerPredictive[_0x865c('0x8a')]('Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive');}else{loggerPredictive['info']('Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive');}}else{loggerPredictive[_0x865c('0x8a')](_0x865c('0x93'));}return![];}function mergeDataErlangB(_0x5ecf25){return function(_0x12ef13){loggerPredictive['info'](_0x865c('0x94'));loggerPredictive[_0x865c('0x8a')]('Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x12ef13[_0x865c('0x7e')]);loggerPredictive[_0x865c('0x8a')](_0x865c('0x95'),_0x12ef13[_0x865c('0x7f')]);loggerPredictive[_0x865c('0x8a')](_0x865c('0x96'),_0x12ef13[_0x865c('0x80')]);loggerPredictive[_0x865c('0x8a')](_0x865c('0x97'),_0x12ef13['erlangBusyFactor']);loggerPredictive[_0x865c('0x8a')](_0x865c('0x96'),_0x12ef13[_0x865c('0x80')]);loggerPredictive[_0x865c('0x8a')]('---------------------------');_['merge'](_0x5ecf25,_0x12ef13);};}function getDiff(_0x3db005){var _0x588e3d=moment()[_0x865c('0x54')](0x0);var _0xd54dcd=moment(_0x3db005)[_0x865c('0x54')](0x0);return _0x588e3d[_0x865c('0x55')](_0xd54dcd,'seconds');}function ifInterval(_0x500b8c,_0x110b2a){if(_['isUndefined'](_0x110b2a)){return![];}return getDiff(_0x110b2a)<_0x500b8c*0x3c;}function freeVariablesPredictive(_0x1c9f19){if(isNotNull(_0x1c9f19)){if(!_[_0x865c('0x45')](_0x1c9f19[_0x865c('0x2c')])){_0x1c9f19[_0x865c('0x2c')]=undefined;loggerPredictive[_0x865c('0x8a')](_0x1c9f19['name'],_0x865c('0x98'));}if(!_['isUndefined'](_0x1c9f19['startPredictive'])){_0x1c9f19['startPredictive']=undefined;loggerPredictive[_0x865c('0x8a')](_0x1c9f19['name'],_0x865c('0x99'));}if(!_[_0x865c('0x45')](_0x1c9f19[_0x865c('0x9a')])){clearInterval(_0x1c9f19[_0x865c('0x9a')]);_0x1c9f19[_0x865c('0x9a')]=undefined;loggerPredictive[_0x865c('0x8a')](_0x1c9f19[_0x865c('0x4a')],_0x865c('0x9b'));}}}function erlangb(_0x3e6eb3,_0x4cdbf8){if(_0x4cdbf8===0x0){return 0x0;}var _0x139ebd=0x1;for(var _0x5aed27=0x1;_0x5aed27<=_0x4cdbf8;_0x5aed27+=0x1){_0x139ebd=0x1+_0x139ebd*_0x5aed27/_0x3e6eb3;}return 0x1/_0x139ebd;}function isVoiceQueueOutbound(_0x2bfb2f){return _0x2bfb2f===_0x865c('0x59');}function isNotPreview(_0x156fc1){return _0x156fc1!==_0x865c('0x21');}function isCampaignIvr(_0x10bd6f){return _0x10bd6f===_0x865c('0x86');}function getCallerId(_0x48a9ae,_0x4a467e,_0x5b0b21){if(!_[_0x865c('0x45')](_0x5b0b21)&&typeof _0x5b0b21==='string'&&!_[_0x865c('0x50')](_0x5b0b21)){if(!_[_0x865c('0x45')](_0x4a467e)&&typeof _0x4a467e==='string'&&!_[_0x865c('0x50')](_0x4a467e)){return util['format'](_0x865c('0x9c'),_0x4a467e,_0x5b0b21);}return util[_0x865c('0x85')](_0x865c('0x9c'),_0x5b0b21,_0x5b0b21);}if(!_[_0x865c('0x45')](_0x48a9ae)&&typeof _0x48a9ae===_0x865c('0x9d')&&!_['isEmpty'](_0x48a9ae)){return _0x48a9ae;}return'\x22\x22\x20<>';}function loggerCatchQueueSummary(_0x1db934,_0x4dc47d){return function(_0x25bf1c){freeVariablesPredictive(_0x4dc47d);emitVoiceQueueSummary(_0x4dc47d);emitCampaignSummary(_0x4dc47d);loggerSyncQueueSummary['debug'](_0x1db934,util[_0x865c('0x9e')](_0x25bf1c,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x126d77,_0x3eb02e){return function(_0x2ba568){loggerPredictive[_0x865c('0x9f')](_0x3eb02e[_0x865c('0x4a')],_0x126d77);loggerPredictive['error'](_0x2ba568[_0x865c('0xa0')]);freeVariablesPredictive(_0x3eb02e);};}function loggerCatch(_0x23fbbf){return function(_0xf84895){logger[_0x865c('0x9f')](_0x23fbbf,util[_0x865c('0x9e')](_0xf84895,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x49deee){return _0x49deee&&!_[_0x865c('0x45')](_0x49deee)&&_0x49deee[_0x865c('0xa1')]>0x0;}function decremetOriginate(_0x5c2513){if(!_[_0x865c('0x45')](_0x5c2513)&&_0x5c2513!==null){if(typeof _0x5c2513[_0x865c('0x7d')]!=='undefined'){if(_0x5c2513[_0x865c('0x7d')]>0x0){_0x5c2513[_0x865c('0x7d')]-=0x1;}else{logger['error'](_0x865c('0xa2'));}}}else{logger[_0x865c('0x9f')](_0x865c('0xa3'));}}function checkContactLowerLimitOriginate(_0x48c8b9,_0x2a8a78,_0x35db91){if(_0x2a8a78>_0x35db91){for(var _0x9e802=0x0;_0x9e802<_0x2a8a78-_0x35db91;_0x9e802+=0x1){decremetOriginate(_0x48c8b9);}}}function loggerGetContactDialer(_0x2f06bb,_0x2d2ea5,_0x1db112){return function(_0x341714){checkContactLowerLimitOriginate(_0x2d2ea5,_0x1db112,0x0);logger[_0x865c('0x9f')](_0x2f06bb,util['inspect'](_0x341714,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x3d86a5){return function(_0x5cf3d6){if(isNotNull(_0x5cf3d6)&&isNotNull(_0x5cf3d6[0x0])){if(_0x5cf3d6[0x0]['contactsRescheduled']>0x0){_0x3d86a5[_0x865c('0x48')]=_0x865c('0xa4');logger[_0x865c('0x8a')](_0x865c('0xa5')+_0x3d86a5[_0x865c('0x4a')],_0x5cf3d6[0x0][_0x865c('0xa6')],_0x865c('0xa7'));}else{_0x3d86a5[_0x865c('0x48')]=_0x865c('0xa8');logger[_0x865c('0x8a')]('[getContactDialer2][Empty]'+_0x3d86a5['name']);}}};}function notSendMessagesQueue(_0x1bb3c2){if(_0x1bb3c2[_0x865c('0xa9')]){freeVariablesPredictive(_0x1bb3c2);if(_0x1bb3c2[_0x865c('0x7d')]===0x0&&_0x1bb3c2['talking']===0x0&&_0x1bb3c2['waiting']===0x0&&(_0x1bb3c2[_0x865c('0x5d')]||0x0)===0x0){_0x1bb3c2['sendMessageOneNotActive']=![];_0x1bb3c2[_0x865c('0x5b')]=0x0;_0x1bb3c2[_0x865c('0x48')]=_0x865c('0x49');loggerSyncQueueSummary[_0x865c('0xaa')](_0x865c('0xab'),_0x1bb3c2['name'],_0x865c('0xac'));}else{_0x1bb3c2[_0x865c('0x48')]=_0x865c('0xad');loggerSyncQueueSummary[_0x865c('0xaa')]('[syncQueueSummary]\x20Campaign\x20Queue:\x20',_0x1bb3c2['name'],_0x865c('0xae'));}emitVoiceQueueSummary(_0x1bb3c2);}}function notSendMessagesCampaign(_0x3660ff){if(_0x3660ff[_0x865c('0xa9')]){if(_0x3660ff[_0x865c('0x7d')]===0x0){_0x3660ff[_0x865c('0xa9')]=![];_0x3660ff['message']='NOT_ACTIVE';loggerSyncQueueSummary['debug'](_0x865c('0xaf'),_0x3660ff[_0x865c('0x4a')],_0x865c('0xac'));}else{_0x3660ff[_0x865c('0x48')]=_0x865c('0xad');loggerSyncQueueSummary[_0x865c('0xaa')]('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0x3660ff[_0x865c('0x4a')],_0x865c('0xae'));}emitCampaignSummary(_0x3660ff);}}function createObjHistory(_0x187881,_0x2016d7,_0xef71fc,_0x39213e,_0x213427){_0x187881['message']=_0xef71fc;var _0x539856=new Action(_0x187881,_0x2016d7);var _0x702c8f=new History(_0x539856);_0x702c8f[_0x865c('0xb0')]=_0x39213e;_0x702c8f['statedesc']=_0x213427;_0x702c8f[_0x865c('0xb1')]=_0x539856['starttime'];return _0x702c8f;}Dialer['prototype'][_0x865c('0x42')]=function(){var _0xc1c99b=this;setInterval(function(){_0xc1c99b[_0x865c('0xb2')](_0xc1c99b['uniqueId'],_0x865c('0xb3'));_0xc1c99b[_0x865c('0xb2')](_0xc1c99b[_0x865c('0x28')],_0x865c('0xb4'));},0x32c8);};Dialer['prototype'][_0x865c('0xb2')]=function(_0x433123,_0x4dafef){var _0x4b5e60=this;for(var _0x1b4112 in _0x433123){if(typeof _0x433123[_0x1b4112]!==_0x865c('0xb5')){this[_0x865c('0xb6')][_0x865c('0xb7')](function(){if(!_[_0x865c('0xb8')](_0x433123[_0x1b4112])){return ami['Action']({'action':'status','channel':_0x433123[_0x1b4112][_0x865c('0xb9')]})[_0x865c('0xba')](function(_0x34c91c){if(_0x34c91c[_0x865c('0x48')]===_0x865c('0xbb')){setTimeout(function(){if(_0x433123[_0x1b4112]&&_0x433123[_0x1b4112][_0x865c('0x58')]!==_0x865c('0x86')){_0x4b5e60[_0x865c('0xbc')](_0x4b5e60[_0x865c('0x22')][_0x433123[_0x1b4112][_0x865c('0xbd')]]);logger['error'](_0x865c('0xbe'),_0x4dafef,_0x1b4112,_0x433123[_0x1b4112]['queue']);delete _0x433123[_0x1b4112];}if(_0x433123[_0x1b4112]&&_0x433123[_0x1b4112][_0x865c('0x58')]==='ivr'){_0x4b5e60[_0x865c('0xbc')](_0x4b5e60[_0x865c('0x23')][_0x433123[_0x1b4112][_0x865c('0xbd')]]);logger[_0x865c('0x9f')](_0x865c('0xbf'),_0x4dafef,_0x1b4112,_0x433123[_0x1b4112]['queue']);delete _0x433123[_0x1b4112];}},0x2328);}});}});}}};Dialer[_0x865c('0x1e')][_0x865c('0xc0')]=function(_0xa14ea7){return Promise[_0x865c('0xc1')]()[_0x865c('0xc2')](cmHopper[_0x865c('0xc0')](_0xa14ea7))[_0x865c('0xba')](loggerCatch(_0x865c('0xc3')));};Dialer[_0x865c('0x1e')][_0x865c('0xc4')]=function(_0x4e9272){return Promise[_0x865c('0xc1')]()[_0x865c('0xc2')](cmHopperBlack[_0x865c('0xc4')](_0x4e9272))['catch'](loggerCatch('[checkIsBlackList]\x20'));};Dialer[_0x865c('0x1e')][_0x865c('0xc5')]=function(_0xec4454,_0x4d80f3,_0x219111){return Promise[_0x865c('0xc1')]()['then'](cmHopperAdditionalPhone['verifyAdditionalPhones'](_0xec4454,_0x4d80f3,_0x219111))[_0x865c('0xba')](loggerCatch(_0x865c('0xc6')));};Dialer[_0x865c('0x1e')][_0x865c('0xc7')]=function(_0x41f370,_0x5054ee,_0x4da369){return Promise[_0x865c('0xc1')]()[_0x865c('0xc2')](cmHopperAdditionalPhone['swapAdditionalPhones'](_0x41f370,_0x5054ee,_0x4da369))[_0x865c('0xba')](loggerCatch('[swapAdditionalPhone]\x20'));};Dialer['prototype'][_0x865c('0xc8')]=function(_0x13c807){return Promise[_0x865c('0xc1')]()['then'](cmHopperBlack[_0x865c('0xc8')](_0x13c807))[_0x865c('0xba')](loggerCatch(_0x865c('0xc9')));};Dialer['prototype'][_0x865c('0xca')]=function(_0x2ab68b){return Promise[_0x865c('0xc1')]()[_0x865c('0xc2')](cmHopperHistory[_0x865c('0xcb')](_0x2ab68b))['catch'](loggerCatch(_0x865c('0xcc')));};Dialer[_0x865c('0x1e')][_0x865c('0xcd')]=function(_0x507c1f){return Promise['resolve']()[_0x865c('0xc2')](cmHopper[_0x865c('0xcd')](_0x507c1f))['catch'](loggerCatch('[rescheduleContact]\x20'));};Dialer[_0x865c('0x1e')][_0x865c('0xce')]=function(_0x133dad,_0x1b4162,_0x4a64d6){return Promise['resolve']()[_0x865c('0xc2')](cmHopper[_0x865c('0xce')](_0x133dad,_0x1b4162,_0x4a64d6))[_0x865c('0xba')](loggerCatch(_0x865c('0xcf')));};Dialer[_0x865c('0x1e')][_0x865c('0xd0')]=function(_0x34f5a6,_0x55cf7c,_0x4a6e3c,_0x4e5d88,_0x44aef5){return Promise[_0x865c('0xc1')]()[_0x865c('0xc2')](cmHopper[_0x865c('0xd0')](_0x34f5a6,_0x55cf7c,_0x4a6e3c,_0x4e5d88))['catch'](function(_0x2fd6a6){_0x44aef5[_0x865c('0xd1')]-=_0x4a6e3c;_0x44aef5[_0x865c('0xd1')]=_0x44aef5['temp']>0x0?_0x44aef5[_0x865c('0xd1')]:0x0;loggerCatch(_0x865c('0xd2'))(_0x2fd6a6);});};Dialer['prototype'][_0x865c('0xd3')]=function(_0x2a3e5d,_0xfeeb98,_0x4e1515,_0xd3f557){return Promise[_0x865c('0xc1')]()[_0x865c('0xc2')](cmHopper[_0x865c('0xd3')](_0x2a3e5d,_0xfeeb98,_0x4e1515))[_0x865c('0xba')](function(_0x1949d5){_0xd3f557[_0x865c('0xd1')]-=_0xfeeb98;_0xd3f557['temp']=_0xd3f557['temp']>0x0?_0xd3f557[_0x865c('0xd1')]:0x0;loggerCatch('[getContactDialerIvr]\x20')(_0x1949d5);});};Dialer[_0x865c('0x1e')][_0x865c('0xd4')]=function(_0x1c6388){return Promise[_0x865c('0xc1')]()['then'](voiceQueueRt[_0x865c('0xd4')](_0x1c6388))['catch'](loggerCatch(_0x865c('0xd5')));};Dialer['prototype']['moveContactManagedDialer']=function(_0xb78afc){return Promise['resolve']()[_0x865c('0xc2')](cmHopper['moveContactManagedDialer'](_0xb78afc))[_0x865c('0xba')](loggerCatch('[moveContactManagedDialer]\x20'));};Dialer[_0x865c('0x1e')][_0x865c('0xd6')]=function(_0x1aee6c){return Promise[_0x865c('0xc1')]()[_0x865c('0xc2')](cmHopperHistory['createHistory'](_0x1aee6c))[_0x865c('0xba')](loggerCatch('[createHistory]\x20'));};Dialer[_0x865c('0x1e')][_0x865c('0xbc')]=function(_0x23399d){if(!_[_0x865c('0x45')](_0x23399d)&&_0x23399d!==null){if(typeof _0x23399d[_0x865c('0x7d')]!==_0x865c('0xb5')){if(_0x23399d[_0x865c('0x7d')]>0x0){_0x23399d[_0x865c('0x7d')]-=0x1;}else{logger['error'](_0x865c('0xd7'));}}}else{logger[_0x865c('0x9f')]('[updateOriginated]\x20is\x20null\x20or\x20undefined');}};Dialer[_0x865c('0x1e')][_0x865c('0xd8')]=function(_0x11f10b,_0x8749e8){var _0x2e4090=this;return function(_0x25bc5b){_0x2e4090[_0x865c('0xbc')](_0x8749e8);logger[_0x865c('0x9f')](_0x11f10b,util['inspect'](_0x25bc5b,{'showHidden':![],'depth':null}));};};Dialer['prototype'][_0x865c('0xd9')]=function(_0x1d7e20,_0x1aec23,_0x217d97){var _0x2a00a9={'state':0x19,'statedesc':_0x865c('0xda')};this[_0x865c('0xbc')](_0x1aec23);this[_0x865c('0xdb')](_[_0x865c('0xdc')](_0x2a00a9,_[_0x865c('0xdd')](_0x217d97,['ContactId','ListId',_0x865c('0xde'),_0x865c('0xdf'),_0x865c('0xe0')])),'[emptyContact][createHistory]',_0x865c('0xe1'));logger[_0x865c('0x9f')](_0x1d7e20);};Dialer[_0x865c('0x1e')]['isSuccess']=function(_0x6b8b61){return _0x6b8b61==='Success';};Dialer[_0x865c('0x1e')][_0x865c('0xe2')]=function(_0x4b4dd7){return!_['isUndefined'](_0x4b4dd7)&&_0x4b4dd7&&!_['isUndefined'](_0x4b4dd7['name'])&&!_[_0x865c('0x45')](_0x4b4dd7['active'])&&_0x4b4dd7[_0x865c('0x83')]&&(this[_0x865c('0x25')][util[_0x865c('0x85')](_0x865c('0xe3'),_0x4b4dd7[_0x865c('0x4a')])][_0x865c('0xe4')]==='reachable'||this[_0x865c('0x25')][util[_0x865c('0x85')](_0x865c('0xe3'),_0x4b4dd7['name'])][_0x865c('0xe4')]===_0x865c('0xe5'));};Dialer[_0x865c('0x1e')]['saveInDb']=function(_0x1ad14a,_0x558f86,_0x500577){this['createHistory'](_0x1ad14a)[_0x865c('0xba')](loggerCatch(_0x558f86));this[_0x865c('0xe6')](_0x1ad14a)[_0x865c('0xba')](loggerCatch(_0x500577));};Dialer[_0x865c('0x1e')][_0x865c('0x3d')]=function(_0x2adf55){var _0x5a6419=this;var _0x1c89c6=this['uniqueId'][_0x2adf55[_0x865c('0xe7')]];var _0x1df412;if(!_[_0x865c('0xb8')](_0x2adf55)&&!_['isNil'](_0x2adf55[_0x865c('0xe8')])&&!_[_0x865c('0xb8')](_0x2adf55[_0x865c('0xe8')][_0x865c('0xe9')])&&_0x2adf55[_0x865c('0xea')]==='xcally-motion-dialer'&&_0x1c89c6){if(_0x1c89c6['type']!=='ivr'&&this[_0x865c('0x22')][_0x1c89c6['queue']]['dialAMDActive']&&_0x2adf55['value']===_0x865c('0xeb')){delete this[_0x865c('0x2a')][_0x2adf55[_0x865c('0xe7')]];this[_0x865c('0xbc')](this[_0x865c('0x22')][_0x1c89c6[_0x865c('0xbd')]]);this[_0x865c('0x22')][_0x1c89c6[_0x865c('0xbd')]][_0x865c('0x69')]+=0x1;this[_0x865c('0x22')][_0x1c89c6[_0x865c('0xbd')]][_0x865c('0x68')]+=0x1;_0x1df412=new Hangup(_0x1c89c6,_0x2adf55);_0x1df412[_0x865c('0xb0')]=0x12;_0x1df412[_0x865c('0xec')]='HangupInAMD';_0x1df412[_0x865c('0xed')]='AMD';ami['emit'](_0x865c('0xee'),ut['buildObj'](_0x1df412,_0x865c('0xef')));this[_0x865c('0xdb')](_0x1df412,_0x865c('0xf0'),_0x865c('0xf1'));}if(_0x1c89c6['type']!==_0x865c('0x86')&&this['voiceQueues'][_0x1c89c6[_0x865c('0xbd')]][_0x865c('0xf2')]&&_0x2adf55[_0x865c('0xf3')]==='MACHINE'){return new Promise(function(_0x21bdcc,_0x4a2412){delete _0x5a6419[_0x865c('0x2a')][_0x2adf55[_0x865c('0xe7')]];_0x5a6419[_0x865c('0xbc')](_0x5a6419[_0x865c('0x22')][_0x1c89c6[_0x865c('0xbd')]]);_0x5a6419[_0x865c('0x22')][_0x1c89c6['queue']]['outboundAnswerCallsDay']+=0x1;_0x5a6419['voiceQueues'][_0x1c89c6['queue']]['outboundAnswerAgiCallsDay']+=0x1;var _0x38e853=_0x5a6419[_0x865c('0x22')][_0x1c89c6['queue']];var _0xed1434=new Hangup(_0x1c89c6,_0x2adf55);_0xed1434[_0x865c('0xb0')]=0x13;_0xed1434[_0x865c('0xec')]=_0x865c('0xf4');_0xed1434[_0x865c('0xed')]=_0x865c('0xf5');_0xed1434[_0x865c('0xf6')]+=0x1;_0xed1434['countglobal']+=0x1;_0xed1434[_0x865c('0xef')]=!![];ami[_0x865c('0x57')](_0x865c('0xee'),ut[_0x865c('0xf7')](_0xed1434,_0x865c('0xef')));_0x5a6419['createHistory'](_0xed1434)[_0x865c('0xba')](loggerCatch(_0x865c('0xf8')));if(_0xed1434['countbusyretry']+_0xed1434[_0x865c('0xf9')]+_0xed1434[_0x865c('0xfa')]+_0xed1434[_0x865c('0xfb')]+_0xed1434['countdropretry']+_0xed1434[_0x865c('0xfc')]+_0xed1434[_0x865c('0xf6')]+_0xed1434[_0x865c('0xfd')]>=_0x38e853[_0x865c('0xfe')]){_0x5a6419[_0x865c('0xff')](_0xed1434,_0x21bdcc,_0x4a2412,_0x865c('0x100'));}else{if(_0xed1434[_0x865c('0xf6')]>=_0x38e853[_0x865c('0x101')]){_0x5a6419[_0x865c('0x102')](_0xed1434,_0x21bdcc,_0x4a2412,_0x865c('0x103'));}else{_0x5a6419[_0x865c('0xcd')]({'active':![],'countmachineretry':_0xed1434['countmachineretry'],'scheduledat':moment()['add'](_0x38e853[_0x865c('0x104')],_0x865c('0x105'))[_0x865c('0x85')](_0x865c('0x106')),'ContactId':_0xed1434[_0x865c('0x107')],'ListId':_0xed1434[_0x865c('0x108')],'VoiceQueueId':_0xed1434[_0x865c('0xdf')]||undefined,'CampaignId':_0xed1434['CampaignId']||undefined})['catch'](loggerCatch(_0x865c('0x109')));_0x21bdcc({'reschedule':0x1});}}});}if(_0x1c89c6[_0x865c('0x58')]==='ivr'&&this[_0x865c('0x23')][_0x1c89c6[_0x865c('0xbd')]]['dialAMDActive']&&_0x2adf55[_0x865c('0xf3')]===_0x865c('0xeb')){delete this[_0x865c('0x2a')][_0x2adf55[_0x865c('0xe7')]];this[_0x865c('0xbc')](this[_0x865c('0x23')][_0x1c89c6[_0x865c('0xbd')]]);_0x1df412=new Hangup(_0x1c89c6,_0x2adf55);_0x1df412[_0x865c('0xb0')]=0x12;_0x1df412[_0x865c('0xec')]=_0x865c('0x10a');_0x1df412[_0x865c('0xed')]=_0x865c('0xf5');ami[_0x865c('0x57')](_0x865c('0xee'),ut[_0x865c('0xf7')](_0x1df412,_0x865c('0xef')));this['saveInDb'](_0x1df412,_0x865c('0x10b'),_0x865c('0x10c'));}if(_0x1c89c6[_0x865c('0x58')]===_0x865c('0x86')&&this[_0x865c('0x23')][_0x1c89c6[_0x865c('0xbd')]]['dialAMDActive']&&_0x2adf55[_0x865c('0xf3')]===_0x865c('0x10d')){return new Promise(function(_0x1b0ade,_0x235168){delete _0x5a6419[_0x865c('0x2a')][_0x2adf55[_0x865c('0xe7')]];_0x5a6419['updateOriginated'](_0x5a6419['campaigns'][_0x1c89c6[_0x865c('0xbd')]]);_0x5a6419[_0x865c('0x23')][_0x1c89c6[_0x865c('0xbd')]][_0x865c('0x69')]+=0x1;_0x5a6419[_0x865c('0x23')][_0x1c89c6['queue']]['outboundAnswerAgiCallsDay']+=0x1;var _0x20b918=_0x5a6419[_0x865c('0x23')][_0x1c89c6[_0x865c('0xbd')]];var _0x505e68=new Hangup(_0x1c89c6,_0x2adf55);_0x505e68[_0x865c('0xb0')]=0x13;_0x505e68['statedesc']=_0x865c('0xf4');_0x505e68[_0x865c('0xed')]='AMD';_0x505e68['countmachineretry']+=0x1;_0x505e68[_0x865c('0x10e')]+=0x1;_0x505e68[_0x865c('0xef')]=!![];ami[_0x865c('0x57')](_0x865c('0xee'),ut['buildObj'](_0x505e68,_0x865c('0xef')));_0x5a6419[_0x865c('0xd6')](_0x505e68)[_0x865c('0xba')](loggerCatch(_0x865c('0xf8')));if(_0x505e68[_0x865c('0x10f')]+_0x505e68[_0x865c('0xf9')]+_0x505e68[_0x865c('0xfa')]+_0x505e68[_0x865c('0xfb')]+_0x505e68[_0x865c('0x110')]+_0x505e68['countabandonedretry']+_0x505e68[_0x865c('0xf6')]+_0x505e68[_0x865c('0xfd')]>=_0x20b918[_0x865c('0xfe')]){_0x5a6419[_0x865c('0xff')](_0x505e68,_0x1b0ade,_0x235168,_0x865c('0x100'));}else{if(_0x505e68[_0x865c('0xf6')]>=_0x20b918[_0x865c('0x101')]){_0x5a6419[_0x865c('0x102')](_0x505e68,_0x1b0ade,_0x235168,_0x865c('0x103'));}else{_0x5a6419[_0x865c('0xcd')]({'active':![],'countmachineretry':_0x505e68[_0x865c('0xf6')],'scheduledat':moment()['add'](_0x20b918[_0x865c('0x104')],_0x865c('0x105'))['format'](_0x865c('0x106')),'ContactId':_0x505e68[_0x865c('0x107')],'ListId':_0x505e68[_0x865c('0x108')],'VoiceQueueId':_0x505e68[_0x865c('0xdf')]||undefined,'CampaignId':_0x505e68['CampaignId']||undefined})[_0x865c('0xba')](loggerCatch(_0x865c('0x109')));_0x1b0ade({'reschedule':0x1});}}});}}};Dialer[_0x865c('0x1e')][_0x865c('0x3a')]=function(_0x35710b){var _0x489902=this[_0x865c('0x2a')][_0x35710b['uniqueid']];var _0x362cdf;if(_0x489902&&_0x489902[_0x865c('0x58')]===_0x865c('0x86')){delete this[_0x865c('0x2a')][_0x35710b[_0x865c('0xe7')]];this[_0x865c('0xbc')](this['campaigns'][_0x489902[_0x865c('0xbd')]]);this[_0x865c('0x23')][_0x489902['queue']][_0x865c('0x111')]+=0x1;_0x362cdf=new Hangup(_0x489902,_0x35710b);this[_0x865c('0xd6')](_0x362cdf)[_0x865c('0xba')](loggerCatch('[syncHangupIvr][createHistory]'));this[_0x865c('0xe6')](_0x362cdf)['catch'](loggerCatch('[syncHangupIvr]'));}if(_0x489902&&_0x489902[_0x865c('0x58')]!==_0x865c('0x86')&&isNotNull(this['voiceQueues'][_0x489902['queue']][_0x865c('0x112')])){delete this['uniqueId'][_0x35710b[_0x865c('0xe7')]];this[_0x865c('0xbc')](this['voiceQueues'][_0x489902['queue']]);this[_0x865c('0x22')][_0x489902[_0x865c('0xbd')]]['outboundAnswerCallsDay']+=0x1;this[_0x865c('0x22')][_0x489902[_0x865c('0xbd')]]['outboundAnswerAgiCallsDay']+=0x1;_0x362cdf=new Hangup(_0x489902,_0x35710b);_0x362cdf[_0x865c('0xb0')]=0x10;_0x362cdf[_0x865c('0xec')]=_0x865c('0x113');_0x362cdf[_0x865c('0xed')]=_0x865c('0x114');this['createHistory'](_0x362cdf)[_0x865c('0xba')](loggerCatch(_0x865c('0x115')));this[_0x865c('0xe6')](_0x362cdf)[_0x865c('0xba')](loggerCatch(_0x865c('0x116')));}if(_0x489902&&_0x489902['type']!=='ivr'&&!isNotNull(this[_0x865c('0x22')][_0x489902[_0x865c('0xbd')]][_0x865c('0x112')])){delete this['uniqueId'][_0x35710b[_0x865c('0xe7')]];this[_0x865c('0xbc')](this[_0x865c('0x22')][_0x489902['queue']]);this[_0x865c('0x22')][_0x489902['queue']]['outboundUnknownCallsDay']+=0x1;_0x362cdf=new Hangup(_0x489902,_0x35710b);_0x362cdf['state']=0xc;_0x362cdf[_0x865c('0xec')]=_0x35710b[_0x865c('0x117')];_0x362cdf[_0x865c('0xed')]=_0x865c('0x118');this[_0x865c('0xd6')](_0x362cdf)['catch'](loggerCatch(_0x865c('0x115')));this[_0x865c('0xe6')](_0x362cdf)[_0x865c('0xba')](loggerCatch('[syncHangupIvr]'));}};Dialer[_0x865c('0x1e')]['syncAgentComplete']=function(_0x9ecb9f){var _0x143109=this['uniqueId'][_0x9ecb9f[_0x865c('0xe7')]];if(this[_0x865c('0x22')][_0x9ecb9f['queue']]){if(_0x143109&&_0x143109[_0x865c('0x58')]!=='ivr'){delete this[_0x865c('0x2a')][_0x9ecb9f[_0x865c('0xe7')]];this['voiceQueues'][_0x9ecb9f['queue']][_0x865c('0x69')]+=0x1;var _0x29e109=new AgentComplete(_0x143109,_0x9ecb9f);if(_0x9ecb9f[_0x865c('0x119')]===_0x865c('0x11a')){_0x29e109[_0x865c('0x11b')]=this['voiceQueues'][_0x9ecb9f[_0x865c('0xbd')]]['dialQueueProject2']&&this[_0x865c('0x22')][_0x9ecb9f['queue']][_0x865c('0x11c')]?moment()[_0x865c('0x85')](_0x865c('0x106')):undefined;}this['createHistory'](_0x29e109)[_0x865c('0xba')](loggerCatch(_0x865c('0x11d')));this[_0x865c('0xe6')](_0x29e109)[_0x865c('0xba')](loggerCatch('[syncAgentComplete]'));}}};Dialer[_0x865c('0x1e')][_0x865c('0x2f')]=function(_0x211f9f){if(this[_0x865c('0x22')][_0x211f9f[_0x865c('0xbd')]]){if(this['uniqueId'][_0x211f9f[_0x865c('0xe7')]]&&this['uniqueId'][_0x211f9f[_0x865c('0xe7')]][_0x865c('0x58')]!=='ivr'){this[_0x865c('0xbc')](this[_0x865c('0x22')][_0x211f9f['queue']]);this[_0x865c('0x2a')][_0x211f9f[_0x865c('0xe7')]][_0x865c('0x11e')]=moment()['format'](_0x865c('0x106'));}}};Dialer[_0x865c('0x1e')][_0x865c('0x11f')]=function(_0x52e8c4,_0x129770){this[_0x865c('0xd6')](_0x52e8c4)[_0x865c('0xba')](loggerCatch('[syncAgentComplete][createHistory]'));if(_0x129770==0x0){this['moveContactManagedDialer'](_0x52e8c4)[_0x865c('0xba')](loggerCatch('[syncQueueCallerAbandon]\x20[Drop]'));}};Dialer['prototype'][_0x865c('0x31')]=function(_0x1235ce){var _0x4b4975=this[_0x865c('0x2a')][_0x1235ce[_0x865c('0xe7')]];var _0x28ea1a=this;var _0x4182f4=![];var _0x20b307;var _0xa78483;if(this[_0x865c('0x22')][_0x1235ce['queue']]){if(_0x4b4975&&_0x4b4975[_0x865c('0x58')]!==_0x865c('0x86')){delete this[_0x865c('0x2a')][_0x1235ce['uniqueid']];this['updateOriginated'](this['voiceQueues'][_0x1235ce[_0x865c('0xbd')]]);_0x4b4975[_0x865c('0x120')]=moment()[_0x865c('0x85')](_0x865c('0x106'));var _0x1a4e62=new QueueCallerAbandon(_0x4b4975,_0x1235ce);if(getSeconds(_0x4b4975['droptime'],_0x4b4975[_0x865c('0x121')])>=_0x4b4975[_0x865c('0x122')]){this['voiceQueues'][_0x1235ce[_0x865c('0xbd')]][_0x865c('0x76')]+=0x1;this[_0x865c('0x22')][_0x1235ce['queue']][_0x865c('0x123')]+=0x1;this[_0x865c('0x22')][_0x1235ce[_0x865c('0xbd')]]['predictiveIntervalErlangCallsDroppedCalls']+=0x1;_0x1a4e62[_0x865c('0xb0')]=0xa;_0x1a4e62[_0x865c('0xec')]=_0x865c('0x124');_0x1a4e62['dropreason']=_0x865c('0x125');_0x1a4e62[_0x865c('0x11b')]=this[_0x865c('0x22')][_0x1235ce[_0x865c('0xbd')]][_0x865c('0x126')]?moment()['format'](_0x865c('0x106')):undefined;_0x1a4e62[_0x865c('0x110')]+=0x1;_0x1a4e62['countglobal']+=0x1;_0x20b307=this[_0x865c('0x22')][_0x1235ce['queue']][_0x865c('0x127')];_0xa78483=this[_0x865c('0x22')][_0x1235ce['queue']][_0x865c('0x128')];_0x28ea1a[_0x865c('0xc5')](_0x1a4e62,_0x1a4e62[_0x865c('0xb0')],_0x4b4975[_0x865c('0x129')])[_0x865c('0xc2')](function(_0x87e07){_0x4182f4=_0x87e07[_0x865c('0x12a')]==0x1;if(_0x1a4e62[_0x865c('0x110')]>=_0x28ea1a[_0x865c('0x22')][_0x1235ce[_0x865c('0xbd')]][_0x865c('0x12b')]){_0x28ea1a[_0x865c('0x11f')](_0x1a4e62,_0x87e07['additional']);}else{_0x28ea1a[_0x865c('0xcd')]({'active':![],'countdropretry':_0x1a4e62[_0x865c('0x110')],'scheduledat':moment()[_0x865c('0x12c')](_0x28ea1a[_0x865c('0x22')][_0x1235ce['queue']]['dialDropRetryFrequency'],_0x865c('0x105'))[_0x865c('0x85')](_0x865c('0x106')),'ContactId':_0x4b4975['ContactId'],'ListId':_0x4b4975['ListId'],'VoiceQueueId':_0x4b4975[_0x865c('0xdf')]||undefined,'CampaignId':_0x4b4975['CampaignId']||undefined})[_0x865c('0xba')](loggerCatch(_0x865c('0x12d')));var _0x5326de=new History(_0x1a4e62);_0x5326de[_0x865c('0xb0')]=0xa;_0x5326de[_0x865c('0xec')]=_0x865c('0x124');_0x5326de['starttime']=moment()[_0x865c('0x85')](_0x865c('0x106'));_0x5326de[_0x865c('0xb1')]=_0x5326de[_0x865c('0x12e')];_0x5326de['calleridname']=_0x1a4e62[_0x865c('0x12f')];_0x5326de[_0x865c('0x130')]=_0x1a4e62[_0x865c('0x130')];_0x28ea1a[_0x865c('0xd6')](_0x5326de)['catch'](loggerCatch(_0x865c('0x131')));}})[_0x865c('0xc2')](function(){if(_0x4182f4)_0x28ea1a[_0x865c('0xc7')](_0x1a4e62,_0x20b307,_0xa78483)[_0x865c('0xc2')](function(){return 0x1;});});}else{this['voiceQueues'][_0x1235ce[_0x865c('0xbd')]][_0x865c('0x8f')]+=0x1;this[_0x865c('0x22')][_0x1235ce[_0x865c('0xbd')]][_0x865c('0x6c')]+=0x1;_0x1a4e62['state']=0xb;_0x1a4e62[_0x865c('0xec')]='Abandoned';_0x1a4e62[_0x865c('0x132')]=_0x865c('0x133');_0x1a4e62[_0x865c('0xfc')]+=0x1;_0x1a4e62[_0x865c('0x10e')]+=0x1;_0x20b307=this[_0x865c('0x22')][_0x1235ce[_0x865c('0xbd')]]['dialAbandonedRetryFrequency'];_0xa78483=this[_0x865c('0x22')][_0x1235ce['queue']]['callAdditionalPhoneAfterMin'];_0x28ea1a[_0x865c('0xc5')](_0x1a4e62,_0x1a4e62[_0x865c('0xb0')],_0x4b4975[_0x865c('0x129')])[_0x865c('0xc2')](function(_0x81b5cf){if(_0x1a4e62[_0x865c('0xfc')]>=_0x28ea1a[_0x865c('0x22')][_0x1235ce['queue']][_0x865c('0x134')]){_0x28ea1a[_0x865c('0x11f')](_0x1a4e62,_0x81b5cf[_0x865c('0x12a')]);}else{_0x28ea1a[_0x865c('0xcd')]({'active':![],'countabandonedretry':_0x1a4e62[_0x865c('0xfc')],'scheduledat':moment()[_0x865c('0x12c')](_0x28ea1a[_0x865c('0x22')][_0x1235ce[_0x865c('0xbd')]]['dialAbandonedRetryFrequency'],_0x865c('0x105'))['format'](_0x865c('0x106')),'ContactId':_0x4b4975['ContactId'],'ListId':_0x4b4975['ListId'],'VoiceQueueId':_0x4b4975[_0x865c('0xdf')]||undefined,'CampaignId':_0x4b4975[_0x865c('0xe0')]||undefined})[_0x865c('0xba')](loggerCatch(_0x865c('0x135')));var _0x402816=new History(_0x1a4e62);_0x402816['state']=0xb;_0x402816[_0x865c('0xec')]=_0x865c('0x136');_0x402816['starttime']=moment()['format'](_0x865c('0x106'));_0x402816[_0x865c('0xb1')]=_0x402816[_0x865c('0x12e')];_0x402816[_0x865c('0x12f')]=_0x1a4e62[_0x865c('0x12f')];_0x402816['calleridnum']=_0x1a4e62[_0x865c('0x130')];_0x28ea1a[_0x865c('0xd6')](_0x402816)[_0x865c('0xba')](loggerCatch(_0x865c('0x137')));}})[_0x865c('0xc2')](function(){if(_0x4182f4)_0x28ea1a[_0x865c('0xc7')](_0x1a4e62,_0x20b307,_0xa78483)[_0x865c('0xc2')](function(){return 0x1;});});}}}};Dialer['prototype'][_0x865c('0x3c')]=function(_0x39fdf5){if(this[_0x865c('0x28')][_0x39fdf5[_0x865c('0xe7')]]){this[_0x865c('0x28')][_0x39fdf5[_0x865c('0xe7')]][_0x865c('0xb9')]=_0x39fdf5['channel'];}if(this[_0x865c('0x2a')][_0x39fdf5[_0x865c('0xe7')]]){this[_0x865c('0x2a')][_0x39fdf5[_0x865c('0xe7')]]['channel']=_0x39fdf5[_0x865c('0xb9')];}};Dialer['prototype']['syncQueueMember']=function(_0x5a760d){if(strategy[this['voiceQueues'][this['actions'][_0x5a760d['actionid']][_0x865c('0xbd')]][_0x865c('0x5a')]]===_0x865c('0x1d')){if(this[_0x865c('0x28')][_0x5a760d[_0x865c('0x138')]]&&_['isNil'](this['actions'][_0x5a760d[_0x865c('0x138')]][_0x865c('0x139')])&&_0x5a760d['status']==='1'&&_0x5a760d['paused']==='0'){if(this[_0x865c('0x24')][_0x5a760d[_0x865c('0x13a')]]){if(!this[_0x865c('0x24')][_0x5a760d['stateinterface']][_0x865c('0x139')]){this[_0x865c('0x24')][_0x5a760d['stateinterface']][_0x865c('0x139')]=!![];this[_0x865c('0x28')][_0x5a760d['actionid']][_0x865c('0x139')]=!![];this[_0x865c('0x28')][_0x5a760d[_0x865c('0x138')]][_0x865c('0x13a')]=_0x5a760d[_0x865c('0x13a')];}}}}else if((strategy[this[_0x865c('0x22')][this[_0x865c('0x28')][_0x5a760d[_0x865c('0x138')]][_0x865c('0xbd')]]['strategy']]||_0x865c('0x1c'))===_0x865c('0x1c')){if(this[_0x865c('0x28')][_0x5a760d[_0x865c('0x138')]]){if(this[_0x865c('0x24')][_0x5a760d[_0x865c('0x13a')]]){this[_0x865c('0x28')][_0x5a760d[_0x865c('0x138')]][_0x865c('0x13a')]=_0x5a760d['stateinterface'];if(_[_0x865c('0xb8')](this[_0x865c('0x13b')][this[_0x865c('0x28')][_0x5a760d['actionid']][_0x865c('0xbd')]])){this[_0x865c('0x13b')][this['actions'][_0x5a760d[_0x865c('0x138')]][_0x865c('0xbd')]]=[];}this[_0x865c('0x13b')][this[_0x865c('0x28')][_0x5a760d[_0x865c('0x138')]]['queue']][_0x865c('0x13c')](_[_0x865c('0xdc')](_[_0x865c('0xdd')](this[_0x865c('0x28')][_0x5a760d['actionid']],[_0x865c('0x13d'),'stateinterface']),{'status':_0x5a760d[_0x865c('0xe4')],'paused':_0x5a760d[_0x865c('0x13e')]}));}}}};function unlockQueueStatus(_0x588493,_0x29477f){setTimeout(function(){if(_[_0x865c('0x45')](_0x588493[_0x865c('0x13f')])){loggerBooked['error'](_0x865c('0x140'),_0x29477f);}_0x588493[_0x865c('0x13f')]=!![];loggerBooked[_0x865c('0x8a')]('[booked][unlockQueueStatus]',_0x29477f,JSON[_0x865c('0x53')](_[_0x865c('0xdd')](_0x588493,[_0x865c('0x4a'),_0x865c('0x13f')])));},0x1f3);}Dialer[_0x865c('0x1e')]['syncQueueStatusComplete']=function(_0x3e8c67){var _0x548dad=this;var _0x1a8e9f=_0x548dad[_0x865c('0x22')][_0x548dad['actions'][_0x3e8c67[_0x865c('0x138')]][_0x865c('0xbd')]];if(strategy[this[_0x865c('0x22')][this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]]['queue']][_0x865c('0x5a')]]===_0x865c('0x1d')){if(this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]]&&this[_0x865c('0x28')][_0x3e8c67['actionid']][_0x865c('0x13a')]){this['preview']['run'](this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]]['idHopper'],this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]]['stateinterface'])[_0x865c('0xba')](function(_0xc09560){logger[_0x865c('0x9f')](_0x865c('0x141'),util[_0x865c('0x9e')](_0xc09560,{'showHidden':![],'depth':null}));})[_0x865c('0x20')](function(){_0x548dad[_0x865c('0xbc')](_0x548dad[_0x865c('0x22')][_0x548dad[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]]['queue']]);_0x548dad['agents'][_0x548dad[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]][_0x865c('0x13a')]][_0x865c('0x139')]=![];delete _0x548dad[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]];unlockQueueStatus(_0x1a8e9f);});}else{this[_0x865c('0xbc')](this[_0x865c('0x22')][this['actions'][_0x3e8c67['actionid']]['queue']]);this[_0x865c('0xcd')]({'active':![],'ContactId':this[_0x865c('0x28')][_0x3e8c67['actionid']][_0x865c('0x107')],'ListId':this['actions'][_0x3e8c67[_0x865c('0x138')]][_0x865c('0x108')],'VoiceQueueId':this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]][_0x865c('0xdf')]||undefined,'CampaignId':this['actions'][_0x3e8c67['actionid']]['CampaignId']||undefined})['catch'](loggerCatch(_0x865c('0x142')));delete this[_0x865c('0x28')][_0x3e8c67['actionid']];unlockQueueStatus(_0x1a8e9f);}}else if((strategy[this['voiceQueues'][this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]][_0x865c('0xbd')]][_0x865c('0x5a')]]||_0x865c('0x1c'))===_0x865c('0x1c')){var _0x3beba5;if(this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]]&&!_[_0x865c('0x50')](this[_0x865c('0x13b')][this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]][_0x865c('0xbd')]])){if(this[_0x865c('0x143')][_0x548dad[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]][_0x865c('0xbd')]]){this[_0x865c('0x143')][_0x548dad[_0x865c('0x28')][_0x3e8c67['actionid']][_0x865c('0xbd')]]=this[_0x865c('0x143')][this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]][_0x865c('0xbd')]]?this[_0x865c('0x143')][this['actions'][_0x3e8c67[_0x865c('0x138')]][_0x865c('0xbd')]]:this[_0x865c('0x13b')][this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]][_0x865c('0xbd')]]?this['queueBooked'][this[_0x865c('0x28')][_0x3e8c67['actionid']][_0x865c('0xbd')]]['_rr']||0x0:0x0;}this[_0x865c('0x13b')][this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]][_0x865c('0xbd')]][_0x865c('0x144')]=this[_0x865c('0x143')][this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]][_0x865c('0xbd')]];for(var _0x4f9946=0x0;_0x4f9946<this[_0x865c('0x13b')][this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]]['queue']]['length'];_0x4f9946+=0x1){_0x3beba5=rr(this[_0x865c('0x13b')][this['actions'][_0x3e8c67[_0x865c('0x138')]][_0x865c('0xbd')]]);this[_0x865c('0x143')][_0x548dad[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]][_0x865c('0xbd')]]=this['queueBooked'][this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]][_0x865c('0xbd')]][_0x865c('0x144')];if(_0x3beba5[_0x865c('0xe4')]==='1'&&_0x3beba5[_0x865c('0x13e')]==='0'){break;}}if(!_[_0x865c('0xb8')](_0x3beba5)){this[_0x865c('0x24')][_0x3beba5[_0x865c('0x13a')]]['unlockRR']=_[_0x865c('0x45')](this[_0x865c('0x24')][_0x3beba5[_0x865c('0x13a')]][_0x865c('0x145')])?!![]:this['agents'][_0x3beba5[_0x865c('0x13a')]][_0x865c('0x145')];}loggerBooked[_0x865c('0x8a')](_0x865c('0x146'),_0x3e8c67['actionid'],_0x865c('0x147'),JSON[_0x865c('0x53')](_[_0x865c('0xdd')](this[_0x865c('0x24')][_0x3beba5['stateinterface']],[_0x865c('0x4a'),_0x865c('0x145')])),_0x865c('0x148'),JSON[_0x865c('0x53')](_0x3beba5['idHopper']));if(!_[_0x865c('0xb8')](_0x3beba5)&&_0x3beba5[_0x865c('0xe4')]==='1'&&_0x3beba5['paused']==='0'&&this[_0x865c('0x24')][_0x3beba5[_0x865c('0x13a')]]['unlockRR']){this['agents'][_0x3beba5['stateinterface']][_0x865c('0x145')]=![];this[_0x865c('0x13b')][_0x548dad[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]][_0x865c('0xbd')]]=[];this[_0x865c('0x21')][_0x865c('0x149')](_0x3beba5[_0x865c('0x13d')],_0x3beba5['stateinterface'])[_0x865c('0xba')](function(_0x35be36){logger[_0x865c('0x9f')](_0x865c('0x141'),util[_0x865c('0x9e')](_0x35be36,{'showHidden':![],'depth':null}));})[_0x865c('0x20')](function(){_0x548dad[_0x865c('0xbc')](_0x548dad[_0x865c('0x22')][_0x548dad[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]][_0x865c('0xbd')]]);setTimeout(function(){_0x548dad[_0x865c('0x24')][_0x3beba5['stateinterface']][_0x865c('0x145')]=!![];loggerBooked[_0x865c('0x8a')]('[booked][RR][finaly]',_0x3e8c67[_0x865c('0x138')],_0x865c('0x147'),JSON[_0x865c('0x53')](_[_0x865c('0xdd')](_0x548dad[_0x865c('0x24')][_0x3beba5[_0x865c('0x13a')]],[_0x865c('0x4a'),_0x865c('0x145')])),_0x865c('0x148'),JSON['stringify'](_0x3beba5[_0x865c('0x13d')]));},0xc7);delete _0x548dad['actions'][_0x3e8c67[_0x865c('0x138')]];unlockQueueStatus(_0x1a8e9f,_0x3e8c67[_0x865c('0x138')]);});}else{loggerBooked[_0x865c('0x8a')](_0x865c('0x14a'));this[_0x865c('0xbc')](this[_0x865c('0x22')][this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]][_0x865c('0xbd')]]);this[_0x865c('0xcd')]({'active':![],'ContactId':this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]][_0x865c('0x107')],'ListId':this[_0x865c('0x28')][_0x3e8c67['actionid']][_0x865c('0x108')],'VoiceQueueId':this['actions'][_0x3e8c67[_0x865c('0x138')]][_0x865c('0xdf')]||undefined,'CampaignId':this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]][_0x865c('0xe0')]||undefined})[_0x865c('0xba')](loggerCatch(_0x865c('0x142')));delete this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]];unlockQueueStatus(_0x1a8e9f);}}else{loggerBooked[_0x865c('0x8a')](_0x865c('0x14b'));this[_0x865c('0xbc')](this['voiceQueues'][this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]][_0x865c('0xbd')]]);this[_0x865c('0xcd')]({'active':![],'ContactId':this['actions'][_0x3e8c67['actionid']][_0x865c('0x107')],'ListId':this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]]['ListId'],'VoiceQueueId':this['actions'][_0x3e8c67['actionid']][_0x865c('0xdf')]||undefined,'CampaignId':this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]]['CampaignId']||undefined})[_0x865c('0xba')](loggerCatch('[unlock2][syncQueueStatusComplete]'));delete this['actions'][_0x3e8c67[_0x865c('0x138')]];unlockQueueStatus(_0x1a8e9f);}}else{loggerBooked[_0x865c('0x8a')](_0x865c('0x14c'));this[_0x865c('0xbc')](this[_0x865c('0x22')][this['actions'][_0x3e8c67[_0x865c('0x138')]][_0x865c('0xbd')]]);this[_0x865c('0xcd')]({'active':![],'ContactId':this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]]['ContactId'],'ListId':this['actions'][_0x3e8c67[_0x865c('0x138')]][_0x865c('0x108')],'VoiceQueueId':this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]][_0x865c('0xdf')]||undefined,'CampaignId':this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]][_0x865c('0xe0')]||undefined})[_0x865c('0xba')](loggerCatch(_0x865c('0x14d')));delete this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]];unlockQueueStatus(_0x1a8e9f);}};Dialer['prototype'][_0x865c('0x41')]=function(){var _0x3ba080=this;return cmHopper[_0x865c('0x14e')]({'active':![]},{'where':{'active':!![]}})[_0x865c('0xc2')](function(){setInterval(function(){_0x3ba080[_0x865c('0x14f')]();},0x3e8);});};Dialer['prototype'][_0x865c('0x150')]=function(_0xc9fb53){var _0x219223=this;return function(){if(!_0x219223[_0x865c('0xe2')](_0xc9fb53[_0x865c('0x82')])){if(!_0x219223[_0x865c('0xe2')](_0xc9fb53['TrunkBackup'])){_0xc9fb53[_0x865c('0x48')]=_0x865c('0x151');throw _0xc9fb53[_0x865c('0x4a')]+_0x865c('0x152');}}};};Dialer[_0x865c('0x1e')][_0x865c('0x153')]=function(_0x3a5888,_0x47bb11,_0x337a2d,_0x2db26b){var _0xacf5a7=this;return function(){var _0x3f88e3=!![];return _0xacf5a7[_0x865c('0x154')](_0x3a5888,_0x47bb11,_0x337a2d,_0x2db26b,_0x3f88e3);};};Dialer['prototype'][_0x865c('0x155')]=function(_0xba72d6,_0x4f1142,_0x3fe8fd,_0x461e2d){var _0x2a908a=this;return function(){var _0x16c0f6=![];return _0x2a908a['ifTime'](_0xba72d6[_0x865c('0x4f')],_0x4f1142,_0x3fe8fd,_0x461e2d,_0x16c0f6);};};Dialer['prototype']['ifTime']=function(_0x3a0ddf,_0x148907,_0xf8e2db,_0x2638e4,_0x51d8e5){var _0x54cb5d=[];return new Promise(function(_0x580d31,_0x53ed80){if(!isNotNull(_0x3a0ddf)){_0x2638e4[_0x865c('0x48')]='INTERVAL_IS_NULL';return _0x53ed80(msgResponse('ifTime',_0x865c('0x156'),_0xf8e2db+_0x865c('0x157')));}if(_[_0x865c('0x50')](_0x3a0ddf)){_0x2638e4[_0x865c('0x48')]='INTERVAL_IS_EMPTY';return _0x53ed80(msgResponse(_0x865c('0x154'),'Failure',_0xf8e2db+'\x20Intervals\x20is\x20empty\x20'));}if(_0x148907&&_[_0x865c('0x45')](config[_0x865c('0x158')][_0x148907])){_0x2638e4[_0x865c('0x48')]=_0x865c('0x159');return _0x53ed80(msgResponse(_0x865c('0x154'),_0x865c('0x156'),_0xf8e2db+_0x865c('0x15a')+_0x148907));}if(_[_0x865c('0x15b')](_0x3a0ddf)){for(var _0x26c929=0x0;_0x26c929<_0x3a0ddf[_0x865c('0xa1')];_0x26c929+=0x1){_0x54cb5d['push'](ami[_0x865c('0x15c')]({'action':_0x865c('0x15d'),'command':util[_0x865c('0x85')]('iftime\x20%s,%s',_0x3a0ddf[_0x26c929][_0x865c('0x15e')],!_[_0x865c('0x45')](config[_0x865c('0x158')][_0x148907])?_0x148907:'')})[_0x865c('0xc2')](function(_0x1d38e7){return _0x1d38e7[_0x865c('0x15f')][_0x865c('0x160')](_0x865c('0x161'))>=0x0;})[_0x865c('0xba')](myreject(_0x53ed80)));}}else{_0x54cb5d[_0x865c('0x13c')](ami['Action']({'action':_0x865c('0x15d'),'command':util[_0x865c('0x85')](_0x865c('0x162'),_0x3a0ddf,!_[_0x865c('0x45')](config[_0x865c('0x158')][_0x148907])?_0x148907:'')})[_0x865c('0xc2')](function(_0xf2970a){return _0xf2970a[_0x865c('0x15f')][_0x865c('0x160')](_0x865c('0x161'))>=0x0;})[_0x865c('0xba')](myreject(_0x53ed80)));}Promise['all'](_0x54cb5d)[_0x865c('0xc2')](function(_0x128e45){var _0x5ecadc=_['some'](_0x128e45);if(_0x5ecadc){return _0x580d31(_0x5ecadc);}else{_0x2638e4[_0x865c('0x48')]=_0x51d8e5?_0x865c('0x163'):_0x865c('0x164');return _0x53ed80(msgResponse(_0x865c('0x165'),'Failure',_0x865c('0x166')+_0x51d8e5+'\x20'+_0xf8e2db+_0x865c('0x167')+util['inspect'](_0x3a0ddf,{'showHidden':![],'depth':null})+_0x865c('0x168')+_0x148907));}})[_0x865c('0xba')](function(_0x25d489){return _0x53ed80(msgResponse(_0x865c('0x154'),_0x865c('0x156'),JSON[_0x865c('0x53')](_0x25d489)));});});};Dialer[_0x865c('0x1e')][_0x865c('0x169')]=function(_0x4d95f9){var _0x386d13=this;return function(){switch(_0x4d95f9[_0x865c('0x64')]){case _0x865c('0x16a'):freeVariablesPredictive(_0x4d95f9);_0x386d13[_0x865c('0x16b')](_0x4d95f9,0x1);break;case _0x865c('0x16c'):freeVariablesPredictive(_0x4d95f9);_0x386d13[_0x865c('0x16b')](_0x4d95f9,_0x4d95f9[_0x865c('0x16d')]);break;case'predictive':_0x386d13[_0x865c('0x16e')](_0x4d95f9);break;case'booked':freeVariablesPredictive(_0x4d95f9);_0x386d13[_0x865c('0x16b')](_0x4d95f9,0x1);break;default:freeVariablesPredictive(_0x4d95f9);logger[_0x865c('0x9f')](_0x865c('0x16f'),_0x4d95f9[_0x865c('0x4a')],_0x865c('0x170'));}};};Dialer['prototype'][_0x865c('0x171')]=function(_0x3df66e){return Promise[_0x865c('0xc1')]()['then'](cmHopper[_0x865c('0x172')](_0x3df66e['id'],previewRecallmeReminderInterval))[_0x865c('0xc2')](function(_0x1e4002){for(var _0x199fb7=0x0;_0x199fb7<_0x1e4002[_0x865c('0xa1')];_0x199fb7++){var _0x3c8399=_0x1e4002[_0x199fb7][_0x865c('0x173')][_0x865c('0x4a')];if(_0x3c8399)io['to'](util[_0x865c('0x85')]('user:%s',_0x3c8399))[_0x865c('0x57')](_0x865c('0x174'),{'hopper':_0x1e4002[_0x199fb7]});}})[_0x865c('0xba')](function(){});};Dialer[_0x865c('0x1e')][_0x865c('0x175')]=function(_0x3614e8){var _0x2ff0bd=this;return function(){_0x2ff0bd[_0x865c('0x176')](_0x3614e8);};};Dialer[_0x865c('0x1e')][_0x865c('0x9')]=function(_0x15534d){var _0x59bccd=this;if(isNotPreview(_0x15534d['dialMethod'])){if(isVoiceQueueOutbound(_0x15534d[_0x865c('0x58')])&&isActive(_0x15534d[_0x865c('0x63')])){_0x15534d['sendMessageOneNotActive']=!![];Promise[_0x865c('0xc1')]()[_0x865c('0xc2')](checkIsLoggedIn(_0x15534d,_0x15534d[_0x865c('0x5c')]))[_0x865c('0xc2')](checkIsActive(_0x15534d,_0x15534d[_0x865c('0x63')]))[_0x865c('0xc2')](checkInterval(_0x15534d))[_0x865c('0xc2')](_0x59bccd[_0x865c('0x150')](_0x15534d))[_0x865c('0xc2')](_0x59bccd[_0x865c('0x153')](_0x15534d[_0x865c('0x177')],_0x15534d['dialTimezone'],_0x15534d['name'],_0x15534d))['then'](_0x59bccd[_0x865c('0x155')](_0x15534d[_0x865c('0x4c')],_0x15534d[_0x865c('0x178')],_0x15534d[_0x865c('0x4a')],_0x15534d))[_0x865c('0xc2')](_0x59bccd[_0x865c('0x169')](_0x15534d))[_0x865c('0xba')](loggerCatchQueueSummary(_0x865c('0x179'),_0x15534d));}else{notSendMessagesQueue(_0x15534d);}}else{freeVariablesPredictive(_0x15534d);}};Dialer[_0x865c('0x1e')][_0x865c('0x38')]=_[_0x865c('0x17a')](function(){var _0x24d33f=_[_0x865c('0x17b')](this['voiceQueues'],function(_0x5a6840){return _0x5a6840['dialPreviewRecallmeReminder'];});var _0x4c4f28=_[_0x865c('0x17b')](this['agents'],function(_0x31ace3){return _0x31ace3[_0x865c('0x17c')]&&_0x31ace3[_0x865c('0xe4')]==='reachable';});if(_0x24d33f['length']>0x0&&_0x4c4f28['length']>0x0){return Promise[_0x865c('0xc1')]()['then'](cmHopper[_0x865c('0x172')](_[_0x865c('0x17d')](_0x24d33f,'id'),previewRecallmeReminderInterval,_['map'](_0x4c4f28,'id')))['then'](function(_0x31ea7c){for(var _0x26c8e3=0x0;_0x26c8e3<_0x31ea7c[_0x865c('0xa1')];_0x26c8e3++){var _0x167f38=_0x31ea7c[_0x26c8e3]['Agent'][_0x865c('0x4a')];if(_0x167f38)io['to'](util['format'](_0x865c('0x17e'),_0x167f38))[_0x865c('0x57')](_0x865c('0x174'),{'hopper':_0x31ea7c[_0x26c8e3]});}})['catch'](function(_0x13318e){logger[_0x865c('0x9f')](_0x865c('0x171'),_0x13318e);});}},0x3c*0x3e8,{'leading':!![]});Dialer[_0x865c('0x1e')]['syncCampaigns']=function(){var _0x32b6b9=this;var _0x5c0087;for(var _0x37a848 in this['campaigns']){if(typeof this['campaigns'][_0x37a848]!==_0x865c('0xb5')){_0x5c0087=this[_0x865c('0x23')][_0x37a848];if(isCampaignIvr(_0x5c0087[_0x865c('0x58')])&&isActive(_0x5c0087[_0x865c('0x83')])){_0x5c0087[_0x865c('0xa9')]=!![];Promise[_0x865c('0xc1')]()[_0x865c('0xc2')](checkIsActive(_0x5c0087,_0x5c0087[_0x865c('0x83')]))[_0x865c('0xc2')](checkInterval(_0x5c0087))[_0x865c('0xc2')](_0x32b6b9['checkIsTrunkReachable'](_0x5c0087))['then'](_0x32b6b9[_0x865c('0x153')](_0x5c0087['dialGlobalInterval'],_0x5c0087[_0x865c('0x178')],_0x5c0087[_0x865c('0x4a')],_0x5c0087))[_0x865c('0xc2')](_0x32b6b9[_0x865c('0x155')](_0x5c0087[_0x865c('0x4c')],_0x5c0087[_0x865c('0x178')],_0x5c0087['name'],_0x5c0087))[_0x865c('0xc2')](_0x32b6b9[_0x865c('0x175')](_0x5c0087))['catch'](loggerCatchQueueSummary(_0x865c('0x17f'),_0x5c0087));}else{notSendMessagesCampaign(_0x5c0087);}}}};function getCallerIdRandom(_0x942466,_0x3fc83f){var _0x5badbc;var _0xc24ae0;var _0x41dd85;if(_0x3fc83f<=0x0){_0x3fc83f=0x1;}_0x5badbc=new RegExp(_0x865c('0x180')+_0x3fc83f+'}$');_0xc24ae0=Math[_0x865c('0x181')](0xa,_0x3fc83f-0x1);_0x41dd85=Math[_0x865c('0x181')](0xa,_0x3fc83f)-0x1;return util[_0x865c('0x85')]('%s',_[_0x865c('0x182')](_0x942466,_0x5badbc,_[_0x865c('0x183')](_0xc24ae0,_0x41dd85)));}function extractCalleridName(_0x550eaa){var _0x2df3a9=_0x550eaa[_0x865c('0x184')](/"(.*?)"/);return _0x2df3a9?_0x2df3a9[0x1]:_0x550eaa;}Dialer['prototype'][_0x865c('0x185')]=function(_0x27140b,_0x3a1ec6){var _0x5f58e1=this;var _0xb1f36a=uuid['v4']();this[_0x865c('0x28')][_0xb1f36a]=new Action(_0x27140b,_0x3a1ec6,_0xb1f36a);return new Promise(function(_0x36cdf2,_0x20c24d){if(_[_0x865c('0x45')](_0x27140b)&&typeof _0x27140b!=='object'){return _0x20c24d(msgResponse(_0x865c('0x186'),_0x865c('0x156'),_0x865c('0x187')));}if(_['isUndefined'](_0x3a1ec6[_0x865c('0x188')])||_0x3a1ec6['phone']===null){return _0x20c24d(msgResponse(_0x865c('0x186'),'Failure',_0x865c('0x189')));}var _0x2ac555={'XMD-CALLERID':_0x5f58e1['actions'][_0xb1f36a]['getCaller'](),'XMD-AGI':_0x27140b[_0x865c('0x112')]?util['format']('\x22agi://%s/square,%s\x22',ipAgi,_0x27140b[_0x865c('0x112')]):_0x865c('0x18a'),'XMD-AGIAFTER':_0x27140b[_0x865c('0x126')]?util[_0x865c('0x85')]('\x22agi://%s/square,%s\x22',ipAgi,_0x27140b['dialQueueProject2']):'NONE','XMD-QUEUE':_0x27140b[_0x865c('0x58')]===_0x865c('0x59')?util[_0x865c('0x85')](_0x865c('0x18b'),_0x27140b[_0x865c('0x4a')],_0x27140b['dialQueueOptions']||'',_0x27140b['dialAgiAfterHangupAgent']?'c':'',_0x27140b['dialQueueTimeout']||0x3):_0x865c('0x18a'),'XMD-CONTACTID':_0x3a1ec6['ContactId'],'XMD-CDRTYPE':_0x865c('0x18c'),'CALLERID(all)':_0x5f58e1['actions'][_0xb1f36a]['getCaller'](),'XMD-AMD':_0x27140b[_0x865c('0xf2')]?_0x865c('0x18d'):'NONE','XMD-DESTINATION':_0x865c('0x18e')};if(_0x27140b['dialAMDActive']){_0x2ac555['XMD-AMDINITIALSILENCE']=_0x27140b['dialAMDInitialSilence']||0x9c4;_0x2ac555[_0x865c('0x18f')]=_0x27140b[_0x865c('0x190')]||0x5dc;_0x2ac555[_0x865c('0x191')]=_0x27140b[_0x865c('0x192')]||0x320;_0x2ac555[_0x865c('0x193')]=_0x27140b['dialAMDTotalAnalysisTime']||0x1388;_0x2ac555['XMD-AMDMINWORDLENGTH']=_0x27140b['dialAMDMinWordLength']||0x64;_0x2ac555[_0x865c('0x194')]=_0x27140b[_0x865c('0x195')]||0x32;_0x2ac555[_0x865c('0x196')]=_0x27140b[_0x865c('0x197')]||0x3;_0x2ac555['XMD-AMDSILENCETHRESHOLD']=_0x27140b[_0x865c('0x198')]||0x100;_0x2ac555['XMD-AMDMAXIMUMWORDLENGTH']=_0x27140b[_0x865c('0x199')]||0x1388;}if(_0x27140b[_0x865c('0x58')]===_0x865c('0x59')){_0x2ac555[_0x865c('0x19a')]=_0x3a1ec6['VoiceQueueId'];}else{_0x2ac555[_0x865c('0x19b')]=_0x3a1ec6[_0x865c('0xe0')];}for(var _0x2822da in _0x3a1ec6[_0x865c('0x19c')]){if(typeof _0x3a1ec6[_0x865c('0x19c')][_0x2822da]!==_0x865c('0xb5')){if(isNotNull(_0x3a1ec6[_0x865c('0x19c')][_0x2822da])&&_0x2822da!=='id'&&_0x2822da!=='tags'&&_0x2822da!==_0x865c('0x19d')&&_0x2822da!==_0x865c('0x19e')){_0x2ac555[util[_0x865c('0x85')]('%s%s',_0x865c('0x19f'),_['toUpper'](_0x2822da))]=_0x3a1ec6[_0x865c('0x19c')][_0x2822da];}}}var _0x1da84c=_0x5f58e1[_0x865c('0xe2')](_0x27140b[_0x865c('0x82')])?getCallerId(_0x27140b['Trunk'][_0x865c('0x1a0')],_0x27140b[_0x865c('0x65')],_0x27140b[_0x865c('0x1a1')]>0x0?getCallerIdRandom(_0x27140b[_0x865c('0x1a2')],_0x27140b[_0x865c('0x1a1')]):_0x27140b[_0x865c('0x1a2')]):getCallerId(_[_0x865c('0xb8')](_0x27140b[_0x865c('0x1a3')])?_0x27140b[_0x865c('0x82')][_0x865c('0x1a0')]:_0x27140b[_0x865c('0x1a3')]['callerid'],_0x27140b['dialOriginateCallerIdName'],_0x27140b['dialRandomLastDigitCallerIdNumber']>0x0?getCallerIdRandom(_0x27140b[_0x865c('0x1a2')],_0x27140b['dialRandomLastDigitCallerIdNumber']):_0x27140b[_0x865c('0x1a2')]);if(_0x1da84c){_0x2ac555[_0x865c('0x1a4')]=_0x5f58e1[_0x865c('0x28')][_0xb1f36a][_0x865c('0x1a5')]=extractCalleridName(_0x1da84c);_0x2ac555[_0x865c('0x1a6')]=_0x3a1ec6['phone'];}_0x27140b[_0x865c('0x1a7')]=_0x2ac555;return ami[_0x865c('0x15c')]({'actionid':_0xb1f36a,'action':_0x865c('0x186'),'channel':_0x5f58e1[_0x865c('0xe2')](_0x27140b['Trunk'])?util[_0x865c('0x85')](_0x865c('0x1a8'),_0x27140b[_0x865c('0x82')][_0x865c('0x4a')],isNotNull(_0x27140b['dialPrefix'])?_0x27140b[_0x865c('0x67')][_0x865c('0x1a9')]()||'':'',_0x27140b['dialCutDigit']>0x0?_0x3a1ec6[_0x865c('0x188')][_0x865c('0x1aa')](_0x27140b[_0x865c('0x1ab')]):_0x3a1ec6['phone']):util[_0x865c('0x85')](_0x865c('0x1a8'),_['isNil'](_0x27140b['TrunkBackup'])?_0x27140b[_0x865c('0x82')]['name']:_0x27140b['TrunkBackup'][_0x865c('0x4a')],isNotNull(_0x27140b[_0x865c('0x67')])?_0x27140b['dialPrefix'][_0x865c('0x1a9')]()||'':'',_0x27140b[_0x865c('0x1ab')]>0x0?_0x3a1ec6[_0x865c('0x188')]['substring'](_0x27140b['dialCutDigit']):_0x3a1ec6['phone']),'callerid':_0x1da84c,'Exten':'xcally-motion-dialer','Context':_0x865c('0x1ac'),'Priority':'1','variable':_0x2ac555,'timeout':(_0x27140b['dialOriginateTimeout']||0x1e)*0x3e8,'async':!![],'channelid':_0xb1f36a})[_0x865c('0xc2')](function(_0x4a6f8a){return _0x36cdf2(_0x4a6f8a);})['catch'](function(_0x4a334f){_0x27140b[_0x865c('0x6f')]+=0x1;var _0x43b81b=new History(_0x5f58e1[_0x865c('0x28')][_0xb1f36a]);logger[_0x865c('0x9f')](util[_0x865c('0x85')](_0x865c('0x1ad'),JSON[_0x865c('0x53')](_0x4a334f)));_0x43b81b['state']=0xe;_0x43b81b[_0x865c('0xec')]=_0x865c('0x1ae');_0x43b81b['starttime']=moment()[_0x865c('0x85')](_0x865c('0x106'));_0x43b81b[_0x865c('0xb1')]=_0x43b81b[_0x865c('0x12e')];_0x5f58e1['createHistory'](_0x43b81b)['catch'](loggerCatch(_0x865c('0x1af')));_0x5f58e1[_0x865c('0xe6')](_0x43b81b)[_0x865c('0xba')](loggerCatch('[originate][error]'))[_0x865c('0x20')](function(){delete _0x5f58e1[_0x865c('0x28')][_0xb1f36a];return _0x20c24d(msgResponse(_0x865c('0x186'),_0x865c('0x52'),_0x865c('0x1b0')));});});});};Dialer['prototype'][_0x865c('0x33')]=function(_0x334c9e){var _0x1dbf2f=this[_0x865c('0x28')][_0x334c9e[_0x865c('0x138')]];if(_0x1dbf2f){delete this[_0x865c('0x28')][_0x334c9e['actionid']];_0x1dbf2f[_0x865c('0x121')]=moment()[_0x865c('0x85')](_0x865c('0x106'));var _0x3cddc3=_0x1dbf2f[_0x865c('0x58')]===_0x865c('0x86')?this[_0x865c('0x23')][_0x1dbf2f['queue']]:this['voiceQueues'][_0x1dbf2f[_0x865c('0x1b1')]()];if(!this[_0x865c('0x1b2')](_0x334c9e[_0x865c('0x1b3')])){this[_0x865c('0xbc')](_0x3cddc3);return this[_0x865c('0x1b4')](_0x1dbf2f,_0x3cddc3,_0x334c9e)[_0x865c('0xba')](loggerCatch(_0x865c('0x1b5')));}this[_0x865c('0x2a')][_0x334c9e[_0x865c('0xe7')]]=_0x1dbf2f;}};Dialer[_0x865c('0x1e')][_0x865c('0x1b6')]=function(_0x14e714,_0x6a0044,_0x48d3ff){var _0x56a34e=new History(_0x6a0044);if(_0x56a34e[_0x865c('0x10f')]+_0x56a34e[_0x865c('0xf9')]+_0x56a34e[_0x865c('0xfa')]+_0x56a34e[_0x865c('0xfb')]+_0x56a34e[_0x865c('0x110')]+_0x56a34e[_0x865c('0xfc')]+_0x56a34e[_0x865c('0xf6')]+_0x56a34e['countagentrejectretry']>=_0x48d3ff['dialGlobalMaxRetry']-0x1){return!![];}switch(_0x14e714){case 0x3:if(_0x56a34e[_0x865c('0xfa')]>=_0x48d3ff['dialNoAnswerMaxRetry']-0x1){return!![];}this[_0x865c('0xcd')]({'active':![],'countnoanswerretry':_0x56a34e[_0x865c('0xfa')]+=0x1,'scheduledat':moment()[_0x865c('0x12c')](_0x48d3ff[_0x865c('0x1b7')],'minutes')['format'](_0x865c('0x106')),'ContactId':_0x56a34e[_0x865c('0x107')],'ListId':_0x56a34e[_0x865c('0x108')],'VoiceQueueId':_0x56a34e[_0x865c('0xdf')]||undefined,'CampaignId':_0x56a34e[_0x865c('0xe0')]||undefined})[_0x865c('0xba')](loggerCatch(_0x865c('0x1b8')));break;case 0x5:if(_0x56a34e[_0x865c('0x10f')]>=_0x48d3ff[_0x865c('0x1b9')]-0x1){return!![];}this[_0x865c('0xcd')]({'active':![],'countbusyretry':_0x56a34e[_0x865c('0x10f')]+=0x1,'scheduledat':moment()[_0x865c('0x12c')](_0x48d3ff[_0x865c('0x1ba')],_0x865c('0x105'))[_0x865c('0x85')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x56a34e[_0x865c('0x107')],'ListId':_0x56a34e[_0x865c('0x108')],'VoiceQueueId':_0x56a34e[_0x865c('0xdf')]||undefined,'CampaignId':_0x56a34e['CampaignId']||undefined})[_0x865c('0xba')](loggerCatch(_0x865c('0x1bb')));break;case 0x8:if(_0x56a34e[_0x865c('0xf9')]>=_0x48d3ff[_0x865c('0x1bc')]-0x1){return!![];}this[_0x865c('0xcd')]({'active':![],'countcongestionretry':_0x56a34e[_0x865c('0xf9')]+=0x1,'scheduledat':moment()['add'](_0x48d3ff[_0x865c('0x1bd')],_0x865c('0x105'))[_0x865c('0x85')](_0x865c('0x106')),'ContactId':_0x56a34e['ContactId'],'ListId':_0x56a34e[_0x865c('0x108')],'VoiceQueueId':_0x56a34e[_0x865c('0xdf')]||undefined,'CampaignId':_0x56a34e[_0x865c('0xe0')]||undefined})[_0x865c('0xba')](loggerCatch(_0x865c('0x1be')));break;case 0x0:if(_0x56a34e[_0x865c('0xfb')]>=_0x48d3ff[_0x865c('0x1bf')]-0x1){return!![];}else{this[_0x865c('0xcd')]({'active':![],'countnosuchnumberretry':_0x56a34e[_0x865c('0xfb')]+=0x1,'scheduledat':moment()[_0x865c('0x12c')](_0x48d3ff[_0x865c('0x1c0')],_0x865c('0x105'))[_0x865c('0x85')](_0x865c('0x106')),'ContactId':_0x56a34e[_0x865c('0x107')],'ListId':_0x56a34e[_0x865c('0x108')],'VoiceQueueId':_0x56a34e['VoiceQueueId']||undefined,'CampaignId':_0x56a34e[_0x865c('0xe0')]||undefined})['catch'](loggerCatch(_0x865c('0x1c1')));}break;case 0xa:if(_0x56a34e[_0x865c('0x110')]>=_0x48d3ff[_0x865c('0x12b')]-0x1){return!![];}this[_0x865c('0xcd')]({'active':![],'countdropretry':_0x56a34e['countdropretry']+=0x1,'scheduledat':moment()[_0x865c('0x12c')](_0x48d3ff[_0x865c('0x127')],_0x865c('0x105'))[_0x865c('0x85')](_0x865c('0x106')),'ContactId':_0x56a34e[_0x865c('0x107')],'ListId':_0x56a34e['ListId'],'VoiceQueueId':_0x56a34e[_0x865c('0xdf')]||undefined,'CampaignId':_0x56a34e[_0x865c('0xe0')]||undefined})[_0x865c('0xba')](loggerCatch(_0x865c('0x12d')));break;case 0xb:if(_0x56a34e['countabandonedretry']>=_0x48d3ff['dialAbandonedMaxRetry']-0x1){return!![];}this[_0x865c('0xcd')]({'active':![],'countabandonedretry':_0x56a34e[_0x865c('0xfc')]+=0x1,'scheduledat':moment()[_0x865c('0x12c')](_0x48d3ff[_0x865c('0x1c2')],_0x865c('0x105'))[_0x865c('0x85')](_0x865c('0x106')),'ContactId':_0x56a34e[_0x865c('0x107')],'ListId':_0x56a34e['ListId'],'VoiceQueueId':_0x56a34e[_0x865c('0xdf')]||undefined,'CampaignId':_0x56a34e['CampaignId']||undefined})[_0x865c('0xba')](loggerCatch('[rescheduleContact][Abandoned]'));break;case 0x13:if(_0x56a34e[_0x865c('0xf6')]>=_0x48d3ff[_0x865c('0x101')]-0x1){return!![];}this[_0x865c('0xcd')]({'active':![],'countmachineretry':_0x56a34e[_0x865c('0xf6')]+=0x1,'scheduledat':moment()[_0x865c('0x12c')](_0x48d3ff['dialMachineRetryFrequency'],_0x865c('0x105'))[_0x865c('0x85')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x56a34e['ContactId'],'ListId':_0x56a34e[_0x865c('0x108')],'VoiceQueueId':_0x56a34e[_0x865c('0xdf')]||undefined,'CampaignId':_0x56a34e[_0x865c('0xe0')]||undefined})[_0x865c('0xba')](loggerCatch(_0x865c('0x109')));break;case 0x14:if(_0x56a34e[_0x865c('0xfd')]>=_0x48d3ff[_0x865c('0x1c3')]-0x1){return!![];}this[_0x865c('0xcd')]({'active':![],'countagentrejectretry':_0x56a34e['countagentrejectretry']+=0x1,'scheduledat':moment()[_0x865c('0x12c')](_0x48d3ff[_0x865c('0x1c4')],_0x865c('0x105'))[_0x865c('0x85')](_0x865c('0x106')),'ContactId':_0x56a34e[_0x865c('0x107')],'ListId':_0x56a34e[_0x865c('0x108')],'VoiceQueueId':_0x56a34e['VoiceQueueId']||undefined,'CampaignId':_0x56a34e['CampaignId']||undefined})[_0x865c('0xba')](loggerCatch('[rescheduleContact][AgentReject]'));break;default:return!![];}};Dialer[_0x865c('0x1e')]['callProgressDetecting']=function(_0x59d710,_0x3b7be5,_0x136ea3){var _0x19c58e=this;var _0x2ba0df=new History(_0x59d710);var _0x5416ab=![];var _0x5ec421;var _0x31e3f4;return new Promise(function(_0x4a2a99,_0x5b069b){if(_[_0x865c('0x45')](_0x3b7be5)&&typeof _0x3b7be5!==_0x865c('0x1c5')){return _0x5b069b(msgResponse('[callProgressDetecting]',_0x865c('0x156'),_0x865c('0x1c6')));}if(_['isUndefined'](_0x136ea3)&&typeof _0x136ea3!==_0x865c('0x1c5')){return _0x5b069b(msgResponse('[callProgressDetecting]',_0x865c('0x156'),_0x865c('0x1c7')));}_0x19c58e['verifyAdditionalPhones'](_0x2ba0df,_0x136ea3[_0x865c('0x119')],_0x3b7be5)[_0x865c('0xc2')](function(_0x3c7462){if(_0x3c7462[_0x865c('0x12a')]==0x1)_0x5416ab=!![];switch(_0x136ea3[_0x865c('0x119')]){case'0':_0x3b7be5[_0x865c('0x6e')]+=0x1;_0x2ba0df[_0x865c('0xb0')]=0x0;_0x2ba0df['statedesc']=_0x865c('0x1c8');_0x2ba0df[_0x865c('0xfb')]+=0x1;_0x2ba0df[_0x865c('0x10e')]+=0x1;ami['emit'](_0x865c('0x1c9'),ut[_0x865c('0xf7')](_0x59d710,_0x865c('0x1ca')));_0x5ec421=_0x3b7be5[_0x865c('0x1c0')];_0x31e3f4=_0x3b7be5[_0x865c('0x128')];_0x19c58e['createHistory'](_0x2ba0df)['catch'](loggerCatch(_0x865c('0xf8')));if(_0x19c58e[_0x865c('0x1b6')](0x0,_0x59d710,_0x3b7be5)&&!_0x5416ab){if(_0x2ba0df[_0x865c('0xfb')]>=_0x3b7be5[_0x865c('0x1bf')]){_0x19c58e[_0x865c('0x102')](_0x2ba0df,_0x4a2a99,_0x5b069b,'reason\x200\x20no\x20such\x20number....');}else{_0x19c58e['stateGlobal'](_0x2ba0df,_0x4a2a99,_0x5b069b,_0x865c('0x1cb'));}}break;case'3':_0x3b7be5['outboundNoAnswerCallsDay']+=0x1;_0x2ba0df[_0x865c('0xb0')]=0x3;_0x2ba0df[_0x865c('0xec')]='NoAnswer';_0x2ba0df[_0x865c('0xfa')]+=0x1;_0x2ba0df[_0x865c('0x10e')]+=0x1;var _0x4fa6a6=ut[_0x865c('0x1cc')](_0x59d710,_0x3b7be5);ami[_0x865c('0x57')](_0x865c('0x1cd'),_0x4fa6a6);_0x5ec421=_0x3b7be5[_0x865c('0x1b7')];_0x31e3f4=_0x3b7be5[_0x865c('0x128')];_0x19c58e[_0x865c('0xd6')](_0x2ba0df)[_0x865c('0xba')](loggerCatch('[syncAgentComplete][createHistory][3]'));if(_0x19c58e[_0x865c('0x1b6')](0x3,_0x59d710,_0x3b7be5)&&!_0x5416ab){if(_0x2ba0df['countnoanswerretry']>=_0x3b7be5[_0x865c('0x1ce')]){_0x19c58e[_0x865c('0x102')](_0x2ba0df,_0x4a2a99,_0x5b069b,_0x865c('0x1cf'));}else{_0x19c58e[_0x865c('0xff')](_0x2ba0df,_0x4a2a99,_0x5b069b,'reason\x203\x20ringing\x20no\x20answer');}}break;case'5':_0x3b7be5[_0x865c('0x1d0')]+=0x1;_0x2ba0df[_0x865c('0xb0')]=0x5;_0x2ba0df[_0x865c('0xec')]='Busy';_0x2ba0df['countbusyretry']+=0x1;_0x2ba0df[_0x865c('0x10e')]+=0x1;ami[_0x865c('0x57')]('custom:agentbusy',ut[_0x865c('0xf7')](_0x59d710,_0x865c('0x1d1')));_0x5ec421=_0x3b7be5[_0x865c('0x1ba')];_0x31e3f4=_0x3b7be5[_0x865c('0x128')];_0x19c58e[_0x865c('0xd6')](_0x2ba0df)[_0x865c('0xba')](loggerCatch(_0x865c('0x1d2')));if(_0x19c58e[_0x865c('0x1b6')](0x5,_0x59d710,_0x3b7be5)&&!_0x5416ab){if(_0x2ba0df[_0x865c('0x10f')]>=_0x3b7be5[_0x865c('0x1b9')]){_0x19c58e['createStateFinal'](_0x2ba0df,_0x4a2a99,_0x5b069b,_0x865c('0x1d3'));}else{_0x19c58e[_0x865c('0xff')](_0x2ba0df,_0x4a2a99,_0x5b069b,_0x865c('0x1d3'));}}break;case'8':_0x3b7be5[_0x865c('0x6a')]+=0x1;_0x2ba0df[_0x865c('0xb0')]=0x8;_0x2ba0df[_0x865c('0xec')]=_0x865c('0x1d4');_0x2ba0df[_0x865c('0xf9')]+=0x1;_0x2ba0df['countglobal']+=0x1;_0x5ec421=_0x3b7be5[_0x865c('0x1bd')];_0x31e3f4=_0x3b7be5[_0x865c('0x128')];ami[_0x865c('0x57')](_0x865c('0x1d5'),ut[_0x865c('0xf7')](_0x59d710,_0x865c('0x1d6')));_0x19c58e[_0x865c('0xd6')](_0x2ba0df)[_0x865c('0xba')](loggerCatch(_0x865c('0x1d7')));if(_0x19c58e['checkRetriveMax'](0x8,_0x59d710,_0x3b7be5)&&!_0x5416ab){if(_0x2ba0df[_0x865c('0xf9')]>=_0x3b7be5[_0x865c('0x1bc')]){_0x19c58e[_0x865c('0x102')](_0x2ba0df,_0x4a2a99,_0x5b069b,_0x865c('0x1d8'));}else{_0x19c58e['stateGlobal'](_0x2ba0df,_0x4a2a99,_0x5b069b,_0x865c('0x1d8'));}}break;case'11':_0x3b7be5[_0x865c('0x1d9')]+=0x1;_0x2ba0df[_0x865c('0xb0')]=0xb;_0x2ba0df[_0x865c('0xec')]='Abandoned';_0x2ba0df[_0x865c('0xfc')]+=0x1;_0x2ba0df['countglobal']+=0x1;_0x5ec421=_0x3b7be5[_0x865c('0x1c2')];_0x31e3f4=_0x3b7be5['callAdditionalPhoneAfterMin'];_0x19c58e[_0x865c('0xd6')](_0x2ba0df)[_0x865c('0xba')](loggerCatch(_0x865c('0x137')));if(_0x19c58e[_0x865c('0x1b6')](0xb,_0x59d710,_0x3b7be5)&&!_0x5416ab){if(_0x2ba0df[_0x865c('0xfc')]>=_0x3b7be5['dialAbandonedMaxRetry']){_0x19c58e[_0x865c('0x102')](_0x2ba0df,_0x4a2a99,_0x5b069b,'reason\x2011\x20abandoned');}else{_0x19c58e[_0x865c('0xff')](_0x2ba0df,_0x4a2a99,_0x5b069b,_0x865c('0x1da'));}}break;case'20':_0x3b7be5['outboundRejectCallsDay']+=0x1;_0x2ba0df['state']=0x14;_0x2ba0df['statedesc']=_0x865c('0x1db');_0x2ba0df[_0x865c('0xfd')]+=0x1;_0x2ba0df[_0x865c('0x10e')]+=0x1;_0x5ec421=_0x3b7be5['dialAgentRejectRetryFrequency'];_0x31e3f4=_0x3b7be5[_0x865c('0x128')];ami[_0x865c('0x57')](_0x865c('0x1dc'),ut[_0x865c('0xf7')](_0x59d710,_0x865c('0x1dd')));_0x19c58e['createHistory'](_0x2ba0df)[_0x865c('0xba')](loggerCatch('[syncAgentComplete][createHistory][20]'));if(_0x19c58e[_0x865c('0x1b6')](0x14,_0x59d710,_0x3b7be5)&&!_0x5416ab){if(_0x2ba0df[_0x865c('0xfd')]>=_0x3b7be5[_0x865c('0x1c3')]){_0x19c58e[_0x865c('0x102')](_0x2ba0df,_0x4a2a99,_0x5b069b,_0x865c('0x1de'));}else{_0x19c58e[_0x865c('0xff')](_0x2ba0df,_0x4a2a99,_0x5b069b,'reason\x2020\x20agentreject');}}break;default:_0x3b7be5[_0x865c('0x72')]+=0x1;_0x2ba0df[_0x865c('0xb0')]=0xc;_0x2ba0df[_0x865c('0xec')]=_0x136ea3[_0x865c('0x119')];_0x5ec421=_0x3b7be5[_0x865c('0x1c4')];_0x31e3f4=_0x3b7be5[_0x865c('0x128')];_0x19c58e['createHistory'](_0x2ba0df)['catch'](loggerCatch(_0x865c('0x1df')));if(_0x19c58e[_0x865c('0x1b6')](_0x136ea3[_0x865c('0x119')],_0x59d710,_0x3b7be5)&&!_0x5416ab){if(_0x2ba0df['countbusyretry']+_0x2ba0df[_0x865c('0xf9')]+_0x2ba0df[_0x865c('0xfa')]+_0x2ba0df[_0x865c('0xfb')]+_0x2ba0df[_0x865c('0x110')]+_0x2ba0df['countabandonedretry']+_0x2ba0df[_0x865c('0xf6')]+_0x2ba0df[_0x865c('0xfd')]>=_0x3b7be5['dialGlobalMaxRetry']){_0x19c58e[_0x865c('0xff')](_0x2ba0df,_0x4a2a99,_0x5b069b,_0x136ea3[_0x865c('0x119')]);}else{_0x19c58e[_0x865c('0x102')](_0x2ba0df,_0x4a2a99,_0x5b069b,_0x136ea3[_0x865c('0x119')]);}}}})[_0x865c('0xc2')](function(){if(_0x5416ab){_0x19c58e['swapAdditionalPhones'](_0x2ba0df,_0x5ec421,_0x31e3f4)[_0x865c('0xc2')](function(){return _0x4a2a99(0x1);});}});});};Dialer[_0x865c('0x1e')][_0x865c('0xff')]=function(_0x2231ff,_0x1b9e20,_0x43f308,_0x3b4368){var _0x30c0fb=new Final(_0x2231ff);_0x30c0fb[_0x865c('0xb0')]=0xf;_0x30c0fb[_0x865c('0xec')]=_0x865c('0x1e0');this['createStateFinal'](_0x30c0fb,_0x1b9e20,_0x43f308,_0x3b4368);};Dialer[_0x865c('0x1e')][_0x865c('0x102')]=function(_0x7b8eb0,_0xeb5355,_0x2b3dd1,_0x2b7883){this[_0x865c('0xe6')](_0x7b8eb0)[_0x865c('0xc2')](function(){return _0xeb5355(msgResponse(_0x865c('0x1e1'),_0x865c('0x1e2'),_0x2b7883));})[_0x865c('0xba')](function(){return _0x2b3dd1(msgResponse('[moveContactManagedDialer][0]',_0x865c('0x156'),_0x865c('0x1e3')));});};Dialer['prototype']['predictive']=function(_0x36e9a3){var _0x6b77e6=_0x36e9a3['dialPredictiveOptimizationPercentage']/0x64;var _0x51309a=_0x36e9a3[_0x865c('0x123')]/(_0x36e9a3[_0x865c('0x123')]+_0x36e9a3[_0x865c('0x69')]);var _0x5402ae=Math[_0x865c('0x1e4')](_0x36e9a3[_0x865c('0x1e5')]*(_0x36e9a3[_0x865c('0x1e6')]/0x64));var _0xbfc1f4=Math[_0x865c('0x1e4')](_0x36e9a3['predictiveIntervalAvailable']*(_0x36e9a3[_0x865c('0x1e7')]/0x64));var _0x476d4d=_0x36e9a3[_0x865c('0x5b')]+_0x36e9a3[_0x865c('0x60')];var _0x2848cf=Math[_0x865c('0x1e8')](_0x36e9a3[_0x865c('0x7e')]*_0x36e9a3[_0x865c('0x80')]*_0x36e9a3['predictiveIntervalHitRate']*_0x36e9a3[_0x865c('0x7a')]);if(_[_0x865c('0x45')](_0x36e9a3[_0x865c('0x2c')])){if(!_[_0x865c('0x45')](_0x36e9a3[_0x865c('0x1e9')])){_0x36e9a3[_0x865c('0x1e9')]=undefined;loggerPredictive['error'](_0x865c('0x1ea'),_0x865c('0x1eb'));}if(!_['isUndefined'](_0x36e9a3[_0x865c('0x9a')])){loggerPredictive['error'](_0x865c('0x1ea'),'check\x20handlePredictive\x20is\x20not\x20undefine');clearInterval(_0x36e9a3[_0x865c('0x9a')]);_0x36e9a3['handlePredictive']=undefined;}_0x36e9a3['startProgressive']=moment()[_0x865c('0x85')]('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive[_0x865c('0x8a')](_0x36e9a3[_0x865c('0x4a')],_0x865c('0x1ec'),_0x36e9a3['startProgressive']);this[_0x865c('0x16b')](_0x36e9a3,0x1);}else if(ifInterval(_0x36e9a3['dialPredictiveInterval'],_0x36e9a3['startProgressive'])){this[_0x865c('0x16b')](_0x36e9a3,0x1);loggerPredictiveCalls[_0x865c('0x8a')]('[startMethodPredictive][StartProgressive][Loop]',_0x36e9a3[_0x865c('0x2c')],_0x36e9a3[_0x865c('0x4a')]);_0x36e9a3[_0x865c('0x7e')]=0x0;_0x36e9a3[_0x865c('0x78')]=0x0;}else if(_0x6b77e6<_0x51309a&&_0x36e9a3[_0x865c('0x1ed')]===_0x865c('0x1ee')){freeVariablesPredictive(_0x36e9a3);loggerPredictive[_0x865c('0x8a')](_0x865c('0x1ef'),_0x865c('0x1f0'),_0x51309a,_0x865c('0x2c'),_0x36e9a3[_0x865c('0x4a')]);}else if(_0x2848cf<_0x36e9a3['predictiveIntervalErlangCallsDroppedCalls']&&_0x36e9a3[_0x865c('0x1ed')]===_0x865c('0x1ee')){freeVariablesPredictive(_0x36e9a3);loggerPredictive['info'](_0x865c('0x1f1'),_0x865c('0x1f2'),_0x2848cf,_0x865c('0x1f3'),_0x36e9a3[_0x865c('0x78')],_0x865c('0x2c'),_0x36e9a3[_0x865c('0x4a')]);}else if(!ifInterval(_0x36e9a3[_0x865c('0x1f4')],_0x36e9a3['startProgressive'])&&_[_0x865c('0x45')](_0x36e9a3['startPredictive'])&&!_[_0x865c('0x45')](_0x36e9a3[_0x865c('0x2c')])){_0x36e9a3[_0x865c('0x1e9')]=moment()[_0x865c('0x85')]('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive[_0x865c('0x8a')](_0x36e9a3['name'],'started\x20in\x20predictive\x20at',_0x36e9a3[_0x865c('0x1e9')]);this[_0x865c('0xca')](_0x36e9a3['dialPredictiveInterval'])[_0x865c('0xc2')](this[_0x865c('0x1f5')](_0x36e9a3))[_0x865c('0xc2')](mergeDataErlangB(_0x36e9a3))[_0x865c('0xc2')](this[_0x865c('0x1f6')](_0x36e9a3))[_0x865c('0xba')](loggerCatchPredictive(_0x865c('0x1f7'),_0x36e9a3));}else if(!ifInterval(_0x36e9a3[_0x865c('0x1f4')],_0x36e9a3[_0x865c('0x1e9')])){_0x36e9a3['predictiveIntervalErlangCallsDroppedCalls']=0x0;_0x36e9a3[_0x865c('0x1e9')]=moment()[_0x865c('0x85')](_0x865c('0x106'));loggerPredictive[_0x865c('0x8a')](_0x36e9a3[_0x865c('0x4a')],_0x865c('0x1f8'),_0x36e9a3[_0x865c('0x1e9')]);clearInterval(_0x36e9a3['handlePredictive']);_0x36e9a3[_0x865c('0x9a')]=undefined;this[_0x865c('0xca')](_0x36e9a3[_0x865c('0x1f4')])[_0x865c('0xc2')](this[_0x865c('0x1f5')](_0x36e9a3))['then'](mergeDataErlangB(_0x36e9a3))[_0x865c('0xc2')](this['startMethodPredictive'](_0x36e9a3))['catch'](loggerCatchPredictive(_0x865c('0x1f9'),_0x36e9a3));}else if(_0x36e9a3[_0x865c('0x1e5')]&&_0x476d4d<_0x36e9a3[_0x865c('0x1e5')]-_0xbfc1f4){freeVariablesPredictive(_0x36e9a3);loggerPredictive[_0x865c('0x8a')](_0x36e9a3[_0x865c('0x4a')],'switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',_0x476d4d,_0x865c('0x1fa'),_0x36e9a3['predictiveIntervalAvailable'],'-',_0xbfc1f4,'=',_0x36e9a3['predictiveIntervalAvailable']-_0xbfc1f4,')');}else if(_0x36e9a3['predictiveIntervalAvailable']&&_0x476d4d>_0x36e9a3[_0x865c('0x1e5')]+_0x5402ae){freeVariablesPredictive(_0x36e9a3);loggerPredictive['info'](_0x36e9a3[_0x865c('0x4a')],_0x865c('0x1fb'),_0x476d4d,')\x20are\x20more\x20than\x20threshold\x20(',_0x36e9a3[_0x865c('0x1e5')],'+',_0x5402ae,'=',_0x36e9a3[_0x865c('0x1e5')]+_0x5402ae,')');}};Dialer[_0x865c('0x1e')]['getDataPredictive']=function(_0x39f6f1){var _0x18bc42=this;return function(_0x15caaf){return new Promise(function(_0x49759d,_0x29bb5a){_[_0x865c('0xdc')](_0x39f6f1,_0x15caaf[0x0]);if(checkGetDataPredictive(_0x15caaf[0x0])){var _0x1ff6ac=_0x39f6f1['predictiveIntervalAvailable']=_0x39f6f1[_0x865c('0x60')]+_0x39f6f1[_0x865c('0x5b')];var _0xee92fb=_0x39f6f1[_0x865c('0x1f4')]*0x3c;var _0x5e5fdd=_0x15caaf[0x0][_0x865c('0x75')]+_0x15caaf[0x0][_0x865c('0x74')];var _0x445798=(_0x15caaf[0x0]['predictiveIntervalAnsweredCalls']+_0x15caaf[0x0][_0x865c('0x76')]+_0x15caaf[0x0][_0x865c('0x8f')])/_0x15caaf[0x0]['predictiveIntervalTotalCalls'];_0x39f6f1[_0x865c('0x79')]=_0x445798>0x0?_0x445798:0x1;switch(_0x39f6f1[_0x865c('0x1ed')]){case _0x865c('0x1ee'):var _0x510168=_0x39f6f1['dialPredictiveOptimizationPercentage']/0x64;return _0x18bc42[_0x865c('0x1fc')](_0x1ff6ac,_0xee92fb,_0x5e5fdd,_0x445798,_0x510168)[_0x865c('0xc2')](function(_0x149ebc){return _0x49759d(_0x149ebc);});case _0x865c('0x1fd'):var _0x4b5d7c=_0x39f6f1[_0x865c('0x1fe')]/0x64;return _0x18bc42[_0x865c('0x1ff')](_0x1ff6ac,_0xee92fb,_0x5e5fdd,_0x445798,_0x4b5d7c)[_0x865c('0xc2')](function(_0x7002be){return _0x49759d(_0x7002be);});default:return _0x29bb5a(msgResponse(_0x865c('0x200'),_0x865c('0x156'),_0x865c('0x201')));}}else{return _0x29bb5a(msgResponse(_0x865c('0x200'),_0x865c('0x156'),'check\x20failure'));}});};};Dialer[_0x865c('0x1e')]['getDataPredictiveOld']=function(_0xe8a029){var _0xc4c1d4=this;return function(_0x450884){return new Promise(function(_0x423ee0,_0x303563){_[_0x865c('0xdc')](_0xe8a029,_0x450884[0x0]);if(checkGetDataPredictive(_0x450884[0x0])){loggerPredictive[_0x865c('0x8a')](JSON[_0x865c('0x53')](_0x450884[0x0]));if(_0xe8a029['dialPredictiveOptimization']===_0x865c('0x1ee')){return _0xc4c1d4[_0x865c('0xd4')](_0xe8a029['id'])['then'](function(_0x4481c7){var _0x107ec3=_0xe8a029[_0x865c('0x5c')]-_0x4481c7[0x0][_0x865c('0x202')];var _0x6402a0=_0xe8a029[_0x865c('0x1f4')]*0x3c;var _0x4716d6=_0x450884[0x0][_0x865c('0x75')]+_0x450884[0x0][_0x865c('0x74')];var _0x5aa213=(_0x450884[0x0][_0x865c('0x73')]+_0x450884[0x0][_0x865c('0x76')]+_0x450884[0x0][_0x865c('0x8f')])/_0x450884[0x0]['predictiveIntervalTotalCalls'];var _0x2b9880=_0xe8a029[_0x865c('0x1fe')]/0x64;_0xe8a029['predictiveIntervalPauses']=_0x4481c7[0x0]['outboundQueuePauses']||0x0;_0xe8a029[_0x865c('0x79')]=_0x5aa213>0x0?_0x5aa213:0x1;return _0xc4c1d4['abandonmentRate'](_0x107ec3,_0x6402a0,_0x4716d6,_0x5aa213,_0x2b9880);})[_0x865c('0xc2')](function(_0x229af1){return _0x423ee0(_0x229af1);})[_0x865c('0xba')](function(_0x19a33e){return _0x303563(msgResponse('[CatchErlangB]',_0x865c('0x156'),JSON[_0x865c('0x53')](_0x19a33e)));});}if(_0xe8a029[_0x865c('0x1ed')]===_0x865c('0x1fd')){return _0xc4c1d4[_0x865c('0xd4')](_0xe8a029['id'])[_0x865c('0xc2')](function(_0x2e2eca){var _0x18d083=_0xe8a029['loggedIn']-_0x2e2eca[0x0][_0x865c('0x202')];var _0x11c739=_0xe8a029[_0x865c('0x1f4')]*0x3c;var _0x43d69c=_0x450884[0x0][_0x865c('0x75')]+_0x450884[0x0][_0x865c('0x74')];var _0x360627=(_0x450884[0x0][_0x865c('0x73')]+_0x450884[0x0][_0x865c('0x76')]+_0x450884[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x450884[0x0][_0x865c('0x7c')];var _0x879a50=_0xe8a029[_0x865c('0x1fe')]/0x64;_0xe8a029['predictiveIntervalPauses']=_0x2e2eca[0x0]['outboundQueuePauses']||0x0;_0xe8a029['predictiveIntervalHitRate']=_0x360627>0x0?_0x360627:0x1;return _0xc4c1d4[_0x865c('0x1ff')](_0x18d083,_0x11c739,_0x43d69c,_0x360627,_0x879a50);})[_0x865c('0xc2')](function(_0x50bb31){return _0x423ee0(_0x50bb31);})[_0x865c('0xba')](function(_0x18878f){return _0x303563(msgResponse(_0x865c('0x203'),_0x865c('0x156'),JSON[_0x865c('0x53')](_0x18878f)));});}}else{return _0x303563(msgResponse('[getDataPredictive]','Failure',_0x865c('0x204')));}});};};Dialer['prototype'][_0x865c('0x1f6')]=function(_0xd5976b){var _0x3354c4=this;return function(){var _0x2e72a5=0x0;var _0x195719=Math['floor'](_0xd5976b[_0x865c('0x7f')]*0x3e8);if(_0x195719>0x0){_0x195719=_0x195719<0x64?0x64:_0x195719;loggerPredictive[_0x865c('0x8a')](_0xd5976b['name'],_0x865c('0x205'),_0x195719,_0x865c('0x54'));_0xd5976b[_0x865c('0x9a')]=setInterval(function(){_0x3354c4[_0x865c('0x9a')](_0xd5976b);loggerPredictiveCalls[_0x865c('0x8a')](_0x865c('0x206'),_0x2e72a5+=0x1);},_0x195719);}else{loggerPredictive[_0x865c('0x8a')](_0xd5976b[_0x865c('0x4a')],_0x865c('0x207'));}};};Dialer['prototype'][_0x865c('0x208')]=function(_0x265cec,_0x3be2ec){var _0x37b2e5=this;return function(_0x2cd387){if(_[_0x865c('0x50')](_0x2cd387)){if(_[_0x865c('0xb8')](_0x3be2ec[_0x865c('0xde')])||!_0x3be2ec['recallme']){if(_0x265cec['dialMethod']===_0x865c('0x7')){_0x265cec['queueStatusComplete']=_[_0x865c('0x45')](_0x265cec[_0x865c('0x13f')])?!![]:_0x265cec[_0x865c('0x13f')];var _0x3224e0=uuid['v4']();_0x37b2e5[_0x865c('0x28')][_0x3224e0]=new Action(_0x265cec,_0x3be2ec,_0x3224e0);loggerBooked[_0x865c('0x8a')](_0x865c('0x209'),_0x3224e0,_0x865c('0x20a'),JSON[_0x865c('0x53')](_0x265cec[_0x865c('0x13f')]),_0x865c('0x20b'),_0x265cec['name']);if(_0x265cec[_0x865c('0x13f')]){_0x265cec[_0x865c('0x13f')]=![];_0x37b2e5[_0x865c('0x13b')][_0x37b2e5[_0x865c('0x28')][_0x3224e0][_0x865c('0xbd')]]=[];ami[_0x865c('0x15c')]({'actionid':_0x3224e0,'action':_0x865c('0x20c'),'queue':_0x265cec[_0x865c('0x4a')]})[_0x865c('0xba')](function(){_0x37b2e5[_0x865c('0xbc')](_0x265cec);_0x37b2e5[_0x865c('0xcd')]({'active':![],'ContactId':_0x37b2e5[_0x865c('0x28')][_0x3224e0]['ContactId'],'ListId':_0x37b2e5[_0x865c('0x28')][_0x3224e0][_0x865c('0x108')],'VoiceQueueId':_0x37b2e5['actions'][_0x3224e0]['VoiceQueueId']||undefined,'CampaignId':_0x37b2e5[_0x865c('0x28')][_0x3224e0][_0x865c('0xe0')]||undefined})['catch'](loggerCatch(_0x865c('0x20d')));delete _0x37b2e5[_0x865c('0x28')][_0x3224e0];});}else{loggerBooked[_0x865c('0x8a')]('[booked][checkContactBlack][else]',JSON[_0x865c('0x53')](_0x265cec[_0x865c('0x13f')]),_0x865c('0x20b'),_0x265cec['name']);_0x37b2e5[_0x865c('0xbc')](_0x265cec);_0x37b2e5['rescheduleContact']({'active':![],'ContactId':_0x37b2e5['actions'][_0x3224e0][_0x865c('0x107')],'ListId':_0x37b2e5['actions'][_0x3224e0][_0x865c('0x108')],'VoiceQueueId':_0x37b2e5[_0x865c('0x28')][_0x3224e0][_0x865c('0xdf')]||undefined,'CampaignId':_0x37b2e5[_0x865c('0x28')][_0x3224e0][_0x865c('0xe0')]||undefined})[_0x865c('0xba')](loggerCatch(_0x865c('0x20d')));delete _0x37b2e5['actions'][_0x3224e0];}}else{return _0x37b2e5[_0x865c('0x185')](_0x265cec,_0x3be2ec);}}else{if(getDiff(_0x3be2ec['scheduledat'])<_0x265cec['dialRecallMeTimeout']*0x3c){if(_0x3be2ec[_0x865c('0x173')]&&!_0x3be2ec['Agent'][_0x865c('0x20e')]){_0x37b2e5[_0x865c('0x21')][_0x865c('0x149')](_0x3be2ec['id'])['finally'](function(){_0x37b2e5[_0x865c('0xbc')](_0x265cec);});}else{_0x37b2e5[_0x865c('0xce')]({'active':![]},_0x3be2ec['id'],0x1)['finally'](function(){_0x37b2e5[_0x865c('0xbc')](_0x265cec);});}}else{_0x265cec['outboundReCallsDay']+=0x1;_0x37b2e5[_0x865c('0xbc')](_0x265cec);if(_0x265cec['dialRecallInQueue']){_0x37b2e5[_0x865c('0xcd')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x3be2ec[_0x865c('0x107')],'ListId':_0x3be2ec[_0x865c('0x108')],'VoiceQueueId':_0x3be2ec[_0x865c('0xdf')]||undefined,'CampaignId':_0x3be2ec[_0x865c('0xe0')]||undefined})[_0x865c('0xba')](loggerCatch(_0x865c('0x20f')));_0x37b2e5[_0x865c('0xd6')](createObjHistory(_0x265cec,_0x3be2ec,_0x865c('0x210'),0x17,_0x865c('0x211')))[_0x865c('0xba')](loggerCatch('[Originate][HistoryDialRecallInQueue][historyCatch]'));}else{_0x37b2e5[_0x865c('0xdb')](createObjHistory(_0x265cec,_0x3be2ec,'RECALLFAILEDTIMEOUT',0x16,_0x865c('0x212')),_0x865c('0x213'),_0x865c('0x214'));}}}}else{_0x265cec[_0x865c('0x215')]+=0x1;_0x37b2e5[_0x865c('0xdb')](createObjHistory(_0x265cec,_0x3be2ec,'BLACKLIST',0xd,_0x865c('0x216')),_0x865c('0x217'),_0x865c('0x218'));throw _0x865c('0x219');}};};Dialer[_0x865c('0x1e')][_0x865c('0x176')]=function(_0x2158b5){var _0x1da03e=this;var _0x2fe24c=_0x2158b5['limitCalls']-_0x2158b5[_0x865c('0x7d')]-_0x2158b5[_0x865c('0xd1')];emitCampaignSummary(_0x2158b5);if(_0x2fe24c>0x0){if(_0x2fe24c>this[_0x865c('0x26')]){_0x2fe24c=this[_0x865c('0x26')];}_0x2158b5[_0x865c('0xd1')]+=_0x2fe24c;this[_0x865c('0xd3')](_0x2158b5['id'],_0x2fe24c,_0x2158b5[_0x865c('0x21a')],_0x2158b5)['then'](function(_0x584b2){_0x2158b5[_0x865c('0xd1')]-=_0x2fe24c;_0x2158b5[_0x865c('0xd1')]=_0x2158b5[_0x865c('0xd1')]>0x0?_0x2158b5[_0x865c('0xd1')]:0x0;if(!checkContactEmpty(_0x584b2)){_0x2158b5[_0x865c('0x48')]=_0x865c('0xa8');logger['info']('[getContactCampaign2][Empty]'+_0x2158b5[_0x865c('0x4a')]);}else{_0x2158b5[_0x865c('0x7d')]+=_0x584b2[_0x865c('0xa1')];_0x2158b5['message']=_0x865c('0x21b');for(var _0x10c970=0x0;_0x10c970<_0x584b2[_0x865c('0xa1')];_0x10c970+=0x1){_0x2158b5[_0x865c('0x21c')]+=0x1;if(_['isNil'](_0x584b2[_0x10c970])||_[_0x865c('0xb8')](_0x584b2[_0x10c970]['Contact'])||_[_0x865c('0xb8')](_0x584b2[_0x10c970][_0x865c('0x188')])){_0x1da03e['emptyContact'](_0x865c('0x21d'),_0x2158b5,_0x584b2[_0x10c970]);}else{_0x1da03e['checkIsBlackListIvr'](_['pick'](_0x584b2[_0x10c970],[_0x865c('0xe0'),'phone']))[_0x865c('0xc2')](_0x1da03e['checkContactBlack'](_0x2158b5,_0x584b2[_0x10c970]))[_0x865c('0xba')](_0x1da03e[_0x865c('0xd8')](_0x865c('0x21e'),_0x2158b5));}}}})[_0x865c('0xba')](loggerGetContactDialer(_0x865c('0x21f'),_0x2158b5,_0x2fe24c));}};Dialer['prototype']['handlePower']=function(_0xad9f19,_0x175e76){var _0x408bb0=this;var _0x275126=[];var _0x2451d0=_0x175e76>=0x1?_0x175e76:0x1;if(_0xad9f19['dialMethod']===_0x865c('0x7')){_0x2451d0=0x1;}var _0x38e9b3=Math['floor'](_0xad9f19[_0x865c('0x5b')]*_0x2451d0)-_0xad9f19['originated']-_0xad9f19['temp'];emitVoiceQueueSummary(_0xad9f19);if(_0xad9f19['dialLimitQueue']>0x0){var _0x3760c2=_0xad9f19[_0x865c('0x220')]-_0xad9f19[_0x865c('0x7d')]-_0xad9f19[_0x865c('0x60')]-_0xad9f19[_0x865c('0xd1')]-_0xad9f19[_0x865c('0x5d')];if(_0x38e9b3>_0x3760c2){_0x38e9b3=_0x3760c2;}}if(_0x38e9b3>0x0){if(_0xad9f19[_0x865c('0x64')]===_0x865c('0x7')){_0x38e9b3=0x1;}if(_0x38e9b3>this[_0x865c('0x26')]){_0x38e9b3=this[_0x865c('0x26')];}_0xad9f19['temp']+=_0x38e9b3;for(var _0x361184 in this['agents']){if(typeof this[_0x865c('0x24')][_0x361184]!=='undefined'){if(this[_0x865c('0x24')][_0x361184][_0x865c('0xb0')]===_0x865c('0x221')&&this['agents'][_0x361184][_0x865c('0xe4')]===_0x865c('0x222')){_0x275126['push'](this[_0x865c('0x24')][_0x361184]['id']);}}}this[_0x865c('0xd0')](_0xad9f19['id'],_0x275126,_0x38e9b3,_0xad9f19['dialOrderByScheduledAt'],_0xad9f19)[_0x865c('0xc2')](function(_0x188090){_0xad9f19[_0x865c('0xd1')]-=_0x38e9b3;_0xad9f19['temp']=_0xad9f19['temp']>0x0?_0xad9f19[_0x865c('0xd1')]:0x0;if(!checkContactEmpty(_0x188090)){_0x408bb0['countReScheduled'](_0xad9f19)['then'](sendMessageReschedule(_0xad9f19))[_0x865c('0xba')](loggerCatch('[countReScheduled]\x20'));}else{_0xad9f19['originated']+=_0x188090['length'];_0xad9f19[_0x865c('0x48')]=_0xad9f19[_0x865c('0x64')]===_0x865c('0x7')?_0x865c('0x18d'):'RUNNING';for(var _0x195ebd=0x0;_0x195ebd<_0x188090['length'];_0x195ebd+=0x1){if(_[_0x865c('0xb8')](_0x188090[_0x195ebd])||_['isNil'](_0x188090[_0x195ebd]['Contact'])||_[_0x865c('0xb8')](_0x188090[_0x195ebd]['phone'])){_0x408bb0[_0x865c('0xd9')]('[actionOriginate]\x20',_0xad9f19,_0x188090[_0x195ebd]);}else{_0x408bb0['checkIsBlackList'](_[_0x865c('0xdd')](_0x188090[_0x195ebd],[_0x865c('0xdf'),_0x865c('0x188')]))[_0x865c('0xc2')](_0x408bb0['checkContactBlack'](_0xad9f19,_0x188090[_0x195ebd]))[_0x865c('0xba')](_0x408bb0['loggerHandler']('[actionOriginate]\x20',_0xad9f19));}}}})[_0x865c('0xba')](loggerGetContactDialer('[getContactDialer2]',_0xad9f19,_0x38e9b3));}};Dialer['prototype'][_0x865c('0x9a')]=function(_0x1c2e5f){if(_0x1c2e5f['dialLimitQueue']>0x0){var _0x57cec3=_0x1c2e5f[_0x865c('0x220')]-_0x1c2e5f[_0x865c('0x7d')]-_0x1c2e5f[_0x865c('0x60')];if(_0x57cec3>0x0){this[_0x865c('0x223')](_0x1c2e5f);}else{loggerPredictiveCalls[_0x865c('0x8a')](_0x865c('0x224'));}}else{this['tryOriginatePredictive'](_0x1c2e5f);}};Dialer[_0x865c('0x1e')]['tryOriginatePredictive']=function(_0x2f5478){var _0x2f5616=this;var _0x32bf34=[];_0x2f5478[_0x865c('0x7d')]+=0x1;for(var _0x591301 in this[_0x865c('0x24')]){if(typeof this['agents'][_0x591301]!==_0x865c('0xb5')){if(this['agents'][_0x591301][_0x865c('0xb0')]===_0x865c('0x221')&&this[_0x865c('0x24')][_0x591301][_0x865c('0xe4')]===_0x865c('0x222')){_0x32bf34['push'](this[_0x865c('0x24')][_0x591301]['id']);}}}this[_0x865c('0xd0')](_0x2f5478['id'],_0x32bf34,0x1,_0x2f5478['dialOrderByScheduledAt'],_0x2f5478)[_0x865c('0xc2')](function(_0x226613){if(!checkContactEmpty(_0x226613)){checkContactLowerLimitOriginate(_0x2f5478,0x1,0x0);_0x2f5616['countReScheduled'](_0x2f5478)[_0x865c('0xc2')](sendMessageReschedule(_0x2f5478))[_0x865c('0xba')](loggerCatch(_0x865c('0xc3')));}else{_0x2f5478[_0x865c('0x48')]=_0x865c('0x21b');if(_[_0x865c('0xb8')](_0x226613[0x0])||_[_0x865c('0xb8')](_0x226613[0x0][_0x865c('0x19c')])||_[_0x865c('0xb8')](_0x226613[0x0][_0x865c('0x188')])){_0x2f5616[_0x865c('0xd9')](_0x865c('0x21d'),_0x2f5478,_0x226613[0x0]);}else{_0x2f5616[_0x865c('0xc4')](_[_0x865c('0xdd')](_0x226613[0x0],['VoiceQueueId',_0x865c('0x188')]))[_0x865c('0xc2')](_0x2f5616['checkContactBlack'](_0x2f5478,_0x226613[0x0]))[_0x865c('0xba')](_0x2f5616[_0x865c('0xd8')](_0x865c('0x225'),_0x2f5478));}}})[_0x865c('0xba')](loggerGetContactDialer(_0x865c('0x226'),_0x2f5478,0x1));emitVoiceQueueSummary(_0x2f5478);};Dialer[_0x865c('0x1e')][_0x865c('0x1fc')]=function(_0x26ed01,_0x2aee13,_0x3e805b,_0x3d28cd,_0x232e4c,_0x2596e8){loggerPredictive[_0x865c('0x8a')](_0x865c('0x227'));loggerPredictive[_0x865c('0x8a')](_0x865c('0x228'),_0x26ed01);loggerPredictive[_0x865c('0x8a')](_0x865c('0x229'),_0x2aee13);loggerPredictive[_0x865c('0x8a')](_0x865c('0x22a'),_0x3e805b);loggerPredictive[_0x865c('0x8a')]('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',_0x3d28cd);loggerPredictive[_0x865c('0x8a')](_0x865c('0x22b'),_0x232e4c);loggerPredictive[_0x865c('0x8a')](_0x865c('0x22c'));return new Promise(function(_0x40e39e,_0x538349){if(_0x26ed01<=0x0||isNaN(_0x26ed01)){return _0x538349(msgResponse(_0x865c('0x22d'),_0x865c('0x52'),_0x865c('0x22e')+_0x26ed01));}if(_0x3e805b<=0x0||isNaN(_0x3e805b)){return _0x538349(msgResponse('[abandonmentRate]','Error',_0x865c('0x22f')+_0x3e805b));}if(_0x3d28cd<=0x0||isNaN(_0x3d28cd)){return _0x538349(msgResponse(_0x865c('0x22d'),_0x865c('0x52'),_0x865c('0x230')+_0x3d28cd));}if(_0x2aee13<=0x0||isNaN(_0x2aee13)){return _0x538349(msgResponse('[abandonmentRate]',_0x865c('0x52'),_0x865c('0x231')+_0x2aee13));}if(_0x232e4c<=0x0||isNaN(_0x232e4c)){return _0x538349(msgResponse(_0x865c('0x22d'),_0x865c('0x52'),'Amax\x20=\x20'+_0x232e4c));}_0x2596e8=_0x2596e8||0x0;var _0x483e78=0x1/_0x3e805b;var _0x1af2a2=0x0;var _0x4513ba=0x0;var _0xc64d18=0x0;var _0x371a07=0x0;for(var _0x51f393=0x0;_0xc64d18<_0x232e4c;_0x51f393+=0x1){_0x4513ba=_0x51f393/_0x2aee13;_0x1af2a2=(_0x3d28cd*_0x4513ba+_0x2596e8)/_0x483e78;_0xc64d18=erlangb(_0x1af2a2,_0x26ed01);_0x371a07=_0x1af2a2/_0x26ed01*(0x1-erlangb(_0x1af2a2,_0x26ed01));}return _0x40e39e({'erlangCalls':_0x51f393,'erlangCallToSecond':_0x2aee13/_0x51f393,'erlangAbandonmentRate':_0xc64d18,'erlangBusyFactor':_0x371a07});});};Dialer[_0x865c('0x1e')][_0x865c('0x1ff')]=function(_0x516361,_0x29e95c,_0x442c6f,_0x10bc5c,_0x22d8b1,_0x198221){loggerPredictive['info'](_0x865c('0x232'));loggerPredictive[_0x865c('0x8a')](_0x865c('0x228'),_0x516361);loggerPredictive[_0x865c('0x8a')]('Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x29e95c);loggerPredictive[_0x865c('0x8a')](_0x865c('0x22a'),_0x442c6f);loggerPredictive[_0x865c('0x8a')](_0x865c('0x233'),_0x10bc5c);loggerPredictive['info'](_0x865c('0x234'),_0x22d8b1);loggerPredictive[_0x865c('0x8a')](_0x865c('0x22c'));return new Promise(function(_0x208299,_0x39c1ed){if(_0x516361<=0x0||isNaN(_0x516361)){return _0x39c1ed(msgResponse(_0x865c('0x235'),_0x865c('0x52'),_0x865c('0x22e')+_0x516361));}if(_0x442c6f<=0x0||isNaN(_0x442c6f)){return _0x39c1ed(msgResponse('[busyFactor]',_0x865c('0x52'),_0x865c('0x22f')+_0x442c6f));}if(_0x10bc5c<=0x0||isNaN(_0x10bc5c)){return _0x39c1ed(msgResponse(_0x865c('0x235'),'Error',_0x865c('0x230')+_0x10bc5c));}if(_0x29e95c<=0x0||isNaN(_0x29e95c)){return _0x39c1ed(msgResponse('[busyFactor]',_0x865c('0x52'),_0x865c('0x231')+_0x29e95c));}if(_0x22d8b1<=0x0||isNaN(_0x22d8b1)){return _0x39c1ed(msgResponse(_0x865c('0x235'),'Error','Umin\x20=\x20'+_0x22d8b1));}_0x198221=_0x198221||0x0;var _0x408a2a=0x1/_0x442c6f;var _0x47627f=0x0;var _0x358efa=0x0;var _0x5d7c6c=0x0;var _0x448665=0x0;for(var _0x2785dc=0x0;_0x448665<_0x22d8b1;_0x2785dc+=0x1){_0x358efa=_0x2785dc/_0x29e95c;_0x47627f=(_0x10bc5c*_0x358efa+_0x198221)/_0x408a2a;_0x5d7c6c=erlangb(_0x47627f,_0x516361);_0x448665=_0x47627f/_0x516361*(0x1-erlangb(_0x47627f,_0x516361));}return _0x208299({'erlangCalls':_0x2785dc,'erlangCallToSecond':_0x29e95c/_0x2785dc,'erlangAbandonmentRate':_0x5d7c6c,'erlangBusyFactor':_0x448665});});};module['exports']=Dialer;
\ No newline at end of file
+var _0x4ced=['swapAdditionalPhones','[checkIsBlackListIvr]\x20','averageHandleTime','avgHandleTime','[averageHandleTime]\x20','rescheduleContact','unlockContact','[unlockContact]\x20','getContactDialer','temp','getContactDialerIvr','getVoiceQueueRtPauses','moveContactManagedDialer','[moveContactManagedDialer]\x20','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','emptyContact','notFound','saveInDb','pick','ContactId','ListId','UserId','VoiceQueueId','CampaignId','[emptyContact][createHistory]','isTrunkReachable','active','reachable','SIP/%s','status','unmonitored','createHistory','uniqueid','variable','amdstatus','exten','xcally-motion-dialer','dialAMDActive','value','HANGUP','HangupInAMD','membername','AMD','custom:amd','buildObj','[syncHangupInAMD][createHistory]','countmachineretry','countglobal','amd','[syncAgentComplete][createHistory][0]','countcongestionretry','countnoanswerretry','countagentrejectretry','dialGlobalMaxRetry','reason19\x20machine....','dialMachineMaxRetry','createStateFinal','add','dialMachineRetryFrequency','minutes','YYYY-MM-DD\x20HH:mm:ss','[rescheduleContact][Machine]','state','[syncHangupInAMDIvr]','MACHINE','Machine','countbusyretry','countnosuchnumberretry','countdropretry','countabandonedretry','stateGlobal','ivrAnswerCallsDay','[syncHangupIvr][createHistory]','[syncHangupIvr]','AGI','dialQueueProject','cause-txt','Unknow','syncAgentComplete','reason','agent','agiafterat','dialQueueProject2','dialAgiAfterHangupAgent','[syncAgentComplete]','[syncAgentComplete][createHistory]','[syncQueueCallerAbandon]\x20[Drop]','droptime','responsetime','dialQueueTimeout','TIMEOUT','dialDropRetryFrequency','voiceQueue','dialDropMaxRetry','additional','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','Abandoned','dropreason','CALLEREXIT','dialAbandonedRetryFrequency','callAdditionalPhoneAfterMin','dialAbandonedMaxRetry','queueCallerAbandonCreateState','[rescheduleContact][Abandoned]','endtime','[syncAgentComplete][createHistory][11]','actionid','locked','paused','stateinterface','rrmemory','queueBooked','push','idHopper','queueStatusComplete','[unlockQueueStatus][undefined]','[booked][unlockQueueStatus]','preview','run','[Catch][Preview][syncQueueStatusComplete]','[unlock][syncQueueStatusComplete]','_rr','unlockRR','[booked][RR]','Agent:\x20','contactAgent-idHopper:\x20','[booked][RR][finaly]','[booked][unlock2]','[booked][unlock3]','[unlock3][syncQueueStatusComplete]','TrunkBackup','TRUNK_IS_NOT_REACHABLE','checkIfTime','ifTime','checkIfTimeIntervals','Failure','\x20Intervals\x20is\x20null\x20','INTERVAL_IS_EMPTY','\x20Intervals\x20is\x20empty\x20','timezones','TIMEZONE_UNKNOW','\x20Timezone\x20unknow\x20','isArray','command','iftime\x20%s,%s','interval','indexOf','Action','content','all','some','GLOBAL_INTERVAL_IS_OVERTIME','INTERVAL_IS_OVERTIME','[ifTime][promiseAll]','Global:\x20','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','handlePower','power','predictive','Queue','checkPreviewRecallReminder','handlePreviewRecallNotifications','user:%s','launchHandleIvr','dialGlobalInterval','dialTimezone','[syncQueueSummary]','throttle','dialPreviewRecallmeReminder','filter','online','map','Agent','user:dialPreviewRecallReminder','checkIsTrunkReachable','[syncCampaigns]','\x5cw{0,','pow','match','actionOriginate','voiceQueue\x20is\x20undefine','phone','originate','contact\x20is\x20undefine','getCaller','\x22agi://%s/square,%s\x22','NONE','\x22%s,%s%s,,,%s\x22','dialQueueOptions','ACTIVE','dialAMDInitialSilence','XMD-AMDGREETING','XMD-AMDAFTERGREETINGSILENCE','XMD-AMDTOTALANALYSISTIME','dialAMDTotalAnalysisTime','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','XMD-AMDBETWEENWORDSSILENCE','dialAMDBetweenWordsSilence','XMD-AMDMAXIMUMNUMBEROFWORDS','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','dialAMDSilenceThreshold','dialAMDMaximumWordLength','XMD-VOICEQUEUEID','XMD-CAMPAIGNID','Contact','tags','updatedAt','%s%s','XMD-','dialRandomLastDigitCallerIdNumber','XMD-ORIGINATECALLERIDNAME','originatecalleridname','XMD-ORIGINATECALLERIDNUM','SIP/%s/%s%s','substring','dialCutDigit','trim','from-sip','[originateError]:\x20%s','[originate][error]','Error','originate\x20action\x20Error','getQueue','isSuccess','response','callProgressDetecting','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','dialBusyRetryFrequency','[rescheduleContact]\x20[Busy]','dialCongestionRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','[rescheduleContact][NoSuchNumber]','[rescheduleContact][Drop]','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','[rescheduleContact][AgentReject]','object','[callProgressDetecting]','entity\x20is\x20undefine','evt\x20is\x20undefine','NoSuchNumber','custom:agentnosuchnumber','nosuchnumber','checkRetriveMax','reason\x200\x20no\x20such\x20number....','buildNoAnswerEventPayload','reason\x203\x20ringing\x20no\x20answer','Busy','custom:agentbusy','[syncAgentComplete][createHistory][5]','reason\x205\x20busy','Congestion','[syncAgentComplete][createHistory][8]','dialCongestionMaxRetry','reason\x208\x20congestion','outboundAbandonedCallsDay','reason\x2011\x20abandoned','custom:agentreject','agentreject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','Success','[moveContactManagedDialer][0]','contact\x20not\x20moved','dialPredictiveOptimizationPercentage','round','predictiveIntervalMaxThreshold','floor','predictiveIntervalHitRate','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','check\x20handlePredictive\x20is\x20not\x20undefine','collection\x20data\x20in\x20progressive\x20at','[startMethodPredictive][StartProgressive][Loop]','dialPredictiveOptimization','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Max\x20Drop\x20','Drop\x20in\x20this\x20interval','dialPredictiveInterval','started\x20in\x20predictive\x20at','getDataPredictive','startMethodPredictive','Predictive\x20after\x20first\x20interval','recalculate\x20predictive\x20at','Predictive\x20for\x20every\x20interval','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20more\x20than\x20threshold\x20(','abandonmentRate','agentBusyFactor','busyFactor','Unknown\x20Predictive','check\x20failure','getDataPredictiveOld','outboundQueuePauses','[CatchErlangB]','[getDataPredictive]','one\x20call\x20every:','[handlePredictive]','fail\x20to\x20scheduled\x20calls','checkContactBlack','[booked][checkContactBlack]','queueStatusComplete:\x20','Queue:\x20','queuestatus','[booked][checkContactBlack][else]','[unlockOriginate][syncQueueStatusComplete]','scheduledat','voicePause','[rescheduleContact][dialRecallInQueue]','RECALLINQUEUE','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','[Originate][HistoryRecallClose][historyCatch]','[Originate][HistoryRecallClose]','outboundBlacklistCallsDay','BLACKLIST','Blacklist','[Originate][MoveBlacklist]','inBlackList','limitCalls','dialOrderByScheduledAt','[getContactCampaign2][Empty]','ivrTotalCallsDays','[actionOriginate]\x20','checkIsBlackListIvr','loggerHandler','[actionOriginateIvr]\x20','[getContactCampaign2]','dialLimitQueue','not_inuse','RUNNING','[getContactDialer2]','tryOriginatePredictive','[handlePredictive][limitChannel]','--------\x20Drop\x20Rate\x20--------','M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[abandonmentRate]','Ts\x20=\x20','interval\x20=\x20','Amax\x20=\x20','----\x20Agent\x20Busy\x20Factor\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','m\x20=\x20','[busyFactor]','p\x20=\x20','Umin\x20=\x20','exports','util','lodash','uuid','moment','ioredis','../preview/util/util','../../../config/environment/','../../../config/logger','dialer','booked','predictiveCalls','syncQueueSummary','../ami','redis','defaults','localhost','socket.io-emitter','../rpc/cmHopperHistory','../rpc/cmHopperAdditionalPhone','../rpc/cmHopperBlack','../rpc/voiceQueueRt','./action','./history','./final','./agentComplete','./queueCallerAbandon','./hangup','env','XCALLY_IP_AGI','roundrobin','prototype','enqueue','tail','finally','sequence','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','contactsId','uniqueId','optionPredictive','startProgressive','queueBookedRR','syncAgentConnect','queuecallerabandon','syncQueueCallerAbandon','bind','syncOriginateResponse','agentcomplete','custom:queuesummary','custom:queuesummarycomplete','syncQueueSummaryComplete','hangup','syncHangup','newexten','syncNewExten','varset','syncVarSet','syncQueueMember','syncQueueStatusComplete','loopCampaigns','getSettings','previewRecallmeReminderInterval','isUndefined','message','AGENTS_NOT_LOGGED','name','\x20AGENTS\x20NOT\x20LOGGED','NOT_ACTIVE','\x20NOT\x20Active','Interval','Intervals','INTERVAL_IS_NULL','isEmpty','stringify','milliseconds','diff','emit','type','outbound','strategy','answered','available','loggedIn','pTalking','sumHoldTime','talking','total','abandoned','waiting','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','Trunk','callerid','md5','format','voice:queue:%s','voice_queue:save','ivr','campaign:save','info','Total\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalTotalCalls','Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','---------------------------','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive','History\x20information\x20are\x20empty','---------\x20ErlangB\x20---------','Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20','merge','seconds','clearing\x20variable\x20start\x20progressive','clearing\x20variable\x20start\x20predictive','handlePredictive','clearing\x20variable\x20handle\x20predictive','string','\x22%s\x22\x20<%s>','\x22\x22\x20<>','debug','inspect','error','stack','length','undefined','[decremetOriginate]\x20object\x20originated\x20is\x20negative','[decremetOriginate]\x20is\x20null\x20or\x20undefined','contactsRescheduled','[getContactDialer2][ReScheduled]','contacts','sendMessageOneNotActive','[syncQueueSummary]\x20Campaign\x20Queue:\x20','is\x20not\x20active','IS_DISACTIVED','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','statedesc','starttime','clearZombieChannels','[uniqueid]','actions','[actions]','isNil','channel','catch','No\x20such\x20channel','updateOriginated','queue','[Dialer][checkChannel]','[Dialer][checkChannel][ivr]','countReScheduled','then','[countReScheduled]\x20','checkIsBlackList','resolve','[checkIsBlackList]\x20','verifyAdditionalPhones','[verifyAdditionalPhone]\x20'];(function(_0x40ac5e,_0x2de228){var _0x2839d6=function(_0x123d47){while(--_0x123d47){_0x40ac5e['push'](_0x40ac5e['shift']());}};_0x2839d6(++_0x2de228);}(_0x4ced,0x16c));var _0xd4ce=function(_0x52efaf,_0x1c85ec){_0x52efaf=_0x52efaf-0x0;var _0x54bb91=_0x4ced[_0x52efaf];return _0x54bb91;};'use strict';var util=require(_0xd4ce('0x0'));var _=require(_0xd4ce('0x1'));var uuid=require(_0xd4ce('0x2'));var moment=require(_0xd4ce('0x3'));var rr=require('rr');var md5=require('md5');var Redis=require(_0xd4ce('0x4'));var ut=require(_0xd4ce('0x5'));var config=require(_0xd4ce('0x6'));var logger=require(_0xd4ce('0x7'))(_0xd4ce('0x8'));var loggerBooked=require(_0xd4ce('0x7'))(_0xd4ce('0x9'));var loggerPredictive=require(_0xd4ce('0x7'))('predictive');var loggerPredictiveCalls=require(_0xd4ce('0x7'))(_0xd4ce('0xa'));var loggerSyncQueueSummary=require(_0xd4ce('0x7'))(_0xd4ce('0xb'));var ami=require(_0xd4ce('0xc'));config[_0xd4ce('0xd')]=_[_0xd4ce('0xe')](config[_0xd4ce('0xd')],{'host':_0xd4ce('0xf'),'port':0x18eb});var io=require(_0xd4ce('0x10'))(new Redis(config['redis']));var cmHopper=require('../rpc/cmHopper');var cmHopperHistory=require(_0xd4ce('0x11'));var cmHopperAdditionalPhone=require(_0xd4ce('0x12'));var cmHopperBlack=require(_0xd4ce('0x13'));var voiceQueueRt=require(_0xd4ce('0x14'));var RpcSetting=require('../rpc/setting');var Action=require(_0xd4ce('0x15'));var History=require(_0xd4ce('0x16'));var Final=require(_0xd4ce('0x17'));var AgentComplete=require(_0xd4ce('0x18'));var QueueCallerAbandon=require(_0xd4ce('0x19'));var Hangup=require(_0xd4ce('0x1a'));var ipAgi=process[_0xd4ce('0x1b')][_0xd4ce('0x1c')]||'127.0.0.1';var strategy={'rrmemory':'rrmemory','roundrobin':_0xd4ce('0x1d')};var previewRecallmeReminderInterval=0x1;var Sequence=function(){};Sequence[_0xd4ce('0x1e')][_0xd4ce('0x1f')]=function(_0x5f5080){this[_0xd4ce('0x20')]=this[_0xd4ce('0x20')]?this[_0xd4ce('0x20')][_0xd4ce('0x21')](_0x5f5080):_0x5f5080();};function Dialer(_0x2d76d1,_0x50ccb9){this[_0xd4ce('0x22')]=new Sequence();this['preview']=_0x50ccb9;this[_0xd4ce('0x23')]=_0x2d76d1[_0xd4ce('0x23')];this['campaigns']=_0x2d76d1[_0xd4ce('0x24')];this[_0xd4ce('0x25')]=_0x2d76d1[_0xd4ce('0x25')];this['trunks']=_0x2d76d1[_0xd4ce('0x26')];this['maxNumberOriginate']=config[_0xd4ce('0x27')]||0x2;this['channels']={};this['actions']={};this[_0xd4ce('0x28')]={};this[_0xd4ce('0x29')]={};this[_0xd4ce('0x2a')]={};this['startPredictive']={};this[_0xd4ce('0x2b')]={};this['ivrOriginated']={};this['queueBooked']={};this[_0xd4ce('0x2c')]={};ami['on']('agentconnect',this[_0xd4ce('0x2d')]['bind'](this));ami['on'](_0xd4ce('0x2e'),this[_0xd4ce('0x2f')][_0xd4ce('0x30')](this));ami['on']('originateresponse',this[_0xd4ce('0x31')][_0xd4ce('0x30')](this));ami['on'](_0xd4ce('0x32'),this['syncAgentComplete']['bind'](this));ami['on'](_0xd4ce('0x33'),this[_0xd4ce('0xb')][_0xd4ce('0x30')](this));ami['on'](_0xd4ce('0x34'),this[_0xd4ce('0x35')]['bind'](this));ami['on'](_0xd4ce('0x36'),this[_0xd4ce('0x37')]['bind'](this));ami['on'](_0xd4ce('0x38'),this[_0xd4ce('0x39')][_0xd4ce('0x30')](this));ami['on'](_0xd4ce('0x3a'),this[_0xd4ce('0x3b')][_0xd4ce('0x30')](this));ami['on']('queuemember',this[_0xd4ce('0x3c')][_0xd4ce('0x30')](this));ami['on']('queuestatuscomplete',this[_0xd4ce('0x3d')][_0xd4ce('0x30')](this));this[_0xd4ce('0x3e')]();this['loopClearZombieChannels']();RpcSetting[_0xd4ce('0x3f')]()['then'](function(_0xfda307){previewRecallmeReminderInterval=_0xfda307[_0xd4ce('0x40')];});}function isNotNull(_0x56afce){return _0x56afce!==null&&!_[_0xd4ce('0x41')](_0x56afce);}function checkIsLoggedIn(_0x2cd8af,_0x4a415a){return function(){if(_0x4a415a<=0x0){_0x2cd8af[_0xd4ce('0x42')]=_0xd4ce('0x43');throw _0x2cd8af[_0xd4ce('0x44')]+_0xd4ce('0x45');}};}function isActive(_0x136c9e){return _0x136c9e;}function checkIsActive(_0x231efa,_0x7845a1){return function(){if(!isActive(_0x7845a1)){_0x231efa[_0xd4ce('0x42')]=_0xd4ce('0x46');throw _0x231efa[_0xd4ce('0x44')]+_0xd4ce('0x47');}};}function checkInterval(_0xa14eca){return function(){if(!isNotNull(_0xa14eca['Interval'])){_0xa14eca[_0xd4ce('0x42')]='INTERVAL_IS_NULL';throw _0xa14eca[_0xd4ce('0x44')]+'\x20INTERVAL_IS_NULL';}if(!isNotNull(_0xa14eca[_0xd4ce('0x48')][_0xd4ce('0x49')])){_0xa14eca[_0xd4ce('0x42')]=_0xd4ce('0x4a');throw _0xa14eca[_0xd4ce('0x44')]+'\x20INTERVAL_IS_NULL';}if(!isNotNull(_[_0xd4ce('0x4b')](_0xa14eca['Interval'][_0xd4ce('0x49')]))){_0xa14eca['message']=_0xd4ce('0x4a');throw _0xa14eca[_0xd4ce('0x44')]+'\x20INTERVAL_IS_NULL';}};}function msgResponse(_0x1aa2e2,_0x2e77d8,_0x4a4988){return{'action':_0x1aa2e2,'response':_0x2e77d8,'message':_0x4a4988,'stack':_0x4a4988};}function myreject(_0x1f49f7){return function(_0x266c38){return _0x1f49f7(msgResponse('[ifTime][Action]','Error',JSON[_0xd4ce('0x4c')](_0x266c38)));};}function getSeconds(_0x488a60,_0x2d12b5){var _0x454762=moment(_0x488a60)[_0xd4ce('0x4d')](0x0);var _0x5aa950=moment(_0x2d12b5)['milliseconds'](0x0);return _0x454762[_0xd4ce('0x4e')](_0x5aa950,'seconds');}function emit(_0x4816db,_0x1f9597,_0x4e7706){io['to'](_0x4816db)[_0xd4ce('0x4f')](_0x1f9597,_0x4e7706);}function emitVoiceQueueSummary(_0x412b5a){if(_0x412b5a[_0xd4ce('0x50')]===_0xd4ce('0x51')){var _0x1d86e2={'id':_0x412b5a['id'],'name':_0x412b5a[_0xd4ce('0x44')],'strategy':_0x412b5a[_0xd4ce('0x52')],'answered':_0x412b5a[_0xd4ce('0x53')],'available':_0x412b5a[_0xd4ce('0x54')],'loggedIn':_0x412b5a[_0xd4ce('0x55')],'pTalking':_0x412b5a[_0xd4ce('0x56')],'sumBillable':_0x412b5a['sumBillable'],'sumDuration':_0x412b5a['sumDuration'],'sumHoldTime':_0x412b5a[_0xd4ce('0x57')]||0x0,'talking':_0x412b5a[_0xd4ce('0x58')],'total':_0x412b5a[_0xd4ce('0x59')],'type':_0x412b5a[_0xd4ce('0x50')],'unmanaged':_0x412b5a['unmanaged'],'abandoned':_0x412b5a[_0xd4ce('0x5a')],'waiting':_0x412b5a[_0xd4ce('0x5b')],'loggedInDb':_0x412b5a[_0xd4ce('0x5c')],'dialActive':_0x412b5a[_0xd4ce('0x5d')],'dialMethod':_0x412b5a[_0xd4ce('0x5e')],'dialOriginateCallerIdName':_0x412b5a[_0xd4ce('0x5f')],'dialOriginateCallerIdNumber':_0x412b5a[_0xd4ce('0x60')],'dialOriginateTimeout':_0x412b5a[_0xd4ce('0x61')],'dialPrefix':_0x412b5a[_0xd4ce('0x62')],'outboundAnswerAgiCallsDay':_0x412b5a[_0xd4ce('0x63')],'outboundAnswerCallsDay':_0x412b5a[_0xd4ce('0x64')],'outboundBlacklistCallsDay':_0x412b5a['outboundBlacklistCallsDay'],'outboundBusyCallsDay':_0x412b5a['outboundBusyCallsDay'],'outboundCongestionCallsDay':_0x412b5a[_0xd4ce('0x65')],'outboundDropCallsDayACS':_0x412b5a[_0xd4ce('0x66')],'outboundDropCallsDayCallersExit':_0x412b5a[_0xd4ce('0x67')],'outboundDropCallsDayTimeout':_0x412b5a[_0xd4ce('0x68')],'outboundNoAnswerCallsDay':_0x412b5a[_0xd4ce('0x69')],'outboundNoSuchCallsDay':_0x412b5a[_0xd4ce('0x6a')],'outboundOriginateFailureCallsDay':_0x412b5a[_0xd4ce('0x6b')],'outboundReCallsDay':_0x412b5a[_0xd4ce('0x6c')],'outboundRejectCallsDay':_0x412b5a[_0xd4ce('0x6d')],'outboundUnknownCallsDay':_0x412b5a[_0xd4ce('0x6e')],'predictiveIntervalAnsweredCalls':_0x412b5a[_0xd4ce('0x6f')],'predictiveIntervalAvgHoldtime':_0x412b5a[_0xd4ce('0x70')],'predictiveIntervalAvgTalktime':_0x412b5a[_0xd4ce('0x71')],'predictiveIntervalDroppedCallsCallersExit':_0x412b5a[_0xd4ce('0x72')],'predictiveIntervalDroppedCallsTimeout':_0x412b5a[_0xd4ce('0x73')],'predictiveIntervalErlangCalls':_0x412b5a[_0xd4ce('0x74')],'predictiveIntervalErlangCallsDroppedCalls':_0x412b5a[_0xd4ce('0x75')],'predictiveIntervalHitRate':_0x412b5a['predictiveIntervalHitRate'],'predictiveIntervalMultiplicativeFactor':_0x412b5a[_0xd4ce('0x76')],'predictiveIntervalPauses':_0x412b5a[_0xd4ce('0x77')],'predictiveIntervalAvailable':_0x412b5a[_0xd4ce('0x78')],'predictiveIntervalTotalCalls':_0x412b5a['predictiveIntervalTotalCalls'],'message':_0x412b5a[_0xd4ce('0x42')],'originated':_0x412b5a[_0xd4ce('0x79')],'erlangCalls':_0x412b5a[_0xd4ce('0x7a')],'erlangCallToSecond':_0x412b5a[_0xd4ce('0x7b')],'erlangAbandonmentRate':_0x412b5a[_0xd4ce('0x7c')],'erlangBusyFactor':_0x412b5a[_0xd4ce('0x7d')],'startPredictive':_0x412b5a[_0xd4ce('0x7e')],'startProgressive':_0x412b5a['startProgressive']};if(_0x412b5a[_0xd4ce('0x7f')]){_0x1d86e2[_0xd4ce('0x7f')]={'id':_0x412b5a[_0xd4ce('0x7f')]['id'],'name':_0x412b5a[_0xd4ce('0x7f')][_0xd4ce('0x44')],'active':_0x412b5a[_0xd4ce('0x7f')]['active'],'callerid':_0x412b5a[_0xd4ce('0x7f')][_0xd4ce('0x80')]};}if(_0x412b5a[_0xd4ce('0x48')]){_0x1d86e2[_0xd4ce('0x48')]={'id':_0x412b5a[_0xd4ce('0x48')]['id'],'name':_0x412b5a[_0xd4ce('0x48')][_0xd4ce('0x44')]};}var _0x1ea5d5=md5(JSON['stringify'](_0x1d86e2));if(_0x412b5a[_0xd4ce('0x81')]!==_0x1ea5d5){_0x412b5a['md5']=_0x1ea5d5;emit(util[_0xd4ce('0x82')](_0xd4ce('0x83'),_0x1d86e2[_0xd4ce('0x44')]),_0xd4ce('0x84'),_0x1d86e2);}}}function emitCampaignSummary(_0xaef6c4){if(_0xaef6c4[_0xd4ce('0x50')]===_0xd4ce('0x85')){emit(util[_0xd4ce('0x82')]('campaign:ivr:%s',_0xaef6c4[_0xd4ce('0x44')]),_0xd4ce('0x86'),_0xaef6c4);}}function checkGetDataPredictive(_0x4a9424){if(isNotNull(_0x4a9424)&&!_[_0xd4ce('0x4b')](_0x4a9424)){loggerPredictive[_0xd4ce('0x87')]('-----\x20Stats\x20Predictive\x20---');loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x88'),_0x4a9424[_0xd4ce('0x89')]);loggerPredictive[_0xd4ce('0x87')]('Answered\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x4a9424['predictiveIntervalAnsweredCalls']);loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x8a'),_0x4a9424['predictiveIntervalDroppedCallsTimeout']);loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x8b'),_0x4a9424['predictiveIntervalDroppedCallsCallersExit']);loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x8c'),_0x4a9424[_0xd4ce('0x70')]);loggerPredictive['info'](_0xd4ce('0x8d'),_0x4a9424['predictiveIntervalAvgTalktime']);loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x8e'));if(_0x4a9424['predictiveIntervalTotalCalls']>0x0){if(!_['isUndefined'](_0x4a9424['predictiveIntervalAvgTalktime'])&&_0x4a9424[_0xd4ce('0x71')]>0x0){return!![];}loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x8f'));if(!_[_0xd4ce('0x41')](_0x4a9424[_0xd4ce('0x70')])&&_0x4a9424['predictiveIntervalAvgHoldtime']>0x0){return!![];}loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x90'));}else{loggerPredictive['info'](_0xd4ce('0x91'));}}else{loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x92'));}return![];}function mergeDataErlangB(_0x15f97f){return function(_0x44a55e){loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x93'));loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x94'),_0x44a55e[_0xd4ce('0x7a')]);loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x95'),_0x44a55e[_0xd4ce('0x7b')]);loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x96'),_0x44a55e[_0xd4ce('0x7c')]);loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x97'),_0x44a55e[_0xd4ce('0x7d')]);loggerPredictive[_0xd4ce('0x87')]('Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x44a55e['erlangAbandonmentRate']);loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x8e'));_[_0xd4ce('0x98')](_0x15f97f,_0x44a55e);};}function getDiff(_0x4c13f5){var _0x4e82f1=moment()[_0xd4ce('0x4d')](0x0);var _0x182976=moment(_0x4c13f5)[_0xd4ce('0x4d')](0x0);return _0x4e82f1[_0xd4ce('0x4e')](_0x182976,_0xd4ce('0x99'));}function ifInterval(_0x1ae8f9,_0x5590a0){if(_['isUndefined'](_0x5590a0)){return![];}return getDiff(_0x5590a0)<_0x1ae8f9*0x3c;}function freeVariablesPredictive(_0x54e30d){if(isNotNull(_0x54e30d)){if(!_[_0xd4ce('0x41')](_0x54e30d[_0xd4ce('0x2b')])){_0x54e30d[_0xd4ce('0x2b')]=undefined;loggerPredictive[_0xd4ce('0x87')](_0x54e30d[_0xd4ce('0x44')],_0xd4ce('0x9a'));}if(!_[_0xd4ce('0x41')](_0x54e30d[_0xd4ce('0x7e')])){_0x54e30d[_0xd4ce('0x7e')]=undefined;loggerPredictive[_0xd4ce('0x87')](_0x54e30d['name'],_0xd4ce('0x9b'));}if(!_[_0xd4ce('0x41')](_0x54e30d[_0xd4ce('0x9c')])){clearInterval(_0x54e30d[_0xd4ce('0x9c')]);_0x54e30d[_0xd4ce('0x9c')]=undefined;loggerPredictive[_0xd4ce('0x87')](_0x54e30d[_0xd4ce('0x44')],_0xd4ce('0x9d'));}}}function erlangb(_0x35b121,_0x171699){if(_0x171699===0x0){return 0x0;}var _0x561e96=0x1;for(var _0x2ad555=0x1;_0x2ad555<=_0x171699;_0x2ad555+=0x1){_0x561e96=0x1+_0x561e96*_0x2ad555/_0x35b121;}return 0x1/_0x561e96;}function isVoiceQueueOutbound(_0x4a413d){return _0x4a413d===_0xd4ce('0x51');}function isNotPreview(_0x276369){return _0x276369!=='preview';}function isCampaignIvr(_0x9cc2f9){return _0x9cc2f9===_0xd4ce('0x85');}function getCallerId(_0x3c14dc,_0x140e05,_0x1e24a5){if(!_[_0xd4ce('0x41')](_0x1e24a5)&&typeof _0x1e24a5==='string'&&!_[_0xd4ce('0x4b')](_0x1e24a5)){if(!_['isUndefined'](_0x140e05)&&typeof _0x140e05===_0xd4ce('0x9e')&&!_['isEmpty'](_0x140e05)){return util[_0xd4ce('0x82')]('\x22%s\x22\x20<%s>',_0x140e05,_0x1e24a5);}return util[_0xd4ce('0x82')](_0xd4ce('0x9f'),_0x1e24a5,_0x1e24a5);}if(!_[_0xd4ce('0x41')](_0x3c14dc)&&typeof _0x3c14dc===_0xd4ce('0x9e')&&!_[_0xd4ce('0x4b')](_0x3c14dc)){return _0x3c14dc;}return _0xd4ce('0xa0');}function loggerCatchQueueSummary(_0x23b963,_0x3d08d7){return function(_0x34d175){freeVariablesPredictive(_0x3d08d7);emitVoiceQueueSummary(_0x3d08d7);emitCampaignSummary(_0x3d08d7);loggerSyncQueueSummary[_0xd4ce('0xa1')](_0x23b963,util[_0xd4ce('0xa2')](_0x34d175,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x13eb13,_0x9cbf4c){return function(_0x18ccee){loggerPredictive[_0xd4ce('0xa3')](_0x9cbf4c[_0xd4ce('0x44')],_0x13eb13);loggerPredictive[_0xd4ce('0xa3')](_0x18ccee[_0xd4ce('0xa4')]);freeVariablesPredictive(_0x9cbf4c);};}function loggerCatch(_0x154757){return function(_0x23e25a){logger['error'](_0x154757,util[_0xd4ce('0xa2')](_0x23e25a,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x52dc7d){return _0x52dc7d&&!_[_0xd4ce('0x41')](_0x52dc7d)&&_0x52dc7d[_0xd4ce('0xa5')]>0x0;}function decremetOriginate(_0x681629){if(!_['isUndefined'](_0x681629)&&_0x681629!==null){if(typeof _0x681629['originated']!==_0xd4ce('0xa6')){if(_0x681629['originated']>0x0){_0x681629[_0xd4ce('0x79')]-=0x1;}else{logger[_0xd4ce('0xa3')](_0xd4ce('0xa7'));}}}else{logger[_0xd4ce('0xa3')](_0xd4ce('0xa8'));}}function checkContactLowerLimitOriginate(_0x2bc817,_0x1ef3a4,_0x245172){if(_0x1ef3a4>_0x245172){for(var _0x2fcc0e=0x0;_0x2fcc0e<_0x1ef3a4-_0x245172;_0x2fcc0e+=0x1){decremetOriginate(_0x2bc817);}}}function loggerGetContactDialer(_0x55f80f,_0x4298cb,_0x4aac8e){return function(_0xe007c3){checkContactLowerLimitOriginate(_0x4298cb,_0x4aac8e,0x0);logger[_0xd4ce('0xa3')](_0x55f80f,util[_0xd4ce('0xa2')](_0xe007c3,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0xdd6fac){return function(_0x3604d9){if(isNotNull(_0x3604d9)&&isNotNull(_0x3604d9[0x0])){if(_0x3604d9[0x0][_0xd4ce('0xa9')]>0x0){_0xdd6fac['message']='RESCHEDULED_CONTACTS';logger[_0xd4ce('0x87')](_0xd4ce('0xaa')+_0xdd6fac['name'],_0x3604d9[0x0][_0xd4ce('0xa9')],_0xd4ce('0xab'));}else{_0xdd6fac['message']='AVAILABLE_CONTACTS_FINISHED';logger[_0xd4ce('0x87')]('[getContactDialer2][Empty]'+_0xdd6fac[_0xd4ce('0x44')]);}}};}function notSendMessagesQueue(_0x2d3ff2){if(_0x2d3ff2[_0xd4ce('0xac')]){freeVariablesPredictive(_0x2d3ff2);if(_0x2d3ff2['originated']===0x0&&_0x2d3ff2[_0xd4ce('0x58')]===0x0&&_0x2d3ff2[_0xd4ce('0x5b')]===0x0&&(_0x2d3ff2[_0xd4ce('0x56')]||0x0)===0x0){_0x2d3ff2['sendMessageOneNotActive']=![];_0x2d3ff2['available']=0x0;_0x2d3ff2[_0xd4ce('0x42')]=_0xd4ce('0x46');loggerSyncQueueSummary[_0xd4ce('0xa1')](_0xd4ce('0xad'),_0x2d3ff2[_0xd4ce('0x44')],_0xd4ce('0xae'));}else{_0x2d3ff2[_0xd4ce('0x42')]=_0xd4ce('0xaf');loggerSyncQueueSummary[_0xd4ce('0xa1')]('[syncQueueSummary]\x20Campaign\x20Queue:\x20',_0x2d3ff2[_0xd4ce('0x44')],'is\x20disactive');}emitVoiceQueueSummary(_0x2d3ff2);}}function notSendMessagesCampaign(_0x49bd34){if(_0x49bd34['sendMessageOneNotActive']){if(_0x49bd34[_0xd4ce('0x79')]===0x0){_0x49bd34[_0xd4ce('0xac')]=![];_0x49bd34[_0xd4ce('0x42')]=_0xd4ce('0x46');loggerSyncQueueSummary[_0xd4ce('0xa1')](_0xd4ce('0xb0'),_0x49bd34[_0xd4ce('0x44')],'is\x20not\x20active');}else{_0x49bd34[_0xd4ce('0x42')]=_0xd4ce('0xaf');loggerSyncQueueSummary[_0xd4ce('0xa1')](_0xd4ce('0xb0'),_0x49bd34[_0xd4ce('0x44')],'is\x20disactive');}emitCampaignSummary(_0x49bd34);}}function createObjHistory(_0x33672b,_0x251fb6,_0x282ff8,_0x447d3b,_0x324dc){_0x33672b['message']=_0x282ff8;var _0x1067bf=new Action(_0x33672b,_0x251fb6);var _0x5f46bb=new History(_0x1067bf);_0x5f46bb['state']=_0x447d3b;_0x5f46bb[_0xd4ce('0xb1')]=_0x324dc;_0x5f46bb['endtime']=_0x1067bf[_0xd4ce('0xb2')];return _0x5f46bb;}Dialer[_0xd4ce('0x1e')]['loopClearZombieChannels']=function(){var _0x543dd0=this;setInterval(function(){_0x543dd0[_0xd4ce('0xb3')](_0x543dd0[_0xd4ce('0x29')],_0xd4ce('0xb4'));_0x543dd0[_0xd4ce('0xb3')](_0x543dd0[_0xd4ce('0xb5')],_0xd4ce('0xb6'));},0x32c8);};Dialer[_0xd4ce('0x1e')][_0xd4ce('0xb3')]=function(_0x4fec9a,_0x3179d8){var _0x363297=this;for(var _0x485677 in _0x4fec9a){if(typeof _0x4fec9a[_0x485677]!==_0xd4ce('0xa6')){this['sequence'][_0xd4ce('0x1f')](function(){if(!_[_0xd4ce('0xb7')](_0x4fec9a[_0x485677])){return ami['Action']({'action':'status','channel':_0x4fec9a[_0x485677][_0xd4ce('0xb8')]})[_0xd4ce('0xb9')](function(_0x8a1d88){if(_0x8a1d88[_0xd4ce('0x42')]===_0xd4ce('0xba')){setTimeout(function(){if(_0x4fec9a[_0x485677]&&_0x4fec9a[_0x485677][_0xd4ce('0x50')]!==_0xd4ce('0x85')){_0x363297[_0xd4ce('0xbb')](_0x363297[_0xd4ce('0x23')][_0x4fec9a[_0x485677][_0xd4ce('0xbc')]]);logger[_0xd4ce('0xa3')](_0xd4ce('0xbd'),_0x3179d8,_0x485677,_0x4fec9a[_0x485677][_0xd4ce('0xbc')]);delete _0x4fec9a[_0x485677];}if(_0x4fec9a[_0x485677]&&_0x4fec9a[_0x485677]['type']==='ivr'){_0x363297[_0xd4ce('0xbb')](_0x363297[_0xd4ce('0x24')][_0x4fec9a[_0x485677][_0xd4ce('0xbc')]]);logger[_0xd4ce('0xa3')](_0xd4ce('0xbe'),_0x3179d8,_0x485677,_0x4fec9a[_0x485677][_0xd4ce('0xbc')]);delete _0x4fec9a[_0x485677];}},0x2328);}});}});}}};Dialer[_0xd4ce('0x1e')][_0xd4ce('0xbf')]=function(_0x2195c9){return Promise['resolve']()[_0xd4ce('0xc0')](cmHopper[_0xd4ce('0xbf')](_0x2195c9))[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0xc1')));};Dialer[_0xd4ce('0x1e')][_0xd4ce('0xc2')]=function(_0x5e6fb5){return Promise[_0xd4ce('0xc3')]()[_0xd4ce('0xc0')](cmHopperBlack[_0xd4ce('0xc2')](_0x5e6fb5))['catch'](loggerCatch(_0xd4ce('0xc4')));};Dialer[_0xd4ce('0x1e')][_0xd4ce('0xc5')]=function(_0x280ffe,_0x4a823f,_0x15751c){return Promise[_0xd4ce('0xc3')]()[_0xd4ce('0xc0')](cmHopperAdditionalPhone[_0xd4ce('0xc5')](_0x280ffe,_0x4a823f,_0x15751c))['catch'](loggerCatch(_0xd4ce('0xc6')));};Dialer[_0xd4ce('0x1e')][_0xd4ce('0xc7')]=function(_0x397a71,_0x3dcf65,_0xd2d856){return Promise['resolve']()[_0xd4ce('0xc0')](cmHopperAdditionalPhone['swapAdditionalPhones'](_0x397a71,_0x3dcf65,_0xd2d856))[_0xd4ce('0xb9')](loggerCatch('[swapAdditionalPhone]\x20'));};Dialer[_0xd4ce('0x1e')]['checkIsBlackListIvr']=function(_0x39a08a){return Promise[_0xd4ce('0xc3')]()[_0xd4ce('0xc0')](cmHopperBlack['checkIsBlackListIvr'](_0x39a08a))[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0xc8')));};Dialer[_0xd4ce('0x1e')][_0xd4ce('0xc9')]=function(_0x47c608){return Promise[_0xd4ce('0xc3')]()[_0xd4ce('0xc0')](cmHopperHistory[_0xd4ce('0xca')](_0x47c608))[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0xcb')));};Dialer[_0xd4ce('0x1e')][_0xd4ce('0xcc')]=function(_0x1f625d){return Promise[_0xd4ce('0xc3')]()['then'](cmHopper[_0xd4ce('0xcc')](_0x1f625d))['catch'](loggerCatch('[rescheduleContact]\x20'));};Dialer['prototype'][_0xd4ce('0xcd')]=function(_0xd4f717,_0x5365d3,_0x3e30f6){return Promise[_0xd4ce('0xc3')]()[_0xd4ce('0xc0')](cmHopper['unlockContact'](_0xd4f717,_0x5365d3,_0x3e30f6))[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0xce')));};Dialer[_0xd4ce('0x1e')][_0xd4ce('0xcf')]=function(_0x59aacc,_0x53f427,_0x5594f4,_0x110067,_0x4e073d){return Promise[_0xd4ce('0xc3')]()['then'](cmHopper[_0xd4ce('0xcf')](_0x59aacc,_0x53f427,_0x5594f4,_0x110067))['catch'](function(_0x3745e4){_0x4e073d[_0xd4ce('0xd0')]-=_0x5594f4;_0x4e073d[_0xd4ce('0xd0')]=_0x4e073d[_0xd4ce('0xd0')]>0x0?_0x4e073d[_0xd4ce('0xd0')]:0x0;loggerCatch('[getContactDialer]\x20')(_0x3745e4);});};Dialer[_0xd4ce('0x1e')][_0xd4ce('0xd1')]=function(_0x1ad8b7,_0x39736a,_0x58020a,_0x201b69){return Promise['resolve']()[_0xd4ce('0xc0')](cmHopper[_0xd4ce('0xd1')](_0x1ad8b7,_0x39736a,_0x58020a))['catch'](function(_0xb2de8a){_0x201b69['temp']-=_0x39736a;_0x201b69[_0xd4ce('0xd0')]=_0x201b69[_0xd4ce('0xd0')]>0x0?_0x201b69[_0xd4ce('0xd0')]:0x0;loggerCatch('[getContactDialerIvr]\x20')(_0xb2de8a);});};Dialer['prototype'][_0xd4ce('0xd2')]=function(_0x2b18f7){return Promise[_0xd4ce('0xc3')]()[_0xd4ce('0xc0')](voiceQueueRt[_0xd4ce('0xd2')](_0x2b18f7))[_0xd4ce('0xb9')](loggerCatch('[getVoiceQueueRtPauses]\x20'));};Dialer['prototype'][_0xd4ce('0xd3')]=function(_0x2dee3f){return Promise[_0xd4ce('0xc3')]()[_0xd4ce('0xc0')](cmHopper[_0xd4ce('0xd3')](_0x2dee3f))[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0xd4')));};Dialer['prototype']['createHistory']=function(_0x213375){return Promise['resolve']()[_0xd4ce('0xc0')](cmHopperHistory['createHistory'](_0x213375))[_0xd4ce('0xb9')](loggerCatch('[createHistory]\x20'));};Dialer[_0xd4ce('0x1e')][_0xd4ce('0xbb')]=function(_0xaee269){if(!_['isUndefined'](_0xaee269)&&_0xaee269!==null){if(typeof _0xaee269['originated']!==_0xd4ce('0xa6')){if(_0xaee269[_0xd4ce('0x79')]>0x0){_0xaee269[_0xd4ce('0x79')]-=0x1;}else{logger[_0xd4ce('0xa3')](_0xd4ce('0xd5'));}}}else{logger['error'](_0xd4ce('0xd6'));}};Dialer[_0xd4ce('0x1e')]['loggerHandler']=function(_0x4b95ff,_0x3509d1){var _0x19b522=this;return function(_0x256a0d){_0x19b522[_0xd4ce('0xbb')](_0x3509d1);logger[_0xd4ce('0xa3')](_0x4b95ff,util[_0xd4ce('0xa2')](_0x256a0d,{'showHidden':![],'depth':null}));};};Dialer[_0xd4ce('0x1e')][_0xd4ce('0xd7')]=function(_0x124367,_0x555ed5,_0x149399){var _0x3efa00={'state':0x19,'statedesc':_0xd4ce('0xd8')};this[_0xd4ce('0xbb')](_0x555ed5);this[_0xd4ce('0xd9')](_['merge'](_0x3efa00,_[_0xd4ce('0xda')](_0x149399,[_0xd4ce('0xdb'),_0xd4ce('0xdc'),_0xd4ce('0xdd'),_0xd4ce('0xde'),_0xd4ce('0xdf')])),_0xd4ce('0xe0'),'[emptyContact]');logger[_0xd4ce('0xa3')](_0x124367);};Dialer[_0xd4ce('0x1e')]['isSuccess']=function(_0x4a9b85){return _0x4a9b85==='Success';};Dialer[_0xd4ce('0x1e')][_0xd4ce('0xe1')]=function(_0x179d69){return!_[_0xd4ce('0x41')](_0x179d69)&&_0x179d69&&!_[_0xd4ce('0x41')](_0x179d69[_0xd4ce('0x44')])&&!_[_0xd4ce('0x41')](_0x179d69[_0xd4ce('0xe2')])&&_0x179d69['active']&&(this[_0xd4ce('0x26')][util[_0xd4ce('0x82')]('SIP/%s',_0x179d69['name'])]['status']===_0xd4ce('0xe3')||this['trunks'][util[_0xd4ce('0x82')](_0xd4ce('0xe4'),_0x179d69[_0xd4ce('0x44')])][_0xd4ce('0xe5')]===_0xd4ce('0xe6'));};Dialer['prototype'][_0xd4ce('0xd9')]=function(_0x4c13b0,_0x1daaae,_0x5383b4){this[_0xd4ce('0xe7')](_0x4c13b0)['catch'](loggerCatch(_0x1daaae));this['moveContactManagedDialer'](_0x4c13b0)[_0xd4ce('0xb9')](loggerCatch(_0x5383b4));};Dialer[_0xd4ce('0x1e')]['syncVarSet']=function(_0x3de1f1){var _0x1a9e64=this;var _0x9c5fca=this['uniqueId'][_0x3de1f1[_0xd4ce('0xe8')]];var _0x2a6e3a;if(!_[_0xd4ce('0xb7')](_0x3de1f1)&&!_[_0xd4ce('0xb7')](_0x3de1f1[_0xd4ce('0xe9')])&&!_[_0xd4ce('0xb7')](_0x3de1f1['variable'][_0xd4ce('0xea')])&&_0x3de1f1[_0xd4ce('0xeb')]===_0xd4ce('0xec')&&_0x9c5fca){if(_0x9c5fca[_0xd4ce('0x50')]!=='ivr'&&this[_0xd4ce('0x23')][_0x9c5fca[_0xd4ce('0xbc')]][_0xd4ce('0xed')]&&_0x3de1f1[_0xd4ce('0xee')]===_0xd4ce('0xef')){delete this[_0xd4ce('0x29')][_0x3de1f1[_0xd4ce('0xe8')]];this['updateOriginated'](this[_0xd4ce('0x23')][_0x9c5fca[_0xd4ce('0xbc')]]);this[_0xd4ce('0x23')][_0x9c5fca[_0xd4ce('0xbc')]][_0xd4ce('0x64')]+=0x1;this[_0xd4ce('0x23')][_0x9c5fca[_0xd4ce('0xbc')]][_0xd4ce('0x63')]+=0x1;_0x2a6e3a=new Hangup(_0x9c5fca,_0x3de1f1);_0x2a6e3a['state']=0x12;_0x2a6e3a[_0xd4ce('0xb1')]=_0xd4ce('0xf0');_0x2a6e3a[_0xd4ce('0xf1')]=_0xd4ce('0xf2');ami[_0xd4ce('0x4f')](_0xd4ce('0xf3'),ut[_0xd4ce('0xf4')](_0x2a6e3a,'amd'));this['saveInDb'](_0x2a6e3a,_0xd4ce('0xf5'),'[syncHangupInAMD]');}if(_0x9c5fca['type']!=='ivr'&&this[_0xd4ce('0x23')][_0x9c5fca[_0xd4ce('0xbc')]][_0xd4ce('0xed')]&&_0x3de1f1['value']==='MACHINE'){return new Promise(function(_0x3063e4,_0x4c7c04){delete _0x1a9e64['uniqueId'][_0x3de1f1[_0xd4ce('0xe8')]];_0x1a9e64[_0xd4ce('0xbb')](_0x1a9e64[_0xd4ce('0x23')][_0x9c5fca[_0xd4ce('0xbc')]]);_0x1a9e64[_0xd4ce('0x23')][_0x9c5fca[_0xd4ce('0xbc')]]['outboundAnswerCallsDay']+=0x1;_0x1a9e64[_0xd4ce('0x23')][_0x9c5fca[_0xd4ce('0xbc')]][_0xd4ce('0x63')]+=0x1;var _0x1cb03=_0x1a9e64[_0xd4ce('0x23')][_0x9c5fca[_0xd4ce('0xbc')]];var _0x2c0d89=new Hangup(_0x9c5fca,_0x3de1f1);_0x2c0d89['state']=0x13;_0x2c0d89['statedesc']='Machine';_0x2c0d89[_0xd4ce('0xf1')]='AMD';_0x2c0d89[_0xd4ce('0xf6')]+=0x1;_0x2c0d89[_0xd4ce('0xf7')]+=0x1;_0x2c0d89[_0xd4ce('0xf8')]=!![];ami['emit']('custom:amd',ut[_0xd4ce('0xf4')](_0x2c0d89,_0xd4ce('0xf8')));_0x1a9e64[_0xd4ce('0xe7')](_0x2c0d89)['catch'](loggerCatch(_0xd4ce('0xf9')));if(_0x2c0d89['countbusyretry']+_0x2c0d89[_0xd4ce('0xfa')]+_0x2c0d89[_0xd4ce('0xfb')]+_0x2c0d89['countnosuchnumberretry']+_0x2c0d89['countdropretry']+_0x2c0d89['countabandonedretry']+_0x2c0d89[_0xd4ce('0xf6')]+_0x2c0d89[_0xd4ce('0xfc')]>=_0x1cb03[_0xd4ce('0xfd')]){_0x1a9e64['stateGlobal'](_0x2c0d89,_0x3063e4,_0x4c7c04,_0xd4ce('0xfe'));}else{if(_0x2c0d89[_0xd4ce('0xf6')]>=_0x1cb03[_0xd4ce('0xff')]){_0x1a9e64[_0xd4ce('0x100')](_0x2c0d89,_0x3063e4,_0x4c7c04,'reason\x2019\x20machine....');}else{_0x1a9e64[_0xd4ce('0xcc')]({'active':![],'countmachineretry':_0x2c0d89['countmachineretry'],'scheduledat':moment()[_0xd4ce('0x101')](_0x1cb03[_0xd4ce('0x102')],_0xd4ce('0x103'))[_0xd4ce('0x82')](_0xd4ce('0x104')),'ContactId':_0x2c0d89[_0xd4ce('0xdb')],'ListId':_0x2c0d89['ListId'],'VoiceQueueId':_0x2c0d89[_0xd4ce('0xde')]||undefined,'CampaignId':_0x2c0d89[_0xd4ce('0xdf')]||undefined})[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x105')));_0x3063e4({'reschedule':0x1});}}});}if(_0x9c5fca[_0xd4ce('0x50')]===_0xd4ce('0x85')&&this[_0xd4ce('0x24')][_0x9c5fca[_0xd4ce('0xbc')]]['dialAMDActive']&&_0x3de1f1[_0xd4ce('0xee')]==='HANGUP'){delete this[_0xd4ce('0x29')][_0x3de1f1[_0xd4ce('0xe8')]];this['updateOriginated'](this[_0xd4ce('0x24')][_0x9c5fca[_0xd4ce('0xbc')]]);_0x2a6e3a=new Hangup(_0x9c5fca,_0x3de1f1);_0x2a6e3a[_0xd4ce('0x106')]=0x12;_0x2a6e3a[_0xd4ce('0xb1')]=_0xd4ce('0xf0');_0x2a6e3a['membername']=_0xd4ce('0xf2');ami['emit']('custom:amd',ut[_0xd4ce('0xf4')](_0x2a6e3a,_0xd4ce('0xf8')));this[_0xd4ce('0xd9')](_0x2a6e3a,'[syncHangupInAMDIvr][createHistory]',_0xd4ce('0x107'));}if(_0x9c5fca[_0xd4ce('0x50')]===_0xd4ce('0x85')&&this[_0xd4ce('0x24')][_0x9c5fca['queue']][_0xd4ce('0xed')]&&_0x3de1f1['value']===_0xd4ce('0x108')){return new Promise(function(_0x6d4cca,_0x6883b5){delete _0x1a9e64[_0xd4ce('0x29')][_0x3de1f1['uniqueid']];_0x1a9e64[_0xd4ce('0xbb')](_0x1a9e64[_0xd4ce('0x24')][_0x9c5fca[_0xd4ce('0xbc')]]);_0x1a9e64[_0xd4ce('0x24')][_0x9c5fca[_0xd4ce('0xbc')]][_0xd4ce('0x64')]+=0x1;_0x1a9e64[_0xd4ce('0x24')][_0x9c5fca[_0xd4ce('0xbc')]][_0xd4ce('0x63')]+=0x1;var _0x23cf85=_0x1a9e64['campaigns'][_0x9c5fca[_0xd4ce('0xbc')]];var _0x5bd33a=new Hangup(_0x9c5fca,_0x3de1f1);_0x5bd33a[_0xd4ce('0x106')]=0x13;_0x5bd33a[_0xd4ce('0xb1')]=_0xd4ce('0x109');_0x5bd33a[_0xd4ce('0xf1')]=_0xd4ce('0xf2');_0x5bd33a[_0xd4ce('0xf6')]+=0x1;_0x5bd33a[_0xd4ce('0xf7')]+=0x1;_0x5bd33a[_0xd4ce('0xf8')]=!![];ami[_0xd4ce('0x4f')](_0xd4ce('0xf3'),ut[_0xd4ce('0xf4')](_0x5bd33a,'amd'));_0x1a9e64[_0xd4ce('0xe7')](_0x5bd33a)[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0xf9')));if(_0x5bd33a[_0xd4ce('0x10a')]+_0x5bd33a[_0xd4ce('0xfa')]+_0x5bd33a[_0xd4ce('0xfb')]+_0x5bd33a[_0xd4ce('0x10b')]+_0x5bd33a[_0xd4ce('0x10c')]+_0x5bd33a[_0xd4ce('0x10d')]+_0x5bd33a[_0xd4ce('0xf6')]+_0x5bd33a[_0xd4ce('0xfc')]>=_0x23cf85['dialGlobalMaxRetry']){_0x1a9e64[_0xd4ce('0x10e')](_0x5bd33a,_0x6d4cca,_0x6883b5,_0xd4ce('0xfe'));}else{if(_0x5bd33a['countmachineretry']>=_0x23cf85[_0xd4ce('0xff')]){_0x1a9e64[_0xd4ce('0x100')](_0x5bd33a,_0x6d4cca,_0x6883b5,'reason\x2019\x20machine....');}else{_0x1a9e64[_0xd4ce('0xcc')]({'active':![],'countmachineretry':_0x5bd33a[_0xd4ce('0xf6')],'scheduledat':moment()[_0xd4ce('0x101')](_0x23cf85[_0xd4ce('0x102')],'minutes')[_0xd4ce('0x82')](_0xd4ce('0x104')),'ContactId':_0x5bd33a[_0xd4ce('0xdb')],'ListId':_0x5bd33a[_0xd4ce('0xdc')],'VoiceQueueId':_0x5bd33a[_0xd4ce('0xde')]||undefined,'CampaignId':_0x5bd33a['CampaignId']||undefined})[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x105')));_0x6d4cca({'reschedule':0x1});}}});}}};Dialer[_0xd4ce('0x1e')][_0xd4ce('0x37')]=function(_0x82ca40){var _0x24f5ed=this[_0xd4ce('0x29')][_0x82ca40['uniqueid']];var _0x314844;if(_0x24f5ed&&_0x24f5ed['type']===_0xd4ce('0x85')){delete this[_0xd4ce('0x29')][_0x82ca40[_0xd4ce('0xe8')]];this[_0xd4ce('0xbb')](this[_0xd4ce('0x24')][_0x24f5ed[_0xd4ce('0xbc')]]);this[_0xd4ce('0x24')][_0x24f5ed[_0xd4ce('0xbc')]][_0xd4ce('0x10f')]+=0x1;_0x314844=new Hangup(_0x24f5ed,_0x82ca40);this['createHistory'](_0x314844)[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x110')));this[_0xd4ce('0xd3')](_0x314844)[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x111')));}if(_0x24f5ed&&_0x24f5ed[_0xd4ce('0x50')]!=='ivr'&&isNotNull(this[_0xd4ce('0x23')][_0x24f5ed[_0xd4ce('0xbc')]]['dialQueueProject'])){delete this[_0xd4ce('0x29')][_0x82ca40[_0xd4ce('0xe8')]];this[_0xd4ce('0xbb')](this[_0xd4ce('0x23')][_0x24f5ed[_0xd4ce('0xbc')]]);this[_0xd4ce('0x23')][_0x24f5ed['queue']][_0xd4ce('0x64')]+=0x1;this['voiceQueues'][_0x24f5ed[_0xd4ce('0xbc')]]['outboundAnswerAgiCallsDay']+=0x1;_0x314844=new Hangup(_0x24f5ed,_0x82ca40);_0x314844[_0xd4ce('0x106')]=0x10;_0x314844[_0xd4ce('0xb1')]='AnswerAGI';_0x314844[_0xd4ce('0xf1')]=_0xd4ce('0x112');this[_0xd4ce('0xe7')](_0x314844)['catch'](loggerCatch(_0xd4ce('0x110')));this[_0xd4ce('0xd3')](_0x314844)[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x111')));}if(_0x24f5ed&&_0x24f5ed[_0xd4ce('0x50')]!=='ivr'&&!isNotNull(this['voiceQueues'][_0x24f5ed['queue']][_0xd4ce('0x113')])){delete this['uniqueId'][_0x82ca40[_0xd4ce('0xe8')]];this[_0xd4ce('0xbb')](this[_0xd4ce('0x23')][_0x24f5ed['queue']]);this[_0xd4ce('0x23')][_0x24f5ed[_0xd4ce('0xbc')]][_0xd4ce('0x6e')]+=0x1;_0x314844=new Hangup(_0x24f5ed,_0x82ca40);_0x314844[_0xd4ce('0x106')]=0xc;_0x314844[_0xd4ce('0xb1')]=_0x82ca40[_0xd4ce('0x114')];_0x314844[_0xd4ce('0xf1')]=_0xd4ce('0x115');this['createHistory'](_0x314844)['catch'](loggerCatch(_0xd4ce('0x110')));this['moveContactManagedDialer'](_0x314844)[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x111')));}};Dialer[_0xd4ce('0x1e')][_0xd4ce('0x116')]=function(_0x4ba0bf){var _0x59fae1=this[_0xd4ce('0x29')][_0x4ba0bf['uniqueid']];if(this['voiceQueues'][_0x4ba0bf['queue']]){if(_0x59fae1&&_0x59fae1[_0xd4ce('0x50')]!==_0xd4ce('0x85')){delete this[_0xd4ce('0x29')][_0x4ba0bf[_0xd4ce('0xe8')]];this['voiceQueues'][_0x4ba0bf[_0xd4ce('0xbc')]]['outboundAnswerCallsDay']+=0x1;var _0x8fd731=new AgentComplete(_0x59fae1,_0x4ba0bf);if(_0x4ba0bf[_0xd4ce('0x117')]===_0xd4ce('0x118')){_0x8fd731[_0xd4ce('0x119')]=this[_0xd4ce('0x23')][_0x4ba0bf['queue']][_0xd4ce('0x11a')]&&this[_0xd4ce('0x23')][_0x4ba0bf[_0xd4ce('0xbc')]][_0xd4ce('0x11b')]?moment()[_0xd4ce('0x82')]('YYYY-MM-DD\x20HH:mm:ss'):undefined;}this[_0xd4ce('0xe7')](_0x8fd731)[_0xd4ce('0xb9')](loggerCatch('[syncAgentComplete][createHistory]'));this['moveContactManagedDialer'](_0x8fd731)[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x11c')));}}};Dialer[_0xd4ce('0x1e')][_0xd4ce('0x2d')]=function(_0x317df7){if(this[_0xd4ce('0x23')][_0x317df7[_0xd4ce('0xbc')]]){if(this['uniqueId'][_0x317df7['uniqueid']]&&this[_0xd4ce('0x29')][_0x317df7[_0xd4ce('0xe8')]]['type']!==_0xd4ce('0x85')){this[_0xd4ce('0xbb')](this[_0xd4ce('0x23')][_0x317df7[_0xd4ce('0xbc')]]);this['uniqueId'][_0x317df7[_0xd4ce('0xe8')]]['answertime']=moment()[_0xd4ce('0x82')]('YYYY-MM-DD\x20HH:mm:ss');}}};Dialer[_0xd4ce('0x1e')]['queueCallerAbandonCreateState']=function(_0x41260b,_0x3d775c){this[_0xd4ce('0xe7')](_0x41260b)['catch'](loggerCatch(_0xd4ce('0x11d')));if(_0x3d775c==0x0){this[_0xd4ce('0xd3')](_0x41260b)[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x11e')));}};Dialer[_0xd4ce('0x1e')][_0xd4ce('0x2f')]=function(_0x284cb5){var _0x4d02be=this[_0xd4ce('0x29')][_0x284cb5[_0xd4ce('0xe8')]];var _0x332842=this;var _0x7fe9e6=![];var _0x2db800;var _0x52353c;if(this[_0xd4ce('0x23')][_0x284cb5[_0xd4ce('0xbc')]]){if(_0x4d02be&&_0x4d02be[_0xd4ce('0x50')]!=='ivr'){delete this[_0xd4ce('0x29')][_0x284cb5[_0xd4ce('0xe8')]];this[_0xd4ce('0xbb')](this[_0xd4ce('0x23')][_0x284cb5[_0xd4ce('0xbc')]]);_0x4d02be['droptime']=moment()['format'](_0xd4ce('0x104'));var _0x5ee861=new QueueCallerAbandon(_0x4d02be,_0x284cb5);if(getSeconds(_0x4d02be[_0xd4ce('0x11f')],_0x4d02be[_0xd4ce('0x120')])>=_0x4d02be[_0xd4ce('0x121')]){this[_0xd4ce('0x23')][_0x284cb5['queue']][_0xd4ce('0x73')]+=0x1;this[_0xd4ce('0x23')][_0x284cb5[_0xd4ce('0xbc')]][_0xd4ce('0x68')]+=0x1;this[_0xd4ce('0x23')][_0x284cb5['queue']][_0xd4ce('0x75')]+=0x1;_0x5ee861[_0xd4ce('0x106')]=0xa;_0x5ee861[_0xd4ce('0xb1')]='Drop';_0x5ee861['dropreason']=_0xd4ce('0x122');_0x5ee861['agiafterat']=this['voiceQueues'][_0x284cb5['queue']][_0xd4ce('0x11a')]?moment()[_0xd4ce('0x82')](_0xd4ce('0x104')):undefined;_0x5ee861[_0xd4ce('0x10c')]+=0x1;_0x5ee861[_0xd4ce('0xf7')]+=0x1;_0x2db800=this['voiceQueues'][_0x284cb5[_0xd4ce('0xbc')]][_0xd4ce('0x123')];_0x52353c=this[_0xd4ce('0x23')][_0x284cb5[_0xd4ce('0xbc')]]['callAdditionalPhoneAfterMin'];_0x332842[_0xd4ce('0xc5')](_0x5ee861,_0x5ee861[_0xd4ce('0x106')],_0x4d02be[_0xd4ce('0x124')])[_0xd4ce('0xc0')](function(_0x1cda30){_0x7fe9e6=_0x1cda30['additional']==0x1;if(_0x5ee861[_0xd4ce('0x10c')]>=_0x332842[_0xd4ce('0x23')][_0x284cb5[_0xd4ce('0xbc')]][_0xd4ce('0x125')]){_0x332842['queueCallerAbandonCreateState'](_0x5ee861,_0x1cda30[_0xd4ce('0x126')]);}else{_0x332842[_0xd4ce('0xcc')]({'active':![],'countdropretry':_0x5ee861[_0xd4ce('0x10c')],'scheduledat':moment()['add'](_0x332842['voiceQueues'][_0x284cb5[_0xd4ce('0xbc')]][_0xd4ce('0x123')],_0xd4ce('0x103'))[_0xd4ce('0x82')](_0xd4ce('0x104')),'ContactId':_0x4d02be['ContactId'],'ListId':_0x4d02be[_0xd4ce('0xdc')],'VoiceQueueId':_0x4d02be['VoiceQueueId']||undefined,'CampaignId':_0x4d02be[_0xd4ce('0xdf')]||undefined})[_0xd4ce('0xb9')](loggerCatch('[rescheduleContact][Drop]'));var _0x3218a9=new History(_0x5ee861);_0x3218a9['state']=0xa;_0x3218a9[_0xd4ce('0xb1')]='Drop';_0x3218a9[_0xd4ce('0xb2')]=moment()[_0xd4ce('0x82')](_0xd4ce('0x104'));_0x3218a9['endtime']=_0x3218a9['starttime'];_0x3218a9[_0xd4ce('0x127')]=_0x5ee861[_0xd4ce('0x127')];_0x3218a9[_0xd4ce('0x128')]=_0x5ee861[_0xd4ce('0x128')];_0x332842[_0xd4ce('0xe7')](_0x3218a9)[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x129')));}})['then'](function(){if(_0x7fe9e6)_0x332842[_0xd4ce('0xc7')](_0x5ee861,_0x2db800,_0x52353c)[_0xd4ce('0xc0')](function(){return 0x1;});});}else{this[_0xd4ce('0x23')][_0x284cb5['queue']][_0xd4ce('0x72')]+=0x1;this[_0xd4ce('0x23')][_0x284cb5[_0xd4ce('0xbc')]][_0xd4ce('0x67')]+=0x1;_0x5ee861['state']=0xb;_0x5ee861[_0xd4ce('0xb1')]=_0xd4ce('0x12a');_0x5ee861[_0xd4ce('0x12b')]=_0xd4ce('0x12c');_0x5ee861[_0xd4ce('0x10d')]+=0x1;_0x5ee861['countglobal']+=0x1;_0x2db800=this[_0xd4ce('0x23')][_0x284cb5['queue']][_0xd4ce('0x12d')];_0x52353c=this[_0xd4ce('0x23')][_0x284cb5[_0xd4ce('0xbc')]][_0xd4ce('0x12e')];_0x332842[_0xd4ce('0xc5')](_0x5ee861,_0x5ee861[_0xd4ce('0x106')],_0x4d02be[_0xd4ce('0x124')])[_0xd4ce('0xc0')](function(_0x2aa193){if(_0x5ee861['countabandonedretry']>=_0x332842['voiceQueues'][_0x284cb5[_0xd4ce('0xbc')]][_0xd4ce('0x12f')]){_0x332842[_0xd4ce('0x130')](_0x5ee861,_0x2aa193['additional']);}else{_0x332842[_0xd4ce('0xcc')]({'active':![],'countabandonedretry':_0x5ee861[_0xd4ce('0x10d')],'scheduledat':moment()['add'](_0x332842['voiceQueues'][_0x284cb5[_0xd4ce('0xbc')]][_0xd4ce('0x12d')],_0xd4ce('0x103'))[_0xd4ce('0x82')](_0xd4ce('0x104')),'ContactId':_0x4d02be['ContactId'],'ListId':_0x4d02be[_0xd4ce('0xdc')],'VoiceQueueId':_0x4d02be[_0xd4ce('0xde')]||undefined,'CampaignId':_0x4d02be[_0xd4ce('0xdf')]||undefined})[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x131')));var _0x1eb764=new History(_0x5ee861);_0x1eb764[_0xd4ce('0x106')]=0xb;_0x1eb764['statedesc']=_0xd4ce('0x12a');_0x1eb764[_0xd4ce('0xb2')]=moment()[_0xd4ce('0x82')]('YYYY-MM-DD\x20HH:mm:ss');_0x1eb764[_0xd4ce('0x132')]=_0x1eb764[_0xd4ce('0xb2')];_0x1eb764[_0xd4ce('0x127')]=_0x5ee861[_0xd4ce('0x127')];_0x1eb764[_0xd4ce('0x128')]=_0x5ee861[_0xd4ce('0x128')];_0x332842[_0xd4ce('0xe7')](_0x1eb764)[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x133')));}})['then'](function(){if(_0x7fe9e6)_0x332842[_0xd4ce('0xc7')](_0x5ee861,_0x2db800,_0x52353c)['then'](function(){return 0x1;});});}}}};Dialer[_0xd4ce('0x1e')][_0xd4ce('0x39')]=function(_0x3a928e){if(this[_0xd4ce('0xb5')][_0x3a928e[_0xd4ce('0xe8')]]){this[_0xd4ce('0xb5')][_0x3a928e[_0xd4ce('0xe8')]]['channel']=_0x3a928e[_0xd4ce('0xb8')];}if(this[_0xd4ce('0x29')][_0x3a928e[_0xd4ce('0xe8')]]){this['uniqueId'][_0x3a928e['uniqueid']][_0xd4ce('0xb8')]=_0x3a928e[_0xd4ce('0xb8')];}};Dialer['prototype'][_0xd4ce('0x3c')]=function(_0x381a16){if(strategy[this['voiceQueues'][this[_0xd4ce('0xb5')][_0x381a16['actionid']][_0xd4ce('0xbc')]][_0xd4ce('0x52')]]===_0xd4ce('0x1d')){if(this[_0xd4ce('0xb5')][_0x381a16[_0xd4ce('0x134')]]&&_[_0xd4ce('0xb7')](this[_0xd4ce('0xb5')][_0x381a16[_0xd4ce('0x134')]][_0xd4ce('0x135')])&&_0x381a16[_0xd4ce('0xe5')]==='1'&&_0x381a16[_0xd4ce('0x136')]==='0'){if(this[_0xd4ce('0x25')][_0x381a16['stateinterface']]){if(!this[_0xd4ce('0x25')][_0x381a16[_0xd4ce('0x137')]][_0xd4ce('0x135')]){this['agents'][_0x381a16[_0xd4ce('0x137')]][_0xd4ce('0x135')]=!![];this[_0xd4ce('0xb5')][_0x381a16[_0xd4ce('0x134')]][_0xd4ce('0x135')]=!![];this[_0xd4ce('0xb5')][_0x381a16[_0xd4ce('0x134')]][_0xd4ce('0x137')]=_0x381a16[_0xd4ce('0x137')];}}}}else if((strategy[this[_0xd4ce('0x23')][this[_0xd4ce('0xb5')][_0x381a16[_0xd4ce('0x134')]][_0xd4ce('0xbc')]]['strategy']]||_0xd4ce('0x138'))===_0xd4ce('0x138')){if(this[_0xd4ce('0xb5')][_0x381a16[_0xd4ce('0x134')]]){if(this[_0xd4ce('0x25')][_0x381a16['stateinterface']]){this[_0xd4ce('0xb5')][_0x381a16[_0xd4ce('0x134')]][_0xd4ce('0x137')]=_0x381a16[_0xd4ce('0x137')];if(_[_0xd4ce('0xb7')](this['queueBooked'][this['actions'][_0x381a16[_0xd4ce('0x134')]][_0xd4ce('0xbc')]])){this[_0xd4ce('0x139')][this[_0xd4ce('0xb5')][_0x381a16[_0xd4ce('0x134')]]['queue']]=[];}this[_0xd4ce('0x139')][this[_0xd4ce('0xb5')][_0x381a16['actionid']]['queue']][_0xd4ce('0x13a')](_[_0xd4ce('0x98')](_['pick'](this['actions'][_0x381a16['actionid']],[_0xd4ce('0x13b'),_0xd4ce('0x137')]),{'status':_0x381a16[_0xd4ce('0xe5')],'paused':_0x381a16[_0xd4ce('0x136')]}));}}}};function unlockQueueStatus(_0x2c29d1,_0x2cbde5){setTimeout(function(){if(_[_0xd4ce('0x41')](_0x2c29d1[_0xd4ce('0x13c')])){loggerBooked['error'](_0xd4ce('0x13d'),_0x2cbde5);}_0x2c29d1[_0xd4ce('0x13c')]=!![];loggerBooked[_0xd4ce('0x87')](_0xd4ce('0x13e'),_0x2cbde5,JSON[_0xd4ce('0x4c')](_[_0xd4ce('0xda')](_0x2c29d1,[_0xd4ce('0x44'),_0xd4ce('0x13c')])));},0x1f3);}Dialer[_0xd4ce('0x1e')]['syncQueueStatusComplete']=function(_0x29d6c0){var _0x6dd063=this;var _0x8ee088=_0x6dd063[_0xd4ce('0x23')][_0x6dd063['actions'][_0x29d6c0[_0xd4ce('0x134')]][_0xd4ce('0xbc')]];if(strategy[this[_0xd4ce('0x23')][this[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]][_0xd4ce('0xbc')]][_0xd4ce('0x52')]]==='roundrobin'){if(this[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]]&&this[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]]['stateinterface']){this[_0xd4ce('0x13f')][_0xd4ce('0x140')](this['actions'][_0x29d6c0['actionid']]['idHopper'],this[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]]['stateinterface'])[_0xd4ce('0xb9')](function(_0x1d4e94){logger[_0xd4ce('0xa3')](_0xd4ce('0x141'),util[_0xd4ce('0xa2')](_0x1d4e94,{'showHidden':![],'depth':null}));})[_0xd4ce('0x21')](function(){_0x6dd063[_0xd4ce('0xbb')](_0x6dd063[_0xd4ce('0x23')][_0x6dd063['actions'][_0x29d6c0[_0xd4ce('0x134')]]['queue']]);_0x6dd063['agents'][_0x6dd063['actions'][_0x29d6c0[_0xd4ce('0x134')]][_0xd4ce('0x137')]]['locked']=![];delete _0x6dd063[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]];unlockQueueStatus(_0x8ee088);});}else{this[_0xd4ce('0xbb')](this['voiceQueues'][this['actions'][_0x29d6c0[_0xd4ce('0x134')]][_0xd4ce('0xbc')]]);this['rescheduleContact']({'active':![],'ContactId':this[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]][_0xd4ce('0xdb')],'ListId':this[_0xd4ce('0xb5')][_0x29d6c0['actionid']]['ListId'],'VoiceQueueId':this[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]]['VoiceQueueId']||undefined,'CampaignId':this[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]]['CampaignId']||undefined})['catch'](loggerCatch(_0xd4ce('0x142')));delete this['actions'][_0x29d6c0['actionid']];unlockQueueStatus(_0x8ee088);}}else if((strategy[this['voiceQueues'][this[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]][_0xd4ce('0xbc')]][_0xd4ce('0x52')]]||_0xd4ce('0x138'))===_0xd4ce('0x138')){var _0x2ede8f;if(this['actions'][_0x29d6c0[_0xd4ce('0x134')]]&&!_['isEmpty'](this[_0xd4ce('0x139')][this[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]][_0xd4ce('0xbc')]])){if(this['queueBookedRR'][_0x6dd063[_0xd4ce('0xb5')][_0x29d6c0['actionid']][_0xd4ce('0xbc')]]){this[_0xd4ce('0x2c')][_0x6dd063['actions'][_0x29d6c0[_0xd4ce('0x134')]]['queue']]=this[_0xd4ce('0x2c')][this['actions'][_0x29d6c0[_0xd4ce('0x134')]][_0xd4ce('0xbc')]]?this[_0xd4ce('0x2c')][this[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]][_0xd4ce('0xbc')]]:this[_0xd4ce('0x139')][this[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]][_0xd4ce('0xbc')]]?this[_0xd4ce('0x139')][this[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]][_0xd4ce('0xbc')]]['_rr']||0x0:0x0;}this[_0xd4ce('0x139')][this[_0xd4ce('0xb5')][_0x29d6c0['actionid']][_0xd4ce('0xbc')]][_0xd4ce('0x143')]=this[_0xd4ce('0x2c')][this[_0xd4ce('0xb5')][_0x29d6c0['actionid']][_0xd4ce('0xbc')]];for(var _0x46b122=0x0;_0x46b122<this[_0xd4ce('0x139')][this[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]][_0xd4ce('0xbc')]][_0xd4ce('0xa5')];_0x46b122+=0x1){_0x2ede8f=rr(this[_0xd4ce('0x139')][this[_0xd4ce('0xb5')][_0x29d6c0['actionid']][_0xd4ce('0xbc')]]);this[_0xd4ce('0x2c')][_0x6dd063[_0xd4ce('0xb5')][_0x29d6c0['actionid']][_0xd4ce('0xbc')]]=this[_0xd4ce('0x139')][this[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]][_0xd4ce('0xbc')]][_0xd4ce('0x143')];if(_0x2ede8f[_0xd4ce('0xe5')]==='1'&&_0x2ede8f[_0xd4ce('0x136')]==='0'){break;}}if(!_[_0xd4ce('0xb7')](_0x2ede8f)){this[_0xd4ce('0x25')][_0x2ede8f['stateinterface']][_0xd4ce('0x144')]=_[_0xd4ce('0x41')](this[_0xd4ce('0x25')][_0x2ede8f[_0xd4ce('0x137')]][_0xd4ce('0x144')])?!![]:this['agents'][_0x2ede8f[_0xd4ce('0x137')]][_0xd4ce('0x144')];}loggerBooked[_0xd4ce('0x87')](_0xd4ce('0x145'),_0x29d6c0[_0xd4ce('0x134')],_0xd4ce('0x146'),JSON[_0xd4ce('0x4c')](_[_0xd4ce('0xda')](this[_0xd4ce('0x25')][_0x2ede8f['stateinterface']],[_0xd4ce('0x44'),_0xd4ce('0x144')])),_0xd4ce('0x147'),JSON[_0xd4ce('0x4c')](_0x2ede8f[_0xd4ce('0x13b')]));if(!_[_0xd4ce('0xb7')](_0x2ede8f)&&_0x2ede8f['status']==='1'&&_0x2ede8f[_0xd4ce('0x136')]==='0'&&this['agents'][_0x2ede8f[_0xd4ce('0x137')]]['unlockRR']){this[_0xd4ce('0x25')][_0x2ede8f['stateinterface']][_0xd4ce('0x144')]=![];this['queueBooked'][_0x6dd063[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]][_0xd4ce('0xbc')]]=[];this[_0xd4ce('0x13f')][_0xd4ce('0x140')](_0x2ede8f['idHopper'],_0x2ede8f['stateinterface'])['catch'](function(_0x582f19){logger['error'](_0xd4ce('0x141'),util[_0xd4ce('0xa2')](_0x582f19,{'showHidden':![],'depth':null}));})['finally'](function(){_0x6dd063[_0xd4ce('0xbb')](_0x6dd063[_0xd4ce('0x23')][_0x6dd063['actions'][_0x29d6c0[_0xd4ce('0x134')]][_0xd4ce('0xbc')]]);setTimeout(function(){_0x6dd063['agents'][_0x2ede8f[_0xd4ce('0x137')]]['unlockRR']=!![];loggerBooked['info'](_0xd4ce('0x148'),_0x29d6c0[_0xd4ce('0x134')],'Agent:\x20',JSON['stringify'](_[_0xd4ce('0xda')](_0x6dd063['agents'][_0x2ede8f[_0xd4ce('0x137')]],[_0xd4ce('0x44'),_0xd4ce('0x144')])),_0xd4ce('0x147'),JSON[_0xd4ce('0x4c')](_0x2ede8f['idHopper']));},0xc7);delete _0x6dd063[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]];unlockQueueStatus(_0x8ee088,_0x29d6c0[_0xd4ce('0x134')]);});}else{loggerBooked['info']('[booked][unlock]');this[_0xd4ce('0xbb')](this[_0xd4ce('0x23')][this['actions'][_0x29d6c0[_0xd4ce('0x134')]][_0xd4ce('0xbc')]]);this[_0xd4ce('0xcc')]({'active':![],'ContactId':this[_0xd4ce('0xb5')][_0x29d6c0['actionid']][_0xd4ce('0xdb')],'ListId':this[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]]['ListId'],'VoiceQueueId':this[_0xd4ce('0xb5')][_0x29d6c0['actionid']][_0xd4ce('0xde')]||undefined,'CampaignId':this[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]][_0xd4ce('0xdf')]||undefined})[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x142')));delete this['actions'][_0x29d6c0[_0xd4ce('0x134')]];unlockQueueStatus(_0x8ee088);}}else{loggerBooked[_0xd4ce('0x87')](_0xd4ce('0x149'));this[_0xd4ce('0xbb')](this[_0xd4ce('0x23')][this[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]][_0xd4ce('0xbc')]]);this[_0xd4ce('0xcc')]({'active':![],'ContactId':this[_0xd4ce('0xb5')][_0x29d6c0['actionid']][_0xd4ce('0xdb')],'ListId':this[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]][_0xd4ce('0xdc')],'VoiceQueueId':this[_0xd4ce('0xb5')][_0x29d6c0['actionid']][_0xd4ce('0xde')]||undefined,'CampaignId':this['actions'][_0x29d6c0[_0xd4ce('0x134')]][_0xd4ce('0xdf')]||undefined})[_0xd4ce('0xb9')](loggerCatch('[unlock2][syncQueueStatusComplete]'));delete this[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]];unlockQueueStatus(_0x8ee088);}}else{loggerBooked[_0xd4ce('0x87')](_0xd4ce('0x14a'));this['updateOriginated'](this[_0xd4ce('0x23')][this[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]][_0xd4ce('0xbc')]]);this[_0xd4ce('0xcc')]({'active':![],'ContactId':this[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]][_0xd4ce('0xdb')],'ListId':this['actions'][_0x29d6c0[_0xd4ce('0x134')]][_0xd4ce('0xdc')],'VoiceQueueId':this[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]]['VoiceQueueId']||undefined,'CampaignId':this[_0xd4ce('0xb5')][_0x29d6c0['actionid']][_0xd4ce('0xdf')]||undefined})['catch'](loggerCatch(_0xd4ce('0x14b')));delete this[_0xd4ce('0xb5')][_0x29d6c0['actionid']];unlockQueueStatus(_0x8ee088);}};Dialer[_0xd4ce('0x1e')][_0xd4ce('0x3e')]=function(){var _0x2ad83f=this;return cmHopper['resetActiveCalls']({'active':![]},{'where':{'active':!![]}})[_0xd4ce('0xc0')](function(){setInterval(function(){_0x2ad83f['syncCampaigns']();},0x3e8);});};Dialer[_0xd4ce('0x1e')]['checkIsTrunkReachable']=function(_0x5a3d6f){var _0x50c9ee=this;return function(){if(!_0x50c9ee[_0xd4ce('0xe1')](_0x5a3d6f[_0xd4ce('0x7f')])){if(!_0x50c9ee['isTrunkReachable'](_0x5a3d6f[_0xd4ce('0x14c')])){_0x5a3d6f[_0xd4ce('0x42')]=_0xd4ce('0x14d');throw _0x5a3d6f['name']+'\x20trunk\x20is\x20not\x20reachable';}}};};Dialer[_0xd4ce('0x1e')][_0xd4ce('0x14e')]=function(_0x27ffb3,_0xa18ed2,_0x3fdeb9,_0x265c61){var _0x3ebd2c=this;return function(){var _0x388b84=!![];return _0x3ebd2c[_0xd4ce('0x14f')](_0x27ffb3,_0xa18ed2,_0x3fdeb9,_0x265c61,_0x388b84);};};Dialer[_0xd4ce('0x1e')][_0xd4ce('0x150')]=function(_0x18dfb3,_0x1102f0,_0x524191,_0x3fb429){var _0x3e8d88=this;return function(){var _0xa84ffa=![];return _0x3e8d88[_0xd4ce('0x14f')](_0x18dfb3[_0xd4ce('0x49')],_0x1102f0,_0x524191,_0x3fb429,_0xa84ffa);};};Dialer[_0xd4ce('0x1e')][_0xd4ce('0x14f')]=function(_0x56d8e4,_0x2babe9,_0x49cd0f,_0x474a14,_0x368f8e){var _0x3444f1=[];return new Promise(function(_0x2e76bf,_0x2fe957){if(!isNotNull(_0x56d8e4)){_0x474a14[_0xd4ce('0x42')]=_0xd4ce('0x4a');return _0x2fe957(msgResponse('ifTime',_0xd4ce('0x151'),_0x49cd0f+_0xd4ce('0x152')));}if(_[_0xd4ce('0x4b')](_0x56d8e4)){_0x474a14['message']=_0xd4ce('0x153');return _0x2fe957(msgResponse(_0xd4ce('0x14f'),_0xd4ce('0x151'),_0x49cd0f+_0xd4ce('0x154')));}if(_0x2babe9&&_['isUndefined'](config[_0xd4ce('0x155')][_0x2babe9])){_0x474a14[_0xd4ce('0x42')]=_0xd4ce('0x156');return _0x2fe957(msgResponse(_0xd4ce('0x14f'),'Failure',_0x49cd0f+_0xd4ce('0x157')+_0x2babe9));}if(_[_0xd4ce('0x158')](_0x56d8e4)){for(var _0x196971=0x0;_0x196971<_0x56d8e4[_0xd4ce('0xa5')];_0x196971+=0x1){_0x3444f1['push'](ami['Action']({'action':_0xd4ce('0x159'),'command':util['format'](_0xd4ce('0x15a'),_0x56d8e4[_0x196971][_0xd4ce('0x15b')],!_[_0xd4ce('0x41')](config[_0xd4ce('0x155')][_0x2babe9])?_0x2babe9:'')})[_0xd4ce('0xc0')](function(_0x5ddcb6){return _0x5ddcb6['content'][_0xd4ce('0x15c')]('true')>=0x0;})[_0xd4ce('0xb9')](myreject(_0x2fe957)));}}else{_0x3444f1['push'](ami[_0xd4ce('0x15d')]({'action':_0xd4ce('0x159'),'command':util[_0xd4ce('0x82')](_0xd4ce('0x15a'),_0x56d8e4,!_[_0xd4ce('0x41')](config[_0xd4ce('0x155')][_0x2babe9])?_0x2babe9:'')})[_0xd4ce('0xc0')](function(_0x3e2c1d){return _0x3e2c1d[_0xd4ce('0x15e')][_0xd4ce('0x15c')]('true')>=0x0;})[_0xd4ce('0xb9')](myreject(_0x2fe957)));}Promise[_0xd4ce('0x15f')](_0x3444f1)[_0xd4ce('0xc0')](function(_0x2fca14){var _0x5e0215=_[_0xd4ce('0x160')](_0x2fca14);if(_0x5e0215){return _0x2e76bf(_0x5e0215);}else{_0x474a14['message']=_0x368f8e?_0xd4ce('0x161'):_0xd4ce('0x162');return _0x2fe957(msgResponse(_0xd4ce('0x163'),_0xd4ce('0x151'),_0xd4ce('0x164')+_0x368f8e+'\x20'+_0x49cd0f+_0xd4ce('0x165')+util['inspect'](_0x56d8e4,{'showHidden':![],'depth':null})+_0xd4ce('0x166')+_0x2babe9));}})['catch'](function(_0x324bea){return _0x2fe957(msgResponse('ifTime',_0xd4ce('0x151'),JSON[_0xd4ce('0x4c')](_0x324bea)));});});};Dialer[_0xd4ce('0x1e')]['checkDialMethod']=function(_0x1b3df8){var _0x178b03=this;return function(){switch(_0x1b3df8[_0xd4ce('0x5e')]){case'progressive':freeVariablesPredictive(_0x1b3df8);_0x178b03[_0xd4ce('0x167')](_0x1b3df8,0x1);break;case _0xd4ce('0x168'):freeVariablesPredictive(_0x1b3df8);_0x178b03[_0xd4ce('0x167')](_0x1b3df8,_0x1b3df8['dialPowerLevel']);break;case _0xd4ce('0x169'):_0x178b03[_0xd4ce('0x169')](_0x1b3df8);break;case'booked':freeVariablesPredictive(_0x1b3df8);_0x178b03[_0xd4ce('0x167')](_0x1b3df8,0x1);break;default:freeVariablesPredictive(_0x1b3df8);logger['error'](_0xd4ce('0x16a'),_0x1b3df8['name'],'method\x20not\x20recognized');}};};Dialer['prototype'][_0xd4ce('0x16b')]=function(_0x514e81){return Promise['resolve']()[_0xd4ce('0xc0')](cmHopper[_0xd4ce('0x16c')](_0x514e81['id'],previewRecallmeReminderInterval))[_0xd4ce('0xc0')](function(_0x3cb478){for(var _0x5653f3=0x0;_0x5653f3<_0x3cb478[_0xd4ce('0xa5')];_0x5653f3++){var _0x10773c=_0x3cb478[_0x5653f3]['Agent'][_0xd4ce('0x44')];if(_0x10773c)io['to'](util['format'](_0xd4ce('0x16d'),_0x10773c))['emit']('user:dialPreviewRecallReminder',{'hopper':_0x3cb478[_0x5653f3]});}})[_0xd4ce('0xb9')](function(){});};Dialer[_0xd4ce('0x1e')][_0xd4ce('0x16e')]=function(_0x4b8c86){var _0x274a94=this;return function(){_0x274a94['handleIvr'](_0x4b8c86);};};Dialer[_0xd4ce('0x1e')][_0xd4ce('0xb')]=function(_0x748525){var _0x54f564=this;if(isNotPreview(_0x748525[_0xd4ce('0x5e')])){if(isVoiceQueueOutbound(_0x748525['type'])&&isActive(_0x748525[_0xd4ce('0x5d')])){_0x748525[_0xd4ce('0xac')]=!![];Promise['resolve']()[_0xd4ce('0xc0')](checkIsLoggedIn(_0x748525,_0x748525[_0xd4ce('0x55')]))['then'](checkIsActive(_0x748525,_0x748525[_0xd4ce('0x5d')]))['then'](checkInterval(_0x748525))[_0xd4ce('0xc0')](_0x54f564['checkIsTrunkReachable'](_0x748525))[_0xd4ce('0xc0')](_0x54f564['checkIfTime'](_0x748525[_0xd4ce('0x16f')],_0x748525[_0xd4ce('0x170')],_0x748525['name'],_0x748525))['then'](_0x54f564[_0xd4ce('0x150')](_0x748525[_0xd4ce('0x48')],_0x748525[_0xd4ce('0x170')],_0x748525[_0xd4ce('0x44')],_0x748525))[_0xd4ce('0xc0')](_0x54f564['checkDialMethod'](_0x748525))[_0xd4ce('0xb9')](loggerCatchQueueSummary(_0xd4ce('0x171'),_0x748525));}else{notSendMessagesQueue(_0x748525);}}else{freeVariablesPredictive(_0x748525);}};Dialer[_0xd4ce('0x1e')][_0xd4ce('0x35')]=_[_0xd4ce('0x172')](function(){var _0x30c733=_['filter'](this[_0xd4ce('0x23')],function(_0x505d95){return _0x505d95[_0xd4ce('0x173')];});var _0x2adf5c=_[_0xd4ce('0x174')](this[_0xd4ce('0x25')],function(_0x4e438d){return _0x4e438d[_0xd4ce('0x175')]&&_0x4e438d[_0xd4ce('0xe5')]===_0xd4ce('0xe3');});if(_0x30c733['length']>0x0&&_0x2adf5c[_0xd4ce('0xa5')]>0x0){return Promise[_0xd4ce('0xc3')]()[_0xd4ce('0xc0')](cmHopper['handlePreviewRecallNotifications'](_[_0xd4ce('0x176')](_0x30c733,'id'),previewRecallmeReminderInterval,_[_0xd4ce('0x176')](_0x2adf5c,'id')))[_0xd4ce('0xc0')](function(_0x4148af){for(var _0x5df745=0x0;_0x5df745<_0x4148af['length'];_0x5df745++){var _0x3e2471=_0x4148af[_0x5df745][_0xd4ce('0x177')][_0xd4ce('0x44')];if(_0x3e2471)io['to'](util['format']('user:%s',_0x3e2471))[_0xd4ce('0x4f')](_0xd4ce('0x178'),{'hopper':_0x4148af[_0x5df745]});}})[_0xd4ce('0xb9')](function(_0x15381e){logger[_0xd4ce('0xa3')](_0xd4ce('0x16b'),_0x15381e);});}},0x3c*0x3e8,{'leading':!![]});Dialer[_0xd4ce('0x1e')]['syncCampaigns']=function(){var _0x5253e9=this;var _0x5b2f2a;for(var _0x2404cb in this[_0xd4ce('0x24')]){if(typeof this[_0xd4ce('0x24')][_0x2404cb]!==_0xd4ce('0xa6')){_0x5b2f2a=this[_0xd4ce('0x24')][_0x2404cb];if(isCampaignIvr(_0x5b2f2a[_0xd4ce('0x50')])&&isActive(_0x5b2f2a['active'])){_0x5b2f2a[_0xd4ce('0xac')]=!![];Promise[_0xd4ce('0xc3')]()[_0xd4ce('0xc0')](checkIsActive(_0x5b2f2a,_0x5b2f2a[_0xd4ce('0xe2')]))[_0xd4ce('0xc0')](checkInterval(_0x5b2f2a))['then'](_0x5253e9[_0xd4ce('0x179')](_0x5b2f2a))[_0xd4ce('0xc0')](_0x5253e9[_0xd4ce('0x14e')](_0x5b2f2a['dialGlobalInterval'],_0x5b2f2a['dialTimezone'],_0x5b2f2a[_0xd4ce('0x44')],_0x5b2f2a))[_0xd4ce('0xc0')](_0x5253e9[_0xd4ce('0x150')](_0x5b2f2a['Interval'],_0x5b2f2a[_0xd4ce('0x170')],_0x5b2f2a[_0xd4ce('0x44')],_0x5b2f2a))[_0xd4ce('0xc0')](_0x5253e9[_0xd4ce('0x16e')](_0x5b2f2a))[_0xd4ce('0xb9')](loggerCatchQueueSummary(_0xd4ce('0x17a'),_0x5b2f2a));}else{notSendMessagesCampaign(_0x5b2f2a);}}}};function getCallerIdRandom(_0x48c49f,_0xb43c62){var _0xb601e6;var _0xc3702d;var _0x59b23c;if(_0xb43c62<=0x0){_0xb43c62=0x1;}_0xb601e6=new RegExp(_0xd4ce('0x17b')+_0xb43c62+'}$');_0xc3702d=Math[_0xd4ce('0x17c')](0xa,_0xb43c62-0x1);_0x59b23c=Math[_0xd4ce('0x17c')](0xa,_0xb43c62)-0x1;return util[_0xd4ce('0x82')]('%s',_['replace'](_0x48c49f,_0xb601e6,_['random'](_0xc3702d,_0x59b23c)));}function extractCalleridName(_0x5b2804){var _0x4865a7=_0x5b2804[_0xd4ce('0x17d')](/"(.*?)"/);return _0x4865a7?_0x4865a7[0x1]:_0x5b2804;}Dialer[_0xd4ce('0x1e')][_0xd4ce('0x17e')]=function(_0x36e89b,_0x3ac9e9){var _0x3cf5a9=this;var _0x425901=uuid['v4']();this[_0xd4ce('0xb5')][_0x425901]=new Action(_0x36e89b,_0x3ac9e9,_0x425901);return new Promise(function(_0x318ff0,_0xd1b561){if(_[_0xd4ce('0x41')](_0x36e89b)&&typeof _0x36e89b!=='object'){return _0xd1b561(msgResponse('originate','Failure',_0xd4ce('0x17f')));}if(_[_0xd4ce('0x41')](_0x3ac9e9['phone'])||_0x3ac9e9[_0xd4ce('0x180')]===null){return _0xd1b561(msgResponse(_0xd4ce('0x181'),_0xd4ce('0x151'),_0xd4ce('0x182')));}var _0x71997b={'XMD-CALLERID':_0x3cf5a9['actions'][_0x425901][_0xd4ce('0x183')](),'XMD-AGI':_0x36e89b[_0xd4ce('0x113')]?util[_0xd4ce('0x82')](_0xd4ce('0x184'),ipAgi,_0x36e89b[_0xd4ce('0x113')]):_0xd4ce('0x185'),'XMD-AGIAFTER':_0x36e89b[_0xd4ce('0x11a')]?util[_0xd4ce('0x82')]('\x22agi://%s/square,%s\x22',ipAgi,_0x36e89b[_0xd4ce('0x11a')]):_0xd4ce('0x185'),'XMD-QUEUE':_0x36e89b[_0xd4ce('0x50')]===_0xd4ce('0x51')?util[_0xd4ce('0x82')](_0xd4ce('0x186'),_0x36e89b[_0xd4ce('0x44')],_0x36e89b[_0xd4ce('0x187')]||'',_0x36e89b[_0xd4ce('0x11b')]?'c':'',_0x36e89b[_0xd4ce('0x121')]||0x3):'NONE','XMD-CONTACTID':_0x3ac9e9[_0xd4ce('0xdb')],'XMD-CDRTYPE':_0xd4ce('0x8'),'CALLERID(all)':_0x3cf5a9[_0xd4ce('0xb5')][_0x425901][_0xd4ce('0x183')](),'XMD-AMD':_0x36e89b[_0xd4ce('0xed')]?_0xd4ce('0x188'):_0xd4ce('0x185'),'XMD-DESTINATION':_0xd4ce('0xec')};if(_0x36e89b['dialAMDActive']){_0x71997b['XMD-AMDINITIALSILENCE']=_0x36e89b[_0xd4ce('0x189')]||0x9c4;_0x71997b[_0xd4ce('0x18a')]=_0x36e89b['dialAMDGreeting']||0x5dc;_0x71997b[_0xd4ce('0x18b')]=_0x36e89b['dialAMDAfterGreetingSilence']||0x320;_0x71997b[_0xd4ce('0x18c')]=_0x36e89b[_0xd4ce('0x18d')]||0x1388;_0x71997b[_0xd4ce('0x18e')]=_0x36e89b[_0xd4ce('0x18f')]||0x64;_0x71997b[_0xd4ce('0x190')]=_0x36e89b[_0xd4ce('0x191')]||0x32;_0x71997b[_0xd4ce('0x192')]=_0x36e89b[_0xd4ce('0x193')]||0x3;_0x71997b[_0xd4ce('0x194')]=_0x36e89b[_0xd4ce('0x195')]||0x100;_0x71997b['XMD-AMDMAXIMUMWORDLENGTH']=_0x36e89b[_0xd4ce('0x196')]||0x1388;}if(_0x36e89b[_0xd4ce('0x50')]===_0xd4ce('0x51')){_0x71997b[_0xd4ce('0x197')]=_0x3ac9e9[_0xd4ce('0xde')];}else{_0x71997b[_0xd4ce('0x198')]=_0x3ac9e9['CampaignId'];}for(var _0x7146 in _0x3ac9e9['Contact']){if(typeof _0x3ac9e9[_0xd4ce('0x199')][_0x7146]!=='undefined'){if(isNotNull(_0x3ac9e9[_0xd4ce('0x199')][_0x7146])&&_0x7146!=='id'&&_0x7146!==_0xd4ce('0x19a')&&_0x7146!=='createdAt'&&_0x7146!==_0xd4ce('0x19b')){_0x71997b[util[_0xd4ce('0x82')](_0xd4ce('0x19c'),_0xd4ce('0x19d'),_['toUpper'](_0x7146))]=_0x3ac9e9['Contact'][_0x7146];}}}var _0x2eddf7=_0x3cf5a9[_0xd4ce('0xe1')](_0x36e89b[_0xd4ce('0x7f')])?getCallerId(_0x36e89b['Trunk'][_0xd4ce('0x80')],_0x36e89b[_0xd4ce('0x5f')],_0x36e89b['dialRandomLastDigitCallerIdNumber']>0x0?getCallerIdRandom(_0x36e89b['dialOriginateCallerIdNumber'],_0x36e89b[_0xd4ce('0x19e')]):_0x36e89b[_0xd4ce('0x60')]):getCallerId(_[_0xd4ce('0xb7')](_0x36e89b[_0xd4ce('0x14c')])?_0x36e89b['Trunk']['callerid']:_0x36e89b['TrunkBackup'][_0xd4ce('0x80')],_0x36e89b[_0xd4ce('0x5f')],_0x36e89b[_0xd4ce('0x19e')]>0x0?getCallerIdRandom(_0x36e89b[_0xd4ce('0x60')],_0x36e89b[_0xd4ce('0x19e')]):_0x36e89b['dialOriginateCallerIdNumber']);if(_0x2eddf7){_0x71997b[_0xd4ce('0x19f')]=_0x3cf5a9['actions'][_0x425901][_0xd4ce('0x1a0')]=extractCalleridName(_0x2eddf7);_0x71997b[_0xd4ce('0x1a1')]=_0x3ac9e9[_0xd4ce('0x180')];}_0x36e89b['variables']=_0x71997b;return ami['Action']({'actionid':_0x425901,'action':_0xd4ce('0x181'),'channel':_0x3cf5a9[_0xd4ce('0xe1')](_0x36e89b[_0xd4ce('0x7f')])?util[_0xd4ce('0x82')](_0xd4ce('0x1a2'),_0x36e89b[_0xd4ce('0x7f')]['name'],isNotNull(_0x36e89b[_0xd4ce('0x62')])?_0x36e89b[_0xd4ce('0x62')]['trim']()||'':'',_0x36e89b['dialCutDigit']>0x0?_0x3ac9e9[_0xd4ce('0x180')][_0xd4ce('0x1a3')](_0x36e89b[_0xd4ce('0x1a4')]):_0x3ac9e9[_0xd4ce('0x180')]):util[_0xd4ce('0x82')](_0xd4ce('0x1a2'),_[_0xd4ce('0xb7')](_0x36e89b[_0xd4ce('0x14c')])?_0x36e89b[_0xd4ce('0x7f')][_0xd4ce('0x44')]:_0x36e89b[_0xd4ce('0x14c')][_0xd4ce('0x44')],isNotNull(_0x36e89b[_0xd4ce('0x62')])?_0x36e89b[_0xd4ce('0x62')][_0xd4ce('0x1a5')]()||'':'',_0x36e89b[_0xd4ce('0x1a4')]>0x0?_0x3ac9e9['phone'][_0xd4ce('0x1a3')](_0x36e89b['dialCutDigit']):_0x3ac9e9[_0xd4ce('0x180')]),'callerid':_0x2eddf7,'Exten':'xcally-motion-dialer','Context':_0xd4ce('0x1a6'),'Priority':'1','variable':_0x71997b,'timeout':(_0x36e89b[_0xd4ce('0x61')]||0x1e)*0x3e8,'async':!![],'channelid':_0x425901})[_0xd4ce('0xc0')](function(_0x2ff38f){return _0x318ff0(_0x2ff38f);})['catch'](function(_0x47f1e3){_0x36e89b[_0xd4ce('0x6b')]+=0x1;var _0x15347e=new History(_0x3cf5a9['actions'][_0x425901]);logger[_0xd4ce('0xa3')](util[_0xd4ce('0x82')](_0xd4ce('0x1a7'),JSON[_0xd4ce('0x4c')](_0x47f1e3)));_0x15347e[_0xd4ce('0x106')]=0xe;_0x15347e[_0xd4ce('0xb1')]='OriginateError';_0x15347e[_0xd4ce('0xb2')]=moment()[_0xd4ce('0x82')]('YYYY-MM-DD\x20HH:mm:ss');_0x15347e[_0xd4ce('0x132')]=_0x15347e[_0xd4ce('0xb2')];_0x3cf5a9['createHistory'](_0x15347e)[_0xd4ce('0xb9')](loggerCatch('[originate][error]'));_0x3cf5a9[_0xd4ce('0xd3')](_0x15347e)[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x1a8')))[_0xd4ce('0x21')](function(){delete _0x3cf5a9['actions'][_0x425901];return _0xd1b561(msgResponse('originate',_0xd4ce('0x1a9'),_0xd4ce('0x1aa')));});});});};Dialer[_0xd4ce('0x1e')]['syncOriginateResponse']=function(_0x586a98){var _0x244cb5=this['actions'][_0x586a98[_0xd4ce('0x134')]];if(_0x244cb5){delete this[_0xd4ce('0xb5')][_0x586a98['actionid']];_0x244cb5['responsetime']=moment()['format'](_0xd4ce('0x104'));var _0x23409f=_0x244cb5[_0xd4ce('0x50')]==='ivr'?this[_0xd4ce('0x24')][_0x244cb5[_0xd4ce('0xbc')]]:this[_0xd4ce('0x23')][_0x244cb5[_0xd4ce('0x1ab')]()];if(!this[_0xd4ce('0x1ac')](_0x586a98[_0xd4ce('0x1ad')])){this[_0xd4ce('0xbb')](_0x23409f);return this[_0xd4ce('0x1ae')](_0x244cb5,_0x23409f,_0x586a98)[_0xd4ce('0xb9')](loggerCatch('[callProgressDetecting]\x20'));}this[_0xd4ce('0x29')][_0x586a98[_0xd4ce('0xe8')]]=_0x244cb5;}};Dialer['prototype']['checkRetriveMax']=function(_0x4c0afd,_0x1d61c5,_0x1f3470){var _0x5e623b=new History(_0x1d61c5);if(_0x5e623b['countbusyretry']+_0x5e623b[_0xd4ce('0xfa')]+_0x5e623b['countnoanswerretry']+_0x5e623b[_0xd4ce('0x10b')]+_0x5e623b[_0xd4ce('0x10c')]+_0x5e623b['countabandonedretry']+_0x5e623b['countmachineretry']+_0x5e623b['countagentrejectretry']>=_0x1f3470['dialGlobalMaxRetry']-0x1){return!![];}switch(_0x4c0afd){case 0x3:if(_0x5e623b['countnoanswerretry']>=_0x1f3470[_0xd4ce('0x1af')]-0x1){return!![];}this[_0xd4ce('0xcc')]({'active':![],'countnoanswerretry':_0x5e623b[_0xd4ce('0xfb')]+=0x1,'scheduledat':moment()['add'](_0x1f3470[_0xd4ce('0x1b0')],_0xd4ce('0x103'))[_0xd4ce('0x82')](_0xd4ce('0x104')),'ContactId':_0x5e623b[_0xd4ce('0xdb')],'ListId':_0x5e623b[_0xd4ce('0xdc')],'VoiceQueueId':_0x5e623b['VoiceQueueId']||undefined,'CampaignId':_0x5e623b[_0xd4ce('0xdf')]||undefined})[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x1b1')));break;case 0x5:if(_0x5e623b[_0xd4ce('0x10a')]>=_0x1f3470[_0xd4ce('0x1b2')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countbusyretry':_0x5e623b[_0xd4ce('0x10a')]+=0x1,'scheduledat':moment()[_0xd4ce('0x101')](_0x1f3470[_0xd4ce('0x1b3')],_0xd4ce('0x103'))['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x5e623b[_0xd4ce('0xdb')],'ListId':_0x5e623b[_0xd4ce('0xdc')],'VoiceQueueId':_0x5e623b[_0xd4ce('0xde')]||undefined,'CampaignId':_0x5e623b[_0xd4ce('0xdf')]||undefined})[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x1b4')));break;case 0x8:if(_0x5e623b['countcongestionretry']>=_0x1f3470['dialCongestionMaxRetry']-0x1){return!![];}this[_0xd4ce('0xcc')]({'active':![],'countcongestionretry':_0x5e623b[_0xd4ce('0xfa')]+=0x1,'scheduledat':moment()['add'](_0x1f3470[_0xd4ce('0x1b5')],'minutes')[_0xd4ce('0x82')](_0xd4ce('0x104')),'ContactId':_0x5e623b[_0xd4ce('0xdb')],'ListId':_0x5e623b[_0xd4ce('0xdc')],'VoiceQueueId':_0x5e623b['VoiceQueueId']||undefined,'CampaignId':_0x5e623b['CampaignId']||undefined})[_0xd4ce('0xb9')](loggerCatch('[rescheduleContact]\x20[Congestion]'));break;case 0x0:if(_0x5e623b[_0xd4ce('0x10b')]>=_0x1f3470[_0xd4ce('0x1b6')]-0x1){return!![];}else{this[_0xd4ce('0xcc')]({'active':![],'countnosuchnumberretry':_0x5e623b[_0xd4ce('0x10b')]+=0x1,'scheduledat':moment()[_0xd4ce('0x101')](_0x1f3470[_0xd4ce('0x1b7')],'minutes')[_0xd4ce('0x82')](_0xd4ce('0x104')),'ContactId':_0x5e623b[_0xd4ce('0xdb')],'ListId':_0x5e623b['ListId'],'VoiceQueueId':_0x5e623b[_0xd4ce('0xde')]||undefined,'CampaignId':_0x5e623b['CampaignId']||undefined})[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x1b8')));}break;case 0xa:if(_0x5e623b[_0xd4ce('0x10c')]>=_0x1f3470[_0xd4ce('0x125')]-0x1){return!![];}this[_0xd4ce('0xcc')]({'active':![],'countdropretry':_0x5e623b[_0xd4ce('0x10c')]+=0x1,'scheduledat':moment()[_0xd4ce('0x101')](_0x1f3470[_0xd4ce('0x123')],_0xd4ce('0x103'))[_0xd4ce('0x82')](_0xd4ce('0x104')),'ContactId':_0x5e623b['ContactId'],'ListId':_0x5e623b[_0xd4ce('0xdc')],'VoiceQueueId':_0x5e623b['VoiceQueueId']||undefined,'CampaignId':_0x5e623b[_0xd4ce('0xdf')]||undefined})['catch'](loggerCatch(_0xd4ce('0x1b9')));break;case 0xb:if(_0x5e623b[_0xd4ce('0x10d')]>=_0x1f3470[_0xd4ce('0x12f')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countabandonedretry':_0x5e623b[_0xd4ce('0x10d')]+=0x1,'scheduledat':moment()[_0xd4ce('0x101')](_0x1f3470[_0xd4ce('0x12d')],'minutes')[_0xd4ce('0x82')](_0xd4ce('0x104')),'ContactId':_0x5e623b['ContactId'],'ListId':_0x5e623b[_0xd4ce('0xdc')],'VoiceQueueId':_0x5e623b[_0xd4ce('0xde')]||undefined,'CampaignId':_0x5e623b['CampaignId']||undefined})[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x131')));break;case 0x13:if(_0x5e623b[_0xd4ce('0xf6')]>=_0x1f3470[_0xd4ce('0xff')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countmachineretry':_0x5e623b['countmachineretry']+=0x1,'scheduledat':moment()[_0xd4ce('0x101')](_0x1f3470['dialMachineRetryFrequency'],_0xd4ce('0x103'))[_0xd4ce('0x82')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x5e623b[_0xd4ce('0xdb')],'ListId':_0x5e623b[_0xd4ce('0xdc')],'VoiceQueueId':_0x5e623b[_0xd4ce('0xde')]||undefined,'CampaignId':_0x5e623b[_0xd4ce('0xdf')]||undefined})[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x105')));break;case 0x14:if(_0x5e623b[_0xd4ce('0xfc')]>=_0x1f3470[_0xd4ce('0x1ba')]-0x1){return!![];}this[_0xd4ce('0xcc')]({'active':![],'countagentrejectretry':_0x5e623b['countagentrejectretry']+=0x1,'scheduledat':moment()[_0xd4ce('0x101')](_0x1f3470[_0xd4ce('0x1bb')],_0xd4ce('0x103'))['format'](_0xd4ce('0x104')),'ContactId':_0x5e623b['ContactId'],'ListId':_0x5e623b[_0xd4ce('0xdc')],'VoiceQueueId':_0x5e623b[_0xd4ce('0xde')]||undefined,'CampaignId':_0x5e623b[_0xd4ce('0xdf')]||undefined})[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x1bc')));break;default:return!![];}};Dialer[_0xd4ce('0x1e')]['callProgressDetecting']=function(_0x10ec38,_0x1caf30,_0x2df240){var _0x428525=this;var _0x422e42=new History(_0x10ec38);var _0xbfa57d=![];var _0x7cfd02;var _0x1a15e6;return new Promise(function(_0x501587,_0x4d0118){if(_['isUndefined'](_0x1caf30)&&typeof _0x1caf30!==_0xd4ce('0x1bd')){return _0x4d0118(msgResponse(_0xd4ce('0x1be'),_0xd4ce('0x151'),_0xd4ce('0x1bf')));}if(_[_0xd4ce('0x41')](_0x2df240)&&typeof _0x2df240!==_0xd4ce('0x1bd')){return _0x4d0118(msgResponse(_0xd4ce('0x1be'),'Failure',_0xd4ce('0x1c0')));}_0x428525[_0xd4ce('0xc5')](_0x422e42,_0x2df240[_0xd4ce('0x117')],_0x1caf30)['then'](function(_0x2abc10){if(_0x2abc10[_0xd4ce('0x126')]==0x1)_0xbfa57d=!![];switch(_0x2df240['reason']){case'0':_0x1caf30['outboundNoSuchCallsDay']+=0x1;_0x422e42[_0xd4ce('0x106')]=0x0;_0x422e42[_0xd4ce('0xb1')]=_0xd4ce('0x1c1');_0x422e42[_0xd4ce('0x10b')]+=0x1;_0x422e42[_0xd4ce('0xf7')]+=0x1;ami['emit'](_0xd4ce('0x1c2'),ut[_0xd4ce('0xf4')](_0x10ec38,_0xd4ce('0x1c3')));_0x7cfd02=_0x1caf30['dialNoSuchNumberRetryFrequency'];_0x1a15e6=_0x1caf30[_0xd4ce('0x12e')];_0x428525[_0xd4ce('0xe7')](_0x422e42)[_0xd4ce('0xb9')](loggerCatch('[syncAgentComplete][createHistory][0]'));if(_0x428525[_0xd4ce('0x1c4')](0x0,_0x10ec38,_0x1caf30)&&!_0xbfa57d){if(_0x422e42[_0xd4ce('0x10b')]>=_0x1caf30['dialNoSuchNumberMaxRetry']){_0x428525[_0xd4ce('0x100')](_0x422e42,_0x501587,_0x4d0118,_0xd4ce('0x1c5'));}else{_0x428525['stateGlobal'](_0x422e42,_0x501587,_0x4d0118,'reason\x200\x20no\x20such\x20number....');}}break;case'3':_0x1caf30[_0xd4ce('0x69')]+=0x1;_0x422e42[_0xd4ce('0x106')]=0x3;_0x422e42['statedesc']='NoAnswer';_0x422e42[_0xd4ce('0xfb')]+=0x1;_0x422e42['countglobal']+=0x1;var _0x59a068=ut[_0xd4ce('0x1c6')](_0x10ec38,_0x1caf30);ami['emit']('custom:agentnoanswer',_0x59a068);_0x7cfd02=_0x1caf30[_0xd4ce('0x1b0')];_0x1a15e6=_0x1caf30[_0xd4ce('0x12e')];_0x428525['createHistory'](_0x422e42)[_0xd4ce('0xb9')](loggerCatch('[syncAgentComplete][createHistory][3]'));if(_0x428525[_0xd4ce('0x1c4')](0x3,_0x10ec38,_0x1caf30)&&!_0xbfa57d){if(_0x422e42[_0xd4ce('0xfb')]>=_0x1caf30[_0xd4ce('0x1af')]){_0x428525[_0xd4ce('0x100')](_0x422e42,_0x501587,_0x4d0118,_0xd4ce('0x1c7'));}else{_0x428525['stateGlobal'](_0x422e42,_0x501587,_0x4d0118,_0xd4ce('0x1c7'));}}break;case'5':_0x1caf30['outboundBusyCallsDay']+=0x1;_0x422e42[_0xd4ce('0x106')]=0x5;_0x422e42[_0xd4ce('0xb1')]=_0xd4ce('0x1c8');_0x422e42[_0xd4ce('0x10a')]+=0x1;_0x422e42[_0xd4ce('0xf7')]+=0x1;ami[_0xd4ce('0x4f')](_0xd4ce('0x1c9'),ut[_0xd4ce('0xf4')](_0x10ec38,'busy'));_0x7cfd02=_0x1caf30[_0xd4ce('0x1b3')];_0x1a15e6=_0x1caf30[_0xd4ce('0x12e')];_0x428525[_0xd4ce('0xe7')](_0x422e42)[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x1ca')));if(_0x428525[_0xd4ce('0x1c4')](0x5,_0x10ec38,_0x1caf30)&&!_0xbfa57d){if(_0x422e42[_0xd4ce('0x10a')]>=_0x1caf30[_0xd4ce('0x1b2')]){_0x428525[_0xd4ce('0x100')](_0x422e42,_0x501587,_0x4d0118,_0xd4ce('0x1cb'));}else{_0x428525[_0xd4ce('0x10e')](_0x422e42,_0x501587,_0x4d0118,_0xd4ce('0x1cb'));}}break;case'8':_0x1caf30[_0xd4ce('0x65')]+=0x1;_0x422e42[_0xd4ce('0x106')]=0x8;_0x422e42[_0xd4ce('0xb1')]=_0xd4ce('0x1cc');_0x422e42['countcongestionretry']+=0x1;_0x422e42['countglobal']+=0x1;_0x7cfd02=_0x1caf30[_0xd4ce('0x1b5')];_0x1a15e6=_0x1caf30[_0xd4ce('0x12e')];ami['emit']('custom:agentcongestion',ut[_0xd4ce('0xf4')](_0x10ec38,'congestion'));_0x428525[_0xd4ce('0xe7')](_0x422e42)['catch'](loggerCatch(_0xd4ce('0x1cd')));if(_0x428525[_0xd4ce('0x1c4')](0x8,_0x10ec38,_0x1caf30)&&!_0xbfa57d){if(_0x422e42[_0xd4ce('0xfa')]>=_0x1caf30[_0xd4ce('0x1ce')]){_0x428525[_0xd4ce('0x100')](_0x422e42,_0x501587,_0x4d0118,_0xd4ce('0x1cf'));}else{_0x428525[_0xd4ce('0x10e')](_0x422e42,_0x501587,_0x4d0118,'reason\x208\x20congestion');}}break;case'11':_0x1caf30[_0xd4ce('0x1d0')]+=0x1;_0x422e42['state']=0xb;_0x422e42[_0xd4ce('0xb1')]=_0xd4ce('0x12a');_0x422e42[_0xd4ce('0x10d')]+=0x1;_0x422e42['countglobal']+=0x1;_0x7cfd02=_0x1caf30[_0xd4ce('0x12d')];_0x1a15e6=_0x1caf30['callAdditionalPhoneAfterMin'];_0x428525[_0xd4ce('0xe7')](_0x422e42)[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x133')));if(_0x428525[_0xd4ce('0x1c4')](0xb,_0x10ec38,_0x1caf30)&&!_0xbfa57d){if(_0x422e42['countabandonedretry']>=_0x1caf30['dialAbandonedMaxRetry']){_0x428525[_0xd4ce('0x100')](_0x422e42,_0x501587,_0x4d0118,_0xd4ce('0x1d1'));}else{_0x428525[_0xd4ce('0x10e')](_0x422e42,_0x501587,_0x4d0118,_0xd4ce('0x1d1'));}}break;case'20':_0x1caf30[_0xd4ce('0x6d')]+=0x1;_0x422e42[_0xd4ce('0x106')]=0x14;_0x422e42['statedesc']='AgentReject';_0x422e42[_0xd4ce('0xfc')]+=0x1;_0x422e42[_0xd4ce('0xf7')]+=0x1;_0x7cfd02=_0x1caf30[_0xd4ce('0x1bb')];_0x1a15e6=_0x1caf30['callAdditionalPhoneAfterMin'];ami[_0xd4ce('0x4f')](_0xd4ce('0x1d2'),ut[_0xd4ce('0xf4')](_0x10ec38,_0xd4ce('0x1d3')));_0x428525[_0xd4ce('0xe7')](_0x422e42)['catch'](loggerCatch(_0xd4ce('0x1d4')));if(_0x428525['checkRetriveMax'](0x14,_0x10ec38,_0x1caf30)&&!_0xbfa57d){if(_0x422e42[_0xd4ce('0xfc')]>=_0x1caf30[_0xd4ce('0x1ba')]){_0x428525[_0xd4ce('0x100')](_0x422e42,_0x501587,_0x4d0118,_0xd4ce('0x1d5'));}else{_0x428525[_0xd4ce('0x10e')](_0x422e42,_0x501587,_0x4d0118,_0xd4ce('0x1d5'));}}break;default:_0x1caf30['outboundUnknownCallsDay']+=0x1;_0x422e42[_0xd4ce('0x106')]=0xc;_0x422e42['statedesc']=_0x2df240[_0xd4ce('0x117')];_0x7cfd02=_0x1caf30[_0xd4ce('0x1bb')];_0x1a15e6=_0x1caf30[_0xd4ce('0x12e')];_0x428525[_0xd4ce('0xe7')](_0x422e42)[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x1d6')));if(_0x428525[_0xd4ce('0x1c4')](_0x2df240['reason'],_0x10ec38,_0x1caf30)&&!_0xbfa57d){if(_0x422e42[_0xd4ce('0x10a')]+_0x422e42[_0xd4ce('0xfa')]+_0x422e42[_0xd4ce('0xfb')]+_0x422e42[_0xd4ce('0x10b')]+_0x422e42[_0xd4ce('0x10c')]+_0x422e42['countabandonedretry']+_0x422e42['countmachineretry']+_0x422e42[_0xd4ce('0xfc')]>=_0x1caf30[_0xd4ce('0xfd')]){_0x428525['stateGlobal'](_0x422e42,_0x501587,_0x4d0118,_0x2df240[_0xd4ce('0x117')]);}else{_0x428525['createStateFinal'](_0x422e42,_0x501587,_0x4d0118,_0x2df240[_0xd4ce('0x117')]);}}}})[_0xd4ce('0xc0')](function(){if(_0xbfa57d){_0x428525['swapAdditionalPhones'](_0x422e42,_0x7cfd02,_0x1a15e6)['then'](function(){return _0x501587(0x1);});}});});};Dialer[_0xd4ce('0x1e')][_0xd4ce('0x10e')]=function(_0x18bec5,_0x292e87,_0x4673c0,_0x1b57c4){var _0x33f399=new Final(_0x18bec5);_0x33f399[_0xd4ce('0x106')]=0xf;_0x33f399[_0xd4ce('0xb1')]='Global';this['createStateFinal'](_0x33f399,_0x292e87,_0x4673c0,_0x1b57c4);};Dialer[_0xd4ce('0x1e')][_0xd4ce('0x100')]=function(_0x4eae8f,_0x46d77c,_0x174acc,_0x1ada94){this[_0xd4ce('0xd3')](_0x4eae8f)[_0xd4ce('0xc0')](function(){return _0x46d77c(msgResponse(_0xd4ce('0x1be'),_0xd4ce('0x1d7'),_0x1ada94));})[_0xd4ce('0xb9')](function(){return _0x174acc(msgResponse(_0xd4ce('0x1d8'),'Failure',_0xd4ce('0x1d9')));});};Dialer[_0xd4ce('0x1e')]['predictive']=function(_0x334f15){var _0x49f4a0=_0x334f15[_0xd4ce('0x1da')]/0x64;var _0x32ebeb=_0x334f15['outboundDropCallsDayTimeout']/(_0x334f15[_0xd4ce('0x68')]+_0x334f15['outboundAnswerCallsDay']);var _0x26ae9f=Math[_0xd4ce('0x1db')](_0x334f15[_0xd4ce('0x78')]*(_0x334f15[_0xd4ce('0x1dc')]/0x64));var _0x43511e=Math[_0xd4ce('0x1db')](_0x334f15[_0xd4ce('0x78')]*(_0x334f15['predictiveIntervalMinThreshold']/0x64));var _0x365c9e=_0x334f15[_0xd4ce('0x54')]+_0x334f15[_0xd4ce('0x58')];var _0x198781=Math[_0xd4ce('0x1dd')](_0x334f15['erlangCalls']*_0x334f15['erlangAbandonmentRate']*_0x334f15[_0xd4ce('0x1de')]*_0x334f15[_0xd4ce('0x76')]);if(_[_0xd4ce('0x41')](_0x334f15['startProgressive'])){if(!_[_0xd4ce('0x41')](_0x334f15[_0xd4ce('0x7e')])){_0x334f15['startPredictive']=undefined;loggerPredictive[_0xd4ce('0xa3')](_0xd4ce('0x1df'),_0xd4ce('0x1e0'));}if(!_['isUndefined'](_0x334f15[_0xd4ce('0x9c')])){loggerPredictive['error'](_0xd4ce('0x1df'),_0xd4ce('0x1e1'));clearInterval(_0x334f15[_0xd4ce('0x9c')]);_0x334f15[_0xd4ce('0x9c')]=undefined;}_0x334f15[_0xd4ce('0x2b')]=moment()[_0xd4ce('0x82')]('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive[_0xd4ce('0x87')](_0x334f15[_0xd4ce('0x44')],_0xd4ce('0x1e2'),_0x334f15['startProgressive']);this['handlePower'](_0x334f15,0x1);}else if(ifInterval(_0x334f15['dialPredictiveInterval'],_0x334f15[_0xd4ce('0x2b')])){this[_0xd4ce('0x167')](_0x334f15,0x1);loggerPredictiveCalls[_0xd4ce('0x87')](_0xd4ce('0x1e3'),_0x334f15['startProgressive'],_0x334f15['name']);_0x334f15[_0xd4ce('0x7a')]=0x0;_0x334f15[_0xd4ce('0x75')]=0x0;}else if(_0x49f4a0<_0x32ebeb&&_0x334f15[_0xd4ce('0x1e4')]===_0xd4ce('0x1e5')){freeVariablesPredictive(_0x334f15);loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x1e6'),_0xd4ce('0x1e7'),_0x32ebeb,_0xd4ce('0x2b'),_0x334f15['name']);}else if(_0x198781<_0x334f15['predictiveIntervalErlangCallsDroppedCalls']&&_0x334f15[_0xd4ce('0x1e4')]===_0xd4ce('0x1e5')){freeVariablesPredictive(_0x334f15);loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x1e8'),_0xd4ce('0x1e9'),_0x198781,_0xd4ce('0x1ea'),_0x334f15['predictiveIntervalErlangCallsDroppedCalls'],'startProgressive',_0x334f15[_0xd4ce('0x44')]);}else if(!ifInterval(_0x334f15[_0xd4ce('0x1eb')],_0x334f15[_0xd4ce('0x2b')])&&_[_0xd4ce('0x41')](_0x334f15[_0xd4ce('0x7e')])&&!_[_0xd4ce('0x41')](_0x334f15['startProgressive'])){_0x334f15[_0xd4ce('0x7e')]=moment()[_0xd4ce('0x82')]('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive[_0xd4ce('0x87')](_0x334f15[_0xd4ce('0x44')],_0xd4ce('0x1ec'),_0x334f15[_0xd4ce('0x7e')]);this['averageHandleTime'](_0x334f15[_0xd4ce('0x1eb')])['then'](this[_0xd4ce('0x1ed')](_0x334f15))[_0xd4ce('0xc0')](mergeDataErlangB(_0x334f15))['then'](this[_0xd4ce('0x1ee')](_0x334f15))['catch'](loggerCatchPredictive(_0xd4ce('0x1ef'),_0x334f15));}else if(!ifInterval(_0x334f15[_0xd4ce('0x1eb')],_0x334f15['startPredictive'])){_0x334f15[_0xd4ce('0x75')]=0x0;_0x334f15[_0xd4ce('0x7e')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive[_0xd4ce('0x87')](_0x334f15[_0xd4ce('0x44')],_0xd4ce('0x1f0'),_0x334f15['startPredictive']);clearInterval(_0x334f15[_0xd4ce('0x9c')]);_0x334f15['handlePredictive']=undefined;this[_0xd4ce('0xc9')](_0x334f15[_0xd4ce('0x1eb')])[_0xd4ce('0xc0')](this[_0xd4ce('0x1ed')](_0x334f15))[_0xd4ce('0xc0')](mergeDataErlangB(_0x334f15))[_0xd4ce('0xc0')](this[_0xd4ce('0x1ee')](_0x334f15))[_0xd4ce('0xb9')](loggerCatchPredictive(_0xd4ce('0x1f1'),_0x334f15));}else if(_0x334f15['predictiveIntervalAvailable']&&_0x365c9e<_0x334f15[_0xd4ce('0x78')]-_0x43511e){freeVariablesPredictive(_0x334f15);loggerPredictive[_0xd4ce('0x87')](_0x334f15[_0xd4ce('0x44')],_0xd4ce('0x1f2'),_0x365c9e,')\x20are\x20less\x20than\x20threshold\x20(',_0x334f15['predictiveIntervalAvailable'],'-',_0x43511e,'=',_0x334f15[_0xd4ce('0x78')]-_0x43511e,')');}else if(_0x334f15[_0xd4ce('0x78')]&&_0x365c9e>_0x334f15[_0xd4ce('0x78')]+_0x26ae9f){freeVariablesPredictive(_0x334f15);loggerPredictive[_0xd4ce('0x87')](_0x334f15[_0xd4ce('0x44')],_0xd4ce('0x1f2'),_0x365c9e,_0xd4ce('0x1f3'),_0x334f15[_0xd4ce('0x78')],'+',_0x26ae9f,'=',_0x334f15[_0xd4ce('0x78')]+_0x26ae9f,')');}};Dialer[_0xd4ce('0x1e')][_0xd4ce('0x1ed')]=function(_0x6c9b10){var _0x533e9e=this;return function(_0x2d27d8){return new Promise(function(_0x101a0c,_0x70d1d0){_['merge'](_0x6c9b10,_0x2d27d8[0x0]);if(checkGetDataPredictive(_0x2d27d8[0x0])){var _0x3e97dc=_0x6c9b10[_0xd4ce('0x78')]=_0x6c9b10['talking']+_0x6c9b10[_0xd4ce('0x54')];var _0x359531=_0x6c9b10[_0xd4ce('0x1eb')]*0x3c;var _0x1929aa=_0x2d27d8[0x0][_0xd4ce('0x71')]+_0x2d27d8[0x0][_0xd4ce('0x70')];var _0x37e9bf=(_0x2d27d8[0x0][_0xd4ce('0x6f')]+_0x2d27d8[0x0][_0xd4ce('0x73')]+_0x2d27d8[0x0][_0xd4ce('0x72')])/_0x2d27d8[0x0][_0xd4ce('0x89')];_0x6c9b10[_0xd4ce('0x1de')]=_0x37e9bf>0x0?_0x37e9bf:0x1;switch(_0x6c9b10['dialPredictiveOptimization']){case _0xd4ce('0x1e5'):var _0x503b12=_0x6c9b10['dialPredictiveOptimizationPercentage']/0x64;return _0x533e9e[_0xd4ce('0x1f4')](_0x3e97dc,_0x359531,_0x1929aa,_0x37e9bf,_0x503b12)[_0xd4ce('0xc0')](function(_0x5e38c3){return _0x101a0c(_0x5e38c3);});case _0xd4ce('0x1f5'):var _0x1dd0d0=_0x6c9b10['dialPredictiveOptimizationPercentage']/0x64;return _0x533e9e[_0xd4ce('0x1f6')](_0x3e97dc,_0x359531,_0x1929aa,_0x37e9bf,_0x1dd0d0)[_0xd4ce('0xc0')](function(_0x599cc1){return _0x101a0c(_0x599cc1);});default:return _0x70d1d0(msgResponse('[getDataPredictive]',_0xd4ce('0x151'),_0xd4ce('0x1f7')));}}else{return _0x70d1d0(msgResponse('[getDataPredictive]',_0xd4ce('0x151'),_0xd4ce('0x1f8')));}});};};Dialer[_0xd4ce('0x1e')][_0xd4ce('0x1f9')]=function(_0xf882db){var _0x5880a1=this;return function(_0x185cd7){return new Promise(function(_0x51db1b,_0x388b64){_[_0xd4ce('0x98')](_0xf882db,_0x185cd7[0x0]);if(checkGetDataPredictive(_0x185cd7[0x0])){loggerPredictive[_0xd4ce('0x87')](JSON[_0xd4ce('0x4c')](_0x185cd7[0x0]));if(_0xf882db[_0xd4ce('0x1e4')]===_0xd4ce('0x1e5')){return _0x5880a1['getVoiceQueueRtPauses'](_0xf882db['id'])[_0xd4ce('0xc0')](function(_0x116b69){var _0x1ab827=_0xf882db['loggedIn']-_0x116b69[0x0][_0xd4ce('0x1fa')];var _0x12f9f9=_0xf882db[_0xd4ce('0x1eb')]*0x3c;var _0x43e20c=_0x185cd7[0x0][_0xd4ce('0x71')]+_0x185cd7[0x0][_0xd4ce('0x70')];var _0x40d9c7=(_0x185cd7[0x0][_0xd4ce('0x6f')]+_0x185cd7[0x0][_0xd4ce('0x73')]+_0x185cd7[0x0][_0xd4ce('0x72')])/_0x185cd7[0x0][_0xd4ce('0x89')];var _0x21ead8=_0xf882db[_0xd4ce('0x1da')]/0x64;_0xf882db['predictiveIntervalPauses']=_0x116b69[0x0][_0xd4ce('0x1fa')]||0x0;_0xf882db['predictiveIntervalHitRate']=_0x40d9c7>0x0?_0x40d9c7:0x1;return _0x5880a1[_0xd4ce('0x1f4')](_0x1ab827,_0x12f9f9,_0x43e20c,_0x40d9c7,_0x21ead8);})[_0xd4ce('0xc0')](function(_0x5e197d){return _0x51db1b(_0x5e197d);})['catch'](function(_0x128734){return _0x388b64(msgResponse(_0xd4ce('0x1fb'),'Failure',JSON[_0xd4ce('0x4c')](_0x128734)));});}if(_0xf882db['dialPredictiveOptimization']===_0xd4ce('0x1f5')){return _0x5880a1[_0xd4ce('0xd2')](_0xf882db['id'])[_0xd4ce('0xc0')](function(_0x1106e6){var _0x252bf8=_0xf882db[_0xd4ce('0x55')]-_0x1106e6[0x0][_0xd4ce('0x1fa')];var _0x2cd72d=_0xf882db[_0xd4ce('0x1eb')]*0x3c;var _0x4e8458=_0x185cd7[0x0][_0xd4ce('0x71')]+_0x185cd7[0x0][_0xd4ce('0x70')];var _0x4e9989=(_0x185cd7[0x0][_0xd4ce('0x6f')]+_0x185cd7[0x0]['predictiveIntervalDroppedCallsTimeout']+_0x185cd7[0x0][_0xd4ce('0x72')])/_0x185cd7[0x0]['predictiveIntervalTotalCalls'];var _0x4f08f8=_0xf882db[_0xd4ce('0x1da')]/0x64;_0xf882db[_0xd4ce('0x77')]=_0x1106e6[0x0][_0xd4ce('0x1fa')]||0x0;_0xf882db[_0xd4ce('0x1de')]=_0x4e9989>0x0?_0x4e9989:0x1;return _0x5880a1['busyFactor'](_0x252bf8,_0x2cd72d,_0x4e8458,_0x4e9989,_0x4f08f8);})[_0xd4ce('0xc0')](function(_0x552261){return _0x51db1b(_0x552261);})['catch'](function(_0x58ff7c){return _0x388b64(msgResponse(_0xd4ce('0x1fb'),_0xd4ce('0x151'),JSON[_0xd4ce('0x4c')](_0x58ff7c)));});}}else{return _0x388b64(msgResponse(_0xd4ce('0x1fc'),'Failure',_0xd4ce('0x1f8')));}});};};Dialer[_0xd4ce('0x1e')][_0xd4ce('0x1ee')]=function(_0x1c6643){var _0x241c61=this;return function(){var _0x293019=0x0;var _0x59ff4f=Math[_0xd4ce('0x1dd')](_0x1c6643[_0xd4ce('0x7b')]*0x3e8);if(_0x59ff4f>0x0){_0x59ff4f=_0x59ff4f<0x64?0x64:_0x59ff4f;loggerPredictive[_0xd4ce('0x87')](_0x1c6643[_0xd4ce('0x44')],_0xd4ce('0x1fd'),_0x59ff4f,_0xd4ce('0x4d'));_0x1c6643[_0xd4ce('0x9c')]=setInterval(function(){_0x241c61[_0xd4ce('0x9c')](_0x1c6643);loggerPredictiveCalls[_0xd4ce('0x87')](_0xd4ce('0x1fe'),_0x293019+=0x1);},_0x59ff4f);}else{loggerPredictive[_0xd4ce('0x87')](_0x1c6643[_0xd4ce('0x44')],_0xd4ce('0x1ff'));}};};Dialer[_0xd4ce('0x1e')][_0xd4ce('0x200')]=function(_0xd24f9d,_0x2b814e){var _0x1805c8=this;return function(_0x1c08b3){if(_[_0xd4ce('0x4b')](_0x1c08b3)){if(_[_0xd4ce('0xb7')](_0x2b814e[_0xd4ce('0xdd')])||!_0x2b814e['recallme']){if(_0xd24f9d[_0xd4ce('0x5e')]==='booked'){_0xd24f9d[_0xd4ce('0x13c')]=_[_0xd4ce('0x41')](_0xd24f9d[_0xd4ce('0x13c')])?!![]:_0xd24f9d[_0xd4ce('0x13c')];var _0x17ab94=uuid['v4']();_0x1805c8[_0xd4ce('0xb5')][_0x17ab94]=new Action(_0xd24f9d,_0x2b814e,_0x17ab94);loggerBooked['info'](_0xd4ce('0x201'),_0x17ab94,_0xd4ce('0x202'),JSON[_0xd4ce('0x4c')](_0xd24f9d['queueStatusComplete']),_0xd4ce('0x203'),_0xd24f9d[_0xd4ce('0x44')]);if(_0xd24f9d[_0xd4ce('0x13c')]){_0xd24f9d[_0xd4ce('0x13c')]=![];_0x1805c8['queueBooked'][_0x1805c8['actions'][_0x17ab94][_0xd4ce('0xbc')]]=[];ami[_0xd4ce('0x15d')]({'actionid':_0x17ab94,'action':_0xd4ce('0x204'),'queue':_0xd24f9d[_0xd4ce('0x44')]})[_0xd4ce('0xb9')](function(){_0x1805c8['updateOriginated'](_0xd24f9d);_0x1805c8[_0xd4ce('0xcc')]({'active':![],'ContactId':_0x1805c8[_0xd4ce('0xb5')][_0x17ab94][_0xd4ce('0xdb')],'ListId':_0x1805c8[_0xd4ce('0xb5')][_0x17ab94][_0xd4ce('0xdc')],'VoiceQueueId':_0x1805c8[_0xd4ce('0xb5')][_0x17ab94][_0xd4ce('0xde')]||undefined,'CampaignId':_0x1805c8[_0xd4ce('0xb5')][_0x17ab94][_0xd4ce('0xdf')]||undefined})[_0xd4ce('0xb9')](loggerCatch('[unlockOriginate][syncQueueStatusComplete]'));delete _0x1805c8[_0xd4ce('0xb5')][_0x17ab94];});}else{loggerBooked[_0xd4ce('0x87')](_0xd4ce('0x205'),JSON[_0xd4ce('0x4c')](_0xd24f9d[_0xd4ce('0x13c')]),_0xd4ce('0x203'),_0xd24f9d[_0xd4ce('0x44')]);_0x1805c8[_0xd4ce('0xbb')](_0xd24f9d);_0x1805c8['rescheduleContact']({'active':![],'ContactId':_0x1805c8[_0xd4ce('0xb5')][_0x17ab94][_0xd4ce('0xdb')],'ListId':_0x1805c8[_0xd4ce('0xb5')][_0x17ab94][_0xd4ce('0xdc')],'VoiceQueueId':_0x1805c8[_0xd4ce('0xb5')][_0x17ab94][_0xd4ce('0xde')]||undefined,'CampaignId':_0x1805c8['actions'][_0x17ab94]['CampaignId']||undefined})[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x206')));delete _0x1805c8[_0xd4ce('0xb5')][_0x17ab94];}}else{return _0x1805c8['actionOriginate'](_0xd24f9d,_0x2b814e);}}else{if(getDiff(_0x2b814e[_0xd4ce('0x207')])<_0xd24f9d['dialRecallMeTimeout']*0x3c){if(_0x2b814e[_0xd4ce('0x177')]&&!_0x2b814e[_0xd4ce('0x177')][_0xd4ce('0x208')]){_0x1805c8[_0xd4ce('0x13f')][_0xd4ce('0x140')](_0x2b814e['id'])[_0xd4ce('0x21')](function(){_0x1805c8[_0xd4ce('0xbb')](_0xd24f9d);});}else{_0x1805c8[_0xd4ce('0xcd')]({'active':![]},_0x2b814e['id'],0x1)[_0xd4ce('0x21')](function(){_0x1805c8[_0xd4ce('0xbb')](_0xd24f9d);});}}else{_0xd24f9d[_0xd4ce('0x6c')]+=0x1;_0x1805c8['updateOriginated'](_0xd24f9d);if(_0xd24f9d['dialRecallInQueue']){_0x1805c8[_0xd4ce('0xcc')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x2b814e['ContactId'],'ListId':_0x2b814e[_0xd4ce('0xdc')],'VoiceQueueId':_0x2b814e[_0xd4ce('0xde')]||undefined,'CampaignId':_0x2b814e['CampaignId']||undefined})[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x209')));_0x1805c8['createHistory'](createObjHistory(_0xd24f9d,_0x2b814e,_0xd4ce('0x20a'),0x17,_0xd4ce('0x20b')))['catch'](loggerCatch(_0xd4ce('0x20c')));}else{_0x1805c8[_0xd4ce('0xd9')](createObjHistory(_0xd24f9d,_0x2b814e,'RECALLFAILEDTIMEOUT',0x16,'RecallFailedTimeout'),_0xd4ce('0x20d'),_0xd4ce('0x20e'));}}}}else{_0xd24f9d[_0xd4ce('0x20f')]+=0x1;_0x1805c8['saveInDb'](createObjHistory(_0xd24f9d,_0x2b814e,_0xd4ce('0x210'),0xd,_0xd4ce('0x211')),'[Originate][historyBlacklist]',_0xd4ce('0x212'));throw _0xd4ce('0x213');}};};Dialer[_0xd4ce('0x1e')]['handleIvr']=function(_0x3bf6c8){var _0x23d7c7=this;var _0x54e0f4=_0x3bf6c8[_0xd4ce('0x214')]-_0x3bf6c8[_0xd4ce('0x79')]-_0x3bf6c8[_0xd4ce('0xd0')];emitCampaignSummary(_0x3bf6c8);if(_0x54e0f4>0x0){if(_0x54e0f4>this['maxNumberOriginate']){_0x54e0f4=this['maxNumberOriginate'];}_0x3bf6c8[_0xd4ce('0xd0')]+=_0x54e0f4;this[_0xd4ce('0xd1')](_0x3bf6c8['id'],_0x54e0f4,_0x3bf6c8[_0xd4ce('0x215')],_0x3bf6c8)['then'](function(_0x2d2d72){_0x3bf6c8[_0xd4ce('0xd0')]-=_0x54e0f4;_0x3bf6c8[_0xd4ce('0xd0')]=_0x3bf6c8[_0xd4ce('0xd0')]>0x0?_0x3bf6c8[_0xd4ce('0xd0')]:0x0;if(!checkContactEmpty(_0x2d2d72)){_0x3bf6c8[_0xd4ce('0x42')]='AVAILABLE_CONTACTS_FINISHED';logger[_0xd4ce('0x87')](_0xd4ce('0x216')+_0x3bf6c8['name']);}else{_0x3bf6c8['originated']+=_0x2d2d72[_0xd4ce('0xa5')];_0x3bf6c8['message']='RUNNING';for(var _0x472cc=0x0;_0x472cc<_0x2d2d72[_0xd4ce('0xa5')];_0x472cc+=0x1){_0x3bf6c8[_0xd4ce('0x217')]+=0x1;if(_[_0xd4ce('0xb7')](_0x2d2d72[_0x472cc])||_[_0xd4ce('0xb7')](_0x2d2d72[_0x472cc][_0xd4ce('0x199')])||_[_0xd4ce('0xb7')](_0x2d2d72[_0x472cc][_0xd4ce('0x180')])){_0x23d7c7[_0xd4ce('0xd7')](_0xd4ce('0x218'),_0x3bf6c8,_0x2d2d72[_0x472cc]);}else{_0x23d7c7[_0xd4ce('0x219')](_[_0xd4ce('0xda')](_0x2d2d72[_0x472cc],[_0xd4ce('0xdf'),_0xd4ce('0x180')]))[_0xd4ce('0xc0')](_0x23d7c7['checkContactBlack'](_0x3bf6c8,_0x2d2d72[_0x472cc]))[_0xd4ce('0xb9')](_0x23d7c7[_0xd4ce('0x21a')](_0xd4ce('0x21b'),_0x3bf6c8));}}}})[_0xd4ce('0xb9')](loggerGetContactDialer(_0xd4ce('0x21c'),_0x3bf6c8,_0x54e0f4));}};Dialer[_0xd4ce('0x1e')]['handlePower']=function(_0x5516e4,_0x1a56f6){var _0x2c29ec=this;var _0x1f8f44=[];var _0x31688c=_0x1a56f6>=0x1?_0x1a56f6:0x1;if(_0x5516e4[_0xd4ce('0x5e')]==='booked'){_0x31688c=0x1;}var _0x499e58=Math[_0xd4ce('0x1dd')](_0x5516e4[_0xd4ce('0x54')]*_0x31688c)-_0x5516e4[_0xd4ce('0x79')]-_0x5516e4['temp'];emitVoiceQueueSummary(_0x5516e4);if(_0x5516e4[_0xd4ce('0x21d')]>0x0){var _0x4d364b=_0x5516e4[_0xd4ce('0x21d')]-_0x5516e4[_0xd4ce('0x79')]-_0x5516e4['talking']-_0x5516e4['temp']-_0x5516e4[_0xd4ce('0x56')];if(_0x499e58>_0x4d364b){_0x499e58=_0x4d364b;}}if(_0x499e58>0x0){if(_0x5516e4[_0xd4ce('0x5e')]===_0xd4ce('0x9')){_0x499e58=0x1;}if(_0x499e58>this[_0xd4ce('0x27')]){_0x499e58=this[_0xd4ce('0x27')];}_0x5516e4[_0xd4ce('0xd0')]+=_0x499e58;for(var _0x2a24c1 in this[_0xd4ce('0x25')]){if(typeof this['agents'][_0x2a24c1]!=='undefined'){if(this['agents'][_0x2a24c1][_0xd4ce('0x106')]===_0xd4ce('0x21e')&&this[_0xd4ce('0x25')][_0x2a24c1][_0xd4ce('0xe5')]===_0xd4ce('0xe3')){_0x1f8f44[_0xd4ce('0x13a')](this['agents'][_0x2a24c1]['id']);}}}this[_0xd4ce('0xcf')](_0x5516e4['id'],_0x1f8f44,_0x499e58,_0x5516e4['dialOrderByScheduledAt'],_0x5516e4)[_0xd4ce('0xc0')](function(_0x5418de){_0x5516e4[_0xd4ce('0xd0')]-=_0x499e58;_0x5516e4[_0xd4ce('0xd0')]=_0x5516e4[_0xd4ce('0xd0')]>0x0?_0x5516e4[_0xd4ce('0xd0')]:0x0;if(!checkContactEmpty(_0x5418de)){_0x2c29ec['countReScheduled'](_0x5516e4)[_0xd4ce('0xc0')](sendMessageReschedule(_0x5516e4))[_0xd4ce('0xb9')](loggerCatch('[countReScheduled]\x20'));}else{_0x5516e4[_0xd4ce('0x79')]+=_0x5418de[_0xd4ce('0xa5')];_0x5516e4[_0xd4ce('0x42')]=_0x5516e4[_0xd4ce('0x5e')]===_0xd4ce('0x9')?'ACTIVE':_0xd4ce('0x21f');for(var _0x2f33fe=0x0;_0x2f33fe<_0x5418de[_0xd4ce('0xa5')];_0x2f33fe+=0x1){if(_['isNil'](_0x5418de[_0x2f33fe])||_[_0xd4ce('0xb7')](_0x5418de[_0x2f33fe][_0xd4ce('0x199')])||_[_0xd4ce('0xb7')](_0x5418de[_0x2f33fe]['phone'])){_0x2c29ec[_0xd4ce('0xd7')]('[actionOriginate]\x20',_0x5516e4,_0x5418de[_0x2f33fe]);}else{_0x2c29ec['checkIsBlackList'](_[_0xd4ce('0xda')](_0x5418de[_0x2f33fe],['VoiceQueueId',_0xd4ce('0x180')]))['then'](_0x2c29ec[_0xd4ce('0x200')](_0x5516e4,_0x5418de[_0x2f33fe]))['catch'](_0x2c29ec[_0xd4ce('0x21a')](_0xd4ce('0x218'),_0x5516e4));}}}})[_0xd4ce('0xb9')](loggerGetContactDialer(_0xd4ce('0x220'),_0x5516e4,_0x499e58));}};Dialer[_0xd4ce('0x1e')][_0xd4ce('0x9c')]=function(_0x4ffb2f){if(_0x4ffb2f[_0xd4ce('0x21d')]>0x0){var _0x277509=_0x4ffb2f[_0xd4ce('0x21d')]-_0x4ffb2f['originated']-_0x4ffb2f['talking'];if(_0x277509>0x0){this[_0xd4ce('0x221')](_0x4ffb2f);}else{loggerPredictiveCalls[_0xd4ce('0x87')](_0xd4ce('0x222'));}}else{this['tryOriginatePredictive'](_0x4ffb2f);}};Dialer[_0xd4ce('0x1e')][_0xd4ce('0x221')]=function(_0x29b56c){var _0x3db1e8=this;var _0x5176aa=[];_0x29b56c[_0xd4ce('0x79')]+=0x1;for(var _0x1e07e3 in this['agents']){if(typeof this['agents'][_0x1e07e3]!==_0xd4ce('0xa6')){if(this[_0xd4ce('0x25')][_0x1e07e3][_0xd4ce('0x106')]===_0xd4ce('0x21e')&&this[_0xd4ce('0x25')][_0x1e07e3][_0xd4ce('0xe5')]==='reachable'){_0x5176aa['push'](this[_0xd4ce('0x25')][_0x1e07e3]['id']);}}}this[_0xd4ce('0xcf')](_0x29b56c['id'],_0x5176aa,0x1,_0x29b56c[_0xd4ce('0x215')],_0x29b56c)[_0xd4ce('0xc0')](function(_0x5bdf4a){if(!checkContactEmpty(_0x5bdf4a)){checkContactLowerLimitOriginate(_0x29b56c,0x1,0x0);_0x3db1e8[_0xd4ce('0xbf')](_0x29b56c)[_0xd4ce('0xc0')](sendMessageReschedule(_0x29b56c))[_0xd4ce('0xb9')](loggerCatch('[countReScheduled]\x20'));}else{_0x29b56c[_0xd4ce('0x42')]=_0xd4ce('0x21f');if(_['isNil'](_0x5bdf4a[0x0])||_['isNil'](_0x5bdf4a[0x0]['Contact'])||_['isNil'](_0x5bdf4a[0x0][_0xd4ce('0x180')])){_0x3db1e8[_0xd4ce('0xd7')](_0xd4ce('0x218'),_0x29b56c,_0x5bdf4a[0x0]);}else{_0x3db1e8[_0xd4ce('0xc2')](_[_0xd4ce('0xda')](_0x5bdf4a[0x0],[_0xd4ce('0xde'),_0xd4ce('0x180')]))[_0xd4ce('0xc0')](_0x3db1e8[_0xd4ce('0x200')](_0x29b56c,_0x5bdf4a[0x0]))[_0xd4ce('0xb9')](_0x3db1e8[_0xd4ce('0x21a')]('[actionOriginatePredictive]\x20',_0x29b56c));}}})[_0xd4ce('0xb9')](loggerGetContactDialer('[getContactDialerPredictive]',_0x29b56c,0x1));emitVoiceQueueSummary(_0x29b56c);};Dialer[_0xd4ce('0x1e')][_0xd4ce('0x1f4')]=function(_0x1a9cc2,_0x592097,_0x2bfc71,_0x515b2b,_0x5a41c7,_0x2eca93){loggerPredictive['info'](_0xd4ce('0x223'));loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x224'),_0x1a9cc2);loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x225'),_0x592097);loggerPredictive[_0xd4ce('0x87')]('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',_0x2bfc71);loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x226'),_0x515b2b);loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x227'),_0x5a41c7);loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x8e'));return new Promise(function(_0x5e5697,_0x3634b7){if(_0x1a9cc2<=0x0||isNaN(_0x1a9cc2)){return _0x3634b7(msgResponse(_0xd4ce('0x228'),'Error','m\x20=\x20'+_0x1a9cc2));}if(_0x2bfc71<=0x0||isNaN(_0x2bfc71)){return _0x3634b7(msgResponse('[abandonmentRate]',_0xd4ce('0x1a9'),_0xd4ce('0x229')+_0x2bfc71));}if(_0x515b2b<=0x0||isNaN(_0x515b2b)){return _0x3634b7(msgResponse('[abandonmentRate]',_0xd4ce('0x1a9'),'p\x20=\x20'+_0x515b2b));}if(_0x592097<=0x0||isNaN(_0x592097)){return _0x3634b7(msgResponse(_0xd4ce('0x228'),_0xd4ce('0x1a9'),_0xd4ce('0x22a')+_0x592097));}if(_0x5a41c7<=0x0||isNaN(_0x5a41c7)){return _0x3634b7(msgResponse(_0xd4ce('0x228'),_0xd4ce('0x1a9'),_0xd4ce('0x22b')+_0x5a41c7));}_0x2eca93=_0x2eca93||0x0;var _0x52eebb=0x1/_0x2bfc71;var _0x346c4c=0x0;var _0x38f647=0x0;var _0x593f9d=0x0;var _0x216e0e=0x0;for(var _0x988478=0x0;_0x593f9d<_0x5a41c7;_0x988478+=0x1){_0x38f647=_0x988478/_0x592097;_0x346c4c=(_0x515b2b*_0x38f647+_0x2eca93)/_0x52eebb;_0x593f9d=erlangb(_0x346c4c,_0x1a9cc2);_0x216e0e=_0x346c4c/_0x1a9cc2*(0x1-erlangb(_0x346c4c,_0x1a9cc2));}return _0x5e5697({'erlangCalls':_0x988478,'erlangCallToSecond':_0x592097/_0x988478,'erlangAbandonmentRate':_0x593f9d,'erlangBusyFactor':_0x216e0e});});};Dialer[_0xd4ce('0x1e')][_0xd4ce('0x1f6')]=function(_0x325e71,_0x5cbd9b,_0x5897ad,_0xc589b7,_0x79a353,_0x427bc4){loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x22c'));loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x224'),_0x325e71);loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x225'),_0x5cbd9b);loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x22d'),_0x5897ad);loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x226'),_0xc589b7);loggerPredictive[_0xd4ce('0x87')]('Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x79a353);loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x8e'));return new Promise(function(_0x4c961b,_0x2e23c3){if(_0x325e71<=0x0||isNaN(_0x325e71)){return _0x2e23c3(msgResponse('[busyFactor]',_0xd4ce('0x1a9'),_0xd4ce('0x22e')+_0x325e71));}if(_0x5897ad<=0x0||isNaN(_0x5897ad)){return _0x2e23c3(msgResponse(_0xd4ce('0x22f'),'Error',_0xd4ce('0x229')+_0x5897ad));}if(_0xc589b7<=0x0||isNaN(_0xc589b7)){return _0x2e23c3(msgResponse(_0xd4ce('0x22f'),_0xd4ce('0x1a9'),_0xd4ce('0x230')+_0xc589b7));}if(_0x5cbd9b<=0x0||isNaN(_0x5cbd9b)){return _0x2e23c3(msgResponse(_0xd4ce('0x22f'),_0xd4ce('0x1a9'),_0xd4ce('0x22a')+_0x5cbd9b));}if(_0x79a353<=0x0||isNaN(_0x79a353)){return _0x2e23c3(msgResponse(_0xd4ce('0x22f'),'Error',_0xd4ce('0x231')+_0x79a353));}_0x427bc4=_0x427bc4||0x0;var _0x2dde8d=0x1/_0x5897ad;var _0xd62c5=0x0;var _0x46a78a=0x0;var _0x44b1c3=0x0;var _0xf93b5e=0x0;for(var _0x2f5681=0x0;_0xf93b5e<_0x79a353;_0x2f5681+=0x1){_0x46a78a=_0x2f5681/_0x5cbd9b;_0xd62c5=(_0xc589b7*_0x46a78a+_0x427bc4)/_0x2dde8d;_0x44b1c3=erlangb(_0xd62c5,_0x325e71);_0xf93b5e=_0xd62c5/_0x325e71*(0x1-erlangb(_0xd62c5,_0x325e71));}return _0x4c961b({'erlangCalls':_0x2f5681,'erlangCallToSecond':_0x5cbd9b/_0x2f5681,'erlangAbandonmentRate':_0x44b1c3,'erlangBusyFactor':_0xf93b5e});});};module[_0xd4ce('0x232')]=Dialer;
\ No newline at end of file
index d2e4e05..cc583fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26e6=['milliseconds','diff','seconds','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','calleridnum','number','responsetime','droptime','endtime','starttime','holdtime','talktime','membername','connectedlinename','reason','callback','callbackuniqueid','callbackat','ContactId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','util','lodash'];(function(_0x121886,_0x8cd8e5){var _0x20ca01=function(_0x15e144){while(--_0x15e144){_0x121886['push'](_0x121886['shift']());}};_0x20ca01(++_0x8cd8e5);}(_0x26e6,0x184));var _0x626e=function(_0x16cfae,_0x3c3596){_0x16cfae=_0x16cfae-0x0;var _0x5a04cf=_0x26e6[_0x16cfae];return _0x5a04cf;};'use strict';var util=require(_0x626e('0x0'));var _=require(_0x626e('0x1'));var moment=require('moment');function getSeconds(_0x20db7e,_0xed2237){var _0x368f1a=moment(_0x20db7e)[_0x626e('0x2')](0x0);var _0x2d5568=moment(_0xed2237)[_0x626e('0x2')](0x0);return _0x368f1a[_0x626e('0x3')](_0x2d5568,_0x626e('0x4'));}function QueueCallerAbandon(_0x31c9bc,_0x618714){this[_0x626e('0x5')]=_0x31c9bc[_0x626e('0x5')];this[_0x626e('0x6')]=_0x31c9bc[_0x626e('0x6')];this[_0x626e('0x7')]=_0x31c9bc['type']===_0x626e('0x8')?_0x626e('0x9'):_0x31c9bc['type'];this[_0x626e('0xa')]=_0x31c9bc[_0x626e('0xa')];this['countcongestionretry']=_0x31c9bc['countcongestionretry'];this[_0x626e('0xb')]=_0x31c9bc['countnoanswerretry'];this['countglobal']=_0x31c9bc[_0x626e('0xa')]+_0x31c9bc['countcongestionretry']+_0x31c9bc[_0x626e('0xb')]+_0x31c9bc[_0x626e('0xc')]+_0x31c9bc[_0x626e('0xd')]+_0x31c9bc[_0x626e('0xe')]+_0x31c9bc[_0x626e('0xf')]+_0x31c9bc[_0x626e('0x10')];this['countnosuchnumberretry']=_0x31c9bc[_0x626e('0xc')];this[_0x626e('0xd')]=_0x31c9bc['countdropretry'];this[_0x626e('0xe')]=_0x31c9bc['countabandonedretry'];this[_0x626e('0xf')]=_0x31c9bc[_0x626e('0xf')];this['countagentrejectretry']=_0x31c9bc[_0x626e('0x10')];this[_0x626e('0x11')]=_0x618714[_0x626e('0x11')];this[_0x626e('0x12')]=_0x31c9bc['name'];this[_0x626e('0x13')]=_0x31c9bc[_0x626e('0x14')];this['starttime']=_0x31c9bc['starttime'];this[_0x626e('0x15')]=_0x31c9bc['responsetime'];this[_0x626e('0x16')]=_0x31c9bc[_0x626e('0x16')];this[_0x626e('0x17')]=this[_0x626e('0x16')];this['ringtime']=getSeconds(_0x31c9bc[_0x626e('0x15')],_0x31c9bc[_0x626e('0x18')]);this[_0x626e('0x19')]=getSeconds(this[_0x626e('0x16')],_0x31c9bc[_0x626e('0x15')]);this[_0x626e('0x1a')]=0x0;this[_0x626e('0x9')]=_0x618714[_0x626e('0x9')];this[_0x626e('0x1b')]=_0x618714[_0x626e('0x1c')];this[_0x626e('0x1d')]=_0x618714[_0x626e('0x1d')];this[_0x626e('0x1e')]=_0x31c9bc[_0x626e('0x1e')];this[_0x626e('0x1f')]=_0x31c9bc[_0x626e('0x1f')];this[_0x626e('0x20')]=_0x31c9bc[_0x626e('0x20')];this['recallme']=_0x31c9bc['recallme'];this['ContactId']=_0x31c9bc[_0x626e('0x21')];this['ListId']=_0x31c9bc['ListId'];this[_0x626e('0x22')]=_0x31c9bc[_0x626e('0x22')];this[_0x626e('0x23')]=_0x31c9bc[_0x626e('0x23')];this[_0x626e('0x24')]=_0x31c9bc[_0x626e('0x24')];this['originatecalleridnum']=_0x31c9bc[_0x626e('0x25')]||'';this[_0x626e('0x26')]=_0x31c9bc[_0x626e('0x26')]||'';}module['exports']=QueueCallerAbandon;
\ No newline at end of file
+var _0x6a2f=['calleridname','name','calleridnum','number','starttime','responsetime','droptime','endtime','ringtime','holdtime','talktime','membername','connectedlinename','reason','callback','callbackuniqueid','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','lodash','moment','milliseconds','seconds','scheduledat','type','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','countdropretry','uniqueid'];(function(_0x3ffb80,_0x209661){var _0x3a8a4c=function(_0x24b3e2){while(--_0x24b3e2){_0x3ffb80['push'](_0x3ffb80['shift']());}};_0x3a8a4c(++_0x209661);}(_0x6a2f,0xc1));var _0xf6a2=function(_0xafdec6,_0x3d94df){_0xafdec6=_0xafdec6-0x0;var _0x372bdb=_0x6a2f[_0xafdec6];return _0x372bdb;};'use strict';var util=require('util');var _=require(_0xf6a2('0x0'));var moment=require(_0xf6a2('0x1'));function getSeconds(_0x2147ef,_0x2768ef){var _0xa092f1=moment(_0x2147ef)[_0xf6a2('0x2')](0x0);var _0x70f129=moment(_0x2768ef)[_0xf6a2('0x2')](0x0);return _0xa092f1['diff'](_0x70f129,_0xf6a2('0x3'));}function QueueCallerAbandon(_0x554a0f,_0x582569){this[_0xf6a2('0x4')]=_0x554a0f[_0xf6a2('0x4')];this[_0xf6a2('0x5')]=_0x554a0f[_0xf6a2('0x5')];this['campaigntype']=_0x554a0f['type']==='outbound'?_0xf6a2('0x6'):_0x554a0f[_0xf6a2('0x5')];this['countbusyretry']=_0x554a0f[_0xf6a2('0x7')];this[_0xf6a2('0x8')]=_0x554a0f[_0xf6a2('0x8')];this[_0xf6a2('0x9')]=_0x554a0f[_0xf6a2('0x9')];this[_0xf6a2('0xa')]=_0x554a0f['countbusyretry']+_0x554a0f[_0xf6a2('0x8')]+_0x554a0f[_0xf6a2('0x9')]+_0x554a0f[_0xf6a2('0xb')]+_0x554a0f['countdropretry']+_0x554a0f[_0xf6a2('0xc')]+_0x554a0f[_0xf6a2('0xd')]+_0x554a0f[_0xf6a2('0xe')];this[_0xf6a2('0xb')]=_0x554a0f[_0xf6a2('0xb')];this[_0xf6a2('0xf')]=_0x554a0f[_0xf6a2('0xf')];this[_0xf6a2('0xc')]=_0x554a0f[_0xf6a2('0xc')];this[_0xf6a2('0xd')]=_0x554a0f[_0xf6a2('0xd')];this[_0xf6a2('0xe')]=_0x554a0f[_0xf6a2('0xe')];this['uniqueid']=_0x582569[_0xf6a2('0x10')];this[_0xf6a2('0x11')]=_0x554a0f[_0xf6a2('0x12')];this[_0xf6a2('0x13')]=_0x554a0f[_0xf6a2('0x14')];this[_0xf6a2('0x15')]=_0x554a0f['starttime'];this['responsetime']=_0x554a0f[_0xf6a2('0x16')];this[_0xf6a2('0x17')]=_0x554a0f['droptime'];this[_0xf6a2('0x18')]=this[_0xf6a2('0x17')];this[_0xf6a2('0x19')]=getSeconds(_0x554a0f['responsetime'],_0x554a0f[_0xf6a2('0x15')]);this[_0xf6a2('0x1a')]=getSeconds(this[_0xf6a2('0x17')],_0x554a0f[_0xf6a2('0x16')]);this[_0xf6a2('0x1b')]=0x0;this[_0xf6a2('0x6')]=_0x582569[_0xf6a2('0x6')];this[_0xf6a2('0x1c')]=_0x582569[_0xf6a2('0x1d')];this['reason']=_0x582569[_0xf6a2('0x1e')];this[_0xf6a2('0x1f')]=_0x554a0f[_0xf6a2('0x1f')];this[_0xf6a2('0x20')]=_0x554a0f[_0xf6a2('0x20')];this['callbackat']=_0x554a0f['callbackat'];this[_0xf6a2('0x21')]=_0x554a0f[_0xf6a2('0x21')];this['ContactId']=_0x554a0f[_0xf6a2('0x22')];this[_0xf6a2('0x23')]=_0x554a0f[_0xf6a2('0x23')];this[_0xf6a2('0x24')]=_0x554a0f['UserId'];this[_0xf6a2('0x25')]=_0x554a0f[_0xf6a2('0x25')];this[_0xf6a2('0x26')]=_0x554a0f[_0xf6a2('0x26')];this[_0xf6a2('0x27')]=_0x554a0f[_0xf6a2('0x27')]||'';this['originatecalleridname']=_0x554a0f[_0xf6a2('0x28')]||'';}module[_0xf6a2('0x29')]=QueueCallerAbandon;
\ No newline at end of file
index 15ca328..aae05a3 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(_0x5da248,_0x10bf67){var _0x7f731c=function(_0x45b212){while(--_0x45b212){_0x5da248['push'](_0x5da248['shift']());}};_0x7f731c(++_0x10bf67);}(_0xa9e0,0x123));var _0x0a9e=function(_0x40ac5e,_0x2de228){_0x40ac5e=_0x40ac5e-0x0;var _0x2839d6=_0xa9e0[_0x40ac5e];return _0x2839d6;};'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(_0x2ba529,_0x125df9){var _0x14d3b5=function(_0xd4677f){while(--_0xd4677f){_0x2ba529['push'](_0x2ba529['shift']());}};_0x14d3b5(++_0x125df9);}(_0xa9e0,0x123));var _0x0a9e=function(_0x481bf7,_0x437f69){_0x481bf7=_0x481bf7-0x0;var _0x461787=_0xa9e0[_0x481bf7];return _0x461787;};'use strict';var util=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));function Action(_0x5dd881,_0x550fbc,_0x18d5c9){this['uniqueid']=_0x5dd881||undefined;this[_0x0a9e('0x3')]=util[_0x0a9e('0x4')](_0x0a9e('0x5'),_0x550fbc[_0x0a9e('0x6')],_0x550fbc[_0x0a9e('0x7')]['name'],_0x18d5c9[_0x0a9e('0x8')]);this[_0x0a9e('0x9')]=_0x550fbc[_0x0a9e('0x9')];this['headerinfo']=_0x550fbc['headerinfo'];this[_0x0a9e('0xa')]=_0x18d5c9['path'];this['AttachmentId']=_0x18d5c9[_0x0a9e('0xb')];}module[_0x0a9e('0xc')]=Action;
\ No newline at end of file
index a479360..fa6f833 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74ba=['Fax\x20failed','checkAfterSend','checkTrunk','Trunk','isValid','Trunk\x20Reachable','gs\x20-q\x20-dNOPAUSE\x20-dBATCH\x20-sDEVICE=tiffg4\x20-sPAPERSIZE=letter\x20-sOutputFile=/var/opt/motion2/server/files/attachments/%s.tif\x20\x20%s\x20-c\x20quit','execute','format','dir','XMF-PATH','Action','variablesAction','addVariables','ext','isTrunkReachable','isNil','active','trunks','SIP/%s','reachable','unmonitored','[Fax][checkTrunk][Trunk\x20not\x20working\x20correctly]','\x20Trunk\x20is\x20not\x20active','[Fax][checkTrunk][Empty\x20Fax]','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','Is\x20Valid','exports','lodash','bluebird','uuid','moment','path','tiff2pdf','./util/gs','../../../config/logger','fax','../ami','./channel','./action','../rpc/faxAccount','../rpc/attachment','../rpc/faxMessage','faxAccounts','actions','newchannel','syncNewchannel','bind','varset','syncVarSet','newexten','syncNewExten','faxstatus','receivefax','syncReceiveFax','hangup','syncHangup','originateresponse','syncOriginateResponse','prototype','context','hasOwnProperty','exten','localstationid','channels','uniqueid','channel','name','info','\x20syncNewchannel\x20','variable','value','syncNewState','channelstate','channelstatedesc','syncFaxStatus','operation','status','filename','\x20syncFaxStatus\x20','pagestransferred','resolution','transferrate','calleridnum','\x20result\x20conversion\x20file\x20','create','parse','.pdf','application/pdf','then','notify','catch','error','\x20notify\x20','stringify','\x20receiveFax\x20','merge','pick','response','reason','AttachmentId','update','logger','[Fax][Message][Error][Updated]','[Fax][Message][Error][NoUpdate1]','updateStatus','[Fax][Message][Updated]','[Fax][Message][NoUpdate1]','finally','[Fax][Message][NoUpdate2]','\x20hangup\x20sendFile\x20','faxpages','SUCCESS','faxstatusstring','SENDING\x20FAILED:\x20','send','execOriginate','FaxAccountId','[Fax][execOriginate][success]','Fax\x20received','message'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x74ba,0x114));var _0xa74b=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x74ba[_0x2641f9];return _0x585741;};'use strict';var util=require('util');var _=require(_0xa74b('0x0'));var BPromise=require(_0xa74b('0x1'));var uuid=require(_0xa74b('0x2'));var moment=require(_0xa74b('0x3'));var path=require(_0xa74b('0x4'));var tiff2pdf=require(_0xa74b('0x5'));var gs=require(_0xa74b('0x6'));var logger=require(_0xa74b('0x7'))(_0xa74b('0x8'));var ami=require(_0xa74b('0x9'));var rpcDb=require('./rpcDb');var Channel=require(_0xa74b('0xa'));var ut=require('./util/util');var Action=require(_0xa74b('0xb'));var faxAccount=require(_0xa74b('0xc'));var attachment=require(_0xa74b('0xd'));var faxMessage=require(_0xa74b('0xe'));function Fax(_0x33a7ca){this['channels']={};this[_0xa74b('0xf')]=_0x33a7ca['faxAccounts'];this['trunks']=_0x33a7ca['trunks'];this[_0xa74b('0x10')]={};ami['on'](_0xa74b('0x11'),this[_0xa74b('0x12')][_0xa74b('0x13')](this));ami['on'](_0xa74b('0x14'),this[_0xa74b('0x15')][_0xa74b('0x13')](this));ami['on']('newstate',this['syncNewState'][_0xa74b('0x13')](this));ami['on'](_0xa74b('0x16'),this[_0xa74b('0x17')]['bind'](this));ami['on'](_0xa74b('0x18'),this['syncFaxStatus'][_0xa74b('0x13')](this));ami['on'](_0xa74b('0x19'),this[_0xa74b('0x1a')]['bind'](this));ami['on'](_0xa74b('0x1b'),this[_0xa74b('0x1c')]['bind'](this));ami['on'](_0xa74b('0x1d'),this[_0xa74b('0x1e')]['bind'](this));}Fax[_0xa74b('0x1f')][_0xa74b('0x12')]=function(_0x3a2f85){if(_0x3a2f85[_0xa74b('0x20')]==='from-voip-provider'){for(var _0x443dda in this[_0xa74b('0xf')]){if(this[_0xa74b('0xf')][_0xa74b('0x21')](_0x443dda)){if(_0x3a2f85[_0xa74b('0x22')]===this['faxAccounts'][_0x443dda][_0xa74b('0x23')]){this[_0xa74b('0x24')][_0x3a2f85[_0xa74b('0x25')]]={};this[_0xa74b('0x24')][_0x3a2f85[_0xa74b('0x25')]][_0xa74b('0x26')]=_0x3a2f85['channel'];this[_0xa74b('0x24')][_0x3a2f85[_0xa74b('0x25')]]['id']=this[_0xa74b('0xf')][_0x443dda]['id'];this[_0xa74b('0x24')][_0x3a2f85[_0xa74b('0x25')]][_0xa74b('0x27')]=this[_0xa74b('0xf')][_0x443dda][_0xa74b('0x27')];logger['info'](_0x3a2f85['uniqueid'],'\x20syncNewchannel\x20');}}}}if(this[_0xa74b('0x10')][_0x3a2f85[_0xa74b('0x25')]]){this[_0xa74b('0x24')][_0x3a2f85[_0xa74b('0x25')]]={};this[_0xa74b('0x24')][_0x3a2f85[_0xa74b('0x25')]][_0xa74b('0x26')]=_0x3a2f85[_0xa74b('0x26')];logger[_0xa74b('0x28')](_0x3a2f85[_0xa74b('0x25')],_0xa74b('0x29'));}};Fax[_0xa74b('0x1f')][_0xa74b('0x15')]=function(_0x516459){if(this[_0xa74b('0x24')][_0x516459[_0xa74b('0x25')]]){for(var _0x531daa in _0x516459[_0xa74b('0x2a')]){if(_0x516459[_0xa74b('0x2a')]['hasOwnProperty'](_0x531daa)){this[_0xa74b('0x24')][_0x516459[_0xa74b('0x25')]][_0x531daa]=_0x516459[_0xa74b('0x2b')];}}}};Fax[_0xa74b('0x1f')][_0xa74b('0x2c')]=function(_0x29e29b){if(this[_0xa74b('0x24')][_0x29e29b[_0xa74b('0x25')]]){this[_0xa74b('0x24')][_0x29e29b['uniqueid']][_0xa74b('0x2d')]=_0x29e29b['channelstate'];this[_0xa74b('0x24')][_0x29e29b[_0xa74b('0x25')]][_0xa74b('0x2e')]=_0x29e29b[_0xa74b('0x2e')];}};Fax[_0xa74b('0x1f')]['syncNewExten']=function(_0x50504d){if(this['channels'][_0x50504d[_0xa74b('0x25')]]){for(var _0x5289e4 in _0x50504d['variable']){if(_0x50504d[_0xa74b('0x2a')][_0xa74b('0x21')](_0x5289e4)){this[_0xa74b('0x24')][_0x50504d['uniqueid']][_0x5289e4]=_0x50504d[_0xa74b('0x2b')];}}}};Fax[_0xa74b('0x1f')][_0xa74b('0x2f')]=function(_0x5e5291){if(this['channels'][_0x5e5291[_0xa74b('0x25')]]){this[_0xa74b('0x24')][_0x5e5291['uniqueid']][_0xa74b('0x30')]=_0x5e5291[_0xa74b('0x30')];this['channels'][_0x5e5291['uniqueid']][_0xa74b('0x31')]=_0x5e5291[_0xa74b('0x31')];this['channels'][_0x5e5291[_0xa74b('0x25')]][_0xa74b('0x23')]=_0x5e5291['localstationid'];this[_0xa74b('0x24')][_0x5e5291[_0xa74b('0x25')]][_0xa74b('0x32')]=_0x5e5291[_0xa74b('0x32')];logger[_0xa74b('0x28')](_0x5e5291[_0xa74b('0x25')],_0xa74b('0x33'));}};Fax['prototype']['syncReceiveFax']=function(_0x4c90b7){var _0xce095a=this;if(this[_0xa74b('0x24')][_0x4c90b7[_0xa74b('0x25')]]){var _0xf93bc=this['channels'][_0x4c90b7[_0xa74b('0x25')]]['id'];this[_0xa74b('0x24')][_0x4c90b7[_0xa74b('0x25')]]['remotestationid']=_0x4c90b7['remotestationid'];this['channels'][_0x4c90b7[_0xa74b('0x25')]][_0xa74b('0x34')]=_0x4c90b7[_0xa74b('0x34')];this[_0xa74b('0x24')][_0x4c90b7[_0xa74b('0x25')]]['localstationid']=_0x4c90b7[_0xa74b('0x23')];this[_0xa74b('0x24')][_0x4c90b7[_0xa74b('0x25')]][_0xa74b('0x35')]=_0x4c90b7['resolution'];this[_0xa74b('0x24')][_0x4c90b7['uniqueid']][_0xa74b('0x36')]=_0x4c90b7[_0xa74b('0x36')];this[_0xa74b('0x24')][_0x4c90b7[_0xa74b('0x25')]][_0xa74b('0x32')]=_0x4c90b7[_0xa74b('0x32')];this[_0xa74b('0x24')][_0x4c90b7[_0xa74b('0x25')]][_0xa74b('0x37')]=_0x4c90b7[_0xa74b('0x37')];if(this['channels'][_0x4c90b7[_0xa74b('0x25')]][_0xa74b('0x34')]>0x0){tiff2pdf(_0x4c90b7[_0xa74b('0x32')],'/var/opt/motion2/server/files/attachments/',function(_0x4b5d20){logger[_0xa74b('0x28')](_0x4c90b7[_0xa74b('0x25')],_0xa74b('0x38'),_0x4b5d20['message']);attachment[_0xa74b('0x39')]({'name':path['parse'](_0x4c90b7['filename'])[_0xa74b('0x27')],'basename':path[_0xa74b('0x3a')](_0x4c90b7[_0xa74b('0x32')])[_0xa74b('0x27')]+_0xa74b('0x3b'),'type':_0xa74b('0x3c')})[_0xa74b('0x3d')](function(_0x93a5e){faxAccount[_0xa74b('0x3e')](_0xf93bc,{'from':_0x4c90b7[_0xa74b('0x37')],'mapKey':'fax','body':path[_0xa74b('0x3a')](_0x4c90b7[_0xa74b('0x32')])[_0xa74b('0x27')]+_0xa74b('0x3b'),'AttachmentId':_0x93a5e['id']})[_0xa74b('0x3f')](function(_0x2f500e){logger[_0xa74b('0x40')](_0x4c90b7[_0xa74b('0x25')],_0xa74b('0x41'),JSON[_0xa74b('0x42')](_0x2f500e));});})[_0xa74b('0x3f')](function(_0xe5ff10){logger[_0xa74b('0x40')](_0x4c90b7[_0xa74b('0x25')],_0xa74b('0x43'),JSON[_0xa74b('0x42')](_0xe5ff10));});});}logger[_0xa74b('0x28')](_0x4c90b7['uniqueid'],'\x20receiveFax\x20');}};Fax[_0xa74b('0x1f')][_0xa74b('0x1e')]=function(_0x586e08){if(this['actions'][_0x586e08[_0xa74b('0x25')]]){_[_0xa74b('0x44')](this['channels'][_0x586e08[_0xa74b('0x25')]],_[_0xa74b('0x45')](_0x586e08,[_0xa74b('0x46'),_0xa74b('0x47')]));}};function updateStatus(_0x5a732d){if(_0x5a732d[_0xa74b('0x48')]){faxMessage[_0xa74b('0x49')](_0x5a732d[_0xa74b('0x48')],{'failMessage':'SENDING\x20FAILED\x20'})['then'](function(_0x1d6c14){ut[_0xa74b('0x4a')](_0xa74b('0x4b'),_0x1d6c14);})['catch'](function(_0x221ded){ut[_0xa74b('0x4a')](_0xa74b('0x4c'),_0x221ded);});}else{ut[_0xa74b('0x4a')]('[Fax][Message][Error][NoUpdate2]');}}Fax[_0xa74b('0x1f')][_0xa74b('0x4d')]=function(_0x1a4f34,_0x377fff,_0x440c9b){var _0x93ee9e=this;var _0x1def6a={};if(_0x377fff){_0x1def6a={'read':_0x377fff};}else{_0x1def6a={'failMessage':_0x440c9b};}if(this[_0xa74b('0x10')][_0x1a4f34]['AttachmentId']){faxMessage[_0xa74b('0x49')](this['actions'][_0x1a4f34][_0xa74b('0x48')],_0x1def6a)['then'](function(_0x5d59bd){ut[_0xa74b('0x4a')](_0xa74b('0x4e'),_0x5d59bd);})[_0xa74b('0x3f')](function(_0x1ae4c9){ut[_0xa74b('0x4a')](_0xa74b('0x4f'),_0x1ae4c9);})[_0xa74b('0x50')](function(){delete _0x93ee9e[_0xa74b('0x24')][_0x1a4f34];delete _0x93ee9e[_0xa74b('0x10')][_0x1a4f34];});}else{ut['logger'](_0xa74b('0x51'));delete this['channels'][_0x1a4f34];delete this[_0xa74b('0x10')][_0x1a4f34];}};Fax[_0xa74b('0x1f')][_0xa74b('0x1c')]=function(_0x5100b2){var _0x5c7b39=this;if(this['channels'][_0x5100b2[_0xa74b('0x25')]]){if(this[_0xa74b('0x10')][_0x5100b2[_0xa74b('0x25')]]){this[_0xa74b('0x24')][_0x5100b2['uniqueid']]['id']=this[_0xa74b('0x10')][_0x5100b2[_0xa74b('0x25')]]['id'];this['channels'][_0x5100b2['uniqueid']]['name']=this[_0xa74b('0x10')][_0x5100b2[_0xa74b('0x25')]][_0xa74b('0x27')];}logger[_0xa74b('0x28')](_0x5100b2[_0xa74b('0x25')],this[_0xa74b('0x10')][_0x5100b2['uniqueid']]?_0xa74b('0x52'):'\x20hangup\x20faxRiceive\x20',JSON[_0xa74b('0x42')](this[_0xa74b('0x24')][_0x5100b2[_0xa74b('0x25')]]));if(this['actions'][_0x5100b2[_0xa74b('0x25')]]){if(this['channels'][_0x5100b2[_0xa74b('0x25')]][_0xa74b('0x53')]>0x0&&this[_0xa74b('0x24')][_0x5100b2[_0xa74b('0x25')]][_0xa74b('0x18')]===_0xa74b('0x54')){this['updateStatus'](_0x5100b2[_0xa74b('0x25')],!![]);}else{this[_0xa74b('0x4d')](_0x5100b2[_0xa74b('0x25')],![],this[_0xa74b('0x24')][_0x5100b2[_0xa74b('0x25')]][_0xa74b('0x55')]?_0xa74b('0x56')+this['channels'][_0x5100b2[_0xa74b('0x25')]][_0xa74b('0x55')]:'SENDING\x20FAILED');}}}};Fax[_0xa74b('0x1f')][_0xa74b('0x57')]=function(_0x17b06b){var _0x57aabe=this;return new BPromise(function(_0x5764a0,_0x2ecc6e){_0x57aabe[_0xa74b('0x58')](_0x17b06b,_0x57aabe[_0xa74b('0xf')][_0x17b06b[_0xa74b('0x59')]])[_0xa74b('0x3d')](function(_0x21abe7){ut[_0xa74b('0x4a')](_0xa74b('0x5a'),_0x21abe7);_0x5764a0(ut['message'](_0xa74b('0x5b')));})[_0xa74b('0x3f')](function(_0x3cd97d){ut[_0xa74b('0x4a')]('[Fax][execOriginate][failure]',_0x3cd97d);updateStatus(_0x17b06b);_0x2ecc6e(ut[_0xa74b('0x5c')](_0xa74b('0x5d')));});});};Fax['prototype'][_0xa74b('0x5e')]=function(_0x51f854){var _0x35ebc9=this;return new BPromise(function(_0x5c551d,_0x14dbed){var _0x156982=_0x35ebc9[_0xa74b('0x5f')](_0x35ebc9[_0xa74b('0xf')][_0x51f854[_0xa74b('0x59')]][_0xa74b('0x60')],_0x51f854);if(_0x156982[_0xa74b('0x61')]){_0x5c551d(ut[_0xa74b('0x5c')](_0xa74b('0x62')));}else{_0x14dbed(ut['message'](_0x156982[_0xa74b('0x5c')]));}});};function originate(_0x4b17bc,_0xaaae18,_0x1797b2){return new BPromise(function(_0x23bf95,_0x59a4d9){if(_0x1797b2){var _0x327617=util['format'](_0xa74b('0x63'),path[_0xa74b('0x3a')](_0x4b17bc[_0xa74b('0x4')])['name'],_0x4b17bc['path']);gs[_0xa74b('0x64')](_0x327617)['then'](function(){_0x4b17bc['path']=util[_0xa74b('0x65')]('%s/%s.tif',path[_0xa74b('0x3a')](_0x4b17bc[_0xa74b('0x4')])[_0xa74b('0x66')],path[_0xa74b('0x3a')](_0x4b17bc[_0xa74b('0x4')])[_0xa74b('0x27')]);_0xaaae18[_0xa74b('0x67')]=_0x4b17bc[_0xa74b('0x4')];ut[_0xa74b('0x4a')]('Convert\x20pdf\x20to\x20tif','');ami[_0xa74b('0x68')](ut[_0xa74b('0x69')](_0x4b17bc,_0xaaae18))[_0xa74b('0x3d')](function(_0x27a53b){_0x23bf95(_0x27a53b);})[_0xa74b('0x3f')](function(_0x30e850){_0x59a4d9(_0x30e850);});})['catch'](function(_0x1c27f2){_0x59a4d9(_0x1c27f2);});}else{ami[_0xa74b('0x68')](ut['variablesAction'](_0x4b17bc,_0xaaae18))[_0xa74b('0x3d')](function(_0x44a853){_0x23bf95(_0x44a853);})['catch'](function(_0x20d074){_0x59a4d9(_0x20d074);});}});}Fax['prototype'][_0xa74b('0x58')]=function(_0x49467f,_0x3f9aa5){var _0x54e2b7=this;return new BPromise(function(_0x1f0abd,_0x31ff57){var _0x2b8625=uuid['v4']();var _0x2750ef=ut[_0xa74b('0x6a')](_0x49467f,_0x3f9aa5);_0x54e2b7[_0xa74b('0x10')][_0x2b8625]=new Action(_0x2b8625,_0x3f9aa5,_0x49467f);var _0x81de4c=_0x54e2b7[_0xa74b('0x10')][_0x2b8625];if(path[_0xa74b('0x3a')](_0x49467f[_0xa74b('0x4')])[_0xa74b('0x6b')]===_0xa74b('0x3b')){originate(_0x81de4c,_0x2750ef,!![])[_0xa74b('0x3d')](function(_0x790762){_0x1f0abd(_0x790762);})['catch'](function(_0x3c7e2f){_0x31ff57(_0x3c7e2f);});}else{originate(_0x81de4c,_0x2750ef,![])[_0xa74b('0x3d')](function(_0x2a5d8e){_0x1f0abd(_0x2a5d8e);})[_0xa74b('0x3f')](function(_0x1dd1f5){_0x31ff57(_0x1dd1f5);});}});};Fax['prototype'][_0xa74b('0x6c')]=function(_0x2bea65){return!_[_0xa74b('0x6d')](_0x2bea65)&&!_[_0xa74b('0x6d')](_0x2bea65['name'])&&!_[_0xa74b('0x6d')](_0x2bea65[_0xa74b('0x6e')])&&_0x2bea65['active']&&!_[_0xa74b('0x6d')](this[_0xa74b('0x6f')][util[_0xa74b('0x65')](_0xa74b('0x70'),_0x2bea65['name'])])&&!_[_0xa74b('0x6d')](this[_0xa74b('0x6f')][util[_0xa74b('0x65')](_0xa74b('0x70'),_0x2bea65[_0xa74b('0x27')])]['status'])&&(this[_0xa74b('0x6f')][util['format']('SIP/%s',_0x2bea65[_0xa74b('0x27')])][_0xa74b('0x31')]===_0xa74b('0x71')||this['trunks'][util[_0xa74b('0x65')](_0xa74b('0x70'),_0x2bea65['name'])][_0xa74b('0x31')]===_0xa74b('0x72'));};Fax[_0xa74b('0x1f')][_0xa74b('0x5f')]=function(_0xcf49bc,_0x1c6faa){if(!this[_0xa74b('0x6c')](_0xcf49bc)){ut[_0xa74b('0x4a')](_0xa74b('0x73'),_[_0xa74b('0x6d')](_0xcf49bc)?'':_0xcf49bc[_0xa74b('0x27')]+_0xa74b('0x74'));return{'isValid':![],'message':'Trunk\x20not\x20working\x20correctly'};}if(_[_0xa74b('0x6d')](_0x1c6faa['fax'])){ut[_0xa74b('0x4a')](_0xa74b('0x75'),JSON[_0xa74b('0x42')](_0x1c6faa));return{'isValid':![],'message':_0xa74b('0x76')};}if(_[_0xa74b('0x6d')](_0x1c6faa[_0xa74b('0x4')])){ut[_0xa74b('0x4a')](_0xa74b('0x77'),JSON[_0xa74b('0x42')](_0x1c6faa));return{'isValid':![],'message':_0xa74b('0x78')};}return{'isValid':!![],'message':_0xa74b('0x79')};};module[_0xa74b('0x7a')]=Fax;
\ No newline at end of file
+var _0xc71e=['catch','error','\x20notify\x20','stringify','\x20receiveFax\x20','syncOriginateResponse','merge','pick','response','AttachmentId','update','then','[Fax][Message][Error][Updated]','logger','[Fax][Message][Error][NoUpdate1]','[Fax][Message][Error][NoUpdate2]','updateStatus','finally','[Fax][Message][NoUpdate2]','\x20hangup\x20sendFile\x20','SUCCESS','faxstatusstring','send','execOriginate','FaxAccountId','message','Fax\x20received','[Fax][execOriginate][failure]','Fax\x20failed','checkAfterSend','checkTrunk','Trunk','isValid','Trunk\x20Reachable','gs\x20-q\x20-dNOPAUSE\x20-dBATCH\x20-sDEVICE=tiffg4\x20-sPAPERSIZE=letter\x20-sOutputFile=/var/opt/motion2/server/files/attachments/%s.tif\x20\x20%s\x20-c\x20quit','path','execute','%s/%s.tif','dir','XMF-PATH','Convert\x20pdf\x20to\x20tif','variablesAction','addVariables','ext','isNil','active','format','SIP/%s','isTrunkReachable','[Fax][checkTrunk][Trunk\x20not\x20working\x20correctly]','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working\x20correctly','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','exports','util','lodash','uuid','tiff2pdf','../../../config/logger','./rpcDb','./channel','./util/util','../rpc/attachment','../rpc/faxMessage','channels','faxAccounts','trunks','actions','newchannel','syncNewchannel','syncVarSet','bind','syncNewExten','faxstatus','syncHangup','originateresponse','context','from-voip-provider','hasOwnProperty','exten','localstationid','uniqueid','channel','name','info','\x20syncNewchannel\x20','prototype','variable','syncNewState','channelstate','channelstatedesc','value','syncFaxStatus','operation','status','filename','\x20syncFaxStatus\x20','syncReceiveFax','remotestationid','pagestransferred','resolution','transferrate','calleridnum','\x20result\x20conversion\x20file\x20','parse','.pdf','application/pdf','notify','fax'];(function(_0x5f2324,_0x1b7276){var _0x53fed8=function(_0x34cae2){while(--_0x34cae2){_0x5f2324['push'](_0x5f2324['shift']());}};_0x53fed8(++_0x1b7276);}(_0xc71e,0x1f4));var _0xec71=function(_0x4e3aaa,_0x10144b){_0x4e3aaa=_0x4e3aaa-0x0;var _0x586431=_0xc71e[_0x4e3aaa];return _0x586431;};'use strict';var util=require(_0xec71('0x0'));var _=require(_0xec71('0x1'));var BPromise=require('bluebird');var uuid=require(_0xec71('0x2'));var moment=require('moment');var path=require('path');var tiff2pdf=require(_0xec71('0x3'));var gs=require('./util/gs');var logger=require(_0xec71('0x4'))('fax');var ami=require('../ami');var rpcDb=require(_0xec71('0x5'));var Channel=require(_0xec71('0x6'));var ut=require(_0xec71('0x7'));var Action=require('./action');var faxAccount=require('../rpc/faxAccount');var attachment=require(_0xec71('0x8'));var faxMessage=require(_0xec71('0x9'));function Fax(_0x1cdcc3){this[_0xec71('0xa')]={};this['faxAccounts']=_0x1cdcc3[_0xec71('0xb')];this[_0xec71('0xc')]=_0x1cdcc3['trunks'];this[_0xec71('0xd')]={};ami['on'](_0xec71('0xe'),this[_0xec71('0xf')]['bind'](this));ami['on']('varset',this[_0xec71('0x10')][_0xec71('0x11')](this));ami['on']('newstate',this['syncNewState']['bind'](this));ami['on']('newexten',this[_0xec71('0x12')][_0xec71('0x11')](this));ami['on'](_0xec71('0x13'),this['syncFaxStatus'][_0xec71('0x11')](this));ami['on']('receivefax',this['syncReceiveFax'][_0xec71('0x11')](this));ami['on']('hangup',this[_0xec71('0x14')][_0xec71('0x11')](this));ami['on'](_0xec71('0x15'),this['syncOriginateResponse'][_0xec71('0x11')](this));}Fax['prototype']['syncNewchannel']=function(_0x37e89b){if(_0x37e89b[_0xec71('0x16')]===_0xec71('0x17')){for(var _0x1c17cf in this['faxAccounts']){if(this['faxAccounts'][_0xec71('0x18')](_0x1c17cf)){if(_0x37e89b[_0xec71('0x19')]===this['faxAccounts'][_0x1c17cf][_0xec71('0x1a')]){this[_0xec71('0xa')][_0x37e89b[_0xec71('0x1b')]]={};this[_0xec71('0xa')][_0x37e89b[_0xec71('0x1b')]][_0xec71('0x1c')]=_0x37e89b[_0xec71('0x1c')];this[_0xec71('0xa')][_0x37e89b[_0xec71('0x1b')]]['id']=this['faxAccounts'][_0x1c17cf]['id'];this['channels'][_0x37e89b[_0xec71('0x1b')]][_0xec71('0x1d')]=this['faxAccounts'][_0x1c17cf][_0xec71('0x1d')];logger[_0xec71('0x1e')](_0x37e89b['uniqueid'],'\x20syncNewchannel\x20');}}}}if(this[_0xec71('0xd')][_0x37e89b['uniqueid']]){this['channels'][_0x37e89b[_0xec71('0x1b')]]={};this[_0xec71('0xa')][_0x37e89b[_0xec71('0x1b')]][_0xec71('0x1c')]=_0x37e89b['channel'];logger[_0xec71('0x1e')](_0x37e89b['uniqueid'],_0xec71('0x1f'));}};Fax[_0xec71('0x20')][_0xec71('0x10')]=function(_0x138d9a){if(this[_0xec71('0xa')][_0x138d9a[_0xec71('0x1b')]]){for(var _0x36f0a7 in _0x138d9a[_0xec71('0x21')]){if(_0x138d9a[_0xec71('0x21')][_0xec71('0x18')](_0x36f0a7)){this[_0xec71('0xa')][_0x138d9a['uniqueid']][_0x36f0a7]=_0x138d9a['value'];}}}};Fax[_0xec71('0x20')][_0xec71('0x22')]=function(_0x3da7be){if(this[_0xec71('0xa')][_0x3da7be['uniqueid']]){this[_0xec71('0xa')][_0x3da7be['uniqueid']][_0xec71('0x23')]=_0x3da7be['channelstate'];this['channels'][_0x3da7be[_0xec71('0x1b')]][_0xec71('0x24')]=_0x3da7be[_0xec71('0x24')];}};Fax[_0xec71('0x20')][_0xec71('0x12')]=function(_0x348fdc){if(this[_0xec71('0xa')][_0x348fdc[_0xec71('0x1b')]]){for(var _0x2c1de4 in _0x348fdc['variable']){if(_0x348fdc[_0xec71('0x21')][_0xec71('0x18')](_0x2c1de4)){this[_0xec71('0xa')][_0x348fdc['uniqueid']][_0x2c1de4]=_0x348fdc[_0xec71('0x25')];}}}};Fax['prototype'][_0xec71('0x26')]=function(_0x26a638){if(this['channels'][_0x26a638[_0xec71('0x1b')]]){this[_0xec71('0xa')][_0x26a638[_0xec71('0x1b')]][_0xec71('0x27')]=_0x26a638[_0xec71('0x27')];this[_0xec71('0xa')][_0x26a638[_0xec71('0x1b')]][_0xec71('0x28')]=_0x26a638['status'];this[_0xec71('0xa')][_0x26a638[_0xec71('0x1b')]]['localstationid']=_0x26a638[_0xec71('0x1a')];this[_0xec71('0xa')][_0x26a638['uniqueid']]['filename']=_0x26a638[_0xec71('0x29')];logger[_0xec71('0x1e')](_0x26a638[_0xec71('0x1b')],_0xec71('0x2a'));}};Fax[_0xec71('0x20')][_0xec71('0x2b')]=function(_0x77b827){var _0x3e75dc=this;if(this[_0xec71('0xa')][_0x77b827[_0xec71('0x1b')]]){var _0x1d80f8=this[_0xec71('0xa')][_0x77b827[_0xec71('0x1b')]]['id'];this[_0xec71('0xa')][_0x77b827['uniqueid']][_0xec71('0x2c')]=_0x77b827['remotestationid'];this[_0xec71('0xa')][_0x77b827[_0xec71('0x1b')]][_0xec71('0x2d')]=_0x77b827[_0xec71('0x2d')];this['channels'][_0x77b827[_0xec71('0x1b')]][_0xec71('0x1a')]=_0x77b827[_0xec71('0x1a')];this[_0xec71('0xa')][_0x77b827[_0xec71('0x1b')]][_0xec71('0x2e')]=_0x77b827[_0xec71('0x2e')];this[_0xec71('0xa')][_0x77b827[_0xec71('0x1b')]][_0xec71('0x2f')]=_0x77b827['transferrate'];this[_0xec71('0xa')][_0x77b827['uniqueid']][_0xec71('0x29')]=_0x77b827[_0xec71('0x29')];this[_0xec71('0xa')][_0x77b827['uniqueid']][_0xec71('0x30')]=_0x77b827[_0xec71('0x30')];if(this['channels'][_0x77b827[_0xec71('0x1b')]][_0xec71('0x2d')]>0x0){tiff2pdf(_0x77b827[_0xec71('0x29')],'/var/opt/motion2/server/files/attachments/',function(_0x55d08a){logger[_0xec71('0x1e')](_0x77b827[_0xec71('0x1b')],_0xec71('0x31'),_0x55d08a['message']);attachment['create']({'name':path[_0xec71('0x32')](_0x77b827['filename'])[_0xec71('0x1d')],'basename':path['parse'](_0x77b827[_0xec71('0x29')])[_0xec71('0x1d')]+_0xec71('0x33'),'type':_0xec71('0x34')})['then'](function(_0x46bfb5){faxAccount[_0xec71('0x35')](_0x1d80f8,{'from':_0x77b827[_0xec71('0x30')],'mapKey':_0xec71('0x36'),'body':path['parse'](_0x77b827[_0xec71('0x29')])['name']+'.pdf','AttachmentId':_0x46bfb5['id']})[_0xec71('0x37')](function(_0x4566ee){logger[_0xec71('0x38')](_0x77b827[_0xec71('0x1b')],_0xec71('0x39'),JSON[_0xec71('0x3a')](_0x4566ee));});})[_0xec71('0x37')](function(_0x33fee8){logger[_0xec71('0x38')](_0x77b827['uniqueid'],_0xec71('0x3b'),JSON[_0xec71('0x3a')](_0x33fee8));});});}logger[_0xec71('0x1e')](_0x77b827[_0xec71('0x1b')],_0xec71('0x3b'));}};Fax['prototype'][_0xec71('0x3c')]=function(_0x1d7cab){if(this['actions'][_0x1d7cab['uniqueid']]){_[_0xec71('0x3d')](this[_0xec71('0xa')][_0x1d7cab[_0xec71('0x1b')]],_[_0xec71('0x3e')](_0x1d7cab,[_0xec71('0x3f'),'reason']));}};function updateStatus(_0x2323f3){if(_0x2323f3[_0xec71('0x40')]){faxMessage[_0xec71('0x41')](_0x2323f3[_0xec71('0x40')],{'failMessage':'SENDING\x20FAILED\x20'})[_0xec71('0x42')](function(_0x3f5ee8){ut['logger'](_0xec71('0x43'),_0x3f5ee8);})[_0xec71('0x37')](function(_0x3c13a5){ut[_0xec71('0x44')](_0xec71('0x45'),_0x3c13a5);});}else{ut[_0xec71('0x44')](_0xec71('0x46'));}}Fax[_0xec71('0x20')][_0xec71('0x47')]=function(_0x29b272,_0x4be205,_0x5f0122){var _0x3fa876=this;var _0x18730f={};if(_0x4be205){_0x18730f={'read':_0x4be205};}else{_0x18730f={'failMessage':_0x5f0122};}if(this[_0xec71('0xd')][_0x29b272][_0xec71('0x40')]){faxMessage[_0xec71('0x41')](this[_0xec71('0xd')][_0x29b272][_0xec71('0x40')],_0x18730f)['then'](function(_0x13f1ef){ut[_0xec71('0x44')]('[Fax][Message][Updated]',_0x13f1ef);})[_0xec71('0x37')](function(_0x488276){ut[_0xec71('0x44')]('[Fax][Message][NoUpdate1]',_0x488276);})[_0xec71('0x48')](function(){delete _0x3fa876[_0xec71('0xa')][_0x29b272];delete _0x3fa876[_0xec71('0xd')][_0x29b272];});}else{ut[_0xec71('0x44')](_0xec71('0x49'));delete this[_0xec71('0xa')][_0x29b272];delete this[_0xec71('0xd')][_0x29b272];}};Fax[_0xec71('0x20')]['syncHangup']=function(_0x12ca4a){var _0x2f14a6=this;if(this[_0xec71('0xa')][_0x12ca4a[_0xec71('0x1b')]]){if(this[_0xec71('0xd')][_0x12ca4a['uniqueid']]){this[_0xec71('0xa')][_0x12ca4a[_0xec71('0x1b')]]['id']=this[_0xec71('0xd')][_0x12ca4a[_0xec71('0x1b')]]['id'];this[_0xec71('0xa')][_0x12ca4a[_0xec71('0x1b')]][_0xec71('0x1d')]=this['actions'][_0x12ca4a[_0xec71('0x1b')]]['name'];}logger[_0xec71('0x1e')](_0x12ca4a[_0xec71('0x1b')],this[_0xec71('0xd')][_0x12ca4a[_0xec71('0x1b')]]?_0xec71('0x4a'):'\x20hangup\x20faxRiceive\x20',JSON[_0xec71('0x3a')](this[_0xec71('0xa')][_0x12ca4a[_0xec71('0x1b')]]));if(this[_0xec71('0xd')][_0x12ca4a[_0xec71('0x1b')]]){if(this['channels'][_0x12ca4a[_0xec71('0x1b')]]['faxpages']>0x0&&this['channels'][_0x12ca4a['uniqueid']][_0xec71('0x13')]===_0xec71('0x4b')){this['updateStatus'](_0x12ca4a[_0xec71('0x1b')],!![]);}else{this['updateStatus'](_0x12ca4a['uniqueid'],![],this[_0xec71('0xa')][_0x12ca4a[_0xec71('0x1b')]][_0xec71('0x4c')]?'SENDING\x20FAILED:\x20'+this[_0xec71('0xa')][_0x12ca4a[_0xec71('0x1b')]][_0xec71('0x4c')]:'SENDING\x20FAILED');}}}};Fax[_0xec71('0x20')][_0xec71('0x4d')]=function(_0x1b5339){var _0x907969=this;return new BPromise(function(_0x44b3f0,_0x3a7cf1){_0x907969[_0xec71('0x4e')](_0x1b5339,_0x907969['faxAccounts'][_0x1b5339[_0xec71('0x4f')]])[_0xec71('0x42')](function(_0x40dbba){ut[_0xec71('0x44')]('[Fax][execOriginate][success]',_0x40dbba);_0x44b3f0(ut[_0xec71('0x50')](_0xec71('0x51')));})[_0xec71('0x37')](function(_0x59780e){ut['logger'](_0xec71('0x52'),_0x59780e);updateStatus(_0x1b5339);_0x3a7cf1(ut[_0xec71('0x50')](_0xec71('0x53')));});});};Fax[_0xec71('0x20')][_0xec71('0x54')]=function(_0x22d523){var _0x20af43=this;return new BPromise(function(_0x3a8068,_0x10399a){var _0x5d78c9=_0x20af43[_0xec71('0x55')](_0x20af43[_0xec71('0xb')][_0x22d523['FaxAccountId']][_0xec71('0x56')],_0x22d523);if(_0x5d78c9[_0xec71('0x57')]){_0x3a8068(ut[_0xec71('0x50')](_0xec71('0x58')));}else{_0x10399a(ut[_0xec71('0x50')](_0x5d78c9[_0xec71('0x50')]));}});};function originate(_0x4768cb,_0x273762,_0xa7f8ff){return new BPromise(function(_0x4061b6,_0x111999){if(_0xa7f8ff){var _0x564e1a=util['format'](_0xec71('0x59'),path['parse'](_0x4768cb[_0xec71('0x5a')])[_0xec71('0x1d')],_0x4768cb[_0xec71('0x5a')]);gs[_0xec71('0x5b')](_0x564e1a)[_0xec71('0x42')](function(){_0x4768cb['path']=util['format'](_0xec71('0x5c'),path[_0xec71('0x32')](_0x4768cb[_0xec71('0x5a')])[_0xec71('0x5d')],path['parse'](_0x4768cb[_0xec71('0x5a')])['name']);_0x273762[_0xec71('0x5e')]=_0x4768cb[_0xec71('0x5a')];ut[_0xec71('0x44')](_0xec71('0x5f'),'');ami['Action'](ut[_0xec71('0x60')](_0x4768cb,_0x273762))[_0xec71('0x42')](function(_0x261e02){_0x4061b6(_0x261e02);})['catch'](function(_0xdc58d0){_0x111999(_0xdc58d0);});})[_0xec71('0x37')](function(_0x126b2a){_0x111999(_0x126b2a);});}else{ami['Action'](ut['variablesAction'](_0x4768cb,_0x273762))['then'](function(_0x10258a){_0x4061b6(_0x10258a);})['catch'](function(_0x490e99){_0x111999(_0x490e99);});}});}Fax['prototype']['execOriginate']=function(_0x43466c,_0x346a6e){var _0x582a38=this;return new BPromise(function(_0x392044,_0x44ab41){var _0x43630c=uuid['v4']();var _0x192338=ut[_0xec71('0x61')](_0x43466c,_0x346a6e);_0x582a38[_0xec71('0xd')][_0x43630c]=new Action(_0x43630c,_0x346a6e,_0x43466c);var _0x7dae20=_0x582a38[_0xec71('0xd')][_0x43630c];if(path[_0xec71('0x32')](_0x43466c['path'])[_0xec71('0x62')]===_0xec71('0x33')){originate(_0x7dae20,_0x192338,!![])[_0xec71('0x42')](function(_0x2043e1){_0x392044(_0x2043e1);})[_0xec71('0x37')](function(_0x5d047c){_0x44ab41(_0x5d047c);});}else{originate(_0x7dae20,_0x192338,![])['then'](function(_0x397e20){_0x392044(_0x397e20);})['catch'](function(_0x1b5f91){_0x44ab41(_0x1b5f91);});}});};Fax[_0xec71('0x20')]['isTrunkReachable']=function(_0x49e080){return!_[_0xec71('0x63')](_0x49e080)&&!_[_0xec71('0x63')](_0x49e080[_0xec71('0x1d')])&&!_[_0xec71('0x63')](_0x49e080['active'])&&_0x49e080[_0xec71('0x64')]&&!_[_0xec71('0x63')](this[_0xec71('0xc')][util[_0xec71('0x65')]('SIP/%s',_0x49e080['name'])])&&!_[_0xec71('0x63')](this[_0xec71('0xc')][util[_0xec71('0x65')](_0xec71('0x66'),_0x49e080[_0xec71('0x1d')])][_0xec71('0x28')])&&(this['trunks'][util[_0xec71('0x65')]('SIP/%s',_0x49e080[_0xec71('0x1d')])][_0xec71('0x28')]==='reachable'||this[_0xec71('0xc')][util[_0xec71('0x65')](_0xec71('0x66'),_0x49e080['name'])][_0xec71('0x28')]==='unmonitored');};Fax[_0xec71('0x20')]['checkTrunk']=function(_0xf196e2,_0x4d6ef0){if(!this[_0xec71('0x67')](_0xf196e2)){ut[_0xec71('0x44')](_0xec71('0x68'),_['isNil'](_0xf196e2)?'':_0xf196e2['name']+_0xec71('0x69'));return{'isValid':![],'message':_0xec71('0x6a')};}if(_[_0xec71('0x63')](_0x4d6ef0[_0xec71('0x36')])){ut[_0xec71('0x44')]('[Fax][checkTrunk][Empty\x20Fax]',JSON[_0xec71('0x3a')](_0x4d6ef0));return{'isValid':![],'message':_0xec71('0x6b')};}if(_[_0xec71('0x63')](_0x4d6ef0[_0xec71('0x5a')])){ut[_0xec71('0x44')](_0xec71('0x6c'),JSON['stringify'](_0x4d6ef0));return{'isValid':![],'message':_0xec71('0x6d')};}return{'isValid':!![],'message':'Is\x20Valid'};};module[_0xec71('0x6e')]=Fax;
\ No newline at end of file
index 6673cf8..f04e349 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38a5=['util','bluebird','../../../config/logger','preview','lodash','../rpc/faxAccount','error','inspect','notify','resolve','then','catch'];(function(_0x377841,_0x122e1a){var _0x2b098f=function(_0x503d15){while(--_0x503d15){_0x377841['push'](_0x377841['shift']());}};_0x2b098f(++_0x122e1a);}(_0x38a5,0xc0));var _0x538a=function(_0x3036ec,_0x546d4d){_0x3036ec=_0x3036ec-0x0;var _0x53241c=_0x38a5[_0x3036ec];return _0x53241c;};'use strict';var util=require(_0x538a('0x0'));var BPromise=require(_0x538a('0x1'));var logger=require(_0x538a('0x2'))(_0x538a('0x3'));var _=require(_0x538a('0x4'));var faxAccount=require(_0x538a('0x5'));function loggerCatch(_0x42f0f1){return function(_0x321a32){logger[_0x538a('0x6')](_0x42f0f1,util[_0x538a('0x7')](_0x321a32,{'showHidden':![],'depth':null}));};}exports[_0x538a('0x8')]=function(_0x5750e9,_0x5321f9){return BPromise[_0x538a('0x9')]()[_0x538a('0xa')](faxAccount[_0x538a('0x8')](_0x5750e9,_0x5321f9))[_0x538a('0xb')](loggerCatch('[Notify]\x20'));};
\ No newline at end of file
+var _0xde7a=['../../../config/logger','preview','lodash','../rpc/faxAccount','error','inspect','notify','resolve','catch','[Notify]\x20','util','bluebird'];(function(_0x2f4c1c,_0x5a3dd4){var _0x25e0f2=function(_0x46ea31){while(--_0x46ea31){_0x2f4c1c['push'](_0x2f4c1c['shift']());}};_0x25e0f2(++_0x5a3dd4);}(_0xde7a,0x82));var _0xade7=function(_0x43da0b,_0x4c5e47){_0x43da0b=_0x43da0b-0x0;var _0x333e54=_0xde7a[_0x43da0b];return _0x333e54;};'use strict';var util=require(_0xade7('0x0'));var BPromise=require(_0xade7('0x1'));var logger=require(_0xade7('0x2'))(_0xade7('0x3'));var _=require(_0xade7('0x4'));var faxAccount=require(_0xade7('0x5'));function loggerCatch(_0x5165db){return function(_0x1fefbf){logger[_0xade7('0x6')](_0x5165db,util[_0xade7('0x7')](_0x1fefbf,{'showHidden':![],'depth':null}));};}exports[_0xade7('0x8')]=function(_0x298315,_0x10062a){return BPromise[_0xade7('0x9')]()['then'](faxAccount['notify'](_0x298315,_0x10062a))[_0xade7('0xa')](loggerCatch(_0xade7('0xb')));};
\ No newline at end of file
index 462b4fe..a98af74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a51=['fax','exec','execute','Exec\x20gs','info','inspect','util','../../../../config/logger'];(function(_0x3280db,_0x149997){var _0x19fbf9=function(_0x4e1143){while(--_0x4e1143){_0x3280db['push'](_0x3280db['shift']());}};_0x19fbf9(++_0x149997);}(_0x9a51,0xd6));var _0x19a5=function(_0x1aba9c,_0x465976){_0x1aba9c=_0x1aba9c-0x0;var _0x414891=_0x9a51[_0x1aba9c];return _0x414891;};'use strict';var util=require(_0x19a5('0x0'));var logger=require(_0x19a5('0x1'))(_0x19a5('0x2'));var BPromise=require('bluebird');var exec=require('child_process')[_0x19a5('0x3')];exports[_0x19a5('0x4')]=function(_0xd716fa){return new BPromise(function(_0x545edc,_0x2b6b5b){exec(_0xd716fa,function(_0x452ac9,_0x44659d,_0x3381e8){logger['info'](_0x19a5('0x5'),_0x44659d);if(_0x452ac9){logger[_0x19a5('0x6')]('Exec\x20gs','\x20Error\x20:',util[_0x19a5('0x7')](_0x452ac9,{'showHidden':![],'depth':null}),_0x44659d,_0x3381e8);_0x2b6b5b(_0x452ac9);}_0x545edc(_0x44659d);});});};
\ No newline at end of file
+var _0xe251=['Exec\x20gs','\x20Error\x20:','inspect','util','../../../../config/logger','fax','child_process','execute','info'];(function(_0x4b3fd0,_0x5a13b3){var _0x453c61=function(_0x2a00aa){while(--_0x2a00aa){_0x4b3fd0['push'](_0x4b3fd0['shift']());}};_0x453c61(++_0x5a13b3);}(_0xe251,0xc9));var _0x1e25=function(_0x2fc087,_0x72b243){_0x2fc087=_0x2fc087-0x0;var _0x37bfeb=_0xe251[_0x2fc087];return _0x37bfeb;};'use strict';var util=require(_0x1e25('0x0'));var logger=require(_0x1e25('0x1'))(_0x1e25('0x2'));var BPromise=require('bluebird');var exec=require(_0x1e25('0x3'))['exec'];exports[_0x1e25('0x4')]=function(_0x3e5246){return new BPromise(function(_0x4b1278,_0x33f8b0){exec(_0x3e5246,function(_0x302410,_0x5ef9c4,_0x3f64a5){logger[_0x1e25('0x5')](_0x1e25('0x6'),_0x5ef9c4);if(_0x302410){logger[_0x1e25('0x5')](_0x1e25('0x6'),_0x1e25('0x7'),util[_0x1e25('0x8')](_0x302410,{'showHidden':![],'depth':null}),_0x5ef9c4,_0x3f64a5);_0x33f8b0(_0x302410);}_0x4b1278(_0x5ef9c4);});});};
\ No newline at end of file
index efb5678..78c32e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cfd=['from-sip','\x22%s\x22\x20<%s>','localstationid','lodash','../../../../config/logger','fax','logger','inspect','addVariables','ecm','format','\x22%s\x22','modem','gateway','faxdetect','t38timeout','path','variablesAction','uniqueid','originate','channel','xcally-motion-fax'];(function(_0x339d42,_0x66d7f4){var _0x12d1bf=function(_0x329262){while(--_0x329262){_0x339d42['push'](_0x339d42['shift']());}};_0x12d1bf(++_0x66d7f4);}(_0x1cfd,0x18f));var _0xd1cf=function(_0x4ee515,_0x1a214d){_0x4ee515=_0x4ee515-0x0;var _0x32e387=_0x1cfd[_0x4ee515];return _0x32e387;};'use strict';var util=require('util');var _=require(_0xd1cf('0x0'));var moment=require('moment');var logger=require(_0xd1cf('0x1'))(_0xd1cf('0x2'));exports['message']=function(_0x53684e){return{'message':_0x53684e};};exports[_0xd1cf('0x3')]=function(_0x52e161,_0x5caf4e){logger['info'](_0x52e161,util[_0xd1cf('0x4')](_0x5caf4e,{'showHidden':![],'depth':null}));};exports[_0xd1cf('0x5')]=function(_0x1f9574,_0x211aa3){var _0x477d0d={'XMF-ECM':_0x211aa3[_0xd1cf('0x6')],'XMF-HEADERINFO':_0x211aa3['headerinfo'],'XMF-MINRATE':_0x211aa3['minrate'],'XMF-MAXRATE':_0x211aa3['maxrate'],'XMF-MODEM':util[_0xd1cf('0x7')](_0xd1cf('0x8'),_0x211aa3[_0xd1cf('0x9')]),'XMF-GATEWAY':_0x211aa3[_0xd1cf('0xa')],'XMF-FAXDETECT':_0x211aa3[_0xd1cf('0xb')],'XMF-T38TIMEOUT':_0x211aa3[_0xd1cf('0xc')],'XMF-LOCALSTATIONID':_0x211aa3['localstationid'],'XMF-PATH':_0x1f9574[_0xd1cf('0xd')]};return _0x477d0d;};exports[_0xd1cf('0xe')]=function(_0x30d1b5,_0x55a211){return{'actionid':_0x30d1b5[_0xd1cf('0xf')],'action':_0xd1cf('0x10'),'channel':_0x30d1b5[_0xd1cf('0x11')],'Exten':_0xd1cf('0x12'),'Context':_0xd1cf('0x13'),'Priority':'1','callerid':util[_0xd1cf('0x7')](_0xd1cf('0x14'),_0x30d1b5['headerinfo']?_0x30d1b5['headerinfo']:'',_0x30d1b5[_0xd1cf('0x15')]),'variable':_0x55a211,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x30d1b5['uniqueid']};};
\ No newline at end of file
+var _0x208b=['headerinfo','minrate','maxrate','\x22%s\x22','modem','faxdetect','t38timeout','localstationid','variablesAction','uniqueid','originate','channel','xcally-motion-fax','from-sip','format','\x22%s\x22\x20<%s>','lodash','moment','../../../../config/logger','message','logger','info','inspect','addVariables','ecm'];(function(_0x3d1fa6,_0x28ca1b){var _0x13e0d8=function(_0x3a1fd0){while(--_0x3a1fd0){_0x3d1fa6['push'](_0x3d1fa6['shift']());}};_0x13e0d8(++_0x28ca1b);}(_0x208b,0x155));var _0xb208=function(_0x17cf5f,_0x2fce35){_0x17cf5f=_0x17cf5f-0x0;var _0x5e08d1=_0x208b[_0x17cf5f];return _0x5e08d1;};'use strict';var util=require('util');var _=require(_0xb208('0x0'));var moment=require(_0xb208('0x1'));var logger=require(_0xb208('0x2'))('fax');exports[_0xb208('0x3')]=function(_0x4bfce3){return{'message':_0x4bfce3};};exports[_0xb208('0x4')]=function(_0x4f4d5e,_0x10447c){logger[_0xb208('0x5')](_0x4f4d5e,util[_0xb208('0x6')](_0x10447c,{'showHidden':![],'depth':null}));};exports[_0xb208('0x7')]=function(_0x2cdc49,_0x5694ee){var _0xb4daf9={'XMF-ECM':_0x5694ee[_0xb208('0x8')],'XMF-HEADERINFO':_0x5694ee[_0xb208('0x9')],'XMF-MINRATE':_0x5694ee[_0xb208('0xa')],'XMF-MAXRATE':_0x5694ee[_0xb208('0xb')],'XMF-MODEM':util['format'](_0xb208('0xc'),_0x5694ee[_0xb208('0xd')]),'XMF-GATEWAY':_0x5694ee['gateway'],'XMF-FAXDETECT':_0x5694ee[_0xb208('0xe')],'XMF-T38TIMEOUT':_0x5694ee[_0xb208('0xf')],'XMF-LOCALSTATIONID':_0x5694ee[_0xb208('0x10')],'XMF-PATH':_0x2cdc49['path']};return _0xb4daf9;};exports[_0xb208('0x11')]=function(_0x59c71f,_0x7db6d0){return{'actionid':_0x59c71f[_0xb208('0x12')],'action':_0xb208('0x13'),'channel':_0x59c71f[_0xb208('0x14')],'Exten':_0xb208('0x15'),'Context':_0xb208('0x16'),'Priority':'1','callerid':util[_0xb208('0x17')](_0xb208('0x18'),_0x59c71f['headerinfo']?_0x59c71f[_0xb208('0x9')]:'',_0x59c71f[_0xb208('0x10')]),'variable':_0x7db6d0,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x59c71f[_0xb208('0x12')]};};
\ No newline at end of file
index c319b69..632e14e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbc1=['./rpc/template','./rpc/cmHopperHistory','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/salesforce','./rpc/integrations/sugarcrm','./rpc/integrations/freshdesk','./rpc/integrations/desk','./rpc/integrations/zoho','./rpc/integrations/vtiger','./rpc/integrations/freshsales','./rpc/integrations/dynamics365','../../config/logger','hour','get','resolve','then','getAgents','initAgents','getTelephones','initTelephones','initTrunks','initVoiceQueues','getTriggers','initTriggers','getTemplates','initZendeskAccounts','getSalesforceAccounts','initSalesforceAccounts','initSugarcrmAccounts','getFreshdeskAccounts','initFreshdeskAccounts','getDeskAccounts','initDeskAccounts','getZohoAccounts','initZohoAccounts','getVtigerAccounts','getFreshsalesAccounts','initFreshsalesAccounts','getServicenowAccounts','initServicenowAccounts','initDynamics365Accounts','getCampaigns','initCampaigns','getVoiceExtensions','initVoiceExtensions','initFaxAccounts','initVoiceQueueReports','getVoiceQueueHopperHistory','initVoiceQueueHopperHistory','getCampaignHopperHistory','getVoiceCallReports','initVoiceCallReports','error','[index.js][initParams]','inspect','listen','sync','catch','bluebird','util','moment','./report','./acw','./trigger','./dialer','./rpc/user','./rpc/voiceCallReport','./rpc/trunk','./rpc/trigger'];(function(_0x3582ee,_0x4e05a7){var _0x54cbdd=function(_0x2ac806){while(--_0x2ac806){_0x3582ee['push'](_0x3582ee['shift']());}};_0x54cbdd(++_0x4e05a7);}(_0xbbc1,0x158));var _0x1bbc=function(_0x3905a0,_0x3364e3){_0x3905a0=_0x3905a0-0x0;var _0x55e2bd=_0xbbc1[_0x3905a0];return _0x55e2bd;};'use strict';var BPromise=require(_0x1bbc('0x0'));var util=require(_0x1bbc('0x1'));var moment=require(_0x1bbc('0x2'));var server=require('./server');var Realtime=require('./realtime');var Report=require(_0x1bbc('0x3'));var Acw=require(_0x1bbc('0x4'));var Trigger=require(_0x1bbc('0x5'));var Dialer=require(_0x1bbc('0x6'));var Preview=require('./preview');var Fax=require('./fax');var user=require(_0x1bbc('0x7'));var voiceQueue=require('./rpc/voiceQueue');var voiceQueueReport=require('./rpc/voiceQueueReport');var voiceCallReport=require(_0x1bbc('0x8'));var trunk=require(_0x1bbc('0x9'));var trigger=require(_0x1bbc('0xa'));var template=require(_0x1bbc('0xb'));var cmHopperHistory=require(_0x1bbc('0xc'));var campaign=require('./rpc/campaign');var voiceExtension=require(_0x1bbc('0xd'));var faxAccount=require(_0x1bbc('0xe'));var zendesk=require(_0x1bbc('0xf'));var salesforce=require(_0x1bbc('0x10'));var sugarcrm=require(_0x1bbc('0x11'));var freshdesk=require(_0x1bbc('0x12'));var desk=require(_0x1bbc('0x13'));var zoho=require(_0x1bbc('0x14'));var vtiger=require(_0x1bbc('0x15'));var freshsales=require(_0x1bbc('0x16'));var servicenow=require('./rpc/integrations/servicenow');var dynamics365=require(_0x1bbc('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(_0x1bbc('0x18'))('ami');var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()['get'](_0x1bbc('0x19'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0x1bbc('0x1a')](_0x1bbc('0x19'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise[_0x1bbc('0x1b')]()[_0x1bbc('0x1c')](user[_0x1bbc('0x1d')]())[_0x1bbc('0x1c')](realtime[_0x1bbc('0x1e')]())[_0x1bbc('0x1c')](user[_0x1bbc('0x1f')]())[_0x1bbc('0x1c')](realtime[_0x1bbc('0x20')]())['then'](trunk['getTrunks']())[_0x1bbc('0x1c')](realtime[_0x1bbc('0x21')]())['then'](voiceQueue['getVoiceQueues']())[_0x1bbc('0x1c')](realtime[_0x1bbc('0x22')]())[_0x1bbc('0x1c')](trigger[_0x1bbc('0x23')]())[_0x1bbc('0x1c')](realtime[_0x1bbc('0x24')]())[_0x1bbc('0x1c')](template[_0x1bbc('0x25')]())['then'](realtime['initTemplates']())[_0x1bbc('0x1c')](zendesk['getZendeskAccounts']())['then'](realtime[_0x1bbc('0x26')]())['then'](salesforce[_0x1bbc('0x27')]())['then'](realtime[_0x1bbc('0x28')]())['then'](sugarcrm['getSugarcrmAccounts']())[_0x1bbc('0x1c')](realtime[_0x1bbc('0x29')]())[_0x1bbc('0x1c')](freshdesk[_0x1bbc('0x2a')]())[_0x1bbc('0x1c')](realtime[_0x1bbc('0x2b')]())[_0x1bbc('0x1c')](desk[_0x1bbc('0x2c')]())[_0x1bbc('0x1c')](realtime[_0x1bbc('0x2d')]())[_0x1bbc('0x1c')](zoho[_0x1bbc('0x2e')]())['then'](realtime[_0x1bbc('0x2f')]())[_0x1bbc('0x1c')](vtiger[_0x1bbc('0x30')]())[_0x1bbc('0x1c')](realtime['initVtigerAccounts']())[_0x1bbc('0x1c')](freshsales[_0x1bbc('0x31')]())[_0x1bbc('0x1c')](realtime[_0x1bbc('0x32')]())[_0x1bbc('0x1c')](servicenow[_0x1bbc('0x33')]())[_0x1bbc('0x1c')](realtime[_0x1bbc('0x34')]())[_0x1bbc('0x1c')](dynamics365['getDynamics365Accounts']())[_0x1bbc('0x1c')](realtime[_0x1bbc('0x35')]())[_0x1bbc('0x1c')](campaign[_0x1bbc('0x36')]())['then'](realtime[_0x1bbc('0x37')]())[_0x1bbc('0x1c')](voiceExtension[_0x1bbc('0x38')]())[_0x1bbc('0x1c')](realtime[_0x1bbc('0x39')]())['then'](faxAccount['getFaxAccounts']())['then'](realtime[_0x1bbc('0x3a')]())['then'](function(){return realtime;});}function initParams(){return BPromise[_0x1bbc('0x1b')]()[_0x1bbc('0x1c')](voiceQueueReport['getVoiceQueueReports']())[_0x1bbc('0x1c')](realtime[_0x1bbc('0x3b')]())['then'](cmHopperHistory[_0x1bbc('0x3c')]())[_0x1bbc('0x1c')](realtime[_0x1bbc('0x3d')]())[_0x1bbc('0x1c')](cmHopperHistory[_0x1bbc('0x3e')]())[_0x1bbc('0x1c')](realtime['initCampaignHopperHistory']())['then'](voiceCallReport[_0x1bbc('0x3f')]())[_0x1bbc('0x1c')](realtime[_0x1bbc('0x40')]())['catch'](function(_0xeb962a){logger[_0x1bbc('0x41')](_0x1bbc('0x42'),util[_0x1bbc('0x43')](_0xeb962a,{'showHidden':![],'depth':null}));});}function main(){return server[_0x1bbc('0x44')](realtime,preview,fax)['then'](function(_0x44f495){return initRealtime();})[_0x1bbc('0x1c')](function(){return initParams();})['then'](function(){report[_0x1bbc('0x45')]();setInterval(initRealtime,0x1388);})[_0x1bbc('0x46')](function(_0x3b2e04){logger[_0x1bbc('0x41')]('[index.js][main]',util['inspect'](_0x3b2e04,{'showHidden':![],'depth':null}));});}main();
\ No newline at end of file
+var _0xff83=['initTrunks','initVoiceQueues','getTriggers','initTriggers','getZendeskAccounts','initZendeskAccounts','getSalesforceAccounts','initSalesforceAccounts','getSugarcrmAccounts','initSugarcrmAccounts','initFreshdeskAccounts','initDeskAccounts','getZohoAccounts','initZohoAccounts','getVtigerAccounts','getFreshsalesAccounts','initFreshsalesAccounts','initServicenowAccounts','getDynamics365Accounts','getCampaigns','getVoiceExtensions','initVoiceExtensions','getFaxAccounts','initFaxAccounts','resolve','getVoiceQueueReports','initVoiceQueueReports','getVoiceQueueHopperHistory','initVoiceQueueHopperHistory','getCampaignHopperHistory','initCampaignHopperHistory','initVoiceCallReports','error','inspect','listen','catch','[index.js][main]','util','moment','./realtime','./report','./acw','./trigger','./preview','./rpc/voiceQueue','./rpc/voiceQueueReport','./rpc/voiceCallReport','./rpc/trunk','./rpc/trigger','./rpc/template','./rpc/cmHopperHistory','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/sugarcrm','./rpc/integrations/freshdesk','./rpc/integrations/desk','./rpc/integrations/zoho','./rpc/integrations/vtiger','./rpc/integrations/freshsales','./rpc/integrations/dynamics365','ami','get','hour','then','getAgents','initAgents','initTelephones'];(function(_0x1a3339,_0x92774f){var _0x3fc981=function(_0x59e953){while(--_0x59e953){_0x1a3339['push'](_0x1a3339['shift']());}};_0x3fc981(++_0x92774f);}(_0xff83,0xee));var _0x3ff8=function(_0x139a3c,_0x4fc883){_0x139a3c=_0x139a3c-0x0;var _0x2b375b=_0xff83[_0x139a3c];return _0x2b375b;};'use strict';var BPromise=require('bluebird');var util=require(_0x3ff8('0x0'));var moment=require(_0x3ff8('0x1'));var server=require('./server');var Realtime=require(_0x3ff8('0x2'));var Report=require(_0x3ff8('0x3'));var Acw=require(_0x3ff8('0x4'));var Trigger=require(_0x3ff8('0x5'));var Dialer=require('./dialer');var Preview=require(_0x3ff8('0x6'));var Fax=require('./fax');var user=require('./rpc/user');var voiceQueue=require(_0x3ff8('0x7'));var voiceQueueReport=require(_0x3ff8('0x8'));var voiceCallReport=require(_0x3ff8('0x9'));var trunk=require(_0x3ff8('0xa'));var trigger=require(_0x3ff8('0xb'));var template=require(_0x3ff8('0xc'));var cmHopperHistory=require(_0x3ff8('0xd'));var campaign=require('./rpc/campaign');var voiceExtension=require(_0x3ff8('0xe'));var faxAccount=require(_0x3ff8('0xf'));var zendesk=require('./rpc/integrations/zendesk');var salesforce=require('./rpc/integrations/salesforce');var sugarcrm=require(_0x3ff8('0x10'));var freshdesk=require(_0x3ff8('0x11'));var desk=require(_0x3ff8('0x12'));var zoho=require(_0x3ff8('0x13'));var vtiger=require(_0x3ff8('0x14'));var freshsales=require(_0x3ff8('0x15'));var servicenow=require('./rpc/integrations/servicenow');var dynamics365=require(_0x3ff8('0x16'));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')(_0x3ff8('0x17'));var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0x3ff8('0x18')](_0x3ff8('0x19'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()['get'](_0x3ff8('0x19'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise['resolve']()[_0x3ff8('0x1a')](user[_0x3ff8('0x1b')]())[_0x3ff8('0x1a')](realtime[_0x3ff8('0x1c')]())['then'](user['getTelephones']())[_0x3ff8('0x1a')](realtime[_0x3ff8('0x1d')]())[_0x3ff8('0x1a')](trunk['getTrunks']())['then'](realtime[_0x3ff8('0x1e')]())[_0x3ff8('0x1a')](voiceQueue['getVoiceQueues']())[_0x3ff8('0x1a')](realtime[_0x3ff8('0x1f')]())[_0x3ff8('0x1a')](trigger[_0x3ff8('0x20')]())[_0x3ff8('0x1a')](realtime[_0x3ff8('0x21')]())[_0x3ff8('0x1a')](template['getTemplates']())[_0x3ff8('0x1a')](realtime['initTemplates']())[_0x3ff8('0x1a')](zendesk[_0x3ff8('0x22')]())[_0x3ff8('0x1a')](realtime[_0x3ff8('0x23')]())[_0x3ff8('0x1a')](salesforce[_0x3ff8('0x24')]())[_0x3ff8('0x1a')](realtime[_0x3ff8('0x25')]())[_0x3ff8('0x1a')](sugarcrm[_0x3ff8('0x26')]())[_0x3ff8('0x1a')](realtime[_0x3ff8('0x27')]())['then'](freshdesk['getFreshdeskAccounts']())[_0x3ff8('0x1a')](realtime[_0x3ff8('0x28')]())[_0x3ff8('0x1a')](desk['getDeskAccounts']())[_0x3ff8('0x1a')](realtime[_0x3ff8('0x29')]())[_0x3ff8('0x1a')](zoho[_0x3ff8('0x2a')]())[_0x3ff8('0x1a')](realtime[_0x3ff8('0x2b')]())[_0x3ff8('0x1a')](vtiger[_0x3ff8('0x2c')]())[_0x3ff8('0x1a')](realtime['initVtigerAccounts']())[_0x3ff8('0x1a')](freshsales[_0x3ff8('0x2d')]())[_0x3ff8('0x1a')](realtime[_0x3ff8('0x2e')]())[_0x3ff8('0x1a')](servicenow['getServicenowAccounts']())[_0x3ff8('0x1a')](realtime[_0x3ff8('0x2f')]())[_0x3ff8('0x1a')](dynamics365[_0x3ff8('0x30')]())['then'](realtime['initDynamics365Accounts']())[_0x3ff8('0x1a')](campaign[_0x3ff8('0x31')]())[_0x3ff8('0x1a')](realtime['initCampaigns']())['then'](voiceExtension[_0x3ff8('0x32')]())[_0x3ff8('0x1a')](realtime[_0x3ff8('0x33')]())[_0x3ff8('0x1a')](faxAccount[_0x3ff8('0x34')]())[_0x3ff8('0x1a')](realtime[_0x3ff8('0x35')]())['then'](function(){return realtime;});}function initParams(){return BPromise[_0x3ff8('0x36')]()[_0x3ff8('0x1a')](voiceQueueReport[_0x3ff8('0x37')]())[_0x3ff8('0x1a')](realtime[_0x3ff8('0x38')]())[_0x3ff8('0x1a')](cmHopperHistory[_0x3ff8('0x39')]())['then'](realtime[_0x3ff8('0x3a')]())[_0x3ff8('0x1a')](cmHopperHistory[_0x3ff8('0x3b')]())[_0x3ff8('0x1a')](realtime[_0x3ff8('0x3c')]())['then'](voiceCallReport['getVoiceCallReports']())['then'](realtime[_0x3ff8('0x3d')]())['catch'](function(_0x2cfd03){logger[_0x3ff8('0x3e')]('[index.js][initParams]',util[_0x3ff8('0x3f')](_0x2cfd03,{'showHidden':![],'depth':null}));});}function main(){return server[_0x3ff8('0x40')](realtime,preview,fax)[_0x3ff8('0x1a')](function(_0x141f8c){return initRealtime();})[_0x3ff8('0x1a')](function(){return initParams();})[_0x3ff8('0x1a')](function(){report['sync']();setInterval(initRealtime,0x1388);})[_0x3ff8('0x41')](function(_0x157a56){logger[_0x3ff8('0x3e')](_0x3ff8('0x42'),util[_0x3ff8('0x3f')](_0x157a56,{'showHidden':![],'depth':null}));});}main();
\ No newline at end of file
index d6ae8cc..ec3d826 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['phone','mobile','online','voiceStatus','voiceStatusTime','voiceStatusCallerIdNumber','voiceStatusQueue','onhold','prototype','updateStatusRealtime','state','toLowerCase','idle','inuse','talking','statePause','toNumber','interface','format','user:%s','user:save','emit','user:presence','exports','util','moment','md5','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','name','email','accountcode','fullname','unknown','status'];(function(_0x5ddb1c,_0x5ea4df){var _0x354adc=function(_0x2dfb1f){while(--_0x2dfb1f){_0x5ddb1c['push'](_0x5ddb1c['shift']());}};_0x354adc(++_0x5ea4df);}(_0xedd9,0xfc));var _0x9edd=function(_0xecd5e5,_0x452bf0){_0xecd5e5=_0xecd5e5-0x0;var _0x779d67=_0xedd9[_0xecd5e5];return _0x779d67;};'use strict';var _=require('lodash');var util=require(_0x9edd('0x0'));var moment=require(_0x9edd('0x1'));var md5=require(_0x9edd('0x2'));var Redis=require(_0x9edd('0x3'));var config=require(_0x9edd('0x4'));config[_0x9edd('0x5')]=_[_0x9edd('0x6')](config[_0x9edd('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0x9edd('0x7'))(new Redis(config[_0x9edd('0x5')]));function Agent(_0x268f9e){this['id']=_0x268f9e['id']||0x0;this[_0x9edd('0x8')]=_0x268f9e['name']||'';this[_0x9edd('0x9')]=_0x268f9e['email']||'';this[_0x9edd('0xa')]=_0x268f9e[_0x9edd('0xa')]||'';this[_0x9edd('0xb')]=_0x268f9e[_0x9edd('0xb')]||'';this['state']=_0x9edd('0xc');this['stateTime']=0x0;this[_0x9edd('0xd')]=_0x9edd('0xc');this['address']='';this[_0x9edd('0xe')]='';this[_0x9edd('0xf')]='';this['interface']='';this[_0x9edd('0x10')]=_0x268f9e[_0x9edd('0x10')]||![];this[_0x9edd('0x11')]=_0x9edd('0xc');this[_0x9edd('0x12')]=0x0;this[_0x9edd('0x13')]='';this[_0x9edd('0x14')]='';this[_0x9edd('0x15')]=![];this['local']=![];this[_0x9edd('0x2')]='';}Agent[_0x9edd('0x16')][_0x9edd('0x17')]=function(_0x4d9a7){var _0x13b6b6;if(_0x4d9a7&&_0x4d9a7[_0x9edd('0x18')]){_0x13b6b6=_0x4d9a7[_0x9edd('0x18')][_0x9edd('0x19')]();switch(_0x13b6b6){case'not_inuse':_0x13b6b6=_0x9edd('0x1a');break;case _0x9edd('0x1b'):_0x13b6b6=_0x9edd('0x1c');break;}}if(_0x13b6b6&&this['voiceStatus']!==_0x13b6b6||_0x4d9a7[_0x9edd('0x1d')]){this[_0x9edd('0x12')]=_[_0x9edd('0x1e')](moment()['format']('x'));}if(_0x13b6b6){this[_0x9edd('0x11')]=_0x13b6b6;}var _0x5d879c={'id':this['id'],'name':this[_0x9edd('0x8')],'email':this[_0x9edd('0x9')],'accountcode':this['accountcode'],'fullname':this['fullname'],'state':this[_0x9edd('0x18')],'stateTime':this['stateTime'],'status':this[_0x9edd('0xd')],'address':this['address'],'online':this['online'],'voiceStatus':this[_0x9edd('0x11')],'voiceStatusTime':this[_0x9edd('0x12')],'voiceStatusCallerIdNumber':this['voiceStatusCallerIdNumber'],'voiceStatusQueue':this['voiceStatusQueue'],'interface':this[_0x9edd('0x1f')],'onhold':this[_0x9edd('0x15')]};var _0x477878=md5(JSON['stringify'](_0x5d879c));if(this[_0x9edd('0x2')]!==_0x477878){this[_0x9edd('0x2')]=_0x477878;io['to'](util[_0x9edd('0x20')](_0x9edd('0x21'),_0x5d879c[_0x9edd('0x8')]))['emit'](_0x9edd('0x22'),_0x5d879c);io[_0x9edd('0x23')](_0x9edd('0x24'),_0x5d879c);}};module[_0x9edd('0x25')]=Agent;
\ No newline at end of file
+var _0x70e0=['name','voiceStatusQueue','onhold','stringify','md5','user:%s','user:save','emit','user:presence','lodash','util','moment','../../../config/environment','redis','defaults','socket.io-emitter','email','accountcode','fullname','state','unknown','address','phone','mobile','interface','online','voiceStatus','voiceStatusTime','voiceStatusCallerIdNumber','local','toLowerCase','not_inuse','idle','inuse','statePause','toNumber','format'];(function(_0x4130f2,_0x2d6dfe){var _0x23abdf=function(_0x443d4e){while(--_0x443d4e){_0x4130f2['push'](_0x4130f2['shift']());}};_0x23abdf(++_0x2d6dfe);}(_0x70e0,0x17b));var _0x070e=function(_0x2d97ce,_0x4860af){_0x2d97ce=_0x2d97ce-0x0;var _0x446111=_0x70e0[_0x2d97ce];return _0x446111;};'use strict';var _=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var moment=require(_0x070e('0x2'));var md5=require('md5');var Redis=require('ioredis');var config=require(_0x070e('0x3'));config[_0x070e('0x4')]=_[_0x070e('0x5')](config[_0x070e('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0x070e('0x6'))(new Redis(config['redis']));function Agent(_0x46fe68){this['id']=_0x46fe68['id']||0x0;this['name']=_0x46fe68['name']||'';this['email']=_0x46fe68[_0x070e('0x7')]||'';this[_0x070e('0x8')]=_0x46fe68[_0x070e('0x8')]||'';this[_0x070e('0x9')]=_0x46fe68[_0x070e('0x9')]||'';this[_0x070e('0xa')]=_0x070e('0xb');this['stateTime']=0x0;this['status']=_0x070e('0xb');this[_0x070e('0xc')]='';this[_0x070e('0xd')]='';this[_0x070e('0xe')]='';this[_0x070e('0xf')]='';this[_0x070e('0x10')]=_0x46fe68[_0x070e('0x10')]||![];this[_0x070e('0x11')]=_0x070e('0xb');this[_0x070e('0x12')]=0x0;this[_0x070e('0x13')]='';this['voiceStatusQueue']='';this['onhold']=![];this[_0x070e('0x14')]=![];this['md5']='';}Agent['prototype']['updateStatusRealtime']=function(_0x11d2ce){var _0x14c3fd;if(_0x11d2ce&&_0x11d2ce['state']){_0x14c3fd=_0x11d2ce['state'][_0x070e('0x15')]();switch(_0x14c3fd){case _0x070e('0x16'):_0x14c3fd=_0x070e('0x17');break;case _0x070e('0x18'):_0x14c3fd='talking';break;}}if(_0x14c3fd&&this['voiceStatus']!==_0x14c3fd||_0x11d2ce[_0x070e('0x19')]){this[_0x070e('0x12')]=_[_0x070e('0x1a')](moment()[_0x070e('0x1b')]('x'));}if(_0x14c3fd){this[_0x070e('0x11')]=_0x14c3fd;}var _0x5037eb={'id':this['id'],'name':this[_0x070e('0x1c')],'email':this[_0x070e('0x7')],'accountcode':this[_0x070e('0x8')],'fullname':this[_0x070e('0x9')],'state':this[_0x070e('0xa')],'stateTime':this['stateTime'],'status':this['status'],'address':this['address'],'online':this[_0x070e('0x10')],'voiceStatus':this[_0x070e('0x11')],'voiceStatusTime':this[_0x070e('0x12')],'voiceStatusCallerIdNumber':this['voiceStatusCallerIdNumber'],'voiceStatusQueue':this[_0x070e('0x1d')],'interface':this['interface'],'onhold':this[_0x070e('0x1e')]};var _0x3f6985=md5(JSON[_0x070e('0x1f')](_0x5037eb));if(this[_0x070e('0x20')]!==_0x3f6985){this[_0x070e('0x20')]=_0x3f6985;io['to'](util[_0x070e('0x1b')](_0x070e('0x21'),_0x5037eb[_0x070e('0x1c')]))['emit'](_0x070e('0x22'),_0x5037eb);io[_0x070e('0x23')](_0x070e('0x24'),_0x5037eb);}};module['exports']=Agent;
\ No newline at end of file
index 4c58f27..380343e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41a4=['dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialQueueProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','name','type','campaign','temp','ivrAnswerCallsDay','ivrTotalCallsDays','message','active','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x41a4,0x142));var _0x441a=function(_0xf10796,_0x50a708){_0xf10796=_0xf10796-0x0;var _0x5c4138=_0x41a4[_0xf10796];return _0x5c4138;};'use strict';function Campaign(_0x36d552){this['id']=_0x36d552['id']||0x0;this[_0x441a('0x0')]=_0x36d552[_0x441a('0x0')]||'';this[_0x441a('0x1')]=_0x36d552[_0x441a('0x1')]||_0x441a('0x2');this['originated']=0x0;this[_0x441a('0x3')]=0x0;this[_0x441a('0x4')]=0x0;this[_0x441a('0x5')]=0x0;this[_0x441a('0x6')]='';this['sendMessageOneNotActive']=!![];this[_0x441a('0x7')]=_0x36d552['active'];this['limitCalls']=_0x36d552['limitCalls'];this[_0x441a('0x8')]=_0x36d552[_0x441a('0x8')]||null;this[_0x441a('0x9')]=_0x36d552[_0x441a('0x9')]?_0x36d552[_0x441a('0x9')]:null;this['dialOriginateCallerIdName']=_0x36d552[_0x441a('0xa')];this[_0x441a('0xb')]=_0x36d552[_0x441a('0xb')];this['dialOriginateTimeout']=_0x36d552[_0x441a('0xc')]||0x1e;this[_0x441a('0xd')]=_0x36d552[_0x441a('0xd')];this[_0x441a('0xe')]=_0x36d552['dialCongestionRetryFrequency'];this[_0x441a('0xf')]=_0x36d552['dialBusyMaxRetry'];this[_0x441a('0x10')]=_0x36d552[_0x441a('0x10')];this[_0x441a('0x11')]=_0x36d552[_0x441a('0x11')];this[_0x441a('0x12')]=_0x36d552['dialNoAnswerRetryFrequency'];this[_0x441a('0x13')]=_0x36d552[_0x441a('0x13')];this[_0x441a('0x14')]=_0x36d552['dialNoSuchNumberMaxRetry']||0x3;this['dialNoSuchNumberRetryFrequency']=_0x36d552['dialNoSuchNumberRetryFrequency']||0x96;this[_0x441a('0x15')]=_0x36d552[_0x441a('0x15')]||0x3;this[_0x441a('0x16')]=_0x36d552[_0x441a('0x16')]||0x96;this[_0x441a('0x17')]=_0x36d552[_0x441a('0x17')]||0x3;this[_0x441a('0x18')]=_0x36d552[_0x441a('0x18')]||0x96;this[_0x441a('0x19')]=_0x36d552['dialMachineMaxRetry']||0x3;this[_0x441a('0x1a')]=_0x36d552[_0x441a('0x1a')]||0x96;this[_0x441a('0x1b')]=_0x36d552[_0x441a('0x1b')]||0x3;this[_0x441a('0x1c')]=_0x36d552[_0x441a('0x1c')]||0x96;this[_0x441a('0x1d')]=_0x36d552['dialOrderByScheduledAt']||_0x441a('0x1e');this['dialPrefix']=_0x36d552['dialPrefix']||undefined;this['dialRandomLastDigitCallerIdNumber']=_0x36d552[_0x441a('0x1f')]||undefined;this[_0x441a('0x20')]=_0x36d552[_0x441a('0x20')]||undefined;this[_0x441a('0x21')]=_0x36d552[_0x441a('0x21')]?_0x36d552[_0x441a('0x21')]:undefined;this[_0x441a('0x22')]=_0x36d552[_0x441a('0x22')]?_0x36d552[_0x441a('0x22')]:undefined;this[_0x441a('0x23')]=_0x36d552[_0x441a('0x23')]?_0x36d552[_0x441a('0x23')]:undefined;this[_0x441a('0x24')]=_0x36d552[_0x441a('0x24')]?_0x36d552[_0x441a('0x24')]:undefined;this[_0x441a('0x25')]=_0x36d552[_0x441a('0x24')]?_0x36d552['SquareProject'][_0x441a('0x0')]:undefined;this[_0x441a('0x26')]=_0x36d552[_0x441a('0x26')]||![];this[_0x441a('0x27')]=_0x36d552[_0x441a('0x27')];this['dialAMDGreeting']=_0x36d552[_0x441a('0x28')];this[_0x441a('0x29')]=_0x36d552[_0x441a('0x29')];this['dialAMDTotalAnalysisTime']=_0x36d552[_0x441a('0x2a')];this[_0x441a('0x2b')]=_0x36d552[_0x441a('0x2b')];this['dialAMDBetweenWordsSilence']=_0x36d552['dialAMDBetweenWordsSilence'];this[_0x441a('0x2c')]=_0x36d552['dialAMDMaximumNumberOfWords'];this[_0x441a('0x2d')]=_0x36d552['dialAMDSilenceThreshold'];this[_0x441a('0x2e')]=_0x36d552[_0x441a('0x2e')];}module[_0x441a('0x2f')]=Campaign;
\ No newline at end of file
+var _0x937d=['SquareProject','dialQueueProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','name','type','campaign','temp','message','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval'];(function(_0xfe455b,_0x5a5819){var _0xa47b3d=function(_0x3a6939){while(--_0x3a6939){_0xfe455b['push'](_0xfe455b['shift']());}};_0xa47b3d(++_0x5a5819);}(_0x937d,0x9c));var _0xd937=function(_0x2d4816,_0x5c0a86){_0x2d4816=_0x2d4816-0x0;var _0x3d345e=_0x937d[_0x2d4816];return _0x3d345e;};'use strict';function Campaign(_0x413c36){this['id']=_0x413c36['id']||0x0;this[_0xd937('0x0')]=_0x413c36[_0xd937('0x0')]||'';this['type']=_0x413c36[_0xd937('0x1')]||_0xd937('0x2');this['originated']=0x0;this[_0xd937('0x3')]=0x0;this['ivrAnswerCallsDay']=0x0;this['ivrTotalCallsDays']=0x0;this[_0xd937('0x4')]='';this[_0xd937('0x5')]=!![];this[_0xd937('0x6')]=_0x413c36[_0xd937('0x6')];this[_0xd937('0x7')]=_0x413c36[_0xd937('0x7')];this['dialTimezone']=_0x413c36[_0xd937('0x8')]||null;this[_0xd937('0x9')]=_0x413c36[_0xd937('0x9')]?_0x413c36[_0xd937('0x9')]:null;this['dialOriginateCallerIdName']=_0x413c36['dialOriginateCallerIdName'];this[_0xd937('0xa')]=_0x413c36[_0xd937('0xa')];this[_0xd937('0xb')]=_0x413c36[_0xd937('0xb')]||0x1e;this['dialCongestionMaxRetry']=_0x413c36[_0xd937('0xc')];this[_0xd937('0xd')]=_0x413c36[_0xd937('0xd')];this[_0xd937('0xe')]=_0x413c36[_0xd937('0xe')];this[_0xd937('0xf')]=_0x413c36[_0xd937('0xf')];this[_0xd937('0x10')]=_0x413c36[_0xd937('0x10')];this[_0xd937('0x11')]=_0x413c36[_0xd937('0x11')];this['dialGlobalMaxRetry']=_0x413c36[_0xd937('0x12')];this[_0xd937('0x13')]=_0x413c36[_0xd937('0x13')]||0x3;this[_0xd937('0x14')]=_0x413c36[_0xd937('0x14')]||0x96;this[_0xd937('0x15')]=_0x413c36[_0xd937('0x15')]||0x3;this['dialDropRetryFrequency']=_0x413c36[_0xd937('0x16')]||0x96;this[_0xd937('0x17')]=_0x413c36[_0xd937('0x17')]||0x3;this['dialAbandonedRetryFrequency']=_0x413c36[_0xd937('0x18')]||0x96;this['dialMachineMaxRetry']=_0x413c36['dialMachineMaxRetry']||0x3;this[_0xd937('0x19')]=_0x413c36['dialMachineRetryFrequency']||0x96;this[_0xd937('0x1a')]=_0x413c36['dialAgentRejectMaxRetry']||0x3;this[_0xd937('0x1b')]=_0x413c36[_0xd937('0x1b')]||0x96;this[_0xd937('0x1c')]=_0x413c36[_0xd937('0x1c')]||_0xd937('0x1d');this[_0xd937('0x1e')]=_0x413c36[_0xd937('0x1e')]||undefined;this[_0xd937('0x1f')]=_0x413c36['dialRandomLastDigitCallerIdNumber']||undefined;this[_0xd937('0x20')]=_0x413c36[_0xd937('0x20')]||undefined;this[_0xd937('0x21')]=_0x413c36[_0xd937('0x21')]?_0x413c36[_0xd937('0x21')]:undefined;this['Trunk']=_0x413c36[_0xd937('0x22')]?_0x413c36[_0xd937('0x22')]:undefined;this[_0xd937('0x23')]=_0x413c36[_0xd937('0x23')]?_0x413c36[_0xd937('0x23')]:undefined;this[_0xd937('0x24')]=_0x413c36['SquareProject']?_0x413c36['SquareProject']:undefined;this[_0xd937('0x25')]=_0x413c36[_0xd937('0x24')]?_0x413c36[_0xd937('0x24')][_0xd937('0x0')]:undefined;this['dialAMDActive']=_0x413c36[_0xd937('0x26')]||![];this[_0xd937('0x27')]=_0x413c36['dialAMDInitialSilence'];this[_0xd937('0x28')]=_0x413c36[_0xd937('0x28')];this[_0xd937('0x29')]=_0x413c36[_0xd937('0x29')];this[_0xd937('0x2a')]=_0x413c36[_0xd937('0x2a')];this[_0xd937('0x2b')]=_0x413c36[_0xd937('0x2b')];this[_0xd937('0x2c')]=_0x413c36[_0xd937('0x2c')];this['dialAMDMaximumNumberOfWords']=_0x413c36[_0xd937('0x2d')];this[_0xd937('0x2e')]=_0x413c36[_0xd937('0x2e')];this[_0xd937('0x2f')]=_0x413c36[_0xd937('0x2f')];}module['exports']=Campaign;
\ No newline at end of file
index a771372..93673ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a85=['unmanaged','abandoned','lastdata','holdtime','type','tag','disposition','monitor','monitorFilename','queue','monitors','transfercalleridnum','transferconnectedlinenum','transferType','mohtime','exports','destinationchannel','calleridnum','calleridname','accountcode','context','uniqueid','exten','answertime'];(function(_0x1d5352,_0x4f7974){var _0x3395c2=function(_0x1f062a){while(--_0x1f062a){_0x1d5352['push'](_0x1d5352['shift']());}};_0x3395c2(++_0x4f7974);}(_0x1a85,0x178));var _0x51a8=function(_0x1ef2e3,_0x380ec2){_0x1ef2e3=_0x1ef2e3-0x0;var _0x173e11=_0x1a85[_0x1ef2e3];return _0x173e11;};'use strict';function Channel(){this['starttime']=null;this['channel']='';this[_0x51a8('0x0')]='';this[_0x51a8('0x1')]=0x0;this[_0x51a8('0x2')]='';this['connectedlinenum']=undefined;this['connectedlinename']=undefined;this[_0x51a8('0x3')]=0x0;this[_0x51a8('0x4')]='';this[_0x51a8('0x5')]=0x0;this['linkedid']=0x0;this[_0x51a8('0x6')]=0x0;this['answered']=![];this[_0x51a8('0x7')]=null;this['endtime']=null;this[_0x51a8('0x8')]=![];this[_0x51a8('0x9')]=![];this['lastapplication']='';this[_0x51a8('0xa')]='';this['duration']=0x0;this['billableseconds']=0x0;this[_0x51a8('0xb')]=0x0;this[_0x51a8('0xc')]=null;this[_0x51a8('0xd')]=null;this[_0x51a8('0xe')]=null;this[_0x51a8('0xf')]=![];this[_0x51a8('0x10')]=null;this[_0x51a8('0x11')]=null;this[_0x51a8('0x12')]=[];this[_0x51a8('0x13')]=undefined;this[_0x51a8('0x14')]=undefined;this[_0x51a8('0x15')]=undefined;this[_0x51a8('0x16')]=0x0;}module[_0x51a8('0x17')]=Channel;
\ No newline at end of file
+var _0x97db=['type','tag','monitor','monitorFilename','queue','monitors','transfercalleridnum','transferconnectedlinenum','transferType','mohtime','exports','starttime','channel','destinationchannel','connectedlinenum','connectedlinename','accountcode','context','exten','answered','unmanaged','lastapplication','lastdata','billableseconds','holdtime'];(function(_0x127813,_0x443f25){var _0xd8d341=function(_0x1bac48){while(--_0x1bac48){_0x127813['push'](_0x127813['shift']());}};_0xd8d341(++_0x443f25);}(_0x97db,0x1b4));var _0xb97d=function(_0x26c3f7,_0x187d19){_0x26c3f7=_0x26c3f7-0x0;var _0x42710a=_0x97db[_0x26c3f7];return _0x42710a;};'use strict';function Channel(){this[_0xb97d('0x0')]=null;this[_0xb97d('0x1')]='';this[_0xb97d('0x2')]='';this['calleridnum']=0x0;this['calleridname']='';this[_0xb97d('0x3')]=undefined;this[_0xb97d('0x4')]=undefined;this[_0xb97d('0x5')]=0x0;this[_0xb97d('0x6')]='';this['uniqueid']=0x0;this['linkedid']=0x0;this[_0xb97d('0x7')]=0x0;this[_0xb97d('0x8')]=![];this['answertime']=null;this['endtime']=null;this[_0xb97d('0x9')]=![];this['abandoned']=![];this[_0xb97d('0xa')]='';this[_0xb97d('0xb')]='';this['duration']=0x0;this[_0xb97d('0xc')]=0x0;this[_0xb97d('0xd')]=0x0;this[_0xb97d('0xe')]=null;this[_0xb97d('0xf')]=null;this['disposition']=null;this[_0xb97d('0x10')]=![];this[_0xb97d('0x11')]=null;this[_0xb97d('0x12')]=null;this[_0xb97d('0x13')]=[];this[_0xb97d('0x14')]=undefined;this[_0xb97d('0x15')]=undefined;this[_0xb97d('0x16')]=undefined;this[_0xb97d('0x17')]=0x0;}module[_0xb97d('0x18')]=Channel;
\ No newline at end of file
index c29121f..7f11094 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0dff=['type','serverUrl','Configurations','exports','name','username','remoteUri','authType','password','consumerKey','consumerSecret','tokenSecret'];(function(_0x4340f3,_0x1ccd94){var _0x40e9f1=function(_0x290b4d){while(--_0x290b4d){_0x4340f3['push'](_0x4340f3['shift']());}};_0x40e9f1(++_0x1ccd94);}(_0x0dff,0x1f0));var _0xf0df=function(_0x564b09,_0x3536a6){_0x564b09=_0x564b09-0x0;var _0x470b28=_0x0dff[_0x564b09];return _0x470b28;};'use strict';function DeskAccount(_0x24fae2){this['id']=_0x24fae2['id']||0x0;this[_0xf0df('0x0')]=_0x24fae2['name']||'';this['username']=_0x24fae2[_0xf0df('0x1')]||'';this['remoteUri']=_0x24fae2[_0xf0df('0x2')]||'';this['authType']=_0x24fae2[_0xf0df('0x3')]||'';this[_0xf0df('0x4')]=_0x24fae2[_0xf0df('0x4')]||'';this[_0xf0df('0x5')]=_0x24fae2[_0xf0df('0x5')]||'';this[_0xf0df('0x6')]=_0x24fae2['consumerSecret']||'';this['token']=_0x24fae2['token']||'';this[_0xf0df('0x7')]=_0x24fae2[_0xf0df('0x7')]||'';this[_0xf0df('0x8')]=_0x24fae2[_0xf0df('0x8')]||'';this['serverUrl']=_0x24fae2[_0xf0df('0x9')]||'';this[_0xf0df('0xa')]=_0x24fae2[_0xf0df('0xa')]||{};}module[_0xf0df('0xb')]=DeskAccount;
\ No newline at end of file
+var _0xb551=['serverUrl','Configurations','exports','name','username','remoteUri','authType','password','consumerKey','consumerSecret','tokenSecret','type'];(function(_0x7a504b,_0x370322){var _0x1d104e=function(_0x51b3a5){while(--_0x51b3a5){_0x7a504b['push'](_0x7a504b['shift']());}};_0x1d104e(++_0x370322);}(_0xb551,0xff));var _0x1b55=function(_0x4e4d11,_0x3b6aba){_0x4e4d11=_0x4e4d11-0x0;var _0xfb969c=_0xb551[_0x4e4d11];return _0xfb969c;};'use strict';function DeskAccount(_0x13a66a){this['id']=_0x13a66a['id']||0x0;this[_0x1b55('0x0')]=_0x13a66a[_0x1b55('0x0')]||'';this[_0x1b55('0x1')]=_0x13a66a[_0x1b55('0x1')]||'';this[_0x1b55('0x2')]=_0x13a66a[_0x1b55('0x2')]||'';this['authType']=_0x13a66a[_0x1b55('0x3')]||'';this[_0x1b55('0x4')]=_0x13a66a[_0x1b55('0x4')]||'';this[_0x1b55('0x5')]=_0x13a66a[_0x1b55('0x5')]||'';this[_0x1b55('0x6')]=_0x13a66a['consumerSecret']||'';this['token']=_0x13a66a['token']||'';this[_0x1b55('0x7')]=_0x13a66a[_0x1b55('0x7')]||'';this[_0x1b55('0x8')]=_0x13a66a[_0x1b55('0x8')]||'';this[_0x1b55('0x9')]=_0x13a66a[_0x1b55('0x9')]||'';this[_0x1b55('0xa')]=_0x13a66a[_0x1b55('0xa')]||{};}module[_0x1b55('0xb')]=DeskAccount;
\ No newline at end of file
index 961f8cf..8bd0df7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14f5=['name','username','password','remoteUri','tenantId','clientId','serverUrl','modernAuthentication','Configurations','CloudProvider','exports'];(function(_0x546d13,_0x118195){var _0x377164=function(_0x214ee3){while(--_0x214ee3){_0x546d13['push'](_0x546d13['shift']());}};_0x377164(++_0x118195);}(_0x14f5,0x16b));var _0x514f=function(_0x302ebe,_0x4f4943){_0x302ebe=_0x302ebe-0x0;var _0x3c7926=_0x14f5[_0x302ebe];return _0x3c7926;};'use strict';function Dynamics365Account(_0x285037){this['id']=_0x285037['id']||0x0;this['name']=_0x285037[_0x514f('0x0')]||'';this[_0x514f('0x1')]=_0x285037['username']||'';this[_0x514f('0x2')]=_0x285037[_0x514f('0x2')]||'';this[_0x514f('0x3')]=_0x285037[_0x514f('0x3')]||'';this[_0x514f('0x4')]=_0x285037[_0x514f('0x4')]||'';this[_0x514f('0x5')]=_0x285037[_0x514f('0x5')]||'';this['clientSecret']=_0x285037['clientSecret']||{};this[_0x514f('0x6')]=_0x285037['serverUrl']||'';this['modernAuthentication']=_0x285037[_0x514f('0x7')]||![];this[_0x514f('0x8')]=_0x285037[_0x514f('0x8')]||{};this[_0x514f('0x9')]=_0x285037[_0x514f('0x9')]||{};}module[_0x514f('0xa')]=Dynamics365Account;
\ No newline at end of file
+var _0x0ed4=['password','remoteUri','tenantId','clientId','clientSecret','serverUrl','modernAuthentication','Configurations','CloudProvider','name','username'];(function(_0x4cd21c,_0x35fa45){var _0x5d8e5e=function(_0x3af223){while(--_0x3af223){_0x4cd21c['push'](_0x4cd21c['shift']());}};_0x5d8e5e(++_0x35fa45);}(_0x0ed4,0xb9));var _0x40ed=function(_0x590dbb,_0x1d8dd4){_0x590dbb=_0x590dbb-0x0;var _0x53375e=_0x0ed4[_0x590dbb];return _0x53375e;};'use strict';function Dynamics365Account(_0x440c1a){this['id']=_0x440c1a['id']||0x0;this[_0x40ed('0x0')]=_0x440c1a['name']||'';this[_0x40ed('0x1')]=_0x440c1a[_0x40ed('0x1')]||'';this['password']=_0x440c1a[_0x40ed('0x2')]||'';this[_0x40ed('0x3')]=_0x440c1a['remoteUri']||'';this[_0x40ed('0x4')]=_0x440c1a[_0x40ed('0x4')]||'';this[_0x40ed('0x5')]=_0x440c1a['clientId']||'';this['clientSecret']=_0x440c1a[_0x40ed('0x6')]||{};this[_0x40ed('0x7')]=_0x440c1a['serverUrl']||'';this[_0x40ed('0x8')]=_0x440c1a[_0x40ed('0x8')]||![];this[_0x40ed('0x9')]=_0x440c1a[_0x40ed('0x9')]||{};this[_0x40ed('0xa')]=_0x440c1a[_0x40ed('0xa')]||{};}module['exports']=Dynamics365Account;
\ No newline at end of file
index bbbb496..4eb343d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x589b=['key','description','ecm','headerinfo','localstationid','minrate','maxrate','modem','v17,v27,v29','gateway','faxdetect','t38timeout','tech','SIP','Trunk'];(function(_0x27a0a9,_0x1e7dd1){var _0x11cb3b=function(_0x5a9aa3){while(--_0x5a9aa3){_0x27a0a9['push'](_0x27a0a9['shift']());}};_0x11cb3b(++_0x1e7dd1);}(_0x589b,0x97));var _0xb589=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x589b[_0x3dd15e];return _0x231fd0;};'use strict';function FaxAccount(_0x580733){this['id']=_0x580733['id']||0x0;this['name']=_0x580733['name']||'';this[_0xb589('0x0')]=_0x580733[_0xb589('0x0')];this[_0xb589('0x1')]=_0x580733[_0xb589('0x1')];this['headerinfo']=_0x580733[_0xb589('0x2')];this['localstationid']=_0x580733[_0xb589('0x3')];this[_0xb589('0x4')]=_0x580733[_0xb589('0x4')]||0x960;this['maxrate']=_0x580733[_0xb589('0x5')]||0x3840;this[_0xb589('0x6')]=_0x580733[_0xb589('0x6')]||_0xb589('0x7');this[_0xb589('0x8')]=_0x580733[_0xb589('0x8')]||'no';this[_0xb589('0x9')]=_0x580733[_0xb589('0x9')]||'no';this[_0xb589('0xa')]=_0x580733[_0xb589('0xa')]||0x1388;this[_0xb589('0xb')]=_0x580733['tech']||_0xb589('0xc');this[_0xb589('0xd')]=_0x580733['Trunk']?_0x580733[_0xb589('0xd')]:undefined;this['ListId']=_0x580733['ListId'];this[_0xb589('0xe')]=_0x580733[_0xb589('0xe')];}module['exports']=FaxAccount;
\ No newline at end of file
+var _0xd449=['key','name','description','ecm','headerinfo','localstationid','minrate','maxrate','modem','v17,v27,v29','gateway','faxdetect','t38timeout','tech','SIP','Trunk','ListId'];(function(_0x48ff30,_0x2a14d1){var _0x4e2d8b=function(_0x484c53){while(--_0x484c53){_0x48ff30['push'](_0x48ff30['shift']());}};_0x4e2d8b(++_0x2a14d1);}(_0xd449,0x155));var _0x9d44=function(_0x4af01e,_0x543f5c){_0x4af01e=_0x4af01e-0x0;var _0x178c11=_0xd449[_0x4af01e];return _0x178c11;};'use strict';function FaxAccount(_0x3b6389){this['id']=_0x3b6389['id']||0x0;this['name']=_0x3b6389[_0x9d44('0x0')]||'';this[_0x9d44('0x1')]=_0x3b6389['description'];this[_0x9d44('0x2')]=_0x3b6389[_0x9d44('0x2')];this[_0x9d44('0x3')]=_0x3b6389[_0x9d44('0x3')];this[_0x9d44('0x4')]=_0x3b6389[_0x9d44('0x4')];this[_0x9d44('0x5')]=_0x3b6389[_0x9d44('0x5')]||0x960;this[_0x9d44('0x6')]=_0x3b6389['maxrate']||0x3840;this[_0x9d44('0x7')]=_0x3b6389['modem']||_0x9d44('0x8');this[_0x9d44('0x9')]=_0x3b6389[_0x9d44('0x9')]||'no';this[_0x9d44('0xa')]=_0x3b6389[_0x9d44('0xa')]||'no';this['t38timeout']=_0x3b6389[_0x9d44('0xb')]||0x1388;this['tech']=_0x3b6389[_0x9d44('0xc')]||_0x9d44('0xd');this[_0x9d44('0xe')]=_0x3b6389['Trunk']?_0x3b6389[_0x9d44('0xe')]:undefined;this[_0x9d44('0xf')]=_0x3b6389[_0x9d44('0xf')];this[_0x9d44('0x10')]=_0x3b6389[_0x9d44('0x10')];}module['exports']=FaxAccount;
\ No newline at end of file
index f9f5870..cd5013d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa76b=['username','token','remoteUri','serverUrl','Configurations','exports','name'];(function(_0x34ae12,_0x306ef6){var _0x29ed66=function(_0x5e5d17){while(--_0x5e5d17){_0x34ae12['push'](_0x34ae12['shift']());}};_0x29ed66(++_0x306ef6);}(_0xa76b,0x7d));var _0xba76=function(_0x33519a,_0x4f7d3a){_0x33519a=_0x33519a-0x0;var _0x551e54=_0xa76b[_0x33519a];return _0x551e54;};'use strict';function FreshdeskAccount(_0x1373e4){this['id']=_0x1373e4['id']||0x0;this[_0xba76('0x0')]=_0x1373e4[_0xba76('0x0')]||'';this[_0xba76('0x1')]=_0x1373e4[_0xba76('0x1')]||'';this['apiKey']=_0x1373e4[_0xba76('0x2')]||'';this[_0xba76('0x3')]=_0x1373e4[_0xba76('0x3')]||'';this[_0xba76('0x4')]=_0x1373e4['serverUrl']||'';this[_0xba76('0x5')]=_0x1373e4['Configurations']||{};}module[_0xba76('0x6')]=FreshdeskAccount;
\ No newline at end of file
+var _0xb649=['serverUrl','Configurations','name','username','apiKey','remoteUri'];(function(_0x4fbfd9,_0x3ab91a){var _0x31dc94=function(_0x11e53b){while(--_0x11e53b){_0x4fbfd9['push'](_0x4fbfd9['shift']());}};_0x31dc94(++_0x3ab91a);}(_0xb649,0x80));var _0x9b64=function(_0x20aadb,_0x5a607a){_0x20aadb=_0x20aadb-0x0;var _0x520018=_0xb649[_0x20aadb];return _0x520018;};'use strict';function FreshdeskAccount(_0x19a423){this['id']=_0x19a423['id']||0x0;this[_0x9b64('0x0')]=_0x19a423['name']||'';this['username']=_0x19a423[_0x9b64('0x1')]||'';this[_0x9b64('0x2')]=_0x19a423['token']||'';this[_0x9b64('0x3')]=_0x19a423['remoteUri']||'';this[_0x9b64('0x4')]=_0x19a423[_0x9b64('0x4')]||'';this[_0x9b64('0x5')]=_0x19a423['Configurations']||{};}module['exports']=FreshdeskAccount;
\ No newline at end of file
index e8b2439..7c63201 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4af9=['remoteUri','serverUrl','Configurations','exports','name','username','apiKey','token'];(function(_0x5c4cda,_0x2771b7){var _0x697b5c=function(_0x26a1a5){while(--_0x26a1a5){_0x5c4cda['push'](_0x5c4cda['shift']());}};_0x697b5c(++_0x2771b7);}(_0x4af9,0x12c));var _0x94af=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4af9[_0x3dd15e];return _0x231fd0;};'use strict';function FreshsalesAccount(_0x1c0e9e){this['id']=_0x1c0e9e['id']||0x0;this[_0x94af('0x0')]=_0x1c0e9e['name']||'';this['username']=_0x1c0e9e[_0x94af('0x1')]||'';this[_0x94af('0x2')]=_0x1c0e9e[_0x94af('0x3')]||'';this[_0x94af('0x4')]=_0x1c0e9e[_0x94af('0x4')]||'';this[_0x94af('0x5')]=_0x1c0e9e[_0x94af('0x5')]||'';this['Configurations']=_0x1c0e9e[_0x94af('0x6')]||{};}module[_0x94af('0x7')]=FreshsalesAccount;
\ No newline at end of file
+var _0x6dfa=['remoteUri','Configurations','exports','name','username','token'];(function(_0x4bf8b0,_0xddbf6f){var _0x1a1c39=function(_0x109fdc){while(--_0x109fdc){_0x4bf8b0['push'](_0x4bf8b0['shift']());}};_0x1a1c39(++_0xddbf6f);}(_0x6dfa,0x7b));var _0xa6df=function(_0x143619,_0x47282b){_0x143619=_0x143619-0x0;var _0x1a9414=_0x6dfa[_0x143619];return _0x1a9414;};'use strict';function FreshsalesAccount(_0x21c653){this['id']=_0x21c653['id']||0x0;this[_0xa6df('0x0')]=_0x21c653[_0xa6df('0x0')]||'';this[_0xa6df('0x1')]=_0x21c653[_0xa6df('0x1')]||'';this['apiKey']=_0x21c653[_0xa6df('0x2')]||'';this['remoteUri']=_0x21c653[_0xa6df('0x3')]||'';this['serverUrl']=_0x21c653['serverUrl']||'';this[_0xa6df('0x4')]=_0x21c653[_0xa6df('0x4')]||{};}module[_0xa6df('0x5')]=FreshsalesAccount;
\ No newline at end of file
index d213079..d84e048 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2de3=['voice','mohtime','variables','exports','type','inbound','uniqueid','calleridnum','queuecallerleaveAt','count','queuecallerabandon','queuecallerabandonAt','queuecallercomplete','queuecallercompleteAt','queuecallerexit','queuecallerexitAt','originalposition','channel','connectedlinenum','accountcode','context','exten','holdtime','assigned','motionChannel'];(function(_0x51020b,_0x38c2c7){var _0x371e47=function(_0x2a538f){while(--_0x2a538f){_0x51020b['push'](_0x51020b['shift']());}};_0x371e47(++_0x38c2c7);}(_0x2de3,0x162));var _0x32de=function(_0x553252,_0x23b4d2){_0x553252=_0x553252-0x0;var _0x48a5c6=_0x2de3[_0x553252];return _0x48a5c6;};'use strict';function QueueReport(){this[_0x32de('0x0')]=_0x32de('0x1');this[_0x32de('0x2')]='';this[_0x32de('0x3')]='';this['calleridname']='';this['queue']='';this['queuecallerjoinAt']=null;this[_0x32de('0x4')]=null;this['position']=0x1;this[_0x32de('0x5')]=0x1;this[_0x32de('0x6')]=![];this[_0x32de('0x7')]=null;this[_0x32de('0x8')]=![];this[_0x32de('0x9')]=null;this[_0x32de('0xa')]=![];this[_0x32de('0xb')]=null;this[_0x32de('0xc')]=0x1;this[_0x32de('0xd')]='';this[_0x32de('0xe')]='';this['connectedlinename']='';this[_0x32de('0xf')]='';this[_0x32de('0x10')]='';this[_0x32de('0x11')]='';this['priority']='';this[_0x32de('0x12')]=0x0;this[_0x32de('0x13')]=![];this['lastAssignedTo']='';this[_0x32de('0x14')]=_0x32de('0x15');this[_0x32de('0x16')]=0x0;this[_0x32de('0x17')]={};}module[_0x32de('0x18')]=QueueReport;
\ No newline at end of file
+var _0x5fb9=['holdtime','assigned','lastAssignedTo','voice','mohtime','variables','exports','type','inbound','uniqueid','calleridname','queue','queuecallerjoinAt','queuecallerleaveAt','count','queuecallerabandon','queuecallerabandonAt','queuecallerexitAt','originalposition','channel','connectedlinenum','connectedlinename','exten','priority'];(function(_0x4d2f00,_0x4e94d5){var _0x2d7b7f=function(_0x18fa08){while(--_0x18fa08){_0x4d2f00['push'](_0x4d2f00['shift']());}};_0x2d7b7f(++_0x4e94d5);}(_0x5fb9,0x1cf));var _0x95fb=function(_0x56f5b4,_0x4cbf5c){_0x56f5b4=_0x56f5b4-0x0;var _0x194196=_0x5fb9[_0x56f5b4];return _0x194196;};'use strict';function QueueReport(){this[_0x95fb('0x0')]=_0x95fb('0x1');this[_0x95fb('0x2')]='';this['calleridnum']='';this[_0x95fb('0x3')]='';this[_0x95fb('0x4')]='';this[_0x95fb('0x5')]=null;this[_0x95fb('0x6')]=null;this['position']=0x1;this[_0x95fb('0x7')]=0x1;this[_0x95fb('0x8')]=![];this[_0x95fb('0x9')]=null;this['queuecallercomplete']=![];this['queuecallercompleteAt']=null;this['queuecallerexit']=![];this[_0x95fb('0xa')]=null;this[_0x95fb('0xb')]=0x1;this[_0x95fb('0xc')]='';this[_0x95fb('0xd')]='';this[_0x95fb('0xe')]='';this['accountcode']='';this['context']='';this[_0x95fb('0xf')]='';this[_0x95fb('0x10')]='';this[_0x95fb('0x11')]=0x0;this[_0x95fb('0x12')]=![];this[_0x95fb('0x13')]='';this['motionChannel']=_0x95fb('0x14');this[_0x95fb('0x15')]=0x0;this[_0x95fb('0x16')]={};}module[_0x95fb('0x17')]=QueueReport;
\ No newline at end of file
index aa67208..7f875e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8597=['password','clientId','clientSecret','securityToken','type','integrationTab','serverUrl','Configurations','exports','name','username','remoteUri'];(function(_0x1630df,_0x3af18a){var _0x392cda=function(_0x2bd83d){while(--_0x2bd83d){_0x1630df['push'](_0x1630df['shift']());}};_0x392cda(++_0x3af18a);}(_0x8597,0xe1));var _0x7859=function(_0x503cd5,_0x57774a){_0x503cd5=_0x503cd5-0x0;var _0x1fdf1e=_0x8597[_0x503cd5];return _0x1fdf1e;};'use strict';function SalesforceAccount(_0x505052){this['id']=_0x505052['id']||0x0;this['name']=_0x505052[_0x7859('0x0')]||'';this[_0x7859('0x1')]=_0x505052[_0x7859('0x1')]||'';this[_0x7859('0x2')]=_0x505052['remoteUri']||'';this[_0x7859('0x3')]=_0x505052[_0x7859('0x3')]||'';this[_0x7859('0x4')]=_0x505052[_0x7859('0x4')]||'';this[_0x7859('0x5')]=_0x505052['clientSecret']||'';this[_0x7859('0x6')]=_0x505052['securityToken']||'';this['type']=_0x505052[_0x7859('0x7')]||_0x7859('0x8');this[_0x7859('0x9')]=_0x505052[_0x7859('0x9')]||'';this[_0x7859('0xa')]=_0x505052[_0x7859('0xa')]||{};}module[_0x7859('0xb')]=SalesforceAccount;
\ No newline at end of file
+var _0x939a=['integrationTab','serverUrl','Configurations','exports','name','username','remoteUri','password','clientId','clientSecret','type'];(function(_0x13d0ea,_0x12957b){var _0x1b5d38=function(_0x57c80e){while(--_0x57c80e){_0x13d0ea['push'](_0x13d0ea['shift']());}};_0x1b5d38(++_0x12957b);}(_0x939a,0x12d));var _0xa939=function(_0x2fc0a1,_0x4bd2b1){_0x2fc0a1=_0x2fc0a1-0x0;var _0x8b6ef1=_0x939a[_0x2fc0a1];return _0x8b6ef1;};'use strict';function SalesforceAccount(_0x40c21f){this['id']=_0x40c21f['id']||0x0;this[_0xa939('0x0')]=_0x40c21f[_0xa939('0x0')]||'';this[_0xa939('0x1')]=_0x40c21f[_0xa939('0x1')]||'';this[_0xa939('0x2')]=_0x40c21f['remoteUri']||'';this[_0xa939('0x3')]=_0x40c21f['password']||'';this[_0xa939('0x4')]=_0x40c21f[_0xa939('0x4')]||'';this[_0xa939('0x5')]=_0x40c21f[_0xa939('0x5')]||'';this['securityToken']=_0x40c21f['securityToken']||'';this[_0xa939('0x6')]=_0x40c21f[_0xa939('0x6')]||_0xa939('0x7');this[_0xa939('0x8')]=_0x40c21f[_0xa939('0x8')]||'';this[_0xa939('0x9')]=_0x40c21f[_0xa939('0x9')]||{};}module[_0xa939('0xa')]=SalesforceAccount;
\ No newline at end of file
index 3e3bff0..be448eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda7e=['remoteUri','serverUrl','Configurations','exports','name','username','password'];(function(_0x3c6def,_0x65d818){var _0x5ccca9=function(_0x579fa1){while(--_0x579fa1){_0x3c6def['push'](_0x3c6def['shift']());}};_0x5ccca9(++_0x65d818);}(_0xda7e,0x1d2));var _0xeda7=function(_0x5465e6,_0x2a8809){_0x5465e6=_0x5465e6-0x0;var _0x10044e=_0xda7e[_0x5465e6];return _0x10044e;};'use strict';function ServicenowAccount(_0x5dece8){this['id']=_0x5dece8['id']||0x0;this[_0xeda7('0x0')]=_0x5dece8[_0xeda7('0x0')]||'';this[_0xeda7('0x1')]=_0x5dece8[_0xeda7('0x1')]||'';this[_0xeda7('0x2')]=_0x5dece8['password']||'';this[_0xeda7('0x3')]=_0x5dece8[_0xeda7('0x3')]||'';this[_0xeda7('0x4')]=_0x5dece8['serverUrl']||'';this[_0xeda7('0x5')]=_0x5dece8[_0xeda7('0x5')]||{};}module[_0xeda7('0x6')]=ServicenowAccount;
\ No newline at end of file
+var _0x6fb2=['name','password','serverUrl','Configurations','exports'];(function(_0x2118f7,_0x5be6e1){var _0xfa3afe=function(_0x11318c){while(--_0x11318c){_0x2118f7['push'](_0x2118f7['shift']());}};_0xfa3afe(++_0x5be6e1);}(_0x6fb2,0x104));var _0x26fb=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x6fb2[_0x167cc1];return _0x10bc4b;};'use strict';function ServicenowAccount(_0x1aa1d2){this['id']=_0x1aa1d2['id']||0x0;this[_0x26fb('0x0')]=_0x1aa1d2['name']||'';this['username']=_0x1aa1d2['username']||'';this[_0x26fb('0x1')]=_0x1aa1d2[_0x26fb('0x1')]||'';this['remoteUri']=_0x1aa1d2['remoteUri']||'';this[_0x26fb('0x2')]=_0x1aa1d2[_0x26fb('0x2')]||'';this[_0x26fb('0x3')]=_0x1aa1d2[_0x26fb('0x3')]||{};}module[_0x26fb('0x4')]=ServicenowAccount;
\ No newline at end of file
index a79d7fd..7b9e4a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6093=['remoteUri','serverUrl','Configurations','exports','name','username','password'];(function(_0x23cd45,_0x1d05d7){var _0x30ff15=function(_0x557466){while(--_0x557466){_0x23cd45['push'](_0x23cd45['shift']());}};_0x30ff15(++_0x1d05d7);}(_0x6093,0xf2));var _0x3609=function(_0x282bbd,_0x260d29){_0x282bbd=_0x282bbd-0x0;var _0x2ac13b=_0x6093[_0x282bbd];return _0x2ac13b;};'use strict';function SugarcrmAccount(_0x170237){this['id']=_0x170237['id']||0x0;this[_0x3609('0x0')]=_0x170237['name']||'';this['username']=_0x170237[_0x3609('0x1')]||'';this[_0x3609('0x2')]=_0x170237[_0x3609('0x2')]||'';this[_0x3609('0x3')]=_0x170237[_0x3609('0x3')]||'';this[_0x3609('0x4')]=_0x170237['serverUrl']||'';this[_0x3609('0x5')]=_0x170237[_0x3609('0x5')]||{};}module[_0x3609('0x6')]=SugarcrmAccount;
\ No newline at end of file
+var _0xdcc5=['serverUrl','Configurations','exports','name','username','password'];(function(_0x1e087c,_0x44331c){var _0x336efb=function(_0x21ba9e){while(--_0x21ba9e){_0x1e087c['push'](_0x1e087c['shift']());}};_0x336efb(++_0x44331c);}(_0xdcc5,0x189));var _0x5dcc=function(_0x3bea51,_0xd3c973){_0x3bea51=_0x3bea51-0x0;var _0x40e435=_0xdcc5[_0x3bea51];return _0x40e435;};'use strict';function SugarcrmAccount(_0x4d863a){this['id']=_0x4d863a['id']||0x0;this[_0x5dcc('0x0')]=_0x4d863a[_0x5dcc('0x0')]||'';this[_0x5dcc('0x1')]=_0x4d863a['username']||'';this[_0x5dcc('0x2')]=_0x4d863a[_0x5dcc('0x2')]||'';this['remoteUri']=_0x4d863a['remoteUri']||'';this['serverUrl']=_0x4d863a[_0x5dcc('0x3')]||'';this['Configurations']=_0x4d863a[_0x5dcc('0x4')]||{};}module[_0x5dcc('0x5')]=SugarcrmAccount;
\ No newline at end of file
index ee035fc..731e414 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x354b=['name','accountcode','state','unknown','stateTime','status','exports'];(function(_0x181ba8,_0x53c329){var _0x589cff=function(_0x1681dd){while(--_0x1681dd){_0x181ba8['push'](_0x181ba8['shift']());}};_0x589cff(++_0x53c329);}(_0x354b,0x85));var _0xb354=function(_0x4dd42e,_0x4f109b){_0x4dd42e=_0x4dd42e-0x0;var _0x4d78b0=_0x354b[_0x4dd42e];return _0x4d78b0;};'use strict';function Telephone(_0x4fde5b){this['id']=_0x4fde5b['id']||0x0;this[_0xb354('0x0')]=_0x4fde5b[_0xb354('0x0')]||'';this[_0xb354('0x1')]=_0x4fde5b[_0xb354('0x1')]||'';this[_0xb354('0x2')]=_0xb354('0x3');this[_0xb354('0x4')]=0x0;this[_0xb354('0x5')]=_0xb354('0x3');this['address']='';}module[_0xb354('0x6')]=Telephone;
\ No newline at end of file
+var _0x3624=['address','exports','name','accountcode','state','stateTime','status','unknown'];(function(_0x192099,_0x38a593){var _0x3d6ccc=function(_0x541fff){while(--_0x541fff){_0x192099['push'](_0x192099['shift']());}};_0x3d6ccc(++_0x38a593);}(_0x3624,0x152));var _0x4362=function(_0x278e3c,_0x1c9cfd){_0x278e3c=_0x278e3c-0x0;var _0x3e2d9b=_0x3624[_0x278e3c];return _0x3e2d9b;};'use strict';function Telephone(_0x4a505b){this['id']=_0x4a505b['id']||0x0;this[_0x4362('0x0')]=_0x4a505b[_0x4362('0x0')]||'';this[_0x4362('0x1')]=_0x4a505b[_0x4362('0x1')]||'';this[_0x4362('0x2')]='unknown';this[_0x4362('0x3')]=0x0;this[_0x4362('0x4')]=_0x4362('0x5');this[_0x4362('0x6')]='';}module[_0x4362('0x7')]=Telephone;
\ No newline at end of file
index d89caf9..fc055a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['name','html'];(function(_0x1eba28,_0x505f3d){var _0x59ac67=function(_0x36b9a1){while(--_0x36b9a1){_0x1eba28['push'](_0x1eba28['shift']());}};_0x59ac67(++_0x505f3d);}(_0xb10b,0x12a));var _0xbb10=function(_0x33ac6b,_0x1ed895){_0x33ac6b=_0x33ac6b-0x0;var _0x34cffe=_0xb10b[_0x33ac6b];return _0x34cffe;};'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(_0x12c5ab,_0x1ca781){var _0x39d58c=function(_0x391126){while(--_0x391126){_0x12c5ab['push'](_0x12c5ab['shift']());}};_0x39d58c(++_0x1ca781);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0xa9e0[_0x1ac595];return _0x455fff;};'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 1adf9e1..3857b1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5eb8=['Actions','name','channel','voice','status','AllConditions','AnyConditions'];(function(_0x51639a,_0x35f006){var _0x3abae4=function(_0x89b35e){while(--_0x89b35e){_0x51639a['push'](_0x51639a['shift']());}};_0x3abae4(++_0x35f006);}(_0x5eb8,0xb0));var _0x85eb=function(_0x478414,_0xcf142d){_0x478414=_0x478414-0x0;var _0x5eb6b9=_0x5eb8[_0x478414];return _0x5eb6b9;};'use strict';function Trigger(_0x5ea4df){this['id']=_0x5ea4df['id']||0x0;this['name']=_0x5ea4df[_0x85eb('0x0')]||'';this[_0x85eb('0x1')]=_0x5ea4df[_0x85eb('0x1')]||_0x85eb('0x2');this[_0x85eb('0x3')]=_0x5ea4df[_0x85eb('0x3')]||![];this[_0x85eb('0x4')]=_0x5ea4df[_0x85eb('0x4')]||[];this[_0x85eb('0x5')]=_0x5ea4df[_0x85eb('0x5')]||[];this[_0x85eb('0x6')]=_0x5ea4df[_0x85eb('0x6')]||[];}module['exports']=Trigger;
\ No newline at end of file
+var _0x757a=['name','status','AllConditions','AnyConditions','Actions','exports'];(function(_0xfff9cf,_0x55ad70){var _0x231718=function(_0x410e35){while(--_0x410e35){_0xfff9cf['push'](_0xfff9cf['shift']());}};_0x231718(++_0x55ad70);}(_0x757a,0xde));var _0xa757=function(_0x2e9a78,_0x3d175e){_0x2e9a78=_0x2e9a78-0x0;var _0x21d7be=_0x757a[_0x2e9a78];return _0x21d7be;};'use strict';function Trigger(_0x1acf7d){this['id']=_0x1acf7d['id']||0x0;this[_0xa757('0x0')]=_0x1acf7d[_0xa757('0x0')]||'';this['channel']=_0x1acf7d['channel']||'voice';this[_0xa757('0x1')]=_0x1acf7d[_0xa757('0x1')]||![];this[_0xa757('0x2')]=_0x1acf7d[_0xa757('0x2')]||[];this[_0xa757('0x3')]=_0x1acf7d[_0xa757('0x3')]||[];this['Actions']=_0x1acf7d[_0xa757('0x4')]||[];}module[_0xa757('0x5')]=Trigger;
\ No newline at end of file
index fa9f848..e630083 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2dba=['domainport','refresh','registrationtime','defaultuser','exports','active','name','state','unknown','stateTime','registry','indexOf','split','port'];(function(_0x1c83fc,_0x39a5fb){var _0x28602f=function(_0x39e1ef){while(--_0x39e1ef){_0x1c83fc['push'](_0x1c83fc['shift']());}};_0x28602f(++_0x39a5fb);}(_0x2dba,0xf3));var _0xa2db=function(_0x30b6b4,_0x5af717){_0x30b6b4=_0x30b6b4-0x0;var _0x5a1076=_0x2dba[_0x30b6b4];return _0x5a1076;};'use strict';function Trunk(_0x597501){this['id']=_0x597501['id']||0x0;this[_0xa2db('0x0')]=_0x597501['active']||![];this[_0xa2db('0x1')]=_0x597501[_0xa2db('0x1')]||'';this[_0xa2db('0x2')]=_0xa2db('0x3');this[_0xa2db('0x4')]=0x0;this['status']='unknown';this[_0xa2db('0x5')]=_0x597501[_0xa2db('0x5')]&&_0x597501['registry'][_0xa2db('0x6')](':')?_0x597501[_0xa2db('0x5')][_0xa2db('0x7')](':')[0x0]:'';this['host']='';this[_0xa2db('0x8')]='';this['domain']='';this[_0xa2db('0x9')]='';this[_0xa2db('0xa')]='';this['stateRegistry']=_0xa2db('0x3');this[_0xa2db('0xb')]='';this['address']='';this[_0xa2db('0xc')]=_0x597501['defaultuser']||'';}module[_0xa2db('0xd')]=Trunk;
\ No newline at end of file
+var _0x6cfd=['status','registry','host','port','domain','domainport','refresh','stateRegistry','registrationtime','address','defaultuser','exports','active','name','state','unknown','stateTime'];(function(_0x2af5c5,_0x1b600b){var _0x2686e3=function(_0x37eb15){while(--_0x37eb15){_0x2af5c5['push'](_0x2af5c5['shift']());}};_0x2686e3(++_0x1b600b);}(_0x6cfd,0x160));var _0xd6cf=function(_0x3edeb0,_0x429b40){_0x3edeb0=_0x3edeb0-0x0;var _0x4b77e4=_0x6cfd[_0x3edeb0];return _0x4b77e4;};'use strict';function Trunk(_0x595038){this['id']=_0x595038['id']||0x0;this[_0xd6cf('0x0')]=_0x595038[_0xd6cf('0x0')]||![];this[_0xd6cf('0x1')]=_0x595038[_0xd6cf('0x1')]||'';this[_0xd6cf('0x2')]=_0xd6cf('0x3');this[_0xd6cf('0x4')]=0x0;this[_0xd6cf('0x5')]='unknown';this[_0xd6cf('0x6')]=_0x595038[_0xd6cf('0x6')]&&_0x595038[_0xd6cf('0x6')]['indexOf'](':')?_0x595038[_0xd6cf('0x6')]['split'](':')[0x0]:'';this[_0xd6cf('0x7')]='';this[_0xd6cf('0x8')]='';this[_0xd6cf('0x9')]='';this[_0xd6cf('0xa')]='';this[_0xd6cf('0xb')]='';this[_0xd6cf('0xc')]=_0xd6cf('0x3');this[_0xd6cf('0xd')]='';this[_0xd6cf('0xe')]='';this[_0xd6cf('0xf')]=_0x595038['defaultuser']||'';}module[_0xd6cf('0x10')]=Trunk;
\ No newline at end of file
index a278928..078f6ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x005e=['recordingFormat','none','mandatoryDisposition','exports'];(function(_0x40d5cc,_0xf9d2c7){var _0x6950af=function(_0x295221){while(--_0x295221){_0x40d5cc['push'](_0x40d5cc['shift']());}};_0x6950af(++_0xf9d2c7);}(_0x005e,0x1b8));var _0xe005=function(_0x3e2fcf,_0x579110){_0x3e2fcf=_0x3e2fcf-0x0;var _0x497db7=_0x005e[_0x3e2fcf];return _0x497db7;};'use strict';function voiceExtension(_0x4c39b8){this['id']=_0x4c39b8['id']||0x0;this['exten']=_0x4c39b8['exten']||'';this[_0xe005('0x0')]=_0x4c39b8['recordingFormat']||_0xe005('0x1');this[_0xe005('0x2')]=_0x4c39b8['mandatoryDisposition']||![];}module[_0xe005('0x3')]=voiceExtension;
\ No newline at end of file
+var _0xfb31=['recordingFormat','none','mandatoryDisposition','exports','exten'];(function(_0x13644c,_0x25ea08){var _0x828a81=function(_0x5b154b){while(--_0x5b154b){_0x13644c['push'](_0x13644c['shift']());}};_0x828a81(++_0x25ea08);}(_0xfb31,0xfe));var _0x1fb3=function(_0x430aa2,_0x10b63f){_0x430aa2=_0x430aa2-0x0;var _0x180f49=_0xfb31[_0x430aa2];return _0x180f49;};'use strict';function voiceExtension(_0x1d1b03){this['id']=_0x1d1b03['id']||0x0;this[_0x1fb3('0x0')]=_0x1d1b03[_0x1fb3('0x0')]||'';this['recordingFormat']=_0x1d1b03[_0x1fb3('0x1')]||_0x1fb3('0x2');this['mandatoryDisposition']=_0x1d1b03[_0x1fb3('0x3')]||![];}module[_0x1fb3('0x4')]=voiceExtension;
\ No newline at end of file
index 95b05d1..cbe77e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca1e=['outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundDropCallsDayACS','outboundReCallsDay','outboundAbandonedDay','startPredictive','handlePredictive','predictiveIntervalMultiplicativeFactor','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','erlangCallToSecond','erlangAbandonmentRate','dialRecallMeTimeout','dialRecallInQueue','dialPreviewAutoRecallMe','dialPreviewRecallmeReminder','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','exports','unknown','not_inuse','inuse','busy','invalid','unavailable','ringing','ringinuse','onhold','wav','wav49','gsm','rrmemory','roundrobin','name','monitor_format','type','waiting','talking','total','sumDuration','sumHoldTime','sumBillable','loggedIn','available','acw','acwTimeout','autopause','sendMessageOneNotActive','message','dialTimezone','dialGlobalInterval','dialActive','dialMethod','progressive','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','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','pTalking','timeout','outboundAnswerAgiCallsDay'];(function(_0xdde359,_0x5cf9d6){var _0x3bc8f4=function(_0x2dd202){while(--_0x2dd202){_0xdde359['push'](_0xdde359['shift']());}};_0x3bc8f4(++_0x5cf9d6);}(_0xca1e,0xa7));var _0xeca1=function(_0x3eabb6,_0x375f18){_0x3eabb6=_0x3eabb6-0x0;var _0x207d88=_0xca1e[_0x3eabb6];return _0x207d88;};'use strict';var statusDesc=[_0xeca1('0x0'),_0xeca1('0x1'),_0xeca1('0x2'),_0xeca1('0x3'),_0xeca1('0x4'),_0xeca1('0x5'),_0xeca1('0x6'),_0xeca1('0x7'),_0xeca1('0x8')];var monitorFormat={'wav':_0xeca1('0x9'),'wav49':_0xeca1('0xa'),'gsm':_0xeca1('0xb')};var strategy={'rrmemory':_0xeca1('0xc'),'roundrobin':_0xeca1('0xd')};function VoiceQueue(_0x2bf611){this['id']=_0x2bf611['id']||0x0;this[_0xeca1('0xe')]=_0x2bf611[_0xeca1('0xe')]||'';this[_0xeca1('0xf')]=_0x2bf611[_0xeca1('0xf')]||'';this[_0xeca1('0x10')]=_0x2bf611['type']||'inbound';this[_0xeca1('0x11')]=0x0;this[_0xeca1('0x12')]=0x0;this[_0xeca1('0x13')]=0x0;this['answered']=0x0;this[_0xeca1('0x14')]=0x0;this[_0xeca1('0x15')]=0x0;this[_0xeca1('0x16')]=0x0;this['unmanaged']=0x0;this['abandoned']=0x0;this[_0xeca1('0x17')]=0x0;this[_0xeca1('0x18')]=0x0;this[_0xeca1('0x19')]=_0x2bf611[_0xeca1('0x19')]||![];this[_0xeca1('0x1a')]=_0x2bf611['acwTimeout']||0xa;this['autopause']=_0x2bf611[_0xeca1('0x1b')]||'no';this[_0xeca1('0x1c')]=!![];this[_0xeca1('0x1d')]='';this['originated']=0x0;this['temp']=0x0;this['dialTimezone']=_0x2bf611[_0xeca1('0x1e')]||null;this[_0xeca1('0x1f')]=_0x2bf611[_0xeca1('0x1f')]?_0x2bf611[_0xeca1('0x1f')]:null;this[_0xeca1('0x20')]=_0x2bf611[_0xeca1('0x20')];this[_0xeca1('0x21')]=_0x2bf611[_0xeca1('0x21')]||_0xeca1('0x22');this[_0xeca1('0x23')]=_0x2bf611[_0xeca1('0x23')]||0x0;this[_0xeca1('0x24')]=_0x2bf611[_0xeca1('0x24')]||0x0;this[_0xeca1('0x25')]=_0x2bf611['dialPowerLevel']||0x1;this[_0xeca1('0x26')]=_0x2bf611[_0xeca1('0x26')]||_0xeca1('0x27');this[_0xeca1('0x28')]=_0x2bf611[_0xeca1('0x28')]||0.03;this[_0xeca1('0x29')]=_0x2bf611['dialPredictiveInterval']||0x258;this[_0xeca1('0x2a')]=_0x2bf611[_0xeca1('0x2a')]||_0xeca1('0x2b');this['dialOriginateCallerIdNumber']=_0x2bf611[_0xeca1('0x2c')]||'anonymous';this[_0xeca1('0x2d')]=_0x2bf611['dialOriginateTimeout']||0x1e;this[_0xeca1('0x2e')]=_0x2bf611['dialQueueOptions']||'tTxX';this[_0xeca1('0x2f')]=_0x2bf611['dialQueueTimeout']||0x3;this[_0xeca1('0x30')]=_0x2bf611[_0xeca1('0x30')]||undefined;this['dialCongestionMaxRetry']=_0x2bf611[_0xeca1('0x31')]||0x3;this[_0xeca1('0x32')]=_0x2bf611[_0xeca1('0x32')]||0x96;this[_0xeca1('0x33')]=_0x2bf611['dialBusyMaxRetry']||0x3;this['dialBusyRetryFrequency']=_0x2bf611[_0xeca1('0x34')]||0x96;this[_0xeca1('0x35')]=_0x2bf611[_0xeca1('0x35')]||0x3;this[_0xeca1('0x36')]=_0x2bf611[_0xeca1('0x36')]||0x96;this['dialNoSuchNumberMaxRetry']=_0x2bf611[_0xeca1('0x37')]||0x3;this[_0xeca1('0x38')]=_0x2bf611[_0xeca1('0x38')]||0x96;this[_0xeca1('0x39')]=_0x2bf611['dialDropMaxRetry']||0x3;this[_0xeca1('0x3a')]=_0x2bf611[_0xeca1('0x3a')]||0x96;this[_0xeca1('0x3b')]=_0x2bf611[_0xeca1('0x3b')]||0x3;this[_0xeca1('0x3c')]=_0x2bf611[_0xeca1('0x3c')]||0x96;this[_0xeca1('0x3d')]=_0x2bf611[_0xeca1('0x3d')]||0x3;this[_0xeca1('0x3e')]=_0x2bf611[_0xeca1('0x3e')]||0x96;this[_0xeca1('0x3f')]=_0x2bf611[_0xeca1('0x3f')]||0x3;this[_0xeca1('0x40')]=_0x2bf611[_0xeca1('0x40')]||0x96;this[_0xeca1('0x41')]=_0x2bf611[_0xeca1('0x41')]||0x3;this[_0xeca1('0x42')]=_0x2bf611[_0xeca1('0x42')]||0x4;this[_0xeca1('0x43')]=_0x2bf611[_0xeca1('0x43')]?_0x2bf611['Trunk']:undefined;this['TrunkBackup']=_0x2bf611[_0xeca1('0x44')]?_0x2bf611[_0xeca1('0x44')]:undefined;this['dialPrefix']=_0x2bf611[_0xeca1('0x45')]||undefined;this[_0xeca1('0x46')]=_0x2bf611[_0xeca1('0x46')]?_0x2bf611[_0xeca1('0x46')]:undefined;this[_0xeca1('0x47')]=_0x2bf611[_0xeca1('0x47')]||_0xeca1('0x48');this['dialRandomLastDigitCallerIdNumber']=_0x2bf611[_0xeca1('0x49')]||undefined;this[_0xeca1('0x4a')]=_0x2bf611[_0xeca1('0x4a')]||undefined;this[_0xeca1('0x4b')]=strategy[_0x2bf611[_0xeca1('0x4b')]]||'rrmemory';this[_0xeca1('0x4c')]=!![];this[_0xeca1('0x4d')]=_0x2bf611[_0xeca1('0x4d')]||![];this[_0xeca1('0x4e')]=_0x2bf611['dialAMDInitialSilence'];this[_0xeca1('0x4f')]=_0x2bf611[_0xeca1('0x4f')];this[_0xeca1('0x50')]=_0x2bf611[_0xeca1('0x50')];this['dialAMDTotalAnalysisTime']=_0x2bf611[_0xeca1('0x51')];this['dialAMDMinWordLength']=_0x2bf611[_0xeca1('0x52')];this[_0xeca1('0x53')]=_0x2bf611['dialAMDBetweenWordsSilence'];this[_0xeca1('0x54')]=_0x2bf611[_0xeca1('0x54')];this[_0xeca1('0x55')]=_0x2bf611[_0xeca1('0x55')];this['dialAMDMaximumWordLength']=_0x2bf611[_0xeca1('0x56')];this[_0xeca1('0x57')]=0x0;this[_0xeca1('0x58')]=0x0;this[_0xeca1('0x59')]=_0x2bf611[_0xeca1('0x59')];this['outboundAnswerCallsDay']=0x0;this[_0xeca1('0x5a')]=0x0;this['outboundNoAnswerCallsDay']=0x0;this[_0xeca1('0x5b')]=0x0;this[_0xeca1('0x5c')]=0x0;this[_0xeca1('0x5d')]=0x0;this['outboundUnknownCallsDay']=0x0;this[_0xeca1('0x5e')]=0x0;this[_0xeca1('0x5f')]=0x0;this[_0xeca1('0x60')]=0x0;this[_0xeca1('0x61')]=0x0;this[_0xeca1('0x62')]=0x0;this[_0xeca1('0x63')]=0x0;this[_0xeca1('0x64')]=0x0;this['startProgressive']=undefined;this[_0xeca1('0x65')]=undefined;this[_0xeca1('0x66')]=undefined;this[_0xeca1('0x67')]=1.05;this[_0xeca1('0x68')]=0x0;this[_0xeca1('0x69')]=0x0;this[_0xeca1('0x6a')]=0x0;this[_0xeca1('0x6b')]=0x0;this[_0xeca1('0x6c')]=0x0;this['predictiveIntervalAvgTalktime']=0x0;this[_0xeca1('0x6d')]=0x0;this[_0xeca1('0x6e')]=0x0;this[_0xeca1('0x6f')]=_0x2bf611[_0xeca1('0x70')]||0x14;this[_0xeca1('0x71')]=_0x2bf611[_0xeca1('0x70')]||0xa;this[_0xeca1('0x72')]=0x0;this[_0xeca1('0x73')]=0x0;this[_0xeca1('0x74')]=0x1;this['erlangCalls']=0x0;this[_0xeca1('0x75')]=0x0;this[_0xeca1('0x76')]=0x0;this['erlangBusyFactor']=0x0;this[_0xeca1('0x77')]=_0x2bf611[_0xeca1('0x77')]||0x1e;this[_0xeca1('0x78')]=_0x2bf611[_0xeca1('0x78')]||![];this[_0xeca1('0x79')]=!!_0x2bf611['dialPreviewAutoRecallMe']||![];this['dialPreviewRecallmeReminder']=!!_0x2bf611[_0xeca1('0x7a')]||![];this[_0xeca1('0x7b')]=_0x2bf611[_0xeca1('0x7b')]||undefined;this[_0xeca1('0x7c')]=_0x2bf611[_0xeca1('0x7c')]||![];this['dialAgiAfterHangupAgent']=_0x2bf611[_0xeca1('0x7d')]||![];this[_0xeca1('0xf')]=monitorFormat[_0x2bf611[_0xeca1('0xf')]]?monitorFormat[_0x2bf611[_0xeca1('0xf')]]:undefined;this[_0xeca1('0x7e')]=_0x2bf611[_0xeca1('0x7e')]||![];this[_0xeca1('0x7f')]=_0x2bf611['mandatoryDispositionPause']?_0x2bf611[_0xeca1('0x7f')]:undefined;}module[_0xeca1('0x80')]=VoiceQueue;
\ No newline at end of file
+var _0x2998=['dialRecallInQueue','dialPreviewAutoRecallMe','dialPreviewRecallmeReminder','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','exports','unknown','not_inuse','inuse','invalid','unavailable','ringing','ringinuse','wav','wav49','gsm','rrmemory','roundrobin','name','monitor_format','type','waiting','total','answered','sumDuration','sumHoldTime','sumBillable','unmanaged','abandoned','loggedIn','available','acw','acwTimeout','autopause','sendMessageOneNotActive','message','temp','dialTimezone','dialGlobalInterval','dialActive','dialMethod','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','callAdditionalPhoneAfterMin','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','pTalking','timeout','outboundAnswerCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundDropCallsDayACS','outboundReCallsDay','outboundAbandonedDay','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialRecallMeTimeout'];(function(_0x256487,_0x22e144){var _0x210268=function(_0x33af33){while(--_0x33af33){_0x256487['push'](_0x256487['shift']());}};_0x210268(++_0x22e144);}(_0x2998,0x105));var _0x8299=function(_0x265721,_0x1503f2){_0x265721=_0x265721-0x0;var _0x11ec95=_0x2998[_0x265721];return _0x11ec95;};'use strict';var statusDesc=[_0x8299('0x0'),_0x8299('0x1'),_0x8299('0x2'),'busy',_0x8299('0x3'),_0x8299('0x4'),_0x8299('0x5'),_0x8299('0x6'),'onhold'];var monitorFormat={'wav':_0x8299('0x7'),'wav49':_0x8299('0x8'),'gsm':_0x8299('0x9')};var strategy={'rrmemory':_0x8299('0xa'),'roundrobin':_0x8299('0xb')};function VoiceQueue(_0x356f32){this['id']=_0x356f32['id']||0x0;this[_0x8299('0xc')]=_0x356f32[_0x8299('0xc')]||'';this[_0x8299('0xd')]=_0x356f32['monitor_format']||'';this[_0x8299('0xe')]=_0x356f32['type']||'inbound';this[_0x8299('0xf')]=0x0;this['talking']=0x0;this[_0x8299('0x10')]=0x0;this[_0x8299('0x11')]=0x0;this[_0x8299('0x12')]=0x0;this[_0x8299('0x13')]=0x0;this[_0x8299('0x14')]=0x0;this[_0x8299('0x15')]=0x0;this[_0x8299('0x16')]=0x0;this[_0x8299('0x17')]=0x0;this[_0x8299('0x18')]=0x0;this[_0x8299('0x19')]=_0x356f32[_0x8299('0x19')]||![];this[_0x8299('0x1a')]=_0x356f32[_0x8299('0x1a')]||0xa;this[_0x8299('0x1b')]=_0x356f32[_0x8299('0x1b')]||'no';this[_0x8299('0x1c')]=!![];this[_0x8299('0x1d')]='';this['originated']=0x0;this[_0x8299('0x1e')]=0x0;this[_0x8299('0x1f')]=_0x356f32[_0x8299('0x1f')]||null;this[_0x8299('0x20')]=_0x356f32['dialGlobalInterval']?_0x356f32[_0x8299('0x20')]:null;this[_0x8299('0x21')]=_0x356f32[_0x8299('0x21')];this[_0x8299('0x22')]=_0x356f32[_0x8299('0x22')]||'progressive';this[_0x8299('0x23')]=_0x356f32[_0x8299('0x23')]||0x0;this[_0x8299('0x24')]=_0x356f32[_0x8299('0x24')]||0x0;this['dialPowerLevel']=_0x356f32[_0x8299('0x25')]||0x1;this[_0x8299('0x26')]=_0x356f32[_0x8299('0x26')]||_0x8299('0x27');this[_0x8299('0x28')]=_0x356f32[_0x8299('0x28')]||0.03;this[_0x8299('0x29')]=_0x356f32['dialPredictiveInterval']||0x258;this['dialOriginateCallerIdName']=_0x356f32[_0x8299('0x2a')]||_0x8299('0x2b');this[_0x8299('0x2c')]=_0x356f32[_0x8299('0x2c')]||_0x8299('0x2b');this[_0x8299('0x2d')]=_0x356f32[_0x8299('0x2d')]||0x1e;this[_0x8299('0x2e')]=_0x356f32[_0x8299('0x2e')]||_0x8299('0x2f');this[_0x8299('0x30')]=_0x356f32[_0x8299('0x30')]||0x3;this[_0x8299('0x31')]=_0x356f32[_0x8299('0x31')]||undefined;this['dialCongestionMaxRetry']=_0x356f32[_0x8299('0x32')]||0x3;this[_0x8299('0x33')]=_0x356f32['dialCongestionRetryFrequency']||0x96;this[_0x8299('0x34')]=_0x356f32[_0x8299('0x34')]||0x3;this['dialBusyRetryFrequency']=_0x356f32[_0x8299('0x35')]||0x96;this[_0x8299('0x36')]=_0x356f32[_0x8299('0x36')]||0x3;this['dialNoAnswerRetryFrequency']=_0x356f32[_0x8299('0x37')]||0x96;this[_0x8299('0x38')]=_0x356f32['dialNoSuchNumberMaxRetry']||0x3;this[_0x8299('0x39')]=_0x356f32['dialNoSuchNumberRetryFrequency']||0x96;this[_0x8299('0x3a')]=_0x356f32['dialDropMaxRetry']||0x3;this['dialDropRetryFrequency']=_0x356f32[_0x8299('0x3b')]||0x96;this['dialAbandonedMaxRetry']=_0x356f32[_0x8299('0x3c')]||0x3;this[_0x8299('0x3d')]=_0x356f32['dialAbandonedRetryFrequency']||0x96;this[_0x8299('0x3e')]=_0x356f32[_0x8299('0x3e')]||0x3;this['dialMachineRetryFrequency']=_0x356f32[_0x8299('0x3f')]||0x96;this[_0x8299('0x40')]=_0x356f32[_0x8299('0x40')]||0x3;this[_0x8299('0x41')]=_0x356f32[_0x8299('0x41')]||0x96;this[_0x8299('0x42')]=_0x356f32[_0x8299('0x42')]||0x3;this[_0x8299('0x43')]=_0x356f32[_0x8299('0x43')]||0x4;this[_0x8299('0x44')]=_0x356f32['Trunk']?_0x356f32['Trunk']:undefined;this[_0x8299('0x45')]=_0x356f32[_0x8299('0x45')]?_0x356f32[_0x8299('0x45')]:undefined;this['dialPrefix']=_0x356f32[_0x8299('0x46')]||undefined;this[_0x8299('0x47')]=_0x356f32[_0x8299('0x47')]?_0x356f32['Interval']:undefined;this['dialOrderByScheduledAt']=_0x356f32[_0x8299('0x48')]||_0x8299('0x49');this[_0x8299('0x4a')]=_0x356f32['dialRandomLastDigitCallerIdNumber']||undefined;this[_0x8299('0x4b')]=_0x356f32[_0x8299('0x4b')]||undefined;this[_0x8299('0x4c')]=strategy[_0x356f32[_0x8299('0x4c')]]||_0x8299('0xa');this['queueStatusComplete']=!![];this[_0x8299('0x4d')]=_0x356f32[_0x8299('0x4d')]||![];this[_0x8299('0x4e')]=_0x356f32['dialAMDInitialSilence'];this['dialAMDGreeting']=_0x356f32[_0x8299('0x4f')];this[_0x8299('0x50')]=_0x356f32[_0x8299('0x50')];this['dialAMDTotalAnalysisTime']=_0x356f32[_0x8299('0x51')];this[_0x8299('0x52')]=_0x356f32[_0x8299('0x52')];this[_0x8299('0x53')]=_0x356f32['dialAMDBetweenWordsSilence'];this[_0x8299('0x54')]=_0x356f32[_0x8299('0x54')];this['dialAMDSilenceThreshold']=_0x356f32[_0x8299('0x55')];this['dialAMDMaximumWordLength']=_0x356f32[_0x8299('0x56')];this[_0x8299('0x57')]=0x0;this[_0x8299('0x58')]=0x0;this[_0x8299('0x59')]=_0x356f32[_0x8299('0x59')];this[_0x8299('0x5a')]=0x0;this['outboundAnswerAgiCallsDay']=0x0;this[_0x8299('0x5b')]=0x0;this[_0x8299('0x5c')]=0x0;this[_0x8299('0x5d')]=0x0;this[_0x8299('0x5e')]=0x0;this[_0x8299('0x5f')]=0x0;this[_0x8299('0x60')]=0x0;this['outboundOriginateFailureCallsDay']=0x0;this['outboundDropCallsDayCallersExit']=0x0;this['outboundDropCallsDayTimeout']=0x0;this[_0x8299('0x61')]=0x0;this[_0x8299('0x62')]=0x0;this[_0x8299('0x63')]=0x0;this['startProgressive']=undefined;this['startPredictive']=undefined;this['handlePredictive']=undefined;this['predictiveIntervalMultiplicativeFactor']=1.05;this[_0x8299('0x64')]=0x0;this[_0x8299('0x65')]=0x0;this[_0x8299('0x66')]=0x0;this[_0x8299('0x67')]=0x0;this[_0x8299('0x68')]=0x0;this['predictiveIntervalAvgTalktime']=0x0;this[_0x8299('0x69')]=0x0;this[_0x8299('0x6a')]=0x0;this[_0x8299('0x6b')]=_0x356f32[_0x8299('0x6c')]||0x14;this[_0x8299('0x6d')]=_0x356f32[_0x8299('0x6c')]||0xa;this[_0x8299('0x6e')]=0x0;this[_0x8299('0x6f')]=0x0;this[_0x8299('0x70')]=0x1;this['erlangCalls']=0x0;this[_0x8299('0x71')]=0x0;this[_0x8299('0x72')]=0x0;this[_0x8299('0x73')]=0x0;this[_0x8299('0x74')]=_0x356f32[_0x8299('0x74')]||0x1e;this[_0x8299('0x75')]=_0x356f32['dialRecallInQueue']||![];this[_0x8299('0x76')]=!!_0x356f32[_0x8299('0x76')]||![];this[_0x8299('0x77')]=!!_0x356f32[_0x8299('0x77')]||![];this[_0x8299('0x78')]=_0x356f32['dialQueueProject2']||undefined;this[_0x8299('0x79')]=_0x356f32[_0x8299('0x79')]||![];this[_0x8299('0x7a')]=_0x356f32[_0x8299('0x7a')]||![];this[_0x8299('0xd')]=monitorFormat[_0x356f32[_0x8299('0xd')]]?monitorFormat[_0x356f32['monitor_format']]:undefined;this[_0x8299('0x7b')]=_0x356f32[_0x8299('0x7b')]||![];this[_0x8299('0x7c')]=_0x356f32[_0x8299('0x7c')]?_0x356f32[_0x8299('0x7c')]:undefined;}module[_0x8299('0x7d')]=VoiceQueue;
\ No newline at end of file
index 5caea04..e1cdde1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c65=['exports','name','username','accessKey','remoteUri','serverUrl','Configurations'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x5c65,0xd3));var _0x55c6=function(_0x2ddb52,_0x47fd6c){_0x2ddb52=_0x2ddb52-0x0;var _0x5507cc=_0x5c65[_0x2ddb52];return _0x5507cc;};'use strict';function VtigerAccount(_0x496e5e){this['id']=_0x496e5e['id']||0x0;this['name']=_0x496e5e[_0x55c6('0x0')]||'';this[_0x55c6('0x1')]=_0x496e5e[_0x55c6('0x1')]||'';this[_0x55c6('0x2')]=_0x496e5e[_0x55c6('0x2')]||'';this[_0x55c6('0x3')]=_0x496e5e[_0x55c6('0x3')]||'';this[_0x55c6('0x4')]=_0x496e5e[_0x55c6('0x4')]||'';this[_0x55c6('0x5')]=_0x496e5e[_0x55c6('0x5')]||{};}module[_0x55c6('0x6')]=VtigerAccount;
\ No newline at end of file
+var _0x670c=['username','accessKey','remoteUri','Configurations','exports','name'];(function(_0x21012c,_0x4b2e89){var _0xedc489=function(_0x1f51e1){while(--_0x1f51e1){_0x21012c['push'](_0x21012c['shift']());}};_0xedc489(++_0x4b2e89);}(_0x670c,0x1bb));var _0xc670=function(_0x255b4b,_0x3a5da3){_0x255b4b=_0x255b4b-0x0;var _0x5bc6d0=_0x670c[_0x255b4b];return _0x5bc6d0;};'use strict';function VtigerAccount(_0x277c00){this['id']=_0x277c00['id']||0x0;this[_0xc670('0x0')]=_0x277c00[_0xc670('0x0')]||'';this[_0xc670('0x1')]=_0x277c00[_0xc670('0x1')]||'';this['accessKey']=_0x277c00[_0xc670('0x2')]||'';this[_0xc670('0x3')]=_0x277c00[_0xc670('0x3')]||'';this['serverUrl']=_0x277c00['serverUrl']||'';this[_0xc670('0x4')]=_0x277c00[_0xc670('0x4')]||{};}module[_0xc670('0x5')]=VtigerAccount;
\ No newline at end of file
index b77a221..6c72565 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b91=['token','remoteUri','type','serverUrl','Configurations','name','password'];(function(_0x1c593a,_0x59af80){var _0x209462=function(_0x48f74a){while(--_0x48f74a){_0x1c593a['push'](_0x1c593a['shift']());}};_0x209462(++_0x59af80);}(_0x9b91,0x147));var _0x19b9=function(_0x3c49b2,_0x285e48){_0x3c49b2=_0x3c49b2-0x0;var _0x2d9203=_0x9b91[_0x3c49b2];return _0x2d9203;};'use strict';function ZendeskAccount(_0xcbd23a){this['id']=_0xcbd23a['id']||0x0;this['name']=_0xcbd23a[_0x19b9('0x0')]||'';this['username']=_0xcbd23a['username']||'';this[_0x19b9('0x1')]=_0xcbd23a[_0x19b9('0x1')]||'';this[_0x19b9('0x2')]=_0xcbd23a[_0x19b9('0x2')]||'';this[_0x19b9('0x3')]=_0xcbd23a[_0x19b9('0x3')]||'';this['authType']=_0xcbd23a['authType']||'';this[_0x19b9('0x4')]=_0xcbd23a[_0x19b9('0x4')]||'integrationTab';this[_0x19b9('0x5')]=_0xcbd23a['serverUrl']||'';this[_0x19b9('0x6')]=_0xcbd23a[_0x19b9('0x6')]||{};}module['exports']=ZendeskAccount;
\ No newline at end of file
+var _0x63e6=['serverUrl','name','username','password','token','remoteUri','authType','type','integrationTab'];(function(_0x19db39,_0x361362){var _0x42361d=function(_0x4c0844){while(--_0x4c0844){_0x19db39['push'](_0x19db39['shift']());}};_0x42361d(++_0x361362);}(_0x63e6,0xe2));var _0x663e=function(_0x1cef05,_0x375aaf){_0x1cef05=_0x1cef05-0x0;var _0x5b19df=_0x63e6[_0x1cef05];return _0x5b19df;};'use strict';function ZendeskAccount(_0xd057a3){this['id']=_0xd057a3['id']||0x0;this[_0x663e('0x0')]=_0xd057a3[_0x663e('0x0')]||'';this['username']=_0xd057a3[_0x663e('0x1')]||'';this['password']=_0xd057a3[_0x663e('0x2')]||'';this[_0x663e('0x3')]=_0xd057a3[_0x663e('0x3')]||'';this[_0x663e('0x4')]=_0xd057a3[_0x663e('0x4')]||'';this['authType']=_0xd057a3[_0x663e('0x5')]||'';this[_0x663e('0x6')]=_0xd057a3[_0x663e('0x6')]||_0x663e('0x7');this['serverUrl']=_0xd057a3[_0x663e('0x8')]||'';this['Configurations']=_0xd057a3['Configurations']||{};}module['exports']=ZendeskAccount;
\ No newline at end of file
index f96044e..8aa60f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb496=['refreshToken','Configurations','name','description','host','zone','clientId','clientSecret','serverUrl','code'];(function(_0x1bd122,_0x61ec77){var _0x513b8a=function(_0x4a0cb8){while(--_0x4a0cb8){_0x1bd122['push'](_0x1bd122['shift']());}};_0x513b8a(++_0x61ec77);}(_0xb496,0xca));var _0x6b49=function(_0x22c613,_0x7cda22){_0x22c613=_0x22c613-0x0;var _0x16004a=_0xb496[_0x22c613];return _0x16004a;};'use strict';function ZohoAccount(_0x2e2010){this['id']=_0x2e2010['id']||0x0;this[_0x6b49('0x0')]=_0x2e2010['name']||'';this[_0x6b49('0x1')]=_0x2e2010[_0x6b49('0x1')]||'';this['host']=_0x2e2010[_0x6b49('0x2')]||'';this[_0x6b49('0x3')]=_0x2e2010[_0x6b49('0x3')]||'';this['clientId']=_0x2e2010[_0x6b49('0x4')]||'';this[_0x6b49('0x5')]=_0x2e2010['clientSecret']||'';this[_0x6b49('0x6')]=_0x2e2010[_0x6b49('0x6')]||'';this[_0x6b49('0x7')]=_0x2e2010[_0x6b49('0x7')]||'';this[_0x6b49('0x8')]=_0x2e2010[_0x6b49('0x8')]||'';this[_0x6b49('0x9')]=_0x2e2010['Configurations']||{};}module['exports']=ZohoAccount;
\ No newline at end of file
+var _0x4521=['Configurations','name','description','host','zone','clientId','clientSecret','serverUrl','code','refreshToken'];(function(_0x434968,_0x2da7c8){var _0xb76df5=function(_0x22ae8e){while(--_0x22ae8e){_0x434968['push'](_0x434968['shift']());}};_0xb76df5(++_0x2da7c8);}(_0x4521,0xc9));var _0x1452=function(_0x3cca10,_0x410da8){_0x3cca10=_0x3cca10-0x0;var _0x2b405f=_0x4521[_0x3cca10];return _0x2b405f;};'use strict';function ZohoAccount(_0x2b2822){this['id']=_0x2b2822['id']||0x0;this[_0x1452('0x0')]=_0x2b2822[_0x1452('0x0')]||'';this[_0x1452('0x1')]=_0x2b2822[_0x1452('0x1')]||'';this[_0x1452('0x2')]=_0x2b2822[_0x1452('0x2')]||'';this[_0x1452('0x3')]=_0x2b2822[_0x1452('0x3')]||'';this[_0x1452('0x4')]=_0x2b2822['clientId']||'';this['clientSecret']=_0x2b2822[_0x1452('0x5')]||'';this[_0x1452('0x6')]=_0x2b2822['serverUrl']||'';this[_0x1452('0x7')]=_0x2b2822[_0x1452('0x7')]||'';this[_0x1452('0x8')]=_0x2b2822[_0x1452('0x8')]||'';this[_0x1452('0x9')]=_0x2b2822[_0x1452('0x9')]||{};}module['exports']=ZohoAccount;
\ No newline at end of file
index 2b098fd..b42c792 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfef3=['format','calleridname','Contact','lastName','active','calleridnum','phone','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','countdropretry','callback','callbackat','recallme','ContactId','ListId','UserId','originatecalleridnum','originatecalleridname','getCaller','number','exports','util','moment','isNil','string','uniqueid','idContact','queue','name','type','campaigntype','dialAnswer','membername','Agent','channelAgent'];(function(_0x1ca047,_0x1e5ada){var _0x256a03=function(_0x495085){while(--_0x495085){_0x1ca047['push'](_0x1ca047['shift']());}};_0x256a03(++_0x1e5ada);}(_0xfef3,0x118));var _0x3fef=function(_0x3bf4f0,_0x316456){_0x3bf4f0=_0x3bf4f0-0x0;var _0x2c6a5c=_0xfef3[_0x3bf4f0];return _0x2c6a5c;};'use strict';var util=require(_0x3fef('0x0'));var _=require('lodash');var moment=require(_0x3fef('0x1'));function checkNameSurname(_0x494ae6,_0x740ff,_0xf26e2d){var _0x523833='';if(!_[_0x3fef('0x2')](_0x740ff)&&_0x3fef('0x3')===typeof _0x740ff){_0x523833+=_0x740ff;}if(!_['isNil'](_0xf26e2d)&&_0x3fef('0x3')===typeof _0xf26e2d){_0x523833+='\x20'+_0xf26e2d;}if(_0x523833!==''){return _0x523833;}return _0x494ae6;}function Action(_0x1351b1,_0x5dd9fb,_0x319a2a,_0x5f5b72,_0x800850){this[_0x3fef('0x4')]=_0x319a2a||undefined;this[_0x3fef('0x5')]=_0x1351b1['id'];this[_0x3fef('0x6')]=_0x5dd9fb[_0x3fef('0x7')];this[_0x3fef('0x8')]=_0x5dd9fb[_0x3fef('0x8')];this[_0x3fef('0x9')]=_0x3fef('0x6');this[_0x3fef('0xa')]=![];this[_0x3fef('0xb')]=_[_0x3fef('0x2')](_0x1351b1['Agent'])?undefined:_0x1351b1[_0x3fef('0xc')][_0x3fef('0x7')];this[_0x3fef('0xd')]=this['membername']?util[_0x3fef('0xe')]('SIP/%s',this[_0x3fef('0xb')]):_0x5f5b72||undefined;this[_0x3fef('0xf')]=checkNameSurname(_0x1351b1[_0x3fef('0x10')]['phone'],_0x1351b1[_0x3fef('0x10')]['firstName'],_0x1351b1[_0x3fef('0x10')][_0x3fef('0x11')]);this['active']=_0x1351b1[_0x3fef('0x12')]||![];this[_0x3fef('0x13')]=_0x1351b1[_0x3fef('0x14')];this[_0x3fef('0x15')]=_0x1351b1[_0x3fef('0x15')];this[_0x3fef('0x16')]=_0x1351b1['countbusyretry']||0x0;this[_0x3fef('0x17')]=_0x1351b1[_0x3fef('0x17')]||0x0;this[_0x3fef('0x18')]=_0x1351b1[_0x3fef('0x18')]||0x0;this[_0x3fef('0x19')]=(_0x1351b1[_0x3fef('0x16')]||0x0)+(_0x1351b1['countcongestionretry']||0x0)+(_0x1351b1[_0x3fef('0x18')]||0x0)+(_0x1351b1[_0x3fef('0x1a')]||0x0)+(_0x1351b1['countdropretry']||0x0)+(_0x1351b1[_0x3fef('0x1b')]||0x0)+(_0x1351b1[_0x3fef('0x1c')]||0x0)+(_0x1351b1[_0x3fef('0x1d')]||0x0);this[_0x3fef('0x1a')]=_0x1351b1[_0x3fef('0x1a')]||0x0;this[_0x3fef('0x1e')]=_0x1351b1[_0x3fef('0x1e')]||0x0;this[_0x3fef('0x1b')]=_0x1351b1[_0x3fef('0x1b')]||0x0;this[_0x3fef('0x1c')]=_0x1351b1[_0x3fef('0x1c')]||0x0;this[_0x3fef('0x1d')]=_0x1351b1[_0x3fef('0x1d')]||0x0;this[_0x3fef('0x1f')]=_0x1351b1[_0x3fef('0x1f')];this['callbackuniqueid']=_0x1351b1['callbackuniqueid'];this['callbackat']=_0x1351b1[_0x3fef('0x20')];this[_0x3fef('0x21')]=_0x1351b1[_0x3fef('0x21')];this['ContactId']=_0x1351b1[_0x3fef('0x22')];this['ListId']=_0x1351b1[_0x3fef('0x23')];this[_0x3fef('0x24')]=_[_0x3fef('0x2')](_0x1351b1[_0x3fef('0xc')])?_0x1351b1[_0x3fef('0x24')]:_0x1351b1['Agent']['id'];this['VoiceQueueId']=_0x1351b1['VoiceQueueId'];this[_0x3fef('0x25')]='';this[_0x3fef('0x26')]='';}Action['prototype'][_0x3fef('0x27')]=function(){return util[_0x3fef('0xe')]('\x22%s\x22\x20<%s>',this[_0x3fef('0xf')],this[_0x3fef('0x28')]);};module[_0x3fef('0x29')]=Action;
\ No newline at end of file
+var _0x781d=['calleridname','Contact','phone','firstName','lastName','active','calleridnum','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','Agent','UserId','VoiceQueueId','prototype','\x22%s\x22\x20<%s>','exports','util','lodash','isNil','string','uniqueid','idContact','queue','type','campaigntype','membername','name','channelAgent','format','SIP/%s'];(function(_0x21b32e,_0x4c915d){var _0x3a53ec=function(_0x255c04){while(--_0x255c04){_0x21b32e['push'](_0x21b32e['shift']());}};_0x3a53ec(++_0x4c915d);}(_0x781d,0x14a));var _0xd781=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x781d[_0x3b380d];return _0x54502b;};'use strict';var util=require(_0xd781('0x0'));var _=require(_0xd781('0x1'));var moment=require('moment');function checkNameSurname(_0x5c1007,_0xb125bf,_0x44a72d){var _0x3cd308='';if(!_[_0xd781('0x2')](_0xb125bf)&&_0xd781('0x3')===typeof _0xb125bf){_0x3cd308+=_0xb125bf;}if(!_[_0xd781('0x2')](_0x44a72d)&&_0xd781('0x3')===typeof _0x44a72d){_0x3cd308+='\x20'+_0x44a72d;}if(_0x3cd308!==''){return _0x3cd308;}return _0x5c1007;}function Action(_0x1d4f4e,_0x830b,_0x2f98ee,_0x5a07f0,_0x133509){this[_0xd781('0x4')]=_0x2f98ee||undefined;this[_0xd781('0x5')]=_0x1d4f4e['id'];this[_0xd781('0x6')]=_0x830b['name'];this[_0xd781('0x7')]=_0x830b['type'];this[_0xd781('0x8')]=_0xd781('0x6');this['dialAnswer']=![];this[_0xd781('0x9')]=_[_0xd781('0x2')](_0x1d4f4e['Agent'])?undefined:_0x1d4f4e['Agent'][_0xd781('0xa')];this[_0xd781('0xb')]=this[_0xd781('0x9')]?util[_0xd781('0xc')](_0xd781('0xd'),this[_0xd781('0x9')]):_0x5a07f0||undefined;this[_0xd781('0xe')]=checkNameSurname(_0x1d4f4e[_0xd781('0xf')][_0xd781('0x10')],_0x1d4f4e[_0xd781('0xf')][_0xd781('0x11')],_0x1d4f4e['Contact'][_0xd781('0x12')]);this[_0xd781('0x13')]=_0x1d4f4e['active']||![];this[_0xd781('0x14')]=_0x1d4f4e['phone'];this[_0xd781('0x15')]=_0x1d4f4e[_0xd781('0x15')];this[_0xd781('0x16')]=_0x1d4f4e[_0xd781('0x16')]||0x0;this[_0xd781('0x17')]=_0x1d4f4e[_0xd781('0x17')]||0x0;this[_0xd781('0x18')]=_0x1d4f4e['countnoanswerretry']||0x0;this[_0xd781('0x19')]=(_0x1d4f4e[_0xd781('0x16')]||0x0)+(_0x1d4f4e[_0xd781('0x17')]||0x0)+(_0x1d4f4e[_0xd781('0x18')]||0x0)+(_0x1d4f4e[_0xd781('0x1a')]||0x0)+(_0x1d4f4e[_0xd781('0x1b')]||0x0)+(_0x1d4f4e[_0xd781('0x1c')]||0x0)+(_0x1d4f4e[_0xd781('0x1d')]||0x0)+(_0x1d4f4e['countagentrejectretry']||0x0);this[_0xd781('0x1a')]=_0x1d4f4e[_0xd781('0x1a')]||0x0;this[_0xd781('0x1b')]=_0x1d4f4e[_0xd781('0x1b')]||0x0;this[_0xd781('0x1c')]=_0x1d4f4e[_0xd781('0x1c')]||0x0;this[_0xd781('0x1d')]=_0x1d4f4e['countmachineretry']||0x0;this[_0xd781('0x1e')]=_0x1d4f4e['countagentrejectretry']||0x0;this['callback']=_0x1d4f4e[_0xd781('0x1f')];this['callbackuniqueid']=_0x1d4f4e[_0xd781('0x20')];this[_0xd781('0x21')]=_0x1d4f4e[_0xd781('0x21')];this[_0xd781('0x22')]=_0x1d4f4e[_0xd781('0x22')];this[_0xd781('0x23')]=_0x1d4f4e[_0xd781('0x23')];this[_0xd781('0x24')]=_0x1d4f4e[_0xd781('0x24')];this['UserId']=_['isNil'](_0x1d4f4e[_0xd781('0x25')])?_0x1d4f4e[_0xd781('0x26')]:_0x1d4f4e[_0xd781('0x25')]['id'];this['VoiceQueueId']=_0x1d4f4e[_0xd781('0x27')];this['originatecalleridnum']='';this['originatecalleridname']='';}Action[_0xd781('0x28')]['getCaller']=function(){return util[_0xd781('0xc')](_0xd781('0x29'),this['calleridname'],this['number']);};module[_0xd781('0x2a')]=Action;
\ No newline at end of file
index 355bb0e..92b9948 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf69c=['enqueue','tail','campaignsPreview','voiceQueues','trunks','actions','agents','clockClearZombieChannels','syncHangup','hanguprequest','syncHangupRequest','bind','dialend','newexten','varset','syncVarSet','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopCampaigns','emit','type','outbound','name','strategy','answered','available','loggedIn','pTalking','sumBillable','sumHoldTime','talking','total','unmanaged','abandoned','dialActive','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','outboundAbandonedCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalHitRate','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','message','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','Trunk','callerid','Interval','md5','format','voice:queue:%s','voice_queue:save','info','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','stringify','voice_queue_channel:remove','voice_queue_presence:remove','sendMessageOneNotActive','NOT_ACTIVE','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','DEACTIVATED','\x20is\x20deactivated','syncCampaigns','preview','dialMethod','booked','hasOwnProperty','dialPreviewAutoRecallMe','recallMe','sequence','isNil','queue','originated:\x20','pTalking:\x20','dialAnswer','pick','contactId','UserId','VoiceQueueId','ListId','Action','channel','catch','updateOriginated','[clearZombieChannel]','decrementTalkink','[Dialer][checkChannel][pTalking][Preview]','size','clearZombieChannel','getContactRecallMe','agentReadyId','getDiff','scheduledat','Agent','voicePause','run','then','logger2','[RecallMe]','disableContact','logCustomer','RecallInQueue','dialRecallInQueue','rescheduleContactInQueue','createBody','createCustomerHistory','RecallFailedTimeout','[HistoryRecallClose]','createCustomerFinal','[getContactRecallMe]','setMessage','IsNotLoggedIn','AGENTS_NOT_LOGGED','isTrunkReachable','TrunkBackup','ACTIVE','countnosuchnumberretry','NoSuchNumber','custom:agentnosuchnumber','buildObj','nosuchnumber','verifyAdditionalPhones','additional','callAdditionalPhoneAfterMin','totalGlobal','dialGlobalMaxRetry','[callProgressDetectingCustomer][logNoSuchGlobal]','dialNoSuchNumberMaxRetry','unlockAgent','activeContact','linkedid','actioncountonusuch','idContact','incrementPreviewCounters','swapAdditionalPhones','ANSWER','YYYY-MM-DD\x20HH:mm:ss','[syncHangup][talking][increment]','uniqueid','\x20Queue','custom:agentconnect','custom:agentConnectPreview','complete','[16]','countglobal','Answer','[callProgressDetectingCustomer][logAnswerGlobal]','crateCustomerReportQueue','sumDuration','talktime','[syncHangup][talking][decrement]','countbusyretry','Busy','dialBusyRetryFrequency','custom:agentbusy','busy','[callProgressDetectingCustomer][logBusy]','[callProgressDetectingCustomer][logBusyGlobal]','dialBusyMaxRetry','rescheduleContact','countnoanswerretry','dialNoAnswerRetryFrequency','buildNoAnswerEventPayload','custom:agentnoanswer','[callProgressDetectingCustomer][logNoAnswer]','cloneAction','Global','dialNoAnswerMaxRetry','scheduledAt','CONGESTION','outboundCongestionCallsDay','countcongestionretry','dialCongestionRetryFrequency','custom:agentcongestion','congestion','[callProgressDetectingCustomer][logCongestion]','[callProgressDetectingCustomer][logCongestionGlobal]','dialCongestionMaxRetry','CANCEL','countagentrejectretry','custom:agentreject','agentreject','[syncHangupRequest][logAgentReject]','AgentReject','[callProgressDetectingCustomer][logAgentReject]','ABANDONED','countabandonedretry','Abandoned','[callProgressDetectingCustomer][logAbandoned]','countabandonedetry','dialAbandonedRetryFrequency','countmachineretry','cause-txt','dialstatus','custom:amd','amd','[callProgressDetectingCustomer][hangupInAMD]','[callProgressDetectingCustomer][machine]','[default]','loggerError','[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer][logUnknownGlobal]','[originated][decrement][callProgressDetectingCustomer]','callProgressDetectingAgent','isUndefined','object','reason','logAgent','[callProgressDetectingAgent][logNoSuch]','createAgentHistory','[callProgressDetectingAgent][logBusy]','Congestion','[callProgressDetectingAgent][logCongestion]','AnswerAGI','[callProgressDetectingAgent][logAnswerAGI]','[originated][decrement][callProgressDetectingAgent]','resolve','[swapAdditionalPhone]\x20','[incrementPreviewCounters]\x20','Contact','phone','Contact\x20is\x20undefined','Queue','isEmpty','execCall','Queue:\x20','\x20IdHopper:\x20','custom:agentcalled','called','Calling','[Preview][execCall][failure]','Call\x20failed','logBlacklist','createHistory','[Blacklist][error]','Contact\x20in\x20black\x20List','active','SIP/%s','status','unmonitored','execRun','unlock','unlockContact','recallme','validateContact','isValid','checkIsBlackList','checkInBlack','[Preview][checkIsBlackList]','[Preview][getContactPreview]','Call\x20unsuccessful','[Preview][validateContact][Empty\x20Contact]','Empty\x20Contact','Empty\x20Campaign','[Preview][validateContact][Trunk\x20not\x20working\x20correctly]','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20working\x20correctly','isActive','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','Is\x20Valid','SIP/%s/%s%s','trim','dialCutDigit','substring','getCallerId','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','originatecalleridname','extractCalleridName','originatecalleridnum','extractCalleridNumber','addVariables','merge','toLowerVariables','starttime','variables','variablesAction','[originated][increment]','syncNewExten','syncOriginateResponse','actionid','lookAgent','logLookAgent','clone','responsetime','isFailure','rejected','cause','callProgressDetectingCustomer','[syncHangup][talking][cause]','dialQueueProject','channelstate','[syncHangup][talking][transfer]','destlinkedid','destuniqueid','addVariable','filterKey','keys','variable','value','error','[syncVarSet][Preview]','inspect','transfertargetlinkedid','transfer','transfererlinkedid','exports','util','uuid','moment','ioredis','../../../config/logger','../ami','./rpcDb','../rpc/cmHopperAdditionalPhone','./action','./util/util','defaults','redis','localhost','socket.io-emitter','prototype'];(function(_0x13b571,_0x14bbb9){var _0x414fed=function(_0x5f09b1){while(--_0x5f09b1){_0x13b571['push'](_0x13b571['shift']());}};_0x414fed(++_0x14bbb9);}(_0xf69c,0x151));var _0xcf69=function(_0x911aa,_0x5cb8b5){_0x911aa=_0x911aa-0x0;var _0x327202=_0xf69c[_0x911aa];return _0x327202;};'use strict';var util=require(_0xcf69('0x0'));var _=require('lodash');var uuid=require(_0xcf69('0x1'));var moment=require(_0xcf69('0x2'));var md5=require('md5');var Redis=require(_0xcf69('0x3'));var config=require('../../../config/environment');var logger=require(_0xcf69('0x4'))('preview');var loggerAction=require(_0xcf69('0x4'))('actionPreview');var ami=require(_0xcf69('0x5'));var rpcDb=require(_0xcf69('0x6'));var cmHopperAdditionalPhone=require(_0xcf69('0x7'));var Action=require(_0xcf69('0x8'));var ut=require(_0xcf69('0x9'));config['redis']=_[_0xcf69('0xa')](config[_0xcf69('0xb')],{'host':_0xcf69('0xc'),'port':0x18eb});var io=require(_0xcf69('0xd'))(new Redis(config['redis']));var Sequence=function(){};Sequence[_0xcf69('0xe')][_0xcf69('0xf')]=function(_0x914e95){this[_0xcf69('0x10')]=this[_0xcf69('0x10')]?this[_0xcf69('0x10')]['finally'](_0x914e95):_0x914e95();};function Preview(_0x1e4e74){this['sequence']=new Sequence();this[_0xcf69('0x11')]=_0x1e4e74[_0xcf69('0x12')];this[_0xcf69('0x13')]=_0x1e4e74[_0xcf69('0x13')];this[_0xcf69('0x14')]={};this[_0xcf69('0x15')]=_0x1e4e74[_0xcf69('0x15')];this[_0xcf69('0x16')]=0x0;ami['on']('originateresponse',this['syncOriginateResponse']['bind'](this));ami['on']('hangup',this[_0xcf69('0x17')]['bind'](this));ami['on'](_0xcf69('0x18'),this[_0xcf69('0x19')][_0xcf69('0x1a')](this));ami['on'](_0xcf69('0x1b'),this['syncDialEnd'][_0xcf69('0x1a')](this));ami['on'](_0xcf69('0x1c'),this['syncNewExten']['bind'](this));ami['on'](_0xcf69('0x1d'),this[_0xcf69('0x1e')][_0xcf69('0x1a')](this));ami['on'](_0xcf69('0x1f'),this[_0xcf69('0x20')][_0xcf69('0x1a')](this));ami['on'](_0xcf69('0x21'),this[_0xcf69('0x22')]['bind'](this));this[_0xcf69('0x23')](this['campaignsPreview']);}function emit(_0xbe9cd5,_0x5d2019,_0x3f3703){io['to'](_0xbe9cd5)[_0xcf69('0x24')](_0x5d2019,_0x3f3703);}function emitCampaignPreview(_0x2af301){if(_0x2af301[_0xcf69('0x25')]===_0xcf69('0x26')){var _0xdc66a={'id':_0x2af301['id'],'name':_0x2af301[_0xcf69('0x27')],'strategy':_0x2af301[_0xcf69('0x28')],'answered':_0x2af301[_0xcf69('0x29')],'available':_0x2af301[_0xcf69('0x2a')],'loggedIn':_0x2af301[_0xcf69('0x2b')],'pTalking':_0x2af301[_0xcf69('0x2c')],'sumBillable':_0x2af301[_0xcf69('0x2d')],'sumDuration':_0x2af301['sumDuration'],'sumHoldTime':_0x2af301[_0xcf69('0x2e')]||0x0,'talking':_0x2af301[_0xcf69('0x2f')],'total':_0x2af301[_0xcf69('0x30')],'type':_0x2af301[_0xcf69('0x25')],'unmanaged':_0x2af301[_0xcf69('0x31')],'abandoned':_0x2af301[_0xcf69('0x32')],'waiting':_0x2af301['waiting'],'loggedInDb':_0x2af301['loggedInDb'],'dialActive':_0x2af301[_0xcf69('0x33')],'dialMethod':_0x2af301['dialMethod'],'dialOriginateCallerIdName':_0x2af301[_0xcf69('0x34')],'dialOriginateCallerIdNumber':_0x2af301[_0xcf69('0x35')],'dialOriginateTimeout':_0x2af301[_0xcf69('0x36')],'dialPrefix':_0x2af301[_0xcf69('0x37')],'outboundAnswerAgiCallsDay':_0x2af301[_0xcf69('0x38')],'outboundAnswerCallsDay':_0x2af301[_0xcf69('0x39')],'outboundBlacklistCallsDay':_0x2af301[_0xcf69('0x3a')],'outboundBusyCallsDay':_0x2af301[_0xcf69('0x3b')],'outboundCongestionCallsDay':_0x2af301['outboundCongestionCallsDay'],'outboundDropCallsDayACS':_0x2af301['outboundDropCallsDayACS'],'outboundDropCallsDayCallersExit':_0x2af301[_0xcf69('0x3c')],'outboundDropCallsDayTimeout':_0x2af301[_0xcf69('0x3d')],'outboundNoAnswerCallsDay':_0x2af301[_0xcf69('0x3e')],'outboundNoSuchCallsDay':_0x2af301[_0xcf69('0x3f')],'outboundOriginateFailureCallsDay':_0x2af301['outboundOriginateFailureCallsDay'],'outboundReCallsDay':_0x2af301[_0xcf69('0x40')],'outboundRejectCallsDay':_0x2af301[_0xcf69('0x41')],'outboundUnknownCallsDay':_0x2af301[_0xcf69('0x42')],'outboundAbandonedCallsDay':_0x2af301[_0xcf69('0x43')],'predictiveIntervalAnsweredCalls':_0x2af301[_0xcf69('0x44')],'predictiveIntervalAvgHoldtime':_0x2af301[_0xcf69('0x45')],'predictiveIntervalAvgTalktime':_0x2af301[_0xcf69('0x46')],'predictiveIntervalDroppedCallsCallersExit':_0x2af301[_0xcf69('0x47')],'predictiveIntervalDroppedCallsTimeout':_0x2af301[_0xcf69('0x48')],'predictiveIntervalErlangCalls':_0x2af301[_0xcf69('0x49')],'predictiveIntervalErlangCallsDroppedCalls':_0x2af301['predictiveIntervalErlangCallsDroppedCalls'],'predictiveIntervalHitRate':_0x2af301[_0xcf69('0x4a')],'predictiveIntervalMultiplicativeFactor':_0x2af301['predictiveIntervalMultiplicativeFactor'],'predictiveIntervalPauses':_0x2af301[_0xcf69('0x4b')],'predictiveIntervalAvailable':_0x2af301[_0xcf69('0x4c')],'predictiveIntervalTotalCalls':_0x2af301[_0xcf69('0x4d')],'message':_0x2af301[_0xcf69('0x4e')],'originated':_0x2af301[_0xcf69('0x4f')],'erlangCalls':_0x2af301[_0xcf69('0x50')],'erlangCallToSecond':_0x2af301[_0xcf69('0x51')],'erlangAbandonmentRate':_0x2af301[_0xcf69('0x52')],'erlangBusyFactor':_0x2af301[_0xcf69('0x53')],'startPredictive':_0x2af301[_0xcf69('0x54')],'startProgressive':_0x2af301['startProgressive']};if(_0x2af301[_0xcf69('0x55')]){_0xdc66a[_0xcf69('0x55')]={'id':_0x2af301['Trunk']['id'],'name':_0x2af301[_0xcf69('0x55')]['name'],'active':_0x2af301[_0xcf69('0x55')]['active'],'callerid':_0x2af301['Trunk'][_0xcf69('0x56')]};}if(_0x2af301[_0xcf69('0x57')]){_0xdc66a[_0xcf69('0x57')]={'id':_0x2af301[_0xcf69('0x57')]['id'],'name':_0x2af301[_0xcf69('0x57')][_0xcf69('0x27')]};}var _0x5aa1e0=md5(JSON['stringify'](_0xdc66a));if(_0x2af301[_0xcf69('0x58')]!==_0x5aa1e0){_0x2af301[_0xcf69('0x58')]=_0x5aa1e0;emit(util[_0xcf69('0x59')](_0xcf69('0x5a'),_0xdc66a[_0xcf69('0x27')]),_0xcf69('0x5b'),_0xdc66a);}}}function emitVoiceQueueChannelRemove(_0x474009){logger[_0xcf69('0x5c')](_0xcf69('0x5d'),JSON[_0xcf69('0x5e')](_0x474009));emit(util[_0xcf69('0x59')](_0xcf69('0x5a'),_0x474009[_0xcf69('0x27')]),_0xcf69('0x5f'),_0x474009);io[_0xcf69('0x24')](_0xcf69('0x60'),_0x474009);}function notSendMessagesQueue(_0x3858e5){if(_0x3858e5[_0xcf69('0x61')]){if(_0x3858e5[_0xcf69('0x4f')]===0x0&&_0x3858e5[_0xcf69('0x2c')]===0x0){_0x3858e5[_0xcf69('0x61')]=![];_0x3858e5['available']=0x0;_0x3858e5['paused']=0x0;_0x3858e5[_0xcf69('0x4e')]=_0xcf69('0x62');ut[_0xcf69('0x63')](_0xcf69('0x64'),_0x3858e5['name']+_0xcf69('0x65'));}else{_0x3858e5[_0xcf69('0x4e')]=_0xcf69('0x66');ut[_0xcf69('0x63')](_0xcf69('0x64'),_0x3858e5['name']+_0xcf69('0x67'));}emitCampaignPreview(_0x3858e5);}}Preview[_0xcf69('0xe')]['loopCampaigns']=function(){var _0x2196c1=this;setInterval(function(){_0x2196c1[_0xcf69('0x68')]();},0x7cf);};Preview[_0xcf69('0xe')]['syncCampaigns']=function(){var _0xfdd4ed=this['campaignsPreview'];this[_0xcf69('0x16')]+=0x1;for(var _0x3b32bd in _0xfdd4ed){if(_0xfdd4ed['hasOwnProperty'](_0x3b32bd)&&(_0xfdd4ed[_0x3b32bd]['dialMethod']===_0xcf69('0x69')||_0xfdd4ed[_0x3b32bd][_0xcf69('0x6a')]===_0xcf69('0x6b'))&&_0xfdd4ed[_0x3b32bd]['type']==='outbound'){if(this[_0xcf69('0x16')]>0x7){this[_0xcf69('0x16')]=0x0;this['clearZombieChannels']();}}if(_0xfdd4ed[_0xcf69('0x6c')](_0x3b32bd)&&_0xfdd4ed[_0x3b32bd][_0xcf69('0x6a')]===_0xcf69('0x69')&&_0xfdd4ed[_0x3b32bd][_0xcf69('0x25')]===_0xcf69('0x26')){if(_0xfdd4ed[_0x3b32bd][_0xcf69('0x33')]){this['setMessage'](_0xfdd4ed[_0x3b32bd]);if(_0xfdd4ed[_0x3b32bd][_0xcf69('0x6d')])this[_0xcf69('0x6e')](_0xfdd4ed[_0x3b32bd]);}else{notSendMessagesQueue(_0xfdd4ed[_0x3b32bd]);}}}};Preview[_0xcf69('0xe')]['clearZombieChannel']=function(_0x1a1270){var _0x49aa77=this;this[_0xcf69('0x6f')][_0xcf69('0xf')](function(){if(!_[_0xcf69('0x70')](_0x49aa77[_0xcf69('0x14')][_0x1a1270])){loggerAction[_0xcf69('0x5c')]('[clearZombieChannels][talking]',_0x1a1270,'Queue',_0x49aa77[_0xcf69('0x14')][_0x1a1270][_0xcf69('0x71')],_0xcf69('0x72'),JSON['stringify'](_0x49aa77['campaignsPreview'][_0x49aa77['actions'][_0x1a1270][_0xcf69('0x71')]][_0xcf69('0x4f')]),_0xcf69('0x73'),JSON['stringify'](_0x49aa77[_0xcf69('0x11')][_0x49aa77['actions'][_0x1a1270][_0xcf69('0x71')]]['pTalking']),JSON[_0xcf69('0x5e')](_0x49aa77[_0xcf69('0x14')][_0x1a1270][_0xcf69('0x74')]),JSON[_0xcf69('0x5e')](_[_0xcf69('0x75')](_0x49aa77[_0xcf69('0x14')][_0x1a1270],[_0xcf69('0x76'),_0xcf69('0x77'),_0xcf69('0x78'),_0xcf69('0x79')])));return ami[_0xcf69('0x7a')]({'action':'status','channel':_0x49aa77[_0xcf69('0x14')][_0x1a1270][_0xcf69('0x7b')]})[_0xcf69('0x7c')](function(_0x5391ad){if(_0x5391ad[_0xcf69('0x4e')]==='No\x20such\x20channel'){setTimeout(function(){if(_0x49aa77[_0xcf69('0x14')][_0x1a1270]){ut[_0xcf69('0x7d')](_0x49aa77[_0xcf69('0x11')][_0x49aa77[_0xcf69('0x14')][_0x1a1270][_0xcf69('0x71')]],_0xcf69('0x7e'));if(_0x49aa77[_0xcf69('0x14')][_0x1a1270][_0xcf69('0x74')]===!![]){ut[_0xcf69('0x7f')](_0x49aa77[_0xcf69('0x11')][_0x49aa77[_0xcf69('0x14')][_0x1a1270][_0xcf69('0x71')]],_0xcf69('0x7e'));ut['loggerError'](_0xcf69('0x80')+_0x1a1270,_0x49aa77[_0xcf69('0x14')][_0x1a1270][_0xcf69('0x71')]);}ut['loggerError']('[Dialer][checkChannel][Preview]'+_0x1a1270,_0x49aa77[_0xcf69('0x14')][_0x1a1270]['queue']);delete _0x49aa77[_0xcf69('0x14')][_0x1a1270];}},0x2328);}});}});};Preview[_0xcf69('0xe')]['clearZombieChannels']=function(){var _0x3d9387=this;loggerAction['info']('[action]',_[_0xcf69('0x81')](this[_0xcf69('0x14')]));for(var _0x27225f in this[_0xcf69('0x14')]){if(_0x3d9387['actions'][_0xcf69('0x6c')](_0x27225f)){_0x3d9387[_0xcf69('0x82')](_0x27225f);}}};Preview[_0xcf69('0xe')]['recallMe']=function(_0x5ce3b4){var _0x31d4fe=this;rpcDb[_0xcf69('0x83')](_0x5ce3b4['id'],ut[_0xcf69('0x84')](this['agents']))['then'](function(_0x53d3a3){if(!_['isNil'](_0x53d3a3)){for(var _0x5d036b=0x0;_0x5d036b<_0x53d3a3['length'];_0x5d036b+=0x1){if(ut[_0xcf69('0x85')](_0x53d3a3[_0x5d036b][_0xcf69('0x86')])<_0x5ce3b4['dialRecallMeTimeout']*0x3c){if(_0x53d3a3[_0x5d036b][_0xcf69('0x87')]&&!_0x53d3a3[_0x5d036b][_0xcf69('0x87')][_0xcf69('0x88')]){_0x31d4fe[_0xcf69('0x89')](_0x53d3a3[_0x5d036b]['id'])[_0xcf69('0x8a')](ut[_0xcf69('0x8b')]('[RecallMe]'))['catch'](ut[_0xcf69('0x8b')](_0xcf69('0x8c')));}else{rpcDb[_0xcf69('0x8d')](_0x53d3a3[_0x5d036b]['id']);}}else{var _0x3c6746=new Action(_0x53d3a3[_0x5d036b],_0x5ce3b4);_0x3c6746['starttime']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x5ce3b4['outboundReCallsDay']+=0x1;ut[_0xcf69('0x8e')](_0x3c6746,0x17,_0xcf69('0x8f'));if(_0x5ce3b4[_0xcf69('0x90')]){rpcDb[_0xcf69('0x91')](ut[_0xcf69('0x92')](_0x53d3a3[_0x5d036b]));rpcDb[_0xcf69('0x93')](_0x3c6746,'[HistoryDialRecallInQueue][historyCatch]');}else{ut[_0xcf69('0x8e')](_0x3c6746,0x16,_0xcf69('0x94'));rpcDb[_0xcf69('0x93')](_0x3c6746,_0xcf69('0x95'));rpcDb[_0xcf69('0x96')](_0x3c6746,_0xcf69('0x95'));}}}}})[_0xcf69('0x7c')](ut[_0xcf69('0x8b')](_0xcf69('0x97')));};Preview[_0xcf69('0xe')][_0xcf69('0x98')]=function(_0x570b2a){_0x570b2a[_0xcf69('0x61')]=!![];if(ut[_0xcf69('0x99')](_0x570b2a[_0xcf69('0x2b')])){_0x570b2a['message']=_0xcf69('0x9a');}else if(!ut['isActive'](_0x570b2a[_0xcf69('0x33')])){_0x570b2a['message']='NOT_ACTIVE';}else if(!this[_0xcf69('0x9b')](_0x570b2a[_0xcf69('0x55')])){if(!this[_0xcf69('0x9b')](_0x570b2a[_0xcf69('0x9c')])){_0x570b2a[_0xcf69('0x4e')]='TRUNK_IS_NOT_REACHABLE';}else{_0x570b2a[_0xcf69('0x4e')]=_0xcf69('0x9d');}}else{_0x570b2a[_0xcf69('0x4e')]='ACTIVE';}emitCampaignPreview(_0x570b2a);};Preview['prototype']['callProgressDetectingCustomer']=function(_0x39db20,_0x27d946,_0x49513e){var _0x26829e=this;var _0x4de575=this[_0xcf69('0x14')][_0x27d946];var _0x3b76ce=this[_0xcf69('0x11')][_0x4de575[_0xcf69('0x71')]];var _0x34feec;var _0x4c97ec=![];var _0x59b652=0x2;var _0x277996=0x3;if(_0x3b76ce){switch(_0x49513e){case'1':_0x3b76ce['outboundNoSuchCallsDay']+=0x1;_0x4de575[_0xcf69('0x9e')]+=0x1;_0x4de575['countglobal']=ut['totalGlobal'](_0x4de575);ut['logCustomer'](_0x4de575,0x0,_0xcf69('0x9f'));ami[_0xcf69('0x24')](_0xcf69('0xa0'),ut[_0xcf69('0xa1')](_0x4de575,_0xcf69('0xa2')));rpcDb[_0xcf69('0x93')](_0x4de575,'[callProgressDetectingCustomer][logNoSuch]');_0x26829e[_0xcf69('0xa3')](_0x4de575,'0',_0x3b76ce)['then'](function(_0x3fede7){_0x4c97ec=_0x3fede7[_0xcf69('0xa4')]==0x1;_0x59b652=_0x3b76ce['dialNoSuchNumberRetryFrequency'];_0x277996=_0x3b76ce[_0xcf69('0xa5')];if(!_0x4c97ec){if(ut[_0xcf69('0xa6')](_0x4de575)>=_0x3b76ce[_0xcf69('0xa7')]){_0x34feec=ut['cloneAction'](_0x4de575,0xf,'Global');rpcDb[_0xcf69('0x96')](_0x34feec,_0xcf69('0xa8'));}else{if(_0x4de575['countnosuchnumberretry']>=_0x3b76ce[_0xcf69('0xa9')]){rpcDb[_0xcf69('0x96')](_0x4de575,_0xcf69('0xa8'));}else{rpcDb['rescheduleContact'](ut['scheduledAt'](_0x4de575,_0xcf69('0x9e'),_0x3b76ce['dialNoSuchNumberRetryFrequency']),_0x4de575[_0xcf69('0xaa')],_0x4de575[_0xcf69('0xab')]);}}delete this['actions'][_0x39db20[_0xcf69('0xac')]];}else{_0x4de575[_0xcf69('0x9e')]++;logger['info'](_0xcf69('0xad'),_0x4de575['countnosuchnumberretry']);logger[_0xcf69('0x5c')]('id',_0x4de575[_0xcf69('0xae')]);_0x26829e[_0xcf69('0xaf')]({'id':_0x4de575[_0xcf69('0xae')],'field':{'countnosuchnumberretry':_0x4de575[_0xcf69('0x9e')]}})[_0xcf69('0x8a')](function(){_0x26829e[_0xcf69('0xb0')](_0x4de575,_0x59b652,_0x277996)['then'](function(){});});}});break;case _0xcf69('0xb1'):var _0x2ff889=moment()[_0xcf69('0x59')](_0xcf69('0xb2'));_0x4de575['responsetime']=_0x2ff889;_0x4de575['answertime']=_0x2ff889;_0x4de575[_0xcf69('0x74')]=!![];_0x3b76ce[_0xcf69('0x2c')]+=0x1;logger[_0xcf69('0x5c')](_0xcf69('0xb3'),_0x4de575[_0xcf69('0xb4')],_0xcf69('0xb5'),_0x3b76ce['name'],_0xcf69('0x73'),_0x3b76ce[_0xcf69('0x2c')]);ami[_0xcf69('0x24')](_0xcf69('0xb6'),ut[_0xcf69('0xa1')](_0x4de575,'connect',this[_0xcf69('0x11')][_0x4de575['queue']]));if(_0x3b76ce['acw']){ami[_0xcf69('0x24')](_0xcf69('0xb7'),ut['buildAcw'](_0x4de575));}break;case'16':ami['emit']('custom:agentcomplete',ut[_0xcf69('0xa1')](_0x4de575,_0xcf69('0xb8'),this[_0xcf69('0x11')][_0x4de575[_0xcf69('0x71')]]));emitVoiceQueueChannelRemove(ut[_0xcf69('0xa1')](_0x4de575,_0xcf69('0xb8')));_0x3b76ce['outboundAnswerCallsDay']+=0x1;_0x3b76ce[_0xcf69('0x30')]+=0x1;_0x3b76ce[_0xcf69('0x29')]+=0x1;ut['decrementTalkink'](_0x3b76ce,_0xcf69('0xb9'));_0x4de575[_0xcf69('0xba')]=ut[_0xcf69('0xa6')](_0x4de575);ut[_0xcf69('0x8e')](_0x4de575,0x4,_0xcf69('0xbb'));rpcDb[_0xcf69('0x93')](_0x4de575,'[callProgressDetectingCustomer][logAnswer]');rpcDb[_0xcf69('0x96')](_0x4de575,_0xcf69('0xbc'));rpcDb[_0xcf69('0xbd')](_0x4de575);_0x3b76ce[_0xcf69('0xbe')]+=_0x4de575['talktime'];_0x3b76ce[_0xcf69('0x2d')]+=_0x4de575[_0xcf69('0xbf')];logger[_0xcf69('0x5c')](_0xcf69('0xc0'),_0x4de575['uniqueid'],_0xcf69('0xb5'),_0x3b76ce['name'],_0xcf69('0x73'),_0x3b76ce[_0xcf69('0x2c')]);delete this['actions'][_0x39db20['linkedid']];break;case'BUSY':_0x3b76ce[_0xcf69('0x3b')]+=0x1;_0x4de575[_0xcf69('0xc1')]+=0x1;_0x4de575['countglobal']=ut[_0xcf69('0xa6')](_0x4de575);ut[_0xcf69('0x8e')](_0x4de575,0x5,_0xcf69('0xc2'));_0x59b652=_0x3b76ce[_0xcf69('0xc3')];_0x277996=_0x3b76ce[_0xcf69('0xa5')];ami[_0xcf69('0x24')](_0xcf69('0xc4'),ut[_0xcf69('0xa1')](_0x4de575,_0xcf69('0xc5')));rpcDb['createCustomerHistory'](_0x4de575,_0xcf69('0xc6'));_0x26829e[_0xcf69('0xa3')](_0x4de575,'5',_0x3b76ce)[_0xcf69('0x8a')](function(_0x538755){_0x4c97ec=_0x538755['additional']==0x1;if(!_0x4c97ec){if(ut['totalGlobal'](_0x4de575)>=_0x3b76ce[_0xcf69('0xa7')]){_0x34feec=ut['cloneAction'](_0x4de575,0xf,'Global');rpcDb[_0xcf69('0x96')](_0x34feec,_0xcf69('0xc7'));}else{if(_0x4de575[_0xcf69('0xc1')]>=_0x3b76ce[_0xcf69('0xc8')]){rpcDb[_0xcf69('0x96')](_0x4de575,_0xcf69('0xc6'));}else{rpcDb[_0xcf69('0xc9')](ut['scheduledAt'](_0x4de575,_0xcf69('0xc1'),_0x3b76ce[_0xcf69('0xc3')]),_0x4de575[_0xcf69('0xaa')],_0x4de575[_0xcf69('0xab')]);}}}else{_0x4de575['countbusyretry']++;_0x26829e[_0xcf69('0xaf')]({'id':_0x4de575[_0xcf69('0xae')],'field':{'countbusyretry':_0x4de575[_0xcf69('0xc1')]}})[_0xcf69('0x8a')](function(){_0x26829e[_0xcf69('0xb0')](_0x4de575,_0x59b652,_0x277996)['then'](function(){});});}});break;case'NOANSWER':_0x3b76ce[_0xcf69('0x3e')]+=0x1;_0x4de575[_0xcf69('0xca')]+=0x1;_0x4de575['countglobal']=ut[_0xcf69('0xa6')](_0x4de575);ut[_0xcf69('0x8e')](_0x4de575,0x3,'NoAnswer');_0x59b652=_0x3b76ce[_0xcf69('0xcb')];_0x277996=_0x3b76ce['callAdditionalPhoneAfterMin'];var _0x9bea83=ut[_0xcf69('0xcc')](_0x4de575,_0x3b76ce);ami[_0xcf69('0x24')](_0xcf69('0xcd'),_0x9bea83);rpcDb[_0xcf69('0x93')](_0x4de575,_0xcf69('0xce'));_0x26829e[_0xcf69('0xa3')](_0x4de575,'3',_0x3b76ce)[_0xcf69('0x8a')](function(_0x3748b5){_0x4c97ec=_0x3748b5[_0xcf69('0xa4')]==0x1;if(!_0x4c97ec){if(ut[_0xcf69('0xa6')](_0x4de575)>=_0x3b76ce['dialGlobalMaxRetry']){_0x34feec=ut[_0xcf69('0xcf')](_0x4de575,0xf,_0xcf69('0xd0'));rpcDb['createCustomerFinal'](_0x34feec,'[callProgressDetectingCustomer][logNoAnswerGlobal]');}else{if(_0x4de575[_0xcf69('0xca')]>=_0x3b76ce[_0xcf69('0xd1')]){rpcDb[_0xcf69('0x96')](_0x4de575,'[callProgressDetectingCustomer][logNoAnswer]');}else{rpcDb['rescheduleContact'](ut[_0xcf69('0xd2')](_0x4de575,_0xcf69('0xca'),_0x3b76ce[_0xcf69('0xcb')]),_0x4de575['unlockAgent'],_0x4de575[_0xcf69('0xab')]);}}}else{_0x4de575[_0xcf69('0xca')]++;_0x26829e[_0xcf69('0xaf')]({'id':_0x4de575['idContact'],'field':{'countnoanswerretry':_0x4de575[_0xcf69('0xca')]}})[_0xcf69('0x8a')](function(){_0x26829e[_0xcf69('0xb0')](_0x4de575,_0x59b652,_0x277996)[_0xcf69('0x8a')](function(){});});}});break;case _0xcf69('0xd3'):_0x3b76ce[_0xcf69('0xd4')]+=0x1;_0x4de575[_0xcf69('0xd5')]+=0x1;_0x4de575[_0xcf69('0xba')]=ut[_0xcf69('0xa6')](_0x4de575);ut[_0xcf69('0x8e')](_0x4de575,0x8,'Congestion');_0x59b652=_0x3b76ce[_0xcf69('0xd6')];_0x277996=_0x3b76ce[_0xcf69('0xa5')];ami[_0xcf69('0x24')](_0xcf69('0xd7'),ut[_0xcf69('0xa1')](_0x4de575,_0xcf69('0xd8')));rpcDb['createCustomerHistory'](_0x4de575,_0xcf69('0xd9'));_0x26829e[_0xcf69('0xa3')](_0x4de575,'8',_0x3b76ce)[_0xcf69('0x8a')](function(_0x1c4364){_0x4c97ec=_0x1c4364[_0xcf69('0xa4')]==0x1;if(!_0x4c97ec){if(ut['totalGlobal'](_0x4de575)>=_0x3b76ce[_0xcf69('0xa7')]){_0x34feec=ut['cloneAction'](_0x4de575,0xf,'Global');rpcDb[_0xcf69('0x96')](_0x34feec,_0xcf69('0xda'));}else{if(_0x4de575[_0xcf69('0xd5')]>=_0x3b76ce[_0xcf69('0xdb')]){rpcDb[_0xcf69('0x96')](_0x4de575,_0xcf69('0xd9'));}else{rpcDb['rescheduleContact'](ut[_0xcf69('0xd2')](_0x4de575,_0xcf69('0xd5'),_0x3b76ce[_0xcf69('0xc3')]),_0x4de575['unlockAgent'],_0x4de575[_0xcf69('0xab')]);}}}else{_0x4de575[_0xcf69('0xd5')]++;_0x26829e[_0xcf69('0xaf')]({'id':_0x4de575[_0xcf69('0xae')],'field':{'countcongestionretry':_0x4de575[_0xcf69('0xd5')]}})[_0xcf69('0x8a')](function(){_0x26829e[_0xcf69('0xb0')](_0x4de575,_0x59b652,_0x277996)['then'](function(){});});}});break;case _0xcf69('0xdc'):_0x3b76ce[_0xcf69('0x41')]+=0x1;_0x4de575[_0xcf69('0xdd')]+=0x1;_0x4de575['countglobal']=ut[_0xcf69('0xa6')](_0x4de575);ut[_0xcf69('0x8e')](_0x4de575,0x14,'AgentReject');_0x59b652=_0x3b76ce['dialAgentRejectRetryFrequency'];_0x277996=_0x3b76ce[_0xcf69('0xa5')];ami[_0xcf69('0x24')](_0xcf69('0xde'),ut[_0xcf69('0xa1')](_0x4de575,_0xcf69('0xdf')));rpcDb[_0xcf69('0x93')](_0x4de575,_0xcf69('0xe0'));_0x26829e[_0xcf69('0xa3')](_0x4de575,'20',_0x3b76ce)[_0xcf69('0x8a')](function(_0x101450){_0x4c97ec=_0x101450[_0xcf69('0xa4')]==0x1;if(!_0x4c97ec){if(ut[_0xcf69('0xa6')](_0x4de575)>=_0x3b76ce['dialGlobalMaxRetry']){_0x34feec=ut[_0xcf69('0xcf')](_0x4de575,0x14,_0xcf69('0xe1'));rpcDb[_0xcf69('0x96')](_0x34feec,_0xcf69('0xe2'));}else{if(_0x4de575[_0xcf69('0xdd')]>=_0x3b76ce['dialAgentRejectMaxRetry']){rpcDb[_0xcf69('0x96')](_0x4de575,_0xcf69('0xe2'));}else{rpcDb[_0xcf69('0xc9')](ut[_0xcf69('0xd2')](_0x4de575,_0xcf69('0xdd'),_0x3b76ce['dialAgentRejectRetryFrequency']),_0x4de575[_0xcf69('0xaa')],_0x4de575[_0xcf69('0xab')]);}}}else{_0x4de575[_0xcf69('0xca')]++;_0x26829e[_0xcf69('0xaf')]({'id':_0x4de575[_0xcf69('0xae')],'field':{'countnoanswerretry':_0x4de575['countnoanswerretry']}})['then'](function(){_0x26829e['swapAdditionalPhones'](_0x4de575,_0x59b652,_0x277996)[_0xcf69('0x8a')](function(){});});}});break;case _0xcf69('0xe3'):_0x3b76ce[_0xcf69('0x43')]+=0x1;_0x4de575[_0xcf69('0xe4')]+=0x1;_0x4de575[_0xcf69('0xba')]=ut['totalGlobal'](_0x4de575);ut[_0xcf69('0x8e')](_0x4de575,0xb,_0xcf69('0xe5'));rpcDb['createCustomerHistory'](_0x4de575,'[callProgressDetectingCustomer][logAbandoned]');_0x26829e[_0xcf69('0xa3')](_0x4de575,'11',_0x3b76ce)[_0xcf69('0x8a')](function(_0x2d929b){_0x4c97ec=_0x2d929b[_0xcf69('0xa4')]==0x1;if(!_0x4c97ec){if(ut['totalGlobal'](_0x4de575)>=_0x3b76ce['dialGlobalMaxRetry']){_0x34feec=ut[_0xcf69('0xcf')](_0x4de575,0xf,_0xcf69('0xd0'));rpcDb[_0xcf69('0x96')](_0x34feec,_0xcf69('0xe6'));}else{if(_0x4de575[_0xcf69('0xe7')]>=_0x3b76ce['dialAbandonedMaxRety']){rpcDb[_0xcf69('0x96')](_0x4de575,_0xcf69('0xe6'));}else{rpcDb[_0xcf69('0xc9')](ut[_0xcf69('0xd2')](_0x4de575,_0xcf69('0xe4'),_0x3b76ce[_0xcf69('0xe8')]),_0x4de575[_0xcf69('0xaa')],_0x4de575[_0xcf69('0xab')]);}}}else{_0x4de575[_0xcf69('0xca')]++;_0x26829e[_0xcf69('0xaf')]({'id':_0x4de575[_0xcf69('0xae')],'field':{'countnoanswerretry':_0x4de575['countnoanswerretry']}})[_0xcf69('0x8a')](function(){_0x26829e[_0xcf69('0xb0')](_0x4de575,_0x59b652,_0x277996)['then'](function(){});});}});break;case'18':_0x3b76ce[_0xcf69('0x42')]+=0x1;_0x4de575[_0xcf69('0xe9')]+=0x1;_0x4de575['countglobal']=ut[_0xcf69('0xa6')](_0x4de575);ut[_0xcf69('0x8e')](_0x4de575,0x12,_0x39db20[_0xcf69('0xea')]||_0x39db20[_0xcf69('0xeb')]);ami['emit'](_0xcf69('0xec'),ut[_0xcf69('0xa1')](_0x4de575,_0xcf69('0xed')));rpcDb[_0xcf69('0x93')](_0x4de575,'[callProgressDetectingCustomer][hangupInAMD]');_0x26829e[_0xcf69('0xa3')](_0x4de575,'18',_0x3b76ce)[_0xcf69('0x8a')](function(_0x5f410a){_0x4c97ec=_0x5f410a[_0xcf69('0xa4')]==0x1;if(!_0x4c97ec){if(ut[_0xcf69('0xa6')](_0x4de575)>=_0x3b76ce[_0xcf69('0xa7')]){_0x34feec=ut['cloneAction'](_0x4de575,0x12,_0xcf69('0xd0'));rpcDb[_0xcf69('0x96')](_0x34feec,_0xcf69('0xee'));}else{rpcDb[_0xcf69('0x96')](_0x4de575,_0xcf69('0xee'));}}else{_0x4de575['countnoanswerretry']++;_0x26829e[_0xcf69('0xaf')]({'id':_0x4de575['idContact'],'field':{'countnoanswerretry':_0x4de575[_0xcf69('0xca')]}})[_0xcf69('0x8a')](function(){_0x26829e[_0xcf69('0xb0')](_0x4de575,_0x59b652,_0x277996)[_0xcf69('0x8a')](function(){});});}});delete this['actions'][_0x39db20[_0xcf69('0xac')]];break;case'19':_0x3b76ce[_0xcf69('0x42')]+=0x1;_0x4de575[_0xcf69('0xba')]=ut[_0xcf69('0xa6')](_0x4de575);ut[_0xcf69('0x8e')](_0x4de575,0x13,_0x39db20['cause-txt']||_0x39db20['dialstatus']);ami[_0xcf69('0x24')](_0xcf69('0xec'),ut[_0xcf69('0xa1')](_0x4de575,_0xcf69('0xed')));rpcDb[_0xcf69('0x93')](_0x4de575,_0xcf69('0xef'));_0x26829e[_0xcf69('0xa3')](_0x4de575,'18',_0x3b76ce)[_0xcf69('0x8a')](function(_0x54984a){_0x4c97ec=_0x54984a['additional']==0x1;if(!_0x4c97ec){if(ut[_0xcf69('0xa6')](_0x4de575)>=_0x3b76ce['dialGlobalMaxRetry']){_0x34feec=ut[_0xcf69('0xcf')](_0x4de575,0xf,_0xcf69('0xd0'));rpcDb['createCustomerFinal'](_0x34feec,_0xcf69('0xef'));}else{rpcDb[_0xcf69('0x96')](_0x4de575,_0xcf69('0xef'));}}else{_0x4de575[_0xcf69('0xca')]++;_0x26829e['incrementPreviewCounters']({'id':_0x4de575[_0xcf69('0xae')],'field':{'countnoanswerretry':_0x4de575[_0xcf69('0xca')]}})[_0xcf69('0x8a')](function(){_0x26829e[_0xcf69('0xb0')](_0x4de575,_0x59b652,_0x277996)[_0xcf69('0x8a')](function(){});});}});delete this[_0xcf69('0x14')][_0x39db20[_0xcf69('0xac')]];break;default:if(_0x4de575['dialAnswer']){ut[_0xcf69('0x7f')](_0x3b76ce,_0xcf69('0xf0'));ut[_0xcf69('0xf1')]('[Dialer][decrementTalkink][no\x20Hangup][Preview]'+_0x3b76ce[_0xcf69('0x27')],_0x39db20);}_0x3b76ce['outboundUnknownCallsDay']+=0x1;_0x4de575[_0xcf69('0xba')]=ut[_0xcf69('0xa6')](_0x4de575);ut[_0xcf69('0x8e')](_0x4de575,0xc,_0x39db20[_0xcf69('0xea')]||_0x39db20[_0xcf69('0xeb')]);_0x59b652=_0x3b76ce['dialAgentRejectRetryFrequency'];_0x277996=_0x3b76ce['callAdditionalPhoneAfterMin'];rpcDb[_0xcf69('0x93')](_0x4de575,_0xcf69('0xf2'));_0x26829e[_0xcf69('0xa3')](_0x4de575,'20',_0x3b76ce)[_0xcf69('0x8a')](function(_0x583821){_0x4c97ec=_0x583821[_0xcf69('0xa4')]==0x1;if(!_0x4c97ec){if(ut[_0xcf69('0xa6')](_0x4de575)>=_0x3b76ce['dialGlobalMaxRetry']){_0x34feec=ut['cloneAction'](_0x4de575,0xf,'Global');rpcDb['createCustomerFinal'](_0x34feec,_0xcf69('0xf3'));}else{rpcDb[_0xcf69('0x96')](_0x4de575,'[callProgressDetectingCustomer][logUnknownGlobal]');}delete this[_0xcf69('0x14')][_0x39db20['linkedid']];}else{_0x26829e[_0xcf69('0xb0')](_0x4de575,_0x59b652,_0x277996)[_0xcf69('0x8a')](function(){});}});}if(!(_0x4de575[_0xcf69('0x74')]&&_0x49513e==='16')){ut['updateOriginated'](_0x3b76ce,'[callProgressDetectingCustomer]');logger[_0xcf69('0x5c')](_0xcf69('0xf4'),_0x4de575[_0xcf69('0xb4')],'\x20Queue',_0x3b76ce[_0xcf69('0x27')],_0xcf69('0x72'),_0x3b76ce['originated']);}if(_0x49513e!==_0xcf69('0xb1')){delete this[_0xcf69('0x14')][_0x39db20['linkedid']];delete this[_0xcf69('0x14')][_0x39db20['destlinkedid']];}}};Preview[_0xcf69('0xe')][_0xcf69('0xf5')]=function(_0x24fcbd,_0x3a263e,_0x2a38c5){if(_[_0xcf69('0xf6')](_0x3a263e)&&'object'!==typeof _0x3a263e){return;}if(_[_0xcf69('0xf6')](_0x2a38c5)&&_0xcf69('0xf7')!==typeof _0x2a38c5){return;}switch(_0x2a38c5[_0xcf69('0xf8')]){case'0':ut[_0xcf69('0xf9')](_0x24fcbd,0x0,'NoSuchNumber');rpcDb['createAgentHistory'](_0x24fcbd,_0xcf69('0xfa'));break;case'3':ut[_0xcf69('0xf9')](_0x24fcbd,0x3,'NoAnswer');rpcDb[_0xcf69('0xfb')](_0x24fcbd,'[callProgressDetectingAgent][logNoAnswer]');break;case'5':ut[_0xcf69('0xf9')](_0x24fcbd,0x5,_0xcf69('0xc2'));rpcDb['createAgentHistory'](_0x24fcbd,_0xcf69('0xfc'));break;case'8':ut['logAgent'](_0x24fcbd,0x8,_0xcf69('0xfd'));rpcDb['createAgentHistory'](_0x24fcbd,_0xcf69('0xfe'));break;case'22':ut[_0xcf69('0xf9')](_0x24fcbd,0x16,_0xcf69('0xff'));rpcDb[_0xcf69('0xfb')](_0x24fcbd,_0xcf69('0x100'));break;default:ut['logAgent'](_0x24fcbd,0xc,_0x2a38c5['reason']);rpcDb[_0xcf69('0xfb')](_0x24fcbd,_0xcf69('0xfe'));}ut[_0xcf69('0x7d')](_0x3a263e,'[callProgressDetectingAgent]');logger[_0xcf69('0x5c')](_0xcf69('0x101'),_0x24fcbd[_0xcf69('0xb4')],_0xcf69('0xb5'),_0x3a263e[_0xcf69('0x27')],_0xcf69('0x72'),_0x3a263e['originated']);delete this[_0xcf69('0x14')][_0x24fcbd[_0xcf69('0xb4')]];};Preview['prototype'][_0xcf69('0xa3')]=function(_0xc862a3,_0x42cdf4,_0x1fca30){return Promise['resolve']()[_0xcf69('0x8a')](cmHopperAdditionalPhone[_0xcf69('0xa3')](_0xc862a3,_0x42cdf4,_0x1fca30))[_0xcf69('0x7c')](logger[_0xcf69('0x5c')]('[verifyAdditionalPhone]\x20'));};Preview['prototype'][_0xcf69('0xb0')]=function(_0x1f1fd3,_0x226271,_0x5cfba7){return Promise[_0xcf69('0x102')]()[_0xcf69('0x8a')](cmHopperAdditionalPhone[_0xcf69('0xb0')](_0x1f1fd3,_0x226271,_0x5cfba7))[_0xcf69('0x7c')](logger[_0xcf69('0x5c')](_0xcf69('0x103')));};Preview[_0xcf69('0xe')][_0xcf69('0xaf')]=function(_0x4ea0d9){return Promise['resolve']()['then'](cmHopperAdditionalPhone[_0xcf69('0xaf')](_0x4ea0d9))[_0xcf69('0x7c')](logger[_0xcf69('0x5c')](_0xcf69('0x104')));};Preview[_0xcf69('0xe')]['checkInBlack']=function(_0x73f616,_0x1c07ae,_0x5e0014,_0x58379e,_0x2aee8f){var _0xbf8f03=this;return new Promise(function(_0x2d9164,_0x298937){if(_[_0xcf69('0x70')](_0x1c07ae)||_[_0xcf69('0x70')](_0x1c07ae[_0xcf69('0x105')])||_[_0xcf69('0x70')](_0x1c07ae[_0xcf69('0x106')])||_[_0xcf69('0x70')](_0x1c07ae[_0xcf69('0x78')])){_0x298937(ut[_0xcf69('0x4e')](_0xcf69('0x107'),_0x58379e,_0x2aee8f));return;}var _0x448da4=uuid['v4']();var _0x149120=_0xbf8f03['campaignsPreview'][_0x1c07ae[_0xcf69('0x108')][_0xcf69('0x27')]];var _0x5b4fdb=_0x5e0014?_0xbf8f03[_0xcf69('0x15')][_0x5e0014]['id']:undefined;_0xbf8f03[_0xcf69('0x14')][_0x448da4]=new Action(_0x1c07ae,_0x149120,_0x448da4,_0x5e0014,_0x5b4fdb);var _0x5047d4=_0xbf8f03['actions'][_0x448da4];_0x5047d4[_0xcf69('0xaa')]=_0x58379e;_0x5047d4[_0xcf69('0xab')]=_0x2aee8f;_0x5047d4['lookAgent']=_0x5e0014;if(_[_0xcf69('0x109')](_0x73f616)){_0xbf8f03[_0xcf69('0x10a')](_0x5047d4,_0x149120,_0x1c07ae,_0x5e0014)['then'](function(_0x58c12b){logger[_0xcf69('0x5c')]('[Preview][execCall][success]',_0xcf69('0x10b')+_0x5047d4[_0xcf69('0x71')]+_0xcf69('0x10c')+_0x5047d4[_0xcf69('0xae')],JSON[_0xcf69('0x5e')](_0x58c12b));ami['emit'](_0xcf69('0x10d'),ut['buildObj'](_0x5047d4,_0xcf69('0x10e'),_0xbf8f03[_0xcf69('0x11')][_0x5047d4['queue']]));_0x2d9164(ut[_0xcf69('0x4e')](_0xcf69('0x10f')));})['catch'](function(_0x5c435d){ut[_0xcf69('0x63')](_0xcf69('0x110'),_0x5c435d);_0x298937(ut['message'](_0xcf69('0x111'),_0x58379e,_0x2aee8f));});}else{_0x149120[_0xcf69('0x3a')]+=0x1;ut[_0xcf69('0x112')](_0x5047d4);rpcDb[_0xcf69('0x113')](_0x5047d4,_0xcf69('0x114'));delete _0xbf8f03[_0xcf69('0x14')][_0x448da4];_0x298937(ut['message'](_0xcf69('0x115'),_0x58379e,_0x2aee8f));}});};Preview[_0xcf69('0xe')]['isTrunkReachable']=function(_0x8cb383){return!_['isNil'](_0x8cb383)&&!_[_0xcf69('0x70')](_0x8cb383[_0xcf69('0x27')])&&!_['isNil'](_0x8cb383[_0xcf69('0x116')])&&_0x8cb383[_0xcf69('0x116')]&&!_[_0xcf69('0x70')](this[_0xcf69('0x13')][util[_0xcf69('0x59')](_0xcf69('0x117'),_0x8cb383[_0xcf69('0x27')])])&&!_[_0xcf69('0x70')](this[_0xcf69('0x13')][util[_0xcf69('0x59')](_0xcf69('0x117'),_0x8cb383[_0xcf69('0x27')])]['status'])&&(this[_0xcf69('0x13')][util[_0xcf69('0x59')]('SIP/%s',_0x8cb383['name'])][_0xcf69('0x118')]==='reachable'||this['trunks'][util[_0xcf69('0x59')](_0xcf69('0x117'),_0x8cb383['name'])][_0xcf69('0x118')]===_0xcf69('0x119'));};Preview[_0xcf69('0xe')][_0xcf69('0x89')]=function(_0x4382ff,_0x412f67){return this[_0xcf69('0x11a')](_0x4382ff,_0x412f67)[_0xcf69('0x8a')](function(_0x3778a7){return _[_0xcf69('0x75')](_0x3778a7,[_0xcf69('0x4e')]);})[_0xcf69('0x7c')](function(_0x19b6e8){if(_0x19b6e8[_0xcf69('0x11b')]){rpcDb[_0xcf69('0x11c')](_0x4382ff);}if(_0x19b6e8[_0xcf69('0x116')]){rpcDb[_0xcf69('0x8d')](_0x4382ff);}throw _[_0xcf69('0x75')](_0x19b6e8,['message']);});};Preview['prototype'][_0xcf69('0x11a')]=function(_0x31193b,_0x51961f){var _0x4c4756=this;var _0x18ee29,_0x153094;return rpcDb['getContactPreview'](_0x31193b)[_0xcf69('0x8a')](function(_0x36f78a){if(!_[_0xcf69('0x70')](_0x36f78a[0x0])){_0x153094=_0x36f78a[0x0][_0xcf69('0x11d')]?![]:!![];_0x18ee29=_0x36f78a[0x0]['recallme']?!![]:![];_0x18ee29=_0x51961f?!![]:_0x18ee29;}var _0x33d6af=_0x4c4756[_0xcf69('0x11e')](_0x36f78a);if(_0x33d6af[_0xcf69('0x11f')]){rpcDb[_0xcf69('0x120')](_[_0xcf69('0x75')](_0x36f78a[0x0],[_0xcf69('0x78'),_0xcf69('0x106')]))['then'](function(_0x293c17){_0x4c4756[_0xcf69('0x121')](_0x293c17,_0x36f78a[0x0],_0x51961f,_0x153094,_0x18ee29)[_0xcf69('0x8a')](function(_0x23d5cb){return _0x23d5cb;})[_0xcf69('0x7c')](function(_0x4d5aa2){throw _0x4d5aa2;});})[_0xcf69('0x7c')](function(_0x555261){ut[_0xcf69('0x63')](_0xcf69('0x122'),_0x555261);throw ut[_0xcf69('0x4e')]('Call\x20unsuccessful',_0x153094,_0x18ee29);});}else{throw ut['message'](_0x33d6af[_0xcf69('0x4e')],_0x153094,_0x18ee29);}})[_0xcf69('0x7c')](function(_0x3f6d7b){ut[_0xcf69('0x63')](_0xcf69('0x123'),_0x3f6d7b);throw ut['message'](_0xcf69('0x124'),![],!![]);});};Preview[_0xcf69('0xe')][_0xcf69('0x11e')]=function(_0x4a61dc){if(_[_0xcf69('0x70')](_0x4a61dc)||_['isEmpty'](_0x4a61dc)||!_[_0xcf69('0x70')](_0x4a61dc[0x0][_0xcf69('0x87')])&&_[_0xcf69('0x70')](_0x4a61dc[0x0]['Agent']['name'])){ut[_0xcf69('0x63')](_0xcf69('0x125'),_0x4a61dc);return{'isValid':![],'message':_0xcf69('0x126')};}var _0x20852b=this[_0xcf69('0x11')][_0x4a61dc[0x0][_0xcf69('0x108')][_0xcf69('0x27')]];_0x20852b[_0xcf69('0x4e')]=_0xcf69('0x9d');if(_['isNil'](_0x20852b)){ut[_0xcf69('0x63')]('[Preview][validateContact][Empty\x20Campaign]',_0x20852b);return{'isValid':![],'message':_0xcf69('0x127')};}if(!this[_0xcf69('0x9b')](_0x20852b[_0xcf69('0x55')])){ut[_0xcf69('0x63')](_0xcf69('0x128'),_0xcf69('0x129')+_0x20852b[_0xcf69('0x27')]+_0xcf69('0x12a'));if(!this[_0xcf69('0x9b')](_0x20852b['TrunkBackup'])){ut[_0xcf69('0x63')](_0xcf69('0x128'),_0x20852b[_0xcf69('0x27')]+_0xcf69('0x12b'));return{'isValid':![],'message':_0xcf69('0x12c')};}}if(!ut[_0xcf69('0x12d')](_0x20852b['dialActive'])){ut['logger'](_0xcf69('0x12e'),_0x20852b[_0xcf69('0x27')]+_0xcf69('0x12f'));return{'isValid':![],'message':_0xcf69('0x129')+_0x20852b[_0xcf69('0x27')]+'\x20Not\x20Active'};}return{'isValid':!![],'message':_0xcf69('0x130')};};Preview['prototype'][_0xcf69('0x10a')]=function(_0x3133f5,_0x560391,_0xb84f92,_0x44361c){var _0x1d2265=this;return new Promise(function(_0x10eb7e,_0x4d4741){var _0x28e505=_0x3133f5['uniqueid'];var _0x2f64fb=_0x1d2265[_0xcf69('0x9b')](_0x560391['Trunk'])?util['format'](_0xcf69('0x131'),_0x560391[_0xcf69('0x55')][_0xcf69('0x27')],_[_0xcf69('0x70')](_0x560391[_0xcf69('0x37')])?'':_0x560391['dialPrefix'][_0xcf69('0x132')]()||'',_0x560391[_0xcf69('0x133')]>0x0?_0xb84f92[_0xcf69('0x106')][_0xcf69('0x134')](_0x560391[_0xcf69('0x133')]):_0xb84f92[_0xcf69('0x106')]):util['format'](_0xcf69('0x131'),_['isNil'](_0x560391[_0xcf69('0x9c')])?_0x560391[_0xcf69('0x55')]['name']:_0x560391[_0xcf69('0x9c')][_0xcf69('0x27')],_[_0xcf69('0x70')](_0x560391['dialPrefix'])?'':_0x560391[_0xcf69('0x37')]['trim']()||'',_0x560391[_0xcf69('0x133')]>0x0?_0xb84f92[_0xcf69('0x106')][_0xcf69('0x134')](_0x560391[_0xcf69('0x133')]):_0xb84f92[_0xcf69('0x106')]);var _0x50d05f=_0x1d2265[_0xcf69('0x9b')](_0x560391[_0xcf69('0x55')])?ut[_0xcf69('0x135')](_0x560391[_0xcf69('0x55')][_0xcf69('0x56')],_0x560391['dialOriginateCallerIdName'],_0x560391[_0xcf69('0x136')]>0x0?ut[_0xcf69('0x137')](_0x560391['dialOriginateCallerIdNumber'],_0x560391[_0xcf69('0x136')]):_0x560391['dialOriginateCallerIdNumber']):ut[_0xcf69('0x135')](_[_0xcf69('0x70')](_0x560391[_0xcf69('0x9c')])?_0x560391[_0xcf69('0x55')]['callerid']:_0x560391[_0xcf69('0x9c')][_0xcf69('0x56')],_0x560391[_0xcf69('0x34')],_0x560391[_0xcf69('0x136')]>0x0?ut['getCallerIdRandom'](_0x560391[_0xcf69('0x35')],_0x560391[_0xcf69('0x136')]):_0x560391[_0xcf69('0x35')]);if(_0x50d05f){_0x3133f5[_0xcf69('0x138')]=ut[_0xcf69('0x139')](_0x50d05f);_0x3133f5[_0xcf69('0x13a')]=ut[_0xcf69('0x13b')](_0x50d05f);}var _0x34c2fb=ut[_0xcf69('0x13c')](_0x560391,_0xb84f92,_0x2f64fb,_0x50d05f,_0x28e505,_0x3133f5);_[_0xcf69('0x13d')](_0x3133f5,ut[_0xcf69('0x13e')](_0x34c2fb));_0x3133f5[_0xcf69('0x13f')]=moment()[_0xcf69('0x59')](_0xcf69('0xb2'));_0x560391[_0xcf69('0x140')]=_0x34c2fb;ami[_0xcf69('0x7a')](ut[_0xcf69('0x141')](_0x3133f5,_0x560391,_0x34c2fb,_0x3133f5[_0xcf69('0xab')],_0x44361c))['then'](function(_0xd69e52){_0x560391[_0xcf69('0x4f')]+=0x1;logger[_0xcf69('0x5c')](_0xcf69('0x142'),_0x28e505,_0xcf69('0xb5'),_0x560391[_0xcf69('0x27')],'originated:\x20',_0x560391[_0xcf69('0x4f')]);_0x10eb7e(_0xd69e52);})[_0xcf69('0x7c')](function(_0xdc9e6d){ut[_0xcf69('0xf9')](_0x3133f5,0xe,'OriginateError');rpcDb[_0xcf69('0xfb')](_0x3133f5,'[originateFailure][logOriginateFailure]');_0x4d4741(_0xdc9e6d);});});};Preview['prototype'][_0xcf69('0x143')]=function(_0x5634ea){if(this[_0xcf69('0x14')][_0x5634ea[_0xcf69('0xac')]]){this['actions'][_0x5634ea[_0xcf69('0xac')]][_0xcf69('0x7b')]=_0x5634ea['channel'];}};Preview[_0xcf69('0xe')][_0xcf69('0x144')]=function(_0x37fe4b){var _0x10a6e4=this;var _0xbc12f1=this[_0xcf69('0x14')][_0x37fe4b[_0xcf69('0x145')]];if(_0xbc12f1){if(_0xbc12f1[_0xcf69('0x146')]&&this[_0xcf69('0x15')][_0xbc12f1[_0xcf69('0x146')]]){ut[_0xcf69('0x147')](_0xbc12f1,this[_0xcf69('0x15')][_0xbc12f1['lookAgent']][_0xcf69('0x27')],this[_0xcf69('0x15')][_0xbc12f1['lookAgent']]['id']);}var _0xb41039=_[_0xcf69('0x148')](_0xbc12f1);_0xb41039[_0xcf69('0x149')]=moment()[_0xcf69('0x59')](_0xcf69('0xb2'));var _0x25cdea=_0x10a6e4[_0xcf69('0x11')][_0xbc12f1['queue']];if(ut[_0xcf69('0x14a')](_0x37fe4b['response'])){if(_0xbc12f1[_0xcf69('0xaa')]){rpcDb[_0xcf69('0x11c')](_0xbc12f1[_0xcf69('0xae')]);}if(_0xbc12f1['activeContact']){rpcDb[_0xcf69('0x8d')](_0xbc12f1['idContact']);}ami[_0xcf69('0x24')]('custom:agentringnoanswer',ut[_0xcf69('0xa1')](_0xbc12f1,_0xcf69('0x14b'),this[_0xcf69('0x11')][_0xbc12f1['queue']]));this[_0xcf69('0xf5')](_0xb41039,_0x25cdea,_0x37fe4b);}else{_0xbc12f1[_0xcf69('0x13f')]=moment()[_0xcf69('0x59')](_0xcf69('0xb2'));ut[_0xcf69('0xf9')](_0xb41039,0x4,'Answer');rpcDb[_0xcf69('0xfb')](_0xb41039,'[callProgressDetectingAgent][logAnswer]');}}};Preview[_0xcf69('0xe')]['syncHangup']=function(_0x6c8589){var _0x141c2c=this[_0xcf69('0x14')][_0x6c8589[_0xcf69('0xac')]];var _0x898385;if(_0x141c2c){_0x898385=this[_0xcf69('0x11')][_0x141c2c[_0xcf69('0x71')]];logger[_0xcf69('0x5c')]('[syncHangup][talking]',_0x6c8589[_0xcf69('0xac')],'\x20Queue',_0x898385[_0xcf69('0x27')],_0xcf69('0x73'),_0x898385[_0xcf69('0x2c')]);}if(this[_0xcf69('0x14')][_0x6c8589['linkedid']]&&_0x6c8589[_0xcf69('0xac')]!==_0x6c8589['uniqueid']){if(_0x6c8589[_0xcf69('0x14c')]==='16'&&this[_0xcf69('0x14')][_0x6c8589[_0xcf69('0xac')]][_0xcf69('0x74')]){this[_0xcf69('0x14d')](_0x6c8589,_0x6c8589[_0xcf69('0xac')],_0x6c8589[_0xcf69('0x14c')]);}else if(this['actions'][_0x6c8589[_0xcf69('0xac')]][_0xcf69('0x74')]){logger['info'](_0xcf69('0x14e'),_0x6c8589['linkedid'],_0x6c8589['cause'],'\x20Queue',_0x898385[_0xcf69('0x27')],_0xcf69('0x73'),_0x898385['pTalking']);this['callProgressDetectingCustomer'](_0x6c8589,_0x6c8589[_0xcf69('0xac')],_0x6c8589[_0xcf69('0x14c')]);}}else if(_0x141c2c&&_[_0xcf69('0x70')](_0x141c2c['statedesc'])&&_0x898385[_0xcf69('0x14f')]&&_0x6c8589[_0xcf69('0xac')]===_0x6c8589['uniqueid']&&_[_0xcf69('0x70')](_0x6c8589['reason'])&&_0x6c8589[_0xcf69('0x14c')]==='16'&&_0x6c8589[_0xcf69('0x150')]==='6'&&_[_0xcf69('0xf6')](_0x141c2c['transfer'])){if(_0x141c2c[_0xcf69('0xaa')]){rpcDb[_0xcf69('0x11c')](_0x141c2c[_0xcf69('0xae')]);}if(_0x141c2c['activeContact']){rpcDb[_0xcf69('0x8d')](_0x141c2c[_0xcf69('0xae')]);}_0x6c8589[_0xcf69('0xf8')]='22';this[_0xcf69('0xf5')](_0x141c2c,_0x898385,_0x6c8589);}else if(_0x141c2c&&_0x141c2c['transfer']){if(_0x6c8589[_0xcf69('0x14c')]==='16'&&this[_0xcf69('0x14')][_0x6c8589[_0xcf69('0xac')]][_0xcf69('0x74')]){logger[_0xcf69('0x5c')](_0xcf69('0x151'),_0x6c8589[_0xcf69('0xac')],_0x6c8589[_0xcf69('0x14c')],'\x20Queue',_0x898385[_0xcf69('0x27')],'pTalking:\x20',_0x898385[_0xcf69('0x2c')]);this['callProgressDetectingCustomer'](_0x6c8589,_0x6c8589['linkedid'],_0x6c8589['cause']);}else if(this[_0xcf69('0x14')][_0x6c8589[_0xcf69('0xac')]][_0xcf69('0x74')]){logger['info'](_0xcf69('0x14e'),_0x6c8589['linkedid'],_0x6c8589[_0xcf69('0x14c')],_0xcf69('0xb5'),_0x898385['name'],_0xcf69('0x73'),_0x898385[_0xcf69('0x2c')]);this[_0xcf69('0x14d')](_0x6c8589,_0x6c8589[_0xcf69('0xac')],_0x6c8589['cause']);}}};Preview['prototype']['syncDialEnd']=function(_0x4f3c16){if(this[_0xcf69('0x14')][_0x4f3c16[_0xcf69('0x152')]]&&_0x4f3c16[_0xcf69('0x152')]!==_0x4f3c16[_0xcf69('0x153')]){this[_0xcf69('0x14d')](_0x4f3c16,_0x4f3c16[_0xcf69('0x152')],_0x4f3c16['dialstatus']);}};Preview['prototype'][_0xcf69('0x19')]=function(_0x5cbc98){if(this[_0xcf69('0x14')][_0x5cbc98[_0xcf69('0xac')]]&&_0x5cbc98[_0xcf69('0xac')]!==_0x5cbc98[_0xcf69('0xb4')]&&!this[_0xcf69('0x14')][_0x5cbc98[_0xcf69('0xac')]][_0xcf69('0x74')]){if(_0x5cbc98[_0xcf69('0x14c')]==='1'){this[_0xcf69('0x14d')](_0x5cbc98,_0x5cbc98[_0xcf69('0xac')],_0x5cbc98['cause']);}}};Preview['prototype'][_0xcf69('0x154')]=function(_0x499f41,_0x138ec9,_0x255fa8){if(this[_0xcf69('0x14')][_0x499f41]){if(_[_0xcf69('0x70')](this['actions'][_0x499f41][_0xcf69('0x140')])){this[_0xcf69('0x14')][_0x499f41][_0xcf69('0x140')]={};}this[_0xcf69('0x14')][_0x499f41][_0xcf69('0x140')][_0x138ec9]=_0x255fa8;}};Preview['prototype'][_0xcf69('0x1e')]=function(_0xe46b41){try{if(!_[_0xcf69('0x70')](_0xe46b41)){if(ut[_0xcf69('0x155')](_[_0xcf69('0x156')](_0xe46b41['variable'])[0x0])){this['addVariable'](_0xe46b41[_0xcf69('0xb4')],_[_0xcf69('0x156')](_0xe46b41[_0xcf69('0x157')])[0x0],_0xe46b41[_0xcf69('0x158')]);}}}catch(_0x3487e9){logger[_0xcf69('0x159')](_0xcf69('0x15a'),util[_0xcf69('0x15b')](_0x3487e9,{'showHidden':![],'depth':null}));}};Preview[_0xcf69('0xe')][_0xcf69('0x20')]=function(_0x110fe8){if(_0x110fe8){if(this[_0xcf69('0x14')][_0x110fe8['transfertargetlinkedid']]){this['actions'][_0x110fe8[_0xcf69('0x15c')]][_0xcf69('0x15d')]=!![];}}};Preview[_0xcf69('0xe')][_0xcf69('0x22')]=function(_0x244fad){if(_0x244fad){if(this['actions'][_0x244fad[_0xcf69('0x15e')]]){this[_0xcf69('0x14')][_0x244fad['transfererlinkedid']][_0xcf69('0x15d')]=!![];}}};module[_0xcf69('0x15f')]=Preview;
\ No newline at end of file
+var _0x7524=['[HistoryDialRecallInQueue][historyCatch]','RecallFailedTimeout','createCustomerHistory','[HistoryRecallClose]','[getContactRecallMe]','IsNotLoggedIn','AGENTS_NOT_LOGGED','isActive','NOT_ACTIVE','isTrunkReachable','ACTIVE','callProgressDetectingCustomer','countglobal','totalGlobal','NoSuchNumber','custom:agentnosuchnumber','[callProgressDetectingCustomer][logNoSuch]','verifyAdditionalPhones','additional','dialNoSuchNumberRetryFrequency','callAdditionalPhoneAfterMin','dialGlobalMaxRetry','cloneAction','Global','createCustomerFinal','[callProgressDetectingCustomer][logNoSuchGlobal]','countnosuchnumberretry','dialNoSuchNumberMaxRetry','rescheduleContact','scheduledAt','unlockAgent','activeContact','linkedid','idContact','incrementPreviewCounters','swapAdditionalPhones','ANSWER','YYYY-MM-DD\x20HH:mm:ss','responsetime','answertime','uniqueid','\x20Queue','buildObj','connect','acw','custom:agentConnectPreview','buildAcw','complete','[16]','Answer','crateCustomerReportQueue','talktime','[syncHangup][talking][decrement]','BUSY','countbusyretry','Busy','custom:agentbusy','busy','[callProgressDetectingCustomer][logBusyGlobal]','dialBusyMaxRetry','[callProgressDetectingCustomer][logBusy]','dialBusyRetryFrequency','NOANSWER','countnoanswerretry','buildNoAnswerEventPayload','custom:agentnoanswer','[callProgressDetectingCustomer][logNoAnswer]','[callProgressDetectingCustomer][logNoAnswerGlobal]','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','CONGESTION','countcongestionretry','Congestion','custom:agentcongestion','congestion','[callProgressDetectingCustomer][logCongestion]','[callProgressDetectingCustomer][logCongestionGlobal]','dialCongestionMaxRetry','CANCEL','countagentrejectretry','AgentReject','dialAgentRejectRetryFrequency','custom:agentreject','agentreject','[syncHangupRequest][logAgentReject]','[callProgressDetectingCustomer][logAgentReject]','dialAgentRejectMaxRetry','ABANDONED','countabandonedretry','Abandoned','countabandonedetry','dialAbandonedMaxRety','dialAbandonedRetryFrequency','cause-txt','dialstatus','custom:amd','amd','[callProgressDetectingCustomer][hangupInAMD]','[callProgressDetectingCustomer][machine]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer][logUnknownGlobal]','[callProgressDetectingCustomer]','[originated][decrement][callProgressDetectingCustomer]','destlinkedid','callProgressDetectingAgent','isUndefined','object','reason','logAgent','createAgentHistory','[callProgressDetectingAgent][logNoSuch]','[callProgressDetectingAgent][logNoAnswer]','[callProgressDetectingAgent][logBusy]','[callProgressDetectingAgent][logCongestion]','[callProgressDetectingAgent][logAnswerAGI]','[originated][decrement][callProgressDetectingAgent]','resolve','[swapAdditionalPhone]\x20','[incrementPreviewCounters]\x20','checkInBlack','Contact','phone','Contact\x20is\x20undefined','lookAgent','isEmpty','Queue:\x20','\x20IdHopper:\x20','custom:agentcalled','called','Calling','[Preview][execCall][failure]','[Blacklist][error]','Contact\x20in\x20black\x20List','SIP/%s','status','reachable','unmonitored','unlock','unlockContact','execRun','getContactPreview','recallme','validateContact','isValid','checkIsBlackList','[Preview][checkIsBlackList]','Call\x20unsuccessful','[Preview][validateContact][Empty\x20Contact]','Empty\x20Contact','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','TrunkBackup','[Preview][validateContact][Trunk\x20not\x20working\x20correctly]','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20working\x20correctly','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','Is\x20Valid','trim','substring','dialCutDigit','SIP/%s/%s%s','getCallerId','callerid','dialOriginateCallerIdName','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','originatecalleridname','extractCalleridName','originatecalleridnum','extractCalleridNumber','addVariables','merge','variables','[originated][increment]','originated:\x20','OriginateError','[originateFailure][logOriginateFailure]','syncOriginateResponse','actionid','logLookAgent','clone','isFailure','rejected','[callProgressDetectingAgent][logAnswer]','cause','statedesc','dialQueueProject','channelstate','transfer','[syncHangup][talking][transfer]','[syncHangup][talking][cause]','destuniqueid','addVariable','filterKey','keys','variable','value','error','[syncVarSet][Preview]','inspect','syncAttendedTransfer','transfertargetlinkedid','transfererlinkedid','exports','lodash','uuid','md5','ioredis','preview','actionPreview','../ami','./rpcDb','../rpc/cmHopperAdditionalPhone','./action','redis','defaults','socket.io-emitter','prototype','enqueue','tail','finally','campaignsPreview','voiceQueues','trunks','actions','agents','originateresponse','bind','hangup','syncHangup','hanguprequest','syncHangupRequest','syncDialEnd','syncNewExten','varset','syncVarSet','attendedtransfer','blindtransfer','syncBlindTransfer','loopCampaigns','emit','type','outbound','strategy','answered','loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime','talking','total','unmanaged','abandoned','loggedInDb','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','outboundAbandonedCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalAvailable','predictiveIntervalTotalCalls','message','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','name','active','Interval','stringify','format','voice:queue:%s','info','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','voice_queue_channel:remove','voice_queue_presence:remove','sendMessageOneNotActive','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','DEACTIVATED','\x20is\x20deactivated','syncCampaigns','clockClearZombieChannels','hasOwnProperty','dialMethod','booked','clearZombieChannels','dialActive','setMessage','dialPreviewAutoRecallMe','clearZombieChannel','sequence','[clearZombieChannels][talking]','Queue','queue','pTalking:\x20','pick','contactId','UserId','VoiceQueueId','Action','channel','updateOriginated','dialAnswer','decrementTalkink','[clearZombieChannel]','loggerError','[Dialer][checkChannel][pTalking][Preview]','[action]','size','recallMe','getContactRecallMe','agentReadyId','then','isNil','length','getDiff','scheduledat','dialRecallMeTimeout','Agent','run','logger2','[RecallMe]','catch','disableContact','starttime','logCustomer','dialRecallInQueue','rescheduleContactInQueue','createBody'];(function(_0x202c61,_0x3673e0){var _0x540691=function(_0x409610){while(--_0x409610){_0x202c61['push'](_0x202c61['shift']());}};_0x540691(++_0x3673e0);}(_0x7524,0xce));var _0x4752=function(_0x204a3b,_0x41adce){_0x204a3b=_0x204a3b-0x0;var _0x458547=_0x7524[_0x204a3b];return _0x458547;};'use strict';var util=require('util');var _=require(_0x4752('0x0'));var uuid=require(_0x4752('0x1'));var moment=require('moment');var md5=require(_0x4752('0x2'));var Redis=require(_0x4752('0x3'));var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0x4752('0x4'));var loggerAction=require('../../../config/logger')(_0x4752('0x5'));var ami=require(_0x4752('0x6'));var rpcDb=require(_0x4752('0x7'));var cmHopperAdditionalPhone=require(_0x4752('0x8'));var Action=require(_0x4752('0x9'));var ut=require('./util/util');config[_0x4752('0xa')]=_[_0x4752('0xb')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x4752('0xc'))(new Redis(config[_0x4752('0xa')]));var Sequence=function(){};Sequence[_0x4752('0xd')][_0x4752('0xe')]=function(_0x52b972){this[_0x4752('0xf')]=this[_0x4752('0xf')]?this[_0x4752('0xf')][_0x4752('0x10')](_0x52b972):_0x52b972();};function Preview(_0xcf0104){this['sequence']=new Sequence();this[_0x4752('0x11')]=_0xcf0104[_0x4752('0x12')];this[_0x4752('0x13')]=_0xcf0104[_0x4752('0x13')];this[_0x4752('0x14')]={};this[_0x4752('0x15')]=_0xcf0104[_0x4752('0x15')];this['clockClearZombieChannels']=0x0;ami['on'](_0x4752('0x16'),this['syncOriginateResponse'][_0x4752('0x17')](this));ami['on'](_0x4752('0x18'),this[_0x4752('0x19')][_0x4752('0x17')](this));ami['on'](_0x4752('0x1a'),this[_0x4752('0x1b')][_0x4752('0x17')](this));ami['on']('dialend',this[_0x4752('0x1c')][_0x4752('0x17')](this));ami['on']('newexten',this[_0x4752('0x1d')]['bind'](this));ami['on'](_0x4752('0x1e'),this[_0x4752('0x1f')]['bind'](this));ami['on'](_0x4752('0x20'),this['syncAttendedTransfer']['bind'](this));ami['on'](_0x4752('0x21'),this[_0x4752('0x22')][_0x4752('0x17')](this));this[_0x4752('0x23')](this[_0x4752('0x11')]);}function emit(_0x3142b,_0x55c67c,_0x22215f){io['to'](_0x3142b)[_0x4752('0x24')](_0x55c67c,_0x22215f);}function emitCampaignPreview(_0x477050){if(_0x477050[_0x4752('0x25')]===_0x4752('0x26')){var _0xaa95a4={'id':_0x477050['id'],'name':_0x477050['name'],'strategy':_0x477050[_0x4752('0x27')],'answered':_0x477050[_0x4752('0x28')],'available':_0x477050['available'],'loggedIn':_0x477050[_0x4752('0x29')],'pTalking':_0x477050[_0x4752('0x2a')],'sumBillable':_0x477050[_0x4752('0x2b')],'sumDuration':_0x477050[_0x4752('0x2c')],'sumHoldTime':_0x477050[_0x4752('0x2d')]||0x0,'talking':_0x477050[_0x4752('0x2e')],'total':_0x477050[_0x4752('0x2f')],'type':_0x477050[_0x4752('0x25')],'unmanaged':_0x477050[_0x4752('0x30')],'abandoned':_0x477050[_0x4752('0x31')],'waiting':_0x477050['waiting'],'loggedInDb':_0x477050[_0x4752('0x32')],'dialActive':_0x477050['dialActive'],'dialMethod':_0x477050['dialMethod'],'dialOriginateCallerIdName':_0x477050['dialOriginateCallerIdName'],'dialOriginateCallerIdNumber':_0x477050[_0x4752('0x33')],'dialOriginateTimeout':_0x477050[_0x4752('0x34')],'dialPrefix':_0x477050[_0x4752('0x35')],'outboundAnswerAgiCallsDay':_0x477050[_0x4752('0x36')],'outboundAnswerCallsDay':_0x477050[_0x4752('0x37')],'outboundBlacklistCallsDay':_0x477050[_0x4752('0x38')],'outboundBusyCallsDay':_0x477050[_0x4752('0x39')],'outboundCongestionCallsDay':_0x477050[_0x4752('0x3a')],'outboundDropCallsDayACS':_0x477050['outboundDropCallsDayACS'],'outboundDropCallsDayCallersExit':_0x477050['outboundDropCallsDayCallersExit'],'outboundDropCallsDayTimeout':_0x477050[_0x4752('0x3b')],'outboundNoAnswerCallsDay':_0x477050[_0x4752('0x3c')],'outboundNoSuchCallsDay':_0x477050[_0x4752('0x3d')],'outboundOriginateFailureCallsDay':_0x477050[_0x4752('0x3e')],'outboundReCallsDay':_0x477050[_0x4752('0x3f')],'outboundRejectCallsDay':_0x477050[_0x4752('0x40')],'outboundUnknownCallsDay':_0x477050[_0x4752('0x41')],'outboundAbandonedCallsDay':_0x477050[_0x4752('0x42')],'predictiveIntervalAnsweredCalls':_0x477050[_0x4752('0x43')],'predictiveIntervalAvgHoldtime':_0x477050[_0x4752('0x44')],'predictiveIntervalAvgTalktime':_0x477050[_0x4752('0x45')],'predictiveIntervalDroppedCallsCallersExit':_0x477050[_0x4752('0x46')],'predictiveIntervalDroppedCallsTimeout':_0x477050[_0x4752('0x47')],'predictiveIntervalErlangCalls':_0x477050[_0x4752('0x48')],'predictiveIntervalErlangCallsDroppedCalls':_0x477050[_0x4752('0x49')],'predictiveIntervalHitRate':_0x477050[_0x4752('0x4a')],'predictiveIntervalMultiplicativeFactor':_0x477050['predictiveIntervalMultiplicativeFactor'],'predictiveIntervalPauses':_0x477050['predictiveIntervalPauses'],'predictiveIntervalAvailable':_0x477050[_0x4752('0x4b')],'predictiveIntervalTotalCalls':_0x477050[_0x4752('0x4c')],'message':_0x477050[_0x4752('0x4d')],'originated':_0x477050[_0x4752('0x4e')],'erlangCalls':_0x477050[_0x4752('0x4f')],'erlangCallToSecond':_0x477050[_0x4752('0x50')],'erlangAbandonmentRate':_0x477050[_0x4752('0x51')],'erlangBusyFactor':_0x477050[_0x4752('0x52')],'startPredictive':_0x477050[_0x4752('0x53')],'startProgressive':_0x477050[_0x4752('0x54')]};if(_0x477050['Trunk']){_0xaa95a4[_0x4752('0x55')]={'id':_0x477050['Trunk']['id'],'name':_0x477050[_0x4752('0x55')][_0x4752('0x56')],'active':_0x477050[_0x4752('0x55')][_0x4752('0x57')],'callerid':_0x477050[_0x4752('0x55')]['callerid']};}if(_0x477050[_0x4752('0x58')]){_0xaa95a4['Interval']={'id':_0x477050[_0x4752('0x58')]['id'],'name':_0x477050[_0x4752('0x58')][_0x4752('0x56')]};}var _0x1779a1=md5(JSON[_0x4752('0x59')](_0xaa95a4));if(_0x477050[_0x4752('0x2')]!==_0x1779a1){_0x477050[_0x4752('0x2')]=_0x1779a1;emit(util[_0x4752('0x5a')](_0x4752('0x5b'),_0xaa95a4[_0x4752('0x56')]),'voice_queue:save',_0xaa95a4);}}}function emitVoiceQueueChannelRemove(_0x1717ea){logger[_0x4752('0x5c')](_0x4752('0x5d'),JSON[_0x4752('0x59')](_0x1717ea));emit(util[_0x4752('0x5a')](_0x4752('0x5b'),_0x1717ea[_0x4752('0x56')]),_0x4752('0x5e'),_0x1717ea);io['emit'](_0x4752('0x5f'),_0x1717ea);}function notSendMessagesQueue(_0x4c1ee0){if(_0x4c1ee0[_0x4752('0x60')]){if(_0x4c1ee0[_0x4752('0x4e')]===0x0&&_0x4c1ee0[_0x4752('0x2a')]===0x0){_0x4c1ee0[_0x4752('0x60')]=![];_0x4c1ee0['available']=0x0;_0x4c1ee0['paused']=0x0;_0x4c1ee0['message']='NOT_ACTIVE';ut[_0x4752('0x61')](_0x4752('0x62'),_0x4c1ee0['name']+_0x4752('0x63'));}else{_0x4c1ee0[_0x4752('0x4d')]=_0x4752('0x64');ut['logger'](_0x4752('0x62'),_0x4c1ee0[_0x4752('0x56')]+_0x4752('0x65'));}emitCampaignPreview(_0x4c1ee0);}}Preview[_0x4752('0xd')][_0x4752('0x23')]=function(){var _0x53dfdf=this;setInterval(function(){_0x53dfdf['syncCampaigns']();},0x7cf);};Preview[_0x4752('0xd')][_0x4752('0x66')]=function(){var _0x828534=this[_0x4752('0x11')];this[_0x4752('0x67')]+=0x1;for(var _0x1049f7 in _0x828534){if(_0x828534[_0x4752('0x68')](_0x1049f7)&&(_0x828534[_0x1049f7][_0x4752('0x69')]===_0x4752('0x4')||_0x828534[_0x1049f7][_0x4752('0x69')]===_0x4752('0x6a'))&&_0x828534[_0x1049f7][_0x4752('0x25')]==='outbound'){if(this[_0x4752('0x67')]>0x7){this['clockClearZombieChannels']=0x0;this[_0x4752('0x6b')]();}}if(_0x828534[_0x4752('0x68')](_0x1049f7)&&_0x828534[_0x1049f7]['dialMethod']===_0x4752('0x4')&&_0x828534[_0x1049f7][_0x4752('0x25')]===_0x4752('0x26')){if(_0x828534[_0x1049f7][_0x4752('0x6c')]){this[_0x4752('0x6d')](_0x828534[_0x1049f7]);if(_0x828534[_0x1049f7][_0x4752('0x6e')])this['recallMe'](_0x828534[_0x1049f7]);}else{notSendMessagesQueue(_0x828534[_0x1049f7]);}}}};Preview[_0x4752('0xd')][_0x4752('0x6f')]=function(_0x3a78b2){var _0x27756d=this;this[_0x4752('0x70')][_0x4752('0xe')](function(){if(!_['isNil'](_0x27756d[_0x4752('0x14')][_0x3a78b2])){loggerAction[_0x4752('0x5c')](_0x4752('0x71'),_0x3a78b2,_0x4752('0x72'),_0x27756d[_0x4752('0x14')][_0x3a78b2][_0x4752('0x73')],'originated:\x20',JSON[_0x4752('0x59')](_0x27756d['campaignsPreview'][_0x27756d['actions'][_0x3a78b2][_0x4752('0x73')]][_0x4752('0x4e')]),_0x4752('0x74'),JSON['stringify'](_0x27756d[_0x4752('0x11')][_0x27756d[_0x4752('0x14')][_0x3a78b2]['queue']][_0x4752('0x2a')]),JSON[_0x4752('0x59')](_0x27756d[_0x4752('0x14')][_0x3a78b2]['dialAnswer']),JSON[_0x4752('0x59')](_[_0x4752('0x75')](_0x27756d[_0x4752('0x14')][_0x3a78b2],[_0x4752('0x76'),_0x4752('0x77'),_0x4752('0x78'),'ListId'])));return ami[_0x4752('0x79')]({'action':'status','channel':_0x27756d[_0x4752('0x14')][_0x3a78b2][_0x4752('0x7a')]})['catch'](function(_0x4fee8c){if(_0x4fee8c['message']==='No\x20such\x20channel'){setTimeout(function(){if(_0x27756d['actions'][_0x3a78b2]){ut[_0x4752('0x7b')](_0x27756d[_0x4752('0x11')][_0x27756d[_0x4752('0x14')][_0x3a78b2][_0x4752('0x73')]],'[clearZombieChannel]');if(_0x27756d[_0x4752('0x14')][_0x3a78b2][_0x4752('0x7c')]===!![]){ut[_0x4752('0x7d')](_0x27756d[_0x4752('0x11')][_0x27756d[_0x4752('0x14')][_0x3a78b2]['queue']],_0x4752('0x7e'));ut[_0x4752('0x7f')](_0x4752('0x80')+_0x3a78b2,_0x27756d[_0x4752('0x14')][_0x3a78b2][_0x4752('0x73')]);}ut[_0x4752('0x7f')]('[Dialer][checkChannel][Preview]'+_0x3a78b2,_0x27756d[_0x4752('0x14')][_0x3a78b2][_0x4752('0x73')]);delete _0x27756d['actions'][_0x3a78b2];}},0x2328);}});}});};Preview[_0x4752('0xd')][_0x4752('0x6b')]=function(){var _0x44a8d4=this;loggerAction[_0x4752('0x5c')](_0x4752('0x81'),_[_0x4752('0x82')](this[_0x4752('0x14')]));for(var _0x26e522 in this[_0x4752('0x14')]){if(_0x44a8d4[_0x4752('0x14')]['hasOwnProperty'](_0x26e522)){_0x44a8d4['clearZombieChannel'](_0x26e522);}}};Preview[_0x4752('0xd')][_0x4752('0x83')]=function(_0x2c9006){var _0x279ab1=this;rpcDb[_0x4752('0x84')](_0x2c9006['id'],ut[_0x4752('0x85')](this['agents']))[_0x4752('0x86')](function(_0xd0f3be){if(!_[_0x4752('0x87')](_0xd0f3be)){for(var _0x24d20d=0x0;_0x24d20d<_0xd0f3be[_0x4752('0x88')];_0x24d20d+=0x1){if(ut[_0x4752('0x89')](_0xd0f3be[_0x24d20d][_0x4752('0x8a')])<_0x2c9006[_0x4752('0x8b')]*0x3c){if(_0xd0f3be[_0x24d20d][_0x4752('0x8c')]&&!_0xd0f3be[_0x24d20d][_0x4752('0x8c')]['voicePause']){_0x279ab1[_0x4752('0x8d')](_0xd0f3be[_0x24d20d]['id'])[_0x4752('0x86')](ut[_0x4752('0x8e')](_0x4752('0x8f')))[_0x4752('0x90')](ut[_0x4752('0x8e')](_0x4752('0x8f')));}else{rpcDb[_0x4752('0x91')](_0xd0f3be[_0x24d20d]['id']);}}else{var _0x532bfd=new Action(_0xd0f3be[_0x24d20d],_0x2c9006);_0x532bfd[_0x4752('0x92')]=moment()[_0x4752('0x5a')]('YYYY-MM-DD\x20HH:mm:ss');_0x2c9006[_0x4752('0x3f')]+=0x1;ut[_0x4752('0x93')](_0x532bfd,0x17,'RecallInQueue');if(_0x2c9006[_0x4752('0x94')]){rpcDb[_0x4752('0x95')](ut[_0x4752('0x96')](_0xd0f3be[_0x24d20d]));rpcDb['createCustomerHistory'](_0x532bfd,_0x4752('0x97'));}else{ut[_0x4752('0x93')](_0x532bfd,0x16,_0x4752('0x98'));rpcDb[_0x4752('0x99')](_0x532bfd,'[HistoryRecallClose]');rpcDb['createCustomerFinal'](_0x532bfd,_0x4752('0x9a'));}}}}})[_0x4752('0x90')](ut[_0x4752('0x8e')](_0x4752('0x9b')));};Preview[_0x4752('0xd')][_0x4752('0x6d')]=function(_0x2296a3){_0x2296a3[_0x4752('0x60')]=!![];if(ut[_0x4752('0x9c')](_0x2296a3[_0x4752('0x29')])){_0x2296a3[_0x4752('0x4d')]=_0x4752('0x9d');}else if(!ut[_0x4752('0x9e')](_0x2296a3[_0x4752('0x6c')])){_0x2296a3['message']=_0x4752('0x9f');}else if(!this[_0x4752('0xa0')](_0x2296a3[_0x4752('0x55')])){if(!this[_0x4752('0xa0')](_0x2296a3['TrunkBackup'])){_0x2296a3[_0x4752('0x4d')]='TRUNK_IS_NOT_REACHABLE';}else{_0x2296a3[_0x4752('0x4d')]=_0x4752('0xa1');}}else{_0x2296a3['message']=_0x4752('0xa1');}emitCampaignPreview(_0x2296a3);};Preview[_0x4752('0xd')][_0x4752('0xa2')]=function(_0x372a94,_0x2f3686,_0x1f92fa){var _0x1e62e1=this;var _0x22aefa=this[_0x4752('0x14')][_0x2f3686];var _0x126210=this['campaignsPreview'][_0x22aefa[_0x4752('0x73')]];var _0x2bf31d;var _0x1ac823=![];var _0x17f4ff=0x2;var _0x544cf8=0x3;if(_0x126210){switch(_0x1f92fa){case'1':_0x126210[_0x4752('0x3d')]+=0x1;_0x22aefa['countnosuchnumberretry']+=0x1;_0x22aefa[_0x4752('0xa3')]=ut[_0x4752('0xa4')](_0x22aefa);ut['logCustomer'](_0x22aefa,0x0,_0x4752('0xa5'));ami[_0x4752('0x24')](_0x4752('0xa6'),ut['buildObj'](_0x22aefa,'nosuchnumber'));rpcDb['createCustomerHistory'](_0x22aefa,_0x4752('0xa7'));_0x1e62e1[_0x4752('0xa8')](_0x22aefa,'0',_0x126210)['then'](function(_0x5ed9ed){_0x1ac823=_0x5ed9ed[_0x4752('0xa9')]==0x1;_0x17f4ff=_0x126210[_0x4752('0xaa')];_0x544cf8=_0x126210[_0x4752('0xab')];if(!_0x1ac823){if(ut[_0x4752('0xa4')](_0x22aefa)>=_0x126210[_0x4752('0xac')]){_0x2bf31d=ut[_0x4752('0xad')](_0x22aefa,0xf,_0x4752('0xae'));rpcDb[_0x4752('0xaf')](_0x2bf31d,_0x4752('0xb0'));}else{if(_0x22aefa[_0x4752('0xb1')]>=_0x126210[_0x4752('0xb2')]){rpcDb[_0x4752('0xaf')](_0x22aefa,_0x4752('0xb0'));}else{rpcDb[_0x4752('0xb3')](ut[_0x4752('0xb4')](_0x22aefa,'countnosuchnumberretry',_0x126210[_0x4752('0xaa')]),_0x22aefa[_0x4752('0xb5')],_0x22aefa[_0x4752('0xb6')]);}}delete this[_0x4752('0x14')][_0x372a94[_0x4752('0xb7')]];}else{_0x22aefa[_0x4752('0xb1')]++;logger['info']('actioncountonusuch',_0x22aefa[_0x4752('0xb1')]);logger[_0x4752('0x5c')]('id',_0x22aefa[_0x4752('0xb8')]);_0x1e62e1[_0x4752('0xb9')]({'id':_0x22aefa[_0x4752('0xb8')],'field':{'countnosuchnumberretry':_0x22aefa['countnosuchnumberretry']}})[_0x4752('0x86')](function(){_0x1e62e1[_0x4752('0xba')](_0x22aefa,_0x17f4ff,_0x544cf8)[_0x4752('0x86')](function(){});});}});break;case _0x4752('0xbb'):var _0x3cc3ed=moment()[_0x4752('0x5a')](_0x4752('0xbc'));_0x22aefa[_0x4752('0xbd')]=_0x3cc3ed;_0x22aefa[_0x4752('0xbe')]=_0x3cc3ed;_0x22aefa[_0x4752('0x7c')]=!![];_0x126210[_0x4752('0x2a')]+=0x1;logger['info']('[syncHangup][talking][increment]',_0x22aefa[_0x4752('0xbf')],_0x4752('0xc0'),_0x126210[_0x4752('0x56')],_0x4752('0x74'),_0x126210[_0x4752('0x2a')]);ami[_0x4752('0x24')]('custom:agentconnect',ut[_0x4752('0xc1')](_0x22aefa,_0x4752('0xc2'),this['campaignsPreview'][_0x22aefa[_0x4752('0x73')]]));if(_0x126210[_0x4752('0xc3')]){ami['emit'](_0x4752('0xc4'),ut[_0x4752('0xc5')](_0x22aefa));}break;case'16':ami['emit']('custom:agentcomplete',ut[_0x4752('0xc1')](_0x22aefa,_0x4752('0xc6'),this['campaignsPreview'][_0x22aefa[_0x4752('0x73')]]));emitVoiceQueueChannelRemove(ut[_0x4752('0xc1')](_0x22aefa,'complete'));_0x126210['outboundAnswerCallsDay']+=0x1;_0x126210[_0x4752('0x2f')]+=0x1;_0x126210['answered']+=0x1;ut[_0x4752('0x7d')](_0x126210,_0x4752('0xc7'));_0x22aefa[_0x4752('0xa3')]=ut[_0x4752('0xa4')](_0x22aefa);ut['logCustomer'](_0x22aefa,0x4,_0x4752('0xc8'));rpcDb[_0x4752('0x99')](_0x22aefa,'[callProgressDetectingCustomer][logAnswer]');rpcDb['createCustomerFinal'](_0x22aefa,'[callProgressDetectingCustomer][logAnswerGlobal]');rpcDb[_0x4752('0xc9')](_0x22aefa);_0x126210['sumDuration']+=_0x22aefa[_0x4752('0xca')];_0x126210[_0x4752('0x2b')]+=_0x22aefa[_0x4752('0xca')];logger[_0x4752('0x5c')](_0x4752('0xcb'),_0x22aefa[_0x4752('0xbf')],_0x4752('0xc0'),_0x126210[_0x4752('0x56')],_0x4752('0x74'),_0x126210[_0x4752('0x2a')]);delete this[_0x4752('0x14')][_0x372a94['linkedid']];break;case _0x4752('0xcc'):_0x126210[_0x4752('0x39')]+=0x1;_0x22aefa[_0x4752('0xcd')]+=0x1;_0x22aefa['countglobal']=ut[_0x4752('0xa4')](_0x22aefa);ut[_0x4752('0x93')](_0x22aefa,0x5,_0x4752('0xce'));_0x17f4ff=_0x126210['dialBusyRetryFrequency'];_0x544cf8=_0x126210[_0x4752('0xab')];ami['emit'](_0x4752('0xcf'),ut[_0x4752('0xc1')](_0x22aefa,_0x4752('0xd0')));rpcDb[_0x4752('0x99')](_0x22aefa,'[callProgressDetectingCustomer][logBusy]');_0x1e62e1['verifyAdditionalPhones'](_0x22aefa,'5',_0x126210)[_0x4752('0x86')](function(_0x46af16){_0x1ac823=_0x46af16[_0x4752('0xa9')]==0x1;if(!_0x1ac823){if(ut[_0x4752('0xa4')](_0x22aefa)>=_0x126210['dialGlobalMaxRetry']){_0x2bf31d=ut[_0x4752('0xad')](_0x22aefa,0xf,_0x4752('0xae'));rpcDb[_0x4752('0xaf')](_0x2bf31d,_0x4752('0xd1'));}else{if(_0x22aefa[_0x4752('0xcd')]>=_0x126210[_0x4752('0xd2')]){rpcDb['createCustomerFinal'](_0x22aefa,_0x4752('0xd3'));}else{rpcDb[_0x4752('0xb3')](ut[_0x4752('0xb4')](_0x22aefa,'countbusyretry',_0x126210[_0x4752('0xd4')]),_0x22aefa['unlockAgent'],_0x22aefa[_0x4752('0xb6')]);}}}else{_0x22aefa[_0x4752('0xcd')]++;_0x1e62e1[_0x4752('0xb9')]({'id':_0x22aefa[_0x4752('0xb8')],'field':{'countbusyretry':_0x22aefa['countbusyretry']}})[_0x4752('0x86')](function(){_0x1e62e1['swapAdditionalPhones'](_0x22aefa,_0x17f4ff,_0x544cf8)['then'](function(){});});}});break;case _0x4752('0xd5'):_0x126210[_0x4752('0x3c')]+=0x1;_0x22aefa[_0x4752('0xd6')]+=0x1;_0x22aefa['countglobal']=ut[_0x4752('0xa4')](_0x22aefa);ut[_0x4752('0x93')](_0x22aefa,0x3,'NoAnswer');_0x17f4ff=_0x126210['dialNoAnswerRetryFrequency'];_0x544cf8=_0x126210[_0x4752('0xab')];var _0x3333e9=ut[_0x4752('0xd7')](_0x22aefa,_0x126210);ami[_0x4752('0x24')](_0x4752('0xd8'),_0x3333e9);rpcDb['createCustomerHistory'](_0x22aefa,_0x4752('0xd9'));_0x1e62e1['verifyAdditionalPhones'](_0x22aefa,'3',_0x126210)[_0x4752('0x86')](function(_0xa2de54){_0x1ac823=_0xa2de54[_0x4752('0xa9')]==0x1;if(!_0x1ac823){if(ut[_0x4752('0xa4')](_0x22aefa)>=_0x126210[_0x4752('0xac')]){_0x2bf31d=ut[_0x4752('0xad')](_0x22aefa,0xf,_0x4752('0xae'));rpcDb[_0x4752('0xaf')](_0x2bf31d,_0x4752('0xda'));}else{if(_0x22aefa[_0x4752('0xd6')]>=_0x126210[_0x4752('0xdb')]){rpcDb[_0x4752('0xaf')](_0x22aefa,_0x4752('0xd9'));}else{rpcDb[_0x4752('0xb3')](ut[_0x4752('0xb4')](_0x22aefa,_0x4752('0xd6'),_0x126210[_0x4752('0xdc')]),_0x22aefa['unlockAgent'],_0x22aefa[_0x4752('0xb6')]);}}}else{_0x22aefa[_0x4752('0xd6')]++;_0x1e62e1[_0x4752('0xb9')]({'id':_0x22aefa[_0x4752('0xb8')],'field':{'countnoanswerretry':_0x22aefa[_0x4752('0xd6')]}})['then'](function(){_0x1e62e1[_0x4752('0xba')](_0x22aefa,_0x17f4ff,_0x544cf8)[_0x4752('0x86')](function(){});});}});break;case _0x4752('0xdd'):_0x126210['outboundCongestionCallsDay']+=0x1;_0x22aefa[_0x4752('0xde')]+=0x1;_0x22aefa['countglobal']=ut['totalGlobal'](_0x22aefa);ut[_0x4752('0x93')](_0x22aefa,0x8,_0x4752('0xdf'));_0x17f4ff=_0x126210['dialCongestionRetryFrequency'];_0x544cf8=_0x126210[_0x4752('0xab')];ami['emit'](_0x4752('0xe0'),ut['buildObj'](_0x22aefa,_0x4752('0xe1')));rpcDb[_0x4752('0x99')](_0x22aefa,_0x4752('0xe2'));_0x1e62e1[_0x4752('0xa8')](_0x22aefa,'8',_0x126210)['then'](function(_0x5f147d){_0x1ac823=_0x5f147d['additional']==0x1;if(!_0x1ac823){if(ut[_0x4752('0xa4')](_0x22aefa)>=_0x126210[_0x4752('0xac')]){_0x2bf31d=ut[_0x4752('0xad')](_0x22aefa,0xf,_0x4752('0xae'));rpcDb['createCustomerFinal'](_0x2bf31d,_0x4752('0xe3'));}else{if(_0x22aefa[_0x4752('0xde')]>=_0x126210[_0x4752('0xe4')]){rpcDb[_0x4752('0xaf')](_0x22aefa,'[callProgressDetectingCustomer][logCongestion]');}else{rpcDb[_0x4752('0xb3')](ut[_0x4752('0xb4')](_0x22aefa,_0x4752('0xde'),_0x126210['dialBusyRetryFrequency']),_0x22aefa[_0x4752('0xb5')],_0x22aefa['activeContact']);}}}else{_0x22aefa['countcongestionretry']++;_0x1e62e1[_0x4752('0xb9')]({'id':_0x22aefa[_0x4752('0xb8')],'field':{'countcongestionretry':_0x22aefa[_0x4752('0xde')]}})[_0x4752('0x86')](function(){_0x1e62e1[_0x4752('0xba')](_0x22aefa,_0x17f4ff,_0x544cf8)[_0x4752('0x86')](function(){});});}});break;case _0x4752('0xe5'):_0x126210['outboundRejectCallsDay']+=0x1;_0x22aefa[_0x4752('0xe6')]+=0x1;_0x22aefa[_0x4752('0xa3')]=ut[_0x4752('0xa4')](_0x22aefa);ut[_0x4752('0x93')](_0x22aefa,0x14,_0x4752('0xe7'));_0x17f4ff=_0x126210[_0x4752('0xe8')];_0x544cf8=_0x126210[_0x4752('0xab')];ami[_0x4752('0x24')](_0x4752('0xe9'),ut[_0x4752('0xc1')](_0x22aefa,_0x4752('0xea')));rpcDb['createCustomerHistory'](_0x22aefa,_0x4752('0xeb'));_0x1e62e1[_0x4752('0xa8')](_0x22aefa,'20',_0x126210)[_0x4752('0x86')](function(_0xd67b57){_0x1ac823=_0xd67b57['additional']==0x1;if(!_0x1ac823){if(ut[_0x4752('0xa4')](_0x22aefa)>=_0x126210[_0x4752('0xac')]){_0x2bf31d=ut['cloneAction'](_0x22aefa,0x14,_0x4752('0xe7'));rpcDb['createCustomerFinal'](_0x2bf31d,_0x4752('0xec'));}else{if(_0x22aefa[_0x4752('0xe6')]>=_0x126210[_0x4752('0xed')]){rpcDb['createCustomerFinal'](_0x22aefa,_0x4752('0xec'));}else{rpcDb[_0x4752('0xb3')](ut[_0x4752('0xb4')](_0x22aefa,'countagentrejectretry',_0x126210[_0x4752('0xe8')]),_0x22aefa['unlockAgent'],_0x22aefa['activeContact']);}}}else{_0x22aefa[_0x4752('0xd6')]++;_0x1e62e1[_0x4752('0xb9')]({'id':_0x22aefa[_0x4752('0xb8')],'field':{'countnoanswerretry':_0x22aefa[_0x4752('0xd6')]}})[_0x4752('0x86')](function(){_0x1e62e1[_0x4752('0xba')](_0x22aefa,_0x17f4ff,_0x544cf8)[_0x4752('0x86')](function(){});});}});break;case _0x4752('0xee'):_0x126210['outboundAbandonedCallsDay']+=0x1;_0x22aefa[_0x4752('0xef')]+=0x1;_0x22aefa[_0x4752('0xa3')]=ut[_0x4752('0xa4')](_0x22aefa);ut[_0x4752('0x93')](_0x22aefa,0xb,_0x4752('0xf0'));rpcDb[_0x4752('0x99')](_0x22aefa,'[callProgressDetectingCustomer][logAbandoned]');_0x1e62e1[_0x4752('0xa8')](_0x22aefa,'11',_0x126210)[_0x4752('0x86')](function(_0x54e69c){_0x1ac823=_0x54e69c[_0x4752('0xa9')]==0x1;if(!_0x1ac823){if(ut['totalGlobal'](_0x22aefa)>=_0x126210[_0x4752('0xac')]){_0x2bf31d=ut['cloneAction'](_0x22aefa,0xf,_0x4752('0xae'));rpcDb[_0x4752('0xaf')](_0x2bf31d,'[callProgressDetectingCustomer][logAbandoned]');}else{if(_0x22aefa[_0x4752('0xf1')]>=_0x126210[_0x4752('0xf2')]){rpcDb[_0x4752('0xaf')](_0x22aefa,'[callProgressDetectingCustomer][logAbandoned]');}else{rpcDb[_0x4752('0xb3')](ut[_0x4752('0xb4')](_0x22aefa,_0x4752('0xef'),_0x126210[_0x4752('0xf3')]),_0x22aefa[_0x4752('0xb5')],_0x22aefa[_0x4752('0xb6')]);}}}else{_0x22aefa[_0x4752('0xd6')]++;_0x1e62e1[_0x4752('0xb9')]({'id':_0x22aefa[_0x4752('0xb8')],'field':{'countnoanswerretry':_0x22aefa[_0x4752('0xd6')]}})[_0x4752('0x86')](function(){_0x1e62e1[_0x4752('0xba')](_0x22aefa,_0x17f4ff,_0x544cf8)['then'](function(){});});}});break;case'18':_0x126210['outboundUnknownCallsDay']+=0x1;_0x22aefa['countmachineretry']+=0x1;_0x22aefa[_0x4752('0xa3')]=ut[_0x4752('0xa4')](_0x22aefa);ut['logCustomer'](_0x22aefa,0x12,_0x372a94[_0x4752('0xf4')]||_0x372a94[_0x4752('0xf5')]);ami[_0x4752('0x24')](_0x4752('0xf6'),ut[_0x4752('0xc1')](_0x22aefa,_0x4752('0xf7')));rpcDb['createCustomerHistory'](_0x22aefa,_0x4752('0xf8'));_0x1e62e1[_0x4752('0xa8')](_0x22aefa,'18',_0x126210)[_0x4752('0x86')](function(_0xb7d42f){_0x1ac823=_0xb7d42f[_0x4752('0xa9')]==0x1;if(!_0x1ac823){if(ut[_0x4752('0xa4')](_0x22aefa)>=_0x126210['dialGlobalMaxRetry']){_0x2bf31d=ut['cloneAction'](_0x22aefa,0x12,'Global');rpcDb['createCustomerFinal'](_0x2bf31d,_0x4752('0xf8'));}else{rpcDb['createCustomerFinal'](_0x22aefa,_0x4752('0xf8'));}}else{_0x22aefa[_0x4752('0xd6')]++;_0x1e62e1[_0x4752('0xb9')]({'id':_0x22aefa[_0x4752('0xb8')],'field':{'countnoanswerretry':_0x22aefa[_0x4752('0xd6')]}})[_0x4752('0x86')](function(){_0x1e62e1['swapAdditionalPhones'](_0x22aefa,_0x17f4ff,_0x544cf8)['then'](function(){});});}});delete this['actions'][_0x372a94['linkedid']];break;case'19':_0x126210[_0x4752('0x41')]+=0x1;_0x22aefa[_0x4752('0xa3')]=ut[_0x4752('0xa4')](_0x22aefa);ut[_0x4752('0x93')](_0x22aefa,0x13,_0x372a94['cause-txt']||_0x372a94[_0x4752('0xf5')]);ami['emit'](_0x4752('0xf6'),ut['buildObj'](_0x22aefa,'amd'));rpcDb[_0x4752('0x99')](_0x22aefa,'[callProgressDetectingCustomer][machine]');_0x1e62e1['verifyAdditionalPhones'](_0x22aefa,'18',_0x126210)[_0x4752('0x86')](function(_0x3cc9cf){_0x1ac823=_0x3cc9cf[_0x4752('0xa9')]==0x1;if(!_0x1ac823){if(ut['totalGlobal'](_0x22aefa)>=_0x126210[_0x4752('0xac')]){_0x2bf31d=ut[_0x4752('0xad')](_0x22aefa,0xf,'Global');rpcDb[_0x4752('0xaf')](_0x2bf31d,_0x4752('0xf9'));}else{rpcDb[_0x4752('0xaf')](_0x22aefa,_0x4752('0xf9'));}}else{_0x22aefa[_0x4752('0xd6')]++;_0x1e62e1[_0x4752('0xb9')]({'id':_0x22aefa[_0x4752('0xb8')],'field':{'countnoanswerretry':_0x22aefa['countnoanswerretry']}})['then'](function(){_0x1e62e1[_0x4752('0xba')](_0x22aefa,_0x17f4ff,_0x544cf8)[_0x4752('0x86')](function(){});});}});delete this[_0x4752('0x14')][_0x372a94['linkedid']];break;default:if(_0x22aefa['dialAnswer']){ut[_0x4752('0x7d')](_0x126210,'[default]');ut[_0x4752('0x7f')](_0x4752('0xfa')+_0x126210['name'],_0x372a94);}_0x126210['outboundUnknownCallsDay']+=0x1;_0x22aefa[_0x4752('0xa3')]=ut['totalGlobal'](_0x22aefa);ut[_0x4752('0x93')](_0x22aefa,0xc,_0x372a94[_0x4752('0xf4')]||_0x372a94[_0x4752('0xf5')]);_0x17f4ff=_0x126210[_0x4752('0xe8')];_0x544cf8=_0x126210['callAdditionalPhoneAfterMin'];rpcDb[_0x4752('0x99')](_0x22aefa,_0x4752('0xfb'));_0x1e62e1[_0x4752('0xa8')](_0x22aefa,'20',_0x126210)['then'](function(_0x611cb0){_0x1ac823=_0x611cb0['additional']==0x1;if(!_0x1ac823){if(ut[_0x4752('0xa4')](_0x22aefa)>=_0x126210['dialGlobalMaxRetry']){_0x2bf31d=ut[_0x4752('0xad')](_0x22aefa,0xf,_0x4752('0xae'));rpcDb[_0x4752('0xaf')](_0x2bf31d,_0x4752('0xfc'));}else{rpcDb[_0x4752('0xaf')](_0x22aefa,'[callProgressDetectingCustomer][logUnknownGlobal]');}delete this[_0x4752('0x14')][_0x372a94[_0x4752('0xb7')]];}else{_0x1e62e1[_0x4752('0xba')](_0x22aefa,_0x17f4ff,_0x544cf8)[_0x4752('0x86')](function(){});}});}if(!(_0x22aefa[_0x4752('0x7c')]&&_0x1f92fa==='16')){ut[_0x4752('0x7b')](_0x126210,_0x4752('0xfd'));logger[_0x4752('0x5c')](_0x4752('0xfe'),_0x22aefa[_0x4752('0xbf')],_0x4752('0xc0'),_0x126210[_0x4752('0x56')],'originated:\x20',_0x126210[_0x4752('0x4e')]);}if(_0x1f92fa!==_0x4752('0xbb')){delete this[_0x4752('0x14')][_0x372a94[_0x4752('0xb7')]];delete this['actions'][_0x372a94[_0x4752('0xff')]];}}};Preview[_0x4752('0xd')][_0x4752('0x100')]=function(_0xcaeb11,_0x12489b,_0x7a8b80){if(_[_0x4752('0x101')](_0x12489b)&&'object'!==typeof _0x12489b){return;}if(_[_0x4752('0x101')](_0x7a8b80)&&_0x4752('0x102')!==typeof _0x7a8b80){return;}switch(_0x7a8b80[_0x4752('0x103')]){case'0':ut[_0x4752('0x104')](_0xcaeb11,0x0,_0x4752('0xa5'));rpcDb[_0x4752('0x105')](_0xcaeb11,_0x4752('0x106'));break;case'3':ut[_0x4752('0x104')](_0xcaeb11,0x3,'NoAnswer');rpcDb[_0x4752('0x105')](_0xcaeb11,_0x4752('0x107'));break;case'5':ut[_0x4752('0x104')](_0xcaeb11,0x5,_0x4752('0xce'));rpcDb[_0x4752('0x105')](_0xcaeb11,_0x4752('0x108'));break;case'8':ut[_0x4752('0x104')](_0xcaeb11,0x8,'Congestion');rpcDb[_0x4752('0x105')](_0xcaeb11,_0x4752('0x109'));break;case'22':ut[_0x4752('0x104')](_0xcaeb11,0x16,'AnswerAGI');rpcDb[_0x4752('0x105')](_0xcaeb11,_0x4752('0x10a'));break;default:ut[_0x4752('0x104')](_0xcaeb11,0xc,_0x7a8b80[_0x4752('0x103')]);rpcDb['createAgentHistory'](_0xcaeb11,'[callProgressDetectingAgent][logCongestion]');}ut[_0x4752('0x7b')](_0x12489b,'[callProgressDetectingAgent]');logger[_0x4752('0x5c')](_0x4752('0x10b'),_0xcaeb11[_0x4752('0xbf')],_0x4752('0xc0'),_0x12489b[_0x4752('0x56')],'originated:\x20',_0x12489b['originated']);delete this['actions'][_0xcaeb11['uniqueid']];};Preview[_0x4752('0xd')][_0x4752('0xa8')]=function(_0x61be3f,_0x1e182c,_0x52ad21){return Promise[_0x4752('0x10c')]()[_0x4752('0x86')](cmHopperAdditionalPhone[_0x4752('0xa8')](_0x61be3f,_0x1e182c,_0x52ad21))['catch'](logger[_0x4752('0x5c')]('[verifyAdditionalPhone]\x20'));};Preview[_0x4752('0xd')]['swapAdditionalPhones']=function(_0x3f9e5e,_0x1926a6,_0xae7d8c){return Promise[_0x4752('0x10c')]()[_0x4752('0x86')](cmHopperAdditionalPhone[_0x4752('0xba')](_0x3f9e5e,_0x1926a6,_0xae7d8c))[_0x4752('0x90')](logger[_0x4752('0x5c')](_0x4752('0x10d')));};Preview[_0x4752('0xd')][_0x4752('0xb9')]=function(_0x39682a){return Promise['resolve']()[_0x4752('0x86')](cmHopperAdditionalPhone['incrementPreviewCounters'](_0x39682a))[_0x4752('0x90')](logger[_0x4752('0x5c')](_0x4752('0x10e')));};Preview[_0x4752('0xd')][_0x4752('0x10f')]=function(_0x159b02,_0x5c5626,_0x1ae218,_0x6dc1ac,_0x59a67f){var _0x7a30cc=this;return new Promise(function(_0x52f14c,_0x50e276){if(_[_0x4752('0x87')](_0x5c5626)||_[_0x4752('0x87')](_0x5c5626[_0x4752('0x110')])||_[_0x4752('0x87')](_0x5c5626[_0x4752('0x111')])||_[_0x4752('0x87')](_0x5c5626['VoiceQueueId'])){_0x50e276(ut[_0x4752('0x4d')](_0x4752('0x112'),_0x6dc1ac,_0x59a67f));return;}var _0x14fee1=uuid['v4']();var _0x16d2ac=_0x7a30cc[_0x4752('0x11')][_0x5c5626[_0x4752('0x72')][_0x4752('0x56')]];var _0x56140d=_0x1ae218?_0x7a30cc[_0x4752('0x15')][_0x1ae218]['id']:undefined;_0x7a30cc[_0x4752('0x14')][_0x14fee1]=new Action(_0x5c5626,_0x16d2ac,_0x14fee1,_0x1ae218,_0x56140d);var _0x5af7ea=_0x7a30cc[_0x4752('0x14')][_0x14fee1];_0x5af7ea[_0x4752('0xb5')]=_0x6dc1ac;_0x5af7ea[_0x4752('0xb6')]=_0x59a67f;_0x5af7ea[_0x4752('0x113')]=_0x1ae218;if(_[_0x4752('0x114')](_0x159b02)){_0x7a30cc['execCall'](_0x5af7ea,_0x16d2ac,_0x5c5626,_0x1ae218)[_0x4752('0x86')](function(_0x2305e5){logger['info']('[Preview][execCall][success]',_0x4752('0x115')+_0x5af7ea[_0x4752('0x73')]+_0x4752('0x116')+_0x5af7ea['idContact'],JSON['stringify'](_0x2305e5));ami[_0x4752('0x24')](_0x4752('0x117'),ut[_0x4752('0xc1')](_0x5af7ea,_0x4752('0x118'),_0x7a30cc['campaignsPreview'][_0x5af7ea[_0x4752('0x73')]]));_0x52f14c(ut['message'](_0x4752('0x119')));})[_0x4752('0x90')](function(_0x2d8f62){ut[_0x4752('0x61')](_0x4752('0x11a'),_0x2d8f62);_0x50e276(ut[_0x4752('0x4d')]('Call\x20failed',_0x6dc1ac,_0x59a67f));});}else{_0x16d2ac['outboundBlacklistCallsDay']+=0x1;ut['logBlacklist'](_0x5af7ea);rpcDb['createHistory'](_0x5af7ea,_0x4752('0x11b'));delete _0x7a30cc['actions'][_0x14fee1];_0x50e276(ut[_0x4752('0x4d')](_0x4752('0x11c'),_0x6dc1ac,_0x59a67f));}});};Preview[_0x4752('0xd')][_0x4752('0xa0')]=function(_0x24c33b){return!_['isNil'](_0x24c33b)&&!_[_0x4752('0x87')](_0x24c33b['name'])&&!_['isNil'](_0x24c33b[_0x4752('0x57')])&&_0x24c33b[_0x4752('0x57')]&&!_[_0x4752('0x87')](this[_0x4752('0x13')][util[_0x4752('0x5a')](_0x4752('0x11d'),_0x24c33b[_0x4752('0x56')])])&&!_[_0x4752('0x87')](this['trunks'][util[_0x4752('0x5a')]('SIP/%s',_0x24c33b[_0x4752('0x56')])][_0x4752('0x11e')])&&(this[_0x4752('0x13')][util[_0x4752('0x5a')](_0x4752('0x11d'),_0x24c33b[_0x4752('0x56')])][_0x4752('0x11e')]===_0x4752('0x11f')||this[_0x4752('0x13')][util[_0x4752('0x5a')](_0x4752('0x11d'),_0x24c33b[_0x4752('0x56')])][_0x4752('0x11e')]===_0x4752('0x120'));};Preview['prototype']['run']=function(_0x4e871c,_0xed6fd3){return this['execRun'](_0x4e871c,_0xed6fd3)[_0x4752('0x86')](function(_0x118360){return _[_0x4752('0x75')](_0x118360,[_0x4752('0x4d')]);})[_0x4752('0x90')](function(_0x1e1d1a){if(_0x1e1d1a[_0x4752('0x121')]){rpcDb[_0x4752('0x122')](_0x4e871c);}if(_0x1e1d1a['active']){rpcDb['disableContact'](_0x4e871c);}throw _['pick'](_0x1e1d1a,[_0x4752('0x4d')]);});};Preview[_0x4752('0xd')][_0x4752('0x123')]=function(_0x7017,_0xd2a770){var _0x2d3d1f=this;var _0x47f07e,_0x536be6;return rpcDb[_0x4752('0x124')](_0x7017)[_0x4752('0x86')](function(_0x4c4046){if(!_['isNil'](_0x4c4046[0x0])){_0x536be6=_0x4c4046[0x0][_0x4752('0x125')]?![]:!![];_0x47f07e=_0x4c4046[0x0]['recallme']?!![]:![];_0x47f07e=_0xd2a770?!![]:_0x47f07e;}var _0x47e33e=_0x2d3d1f[_0x4752('0x126')](_0x4c4046);if(_0x47e33e[_0x4752('0x127')]){rpcDb[_0x4752('0x128')](_[_0x4752('0x75')](_0x4c4046[0x0],[_0x4752('0x78'),_0x4752('0x111')]))[_0x4752('0x86')](function(_0x5d9d1c){_0x2d3d1f[_0x4752('0x10f')](_0x5d9d1c,_0x4c4046[0x0],_0xd2a770,_0x536be6,_0x47f07e)['then'](function(_0x16cdc6){return _0x16cdc6;})[_0x4752('0x90')](function(_0x275d01){throw _0x275d01;});})['catch'](function(_0x40e3a8){ut['logger'](_0x4752('0x129'),_0x40e3a8);throw ut[_0x4752('0x4d')](_0x4752('0x12a'),_0x536be6,_0x47f07e);});}else{throw ut[_0x4752('0x4d')](_0x47e33e[_0x4752('0x4d')],_0x536be6,_0x47f07e);}})[_0x4752('0x90')](function(_0x2d6361){ut[_0x4752('0x61')]('[Preview][getContactPreview]',_0x2d6361);throw ut[_0x4752('0x4d')](_0x4752('0x12a'),![],!![]);});};Preview[_0x4752('0xd')][_0x4752('0x126')]=function(_0x33cc8f){if(_[_0x4752('0x87')](_0x33cc8f)||_['isEmpty'](_0x33cc8f)||!_[_0x4752('0x87')](_0x33cc8f[0x0][_0x4752('0x8c')])&&_[_0x4752('0x87')](_0x33cc8f[0x0][_0x4752('0x8c')][_0x4752('0x56')])){ut[_0x4752('0x61')](_0x4752('0x12b'),_0x33cc8f);return{'isValid':![],'message':_0x4752('0x12c')};}var _0xe89f33=this[_0x4752('0x11')][_0x33cc8f[0x0][_0x4752('0x72')][_0x4752('0x56')]];_0xe89f33[_0x4752('0x4d')]=_0x4752('0xa1');if(_['isNil'](_0xe89f33)){ut[_0x4752('0x61')]('[Preview][validateContact][Empty\x20Campaign]',_0xe89f33);return{'isValid':![],'message':'Empty\x20Campaign'};}if(!this['isTrunkReachable'](_0xe89f33[_0x4752('0x55')])){ut[_0x4752('0x61')]('[Preview][validateContact][Trunk\x20not\x20working\x20correctly]',_0x4752('0x12d')+_0xe89f33[_0x4752('0x56')]+_0x4752('0x12e'));if(!this[_0x4752('0xa0')](_0xe89f33[_0x4752('0x12f')])){ut[_0x4752('0x61')](_0x4752('0x130'),_0xe89f33[_0x4752('0x56')]+_0x4752('0x131'));return{'isValid':![],'message':_0x4752('0x132')};}}if(!ut[_0x4752('0x9e')](_0xe89f33[_0x4752('0x6c')])){ut[_0x4752('0x61')](_0x4752('0x133'),_0xe89f33['name']+_0x4752('0x134'));return{'isValid':![],'message':'campaign\x20Name:\x20'+_0xe89f33[_0x4752('0x56')]+_0x4752('0x134')};}return{'isValid':!![],'message':_0x4752('0x135')};};Preview[_0x4752('0xd')]['execCall']=function(_0x5a3c78,_0x4bc6df,_0x47b819,_0x777cd){var _0x1132eb=this;return new Promise(function(_0x526e88,_0x2d402b){var _0x1115dd=_0x5a3c78['uniqueid'];var _0xb2d77=_0x1132eb[_0x4752('0xa0')](_0x4bc6df[_0x4752('0x55')])?util[_0x4752('0x5a')]('SIP/%s/%s%s',_0x4bc6df[_0x4752('0x55')][_0x4752('0x56')],_['isNil'](_0x4bc6df['dialPrefix'])?'':_0x4bc6df[_0x4752('0x35')][_0x4752('0x136')]()||'',_0x4bc6df['dialCutDigit']>0x0?_0x47b819['phone'][_0x4752('0x137')](_0x4bc6df[_0x4752('0x138')]):_0x47b819['phone']):util[_0x4752('0x5a')](_0x4752('0x139'),_[_0x4752('0x87')](_0x4bc6df[_0x4752('0x12f')])?_0x4bc6df['Trunk'][_0x4752('0x56')]:_0x4bc6df[_0x4752('0x12f')][_0x4752('0x56')],_['isNil'](_0x4bc6df[_0x4752('0x35')])?'':_0x4bc6df['dialPrefix']['trim']()||'',_0x4bc6df['dialCutDigit']>0x0?_0x47b819[_0x4752('0x111')]['substring'](_0x4bc6df[_0x4752('0x138')]):_0x47b819[_0x4752('0x111')]);var _0x216531=_0x1132eb[_0x4752('0xa0')](_0x4bc6df[_0x4752('0x55')])?ut[_0x4752('0x13a')](_0x4bc6df[_0x4752('0x55')][_0x4752('0x13b')],_0x4bc6df[_0x4752('0x13c')],_0x4bc6df[_0x4752('0x13d')]>0x0?ut[_0x4752('0x13e')](_0x4bc6df[_0x4752('0x33')],_0x4bc6df['dialRandomLastDigitCallerIdNumber']):_0x4bc6df[_0x4752('0x33')]):ut[_0x4752('0x13a')](_['isNil'](_0x4bc6df[_0x4752('0x12f')])?_0x4bc6df['Trunk'][_0x4752('0x13b')]:_0x4bc6df[_0x4752('0x12f')][_0x4752('0x13b')],_0x4bc6df[_0x4752('0x13c')],_0x4bc6df[_0x4752('0x13d')]>0x0?ut[_0x4752('0x13e')](_0x4bc6df[_0x4752('0x33')],_0x4bc6df[_0x4752('0x13d')]):_0x4bc6df[_0x4752('0x33')]);if(_0x216531){_0x5a3c78[_0x4752('0x13f')]=ut[_0x4752('0x140')](_0x216531);_0x5a3c78[_0x4752('0x141')]=ut[_0x4752('0x142')](_0x216531);}var _0x44a12a=ut[_0x4752('0x143')](_0x4bc6df,_0x47b819,_0xb2d77,_0x216531,_0x1115dd,_0x5a3c78);_[_0x4752('0x144')](_0x5a3c78,ut['toLowerVariables'](_0x44a12a));_0x5a3c78['starttime']=moment()[_0x4752('0x5a')](_0x4752('0xbc'));_0x4bc6df[_0x4752('0x145')]=_0x44a12a;ami[_0x4752('0x79')](ut['variablesAction'](_0x5a3c78,_0x4bc6df,_0x44a12a,_0x5a3c78[_0x4752('0xb6')],_0x777cd))['then'](function(_0x2370fa){_0x4bc6df['originated']+=0x1;logger[_0x4752('0x5c')](_0x4752('0x146'),_0x1115dd,_0x4752('0xc0'),_0x4bc6df[_0x4752('0x56')],_0x4752('0x147'),_0x4bc6df[_0x4752('0x4e')]);_0x526e88(_0x2370fa);})[_0x4752('0x90')](function(_0x4b8ae7){ut[_0x4752('0x104')](_0x5a3c78,0xe,_0x4752('0x148'));rpcDb[_0x4752('0x105')](_0x5a3c78,_0x4752('0x149'));_0x2d402b(_0x4b8ae7);});});};Preview[_0x4752('0xd')]['syncNewExten']=function(_0xb83141){if(this['actions'][_0xb83141['linkedid']]){this[_0x4752('0x14')][_0xb83141[_0x4752('0xb7')]][_0x4752('0x7a')]=_0xb83141[_0x4752('0x7a')];}};Preview[_0x4752('0xd')][_0x4752('0x14a')]=function(_0x347f2e){var _0x2d112b=this;var _0x16d32a=this[_0x4752('0x14')][_0x347f2e[_0x4752('0x14b')]];if(_0x16d32a){if(_0x16d32a[_0x4752('0x113')]&&this[_0x4752('0x15')][_0x16d32a[_0x4752('0x113')]]){ut[_0x4752('0x14c')](_0x16d32a,this[_0x4752('0x15')][_0x16d32a['lookAgent']][_0x4752('0x56')],this['agents'][_0x16d32a[_0x4752('0x113')]]['id']);}var _0xf12462=_[_0x4752('0x14d')](_0x16d32a);_0xf12462[_0x4752('0xbd')]=moment()[_0x4752('0x5a')](_0x4752('0xbc'));var _0x2bc636=_0x2d112b[_0x4752('0x11')][_0x16d32a[_0x4752('0x73')]];if(ut[_0x4752('0x14e')](_0x347f2e['response'])){if(_0x16d32a[_0x4752('0xb5')]){rpcDb[_0x4752('0x122')](_0x16d32a[_0x4752('0xb8')]);}if(_0x16d32a['activeContact']){rpcDb[_0x4752('0x91')](_0x16d32a[_0x4752('0xb8')]);}ami[_0x4752('0x24')]('custom:agentringnoanswer',ut[_0x4752('0xc1')](_0x16d32a,_0x4752('0x14f'),this[_0x4752('0x11')][_0x16d32a['queue']]));this[_0x4752('0x100')](_0xf12462,_0x2bc636,_0x347f2e);}else{_0x16d32a[_0x4752('0x92')]=moment()['format'](_0x4752('0xbc'));ut['logAgent'](_0xf12462,0x4,'Answer');rpcDb[_0x4752('0x105')](_0xf12462,_0x4752('0x150'));}}};Preview[_0x4752('0xd')][_0x4752('0x19')]=function(_0xb398c4){var _0x44de70=this[_0x4752('0x14')][_0xb398c4[_0x4752('0xb7')]];var _0x816c8;if(_0x44de70){_0x816c8=this['campaignsPreview'][_0x44de70['queue']];logger[_0x4752('0x5c')]('[syncHangup][talking]',_0xb398c4[_0x4752('0xb7')],_0x4752('0xc0'),_0x816c8['name'],_0x4752('0x74'),_0x816c8['pTalking']);}if(this[_0x4752('0x14')][_0xb398c4[_0x4752('0xb7')]]&&_0xb398c4[_0x4752('0xb7')]!==_0xb398c4[_0x4752('0xbf')]){if(_0xb398c4[_0x4752('0x151')]==='16'&&this[_0x4752('0x14')][_0xb398c4['linkedid']][_0x4752('0x7c')]){this[_0x4752('0xa2')](_0xb398c4,_0xb398c4[_0x4752('0xb7')],_0xb398c4[_0x4752('0x151')]);}else if(this['actions'][_0xb398c4['linkedid']][_0x4752('0x7c')]){logger[_0x4752('0x5c')]('[syncHangup][talking][cause]',_0xb398c4[_0x4752('0xb7')],_0xb398c4['cause'],_0x4752('0xc0'),_0x816c8[_0x4752('0x56')],_0x4752('0x74'),_0x816c8[_0x4752('0x2a')]);this['callProgressDetectingCustomer'](_0xb398c4,_0xb398c4[_0x4752('0xb7')],_0xb398c4[_0x4752('0x151')]);}}else if(_0x44de70&&_[_0x4752('0x87')](_0x44de70[_0x4752('0x152')])&&_0x816c8[_0x4752('0x153')]&&_0xb398c4[_0x4752('0xb7')]===_0xb398c4[_0x4752('0xbf')]&&_[_0x4752('0x87')](_0xb398c4[_0x4752('0x103')])&&_0xb398c4['cause']==='16'&&_0xb398c4[_0x4752('0x154')]==='6'&&_['isUndefined'](_0x44de70['transfer'])){if(_0x44de70[_0x4752('0xb5')]){rpcDb[_0x4752('0x122')](_0x44de70[_0x4752('0xb8')]);}if(_0x44de70[_0x4752('0xb6')]){rpcDb[_0x4752('0x91')](_0x44de70[_0x4752('0xb8')]);}_0xb398c4[_0x4752('0x103')]='22';this[_0x4752('0x100')](_0x44de70,_0x816c8,_0xb398c4);}else if(_0x44de70&&_0x44de70[_0x4752('0x155')]){if(_0xb398c4[_0x4752('0x151')]==='16'&&this[_0x4752('0x14')][_0xb398c4[_0x4752('0xb7')]]['dialAnswer']){logger['info'](_0x4752('0x156'),_0xb398c4[_0x4752('0xb7')],_0xb398c4[_0x4752('0x151')],_0x4752('0xc0'),_0x816c8[_0x4752('0x56')],_0x4752('0x74'),_0x816c8[_0x4752('0x2a')]);this['callProgressDetectingCustomer'](_0xb398c4,_0xb398c4[_0x4752('0xb7')],_0xb398c4['cause']);}else if(this[_0x4752('0x14')][_0xb398c4[_0x4752('0xb7')]][_0x4752('0x7c')]){logger['info'](_0x4752('0x157'),_0xb398c4['linkedid'],_0xb398c4[_0x4752('0x151')],_0x4752('0xc0'),_0x816c8[_0x4752('0x56')],_0x4752('0x74'),_0x816c8[_0x4752('0x2a')]);this[_0x4752('0xa2')](_0xb398c4,_0xb398c4['linkedid'],_0xb398c4['cause']);}}};Preview[_0x4752('0xd')][_0x4752('0x1c')]=function(_0x41a3f3){if(this[_0x4752('0x14')][_0x41a3f3[_0x4752('0xff')]]&&_0x41a3f3[_0x4752('0xff')]!==_0x41a3f3[_0x4752('0x158')]){this[_0x4752('0xa2')](_0x41a3f3,_0x41a3f3['destlinkedid'],_0x41a3f3['dialstatus']);}};Preview[_0x4752('0xd')][_0x4752('0x1b')]=function(_0x27059a){if(this[_0x4752('0x14')][_0x27059a['linkedid']]&&_0x27059a[_0x4752('0xb7')]!==_0x27059a['uniqueid']&&!this[_0x4752('0x14')][_0x27059a[_0x4752('0xb7')]][_0x4752('0x7c')]){if(_0x27059a[_0x4752('0x151')]==='1'){this[_0x4752('0xa2')](_0x27059a,_0x27059a['linkedid'],_0x27059a['cause']);}}};Preview[_0x4752('0xd')][_0x4752('0x159')]=function(_0x7f1f76,_0x56affb,_0x7569b2){if(this[_0x4752('0x14')][_0x7f1f76]){if(_[_0x4752('0x87')](this[_0x4752('0x14')][_0x7f1f76][_0x4752('0x145')])){this[_0x4752('0x14')][_0x7f1f76]['variables']={};}this[_0x4752('0x14')][_0x7f1f76][_0x4752('0x145')][_0x56affb]=_0x7569b2;}};Preview[_0x4752('0xd')][_0x4752('0x1f')]=function(_0x4fc075){try{if(!_[_0x4752('0x87')](_0x4fc075)){if(ut[_0x4752('0x15a')](_[_0x4752('0x15b')](_0x4fc075[_0x4752('0x15c')])[0x0])){this['addVariable'](_0x4fc075[_0x4752('0xbf')],_[_0x4752('0x15b')](_0x4fc075[_0x4752('0x15c')])[0x0],_0x4fc075[_0x4752('0x15d')]);}}}catch(_0x365ae1){logger[_0x4752('0x15e')](_0x4752('0x15f'),util[_0x4752('0x160')](_0x365ae1,{'showHidden':![],'depth':null}));}};Preview[_0x4752('0xd')][_0x4752('0x161')]=function(_0x313693){if(_0x313693){if(this[_0x4752('0x14')][_0x313693[_0x4752('0x162')]]){this[_0x4752('0x14')][_0x313693[_0x4752('0x162')]][_0x4752('0x155')]=!![];}}};Preview[_0x4752('0xd')][_0x4752('0x22')]=function(_0x19f26d){if(_0x19f26d){if(this[_0x4752('0x14')][_0x19f26d[_0x4752('0x163')]]){this[_0x4752('0x14')][_0x19f26d[_0x4752('0x163')]]['transfer']=!![];}}};module[_0x4752('0x164')]=Preview;
\ No newline at end of file
index 9a30fd8..0155617 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ef2=['util','bluebird','preview','lodash','../rpc/cmHopperFinal','../rpc/voiceQueueRt','../rpc/agentReportPreview','../rpc/voiceQueueReport','error','inspect','resolve','then','catch','[createHistory]\x20','createHistory','[moveContactManagedDialer]\x20','[checkIsBlackList]\x20','getContactPreview','[getContactPreview]\x20','createAgentHistory','createCustomerHistory','rescheduleContact','UserId','active','[rescheduleContact]\x20','countReScheduled','[countReScheduled]\x20','unlockContact','[unlockContact]\x20','disableContact','crateCustomerReportQueue','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','queuecallerleaveAt','answertime','queuecallercompleteAt','endtime','connectedlinename','membername','context','from-sip','exten','holdtime','assigned','queuecallerexitreason','COMPLETED','create','[voiceQueueReport]\x20','getContactRecallMe','[GetContactRecallMe]\x20','rescheduleContactInQueue','[rescheduleContactInQueue]\x20'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0x6ef2,0x181));var _0x26ef=function(_0x359e6a,_0x438c6c){_0x359e6a=_0x359e6a-0x0;var _0x420c6b=_0x6ef2[_0x359e6a];return _0x420c6b;};'use strict';var util=require(_0x26ef('0x0'));var BPromise=require(_0x26ef('0x1'));var logger=require('../../../config/logger')(_0x26ef('0x2'));var _=require(_0x26ef('0x3'));var cmHopper=require('../rpc/cmHopper');var cmHopperFinal=require(_0x26ef('0x4'));var cmHopperHistory=require('../rpc/cmHopperHistory');var cmHopperBlack=require('../rpc/cmHopperBlack');var voiceQueueRt=require(_0x26ef('0x5'));var agentReportPreview=require(_0x26ef('0x6'));var voiceQueueReport=require(_0x26ef('0x7'));function loggerCatch(_0x2095a4){return function(_0x3c7dea){logger[_0x26ef('0x8')](_0x2095a4,util[_0x26ef('0x9')](_0x3c7dea,{'showHidden':![],'depth':null}));};}function create(_0x33cf1e){return BPromise[_0x26ef('0xa')]()[_0x26ef('0xb')](cmHopperHistory['createHistory'](_0x33cf1e))[_0x26ef('0xc')](loggerCatch(_0x26ef('0xd')));}function createAgent(_0x5bab95){return BPromise[_0x26ef('0xa')]()[_0x26ef('0xb')](agentReportPreview[_0x26ef('0xe')](_0x5bab95))[_0x26ef('0xc')](loggerCatch('[createHistory]\x20'));}function moveContact(_0x3b8a8a){return BPromise[_0x26ef('0xa')]()['then'](cmHopper['moveContactManagedDialer'](_0x3b8a8a,!![]))[_0x26ef('0xc')](loggerCatch(_0x26ef('0xf')));}exports['checkIsBlackList']=function(_0x1a53aa){return BPromise[_0x26ef('0xa')]()[_0x26ef('0xb')](cmHopperBlack['checkIsBlackList'](_0x1a53aa))['catch'](loggerCatch(_0x26ef('0x10')));};exports[_0x26ef('0x11')]=function(_0x5e1d3e){return BPromise[_0x26ef('0xa')]()[_0x26ef('0xb')](cmHopper[_0x26ef('0x11')](_0x5e1d3e))[_0x26ef('0xc')](loggerCatch(_0x26ef('0x12')));};exports[_0x26ef('0xe')]=function(_0x316002,_0x659f3){create(_0x316002)['catch'](loggerCatch(_0x659f3));moveContact(_0x316002)['catch'](loggerCatch(_0x659f3));};exports[_0x26ef('0x13')]=function(_0x3b6619,_0x4c9e55){createAgent(_0x3b6619)[_0x26ef('0xc')](loggerCatch(_0x4c9e55));};exports[_0x26ef('0x14')]=function(_0x24bae6,_0x3270dc){create(_0x24bae6)[_0x26ef('0xc')](loggerCatch(_0x3270dc));};exports['createCustomerFinal']=function(_0x57ca40,_0x21f150){moveContact(_0x57ca40)['catch'](loggerCatch(_0x21f150));};exports[_0x26ef('0x15')]=function(_0x1769b0,_0x9011c5,_0x370505){if(_0x9011c5){_0x1769b0[_0x26ef('0x16')]=null;}if(_0x370505){_0x1769b0[_0x26ef('0x17')]=![];}return BPromise[_0x26ef('0xa')]()[_0x26ef('0xb')](cmHopper[_0x26ef('0x15')](_0x1769b0))[_0x26ef('0xc')](loggerCatch(_0x26ef('0x18')));};exports[_0x26ef('0x19')]=function(_0x49cd87){return BPromise['resolve']()[_0x26ef('0xb')](cmHopper[_0x26ef('0x19')](_0x49cd87))['catch'](loggerCatch(_0x26ef('0x1a')));};exports[_0x26ef('0x1b')]=function(_0x1ae9b8){return BPromise['resolve']()[_0x26ef('0xb')](cmHopper['unlockContact']({'UserId':null},_0x1ae9b8,0x1))['catch'](loggerCatch(_0x26ef('0x1c')));};exports[_0x26ef('0x1d')]=function(_0x1d7a23){return BPromise[_0x26ef('0xa')]()['then'](cmHopper[_0x26ef('0x1b')]({'active':![]},_0x1d7a23,0x1))[_0x26ef('0xc')](loggerCatch('[activeContact]\x20'));};exports[_0x26ef('0x1e')]=function(_0x134205){var _0x5a4df5={};_0x5a4df5['type']=_0x134205['type'];_0x5a4df5['uniqueid']=_0x134205[_0x26ef('0x1f')];_0x5a4df5['calleridnum']=_0x134205[_0x26ef('0x20')];_0x5a4df5[_0x26ef('0x21')]=_0x134205['calleridname'];_0x5a4df5[_0x26ef('0x22')]=_0x134205[_0x26ef('0x22')];_0x5a4df5[_0x26ef('0x23')]=_0x134205['answertime'];_0x5a4df5[_0x26ef('0x24')]=_0x134205[_0x26ef('0x25')];_0x5a4df5['queuecallercomplete']=0x1;_0x5a4df5[_0x26ef('0x26')]=_0x134205[_0x26ef('0x27')];_0x5a4df5[_0x26ef('0x28')]=_0x134205[_0x26ef('0x29')];_0x5a4df5[_0x26ef('0x2a')]=_0x26ef('0x2b');_0x5a4df5[_0x26ef('0x2c')]='xcally-motion-preview';_0x5a4df5[_0x26ef('0x2d')]=0x0;_0x5a4df5[_0x26ef('0x2e')]=0x1;_0x5a4df5['lastAssignedTo']=_0x134205[_0x26ef('0x29')];_0x5a4df5[_0x26ef('0x2f')]=_0x26ef('0x30');return BPromise['resolve']()[_0x26ef('0xb')](voiceQueueReport[_0x26ef('0x31')](_0x5a4df5))[_0x26ef('0xc')](loggerCatch(_0x26ef('0x32')));};exports['getContactRecallMe']=function(_0x5af928,_0x4c834d){return BPromise[_0x26ef('0xa')]()['then'](cmHopper[_0x26ef('0x33')](_0x5af928,_0x4c834d))[_0x26ef('0xc')](loggerCatch(_0x26ef('0x34')));};exports[_0x26ef('0x35')]=function(_0x508997){return BPromise['resolve']()[_0x26ef('0xb')](cmHopper[_0x26ef('0x15')](_0x508997,!![],!![]))[_0x26ef('0xc')](loggerCatch(_0x26ef('0x36')));};
\ No newline at end of file
+var _0x378b=['unlockContact','[unlockContact]\x20','[activeContact]\x20','crateCustomerReportQueue','type','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','answertime','queuecallercomplete','endtime','connectedlinename','from-sip','exten','xcally-motion-preview','assigned','lastAssignedTo','membername','queuecallerexitreason','COMPLETED','create','getContactRecallMe','[GetContactRecallMe]\x20','rescheduleContactInQueue','rescheduleContact','[rescheduleContactInQueue]\x20','util','bluebird','../../../config/logger','preview','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/voiceQueueRt','../rpc/agentReportPreview','../rpc/voiceQueueReport','error','inspect','resolve','then','createHistory','catch','[createHistory]\x20','[moveContactManagedDialer]\x20','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview','createAgentHistory','createCustomerHistory','createCustomerFinal','UserId','active','[rescheduleContact]\x20','countReScheduled','[countReScheduled]\x20'];(function(_0x11ff61,_0x1ae499){var _0x2ee408=function(_0x45e419){while(--_0x45e419){_0x11ff61['push'](_0x11ff61['shift']());}};_0x2ee408(++_0x1ae499);}(_0x378b,0xc7));var _0xb378=function(_0x143551,_0x726d9){_0x143551=_0x143551-0x0;var _0x37ae5d=_0x378b[_0x143551];return _0x37ae5d;};'use strict';var util=require(_0xb378('0x0'));var BPromise=require(_0xb378('0x1'));var logger=require(_0xb378('0x2'))(_0xb378('0x3'));var _=require('lodash');var cmHopper=require(_0xb378('0x4'));var cmHopperFinal=require('../rpc/cmHopperFinal');var cmHopperHistory=require(_0xb378('0x5'));var cmHopperBlack=require(_0xb378('0x6'));var voiceQueueRt=require(_0xb378('0x7'));var agentReportPreview=require(_0xb378('0x8'));var voiceQueueReport=require(_0xb378('0x9'));function loggerCatch(_0x29b4b8){return function(_0x1b3d0b){logger[_0xb378('0xa')](_0x29b4b8,util[_0xb378('0xb')](_0x1b3d0b,{'showHidden':![],'depth':null}));};}function create(_0x570e2a){return BPromise[_0xb378('0xc')]()[_0xb378('0xd')](cmHopperHistory[_0xb378('0xe')](_0x570e2a))[_0xb378('0xf')](loggerCatch(_0xb378('0x10')));}function createAgent(_0x122369){return BPromise[_0xb378('0xc')]()['then'](agentReportPreview[_0xb378('0xe')](_0x122369))['catch'](loggerCatch(_0xb378('0x10')));}function moveContact(_0x8f1b00){return BPromise[_0xb378('0xc')]()[_0xb378('0xd')](cmHopper['moveContactManagedDialer'](_0x8f1b00,!![]))[_0xb378('0xf')](loggerCatch(_0xb378('0x11')));}exports[_0xb378('0x12')]=function(_0x2842fe){return BPromise[_0xb378('0xc')]()[_0xb378('0xd')](cmHopperBlack[_0xb378('0x12')](_0x2842fe))['catch'](loggerCatch(_0xb378('0x13')));};exports[_0xb378('0x14')]=function(_0x489731){return BPromise[_0xb378('0xc')]()['then'](cmHopper['getContactPreview'](_0x489731))[_0xb378('0xf')](loggerCatch('[getContactPreview]\x20'));};exports[_0xb378('0xe')]=function(_0x512972,_0x30c12f){create(_0x512972)[_0xb378('0xf')](loggerCatch(_0x30c12f));moveContact(_0x512972)[_0xb378('0xf')](loggerCatch(_0x30c12f));};exports[_0xb378('0x15')]=function(_0x3e2bf2,_0x454133){createAgent(_0x3e2bf2)[_0xb378('0xf')](loggerCatch(_0x454133));};exports[_0xb378('0x16')]=function(_0x2483e5,_0x337ebd){create(_0x2483e5)[_0xb378('0xf')](loggerCatch(_0x337ebd));};exports[_0xb378('0x17')]=function(_0x3ad353,_0x4f7cd0){moveContact(_0x3ad353)[_0xb378('0xf')](loggerCatch(_0x4f7cd0));};exports['rescheduleContact']=function(_0x508bf6,_0x217eda,_0x2d1305){if(_0x217eda){_0x508bf6[_0xb378('0x18')]=null;}if(_0x2d1305){_0x508bf6[_0xb378('0x19')]=![];}return BPromise[_0xb378('0xc')]()[_0xb378('0xd')](cmHopper['rescheduleContact'](_0x508bf6))['catch'](loggerCatch(_0xb378('0x1a')));};exports[_0xb378('0x1b')]=function(_0x43c50b){return BPromise[_0xb378('0xc')]()[_0xb378('0xd')](cmHopper[_0xb378('0x1b')](_0x43c50b))[_0xb378('0xf')](loggerCatch(_0xb378('0x1c')));};exports[_0xb378('0x1d')]=function(_0x26bfa6){return BPromise[_0xb378('0xc')]()[_0xb378('0xd')](cmHopper[_0xb378('0x1d')]({'UserId':null},_0x26bfa6,0x1))[_0xb378('0xf')](loggerCatch(_0xb378('0x1e')));};exports['disableContact']=function(_0x17cce3){return BPromise[_0xb378('0xc')]()[_0xb378('0xd')](cmHopper[_0xb378('0x1d')]({'active':![]},_0x17cce3,0x1))['catch'](loggerCatch(_0xb378('0x1f')));};exports[_0xb378('0x20')]=function(_0x4675fa){var _0x237ab4={};_0x237ab4[_0xb378('0x21')]=_0x4675fa[_0xb378('0x21')];_0x237ab4[_0xb378('0x22')]=_0x4675fa[_0xb378('0x22')];_0x237ab4['calleridnum']=_0x4675fa[_0xb378('0x23')];_0x237ab4[_0xb378('0x24')]=_0x4675fa['calleridname'];_0x237ab4['queue']=_0x4675fa[_0xb378('0x25')];_0x237ab4[_0xb378('0x26')]=_0x4675fa[_0xb378('0x27')];_0x237ab4['queuecallerleaveAt']=_0x4675fa[_0xb378('0x27')];_0x237ab4[_0xb378('0x28')]=0x1;_0x237ab4['queuecallercompleteAt']=_0x4675fa[_0xb378('0x29')];_0x237ab4[_0xb378('0x2a')]=_0x4675fa['membername'];_0x237ab4['context']=_0xb378('0x2b');_0x237ab4[_0xb378('0x2c')]=_0xb378('0x2d');_0x237ab4['holdtime']=0x0;_0x237ab4[_0xb378('0x2e')]=0x1;_0x237ab4[_0xb378('0x2f')]=_0x4675fa[_0xb378('0x30')];_0x237ab4[_0xb378('0x31')]=_0xb378('0x32');return BPromise[_0xb378('0xc')]()['then'](voiceQueueReport[_0xb378('0x33')](_0x237ab4))[_0xb378('0xf')](loggerCatch('[voiceQueueReport]\x20'));};exports[_0xb378('0x34')]=function(_0x3cd0d4,_0x32357a){return BPromise[_0xb378('0xc')]()['then'](cmHopper[_0xb378('0x34')](_0x3cd0d4,_0x32357a))[_0xb378('0xf')](loggerCatch(_0xb378('0x35')));};exports[_0xb378('0x36')]=function(_0x1dd36a){return BPromise[_0xb378('0xc')]()[_0xb378('0xd')](cmHopper[_0xb378('0x37')](_0x1dd36a,!![],!![]))[_0xb378('0xf')](loggerCatch(_0xb378('0x38')));};
\ No newline at end of file
index 0ee3ae1..b5550f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02b2=['IsNotLoggedIn','name','queue','motionChannel','voice','mandatoryDisposition','buildObj','buildAcw','interface','agentReadyId','not_inuse','status','push','createBody','CampaignId','type','campaigntype','dialAnswer','calleridname','countbusyretry','countnoanswerretry','countglobal','callback','callbackuniqueid','callbackat','recallme','xmd-voicequeueid','xmd-queue','xmd-phone','xmd-dialurl','xmd-dialtimeout','xmd-dialoptions','xmd-contactid','xmd-cdrtype','xmd-callerid','xmd-agi','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrttbridged','rtpaudioqosrtt','bridgepeer','bridgepvtcallid','\x5cw{0,','pow','random','match','extractCalleridNumber','noanswer','variables','keys','forEach','toLowerCase','util','moment','../../../../config/logger','env','XCALLY_IP_AGI','127.0.0.1','milliseconds','diff','seconds','error','inspect','loggerError','logger2','info','getCallerId','string','isEmpty','format','\x22%s\x22\x20<%s>','isUndefined','\x22\x22\x20<>','isActive','addVariables','Queue','calleridnum','dialer','VoiceQueueId','dialQueueProject2','monitor_format','dialPreviewUrl','dialQueueProject','\x22agi://%s/square,%s\x22','NONE','originatecalleridnum','xcally-motion-preview','Call-Type:\x20PREVIEW','_XCALLY_MIXMONITOR_FORMAT','Contact','createdAt','%s%s','XMD-','toUpper','toLowerVariables','hasOwnProperty','isNil','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','state','statedesc','starttime','responsetime','logAgent','ringtime','logLookAgent','membername','UserId','endtime','answertime','isFailure','RECALL','BOOKED','uniqueid','originate','channelAgent','timeout','totalGlobal','clone','Global','scheduledAt','active','scheduledat','minutes','ContactId','ListId','decrementTalkink','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x02b2,0xbf));var _0x202b=function(_0x58015e,_0x42dc09){_0x58015e=_0x58015e-0x0;var _0x53b4bd=_0x02b2[_0x58015e];return _0x53b4bd;};'use strict';var util=require(_0x202b('0x0'));var _=require('lodash');var moment=require(_0x202b('0x1'));var logger=require(_0x202b('0x2'))('preview');var ipAgi=process[_0x202b('0x3')][_0x202b('0x4')]||_0x202b('0x5');function getSeconds(_0x43458e,_0x3a530c){var _0x511d46=moment(_0x43458e)['milliseconds'](0x0);var _0x3e06cd=moment(_0x3a530c)[_0x202b('0x6')](0x0);return _0x511d46[_0x202b('0x7')](_0x3e06cd,_0x202b('0x8'));}exports['loggerCatch']=function(_0x2ee266){return function(_0x4f5a7b){logger[_0x202b('0x9')](_0x2ee266,util[_0x202b('0xa')](_0x4f5a7b,{'showHidden':![],'depth':null}));};};exports['logger']=function(_0x5a42c3,_0x379987){logger['info'](_0x5a42c3,util['inspect'](_0x379987,{'showHidden':![],'depth':null}));};exports[_0x202b('0xb')]=function(_0x3b6d45,_0x3f8c86){logger[_0x202b('0x9')](_0x3b6d45,util[_0x202b('0xa')](_0x3f8c86,{'showHidden':![],'depth':null}));};exports[_0x202b('0xc')]=function(_0x5dff6f){return function(_0x4fd2c1){logger[_0x202b('0xd')](_0x5dff6f,util[_0x202b('0xa')](_0x4fd2c1,{'showHidden':![],'depth':null}));};};exports['message']=function(_0x44b71b,_0x1cb58f,_0x146f86){return{'message':_0x44b71b,'unlock':_0x1cb58f,'active':_0x146f86};};exports[_0x202b('0xe')]=function(_0x5a7198,_0x4fdfba,_0x2b0184){if(!_['isUndefined'](_0x2b0184)&&_0x202b('0xf')===typeof _0x2b0184&&!_['isEmpty'](_0x2b0184)){if(!_['isUndefined'](_0x4fdfba)&&_0x202b('0xf')===typeof _0x4fdfba&&!_[_0x202b('0x10')](_0x4fdfba)){return util[_0x202b('0x11')](_0x202b('0x12'),_0x4fdfba,_0x2b0184);}return util[_0x202b('0x11')](_0x202b('0x12'),_0x2b0184,_0x2b0184);}if(!_[_0x202b('0x13')](_0x5a7198)&&'string'===typeof _0x5a7198&&!_['isEmpty'](_0x5a7198)){return _0x5a7198;}return _0x202b('0x14');};exports[_0x202b('0x15')]=function(_0x17738f){if(_['isNil'](_0x17738f)){return![];}return _0x17738f;};exports[_0x202b('0x16')]=function(_0x47418b,_0x2cbe68,_0x179a90,_0x242f21,_0x90d092,_0x59d082){var _0x4e8c3b={'XMD-QUEUE':_0x2cbe68[_0x202b('0x17')]?_0x2cbe68[_0x202b('0x17')]['name']:'','XMD-CALLERID':_0x242f21,'XMD-CALLERID-PREVIEW':_0x59d082?util[_0x202b('0x11')](_0x202b('0x12'),_0x59d082['calleridname'],_0x59d082[_0x202b('0x18')]):_0x242f21,'XMD-DIALID':_0x90d092,'XMD-CONTACTID':_0x2cbe68['ContactId'],'XMD-CDRTYPE':_0x202b('0x19'),'CALLERID(all)':_0x242f21,'XMD-VOICEQUEUEID':_0x2cbe68[_0x202b('0x1a')],'XMD-DIALCHANNEL':_0x179a90,'XMD-DIALTIMEOUT':_0x47418b['dialOriginateTimeout']||0x1e,'XMD-DIALOPTIONS':util['format']('\x22rtTxX%s%s\x22',_0x47418b[_0x202b('0x1b')]?'g':'',_[_0x202b('0x10')](_0x47418b[_0x202b('0x1c')])?'':'U(xcally-mixmonitor-context)'),'XMD-DIALURL':_0x47418b[_0x202b('0x1d')]||'','XMD-AGI':_0x47418b[_0x202b('0x1e')]?util[_0x202b('0x11')](_0x202b('0x1f'),ipAgi,_0x47418b[_0x202b('0x1e')]):_0x202b('0x20'),'XMD-AGIAFTER':_0x47418b[_0x202b('0x1b')]?util[_0x202b('0x11')](_0x202b('0x1f'),ipAgi,_0x47418b['dialQueueProject2']):_0x202b('0x20'),'XMD-ORIGINATECALLERIDNUM':_0x59d082?_0x59d082[_0x202b('0x21')]:'','XMD-ORIGINATECALLERIDNAME':_0x59d082?_0x59d082['originatecalleridname']:'','XMD-DESTINATION':_0x202b('0x22'),'SIPADDHEADER':_0x202b('0x23')};if(!_[_0x202b('0x10')](_0x47418b[_0x202b('0x1c')])){_0x4e8c3b[util[_0x202b('0x11')]('%s',_0x202b('0x24'))]=_0x47418b[_0x202b('0x1c')];_0x4e8c3b[util[_0x202b('0x11')]('%s','_XCALLY_MIXMONITOR_UNIQUEID')]=_0x90d092;}if(_0x2cbe68&&_0x2cbe68[_0x202b('0x25')]){for(var _0xa4ec97 in _0x2cbe68[_0x202b('0x25')]){if(_0x2cbe68['Contact']['hasOwnProperty'](_0xa4ec97)){if(!_['isNil'](_0x2cbe68[_0x202b('0x25')][_0xa4ec97])&&_0xa4ec97!=='id'&&_0xa4ec97!=='tags'&&_0xa4ec97!==_0x202b('0x26')&&_0xa4ec97!=='updatedAt'){_0x4e8c3b[util['format'](_0x202b('0x27'),_0x202b('0x28'),_[_0x202b('0x29')](_0xa4ec97))]=_0x2cbe68[_0x202b('0x25')][_0xa4ec97];}}}}return _0x4e8c3b;};exports[_0x202b('0x2a')]=function(_0xb14428){var _0x4340ee={};for(var _0x416329 in _0xb14428){if(_0xb14428[_0x202b('0x2b')](_0x416329)){_0x4340ee[util[_0x202b('0x11')]('%s',_['toLower'](_0x416329))]=_0xb14428[_0x416329];}}return{'variables':_0x4340ee};};exports['updateOriginated']=function(_0x81827e,_0x3a8c9e){if(!_[_0x202b('0x2c')](_0x81827e)){if(_0x81827e['hasOwnProperty'](_0x202b('0x2d'))){if(_0x81827e[_0x202b('0x2d')]>0x0){_0x81827e[_0x202b('0x2d')]-=0x1;}else{logger['error'](_0x202b('0x2e'),_0x3a8c9e);}}}else{logger[_0x202b('0x9')]('[updateOriginated]\x20is\x20null\x20or\x20undefined',_0x3a8c9e);}};exports[_0x202b('0x2f')]=function(_0x2d3600){var _0xe52a06=moment()[_0x202b('0x11')](_0x202b('0x30'));_0x2d3600[_0x202b('0x31')]=0xd;_0x2d3600[_0x202b('0x32')]='Blacklist';_0x2d3600[_0x202b('0x33')]=_0xe52a06;_0x2d3600[_0x202b('0x34')]=_0xe52a06;_0x2d3600['endtime']=_0xe52a06;};exports[_0x202b('0x35')]=function(_0x522e98,_0x84e569,_0x12abdc){var _0x4926a2=moment()[_0x202b('0x11')](_0x202b('0x30'));_0x522e98[_0x202b('0x31')]=_0x84e569;_0x522e98[_0x202b('0x32')]=_0x12abdc;_0x522e98[_0x202b('0x34')]=_0x4926a2;_0x522e98[_0x202b('0x36')]=getSeconds(_0x522e98[_0x202b('0x34')],_0x522e98[_0x202b('0x33')]);};exports[_0x202b('0x37')]=function(_0x60a240,_0x1a5b45,_0x3f4967){_0x60a240[_0x202b('0x38')]=_0x1a5b45;_0x60a240[_0x202b('0x39')]=_0x3f4967;};exports['logCustomer']=function(_0x1a29ae,_0x24c091,_0x1de76a){var _0x11b6dd=moment()[_0x202b('0x11')](_0x202b('0x30'));_0x1a29ae[_0x202b('0x31')]=_0x24c091;_0x1a29ae[_0x202b('0x32')]=_0x1de76a;_0x1a29ae['responsetime']=_0x1a29ae[_0x202b('0x34')]?_0x1a29ae['responsetime']:_0x11b6dd;_0x1a29ae[_0x202b('0x3a')]=_0x1a29ae[_0x202b('0x3a')]?_0x1a29ae['endtime']:_0x11b6dd;_0x1a29ae['ringtime']=getSeconds(_0x1a29ae[_0x202b('0x34')]||0x0,_0x1a29ae[_0x202b('0x33')]||0x0);_0x1a29ae['talktime']=_0x1a29ae[_0x202b('0x3b')]?getSeconds(_0x1a29ae['endtime'],_0x1a29ae[_0x202b('0x3b')]):0x0;};exports[_0x202b('0x3c')]=function(_0x3f8b0b){return _0x3f8b0b==='Failure';};exports['variablesAction']=function(_0x4c17bb,_0x3ee30a,_0x1b3ff4,_0x291ae2,_0x19a5ad){var _0xa24ce3=_0x291ae2?_0x202b('0x3d'):_0x4c17bb['calleridname'];_0xa24ce3=_0x19a5ad?_0x202b('0x3e'):_0xa24ce3;return{'actionid':_0x4c17bb[_0x202b('0x3f')],'action':_0x202b('0x40'),'channel':_0x4c17bb[_0x202b('0x41')],'callerid':util[_0x202b('0x11')]('\x22%s\x22\x20<%s>',_0xa24ce3,_0x4c17bb[_0x202b('0x18')]),'Exten':_0x202b('0x22'),'Context':'from-sip','Priority':'1','variable':_0x1b3ff4,'timeout':(_0x3ee30a[_0x202b('0x42')]||0x1e)*0x3e8,'async':!![],'channelid':_0x4c17bb[_0x202b('0x3f')]};};exports[_0x202b('0x43')]=function(_0x3af85d){return _0x3af85d['countbusyretry']+_0x3af85d['countcongestionretry']+_0x3af85d['countnoanswerretry']+_0x3af85d['countagentrejectretry']+_0x3af85d['countnosuchnumberretry'];};exports['cloneAction']=function(_0x59dd3e){var _0x3a7d2c=_[_0x202b('0x44')](_0x59dd3e);_0x3a7d2c[_0x202b('0x31')]=0xf;_0x3a7d2c[_0x202b('0x32')]=_0x202b('0x45');return _0x3a7d2c;};exports[_0x202b('0x46')]=function(_0x7471c8,_0x47ae18,_0x4b33c5){var _0xf0030={};_0xf0030[_0x47ae18]=_0x7471c8[_0x47ae18];_0xf0030[_0x202b('0x47')]=![];_0xf0030[_0x202b('0x48')]=moment()['add'](_0x4b33c5,_0x202b('0x49'))[_0x202b('0x11')](_0x202b('0x30'));_0xf0030[_0x202b('0x4a')]=_0x7471c8[_0x202b('0x4a')];_0xf0030[_0x202b('0x4b')]=_0x7471c8['ListId'];_0xf0030['VoiceQueueId']=_0x7471c8[_0x202b('0x1a')]||undefined;return _0xf0030;};exports[_0x202b('0x4c')]=function(_0xf373b6,_0x7412ef){if(!_[_0x202b('0x2c')](_0xf373b6)){if(_0xf373b6[_0x202b('0x4d')]>0x0){_0xf373b6['pTalking']-=0x1;}else{logger[_0x202b('0x9')](_0x7412ef,_0x202b('0x4e'));}}else{logger[_0x202b('0x9')](_0x7412ef,'[decrementTalkink]\x20is\x20null\x20or\x20undefined');}};exports[_0x202b('0x4f')]=function(_0x2b4db8){if(_0x2b4db8<=0x0){return!![];}return![];};function buildObj(_0x4985d0,_0x4d69d3,_0x5abf11){_0x4985d0['lastevent']=_0x4d69d3;_0x4985d0[_0x202b('0x50')]=_0x4985d0[_0x202b('0x51')];_0x4985d0['interface']=_0x4985d0['channelAgent'];_0x4985d0[_0x202b('0x52')]=_0x202b('0x53');if(_0x5abf11){_0x4985d0[_0x202b('0x54')]=_0x5abf11[_0x202b('0x54')];}return _0x4985d0;}exports[_0x202b('0x55')]=buildObj;exports[_0x202b('0x56')]=function(_0x144289){var _0x38894b={};_0x38894b[_0x202b('0x51')]=_0x144289[_0x202b('0x51')];_0x38894b[_0x202b('0x57')]=_0x144289[_0x202b('0x41')];_0x38894b[_0x202b('0x3f')]=_0x144289[_0x202b('0x3f')];return _0x38894b;};exports[_0x202b('0x58')]=function(_0x31fae4){var _0x46445e=[];for(var _0x34d4bb in _0x31fae4){if(_0x31fae4[_0x202b('0x2b')](_0x34d4bb)){if(!_[_0x202b('0x2c')](_0x31fae4[_0x34d4bb])&&_0x31fae4[_0x34d4bb][_0x202b('0x31')]===_0x202b('0x59')&&_0x31fae4[_0x34d4bb][_0x202b('0x5a')]==='reachable'){_0x46445e[_0x202b('0x5b')](_0x31fae4[_0x34d4bb]['id']);}}}return _0x46445e;};exports['getDiff']=function(_0x115b5b){var _0xfaaee1=moment()[_0x202b('0x6')](0x0);var _0x3ec9d4=moment(_0x115b5b)[_0x202b('0x6')](0x0);return _0xfaaee1[_0x202b('0x7')](_0x3ec9d4,'seconds');};exports[_0x202b('0x5c')]=function(_0x5eb572){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x5eb572[_0x202b('0x4a')],'ListId':_0x5eb572[_0x202b('0x4b')],'VoiceQueueId':_0x5eb572[_0x202b('0x1a')]||undefined,'CampaignId':_0x5eb572[_0x202b('0x5d')]||undefined};};exports['filterKey']=function(_0xd80efc){if(_0xd80efc===_0x202b('0x3f')||_0xd80efc==='idContact'||_0xd80efc===_0x202b('0x51')||_0xd80efc===_0x202b('0x5e')||_0xd80efc===_0x202b('0x5f')||_0xd80efc===_0x202b('0x60')||_0xd80efc==='membername'||_0xd80efc===_0x202b('0x41')||_0xd80efc===_0x202b('0x61')||_0xd80efc==='active'||_0xd80efc===_0x202b('0x18')||_0xd80efc==='scheduledat'||_0xd80efc===_0x202b('0x62')||_0xd80efc==='countcongestionretry'||_0xd80efc===_0x202b('0x63')||_0xd80efc===_0x202b('0x64')||_0xd80efc===_0x202b('0x65')||_0xd80efc===_0x202b('0x66')||_0xd80efc===_0x202b('0x67')||_0xd80efc===_0x202b('0x68')||_0xd80efc===_0x202b('0x4a')||_0xd80efc===_0x202b('0x4b')||_0xd80efc===_0x202b('0x39')||_0xd80efc===_0x202b('0x1a')||_0xd80efc==='sipcallid'||_0xd80efc===_0x202b('0x69')||_0xd80efc===_0x202b('0x6a')||_0xd80efc===_0x202b('0x6b')||_0xd80efc==='xmd-listid'||_0xd80efc===_0x202b('0x6c')||_0xd80efc===_0x202b('0x6d')||_0xd80efc===_0x202b('0x6e')||_0xd80efc==='xmd-dialid'||_0xd80efc==='xmd-dialchannel'||_0xd80efc===_0x202b('0x6f')||_0xd80efc===_0x202b('0x70')||_0xd80efc===_0x202b('0x71')||_0xd80efc==='xmd-agiafter'||_0xd80efc===_0x202b('0x72')||_0xd80efc===_0x202b('0x73')||_0xd80efc===_0x202b('0x74')||_0xd80efc===_0x202b('0x75')||_0xd80efc===_0x202b('0x76')||_0xd80efc===_0x202b('0x77')||_0xd80efc===_0x202b('0x78')||_0xd80efc==='rtpaudioqosrtt'||_0xd80efc===_0x202b('0x79')||_0xd80efc==='rtpaudioqos'||_0xd80efc===_0x202b('0x74')||_0xd80efc===_0x202b('0x75')||_0xd80efc==='rtpaudioqosjitterbridged'||_0xd80efc===_0x202b('0x77')||_0xd80efc===_0x202b('0x78')||_0xd80efc===_0x202b('0x7a')||_0xd80efc===_0x202b('0x79')||_0xd80efc===_0x202b('0x7b')||_0xd80efc===_0x202b('0x7c')||_0xd80efc===_0x202b('0x31')||_0xd80efc===_0x202b('0x32')){return![];}return!![];};exports['getCallerIdRandom']=function(_0x4f6864,_0x45c057){var _0x3a0f64,_0x4d169c,_0x159ae8;if(_0x45c057<=0x0){_0x45c057=0x1;}_0x3a0f64=new RegExp(_0x202b('0x7d')+_0x45c057+'}$');_0x4d169c=Math[_0x202b('0x7e')](0xa,_0x45c057-0x1);_0x159ae8=Math[_0x202b('0x7e')](0xa,_0x45c057)-0x1;return util[_0x202b('0x11')]('%s',_['replace'](_0x4f6864,_0x3a0f64,_[_0x202b('0x7f')](_0x4d169c,_0x159ae8)));};exports['extractCalleridName']=function(_0x1d155c){var _0x4b40ea=_0x1d155c[_0x202b('0x80')](/"(.*?)"/);return _0x4b40ea?_0x4b40ea[0x1]:_0x1d155c;};exports[_0x202b('0x81')]=function(_0x3513f2){var _0x314755=_0x3513f2['match'](/<(.*?)>/);return _0x314755?_0x314755[0x1]:_0x3513f2;};function buildNoAnswerEventPayload(_0x4b822b,_0x4b2b49){var _0x1088a7=buildObj(_0x4b822b,_0x202b('0x82'));if(!_[_0x202b('0x10')](_0x4b2b49[_0x202b('0x83')])){Object[_0x202b('0x84')](_0x4b2b49[_0x202b('0x83')])[_0x202b('0x85')](function(_0x5d7f20){_0x1088a7[_0x5d7f20[_0x202b('0x86')]()]=_0x4b2b49[_0x202b('0x83')][_0x5d7f20];});}return _0x1088a7;}exports['buildNoAnswerEventPayload']=buildNoAnswerEventPayload;
\ No newline at end of file
+var _0x8ed1=['countagentrejectretry','Global','active','scheduledat','add','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','[decrementTalkink]\x20is\x20null\x20or\x20undefined','IsNotLoggedIn','queue','interface','motionChannel','voice','mandatoryDisposition','buildObj','buildAcw','not_inuse','push','getDiff','seconds','ListId','CampaignId','filterKey','idContact','campaigntype','membername','countcongestionretry','countnoanswerretry','countglobal','callback','callbackuniqueid','callbackat','recallme','sipcallid','xmd-voicequeueid','xmd-phone','xmd-dialtimeout','xmd-dialoptions','xmd-dialid','xmd-dialchannel','xmd-contactid','xmd-cdrtype','xmd-callerid','xmd-agiafter','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','bridgepeer','bridgepvtcallid','getCallerIdRandom','\x5cw{0,','pow','random','extractCalleridName','match','noanswer','keys','toLowerCase','variables','buildNoAnswerEventPayload','util','lodash','moment','../../../../config/logger','preview','env','127.0.0.1','milliseconds','diff','logger','info','inspect','getCallerId','isUndefined','string','isEmpty','format','\x22%s\x22\x20<%s>','\x22\x22\x20<>','isNil','addVariables','Queue','name','calleridname','calleridnum','ContactId','VoiceQueueId','dialOriginateTimeout','monitor_format','dialQueueProject','\x22agi://%s/square,%s\x22','NONE','dialQueueProject2','originatecalleridnum','originatecalleridname','Call-Type:\x20PREVIEW','_XCALLY_MIXMONITOR_FORMAT','Contact','tags','createdAt','updatedAt','%s%s','XMD-','toUpper','hasOwnProperty','toLower','updateOriginated','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','error','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','state','statedesc','Blacklist','responsetime','endtime','logAgent','starttime','logLookAgent','logCustomer','ringtime','talktime','answertime','isFailure','Failure','variablesAction','BOOKED','uniqueid','originate','channelAgent','xcally-motion-preview','from-sip','timeout','totalGlobal','countbusyretry'];(function(_0x52aef9,_0x165c5c){var _0x2343a7=function(_0x1f6a04){while(--_0x1f6a04){_0x52aef9['push'](_0x52aef9['shift']());}};_0x2343a7(++_0x165c5c);}(_0x8ed1,0xce));var _0x18ed=function(_0x51667b,_0x4409ec){_0x51667b=_0x51667b-0x0;var _0x3ec7ff=_0x8ed1[_0x51667b];return _0x3ec7ff;};'use strict';var util=require(_0x18ed('0x0'));var _=require(_0x18ed('0x1'));var moment=require(_0x18ed('0x2'));var logger=require(_0x18ed('0x3'))(_0x18ed('0x4'));var ipAgi=process[_0x18ed('0x5')]['XCALLY_IP_AGI']||_0x18ed('0x6');function getSeconds(_0x1c16a0,_0x377958){var _0x4886ba=moment(_0x1c16a0)['milliseconds'](0x0);var _0x36b2c4=moment(_0x377958)[_0x18ed('0x7')](0x0);return _0x4886ba[_0x18ed('0x8')](_0x36b2c4,'seconds');}exports['loggerCatch']=function(_0x24aa94){return function(_0x4de9ac){logger['error'](_0x24aa94,util['inspect'](_0x4de9ac,{'showHidden':![],'depth':null}));};};exports[_0x18ed('0x9')]=function(_0x443b46,_0x1ba811){logger[_0x18ed('0xa')](_0x443b46,util[_0x18ed('0xb')](_0x1ba811,{'showHidden':![],'depth':null}));};exports['loggerError']=function(_0x38c0cb,_0x1590e8){logger['error'](_0x38c0cb,util['inspect'](_0x1590e8,{'showHidden':![],'depth':null}));};exports['logger2']=function(_0x2b29c7){return function(_0x244cc0){logger[_0x18ed('0xa')](_0x2b29c7,util[_0x18ed('0xb')](_0x244cc0,{'showHidden':![],'depth':null}));};};exports['message']=function(_0x26d6a5,_0x22ddd8,_0x4eadd3){return{'message':_0x26d6a5,'unlock':_0x22ddd8,'active':_0x4eadd3};};exports[_0x18ed('0xc')]=function(_0xd084fc,_0x3bd369,_0x8421f){if(!_[_0x18ed('0xd')](_0x8421f)&&_0x18ed('0xe')===typeof _0x8421f&&!_['isEmpty'](_0x8421f)){if(!_[_0x18ed('0xd')](_0x3bd369)&&_0x18ed('0xe')===typeof _0x3bd369&&!_[_0x18ed('0xf')](_0x3bd369)){return util[_0x18ed('0x10')](_0x18ed('0x11'),_0x3bd369,_0x8421f);}return util[_0x18ed('0x10')](_0x18ed('0x11'),_0x8421f,_0x8421f);}if(!_[_0x18ed('0xd')](_0xd084fc)&&_0x18ed('0xe')===typeof _0xd084fc&&!_['isEmpty'](_0xd084fc)){return _0xd084fc;}return _0x18ed('0x12');};exports['isActive']=function(_0x2f1c5){if(_[_0x18ed('0x13')](_0x2f1c5)){return![];}return _0x2f1c5;};exports[_0x18ed('0x14')]=function(_0x182c06,_0x250807,_0x428223,_0xfda2e4,_0x21d916,_0x2091da){var _0x566cb1={'XMD-QUEUE':_0x250807[_0x18ed('0x15')]?_0x250807[_0x18ed('0x15')][_0x18ed('0x16')]:'','XMD-CALLERID':_0xfda2e4,'XMD-CALLERID-PREVIEW':_0x2091da?util[_0x18ed('0x10')](_0x18ed('0x11'),_0x2091da[_0x18ed('0x17')],_0x2091da[_0x18ed('0x18')]):_0xfda2e4,'XMD-DIALID':_0x21d916,'XMD-CONTACTID':_0x250807[_0x18ed('0x19')],'XMD-CDRTYPE':'dialer','CALLERID(all)':_0xfda2e4,'XMD-VOICEQUEUEID':_0x250807[_0x18ed('0x1a')],'XMD-DIALCHANNEL':_0x428223,'XMD-DIALTIMEOUT':_0x182c06[_0x18ed('0x1b')]||0x1e,'XMD-DIALOPTIONS':util[_0x18ed('0x10')]('\x22rtTxX%s%s\x22',_0x182c06['dialQueueProject2']?'g':'',_[_0x18ed('0xf')](_0x182c06[_0x18ed('0x1c')])?'':'U(xcally-mixmonitor-context)'),'XMD-DIALURL':_0x182c06['dialPreviewUrl']||'','XMD-AGI':_0x182c06[_0x18ed('0x1d')]?util[_0x18ed('0x10')](_0x18ed('0x1e'),ipAgi,_0x182c06['dialQueueProject']):_0x18ed('0x1f'),'XMD-AGIAFTER':_0x182c06['dialQueueProject2']?util[_0x18ed('0x10')](_0x18ed('0x1e'),ipAgi,_0x182c06[_0x18ed('0x20')]):_0x18ed('0x1f'),'XMD-ORIGINATECALLERIDNUM':_0x2091da?_0x2091da[_0x18ed('0x21')]:'','XMD-ORIGINATECALLERIDNAME':_0x2091da?_0x2091da[_0x18ed('0x22')]:'','XMD-DESTINATION':'xcally-motion-preview','SIPADDHEADER':_0x18ed('0x23')};if(!_[_0x18ed('0xf')](_0x182c06[_0x18ed('0x1c')])){_0x566cb1[util['format']('%s',_0x18ed('0x24'))]=_0x182c06[_0x18ed('0x1c')];_0x566cb1[util['format']('%s','_XCALLY_MIXMONITOR_UNIQUEID')]=_0x21d916;}if(_0x250807&&_0x250807[_0x18ed('0x25')]){for(var _0x33ece7 in _0x250807[_0x18ed('0x25')]){if(_0x250807[_0x18ed('0x25')]['hasOwnProperty'](_0x33ece7)){if(!_[_0x18ed('0x13')](_0x250807['Contact'][_0x33ece7])&&_0x33ece7!=='id'&&_0x33ece7!==_0x18ed('0x26')&&_0x33ece7!==_0x18ed('0x27')&&_0x33ece7!==_0x18ed('0x28')){_0x566cb1[util[_0x18ed('0x10')](_0x18ed('0x29'),_0x18ed('0x2a'),_[_0x18ed('0x2b')](_0x33ece7))]=_0x250807[_0x18ed('0x25')][_0x33ece7];}}}}return _0x566cb1;};exports['toLowerVariables']=function(_0x14620f){var _0x4b14b5={};for(var _0x494308 in _0x14620f){if(_0x14620f[_0x18ed('0x2c')](_0x494308)){_0x4b14b5[util[_0x18ed('0x10')]('%s',_[_0x18ed('0x2d')](_0x494308))]=_0x14620f[_0x494308];}}return{'variables':_0x4b14b5};};exports[_0x18ed('0x2e')]=function(_0x3fba90,_0x45d71d){if(!_[_0x18ed('0x13')](_0x3fba90)){if(_0x3fba90[_0x18ed('0x2c')](_0x18ed('0x2f'))){if(_0x3fba90[_0x18ed('0x2f')]>0x0){_0x3fba90[_0x18ed('0x2f')]-=0x1;}else{logger['error'](_0x18ed('0x30'),_0x45d71d);}}}else{logger[_0x18ed('0x31')]('[updateOriginated]\x20is\x20null\x20or\x20undefined',_0x45d71d);}};exports[_0x18ed('0x32')]=function(_0x411633){var _0x2015bd=moment()['format'](_0x18ed('0x33'));_0x411633[_0x18ed('0x34')]=0xd;_0x411633[_0x18ed('0x35')]=_0x18ed('0x36');_0x411633['starttime']=_0x2015bd;_0x411633[_0x18ed('0x37')]=_0x2015bd;_0x411633[_0x18ed('0x38')]=_0x2015bd;};exports[_0x18ed('0x39')]=function(_0x2c6e8f,_0x48433a,_0x3a6306){var _0x4087e3=moment()[_0x18ed('0x10')](_0x18ed('0x33'));_0x2c6e8f[_0x18ed('0x34')]=_0x48433a;_0x2c6e8f[_0x18ed('0x35')]=_0x3a6306;_0x2c6e8f[_0x18ed('0x37')]=_0x4087e3;_0x2c6e8f['ringtime']=getSeconds(_0x2c6e8f[_0x18ed('0x37')],_0x2c6e8f[_0x18ed('0x3a')]);};exports[_0x18ed('0x3b')]=function(_0x274c40,_0x4ee3e2,_0x2d0363){_0x274c40['membername']=_0x4ee3e2;_0x274c40['UserId']=_0x2d0363;};exports[_0x18ed('0x3c')]=function(_0x536c53,_0x302a4a,_0x994fda){var _0xe1bc5f=moment()[_0x18ed('0x10')](_0x18ed('0x33'));_0x536c53[_0x18ed('0x34')]=_0x302a4a;_0x536c53['statedesc']=_0x994fda;_0x536c53[_0x18ed('0x37')]=_0x536c53['responsetime']?_0x536c53['responsetime']:_0xe1bc5f;_0x536c53[_0x18ed('0x38')]=_0x536c53[_0x18ed('0x38')]?_0x536c53[_0x18ed('0x38')]:_0xe1bc5f;_0x536c53[_0x18ed('0x3d')]=getSeconds(_0x536c53['responsetime']||0x0,_0x536c53[_0x18ed('0x3a')]||0x0);_0x536c53[_0x18ed('0x3e')]=_0x536c53[_0x18ed('0x3f')]?getSeconds(_0x536c53[_0x18ed('0x38')],_0x536c53['answertime']):0x0;};exports[_0x18ed('0x40')]=function(_0x26506c){return _0x26506c===_0x18ed('0x41');};exports[_0x18ed('0x42')]=function(_0x1a3678,_0x77cd48,_0x42e586,_0x4162e9,_0x3b9ace){var _0x19d3b8=_0x4162e9?'RECALL':_0x1a3678[_0x18ed('0x17')];_0x19d3b8=_0x3b9ace?_0x18ed('0x43'):_0x19d3b8;return{'actionid':_0x1a3678[_0x18ed('0x44')],'action':_0x18ed('0x45'),'channel':_0x1a3678[_0x18ed('0x46')],'callerid':util['format'](_0x18ed('0x11'),_0x19d3b8,_0x1a3678[_0x18ed('0x18')]),'Exten':_0x18ed('0x47'),'Context':_0x18ed('0x48'),'Priority':'1','variable':_0x42e586,'timeout':(_0x77cd48[_0x18ed('0x49')]||0x1e)*0x3e8,'async':!![],'channelid':_0x1a3678['uniqueid']};};exports[_0x18ed('0x4a')]=function(_0x2ed3eb){return _0x2ed3eb[_0x18ed('0x4b')]+_0x2ed3eb['countcongestionretry']+_0x2ed3eb['countnoanswerretry']+_0x2ed3eb[_0x18ed('0x4c')]+_0x2ed3eb['countnosuchnumberretry'];};exports['cloneAction']=function(_0x116d14){var _0x2ebc1c=_['clone'](_0x116d14);_0x2ebc1c['state']=0xf;_0x2ebc1c[_0x18ed('0x35')]=_0x18ed('0x4d');return _0x2ebc1c;};exports['scheduledAt']=function(_0x3fa977,_0x97bf11,_0x11040a){var _0x404b01={};_0x404b01[_0x97bf11]=_0x3fa977[_0x97bf11];_0x404b01[_0x18ed('0x4e')]=![];_0x404b01[_0x18ed('0x4f')]=moment()[_0x18ed('0x50')](_0x11040a,'minutes')[_0x18ed('0x10')](_0x18ed('0x33'));_0x404b01['ContactId']=_0x3fa977[_0x18ed('0x19')];_0x404b01['ListId']=_0x3fa977['ListId'];_0x404b01['VoiceQueueId']=_0x3fa977[_0x18ed('0x1a')]||undefined;return _0x404b01;};exports['decrementTalkink']=function(_0xc5e526,_0x2893b8){if(!_[_0x18ed('0x13')](_0xc5e526)){if(_0xc5e526[_0x18ed('0x51')]>0x0){_0xc5e526['pTalking']-=0x1;}else{logger['error'](_0x2893b8,_0x18ed('0x52'));}}else{logger[_0x18ed('0x31')](_0x2893b8,_0x18ed('0x53'));}};exports[_0x18ed('0x54')]=function(_0x3ee3de){if(_0x3ee3de<=0x0){return!![];}return![];};function buildObj(_0xeef2c7,_0x4e1150,_0x4ab437){_0xeef2c7['lastevent']=_0x4e1150;_0xeef2c7[_0x18ed('0x16')]=_0xeef2c7[_0x18ed('0x55')];_0xeef2c7[_0x18ed('0x56')]=_0xeef2c7['channelAgent'];_0xeef2c7[_0x18ed('0x57')]=_0x18ed('0x58');if(_0x4ab437){_0xeef2c7['mandatoryDisposition']=_0x4ab437[_0x18ed('0x59')];}return _0xeef2c7;}exports[_0x18ed('0x5a')]=buildObj;exports[_0x18ed('0x5b')]=function(_0x748966){var _0x50b4cf={};_0x50b4cf['queue']=_0x748966[_0x18ed('0x55')];_0x50b4cf[_0x18ed('0x56')]=_0x748966[_0x18ed('0x46')];_0x50b4cf[_0x18ed('0x44')]=_0x748966['uniqueid'];return _0x50b4cf;};exports['agentReadyId']=function(_0x2fff2b){var _0x3e63e5=[];for(var _0x1c7843 in _0x2fff2b){if(_0x2fff2b[_0x18ed('0x2c')](_0x1c7843)){if(!_[_0x18ed('0x13')](_0x2fff2b[_0x1c7843])&&_0x2fff2b[_0x1c7843][_0x18ed('0x34')]===_0x18ed('0x5c')&&_0x2fff2b[_0x1c7843]['status']==='reachable'){_0x3e63e5[_0x18ed('0x5d')](_0x2fff2b[_0x1c7843]['id']);}}}return _0x3e63e5;};exports[_0x18ed('0x5e')]=function(_0x46641e){var _0x3ed448=moment()[_0x18ed('0x7')](0x0);var _0x1007f5=moment(_0x46641e)['milliseconds'](0x0);return _0x3ed448[_0x18ed('0x8')](_0x1007f5,_0x18ed('0x5f'));};exports['createBody']=function(_0x2a4a62){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x2a4a62[_0x18ed('0x19')],'ListId':_0x2a4a62[_0x18ed('0x60')],'VoiceQueueId':_0x2a4a62[_0x18ed('0x1a')]||undefined,'CampaignId':_0x2a4a62[_0x18ed('0x61')]||undefined};};exports[_0x18ed('0x62')]=function(_0x5202d9){if(_0x5202d9===_0x18ed('0x44')||_0x5202d9===_0x18ed('0x63')||_0x5202d9==='queue'||_0x5202d9==='type'||_0x5202d9===_0x18ed('0x64')||_0x5202d9==='dialAnswer'||_0x5202d9===_0x18ed('0x65')||_0x5202d9===_0x18ed('0x46')||_0x5202d9===_0x18ed('0x17')||_0x5202d9===_0x18ed('0x4e')||_0x5202d9===_0x18ed('0x18')||_0x5202d9===_0x18ed('0x4f')||_0x5202d9==='countbusyretry'||_0x5202d9===_0x18ed('0x66')||_0x5202d9===_0x18ed('0x67')||_0x5202d9===_0x18ed('0x68')||_0x5202d9===_0x18ed('0x69')||_0x5202d9===_0x18ed('0x6a')||_0x5202d9===_0x18ed('0x6b')||_0x5202d9===_0x18ed('0x6c')||_0x5202d9===_0x18ed('0x19')||_0x5202d9===_0x18ed('0x60')||_0x5202d9==='UserId'||_0x5202d9===_0x18ed('0x1a')||_0x5202d9===_0x18ed('0x6d')||_0x5202d9===_0x18ed('0x6e')||_0x5202d9==='xmd-queue'||_0x5202d9===_0x18ed('0x6f')||_0x5202d9==='xmd-listid'||_0x5202d9==='xmd-dialurl'||_0x5202d9===_0x18ed('0x70')||_0x5202d9===_0x18ed('0x71')||_0x5202d9===_0x18ed('0x72')||_0x5202d9===_0x18ed('0x73')||_0x5202d9===_0x18ed('0x74')||_0x5202d9===_0x18ed('0x75')||_0x5202d9===_0x18ed('0x76')||_0x5202d9===_0x18ed('0x77')||_0x5202d9==='xmd-agi'||_0x5202d9===_0x18ed('0x78')||_0x5202d9===_0x18ed('0x79')||_0x5202d9===_0x18ed('0x7a')||_0x5202d9===_0x18ed('0x7b')||_0x5202d9===_0x18ed('0x7c')||_0x5202d9===_0x18ed('0x7d')||_0x5202d9===_0x18ed('0x7e')||_0x5202d9===_0x18ed('0x7f')||_0x5202d9===_0x18ed('0x78')||_0x5202d9==='rtpaudioqosbridged'||_0x5202d9===_0x18ed('0x7a')||_0x5202d9===_0x18ed('0x7b')||_0x5202d9===_0x18ed('0x7c')||_0x5202d9===_0x18ed('0x7d')||_0x5202d9===_0x18ed('0x7e')||_0x5202d9==='rtpaudioqosrttbridged'||_0x5202d9===_0x18ed('0x80')||_0x5202d9===_0x18ed('0x81')||_0x5202d9===_0x18ed('0x34')||_0x5202d9===_0x18ed('0x35')){return![];}return!![];};exports[_0x18ed('0x82')]=function(_0x114bcc,_0x10ea87){var _0x2fdf54,_0x4c8c3d,_0x4addcc;if(_0x10ea87<=0x0){_0x10ea87=0x1;}_0x2fdf54=new RegExp(_0x18ed('0x83')+_0x10ea87+'}$');_0x4c8c3d=Math['pow'](0xa,_0x10ea87-0x1);_0x4addcc=Math[_0x18ed('0x84')](0xa,_0x10ea87)-0x1;return util[_0x18ed('0x10')]('%s',_['replace'](_0x114bcc,_0x2fdf54,_[_0x18ed('0x85')](_0x4c8c3d,_0x4addcc)));};exports[_0x18ed('0x86')]=function(_0x301eaa){var _0x53575c=_0x301eaa[_0x18ed('0x87')](/"(.*?)"/);return _0x53575c?_0x53575c[0x1]:_0x301eaa;};exports['extractCalleridNumber']=function(_0xa9b390){var _0x3ba362=_0xa9b390[_0x18ed('0x87')](/<(.*?)>/);return _0x3ba362?_0x3ba362[0x1]:_0xa9b390;};function buildNoAnswerEventPayload(_0x106431,_0x4f7184){var _0x1e5e10=buildObj(_0x106431,_0x18ed('0x88'));if(!_['isEmpty'](_0x4f7184['variables'])){Object[_0x18ed('0x89')](_0x4f7184['variables'])['forEach'](function(_0x16b63b){_0x1e5e10[_0x16b63b[_0x18ed('0x8a')]()]=_0x4f7184[_0x18ed('0x8b')][_0x16b63b];});}return _0x1e5e10;}exports[_0x18ed('0x8c')]=buildNoAnswerEventPayload;
\ No newline at end of file
index 7c5dbee..b13d502 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ec5=['string','number','boolean','reload','voicequeuechannel','voicechannel','voicequeuechannelhangup','queueadd'];(function(_0x725b8e,_0xc22b48){var _0x43ac45=function(_0x46bb4a){while(--_0x46bb4a){_0x725b8e['push'](_0x725b8e['shift']());}};_0x43ac45(++_0xc22b48);}(_0x4ec5,0x9f));var _0x54ec=function(_0x5c6ac1,_0x1e8842){_0x5c6ac1=_0x5c6ac1-0x0;var _0x553d12=_0x4ec5[_0x5c6ac1];return _0x553d12;};'use strict';exports[_0x54ec('0x0')]={'queue':{'type':_0x54ec('0x1'),'required':!![]},'interface':{'type':_0x54ec('0x1'),'required':!![]},'membername':{'type':'string','required':!![]},'penalty':{'type':_0x54ec('0x2'),'required':![]},'paused':{'type':_0x54ec('0x3'),'required':![]}};exports['queueremove']={'queue':{'type':_0x54ec('0x1'),'required':!![]},'interface':{'type':'string','required':!![]}};exports['queuepause']={'interface':{'type':_0x54ec('0x1'),'required':!![]},'paused':{'type':'boolean'},'reason':{'type':_0x54ec('0x1'),'required':![]}};exports[_0x54ec('0x4')]={'module':{'type':'string','required':![]}};exports[_0x54ec('0x5')]={'uniqueid':{'type':_0x54ec('0x1'),'required':!![]}};exports[_0x54ec('0x6')]={'uniqueid':{'type':_0x54ec('0x1'),'required':!![]},'filename':{'type':'string'},'format':{'type':_0x54ec('0x1')},'mixmonitorid':{'type':_0x54ec('0x1')}};exports[_0x54ec('0x7')]={'uniqueid':{'type':_0x54ec('0x1'),'required':!![]}};exports['voicequeuechannelredirect']={'uniqueid':{'type':_0x54ec('0x1'),'required':!![]},'exten':{'type':'string','required':!![]},'context':{'type':'string'}};
\ No newline at end of file
+var _0x926d=['boolean','reload','voicechannel','voicequeuechannelhangup','string','queueremove','queuepause'];(function(_0x49ca18,_0x5e6d05){var _0x145d54=function(_0x30b9be){while(--_0x30b9be){_0x49ca18['push'](_0x49ca18['shift']());}};_0x145d54(++_0x5e6d05);}(_0x926d,0x177));var _0xd926=function(_0x51b2f7,_0x303ad2){_0x51b2f7=_0x51b2f7-0x0;var _0x556d95=_0x926d[_0x51b2f7];return _0x556d95;};'use strict';exports['queueadd']={'queue':{'type':_0xd926('0x0'),'required':!![]},'interface':{'type':_0xd926('0x0'),'required':!![]},'membername':{'type':'string','required':!![]},'penalty':{'type':'number','required':![]},'paused':{'type':'boolean','required':![]}};exports[_0xd926('0x1')]={'queue':{'type':_0xd926('0x0'),'required':!![]},'interface':{'type':_0xd926('0x0'),'required':!![]}};exports[_0xd926('0x2')]={'interface':{'type':_0xd926('0x0'),'required':!![]},'paused':{'type':_0xd926('0x3')},'reason':{'type':_0xd926('0x0'),'required':![]}};exports[_0xd926('0x4')]={'module':{'type':_0xd926('0x0'),'required':![]}};exports['voicequeuechannel']={'uniqueid':{'type':_0xd926('0x0'),'required':!![]}};exports[_0xd926('0x5')]={'uniqueid':{'type':'string','required':!![]},'filename':{'type':_0xd926('0x0')},'format':{'type':'string'},'mixmonitorid':{'type':_0xd926('0x0')}};exports[_0xd926('0x6')]={'uniqueid':{'type':_0xd926('0x0'),'required':!![]}};exports['voicequeuechannelredirect']={'uniqueid':{'type':_0xd926('0x0'),'required':!![]},'exten':{'type':_0xd926('0x0'),'required':!![]},'context':{'type':_0xd926('0x0')}};
\ No newline at end of file
index 9629928..edcaa61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea21=['initVoiceQueueReports','uniqueid','queue','queuecallerexit','abandoned','diff','queuecallerjoinAt','seconds','queuecallerabandonAt','queuecallerexitAt','queuecallercomplete','answered','queuecallercompleteAt','initVoiceCallReports','duration','disposition','ANSWERED','initCampaigns','campaigns','dialQueueProject','initVoiceExtensions','initFaxAccounts','exports','util','moment','../model/agent','../model/telephone','../model/voiceQueue','../model/template','../model/campaign','../model/voiceExtension','../model/zendeskAccount','../model/freshdeskAccount','../model/sugarcrmAccount','../model/zohoAccount','../model/deskAccount','../model/servicenowAccount','../model/dynamics365Account','../model/faxAccount','agents','telephones','trunks','voiceQueues','triggers','outbound','voiceExtensions','channels','queueChannels','outboundChannels','timers','settings','salesforceAccounts','sugarcrmAccounts','freshdeskAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','faxAccounts','format','SIP/%s','name','hasOwnProperty','mapKeys','isNil','interface','total','sumHoldTime','sumDuration','sumBillable','isEmpty','ivrAnswerCallsDay','unmanaged','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundAnswerCallsDay','queueStatusComplete','prototype','mergeFromDatabase','length','isUndefined','initTelephones','initTrunks','initVoiceQueues','initTriggers','initTemplates','templates','initZendeskAccounts','zendeskAccounts','initFreshdeskAccounts','zohoAccounts','initDeskAccounts','initSugarcrmAccounts','initVtigerAccounts','initServicenowAccounts','initDynamics365Accounts','freshsalesAccounts','initVoiceQueueHopperHistory','merge'];(function(_0x3c60fc,_0x593ef5){var _0x495fd2=function(_0x33e7ea){while(--_0x33e7ea){_0x3c60fc['push'](_0x3c60fc['shift']());}};_0x495fd2(++_0x593ef5);}(_0xea21,0x80));var _0x1ea2=function(_0x16f359,_0x26c957){_0x16f359=_0x16f359-0x0;var _0x29683d=_0xea21[_0x16f359];return _0x29683d;};'use strict';var util=require(_0x1ea2('0x0'));var _=require('lodash');var moment=require(_0x1ea2('0x1'));var Agent=require(_0x1ea2('0x2'));var Telephone=require(_0x1ea2('0x3'));var Trunk=require('../model/trunk');var VoiceQueue=require(_0x1ea2('0x4'));var Trigger=require('../model/trigger');var Template=require(_0x1ea2('0x5'));var Campaign=require(_0x1ea2('0x6'));var VoiceExtension=require(_0x1ea2('0x7'));var ZendeskAccount=require(_0x1ea2('0x8'));var SalesforceAccount=require('../model/salesforceAccount');var FreshdeskAccount=require(_0x1ea2('0x9'));var SugarcrmAccount=require(_0x1ea2('0xa'));var ZohoAccount=require(_0x1ea2('0xb'));var DeskAccount=require(_0x1ea2('0xc'));var VtigerAccount=require('../model/vtigerAccount');var ServicenowAccount=require(_0x1ea2('0xd'));var Dynamics365Account=require(_0x1ea2('0xe'));var FreshsalesAccount=require('../model/freshsalesAccount');var FaxAccount=require(_0x1ea2('0xf'));var Realtime=function(){this[_0x1ea2('0x10')]={};this[_0x1ea2('0x11')]={};this[_0x1ea2('0x12')]={};this[_0x1ea2('0x13')]={};this[_0x1ea2('0x14')]={};this['campaigns']={};this['templates']={};this[_0x1ea2('0x15')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0x1ea2('0x16')]={};this[_0x1ea2('0x17')]={};this[_0x1ea2('0x18')]={};this[_0x1ea2('0x19')]={};this[_0x1ea2('0x1a')]={};this[_0x1ea2('0x1b')]={};this['zendeskAccounts']={};this[_0x1ea2('0x1c')]={};this[_0x1ea2('0x1d')]={};this[_0x1ea2('0x1e')]={};this['zohoAccounts']={};this[_0x1ea2('0x1f')]={};this[_0x1ea2('0x20')]={};this[_0x1ea2('0x21')]={};this[_0x1ea2('0x22')]={};this['freshsalesAccounts']={};this[_0x1ea2('0x23')]={};};function freeIsNotKey(_0x372dc5,_0x27bb84,_0x14b984){var _0x28040b=_['mapKeys'](_0x372dc5,function(_0x1d006b,_0x1890cc){return _0x1d006b[_0x14b984];});for(var _0x1819b2 in _0x27bb84){if(_0x27bb84['hasOwnProperty'](_0x1819b2)){if(!_0x28040b[_0x1819b2]){delete _0x27bb84[_0x1819b2];}}}}function freeIsNotKeySip(_0x2c43cf,_0x4255ed){var _0x873c48=_['mapKeys'](_0x2c43cf,function(_0x39142c,_0x9a01d7){return util[_0x1ea2('0x24')](_0x1ea2('0x25'),_0x39142c[_0x1ea2('0x26')]);});for(var _0x5c1329 in _0x4255ed){if(_0x4255ed[_0x1ea2('0x27')](_0x5c1329)){if(!_0x873c48[_0x5c1329]){delete _0x4255ed[_0x5c1329];}}}}function freeIsNotKeyAgent(_0x1f470a,_0x176680){var _0x3477e2=_[_0x1ea2('0x28')](_0x1f470a,function(_0x35a87f,_0x1b1420){var _0x3c4c95=_[_0x1ea2('0x29')](_0x35a87f['interface'])?util[_0x1ea2('0x24')](_0x1ea2('0x25'),_0x35a87f[_0x1ea2('0x26')]):_0x35a87f[_0x1ea2('0x2a')];return _0x3c4c95;});for(var _0x5560cc in _0x176680){if(_0x176680['hasOwnProperty'](_0x5560cc)){if(!_0x3477e2[_0x5560cc]){delete _0x176680[_0x5560cc];}}}}function clearVoiceCallReports(_0x1a7e89){_0x1a7e89[_0x1ea2('0x2b')]=0x0;_0x1a7e89['answered']=0x0;_0x1a7e89[_0x1ea2('0x2c')]=0x0;_0x1a7e89[_0x1ea2('0x2d')]=0x0;_0x1a7e89[_0x1ea2('0x2e')]=0x0;}function clearCampaigns(_0x232d0e){if(!_[_0x1ea2('0x2f')](_0x232d0e)){for(var _0xfd52b2 in _0x232d0e){if(_0x232d0e['hasOwnProperty'](_0xfd52b2)){_0x232d0e[_0xfd52b2]['ivrTotalCallsDays']=0x0;_0x232d0e[_0xfd52b2][_0x1ea2('0x30')]=0x0;}}}}function clearVoiceQueues(_0x22ad41){if(!_[_0x1ea2('0x2f')](_0x22ad41)){for(var _0x2df7ef in _0x22ad41){if(_0x22ad41[_0x1ea2('0x27')](_0x2df7ef)){_0x22ad41[_0x2df7ef][_0x1ea2('0x2b')]=0x0;_0x22ad41[_0x2df7ef]['answered']=0x0;_0x22ad41[_0x2df7ef][_0x1ea2('0x31')]=0x0;_0x22ad41[_0x2df7ef]['abandoned']=0x0;_0x22ad41[_0x2df7ef][_0x1ea2('0x2c')]=0x0;_0x22ad41[_0x2df7ef][_0x1ea2('0x2d')]=0x0;_0x22ad41[_0x2df7ef][_0x1ea2('0x2e')]=0x0;_0x22ad41[_0x2df7ef][_0x1ea2('0x32')]=0x0;_0x22ad41[_0x2df7ef][_0x1ea2('0x33')]=0x0;_0x22ad41[_0x2df7ef][_0x1ea2('0x34')]=0x0;_0x22ad41[_0x2df7ef][_0x1ea2('0x35')]=0x0;_0x22ad41[_0x2df7ef][_0x1ea2('0x36')]=0x0;_0x22ad41[_0x2df7ef]['outboundUnknownCallsDay']=0x0;_0x22ad41[_0x2df7ef]['outboundDropCallsDayTimeout']=0x0;_0x22ad41[_0x2df7ef]['outboundDropCallsDayCallersExit']=0x0;_0x22ad41[_0x2df7ef][_0x1ea2('0x37')]=0x0;_0x22ad41[_0x2df7ef][_0x1ea2('0x38')]=0x0;_0x22ad41[_0x2df7ef][_0x1ea2('0x39')]=0x0;_0x22ad41[_0x2df7ef]['outboundReCallsDay']=0x0;_0x22ad41[_0x2df7ef][_0x1ea2('0x32')]=0x0;_0x22ad41[_0x2df7ef][_0x1ea2('0x3a')]=0x0;_0x22ad41[_0x2df7ef][_0x1ea2('0x3b')]=!![];}}}}Realtime[_0x1ea2('0x3c')][_0x1ea2('0x3d')]=function(_0x152e2b,_0x7c2290){for(var _0x567bb6 in _0x7c2290){if(_0x152e2b[_0x1ea2('0x27')](_0x567bb6)){_0x152e2b[_0x567bb6]=_0x7c2290[_0x567bb6];}}};Realtime[_0x1ea2('0x3c')]['initAgents']=function(){var _0x2b14b6=this;return function(_0x259c1e){if(_0x259c1e){freeIsNotKeyAgent(_0x259c1e,_0x2b14b6[_0x1ea2('0x10')]);for(var _0x3266a7=0x0,_0x3716ac={},_0x4b78bb={};_0x3266a7<_0x259c1e[_0x1ea2('0x3e')];_0x3266a7+=0x1){_0x3716ac=_0x259c1e[_0x3266a7];var _0x4d3912=_[_0x1ea2('0x29')](_0x3716ac[_0x1ea2('0x2a')])?util[_0x1ea2('0x24')](_0x1ea2('0x25'),_0x3716ac[_0x1ea2('0x26')]):_0x3716ac[_0x1ea2('0x2a')];if(_[_0x1ea2('0x3f')](_0x2b14b6[_0x1ea2('0x10')][_0x4d3912])){_0x2b14b6[_0x1ea2('0x10')][_0x4d3912]=new Agent(_0x3716ac);}else{_0x2b14b6[_0x1ea2('0x3d')](_0x2b14b6[_0x1ea2('0x10')][_0x4d3912],_0x3716ac);}}}return _0x2b14b6[_0x1ea2('0x10')];};};Realtime[_0x1ea2('0x3c')][_0x1ea2('0x40')]=function(){var _0x45d48b=this;return function(_0x5f2966){if(_0x5f2966){freeIsNotKeySip(_0x5f2966,_0x45d48b['telephones']);for(var _0x411766=0x0,_0x7acab0={},_0x3d241c={};_0x411766<_0x5f2966[_0x1ea2('0x3e')];_0x411766+=0x1){_0x7acab0=_0x5f2966[_0x411766];if(_['isUndefined'](_0x45d48b[_0x1ea2('0x11')][util[_0x1ea2('0x24')](_0x1ea2('0x25'),_0x7acab0['name'])])){_0x45d48b[_0x1ea2('0x11')][util[_0x1ea2('0x24')](_0x1ea2('0x25'),_0x7acab0[_0x1ea2('0x26')])]=new Telephone(_0x7acab0);}else{_0x45d48b['mergeFromDatabase'](_0x45d48b['telephones'][util['format'](_0x1ea2('0x25'),_0x7acab0[_0x1ea2('0x26')])],_0x7acab0);}}}return _0x45d48b[_0x1ea2('0x11')];};};Realtime[_0x1ea2('0x3c')][_0x1ea2('0x41')]=function(){var _0x2153c4=this;return function(_0x182032){if(_0x182032){freeIsNotKeySip(_0x182032,_0x2153c4[_0x1ea2('0x12')]);for(var _0x1b8dcf=0x0,_0x1cd2fe={},_0x4a8fc2={};_0x1b8dcf<_0x182032[_0x1ea2('0x3e')];_0x1b8dcf+=0x1){_0x1cd2fe=_0x182032[_0x1b8dcf];if(_['isUndefined'](_0x2153c4[_0x1ea2('0x12')][util[_0x1ea2('0x24')](_0x1ea2('0x25'),_0x1cd2fe[_0x1ea2('0x26')])])){_0x2153c4[_0x1ea2('0x12')][util[_0x1ea2('0x24')]('SIP/%s',_0x1cd2fe[_0x1ea2('0x26')])]=new Trunk(_0x1cd2fe);}else{_0x2153c4['mergeFromDatabase'](_0x2153c4[_0x1ea2('0x12')][util[_0x1ea2('0x24')](_0x1ea2('0x25'),_0x1cd2fe['name'])],_0x1cd2fe);}}}return _0x2153c4['trunks'];};};Realtime[_0x1ea2('0x3c')][_0x1ea2('0x42')]=function(){var _0x199a80=this;return function(_0x29d239){if(_0x29d239){freeIsNotKey(_0x29d239,_0x199a80['voiceQueues'],'name');for(var _0x4f0f7b=0x0,_0x291338={},_0x52fb1f={};_0x4f0f7b<_0x29d239[_0x1ea2('0x3e')];_0x4f0f7b+=0x1){_0x291338=_0x29d239[_0x4f0f7b];if(_[_0x1ea2('0x3f')](_0x199a80[_0x1ea2('0x13')][_0x291338['name']])){_0x199a80['voiceQueues'][_0x291338[_0x1ea2('0x26')]]=new VoiceQueue(_0x291338);}else{_0x199a80['mergeFromDatabase'](_0x199a80['voiceQueues'][_0x291338[_0x1ea2('0x26')]],_0x291338);}}}return _0x199a80[_0x1ea2('0x13')];};};Realtime[_0x1ea2('0x3c')][_0x1ea2('0x43')]=function(){var _0x2e3491=this;return function(_0x3dc54b){if(_0x3dc54b){freeIsNotKey(_0x3dc54b,_0x2e3491['triggers'],'id');for(var _0x567394=0x0,_0x4e1a0e={},_0x57c106={};_0x567394<_0x3dc54b['length'];_0x567394+=0x1){_0x4e1a0e=_0x3dc54b[_0x567394];if(_[_0x1ea2('0x3f')](_0x2e3491['triggers'][_0x4e1a0e['id']])){_0x2e3491[_0x1ea2('0x14')][_0x4e1a0e['id']]=new Trigger(_0x4e1a0e);}else{_0x2e3491[_0x1ea2('0x3d')](_0x2e3491[_0x1ea2('0x14')][_0x4e1a0e['id']],_0x4e1a0e);}}}return _0x2e3491[_0x1ea2('0x14')];};};Realtime[_0x1ea2('0x3c')][_0x1ea2('0x44')]=function(){var _0x5ebcc0=this;return function(_0x1cbf3a){if(_0x1cbf3a){freeIsNotKey(_0x1cbf3a,_0x5ebcc0[_0x1ea2('0x45')],'id');for(var _0x4e6dbc=0x0,_0x2876cb={},_0x18dc66={};_0x4e6dbc<_0x1cbf3a[_0x1ea2('0x3e')];_0x4e6dbc+=0x1){_0x2876cb=_0x1cbf3a[_0x4e6dbc];if(_[_0x1ea2('0x3f')](_0x5ebcc0[_0x1ea2('0x45')][_0x2876cb['id']])){_0x5ebcc0['templates'][_0x2876cb['id']]=new Template(_0x2876cb);}else{_0x5ebcc0['mergeFromDatabase'](_0x5ebcc0[_0x1ea2('0x45')][_0x2876cb['id']],_0x2876cb);}}}return _0x5ebcc0[_0x1ea2('0x45')];};};Realtime[_0x1ea2('0x3c')][_0x1ea2('0x46')]=function(){var _0x479a7b=this;return function(_0x56c59e){if(_0x56c59e){freeIsNotKey(_0x56c59e,_0x479a7b['zendeskAccounts'],'id');for(var _0x334eb8=0x0,_0x497e7c={},_0xd10e1={};_0x334eb8<_0x56c59e['length'];_0x334eb8+=0x1){_0x497e7c=_0x56c59e[_0x334eb8];if(_['isUndefined'](_0x479a7b[_0x1ea2('0x47')][_0x497e7c['id']])){_0x479a7b['zendeskAccounts'][_0x497e7c['id']]=new ZendeskAccount(_0x497e7c);}else{_0x479a7b[_0x1ea2('0x3d')](_0x479a7b['zendeskAccounts'][_0x497e7c['id']],_0x497e7c);}}}return _0x479a7b[_0x1ea2('0x47')];};};Realtime[_0x1ea2('0x3c')]['initSalesforceAccounts']=function(){var _0x48d2c0=this;return function(_0x3fd9e0){if(_0x3fd9e0){freeIsNotKey(_0x3fd9e0,_0x48d2c0[_0x1ea2('0x1c')],'id');for(var _0x363929=0x0,_0x440741={},_0x180d67={};_0x363929<_0x3fd9e0[_0x1ea2('0x3e')];_0x363929+=0x1){_0x440741=_0x3fd9e0[_0x363929];if(_['isUndefined'](_0x48d2c0['salesforceAccounts'][_0x440741['id']])){_0x48d2c0[_0x1ea2('0x1c')][_0x440741['id']]=new SalesforceAccount(_0x440741);}else{_0x48d2c0[_0x1ea2('0x3d')](_0x48d2c0['salesforceAccounts'][_0x440741['id']],_0x440741);}}}return _0x48d2c0[_0x1ea2('0x1c')];};};Realtime[_0x1ea2('0x3c')][_0x1ea2('0x48')]=function(){var _0x39daca=this;return function(_0xf300e4){if(_0xf300e4){freeIsNotKey(_0xf300e4,_0x39daca['freshdeskAccounts'],'id');for(var _0x44e5e9=0x0,_0x493b23={},_0x3eedd2={};_0x44e5e9<_0xf300e4[_0x1ea2('0x3e')];_0x44e5e9+=0x1){_0x493b23=_0xf300e4[_0x44e5e9];if(_[_0x1ea2('0x3f')](_0x39daca[_0x1ea2('0x1e')][_0x493b23['id']])){_0x39daca['freshdeskAccounts'][_0x493b23['id']]=new FreshdeskAccount(_0x493b23);}else{_0x39daca[_0x1ea2('0x3d')](_0x39daca['freshdeskAccounts'][_0x493b23['id']],_0x493b23);}}}return _0x39daca['freshdeskAccounts'];};};Realtime['prototype']['initZohoAccounts']=function(){var _0x212391=this;return function(_0x9e0f){if(_0x9e0f){freeIsNotKey(_0x9e0f,_0x212391[_0x1ea2('0x49')],'id');for(var _0x5abef2=0x0,_0x3a93eb={},_0x403156={};_0x5abef2<_0x9e0f[_0x1ea2('0x3e')];_0x5abef2+=0x1){_0x3a93eb=_0x9e0f[_0x5abef2];if(_[_0x1ea2('0x3f')](_0x212391['zohoAccounts'][_0x3a93eb['id']])){_0x212391[_0x1ea2('0x49')][_0x3a93eb['id']]=new ZohoAccount(_0x3a93eb);}else{_0x212391['mergeFromDatabase'](_0x212391[_0x1ea2('0x49')][_0x3a93eb['id']],_0x3a93eb);}}}return _0x212391['zohoAccounts'];};};Realtime[_0x1ea2('0x3c')][_0x1ea2('0x4a')]=function(){var _0x3e55cf=this;return function(_0xee03ef){if(_0xee03ef){freeIsNotKey(_0xee03ef,_0x3e55cf[_0x1ea2('0x1f')],'id');for(var _0x25f51b=0x0,_0x12682={},_0x231c73={};_0x25f51b<_0xee03ef['length'];_0x25f51b+=0x1){_0x12682=_0xee03ef[_0x25f51b];if(_[_0x1ea2('0x3f')](_0x3e55cf['deskAccounts'][_0x12682['id']])){_0x3e55cf[_0x1ea2('0x1f')][_0x12682['id']]=new DeskAccount(_0x12682);}else{_0x3e55cf[_0x1ea2('0x3d')](_0x3e55cf['deskAccounts'][_0x12682['id']],_0x12682);}}}return _0x3e55cf[_0x1ea2('0x1f')];};};Realtime[_0x1ea2('0x3c')][_0x1ea2('0x4b')]=function(){var _0x487912=this;return function(_0x2974c2){if(_0x2974c2){freeIsNotKey(_0x2974c2,_0x487912[_0x1ea2('0x1d')],'id');for(var _0x45bb19=0x0,_0x271404={},_0x4274d2={};_0x45bb19<_0x2974c2[_0x1ea2('0x3e')];_0x45bb19+=0x1){_0x271404=_0x2974c2[_0x45bb19];if(_[_0x1ea2('0x3f')](_0x487912[_0x1ea2('0x1d')][_0x271404['id']])){_0x487912[_0x1ea2('0x1d')][_0x271404['id']]=new SugarcrmAccount(_0x271404);}else{_0x487912[_0x1ea2('0x3d')](_0x487912[_0x1ea2('0x1d')][_0x271404['id']],_0x271404);}}}return _0x487912[_0x1ea2('0x1d')];};};Realtime[_0x1ea2('0x3c')][_0x1ea2('0x4c')]=function(){var _0x101687=this;return function(_0x53349e){if(_0x53349e){freeIsNotKey(_0x53349e,_0x101687[_0x1ea2('0x20')],'id');for(var _0x431ecc=0x0,_0x2e646b={},_0x2eb1d8={};_0x431ecc<_0x53349e[_0x1ea2('0x3e')];_0x431ecc+=0x1){_0x2e646b=_0x53349e[_0x431ecc];if(_[_0x1ea2('0x3f')](_0x101687[_0x1ea2('0x20')][_0x2e646b['id']])){_0x101687['vtigerAccounts'][_0x2e646b['id']]=new VtigerAccount(_0x2e646b);}else{_0x101687[_0x1ea2('0x3d')](_0x101687[_0x1ea2('0x20')][_0x2e646b['id']],_0x2e646b);}}}return _0x101687[_0x1ea2('0x20')];};};Realtime[_0x1ea2('0x3c')][_0x1ea2('0x4d')]=function(){var _0x4fd0f4=this;return function(_0x44eb20){if(_0x44eb20){freeIsNotKey(_0x44eb20,_0x4fd0f4[_0x1ea2('0x21')],'id');for(var _0x40c198=0x0,_0x2d0535={},_0x18bd90={};_0x40c198<_0x44eb20[_0x1ea2('0x3e')];_0x40c198+=0x1){_0x2d0535=_0x44eb20[_0x40c198];if(_[_0x1ea2('0x3f')](_0x4fd0f4[_0x1ea2('0x21')][_0x2d0535['id']])){_0x4fd0f4[_0x1ea2('0x21')][_0x2d0535['id']]=new ServicenowAccount(_0x2d0535);}else{_0x4fd0f4[_0x1ea2('0x3d')](_0x4fd0f4['servicenowAccounts'][_0x2d0535['id']],_0x2d0535);}}}return _0x4fd0f4[_0x1ea2('0x21')];};};Realtime['prototype'][_0x1ea2('0x4e')]=function(){var _0x1f60e4=this;return function(_0xfd8b97){if(_0xfd8b97){freeIsNotKey(_0xfd8b97,_0x1f60e4['dynamics365Accounts'],'id');for(var _0x24a4ec=0x0,_0xa0a51f={},_0x108b9f={};_0x24a4ec<_0xfd8b97[_0x1ea2('0x3e')];_0x24a4ec+=0x1){_0xa0a51f=_0xfd8b97[_0x24a4ec];if(_['isUndefined'](_0x1f60e4[_0x1ea2('0x22')][_0xa0a51f['id']])){_0x1f60e4[_0x1ea2('0x22')][_0xa0a51f['id']]=new Dynamics365Account(_0xa0a51f);}else{_0x1f60e4[_0x1ea2('0x3d')](_0x1f60e4[_0x1ea2('0x22')][_0xa0a51f['id']],_0xa0a51f);}}}return _0x1f60e4[_0x1ea2('0x22')];};};Realtime['prototype']['initFreshsalesAccounts']=function(){var _0x4e2a9c=this;return function(_0x86978a){if(_0x86978a){freeIsNotKey(_0x86978a,_0x4e2a9c[_0x1ea2('0x4f')],'id');for(var _0x524d82=0x0,_0x31c7a0={},_0xaac058={};_0x524d82<_0x86978a[_0x1ea2('0x3e')];_0x524d82+=0x1){_0x31c7a0=_0x86978a[_0x524d82];if(_[_0x1ea2('0x3f')](_0x4e2a9c[_0x1ea2('0x4f')][_0x31c7a0['id']])){_0x4e2a9c[_0x1ea2('0x4f')][_0x31c7a0['id']]=new FreshsalesAccount(_0x31c7a0);}else{_0x4e2a9c[_0x1ea2('0x3d')](_0x4e2a9c['freshsalesAccounts'][_0x31c7a0['id']],_0x31c7a0);}}}return _0x4e2a9c['freshsalesAccounts'];};};Realtime[_0x1ea2('0x3c')][_0x1ea2('0x50')]=function(){var _0x5dc262=this;return function(_0x27139d){for(var _0x938c90=0x0;_0x938c90<_0x27139d['length'];_0x938c90+=0x1){_[_0x1ea2('0x51')](_0x5dc262[_0x1ea2('0x13')][_0x27139d[_0x938c90]['name']],_0x27139d[_0x938c90]);}return _0x5dc262[_0x1ea2('0x13')];};};Realtime[_0x1ea2('0x3c')][_0x1ea2('0x52')]=function(){var _0x547a65=this;return function(_0x51f484){clearVoiceQueues(_0x547a65[_0x1ea2('0x13')]);if(_0x51f484){_0x51f484=_['groupBy'](_0x51f484,_0x1ea2('0x53'));for(var _0x516ba6 in _0x51f484){if(_0x51f484['hasOwnProperty'](_0x516ba6)){var _0x5cc4b2={};for(var _0x3eea9b=0x0;_0x3eea9b<_0x51f484[_0x516ba6]['length'];_0x3eea9b+=0x1){var _0x60e147=_0x51f484[_0x516ba6][_0x3eea9b][_0x1ea2('0x54')];if(_0x547a65[_0x1ea2('0x13')][_0x60e147]){if(_0x51f484[_0x516ba6][_0x3eea9b][_0x1ea2('0x55')]){_0x547a65[_0x1ea2('0x13')][_0x60e147][_0x1ea2('0x31')]+=0x1;}if(_0x51f484[_0x516ba6][_0x3eea9b]['queuecallerabandon']){_0x547a65[_0x1ea2('0x13')][_0x60e147][_0x1ea2('0x56')]+=0x1;}_0x547a65[_0x1ea2('0x13')][_0x60e147][_0x1ea2('0x2c')]+=moment(_0x51f484[_0x516ba6][_0x3eea9b]['queuecallerleaveAt'])[_0x1ea2('0x57')](moment(_0x51f484[_0x516ba6][_0x3eea9b][_0x1ea2('0x58')]),_0x1ea2('0x59'))||0x0;if(_0x3eea9b===_0x51f484[_0x516ba6][_0x1ea2('0x3e')]-0x1){_0x547a65[_0x1ea2('0x13')][_0x60e147][_0x1ea2('0x2d')]+=moment(_0x51f484[_0x516ba6][_0x3eea9b]['queuecallercompleteAt']||_0x51f484[_0x516ba6][_0x3eea9b][_0x1ea2('0x5a')]||_0x51f484[_0x516ba6][_0x3eea9b][_0x1ea2('0x5b')])[_0x1ea2('0x57')](moment(_0x51f484[_0x516ba6][_0x3eea9b][_0x1ea2('0x58')]),'seconds')||0x0;_0x547a65[_0x1ea2('0x13')][_0x60e147][_0x1ea2('0x2b')]+=0x1;if(_0x51f484[_0x516ba6][_0x3eea9b][_0x1ea2('0x5c')]){_0x547a65[_0x1ea2('0x13')][_0x60e147][_0x1ea2('0x5d')]+=0x1;_0x547a65[_0x1ea2('0x13')][_0x60e147][_0x1ea2('0x2e')]+=moment(_0x51f484[_0x516ba6][_0x3eea9b][_0x1ea2('0x5e')])[_0x1ea2('0x57')](moment(_0x51f484[_0x516ba6][_0x3eea9b]['queuecallerleaveAt']),'seconds')||0x0;}}else{_0x547a65[_0x1ea2('0x13')][_0x60e147][_0x1ea2('0x2d')]+=_0x547a65[_0x1ea2('0x13')][_0x60e147][_0x1ea2('0x2c')]||0x0;}}}}}}return _0x547a65['voiceQueues'];};};Realtime[_0x1ea2('0x3c')][_0x1ea2('0x5f')]=function(){var _0x10dc58=this;return function(_0x12bbeb){clearVoiceCallReports(_0x10dc58['outbound']);if(_0x12bbeb){for(var _0x269c64=0x0;_0x269c64<_0x12bbeb['length'];_0x269c64+=0x1){_0x10dc58[_0x1ea2('0x15')][_0x1ea2('0x2b')]+=0x1;_0x10dc58['outbound']['sumDuration']+=_0x12bbeb[_0x269c64][_0x1ea2('0x60')];if(_0x12bbeb[_0x269c64][_0x1ea2('0x61')]===_0x1ea2('0x62')){_0x10dc58[_0x1ea2('0x15')]['answered']+=0x1;_0x10dc58['outbound']['sumHoldTime']+=_0x12bbeb[_0x269c64]['duration']-_0x12bbeb[_0x269c64]['billableseconds']||0x0;_0x10dc58[_0x1ea2('0x15')]['sumBillable']+=_0x12bbeb[_0x269c64]['billableseconds'];}}}return _0x10dc58[_0x1ea2('0x15')];};};Realtime[_0x1ea2('0x3c')][_0x1ea2('0x63')]=function(){var _0x35f581=this;return function(_0xf39f41){if(_0xf39f41){freeIsNotKey(_0xf39f41,_0x35f581['campaigns'],'name');for(var _0x4261c1=0x0,_0x31736f={};_0x4261c1<_0xf39f41['length'];_0x4261c1+=0x1){_0x31736f=_0xf39f41[_0x4261c1];if(_[_0x1ea2('0x3f')](_0x35f581[_0x1ea2('0x64')][_0x31736f[_0x1ea2('0x26')]])){_0x35f581[_0x1ea2('0x64')][_0x31736f[_0x1ea2('0x26')]]=new Campaign(_0x31736f);}else{_0x35f581[_0x1ea2('0x3d')](_0x35f581[_0x1ea2('0x64')][_0x31736f[_0x1ea2('0x26')]],_0x31736f);_0x35f581[_0x1ea2('0x64')][_0x31736f[_0x1ea2('0x26')]][_0x1ea2('0x65')]=_0x31736f['SquareProject']?_0x31736f['SquareProject']['name']:undefined;}}}return _0x35f581['campaigns'];};};Realtime[_0x1ea2('0x3c')][_0x1ea2('0x66')]=function(){var _0x9b2dd4=this;return function(_0x2b1e42){if(_0x2b1e42){freeIsNotKey(_0x2b1e42,_0x9b2dd4['voiceExtensions'],'id');for(var _0xa1797c=0x0,_0x13e16e={};_0xa1797c<_0x2b1e42[_0x1ea2('0x3e')];_0xa1797c+=0x1){_0x13e16e=_0x2b1e42[_0xa1797c];if(_[_0x1ea2('0x3f')](_0x9b2dd4[_0x1ea2('0x16')][_0x13e16e['id']])){_0x9b2dd4[_0x1ea2('0x16')][_0x13e16e['id']]=new VoiceExtension(_0x13e16e);}else{_0x9b2dd4['mergeFromDatabase'](_0x9b2dd4['voiceExtensions'][_0x13e16e['id']],_0x13e16e);}}}return _0x9b2dd4['voiceExtensions'];};};Realtime[_0x1ea2('0x3c')]['initCampaignHopperHistory']=function(){var _0xb6a47b=this;return function(_0x385ec4){clearCampaigns(_0xb6a47b[_0x1ea2('0x64')]);for(var _0x378870=0x0;_0x378870<_0x385ec4['length'];_0x378870+=0x1){_[_0x1ea2('0x51')](_0xb6a47b[_0x1ea2('0x64')][_0x385ec4[_0x378870][_0x1ea2('0x26')]],_0x385ec4[_0x378870]);}return _0xb6a47b[_0x1ea2('0x64')];};};Realtime[_0x1ea2('0x3c')][_0x1ea2('0x67')]=function(){var _0xedff6c=this;return function(_0x17e37b){if(_0x17e37b){freeIsNotKey(_0x17e37b,_0xedff6c[_0x1ea2('0x23')],'id');for(var _0x4362f1=0x0,_0x1d88ad={},_0x1d0d80={};_0x4362f1<_0x17e37b[_0x1ea2('0x3e')];_0x4362f1+=0x1){_0x1d88ad=_0x17e37b[_0x4362f1];if(_[_0x1ea2('0x3f')](_0xedff6c[_0x1ea2('0x23')][_0x1d88ad['id']])){_0xedff6c['faxAccounts'][_0x1d88ad['id']]=new FaxAccount(_0x1d88ad);}else{_0xedff6c[_0x1ea2('0x3d')](_0xedff6c['faxAccounts'][_0x1d88ad['id']],_0x1d88ad);}}}return _0xedff6c['faxAccounts'];};};module[_0x1ea2('0x68')]=Realtime;
\ No newline at end of file
+var _0x59f2=['zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','faxAccounts','mapKeys','hasOwnProperty','format','name','interface','SIP/%s','answered','sumDuration','sumBillable','ivrAnswerCallsDay','isEmpty','abandoned','sumHoldTime','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundUnknownCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundReCallsDay','outboundAnswerCallsDay','queueStatusComplete','mergeFromDatabase','prototype','initAgents','length','isNil','isUndefined','telephones','initTrunks','initVoiceQueues','initTriggers','zendeskAccounts','initSalesforceAccounts','initZohoAccounts','initDeskAccounts','initSugarcrmAccounts','initServicenowAccounts','initDynamics365Accounts','initFreshsalesAccounts','initVoiceQueueHopperHistory','merge','initVoiceQueueReports','groupBy','uniqueid','unmanaged','queuecallerabandon','queuecallerleaveAt','diff','queuecallerjoinAt','seconds','queuecallercompleteAt','queuecallerexitAt','total','queuecallercomplete','initVoiceCallReports','duration','disposition','ANSWERED','billableseconds','initCampaigns','campaigns','SquareProject','initVoiceExtensions','initCampaignHopperHistory','initFaxAccounts','../model/agent','../model/trunk','../model/voiceQueue','../model/trigger','../model/template','../model/voiceExtension','../model/zendeskAccount','../model/sugarcrmAccount','../model/zohoAccount','../model/deskAccount','../model/servicenowAccount','../model/freshsalesAccount','../model/faxAccount','agents','trunks','voiceQueues','triggers','templates','outbound','voiceExtensions','outboundChannels','timers','salesforceAccounts','sugarcrmAccounts','freshdeskAccounts'];(function(_0xc923,_0x3c0d55){var _0x2ff917=function(_0x1f5fbc){while(--_0x1f5fbc){_0xc923['push'](_0xc923['shift']());}};_0x2ff917(++_0x3c0d55);}(_0x59f2,0xb3));var _0x259f=function(_0x173441,_0x26b0d9){_0x173441=_0x173441-0x0;var _0x2423a8=_0x59f2[_0x173441];return _0x2423a8;};'use strict';var util=require('util');var _=require('lodash');var moment=require('moment');var Agent=require(_0x259f('0x0'));var Telephone=require('../model/telephone');var Trunk=require(_0x259f('0x1'));var VoiceQueue=require(_0x259f('0x2'));var Trigger=require(_0x259f('0x3'));var Template=require(_0x259f('0x4'));var Campaign=require('../model/campaign');var VoiceExtension=require(_0x259f('0x5'));var ZendeskAccount=require(_0x259f('0x6'));var SalesforceAccount=require('../model/salesforceAccount');var FreshdeskAccount=require('../model/freshdeskAccount');var SugarcrmAccount=require(_0x259f('0x7'));var ZohoAccount=require(_0x259f('0x8'));var DeskAccount=require(_0x259f('0x9'));var VtigerAccount=require('../model/vtigerAccount');var ServicenowAccount=require(_0x259f('0xa'));var Dynamics365Account=require('../model/dynamics365Account');var FreshsalesAccount=require(_0x259f('0xb'));var FaxAccount=require(_0x259f('0xc'));var Realtime=function(){this[_0x259f('0xd')]={};this['telephones']={};this[_0x259f('0xe')]={};this[_0x259f('0xf')]={};this[_0x259f('0x10')]={};this['campaigns']={};this[_0x259f('0x11')]={};this[_0x259f('0x12')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0x259f('0x13')]={};this['channels']={};this['queueChannels']={};this[_0x259f('0x14')]={};this[_0x259f('0x15')]={};this['settings']={};this['zendeskAccounts']={};this[_0x259f('0x16')]={};this[_0x259f('0x17')]={};this[_0x259f('0x18')]={};this[_0x259f('0x19')]={};this[_0x259f('0x1a')]={};this[_0x259f('0x1b')]={};this[_0x259f('0x1c')]={};this[_0x259f('0x1d')]={};this[_0x259f('0x1e')]={};this[_0x259f('0x1f')]={};};function freeIsNotKey(_0x447145,_0x7969de,_0x109dfe){var _0x3fe2ed=_[_0x259f('0x20')](_0x447145,function(_0x3303ca,_0x3e9ecf){return _0x3303ca[_0x109dfe];});for(var _0x6daf07 in _0x7969de){if(_0x7969de[_0x259f('0x21')](_0x6daf07)){if(!_0x3fe2ed[_0x6daf07]){delete _0x7969de[_0x6daf07];}}}}function freeIsNotKeySip(_0x39e4ab,_0x17eb71){var _0x5b49de=_[_0x259f('0x20')](_0x39e4ab,function(_0x4343b5,_0x5c2fa2){return util[_0x259f('0x22')]('SIP/%s',_0x4343b5[_0x259f('0x23')]);});for(var _0x225d21 in _0x17eb71){if(_0x17eb71['hasOwnProperty'](_0x225d21)){if(!_0x5b49de[_0x225d21]){delete _0x17eb71[_0x225d21];}}}}function freeIsNotKeyAgent(_0x1edbfc,_0x395a9e){var _0x500e7d=_['mapKeys'](_0x1edbfc,function(_0x33b646,_0x3832b0){var _0x163d83=_['isNil'](_0x33b646[_0x259f('0x24')])?util['format'](_0x259f('0x25'),_0x33b646['name']):_0x33b646[_0x259f('0x24')];return _0x163d83;});for(var _0x1562c6 in _0x395a9e){if(_0x395a9e[_0x259f('0x21')](_0x1562c6)){if(!_0x500e7d[_0x1562c6]){delete _0x395a9e[_0x1562c6];}}}}function clearVoiceCallReports(_0x980dea){_0x980dea['total']=0x0;_0x980dea[_0x259f('0x26')]=0x0;_0x980dea['sumHoldTime']=0x0;_0x980dea[_0x259f('0x27')]=0x0;_0x980dea[_0x259f('0x28')]=0x0;}function clearCampaigns(_0x549d37){if(!_['isEmpty'](_0x549d37)){for(var _0x208698 in _0x549d37){if(_0x549d37[_0x259f('0x21')](_0x208698)){_0x549d37[_0x208698]['ivrTotalCallsDays']=0x0;_0x549d37[_0x208698][_0x259f('0x29')]=0x0;}}}}function clearVoiceQueues(_0x42f9f8){if(!_[_0x259f('0x2a')](_0x42f9f8)){for(var _0x2f8b8e in _0x42f9f8){if(_0x42f9f8['hasOwnProperty'](_0x2f8b8e)){_0x42f9f8[_0x2f8b8e]['total']=0x0;_0x42f9f8[_0x2f8b8e][_0x259f('0x26')]=0x0;_0x42f9f8[_0x2f8b8e]['unmanaged']=0x0;_0x42f9f8[_0x2f8b8e][_0x259f('0x2b')]=0x0;_0x42f9f8[_0x2f8b8e][_0x259f('0x2c')]=0x0;_0x42f9f8[_0x2f8b8e]['sumDuration']=0x0;_0x42f9f8[_0x2f8b8e][_0x259f('0x28')]=0x0;_0x42f9f8[_0x2f8b8e][_0x259f('0x2d')]=0x0;_0x42f9f8[_0x2f8b8e][_0x259f('0x2e')]=0x0;_0x42f9f8[_0x2f8b8e][_0x259f('0x2f')]=0x0;_0x42f9f8[_0x2f8b8e][_0x259f('0x30')]=0x0;_0x42f9f8[_0x2f8b8e]['outboundNoSuchCallsDay']=0x0;_0x42f9f8[_0x2f8b8e][_0x259f('0x31')]=0x0;_0x42f9f8[_0x2f8b8e][_0x259f('0x32')]=0x0;_0x42f9f8[_0x2f8b8e][_0x259f('0x33')]=0x0;_0x42f9f8[_0x2f8b8e][_0x259f('0x34')]=0x0;_0x42f9f8[_0x2f8b8e][_0x259f('0x35')]=0x0;_0x42f9f8[_0x2f8b8e][_0x259f('0x36')]=0x0;_0x42f9f8[_0x2f8b8e][_0x259f('0x37')]=0x0;_0x42f9f8[_0x2f8b8e][_0x259f('0x2d')]=0x0;_0x42f9f8[_0x2f8b8e][_0x259f('0x38')]=0x0;_0x42f9f8[_0x2f8b8e][_0x259f('0x39')]=!![];}}}}Realtime['prototype'][_0x259f('0x3a')]=function(_0x4828f8,_0x5681c3){for(var _0x796d5b in _0x5681c3){if(_0x4828f8[_0x259f('0x21')](_0x796d5b)){_0x4828f8[_0x796d5b]=_0x5681c3[_0x796d5b];}}};Realtime[_0x259f('0x3b')][_0x259f('0x3c')]=function(){var _0x47420b=this;return function(_0x2782f3){if(_0x2782f3){freeIsNotKeyAgent(_0x2782f3,_0x47420b[_0x259f('0xd')]);for(var _0x37e120=0x0,_0x382e0f={},_0x41169e={};_0x37e120<_0x2782f3[_0x259f('0x3d')];_0x37e120+=0x1){_0x382e0f=_0x2782f3[_0x37e120];var _0x170e55=_[_0x259f('0x3e')](_0x382e0f[_0x259f('0x24')])?util[_0x259f('0x22')]('SIP/%s',_0x382e0f[_0x259f('0x23')]):_0x382e0f[_0x259f('0x24')];if(_[_0x259f('0x3f')](_0x47420b[_0x259f('0xd')][_0x170e55])){_0x47420b['agents'][_0x170e55]=new Agent(_0x382e0f);}else{_0x47420b[_0x259f('0x3a')](_0x47420b[_0x259f('0xd')][_0x170e55],_0x382e0f);}}}return _0x47420b['agents'];};};Realtime[_0x259f('0x3b')]['initTelephones']=function(){var _0x2260b2=this;return function(_0x4f8953){if(_0x4f8953){freeIsNotKeySip(_0x4f8953,_0x2260b2['telephones']);for(var _0x55bf9e=0x0,_0xf5b78f={},_0x4aadb7={};_0x55bf9e<_0x4f8953[_0x259f('0x3d')];_0x55bf9e+=0x1){_0xf5b78f=_0x4f8953[_0x55bf9e];if(_['isUndefined'](_0x2260b2[_0x259f('0x40')][util[_0x259f('0x22')](_0x259f('0x25'),_0xf5b78f[_0x259f('0x23')])])){_0x2260b2[_0x259f('0x40')][util[_0x259f('0x22')](_0x259f('0x25'),_0xf5b78f[_0x259f('0x23')])]=new Telephone(_0xf5b78f);}else{_0x2260b2[_0x259f('0x3a')](_0x2260b2[_0x259f('0x40')][util[_0x259f('0x22')]('SIP/%s',_0xf5b78f['name'])],_0xf5b78f);}}}return _0x2260b2['telephones'];};};Realtime[_0x259f('0x3b')][_0x259f('0x41')]=function(){var _0x2684d8=this;return function(_0x453501){if(_0x453501){freeIsNotKeySip(_0x453501,_0x2684d8[_0x259f('0xe')]);for(var _0x571f4a=0x0,_0x2340dc={},_0x367de5={};_0x571f4a<_0x453501['length'];_0x571f4a+=0x1){_0x2340dc=_0x453501[_0x571f4a];if(_[_0x259f('0x3f')](_0x2684d8[_0x259f('0xe')][util[_0x259f('0x22')](_0x259f('0x25'),_0x2340dc['name'])])){_0x2684d8[_0x259f('0xe')][util['format'](_0x259f('0x25'),_0x2340dc['name'])]=new Trunk(_0x2340dc);}else{_0x2684d8[_0x259f('0x3a')](_0x2684d8['trunks'][util[_0x259f('0x22')](_0x259f('0x25'),_0x2340dc[_0x259f('0x23')])],_0x2340dc);}}}return _0x2684d8[_0x259f('0xe')];};};Realtime[_0x259f('0x3b')][_0x259f('0x42')]=function(){var _0x38df39=this;return function(_0x5ccbe9){if(_0x5ccbe9){freeIsNotKey(_0x5ccbe9,_0x38df39[_0x259f('0xf')],_0x259f('0x23'));for(var _0xce869f=0x0,_0x2792d8={},_0x104878={};_0xce869f<_0x5ccbe9[_0x259f('0x3d')];_0xce869f+=0x1){_0x2792d8=_0x5ccbe9[_0xce869f];if(_['isUndefined'](_0x38df39[_0x259f('0xf')][_0x2792d8[_0x259f('0x23')]])){_0x38df39[_0x259f('0xf')][_0x2792d8[_0x259f('0x23')]]=new VoiceQueue(_0x2792d8);}else{_0x38df39[_0x259f('0x3a')](_0x38df39['voiceQueues'][_0x2792d8[_0x259f('0x23')]],_0x2792d8);}}}return _0x38df39[_0x259f('0xf')];};};Realtime['prototype'][_0x259f('0x43')]=function(){var _0x7f2793=this;return function(_0x3c53eb){if(_0x3c53eb){freeIsNotKey(_0x3c53eb,_0x7f2793['triggers'],'id');for(var _0x3f1db8=0x0,_0x4e21b7={},_0x5a4d1a={};_0x3f1db8<_0x3c53eb[_0x259f('0x3d')];_0x3f1db8+=0x1){_0x4e21b7=_0x3c53eb[_0x3f1db8];if(_[_0x259f('0x3f')](_0x7f2793[_0x259f('0x10')][_0x4e21b7['id']])){_0x7f2793[_0x259f('0x10')][_0x4e21b7['id']]=new Trigger(_0x4e21b7);}else{_0x7f2793[_0x259f('0x3a')](_0x7f2793['triggers'][_0x4e21b7['id']],_0x4e21b7);}}}return _0x7f2793[_0x259f('0x10')];};};Realtime['prototype']['initTemplates']=function(){var _0x12bef4=this;return function(_0x1ef562){if(_0x1ef562){freeIsNotKey(_0x1ef562,_0x12bef4[_0x259f('0x11')],'id');for(var _0x19537a=0x0,_0x1e6a3f={},_0xcbcb44={};_0x19537a<_0x1ef562[_0x259f('0x3d')];_0x19537a+=0x1){_0x1e6a3f=_0x1ef562[_0x19537a];if(_[_0x259f('0x3f')](_0x12bef4[_0x259f('0x11')][_0x1e6a3f['id']])){_0x12bef4[_0x259f('0x11')][_0x1e6a3f['id']]=new Template(_0x1e6a3f);}else{_0x12bef4[_0x259f('0x3a')](_0x12bef4['templates'][_0x1e6a3f['id']],_0x1e6a3f);}}}return _0x12bef4[_0x259f('0x11')];};};Realtime['prototype']['initZendeskAccounts']=function(){var _0x49683d=this;return function(_0x2351d9){if(_0x2351d9){freeIsNotKey(_0x2351d9,_0x49683d[_0x259f('0x44')],'id');for(var _0x2c7d6c=0x0,_0x2f0e4a={},_0x1a5fdf={};_0x2c7d6c<_0x2351d9[_0x259f('0x3d')];_0x2c7d6c+=0x1){_0x2f0e4a=_0x2351d9[_0x2c7d6c];if(_['isUndefined'](_0x49683d[_0x259f('0x44')][_0x2f0e4a['id']])){_0x49683d[_0x259f('0x44')][_0x2f0e4a['id']]=new ZendeskAccount(_0x2f0e4a);}else{_0x49683d[_0x259f('0x3a')](_0x49683d[_0x259f('0x44')][_0x2f0e4a['id']],_0x2f0e4a);}}}return _0x49683d[_0x259f('0x44')];};};Realtime[_0x259f('0x3b')][_0x259f('0x45')]=function(){var _0x5071a0=this;return function(_0x309b34){if(_0x309b34){freeIsNotKey(_0x309b34,_0x5071a0[_0x259f('0x16')],'id');for(var _0x4afd5d=0x0,_0x4a65f7={},_0x22a97f={};_0x4afd5d<_0x309b34['length'];_0x4afd5d+=0x1){_0x4a65f7=_0x309b34[_0x4afd5d];if(_[_0x259f('0x3f')](_0x5071a0['salesforceAccounts'][_0x4a65f7['id']])){_0x5071a0[_0x259f('0x16')][_0x4a65f7['id']]=new SalesforceAccount(_0x4a65f7);}else{_0x5071a0[_0x259f('0x3a')](_0x5071a0[_0x259f('0x16')][_0x4a65f7['id']],_0x4a65f7);}}}return _0x5071a0[_0x259f('0x16')];};};Realtime[_0x259f('0x3b')]['initFreshdeskAccounts']=function(){var _0x1b3b01=this;return function(_0xba0aaa){if(_0xba0aaa){freeIsNotKey(_0xba0aaa,_0x1b3b01[_0x259f('0x18')],'id');for(var _0x51f5b8=0x0,_0x2fcd7c={},_0x3f7f62={};_0x51f5b8<_0xba0aaa[_0x259f('0x3d')];_0x51f5b8+=0x1){_0x2fcd7c=_0xba0aaa[_0x51f5b8];if(_[_0x259f('0x3f')](_0x1b3b01['freshdeskAccounts'][_0x2fcd7c['id']])){_0x1b3b01['freshdeskAccounts'][_0x2fcd7c['id']]=new FreshdeskAccount(_0x2fcd7c);}else{_0x1b3b01['mergeFromDatabase'](_0x1b3b01[_0x259f('0x18')][_0x2fcd7c['id']],_0x2fcd7c);}}}return _0x1b3b01[_0x259f('0x18')];};};Realtime[_0x259f('0x3b')][_0x259f('0x46')]=function(){var _0x5ef02b=this;return function(_0x283c3c){if(_0x283c3c){freeIsNotKey(_0x283c3c,_0x5ef02b['zohoAccounts'],'id');for(var _0xf52776=0x0,_0x2c7f46={},_0x7003a5={};_0xf52776<_0x283c3c[_0x259f('0x3d')];_0xf52776+=0x1){_0x2c7f46=_0x283c3c[_0xf52776];if(_[_0x259f('0x3f')](_0x5ef02b[_0x259f('0x19')][_0x2c7f46['id']])){_0x5ef02b[_0x259f('0x19')][_0x2c7f46['id']]=new ZohoAccount(_0x2c7f46);}else{_0x5ef02b[_0x259f('0x3a')](_0x5ef02b[_0x259f('0x19')][_0x2c7f46['id']],_0x2c7f46);}}}return _0x5ef02b[_0x259f('0x19')];};};Realtime['prototype'][_0x259f('0x47')]=function(){var _0xe33bfb=this;return function(_0xc535de){if(_0xc535de){freeIsNotKey(_0xc535de,_0xe33bfb['deskAccounts'],'id');for(var _0x372fba=0x0,_0x3e2304={},_0x2b9f7b={};_0x372fba<_0xc535de[_0x259f('0x3d')];_0x372fba+=0x1){_0x3e2304=_0xc535de[_0x372fba];if(_[_0x259f('0x3f')](_0xe33bfb[_0x259f('0x1a')][_0x3e2304['id']])){_0xe33bfb[_0x259f('0x1a')][_0x3e2304['id']]=new DeskAccount(_0x3e2304);}else{_0xe33bfb[_0x259f('0x3a')](_0xe33bfb[_0x259f('0x1a')][_0x3e2304['id']],_0x3e2304);}}}return _0xe33bfb['deskAccounts'];};};Realtime[_0x259f('0x3b')][_0x259f('0x48')]=function(){var _0xb21fa1=this;return function(_0x2e789b){if(_0x2e789b){freeIsNotKey(_0x2e789b,_0xb21fa1[_0x259f('0x17')],'id');for(var _0x11c25c=0x0,_0x5a483b={},_0x420eb={};_0x11c25c<_0x2e789b[_0x259f('0x3d')];_0x11c25c+=0x1){_0x5a483b=_0x2e789b[_0x11c25c];if(_[_0x259f('0x3f')](_0xb21fa1[_0x259f('0x17')][_0x5a483b['id']])){_0xb21fa1[_0x259f('0x17')][_0x5a483b['id']]=new SugarcrmAccount(_0x5a483b);}else{_0xb21fa1['mergeFromDatabase'](_0xb21fa1['sugarcrmAccounts'][_0x5a483b['id']],_0x5a483b);}}}return _0xb21fa1[_0x259f('0x17')];};};Realtime[_0x259f('0x3b')]['initVtigerAccounts']=function(){var _0x3b177f=this;return function(_0x5b547e){if(_0x5b547e){freeIsNotKey(_0x5b547e,_0x3b177f[_0x259f('0x1b')],'id');for(var _0x29818e=0x0,_0x459460={},_0x9d1838={};_0x29818e<_0x5b547e[_0x259f('0x3d')];_0x29818e+=0x1){_0x459460=_0x5b547e[_0x29818e];if(_[_0x259f('0x3f')](_0x3b177f[_0x259f('0x1b')][_0x459460['id']])){_0x3b177f['vtigerAccounts'][_0x459460['id']]=new VtigerAccount(_0x459460);}else{_0x3b177f[_0x259f('0x3a')](_0x3b177f['vtigerAccounts'][_0x459460['id']],_0x459460);}}}return _0x3b177f[_0x259f('0x1b')];};};Realtime['prototype'][_0x259f('0x49')]=function(){var _0x56d0ca=this;return function(_0x111ecf){if(_0x111ecf){freeIsNotKey(_0x111ecf,_0x56d0ca[_0x259f('0x1c')],'id');for(var _0x3ebf66=0x0,_0x3c7e6a={},_0x1c45d4={};_0x3ebf66<_0x111ecf[_0x259f('0x3d')];_0x3ebf66+=0x1){_0x3c7e6a=_0x111ecf[_0x3ebf66];if(_[_0x259f('0x3f')](_0x56d0ca[_0x259f('0x1c')][_0x3c7e6a['id']])){_0x56d0ca[_0x259f('0x1c')][_0x3c7e6a['id']]=new ServicenowAccount(_0x3c7e6a);}else{_0x56d0ca['mergeFromDatabase'](_0x56d0ca['servicenowAccounts'][_0x3c7e6a['id']],_0x3c7e6a);}}}return _0x56d0ca[_0x259f('0x1c')];};};Realtime['prototype'][_0x259f('0x4a')]=function(){var _0x5770dd=this;return function(_0x5132cb){if(_0x5132cb){freeIsNotKey(_0x5132cb,_0x5770dd[_0x259f('0x1d')],'id');for(var _0x518591=0x0,_0x365748={},_0x44ac7c={};_0x518591<_0x5132cb[_0x259f('0x3d')];_0x518591+=0x1){_0x365748=_0x5132cb[_0x518591];if(_[_0x259f('0x3f')](_0x5770dd[_0x259f('0x1d')][_0x365748['id']])){_0x5770dd['dynamics365Accounts'][_0x365748['id']]=new Dynamics365Account(_0x365748);}else{_0x5770dd[_0x259f('0x3a')](_0x5770dd['dynamics365Accounts'][_0x365748['id']],_0x365748);}}}return _0x5770dd[_0x259f('0x1d')];};};Realtime[_0x259f('0x3b')][_0x259f('0x4b')]=function(){var _0xd9a191=this;return function(_0x9eee45){if(_0x9eee45){freeIsNotKey(_0x9eee45,_0xd9a191[_0x259f('0x1e')],'id');for(var _0x44c98f=0x0,_0x8a7ecc={},_0x3f2be9={};_0x44c98f<_0x9eee45[_0x259f('0x3d')];_0x44c98f+=0x1){_0x8a7ecc=_0x9eee45[_0x44c98f];if(_[_0x259f('0x3f')](_0xd9a191[_0x259f('0x1e')][_0x8a7ecc['id']])){_0xd9a191['freshsalesAccounts'][_0x8a7ecc['id']]=new FreshsalesAccount(_0x8a7ecc);}else{_0xd9a191[_0x259f('0x3a')](_0xd9a191['freshsalesAccounts'][_0x8a7ecc['id']],_0x8a7ecc);}}}return _0xd9a191['freshsalesAccounts'];};};Realtime['prototype'][_0x259f('0x4c')]=function(){var _0x46e478=this;return function(_0x167da2){for(var _0x32dca5=0x0;_0x32dca5<_0x167da2[_0x259f('0x3d')];_0x32dca5+=0x1){_[_0x259f('0x4d')](_0x46e478[_0x259f('0xf')][_0x167da2[_0x32dca5][_0x259f('0x23')]],_0x167da2[_0x32dca5]);}return _0x46e478['voiceQueues'];};};Realtime[_0x259f('0x3b')][_0x259f('0x4e')]=function(){var _0x30dff1=this;return function(_0x904173){clearVoiceQueues(_0x30dff1[_0x259f('0xf')]);if(_0x904173){_0x904173=_[_0x259f('0x4f')](_0x904173,_0x259f('0x50'));for(var _0x3306dd in _0x904173){if(_0x904173[_0x259f('0x21')](_0x3306dd)){var _0x4b3590={};for(var _0x4a4e05=0x0;_0x4a4e05<_0x904173[_0x3306dd][_0x259f('0x3d')];_0x4a4e05+=0x1){var _0x11804a=_0x904173[_0x3306dd][_0x4a4e05]['queue'];if(_0x30dff1[_0x259f('0xf')][_0x11804a]){if(_0x904173[_0x3306dd][_0x4a4e05]['queuecallerexit']){_0x30dff1['voiceQueues'][_0x11804a][_0x259f('0x51')]+=0x1;}if(_0x904173[_0x3306dd][_0x4a4e05][_0x259f('0x52')]){_0x30dff1['voiceQueues'][_0x11804a][_0x259f('0x2b')]+=0x1;}_0x30dff1['voiceQueues'][_0x11804a]['sumHoldTime']+=moment(_0x904173[_0x3306dd][_0x4a4e05][_0x259f('0x53')])[_0x259f('0x54')](moment(_0x904173[_0x3306dd][_0x4a4e05][_0x259f('0x55')]),_0x259f('0x56'))||0x0;if(_0x4a4e05===_0x904173[_0x3306dd][_0x259f('0x3d')]-0x1){_0x30dff1['voiceQueues'][_0x11804a][_0x259f('0x27')]+=moment(_0x904173[_0x3306dd][_0x4a4e05][_0x259f('0x57')]||_0x904173[_0x3306dd][_0x4a4e05]['queuecallerabandonAt']||_0x904173[_0x3306dd][_0x4a4e05][_0x259f('0x58')])[_0x259f('0x54')](moment(_0x904173[_0x3306dd][_0x4a4e05][_0x259f('0x55')]),_0x259f('0x56'))||0x0;_0x30dff1[_0x259f('0xf')][_0x11804a][_0x259f('0x59')]+=0x1;if(_0x904173[_0x3306dd][_0x4a4e05][_0x259f('0x5a')]){_0x30dff1[_0x259f('0xf')][_0x11804a][_0x259f('0x26')]+=0x1;_0x30dff1[_0x259f('0xf')][_0x11804a][_0x259f('0x28')]+=moment(_0x904173[_0x3306dd][_0x4a4e05][_0x259f('0x57')])[_0x259f('0x54')](moment(_0x904173[_0x3306dd][_0x4a4e05][_0x259f('0x53')]),_0x259f('0x56'))||0x0;}}else{_0x30dff1[_0x259f('0xf')][_0x11804a][_0x259f('0x27')]+=_0x30dff1['voiceQueues'][_0x11804a][_0x259f('0x2c')]||0x0;}}}}}}return _0x30dff1['voiceQueues'];};};Realtime[_0x259f('0x3b')][_0x259f('0x5b')]=function(){var _0x25364c=this;return function(_0x1b7742){clearVoiceCallReports(_0x25364c['outbound']);if(_0x1b7742){for(var _0x13621e=0x0;_0x13621e<_0x1b7742[_0x259f('0x3d')];_0x13621e+=0x1){_0x25364c[_0x259f('0x12')][_0x259f('0x59')]+=0x1;_0x25364c[_0x259f('0x12')][_0x259f('0x27')]+=_0x1b7742[_0x13621e][_0x259f('0x5c')];if(_0x1b7742[_0x13621e][_0x259f('0x5d')]===_0x259f('0x5e')){_0x25364c[_0x259f('0x12')][_0x259f('0x26')]+=0x1;_0x25364c[_0x259f('0x12')][_0x259f('0x2c')]+=_0x1b7742[_0x13621e][_0x259f('0x5c')]-_0x1b7742[_0x13621e][_0x259f('0x5f')]||0x0;_0x25364c[_0x259f('0x12')][_0x259f('0x28')]+=_0x1b7742[_0x13621e][_0x259f('0x5f')];}}}return _0x25364c[_0x259f('0x12')];};};Realtime['prototype'][_0x259f('0x60')]=function(){var _0x45a24e=this;return function(_0x21cda3){if(_0x21cda3){freeIsNotKey(_0x21cda3,_0x45a24e[_0x259f('0x61')],_0x259f('0x23'));for(var _0x2f96bd=0x0,_0x2e4958={};_0x2f96bd<_0x21cda3['length'];_0x2f96bd+=0x1){_0x2e4958=_0x21cda3[_0x2f96bd];if(_['isUndefined'](_0x45a24e[_0x259f('0x61')][_0x2e4958['name']])){_0x45a24e[_0x259f('0x61')][_0x2e4958[_0x259f('0x23')]]=new Campaign(_0x2e4958);}else{_0x45a24e[_0x259f('0x3a')](_0x45a24e[_0x259f('0x61')][_0x2e4958[_0x259f('0x23')]],_0x2e4958);_0x45a24e[_0x259f('0x61')][_0x2e4958[_0x259f('0x23')]]['dialQueueProject']=_0x2e4958[_0x259f('0x62')]?_0x2e4958[_0x259f('0x62')][_0x259f('0x23')]:undefined;}}}return _0x45a24e[_0x259f('0x61')];};};Realtime[_0x259f('0x3b')][_0x259f('0x63')]=function(){var _0x56b41e=this;return function(_0x351d6f){if(_0x351d6f){freeIsNotKey(_0x351d6f,_0x56b41e[_0x259f('0x13')],'id');for(var _0x6baa20=0x0,_0x4873c5={};_0x6baa20<_0x351d6f[_0x259f('0x3d')];_0x6baa20+=0x1){_0x4873c5=_0x351d6f[_0x6baa20];if(_[_0x259f('0x3f')](_0x56b41e[_0x259f('0x13')][_0x4873c5['id']])){_0x56b41e['voiceExtensions'][_0x4873c5['id']]=new VoiceExtension(_0x4873c5);}else{_0x56b41e['mergeFromDatabase'](_0x56b41e[_0x259f('0x13')][_0x4873c5['id']],_0x4873c5);}}}return _0x56b41e[_0x259f('0x13')];};};Realtime[_0x259f('0x3b')][_0x259f('0x64')]=function(){var _0x5289c3=this;return function(_0x33aa46){clearCampaigns(_0x5289c3[_0x259f('0x61')]);for(var _0x139d0e=0x0;_0x139d0e<_0x33aa46['length'];_0x139d0e+=0x1){_[_0x259f('0x4d')](_0x5289c3[_0x259f('0x61')][_0x33aa46[_0x139d0e][_0x259f('0x23')]],_0x33aa46[_0x139d0e]);}return _0x5289c3[_0x259f('0x61')];};};Realtime[_0x259f('0x3b')][_0x259f('0x65')]=function(){var _0x58f7b4=this;return function(_0x1d30f5){if(_0x1d30f5){freeIsNotKey(_0x1d30f5,_0x58f7b4[_0x259f('0x1f')],'id');for(var _0x4c72cf=0x0,_0x252bc6={},_0x19ce09={};_0x4c72cf<_0x1d30f5['length'];_0x4c72cf+=0x1){_0x252bc6=_0x1d30f5[_0x4c72cf];if(_['isUndefined'](_0x58f7b4[_0x259f('0x1f')][_0x252bc6['id']])){_0x58f7b4[_0x259f('0x1f')][_0x252bc6['id']]=new FaxAccount(_0x252bc6);}else{_0x58f7b4['mergeFromDatabase'](_0x58f7b4[_0x259f('0x1f')][_0x252bc6['id']],_0x252bc6);}}}return _0x58f7b4[_0x259f('0x1f')];};};module['exports']=Realtime;
\ No newline at end of file
index 3b8f0d1..2b8830b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9639=['./voiceCallReport','./voiceAgentReport','./userReport','realtime','agents','telephones','prototype','sync','xdr','custom:voiceQueueReport','voiceQueueReport','bind','voiceCallReport','custom:voiceAgentReport','voiceAgentReport','custom:voiceDialReport','voiceDialReport','blindtransfer','blindTransfer','attendedtransfer','attendedTransfer','findAgent','name','isNil','find','accountcode','interface','length','connectedlinenum','lastAssignedTo','queuecallercomplete','queuecallercompleteAt','format','YYYY-MM-DD\x20HH:mm:ss','queuecallerexitAt','create','match','getAgentByInternal','keys','getCallType','channel','outbound','internal','destination','exten','type','lastapplication','lastdata','queue','context','from-voip-provider','callerid','from-sip','xcally-motion-preview','calleridpreview','destinationchannel','calleridnum','ANSWERED','\x22%s\x22\x20<%s>','calleridname','transfers','linkedid','transfereelinkedid','UserId','split','membername','monitors','filename','createdAt','connectedlinename','originatecalleridnum','xcally-motion-dialer','forEach','substring','mobile','phone','indexOf','lastIndexOf','SIP/%s','transfererlinkedid','exports','lodash','util','../../../config/environment','../ami','../rpc/voiceAgentReport','../rpc/voiceCallReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceTransferReport','./voiceQueueReport'];(function(_0x326c48,_0x31eee6){var _0xf71bc5=function(_0x391b95){while(--_0x391b95){_0x326c48['push'](_0x326c48['shift']());}};_0xf71bc5(++_0x31eee6);}(_0x9639,0x107));var _0x9963=function(_0x4ea09e,_0x2b032f){_0x4ea09e=_0x4ea09e-0x0;var _0x195774=_0x9639[_0x4ea09e];return _0x195774;};'use strict';var _=require(_0x9963('0x0'));var moment=require('moment');var util=require(_0x9963('0x1'));var config=require(_0x9963('0x2'));var ami=require(_0x9963('0x3'));var RpcVoiceAgentReport=require(_0x9963('0x4'));var RpcVoiceCallReport=require(_0x9963('0x5'));var RpcVoiceDialReport=require('../rpc/voiceDialReport');var RpcMemberReport=require(_0x9963('0x6'));var RpcVoiceQueueReport=require(_0x9963('0x7'));var RpcVoiceRecording=require('../rpc/voiceRecording');var RpcVoiceTransferReport=require(_0x9963('0x8'));var VoiceQueueReport=require(_0x9963('0x9'));var VoiceCallReport=require(_0x9963('0xa'));var VoiceAgentReport=require(_0x9963('0xb'));var VoiceDialReport=require('./voiceDialReport');var UserReport=require(_0x9963('0xc'));function Report(_0x17250e){this[_0x9963('0xd')]=_0x17250e;this[_0x9963('0xe')]=_0x17250e['agents'];this['telephones']=_0x17250e[_0x9963('0xf')];}Report[_0x9963('0x10')][_0x9963('0x11')]=function(_0x54aedd){var _0x3a9686=new VoiceQueueReport(this[_0x9963('0xd')]);var _0x110d2f=new VoiceAgentReport(this[_0x9963('0xd')]);var _0x37bc2d=new VoiceDialReport(this[_0x9963('0xd')]);var _0x6278ef=new VoiceCallReport(this[_0x9963('0xd')]);var _0x9b1dd3=new UserReport(this['realtime']);if(config['xdr']&&config[_0x9963('0x12')]['disabled']){ami['on'](_0x9963('0x13'),this[_0x9963('0x14')][_0x9963('0x15')](this));ami['on']('custom:voiceCallReport',this[_0x9963('0x16')][_0x9963('0x15')](this));ami['on'](_0x9963('0x17'),this[_0x9963('0x18')]['bind'](this));ami['on'](_0x9963('0x19'),this[_0x9963('0x1a')][_0x9963('0x15')](this));ami['on'](_0x9963('0x1b'),this[_0x9963('0x1c')][_0x9963('0x15')](this));ami['on'](_0x9963('0x1d'),this[_0x9963('0x1e')][_0x9963('0x15')](this));}};Report[_0x9963('0x10')][_0x9963('0x1f')]=function(_0x34740f){var _0x456482;_0x456482=_['find'](this['agents'],function(_0x1c6697){return _0x1c6697['accountcode']==_0x34740f||_0x1c6697[_0x9963('0x20')]==_0x34740f;});if(_[_0x9963('0x21')](_0x456482)){var _0x40340a=_[_0x9963('0x22')](this[_0x9963('0xf')],function(_0x544edd){return _0x544edd[_0x9963('0x23')]==_0x34740f||_0x544edd[_0x9963('0x20')]==_0x34740f;});if(_0x40340a){_0x456482=_[_0x9963('0x22')](this[_0x9963('0xe')],function(_0x1b999d){return _0x1b999d[_0x9963('0x24')]==util['format']('SIP/%s',_0x40340a[_0x9963('0x20')]);});}}return _0x456482;};Report[_0x9963('0x10')][_0x9963('0x14')]=function(_0x5c9d34){for(var _0xbf32d=0x0;_0xbf32d<_0x5c9d34[_0x9963('0x25')];_0xbf32d+=0x1){var _0x23c906=this[_0x9963('0x1f')](_0x5c9d34[_0xbf32d][_0x9963('0x26')]);if(_0x23c906){_0x5c9d34[_0xbf32d][_0x9963('0x23')]=_0x23c906['accountcode'];_0x5c9d34[_0xbf32d]['assigned']=!![];_0x5c9d34[_0xbf32d][_0x9963('0x27')]=_0x23c906[_0x9963('0x20')];_0x5c9d34[_0xbf32d]['interface']=_['isNil'](_0x23c906[_0x9963('0x24')])?util['format']('SIP/%s',_0x23c906[_0x9963('0x20')]):_0x23c906['interface'];if(_0x5c9d34[_0xbf32d][_0x9963('0x28')]){_0x5c9d34[_0xbf32d][_0x9963('0x29')]=moment()[_0x9963('0x2a')](_0x9963('0x2b'));}if(_0x5c9d34[_0xbf32d]['queuecallerexit']){_0x5c9d34[_0xbf32d][_0x9963('0x2c')]=moment()[_0x9963('0x2a')](_0x9963('0x2b'));}RpcMemberReport[_0x9963('0x14')](_0x5c9d34[_0xbf32d]);}RpcVoiceQueueReport[_0x9963('0x2d')](_0x5c9d34[_0xbf32d]);}};function extractCalleridNumber(_0x1e9a82){var _0x56ae55=_0x1e9a82[_0x9963('0x2e')](/<(.*?)>/);return _0x56ae55?_0x56ae55[0x1]:_0x1e9a82;}Report[_0x9963('0x10')][_0x9963('0x2f')]=function(_0x1f0a01){for(var _0x4a4d33=0x0;_0x4a4d33<Object[_0x9963('0x30')](this[_0x9963('0xe')])[_0x9963('0x25')];_0x4a4d33++){var _0xf5013e=Object[_0x9963('0x30')](this[_0x9963('0xe')])[_0x4a4d33];var _0x5c799b=this[_0x9963('0xe')][_0xf5013e];if(_0x5c799b['accountcode']===Number(_0x1f0a01))return _0x5c799b;}return null;};Report[_0x9963('0x10')][_0x9963('0x31')]=function(_0x47312d){var _0x1757cf=_0x47312d[_0x9963('0x32')]['split']('-')[0x0];var _0x4ca879=this[_0x9963('0xe')][_0x1757cf];if(!_0x4ca879)_0x4ca879=this[_0x9963('0x2f')](_0x47312d['calleridnum']);return!_0x4ca879?_0x9963('0x33'):_0x9963('0x34');};Report['prototype'][_0x9963('0x16')]=function(_0x24cdba){_0x24cdba[_0x9963('0x35')]=_0x24cdba['destination']||_0x24cdba[_0x9963('0x36')];if(_0x24cdba[_0x9963('0x37')]=='dialer'){_0x24cdba[_0x9963('0x38')]='queue';_0x24cdba[_0x9963('0x39')]=_0x24cdba[_0x9963('0x3a')];if(_0x24cdba[_0x9963('0x3b')]==_0x9963('0x3c')){_0x24cdba[_0x9963('0x23')]='';_0x24cdba[_0x9963('0x35')]=extractCalleridNumber(_0x24cdba[_0x9963('0x3d')]);}else if(_0x24cdba[_0x9963('0x3b')]==_0x9963('0x3e')){if(_0x24cdba['destination']==_0x9963('0x3f')){_0x24cdba[_0x9963('0x35')]=extractCalleridNumber(_0x24cdba[_0x9963('0x40')]);_0x24cdba['calleridnum']=_0x24cdba['originatecalleridnum'];_0x24cdba[_0x9963('0x41')]=[_0x24cdba['channel'],_0x24cdba[_0x9963('0x32')]=_0x24cdba[_0x9963('0x41')]][0x0];_0x24cdba[_0x9963('0x3d')]=_0x24cdba['calleridpreview'];}else{_0x24cdba[_0x9963('0x35')]=_0x24cdba[_0x9963('0x42')];_0x24cdba[_0x9963('0x42')]=_0x24cdba['originatecalleridnum'];if(_0x24cdba['disposition']==_0x9963('0x43')){_0x24cdba[_0x9963('0x23')]=_0x24cdba[_0x9963('0x26')];}else{_0x24cdba[_0x9963('0x23')]='';}}}}else{_0x24cdba['callerid']=util[_0x9963('0x2a')](_0x9963('0x44'),_0x24cdba[_0x9963('0x45')],_0x24cdba[_0x9963('0x42')]);}if(RpcVoiceTransferReport[_0x9963('0x46')][_0x24cdba[_0x9963('0x47')]]){var _0x44ee14=RpcVoiceTransferReport[_0x9963('0x46')][_0x24cdba['linkedid']];_0x44ee14[_0x9963('0x48')]=_0x24cdba['uniqueid'];RpcVoiceTransferReport[_0x9963('0x1c')](_0x44ee14);delete RpcVoiceTransferReport[_0x9963('0x46')][_0x24cdba['linkedid']];}if(_[_0x9963('0x21')](_0x24cdba['type'])){_0x24cdba[_0x9963('0x37')]=this['getCallType'](_0x24cdba);}if(_['isNil'](_0x24cdba[_0x9963('0x49')])){var _0xd79c3d=_0x24cdba[_0x9963('0x32')][_0x9963('0x4a')]('-')[0x0];var _0x3d52c4=this[_0x9963('0xe')][_0xd79c3d];if(!_0x3d52c4)_0x3d52c4=this[_0x9963('0x2f')](_0x24cdba[_0x9963('0x23')]);if(_0x3d52c4){_0x24cdba[_0x9963('0x49')]=_0x3d52c4['id'];_0x24cdba[_0x9963('0x4b')]=_0x3d52c4[_0x9963('0x20')];}}RpcVoiceCallReport[_0x9963('0x2d')](_0x24cdba);if(_0x24cdba['monitor']){for(var _0x31b8dc=0x0;_0x31b8dc<_0x24cdba[_0x9963('0x4c')][_0x9963('0x25')];_0x31b8dc+=0x1){_0x24cdba['monitorFilename']=_0x24cdba[_0x9963('0x4c')][_0x31b8dc][_0x9963('0x4d')];_0x24cdba[_0x9963('0x4e')]=_0x24cdba[_0x9963('0x4c')][_0x31b8dc][_0x9963('0x4e')];if(_0x24cdba['exten']==_0x9963('0x3f')){_0x24cdba['calleridnum']=_0x24cdba[_0x9963('0x26')];_0x24cdba[_0x9963('0x45')]=_0x24cdba['connectedlinename'];_0x24cdba[_0x9963('0x26')]=_0x24cdba[_0x9963('0x23')];_0x24cdba[_0x9963('0x4f')]=_0x24cdba[_0x9963('0x4b')];_0x24cdba[_0x9963('0x36')]=_0x24cdba[_0x9963('0x50')];}else if(_0x24cdba[_0x9963('0x36')]==_0x9963('0x51')){_0x24cdba[_0x9963('0x42')]=_0x24cdba[_0x9963('0x35')];_0x24cdba['exten']=_0x24cdba[_0x9963('0x50')];}RpcVoiceRecording[_0x9963('0x2d')](_0x24cdba);}}};Report[_0x9963('0x10')][_0x9963('0x18')]=function(_0x51247d){if(_['isArray'](_0x51247d)){_0x51247d[_0x9963('0x52')](function(_0xc3efbd){RpcVoiceAgentReport[_0x9963('0x2d')](_0xc3efbd);});}else{RpcVoiceAgentReport[_0x9963('0x2d')](_0x51247d);}};Report[_0x9963('0x10')]['voiceDialReport']=function(_0x3b5274){RpcVoiceDialReport[_0x9963('0x2d')](_0x3b5274);var _0x483526;var _0x19587f;var _0x2fffb6=_0x3b5274[_0x9963('0x32')];if(_['startsWith'](_0x2fffb6,'Local')){_0x19587f=_0x2fffb6[_0x9963('0x53')](_0x2fffb6['indexOf']('/')+0x1,_0x2fffb6['indexOf']('@'));_0x483526=_['find'](this['agents'],function(_0x25b245){return _0x25b245[_0x9963('0x54')]==_0x19587f||_0x25b245[_0x9963('0x55')]==_0x19587f||_0x25b245[_0x9963('0x23')]==_0x19587f;});}else{_0x19587f=_0x2fffb6['substring'](_0x2fffb6[_0x9963('0x56')]('/')+0x1,_0x2fffb6[_0x9963('0x57')]('-'));_0x483526=this[_0x9963('0x1f')](_0x19587f);}if(_0x483526){_0x3b5274[_0x9963('0x24')]=_['isNil'](_0x483526[_0x9963('0x24')])?util[_0x9963('0x2a')](_0x9963('0x58'),_0x483526[_0x9963('0x20')]):_0x483526['interface'];_0x3b5274['membername']=_0x483526[_0x9963('0x20')];_0x3b5274[_0x9963('0x23')]=_0x483526[_0x9963('0x23')];RpcMemberReport[_0x9963('0x1a')](_0x3b5274);}};Report[_0x9963('0x10')]['blindTransfer']=function(_0x342dee){RpcVoiceTransferReport[_0x9963('0x46')][_0x342dee[_0x9963('0x59')]]=_0x342dee;};Report[_0x9963('0x10')][_0x9963('0x1e')]=function(_0x3bc24b){RpcVoiceTransferReport[_0x9963('0x1e')](_0x3bc24b);};module[_0x9963('0x5a')]=Report;
\ No newline at end of file
+var _0x89bf=['exports','lodash','moment','util','../ami','../rpc/voiceAgentReport','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceRecording','./voiceQueueReport','./voiceCallReport','./voiceAgentReport','./voiceDialReport','realtime','agents','prototype','xdr','disabled','custom:voiceQueueReport','bind','custom:voiceCallReport','voiceCallReport','custom:voiceAgentReport','voiceAgentReport','custom:voiceDialReport','voiceDialReport','blindtransfer','blindTransfer','attendedtransfer','findAgent','find','accountcode','name','isNil','telephones','interface','format','SIP/%s','voiceQueueReport','connectedlinenum','lastAssignedTo','queuecallercomplete','queuecallercompleteAt','queuecallerexit','YYYY-MM-DD\x20HH:mm:ss','create','match','length','keys','getCallType','channel','split','getAgentByInternal','calleridnum','outbound','internal','destination','exten','type','lastapplication','queue','lastdata','context','from-voip-provider','callerid','xcally-motion-preview','calleridpreview','originatecalleridnum','disposition','ANSWERED','\x22%s\x22\x20<%s>','calleridname','transfers','linkedid','transfereelinkedid','uniqueid','UserId','membername','monitor','monitors','monitorFilename','filename','createdAt','connectedlinename','xcally-motion-dialer','isArray','forEach','Local','substring','indexOf','mobile','phone','lastIndexOf','transfererlinkedid','attendedTransfer'];(function(_0x94505c,_0x236898){var _0x4c1c8d=function(_0x1a7063){while(--_0x1a7063){_0x94505c['push'](_0x94505c['shift']());}};_0x4c1c8d(++_0x236898);}(_0x89bf,0x181));var _0xf89b=function(_0x566074,_0x1b22ba){_0x566074=_0x566074-0x0;var _0x183658=_0x89bf[_0x566074];return _0x183658;};'use strict';var _=require(_0xf89b('0x0'));var moment=require(_0xf89b('0x1'));var util=require(_0xf89b('0x2'));var config=require('../../../config/environment');var ami=require(_0xf89b('0x3'));var RpcVoiceAgentReport=require(_0xf89b('0x4'));var RpcVoiceCallReport=require('../rpc/voiceCallReport');var RpcVoiceDialReport=require(_0xf89b('0x5'));var RpcMemberReport=require(_0xf89b('0x6'));var RpcVoiceQueueReport=require(_0xf89b('0x7'));var RpcVoiceRecording=require(_0xf89b('0x8'));var RpcVoiceTransferReport=require('../rpc/voiceTransferReport');var VoiceQueueReport=require(_0xf89b('0x9'));var VoiceCallReport=require(_0xf89b('0xa'));var VoiceAgentReport=require(_0xf89b('0xb'));var VoiceDialReport=require(_0xf89b('0xc'));var UserReport=require('./userReport');function Report(_0x2e21fd){this[_0xf89b('0xd')]=_0x2e21fd;this[_0xf89b('0xe')]=_0x2e21fd[_0xf89b('0xe')];this['telephones']=_0x2e21fd['telephones'];}Report[_0xf89b('0xf')]['sync']=function(_0x514a32){var _0x2c88f5=new VoiceQueueReport(this[_0xf89b('0xd')]);var _0x71a19f=new VoiceAgentReport(this[_0xf89b('0xd')]);var _0xaae705=new VoiceDialReport(this[_0xf89b('0xd')]);var _0xe9bcde=new VoiceCallReport(this['realtime']);var _0x5089bb=new UserReport(this[_0xf89b('0xd')]);if(config[_0xf89b('0x10')]&&config[_0xf89b('0x10')][_0xf89b('0x11')]){ami['on'](_0xf89b('0x12'),this['voiceQueueReport'][_0xf89b('0x13')](this));ami['on'](_0xf89b('0x14'),this[_0xf89b('0x15')][_0xf89b('0x13')](this));ami['on'](_0xf89b('0x16'),this[_0xf89b('0x17')]['bind'](this));ami['on'](_0xf89b('0x18'),this[_0xf89b('0x19')][_0xf89b('0x13')](this));ami['on'](_0xf89b('0x1a'),this[_0xf89b('0x1b')][_0xf89b('0x13')](this));ami['on'](_0xf89b('0x1c'),this['attendedTransfer'][_0xf89b('0x13')](this));}};Report[_0xf89b('0xf')][_0xf89b('0x1d')]=function(_0x28545f){var _0x32d453;_0x32d453=_[_0xf89b('0x1e')](this[_0xf89b('0xe')],function(_0x13d663){return _0x13d663[_0xf89b('0x1f')]==_0x28545f||_0x13d663[_0xf89b('0x20')]==_0x28545f;});if(_[_0xf89b('0x21')](_0x32d453)){var _0x41a011=_[_0xf89b('0x1e')](this[_0xf89b('0x22')],function(_0x12acc4){return _0x12acc4[_0xf89b('0x1f')]==_0x28545f||_0x12acc4[_0xf89b('0x20')]==_0x28545f;});if(_0x41a011){_0x32d453=_[_0xf89b('0x1e')](this[_0xf89b('0xe')],function(_0x1024d1){return _0x1024d1[_0xf89b('0x23')]==util[_0xf89b('0x24')](_0xf89b('0x25'),_0x41a011[_0xf89b('0x20')]);});}}return _0x32d453;};Report[_0xf89b('0xf')][_0xf89b('0x26')]=function(_0xdd8f26){for(var _0x4594a5=0x0;_0x4594a5<_0xdd8f26['length'];_0x4594a5+=0x1){var _0x2ad36b=this[_0xf89b('0x1d')](_0xdd8f26[_0x4594a5][_0xf89b('0x27')]);if(_0x2ad36b){_0xdd8f26[_0x4594a5][_0xf89b('0x1f')]=_0x2ad36b[_0xf89b('0x1f')];_0xdd8f26[_0x4594a5]['assigned']=!![];_0xdd8f26[_0x4594a5][_0xf89b('0x28')]=_0x2ad36b[_0xf89b('0x20')];_0xdd8f26[_0x4594a5][_0xf89b('0x23')]=_[_0xf89b('0x21')](_0x2ad36b[_0xf89b('0x23')])?util[_0xf89b('0x24')](_0xf89b('0x25'),_0x2ad36b[_0xf89b('0x20')]):_0x2ad36b[_0xf89b('0x23')];if(_0xdd8f26[_0x4594a5][_0xf89b('0x29')]){_0xdd8f26[_0x4594a5][_0xf89b('0x2a')]=moment()[_0xf89b('0x24')]('YYYY-MM-DD\x20HH:mm:ss');}if(_0xdd8f26[_0x4594a5][_0xf89b('0x2b')]){_0xdd8f26[_0x4594a5]['queuecallerexitAt']=moment()[_0xf89b('0x24')](_0xf89b('0x2c'));}RpcMemberReport[_0xf89b('0x26')](_0xdd8f26[_0x4594a5]);}RpcVoiceQueueReport[_0xf89b('0x2d')](_0xdd8f26[_0x4594a5]);}};function extractCalleridNumber(_0x19b2a9){var _0x539e7d=_0x19b2a9[_0xf89b('0x2e')](/<(.*?)>/);return _0x539e7d?_0x539e7d[0x1]:_0x19b2a9;}Report[_0xf89b('0xf')]['getAgentByInternal']=function(_0x1e9586){for(var _0x397103=0x0;_0x397103<Object['keys'](this[_0xf89b('0xe')])[_0xf89b('0x2f')];_0x397103++){var _0x28b49e=Object[_0xf89b('0x30')](this[_0xf89b('0xe')])[_0x397103];var _0x3baee8=this[_0xf89b('0xe')][_0x28b49e];if(_0x3baee8[_0xf89b('0x1f')]===Number(_0x1e9586))return _0x3baee8;}return null;};Report['prototype'][_0xf89b('0x31')]=function(_0x1ce395){var _0x58ce9d=_0x1ce395[_0xf89b('0x32')][_0xf89b('0x33')]('-')[0x0];var _0x4195d2=this[_0xf89b('0xe')][_0x58ce9d];if(!_0x4195d2)_0x4195d2=this[_0xf89b('0x34')](_0x1ce395[_0xf89b('0x35')]);return!_0x4195d2?_0xf89b('0x36'):_0xf89b('0x37');};Report['prototype'][_0xf89b('0x15')]=function(_0x267375){_0x267375[_0xf89b('0x38')]=_0x267375['destination']||_0x267375[_0xf89b('0x39')];if(_0x267375[_0xf89b('0x3a')]=='dialer'){_0x267375[_0xf89b('0x3b')]=_0xf89b('0x3c');_0x267375[_0xf89b('0x3d')]=_0x267375[_0xf89b('0x3c')];if(_0x267375[_0xf89b('0x3e')]==_0xf89b('0x3f')){_0x267375[_0xf89b('0x1f')]='';_0x267375[_0xf89b('0x38')]=extractCalleridNumber(_0x267375[_0xf89b('0x40')]);}else if(_0x267375[_0xf89b('0x3e')]=='from-sip'){if(_0x267375[_0xf89b('0x38')]==_0xf89b('0x41')){_0x267375['destination']=extractCalleridNumber(_0x267375[_0xf89b('0x42')]);_0x267375['calleridnum']=_0x267375[_0xf89b('0x43')];_0x267375['destinationchannel']=[_0x267375['channel'],_0x267375['channel']=_0x267375['destinationchannel']][0x0];_0x267375['callerid']=_0x267375[_0xf89b('0x42')];}else{_0x267375[_0xf89b('0x38')]=_0x267375['calleridnum'];_0x267375[_0xf89b('0x35')]=_0x267375['originatecalleridnum'];if(_0x267375[_0xf89b('0x44')]==_0xf89b('0x45')){_0x267375[_0xf89b('0x1f')]=_0x267375[_0xf89b('0x27')];}else{_0x267375[_0xf89b('0x1f')]='';}}}}else{_0x267375[_0xf89b('0x40')]=util['format'](_0xf89b('0x46'),_0x267375[_0xf89b('0x47')],_0x267375['calleridnum']);}if(RpcVoiceTransferReport[_0xf89b('0x48')][_0x267375[_0xf89b('0x49')]]){var _0x21a2b8=RpcVoiceTransferReport[_0xf89b('0x48')][_0x267375['linkedid']];_0x21a2b8[_0xf89b('0x4a')]=_0x267375[_0xf89b('0x4b')];RpcVoiceTransferReport['blindTransfer'](_0x21a2b8);delete RpcVoiceTransferReport[_0xf89b('0x48')][_0x267375[_0xf89b('0x49')]];}if(_[_0xf89b('0x21')](_0x267375['type'])){_0x267375[_0xf89b('0x3a')]=this[_0xf89b('0x31')](_0x267375);}if(_['isNil'](_0x267375[_0xf89b('0x4c')])){var _0x2ae645=_0x267375[_0xf89b('0x32')]['split']('-')[0x0];var _0x1803af=this[_0xf89b('0xe')][_0x2ae645];if(!_0x1803af)_0x1803af=this[_0xf89b('0x34')](_0x267375[_0xf89b('0x1f')]);if(_0x1803af){_0x267375[_0xf89b('0x4c')]=_0x1803af['id'];_0x267375[_0xf89b('0x4d')]=_0x1803af[_0xf89b('0x20')];}}RpcVoiceCallReport[_0xf89b('0x2d')](_0x267375);if(_0x267375[_0xf89b('0x4e')]){for(var _0x16c822=0x0;_0x16c822<_0x267375[_0xf89b('0x4f')][_0xf89b('0x2f')];_0x16c822+=0x1){_0x267375[_0xf89b('0x50')]=_0x267375[_0xf89b('0x4f')][_0x16c822][_0xf89b('0x51')];_0x267375[_0xf89b('0x52')]=_0x267375[_0xf89b('0x4f')][_0x16c822][_0xf89b('0x52')];if(_0x267375[_0xf89b('0x39')]=='xcally-motion-preview'){_0x267375[_0xf89b('0x35')]=_0x267375[_0xf89b('0x27')];_0x267375[_0xf89b('0x47')]=_0x267375[_0xf89b('0x53')];_0x267375['connectedlinenum']=_0x267375[_0xf89b('0x1f')];_0x267375['connectedlinename']=_0x267375[_0xf89b('0x4d')];_0x267375[_0xf89b('0x39')]=_0x267375[_0xf89b('0x43')];}else if(_0x267375['exten']==_0xf89b('0x54')){_0x267375['calleridnum']=_0x267375[_0xf89b('0x38')];_0x267375[_0xf89b('0x39')]=_0x267375[_0xf89b('0x43')];}RpcVoiceRecording['create'](_0x267375);}}};Report[_0xf89b('0xf')][_0xf89b('0x17')]=function(_0x32605b){if(_[_0xf89b('0x55')](_0x32605b)){_0x32605b[_0xf89b('0x56')](function(_0x37619a){RpcVoiceAgentReport[_0xf89b('0x2d')](_0x37619a);});}else{RpcVoiceAgentReport['create'](_0x32605b);}};Report[_0xf89b('0xf')][_0xf89b('0x19')]=function(_0x632744){RpcVoiceDialReport[_0xf89b('0x2d')](_0x632744);var _0x239297;var _0x2d5fa1;var _0xb802a9=_0x632744[_0xf89b('0x32')];if(_['startsWith'](_0xb802a9,_0xf89b('0x57'))){_0x2d5fa1=_0xb802a9[_0xf89b('0x58')](_0xb802a9['indexOf']('/')+0x1,_0xb802a9[_0xf89b('0x59')]('@'));_0x239297=_[_0xf89b('0x1e')](this[_0xf89b('0xe')],function(_0x409757){return _0x409757[_0xf89b('0x5a')]==_0x2d5fa1||_0x409757[_0xf89b('0x5b')]==_0x2d5fa1||_0x409757['accountcode']==_0x2d5fa1;});}else{_0x2d5fa1=_0xb802a9[_0xf89b('0x58')](_0xb802a9[_0xf89b('0x59')]('/')+0x1,_0xb802a9[_0xf89b('0x5c')]('-'));_0x239297=this['findAgent'](_0x2d5fa1);}if(_0x239297){_0x632744[_0xf89b('0x23')]=_[_0xf89b('0x21')](_0x239297[_0xf89b('0x23')])?util[_0xf89b('0x24')](_0xf89b('0x25'),_0x239297[_0xf89b('0x20')]):_0x239297[_0xf89b('0x23')];_0x632744[_0xf89b('0x4d')]=_0x239297['name'];_0x632744[_0xf89b('0x1f')]=_0x239297[_0xf89b('0x1f')];RpcMemberReport['voiceDialReport'](_0x632744);}};Report[_0xf89b('0xf')][_0xf89b('0x1b')]=function(_0x286002){RpcVoiceTransferReport[_0xf89b('0x48')][_0x286002[_0xf89b('0x5d')]]=_0x286002;};Report['prototype'][_0xf89b('0x5e')]=function(_0x38fbe5){RpcVoiceTransferReport[_0xf89b('0x5e')](_0x38fbe5);};module[_0xf89b('0x5f')]=Report;
\ No newline at end of file
index 6f3d44b..3758334 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d5d=['[userReport][devicestatelist]','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','syncRealtimeShow','isNotNull','isUndefined','emit','info','state','debug','[userReport][registry]','find','stateRegistry','merge','omit','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','trunk:save','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','[userReport][devicestatechange]','local','toLowerCase','inuse','stateTime','updateStatusRealtime','toNumber','telephone:%s','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith','Local','substring','indexOf','phone','accountcode','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','[userReport][peerstatus]','address','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','telephone:save','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','lodash','moment','util','ioredis','bluebird','../../../config/logger','ami','defaults','redis','localhost','socket.io-emitter','trunks','agents','telephones','bind','syncRegistry','devicestatechange','syncDeviceState','peerstatus','resolve','actionSipShowRegistry','catch','error','[userReport][sipshowregistry]','inspect','then','actionDeviceStateList'];(function(_0xdc1d80,_0x51cadc){var _0x279ac3=function(_0x357595){while(--_0x357595){_0xdc1d80['push'](_0xdc1d80['shift']());}};_0x279ac3(++_0x51cadc);}(_0x4d5d,0x111));var _0xd4d5=function(_0x97385e,_0x17e853){_0x97385e=_0x97385e-0x0;var _0x5d337e=_0x4d5d[_0x97385e];return _0x5d337e;};'use strict';var _=require(_0xd4d5('0x0'));var moment=require(_0xd4d5('0x1'));var util=require(_0xd4d5('0x2'));var Redis=require(_0xd4d5('0x3'));var BPromise=require(_0xd4d5('0x4'));var config=require('../../../config/environment');var logger=require(_0xd4d5('0x5'))(_0xd4d5('0x6'));var ami=require('../ami');config['redis']=_[_0xd4d5('0x7')](config[_0xd4d5('0x8')],{'host':_0xd4d5('0x9'),'port':0x18eb});var io=require(_0xd4d5('0xa'))(new Redis(config[_0xd4d5('0x8')]));function UserReport(_0x53dd6e){this['trunks']=_0x53dd6e[_0xd4d5('0xb')];this[_0xd4d5('0xc')]=_0x53dd6e['agents'];this[_0xd4d5('0xd')]=_0x53dd6e[_0xd4d5('0xd')];ami['on']('registryentry',this['syncRegistry'][_0xd4d5('0xe')](this));ami['on']('registry',this[_0xd4d5('0xf')][_0xd4d5('0xe')](this));ami['on'](_0xd4d5('0x10'),this[_0xd4d5('0x11')][_0xd4d5('0xe')](this));ami['on'](_0xd4d5('0x12'),this['syncPeerStatus'][_0xd4d5('0xe')](this));return this['syncRealtimeShow']();}function showSipRegistrations(){Promise[_0xd4d5('0x13')]()['then'](ami[_0xd4d5('0x14')]())[_0xd4d5('0x15')](function(_0x1f2b83){logger[_0xd4d5('0x16')](_0xd4d5('0x17'),util[_0xd4d5('0x18')](_0x1f2b83,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise['resolve']()[_0xd4d5('0x19')](ami[_0xd4d5('0x1a')]())[_0xd4d5('0x15')](function(_0x38d917){logger[_0xd4d5('0x16')](_0xd4d5('0x1b'),util['inspect'](_0x38d917,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0xd4d5('0x13')]()[_0xd4d5('0x19')](ami[_0xd4d5('0x1c')]())['catch'](function(_0x17a12){logger['error'](_0xd4d5('0x1d'),util[_0xd4d5('0x18')](_0x17a12,{'showHidden':![],'depth':null}));});}UserReport[_0xd4d5('0x1e')][_0xd4d5('0x1f')]=function(){setInterval(function(){BPromise[_0xd4d5('0x13')]()[_0xd4d5('0x19')](showSipRegistrations())[_0xd4d5('0x19')](listDeviceStates())['then'](showPeersStatus());},0x32c8);};UserReport['prototype'][_0xd4d5('0x20')]=function(_0x16cb9a){return _0x16cb9a!==null&&!_[_0xd4d5('0x21')](_0x16cb9a);};UserReport[_0xd4d5('0x1e')]['emit']=function(_0x13210c,_0xa7d24e,_0x1d0277){io['to'](_0x13210c)[_0xd4d5('0x22')](_0xa7d24e,_0x1d0277);};UserReport[_0xd4d5('0x1e')][_0xd4d5('0xf')]=function(_0xa97c0c){try{if(this[_0xd4d5('0x20')](_0xa97c0c)){logger[_0xd4d5('0x23')]('[userReport][registry]\x20registry:%s\x20state:%s',_0xa97c0c['username'],_0xa97c0c[_0xd4d5('0x24')]);logger[_0xd4d5('0x25')](_0xd4d5('0x26'),util['inspect'](_0xa97c0c,{'showHidden':![],'depth':null}));var _0x12e4e8=_[_0xd4d5('0x27')](this[_0xd4d5('0xb')],{'defaultuser':_0xa97c0c['username']});if(_0x12e4e8){_0xa97c0c[_0xd4d5('0x28')]=_0xa97c0c[_0xd4d5('0x24')];_[_0xd4d5('0x29')](_0x12e4e8,_[_0xd4d5('0x2a')](_0xa97c0c,['event',_0xd4d5('0x2b'),'username','state']));logger['debug'](_0xd4d5('0x2c'),util[_0xd4d5('0x18')](_0x12e4e8,{'showHidden':![],'depth':null}));this[_0xd4d5('0x22')](util[_0xd4d5('0x2d')](_0xd4d5('0x2e'),_0x12e4e8[_0xd4d5('0x2f')]),_0xd4d5('0x30'),_0x12e4e8);}}}catch(_0x210252){logger[_0xd4d5('0x16')]('[userReport][registry]',util[_0xd4d5('0x18')](_0x210252,{'showHidden':![],'depth':null}));}};UserReport[_0xd4d5('0x1e')][_0xd4d5('0x11')]=function(_0xf13b6){try{if(this['isNotNull'](_0xf13b6)){logger[_0xd4d5('0x23')](_0xd4d5('0x31'),_0xf13b6[_0xd4d5('0x32')],_0xf13b6['state']);logger[_0xd4d5('0x25')](_0xd4d5('0x33'),util['inspect'](_0xf13b6,{'showHidden':![],'depth':null}));if(this[_0xd4d5('0xc')][_0xf13b6[_0xd4d5('0x32')]]){if(!this[_0xd4d5('0xc')][_0xf13b6[_0xd4d5('0x32')]][_0xd4d5('0x34')]||_0xf13b6['state'][_0xd4d5('0x35')]()==_0xd4d5('0x36')){this[_0xd4d5('0xc')][_0xf13b6['device']][_0xd4d5('0x34')]=![];if(this[_0xd4d5('0xc')][_0xf13b6[_0xd4d5('0x32')]][_0xd4d5('0x24')]!==_0xf13b6[_0xd4d5('0x24')][_0xd4d5('0x35')]()){this[_0xd4d5('0xc')][_0xf13b6[_0xd4d5('0x32')]][_0xd4d5('0x37')]=_['toNumber'](moment()[_0xd4d5('0x2d')]('x'));}this[_0xd4d5('0xc')][_0xf13b6['device']]['state']=_0xf13b6['state'][_0xd4d5('0x35')]();this[_0xd4d5('0xc')][_0xf13b6['device']][_0xd4d5('0x38')](_0xf13b6);}}else if(this[_0xd4d5('0xd')][_0xf13b6[_0xd4d5('0x32')]]){if(this['telephones'][_0xf13b6[_0xd4d5('0x32')]]['state']!==_0xf13b6['state']['toLowerCase']()){this[_0xd4d5('0xd')][_0xf13b6[_0xd4d5('0x32')]][_0xd4d5('0x37')]=_[_0xd4d5('0x39')](moment()[_0xd4d5('0x2d')]('x'));}this[_0xd4d5('0xd')][_0xf13b6['device']]['state']=_0xf13b6['state'][_0xd4d5('0x35')]();logger[_0xd4d5('0x25')]('[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:',util[_0xd4d5('0x18')](this[_0xd4d5('0xd')][_0xf13b6[_0xd4d5('0x32')]],{'showHidden':![],'depth':null}));this[_0xd4d5('0x22')](util[_0xd4d5('0x2d')](_0xd4d5('0x3a'),this['telephones'][_0xf13b6[_0xd4d5('0x32')]][_0xd4d5('0x2f')]),'telephone:save',this[_0xd4d5('0xd')][_0xf13b6[_0xd4d5('0x32')]]);}else if(this['trunks'][_0xf13b6[_0xd4d5('0x32')]]){if(this[_0xd4d5('0xb')][_0xf13b6[_0xd4d5('0x32')]][_0xd4d5('0x24')]!==_0xf13b6[_0xd4d5('0x24')][_0xd4d5('0x35')]()){this[_0xd4d5('0xb')][_0xf13b6['device']][_0xd4d5('0x37')]=_['toNumber'](moment()[_0xd4d5('0x2d')]('x'));}this[_0xd4d5('0xb')][_0xf13b6['device']][_0xd4d5('0x24')]=_0xf13b6[_0xd4d5('0x24')][_0xd4d5('0x35')]();logger[_0xd4d5('0x25')](_0xd4d5('0x3b'),util[_0xd4d5('0x18')](this[_0xd4d5('0xb')][_0xf13b6[_0xd4d5('0x32')]],{'showHidden':![],'depth':null}));this[_0xd4d5('0x22')](util[_0xd4d5('0x2d')](_0xd4d5('0x2e'),this['trunks'][_0xf13b6[_0xd4d5('0x32')]]['name']),_0xd4d5('0x30'),this[_0xd4d5('0xb')][_0xf13b6['device']]);}else if(_[_0xd4d5('0x3c')](_0xf13b6['device'],_0xd4d5('0x3d'))){var _0xc5584=_0xf13b6['device'];var _0x5e6205=_0xc5584[_0xd4d5('0x3e')](_0xc5584[_0xd4d5('0x3f')]('/')+0x1,_0xc5584[_0xd4d5('0x3f')]('@'));var _0x25962d=_[_0xd4d5('0x27')](this['agents'],function(_0x4b0752){return _0x4b0752['mobile']==_0x5e6205||_0x4b0752[_0xd4d5('0x40')]==_0x5e6205||_0x4b0752[_0xd4d5('0x41')]==_0x5e6205;});if(_0x25962d){if(_0x25962d[_0xd4d5('0x24')]!==_0xf13b6[_0xd4d5('0x24')]['toLowerCase']()){_0x25962d['stateTime']=_[_0xd4d5('0x39')](moment()['format']('x'));}_0x25962d[_0xd4d5('0x24')]=_0xf13b6[_0xd4d5('0x24')][_0xd4d5('0x35')]();_0x25962d[_0xd4d5('0x34')]=!![];_0x25962d['updateStatusRealtime'](_0xf13b6);}}}}catch(_0x34ec7b){logger[_0xd4d5('0x16')]('[userReport][devicestatechange]',util[_0xd4d5('0x18')](_0x34ec7b,{'showHidden':![],'depth':null}));}};UserReport['prototype']['syncPeerStatus']=function(_0x58f56e){try{if(this[_0xd4d5('0x20')](_0x58f56e)&&this['isNotNull'](_0x58f56e[_0xd4d5('0x12')])){logger[_0xd4d5('0x23')](_0xd4d5('0x42'),_0x58f56e[_0xd4d5('0x43')],_0x58f56e['address'],_0x58f56e['peerstatus']);logger[_0xd4d5('0x25')](_0xd4d5('0x44'),util[_0xd4d5('0x18')](_0x58f56e,{'showHidden':![],'depth':null}));if(this[_0xd4d5('0xc')][_0x58f56e['peer']]){if(!this[_0xd4d5('0xc')][_0x58f56e[_0xd4d5('0x43')]][_0xd4d5('0x34')]||_0x58f56e[_0xd4d5('0x12')]['toLowerCase']()=='registered'){this['agents'][_0x58f56e['peer']][_0xd4d5('0x34')]=![];this['agents'][_0x58f56e[_0xd4d5('0x43')]]['status']=_0x58f56e[_0xd4d5('0x12')]['toLowerCase']();this[_0xd4d5('0xc')][_0x58f56e[_0xd4d5('0x43')]]['address']=_0x58f56e[_0xd4d5('0x45')];this[_0xd4d5('0xc')][_0x58f56e['peer']][_0xd4d5('0x38')](_0x58f56e);}}else if(this[_0xd4d5('0xd')][_0x58f56e['peer']]){this[_0xd4d5('0xd')][_0x58f56e[_0xd4d5('0x43')]][_0xd4d5('0x46')]=_0x58f56e[_0xd4d5('0x12')][_0xd4d5('0x35')]();this[_0xd4d5('0xd')][_0x58f56e['peer']][_0xd4d5('0x45')]=_0x58f56e[_0xd4d5('0x45')];logger[_0xd4d5('0x25')](_0xd4d5('0x47'),util[_0xd4d5('0x18')](this[_0xd4d5('0xd')][_0x58f56e[_0xd4d5('0x43')]],{'showHidden':![],'depth':null}));this['emit'](util[_0xd4d5('0x2d')](_0xd4d5('0x3a'),this[_0xd4d5('0xd')][_0x58f56e[_0xd4d5('0x43')]][_0xd4d5('0x2f')]),_0xd4d5('0x48'),this[_0xd4d5('0xd')][_0x58f56e[_0xd4d5('0x43')]]);}else if(this[_0xd4d5('0xb')][_0x58f56e[_0xd4d5('0x43')]]){this['trunks'][_0x58f56e[_0xd4d5('0x43')]][_0xd4d5('0x46')]=_0x58f56e[_0xd4d5('0x12')]['toLowerCase']();this['trunks'][_0x58f56e['peer']]['address']=_0x58f56e[_0xd4d5('0x45')];logger[_0xd4d5('0x25')](_0xd4d5('0x49'),util[_0xd4d5('0x18')](this[_0xd4d5('0xb')][_0x58f56e[_0xd4d5('0x43')]],{'showHidden':![],'depth':null}));this['emit'](util[_0xd4d5('0x2d')](_0xd4d5('0x2e'),this[_0xd4d5('0xb')][_0x58f56e['peer']][_0xd4d5('0x2f')]),_0xd4d5('0x30'),this['trunks'][_0x58f56e['peer']]);}}}catch(_0x41cde1){logger['error'](_0xd4d5('0x44'),util['inspect'](_0x41cde1,{'showHidden':![],'depth':null}));}};module[_0xd4d5('0x4a')]=UserReport;
\ No newline at end of file
+var _0x6208=['info','[userReport][registry]\x20registry:%s\x20state:%s','state','[userReport][registry]','find','username','stateRegistry','merge','omit','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','trunk:save','device','debug','local','toLowerCase','toNumber','stateTime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','name','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith','Local','substring','indexOf','mobile','phone','accountcode','updateStatusRealtime','[userReport][devicestatechange]','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','peerstatus','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','telephone:%s','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','[userReport][peerstatus]','moment','util','../../../config/environment','../../../config/logger','ami','../ami','redis','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','bind','registry','syncRegistry','devicestatechange','syncDeviceState','syncPeerStatus','syncRealtimeShow','then','catch','error','[userReport][sipshowregistry]','resolve','actionDeviceStateList','[userReport][devicestatelist]','inspect','actionSipPeerStatus','prototype','isNotNull','isUndefined','emit'];(function(_0x18f156,_0x27534c){var _0x52b030=function(_0x3894d4){while(--_0x3894d4){_0x18f156['push'](_0x18f156['shift']());}};_0x52b030(++_0x27534c);}(_0x6208,0x107));var _0x8620=function(_0x2b152a,_0x3dd988){_0x2b152a=_0x2b152a-0x0;var _0x2ad4c7=_0x6208[_0x2b152a];return _0x2ad4c7;};'use strict';var _=require('lodash');var moment=require(_0x8620('0x0'));var util=require(_0x8620('0x1'));var Redis=require('ioredis');var BPromise=require('bluebird');var config=require(_0x8620('0x2'));var logger=require(_0x8620('0x3'))(_0x8620('0x4'));var ami=require(_0x8620('0x5'));config[_0x8620('0x6')]=_['defaults'](config[_0x8620('0x6')],{'host':_0x8620('0x7'),'port':0x18eb});var io=require(_0x8620('0x8'))(new Redis(config[_0x8620('0x6')]));function UserReport(_0xed5f04){this[_0x8620('0x9')]=_0xed5f04['trunks'];this[_0x8620('0xa')]=_0xed5f04[_0x8620('0xa')];this[_0x8620('0xb')]=_0xed5f04['telephones'];ami['on'](_0x8620('0xc'),this['syncRegistry'][_0x8620('0xd')](this));ami['on'](_0x8620('0xe'),this[_0x8620('0xf')][_0x8620('0xd')](this));ami['on'](_0x8620('0x10'),this[_0x8620('0x11')][_0x8620('0xd')](this));ami['on']('peerstatus',this[_0x8620('0x12')][_0x8620('0xd')](this));return this[_0x8620('0x13')]();}function showSipRegistrations(){Promise['resolve']()[_0x8620('0x14')](ami['actionSipShowRegistry']())[_0x8620('0x15')](function(_0x5a53b3){logger[_0x8620('0x16')](_0x8620('0x17'),util['inspect'](_0x5a53b3,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x8620('0x18')]()['then'](ami[_0x8620('0x19')]())[_0x8620('0x15')](function(_0x56f799){logger[_0x8620('0x16')](_0x8620('0x1a'),util[_0x8620('0x1b')](_0x56f799,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x8620('0x18')]()['then'](ami[_0x8620('0x1c')]())[_0x8620('0x15')](function(_0x24ba3d){logger['error']('[userReport][sippeerstatus]',util['inspect'](_0x24ba3d,{'showHidden':![],'depth':null}));});}UserReport[_0x8620('0x1d')]['syncRealtimeShow']=function(){setInterval(function(){BPromise['resolve']()['then'](showSipRegistrations())['then'](listDeviceStates())[_0x8620('0x14')](showPeersStatus());},0x32c8);};UserReport[_0x8620('0x1d')][_0x8620('0x1e')]=function(_0x8a9c71){return _0x8a9c71!==null&&!_[_0x8620('0x1f')](_0x8a9c71);};UserReport[_0x8620('0x1d')][_0x8620('0x20')]=function(_0x1f059c,_0x358baf,_0xc4d470){io['to'](_0x1f059c)[_0x8620('0x20')](_0x358baf,_0xc4d470);};UserReport['prototype'][_0x8620('0xf')]=function(_0x388580){try{if(this[_0x8620('0x1e')](_0x388580)){logger[_0x8620('0x21')](_0x8620('0x22'),_0x388580['username'],_0x388580[_0x8620('0x23')]);logger['debug'](_0x8620('0x24'),util[_0x8620('0x1b')](_0x388580,{'showHidden':![],'depth':null}));var _0x5dad1f=_[_0x8620('0x25')](this[_0x8620('0x9')],{'defaultuser':_0x388580[_0x8620('0x26')]});if(_0x5dad1f){_0x388580[_0x8620('0x27')]=_0x388580[_0x8620('0x23')];_[_0x8620('0x28')](_0x5dad1f,_[_0x8620('0x29')](_0x388580,['event','actionid',_0x8620('0x26'),_0x8620('0x23')]));logger['debug'](_0x8620('0x2a'),util[_0x8620('0x1b')](_0x5dad1f,{'showHidden':![],'depth':null}));this[_0x8620('0x20')](util[_0x8620('0x2b')](_0x8620('0x2c'),_0x5dad1f['name']),_0x8620('0x2d'),_0x5dad1f);}}}catch(_0x1831c9){logger['error'](_0x8620('0x24'),util[_0x8620('0x1b')](_0x1831c9,{'showHidden':![],'depth':null}));}};UserReport[_0x8620('0x1d')][_0x8620('0x11')]=function(_0x8103cb){try{if(this['isNotNull'](_0x8103cb)){logger[_0x8620('0x21')]('[userReport][devicestatechange]\x20device:%s\x20state:%s',_0x8103cb[_0x8620('0x2e')],_0x8103cb[_0x8620('0x23')]);logger[_0x8620('0x2f')]('[userReport][devicestatechange]',util[_0x8620('0x1b')](_0x8103cb,{'showHidden':![],'depth':null}));if(this[_0x8620('0xa')][_0x8103cb[_0x8620('0x2e')]]){if(!this[_0x8620('0xa')][_0x8103cb['device']][_0x8620('0x30')]||_0x8103cb['state']['toLowerCase']()=='inuse'){this[_0x8620('0xa')][_0x8103cb[_0x8620('0x2e')]][_0x8620('0x30')]=![];if(this[_0x8620('0xa')][_0x8103cb[_0x8620('0x2e')]]['state']!==_0x8103cb[_0x8620('0x23')][_0x8620('0x31')]()){this[_0x8620('0xa')][_0x8103cb['device']]['stateTime']=_[_0x8620('0x32')](moment()[_0x8620('0x2b')]('x'));}this[_0x8620('0xa')][_0x8103cb[_0x8620('0x2e')]][_0x8620('0x23')]=_0x8103cb[_0x8620('0x23')][_0x8620('0x31')]();this[_0x8620('0xa')][_0x8103cb[_0x8620('0x2e')]]['updateStatusRealtime'](_0x8103cb);}}else if(this[_0x8620('0xb')][_0x8103cb['device']]){if(this[_0x8620('0xb')][_0x8103cb[_0x8620('0x2e')]]['state']!==_0x8103cb[_0x8620('0x23')]['toLowerCase']()){this[_0x8620('0xb')][_0x8103cb[_0x8620('0x2e')]][_0x8620('0x33')]=_[_0x8620('0x32')](moment()[_0x8620('0x2b')]('x'));}this[_0x8620('0xb')][_0x8103cb['device']][_0x8620('0x23')]=_0x8103cb[_0x8620('0x23')]['toLowerCase']();logger['debug'](_0x8620('0x34'),util[_0x8620('0x1b')](this[_0x8620('0xb')][_0x8103cb[_0x8620('0x2e')]],{'showHidden':![],'depth':null}));this[_0x8620('0x20')](util['format']('telephone:%s',this['telephones'][_0x8103cb[_0x8620('0x2e')]][_0x8620('0x35')]),_0x8620('0x36'),this[_0x8620('0xb')][_0x8103cb[_0x8620('0x2e')]]);}else if(this['trunks'][_0x8103cb[_0x8620('0x2e')]]){if(this[_0x8620('0x9')][_0x8103cb[_0x8620('0x2e')]][_0x8620('0x23')]!==_0x8103cb[_0x8620('0x23')][_0x8620('0x31')]()){this[_0x8620('0x9')][_0x8103cb[_0x8620('0x2e')]]['stateTime']=_['toNumber'](moment()[_0x8620('0x2b')]('x'));}this[_0x8620('0x9')][_0x8103cb['device']][_0x8620('0x23')]=_0x8103cb[_0x8620('0x23')][_0x8620('0x31')]();logger[_0x8620('0x2f')](_0x8620('0x37'),util[_0x8620('0x1b')](this[_0x8620('0x9')][_0x8103cb[_0x8620('0x2e')]],{'showHidden':![],'depth':null}));this[_0x8620('0x20')](util[_0x8620('0x2b')](_0x8620('0x2c'),this[_0x8620('0x9')][_0x8103cb['device']][_0x8620('0x35')]),_0x8620('0x2d'),this[_0x8620('0x9')][_0x8103cb['device']]);}else if(_[_0x8620('0x38')](_0x8103cb[_0x8620('0x2e')],_0x8620('0x39'))){var _0x5ef815=_0x8103cb[_0x8620('0x2e')];var _0x3a1449=_0x5ef815[_0x8620('0x3a')](_0x5ef815['indexOf']('/')+0x1,_0x5ef815[_0x8620('0x3b')]('@'));var _0x2fa468=_[_0x8620('0x25')](this['agents'],function(_0x1e6ea9){return _0x1e6ea9[_0x8620('0x3c')]==_0x3a1449||_0x1e6ea9[_0x8620('0x3d')]==_0x3a1449||_0x1e6ea9[_0x8620('0x3e')]==_0x3a1449;});if(_0x2fa468){if(_0x2fa468[_0x8620('0x23')]!==_0x8103cb[_0x8620('0x23')][_0x8620('0x31')]()){_0x2fa468[_0x8620('0x33')]=_['toNumber'](moment()['format']('x'));}_0x2fa468[_0x8620('0x23')]=_0x8103cb[_0x8620('0x23')]['toLowerCase']();_0x2fa468['local']=!![];_0x2fa468[_0x8620('0x3f')](_0x8103cb);}}}}catch(_0xb466d0){logger[_0x8620('0x16')](_0x8620('0x40'),util['inspect'](_0xb466d0,{'showHidden':![],'depth':null}));}};UserReport['prototype']['syncPeerStatus']=function(_0x4e8ef2){try{if(this[_0x8620('0x1e')](_0x4e8ef2)&&this['isNotNull'](_0x4e8ef2['peerstatus'])){logger[_0x8620('0x21')](_0x8620('0x41'),_0x4e8ef2[_0x8620('0x42')],_0x4e8ef2[_0x8620('0x43')],_0x4e8ef2[_0x8620('0x44')]);logger[_0x8620('0x2f')]('[userReport][peerstatus]',util['inspect'](_0x4e8ef2,{'showHidden':![],'depth':null}));if(this[_0x8620('0xa')][_0x4e8ef2[_0x8620('0x42')]]){if(!this['agents'][_0x4e8ef2[_0x8620('0x42')]][_0x8620('0x30')]||_0x4e8ef2[_0x8620('0x44')][_0x8620('0x31')]()=='registered'){this['agents'][_0x4e8ef2['peer']][_0x8620('0x30')]=![];this[_0x8620('0xa')][_0x4e8ef2[_0x8620('0x42')]][_0x8620('0x45')]=_0x4e8ef2[_0x8620('0x44')][_0x8620('0x31')]();this['agents'][_0x4e8ef2['peer']]['address']=_0x4e8ef2[_0x8620('0x43')];this['agents'][_0x4e8ef2[_0x8620('0x42')]][_0x8620('0x3f')](_0x4e8ef2);}}else if(this[_0x8620('0xb')][_0x4e8ef2[_0x8620('0x42')]]){this[_0x8620('0xb')][_0x4e8ef2[_0x8620('0x42')]]['status']=_0x4e8ef2[_0x8620('0x44')][_0x8620('0x31')]();this[_0x8620('0xb')][_0x4e8ef2[_0x8620('0x42')]]['address']=_0x4e8ef2['address'];logger[_0x8620('0x2f')](_0x8620('0x46'),util['inspect'](this[_0x8620('0xb')][_0x4e8ef2[_0x8620('0x42')]],{'showHidden':![],'depth':null}));this[_0x8620('0x20')](util[_0x8620('0x2b')](_0x8620('0x47'),this[_0x8620('0xb')][_0x4e8ef2['peer']][_0x8620('0x35')]),_0x8620('0x36'),this[_0x8620('0xb')][_0x4e8ef2[_0x8620('0x42')]]);}else if(this['trunks'][_0x4e8ef2[_0x8620('0x42')]]){this[_0x8620('0x9')][_0x4e8ef2['peer']][_0x8620('0x45')]=_0x4e8ef2[_0x8620('0x44')][_0x8620('0x31')]();this[_0x8620('0x9')][_0x4e8ef2[_0x8620('0x42')]][_0x8620('0x43')]=_0x4e8ef2[_0x8620('0x43')];logger[_0x8620('0x2f')](_0x8620('0x48'),util[_0x8620('0x1b')](this[_0x8620('0x9')][_0x4e8ef2['peer']],{'showHidden':![],'depth':null}));this[_0x8620('0x20')](util[_0x8620('0x2b')](_0x8620('0x2c'),this[_0x8620('0x9')][_0x4e8ef2['peer']][_0x8620('0x35')]),_0x8620('0x2d'),this['trunks'][_0x4e8ef2[_0x8620('0x42')]]);}}}catch(_0x7c58e5){logger[_0x8620('0x16')](_0x8620('0x49'),util[_0x8620('0x1b')](_0x7c58e5,{'showHidden':![],'depth':null}));}};module['exports']=UserReport;
\ No newline at end of file
index d350c1b..845581e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5110=['inspect','YYYY-MM-DD\x20HH:mm:ss','called','mandatoryDisposition','queue','inbound','variables','voice','merge','event','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','custom:agentcalled','interface','calleridnum','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:','user:%s','user:called','error','[%s][voiceAgentReport][agentcalled]','[%s][voiceAgentReport][agentconnect]\x20event:','hasOwnProperty','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','format','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','lastevent','connect','routealias','pick','destconnectedlinenum','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:','custom:agentconnect','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:','user:agentconnect','agentcomplete','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere','agentringnoanswerAt','answeredelsewheredestinationuniqueid','answeredelsewheremembername','answered_elsewhere','custom:agentansweredelsewhere','[%s][voiceAgentReport][agentconnect]','rejected','[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:','custom:agentringnoanswer','[%s][voiceAgentReport][queuecallerabandon]\x20event:','abandoned','[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:','[%s][voiceAgentReport][queuecallerabandon]','[%s][voiceAgentReport][agentcomplete]\x20event:','agentcompleteAt','complete','reason','transfer','agent','talktime','acw','acwtime','acwTimeout','agentacw','omit','[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','destaccountcode','[%s][voiceAgentReport][agentcomplete]','[%s][voiceAgentReport][varset]\x20event:','addVariable','keys','variable','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','value','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','isNil','includes','[%s][voiceAgentReport][hangup]\x20event:','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','values','custom:voiceAgentReport','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','diff','seconds','secondtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]','[%s][voiceAgentReport][blindtransfer]\x20event:','transfereruniqueid','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','[%s][voiceAgentReport][blindtransfer]','syncMusicOnHoldStart','channel','substring','lastIndexOf','onhold','[%s][voiceAgentReport][musiconholdstart]','[%s][voiceAgentReport][musiconholdstop]\x20interface:%s','[%s][voiceAgentReport][musiconholdstop]','exports','lodash','moment','util','ioredis','../../../config/environment','ami','../ami','redis','defaults','localhost','socket.io-emitter','channels','voiceChannels','voiceQueues','agents','syncAgentCalled','bind','agentconnect','syncAgentConnect','agentringnoanswer','queuecallerabandon','syncQueueCallerAbandon','syncAgentComplete','varset','syncVarSet','syncHangup','musiconholdstart','musiconholdstop','syncMusicOnHoldStop','syncAttendedTransfer','blindtransfer','syncBlindTransfer','prototype','emit','isNotNull','isUndefined','info','[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','uniqueid','membername','destuniqueid','debug','[%s][voiceAgentReport][agentcalled]\x20event:'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x5110,0x111));var _0x0511=function(_0x437787,_0x36e9f6){_0x437787=_0x437787-0x0;var _0x567656=_0x5110[_0x437787];return _0x567656;};'use strict';var _=require(_0x0511('0x0'));var moment=require(_0x0511('0x1'));var util=require(_0x0511('0x2'));var Redis=require(_0x0511('0x3'));var config=require(_0x0511('0x4'));var logger=require('../../../config/logger')(_0x0511('0x5'));var ami=require(_0x0511('0x6'));config[_0x0511('0x7')]=_[_0x0511('0x8')](config[_0x0511('0x7')],{'host':_0x0511('0x9'),'port':0x18eb});var io=require(_0x0511('0xa'))(new Redis(config[_0x0511('0x7')]));function VoiceAgentReport(_0x27e8b1){this[_0x0511('0xb')]={};this[_0x0511('0xc')]=_0x27e8b1['channels'];this[_0x0511('0xd')]=_0x27e8b1[_0x0511('0xd')];this[_0x0511('0xe')]=_0x27e8b1['agents'];this['variables']={};ami['on']('agentcalled',this[_0x0511('0xf')][_0x0511('0x10')](this));ami['on'](_0x0511('0x11'),this[_0x0511('0x12')][_0x0511('0x10')](this));ami['on'](_0x0511('0x13'),this['syncAgentRingNoAnswer'][_0x0511('0x10')](this));ami['on'](_0x0511('0x14'),this[_0x0511('0x15')][_0x0511('0x10')](this));ami['on']('agentcomplete',this[_0x0511('0x16')][_0x0511('0x10')](this));ami['on'](_0x0511('0x17'),this[_0x0511('0x18')][_0x0511('0x10')](this));ami['on']('hangup',this[_0x0511('0x19')][_0x0511('0x10')](this));ami['on'](_0x0511('0x1a'),this['syncMusicOnHoldStart'][_0x0511('0x10')](this));ami['on'](_0x0511('0x1b'),this[_0x0511('0x1c')][_0x0511('0x10')](this));ami['on']('attendedtransfer',this[_0x0511('0x1d')]['bind'](this));ami['on'](_0x0511('0x1e'),this[_0x0511('0x1f')][_0x0511('0x10')](this));}VoiceAgentReport[_0x0511('0x20')]['emit']=function(_0x552719,_0x1f9e24,_0x543ebf){io['to'](_0x552719)[_0x0511('0x21')](_0x1f9e24,_0x543ebf);};VoiceAgentReport[_0x0511('0x20')][_0x0511('0x22')]=function(_0x4db987){return _0x4db987!==null&&!_[_0x0511('0x23')](_0x4db987);};VoiceAgentReport['prototype'][_0x0511('0xf')]=function(_0x185cbf){try{if(this[_0x0511('0x22')](_0x185cbf)){logger[_0x0511('0x24')](_0x0511('0x25'),_0x185cbf[_0x0511('0x26')],_0x185cbf[_0x0511('0x27')],_0x185cbf[_0x0511('0x28')]);logger[_0x0511('0x29')](_0x0511('0x2a'),_0x185cbf[_0x0511('0x26')],util[_0x0511('0x2b')](_0x185cbf,{'showHidden':![],'depth':null}));if(_[_0x0511('0x23')](this[_0x0511('0xb')][_0x185cbf[_0x0511('0x26')]])){this[_0x0511('0xb')][_0x185cbf['uniqueid']]={};}if(_[_0x0511('0x23')](this[_0x0511('0xb')][_0x185cbf[_0x0511('0x26')]][_0x185cbf[_0x0511('0x28')]])){this['channels'][_0x185cbf[_0x0511('0x26')]][_0x185cbf[_0x0511('0x28')]]={'agentcalledAt':moment()['format'](_0x0511('0x2c')),'lastevent':_0x0511('0x2d'),'mandatoryDisposition':this['voiceQueues'][_0x185cbf['queue']]?this[_0x0511('0xd')][_0x185cbf['queue']][_0x0511('0x2e')]||![]:![],'type':this[_0x0511('0xd')][_0x185cbf[_0x0511('0x2f')]]?this[_0x0511('0xd')][_0x185cbf[_0x0511('0x2f')]]['type']||'inbound':_0x0511('0x30'),'variables':this[_0x0511('0x31')][_0x185cbf[_0x0511('0x26')]],'motionChannel':_0x0511('0x32')};}_[_0x0511('0x33')](this[_0x0511('0xb')][_0x185cbf[_0x0511('0x26')]][_0x185cbf[_0x0511('0x28')]],_['omit'](_0x185cbf,[_0x0511('0x34'),'privilege']));logger[_0x0511('0x29')](_0x0511('0x35'),_0x185cbf[_0x0511('0x26')],util[_0x0511('0x2b')](this[_0x0511('0xb')][_0x185cbf[_0x0511('0x26')]][_0x185cbf[_0x0511('0x28')]],{'showHidden':![],'depth':null}));ami[_0x0511('0x21')](_0x0511('0x36'),this[_0x0511('0xb')][_0x185cbf[_0x0511('0x26')]][_0x185cbf[_0x0511('0x28')]]);var _0x44c809={'id':this[_0x0511('0xe')][_0x185cbf[_0x0511('0x37')]]['id'],'calleridnum':this[_0x0511('0xb')][_0x185cbf['uniqueid']][_0x185cbf[_0x0511('0x28')]][_0x0511('0x38')],'queue':this[_0x0511('0xb')][_0x185cbf['uniqueid']][_0x185cbf['destuniqueid']]['queue'],'variables':this['channels'][_0x185cbf[_0x0511('0x26')]][_0x185cbf[_0x0511('0x28')]]['variables']};logger[_0x0511('0x29')](_0x0511('0x39'),_0x185cbf[_0x0511('0x26')],util[_0x0511('0x2b')](_0x44c809,{'showHidden':![],'depth':null}));this[_0x0511('0x21')](util['format'](_0x0511('0x3a'),_0x185cbf[_0x0511('0x27')]),_0x0511('0x3b'),_0x44c809);}}catch(_0x41498e){logger[_0x0511('0x3c')](_0x0511('0x3d'),_0x185cbf['uniqueid'],util['inspect'](_0x41498e,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0511('0x20')][_0x0511('0x12')]=function(_0x787170){try{if(this['isNotNull'](_0x787170)){if(this['channels'][_0x787170[_0x0511('0x26')]]){logger[_0x0511('0x29')](_0x0511('0x3e'),_0x787170['uniqueid'],util[_0x0511('0x2b')](_0x787170,{'showHidden':![],'depth':null}));for(var _0x15f800 in this[_0x0511('0xb')][_0x787170[_0x0511('0x26')]]){if(this['channels'][_0x787170[_0x0511('0x26')]][_0x0511('0x3f')](_0x15f800)){if(_0x787170[_0x0511('0x28')]===_0x15f800){logger[_0x0511('0x24')](_0x0511('0x40'),_0x787170['uniqueid'],_0x787170['membername'],_0x787170[_0x0511('0x28')]);this[_0x0511('0xb')][_0x787170[_0x0511('0x26')]][_0x15f800][_0x0511('0x41')]=moment()[_0x0511('0x42')]('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x787170[_0x0511('0x26')]][_0x15f800][_0x0511('0x43')]=_0x787170[_0x0511('0x43')];this[_0x0511('0xb')][_0x787170[_0x0511('0x26')]][_0x15f800]['connectedlinenum']=_0x787170[_0x0511('0x44')];this[_0x0511('0xb')][_0x787170[_0x0511('0x26')]][_0x15f800][_0x0511('0x45')]=_0x787170[_0x0511('0x45')];this[_0x0511('0xb')][_0x787170['uniqueid']][_0x15f800]['destchannelstatedesc']=_0x787170[_0x0511('0x46')];this[_0x0511('0xb')][_0x787170[_0x0511('0x26')]][_0x15f800][_0x0511('0x47')]=_0x787170['holdtime'];this[_0x0511('0xb')][_0x787170[_0x0511('0x26')]][_0x15f800][_0x0511('0x48')]=_0x0511('0x49');if(this[_0x0511('0xc')][this[_0x0511('0xb')][_0x787170[_0x0511('0x26')]][_0x15f800]['uniqueid']]){var _0x19de7c=this[_0x0511('0xc')][this['channels'][_0x787170[_0x0511('0x26')]][_0x15f800][_0x0511('0x26')]][_0x0511('0x4a')];this[_0x0511('0xb')][_0x787170[_0x0511('0x26')]][_0x15f800]['routealias']=_0x19de7c;_0x787170[_0x0511('0x4a')]=_0x19de7c;}_['merge'](this[_0x0511('0xe')][_0x787170['interface']],_[_0x0511('0x4b')](_0x787170,[_0x0511('0x2f'),_0x0511('0x4c'),_0x0511('0x4a')]));logger[_0x0511('0x29')](_0x0511('0x4d'),_0x787170[_0x0511('0x26')],util[_0x0511('0x2b')](this[_0x0511('0xb')][_0x787170[_0x0511('0x26')]][_0x787170[_0x0511('0x28')]],{'showHidden':![],'depth':null}));ami['emit'](_0x0511('0x4e'),this[_0x0511('0xb')][_0x787170[_0x0511('0x26')]][_0x787170[_0x0511('0x28')]]);logger[_0x0511('0x29')](_0x0511('0x4f'),_0x787170[_0x0511('0x26')],util['inspect'](this[_0x0511('0xb')][_0x787170[_0x0511('0x26')]][_0x787170[_0x0511('0x28')]],{'showHidden':![],'depth':null}));this[_0x0511('0x21')](util[_0x0511('0x42')](_0x0511('0x3a'),_0x787170['membername']),_0x0511('0x50'),this[_0x0511('0xb')][_0x787170['uniqueid']][_0x787170[_0x0511('0x28')]]);}else if(!this['channels'][_0x787170[_0x0511('0x26')]][_0x15f800][_0x0511('0x13')]&&!this[_0x0511('0xb')][_0x787170[_0x0511('0x26')]][_0x15f800][_0x0511('0x51')]){logger[_0x0511('0x24')](_0x0511('0x52'),_0x787170['uniqueid'],this[_0x0511('0xb')][_0x787170[_0x0511('0x26')]][_0x15f800]['membername'],_0x15f800);this[_0x0511('0xb')][_0x787170[_0x0511('0x26')]][_0x15f800][_0x0511('0x13')]=!![];this[_0x0511('0xb')][_0x787170[_0x0511('0x26')]][_0x15f800][_0x0511('0x53')]=moment()[_0x0511('0x42')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x0511('0xb')][_0x787170[_0x0511('0x26')]][_0x15f800][_0x0511('0x54')]=_0x787170[_0x0511('0x28')];this[_0x0511('0xb')][_0x787170[_0x0511('0x26')]][_0x15f800][_0x0511('0x55')]=_0x787170[_0x0511('0x27')];this[_0x0511('0xb')][_0x787170[_0x0511('0x26')]][_0x15f800][_0x0511('0x48')]=_0x0511('0x56');this['channels'][_0x787170['uniqueid']][_0x15f800]['reason']=_0x0511('0x56');logger[_0x0511('0x29')]('[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:',_0x787170[_0x0511('0x26')],util[_0x0511('0x2b')](this[_0x0511('0xb')][_0x787170[_0x0511('0x26')]][_0x15f800],{'showHidden':![],'depth':null}));ami[_0x0511('0x21')](_0x0511('0x57'),this[_0x0511('0xb')][_0x787170[_0x0511('0x26')]][_0x15f800]);}}}}}}catch(_0x39950d){logger[_0x0511('0x3c')](_0x0511('0x58'),_0x787170['uniqueid'],util[_0x0511('0x2b')](_0x39950d,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0511('0x20')]['syncAgentRingNoAnswer']=function(_0x20d709){try{if(this[_0x0511('0x22')](_0x20d709)){logger[_0x0511('0x29')]('[%s][voiceAgentReport][agentringnoanswer]\x20event:',_0x20d709['uniqueid'],util[_0x0511('0x2b')](_0x20d709,{'showHidden':![],'depth':null}));if(this['channels'][_0x20d709[_0x0511('0x26')]]&&this['channels'][_0x20d709[_0x0511('0x26')]][_0x20d709['destuniqueid']]){logger['info']('[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected',_0x20d709[_0x0511('0x26')],_0x20d709[_0x0511('0x27')],_0x20d709[_0x0511('0x28')]);this[_0x0511('0xb')][_0x20d709[_0x0511('0x26')]][_0x20d709['destuniqueid']]['agentringnoanswer']=!![];this[_0x0511('0xb')][_0x20d709[_0x0511('0x26')]][_0x20d709[_0x0511('0x28')]][_0x0511('0x53')]=moment()[_0x0511('0x42')](_0x0511('0x2c'));this[_0x0511('0xb')][_0x20d709[_0x0511('0x26')]][_0x20d709['destuniqueid']][_0x0511('0x48')]=_0x0511('0x59');this[_0x0511('0xb')][_0x20d709[_0x0511('0x26')]][_0x20d709['destuniqueid']]['reason']=_0x0511('0x59');logger[_0x0511('0x29')](_0x0511('0x5a'),_0x20d709[_0x0511('0x26')],util['inspect'](this['channels'][_0x20d709[_0x0511('0x26')]][_0x20d709[_0x0511('0x28')]],{'showHidden':![],'depth':null}));ami[_0x0511('0x21')](_0x0511('0x5b'),this[_0x0511('0xb')][_0x20d709[_0x0511('0x26')]][_0x20d709[_0x0511('0x28')]]);}}}catch(_0x553b7c){logger[_0x0511('0x3c')]('[%s][voiceAgentReport][agentringnoanswer]',_0x20d709[_0x0511('0x26')],util['inspect'](_0x553b7c,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0511('0x15')]=function(_0x5968e7){try{if(this[_0x0511('0x22')](_0x5968e7)){logger['debug'](_0x0511('0x5c'),_0x5968e7[_0x0511('0x26')],util[_0x0511('0x2b')](_0x5968e7,{'showHidden':![],'depth':null}));if(this[_0x0511('0xb')][_0x5968e7[_0x0511('0x26')]]){for(var _0x216856 in this[_0x0511('0xb')][_0x5968e7[_0x0511('0x26')]]){if(this[_0x0511('0xb')][_0x5968e7[_0x0511('0x26')]][_0x0511('0x3f')](_0x216856)&&!this[_0x0511('0xb')][_0x5968e7['uniqueid']][_0x216856][_0x0511('0x13')]&&!this[_0x0511('0xb')][_0x5968e7[_0x0511('0x26')]][_0x216856]['agentcomplete']){logger[_0x0511('0x24')]('[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned',_0x5968e7['uniqueid'],this[_0x0511('0xb')][_0x5968e7[_0x0511('0x26')]][_0x216856][_0x0511('0x27')],_0x216856);this[_0x0511('0xb')][_0x5968e7['uniqueid']][_0x216856]['agentringnoanswer']=!![];this[_0x0511('0xb')][_0x5968e7[_0x0511('0x26')]][_0x216856][_0x0511('0x53')]=moment()['format'](_0x0511('0x2c'));this['channels'][_0x5968e7[_0x0511('0x26')]][_0x216856][_0x0511('0x48')]=_0x0511('0x5d');this[_0x0511('0xb')][_0x5968e7['uniqueid']][_0x216856]['reason']=_0x0511('0x5d');logger[_0x0511('0x29')](_0x0511('0x5e'),_0x5968e7[_0x0511('0x26')],util[_0x0511('0x2b')](this[_0x0511('0xb')][_0x5968e7['uniqueid']][_0x216856],{'showHidden':![],'depth':null}));ami[_0x0511('0x21')]('custom:agentqueuecallerabandon',this[_0x0511('0xb')][_0x5968e7['uniqueid']][_0x216856]);}}}}}catch(_0x3540fc){logger[_0x0511('0x3c')](_0x0511('0x5f'),_0x5968e7['uniqueid'],util[_0x0511('0x2b')](_0x3540fc,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype']['syncAgentComplete']=function(_0x446bcf){try{if(this[_0x0511('0x22')](_0x446bcf)){logger[_0x0511('0x29')](_0x0511('0x60'),_0x446bcf['uniqueid'],util[_0x0511('0x2b')](_0x446bcf,{'showHidden':![],'depth':null}));if(this[_0x0511('0xb')][_0x446bcf[_0x0511('0x26')]]){for(var _0xa0466e in this[_0x0511('0xb')][_0x446bcf[_0x0511('0x26')]]){if(this[_0x0511('0xb')][_0x446bcf[_0x0511('0x26')]][_0x0511('0x3f')](_0xa0466e)){if(this[_0x0511('0xb')][_0x446bcf['uniqueid']][_0xa0466e][_0x0511('0x41')]&&!this[_0x0511('0xb')][_0x446bcf['uniqueid']][_0xa0466e]['agentcomplete']){logger[_0x0511('0x24')]('[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x446bcf[_0x0511('0x26')],this[_0x0511('0xb')][_0x446bcf[_0x0511('0x26')]][_0xa0466e][_0x0511('0x27')],_0xa0466e);this[_0x0511('0xb')][_0x446bcf[_0x0511('0x26')]][_0xa0466e][_0x0511('0x51')]=!![];this[_0x0511('0xb')][_0x446bcf[_0x0511('0x26')]][_0xa0466e][_0x0511('0x61')]=moment()[_0x0511('0x42')](_0x0511('0x2c'));this[_0x0511('0xb')][_0x446bcf[_0x0511('0x26')]][_0xa0466e]['lastevent']=_0x0511('0x62');this[_0x0511('0xb')][_0x446bcf['uniqueid']][_0xa0466e][_0x0511('0x63')]=_0x446bcf['reason']==_0x0511('0x64')?_0x0511('0x65'):_0x446bcf[_0x0511('0x63')];this[_0x0511('0xb')][_0x446bcf[_0x0511('0x26')]][_0xa0466e]['talktime']=_0x446bcf[_0x0511('0x66')];if(this[_0x0511('0xd')][_0x446bcf[_0x0511('0x2f')]]&&this[_0x0511('0xd')][_0x446bcf[_0x0511('0x2f')]][_0x0511('0x67')]){this['channels'][_0x446bcf['uniqueid']][_0xa0466e][_0x0511('0x68')]=this[_0x0511('0xd')][_0x446bcf[_0x0511('0x2f')]][_0x0511('0x69')];this['channels'][_0x446bcf['uniqueid']][_0xa0466e][_0x0511('0x6a')]=!![];}this['agents'][_0x446bcf[_0x0511('0x37')]]=_[_0x0511('0x6b')](this['agents'][_0x446bcf['interface']],[_0x0511('0x2f'),_0x0511('0x4c')]);logger[_0x0511('0x29')](_0x0511('0x6c'),_0x446bcf[_0x0511('0x26')],util['inspect'](this['channels'][_0x446bcf[_0x0511('0x26')]][_0xa0466e],{'showHidden':![],'depth':null}));ami['emit']('custom:agentcomplete',this['channels'][_0x446bcf[_0x0511('0x26')]][_0xa0466e]);logger[_0x0511('0x29')](_0x0511('0x6d'),_0x446bcf[_0x0511('0x26')],util[_0x0511('0x2b')]({'id':this['agents'][_0x446bcf['interface']]['id'],'destaccountcode':_0x446bcf['destaccountcode']},{'showHidden':![],'depth':null}));this[_0x0511('0x21')](util['format'](_0x0511('0x3a'),_0x446bcf['membername']),'user:agentcomplete',{'id':this[_0x0511('0xe')][_0x446bcf[_0x0511('0x37')]]['id'],'destaccountcode':_0x446bcf[_0x0511('0x6e')]});}}}}}}catch(_0x4de349){logger['error'](_0x0511('0x6f'),_0x446bcf[_0x0511('0x26')],util[_0x0511('0x2b')](_0x4de349,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0511('0x18')]=function(_0x33bdf8){try{if(this[_0x0511('0x22')](_0x33bdf8)){logger[_0x0511('0x29')](_0x0511('0x70'),_0x33bdf8[_0x0511('0x26')],util[_0x0511('0x2b')](_0x33bdf8,{'showHidden':![],'depth':null}));this[_0x0511('0x71')](_0x33bdf8['uniqueid'],_[_0x0511('0x72')](_0x33bdf8[_0x0511('0x73')])[0x0],_0x33bdf8['value']);if(this[_0x0511('0xb')][_0x33bdf8['uniqueid']]){for(var _0x431e0f in this[_0x0511('0xb')][_0x33bdf8[_0x0511('0x26')]]){if(this[_0x0511('0xb')][_0x33bdf8[_0x0511('0x26')]][_0x0511('0x3f')](_0x431e0f)){logger['info'](_0x0511('0x74'),_0x33bdf8[_0x0511('0x26')],_0x431e0f,_[_0x0511('0x72')](_0x33bdf8[_0x0511('0x73')])[0x0],_0x33bdf8[_0x0511('0x75')]);if(_[_0x0511('0x23')](this['channels'][_0x33bdf8['uniqueid']][_0x431e0f][_0x0511('0x31')])){this['channels'][_0x33bdf8[_0x0511('0x26')]][_0x431e0f][_0x0511('0x31')]={};}this[_0x0511('0xb')][_0x33bdf8[_0x0511('0x26')]][_0x431e0f]['variables']=this[_0x0511('0x31')][_0x33bdf8['uniqueid']];}}}}}catch(_0x3f3cc8){logger['error']('[%s][voiceAgentReport][varset]',_0x33bdf8[_0x0511('0x26')],util['inspect'](_0x3f3cc8,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0511('0x71')]=function(_0x5f0926,_0xf85307,_0x28407c){var _0x24f774=[_0x0511('0x76'),_0x0511('0x77'),_0x0511('0x78'),'rtpaudioqosjitterbridged',_0x0511('0x79'),_0x0511('0x7a'),_0x0511('0x7b'),'rtpaudioqosrttbridged',_0x0511('0x7c'),_0x0511('0x7d'),_0x0511('0x7e'),_0x0511('0x7f'),_0x0511('0x80'),_0x0511('0x81'),_0x0511('0x82'),_0x0511('0x83'),_0x0511('0x27'),_0x0511('0x84'),'memberrealtime'];if(!_[_0x0511('0x85')](_0xf85307)&&!_[_0x0511('0x86')](_0x24f774,_0xf85307)){if(_[_0x0511('0x23')](this[_0x0511('0x31')][_0x5f0926])){this['variables'][_0x5f0926]={};}this[_0x0511('0x31')][_0x5f0926][_0xf85307]=_0x28407c;}};VoiceAgentReport[_0x0511('0x20')][_0x0511('0x19')]=function(_0x22fa27){try{if(this[_0x0511('0x22')](_0x22fa27)){logger[_0x0511('0x29')](_0x0511('0x87'),_0x22fa27[_0x0511('0x26')],util['inspect'](_0x22fa27,{'showHidden':![],'depth':null}));if(this[_0x0511('0xb')][_0x22fa27[_0x0511('0x26')]]){for(var _0x28a540 in this[_0x0511('0xb')][_0x22fa27[_0x0511('0x26')]]){if(this[_0x0511('0xb')][_0x22fa27['uniqueid']]['hasOwnProperty'](_0x28a540)){if(this[_0x0511('0xb')][_0x22fa27[_0x0511('0x26')]][_0x28a540][_0x0511('0x63')]==_0x0511('0x64')&&this[_0x0511('0xb')][_0x22fa27[_0x0511('0x26')]][_0x28a540][_0x0511('0x51')]){logger[_0x0511('0x24')]('[%s][voiceAgentReport][hangup]\x20destuniqueid:%s',_0x22fa27[_0x0511('0x26')],_0x28a540);this[_0x0511('0xb')][_0x22fa27['uniqueid']][_0x28a540]['agentcompleteAt']=moment()[_0x0511('0x42')]('YYYY-MM-DD\x20HH:mm:ss');}}}logger[_0x0511('0x29')](_0x0511('0x88'),_0x22fa27[_0x0511('0x26')],util[_0x0511('0x2b')](_[_0x0511('0x89')](this[_0x0511('0xb')][_0x22fa27[_0x0511('0x26')]]),{'showHidden':![],'depth':null}));ami['emit'](_0x0511('0x8a'),_[_0x0511('0x89')](this[_0x0511('0xb')][_0x22fa27[_0x0511('0x26')]]));delete this[_0x0511('0xb')][_0x22fa27['uniqueid']];}if(this[_0x0511('0x31')][_0x22fa27[_0x0511('0x26')]]){delete this['variables'][_0x22fa27['uniqueid']];}}}catch(_0x34f044){logger[_0x0511('0x3c')]('[%s][voiceAgentReport][hangup]',_0x22fa27[_0x0511('0x26')],util['inspect'](_0x34f044,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0511('0x20')][_0x0511('0x1d')]=function(_0x367193){try{if(this[_0x0511('0x22')](_0x367193)){logger[_0x0511('0x29')](_0x0511('0x8b'),_0x367193[_0x0511('0x26')],util['inspect'](_0x367193,{'showHidden':![],'depth':null}));if(this['channels'][_0x367193['transfereeuniqueid']]){for(var _0x3ca3a0 in this[_0x0511('0xb')][_0x367193['transfereeuniqueid']]){if(this['channels'][_0x367193['transfereeuniqueid']][_0x0511('0x3f')](_0x3ca3a0)){if(_0x367193['origtransfereruniqueid']===_0x3ca3a0){logger['info']('[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x367193[_0x0511('0x26')],this[_0x0511('0xb')][_0x367193[_0x0511('0x8c')]][_0x3ca3a0][_0x0511('0x27')],_0x3ca3a0);var _0x357795=moment();this[_0x0511('0xb')][_0x367193['transfereeuniqueid']][_0x3ca3a0][_0x0511('0x51')]=!![];this[_0x0511('0xb')][_0x367193['transfereeuniqueid']][_0x3ca3a0]['agentcompleteAt']=moment()[_0x0511('0x42')](_0x0511('0x2c'));this['channels'][_0x367193[_0x0511('0x8c')]][_0x3ca3a0][_0x0511('0x48')]='complete';this[_0x0511('0xb')][_0x367193[_0x0511('0x8c')]][_0x3ca3a0][_0x0511('0x63')]='transfer';this[_0x0511('0xb')][_0x367193[_0x0511('0x8c')]][_0x3ca3a0][_0x0511('0x66')]=_0x357795[_0x0511('0x8d')](this['channels'][_0x367193[_0x0511('0x8c')]][_0x3ca3a0][_0x0511('0x41')],_0x0511('0x8e'));}}}}if(this[_0x0511('0xb')][_0x367193[_0x0511('0x8f')]]){var _0xf411cc=this[_0x0511('0xb')][_0x367193[_0x0511('0x8f')]];this[_0x0511('0xb')][_0x367193['secondtransfereruniqueid']]=this[_0x0511('0xb')][_0x367193[_0x0511('0x8c')]];this[_0x0511('0xb')][_0x367193['transfereeuniqueid']]=_0xf411cc;}}}catch(_0x398c21){logger[_0x0511('0x3c')](_0x0511('0x90'),_0x367193[_0x0511('0x26')],util[_0x0511('0x2b')](_0x398c21,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0511('0x20')]['syncBlindTransfer']=function(_0x1bd992){try{if(this[_0x0511('0x22')](_0x1bd992)){logger[_0x0511('0x29')](_0x0511('0x91'),_0x1bd992[_0x0511('0x26')],util[_0x0511('0x2b')](_0x1bd992,{'showHidden':![],'depth':null}));if(this[_0x0511('0xb')][_0x1bd992['transfereeuniqueid']]){for(var _0xe7fb22 in this['channels'][_0x1bd992['transfereeuniqueid']]){if(this[_0x0511('0xb')][_0x1bd992[_0x0511('0x8c')]][_0x0511('0x3f')](_0xe7fb22)){if(_0x1bd992[_0x0511('0x92')]===_0xe7fb22){logger[_0x0511('0x24')](_0x0511('0x93'),_0x1bd992[_0x0511('0x26')],this[_0x0511('0xb')][_0x1bd992[_0x0511('0x8c')]][_0xe7fb22][_0x0511('0x27')],_0xe7fb22);var _0x3f6531=moment();this[_0x0511('0xb')][_0x1bd992['transfereeuniqueid']][_0xe7fb22][_0x0511('0x51')]=!![];this['channels'][_0x1bd992[_0x0511('0x8c')]][_0xe7fb22][_0x0511('0x61')]=_0x3f6531;this[_0x0511('0xb')][_0x1bd992['transfereeuniqueid']][_0xe7fb22][_0x0511('0x48')]=_0x0511('0x62');this[_0x0511('0xb')][_0x1bd992[_0x0511('0x8c')]][_0xe7fb22][_0x0511('0x63')]='transfer';this[_0x0511('0xb')][_0x1bd992[_0x0511('0x8c')]][_0xe7fb22][_0x0511('0x66')]=_0x3f6531[_0x0511('0x8d')](this[_0x0511('0xb')][_0x1bd992[_0x0511('0x8c')]][_0xe7fb22][_0x0511('0x41')],'seconds');}}}}}}catch(_0x4b871a){logger[_0x0511('0x3c')](_0x0511('0x94'),_0x1bd992[_0x0511('0x26')],util[_0x0511('0x2b')](_0x4b871a,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0511('0x95')]=function(_0x13cfca){var _0x7a34a1='';try{if(this[_0x0511('0x22')](_0x13cfca)){logger[_0x0511('0x29')]('[%s][voiceAgentReport][musiconholdstart]\x20event:',_0x13cfca[_0x0511('0x26')],util['inspect'](_0x13cfca,{'showHidden':![],'depth':null}));if(_0x13cfca[_0x0511('0x96')]){_0x7a34a1=_0x13cfca[_0x0511('0x96')][_0x0511('0x97')](0x0,_0x13cfca[_0x0511('0x96')][_0x0511('0x98')]('-'));if(this[_0x0511('0xe')][_0x7a34a1]){logger[_0x0511('0x24')]('[%s][voiceAgentReport][musiconholdstart]\x20interface:%s',_0x13cfca[_0x0511('0x26')],_0x7a34a1);this['agents'][_0x7a34a1][_0x0511('0x99')]=!![];}}}}catch(_0x23133a){logger[_0x0511('0x3c')](_0x0511('0x9a'),_0x13cfca['uniqueid'],util['inspect'](_0x23133a,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0511('0x20')]['syncMusicOnHoldStop']=function(_0x35a59c){var _0x5443a2='';try{if(this[_0x0511('0x22')](_0x35a59c)){logger[_0x0511('0x29')]('[%s][voiceAgentReport][musiconholdstop]\x20event:',_0x35a59c[_0x0511('0x26')],util[_0x0511('0x2b')](_0x35a59c,{'showHidden':![],'depth':null}));if(_0x35a59c[_0x0511('0x96')]){_0x5443a2=_0x35a59c[_0x0511('0x96')][_0x0511('0x97')](0x0,_0x35a59c['channel'][_0x0511('0x98')]('-'));if(this['agents'][_0x5443a2]){logger['info'](_0x0511('0x9b'),_0x35a59c[_0x0511('0x26')],_0x5443a2);this['agents'][_0x5443a2][_0x0511('0x99')]=![];}}}}catch(_0x51eae4){logger[_0x0511('0x3c')](_0x0511('0x9c'),_0x35a59c['uniqueid'],util[_0x0511('0x2b')](_0x51eae4,{'showHidden':![],'depth':null}));}};module[_0x0511('0x9d')]=VoiceAgentReport;
\ No newline at end of file
+var _0x0bb5=['moment','util','ioredis','../../../config/environment','ami','../ami','redis','localhost','socket.io-emitter','channels','voiceChannels','voiceQueues','variables','agentcalled','bind','agentconnect','agentringnoanswer','syncAgentRingNoAnswer','queuecallerabandon','syncQueueCallerAbandon','agentcomplete','varset','syncVarSet','musiconholdstart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','syncBlindTransfer','prototype','emit','isNotNull','isUndefined','[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','uniqueid','membername','destuniqueid','debug','inspect','format','YYYY-MM-DD\x20HH:mm:ss','queue','type','inbound','voice','omit','event','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','custom:agentcalled','agents','user:%s','user:called','[%s][voiceAgentReport][agentcalled]','[%s][voiceAgentReport][agentconnect]\x20event:','hasOwnProperty','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','lastevent','connect','routealias','merge','interface','destconnectedlinenum','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:','custom:agentconnect','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:','user:agentconnect','info','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere','agentringnoanswerAt','answeredelsewheredestinationuniqueid','answered_elsewhere','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:','custom:agentansweredelsewhere','[%s][voiceAgentReport][agentconnect]','reason','rejected','[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:','[%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]\x20event:','[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','transfer','agent','talktime','acw','acwtime','agentacw','[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:','custom:agentcomplete','destaccountcode','error','[%s][voiceAgentReport][agentcomplete]','keys','variable','value','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','[%s][voiceAgentReport][varset]','addVariable','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','bridgepeer','bridgepvtcallid','memberinterface','memberlastcall','memberpenalty','memberrealtime','isNil','[%s][voiceAgentReport][hangup]\x20event:','[%s][voiceAgentReport][hangup]\x20destuniqueid:%s','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','values','[%s][voiceAgentReport][hangup]','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','origtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','complete','diff','seconds','secondtransfereruniqueid','[%s][voiceAgentReport][blindtransfer]\x20event:','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','[%s][voiceAgentReport][blindtransfer]','syncMusicOnHoldStart','channel','substring','lastIndexOf','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','onhold','[%s][voiceAgentReport][musiconholdstop]\x20interface:%s','[%s][voiceAgentReport][musiconholdstop]','exports'];(function(_0x1abb09,_0x18ee91){var _0xea1c07=function(_0x38f42c){while(--_0x38f42c){_0x1abb09['push'](_0x1abb09['shift']());}};_0xea1c07(++_0x18ee91);}(_0x0bb5,0x90));var _0x50bb=function(_0x5dea38,_0x569732){_0x5dea38=_0x5dea38-0x0;var _0x8cff40=_0x0bb5[_0x5dea38];return _0x8cff40;};'use strict';var _=require('lodash');var moment=require(_0x50bb('0x0'));var util=require(_0x50bb('0x1'));var Redis=require(_0x50bb('0x2'));var config=require(_0x50bb('0x3'));var logger=require('../../../config/logger')(_0x50bb('0x4'));var ami=require(_0x50bb('0x5'));config[_0x50bb('0x6')]=_['defaults'](config[_0x50bb('0x6')],{'host':_0x50bb('0x7'),'port':0x18eb});var io=require(_0x50bb('0x8'))(new Redis(config[_0x50bb('0x6')]));function VoiceAgentReport(_0xd0ab68){this[_0x50bb('0x9')]={};this[_0x50bb('0xa')]=_0xd0ab68[_0x50bb('0x9')];this['voiceQueues']=_0xd0ab68[_0x50bb('0xb')];this['agents']=_0xd0ab68['agents'];this[_0x50bb('0xc')]={};ami['on'](_0x50bb('0xd'),this['syncAgentCalled'][_0x50bb('0xe')](this));ami['on'](_0x50bb('0xf'),this['syncAgentConnect']['bind'](this));ami['on'](_0x50bb('0x10'),this[_0x50bb('0x11')]['bind'](this));ami['on'](_0x50bb('0x12'),this[_0x50bb('0x13')]['bind'](this));ami['on'](_0x50bb('0x14'),this['syncAgentComplete'][_0x50bb('0xe')](this));ami['on'](_0x50bb('0x15'),this[_0x50bb('0x16')][_0x50bb('0xe')](this));ami['on']('hangup',this['syncHangup'][_0x50bb('0xe')](this));ami['on'](_0x50bb('0x17'),this['syncMusicOnHoldStart'][_0x50bb('0xe')](this));ami['on'](_0x50bb('0x18'),this[_0x50bb('0x19')]['bind'](this));ami['on'](_0x50bb('0x1a'),this['syncAttendedTransfer'][_0x50bb('0xe')](this));ami['on']('blindtransfer',this[_0x50bb('0x1b')][_0x50bb('0xe')](this));}VoiceAgentReport[_0x50bb('0x1c')][_0x50bb('0x1d')]=function(_0x2c7ffb,_0x529c0f,_0x8364c1){io['to'](_0x2c7ffb)[_0x50bb('0x1d')](_0x529c0f,_0x8364c1);};VoiceAgentReport[_0x50bb('0x1c')][_0x50bb('0x1e')]=function(_0xdb0ef0){return _0xdb0ef0!==null&&!_[_0x50bb('0x1f')](_0xdb0ef0);};VoiceAgentReport[_0x50bb('0x1c')]['syncAgentCalled']=function(_0x3a6295){try{if(this[_0x50bb('0x1e')](_0x3a6295)){logger['info'](_0x50bb('0x20'),_0x3a6295[_0x50bb('0x21')],_0x3a6295[_0x50bb('0x22')],_0x3a6295[_0x50bb('0x23')]);logger[_0x50bb('0x24')]('[%s][voiceAgentReport][agentcalled]\x20event:',_0x3a6295[_0x50bb('0x21')],util[_0x50bb('0x25')](_0x3a6295,{'showHidden':![],'depth':null}));if(_[_0x50bb('0x1f')](this['channels'][_0x3a6295['uniqueid']])){this['channels'][_0x3a6295['uniqueid']]={};}if(_[_0x50bb('0x1f')](this[_0x50bb('0x9')][_0x3a6295['uniqueid']][_0x3a6295[_0x50bb('0x23')]])){this[_0x50bb('0x9')][_0x3a6295[_0x50bb('0x21')]][_0x3a6295['destuniqueid']]={'agentcalledAt':moment()[_0x50bb('0x26')](_0x50bb('0x27')),'lastevent':'called','mandatoryDisposition':this['voiceQueues'][_0x3a6295[_0x50bb('0x28')]]?this[_0x50bb('0xb')][_0x3a6295[_0x50bb('0x28')]]['mandatoryDisposition']||![]:![],'type':this[_0x50bb('0xb')][_0x3a6295['queue']]?this[_0x50bb('0xb')][_0x3a6295['queue']][_0x50bb('0x29')]||_0x50bb('0x2a'):_0x50bb('0x2a'),'variables':this[_0x50bb('0xc')][_0x3a6295['uniqueid']],'motionChannel':_0x50bb('0x2b')};}_['merge'](this[_0x50bb('0x9')][_0x3a6295[_0x50bb('0x21')]][_0x3a6295['destuniqueid']],_[_0x50bb('0x2c')](_0x3a6295,[_0x50bb('0x2d'),'privilege']));logger[_0x50bb('0x24')](_0x50bb('0x2e'),_0x3a6295[_0x50bb('0x21')],util[_0x50bb('0x25')](this[_0x50bb('0x9')][_0x3a6295[_0x50bb('0x21')]][_0x3a6295[_0x50bb('0x23')]],{'showHidden':![],'depth':null}));ami['emit'](_0x50bb('0x2f'),this[_0x50bb('0x9')][_0x3a6295[_0x50bb('0x21')]][_0x3a6295[_0x50bb('0x23')]]);var _0x24900a={'id':this[_0x50bb('0x30')][_0x3a6295['interface']]['id'],'calleridnum':this[_0x50bb('0x9')][_0x3a6295[_0x50bb('0x21')]][_0x3a6295[_0x50bb('0x23')]]['calleridnum'],'queue':this[_0x50bb('0x9')][_0x3a6295[_0x50bb('0x21')]][_0x3a6295[_0x50bb('0x23')]]['queue'],'variables':this[_0x50bb('0x9')][_0x3a6295[_0x50bb('0x21')]][_0x3a6295[_0x50bb('0x23')]][_0x50bb('0xc')]};logger[_0x50bb('0x24')]('[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:',_0x3a6295[_0x50bb('0x21')],util['inspect'](_0x24900a,{'showHidden':![],'depth':null}));this[_0x50bb('0x1d')](util[_0x50bb('0x26')](_0x50bb('0x31'),_0x3a6295[_0x50bb('0x22')]),_0x50bb('0x32'),_0x24900a);}}catch(_0x1cf639){logger['error'](_0x50bb('0x33'),_0x3a6295[_0x50bb('0x21')],util[_0x50bb('0x25')](_0x1cf639,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x50bb('0x1c')]['syncAgentConnect']=function(_0x191a47){try{if(this[_0x50bb('0x1e')](_0x191a47)){if(this['channels'][_0x191a47[_0x50bb('0x21')]]){logger[_0x50bb('0x24')](_0x50bb('0x34'),_0x191a47[_0x50bb('0x21')],util['inspect'](_0x191a47,{'showHidden':![],'depth':null}));for(var _0x14d925 in this[_0x50bb('0x9')][_0x191a47['uniqueid']]){if(this[_0x50bb('0x9')][_0x191a47[_0x50bb('0x21')]][_0x50bb('0x35')](_0x14d925)){if(_0x191a47[_0x50bb('0x23')]===_0x14d925){logger['info'](_0x50bb('0x36'),_0x191a47[_0x50bb('0x21')],_0x191a47[_0x50bb('0x22')],_0x191a47[_0x50bb('0x23')]);this['channels'][_0x191a47[_0x50bb('0x21')]][_0x14d925][_0x50bb('0x37')]=moment()[_0x50bb('0x26')](_0x50bb('0x27'));this['channels'][_0x191a47[_0x50bb('0x21')]][_0x14d925][_0x50bb('0x38')]=_0x191a47['connectedlinename'];this[_0x50bb('0x9')][_0x191a47[_0x50bb('0x21')]][_0x14d925]['connectedlinenum']=_0x191a47[_0x50bb('0x39')];this[_0x50bb('0x9')][_0x191a47[_0x50bb('0x21')]][_0x14d925][_0x50bb('0x3a')]=_0x191a47[_0x50bb('0x3a')];this[_0x50bb('0x9')][_0x191a47[_0x50bb('0x21')]][_0x14d925][_0x50bb('0x3b')]=_0x191a47[_0x50bb('0x3b')];this[_0x50bb('0x9')][_0x191a47[_0x50bb('0x21')]][_0x14d925][_0x50bb('0x3c')]=_0x191a47[_0x50bb('0x3c')];this[_0x50bb('0x9')][_0x191a47[_0x50bb('0x21')]][_0x14d925][_0x50bb('0x3d')]=_0x50bb('0x3e');if(this[_0x50bb('0xa')][this[_0x50bb('0x9')][_0x191a47[_0x50bb('0x21')]][_0x14d925][_0x50bb('0x21')]]){var _0x34641a=this[_0x50bb('0xa')][this[_0x50bb('0x9')][_0x191a47[_0x50bb('0x21')]][_0x14d925][_0x50bb('0x21')]]['routealias'];this[_0x50bb('0x9')][_0x191a47[_0x50bb('0x21')]][_0x14d925][_0x50bb('0x3f')]=_0x34641a;_0x191a47[_0x50bb('0x3f')]=_0x34641a;}_[_0x50bb('0x40')](this['agents'][_0x191a47[_0x50bb('0x41')]],_['pick'](_0x191a47,[_0x50bb('0x28'),_0x50bb('0x42'),'routealias']));logger[_0x50bb('0x24')](_0x50bb('0x43'),_0x191a47['uniqueid'],util[_0x50bb('0x25')](this['channels'][_0x191a47[_0x50bb('0x21')]][_0x191a47[_0x50bb('0x23')]],{'showHidden':![],'depth':null}));ami[_0x50bb('0x1d')](_0x50bb('0x44'),this['channels'][_0x191a47[_0x50bb('0x21')]][_0x191a47['destuniqueid']]);logger[_0x50bb('0x24')](_0x50bb('0x45'),_0x191a47[_0x50bb('0x21')],util[_0x50bb('0x25')](this['channels'][_0x191a47[_0x50bb('0x21')]][_0x191a47[_0x50bb('0x23')]],{'showHidden':![],'depth':null}));this['emit'](util['format'](_0x50bb('0x31'),_0x191a47[_0x50bb('0x22')]),_0x50bb('0x46'),this[_0x50bb('0x9')][_0x191a47[_0x50bb('0x21')]][_0x191a47[_0x50bb('0x23')]]);}else if(!this[_0x50bb('0x9')][_0x191a47[_0x50bb('0x21')]][_0x14d925][_0x50bb('0x10')]&&!this[_0x50bb('0x9')][_0x191a47[_0x50bb('0x21')]][_0x14d925][_0x50bb('0x14')]){logger[_0x50bb('0x47')](_0x50bb('0x48'),_0x191a47[_0x50bb('0x21')],this[_0x50bb('0x9')][_0x191a47['uniqueid']][_0x14d925][_0x50bb('0x22')],_0x14d925);this[_0x50bb('0x9')][_0x191a47['uniqueid']][_0x14d925][_0x50bb('0x10')]=!![];this[_0x50bb('0x9')][_0x191a47['uniqueid']][_0x14d925][_0x50bb('0x49')]=moment()[_0x50bb('0x26')](_0x50bb('0x27'));this[_0x50bb('0x9')][_0x191a47['uniqueid']][_0x14d925][_0x50bb('0x4a')]=_0x191a47[_0x50bb('0x23')];this['channels'][_0x191a47[_0x50bb('0x21')]][_0x14d925]['answeredelsewheremembername']=_0x191a47[_0x50bb('0x22')];this[_0x50bb('0x9')][_0x191a47['uniqueid']][_0x14d925]['lastevent']='answered_elsewhere';this[_0x50bb('0x9')][_0x191a47[_0x50bb('0x21')]][_0x14d925]['reason']=_0x50bb('0x4b');logger[_0x50bb('0x24')](_0x50bb('0x4c'),_0x191a47[_0x50bb('0x21')],util['inspect'](this[_0x50bb('0x9')][_0x191a47[_0x50bb('0x21')]][_0x14d925],{'showHidden':![],'depth':null}));ami[_0x50bb('0x1d')](_0x50bb('0x4d'),this[_0x50bb('0x9')][_0x191a47[_0x50bb('0x21')]][_0x14d925]);}}}}}}catch(_0x5adb11){logger['error'](_0x50bb('0x4e'),_0x191a47[_0x50bb('0x21')],util[_0x50bb('0x25')](_0x5adb11,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x50bb('0x1c')][_0x50bb('0x11')]=function(_0x43b9b1){try{if(this[_0x50bb('0x1e')](_0x43b9b1)){logger[_0x50bb('0x24')]('[%s][voiceAgentReport][agentringnoanswer]\x20event:',_0x43b9b1[_0x50bb('0x21')],util[_0x50bb('0x25')](_0x43b9b1,{'showHidden':![],'depth':null}));if(this['channels'][_0x43b9b1[_0x50bb('0x21')]]&&this[_0x50bb('0x9')][_0x43b9b1[_0x50bb('0x21')]][_0x43b9b1[_0x50bb('0x23')]]){logger[_0x50bb('0x47')]('[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected',_0x43b9b1[_0x50bb('0x21')],_0x43b9b1[_0x50bb('0x22')],_0x43b9b1[_0x50bb('0x23')]);this[_0x50bb('0x9')][_0x43b9b1['uniqueid']][_0x43b9b1[_0x50bb('0x23')]][_0x50bb('0x10')]=!![];this[_0x50bb('0x9')][_0x43b9b1[_0x50bb('0x21')]][_0x43b9b1['destuniqueid']]['agentringnoanswerAt']=moment()['format'](_0x50bb('0x27'));this[_0x50bb('0x9')][_0x43b9b1[_0x50bb('0x21')]][_0x43b9b1[_0x50bb('0x23')]][_0x50bb('0x3d')]='rejected';this[_0x50bb('0x9')][_0x43b9b1[_0x50bb('0x21')]][_0x43b9b1[_0x50bb('0x23')]][_0x50bb('0x4f')]=_0x50bb('0x50');logger[_0x50bb('0x24')](_0x50bb('0x51'),_0x43b9b1[_0x50bb('0x21')],util[_0x50bb('0x25')](this['channels'][_0x43b9b1[_0x50bb('0x21')]][_0x43b9b1[_0x50bb('0x23')]],{'showHidden':![],'depth':null}));ami[_0x50bb('0x1d')]('custom:agentringnoanswer',this[_0x50bb('0x9')][_0x43b9b1[_0x50bb('0x21')]][_0x43b9b1[_0x50bb('0x23')]]);}}}catch(_0x567f3a){logger['error'](_0x50bb('0x52'),_0x43b9b1[_0x50bb('0x21')],util[_0x50bb('0x25')](_0x567f3a,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype']['syncQueueCallerAbandon']=function(_0x56731b){try{if(this[_0x50bb('0x1e')](_0x56731b)){logger[_0x50bb('0x24')]('[%s][voiceAgentReport][queuecallerabandon]\x20event:',_0x56731b[_0x50bb('0x21')],util[_0x50bb('0x25')](_0x56731b,{'showHidden':![],'depth':null}));if(this[_0x50bb('0x9')][_0x56731b[_0x50bb('0x21')]]){for(var _0x40fcda in this[_0x50bb('0x9')][_0x56731b['uniqueid']]){if(this[_0x50bb('0x9')][_0x56731b['uniqueid']][_0x50bb('0x35')](_0x40fcda)&&!this['channels'][_0x56731b['uniqueid']][_0x40fcda][_0x50bb('0x10')]&&!this[_0x50bb('0x9')][_0x56731b['uniqueid']][_0x40fcda]['agentcomplete']){logger[_0x50bb('0x47')](_0x50bb('0x53'),_0x56731b[_0x50bb('0x21')],this[_0x50bb('0x9')][_0x56731b['uniqueid']][_0x40fcda][_0x50bb('0x22')],_0x40fcda);this['channels'][_0x56731b[_0x50bb('0x21')]][_0x40fcda][_0x50bb('0x10')]=!![];this[_0x50bb('0x9')][_0x56731b['uniqueid']][_0x40fcda][_0x50bb('0x49')]=moment()[_0x50bb('0x26')](_0x50bb('0x27'));this[_0x50bb('0x9')][_0x56731b['uniqueid']][_0x40fcda]['lastevent']=_0x50bb('0x54');this[_0x50bb('0x9')][_0x56731b[_0x50bb('0x21')]][_0x40fcda][_0x50bb('0x4f')]='abandoned';logger['debug'](_0x50bb('0x55'),_0x56731b[_0x50bb('0x21')],util['inspect'](this['channels'][_0x56731b['uniqueid']][_0x40fcda],{'showHidden':![],'depth':null}));ami['emit']('custom:agentqueuecallerabandon',this[_0x50bb('0x9')][_0x56731b[_0x50bb('0x21')]][_0x40fcda]);}}}}}catch(_0x303e90){logger['error'](_0x50bb('0x56'),_0x56731b['uniqueid'],util[_0x50bb('0x25')](_0x303e90,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x50bb('0x1c')]['syncAgentComplete']=function(_0x33186a){try{if(this[_0x50bb('0x1e')](_0x33186a)){logger[_0x50bb('0x24')](_0x50bb('0x57'),_0x33186a[_0x50bb('0x21')],util['inspect'](_0x33186a,{'showHidden':![],'depth':null}));if(this[_0x50bb('0x9')][_0x33186a[_0x50bb('0x21')]]){for(var _0x561348 in this[_0x50bb('0x9')][_0x33186a[_0x50bb('0x21')]]){if(this[_0x50bb('0x9')][_0x33186a[_0x50bb('0x21')]][_0x50bb('0x35')](_0x561348)){if(this[_0x50bb('0x9')][_0x33186a[_0x50bb('0x21')]][_0x561348][_0x50bb('0x37')]&&!this[_0x50bb('0x9')][_0x33186a[_0x50bb('0x21')]][_0x561348][_0x50bb('0x14')]){logger['info'](_0x50bb('0x58'),_0x33186a['uniqueid'],this['channels'][_0x33186a['uniqueid']][_0x561348]['membername'],_0x561348);this[_0x50bb('0x9')][_0x33186a['uniqueid']][_0x561348][_0x50bb('0x14')]=!![];this[_0x50bb('0x9')][_0x33186a[_0x50bb('0x21')]][_0x561348][_0x50bb('0x59')]=moment()[_0x50bb('0x26')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x50bb('0x9')][_0x33186a['uniqueid']][_0x561348][_0x50bb('0x3d')]='complete';this['channels'][_0x33186a[_0x50bb('0x21')]][_0x561348][_0x50bb('0x4f')]=_0x33186a[_0x50bb('0x4f')]==_0x50bb('0x5a')?_0x50bb('0x5b'):_0x33186a[_0x50bb('0x4f')];this['channels'][_0x33186a['uniqueid']][_0x561348][_0x50bb('0x5c')]=_0x33186a[_0x50bb('0x5c')];if(this[_0x50bb('0xb')][_0x33186a['queue']]&&this[_0x50bb('0xb')][_0x33186a[_0x50bb('0x28')]][_0x50bb('0x5d')]){this['channels'][_0x33186a[_0x50bb('0x21')]][_0x561348][_0x50bb('0x5e')]=this['voiceQueues'][_0x33186a['queue']]['acwTimeout'];this[_0x50bb('0x9')][_0x33186a[_0x50bb('0x21')]][_0x561348][_0x50bb('0x5f')]=!![];}this[_0x50bb('0x30')][_0x33186a[_0x50bb('0x41')]]=_['omit'](this['agents'][_0x33186a[_0x50bb('0x41')]],[_0x50bb('0x28'),_0x50bb('0x42')]);logger[_0x50bb('0x24')](_0x50bb('0x60'),_0x33186a[_0x50bb('0x21')],util[_0x50bb('0x25')](this['channels'][_0x33186a['uniqueid']][_0x561348],{'showHidden':![],'depth':null}));ami['emit'](_0x50bb('0x61'),this[_0x50bb('0x9')][_0x33186a[_0x50bb('0x21')]][_0x561348]);logger[_0x50bb('0x24')]('[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:',_0x33186a[_0x50bb('0x21')],util[_0x50bb('0x25')]({'id':this[_0x50bb('0x30')][_0x33186a['interface']]['id'],'destaccountcode':_0x33186a[_0x50bb('0x62')]},{'showHidden':![],'depth':null}));this[_0x50bb('0x1d')](util[_0x50bb('0x26')]('user:%s',_0x33186a[_0x50bb('0x22')]),'user:agentcomplete',{'id':this['agents'][_0x33186a[_0x50bb('0x41')]]['id'],'destaccountcode':_0x33186a[_0x50bb('0x62')]});}}}}}}catch(_0x4fff4d){logger[_0x50bb('0x63')](_0x50bb('0x64'),_0x33186a['uniqueid'],util[_0x50bb('0x25')](_0x4fff4d,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x50bb('0x16')]=function(_0x466be2){try{if(this[_0x50bb('0x1e')](_0x466be2)){logger[_0x50bb('0x24')]('[%s][voiceAgentReport][varset]\x20event:',_0x466be2['uniqueid'],util[_0x50bb('0x25')](_0x466be2,{'showHidden':![],'depth':null}));this['addVariable'](_0x466be2[_0x50bb('0x21')],_[_0x50bb('0x65')](_0x466be2[_0x50bb('0x66')])[0x0],_0x466be2[_0x50bb('0x67')]);if(this[_0x50bb('0x9')][_0x466be2[_0x50bb('0x21')]]){for(var _0x4faf3d in this[_0x50bb('0x9')][_0x466be2[_0x50bb('0x21')]]){if(this['channels'][_0x466be2['uniqueid']][_0x50bb('0x35')](_0x4faf3d)){logger[_0x50bb('0x47')](_0x50bb('0x68'),_0x466be2[_0x50bb('0x21')],_0x4faf3d,_[_0x50bb('0x65')](_0x466be2[_0x50bb('0x66')])[0x0],_0x466be2['value']);if(_[_0x50bb('0x1f')](this[_0x50bb('0x9')][_0x466be2[_0x50bb('0x21')]][_0x4faf3d]['variables'])){this[_0x50bb('0x9')][_0x466be2[_0x50bb('0x21')]][_0x4faf3d]['variables']={};}this[_0x50bb('0x9')][_0x466be2['uniqueid']][_0x4faf3d][_0x50bb('0xc')]=this['variables'][_0x466be2[_0x50bb('0x21')]];}}}}}catch(_0x3a21f4){logger['error'](_0x50bb('0x69'),_0x466be2[_0x50bb('0x21')],util[_0x50bb('0x25')](_0x3a21f4,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x50bb('0x1c')][_0x50bb('0x6a')]=function(_0x189b59,_0x2e19d1,_0x3bdbbe){var _0x587d96=['rtpaudioqos',_0x50bb('0x6b'),_0x50bb('0x6c'),'rtpaudioqosjitterbridged',_0x50bb('0x6d'),_0x50bb('0x6e'),_0x50bb('0x6f'),'rtpaudioqosrttbridged','sipcallid','sipuri',_0x50bb('0x70'),_0x50bb('0x71'),'membercalls','memberdynamic',_0x50bb('0x72'),_0x50bb('0x73'),_0x50bb('0x22'),_0x50bb('0x74'),_0x50bb('0x75')];if(!_[_0x50bb('0x76')](_0x2e19d1)&&!_['includes'](_0x587d96,_0x2e19d1)){if(_[_0x50bb('0x1f')](this[_0x50bb('0xc')][_0x189b59])){this[_0x50bb('0xc')][_0x189b59]={};}this['variables'][_0x189b59][_0x2e19d1]=_0x3bdbbe;}};VoiceAgentReport['prototype']['syncHangup']=function(_0x426de4){try{if(this[_0x50bb('0x1e')](_0x426de4)){logger['debug'](_0x50bb('0x77'),_0x426de4[_0x50bb('0x21')],util[_0x50bb('0x25')](_0x426de4,{'showHidden':![],'depth':null}));if(this['channels'][_0x426de4[_0x50bb('0x21')]]){for(var _0x41446a in this[_0x50bb('0x9')][_0x426de4[_0x50bb('0x21')]]){if(this[_0x50bb('0x9')][_0x426de4[_0x50bb('0x21')]][_0x50bb('0x35')](_0x41446a)){if(this[_0x50bb('0x9')][_0x426de4['uniqueid']][_0x41446a][_0x50bb('0x4f')]==_0x50bb('0x5a')&&this[_0x50bb('0x9')][_0x426de4[_0x50bb('0x21')]][_0x41446a][_0x50bb('0x14')]){logger['info'](_0x50bb('0x78'),_0x426de4[_0x50bb('0x21')],_0x41446a);this[_0x50bb('0x9')][_0x426de4[_0x50bb('0x21')]][_0x41446a][_0x50bb('0x59')]=moment()[_0x50bb('0x26')](_0x50bb('0x27'));}}}logger[_0x50bb('0x24')](_0x50bb('0x79'),_0x426de4['uniqueid'],util[_0x50bb('0x25')](_[_0x50bb('0x7a')](this['channels'][_0x426de4[_0x50bb('0x21')]]),{'showHidden':![],'depth':null}));ami['emit']('custom:voiceAgentReport',_[_0x50bb('0x7a')](this[_0x50bb('0x9')][_0x426de4['uniqueid']]));delete this[_0x50bb('0x9')][_0x426de4['uniqueid']];}if(this[_0x50bb('0xc')][_0x426de4[_0x50bb('0x21')]]){delete this[_0x50bb('0xc')][_0x426de4[_0x50bb('0x21')]];}}}catch(_0x44a27a){logger['error'](_0x50bb('0x7b'),_0x426de4[_0x50bb('0x21')],util[_0x50bb('0x25')](_0x44a27a,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x50bb('0x1c')]['syncAttendedTransfer']=function(_0x3d5c4f){try{if(this[_0x50bb('0x1e')](_0x3d5c4f)){logger[_0x50bb('0x24')](_0x50bb('0x7c'),_0x3d5c4f['uniqueid'],util[_0x50bb('0x25')](_0x3d5c4f,{'showHidden':![],'depth':null}));if(this['channels'][_0x3d5c4f['transfereeuniqueid']]){for(var _0x5cd8f0 in this[_0x50bb('0x9')][_0x3d5c4f['transfereeuniqueid']]){if(this[_0x50bb('0x9')][_0x3d5c4f[_0x50bb('0x7d')]][_0x50bb('0x35')](_0x5cd8f0)){if(_0x3d5c4f[_0x50bb('0x7e')]===_0x5cd8f0){logger[_0x50bb('0x47')](_0x50bb('0x7f'),_0x3d5c4f[_0x50bb('0x21')],this[_0x50bb('0x9')][_0x3d5c4f['transfereeuniqueid']][_0x5cd8f0]['membername'],_0x5cd8f0);var _0x3e954f=moment();this[_0x50bb('0x9')][_0x3d5c4f[_0x50bb('0x7d')]][_0x5cd8f0][_0x50bb('0x14')]=!![];this[_0x50bb('0x9')][_0x3d5c4f[_0x50bb('0x7d')]][_0x5cd8f0][_0x50bb('0x59')]=moment()[_0x50bb('0x26')]('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x3d5c4f[_0x50bb('0x7d')]][_0x5cd8f0][_0x50bb('0x3d')]=_0x50bb('0x80');this[_0x50bb('0x9')][_0x3d5c4f['transfereeuniqueid']][_0x5cd8f0][_0x50bb('0x4f')]=_0x50bb('0x5a');this[_0x50bb('0x9')][_0x3d5c4f[_0x50bb('0x7d')]][_0x5cd8f0]['talktime']=_0x3e954f[_0x50bb('0x81')](this[_0x50bb('0x9')][_0x3d5c4f['transfereeuniqueid']][_0x5cd8f0][_0x50bb('0x37')],_0x50bb('0x82'));}}}}if(this[_0x50bb('0x9')][_0x3d5c4f[_0x50bb('0x83')]]){var _0x174786=this[_0x50bb('0x9')][_0x3d5c4f[_0x50bb('0x83')]];this[_0x50bb('0x9')][_0x3d5c4f[_0x50bb('0x83')]]=this[_0x50bb('0x9')][_0x3d5c4f[_0x50bb('0x7d')]];this['channels'][_0x3d5c4f[_0x50bb('0x7d')]]=_0x174786;}}}catch(_0x53b947){logger[_0x50bb('0x63')]('[%s][voiceAgentReport][attendedtransfer]',_0x3d5c4f[_0x50bb('0x21')],util[_0x50bb('0x25')](_0x53b947,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x50bb('0x1b')]=function(_0x213235){try{if(this[_0x50bb('0x1e')](_0x213235)){logger[_0x50bb('0x24')](_0x50bb('0x84'),_0x213235[_0x50bb('0x21')],util[_0x50bb('0x25')](_0x213235,{'showHidden':![],'depth':null}));if(this[_0x50bb('0x9')][_0x213235['transfereeuniqueid']]){for(var _0x5e942c in this[_0x50bb('0x9')][_0x213235['transfereeuniqueid']]){if(this[_0x50bb('0x9')][_0x213235[_0x50bb('0x7d')]][_0x50bb('0x35')](_0x5e942c)){if(_0x213235['transfereruniqueid']===_0x5e942c){logger[_0x50bb('0x47')](_0x50bb('0x85'),_0x213235[_0x50bb('0x21')],this['channels'][_0x213235[_0x50bb('0x7d')]][_0x5e942c][_0x50bb('0x22')],_0x5e942c);var _0x4545cf=moment();this['channels'][_0x213235[_0x50bb('0x7d')]][_0x5e942c][_0x50bb('0x14')]=!![];this['channels'][_0x213235[_0x50bb('0x7d')]][_0x5e942c][_0x50bb('0x59')]=_0x4545cf;this[_0x50bb('0x9')][_0x213235[_0x50bb('0x7d')]][_0x5e942c]['lastevent']=_0x50bb('0x80');this['channels'][_0x213235[_0x50bb('0x7d')]][_0x5e942c]['reason']=_0x50bb('0x5a');this[_0x50bb('0x9')][_0x213235['transfereeuniqueid']][_0x5e942c][_0x50bb('0x5c')]=_0x4545cf[_0x50bb('0x81')](this['channels'][_0x213235[_0x50bb('0x7d')]][_0x5e942c]['agentconnectAt'],_0x50bb('0x82'));}}}}}}catch(_0x3b61d3){logger['error'](_0x50bb('0x86'),_0x213235['uniqueid'],util[_0x50bb('0x25')](_0x3b61d3,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x50bb('0x1c')][_0x50bb('0x87')]=function(_0x33d07e){var _0x31d30c='';try{if(this[_0x50bb('0x1e')](_0x33d07e)){logger[_0x50bb('0x24')]('[%s][voiceAgentReport][musiconholdstart]\x20event:',_0x33d07e[_0x50bb('0x21')],util[_0x50bb('0x25')](_0x33d07e,{'showHidden':![],'depth':null}));if(_0x33d07e[_0x50bb('0x88')]){_0x31d30c=_0x33d07e[_0x50bb('0x88')][_0x50bb('0x89')](0x0,_0x33d07e[_0x50bb('0x88')][_0x50bb('0x8a')]('-'));if(this[_0x50bb('0x30')][_0x31d30c]){logger[_0x50bb('0x47')](_0x50bb('0x8b'),_0x33d07e['uniqueid'],_0x31d30c);this[_0x50bb('0x30')][_0x31d30c][_0x50bb('0x8c')]=!![];}}}}catch(_0x3b575a){logger[_0x50bb('0x63')]('[%s][voiceAgentReport][musiconholdstart]',_0x33d07e[_0x50bb('0x21')],util[_0x50bb('0x25')](_0x3b575a,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x50bb('0x1c')][_0x50bb('0x19')]=function(_0xe4cfa1){var _0x25dace='';try{if(this[_0x50bb('0x1e')](_0xe4cfa1)){logger[_0x50bb('0x24')]('[%s][voiceAgentReport][musiconholdstop]\x20event:',_0xe4cfa1[_0x50bb('0x21')],util['inspect'](_0xe4cfa1,{'showHidden':![],'depth':null}));if(_0xe4cfa1[_0x50bb('0x88')]){_0x25dace=_0xe4cfa1[_0x50bb('0x88')][_0x50bb('0x89')](0x0,_0xe4cfa1['channel'][_0x50bb('0x8a')]('-'));if(this[_0x50bb('0x30')][_0x25dace]){logger['info'](_0x50bb('0x8d'),_0xe4cfa1['uniqueid'],_0x25dace);this[_0x50bb('0x30')][_0x25dace][_0x50bb('0x8c')]=![];}}}}catch(_0xab05e9){logger[_0x50bb('0x63')](_0x50bb('0x8e'),_0xe4cfa1[_0x50bb('0x21')],util[_0x50bb('0x25')](_0xab05e9,{'showHidden':![],'depth':null}));}};module[_0x50bb('0x8f')]=VoiceAgentReport;
\ No newline at end of file
index e95c3ed..ed6d4ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6044=['blindtransfer','syncBlindTransfer','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','info','actionCoreShowChannels','[voiceCallReport][coreshowchannels]','inspect','prototype','emit','isNotNull','uniqueid','calleridname','calleridnum','debug','[%s][voiceCallReport][newcallerid]\x20event:','isUndefined','merge','pick','keys','from-sip','channel','split','exten','xcally-motion-preview','destconnectedlinenum','user:%s','user:agentconnect','accountcode','connectedlinenum','error','[%s][voiceCallReport][newchannel]\x20event:','linkedid','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','starttime','YYYY-MM-DD\x20HH:mm:ss','disposition','toNumber','channelstate','context','name','[%s][voiceCallReport][newchannel]','[%s][voiceCallReport][newexten]\x20event:','OutgoingSpoolFailed','application','toLowerCase','applicationdata','appdata','CDR(routeAlias)','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','duration','subtract','seconds','format','startsWith','cdr(','match','type','[%s][voiceCallReport][newexten]','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','[%s][voiceCallReport][newstate]\x20event:','answered','answertime','destinationchannel','UserId','holdtime','diff','connectedlinename','membername','routealias','[%s][voiceCallReport][newstate]','syncMixMonitorFilename','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','monitor','endsWith','.WAV','find','monitors','isNil','push','rec','[%s][voiceCallReport][mixMonitorFilename]','[%s][voiceCallReport][varset]\x20event:','variable','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','value','xmd-phone','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s','callerid','xmd-cdrtype','xmd-queue','[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s','xmd-originatecalleridnum','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','originatecalleridnum','xmd-destination','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','destination','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','xmcs-queue','sipcallid','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','sipcalluniqueid','mixmonitor_filename','parse','sipcalllinkedid','[%s][voiceCallReport][varset]','[%s][voiceCallReport][hangup]\x20reason:%s','cause-txt','billableseconds','omit','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','length','resolve','then','undefined','isEmpty','getSettings','Action','StopMixMonitor','catch','finally','webbar:stopmonitors','event','BlindTransfer','outbound','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','custom:voiceCallReport','origtransferercalleridnum','transfertargetcalleridnum','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','transfercalleridnum','transferconnectedlinenum','secondtransfereruniqueid','transferType','ATTENDED','transfertargetuniqueid','origtransfereruniqueid','some','routeid','origtransfererlinkedid','[%s][voiceCallReport][attendedtransfer]','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','extension','BLIND','transfererchannel','transfereruniqueid','[%s][voiceCallReport][blindtransfer]','mohstarttime','[%s][voiceCallReport][musiconholdstart]','[%s][voiceCallReport][musiconholdstop]\x20event:','mohtime','milliseconds','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','exports','lodash','moment','path','ami','../ami','../rpc/setting','set','queue','agi','dial','voicemail','NO\x20ANSWER','FAILED','BUSY','redis','defaults','localhost','socket.io-emitter','channels','agents','blindTransfers','coreshowchannel','bind','newexten','syncNewExten','newchannel','syncNewChannel','varset','syncVarSet','syncHangup','newcallerid','syncNewCallerId','attendedtransfer','syncAttendedTransfer'];(function(_0x3b0b4a,_0x333e63){var _0x134109=function(_0x3efaf7){while(--_0x3efaf7){_0x3b0b4a['push'](_0x3b0b4a['shift']());}};_0x134109(++_0x333e63);}(_0x6044,0x162));var _0x4604=function(_0x43c629,_0x5a7499){_0x43c629=_0x43c629-0x0;var _0x211a65=_0x6044[_0x43c629];return _0x211a65;};'use strict';var _=require(_0x4604('0x0'));var moment=require(_0x4604('0x1'));var util=require('util');var path=require(_0x4604('0x2'));var Redis=require('ioredis');var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0x4604('0x3'));var ami=require(_0x4604('0x4'));var Channel=require('../model/channel');var RpcSetting=require(_0x4604('0x5'));var applications=[_0x4604('0x6'),_0x4604('0x7'),_0x4604('0x8'),_0x4604('0x9'),'playback',_0x4604('0xa')];var dispositions=[_0x4604('0xb'),_0x4604('0xc'),_0x4604('0xc'),_0x4604('0xb'),_0x4604('0xb'),'NO\x20ANSWER','ANSWERED',_0x4604('0xd'),'FAILED',_0x4604('0xc'),_0x4604('0xc')];config[_0x4604('0xe')]=_[_0x4604('0xf')](config[_0x4604('0xe')],{'host':_0x4604('0x10'),'port':0x18eb});var io=require(_0x4604('0x11'))(new Redis(config[_0x4604('0xe')]));function VoiceCallReport(_0x37108e){this[_0x4604('0x12')]=_0x37108e[_0x4604('0x12')];this[_0x4604('0x13')]=_0x37108e[_0x4604('0x13')];this[_0x4604('0x14')]={};ami['on'](_0x4604('0x15'),this['syncNewExten'][_0x4604('0x16')](this));ami['on'](_0x4604('0x17'),this[_0x4604('0x18')][_0x4604('0x16')](this));ami['on'](_0x4604('0x19'),this[_0x4604('0x1a')][_0x4604('0x16')](this));ami['on']('newstate',this['syncNewState'][_0x4604('0x16')](this));ami['on'](_0x4604('0x1b'),this[_0x4604('0x1c')][_0x4604('0x16')](this));ami['on']('hangup',this[_0x4604('0x1d')][_0x4604('0x16')](this));ami['on'](_0x4604('0x1e'),this[_0x4604('0x1f')][_0x4604('0x16')](this));ami['on'](_0x4604('0x20'),this[_0x4604('0x21')][_0x4604('0x16')](this));ami['on'](_0x4604('0x22'),this[_0x4604('0x23')][_0x4604('0x16')](this));ami['on'](_0x4604('0x24'),this[_0x4604('0x25')][_0x4604('0x16')](this));ami['on'](_0x4604('0x26'),this[_0x4604('0x27')][_0x4604('0x16')](this));try{logger[_0x4604('0x28')]('[voiceCallReport][coreshowchannels]\x20started');ami[_0x4604('0x29')]();}catch(_0x26c6e1){logger['error'](_0x4604('0x2a'),util[_0x4604('0x2b')](_0x26c6e1,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0x4604('0x2c')]['isNotNull']=function(_0x8e60){return _0x8e60!==null&&!_['isUndefined'](_0x8e60);};VoiceCallReport[_0x4604('0x2c')][_0x4604('0x2d')]=function(_0x1b4d9a,_0xbc2067,_0x11e5a0){io['to'](_0x1b4d9a)[_0x4604('0x2d')](_0xbc2067,_0x11e5a0);};VoiceCallReport[_0x4604('0x2c')][_0x4604('0x1f')]=function(_0x4dc1dc){try{if(this[_0x4604('0x2e')](_0x4dc1dc)){logger[_0x4604('0x28')]('[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s',_0x4dc1dc[_0x4604('0x2f')],_0x4dc1dc[_0x4604('0x30')],_0x4dc1dc[_0x4604('0x31')]);logger[_0x4604('0x32')](_0x4604('0x33'),_0x4dc1dc[_0x4604('0x2f')],util[_0x4604('0x2b')](_0x4dc1dc,{'showHidden':![],'depth':null}));if(_0x4dc1dc[_0x4604('0x2f')]===_0x4dc1dc['linkedid']){if(!_[_0x4604('0x34')](this[_0x4604('0x12')][_0x4dc1dc[_0x4604('0x2f')]])){_[_0x4604('0x35')](this[_0x4604('0x12')][_0x4dc1dc[_0x4604('0x2f')]],_[_0x4604('0x36')](_0x4dc1dc,_[_0x4604('0x37')](this[_0x4604('0x12')][_0x4dc1dc[_0x4604('0x2f')]])));}}if(_0x4dc1dc['context']===_0x4604('0x38')){if(this['agents'][_0x4dc1dc[_0x4604('0x39')][_0x4604('0x3a')]('-')[0x0]]){if(_0x4dc1dc[_0x4604('0x3b')]==_0x4604('0x3c')){this[_0x4604('0x13')][_0x4dc1dc[_0x4604('0x39')][_0x4604('0x3a')]('-')[0x0]][_0x4604('0x3d')]=_0x4dc1dc['connectedlinenum'];this[_0x4604('0x2d')](util['format'](_0x4604('0x3e'),this[_0x4604('0x13')][_0x4dc1dc[_0x4604('0x39')][_0x4604('0x3a')]('-')[0x0]]['name']),_0x4604('0x3f'),{'destaccountcode':this[_0x4604('0x13')][_0x4dc1dc[_0x4604('0x39')][_0x4604('0x3a')]('-')[0x0]][_0x4604('0x40')],'destconnectedlinenum':_0x4dc1dc[_0x4604('0x41')]});}}}}}catch(_0x27246e){logger[_0x4604('0x42')]('[%s][voiceCallReport][newcallerid]',_0x4dc1dc[_0x4604('0x2f')],util[_0x4604('0x2b')](_0x27246e,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype']['syncNewChannel']=function(_0x23374d){try{if(this[_0x4604('0x2e')](_0x23374d)){logger[_0x4604('0x32')](_0x4604('0x43'),_0x23374d[_0x4604('0x2f')],util[_0x4604('0x2b')](_0x23374d,{'showHidden':![],'depth':null}));if(this[_0x4604('0x12')][_0x23374d['uniqueid']])return;if(_0x23374d[_0x4604('0x39')]==='OutgoingSpoolFailed')return;if(_0x23374d[_0x4604('0x2f')]!==_0x23374d['linkedid']&&!this[_0x4604('0x14')][_0x23374d[_0x4604('0x44')]])return;logger[_0x4604('0x28')](_0x4604('0x45'),_0x23374d[_0x4604('0x2f')],_0x23374d['context'],_0x23374d['exten']);this['channels'][_0x23374d[_0x4604('0x2f')]]=new Channel();this[_0x4604('0x12')][_0x23374d['uniqueid']][_0x4604('0x46')]=moment()['format'](_0x4604('0x47'));this['channels'][_0x23374d['uniqueid']][_0x4604('0x48')]=dispositions[_[_0x4604('0x49')](_0x23374d[_0x4604('0x4a')])];_[_0x4604('0x35')](this[_0x4604('0x12')][_0x23374d[_0x4604('0x2f')]],_['pick'](_0x23374d,_[_0x4604('0x37')](this['channels'][_0x23374d[_0x4604('0x2f')]])));if(_0x23374d[_0x4604('0x4b')]===_0x4604('0x38')){if(this[_0x4604('0x13')][_0x23374d[_0x4604('0x39')][_0x4604('0x3a')]('-')[0x0]]){if(_[_0x4604('0x34')](this[_0x4604('0x13')][_0x23374d[_0x4604('0x39')][_0x4604('0x3a')]('-')[0x0]][_0x4604('0x3d')])){this[_0x4604('0x13')][_0x23374d['channel'][_0x4604('0x3a')]('-')[0x0]]['destconnectedlinenum']=_0x23374d[_0x4604('0x3b')];logger[_0x4604('0x32')]('[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:',_0x23374d[_0x4604('0x2f')],util[_0x4604('0x2b')]({'id':this[_0x4604('0x13')][_0x23374d[_0x4604('0x39')][_0x4604('0x3a')]('-')[0x0]]['id'],'destaccountcode':this[_0x4604('0x13')][_0x23374d[_0x4604('0x39')][_0x4604('0x3a')]('-')[0x0]][_0x4604('0x40')],'destconnectedlinenum':_0x23374d['exten']},{'showHidden':![],'depth':null}));this['emit'](util['format'](_0x4604('0x3e'),this[_0x4604('0x13')][_0x23374d[_0x4604('0x39')][_0x4604('0x3a')]('-')[0x0]][_0x4604('0x4c')]),_0x4604('0x3f'),{'id':this[_0x4604('0x13')][_0x23374d[_0x4604('0x39')][_0x4604('0x3a')]('-')[0x0]]['id'],'destaccountcode':this[_0x4604('0x13')][_0x23374d[_0x4604('0x39')][_0x4604('0x3a')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x23374d['exten']});}}}}}catch(_0x1df1a6){logger[_0x4604('0x42')](_0x4604('0x4d'),_0x23374d[_0x4604('0x2f')],util[_0x4604('0x2b')](_0x1df1a6,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x4604('0x2c')][_0x4604('0x18')]=function(_0x41cf9a){try{if(this[_0x4604('0x2e')](_0x41cf9a)){logger[_0x4604('0x32')](_0x4604('0x4e'),_0x41cf9a['uniqueid'],util[_0x4604('0x2b')](_0x41cf9a,{'showHidden':![],'depth':null}));if(_0x41cf9a[_0x4604('0x39')]===_0x4604('0x4f')||_0x41cf9a[_0x4604('0x3b')]==='h')return;if(_0x41cf9a[_0x4604('0x2f')]===_0x41cf9a[_0x4604('0x44')]||this[_0x4604('0x14')][_0x41cf9a[_0x4604('0x44')]]){_0x41cf9a[_0x4604('0x50')]=_0x41cf9a['application'][_0x4604('0x51')]();_0x41cf9a[_0x4604('0x52')]=_0x41cf9a[_0x4604('0x53')]||_0x41cf9a[_0x4604('0x52')];if(_0x41cf9a[_0x4604('0x53')]&&!_0x41cf9a[_0x4604('0x53')]['startsWith'](_0x4604('0x54'))&&_0x41cf9a[_0x4604('0x50')]!==_0x4604('0x7')){_0x41cf9a['applicationdata']=_0x41cf9a[_0x4604('0x52')][_0x4604('0x51')]();}logger[_0x4604('0x28')](_0x4604('0x55'),_0x41cf9a[_0x4604('0x2f')],_0x41cf9a[_0x4604('0x50')],_0x41cf9a[_0x4604('0x52')]);if(_[_0x4604('0x34')](this['channels'][_0x41cf9a[_0x4604('0x2f')]])){this['channels'][_0x41cf9a[_0x4604('0x2f')]]=new Channel();this[_0x4604('0x12')][_0x41cf9a[_0x4604('0x2f')]][_0x4604('0x46')]=_0x41cf9a[_0x4604('0x56')]?moment()[_0x4604('0x57')](moment[_0x4604('0x56')](_0x41cf9a[_0x4604('0x56')])[_0x4604('0x58')](),'seconds')[_0x4604('0x59')](_0x4604('0x47')):moment()[_0x4604('0x59')](_0x4604('0x47'));this[_0x4604('0x12')][_0x41cf9a[_0x4604('0x2f')]]['disposition']=_0x4604('0xb');}_[_0x4604('0x35')](this[_0x4604('0x12')][_0x41cf9a['uniqueid']],_[_0x4604('0x36')](_0x41cf9a,_['keys'](this[_0x4604('0x12')][_0x41cf9a[_0x4604('0x2f')]])));if(_['includes'](applications,_0x41cf9a['application'])){this[_0x4604('0x12')][_0x41cf9a['uniqueid']]['lastapplication']=_0x41cf9a[_0x4604('0x50')];this['channels'][_0x41cf9a['uniqueid']]['lastdata']=_0x41cf9a[_0x4604('0x52')];if(_0x41cf9a[_0x4604('0x50')]===_0x4604('0x6')&&_[_0x4604('0x5a')](_0x41cf9a[_0x4604('0x52')][_0x4604('0x51')](),_0x4604('0x5b'))){var _0x25a176=_0x41cf9a[_0x4604('0x52')][_0x4604('0x3a')]('=');var _0x195540=_0x25a176[0x0][_0x4604('0x51')]()[_0x4604('0x5c')](/cdr\((.*)\)/);if(_0x195540){if(_0x195540[0x1]===_0x4604('0x5d')&&!_['isNil'](this[_0x4604('0x12')][_0x41cf9a[_0x4604('0x2f')]][_0x195540[0x1]]))return;this[_0x4604('0x12')][_0x41cf9a[_0x4604('0x2f')]][_0x195540[0x1]]=_0x25a176[0x1];}}else if(_0x41cf9a[_0x4604('0x50')]===_0x4604('0x7')){this['channels'][_0x41cf9a[_0x4604('0x2f')]]['queue']=_0x41cf9a['applicationdata'][_0x4604('0x3a')](',')[0x0];}}}}}catch(_0x54f0f5){logger['error'](_0x4604('0x5e'),_0x41cf9a['uniqueid'],util[_0x4604('0x2b')](_0x54f0f5,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x4604('0x2c')]['syncNewState']=function(_0xaa5298){try{if(this[_0x4604('0x2e')](_0xaa5298)){logger[_0x4604('0x28')](_0x4604('0x5f'),_0xaa5298[_0x4604('0x2f')],_0xaa5298[_0x4604('0x44')],_0xaa5298[_0x4604('0x30')],_0xaa5298[_0x4604('0x31')]);logger[_0x4604('0x32')](_0x4604('0x60'),_0xaa5298[_0x4604('0x2f')],util[_0x4604('0x2b')](_0xaa5298,{'showHidden':![],'depth':null}));if(_0xaa5298[_0x4604('0x4a')]!=='6')return;if(_0xaa5298[_0x4604('0x2f')]!==_0xaa5298[_0x4604('0x44')]){var _0x1f0448=moment();if(this[_0x4604('0x12')][_0xaa5298[_0x4604('0x44')]]){if(!this['channels'][_0xaa5298['linkedid']][_0x4604('0x61')]){this[_0x4604('0x12')][_0xaa5298[_0x4604('0x44')]]['answered']=!![];this[_0x4604('0x12')][_0xaa5298[_0x4604('0x44')]][_0x4604('0x62')]=_0x1f0448[_0x4604('0x59')](_0x4604('0x47'));if(this['channels'][_0xaa5298[_0x4604('0x44')]][_0x4604('0x46')]){this[_0x4604('0x12')][_0xaa5298['linkedid']]['holdtime']=_0x1f0448['diff'](this[_0x4604('0x12')][_0xaa5298[_0x4604('0x44')]]['starttime'],_0x4604('0x58'));}}this[_0x4604('0x12')][_0xaa5298[_0x4604('0x44')]][_0x4604('0x44')]=_0xaa5298[_0x4604('0x2f')];if(_0xaa5298[_0x4604('0x31')]!=='xcally-motion-preview'){this[_0x4604('0x12')][_0xaa5298['linkedid']][_0x4604('0x41')]=_0xaa5298[_0x4604('0x31')];}this[_0x4604('0x12')][_0xaa5298[_0x4604('0x44')]]['connectedlinename']=_0xaa5298[_0x4604('0x30')];this[_0x4604('0x12')][_0xaa5298['linkedid']][_0x4604('0x63')]=_0xaa5298[_0x4604('0x39')];this[_0x4604('0x12')][_0xaa5298[_0x4604('0x44')]][_0x4604('0x48')]=dispositions[_[_0x4604('0x49')](_0xaa5298['channelstate'])];if(this['agents'][_0xaa5298['channel'][_0x4604('0x3a')]('-')[0x0]]){this[_0x4604('0x12')][_0xaa5298[_0x4604('0x44')]][_0x4604('0x64')]=this['agents'][_0xaa5298[_0x4604('0x39')][_0x4604('0x3a')]('-')[0x0]]['id'];this['channels'][_0xaa5298[_0x4604('0x44')]]['membername']=this[_0x4604('0x13')][_0xaa5298[_0x4604('0x39')][_0x4604('0x3a')]('-')[0x0]][_0x4604('0x4c')];}}if(this[_0x4604('0x12')][_0xaa5298[_0x4604('0x2f')]]){if(!this['channels'][_0xaa5298[_0x4604('0x2f')]]['answered']){this['channels'][_0xaa5298['uniqueid']][_0x4604('0x61')]=!![];this[_0x4604('0x12')][_0xaa5298[_0x4604('0x2f')]]['answertime']=_0x1f0448[_0x4604('0x59')](_0x4604('0x47'));if(this[_0x4604('0x12')][_0xaa5298[_0x4604('0x2f')]][_0x4604('0x46')]){this[_0x4604('0x12')][_0xaa5298[_0x4604('0x2f')]][_0x4604('0x65')]=_0x1f0448[_0x4604('0x66')](this[_0x4604('0x12')][_0xaa5298[_0x4604('0x2f')]][_0x4604('0x46')],_0x4604('0x58'));}}if(_0xaa5298['calleridnum']!==_0x4604('0x3c')){this[_0x4604('0x12')][_0xaa5298[_0x4604('0x2f')]][_0x4604('0x41')]=_0xaa5298[_0x4604('0x31')];}this[_0x4604('0x12')][_0xaa5298['uniqueid']][_0x4604('0x67')]=_0xaa5298[_0x4604('0x30')];this[_0x4604('0x12')][_0xaa5298['uniqueid']]['destinationchannel']=_0xaa5298[_0x4604('0x39')];this[_0x4604('0x12')][_0xaa5298[_0x4604('0x2f')]][_0x4604('0x48')]=dispositions[_['toNumber'](_0xaa5298[_0x4604('0x4a')])];}}else{if(this[_0x4604('0x12')][_0xaa5298[_0x4604('0x2f')]]){if(this['agents'][_0xaa5298[_0x4604('0x39')][_0x4604('0x3a')]('-')[0x0]]){this[_0x4604('0x12')][_0xaa5298[_0x4604('0x2f')]][_0x4604('0x64')]=this['agents'][_0xaa5298[_0x4604('0x39')][_0x4604('0x3a')]('-')[0x0]]['id'];this[_0x4604('0x12')][_0xaa5298[_0x4604('0x2f')]][_0x4604('0x68')]=this[_0x4604('0x13')][_0xaa5298['channel']['split']('-')[0x0]][_0x4604('0x4c')];}}}if(_0xaa5298['context']===_0x4604('0x38')){if(this[_0x4604('0x13')][_0xaa5298[_0x4604('0x39')][_0x4604('0x3a')]('-')[0x0]]){this['agents'][_0xaa5298[_0x4604('0x39')]['split']('-')[0x0]][_0x4604('0x3d')]=_0xaa5298['exten'];var _0x24a94e,_0x46cd9e;if(this[_0x4604('0x12')][_0xaa5298[_0x4604('0x2f')]]){_0x24a94e=this['channels'][_0xaa5298[_0x4604('0x2f')]][_0x4604('0x69')];_0x46cd9e=this['channels'][_0xaa5298[_0x4604('0x2f')]]['queue'];}else if(this['channels'][_0xaa5298['linkedid']]){_0x24a94e=this['channels'][_0xaa5298[_0x4604('0x44')]][_0x4604('0x69')];_0x46cd9e=this[_0x4604('0x12')][_0xaa5298[_0x4604('0x44')]][_0x4604('0x7')];}this[_0x4604('0x13')][_0xaa5298[_0x4604('0x39')][_0x4604('0x3a')]('-')[0x0]][_0x4604('0x7')]=_0x46cd9e;this[_0x4604('0x13')][_0xaa5298[_0x4604('0x39')][_0x4604('0x3a')]('-')[0x0]][_0x4604('0x69')]=_0x24a94e;logger['debug']('[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:',_0xaa5298[_0x4604('0x2f')],util[_0x4604('0x2b')]({'id':this[_0x4604('0x13')][_0xaa5298[_0x4604('0x39')][_0x4604('0x3a')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0xaa5298[_0x4604('0x39')]['split']('-')[0x0]]['accountcode'],'destconnectedlinenum':_0xaa5298[_0x4604('0x3b')],'routealias':_0x24a94e,'queue':_0x46cd9e||undefined},{'showHidden':![],'depth':null}));this[_0x4604('0x2d')](util['format']('user:%s',this[_0x4604('0x13')][_0xaa5298['channel'][_0x4604('0x3a')]('-')[0x0]][_0x4604('0x4c')]),_0x4604('0x3f'),{'id':this[_0x4604('0x13')][_0xaa5298[_0x4604('0x39')]['split']('-')[0x0]]['id'],'agentconnected':!![],'destaccountcode':this[_0x4604('0x13')][_0xaa5298[_0x4604('0x39')]['split']('-')[0x0]][_0x4604('0x40')],'destconnectedlinenum':_0xaa5298[_0x4604('0x3b')],'routealias':_0x24a94e,'queue':_0x46cd9e||undefined});}}}}catch(_0x4bc7b4){logger[_0x4604('0x42')](_0x4604('0x6a'),_0xaa5298[_0x4604('0x2f')],util[_0x4604('0x2b')](_0x4bc7b4,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x4604('0x2c')][_0x4604('0x6b')]=function(_0x1fbfbc,_0xd8e995){try{if(this[_0x4604('0x12')][_0x1fbfbc]){logger[_0x4604('0x28')](_0x4604('0x6c'),_0x1fbfbc,_0xd8e995);this[_0x4604('0x12')][_0x1fbfbc][_0x4604('0x6d')]=!![];if(_[_0x4604('0x6e')](_0xd8e995,'.wav49')){_0xd8e995=_0xd8e995['replace']('.wav49',_0x4604('0x6f'));}this['channels'][_0x1fbfbc]['monitorFilename']=_0xd8e995;var _0x4d4533=_[_0x4604('0x70')](this[_0x4604('0x12')][_0x1fbfbc][_0x4604('0x71')],{'filename':_0xd8e995});if(_[_0x4604('0x72')](_0x4d4533)){this[_0x4604('0x12')][_0x1fbfbc][_0x4604('0x71')][_0x4604('0x73')]({'filename':_0xd8e995,'createdAt':moment()[_0x4604('0x59')](_0x4604('0x47')),'mixmonitorid':'','status':_0x4604('0x74')});}}}catch(_0x19390f){logger[_0x4604('0x42')](_0x4604('0x75'),_0x1fbfbc,util['inspect'](_0x19390f,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x4604('0x2c')]['syncVarSet']=function(_0x711ef5){try{if(this['isNotNull'](_0x711ef5)){logger['debug'](_0x4604('0x76'),_0x711ef5[_0x4604('0x2f')],util[_0x4604('0x2b')](_0x711ef5,{'showHidden':![],'depth':null}));if(this['channels'][_0x711ef5['uniqueid']]&&_0x711ef5[_0x4604('0x39')]!='OutgoingSpoolFailed'){if(this[_0x4604('0x2e')](_0x711ef5[_0x4604('0x77')])){if(this[_0x4604('0x2e')](_0x711ef5[_0x4604('0x77')]['mixmonitor_filename'])){logger[_0x4604('0x28')](_0x4604('0x78'),_0x711ef5[_0x4604('0x2f')],_0x711ef5['value']);this['syncMixMonitorFilename'](_0x711ef5[_0x4604('0x2f')],_0x711ef5[_0x4604('0x79')]);}else if(this['isNotNull'](_0x711ef5[_0x4604('0x77')][_0x4604('0x7a')])){logger[_0x4604('0x28')](_0x4604('0x7b'),_0x711ef5[_0x4604('0x2f')],_0x711ef5['value']);this[_0x4604('0x12')][_0x711ef5[_0x4604('0x2f')]][_0x4604('0x31')]=_0x711ef5[_0x4604('0x79')];}else if(this[_0x4604('0x2e')](_0x711ef5[_0x4604('0x77')]['xmd-callerid'])){logger[_0x4604('0x28')](_0x4604('0x7c'),_0x711ef5[_0x4604('0x2f')],_0x711ef5[_0x4604('0x79')]);this[_0x4604('0x12')][_0x711ef5[_0x4604('0x2f')]][_0x4604('0x7d')]=_0x711ef5[_0x4604('0x79')];}else if(this[_0x4604('0x2e')](_0x711ef5[_0x4604('0x77')][_0x4604('0x7e')])){logger[_0x4604('0x28')]('[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s',_0x711ef5[_0x4604('0x2f')],_0x711ef5[_0x4604('0x79')]);this[_0x4604('0x12')][_0x711ef5['uniqueid']][_0x4604('0x5d')]=_0x711ef5[_0x4604('0x79')];}else if(this[_0x4604('0x2e')](_0x711ef5[_0x4604('0x77')][_0x4604('0x7f')])){logger['info'](_0x4604('0x80'),_0x711ef5[_0x4604('0x2f')],_0x711ef5[_0x4604('0x79')][_0x4604('0x3a')](',')[0x0]);this['channels'][_0x711ef5['uniqueid']]['queue']=_0x711ef5[_0x4604('0x79')]['split'](',')[0x0];}else if(this['isNotNull'](_0x711ef5[_0x4604('0x77')][_0x4604('0x81')])){logger[_0x4604('0x28')](_0x4604('0x82'),_0x711ef5[_0x4604('0x2f')],_0x711ef5[_0x4604('0x79')]);this[_0x4604('0x12')][_0x711ef5[_0x4604('0x2f')]][_0x4604('0x83')]=_0x711ef5[_0x4604('0x79')];}else if(this[_0x4604('0x2e')](_0x711ef5[_0x4604('0x77')][_0x4604('0x84')])){logger[_0x4604('0x28')](_0x4604('0x85'),_0x711ef5[_0x4604('0x2f')],_0x711ef5['value']);this[_0x4604('0x12')][_0x711ef5[_0x4604('0x2f')]][_0x4604('0x86')]=_0x711ef5['value'];}else if(this[_0x4604('0x2e')](_0x711ef5[_0x4604('0x77')]['xmd-callerid-preview'])){logger['info'](_0x4604('0x87'),_0x711ef5[_0x4604('0x2f')],_0x711ef5[_0x4604('0x79')]);this[_0x4604('0x12')][_0x711ef5['uniqueid']]['calleridpreview']=_0x711ef5[_0x4604('0x79')];}else if(this[_0x4604('0x2e')](_0x711ef5['variable'][_0x4604('0x88')])){logger['info']('[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s',_0x711ef5[_0x4604('0x2f')],_0x711ef5[_0x4604('0x79')]);this['channels'][_0x711ef5[_0x4604('0x2f')]][_0x4604('0x7')]=_0x711ef5[_0x4604('0x79')];}else if(this['isNotNull'](_0x711ef5[_0x4604('0x77')][_0x4604('0x89')])){logger[_0x4604('0x28')](_0x4604('0x8a'),_0x711ef5[_0x4604('0x2f')],_0x711ef5['value']);this[_0x4604('0x12')][_0x711ef5[_0x4604('0x2f')]][_0x4604('0x8b')]=_0x711ef5[_0x4604('0x79')];}}}else if(this[_0x4604('0x2e')](_0x711ef5['variable'][_0x4604('0x8c')])){if(_0x711ef5['value']){var _0x31b445=path[_0x4604('0x8d')](_0x711ef5['value'])[_0x4604('0x4c')];logger[_0x4604('0x28')](_0x4604('0x78'),_0x31b445,_0x711ef5[_0x4604('0x79')]);this['syncMixMonitorFilename'](_0x31b445,_0x711ef5[_0x4604('0x79')]);}}else if(this[_0x4604('0x12')][_0x711ef5[_0x4604('0x44')]]){if(this[_0x4604('0x2e')](_0x711ef5[_0x4604('0x77')])){if(this[_0x4604('0x2e')](_0x711ef5[_0x4604('0x77')][_0x4604('0x89')])){logger[_0x4604('0x28')]('[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s',_0x711ef5[_0x4604('0x44')],_0x711ef5[_0x4604('0x79')]);this[_0x4604('0x12')][_0x711ef5['linkedid']][_0x4604('0x8e')]=_0x711ef5[_0x4604('0x79')];}}}}}catch(_0x25a47f){logger['error'](_0x4604('0x8f'),_0x711ef5[_0x4604('0x2f')],util[_0x4604('0x2b')](_0x25a47f,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x4604('0x2c')][_0x4604('0x1d')]=function(_0xe85777){try{if(this[_0x4604('0x2e')](_0xe85777)){logger['debug']('[%s][voiceCallReport][hangup]\x20event:',_0xe85777[_0x4604('0x2f')],util[_0x4604('0x2b')](_0xe85777,{'showHidden':![],'depth':null}));if(this['blindTransfers'][_0xe85777[_0x4604('0x44')]]){if(this[_0x4604('0x12')][this[_0x4604('0x14')][_0xe85777['linkedid']][_0x4604('0x44')]]){this[_0x4604('0x12')][this[_0x4604('0x14')][_0xe85777[_0x4604('0x44')]][_0x4604('0x44')]][_0x4604('0x2f')]=_0xe85777['uniqueid'];this['channels'][this['blindTransfers'][_0xe85777['linkedid']][_0x4604('0x44')]][_0x4604('0x61')]=this[_0x4604('0x12')][_0xe85777[_0x4604('0x2f')]][_0x4604('0x61')];this[_0x4604('0x12')][this[_0x4604('0x14')][_0xe85777[_0x4604('0x44')]][_0x4604('0x44')]][_0x4604('0x62')]=this[_0x4604('0x12')][_0xe85777['uniqueid']][_0x4604('0x62')];this[_0x4604('0x12')][this[_0x4604('0x14')][_0xe85777[_0x4604('0x44')]][_0x4604('0x44')]][_0x4604('0x63')]=this[_0x4604('0x12')][this[_0x4604('0x14')][_0xe85777[_0x4604('0x44')]]['linkedid']][_0x4604('0x39')];this[_0x4604('0x12')][this[_0x4604('0x14')][_0xe85777[_0x4604('0x44')]][_0x4604('0x44')]]['disposition']=this[_0x4604('0x12')][_0xe85777[_0x4604('0x2f')]]['disposition'];this['channels'][_0xe85777[_0x4604('0x2f')]]=this[_0x4604('0x12')][this['blindTransfers'][_0xe85777[_0x4604('0x44')]][_0x4604('0x44')]];delete this[_0x4604('0x12')][this[_0x4604('0x14')][_0xe85777[_0x4604('0x44')]][_0x4604('0x44')]];}else if(this['channels'][this[_0x4604('0x14')][_0xe85777['linkedid']]['uniqueid']]){this['channels'][this[_0x4604('0x14')][_0xe85777['linkedid']][_0x4604('0x2f')]][_0x4604('0x2f')]=[this[_0x4604('0x12')][this['blindTransfers'][_0xe85777['linkedid']][_0x4604('0x2f')]][_0x4604('0x44')],this[_0x4604('0x12')][this[_0x4604('0x14')][_0xe85777[_0x4604('0x44')]][_0x4604('0x2f')]]['linkedid']=this[_0x4604('0x12')][this[_0x4604('0x14')][_0xe85777[_0x4604('0x44')]]['uniqueid']]['uniqueid']][0x0];this['channels'][this[_0x4604('0x14')][_0xe85777[_0x4604('0x44')]]['uniqueid']][_0x4604('0x61')]=this[_0x4604('0x12')][_0xe85777[_0x4604('0x2f')]][_0x4604('0x61')];this['channels'][this['blindTransfers'][_0xe85777[_0x4604('0x44')]][_0x4604('0x2f')]][_0x4604('0x62')]=this[_0x4604('0x12')][_0xe85777[_0x4604('0x2f')]][_0x4604('0x62')];this[_0x4604('0x12')][this['blindTransfers'][_0xe85777[_0x4604('0x44')]][_0x4604('0x2f')]]['destinationchannel']=this[_0x4604('0x12')][this[_0x4604('0x14')][_0xe85777[_0x4604('0x44')]][_0x4604('0x2f')]]['channel'];this[_0x4604('0x12')][this[_0x4604('0x14')][_0xe85777[_0x4604('0x44')]][_0x4604('0x2f')]][_0x4604('0x48')]=this[_0x4604('0x12')][_0xe85777['uniqueid']]['disposition'];this[_0x4604('0x12')][_0xe85777[_0x4604('0x2f')]]=this[_0x4604('0x12')][this['blindTransfers'][_0xe85777[_0x4604('0x44')]][_0x4604('0x2f')]];delete this[_0x4604('0x12')][this[_0x4604('0x14')][_0xe85777[_0x4604('0x44')]][_0x4604('0x2f')]];}}if(this[_0x4604('0x12')][_0xe85777[_0x4604('0x2f')]]){logger['info'](_0x4604('0x90'),_0xe85777[_0x4604('0x2f')],_0xe85777[_0x4604('0x91')]);var _0x2ae659=moment();this[_0x4604('0x12')][_0xe85777['uniqueid']]['endtime']=_0x2ae659[_0x4604('0x59')](_0x4604('0x47'));this['channels'][_0xe85777['uniqueid']][_0x4604('0x56')]=_0x2ae659[_0x4604('0x66')](this['channels'][_0xe85777[_0x4604('0x2f')]][_0x4604('0x46')],_0x4604('0x58'));if(this[_0x4604('0x12')][_0xe85777[_0x4604('0x2f')]]['answered']){this['channels'][_0xe85777['uniqueid']][_0x4604('0x92')]=_0x2ae659[_0x4604('0x66')](this[_0x4604('0x12')][_0xe85777[_0x4604('0x2f')]][_0x4604('0x62')],_0x4604('0x58'));this['channels'][_0xe85777[_0x4604('0x2f')]]['holdtime']=this['channels'][_0xe85777[_0x4604('0x2f')]][_0x4604('0x56')]-this[_0x4604('0x12')][_0xe85777[_0x4604('0x2f')]][_0x4604('0x92')];}if(_0xe85777[_0x4604('0x4b')]===_0x4604('0x38')){if(this[_0x4604('0x13')][_0xe85777[_0x4604('0x39')][_0x4604('0x3a')]('-')[0x0]]){this['agents'][_0xe85777[_0x4604('0x39')][_0x4604('0x3a')]('-')[0x0]]=_[_0x4604('0x93')](this[_0x4604('0x13')][_0xe85777['channel'][_0x4604('0x3a')]('-')[0x0]],['destconnectedlinenum']);logger[_0x4604('0x32')](_0x4604('0x94'),_0xe85777[_0x4604('0x2f')],util[_0x4604('0x2b')]({'id':this[_0x4604('0x13')][_0xe85777[_0x4604('0x39')]['split']('-')[0x0]]['id'],'destaccountcode':this[_0x4604('0x13')][_0xe85777[_0x4604('0x39')][_0x4604('0x3a')]('-')[0x0]]['accountcode']},{'showHidden':![],'depth':null}));this[_0x4604('0x2d')](util[_0x4604('0x59')](_0x4604('0x3e'),this[_0x4604('0x13')][_0xe85777[_0x4604('0x39')]['split']('-')[0x0]][_0x4604('0x4c')]),_0x4604('0x95'),{'id':this[_0x4604('0x13')][_0xe85777[_0x4604('0x39')][_0x4604('0x3a')]('-')[0x0]]['id'],'destaccountcode':this[_0x4604('0x13')][_0xe85777['channel'][_0x4604('0x3a')]('-')[0x0]][_0x4604('0x40')]});for(var _0x168b99=0x0;_0x168b99<Object['keys'](this[_0x4604('0x13')])[_0x4604('0x96')];_0x168b99++){var _0x5b51b9=Object[_0x4604('0x37')](this[_0x4604('0x13')])[_0x168b99];var _0x328a05=this[_0x4604('0x13')][_0x5b51b9];if(_0x328a05[_0x4604('0x40')]===Number(_0xe85777['connectedlinenum'])){this['emit'](util[_0x4604('0x59')](_0x4604('0x3e'),_0x328a05['name']),_0x4604('0x95'),{'id':_0x328a05['id'],'destaccountcode':_0x328a05[_0x4604('0x40')],'transfer':this['channels'][_0xe85777[_0x4604('0x2f')]]['transferType']});break;}}}}var _0x3cb4a4=this;Promise[_0x4604('0x97')]()[_0x4604('0x98')](function(){var _0x29203f=_0x3cb4a4['channels'][_0xe85777[_0x4604('0x2f')]];if(typeof _0x29203f['transferType']===_0x4604('0x99'))return;if(_[_0x4604('0x9a')](_0x29203f[_0x4604('0x71')]))return;return RpcSetting[_0x4604('0x9b')]()[_0x4604('0x98')](function(_0x3b4a7b){if(!_0x3b4a7b['stopRecordingOnTransfer'])return;return Promise[_0x4604('0x97')]()[_0x4604('0x98')](function(){return ami[_0x4604('0x9c')]({'action':_0x4604('0x9d'),'channel':_0x29203f['channel']})[_0x4604('0x9e')](function(){});})[_0x4604('0x98')](function(){return ami[_0x4604('0x9c')]({'action':_0x4604('0x9d'),'channel':_0x29203f[_0x4604('0x63')]})[_0x4604('0x9e')](function(){})[_0x4604('0x9f')](function(){var _0x38451c=_0x3cb4a4[_0x4604('0x13')][_0x29203f[_0x4604('0x63')][_0x4604('0x3a')]('-')[0x0]];if(!_0x38451c)return;io['emit'](_0x4604('0xa0'),{'agentId':_0x38451c['id'],'uniqueid':_0x29203f[_0x4604('0x2f')]});});});});})['then'](function(){if(_0xe85777[_0x4604('0xa1')]===_0x4604('0xa2')){_0x3cb4a4[_0x4604('0x14')][_0xe85777[_0x4604('0x2f')]]=_0xe85777;}else{if(_0x3cb4a4[_0x4604('0x12')][_0xe85777[_0x4604('0x2f')]][_0x4604('0x5d')]===_0x4604('0xa3')&&_0x3cb4a4[_0x4604('0x14')][_0xe85777[_0x4604('0x2f')]]){_0x3cb4a4[_0x4604('0x12')][_0xe85777[_0x4604('0x2f')]]['uniqueid']=[_0x3cb4a4[_0x4604('0x12')][_0xe85777[_0x4604('0x2f')]][_0x4604('0x44')],_0x3cb4a4[_0x4604('0x12')][_0xe85777[_0x4604('0x2f')]]['linkedid']=_0x3cb4a4['channels'][_0xe85777[_0x4604('0x2f')]][_0x4604('0x2f')]][0x0];delete _0x3cb4a4['blindTransfers'][_0xe85777['uniqueid']];}}logger[_0x4604('0x32')](_0x4604('0xa4'),_0xe85777[_0x4604('0x2f')],util['inspect'](_0x3cb4a4['channels'][_0xe85777[_0x4604('0x2f')]],{'showHidden':![],'depth':null}));ami[_0x4604('0x2d')](_0x4604('0xa5'),_0x3cb4a4[_0x4604('0x12')][_0xe85777[_0x4604('0x2f')]]);delete _0x3cb4a4[_0x4604('0x12')][_0xe85777[_0x4604('0x2f')]];});}}}catch(_0x45e58a){logger['error']('[%s][voiceCallReport][hangup]',_0xe85777[_0x4604('0x2f')],util[_0x4604('0x2b')](_0x45e58a,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x4604('0x2c')]['syncAttendedTransfer']=function(_0x59774d){try{if(this[_0x4604('0x2e')](_0x59774d)){logger['info']('[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0x59774d[_0x4604('0x2f')],_0x59774d[_0x4604('0xa6')],_0x59774d[_0x4604('0xa7')]);logger['debug'](_0x4604('0xa8'),_0x59774d['uniqueid'],util[_0x4604('0x2b')](_0x59774d,{'showHidden':![],'depth':null}));var _0x388eb0;if(this['channels'][_0x59774d['transfereeuniqueid']]){this['channels'][_0x59774d[_0x4604('0xa9')]][_0x4604('0xaa')]=_0x59774d[_0x4604('0xa6')];this['channels'][_0x59774d['transfereeuniqueid']][_0x4604('0xab')]=_0x59774d[_0x4604('0xa7')];if(this[_0x4604('0x12')][_0x59774d['secondtransfereruniqueid']]){_0x388eb0=this['channels'][_0x59774d['secondtransfereruniqueid']];this['channels'][_0x59774d[_0x4604('0xac')]]=this[_0x4604('0x12')][_0x59774d[_0x4604('0xa9')]];this[_0x4604('0x12')][_0x59774d[_0x4604('0xa9')]]=_0x388eb0;}this[_0x4604('0x12')][_0x59774d[_0x4604('0xac')]][_0x4604('0xad')]=_0x4604('0xae');}else if(this[_0x4604('0x12')][_0x59774d[_0x4604('0xaf')]]){this[_0x4604('0x12')][_0x59774d[_0x4604('0xaf')]][_0x4604('0xaa')]=_0x59774d[_0x4604('0xa6')];this['channels'][_0x59774d['transfertargetuniqueid']][_0x4604('0xab')]=_0x59774d['transfertargetcalleridnum'];if(this[_0x4604('0x12')][_0x59774d[_0x4604('0xb0')]]){_0x388eb0=this['channels'][_0x59774d[_0x4604('0xb0')]];this[_0x4604('0x12')][_0x59774d['origtransfereruniqueid']]=this[_0x4604('0x12')][_0x59774d[_0x4604('0xaf')]];this[_0x4604('0x12')][_0x59774d['transfertargetuniqueid']]=_0x388eb0;}this[_0x4604('0x12')][_0x59774d[_0x4604('0xaf')]][_0x4604('0xad')]=_0x4604('0xae');}if((this[_0x4604('0x12')][_0x59774d[_0x4604('0xb0')]]||this[_0x4604('0x12')][_0x59774d['origtransfererlinkedid']])&&this[_0x4604('0x12')][_0x59774d['secondtransfereruniqueid']]){var _0x3eb037=_[_0x4604('0xb1')]([this[_0x4604('0x12')][_0x59774d[_0x4604('0xb0')]],this[_0x4604('0x12')][_0x59774d['origtransfererlinkedid']],this[_0x4604('0x12')][_0x59774d[_0x4604('0xac')]]],function(_0x43f785){return _0x43f785&&_0x43f785['type']===_0x4604('0xa3')&&_0x43f785[_0x4604('0xb2')];});if(_0x3eb037){if(this[_0x4604('0x12')][_0x59774d[_0x4604('0xb0')]])this[_0x4604('0x12')][_0x59774d['origtransfereruniqueid']][_0x4604('0xad')]='ATTENDED';if(this[_0x4604('0x12')][_0x59774d[_0x4604('0xb3')]])this[_0x4604('0x12')][_0x59774d['origtransfererlinkedid']][_0x4604('0xad')]=_0x4604('0xae');this[_0x4604('0x12')][_0x59774d[_0x4604('0xac')]][_0x4604('0xad')]=_0x4604('0xae');}}}}catch(_0xb74a10){logger[_0x4604('0x42')](_0x4604('0xb4'),_0x59774d[_0x4604('0x2f')],util[_0x4604('0x2b')](_0xb74a10,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x4604('0x2c')][_0x4604('0x23')]=function(_0xafc6cc){try{if(this[_0x4604('0x2e')](_0xafc6cc)){logger[_0x4604('0x28')](_0x4604('0xb5'),_0xafc6cc[_0x4604('0x2f')],_0xafc6cc['transfereecalleridnum'],_0xafc6cc[_0x4604('0xb6')]);logger[_0x4604('0x32')]('[%s][voiceCallReport][blindtransfer]\x20event:',_0xafc6cc[_0x4604('0x2f')],util[_0x4604('0x2b')](_0xafc6cc,{'showHidden':![],'depth':null}));if(this['channels'][_0xafc6cc[_0x4604('0xa9')]]){this[_0x4604('0x12')][_0xafc6cc['transfereeuniqueid']][_0x4604('0xaa')]=_0xafc6cc['transfereecalleridnum'];this[_0x4604('0x12')][_0xafc6cc[_0x4604('0xa9')]][_0x4604('0xab')]=_0xafc6cc['extension'];this[_0x4604('0x12')][_0xafc6cc[_0x4604('0xa9')]][_0x4604('0xad')]=_0x4604('0xb7');this[_0x4604('0x1d')]({'event':_0x4604('0xa2'),'uniqueid':_0xafc6cc[_0x4604('0xa9')],'linkedid':_0xafc6cc['transfereruniqueid'],'context':_0xafc6cc['context'],'channel':_0xafc6cc[_0x4604('0xb8')]});}else{this[_0x4604('0x12')][_0xafc6cc['transfereruniqueid']][_0x4604('0xad')]=_0x4604('0xb7');this[_0x4604('0x1d')]({'event':_0x4604('0xa2'),'uniqueid':_0xafc6cc[_0x4604('0xb9')],'linkedid':_0xafc6cc[_0x4604('0xa9')],'context':_0xafc6cc[_0x4604('0x4b')],'channel':_0xafc6cc[_0x4604('0xb8')]});}}}catch(_0x599c6e){logger['error'](_0x4604('0xba'),_0xafc6cc['uniqueid'],util[_0x4604('0x2b')](_0x599c6e,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x4604('0x2c')][_0x4604('0x25')]=function(_0x80a58){try{if(this[_0x4604('0x2e')](_0x80a58)){logger[_0x4604('0x32')]('[%s][voiceCallReport][musiconholdstart]\x20event:',_0x80a58[_0x4604('0x2f')],util['inspect'](_0x80a58,{'showHidden':![],'depth':null}));if(this[_0x4604('0x12')][_0x80a58[_0x4604('0x2f')]]){if(!_[_0x4604('0x72')](this[_0x4604('0x12')][_0x80a58['uniqueid']][_0x4604('0x62')])){this[_0x4604('0x12')][_0x80a58[_0x4604('0x2f')]][_0x4604('0xbb')]=moment()[_0x4604('0x59')](_0x4604('0x47'));logger[_0x4604('0x28')]('[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s',_0x80a58[_0x4604('0x2f')],this[_0x4604('0x12')][_0x80a58[_0x4604('0x2f')]][_0x4604('0xbb')]);}}}}catch(_0x36c399){logger['error'](_0x4604('0xbc'),_0x80a58['uniqueid'],util['inspect'](_0x36c399,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x4604('0x27')]=function(_0x53e44d){try{if(this[_0x4604('0x2e')](_0x53e44d)){logger[_0x4604('0x32')](_0x4604('0xbd'),_0x53e44d[_0x4604('0x2f')],util[_0x4604('0x2b')](_0x53e44d,{'showHidden':![],'depth':null}));if(this[_0x4604('0x12')][_0x53e44d[_0x4604('0x2f')]]){if(!_[_0x4604('0x72')](this[_0x4604('0x12')][_0x53e44d[_0x4604('0x2f')]][_0x4604('0xbb')])){this[_0x4604('0x12')][_0x53e44d[_0x4604('0x2f')]][_0x4604('0xbe')]+=moment()[_0x4604('0xbf')](0x0)[_0x4604('0x66')](this['channels'][_0x53e44d[_0x4604('0x2f')]][_0x4604('0xbb')],_0x4604('0x58'));logger['info'](_0x4604('0xc0'),_0x53e44d['uniqueid'],this[_0x4604('0x12')][_0x53e44d[_0x4604('0x2f')]][_0x4604('0xbe')]);delete this[_0x4604('0x12')][_0x53e44d['uniqueid']]['mohstarttime'];}}}}catch(_0x36346e){logger[_0x4604('0x42')]('[%s][voiceCallReport][musiconholdstop]',_0x53e44d[_0x4604('0x2f')],util['inspect'](_0x36346e,{'showHidden':![],'depth':null}));}};module[_0x4604('0xc1')]=VoiceCallReport;
\ No newline at end of file
+var _0x7603=['sipcallid','[%s][voiceCallReport][varset]','[%s][voiceCallReport][hangup]\x20event:','[%s][voiceCallReport][hangup]\x20reason:%s','cause-txt','endtime','billableseconds','omit','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','length','resolve','then','transferType','stopRecordingOnTransfer','Action','StopMixMonitor','finally','event','outbound','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','custom:voiceCallReport','[%s][voiceCallReport][hangup]','syncAttendedTransfer','[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','origtransferercalleridnum','transfertargetcalleridnum','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','transfercalleridnum','transferconnectedlinenum','secondtransfereruniqueid','ATTENDED','transfertargetuniqueid','origtransfereruniqueid','origtransfererlinkedid','some','[%s][voiceCallReport][attendedtransfer]','transfereecalleridnum','extension','[%s][voiceCallReport][blindtransfer]\x20event:','BlindTransfer','transfererchannel','transfereruniqueid','[%s][voiceCallReport][blindtransfer]','[%s][voiceCallReport][musiconholdstart]\x20event:','mohstarttime','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceCallReport][musiconholdstart]','[%s][voiceCallReport][musiconholdstop]\x20event:','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','mohtime','[%s][voiceCallReport][musiconholdstop]','exports','lodash','moment','util','ioredis','../../../config/environment','../../../config/logger','ami','../model/channel','../rpc/setting','queue','agi','dial','playback','voicemail','FAILED','NO\x20ANSWER','ANSWERED','BUSY','defaults','redis','localhost','socket.io-emitter','channels','agents','syncNewExten','bind','syncNewChannel','newstate','syncVarSet','syncHangup','newcallerid','syncNewCallerId','blindtransfer','syncBlindTransfer','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','info','[voiceCallReport][coreshowchannels]\x20started','actionCoreShowChannels','error','[voiceCallReport][coreshowchannels]','inspect','prototype','isNotNull','isUndefined','emit','uniqueid','calleridname','calleridnum','debug','[%s][voiceCallReport][newcallerid]\x20event:','merge','keys','context','from-sip','channel','exten','xcally-motion-preview','split','destconnectedlinenum','connectedlinenum','format','user:%s','name','user:agentconnect','accountcode','[%s][voiceCallReport][newcallerid]','[%s][voiceCallReport][newchannel]\x20event:','OutgoingSpoolFailed','blindTransfers','linkedid','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','starttime','YYYY-MM-DD\x20HH:mm:ss','toNumber','[%s][voiceCallReport][newchannel]','[%s][voiceCallReport][newexten]\x20event:','application','applicationdata','appdata','startsWith','CDR(routeAlias)','toLowerCase','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','duration','seconds','disposition','pick','includes','lastapplication','lastdata','set','cdr(','match','type','isNil','[%s][voiceCallReport][newexten]','syncNewState','[%s][voiceCallReport][newstate]\x20event:','channelstate','answered','answertime','diff','destinationchannel','UserId','membername','holdtime','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newstate]','syncMixMonitorFilename','endsWith','replace','.wav49','monitorFilename','monitors','push','[%s][voiceCallReport][mixMonitorFilename]','[%s][voiceCallReport][varset]\x20event:','variable','mixmonitor_filename','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','value','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s','xmd-cdrtype','xmd-queue','[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','originatecalleridnum','xmd-destination','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','destination','xmd-callerid-preview','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','xmcs-queue','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','parse'];(function(_0x5d7165,_0x5a322){var _0x4d0454=function(_0x5a5a83){while(--_0x5a5a83){_0x5d7165['push'](_0x5d7165['shift']());}};_0x4d0454(++_0x5a322);}(_0x7603,0xf8));var _0x3760=function(_0x286ac9,_0x344342){_0x286ac9=_0x286ac9-0x0;var _0x3dfa9a=_0x7603[_0x286ac9];return _0x3dfa9a;};'use strict';var _=require(_0x3760('0x0'));var moment=require(_0x3760('0x1'));var util=require(_0x3760('0x2'));var path=require('path');var Redis=require(_0x3760('0x3'));var config=require(_0x3760('0x4'));var logger=require(_0x3760('0x5'))(_0x3760('0x6'));var ami=require('../ami');var Channel=require(_0x3760('0x7'));var RpcSetting=require(_0x3760('0x8'));var applications=['set',_0x3760('0x9'),_0x3760('0xa'),_0x3760('0xb'),_0x3760('0xc'),_0x3760('0xd')];var dispositions=['NO\x20ANSWER',_0x3760('0xe'),_0x3760('0xe'),_0x3760('0xf'),'NO\x20ANSWER',_0x3760('0xf'),_0x3760('0x10'),_0x3760('0x11'),'FAILED','FAILED',_0x3760('0xe')];config['redis']=_[_0x3760('0x12')](config[_0x3760('0x13')],{'host':_0x3760('0x14'),'port':0x18eb});var io=require(_0x3760('0x15'))(new Redis(config[_0x3760('0x13')]));function VoiceCallReport(_0x57ed26){this[_0x3760('0x16')]=_0x57ed26[_0x3760('0x16')];this[_0x3760('0x17')]=_0x57ed26['agents'];this['blindTransfers']={};ami['on']('coreshowchannel',this[_0x3760('0x18')][_0x3760('0x19')](this));ami['on']('newexten',this['syncNewExten'][_0x3760('0x19')](this));ami['on']('newchannel',this[_0x3760('0x1a')]['bind'](this));ami['on'](_0x3760('0x1b'),this['syncNewState'][_0x3760('0x19')](this));ami['on']('varset',this[_0x3760('0x1c')][_0x3760('0x19')](this));ami['on']('hangup',this[_0x3760('0x1d')][_0x3760('0x19')](this));ami['on'](_0x3760('0x1e'),this[_0x3760('0x1f')]['bind'](this));ami['on']('attendedtransfer',this['syncAttendedTransfer']['bind'](this));ami['on'](_0x3760('0x20'),this[_0x3760('0x21')][_0x3760('0x19')](this));ami['on'](_0x3760('0x22'),this[_0x3760('0x23')]['bind'](this));ami['on'](_0x3760('0x24'),this[_0x3760('0x25')][_0x3760('0x19')](this));try{logger[_0x3760('0x26')](_0x3760('0x27'));ami[_0x3760('0x28')]();}catch(_0x38315c){logger[_0x3760('0x29')](_0x3760('0x2a'),util[_0x3760('0x2b')](_0x38315c,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0x3760('0x2c')][_0x3760('0x2d')]=function(_0x4b6c3c){return _0x4b6c3c!==null&&!_[_0x3760('0x2e')](_0x4b6c3c);};VoiceCallReport['prototype']['emit']=function(_0x2ae071,_0x540d98,_0x68144a){io['to'](_0x2ae071)[_0x3760('0x2f')](_0x540d98,_0x68144a);};VoiceCallReport[_0x3760('0x2c')][_0x3760('0x1f')]=function(_0x54015b){try{if(this['isNotNull'](_0x54015b)){logger[_0x3760('0x26')]('[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s',_0x54015b[_0x3760('0x30')],_0x54015b[_0x3760('0x31')],_0x54015b[_0x3760('0x32')]);logger[_0x3760('0x33')](_0x3760('0x34'),_0x54015b[_0x3760('0x30')],util[_0x3760('0x2b')](_0x54015b,{'showHidden':![],'depth':null}));if(_0x54015b[_0x3760('0x30')]===_0x54015b['linkedid']){if(!_[_0x3760('0x2e')](this[_0x3760('0x16')][_0x54015b[_0x3760('0x30')]])){_[_0x3760('0x35')](this[_0x3760('0x16')][_0x54015b[_0x3760('0x30')]],_['pick'](_0x54015b,_[_0x3760('0x36')](this[_0x3760('0x16')][_0x54015b[_0x3760('0x30')]])));}}if(_0x54015b[_0x3760('0x37')]===_0x3760('0x38')){if(this[_0x3760('0x17')][_0x54015b[_0x3760('0x39')]['split']('-')[0x0]]){if(_0x54015b[_0x3760('0x3a')]==_0x3760('0x3b')){this[_0x3760('0x17')][_0x54015b['channel'][_0x3760('0x3c')]('-')[0x0]][_0x3760('0x3d')]=_0x54015b[_0x3760('0x3e')];this[_0x3760('0x2f')](util[_0x3760('0x3f')](_0x3760('0x40'),this[_0x3760('0x17')][_0x54015b['channel'][_0x3760('0x3c')]('-')[0x0]][_0x3760('0x41')]),_0x3760('0x42'),{'destaccountcode':this[_0x3760('0x17')][_0x54015b[_0x3760('0x39')][_0x3760('0x3c')]('-')[0x0]][_0x3760('0x43')],'destconnectedlinenum':_0x54015b[_0x3760('0x3e')]});}}}}}catch(_0x1d1ba8){logger[_0x3760('0x29')](_0x3760('0x44'),_0x54015b['uniqueid'],util[_0x3760('0x2b')](_0x1d1ba8,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x3760('0x2c')]['syncNewChannel']=function(_0x3840c7){try{if(this[_0x3760('0x2d')](_0x3840c7)){logger[_0x3760('0x33')](_0x3760('0x45'),_0x3840c7[_0x3760('0x30')],util[_0x3760('0x2b')](_0x3840c7,{'showHidden':![],'depth':null}));if(this[_0x3760('0x16')][_0x3840c7[_0x3760('0x30')]])return;if(_0x3840c7[_0x3760('0x39')]===_0x3760('0x46'))return;if(_0x3840c7[_0x3760('0x30')]!==_0x3840c7['linkedid']&&!this[_0x3760('0x47')][_0x3840c7[_0x3760('0x48')]])return;logger[_0x3760('0x26')](_0x3760('0x49'),_0x3840c7[_0x3760('0x30')],_0x3840c7[_0x3760('0x37')],_0x3840c7['exten']);this['channels'][_0x3840c7['uniqueid']]=new Channel();this[_0x3760('0x16')][_0x3840c7[_0x3760('0x30')]][_0x3760('0x4a')]=moment()['format'](_0x3760('0x4b'));this[_0x3760('0x16')][_0x3840c7[_0x3760('0x30')]]['disposition']=dispositions[_[_0x3760('0x4c')](_0x3840c7['channelstate'])];_[_0x3760('0x35')](this[_0x3760('0x16')][_0x3840c7[_0x3760('0x30')]],_['pick'](_0x3840c7,_[_0x3760('0x36')](this[_0x3760('0x16')][_0x3840c7[_0x3760('0x30')]])));if(_0x3840c7[_0x3760('0x37')]===_0x3760('0x38')){if(this[_0x3760('0x17')][_0x3840c7[_0x3760('0x39')][_0x3760('0x3c')]('-')[0x0]]){if(_[_0x3760('0x2e')](this[_0x3760('0x17')][_0x3840c7[_0x3760('0x39')][_0x3760('0x3c')]('-')[0x0]]['destconnectedlinenum'])){this[_0x3760('0x17')][_0x3840c7['channel']['split']('-')[0x0]][_0x3760('0x3d')]=_0x3840c7['exten'];logger[_0x3760('0x33')]('[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:',_0x3840c7[_0x3760('0x30')],util[_0x3760('0x2b')]({'id':this[_0x3760('0x17')][_0x3840c7[_0x3760('0x39')][_0x3760('0x3c')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x3840c7[_0x3760('0x39')][_0x3760('0x3c')]('-')[0x0]][_0x3760('0x43')],'destconnectedlinenum':_0x3840c7[_0x3760('0x3a')]},{'showHidden':![],'depth':null}));this['emit'](util[_0x3760('0x3f')](_0x3760('0x40'),this[_0x3760('0x17')][_0x3840c7[_0x3760('0x39')][_0x3760('0x3c')]('-')[0x0]]['name']),_0x3760('0x42'),{'id':this[_0x3760('0x17')][_0x3840c7[_0x3760('0x39')][_0x3760('0x3c')]('-')[0x0]]['id'],'destaccountcode':this[_0x3760('0x17')][_0x3840c7[_0x3760('0x39')][_0x3760('0x3c')]('-')[0x0]][_0x3760('0x43')],'destconnectedlinenum':_0x3840c7[_0x3760('0x3a')]});}}}}}catch(_0x24382b){logger[_0x3760('0x29')](_0x3760('0x4d'),_0x3840c7[_0x3760('0x30')],util[_0x3760('0x2b')](_0x24382b,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x3760('0x18')]=function(_0x5559e7){try{if(this[_0x3760('0x2d')](_0x5559e7)){logger[_0x3760('0x33')](_0x3760('0x4e'),_0x5559e7['uniqueid'],util['inspect'](_0x5559e7,{'showHidden':![],'depth':null}));if(_0x5559e7[_0x3760('0x39')]===_0x3760('0x46')||_0x5559e7[_0x3760('0x3a')]==='h')return;if(_0x5559e7[_0x3760('0x30')]===_0x5559e7[_0x3760('0x48')]||this[_0x3760('0x47')][_0x5559e7['linkedid']]){_0x5559e7[_0x3760('0x4f')]=_0x5559e7[_0x3760('0x4f')]['toLowerCase']();_0x5559e7[_0x3760('0x50')]=_0x5559e7[_0x3760('0x51')]||_0x5559e7[_0x3760('0x50')];if(_0x5559e7[_0x3760('0x51')]&&!_0x5559e7[_0x3760('0x51')][_0x3760('0x52')](_0x3760('0x53'))&&_0x5559e7[_0x3760('0x4f')]!==_0x3760('0x9')){_0x5559e7[_0x3760('0x50')]=_0x5559e7[_0x3760('0x50')][_0x3760('0x54')]();}logger[_0x3760('0x26')](_0x3760('0x55'),_0x5559e7['uniqueid'],_0x5559e7[_0x3760('0x4f')],_0x5559e7[_0x3760('0x50')]);if(_[_0x3760('0x2e')](this[_0x3760('0x16')][_0x5559e7[_0x3760('0x30')]])){this[_0x3760('0x16')][_0x5559e7[_0x3760('0x30')]]=new Channel();this[_0x3760('0x16')][_0x5559e7[_0x3760('0x30')]][_0x3760('0x4a')]=_0x5559e7['duration']?moment()['subtract'](moment[_0x3760('0x56')](_0x5559e7[_0x3760('0x56')])[_0x3760('0x57')](),_0x3760('0x57'))[_0x3760('0x3f')]('YYYY-MM-DD\x20HH:mm:ss'):moment()[_0x3760('0x3f')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x3760('0x16')][_0x5559e7[_0x3760('0x30')]][_0x3760('0x58')]='NO\x20ANSWER';}_['merge'](this[_0x3760('0x16')][_0x5559e7[_0x3760('0x30')]],_[_0x3760('0x59')](_0x5559e7,_[_0x3760('0x36')](this[_0x3760('0x16')][_0x5559e7[_0x3760('0x30')]])));if(_[_0x3760('0x5a')](applications,_0x5559e7[_0x3760('0x4f')])){this['channels'][_0x5559e7['uniqueid']][_0x3760('0x5b')]=_0x5559e7[_0x3760('0x4f')];this[_0x3760('0x16')][_0x5559e7[_0x3760('0x30')]][_0x3760('0x5c')]=_0x5559e7[_0x3760('0x50')];if(_0x5559e7[_0x3760('0x4f')]===_0x3760('0x5d')&&_['startsWith'](_0x5559e7[_0x3760('0x50')][_0x3760('0x54')](),_0x3760('0x5e'))){var _0x409929=_0x5559e7[_0x3760('0x50')]['split']('=');var _0x3f3331=_0x409929[0x0][_0x3760('0x54')]()[_0x3760('0x5f')](/cdr\((.*)\)/);if(_0x3f3331){if(_0x3f3331[0x1]===_0x3760('0x60')&&!_[_0x3760('0x61')](this['channels'][_0x5559e7[_0x3760('0x30')]][_0x3f3331[0x1]]))return;this[_0x3760('0x16')][_0x5559e7[_0x3760('0x30')]][_0x3f3331[0x1]]=_0x409929[0x1];}}else if(_0x5559e7['application']===_0x3760('0x9')){this[_0x3760('0x16')][_0x5559e7['uniqueid']][_0x3760('0x9')]=_0x5559e7['applicationdata'][_0x3760('0x3c')](',')[0x0];}}}}}catch(_0x18fb97){logger[_0x3760('0x29')](_0x3760('0x62'),_0x5559e7['uniqueid'],util[_0x3760('0x2b')](_0x18fb97,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x3760('0x63')]=function(_0x4736a7){try{if(this['isNotNull'](_0x4736a7)){logger[_0x3760('0x26')]('[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s',_0x4736a7[_0x3760('0x30')],_0x4736a7[_0x3760('0x48')],_0x4736a7['calleridname'],_0x4736a7[_0x3760('0x32')]);logger['debug'](_0x3760('0x64'),_0x4736a7['uniqueid'],util[_0x3760('0x2b')](_0x4736a7,{'showHidden':![],'depth':null}));if(_0x4736a7[_0x3760('0x65')]!=='6')return;if(_0x4736a7[_0x3760('0x30')]!==_0x4736a7[_0x3760('0x48')]){var _0x57e4c0=moment();if(this['channels'][_0x4736a7['linkedid']]){if(!this[_0x3760('0x16')][_0x4736a7[_0x3760('0x48')]][_0x3760('0x66')]){this[_0x3760('0x16')][_0x4736a7['linkedid']]['answered']=!![];this[_0x3760('0x16')][_0x4736a7[_0x3760('0x48')]][_0x3760('0x67')]=_0x57e4c0[_0x3760('0x3f')]('YYYY-MM-DD\x20HH:mm:ss');if(this[_0x3760('0x16')][_0x4736a7[_0x3760('0x48')]][_0x3760('0x4a')]){this[_0x3760('0x16')][_0x4736a7[_0x3760('0x48')]]['holdtime']=_0x57e4c0[_0x3760('0x68')](this[_0x3760('0x16')][_0x4736a7['linkedid']][_0x3760('0x4a')],_0x3760('0x57'));}}this[_0x3760('0x16')][_0x4736a7['linkedid']][_0x3760('0x48')]=_0x4736a7[_0x3760('0x30')];if(_0x4736a7['calleridnum']!==_0x3760('0x3b')){this[_0x3760('0x16')][_0x4736a7[_0x3760('0x48')]]['connectedlinenum']=_0x4736a7[_0x3760('0x32')];}this[_0x3760('0x16')][_0x4736a7[_0x3760('0x48')]]['connectedlinename']=_0x4736a7[_0x3760('0x31')];this[_0x3760('0x16')][_0x4736a7[_0x3760('0x48')]][_0x3760('0x69')]=_0x4736a7['channel'];this[_0x3760('0x16')][_0x4736a7[_0x3760('0x48')]][_0x3760('0x58')]=dispositions[_[_0x3760('0x4c')](_0x4736a7[_0x3760('0x65')])];if(this[_0x3760('0x17')][_0x4736a7[_0x3760('0x39')][_0x3760('0x3c')]('-')[0x0]]){this[_0x3760('0x16')][_0x4736a7[_0x3760('0x48')]][_0x3760('0x6a')]=this[_0x3760('0x17')][_0x4736a7[_0x3760('0x39')]['split']('-')[0x0]]['id'];this[_0x3760('0x16')][_0x4736a7['linkedid']][_0x3760('0x6b')]=this[_0x3760('0x17')][_0x4736a7[_0x3760('0x39')][_0x3760('0x3c')]('-')[0x0]]['name'];}}if(this['channels'][_0x4736a7[_0x3760('0x30')]]){if(!this[_0x3760('0x16')][_0x4736a7[_0x3760('0x30')]][_0x3760('0x66')]){this[_0x3760('0x16')][_0x4736a7[_0x3760('0x30')]][_0x3760('0x66')]=!![];this[_0x3760('0x16')][_0x4736a7[_0x3760('0x30')]][_0x3760('0x67')]=_0x57e4c0[_0x3760('0x3f')]('YYYY-MM-DD\x20HH:mm:ss');if(this[_0x3760('0x16')][_0x4736a7[_0x3760('0x30')]][_0x3760('0x4a')]){this[_0x3760('0x16')][_0x4736a7['uniqueid']][_0x3760('0x6c')]=_0x57e4c0[_0x3760('0x68')](this[_0x3760('0x16')][_0x4736a7[_0x3760('0x30')]][_0x3760('0x4a')],_0x3760('0x57'));}}if(_0x4736a7[_0x3760('0x32')]!=='xcally-motion-preview'){this['channels'][_0x4736a7[_0x3760('0x30')]]['connectedlinenum']=_0x4736a7[_0x3760('0x32')];}this['channels'][_0x4736a7[_0x3760('0x30')]]['connectedlinename']=_0x4736a7['calleridname'];this[_0x3760('0x16')][_0x4736a7[_0x3760('0x30')]][_0x3760('0x69')]=_0x4736a7[_0x3760('0x39')];this[_0x3760('0x16')][_0x4736a7[_0x3760('0x30')]][_0x3760('0x58')]=dispositions[_[_0x3760('0x4c')](_0x4736a7['channelstate'])];}}else{if(this[_0x3760('0x16')][_0x4736a7[_0x3760('0x30')]]){if(this[_0x3760('0x17')][_0x4736a7['channel'][_0x3760('0x3c')]('-')[0x0]]){this[_0x3760('0x16')][_0x4736a7['uniqueid']][_0x3760('0x6a')]=this[_0x3760('0x17')][_0x4736a7[_0x3760('0x39')][_0x3760('0x3c')]('-')[0x0]]['id'];this[_0x3760('0x16')][_0x4736a7[_0x3760('0x30')]][_0x3760('0x6b')]=this[_0x3760('0x17')][_0x4736a7[_0x3760('0x39')][_0x3760('0x3c')]('-')[0x0]][_0x3760('0x41')];}}}if(_0x4736a7[_0x3760('0x37')]==='from-sip'){if(this['agents'][_0x4736a7[_0x3760('0x39')][_0x3760('0x3c')]('-')[0x0]]){this[_0x3760('0x17')][_0x4736a7[_0x3760('0x39')][_0x3760('0x3c')]('-')[0x0]]['destconnectedlinenum']=_0x4736a7[_0x3760('0x3a')];var _0x160c7e,_0x419e17;if(this[_0x3760('0x16')][_0x4736a7[_0x3760('0x30')]]){_0x160c7e=this[_0x3760('0x16')][_0x4736a7[_0x3760('0x30')]]['routealias'];_0x419e17=this[_0x3760('0x16')][_0x4736a7[_0x3760('0x30')]][_0x3760('0x9')];}else if(this['channels'][_0x4736a7[_0x3760('0x48')]]){_0x160c7e=this[_0x3760('0x16')][_0x4736a7[_0x3760('0x48')]][_0x3760('0x6d')];_0x419e17=this[_0x3760('0x16')][_0x4736a7[_0x3760('0x48')]]['queue'];}this[_0x3760('0x17')][_0x4736a7['channel'][_0x3760('0x3c')]('-')[0x0]][_0x3760('0x9')]=_0x419e17;this['agents'][_0x4736a7['channel']['split']('-')[0x0]][_0x3760('0x6d')]=_0x160c7e;logger[_0x3760('0x33')](_0x3760('0x6e'),_0x4736a7[_0x3760('0x30')],util[_0x3760('0x2b')]({'id':this[_0x3760('0x17')][_0x4736a7[_0x3760('0x39')]['split']('-')[0x0]]['id'],'destaccountcode':this[_0x3760('0x17')][_0x4736a7['channel'][_0x3760('0x3c')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x4736a7[_0x3760('0x3a')],'routealias':_0x160c7e,'queue':_0x419e17||undefined},{'showHidden':![],'depth':null}));this[_0x3760('0x2f')](util[_0x3760('0x3f')](_0x3760('0x40'),this[_0x3760('0x17')][_0x4736a7[_0x3760('0x39')]['split']('-')[0x0]][_0x3760('0x41')]),_0x3760('0x42'),{'id':this[_0x3760('0x17')][_0x4736a7[_0x3760('0x39')][_0x3760('0x3c')]('-')[0x0]]['id'],'agentconnected':!![],'destaccountcode':this['agents'][_0x4736a7[_0x3760('0x39')]['split']('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x4736a7[_0x3760('0x3a')],'routealias':_0x160c7e,'queue':_0x419e17||undefined});}}}}catch(_0x170877){logger[_0x3760('0x29')](_0x3760('0x6f'),_0x4736a7[_0x3760('0x30')],util['inspect'](_0x170877,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x3760('0x2c')][_0x3760('0x70')]=function(_0x2a8e58,_0x13811e){try{if(this[_0x3760('0x16')][_0x2a8e58]){logger[_0x3760('0x26')]('[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s',_0x2a8e58,_0x13811e);this[_0x3760('0x16')][_0x2a8e58]['monitor']=!![];if(_[_0x3760('0x71')](_0x13811e,'.wav49')){_0x13811e=_0x13811e[_0x3760('0x72')](_0x3760('0x73'),'.WAV');}this[_0x3760('0x16')][_0x2a8e58][_0x3760('0x74')]=_0x13811e;var _0x5d2bb8=_['find'](this[_0x3760('0x16')][_0x2a8e58][_0x3760('0x75')],{'filename':_0x13811e});if(_[_0x3760('0x61')](_0x5d2bb8)){this['channels'][_0x2a8e58][_0x3760('0x75')][_0x3760('0x76')]({'filename':_0x13811e,'createdAt':moment()['format'](_0x3760('0x4b')),'mixmonitorid':'','status':'rec'});}}}catch(_0x7cc2c3){logger['error'](_0x3760('0x77'),_0x2a8e58,util['inspect'](_0x7cc2c3,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x3760('0x2c')]['syncVarSet']=function(_0x47c731){try{if(this[_0x3760('0x2d')](_0x47c731)){logger[_0x3760('0x33')](_0x3760('0x78'),_0x47c731['uniqueid'],util[_0x3760('0x2b')](_0x47c731,{'showHidden':![],'depth':null}));if(this[_0x3760('0x16')][_0x47c731[_0x3760('0x30')]]&&_0x47c731[_0x3760('0x39')]!=_0x3760('0x46')){if(this['isNotNull'](_0x47c731[_0x3760('0x79')])){if(this[_0x3760('0x2d')](_0x47c731['variable'][_0x3760('0x7a')])){logger[_0x3760('0x26')](_0x3760('0x7b'),_0x47c731[_0x3760('0x30')],_0x47c731[_0x3760('0x7c')]);this[_0x3760('0x70')](_0x47c731[_0x3760('0x30')],_0x47c731['value']);}else if(this[_0x3760('0x2d')](_0x47c731['variable']['xmd-phone'])){logger[_0x3760('0x26')]('[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s',_0x47c731[_0x3760('0x30')],_0x47c731[_0x3760('0x7c')]);this['channels'][_0x47c731['uniqueid']]['calleridnum']=_0x47c731['value'];}else if(this[_0x3760('0x2d')](_0x47c731[_0x3760('0x79')]['xmd-callerid'])){logger[_0x3760('0x26')](_0x3760('0x7d'),_0x47c731[_0x3760('0x30')],_0x47c731[_0x3760('0x7c')]);this[_0x3760('0x16')][_0x47c731[_0x3760('0x30')]]['callerid']=_0x47c731[_0x3760('0x7c')];}else if(this[_0x3760('0x2d')](_0x47c731[_0x3760('0x79')][_0x3760('0x7e')])){logger[_0x3760('0x26')]('[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s',_0x47c731[_0x3760('0x30')],_0x47c731['value']);this['channels'][_0x47c731[_0x3760('0x30')]]['type']=_0x47c731[_0x3760('0x7c')];}else if(this[_0x3760('0x2d')](_0x47c731[_0x3760('0x79')][_0x3760('0x7f')])){logger[_0x3760('0x26')](_0x3760('0x80'),_0x47c731[_0x3760('0x30')],_0x47c731[_0x3760('0x7c')]['split'](',')[0x0]);this[_0x3760('0x16')][_0x47c731['uniqueid']][_0x3760('0x9')]=_0x47c731[_0x3760('0x7c')][_0x3760('0x3c')](',')[0x0];}else if(this['isNotNull'](_0x47c731[_0x3760('0x79')]['xmd-originatecalleridnum'])){logger[_0x3760('0x26')](_0x3760('0x81'),_0x47c731[_0x3760('0x30')],_0x47c731[_0x3760('0x7c')]);this[_0x3760('0x16')][_0x47c731[_0x3760('0x30')]][_0x3760('0x82')]=_0x47c731[_0x3760('0x7c')];}else if(this['isNotNull'](_0x47c731[_0x3760('0x79')][_0x3760('0x83')])){logger[_0x3760('0x26')](_0x3760('0x84'),_0x47c731[_0x3760('0x30')],_0x47c731[_0x3760('0x7c')]);this[_0x3760('0x16')][_0x47c731[_0x3760('0x30')]][_0x3760('0x85')]=_0x47c731[_0x3760('0x7c')];}else if(this[_0x3760('0x2d')](_0x47c731[_0x3760('0x79')][_0x3760('0x86')])){logger['info'](_0x3760('0x87'),_0x47c731[_0x3760('0x30')],_0x47c731['value']);this[_0x3760('0x16')][_0x47c731[_0x3760('0x30')]]['calleridpreview']=_0x47c731[_0x3760('0x7c')];}else if(this[_0x3760('0x2d')](_0x47c731[_0x3760('0x79')][_0x3760('0x88')])){logger[_0x3760('0x26')](_0x3760('0x89'),_0x47c731['uniqueid'],_0x47c731[_0x3760('0x7c')]);this[_0x3760('0x16')][_0x47c731['uniqueid']][_0x3760('0x9')]=_0x47c731['value'];}else if(this[_0x3760('0x2d')](_0x47c731[_0x3760('0x79')]['sipcallid'])){logger[_0x3760('0x26')](_0x3760('0x8a'),_0x47c731[_0x3760('0x30')],_0x47c731[_0x3760('0x7c')]);this[_0x3760('0x16')][_0x47c731['uniqueid']]['sipcalluniqueid']=_0x47c731[_0x3760('0x7c')];}}}else if(this[_0x3760('0x2d')](_0x47c731[_0x3760('0x79')][_0x3760('0x7a')])){if(_0x47c731[_0x3760('0x7c')]){var _0x228a92=path[_0x3760('0x8b')](_0x47c731[_0x3760('0x7c')])['name'];logger[_0x3760('0x26')](_0x3760('0x7b'),_0x228a92,_0x47c731[_0x3760('0x7c')]);this[_0x3760('0x70')](_0x228a92,_0x47c731[_0x3760('0x7c')]);}}else if(this[_0x3760('0x16')][_0x47c731[_0x3760('0x48')]]){if(this[_0x3760('0x2d')](_0x47c731[_0x3760('0x79')])){if(this['isNotNull'](_0x47c731[_0x3760('0x79')][_0x3760('0x8c')])){logger[_0x3760('0x26')](_0x3760('0x8a'),_0x47c731[_0x3760('0x48')],_0x47c731[_0x3760('0x7c')]);this['channels'][_0x47c731[_0x3760('0x48')]]['sipcalllinkedid']=_0x47c731[_0x3760('0x7c')];}}}}}catch(_0x136378){logger['error'](_0x3760('0x8d'),_0x47c731['uniqueid'],util[_0x3760('0x2b')](_0x136378,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype']['syncHangup']=function(_0x2e19ef){try{if(this[_0x3760('0x2d')](_0x2e19ef)){logger[_0x3760('0x33')](_0x3760('0x8e'),_0x2e19ef['uniqueid'],util[_0x3760('0x2b')](_0x2e19ef,{'showHidden':![],'depth':null}));if(this['blindTransfers'][_0x2e19ef[_0x3760('0x48')]]){if(this[_0x3760('0x16')][this['blindTransfers'][_0x2e19ef[_0x3760('0x48')]]['linkedid']]){this['channels'][this[_0x3760('0x47')][_0x2e19ef[_0x3760('0x48')]][_0x3760('0x48')]][_0x3760('0x30')]=_0x2e19ef[_0x3760('0x30')];this['channels'][this[_0x3760('0x47')][_0x2e19ef[_0x3760('0x48')]]['linkedid']][_0x3760('0x66')]=this[_0x3760('0x16')][_0x2e19ef[_0x3760('0x30')]]['answered'];this['channels'][this[_0x3760('0x47')][_0x2e19ef[_0x3760('0x48')]][_0x3760('0x48')]][_0x3760('0x67')]=this[_0x3760('0x16')][_0x2e19ef[_0x3760('0x30')]][_0x3760('0x67')];this[_0x3760('0x16')][this[_0x3760('0x47')][_0x2e19ef['linkedid']][_0x3760('0x48')]][_0x3760('0x69')]=this['channels'][this['blindTransfers'][_0x2e19ef[_0x3760('0x48')]]['linkedid']]['channel'];this[_0x3760('0x16')][this[_0x3760('0x47')][_0x2e19ef[_0x3760('0x48')]]['linkedid']][_0x3760('0x58')]=this[_0x3760('0x16')][_0x2e19ef['uniqueid']][_0x3760('0x58')];this[_0x3760('0x16')][_0x2e19ef[_0x3760('0x30')]]=this[_0x3760('0x16')][this['blindTransfers'][_0x2e19ef[_0x3760('0x48')]]['linkedid']];delete this[_0x3760('0x16')][this[_0x3760('0x47')][_0x2e19ef[_0x3760('0x48')]][_0x3760('0x48')]];}else if(this[_0x3760('0x16')][this[_0x3760('0x47')][_0x2e19ef[_0x3760('0x48')]][_0x3760('0x30')]]){this[_0x3760('0x16')][this['blindTransfers'][_0x2e19ef['linkedid']][_0x3760('0x30')]]['uniqueid']=[this[_0x3760('0x16')][this[_0x3760('0x47')][_0x2e19ef['linkedid']][_0x3760('0x30')]]['linkedid'],this['channels'][this[_0x3760('0x47')][_0x2e19ef[_0x3760('0x48')]][_0x3760('0x30')]][_0x3760('0x48')]=this[_0x3760('0x16')][this[_0x3760('0x47')][_0x2e19ef[_0x3760('0x48')]][_0x3760('0x30')]][_0x3760('0x30')]][0x0];this[_0x3760('0x16')][this[_0x3760('0x47')][_0x2e19ef[_0x3760('0x48')]][_0x3760('0x30')]][_0x3760('0x66')]=this[_0x3760('0x16')][_0x2e19ef[_0x3760('0x30')]][_0x3760('0x66')];this['channels'][this[_0x3760('0x47')][_0x2e19ef['linkedid']][_0x3760('0x30')]][_0x3760('0x67')]=this['channels'][_0x2e19ef['uniqueid']][_0x3760('0x67')];this[_0x3760('0x16')][this[_0x3760('0x47')][_0x2e19ef['linkedid']][_0x3760('0x30')]][_0x3760('0x69')]=this['channels'][this[_0x3760('0x47')][_0x2e19ef[_0x3760('0x48')]]['uniqueid']][_0x3760('0x39')];this['channels'][this['blindTransfers'][_0x2e19ef['linkedid']][_0x3760('0x30')]]['disposition']=this[_0x3760('0x16')][_0x2e19ef[_0x3760('0x30')]][_0x3760('0x58')];this['channels'][_0x2e19ef[_0x3760('0x30')]]=this['channels'][this['blindTransfers'][_0x2e19ef[_0x3760('0x48')]]['uniqueid']];delete this[_0x3760('0x16')][this[_0x3760('0x47')][_0x2e19ef[_0x3760('0x48')]][_0x3760('0x30')]];}}if(this['channels'][_0x2e19ef['uniqueid']]){logger[_0x3760('0x26')](_0x3760('0x8f'),_0x2e19ef['uniqueid'],_0x2e19ef[_0x3760('0x90')]);var _0x5beeab=moment();this['channels'][_0x2e19ef['uniqueid']][_0x3760('0x91')]=_0x5beeab[_0x3760('0x3f')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x3760('0x16')][_0x2e19ef['uniqueid']][_0x3760('0x56')]=_0x5beeab[_0x3760('0x68')](this['channels'][_0x2e19ef[_0x3760('0x30')]][_0x3760('0x4a')],_0x3760('0x57'));if(this[_0x3760('0x16')][_0x2e19ef['uniqueid']][_0x3760('0x66')]){this[_0x3760('0x16')][_0x2e19ef[_0x3760('0x30')]][_0x3760('0x92')]=_0x5beeab['diff'](this['channels'][_0x2e19ef['uniqueid']][_0x3760('0x67')],'seconds');this['channels'][_0x2e19ef[_0x3760('0x30')]][_0x3760('0x6c')]=this[_0x3760('0x16')][_0x2e19ef[_0x3760('0x30')]][_0x3760('0x56')]-this[_0x3760('0x16')][_0x2e19ef[_0x3760('0x30')]][_0x3760('0x92')];}if(_0x2e19ef[_0x3760('0x37')]===_0x3760('0x38')){if(this[_0x3760('0x17')][_0x2e19ef[_0x3760('0x39')][_0x3760('0x3c')]('-')[0x0]]){this[_0x3760('0x17')][_0x2e19ef[_0x3760('0x39')][_0x3760('0x3c')]('-')[0x0]]=_[_0x3760('0x93')](this[_0x3760('0x17')][_0x2e19ef['channel'][_0x3760('0x3c')]('-')[0x0]],['destconnectedlinenum']);logger[_0x3760('0x33')](_0x3760('0x94'),_0x2e19ef['uniqueid'],util[_0x3760('0x2b')]({'id':this[_0x3760('0x17')][_0x2e19ef['channel'][_0x3760('0x3c')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x2e19ef[_0x3760('0x39')][_0x3760('0x3c')]('-')[0x0]][_0x3760('0x43')]},{'showHidden':![],'depth':null}));this['emit'](util[_0x3760('0x3f')](_0x3760('0x40'),this[_0x3760('0x17')][_0x2e19ef[_0x3760('0x39')][_0x3760('0x3c')]('-')[0x0]]['name']),_0x3760('0x95'),{'id':this[_0x3760('0x17')][_0x2e19ef[_0x3760('0x39')][_0x3760('0x3c')]('-')[0x0]]['id'],'destaccountcode':this[_0x3760('0x17')][_0x2e19ef['channel'][_0x3760('0x3c')]('-')[0x0]]['accountcode']});for(var _0x30c6d6=0x0;_0x30c6d6<Object[_0x3760('0x36')](this[_0x3760('0x17')])[_0x3760('0x96')];_0x30c6d6++){var _0x1dd66e=Object[_0x3760('0x36')](this[_0x3760('0x17')])[_0x30c6d6];var _0x2ac92f=this[_0x3760('0x17')][_0x1dd66e];if(_0x2ac92f['accountcode']===Number(_0x2e19ef['connectedlinenum'])){this['emit'](util['format']('user:%s',_0x2ac92f['name']),_0x3760('0x95'),{'id':_0x2ac92f['id'],'destaccountcode':_0x2ac92f[_0x3760('0x43')],'transfer':this[_0x3760('0x16')][_0x2e19ef[_0x3760('0x30')]]['transferType']});break;}}}}var _0x51a394=this;Promise[_0x3760('0x97')]()[_0x3760('0x98')](function(){var _0xc209d6=_0x51a394[_0x3760('0x16')][_0x2e19ef['uniqueid']];if(typeof _0xc209d6[_0x3760('0x99')]==='undefined')return;if(_['isEmpty'](_0xc209d6['monitors']))return;return RpcSetting['getSettings']()[_0x3760('0x98')](function(_0x26eb91){if(!_0x26eb91[_0x3760('0x9a')])return;return Promise[_0x3760('0x97')]()[_0x3760('0x98')](function(){return ami[_0x3760('0x9b')]({'action':_0x3760('0x9c'),'channel':_0xc209d6[_0x3760('0x39')]})['catch'](function(){});})[_0x3760('0x98')](function(){return ami[_0x3760('0x9b')]({'action':'StopMixMonitor','channel':_0xc209d6[_0x3760('0x69')]})['catch'](function(){})[_0x3760('0x9d')](function(){var _0x43ae46=_0x51a394[_0x3760('0x17')][_0xc209d6[_0x3760('0x69')][_0x3760('0x3c')]('-')[0x0]];if(!_0x43ae46)return;io[_0x3760('0x2f')]('webbar:stopmonitors',{'agentId':_0x43ae46['id'],'uniqueid':_0xc209d6[_0x3760('0x30')]});});});});})[_0x3760('0x98')](function(){if(_0x2e19ef[_0x3760('0x9e')]==='BlindTransfer'){_0x51a394[_0x3760('0x47')][_0x2e19ef[_0x3760('0x30')]]=_0x2e19ef;}else{if(_0x51a394['channels'][_0x2e19ef[_0x3760('0x30')]][_0x3760('0x60')]===_0x3760('0x9f')&&_0x51a394[_0x3760('0x47')][_0x2e19ef[_0x3760('0x30')]]){_0x51a394[_0x3760('0x16')][_0x2e19ef[_0x3760('0x30')]][_0x3760('0x30')]=[_0x51a394[_0x3760('0x16')][_0x2e19ef[_0x3760('0x30')]][_0x3760('0x48')],_0x51a394[_0x3760('0x16')][_0x2e19ef[_0x3760('0x30')]][_0x3760('0x48')]=_0x51a394[_0x3760('0x16')][_0x2e19ef[_0x3760('0x30')]]['uniqueid']][0x0];delete _0x51a394['blindTransfers'][_0x2e19ef[_0x3760('0x30')]];}}logger[_0x3760('0x33')](_0x3760('0xa0'),_0x2e19ef[_0x3760('0x30')],util[_0x3760('0x2b')](_0x51a394[_0x3760('0x16')][_0x2e19ef['uniqueid']],{'showHidden':![],'depth':null}));ami['emit'](_0x3760('0xa1'),_0x51a394[_0x3760('0x16')][_0x2e19ef[_0x3760('0x30')]]);delete _0x51a394[_0x3760('0x16')][_0x2e19ef[_0x3760('0x30')]];});}}}catch(_0x30fc58){logger[_0x3760('0x29')](_0x3760('0xa2'),_0x2e19ef[_0x3760('0x30')],util[_0x3760('0x2b')](_0x30fc58,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x3760('0x2c')][_0x3760('0xa3')]=function(_0x2b7ae3){try{if(this[_0x3760('0x2d')](_0x2b7ae3)){logger['info'](_0x3760('0xa4'),_0x2b7ae3[_0x3760('0x30')],_0x2b7ae3[_0x3760('0xa5')],_0x2b7ae3[_0x3760('0xa6')]);logger[_0x3760('0x33')](_0x3760('0xa7'),_0x2b7ae3[_0x3760('0x30')],util[_0x3760('0x2b')](_0x2b7ae3,{'showHidden':![],'depth':null}));var _0x397a22;if(this['channels'][_0x2b7ae3[_0x3760('0xa8')]]){this[_0x3760('0x16')][_0x2b7ae3[_0x3760('0xa8')]][_0x3760('0xa9')]=_0x2b7ae3[_0x3760('0xa5')];this[_0x3760('0x16')][_0x2b7ae3[_0x3760('0xa8')]][_0x3760('0xaa')]=_0x2b7ae3[_0x3760('0xa6')];if(this[_0x3760('0x16')][_0x2b7ae3[_0x3760('0xab')]]){_0x397a22=this[_0x3760('0x16')][_0x2b7ae3[_0x3760('0xab')]];this['channels'][_0x2b7ae3[_0x3760('0xab')]]=this[_0x3760('0x16')][_0x2b7ae3['transfereeuniqueid']];this[_0x3760('0x16')][_0x2b7ae3['transfereeuniqueid']]=_0x397a22;}this[_0x3760('0x16')][_0x2b7ae3['secondtransfereruniqueid']][_0x3760('0x99')]=_0x3760('0xac');}else if(this['channels'][_0x2b7ae3['transfertargetuniqueid']]){this[_0x3760('0x16')][_0x2b7ae3[_0x3760('0xad')]][_0x3760('0xa9')]=_0x2b7ae3[_0x3760('0xa5')];this[_0x3760('0x16')][_0x2b7ae3[_0x3760('0xad')]][_0x3760('0xaa')]=_0x2b7ae3['transfertargetcalleridnum'];if(this['channels'][_0x2b7ae3['origtransfereruniqueid']]){_0x397a22=this[_0x3760('0x16')][_0x2b7ae3[_0x3760('0xae')]];this[_0x3760('0x16')][_0x2b7ae3[_0x3760('0xae')]]=this[_0x3760('0x16')][_0x2b7ae3[_0x3760('0xad')]];this[_0x3760('0x16')][_0x2b7ae3['transfertargetuniqueid']]=_0x397a22;}this['channels'][_0x2b7ae3[_0x3760('0xad')]][_0x3760('0x99')]=_0x3760('0xac');}if((this[_0x3760('0x16')][_0x2b7ae3[_0x3760('0xae')]]||this[_0x3760('0x16')][_0x2b7ae3[_0x3760('0xaf')]])&&this[_0x3760('0x16')][_0x2b7ae3['secondtransfereruniqueid']]){var _0x26be73=_[_0x3760('0xb0')]([this[_0x3760('0x16')][_0x2b7ae3[_0x3760('0xae')]],this['channels'][_0x2b7ae3['origtransfererlinkedid']],this['channels'][_0x2b7ae3[_0x3760('0xab')]]],function(_0x2c3fa5){return _0x2c3fa5&&_0x2c3fa5['type']===_0x3760('0x9f')&&_0x2c3fa5['routeid'];});if(_0x26be73){if(this[_0x3760('0x16')][_0x2b7ae3[_0x3760('0xae')]])this[_0x3760('0x16')][_0x2b7ae3[_0x3760('0xae')]]['transferType']=_0x3760('0xac');if(this[_0x3760('0x16')][_0x2b7ae3[_0x3760('0xaf')]])this[_0x3760('0x16')][_0x2b7ae3[_0x3760('0xaf')]][_0x3760('0x99')]=_0x3760('0xac');this['channels'][_0x2b7ae3['secondtransfereruniqueid']][_0x3760('0x99')]=_0x3760('0xac');}}}}catch(_0x4e387f){logger[_0x3760('0x29')](_0x3760('0xb1'),_0x2b7ae3['uniqueid'],util[_0x3760('0x2b')](_0x4e387f,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x3760('0x2c')]['syncBlindTransfer']=function(_0x3307f3){try{if(this[_0x3760('0x2d')](_0x3307f3)){logger[_0x3760('0x26')]('[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0x3307f3['uniqueid'],_0x3307f3[_0x3760('0xb2')],_0x3307f3[_0x3760('0xb3')]);logger['debug'](_0x3760('0xb4'),_0x3307f3['uniqueid'],util[_0x3760('0x2b')](_0x3307f3,{'showHidden':![],'depth':null}));if(this[_0x3760('0x16')][_0x3307f3[_0x3760('0xa8')]]){this[_0x3760('0x16')][_0x3307f3[_0x3760('0xa8')]][_0x3760('0xa9')]=_0x3307f3[_0x3760('0xb2')];this[_0x3760('0x16')][_0x3307f3[_0x3760('0xa8')]][_0x3760('0xaa')]=_0x3307f3[_0x3760('0xb3')];this[_0x3760('0x16')][_0x3307f3[_0x3760('0xa8')]][_0x3760('0x99')]='BLIND';this['syncHangup']({'event':_0x3760('0xb5'),'uniqueid':_0x3307f3[_0x3760('0xa8')],'linkedid':_0x3307f3['transfereruniqueid'],'context':_0x3307f3['context'],'channel':_0x3307f3[_0x3760('0xb6')]});}else{this[_0x3760('0x16')][_0x3307f3[_0x3760('0xb7')]][_0x3760('0x99')]='BLIND';this[_0x3760('0x1d')]({'event':'BlindTransfer','uniqueid':_0x3307f3['transfereruniqueid'],'linkedid':_0x3307f3[_0x3760('0xa8')],'context':_0x3307f3[_0x3760('0x37')],'channel':_0x3307f3[_0x3760('0xb6')]});}}}catch(_0xb70bdb){logger['error'](_0x3760('0xb8'),_0x3307f3[_0x3760('0x30')],util[_0x3760('0x2b')](_0xb70bdb,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x3760('0x2c')][_0x3760('0x23')]=function(_0x290bac){try{if(this[_0x3760('0x2d')](_0x290bac)){logger['debug'](_0x3760('0xb9'),_0x290bac[_0x3760('0x30')],util[_0x3760('0x2b')](_0x290bac,{'showHidden':![],'depth':null}));if(this[_0x3760('0x16')][_0x290bac['uniqueid']]){if(!_[_0x3760('0x61')](this['channels'][_0x290bac[_0x3760('0x30')]]['answertime'])){this[_0x3760('0x16')][_0x290bac['uniqueid']][_0x3760('0xba')]=moment()[_0x3760('0x3f')](_0x3760('0x4b'));logger[_0x3760('0x26')](_0x3760('0xbb'),_0x290bac['uniqueid'],this['channels'][_0x290bac[_0x3760('0x30')]]['mohstarttime']);}}}}catch(_0x4ffa3e){logger[_0x3760('0x29')](_0x3760('0xbc'),_0x290bac[_0x3760('0x30')],util[_0x3760('0x2b')](_0x4ffa3e,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x3760('0x2c')]['syncMusicOnHoldStop']=function(_0x86ee60){try{if(this[_0x3760('0x2d')](_0x86ee60)){logger[_0x3760('0x33')](_0x3760('0xbd'),_0x86ee60[_0x3760('0x30')],util[_0x3760('0x2b')](_0x86ee60,{'showHidden':![],'depth':null}));if(this[_0x3760('0x16')][_0x86ee60['uniqueid']]){if(!_[_0x3760('0x61')](this['channels'][_0x86ee60['uniqueid']][_0x3760('0xba')])){this[_0x3760('0x16')][_0x86ee60['uniqueid']]['mohtime']+=moment()['milliseconds'](0x0)[_0x3760('0x68')](this[_0x3760('0x16')][_0x86ee60[_0x3760('0x30')]][_0x3760('0xba')],_0x3760('0x57'));logger[_0x3760('0x26')](_0x3760('0xbe'),_0x86ee60[_0x3760('0x30')],this[_0x3760('0x16')][_0x86ee60['uniqueid']][_0x3760('0xbf')]);delete this[_0x3760('0x16')][_0x86ee60[_0x3760('0x30')]][_0x3760('0xba')];}}}}catch(_0x2e4037){logger[_0x3760('0x29')](_0x3760('0xc0'),_0x86ee60[_0x3760('0x30')],util[_0x3760('0x2b')](_0x2e4037,{'showHidden':![],'depth':null}));}};module[_0x3760('0xc1')]=VoiceCallReport;
\ No newline at end of file
index 71f32ff..608170e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['outboundChannels','outbound','applications','variables','syncDialBegin','bind','dialend','syncHangup','prototype','isNotNull','isUndefined','emit','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','inspect','merge','format','YYYY-MM-DD\x20HH:mm:ss','substring','lastIndexOf','channel','omit','event','privilege','info','channels','membername','debug','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','voice:outbound','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]','syncDialEnd','[%s][voiceDialReport][dialend]\x20event:','dialstatus','ANSWER','connectedlinenum','connectedlinename','lastevent','connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','custom:dialconnect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','error','[%s][voiceDialReport][dialend]','addVariable','value','variable','voice','keys','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','rtpaudioqosrttbridged','sipcallid','bridgepvtcallid','membercalls','memberdynamic','memberlastcall','memberpenalty','memberrealtime','includes','[%s][voiceDialReport][hangup]\x20event:','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','endtime','duration','diff','starttime','seconds','complete','total','answertime','holdtime','sumHoldTime','billableseconds','sumDuration','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','custom:voiceDialReport','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','voice_outbound:save','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','stringify','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','voice_outbound_channel:remove','linkedid','destuniqueid','[%s][voiceDialReport][hangup]','syncNewExten','toLowerCase','set','appdata','applicationdata','cdr(','split','match','[%s][voiceDialReport][newexten]','exports','moment','util','ioredis','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults'];(function(_0x1769e5,_0x449f13){var _0x153de8=function(_0x4ca2c2){while(--_0x4ca2c2){_0x1769e5['push'](_0x1769e5['shift']());}};_0x153de8(++_0x449f13);}(_0x1261,0x144));var _0x1126=function(_0x2b47ad,_0x55c7cc){_0x2b47ad=_0x2b47ad-0x0;var _0x1a2426=_0x1261[_0x2b47ad];return _0x1a2426;};'use strict';var _=require('lodash');var moment=require(_0x1126('0x0'));var util=require(_0x1126('0x1'));var Redis=require(_0x1126('0x2'));var config=require(_0x1126('0x3'));var logger=require(_0x1126('0x4'))(_0x1126('0x5'));var ami=require(_0x1126('0x6'));config[_0x1126('0x7')]=_[_0x1126('0x8')](config[_0x1126('0x7')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x1126('0x7')]));function VoiceDialReport(_0x907180){this['channels']=_0x907180[_0x1126('0x9')];this[_0x1126('0xa')]=_0x907180[_0x1126('0xa')];this[_0x1126('0xb')]={};this[_0x1126('0xc')]={};ami['on']('dialbegin',this[_0x1126('0xd')][_0x1126('0xe')](this));ami['on'](_0x1126('0xf'),this['syncDialEnd'][_0x1126('0xe')](this));ami['on']('varset',this['syncVarSet'][_0x1126('0xe')](this));ami['on']('hangup',this[_0x1126('0x10')][_0x1126('0xe')](this));}VoiceDialReport[_0x1126('0x11')][_0x1126('0x12')]=function(_0xca0355){return _0xca0355!==null&&!_[_0x1126('0x13')](_0xca0355);};VoiceDialReport[_0x1126('0x11')][_0x1126('0x14')]=function(_0x43850b,_0x53a8f0,_0x5de9a7){io['to'](_0x43850b)[_0x1126('0x14')](_0x53a8f0,_0x5de9a7);};VoiceDialReport[_0x1126('0x11')][_0x1126('0xd')]=function(_0x4be0c6){try{if(this[_0x1126('0x12')](_0x4be0c6)){logger['debug'](_0x1126('0x15'),_0x4be0c6[_0x1126('0x16')],util[_0x1126('0x17')](_0x4be0c6,{'showHidden':![],'depth':null}));if(this['channels'][_0x4be0c6[_0x1126('0x16')]]){_[_0x1126('0x18')](this['channels'][_0x4be0c6['uniqueid']],{'starttime':moment()[_0x1126('0x19')](_0x1126('0x1a')),'lastevent':'called','interface':_0x4be0c6['channel'][_0x1126('0x1b')](0x0,_0x4be0c6['channel'][_0x1126('0x1c')]('-')),'membername':_0x4be0c6[_0x1126('0x1d')][_0x1126('0x1b')](_0x4be0c6['channel'][_0x1126('0x1c')]('/')+0x1,_0x4be0c6['channel']['lastIndexOf']('-'))},_[_0x1126('0x1e')](_0x4be0c6,[_0x1126('0x1f'),_0x1126('0x20')]));logger[_0x1126('0x21')]('[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called',_0x4be0c6[_0x1126('0x16')],this[_0x1126('0x22')][_0x4be0c6['uniqueid']][_0x1126('0x23')],this['channels'][_0x4be0c6['uniqueid']]['interface']);logger[_0x1126('0x24')](_0x1126('0x25'),_0x4be0c6[_0x1126('0x16')],util[_0x1126('0x17')](this[_0x1126('0x22')][_0x4be0c6[_0x1126('0x16')]],{'showHidden':![],'depth':null}));if(this[_0x1126('0xb')][_0x4be0c6[_0x1126('0x16')]])_['merge'](this[_0x1126('0x22')][_0x4be0c6[_0x1126('0x16')]],this[_0x1126('0xb')][_0x4be0c6['uniqueid']]);this['emit'](_0x1126('0x26'),_0x1126('0x27'),this['channels'][_0x4be0c6[_0x1126('0x16')]]);logger[_0x1126('0x24')]('[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:',_0x4be0c6[_0x1126('0x16')],util['inspect'](this[_0x1126('0x22')][_0x4be0c6['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x1126('0x14')]('custom:dialbegin',this[_0x1126('0x22')][_0x4be0c6['uniqueid']]);}}}catch(_0x5252e0){logger['error'](_0x1126('0x28'),_0x4be0c6[_0x1126('0x16')],util[_0x1126('0x17')](_0x5252e0,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0x1126('0x29')]=function(_0x226afb){try{if(this['isNotNull'](_0x226afb)){logger[_0x1126('0x24')](_0x1126('0x2a'),_0x226afb[_0x1126('0x16')],util[_0x1126('0x17')](_0x226afb,{'showHidden':![],'depth':null}));if(this['channels'][_0x226afb['uniqueid']]){this[_0x1126('0x22')][_0x226afb[_0x1126('0x16')]][_0x1126('0x2b')]=_0x226afb[_0x1126('0x2b')];if(_0x226afb['dialstatus']===_0x1126('0x2c')){this[_0x1126('0x22')][_0x226afb[_0x1126('0x16')]][_0x1126('0x2d')]=_0x226afb[_0x1126('0x2d')];this['channels'][_0x226afb[_0x1126('0x16')]][_0x1126('0x2e')]=_0x226afb[_0x1126('0x2e')];this[_0x1126('0x22')][_0x226afb['uniqueid']]['answertime']=moment()[_0x1126('0x19')](_0x1126('0x1a'));this['channels'][_0x226afb[_0x1126('0x16')]][_0x1126('0x2f')]=_0x1126('0x30');logger['info']('[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect',_0x226afb[_0x1126('0x16')],_0x226afb[_0x1126('0x1d')][_0x1126('0x1b')](_0x226afb[_0x1126('0x1d')]['lastIndexOf']('/')+0x1,_0x226afb[_0x1126('0x1d')]['lastIndexOf']('-')));logger[_0x1126('0x24')](_0x1126('0x31'),_0x226afb[_0x1126('0x16')],util[_0x1126('0x17')](this[_0x1126('0x22')][_0x226afb['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x1126('0x14')](_0x1126('0x32'),this[_0x1126('0x22')][_0x226afb[_0x1126('0x16')]]);}logger[_0x1126('0x24')](_0x1126('0x33'),_0x226afb[_0x1126('0x16')],util['inspect'](this[_0x1126('0x22')][_0x226afb[_0x1126('0x16')]],{'showHidden':![],'depth':null}));this[_0x1126('0x14')](_0x1126('0x26'),_0x1126('0x27'),this['channels'][_0x226afb['uniqueid']]);}}}catch(_0x1c4f06){logger[_0x1126('0x34')](_0x1126('0x35'),_0x226afb[_0x1126('0x16')],util[_0x1126('0x17')](_0x1c4f06,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x1126('0x11')]['syncVarSet']=function(_0x497576){try{if(this['isNotNull'](_0x497576)){logger[_0x1126('0x24')]('[%s][voiceDialReport][varset]\x20event:',_0x497576[_0x1126('0x16')],util[_0x1126('0x17')](_0x497576,{'showHidden':![],'depth':null}));this[_0x1126('0x36')](_0x497576[_0x1126('0x16')],_['keys'](_0x497576['variable'])[0x0],_0x497576[_0x1126('0x37')]);if(this[_0x1126('0x12')](_0x497576[_0x1126('0x38')])&&this['isNotNull'](_0x497576[_0x1126('0x38')]['outboundrouteid'])){if(_[_0x1126('0x13')](this['channels'][_0x497576[_0x1126('0x16')]])){this[_0x1126('0x22')][_0x497576[_0x1126('0x16')]]={'routeId':_0x497576['value'],'variables':this[_0x1126('0xc')][_0x497576[_0x1126('0x16')]],'motionChannel':_0x1126('0x39')};logger['info']('[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s',_0x497576['uniqueid'],_0x497576[_0x1126('0x38')]['outboundrouteid'],_[_0x1126('0x3a')](_0x497576['variable'])[0x0],_0x497576[_0x1126('0x37')]);logger[_0x1126('0x24')](_0x1126('0x3b'),_0x497576[_0x1126('0x16')],util[_0x1126('0x17')](this['channels'][_0x497576[_0x1126('0x16')]],{'showHidden':![],'depth':null}));this[_0x1126('0x14')]('voice:outbound',_0x1126('0x27'),this[_0x1126('0x22')][_0x497576['uniqueid']]);}}}}catch(_0x5f6d73){logger[_0x1126('0x34')]('[%s][voiceDialReport][varset]',_0x497576[_0x1126('0x16')],util[_0x1126('0x17')](_0x5f6d73,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x1126('0x11')]['addVariable']=function(_0x3fe7c1,_0x1c405c,_0x411c89){var _0x5878bb=[_0x1126('0x3c'),_0x1126('0x3d'),_0x1126('0x3e'),_0x1126('0x3f'),'rtpaudioqosloss',_0x1126('0x40'),'rtpaudioqosrtt',_0x1126('0x41'),_0x1126('0x42'),'sipuri','bridgepeer',_0x1126('0x43'),_0x1126('0x44'),_0x1126('0x45'),'memberinterface',_0x1126('0x46'),_0x1126('0x23'),_0x1126('0x47'),_0x1126('0x48')];if(!_['isNil'](_0x1c405c)&&!_[_0x1126('0x49')](_0x5878bb,_0x1c405c)){if(_[_0x1126('0x13')](this['variables'][_0x3fe7c1])){this['variables'][_0x3fe7c1]={};}this['variables'][_0x3fe7c1][_0x1c405c]=_0x411c89;}};VoiceDialReport['prototype'][_0x1126('0x10')]=function(_0x3bf090){try{if(this['isNotNull'](_0x3bf090)){logger[_0x1126('0x24')](_0x1126('0x4a'),_0x3bf090[_0x1126('0x16')],util[_0x1126('0x17')](_0x3bf090,{'showHidden':![],'depth':null}));if(this[_0x1126('0x22')][_0x3bf090['uniqueid']]){logger[_0x1126('0x21')](_0x1126('0x4b'),_0x3bf090['uniqueid'],_0x3bf090[_0x1126('0x4c')]);this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]][_0x1126('0x4d')]=moment()[_0x1126('0x19')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x1126('0x22')][_0x3bf090['uniqueid']][_0x1126('0x4e')]=moment(this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]]['endtime'])[_0x1126('0x4f')](this[_0x1126('0x22')][_0x3bf090['uniqueid']][_0x1126('0x50')],_0x1126('0x51'));this[_0x1126('0x22')][_0x3bf090['uniqueid']][_0x1126('0x2f')]=_0x1126('0x52');this[_0x1126('0xa')][_0x1126('0x53')]+=0x1;if(this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]][_0x1126('0x54')]){this[_0x1126('0xa')]['answered']+=0x1;this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]][_0x1126('0x55')]=moment(this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]]['answertime'])[_0x1126('0x4f')](this[_0x1126('0x22')][_0x3bf090['uniqueid']][_0x1126('0x50')],'seconds');this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]]['billableseconds']=moment(this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]][_0x1126('0x4d')])['diff'](this[_0x1126('0x22')][_0x3bf090['uniqueid']]['answertime'],_0x1126('0x51'));this[_0x1126('0xa')][_0x1126('0x56')]+=this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]][_0x1126('0x55')]||0x0;this[_0x1126('0xa')]['sumBillable']+=this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]][_0x1126('0x57')];}this[_0x1126('0xa')][_0x1126('0x58')]+=this[_0x1126('0x22')][_0x3bf090['uniqueid']]['duration'];logger[_0x1126('0x24')](_0x1126('0x59'),_0x3bf090['uniqueid'],util['inspect'](this['channels'][_0x3bf090['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x1126('0x14')](_0x1126('0x5a'),this[_0x1126('0x22')][_0x3bf090['uniqueid']]);logger[_0x1126('0x24')](_0x1126('0x5b'),_0x3bf090[_0x1126('0x16')],util[_0x1126('0x17')](this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]],{'showHidden':![],'depth':null}));ami[_0x1126('0x14')]('custom:dialend',this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]]);logger[_0x1126('0x24')](_0x1126('0x5c'),_0x3bf090[_0x1126('0x16')],util['inspect'](this['channels'][_0x3bf090[_0x1126('0x16')]],{'showHidden':![],'depth':null}));this[_0x1126('0x14')]('voice:outbound',_0x1126('0x5d'),this[_0x1126('0xa')]);logger[_0x1126('0x21')](_0x1126('0x5e'),JSON[_0x1126('0x5f')](this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]]));logger[_0x1126('0x24')](_0x1126('0x60'),_0x3bf090[_0x1126('0x16')],util[_0x1126('0x17')](this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]],{'showHidden':![],'depth':null}));this['emit'](_0x1126('0x26'),_0x1126('0x61'),this[_0x1126('0x22')][_0x3bf090['uniqueid']]);delete this['channels'][_0x3bf090[_0x1126('0x16')]];}else if(this[_0x1126('0x22')][_0x3bf090[_0x1126('0x62')]]){this[_0x1126('0x22')][_0x3bf090['linkedid']]['uniqueid']=this['channels'][_0x3bf090[_0x1126('0x62')]][_0x1126('0x63')];}if(this[_0x1126('0xc')][_0x3bf090[_0x1126('0x16')]]){delete this['variables'][_0x3bf090[_0x1126('0x16')]];}}}catch(_0x5d7014){logger[_0x1126('0x34')](_0x1126('0x64'),_0x3bf090[_0x1126('0x16')],util[_0x1126('0x17')](_0x5d7014,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x1126('0x11')][_0x1126('0x65')]=function(_0x9a61b1){try{if(this['isNotNull'](_0x9a61b1)){logger[_0x1126('0x24')]('[%s][voiceDialReport][newexten]\x20event:',_0x9a61b1[_0x1126('0x16')],util[_0x1126('0x17')](_0x9a61b1,{'showHidden':![],'depth':null}));if(_0x9a61b1['application'][_0x1126('0x66')]()===_0x1126('0x67')){_0x9a61b1['applicationdata']=(_0x9a61b1[_0x1126('0x68')]||_0x9a61b1[_0x1126('0x69')])['toLowerCase']();if(_['startsWith'](_0x9a61b1[_0x1126('0x69')],_0x1126('0x6a'))){if(_[_0x1126('0x13')](this['applications'][_0x9a61b1['uniqueid']]))this['applications'][_0x9a61b1[_0x1126('0x16')]]={};logger['info']('[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s',_0x9a61b1[_0x1126('0x16')],_0x9a61b1['application'],_0x9a61b1[_0x1126('0x69')]);var _0x288a0c=_0x9a61b1['applicationdata'][_0x1126('0x6b')]('=');var _0x375728=_0x288a0c[0x0][_0x1126('0x6c')](/cdr\((.*)\)/);if(_0x375728)this[_0x1126('0xb')][_0x9a61b1[_0x1126('0x16')]][_0x375728[0x1]]=_0x288a0c[0x1];}}}}catch(_0x5e9872){logger[_0x1126('0x34')](_0x1126('0x6d'),_0x9a61b1['uniqueid'],util[_0x1126('0x17')](_0x5e9872,{'showHidden':![],'depth':null}));}};module[_0x1126('0x6e')]=VoiceDialReport;
\ No newline at end of file
+var _0xf494=['channels','channel','substring','lastIndexOf','event','privilege','info','membername','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','debug','custom:dialbegin','error','[%s][voiceDialReport][dialbegin]','syncDialEnd','isNotNull','[%s][voiceDialReport][dialend]\x20event:','dialstatus','connectedlinenum','connectedlinename','answertime','format','YYYY-MM-DD\x20HH:mm:ss','lastevent','connect','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','custom:dialconnect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][dialend]','syncVarSet','[%s][voiceDialReport][varset]\x20event:','addVariable','variable','value','voice','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','outboundrouteid','keys','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','voice:outbound','voice_outbound_channel:save','[%s][voiceDialReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberinterface','memberpenalty','memberrealtime','isNil','syncHangup','[%s][voiceDialReport][hangup]\x20event:','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','endtime','duration','starttime','seconds','complete','answered','holdtime','diff','billableseconds','sumHoldTime','sumBillable','sumDuration','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','custom:voiceDialReport','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','custom:dialend','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','voice_outbound:save','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','stringify','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','voice_outbound_channel:remove','linkedid','[%s][voiceDialReport][hangup]','syncNewExten','application','toLowerCase','applicationdata','appdata','startsWith','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','[%s][voiceDialReport][newexten]','exports','lodash','moment','util','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','outbound','applications','variables','dialbegin','syncDialBegin','bind','dialend','varset','prototype','isUndefined','emit','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','inspect','merge'];(function(_0x1c1ff4,_0x2eb344){var _0x27c7f8=function(_0x281182){while(--_0x281182){_0x1c1ff4['push'](_0x1c1ff4['shift']());}};_0x27c7f8(++_0x2eb344);}(_0xf494,0x1c6));var _0x4f49=function(_0x5db800,_0x9c38a4){_0x5db800=_0x5db800-0x0;var _0x2195d9=_0xf494[_0x5db800];return _0x2195d9;};'use strict';var _=require(_0x4f49('0x0'));var moment=require(_0x4f49('0x1'));var util=require(_0x4f49('0x2'));var Redis=require('ioredis');var config=require(_0x4f49('0x3'));var logger=require(_0x4f49('0x4'))(_0x4f49('0x5'));var ami=require(_0x4f49('0x6'));config[_0x4f49('0x7')]=_[_0x4f49('0x8')](config[_0x4f49('0x7')],{'host':_0x4f49('0x9'),'port':0x18eb});var io=require(_0x4f49('0xa'))(new Redis(config[_0x4f49('0x7')]));function VoiceDialReport(_0x42b0e8){this['channels']=_0x42b0e8['outboundChannels'];this[_0x4f49('0xb')]=_0x42b0e8[_0x4f49('0xb')];this[_0x4f49('0xc')]={};this[_0x4f49('0xd')]={};ami['on'](_0x4f49('0xe'),this[_0x4f49('0xf')][_0x4f49('0x10')](this));ami['on'](_0x4f49('0x11'),this['syncDialEnd'][_0x4f49('0x10')](this));ami['on'](_0x4f49('0x12'),this['syncVarSet'][_0x4f49('0x10')](this));ami['on']('hangup',this['syncHangup'][_0x4f49('0x10')](this));}VoiceDialReport[_0x4f49('0x13')]['isNotNull']=function(_0x1e1c37){return _0x1e1c37!==null&&!_[_0x4f49('0x14')](_0x1e1c37);};VoiceDialReport[_0x4f49('0x13')][_0x4f49('0x15')]=function(_0x1a0f1e,_0x2f0131,_0xfdb477){io['to'](_0x1a0f1e)['emit'](_0x2f0131,_0xfdb477);};VoiceDialReport[_0x4f49('0x13')][_0x4f49('0xf')]=function(_0x415e83){try{if(this['isNotNull'](_0x415e83)){logger['debug'](_0x4f49('0x16'),_0x415e83[_0x4f49('0x17')],util[_0x4f49('0x18')](_0x415e83,{'showHidden':![],'depth':null}));if(this['channels'][_0x415e83[_0x4f49('0x17')]]){_[_0x4f49('0x19')](this[_0x4f49('0x1a')][_0x415e83['uniqueid']],{'starttime':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'lastevent':'called','interface':_0x415e83[_0x4f49('0x1b')][_0x4f49('0x1c')](0x0,_0x415e83[_0x4f49('0x1b')][_0x4f49('0x1d')]('-')),'membername':_0x415e83['channel'][_0x4f49('0x1c')](_0x415e83[_0x4f49('0x1b')][_0x4f49('0x1d')]('/')+0x1,_0x415e83[_0x4f49('0x1b')][_0x4f49('0x1d')]('-'))},_['omit'](_0x415e83,[_0x4f49('0x1e'),_0x4f49('0x1f')]));logger[_0x4f49('0x20')]('[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called',_0x415e83[_0x4f49('0x17')],this[_0x4f49('0x1a')][_0x415e83[_0x4f49('0x17')]][_0x4f49('0x21')],this[_0x4f49('0x1a')][_0x415e83[_0x4f49('0x17')]]['interface']);logger['debug'](_0x4f49('0x22'),_0x415e83[_0x4f49('0x17')],util['inspect'](this[_0x4f49('0x1a')][_0x415e83[_0x4f49('0x17')]],{'showHidden':![],'depth':null}));if(this[_0x4f49('0xc')][_0x415e83['uniqueid']])_[_0x4f49('0x19')](this[_0x4f49('0x1a')][_0x415e83[_0x4f49('0x17')]],this[_0x4f49('0xc')][_0x415e83[_0x4f49('0x17')]]);this[_0x4f49('0x15')]('voice:outbound','voice_outbound_channel:save',this[_0x4f49('0x1a')][_0x415e83[_0x4f49('0x17')]]);logger[_0x4f49('0x23')]('[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:',_0x415e83[_0x4f49('0x17')],util[_0x4f49('0x18')](this[_0x4f49('0x1a')][_0x415e83['uniqueid']],{'showHidden':![],'depth':null}));ami['emit'](_0x4f49('0x24'),this[_0x4f49('0x1a')][_0x415e83[_0x4f49('0x17')]]);}}}catch(_0x5e7076){logger[_0x4f49('0x25')](_0x4f49('0x26'),_0x415e83[_0x4f49('0x17')],util[_0x4f49('0x18')](_0x5e7076,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x4f49('0x13')][_0x4f49('0x27')]=function(_0x32c066){try{if(this[_0x4f49('0x28')](_0x32c066)){logger[_0x4f49('0x23')](_0x4f49('0x29'),_0x32c066[_0x4f49('0x17')],util[_0x4f49('0x18')](_0x32c066,{'showHidden':![],'depth':null}));if(this[_0x4f49('0x1a')][_0x32c066[_0x4f49('0x17')]]){this[_0x4f49('0x1a')][_0x32c066[_0x4f49('0x17')]][_0x4f49('0x2a')]=_0x32c066[_0x4f49('0x2a')];if(_0x32c066[_0x4f49('0x2a')]==='ANSWER'){this[_0x4f49('0x1a')][_0x32c066[_0x4f49('0x17')]][_0x4f49('0x2b')]=_0x32c066[_0x4f49('0x2b')];this[_0x4f49('0x1a')][_0x32c066[_0x4f49('0x17')]][_0x4f49('0x2c')]=_0x32c066[_0x4f49('0x2c')];this[_0x4f49('0x1a')][_0x32c066[_0x4f49('0x17')]][_0x4f49('0x2d')]=moment()[_0x4f49('0x2e')](_0x4f49('0x2f'));this['channels'][_0x32c066[_0x4f49('0x17')]][_0x4f49('0x30')]=_0x4f49('0x31');logger[_0x4f49('0x20')](_0x4f49('0x32'),_0x32c066[_0x4f49('0x17')],_0x32c066[_0x4f49('0x1b')][_0x4f49('0x1c')](_0x32c066[_0x4f49('0x1b')][_0x4f49('0x1d')]('/')+0x1,_0x32c066[_0x4f49('0x1b')][_0x4f49('0x1d')]('-')));logger[_0x4f49('0x23')](_0x4f49('0x33'),_0x32c066['uniqueid'],util[_0x4f49('0x18')](this[_0x4f49('0x1a')][_0x32c066['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x4f49('0x15')](_0x4f49('0x34'),this['channels'][_0x32c066[_0x4f49('0x17')]]);}logger[_0x4f49('0x23')](_0x4f49('0x35'),_0x32c066[_0x4f49('0x17')],util[_0x4f49('0x18')](this[_0x4f49('0x1a')][_0x32c066[_0x4f49('0x17')]],{'showHidden':![],'depth':null}));this['emit']('voice:outbound','voice_outbound_channel:save',this[_0x4f49('0x1a')][_0x32c066[_0x4f49('0x17')]]);}}}catch(_0x2e4355){logger[_0x4f49('0x25')](_0x4f49('0x36'),_0x32c066[_0x4f49('0x17')],util[_0x4f49('0x18')](_0x2e4355,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x4f49('0x13')][_0x4f49('0x37')]=function(_0x486b82){try{if(this['isNotNull'](_0x486b82)){logger[_0x4f49('0x23')](_0x4f49('0x38'),_0x486b82[_0x4f49('0x17')],util['inspect'](_0x486b82,{'showHidden':![],'depth':null}));this[_0x4f49('0x39')](_0x486b82['uniqueid'],_['keys'](_0x486b82[_0x4f49('0x3a')])[0x0],_0x486b82[_0x4f49('0x3b')]);if(this[_0x4f49('0x28')](_0x486b82['variable'])&&this[_0x4f49('0x28')](_0x486b82[_0x4f49('0x3a')]['outboundrouteid'])){if(_[_0x4f49('0x14')](this['channels'][_0x486b82[_0x4f49('0x17')]])){this[_0x4f49('0x1a')][_0x486b82[_0x4f49('0x17')]]={'routeId':_0x486b82['value'],'variables':this[_0x4f49('0xd')][_0x486b82[_0x4f49('0x17')]],'motionChannel':_0x4f49('0x3c')};logger[_0x4f49('0x20')](_0x4f49('0x3d'),_0x486b82[_0x4f49('0x17')],_0x486b82[_0x4f49('0x3a')][_0x4f49('0x3e')],_[_0x4f49('0x3f')](_0x486b82[_0x4f49('0x3a')])[0x0],_0x486b82['value']);logger[_0x4f49('0x23')](_0x4f49('0x40'),_0x486b82['uniqueid'],util[_0x4f49('0x18')](this['channels'][_0x486b82[_0x4f49('0x17')]],{'showHidden':![],'depth':null}));this[_0x4f49('0x15')](_0x4f49('0x41'),_0x4f49('0x42'),this['channels'][_0x486b82[_0x4f49('0x17')]]);}}}}catch(_0x2c426b){logger[_0x4f49('0x25')](_0x4f49('0x43'),_0x486b82[_0x4f49('0x17')],util[_0x4f49('0x18')](_0x2c426b,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x4f49('0x13')][_0x4f49('0x39')]=function(_0x259ec1,_0x3520b2,_0x1be59a){var _0x4482f7=[_0x4f49('0x44'),_0x4f49('0x45'),_0x4f49('0x46'),_0x4f49('0x47'),'rtpaudioqosloss','rtpaudioqoslossbridged',_0x4f49('0x48'),_0x4f49('0x49'),_0x4f49('0x4a'),_0x4f49('0x4b'),_0x4f49('0x4c'),_0x4f49('0x4d'),_0x4f49('0x4e'),'memberdynamic',_0x4f49('0x4f'),'memberlastcall',_0x4f49('0x21'),_0x4f49('0x50'),_0x4f49('0x51')];if(!_[_0x4f49('0x52')](_0x3520b2)&&!_['includes'](_0x4482f7,_0x3520b2)){if(_[_0x4f49('0x14')](this['variables'][_0x259ec1])){this['variables'][_0x259ec1]={};}this[_0x4f49('0xd')][_0x259ec1][_0x3520b2]=_0x1be59a;}};VoiceDialReport[_0x4f49('0x13')][_0x4f49('0x53')]=function(_0x26ae33){try{if(this['isNotNull'](_0x26ae33)){logger['debug'](_0x4f49('0x54'),_0x26ae33[_0x4f49('0x17')],util['inspect'](_0x26ae33,{'showHidden':![],'depth':null}));if(this[_0x4f49('0x1a')][_0x26ae33['uniqueid']]){logger['info'](_0x4f49('0x55'),_0x26ae33['uniqueid'],_0x26ae33[_0x4f49('0x56')]);this['channels'][_0x26ae33[_0x4f49('0x17')]][_0x4f49('0x57')]=moment()[_0x4f49('0x2e')](_0x4f49('0x2f'));this[_0x4f49('0x1a')][_0x26ae33[_0x4f49('0x17')]][_0x4f49('0x58')]=moment(this[_0x4f49('0x1a')][_0x26ae33['uniqueid']][_0x4f49('0x57')])['diff'](this[_0x4f49('0x1a')][_0x26ae33[_0x4f49('0x17')]][_0x4f49('0x59')],_0x4f49('0x5a'));this[_0x4f49('0x1a')][_0x26ae33[_0x4f49('0x17')]]['lastevent']=_0x4f49('0x5b');this[_0x4f49('0xb')]['total']+=0x1;if(this['channels'][_0x26ae33[_0x4f49('0x17')]][_0x4f49('0x2d')]){this[_0x4f49('0xb')][_0x4f49('0x5c')]+=0x1;this[_0x4f49('0x1a')][_0x26ae33['uniqueid']][_0x4f49('0x5d')]=moment(this['channels'][_0x26ae33[_0x4f49('0x17')]][_0x4f49('0x2d')])[_0x4f49('0x5e')](this['channels'][_0x26ae33[_0x4f49('0x17')]][_0x4f49('0x59')],_0x4f49('0x5a'));this[_0x4f49('0x1a')][_0x26ae33['uniqueid']][_0x4f49('0x5f')]=moment(this[_0x4f49('0x1a')][_0x26ae33['uniqueid']][_0x4f49('0x57')])[_0x4f49('0x5e')](this[_0x4f49('0x1a')][_0x26ae33[_0x4f49('0x17')]][_0x4f49('0x2d')],_0x4f49('0x5a'));this[_0x4f49('0xb')][_0x4f49('0x60')]+=this['channels'][_0x26ae33[_0x4f49('0x17')]][_0x4f49('0x5d')]||0x0;this[_0x4f49('0xb')][_0x4f49('0x61')]+=this[_0x4f49('0x1a')][_0x26ae33[_0x4f49('0x17')]][_0x4f49('0x5f')];}this['outbound'][_0x4f49('0x62')]+=this['channels'][_0x26ae33[_0x4f49('0x17')]][_0x4f49('0x58')];logger[_0x4f49('0x23')](_0x4f49('0x63'),_0x26ae33[_0x4f49('0x17')],util[_0x4f49('0x18')](this[_0x4f49('0x1a')][_0x26ae33[_0x4f49('0x17')]],{'showHidden':![],'depth':null}));ami[_0x4f49('0x15')](_0x4f49('0x64'),this['channels'][_0x26ae33[_0x4f49('0x17')]]);logger[_0x4f49('0x23')](_0x4f49('0x65'),_0x26ae33[_0x4f49('0x17')],util['inspect'](this['channels'][_0x26ae33[_0x4f49('0x17')]],{'showHidden':![],'depth':null}));ami['emit'](_0x4f49('0x66'),this[_0x4f49('0x1a')][_0x26ae33[_0x4f49('0x17')]]);logger[_0x4f49('0x23')](_0x4f49('0x67'),_0x26ae33[_0x4f49('0x17')],util[_0x4f49('0x18')](this[_0x4f49('0x1a')][_0x26ae33[_0x4f49('0x17')]],{'showHidden':![],'depth':null}));this[_0x4f49('0x15')](_0x4f49('0x41'),_0x4f49('0x68'),this[_0x4f49('0xb')]);logger[_0x4f49('0x20')](_0x4f49('0x69'),JSON[_0x4f49('0x6a')](this[_0x4f49('0x1a')][_0x26ae33[_0x4f49('0x17')]]));logger[_0x4f49('0x23')](_0x4f49('0x6b'),_0x26ae33[_0x4f49('0x17')],util[_0x4f49('0x18')](this[_0x4f49('0x1a')][_0x26ae33[_0x4f49('0x17')]],{'showHidden':![],'depth':null}));this[_0x4f49('0x15')]('voice:outbound',_0x4f49('0x6c'),this['channels'][_0x26ae33[_0x4f49('0x17')]]);delete this[_0x4f49('0x1a')][_0x26ae33[_0x4f49('0x17')]];}else if(this[_0x4f49('0x1a')][_0x26ae33[_0x4f49('0x6d')]]){this[_0x4f49('0x1a')][_0x26ae33[_0x4f49('0x6d')]][_0x4f49('0x17')]=this[_0x4f49('0x1a')][_0x26ae33['linkedid']]['destuniqueid'];}if(this[_0x4f49('0xd')][_0x26ae33['uniqueid']]){delete this[_0x4f49('0xd')][_0x26ae33[_0x4f49('0x17')]];}}}catch(_0x1f57cb){logger[_0x4f49('0x25')](_0x4f49('0x6e'),_0x26ae33['uniqueid'],util['inspect'](_0x1f57cb,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x4f49('0x13')][_0x4f49('0x6f')]=function(_0x4bdd1b){try{if(this[_0x4f49('0x28')](_0x4bdd1b)){logger[_0x4f49('0x23')]('[%s][voiceDialReport][newexten]\x20event:',_0x4bdd1b[_0x4f49('0x17')],util['inspect'](_0x4bdd1b,{'showHidden':![],'depth':null}));if(_0x4bdd1b[_0x4f49('0x70')][_0x4f49('0x71')]()==='set'){_0x4bdd1b[_0x4f49('0x72')]=(_0x4bdd1b[_0x4f49('0x73')]||_0x4bdd1b[_0x4f49('0x72')])[_0x4f49('0x71')]();if(_[_0x4f49('0x74')](_0x4bdd1b[_0x4f49('0x72')],'cdr(')){if(_[_0x4f49('0x14')](this['applications'][_0x4bdd1b[_0x4f49('0x17')]]))this['applications'][_0x4bdd1b[_0x4f49('0x17')]]={};logger['info'](_0x4f49('0x75'),_0x4bdd1b[_0x4f49('0x17')],_0x4bdd1b[_0x4f49('0x70')],_0x4bdd1b[_0x4f49('0x72')]);var _0x47af99=_0x4bdd1b[_0x4f49('0x72')]['split']('=');var _0x5ddfe4=_0x47af99[0x0]['match'](/cdr\((.*)\)/);if(_0x5ddfe4)this[_0x4f49('0xc')][_0x4bdd1b['uniqueid']][_0x5ddfe4[0x1]]=_0x47af99[0x1];}}}}catch(_0x4938a6){logger[_0x4f49('0x25')](_0x4f49('0x76'),_0x4bdd1b[_0x4f49('0x17')],util['inspect'](_0x4938a6,{'showHidden':![],'depth':null}));}};module[_0x4f49('0x77')]=VoiceDialReport;
\ No newline at end of file
index 612b715..e4e97db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57d1=['transfererchannel','[%s][voiceQueueReport][blindtransfer]','[%s][voiceQueueReport][musiconholdstart]','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','mohstarttime','syncMusicOnHoldStop','[%s][voiceQueueReport][musiconholdstop]','mohtime','syncNewExten','[%s][voiceQueueReport][newexten]\x20event:','toLowerCase','applicationdata','appdata','CDR(routeAlias)','cdr(','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s','application','match','[%s][voiceQueueReport][newexten]','exports','lodash','moment','md5','../../../config/environment','../../../config/logger','ami','defaults','redis','socket.io-emitter','prototype','enqueue','tail','finally','sequence','queueReports','agents','channels','queueChannels','voiceQueues','flagQueueSummary','campaigns','variables','syncQueueSummary','bind','queuesummarycomplete','queuecallerjoin','syncQueueCallerJoin','syncQueueCallerAbandon','syncQueueCallerLeave','agentcomplete','agentconnect','syncAgentConnect','varset','fullybooted','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopQueueShow','isEmpty','hasOwnProperty','originated','talking','pTalking','waiting','unlockRR','clearZombieChannels','switch','isNil','channel','catch','message','No\x20such\x20channel','error','inspect','[%s][voiceQueueReport][checkVariables]','syncFullyBooted','[FullyBooted]\x20clear\x20realtime','clearQueueReport','emitVoiceQueueChannelRemove','clearqueuereport','emit','emitVoiceQueueChannelSave','debug','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','format','voice:queue:%s','name','voice_queue_channel:save','voice_queue_presence:save',']\x20sending\x20voice_queue_channel:remove\x20event:','voice_queue_presence:remove','emitVoiceQueueSummary','inbound','strategy','available','loggedIn','sumDuration','sumHoldTime','total','type','abandoned','Trunk','active','callerid','Interval','stringify','[voiceQueueReport][','voice_queue:save','isNotNull','isUndefined','Action','queues','[voiceQueueReport][queues]','loopQueueSummary','queuesummary','then','[voiceQueueReport][queuesummary]','queue','[voiceQueueReport][queuesummary]\x20event:','info','[voiceQueueReport][queuesummary]\x20name:%s','countBy','callers','toNumber','custom:queuesummary','syncQueueSummaryComplete','[voiceQueueReport][queuesummarycomplete]\x20event:','[%s][voiceQueueReport][queuecallerjoin]','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','position','count','routealias','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','merge','keys','push','[%s][voiceQueueReport][queuecallerabandon]','last','holdtime','queuecallerabandon','queuecallerabandonAt','queuecallerexitreason','ABANDONED','lastAssignedTo','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','[%s][voiceQueueReport][queuecallerleave]','queuecallerleaveAt','connectedlinenum','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','[%s][voiceQueueReport][agentconnect]','queuecallercomplete','COMPLETEDBYAGENT','syncAgentComplete','[%s][voiceQueueReport][agentcomplete]','membername','queuecallerexit','queuecallerexitAt','COMPLETED','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','startsWith','local/','linkedid','seconds','FORWARD','transferexten','destexten','transferuniqueid','toUpperCase','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','syncVarSet','addVariable','variable','value','queuestatus','CONTINUE','TIMEOUT','lastevent','timeout','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','EXITWITHKEY','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','[%s][voiceQueueReport][varset]','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipuri','bridgepeer','membercalls','memberdynamic','memberlastcall','memberpenalty','memberrealtime','includes','handleHangup','length','unmanaged','diff','answered','sumBillable','milliseconds','queuecallercompleteAt','transfer','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','custom:queuecallerunmanaged','custom:queuecallerabandon','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','ATTENDEDTRANSFER','hangup','syncHangup','cause-txt','transferid','[%s][voiceQueueReport][hangup]','transfereeuniqueid','secondtransfererexten','transfertype','ATTENDED','secondtransfereruniqueid','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','BLIND','extension','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','BlindTransfer','context'];(function(_0x59f5ea,_0x26ac13){var _0x5644c6=function(_0x5a4445){while(--_0x5a4445){_0x59f5ea['push'](_0x59f5ea['shift']());}};_0x5644c6(++_0x26ac13);}(_0x57d1,0x1ee));var _0x157d=function(_0x2704e5,_0x43c4e5){_0x2704e5=_0x2704e5-0x0;var _0x26adc9=_0x57d1[_0x2704e5];return _0x26adc9;};'use strict';var _=require(_0x157d('0x0'));var moment=require(_0x157d('0x1'));var util=require('util');var md5=require(_0x157d('0x2'));var Redis=require('ioredis');var config=require(_0x157d('0x3'));var logger=require(_0x157d('0x4'))(_0x157d('0x5'));var ami=require('../ami');var QueueReport=require('../model/queueReport');config['redis']=_[_0x157d('0x6')](config[_0x157d('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0x157d('0x8'))(new Redis(config[_0x157d('0x7')]));var Sequence=function(){};Sequence[_0x157d('0x9')][_0x157d('0xa')]=function(_0x1e8fb8){this['tail']=this[_0x157d('0xb')]?this['tail'][_0x157d('0xc')](_0x1e8fb8):_0x1e8fb8();};function VoiceQueueReport(_0x478638){this[_0x157d('0xd')]=new Sequence();this[_0x157d('0xe')]={};this[_0x157d('0xf')]=_0x478638['agents'];this[_0x157d('0x10')]=_0x478638[_0x157d('0x11')];this['voiceQueues']=_0x478638[_0x157d('0x12')];this[_0x157d('0x13')]=!![];this[_0x157d('0x14')]=_0x478638[_0x157d('0x14')];this[_0x157d('0x15')]={};ami['on']('queuesummary',this[_0x157d('0x16')][_0x157d('0x17')](this));ami['on'](_0x157d('0x18'),this['syncQueueSummaryComplete'][_0x157d('0x17')](this));ami['on'](_0x157d('0x19'),this[_0x157d('0x1a')][_0x157d('0x17')](this));ami['on']('queuecallerabandon',this[_0x157d('0x1b')][_0x157d('0x17')](this));ami['on']('queuecallerleave',this[_0x157d('0x1c')][_0x157d('0x17')](this));ami['on'](_0x157d('0x1d'),this['syncAgentComplete'][_0x157d('0x17')](this));ami['on'](_0x157d('0x1e'),this[_0x157d('0x1f')][_0x157d('0x17')](this));ami['on'](_0x157d('0x20'),this['syncVarSet'][_0x157d('0x17')](this));ami['on']('hangup',this['syncHangup'][_0x157d('0x17')](this));ami['on'](_0x157d('0x21'),this['syncFullyBooted'][_0x157d('0x17')](this));ami['on'](_0x157d('0x22'),this[_0x157d('0x23')][_0x157d('0x17')](this));ami['on'](_0x157d('0x24'),this['syncMusicOnHoldStop'][_0x157d('0x17')](this));ami['on'](_0x157d('0x25'),this[_0x157d('0x26')][_0x157d('0x17')](this));ami['on'](_0x157d('0x27'),this[_0x157d('0x28')][_0x157d('0x17')](this));this['loopQueueSummary']();this[_0x157d('0x29')]();}function clearChannels(_0x8eb69d){if(!_[_0x157d('0x2a')](_0x8eb69d)){for(var _0xe4395b in _0x8eb69d){if(_0x8eb69d[_0x157d('0x2b')](_0xe4395b)){delete _0x8eb69d[_0xe4395b];}}}}function clearCampaigns(_0x472cdc){if(!_[_0x157d('0x2a')](_0x472cdc)){for(var _0x48ef32 in _0x472cdc){if(_0x472cdc[_0x157d('0x2b')](_0x48ef32)){_0x472cdc[_0x48ef32][_0x157d('0x2c')]=0x0;}}}}function clearVoiceQueues(_0x519821){if(!_['isEmpty'](_0x519821)){for(var _0x215403 in _0x519821){if(_0x519821[_0x157d('0x2b')](_0x215403)){_0x519821[_0x215403]['originated']=0x0;_0x519821[_0x215403][_0x157d('0x2d')]=0x0;_0x519821[_0x215403][_0x157d('0x2e')]=0x0;_0x519821[_0x215403][_0x157d('0x2f')]=0x0;_0x519821[_0x215403]['queueStatusComplete']=!![];}}}}function clearAgentBooked(_0x3ef649){if(!_[_0x157d('0x2a')](_0x3ef649)){for(var _0x45cb7e in _0x3ef649){if(_0x3ef649[_0x157d('0x2b')](_0x45cb7e)){_0x3ef649[_0x45cb7e][_0x157d('0x30')]=!![];}}}}VoiceQueueReport[_0x157d('0x9')][_0x157d('0x31')]=function(){var _0x5ed7be=this;for(var _0x2b1a7b in this['channels']){if(this[_0x157d('0x10')][_0x157d('0x2b')](_0x2b1a7b)&&!this[_0x157d('0x10')][_0x2b1a7b][_0x157d('0x32')]){this[_0x157d('0xd')][_0x157d('0xa')](function(){if(!_[_0x157d('0x33')](_0x5ed7be[_0x157d('0x10')][_0x2b1a7b])){return ami['Action']({'action':'status','channel':_0x5ed7be['channels'][_0x2b1a7b][_0x157d('0x34')]})[_0x157d('0x35')](function(_0xf21716){if(_0xf21716[_0x157d('0x36')]===_0x157d('0x37')){setTimeout(function(){if(_0x5ed7be[_0x157d('0x10')][_0x2b1a7b]){delete _0x5ed7be[_0x157d('0x10')][_0x2b1a7b];logger[_0x157d('0x38')]('[%s][voiceQueueReport][checkChannel]',_0x2b1a7b,util[_0x157d('0x39')](_0xf21716,{'showHidden':![],'depth':null}));}if(_0x5ed7be['queueReports'][_0x2b1a7b]){delete _0x5ed7be[_0x157d('0xe')][_0x2b1a7b];logger[_0x157d('0x38')]('[%s][voiceQueueReport][checkQueueReport]',_0x2b1a7b,util[_0x157d('0x39')](_0xf21716,{'showHidden':![],'depth':null}));}if(_0x5ed7be['variables'][_0x2b1a7b]){delete _0x5ed7be[_0x157d('0x15')][_0x2b1a7b];logger[_0x157d('0x38')](_0x157d('0x3a'),_0x2b1a7b,util[_0x157d('0x39')](_0xf21716,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport['prototype'][_0x157d('0x3b')]=function(){logger[_0x157d('0x38')](_0x157d('0x3c'));clearChannels(this[_0x157d('0x10')]);this[_0x157d('0x3d')](this['queueReports']);clearAgentBooked(this[_0x157d('0xf')]);clearVoiceQueues(this[_0x157d('0x12')]);clearCampaigns(this['campaigns']);};VoiceQueueReport[_0x157d('0x9')][_0x157d('0x3d')]=function(_0xda4806){var _0x18c6b3=this;if(!_[_0x157d('0x2a')](_0xda4806)){for(var _0x203292 in _0xda4806){if(_0xda4806[_0x157d('0x2b')](_0x203292)){_0x18c6b3[_0x157d('0x3e')](_0xda4806[_0x203292],_0x157d('0x3f'));delete _0xda4806[_0x203292];}}}};VoiceQueueReport[_0x157d('0x9')]['emit']=function(_0x58738f,_0x23aa28,_0x50a714){io['to'](_0x58738f)[_0x157d('0x40')](_0x23aa28,_0x50a714);};VoiceQueueReport[_0x157d('0x9')][_0x157d('0x41')]=function(_0x460863,_0x193631){logger[_0x157d('0x42')](_0x157d('0x43')+_0x193631+_0x157d('0x44'),_0x460863[_0x157d('0x45')],util[_0x157d('0x39')](_0x460863,{'showHidden':![],'depth':null}));this[_0x157d('0x40')](util[_0x157d('0x46')](_0x157d('0x47'),_0x460863[_0x157d('0x48')]),_0x157d('0x49'),_0x460863);io['emit'](_0x157d('0x4a'),_0x460863);};VoiceQueueReport['prototype'][_0x157d('0x3e')]=function(_0x2e9d4b,_0x259460){logger[_0x157d('0x42')](_0x157d('0x43')+_0x259460+_0x157d('0x4b'),_0x2e9d4b['uniqueid'],util['inspect'](_0x2e9d4b,{'showHidden':![],'depth':null}));if(_0x2e9d4b['queuecallerexitreason']==='ATTENDEDTRANSFER')return;this[_0x157d('0x40')](util[_0x157d('0x46')](_0x157d('0x47'),_0x2e9d4b['name']),'voice_queue_channel:remove',_0x2e9d4b);io['emit'](_0x157d('0x4c'),_0x2e9d4b);};VoiceQueueReport[_0x157d('0x9')][_0x157d('0x4d')]=function(_0x2a7897,_0x1291c2){if(_0x2a7897['type']===_0x157d('0x4e')){var _0x6c13aa={'id':_0x2a7897['id'],'name':_0x2a7897[_0x157d('0x48')],'strategy':_0x2a7897[_0x157d('0x4f')],'answered':_0x2a7897['answered'],'available':_0x2a7897[_0x157d('0x50')],'loggedIn':_0x2a7897[_0x157d('0x51')],'pTalking':_0x2a7897[_0x157d('0x2e')],'sumBillable':_0x2a7897['sumBillable'],'sumDuration':_0x2a7897[_0x157d('0x52')],'sumHoldTime':_0x2a7897[_0x157d('0x53')]||0x0,'talking':_0x2a7897[_0x157d('0x2d')],'total':_0x2a7897[_0x157d('0x54')],'type':_0x2a7897[_0x157d('0x55')],'unmanaged':_0x2a7897['unmanaged'],'abandoned':_0x2a7897[_0x157d('0x56')],'waiting':_0x2a7897['waiting']};if(_0x2a7897[_0x157d('0x57')]){_0x6c13aa[_0x157d('0x57')]={'id':_0x2a7897[_0x157d('0x57')]['id'],'name':_0x2a7897[_0x157d('0x57')][_0x157d('0x48')],'active':_0x2a7897[_0x157d('0x57')][_0x157d('0x58')],'callerid':_0x2a7897[_0x157d('0x57')][_0x157d('0x59')]};}if(_0x2a7897[_0x157d('0x5a')]){_0x6c13aa['Interval']={'id':_0x2a7897[_0x157d('0x5a')]['id'],'name':_0x2a7897[_0x157d('0x5a')][_0x157d('0x48')]};}var _0xe65597=md5(JSON[_0x157d('0x5b')](_0x6c13aa));if(_0x2a7897['md5']!==_0xe65597){_0x2a7897[_0x157d('0x2')]=_0xe65597;logger['debug'](_0x157d('0x5c')+_0x1291c2+']\x20sending\x20voice_queue:save\x20event:',util[_0x157d('0x39')](_0x6c13aa,{'showHidden':![],'depth':null}));this[_0x157d('0x40')](util[_0x157d('0x46')](_0x157d('0x47'),_0x6c13aa['name']),_0x157d('0x5d'),_0x6c13aa);}}};VoiceQueueReport[_0x157d('0x9')][_0x157d('0x5e')]=function(_0x58085c){return _0x58085c!==null&&!_[_0x157d('0x5f')](_0x58085c);};VoiceQueueReport['prototype'][_0x157d('0x29')]=function(){var _0xbc7ee6=this;setInterval(function(){_0xbc7ee6[_0x157d('0x31')]();ami[_0x157d('0x60')]({'action':_0x157d('0x61')})[_0x157d('0x35')](function(_0x28940d){logger['error'](_0x157d('0x62'),util[_0x157d('0x39')](_0x28940d,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport['prototype'][_0x157d('0x63')]=function(){var _0x2a7c4c=this;setInterval(function(){if(_0x2a7c4c[_0x157d('0x13')]){return ami[_0x157d('0x60')]({'action':_0x157d('0x64')})[_0x157d('0x65')](function(){_0x2a7c4c[_0x157d('0x13')]=![];})[_0x157d('0x35')](function(_0x4e9054){logger[_0x157d('0x38')](_0x157d('0x66'),util[_0x157d('0x39')](_0x4e9054,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0x157d('0x9')][_0x157d('0x16')]=function(_0x2f1857){try{if(this['isNotNull'](_0x2f1857)&&this[_0x157d('0x5e')](_0x2f1857[_0x157d('0x67')])){logger['debug'](_0x157d('0x68'),util[_0x157d('0x39')](_0x2f1857,{'showHidden':![],'depth':null}));if(this['voiceQueues'][_0x2f1857[_0x157d('0x67')]]){logger[_0x157d('0x69')](_0x157d('0x6a'),_0x2f1857[_0x157d('0x67')]);var _0x3183df=_[_0x157d('0x6b')](this[_0x157d('0x10')],_0x157d('0x67'))[_0x2f1857[_0x157d('0x67')]]||0x0;var _0xdfd5ac=_0x3183df-_0x2f1857[_0x157d('0x6c')];if(this['voiceQueues'][_0x2f1857[_0x157d('0x67')]][_0x157d('0x2f')]!==_['toNumber'](_0x2f1857[_0x157d('0x6c')])||this['voiceQueues'][_0x2f1857['queue']][_0x157d('0x51')]!==_[_0x157d('0x6d')](_0x2f1857['loggedin'])||this[_0x157d('0x12')][_0x2f1857[_0x157d('0x67')]][_0x157d('0x50')]!==_[_0x157d('0x6d')](_0x2f1857['available'])||this['voiceQueues'][_0x2f1857[_0x157d('0x67')]]['talking']!==_0xdfd5ac){this[_0x157d('0x12')][_0x2f1857[_0x157d('0x67')]][_0x157d('0x2f')]=_[_0x157d('0x6d')](_0x2f1857[_0x157d('0x6c')]);this[_0x157d('0x12')][_0x2f1857['queue']][_0x157d('0x51')]=_[_0x157d('0x6d')](_0x2f1857['loggedin']);this[_0x157d('0x12')][_0x2f1857[_0x157d('0x67')]][_0x157d('0x50')]=_[_0x157d('0x6d')](_0x2f1857[_0x157d('0x50')]);this[_0x157d('0x12')][_0x2f1857['queue']][_0x157d('0x2d')]=_0xdfd5ac>0x0?_0xdfd5ac:0x0;this['voiceQueues'][_0x2f1857[_0x157d('0x67')]]['talking']=this[_0x157d('0x12')][_0x2f1857['queue']][_0x157d('0x2d')]>_[_0x157d('0x6d')](_0x2f1857['loggedin'])?_[_0x157d('0x6d')](_0x2f1857['loggedin']):this[_0x157d('0x12')][_0x2f1857['queue']][_0x157d('0x2d')];this['emitVoiceQueueSummary'](this[_0x157d('0x12')][_0x2f1857[_0x157d('0x67')]],'queuesummary');}logger['debug']('[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:',util['inspect'](this[_0x157d('0x12')][_0x2f1857['queue']],{'showHidden':![],'depth':null}));ami['emit'](_0x157d('0x6e'),this['voiceQueues'][_0x2f1857[_0x157d('0x67')]]);}}}catch(_0xce1269){logger[_0x157d('0x38')](_0x157d('0x66'),util[_0x157d('0x39')](_0xce1269,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x157d('0x9')][_0x157d('0x6f')]=function(_0x36881e){logger[_0x157d('0x42')](_0x157d('0x70'),util[_0x157d('0x39')](_0x36881e,{'showHidden':![],'depth':null}));ami[_0x157d('0x40')]('custom:queuesummarycomplete',{});this[_0x157d('0x13')]=!![];};VoiceQueueReport['prototype']['syncQueueCallerJoin']=function(_0x518a6b){try{if(this['isNotNull'](_0x518a6b)){logger[_0x157d('0x42')](_0x157d('0x71'),_0x518a6b[_0x157d('0x45')],util[_0x157d('0x39')](_0x518a6b,{'showHidden':![],'depth':null}));if(_['isUndefined'](this['queueReports'][_0x518a6b[_0x157d('0x45')]]))this[_0x157d('0xe')][_0x518a6b['uniqueid']]=[];if(_['isUndefined'](this[_0x157d('0x10')][_0x518a6b[_0x157d('0x45')]]))this[_0x157d('0x10')][_0x518a6b[_0x157d('0x45')]]={};var _0x9a9a3b=new QueueReport();_0x9a9a3b[_0x157d('0x48')]=_0x518a6b['queue'];_0x9a9a3b[_0x157d('0x55')]=this[_0x157d('0x12')][_0x9a9a3b[_0x157d('0x48')]]&&this['voiceQueues'][_0x9a9a3b[_0x157d('0x48')]][_0x157d('0x55')]?this['voiceQueues'][_0x9a9a3b['name']][_0x157d('0x55')]||'inbound':_0x157d('0x4e');_0x9a9a3b[_0x157d('0x67')]=_0x518a6b['queue'];_0x9a9a3b[_0x157d('0x72')]=moment()[_0x157d('0x46')](_0x157d('0x73'));_0x9a9a3b[_0x157d('0x74')]=_0x518a6b['position'];_0x9a9a3b[_0x157d('0x75')]=_0x518a6b[_0x157d('0x75')];_0x9a9a3b['uniqueid']=_0x518a6b[_0x157d('0x45')];_0x9a9a3b[_0x157d('0x76')]=this[_0x157d('0x10')][_0x518a6b[_0x157d('0x45')]][_0x157d('0x76')];logger[_0x157d('0x69')](_0x157d('0x77'),_0x9a9a3b[_0x157d('0x48')],_0x9a9a3b['type']);_[_0x157d('0x78')](_0x9a9a3b,_['pick'](_0x518a6b,_[_0x157d('0x79')](_0x9a9a3b)));this[_0x157d('0xe')][_0x518a6b[_0x157d('0x45')]][_0x157d('0x7a')](_0x9a9a3b);this['channels'][_0x518a6b[_0x157d('0x45')]]=_0x9a9a3b;this[_0x157d('0x41')](_0x9a9a3b,_0x157d('0x19'));}}catch(_0x1749ea){logger['error'](_0x157d('0x71'),_0x518a6b['uniqueid'],util[_0x157d('0x39')](_0x1749ea,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x157d('0x9')][_0x157d('0x1b')]=function(_0x174340){try{if(this['isNotNull'](_0x174340)){logger[_0x157d('0x42')](_0x157d('0x7b'),_0x174340[_0x157d('0x45')],util[_0x157d('0x39')](_0x174340,{'showHidden':![],'depth':null}));if(this[_0x157d('0xe')][_0x174340[_0x157d('0x45')]]){var _0x32d1b2=_[_0x157d('0x7c')](this['queueReports'][_0x174340[_0x157d('0x45')]]);_0x32d1b2['queuecallercomplete']=![];_0x32d1b2['queuecallercompleteAt']=null;_0x32d1b2[_0x157d('0x7d')]=_0x174340['holdtime'];_0x32d1b2['originalposition']=_0x174340['originalposition'];_0x32d1b2[_0x157d('0x7e')]=!![];_0x32d1b2[_0x157d('0x7f')]=moment()['format'](_0x157d('0x73'));_0x32d1b2[_0x157d('0x80')]=_0x157d('0x81');_0x32d1b2[_0x157d('0x82')]=null;logger['info'](_0x157d('0x83'),_0x32d1b2[_0x157d('0x48')],_0x32d1b2[_0x157d('0x55')]);this['channels'][_0x174340['uniqueid']]=_0x32d1b2;this['emitVoiceQueueChannelRemove'](_0x32d1b2,_0x157d('0x7e'));}}}catch(_0x2e6816){logger[_0x157d('0x38')]('[%s][voiceQueueReport][queuecallerabandon]',_0x174340[_0x157d('0x45')],util[_0x157d('0x39')](_0x2e6816,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x157d('0x1c')]=function(_0x3405f2){try{if(this[_0x157d('0x5e')](_0x3405f2)){logger[_0x157d('0x42')](_0x157d('0x84'),_0x3405f2['uniqueid'],util[_0x157d('0x39')](_0x3405f2,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x3405f2[_0x157d('0x45')]]){var _0x2fb58b=_[_0x157d('0x7c')](this[_0x157d('0xe')][_0x3405f2['uniqueid']]);_0x2fb58b[_0x157d('0x85')]=moment()['format'](_0x157d('0x73'));_0x2fb58b['connectedlinenum']=_0x3405f2[_0x157d('0x86')];_0x2fb58b[_0x157d('0x87')]=_0x3405f2[_0x157d('0x87')];logger[_0x157d('0x69')](_0x157d('0x88'),_0x2fb58b['name'],_0x2fb58b['type'],_0x3405f2['connectedlinenum'],_0x3405f2[_0x157d('0x87')]);this[_0x157d('0x10')][_0x3405f2[_0x157d('0x45')]]=_0x2fb58b;this[_0x157d('0x41')](_0x2fb58b,'queuecallerleave');}}}catch(_0x1945f8){logger[_0x157d('0x38')](_0x157d('0x84'),_0x3405f2[_0x157d('0x45')],util[_0x157d('0x39')](_0x1945f8,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x157d('0x1f')]=function(_0x2fae5a){try{if(this['isNotNull'](_0x2fae5a)){logger[_0x157d('0x42')](_0x157d('0x89'),_0x2fae5a[_0x157d('0x45')],util[_0x157d('0x39')](_0x2fae5a,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x2fae5a[_0x157d('0x45')]]){var _0x45b441=_[_0x157d('0x7c')](this[_0x157d('0xe')][_0x2fae5a[_0x157d('0x45')]]);_0x45b441[_0x157d('0x8a')]=!![];_0x45b441[_0x157d('0x80')]=_0x157d('0x8b');logger[_0x157d('0x69')]('[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT',_0x45b441[_0x157d('0x48')],_0x45b441['type']);}}}catch(_0x1d5af5){logger[_0x157d('0x38')](_0x157d('0x89'),_0x2fae5a[_0x157d('0x45')],util[_0x157d('0x39')](_0x1d5af5,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x157d('0x8c')]=function(_0x23c03d){try{if(this[_0x157d('0x5e')](_0x23c03d)){logger['debug'](_0x157d('0x8d'),_0x23c03d[_0x157d('0x45')],util['inspect'](_0x23c03d,{'showHidden':![],'depth':null}));if(this[_0x157d('0xe')][_0x23c03d['uniqueid']]){var _0x45cb53=_['last'](this['queueReports'][_0x23c03d[_0x157d('0x45')]]);_0x45cb53[_0x157d('0x7e')]=![];_0x45cb53[_0x157d('0x7f')]=null;_0x45cb53['assigned']=!![];_0x45cb53[_0x157d('0x82')]=_0x23c03d[_0x157d('0x8e')];_0x45cb53[_0x157d('0x7d')]=_0x23c03d['holdtime'];_0x45cb53['queuecallercomplete']=!![];_0x45cb53[_0x157d('0x8f')]=![];_0x45cb53[_0x157d('0x90')]=null;if(!_0x45cb53['transfer']){if(_0x23c03d['reason']=='transfer'){_0x45cb53[_0x157d('0x80')]=_0x157d('0x91');logger[_0x157d('0x69')](_0x157d('0x92'),_0x45cb53['name'],_0x45cb53[_0x157d('0x55')]);}else{if(_[_0x157d('0x93')](_0x23c03d[_0x157d('0x34')]['toLowerCase'](),_0x157d('0x94'))){if(this[_0x157d('0xe')][_0x23c03d[_0x157d('0x95')]]){var _0x120a82=_[_0x157d('0x7c')](this[_0x157d('0xe')][_0x23c03d['linkedid']]);_0x120a82['queuecallercomplete']=![];_0x120a82[_0x157d('0x8f')]=!![];_0x120a82[_0x157d('0x90')]=moment(_0x45cb53[_0x157d('0x72')])['add'](_0x23c03d[_0x157d('0x7d')],_0x157d('0x96'))[_0x157d('0x46')](_0x157d('0x73'));_0x120a82[_0x157d('0x80')]='FORWARDTRANSFER';_0x120a82['transfer']=!![];_0x120a82['transfertype']=_0x157d('0x97');_0x120a82[_0x157d('0x98')]=_0x23c03d[_0x157d('0x99')];_0x120a82[_0x157d('0x9a')]=_0x23c03d[_0x157d('0x45')];logger[_0x157d('0x69')]('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER',_0x120a82[_0x157d('0x48')],_0x120a82['type']);var _0x18ec4d=this['queueReports'][_0x23c03d['linkedid']];this[_0x157d('0xe')][_0x23c03d['linkedid']]=this['queueReports'][_0x23c03d[_0x157d('0x45')]];this[_0x157d('0xe')][_0x23c03d[_0x157d('0x45')]]=_0x18ec4d;}}else{_0x45cb53[_0x157d('0x80')]='COMPLETEDBY'+_0x23c03d['reason'][_0x157d('0x9b')]();logger['info'](_0x157d('0x9c'),_0x45cb53[_0x157d('0x48')],_0x45cb53[_0x157d('0x55')],_0x45cb53[_0x157d('0x80')]);}}}this[_0x157d('0x10')][_0x23c03d[_0x157d('0x45')]]=_0x45cb53;this[_0x157d('0x3e')](_0x45cb53,_0x157d('0x1d'));}}}catch(_0x5240bf){logger[_0x157d('0x38')]('[%s][voiceQueueReport][agentcomplete]',_0x23c03d[_0x157d('0x45')],util['inspect'](_0x5240bf,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x157d('0x9')][_0x157d('0x9d')]=function(_0x5d65c7){try{if(this[_0x157d('0x5e')](_0x5d65c7)){logger['debug']('[%s][voiceQueueReport][varset]',_0x5d65c7[_0x157d('0x45')],util[_0x157d('0x39')](_0x5d65c7,{'showHidden':![],'depth':null}));this[_0x157d('0x9e')](_0x5d65c7[_0x157d('0x45')],_['keys'](_0x5d65c7[_0x157d('0x9f')])[0x0],_0x5d65c7[_0x157d('0xa0')]);if(this[_0x157d('0xe')][_0x5d65c7[_0x157d('0x45')]]){var _0x177259=_[_0x157d('0x7c')](this[_0x157d('0xe')][_0x5d65c7['uniqueid']]);if(_0x177259){if(this[_0x157d('0x5e')](_0x5d65c7[_0x157d('0x9f')])&&this[_0x157d('0x5e')](_0x5d65c7[_0x157d('0x9f')][_0x157d('0xa1')])){switch(_0x5d65c7[_0x157d('0xa0')]){case _0x157d('0xa2'):_0x177259['queuecallerexit']=![];_0x177259['queuecallerexitAt']=null;break;case _0x157d('0xa3'):_0x177259[_0x157d('0xa4')]=_0x157d('0xa5');_0x177259[_0x157d('0x8f')]=!![];_0x177259[_0x157d('0x90')]=moment()[_0x157d('0x46')]('YYYY-MM-DD\x20HH:mm:ss');_0x177259[_0x157d('0x85')]=moment()[_0x157d('0x46')](_0x157d('0x73'));logger[_0x157d('0x42')](_0x157d('0xa6'),_0x5d65c7[_0x157d('0x45')],util[_0x157d('0x39')](_0x177259,{'showHidden':![],'depth':null}));ami[_0x157d('0x40')]('custom:timeout',_0x177259);break;default:_0x177259[_0x157d('0x8f')]=!![];_0x177259[_0x157d('0x90')]=moment()['format'](_0x157d('0x73'));_0x177259['queuecallerleaveAt']=moment()[_0x157d('0x46')](_0x157d('0x73'));}_0x177259['queuecallerabandon']=![];_0x177259[_0x157d('0x7f')]=null;_0x177259[_0x157d('0x80')]=_0x5d65c7['value'];this[_0x157d('0x10')][_0x5d65c7[_0x157d('0x45')]]=_0x177259;this[_0x157d('0x3e')](_0x177259,_0x157d('0x20'));}else if(this[_0x157d('0x5e')](_0x5d65c7[_0x157d('0x9f')])&&this[_0x157d('0x5e')](_0x5d65c7[_0x157d('0x9f')]['queueposition'])){if(!_0x177259[_0x157d('0x7e')]){_0x177259[_0x157d('0x8f')]=!![];_0x177259[_0x157d('0x90')]=moment()[_0x157d('0x46')](_0x157d('0x73'));_0x177259[_0x157d('0x80')]=_0x157d('0xa7');_0x177259[_0x157d('0x85')]=moment()[_0x157d('0x46')](_0x157d('0x73'));this[_0x157d('0x10')][_0x5d65c7['uniqueid']]=_0x177259;}}logger[_0x157d('0x69')](_0x157d('0xa8'),_0x5d65c7['uniqueid'],_0x177259[_0x157d('0x48')],_0x177259[_0x157d('0x55')],_[_0x157d('0x79')](_0x5d65c7[_0x157d('0x9f')])[0x0],_0x5d65c7['value']);_0x177259[_0x157d('0x15')]=this[_0x157d('0x15')][_0x5d65c7['uniqueid']];}}}}catch(_0x1a7ce3){logger[_0x157d('0x38')](_0x157d('0xa9'),_0x5d65c7['uniqueid'],util[_0x157d('0x39')](_0x1a7ce3,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x157d('0x9e')]=function(_0x5bce35,_0x304dcb,_0x38cee2){var _0x2a699c=['rtpaudioqos',_0x157d('0xaa'),'rtpaudioqosjitter',_0x157d('0xab'),_0x157d('0xac'),_0x157d('0xad'),_0x157d('0xae'),_0x157d('0xaf'),'sipcallid',_0x157d('0xb0'),_0x157d('0xb1'),'bridgepvtcallid',_0x157d('0xb2'),_0x157d('0xb3'),'memberinterface',_0x157d('0xb4'),_0x157d('0x8e'),_0x157d('0xb5'),_0x157d('0xb6')];if(!_[_0x157d('0x33')](_0x304dcb)&&!_[_0x157d('0xb7')](_0x2a699c,_0x304dcb)){if(_[_0x157d('0x5f')](this['variables'][_0x5bce35])){this['variables'][_0x5bce35]={};}this['variables'][_0x5bce35][_0x304dcb]=_0x38cee2;}};VoiceQueueReport[_0x157d('0x9')][_0x157d('0xb8')]=function(_0x1a694d,_0x579efc,_0x44b9c5){var _0x24a26a={};for(var _0xc9b715=0x0;_0xc9b715<this['queueReports'][_0x1a694d][_0x157d('0xb9')];_0xc9b715+=0x1){_0x24a26a=this['queueReports'][_0x1a694d][_0xc9b715];if(this['voiceQueues'][_0x24a26a[_0x157d('0x67')]]){if(_0x24a26a[_0x157d('0x8f')]&&_0x24a26a['transfer']!=!![]){this['voiceQueues'][_0x24a26a[_0x157d('0x67')]][_0x157d('0xba')]+=0x1;}if(_0x24a26a[_0x157d('0x7e')]){this[_0x157d('0x12')][_0x24a26a[_0x157d('0x67')]]['abandoned']+=0x1;}this[_0x157d('0x12')][_0x24a26a['queue']][_0x157d('0x53')]+=moment(_0x24a26a[_0x157d('0x85')])[_0x157d('0xbb')](_0x24a26a[_0x157d('0x72')],_0x157d('0x96'))||0x0;if(_0xc9b715===this['queueReports'][_0x1a694d][_0x157d('0xb9')]-0x1){this[_0x157d('0x12')][_0x24a26a[_0x157d('0x67')]][_0x157d('0x52')]+=moment()['milliseconds'](0x0)[_0x157d('0xbb')](_0x24a26a['queuecallerjoinAt'],_0x157d('0x96'));this[_0x157d('0x12')][_0x24a26a[_0x157d('0x67')]][_0x157d('0x54')]+=0x1;if(_0x24a26a[_0x157d('0x8a')]){this[_0x157d('0x12')][_0x24a26a['queue']][_0x157d('0xbc')]+=0x1;this[_0x157d('0x12')][_0x24a26a[_0x157d('0x67')]][_0x157d('0xbd')]+=moment()[_0x157d('0xbe')](0x0)[_0x157d('0xbb')](_0x24a26a[_0x157d('0x85')],'seconds');_0x24a26a[_0x157d('0xbf')]=moment()[_0x157d('0x46')]('YYYY-MM-DD\x20HH:mm:ss');_0x24a26a[_0x157d('0x8f')]=![];_0x24a26a['queuecallerexitAt']=null;}if(_0x24a26a[_0x157d('0x8f')]&&_0x24a26a[_0x157d('0xc0')]!=!![]){_0x24a26a[_0x157d('0xa4')]=_0x157d('0xba');logger[_0x157d('0x42')](_0x157d('0xc1'),_0x1a694d,util[_0x157d('0x39')](_0x24a26a,{'showHidden':![],'depth':null}));ami[_0x157d('0x40')](_0x157d('0xc2'),_0x24a26a);}if(_0x24a26a['queuecallerabandon']){_0x24a26a[_0x157d('0xa4')]=_0x157d('0x56');logger[_0x157d('0x42')]('[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:',_0x1a694d,util['inspect'](_0x24a26a,{'showHidden':![],'depth':null}));ami[_0x157d('0x40')](_0x157d('0xc3'),_0x24a26a);}}else{this['voiceQueues'][_0x24a26a[_0x157d('0x67')]][_0x157d('0x52')]+=this[_0x157d('0x12')][_0x24a26a['queue']][_0x157d('0x53')];}logger[_0x157d('0x69')](_0x157d('0xc4'),_0x1a694d,_0x24a26a[_0x157d('0x48')],_0x24a26a[_0x157d('0x55')],_0x579efc);if(_0x44b9c5&&_0x24a26a[_0x157d('0x80')]===_0x157d('0xc5')){_0x24a26a[_0x157d('0x80')]='COMPLETEDBYAGENT';}this[_0x157d('0x10')][_0x1a694d]=_0x24a26a;this[_0x157d('0x3e')](_0x24a26a,_0x157d('0xc6'));this[_0x157d('0x4d')](this['voiceQueues'][_0x24a26a[_0x157d('0x67')]],_0x157d('0xc6'));}}logger[_0x157d('0x42')]('[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:',_0x1a694d,util[_0x157d('0x39')](this['queueReports'][_0x1a694d],{'showHidden':![],'depth':null}));ami[_0x157d('0x40')]('custom:voiceQueueReport',this[_0x157d('0xe')][_0x1a694d]);if(_0x24a26a[_0x157d('0x80')]===_0x157d('0xc5'))return;delete this[_0x157d('0xe')][_0x1a694d];delete this[_0x157d('0x10')][_0x1a694d];if(this['variables'][_0x1a694d]){delete this[_0x157d('0x15')][_0x1a694d];}};VoiceQueueReport[_0x157d('0x9')][_0x157d('0xc7')]=function(_0x5af738){try{if(this['isNotNull'](_0x5af738)){logger[_0x157d('0x42')]('[%s][voiceQueueReport][hangup]',_0x5af738[_0x157d('0x45')],util['inspect'](_0x5af738,{'showHidden':![],'depth':null}));if(this[_0x157d('0xe')][_0x5af738[_0x157d('0x45')]]){return this['handleHangup'](_0x5af738[_0x157d('0x45')],_0x5af738[_0x157d('0xc8')]);}if(this[_0x157d('0xe')][_0x5af738[_0x157d('0x95')]]){if(_0x5af738['cause']==='21'){return;}return this['handleHangup'](_0x5af738[_0x157d('0x95')],_0x5af738[_0x157d('0xc8')],!![]);}var _0x11acc4=Object[_0x157d('0x79')](this['queueReports']);for(var _0x324606=0x0;_0x324606<_0x11acc4[_0x157d('0xb9')];_0x324606++){var _0x8bbcaa=_[_0x157d('0x7c')](this[_0x157d('0xe')][_0x11acc4[_0x324606]]);if(_0x8bbcaa&&_0x8bbcaa[_0x157d('0xc9')]===_0x5af738[_0x157d('0x45')]){return this['handleHangup'](_0x8bbcaa[_0x157d('0x45')],_0x5af738['cause-txt'],!![]);}}}}catch(_0x2feeb4){logger[_0x157d('0x38')](_0x157d('0xca'),_0x5af738['uniqueid'],util[_0x157d('0x39')](_0x2feeb4,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x157d('0x26')]=function(_0x21d822){try{if(this[_0x157d('0x5e')](_0x21d822)){logger[_0x157d('0x42')]('[%s][voiceQueueReport][attendedtransfer]',_0x21d822[_0x157d('0x45')],util[_0x157d('0x39')](_0x21d822,{'showHidden':![],'depth':null}));var _0x1bee73;var _0x33c544;var _0xd6340a;if(this[_0x157d('0xe')][_0x21d822['transfereeuniqueid']]){_0x1bee73=_[_0x157d('0x7c')](this[_0x157d('0xe')][_0x21d822[_0x157d('0xcb')]]);_0x1bee73[_0x157d('0x98')]=_0x21d822[_0x157d('0xcc')];_0x1bee73[_0x157d('0x9a')]=_0x21d822['secondtransfereruniqueid'];_0x1bee73[_0x157d('0x80')]=_0x157d('0xc5');_0x1bee73[_0x157d('0xc0')]=!![];_0x1bee73[_0x157d('0xcd')]=_0x157d('0xce');if(this['queueReports'][_0x21d822[_0x157d('0xcf')]]){_0xd6340a=this[_0x157d('0xe')][_0x21d822[_0x157d('0xcf')]];this[_0x157d('0xe')][_0x21d822[_0x157d('0xcf')]]=this['queueReports'][_0x21d822[_0x157d('0xcb')]];this[_0x157d('0xe')][_0x21d822['transfereeuniqueid']]=_0xd6340a;_0x33c544=_['last'](this[_0x157d('0xe')][_0x21d822[_0x157d('0xcb')]]);_0x33c544[_0x157d('0x32')]=!![];}logger['info'](_0x157d('0xd0'),_0x21d822[_0x157d('0x45')],_0x1bee73[_0x157d('0x48')],_0x1bee73[_0x157d('0x55')],_0x1bee73[_0x157d('0x98')],_0x1bee73[_0x157d('0x9a')]);}else if(this['queueReports'][_0x21d822['transfertargetuniqueid']]){_0x1bee73=_['last'](this[_0x157d('0xe')][_0x21d822[_0x157d('0xd1')]]);_0x1bee73[_0x157d('0x98')]=_0x21d822[_0x157d('0xd2')];_0x1bee73[_0x157d('0x9a')]=_0x21d822['origtransfereruniqueid'];_0x1bee73[_0x157d('0x80')]=_0x157d('0xc5');_0x1bee73[_0x157d('0xc0')]=!![];_0x1bee73['transfertype']=_0x157d('0xce');if(this[_0x157d('0xe')][_0x21d822['origtransfereruniqueid']]){_0xd6340a=this[_0x157d('0xe')][_0x21d822[_0x157d('0xd3')]];this[_0x157d('0xe')][_0x21d822[_0x157d('0xd3')]]=this[_0x157d('0xe')][_0x21d822[_0x157d('0xd1')]];this[_0x157d('0xe')][_0x21d822[_0x157d('0xd1')]]=_0xd6340a;_0x33c544=_[_0x157d('0x7c')](this[_0x157d('0xe')][_0x21d822[_0x157d('0xd1')]]);_0x33c544['switch']=!![];}logger['info'](_0x157d('0xd0'),_0x21d822[_0x157d('0x45')],_0x1bee73['name'],_0x1bee73[_0x157d('0x55')],_0x1bee73[_0x157d('0x98')],_0x1bee73[_0x157d('0x9a')]);}else if(this[_0x157d('0xe')][_0x21d822[_0x157d('0xd3')]]){_0x1bee73=_[_0x157d('0x7c')](this[_0x157d('0xe')][_0x21d822[_0x157d('0xd3')]]);_0x1bee73[_0x157d('0x98')]=_0x21d822[_0x157d('0xd2')];_0x1bee73[_0x157d('0x9a')]=_0x21d822[_0x157d('0xd3')];_0x1bee73[_0x157d('0x80')]=_0x157d('0xc5');_0x1bee73['transfer']=!![];_0x1bee73[_0x157d('0xcd')]=_0x157d('0xce');_0x1bee73[_0x157d('0x32')]=!![];_0x1bee73[_0x157d('0xc9')]=_0x21d822['transfereeuniqueid'];}else if(this[_0x157d('0xe')][_0x21d822[_0x157d('0xcf')]]){_0x1bee73=_[_0x157d('0x7c')](this['queueReports'][_0x21d822[_0x157d('0xcf')]]);_0x1bee73[_0x157d('0x98')]=_0x21d822[_0x157d('0xcc')];_0x1bee73[_0x157d('0x9a')]=_0x21d822[_0x157d('0xcf')];_0x1bee73[_0x157d('0x80')]=_0x157d('0xc5');_0x1bee73[_0x157d('0xc0')]=!![];_0x1bee73[_0x157d('0xcd')]=_0x157d('0xce');_0x1bee73[_0x157d('0x32')]=!![];_0x1bee73['transferid']=_0x21d822[_0x157d('0xd1')];}}}catch(_0x5f0ae0){logger[_0x157d('0x38')]('[%s][voiceQueueReport][attendedtransfer]',_0x21d822['uniqueid'],util['inspect'](_0x5f0ae0,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x157d('0x9')][_0x157d('0x28')]=function(_0x799e13){try{if(this[_0x157d('0x5e')](_0x799e13)){logger[_0x157d('0x42')]('[%s][voiceQueueReport][blindtransfer]',_0x799e13[_0x157d('0x45')],util['inspect'](_0x799e13,{'showHidden':![],'depth':null}));if(this[_0x157d('0xe')][_0x799e13['transfereeuniqueid']]){var _0x4321f2=_[_0x157d('0x7c')](this['queueReports'][_0x799e13['transfereeuniqueid']]);_0x4321f2['queuecallerexitreason']='BLINDTRANSFER';_0x4321f2[_0x157d('0xc0')]=!![];_0x4321f2[_0x157d('0xcd')]=_0x157d('0xd4');_0x4321f2['transferexten']=_0x799e13[_0x157d('0xd5')];_0x4321f2[_0x157d('0x9a')]=_0x799e13['transfereeuniqueid'];logger[_0x157d('0x69')](_0x157d('0xd6'),_0x799e13[_0x157d('0x45')],_0x4321f2[_0x157d('0x48')],_0x4321f2[_0x157d('0x55')],_0x4321f2[_0x157d('0x98')],_0x4321f2[_0x157d('0x9a')]);this[_0x157d('0xc7')]({'event':_0x157d('0xd7'),'uniqueid':_0x799e13['transfereeuniqueid'],'context':_0x799e13[_0x157d('0xd8')],'channel':_0x799e13[_0x157d('0xd9')]});}}}catch(_0x19255f){logger[_0x157d('0x38')](_0x157d('0xda'),_0x799e13[_0x157d('0x45')],util[_0x157d('0x39')](_0x19255f,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncMusicOnHoldStart']=function(_0x20ea3d){try{if(this[_0x157d('0x5e')](_0x20ea3d)){logger[_0x157d('0x42')](_0x157d('0xdb'),_0x20ea3d['uniqueid'],util[_0x157d('0x39')](_0x20ea3d,{'showHidden':![],'depth':null}));if(this[_0x157d('0xe')][_0x20ea3d[_0x157d('0x45')]]){var _0x3b8e37=_[_0x157d('0x7c')](this['queueReports'][_0x20ea3d[_0x157d('0x45')]]);if(!_[_0x157d('0x33')](_0x3b8e37[_0x157d('0x85')])){_0x3b8e37['mohstarttime']=moment()[_0x157d('0x46')](_0x157d('0x73'));logger[_0x157d('0x69')](_0x157d('0xdc'),_0x20ea3d[_0x157d('0x45')],_0x3b8e37[_0x157d('0xdd')]);}}}}catch(_0x2a4446){logger['error']('[%s][voiceQueueReport][musiconholdstart]',_0x20ea3d[_0x157d('0x45')],util[_0x157d('0x39')](_0x2a4446,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x157d('0x9')][_0x157d('0xde')]=function(_0x1681a9){try{if(this[_0x157d('0x5e')](_0x1681a9)){logger['debug'](_0x157d('0xdf'),_0x1681a9[_0x157d('0x45')],util[_0x157d('0x39')](_0x1681a9,{'showHidden':![],'depth':null}));if(this[_0x157d('0xe')][_0x1681a9[_0x157d('0x45')]]){var _0x510995=_['last'](this[_0x157d('0xe')][_0x1681a9['uniqueid']]);if(!_[_0x157d('0x33')](_0x510995[_0x157d('0xdd')])){_0x510995['mohtime']+=moment()[_0x157d('0xbe')](0x0)['diff'](_0x510995[_0x157d('0xdd')],'seconds');logger[_0x157d('0x69')]('[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s',_0x1681a9[_0x157d('0x45')],_0x510995[_0x157d('0xe0')]);delete _0x510995[_0x157d('0xdd')];}}}}catch(_0x8c5150){logger['error'](_0x157d('0xdf'),_0x1681a9['uniqueid'],util[_0x157d('0x39')](_0x8c5150,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x157d('0x9')][_0x157d('0xe1')]=function(_0x535547){try{if(this['isNotNull'](_0x535547)){logger['debug'](_0x157d('0xe2'),_0x535547[_0x157d('0x45')],util[_0x157d('0x39')](_0x535547,{'showHidden':![],'depth':null}));if(_0x535547['application'][_0x157d('0xe3')]()==='set'){_0x535547[_0x157d('0xe4')]=_0x535547['appdata']&&_0x535547[_0x157d('0xe5')][_0x157d('0x93')](_0x157d('0xe6'))?_0x535547[_0x157d('0xe5')]:(_0x535547['appdata']||_0x535547[_0x157d('0xe4')])['toLowerCase']();if(_[_0x157d('0x93')](_0x535547[_0x157d('0xe4')][_0x157d('0xe3')](),_0x157d('0xe7'))){logger[_0x157d('0x69')](_0x157d('0xe8'),_0x535547[_0x157d('0x45')],_0x535547[_0x157d('0xe9')],_0x535547[_0x157d('0xe4')]);if(_['isUndefined'](this[_0x157d('0x10')][_0x535547[_0x157d('0x45')]]))this[_0x157d('0x10')][_0x535547['uniqueid']]={};var _0x3ff4fe=_0x535547[_0x157d('0xe4')]['split']('=');var _0x3a1756=_0x3ff4fe[0x0][_0x157d('0xe3')]()[_0x157d('0xea')](/cdr\((.*)\)/);if(_0x3a1756)this[_0x157d('0x10')][_0x535547[_0x157d('0x45')]][_0x3a1756[0x1]]=_0x3ff4fe[0x1];}}}}catch(_0x197e51){logger[_0x157d('0x38')](_0x157d('0xeb'),_0x535547['uniqueid'],util[_0x157d('0x39')](_0x197e51,{'showHidden':![],'depth':null}));}};module[_0x157d('0xec')]=VoiceQueueReport;
\ No newline at end of file
+var _0x1409=[']\x20sending\x20voice_queue_channel:remove\x20event:','ATTENDEDTRANSFER','voice:queue:%s','voice_queue_presence:remove','emitVoiceQueueSummary','type','answered','available','pTalking','sumBillable','sumDuration','sumHoldTime','talking','total','unmanaged','abandoned','Trunk','active','Interval','stringify',']\x20sending\x20voice_queue:save\x20event:','voice_queue:save','isNotNull','isUndefined','loopQueueShow','queues','catch','[voiceQueueReport][queues]','then','[voiceQueueReport][queuesummary]','queue','[voiceQueueReport][queuesummary]\x20event:','countBy','toNumber','loggedIn','loggedin','queuesummary','[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:','syncQueueSummaryComplete','custom:queuesummarycomplete','inbound','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','position','count','info','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','pick','push','[%s][voiceQueueReport][queuecallerjoin]','[%s][voiceQueueReport][queuecallerabandon]','last','queuecallercomplete','queuecallercompleteAt','holdtime','originalposition','queuecallerabandonAt','queuecallerexitreason','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','queuecallerabandon','queuecallerleaveAt','connectedlinenum','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','[%s][voiceQueueReport][queuecallerleave]','COMPLETEDBYAGENT','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','syncAgentComplete','[%s][voiceQueueReport][agentcomplete]','assigned','transfer','COMPLETED','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','startsWith','channel','toLowerCase','linkedid','add','seconds','FORWARDTRANSFER','destexten','reason','toUpperCase','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','syncVarSet','[%s][voiceQueueReport][varset]','addVariable','keys','variable','value','queuestatus','CONTINUE','queuecallerexit','TIMEOUT','lastevent','queuecallerexitAt','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','custom:timeout','varset','queueposition','EXITWITHKEY','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','membercalls','memberdynamic','memberlastcall','membername','includes','length','milliseconds','diff','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','custom:queuecallerabandon','hangup','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','custom:voiceQueueReport','[%s][voiceQueueReport][hangup]','handleHangup','cause-txt','cause','transfereeuniqueid','transferexten','secondtransfererexten','transferuniqueid','secondtransfereruniqueid','transfertype','transfertargetuniqueid','origtransfereruniqueid','ATTENDED','switch','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','origtransfererexten','transferid','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','BLIND','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','BlindTransfer','context','[%s][voiceQueueReport][musiconholdstart]','mohstarttime','syncMusicOnHoldStop','[%s][voiceQueueReport][musiconholdstop]','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','mohtime','[%s][voiceQueueReport][newexten]\x20event:','application','set','applicationdata','appdata','CDR(routeAlias)','cdr(','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s','split','match','[%s][voiceQueueReport][newexten]','exports','lodash','moment','util','md5','ioredis','../model/queueReport','redis','defaults','localhost','socket.io-emitter','prototype','enqueue','tail','finally','agents','channels','queueChannels','voiceQueues','flagQueueSummary','campaigns','bind','queuecallerjoin','syncQueueCallerJoin','syncQueueCallerAbandon','queuecallerleave','syncQueueCallerLeave','agentcomplete','agentconnect','syncAgentConnect','syncHangup','fullybooted','syncFullyBooted','musiconholdstart','musiconholdstop','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','isEmpty','originated','waiting','hasOwnProperty','unlockRR','clearZombieChannels','isNil','Action','status','message','No\x20such\x20channel','[%s][voiceQueueReport][checkChannel]','inspect','queueReports','error','[%s][voiceQueueReport][checkQueueReport]','variables','[%s][voiceQueueReport][checkVariables]','[FullyBooted]\x20clear\x20realtime','clearQueueReport','emitVoiceQueueChannelRemove','emit','emitVoiceQueueChannelSave','debug','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','format','name','voice_queue_channel:save'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0x1409,0xa6));var _0x9140=function(_0x5a3d4d,_0xab3078){_0x5a3d4d=_0x5a3d4d-0x0;var _0x3ff058=_0x1409[_0x5a3d4d];return _0x3ff058;};'use strict';var _=require(_0x9140('0x0'));var moment=require(_0x9140('0x1'));var util=require(_0x9140('0x2'));var md5=require(_0x9140('0x3'));var Redis=require(_0x9140('0x4'));var config=require('../../../config/environment');var logger=require('../../../config/logger')('ami');var ami=require('../ami');var QueueReport=require(_0x9140('0x5'));config[_0x9140('0x6')]=_[_0x9140('0x7')](config[_0x9140('0x6')],{'host':_0x9140('0x8'),'port':0x18eb});var io=require(_0x9140('0x9'))(new Redis(config[_0x9140('0x6')]));var Sequence=function(){};Sequence[_0x9140('0xa')][_0x9140('0xb')]=function(_0x2ab02f){this[_0x9140('0xc')]=this[_0x9140('0xc')]?this[_0x9140('0xc')][_0x9140('0xd')](_0x2ab02f):_0x2ab02f();};function VoiceQueueReport(_0x424e12){this['sequence']=new Sequence();this['queueReports']={};this[_0x9140('0xe')]=_0x424e12[_0x9140('0xe')];this[_0x9140('0xf')]=_0x424e12[_0x9140('0x10')];this['voiceQueues']=_0x424e12[_0x9140('0x11')];this[_0x9140('0x12')]=!![];this[_0x9140('0x13')]=_0x424e12[_0x9140('0x13')];this['variables']={};ami['on']('queuesummary',this['syncQueueSummary']['bind'](this));ami['on']('queuesummarycomplete',this['syncQueueSummaryComplete'][_0x9140('0x14')](this));ami['on'](_0x9140('0x15'),this[_0x9140('0x16')][_0x9140('0x14')](this));ami['on']('queuecallerabandon',this[_0x9140('0x17')][_0x9140('0x14')](this));ami['on'](_0x9140('0x18'),this[_0x9140('0x19')]['bind'](this));ami['on'](_0x9140('0x1a'),this['syncAgentComplete']['bind'](this));ami['on'](_0x9140('0x1b'),this[_0x9140('0x1c')][_0x9140('0x14')](this));ami['on']('varset',this['syncVarSet'][_0x9140('0x14')](this));ami['on']('hangup',this[_0x9140('0x1d')][_0x9140('0x14')](this));ami['on'](_0x9140('0x1e'),this[_0x9140('0x1f')][_0x9140('0x14')](this));ami['on'](_0x9140('0x20'),this['syncMusicOnHoldStart'][_0x9140('0x14')](this));ami['on'](_0x9140('0x21'),this['syncMusicOnHoldStop'][_0x9140('0x14')](this));ami['on'](_0x9140('0x22'),this[_0x9140('0x23')]['bind'](this));ami['on']('blindtransfer',this[_0x9140('0x24')][_0x9140('0x14')](this));this['loopQueueSummary']();this['loopQueueShow']();}function clearChannels(_0x36c22b){if(!_[_0x9140('0x25')](_0x36c22b)){for(var _0x225502 in _0x36c22b){if(_0x36c22b['hasOwnProperty'](_0x225502)){delete _0x36c22b[_0x225502];}}}}function clearCampaigns(_0x1c018b){if(!_['isEmpty'](_0x1c018b)){for(var _0x427380 in _0x1c018b){if(_0x1c018b['hasOwnProperty'](_0x427380)){_0x1c018b[_0x427380][_0x9140('0x26')]=0x0;}}}}function clearVoiceQueues(_0x1bb16b){if(!_['isEmpty'](_0x1bb16b)){for(var _0x3facfe in _0x1bb16b){if(_0x1bb16b['hasOwnProperty'](_0x3facfe)){_0x1bb16b[_0x3facfe][_0x9140('0x26')]=0x0;_0x1bb16b[_0x3facfe]['talking']=0x0;_0x1bb16b[_0x3facfe]['pTalking']=0x0;_0x1bb16b[_0x3facfe][_0x9140('0x27')]=0x0;_0x1bb16b[_0x3facfe]['queueStatusComplete']=!![];}}}}function clearAgentBooked(_0x3df5e2){if(!_[_0x9140('0x25')](_0x3df5e2)){for(var _0x32b4d in _0x3df5e2){if(_0x3df5e2[_0x9140('0x28')](_0x32b4d)){_0x3df5e2[_0x32b4d][_0x9140('0x29')]=!![];}}}}VoiceQueueReport[_0x9140('0xa')][_0x9140('0x2a')]=function(){var _0x30b3ec=this;for(var _0x26c2f1 in this[_0x9140('0xf')]){if(this['channels']['hasOwnProperty'](_0x26c2f1)&&!this[_0x9140('0xf')][_0x26c2f1]['switch']){this['sequence']['enqueue'](function(){if(!_[_0x9140('0x2b')](_0x30b3ec['channels'][_0x26c2f1])){return ami[_0x9140('0x2c')]({'action':_0x9140('0x2d'),'channel':_0x30b3ec[_0x9140('0xf')][_0x26c2f1]['channel']})['catch'](function(_0x89106){if(_0x89106[_0x9140('0x2e')]===_0x9140('0x2f')){setTimeout(function(){if(_0x30b3ec[_0x9140('0xf')][_0x26c2f1]){delete _0x30b3ec[_0x9140('0xf')][_0x26c2f1];logger['error'](_0x9140('0x30'),_0x26c2f1,util[_0x9140('0x31')](_0x89106,{'showHidden':![],'depth':null}));}if(_0x30b3ec[_0x9140('0x32')][_0x26c2f1]){delete _0x30b3ec[_0x9140('0x32')][_0x26c2f1];logger[_0x9140('0x33')](_0x9140('0x34'),_0x26c2f1,util[_0x9140('0x31')](_0x89106,{'showHidden':![],'depth':null}));}if(_0x30b3ec[_0x9140('0x35')][_0x26c2f1]){delete _0x30b3ec[_0x9140('0x35')][_0x26c2f1];logger['error'](_0x9140('0x36'),_0x26c2f1,util['inspect'](_0x89106,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0x9140('0xa')][_0x9140('0x1f')]=function(){logger['error'](_0x9140('0x37'));clearChannels(this[_0x9140('0xf')]);this[_0x9140('0x38')](this[_0x9140('0x32')]);clearAgentBooked(this['agents']);clearVoiceQueues(this[_0x9140('0x11')]);clearCampaigns(this['campaigns']);};VoiceQueueReport['prototype'][_0x9140('0x38')]=function(_0x269052){var _0xcce16e=this;if(!_[_0x9140('0x25')](_0x269052)){for(var _0x4058c2 in _0x269052){if(_0x269052[_0x9140('0x28')](_0x4058c2)){_0xcce16e[_0x9140('0x39')](_0x269052[_0x4058c2],'clearqueuereport');delete _0x269052[_0x4058c2];}}}};VoiceQueueReport[_0x9140('0xa')]['emit']=function(_0x142319,_0x25003e,_0x46bb0e){io['to'](_0x142319)[_0x9140('0x3a')](_0x25003e,_0x46bb0e);};VoiceQueueReport['prototype'][_0x9140('0x3b')]=function(_0x4da48e,_0x792b20){logger[_0x9140('0x3c')](_0x9140('0x3d')+_0x792b20+_0x9140('0x3e'),_0x4da48e[_0x9140('0x3f')],util[_0x9140('0x31')](_0x4da48e,{'showHidden':![],'depth':null}));this['emit'](util[_0x9140('0x40')]('voice:queue:%s',_0x4da48e[_0x9140('0x41')]),_0x9140('0x42'),_0x4da48e);io[_0x9140('0x3a')]('voice_queue_presence:save',_0x4da48e);};VoiceQueueReport[_0x9140('0xa')][_0x9140('0x39')]=function(_0x360bb1,_0x228129){logger[_0x9140('0x3c')]('[%s][voiceQueueReport]['+_0x228129+_0x9140('0x43'),_0x360bb1[_0x9140('0x3f')],util[_0x9140('0x31')](_0x360bb1,{'showHidden':![],'depth':null}));if(_0x360bb1['queuecallerexitreason']===_0x9140('0x44'))return;this[_0x9140('0x3a')](util[_0x9140('0x40')](_0x9140('0x45'),_0x360bb1[_0x9140('0x41')]),'voice_queue_channel:remove',_0x360bb1);io[_0x9140('0x3a')](_0x9140('0x46'),_0x360bb1);};VoiceQueueReport[_0x9140('0xa')][_0x9140('0x47')]=function(_0x213b4c,_0x4e3ac9){if(_0x213b4c[_0x9140('0x48')]==='inbound'){var _0x50d01c={'id':_0x213b4c['id'],'name':_0x213b4c['name'],'strategy':_0x213b4c['strategy'],'answered':_0x213b4c[_0x9140('0x49')],'available':_0x213b4c[_0x9140('0x4a')],'loggedIn':_0x213b4c['loggedIn'],'pTalking':_0x213b4c[_0x9140('0x4b')],'sumBillable':_0x213b4c[_0x9140('0x4c')],'sumDuration':_0x213b4c[_0x9140('0x4d')],'sumHoldTime':_0x213b4c[_0x9140('0x4e')]||0x0,'talking':_0x213b4c[_0x9140('0x4f')],'total':_0x213b4c[_0x9140('0x50')],'type':_0x213b4c[_0x9140('0x48')],'unmanaged':_0x213b4c[_0x9140('0x51')],'abandoned':_0x213b4c[_0x9140('0x52')],'waiting':_0x213b4c[_0x9140('0x27')]};if(_0x213b4c['Trunk']){_0x50d01c[_0x9140('0x53')]={'id':_0x213b4c['Trunk']['id'],'name':_0x213b4c[_0x9140('0x53')][_0x9140('0x41')],'active':_0x213b4c[_0x9140('0x53')][_0x9140('0x54')],'callerid':_0x213b4c[_0x9140('0x53')]['callerid']};}if(_0x213b4c[_0x9140('0x55')]){_0x50d01c[_0x9140('0x55')]={'id':_0x213b4c[_0x9140('0x55')]['id'],'name':_0x213b4c[_0x9140('0x55')]['name']};}var _0x25bb10=md5(JSON[_0x9140('0x56')](_0x50d01c));if(_0x213b4c[_0x9140('0x3')]!==_0x25bb10){_0x213b4c['md5']=_0x25bb10;logger[_0x9140('0x3c')]('[voiceQueueReport]['+_0x4e3ac9+_0x9140('0x57'),util[_0x9140('0x31')](_0x50d01c,{'showHidden':![],'depth':null}));this[_0x9140('0x3a')](util[_0x9140('0x40')](_0x9140('0x45'),_0x50d01c[_0x9140('0x41')]),_0x9140('0x58'),_0x50d01c);}}};VoiceQueueReport[_0x9140('0xa')][_0x9140('0x59')]=function(_0x1f41f8){return _0x1f41f8!==null&&!_[_0x9140('0x5a')](_0x1f41f8);};VoiceQueueReport[_0x9140('0xa')][_0x9140('0x5b')]=function(){var _0x89ef87=this;setInterval(function(){_0x89ef87[_0x9140('0x2a')]();ami[_0x9140('0x2c')]({'action':_0x9140('0x5c')})[_0x9140('0x5d')](function(_0x4f5cf6){logger[_0x9140('0x33')](_0x9140('0x5e'),util[_0x9140('0x31')](_0x4f5cf6,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0x9140('0xa')]['loopQueueSummary']=function(){var _0xb09f2c=this;setInterval(function(){if(_0xb09f2c[_0x9140('0x12')]){return ami[_0x9140('0x2c')]({'action':'queuesummary'})[_0x9140('0x5f')](function(){_0xb09f2c[_0x9140('0x12')]=![];})[_0x9140('0x5d')](function(_0x5cb509){logger[_0x9140('0x33')](_0x9140('0x60'),util[_0x9140('0x31')](_0x5cb509,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0x9140('0xa')]['syncQueueSummary']=function(_0x3c7f46){try{if(this[_0x9140('0x59')](_0x3c7f46)&&this[_0x9140('0x59')](_0x3c7f46[_0x9140('0x61')])){logger[_0x9140('0x3c')](_0x9140('0x62'),util['inspect'](_0x3c7f46,{'showHidden':![],'depth':null}));if(this['voiceQueues'][_0x3c7f46[_0x9140('0x61')]]){logger['info']('[voiceQueueReport][queuesummary]\x20name:%s',_0x3c7f46[_0x9140('0x61')]);var _0x30230c=_[_0x9140('0x63')](this[_0x9140('0xf')],_0x9140('0x61'))[_0x3c7f46[_0x9140('0x61')]]||0x0;var _0x42ffa1=_0x30230c-_0x3c7f46['callers'];if(this[_0x9140('0x11')][_0x3c7f46[_0x9140('0x61')]][_0x9140('0x27')]!==_[_0x9140('0x64')](_0x3c7f46['callers'])||this[_0x9140('0x11')][_0x3c7f46[_0x9140('0x61')]][_0x9140('0x65')]!==_[_0x9140('0x64')](_0x3c7f46[_0x9140('0x66')])||this[_0x9140('0x11')][_0x3c7f46[_0x9140('0x61')]]['available']!==_[_0x9140('0x64')](_0x3c7f46[_0x9140('0x4a')])||this[_0x9140('0x11')][_0x3c7f46['queue']][_0x9140('0x4f')]!==_0x42ffa1){this['voiceQueues'][_0x3c7f46[_0x9140('0x61')]][_0x9140('0x27')]=_[_0x9140('0x64')](_0x3c7f46['callers']);this[_0x9140('0x11')][_0x3c7f46[_0x9140('0x61')]][_0x9140('0x65')]=_['toNumber'](_0x3c7f46['loggedin']);this[_0x9140('0x11')][_0x3c7f46[_0x9140('0x61')]][_0x9140('0x4a')]=_[_0x9140('0x64')](_0x3c7f46['available']);this[_0x9140('0x11')][_0x3c7f46['queue']][_0x9140('0x4f')]=_0x42ffa1>0x0?_0x42ffa1:0x0;this[_0x9140('0x11')][_0x3c7f46[_0x9140('0x61')]][_0x9140('0x4f')]=this['voiceQueues'][_0x3c7f46[_0x9140('0x61')]][_0x9140('0x4f')]>_[_0x9140('0x64')](_0x3c7f46[_0x9140('0x66')])?_[_0x9140('0x64')](_0x3c7f46[_0x9140('0x66')]):this[_0x9140('0x11')][_0x3c7f46[_0x9140('0x61')]][_0x9140('0x4f')];this['emitVoiceQueueSummary'](this['voiceQueues'][_0x3c7f46[_0x9140('0x61')]],_0x9140('0x67'));}logger[_0x9140('0x3c')](_0x9140('0x68'),util[_0x9140('0x31')](this[_0x9140('0x11')][_0x3c7f46['queue']],{'showHidden':![],'depth':null}));ami[_0x9140('0x3a')]('custom:queuesummary',this['voiceQueues'][_0x3c7f46[_0x9140('0x61')]]);}}}catch(_0x1eac17){logger[_0x9140('0x33')](_0x9140('0x60'),util[_0x9140('0x31')](_0x1eac17,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9140('0xa')][_0x9140('0x69')]=function(_0x302bf5){logger[_0x9140('0x3c')]('[voiceQueueReport][queuesummarycomplete]\x20event:',util[_0x9140('0x31')](_0x302bf5,{'showHidden':![],'depth':null}));ami[_0x9140('0x3a')](_0x9140('0x6a'),{});this[_0x9140('0x12')]=!![];};VoiceQueueReport['prototype'][_0x9140('0x16')]=function(_0x2355d9){try{if(this[_0x9140('0x59')](_0x2355d9)){logger[_0x9140('0x3c')]('[%s][voiceQueueReport][queuecallerjoin]',_0x2355d9[_0x9140('0x3f')],util[_0x9140('0x31')](_0x2355d9,{'showHidden':![],'depth':null}));if(_[_0x9140('0x5a')](this[_0x9140('0x32')][_0x2355d9[_0x9140('0x3f')]]))this['queueReports'][_0x2355d9['uniqueid']]=[];if(_[_0x9140('0x5a')](this[_0x9140('0xf')][_0x2355d9[_0x9140('0x3f')]]))this['channels'][_0x2355d9[_0x9140('0x3f')]]={};var _0x4d67b0=new QueueReport();_0x4d67b0[_0x9140('0x41')]=_0x2355d9['queue'];_0x4d67b0[_0x9140('0x48')]=this['voiceQueues'][_0x4d67b0[_0x9140('0x41')]]&&this['voiceQueues'][_0x4d67b0['name']][_0x9140('0x48')]?this['voiceQueues'][_0x4d67b0[_0x9140('0x41')]]['type']||_0x9140('0x6b'):_0x9140('0x6b');_0x4d67b0[_0x9140('0x61')]=_0x2355d9[_0x9140('0x61')];_0x4d67b0[_0x9140('0x6c')]=moment()[_0x9140('0x40')](_0x9140('0x6d'));_0x4d67b0[_0x9140('0x6e')]=_0x2355d9[_0x9140('0x6e')];_0x4d67b0[_0x9140('0x6f')]=_0x2355d9[_0x9140('0x6f')];_0x4d67b0[_0x9140('0x3f')]=_0x2355d9[_0x9140('0x3f')];_0x4d67b0['routealias']=this[_0x9140('0xf')][_0x2355d9[_0x9140('0x3f')]]['routealias'];logger[_0x9140('0x70')](_0x9140('0x71'),_0x4d67b0['name'],_0x4d67b0[_0x9140('0x48')]);_['merge'](_0x4d67b0,_[_0x9140('0x72')](_0x2355d9,_['keys'](_0x4d67b0)));this[_0x9140('0x32')][_0x2355d9[_0x9140('0x3f')]][_0x9140('0x73')](_0x4d67b0);this[_0x9140('0xf')][_0x2355d9['uniqueid']]=_0x4d67b0;this[_0x9140('0x3b')](_0x4d67b0,_0x9140('0x15'));}}catch(_0x165b4e){logger['error'](_0x9140('0x74'),_0x2355d9[_0x9140('0x3f')],util['inspect'](_0x165b4e,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9140('0xa')][_0x9140('0x17')]=function(_0x33952f){try{if(this[_0x9140('0x59')](_0x33952f)){logger['debug'](_0x9140('0x75'),_0x33952f['uniqueid'],util[_0x9140('0x31')](_0x33952f,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x33952f[_0x9140('0x3f')]]){var _0x297b54=_[_0x9140('0x76')](this[_0x9140('0x32')][_0x33952f['uniqueid']]);_0x297b54[_0x9140('0x77')]=![];_0x297b54[_0x9140('0x78')]=null;_0x297b54[_0x9140('0x79')]=_0x33952f[_0x9140('0x79')];_0x297b54[_0x9140('0x7a')]=_0x33952f[_0x9140('0x7a')];_0x297b54['queuecallerabandon']=!![];_0x297b54[_0x9140('0x7b')]=moment()['format'](_0x9140('0x6d'));_0x297b54[_0x9140('0x7c')]='ABANDONED';_0x297b54['lastAssignedTo']=null;logger[_0x9140('0x70')](_0x9140('0x7d'),_0x297b54[_0x9140('0x41')],_0x297b54['type']);this[_0x9140('0xf')][_0x33952f[_0x9140('0x3f')]]=_0x297b54;this['emitVoiceQueueChannelRemove'](_0x297b54,_0x9140('0x7e'));}}}catch(_0x4f543f){logger[_0x9140('0x33')](_0x9140('0x75'),_0x33952f[_0x9140('0x3f')],util[_0x9140('0x31')](_0x4f543f,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9140('0xa')][_0x9140('0x19')]=function(_0x1d1f8a){try{if(this['isNotNull'](_0x1d1f8a)){logger[_0x9140('0x3c')]('[%s][voiceQueueReport][queuecallerleave]',_0x1d1f8a[_0x9140('0x3f')],util[_0x9140('0x31')](_0x1d1f8a,{'showHidden':![],'depth':null}));if(this[_0x9140('0x32')][_0x1d1f8a[_0x9140('0x3f')]]){var _0x51c607=_[_0x9140('0x76')](this['queueReports'][_0x1d1f8a[_0x9140('0x3f')]]);_0x51c607[_0x9140('0x7f')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x51c607[_0x9140('0x80')]=_0x1d1f8a[_0x9140('0x80')];_0x51c607[_0x9140('0x81')]=_0x1d1f8a[_0x9140('0x81')];logger['info'](_0x9140('0x82'),_0x51c607[_0x9140('0x41')],_0x51c607['type'],_0x1d1f8a[_0x9140('0x80')],_0x1d1f8a['connectedlinename']);this[_0x9140('0xf')][_0x1d1f8a[_0x9140('0x3f')]]=_0x51c607;this['emitVoiceQueueChannelSave'](_0x51c607,_0x9140('0x18'));}}}catch(_0x1ae9ad){logger[_0x9140('0x33')](_0x9140('0x83'),_0x1d1f8a[_0x9140('0x3f')],util[_0x9140('0x31')](_0x1ae9ad,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9140('0xa')][_0x9140('0x1c')]=function(_0x5482d1){try{if(this[_0x9140('0x59')](_0x5482d1)){logger[_0x9140('0x3c')]('[%s][voiceQueueReport][agentconnect]',_0x5482d1[_0x9140('0x3f')],util[_0x9140('0x31')](_0x5482d1,{'showHidden':![],'depth':null}));if(this[_0x9140('0x32')][_0x5482d1[_0x9140('0x3f')]]){var _0x632168=_['last'](this[_0x9140('0x32')][_0x5482d1[_0x9140('0x3f')]]);_0x632168[_0x9140('0x77')]=!![];_0x632168[_0x9140('0x7c')]=_0x9140('0x84');logger[_0x9140('0x70')](_0x9140('0x85'),_0x632168[_0x9140('0x41')],_0x632168[_0x9140('0x48')]);}}}catch(_0x2c0483){logger[_0x9140('0x33')]('[%s][voiceQueueReport][agentconnect]',_0x5482d1['uniqueid'],util['inspect'](_0x2c0483,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9140('0xa')][_0x9140('0x86')]=function(_0x282014){try{if(this[_0x9140('0x59')](_0x282014)){logger[_0x9140('0x3c')](_0x9140('0x87'),_0x282014[_0x9140('0x3f')],util[_0x9140('0x31')](_0x282014,{'showHidden':![],'depth':null}));if(this[_0x9140('0x32')][_0x282014[_0x9140('0x3f')]]){var _0x4b996c=_[_0x9140('0x76')](this[_0x9140('0x32')][_0x282014[_0x9140('0x3f')]]);_0x4b996c[_0x9140('0x7e')]=![];_0x4b996c[_0x9140('0x7b')]=null;_0x4b996c[_0x9140('0x88')]=!![];_0x4b996c['lastAssignedTo']=_0x282014['membername'];_0x4b996c[_0x9140('0x79')]=_0x282014['holdtime'];_0x4b996c[_0x9140('0x77')]=!![];_0x4b996c['queuecallerexit']=![];_0x4b996c['queuecallerexitAt']=null;if(!_0x4b996c[_0x9140('0x89')]){if(_0x282014['reason']==_0x9140('0x89')){_0x4b996c['queuecallerexitreason']=_0x9140('0x8a');logger['info'](_0x9140('0x8b'),_0x4b996c[_0x9140('0x41')],_0x4b996c[_0x9140('0x48')]);}else{if(_[_0x9140('0x8c')](_0x282014[_0x9140('0x8d')][_0x9140('0x8e')](),'local/')){if(this[_0x9140('0x32')][_0x282014['linkedid']]){var _0x4e3a81=_[_0x9140('0x76')](this[_0x9140('0x32')][_0x282014[_0x9140('0x8f')]]);_0x4e3a81[_0x9140('0x77')]=![];_0x4e3a81['queuecallerexit']=!![];_0x4e3a81['queuecallerexitAt']=moment(_0x4b996c['queuecallerjoinAt'])[_0x9140('0x90')](_0x282014[_0x9140('0x79')],_0x9140('0x91'))[_0x9140('0x40')](_0x9140('0x6d'));_0x4e3a81['queuecallerexitreason']=_0x9140('0x92');_0x4e3a81[_0x9140('0x89')]=!![];_0x4e3a81['transfertype']='FORWARD';_0x4e3a81['transferexten']=_0x282014[_0x9140('0x93')];_0x4e3a81['transferuniqueid']=_0x282014['uniqueid'];logger[_0x9140('0x70')]('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER',_0x4e3a81['name'],_0x4e3a81[_0x9140('0x48')]);var _0x3d3384=this[_0x9140('0x32')][_0x282014[_0x9140('0x8f')]];this[_0x9140('0x32')][_0x282014['linkedid']]=this[_0x9140('0x32')][_0x282014[_0x9140('0x3f')]];this['queueReports'][_0x282014[_0x9140('0x3f')]]=_0x3d3384;}}else{_0x4b996c['queuecallerexitreason']='COMPLETEDBY'+_0x282014[_0x9140('0x94')][_0x9140('0x95')]();logger[_0x9140('0x70')](_0x9140('0x96'),_0x4b996c['name'],_0x4b996c[_0x9140('0x48')],_0x4b996c[_0x9140('0x7c')]);}}}this[_0x9140('0xf')][_0x282014['uniqueid']]=_0x4b996c;this[_0x9140('0x39')](_0x4b996c,'agentcomplete');}}}catch(_0x5c0b13){logger[_0x9140('0x33')](_0x9140('0x87'),_0x282014['uniqueid'],util['inspect'](_0x5c0b13,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9140('0xa')][_0x9140('0x97')]=function(_0x26e800){try{if(this[_0x9140('0x59')](_0x26e800)){logger[_0x9140('0x3c')](_0x9140('0x98'),_0x26e800[_0x9140('0x3f')],util[_0x9140('0x31')](_0x26e800,{'showHidden':![],'depth':null}));this[_0x9140('0x99')](_0x26e800[_0x9140('0x3f')],_[_0x9140('0x9a')](_0x26e800[_0x9140('0x9b')])[0x0],_0x26e800[_0x9140('0x9c')]);if(this['queueReports'][_0x26e800[_0x9140('0x3f')]]){var _0x374035=_['last'](this[_0x9140('0x32')][_0x26e800[_0x9140('0x3f')]]);if(_0x374035){if(this['isNotNull'](_0x26e800[_0x9140('0x9b')])&&this[_0x9140('0x59')](_0x26e800[_0x9140('0x9b')][_0x9140('0x9d')])){switch(_0x26e800[_0x9140('0x9c')]){case _0x9140('0x9e'):_0x374035[_0x9140('0x9f')]=![];_0x374035['queuecallerexitAt']=null;break;case _0x9140('0xa0'):_0x374035[_0x9140('0xa1')]='timeout';_0x374035[_0x9140('0x9f')]=!![];_0x374035[_0x9140('0xa2')]=moment()['format'](_0x9140('0x6d'));_0x374035[_0x9140('0x7f')]=moment()[_0x9140('0x40')]('YYYY-MM-DD\x20HH:mm:ss');logger[_0x9140('0x3c')](_0x9140('0xa3'),_0x26e800[_0x9140('0x3f')],util[_0x9140('0x31')](_0x374035,{'showHidden':![],'depth':null}));ami['emit'](_0x9140('0xa4'),_0x374035);break;default:_0x374035[_0x9140('0x9f')]=!![];_0x374035[_0x9140('0xa2')]=moment()[_0x9140('0x40')](_0x9140('0x6d'));_0x374035[_0x9140('0x7f')]=moment()[_0x9140('0x40')](_0x9140('0x6d'));}_0x374035['queuecallerabandon']=![];_0x374035[_0x9140('0x7b')]=null;_0x374035[_0x9140('0x7c')]=_0x26e800[_0x9140('0x9c')];this[_0x9140('0xf')][_0x26e800['uniqueid']]=_0x374035;this[_0x9140('0x39')](_0x374035,_0x9140('0xa5'));}else if(this[_0x9140('0x59')](_0x26e800['variable'])&&this[_0x9140('0x59')](_0x26e800['variable'][_0x9140('0xa6')])){if(!_0x374035['queuecallerabandon']){_0x374035[_0x9140('0x9f')]=!![];_0x374035['queuecallerexitAt']=moment()['format'](_0x9140('0x6d'));_0x374035[_0x9140('0x7c')]=_0x9140('0xa7');_0x374035['queuecallerleaveAt']=moment()[_0x9140('0x40')](_0x9140('0x6d'));this['channels'][_0x26e800['uniqueid']]=_0x374035;}}logger[_0x9140('0x70')](_0x9140('0xa8'),_0x26e800['uniqueid'],_0x374035[_0x9140('0x41')],_0x374035['type'],_[_0x9140('0x9a')](_0x26e800[_0x9140('0x9b')])[0x0],_0x26e800[_0x9140('0x9c')]);_0x374035[_0x9140('0x35')]=this[_0x9140('0x35')][_0x26e800['uniqueid']];}}}}catch(_0x28df32){logger['error']('[%s][voiceQueueReport][varset]',_0x26e800['uniqueid'],util['inspect'](_0x28df32,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9140('0xa')][_0x9140('0x99')]=function(_0x5d41d0,_0x1c2802,_0x587c8e){var _0x32287c=[_0x9140('0xa9'),_0x9140('0xaa'),_0x9140('0xab'),_0x9140('0xac'),'rtpaudioqosloss',_0x9140('0xad'),_0x9140('0xae'),_0x9140('0xaf'),_0x9140('0xb0'),_0x9140('0xb1'),_0x9140('0xb2'),'bridgepvtcallid',_0x9140('0xb3'),_0x9140('0xb4'),'memberinterface',_0x9140('0xb5'),_0x9140('0xb6'),'memberpenalty','memberrealtime'];if(!_['isNil'](_0x1c2802)&&!_[_0x9140('0xb7')](_0x32287c,_0x1c2802)){if(_[_0x9140('0x5a')](this['variables'][_0x5d41d0])){this[_0x9140('0x35')][_0x5d41d0]={};}this[_0x9140('0x35')][_0x5d41d0][_0x1c2802]=_0x587c8e;}};VoiceQueueReport['prototype']['handleHangup']=function(_0x419171,_0x19bd23,_0xfa1aaf){var _0x51d8ec={};for(var _0x391fd7=0x0;_0x391fd7<this[_0x9140('0x32')][_0x419171][_0x9140('0xb8')];_0x391fd7+=0x1){_0x51d8ec=this[_0x9140('0x32')][_0x419171][_0x391fd7];if(this[_0x9140('0x11')][_0x51d8ec[_0x9140('0x61')]]){if(_0x51d8ec[_0x9140('0x9f')]&&_0x51d8ec[_0x9140('0x89')]!=!![]){this[_0x9140('0x11')][_0x51d8ec[_0x9140('0x61')]][_0x9140('0x51')]+=0x1;}if(_0x51d8ec[_0x9140('0x7e')]){this[_0x9140('0x11')][_0x51d8ec['queue']][_0x9140('0x52')]+=0x1;}this[_0x9140('0x11')][_0x51d8ec[_0x9140('0x61')]][_0x9140('0x4e')]+=moment(_0x51d8ec[_0x9140('0x7f')])['diff'](_0x51d8ec['queuecallerjoinAt'],_0x9140('0x91'))||0x0;if(_0x391fd7===this[_0x9140('0x32')][_0x419171][_0x9140('0xb8')]-0x1){this['voiceQueues'][_0x51d8ec[_0x9140('0x61')]][_0x9140('0x4d')]+=moment()[_0x9140('0xb9')](0x0)[_0x9140('0xba')](_0x51d8ec['queuecallerjoinAt'],_0x9140('0x91'));this[_0x9140('0x11')][_0x51d8ec[_0x9140('0x61')]]['total']+=0x1;if(_0x51d8ec['queuecallercomplete']){this[_0x9140('0x11')][_0x51d8ec['queue']][_0x9140('0x49')]+=0x1;this[_0x9140('0x11')][_0x51d8ec['queue']][_0x9140('0x4c')]+=moment()[_0x9140('0xb9')](0x0)[_0x9140('0xba')](_0x51d8ec[_0x9140('0x7f')],_0x9140('0x91'));_0x51d8ec['queuecallercompleteAt']=moment()['format'](_0x9140('0x6d'));_0x51d8ec[_0x9140('0x9f')]=![];_0x51d8ec[_0x9140('0xa2')]=null;}if(_0x51d8ec[_0x9140('0x9f')]&&_0x51d8ec[_0x9140('0x89')]!=!![]){_0x51d8ec[_0x9140('0xa1')]='unmanaged';logger[_0x9140('0x3c')](_0x9140('0xbb'),_0x419171,util[_0x9140('0x31')](_0x51d8ec,{'showHidden':![],'depth':null}));ami[_0x9140('0x3a')]('custom:queuecallerunmanaged',_0x51d8ec);}if(_0x51d8ec[_0x9140('0x7e')]){_0x51d8ec[_0x9140('0xa1')]=_0x9140('0x52');logger['debug']('[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:',_0x419171,util['inspect'](_0x51d8ec,{'showHidden':![],'depth':null}));ami['emit'](_0x9140('0xbc'),_0x51d8ec);}}else{this[_0x9140('0x11')][_0x51d8ec['queue']][_0x9140('0x4d')]+=this[_0x9140('0x11')][_0x51d8ec[_0x9140('0x61')]]['sumHoldTime'];}logger[_0x9140('0x70')]('[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s',_0x419171,_0x51d8ec[_0x9140('0x41')],_0x51d8ec[_0x9140('0x48')],_0x19bd23);if(_0xfa1aaf&&_0x51d8ec['queuecallerexitreason']===_0x9140('0x44')){_0x51d8ec[_0x9140('0x7c')]=_0x9140('0x84');}this[_0x9140('0xf')][_0x419171]=_0x51d8ec;this['emitVoiceQueueChannelRemove'](_0x51d8ec,'hangup');this[_0x9140('0x47')](this[_0x9140('0x11')][_0x51d8ec[_0x9140('0x61')]],_0x9140('0xbd'));}}logger[_0x9140('0x3c')](_0x9140('0xbe'),_0x419171,util[_0x9140('0x31')](this['queueReports'][_0x419171],{'showHidden':![],'depth':null}));ami[_0x9140('0x3a')](_0x9140('0xbf'),this[_0x9140('0x32')][_0x419171]);if(_0x51d8ec[_0x9140('0x7c')]==='ATTENDEDTRANSFER')return;delete this[_0x9140('0x32')][_0x419171];delete this[_0x9140('0xf')][_0x419171];if(this[_0x9140('0x35')][_0x419171]){delete this[_0x9140('0x35')][_0x419171];}};VoiceQueueReport['prototype'][_0x9140('0x1d')]=function(_0xcb989a){try{if(this[_0x9140('0x59')](_0xcb989a)){logger[_0x9140('0x3c')](_0x9140('0xc0'),_0xcb989a[_0x9140('0x3f')],util[_0x9140('0x31')](_0xcb989a,{'showHidden':![],'depth':null}));if(this['queueReports'][_0xcb989a[_0x9140('0x3f')]]){return this[_0x9140('0xc1')](_0xcb989a[_0x9140('0x3f')],_0xcb989a[_0x9140('0xc2')]);}if(this[_0x9140('0x32')][_0xcb989a['linkedid']]){if(_0xcb989a[_0x9140('0xc3')]==='21'){return;}return this[_0x9140('0xc1')](_0xcb989a[_0x9140('0x8f')],_0xcb989a[_0x9140('0xc2')],!![]);}var _0x240154=Object[_0x9140('0x9a')](this[_0x9140('0x32')]);for(var _0x532db7=0x0;_0x532db7<_0x240154[_0x9140('0xb8')];_0x532db7++){var _0x35ddd6=_['last'](this[_0x9140('0x32')][_0x240154[_0x532db7]]);if(_0x35ddd6&&_0x35ddd6['transferid']===_0xcb989a[_0x9140('0x3f')]){return this[_0x9140('0xc1')](_0x35ddd6[_0x9140('0x3f')],_0xcb989a[_0x9140('0xc2')],!![]);}}}}catch(_0x5ea0f2){logger['error'](_0x9140('0xc0'),_0xcb989a[_0x9140('0x3f')],util['inspect'](_0x5ea0f2,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9140('0xa')][_0x9140('0x23')]=function(_0x17e48b){try{if(this[_0x9140('0x59')](_0x17e48b)){logger[_0x9140('0x3c')]('[%s][voiceQueueReport][attendedtransfer]',_0x17e48b[_0x9140('0x3f')],util['inspect'](_0x17e48b,{'showHidden':![],'depth':null}));var _0x31e343;var _0x5bc4f4;var _0x42569a;if(this[_0x9140('0x32')][_0x17e48b[_0x9140('0xc4')]]){_0x31e343=_['last'](this[_0x9140('0x32')][_0x17e48b['transfereeuniqueid']]);_0x31e343[_0x9140('0xc5')]=_0x17e48b[_0x9140('0xc6')];_0x31e343[_0x9140('0xc7')]=_0x17e48b[_0x9140('0xc8')];_0x31e343[_0x9140('0x7c')]='ATTENDEDTRANSFER';_0x31e343[_0x9140('0x89')]=!![];_0x31e343[_0x9140('0xc9')]='ATTENDED';if(this[_0x9140('0x32')][_0x17e48b[_0x9140('0xc8')]]){_0x42569a=this[_0x9140('0x32')][_0x17e48b[_0x9140('0xc8')]];this['queueReports'][_0x17e48b[_0x9140('0xc8')]]=this[_0x9140('0x32')][_0x17e48b['transfereeuniqueid']];this[_0x9140('0x32')][_0x17e48b[_0x9140('0xc4')]]=_0x42569a;_0x5bc4f4=_[_0x9140('0x76')](this[_0x9140('0x32')][_0x17e48b['transfereeuniqueid']]);_0x5bc4f4['switch']=!![];}logger[_0x9140('0x70')]('[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0x17e48b[_0x9140('0x3f')],_0x31e343[_0x9140('0x41')],_0x31e343[_0x9140('0x48')],_0x31e343[_0x9140('0xc5')],_0x31e343[_0x9140('0xc7')]);}else if(this[_0x9140('0x32')][_0x17e48b[_0x9140('0xca')]]){_0x31e343=_[_0x9140('0x76')](this[_0x9140('0x32')][_0x17e48b[_0x9140('0xca')]]);_0x31e343['transferexten']=_0x17e48b['origtransfererexten'];_0x31e343['transferuniqueid']=_0x17e48b[_0x9140('0xcb')];_0x31e343['queuecallerexitreason']='ATTENDEDTRANSFER';_0x31e343[_0x9140('0x89')]=!![];_0x31e343['transfertype']=_0x9140('0xcc');if(this[_0x9140('0x32')][_0x17e48b[_0x9140('0xcb')]]){_0x42569a=this[_0x9140('0x32')][_0x17e48b[_0x9140('0xcb')]];this[_0x9140('0x32')][_0x17e48b[_0x9140('0xcb')]]=this[_0x9140('0x32')][_0x17e48b[_0x9140('0xca')]];this[_0x9140('0x32')][_0x17e48b[_0x9140('0xca')]]=_0x42569a;_0x5bc4f4=_['last'](this['queueReports'][_0x17e48b[_0x9140('0xca')]]);_0x5bc4f4[_0x9140('0xcd')]=!![];}logger[_0x9140('0x70')](_0x9140('0xce'),_0x17e48b['uniqueid'],_0x31e343['name'],_0x31e343[_0x9140('0x48')],_0x31e343[_0x9140('0xc5')],_0x31e343[_0x9140('0xc7')]);}else if(this[_0x9140('0x32')][_0x17e48b[_0x9140('0xcb')]]){_0x31e343=_['last'](this[_0x9140('0x32')][_0x17e48b[_0x9140('0xcb')]]);_0x31e343[_0x9140('0xc5')]=_0x17e48b[_0x9140('0xcf')];_0x31e343[_0x9140('0xc7')]=_0x17e48b[_0x9140('0xcb')];_0x31e343[_0x9140('0x7c')]=_0x9140('0x44');_0x31e343[_0x9140('0x89')]=!![];_0x31e343[_0x9140('0xc9')]=_0x9140('0xcc');_0x31e343['switch']=!![];_0x31e343[_0x9140('0xd0')]=_0x17e48b['transfereeuniqueid'];}else if(this[_0x9140('0x32')][_0x17e48b['secondtransfereruniqueid']]){_0x31e343=_[_0x9140('0x76')](this[_0x9140('0x32')][_0x17e48b[_0x9140('0xc8')]]);_0x31e343[_0x9140('0xc5')]=_0x17e48b[_0x9140('0xc6')];_0x31e343['transferuniqueid']=_0x17e48b[_0x9140('0xc8')];_0x31e343[_0x9140('0x7c')]='ATTENDEDTRANSFER';_0x31e343[_0x9140('0x89')]=!![];_0x31e343['transfertype']=_0x9140('0xcc');_0x31e343['switch']=!![];_0x31e343[_0x9140('0xd0')]=_0x17e48b[_0x9140('0xca')];}}}catch(_0x13d668){logger[_0x9140('0x33')]('[%s][voiceQueueReport][attendedtransfer]',_0x17e48b[_0x9140('0x3f')],util[_0x9140('0x31')](_0x13d668,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncBlindTransfer']=function(_0x23fac6){try{if(this[_0x9140('0x59')](_0x23fac6)){logger[_0x9140('0x3c')](_0x9140('0xd1'),_0x23fac6[_0x9140('0x3f')],util[_0x9140('0x31')](_0x23fac6,{'showHidden':![],'depth':null}));if(this[_0x9140('0x32')][_0x23fac6['transfereeuniqueid']]){var _0x1bbd90=_[_0x9140('0x76')](this[_0x9140('0x32')][_0x23fac6['transfereeuniqueid']]);_0x1bbd90[_0x9140('0x7c')]=_0x9140('0xd2');_0x1bbd90[_0x9140('0x89')]=!![];_0x1bbd90['transfertype']=_0x9140('0xd3');_0x1bbd90[_0x9140('0xc5')]=_0x23fac6['extension'];_0x1bbd90[_0x9140('0xc7')]=_0x23fac6['transfereeuniqueid'];logger['info'](_0x9140('0xd4'),_0x23fac6[_0x9140('0x3f')],_0x1bbd90['name'],_0x1bbd90[_0x9140('0x48')],_0x1bbd90[_0x9140('0xc5')],_0x1bbd90['transferuniqueid']);this[_0x9140('0x1d')]({'event':_0x9140('0xd5'),'uniqueid':_0x23fac6['transfereeuniqueid'],'context':_0x23fac6[_0x9140('0xd6')],'channel':_0x23fac6['transfererchannel']});}}}catch(_0x482ed2){logger[_0x9140('0x33')](_0x9140('0xd1'),_0x23fac6[_0x9140('0x3f')],util['inspect'](_0x482ed2,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9140('0xa')]['syncMusicOnHoldStart']=function(_0x5649ce){try{if(this[_0x9140('0x59')](_0x5649ce)){logger[_0x9140('0x3c')](_0x9140('0xd7'),_0x5649ce[_0x9140('0x3f')],util[_0x9140('0x31')](_0x5649ce,{'showHidden':![],'depth':null}));if(this[_0x9140('0x32')][_0x5649ce['uniqueid']]){var _0x4ca174=_[_0x9140('0x76')](this[_0x9140('0x32')][_0x5649ce[_0x9140('0x3f')]]);if(!_['isNil'](_0x4ca174['queuecallerleaveAt'])){_0x4ca174[_0x9140('0xd8')]=moment()['format'](_0x9140('0x6d'));logger['info']('[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s',_0x5649ce['uniqueid'],_0x4ca174[_0x9140('0xd8')]);}}}}catch(_0x2ddad5){logger[_0x9140('0x33')](_0x9140('0xd7'),_0x5649ce[_0x9140('0x3f')],util[_0x9140('0x31')](_0x2ddad5,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9140('0xa')][_0x9140('0xd9')]=function(_0x53812e){try{if(this[_0x9140('0x59')](_0x53812e)){logger[_0x9140('0x3c')](_0x9140('0xda'),_0x53812e[_0x9140('0x3f')],util[_0x9140('0x31')](_0x53812e,{'showHidden':![],'depth':null}));if(this[_0x9140('0x32')][_0x53812e[_0x9140('0x3f')]]){var _0x29083f=_['last'](this[_0x9140('0x32')][_0x53812e[_0x9140('0x3f')]]);if(!_[_0x9140('0x2b')](_0x29083f['mohstarttime'])){_0x29083f['mohtime']+=moment()['milliseconds'](0x0)[_0x9140('0xba')](_0x29083f[_0x9140('0xd8')],'seconds');logger[_0x9140('0x70')](_0x9140('0xdb'),_0x53812e[_0x9140('0x3f')],_0x29083f[_0x9140('0xdc')]);delete _0x29083f[_0x9140('0xd8')];}}}}catch(_0x4fdbaa){logger[_0x9140('0x33')](_0x9140('0xda'),_0x53812e[_0x9140('0x3f')],util[_0x9140('0x31')](_0x4fdbaa,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9140('0xa')]['syncNewExten']=function(_0x204064){try{if(this[_0x9140('0x59')](_0x204064)){logger[_0x9140('0x3c')](_0x9140('0xdd'),_0x204064[_0x9140('0x3f')],util['inspect'](_0x204064,{'showHidden':![],'depth':null}));if(_0x204064[_0x9140('0xde')]['toLowerCase']()===_0x9140('0xdf')){_0x204064[_0x9140('0xe0')]=_0x204064[_0x9140('0xe1')]&&_0x204064[_0x9140('0xe1')][_0x9140('0x8c')](_0x9140('0xe2'))?_0x204064[_0x9140('0xe1')]:(_0x204064[_0x9140('0xe1')]||_0x204064['applicationdata'])['toLowerCase']();if(_[_0x9140('0x8c')](_0x204064[_0x9140('0xe0')][_0x9140('0x8e')](),_0x9140('0xe3'))){logger[_0x9140('0x70')](_0x9140('0xe4'),_0x204064[_0x9140('0x3f')],_0x204064['application'],_0x204064[_0x9140('0xe0')]);if(_[_0x9140('0x5a')](this[_0x9140('0xf')][_0x204064['uniqueid']]))this[_0x9140('0xf')][_0x204064[_0x9140('0x3f')]]={};var _0xb5aa61=_0x204064['applicationdata'][_0x9140('0xe5')]('=');var _0x3d3142=_0xb5aa61[0x0]['toLowerCase']()[_0x9140('0xe6')](/cdr\((.*)\)/);if(_0x3d3142)this[_0x9140('0xf')][_0x204064['uniqueid']][_0x3d3142[0x1]]=_0xb5aa61[0x1];}}}}catch(_0x2952f3){logger[_0x9140('0x33')](_0x9140('0xe7'),_0x204064['uniqueid'],util[_0x9140('0x31')](_0x2952f3,{'showHidden':![],'depth':null}));}};module[_0x9140('0xe8')]=VoiceQueueReport;
\ No newline at end of file
index 77bf35b..9414d79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8dee=['CreateReportAgentPreview','../client','createHistory','queue','Request'];(function(_0x1f6a93,_0x572adf){var _0x2386e2=function(_0x3e1b96){while(--_0x3e1b96){_0x1f6a93['push'](_0x1f6a93['shift']());}};_0x2386e2(++_0x572adf);}(_0x8dee,0xce));var _0xe8de=function(_0x40c433,_0x55c694){_0x40c433=_0x40c433-0x0;var _0x39139e=_0x8dee[_0x40c433];return _0x39139e;};'use strict';var client=require(_0xe8de('0x0'));exports[_0xe8de('0x1')]=function(_0x5f3578){return function(){_0x5f3578['campaign']=_0x5f3578[_0xe8de('0x2')];return client[_0xe8de('0x3')](_0xe8de('0x4'),{'body':_0x5f3578,'log':_0xe8de('0x4')});};};
\ No newline at end of file
+var _0xed6f=['queue','Request','CreateReportAgentPreview','../client','createHistory','campaign'];(function(_0x18c57c,_0x10d927){var _0x2412b3=function(_0x1a5acc){while(--_0x1a5acc){_0x18c57c['push'](_0x18c57c['shift']());}};_0x2412b3(++_0x10d927);}(_0xed6f,0x1e3));var _0xfed6=function(_0x2281af,_0x251abd){_0x2281af=_0x2281af-0x0;var _0x10b37f=_0xed6f[_0x2281af];return _0x10b37f;};'use strict';var client=require(_0xfed6('0x0'));exports[_0xfed6('0x1')]=function(_0x3d2c13){return function(){_0x3d2c13[_0xfed6('0x2')]=_0x3d2c13[_0xfed6('0x3')];return client[_0xfed6('0x4')]('CreateReportAgentPreview',{'body':_0x3d2c13,'log':_0xfed6('0x5')});};};
\ No newline at end of file
index ecaa83e..22e02fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe900=['CreateAttachment','../client','create','Request'];(function(_0xb5fc3e,_0x234703){var _0x2efc3c=function(_0x4e4e44){while(--_0x4e4e44){_0xb5fc3e['push'](_0xb5fc3e['shift']());}};_0x2efc3c(++_0x234703);}(_0xe900,0xfd));var _0x0e90=function(_0x528fa2,_0x3753af){_0x528fa2=_0x528fa2-0x0;var _0x282683=_0xe900[_0x528fa2];return _0x282683;};'use strict';var client=require(_0x0e90('0x0'));exports[_0x0e90('0x1')]=function(_0x5e7088){return client[_0x0e90('0x2')](_0x0e90('0x3'),{'body':_0x5e7088,'log':_0x0e90('0x3')});};
\ No newline at end of file
+var _0x44fd=['CreateAttachment','create','Request'];(function(_0x169f1e,_0x2cd3ea){var _0x2a56c7=function(_0x461fca){while(--_0x461fca){_0x169f1e['push'](_0x169f1e['shift']());}};_0x2a56c7(++_0x2cd3ea);}(_0x44fd,0x106));var _0xd44f=function(_0x37e886,_0x17d0ad){_0x37e886=_0x37e886-0x0;var _0x57c5cd=_0x44fd[_0x37e886];return _0x57c5cd;};'use strict';var client=require('../client');exports[_0xd44f('0x0')]=function(_0x17064c){return client[_0xd44f('0x1')](_0xd44f('0x2'),{'body':_0x17064c,'log':'CreateAttachment'});};
\ No newline at end of file
index eed51b7..99996a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialTimezone','dialGlobalInterval','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumWordLength','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','Trunk','active','TrunkBackup','Interval','Intervals','interval','SquareProject','getCampaign','../client','getCampaigns','Request','GetCampaign','name','type','limitCalls','dialOriginateCallerIdName','dialOriginateTimeout','dialCongestionMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry'];(function(_0x34f545,_0x2bd2ee){var _0x1ff6b8=function(_0x582e3b){while(--_0x582e3b){_0x34f545['push'](_0x34f545['shift']());}};_0x1ff6b8(++_0x2bd2ee);}(_0x2ef3,0xba));var _0x32ef=function(_0x49e6d6,_0x1635d1){_0x49e6d6=_0x49e6d6-0x0;var _0x52259d=_0x2ef3[_0x49e6d6];return _0x52259d;};'use strict';var client=require(_0x32ef('0x0'));exports[_0x32ef('0x1')]=function(){return function(){return client[_0x32ef('0x2')](_0x32ef('0x3'),{'options':{'raw':![],'attributes':['id',_0x32ef('0x4'),_0x32ef('0x5'),'active',_0x32ef('0x6'),_0x32ef('0x7'),'dialOriginateCallerIdNumber',_0x32ef('0x8'),_0x32ef('0x9'),'dialCongestionRetryFrequency','dialBusyMaxRetry',_0x32ef('0xa'),_0x32ef('0xb'),_0x32ef('0xc'),_0x32ef('0xd'),_0x32ef('0xe'),_0x32ef('0xf'),_0x32ef('0x10'),_0x32ef('0x11'),_0x32ef('0x12'),_0x32ef('0x13'),'dialMachineMaxRetry','dialMachineRetryFrequency',_0x32ef('0x14'),_0x32ef('0x15'),_0x32ef('0x16'),_0x32ef('0x17'),'dialAMDActive',_0x32ef('0x18'),'dialAMDGreeting',_0x32ef('0x19'),'dialAMDTotalAnalysisTime',_0x32ef('0x1a'),_0x32ef('0x1b'),'dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold',_0x32ef('0x1c'),'dialOrderByScheduledAt',_0x32ef('0x1d'),_0x32ef('0x1e'),_0x32ef('0x1f')],'include':[{'model':_0x32ef('0x20'),'as':'Trunk','attributes':['id','name','callerid',_0x32ef('0x21')]},{'model':_0x32ef('0x20'),'as':_0x32ef('0x22'),'attributes':['id','name','callerid',_0x32ef('0x21')]},{'model':_0x32ef('0x23'),'as':_0x32ef('0x23'),'attributes':['id','name'],'include':[{'model':_0x32ef('0x23'),'as':_0x32ef('0x24'),'attributes':['id','name',_0x32ef('0x25')]}]},{'model':_0x32ef('0x26'),'as':_0x32ef('0x26'),'attributes':['id',_0x32ef('0x4')]}]},'log':_0x32ef('0x27')});};};
\ No newline at end of file
+var _0x326f=['dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectRetryFrequency','dialGlobalInterval','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialPrefix','Trunk','callerid','TrunkBackup','Interval','Intervals','SquareProject','../client','GetCampaign','name','type','active','limitCalls','dialOriginateCallerIdName'];(function(_0x411b3b,_0x3116cb){var _0x532ce2=function(_0x345b24){while(--_0x345b24){_0x411b3b['push'](_0x411b3b['shift']());}};_0x532ce2(++_0x3116cb);}(_0x326f,0xd1));var _0xf326=function(_0x40ab49,_0x101131){_0x40ab49=_0x40ab49-0x0;var _0x1d661f=_0x326f[_0x40ab49];return _0x1d661f;};'use strict';var client=require(_0xf326('0x0'));exports['getCampaigns']=function(){return function(){return client['Request'](_0xf326('0x1'),{'options':{'raw':![],'attributes':['id',_0xf326('0x2'),_0xf326('0x3'),_0xf326('0x4'),_0xf326('0x5'),_0xf326('0x6'),_0xf326('0x7'),_0xf326('0x8'),_0xf326('0x9'),_0xf326('0xa'),'dialBusyMaxRetry',_0xf326('0xb'),_0xf326('0xc'),_0xf326('0xd'),_0xf326('0xe'),'dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry',_0xf326('0xf'),_0xf326('0x10'),_0xf326('0x11'),_0xf326('0x12'),_0xf326('0x13'),'dialAgentRejectMaxRetry',_0xf326('0x14'),'dialTimezone',_0xf326('0x15'),'dialAMDActive',_0xf326('0x16'),'dialAMDGreeting',_0xf326('0x17'),_0xf326('0x18'),'dialAMDMinWordLength',_0xf326('0x19'),_0xf326('0x1a'),_0xf326('0x1b'),_0xf326('0x1c'),'dialOrderByScheduledAt',_0xf326('0x1d'),'dialRandomLastDigitCallerIdNumber','dialCutDigit'],'include':[{'model':_0xf326('0x1e'),'as':_0xf326('0x1e'),'attributes':['id',_0xf326('0x2'),_0xf326('0x1f'),_0xf326('0x4')]},{'model':_0xf326('0x1e'),'as':_0xf326('0x20'),'attributes':['id',_0xf326('0x2'),'callerid',_0xf326('0x4')]},{'model':_0xf326('0x21'),'as':_0xf326('0x21'),'attributes':['id',_0xf326('0x2')],'include':[{'model':_0xf326('0x21'),'as':_0xf326('0x22'),'attributes':['id','name','interval']}]},{'model':'SquareProject','as':_0xf326('0x23'),'attributes':['id',_0xf326('0x2')]}]},'log':'getCampaign'});};};
\ No newline at end of file
index b568286..645fcb5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0f4=['getContacts','Request','GetCmContact','../client','createContact','CreateCmContact'];(function(_0x537b0e,_0x2c6c74){var _0x4ffc55=function(_0x35259b){while(--_0x35259b){_0x537b0e['push'](_0x537b0e['shift']());}};_0x4ffc55(++_0x2c6c74);}(_0xe0f4,0xa5));var _0x4e0f=function(_0x1494c4,_0x2e438d){_0x1494c4=_0x1494c4-0x0;var _0x2cceff=_0xe0f4[_0x1494c4];return _0x2cceff;};'use strict';var client=require(_0x4e0f('0x0'));exports[_0x4e0f('0x1')]=function(_0x234817){return function(){return client['Request'](_0x4e0f('0x2'),{'body':_0x234817,'log':'CreateCmContact'});};};exports[_0x4e0f('0x3')]=function(_0x56a8c9){return function(){return client[_0x4e0f('0x4')](_0x4e0f('0x5'),{'options':_0x56a8c9,'log':_0x4e0f('0x5')});};};
\ No newline at end of file
+var _0x9d71=['CreateCmContact','getContacts','GetCmContact','../client','createContact','Request'];(function(_0x48f70e,_0x4f6526){var _0x14bf8f=function(_0x261b5c){while(--_0x261b5c){_0x48f70e['push'](_0x48f70e['shift']());}};_0x14bf8f(++_0x4f6526);}(_0x9d71,0x159));var _0x19d7=function(_0x5aebe8,_0x5461c7){_0x5aebe8=_0x5aebe8-0x0;var _0x5dd96e=_0x9d71[_0x5aebe8];return _0x5dd96e;};'use strict';var client=require(_0x19d7('0x0'));exports[_0x19d7('0x1')]=function(_0x534865){return function(){return client[_0x19d7('0x2')]('CreateCmContact',{'body':_0x534865,'log':_0x19d7('0x3')});};};exports[_0x19d7('0x4')]=function(_0x127798){return function(){return client['Request']('GetCmContact',{'options':_0x127798,'log':_0x19d7('0x5')});};};
\ No newline at end of file
index 1c87f1a..4df3cfe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6420=['CampaignId','countReScheduled','CountReScheduled','getContactPreview','GetCmHopperPreview','name','VoiceQueue','GetContactRecallMe','User','Agent','voicePause','resetActiveCalls','ResetActiveCalls','handlePreviewRecallNotifications','CmHopperHandlePreviewRecallNotifications','../client','moment','Request','Contact','getCmHopper','updateContacts','UpdateCmHopper','YYYY-MM-DD\x20HH:mm:ss','rescheduleContact','VoiceQueueId','DestroyCmHopper','getContactDialer','GetContactDialer','format','priority','DESC','scheduledat','ASC','getContactDialerIvr','CmContact','GetContactDialerIvr','queue','MoveContactManagedDialer','ContactId','ListId'];(function(_0x5e1959,_0x5d6892){var _0x45c553=function(_0x24f2fd){while(--_0x24f2fd){_0x5e1959['push'](_0x5e1959['shift']());}};_0x45c553(++_0x5d6892);}(_0x6420,0x1c7));var _0x0642=function(_0x710815,_0x520da8){_0x710815=_0x710815-0x0;var _0x5b3b89=_0x6420[_0x710815];return _0x5b3b89;};'use strict';var client=require(_0x0642('0x0'));var moment=require(_0x0642('0x1'));exports['getContacts']=function(_0x42d175,_0x52ac97){return function(){return client[_0x0642('0x2')]('GetCmHopper',{'options':{'where':{'VoiceQueueId':_0x42d175},'include':[{'model':'CmContact','as':_0x0642('0x3')}],'limit':_0x52ac97,'raw':![]},'log':_0x0642('0x4')});};};exports[_0x0642('0x5')]=function(_0x15f6c6,_0x709325,_0x17f939){return function(){return client[_0x0642('0x2')](_0x0642('0x6'),{'body':_0x15f6c6,'options':{'where':{'VoiceQueueId':_0x709325,'scheduledat':{'$lte':moment()['format'](_0x0642('0x7'))}},'limit':_0x17f939},'log':'UpdateCmHopper'});};};exports[_0x0642('0x8')]=function(_0xf8818c){return function(){return client['Request'](_0x0642('0x6'),{'body':_0xf8818c,'options':{'where':{'ContactId':_0xf8818c['ContactId'],'ListId':_0xf8818c['ListId'],'VoiceQueueId':_0xf8818c[_0x0642('0x9')],'CampaignId':_0xf8818c['CampaignId']}},'log':'rescheduleContact'});};};exports['destroyContact']=function(_0x41b0e8,_0x4f42cf,_0x4be3ef){return function(){return client['Request'](_0x0642('0xa'),{'options':{'where':{'VoiceQueueId':_0x41b0e8,'ListId':_0x4f42cf,'ContactId':_0x4be3ef}},'log':_0x0642('0xa')});};};exports[_0x0642('0xb')]=function(_0x3395ea,_0x471686,_0x3ceff1,_0x2bba98){return function(){return client[_0x0642('0x2')](_0x0642('0xc'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x3395ea,'active':![],'scheduledat':{'$lte':moment()[_0x0642('0xd')](_0x0642('0x7'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x471686}}]},'order':[[_0x0642('0xe'),_0x0642('0xf')],[_0x0642('0x10'),_0x2bba98],['id',_0x0642('0x11')]],'raw':!![],'limit':_0x3ceff1},'log':'GetContactDialer'});};};exports[_0x0642('0x12')]=function(_0x360da8,_0xde06b5,_0x34c641){return function(){return client[_0x0642('0x2')]('GetContactDialer',{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x360da8,'active':![],'scheduledat':{'$lte':moment()[_0x0642('0xd')]('YYYY-MM-DD\x20HH:mm:ss')}},'include':[{'model':_0x0642('0x13'),'as':'Contact'}],'order':[[_0x0642('0xe'),_0x0642('0xf')],[_0x0642('0x10'),_0x34c641],['id',_0x0642('0x11')]],'raw':!![],'limit':_0xde06b5},'log':_0x0642('0x14')});};};exports['moveContactManagedDialer']=function(_0x2e36fa,_0xd7c7fb){return function(){_0x2e36fa['campaign']=_0x2e36fa[_0x0642('0x15')];return client[_0x0642('0x2')](_0x0642('0x16'),{'body':_0x2e36fa,'options':{'where':{'ContactId':_0x2e36fa[_0x0642('0x17')],'ListId':_0x2e36fa[_0x0642('0x18')],'VoiceQueueId':_0x2e36fa[_0x0642('0x9')],'CampaignId':_0x2e36fa[_0x0642('0x19')],'active':_0xd7c7fb?undefined:!![]}},'log':_0x0642('0x16')});};};exports[_0x0642('0x1a')]=function(_0x4bffa3){return function(){return client[_0x0642('0x2')](_0x0642('0x1b'),{'options':{'where':{'VoiceQueueId':_0x4bffa3['id']?_0x4bffa3['id']||null:null}},'log':_0x0642('0x1a')});};};exports[_0x0642('0x1c')]=function(_0x3d025d){return function(){return client[_0x0642('0x2')](_0x0642('0x1d'),{'options':{'where':{'id':_0x3d025d},'include':[{'model':_0x0642('0x13'),'as':_0x0642('0x3')},{'model':'User','as':'Agent','attributes':['id',_0x0642('0x1e')]},{'model':_0x0642('0x1f'),'as':'Queue','attributes':['id',_0x0642('0x1e')]}],'raw':!![]},'log':'getCmHopper'});};};exports['unlockContact']=function(_0x40096f,_0x3c383c,_0x5129d1){return function(){return client[_0x0642('0x2')](_0x0642('0x6'),{'body':_0x40096f,'options':{'where':{'id':_0x3c383c},'limit':_0x5129d1},'log':_0x0642('0x6')});};};exports['getContactRecallMe']=function(_0x1dd014,_0x451e57){return function(){return client[_0x0642('0x2')](_0x0642('0x20'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x1dd014,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0x0642('0xd')](_0x0642('0x7'))},'UserId':{'$in':_0x451e57}},'order':[[_0x0642('0xe'),_0x0642('0xf')],[_0x0642('0x10'),'DESC'],['id',_0x0642('0x11')]],'include':[{'model':_0x0642('0x13'),'as':_0x0642('0x3')},{'model':_0x0642('0x21'),'as':_0x0642('0x22'),'attributes':['id',_0x0642('0x1e'),_0x0642('0x23')]}],'group':'db.CmHopper.UserId','raw':!![]},'log':'GetContactDialer'});};};exports[_0x0642('0x24')]=function(_0x2a9cdd,_0x43f689){return client['Request'](_0x0642('0x25'),{'body':_0x2a9cdd,'options':_0x43f689||{},'log':'ResetActiveCalls'});};exports[_0x0642('0x26')]=function(_0x3dbac7,_0x4d9e23,_0x129dad){return function(){return client[_0x0642('0x2')](_0x0642('0x27'),{'body':{'where':{'voiceQueueIds':_0x3dbac7,'interval':_0x4d9e23,'availableAgentsIds':_0x129dad}},'log':_0x0642('0x26')});};};
\ No newline at end of file
+var _0xc668=['moveContactManagedDialer','campaign','queue','MoveContactManagedDialer','VoiceQueueId','countReScheduled','CountReScheduled','GetCmHopperPreview','User','name','Queue','unlockContact','GetContactRecallMe','scheduledat','Agent','voicePause','db.CmHopper.UserId','ResetActiveCalls','handlePreviewRecallNotifications','../client','getContacts','Request','CmContact','Contact','getCmHopper','updateContacts','UpdateCmHopper','YYYY-MM-DD\x20HH:mm:ss','rescheduleContact','ContactId','ListId','CampaignId','destroyContact','DestroyCmHopper','GetContactDialer','format','priority','ASC','getContactDialerIvr','DESC'];(function(_0x5b0bc8,_0x3f86b0){var _0x1626a5=function(_0x204b97){while(--_0x204b97){_0x5b0bc8['push'](_0x5b0bc8['shift']());}};_0x1626a5(++_0x3f86b0);}(_0xc668,0x8b));var _0x8c66=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xc668[_0x14add3];return _0x4a174f;};'use strict';var client=require(_0x8c66('0x0'));var moment=require('moment');exports[_0x8c66('0x1')]=function(_0x38c293,_0x13a4a3){return function(){return client[_0x8c66('0x2')]('GetCmHopper',{'options':{'where':{'VoiceQueueId':_0x38c293},'include':[{'model':_0x8c66('0x3'),'as':_0x8c66('0x4')}],'limit':_0x13a4a3,'raw':![]},'log':_0x8c66('0x5')});};};exports[_0x8c66('0x6')]=function(_0x5dff56,_0x665b4a,_0x439005){return function(){return client['Request'](_0x8c66('0x7'),{'body':_0x5dff56,'options':{'where':{'VoiceQueueId':_0x665b4a,'scheduledat':{'$lte':moment()['format'](_0x8c66('0x8'))}},'limit':_0x439005},'log':_0x8c66('0x7')});};};exports[_0x8c66('0x9')]=function(_0x5810e4){return function(){return client[_0x8c66('0x2')](_0x8c66('0x7'),{'body':_0x5810e4,'options':{'where':{'ContactId':_0x5810e4[_0x8c66('0xa')],'ListId':_0x5810e4[_0x8c66('0xb')],'VoiceQueueId':_0x5810e4['VoiceQueueId'],'CampaignId':_0x5810e4[_0x8c66('0xc')]}},'log':_0x8c66('0x9')});};};exports[_0x8c66('0xd')]=function(_0x2c604f,_0x48abb8,_0x21e850){return function(){return client[_0x8c66('0x2')](_0x8c66('0xe'),{'options':{'where':{'VoiceQueueId':_0x2c604f,'ListId':_0x48abb8,'ContactId':_0x21e850}},'log':_0x8c66('0xe')});};};exports['getContactDialer']=function(_0x31a86f,_0x59369a,_0x5211d9,_0x221ad9){return function(){return client['Request'](_0x8c66('0xf'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x31a86f,'active':![],'scheduledat':{'$lte':moment()[_0x8c66('0x10')](_0x8c66('0x8'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x59369a}}]},'order':[[_0x8c66('0x11'),'DESC'],['scheduledat',_0x221ad9],['id',_0x8c66('0x12')]],'raw':!![],'limit':_0x5211d9},'log':_0x8c66('0xf')});};};exports[_0x8c66('0x13')]=function(_0x532da8,_0x3d788e,_0x24ac44){return function(){return client['Request'](_0x8c66('0xf'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x532da8,'active':![],'scheduledat':{'$lte':moment()[_0x8c66('0x10')](_0x8c66('0x8'))}},'include':[{'model':_0x8c66('0x3'),'as':'Contact'}],'order':[[_0x8c66('0x11'),_0x8c66('0x14')],['scheduledat',_0x24ac44],['id',_0x8c66('0x12')]],'raw':!![],'limit':_0x3d788e},'log':'GetContactDialerIvr'});};};exports[_0x8c66('0x15')]=function(_0x1cc638,_0x124b3a){return function(){_0x1cc638[_0x8c66('0x16')]=_0x1cc638[_0x8c66('0x17')];return client[_0x8c66('0x2')](_0x8c66('0x18'),{'body':_0x1cc638,'options':{'where':{'ContactId':_0x1cc638[_0x8c66('0xa')],'ListId':_0x1cc638[_0x8c66('0xb')],'VoiceQueueId':_0x1cc638[_0x8c66('0x19')],'CampaignId':_0x1cc638['CampaignId'],'active':_0x124b3a?undefined:!![]}},'log':'MoveContactManagedDialer'});};};exports[_0x8c66('0x1a')]=function(_0x59a13d){return function(){return client['Request'](_0x8c66('0x1b'),{'options':{'where':{'VoiceQueueId':_0x59a13d['id']?_0x59a13d['id']||null:null}},'log':'countReScheduled'});};};exports['getContactPreview']=function(_0x1e872e){return function(){return client[_0x8c66('0x2')](_0x8c66('0x1c'),{'options':{'where':{'id':_0x1e872e},'include':[{'model':'CmContact','as':_0x8c66('0x4')},{'model':_0x8c66('0x1d'),'as':'Agent','attributes':['id',_0x8c66('0x1e')]},{'model':'VoiceQueue','as':_0x8c66('0x1f'),'attributes':['id',_0x8c66('0x1e')]}],'raw':!![]},'log':'getCmHopper'});};};exports[_0x8c66('0x20')]=function(_0x2418d6,_0x214b80,_0x5707ff){return function(){return client[_0x8c66('0x2')](_0x8c66('0x7'),{'body':_0x2418d6,'options':{'where':{'id':_0x214b80},'limit':_0x5707ff},'log':_0x8c66('0x7')});};};exports['getContactRecallMe']=function(_0xe3a80a,_0x265b4d){return function(){return client[_0x8c66('0x2')](_0x8c66('0x21'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0xe3a80a,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()['format'](_0x8c66('0x8'))},'UserId':{'$in':_0x265b4d}},'order':[['priority','DESC'],[_0x8c66('0x22'),_0x8c66('0x14')],['id',_0x8c66('0x12')]],'include':[{'model':'CmContact','as':_0x8c66('0x4')},{'model':_0x8c66('0x1d'),'as':_0x8c66('0x23'),'attributes':['id','name',_0x8c66('0x24')]}],'group':_0x8c66('0x25'),'raw':!![]},'log':'GetContactDialer'});};};exports['resetActiveCalls']=function(_0x30a558,_0x44109e){return client[_0x8c66('0x2')]('ResetActiveCalls',{'body':_0x30a558,'options':_0x44109e||{},'log':_0x8c66('0x26')});};exports['handlePreviewRecallNotifications']=function(_0x507f5b,_0x4b6594,_0x441716){return function(){return client['Request']('CmHopperHandlePreviewRecallNotifications',{'body':{'where':{'voiceQueueIds':_0x507f5b,'interval':_0x4b6594,'availableAgentsIds':_0x441716}},'log':_0x8c66('0x27')});};};
\ No newline at end of file
index 00809e8..f399a9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8de7=['moment','verifyAdditionalPhones','Request','VerifyAdditionalPhones','SwapAdditionalPhones','incrementPreviewCounters','IncrementPreviewCounters','../client'];(function(_0x263f9d,_0x3d854e){var _0x4c4efa=function(_0x48d506){while(--_0x48d506){_0x263f9d['push'](_0x263f9d['shift']());}};_0x4c4efa(++_0x3d854e);}(_0x8de7,0x1e7));var _0x78de=function(_0xe601a5,_0x2fb41e){_0xe601a5=_0xe601a5-0x0;var _0xbacb3b=_0x8de7[_0xe601a5];return _0xbacb3b;};'use strict';var client=require(_0x78de('0x0'));var moment=require(_0x78de('0x1'));exports[_0x78de('0x2')]=function(_0x512996,_0x104707,_0x49844e){return function(){return client[_0x78de('0x3')](_0x78de('0x4'),{'body':_0x512996,'reason':_0x104707,'entity':_0x49844e,'log':_0x78de('0x4')});};};exports['swapAdditionalPhones']=function(_0x4fae48,_0x387415,_0x20689a){return function(){return client[_0x78de('0x3')](_0x78de('0x5'),{'body':_0x4fae48,'duration':_0x387415,'waitTime':_0x20689a,'log':_0x78de('0x5')});};};exports[_0x78de('0x6')]=function(_0x4a101b){return function(){return client[_0x78de('0x3')](_0x78de('0x7'),{'body':_0x4a101b,'log':_0x78de('0x7')});};};
\ No newline at end of file
+var _0x44d4=['incrementPreviewCounters','IncrementPreviewCounters','moment','verifyAdditionalPhones','Request','VerifyAdditionalPhones','swapAdditionalPhones','SwapAdditionalPhones'];(function(_0x3412ab,_0x5a2b22){var _0x37ad1d=function(_0x46ef9b){while(--_0x46ef9b){_0x3412ab['push'](_0x3412ab['shift']());}};_0x37ad1d(++_0x5a2b22);}(_0x44d4,0x16a));var _0x444d=function(_0x1d3d1a,_0x2a3dde){_0x1d3d1a=_0x1d3d1a-0x0;var _0x4bc3ad=_0x44d4[_0x1d3d1a];return _0x4bc3ad;};'use strict';var client=require('../client');var moment=require(_0x444d('0x0'));exports[_0x444d('0x1')]=function(_0x444fbd,_0x5a264d,_0x31b0fa){return function(){return client[_0x444d('0x2')]('VerifyAdditionalPhones',{'body':_0x444fbd,'reason':_0x5a264d,'entity':_0x31b0fa,'log':_0x444d('0x3')});};};exports[_0x444d('0x4')]=function(_0x33d08d,_0x28d4c0,_0x4da1a6){return function(){return client[_0x444d('0x2')](_0x444d('0x5'),{'body':_0x33d08d,'duration':_0x28d4c0,'waitTime':_0x4da1a6,'log':_0x444d('0x5')});};};exports[_0x444d('0x6')]=function(_0x3b7442){return function(){return client[_0x444d('0x2')]('IncrementPreviewCounters',{'body':_0x3b7442,'log':_0x444d('0x7')});};};
\ No newline at end of file
index 75ab35b..b494b91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbaa=['Request','GetCmHopperBlack','checkIsBlackListIvr','CampaignId','phone','../client','checkIsBlackList'];(function(_0x45649d,_0x5d9ab7){var _0x589a32=function(_0x3646aa){while(--_0x3646aa){_0x45649d['push'](_0x45649d['shift']());}};_0x589a32(++_0x5d9ab7);}(_0xcbaa,0x171));var _0xacba=function(_0x4f5108,_0x46a54b){_0x4f5108=_0x4f5108-0x0;var _0x2d56ca=_0xcbaa[_0x4f5108];return _0x2d56ca;};'use strict';var client=require(_0xacba('0x0'));exports[_0xacba('0x1')]=function(_0x2c997c){return function(){return client[_0xacba('0x2')](_0xacba('0x3'),{'options':{'where':{'VoiceQueueId':_0x2c997c['VoiceQueueId'],'phone':_0x2c997c['phone']},'raw':![]},'log':_0xacba('0x3')});};};exports[_0xacba('0x4')]=function(_0x29a11c){return function(){return client[_0xacba('0x2')](_0xacba('0x3'),{'options':{'where':{'CampaignId':_0x29a11c[_0xacba('0x5')],'phone':_0x29a11c[_0xacba('0x6')]},'raw':![]},'log':'GetCmHopperBlackIvr'});};};
\ No newline at end of file
+var _0xfddc=['phone','checkIsBlackListIvr','CampaignId','GetCmHopperBlackIvr','../client','checkIsBlackList','Request','GetCmHopperBlack'];(function(_0x4c6883,_0x17235e){var _0x5d9780=function(_0x76ef5f){while(--_0x76ef5f){_0x4c6883['push'](_0x4c6883['shift']());}};_0x5d9780(++_0x17235e);}(_0xfddc,0x12c));var _0xcfdd=function(_0x44bcb0,_0x235aa9){_0x44bcb0=_0x44bcb0-0x0;var _0xfaf881=_0xfddc[_0x44bcb0];return _0xfaf881;};'use strict';var client=require(_0xcfdd('0x0'));exports[_0xcfdd('0x1')]=function(_0x4de863){return function(){return client[_0xcfdd('0x2')](_0xcfdd('0x3'),{'options':{'where':{'VoiceQueueId':_0x4de863['VoiceQueueId'],'phone':_0x4de863[_0xcfdd('0x4')]},'raw':![]},'log':_0xcfdd('0x3')});};};exports[_0xcfdd('0x5')]=function(_0x7ef52a){return function(){return client[_0xcfdd('0x2')](_0xcfdd('0x3'),{'options':{'where':{'CampaignId':_0x7ef52a[_0xcfdd('0x6')],'phone':_0x7ef52a[_0xcfdd('0x4')]},'raw':![]},'log':_0xcfdd('0x7')});};};
\ No newline at end of file
index a6a049c..674b1ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x871f=['queue','createContact','campaign'];(function(_0x26b4a0,_0x10475c){var _0x32cace=function(_0x17e407){while(--_0x17e407){_0x26b4a0['push'](_0x26b4a0['shift']());}};_0x32cace(++_0x10475c);}(_0x871f,0x100));var _0xf871=function(_0x155260,_0xec5e1b){_0x155260=_0x155260-0x0;var _0x3bea8c=_0x871f[_0x155260];return _0x3bea8c;};'use strict';var client=require('../client');exports[_0xf871('0x0')]=function(_0x5e5707){return function(){_0x5e5707[_0xf871('0x1')]=_0x5e5707[_0xf871('0x2')];return client['Request']('CreateCmHopperFinal',{'body':_0x5e5707,'log':'CreateCmHopperFinal'});};};
\ No newline at end of file
+var _0x55b2=['Request','CreateCmHopperFinal','../client','queue'];(function(_0x57486e,_0x32283b){var _0x5f110b=function(_0xa18fc3){while(--_0xa18fc3){_0x57486e['push'](_0x57486e['shift']());}};_0x5f110b(++_0x32283b);}(_0x55b2,0x9e));var _0x255b=function(_0x44b94e,_0x46b00c){_0x44b94e=_0x44b94e-0x0;var _0x446fa6=_0x55b2[_0x44b94e];return _0x446fa6;};'use strict';var client=require(_0x255b('0x0'));exports['createContact']=function(_0x407cd0){return function(){_0x407cd0['campaign']=_0x407cd0[_0x255b('0x1')];return client[_0x255b('0x2')](_0x255b('0x3'),{'body':_0x407cd0,'log':_0x255b('0x3')});};};
\ No newline at end of file
index f94f97c..7a5b704 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6f5=['endOf','GetVoiceQueueHopperHistory','GetCampaignHopperHistory','ivr','moment','campaign','queue','Request','CreateCmHopperHistory','avgHandleTime','subtract','minutes','format','YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory','getVoiceQueueHopperHistory','startOf','day'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb6f5,0x1ea));var _0x5b6f=function(_0x8bca3f,_0x158cf8){_0x8bca3f=_0x8bca3f-0x0;var _0x448ab5=_0xb6f5[_0x8bca3f];return _0x448ab5;};'use strict';var client=require('../client');var moment=require(_0x5b6f('0x0'));exports['createHistory']=function(_0x97529d){return function(){_0x97529d[_0x5b6f('0x1')]=_0x97529d[_0x5b6f('0x2')];return client[_0x5b6f('0x3')](_0x5b6f('0x4'),{'body':_0x97529d,'log':'CreateCmHopperHistory'});};};exports[_0x5b6f('0x5')]=function(_0x3d8d5b){return function(){return client[_0x5b6f('0x3')]('AvgHandleTime',{'options':{'where':{'endtime':{'$between':[moment()[_0x5b6f('0x6')](_0x3d8d5b,_0x5b6f('0x7'))['format']('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0x5b6f('0x8')](_0x5b6f('0x9'))]}},'raw':![]},'log':_0x5b6f('0xa')});};};exports[_0x5b6f('0xb')]=function(_0x5bdca9){return function(){return client[_0x5b6f('0x3')]('GetVoiceQueueHopperHistory',{'options':{'where':{'createdAt':{'$between':[moment()[_0x5b6f('0xc')](_0x5b6f('0xd'))['format'](_0x5b6f('0x9')),moment()[_0x5b6f('0xe')](_0x5b6f('0xd'))['format']('YYYY-MM-DD\x20HH:mm:ss')]},'campaigntype':_0x5b6f('0x2')},'raw':![]},'log':_0x5b6f('0xf')});};};exports['getCampaignHopperHistory']=function(_0x3441bf){return function(){return client[_0x5b6f('0x3')](_0x5b6f('0x10'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x5b6f('0xc')](_0x5b6f('0xd'))[_0x5b6f('0x8')](_0x5b6f('0x9')),moment()[_0x5b6f('0xe')](_0x5b6f('0xd'))[_0x5b6f('0x8')](_0x5b6f('0x9'))]},'campaigntype':_0x5b6f('0x11')},'raw':![]},'log':'GetCampaignHopperHistory'});};};
\ No newline at end of file
+var _0xf25b=['YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory','getVoiceQueueHopperHistory','GetVoiceQueueHopperHistory','startOf','endOf','day','GetCampaignHopperHistory','ivr','createHistory','campaign','queue','Request','CreateCmHopperHistory','AvgHandleTime','subtract','minutes','format'];(function(_0x2d34d6,_0x397ff9){var _0x1d3d12=function(_0x558800){while(--_0x558800){_0x2d34d6['push'](_0x2d34d6['shift']());}};_0x1d3d12(++_0x397ff9);}(_0xf25b,0x1a7));var _0xbf25=function(_0x5cf136,_0x11bee4){_0x5cf136=_0x5cf136-0x0;var _0x3515cb=_0xf25b[_0x5cf136];return _0x3515cb;};'use strict';var client=require('../client');var moment=require('moment');exports[_0xbf25('0x0')]=function(_0x45b6b1){return function(){_0x45b6b1[_0xbf25('0x1')]=_0x45b6b1[_0xbf25('0x2')];return client[_0xbf25('0x3')](_0xbf25('0x4'),{'body':_0x45b6b1,'log':_0xbf25('0x4')});};};exports['avgHandleTime']=function(_0x5b8491){return function(){return client['Request'](_0xbf25('0x5'),{'options':{'where':{'endtime':{'$between':[moment()[_0xbf25('0x6')](_0x5b8491,_0xbf25('0x7'))[_0xbf25('0x8')]('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0xbf25('0x8')](_0xbf25('0x9'))]}},'raw':![]},'log':_0xbf25('0xa')});};};exports[_0xbf25('0xb')]=function(_0x41197e){return function(){return client[_0xbf25('0x3')](_0xbf25('0xc'),{'options':{'where':{'createdAt':{'$between':[moment()[_0xbf25('0xd')]('day')[_0xbf25('0x8')](_0xbf25('0x9')),moment()[_0xbf25('0xe')](_0xbf25('0xf'))['format'](_0xbf25('0x9'))]},'campaigntype':_0xbf25('0x2')},'raw':![]},'log':'GetVoiceQueueHopperHistory'});};};exports['getCampaignHopperHistory']=function(_0x4ed4dd){return function(){return client['Request'](_0xbf25('0x10'),{'options':{'where':{'createdAt':{'$between':[moment()[_0xbf25('0xd')](_0xbf25('0xf'))['format'](_0xbf25('0x9')),moment()['endOf'](_0xbf25('0xf'))[_0xbf25('0x8')](_0xbf25('0x9'))]},'campaigntype':_0xbf25('0x11')},'raw':![]},'log':'GetCampaignHopperHistory'});};};
\ No newline at end of file
index 3256166..9bbbecc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdef9=['modem','gateway','faxdetect','t38timeout','tech','TrunkId','ListId','key','Trunk','active','getFaxAccount','notify','NotifyFaxAccount','../client','getFaxAccounts','Request','GetFaxAccount','name','description','ecm','headerinfo','localstationid','minrate','maxrate'];(function(_0x48718f,_0x16c984){var _0x32a486=function(_0x3422e5){while(--_0x3422e5){_0x48718f['push'](_0x48718f['shift']());}};_0x32a486(++_0x16c984);}(_0xdef9,0x1ed));var _0x9def=function(_0x14476b,_0xd1a7a4){_0x14476b=_0x14476b-0x0;var _0x24e2e8=_0xdef9[_0x14476b];return _0x24e2e8;};'use strict';var client=require(_0x9def('0x0'));exports[_0x9def('0x1')]=function(){return function(){return client[_0x9def('0x2')](_0x9def('0x3'),{'options':{'raw':![],'attributes':['id',_0x9def('0x4'),_0x9def('0x5'),_0x9def('0x6'),_0x9def('0x7'),_0x9def('0x8'),_0x9def('0x9'),_0x9def('0xa'),_0x9def('0xb'),_0x9def('0xc'),_0x9def('0xd'),_0x9def('0xe'),_0x9def('0xf'),_0x9def('0x10'),_0x9def('0x11'),_0x9def('0x12')],'include':[{'model':'Trunk','as':_0x9def('0x13'),'attributes':['id','name','callerid',_0x9def('0x14')]}]},'log':_0x9def('0x15')});};};exports[_0x9def('0x16')]=function(_0x640dcf,_0x5432fb){return client[_0x9def('0x2')](_0x9def('0x17'),{'account':{'id':_0x640dcf},'body':_0x5432fb,'log':_0x9def('0x17')});};
\ No newline at end of file
+var _0xb982=['faxdetect','t38timeout','tech','TrunkId','ListId','key','Trunk','active','notify','NotifyFaxAccount','Request','GetFaxAccount','name','description','ecm','headerinfo','localstationid','minrate','maxrate','modem'];(function(_0x4c4cfc,_0x1d3496){var _0x179eeb=function(_0x24cafc){while(--_0x24cafc){_0x4c4cfc['push'](_0x4c4cfc['shift']());}};_0x179eeb(++_0x1d3496);}(_0xb982,0x15e));var _0x2b98=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xb982[_0x20a584];return _0x4b41a8;};'use strict';var client=require('../client');exports['getFaxAccounts']=function(){return function(){return client[_0x2b98('0x0')](_0x2b98('0x1'),{'options':{'raw':![],'attributes':['id',_0x2b98('0x2'),_0x2b98('0x3'),_0x2b98('0x4'),_0x2b98('0x5'),_0x2b98('0x6'),_0x2b98('0x7'),_0x2b98('0x8'),_0x2b98('0x9'),'gateway',_0x2b98('0xa'),_0x2b98('0xb'),_0x2b98('0xc'),_0x2b98('0xd'),_0x2b98('0xe'),_0x2b98('0xf')],'include':[{'model':'Trunk','as':_0x2b98('0x10'),'attributes':['id',_0x2b98('0x2'),'callerid',_0x2b98('0x11')]}]},'log':'getFaxAccount'});};};exports[_0x2b98('0x12')]=function(_0x17d985,_0x457b35){return client[_0x2b98('0x0')](_0x2b98('0x13'),{'account':{'id':_0x17d985},'body':_0x457b35,'log':'NotifyFaxAccount'});};
\ No newline at end of file
index fe94b66..5cb08c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a0c=['UpdateFaxMessage','../client','update','Request'];(function(_0x3ff3cc,_0x19e197){var _0x52c95a=function(_0x4264bf){while(--_0x4264bf){_0x3ff3cc['push'](_0x3ff3cc['shift']());}};_0x52c95a(++_0x19e197);}(_0x7a0c,0x161));var _0xc7a0=function(_0x1ecb6d,_0x2265a3){_0x1ecb6d=_0x1ecb6d-0x0;var _0x2fc789=_0x7a0c[_0x1ecb6d];return _0x2fc789;};'use strict';var client=require(_0xc7a0('0x0'));exports[_0xc7a0('0x1')]=function(_0x4e69a7,_0x1a4c84){return client[_0xc7a0('0x2')](_0xc7a0('0x3'),{'body':_0x1a4c84,'options':{'where':{'AttachmentId':_0x4e69a7}},'log':_0xc7a0('0x3')});};
\ No newline at end of file
+var _0xd9eb=['update','Request','UpdateFaxMessage'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xd9eb,0x138));var _0xbd9e=function(_0x2efa92,_0x2557f6){_0x2efa92=_0x2efa92-0x0;var _0x32704b=_0xd9eb[_0x2efa92];return _0x32704b;};'use strict';var client=require('../client');exports[_0xbd9e('0x0')]=function(_0x25028b,_0x220776){return client[_0xbd9e('0x1')](_0xbd9e('0x2'),{'body':_0x220776,'options':{'where':{'AttachmentId':_0x25028b}},'log':_0xbd9e('0x2')});};
\ No newline at end of file
index 491b138..2f05478 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefc3=['Tags','GetDeskAccount','getDeskAccounts','Request','username','password','remoteUri','authType','type','Configurations','name','Subjects','variableName','Variable','DeskField','Descriptions','content','key','keyType','keyContent','Fields','idField','nameField','customField','Tag'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xefc3,0xb1));var _0x3efc=function(_0x1a9d78,_0x1b9552){_0x1a9d78=_0x1a9d78-0x0;var _0x3a8706=_0xefc3[_0x1a9d78];return _0x3a8706;};'use strict';var client=require('../../client');exports[_0x3efc('0x0')]=function(){return function(_0x2e8171){return client[_0x3efc('0x1')]('GetDeskAccount',{'options':{'raw':![],'attributes':['id','name','description',_0x3efc('0x2'),_0x3efc('0x3'),_0x3efc('0x4'),_0x3efc('0x5'),_0x3efc('0x6'),'serverUrl'],'include':[{'model':'DeskConfiguration','as':_0x3efc('0x7'),'attributes':['id',_0x3efc('0x8')],'include':[{'model':'DeskField','as':_0x3efc('0x9'),'attributes':['id',_0x3efc('0x6'),'content',_0x3efc('0xa')],'include':[{'model':_0x3efc('0xb'),'as':'Variable','attributes':['id',_0x3efc('0x8')]}]},{'model':_0x3efc('0xc'),'as':_0x3efc('0xd'),'attributes':['id','type',_0x3efc('0xe'),_0x3efc('0xf'),_0x3efc('0x10'),_0x3efc('0x11'),_0x3efc('0xa')],'include':[{'model':_0x3efc('0xb'),'as':'Variable','attributes':['id',_0x3efc('0x8')]}]},{'model':_0x3efc('0xc'),'as':_0x3efc('0x12'),'attributes':['id',_0x3efc('0x6'),_0x3efc('0xe'),_0x3efc('0x13'),_0x3efc('0x14'),_0x3efc('0x15'),'variableName'],'include':[{'model':_0x3efc('0xb'),'as':'Variable','attributes':['id','name']}]},{'model':_0x3efc('0x16'),'as':_0x3efc('0x17'),'attributes':['id',_0x3efc('0x8')]}]}]},'log':_0x3efc('0x18')});};};
\ No newline at end of file
+var _0x7630=['name','username','password','remoteUri','type','serverUrl','Configurations','DeskField','Subjects','content','Variable','Descriptions','keyType','keyContent','Fields','idField','nameField','Tag','Tags','../../client','getDeskAccounts','GetDeskAccount'];(function(_0x27bd71,_0x7b0074){var _0x161fe0=function(_0x258797){while(--_0x258797){_0x27bd71['push'](_0x27bd71['shift']());}};_0x161fe0(++_0x7b0074);}(_0x7630,0x147));var _0x0763=function(_0x133094,_0xff06b9){_0x133094=_0x133094-0x0;var _0x145c58=_0x7630[_0x133094];return _0x145c58;};'use strict';var client=require(_0x0763('0x0'));exports[_0x0763('0x1')]=function(){return function(_0x32bdcc){return client['Request'](_0x0763('0x2'),{'options':{'raw':![],'attributes':['id',_0x0763('0x3'),'description',_0x0763('0x4'),_0x0763('0x5'),_0x0763('0x6'),'authType',_0x0763('0x7'),_0x0763('0x8')],'include':[{'model':'DeskConfiguration','as':_0x0763('0x9'),'attributes':['id',_0x0763('0x3')],'include':[{'model':_0x0763('0xa'),'as':_0x0763('0xb'),'attributes':['id',_0x0763('0x7'),_0x0763('0xc'),'variableName'],'include':[{'model':_0x0763('0xd'),'as':_0x0763('0xd'),'attributes':['id','name']}]},{'model':_0x0763('0xa'),'as':_0x0763('0xe'),'attributes':['id',_0x0763('0x7'),'content','key',_0x0763('0xf'),_0x0763('0x10'),'variableName'],'include':[{'model':_0x0763('0xd'),'as':_0x0763('0xd'),'attributes':['id',_0x0763('0x3')]}]},{'model':'DeskField','as':_0x0763('0x11'),'attributes':['id','type',_0x0763('0xc'),_0x0763('0x12'),_0x0763('0x13'),'customField','variableName'],'include':[{'model':'Variable','as':'Variable','attributes':['id','name']}]},{'model':_0x0763('0x14'),'as':_0x0763('0x15'),'attributes':['id','name']}]}]},'log':_0x0763('0x2')});};};
\ No newline at end of file
index 2840164..c80c2ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb574=['data7','../../client','getDynamics365Accounts','Request','GetDynamics365Account','username','password','remoteUri','tenantId','clientId','description','ticketType','moduleCreate','additionalSearchContact','openNewTab','Dynamics365Field','Subjects','type','content','Variable','name','key','keyType','keyContent','variableName','idField','customField','CloudProvider','data2'];(function(_0x56d78c,_0x2b65d6){var _0x9a8155=function(_0x3cb3ad){while(--_0x3cb3ad){_0x56d78c['push'](_0x56d78c['shift']());}};_0x9a8155(++_0x2b65d6);}(_0xb574,0x106));var _0x4b57=function(_0x5e160c,_0x59edf1){_0x5e160c=_0x5e160c-0x0;var _0x2329ec=_0xb574[_0x5e160c];return _0x2329ec;};'use strict';var client=require(_0x4b57('0x0'));exports[_0x4b57('0x1')]=function(){return function(_0x4c29a6){return client[_0x4b57('0x2')](_0x4b57('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x4b57('0x4'),_0x4b57('0x5'),_0x4b57('0x6'),_0x4b57('0x7'),_0x4b57('0x8'),'clientSecret','serverUrl',_0x4b57('0x9'),'modernAuthentication'],'include':[{'model':'Dynamics365Configuration','as':'Configurations','attributes':['id','name',_0x4b57('0xa'),_0x4b57('0xb'),_0x4b57('0xc'),_0x4b57('0xd')],'include':[{'model':_0x4b57('0xe'),'as':_0x4b57('0xf'),'attributes':['id',_0x4b57('0x10'),_0x4b57('0x11'),'variableName'],'include':[{'model':_0x4b57('0x12'),'as':_0x4b57('0x12'),'attributes':['id',_0x4b57('0x13')]}]},{'model':'Dynamics365Field','as':'Descriptions','attributes':['id',_0x4b57('0x10'),_0x4b57('0x11'),_0x4b57('0x14'),_0x4b57('0x15'),_0x4b57('0x16'),_0x4b57('0x17')],'include':[{'model':_0x4b57('0x12'),'as':_0x4b57('0x12'),'attributes':['id',_0x4b57('0x13')]}]},{'model':'Dynamics365Field','as':'Fields','attributes':['id',_0x4b57('0x10'),_0x4b57('0x11'),_0x4b57('0x18'),'nameField',_0x4b57('0x19'),'variableName'],'include':[{'model':_0x4b57('0x12'),'as':_0x4b57('0x12'),'attributes':['id',_0x4b57('0x13')]}]}]},{'model':_0x4b57('0x1a'),'as':_0x4b57('0x1a'),'attributes':['id',_0x4b57('0x1b'),'data5',_0x4b57('0x1c')]}]},'log':_0x4b57('0x3')});};};
\ No newline at end of file
+var _0xea5b=['name','username','password','remoteUri','clientId','serverUrl','description','modernAuthentication','Dynamics365Configuration','Configurations','ticketType','moduleCreate','additionalSearchContact','openNewTab','Dynamics365Field','Subjects','variableName','Variable','Descriptions','content','key','keyType','keyContent','Fields','type','idField','nameField','customField','CloudProvider','data2','data7','GetDynamics365Account','../../client','getDynamics365Accounts'];(function(_0x172029,_0x1dcd88){var _0x1e53f2=function(_0x75b03b){while(--_0x75b03b){_0x172029['push'](_0x172029['shift']());}};_0x1e53f2(++_0x1dcd88);}(_0xea5b,0x152));var _0xbea5=function(_0x25e7cb,_0x3579b7){_0x25e7cb=_0x25e7cb-0x0;var _0x375d92=_0xea5b[_0x25e7cb];return _0x375d92;};'use strict';var client=require(_0xbea5('0x0'));exports[_0xbea5('0x1')]=function(){return function(_0x109666){return client['Request']('GetDynamics365Account',{'options':{'raw':![],'attributes':['id',_0xbea5('0x2'),_0xbea5('0x3'),_0xbea5('0x4'),_0xbea5('0x5'),'tenantId',_0xbea5('0x6'),'clientSecret',_0xbea5('0x7'),_0xbea5('0x8'),_0xbea5('0x9')],'include':[{'model':_0xbea5('0xa'),'as':_0xbea5('0xb'),'attributes':['id',_0xbea5('0x2'),_0xbea5('0xc'),_0xbea5('0xd'),_0xbea5('0xe'),_0xbea5('0xf')],'include':[{'model':_0xbea5('0x10'),'as':_0xbea5('0x11'),'attributes':['id','type','content',_0xbea5('0x12')],'include':[{'model':_0xbea5('0x13'),'as':_0xbea5('0x13'),'attributes':['id','name']}]},{'model':_0xbea5('0x10'),'as':_0xbea5('0x14'),'attributes':['id','type',_0xbea5('0x15'),_0xbea5('0x16'),_0xbea5('0x17'),_0xbea5('0x18'),'variableName'],'include':[{'model':'Variable','as':_0xbea5('0x13'),'attributes':['id','name']}]},{'model':'Dynamics365Field','as':_0xbea5('0x19'),'attributes':['id',_0xbea5('0x1a'),'content',_0xbea5('0x1b'),_0xbea5('0x1c'),_0xbea5('0x1d'),_0xbea5('0x12')],'include':[{'model':_0xbea5('0x13'),'as':_0xbea5('0x13'),'attributes':['id','name']}]}]},{'model':_0xbea5('0x1e'),'as':_0xbea5('0x1e'),'attributes':['id',_0xbea5('0x1f'),'data5',_0xbea5('0x20')]}]},'log':_0xbea5('0x21')});};};
\ No newline at end of file
index 76c8fdc..ec3f9fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cae=['Fields','nameField','customField','../../client','getFreshdeskAccounts','GetFreshdeskAccount','name','apiKey','remoteUri','serverUrl','FreshdeskConfiguration','Tag','FreshdeskField','type','content','variableName','Variable','key','keyType','keyContent'];(function(_0x290fc9,_0x3069fe){var _0x31c8bd=function(_0x4bec21){while(--_0x4bec21){_0x290fc9['push'](_0x290fc9['shift']());}};_0x31c8bd(++_0x3069fe);}(_0x2cae,0x16b));var _0xe2ca=function(_0x1a595a,_0x263824){_0x1a595a=_0x1a595a-0x0;var _0x33f008=_0x2cae[_0x1a595a];return _0x33f008;};'use strict';var client=require(_0xe2ca('0x0'));exports[_0xe2ca('0x1')]=function(){return function(_0x5d4b71){return client['Request'](_0xe2ca('0x2'),{'options':{'raw':![],'attributes':['id',_0xe2ca('0x3'),'username',_0xe2ca('0x4'),_0xe2ca('0x5'),_0xe2ca('0x6')],'include':[{'model':_0xe2ca('0x7'),'as':'Configurations','attributes':['id',_0xe2ca('0x3')],'include':[{'model':_0xe2ca('0x8'),'attributes':['id','name']},{'model':_0xe2ca('0x9'),'as':'Subjects','attributes':['id',_0xe2ca('0xa'),_0xe2ca('0xb'),_0xe2ca('0xc')],'include':[{'model':_0xe2ca('0xd'),'as':'Variable','attributes':['id','name']}]},{'model':'FreshdeskField','as':'Descriptions','attributes':['id',_0xe2ca('0xa'),_0xe2ca('0xb'),_0xe2ca('0xe'),_0xe2ca('0xf'),_0xe2ca('0x10'),_0xe2ca('0xc')],'include':[{'model':_0xe2ca('0xd'),'as':'Variable','attributes':['id',_0xe2ca('0x3')]}]},{'model':_0xe2ca('0x9'),'as':_0xe2ca('0x11'),'attributes':['id',_0xe2ca('0xa'),_0xe2ca('0xb'),'idField',_0xe2ca('0x12'),_0xe2ca('0x13'),_0xe2ca('0xc')],'include':[{'model':_0xe2ca('0xd'),'as':_0xe2ca('0xd'),'attributes':['id',_0xe2ca('0x3')]}]}]}]},'log':_0xe2ca('0x2')});};};
\ No newline at end of file
+var _0xaf60=['Fields','idField','customField','GetFreshdeskAccount','../../client','getFreshdeskAccounts','name','remoteUri','serverUrl','FreshdeskConfiguration','Configurations','Tag','Subjects','type','variableName','Variable','key','FreshdeskField'];(function(_0x4ca9a3,_0x1305c5){var _0x2c9675=function(_0x464b18){while(--_0x464b18){_0x4ca9a3['push'](_0x4ca9a3['shift']());}};_0x2c9675(++_0x1305c5);}(_0xaf60,0x82));var _0x0af6=function(_0x2d8fc2,_0x1c461d){_0x2d8fc2=_0x2d8fc2-0x0;var _0x3a9e53=_0xaf60[_0x2d8fc2];return _0x3a9e53;};'use strict';var client=require(_0x0af6('0x0'));exports[_0x0af6('0x1')]=function(){return function(_0x1d4941){return client['Request']('GetFreshdeskAccount',{'options':{'raw':![],'attributes':['id',_0x0af6('0x2'),'username','apiKey',_0x0af6('0x3'),_0x0af6('0x4')],'include':[{'model':_0x0af6('0x5'),'as':_0x0af6('0x6'),'attributes':['id',_0x0af6('0x2')],'include':[{'model':_0x0af6('0x7'),'attributes':['id',_0x0af6('0x2')]},{'model':'FreshdeskField','as':_0x0af6('0x8'),'attributes':['id',_0x0af6('0x9'),'content',_0x0af6('0xa')],'include':[{'model':_0x0af6('0xb'),'as':_0x0af6('0xb'),'attributes':['id','name']}]},{'model':'FreshdeskField','as':'Descriptions','attributes':['id',_0x0af6('0x9'),'content',_0x0af6('0xc'),'keyType','keyContent',_0x0af6('0xa')],'include':[{'model':_0x0af6('0xb'),'as':_0x0af6('0xb'),'attributes':['id','name']}]},{'model':_0x0af6('0xd'),'as':_0x0af6('0xe'),'attributes':['id',_0x0af6('0x9'),'content',_0x0af6('0xf'),'nameField',_0x0af6('0x10'),'variableName'],'include':[{'model':_0x0af6('0xb'),'as':_0x0af6('0xb'),'attributes':['id',_0x0af6('0x2')]}]}]}]},'log':_0x0af6('0x11')});};};
\ No newline at end of file
index b6de742..d3a59c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7409=['FreshsalesConfiguration','Configurations','FreshsalesField','Subjects','type','variableName','Variable','content','../../client','getFreshsalesAccounts','Request','GetFreshsalesAccount','name','username','apiKey','remoteUri','serverUrl'];(function(_0x44ea58,_0x5020fc){var _0x276d2a=function(_0x563ef8){while(--_0x563ef8){_0x44ea58['push'](_0x44ea58['shift']());}};_0x276d2a(++_0x5020fc);}(_0x7409,0x6e));var _0x9740=function(_0xce2d7e,_0x56dac4){_0xce2d7e=_0xce2d7e-0x0;var _0x3143d9=_0x7409[_0xce2d7e];return _0x3143d9;};'use strict';var client=require(_0x9740('0x0'));exports[_0x9740('0x1')]=function(){return function(_0x5e55ff){return client[_0x9740('0x2')](_0x9740('0x3'),{'options':{'raw':![],'attributes':['id',_0x9740('0x4'),_0x9740('0x5'),_0x9740('0x6'),_0x9740('0x7'),_0x9740('0x8')],'include':[{'model':_0x9740('0x9'),'as':_0x9740('0xa'),'attributes':['id','name'],'include':[{'model':_0x9740('0xb'),'as':_0x9740('0xc'),'attributes':['id',_0x9740('0xd'),'content',_0x9740('0xe')],'include':[{'model':_0x9740('0xf'),'as':_0x9740('0xf'),'attributes':['id','name']}]},{'model':_0x9740('0xb'),'as':'Descriptions','attributes':['id',_0x9740('0xd'),_0x9740('0x10'),'key','keyType','keyContent',_0x9740('0xe')],'include':[{'model':_0x9740('0xf'),'as':_0x9740('0xf'),'attributes':['id','name']}]}]}]},'log':'GetFreshsalesccount'});};};
\ No newline at end of file
+var _0x8506=['Subjects','Variable','type','content','key','keyType','keyContent','GetFreshsalesccount','getFreshsalesAccounts','Request','name','apiKey','remoteUri','serverUrl','Configurations','FreshsalesField'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8506,0xe8));var _0x6850=function(_0x51dd7e,_0x4efb8f){_0x51dd7e=_0x51dd7e-0x0;var _0xea7ed7=_0x8506[_0x51dd7e];return _0xea7ed7;};'use strict';var client=require('../../client');exports[_0x6850('0x0')]=function(){return function(_0x51d1a0){return client[_0x6850('0x1')]('GetFreshsalesAccount',{'options':{'raw':![],'attributes':['id',_0x6850('0x2'),'username',_0x6850('0x3'),_0x6850('0x4'),_0x6850('0x5')],'include':[{'model':'FreshsalesConfiguration','as':_0x6850('0x6'),'attributes':['id',_0x6850('0x2')],'include':[{'model':_0x6850('0x7'),'as':_0x6850('0x8'),'attributes':['id','type','content','variableName'],'include':[{'model':_0x6850('0x9'),'as':_0x6850('0x9'),'attributes':['id',_0x6850('0x2')]}]},{'model':'FreshsalesField','as':'Descriptions','attributes':['id',_0x6850('0xa'),_0x6850('0xb'),_0x6850('0xc'),_0x6850('0xd'),_0x6850('0xe'),'variableName'],'include':[{'model':_0x6850('0x9'),'as':_0x6850('0x9'),'attributes':['id',_0x6850('0x2')]}]}]}]},'log':_0x6850('0xf')});};};
\ No newline at end of file
index e61ead2..7f50805 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36e1=['password','remoteUri','securityToken','serverUrl','SalesforceConfiguration','Configurations','moduleSearch','moduleCreate','ticketType','leadId','additionalSearchContact','additionalSearchLead','Subjects','Variable','SalesforceField','Descriptions','Fields','../../client','getSalesforceAccounts','GetSalesforceAccount','name','username'];(function(_0x16f81,_0x29438f){var _0x1bb73e=function(_0x487c58){while(--_0x487c58){_0x16f81['push'](_0x16f81['shift']());}};_0x1bb73e(++_0x29438f);}(_0x36e1,0x187));var _0x136e=function(_0x2e986d,_0x4b6b63){_0x2e986d=_0x2e986d-0x0;var _0x351c79=_0x36e1[_0x2e986d];return _0x351c79;};'use strict';var client=require(_0x136e('0x0'));exports[_0x136e('0x1')]=function(){return function(_0x1518b9){return client['Request'](_0x136e('0x2'),{'options':{'raw':![],'attributes':['id',_0x136e('0x3'),_0x136e('0x4'),_0x136e('0x5'),_0x136e('0x6'),'clientId','clientSecret',_0x136e('0x7'),_0x136e('0x8'),'type'],'include':[{'model':_0x136e('0x9'),'as':_0x136e('0xa'),'attributes':['id',_0x136e('0x3'),_0x136e('0xb'),_0x136e('0xc'),_0x136e('0xd'),_0x136e('0xe'),'additionalSearchAccount',_0x136e('0xf'),_0x136e('0x10')],'include':[{'model':'SalesforceField','as':_0x136e('0x11'),'include':[{'model':_0x136e('0x12'),'as':'Variable','attributes':['id',_0x136e('0x3')]}]},{'model':_0x136e('0x13'),'as':_0x136e('0x14'),'include':[{'model':'Variable','as':_0x136e('0x12'),'attributes':['id',_0x136e('0x3')]}]},{'model':_0x136e('0x13'),'as':_0x136e('0x15'),'include':[{'model':_0x136e('0x12'),'as':_0x136e('0x12'),'attributes':['id',_0x136e('0x3')]}]}]}]},'log':'GetSalesforceAccount'});};};
\ No newline at end of file
+var _0x7d29=['Request','GetSalesforceAccount','name','remoteUri','clientId','clientSecret','securityToken','serverUrl','type','SalesforceConfiguration','Configurations','moduleCreate','ticketType','leadId','additionalSearchAccount','additionalSearchLead','Subjects','Variable','SalesforceField','Fields','../../client','getSalesforceAccounts'];(function(_0x404eb4,_0xab6017){var _0xb52430=function(_0x5abf7e){while(--_0x5abf7e){_0x404eb4['push'](_0x404eb4['shift']());}};_0xb52430(++_0xab6017);}(_0x7d29,0x1a0));var _0x97d2=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0x7d29[_0x465028];return _0xb783d4;};'use strict';var client=require(_0x97d2('0x0'));exports[_0x97d2('0x1')]=function(){return function(_0x3c118c){return client[_0x97d2('0x2')](_0x97d2('0x3'),{'options':{'raw':![],'attributes':['id',_0x97d2('0x4'),'username','password',_0x97d2('0x5'),_0x97d2('0x6'),_0x97d2('0x7'),_0x97d2('0x8'),_0x97d2('0x9'),_0x97d2('0xa')],'include':[{'model':_0x97d2('0xb'),'as':_0x97d2('0xc'),'attributes':['id',_0x97d2('0x4'),'moduleSearch',_0x97d2('0xd'),_0x97d2('0xe'),_0x97d2('0xf'),_0x97d2('0x10'),'additionalSearchContact',_0x97d2('0x11')],'include':[{'model':'SalesforceField','as':_0x97d2('0x12'),'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x97d2('0x4')]}]},{'model':'SalesforceField','as':'Descriptions','include':[{'model':_0x97d2('0x13'),'as':_0x97d2('0x13'),'attributes':['id',_0x97d2('0x4')]}]},{'model':_0x97d2('0x14'),'as':_0x97d2('0x15'),'include':[{'model':_0x97d2('0x13'),'as':_0x97d2('0x13'),'attributes':['id',_0x97d2('0x4')]}]}]}]},'log':_0x97d2('0x3')});};};
\ No newline at end of file
index f95488c..8714919 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2675=['ServicenowField','type','content','Variable','Descriptions','keyType','variableName','Fields','idField','nameField','customField','GetServicenowkAccount','../../client','GetServicenowAccount','name','username','password','remoteUri','serverUrl','ServicenowConfiguration','Configurations'];(function(_0x4a7680,_0x50232b){var _0x303e45=function(_0xaa62c9){while(--_0xaa62c9){_0x4a7680['push'](_0x4a7680['shift']());}};_0x303e45(++_0x50232b);}(_0x2675,0x75));var _0x5267=function(_0x3d7823,_0x36d72a){_0x3d7823=_0x3d7823-0x0;var _0x2d797f=_0x2675[_0x3d7823];return _0x2d797f;};'use strict';var client=require(_0x5267('0x0'));exports['getServicenowAccounts']=function(){return function(_0x53e71f){return client['Request'](_0x5267('0x1'),{'options':{'raw':![],'attributes':['id',_0x5267('0x2'),'description',_0x5267('0x3'),_0x5267('0x4'),'email',_0x5267('0x5'),_0x5267('0x6')],'include':[{'model':_0x5267('0x7'),'as':_0x5267('0x8'),'attributes':['id',_0x5267('0x2')],'include':[{'model':_0x5267('0x9'),'as':'Subjects','attributes':['id',_0x5267('0xa'),_0x5267('0xb'),'variableName'],'include':[{'model':_0x5267('0xc'),'as':'Variable','attributes':['id',_0x5267('0x2')]}]},{'model':_0x5267('0x9'),'as':_0x5267('0xd'),'attributes':['id','type',_0x5267('0xb'),'key',_0x5267('0xe'),'keyContent',_0x5267('0xf')],'include':[{'model':_0x5267('0xc'),'as':_0x5267('0xc'),'attributes':['id',_0x5267('0x2')]}]},{'model':_0x5267('0x9'),'as':_0x5267('0x10'),'attributes':['id',_0x5267('0xa'),_0x5267('0xb'),_0x5267('0x11'),_0x5267('0x12'),_0x5267('0x13'),_0x5267('0xf')],'include':[{'model':_0x5267('0xc'),'as':'Variable','attributes':['id','name']}]}]}]},'log':_0x5267('0x14')});};};
\ No newline at end of file
+var _0x7a54=['GetServicenowAccount','name','username','password','email','remoteUri','serverUrl','Configurations','ServicenowField','Subjects','content','type','keyType','keyContent','variableName','Variable','idField','nameField','customField','GetServicenowkAccount','../../client','getServicenowAccounts'];(function(_0x2181fc,_0x7283aa){var _0x315da1=function(_0x1df7ca){while(--_0x1df7ca){_0x2181fc['push'](_0x2181fc['shift']());}};_0x315da1(++_0x7283aa);}(_0x7a54,0x106));var _0x47a5=function(_0x47c5e9,_0x2430b3){_0x47c5e9=_0x47c5e9-0x0;var _0x1a2c57=_0x7a54[_0x47c5e9];return _0x1a2c57;};'use strict';var client=require(_0x47a5('0x0'));exports[_0x47a5('0x1')]=function(){return function(_0x44b31e){return client['Request'](_0x47a5('0x2'),{'options':{'raw':![],'attributes':['id',_0x47a5('0x3'),'description',_0x47a5('0x4'),_0x47a5('0x5'),_0x47a5('0x6'),_0x47a5('0x7'),_0x47a5('0x8')],'include':[{'model':'ServicenowConfiguration','as':_0x47a5('0x9'),'attributes':['id','name'],'include':[{'model':_0x47a5('0xa'),'as':_0x47a5('0xb'),'attributes':['id','type',_0x47a5('0xc'),'variableName'],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x47a5('0x3')]}]},{'model':_0x47a5('0xa'),'as':'Descriptions','attributes':['id',_0x47a5('0xd'),'content','key',_0x47a5('0xe'),_0x47a5('0xf'),_0x47a5('0x10')],'include':[{'model':_0x47a5('0x11'),'as':_0x47a5('0x11'),'attributes':['id',_0x47a5('0x3')]}]},{'model':_0x47a5('0xa'),'as':'Fields','attributes':['id',_0x47a5('0xd'),_0x47a5('0xc'),_0x47a5('0x12'),_0x47a5('0x13'),_0x47a5('0x14'),_0x47a5('0x10')],'include':[{'model':_0x47a5('0x11'),'as':_0x47a5('0x11'),'attributes':['id','name']}]}]}]},'log':_0x47a5('0x15')});};};
\ No newline at end of file
index ff002d6..c4ef6e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66fa=['password','remoteUri','serverUrl','SugarcrmField','Subjects','type','content','Variable','Descriptions','keyType','keyContent','Fields','customField','../../client','getSugarcrmAccounts','Request','GetSugarcrmAccount','name','username'];(function(_0x1ce16d,_0x1def2c){var _0x2249b8=function(_0x3e9999){while(--_0x3e9999){_0x1ce16d['push'](_0x1ce16d['shift']());}};_0x2249b8(++_0x1def2c);}(_0x66fa,0x117));var _0xa66f=function(_0x1a1b2a,_0x57f611){_0x1a1b2a=_0x1a1b2a-0x0;var _0x19401f=_0x66fa[_0x1a1b2a];return _0x19401f;};'use strict';var client=require(_0xa66f('0x0'));exports[_0xa66f('0x1')]=function(){return function(_0x52947a){return client[_0xa66f('0x2')](_0xa66f('0x3'),{'options':{'raw':![],'attributes':['id',_0xa66f('0x4'),_0xa66f('0x5'),_0xa66f('0x6'),_0xa66f('0x7'),_0xa66f('0x8')],'include':[{'model':'SugarcrmConfiguration','as':'Configurations','attributes':['id',_0xa66f('0x4')],'include':[{'model':_0xa66f('0x9'),'as':_0xa66f('0xa'),'attributes':['id',_0xa66f('0xb'),_0xa66f('0xc'),'variableName'],'include':[{'model':_0xa66f('0xd'),'as':'Variable','attributes':['id',_0xa66f('0x4')]}]},{'model':'SugarcrmField','as':_0xa66f('0xe'),'attributes':['id','type','content','key',_0xa66f('0xf'),_0xa66f('0x10'),'variableName'],'include':[{'model':_0xa66f('0xd'),'as':'Variable','attributes':['id',_0xa66f('0x4')]}]},{'model':'SugarcrmField','as':_0xa66f('0x11'),'attributes':['id',_0xa66f('0xb'),_0xa66f('0xc'),'idField','nameField',_0xa66f('0x12'),'variableName'],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0xa66f('0x4')]}]}]}]},'log':_0xa66f('0x3')});};};
\ No newline at end of file
+var _0x0b0e=['Configurations','SugarcrmField','Subjects','variableName','Variable','Descriptions','type','key','keyType','Fields','content','idField','customField','../../client','GetSugarcrmAccount','name','username','password','remoteUri','serverUrl','SugarcrmConfiguration'];(function(_0x4289ed,_0x2c7b8f){var _0x2f5317=function(_0x2f6a2f){while(--_0x2f6a2f){_0x4289ed['push'](_0x4289ed['shift']());}};_0x2f5317(++_0x2c7b8f);}(_0x0b0e,0x187));var _0xe0b0=function(_0x5b697a,_0x280202){_0x5b697a=_0x5b697a-0x0;var _0x5de43b=_0x0b0e[_0x5b697a];return _0x5de43b;};'use strict';var client=require(_0xe0b0('0x0'));exports['getSugarcrmAccounts']=function(){return function(_0xc416e3){return client['Request'](_0xe0b0('0x1'),{'options':{'raw':![],'attributes':['id',_0xe0b0('0x2'),_0xe0b0('0x3'),_0xe0b0('0x4'),_0xe0b0('0x5'),_0xe0b0('0x6')],'include':[{'model':_0xe0b0('0x7'),'as':_0xe0b0('0x8'),'attributes':['id',_0xe0b0('0x2')],'include':[{'model':_0xe0b0('0x9'),'as':_0xe0b0('0xa'),'attributes':['id','type','content',_0xe0b0('0xb')],'include':[{'model':_0xe0b0('0xc'),'as':_0xe0b0('0xc'),'attributes':['id',_0xe0b0('0x2')]}]},{'model':'SugarcrmField','as':_0xe0b0('0xd'),'attributes':['id',_0xe0b0('0xe'),'content',_0xe0b0('0xf'),_0xe0b0('0x10'),'keyContent',_0xe0b0('0xb')],'include':[{'model':_0xe0b0('0xc'),'as':_0xe0b0('0xc'),'attributes':['id','name']}]},{'model':_0xe0b0('0x9'),'as':_0xe0b0('0x11'),'attributes':['id',_0xe0b0('0xe'),_0xe0b0('0x12'),_0xe0b0('0x13'),'nameField',_0xe0b0('0x14'),_0xe0b0('0xb')],'include':[{'model':_0xe0b0('0xc'),'as':_0xe0b0('0xc'),'attributes':['id',_0xe0b0('0x2')]}]}]}]},'log':'GetSugarcrmAccount'});};};
\ No newline at end of file
index 9950ce3..ef5af3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01b4=['name','VtigerField','type','content','variableName','Variable','keyType','keyContent','Fields','nameField','customField','getVtigerAccounts','Request','GetVtigerAccount','description','username','accessKey','serverUrl'];(function(_0xa143f6,_0x3740bf){var _0x12442e=function(_0x14e4a7){while(--_0x14e4a7){_0xa143f6['push'](_0xa143f6['shift']());}};_0x12442e(++_0x3740bf);}(_0x01b4,0xbf));var _0x401b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x01b4[_0x3dd15e];return _0x231fd0;};'use strict';var client=require('../../client');exports[_0x401b('0x0')]=function(){return function(_0x31da98){return client[_0x401b('0x1')](_0x401b('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x401b('0x3'),_0x401b('0x4'),_0x401b('0x5'),'remoteUri',_0x401b('0x6')],'include':[{'model':'VtigerConfiguration','as':'Configurations','attributes':['id',_0x401b('0x7')],'include':[{'model':_0x401b('0x8'),'as':'Subjects','attributes':['id',_0x401b('0x9'),_0x401b('0xa'),_0x401b('0xb')],'include':[{'model':_0x401b('0xc'),'as':_0x401b('0xc'),'attributes':['id','name']}]},{'model':_0x401b('0x8'),'as':'Descriptions','attributes':['id',_0x401b('0x9'),_0x401b('0xa'),'key',_0x401b('0xd'),_0x401b('0xe'),_0x401b('0xb')],'include':[{'model':_0x401b('0xc'),'as':_0x401b('0xc'),'attributes':['id',_0x401b('0x7')]}]},{'model':_0x401b('0x8'),'as':_0x401b('0xf'),'attributes':['id','type',_0x401b('0xa'),'idField',_0x401b('0x10'),_0x401b('0x11'),'variableName'],'include':[{'model':_0x401b('0xc'),'as':_0x401b('0xc'),'attributes':['id','name']}]}]}]},'log':'GetVtigerAccount'});};};
\ No newline at end of file
+var _0xa153=['content','Descriptions','key','keyType','keyContent','Variable','Fields','idField','nameField','customField','variableName','getVtigerAccounts','Request','GetVtigerAccount','name','description','accessKey','remoteUri','serverUrl','VtigerConfiguration','Configurations','VtigerField','Subjects','type'];(function(_0x1c8db6,_0xdfd4dd){var _0x6a9e82=function(_0x1d30cc){while(--_0x1d30cc){_0x1c8db6['push'](_0x1c8db6['shift']());}};_0x6a9e82(++_0xdfd4dd);}(_0xa153,0x1eb));var _0x3a15=function(_0x459566,_0x1695f5){_0x459566=_0x459566-0x0;var _0x3db1ea=_0xa153[_0x459566];return _0x3db1ea;};'use strict';var client=require('../../client');exports[_0x3a15('0x0')]=function(){return function(_0xc597d2){return client[_0x3a15('0x1')](_0x3a15('0x2'),{'options':{'raw':![],'attributes':['id',_0x3a15('0x3'),_0x3a15('0x4'),'username',_0x3a15('0x5'),_0x3a15('0x6'),_0x3a15('0x7')],'include':[{'model':_0x3a15('0x8'),'as':_0x3a15('0x9'),'attributes':['id',_0x3a15('0x3')],'include':[{'model':_0x3a15('0xa'),'as':_0x3a15('0xb'),'attributes':['id',_0x3a15('0xc'),_0x3a15('0xd'),'variableName'],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x3a15('0x3')]}]},{'model':'VtigerField','as':_0x3a15('0xe'),'attributes':['id',_0x3a15('0xc'),_0x3a15('0xd'),_0x3a15('0xf'),_0x3a15('0x10'),_0x3a15('0x11'),'variableName'],'include':[{'model':_0x3a15('0x12'),'as':_0x3a15('0x12'),'attributes':['id',_0x3a15('0x3')]}]},{'model':'VtigerField','as':_0x3a15('0x13'),'attributes':['id','type',_0x3a15('0xd'),_0x3a15('0x14'),_0x3a15('0x15'),_0x3a15('0x16'),_0x3a15('0x17')],'include':[{'model':_0x3a15('0x12'),'as':'Variable','attributes':['id',_0x3a15('0x3')]}]}]}]},'log':_0x3a15('0x2')});};};
\ No newline at end of file
index f0e77c8..797930f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11ea=['ZendeskConfiguration','Tag','ZendeskField','Subjects','content','variableName','Variable','Descriptions','key','keyContent','idField','nameField','../../client','getZendeskAccounts','Request','GetZendeskAccount','name','username','password','remoteUri','authType','serverUrl','type'];(function(_0x2d4271,_0x3b9f48){var _0x484611=function(_0x33ab5e){while(--_0x33ab5e){_0x2d4271['push'](_0x2d4271['shift']());}};_0x484611(++_0x3b9f48);}(_0x11ea,0x17c));var _0xa11e=function(_0x2a5b82,_0x3132d2){_0x2a5b82=_0x2a5b82-0x0;var _0x188cce=_0x11ea[_0x2a5b82];return _0x188cce;};'use strict';var client=require(_0xa11e('0x0'));exports[_0xa11e('0x1')]=function(){return function(_0x3fd90b){return client[_0xa11e('0x2')](_0xa11e('0x3'),{'options':{'raw':![],'attributes':['id',_0xa11e('0x4'),_0xa11e('0x5'),_0xa11e('0x6'),'token',_0xa11e('0x7'),_0xa11e('0x8'),_0xa11e('0x9'),_0xa11e('0xa')],'include':[{'model':_0xa11e('0xb'),'as':'Configurations','attributes':['id',_0xa11e('0x4')],'include':[{'model':_0xa11e('0xc'),'attributes':['id',_0xa11e('0x4')]},{'model':_0xa11e('0xd'),'as':_0xa11e('0xe'),'attributes':['id',_0xa11e('0xa'),_0xa11e('0xf'),_0xa11e('0x10')],'include':[{'model':_0xa11e('0x11'),'as':'Variable','attributes':['id',_0xa11e('0x4')]}]},{'model':_0xa11e('0xd'),'as':_0xa11e('0x12'),'attributes':['id',_0xa11e('0xa'),'content',_0xa11e('0x13'),'keyType',_0xa11e('0x14'),_0xa11e('0x10')],'include':[{'model':_0xa11e('0x11'),'as':_0xa11e('0x11'),'attributes':['id','name']}]},{'model':_0xa11e('0xd'),'as':'Fields','attributes':['id',_0xa11e('0xa'),'content',_0xa11e('0x15'),_0xa11e('0x16'),'customField',_0xa11e('0x10')],'include':[{'model':_0xa11e('0x11'),'as':_0xa11e('0x11'),'attributes':['id',_0xa11e('0x4')]}]}]}]},'log':_0xa11e('0x3')});};};
\ No newline at end of file
+var _0xc740=['Descriptions','content','keyContent','Fields','customField','getZendeskAccounts','Request','GetZendeskAccount','name','username','remoteUri','authType','type','ZendeskConfiguration','Configurations','ZendeskField','Subjects','variableName','Variable'];(function(_0x1e3f9c,_0x285279){var _0x1d053e=function(_0x3792e2){while(--_0x3792e2){_0x1e3f9c['push'](_0x1e3f9c['shift']());}};_0x1d053e(++_0x285279);}(_0xc740,0x8a));var _0x0c74=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xc740[_0x1facfa];return _0x9ec701;};'use strict';var client=require('../../client');exports[_0x0c74('0x0')]=function(){return function(_0xfaec0f){return client[_0x0c74('0x1')](_0x0c74('0x2'),{'options':{'raw':![],'attributes':['id',_0x0c74('0x3'),_0x0c74('0x4'),'password','token',_0x0c74('0x5'),_0x0c74('0x6'),'serverUrl',_0x0c74('0x7')],'include':[{'model':_0x0c74('0x8'),'as':_0x0c74('0x9'),'attributes':['id','name'],'include':[{'model':'Tag','attributes':['id',_0x0c74('0x3')]},{'model':_0x0c74('0xa'),'as':_0x0c74('0xb'),'attributes':['id','type','content',_0x0c74('0xc')],'include':[{'model':_0x0c74('0xd'),'as':_0x0c74('0xd'),'attributes':['id',_0x0c74('0x3')]}]},{'model':_0x0c74('0xa'),'as':_0x0c74('0xe'),'attributes':['id',_0x0c74('0x7'),_0x0c74('0xf'),'key','keyType',_0x0c74('0x10'),_0x0c74('0xc')],'include':[{'model':_0x0c74('0xd'),'as':_0x0c74('0xd'),'attributes':['id',_0x0c74('0x3')]}]},{'model':'ZendeskField','as':_0x0c74('0x11'),'attributes':['id',_0x0c74('0x7'),_0x0c74('0xf'),'idField','nameField',_0x0c74('0x12'),'variableName'],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x0c74('0x3')]}]}]}]},'log':_0x0c74('0x2')});};};
\ No newline at end of file
index 1b085fc..cb6f26b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7e0=['../../client','getZohoAccounts','Request','GetZohoAccount','name','description','zone','clientId','clientSecret','serverUrl','code','refreshToken','ZohoConfiguration','Configurations','moduleCreate','moduleSearch','Subjects','type','content','Descriptions','key','keyType','keyContent','Variable','ZohoField','idField','customField'];(function(_0xc2364e,_0x2808d8){var _0x1815db=function(_0x50c7fd){while(--_0x50c7fd){_0xc2364e['push'](_0xc2364e['shift']());}};_0x1815db(++_0x2808d8);}(_0xf7e0,0xd8));var _0x0f7e=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0xf7e0[_0x4cf98e];return _0x1623ac;};'use strict';var client=require(_0x0f7e('0x0'));exports[_0x0f7e('0x1')]=function(){return function(_0x1cb6a6){return client[_0x0f7e('0x2')](_0x0f7e('0x3'),{'options':{'raw':![],'attributes':['id',_0x0f7e('0x4'),_0x0f7e('0x5'),'host',_0x0f7e('0x6'),_0x0f7e('0x7'),_0x0f7e('0x8'),_0x0f7e('0x9'),_0x0f7e('0xa'),_0x0f7e('0xb')],'include':[{'model':_0x0f7e('0xc'),'as':_0x0f7e('0xd'),'attributes':['id',_0x0f7e('0x4'),_0x0f7e('0xe'),_0x0f7e('0xf'),_0x0f7e('0x5')],'include':[{'model':'ZohoField','as':_0x0f7e('0x10'),'attributes':['id',_0x0f7e('0x11'),_0x0f7e('0x12'),'variableName'],'include':[{'model':'Variable','as':'Variable','attributes':['id','name']}]},{'model':'ZohoField','as':_0x0f7e('0x13'),'attributes':['id',_0x0f7e('0x11'),_0x0f7e('0x12'),_0x0f7e('0x14'),_0x0f7e('0x15'),_0x0f7e('0x16'),'variableName'],'include':[{'model':_0x0f7e('0x17'),'as':_0x0f7e('0x17'),'attributes':['id',_0x0f7e('0x4')]}]},{'model':_0x0f7e('0x18'),'as':'Fields','attributes':['id',_0x0f7e('0x11'),'content',_0x0f7e('0x19'),'nameField',_0x0f7e('0x1a'),'variableName'],'include':[{'model':'Variable','as':_0x0f7e('0x17'),'attributes':['id','name']}]}]}]},'log':_0x0f7e('0x3')});};};
\ No newline at end of file
+var _0x7155=['serverUrl','refreshToken','ZohoConfiguration','Configurations','moduleCreate','moduleSearch','description','type','content','variableName','Variable','Descriptions','key','keyContent','ZohoField','Fields','idField','customField','../../client','getZohoAccounts','Request','GetZohoAccount','name','host','zone','clientId','clientSecret'];(function(_0x3a0863,_0x4cd5ef){var _0x85c557=function(_0x3011cb){while(--_0x3011cb){_0x3a0863['push'](_0x3a0863['shift']());}};_0x85c557(++_0x4cd5ef);}(_0x7155,0x120));var _0x5715=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x7155[_0x14add3];return _0x4a174f;};'use strict';var client=require(_0x5715('0x0'));exports[_0x5715('0x1')]=function(){return function(_0x2a6ef4){return client[_0x5715('0x2')](_0x5715('0x3'),{'options':{'raw':![],'attributes':['id',_0x5715('0x4'),'description',_0x5715('0x5'),_0x5715('0x6'),_0x5715('0x7'),_0x5715('0x8'),_0x5715('0x9'),'code',_0x5715('0xa')],'include':[{'model':_0x5715('0xb'),'as':_0x5715('0xc'),'attributes':['id',_0x5715('0x4'),_0x5715('0xd'),_0x5715('0xe'),_0x5715('0xf')],'include':[{'model':'ZohoField','as':'Subjects','attributes':['id',_0x5715('0x10'),_0x5715('0x11'),_0x5715('0x12')],'include':[{'model':_0x5715('0x13'),'as':_0x5715('0x13'),'attributes':['id',_0x5715('0x4')]}]},{'model':'ZohoField','as':_0x5715('0x14'),'attributes':['id',_0x5715('0x10'),_0x5715('0x11'),_0x5715('0x15'),'keyType',_0x5715('0x16'),_0x5715('0x12')],'include':[{'model':_0x5715('0x13'),'as':_0x5715('0x13'),'attributes':['id',_0x5715('0x4')]}]},{'model':_0x5715('0x17'),'as':_0x5715('0x18'),'attributes':['id',_0x5715('0x10'),_0x5715('0x11'),_0x5715('0x19'),'nameField',_0x5715('0x1a'),'variableName'],'include':[{'model':_0x5715('0x13'),'as':_0x5715('0x13'),'attributes':['id','name']}]}]}]},'log':_0x5715('0x3')});};};
\ No newline at end of file
index 5bc6929..48eb9cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e0c=['queuecallerexitAt','CreateMemberReport','voice','lastAssignedTo','isNil','interface','format','SIP/%s','TALKING','queuecallerleaveAt','inbound','calleridnum','queue','agent','accountcode','toNumber','uniqueid','voiceDialReport','Request','membername','starttime','endtime','diff','seconds','outbound','exten','dialstring','moment','lodash','queuecallercompleteAt'];(function(_0x236c89,_0xd76ba9){var _0x3b2a15=function(_0x89e4f9){while(--_0x89e4f9){_0x236c89['push'](_0x236c89['shift']());}};_0x3b2a15(++_0xd76ba9);}(_0x4e0c,0x1a1));var _0xc4e0=function(_0x568cf0,_0x1a44cb){_0x568cf0=_0x568cf0-0x0;var _0x360f81=_0x4e0c[_0x568cf0];return _0x360f81;};'use strict';var moment=require(_0xc4e0('0x0'));var _=require(_0xc4e0('0x1'));var util=require('util');var client=require('../client');exports['voiceQueueReport']=function(_0x3e2361){var _0x1a8fd1=_0x3e2361[_0xc4e0('0x2')]||_0x3e2361[_0xc4e0('0x3')];return client['Request'](_0xc4e0('0x4'),{'body':{'channel':_0xc4e0('0x5'),'membername':_0x3e2361[_0xc4e0('0x6')],'interface':_[_0xc4e0('0x7')](_0x3e2361[_0xc4e0('0x8')])?util[_0xc4e0('0x9')](_0xc4e0('0xa'),_0x3e2361[_0xc4e0('0x6')]):_0x3e2361['interface'],'type':_0xc4e0('0xb'),'enterAt':_0x3e2361[_0xc4e0('0xc')],'exitAt':_0x1a8fd1,'duration':moment(_0x1a8fd1)['diff'](_0x3e2361['queuecallerleaveAt'],'seconds'),'data1':_0xc4e0('0xd'),'data2':_0x3e2361[_0xc4e0('0xe')],'data3':_0x3e2361['exten'],'data4':null,'data5':_0x3e2361[_0xc4e0('0xf')],'role':_0xc4e0('0x10'),'internal':_0x3e2361[_0xc4e0('0x11')]?_[_0xc4e0('0x12')](_0x3e2361[_0xc4e0('0x11')]):undefined,'uniqueid':_0x3e2361[_0xc4e0('0x13')]},'log':'CreateMemberReport'});};exports[_0xc4e0('0x14')]=function(_0x3cb848){return client[_0xc4e0('0x15')](_0xc4e0('0x4'),{'body':{'channel':'voice','membername':_0x3cb848[_0xc4e0('0x16')],'interface':_0x3cb848['interface'],'type':_0xc4e0('0xb'),'enterAt':_0x3cb848[_0xc4e0('0x17')],'exitAt':_0x3cb848[_0xc4e0('0x18')],'duration':moment(_0x3cb848[_0xc4e0('0x18')])[_0xc4e0('0x19')](_0x3cb848[_0xc4e0('0x17')],_0xc4e0('0x1a'))>=0x0?moment(_0x3cb848[_0xc4e0('0x18')])[_0xc4e0('0x19')](_0x3cb848[_0xc4e0('0x17')],_0xc4e0('0x1a')):null,'data1':_0xc4e0('0x1b'),'data2':_0x3cb848[_0xc4e0('0x11')],'data3':_0x3cb848[_0xc4e0('0x1c')],'data4':_0x3cb848[_0xc4e0('0x1d')]||null,'role':_0xc4e0('0x10'),'internal':_0x3cb848[_0xc4e0('0x11')]?_[_0xc4e0('0x12')](_0x3cb848[_0xc4e0('0x11')]):undefined,'uniqueid':_0x3cb848[_0xc4e0('0x13')]},'log':'CreateMemberReport'});};
\ No newline at end of file
+var _0x7fa3=['accountcode','toNumber','uniqueid','CreateMemberReport','voiceDialReport','voice','membername','starttime','endtime','diff','outbound','lodash','util','voiceQueueReport','queuecallercompleteAt','Request','interface','format','SIP/%s','TALKING','queuecallerleaveAt','seconds','inbound','calleridnum','exten','queue','agent'];(function(_0x36dfbd,_0x5bfe2d){var _0x4ecad9=function(_0x5230da){while(--_0x5230da){_0x36dfbd['push'](_0x36dfbd['shift']());}};_0x4ecad9(++_0x5bfe2d);}(_0x7fa3,0x1bb));var _0x37fa=function(_0x4d093a,_0x15d59c){_0x4d093a=_0x4d093a-0x0;var _0x5d7227=_0x7fa3[_0x4d093a];return _0x5d7227;};'use strict';var moment=require('moment');var _=require(_0x37fa('0x0'));var util=require(_0x37fa('0x1'));var client=require('../client');exports[_0x37fa('0x2')]=function(_0x400bfc){var _0x1cdaf4=_0x400bfc[_0x37fa('0x3')]||_0x400bfc['queuecallerexitAt'];return client[_0x37fa('0x4')]('CreateMemberReport',{'body':{'channel':'voice','membername':_0x400bfc['lastAssignedTo'],'interface':_['isNil'](_0x400bfc[_0x37fa('0x5')])?util[_0x37fa('0x6')](_0x37fa('0x7'),_0x400bfc['lastAssignedTo']):_0x400bfc[_0x37fa('0x5')],'type':_0x37fa('0x8'),'enterAt':_0x400bfc[_0x37fa('0x9')],'exitAt':_0x1cdaf4,'duration':moment(_0x1cdaf4)['diff'](_0x400bfc[_0x37fa('0x9')],_0x37fa('0xa')),'data1':_0x37fa('0xb'),'data2':_0x400bfc[_0x37fa('0xc')],'data3':_0x400bfc[_0x37fa('0xd')],'data4':null,'data5':_0x400bfc[_0x37fa('0xe')],'role':_0x37fa('0xf'),'internal':_0x400bfc[_0x37fa('0x10')]?_[_0x37fa('0x11')](_0x400bfc[_0x37fa('0x10')]):undefined,'uniqueid':_0x400bfc[_0x37fa('0x12')]},'log':_0x37fa('0x13')});};exports[_0x37fa('0x14')]=function(_0x32885d){return client['Request'](_0x37fa('0x13'),{'body':{'channel':_0x37fa('0x15'),'membername':_0x32885d[_0x37fa('0x16')],'interface':_0x32885d[_0x37fa('0x5')],'type':_0x37fa('0x8'),'enterAt':_0x32885d[_0x37fa('0x17')],'exitAt':_0x32885d[_0x37fa('0x18')],'duration':moment(_0x32885d[_0x37fa('0x18')])[_0x37fa('0x19')](_0x32885d[_0x37fa('0x17')],_0x37fa('0xa'))>=0x0?moment(_0x32885d[_0x37fa('0x18')])[_0x37fa('0x19')](_0x32885d[_0x37fa('0x17')],_0x37fa('0xa')):null,'data1':_0x37fa('0x1a'),'data2':_0x32885d['accountcode'],'data3':_0x32885d[_0x37fa('0xd')],'data4':_0x32885d['dialstring']||null,'role':_0x37fa('0xf'),'internal':_0x32885d[_0x37fa('0x10')]?_['toNumber'](_0x32885d['accountcode']):undefined,'uniqueid':_0x32885d[_0x37fa('0x12')]},'log':_0x37fa('0x13')});};
\ No newline at end of file
index d0888f9..751cc05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c7c=['previewRecallmeReminderInterval','../client','getSettings','Request','ShowSetting'];(function(_0x5c0fea,_0x3b3f4a){var _0x51fe6c=function(_0x16414a){while(--_0x16414a){_0x5c0fea['push'](_0x5c0fea['shift']());}};_0x51fe6c(++_0x3b3f4a);}(_0x1c7c,0x164));var _0xc1c7=function(_0x279400,_0x4b97e4){_0x279400=_0x279400-0x0;var _0x4a9520=_0x1c7c[_0x279400];return _0x4a9520;};'use strict';var client=require(_0xc1c7('0x0'));exports[_0xc1c7('0x1')]=function(){return client[_0xc1c7('0x2')](_0xc1c7('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':['stopRecordingOnTransfer',_0xc1c7('0x4')]},'log':'GetSettings'});};
\ No newline at end of file
+var _0x1ae4=['../client','getSettings','Request','stopRecordingOnTransfer','previewRecallmeReminderInterval','GetSettings'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1ae4,0x114));var _0x41ae=function(_0xd10368,_0x135e59){_0xd10368=_0xd10368-0x0;var _0x3a5f7f=_0x1ae4[_0xd10368];return _0x3a5f7f;};'use strict';var client=require(_0x41ae('0x0'));exports[_0x41ae('0x1')]=function(){return client[_0x41ae('0x2')]('ShowSetting',{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x41ae('0x3'),_0x41ae('0x4')]},'log':_0x41ae('0x5')});};
\ No newline at end of file
index a8872de..5a56cd4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2426=['name','../client','getTemplates','Request','GetTemplate'];(function(_0x752005,_0x14dc74){var _0x40629c=function(_0x189e3d){while(--_0x189e3d){_0x752005['push'](_0x752005['shift']());}};_0x40629c(++_0x14dc74);}(_0x2426,0x155));var _0x6242=function(_0x568d2e,_0x2054a6){_0x568d2e=_0x568d2e-0x0;var _0x4666f4=_0x2426[_0x568d2e];return _0x4666f4;};'use strict';var client=require(_0x6242('0x0'));exports[_0x6242('0x1')]=function(_0xa09a37){return function(_0x4179a3){return client[_0x6242('0x2')](_0x6242('0x3'),{'options':{'raw':!![],'attributes':['id',_0x6242('0x4'),'html']},'log':_0x6242('0x3')});};};
\ No newline at end of file
+var _0x39bb=['../client','GetTemplate','html'];(function(_0x5df6c2,_0x35ee27){var _0x25f862=function(_0x330afd){while(--_0x330afd){_0x5df6c2['push'](_0x5df6c2['shift']());}};_0x25f862(++_0x35ee27);}(_0x39bb,0x1e3));var _0xb39b=function(_0x1ad5a2,_0x45632b){_0x1ad5a2=_0x1ad5a2-0x0;var _0x51eba3=_0x39bb[_0x1ad5a2];return _0x51eba3;};'use strict';var client=require(_0xb39b('0x0'));exports['getTemplates']=function(_0x3b37f6){return function(_0x1c5a24){return client['Request'](_0xb39b('0x1'),{'options':{'raw':!![],'attributes':['id','name',_0xb39b('0x2')]},'log':_0xb39b('0x1')});};};
\ No newline at end of file
index 0791ea3..85715dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa85=['Action','Actions','action','data3','data4','data5','data6','../client','Request','GetTrigger','name','channel','status','Condition','field','operator','value'];(function(_0x563323,_0x57feb5){var _0x3f5447=function(_0x37531b){while(--_0x37531b){_0x563323['push'](_0x563323['shift']());}};_0x3f5447(++_0x57feb5);}(_0xfa85,0xc2));var _0x5fa8=function(_0x1013b4,_0x178dac){_0x1013b4=_0x1013b4-0x0;var _0x5eecd6=_0xfa85[_0x1013b4];return _0x5eecd6;};'use strict';var client=require(_0x5fa8('0x0'));exports['getTriggers']=function(_0xb9db2b){return function(_0x2d0a94){return client[_0x5fa8('0x1')](_0x5fa8('0x2'),{'options':{'raw':![],'attributes':['id',_0x5fa8('0x3'),_0x5fa8('0x4'),_0x5fa8('0x5')],'include':[{'model':_0x5fa8('0x6'),'as':'AllConditions','attributes':['id',_0x5fa8('0x7'),_0x5fa8('0x8'),'value']},{'model':_0x5fa8('0x6'),'as':'AnyConditions','attributes':['id',_0x5fa8('0x7'),'operator',_0x5fa8('0x9')]},{'model':_0x5fa8('0xa'),'as':_0x5fa8('0xb'),'attributes':['id',_0x5fa8('0xc'),'data1','data2',_0x5fa8('0xd'),_0x5fa8('0xe'),_0x5fa8('0xf'),_0x5fa8('0x10'),'data7']}]},'log':_0x5fa8('0x2')});};};
\ No newline at end of file
+var _0x12e8=['AnyConditions','field','operator','Action','Actions','data2','data3','data5','data6','data7','../client','GetTrigger','name','channel','Condition','value'];(function(_0x4c9369,_0x245b7c){var _0x3d7328=function(_0xbd5f71){while(--_0xbd5f71){_0x4c9369['push'](_0x4c9369['shift']());}};_0x3d7328(++_0x245b7c);}(_0x12e8,0xda));var _0x812e=function(_0x400cb3,_0x575f45){_0x400cb3=_0x400cb3-0x0;var _0x14b4db=_0x12e8[_0x400cb3];return _0x14b4db;};'use strict';var client=require(_0x812e('0x0'));exports['getTriggers']=function(_0x300b6e){return function(_0x1920b8){return client['Request'](_0x812e('0x1'),{'options':{'raw':![],'attributes':['id',_0x812e('0x2'),_0x812e('0x3'),'status'],'include':[{'model':_0x812e('0x4'),'as':'AllConditions','attributes':['id','field','operator',_0x812e('0x5')]},{'model':_0x812e('0x4'),'as':_0x812e('0x6'),'attributes':['id',_0x812e('0x7'),_0x812e('0x8'),_0x812e('0x5')]},{'model':_0x812e('0x9'),'as':_0x812e('0xa'),'attributes':['id','action','data1',_0x812e('0xb'),_0x812e('0xc'),'data4',_0x812e('0xd'),_0x812e('0xe'),_0x812e('0xf')]}]},'log':_0x812e('0x1')});};};
\ No newline at end of file
index 0d95ce2..39d6d6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07b5=['defaultuser','../client','getTrunks','GetTrunk','name','registry'];(function(_0x24f07e,_0x3e9bc8){var _0x56a89e=function(_0x4da3aa){while(--_0x4da3aa){_0x24f07e['push'](_0x24f07e['shift']());}};_0x56a89e(++_0x3e9bc8);}(_0x07b5,0x10f));var _0x507b=function(_0x24618a,_0x2cd0f4){_0x24618a=_0x24618a-0x0;var _0x2e3d64=_0x07b5[_0x24618a];return _0x2e3d64;};'use strict';var client=require(_0x507b('0x0'));exports[_0x507b('0x1')]=function(_0x3c5d86){return function(_0x5a16a9){return client['Request'](_0x507b('0x2'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0x507b('0x3'),_0x507b('0x4'),_0x507b('0x5')]},'log':_0x507b('0x2')});};};
\ No newline at end of file
+var _0x1974=['GetTrunk','registry','defaultuser','Request'];(function(_0x4b9d59,_0x910c53){var _0x2426ba=function(_0x25bae3){while(--_0x25bae3){_0x4b9d59['push'](_0x4b9d59['shift']());}};_0x2426ba(++_0x910c53);}(_0x1974,0x1d3));var _0x4197=function(_0x1857a5,_0x4230de){_0x1857a5=_0x1857a5-0x0;var _0xe7eac7=_0x1974[_0x1857a5];return _0xe7eac7;};'use strict';var client=require('../client');exports['getTrunks']=function(_0x39d74e){return function(_0x503ae1){return client[_0x4197('0x0')](_0x4197('0x1'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id','name',_0x4197('0x2'),_0x4197('0x3')]},'log':_0x4197('0x1')});};};
\ No newline at end of file
index dfab513..194985e 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(_0x97f518,_0xe7cedb){var _0x33529a=function(_0x17cfa3){while(--_0x17cfa3){_0x97f518['push'](_0x97f518['shift']());}};_0x33529a(++_0xe7cedb);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x22663b,_0xc8c6e3){_0x22663b=_0x22663b-0x0;var _0x310d0a=_0xcb91[_0x22663b];return _0x310d0a;};'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 _0x34e8=['../client','getAgents','Request','GetUser','name','email','accountcode','fullname','online','lastLoginAt','pauseType','voicePause','mobile','interface','getTelephones','telephone','internal','savePause','PauseUser','saveUnpause','UnpauseUser','getAgent','ShowUser','agent','lastPauseAt'];(function(_0x10d0bf,_0x5f3acb){var _0x2dabd4=function(_0x288ab9){while(--_0x288ab9){_0x10d0bf['push'](_0x10d0bf['shift']());}};_0x2dabd4(++_0x5f3acb);}(_0x34e8,0x12c));var _0x834e=function(_0x19d2de,_0x17241c){_0x19d2de=_0x19d2de-0x0;var _0x5c2ece=_0x34e8[_0x19d2de];return _0x5c2ece;};'use strict';var client=require(_0x834e('0x0'));exports[_0x834e('0x1')]=function(){return function(){return client[_0x834e('0x2')](_0x834e('0x3'),{'options':{'raw':![],'where':{'role':'agent'},'attributes':['id',_0x834e('0x4'),_0x834e('0x5'),_0x834e('0x6'),_0x834e('0x7'),_0x834e('0x8'),_0x834e('0x9'),_0x834e('0xa'),'lastPauseAt',_0x834e('0xb'),'phone',_0x834e('0xc'),_0x834e('0xd')]},'log':_0x834e('0x1')});};};exports[_0x834e('0xe')]=function(){return function(){return client[_0x834e('0x2')](_0x834e('0x3'),{'options':{'raw':!![],'where':{'role':_0x834e('0xf')},'attributes':['id',_0x834e('0x4'),_0x834e('0x6'),_0x834e('0x10')]},'log':_0x834e('0xe')});};};exports[_0x834e('0x11')]=function(_0x14038b,_0x2e1a37,_0x293514){return client[_0x834e('0x2')](_0x834e('0x12'),{'body':{'type':_0x2e1a37,'uniqueid':_0x293514},'options':{'where':{'id':_0x14038b['id']}},'log':'savePause'});};exports[_0x834e('0x13')]=function(_0x6cd9b9){return client['Request'](_0x834e('0x14'),{'body':{},'options':{'where':{'id':_0x6cd9b9['id']}},'log':_0x834e('0x11')});};exports[_0x834e('0x15')]=function(_0x21cc0a){return client['Request'](_0x834e('0x16'),{'options':{'raw':![],'where':{'role':_0x834e('0x17'),'id':_0x21cc0a},'attributes':['id','name',_0x834e('0x5'),'accountcode',_0x834e('0x7'),_0x834e('0x8'),'lastLoginAt',_0x834e('0xa'),_0x834e('0x18'),_0x834e('0xb'),'interface']},'log':_0x834e('0x15')});};
\ No newline at end of file
index 38978e5..56bd349 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa4f=['CreateVoiceAgentReport','UpdateVoiceAgentReport','Request'];(function(_0x45ba28,_0x384cca){var _0x24a1b2=function(_0x37f5fe){while(--_0x37f5fe){_0x45ba28['push'](_0x45ba28['shift']());}};_0x24a1b2(++_0x384cca);}(_0xfa4f,0x1cd));var _0xffa4=function(_0xa148b7,_0x2f3eb2){_0xa148b7=_0xa148b7-0x0;var _0x51efd3=_0xfa4f[_0xa148b7];return _0x51efd3;};'use strict';var client=require('../client');exports['create']=function(_0x4f9ff5){return client[_0xffa4('0x0')](_0xffa4('0x1'),{'body':_0x4f9ff5,'log':_0xffa4('0x1')});};exports['update']=function(_0x449d24,_0x182d15,_0x37c4a5){return client[_0xffa4('0x0')](_0xffa4('0x2'),{'body':_0x449d24,'options':{'where':{'uniqueid':_0x182d15,'interface':_0x37c4a5,'agentcomplete':!![]}},'log':_0xffa4('0x2')});};
\ No newline at end of file
+var _0xa4ea=['../client','create','Request','CreateVoiceAgentReport','UpdateVoiceAgentReport'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa4ea,0x1d6));var _0xaa4e=function(_0x1e3c16,_0x372caa){_0x1e3c16=_0x1e3c16-0x0;var _0x47a0c9=_0xa4ea[_0x1e3c16];return _0x47a0c9;};'use strict';var client=require(_0xaa4e('0x0'));exports[_0xaa4e('0x1')]=function(_0x14a467){return client[_0xaa4e('0x2')](_0xaa4e('0x3'),{'body':_0x14a467,'log':_0xaa4e('0x3')});};exports['update']=function(_0x530ee9,_0x212793,_0x4f4457){return client['Request'](_0xaa4e('0x4'),{'body':_0x530ee9,'options':{'where':{'uniqueid':_0x212793,'interface':_0x4f4457,'agentcomplete':!![]}},'log':'UpdateVoiceAgentReport'});};
\ No newline at end of file
index 6c1a994..c253982 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51fc=['format','YYYY-MM-DD\x20HH:mm:ss','endOf','type','duration','billableseconds','GetVoiceCallReports','moment','util','lodash','../client','create','Request','CreateVoiceCallReport','merge','context','DOCUMENTATION','getVoiceCallReports','GetVoiceCallReport','outbound','day'];(function(_0x13c737,_0xc1ab62){var _0x34e425=function(_0x3e2ae3){while(--_0x3e2ae3){_0x13c737['push'](_0x13c737['shift']());}};_0x34e425(++_0xc1ab62);}(_0x51fc,0x16c));var _0xc51f=function(_0x32b9c9,_0x5881e6){_0x32b9c9=_0x32b9c9-0x0;var _0x1a837f=_0x51fc[_0x32b9c9];return _0x1a837f;};'use strict';var moment=require(_0xc51f('0x0'));var util=require(_0xc51f('0x1'));var _=require(_0xc51f('0x2'));var client=require(_0xc51f('0x3'));exports[_0xc51f('0x4')]=function(_0x46eed8){return client[_0xc51f('0x5')](_0xc51f('0x6'),{'body':_[_0xc51f('0x7')](_0x46eed8,{'source':_0x46eed8['calleridnum'],'destinationcontext':_0x46eed8[_0xc51f('0x8')],'callerid':_0x46eed8['callerid'],'amaflags':_0xc51f('0x9')}),'log':_0xc51f('0x6')});};exports[_0xc51f('0xa')]=function(){return function(){return client[_0xc51f('0x5')](_0xc51f('0xb'),{'options':{'where':{'type':[_0xc51f('0xc')],'createdAt':{'$between':[moment()['startOf'](_0xc51f('0xd'))[_0xc51f('0xe')](_0xc51f('0xf')),moment()[_0xc51f('0x10')](_0xc51f('0xd'))[_0xc51f('0xe')](_0xc51f('0xf'))]}},'attributes':[_0xc51f('0x11'),'disposition',_0xc51f('0x12'),_0xc51f('0x13')]},'log':_0xc51f('0x14')});};};
\ No newline at end of file
+var _0xeabe=['lodash','create','Request','CreateVoiceCallReport','merge','calleridnum','context','callerid','DOCUMENTATION','getVoiceCallReports','GetVoiceCallReport','outbound','startOf','day','format','YYYY-MM-DD\x20HH:mm:ss','endOf','duration','billableseconds','GetVoiceCallReports','moment','util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xeabe,0x1a0));var _0xeeab=function(_0x2a5fa1,_0x1752c5){_0x2a5fa1=_0x2a5fa1-0x0;var _0x134572=_0xeabe[_0x2a5fa1];return _0x134572;};'use strict';var moment=require(_0xeeab('0x0'));var util=require(_0xeeab('0x1'));var _=require(_0xeeab('0x2'));var client=require('../client');exports[_0xeeab('0x3')]=function(_0x582a54){return client[_0xeeab('0x4')](_0xeeab('0x5'),{'body':_[_0xeeab('0x6')](_0x582a54,{'source':_0x582a54[_0xeeab('0x7')],'destinationcontext':_0x582a54[_0xeeab('0x8')],'callerid':_0x582a54[_0xeeab('0x9')],'amaflags':_0xeeab('0xa')}),'log':'CreateVoiceCallReport'});};exports[_0xeeab('0xb')]=function(){return function(){return client[_0xeeab('0x4')](_0xeeab('0xc'),{'options':{'where':{'type':[_0xeeab('0xd')],'createdAt':{'$between':[moment()[_0xeeab('0xe')](_0xeeab('0xf'))[_0xeeab('0x10')](_0xeeab('0x11')),moment()[_0xeeab('0x12')](_0xeeab('0xf'))[_0xeeab('0x10')](_0xeeab('0x11'))]}},'attributes':['type','disposition',_0xeeab('0x13'),_0xeeab('0x14')]},'log':_0xeeab('0x15')});};};
\ No newline at end of file
index cb58016..a759eba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08c5=['CreateVoiceDialReport','../client','create'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x08c5,0xc1));var _0x508c=function(_0x4b3331,_0x21e8f5){_0x4b3331=_0x4b3331-0x0;var _0x4c56c8=_0x08c5[_0x4b3331];return _0x4c56c8;};'use strict';var client=require(_0x508c('0x0'));exports[_0x508c('0x1')]=function(_0x2ed9fb){return client['Request'](_0x508c('0x2'),{'body':_0x2ed9fb,'log':_0x508c('0x2')});};
\ No newline at end of file
+var _0xc6ea=['../client','create'];(function(_0x49f353,_0x16d359){var _0xc86538=function(_0xafe873){while(--_0xafe873){_0x49f353['push'](_0x49f353['shift']());}};_0xc86538(++_0x16d359);}(_0xc6ea,0x1cc));var _0xac6e=function(_0x3d0afb,_0x31c391){_0x3d0afb=_0x3d0afb-0x0;var _0x375e8f=_0xc6ea[_0x3d0afb];return _0x375e8f;};'use strict';var client=require(_0xac6e('0x0'));exports[_0xac6e('0x1')]=function(_0x434d8d){return client['Request']('CreateVoiceDialReport',{'body':_0x434d8d,'log':'CreateVoiceDialReport'});};
\ No newline at end of file
index c765481..1333c91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22fb=['recordingFormat','getVoiceExtensions','Request','exten'];(function(_0x19bf7a,_0x19c529){var _0x326db3=function(_0x1ee683){while(--_0x1ee683){_0x19bf7a['push'](_0x19bf7a['shift']());}};_0x326db3(++_0x19c529);}(_0x22fb,0x192));var _0xb22f=function(_0x57e83b,_0x1f1139){_0x57e83b=_0x57e83b-0x0;var _0x253525=_0x22fb[_0x57e83b];return _0x253525;};'use strict';var client=require('../client');exports['getVoiceExtensions']=function(){return function(){return client[_0xb22f('0x0')]('GetVoiceExtension',{'options':{'raw':!![],'attributes':['id',_0xb22f('0x1'),_0xb22f('0x2')],'where':{'VoiceExtensionId':null}},'log':_0xb22f('0x3')});};};
\ No newline at end of file
+var _0x3715=['GetVoiceExtension','exten','recordingFormat','../client','getVoiceExtensions','Request'];(function(_0x481366,_0x41e46b){var _0x229649=function(_0x508ecc){while(--_0x508ecc){_0x481366['push'](_0x481366['shift']());}};_0x229649(++_0x41e46b);}(_0x3715,0xc3));var _0x5371=function(_0x4fc2f7,_0x15c44e){_0x4fc2f7=_0x4fc2f7-0x0;var _0x2a7715=_0x3715[_0x4fc2f7];return _0x2a7715;};'use strict';var client=require(_0x5371('0x0'));exports[_0x5371('0x1')]=function(){return function(){return client[_0x5371('0x2')](_0x5371('0x3'),{'options':{'raw':!![],'attributes':['id',_0x5371('0x4'),_0x5371('0x5')],'where':{'VoiceExtensionId':null}},'log':_0x5371('0x1')});};};
\ No newline at end of file
index 8035e9d..fa1a902 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x142b=['dialPrefix','dialCheckDuplicateType','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','timeout','dialOrderByScheduledAt','dialAgiAfterHangupAgent','dialAgiAfterHangupClient','dialQueueProject2','strategy','dialRandomLastDigitCallerIdNumber','dialCutDigit','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','mandatoryDisposition','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','dialPreviewRecallmeReminder','callAdditionalPhoneAfterMin','Trunk','callerid','active','Pause','mandatoryDispositionPause','TrunkBackup','Interval','Intervals','../client','getVoiceQueues','Request','GetVoiceQueue','name','acwTimeout','autopause','monitor_format','type','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdNumber','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialGlobalMaxRetry','dialGlobalInterval'];(function(_0x5d43b5,_0x3d1c74){var _0x2c5fba=function(_0x3532a8){while(--_0x3532a8){_0x5d43b5['push'](_0x5d43b5['shift']());}};_0x2c5fba(++_0x3d1c74);}(_0x142b,0x10e));var _0xb142=function(_0x3b7079,_0x1ec65a){_0x3b7079=_0x3b7079-0x0;var _0x377789=_0x142b[_0x3b7079];return _0x377789;};'use strict';var client=require(_0xb142('0x0'));exports[_0xb142('0x1')]=function(){return function(){return client[_0xb142('0x2')](_0xb142('0x3'),{'options':{'raw':![],'attributes':['id',_0xb142('0x4'),'acw',_0xb142('0x5'),_0xb142('0x6'),_0xb142('0x7'),_0xb142('0x8'),'dialActive','dialMethod','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization',_0xb142('0x9'),_0xb142('0xa'),'dialOriginateCallerIdName',_0xb142('0xb'),'dialOriginateTimeout','dialQueueOptions',_0xb142('0xc'),_0xb142('0xd'),_0xb142('0xe'),'dialCongestionRetryFrequency',_0xb142('0xf'),_0xb142('0x10'),_0xb142('0x11'),'dialNoAnswerRetryFrequency',_0xb142('0x12'),'dialTimezone',_0xb142('0x13'),_0xb142('0x14'),_0xb142('0x15'),_0xb142('0x16'),_0xb142('0x17'),_0xb142('0x18'),_0xb142('0x19'),'dialAMDTotalAnalysisTime',_0xb142('0x1a'),_0xb142('0x1b'),_0xb142('0x1c'),'dialAMDSilenceThreshold','dialAMDMaximumWordLength',_0xb142('0x1d'),'dialRecallMeTimeout','dialRecallInQueue',_0xb142('0x1e'),_0xb142('0x1f'),_0xb142('0x20'),_0xb142('0x21'),'monitor_format',_0xb142('0x22'),_0xb142('0x23'),_0xb142('0x24'),'dialNoSuchNumberMaxRetry',_0xb142('0x25'),_0xb142('0x26'),_0xb142('0x27'),_0xb142('0x28'),_0xb142('0x29'),_0xb142('0x2a'),_0xb142('0x2b'),_0xb142('0x2c'),'dialAgentRejectRetryFrequency',_0xb142('0x2d'),_0xb142('0x2e'),_0xb142('0x2f'),'dialPreviewAutoRecallMe',_0xb142('0x30'),_0xb142('0x31')],'include':[{'model':_0xb142('0x32'),'as':'Trunk','attributes':['id',_0xb142('0x4'),_0xb142('0x33'),_0xb142('0x34')]},{'model':_0xb142('0x35'),'as':_0xb142('0x36'),'attributes':['id','name']},{'model':_0xb142('0x32'),'as':_0xb142('0x37'),'attributes':['id',_0xb142('0x4'),_0xb142('0x33'),'active']},{'model':_0xb142('0x38'),'as':_0xb142('0x38'),'attributes':['id',_0xb142('0x4')],'include':[{'model':_0xb142('0x38'),'as':_0xb142('0x39'),'attributes':['id',_0xb142('0x4'),'interval']}]}]},'log':_0xb142('0x1')});};};
\ No newline at end of file
+var _0xcdf3=['dialCutDigit','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','dialPreviewAutoRecallMe','callAdditionalPhoneAfterMin','Trunk','callerid','active','mandatoryDispositionPause','TrunkBackup','Interval','Intervals','interval','../client','getVoiceQueues','Request','GetVoiceQueue','name','acw','acwTimeout','monitor_format','type','dialActive','dialMethod','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialTimezone','dialAMDActive','dialAMDInitialSilence','dialAMDTotalAnalysisTime','dialAMDSilenceThreshold','dialRecallMeTimeout','dialOrderByScheduledAt','dialAgiAfterHangupAgent','dialAgiAfterHangupClient','dialQueueProject2','strategy','dialRandomLastDigitCallerIdNumber'];(function(_0x2f4494,_0x40f20e){var _0x1d2960=function(_0x54d7a7){while(--_0x54d7a7){_0x2f4494['push'](_0x2f4494['shift']());}};_0x1d2960(++_0x40f20e);}(_0xcdf3,0x10b));var _0x3cdf=function(_0x19fff8,_0x1aa64b){_0x19fff8=_0x19fff8-0x0;var _0x38ee65=_0xcdf3[_0x19fff8];return _0x38ee65;};'use strict';var client=require(_0x3cdf('0x0'));exports[_0x3cdf('0x1')]=function(){return function(){return client[_0x3cdf('0x2')](_0x3cdf('0x3'),{'options':{'raw':![],'attributes':['id',_0x3cdf('0x4'),_0x3cdf('0x5'),_0x3cdf('0x6'),'autopause',_0x3cdf('0x7'),_0x3cdf('0x8'),_0x3cdf('0x9'),_0x3cdf('0xa'),_0x3cdf('0xb'),_0x3cdf('0xc'),_0x3cdf('0xd'),_0x3cdf('0xe'),_0x3cdf('0xf'),_0x3cdf('0x10'),_0x3cdf('0x11'),_0x3cdf('0x12'),_0x3cdf('0x13'),'dialQueueOptions','dialQueueTimeout',_0x3cdf('0x14'),_0x3cdf('0x15'),_0x3cdf('0x16'),_0x3cdf('0x17'),_0x3cdf('0x18'),_0x3cdf('0x19'),'dialNoAnswerRetryFrequency','dialGlobalMaxRetry',_0x3cdf('0x1a'),'dialGlobalInterval','dialPrefix','dialCheckDuplicateType',_0x3cdf('0x1b'),_0x3cdf('0x1c'),'dialAMDGreeting','dialAMDAfterGreetingSilence',_0x3cdf('0x1d'),'dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords',_0x3cdf('0x1e'),'dialAMDMaximumWordLength','timeout',_0x3cdf('0x1f'),'dialRecallInQueue',_0x3cdf('0x20'),_0x3cdf('0x21'),_0x3cdf('0x22'),_0x3cdf('0x23'),'monitor_format',_0x3cdf('0x24'),_0x3cdf('0x25'),_0x3cdf('0x26'),_0x3cdf('0x27'),_0x3cdf('0x28'),_0x3cdf('0x29'),_0x3cdf('0x2a'),_0x3cdf('0x2b'),'dialAbandonedRetryFrequency',_0x3cdf('0x2c'),_0x3cdf('0x2d'),_0x3cdf('0x2e'),_0x3cdf('0x2f'),_0x3cdf('0x30'),_0x3cdf('0x31'),_0x3cdf('0x32'),_0x3cdf('0x33'),'dialPreviewRecallmeReminder',_0x3cdf('0x34')],'include':[{'model':_0x3cdf('0x35'),'as':_0x3cdf('0x35'),'attributes':['id',_0x3cdf('0x4'),_0x3cdf('0x36'),_0x3cdf('0x37')]},{'model':'Pause','as':_0x3cdf('0x38'),'attributes':['id',_0x3cdf('0x4')]},{'model':_0x3cdf('0x35'),'as':_0x3cdf('0x39'),'attributes':['id',_0x3cdf('0x4'),'callerid',_0x3cdf('0x37')]},{'model':'Interval','as':'Interval','attributes':['id',_0x3cdf('0x4')],'include':[{'model':_0x3cdf('0x3a'),'as':_0x3cdf('0x3b'),'attributes':['id',_0x3cdf('0x4'),_0x3cdf('0x3c')]}]}]},'log':_0x3cdf('0x1')});};};
\ No newline at end of file
index 330ed53..2e75708 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(_0x3a1a85,_0x1aecbc){var _0xb1e7ab=function(_0x4c9f82){while(--_0x4c9f82){_0x3a1a85['push'](_0x3a1a85['shift']());}};_0xb1e7ab(++_0x1aecbc);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf71120,_0x25b7f9){_0xf71120=_0xf71120-0x0;var _0xbe2fd3=_0xa9e0[_0xf71120];return _0xbe2fd3;};'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(_0x1b56a9,_0x367c88){var _0x1f9d34=function(_0x5de83f){while(--_0x5de83f){_0x1b56a9['push'](_0x1b56a9['shift']());}};_0x1f9d34(++_0x367c88);}(_0xa9e0,0x123));var _0x0a9e=function(_0x433a86,_0x175b5c){_0x433a86=_0x433a86-0x0;var _0x23000c=_0xa9e0[_0x433a86];return _0x23000c;};'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 a37b132..292e966 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3f7=['getVoiceQueueRtPauses','Request','../client'];(function(_0x3ab9ee,_0x4a74b8){var _0x82ee88=function(_0x6ccc7e){while(--_0x6ccc7e){_0x3ab9ee['push'](_0x3ab9ee['shift']());}};_0x82ee88(++_0x4a74b8);}(_0xf3f7,0x1c1));var _0x7f3f=function(_0x4f4c08,_0x5bad23){_0x4f4c08=_0x4f4c08-0x0;var _0xc4dcc6=_0xf3f7[_0x4f4c08];return _0xc4dcc6;};'use strict';var client=require(_0x7f3f('0x0'));exports[_0x7f3f('0x1')]=function(_0x46df0c){return function(){return client[_0x7f3f('0x2')]('GetVoiceQueueRtPauses',{'options':{'where':{'VoiceQueueId':_0x46df0c,'paused':!![]},'raw':!![]},'log':_0x7f3f('0x1')});};};
\ No newline at end of file
+var _0x8911=['getVoiceQueueRtPauses','Request'];(function(_0x251b74,_0xfbee3b){var _0x2f2f32=function(_0x305b59){while(--_0x305b59){_0x251b74['push'](_0x251b74['shift']());}};_0x2f2f32(++_0xfbee3b);}(_0x8911,0x15c));var _0x1891=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x8911[_0x14add3];return _0x4a174f;};'use strict';var client=require('../client');exports[_0x1891('0x0')]=function(_0x2c318c){return function(){return client[_0x1891('0x1')]('GetVoiceQueueRtPauses',{'options':{'where':{'VoiceQueueId':_0x2c318c,'paused':!![]},'raw':!![]},'log':_0x1891('0x0')});};};
\ No newline at end of file
index 5c0103d..7e393bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['CreateVoiceRecording','merge','monitorFilename','lodash','../client','create'];(function(_0x51fca6,_0xf24989){var _0x5af925=function(_0x3497a9){while(--_0x3497a9){_0x51fca6['push'](_0x51fca6['shift']());}};_0x5af925(++_0xf24989);}(_0x9957,0x93));var _0x7995=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x9957[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x7995('0x0'));var client=require(_0x7995('0x1'));exports[_0x7995('0x2')]=function(_0x10a05d){return client['Request'](_0x7995('0x3'),{'body':_[_0x7995('0x4')](_0x10a05d,{'value':_0x10a05d[_0x7995('0x5')]}),'log':_0x7995('0x3')});};
\ No newline at end of file
+var _0x7a54=['create','Request','CreateVoiceRecording','monitorFilename','lodash','../client'];(function(_0x411fde,_0x226e6e){var _0xec5cf9=function(_0xb4c9f6){while(--_0xb4c9f6){_0x411fde['push'](_0x411fde['shift']());}};_0xec5cf9(++_0x226e6e);}(_0x7a54,0x106));var _0x47a5=function(_0x10dc00,_0x2aa981){_0x10dc00=_0x10dc00-0x0;var _0x37817c=_0x7a54[_0x10dc00];return _0x37817c;};'use strict';var _=require(_0x47a5('0x0'));var client=require(_0x47a5('0x1'));exports[_0x47a5('0x2')]=function(_0x58157c){return client[_0x47a5('0x3')](_0x47a5('0x4'),{'body':_['merge'](_0x58157c,{'value':_0x58157c[_0x47a5('0x5')]}),'log':_0x47a5('0x4')});};
\ No newline at end of file
index a90e986..d0830f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7be=['result','transfererchannel','transferercalleridnum','transferercalleridname','transfererconnectedlinenum','transfererconnectedlinename','transfereraccountcode','transferercontext','transfererexten','transfererlinkedid','transfereechannel','transfereecalleridnum','transfereecalleridname','transfereeconnectedlinenum','transfereelinkedid','isexternal','context','extension','CreateVoiceTransferReport','attendedTransfer','Request','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','origtransfererlinkedid','transfertargetcalleridnum','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetaccountcode','transfertargetcontext','transfertargetexten','transfertargetlinkedid','origtransfererexten','attended','../client','transfers','blindTransfer'];(function(_0x5c56d8,_0x2c6245){var _0x38c39c=function(_0x1d8ad7){while(--_0x1d8ad7){_0x5c56d8['push'](_0x5c56d8['shift']());}};_0x38c39c(++_0x2c6245);}(_0xd7be,0x13d));var _0xed7b=function(_0xf5ba9d,_0x131a99){_0xf5ba9d=_0xf5ba9d-0x0;var _0x1828cb=_0xd7be[_0xf5ba9d];return _0x1828cb;};'use strict';var client=require(_0xed7b('0x0'));exports[_0xed7b('0x1')]={};exports[_0xed7b('0x2')]=function(_0x58f520){return client['Request']('CreateVoiceTransferReport',{'body':{'result':_0x58f520[_0xed7b('0x3')],'transfererchannel':_0x58f520[_0xed7b('0x4')],'transferercalleridnum':_0x58f520[_0xed7b('0x5')],'transferercalleridname':_0x58f520[_0xed7b('0x6')],'transfererconnectedlinenum':_0x58f520[_0xed7b('0x7')],'transfererconnectedlinename':_0x58f520[_0xed7b('0x8')],'transfereraccountcode':_0x58f520[_0xed7b('0x9')],'transferercontext':_0x58f520[_0xed7b('0xa')],'transfererexten':_0x58f520[_0xed7b('0xb')],'transfererlinkedid':_0x58f520[_0xed7b('0xc')],'transfereechannel':_0x58f520[_0xed7b('0xd')],'transfereecalleridnum':_0x58f520[_0xed7b('0xe')],'transfereecalleridname':_0x58f520[_0xed7b('0xf')],'transfereeconnectedlinenum':_0x58f520[_0xed7b('0x10')],'transfereeconnectedlinename':_0x58f520['transfereeconnectedlinename'],'transfereeaccountcode':_0x58f520['transfereeaccountcode'],'transfereecontext':_0x58f520['transfereecontext'],'transfereeexten':_0x58f520['transfereeexten'],'transfereelinkedid':_0x58f520[_0xed7b('0x11')],'isexternal':_0x58f520[_0xed7b('0x12')],'context':_0x58f520[_0xed7b('0x13')],'extension':_0x58f520[_0xed7b('0x14')],'type':'blind'},'log':_0xed7b('0x15')});};exports[_0xed7b('0x16')]=function(_0x803310){return client[_0xed7b('0x17')](_0xed7b('0x15'),{'body':{'result':_0x803310[_0xed7b('0x3')],'transfererchannel':_0x803310['origtransfererchannel'],'transferercalleridnum':_0x803310[_0xed7b('0x18')],'transferercalleridname':_0x803310[_0xed7b('0x19')],'transfererconnectedlinenum':_0x803310[_0xed7b('0x1a')],'transfererconnectedlinename':_0x803310[_0xed7b('0x1b')],'transfereraccountcode':_0x803310[_0xed7b('0x1c')],'transferercontext':_0x803310[_0xed7b('0x1d')],'transfererexten':_0x803310['secondtransfererexten'],'transfererlinkedid':_0x803310[_0xed7b('0x1e')],'transfereechannel':_0x803310['transfertargetchannel'],'transfereecalleridnum':_0x803310[_0xed7b('0x1f')],'transfereecalleridname':_0x803310[_0xed7b('0x20')],'transfereeconnectedlinenum':_0x803310[_0xed7b('0x21')],'transfereeconnectedlinename':_0x803310['transfertargetconnectedlinename'],'transfereeaccountcode':_0x803310[_0xed7b('0x22')],'transfereecontext':_0x803310[_0xed7b('0x23')],'transfereeexten':_0x803310[_0xed7b('0x24')],'transfereelinkedid':_0x803310[_0xed7b('0x25')],'isexternal':_0x803310['isexternal'],'context':_0x803310['origtransferercontext'],'extension':_0x803310[_0xed7b('0x26')],'type':_0xed7b('0x27')},'log':_0xed7b('0x15')});};
\ No newline at end of file
+var _0xcb79=['transfereelinkedid','isexternal','context','blind','attendedTransfer','result','origtransfererchannel','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','secondtransferercontext','secondtransfererexten','transfertargetchannel','transfertargetcalleridnum','transfertargetcalleridname','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','origtransfererexten','attended','../client','Request','CreateVoiceTransferReport','transfererchannel','transferercalleridnum','transferercalleridname','transfererconnectedlinenum','transfererconnectedlinename','transfereraccountcode','transfererlinkedid','transfereechannel','transfereeconnectedlinenum','transfereeconnectedlinename','transfereecontext','transfereeexten'];(function(_0x38045f,_0x551f77){var _0xfd4f8c=function(_0x362607){while(--_0x362607){_0x38045f['push'](_0x38045f['shift']());}};_0xfd4f8c(++_0x551f77);}(_0xcb79,0x1e9));var _0x9cb7=function(_0x4947e4,_0x5779c9){_0x4947e4=_0x4947e4-0x0;var _0x3c0769=_0xcb79[_0x4947e4];return _0x3c0769;};'use strict';var client=require(_0x9cb7('0x0'));exports['transfers']={};exports['blindTransfer']=function(_0x16d5aa){return client[_0x9cb7('0x1')](_0x9cb7('0x2'),{'body':{'result':_0x16d5aa['result'],'transfererchannel':_0x16d5aa[_0x9cb7('0x3')],'transferercalleridnum':_0x16d5aa[_0x9cb7('0x4')],'transferercalleridname':_0x16d5aa[_0x9cb7('0x5')],'transfererconnectedlinenum':_0x16d5aa[_0x9cb7('0x6')],'transfererconnectedlinename':_0x16d5aa[_0x9cb7('0x7')],'transfereraccountcode':_0x16d5aa[_0x9cb7('0x8')],'transferercontext':_0x16d5aa['transferercontext'],'transfererexten':_0x16d5aa['transfererexten'],'transfererlinkedid':_0x16d5aa[_0x9cb7('0x9')],'transfereechannel':_0x16d5aa[_0x9cb7('0xa')],'transfereecalleridnum':_0x16d5aa['transfereecalleridnum'],'transfereecalleridname':_0x16d5aa['transfereecalleridname'],'transfereeconnectedlinenum':_0x16d5aa[_0x9cb7('0xb')],'transfereeconnectedlinename':_0x16d5aa[_0x9cb7('0xc')],'transfereeaccountcode':_0x16d5aa['transfereeaccountcode'],'transfereecontext':_0x16d5aa[_0x9cb7('0xd')],'transfereeexten':_0x16d5aa[_0x9cb7('0xe')],'transfereelinkedid':_0x16d5aa[_0x9cb7('0xf')],'isexternal':_0x16d5aa[_0x9cb7('0x10')],'context':_0x16d5aa[_0x9cb7('0x11')],'extension':_0x16d5aa['extension'],'type':_0x9cb7('0x12')},'log':_0x9cb7('0x2')});};exports[_0x9cb7('0x13')]=function(_0x58ef7e){return client['Request'](_0x9cb7('0x2'),{'body':{'result':_0x58ef7e[_0x9cb7('0x14')],'transfererchannel':_0x58ef7e[_0x9cb7('0x15')],'transferercalleridnum':_0x58ef7e[_0x9cb7('0x16')],'transferercalleridname':_0x58ef7e[_0x9cb7('0x17')],'transfererconnectedlinenum':_0x58ef7e[_0x9cb7('0x18')],'transfererconnectedlinename':_0x58ef7e[_0x9cb7('0x19')],'transfereraccountcode':_0x58ef7e['origtransfereraccountcode'],'transferercontext':_0x58ef7e[_0x9cb7('0x1a')],'transfererexten':_0x58ef7e[_0x9cb7('0x1b')],'transfererlinkedid':_0x58ef7e['origtransfererlinkedid'],'transfereechannel':_0x58ef7e[_0x9cb7('0x1c')],'transfereecalleridnum':_0x58ef7e[_0x9cb7('0x1d')],'transfereecalleridname':_0x58ef7e[_0x9cb7('0x1e')],'transfereeconnectedlinenum':_0x58ef7e['transfertargetconnectedlinenum'],'transfereeconnectedlinename':_0x58ef7e[_0x9cb7('0x1f')],'transfereeaccountcode':_0x58ef7e[_0x9cb7('0x20')],'transfereecontext':_0x58ef7e[_0x9cb7('0x21')],'transfereeexten':_0x58ef7e['transfertargetexten'],'transfereelinkedid':_0x58ef7e['transfertargetlinkedid'],'isexternal':_0x58ef7e[_0x9cb7('0x10')],'context':_0x58ef7e['origtransferercontext'],'extension':_0x58ef7e[_0x9cb7('0x22')],'type':_0x9cb7('0x23')},'log':'CreateVoiceTransferReport'});};
\ No newline at end of file
index c5c1e17..f9a1d31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd757=['predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','callerid','Interval','push','find','omit','undefined','values','channels','ami\x20disconnected','voicechannel','length','map','uniqueid','channel','%s.%s','wav','MixMonitor','monitors','toLowerCase','isNil','/var/spool/asterisk/monitor/','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','MixMonitor\x20Success','Channel\x20doesn\x27t\x20exist','resolve','StopMixMonitor','status','stop','queueChannels','voicequeuechannel','voicequeuechannelhangup','Hangup','Redirect','exten','context','telephones','trunks','outboundChannels','campaigns','run','event','Event\x20name\x20mandatory','custom:','faxAccounts','send','server','http','listen','127.0.0.1','log','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','lodash','util','jayson/promise','validate','../properties','../ami','format','%s/%s','SIP','name','timers','timer','agents','updateStatusRealtime','pause','isConnected','error','asterisk','username','join','pick','keys','module','action','Reload','then','message','catch','command','Command','Action','content','voiceQueues','answered','available','loggedIn','pTalking','sumBillable','sumHoldTime','talking','total','type','unmanaged','abandoned','loggedInDb','outbound','dialActive','dialMethod','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout'];(function(_0x589f3d,_0x82a40c){var _0x1f94cc=function(_0x781485){while(--_0x781485){_0x589f3d['push'](_0x589f3d['shift']());}};_0x1f94cc(++_0x82a40c);}(_0xd757,0x1e5));var _0x7d75=function(_0x56db0f,_0x2e9025){_0x56db0f=_0x56db0f-0x0;var _0x3be3db=_0xd757[_0x56db0f];return _0x3be3db;};'use strict';var _=require(_0x7d75('0x0'));var util=require(_0x7d75('0x1'));var jayson=require(_0x7d75('0x2'));var schema=require(_0x7d75('0x3'));var moment=require('moment');var config=require('../../../config/environment');var properties=require(_0x7d75('0x4'));var ami=require(_0x7d75('0x5'));exports['listen']=function(_0xa7df66,_0x10d11a,_0x42c15a){return new Promise(function(_0x52bb43,_0x5d6128){var _0x108c0d={'QueuePause':function(_0x3fde33){return new Promise(function(_0x1cf272){var _0x276fb0=util[_0x7d75('0x6')](_0x7d75('0x7'),_0x7d75('0x8'),_0x3fde33[_0x7d75('0x9')]);if(_0xa7df66[_0x7d75('0xa')]&&_0xa7df66[_0x7d75('0xa')][_0x276fb0]&&_0xa7df66[_0x7d75('0xa')][_0x276fb0][_0x7d75('0xb')]){_0xa7df66[_0x7d75('0xa')][_0x276fb0]['updateAcw']();}if(_0xa7df66['agents'][_0x276fb0]){_0xa7df66[_0x7d75('0xc')][_0x276fb0][_0x7d75('0xd')]({'statePause':_0x3fde33[_0x7d75('0xe')]?!![]:![]});}_0x1cf272({'code':0xc8,'message':'QueuePause'});});},'Reload':function(_0x3e7b97){var _0x3a5ca5=this;return new Promise(function(_0x5c9fcf,_0x452c45){if(ami[_0x7d75('0xf')]()==![]){return _0x452c45(_0x3a5ca5[_0x7d75('0x10')](0x1f4,[config[_0x7d75('0x11')]['ip'],config[_0x7d75('0x11')][_0x7d75('0x12')],'ami\x20disconnected'][_0x7d75('0x13')]('\x20')));}_0x3e7b97=_[_0x7d75('0x14')](_0x3e7b97,_[_0x7d75('0x15')](properties[_0x7d75('0x16')]));_0x3e7b97[_0x7d75('0x17')]=_0x7d75('0x18');return ami['Action'](_0x3e7b97)[_0x7d75('0x19')](function(_0x5c203f){_0x5c9fcf({'code':0xc8,'message':_0x5c203f[_0x7d75('0x1a')]});})[_0x7d75('0x1b')](function(_0x40edfc){_0x452c45(_0x3a5ca5[_0x7d75('0x10')](0x1f5,_0x40edfc[_0x7d75('0x1a')]));});});},'Command':function(_0x12295a){var _0x17a61c=this;return new Promise(function(_0x250c7b,_0x55b89d){if(ami['isConnected']()==![]){return _0x55b89d(_0x17a61c[_0x7d75('0x10')](0x1f4,[config[_0x7d75('0x11')]['ip'],config[_0x7d75('0x11')][_0x7d75('0x12')],'ami\x20disconnected'][_0x7d75('0x13')]('\x20')));}_0x12295a=_[_0x7d75('0x14')](_0x12295a,_0x7d75('0x1c'));_0x12295a[_0x7d75('0x17')]=_0x7d75('0x1d');return ami[_0x7d75('0x1e')](_0x12295a)[_0x7d75('0x19')](function(_0x3490d4){_0x250c7b({'code':0xc8,'message':_0x3490d4[_0x7d75('0x1f')]});})[_0x7d75('0x1b')](function(_0x3be591){_0x55b89d(_0x17a61c[_0x7d75('0x10')](0x1f5,_0x3be591[_0x7d75('0x1a')]));});});},'VoiceQueues':function(){return new Promise(function(_0x9a831b){var _0x1e32d6=[];for(var _0x338e26 in _0xa7df66[_0x7d75('0x20')]){if(_0xa7df66[_0x7d75('0x20')]['hasOwnProperty'](_0x338e26)){var _0xec279d=_0xa7df66[_0x7d75('0x20')][_0x338e26];var _0x4f67e6={'id':_0xec279d['id'],'name':_0xec279d[_0x7d75('0x9')],'strategy':_0xec279d['strategy'],'answered':_0xec279d[_0x7d75('0x21')],'available':_0xec279d[_0x7d75('0x22')],'loggedIn':_0xec279d[_0x7d75('0x23')],'pTalking':_0xec279d[_0x7d75('0x24')],'sumBillable':_0xec279d[_0x7d75('0x25')],'sumDuration':_0xec279d['sumDuration'],'sumHoldTime':_0xec279d[_0x7d75('0x26')]||0x0,'talking':_0xec279d[_0x7d75('0x27')],'total':_0xec279d[_0x7d75('0x28')],'type':_0xec279d[_0x7d75('0x29')],'unmanaged':_0xec279d[_0x7d75('0x2a')],'abandoned':_0xec279d[_0x7d75('0x2b')],'waiting':_0xec279d['waiting'],'loggedInDb':_0xec279d[_0x7d75('0x2c')]};if(_0xec279d[_0x7d75('0x29')]===_0x7d75('0x2d')){_0x4f67e6[_0x7d75('0x2e')]=_0xec279d[_0x7d75('0x2e')];_0x4f67e6[_0x7d75('0x2f')]=_0xec279d[_0x7d75('0x2f')];_0x4f67e6['dialOriginateCallerIdName']=_0xec279d['dialOriginateCallerIdName'];_0x4f67e6['dialOriginateCallerIdNumber']=_0xec279d[_0x7d75('0x30')];_0x4f67e6['dialOriginateTimeout']=_0xec279d[_0x7d75('0x31')];_0x4f67e6[_0x7d75('0x32')]=_0xec279d[_0x7d75('0x32')];_0x4f67e6[_0x7d75('0x33')]=_0xec279d[_0x7d75('0x33')];_0x4f67e6['outboundAnswerAgiCallsDay']=_0xec279d[_0x7d75('0x34')];_0x4f67e6[_0x7d75('0x35')]=_0xec279d[_0x7d75('0x35')];_0x4f67e6[_0x7d75('0x36')]=_0xec279d[_0x7d75('0x36')];_0x4f67e6[_0x7d75('0x37')]=_0xec279d[_0x7d75('0x37')];_0x4f67e6[_0x7d75('0x38')]=_0xec279d[_0x7d75('0x38')];_0x4f67e6[_0x7d75('0x39')]=_0xec279d['outboundDropCallsDayACS'];_0x4f67e6[_0x7d75('0x3a')]=_0xec279d[_0x7d75('0x3a')];_0x4f67e6[_0x7d75('0x3b')]=_0xec279d[_0x7d75('0x3b')];_0x4f67e6[_0x7d75('0x3c')]=_0xec279d[_0x7d75('0x3c')];_0x4f67e6['outboundNoSuchCallsDay']=_0xec279d[_0x7d75('0x3d')];_0x4f67e6[_0x7d75('0x3e')]=_0xec279d['outboundOriginateFailureCallsDay'];_0x4f67e6['outboundReCallsDay']=_0xec279d[_0x7d75('0x3f')];_0x4f67e6[_0x7d75('0x40')]=_0xec279d[_0x7d75('0x40')];_0x4f67e6[_0x7d75('0x41')]=_0xec279d[_0x7d75('0x41')];_0x4f67e6[_0x7d75('0x42')]=_0xec279d['predictiveIntervalAnsweredCalls'];_0x4f67e6[_0x7d75('0x43')]=_0xec279d[_0x7d75('0x43')];_0x4f67e6['predictiveIntervalAvgTalktime']=_0xec279d[_0x7d75('0x44')];_0x4f67e6[_0x7d75('0x45')]=_0xec279d[_0x7d75('0x45')];_0x4f67e6[_0x7d75('0x46')]=_0xec279d[_0x7d75('0x46')];_0x4f67e6[_0x7d75('0x47')]=_0xec279d[_0x7d75('0x47')];_0x4f67e6[_0x7d75('0x48')]=_0xec279d[_0x7d75('0x48')];_0x4f67e6[_0x7d75('0x49')]=_0xec279d[_0x7d75('0x49')];_0x4f67e6[_0x7d75('0x4a')]=_0xec279d[_0x7d75('0x4a')];_0x4f67e6[_0x7d75('0x4b')]=_0xec279d[_0x7d75('0x4b')];_0x4f67e6[_0x7d75('0x4c')]=_0xec279d[_0x7d75('0x4c')];_0x4f67e6[_0x7d75('0x4d')]=_0xec279d[_0x7d75('0x4d')];_0x4f67e6[_0x7d75('0x1a')]=_0xec279d['message'];_0x4f67e6['originated']=_0xec279d[_0x7d75('0x4e')];_0x4f67e6[_0x7d75('0x4f')]=_0xec279d[_0x7d75('0x4f')];_0x4f67e6[_0x7d75('0x50')]=_0xec279d[_0x7d75('0x50')];_0x4f67e6[_0x7d75('0x51')]=_0xec279d[_0x7d75('0x51')];_0x4f67e6['erlangBusyFactor']=_0xec279d[_0x7d75('0x52')];_0x4f67e6[_0x7d75('0x53')]=_0xec279d[_0x7d75('0x53')];_0x4f67e6['startProgressive']=_0xec279d[_0x7d75('0x54')];}if(_0xec279d[_0x7d75('0x55')]){_0x4f67e6[_0x7d75('0x55')]={'id':_0xec279d[_0x7d75('0x55')]['id'],'name':_0xec279d[_0x7d75('0x55')][_0x7d75('0x9')],'active':_0xec279d[_0x7d75('0x55')][_0x7d75('0x56')],'callerid':_0xec279d[_0x7d75('0x55')][_0x7d75('0x57')]};}if(_0xec279d[_0x7d75('0x58')]){_0x4f67e6['Interval']={'id':_0xec279d[_0x7d75('0x58')]['id'],'name':_0xec279d['Interval']['name']};}_0x1e32d6[_0x7d75('0x59')](_0x4f67e6);}}_0x9a831b({'count':_0x1e32d6['length'],'rows':_0x1e32d6});});},'UpdateVoiceQueue':function(_0x1882ff){return new Promise(function(_0x32ee99,_0x4dfa00){var _0x264aeb=_[_0x7d75('0x5a')](_0xa7df66[_0x7d75('0x20')],{'id':parseInt(_0x1882ff['id'])});var _0x1db74e=_[_0x7d75('0x5b')](_0x1882ff,['id']);if(_0x264aeb){for(var _0x3982f8 in _0x1db74e){if(typeof _0x1db74e[_0x3982f8]!==_0x7d75('0x5c')&&typeof _0x264aeb[_0x3982f8]!==_0x7d75('0x5c')){_0x264aeb[_0x3982f8]=_0x1db74e[_0x3982f8];}}_0x32ee99(_0x264aeb);}else{_0x4dfa00();}});},'VoiceChannels':function(){return new Promise(function(_0x5a8a87){var _0x2b314d=_[_0x7d75('0x5d')](_0xa7df66[_0x7d75('0x5e')]);_0x5a8a87({'count':_0x2b314d['length'],'rows':_0x2b314d});});},'VoiceChannelMixMonitor':function(_0x1a0048){var _0x388850=this;return new Promise(function(_0x34ff66,_0x277788){if(ami[_0x7d75('0xf')]()==![]){return _0x277788(_0x388850[_0x7d75('0x10')](0x1f4,[config['asterisk']['ip'],config[_0x7d75('0x11')][_0x7d75('0x12')],_0x7d75('0x5f')][_0x7d75('0x13')]('\x20')));}var _0x4cb900=schema(properties[_0x7d75('0x60')])['validate'](_0x1a0048);if(_0x4cb900[_0x7d75('0x61')]>0x0){return _0x277788(_0x388850[_0x7d75('0x10')](0x1f4,_[_0x7d75('0x62')](_0x4cb900,'message')[_0x7d75('0x13')](',\x20')));}var _0x5542e4=_[_0x7d75('0x5a')](_0xa7df66['channels'],{'uniqueid':_0x1a0048[_0x7d75('0x63')]});if(_0x5542e4&&_0x5542e4[_0x7d75('0x64')]){var _0x1009eb=util['format'](_0x7d75('0x65'),_0x1a0048['filename']||_0x1a0048[_0x7d75('0x63')],_0x1a0048[_0x7d75('0x6')]||_0x7d75('0x66'));return ami[_0x7d75('0x1e')]({'action':_0x7d75('0x67'),'channel':_0x5542e4['channel'],'file':_0x1009eb,'options':'ai(mixmonitorid)'})[_0x7d75('0x19')](function(_0x59774a){var _0x227eed=_[_0x7d75('0x5a')](_0x5542e4[_0x7d75('0x68')],{'filename':'/var/spool/asterisk/monitor/'+_0x1009eb[_0x7d75('0x69')]()});if(_[_0x7d75('0x6a')](_0x227eed)){_0x5542e4[_0x7d75('0x68')][_0x7d75('0x59')]({'filename':_0x7d75('0x6b')+_0x1009eb['toLowerCase'](),'createdAt':moment()[_0x7d75('0x6')](_0x7d75('0x6c')),'mixmonitorid':_0x59774a[_0x7d75('0x6d')],'status':'rec'});}else{_0x227eed['mixmonitorid']=_0x59774a[_0x7d75('0x6d')];_0x227eed['status']='rec';}_0x34ff66({'code':0xc8,'message':[_0x1a0048[_0x7d75('0x63')],_0x7d75('0x6e'),_0x59774a['mixmonitorid']][_0x7d75('0x13')]('\x20'),'mixmonitorid':_0x59774a[_0x7d75('0x6d')]});})['catch'](function(_0x41792c){_0x277788(_0x388850[_0x7d75('0x10')](0x1f5,[_0x1a0048['uniqueid'],_0x41792c[_0x7d75('0x1a')][_0x7d75('0x69')]()][_0x7d75('0x13')]('\x20')));});}else{return _0x277788(_0x388850[_0x7d75('0x10')](0x1f5,_0x7d75('0x6f')));}});},'VoiceChannelStopMixMonitor':function(_0x93cec5){var _0x18a6bf=this;return new Promise(function(_0x2c2286,_0x3139bc){if(ami[_0x7d75('0xf')]()==![]){return _0x3139bc(_0x18a6bf[_0x7d75('0x10')](0x1f4,[config['asterisk']['ip'],config[_0x7d75('0x11')]['username'],_0x7d75('0x5f')]['join']('\x20')));}var _0x276e9b=schema(properties['voicechannel'])[_0x7d75('0x3')](_0x93cec5);if(_0x276e9b[_0x7d75('0x61')]>0x0){return _0x3139bc(_0x18a6bf[_0x7d75('0x10')](0x1f4,_['map'](_0x276e9b,_0x7d75('0x1a'))[_0x7d75('0x13')](',\x20')));}var _0x119a2b=_['find'](_0xa7df66[_0x7d75('0x5e')],{'uniqueid':_0x93cec5['uniqueid']});if(_0x119a2b){return Promise[_0x7d75('0x70')]()['then'](function(){if(_0x119a2b[_0x7d75('0x64')]){return ami[_0x7d75('0x1e')]({'action':_0x7d75('0x71'),'channel':_0x119a2b['channel'],'mixmonitorid':_0x93cec5['mixmonitorid']})[_0x7d75('0x1b')](function(){});}})[_0x7d75('0x19')](function(){if(_0x119a2b['destinationchannel']){return ami['Action']({'action':_0x7d75('0x71'),'channel':_0x119a2b['destinationchannel'],'mixmonitorid':_0x93cec5[_0x7d75('0x6d')]})[_0x7d75('0x1b')](function(){});}})[_0x7d75('0x19')](function(){var _0x49301a=_[_0x7d75('0x5a')](_0x119a2b[_0x7d75('0x68')],{'mixmonitorid':_0x93cec5['mixmonitorid']});if(_0x49301a){_0x49301a[_0x7d75('0x72')]='stop';}})[_0x7d75('0x19')](function(){var _0x2c7381=util[_0x7d75('0x6')](_0x7d75('0x65'),_0x93cec5['filename']||_0x93cec5[_0x7d75('0x63')],_0x93cec5[_0x7d75('0x6')]||_0x7d75('0x66'));var _0x112e74=_[_0x7d75('0x5a')](_0x119a2b[_0x7d75('0x68')],{'filename':_0x7d75('0x6b')+_0x2c7381[_0x7d75('0x69')]()});if(_0x112e74){_0x112e74[_0x7d75('0x72')]=_0x7d75('0x73');}})[_0x7d75('0x19')](function(){_0x2c2286({'code':0xc8,'message':[_0x93cec5[_0x7d75('0x63')],'StopMixMonitor\x20Success']['join']('\x20')});})[_0x7d75('0x1b')](function(_0x5d763c){_0x3139bc(_0x18a6bf[_0x7d75('0x10')](0x1f5,[_0x93cec5[_0x7d75('0x63')],_0x5d763c[_0x7d75('0x1a')][_0x7d75('0x69')]()][_0x7d75('0x13')]('\x20')));});}else{return _0x3139bc(_0x18a6bf['error'](0x1f5,_0x7d75('0x6f')));}});},'VoiceQueuesChannels':function(){return new Promise(function(_0x162e33){var _0x540b54=_[_0x7d75('0x5d')](_0xa7df66[_0x7d75('0x74')]);_0x162e33({'count':_0x540b54[_0x7d75('0x61')],'rows':_0x540b54});});},'VoiceQueuesChannel':function(_0x4390f4){var _0x475a8d=this;return new Promise(function(_0x33b9ec,_0x3b210b){var _0x34ff8c=schema(properties[_0x7d75('0x75')])[_0x7d75('0x3')](_0x4390f4);if(_0x34ff8c['length']>0x0){return _0x3b210b(_0x475a8d[_0x7d75('0x10')](0x1f4,_[_0x7d75('0x62')](_0x34ff8c,_0x7d75('0x1a'))[_0x7d75('0x13')](',\x20')));}var _0x3102df=_['find'](_0xa7df66[_0x7d75('0x74')],{'uniqueid':_0x4390f4[_0x7d75('0x63')]});if(_0x3102df){_0x33b9ec(_0x3102df);}else{return _0x3b210b(_0x475a8d[_0x7d75('0x10')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannelHangup':function(_0x5c5ecb){var _0x1f5ae6=this;return new Promise(function(_0x1b3e13,_0x1b0466){if(ami[_0x7d75('0xf')]()==![]){return _0x1b0466(_0x1f5ae6[_0x7d75('0x10')](0x1f4,[config[_0x7d75('0x11')]['ip'],config[_0x7d75('0x11')][_0x7d75('0x12')],_0x7d75('0x5f')]['join']('\x20')));}var _0x3b0220=schema(properties[_0x7d75('0x76')])['validate'](_0x5c5ecb);if(_0x3b0220[_0x7d75('0x61')]>0x0){return _0x1b0466(_0x1f5ae6[_0x7d75('0x10')](0x1f4,_[_0x7d75('0x62')](_0x3b0220,_0x7d75('0x1a'))[_0x7d75('0x13')](',\x20')));}var _0x28652c=_[_0x7d75('0x5a')](_0xa7df66[_0x7d75('0x74')],{'uniqueid':_0x5c5ecb[_0x7d75('0x63')]});if(_0x28652c&&_0x28652c[_0x7d75('0x64')]){return ami[_0x7d75('0x1e')]({'action':_0x7d75('0x77'),'channel':_0x28652c[_0x7d75('0x64')]})['then'](function(_0x43dd3d){_0x1b3e13({'code':0xc8,'message':[_0x5c5ecb[_0x7d75('0x63')],_0x43dd3d[_0x7d75('0x1a')][_0x7d75('0x69')]()]['join']('\x20')});})[_0x7d75('0x1b')](function(_0x1d251c){_0x1b0466(_0x1f5ae6[_0x7d75('0x10')](0x1f5,[_0x5c5ecb[_0x7d75('0x63')],_0x1d251c[_0x7d75('0x1a')][_0x7d75('0x69')]()]['join']('\x20')));});}else{return _0x1b0466(_0x1f5ae6[_0x7d75('0x10')](0x1f5,_0x7d75('0x6f')));}});},'VoiceQueuesChannelRedirect':function(_0x25026a){var _0x404427=this;return new Promise(function(_0x4932ef,_0x3ba1c1){if(ami[_0x7d75('0xf')]()==![]){return _0x3ba1c1(_0x404427[_0x7d75('0x10')](0x1f4,[config[_0x7d75('0x11')]['ip'],config[_0x7d75('0x11')]['username'],_0x7d75('0x5f')][_0x7d75('0x13')]('\x20')));}var _0x50ca10=schema(properties['voicequeuechannelredirect'])[_0x7d75('0x3')](_0x25026a);if(_0x50ca10[_0x7d75('0x61')]>0x0){return _0x3ba1c1(_0x404427['error'](0x1f4,_[_0x7d75('0x62')](_0x50ca10,_0x7d75('0x1a'))[_0x7d75('0x13')](',\x20')));}var _0x54c813=_['find'](_0xa7df66['queueChannels'],{'uniqueid':_0x25026a['uniqueid']});if(_0x54c813&&_0x54c813[_0x7d75('0x64')]){return ami[_0x7d75('0x1e')]({'action':_0x7d75('0x78'),'channel':_0x54c813[_0x7d75('0x64')],'exten':_0x25026a[_0x7d75('0x79')],'context':_0x25026a[_0x7d75('0x7a')]||_0x54c813['context'],'priority':0x1})[_0x7d75('0x19')](function(_0x5ab958){_0x4932ef({'code':0xc8,'message':[_0x25026a[_0x7d75('0x63')],_0x5ab958['message']['toLowerCase']()][_0x7d75('0x13')]('\x20')});})[_0x7d75('0x1b')](function(_0x4ba429){_0x3ba1c1(_0x404427[_0x7d75('0x10')](0x1f5,[_0x25026a[_0x7d75('0x63')],_0x4ba429[_0x7d75('0x1a')][_0x7d75('0x69')]()]['join']('\x20')));});}else{return _0x3ba1c1(_0x404427[_0x7d75('0x10')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'Agents':function(_0x4ced55){return new Promise(function(_0x50d481){var _0x20f07c=_[_0x7d75('0x5d')](_0xa7df66['agents']);if(_0x4ced55&&_0x4ced55['id']){var _0x18b03e=_[_0x7d75('0x5a')](_0x20f07c,function(_0x65a03e){return _0x65a03e['id']===_0x4ced55['id'];});_0x50d481(_0x18b03e);}else{_0x50d481({'count':_0x20f07c['length'],'rows':_0x20f07c});}});},'Telephones':function(){return new Promise(function(_0xda12f2){var _0xb8e3c6=_[_0x7d75('0x5d')](_0xa7df66[_0x7d75('0x7b')]);_0xda12f2({'count':_0xb8e3c6['length'],'rows':_0xb8e3c6});});},'Trunks':function(){return new Promise(function(_0x298110){var _0x49d18e=_['values'](_0xa7df66[_0x7d75('0x7c')]);_0x298110({'count':_0x49d18e[_0x7d75('0x61')],'rows':_0x49d18e});});},'OutboundChannels':function(){return new Promise(function(_0xa41c48){var _0xa0fe46=_['values'](_0xa7df66[_0x7d75('0x7d')]);_0xa41c48({'count':_0xa0fe46[_0x7d75('0x61')],'rows':_0xa0fe46});});},'Outbound':function(){return new Promise(function(_0x85c1ab){_0x85c1ab(_0xa7df66[_0x7d75('0x2d')]);});},'Campaigns':function(){return new Promise(function(_0x2da156){var _0x19ab8f=_['values'](_0xa7df66[_0x7d75('0x7e')]);_0x2da156({'count':_0x19ab8f[_0x7d75('0x61')],'rows':_0x19ab8f});});},'VoiceQueuesPreview':function(_0x4ad58b){var _0x37d4f4=this;return new Promise(function(_0x44bac0,_0x32a541){_0x10d11a[_0x7d75('0x7f')](_0x4ad58b['id'])[_0x7d75('0x19')](function(_0x36ee1a){_0x44bac0({'code':0xc8,'message':_0x36ee1a[_0x7d75('0x1a')]});})['catch'](function(_0x1cf32d){_0x32a541(_0x37d4f4[_0x7d75('0x10')](0x1f4,_0x1cf32d[_0x7d75('0x1a')]));});});},'EventManager':function(_0x112055){var _0xf2c160=this;return new Promise(function(_0x1595db,_0x73a194){if(!_0x112055[_0x7d75('0x80')]){return _0x73a194(_0xf2c160[_0x7d75('0x10')](0x1f4,_0x7d75('0x81')));}ami['emit'](_0x7d75('0x82')+_0x112055[_0x7d75('0x80')],_0x112055[_0x7d75('0x1a')]);_0x1595db({'code':0xc8,'message':_0x112055});});},'FaxAccounts':function(){return new Promise(function(_0x1cbdd5){var _0x1a9dd6=_[_0x7d75('0x5d')](_0xa7df66[_0x7d75('0x83')]);_0x1cbdd5({'count':_0x1a9dd6[_0x7d75('0x61')],'rows':_0x1a9dd6});});},'SendFax':function(_0xbb43dc){var _0x451b1f=this;return new Promise(function(_0x34e5e3,_0x1bcc5b){_0x42c15a[_0x7d75('0x84')](_0xbb43dc)[_0x7d75('0x19')](function(_0x47be37){_0x34e5e3({'code':0xc8,'message':_0x47be37['message']});})[_0x7d75('0x1b')](function(_0x3afb49){_0x1bcc5b(_0x451b1f[_0x7d75('0x10')](0x1f4,_0x3afb49[_0x7d75('0x1a')]));});});},'CheckAfterSend':function(_0x346be2){var _0x3eaf02=this;return new Promise(function(_0x445fa0,_0x552bce){_0x42c15a['checkAfterSend'](_0x346be2)[_0x7d75('0x19')](function(_0x214024){_0x445fa0({'code':0xc8,'message':_0x214024[_0x7d75('0x1a')]});})[_0x7d75('0x1b')](function(_0x3eb5b0){_0x552bce(_0x3eaf02[_0x7d75('0x10')](0x1f4,_0x3eb5b0['message']));});});}};var _0x4f11f0=jayson[_0x7d75('0x85')](_0x108c0d)[_0x7d75('0x86')]();_0x4f11f0['on'](_0x7d75('0x10'),function(_0x281cf1){return _0x5d6128(_0x281cf1);});_0x4f11f0[_0x7d75('0x87')](0x232a,_0x7d75('0x88'),function(){console[_0x7d75('0x89')](_0x7d75('0x8a'),0x232a);return _0x52bb43('RPC\x20listening\x20on\x20port:'+0x232a);});});};
\ No newline at end of file
+var _0xdb94=['wav','MixMonitor','ai(mixmonitorid)','then','monitors','toLowerCase','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','status','rec','MixMonitor\x20Success','Channel\x20doesn\x27t\x20exist','voicechannel','resolve','StopMixMonitor','destinationchannel','stop','queueChannels','Hangup','voicequeuechannelredirect','exten','context','telephones','trunks','campaigns','run','Event\x20name\x20mandatory','custom:','event','send','checkAfterSend','127.0.0.1','log','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','lodash','util','jayson/promise','validate','moment','../properties','../ami','format','%s/%s','SIP','name','timers','timer','updateAcw','agents','updateStatusRealtime','isConnected','asterisk','username','ami\x20disconnected','keys','module','Reload','Action','message','catch','error','join','pick','command','action','Command','content','voiceQueues','strategy','answered','available','loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime','talking','total','abandoned','waiting','loggedInDb','type','outbound','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startProgressive','Trunk','active','callerid','Interval','push','length','find','omit','undefined','values','channels','map','channel','%s.%s','filename','uniqueid'];(function(_0x40f991,_0x576819){var _0x38eca2=function(_0x2a586f){while(--_0x2a586f){_0x40f991['push'](_0x40f991['shift']());}};_0x38eca2(++_0x576819);}(_0xdb94,0xab));var _0x4db9=function(_0x27d0e9,_0x527f23){_0x27d0e9=_0x27d0e9-0x0;var _0x1937c3=_0xdb94[_0x27d0e9];return _0x1937c3;};'use strict';var _=require(_0x4db9('0x0'));var util=require(_0x4db9('0x1'));var jayson=require(_0x4db9('0x2'));var schema=require(_0x4db9('0x3'));var moment=require(_0x4db9('0x4'));var config=require('../../../config/environment');var properties=require(_0x4db9('0x5'));var ami=require(_0x4db9('0x6'));exports['listen']=function(_0x4ed80a,_0x209f80,_0x5ecd46){return new Promise(function(_0x47a3f5,_0x31dd9f){var _0x5d1f45={'QueuePause':function(_0x196ede){return new Promise(function(_0x50c27a){var _0x14deb9=util[_0x4db9('0x7')](_0x4db9('0x8'),_0x4db9('0x9'),_0x196ede[_0x4db9('0xa')]);if(_0x4ed80a[_0x4db9('0xb')]&&_0x4ed80a[_0x4db9('0xb')][_0x14deb9]&&_0x4ed80a[_0x4db9('0xb')][_0x14deb9][_0x4db9('0xc')]){_0x4ed80a[_0x4db9('0xb')][_0x14deb9][_0x4db9('0xd')]();}if(_0x4ed80a['agents'][_0x14deb9]){_0x4ed80a[_0x4db9('0xe')][_0x14deb9][_0x4db9('0xf')]({'statePause':_0x196ede['pause']?!![]:![]});}_0x50c27a({'code':0xc8,'message':'QueuePause'});});},'Reload':function(_0x31222b){var _0x5e644c=this;return new Promise(function(_0x571685,_0x34fc7d){if(ami[_0x4db9('0x10')]()==![]){return _0x34fc7d(_0x5e644c['error'](0x1f4,[config[_0x4db9('0x11')]['ip'],config[_0x4db9('0x11')][_0x4db9('0x12')],_0x4db9('0x13')]['join']('\x20')));}_0x31222b=_['pick'](_0x31222b,_[_0x4db9('0x14')](properties[_0x4db9('0x15')]));_0x31222b['action']=_0x4db9('0x16');return ami[_0x4db9('0x17')](_0x31222b)['then'](function(_0x5a85c4){_0x571685({'code':0xc8,'message':_0x5a85c4[_0x4db9('0x18')]});})[_0x4db9('0x19')](function(_0x462af3){_0x34fc7d(_0x5e644c[_0x4db9('0x1a')](0x1f5,_0x462af3[_0x4db9('0x18')]));});});},'Command':function(_0x55494a){var _0x3b1f87=this;return new Promise(function(_0x1214ee,_0x11012e){if(ami['isConnected']()==![]){return _0x11012e(_0x3b1f87[_0x4db9('0x1a')](0x1f4,[config[_0x4db9('0x11')]['ip'],config[_0x4db9('0x11')]['username'],_0x4db9('0x13')][_0x4db9('0x1b')]('\x20')));}_0x55494a=_[_0x4db9('0x1c')](_0x55494a,_0x4db9('0x1d'));_0x55494a[_0x4db9('0x1e')]=_0x4db9('0x1f');return ami[_0x4db9('0x17')](_0x55494a)['then'](function(_0x4ceb0c){_0x1214ee({'code':0xc8,'message':_0x4ceb0c[_0x4db9('0x20')]});})[_0x4db9('0x19')](function(_0x319475){_0x11012e(_0x3b1f87['error'](0x1f5,_0x319475[_0x4db9('0x18')]));});});},'VoiceQueues':function(){return new Promise(function(_0xdac966){var _0x5cbd3f=[];for(var _0x2e97ab in _0x4ed80a[_0x4db9('0x21')]){if(_0x4ed80a[_0x4db9('0x21')]['hasOwnProperty'](_0x2e97ab)){var _0x3c8237=_0x4ed80a[_0x4db9('0x21')][_0x2e97ab];var _0x43b95e={'id':_0x3c8237['id'],'name':_0x3c8237[_0x4db9('0xa')],'strategy':_0x3c8237[_0x4db9('0x22')],'answered':_0x3c8237[_0x4db9('0x23')],'available':_0x3c8237[_0x4db9('0x24')],'loggedIn':_0x3c8237[_0x4db9('0x25')],'pTalking':_0x3c8237[_0x4db9('0x26')],'sumBillable':_0x3c8237[_0x4db9('0x27')],'sumDuration':_0x3c8237[_0x4db9('0x28')],'sumHoldTime':_0x3c8237[_0x4db9('0x29')]||0x0,'talking':_0x3c8237[_0x4db9('0x2a')],'total':_0x3c8237[_0x4db9('0x2b')],'type':_0x3c8237['type'],'unmanaged':_0x3c8237['unmanaged'],'abandoned':_0x3c8237[_0x4db9('0x2c')],'waiting':_0x3c8237[_0x4db9('0x2d')],'loggedInDb':_0x3c8237[_0x4db9('0x2e')]};if(_0x3c8237[_0x4db9('0x2f')]===_0x4db9('0x30')){_0x43b95e[_0x4db9('0x31')]=_0x3c8237['dialActive'];_0x43b95e[_0x4db9('0x32')]=_0x3c8237['dialMethod'];_0x43b95e[_0x4db9('0x33')]=_0x3c8237[_0x4db9('0x33')];_0x43b95e[_0x4db9('0x34')]=_0x3c8237[_0x4db9('0x34')];_0x43b95e[_0x4db9('0x35')]=_0x3c8237['dialOriginateTimeout'];_0x43b95e['dialPrefix']=_0x3c8237[_0x4db9('0x36')];_0x43b95e['temp']=_0x3c8237[_0x4db9('0x37')];_0x43b95e[_0x4db9('0x38')]=_0x3c8237['outboundAnswerAgiCallsDay'];_0x43b95e[_0x4db9('0x39')]=_0x3c8237[_0x4db9('0x39')];_0x43b95e[_0x4db9('0x3a')]=_0x3c8237['outboundBlacklistCallsDay'];_0x43b95e[_0x4db9('0x3b')]=_0x3c8237['outboundBusyCallsDay'];_0x43b95e[_0x4db9('0x3c')]=_0x3c8237[_0x4db9('0x3c')];_0x43b95e[_0x4db9('0x3d')]=_0x3c8237['outboundDropCallsDayACS'];_0x43b95e['outboundDropCallsDayCallersExit']=_0x3c8237[_0x4db9('0x3e')];_0x43b95e[_0x4db9('0x3f')]=_0x3c8237[_0x4db9('0x3f')];_0x43b95e[_0x4db9('0x40')]=_0x3c8237[_0x4db9('0x40')];_0x43b95e[_0x4db9('0x41')]=_0x3c8237[_0x4db9('0x41')];_0x43b95e[_0x4db9('0x42')]=_0x3c8237[_0x4db9('0x42')];_0x43b95e['outboundReCallsDay']=_0x3c8237[_0x4db9('0x43')];_0x43b95e[_0x4db9('0x44')]=_0x3c8237[_0x4db9('0x44')];_0x43b95e[_0x4db9('0x45')]=_0x3c8237['outboundUnknownCallsDay'];_0x43b95e[_0x4db9('0x46')]=_0x3c8237[_0x4db9('0x46')];_0x43b95e[_0x4db9('0x47')]=_0x3c8237['predictiveIntervalAvgHoldtime'];_0x43b95e[_0x4db9('0x48')]=_0x3c8237[_0x4db9('0x48')];_0x43b95e[_0x4db9('0x49')]=_0x3c8237[_0x4db9('0x49')];_0x43b95e['predictiveIntervalDroppedCallsTimeout']=_0x3c8237['predictiveIntervalDroppedCallsTimeout'];_0x43b95e[_0x4db9('0x4a')]=_0x3c8237[_0x4db9('0x4a')];_0x43b95e[_0x4db9('0x4b')]=_0x3c8237[_0x4db9('0x4b')];_0x43b95e[_0x4db9('0x4c')]=_0x3c8237['predictiveIntervalHitRate'];_0x43b95e[_0x4db9('0x4d')]=_0x3c8237[_0x4db9('0x4d')];_0x43b95e[_0x4db9('0x4e')]=_0x3c8237[_0x4db9('0x4e')];_0x43b95e[_0x4db9('0x4f')]=_0x3c8237['predictiveIntervalAvailable'];_0x43b95e[_0x4db9('0x50')]=_0x3c8237[_0x4db9('0x50')];_0x43b95e[_0x4db9('0x18')]=_0x3c8237['message'];_0x43b95e[_0x4db9('0x51')]=_0x3c8237[_0x4db9('0x51')];_0x43b95e[_0x4db9('0x52')]=_0x3c8237[_0x4db9('0x52')];_0x43b95e[_0x4db9('0x53')]=_0x3c8237[_0x4db9('0x53')];_0x43b95e[_0x4db9('0x54')]=_0x3c8237[_0x4db9('0x54')];_0x43b95e[_0x4db9('0x55')]=_0x3c8237[_0x4db9('0x55')];_0x43b95e['startPredictive']=_0x3c8237['startPredictive'];_0x43b95e['startProgressive']=_0x3c8237[_0x4db9('0x56')];}if(_0x3c8237[_0x4db9('0x57')]){_0x43b95e['Trunk']={'id':_0x3c8237[_0x4db9('0x57')]['id'],'name':_0x3c8237[_0x4db9('0x57')]['name'],'active':_0x3c8237['Trunk'][_0x4db9('0x58')],'callerid':_0x3c8237['Trunk'][_0x4db9('0x59')]};}if(_0x3c8237[_0x4db9('0x5a')]){_0x43b95e['Interval']={'id':_0x3c8237[_0x4db9('0x5a')]['id'],'name':_0x3c8237[_0x4db9('0x5a')]['name']};}_0x5cbd3f[_0x4db9('0x5b')](_0x43b95e);}}_0xdac966({'count':_0x5cbd3f[_0x4db9('0x5c')],'rows':_0x5cbd3f});});},'UpdateVoiceQueue':function(_0x3b3c9e){return new Promise(function(_0x5d9ec0,_0x4ff05f){var _0x125d79=_[_0x4db9('0x5d')](_0x4ed80a[_0x4db9('0x21')],{'id':parseInt(_0x3b3c9e['id'])});var _0x41d0dd=_[_0x4db9('0x5e')](_0x3b3c9e,['id']);if(_0x125d79){for(var _0x1ae473 in _0x41d0dd){if(typeof _0x41d0dd[_0x1ae473]!==_0x4db9('0x5f')&&typeof _0x125d79[_0x1ae473]!==_0x4db9('0x5f')){_0x125d79[_0x1ae473]=_0x41d0dd[_0x1ae473];}}_0x5d9ec0(_0x125d79);}else{_0x4ff05f();}});},'VoiceChannels':function(){return new Promise(function(_0x2baf3c){var _0x8fc827=_[_0x4db9('0x60')](_0x4ed80a[_0x4db9('0x61')]);_0x2baf3c({'count':_0x8fc827[_0x4db9('0x5c')],'rows':_0x8fc827});});},'VoiceChannelMixMonitor':function(_0x54bbd4){var _0x2cf1c1=this;return new Promise(function(_0x2faacf,_0x3852f0){if(ami[_0x4db9('0x10')]()==![]){return _0x3852f0(_0x2cf1c1[_0x4db9('0x1a')](0x1f4,[config[_0x4db9('0x11')]['ip'],config[_0x4db9('0x11')][_0x4db9('0x12')],_0x4db9('0x13')][_0x4db9('0x1b')]('\x20')));}var _0x10dccb=schema(properties['voicechannel'])['validate'](_0x54bbd4);if(_0x10dccb[_0x4db9('0x5c')]>0x0){return _0x3852f0(_0x2cf1c1[_0x4db9('0x1a')](0x1f4,_[_0x4db9('0x62')](_0x10dccb,_0x4db9('0x18'))[_0x4db9('0x1b')](',\x20')));}var _0x30384a=_[_0x4db9('0x5d')](_0x4ed80a[_0x4db9('0x61')],{'uniqueid':_0x54bbd4['uniqueid']});if(_0x30384a&&_0x30384a[_0x4db9('0x63')]){var _0xcb832e=util[_0x4db9('0x7')](_0x4db9('0x64'),_0x54bbd4[_0x4db9('0x65')]||_0x54bbd4[_0x4db9('0x66')],_0x54bbd4[_0x4db9('0x7')]||_0x4db9('0x67'));return ami['Action']({'action':_0x4db9('0x68'),'channel':_0x30384a[_0x4db9('0x63')],'file':_0xcb832e,'options':_0x4db9('0x69')})[_0x4db9('0x6a')](function(_0x15486f){var _0x2d7fa2=_['find'](_0x30384a[_0x4db9('0x6b')],{'filename':'/var/spool/asterisk/monitor/'+_0xcb832e[_0x4db9('0x6c')]()});if(_['isNil'](_0x2d7fa2)){_0x30384a['monitors'][_0x4db9('0x5b')]({'filename':'/var/spool/asterisk/monitor/'+_0xcb832e[_0x4db9('0x6c')](),'createdAt':moment()[_0x4db9('0x7')](_0x4db9('0x6d')),'mixmonitorid':_0x15486f[_0x4db9('0x6e')],'status':'rec'});}else{_0x2d7fa2[_0x4db9('0x6e')]=_0x15486f['mixmonitorid'];_0x2d7fa2[_0x4db9('0x6f')]=_0x4db9('0x70');}_0x2faacf({'code':0xc8,'message':[_0x54bbd4['uniqueid'],_0x4db9('0x71'),_0x15486f['mixmonitorid']][_0x4db9('0x1b')]('\x20'),'mixmonitorid':_0x15486f[_0x4db9('0x6e')]});})[_0x4db9('0x19')](function(_0x44535b){_0x3852f0(_0x2cf1c1[_0x4db9('0x1a')](0x1f5,[_0x54bbd4[_0x4db9('0x66')],_0x44535b[_0x4db9('0x18')][_0x4db9('0x6c')]()][_0x4db9('0x1b')]('\x20')));});}else{return _0x3852f0(_0x2cf1c1[_0x4db9('0x1a')](0x1f5,_0x4db9('0x72')));}});},'VoiceChannelStopMixMonitor':function(_0x178ca5){var _0x44c7fd=this;return new Promise(function(_0x21c012,_0x125b69){if(ami['isConnected']()==![]){return _0x125b69(_0x44c7fd[_0x4db9('0x1a')](0x1f4,[config[_0x4db9('0x11')]['ip'],config['asterisk'][_0x4db9('0x12')],_0x4db9('0x13')][_0x4db9('0x1b')]('\x20')));}var _0x200e6d=schema(properties[_0x4db9('0x73')])[_0x4db9('0x3')](_0x178ca5);if(_0x200e6d[_0x4db9('0x5c')]>0x0){return _0x125b69(_0x44c7fd[_0x4db9('0x1a')](0x1f4,_[_0x4db9('0x62')](_0x200e6d,'message')['join'](',\x20')));}var _0x8ede64=_[_0x4db9('0x5d')](_0x4ed80a[_0x4db9('0x61')],{'uniqueid':_0x178ca5[_0x4db9('0x66')]});if(_0x8ede64){return Promise[_0x4db9('0x74')]()[_0x4db9('0x6a')](function(){if(_0x8ede64[_0x4db9('0x63')]){return ami[_0x4db9('0x17')]({'action':_0x4db9('0x75'),'channel':_0x8ede64[_0x4db9('0x63')],'mixmonitorid':_0x178ca5['mixmonitorid']})[_0x4db9('0x19')](function(){});}})['then'](function(){if(_0x8ede64['destinationchannel']){return ami['Action']({'action':'StopMixMonitor','channel':_0x8ede64[_0x4db9('0x76')],'mixmonitorid':_0x178ca5['mixmonitorid']})['catch'](function(){});}})[_0x4db9('0x6a')](function(){var _0x1354d5=_[_0x4db9('0x5d')](_0x8ede64[_0x4db9('0x6b')],{'mixmonitorid':_0x178ca5[_0x4db9('0x6e')]});if(_0x1354d5){_0x1354d5[_0x4db9('0x6f')]=_0x4db9('0x77');}})[_0x4db9('0x6a')](function(){var _0x2941ff=util[_0x4db9('0x7')](_0x4db9('0x64'),_0x178ca5[_0x4db9('0x65')]||_0x178ca5[_0x4db9('0x66')],_0x178ca5[_0x4db9('0x7')]||_0x4db9('0x67'));var _0x37f6e3=_['find'](_0x8ede64['monitors'],{'filename':'/var/spool/asterisk/monitor/'+_0x2941ff[_0x4db9('0x6c')]()});if(_0x37f6e3){_0x37f6e3['status']=_0x4db9('0x77');}})[_0x4db9('0x6a')](function(){_0x21c012({'code':0xc8,'message':[_0x178ca5[_0x4db9('0x66')],'StopMixMonitor\x20Success']['join']('\x20')});})[_0x4db9('0x19')](function(_0x564bcc){_0x125b69(_0x44c7fd[_0x4db9('0x1a')](0x1f5,[_0x178ca5[_0x4db9('0x66')],_0x564bcc[_0x4db9('0x18')][_0x4db9('0x6c')]()][_0x4db9('0x1b')]('\x20')));});}else{return _0x125b69(_0x44c7fd['error'](0x1f5,_0x4db9('0x72')));}});},'VoiceQueuesChannels':function(){return new Promise(function(_0x4fbdeb){var _0x2abc4d=_[_0x4db9('0x60')](_0x4ed80a[_0x4db9('0x78')]);_0x4fbdeb({'count':_0x2abc4d[_0x4db9('0x5c')],'rows':_0x2abc4d});});},'VoiceQueuesChannel':function(_0x12c1b5){var _0x543d35=this;return new Promise(function(_0x524d82,_0x3901b5){var _0xd8a34=schema(properties['voicequeuechannel'])['validate'](_0x12c1b5);if(_0xd8a34[_0x4db9('0x5c')]>0x0){return _0x3901b5(_0x543d35['error'](0x1f4,_[_0x4db9('0x62')](_0xd8a34,'message')[_0x4db9('0x1b')](',\x20')));}var _0x417802=_['find'](_0x4ed80a['queueChannels'],{'uniqueid':_0x12c1b5[_0x4db9('0x66')]});if(_0x417802){_0x524d82(_0x417802);}else{return _0x3901b5(_0x543d35[_0x4db9('0x1a')](0x1f5,_0x4db9('0x72')));}});},'VoiceQueuesChannelHangup':function(_0x25a00f){var _0x3e85aa=this;return new Promise(function(_0x587961,_0x593497){if(ami['isConnected']()==![]){return _0x593497(_0x3e85aa['error'](0x1f4,[config[_0x4db9('0x11')]['ip'],config[_0x4db9('0x11')][_0x4db9('0x12')],_0x4db9('0x13')]['join']('\x20')));}var _0x28a58c=schema(properties['voicequeuechannelhangup'])[_0x4db9('0x3')](_0x25a00f);if(_0x28a58c[_0x4db9('0x5c')]>0x0){return _0x593497(_0x3e85aa[_0x4db9('0x1a')](0x1f4,_[_0x4db9('0x62')](_0x28a58c,_0x4db9('0x18'))[_0x4db9('0x1b')](',\x20')));}var _0xde43ea=_['find'](_0x4ed80a[_0x4db9('0x78')],{'uniqueid':_0x25a00f[_0x4db9('0x66')]});if(_0xde43ea&&_0xde43ea[_0x4db9('0x63')]){return ami['Action']({'action':_0x4db9('0x79'),'channel':_0xde43ea[_0x4db9('0x63')]})['then'](function(_0x543b75){_0x587961({'code':0xc8,'message':[_0x25a00f[_0x4db9('0x66')],_0x543b75['message']['toLowerCase']()][_0x4db9('0x1b')]('\x20')});})[_0x4db9('0x19')](function(_0x190e38){_0x593497(_0x3e85aa['error'](0x1f5,[_0x25a00f['uniqueid'],_0x190e38['message']['toLowerCase']()]['join']('\x20')));});}else{return _0x593497(_0x3e85aa[_0x4db9('0x1a')](0x1f5,_0x4db9('0x72')));}});},'VoiceQueuesChannelRedirect':function(_0x1d9657){var _0x437f6a=this;return new Promise(function(_0x19c43b,_0x193b1d){if(ami[_0x4db9('0x10')]()==![]){return _0x193b1d(_0x437f6a[_0x4db9('0x1a')](0x1f4,[config['asterisk']['ip'],config[_0x4db9('0x11')][_0x4db9('0x12')],_0x4db9('0x13')][_0x4db9('0x1b')]('\x20')));}var _0x2af00b=schema(properties[_0x4db9('0x7a')])[_0x4db9('0x3')](_0x1d9657);if(_0x2af00b[_0x4db9('0x5c')]>0x0){return _0x193b1d(_0x437f6a['error'](0x1f4,_[_0x4db9('0x62')](_0x2af00b,'message')[_0x4db9('0x1b')](',\x20')));}var _0x333031=_[_0x4db9('0x5d')](_0x4ed80a[_0x4db9('0x78')],{'uniqueid':_0x1d9657['uniqueid']});if(_0x333031&&_0x333031['channel']){return ami[_0x4db9('0x17')]({'action':'Redirect','channel':_0x333031[_0x4db9('0x63')],'exten':_0x1d9657[_0x4db9('0x7b')],'context':_0x1d9657[_0x4db9('0x7c')]||_0x333031[_0x4db9('0x7c')],'priority':0x1})[_0x4db9('0x6a')](function(_0x31f55f){_0x19c43b({'code':0xc8,'message':[_0x1d9657[_0x4db9('0x66')],_0x31f55f[_0x4db9('0x18')]['toLowerCase']()][_0x4db9('0x1b')]('\x20')});})[_0x4db9('0x19')](function(_0x2d738d){_0x193b1d(_0x437f6a[_0x4db9('0x1a')](0x1f5,[_0x1d9657['uniqueid'],_0x2d738d[_0x4db9('0x18')][_0x4db9('0x6c')]()]['join']('\x20')));});}else{return _0x193b1d(_0x437f6a[_0x4db9('0x1a')](0x1f5,_0x4db9('0x72')));}});},'Agents':function(_0xe022d6){return new Promise(function(_0x561f4b){var _0x5b40a4=_[_0x4db9('0x60')](_0x4ed80a[_0x4db9('0xe')]);if(_0xe022d6&&_0xe022d6['id']){var _0x560373=_['find'](_0x5b40a4,function(_0x17e432){return _0x17e432['id']===_0xe022d6['id'];});_0x561f4b(_0x560373);}else{_0x561f4b({'count':_0x5b40a4[_0x4db9('0x5c')],'rows':_0x5b40a4});}});},'Telephones':function(){return new Promise(function(_0x14c4d3){var _0x284aae=_[_0x4db9('0x60')](_0x4ed80a[_0x4db9('0x7d')]);_0x14c4d3({'count':_0x284aae[_0x4db9('0x5c')],'rows':_0x284aae});});},'Trunks':function(){return new Promise(function(_0x28d35a){var _0xb5c0a0=_[_0x4db9('0x60')](_0x4ed80a[_0x4db9('0x7e')]);_0x28d35a({'count':_0xb5c0a0[_0x4db9('0x5c')],'rows':_0xb5c0a0});});},'OutboundChannels':function(){return new Promise(function(_0x315808){var _0x24ee49=_[_0x4db9('0x60')](_0x4ed80a['outboundChannels']);_0x315808({'count':_0x24ee49[_0x4db9('0x5c')],'rows':_0x24ee49});});},'Outbound':function(){return new Promise(function(_0x541687){_0x541687(_0x4ed80a[_0x4db9('0x30')]);});},'Campaigns':function(){return new Promise(function(_0x5e1098){var _0x19e897=_[_0x4db9('0x60')](_0x4ed80a[_0x4db9('0x7f')]);_0x5e1098({'count':_0x19e897[_0x4db9('0x5c')],'rows':_0x19e897});});},'VoiceQueuesPreview':function(_0xed6d75){var _0x3af042=this;return new Promise(function(_0x146fe7,_0x242ea1){_0x209f80[_0x4db9('0x80')](_0xed6d75['id'])[_0x4db9('0x6a')](function(_0x3142b4){_0x146fe7({'code':0xc8,'message':_0x3142b4[_0x4db9('0x18')]});})['catch'](function(_0xa7541a){_0x242ea1(_0x3af042[_0x4db9('0x1a')](0x1f4,_0xa7541a['message']));});});},'EventManager':function(_0x10e0bc){var _0x3cc62f=this;return new Promise(function(_0x4062f2,_0x29e429){if(!_0x10e0bc['event']){return _0x29e429(_0x3cc62f['error'](0x1f4,_0x4db9('0x81')));}ami['emit'](_0x4db9('0x82')+_0x10e0bc[_0x4db9('0x83')],_0x10e0bc[_0x4db9('0x18')]);_0x4062f2({'code':0xc8,'message':_0x10e0bc});});},'FaxAccounts':function(){return new Promise(function(_0x27eeca){var _0x44a9e8=_[_0x4db9('0x60')](_0x4ed80a['faxAccounts']);_0x27eeca({'count':_0x44a9e8[_0x4db9('0x5c')],'rows':_0x44a9e8});});},'SendFax':function(_0x39e032){var _0x3d02c1=this;return new Promise(function(_0x2e1705,_0x1617b5){_0x5ecd46[_0x4db9('0x84')](_0x39e032)[_0x4db9('0x6a')](function(_0x4ea510){_0x2e1705({'code':0xc8,'message':_0x4ea510[_0x4db9('0x18')]});})[_0x4db9('0x19')](function(_0x3b3765){_0x1617b5(_0x3d02c1[_0x4db9('0x1a')](0x1f4,_0x3b3765['message']));});});},'CheckAfterSend':function(_0x49594a){var _0x564dcf=this;return new Promise(function(_0x1bf419,_0x40a477){_0x5ecd46[_0x4db9('0x85')](_0x49594a)['then'](function(_0x4ba50c){_0x1bf419({'code':0xc8,'message':_0x4ba50c[_0x4db9('0x18')]});})[_0x4db9('0x19')](function(_0x54a0d3){_0x40a477(_0x564dcf['error'](0x1f4,_0x54a0d3[_0x4db9('0x18')]));});});}};var _0x187df4=jayson['server'](_0x5d1f45)['http']();_0x187df4['on'](_0x4db9('0x1a'),function(_0x509637){return _0x31dd9f(_0x509637);});_0x187df4['listen'](0x232a,_0x4db9('0x86'),function(){console[_0x4db9('0x87')](_0x4db9('0x88'),0x232a);return _0x47a3f5('RPC\x20listening\x20on\x20port:'+0x232a);});});};
\ No newline at end of file
index a05d52d..859dd83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cf5=['bluebird','util','../../../../config/logger','trigger','defaults','redis','localhost','socket.io-emitter','info','stringify','emit','exec','data1','data2','isNil','data5','xmd-contactid','ListId','data3','split','phone','map','routeId','destcalleridnum','calleridnum','firstName','fax','createdAt','union','resolve','then','getContacts','isEmpty','length','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','uniqueid','[CM][%s][%s]\x20Contact\x20not\x20found','data4','calleridname','<unknown>','destcalleridname','Unknown','createContact','push','[CM][%s][%s]\x20Contact\x20created:%s','format','user:%s','name','trigger:%s','action','toLowerCase','lodash'];(function(_0x4be8ae,_0x25981d){var _0x1411e1=function(_0x1af6f4){while(--_0x1af6f4){_0x4be8ae['push'](_0x4be8ae['shift']());}};_0x1411e1(++_0x25981d);}(_0x2cf5,0x19f));var _0x52cf=function(_0x237a83,_0x5b0009){_0x237a83=_0x237a83-0x0;var _0x29628f=_0x2cf5[_0x237a83];return _0x29628f;};'use strict';var _=require(_0x52cf('0x0'));var BPromise=require(_0x52cf('0x1'));var Redis=require('ioredis');var util=require(_0x52cf('0x2'));var config=require('../../../../config/environment');var logger=require(_0x52cf('0x3'))(_0x52cf('0x4'));var cmContactRpc=require('../../rpc/cmContact');config['redis']=_[_0x52cf('0x5')](config[_0x52cf('0x6')],{'host':_0x52cf('0x7'),'port':0x18eb});var io=require(_0x52cf('0x8'))(new Redis(config[_0x52cf('0x6')]));function emit(_0x13d2fe,_0x1ab7cd,_0x390162,_0x41d874,_0x23b2ab){logger[_0x52cf('0x9')]('[CM][%s][%s]',_0x13d2fe,_0x1ab7cd['id'],_0x390162,_0x41d874,JSON[_0x52cf('0xa')](_0x23b2ab));io['to'](_0x390162)[_0x52cf('0xb')](_0x41d874,_0x23b2ab);}exports[_0x52cf('0xc')]=function(_0x120dab,_0x4e5b19,_0xadb2a6,_0x154197){var _0x211bb1,_0x54806d;var _0x18167b={};var _0x41b1e1;var _0x3b663c=Number(_0xadb2a6[_0x52cf('0xd')]);var _0x17eefd=_0xadb2a6[_0x52cf('0xe')]?Boolean(Number(_0xadb2a6['data2'])):![];var _0x4a5547;var _0x2bff22=![];if(!_[_0x52cf('0xf')](_0xadb2a6[_0x52cf('0x10')])){if(_0xadb2a6[_0x52cf('0x10')]=='1')_0x2bff22=!![];}if(!_0x2bff22){if(_0x154197[_0x52cf('0x11')]){_0x18167b['id']=_0x154197[_0x52cf('0x11')];}}if(!_0x18167b['id']){_0x18167b[_0x52cf('0x12')]=_0x3b663c;_0x4a5547=_0xadb2a6[_0x52cf('0x13')]&&_0xadb2a6['data3']!=='0'?_0xadb2a6[_0x52cf('0x13')][_0x52cf('0x14')](','):[_0x52cf('0x15')];_0x18167b['$or']=_[_0x52cf('0x16')](_0x4a5547,function(_0x49e43c){var _0x3d082e={};_0x3d082e[_0x49e43c]=_0x154197[_0x52cf('0x17')]?_0x154197[_0x52cf('0x18')]:_0x154197[_0x52cf('0x19')];return _0x3d082e;});_0x41b1e1=_0x154197['routeId']?_0x154197[_0x52cf('0x18')]:_0x154197[_0x52cf('0x19')];}var _0x25a48a=['id',_0x52cf('0x1a'),'lastName',_0x52cf('0x15'),'mobile',_0x52cf('0x1b'),_0x52cf('0x12'),_0x52cf('0x1c'),'scheduledAt','updatedAt'];var _0x60f3bd=_[_0x52cf('0x1d')](_0x25a48a,_0x4a5547);BPromise[_0x52cf('0x1e')]()[_0x52cf('0x1f')](cmContactRpc[_0x52cf('0x20')]({'attributes':_0x60f3bd,'where':_0x18167b,'phone':_0x41b1e1}))[_0x52cf('0x1f')](function(_0x375c57){_0x54806d=_0x375c57;if(!_[_0x52cf('0x21')](_0x54806d)){if(_0x54806d[_0x52cf('0x22')]===0x1){_0x211bb1=_0x54806d[0x0];logger[_0x52cf('0x9')]('[CM][%s][%s]\x20Contact\x20found:%s',_0x154197['uniqueid'],_0x4e5b19['id'],_0x211bb1['id']);}else{logger[_0x52cf('0x9')](_0x52cf('0x23'),_0x154197[_0x52cf('0x24')],_0x4e5b19['id'],_[_0x52cf('0x16')](_0x54806d,'id')['join'](','));}return;}else{logger['info'](_0x52cf('0x25'),_0x154197[_0x52cf('0x24')],_0x4e5b19['id']);var _0x37e41f={'ListId':_0x3b663c};var _0x28c7b6=_0xadb2a6[_0x52cf('0x26')]&&_0xadb2a6[_0x52cf('0x26')]!=='0'?_0xadb2a6[_0x52cf('0x26')]:_0x52cf('0x15');if(_0x17eefd){logger[_0x52cf('0x9')]('[CM][%s][%s]\x20Autocreate\x20enabled',_0x154197['uniqueid'],_0x4e5b19['id']);_0x37e41f[_0x28c7b6]=_[_0x52cf('0xf')](_0x154197[_0x52cf('0x17')])?_0x154197[_0x52cf('0x19')]:_0x154197[_0x52cf('0x18')];if(_['isNil'](_0x154197[_0x52cf('0x17')])){_0x37e41f[_0x52cf('0x1a')]=_0x154197[_0x52cf('0x27')]&&_0x154197[_0x52cf('0x27')]!==_0x52cf('0x28')?_0x154197[_0x52cf('0x27')]:'Unknown';}else{_0x37e41f[_0x52cf('0x1a')]=_0x154197[_0x52cf('0x29')]&&_0x154197[_0x52cf('0x29')]!==_0x52cf('0x28')?_0x154197['destcalleridname']:_0x52cf('0x2a');}return BPromise[_0x52cf('0x1e')]()[_0x52cf('0x1f')](cmContactRpc[_0x52cf('0x2b')](_0x37e41f))[_0x52cf('0x1f')](function(_0x3c8299){_0x211bb1=_0x3c8299;_0x54806d[_0x52cf('0x2c')](_0x3c8299);if(_0x211bb1){logger[_0x52cf('0x9')](_0x52cf('0x2d'),_0x154197[_0x52cf('0x24')],_0x4e5b19['id'],_0x211bb1['id']);}return;});}else{logger['info']('[CM][%s][%s]\x20Autocreate\x20disabled',_0x154197[_0x52cf('0x24')],_0x4e5b19['id']);_0x37e41f[_0x28c7b6]=_[_0x52cf('0xf')](_0x154197[_0x52cf('0x17')])?_0x154197[_0x52cf('0x19')]:_0x154197['destcalleridnum'];if(_['isNil'](_0x154197[_0x52cf('0x17')])){_0x37e41f[_0x52cf('0x1a')]=_0x154197[_0x52cf('0x27')]&&_0x154197[_0x52cf('0x27')]!==_0x52cf('0x28')?_0x154197[_0x52cf('0x27')]:_0x52cf('0x2a');}else{_0x37e41f[_0x52cf('0x1a')]=_0x154197[_0x52cf('0x29')]&&_0x154197[_0x52cf('0x29')]!==_0x52cf('0x28')?_0x154197[_0x52cf('0x29')]:_0x52cf('0x2a');}_0x211bb1=_0x37e41f;_0x54806d[_0x52cf('0x2c')](_0x37e41f);return;}}})[_0x52cf('0x1f')](function(){if(_0x120dab){emit(_0x154197['uniqueid'],_0x4e5b19,util[_0x52cf('0x2e')](_0x52cf('0x2f'),_0x120dab[_0x52cf('0x30')]),util[_0x52cf('0x2e')](_0x52cf('0x31'),_0xadb2a6[_0x52cf('0x32')][_0x52cf('0x33')]()),{'evt':_['merge'](_0x154197,{'autoCreate':_0x17eefd}),'contact':_0x211bb1===undefined?{}:_0x211bb1,'contacts':_0x54806d[_0x52cf('0x22')]===0x0?undefined:_0x54806d});}});};
\ No newline at end of file
+var _0x6113=['ListId','createdAt','updatedAt','union','resolve','then','getContacts','[CM][%s][%s]\x20Contact\x20found:%s','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','join','[CM][%s][%s]\x20Contact\x20not\x20found','uniqueid','data4','[CM][%s][%s]\x20Autocreate\x20enabled','calleridname','Unknown','destcalleridname','<unknown>','createContact','push','[CM][%s][%s]\x20Autocreate\x20disabled','format','user:%s','trigger:%s','action','toLowerCase','merge','length','lodash','bluebird','ioredis','util','../../../../config/environment','../../../../config/logger','trigger','defaults','redis','localhost','socket.io-emitter','info','[CM][%s][%s]','stringify','emit','exec','data2','isNil','data5','xmd-contactid','data3','split','phone','$or','map','routeId','destcalleridnum','calleridnum','firstName','fax'];(function(_0x42245d,_0x51758f){var _0x4b211a=function(_0x2634e){while(--_0x2634e){_0x42245d['push'](_0x42245d['shift']());}};_0x4b211a(++_0x51758f);}(_0x6113,0x13e));var _0x3611=function(_0x3eb183,_0x3885ec){_0x3eb183=_0x3eb183-0x0;var _0x321dc1=_0x6113[_0x3eb183];return _0x321dc1;};'use strict';var _=require(_0x3611('0x0'));var BPromise=require(_0x3611('0x1'));var Redis=require(_0x3611('0x2'));var util=require(_0x3611('0x3'));var config=require(_0x3611('0x4'));var logger=require(_0x3611('0x5'))(_0x3611('0x6'));var cmContactRpc=require('../../rpc/cmContact');config['redis']=_[_0x3611('0x7')](config[_0x3611('0x8')],{'host':_0x3611('0x9'),'port':0x18eb});var io=require(_0x3611('0xa'))(new Redis(config[_0x3611('0x8')]));function emit(_0x3e5dfd,_0x30ed6f,_0x2d242b,_0x516659,_0x57b596){logger[_0x3611('0xb')](_0x3611('0xc'),_0x3e5dfd,_0x30ed6f['id'],_0x2d242b,_0x516659,JSON[_0x3611('0xd')](_0x57b596));io['to'](_0x2d242b)[_0x3611('0xe')](_0x516659,_0x57b596);}exports[_0x3611('0xf')]=function(_0xd6d12,_0x2e7e25,_0xecf816,_0x5d507e){var _0x5b2cfd,_0x4f37b7;var _0xb4ced={};var _0x341562;var _0x36379a=Number(_0xecf816['data1']);var _0x2872ea=_0xecf816[_0x3611('0x10')]?Boolean(Number(_0xecf816['data2'])):![];var _0x31fc11;var _0x484d4c=![];if(!_[_0x3611('0x11')](_0xecf816['data5'])){if(_0xecf816[_0x3611('0x12')]=='1')_0x484d4c=!![];}if(!_0x484d4c){if(_0x5d507e[_0x3611('0x13')]){_0xb4ced['id']=_0x5d507e['xmd-contactid'];}}if(!_0xb4ced['id']){_0xb4ced['ListId']=_0x36379a;_0x31fc11=_0xecf816['data3']&&_0xecf816[_0x3611('0x14')]!=='0'?_0xecf816[_0x3611('0x14')][_0x3611('0x15')](','):[_0x3611('0x16')];_0xb4ced[_0x3611('0x17')]=_[_0x3611('0x18')](_0x31fc11,function(_0x153acd){var _0x205e3c={};_0x205e3c[_0x153acd]=_0x5d507e[_0x3611('0x19')]?_0x5d507e[_0x3611('0x1a')]:_0x5d507e['calleridnum'];return _0x205e3c;});_0x341562=_0x5d507e[_0x3611('0x19')]?_0x5d507e[_0x3611('0x1a')]:_0x5d507e[_0x3611('0x1b')];}var _0x1c15bf=['id',_0x3611('0x1c'),'lastName',_0x3611('0x16'),'mobile',_0x3611('0x1d'),_0x3611('0x1e'),_0x3611('0x1f'),'scheduledAt',_0x3611('0x20')];var _0x2500c8=_[_0x3611('0x21')](_0x1c15bf,_0x31fc11);BPromise[_0x3611('0x22')]()[_0x3611('0x23')](cmContactRpc[_0x3611('0x24')]({'attributes':_0x2500c8,'where':_0xb4ced,'phone':_0x341562}))[_0x3611('0x23')](function(_0x18f545){_0x4f37b7=_0x18f545;if(!_['isEmpty'](_0x4f37b7)){if(_0x4f37b7['length']===0x1){_0x5b2cfd=_0x4f37b7[0x0];logger[_0x3611('0xb')](_0x3611('0x25'),_0x5d507e['uniqueid'],_0x2e7e25['id'],_0x5b2cfd['id']);}else{logger[_0x3611('0xb')](_0x3611('0x26'),_0x5d507e['uniqueid'],_0x2e7e25['id'],_[_0x3611('0x18')](_0x4f37b7,'id')[_0x3611('0x27')](','));}return;}else{logger[_0x3611('0xb')](_0x3611('0x28'),_0x5d507e[_0x3611('0x29')],_0x2e7e25['id']);var _0x1c2518={'ListId':_0x36379a};var _0x2bbdf4=_0xecf816[_0x3611('0x2a')]&&_0xecf816[_0x3611('0x2a')]!=='0'?_0xecf816['data4']:'phone';if(_0x2872ea){logger[_0x3611('0xb')](_0x3611('0x2b'),_0x5d507e[_0x3611('0x29')],_0x2e7e25['id']);_0x1c2518[_0x2bbdf4]=_[_0x3611('0x11')](_0x5d507e['routeId'])?_0x5d507e[_0x3611('0x1b')]:_0x5d507e[_0x3611('0x1a')];if(_[_0x3611('0x11')](_0x5d507e[_0x3611('0x19')])){_0x1c2518[_0x3611('0x1c')]=_0x5d507e['calleridname']&&_0x5d507e[_0x3611('0x2c')]!=='<unknown>'?_0x5d507e[_0x3611('0x2c')]:_0x3611('0x2d');}else{_0x1c2518[_0x3611('0x1c')]=_0x5d507e['destcalleridname']&&_0x5d507e[_0x3611('0x2e')]!==_0x3611('0x2f')?_0x5d507e[_0x3611('0x2e')]:'Unknown';}return BPromise[_0x3611('0x22')]()['then'](cmContactRpc[_0x3611('0x30')](_0x1c2518))[_0x3611('0x23')](function(_0x45cc1a){_0x5b2cfd=_0x45cc1a;_0x4f37b7[_0x3611('0x31')](_0x45cc1a);if(_0x5b2cfd){logger[_0x3611('0xb')]('[CM][%s][%s]\x20Contact\x20created:%s',_0x5d507e['uniqueid'],_0x2e7e25['id'],_0x5b2cfd['id']);}return;});}else{logger['info'](_0x3611('0x32'),_0x5d507e[_0x3611('0x29')],_0x2e7e25['id']);_0x1c2518[_0x2bbdf4]=_[_0x3611('0x11')](_0x5d507e['routeId'])?_0x5d507e[_0x3611('0x1b')]:_0x5d507e['destcalleridnum'];if(_[_0x3611('0x11')](_0x5d507e[_0x3611('0x19')])){_0x1c2518['firstName']=_0x5d507e[_0x3611('0x2c')]&&_0x5d507e['calleridname']!=='<unknown>'?_0x5d507e[_0x3611('0x2c')]:'Unknown';}else{_0x1c2518[_0x3611('0x1c')]=_0x5d507e['destcalleridname']&&_0x5d507e[_0x3611('0x2e')]!=='<unknown>'?_0x5d507e[_0x3611('0x2e')]:'Unknown';}_0x5b2cfd=_0x1c2518;_0x4f37b7[_0x3611('0x31')](_0x1c2518);return;}}})[_0x3611('0x23')](function(){if(_0xd6d12){emit(_0x5d507e[_0x3611('0x29')],_0x2e7e25,util[_0x3611('0x33')](_0x3611('0x34'),_0xd6d12['name']),util['format'](_0x3611('0x35'),_0xecf816[_0x3611('0x36')][_0x3611('0x37')]()),{'evt':_[_0x3611('0x38')](_0x5d507e,{'autoCreate':_0x2872ea}),'contact':_0x5b2cfd===undefined?{}:_0x5b2cfd,'contacts':_0x4f37b7[_0x3611('0x39')]===0x0?undefined:_0x4f37b7});}});};
\ No newline at end of file
index 65024c8..496073f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x870d=['dynamics365Accounts','freshsalesAccounts','accounts','bind','custom:agentconnect','syncCustomEvent','custom:agentringnoanswer','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentbusy','custom:agentcongestion','custom:agentreject','custom:amd','custom:queuecallerabandon','custom:dialconnect','custom:substatus','custom:outgoingmessage','custom:acceptmessage','custom:rejectmessage','custom:offlineMessage','prototype','info','stringify','emit','clone','motionChannel','undefined','voice','checkTriggers','syncAgentDial','interface','hasOwnProperty','merge','variables','length','Actions','toLowerCase','browser','data1','TemplateId','html','data2','render','template\x20not\x20found','uri','buildUri','isNil','data3','data4','location','uriLocation','data5','800','windowHeight','data6','600','winApplication','winArguments','user:%s','name','format','trigger:%s:%s','action','trigger:%s','contactmanager','integration','exec','queue','routeId','script','parse','query','replace','checkTrigger','channel','AllConditions','every','checkConditions','AnyConditions','field','account','chat','ChatWebsiteId','upperFirst','AccountId','operator','interaction','event','value','agent','lastevent','mailSubstatus','null','substatus','offlineMessage','equals','exports','lodash','url','mustache','ioredis','./urlforward','./integration','./script','../../../config/environment','../../../config/logger','trigger','../ami','defaults','redis','localhost','popup','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts'];(function(_0x3995dd,_0x24f96f){var _0x410f8a=function(_0xe2c273){while(--_0xe2c273){_0x3995dd['push'](_0x3995dd['shift']());}};_0x410f8a(++_0x24f96f);}(_0x870d,0xde));var _0xd870=function(_0x48e63f,_0x21cf5a){_0x48e63f=_0x48e63f-0x0;var _0x3c594c=_0x870d[_0x48e63f];return _0x3c594c;};'use strict';var util=require('util');var _=require(_0xd870('0x0'));var url=require(_0xd870('0x1'));var Mustache=require(_0xd870('0x2'));var Redis=require(_0xd870('0x3'));var urlforward=require(_0xd870('0x4'));var integration=require(_0xd870('0x5'));var cmContact=require('./cmContact');var script=require(_0xd870('0x6'));var config=require(_0xd870('0x7'));var logger=require(_0xd870('0x8'))(_0xd870('0x9'));var ami=require(_0xd870('0xa'));config['redis']=_[_0xd870('0xb')](config[_0xd870('0xc')],{'host':_0xd870('0xd'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var operators={'equals':function(_0x1eb035,_0x3cee02){return _0x1eb035==_0x3cee02;},'not_equals':function(_0x16e059,_0x5aaee8){return _0x16e059!=_0x5aaee8;}};var barAndWebActions=[_0xd870('0xe'),_0xd870('0x1'),'winapp'];function Trigger(_0x4f1952){this[_0xd870('0xf')]=_0x4f1952[_0xd870('0xf')];this[_0xd870('0x10')]=_0x4f1952['agents'];this[_0xd870('0x11')]=_0x4f1952[_0xd870('0x11')];this['templates']=_0x4f1952[_0xd870('0x12')];this[_0xd870('0x13')]=_0x4f1952['voiceExtensions'];this[_0xd870('0x14')]=_0x4f1952['zendeskAccounts'];this[_0xd870('0x15')]=_0x4f1952[_0xd870('0x15')];this[_0xd870('0x16')]=_0x4f1952[_0xd870('0x16')];this['sugarcrmAccounts']=_0x4f1952[_0xd870('0x17')];this[_0xd870('0x18')]=_0x4f1952['zohoAccounts'];this[_0xd870('0x19')]=_0x4f1952[_0xd870('0x19')];this[_0xd870('0x1a')]=_0x4f1952['vtigerAccounts'];this[_0xd870('0x1b')]=_0x4f1952[_0xd870('0x1b')];this['dynamics365Accounts']=_0x4f1952[_0xd870('0x1c')];this[_0xd870('0x1d')]=_0x4f1952['freshsalesAccounts'];this[_0xd870('0x1e')]={'zendesk':this[_0xd870('0x14')],'salesforce':this['salesforceAccounts'],'freshdesk':this[_0xd870('0x15')],'sugarcrm':this[_0xd870('0x17')],'zoho':this[_0xd870('0x18')],'desk':this[_0xd870('0x19')],'vtiger':this['vtigerAccounts'],'dynamics365':this['dynamics365Accounts'],'freshsales':this[_0xd870('0x1d')],'servicenow':this[_0xd870('0x1b')]};ami['on']('custom:agentcalled',this['syncCustomEvent'][_0xd870('0x1f')](this));ami['on'](_0xd870('0x20'),this[_0xd870('0x21')][_0xd870('0x1f')](this));ami['on'](_0xd870('0x22'),this[_0xd870('0x21')][_0xd870('0x1f')](this));ami['on']('custom:agentcomplete',this[_0xd870('0x21')][_0xd870('0x1f')](this));ami['on'](_0xd870('0x23'),this[_0xd870('0x21')][_0xd870('0x1f')](this));ami['on'](_0xd870('0x24'),this[_0xd870('0x21')][_0xd870('0x1f')](this));ami['on'](_0xd870('0x25'),this['syncCustomEvent']['bind'](this));ami['on'](_0xd870('0x26'),this[_0xd870('0x21')]['bind'](this));ami['on'](_0xd870('0x27'),this[_0xd870('0x21')][_0xd870('0x1f')](this));ami['on'](_0xd870('0x28'),this['syncCustomEvent'][_0xd870('0x1f')](this));ami['on'](_0xd870('0x29'),this['syncCustomEvent'][_0xd870('0x1f')](this));ami['on']('custom:timeout',this[_0xd870('0x21')]['bind'](this));ami['on']('custom:dialbegin',this['syncAgentDial'][_0xd870('0x1f')](this));ami['on'](_0xd870('0x2a'),this['syncAgentDial']['bind'](this));ami['on']('custom:dialend',this['syncAgentDial'][_0xd870('0x1f')](this));ami['on']('custom:newinteraction',this[_0xd870('0x21')]['bind'](this));ami['on']('custom:closedinteraction',this[_0xd870('0x21')]['bind'](this));ami['on'](_0xd870('0x2b'),this[_0xd870('0x21')][_0xd870('0x1f')](this));ami['on']('custom:incomingmessage',this[_0xd870('0x21')]['bind'](this));ami['on'](_0xd870('0x2c'),this[_0xd870('0x21')]['bind'](this));ami['on'](_0xd870('0x2d'),this[_0xd870('0x21')][_0xd870('0x1f')](this));ami['on'](_0xd870('0x2e'),this[_0xd870('0x21')]['bind'](this));ami['on'](_0xd870('0x2f'),this['syncCustomEvent'][_0xd870('0x1f')](this));}Trigger[_0xd870('0x30')]['emit']=function(_0x14a102,_0x50217a,_0xe8586a){logger[_0xd870('0x31')](_0x14a102,_0x50217a,JSON[_0xd870('0x32')](_0xe8586a));io['to'](_0x14a102)[_0xd870('0x33')](_0x50217a,_0xe8586a);};Trigger[_0xd870('0x30')][_0xd870('0x21')]=function(_0x2d8b2d){var _0x5b6b62=_[_0xd870('0x34')](_0x2d8b2d);if(typeof _0x5b6b62[_0xd870('0x35')]===_0xd870('0x36')){_0x5b6b62['motionChannel']=_0xd870('0x37');}this[_0xd870('0x38')](_0x5b6b62);};Trigger[_0xd870('0x30')][_0xd870('0x39')]=function(_0x5609c1){if(this['agents'][_0x5609c1[_0xd870('0x3a')]]){this[_0xd870('0x21')](_0x5609c1);}};Trigger[_0xd870('0x30')][_0xd870('0x38')]=function(_0x2918f4){var _0x50fac6;for(var _0x386c57 in this['triggers']){if(this[_0xd870('0xf')][_0xd870('0x3b')](_0x386c57)){if(this[_0xd870('0xf')][_0x386c57]['status']){_0x50fac6=this['checkTrigger'](this['triggers'][_0x386c57],_0x2918f4);if(_0x50fac6){_[_0xd870('0x3c')](_0x2918f4,_0x2918f4[_0xd870('0x3d')]);for(var _0x2cb2e8=0x0,_0x543d2e,_0x2a52f3,_0x3d1f48;_0x2cb2e8<this[_0xd870('0xf')][_0x386c57]['Actions'][_0xd870('0x3e')];_0x2cb2e8+=0x1){_0x543d2e=this['triggers'][_0x386c57][_0xd870('0x3f')][_0x2cb2e8];if(this[_0xd870('0x10')][_0x2918f4[_0xd870('0x3a')]]){switch(_0x543d2e['action'][_0xd870('0x40')]()){case'contactmanager':break;case'motionbar':case _0xd870('0x41'):var _0x3fba3f={};switch(barAndWebActions[_0x543d2e[_0xd870('0x42')]]){case _0xd870('0xe'):_0x3fba3f[_0xd870('0x43')]=_0x543d2e['data2'];_0x3fba3f[_0xd870('0x44')]=this['templates'][_0x543d2e[_0xd870('0x45')]]?Mustache[_0xd870('0x46')](this[_0xd870('0x12')][_0x543d2e[_0xd870('0x45')]][_0xd870('0x44')],_0x2918f4):_0xd870('0x47');break;case _0xd870('0x1'):_0x3fba3f[_0xd870('0x48')]=this[_0xd870('0x49')](_0x543d2e[_0xd870('0x45')],_0x2918f4,_[_0xd870('0x4a')](_0x543d2e[_0xd870('0x4b')])?!![]:parseInt(_0x543d2e[_0xd870('0x4b')],0xa));if(_[_0xd870('0x4a')](_0x543d2e[_0xd870('0x4c')])){_0x3fba3f[_0xd870('0x4d')]='0';}else{_0x3fba3f[_0xd870('0x4e')]=_0x543d2e[_0xd870('0x4c')];_0x3fba3f['windowWidth']=_['isNil'](_0x543d2e[_0xd870('0x4f')])?_0xd870('0x50'):_0x543d2e['data5'];_0x3fba3f[_0xd870('0x51')]=_['isNil'](_0x543d2e[_0xd870('0x52')])?_0xd870('0x53'):_0x543d2e['data6'];}break;case'winapp':_0x3fba3f[_0xd870('0x54')]=_0x543d2e['data2']?Mustache[_0xd870('0x46')](_0x543d2e[_0xd870('0x45')],_0x2918f4):'';_0x3fba3f[_0xd870('0x55')]=_0x543d2e[_0xd870('0x4b')]?Mustache[_0xd870('0x46')](_0x543d2e[_0xd870('0x4b')],_0x2918f4):'';break;}this[_0xd870('0x33')](util['format'](_0xd870('0x56'),this[_0xd870('0x10')][_0x2918f4[_0xd870('0x3a')]][_0xd870('0x57')]),util[_0xd870('0x58')](_0xd870('0x59'),_0x543d2e[_0xd870('0x5a')]['toLowerCase'](),barAndWebActions[_0x543d2e['data1']]),_[_0xd870('0x3c')](_0x3fba3f,_0x2918f4));break;case'jscripty':this[_0xd870('0x33')](util[_0xd870('0x58')](_0xd870('0x56'),this[_0xd870('0x10')][_0x2918f4[_0xd870('0x3a')]][_0xd870('0x57')]),util[_0xd870('0x58')]('trigger:%s',_0x543d2e[_0xd870('0x5a')][_0xd870('0x40')]()),_[_0xd870('0x3c')]({'ProjectId':parseInt(_0x543d2e[_0xd870('0x42')],0xa)},_0x2918f4));break;default:this[_0xd870('0x33')](util[_0xd870('0x58')]('user:%s',this[_0xd870('0x10')][_0x2918f4[_0xd870('0x3a')]][_0xd870('0x57')]),util[_0xd870('0x58')](_0xd870('0x5b'),_0x543d2e['action'][_0xd870('0x40')]()),_[_0xd870('0x3c')]({},_0x543d2e,_0x2918f4));}}switch(_0x543d2e['action'][_0xd870('0x40')]()){case _0xd870('0x5c'):cmContact['exec'](this[_0xd870('0x10')][_0x2918f4[_0xd870('0x3a')]],this[_0xd870('0xf')][_0x386c57],_0x543d2e,_0x2918f4);break;case _0xd870('0x5d'):integration[_0xd870('0x5e')](_0x543d2e,_0x2918f4,this[_0xd870('0x1e')],this['agents'][_0x2918f4[_0xd870('0x3a')]],this[_0xd870('0x11')][_0x2918f4[_0xd870('0x5f')]],this[_0xd870('0x13')][_0x2918f4[_0xd870('0x60')]]);break;case'urlforward':urlforward[_0xd870('0x5e')](_0x543d2e,_0x2918f4);break;case _0xd870('0x61'):script[_0xd870('0x5e')](_0x543d2e,_0x2918f4);break;}}}}}}};Trigger[_0xd870('0x30')][_0xd870('0x49')]=function(_0x5a3b38,_0x353c7f,_0xcff881){var _0x4a542d=url[_0xd870('0x62')](Mustache[_0xd870('0x46')](_0x5a3b38,_0x353c7f),!![]);if(_0xcff881){_[_0xd870('0x3c')](_0x4a542d[_0xd870('0x63')],_0x353c7f);}delete _0x4a542d['search'];var _0x16e845=url['format'](_0x4a542d);_0x16e845=_0x16e845[_0xd870('0x64')](/\/\?/g,'?');return _0x16e845;};Trigger[_0xd870('0x30')][_0xd870('0x65')]=function(_0x47abe9,_0x12a991){var _0xc34f5e=!![];var _0x4d0aaf=!![];var _0x4bdff7=![];if(_0x47abe9[_0xd870('0x66')]===_0x12a991['motionChannel']){_0x4bdff7=!![];}if(_0x47abe9[_0xd870('0x67')][_0xd870('0x3e')]){_0xc34f5e=_[_0xd870('0x68')](_0x47abe9['AllConditions'],this[_0xd870('0x69')](_0x12a991,_0x47abe9[_0xd870('0x66')]));}if(_0x47abe9[_0xd870('0x6a')]['length']){_0x4d0aaf=_['some'](_0x47abe9[_0xd870('0x6a')],this[_0xd870('0x69')](_0x12a991,_0x47abe9['channel']));}return _0x4bdff7&&_0xc34f5e&&_0x4d0aaf;};Trigger[_0xd870('0x30')][_0xd870('0x69')]=function(_0x9c365,_0x13a6a0){return function(_0x4c47c9){switch(_0x4c47c9[_0xd870('0x6b')]){case _0xd870('0x6c'):if(_0x9c365[_0xd870('0x66')]===_0x13a6a0){if(_0x13a6a0===_0xd870('0x6d')){return _0x9c365[_0xd870('0x6e')]?operators[_0x4c47c9['operator']](Number(_0x4c47c9['value']),_0x9c365[_0xd870('0x6e')]):![];}else{return _0x9c365[_[_0xd870('0x6f')](_0x13a6a0)+_0xd870('0x70')]?operators[_0x4c47c9[_0xd870('0x71')]](Number(_0x4c47c9['value']),_0x9c365[_[_0xd870('0x6f')](_0x13a6a0)+_0xd870('0x70')]):![];}}break;case _0xd870('0x72'):case'message':if(_0x9c365[_0xd870('0x66')]===_0x13a6a0){return _0x9c365[_0xd870('0x73')]?operators[_0x4c47c9[_0xd870('0x71')]](_0x4c47c9[_0xd870('0x74')],_0x9c365[_0xd870('0x73')]):![];}break;case _0xd870('0x5f'):return _0x9c365[_0xd870('0x5f')]?operators[_0x4c47c9[_0xd870('0x71')]](_0x4c47c9[_0xd870('0x74')],_0x9c365[_0xd870('0x5f')]):![];case _0xd870('0x75'):return _0x9c365['membername']?operators[_0x4c47c9[_0xd870('0x71')]](_0x4c47c9[_0xd870('0x74')],_0x9c365['membername']):![];case'lastevent':return _0x9c365[_0xd870('0x76')]?operators[_0x4c47c9[_0xd870('0x71')]](_0x4c47c9['value'],_0x9c365['lastevent']):![];case _0xd870('0x60'):return _0x9c365[_0xd870('0x60')]?operators[_0x4c47c9[_0xd870('0x71')]](_0x4c47c9[_0xd870('0x74')],_0x9c365[_0xd870('0x60')]):![];case _0xd870('0x77'):if(_0x4c47c9['value']===_0xd870('0x78'))_0x4c47c9[_0xd870('0x74')]=null;return typeof _0x9c365['substatus']!=='undefined'?operators[_0x4c47c9['operator']](_0x4c47c9[_0xd870('0x74')],_0x9c365[_0xd870('0x79')]):![];case _0xd870('0x7a'):if(_0x9c365[_0xd870('0x66')]===_0x13a6a0){return _0x4c47c9[_0xd870('0x74')]==='created'&&_0x4c47c9[_0xd870('0x71')]===_0xd870('0x7b')?!![]:![];}break;}return![];};};module[_0xd870('0x7c')]=Trigger;
\ No newline at end of file
+var _0x1537=['toLowerCase','user:%s','contactmanager','exec','integration','accounts','queue','urlforward','script','parse','query','search','replace','channel','every','checkConditions','some','AnyConditions','field','account','chat','ChatWebsiteId','value','upperFirst','AccountId','operator','message','event','agent','membername','lastevent','routeId','mailSubstatus','null','substatus','offlineMessage','equals','exports','util','lodash','mustache','ioredis','./urlforward','./integration','./cmContact','../../../config/environment','trigger','redis','defaults','localhost','socket.io-emitter','popup','url','winapp','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','custom:agentcalled','syncCustomEvent','custom:agentconnect','bind','custom:agentringnoanswer','custom:agentcomplete','custom:agentbusy','custom:agentcongestion','custom:agentreject','custom:amd','custom:queuecallerabandon','custom:timeout','custom:dialbegin','custom:dialconnect','syncAgentDial','custom:dialend','custom:newinteraction','custom:substatus','custom:incomingmessage','custom:acceptmessage','custom:offlineMessage','prototype','emit','info','stringify','clone','motionChannel','undefined','voice','checkTriggers','interface','hasOwnProperty','status','checkTrigger','merge','variables','Actions','length','action','motionbar','browser','data1','TemplateId','data2','html','render','template\x20not\x20found','uri','buildUri','isNil','data3','location','uriLocation','data4','windowWidth','data5','800','windowHeight','600','data6','winApplication','winArguments','name','format','trigger:%s:%s'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x1537,0x132));var _0x7153=function(_0x1b625e,_0x3b4838){_0x1b625e=_0x1b625e-0x0;var _0x1e5960=_0x1537[_0x1b625e];return _0x1e5960;};'use strict';var util=require(_0x7153('0x0'));var _=require(_0x7153('0x1'));var url=require('url');var Mustache=require(_0x7153('0x2'));var Redis=require(_0x7153('0x3'));var urlforward=require(_0x7153('0x4'));var integration=require(_0x7153('0x5'));var cmContact=require(_0x7153('0x6'));var script=require('./script');var config=require(_0x7153('0x7'));var logger=require('../../../config/logger')(_0x7153('0x8'));var ami=require('../ami');config[_0x7153('0x9')]=_[_0x7153('0xa')](config[_0x7153('0x9')],{'host':_0x7153('0xb'),'port':0x18eb});var io=require(_0x7153('0xc'))(new Redis(config[_0x7153('0x9')]));var operators={'equals':function(_0x463ed7,_0x50ed18){return _0x463ed7==_0x50ed18;},'not_equals':function(_0x23ab84,_0x55ab45){return _0x23ab84!=_0x55ab45;}};var barAndWebActions=[_0x7153('0xd'),_0x7153('0xe'),_0x7153('0xf')];function Trigger(_0x3104cd){this[_0x7153('0x10')]=_0x3104cd[_0x7153('0x10')];this[_0x7153('0x11')]=_0x3104cd['agents'];this[_0x7153('0x12')]=_0x3104cd[_0x7153('0x12')];this[_0x7153('0x13')]=_0x3104cd[_0x7153('0x13')];this[_0x7153('0x14')]=_0x3104cd[_0x7153('0x14')];this[_0x7153('0x15')]=_0x3104cd[_0x7153('0x15')];this[_0x7153('0x16')]=_0x3104cd[_0x7153('0x16')];this[_0x7153('0x17')]=_0x3104cd[_0x7153('0x17')];this[_0x7153('0x18')]=_0x3104cd['sugarcrmAccounts'];this['zohoAccounts']=_0x3104cd[_0x7153('0x19')];this[_0x7153('0x1a')]=_0x3104cd['deskAccounts'];this[_0x7153('0x1b')]=_0x3104cd[_0x7153('0x1b')];this[_0x7153('0x1c')]=_0x3104cd['servicenowAccounts'];this[_0x7153('0x1d')]=_0x3104cd[_0x7153('0x1d')];this[_0x7153('0x1e')]=_0x3104cd[_0x7153('0x1e')];this['accounts']={'zendesk':this['zendeskAccounts'],'salesforce':this[_0x7153('0x17')],'freshdesk':this['freshdeskAccounts'],'sugarcrm':this[_0x7153('0x18')],'zoho':this[_0x7153('0x19')],'desk':this['deskAccounts'],'vtiger':this[_0x7153('0x1b')],'dynamics365':this[_0x7153('0x1d')],'freshsales':this[_0x7153('0x1e')],'servicenow':this[_0x7153('0x1c')]};ami['on'](_0x7153('0x1f'),this[_0x7153('0x20')]['bind'](this));ami['on'](_0x7153('0x21'),this['syncCustomEvent'][_0x7153('0x22')](this));ami['on'](_0x7153('0x23'),this['syncCustomEvent'][_0x7153('0x22')](this));ami['on'](_0x7153('0x24'),this[_0x7153('0x20')][_0x7153('0x22')](this));ami['on']('custom:agentnosuchnumber',this[_0x7153('0x20')]['bind'](this));ami['on']('custom:agentnoanswer',this['syncCustomEvent'][_0x7153('0x22')](this));ami['on'](_0x7153('0x25'),this[_0x7153('0x20')][_0x7153('0x22')](this));ami['on'](_0x7153('0x26'),this[_0x7153('0x20')][_0x7153('0x22')](this));ami['on'](_0x7153('0x27'),this[_0x7153('0x20')][_0x7153('0x22')](this));ami['on'](_0x7153('0x28'),this[_0x7153('0x20')]['bind'](this));ami['on'](_0x7153('0x29'),this[_0x7153('0x20')][_0x7153('0x22')](this));ami['on'](_0x7153('0x2a'),this[_0x7153('0x20')][_0x7153('0x22')](this));ami['on'](_0x7153('0x2b'),this['syncAgentDial']['bind'](this));ami['on'](_0x7153('0x2c'),this[_0x7153('0x2d')]['bind'](this));ami['on'](_0x7153('0x2e'),this[_0x7153('0x2d')][_0x7153('0x22')](this));ami['on'](_0x7153('0x2f'),this[_0x7153('0x20')][_0x7153('0x22')](this));ami['on']('custom:closedinteraction',this[_0x7153('0x20')][_0x7153('0x22')](this));ami['on'](_0x7153('0x30'),this[_0x7153('0x20')][_0x7153('0x22')](this));ami['on'](_0x7153('0x31'),this['syncCustomEvent']['bind'](this));ami['on']('custom:outgoingmessage',this[_0x7153('0x20')][_0x7153('0x22')](this));ami['on'](_0x7153('0x32'),this[_0x7153('0x20')]['bind'](this));ami['on']('custom:rejectmessage',this[_0x7153('0x20')]['bind'](this));ami['on'](_0x7153('0x33'),this[_0x7153('0x20')][_0x7153('0x22')](this));}Trigger[_0x7153('0x34')][_0x7153('0x35')]=function(_0x7b5fcd,_0x4abb2c,_0xc5cac9){logger[_0x7153('0x36')](_0x7b5fcd,_0x4abb2c,JSON[_0x7153('0x37')](_0xc5cac9));io['to'](_0x7b5fcd)[_0x7153('0x35')](_0x4abb2c,_0xc5cac9);};Trigger['prototype'][_0x7153('0x20')]=function(_0x4888a7){var _0x4d7342=_[_0x7153('0x38')](_0x4888a7);if(typeof _0x4d7342[_0x7153('0x39')]===_0x7153('0x3a')){_0x4d7342['motionChannel']=_0x7153('0x3b');}this[_0x7153('0x3c')](_0x4d7342);};Trigger[_0x7153('0x34')][_0x7153('0x2d')]=function(_0xa0a44f){if(this[_0x7153('0x11')][_0xa0a44f[_0x7153('0x3d')]]){this['syncCustomEvent'](_0xa0a44f);}};Trigger['prototype'][_0x7153('0x3c')]=function(_0x12884f){var _0x4779b5;for(var _0x597065 in this[_0x7153('0x10')]){if(this[_0x7153('0x10')][_0x7153('0x3e')](_0x597065)){if(this[_0x7153('0x10')][_0x597065][_0x7153('0x3f')]){_0x4779b5=this[_0x7153('0x40')](this[_0x7153('0x10')][_0x597065],_0x12884f);if(_0x4779b5){_[_0x7153('0x41')](_0x12884f,_0x12884f[_0x7153('0x42')]);for(var _0xb3a508=0x0,_0x21192a,_0xb7e664,_0x1af9b1;_0xb3a508<this[_0x7153('0x10')][_0x597065][_0x7153('0x43')][_0x7153('0x44')];_0xb3a508+=0x1){_0x21192a=this[_0x7153('0x10')][_0x597065][_0x7153('0x43')][_0xb3a508];if(this['agents'][_0x12884f[_0x7153('0x3d')]]){switch(_0x21192a[_0x7153('0x45')]['toLowerCase']()){case'contactmanager':break;case _0x7153('0x46'):case _0x7153('0x47'):var _0xd7aa76={};switch(barAndWebActions[_0x21192a[_0x7153('0x48')]]){case _0x7153('0xd'):_0xd7aa76[_0x7153('0x49')]=_0x21192a[_0x7153('0x4a')];_0xd7aa76[_0x7153('0x4b')]=this[_0x7153('0x13')][_0x21192a[_0x7153('0x4a')]]?Mustache[_0x7153('0x4c')](this['templates'][_0x21192a[_0x7153('0x4a')]][_0x7153('0x4b')],_0x12884f):_0x7153('0x4d');break;case _0x7153('0xe'):_0xd7aa76[_0x7153('0x4e')]=this[_0x7153('0x4f')](_0x21192a['data2'],_0x12884f,_[_0x7153('0x50')](_0x21192a[_0x7153('0x51')])?!![]:parseInt(_0x21192a[_0x7153('0x51')],0xa));if(_[_0x7153('0x50')](_0x21192a['data4'])){_0xd7aa76[_0x7153('0x52')]='0';}else{_0xd7aa76[_0x7153('0x53')]=_0x21192a[_0x7153('0x54')];_0xd7aa76[_0x7153('0x55')]=_[_0x7153('0x50')](_0x21192a[_0x7153('0x56')])?_0x7153('0x57'):_0x21192a[_0x7153('0x56')];_0xd7aa76[_0x7153('0x58')]=_['isNil'](_0x21192a['data6'])?_0x7153('0x59'):_0x21192a[_0x7153('0x5a')];}break;case'winapp':_0xd7aa76[_0x7153('0x5b')]=_0x21192a[_0x7153('0x4a')]?Mustache[_0x7153('0x4c')](_0x21192a[_0x7153('0x4a')],_0x12884f):'';_0xd7aa76[_0x7153('0x5c')]=_0x21192a[_0x7153('0x51')]?Mustache[_0x7153('0x4c')](_0x21192a['data3'],_0x12884f):'';break;}this[_0x7153('0x35')](util['format']('user:%s',this[_0x7153('0x11')][_0x12884f[_0x7153('0x3d')]][_0x7153('0x5d')]),util[_0x7153('0x5e')](_0x7153('0x5f'),_0x21192a[_0x7153('0x45')][_0x7153('0x60')](),barAndWebActions[_0x21192a[_0x7153('0x48')]]),_['merge'](_0xd7aa76,_0x12884f));break;case'jscripty':this[_0x7153('0x35')](util['format'](_0x7153('0x61'),this[_0x7153('0x11')][_0x12884f[_0x7153('0x3d')]][_0x7153('0x5d')]),util[_0x7153('0x5e')]('trigger:%s',_0x21192a[_0x7153('0x45')][_0x7153('0x60')]()),_[_0x7153('0x41')]({'ProjectId':parseInt(_0x21192a[_0x7153('0x48')],0xa)},_0x12884f));break;default:this[_0x7153('0x35')](util[_0x7153('0x5e')](_0x7153('0x61'),this[_0x7153('0x11')][_0x12884f[_0x7153('0x3d')]][_0x7153('0x5d')]),util[_0x7153('0x5e')]('trigger:%s',_0x21192a[_0x7153('0x45')][_0x7153('0x60')]()),_[_0x7153('0x41')]({},_0x21192a,_0x12884f));}}switch(_0x21192a[_0x7153('0x45')][_0x7153('0x60')]()){case _0x7153('0x62'):cmContact[_0x7153('0x63')](this[_0x7153('0x11')][_0x12884f[_0x7153('0x3d')]],this[_0x7153('0x10')][_0x597065],_0x21192a,_0x12884f);break;case _0x7153('0x64'):integration[_0x7153('0x63')](_0x21192a,_0x12884f,this[_0x7153('0x65')],this[_0x7153('0x11')][_0x12884f[_0x7153('0x3d')]],this[_0x7153('0x12')][_0x12884f[_0x7153('0x66')]],this[_0x7153('0x14')][_0x12884f['routeId']]);break;case _0x7153('0x67'):urlforward['exec'](_0x21192a,_0x12884f);break;case _0x7153('0x68'):script[_0x7153('0x63')](_0x21192a,_0x12884f);break;}}}}}}};Trigger['prototype'][_0x7153('0x4f')]=function(_0x3a72d2,_0x5b4cd8,_0x251a65){var _0x42dbdc=url[_0x7153('0x69')](Mustache['render'](_0x3a72d2,_0x5b4cd8),!![]);if(_0x251a65){_['merge'](_0x42dbdc[_0x7153('0x6a')],_0x5b4cd8);}delete _0x42dbdc[_0x7153('0x6b')];var _0x34e0a2=url[_0x7153('0x5e')](_0x42dbdc);_0x34e0a2=_0x34e0a2[_0x7153('0x6c')](/\/\?/g,'?');return _0x34e0a2;};Trigger[_0x7153('0x34')][_0x7153('0x40')]=function(_0x3ae890,_0x2fc560){var _0x1b745b=!![];var _0x55241e=!![];var _0x2df634=![];if(_0x3ae890[_0x7153('0x6d')]===_0x2fc560[_0x7153('0x39')]){_0x2df634=!![];}if(_0x3ae890['AllConditions']['length']){_0x1b745b=_[_0x7153('0x6e')](_0x3ae890['AllConditions'],this[_0x7153('0x6f')](_0x2fc560,_0x3ae890[_0x7153('0x6d')]));}if(_0x3ae890['AnyConditions'][_0x7153('0x44')]){_0x55241e=_[_0x7153('0x70')](_0x3ae890[_0x7153('0x71')],this[_0x7153('0x6f')](_0x2fc560,_0x3ae890['channel']));}return _0x2df634&&_0x1b745b&&_0x55241e;};Trigger['prototype'][_0x7153('0x6f')]=function(_0x57d34a,_0x50f291){return function(_0x4d16c5){switch(_0x4d16c5[_0x7153('0x72')]){case _0x7153('0x73'):if(_0x57d34a['channel']===_0x50f291){if(_0x50f291===_0x7153('0x74')){return _0x57d34a[_0x7153('0x75')]?operators[_0x4d16c5['operator']](Number(_0x4d16c5[_0x7153('0x76')]),_0x57d34a['ChatWebsiteId']):![];}else{return _0x57d34a[_[_0x7153('0x77')](_0x50f291)+_0x7153('0x78')]?operators[_0x4d16c5[_0x7153('0x79')]](Number(_0x4d16c5[_0x7153('0x76')]),_0x57d34a[_[_0x7153('0x77')](_0x50f291)+'AccountId']):![];}}break;case'interaction':case _0x7153('0x7a'):if(_0x57d34a[_0x7153('0x6d')]===_0x50f291){return _0x57d34a[_0x7153('0x7b')]?operators[_0x4d16c5['operator']](_0x4d16c5[_0x7153('0x76')],_0x57d34a[_0x7153('0x7b')]):![];}break;case _0x7153('0x66'):return _0x57d34a[_0x7153('0x66')]?operators[_0x4d16c5['operator']](_0x4d16c5[_0x7153('0x76')],_0x57d34a['queue']):![];case _0x7153('0x7c'):return _0x57d34a['membername']?operators[_0x4d16c5[_0x7153('0x79')]](_0x4d16c5[_0x7153('0x76')],_0x57d34a[_0x7153('0x7d')]):![];case _0x7153('0x7e'):return _0x57d34a[_0x7153('0x7e')]?operators[_0x4d16c5[_0x7153('0x79')]](_0x4d16c5[_0x7153('0x76')],_0x57d34a[_0x7153('0x7e')]):![];case _0x7153('0x7f'):return _0x57d34a[_0x7153('0x7f')]?operators[_0x4d16c5[_0x7153('0x79')]](_0x4d16c5[_0x7153('0x76')],_0x57d34a[_0x7153('0x7f')]):![];case _0x7153('0x80'):if(_0x4d16c5[_0x7153('0x76')]===_0x7153('0x81'))_0x4d16c5[_0x7153('0x76')]=null;return typeof _0x57d34a[_0x7153('0x82')]!=='undefined'?operators[_0x4d16c5[_0x7153('0x79')]](_0x4d16c5['value'],_0x57d34a[_0x7153('0x82')]):![];case _0x7153('0x83'):if(_0x57d34a['channel']===_0x50f291){return _0x4d16c5[_0x7153('0x76')]==='created'&&_0x4d16c5['operator']===_0x7153('0x84')?!![]:![];}break;}return![];};};module[_0x7153('0x85')]=Trigger;
\ No newline at end of file
index 6527e43..fff4714 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['customField','content','idField','custom_fields','variable','variableName','name','Variable','toLowerCase','priority','Creating\x20new\x20ticket...','getString','phone','new','xCALLY','Motion','CTI','concat','Descriptions','/api/v2/users/%d','user','Fields','%s/customers/%d/cases','stripTrailingSlash','serverUrl','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','integrationTab','user:%s','newTab','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','https://xcally.desk.com/web/agent/case/%d','error','Desk\x20account\x20type\x20not\x20recognized','catch','outbound','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridnum','The\x20Enduser\x20ID\x20is:','trigger:desk:display','trigger:browser:url','%s/agent/tickets/%s','stringify','unmanaged','monitor_format','lastevent','toUpperCase','calleridnum','lodash','md5','util','ioredis','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','emit','application/json','info','Getting\x20agent\x20with\x20email','%s/users','then','find','_embedded','entries','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','remoteUri','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','format','debug','[HTTP]','GET','authType','basic','%s:%s','username','password','token','Basic\x20%s','toString','base64','Searching\x20enduser\x20with\x20phone','total_entries','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','POST','length','forEach','includes','string','picklist','type','nameField'];(function(_0x2527ea,_0x576c8){var _0x24a904=function(_0x2a1e95){while(--_0x2a1e95){_0x2527ea['push'](_0x2527ea['shift']());}};_0x24a904(++_0x576c8);}(_0x3e74,0x175));var _0x43e7=function(_0x3a3fe5,_0x205ce3){_0x3a3fe5=_0x3a3fe5-0x0;var _0x4a2913=_0x3e74[_0x3a3fe5];return _0x4a2913;};'use strict';var _=require(_0x43e7('0x0'));var rp=require('request-promise');var md5=require(_0x43e7('0x1'));var util=require(_0x43e7('0x2'));var Redis=require(_0x43e7('0x3'));var intUtil=require('./util');var config=require('../../../../config/environment');var logger=require(_0x43e7('0x4'))('desk');config[_0x43e7('0x5')]=_[_0x43e7('0x6')](config[_0x43e7('0x5')],{'host':_0x43e7('0x7'),'port':0x18eb});var io=require(_0x43e7('0x8'))(new Redis(config['redis']));function emit(_0x45a0d1,_0x3491d6,_0x2ede2d){io['to'](_0x45a0d1)[_0x43e7('0x9')](_0x3491d6,_0x2ede2d);}var headers={'Content-Type':_0x43e7('0xa'),'Accept':'application/json'};function getUser(_0x212c6c,_0x554d44){if(intUtil['validateEmail'](_0x554d44)===!![]){logger[_0x43e7('0xb')](_0x43e7('0xc'),_0x554d44);return request({'uri':util['format'](_0x43e7('0xd'),_0x212c6c['remoteUri'])})[_0x43e7('0xe')](function(_0x37302c){if(_0x37302c['total_entries']){return _[_0x43e7('0xf')](_0x37302c[_0x43e7('0x10')][_0x43e7('0x11')],{'email':_0x554d44});}})[_0x43e7('0xe')](function(_0x4e008c){if(_0x4e008c){logger['info'](_0x43e7('0x12'));return _0x4e008c;}else{logger[_0x43e7('0xb')](_0x43e7('0x13'));return request({'uri':util['format']('%s/users/me',_0x212c6c[_0x43e7('0x14')])});}});}else{logger[_0x43e7('0xb')](_0x43e7('0x15'));return request({'uri':util[_0x43e7('0x16')]('%s/users/me',_0x212c6c['remoteUri'])});}}function request(_0xdf16c){logger[_0x43e7('0x17')](_0x43e7('0x18'),JSON['stringify'](_0xdf16c));return rp(_['defaults'](_0xdf16c,{'method':_0x43e7('0x19'),'headers':headers,'json':!![]}));}function getAuth(_0x1ca758){var _0x9037d3;if(_0x1ca758[_0x43e7('0x1a')]===_0x43e7('0x1b')){_0x9037d3=util[_0x43e7('0x16')](_0x43e7('0x1c'),_0x1ca758[_0x43e7('0x1d')],_0x1ca758[_0x43e7('0x1e')]);}else if(_0x1ca758[_0x43e7('0x1a')]===_0x43e7('0x1f')){_0x9037d3=util[_0x43e7('0x16')]('%s/token:%s',_0x1ca758[_0x43e7('0x1d')],_0x1ca758[_0x43e7('0x1f')]);}return util['format'](_0x43e7('0x20'),new Buffer(_0x9037d3)[_0x43e7('0x21')](_0x43e7('0x22')));}function getEndUser(_0x28aacc,_0x4077fb,_0x2f4cb4){logger['info'](_0x43e7('0x23'),_0x2f4cb4);return request({'uri':util['format']('%s/customers/search',_0x28aacc[_0x43e7('0x14')]),'qs':{'phone':_0x2f4cb4}})[_0x43e7('0xe')](function(_0x4b2b9f){if(_0x4b2b9f[_0x43e7('0x24')]){logger['info'](_0x43e7('0x25'));return _0x4b2b9f['_embedded'][_0x43e7('0x11')][0x0];}else{logger[_0x43e7('0xb')](_0x43e7('0x26'));return request({'uri':util[_0x43e7('0x16')]('%s/customers',_0x28aacc['remoteUri']),'method':_0x43e7('0x27'),'body':{'first_name':_0x4077fb,'title':_0x4077fb,'phone_numbers':[{'type':'work','value':_0x2f4cb4}]}});}});}function getTags(_0x2dd5f,_0x40dc8f){var _0x3565cf=[];if(_0x2dd5f&&_0x2dd5f[_0x43e7('0x28')]>0x0){_0x3565cf=_['map'](_0x2dd5f,_0x40dc8f);}return _0x3565cf;}function getCustomFields(_0x33a1a5,_0x4690a6){var _0x45b675=[];var _0x50f9f5={'custom_fields':{}};if(_0x33a1a5[_0x43e7('0x28')]>0x0){_[_0x43e7('0x29')](_0x33a1a5,function(_0x2b85a5){if(_[_0x43e7('0x2a')]([_0x43e7('0x2b'),_0x43e7('0x2c')],_0x2b85a5[_0x43e7('0x2d')])&&_0x2b85a5[_0x43e7('0x2e')]&&!_0x2b85a5[_0x43e7('0x2f')]){_0x50f9f5[_0x2b85a5[_0x43e7('0x2e')]['toLowerCase']()]=_0x2b85a5[_0x43e7('0x30')][_0x43e7('0x21')]();}else if(_[_0x43e7('0x2a')]([_0x43e7('0x2b'),_0x43e7('0x2c')],_0x2b85a5['type'])&&_0x2b85a5[_0x43e7('0x31')]&&_0x2b85a5[_0x43e7('0x2f')]){_0x50f9f5[_0x43e7('0x32')][_0x2b85a5[_0x43e7('0x31')]]=_0x2b85a5['content']['toString']();}else if(_0x2b85a5['type']===_0x43e7('0x33')&&_0x2b85a5[_0x43e7('0x34')]&&_0x2b85a5[_0x43e7('0x31')]&&_0x2b85a5[_0x43e7('0x2f')]){_0x4690a6[_0x2b85a5[_0x43e7('0x34')]]&&(_0x50f9f5[_0x43e7('0x32')][_0x2b85a5['idField']]=_0x4690a6[_0x2b85a5['variableName']]['toString']());}else if(_0x2b85a5['type']==='customVariable'&&_0x2b85a5['Variable']&&_0x2b85a5['Variable'][_0x43e7('0x35')]&&_0x2b85a5['idField']&&_0x2b85a5[_0x43e7('0x2f')]){_0x4690a6[_0x2b85a5[_0x43e7('0x36')][_0x43e7('0x35')][_0x43e7('0x37')]()]&&(_0x50f9f5[_0x43e7('0x32')][_0x2b85a5[_0x43e7('0x31')]]=_0x4690a6[_0x2b85a5[_0x43e7('0x36')]['name']['toLowerCase']()]['toString']());}});}if(_0x50f9f5[_0x43e7('0x38')]){_0x50f9f5[_0x43e7('0x38')]=Number(_0x50f9f5[_0x43e7('0x38')]);}return _0x50f9f5;}function getTicket(_0x16cdba,_0x1b1440,_0x1ed538,_0x1d4589,_0x2ffd43){logger['info'](_0x43e7('0x39'));var _0x2b0ffe=_['merge']({'subject':intUtil[_0x43e7('0x3a')](_0x1d4589['Subjects'],_0x2ffd43,'\x20'),'type':_0x43e7('0x3b'),'status':_0x43e7('0x3c'),'labels':[_0x43e7('0x3d'),_0x43e7('0x3e'),_0x43e7('0x3f')][_0x43e7('0x40')](getTags(_0x1d4589['Tags'],'name')),'description':intUtil[_0x43e7('0x3a')](_0x1d4589[_0x43e7('0x41')],_0x2ffd43,'\x0a'),'_links':{'assigned_user':{'href':util[_0x43e7('0x16')](_0x43e7('0x42'),_0x1b1440['id']),'class':_0x43e7('0x43')}},'message':{'direction':'in','body':intUtil['getString'](_0x1d4589[_0x43e7('0x41')],_0x2ffd43,'\x0a')}},getCustomFields(_0x1d4589[_0x43e7('0x44')],_0x2ffd43));return request({'uri':util['format'](_0x43e7('0x45'),_0x16cdba['remoteUri'],_0x1ed538['id']),'method':_0x43e7('0x27'),'body':_0x2b0ffe});}exports['queue']=function(_0x3d81ae,_0x3b4235,_0x3a5807,_0x1c2c6b,_0x49b866,_0x47d6a1){var _0x103393,_0x40c509;_0x47d6a1[_0x43e7('0x14')]=intUtil[_0x43e7('0x46')](_0x47d6a1['remoteUri']);_0x47d6a1['serverUrl']=intUtil['stripTrailingSlash'](_0x47d6a1[_0x43e7('0x47')]);if(_0x49b866&&_0x49b866['monitor_format']){logger[_0x43e7('0xb')]('[QUEUE]','Recording\x20is\x20enabled!');_0x3b4235[_0x43e7('0x48')]=util['format'](_0x43e7('0x49'),_0x47d6a1[_0x43e7('0x47')],_0x3b4235[_0x43e7('0x4a')],md5(_0x3b4235[_0x43e7('0x4a')]));}else{_0x3b4235['recordingURL']='';}headers[_0x43e7('0x4b')]=getAuth(_0x47d6a1);return getUser(_0x47d6a1,_0x1c2c6b[_0x43e7('0x4c')])[_0x43e7('0xe')](function(_0x1fd277){_0x103393=_0x1fd277;logger[_0x43e7('0xb')](_0x43e7('0x4d'),_0x103393['id']);return getEndUser(_0x47d6a1,_0x3b4235['calleridname'],_0x3b4235['calleridnum']);})[_0x43e7('0xe')](function(_0x36a09e){_0x40c509=_0x36a09e;logger[_0x43e7('0xb')]('The\x20Enduser\x20ID\x20is:',_0x40c509['id']);return getTicket(_0x47d6a1,_0x103393,_0x40c509,_0x3a5807,_0x3b4235);})['then'](function(_0x56489b){if(_0x56489b){logger[_0x43e7('0xb')](_0x43e7('0x4e'));logger['info'](_0x43e7('0x4f'),_0x56489b['id']);switch(_0x47d6a1[_0x43e7('0x2d')]){case _0x43e7('0x50'):logger['info']('[QUEUE]','Displaying\x20ticket\x20to\x20agent...');emit(util['format'](_0x43e7('0x51'),_0x1c2c6b[_0x43e7('0x35')]),'trigger:desk:display',{'recordId':_0x56489b['id']});break;case _0x43e7('0x52'):logger[_0x43e7('0xb')](_0x43e7('0x53'),_0x43e7('0x54'));emit(util['format'](_0x43e7('0x51'),_0x1c2c6b['name']),'trigger:browser:url',{'uri':util[_0x43e7('0x16')](_0x43e7('0x55'),_0x56489b['id'])});break;default:logger[_0x43e7('0x56')](_0x43e7('0x53'),_0x43e7('0x57'));}}})[_0x43e7('0x58')](function(_0x1cd87c){console[_0x43e7('0x56')](_0x1cd87c);logger[_0x43e7('0x56')](_0x43e7('0x53'),JSON['stringify'](_0x1cd87c));});};exports[_0x43e7('0x59')]=function(_0x46c910,_0x499c03,_0x39e3ca,_0x4e6f6d,_0x35b799,_0x520857,_0x34e2ec){var _0x1f561f,_0xfe13fa;_0x520857['remoteUri']=intUtil['stripTrailingSlash'](_0x520857[_0x43e7('0x14')]);_0x520857[_0x43e7('0x47')]=intUtil[_0x43e7('0x46')](_0x520857[_0x43e7('0x47')]);if(_0x34e2ec&&_0x34e2ec[_0x43e7('0x5a')]&&_0x34e2ec[_0x43e7('0x5a')]!==_0x43e7('0x5b')){logger[_0x43e7('0xb')](_0x43e7('0x5c'),_0x43e7('0x5d'));_0x499c03[_0x43e7('0x48')]=util['format'](_0x43e7('0x49'),_0x520857[_0x43e7('0x47')],_0x499c03['uniqueid'],md5(_0x499c03[_0x43e7('0x4a')]));}headers[_0x43e7('0x4b')]=getAuth(_0x520857);return getUser(_0x520857,_0x4e6f6d[_0x43e7('0x4c')])['then'](function(_0x5d63c6){_0x1f561f=_0x5d63c6;logger[_0x43e7('0xb')](_0x43e7('0x4d'),_0x1f561f['id']);return getEndUser(_0x520857,_0x499c03['destcalleridname'],_0x499c03[_0x43e7('0x5e')]);})['then'](function(_0x49a6ce){_0xfe13fa=_0x49a6ce;logger[_0x43e7('0xb')](_0x43e7('0x5f'),_0xfe13fa['id']);return getTicket(_0x520857,_0x1f561f,_0xfe13fa,_0x39e3ca,_0x499c03);})[_0x43e7('0xe')](function(_0x40155c){if(_0x40155c){logger[_0x43e7('0xb')]('Ticket\x20created!');logger[_0x43e7('0xb')](_0x43e7('0x4f'),_0x40155c['id']);switch(_0x520857['type']){case _0x43e7('0x50'):logger[_0x43e7('0xb')](_0x43e7('0x53'),'Displaying\x20ticket\x20to\x20agent...');emit(util['format']('user:%s',_0x4e6f6d[_0x43e7('0x35')]),_0x43e7('0x60'),{'recordId':_0x40155c['id']});break;case _0x43e7('0x52'):logger[_0x43e7('0xb')]('[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x43e7('0x16')](_0x43e7('0x51'),_0x4e6f6d[_0x43e7('0x35')]),_0x43e7('0x61'),{'uri':util['format'](_0x43e7('0x62'),_0x520857[_0x43e7('0x14')],_0x40155c['id'])});break;default:logger[_0x43e7('0x56')](_0x43e7('0x5c'),_0x43e7('0x57'));}}})[_0x43e7('0x58')](function(_0x4665db){logger[_0x43e7('0x56')](_0x43e7('0x5c'),JSON[_0x43e7('0x63')](_0x4665db));});};exports[_0x43e7('0x64')]=function(_0x57fdfe,_0x5f3824,_0x2b0711,_0x58a3a8,_0x501616,_0x50edb2){var _0xb3e981,_0xe666b0;_0x50edb2['remoteUri']=intUtil[_0x43e7('0x46')](_0x50edb2[_0x43e7('0x14')]);_0x50edb2[_0x43e7('0x47')]=intUtil['stripTrailingSlash'](_0x50edb2[_0x43e7('0x47')]);if(_0x501616&&_0x501616[_0x43e7('0x65')]){logger[_0x43e7('0xb')]('['+_0x5f3824[_0x43e7('0x66')][_0x43e7('0x67')]()+']',_0x43e7('0x5d'));_0x5f3824[_0x43e7('0x48')]=util['format'](_0x43e7('0x49'),_0x50edb2[_0x43e7('0x47')],_0x5f3824[_0x43e7('0x4a')],md5(_0x5f3824['uniqueid']));}else{_0x5f3824['recordingURL']='';}headers[_0x43e7('0x4b')]=getAuth(_0x50edb2);return getUser(_0x50edb2)['then'](function(_0x5cb26e){_0xb3e981=_0x5cb26e;logger[_0x43e7('0xb')](_0x43e7('0x4d'),_0xb3e981['id']);return getEndUser(_0x50edb2,_0x5f3824['calleridname'],_0x5f3824[_0x43e7('0x68')]);})[_0x43e7('0xe')](function(_0x1e2fed){_0xe666b0=_0x1e2fed;logger[_0x43e7('0xb')](_0x43e7('0x5f'),_0xe666b0['id']);return getTicket(_0x50edb2,_0xb3e981,_0xe666b0,_0x2b0711,_0x5f3824);})[_0x43e7('0xe')](function(_0x398a78){if(_0x398a78){logger['info'](_0x43e7('0x4e'));logger[_0x43e7('0xb')]('The\x20Ticket\x20ID\x20is:',_0x398a78['id']);}})[_0x43e7('0x58')](function(_0x5c2c5f){logger[_0x43e7('0x56')]('['+_0x5f3824[_0x43e7('0x66')][_0x43e7('0x67')]()+']',JSON[_0x43e7('0x63')](_0x5c2c5f));});};
\ No newline at end of file
+var _0x814b=['calleridname','toUpperCase','lodash','request-promise','md5','util','ioredis','./util','../../../../config/logger','desk','redis','defaults','localhost','emit','application/json','validateEmail','info','Getting\x20agent\x20with\x20email','format','%s/users','then','total_entries','find','_embedded','entries','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me','remoteUri','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','debug','[HTTP]','%s:%s','authType','token','username','Basic\x20%s','toString','base64','Searching\x20enduser\x20with\x20phone','%s/customers/search','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/customers','POST','work','map','length','string','nameField','toLowerCase','content','picklist','idField','customField','custom_fields','type','variableName','customVariable','Variable','name','priority','merge','getString','Subjects','xCALLY','CTI','concat','Tags','Descriptions','/api/v2/users/%d','user','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','Authorization','email','The\x20User\x20ID\x20is:','calleridnum','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','integrationTab','user:%s','trigger:desk:display','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','https://xcally.desk.com/web/agent/case/%d','catch','error','stringify','recordingFormat','none','[OUTBOUND]','destcalleridnum','Displaying\x20ticket\x20to\x20agent...','unmanaged','lastevent'];(function(_0x5c63c2,_0x473c7f){var _0x3d7d86=function(_0x1e6353){while(--_0x1e6353){_0x5c63c2['push'](_0x5c63c2['shift']());}};_0x3d7d86(++_0x473c7f);}(_0x814b,0x1a2));var _0xb814=function(_0x1f62c3,_0x1ff95b){_0x1f62c3=_0x1f62c3-0x0;var _0x385c1c=_0x814b[_0x1f62c3];return _0x385c1c;};'use strict';var _=require(_0xb814('0x0'));var rp=require(_0xb814('0x1'));var md5=require(_0xb814('0x2'));var util=require(_0xb814('0x3'));var Redis=require(_0xb814('0x4'));var intUtil=require(_0xb814('0x5'));var config=require('../../../../config/environment');var logger=require(_0xb814('0x6'))(_0xb814('0x7'));config[_0xb814('0x8')]=_[_0xb814('0x9')](config[_0xb814('0x8')],{'host':_0xb814('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xb814('0x8')]));function emit(_0x2e6272,_0x5c8539,_0x271af9){io['to'](_0x2e6272)[_0xb814('0xb')](_0x5c8539,_0x271af9);}var headers={'Content-Type':_0xb814('0xc'),'Accept':_0xb814('0xc')};function getUser(_0x1fea33,_0x21d4a5){if(intUtil[_0xb814('0xd')](_0x21d4a5)===!![]){logger[_0xb814('0xe')](_0xb814('0xf'),_0x21d4a5);return request({'uri':util[_0xb814('0x10')](_0xb814('0x11'),_0x1fea33['remoteUri'])})[_0xb814('0x12')](function(_0x56278f){if(_0x56278f[_0xb814('0x13')]){return _[_0xb814('0x14')](_0x56278f[_0xb814('0x15')][_0xb814('0x16')],{'email':_0x21d4a5});}})[_0xb814('0x12')](function(_0x3bde14){if(_0x3bde14){logger[_0xb814('0xe')](_0xb814('0x17'));return _0x3bde14;}else{logger[_0xb814('0xe')](_0xb814('0x18'));return request({'uri':util[_0xb814('0x10')](_0xb814('0x19'),_0x1fea33[_0xb814('0x1a')])});}});}else{logger[_0xb814('0xe')](_0xb814('0x1b'));return request({'uri':util[_0xb814('0x10')](_0xb814('0x19'),_0x1fea33[_0xb814('0x1a')])});}}function request(_0x125ce2){logger[_0xb814('0x1c')](_0xb814('0x1d'),JSON['stringify'](_0x125ce2));return rp(_[_0xb814('0x9')](_0x125ce2,{'method':'GET','headers':headers,'json':!![]}));}function getAuth(_0x270598){var _0xfac75b;if(_0x270598['authType']==='basic'){_0xfac75b=util['format'](_0xb814('0x1e'),_0x270598['username'],_0x270598['password']);}else if(_0x270598[_0xb814('0x1f')]===_0xb814('0x20')){_0xfac75b=util[_0xb814('0x10')]('%s/token:%s',_0x270598[_0xb814('0x21')],_0x270598['token']);}return util[_0xb814('0x10')](_0xb814('0x22'),new Buffer(_0xfac75b)[_0xb814('0x23')](_0xb814('0x24')));}function getEndUser(_0x27352e,_0x2bd039,_0x1f5d40){logger['info'](_0xb814('0x25'),_0x1f5d40);return request({'uri':util['format'](_0xb814('0x26'),_0x27352e[_0xb814('0x1a')]),'qs':{'phone':_0x1f5d40}})[_0xb814('0x12')](function(_0x208927){if(_0x208927[_0xb814('0x13')]){logger[_0xb814('0xe')](_0xb814('0x27'));return _0x208927['_embedded'][_0xb814('0x16')][0x0];}else{logger[_0xb814('0xe')](_0xb814('0x28'));return request({'uri':util[_0xb814('0x10')](_0xb814('0x29'),_0x27352e[_0xb814('0x1a')]),'method':_0xb814('0x2a'),'body':{'first_name':_0x2bd039,'title':_0x2bd039,'phone_numbers':[{'type':_0xb814('0x2b'),'value':_0x1f5d40}]}});}});}function getTags(_0x5a6291,_0x271aa8){var _0x328a08=[];if(_0x5a6291&&_0x5a6291['length']>0x0){_0x328a08=_[_0xb814('0x2c')](_0x5a6291,_0x271aa8);}return _0x328a08;}function getCustomFields(_0x37d24d,_0x530744){var _0x499f22=[];var _0x20577b={'custom_fields':{}};if(_0x37d24d[_0xb814('0x2d')]>0x0){_['forEach'](_0x37d24d,function(_0x338a28){if(_['includes']([_0xb814('0x2e'),'picklist'],_0x338a28['type'])&&_0x338a28[_0xb814('0x2f')]&&!_0x338a28['customField']){_0x20577b[_0x338a28[_0xb814('0x2f')][_0xb814('0x30')]()]=_0x338a28[_0xb814('0x31')]['toString']();}else if(_['includes']([_0xb814('0x2e'),_0xb814('0x32')],_0x338a28['type'])&&_0x338a28[_0xb814('0x33')]&&_0x338a28[_0xb814('0x34')]){_0x20577b[_0xb814('0x35')][_0x338a28[_0xb814('0x33')]]=_0x338a28[_0xb814('0x31')][_0xb814('0x23')]();}else if(_0x338a28[_0xb814('0x36')]==='variable'&&_0x338a28[_0xb814('0x37')]&&_0x338a28[_0xb814('0x33')]&&_0x338a28[_0xb814('0x34')]){_0x530744[_0x338a28[_0xb814('0x37')]]&&(_0x20577b[_0xb814('0x35')][_0x338a28['idField']]=_0x530744[_0x338a28[_0xb814('0x37')]]['toString']());}else if(_0x338a28[_0xb814('0x36')]===_0xb814('0x38')&&_0x338a28[_0xb814('0x39')]&&_0x338a28['Variable'][_0xb814('0x3a')]&&_0x338a28[_0xb814('0x33')]&&_0x338a28['customField']){_0x530744[_0x338a28[_0xb814('0x39')][_0xb814('0x3a')][_0xb814('0x30')]()]&&(_0x20577b[_0xb814('0x35')][_0x338a28[_0xb814('0x33')]]=_0x530744[_0x338a28[_0xb814('0x39')]['name'][_0xb814('0x30')]()]['toString']());}});}if(_0x20577b[_0xb814('0x3b')]){_0x20577b['priority']=Number(_0x20577b[_0xb814('0x3b')]);}return _0x20577b;}function getTicket(_0x4b9233,_0x2f8a2e,_0x26675a,_0x54a7fb,_0x4d308a){logger['info']('Creating\x20new\x20ticket...');var _0x17549e=_[_0xb814('0x3c')]({'subject':intUtil[_0xb814('0x3d')](_0x54a7fb[_0xb814('0x3e')],_0x4d308a,'\x20'),'type':'phone','status':'new','labels':[_0xb814('0x3f'),'Motion',_0xb814('0x40')][_0xb814('0x41')](getTags(_0x54a7fb[_0xb814('0x42')],_0xb814('0x3a'))),'description':intUtil[_0xb814('0x3d')](_0x54a7fb[_0xb814('0x43')],_0x4d308a,'\x0a'),'_links':{'assigned_user':{'href':util[_0xb814('0x10')](_0xb814('0x44'),_0x2f8a2e['id']),'class':_0xb814('0x45')}},'message':{'direction':'in','body':intUtil['getString'](_0x54a7fb['Descriptions'],_0x4d308a,'\x0a')}},getCustomFields(_0x54a7fb['Fields'],_0x4d308a));return request({'uri':util[_0xb814('0x10')]('%s/customers/%d/cases',_0x4b9233[_0xb814('0x1a')],_0x26675a['id']),'method':'POST','body':_0x17549e});}exports[_0xb814('0x46')]=function(_0x44ff56,_0x9ef639,_0x2e97cc,_0x4fae23,_0x30fc57,_0x15f01a){var _0x2b23c7,_0x22cf27;_0x15f01a[_0xb814('0x1a')]=intUtil[_0xb814('0x47')](_0x15f01a['remoteUri']);_0x15f01a[_0xb814('0x48')]=intUtil[_0xb814('0x47')](_0x15f01a[_0xb814('0x48')]);if(_0x30fc57&&_0x30fc57[_0xb814('0x49')]){logger[_0xb814('0xe')](_0xb814('0x4a'),_0xb814('0x4b'));_0x9ef639['recordingURL']=util['format'](_0xb814('0x4c'),_0x15f01a[_0xb814('0x48')],_0x9ef639[_0xb814('0x4d')],md5(_0x9ef639[_0xb814('0x4d')]));}else{_0x9ef639[_0xb814('0x4e')]='';}headers[_0xb814('0x4f')]=getAuth(_0x15f01a);return getUser(_0x15f01a,_0x4fae23[_0xb814('0x50')])[_0xb814('0x12')](function(_0x2eb9b6){_0x2b23c7=_0x2eb9b6;logger[_0xb814('0xe')](_0xb814('0x51'),_0x2b23c7['id']);return getEndUser(_0x15f01a,_0x9ef639['calleridname'],_0x9ef639[_0xb814('0x52')]);})[_0xb814('0x12')](function(_0x4a76bb){_0x22cf27=_0x4a76bb;logger[_0xb814('0xe')]('The\x20Enduser\x20ID\x20is:',_0x22cf27['id']);return getTicket(_0x15f01a,_0x2b23c7,_0x22cf27,_0x2e97cc,_0x9ef639);})[_0xb814('0x12')](function(_0x37866f){if(_0x37866f){logger[_0xb814('0xe')](_0xb814('0x53'));logger[_0xb814('0xe')](_0xb814('0x54'),_0x37866f['id']);switch(_0x15f01a[_0xb814('0x36')]){case _0xb814('0x55'):logger[_0xb814('0xe')](_0xb814('0x4a'),'Displaying\x20ticket\x20to\x20agent...');emit(util['format'](_0xb814('0x56'),_0x4fae23[_0xb814('0x3a')]),_0xb814('0x57'),{'recordId':_0x37866f['id']});break;case _0xb814('0x58'):logger[_0xb814('0xe')](_0xb814('0x4a'),_0xb814('0x59'));emit(util['format'](_0xb814('0x56'),_0x4fae23[_0xb814('0x3a')]),_0xb814('0x5a'),{'uri':util['format'](_0xb814('0x5b'),_0x37866f['id'])});break;default:logger['error'](_0xb814('0x4a'),'Desk\x20account\x20type\x20not\x20recognized');}}})[_0xb814('0x5c')](function(_0x3cf8f8){console['error'](_0x3cf8f8);logger[_0xb814('0x5d')](_0xb814('0x4a'),JSON[_0xb814('0x5e')](_0x3cf8f8));});};exports['outbound']=function(_0x3da050,_0x5f0e58,_0x13bdcf,_0x158893,_0x4aed78,_0x39952d,_0x4a3f84){var _0x539be7,_0x3b9709;_0x39952d[_0xb814('0x1a')]=intUtil[_0xb814('0x47')](_0x39952d['remoteUri']);_0x39952d[_0xb814('0x48')]=intUtil['stripTrailingSlash'](_0x39952d[_0xb814('0x48')]);if(_0x4a3f84&&_0x4a3f84[_0xb814('0x5f')]&&_0x4a3f84['recordingFormat']!==_0xb814('0x60')){logger['info'](_0xb814('0x61'),_0xb814('0x4b'));_0x5f0e58[_0xb814('0x4e')]=util[_0xb814('0x10')](_0xb814('0x4c'),_0x39952d[_0xb814('0x48')],_0x5f0e58[_0xb814('0x4d')],md5(_0x5f0e58[_0xb814('0x4d')]));}headers['Authorization']=getAuth(_0x39952d);return getUser(_0x39952d,_0x158893[_0xb814('0x50')])[_0xb814('0x12')](function(_0x5d71d5){_0x539be7=_0x5d71d5;logger[_0xb814('0xe')](_0xb814('0x51'),_0x539be7['id']);return getEndUser(_0x39952d,_0x5f0e58['destcalleridname'],_0x5f0e58[_0xb814('0x62')]);})['then'](function(_0x48362c){_0x3b9709=_0x48362c;logger[_0xb814('0xe')]('The\x20Enduser\x20ID\x20is:',_0x3b9709['id']);return getTicket(_0x39952d,_0x539be7,_0x3b9709,_0x13bdcf,_0x5f0e58);})[_0xb814('0x12')](function(_0xd1cd8b){if(_0xd1cd8b){logger[_0xb814('0xe')]('Ticket\x20created!');logger[_0xb814('0xe')]('The\x20Ticket\x20ID\x20is:',_0xd1cd8b['id']);switch(_0x39952d[_0xb814('0x36')]){case _0xb814('0x55'):logger[_0xb814('0xe')](_0xb814('0x4a'),_0xb814('0x63'));emit(util[_0xb814('0x10')](_0xb814('0x56'),_0x158893[_0xb814('0x3a')]),_0xb814('0x57'),{'recordId':_0xd1cd8b['id']});break;case'newTab':logger[_0xb814('0xe')](_0xb814('0x4a'),_0xb814('0x59'));emit(util[_0xb814('0x10')](_0xb814('0x56'),_0x158893[_0xb814('0x3a')]),'trigger:browser:url',{'uri':util[_0xb814('0x10')]('%s/agent/tickets/%s',_0x39952d[_0xb814('0x1a')],_0xd1cd8b['id'])});break;default:logger[_0xb814('0x5d')](_0xb814('0x61'),'Desk\x20account\x20type\x20not\x20recognized');}}})[_0xb814('0x5c')](function(_0x579351){logger[_0xb814('0x5d')]('[OUTBOUND]',JSON[_0xb814('0x5e')](_0x579351));});};exports[_0xb814('0x64')]=function(_0xa03cd2,_0x1b024f,_0x3377d4,_0x167d82,_0x143518,_0x4d44e3){var _0x44088d,_0x51ca51;_0x4d44e3[_0xb814('0x1a')]=intUtil[_0xb814('0x47')](_0x4d44e3[_0xb814('0x1a')]);_0x4d44e3[_0xb814('0x48')]=intUtil[_0xb814('0x47')](_0x4d44e3[_0xb814('0x48')]);if(_0x143518&&_0x143518['monitor_format']){logger[_0xb814('0xe')]('['+_0x1b024f[_0xb814('0x65')]['toUpperCase']()+']',_0xb814('0x4b'));_0x1b024f[_0xb814('0x4e')]=util[_0xb814('0x10')](_0xb814('0x4c'),_0x4d44e3[_0xb814('0x48')],_0x1b024f['uniqueid'],md5(_0x1b024f[_0xb814('0x4d')]));}else{_0x1b024f['recordingURL']='';}headers[_0xb814('0x4f')]=getAuth(_0x4d44e3);return getUser(_0x4d44e3)[_0xb814('0x12')](function(_0x2645f6){_0x44088d=_0x2645f6;logger[_0xb814('0xe')](_0xb814('0x51'),_0x44088d['id']);return getEndUser(_0x4d44e3,_0x1b024f[_0xb814('0x66')],_0x1b024f['calleridnum']);})['then'](function(_0x5d064b){_0x51ca51=_0x5d064b;logger[_0xb814('0xe')]('The\x20Enduser\x20ID\x20is:',_0x51ca51['id']);return getTicket(_0x4d44e3,_0x44088d,_0x51ca51,_0x3377d4,_0x1b024f);})[_0xb814('0x12')](function(_0x1d3954){if(_0x1d3954){logger[_0xb814('0xe')]('Ticket\x20created!');logger[_0xb814('0xe')](_0xb814('0x54'),_0x1d3954['id']);}})[_0xb814('0x5c')](function(_0x5aabbe){logger[_0xb814('0x5d')]('['+_0x1b024f[_0xb814('0x65')][_0xb814('0x67')]()+']',JSON[_0xb814('0x5e')](_0x5aabbe));});};
\ No newline at end of file
index 64155a3..c1ff8f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x416f=['contactid',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing',']\x20Enduser\x20created!','forEach','string','picklist','type','nameField','customField','idField','indexOf','ticketType','Subjects','getString','queue','/contacts(','callDirection','assign','Descriptions','Fields','ticketId','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','format','user:%s','emit','trigger:browser:url','stripTrailingSlash','remoteUri','serverUrl','unmanaged','%s/api/data/v9.0/','data7','https://login.microsoftonline.com/%s/oauth2/token','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','moduleCreate','additionalSearchContact',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Dynamics365\x20integration','request-promise','./util','md5','ioredis','../../../../config/logger','dynamics365','../../../../config/environment','redis','defaults','socket.io-emitter','modernAuthentication','tenantId','CloudProvider','data2','resolve','clientId','username','password','clientSecret','access_token','catch','error','toUpperCase',']\x20Wrong\x20credentials!','message','GET','Bearer\x20','then','value','isNil','email','userEmail','internalemailaddress','isdisabled','info',']\x20Agent\x20found\x20','systemuserid',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','length','userId','toLowerCase','destcalleridnum','POST','contacts','/systemusers(','4.0','body','headers','odata-entityid','substring','lastIndexOf','enduserId','outbound','calleridnum','telephone1','&$filter=','replace','%2b'];(function(_0x40ac5e,_0x2de228){var _0x2839d6=function(_0x123d47){while(--_0x123d47){_0x40ac5e['push'](_0x40ac5e['shift']());}};_0x2839d6(++_0x2de228);}(_0x416f,0x17a));var _0xf416=function(_0x2bd549,_0x5e8c84){_0x2bd549=_0x2bd549-0x0;var _0x7dc68=_0x416f[_0x2bd549];return _0x7dc68;};'use strict';var _=require('lodash');var rp=require(_0xf416('0x0'));var util=require('util');var intUtil=require(_0xf416('0x1'));var md5=require(_0xf416('0x2'));var Redis=require(_0xf416('0x3'));var logger=require(_0xf416('0x4'))(_0xf416('0x5'));var config=require(_0xf416('0x6'));config[_0xf416('0x7')]=_[_0xf416('0x8')](config[_0xf416('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0xf416('0x9'))(new Redis(config[_0xf416('0x7')]));function getAuthToken(_0x44331b,_0x37d8bf,_0x10993d){if(_0x44331b[_0xf416('0xa')]){_0x44331b['remoteUri']=_0x44331b['CloudProvider']['data7'];_0x44331b[_0xf416('0xb')]=_0x44331b[_0xf416('0xc')][_0xf416('0xd')];return Promise[_0xf416('0xe')](_0x44331b[_0xf416('0xc')]['data5']);}var _0x155b3a={'method':'POST','uri':_0x37d8bf,'form':{'client_id':_0x44331b[_0xf416('0xf')],'resource':_0x44331b['remoteUri'],'username':_0x44331b[_0xf416('0x10')],'password':_0x44331b[_0xf416('0x11')],'grant_type':_0xf416('0x11'),'client_secret':_0x44331b[_0xf416('0x12')]},'json':!![]};return rp(_0x155b3a)['then'](function(_0x196101){return _0x196101[_0xf416('0x13')];})[_0xf416('0x14')](function(_0x25c62c){logger[_0xf416('0x15')]('['+[_0x10993d[_0xf416('0x16')]()]+_0xf416('0x17'));return _0x25c62c[_0xf416('0x18')];});}function getUser(_0x3f1e0e,_0x2ec8bb,_0x5298b9,_0x377c76,_0x1f2db9,_0x37a6f6){return new Promise(function(_0x20586d,_0x27e035){return getAuthToken(_0x2ec8bb,_0x377c76,_0x37a6f6)['then'](function(_0x9354f4){var _0x22e53a={'method':_0xf416('0x19'),'uri':_0x1f2db9+'systemusers?$select=internalemailaddress,isdisabled,systemuserid','headers':{'Authorization':_0xf416('0x1a')+_0x9354f4,'OData-Version':'4.0'},'json':!![]};return rp(_0x22e53a);})[_0xf416('0x1b')](function(_0x2041f9){var _0xee91a=_0x2041f9[_0xf416('0x1c')];var _0x211949=![];var _0x348a57=null;if(!_[_0xf416('0x1d')](_0x5298b9)){if(intUtil['validateEmail'](_0x5298b9[_0xf416('0x1e')])){_0x3f1e0e[_0xf416('0x1f')]=_0x5298b9['email'];for(_0x348a57=0x0;_0x348a57<_0xee91a['length'];_0x348a57++){if(_0xee91a[_0x348a57][_0xf416('0x20')]===_0x5298b9[_0xf416('0x1e')]&&!_0xee91a[_0x348a57][_0xf416('0x21')]){_0x211949=!![];logger[_0xf416('0x22')]('['+[_0x37a6f6['toUpperCase']()]+_0xf416('0x23')+_0xee91a[_0x348a57][_0xf416('0x24')]+'!');_0x3f1e0e['userId']=_0xee91a[_0x348a57][_0xf416('0x24')];}}}}if(!_0x211949){logger[_0xf416('0x22')]('['+[_0x37a6f6[_0xf416('0x16')]()]+_0xf416('0x25'));_0x3f1e0e[_0xf416('0x1f')]=_0x2ec8bb[_0xf416('0x10')];for(_0x348a57=0x0;_0x348a57<_0xee91a[_0xf416('0x26')];_0x348a57++){if(_0xee91a[_0x348a57][_0xf416('0x20')]===_0x2ec8bb['username']){_0x3f1e0e[_0xf416('0x27')]=_0xee91a[_0x348a57][_0xf416('0x24')];}}}_0x20586d(_0x3f1e0e);})[_0xf416('0x14')](function(_0x53dcc4){_0x27e035(_0x53dcc4[_0xf416('0x18')]);});});}function createEndUser(_0x252d32,_0x2a55d1,_0xfb1ca0,_0x5913a1,_0x16776d,_0x2bb4e5,_0x2e6f27){return new Promise(function(_0x24cbaa,_0x12adf0){return getAuthToken(_0x2a55d1,_0xfb1ca0,_0x2bb4e5)[_0xf416('0x1b')](function(_0x1d87d8){var _0x44d681=_0x2bb4e5[_0xf416('0x28')]()==='outbound'?_0x16776d[_0xf416('0x29')]:_0x16776d['calleridnum'];var _0x14e306={'method':_0xf416('0x2a'),'uri':_0x5913a1+_0xf416('0x2b'),'body':{'fullname':_0x44d681,'firstname':_0x44d681,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0xf416('0x2c')+_0x252d32[_0xf416('0x27')]+')'},'headers':{'Authorization':_0xf416('0x1a')+_0x1d87d8,'OData-Version':_0xf416('0x2d')},'json':!![],'resolveWithFullResponse':!![]};_0x14e306[_0xf416('0x2e')][_0x2e6f27]=_0x44d681;return rp(_0x14e306);})[_0xf416('0x1b')](function(_0x18f133){var _0x4edec5=_0x18f133[_0xf416('0x2f')][_0xf416('0x30')];var _0x401179=_0x4edec5[_0xf416('0x31')](_0x4edec5[_0xf416('0x32')]('(')+0x1,_0x4edec5[_0xf416('0x32')](')'));_0x252d32[_0xf416('0x33')]=_0x401179;_0x24cbaa(_0x252d32);})['catch'](function(_0xbc432f){_0x12adf0(_0xbc432f[_0xf416('0x18')]);});});}function getEndUser(_0x406325,_0x1d316d,_0x4b10ba,_0x2f7a14,_0x6bc870,_0x1d42c5,_0x545437,_0x23d847){var _0x9f8644=_0x1d42c5[_0xf416('0x28')]()===_0xf416('0x34')?_0x6bc870['destcalleridnum']:_0x6bc870[_0xf416('0x35')];return getAuthToken(_0x1d316d,_0x4b10ba,_0x1d42c5)[_0xf416('0x1b')](function(_0x5b4491){_0x23d847=_0x23d847?_0x23d847:_0xf416('0x36');var _0x1d059a={'method':'GET','uri':_0x2f7a14+'contacts?$select='+_0x23d847+_0xf416('0x37')+_0x23d847+'\x20eq\x20\x27'+_0x9f8644[_0xf416('0x38')]('+',_0xf416('0x39'))+'\x27','headers':{'Authorization':_0xf416('0x1a')+_0x5b4491,'If-None-Match':null,'OData-Version':_0xf416('0x2d')},'json':!![]};return rp(_0x1d059a);})[_0xf416('0x1b')](function(_0x463e35){var _0x14215c=![];if(!_0x463e35)return _0x14215c;var _0x287b53=_0x463e35[_0xf416('0x1c')];for(var _0x4c2f4a=0x0;_0x4c2f4a<_0x287b53[_0xf416('0x26')];_0x4c2f4a++){if(_0x287b53[_0x4c2f4a][_0x23d847]===_0x9f8644){_0x14215c=!![];_0x406325[_0xf416('0x33')]=_0x287b53[_0x4c2f4a][_0xf416('0x3a')];}}return _0x14215c;})['then'](function(_0x210c7e){if(_0x210c7e)return _0x406325;if(_0x545437==='nothing'){logger[_0xf416('0x22')]('['+[_0x1d42c5[_0xf416('0x16')]()]+_0xf416('0x3b'));return _0x406325;}return createEndUser(_0x406325,_0x1d316d,_0x4b10ba,_0x2f7a14,_0x6bc870,_0x1d42c5,_0x23d847)[_0xf416('0x1b')](function(_0x4490bb){logger[_0xf416('0x22')]('['+[_0x1d42c5[_0xf416('0x16')]()]+_0xf416('0x3c'),_0x4490bb[_0xf416('0x33')]);return _0x4490bb;});});}function getCustomFields(_0x1f4610,_0x160663,_0x4ef258){var _0xdd2d1a={};if(_0x1f4610[_0xf416('0x26')]>0x0){_[_0xf416('0x3d')](_0x1f4610,function(_0x35f426){if(_['includes']([_0xf416('0x3e'),_0xf416('0x3f')],_0x35f426[_0xf416('0x40')])&&_0x35f426[_0xf416('0x41')]&&!_0x35f426[_0xf416('0x42')]){var _0x2e5d90=_0x35f426[_0xf416('0x43')]['toLowerCase']();var _0x2dc41e=_0x2e5d90[_0xf416('0x31')](0x0,_0x2e5d90[_0xf416('0x44')]('_'));var _0x177b72=_0x2e5d90['substring'](_0x2e5d90[_0xf416('0x44')]('_')+0x1);if(_0x2dc41e===_0x4ef258){_0xdd2d1a[_0x177b72]=_0x35f426['content'];}}});}return _0xdd2d1a;}function getTicket(_0x21f077,_0x1e79ab,_0x45503b,_0x39fff5,_0x5b09c0,_0x52f121,_0x6f9dbd){return new Promise(function(_0x2b70ef,_0x2a645a){var _0x5b5d23;return getAuthToken(_0x1e79ab,_0x45503b,_0x6f9dbd)[_0xf416('0x1b')](function(_0x34d540){if(_0x52f121[_0xf416('0x45')]==='incident'){_0x5b5d23={'method':'POST','uri':_0x39fff5+'incidents','body':Object['assign']({},{'title':intUtil['getString'](_0x52f121[_0xf416('0x46')],_0x5b09c0,'\x20'),'description':intUtil[_0xf416('0x47')](_0x52f121['Descriptions'],_0x5b09c0,'\x0a'),'customerid_contact@odata.bind':_0x21f077[_0xf416('0x33')]?'/contacts('+_0x21f077[_0xf416('0x33')]+')':undefined,'ownerid@odata.bind':'/systemusers('+_0x21f077[_0xf416('0x27')]+')','caseorigincode':'1'},getCustomFields(_0x52f121['Fields'],_0x5b09c0,_0x52f121['ticketType'])),'headers':{'Authorization':_0xf416('0x1a')+_0x34d540,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}if(_0x52f121['ticketType']==='phonecall'){var _0xe75c7b=_0x21f077['enduserId']?[{'partyid_systemuser@odata.bind':_0xf416('0x2c')+_0x21f077[_0xf416('0x27')]+')','participationtypemask':_0x21f077['callDirection']===_0xf416('0x48')?0x2:0x1},{'partyid_contact@odata.bind':_0xf416('0x49')+_0x21f077[_0xf416('0x33')]+')','participationtypemask':_0x21f077['callDirection']===_0xf416('0x48')?0x1:0x2}]:[{'partyid_systemuser@odata.bind':_0xf416('0x2c')+_0x21f077[_0xf416('0x27')]+')','participationtypemask':_0x21f077[_0xf416('0x4a')]===_0xf416('0x48')?0x2:0x1}];_0x5b5d23={'method':'POST','uri':_0x39fff5+'phonecalls','body':Object[_0xf416('0x4b')]({},{'subject':intUtil[_0xf416('0x47')](_0x52f121[_0xf416('0x46')],_0x5b09c0,'\x20'),'phonenumber':String(_0x5b09c0[_0xf416('0x35')]),'description':intUtil[_0xf416('0x47')](_0x52f121[_0xf416('0x4c')],_0x5b09c0,'\x0a'),'regardingobjectid_contact@odata.bind':_0x21f077[_0xf416('0x33')]?'/contacts('+_0x21f077['enduserId']+')':undefined,'ownerid@odata.bind':_0xf416('0x2c')+_0x21f077[_0xf416('0x27')]+')','directioncode':_0x21f077[_0xf416('0x4a')]===_0xf416('0x48')?![]:!![],'phonecall_activity_parties':_0xe75c7b},getCustomFields(_0x52f121[_0xf416('0x4d')],_0x5b09c0,_0x52f121[_0xf416('0x45')])),'headers':{'Authorization':_0xf416('0x1a')+_0x34d540,'OData-Version':_0xf416('0x2d')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x5b5d23);})[_0xf416('0x1b')](function(_0x2c95d1){var _0x18962f=_0x2c95d1['headers'][_0xf416('0x30')];var _0x36960a=_0x18962f[_0xf416('0x31')](_0x18962f[_0xf416('0x32')]('(')+0x1,_0x18962f[_0xf416('0x32')](')'));_0x21f077[_0xf416('0x4e')]=_0x36960a;_0x2b70ef(_0x21f077);})[_0xf416('0x14')](function(_0x31c431){_0x2a645a(_0x31c431['message']);});});}function emit(_0x2ff6aa,_0x169662,_0x6c3864,_0x446361){var _0x4ba0ac={'uri':util['format'](_0xf416('0x4f'),_0x2ff6aa,_0x6c3864,_0x446361)};io['to'](util[_0xf416('0x50')](_0xf416('0x51'),_0x169662))[_0xf416('0x52')](_0xf416('0x53'),_0x4ba0ac);}exports['cs']=function(_0x25e924,_0x25ccbb,_0x738774,_0x5c70d,_0x15fbb2,_0xcd0aa9,_0x2af60c,_0x1a2415){var _0x52696e={};_0xcd0aa9['remoteUri']=_0xcd0aa9[_0xf416('0xa')]?intUtil[_0xf416('0x54')](_0xcd0aa9[_0xf416('0xc')]['data7']):intUtil[_0xf416('0x54')](_0xcd0aa9[_0xf416('0x55')]);_0xcd0aa9[_0xf416('0x56')]=intUtil[_0xf416('0x54')](_0xcd0aa9['serverUrl']);_0x52696e[_0xf416('0x4a')]=_0x1a2415===_0xf416('0x48')||_0x1a2415===_0xf416('0x57')?_0xf416('0x48'):_0xf416('0x34');var _0x5ebe57=_0xcd0aa9[_0xf416('0xa')]?util[_0xf416('0x50')](_0xf416('0x58'),_0xcd0aa9[_0xf416('0xc')][_0xf416('0x59')]):util[_0xf416('0x50')](_0xf416('0x58'),_0xcd0aa9[_0xf416('0x55')]);var _0x461d0d=util[_0xf416('0x50')](_0xf416('0x5a'),_0xcd0aa9[_0xf416('0xb')]);var _0x5ec0de=util[_0xf416('0x50')](_0xf416('0x5b'),_0xcd0aa9[_0xf416('0x56')],_0x25ccbb[_0xf416('0x5c')],md5(_0x25ccbb[_0xf416('0x5c')]));if(_0x15fbb2&&_0x15fbb2[_0xf416('0x5d')]){logger[_0xf416('0x22')](_0xf416('0x5e'),_0xf416('0x5f'));_0x25ccbb[_0xf416('0x60')]=_0x5ec0de;}else if(_0x2af60c&&_0x2af60c['recordingFormat']&&_0x2af60c[_0xf416('0x61')]!==_0xf416('0x62')){logger['info'](_0xf416('0x63'),_0xf416('0x5f'));_0x25ccbb[_0xf416('0x60')]=_0x5ec0de;}else{_0x25ccbb[_0xf416('0x60')]='';}return getUser(_0x52696e,_0xcd0aa9,_0x5c70d,_0x461d0d,_0x5ebe57,_0x1a2415)['then'](function(_0xabdd6){logger['info']('['+_0x1a2415[_0xf416('0x16')]()+']\x20The\x20User\x20ID\x20is:',_0xabdd6[_0xf416('0x27')]);logger['info']('['+_0x1a2415[_0xf416('0x16')]()+']\x20The\x20User\x20email\x20is:',_0xabdd6[_0xf416('0x1f')]);return getEndUser(_0xabdd6,_0xcd0aa9,_0x461d0d,_0x5ebe57,_0x25ccbb,_0x1a2415,_0x738774[_0xf416('0x64')],_0x738774[_0xf416('0x65')]);})[_0xf416('0x1b')](function(_0x4b0237){logger[_0xf416('0x22')]('['+_0x1a2415[_0xf416('0x16')]()+_0xf416('0x66'),_0x4b0237[_0xf416('0x33')]);logger['info']('['+_0x1a2415[_0xf416('0x16')]()+_0xf416('0x67'),_0x25ccbb[_0xf416('0x35')]);return getTicket(_0x4b0237,_0xcd0aa9,_0x461d0d,_0x5ebe57,_0x25ccbb,_0x738774,_0x1a2415);})['then'](function(_0x53547c){logger[_0xf416('0x22')](util[_0xf416('0x50')]('['+_0x1a2415[_0xf416('0x16')]()+_0xf416('0x68'),_0x738774['ticketType'],_0x53547c[_0xf416('0x4e')]));logger['info'](util[_0xf416('0x50')]('['+_0x1a2415[_0xf416('0x16')]()+_0xf416('0x69'),_0x1a2415));if(_0x1a2415!=='unmanaged'&&_0x738774['openNewTab']){logger['info']('['+_0x1a2415[_0xf416('0x16')]()+']',_0xf416('0x6a'));emit(_0xcd0aa9[_0xf416('0x55')],_0x5c70d[_0xf416('0x6b')],_0x738774[_0xf416('0x45')],_0x53547c[_0xf416('0x4e')]);}})['catch'](function(_0x1af977){logger[_0xf416('0x15')]('['+_0x1a2415[_0xf416('0x16')]()+_0xf416('0x6c'),_0x1af977[_0xf416('0x18')]);console[_0xf416('0x15')]('Error\x20running\x20Dynamics365\x20integration',_0x1af977);});};
\ No newline at end of file
+var _0x2ae6=['userEmail','length','internalemailaddress','isdisabled','info','toUpperCase',']\x20Agent\x20found\x20','userId','systemuserid','toLowerCase','outbound','destcalleridnum','contacts','/systemusers(','4.0','body','odata-entityid','substring','lastIndexOf','enduserId','telephone1','contacts?$select=','&$filter=','replace','%2b','contactid','nothing','forEach','picklist','nameField','customField','idField','indexOf','content','ticketType','incident','POST','incidents','assign','getString','Subjects','Descriptions','/contacts(','phonecall','callDirection','queue','headers','ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','user:%s','emit','trigger:browser:url','remoteUri','stripTrailingSlash','serverUrl','unmanaged','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','recordingURL',']\x20The\x20User\x20ID\x20is:','moduleCreate',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20Call\x20direction:\x20%s','openNewTab','Displaying\x20call\x20in\x20a\x20new\x20tab...','name','error','Error\x20running\x20Dynamics365\x20integration','lodash','request-promise','util','./util','md5','../../../../config/logger','dynamics365','../../../../config/environment','redis','localhost','socket.io-emitter','modernAuthentication','data7','tenantId','CloudProvider','resolve','data5','clientId','username','password','then','catch',']\x20Wrong\x20credentials!','message','GET','Bearer\x20','value','validateEmail','email'];(function(_0x4392af,_0xec5afe){var _0x9fa8eb=function(_0x41d7a4){while(--_0x41d7a4){_0x4392af['push'](_0x4392af['shift']());}};_0x9fa8eb(++_0xec5afe);}(_0x2ae6,0x11e));var _0x62ae=function(_0x352e09,_0x37a7da){_0x352e09=_0x352e09-0x0;var _0x1b7094=_0x2ae6[_0x352e09];return _0x1b7094;};'use strict';var _=require(_0x62ae('0x0'));var rp=require(_0x62ae('0x1'));var util=require(_0x62ae('0x2'));var intUtil=require(_0x62ae('0x3'));var md5=require(_0x62ae('0x4'));var Redis=require('ioredis');var logger=require(_0x62ae('0x5'))(_0x62ae('0x6'));var config=require(_0x62ae('0x7'));config[_0x62ae('0x8')]=_['defaults'](config[_0x62ae('0x8')],{'host':_0x62ae('0x9'),'port':0x18eb});var io=require(_0x62ae('0xa'))(new Redis(config['redis']));function getAuthToken(_0x17df5d,_0x22136f,_0x5391d0){if(_0x17df5d[_0x62ae('0xb')]){_0x17df5d['remoteUri']=_0x17df5d['CloudProvider'][_0x62ae('0xc')];_0x17df5d[_0x62ae('0xd')]=_0x17df5d[_0x62ae('0xe')]['data2'];return Promise[_0x62ae('0xf')](_0x17df5d[_0x62ae('0xe')][_0x62ae('0x10')]);}var _0x1b7aaa={'method':'POST','uri':_0x22136f,'form':{'client_id':_0x17df5d[_0x62ae('0x11')],'resource':_0x17df5d['remoteUri'],'username':_0x17df5d[_0x62ae('0x12')],'password':_0x17df5d[_0x62ae('0x13')],'grant_type':_0x62ae('0x13'),'client_secret':_0x17df5d['clientSecret']},'json':!![]};return rp(_0x1b7aaa)[_0x62ae('0x14')](function(_0x4218db){return _0x4218db['access_token'];})[_0x62ae('0x15')](function(_0x53f1e0){logger['error']('['+[_0x5391d0['toUpperCase']()]+_0x62ae('0x16'));return _0x53f1e0[_0x62ae('0x17')];});}function getUser(_0x1e8c7a,_0x4e519a,_0x59aee2,_0x394500,_0x3d29ab,_0x361281){return new Promise(function(_0x17cc9c,_0x28921b){return getAuthToken(_0x4e519a,_0x394500,_0x361281)['then'](function(_0x4aeb30){var _0x4bfbb0={'method':_0x62ae('0x18'),'uri':_0x3d29ab+'systemusers?$select=internalemailaddress,isdisabled,systemuserid','headers':{'Authorization':_0x62ae('0x19')+_0x4aeb30,'OData-Version':'4.0'},'json':!![]};return rp(_0x4bfbb0);})['then'](function(_0xdb0cee){var _0x40633a=_0xdb0cee[_0x62ae('0x1a')];var _0x578bbd=![];var _0x4a713f=null;if(!_['isNil'](_0x59aee2)){if(intUtil[_0x62ae('0x1b')](_0x59aee2[_0x62ae('0x1c')])){_0x1e8c7a[_0x62ae('0x1d')]=_0x59aee2['email'];for(_0x4a713f=0x0;_0x4a713f<_0x40633a[_0x62ae('0x1e')];_0x4a713f++){if(_0x40633a[_0x4a713f][_0x62ae('0x1f')]===_0x59aee2[_0x62ae('0x1c')]&&!_0x40633a[_0x4a713f][_0x62ae('0x20')]){_0x578bbd=!![];logger[_0x62ae('0x21')]('['+[_0x361281[_0x62ae('0x22')]()]+_0x62ae('0x23')+_0x40633a[_0x4a713f]['systemuserid']+'!');_0x1e8c7a[_0x62ae('0x24')]=_0x40633a[_0x4a713f]['systemuserid'];}}}}if(!_0x578bbd){logger[_0x62ae('0x21')]('['+[_0x361281[_0x62ae('0x22')]()]+']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');_0x1e8c7a[_0x62ae('0x1d')]=_0x4e519a[_0x62ae('0x12')];for(_0x4a713f=0x0;_0x4a713f<_0x40633a['length'];_0x4a713f++){if(_0x40633a[_0x4a713f][_0x62ae('0x1f')]===_0x4e519a[_0x62ae('0x12')]){_0x1e8c7a[_0x62ae('0x24')]=_0x40633a[_0x4a713f][_0x62ae('0x25')];}}}_0x17cc9c(_0x1e8c7a);})[_0x62ae('0x15')](function(_0xfb8ae){_0x28921b(_0xfb8ae['message']);});});}function createEndUser(_0x19833a,_0x5d89ee,_0x17c2b5,_0xdd960f,_0x4f7f0e,_0x22ed85,_0x3e6c30){return new Promise(function(_0x3e8794,_0x5154be){return getAuthToken(_0x5d89ee,_0x17c2b5,_0x22ed85)[_0x62ae('0x14')](function(_0xd1ae9){var _0x15b254=_0x22ed85[_0x62ae('0x26')]()===_0x62ae('0x27')?_0x4f7f0e[_0x62ae('0x28')]:_0x4f7f0e['calleridnum'];var _0x302cdd={'method':'POST','uri':_0xdd960f+_0x62ae('0x29'),'body':{'fullname':_0x15b254,'firstname':_0x15b254,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x62ae('0x2a')+_0x19833a[_0x62ae('0x24')]+')'},'headers':{'Authorization':_0x62ae('0x19')+_0xd1ae9,'OData-Version':_0x62ae('0x2b')},'json':!![],'resolveWithFullResponse':!![]};_0x302cdd[_0x62ae('0x2c')][_0x3e6c30]=_0x15b254;return rp(_0x302cdd);})['then'](function(_0x22b50a){var _0x284a4b=_0x22b50a['headers'][_0x62ae('0x2d')];var _0x3aedfb=_0x284a4b[_0x62ae('0x2e')](_0x284a4b[_0x62ae('0x2f')]('(')+0x1,_0x284a4b[_0x62ae('0x2f')](')'));_0x19833a[_0x62ae('0x30')]=_0x3aedfb;_0x3e8794(_0x19833a);})[_0x62ae('0x15')](function(_0x1bf6ec){_0x5154be(_0x1bf6ec[_0x62ae('0x17')]);});});}function getEndUser(_0x5f22e0,_0x5ea840,_0x1d626e,_0x22db26,_0x10f62e,_0xb69e4a,_0x46be64,_0x329af5){var _0x43a612=_0xb69e4a[_0x62ae('0x26')]()===_0x62ae('0x27')?_0x10f62e[_0x62ae('0x28')]:_0x10f62e['calleridnum'];return getAuthToken(_0x5ea840,_0x1d626e,_0xb69e4a)[_0x62ae('0x14')](function(_0x13bcc6){_0x329af5=_0x329af5?_0x329af5:_0x62ae('0x31');var _0x33fbb9={'method':_0x62ae('0x18'),'uri':_0x22db26+_0x62ae('0x32')+_0x329af5+_0x62ae('0x33')+_0x329af5+'\x20eq\x20\x27'+_0x43a612[_0x62ae('0x34')]('+',_0x62ae('0x35'))+'\x27','headers':{'Authorization':_0x62ae('0x19')+_0x13bcc6,'If-None-Match':null,'OData-Version':_0x62ae('0x2b')},'json':!![]};return rp(_0x33fbb9);})['then'](function(_0x33efb6){var _0x41419e=![];if(!_0x33efb6)return _0x41419e;var _0x4336a7=_0x33efb6['value'];for(var _0x5358a2=0x0;_0x5358a2<_0x4336a7[_0x62ae('0x1e')];_0x5358a2++){if(_0x4336a7[_0x5358a2][_0x329af5]===_0x43a612){_0x41419e=!![];_0x5f22e0[_0x62ae('0x30')]=_0x4336a7[_0x5358a2][_0x62ae('0x36')];}}return _0x41419e;})[_0x62ae('0x14')](function(_0x2abfe7){if(_0x2abfe7)return _0x5f22e0;if(_0x46be64===_0x62ae('0x37')){logger['info']('['+[_0xb69e4a['toUpperCase']()]+']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing');return _0x5f22e0;}return createEndUser(_0x5f22e0,_0x5ea840,_0x1d626e,_0x22db26,_0x10f62e,_0xb69e4a,_0x329af5)[_0x62ae('0x14')](function(_0x5d43b1){logger[_0x62ae('0x21')]('['+[_0xb69e4a[_0x62ae('0x22')]()]+']\x20Enduser\x20created!',_0x5d43b1[_0x62ae('0x30')]);return _0x5d43b1;});});}function getCustomFields(_0x2e76d6,_0x454e10,_0x219167){var _0x503dd6={};if(_0x2e76d6['length']>0x0){_[_0x62ae('0x38')](_0x2e76d6,function(_0x301949){if(_['includes'](['string',_0x62ae('0x39')],_0x301949['type'])&&_0x301949[_0x62ae('0x3a')]&&!_0x301949[_0x62ae('0x3b')]){var _0x2590ae=_0x301949[_0x62ae('0x3c')][_0x62ae('0x26')]();var _0x41e7cc=_0x2590ae[_0x62ae('0x2e')](0x0,_0x2590ae[_0x62ae('0x3d')]('_'));var _0x1e34ea=_0x2590ae[_0x62ae('0x2e')](_0x2590ae[_0x62ae('0x3d')]('_')+0x1);if(_0x41e7cc===_0x219167){_0x503dd6[_0x1e34ea]=_0x301949[_0x62ae('0x3e')];}}});}return _0x503dd6;}function getTicket(_0x203ce5,_0x5cd97d,_0x97d6f9,_0x40ee52,_0x44e1b0,_0x19321b,_0x28a6f3){return new Promise(function(_0x5e8df2,_0x373d9f){var _0x319a40;return getAuthToken(_0x5cd97d,_0x97d6f9,_0x28a6f3)[_0x62ae('0x14')](function(_0x578a8a){if(_0x19321b[_0x62ae('0x3f')]===_0x62ae('0x40')){_0x319a40={'method':_0x62ae('0x41'),'uri':_0x40ee52+_0x62ae('0x42'),'body':Object[_0x62ae('0x43')]({},{'title':intUtil[_0x62ae('0x44')](_0x19321b[_0x62ae('0x45')],_0x44e1b0,'\x20'),'description':intUtil[_0x62ae('0x44')](_0x19321b[_0x62ae('0x46')],_0x44e1b0,'\x0a'),'customerid_contact@odata.bind':_0x203ce5['enduserId']?_0x62ae('0x47')+_0x203ce5[_0x62ae('0x30')]+')':undefined,'ownerid@odata.bind':_0x62ae('0x2a')+_0x203ce5[_0x62ae('0x24')]+')','caseorigincode':'1'},getCustomFields(_0x19321b['Fields'],_0x44e1b0,_0x19321b[_0x62ae('0x3f')])),'headers':{'Authorization':_0x62ae('0x19')+_0x578a8a,'OData-Version':_0x62ae('0x2b')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x19321b[_0x62ae('0x3f')]===_0x62ae('0x48')){var _0x28dec1=_0x203ce5[_0x62ae('0x30')]?[{'partyid_systemuser@odata.bind':_0x62ae('0x2a')+_0x203ce5[_0x62ae('0x24')]+')','participationtypemask':_0x203ce5[_0x62ae('0x49')]===_0x62ae('0x4a')?0x2:0x1},{'partyid_contact@odata.bind':'/contacts('+_0x203ce5['enduserId']+')','participationtypemask':_0x203ce5[_0x62ae('0x49')]===_0x62ae('0x4a')?0x1:0x2}]:[{'partyid_systemuser@odata.bind':'/systemusers('+_0x203ce5[_0x62ae('0x24')]+')','participationtypemask':_0x203ce5['callDirection']==='queue'?0x2:0x1}];_0x319a40={'method':'POST','uri':_0x40ee52+'phonecalls','body':Object[_0x62ae('0x43')]({},{'subject':intUtil['getString'](_0x19321b['Subjects'],_0x44e1b0,'\x20'),'phonenumber':String(_0x44e1b0['calleridnum']),'description':intUtil[_0x62ae('0x44')](_0x19321b[_0x62ae('0x46')],_0x44e1b0,'\x0a'),'regardingobjectid_contact@odata.bind':_0x203ce5[_0x62ae('0x30')]?_0x62ae('0x47')+_0x203ce5[_0x62ae('0x30')]+')':undefined,'ownerid@odata.bind':_0x62ae('0x2a')+_0x203ce5[_0x62ae('0x24')]+')','directioncode':_0x203ce5[_0x62ae('0x49')]==='queue'?![]:!![],'phonecall_activity_parties':_0x28dec1},getCustomFields(_0x19321b['Fields'],_0x44e1b0,_0x19321b[_0x62ae('0x3f')])),'headers':{'Authorization':_0x62ae('0x19')+_0x578a8a,'OData-Version':_0x62ae('0x2b')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x319a40);})[_0x62ae('0x14')](function(_0x5f00c2){var _0x1b9830=_0x5f00c2[_0x62ae('0x4b')]['odata-entityid'];var _0x2a3c89=_0x1b9830[_0x62ae('0x2e')](_0x1b9830[_0x62ae('0x2f')]('(')+0x1,_0x1b9830[_0x62ae('0x2f')](')'));_0x203ce5[_0x62ae('0x4c')]=_0x2a3c89;_0x5e8df2(_0x203ce5);})['catch'](function(_0x523069){_0x373d9f(_0x523069[_0x62ae('0x17')]);});});}function emit(_0x5f0b56,_0x17e7de,_0x1bfc27,_0x40cd30){var _0x528749={'uri':util[_0x62ae('0x4d')](_0x62ae('0x4e'),_0x5f0b56,_0x1bfc27,_0x40cd30)};io['to'](util[_0x62ae('0x4d')](_0x62ae('0x4f'),_0x17e7de))[_0x62ae('0x50')](_0x62ae('0x51'),_0x528749);}exports['cs']=function(_0x1a943b,_0x1b253a,_0x3e1878,_0x2d2709,_0x51708b,_0x17eb0e,_0xc35403,_0x535be1){var _0x1aa1c3={};_0x17eb0e[_0x62ae('0x52')]=_0x17eb0e[_0x62ae('0xb')]?intUtil[_0x62ae('0x53')](_0x17eb0e['CloudProvider'][_0x62ae('0xc')]):intUtil['stripTrailingSlash'](_0x17eb0e[_0x62ae('0x52')]);_0x17eb0e[_0x62ae('0x54')]=intUtil[_0x62ae('0x53')](_0x17eb0e[_0x62ae('0x54')]);_0x1aa1c3[_0x62ae('0x49')]=_0x535be1===_0x62ae('0x4a')||_0x535be1===_0x62ae('0x55')?_0x62ae('0x4a'):'outbound';var _0x36c93e=_0x17eb0e['modernAuthentication']?util['format'](_0x62ae('0x56'),_0x17eb0e['CloudProvider'][_0x62ae('0xc')]):util[_0x62ae('0x4d')](_0x62ae('0x56'),_0x17eb0e[_0x62ae('0x52')]);var _0x4bbd8f=util['format'](_0x62ae('0x57'),_0x17eb0e[_0x62ae('0xd')]);var _0x9bdab=util[_0x62ae('0x4d')](_0x62ae('0x58'),_0x17eb0e[_0x62ae('0x54')],_0x1b253a[_0x62ae('0x59')],md5(_0x1b253a['uniqueid']));if(_0x51708b&&_0x51708b['monitor_format']){logger['info']('[QUEUE]','Recording\x20is\x20enabled!');_0x1b253a['recordingURL']=_0x9bdab;}else if(_0xc35403&&_0xc35403['recordingFormat']&&_0xc35403[_0x62ae('0x5a')]!==_0x62ae('0x5b')){logger['info'](_0x62ae('0x5c'),_0x62ae('0x5d'));_0x1b253a[_0x62ae('0x5e')]=_0x9bdab;}else{_0x1b253a[_0x62ae('0x5e')]='';}return getUser(_0x1aa1c3,_0x17eb0e,_0x2d2709,_0x4bbd8f,_0x36c93e,_0x535be1)[_0x62ae('0x14')](function(_0x54c637){logger[_0x62ae('0x21')]('['+_0x535be1['toUpperCase']()+_0x62ae('0x5f'),_0x54c637[_0x62ae('0x24')]);logger['info']('['+_0x535be1[_0x62ae('0x22')]()+']\x20The\x20User\x20email\x20is:',_0x54c637['userEmail']);return getEndUser(_0x54c637,_0x17eb0e,_0x4bbd8f,_0x36c93e,_0x1b253a,_0x535be1,_0x3e1878[_0x62ae('0x60')],_0x3e1878['additionalSearchContact']);})[_0x62ae('0x14')](function(_0x2121af){logger[_0x62ae('0x21')]('['+_0x535be1[_0x62ae('0x22')]()+_0x62ae('0x61'),_0x2121af[_0x62ae('0x30')]);logger['info']('['+_0x535be1[_0x62ae('0x22')]()+_0x62ae('0x62'),_0x1b253a['calleridnum']);return getTicket(_0x2121af,_0x17eb0e,_0x4bbd8f,_0x36c93e,_0x1b253a,_0x3e1878,_0x535be1);})[_0x62ae('0x14')](function(_0x3f3376){logger[_0x62ae('0x21')](util[_0x62ae('0x4d')]('['+_0x535be1[_0x62ae('0x22')]()+']\x20The\x20%s\x20ID\x20is:\x20%s',_0x3e1878['ticketType'],_0x3f3376[_0x62ae('0x4c')]));logger[_0x62ae('0x21')](util[_0x62ae('0x4d')]('['+_0x535be1[_0x62ae('0x22')]()+_0x62ae('0x63'),_0x535be1));if(_0x535be1!==_0x62ae('0x55')&&_0x3e1878[_0x62ae('0x64')]){logger[_0x62ae('0x21')]('['+_0x535be1[_0x62ae('0x22')]()+']',_0x62ae('0x65'));emit(_0x17eb0e[_0x62ae('0x52')],_0x2d2709[_0x62ae('0x66')],_0x3e1878['ticketType'],_0x3f3376[_0x62ae('0x4c')]);}})[_0x62ae('0x15')](function(_0xd6e6f8){logger[_0x62ae('0x67')]('['+_0x535be1[_0x62ae('0x22')]()+']\x20Error\x20running\x20Dynamics365\x20integration',_0xd6e6f8[_0x62ae('0x17')]);console[_0x62ae('0x67')](_0x62ae('0x68'),_0xd6e6f8);});};
\ No newline at end of file
index d127519..99aea0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd75=['type','nameField','customField','toLowerCase','content','toString','idField','push','variable','variableName','customVariable','Variable','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch','error','outbound','recordingFormat','none','Recording\x20is\x20enabled!','Authorization','The\x20User\x20ID\x20is:','destcalleridname','[OUTBOUND]','lastevent','toUpperCase','lodash','request-promise','md5','util','./util','freshdesk','defaults','localhost','socket.io-emitter','application/json','emit','info','merge','format','Caller\x20-\x20%s','calleridname','calleridnum','Subjects','Descriptions','name','custom_fields','mapValues','keyBy','value','remoteUri','POST','then','Ticket\x20created!','%s/api/v2/agents','length','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s','base64','debug','[HTTP]','stringify','GET','map','forEach','includes','string','picklist'];(function(_0x308213,_0x224541){var _0x2e1619=function(_0x972b51){while(--_0x972b51){_0x308213['push'](_0x308213['shift']());}};_0x2e1619(++_0x224541);}(_0xcd75,0x186));var _0x5cd7=function(_0x5ba025,_0x46900d){_0x5ba025=_0x5ba025-0x0;var _0x15b932=_0xcd75[_0x5ba025];return _0x15b932;};'use strict';var _=require(_0x5cd7('0x0'));var rp=require(_0x5cd7('0x1'));var md5=require(_0x5cd7('0x2'));var util=require(_0x5cd7('0x3'));var Redis=require('ioredis');var intUtil=require(_0x5cd7('0x4'));var config=require('../../../../config/environment');var logger=require('../../../../config/logger')(_0x5cd7('0x5'));config['redis']=_[_0x5cd7('0x6')](config['redis'],{'host':_0x5cd7('0x7'),'port':0x18eb});var io=require(_0x5cd7('0x8'))(new Redis(config['redis']));var headers={'Content-Type':_0x5cd7('0x9'),'Accept':'application/json'};function emit(_0x31d516,_0x3e6132,_0x2c4452){io['to'](_0x31d516)[_0x5cd7('0xa')](_0x3e6132,_0x2c4452);}function getTicket(_0x5b2545,_0x4e91c2,_0x22b995,_0x2f6210,_0x102f4b){logger[_0x5cd7('0xb')]('Creating\x20new\x20ticket...');var _0x108330=_[_0x5cd7('0xc')]({'responder_id':_0x4e91c2['id'],'requester_id':_0x22b995['id'],'name':util[_0x5cd7('0xd')](_0x5cd7('0xe'),_0x102f4b[_0x5cd7('0xf')]),'phone':_0x102f4b[_0x5cd7('0x10')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil['getString'](_0x2f6210[_0x5cd7('0x11')],_0x102f4b,'\x20'),'description':intUtil['getString'](_0x2f6210[_0x5cd7('0x12')],_0x102f4b,'<br>'),'tags':getTags(_0x2f6210['Tags'],_0x5cd7('0x13'))},getCustomFields(_0x2f6210['Fields'],_0x102f4b));_0x108330[_0x5cd7('0x14')]=_[_0x5cd7('0x15')](_[_0x5cd7('0x16')](_0x108330['custom_fields'],'id'),_0x5cd7('0x17'));return request({'uri':util[_0x5cd7('0xd')]('%s/api/v2/tickets',_0x5b2545[_0x5cd7('0x18')]),'method':_0x5cd7('0x19'),'body':_0x108330})[_0x5cd7('0x1a')](function(_0xfe0f77){logger[_0x5cd7('0xb')](_0x5cd7('0x1b'));return _0xfe0f77;});}function getUser(_0x102c37,_0x56d56e){if(intUtil['validateEmail'](_0x56d56e)){return request({'uri':util[_0x5cd7('0xd')](_0x5cd7('0x1c'),_0x102c37[_0x5cd7('0x18')]),'qs':{'email':_0x56d56e}})[_0x5cd7('0x1a')](function(_0x44b3f4){if(_0x44b3f4[_0x5cd7('0x1d')]){logger['info']('Agent\x20found!');return _['find'](_0x44b3f4,function(_0x3681de){return _0x3681de['contact']['email']===_0x56d56e;});}else{logger['info'](_0x5cd7('0x1e'));return request({'uri':util[_0x5cd7('0xd')](_0x5cd7('0x1f'),_0x102c37[_0x5cd7('0x18')])})['then'](function(_0x19c95f){logger[_0x5cd7('0xb')](_0x5cd7('0x20'));return _0x19c95f;});}});}else{logger[_0x5cd7('0xb')](_0x5cd7('0x21'));return request({'uri':util[_0x5cd7('0xd')](_0x5cd7('0x1f'),_0x102c37[_0x5cd7('0x18')])})['then'](function(_0x1d9d4f){logger[_0x5cd7('0xb')]('Admin\x20account\x20selected.');return _0x1d9d4f;});}}function getEndUser(_0x4d29e7,_0x5d40f5,_0x8ee14e){logger['info'](_0x5cd7('0x22'),_0x8ee14e);return request({'uri':util[_0x5cd7('0xd')](_0x5cd7('0x23'),_0x4d29e7[_0x5cd7('0x18')]),'qs':{'phone':_0x8ee14e}})[_0x5cd7('0x1a')](function(_0x3faeee){if(_0x3faeee['length']){logger[_0x5cd7('0xb')](_0x5cd7('0x24'));return _['find'](_0x3faeee,{'phone':_0x8ee14e});}else{logger['info'](_0x5cd7('0x25'));return request({'uri':util['format'](_0x5cd7('0x23'),_0x4d29e7['remoteUri']),'method':_0x5cd7('0x19'),'body':{'name':_0x5d40f5,'phone':_0x8ee14e}})[_0x5cd7('0x1a')](function(_0x1f3b38){logger[_0x5cd7('0xb')](_0x5cd7('0x26'));return _0x1f3b38;});}});}function getAuth(_0x51f3e4){return util[_0x5cd7('0xd')](_0x5cd7('0x27'),new Buffer(_0x51f3e4['apiKey']+':X')['toString'](_0x5cd7('0x28')));}function request(_0x5ac0c1){logger[_0x5cd7('0x29')](_0x5cd7('0x2a'),JSON[_0x5cd7('0x2b')](_0x5ac0c1));return rp(_[_0x5cd7('0x6')](_0x5ac0c1,{'method':_0x5cd7('0x2c'),'headers':headers,'json':!![]}));}function getTags(_0x51d897,_0x4d3ab2){var _0x2505b0=[];if(_0x51d897&&_0x51d897[_0x5cd7('0x1d')]>0x0){_0x2505b0=_[_0x5cd7('0x2d')](_0x51d897,_0x4d3ab2);}return _0x2505b0;}function getCustomFields(_0x352fb3,_0x3c4b9a){var _0x34c919=[];var _0x13a066={'custom_fields':[]};if(_0x352fb3[_0x5cd7('0x1d')]>0x0){_[_0x5cd7('0x2e')](_0x352fb3,function(_0x34a8b8){if(_[_0x5cd7('0x2f')]([_0x5cd7('0x30'),_0x5cd7('0x31')],_0x34a8b8[_0x5cd7('0x32')])&&_0x34a8b8[_0x5cd7('0x33')]&&!_0x34a8b8[_0x5cd7('0x34')]){_0x13a066[_0x34a8b8['nameField'][_0x5cd7('0x35')]()]=_0x34a8b8[_0x5cd7('0x36')][_0x5cd7('0x37')]();}else if(_['includes']([_0x5cd7('0x30'),_0x5cd7('0x31')],_0x34a8b8[_0x5cd7('0x32')])&&_0x34a8b8[_0x5cd7('0x38')]&&_0x34a8b8[_0x5cd7('0x34')]){_0x13a066[_0x5cd7('0x14')][_0x5cd7('0x39')]({'id':_0x34a8b8[_0x5cd7('0x38')],'value':_0x34a8b8[_0x5cd7('0x36')][_0x5cd7('0x37')]()});}else if(_0x34a8b8[_0x5cd7('0x32')]===_0x5cd7('0x3a')&&_0x34a8b8['variableName']&&_0x34a8b8[_0x5cd7('0x38')]&&_0x34a8b8[_0x5cd7('0x34')]){_0x3c4b9a[_0x34a8b8[_0x5cd7('0x3b')]]&&_0x13a066[_0x5cd7('0x14')][_0x5cd7('0x39')]({'id':_0x34a8b8[_0x5cd7('0x38')],'value':_0x3c4b9a[_0x34a8b8[_0x5cd7('0x3b')]]['toString']()});}else if(_0x34a8b8['type']===_0x5cd7('0x3c')&&_0x34a8b8[_0x5cd7('0x3d')]&&_0x34a8b8[_0x5cd7('0x3d')][_0x5cd7('0x13')]&&_0x34a8b8[_0x5cd7('0x38')]&&_0x34a8b8[_0x5cd7('0x34')]){_0x3c4b9a[_0x34a8b8[_0x5cd7('0x3d')][_0x5cd7('0x13')][_0x5cd7('0x35')]()]&&_0x13a066[_0x5cd7('0x14')][_0x5cd7('0x39')]({'id':_0x34a8b8['idField'],'value':_0x3c4b9a[_0x34a8b8[_0x5cd7('0x3d')][_0x5cd7('0x13')]['toLowerCase']()][_0x5cd7('0x37')]()});}});}return _0x13a066;}exports['queue']=function(_0x126afc,_0x2c0105,_0x2bcae4,_0x512202,_0x599884,_0x366f3d){var _0x35c6f2,_0x9813f9;_0x366f3d[_0x5cd7('0x18')]=intUtil[_0x5cd7('0x3e')](_0x366f3d[_0x5cd7('0x18')]);_0x366f3d[_0x5cd7('0x3f')]=intUtil[_0x5cd7('0x3e')](_0x366f3d['serverUrl']);if(_0x599884&&_0x599884[_0x5cd7('0x40')]){logger[_0x5cd7('0xb')](_0x5cd7('0x41'),'Recording\x20is\x20enabled!');_0x2c0105[_0x5cd7('0x42')]=util[_0x5cd7('0xd')](_0x5cd7('0x43'),_0x366f3d[_0x5cd7('0x3f')],_0x2c0105[_0x5cd7('0x44')],md5(_0x2c0105[_0x5cd7('0x44')]));}else{_0x2c0105['recordingURL']='';}headers['Authorization']=getAuth(_0x366f3d);return getUser(_0x366f3d,_0x512202[_0x5cd7('0x45')])[_0x5cd7('0x1a')](function(_0x2ff641){_0x35c6f2=_0x2ff641;logger['info']('The\x20User\x20ID\x20is:',_0x35c6f2['id']);return getEndUser(_0x366f3d,_0x2c0105[_0x5cd7('0xf')],_0x2c0105[_0x5cd7('0x10')]);})['then'](function(_0x11e097){_0x9813f9=_0x11e097;logger['info'](_0x5cd7('0x46'),_0x9813f9['id']);return getTicket(_0x366f3d,_0x35c6f2,_0x9813f9,_0x2bcae4,_0x2c0105);})[_0x5cd7('0x1a')](function(_0x3f9eb8){if(_0x3f9eb8&&_0x3f9eb8['id']){logger['info'](_0x5cd7('0x1b'));logger[_0x5cd7('0xb')](_0x5cd7('0x47'),_0x3f9eb8['id']);logger[_0x5cd7('0xb')]('[QUEUE]',_0x5cd7('0x48'));emit(util[_0x5cd7('0xd')](_0x5cd7('0x49'),_0x512202['name']),_0x5cd7('0x4a'),{'uri':util[_0x5cd7('0xd')](_0x5cd7('0x4b'),_0x366f3d[_0x5cd7('0x18')],_0x3f9eb8['id'])});}})[_0x5cd7('0x4c')](function(_0x10789a){logger[_0x5cd7('0x4d')](_0x5cd7('0x41'),JSON[_0x5cd7('0x2b')](_0x10789a));});};exports[_0x5cd7('0x4e')]=function(_0x50c57a,_0x541a9c,_0x1b5e4a,_0x236845,_0x279e65,_0x409d10,_0x525733){var _0x252873,_0xb855b0;_0x409d10[_0x5cd7('0x18')]=intUtil[_0x5cd7('0x3e')](_0x409d10[_0x5cd7('0x18')]);_0x409d10['serverUrl']=intUtil[_0x5cd7('0x3e')](_0x409d10[_0x5cd7('0x3f')]);if(_0x525733&&_0x525733['recordingFormat']&&_0x525733[_0x5cd7('0x4f')]!==_0x5cd7('0x50')){logger[_0x5cd7('0xb')]('[OUTBOUND]',_0x5cd7('0x51'));_0x541a9c[_0x5cd7('0x42')]=util[_0x5cd7('0xd')](_0x5cd7('0x43'),_0x409d10[_0x5cd7('0x3f')],_0x541a9c[_0x5cd7('0x44')],md5(_0x541a9c[_0x5cd7('0x44')]));}headers[_0x5cd7('0x52')]=getAuth(_0x409d10);return getUser(_0x409d10,_0x236845['email'])[_0x5cd7('0x1a')](function(_0x4af342){_0x252873=_0x4af342;logger[_0x5cd7('0xb')](_0x5cd7('0x53'),_0x252873['id']);return getEndUser(_0x409d10,_0x541a9c[_0x5cd7('0x54')],_0x541a9c['destcalleridnum']);})[_0x5cd7('0x1a')](function(_0x56a1d9){_0xb855b0=_0x56a1d9;logger[_0x5cd7('0xb')](_0x5cd7('0x46'),_0xb855b0['id']);return getTicket(_0x409d10,_0x252873,_0xb855b0,_0x1b5e4a,_0x541a9c);})[_0x5cd7('0x1a')](function(_0x31a508){if(_0x31a508&&_0x31a508['id']){logger['info']('Ticket\x20created!');logger[_0x5cd7('0xb')](_0x5cd7('0x47'),_0x31a508['id']);logger[_0x5cd7('0xb')](_0x5cd7('0x55'),_0x5cd7('0x48'));emit(util[_0x5cd7('0xd')](_0x5cd7('0x49'),_0x236845[_0x5cd7('0x13')]),_0x5cd7('0x4a'),{'uri':util['format'](_0x5cd7('0x4b'),_0x409d10[_0x5cd7('0x18')],_0x31a508['id'])});}})[_0x5cd7('0x4c')](function(_0x5d12fb){logger[_0x5cd7('0x4d')](_0x5cd7('0x55'),JSON[_0x5cd7('0x2b')](_0x5d12fb));});};exports['unmanaged']=function(_0x4ba8bb,_0x30957d,_0x493792,_0x14a9e1,_0x1c6705,_0x283e66){var _0xda045e,_0x206fd8;_0x283e66[_0x5cd7('0x18')]=intUtil[_0x5cd7('0x3e')](_0x283e66[_0x5cd7('0x18')]);_0x283e66[_0x5cd7('0x3f')]=intUtil[_0x5cd7('0x3e')](_0x283e66[_0x5cd7('0x3f')]);if(_0x1c6705&&_0x1c6705[_0x5cd7('0x40')]){logger[_0x5cd7('0xb')]('['+_0x30957d[_0x5cd7('0x56')]['toUpperCase']()+']','Recording\x20is\x20enabled!');_0x30957d[_0x5cd7('0x42')]=util[_0x5cd7('0xd')](_0x5cd7('0x43'),_0x283e66[_0x5cd7('0x3f')],_0x30957d[_0x5cd7('0x44')],md5(_0x30957d['uniqueid']));}else{_0x30957d['recordingURL']='';}headers[_0x5cd7('0x52')]=getAuth(_0x283e66);return getUser(_0x283e66,'')[_0x5cd7('0x1a')](function(_0x229097){_0xda045e=_0x229097;logger[_0x5cd7('0xb')]('The\x20User\x20ID\x20is:',_0xda045e['id']);return getEndUser(_0x283e66,_0x30957d[_0x5cd7('0xf')],_0x30957d[_0x5cd7('0x10')]);})[_0x5cd7('0x1a')](function(_0x6f52da){_0x206fd8=_0x6f52da;logger[_0x5cd7('0xb')](_0x5cd7('0x46'),_0x206fd8['id']);return getTicket(_0x283e66,_0xda045e,_0x206fd8,_0x493792,_0x30957d);})[_0x5cd7('0x1a')](function(_0x498161){if(_0x498161){logger['info'](_0x5cd7('0x1b'));logger['info'](_0x5cd7('0x47'),_0x498161['id']);}})['catch'](function(_0x920ffe){logger[_0x5cd7('0x4d')]('['+_0x30957d[_0x5cd7('0x56')][_0x5cd7('0x57')]()+']',JSON['stringify'](_0x920ffe));});};
\ No newline at end of file
+var _0x85d4=['user:%s','%s/helpdesk/tickets/%d','catch','error','recordingFormat','none','[OUTBOUND]','destcalleridnum','The\x20Enduser\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','unmanaged','lastevent','toUpperCase','lodash','request-promise','md5','util','ioredis','../../../../config/environment','../../../../config/logger','freshdesk','redis','defaults','localhost','socket.io-emitter','application/json','emit','info','Creating\x20new\x20ticket...','merge','Caller\x20-\x20%s','calleridname','getString','Subjects','Descriptions','<br>','Tags','name','Fields','custom_fields','value','format','%s/api/v2/tickets','remoteUri','POST','then','Ticket\x20created!','validateEmail','length','Agent\x20found!','find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s','apiKey','debug','[HTTP]','stringify','GET','map','forEach','includes','string','nameField','content','picklist','type','idField','customField','push','variable','variableName','toString','Variable','toLowerCase','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','calleridnum','The\x20Ticket\x20ID\x20is:'];(function(_0x214eea,_0x307aa5){var _0x280550=function(_0x39cc34){while(--_0x39cc34){_0x214eea['push'](_0x214eea['shift']());}};_0x280550(++_0x307aa5);}(_0x85d4,0xd0));var _0x485d=function(_0x2064e5,_0x4f6fa2){_0x2064e5=_0x2064e5-0x0;var _0x21a233=_0x85d4[_0x2064e5];return _0x21a233;};'use strict';var _=require(_0x485d('0x0'));var rp=require(_0x485d('0x1'));var md5=require(_0x485d('0x2'));var util=require(_0x485d('0x3'));var Redis=require(_0x485d('0x4'));var intUtil=require('./util');var config=require(_0x485d('0x5'));var logger=require(_0x485d('0x6'))(_0x485d('0x7'));config[_0x485d('0x8')]=_[_0x485d('0x9')](config['redis'],{'host':_0x485d('0xa'),'port':0x18eb});var io=require(_0x485d('0xb'))(new Redis(config[_0x485d('0x8')]));var headers={'Content-Type':_0x485d('0xc'),'Accept':_0x485d('0xc')};function emit(_0x5cafc5,_0x3fe8ee,_0x2e15df){io['to'](_0x5cafc5)[_0x485d('0xd')](_0x3fe8ee,_0x2e15df);}function getTicket(_0x46c7c3,_0x279fe0,_0x4b8cf1,_0x13452f,_0x653421){logger[_0x485d('0xe')](_0x485d('0xf'));var _0x5a4b19=_[_0x485d('0x10')]({'responder_id':_0x279fe0['id'],'requester_id':_0x4b8cf1['id'],'name':util['format'](_0x485d('0x11'),_0x653421[_0x485d('0x12')]),'phone':_0x653421['calleridnum'],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x485d('0x13')](_0x13452f[_0x485d('0x14')],_0x653421,'\x20'),'description':intUtil[_0x485d('0x13')](_0x13452f[_0x485d('0x15')],_0x653421,_0x485d('0x16')),'tags':getTags(_0x13452f[_0x485d('0x17')],_0x485d('0x18'))},getCustomFields(_0x13452f[_0x485d('0x19')],_0x653421));_0x5a4b19['custom_fields']=_['mapValues'](_['keyBy'](_0x5a4b19[_0x485d('0x1a')],'id'),_0x485d('0x1b'));return request({'uri':util[_0x485d('0x1c')](_0x485d('0x1d'),_0x46c7c3[_0x485d('0x1e')]),'method':_0x485d('0x1f'),'body':_0x5a4b19})[_0x485d('0x20')](function(_0x583e33){logger[_0x485d('0xe')](_0x485d('0x21'));return _0x583e33;});}function getUser(_0x314265,_0x157929){if(intUtil[_0x485d('0x22')](_0x157929)){return request({'uri':util[_0x485d('0x1c')]('%s/api/v2/agents',_0x314265[_0x485d('0x1e')]),'qs':{'email':_0x157929}})['then'](function(_0x207ae9){if(_0x207ae9[_0x485d('0x23')]){logger[_0x485d('0xe')](_0x485d('0x24'));return _[_0x485d('0x25')](_0x207ae9,function(_0x2e86a7){return _0x2e86a7[_0x485d('0x26')][_0x485d('0x27')]===_0x157929;});}else{logger[_0x485d('0xe')](_0x485d('0x28'));return request({'uri':util[_0x485d('0x1c')](_0x485d('0x29'),_0x314265[_0x485d('0x1e')])})['then'](function(_0x1c2182){logger[_0x485d('0xe')](_0x485d('0x2a'));return _0x1c2182;});}});}else{logger[_0x485d('0xe')](_0x485d('0x2b'));return request({'uri':util[_0x485d('0x1c')](_0x485d('0x29'),_0x314265[_0x485d('0x1e')])})[_0x485d('0x20')](function(_0x71142d){logger[_0x485d('0xe')](_0x485d('0x2a'));return _0x71142d;});}}function getEndUser(_0x43409b,_0x22b664,_0x24d619){logger[_0x485d('0xe')](_0x485d('0x2c'),_0x24d619);return request({'uri':util[_0x485d('0x1c')]('%s/api/v2/contacts',_0x43409b[_0x485d('0x1e')]),'qs':{'phone':_0x24d619}})[_0x485d('0x20')](function(_0xe3061){if(_0xe3061[_0x485d('0x23')]){logger[_0x485d('0xe')](_0x485d('0x2d'));return _['find'](_0xe3061,{'phone':_0x24d619});}else{logger[_0x485d('0xe')](_0x485d('0x2e'));return request({'uri':util[_0x485d('0x1c')]('%s/api/v2/contacts',_0x43409b[_0x485d('0x1e')]),'method':'POST','body':{'name':_0x22b664,'phone':_0x24d619}})[_0x485d('0x20')](function(_0x315780){logger[_0x485d('0xe')](_0x485d('0x2f'));return _0x315780;});}});}function getAuth(_0x5dd6fe){return util['format'](_0x485d('0x30'),new Buffer(_0x5dd6fe[_0x485d('0x31')]+':X')['toString']('base64'));}function request(_0xc17786){logger[_0x485d('0x32')](_0x485d('0x33'),JSON[_0x485d('0x34')](_0xc17786));return rp(_[_0x485d('0x9')](_0xc17786,{'method':_0x485d('0x35'),'headers':headers,'json':!![]}));}function getTags(_0x226e1e,_0x49f5c8){var _0x5c59fd=[];if(_0x226e1e&&_0x226e1e['length']>0x0){_0x5c59fd=_[_0x485d('0x36')](_0x226e1e,_0x49f5c8);}return _0x5c59fd;}function getCustomFields(_0x5b28e1,_0x1f852f){var _0x15ffdd=[];var _0x4ff479={'custom_fields':[]};if(_0x5b28e1['length']>0x0){_[_0x485d('0x37')](_0x5b28e1,function(_0x36f8e3){if(_[_0x485d('0x38')]([_0x485d('0x39'),'picklist'],_0x36f8e3['type'])&&_0x36f8e3['nameField']&&!_0x36f8e3['customField']){_0x4ff479[_0x36f8e3[_0x485d('0x3a')]['toLowerCase']()]=_0x36f8e3[_0x485d('0x3b')]['toString']();}else if(_[_0x485d('0x38')]([_0x485d('0x39'),_0x485d('0x3c')],_0x36f8e3[_0x485d('0x3d')])&&_0x36f8e3[_0x485d('0x3e')]&&_0x36f8e3[_0x485d('0x3f')]){_0x4ff479['custom_fields'][_0x485d('0x40')]({'id':_0x36f8e3[_0x485d('0x3e')],'value':_0x36f8e3[_0x485d('0x3b')]['toString']()});}else if(_0x36f8e3['type']===_0x485d('0x41')&&_0x36f8e3[_0x485d('0x42')]&&_0x36f8e3[_0x485d('0x3e')]&&_0x36f8e3[_0x485d('0x3f')]){_0x1f852f[_0x36f8e3['variableName']]&&_0x4ff479['custom_fields'][_0x485d('0x40')]({'id':_0x36f8e3[_0x485d('0x3e')],'value':_0x1f852f[_0x36f8e3['variableName']][_0x485d('0x43')]()});}else if(_0x36f8e3['type']==='customVariable'&&_0x36f8e3[_0x485d('0x44')]&&_0x36f8e3[_0x485d('0x44')][_0x485d('0x18')]&&_0x36f8e3[_0x485d('0x3e')]&&_0x36f8e3[_0x485d('0x3f')]){_0x1f852f[_0x36f8e3[_0x485d('0x44')][_0x485d('0x18')]['toLowerCase']()]&&_0x4ff479['custom_fields'][_0x485d('0x40')]({'id':_0x36f8e3[_0x485d('0x3e')],'value':_0x1f852f[_0x36f8e3[_0x485d('0x44')][_0x485d('0x18')][_0x485d('0x45')]()][_0x485d('0x43')]()});}});}return _0x4ff479;}exports[_0x485d('0x46')]=function(_0x3ac94e,_0x4201c9,_0x39f03f,_0x270f5b,_0x5b8034,_0x16f7b2){var _0x3ab3e9,_0x52ae4b;_0x16f7b2[_0x485d('0x1e')]=intUtil[_0x485d('0x47')](_0x16f7b2[_0x485d('0x1e')]);_0x16f7b2[_0x485d('0x48')]=intUtil[_0x485d('0x47')](_0x16f7b2[_0x485d('0x48')]);if(_0x5b8034&&_0x5b8034[_0x485d('0x49')]){logger[_0x485d('0xe')](_0x485d('0x4a'),_0x485d('0x4b'));_0x4201c9[_0x485d('0x4c')]=util[_0x485d('0x1c')](_0x485d('0x4d'),_0x16f7b2[_0x485d('0x48')],_0x4201c9[_0x485d('0x4e')],md5(_0x4201c9[_0x485d('0x4e')]));}else{_0x4201c9[_0x485d('0x4c')]='';}headers[_0x485d('0x4f')]=getAuth(_0x16f7b2);return getUser(_0x16f7b2,_0x270f5b[_0x485d('0x27')])['then'](function(_0x4870bd){_0x3ab3e9=_0x4870bd;logger[_0x485d('0xe')](_0x485d('0x50'),_0x3ab3e9['id']);return getEndUser(_0x16f7b2,_0x4201c9[_0x485d('0x12')],_0x4201c9[_0x485d('0x51')]);})['then'](function(_0x8d3cc6){_0x52ae4b=_0x8d3cc6;logger[_0x485d('0xe')]('The\x20Enduser\x20ID\x20is:',_0x52ae4b['id']);return getTicket(_0x16f7b2,_0x3ab3e9,_0x52ae4b,_0x39f03f,_0x4201c9);})['then'](function(_0x9e49d){if(_0x9e49d&&_0x9e49d['id']){logger[_0x485d('0xe')](_0x485d('0x21'));logger[_0x485d('0xe')](_0x485d('0x52'),_0x9e49d['id']);logger[_0x485d('0xe')](_0x485d('0x4a'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format'](_0x485d('0x53'),_0x270f5b[_0x485d('0x18')]),'trigger:browser:url',{'uri':util['format'](_0x485d('0x54'),_0x16f7b2[_0x485d('0x1e')],_0x9e49d['id'])});}})[_0x485d('0x55')](function(_0x269664){logger[_0x485d('0x56')](_0x485d('0x4a'),JSON['stringify'](_0x269664));});};exports['outbound']=function(_0x211f3d,_0x65a686,_0x2584d3,_0x570951,_0x5acb7e,_0x548710,_0x2aaa63){var _0x13e125,_0x2d3ddc;_0x548710['remoteUri']=intUtil['stripTrailingSlash'](_0x548710[_0x485d('0x1e')]);_0x548710[_0x485d('0x48')]=intUtil['stripTrailingSlash'](_0x548710[_0x485d('0x48')]);if(_0x2aaa63&&_0x2aaa63[_0x485d('0x57')]&&_0x2aaa63['recordingFormat']!==_0x485d('0x58')){logger[_0x485d('0xe')](_0x485d('0x59'),'Recording\x20is\x20enabled!');_0x65a686['recordingURL']=util[_0x485d('0x1c')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x548710[_0x485d('0x48')],_0x65a686[_0x485d('0x4e')],md5(_0x65a686[_0x485d('0x4e')]));}headers['Authorization']=getAuth(_0x548710);return getUser(_0x548710,_0x570951[_0x485d('0x27')])[_0x485d('0x20')](function(_0x5873ed){_0x13e125=_0x5873ed;logger[_0x485d('0xe')](_0x485d('0x50'),_0x13e125['id']);return getEndUser(_0x548710,_0x65a686['destcalleridname'],_0x65a686[_0x485d('0x5a')]);})[_0x485d('0x20')](function(_0x328a45){_0x2d3ddc=_0x328a45;logger[_0x485d('0xe')](_0x485d('0x5b'),_0x2d3ddc['id']);return getTicket(_0x548710,_0x13e125,_0x2d3ddc,_0x2584d3,_0x65a686);})['then'](function(_0x439886){if(_0x439886&&_0x439886['id']){logger['info'](_0x485d('0x21'));logger[_0x485d('0xe')]('The\x20Ticket\x20ID\x20is:',_0x439886['id']);logger[_0x485d('0xe')](_0x485d('0x59'),_0x485d('0x5c'));emit(util[_0x485d('0x1c')](_0x485d('0x53'),_0x570951['name']),_0x485d('0x5d'),{'uri':util[_0x485d('0x1c')]('%s/helpdesk/tickets/%d',_0x548710['remoteUri'],_0x439886['id'])});}})[_0x485d('0x55')](function(_0x4dc54e){logger[_0x485d('0x56')](_0x485d('0x59'),JSON[_0x485d('0x34')](_0x4dc54e));});};exports[_0x485d('0x5e')]=function(_0x52eeef,_0x23e31e,_0xb99ee8,_0x4c2576,_0x330b7a,_0x4f5c07){var _0x57c9e2,_0x45179c;_0x4f5c07['remoteUri']=intUtil[_0x485d('0x47')](_0x4f5c07['remoteUri']);_0x4f5c07[_0x485d('0x48')]=intUtil[_0x485d('0x47')](_0x4f5c07['serverUrl']);if(_0x330b7a&&_0x330b7a[_0x485d('0x49')]){logger[_0x485d('0xe')]('['+_0x23e31e[_0x485d('0x5f')][_0x485d('0x60')]()+']','Recording\x20is\x20enabled!');_0x23e31e[_0x485d('0x4c')]=util[_0x485d('0x1c')](_0x485d('0x4d'),_0x4f5c07[_0x485d('0x48')],_0x23e31e[_0x485d('0x4e')],md5(_0x23e31e[_0x485d('0x4e')]));}else{_0x23e31e[_0x485d('0x4c')]='';}headers[_0x485d('0x4f')]=getAuth(_0x4f5c07);return getUser(_0x4f5c07,'')[_0x485d('0x20')](function(_0x1d8542){_0x57c9e2=_0x1d8542;logger[_0x485d('0xe')](_0x485d('0x50'),_0x57c9e2['id']);return getEndUser(_0x4f5c07,_0x23e31e[_0x485d('0x12')],_0x23e31e[_0x485d('0x51')]);})[_0x485d('0x20')](function(_0x222a14){_0x45179c=_0x222a14;logger[_0x485d('0xe')](_0x485d('0x5b'),_0x45179c['id']);return getTicket(_0x4f5c07,_0x57c9e2,_0x45179c,_0xb99ee8,_0x23e31e);})[_0x485d('0x20')](function(_0x530888){if(_0x530888){logger[_0x485d('0xe')](_0x485d('0x21'));logger[_0x485d('0xe')]('The\x20Ticket\x20ID\x20is:',_0x530888['id']);}})['catch'](function(_0x4241e5){logger[_0x485d('0x56')]('['+_0x23e31e[_0x485d('0x5f')][_0x485d('0x60')]()+']',JSON[_0x485d('0x34')](_0x4241e5));});};
\ No newline at end of file
index b392f49..17aebe8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7da=['bluebird','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','GET','Getting\x20admin\x20information','then','users','length','email','adminEmail','info','Admin\x20found:','adminId','catch','toUpperCase','message','/api/selector/owners','headers','Getting\x20user\x20list','agentEmail','Getting\x20user\x20with\x20email','userEmail','userId','User\x20found:','Requested\x20Resource\x20not\x20Found','error','/api/lookup?q=','&f=','&entities=contact','find','format','Searching\x20contact\x20with\x20phone\x20%s','mobile_number','contactNumber','endUserId','Contact\x20found\x20mobile_number:','Contact\x20found\x20work_number:','POST','/api/contacts','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','/api/tasks','getString','Subjects','Contact','add','ticketId','Task\x20created:','/contacts/','user:%s','emit','trigger:browser:url','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','serverUrl','toLowerCase','destcalleridnum','calleridnum','callDirection','queue','outbound','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','unmanaged','Displaying\x20task\x20in\x20a\x20new\x20tab...','name','inspect','lodash','md5','util'];(function(_0xaf3a39,_0x24b7bd){var _0x100a02=function(_0x39087c){while(--_0x39087c){_0xaf3a39['push'](_0xaf3a39['shift']());}};_0x100a02(++_0x24b7bd);}(_0xb7da,0x151));var _0xab7d=function(_0x2df507,_0x553862){_0x2df507=_0x2df507-0x0;var _0x1f7167=_0xb7da[_0x2df507];return _0x1f7167;};'use strict';var _=require(_0xab7d('0x0'));var rp=require('request-promise');var md5=require(_0xab7d('0x1'));var util=require(_0xab7d('0x2'));var moment=require('moment');var Promise=require(_0xab7d('0x3'));var Redis=require(_0xab7d('0x4'));var intUtil=require(_0xab7d('0x5'));var config=require(_0xab7d('0x6'));var logger=require(_0xab7d('0x7'))('freshsales');config[_0xab7d('0x8')]=_[_0xab7d('0x9')](config[_0xab7d('0x8')],{'host':_0xab7d('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function getAdminId(_0x48963b,_0x22992c,_0xf5a0d0,_0x4fe1e5){return new Promise(function(_0x15b265,_0x4faf34){var _0x2d281b=![];var _0x5de91e={'method':_0xab7d('0xb'),'uri':_0x4fe1e5+'/api/selector/owners','json':!![]};_0x5de91e['headers']=_0xf5a0d0;logger['info'](_0xab7d('0xc'));return rp(_0x5de91e)[_0xab7d('0xd')](function(_0x541588){if(_0x541588){var _0x9c4260=_0x541588[_0xab7d('0xe')];var _0x1ed230=null;for(_0x1ed230=0x0;_0x1ed230<_0x9c4260[_0xab7d('0xf')];_0x1ed230++){if(_0x9c4260[_0x1ed230][_0xab7d('0x10')]===_0x48963b[_0xab7d('0x11')]){_0x48963b['adminId']=_0x9c4260[_0x1ed230]['id'];_0x2d281b=!![];}}if(_0x2d281b){logger[_0xab7d('0x12')](_0xab7d('0x13'),_0x48963b[_0xab7d('0x14')]);_0x15b265(_0x48963b);}else{_0x4faf34({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x4faf34({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})[_0xab7d('0x15')](function(_0x460386){logger['error']('['+[_0x22992c[_0xab7d('0x16')]()]+']',_0x460386[_0xab7d('0x17')]);_0x4faf34(_0x460386);});});}function getUser(_0x25a410,_0x536d22,_0x4e905d){return function(_0x533ff6){return new Promise(function(_0x2ec28a,_0x3ec735){var _0x5e18ed={'method':_0xab7d('0xb'),'uri':_0x4e905d+_0xab7d('0x18'),'json':!![]};_0x5e18ed[_0xab7d('0x19')]=_0x536d22;logger[_0xab7d('0x12')](_0xab7d('0x1a'));return rp(_0x5e18ed)['then'](function(_0x5261d5){if(_0x5261d5){var _0x3a8d4b=_0x5261d5[_0xab7d('0xe')];var _0x25c883=![];var _0x4703e9=null;if(_0x533ff6[_0xab7d('0x1b')]!==null){logger['info'](_0xab7d('0x1c'),_0x533ff6[_0xab7d('0x1b')]);_0x533ff6[_0xab7d('0x1d')]=_0x533ff6[_0xab7d('0x1b')];for(_0x4703e9=0x0;_0x4703e9<_0x3a8d4b[_0xab7d('0xf')];_0x4703e9++){if(_0x3a8d4b[_0x4703e9][_0xab7d('0x10')]===_0x533ff6[_0xab7d('0x1b')]){_0x25c883=!![];_0x533ff6[_0xab7d('0x1e')]=_0x3a8d4b[_0x4703e9]['id'];logger['info'](_0xab7d('0x1f'),_0x533ff6[_0xab7d('0x1e')]);}}}if(!_0x25c883){logger['info']('Admin\x20selected');_0x533ff6[_0xab7d('0x1d')]=_0x533ff6[_0xab7d('0x11')];_0x533ff6[_0xab7d('0x1e')]=_0x533ff6[_0xab7d('0x14')];_0x25c883=!![];}if(_0x25c883){_0x2ec28a(_0x533ff6);}else{_0x3ec735({'statusCode':0x194,'message':_0xab7d('0x20')});}}else{_0x3ec735({'statusCode':0x194,'message':_0xab7d('0x20')});}})[_0xab7d('0x15')](function(_0x20b707){logger[_0xab7d('0x21')]('['+[_0x25a410[_0xab7d('0x16')]()]+']',_0x20b707['message']);_0x3ec735(_0x20b707);});});};}function searchContact(_0x1e624c,_0x28843c,_0x120469,_0x4bd2a2){return new Promise(function(_0x4f2274,_0x2456be){var _0x3fa2fd={'method':_0xab7d('0xb'),'headers':_0x28843c,'uri':_0x1e624c+_0xab7d('0x22')+_0x4bd2a2+_0xab7d('0x23')+_0x120469+_0xab7d('0x24'),'json':!![]};rp(_0x3fa2fd)[_0xab7d('0xd')](function(_0x50298a){var _0x3de4b8=_[_0xab7d('0x25')](_0x50298a['contacts']['contacts'],[_0x120469,_0x4bd2a2]);_0x4f2274(_0x3de4b8);})['catch'](function(_0x5a1b97){_0x2456be(_0x5a1b97);});});}function getEndUser(_0xe9a3d2,_0x57de4f,_0xd39f24){return function(_0x160262){return new Promise(function(_0x22f693,_0xfe0da0){logger[_0xab7d('0x12')](util[_0xab7d('0x26')](_0xab7d('0x27'),_0x160262['contactNumber']));searchContact(_0xd39f24,_0x57de4f,_0xab7d('0x28'),_0x160262[_0xab7d('0x29')])[_0xab7d('0xd')](function(_0x7fd6ba){if(_0x7fd6ba){_0x160262[_0xab7d('0x2a')]=_0x7fd6ba['id'];logger[_0xab7d('0x12')](_0xab7d('0x2b'),_0x160262['endUserId']);return _0x22f693(_0x160262);}searchContact(_0xd39f24,_0x57de4f,'work_number',_0x160262['contactNumber'])[_0xab7d('0xd')](function(_0x4a0c8b){if(_0x4a0c8b){_0x160262[_0xab7d('0x2a')]=_0x4a0c8b['id'];logger[_0xab7d('0x12')](_0xab7d('0x2c'),_0x160262[_0xab7d('0x2a')]);return _0x22f693(_0x160262);}createEndUser(_0x160262,_0xe9a3d2,_0x57de4f,_0xd39f24)[_0xab7d('0xd')](function(_0x1daedc){logger[_0xab7d('0x12')]('Contact\x20created:',_0x1daedc[_0xab7d('0x2a')]);return _0x22f693(_0x1daedc);});});})[_0xab7d('0x15')](function(_0x5b4657){_0xfe0da0(_0x5b4657);});});};}function createEndUser(_0x402ccd,_0x3eaa8b,_0x152dfc,_0x3e8bc2){return new Promise(function(_0x1d4b04,_0x27a04b){var _0x297e23=moment();var _0x52f3ff={'method':_0xab7d('0x2d'),'uri':_0x3e8bc2+_0xab7d('0x2e'),'body':{'contact':{'last_name':_0x402ccd[_0xab7d('0x29')],'work_number':_0x402ccd[_0xab7d('0x29')],'mobile_number':_0x402ccd[_0xab7d('0x29')],'owner_id':_0x402ccd[_0xab7d('0x1e')],'created_at':_0x297e23[_0xab7d('0x26')](_0xab7d('0x2f'))}},'json':!![]};_0x52f3ff[_0xab7d('0x19')]=_0x152dfc;logger['info'](_0xab7d('0x30'));return rp(_0x52f3ff)[_0xab7d('0xd')](function(_0x19653e){_0x402ccd['endUserId']=_0x19653e[_0xab7d('0x31')]['id'];_0x1d4b04(_0x402ccd);})[_0xab7d('0x15')](function(_0x184136){logger[_0xab7d('0x21')]('['+[_0x3eaa8b[_0xab7d('0x16')]()]+']',_0x184136[_0xab7d('0x17')]);_0x27a04b(_0x184136[_0xab7d('0x17')]);});});}function getTicket(_0x4a9335,_0x2c4a62,_0x5dddfb,_0x288c55,_0x67dac){return function(_0x424e10){logger[_0xab7d('0x12')]('Creating\x20new\x20task');return new Promise(function(_0xd255d4,_0x3588ef){var _0x26721c=moment();var _0x2b8d4d={'method':_0xab7d('0x2d'),'uri':_0x5dddfb+_0xab7d('0x32'),'body':{'title':intUtil[_0xab7d('0x33')](_0x288c55[_0xab7d('0x34')],_0x67dac,'\x20'),'description':intUtil['getString'](_0x288c55['Descriptions'],_0x67dac,'\x0a'),'owner_id':_0x424e10[_0xab7d('0x1e')],'creater_id':_0x424e10[_0xab7d('0x14')],'targetable_id':_0x424e10['endUserId'],'targetable_type':_0xab7d('0x35'),'created_at':_0x26721c[_0xab7d('0x26')](_0xab7d('0x2f')),'due_date':_0x26721c[_0xab7d('0x36')](0x1e,'m')[_0xab7d('0x26')](_0xab7d('0x2f'))},'json':!![]};_0x2b8d4d['headers']=_0x2c4a62;return rp(_0x2b8d4d)[_0xab7d('0xd')](function(_0x315893){_0x424e10[_0xab7d('0x37')]=_0x315893['task']['id'];logger[_0xab7d('0x12')](_0xab7d('0x38'),_0x424e10['ticketId']);_0xd255d4(_0x424e10);})['catch'](function(_0xb86ba4){logger['error']('['+[_0x4a9335[_0xab7d('0x16')]()]+']',_0xb86ba4[_0xab7d('0x17')]);_0x3588ef(_0xb86ba4[_0xab7d('0x17')]);});});};}function emit(_0x56601c,_0x39de68,_0x42a9f6){var _0x5e4fcd={'uri':_0x56601c+_0xab7d('0x39')+_0x42a9f6};io['to'](util[_0xab7d('0x26')](_0xab7d('0x3a'),_0x39de68))[_0xab7d('0x3b')](_0xab7d('0x3c'),_0x5e4fcd);}exports['cs']=function(_0x2b525e,_0x3a9342,_0x4bcf0d,_0x2747c5,_0x115146,_0x31167a,_0x27493c,_0x3725db){var _0x2fc7a2={};var _0xf4432a={'Authorization':_0xab7d('0x3d')+_0x31167a[_0xab7d('0x3e')]};_0x31167a[_0xab7d('0x3f')]=intUtil[_0xab7d('0x40')](_0x31167a[_0xab7d('0x3f')]);_0x31167a[_0xab7d('0x41')]=intUtil[_0xab7d('0x40')](_0x31167a[_0xab7d('0x41')]);var _0x28ed5e=_0x31167a[_0xab7d('0x3f')];_0x2fc7a2['adminEmail']=_0x31167a['username'];_0x2fc7a2[_0xab7d('0x29')]=_0x3725db[_0xab7d('0x42')]()==='outbound'?_0x3a9342[_0xab7d('0x43')]:_0x3a9342[_0xab7d('0x44')];_0x2fc7a2[_0xab7d('0x45')]=_0x3725db==='queue'||_0x3725db==='unmanaged'?_0xab7d('0x46'):_0xab7d('0x47');if(_0x2747c5){_0x2fc7a2['agentEmail']=_0x2747c5[_0xab7d('0x10')];}var _0x51313e=util[_0xab7d('0x26')](_0xab7d('0x48'),_0x31167a[_0xab7d('0x41')],_0x3a9342[_0xab7d('0x49')],md5(_0x3a9342['uniqueid']));if(_0x115146&&_0x115146[_0xab7d('0x4a')]){logger['info'](_0xab7d('0x4b'),_0xab7d('0x4c'));_0x3a9342['recordingURL']=_0x51313e;}else if(_0x27493c&&_0x27493c[_0xab7d('0x4d')]&&_0x27493c[_0xab7d('0x4d')]!==_0xab7d('0x4e')){logger['info']('[OUTBOUND]',_0xab7d('0x4c'));_0x3a9342[_0xab7d('0x4f')]=_0x51313e;}else{_0x3a9342[_0xab7d('0x4f')]='';}return getAdminId(_0x2fc7a2,_0x3725db,_0xf4432a,_0x28ed5e)[_0xab7d('0xd')](getUser(_0x3725db,_0xf4432a,_0x28ed5e))['then'](getEndUser(_0x3725db,_0xf4432a,_0x28ed5e))[_0xab7d('0xd')](getTicket(_0x3725db,_0xf4432a,_0x28ed5e,_0x4bcf0d,_0x3a9342))[_0xab7d('0xd')](function(_0x39c2f2){logger[_0xab7d('0x12')](util[_0xab7d('0x26')](_0xab7d('0x50'),_0x39c2f2['ticketId']));if(_0x3725db!==_0xab7d('0x51')){logger['info']('['+[_0x3725db[_0xab7d('0x16')]()]+']',_0xab7d('0x52'));emit(_0x28ed5e,_0x2747c5[_0xab7d('0x53')],_0x39c2f2[_0xab7d('0x2a')]);}})[_0xab7d('0x15')](function(_0x226634){logger['error']('['+[_0x3725db[_0xab7d('0x16')]()]+']\x20Error\x20running\x20Freshsales\x20integration',util[_0xab7d('0x54')](_0x226634,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x422c=['User\x20found:','Admin\x20selected','message','/api/lookup?q=','&f=','find','format','contactNumber','mobile_number','endUserId','Contact\x20found\x20mobile_number:','Contact\x20found\x20work_number:','Contact\x20created:','POST','/api/contacts','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','Creating\x20new\x20task','Subjects','Contact','add','ticketId','task','Task\x20created:','user:%s','emit','trigger:browser:url','apiKey','remoteUri','serverUrl','stripTrailingSlash','username','toLowerCase','destcalleridnum','callDirection','queue','unmanaged','outbound','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','request-promise','moment','bluebird','ioredis','../../../../config/environment','../../../../config/logger','freshsales','redis','defaults','localhost','GET','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','users','length','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase','Getting\x20user\x20list','agentEmail','Getting\x20user\x20with\x20email','userEmail','email','userId'];(function(_0x464a6a,_0x429b05){var _0x4f546f=function(_0x4ac9fd){while(--_0x4ac9fd){_0x464a6a['push'](_0x464a6a['shift']());}};_0x4f546f(++_0x429b05);}(_0x422c,0x12c));var _0xc422=function(_0x24b668,_0x5eaca8){_0x24b668=_0x24b668-0x0;var _0x21d8bb=_0x422c[_0x24b668];return _0x21d8bb;};'use strict';var _=require(_0xc422('0x0'));var rp=require(_0xc422('0x1'));var md5=require('md5');var util=require('util');var moment=require(_0xc422('0x2'));var Promise=require(_0xc422('0x3'));var Redis=require(_0xc422('0x4'));var intUtil=require('./util');var config=require(_0xc422('0x5'));var logger=require(_0xc422('0x6'))(_0xc422('0x7'));config[_0xc422('0x8')]=_[_0xc422('0x9')](config[_0xc422('0x8')],{'host':_0xc422('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xc422('0x8')]));function getAdminId(_0x413479,_0x36965d,_0x445684,_0x39e3fa){return new Promise(function(_0x3873e7,_0x1d72d0){var _0x5d1a6e=![];var _0x3449d6={'method':_0xc422('0xb'),'uri':_0x39e3fa+_0xc422('0xc'),'json':!![]};_0x3449d6[_0xc422('0xd')]=_0x445684;logger[_0xc422('0xe')](_0xc422('0xf'));return rp(_0x3449d6)[_0xc422('0x10')](function(_0x48cbc0){if(_0x48cbc0){var _0x5db692=_0x48cbc0[_0xc422('0x11')];var _0x449799=null;for(_0x449799=0x0;_0x449799<_0x5db692[_0xc422('0x12')];_0x449799++){if(_0x5db692[_0x449799]['email']===_0x413479[_0xc422('0x13')]){_0x413479[_0xc422('0x14')]=_0x5db692[_0x449799]['id'];_0x5d1a6e=!![];}}if(_0x5d1a6e){logger['info'](_0xc422('0x15'),_0x413479[_0xc422('0x14')]);_0x3873e7(_0x413479);}else{_0x1d72d0({'statusCode':0x194,'message':_0xc422('0x16')});}}else{_0x1d72d0({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})[_0xc422('0x17')](function(_0xa2b1b9){logger[_0xc422('0x18')]('['+[_0x36965d[_0xc422('0x19')]()]+']',_0xa2b1b9['message']);_0x1d72d0(_0xa2b1b9);});});}function getUser(_0x21ff56,_0x5b5634,_0x17d22a){return function(_0x35aebd){return new Promise(function(_0x5d0c21,_0x5b5997){var _0x48b04f={'method':_0xc422('0xb'),'uri':_0x17d22a+_0xc422('0xc'),'json':!![]};_0x48b04f[_0xc422('0xd')]=_0x5b5634;logger[_0xc422('0xe')](_0xc422('0x1a'));return rp(_0x48b04f)['then'](function(_0x2d8e51){if(_0x2d8e51){var _0x43fbda=_0x2d8e51['users'];var _0x588fb0=![];var _0x3ccdc5=null;if(_0x35aebd[_0xc422('0x1b')]!==null){logger[_0xc422('0xe')](_0xc422('0x1c'),_0x35aebd[_0xc422('0x1b')]);_0x35aebd[_0xc422('0x1d')]=_0x35aebd[_0xc422('0x1b')];for(_0x3ccdc5=0x0;_0x3ccdc5<_0x43fbda[_0xc422('0x12')];_0x3ccdc5++){if(_0x43fbda[_0x3ccdc5][_0xc422('0x1e')]===_0x35aebd[_0xc422('0x1b')]){_0x588fb0=!![];_0x35aebd[_0xc422('0x1f')]=_0x43fbda[_0x3ccdc5]['id'];logger['info'](_0xc422('0x20'),_0x35aebd[_0xc422('0x1f')]);}}}if(!_0x588fb0){logger[_0xc422('0xe')](_0xc422('0x21'));_0x35aebd[_0xc422('0x1d')]=_0x35aebd['adminEmail'];_0x35aebd[_0xc422('0x1f')]=_0x35aebd['adminId'];_0x588fb0=!![];}if(_0x588fb0){_0x5d0c21(_0x35aebd);}else{_0x5b5997({'statusCode':0x194,'message':_0xc422('0x16')});}}else{_0x5b5997({'statusCode':0x194,'message':_0xc422('0x16')});}})[_0xc422('0x17')](function(_0x2aff7a){logger[_0xc422('0x18')]('['+[_0x21ff56[_0xc422('0x19')]()]+']',_0x2aff7a[_0xc422('0x22')]);_0x5b5997(_0x2aff7a);});});};}function searchContact(_0x3dab1d,_0xfe644b,_0x1fee42,_0x40aade){return new Promise(function(_0x693607,_0x185502){var _0x19696c={'method':_0xc422('0xb'),'headers':_0xfe644b,'uri':_0x3dab1d+_0xc422('0x23')+_0x40aade+_0xc422('0x24')+_0x1fee42+'&entities=contact','json':!![]};rp(_0x19696c)['then'](function(_0x1e2c91){var _0x28b228=_[_0xc422('0x25')](_0x1e2c91['contacts']['contacts'],[_0x1fee42,_0x40aade]);_0x693607(_0x28b228);})[_0xc422('0x17')](function(_0x34e9a8){_0x185502(_0x34e9a8);});});}function getEndUser(_0x3f6d3a,_0x492cac,_0x347425){return function(_0x38a6dd){return new Promise(function(_0xf17744,_0x4f531f){logger[_0xc422('0xe')](util[_0xc422('0x26')]('Searching\x20contact\x20with\x20phone\x20%s',_0x38a6dd[_0xc422('0x27')]));searchContact(_0x347425,_0x492cac,_0xc422('0x28'),_0x38a6dd[_0xc422('0x27')])[_0xc422('0x10')](function(_0xdc8ca2){if(_0xdc8ca2){_0x38a6dd[_0xc422('0x29')]=_0xdc8ca2['id'];logger[_0xc422('0xe')](_0xc422('0x2a'),_0x38a6dd['endUserId']);return _0xf17744(_0x38a6dd);}searchContact(_0x347425,_0x492cac,'work_number',_0x38a6dd[_0xc422('0x27')])['then'](function(_0x3e6f86){if(_0x3e6f86){_0x38a6dd[_0xc422('0x29')]=_0x3e6f86['id'];logger[_0xc422('0xe')](_0xc422('0x2b'),_0x38a6dd[_0xc422('0x29')]);return _0xf17744(_0x38a6dd);}createEndUser(_0x38a6dd,_0x3f6d3a,_0x492cac,_0x347425)[_0xc422('0x10')](function(_0x349087){logger[_0xc422('0xe')](_0xc422('0x2c'),_0x349087[_0xc422('0x29')]);return _0xf17744(_0x349087);});});})['catch'](function(_0xe96889){_0x4f531f(_0xe96889);});});};}function createEndUser(_0x14506a,_0x3ef853,_0x19ac99,_0x1c7b61){return new Promise(function(_0x356244,_0x6db781){var _0x173826=moment();var _0x5b7c97={'method':_0xc422('0x2d'),'uri':_0x1c7b61+_0xc422('0x2e'),'body':{'contact':{'last_name':_0x14506a['contactNumber'],'work_number':_0x14506a[_0xc422('0x27')],'mobile_number':_0x14506a['contactNumber'],'owner_id':_0x14506a[_0xc422('0x1f')],'created_at':_0x173826[_0xc422('0x26')](_0xc422('0x2f'))}},'json':!![]};_0x5b7c97[_0xc422('0xd')]=_0x19ac99;logger['info'](_0xc422('0x30'));return rp(_0x5b7c97)[_0xc422('0x10')](function(_0x28b0d1){_0x14506a['endUserId']=_0x28b0d1[_0xc422('0x31')]['id'];_0x356244(_0x14506a);})['catch'](function(_0x5392c3){logger[_0xc422('0x18')]('['+[_0x3ef853['toUpperCase']()]+']',_0x5392c3['message']);_0x6db781(_0x5392c3[_0xc422('0x22')]);});});}function getTicket(_0x5d3f7d,_0x8d2ed1,_0x59a4ff,_0x5cd12,_0x1ad135){return function(_0x341883){logger['info'](_0xc422('0x32'));return new Promise(function(_0xecdc,_0x3518e1){var _0x22cd7a=moment();var _0x4e14e9={'method':'POST','uri':_0x59a4ff+'/api/tasks','body':{'title':intUtil['getString'](_0x5cd12[_0xc422('0x33')],_0x1ad135,'\x20'),'description':intUtil['getString'](_0x5cd12['Descriptions'],_0x1ad135,'\x0a'),'owner_id':_0x341883[_0xc422('0x1f')],'creater_id':_0x341883[_0xc422('0x14')],'targetable_id':_0x341883[_0xc422('0x29')],'targetable_type':_0xc422('0x34'),'created_at':_0x22cd7a['format'](_0xc422('0x2f')),'due_date':_0x22cd7a[_0xc422('0x35')](0x1e,'m')[_0xc422('0x26')](_0xc422('0x2f'))},'json':!![]};_0x4e14e9[_0xc422('0xd')]=_0x8d2ed1;return rp(_0x4e14e9)[_0xc422('0x10')](function(_0x5bfebd){_0x341883[_0xc422('0x36')]=_0x5bfebd[_0xc422('0x37')]['id'];logger['info'](_0xc422('0x38'),_0x341883[_0xc422('0x36')]);_0xecdc(_0x341883);})[_0xc422('0x17')](function(_0x355053){logger[_0xc422('0x18')]('['+[_0x5d3f7d['toUpperCase']()]+']',_0x355053[_0xc422('0x22')]);_0x3518e1(_0x355053['message']);});});};}function emit(_0x5c1ffb,_0x195f1c,_0x3405c9){var _0x11a774={'uri':_0x5c1ffb+'/contacts/'+_0x3405c9};io['to'](util['format'](_0xc422('0x39'),_0x195f1c))[_0xc422('0x3a')](_0xc422('0x3b'),_0x11a774);}exports['cs']=function(_0x33bbe2,_0x1d4d83,_0x45e9b7,_0xeca96c,_0x2eda54,_0x336142,_0x37486e,_0x424bff){var _0x33606b={};var _0x43d979={'Authorization':'Token\x20token='+_0x336142[_0xc422('0x3c')]};_0x336142['remoteUri']=intUtil['stripTrailingSlash'](_0x336142[_0xc422('0x3d')]);_0x336142[_0xc422('0x3e')]=intUtil[_0xc422('0x3f')](_0x336142['serverUrl']);var _0x21976a=_0x336142['remoteUri'];_0x33606b[_0xc422('0x13')]=_0x336142[_0xc422('0x40')];_0x33606b['contactNumber']=_0x424bff[_0xc422('0x41')]()==='outbound'?_0x1d4d83[_0xc422('0x42')]:_0x1d4d83['calleridnum'];_0x33606b[_0xc422('0x43')]=_0x424bff===_0xc422('0x44')||_0x424bff===_0xc422('0x45')?_0xc422('0x44'):_0xc422('0x46');if(_0xeca96c){_0x33606b[_0xc422('0x1b')]=_0xeca96c[_0xc422('0x1e')];}var _0x1f21c4=util[_0xc422('0x26')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x336142[_0xc422('0x3e')],_0x1d4d83[_0xc422('0x47')],md5(_0x1d4d83[_0xc422('0x47')]));if(_0x2eda54&&_0x2eda54[_0xc422('0x48')]){logger[_0xc422('0xe')](_0xc422('0x49'),_0xc422('0x4a'));_0x1d4d83[_0xc422('0x4b')]=_0x1f21c4;}else if(_0x37486e&&_0x37486e[_0xc422('0x4c')]&&_0x37486e['recordingFormat']!=='none'){logger['info'](_0xc422('0x4d'),'Recording\x20is\x20enabled!');_0x1d4d83[_0xc422('0x4b')]=_0x1f21c4;}else{_0x1d4d83[_0xc422('0x4b')]='';}return getAdminId(_0x33606b,_0x424bff,_0x43d979,_0x21976a)[_0xc422('0x10')](getUser(_0x424bff,_0x43d979,_0x21976a))[_0xc422('0x10')](getEndUser(_0x424bff,_0x43d979,_0x21976a))[_0xc422('0x10')](getTicket(_0x424bff,_0x43d979,_0x21976a,_0x45e9b7,_0x1d4d83))[_0xc422('0x10')](function(_0x3a340e){logger[_0xc422('0xe')](util['format'](_0xc422('0x4e'),_0x3a340e[_0xc422('0x36')]));if(_0x424bff!==_0xc422('0x45')){logger['info']('['+[_0x424bff[_0xc422('0x19')]()]+']',_0xc422('0x4f'));emit(_0x21976a,_0xeca96c[_0xc422('0x50')],_0x3a340e['endUserId']);}})[_0xc422('0x17')](function(_0x3fdde5){logger['error']('['+[_0x424bff[_0xc422('0x19')]()]+_0xc422('0x51'),util[_0xc422('0x52')](_0x3fdde5,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 31adde5..9c7d7c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b3a=['zoho','vtiger','dynamics365','servicenow','exec','data1','toLowerCase','Configurations','data3','queue','routeId','outbound','log','unmanaged','desk','unknown\x20integration','error','[EXEC]','format','../../../../config/logger','data2','lodash','util','./zendesk','./freshdesk','./zoho','./desk','./servicenow','zendesk','salesforce','sugarcrm','freshdesk'];(function(_0x494d1f,_0x3f72ff){var _0x457b6e=function(_0x38cb16){while(--_0x38cb16){_0x494d1f['push'](_0x494d1f['shift']());}};_0x457b6e(++_0x3f72ff);}(_0x5b3a,0x195));var _0xa5b3=function(_0xa80005,_0x11f5e9){_0xa80005=_0xa80005-0x0;var _0x721687=_0x5b3a[_0xa80005];return _0x721687;};'use strict';var _=require(_0xa5b3('0x0'));var util=require(_0xa5b3('0x1'));var zendesk=require(_0xa5b3('0x2'));var salesforce=require('./salesforce');var sugarcrm=require('./sugarcrm');var freshdesk=require(_0xa5b3('0x3'));var zoho=require(_0xa5b3('0x4'));var desk=require(_0xa5b3('0x5'));var vtiger=require('./vtiger');var servicenow=require(_0xa5b3('0x6'));var dynamics365=require('./dynamics365');var freshsales=require('./freshsales');var integrations=[_0xa5b3('0x7'),_0xa5b3('0x8'),_0xa5b3('0x9'),_0xa5b3('0xa'),_0xa5b3('0xb'),'desk',_0xa5b3('0xc'),_0xa5b3('0xd'),'freshsales',_0xa5b3('0xe')];exports[_0xa5b3('0xf')]=function(_0x36bbf7,_0x2f6cba,_0xe37f05,_0x46f01f,_0x12091c,_0x5a865e){if(_0xe37f05){if(_['includes'](integrations,_0x36bbf7[_0xa5b3('0x10')]['toLowerCase']())){try{var _0x5a1b62=null;var _0x3425ce='';var _0x5b279d=_0xe37f05[_0x36bbf7['data1'][_0xa5b3('0x11')]()];if(_0x5b279d){var _0x108a8d=_0x5b279d[_0x36bbf7['data2']];if(_0x108a8d){var _0x2dc1f7=_['find'](_0x108a8d[_0xa5b3('0x12')],{'id':parseInt(_0x36bbf7[_0xa5b3('0x13')],0xa)});if(_0x2dc1f7){if(_0x46f01f){if(_0x12091c&&_0x2f6cba['queue']){_0x3425ce=_0xa5b3('0x14');}else if(_0x2f6cba[_0xa5b3('0x15')]){_0x3425ce=_0xa5b3('0x16');}else{console[_0xa5b3('0x17')]('EVENT\x20UNKNOWN',_0x2f6cba);}}else{_0x3425ce=_0xa5b3('0x18');}switch(_0x36bbf7[_0xa5b3('0x10')]['toLowerCase']()){case _0xa5b3('0x7'):zendesk[_0x3425ce](_0x36bbf7,_0x2f6cba,_0x2dc1f7,_0x46f01f,_0x12091c,_0x108a8d,_0x5a865e);break;case _0xa5b3('0x8'):salesforce[_0x3425ce](_0x36bbf7,_0x2f6cba,_0x2dc1f7,_0x46f01f,_0x12091c,_0x108a8d,_0x5a865e);break;case _0xa5b3('0x9'):sugarcrm[_0x3425ce](_0x36bbf7,_0x2f6cba,_0x2dc1f7,_0x46f01f,_0x12091c,_0x108a8d,_0x5a865e);break;case'freshdesk':freshdesk[_0x3425ce](_0x36bbf7,_0x2f6cba,_0x2dc1f7,_0x46f01f,_0x12091c,_0x108a8d,_0x5a865e);break;case'zoho':zoho[_0x3425ce](_0x36bbf7,_0x2f6cba,_0x2dc1f7,_0x46f01f,_0x12091c,_0x108a8d,_0x5a865e);break;case _0xa5b3('0x19'):desk[_0x3425ce](_0x36bbf7,_0x2f6cba,_0x2dc1f7,_0x46f01f,_0x12091c,_0x108a8d,_0x5a865e);break;case _0xa5b3('0xc'):vtiger[_0x3425ce](_0x36bbf7,_0x2f6cba,_0x2dc1f7,_0x46f01f,_0x12091c,_0x108a8d,_0x5a865e);break;case'freshsales':freshsales['cs'](_0x36bbf7,_0x2f6cba,_0x2dc1f7,_0x46f01f,_0x12091c,_0x108a8d,_0x5a865e,_0x3425ce);break;case _0xa5b3('0xe'):servicenow['cs'](_0x36bbf7,_0x2f6cba,_0x2dc1f7,_0x46f01f,_0x12091c,_0x108a8d,_0x5a865e,_0x3425ce);break;case _0xa5b3('0xd'):dynamics365['cs'](_0x36bbf7,_0x2f6cba,_0x2dc1f7,_0x46f01f,_0x12091c,_0x108a8d,_0x5a865e,_0x3425ce);break;default:console[_0xa5b3('0x17')](_0xa5b3('0x1a'));}}else{_0x5a1b62=require('../../../../config/logger')(_0x36bbf7[_0xa5b3('0x10')][_0xa5b3('0x11')]());_0x5a1b62[_0xa5b3('0x1b')](_0xa5b3('0x1c'),util[_0xa5b3('0x1d')]('%s\x20configuration\x20#%s\x20not\x20found',_0x36bbf7[_0xa5b3('0x10')][_0xa5b3('0x11')](),_0x36bbf7[_0xa5b3('0x13')]));}}else{_0x5a1b62=require(_0xa5b3('0x1e'))(_0x36bbf7[_0xa5b3('0x10')][_0xa5b3('0x11')]());_0x5a1b62['error'](_0xa5b3('0x1c'),util[_0xa5b3('0x1d')]('%s\x20account\x20#%s\x20not\x20found',_0x36bbf7[_0xa5b3('0x10')]['toLowerCase'](),_0x36bbf7[_0xa5b3('0x1f')]));}}else{}}catch(_0x338984){console[_0xa5b3('0x1b')](_0x338984);}}}};
\ No newline at end of file
+var _0xaf2c=['./dynamics365','./freshsales','zendesk','freshdesk','desk','servicenow','exec','includes','data1','toLowerCase','data2','find','Configurations','data3','queue','salesforce','sugarcrm','vtiger','freshsales','dynamics365','log','../../../../config/logger','error','%s\x20configuration\x20#%s\x20not\x20found','[EXEC]','format','%s\x20account\x20#%s\x20not\x20found','lodash','util','./zendesk','./salesforce','./sugarcrm','./desk','./vtiger','./servicenow'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0xaf2c,0x110));var _0xcaf2=function(_0x1ca5e7,_0x1abf12){_0x1ca5e7=_0x1ca5e7-0x0;var _0x1ecb69=_0xaf2c[_0x1ca5e7];return _0x1ecb69;};'use strict';var _=require(_0xcaf2('0x0'));var util=require(_0xcaf2('0x1'));var zendesk=require(_0xcaf2('0x2'));var salesforce=require(_0xcaf2('0x3'));var sugarcrm=require(_0xcaf2('0x4'));var freshdesk=require('./freshdesk');var zoho=require('./zoho');var desk=require(_0xcaf2('0x5'));var vtiger=require(_0xcaf2('0x6'));var servicenow=require(_0xcaf2('0x7'));var dynamics365=require(_0xcaf2('0x8'));var freshsales=require(_0xcaf2('0x9'));var integrations=[_0xcaf2('0xa'),'salesforce','sugarcrm',_0xcaf2('0xb'),'zoho',_0xcaf2('0xc'),'vtiger','dynamics365','freshsales',_0xcaf2('0xd')];exports[_0xcaf2('0xe')]=function(_0x294b3d,_0x2c7664,_0x740d66,_0x4c0b88,_0x3c9a01,_0x5bc25e){if(_0x740d66){if(_[_0xcaf2('0xf')](integrations,_0x294b3d[_0xcaf2('0x10')][_0xcaf2('0x11')]())){try{var _0x326082=null;var _0x266a37='';var _0x4627b5=_0x740d66[_0x294b3d['data1']['toLowerCase']()];if(_0x4627b5){var _0x289bc9=_0x4627b5[_0x294b3d[_0xcaf2('0x12')]];if(_0x289bc9){var _0x46ef5a=_[_0xcaf2('0x13')](_0x289bc9[_0xcaf2('0x14')],{'id':parseInt(_0x294b3d[_0xcaf2('0x15')],0xa)});if(_0x46ef5a){if(_0x4c0b88){if(_0x3c9a01&&_0x2c7664[_0xcaf2('0x16')]){_0x266a37='queue';}else if(_0x2c7664['routeId']){_0x266a37='outbound';}else{console['log']('EVENT\x20UNKNOWN',_0x2c7664);}}else{_0x266a37='unmanaged';}switch(_0x294b3d[_0xcaf2('0x10')][_0xcaf2('0x11')]()){case _0xcaf2('0xa'):zendesk[_0x266a37](_0x294b3d,_0x2c7664,_0x46ef5a,_0x4c0b88,_0x3c9a01,_0x289bc9,_0x5bc25e);break;case _0xcaf2('0x17'):salesforce[_0x266a37](_0x294b3d,_0x2c7664,_0x46ef5a,_0x4c0b88,_0x3c9a01,_0x289bc9,_0x5bc25e);break;case _0xcaf2('0x18'):sugarcrm[_0x266a37](_0x294b3d,_0x2c7664,_0x46ef5a,_0x4c0b88,_0x3c9a01,_0x289bc9,_0x5bc25e);break;case'freshdesk':freshdesk[_0x266a37](_0x294b3d,_0x2c7664,_0x46ef5a,_0x4c0b88,_0x3c9a01,_0x289bc9,_0x5bc25e);break;case'zoho':zoho[_0x266a37](_0x294b3d,_0x2c7664,_0x46ef5a,_0x4c0b88,_0x3c9a01,_0x289bc9,_0x5bc25e);break;case _0xcaf2('0xc'):desk[_0x266a37](_0x294b3d,_0x2c7664,_0x46ef5a,_0x4c0b88,_0x3c9a01,_0x289bc9,_0x5bc25e);break;case _0xcaf2('0x19'):vtiger[_0x266a37](_0x294b3d,_0x2c7664,_0x46ef5a,_0x4c0b88,_0x3c9a01,_0x289bc9,_0x5bc25e);break;case _0xcaf2('0x1a'):freshsales['cs'](_0x294b3d,_0x2c7664,_0x46ef5a,_0x4c0b88,_0x3c9a01,_0x289bc9,_0x5bc25e,_0x266a37);break;case _0xcaf2('0xd'):servicenow['cs'](_0x294b3d,_0x2c7664,_0x46ef5a,_0x4c0b88,_0x3c9a01,_0x289bc9,_0x5bc25e,_0x266a37);break;case _0xcaf2('0x1b'):dynamics365['cs'](_0x294b3d,_0x2c7664,_0x46ef5a,_0x4c0b88,_0x3c9a01,_0x289bc9,_0x5bc25e,_0x266a37);break;default:console[_0xcaf2('0x1c')]('unknown\x20integration');}}else{_0x326082=require(_0xcaf2('0x1d'))(_0x294b3d['data1'][_0xcaf2('0x11')]());_0x326082[_0xcaf2('0x1e')]('[EXEC]',util['format'](_0xcaf2('0x1f'),_0x294b3d[_0xcaf2('0x10')][_0xcaf2('0x11')](),_0x294b3d[_0xcaf2('0x15')]));}}else{_0x326082=require(_0xcaf2('0x1d'))(_0x294b3d[_0xcaf2('0x10')][_0xcaf2('0x11')]());_0x326082['error'](_0xcaf2('0x20'),util[_0xcaf2('0x21')](_0xcaf2('0x22'),_0x294b3d[_0xcaf2('0x10')][_0xcaf2('0x11')](),_0x294b3d[_0xcaf2('0x12')]));}}else{}}catch(_0x5e802b){console[_0xcaf2('0x1e')](_0x5e802b);}}}};
\ No newline at end of file
index c92ef83..99feac4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8144=['Connection','remoteUri','https://login.salesforce.com','clientId','clientSecret','login','username','Connection\x20established.','queue','serverUrl','stripTrailingSlash','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','email','calleridname','calleridnum','Fields','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','user:%s','trigger:salesforce:display','newTab','trigger:browser:url','%s/%s/e','instanceUrl','error','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','catch','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','unmanaged','monitor_format','toUpperCase','lastevent',']\x20Ticket\x20%s\x20created.',']\x20Integration\x20account\x20type\x20%s.','lodash','bluebird','md5','jsforce','util','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','getString','Subjects','ticketType','Task','ActivityDate','utc','IsRecurrence','endUserType','contact','lead','WhoId','account','WhatId','Case','ContactId','AccountId','leadId','info','Association\x20between\x20Case\x20and\x20Lead\x20skipped','sobject','create','isNil','validateEmail','User','execute','then','length','find','Agent\x20%s\x20found.','resolve','Name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','user_id','display_name','identity','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','contact_lead','cloneDeep','additionalSearchContact','$or','additionalSearchLead','merge','Lead','account_contact_lead','additionalSearchAccount','Account','Contact','first','Phone','attributes','type','Enduser\x20(%s)\x20with\x20phone\x20%s\x20found','moduleCreate','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','LastName','<unknown>','Caller\x20-\x20%s','Company','No\x20Company','format','upperFirst','forEach','includes','picklist','idField','content','toString','variable','variableName','customVariable','Variable','name','password','securityToken'];(function(_0x908a41,_0x4d6219){var _0xf053cd=function(_0x293d97){while(--_0x293d97){_0x908a41['push'](_0x908a41['shift']());}};_0xf053cd(++_0x4d6219);}(_0x8144,0xb4));var _0x4814=function(_0x5390a5,_0x5dd1a0){_0x5390a5=_0x5390a5-0x0;var _0x52a8a5=_0x8144[_0x5390a5];return _0x52a8a5;};'use strict';var _=require(_0x4814('0x0'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x4814('0x1'));var md5=require(_0x4814('0x2'));var jsforce=require(_0x4814('0x3'));var util=require(_0x4814('0x4'));var Redis=require(_0x4814('0x5'));var intUtil=require(_0x4814('0x6'));var config=require(_0x4814('0x7'));var logger=require(_0x4814('0x8'))('salesforce');config[_0x4814('0x9')]=_[_0x4814('0xa')](config[_0x4814('0x9')],{'host':_0x4814('0xb'),'port':0x18eb});var io=require(_0x4814('0xc'))(new Redis(config[_0x4814('0x9')]));function emit(_0x4bee44,_0xd4a24c,_0x2151a5){io['to'](_0x4bee44)['emit'](_0xd4a24c,_0x2151a5);}function getTicket(_0xd96e90,_0x417b98,_0x4f6335,_0x53f980,_0x12a241,_0xaa18,_0x6fec68,_0x56be4c){var _0x226a84=Object['assign']({},{'OwnerId':_0x417b98['id'],'Subject':intUtil[_0x4814('0xd')](_0x53f980[_0x4814('0xe')],_0x12a241,'\x20'),'Description':intUtil[_0x4814('0xd')](_0x53f980['Descriptions'],_0x12a241,'\x0a')},getCustomFields(_0xaa18,_0x12a241));if(_0x4f6335){if(_0x53f980[_0x4814('0xf')]===_0x4814('0x10')){_0x226a84[_0x4814('0x11')]=moment[_0x4814('0x12')]();_0x226a84['IsReminderSet']=![];_0x226a84[_0x4814('0x13')]=![];if(_0x4f6335[_0x4814('0x14')]===_0x4814('0x15')||_0x4f6335[_0x4814('0x14')]===_0x4814('0x16')){_0x226a84[_0x4814('0x17')]=_0x4f6335['id'];}else if(_0x4f6335[_0x4814('0x14')]===_0x4814('0x18')){_0x226a84[_0x4814('0x19')]=_0x4f6335['id'];}}else if(_0x53f980[_0x4814('0xf')]===_0x4814('0x1a')){if(_0x4f6335[_0x4814('0x14')]===_0x4814('0x15')){_0x226a84[_0x4814('0x1b')]=_0x4f6335['id'];}else if(_0x4f6335[_0x4814('0x14')]===_0x4814('0x18')){_0x226a84[_0x4814('0x1c')]=_0x4f6335['id'];}else if(_0x4f6335[_0x4814('0x14')]===_0x4814('0x16')&&_0x53f980[_0x4814('0x1d')]){_0x226a84[_0x53f980[_0x4814('0x1d')]]=_0x4f6335['id'];}else{logger[_0x4814('0x1e')](_0x4814('0x1f'));}}}return _0x6fec68[_0x4814('0x20')](_0x53f980[_0x4814('0xf')])[_0x4814('0x21')](_0x226a84);}function getUser(_0x1ef9fa,_0x384999,_0x2744fa){if(!_[_0x4814('0x22')](_0x384999)&&intUtil[_0x4814('0x23')](_0x384999)){var _0x13e8f2={'Email':_0x384999};var _0x5757dd={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x2744fa[_0x4814('0x20')](_0x4814('0x24'))['find'](_0x13e8f2,_0x5757dd)[_0x4814('0x25')]()[_0x4814('0x26')](function(_0x5cabb4){if(_0x5cabb4[_0x4814('0x27')]){var _0x517c9a=_[_0x4814('0x28')](_0x5cabb4,function(_0x454d38){return _0x454d38['Email']===_0x384999;});if(_0x517c9a){logger[_0x4814('0x1e')](_0x4814('0x29'),_0x384999);return BPromise[_0x4814('0x2a')]({'id':_0x517c9a['Id'],'name':_0x517c9a[_0x4814('0x2b')]});}}else{logger['info'](_0x4814('0x2c'),_0x384999);return _0x2744fa['identity']()[_0x4814('0x26')](function(_0x201ac1){return BPromise[_0x4814('0x2a')]({'id':_0x201ac1[_0x4814('0x2d')],'name':_0x201ac1[_0x4814('0x2e')]});});}});}else{logger[_0x4814('0x1e')](_0x4814('0x2c'),_0x384999);return _0x2744fa[_0x4814('0x2f')]()[_0x4814('0x26')](function(_0x3f7784){return BPromise[_0x4814('0x2a')]({'id':_0x3f7784[_0x4814('0x2d')],'name':_0x3f7784[_0x4814('0x2e')]});});}}function getEndUser(_0x55985d,_0x285a42,_0x33786e,_0x29be58,_0x54ec3e){var _0x39b43b={'$or':{'Phone':_0x29be58}};var _0x93e510={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x4814('0x2a')]()[_0x4814('0x26')](function(){logger[_0x4814('0x1e')](_0x4814('0x30'),_0x29be58,_0x285a42[_0x4814('0x31')]);switch(_0x285a42[_0x4814('0x31')]){case _0x4814('0x32'):var _0x25cd60=_[_0x4814('0x33')](_0x39b43b);if(_0x285a42['additionalSearchContact']){var _0x590248={};_0x590248[_0x285a42[_0x4814('0x34')]]=_0x29be58;_['merge'](_0x25cd60[_0x4814('0x35')],_0x590248);}return _0x54ec3e[_0x4814('0x20')]('Contact')[_0x4814('0x28')](_0x25cd60,_0x93e510)['execute']()[_0x4814('0x26')](function(_0xad43f3){if(_0xad43f3&&_0xad43f3[_0x4814('0x27')]){return _0xad43f3;}else{var _0x6d2944=_[_0x4814('0x33')](_0x39b43b);if(_0x285a42[_0x4814('0x36')]){var _0x43bf77={};_0x43bf77[_0x285a42[_0x4814('0x36')]]=_0x29be58;_[_0x4814('0x37')](_0x6d2944[_0x4814('0x35')],_0x43bf77);}return _0x54ec3e[_0x4814('0x20')](_0x4814('0x38'))['find'](_0x6d2944,_0x93e510);}});case _0x4814('0x39'):var _0x19ee47=_[_0x4814('0x33')](_0x39b43b);if(_0x285a42[_0x4814('0x3a')]){var _0x590248={};_0x590248[_0x285a42['additionalSearchAccount']]=_0x29be58;_[_0x4814('0x37')](_0x19ee47[_0x4814('0x35')],_0x590248);}return _0x54ec3e[_0x4814('0x20')](_0x4814('0x3b'))[_0x4814('0x28')](_0x19ee47,_0x93e510)[_0x4814('0x25')]()['then'](function(_0x50d769){if(_0x50d769&&_0x50d769[_0x4814('0x27')]){return _0x50d769;}else{var _0x4f1072=_[_0x4814('0x33')](_0x39b43b);if(_0x285a42[_0x4814('0x34')]){var _0x194fee={};_0x194fee[_0x285a42[_0x4814('0x34')]]=_0x29be58;_[_0x4814('0x37')](_0x4f1072[_0x4814('0x35')],_0x194fee);}return _0x54ec3e[_0x4814('0x20')](_0x4814('0x3c'))['find'](_0x4f1072,_0x93e510)[_0x4814('0x26')](function(_0x23463e){if(_0x23463e&&_0x23463e[_0x4814('0x27')]){return _0x23463e;}else{var _0x667e2b=_[_0x4814('0x33')](_0x39b43b);if(_0x285a42[_0x4814('0x36')]){var _0x14444b={};_0x14444b[_0x285a42[_0x4814('0x36')]]=_0x29be58;_[_0x4814('0x37')](_0x667e2b[_0x4814('0x35')],_0x14444b);}return _0x54ec3e[_0x4814('0x20')]('Lead')[_0x4814('0x28')](_0x667e2b,_0x93e510);}});}});case _0x4814('0x15'):var _0x25cd60=_[_0x4814('0x33')](_0x39b43b);if(_0x285a42[_0x4814('0x34')]){var _0x590248={};_0x590248[_0x285a42['additionalSearchContact']]=_0x29be58;_[_0x4814('0x37')](_0x25cd60[_0x4814('0x35')],_0x590248);}return _0x54ec3e[_0x4814('0x20')](_0x4814('0x3c'))[_0x4814('0x28')](_0x25cd60,_0x93e510)[_0x4814('0x25')]();case _0x4814('0x16'):var _0x267c9b=_[_0x4814('0x33')](_0x39b43b);if(_0x285a42[_0x4814('0x36')]){var _0x590248={};_0x590248[_0x285a42[_0x4814('0x36')]]=_0x29be58;_['merge'](_0x267c9b[_0x4814('0x35')],_0x590248);}return _0x54ec3e['sobject'](_0x4814('0x38'))[_0x4814('0x28')](_0x267c9b,_0x93e510);case _0x4814('0x18'):var _0x19ee47=_['cloneDeep'](_0x39b43b);if(_0x285a42[_0x4814('0x3a')]){var _0x590248={};_0x590248[_0x285a42[_0x4814('0x3a')]]=_0x29be58;_[_0x4814('0x37')](_0x19ee47['$or'],_0x590248);}return _0x54ec3e['sobject'](_0x4814('0x3b'))['find'](_0x19ee47,_0x93e510);default:return null;}})[_0x4814('0x26')](function(_0x4d25ea){if(_0x4d25ea&&_0x4d25ea[_0x4814('0x27')]){var _0x19b9a2=_[_0x4814('0x3d')](_0x4d25ea);if(_0x19b9a2){return BPromise[_0x4814('0x2a')]({'id':_0x19b9a2['Id'],'name':_0x19b9a2[_0x4814('0x2b')],'phone':_0x19b9a2[_0x4814('0x3e')],'endUserType':_0x19b9a2[_0x4814('0x3f')][_0x4814('0x40')]['toLowerCase']()});}}})['then'](function(_0x140fb1){if(_0x140fb1){logger[_0x4814('0x1e')](_0x4814('0x41'),_0x140fb1[_0x4814('0x14')],_0x29be58);return BPromise[_0x4814('0x2a')](_0x140fb1);}else{logger[_0x4814('0x1e')]('Enduser\x20with\x20phone\x20%s\x20not\x20found',_0x29be58);var _0x356d28={'Phone':_0x29be58};if(_0x285a42[_0x4814('0x42')]){if(_0x285a42['moduleCreate']===_0x4814('0x15')){logger[_0x4814('0x1e')](_0x4814('0x43'),_0x29be58,_0x285a42[_0x4814('0x42')]);_0x356d28[_0x4814('0x44')]=_0x33786e!==_0x4814('0x45')?_0x33786e:util['format'](_0x4814('0x46'),_0x29be58);}else if(_0x285a42[_0x4814('0x42')]===_0x4814('0x16')){logger[_0x4814('0x1e')](_0x4814('0x43'),_0x29be58,_0x285a42['moduleCreate']);_0x356d28['LastName']=_0x33786e!=='<unknown>'?_0x33786e:util['format']('Caller\x20-\x20%s',_0x29be58);_0x356d28[_0x4814('0x47')]=_0x4814('0x48');}else if(_0x285a42[_0x4814('0x42')]===_0x4814('0x18')){logger['info'](_0x4814('0x43'),_0x29be58,_0x285a42[_0x4814('0x42')]);_0x356d28[_0x4814('0x2b')]=_0x33786e!==_0x4814('0x45')?_0x33786e:util[_0x4814('0x49')](_0x4814('0x46'),_0x29be58);}else{return null;}}return _0x54ec3e[_0x4814('0x20')](_[_0x4814('0x4a')](_0x285a42[_0x4814('0x42')]))[_0x4814('0x21')](_0x356d28)['then'](function(_0xffccf7){return BPromise[_0x4814('0x2a')]({'id':_0xffccf7['id'],'endUserType':_0x285a42['moduleCreate']});});}});}function getCustomFields(_0x1632ab,_0x5a3b38){var _0x48c6ad={};if(_0x1632ab['length']>0x0){_[_0x4814('0x4b')](_0x1632ab,function(_0x1146c1){if(_[_0x4814('0x4c')](['string',_0x4814('0x4d')],_0x1146c1['type'])&&_0x1146c1[_0x4814('0x4e')]){_0x48c6ad[_0x1146c1['idField']]=_0x1146c1[_0x4814('0x4f')][_0x4814('0x50')]();}else if(_0x1146c1[_0x4814('0x40')]===_0x4814('0x51')&&_0x1146c1['variableName']&&_0x1146c1['idField']){_0x5a3b38[_0x1146c1[_0x4814('0x52')]]&&(_0x48c6ad[_0x1146c1[_0x4814('0x4e')]]=_0x5a3b38[_0x1146c1['variableName']]['toString']());}else if(_0x1146c1[_0x4814('0x40')]===_0x4814('0x53')&&_0x1146c1['Variable']&&_0x1146c1[_0x4814('0x54')][_0x4814('0x55')]&&_0x1146c1[_0x4814('0x4e')]){_0x5a3b38[_0x1146c1['Variable'][_0x4814('0x55')]['toLowerCase']()]&&(_0x48c6ad[_0x1146c1[_0x4814('0x4e')]]=_0x5a3b38[_0x1146c1[_0x4814('0x54')][_0x4814('0x55')]['toLowerCase']()]['toString']());}});}return _0x48c6ad;}function getConnection(_0x4a8137){var _0x3862d7=_0x4a8137[_0x4814('0x56')]['concat'](_0x4a8137[_0x4814('0x57')]);var _0x8cdfd4=new jsforce[(_0x4814('0x58'))]({'oauth2':{'loginUrl':_0x4a8137[_0x4814('0x59')]||_0x4814('0x5a'),'clientId':_0x4a8137[_0x4814('0x5b')],'clientSecret':_0x4a8137[_0x4814('0x5c')]}});return _0x8cdfd4[_0x4814('0x5d')](_0x4a8137[_0x4814('0x5e')],_0x3862d7)['then'](function(){logger['info'](_0x4814('0x5f'));return _0x8cdfd4;});}exports[_0x4814('0x60')]=function(_0x3660e8,_0x582e9f,_0x2d4041,_0x3f3d37,_0x5b58e9,_0x264ef2){var _0x12c8f5,_0x4e6eff,_0x2485ed,_0x2dae9f;_0x264ef2[_0x4814('0x61')]=intUtil[_0x4814('0x62')](_0x264ef2[_0x4814('0x61')]);_0x264ef2[_0x4814('0x59')]=intUtil['stripTrailingSlash'](_0x264ef2[_0x4814('0x59')]);if(_0x5b58e9&&_0x5b58e9['monitor_format']){logger[_0x4814('0x1e')](_0x4814('0x63'),_0x4814('0x64'));_0x582e9f['recordingURL']=util['format'](_0x4814('0x65'),_0x264ef2[_0x4814('0x61')],_0x582e9f[_0x4814('0x66')],md5(_0x582e9f[_0x4814('0x66')]));}else{_0x582e9f[_0x4814('0x67')]='';}return getConnection(_0x264ef2)[_0x4814('0x26')](function(_0x56d15c){_0x2dae9f=_0x56d15c;return getUser(_0x264ef2,_0x3f3d37[_0x4814('0x68')],_0x2dae9f);})[_0x4814('0x26')](function(_0x5e1b59){_0x12c8f5=_0x5e1b59;return getEndUser(_0x264ef2,_0x2d4041,_0x582e9f[_0x4814('0x69')],_0x582e9f[_0x4814('0x6a')],_0x2dae9f);})['then'](function(_0xc6aa64){_0x4e6eff=_0xc6aa64;return getTicket(_0x264ef2,_0x12c8f5,_0x4e6eff,_0x2d4041,_0x582e9f,_0x2d4041[_0x4814('0x6b')],_0x2dae9f,'queue');})[_0x4814('0x26')](function(_0x83ea02){_0x2485ed=_0x83ea02;logger[_0x4814('0x1e')](_0x4814('0x6c'),_0x2485ed['id']);logger[_0x4814('0x1e')](_0x4814('0x6d'),_0x2485ed['id'],_0x3f3d37[_0x4814('0x55')],_0x264ef2[_0x4814('0x40')]);switch(_0x264ef2['type']){case _0x4814('0x6e'):emit(util[_0x4814('0x49')](_0x4814('0x6f'),_0x3f3d37['name']),_0x4814('0x70'),{'recordId':_0x2485ed['id']});break;case _0x4814('0x71'):emit(util[_0x4814('0x49')](_0x4814('0x6f'),_0x3f3d37[_0x4814('0x55')]),_0x4814('0x72'),{'uri':util[_0x4814('0x49')](_0x4814('0x73'),_0x2dae9f[_0x4814('0x74')],_0x2485ed['id'])});break;default:logger[_0x4814('0x75')](_0x4814('0x76'));}})[_0x4814('0x77')](function(_0xf7290e){logger[_0x4814('0x75')](_0x4814('0x63'),_0xf7290e);});};exports[_0x4814('0x78')]=function(_0x2d88f0,_0x2093ff,_0x15b9ef,_0x53c058,_0xe73ea2,_0x86226b,_0x4eae10){var _0x34d8f4,_0x29b1a8,_0x4ad545,_0x547be3;_0x86226b[_0x4814('0x61')]=intUtil['stripTrailingSlash'](_0x86226b[_0x4814('0x61')]);_0x86226b[_0x4814('0x59')]=intUtil['stripTrailingSlash'](_0x86226b[_0x4814('0x59')]);if(_0x4eae10&&_0x4eae10[_0x4814('0x79')]&&_0x4eae10[_0x4814('0x79')]!==_0x4814('0x7a')){logger['info'](_0x4814('0x7b'),'Recording\x20is\x20enabled!');_0x2093ff[_0x4814('0x67')]=util[_0x4814('0x49')](_0x4814('0x65'),_0x86226b[_0x4814('0x61')],_0x2093ff['uniqueid'],md5(_0x2093ff['uniqueid']));}return getConnection(_0x86226b)[_0x4814('0x26')](function(_0x4e00b2){_0x547be3=_0x4e00b2;return getUser(_0x86226b,_0x53c058[_0x4814('0x68')],_0x547be3);})[_0x4814('0x26')](function(_0x4440be){_0x34d8f4=_0x4440be;return getEndUser(_0x86226b,_0x15b9ef,_0x2093ff[_0x4814('0x7c')],_0x2093ff[_0x4814('0x7d')],_0x547be3);})[_0x4814('0x26')](function(_0x45d62a){_0x29b1a8=_0x45d62a;return getTicket(_0x86226b,_0x34d8f4,_0x29b1a8,_0x15b9ef,_0x2093ff,_0x15b9ef['Fields'],_0x547be3,_0x4814('0x78'));})[_0x4814('0x26')](function(_0x4b516a){_0x4ad545=_0x4b516a;logger[_0x4814('0x1e')](_0x4814('0x7e'),_0x4ad545['id']);logger[_0x4814('0x1e')](_0x4814('0x7f'),_0x4ad545['id'],_0x53c058[_0x4814('0x55')],_0x86226b[_0x4814('0x40')]);switch(_0x86226b[_0x4814('0x40')]){case'integrationTab':emit(util[_0x4814('0x49')](_0x4814('0x6f'),_0x53c058[_0x4814('0x55')]),_0x4814('0x70'),{'recordId':_0x4ad545['id']});break;case _0x4814('0x71'):emit(util[_0x4814('0x49')](_0x4814('0x6f'),_0x53c058[_0x4814('0x55')]),'trigger:browser:url',{'uri':util[_0x4814('0x49')](_0x4814('0x73'),_0x547be3[_0x4814('0x74')],_0x4ad545['id'])});break;default:logger['error']('[OUTBOUND]','Salesforce\x20account\x20type\x20not\x20recognized');}})[_0x4814('0x77')](function(_0x18ca75){logger[_0x4814('0x75')]('[OUTBOUND]',_0x18ca75);});};exports[_0x4814('0x80')]=function(_0x365bbd,_0x4cd7ab,_0x1c29ae,_0x562182,_0x4df13f,_0x972086){var _0x712617,_0x43a482,_0x3356e8,_0x1cd888;_0x972086['serverUrl']=intUtil[_0x4814('0x62')](_0x972086['serverUrl']);_0x972086['remoteUri']=intUtil[_0x4814('0x62')](_0x972086['remoteUri']);if(_0x4df13f&&_0x4df13f[_0x4814('0x81')]){logger[_0x4814('0x1e')]('['+_0x4cd7ab['lastevent'][_0x4814('0x82')]()+']',_0x4814('0x64'));_0x4cd7ab['recordingURL']=util[_0x4814('0x49')](_0x4814('0x65'),_0x972086[_0x4814('0x61')],_0x4cd7ab[_0x4814('0x66')],md5(_0x4cd7ab[_0x4814('0x66')]));}else{_0x4cd7ab[_0x4814('0x67')]='';}return getConnection(_0x972086)['then'](function(_0xdeddf2){_0x1cd888=_0xdeddf2;if(!_['isNil'](_0x562182)){return getUser(_0x972086,_0x562182[_0x4814('0x55')],_0x1cd888);}else{return getUser(_0x972086,null,_0x1cd888);}})[_0x4814('0x26')](function(_0x1bdca2){_0x712617=_0x1bdca2;return getEndUser(_0x972086,_0x1c29ae,_0x4cd7ab[_0x4814('0x69')],_0x4cd7ab['calleridnum'],_0x1cd888);})[_0x4814('0x26')](function(_0x4d34f4){_0x43a482=_0x4d34f4;return getTicket(_0x972086,_0x712617,_0x43a482,_0x1c29ae,_0x4cd7ab,_0x1c29ae[_0x4814('0x6b')],_0x1cd888);})['then'](function(_0x2f98e3){_0x3356e8=_0x2f98e3;logger[_0x4814('0x1e')]('['+_0x4cd7ab[_0x4814('0x83')][_0x4814('0x82')]()+_0x4814('0x84'),_0x3356e8['id']);logger[_0x4814('0x1e')]('['+_0x4cd7ab[_0x4814('0x83')][_0x4814('0x82')]()+_0x4814('0x85'),_0x972086['type']);})[_0x4814('0x77')](function(_0x390a9a){logger[_0x4814('0x75')]('['+_0x4cd7ab[_0x4814('0x83')][_0x4814('0x82')]()+']',_0x390a9a);});};
\ No newline at end of file
+var _0x0cf3=['isNil','validateEmail','User','find','execute','then','length','Email','Agent\x20%s\x20found.','resolve','Name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','user_id','identity','display_name','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','contact_lead','cloneDeep','additionalSearchContact','$or','Contact','additionalSearchLead','merge','sobject','Lead','account_contact_lead','additionalSearchAccount','Account','contact','Phone','Enduser\x20(%s)\x20with\x20phone\x20%s\x20found','Enduser\x20with\x20phone\x20%s\x20not\x20found','moduleCreate','LastName','<unknown>','Caller\x20-\x20%s','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','No\x20Company','upperFirst','create','forEach','includes','string','type','idField','content','toString','variableName','Variable','name','toLowerCase','password','securityToken','remoteUri','https://login.salesforce.com','clientId','clientSecret','login','username','queue','serverUrl','stripTrailingSlash','monitor_format','Recording\x20is\x20enabled!','recordingURL','format','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','calleridnum','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','user:%s','newTab','trigger:browser:url','%s/%s/e','instanceUrl','error','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','outbound','recordingFormat','none','[OUTBOUND]','destcalleridnum','Fields','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','trigger:salesforce:display','Salesforce\x20account\x20type\x20not\x20recognized','catch','unmanaged','lastevent','calleridname','toUpperCase',']\x20Ticket\x20%s\x20created.','request-promise','moment','bluebird','md5','jsforce','util','ioredis','./util','../../../../config/environment','../../../../config/logger','salesforce','redis','defaults','socket.io-emitter','emit','getString','Subjects','ticketType','utc','IsReminderSet','IsRecurrence','endUserType','lead','account','WhatId','AccountId','leadId','info','Association\x20between\x20Case\x20and\x20Lead\x20skipped'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x0cf3,0x1d3));var _0x30cf=function(_0x1df3d0,_0x422f2e){_0x1df3d0=_0x1df3d0-0x0;var _0x32f149=_0x0cf3[_0x1df3d0];return _0x32f149;};'use strict';var _=require('lodash');var rp=require(_0x30cf('0x0'));var moment=require(_0x30cf('0x1'));var BPromise=require(_0x30cf('0x2'));var md5=require(_0x30cf('0x3'));var jsforce=require(_0x30cf('0x4'));var util=require(_0x30cf('0x5'));var Redis=require(_0x30cf('0x6'));var intUtil=require(_0x30cf('0x7'));var config=require(_0x30cf('0x8'));var logger=require(_0x30cf('0x9'))(_0x30cf('0xa'));config[_0x30cf('0xb')]=_[_0x30cf('0xc')](config[_0x30cf('0xb')],{'host':'localhost','port':0x18eb});var io=require(_0x30cf('0xd'))(new Redis(config[_0x30cf('0xb')]));function emit(_0x232d49,_0x14accc,_0x2de08f){io['to'](_0x232d49)[_0x30cf('0xe')](_0x14accc,_0x2de08f);}function getTicket(_0x1e4621,_0x2b1cec,_0x1f5c44,_0x532c0a,_0x5cfbe8,_0x43a319,_0x55328c,_0x3d407a){var _0x2315bc=Object['assign']({},{'OwnerId':_0x2b1cec['id'],'Subject':intUtil[_0x30cf('0xf')](_0x532c0a[_0x30cf('0x10')],_0x5cfbe8,'\x20'),'Description':intUtil[_0x30cf('0xf')](_0x532c0a['Descriptions'],_0x5cfbe8,'\x0a')},getCustomFields(_0x43a319,_0x5cfbe8));if(_0x1f5c44){if(_0x532c0a[_0x30cf('0x11')]==='Task'){_0x2315bc['ActivityDate']=moment[_0x30cf('0x12')]();_0x2315bc[_0x30cf('0x13')]=![];_0x2315bc[_0x30cf('0x14')]=![];if(_0x1f5c44[_0x30cf('0x15')]==='contact'||_0x1f5c44[_0x30cf('0x15')]===_0x30cf('0x16')){_0x2315bc['WhoId']=_0x1f5c44['id'];}else if(_0x1f5c44['endUserType']===_0x30cf('0x17')){_0x2315bc[_0x30cf('0x18')]=_0x1f5c44['id'];}}else if(_0x532c0a['ticketType']==='Case'){if(_0x1f5c44[_0x30cf('0x15')]==='contact'){_0x2315bc['ContactId']=_0x1f5c44['id'];}else if(_0x1f5c44[_0x30cf('0x15')]===_0x30cf('0x17')){_0x2315bc[_0x30cf('0x19')]=_0x1f5c44['id'];}else if(_0x1f5c44[_0x30cf('0x15')]===_0x30cf('0x16')&&_0x532c0a[_0x30cf('0x1a')]){_0x2315bc[_0x532c0a['leadId']]=_0x1f5c44['id'];}else{logger[_0x30cf('0x1b')](_0x30cf('0x1c'));}}}return _0x55328c['sobject'](_0x532c0a[_0x30cf('0x11')])['create'](_0x2315bc);}function getUser(_0x52fc8e,_0x459568,_0x41732c){if(!_[_0x30cf('0x1d')](_0x459568)&&intUtil[_0x30cf('0x1e')](_0x459568)){var _0x290390={'Email':_0x459568};var _0x476efc={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x41732c['sobject'](_0x30cf('0x1f'))[_0x30cf('0x20')](_0x290390,_0x476efc)[_0x30cf('0x21')]()[_0x30cf('0x22')](function(_0x5b2089){if(_0x5b2089[_0x30cf('0x23')]){var _0x38cdb4=_[_0x30cf('0x20')](_0x5b2089,function(_0x926a03){return _0x926a03[_0x30cf('0x24')]===_0x459568;});if(_0x38cdb4){logger[_0x30cf('0x1b')](_0x30cf('0x25'),_0x459568);return BPromise[_0x30cf('0x26')]({'id':_0x38cdb4['Id'],'name':_0x38cdb4[_0x30cf('0x27')]});}}else{logger[_0x30cf('0x1b')](_0x30cf('0x28'),_0x459568);return _0x41732c['identity']()[_0x30cf('0x22')](function(_0x403514){return BPromise[_0x30cf('0x26')]({'id':_0x403514[_0x30cf('0x29')],'name':_0x403514['display_name']});});}});}else{logger[_0x30cf('0x1b')](_0x30cf('0x28'),_0x459568);return _0x41732c[_0x30cf('0x2a')]()[_0x30cf('0x22')](function(_0x4a6127){return BPromise[_0x30cf('0x26')]({'id':_0x4a6127[_0x30cf('0x29')],'name':_0x4a6127[_0x30cf('0x2b')]});});}}function getEndUser(_0x542f75,_0x48a839,_0x1c1baf,_0x265555,_0x55256a){var _0x317259={'$or':{'Phone':_0x265555}};var _0x461e79={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x30cf('0x26')]()['then'](function(){logger[_0x30cf('0x1b')](_0x30cf('0x2c'),_0x265555,_0x48a839[_0x30cf('0x2d')]);switch(_0x48a839[_0x30cf('0x2d')]){case _0x30cf('0x2e'):var _0x23598c=_[_0x30cf('0x2f')](_0x317259);if(_0x48a839[_0x30cf('0x30')]){var _0x179e6a={};_0x179e6a[_0x48a839[_0x30cf('0x30')]]=_0x265555;_['merge'](_0x23598c[_0x30cf('0x31')],_0x179e6a);}return _0x55256a['sobject'](_0x30cf('0x32'))['find'](_0x23598c,_0x461e79)[_0x30cf('0x21')]()[_0x30cf('0x22')](function(_0x5d2e9f){if(_0x5d2e9f&&_0x5d2e9f[_0x30cf('0x23')]){return _0x5d2e9f;}else{var _0x583c94=_[_0x30cf('0x2f')](_0x317259);if(_0x48a839[_0x30cf('0x33')]){var _0x3f7d29={};_0x3f7d29[_0x48a839[_0x30cf('0x33')]]=_0x265555;_[_0x30cf('0x34')](_0x583c94['$or'],_0x3f7d29);}return _0x55256a[_0x30cf('0x35')](_0x30cf('0x36'))[_0x30cf('0x20')](_0x583c94,_0x461e79);}});case _0x30cf('0x37'):var _0xd0fc62=_[_0x30cf('0x2f')](_0x317259);if(_0x48a839['additionalSearchAccount']){var _0x179e6a={};_0x179e6a[_0x48a839[_0x30cf('0x38')]]=_0x265555;_[_0x30cf('0x34')](_0xd0fc62['$or'],_0x179e6a);}return _0x55256a[_0x30cf('0x35')](_0x30cf('0x39'))[_0x30cf('0x20')](_0xd0fc62,_0x461e79)[_0x30cf('0x21')]()[_0x30cf('0x22')](function(_0x533238){if(_0x533238&&_0x533238[_0x30cf('0x23')]){return _0x533238;}else{var _0x369ed6=_['cloneDeep'](_0x317259);if(_0x48a839[_0x30cf('0x30')]){var _0x5a06e6={};_0x5a06e6[_0x48a839[_0x30cf('0x30')]]=_0x265555;_[_0x30cf('0x34')](_0x369ed6[_0x30cf('0x31')],_0x5a06e6);}return _0x55256a[_0x30cf('0x35')](_0x30cf('0x32'))[_0x30cf('0x20')](_0x369ed6,_0x461e79)[_0x30cf('0x22')](function(_0x4163ad){if(_0x4163ad&&_0x4163ad['length']){return _0x4163ad;}else{var _0x4b7fe6=_[_0x30cf('0x2f')](_0x317259);if(_0x48a839['additionalSearchLead']){var _0x12b0cf={};_0x12b0cf[_0x48a839[_0x30cf('0x33')]]=_0x265555;_[_0x30cf('0x34')](_0x4b7fe6[_0x30cf('0x31')],_0x12b0cf);}return _0x55256a[_0x30cf('0x35')](_0x30cf('0x36'))[_0x30cf('0x20')](_0x4b7fe6,_0x461e79);}});}});case _0x30cf('0x3a'):var _0x23598c=_[_0x30cf('0x2f')](_0x317259);if(_0x48a839[_0x30cf('0x30')]){var _0x179e6a={};_0x179e6a[_0x48a839['additionalSearchContact']]=_0x265555;_[_0x30cf('0x34')](_0x23598c['$or'],_0x179e6a);}return _0x55256a[_0x30cf('0x35')](_0x30cf('0x32'))['find'](_0x23598c,_0x461e79)['execute']();case _0x30cf('0x16'):var _0x25ba1f=_['cloneDeep'](_0x317259);if(_0x48a839['additionalSearchLead']){var _0x179e6a={};_0x179e6a[_0x48a839[_0x30cf('0x33')]]=_0x265555;_[_0x30cf('0x34')](_0x25ba1f['$or'],_0x179e6a);}return _0x55256a[_0x30cf('0x35')](_0x30cf('0x36'))[_0x30cf('0x20')](_0x25ba1f,_0x461e79);case _0x30cf('0x17'):var _0xd0fc62=_[_0x30cf('0x2f')](_0x317259);if(_0x48a839['additionalSearchAccount']){var _0x179e6a={};_0x179e6a[_0x48a839['additionalSearchAccount']]=_0x265555;_[_0x30cf('0x34')](_0xd0fc62['$or'],_0x179e6a);}return _0x55256a['sobject'](_0x30cf('0x39'))[_0x30cf('0x20')](_0xd0fc62,_0x461e79);default:return null;}})['then'](function(_0xc58e91){if(_0xc58e91&&_0xc58e91[_0x30cf('0x23')]){var _0x32da5f=_['first'](_0xc58e91);if(_0x32da5f){return BPromise[_0x30cf('0x26')]({'id':_0x32da5f['Id'],'name':_0x32da5f['Name'],'phone':_0x32da5f[_0x30cf('0x3b')],'endUserType':_0x32da5f['attributes']['type']['toLowerCase']()});}}})['then'](function(_0x2b0832){if(_0x2b0832){logger[_0x30cf('0x1b')](_0x30cf('0x3c'),_0x2b0832[_0x30cf('0x15')],_0x265555);return BPromise[_0x30cf('0x26')](_0x2b0832);}else{logger['info'](_0x30cf('0x3d'),_0x265555);var _0x31c65e={'Phone':_0x265555};if(_0x48a839['moduleCreate']){if(_0x48a839[_0x30cf('0x3e')]===_0x30cf('0x3a')){logger[_0x30cf('0x1b')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x265555,_0x48a839[_0x30cf('0x3e')]);_0x31c65e[_0x30cf('0x3f')]=_0x1c1baf!==_0x30cf('0x40')?_0x1c1baf:util['format'](_0x30cf('0x41'),_0x265555);}else if(_0x48a839[_0x30cf('0x3e')]==='lead'){logger[_0x30cf('0x1b')](_0x30cf('0x42'),_0x265555,_0x48a839[_0x30cf('0x3e')]);_0x31c65e[_0x30cf('0x3f')]=_0x1c1baf!=='<unknown>'?_0x1c1baf:util['format'](_0x30cf('0x41'),_0x265555);_0x31c65e['Company']=_0x30cf('0x43');}else if(_0x48a839['moduleCreate']===_0x30cf('0x17')){logger[_0x30cf('0x1b')](_0x30cf('0x42'),_0x265555,_0x48a839[_0x30cf('0x3e')]);_0x31c65e[_0x30cf('0x27')]=_0x1c1baf!==_0x30cf('0x40')?_0x1c1baf:util['format'](_0x30cf('0x41'),_0x265555);}else{return null;}}return _0x55256a['sobject'](_[_0x30cf('0x44')](_0x48a839[_0x30cf('0x3e')]))[_0x30cf('0x45')](_0x31c65e)[_0x30cf('0x22')](function(_0x343cdc){return BPromise[_0x30cf('0x26')]({'id':_0x343cdc['id'],'endUserType':_0x48a839[_0x30cf('0x3e')]});});}});}function getCustomFields(_0x5af061,_0x1e6d94){var _0x34fc9f={};if(_0x5af061[_0x30cf('0x23')]>0x0){_[_0x30cf('0x46')](_0x5af061,function(_0x5df698){if(_[_0x30cf('0x47')]([_0x30cf('0x48'),'picklist'],_0x5df698[_0x30cf('0x49')])&&_0x5df698[_0x30cf('0x4a')]){_0x34fc9f[_0x5df698[_0x30cf('0x4a')]]=_0x5df698[_0x30cf('0x4b')][_0x30cf('0x4c')]();}else if(_0x5df698[_0x30cf('0x49')]==='variable'&&_0x5df698[_0x30cf('0x4d')]&&_0x5df698[_0x30cf('0x4a')]){_0x1e6d94[_0x5df698[_0x30cf('0x4d')]]&&(_0x34fc9f[_0x5df698['idField']]=_0x1e6d94[_0x5df698['variableName']][_0x30cf('0x4c')]());}else if(_0x5df698[_0x30cf('0x49')]==='customVariable'&&_0x5df698[_0x30cf('0x4e')]&&_0x5df698['Variable'][_0x30cf('0x4f')]&&_0x5df698[_0x30cf('0x4a')]){_0x1e6d94[_0x5df698[_0x30cf('0x4e')][_0x30cf('0x4f')][_0x30cf('0x50')]()]&&(_0x34fc9f[_0x5df698[_0x30cf('0x4a')]]=_0x1e6d94[_0x5df698[_0x30cf('0x4e')]['name']['toLowerCase']()][_0x30cf('0x4c')]());}});}return _0x34fc9f;}function getConnection(_0x58f68c){var _0x4c916d=_0x58f68c[_0x30cf('0x51')]['concat'](_0x58f68c[_0x30cf('0x52')]);var _0x18a6fb=new jsforce['Connection']({'oauth2':{'loginUrl':_0x58f68c[_0x30cf('0x53')]||_0x30cf('0x54'),'clientId':_0x58f68c[_0x30cf('0x55')],'clientSecret':_0x58f68c[_0x30cf('0x56')]}});return _0x18a6fb[_0x30cf('0x57')](_0x58f68c[_0x30cf('0x58')],_0x4c916d)[_0x30cf('0x22')](function(){logger['info']('Connection\x20established.');return _0x18a6fb;});}exports[_0x30cf('0x59')]=function(_0x337835,_0x5f25f8,_0x5322ec,_0x525a11,_0x36b5a4,_0x19832e){var _0x23efb2,_0x21efce,_0x55eaeb,_0x24e61b;_0x19832e[_0x30cf('0x5a')]=intUtil[_0x30cf('0x5b')](_0x19832e[_0x30cf('0x5a')]);_0x19832e[_0x30cf('0x53')]=intUtil['stripTrailingSlash'](_0x19832e[_0x30cf('0x53')]);if(_0x36b5a4&&_0x36b5a4[_0x30cf('0x5c')]){logger['info']('[QUEUE]',_0x30cf('0x5d'));_0x5f25f8[_0x30cf('0x5e')]=util[_0x30cf('0x5f')](_0x30cf('0x60'),_0x19832e[_0x30cf('0x5a')],_0x5f25f8[_0x30cf('0x61')],md5(_0x5f25f8[_0x30cf('0x61')]));}else{_0x5f25f8['recordingURL']='';}return getConnection(_0x19832e)[_0x30cf('0x22')](function(_0x408f89){_0x24e61b=_0x408f89;return getUser(_0x19832e,_0x525a11['email'],_0x24e61b);})['then'](function(_0x5a45cf){_0x23efb2=_0x5a45cf;return getEndUser(_0x19832e,_0x5322ec,_0x5f25f8['calleridname'],_0x5f25f8[_0x30cf('0x62')],_0x24e61b);})[_0x30cf('0x22')](function(_0x5a6631){_0x21efce=_0x5a6631;return getTicket(_0x19832e,_0x23efb2,_0x21efce,_0x5322ec,_0x5f25f8,_0x5322ec['Fields'],_0x24e61b,'queue');})[_0x30cf('0x22')](function(_0x587468){_0x55eaeb=_0x587468;logger[_0x30cf('0x1b')]('[QUEUE]\x20Ticket\x20%s\x20created',_0x55eaeb['id']);logger['info'](_0x30cf('0x63'),_0x55eaeb['id'],_0x525a11[_0x30cf('0x4f')],_0x19832e[_0x30cf('0x49')]);switch(_0x19832e['type']){case'integrationTab':emit(util['format'](_0x30cf('0x64'),_0x525a11[_0x30cf('0x4f')]),'trigger:salesforce:display',{'recordId':_0x55eaeb['id']});break;case _0x30cf('0x65'):emit(util[_0x30cf('0x5f')](_0x30cf('0x64'),_0x525a11[_0x30cf('0x4f')]),_0x30cf('0x66'),{'uri':util['format'](_0x30cf('0x67'),_0x24e61b[_0x30cf('0x68')],_0x55eaeb['id'])});break;default:logger[_0x30cf('0x69')](_0x30cf('0x6a'));}})['catch'](function(_0x18219b){logger['error']('[QUEUE]',_0x18219b);});};exports[_0x30cf('0x6b')]=function(_0x31d661,_0x3079af,_0x4be55f,_0x104818,_0x30d6ef,_0x8f7b95,_0x3f91a5){var _0x1d107c,_0xd72483,_0x4c9445,_0x1f9740;_0x8f7b95[_0x30cf('0x5a')]=intUtil[_0x30cf('0x5b')](_0x8f7b95[_0x30cf('0x5a')]);_0x8f7b95[_0x30cf('0x53')]=intUtil[_0x30cf('0x5b')](_0x8f7b95[_0x30cf('0x53')]);if(_0x3f91a5&&_0x3f91a5[_0x30cf('0x6c')]&&_0x3f91a5[_0x30cf('0x6c')]!==_0x30cf('0x6d')){logger[_0x30cf('0x1b')](_0x30cf('0x6e'),'Recording\x20is\x20enabled!');_0x3079af[_0x30cf('0x5e')]=util[_0x30cf('0x5f')](_0x30cf('0x60'),_0x8f7b95[_0x30cf('0x5a')],_0x3079af['uniqueid'],md5(_0x3079af[_0x30cf('0x61')]));}return getConnection(_0x8f7b95)['then'](function(_0x4511e9){_0x1f9740=_0x4511e9;return getUser(_0x8f7b95,_0x104818['email'],_0x1f9740);})[_0x30cf('0x22')](function(_0x3d3f5b){_0x1d107c=_0x3d3f5b;return getEndUser(_0x8f7b95,_0x4be55f,_0x3079af['destcalleridname'],_0x3079af[_0x30cf('0x6f')],_0x1f9740);})[_0x30cf('0x22')](function(_0x5a04b3){_0xd72483=_0x5a04b3;return getTicket(_0x8f7b95,_0x1d107c,_0xd72483,_0x4be55f,_0x3079af,_0x4be55f[_0x30cf('0x70')],_0x1f9740,_0x30cf('0x6b'));})[_0x30cf('0x22')](function(_0xfc3e6f){_0x4c9445=_0xfc3e6f;logger[_0x30cf('0x1b')](_0x30cf('0x71'),_0x4c9445['id']);logger[_0x30cf('0x1b')](_0x30cf('0x72'),_0x4c9445['id'],_0x104818[_0x30cf('0x4f')],_0x8f7b95[_0x30cf('0x49')]);switch(_0x8f7b95[_0x30cf('0x49')]){case _0x30cf('0x73'):emit(util[_0x30cf('0x5f')]('user:%s',_0x104818[_0x30cf('0x4f')]),_0x30cf('0x74'),{'recordId':_0x4c9445['id']});break;case'newTab':emit(util[_0x30cf('0x5f')]('user:%s',_0x104818['name']),_0x30cf('0x66'),{'uri':util['format'](_0x30cf('0x67'),_0x1f9740[_0x30cf('0x68')],_0x4c9445['id'])});break;default:logger['error'](_0x30cf('0x6e'),_0x30cf('0x75'));}})[_0x30cf('0x76')](function(_0x16da75){logger[_0x30cf('0x69')]('[OUTBOUND]',_0x16da75);});};exports[_0x30cf('0x77')]=function(_0x51fbdc,_0x4769f7,_0x5f1b4b,_0x4a61d6,_0xbe7925,_0x5a114a){var _0x18fa87,_0x5b9a93,_0x139e99,_0x55cfa;_0x5a114a[_0x30cf('0x5a')]=intUtil[_0x30cf('0x5b')](_0x5a114a['serverUrl']);_0x5a114a[_0x30cf('0x53')]=intUtil[_0x30cf('0x5b')](_0x5a114a['remoteUri']);if(_0xbe7925&&_0xbe7925[_0x30cf('0x5c')]){logger['info']('['+_0x4769f7[_0x30cf('0x78')]['toUpperCase']()+']',_0x30cf('0x5d'));_0x4769f7[_0x30cf('0x5e')]=util[_0x30cf('0x5f')](_0x30cf('0x60'),_0x5a114a[_0x30cf('0x5a')],_0x4769f7[_0x30cf('0x61')],md5(_0x4769f7['uniqueid']));}else{_0x4769f7[_0x30cf('0x5e')]='';}return getConnection(_0x5a114a)[_0x30cf('0x22')](function(_0x3c0894){_0x55cfa=_0x3c0894;if(!_[_0x30cf('0x1d')](_0x4a61d6)){return getUser(_0x5a114a,_0x4a61d6[_0x30cf('0x4f')],_0x55cfa);}else{return getUser(_0x5a114a,null,_0x55cfa);}})[_0x30cf('0x22')](function(_0x18bc60){_0x18fa87=_0x18bc60;return getEndUser(_0x5a114a,_0x5f1b4b,_0x4769f7[_0x30cf('0x79')],_0x4769f7[_0x30cf('0x62')],_0x55cfa);})[_0x30cf('0x22')](function(_0x47df5c){_0x5b9a93=_0x47df5c;return getTicket(_0x5a114a,_0x18fa87,_0x5b9a93,_0x5f1b4b,_0x4769f7,_0x5f1b4b['Fields'],_0x55cfa);})[_0x30cf('0x22')](function(_0x50d6ba){_0x139e99=_0x50d6ba;logger['info']('['+_0x4769f7[_0x30cf('0x78')][_0x30cf('0x7a')]()+_0x30cf('0x7b'),_0x139e99['id']);logger['info']('['+_0x4769f7[_0x30cf('0x78')][_0x30cf('0x7a')]()+']\x20Integration\x20account\x20type\x20%s.',_0x5a114a['type']);})[_0x30cf('0x76')](function(_0x18e17e){logger[_0x30cf('0x69')]('['+_0x4769f7[_0x30cf('0x78')][_0x30cf('0x7a')]()+']',_0x18e17e);});};
\ No newline at end of file
index 363998b..f7cf0d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9386=['string','picklist','type','nameField','customField','toLowerCase','toString','idField','content','variable','variableName','Variable','name',']\x20getTicket\x20input\x20crm','Subjects','getString','Descriptions','Fields','ticketId','ticketNumber','number',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','label_entry','incident','Incident','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','push','Tags','map','%26sysparm_record_target%3Dincident','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','/nav_to.do?uri=incident.do?sys_id%3D','format','user:%s','emit','trigger:browser:url','username','password','sysparm_limit=1','sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl','%s/api/now/table/','email','outbound','destcalleridnum','calleridnum','callDirection','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s','unmanaged','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','bluebird','request-promise','md5','ioredis','../../../../config/logger','servicenow','redis','defaults','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','then','length','adminId','result','sys_id','info','toUpperCase','catch','error','message','],\x20getUser\x20input\x20crm','validateEmail','userEmail','],\x20getUser\x20rp\x20obj','active','true','userId','adminEmail','],\x20getUser\x20crm',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','POST','sys_user?','endUserNumber','user','System','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','forEach','includes'];(function(_0x550a65,_0x442179){var _0x33271c=function(_0x1b7e55){while(--_0x1b7e55){_0x550a65['push'](_0x550a65['shift']());}};_0x33271c(++_0x442179);}(_0x9386,0x197));var _0x6938=function(_0x342d22,_0x8bec36){_0x342d22=_0x342d22-0x0;var _0x5c2868=_0x9386[_0x342d22];return _0x5c2868;};'use strict';var _=require(_0x6938('0x0'));var Promise=require(_0x6938('0x1'));var rp=require(_0x6938('0x2'));var util=require('util');var md5=require(_0x6938('0x3'));var Redis=require(_0x6938('0x4'));var intUtil=require('./util');var config=require('../../../../config/environment');var logger=require(_0x6938('0x5'))(_0x6938('0x6'));config[_0x6938('0x7')]=_[_0x6938('0x8')](config[_0x6938('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0x6938('0x9'))(new Redis(config[_0x6938('0x7')]));function getAdminUser(_0x5b66eb,_0x3f5232,_0x1b36bb,_0x27b91d,_0x3d197a,_0x137b1e){return new Promise(function(_0x3fc606,_0x5d484e){var _0x7a321a={'method':_0x6938('0xa'),'uri':_0x27b91d+_0x6938('0xb')+'&'+_0x3d197a+'&'+_0x137b1e,'auth':_0x3f5232,'json':!![]};return rp(_0x7a321a)[_0x6938('0xc')](function(_0x4d1664){if(_0x4d1664['result'][_0x6938('0xd')]>0x0){_0x1b36bb[_0x6938('0xe')]=_0x4d1664[_0x6938('0xf')][0x0][_0x6938('0x10')];}logger[_0x6938('0x11')]('['+[_0x5b66eb[_0x6938('0x12')]()]+'],\x20getAdminUser\x20crm',_0x1b36bb);_0x3fc606(_0x1b36bb);})[_0x6938('0x13')](function(_0x1f2051){logger[_0x6938('0x14')]('['+[_0x5b66eb[_0x6938('0x12')]()]+']',_0x1f2051[_0x6938('0x15')]);_0x5d484e(_0x1f2051['message']);});});}function getUser(_0x5981bc,_0x482faf,_0x4e261f,_0x250854,_0x25af91){return function(_0x4ab801){logger[_0x6938('0x11')]('['+[_0x5981bc['toUpperCase']()]+_0x6938('0x16'),_0x4ab801);return new Promise(function(_0x3b7216,_0x17fb02){if(intUtil[_0x6938('0x17')](_0x4ab801[_0x6938('0x18')])){var _0x23b7d3={'method':'GET','uri':_0x4e261f+'sys_user?sysparm_query=email%3D'+_0x4ab801['userEmail']+'&'+_0x250854+'&'+_0x25af91,'auth':_0x482faf,'json':!![]};logger['info']('['+[_0x5981bc[_0x6938('0x12')]()]+_0x6938('0x19'),_0x23b7d3);return rp(_0x23b7d3)[_0x6938('0xc')](function(_0x27c244){logger[_0x6938('0x11')]('['+[_0x5981bc[_0x6938('0x12')]()]+'],\x20getUser\x20entity',_0x27c244);if(_0x27c244['result'][_0x6938('0xd')]>0x0&&String(_0x27c244[_0x6938('0xf')][0x0][_0x6938('0x1a')])===_0x6938('0x1b')){_0x4ab801[_0x6938('0x1c')]=_0x27c244[_0x6938('0xf')][0x0][_0x6938('0x10')];}else{_0x4ab801[_0x6938('0x1c')]=_0x4ab801['adminId'];_0x4ab801['userEmail']=_0x4ab801[_0x6938('0x1d')];}logger[_0x6938('0x11')]('['+[_0x5981bc[_0x6938('0x12')]()]+_0x6938('0x1e'),_0x4ab801);_0x3b7216(_0x4ab801);})[_0x6938('0x13')](function(_0x566897){logger[_0x6938('0x14')]('['+[_0x5981bc[_0x6938('0x12')]()]+']',_0x566897[_0x6938('0x15')]);_0x17fb02(_0x566897['message']);});}else{logger[_0x6938('0x11')]('['+[_0x5981bc['toUpperCase']()]+_0x6938('0x1f'));_0x4ab801[_0x6938('0x1c')]=_0x4ab801[_0x6938('0xe')];_0x4ab801[_0x6938('0x18')]=_0x4ab801[_0x6938('0x1d')];_0x3b7216(_0x4ab801);}});};}function createEndUser(_0x3868f9,_0x200dd1,_0x26ed9e,_0x15e9a1,_0x18f779){logger['info']('['+[_0x3868f9[_0x6938('0x12')]()]+_0x6938('0x20'),_0x26ed9e);return new Promise(function(_0x1aa09b,_0x4d9f1e){var _0x5be139={'method':_0x6938('0x21'),'uri':_0x15e9a1+_0x6938('0x22')+_0x18f779,'body':{'user_name':_0x26ed9e[_0x6938('0x23')],'roles':_0x6938('0x24'),'first_name':_0x26ed9e[_0x6938('0x23')],'active':'true','date_format':_0x6938('0x25'),'phone':_0x26ed9e['endUserNumber']},'auth':_0x200dd1,'json':!![]};return rp(_0x5be139)[_0x6938('0xc')](function(_0x2d7884){logger[_0x6938('0x11')]('['+[_0x3868f9[_0x6938('0x12')]()]+_0x6938('0x26'),_0x2d7884[_0x6938('0xf')]);_0x26ed9e[_0x6938('0x27')]=_0x2d7884[_0x6938('0xf')][_0x6938('0x10')];_0x1aa09b(_0x26ed9e);})['catch'](function(_0x4d29e9){logger['error']('['+[_0x3868f9['toUpperCase']()]+']',_0x4d29e9['message']);_0x4d9f1e(_0x4d29e9['message']);});});}function getEndUser(_0x5e37f2,_0x422952,_0x3640d7,_0x5a02d6,_0x4b3d24){return function(_0x38c60c){logger[_0x6938('0x11')]('['+[_0x5e37f2['toUpperCase']()]+_0x6938('0x28'),_0x38c60c);return new Promise(function(_0x49e704,_0x52139d){var _0x3b395e={'method':_0x6938('0xa'),'uri':_0x3640d7+_0x6938('0x29')+_0x38c60c['endUserNumber']+'&'+_0x5a02d6+'&'+_0x4b3d24,'auth':_0x422952,'json':!![]};return rp(_0x3b395e)[_0x6938('0xc')](function(_0x899c64){if(_0x899c64[_0x6938('0xf')][_0x6938('0xd')]>0x0){_0x38c60c[_0x6938('0x27')]=_0x899c64[_0x6938('0xf')][0x0]['sys_id'];logger[_0x6938('0x11')]('['+[_0x5e37f2[_0x6938('0x12')]()]+_0x6938('0x2a'),_0x38c60c);_0x49e704(_0x38c60c);}else{return createEndUser(_0x5e37f2,_0x422952,_0x38c60c,_0x3640d7,_0x5a02d6)[_0x6938('0xc')](function(_0x49eda8){logger[_0x6938('0x11')]('['+[_0x5e37f2['toUpperCase']()]+'],\x20createEndUser\x20crm',_0x49eda8);_0x49e704(_0x49eda8);});}})['catch'](function(_0x1e7f1c){logger[_0x6938('0x14')]('['+[_0x5e37f2['toUpperCase']()]+']',_0x1e7f1c[_0x6938('0x15')]);_0x52139d(_0x1e7f1c[_0x6938('0x15')]);});});};}function getCustomFields(_0x332bde,_0x1f4021){var _0x5a437f={};if(_0x332bde[_0x6938('0xd')]>0x0){_[_0x6938('0x2b')](_0x332bde,function(_0x28df91){if(_[_0x6938('0x2c')]([_0x6938('0x2d'),_0x6938('0x2e')],_0x28df91[_0x6938('0x2f')])&&_0x28df91[_0x6938('0x30')]&&!_0x28df91[_0x6938('0x31')]){_0x5a437f[_0x28df91[_0x6938('0x30')][_0x6938('0x32')]()]=_0x28df91['content'][_0x6938('0x33')]();}else if(_['includes']([_0x6938('0x2d'),_0x6938('0x2e')],_0x28df91[_0x6938('0x2f')])&&_0x28df91[_0x6938('0x34')]&&_0x28df91[_0x6938('0x31')]){_0x5a437f[_0x28df91[_0x6938('0x34')]['toLowerCase']()]=_0x28df91[_0x6938('0x35')][_0x6938('0x33')]();}else if(_0x28df91['type']===_0x6938('0x36')&&_0x28df91[_0x6938('0x37')]&&_0x28df91[_0x6938('0x34')]&&_0x28df91[_0x6938('0x31')]){_0x5a437f[_0x28df91[_0x6938('0x34')][_0x6938('0x32')]()]=_0x1f4021[_0x28df91[_0x6938('0x37')]][_0x6938('0x33')]();}else if(_0x28df91[_0x6938('0x2f')]==='customVariable'&&_0x28df91[_0x6938('0x38')]&&_0x28df91[_0x6938('0x38')][_0x6938('0x39')]&&_0x28df91[_0x6938('0x34')]&&_0x28df91[_0x6938('0x31')]){_0x5a437f[_0x28df91[_0x6938('0x34')][_0x6938('0x32')]()]=_0x1f4021[_0x28df91[_0x6938('0x38')][_0x6938('0x39')]['toLowerCase']()]['toString']();}});}return _0x5a437f;}function getTicket(_0x103901,_0x2f4d32,_0x58e39b,_0x775ce9,_0x17bd00,_0x2902a7){return function(_0x2d57f8){logger[_0x6938('0x11')]('['+[_0x103901['toUpperCase']()]+_0x6938('0x3a'),_0x2d57f8);return new Promise(function(_0x169c13,_0x522f21){var _0x1c5e39=_0x103901[_0x6938('0x32')]()==='outbound'?_0x2d57f8[_0x6938('0x1c')]:_0x2d57f8[_0x6938('0x27')];var _0x50281a={'method':'POST','uri':_0x58e39b+'incident'+'?'+_0x2902a7,'body':Object['assign']({},{'active':_0x6938('0x1b'),'caller_id':_0x1c5e39,'assigned_to':_0x2d57f8[_0x6938('0x1c')],'short_description':intUtil['getString'](_0x775ce9[_0x6938('0x3b')],_0x17bd00,'\x20'),'description':intUtil[_0x6938('0x3c')](_0x775ce9[_0x6938('0x3d')],_0x17bd00,'\x0a')},getCustomFields(_0x775ce9[_0x6938('0x3e')],_0x17bd00)),'auth':_0x2f4d32,'json':!![]};return rp(_0x50281a)[_0x6938('0xc')](function(_0x24a16a){logger['info']('['+[_0x103901[_0x6938('0x12')]()]+']\x20POST\x20incident\x20entity\x20schema',_0x24a16a[_0x6938('0xf')]);_0x2d57f8[_0x6938('0x3f')]=_0x24a16a[_0x6938('0xf')][_0x6938('0x10')];_0x2d57f8[_0x6938('0x40')]=_0x24a16a[_0x6938('0xf')][_0x6938('0x41')];logger[_0x6938('0x11')]('['+[_0x103901[_0x6938('0x12')]()]+_0x6938('0x42'),_0x2d57f8);_0x169c13(_0x2d57f8);})[_0x6938('0x13')](function(_0x294b95){logger['error']('['+[_0x103901[_0x6938('0x12')]()]+']',_0x294b95[_0x6938('0x15')]);_0x522f21(_0x294b95[_0x6938('0x15')]);});});};}function createRemoteTag(_0x45c652,_0x41e6a0,_0x38e356,_0x53d4e2){return new Promise(function(_0x1a76bf,_0x56ab0c){var _0x15d16c={'method':_0x6938('0x21'),'uri':_0x38e356+_0x6938('0x43')+'?'+_0x53d4e2,'body':{'short_description':_0x45c652,'global':!![],'active':!![],'name':_0x45c652},'auth':_0x41e6a0,'json':!![]};return rp(_0x15d16c)[_0x6938('0xc')](function(_0x1d1d1b){var _0xe77d3e=_0x1d1d1b[_0x6938('0xf')][_0x6938('0x10')];_0x1a76bf(_0xe77d3e);});});}function getRemoteTag(_0x226768,_0x334212,_0x467baf,_0x56eb83,_0x318c74){return new Promise(function(_0x18a029,_0x29fc68){var _0x27165e={'method':_0x6938('0xa'),'uri':_0x467baf+_0x6938('0x43')+_0x6938('0x44')+_0x226768+'&'+_0x56eb83,'auth':_0x334212,'json':!![]};return rp(_0x27165e)['then'](function(_0x4d7ed2){if(_0x4d7ed2[_0x6938('0xf')][_0x6938('0xd')]>0x0){var _0xab310d=_0x4d7ed2[_0x6938('0xf')][0x0][_0x6938('0x10')];_0x18a029(_0xab310d);}else{return createRemoteTag(_0x226768,_0x334212,_0x467baf,_0x56eb83)['then'](function(_0x549f5e){_0x18a029(_0x549f5e);});}});});}function assignTagToIncident(_0x39618f,_0x114f32,_0x59a13e,_0x5d4b84,_0x3a59dd){return new Promise(function(_0xbe361,_0xcc44b6){var _0xb7e32d={'method':_0x6938('0x21'),'uri':_0x59a13e+_0x6938('0x45')+'?'+_0x3a59dd,'body':{'label':_0x39618f,'table':_0x6938('0x46'),'id_type':_0x6938('0x47'),'table_key':_0x5d4b84['ticketId'],'title':'Incident\x20-\x20'+_0x5d4b84[_0x6938('0x40')],'id_display':_0x5d4b84[_0x6938('0x40')]},'auth':_0x114f32,'json':!![]};return rp(_0xb7e32d)[_0x6938('0xc')](function(_0x4e2df7){_0xbe361();})['catch'](function(){_0xbe361();});});}function manageTags(_0x6422f9,_0x278986,_0x5bc1dd,_0x2081df,_0x49cf88,_0x277e81,_0x5372c4){return new Promise(function(_0x51e3f,_0x377b4c){var _0x1d9c06=[];_0x278986['forEach'](function(_0x24c888){_0x1d9c06['push'](getRemoteTag(_0x24c888,_0x5bc1dd,_0x2081df,_0x277e81,_0x5372c4));});return Promise[_0x6938('0x48')](_0x1d9c06)['then'](function(_0x2a3173){if(_0x2a3173['length']){logger[_0x6938('0x11')]('['+[_0x6422f9[_0x6938('0x12')]()]+_0x6938('0x49'),_0x2a3173);var _0x16bb23=[];_0x2a3173['forEach'](function(_0x358d78){_0x16bb23[_0x6938('0x4a')](assignTagToIncident(_0x358d78,_0x5bc1dd,_0x2081df,_0x49cf88,_0x277e81));});return Promise[_0x6938('0x48')](_0x16bb23)[_0x6938('0xc')](function(){_0x51e3f();})[_0x6938('0x13')](function(){_0x51e3f();});}else{_0x51e3f();}});});}function getTags(_0x3a3aa2,_0x5b9691,_0x4efb9e,_0xaff3bb,_0xafeddd,_0x23c1d0){return function(_0x3c1a62){return new Promise(function(_0x5d6a1e,_0x104759){var _0x3a8403=[];var _0x1b8a34=_0xaff3bb[_0x6938('0x4b')];if(_0x1b8a34&&_0x1b8a34['length']>0x0){_0x3a8403=_[_0x6938('0x4c')](_0x1b8a34,'name');}if(_0x3a8403['length']>0x0){return manageTags(_0x3a3aa2,_0x3a8403,_0x5b9691,_0x4efb9e,_0x3c1a62,_0xafeddd,_0x23c1d0)[_0x6938('0xc')](function(){_0x5d6a1e(_0x3c1a62);});}else{_0x5d6a1e(_0x3c1a62);}});};}function emit(_0x5b213e,_0x41e740,_0x4df9ff){var _0x52d6dd=_0x6938('0x4d')+_0x6938('0x4e')+_0x6938('0x4f')+'%255EORDERBYDESCnumber';var _0x51517b={'uri':_0x5b213e+_0x6938('0x50')+_0x4df9ff+_0x52d6dd};io['to'](util[_0x6938('0x51')](_0x6938('0x52'),_0x41e740))[_0x6938('0x53')](_0x6938('0x54'),_0x51517b);}exports['cs']=function(_0x90f291,_0x365819,_0x531975,_0x17f338,_0x45d3a8,_0x3deb39,_0x4054fa,_0xbfce2b){var _0x17b89f={};var _0x541939={'user':_0x3deb39[_0x6938('0x55')],'pass':_0x3deb39[_0x6938('0x56')]};var _0x21b9e7=_0x6938('0x57');var _0x4d6d58=_0x6938('0x58');_0x3deb39[_0x6938('0x59')]=intUtil[_0x6938('0x5a')](_0x3deb39[_0x6938('0x59')]);_0x3deb39[_0x6938('0x5b')]=intUtil[_0x6938('0x5a')](_0x3deb39[_0x6938('0x5b')]);var _0x1ef7ad=util[_0x6938('0x51')](_0x6938('0x5c'),_0x3deb39[_0x6938('0x59')]);_0x17b89f[_0x6938('0x18')]=!_['isNil'](_0x17f338)?_0x17f338[_0x6938('0x5d')]:null;_0x17b89f[_0x6938('0x1d')]=_0x3deb39[_0x6938('0x5d')];_0x17b89f[_0x6938('0x23')]=_0xbfce2b[_0x6938('0x32')]()===_0x6938('0x5e')?_0x365819[_0x6938('0x5f')]:_0x365819[_0x6938('0x60')];_0x17b89f[_0x6938('0x61')]=_0xbfce2b===_0x6938('0x62')||_0xbfce2b==='unmanaged'?_0x6938('0x62'):_0x6938('0x5e');var _0x3c75d7=util[_0x6938('0x51')](_0x6938('0x63'),_0x3deb39[_0x6938('0x5b')],_0x365819['uniqueid'],md5(_0x365819['uniqueid']));if(_0x45d3a8&&_0x45d3a8[_0x6938('0x64')]){logger[_0x6938('0x11')](_0x6938('0x65'),_0x6938('0x66'));_0x365819['recordingURL']=_0x3c75d7;}else if(_0x4054fa&&_0x4054fa[_0x6938('0x67')]&&_0x4054fa[_0x6938('0x67')]!==_0x6938('0x68')){logger[_0x6938('0x11')](_0x6938('0x69'),_0x6938('0x66'));_0x365819['recordingURL']=_0x3c75d7;}else{_0x365819[_0x6938('0x6a')]='';}return getAdminUser(_0xbfce2b,_0x541939,_0x17b89f,_0x1ef7ad,_0x4d6d58,_0x21b9e7)[_0x6938('0xc')](getUser(_0xbfce2b,_0x541939,_0x1ef7ad,_0x4d6d58,_0x21b9e7))[_0x6938('0xc')](getEndUser(_0xbfce2b,_0x541939,_0x1ef7ad,_0x4d6d58,_0x21b9e7))[_0x6938('0xc')](getTicket(_0xbfce2b,_0x541939,_0x1ef7ad,_0x531975,_0x365819,_0x4d6d58))[_0x6938('0xc')](function(_0x39194e){logger[_0x6938('0x11')](util['format'](_0x6938('0x6b'),_0x39194e[_0x6938('0x3f')]));logger[_0x6938('0x11')](util[_0x6938('0x51')](_0x6938('0x6c'),_0xbfce2b));if(_0xbfce2b!==_0x6938('0x6d')){logger[_0x6938('0x11')]('['+[_0xbfce2b[_0x6938('0x12')]()]+']',_0x6938('0x6e'));emit(_0x3deb39['remoteUri'],_0x17f338[_0x6938('0x39')],_0x39194e['ticketId']);}})[_0x6938('0x13')](function(_0x91f575){logger[_0x6938('0x14')]('['+[_0xbfce2b['toUpperCase']()]+_0x6938('0x6f'),util[_0x6938('0x70')](_0x91f575,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xe728=['type','nameField','customField','idField','toString','variable','variableName','toLowerCase','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','outbound','incident','assign','getString','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','number',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','label_entry','Incident','push','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','Tags','map','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','format','trigger:browser:url','username','sysparm_limit=1','sysparm_display_value=true','remoteUri','serverUrl','stripTrailingSlash','%s/api/now/table/','isNil','email','destcalleridnum','calleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','Recording\x20is\x20enabled!','recordingURL','recordingFormat','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','bluebird','md5','ioredis','./util','../../../../config/logger','redis','defaults','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','then','result','adminId','sys_id','info','toUpperCase','],\x20getAdminUser\x20crm','catch','error','message','],\x20getUser\x20input\x20crm','validateEmail','userEmail','],\x20getUser\x20entity','active','true','userId','],\x20getUser\x20crm',']\x20using\x20admin\x20profile','adminEmail','],\x20createEndUser\x20input\x20crm','POST','user','endUserNumber','],\x20EndUser\x20schema','sys_user?sysparm_query=phone%3D','length','endUserId','],\x20getEndUser\x20crm','forEach','includes','string','picklist'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xe728,0x1e1));var _0x8e72=function(_0x526cef,_0x17a5e6){_0x526cef=_0x526cef-0x0;var _0x74b31c=_0xe728[_0x526cef];return _0x74b31c;};'use strict';var _=require(_0x8e72('0x0'));var Promise=require(_0x8e72('0x1'));var rp=require('request-promise');var util=require('util');var md5=require(_0x8e72('0x2'));var Redis=require(_0x8e72('0x3'));var intUtil=require(_0x8e72('0x4'));var config=require('../../../../config/environment');var logger=require(_0x8e72('0x5'))('servicenow');config[_0x8e72('0x6')]=_[_0x8e72('0x7')](config[_0x8e72('0x6')],{'host':'localhost','port':0x18eb});var io=require(_0x8e72('0x8'))(new Redis(config[_0x8e72('0x6')]));function getAdminUser(_0x5d9b7d,_0x4fe27e,_0x30a92e,_0x3f07fa,_0x3a0c05,_0x16340f){return new Promise(function(_0x79c66a,_0x576c3c){var _0xeefdff={'method':_0x8e72('0x9'),'uri':_0x3f07fa+_0x8e72('0xa')+'&'+_0x3a0c05+'&'+_0x16340f,'auth':_0x4fe27e,'json':!![]};return rp(_0xeefdff)[_0x8e72('0xb')](function(_0x156703){if(_0x156703[_0x8e72('0xc')]['length']>0x0){_0x30a92e[_0x8e72('0xd')]=_0x156703['result'][0x0][_0x8e72('0xe')];}logger[_0x8e72('0xf')]('['+[_0x5d9b7d[_0x8e72('0x10')]()]+_0x8e72('0x11'),_0x30a92e);_0x79c66a(_0x30a92e);})[_0x8e72('0x12')](function(_0x58434c){logger[_0x8e72('0x13')]('['+[_0x5d9b7d[_0x8e72('0x10')]()]+']',_0x58434c['message']);_0x576c3c(_0x58434c[_0x8e72('0x14')]);});});}function getUser(_0x500cd7,_0x147458,_0x378f6b,_0x48de87,_0x101330){return function(_0x5a0014){logger['info']('['+[_0x500cd7[_0x8e72('0x10')]()]+_0x8e72('0x15'),_0x5a0014);return new Promise(function(_0x804acf,_0x16a822){if(intUtil[_0x8e72('0x16')](_0x5a0014['userEmail'])){var _0xe44b52={'method':_0x8e72('0x9'),'uri':_0x378f6b+'sys_user?sysparm_query=email%3D'+_0x5a0014[_0x8e72('0x17')]+'&'+_0x48de87+'&'+_0x101330,'auth':_0x147458,'json':!![]};logger[_0x8e72('0xf')]('['+[_0x500cd7[_0x8e72('0x10')]()]+'],\x20getUser\x20rp\x20obj',_0xe44b52);return rp(_0xe44b52)['then'](function(_0x1e43d0){logger['info']('['+[_0x500cd7[_0x8e72('0x10')]()]+_0x8e72('0x18'),_0x1e43d0);if(_0x1e43d0[_0x8e72('0xc')]['length']>0x0&&String(_0x1e43d0[_0x8e72('0xc')][0x0][_0x8e72('0x19')])===_0x8e72('0x1a')){_0x5a0014[_0x8e72('0x1b')]=_0x1e43d0['result'][0x0][_0x8e72('0xe')];}else{_0x5a0014['userId']=_0x5a0014[_0x8e72('0xd')];_0x5a0014[_0x8e72('0x17')]=_0x5a0014['adminEmail'];}logger['info']('['+[_0x500cd7[_0x8e72('0x10')]()]+_0x8e72('0x1c'),_0x5a0014);_0x804acf(_0x5a0014);})[_0x8e72('0x12')](function(_0x351939){logger[_0x8e72('0x13')]('['+[_0x500cd7[_0x8e72('0x10')]()]+']',_0x351939['message']);_0x16a822(_0x351939[_0x8e72('0x14')]);});}else{logger[_0x8e72('0xf')]('['+[_0x500cd7[_0x8e72('0x10')]()]+_0x8e72('0x1d'));_0x5a0014[_0x8e72('0x1b')]=_0x5a0014[_0x8e72('0xd')];_0x5a0014['userEmail']=_0x5a0014[_0x8e72('0x1e')];_0x804acf(_0x5a0014);}});};}function createEndUser(_0x1cceb9,_0xd3dbdf,_0x12400b,_0x369183,_0xcbdc72){logger[_0x8e72('0xf')]('['+[_0x1cceb9[_0x8e72('0x10')]()]+_0x8e72('0x1f'),_0x12400b);return new Promise(function(_0xd6857a,_0x15a87a){var _0x3e12c7={'method':_0x8e72('0x20'),'uri':_0x369183+'sys_user?'+_0xcbdc72,'body':{'user_name':_0x12400b['endUserNumber'],'roles':_0x8e72('0x21'),'first_name':_0x12400b['endUserNumber'],'active':_0x8e72('0x1a'),'date_format':'System','phone':_0x12400b[_0x8e72('0x22')]},'auth':_0xd3dbdf,'json':!![]};return rp(_0x3e12c7)[_0x8e72('0xb')](function(_0x31cbce){logger[_0x8e72('0xf')]('['+[_0x1cceb9[_0x8e72('0x10')]()]+_0x8e72('0x23'),_0x31cbce[_0x8e72('0xc')]);_0x12400b['endUserId']=_0x31cbce[_0x8e72('0xc')][_0x8e72('0xe')];_0xd6857a(_0x12400b);})[_0x8e72('0x12')](function(_0x2ae9e4){logger[_0x8e72('0x13')]('['+[_0x1cceb9[_0x8e72('0x10')]()]+']',_0x2ae9e4[_0x8e72('0x14')]);_0x15a87a(_0x2ae9e4[_0x8e72('0x14')]);});});}function getEndUser(_0x57fd18,_0x1974c5,_0x2d1bb8,_0x55cfc3,_0xbebefa){return function(_0x366401){logger[_0x8e72('0xf')]('['+[_0x57fd18['toUpperCase']()]+'],\x20getEndUser\x20input\x20crm',_0x366401);return new Promise(function(_0x47ea4d,_0x29fc14){var _0x5c1c71={'method':_0x8e72('0x9'),'uri':_0x2d1bb8+_0x8e72('0x24')+_0x366401[_0x8e72('0x22')]+'&'+_0x55cfc3+'&'+_0xbebefa,'auth':_0x1974c5,'json':!![]};return rp(_0x5c1c71)['then'](function(_0x5e490b){if(_0x5e490b['result'][_0x8e72('0x25')]>0x0){_0x366401[_0x8e72('0x26')]=_0x5e490b[_0x8e72('0xc')][0x0][_0x8e72('0xe')];logger[_0x8e72('0xf')]('['+[_0x57fd18['toUpperCase']()]+_0x8e72('0x27'),_0x366401);_0x47ea4d(_0x366401);}else{return createEndUser(_0x57fd18,_0x1974c5,_0x366401,_0x2d1bb8,_0x55cfc3)['then'](function(_0x155e9e){logger[_0x8e72('0xf')]('['+[_0x57fd18[_0x8e72('0x10')]()]+'],\x20createEndUser\x20crm',_0x155e9e);_0x47ea4d(_0x155e9e);});}})[_0x8e72('0x12')](function(_0x11ea21){logger['error']('['+[_0x57fd18[_0x8e72('0x10')]()]+']',_0x11ea21['message']);_0x29fc14(_0x11ea21[_0x8e72('0x14')]);});});};}function getCustomFields(_0x4e7198,_0x3b2fe7){var _0x389cd6={};if(_0x4e7198[_0x8e72('0x25')]>0x0){_[_0x8e72('0x28')](_0x4e7198,function(_0xd7e3c6){if(_[_0x8e72('0x29')]([_0x8e72('0x2a'),_0x8e72('0x2b')],_0xd7e3c6[_0x8e72('0x2c')])&&_0xd7e3c6[_0x8e72('0x2d')]&&!_0xd7e3c6[_0x8e72('0x2e')]){_0x389cd6[_0xd7e3c6[_0x8e72('0x2d')]['toLowerCase']()]=_0xd7e3c6['content']['toString']();}else if(_[_0x8e72('0x29')]([_0x8e72('0x2a'),_0x8e72('0x2b')],_0xd7e3c6[_0x8e72('0x2c')])&&_0xd7e3c6[_0x8e72('0x2f')]&&_0xd7e3c6[_0x8e72('0x2e')]){_0x389cd6[_0xd7e3c6['idField']['toLowerCase']()]=_0xd7e3c6['content'][_0x8e72('0x30')]();}else if(_0xd7e3c6['type']===_0x8e72('0x31')&&_0xd7e3c6[_0x8e72('0x32')]&&_0xd7e3c6[_0x8e72('0x2f')]&&_0xd7e3c6['customField']){_0x389cd6[_0xd7e3c6[_0x8e72('0x2f')][_0x8e72('0x33')]()]=_0x3b2fe7[_0xd7e3c6['variableName']][_0x8e72('0x30')]();}else if(_0xd7e3c6[_0x8e72('0x2c')]===_0x8e72('0x34')&&_0xd7e3c6[_0x8e72('0x35')]&&_0xd7e3c6[_0x8e72('0x35')][_0x8e72('0x36')]&&_0xd7e3c6['idField']&&_0xd7e3c6['customField']){_0x389cd6[_0xd7e3c6['idField'][_0x8e72('0x33')]()]=_0x3b2fe7[_0xd7e3c6[_0x8e72('0x35')][_0x8e72('0x36')][_0x8e72('0x33')]()][_0x8e72('0x30')]();}});}return _0x389cd6;}function getTicket(_0x4afcc6,_0x315b15,_0x4dbf21,_0x397ffc,_0x5a19c1,_0x2ec02a){return function(_0x500997){logger[_0x8e72('0xf')]('['+[_0x4afcc6[_0x8e72('0x10')]()]+_0x8e72('0x37'),_0x500997);return new Promise(function(_0xcf59f8,_0x3318c0){var _0x3d5e20=_0x4afcc6['toLowerCase']()===_0x8e72('0x38')?_0x500997[_0x8e72('0x1b')]:_0x500997[_0x8e72('0x26')];var _0x5d19be={'method':_0x8e72('0x20'),'uri':_0x4dbf21+_0x8e72('0x39')+'?'+_0x2ec02a,'body':Object[_0x8e72('0x3a')]({},{'active':_0x8e72('0x1a'),'caller_id':_0x3d5e20,'assigned_to':_0x500997[_0x8e72('0x1b')],'short_description':intUtil['getString'](_0x397ffc['Subjects'],_0x5a19c1,'\x20'),'description':intUtil[_0x8e72('0x3b')](_0x397ffc[_0x8e72('0x3c')],_0x5a19c1,'\x0a')},getCustomFields(_0x397ffc[_0x8e72('0x3d')],_0x5a19c1)),'auth':_0x315b15,'json':!![]};return rp(_0x5d19be)[_0x8e72('0xb')](function(_0x3c7036){logger[_0x8e72('0xf')]('['+[_0x4afcc6[_0x8e72('0x10')]()]+_0x8e72('0x3e'),_0x3c7036[_0x8e72('0xc')]);_0x500997[_0x8e72('0x3f')]=_0x3c7036[_0x8e72('0xc')]['sys_id'];_0x500997['ticketNumber']=_0x3c7036[_0x8e72('0xc')][_0x8e72('0x40')];logger[_0x8e72('0xf')]('['+[_0x4afcc6[_0x8e72('0x10')]()]+_0x8e72('0x41'),_0x500997);_0xcf59f8(_0x500997);})[_0x8e72('0x12')](function(_0x4a427b){logger['error']('['+[_0x4afcc6[_0x8e72('0x10')]()]+']',_0x4a427b['message']);_0x3318c0(_0x4a427b['message']);});});};}function createRemoteTag(_0x54e9d6,_0x5edd40,_0x1fd844,_0xbfa1f6){return new Promise(function(_0x54973e,_0x19cc1c){var _0x2256ad={'method':_0x8e72('0x20'),'uri':_0x1fd844+_0x8e72('0x42')+'?'+_0xbfa1f6,'body':{'short_description':_0x54e9d6,'global':!![],'active':!![],'name':_0x54e9d6},'auth':_0x5edd40,'json':!![]};return rp(_0x2256ad)['then'](function(_0x467156){var _0x5db189=_0x467156['result']['sys_id'];_0x54973e(_0x5db189);});});}function getRemoteTag(_0x1b0b21,_0x3a40c3,_0x54a7b9,_0x49c493,_0x19a34a){return new Promise(function(_0x1b12d7,_0x379d03){var _0x5d97ec={'method':'GET','uri':_0x54a7b9+_0x8e72('0x42')+_0x8e72('0x43')+_0x1b0b21+'&'+_0x49c493,'auth':_0x3a40c3,'json':!![]};return rp(_0x5d97ec)[_0x8e72('0xb')](function(_0x1698be){if(_0x1698be['result'][_0x8e72('0x25')]>0x0){var _0x18a87a=_0x1698be[_0x8e72('0xc')][0x0][_0x8e72('0xe')];_0x1b12d7(_0x18a87a);}else{return createRemoteTag(_0x1b0b21,_0x3a40c3,_0x54a7b9,_0x49c493)[_0x8e72('0xb')](function(_0x8c5477){_0x1b12d7(_0x8c5477);});}});});}function assignTagToIncident(_0x549fbe,_0x293da1,_0x4dcf1f,_0x476260,_0x403ff9){return new Promise(function(_0x3dd5ce,_0x1b3b06){var _0x514d33={'method':'POST','uri':_0x4dcf1f+_0x8e72('0x44')+'?'+_0x403ff9,'body':{'label':_0x549fbe,'table':'incident','id_type':_0x8e72('0x45'),'table_key':_0x476260[_0x8e72('0x3f')],'title':'Incident\x20-\x20'+_0x476260['ticketNumber'],'id_display':_0x476260['ticketNumber']},'auth':_0x293da1,'json':!![]};return rp(_0x514d33)['then'](function(_0x2b876b){_0x3dd5ce();})[_0x8e72('0x12')](function(){_0x3dd5ce();});});}function manageTags(_0x6a32f7,_0x4c10e6,_0x474b76,_0x2c78a1,_0x566399,_0x5a9af6,_0x31ce86){return new Promise(function(_0x396ab9,_0x1ad849){var _0xdb5542=[];_0x4c10e6['forEach'](function(_0x4db439){_0xdb5542[_0x8e72('0x46')](getRemoteTag(_0x4db439,_0x474b76,_0x2c78a1,_0x5a9af6,_0x31ce86));});return Promise[_0x8e72('0x47')](_0xdb5542)[_0x8e72('0xb')](function(_0x2f5c62){if(_0x2f5c62[_0x8e72('0x25')]){logger[_0x8e72('0xf')]('['+[_0x6a32f7[_0x8e72('0x10')]()]+_0x8e72('0x48'),_0x2f5c62);var _0x5dd615=[];_0x2f5c62[_0x8e72('0x28')](function(_0x2bab6f){_0x5dd615[_0x8e72('0x46')](assignTagToIncident(_0x2bab6f,_0x474b76,_0x2c78a1,_0x566399,_0x5a9af6));});return Promise[_0x8e72('0x47')](_0x5dd615)['then'](function(){_0x396ab9();})[_0x8e72('0x12')](function(){_0x396ab9();});}else{_0x396ab9();}});});}function getTags(_0x364382,_0x7ae961,_0xb79f0c,_0x5c0363,_0x17a996,_0x41040b){return function(_0x4820e8){return new Promise(function(_0x51b654,_0x18f192){var _0x51eca6=[];var _0x4556e5=_0x5c0363[_0x8e72('0x49')];if(_0x4556e5&&_0x4556e5['length']>0x0){_0x51eca6=_[_0x8e72('0x4a')](_0x4556e5,_0x8e72('0x36'));}if(_0x51eca6[_0x8e72('0x25')]>0x0){return manageTags(_0x364382,_0x51eca6,_0x7ae961,_0xb79f0c,_0x4820e8,_0x17a996,_0x41040b)[_0x8e72('0xb')](function(){_0x51b654(_0x4820e8);});}else{_0x51b654(_0x4820e8);}});};}function emit(_0x23c58d,_0x3649c7,_0x321f43){var _0x44ab95='%26sysparm_record_target%3Dincident'+_0x8e72('0x4b')+_0x8e72('0x4c')+_0x8e72('0x4d');var _0x55e4a6={'uri':_0x23c58d+'/nav_to.do?uri=incident.do?sys_id%3D'+_0x321f43+_0x44ab95};io['to'](util[_0x8e72('0x4e')]('user:%s',_0x3649c7))['emit'](_0x8e72('0x4f'),_0x55e4a6);}exports['cs']=function(_0x45b9c4,_0x343bc3,_0x52b368,_0x42e729,_0x483ff3,_0x321785,_0x57aa96,_0x4b1d98){var _0x43b91e={};var _0xf3b391={'user':_0x321785[_0x8e72('0x50')],'pass':_0x321785['password']};var _0x7b3f12=_0x8e72('0x51');var _0x56e8a0=_0x8e72('0x52');_0x321785[_0x8e72('0x53')]=intUtil['stripTrailingSlash'](_0x321785[_0x8e72('0x53')]);_0x321785[_0x8e72('0x54')]=intUtil[_0x8e72('0x55')](_0x321785[_0x8e72('0x54')]);var _0x594968=util['format'](_0x8e72('0x56'),_0x321785[_0x8e72('0x53')]);_0x43b91e[_0x8e72('0x17')]=!_[_0x8e72('0x57')](_0x42e729)?_0x42e729[_0x8e72('0x58')]:null;_0x43b91e[_0x8e72('0x1e')]=_0x321785['email'];_0x43b91e['endUserNumber']=_0x4b1d98[_0x8e72('0x33')]()===_0x8e72('0x38')?_0x343bc3[_0x8e72('0x59')]:_0x343bc3[_0x8e72('0x5a')];_0x43b91e[_0x8e72('0x5b')]=_0x4b1d98===_0x8e72('0x5c')||_0x4b1d98===_0x8e72('0x5d')?_0x8e72('0x5c'):'outbound';var _0x4fe0a2=util[_0x8e72('0x4e')](_0x8e72('0x5e'),_0x321785[_0x8e72('0x54')],_0x343bc3['uniqueid'],md5(_0x343bc3[_0x8e72('0x5f')]));if(_0x483ff3&&_0x483ff3[_0x8e72('0x60')]){logger[_0x8e72('0xf')]('[QUEUE]',_0x8e72('0x61'));_0x343bc3[_0x8e72('0x62')]=_0x4fe0a2;}else if(_0x57aa96&&_0x57aa96['recordingFormat']&&_0x57aa96[_0x8e72('0x63')]!=='none'){logger[_0x8e72('0xf')](_0x8e72('0x64'),'Recording\x20is\x20enabled!');_0x343bc3[_0x8e72('0x62')]=_0x4fe0a2;}else{_0x343bc3[_0x8e72('0x62')]='';}return getAdminUser(_0x4b1d98,_0xf3b391,_0x43b91e,_0x594968,_0x56e8a0,_0x7b3f12)['then'](getUser(_0x4b1d98,_0xf3b391,_0x594968,_0x56e8a0,_0x7b3f12))[_0x8e72('0xb')](getEndUser(_0x4b1d98,_0xf3b391,_0x594968,_0x56e8a0,_0x7b3f12))[_0x8e72('0xb')](getTicket(_0x4b1d98,_0xf3b391,_0x594968,_0x52b368,_0x343bc3,_0x56e8a0))[_0x8e72('0xb')](function(_0x1fbe28){logger[_0x8e72('0xf')](util[_0x8e72('0x4e')](_0x8e72('0x65'),_0x1fbe28['ticketId']));logger[_0x8e72('0xf')](util[_0x8e72('0x4e')](_0x8e72('0x66'),_0x4b1d98));if(_0x4b1d98!==_0x8e72('0x5d')){logger[_0x8e72('0xf')]('['+[_0x4b1d98[_0x8e72('0x10')]()]+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x321785[_0x8e72('0x53')],_0x42e729['name'],_0x1fbe28[_0x8e72('0x3f')]);}})[_0x8e72('0x12')](function(_0x2e5d89){logger[_0x8e72('0x13')]('['+[_0x4b1d98[_0x8e72('0x10')]()]+_0x8e72('0x67'),util[_0x8e72('0x68')](_0x2e5d89,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 80df122..662030c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b0f=['apiKey','toString','get_server_info','Getting\x20agent\x20with\x20name','get_entry_list','Employees','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','then','entry_list','length','find','value','Agent\x20found!','resolve','name_value_list','info','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','user_id','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','contacts.phone_home\x20=\x20\x22%s\x22','phone_home','Enduser\x20found!','first_name','<unknown>','Caller\x20-\x20%s','Enduser\x20created.','debug','[HTTP]','map','type','nameField','toLowerCase','content','string','custom_fields','variable','customVariable','Variable','customField','username','password','xCALLY\x20Motion\x20integration','Account\x20%d\x20is\x20not\x20valid','set_relationship','queue','remoteUri','stripTrailingSlash','serverUrl','uri','%s/service/v4_1/rest.php','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','Fields','Inbound','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','users','contacts','version','charAt','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','user:%s','trigger:browser:url','recordingFormat','none','[OUTBOUND]','uniqueid','destcalleridname','destcalleridnum','Outbound','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','catch','error','unmanaged','monitor_format','lastevent','calleridnum','toUpperCase','bluebird','util','ioredis','../../../../config/environment','../../../../config/logger','sugarcrm','redis','defaults','localhost','socket.io-emitter','POST','Creating\x20new\x20ticket...','name','Subjects','created_by','description','getString','Descriptions','slice','duration_hours','duration_minutes','parent_id','parent_type','Contacts','direction','forEach','push','idField','variableName','set_entry','JSON','stringify','Calls','format'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0b0f,0x1be));var _0xf0b0=function(_0x38f200,_0x41859e){_0x38f200=_0x38f200-0x0;var _0x365631=_0x0b0f[_0x38f200];return _0x365631;};'use strict';var _=require('lodash');var rp=require('request-promise');var BPromise=require(_0xf0b0('0x0'));var md5=require('md5');var util=require(_0xf0b0('0x1'));var Redis=require(_0xf0b0('0x2'));var intUtil=require('./util');var config=require(_0xf0b0('0x3'));var logger=require(_0xf0b0('0x4'))(_0xf0b0('0x5'));config[_0xf0b0('0x6')]=_[_0xf0b0('0x7')](config[_0xf0b0('0x6')],{'host':_0xf0b0('0x8'),'port':0x18eb});var io=require(_0xf0b0('0x9'))(new Redis(config['redis']));var def={'method':_0xf0b0('0xa'),'json':!![]};function emit(_0x42a871,_0x4ab31d,_0x25cc83){io['to'](_0x42a871)['emit'](_0x4ab31d,_0x25cc83);}function getTicket(_0x6f12e2,_0x32b9fc,_0x549c5a,_0x17cd75,_0x1fce3b,_0xa22564,_0x4a2792,_0xf74095){logger['info'](_0xf0b0('0xb'));var _0x4b02f0=new Date();var _0x33853e=[{'name':_0xf0b0('0xc'),'value':intUtil['getString'](_0x17cd75[_0xf0b0('0xd')],_0x1fce3b,'\x20')},{'name':'assigned_user_id','value':_0x32b9fc['id']},{'name':_0xf0b0('0xe'),'value':_0x32b9fc['id']},{'name':_0xf0b0('0xf'),'value':intUtil[_0xf0b0('0x10')](_0x17cd75[_0xf0b0('0x11')],_0x1fce3b,'\x0a')},{'name':'date_start','value':_0x4b02f0['toISOString']()[_0xf0b0('0x12')](0x0,0x13)['replace']('T','\x20')},{'name':_0xf0b0('0x13'),'value':'0'},{'name':_0xf0b0('0x14'),'value':'15'},{'name':_0xf0b0('0x15'),'value':_0x549c5a['id']},{'name':_0xf0b0('0x16'),'value':_0xf0b0('0x17')},{'name':'parent_name','value':_0x549c5a['name']},{'name':_0xf0b0('0x18'),'value':_0xf74095}];if(_0xa22564['length']){_[_0xf0b0('0x19')](_0xa22564,function(_0x3c193a){if(_0x1fce3b[_0x3c193a['variableName']]){_0x33853e[_0xf0b0('0x1a')]({'name':_0x3c193a[_0xf0b0('0x1b')],'value':_0x1fce3b[_0x3c193a[_0xf0b0('0x1c')]]});}});}return request({'form':{'method':_0xf0b0('0x1d'),'input_type':'JSON','response_type':_0xf0b0('0x1e'),'rest_data':JSON[_0xf0b0('0x1f')]({'session':_0x4a2792['id'],'module_name':_0xf0b0('0x20'),'name_value_list':_0x33853e})}});}function getAuth(_0x2712c9){return util[_0xf0b0('0x21')]('Basic\x20%s',new Buffer(_0x2712c9[_0xf0b0('0x22')]+':X')[_0xf0b0('0x23')]('base64'));}function getServerInfo(_0x40ef46){return request({'form':{'method':_0xf0b0('0x24'),'input_type':_0xf0b0('0x1e'),'response_type':_0xf0b0('0x1e'),'rest_data':JSON[_0xf0b0('0x1f')]({'session':_0x40ef46['id']})}});}function getUser(_0x53f084,_0x47ff04,_0x27b570){if(!_['isNil'](_0x47ff04)){logger['info'](_0xf0b0('0x25'),_0x47ff04);return request({'form':{'method':_0xf0b0('0x26'),'input_type':'JSON','response_type':_0xf0b0('0x1e'),'rest_data':JSON[_0xf0b0('0x1f')]({'session':_0x27b570['id'],'module_name':_0xf0b0('0x27'),'query':util['format'](_0xf0b0('0x28'),_0x47ff04),'order_by':'','offset':'0','select_fields':['id',_0xf0b0('0xc'),_0xf0b0('0x29')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0xf0b0('0x2a')](function(_0x157525){if(_0x157525[_0xf0b0('0x2b')][_0xf0b0('0x2c')]){var _0x2fa1b4=_[_0xf0b0('0x2d')](_0x157525[_0xf0b0('0x2b')],function(_0x189fd2){return _0x189fd2['name_value_list'][_0xf0b0('0x29')][_0xf0b0('0x2e')]===_0x47ff04;});if(_0x2fa1b4){logger['info'](_0xf0b0('0x2f'));return BPromise[_0xf0b0('0x30')]({'id':_0x2fa1b4[_0xf0b0('0x31')]['id']['value'],'name':_0x2fa1b4[_0xf0b0('0x31')][_0xf0b0('0xc')][_0xf0b0('0x2e')]});}}logger[_0xf0b0('0x32')](_0xf0b0('0x33'));return BPromise[_0xf0b0('0x30')]({'id':_0x27b570[_0xf0b0('0x31')][_0xf0b0('0x34')][_0xf0b0('0x2e')],'name':_0x27b570['name_value_list'][_0xf0b0('0x29')]['value']});});}else{logger[_0xf0b0('0x32')](_0xf0b0('0x35'));return BPromise[_0xf0b0('0x30')]({'id':_0x27b570[_0xf0b0('0x31')]['user_id'][_0xf0b0('0x2e')],'name':_0x27b570[_0xf0b0('0x31')][_0xf0b0('0x29')]['value']});}}function getEndUser(_0x1f4630,_0x34c2de,_0x282169,_0x56d99f){logger[_0xf0b0('0x32')](_0xf0b0('0x36'),_0x282169);return request({'form':{'method':_0xf0b0('0x26'),'input_type':_0xf0b0('0x1e'),'response_type':_0xf0b0('0x1e'),'rest_data':JSON[_0xf0b0('0x1f')]({'session':_0x56d99f['id'],'module_name':'Contacts','query':util[_0xf0b0('0x21')](_0xf0b0('0x37'),_0x282169),'order_by':'','offset':'0','select_fields':['id',_0xf0b0('0xc'),_0xf0b0('0x38')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0xf0b0('0x2a')](function(_0xc68d11){if(_0xc68d11[_0xf0b0('0x2b')][_0xf0b0('0x2c')]){var _0x140872=_[_0xf0b0('0x2d')](_0xc68d11[_0xf0b0('0x2b')],function(_0xd98343){return _0xd98343[_0xf0b0('0x31')][_0xf0b0('0x38')]['value']===_0x282169;});if(_0x140872){logger[_0xf0b0('0x32')](_0xf0b0('0x39'));return BPromise['resolve']({'id':_0x140872['name_value_list']['id'][_0xf0b0('0x2e')],'name':_0x140872['name_value_list'][_0xf0b0('0xc')][_0xf0b0('0x2e')],'phone':_0x140872[_0xf0b0('0x31')][_0xf0b0('0x38')][_0xf0b0('0x2e')]});}}else{logger[_0xf0b0('0x32')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'form':{'method':_0xf0b0('0x1d'),'input_type':_0xf0b0('0x1e'),'response_type':_0xf0b0('0x1e'),'rest_data':JSON['stringify']({'session':_0x56d99f['id'],'module_name':'Contacts','name_value_list':[{'name':_0xf0b0('0x3a'),'value':_0x34c2de!==_0xf0b0('0x3b')?_0x34c2de:util[_0xf0b0('0x21')](_0xf0b0('0x3c'),_0x282169)},{'name':_0xf0b0('0x38'),'value':_0x282169}]})}})['then'](function(_0x70773d){logger[_0xf0b0('0x32')](_0xf0b0('0x3d'));return BPromise['resolve']({'id':_0x70773d['id'],'name':_0x70773d[_0xf0b0('0x2b')][_0xf0b0('0x3a')][_0xf0b0('0x2e')],'phone':_0x70773d[_0xf0b0('0x2b')][_0xf0b0('0x38')][_0xf0b0('0x2e')]});});}});}function request(_0x1b05ca){logger[_0xf0b0('0x3e')](_0xf0b0('0x3f'),JSON[_0xf0b0('0x1f')](_0x1b05ca));return rp(_['merge'](def,_0x1b05ca));}function getTags(_0x58927d,_0x3270dd){var _0x5c4514=[];if(_0x58927d&&_0x58927d['length']>0x0){_0x5c4514=_[_0xf0b0('0x40')](_0x58927d,_0x3270dd);}return _0x5c4514;}function getCustomFields(_0xfde6c0,_0x2bd854){var _0x2068ac=[];var _0x28f1f4={'custom_fields':[]};if(_0xfde6c0[_0xf0b0('0x2c')]>0x0){_[_0xf0b0('0x19')](_0xfde6c0,function(_0x5370fc){if(_0x5370fc[_0xf0b0('0x41')]==='string'&&_0x5370fc[_0xf0b0('0x42')]&&!_0x5370fc['customField']){_0x28f1f4[_0x5370fc['nameField'][_0xf0b0('0x43')]()]=_0x5370fc[_0xf0b0('0x44')]['toString']();}else if(_0x5370fc[_0xf0b0('0x41')]===_0xf0b0('0x45')&&_0x5370fc['idField']&&_0x5370fc['customField']){_0x28f1f4[_0xf0b0('0x46')][_0xf0b0('0x1a')]({'id':_0x5370fc[_0xf0b0('0x1b')],'value':_0x5370fc[_0xf0b0('0x44')][_0xf0b0('0x23')]()});}else if(_0x5370fc[_0xf0b0('0x41')]===_0xf0b0('0x47')&&_0x5370fc['variableName']&&_0x5370fc[_0xf0b0('0x1b')]&&_0x5370fc['customField']){_0x2bd854[_0x5370fc['variableName']]&&_0x28f1f4[_0xf0b0('0x46')][_0xf0b0('0x1a')]({'id':_0x5370fc[_0xf0b0('0x1b')],'value':_0x2bd854[_0x5370fc['variableName']][_0xf0b0('0x23')]()});}else if(_0x5370fc[_0xf0b0('0x41')]===_0xf0b0('0x48')&&_0x5370fc[_0xf0b0('0x49')]&&_0x5370fc[_0xf0b0('0x49')][_0xf0b0('0xc')]&&_0x5370fc[_0xf0b0('0x1b')]&&_0x5370fc[_0xf0b0('0x4a')]){_0x2bd854[_0x5370fc['Variable'][_0xf0b0('0xc')]['toLowerCase']()]&&_0x28f1f4[_0xf0b0('0x46')][_0xf0b0('0x1a')]({'id':_0x5370fc['idField'],'value':_0x2bd854[_0x5370fc[_0xf0b0('0x49')][_0xf0b0('0xc')][_0xf0b0('0x43')]()][_0xf0b0('0x23')]()});}});}return _0x28f1f4;}function getConnection(_0x25c083){return request({'method':_0xf0b0('0xa'),'form':{'method':'login','input_type':_0xf0b0('0x1e'),'response_type':_0xf0b0('0x1e'),'rest_data':JSON['stringify']({'user_auth':{'user_name':_0x25c083[_0xf0b0('0x4b')],'password':_0x25c083[_0xf0b0('0x4c')],'encryption':'PLAIN'},'application':_0xf0b0('0x4d')})}})[_0xf0b0('0x2a')](function(_0x2d000c){var _0x57bc23=_0x2d000c;if(_0x57bc23['id']){def['sessionID']=_0x57bc23['id'];return BPromise[_0xf0b0('0x30')](_0x57bc23);}else{throw new Error(util[_0xf0b0('0x21')](_0xf0b0('0x4e'),_0x25c083['id']));}});}function setRelationship(_0x39b59a,_0xfb998b,_0x1ec969,_0x681533){return request({'form':{'method':_0xf0b0('0x4f'),'input_type':_0xf0b0('0x1e'),'response_type':'JSON','rest_data':JSON['stringify']({'session':_0x39b59a['id'],'module_name':'Calls','module_id':_0x1ec969['id'],'link_field_name':_0x681533,'related_ids':[_0xfb998b['id']],'name_value_list':[],'delete':0x0})}});}exports[_0xf0b0('0x50')]=function(_0x15e410,_0x314a63,_0x3f616e,_0x1f7a51,_0x200361,_0x584ff6){var _0x5eea3a,_0x34a93f,_0x32a544,_0x2e0fa6;_0x584ff6[_0xf0b0('0x51')]=intUtil[_0xf0b0('0x52')](_0x584ff6[_0xf0b0('0x51')]);_0x584ff6[_0xf0b0('0x53')]=intUtil[_0xf0b0('0x52')](_0x584ff6[_0xf0b0('0x53')]);def[_0xf0b0('0x54')]=util['format'](_0xf0b0('0x55'),_0x584ff6['remoteUri']);if(_0x200361&&_0x200361['monitor_format']){logger[_0xf0b0('0x32')](_0xf0b0('0x56'),_0xf0b0('0x57'));_0x314a63[_0xf0b0('0x58')]=util[_0xf0b0('0x21')](_0xf0b0('0x59'),_0x584ff6[_0xf0b0('0x53')],_0x314a63['uniqueid'],md5(_0x314a63['uniqueid']));}else{_0x314a63[_0xf0b0('0x58')]='';}return getConnection(_0x584ff6)[_0xf0b0('0x2a')](function(_0x56693b){_0x2e0fa6=_0x56693b;return getUser(_0x584ff6,_0x1f7a51[_0xf0b0('0xc')],_0x2e0fa6);})[_0xf0b0('0x2a')](function(_0x4f4c46){_0x5eea3a=_0x4f4c46;logger[_0xf0b0('0x32')](_0xf0b0('0x5a'),_0x5eea3a['id']);return getEndUser(_0x584ff6,_0x314a63[_0xf0b0('0x5b')],_0x314a63['calleridnum'],_0x2e0fa6);})['then'](function(_0x515b04){_0x34a93f=_0x515b04;logger['info'](_0xf0b0('0x5c'),_0x34a93f['id']);return getTicket(_0x584ff6,_0x5eea3a,_0x34a93f,_0x3f616e,_0x314a63,_0x3f616e[_0xf0b0('0x5d')],_0x2e0fa6,_0xf0b0('0x5e'));})['then'](function(_0x45438f){_0x32a544=_0x45438f;logger[_0xf0b0('0x32')](_0xf0b0('0x5f'));logger['info'](_0xf0b0('0x60'),_0x32a544['id']);return setRelationship(_0x2e0fa6,_0x5eea3a,_0x32a544,_0xf0b0('0x61'));})[_0xf0b0('0x2a')](function(){return setRelationship(_0x2e0fa6,_0x34a93f,_0x32a544,_0xf0b0('0x62'));})[_0xf0b0('0x2a')](function(){return getServerInfo(_0x2e0fa6);})[_0xf0b0('0x2a')](function(_0x5080e8){var _0x1037e2=parseInt(_0x5080e8[_0xf0b0('0x63')][_0xf0b0('0x64')](0x0));var _0x38218a=util[_0xf0b0('0x21')]('%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s',_0x584ff6[_0xf0b0('0x51')],_0x32a544['id']);if(_0x1037e2>0x6){_0x38218a=util[_0xf0b0('0x21')](_0xf0b0('0x65'),_0x584ff6['remoteUri'],_0x32a544['id']);}logger[_0xf0b0('0x32')](_0xf0b0('0x56'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xf0b0('0x21')](_0xf0b0('0x66'),_0x1f7a51[_0xf0b0('0xc')]),_0xf0b0('0x67'),{'uri':_0x38218a});})['catch'](function(_0x27e242){logger['error'](_0xf0b0('0x56'),JSON[_0xf0b0('0x1f')](_0x27e242));});};exports['outbound']=function(_0x1a846e,_0x385163,_0x3e1c28,_0x3d3bc8,_0x504ff0,_0x539dc2,_0xf8a0d3){var _0x2683e4,_0x44386d,_0x335526,_0x5d92dd;_0x539dc2[_0xf0b0('0x51')]=intUtil[_0xf0b0('0x52')](_0x539dc2[_0xf0b0('0x51')]);_0x539dc2[_0xf0b0('0x53')]=intUtil[_0xf0b0('0x52')](_0x539dc2[_0xf0b0('0x53')]);def['uri']=util['format'](_0xf0b0('0x55'),_0x539dc2[_0xf0b0('0x51')]);if(_0xf8a0d3&&_0xf8a0d3[_0xf0b0('0x68')]&&_0xf8a0d3[_0xf0b0('0x68')]!==_0xf0b0('0x69')){logger[_0xf0b0('0x32')](_0xf0b0('0x6a'),'Recording\x20is\x20enabled!');_0x385163[_0xf0b0('0x58')]=util[_0xf0b0('0x21')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x539dc2[_0xf0b0('0x53')],_0x385163[_0xf0b0('0x6b')],md5(_0x385163['uniqueid']));}return getConnection(_0x539dc2)[_0xf0b0('0x2a')](function(_0x4da2b2){_0x5d92dd=_0x4da2b2;return getUser(_0x539dc2,_0x3d3bc8[_0xf0b0('0xc')],_0x5d92dd);})[_0xf0b0('0x2a')](function(_0x2fef52){_0x2683e4=_0x2fef52;logger[_0xf0b0('0x32')](_0xf0b0('0x5a'),_0x2683e4['id']);return getEndUser(_0x539dc2,_0x385163[_0xf0b0('0x6c')],_0x385163[_0xf0b0('0x6d')],_0x5d92dd);})[_0xf0b0('0x2a')](function(_0x31a594){_0x44386d=_0x31a594;logger[_0xf0b0('0x32')]('The\x20Enduser\x20ID\x20is:',_0x44386d['id']);return getTicket(_0x539dc2,_0x2683e4,_0x44386d,_0x3e1c28,_0x385163,_0x3e1c28[_0xf0b0('0x5d')],_0x5d92dd,_0xf0b0('0x6e'));})[_0xf0b0('0x2a')](function(_0x4f71b1){_0x335526=_0x4f71b1;logger['info'](_0xf0b0('0x5f'));logger[_0xf0b0('0x32')]('The\x20Ticket\x20ID\x20is:',_0x335526['id']);return setRelationship(_0x5d92dd,_0x2683e4,_0x335526,_0xf0b0('0x61'));})['then'](function(){return setRelationship(_0x5d92dd,_0x44386d,_0x335526,_0xf0b0('0x62'));})[_0xf0b0('0x2a')](function(){return getServerInfo(_0x5d92dd);})[_0xf0b0('0x2a')](function(_0x174bdb){var _0x572e44=parseInt(_0x174bdb['version'][_0xf0b0('0x64')](0x0));var _0xe0414a=util[_0xf0b0('0x21')](_0xf0b0('0x6f'),_0x539dc2[_0xf0b0('0x51')],_0x335526['id']);if(_0x572e44>0x6){_0xe0414a=util[_0xf0b0('0x21')](_0xf0b0('0x65'),_0x539dc2[_0xf0b0('0x51')],_0x335526['id']);}logger[_0xf0b0('0x32')]('[OUTBOUND]',_0xf0b0('0x70'));emit(util['format'](_0xf0b0('0x66'),_0x3d3bc8['name']),_0xf0b0('0x67'),{'uri':_0xe0414a});})[_0xf0b0('0x71')](function(_0x551cb7){logger[_0xf0b0('0x72')](_0xf0b0('0x6a'),JSON['stringify'](_0x551cb7));});};exports[_0xf0b0('0x73')]=function(_0x19a6b1,_0x1fc930,_0x38b928,_0xf9ffec,_0x36929e,_0x5373bc){var _0x4727f9,_0x3e3a2f,_0x4848dd,_0x341a35;_0x5373bc['remoteUri']=intUtil[_0xf0b0('0x52')](_0x5373bc[_0xf0b0('0x51')]);_0x5373bc['serverUrl']=intUtil[_0xf0b0('0x52')](_0x5373bc[_0xf0b0('0x53')]);def[_0xf0b0('0x54')]=util['format']('%s/service/v4_1/rest.php',_0x5373bc[_0xf0b0('0x51')]);if(_0x36929e&&_0x36929e[_0xf0b0('0x74')]){logger[_0xf0b0('0x32')]('['+_0x1fc930[_0xf0b0('0x75')]['toUpperCase']()+']',_0xf0b0('0x57'));_0x1fc930[_0xf0b0('0x58')]=util[_0xf0b0('0x21')](_0xf0b0('0x59'),_0x5373bc[_0xf0b0('0x53')],_0x1fc930[_0xf0b0('0x6b')],md5(_0x1fc930[_0xf0b0('0x6b')]));}else{_0x1fc930[_0xf0b0('0x58')]='';}return getConnection(_0x5373bc)['then'](function(_0x19ab73){_0x341a35=_0x19ab73;if(!_['isNil'](_0xf9ffec)){return getUser(_0x5373bc,_0xf9ffec[_0xf0b0('0xc')],_0x341a35);}else{return getUser(_0x5373bc,null,_0x341a35);}})[_0xf0b0('0x2a')](function(_0x5c475a){_0x4727f9=_0x5c475a;logger[_0xf0b0('0x32')](_0xf0b0('0x5a'),_0x4727f9['id']);return getEndUser(_0x5373bc,_0x1fc930[_0xf0b0('0x5b')],_0x1fc930[_0xf0b0('0x76')],_0x341a35);})[_0xf0b0('0x2a')](function(_0x57a3d6){_0x3e3a2f=_0x57a3d6;logger['info'](_0xf0b0('0x5c'),_0x3e3a2f['id']);return getTicket(_0x5373bc,_0x4727f9,_0x3e3a2f,_0x38b928,_0x1fc930,_0x38b928[_0xf0b0('0x5d')],_0x341a35,_0xf0b0('0x5e'));})[_0xf0b0('0x2a')](function(_0x384e51){_0x4848dd=_0x384e51;logger['info'](_0xf0b0('0x5f'));logger[_0xf0b0('0x32')](_0xf0b0('0x60'),_0x4848dd['id']);return setRelationship(_0x341a35,_0x4727f9,_0x4848dd,_0xf0b0('0x61'));})[_0xf0b0('0x2a')](function(){return setRelationship(_0x341a35,_0x3e3a2f,_0x4848dd,_0xf0b0('0x62'));})[_0xf0b0('0x2a')](function(){return getServerInfo(_0x341a35);})['catch'](function(_0x1befcb){logger[_0xf0b0('0x72')]('['+_0x1fc930[_0xf0b0('0x75')][_0xf0b0('0x77')]()+']',JSON[_0xf0b0('0x1f')](_0x1befcb));});};
\ No newline at end of file
+var _0x22ef=['destcalleridnum','Outbound','user:%s','lastevent','toUpperCase','calleridname','lodash','request-promise','bluebird','md5','util','./util','../../../../config/environment','sugarcrm','redis','localhost','socket.io-emitter','POST','emit','name','Subjects','assigned_user_id','created_by','description','getString','Descriptions','slice','replace','duration_hours','duration_minutes','parent_id','parent_type','Contacts','parent_name','direction','forEach','push','variableName','set_entry','JSON','stringify','Calls','format','Basic\x20%s','toString','get_server_info','isNil','info','Getting\x20agent\x20with\x20name','Employees','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','then','length','find','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','entry_list','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','<unknown>','Caller\x20-\x20%s','Enduser\x20created.','first_name','debug','[HTTP]','merge','map','type','string','nameField','customField','toLowerCase','content','idField','custom_fields','customVariable','Variable','login','username','password','xCALLY\x20Motion\x20integration','sessionID','Account\x20%d\x20is\x20not\x20valid','set_relationship','queue','remoteUri','stripTrailingSlash','uri','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','calleridnum','The\x20Enduser\x20ID\x20is:','Fields','Inbound','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','users','contacts','version','charAt','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','catch','error','recordingFormat','[OUTBOUND]','The\x20User\x20ID\x20is:','destcalleridname'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x22ef,0x174));var _0xf22e=function(_0x2ad3a0,_0x32bb81){_0x2ad3a0=_0x2ad3a0-0x0;var _0x424146=_0x22ef[_0x2ad3a0];return _0x424146;};'use strict';var _=require(_0xf22e('0x0'));var rp=require(_0xf22e('0x1'));var BPromise=require(_0xf22e('0x2'));var md5=require(_0xf22e('0x3'));var util=require(_0xf22e('0x4'));var Redis=require('ioredis');var intUtil=require(_0xf22e('0x5'));var config=require(_0xf22e('0x6'));var logger=require('../../../../config/logger')(_0xf22e('0x7'));config['redis']=_['defaults'](config[_0xf22e('0x8')],{'host':_0xf22e('0x9'),'port':0x18eb});var io=require(_0xf22e('0xa'))(new Redis(config['redis']));var def={'method':_0xf22e('0xb'),'json':!![]};function emit(_0x4525c1,_0x20ecd2,_0x56c6b1){io['to'](_0x4525c1)[_0xf22e('0xc')](_0x20ecd2,_0x56c6b1);}function getTicket(_0xd79d80,_0x573a18,_0x1735c5,_0x265241,_0x37bb9e,_0x2d3379,_0x22378f,_0x2dc0a4){logger['info']('Creating\x20new\x20ticket...');var _0x13e854=new Date();var _0x57c1dc=[{'name':_0xf22e('0xd'),'value':intUtil['getString'](_0x265241[_0xf22e('0xe')],_0x37bb9e,'\x20')},{'name':_0xf22e('0xf'),'value':_0x573a18['id']},{'name':_0xf22e('0x10'),'value':_0x573a18['id']},{'name':_0xf22e('0x11'),'value':intUtil[_0xf22e('0x12')](_0x265241[_0xf22e('0x13')],_0x37bb9e,'\x0a')},{'name':'date_start','value':_0x13e854['toISOString']()[_0xf22e('0x14')](0x0,0x13)[_0xf22e('0x15')]('T','\x20')},{'name':_0xf22e('0x16'),'value':'0'},{'name':_0xf22e('0x17'),'value':'15'},{'name':_0xf22e('0x18'),'value':_0x1735c5['id']},{'name':_0xf22e('0x19'),'value':_0xf22e('0x1a')},{'name':_0xf22e('0x1b'),'value':_0x1735c5[_0xf22e('0xd')]},{'name':_0xf22e('0x1c'),'value':_0x2dc0a4}];if(_0x2d3379['length']){_[_0xf22e('0x1d')](_0x2d3379,function(_0x5a8ebd){if(_0x37bb9e[_0x5a8ebd['variableName']]){_0x57c1dc[_0xf22e('0x1e')]({'name':_0x5a8ebd['idField'],'value':_0x37bb9e[_0x5a8ebd[_0xf22e('0x1f')]]});}});}return request({'form':{'method':_0xf22e('0x20'),'input_type':_0xf22e('0x21'),'response_type':'JSON','rest_data':JSON[_0xf22e('0x22')]({'session':_0x22378f['id'],'module_name':_0xf22e('0x23'),'name_value_list':_0x57c1dc})}});}function getAuth(_0xd6400b){return util[_0xf22e('0x24')](_0xf22e('0x25'),new Buffer(_0xd6400b['apiKey']+':X')[_0xf22e('0x26')]('base64'));}function getServerInfo(_0x2e11a9){return request({'form':{'method':_0xf22e('0x27'),'input_type':_0xf22e('0x21'),'response_type':'JSON','rest_data':JSON[_0xf22e('0x22')]({'session':_0x2e11a9['id']})}});}function getUser(_0x493753,_0xceb9b2,_0x263c6e){if(!_[_0xf22e('0x28')](_0xceb9b2)){logger[_0xf22e('0x29')](_0xf22e('0x2a'),_0xceb9b2);return request({'form':{'method':'get_entry_list','input_type':_0xf22e('0x21'),'response_type':'JSON','rest_data':JSON['stringify']({'session':_0x263c6e['id'],'module_name':_0xf22e('0x2b'),'query':util[_0xf22e('0x24')](_0xf22e('0x2c'),_0xceb9b2),'order_by':'','offset':'0','select_fields':['id',_0xf22e('0xd'),_0xf22e('0x2d')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0xf22e('0x2e')](function(_0x3d64be){if(_0x3d64be['entry_list'][_0xf22e('0x2f')]){var _0x22b9d0=_[_0xf22e('0x30')](_0x3d64be['entry_list'],function(_0x14af65){return _0x14af65[_0xf22e('0x31')]['user_name'][_0xf22e('0x32')]===_0xceb9b2;});if(_0x22b9d0){logger[_0xf22e('0x29')](_0xf22e('0x33'));return BPromise['resolve']({'id':_0x22b9d0[_0xf22e('0x31')]['id']['value'],'name':_0x22b9d0[_0xf22e('0x31')][_0xf22e('0xd')][_0xf22e('0x32')]});}}logger[_0xf22e('0x29')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0xf22e('0x34')]({'id':_0x263c6e[_0xf22e('0x31')][_0xf22e('0x35')][_0xf22e('0x32')],'name':_0x263c6e['name_value_list']['user_name']['value']});});}else{logger['info'](_0xf22e('0x36'));return BPromise[_0xf22e('0x34')]({'id':_0x263c6e[_0xf22e('0x31')][_0xf22e('0x35')]['value'],'name':_0x263c6e['name_value_list'][_0xf22e('0x2d')][_0xf22e('0x32')]});}}function getEndUser(_0x2ddd7d,_0x2a3b97,_0x445149,_0x5b9f80){logger[_0xf22e('0x29')]('Searching\x20enduser\x20with\x20phone',_0x445149);return request({'form':{'method':'get_entry_list','input_type':_0xf22e('0x21'),'response_type':_0xf22e('0x21'),'rest_data':JSON[_0xf22e('0x22')]({'session':_0x5b9f80['id'],'module_name':_0xf22e('0x1a'),'query':util['format'](_0xf22e('0x37'),_0x445149),'order_by':'','offset':'0','select_fields':['id',_0xf22e('0xd'),_0xf22e('0x38')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0xf22e('0x2e')](function(_0x9ac930){if(_0x9ac930[_0xf22e('0x39')][_0xf22e('0x2f')]){var _0x2c9e86=_[_0xf22e('0x30')](_0x9ac930[_0xf22e('0x39')],function(_0x585ea6){return _0x585ea6['name_value_list'][_0xf22e('0x38')][_0xf22e('0x32')]===_0x445149;});if(_0x2c9e86){logger[_0xf22e('0x29')](_0xf22e('0x3a'));return BPromise['resolve']({'id':_0x2c9e86[_0xf22e('0x31')]['id']['value'],'name':_0x2c9e86['name_value_list'][_0xf22e('0xd')][_0xf22e('0x32')],'phone':_0x2c9e86[_0xf22e('0x31')]['phone_home'][_0xf22e('0x32')]});}}else{logger[_0xf22e('0x29')](_0xf22e('0x3b'));return request({'form':{'method':_0xf22e('0x20'),'input_type':'JSON','response_type':_0xf22e('0x21'),'rest_data':JSON[_0xf22e('0x22')]({'session':_0x5b9f80['id'],'module_name':_0xf22e('0x1a'),'name_value_list':[{'name':'first_name','value':_0x2a3b97!==_0xf22e('0x3c')?_0x2a3b97:util[_0xf22e('0x24')](_0xf22e('0x3d'),_0x445149)},{'name':_0xf22e('0x38'),'value':_0x445149}]})}})[_0xf22e('0x2e')](function(_0x1c0783){logger[_0xf22e('0x29')](_0xf22e('0x3e'));return BPromise[_0xf22e('0x34')]({'id':_0x1c0783['id'],'name':_0x1c0783[_0xf22e('0x39')][_0xf22e('0x3f')][_0xf22e('0x32')],'phone':_0x1c0783[_0xf22e('0x39')][_0xf22e('0x38')][_0xf22e('0x32')]});});}});}function request(_0x4af046){logger[_0xf22e('0x40')](_0xf22e('0x41'),JSON['stringify'](_0x4af046));return rp(_[_0xf22e('0x42')](def,_0x4af046));}function getTags(_0x1da226,_0x57d819){var _0x385d5b=[];if(_0x1da226&&_0x1da226[_0xf22e('0x2f')]>0x0){_0x385d5b=_[_0xf22e('0x43')](_0x1da226,_0x57d819);}return _0x385d5b;}function getCustomFields(_0x48b23a,_0x4b2526){var _0x433f04=[];var _0x430e6c={'custom_fields':[]};if(_0x48b23a[_0xf22e('0x2f')]>0x0){_[_0xf22e('0x1d')](_0x48b23a,function(_0x25ca2b){if(_0x25ca2b[_0xf22e('0x44')]===_0xf22e('0x45')&&_0x25ca2b[_0xf22e('0x46')]&&!_0x25ca2b[_0xf22e('0x47')]){_0x430e6c[_0x25ca2b[_0xf22e('0x46')][_0xf22e('0x48')]()]=_0x25ca2b[_0xf22e('0x49')][_0xf22e('0x26')]();}else if(_0x25ca2b[_0xf22e('0x44')]===_0xf22e('0x45')&&_0x25ca2b[_0xf22e('0x4a')]&&_0x25ca2b['customField']){_0x430e6c[_0xf22e('0x4b')]['push']({'id':_0x25ca2b[_0xf22e('0x4a')],'value':_0x25ca2b['content'][_0xf22e('0x26')]()});}else if(_0x25ca2b[_0xf22e('0x44')]==='variable'&&_0x25ca2b[_0xf22e('0x1f')]&&_0x25ca2b[_0xf22e('0x4a')]&&_0x25ca2b['customField']){_0x4b2526[_0x25ca2b[_0xf22e('0x1f')]]&&_0x430e6c[_0xf22e('0x4b')]['push']({'id':_0x25ca2b['idField'],'value':_0x4b2526[_0x25ca2b[_0xf22e('0x1f')]][_0xf22e('0x26')]()});}else if(_0x25ca2b[_0xf22e('0x44')]===_0xf22e('0x4c')&&_0x25ca2b[_0xf22e('0x4d')]&&_0x25ca2b['Variable'][_0xf22e('0xd')]&&_0x25ca2b[_0xf22e('0x4a')]&&_0x25ca2b[_0xf22e('0x47')]){_0x4b2526[_0x25ca2b[_0xf22e('0x4d')][_0xf22e('0xd')][_0xf22e('0x48')]()]&&_0x430e6c[_0xf22e('0x4b')]['push']({'id':_0x25ca2b[_0xf22e('0x4a')],'value':_0x4b2526[_0x25ca2b[_0xf22e('0x4d')][_0xf22e('0xd')]['toLowerCase']()][_0xf22e('0x26')]()});}});}return _0x430e6c;}function getConnection(_0x56163a){return request({'method':_0xf22e('0xb'),'form':{'method':_0xf22e('0x4e'),'input_type':_0xf22e('0x21'),'response_type':_0xf22e('0x21'),'rest_data':JSON['stringify']({'user_auth':{'user_name':_0x56163a[_0xf22e('0x4f')],'password':_0x56163a[_0xf22e('0x50')],'encryption':'PLAIN'},'application':_0xf22e('0x51')})}})[_0xf22e('0x2e')](function(_0x119c5c){var _0x5e9a1c=_0x119c5c;if(_0x5e9a1c['id']){def[_0xf22e('0x52')]=_0x5e9a1c['id'];return BPromise[_0xf22e('0x34')](_0x5e9a1c);}else{throw new Error(util[_0xf22e('0x24')](_0xf22e('0x53'),_0x56163a['id']));}});}function setRelationship(_0x415fee,_0x37fc60,_0x680416,_0x5a4910){return request({'form':{'method':_0xf22e('0x54'),'input_type':_0xf22e('0x21'),'response_type':'JSON','rest_data':JSON[_0xf22e('0x22')]({'session':_0x415fee['id'],'module_name':'Calls','module_id':_0x680416['id'],'link_field_name':_0x5a4910,'related_ids':[_0x37fc60['id']],'name_value_list':[],'delete':0x0})}});}exports[_0xf22e('0x55')]=function(_0x255721,_0x565e86,_0x5a373c,_0x33d77c,_0x587013,_0x274225){var _0x59d1e0,_0x45e623,_0x3f1ff9,_0x173978;_0x274225['remoteUri']=intUtil['stripTrailingSlash'](_0x274225[_0xf22e('0x56')]);_0x274225['serverUrl']=intUtil[_0xf22e('0x57')](_0x274225['serverUrl']);def[_0xf22e('0x58')]=util['format']('%s/service/v4_1/rest.php',_0x274225[_0xf22e('0x56')]);if(_0x587013&&_0x587013[_0xf22e('0x59')]){logger[_0xf22e('0x29')](_0xf22e('0x5a'),_0xf22e('0x5b'));_0x565e86[_0xf22e('0x5c')]=util[_0xf22e('0x24')](_0xf22e('0x5d'),_0x274225[_0xf22e('0x5e')],_0x565e86[_0xf22e('0x5f')],md5(_0x565e86[_0xf22e('0x5f')]));}else{_0x565e86[_0xf22e('0x5c')]='';}return getConnection(_0x274225)[_0xf22e('0x2e')](function(_0x46c1ef){_0x173978=_0x46c1ef;return getUser(_0x274225,_0x33d77c[_0xf22e('0xd')],_0x173978);})[_0xf22e('0x2e')](function(_0x163f84){_0x59d1e0=_0x163f84;logger['info']('The\x20User\x20ID\x20is:',_0x59d1e0['id']);return getEndUser(_0x274225,_0x565e86['calleridname'],_0x565e86[_0xf22e('0x60')],_0x173978);})['then'](function(_0x5aa30f){_0x45e623=_0x5aa30f;logger[_0xf22e('0x29')](_0xf22e('0x61'),_0x45e623['id']);return getTicket(_0x274225,_0x59d1e0,_0x45e623,_0x5a373c,_0x565e86,_0x5a373c[_0xf22e('0x62')],_0x173978,_0xf22e('0x63'));})[_0xf22e('0x2e')](function(_0x4c5dde){_0x3f1ff9=_0x4c5dde;logger[_0xf22e('0x29')](_0xf22e('0x64'));logger['info'](_0xf22e('0x65'),_0x3f1ff9['id']);return setRelationship(_0x173978,_0x59d1e0,_0x3f1ff9,_0xf22e('0x66'));})[_0xf22e('0x2e')](function(){return setRelationship(_0x173978,_0x45e623,_0x3f1ff9,_0xf22e('0x67'));})[_0xf22e('0x2e')](function(){return getServerInfo(_0x173978);})[_0xf22e('0x2e')](function(_0x43af08){var _0x11bc09=parseInt(_0x43af08[_0xf22e('0x68')][_0xf22e('0x69')](0x0));var _0xcf6ba7=util[_0xf22e('0x24')](_0xf22e('0x6a'),_0x274225[_0xf22e('0x56')],_0x3f1ff9['id']);if(_0x11bc09>0x6){_0xcf6ba7=util[_0xf22e('0x24')](_0xf22e('0x6b'),_0x274225[_0xf22e('0x56')],_0x3f1ff9['id']);}logger[_0xf22e('0x29')](_0xf22e('0x5a'),_0xf22e('0x6c'));emit(util[_0xf22e('0x24')]('user:%s',_0x33d77c[_0xf22e('0xd')]),_0xf22e('0x6d'),{'uri':_0xcf6ba7});})[_0xf22e('0x6e')](function(_0x3125c3){logger[_0xf22e('0x6f')](_0xf22e('0x5a'),JSON[_0xf22e('0x22')](_0x3125c3));});};exports['outbound']=function(_0x356aeb,_0x4d1d74,_0x158ac6,_0x2b8f95,_0x5b15f7,_0x351b07,_0x50ba31){var _0x2825ee,_0x15b98b,_0x1500ad,_0x1a5b44;_0x351b07[_0xf22e('0x56')]=intUtil['stripTrailingSlash'](_0x351b07[_0xf22e('0x56')]);_0x351b07[_0xf22e('0x5e')]=intUtil[_0xf22e('0x57')](_0x351b07[_0xf22e('0x5e')]);def[_0xf22e('0x58')]=util[_0xf22e('0x24')]('%s/service/v4_1/rest.php',_0x351b07[_0xf22e('0x56')]);if(_0x50ba31&&_0x50ba31[_0xf22e('0x70')]&&_0x50ba31[_0xf22e('0x70')]!=='none'){logger['info'](_0xf22e('0x71'),_0xf22e('0x5b'));_0x4d1d74[_0xf22e('0x5c')]=util[_0xf22e('0x24')](_0xf22e('0x5d'),_0x351b07[_0xf22e('0x5e')],_0x4d1d74[_0xf22e('0x5f')],md5(_0x4d1d74[_0xf22e('0x5f')]));}return getConnection(_0x351b07)[_0xf22e('0x2e')](function(_0xf19ac8){_0x1a5b44=_0xf19ac8;return getUser(_0x351b07,_0x2b8f95[_0xf22e('0xd')],_0x1a5b44);})['then'](function(_0x4db484){_0x2825ee=_0x4db484;logger[_0xf22e('0x29')](_0xf22e('0x72'),_0x2825ee['id']);return getEndUser(_0x351b07,_0x4d1d74[_0xf22e('0x73')],_0x4d1d74[_0xf22e('0x74')],_0x1a5b44);})[_0xf22e('0x2e')](function(_0x3de6c2){_0x15b98b=_0x3de6c2;logger[_0xf22e('0x29')](_0xf22e('0x61'),_0x15b98b['id']);return getTicket(_0x351b07,_0x2825ee,_0x15b98b,_0x158ac6,_0x4d1d74,_0x158ac6['Fields'],_0x1a5b44,_0xf22e('0x75'));})[_0xf22e('0x2e')](function(_0x54ea71){_0x1500ad=_0x54ea71;logger[_0xf22e('0x29')](_0xf22e('0x64'));logger['info'](_0xf22e('0x65'),_0x1500ad['id']);return setRelationship(_0x1a5b44,_0x2825ee,_0x1500ad,_0xf22e('0x66'));})['then'](function(){return setRelationship(_0x1a5b44,_0x15b98b,_0x1500ad,'contacts');})[_0xf22e('0x2e')](function(){return getServerInfo(_0x1a5b44);})['then'](function(_0x2a0227){var _0x80e0a7=parseInt(_0x2a0227['version'][_0xf22e('0x69')](0x0));var _0xbb4698=util[_0xf22e('0x24')]('%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s',_0x351b07[_0xf22e('0x56')],_0x1500ad['id']);if(_0x80e0a7>0x6){_0xbb4698=util[_0xf22e('0x24')]('%s/#bwc/index.php?module=Calls&action=EditView&record=%s',_0x351b07[_0xf22e('0x56')],_0x1500ad['id']);}logger[_0xf22e('0x29')]('[OUTBOUND]',_0xf22e('0x6c'));emit(util[_0xf22e('0x24')](_0xf22e('0x76'),_0x2b8f95[_0xf22e('0xd')]),_0xf22e('0x6d'),{'uri':_0xbb4698});})[_0xf22e('0x6e')](function(_0x376a1e){logger[_0xf22e('0x6f')]('[OUTBOUND]',JSON[_0xf22e('0x22')](_0x376a1e));});};exports['unmanaged']=function(_0x436325,_0x4e30d8,_0x296fb8,_0x1f7061,_0x13ca82,_0x319209){var _0x3c2cb6,_0x2fd289,_0x11184f,_0x18920f;_0x319209[_0xf22e('0x56')]=intUtil[_0xf22e('0x57')](_0x319209[_0xf22e('0x56')]);_0x319209[_0xf22e('0x5e')]=intUtil[_0xf22e('0x57')](_0x319209[_0xf22e('0x5e')]);def[_0xf22e('0x58')]=util[_0xf22e('0x24')]('%s/service/v4_1/rest.php',_0x319209['remoteUri']);if(_0x13ca82&&_0x13ca82[_0xf22e('0x59')]){logger['info']('['+_0x4e30d8[_0xf22e('0x77')][_0xf22e('0x78')]()+']','Recording\x20is\x20enabled!');_0x4e30d8[_0xf22e('0x5c')]=util['format'](_0xf22e('0x5d'),_0x319209[_0xf22e('0x5e')],_0x4e30d8[_0xf22e('0x5f')],md5(_0x4e30d8[_0xf22e('0x5f')]));}else{_0x4e30d8['recordingURL']='';}return getConnection(_0x319209)[_0xf22e('0x2e')](function(_0x30901b){_0x18920f=_0x30901b;if(!_['isNil'](_0x1f7061)){return getUser(_0x319209,_0x1f7061[_0xf22e('0xd')],_0x18920f);}else{return getUser(_0x319209,null,_0x18920f);}})[_0xf22e('0x2e')](function(_0xc5bc0a){_0x3c2cb6=_0xc5bc0a;logger[_0xf22e('0x29')](_0xf22e('0x72'),_0x3c2cb6['id']);return getEndUser(_0x319209,_0x4e30d8[_0xf22e('0x79')],_0x4e30d8[_0xf22e('0x60')],_0x18920f);})['then'](function(_0x2bd913){_0x2fd289=_0x2bd913;logger[_0xf22e('0x29')](_0xf22e('0x61'),_0x2fd289['id']);return getTicket(_0x319209,_0x3c2cb6,_0x2fd289,_0x296fb8,_0x4e30d8,_0x296fb8[_0xf22e('0x62')],_0x18920f,_0xf22e('0x63'));})[_0xf22e('0x2e')](function(_0x5b8995){_0x11184f=_0x5b8995;logger['info'](_0xf22e('0x64'));logger[_0xf22e('0x29')](_0xf22e('0x65'),_0x11184f['id']);return setRelationship(_0x18920f,_0x3c2cb6,_0x11184f,_0xf22e('0x66'));})[_0xf22e('0x2e')](function(){return setRelationship(_0x18920f,_0x2fd289,_0x11184f,_0xf22e('0x67'));})['then'](function(){return getServerInfo(_0x18920f);})[_0xf22e('0x6e')](function(_0x8b0891){logger['error']('['+_0x4e30d8[_0xf22e('0x77')][_0xf22e('0x78')]()+']',JSON['stringify'](_0x8b0891));});};
\ No newline at end of file
index ab7d47b..bafa20b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc051=['lodash','util','getString','length','sortBy','type','push','content','variable','variableName','toString','Variable','name','toLowerCase','keyValue','string','key','format','%s:\x20%s','keyContent','keyType','customVariable','join','stripTrailingSlash','slice','validateEmail','isNil'];(function(_0x29771f,_0x1189ae){var _0x279baf=function(_0xd66325){while(--_0xd66325){_0x29771f['push'](_0x29771f['shift']());}};_0x279baf(++_0x1189ae);}(_0xc051,0x144));var _0x1c05=function(_0x3b3afd,_0x5099af){_0x3b3afd=_0x3b3afd-0x0;var _0x4ed32c=_0xc051[_0x3b3afd];return _0x4ed32c;};'use strict';var _=require(_0x1c05('0x0'));var util=require(_0x1c05('0x1'));exports[_0x1c05('0x2')]=function(_0x7f402c,_0x19da21,_0x194ce1){var _0x3db968=[];if(_0x7f402c[_0x1c05('0x3')]>0x0){var _0x5b59d8=_[_0x1c05('0x4')](_0x7f402c,['id']);for(var _0x10039b=0x0;_0x10039b<_0x5b59d8[_0x1c05('0x3')];_0x10039b++){var _0x3cf036=_0x5b59d8[_0x10039b];if(_0x3cf036[_0x1c05('0x5')]==='string'){_0x3db968[_0x1c05('0x6')](_0x3cf036[_0x1c05('0x7')]);}else if(_0x3cf036['type']===_0x1c05('0x8')&&_0x3cf036['variableName']){_0x19da21[_0x3cf036[_0x1c05('0x9')]]&&_0x3db968[_0x1c05('0x6')](_0x19da21[_0x3cf036[_0x1c05('0x9')]][_0x1c05('0xa')]());}else if(_0x3cf036['type']==='customVariable'&&_0x3cf036[_0x1c05('0xb')]&&_0x3cf036[_0x1c05('0xb')]['name']){_0x19da21[_0x3cf036[_0x1c05('0xb')][_0x1c05('0xc')][_0x1c05('0xd')]()]&&_0x3db968[_0x1c05('0x6')](_0x19da21[_0x3cf036['Variable'][_0x1c05('0xc')][_0x1c05('0xd')]()][_0x1c05('0xa')]());}else if(_0x3cf036[_0x1c05('0x5')]===_0x1c05('0xe')){if(_0x3cf036['keyType']===_0x1c05('0xf')&&_0x3cf036[_0x1c05('0x10')]){_0x3db968[_0x1c05('0x6')](util[_0x1c05('0x11')](_0x1c05('0x12'),_0x3cf036['key'],_0x3cf036[_0x1c05('0x13')]));}else if(_0x3cf036[_0x1c05('0x14')]===_0x1c05('0x8')&&_0x3cf036[_0x1c05('0x9')]&&_0x3cf036[_0x1c05('0x10')]){_0x19da21[_0x3cf036[_0x1c05('0x9')]]&&_0x3db968[_0x1c05('0x6')](util[_0x1c05('0x11')](_0x1c05('0x12'),_0x3cf036['key'],_0x19da21[_0x3cf036['variableName']]));}else if(_0x3cf036[_0x1c05('0x14')]===_0x1c05('0x15')&&_0x3cf036[_0x1c05('0xb')]&&_0x3cf036[_0x1c05('0xb')]['name']&&_0x3cf036[_0x1c05('0x10')]){_0x19da21[_0x3cf036[_0x1c05('0xb')][_0x1c05('0xc')]['toLowerCase']()]&&_0x3db968[_0x1c05('0x6')](util[_0x1c05('0x11')](_0x1c05('0x12'),_0x3cf036[_0x1c05('0x10')],_0x19da21[_0x3cf036['Variable'][_0x1c05('0xc')][_0x1c05('0xd')]()]));}}}}return _0x3db968[_0x1c05('0x16')](_0x194ce1);};exports[_0x1c05('0x17')]=function(_0x495d6e){var _0x40eb1a=_0x495d6e[_0x1c05('0x18')](-0x1);if(_0x40eb1a==='/'){_0x495d6e=_0x495d6e['substring'](0x0,_0x495d6e['lastIndexOf'](_0x40eb1a));}return _0x495d6e;};exports[_0x1c05('0x19')]=function(_0x146bec){if(!_[_0x1c05('0x1a')](_0x146bec)&&_0x146bec!==''){var _0x3bd3ff=/^(([^<>()\[\]\\.,;:\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 _0x3bd3ff['test'](String(_0x146bec)[_0x1c05('0xd')]());}else{return![];}};
\ No newline at end of file
+var _0x237f=['join','substring','lastIndexOf','validateEmail','isNil','test','lodash','getString','length','string','push','content','variable','variableName','toString','type','Variable','name','keyType','key','format','%s:\x20%s','keyContent','toLowerCase'];(function(_0x1256f6,_0x35343f){var _0x4d22d6=function(_0x4a8096){while(--_0x4a8096){_0x1256f6['push'](_0x1256f6['shift']());}};_0x4d22d6(++_0x35343f);}(_0x237f,0x126));var _0xf237=function(_0x2d6d88,_0x2ea070){_0x2d6d88=_0x2d6d88-0x0;var _0x1991b0=_0x237f[_0x2d6d88];return _0x1991b0;};'use strict';var _=require(_0xf237('0x0'));var util=require('util');exports[_0xf237('0x1')]=function(_0x5e07ed,_0xab2695,_0x417f08){var _0x5eaaf8=[];if(_0x5e07ed[_0xf237('0x2')]>0x0){var _0x1ae0ff=_['sortBy'](_0x5e07ed,['id']);for(var _0x52f92b=0x0;_0x52f92b<_0x1ae0ff[_0xf237('0x2')];_0x52f92b++){var _0x26b2a6=_0x1ae0ff[_0x52f92b];if(_0x26b2a6['type']===_0xf237('0x3')){_0x5eaaf8[_0xf237('0x4')](_0x26b2a6[_0xf237('0x5')]);}else if(_0x26b2a6['type']===_0xf237('0x6')&&_0x26b2a6[_0xf237('0x7')]){_0xab2695[_0x26b2a6[_0xf237('0x7')]]&&_0x5eaaf8['push'](_0xab2695[_0x26b2a6[_0xf237('0x7')]][_0xf237('0x8')]());}else if(_0x26b2a6[_0xf237('0x9')]==='customVariable'&&_0x26b2a6[_0xf237('0xa')]&&_0x26b2a6[_0xf237('0xa')]['name']){_0xab2695[_0x26b2a6[_0xf237('0xa')][_0xf237('0xb')]['toLowerCase']()]&&_0x5eaaf8['push'](_0xab2695[_0x26b2a6['Variable'][_0xf237('0xb')]['toLowerCase']()]['toString']());}else if(_0x26b2a6['type']==='keyValue'){if(_0x26b2a6[_0xf237('0xc')]===_0xf237('0x3')&&_0x26b2a6[_0xf237('0xd')]){_0x5eaaf8[_0xf237('0x4')](util[_0xf237('0xe')](_0xf237('0xf'),_0x26b2a6['key'],_0x26b2a6[_0xf237('0x10')]));}else if(_0x26b2a6[_0xf237('0xc')]===_0xf237('0x6')&&_0x26b2a6[_0xf237('0x7')]&&_0x26b2a6[_0xf237('0xd')]){_0xab2695[_0x26b2a6[_0xf237('0x7')]]&&_0x5eaaf8['push'](util[_0xf237('0xe')](_0xf237('0xf'),_0x26b2a6['key'],_0xab2695[_0x26b2a6[_0xf237('0x7')]]));}else if(_0x26b2a6['keyType']==='customVariable'&&_0x26b2a6[_0xf237('0xa')]&&_0x26b2a6[_0xf237('0xa')][_0xf237('0xb')]&&_0x26b2a6[_0xf237('0xd')]){_0xab2695[_0x26b2a6[_0xf237('0xa')][_0xf237('0xb')]['toLowerCase']()]&&_0x5eaaf8[_0xf237('0x4')](util[_0xf237('0xe')](_0xf237('0xf'),_0x26b2a6['key'],_0xab2695[_0x26b2a6[_0xf237('0xa')][_0xf237('0xb')][_0xf237('0x11')]()]));}}}}return _0x5eaaf8[_0xf237('0x12')](_0x417f08);};exports['stripTrailingSlash']=function(_0x2e6441){var _0x34179e=_0x2e6441['slice'](-0x1);if(_0x34179e==='/'){_0x2e6441=_0x2e6441[_0xf237('0x13')](0x0,_0x2e6441[_0xf237('0x14')](_0x34179e));}return _0x2e6441;};exports[_0xf237('0x15')]=function(_0x4fdaf3){if(!_[_0xf237('0x16')](_0x4fdaf3)&&_0x4fdaf3!==''){var _0x1c7333=/^(([^<>()\[\]\\.,;:\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 _0x1c7333[_0xf237('0x17')](String(_0x4fdaf3)['toLowerCase']());}else{return![];}};
\ No newline at end of file
index 2d5f1d7..c4313d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['redis','defaults','localhost','emit','length','forEach','includes','string','picklist','type','idField','toString','variableName','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','merge','Normal','getString','Subjects','POST','format','remoteUri','create','sessionName','HelpDesk','stringify','success','error','catch','statusCode','Getting\x20agent\x20with\x20email','GET','%s/webservice.php','query','username','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','result','Agent\x20found!','resolve','email1','first_name','last_name','userId','[vTiger],\x20%s,\x20%s,\x20%s','getUser','admin','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!','phone','getEndUser','accessKey','getchallenge','then','login','token','Account\x20%d\x20is\x20not\x20valid','getConnection','[HTTP]','queue','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','recordingURL','email','The\x20User\x20ID\x20is:','calleridnum','Fields','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','outbound','stripTrailingSlash','recordingFormat','none','[OUTBOUND]','uniqueid','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','split','unmanaged','lastevent','toUpperCase','calleridname','lodash','request-promise','bluebird','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','vTiger'];(function(_0x1371d8,_0x37d953){var _0x4c8cd0=function(_0x2520ea){while(--_0x2520ea){_0x1371d8['push'](_0x1371d8['shift']());}};_0x4c8cd0(++_0x37d953);}(_0x34e8,0x12c));var _0x834e=function(_0x298cec,_0xf8e296){_0x298cec=_0x298cec-0x0;var _0x50a669=_0x34e8[_0x298cec];return _0x50a669;};'use strict';var _=require(_0x834e('0x0'));var rp=require(_0x834e('0x1'));var BPromise=require(_0x834e('0x2'));var md5=require(_0x834e('0x3'));var util=require('util');var Redis=require(_0x834e('0x4'));var intUtil=require(_0x834e('0x5'));var config=require(_0x834e('0x6'));var logger=require(_0x834e('0x7'))(_0x834e('0x8'));config[_0x834e('0x9')]=_[_0x834e('0xa')](config['redis'],{'host':_0x834e('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x834e('0x9')]));function emit(_0x3cc2e3,_0x3a3ef6,_0x2e69e2){io['to'](_0x3cc2e3)[_0x834e('0xc')](_0x3a3ef6,_0x2e69e2);}function getCustomFields(_0x23501c,_0x363786){var _0x1af45a={};if(_0x23501c[_0x834e('0xd')]>0x0){_[_0x834e('0xe')](_0x23501c,function(_0x1e41fe){if(_[_0x834e('0xf')]([_0x834e('0x10'),_0x834e('0x11')],_0x1e41fe[_0x834e('0x12')])&&_0x1e41fe[_0x834e('0x13')]){_0x1af45a[_0x1e41fe[_0x834e('0x13')]]=_0x1e41fe['content'][_0x834e('0x14')]();}else if(_0x1e41fe[_0x834e('0x12')]==='variable'&&_0x1e41fe[_0x834e('0x15')]&&_0x1e41fe[_0x834e('0x13')]&&_0x363786[_0x1e41fe[_0x834e('0x15')]]){_0x1af45a[_0x1e41fe[_0x834e('0x13')]]=_0x363786[_0x1e41fe['variableName']][_0x834e('0x14')]();}else if(_0x1e41fe[_0x834e('0x12')]==='customVariable'&&_0x1e41fe[_0x834e('0x16')]&&_0x1e41fe['Variable'][_0x834e('0x17')]&&_0x1e41fe[_0x834e('0x13')]&&_0x363786[_0x1e41fe['Variable'][_0x834e('0x17')][_0x834e('0x18')]()]){_0x1af45a[_0x1e41fe[_0x834e('0x13')]]=_0x363786[_0x1e41fe['Variable'][_0x834e('0x17')][_0x834e('0x18')]()][_0x834e('0x14')]();}});}return _0x1af45a;}function createTicket(_0xb993a1,_0x237947,_0x254677,_0x1dd214,_0x595515,_0x2545b4,_0x1fd2c6){logger[_0x834e('0x19')](_0x834e('0x1a'));var _0x4ab05d=_[_0x834e('0x1b')]({'parent_id':'','assigned_user_id':_0x237947['id'],'ticketpriorities':_0x834e('0x1c'),'ticketstatus':'Open','ticket_title':intUtil[_0x834e('0x1d')](_0x1dd214[_0x834e('0x1e')],_0x595515,'\x20'),'description':intUtil[_0x834e('0x1d')](_0x1dd214['Descriptions'],_0x595515,'\x0a'),'contact_id':_0x254677['id']},getCustomFields(_0x2545b4,_0x595515));var _0x4e3f48={'method':_0x834e('0x1f'),'uri':util[_0x834e('0x20')]('%s/webservice.php',_0xb993a1[_0x834e('0x21')]),'form':{'operation':_0x834e('0x22'),'username':_0xb993a1['username'],'sessionName':_0x1fd2c6[_0x834e('0x23')],'elementType':_0x834e('0x24'),'element':JSON[_0x834e('0x25')](_0x4ab05d)},'json':!![]};return request(_0x4e3f48)['then'](function(_0x24fcf7){if(_0x24fcf7[_0x834e('0x26')]){return BPromise['resolve']({'id':_0x24fcf7['result']['id']});}else{throw new Error(util[_0x834e('0x20')]('Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s',JSON[_0x834e('0x25')](_0x24fcf7[_0x834e('0x27')])));}})[_0x834e('0x28')](function(_0x2cc2eb){var _0x3cd928=_0x2cc2eb[_0x834e('0x29')]||0x1f4;logger['error']('[vTiger],\x20%s,\x20%s,\x20%s','createTicket',_0x3cd928,JSON['stringify'](_0x2cc2eb));});}function getUser(_0x2c7a8d,_0x567cea,_0x106d6a){if(intUtil['validateEmail'](_0x567cea)){logger[_0x834e('0x19')](_0x834e('0x2a'),_0x567cea);return request({'method':_0x834e('0x2b'),'uri':util[_0x834e('0x20')](_0x834e('0x2c'),_0x2c7a8d[_0x834e('0x21')]),'qs':{'operation':_0x834e('0x2d'),'username':_0x2c7a8d[_0x834e('0x2e')],'sessionName':_0x106d6a[_0x834e('0x23')],'query':util['format'](_0x834e('0x2f'),_0x567cea)},'json':!![]})['then'](function(_0x2c75c2){if(_0x2c75c2[_0x834e('0x26')]&&_0x2c75c2[_0x834e('0x30')][_0x834e('0xd')]){logger[_0x834e('0x19')](_0x834e('0x31'));return BPromise[_0x834e('0x32')]({'id':_0x2c75c2[_0x834e('0x30')][0x0]['id'],'email':_0x2c75c2[_0x834e('0x30')][0x0][_0x834e('0x33')],'name':_0x2c75c2['result'][0x0][_0x834e('0x34')]+'\x20'+_0x2c75c2[_0x834e('0x30')][_0x834e('0x35')]});}else{logger[_0x834e('0x19')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x834e('0x32')]({'id':_0x106d6a[_0x834e('0x36')],'email':_0x2c7a8d['username'],'name':'admin'});}})['catch'](function(_0x3e58fa){var _0x41bf4d=_0x3e58fa[_0x834e('0x29')]||0x1f4;logger[_0x834e('0x27')](_0x834e('0x37'),_0x834e('0x38'),_0x41bf4d,JSON['stringify'](_0x3e58fa));});}else{logger[_0x834e('0x19')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x834e('0x32')]({'id':_0x106d6a[_0x834e('0x36')],'email':_0x2c7a8d['username'],'name':_0x834e('0x39')})[_0x834e('0x28')](function(_0x491c28){var _0x481f70=_0x491c28[_0x834e('0x29')]||0x1f4;logger[_0x834e('0x27')](_0x834e('0x37'),_0x834e('0x38'),_0x481f70,JSON[_0x834e('0x25')](_0x491c28));});}}function getEndUser(_0x4ca43c,_0x1c5ed6,_0x548d1d,_0x50c243){logger[_0x834e('0x19')]('Searching\x20end\x20user\x20with\x20phone',_0x548d1d);return request({'method':_0x834e('0x2b'),'uri':util[_0x834e('0x20')](_0x834e('0x2c'),_0x4ca43c[_0x834e('0x21')]),'qs':{'operation':_0x834e('0x2d'),'username':_0x4ca43c['username'],'sessionName':_0x50c243[_0x834e('0x23')],'query':util[_0x834e('0x20')](_0x834e('0x3a'),_0x548d1d,_0x548d1d,_0x548d1d,_0x548d1d,_0x548d1d)},'json':!![]})['then'](function(_0x35380e){if(_0x35380e[_0x834e('0x26')]&&_0x35380e['result'][_0x834e('0xd')]){logger['info'](_0x834e('0x3b'));return BPromise[_0x834e('0x32')]({'id':_0x35380e['result'][0x0]['id'],'name':_0x35380e['result'][0x0][_0x834e('0x3c')]+'\x20'+_0x35380e[_0x834e('0x30')][0x0][_0x834e('0x3d')],'phone':_0x548d1d});}else{logger[_0x834e('0x19')](_0x834e('0x3e'));return request({'method':_0x834e('0x1f'),'uri':util[_0x834e('0x20')]('%s/webservice.php',_0x4ca43c[_0x834e('0x21')]),'form':{'operation':'create','sessionName':_0x50c243[_0x834e('0x23')],'elementType':'Contacts','element':JSON[_0x834e('0x25')]({'lastname':_0x1c5ed6,'phone':_0x548d1d,'assigned_user_id':'\x20'})},'json':!![]})['then'](function(_0x361f60){logger[_0x834e('0x19')]('Enduser\x20created.');return BPromise[_0x834e('0x32')]({'id':_0x361f60[_0x834e('0x30')]['id'],'name':_0x361f60[_0x834e('0x30')][_0x834e('0x3d')],'phone':_0x361f60[_0x834e('0x30')][_0x834e('0x3f')]});})[_0x834e('0x28')](function(_0x3ccd8e){var _0x5dc63b=_0x3ccd8e[_0x834e('0x29')]||0x1f4;logger['error'](_0x834e('0x37'),_0x834e('0x40'),_0x5dc63b,JSON['stringify'](_0x3ccd8e));});}});}function getConnection(_0x112306){var _0x42fd90=_0x112306[_0x834e('0x2e')];var _0x2112d5=_0x112306[_0x834e('0x41')];return request({'method':_0x834e('0x2b'),'uri':util['format']('%s/webservice.php',_0x112306[_0x834e('0x21')]),'qs':{'operation':_0x834e('0x42'),'username':_0x42fd90},'json':!![]})[_0x834e('0x43')](function(_0x40ff5a){if(_0x40ff5a[_0x834e('0x26')]){return request({'method':_0x834e('0x1f'),'uri':util[_0x834e('0x20')](_0x834e('0x2c'),_0x112306[_0x834e('0x21')]),'form':{'operation':_0x834e('0x44'),'username':_0x42fd90,'accessKey':md5(_0x40ff5a[_0x834e('0x30')][_0x834e('0x45')]+_0x2112d5)},'json':!![]});}})[_0x834e('0x43')](function(_0x1a3237){if(_0x1a3237[_0x834e('0x26')]){return BPromise[_0x834e('0x32')](_0x1a3237[_0x834e('0x30')]);}else{throw new Error(util[_0x834e('0x20')](_0x834e('0x46'),_0x112306['id']));}})[_0x834e('0x28')](function(_0x4cfacd){var _0x1cc0b8=_0x4cfacd[_0x834e('0x29')]||0x1f4;logger['error'](_0x834e('0x37'),_0x834e('0x47'),_0x1cc0b8,JSON['stringify'](_0x4cfacd));});}function request(_0x3dcca3){logger[_0x834e('0x19')](_0x834e('0x48'),JSON[_0x834e('0x25')](_0x3dcca3));return rp(_0x3dcca3);}exports[_0x834e('0x49')]=function(_0xb77aab,_0x4549ba,_0x4a8b32,_0x1ad7fe,_0x8bc6c6,_0x3e0550){var _0x363675,_0x86ad2b,_0x396bbe,_0x344b51;_0x3e0550[_0x834e('0x21')]=intUtil['stripTrailingSlash'](_0x3e0550[_0x834e('0x21')]);if(_0x8bc6c6&&_0x8bc6c6['monitor_format']){logger[_0x834e('0x19')]('[QUEUE]',_0x834e('0x4a'));_0x4549ba['recordingURL']=util['format'](_0x834e('0x4b'),_0x3e0550[_0x834e('0x4c')],_0x4549ba['uniqueid'],md5(_0x4549ba['uniqueid']));}else{_0x4549ba[_0x834e('0x4d')]='';}return getConnection(_0x3e0550)[_0x834e('0x43')](function(_0x138ed2){_0x344b51=_0x138ed2;return getUser(_0x3e0550,_0x1ad7fe[_0x834e('0x4e')],_0x344b51);})[_0x834e('0x43')](function(_0x315858){_0x363675=_0x315858;logger[_0x834e('0x19')](_0x834e('0x4f'),_0x363675['id']);return getEndUser(_0x3e0550,_0x4549ba['calleridname'],_0x4549ba[_0x834e('0x50')],_0x344b51);})[_0x834e('0x43')](function(_0x5d5ac2){_0x86ad2b=_0x5d5ac2;logger[_0x834e('0x19')]('The\x20Enduser\x20ID\x20is:',_0x86ad2b['id']);return createTicket(_0x3e0550,_0x363675,_0x86ad2b,_0x4a8b32,_0x4549ba,_0x4a8b32[_0x834e('0x51')],_0x344b51);})[_0x834e('0x43')](function(_0x5160c4){_0x396bbe=_0x5160c4;logger[_0x834e('0x19')](_0x834e('0x52'));logger[_0x834e('0x19')](_0x834e('0x53'),_0x396bbe['id']);var _0x5a2924=util[_0x834e('0x20')](_0x834e('0x54'),_0x3e0550[_0x834e('0x21')],_['split'](_0x396bbe['id'],'x')[0x1]);logger[_0x834e('0x19')](_0x834e('0x55'),_0x834e('0x56'));emit(util[_0x834e('0x20')](_0x834e('0x57'),_0x1ad7fe[_0x834e('0x17')]),_0x834e('0x58'),{'uri':_0x5a2924});})[_0x834e('0x28')](function(_0x208c21){logger[_0x834e('0x27')](_0x834e('0x55'),JSON[_0x834e('0x25')](_0x208c21));});};exports[_0x834e('0x59')]=function(_0x1659c8,_0x460a7a,_0x17b8e3,_0x297cce,_0x14ed83,_0x193a15,_0x3e3467){var _0xed4081,_0x2cb233,_0x5c83eb,_0x2145cf;_0x193a15[_0x834e('0x21')]=intUtil[_0x834e('0x5a')](_0x193a15[_0x834e('0x21')]);_0x193a15['serverUrl']=intUtil[_0x834e('0x5a')](_0x193a15['serverUrl']);if(_0x3e3467&&_0x3e3467['recordingFormat']&&_0x3e3467[_0x834e('0x5b')]!==_0x834e('0x5c')){logger[_0x834e('0x19')](_0x834e('0x5d'),_0x834e('0x4a'));_0x460a7a[_0x834e('0x4d')]=util[_0x834e('0x20')](_0x834e('0x4b'),_0x193a15['serverUrl'],_0x460a7a[_0x834e('0x5e')],md5(_0x460a7a['uniqueid']));}return getConnection(_0x193a15)[_0x834e('0x43')](function(_0xd35dda){_0x2145cf=_0xd35dda;return getUser(_0x193a15,_0x297cce['email'],_0x2145cf);})['then'](function(_0x4a4def){_0xed4081=_0x4a4def;logger[_0x834e('0x19')](_0x834e('0x4f'),_0xed4081['id']);return getEndUser(_0x193a15,_0x460a7a[_0x834e('0x5f')],_0x460a7a[_0x834e('0x60')],_0x2145cf);})['then'](function(_0x2b0d93){_0x2cb233=_0x2b0d93;logger[_0x834e('0x19')](_0x834e('0x61'),_0x2cb233['id']);return createTicket(_0x193a15,_0xed4081,_0x2cb233,_0x17b8e3,_0x460a7a,_0x17b8e3[_0x834e('0x51')],_0x2145cf);})[_0x834e('0x43')](function(_0x28b5c9){_0x5c83eb=_0x28b5c9;logger[_0x834e('0x19')](_0x834e('0x52'));logger[_0x834e('0x19')](_0x834e('0x53'),_0x5c83eb['id']);var _0x5b2bf6=util[_0x834e('0x20')](_0x834e('0x54'),_0x193a15[_0x834e('0x21')],_[_0x834e('0x62')](_0x5c83eb['id'],'x')[0x1]);logger['info'](_0x834e('0x5d'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format']('user:%s',_0x297cce[_0x834e('0x17')]),_0x834e('0x58'),{'uri':_0x5b2bf6});})['catch'](function(_0x2645df){logger[_0x834e('0x27')]('[OUTBOUND]',JSON[_0x834e('0x25')](_0x2645df));});};exports[_0x834e('0x63')]=function(_0x4b88e7,_0x5df169,_0x346be5,_0x2a42a3,_0x8bc7d9,_0x44c909){var _0x1d8e7,_0x493239,_0x264a6f,_0x520367;_0x44c909[_0x834e('0x21')]=intUtil[_0x834e('0x5a')](_0x44c909[_0x834e('0x21')]);_0x44c909['serverUrl']=intUtil[_0x834e('0x5a')](_0x44c909[_0x834e('0x4c')]);if(_0x8bc7d9&&_0x8bc7d9['monitor_format']){logger[_0x834e('0x19')]('['+_0x5df169[_0x834e('0x64')][_0x834e('0x65')]()+']','Recording\x20is\x20enabled!');_0x5df169[_0x834e('0x4d')]=util[_0x834e('0x20')](_0x834e('0x4b'),_0x44c909[_0x834e('0x4c')],_0x5df169[_0x834e('0x5e')],md5(_0x5df169[_0x834e('0x5e')]));}else{_0x5df169[_0x834e('0x4d')]='';}return getConnection(_0x44c909)[_0x834e('0x43')](function(_0xd49002){_0x520367=_0xd49002;return getUser(_0x44c909,'',_0x520367);})[_0x834e('0x43')](function(_0x57d898){_0x1d8e7=_0x57d898;logger['info']('The\x20User\x20ID\x20is:',_0x1d8e7['id']);return getEndUser(_0x44c909,_0x5df169[_0x834e('0x66')],_0x5df169[_0x834e('0x50')],_0x520367);})[_0x834e('0x43')](function(_0x37fa2c){_0x493239=_0x37fa2c;logger[_0x834e('0x19')]('The\x20Enduser\x20ID\x20is:',_0x493239['id']);return createTicket(_0x44c909,_0x1d8e7,_0x493239,_0x346be5,_0x5df169,_0x346be5['Fields'],_0x520367);})[_0x834e('0x43')](function(_0x1ad428){_0x264a6f=_0x1ad428;logger[_0x834e('0x19')](_0x834e('0x52'));logger[_0x834e('0x19')]('The\x20Ticket\x20ID\x20is:',_0x264a6f['id']);})[_0x834e('0x28')](function(_0x2b162a){logger[_0x834e('0x27')]('['+_0x5df169['lastevent'][_0x834e('0x65')]()+']',JSON[_0x834e('0x25')](_0x2b162a));});};
\ No newline at end of file
+var _0xe706=['result','Agent\x20found!','email1','first_name','last_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','admin','getUser','username','Searching\x20end\x20user\x20with\x20phone','remoteUri','SELECT\x20id,\x20firstname,\x20lastname,\x20email,\x20phone,\x20mobile,\x20homephone,\x20otherphone,\x20assistantphone\x20FROM\x20Contacts\x20WHERE\x20phone\x20=\x20\x27%s\x27\x20OR\x20mobile\x20=\x27%s\x27\x20OR\x20homephone\x20=\x27%s\x27\x20OR\x20otherphone\x20=\x27%s\x27\x20OR\x20assistantphone\x20=\x27%s\x27;','Enduser\x20found!','firstname','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Contacts','phone','catch','accessKey','getchallenge','token','Account\x20%d\x20is\x20not\x20valid','getConnection','queue','stripTrailingSlash','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Fields','Ticket\x20created!','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','split','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','outbound','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','The\x20Ticket\x20ID\x20is:','user:%s','unmanaged','lastevent','toUpperCase','lodash','request-promise','bluebird','util','ioredis','./util','../../../../config/environment','../../../../config/logger','vTiger','redis','defaults','localhost','socket.io-emitter','emit','length','forEach','includes','string','idField','content','toString','type','variable','variableName','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','merge','Normal','Open','Subjects','getString','Descriptions','POST','format','%s/webservice.php','create','stringify','then','success','resolve','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','statusCode','error','[vTiger],\x20%s,\x20%s,\x20%s','validateEmail','Getting\x20agent\x20with\x20email','GET','query','sessionName','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;'];(function(_0x2f366d,_0x345d21){var _0x2c6a16=function(_0x5b04fd){while(--_0x5b04fd){_0x2f366d['push'](_0x2f366d['shift']());}};_0x2c6a16(++_0x345d21);}(_0xe706,0xa3));var _0x6e70=function(_0x34b87f,_0x28aef2){_0x34b87f=_0x34b87f-0x0;var _0x449805=_0xe706[_0x34b87f];return _0x449805;};'use strict';var _=require(_0x6e70('0x0'));var rp=require(_0x6e70('0x1'));var BPromise=require(_0x6e70('0x2'));var md5=require('md5');var util=require(_0x6e70('0x3'));var Redis=require(_0x6e70('0x4'));var intUtil=require(_0x6e70('0x5'));var config=require(_0x6e70('0x6'));var logger=require(_0x6e70('0x7'))(_0x6e70('0x8'));config[_0x6e70('0x9')]=_[_0x6e70('0xa')](config[_0x6e70('0x9')],{'host':_0x6e70('0xb'),'port':0x18eb});var io=require(_0x6e70('0xc'))(new Redis(config[_0x6e70('0x9')]));function emit(_0x45a2d4,_0x188ed3,_0x3c4843){io['to'](_0x45a2d4)[_0x6e70('0xd')](_0x188ed3,_0x3c4843);}function getCustomFields(_0x954545,_0x25e61c){var _0x100eb7={};if(_0x954545[_0x6e70('0xe')]>0x0){_[_0x6e70('0xf')](_0x954545,function(_0x3f474a){if(_[_0x6e70('0x10')]([_0x6e70('0x11'),'picklist'],_0x3f474a['type'])&&_0x3f474a[_0x6e70('0x12')]){_0x100eb7[_0x3f474a[_0x6e70('0x12')]]=_0x3f474a[_0x6e70('0x13')][_0x6e70('0x14')]();}else if(_0x3f474a[_0x6e70('0x15')]===_0x6e70('0x16')&&_0x3f474a[_0x6e70('0x17')]&&_0x3f474a[_0x6e70('0x12')]&&_0x25e61c[_0x3f474a['variableName']]){_0x100eb7[_0x3f474a['idField']]=_0x25e61c[_0x3f474a['variableName']][_0x6e70('0x14')]();}else if(_0x3f474a['type']==='customVariable'&&_0x3f474a[_0x6e70('0x18')]&&_0x3f474a[_0x6e70('0x18')]['name']&&_0x3f474a[_0x6e70('0x12')]&&_0x25e61c[_0x3f474a['Variable'][_0x6e70('0x19')][_0x6e70('0x1a')]()]){_0x100eb7[_0x3f474a['idField']]=_0x25e61c[_0x3f474a['Variable'][_0x6e70('0x19')]['toLowerCase']()][_0x6e70('0x14')]();}});}return _0x100eb7;}function createTicket(_0x173afe,_0x53acdc,_0x497d61,_0xc238ba,_0x208e21,_0x2368eb,_0x3a9978){logger[_0x6e70('0x1b')](_0x6e70('0x1c'));var _0x1b2453=_[_0x6e70('0x1d')]({'parent_id':'','assigned_user_id':_0x53acdc['id'],'ticketpriorities':_0x6e70('0x1e'),'ticketstatus':_0x6e70('0x1f'),'ticket_title':intUtil['getString'](_0xc238ba[_0x6e70('0x20')],_0x208e21,'\x20'),'description':intUtil[_0x6e70('0x21')](_0xc238ba[_0x6e70('0x22')],_0x208e21,'\x0a'),'contact_id':_0x497d61['id']},getCustomFields(_0x2368eb,_0x208e21));var _0x502b2d={'method':_0x6e70('0x23'),'uri':util[_0x6e70('0x24')](_0x6e70('0x25'),_0x173afe['remoteUri']),'form':{'operation':_0x6e70('0x26'),'username':_0x173afe['username'],'sessionName':_0x3a9978['sessionName'],'elementType':'HelpDesk','element':JSON[_0x6e70('0x27')](_0x1b2453)},'json':!![]};return request(_0x502b2d)[_0x6e70('0x28')](function(_0x51d292){if(_0x51d292[_0x6e70('0x29')]){return BPromise[_0x6e70('0x2a')]({'id':_0x51d292['result']['id']});}else{throw new Error(util[_0x6e70('0x24')](_0x6e70('0x2b'),JSON[_0x6e70('0x27')](_0x51d292['error'])));}})['catch'](function(_0x2c4d37){var _0x3af17f=_0x2c4d37[_0x6e70('0x2c')]||0x1f4;logger[_0x6e70('0x2d')](_0x6e70('0x2e'),'createTicket',_0x3af17f,JSON[_0x6e70('0x27')](_0x2c4d37));});}function getUser(_0x406f29,_0xecf336,_0x2864a0){if(intUtil[_0x6e70('0x2f')](_0xecf336)){logger[_0x6e70('0x1b')](_0x6e70('0x30'),_0xecf336);return request({'method':_0x6e70('0x31'),'uri':util[_0x6e70('0x24')](_0x6e70('0x25'),_0x406f29['remoteUri']),'qs':{'operation':_0x6e70('0x32'),'username':_0x406f29['username'],'sessionName':_0x2864a0[_0x6e70('0x33')],'query':util['format'](_0x6e70('0x34'),_0xecf336)},'json':!![]})[_0x6e70('0x28')](function(_0x30fa0b){if(_0x30fa0b['success']&&_0x30fa0b[_0x6e70('0x35')][_0x6e70('0xe')]){logger['info'](_0x6e70('0x36'));return BPromise[_0x6e70('0x2a')]({'id':_0x30fa0b['result'][0x0]['id'],'email':_0x30fa0b[_0x6e70('0x35')][0x0][_0x6e70('0x37')],'name':_0x30fa0b[_0x6e70('0x35')][0x0][_0x6e70('0x38')]+'\x20'+_0x30fa0b[_0x6e70('0x35')][_0x6e70('0x39')]});}else{logger[_0x6e70('0x1b')](_0x6e70('0x3a'));return BPromise[_0x6e70('0x2a')]({'id':_0x2864a0[_0x6e70('0x3b')],'email':_0x406f29['username'],'name':_0x6e70('0x3c')});}})['catch'](function(_0x23cd1a){var _0x3222a2=_0x23cd1a[_0x6e70('0x2c')]||0x1f4;logger[_0x6e70('0x2d')](_0x6e70('0x2e'),_0x6e70('0x3d'),_0x3222a2,JSON[_0x6e70('0x27')](_0x23cd1a));});}else{logger[_0x6e70('0x1b')](_0x6e70('0x3a'));return BPromise[_0x6e70('0x2a')]({'id':_0x2864a0[_0x6e70('0x3b')],'email':_0x406f29[_0x6e70('0x3e')],'name':_0x6e70('0x3c')})['catch'](function(_0x5446a2){var _0x5424eb=_0x5446a2[_0x6e70('0x2c')]||0x1f4;logger[_0x6e70('0x2d')](_0x6e70('0x2e'),_0x6e70('0x3d'),_0x5424eb,JSON[_0x6e70('0x27')](_0x5446a2));});}}function getEndUser(_0x3bdd87,_0x572a71,_0x3b508c,_0x9e7ad2){logger[_0x6e70('0x1b')](_0x6e70('0x3f'),_0x3b508c);return request({'method':_0x6e70('0x31'),'uri':util[_0x6e70('0x24')](_0x6e70('0x25'),_0x3bdd87[_0x6e70('0x40')]),'qs':{'operation':'query','username':_0x3bdd87[_0x6e70('0x3e')],'sessionName':_0x9e7ad2[_0x6e70('0x33')],'query':util[_0x6e70('0x24')](_0x6e70('0x41'),_0x3b508c,_0x3b508c,_0x3b508c,_0x3b508c,_0x3b508c)},'json':!![]})[_0x6e70('0x28')](function(_0x1de947){if(_0x1de947[_0x6e70('0x29')]&&_0x1de947['result']['length']){logger['info'](_0x6e70('0x42'));return BPromise[_0x6e70('0x2a')]({'id':_0x1de947[_0x6e70('0x35')][0x0]['id'],'name':_0x1de947[_0x6e70('0x35')][0x0][_0x6e70('0x43')]+'\x20'+_0x1de947['result'][0x0][_0x6e70('0x44')],'phone':_0x3b508c});}else{logger[_0x6e70('0x1b')](_0x6e70('0x45'));return request({'method':'POST','uri':util['format']('%s/webservice.php',_0x3bdd87[_0x6e70('0x40')]),'form':{'operation':'create','sessionName':_0x9e7ad2[_0x6e70('0x33')],'elementType':_0x6e70('0x46'),'element':JSON[_0x6e70('0x27')]({'lastname':_0x572a71,'phone':_0x3b508c,'assigned_user_id':'\x20'})},'json':!![]})[_0x6e70('0x28')](function(_0x59c87d){logger[_0x6e70('0x1b')]('Enduser\x20created.');return BPromise[_0x6e70('0x2a')]({'id':_0x59c87d[_0x6e70('0x35')]['id'],'name':_0x59c87d[_0x6e70('0x35')][_0x6e70('0x44')],'phone':_0x59c87d['result'][_0x6e70('0x47')]});})[_0x6e70('0x48')](function(_0x3d39c3){var _0xac87d6=_0x3d39c3[_0x6e70('0x2c')]||0x1f4;logger[_0x6e70('0x2d')](_0x6e70('0x2e'),'getEndUser',_0xac87d6,JSON[_0x6e70('0x27')](_0x3d39c3));});}});}function getConnection(_0x3884a4){var _0x10de2a=_0x3884a4[_0x6e70('0x3e')];var _0x3f86cf=_0x3884a4[_0x6e70('0x49')];return request({'method':_0x6e70('0x31'),'uri':util['format'](_0x6e70('0x25'),_0x3884a4['remoteUri']),'qs':{'operation':_0x6e70('0x4a'),'username':_0x10de2a},'json':!![]})[_0x6e70('0x28')](function(_0x4b351e){if(_0x4b351e['success']){return request({'method':_0x6e70('0x23'),'uri':util[_0x6e70('0x24')](_0x6e70('0x25'),_0x3884a4['remoteUri']),'form':{'operation':'login','username':_0x10de2a,'accessKey':md5(_0x4b351e[_0x6e70('0x35')][_0x6e70('0x4b')]+_0x3f86cf)},'json':!![]});}})[_0x6e70('0x28')](function(_0x79653){if(_0x79653[_0x6e70('0x29')]){return BPromise[_0x6e70('0x2a')](_0x79653['result']);}else{throw new Error(util[_0x6e70('0x24')](_0x6e70('0x4c'),_0x3884a4['id']));}})[_0x6e70('0x48')](function(_0x6ed023){var _0x2c3a7d=_0x6ed023['statusCode']||0x1f4;logger['error'](_0x6e70('0x2e'),_0x6e70('0x4d'),_0x2c3a7d,JSON[_0x6e70('0x27')](_0x6ed023));});}function request(_0x15f994){logger[_0x6e70('0x1b')]('[HTTP]',JSON[_0x6e70('0x27')](_0x15f994));return rp(_0x15f994);}exports[_0x6e70('0x4e')]=function(_0x1fa320,_0x23ebfb,_0x3aba34,_0x4a111a,_0x1142cd,_0x1dd242){var _0x2c20d3,_0x3fb0d3,_0x8ef4f7,_0x3fd03d;_0x1dd242['remoteUri']=intUtil[_0x6e70('0x4f')](_0x1dd242[_0x6e70('0x40')]);if(_0x1142cd&&_0x1142cd['monitor_format']){logger[_0x6e70('0x1b')](_0x6e70('0x50'),'Recording\x20is\x20enabled!');_0x23ebfb[_0x6e70('0x51')]=util[_0x6e70('0x24')](_0x6e70('0x52'),_0x1dd242[_0x6e70('0x53')],_0x23ebfb[_0x6e70('0x54')],md5(_0x23ebfb['uniqueid']));}else{_0x23ebfb[_0x6e70('0x51')]='';}return getConnection(_0x1dd242)[_0x6e70('0x28')](function(_0x10d655){_0x3fd03d=_0x10d655;return getUser(_0x1dd242,_0x4a111a[_0x6e70('0x55')],_0x3fd03d);})[_0x6e70('0x28')](function(_0x1fe13a){_0x2c20d3=_0x1fe13a;logger[_0x6e70('0x1b')](_0x6e70('0x56'),_0x2c20d3['id']);return getEndUser(_0x1dd242,_0x23ebfb[_0x6e70('0x57')],_0x23ebfb[_0x6e70('0x58')],_0x3fd03d);})[_0x6e70('0x28')](function(_0x1b12a1){_0x3fb0d3=_0x1b12a1;logger[_0x6e70('0x1b')](_0x6e70('0x59'),_0x3fb0d3['id']);return createTicket(_0x1dd242,_0x2c20d3,_0x3fb0d3,_0x3aba34,_0x23ebfb,_0x3aba34[_0x6e70('0x5a')],_0x3fd03d);})[_0x6e70('0x28')](function(_0x324fa6){_0x8ef4f7=_0x324fa6;logger[_0x6e70('0x1b')](_0x6e70('0x5b'));logger[_0x6e70('0x1b')]('The\x20Ticket\x20ID\x20is:',_0x8ef4f7['id']);var _0x28898a=util[_0x6e70('0x24')](_0x6e70('0x5c'),_0x1dd242[_0x6e70('0x40')],_[_0x6e70('0x5d')](_0x8ef4f7['id'],'x')[0x1]);logger[_0x6e70('0x1b')]('[QUEUE]',_0x6e70('0x5e'));emit(util[_0x6e70('0x24')]('user:%s',_0x4a111a[_0x6e70('0x19')]),_0x6e70('0x5f'),{'uri':_0x28898a});})[_0x6e70('0x48')](function(_0x590f7f){logger['error'](_0x6e70('0x50'),JSON[_0x6e70('0x27')](_0x590f7f));});};exports[_0x6e70('0x60')]=function(_0x41a861,_0x10d299,_0x739946,_0x30cd88,_0x57bfe5,_0x4d47e1,_0x2c8dc6){var _0x1e23c5,_0x2bf9ec,_0x2ad395,_0x5b1e6f;_0x4d47e1['remoteUri']=intUtil[_0x6e70('0x4f')](_0x4d47e1[_0x6e70('0x40')]);_0x4d47e1['serverUrl']=intUtil['stripTrailingSlash'](_0x4d47e1[_0x6e70('0x53')]);if(_0x2c8dc6&&_0x2c8dc6['recordingFormat']&&_0x2c8dc6[_0x6e70('0x61')]!==_0x6e70('0x62')){logger[_0x6e70('0x1b')](_0x6e70('0x63'),_0x6e70('0x64'));_0x10d299[_0x6e70('0x51')]=util[_0x6e70('0x24')](_0x6e70('0x52'),_0x4d47e1['serverUrl'],_0x10d299[_0x6e70('0x54')],md5(_0x10d299[_0x6e70('0x54')]));}return getConnection(_0x4d47e1)[_0x6e70('0x28')](function(_0x346c79){_0x5b1e6f=_0x346c79;return getUser(_0x4d47e1,_0x30cd88[_0x6e70('0x55')],_0x5b1e6f);})['then'](function(_0x5f5b02){_0x1e23c5=_0x5f5b02;logger['info'](_0x6e70('0x56'),_0x1e23c5['id']);return getEndUser(_0x4d47e1,_0x10d299[_0x6e70('0x65')],_0x10d299[_0x6e70('0x66')],_0x5b1e6f);})['then'](function(_0x58cf1c){_0x2bf9ec=_0x58cf1c;logger[_0x6e70('0x1b')](_0x6e70('0x59'),_0x2bf9ec['id']);return createTicket(_0x4d47e1,_0x1e23c5,_0x2bf9ec,_0x739946,_0x10d299,_0x739946[_0x6e70('0x5a')],_0x5b1e6f);})[_0x6e70('0x28')](function(_0x2285f1){_0x2ad395=_0x2285f1;logger[_0x6e70('0x1b')]('Ticket\x20created!');logger[_0x6e70('0x1b')](_0x6e70('0x67'),_0x2ad395['id']);var _0x30d11b=util[_0x6e70('0x24')]('%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT',_0x4d47e1[_0x6e70('0x40')],_['split'](_0x2ad395['id'],'x')[0x1]);logger['info'](_0x6e70('0x63'),_0x6e70('0x5e'));emit(util[_0x6e70('0x24')](_0x6e70('0x68'),_0x30cd88[_0x6e70('0x19')]),_0x6e70('0x5f'),{'uri':_0x30d11b});})['catch'](function(_0x370eeb){logger[_0x6e70('0x2d')](_0x6e70('0x63'),JSON[_0x6e70('0x27')](_0x370eeb));});};exports[_0x6e70('0x69')]=function(_0x13c092,_0x363722,_0xd9b4a9,_0x2f1362,_0x29621a,_0x575938){var _0x44c877,_0x303c5a,_0x577c3b,_0x5d398a;_0x575938['remoteUri']=intUtil[_0x6e70('0x4f')](_0x575938[_0x6e70('0x40')]);_0x575938[_0x6e70('0x53')]=intUtil[_0x6e70('0x4f')](_0x575938[_0x6e70('0x53')]);if(_0x29621a&&_0x29621a['monitor_format']){logger['info']('['+_0x363722[_0x6e70('0x6a')][_0x6e70('0x6b')]()+']','Recording\x20is\x20enabled!');_0x363722[_0x6e70('0x51')]=util[_0x6e70('0x24')](_0x6e70('0x52'),_0x575938[_0x6e70('0x53')],_0x363722[_0x6e70('0x54')],md5(_0x363722[_0x6e70('0x54')]));}else{_0x363722[_0x6e70('0x51')]='';}return getConnection(_0x575938)[_0x6e70('0x28')](function(_0x3650e9){_0x5d398a=_0x3650e9;return getUser(_0x575938,'',_0x5d398a);})[_0x6e70('0x28')](function(_0x347cc4){_0x44c877=_0x347cc4;logger[_0x6e70('0x1b')](_0x6e70('0x56'),_0x44c877['id']);return getEndUser(_0x575938,_0x363722[_0x6e70('0x57')],_0x363722['calleridnum'],_0x5d398a);})['then'](function(_0x39ed95){_0x303c5a=_0x39ed95;logger['info'](_0x6e70('0x59'),_0x303c5a['id']);return createTicket(_0x575938,_0x44c877,_0x303c5a,_0xd9b4a9,_0x363722,_0xd9b4a9['Fields'],_0x5d398a);})['then'](function(_0x402f6f){_0x577c3b=_0x402f6f;logger['info']('Ticket\x20created!');logger[_0x6e70('0x1b')](_0x6e70('0x67'),_0x577c3b['id']);})[_0x6e70('0x48')](function(_0x4e9fda){logger['error']('['+_0x363722['lastevent'][_0x6e70('0x6b')]()+']',JSON['stringify'](_0x4e9fda));});};
\ No newline at end of file
index 9fb1d3d..7c4c37e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd35c=['stripTrailingSlash','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Ticket\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','POST','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','%s/agent/tickets/%s','replace','/api/v2','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','inspect','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','newTab','user:%s','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged','monitor_format','lastevent','toUpperCase','\x20Error\x20running\x20Zendesk\x20integration','lodash','util','ioredis','./util','zendesk','redis','localhost','socket.io-emitter','emit','application/json','info','format','%s/tickets.json','remoteUri','Tags','name','getString','Subjects','Descriptions','Fields','Ticket\x20created!','ticket','validateEmail','%s/search.json','count','Agent\x20found!','results','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','then','Admin\x20account\x20selected.','user','Searching\x20enduser\x20with\x20phone','length','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','end-user','Caller\x20-\x20%s','Enduser\x20created.','authType','password','%s:%s','username','token','base64','debug','[HTTP]','defaults','GET','map','forEach','string','picklist','nameField','customField','toLowerCase','content','includes','type','idField','toString','variable','variableName','custom_fields','push','Variable','queue','serverUrl'];(function(_0x16cb03,_0x43ea58){var _0x10944e=function(_0x27ebaa){while(--_0x27ebaa){_0x16cb03['push'](_0x16cb03['shift']());}};_0x10944e(++_0x43ea58);}(_0xd35c,0x175));var _0xcd35=function(_0x268b30,_0x37c820){_0x268b30=_0x268b30-0x0;var _0x2429bf=_0xd35c[_0x268b30];return _0x2429bf;};'use strict';var _=require(_0xcd35('0x0'));var rp=require('request-promise');var md5=require('md5');var util=require(_0xcd35('0x1'));var Redis=require(_0xcd35('0x2'));var intUtil=require(_0xcd35('0x3'));var config=require('../../../../config/environment');var logger=require('../../../../config/logger')(_0xcd35('0x4'));config[_0xcd35('0x5')]=_['defaults'](config[_0xcd35('0x5')],{'host':_0xcd35('0x6'),'port':0x18eb});var io=require(_0xcd35('0x7'))(new Redis(config['redis']));function emit(_0x9438c3,_0x2ea7e4,_0x3a93b2){io['to'](_0x9438c3)[_0xcd35('0x8')](_0x2ea7e4,_0x3a93b2);}var headers={'Content-Type':_0xcd35('0x9'),'Accept':_0xcd35('0x9')};function getTicket(_0x373dca,_0x135fbd,_0x37420d,_0x44c19d,_0x2d728d){logger[_0xcd35('0xa')]('Creating\x20new\x20ticket...');return request({'uri':util[_0xcd35('0xb')](_0xcd35('0xc'),_0x373dca[_0xcd35('0xd')]),'method':'POST','body':{'ticket':_['merge']({'requester_id':_0x37420d['id'],'submitter_id':_0x135fbd?_0x135fbd['id']:undefined,'assignee_id':_0x135fbd?_0x135fbd['id']:undefined,'tags':getTags(_0x44c19d[_0xcd35('0xe')],_0xcd35('0xf')),'subject':intUtil[_0xcd35('0x10')](_0x44c19d[_0xcd35('0x11')],_0x2d728d,'\x20'),'description':intUtil[_0xcd35('0x10')](_0x44c19d[_0xcd35('0x12')],_0x2d728d,'\x0a'),'comment':{'public':![],'body':intUtil['getString'](_0x44c19d[_0xcd35('0x12')],_0x2d728d,'\x0a')}},getCustomFields(_0x44c19d[_0xcd35('0x13')],_0x2d728d))}})['then'](function(_0x116c84){logger[_0xcd35('0xa')](_0xcd35('0x14'));return _0x116c84[_0xcd35('0x15')];});}function getUser(_0x5d9969,_0xe68e5c){if(intUtil[_0xcd35('0x16')](_0xe68e5c)){logger[_0xcd35('0xa')]('Getting\x20agent\x20with\x20email',_0xe68e5c);return request({'uri':util[_0xcd35('0xb')](_0xcd35('0x17'),_0x5d9969['remoteUri']),'qs':{'query':util[_0xcd35('0xb')]('type:user\x20role:agent\x20email:%s',_0xe68e5c)}})['then'](function(_0x1f93c1){if(_0x1f93c1[_0xcd35('0x18')]){logger[_0xcd35('0xa')](_0xcd35('0x19'));return _['find'](_0x1f93c1[_0xcd35('0x1a')],{'email':_0xe68e5c,'role':_0xcd35('0x1b')});}else{logger[_0xcd35('0xa')](_0xcd35('0x1c'));return request({'uri':util[_0xcd35('0xb')](_0xcd35('0x1d'),_0x5d9969[_0xcd35('0xd')])})[_0xcd35('0x1e')](function(_0x590cdb){logger[_0xcd35('0xa')](_0xcd35('0x1f'));return _0x590cdb[_0xcd35('0x20')];});}});}else{logger[_0xcd35('0xa')](_0xcd35('0x1c'));return request({'uri':util[_0xcd35('0xb')](_0xcd35('0x1d'),_0x5d9969['remoteUri'])})['then'](function(_0x15feb4){logger['info'](_0xcd35('0x1f'));return _0x15feb4[_0xcd35('0x20')];});}}function getEndUser(_0x3c34be,_0x45fbe4,_0x5ad26d){logger[_0xcd35('0xa')](_0xcd35('0x21'),_0x5ad26d);return request({'uri':util[_0xcd35('0xb')](_0xcd35('0x17'),_0x3c34be[_0xcd35('0xd')]),'qs':{'query':util[_0xcd35('0xb')]('type:user\x20role:end-user\x20phone:%s',_0x5ad26d)}})[_0xcd35('0x1e')](function(_0x58acb7){var _0x4393e7;if(_0x58acb7[_0xcd35('0x1a')][_0xcd35('0x22')]){_0x58acb7['results']=_['filter'](_0x58acb7[_0xcd35('0x1a')],{'suspended':![],'role':'end-user'});if(_0x58acb7[_0xcd35('0x1a')]['length']){_0x4393e7=_[_0xcd35('0x23')](_0x58acb7[_0xcd35('0x1a')]);}}if(_0x4393e7){logger['info'](_0xcd35('0x24'));return _0x4393e7;}else{logger[_0xcd35('0xa')](_0xcd35('0x25'));return request({'uri':util[_0xcd35('0xb')](_0xcd35('0x26'),_0x3c34be[_0xcd35('0xd')]),'method':'POST','body':{'user':{'role':_0xcd35('0x27'),'name':util[_0xcd35('0xb')](_0xcd35('0x28'),_0x45fbe4||_0x5ad26d),'phone':_0x5ad26d}}})[_0xcd35('0x1e')](function(_0x5cc057){logger[_0xcd35('0xa')](_0xcd35('0x29'));return _0x5cc057[_0xcd35('0x20')];});}});}function getAuth(_0x4d0500){var _0x2db716;if(_0x4d0500[_0xcd35('0x2a')]===_0xcd35('0x2b')){_0x2db716=util[_0xcd35('0xb')](_0xcd35('0x2c'),_0x4d0500[_0xcd35('0x2d')],_0x4d0500[_0xcd35('0x2b')]);}else if(_0x4d0500[_0xcd35('0x2a')]===_0xcd35('0x2e')){_0x2db716=util[_0xcd35('0xb')]('%s/token:%s',_0x4d0500[_0xcd35('0x2d')],_0x4d0500[_0xcd35('0x2e')]);}return util[_0xcd35('0xb')]('Basic\x20%s',new Buffer(_0x2db716)['toString'](_0xcd35('0x2f')));}function request(_0x70b021){logger[_0xcd35('0x30')](_0xcd35('0x31'),JSON['stringify'](_0x70b021));return rp(_[_0xcd35('0x32')](_0x70b021,{'method':_0xcd35('0x33'),'headers':headers,'json':!![]}));}function getTags(_0x4d0e51,_0x139995){var _0x81ffc6=[];if(_0x4d0e51&&_0x4d0e51[_0xcd35('0x22')]>0x0){_0x81ffc6=_[_0xcd35('0x34')](_0x4d0e51,_0x139995);}return _0x81ffc6;}function getCustomFields(_0x2701b8,_0x1d7afd){var _0x24b67c=[];var _0x365f66={'custom_fields':[]};if(_0x2701b8['length']>0x0){_[_0xcd35('0x35')](_0x2701b8,function(_0x175534){if(_['includes']([_0xcd35('0x36'),_0xcd35('0x37')],_0x175534['type'])&&_0x175534[_0xcd35('0x38')]&&!_0x175534[_0xcd35('0x39')]){_0x365f66[_0x175534['nameField'][_0xcd35('0x3a')]()]=_0x175534[_0xcd35('0x3b')]['toString']();}else if(_[_0xcd35('0x3c')]([_0xcd35('0x36'),'picklist'],_0x175534[_0xcd35('0x3d')])&&_0x175534[_0xcd35('0x3e')]&&_0x175534[_0xcd35('0x39')]){_0x365f66['custom_fields']['push']({'id':_0x175534[_0xcd35('0x3e')],'value':_0x175534[_0xcd35('0x3b')][_0xcd35('0x3f')]()});}else if(_0x175534[_0xcd35('0x3d')]===_0xcd35('0x40')&&_0x175534[_0xcd35('0x41')]&&_0x175534['idField']&&_0x175534[_0xcd35('0x39')]){_0x1d7afd[_0x175534['variableName']]&&_0x365f66[_0xcd35('0x42')][_0xcd35('0x43')]({'id':_0x175534[_0xcd35('0x3e')],'value':_0x1d7afd[_0x175534[_0xcd35('0x41')]]['toString']()});}else if(_0x175534[_0xcd35('0x3d')]==='customVariable'&&_0x175534[_0xcd35('0x44')]&&_0x175534[_0xcd35('0x44')][_0xcd35('0xf')]&&_0x175534[_0xcd35('0x3e')]&&_0x175534['customField']){_0x1d7afd[_0x175534['Variable']['name']['toLowerCase']()]&&_0x365f66[_0xcd35('0x42')]['push']({'id':_0x175534['idField'],'value':_0x1d7afd[_0x175534['Variable'][_0xcd35('0xf')][_0xcd35('0x3a')]()][_0xcd35('0x3f')]()});}});}return _0x365f66;}exports[_0xcd35('0x45')]=function(_0xbe4644,_0x3c0827,_0xdf156,_0x87e096,_0x450ad4,_0x4d02ed){var _0x475b0c,_0x3de708;_0x4d02ed[_0xcd35('0xd')]=intUtil['stripTrailingSlash'](_0x4d02ed[_0xcd35('0xd')]);_0x4d02ed[_0xcd35('0x46')]=intUtil[_0xcd35('0x47')](_0x4d02ed[_0xcd35('0x46')]);if(_0x450ad4&&_0x450ad4['monitor_format']){logger[_0xcd35('0xa')](_0xcd35('0x48'),_0xcd35('0x49'));_0x3c0827[_0xcd35('0x4a')]=util[_0xcd35('0xb')](_0xcd35('0x4b'),_0x4d02ed[_0xcd35('0x46')],_0x3c0827[_0xcd35('0x4c')],md5(_0x3c0827[_0xcd35('0x4c')]));}else{_0x3c0827['recordingURL']='';}headers[_0xcd35('0x4d')]=getAuth(_0x4d02ed);return getUser(_0x4d02ed,_0x87e096[_0xcd35('0x4e')])[_0xcd35('0x1e')](function(_0x137285){_0x475b0c=_0x137285;logger[_0xcd35('0xa')](_0xcd35('0x4f'),_0x475b0c['id']);return getEndUser(_0x4d02ed,_0x3c0827[_0xcd35('0x50')],_0x3c0827[_0xcd35('0x51')]);})[_0xcd35('0x1e')](function(_0x14d500){_0x3de708=_0x14d500;logger[_0xcd35('0xa')]('The\x20Enduser\x20ID\x20is:',_0x3de708['id']);return getTicket(_0x4d02ed,_0x475b0c,_0x3de708,_0xdf156,_0x3c0827);})['then'](function(_0x5e1085){if(_0x5e1085){logger[_0xcd35('0xa')](_0xcd35('0x52'),_0x5e1085['id']);switch(_0x4d02ed[_0xcd35('0x3d')]){case _0xcd35('0x53'):logger['info']('[QUEUE]',_0xcd35('0x54'));return request({'uri':util[_0xcd35('0xb')](_0xcd35('0x55'),_0x4d02ed[_0xcd35('0xd')],_0x475b0c['id'],_0x5e1085['id']),'method':_0xcd35('0x56')});case'newTab':logger[_0xcd35('0xa')](_0xcd35('0x48'),_0xcd35('0x57'));emit(util['format']('user:%s',_0x87e096['name']),_0xcd35('0x58'),{'uri':util[_0xcd35('0xb')](_0xcd35('0x59'),_0x4d02ed[_0xcd35('0xd')][_0xcd35('0x5a')](_0xcd35('0x5b'),''),_0x5e1085['id'])});break;default:logger[_0xcd35('0x5c')](_0xcd35('0x48'),_0xcd35('0x5d'));}}})[_0xcd35('0x5e')](function(_0x3f3e72){logger[_0xcd35('0x5c')]('[QUEUE]\x20Error\x20running\x20Zendesk\x20integration',util[_0xcd35('0x5f')](_0x3f3e72,{'showHidden':!![],'depth':null}));});};exports[_0xcd35('0x60')]=function(_0x1fe6d5,_0x33e22f,_0x54daad,_0x5711ad,_0x25b2b7,_0xf37601,_0x27bfbb){var _0x49c156,_0x1703e8;_0xf37601[_0xcd35('0xd')]=intUtil[_0xcd35('0x47')](_0xf37601[_0xcd35('0xd')]);_0xf37601[_0xcd35('0x46')]=intUtil[_0xcd35('0x47')](_0xf37601[_0xcd35('0x46')]);if(_0x27bfbb&&_0x27bfbb[_0xcd35('0x61')]&&_0x27bfbb[_0xcd35('0x61')]!==_0xcd35('0x62')){logger[_0xcd35('0xa')](_0xcd35('0x63'),'Recording\x20is\x20enabled!');_0x33e22f['recordingURL']=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0xf37601['serverUrl'],_0x33e22f[_0xcd35('0x4c')],md5(_0x33e22f[_0xcd35('0x4c')]));}headers[_0xcd35('0x4d')]=getAuth(_0xf37601);return getUser(_0xf37601,_0x5711ad[_0xcd35('0x4e')])[_0xcd35('0x1e')](function(_0x10f83a){_0x49c156=_0x10f83a;logger['info'](_0xcd35('0x4f'),_0x49c156['id']);return getEndUser(_0xf37601,_0x33e22f[_0xcd35('0x64')],_0x33e22f[_0xcd35('0x65')]);})[_0xcd35('0x1e')](function(_0x5cd1a4){_0x1703e8=_0x5cd1a4;logger[_0xcd35('0xa')](_0xcd35('0x66'),_0x1703e8['id']);return getTicket(_0xf37601,_0x49c156,_0x1703e8,_0x54daad,_0x33e22f);})[_0xcd35('0x1e')](function(_0xc78bc){if(_0xc78bc){logger[_0xcd35('0xa')](_0xcd35('0x52'),_0xc78bc['id']);switch(_0xf37601[_0xcd35('0x3d')]){case _0xcd35('0x53'):logger[_0xcd35('0xa')](_0xcd35('0x63'),_0xcd35('0x54'));return request({'uri':util[_0xcd35('0xb')](_0xcd35('0x55'),_0xf37601[_0xcd35('0xd')],_0x49c156['id'],_0xc78bc['id']),'method':'POST'});case _0xcd35('0x67'):logger[_0xcd35('0xa')](_0xcd35('0x63'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xcd35('0xb')](_0xcd35('0x68'),_0x5711ad[_0xcd35('0xf')]),_0xcd35('0x58'),{'uri':util['format'](_0xcd35('0x59'),_0xf37601[_0xcd35('0xd')][_0xcd35('0x5a')](_0xcd35('0x5b'),''),_0xc78bc['id'])});break;default:logger[_0xcd35('0x5c')](_0xcd35('0x63'),_0xcd35('0x5d'));}}})['catch'](function(_0x7f8f5c){logger['error'](_0xcd35('0x69'),util[_0xcd35('0x5f')](_0x7f8f5c,{'showHidden':!![],'depth':null}));});};exports[_0xcd35('0x6a')]=function(_0x53ece4,_0xe5b655,_0x27555a,_0x1778d6,_0x2ddb36,_0x4dda3d){var _0x2a7460,_0xd19d85;_0x4dda3d[_0xcd35('0xd')]=intUtil['stripTrailingSlash'](_0x4dda3d['remoteUri']);_0x4dda3d[_0xcd35('0x46')]=intUtil[_0xcd35('0x47')](_0x4dda3d[_0xcd35('0x46')]);if(_0x2ddb36&&_0x2ddb36[_0xcd35('0x6b')]){logger[_0xcd35('0xa')]('['+_0xe5b655[_0xcd35('0x6c')][_0xcd35('0x6d')]()+']',_0xcd35('0x49'));_0xe5b655['recordingURL']=util[_0xcd35('0xb')](_0xcd35('0x4b'),_0x4dda3d[_0xcd35('0x46')],_0xe5b655[_0xcd35('0x4c')],md5(_0xe5b655['uniqueid']));}else{_0xe5b655[_0xcd35('0x4a')]='';}headers[_0xcd35('0x4d')]=getAuth(_0x4dda3d);return getUser(_0x4dda3d)['then'](function(_0x3e074b){_0x2a7460=_0x3e074b;logger[_0xcd35('0xa')](_0xcd35('0x4f'),_0x2a7460['id']);return getEndUser(_0x4dda3d,_0xe5b655['calleridname'],_0xe5b655[_0xcd35('0x51')]);})[_0xcd35('0x1e')](function(_0x23bf70){_0xd19d85=_0x23bf70;logger[_0xcd35('0xa')]('The\x20Enduser\x20ID\x20is:',_0xd19d85['id']);return getTicket(_0x4dda3d,_0x2a7460,_0xd19d85,_0x27555a,_0xe5b655);})['then'](function(_0x47a499){if(_0x47a499){logger[_0xcd35('0xa')]('The\x20Ticket\x20ID\x20is:',_0x47a499['id']);}})[_0xcd35('0x5e')](function(_0x59c72d){logger[_0xcd35('0x5c')]('['+_0xe5b655['lastevent'][_0xcd35('0x6d')]()+']'+_0xcd35('0x6e'),util[_0xcd35('0x5f')](_0x59c72d,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xeea4=['./util','../../../../config/environment','../../../../config/logger','zendesk','redis','defaults','localhost','socket.io-emitter','application/json','format','%s/tickets.json','remoteUri','merge','name','getString','Descriptions','then','info','Ticket\x20created!','ticket','validateEmail','Getting\x20agent\x20with\x20email','%s/search.json','type:user\x20role:agent\x20email:%s','find','results','agent','%s/users/me.json','Admin\x20account\x20selected.','user','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','end-user','length','first','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','POST','Caller\x20-\x20%s','authType','password','username','token','%s/token:%s','Basic\x20%s','toString','base64','debug','[HTTP]','GET','map','forEach','includes','string','nameField','customField','toLowerCase','content','type','idField','custom_fields','push','variable','variableName','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','[QUEUE]','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','replace','/api/v2','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','outbound','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','email','destcalleridnum','%s/agent/tickets/%s','inspect','unmanaged','lastevent','The\x20User\x20ID\x20is:','calleridname','toUpperCase','lodash','request-promise','md5','ioredis'];(function(_0x2c09e,_0x578e8b){var _0x1cd9cc=function(_0x95d130){while(--_0x95d130){_0x2c09e['push'](_0x2c09e['shift']());}};_0x1cd9cc(++_0x578e8b);}(_0xeea4,0x1ac));var _0x4eea=function(_0x858776,_0x3bf7b0){_0x858776=_0x858776-0x0;var _0x414d08=_0xeea4[_0x858776];return _0x414d08;};'use strict';var _=require(_0x4eea('0x0'));var rp=require(_0x4eea('0x1'));var md5=require(_0x4eea('0x2'));var util=require('util');var Redis=require(_0x4eea('0x3'));var intUtil=require(_0x4eea('0x4'));var config=require(_0x4eea('0x5'));var logger=require(_0x4eea('0x6'))(_0x4eea('0x7'));config[_0x4eea('0x8')]=_[_0x4eea('0x9')](config['redis'],{'host':_0x4eea('0xa'),'port':0x18eb});var io=require(_0x4eea('0xb'))(new Redis(config[_0x4eea('0x8')]));function emit(_0x115b9c,_0x403f8d,_0x4ea162){io['to'](_0x115b9c)['emit'](_0x403f8d,_0x4ea162);}var headers={'Content-Type':_0x4eea('0xc'),'Accept':_0x4eea('0xc')};function getTicket(_0x1ad7ff,_0x475986,_0x5bc149,_0x1b6f5e,_0x5dba62){logger['info']('Creating\x20new\x20ticket...');return request({'uri':util[_0x4eea('0xd')](_0x4eea('0xe'),_0x1ad7ff[_0x4eea('0xf')]),'method':'POST','body':{'ticket':_[_0x4eea('0x10')]({'requester_id':_0x5bc149['id'],'submitter_id':_0x475986?_0x475986['id']:undefined,'assignee_id':_0x475986?_0x475986['id']:undefined,'tags':getTags(_0x1b6f5e['Tags'],_0x4eea('0x11')),'subject':intUtil[_0x4eea('0x12')](_0x1b6f5e['Subjects'],_0x5dba62,'\x20'),'description':intUtil[_0x4eea('0x12')](_0x1b6f5e[_0x4eea('0x13')],_0x5dba62,'\x0a'),'comment':{'public':![],'body':intUtil['getString'](_0x1b6f5e[_0x4eea('0x13')],_0x5dba62,'\x0a')}},getCustomFields(_0x1b6f5e['Fields'],_0x5dba62))}})[_0x4eea('0x14')](function(_0x7fe80c){logger[_0x4eea('0x15')](_0x4eea('0x16'));return _0x7fe80c[_0x4eea('0x17')];});}function getUser(_0xfb64d4,_0x1c946f){if(intUtil[_0x4eea('0x18')](_0x1c946f)){logger[_0x4eea('0x15')](_0x4eea('0x19'),_0x1c946f);return request({'uri':util[_0x4eea('0xd')](_0x4eea('0x1a'),_0xfb64d4[_0x4eea('0xf')]),'qs':{'query':util[_0x4eea('0xd')](_0x4eea('0x1b'),_0x1c946f)}})[_0x4eea('0x14')](function(_0xfac190){if(_0xfac190['count']){logger[_0x4eea('0x15')]('Agent\x20found!');return _[_0x4eea('0x1c')](_0xfac190[_0x4eea('0x1d')],{'email':_0x1c946f,'role':_0x4eea('0x1e')});}else{logger[_0x4eea('0x15')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x4eea('0xd')](_0x4eea('0x1f'),_0xfb64d4[_0x4eea('0xf')])})[_0x4eea('0x14')](function(_0x44fde4){logger[_0x4eea('0x15')](_0x4eea('0x20'));return _0x44fde4[_0x4eea('0x21')];});}});}else{logger['info'](_0x4eea('0x22'));return request({'uri':util['format'](_0x4eea('0x1f'),_0xfb64d4[_0x4eea('0xf')])})[_0x4eea('0x14')](function(_0x396009){logger[_0x4eea('0x15')](_0x4eea('0x20'));return _0x396009[_0x4eea('0x21')];});}}function getEndUser(_0x1c2bd8,_0x594ff2,_0x429b9d){logger[_0x4eea('0x15')](_0x4eea('0x23'),_0x429b9d);return request({'uri':util[_0x4eea('0xd')](_0x4eea('0x1a'),_0x1c2bd8[_0x4eea('0xf')]),'qs':{'query':util[_0x4eea('0xd')]('type:user\x20role:end-user\x20phone:%s',_0x429b9d)}})[_0x4eea('0x14')](function(_0x45a81b){var _0x26c4b9;if(_0x45a81b['results']['length']){_0x45a81b[_0x4eea('0x1d')]=_['filter'](_0x45a81b[_0x4eea('0x1d')],{'suspended':![],'role':_0x4eea('0x24')});if(_0x45a81b['results'][_0x4eea('0x25')]){_0x26c4b9=_[_0x4eea('0x26')](_0x45a81b[_0x4eea('0x1d')]);}}if(_0x26c4b9){logger[_0x4eea('0x15')]('Enduser\x20found!');return _0x26c4b9;}else{logger[_0x4eea('0x15')](_0x4eea('0x27'));return request({'uri':util['format'](_0x4eea('0x28'),_0x1c2bd8['remoteUri']),'method':_0x4eea('0x29'),'body':{'user':{'role':_0x4eea('0x24'),'name':util['format'](_0x4eea('0x2a'),_0x594ff2||_0x429b9d),'phone':_0x429b9d}}})[_0x4eea('0x14')](function(_0x5997fb){logger[_0x4eea('0x15')]('Enduser\x20created.');return _0x5997fb[_0x4eea('0x21')];});}});}function getAuth(_0xb8f809){var _0x1603cb;if(_0xb8f809[_0x4eea('0x2b')]===_0x4eea('0x2c')){_0x1603cb=util[_0x4eea('0xd')]('%s:%s',_0xb8f809[_0x4eea('0x2d')],_0xb8f809[_0x4eea('0x2c')]);}else if(_0xb8f809[_0x4eea('0x2b')]===_0x4eea('0x2e')){_0x1603cb=util[_0x4eea('0xd')](_0x4eea('0x2f'),_0xb8f809[_0x4eea('0x2d')],_0xb8f809[_0x4eea('0x2e')]);}return util[_0x4eea('0xd')](_0x4eea('0x30'),new Buffer(_0x1603cb)[_0x4eea('0x31')](_0x4eea('0x32')));}function request(_0x5c0467){logger[_0x4eea('0x33')](_0x4eea('0x34'),JSON['stringify'](_0x5c0467));return rp(_['defaults'](_0x5c0467,{'method':_0x4eea('0x35'),'headers':headers,'json':!![]}));}function getTags(_0x5d4f27,_0x38a737){var _0x2649ff=[];if(_0x5d4f27&&_0x5d4f27[_0x4eea('0x25')]>0x0){_0x2649ff=_[_0x4eea('0x36')](_0x5d4f27,_0x38a737);}return _0x2649ff;}function getCustomFields(_0x132723,_0x4ef380){var _0x4bff75=[];var _0x3ee81d={'custom_fields':[]};if(_0x132723['length']>0x0){_[_0x4eea('0x37')](_0x132723,function(_0x1383d5){if(_[_0x4eea('0x38')]([_0x4eea('0x39'),'picklist'],_0x1383d5['type'])&&_0x1383d5[_0x4eea('0x3a')]&&!_0x1383d5[_0x4eea('0x3b')]){_0x3ee81d[_0x1383d5['nameField'][_0x4eea('0x3c')]()]=_0x1383d5[_0x4eea('0x3d')][_0x4eea('0x31')]();}else if(_[_0x4eea('0x38')](['string','picklist'],_0x1383d5[_0x4eea('0x3e')])&&_0x1383d5[_0x4eea('0x3f')]&&_0x1383d5[_0x4eea('0x3b')]){_0x3ee81d[_0x4eea('0x40')][_0x4eea('0x41')]({'id':_0x1383d5[_0x4eea('0x3f')],'value':_0x1383d5[_0x4eea('0x3d')]['toString']()});}else if(_0x1383d5['type']===_0x4eea('0x42')&&_0x1383d5[_0x4eea('0x43')]&&_0x1383d5['idField']&&_0x1383d5[_0x4eea('0x3b')]){_0x4ef380[_0x1383d5[_0x4eea('0x43')]]&&_0x3ee81d[_0x4eea('0x40')]['push']({'id':_0x1383d5[_0x4eea('0x3f')],'value':_0x4ef380[_0x1383d5[_0x4eea('0x43')]]['toString']()});}else if(_0x1383d5[_0x4eea('0x3e')]==='customVariable'&&_0x1383d5[_0x4eea('0x44')]&&_0x1383d5[_0x4eea('0x44')][_0x4eea('0x11')]&&_0x1383d5[_0x4eea('0x3f')]&&_0x1383d5[_0x4eea('0x3b')]){_0x4ef380[_0x1383d5[_0x4eea('0x44')][_0x4eea('0x11')][_0x4eea('0x3c')]()]&&_0x3ee81d[_0x4eea('0x40')]['push']({'id':_0x1383d5[_0x4eea('0x3f')],'value':_0x4ef380[_0x1383d5['Variable']['name'][_0x4eea('0x3c')]()]['toString']()});}});}return _0x3ee81d;}exports[_0x4eea('0x45')]=function(_0x8c393b,_0x258cbc,_0x44856e,_0x5af588,_0x2e7431,_0x60d0c3){var _0x516c84,_0x5204f3;_0x60d0c3[_0x4eea('0xf')]=intUtil[_0x4eea('0x46')](_0x60d0c3[_0x4eea('0xf')]);_0x60d0c3['serverUrl']=intUtil[_0x4eea('0x46')](_0x60d0c3[_0x4eea('0x47')]);if(_0x2e7431&&_0x2e7431[_0x4eea('0x48')]){logger[_0x4eea('0x15')]('[QUEUE]','Recording\x20is\x20enabled!');_0x258cbc[_0x4eea('0x49')]=util[_0x4eea('0xd')](_0x4eea('0x4a'),_0x60d0c3['serverUrl'],_0x258cbc['uniqueid'],md5(_0x258cbc[_0x4eea('0x4b')]));}else{_0x258cbc[_0x4eea('0x49')]='';}headers[_0x4eea('0x4c')]=getAuth(_0x60d0c3);return getUser(_0x60d0c3,_0x5af588['email'])[_0x4eea('0x14')](function(_0x131c6d){_0x516c84=_0x131c6d;logger[_0x4eea('0x15')]('The\x20User\x20ID\x20is:',_0x516c84['id']);return getEndUser(_0x60d0c3,_0x258cbc['calleridname'],_0x258cbc[_0x4eea('0x4d')]);})[_0x4eea('0x14')](function(_0x272303){_0x5204f3=_0x272303;logger[_0x4eea('0x15')](_0x4eea('0x4e'),_0x5204f3['id']);return getTicket(_0x60d0c3,_0x516c84,_0x5204f3,_0x44856e,_0x258cbc);})['then'](function(_0x4e36f5){if(_0x4e36f5){logger['info'](_0x4eea('0x4f'),_0x4e36f5['id']);switch(_0x60d0c3['type']){case _0x4eea('0x50'):logger[_0x4eea('0x15')](_0x4eea('0x51'),_0x4eea('0x52'));return request({'uri':util[_0x4eea('0xd')](_0x4eea('0x53'),_0x60d0c3['remoteUri'],_0x516c84['id'],_0x4e36f5['id']),'method':'POST'});case _0x4eea('0x54'):logger[_0x4eea('0x15')](_0x4eea('0x51'),_0x4eea('0x55'));emit(util['format'](_0x4eea('0x56'),_0x5af588['name']),_0x4eea('0x57'),{'uri':util[_0x4eea('0xd')]('%s/agent/tickets/%s',_0x60d0c3['remoteUri'][_0x4eea('0x58')](_0x4eea('0x59'),''),_0x4e36f5['id'])});break;default:logger[_0x4eea('0x5a')](_0x4eea('0x51'),_0x4eea('0x5b'));}}})[_0x4eea('0x5c')](function(_0x304602){logger[_0x4eea('0x5a')](_0x4eea('0x5d'),util['inspect'](_0x304602,{'showHidden':!![],'depth':null}));});};exports[_0x4eea('0x5e')]=function(_0x124839,_0x14ea7c,_0x40897e,_0x2fab5f,_0x45925b,_0x5a7d65,_0x2551aa){var _0x473db6,_0x422051;_0x5a7d65[_0x4eea('0xf')]=intUtil['stripTrailingSlash'](_0x5a7d65['remoteUri']);_0x5a7d65[_0x4eea('0x47')]=intUtil[_0x4eea('0x46')](_0x5a7d65[_0x4eea('0x47')]);if(_0x2551aa&&_0x2551aa[_0x4eea('0x5f')]&&_0x2551aa[_0x4eea('0x5f')]!==_0x4eea('0x60')){logger[_0x4eea('0x15')](_0x4eea('0x61'),_0x4eea('0x62'));_0x14ea7c[_0x4eea('0x49')]=util[_0x4eea('0xd')](_0x4eea('0x4a'),_0x5a7d65[_0x4eea('0x47')],_0x14ea7c[_0x4eea('0x4b')],md5(_0x14ea7c[_0x4eea('0x4b')]));}headers[_0x4eea('0x4c')]=getAuth(_0x5a7d65);return getUser(_0x5a7d65,_0x2fab5f[_0x4eea('0x63')])[_0x4eea('0x14')](function(_0x1badb9){_0x473db6=_0x1badb9;logger[_0x4eea('0x15')]('The\x20User\x20ID\x20is:',_0x473db6['id']);return getEndUser(_0x5a7d65,_0x14ea7c['destcalleridname'],_0x14ea7c[_0x4eea('0x64')]);})[_0x4eea('0x14')](function(_0x373f1e){_0x422051=_0x373f1e;logger[_0x4eea('0x15')](_0x4eea('0x4e'),_0x422051['id']);return getTicket(_0x5a7d65,_0x473db6,_0x422051,_0x40897e,_0x14ea7c);})[_0x4eea('0x14')](function(_0x4cfbdf){if(_0x4cfbdf){logger[_0x4eea('0x15')]('The\x20Ticket\x20ID\x20is:',_0x4cfbdf['id']);switch(_0x5a7d65[_0x4eea('0x3e')]){case _0x4eea('0x50'):logger[_0x4eea('0x15')](_0x4eea('0x61'),_0x4eea('0x52'));return request({'uri':util[_0x4eea('0xd')]('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x5a7d65[_0x4eea('0xf')],_0x473db6['id'],_0x4cfbdf['id']),'method':_0x4eea('0x29')});case _0x4eea('0x54'):logger[_0x4eea('0x15')](_0x4eea('0x61'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x4eea('0xd')](_0x4eea('0x56'),_0x2fab5f[_0x4eea('0x11')]),'trigger:browser:url',{'uri':util[_0x4eea('0xd')](_0x4eea('0x65'),_0x5a7d65[_0x4eea('0xf')][_0x4eea('0x58')](_0x4eea('0x59'),''),_0x4cfbdf['id'])});break;default:logger['error'](_0x4eea('0x61'),_0x4eea('0x5b'));}}})[_0x4eea('0x5c')](function(_0x4496f6){logger[_0x4eea('0x5a')]('[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration',util[_0x4eea('0x66')](_0x4496f6,{'showHidden':!![],'depth':null}));});};exports[_0x4eea('0x67')]=function(_0x131760,_0x59222d,_0x32a170,_0x19ac09,_0x2ad215,_0x4392dc){var _0x1c40b6,_0x334ab4;_0x4392dc[_0x4eea('0xf')]=intUtil['stripTrailingSlash'](_0x4392dc[_0x4eea('0xf')]);_0x4392dc['serverUrl']=intUtil[_0x4eea('0x46')](_0x4392dc[_0x4eea('0x47')]);if(_0x2ad215&&_0x2ad215[_0x4eea('0x48')]){logger[_0x4eea('0x15')]('['+_0x59222d[_0x4eea('0x68')]['toUpperCase']()+']',_0x4eea('0x62'));_0x59222d[_0x4eea('0x49')]=util['format'](_0x4eea('0x4a'),_0x4392dc[_0x4eea('0x47')],_0x59222d['uniqueid'],md5(_0x59222d[_0x4eea('0x4b')]));}else{_0x59222d[_0x4eea('0x49')]='';}headers[_0x4eea('0x4c')]=getAuth(_0x4392dc);return getUser(_0x4392dc)['then'](function(_0xf98dac){_0x1c40b6=_0xf98dac;logger[_0x4eea('0x15')](_0x4eea('0x69'),_0x1c40b6['id']);return getEndUser(_0x4392dc,_0x59222d[_0x4eea('0x6a')],_0x59222d[_0x4eea('0x4d')]);})[_0x4eea('0x14')](function(_0x249332){_0x334ab4=_0x249332;logger[_0x4eea('0x15')]('The\x20Enduser\x20ID\x20is:',_0x334ab4['id']);return getTicket(_0x4392dc,_0x1c40b6,_0x334ab4,_0x32a170,_0x59222d);})[_0x4eea('0x14')](function(_0x5a29ab){if(_0x5a29ab){logger[_0x4eea('0x15')](_0x4eea('0x4f'),_0x5a29ab['id']);}})['catch'](function(_0x231ecf){logger[_0x4eea('0x5a')]('['+_0x59222d[_0x4eea('0x68')][_0x4eea('0x6b')]()+']'+'\x20Error\x20running\x20Zendesk\x20integration',util[_0x4eea('0x66')](_0x231ecf,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 3f87faa..859f244 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1edd=['talktime','Call_Duration','utc','mm:ss','endtime','YYYY-MM-DDTHH:mm:ss','starttime','lastevent','Called','complete','connect','Call_Result','Answered','rejected','Rejected','abandoned','timeout','Call_Start_Time','outbound','agentcalledAt','Call_Type','merge','Fields','/crm/v2/Calls','Call\x20created!','err','queue','host','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','/api/voice/recordings/','/downloads?type=uniqueid&token=','recordingURL','zoho.eu','com','calleridname','calleridnum','Inbound','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]','uniqueid','unmanaged','toUpperCase','The\x20User\x20ID\x20is:','lodash','request-promise','md5','util','./util','moment','bluebird','../../../../config/environment','zoho','redis','localhost','socket.io-emitter','emit','debug','[HTTP]','stringify','forEach','includes','string','type','idField','content','toString','variableName','customVariable','Variable','name','toLowerCase','indexOf','isNil','access_token','isBefore','expires_in','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','/oauth/v2/token','refreshToken','clientId','refresh_token','then','add','seconds','error','info','Search\x20user','GET','format','https://www.zohoapis.%s/crm/v2/users','ActiveUsers','Zoho-oauthtoken\x20','users','isArrayLikeObject','findIndex','email','Agent\x20found!','Using\x20the\x20admin\x20account!','profile','Administrator','user','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','data','enduserType','https://www.zohoapis.','startCase','moduleCreate','role','last_name','code','details','catch','log','CREATE\x20ERROR','uri','Contacts','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','contact','/crm/v2/Contacts/search?criteria=((Phone:equals:','nothing','lead','Creating\x20new\x20call...','Owner','administrator','first_name','getString','Subjects','Description','Who_Id','Full_Name','First_Name','Last_Name'];(function(_0x544099,_0x372b30){var _0x20ab09=function(_0x149613){while(--_0x149613){_0x544099['push'](_0x544099['shift']());}};_0x20ab09(++_0x372b30);}(_0x1edd,0xcd));var _0xd1ed=function(_0xc14df7,_0x163f90){_0xc14df7=_0xc14df7-0x0;var _0x34a445=_0x1edd[_0xc14df7];return _0x34a445;};'use strict';var _=require(_0xd1ed('0x0'));var rp=require(_0xd1ed('0x1'));var md5=require(_0xd1ed('0x2'));var util=require(_0xd1ed('0x3'));var intUtil=require(_0xd1ed('0x4'));var moment=require(_0xd1ed('0x5'));var Redis=require('ioredis');var BPromise=require(_0xd1ed('0x6'));var config=require(_0xd1ed('0x7'));var logger=require('../../../../config/logger')(_0xd1ed('0x8'));config[_0xd1ed('0x9')]=_['defaults'](config['redis'],{'host':_0xd1ed('0xa'),'port':0x18eb});var io=require(_0xd1ed('0xb'))(new Redis(config[_0xd1ed('0x9')]));function emit(_0x43a437,_0x2d36e9,_0x4e7531){io['to'](_0x43a437)[_0xd1ed('0xc')](_0x2d36e9,_0x4e7531);}function request(_0x1a4ada){logger[_0xd1ed('0xd')](_0xd1ed('0xe'),JSON[_0xd1ed('0xf')](_0x1a4ada));return rp(_0x1a4ada);}function getCustomFields(_0x5107a6,_0x5ee467){var _0x28b255={};if(_0x5107a6['length']>0x0){_[_0xd1ed('0x10')](_0x5107a6,function(_0x57c97e){if(_[_0xd1ed('0x11')]([_0xd1ed('0x12'),'picklist'],_0x57c97e[_0xd1ed('0x13')])&&_0x57c97e[_0xd1ed('0x14')]){_0x28b255[_0x57c97e[_0xd1ed('0x14')]]=_0x57c97e[_0xd1ed('0x15')][_0xd1ed('0x16')]();}else if(_0x57c97e[_0xd1ed('0x13')]==='variable'&&_0x57c97e[_0xd1ed('0x17')]&&_0x57c97e['idField']&&_0x5ee467[_0x57c97e[_0xd1ed('0x17')]]){_0x28b255[_0x57c97e[_0xd1ed('0x14')]]=_0x5ee467[_0x57c97e[_0xd1ed('0x17')]]['toString']();}else if(_0x57c97e[_0xd1ed('0x13')]===_0xd1ed('0x18')&&_0x57c97e['Variable']&&_0x57c97e[_0xd1ed('0x19')][_0xd1ed('0x1a')]&&_0x57c97e['idField']&&_0x5ee467[_0x57c97e['Variable'][_0xd1ed('0x1a')][_0xd1ed('0x1b')]()]){_0x28b255[_0x57c97e[_0xd1ed('0x14')]]=_0x5ee467[_0x57c97e[_0xd1ed('0x19')]['name'][_0xd1ed('0x1b')]()][_0xd1ed('0x16')]();}});}return _0x28b255;}function getName(_0x43254a){if(_0x43254a[_0xd1ed('0x1c')]('\x20')>0x0){var _0x35a50a=_0x43254a['split'](/ (.+)/);if(_0x35a50a[0x1]){return _0x35a50a;}}return[_0x43254a,_0x43254a];}var accountsTokens={};function getAccessToken(_0x4b5a5e){return new Promise(function(_0x643fed,_0x3c7087){if(!_[_0xd1ed('0x1d')](accountsTokens[_0x4b5a5e['id']])&&!_['isNil'](accountsTokens[_0x4b5a5e['id']][_0xd1ed('0x1e')])){if(moment()[_0xd1ed('0x1f')](accountsTokens[_0x4b5a5e['id']][_0xd1ed('0x20')])){_0x643fed(accountsTokens[_0x4b5a5e['id']][_0xd1ed('0x1e')]);}}var _0x5e664f;switch(_0x4b5a5e[_0xd1ed('0x21')]){case'US':_0x5e664f=_0xd1ed('0x22');break;case'AU':_0x5e664f=_0xd1ed('0x23');break;case'EU':_0x5e664f='https://accounts.zoho.eu';break;case'IN':_0x5e664f=_0xd1ed('0x24');break;case'CN':_0x5e664f=_0xd1ed('0x25');break;default:_0x5e664f=_0xd1ed('0x26');break;}var _0x34f6d9={'method':_0xd1ed('0x27'),'uri':_0x5e664f+_0xd1ed('0x28'),'qs':{'refresh_token':_0x4b5a5e[_0xd1ed('0x29')],'client_id':_0x4b5a5e[_0xd1ed('0x2a')],'client_secret':_0x4b5a5e['clientSecret'],'grant_type':_0xd1ed('0x2b')},'json':!![]};return rp(_0x34f6d9)[_0xd1ed('0x2c')](function(_0x4797cc){accountsTokens[_0x4b5a5e['id']]={'access_token':_0x4797cc[_0xd1ed('0x1e')],'expires_in':moment()[_0xd1ed('0x2d')](_0x4797cc[_0xd1ed('0x20')],_0xd1ed('0x2e'))};_0x643fed(_0x4797cc[_0xd1ed('0x1e')]);})['catch'](function(_0x1bdb24){logger[_0xd1ed('0x2f')]('Failing\x20creating\x20the\x20access_token',_0x1bdb24['stack']);_0x3c7087(_0x1bdb24);});});}function getUser(_0x2d701f,_0x2f6dc1,_0x4e7b75,_0x429f8f){logger[_0xd1ed('0x30')](_0xd1ed('0x31'));return request({'method':_0xd1ed('0x32'),'uri':util[_0xd1ed('0x33')](_0xd1ed('0x34'),_0x2f6dc1),'qs':{'type':_0xd1ed('0x35')},'headers':{'Authorization':_0xd1ed('0x36')+_0x2d701f},'json':!![]})[_0xd1ed('0x2c')](function(_0x5ae1e1){if(_0x5ae1e1[_0xd1ed('0x37')]){var _0x3e9e73=-0x1;if(_[_0xd1ed('0x38')](_0x5ae1e1[_0xd1ed('0x37')])){if(!_['isNil'](_0x429f8f)){_0x3e9e73=_[_0xd1ed('0x39')](_0x5ae1e1['users'],function(_0x96697e){return _0x96697e[_0xd1ed('0x3a')]===_0x429f8f;});}if(_0x3e9e73>=0x0){logger['info'](_0xd1ed('0x3b'));}else{logger['info'](_0xd1ed('0x3c'));_0x3e9e73=_[_0xd1ed('0x39')](_0x5ae1e1['users'],function(_0x2e817c){return _0x2e817c[_0xd1ed('0x3d')][_0xd1ed('0x1a')]===_0xd1ed('0x3e');});}return _0x5ae1e1['users'][_0x3e9e73];}else{if(_0x5ae1e1[_0xd1ed('0x3f')][_0xd1ed('0x3d')][_0xd1ed('0x1a')]===_0xd1ed('0x3e')){logger['info'](_0xd1ed('0x3c'));user=_0x5ae1e1['user'];return user;}else{logger['error'](_0xd1ed('0x40'),JSON[_0xd1ed('0xf')](_0x5ae1e1));throw new Error(_0xd1ed('0x41')+JSON[_0xd1ed('0xf')](_0x5ae1e1));}}}else{logger[_0xd1ed('0x2f')](_0xd1ed('0x40'),JSON['stringify'](_0x5ae1e1));throw new Error('Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20'+JSON['stringify'](_0x5ae1e1));}})['catch'](function(_0x30afa0){console[_0xd1ed('0x2f')](_0x30afa0);});}function getZohoUser(_0x4b737f,_0x16248e){return new BPromise(function(_0x4f0c99,_0x42fd03){request(_0x4b737f)[_0xd1ed('0x2c')](function(_0x3aec31){var _0x338ea6=null;if(_0x3aec31){_0x338ea6=_0x3aec31[_0xd1ed('0x42')][0x0];_0x338ea6[_0xd1ed('0x43')]=_0x16248e;}_0x4f0c99(_0x338ea6);})['catch'](function(_0x826954){_0x42fd03(_0x826954);});});}function createEndUser(_0x1f2f15,_0x4ec267,_0x54149a,_0x54c9bb,_0x28f207,_0x1bb23a){var _0x54149a=getName(_0x54149a);return request({'method':'POST','uri':_0xd1ed('0x44')+_0x4ec267+'/crm/v2/'+_[_0xd1ed('0x45')](_0x1bb23a[_0xd1ed('0x46')])+'s','body':{'data':[{'Last_Name':_0x54149a[0x1],'First_Name':_0x54149a[0x0],'Phone':_0x54c9bb,'Owner':{'name':!_[_0xd1ed('0x1d')](_0x28f207[_0xd1ed('0x47')][_0xd1ed('0x1a')])?_0x28f207[_0xd1ed('0x47')]['name']:!_[_0xd1ed('0x1d')](_0x28f207['first_name'])?_0x28f207['first_name']+'\x20'+_0x28f207[_0xd1ed('0x48')]:_0x28f207[_0xd1ed('0x48')],'id':_0x28f207['id']}}]},'headers':{'Authorization':_0xd1ed('0x36')+_0x1f2f15},'json':!![]})[_0xd1ed('0x2c')](function(_0x1aeabd){if(_0x1aeabd&&_0x1aeabd['data'][0x0][_0xd1ed('0x49')]==='SUCCESS'){var _0xe6279e=_0x1aeabd[_0xd1ed('0x42')][0x0][_0xd1ed('0x4a')];_0xe6279e[_0xd1ed('0x43')]=_[_0xd1ed('0x45')](_0x1bb23a[_0xd1ed('0x46')])+'s';return _0xe6279e;}logger[_0xd1ed('0x2f')](_0xd1ed('0x40'),JSON[_0xd1ed('0xf')](data));throw new Error('Error:\x20'+JSON[_0xd1ed('0xf')](data));})[_0xd1ed('0x4b')](function(_0x2fc672){console[_0xd1ed('0x4c')](_0xd1ed('0x4d'),_0x2fc672);});}function getEndUser(_0x189aaf,_0x27bd30,_0x14d4ce,_0x111e39,_0x47b2aa,_0x1fa50e,_0x1e85ff){var _0x1e2ed5={'method':'GET','uri':'','headers':{'Authorization':_0xd1ed('0x36')+_0x189aaf},'json':!![]};switch(_0x1e85ff['moduleSearch']){case'contact_lead':_0x1e2ed5[_0xd1ed('0x4e')]=_0xd1ed('0x44')+_0x27bd30+'/crm/v2/Contacts/search?criteria=((Phone:equals:'+_0x47b2aa+'))';return getZohoUser(_0x1e2ed5,_0xd1ed('0x4f'))['then'](function(_0x1ff97d){if(_0x1ff97d)return _0x1ff97d;_0x1e2ed5['uri']='https://www.zohoapis.'+_0x27bd30+_0xd1ed('0x50')+_0x47b2aa+'))';return getZohoUser(_0x1e2ed5,_0xd1ed('0x51'))[_0xd1ed('0x2c')](function(_0xa2f036){if(_0xa2f036)return _0xa2f036;if(_0x1e85ff[_0xd1ed('0x46')]!='nothing'){return createEndUser(_0x189aaf,_0x27bd30,_0x111e39,_0x47b2aa,_0x1fa50e,_0x1e85ff);}else{return{};}});});break;case _0xd1ed('0x52'):_0x1e2ed5[_0xd1ed('0x4e')]=_0xd1ed('0x44')+_0x27bd30+_0xd1ed('0x53')+_0x47b2aa+'))';return getZohoUser(_0x1e2ed5,'Contacts')['then'](function(_0x4deade){if(_0x4deade)return _0x4deade;if(_0x1e85ff[_0xd1ed('0x46')]!=_0xd1ed('0x54')){return createEndUser(_0x189aaf,_0x27bd30,_0x111e39,_0x47b2aa,_0x1fa50e,_0x1e85ff);}else{return{};}});break;case _0xd1ed('0x55'):_0x1e2ed5[_0xd1ed('0x4e')]=_0xd1ed('0x44')+_0x27bd30+_0xd1ed('0x50')+_0x47b2aa+'))';return getZohoUser(_0x1e2ed5,_0xd1ed('0x51'))[_0xd1ed('0x2c')](function(_0x50ec7e){if(_0x50ec7e)return _0x50ec7e;if(_0x1e85ff[_0xd1ed('0x46')]!=_0xd1ed('0x54')){return createEndUser(_0x189aaf,_0x27bd30,_0x111e39,_0x47b2aa,_0x1fa50e,_0x1e85ff);}else{return{};}});break;}}function getCall(_0x425ccc,_0x31724d,_0x4579be,_0x4be686,_0x357b24,_0x2e4e31,_0x30b984,_0xf8691a){logger['info'](_0xd1ed('0x56'));var _0x236de0={};_0x236de0[_0xd1ed('0x57')]={'name':!_['isNil'](_0x4be686[_0xd1ed('0x47')][_0xd1ed('0x1a')])&&!_[_0xd1ed('0x1d')](_0x4be686[_0xd1ed('0x3d')][_0xd1ed('0x1a')])&&_0x4be686['profile'][_0xd1ed('0x1a')]===_0xd1ed('0x58')?_0x4be686[_0xd1ed('0x47')][_0xd1ed('0x1a')]:!_[_0xd1ed('0x1d')](_0x4be686[_0xd1ed('0x59')])?_0x4be686[_0xd1ed('0x59')]+'\x20'+_0x4be686['last_name']:_0x4be686['last_name'],'id':_0x4be686['id']};_0x236de0['Subject']=intUtil[_0xd1ed('0x5a')](_0x2e4e31[_0xd1ed('0x5b')],_0x30b984,'\x20');_0x236de0[_0xd1ed('0x5c')]=intUtil[_0xd1ed('0x5a')](_0x2e4e31['Descriptions'],_0x30b984,'\x0a');if(_0x357b24[_0xd1ed('0x43')]===_0xd1ed('0x4f')){_0x236de0[_0xd1ed('0x5d')]={'name':!_[_0xd1ed('0x1d')](_0x357b24['Full_Name'])?_0x357b24[_0xd1ed('0x5e')]:!_[_0xd1ed('0x1d')](_0x357b24[_0xd1ed('0x5f')])?_0x357b24[_0xd1ed('0x5f')]+'\x20'+_0x357b24[_0xd1ed('0x60')]:_0x357b24['Last_Name'],'id':_0x357b24['id']};}if(_0x357b24['enduserType']===_0xd1ed('0x51')){_0x236de0['What_Id']={'name':!_[_0xd1ed('0x1d')](_0x357b24[_0xd1ed('0x5e')])?_0x357b24['Full_Name']:!_[_0xd1ed('0x1d')](_0x357b24[_0xd1ed('0x5f')])?_0x357b24[_0xd1ed('0x5f')]+'\x20'+_0x357b24[_0xd1ed('0x60')]:_0x357b24[_0xd1ed('0x60')],'id':_0x357b24['id']};_0x236de0['$se_module']=_[_0xd1ed('0x45')](_0x357b24[_0xd1ed('0x43')]);}if(_0x30b984[_0xd1ed('0x61')]){_0x236de0[_0xd1ed('0x62')]=moment[_0xd1ed('0x63')](parseInt(_0x30b984[_0xd1ed('0x61')])*0x3e8)[_0xd1ed('0x33')](_0xd1ed('0x64'));}else if(_0x30b984['answertime']&&_0x30b984[_0xd1ed('0x65')]){_0x236de0['Call_Duration']=moment[_0xd1ed('0x63')](moment(_0x30b984[_0xd1ed('0x65')],_0xd1ed('0x66'))['diff'](moment(_0x30b984[_0xd1ed('0x67')],_0xd1ed('0x66'))))['format'](_0xd1ed('0x64'));}switch(_0x30b984[_0xd1ed('0x68')]){case'called':_0x236de0['Call_Result']=_0xd1ed('0x69');break;case _0xd1ed('0x6a'):case _0xd1ed('0x6b'):_0x236de0[_0xd1ed('0x6c')]=_0xd1ed('0x6d');break;case _0xd1ed('0x6e'):_0x236de0['Call_Result']=_0xd1ed('0x6f');break;case _0xd1ed('0x70'):_0x236de0[_0xd1ed('0x6c')]='Abandoned';break;case _0xd1ed('0x71'):_0x236de0['Call_Result']='Timeout';default:}_0x236de0[_0xd1ed('0x72')]=(_0xf8691a===_0xd1ed('0x73')?moment(_0x30b984[_0xd1ed('0x67')])[_0xd1ed('0x33')]('YYYY-MM-DDTHH:mm:ss'):moment(_0x30b984[_0xd1ed('0x74')])[_0xd1ed('0x33')](_0xd1ed('0x66')))||moment()[_0xd1ed('0x33')]('YYYY-MM-DDTHH:mm:ss');_0x236de0[_0xd1ed('0x75')]=_0xf8691a||'Inbound';_0x236de0=_[_0xd1ed('0x76')](_0x236de0,getCustomFields(_0x2e4e31[_0xd1ed('0x77')],_0x30b984));return request({'method':_0xd1ed('0x27'),'uri':_0xd1ed('0x44')+_0x31724d+_0xd1ed('0x78'),'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x425ccc},'body':{'data':[_0x236de0]},'json':!![]})[_0xd1ed('0x2c')](function(_0x11bf72){if(_0x11bf72&&_0x11bf72[_0xd1ed('0x42')][0x0]['code']==='SUCCESS'){logger[_0xd1ed('0x30')](_0xd1ed('0x79'));return{'id':_0x11bf72['data'][0x0][_0xd1ed('0x4a')]['id']};}})[_0xd1ed('0x4b')](function(_0x5e72c4){logger['info'](_0xd1ed('0x7a'),_0x5e72c4['stack']);console[_0xd1ed('0x4c')](_0xd1ed('0x7a'),_0x5e72c4);});}exports[_0xd1ed('0x7b')]=function(_0x34e6bc,_0x2cbe52,_0x5b4800,_0x15e92b,_0x294c5b,_0x1a820f){var _0x332ad9,_0x45f1c8,_0x326536;_0x1a820f[_0xd1ed('0x7c')]=intUtil[_0xd1ed('0x7d')](_0x1a820f['host']);_0x1a820f[_0xd1ed('0x7e')]=intUtil['stripTrailingSlash'](_0x1a820f[_0xd1ed('0x7e')]);if(_0x294c5b&&_0x294c5b[_0xd1ed('0x7f')]){logger[_0xd1ed('0x30')](_0xd1ed('0x80'),_0xd1ed('0x81'));_0x2cbe52['recordingURL']=_0x1a820f[_0xd1ed('0x7e')]+_0xd1ed('0x82')+_0x2cbe52['uniqueid']+_0xd1ed('0x83')+md5(_0x2cbe52['uniqueid']);}else{_0x2cbe52[_0xd1ed('0x84')]='';}var _0x1a8d42=_0x1a820f['host']===_0xd1ed('0x85')?'eu':_0xd1ed('0x86');return getAccessToken(_0x1a820f)[_0xd1ed('0x2c')](function(_0x56ec47){_0x326536=_0x56ec47;return getUser(_0x326536,_0x1a8d42,_0x1a820f,_0x15e92b[_0xd1ed('0x3a')]);})['then'](function(_0x5368d4){_0x332ad9=_0x5368d4;logger[_0xd1ed('0x30')]('The\x20User\x20ID\x20is:',_0x332ad9['id']);return getEndUser(_0x326536,_0x1a8d42,_0x1a820f,_0x2cbe52[_0xd1ed('0x87')],_0x2cbe52[_0xd1ed('0x88')],_0x332ad9,_0x5b4800);})[_0xd1ed('0x2c')](function(_0x4c1850){_0x45f1c8=_0x4c1850;return getCall(_0x326536,_0x1a8d42,_0x1a820f,_0x332ad9,_0x45f1c8,_0x5b4800,_0x2cbe52,_0xd1ed('0x89'));})[_0xd1ed('0x2c')](function(_0x141405){if(_0x141405){logger[_0xd1ed('0x30')](_0xd1ed('0x8a'),_0x141405['id']);logger[_0xd1ed('0x30')](_0xd1ed('0x80'),_0xd1ed('0x8b'));emit(util[_0xd1ed('0x33')](_0xd1ed('0x8c'),_0x15e92b[_0xd1ed('0x1a')]),_0xd1ed('0x8d'),{'uri':_0xd1ed('0x8e')+_0x1a820f[_0xd1ed('0x7c')]+_0xd1ed('0x8f')+_0x141405['id']});}})[_0xd1ed('0x4b')](function(_0x180d31){logger['error'](_0xd1ed('0x80'),JSON[_0xd1ed('0xf')](_0x180d31));});};exports[_0xd1ed('0x73')]=function(_0x2535bb,_0x346422,_0x4abfd0,_0x2a887b,_0x2ba7f5,_0x4173ce,_0x2de7de){var _0x2776f8,_0x199d8d,_0x122eaf;_0x4173ce[_0xd1ed('0x7c')]=intUtil[_0xd1ed('0x7d')](_0x4173ce[_0xd1ed('0x7c')]);_0x4173ce[_0xd1ed('0x7e')]=intUtil[_0xd1ed('0x7d')](_0x4173ce[_0xd1ed('0x7e')]);if(_0x2de7de&&_0x2de7de[_0xd1ed('0x90')]&&_0x2de7de[_0xd1ed('0x90')]!==_0xd1ed('0x91')){logger['info'](_0xd1ed('0x92'),_0xd1ed('0x81'));_0x346422[_0xd1ed('0x84')]=_0x4173ce[_0xd1ed('0x7e')]+_0xd1ed('0x82')+_0x346422[_0xd1ed('0x93')]+_0xd1ed('0x83')+md5(_0x346422[_0xd1ed('0x93')]);}var _0x42b3d5=_0x4173ce[_0xd1ed('0x7c')]===_0xd1ed('0x85')?'eu':_0xd1ed('0x86');return getAccessToken(_0x4173ce)[_0xd1ed('0x2c')](function(_0xa30f59){_0x122eaf=_0xa30f59;return getUser(_0x122eaf,_0x42b3d5,_0x4173ce,_0x2a887b['email']);})[_0xd1ed('0x2c')](function(_0x16e444){_0x2776f8=_0x16e444;logger[_0xd1ed('0x30')]('The\x20User\x20ID\x20is:',_0x2776f8['id']);return getEndUser(_0x122eaf,_0x42b3d5,_0x4173ce,_0x346422['destcalleridname'],_0x346422['destcalleridnum'],_0x2776f8,_0x4abfd0);})['then'](function(_0x57776b){_0x199d8d=_0x57776b;return getCall(_0x122eaf,_0x42b3d5,_0x4173ce,_0x2776f8,_0x199d8d,_0x4abfd0,_0x346422,'Outbound');})['then'](function(_0xef3e10){if(_0xef3e10){logger[_0xd1ed('0x30')]('The\x20Call\x20ID\x20is:',_0xef3e10['id']);logger[_0xd1ed('0x30')](_0xd1ed('0x92'),_0xd1ed('0x8b'));emit(util[_0xd1ed('0x33')]('user:%s',_0x2a887b[_0xd1ed('0x1a')]),_0xd1ed('0x8d'),{'uri':_0xd1ed('0x8e')+_0x4173ce[_0xd1ed('0x7c')]+_0xd1ed('0x8f')+_0xef3e10['id']});}})['catch'](function(_0x6cdc98){logger[_0xd1ed('0x2f')](_0xd1ed('0x92'),JSON[_0xd1ed('0xf')](_0x6cdc98));});};exports[_0xd1ed('0x94')]=function(_0x1aba92,_0x43e818,_0x459114,_0x27e487,_0x3dd5b7,_0x452b88){var _0x410711,_0xb8392b,_0x23c3d8;_0x452b88[_0xd1ed('0x7c')]=intUtil['stripTrailingSlash'](_0x452b88[_0xd1ed('0x7c')]);_0x452b88[_0xd1ed('0x7e')]=intUtil['stripTrailingSlash'](_0x452b88[_0xd1ed('0x7e')]);if(_0x3dd5b7&&_0x3dd5b7[_0xd1ed('0x7f')]){logger[_0xd1ed('0x30')]('['+_0x43e818[_0xd1ed('0x68')][_0xd1ed('0x95')]()+']',_0xd1ed('0x81'));_0x43e818[_0xd1ed('0x84')]=_0x452b88[_0xd1ed('0x7e')]+_0xd1ed('0x82')+_0x43e818['uniqueid']+_0xd1ed('0x83')+md5(_0x43e818['uniqueid']);}else{_0x43e818[_0xd1ed('0x84')]='';}var _0x398ac1=_0x452b88[_0xd1ed('0x7c')]===_0xd1ed('0x85')?'eu':_0xd1ed('0x86');return getAccessToken(_0x452b88)[_0xd1ed('0x2c')](function(_0x1b5121){_0x23c3d8=_0x1b5121;return getUser(_0x23c3d8,_0x398ac1,_0x452b88);})[_0xd1ed('0x2c')](function(_0x1770f0){_0x410711=_0x1770f0;logger['info'](_0xd1ed('0x96'),_0x410711['id']);return getEndUser(_0x23c3d8,_0x398ac1,_0x452b88,_0x43e818[_0xd1ed('0x87')],_0x43e818[_0xd1ed('0x88')],_0x410711,_0x459114);})[_0xd1ed('0x2c')](function(_0x94e7f6){_0xb8392b=_0x94e7f6;return getCall(_0x23c3d8,_0x398ac1,_0x452b88,_0x410711,_0xb8392b,_0x459114,_0x43e818,_0xd1ed('0x89'));})[_0xd1ed('0x2c')](function(_0xfd6383){if(_0xfd6383){logger['info'](_0xd1ed('0x8a'),_0xfd6383['id']);}})['catch'](function(_0x202669){logger[_0xd1ed('0x2f')]('['+_0x43e818[_0xd1ed('0x68')][_0xd1ed('0x95')]()+']',JSON[_0xd1ed('0xf')](_0x202669));});};
\ No newline at end of file
+var _0x3446=['user:%s','trigger:browser:url','https://crm.','/crm/EntityInfo.do?module=Calls&id=','recordingFormat','none','Recording\x20is\x20enabled!','/api/voice/recordings/','destcalleridname','destcalleridnum','Outbound','[OUTBOUND]','unmanaged','toUpperCase','lodash','request-promise','md5','util','./util','moment','ioredis','bluebird','../../../../config/environment','zoho','redis','defaults','localhost','socket.io-emitter','emit','[HTTP]','stringify','length','includes','idField','content','toString','type','variableName','customVariable','Variable','name','toLowerCase','indexOf','split','isNil','access_token','isBefore','expires_in','zone','https://accounts.zoho.com','https://accounts.zoho.eu','https://accounts.zoho.in','POST','/oauth/v2/token','refreshToken','clientId','clientSecret','refresh_token','add','seconds','error','Failing\x20creating\x20the\x20access_token','stack','Search\x20user','GET','format','https://www.zohoapis.%s/crm/v2/users','ActiveUsers','Zoho-oauthtoken\x20','users','isArrayLikeObject','findIndex','email','info','Agent\x20found!','Using\x20the\x20admin\x20account!','profile','Administrator','user','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','then','data','enduserType','catch','https://www.zohoapis.','/crm/v2/','role','first_name','last_name','SUCCESS','details','moduleCreate','Error:\x20','log','moduleSearch','contact_lead','uri','Contacts','Leads','nothing','contact','/crm/v2/Contacts/search?criteria=((Phone:equals:','/crm/v2/Leads/search?criteria=((Phone:equals:','Creating\x20new\x20call...','Subject','getString','Subjects','Descriptions','Full_Name','First_Name','Last_Name','What_Id','startCase','talktime','Call_Duration','utc','mm:ss','answertime','endtime','starttime','YYYY-MM-DDTHH:mm:ss','lastevent','called','Called','complete','connect','Call_Result','Answered','rejected','Rejected','abandoned','Abandoned','Timeout','Call_Start_Time','outbound','Inbound','merge','Fields','/crm/v2/Calls','code','Call\x20created!','err','queue','stripTrailingSlash','host','serverUrl','monitor_format','[QUEUE]','recordingURL','uniqueid','/downloads?type=uniqueid&token=','zoho.eu','com','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Call\x20ID\x20is:','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...'];(function(_0x4bdae6,_0xdf4405){var _0x573030=function(_0x4837d6){while(--_0x4837d6){_0x4bdae6['push'](_0x4bdae6['shift']());}};_0x573030(++_0xdf4405);}(_0x3446,0x14c));var _0x6344=function(_0x27f992,_0x3d369a){_0x27f992=_0x27f992-0x0;var _0x59b30b=_0x3446[_0x27f992];return _0x59b30b;};'use strict';var _=require(_0x6344('0x0'));var rp=require(_0x6344('0x1'));var md5=require(_0x6344('0x2'));var util=require(_0x6344('0x3'));var intUtil=require(_0x6344('0x4'));var moment=require(_0x6344('0x5'));var Redis=require(_0x6344('0x6'));var BPromise=require(_0x6344('0x7'));var config=require(_0x6344('0x8'));var logger=require('../../../../config/logger')(_0x6344('0x9'));config[_0x6344('0xa')]=_[_0x6344('0xb')](config[_0x6344('0xa')],{'host':_0x6344('0xc'),'port':0x18eb});var io=require(_0x6344('0xd'))(new Redis(config[_0x6344('0xa')]));function emit(_0x13cab6,_0x2622b1,_0x36667f){io['to'](_0x13cab6)[_0x6344('0xe')](_0x2622b1,_0x36667f);}function request(_0x831802){logger['debug'](_0x6344('0xf'),JSON[_0x6344('0x10')](_0x831802));return rp(_0x831802);}function getCustomFields(_0x4aa9a9,_0x195ff5){var _0x9087f2={};if(_0x4aa9a9[_0x6344('0x11')]>0x0){_['forEach'](_0x4aa9a9,function(_0x5d846c){if(_[_0x6344('0x12')](['string','picklist'],_0x5d846c['type'])&&_0x5d846c[_0x6344('0x13')]){_0x9087f2[_0x5d846c[_0x6344('0x13')]]=_0x5d846c[_0x6344('0x14')][_0x6344('0x15')]();}else if(_0x5d846c[_0x6344('0x16')]==='variable'&&_0x5d846c[_0x6344('0x17')]&&_0x5d846c['idField']&&_0x195ff5[_0x5d846c[_0x6344('0x17')]]){_0x9087f2[_0x5d846c[_0x6344('0x13')]]=_0x195ff5[_0x5d846c['variableName']][_0x6344('0x15')]();}else if(_0x5d846c['type']===_0x6344('0x18')&&_0x5d846c[_0x6344('0x19')]&&_0x5d846c['Variable'][_0x6344('0x1a')]&&_0x5d846c[_0x6344('0x13')]&&_0x195ff5[_0x5d846c['Variable'][_0x6344('0x1a')][_0x6344('0x1b')]()]){_0x9087f2[_0x5d846c['idField']]=_0x195ff5[_0x5d846c[_0x6344('0x19')][_0x6344('0x1a')][_0x6344('0x1b')]()][_0x6344('0x15')]();}});}return _0x9087f2;}function getName(_0xf4441d){if(_0xf4441d[_0x6344('0x1c')]('\x20')>0x0){var _0x140860=_0xf4441d[_0x6344('0x1d')](/ (.+)/);if(_0x140860[0x1]){return _0x140860;}}return[_0xf4441d,_0xf4441d];}var accountsTokens={};function getAccessToken(_0x2e1e40){return new Promise(function(_0x208432,_0xb42496){if(!_[_0x6344('0x1e')](accountsTokens[_0x2e1e40['id']])&&!_[_0x6344('0x1e')](accountsTokens[_0x2e1e40['id']][_0x6344('0x1f')])){if(moment()[_0x6344('0x20')](accountsTokens[_0x2e1e40['id']][_0x6344('0x21')])){_0x208432(accountsTokens[_0x2e1e40['id']][_0x6344('0x1f')]);}}var _0x54ece2;switch(_0x2e1e40[_0x6344('0x22')]){case'US':_0x54ece2=_0x6344('0x23');break;case'AU':_0x54ece2='https://accounts.zoho.com.au';break;case'EU':_0x54ece2=_0x6344('0x24');break;case'IN':_0x54ece2=_0x6344('0x25');break;case'CN':_0x54ece2='https://accounts.zoho.com.cn';break;default:_0x54ece2=_0x6344('0x24');break;}var _0x3c06d6={'method':_0x6344('0x26'),'uri':_0x54ece2+_0x6344('0x27'),'qs':{'refresh_token':_0x2e1e40[_0x6344('0x28')],'client_id':_0x2e1e40[_0x6344('0x29')],'client_secret':_0x2e1e40[_0x6344('0x2a')],'grant_type':_0x6344('0x2b')},'json':!![]};return rp(_0x3c06d6)['then'](function(_0x333e04){accountsTokens[_0x2e1e40['id']]={'access_token':_0x333e04[_0x6344('0x1f')],'expires_in':moment()[_0x6344('0x2c')](_0x333e04[_0x6344('0x21')],_0x6344('0x2d'))};_0x208432(_0x333e04[_0x6344('0x1f')]);})['catch'](function(_0x24020a){logger[_0x6344('0x2e')](_0x6344('0x2f'),_0x24020a[_0x6344('0x30')]);_0xb42496(_0x24020a);});});}function getUser(_0x12422,_0x129b0f,_0x4ff59a,_0x2663af){logger['info'](_0x6344('0x31'));return request({'method':_0x6344('0x32'),'uri':util[_0x6344('0x33')](_0x6344('0x34'),_0x129b0f),'qs':{'type':_0x6344('0x35')},'headers':{'Authorization':_0x6344('0x36')+_0x12422},'json':!![]})['then'](function(_0x42dd30){if(_0x42dd30[_0x6344('0x37')]){var _0x2c235e=-0x1;if(_[_0x6344('0x38')](_0x42dd30[_0x6344('0x37')])){if(!_[_0x6344('0x1e')](_0x2663af)){_0x2c235e=_[_0x6344('0x39')](_0x42dd30['users'],function(_0x3217a1){return _0x3217a1[_0x6344('0x3a')]===_0x2663af;});}if(_0x2c235e>=0x0){logger[_0x6344('0x3b')](_0x6344('0x3c'));}else{logger[_0x6344('0x3b')](_0x6344('0x3d'));_0x2c235e=_[_0x6344('0x39')](_0x42dd30[_0x6344('0x37')],function(_0x25664d){return _0x25664d[_0x6344('0x3e')][_0x6344('0x1a')]===_0x6344('0x3f');});}return _0x42dd30[_0x6344('0x37')][_0x2c235e];}else{if(_0x42dd30[_0x6344('0x40')][_0x6344('0x3e')][_0x6344('0x1a')]===_0x6344('0x3f')){logger[_0x6344('0x3b')](_0x6344('0x3d'));user=_0x42dd30['user'];return user;}else{logger[_0x6344('0x2e')](_0x6344('0x41'),JSON[_0x6344('0x10')](_0x42dd30));throw new Error(_0x6344('0x42')+JSON['stringify'](_0x42dd30));}}}else{logger[_0x6344('0x2e')](_0x6344('0x41'),JSON[_0x6344('0x10')](_0x42dd30));throw new Error(_0x6344('0x42')+JSON[_0x6344('0x10')](_0x42dd30));}})['catch'](function(_0x3bac85){console[_0x6344('0x2e')](_0x3bac85);});}function getZohoUser(_0x3d3124,_0x93dbc7){return new BPromise(function(_0x4b911a,_0x4d59e9){request(_0x3d3124)[_0x6344('0x43')](function(_0xaed8a0){var _0x44e6ca=null;if(_0xaed8a0){_0x44e6ca=_0xaed8a0[_0x6344('0x44')][0x0];_0x44e6ca[_0x6344('0x45')]=_0x93dbc7;}_0x4b911a(_0x44e6ca);})[_0x6344('0x46')](function(_0x1a82ba){_0x4d59e9(_0x1a82ba);});});}function createEndUser(_0x5f5613,_0x1c2a5b,_0x2050af,_0x30337d,_0x5c7952,_0x5d9d37){var _0x2050af=getName(_0x2050af);return request({'method':_0x6344('0x26'),'uri':_0x6344('0x47')+_0x1c2a5b+_0x6344('0x48')+_['startCase'](_0x5d9d37['moduleCreate'])+'s','body':{'data':[{'Last_Name':_0x2050af[0x1],'First_Name':_0x2050af[0x0],'Phone':_0x30337d,'Owner':{'name':!_['isNil'](_0x5c7952['role']['name'])?_0x5c7952[_0x6344('0x49')][_0x6344('0x1a')]:!_[_0x6344('0x1e')](_0x5c7952[_0x6344('0x4a')])?_0x5c7952['first_name']+'\x20'+_0x5c7952[_0x6344('0x4b')]:_0x5c7952[_0x6344('0x4b')],'id':_0x5c7952['id']}}]},'headers':{'Authorization':_0x6344('0x36')+_0x5f5613},'json':!![]})[_0x6344('0x43')](function(_0x20e686){if(_0x20e686&&_0x20e686[_0x6344('0x44')][0x0]['code']===_0x6344('0x4c')){var _0x44394e=_0x20e686[_0x6344('0x44')][0x0][_0x6344('0x4d')];_0x44394e['enduserType']=_['startCase'](_0x5d9d37[_0x6344('0x4e')])+'s';return _0x44394e;}logger[_0x6344('0x2e')](_0x6344('0x41'),JSON[_0x6344('0x10')](data));throw new Error(_0x6344('0x4f')+JSON[_0x6344('0x10')](data));})['catch'](function(_0x470d2d){console[_0x6344('0x50')]('CREATE\x20ERROR',_0x470d2d);});}function getEndUser(_0x3657b9,_0x3e89a7,_0x151cd2,_0x5cb229,_0x30a86d,_0x3cfd72,_0x512473){var _0x1563e5={'method':_0x6344('0x32'),'uri':'','headers':{'Authorization':_0x6344('0x36')+_0x3657b9},'json':!![]};switch(_0x512473[_0x6344('0x51')]){case _0x6344('0x52'):_0x1563e5[_0x6344('0x53')]=_0x6344('0x47')+_0x3e89a7+'/crm/v2/Contacts/search?criteria=((Phone:equals:'+_0x30a86d+'))';return getZohoUser(_0x1563e5,_0x6344('0x54'))[_0x6344('0x43')](function(_0x4e240b){if(_0x4e240b)return _0x4e240b;_0x1563e5[_0x6344('0x53')]='https://www.zohoapis.'+_0x3e89a7+'/crm/v2/Leads/search?criteria=((Phone:equals:'+_0x30a86d+'))';return getZohoUser(_0x1563e5,_0x6344('0x55'))[_0x6344('0x43')](function(_0x484be4){if(_0x484be4)return _0x484be4;if(_0x512473[_0x6344('0x4e')]!=_0x6344('0x56')){return createEndUser(_0x3657b9,_0x3e89a7,_0x5cb229,_0x30a86d,_0x3cfd72,_0x512473);}else{return{};}});});break;case _0x6344('0x57'):_0x1563e5[_0x6344('0x53')]=_0x6344('0x47')+_0x3e89a7+_0x6344('0x58')+_0x30a86d+'))';return getZohoUser(_0x1563e5,_0x6344('0x54'))['then'](function(_0x84fa2d){if(_0x84fa2d)return _0x84fa2d;if(_0x512473['moduleCreate']!='nothing'){return createEndUser(_0x3657b9,_0x3e89a7,_0x5cb229,_0x30a86d,_0x3cfd72,_0x512473);}else{return{};}});break;case'lead':_0x1563e5['uri']='https://www.zohoapis.'+_0x3e89a7+_0x6344('0x59')+_0x30a86d+'))';return getZohoUser(_0x1563e5,'Leads')[_0x6344('0x43')](function(_0x57d84c){if(_0x57d84c)return _0x57d84c;if(_0x512473[_0x6344('0x4e')]!=_0x6344('0x56')){return createEndUser(_0x3657b9,_0x3e89a7,_0x5cb229,_0x30a86d,_0x3cfd72,_0x512473);}else{return{};}});break;}}function getCall(_0x2f1b86,_0x4bf67b,_0x393f22,_0x47cff1,_0x3da52e,_0x5f0193,_0x3dd5f7,_0x2e4523){logger[_0x6344('0x3b')](_0x6344('0x5a'));var _0x36c633={};_0x36c633['Owner']={'name':!_['isNil'](_0x47cff1[_0x6344('0x49')][_0x6344('0x1a')])&&!_[_0x6344('0x1e')](_0x47cff1[_0x6344('0x3e')][_0x6344('0x1a')])&&_0x47cff1['profile']['name']==='administrator'?_0x47cff1[_0x6344('0x49')]['name']:!_['isNil'](_0x47cff1[_0x6344('0x4a')])?_0x47cff1[_0x6344('0x4a')]+'\x20'+_0x47cff1['last_name']:_0x47cff1[_0x6344('0x4b')],'id':_0x47cff1['id']};_0x36c633[_0x6344('0x5b')]=intUtil[_0x6344('0x5c')](_0x5f0193[_0x6344('0x5d')],_0x3dd5f7,'\x20');_0x36c633['Description']=intUtil[_0x6344('0x5c')](_0x5f0193[_0x6344('0x5e')],_0x3dd5f7,'\x0a');if(_0x3da52e[_0x6344('0x45')]===_0x6344('0x54')){_0x36c633['Who_Id']={'name':!_[_0x6344('0x1e')](_0x3da52e['Full_Name'])?_0x3da52e[_0x6344('0x5f')]:!_[_0x6344('0x1e')](_0x3da52e[_0x6344('0x60')])?_0x3da52e['First_Name']+'\x20'+_0x3da52e[_0x6344('0x61')]:_0x3da52e['Last_Name'],'id':_0x3da52e['id']};}if(_0x3da52e[_0x6344('0x45')]===_0x6344('0x55')){_0x36c633[_0x6344('0x62')]={'name':!_[_0x6344('0x1e')](_0x3da52e['Full_Name'])?_0x3da52e[_0x6344('0x5f')]:!_['isNil'](_0x3da52e[_0x6344('0x60')])?_0x3da52e['First_Name']+'\x20'+_0x3da52e[_0x6344('0x61')]:_0x3da52e[_0x6344('0x61')],'id':_0x3da52e['id']};_0x36c633['$se_module']=_[_0x6344('0x63')](_0x3da52e[_0x6344('0x45')]);}if(_0x3dd5f7[_0x6344('0x64')]){_0x36c633[_0x6344('0x65')]=moment[_0x6344('0x66')](parseInt(_0x3dd5f7[_0x6344('0x64')])*0x3e8)['format'](_0x6344('0x67'));}else if(_0x3dd5f7[_0x6344('0x68')]&&_0x3dd5f7['endtime']){_0x36c633[_0x6344('0x65')]=moment['utc'](moment(_0x3dd5f7[_0x6344('0x69')],'YYYY-MM-DDTHH:mm:ss')['diff'](moment(_0x3dd5f7[_0x6344('0x6a')],_0x6344('0x6b'))))[_0x6344('0x33')](_0x6344('0x67'));}switch(_0x3dd5f7[_0x6344('0x6c')]){case _0x6344('0x6d'):_0x36c633['Call_Result']=_0x6344('0x6e');break;case _0x6344('0x6f'):case _0x6344('0x70'):_0x36c633[_0x6344('0x71')]=_0x6344('0x72');break;case _0x6344('0x73'):_0x36c633['Call_Result']=_0x6344('0x74');break;case _0x6344('0x75'):_0x36c633['Call_Result']=_0x6344('0x76');break;case'timeout':_0x36c633['Call_Result']=_0x6344('0x77');default:}_0x36c633[_0x6344('0x78')]=(_0x2e4523===_0x6344('0x79')?moment(_0x3dd5f7[_0x6344('0x6a')])[_0x6344('0x33')](_0x6344('0x6b')):moment(_0x3dd5f7['agentcalledAt'])[_0x6344('0x33')](_0x6344('0x6b')))||moment()[_0x6344('0x33')](_0x6344('0x6b'));_0x36c633['Call_Type']=_0x2e4523||_0x6344('0x7a');_0x36c633=_[_0x6344('0x7b')](_0x36c633,getCustomFields(_0x5f0193[_0x6344('0x7c')],_0x3dd5f7));return request({'method':'POST','uri':'https://www.zohoapis.'+_0x4bf67b+_0x6344('0x7d'),'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x2f1b86},'body':{'data':[_0x36c633]},'json':!![]})[_0x6344('0x43')](function(_0x41d22d){if(_0x41d22d&&_0x41d22d[_0x6344('0x44')][0x0][_0x6344('0x7e')]==='SUCCESS'){logger[_0x6344('0x3b')](_0x6344('0x7f'));return{'id':_0x41d22d[_0x6344('0x44')][0x0][_0x6344('0x4d')]['id']};}})['catch'](function(_0x32df35){logger[_0x6344('0x3b')](_0x6344('0x80'),_0x32df35[_0x6344('0x30')]);console[_0x6344('0x50')]('err',_0x32df35);});}exports[_0x6344('0x81')]=function(_0x36f6c0,_0xf81e88,_0x5e7c72,_0x11c4aa,_0x192bba,_0x3bc7ee){var _0x1facb0,_0x161a42,_0x505220;_0x3bc7ee['host']=intUtil[_0x6344('0x82')](_0x3bc7ee[_0x6344('0x83')]);_0x3bc7ee[_0x6344('0x84')]=intUtil[_0x6344('0x82')](_0x3bc7ee[_0x6344('0x84')]);if(_0x192bba&&_0x192bba[_0x6344('0x85')]){logger['info'](_0x6344('0x86'),'Recording\x20is\x20enabled!');_0xf81e88[_0x6344('0x87')]=_0x3bc7ee['serverUrl']+'/api/voice/recordings/'+_0xf81e88[_0x6344('0x88')]+_0x6344('0x89')+md5(_0xf81e88[_0x6344('0x88')]);}else{_0xf81e88[_0x6344('0x87')]='';}var _0x3d2817=_0x3bc7ee[_0x6344('0x83')]===_0x6344('0x8a')?'eu':_0x6344('0x8b');return getAccessToken(_0x3bc7ee)[_0x6344('0x43')](function(_0x4eb02f){_0x505220=_0x4eb02f;return getUser(_0x505220,_0x3d2817,_0x3bc7ee,_0x11c4aa[_0x6344('0x3a')]);})['then'](function(_0x59f727){_0x1facb0=_0x59f727;logger[_0x6344('0x3b')](_0x6344('0x8c'),_0x1facb0['id']);return getEndUser(_0x505220,_0x3d2817,_0x3bc7ee,_0xf81e88[_0x6344('0x8d')],_0xf81e88[_0x6344('0x8e')],_0x1facb0,_0x5e7c72);})[_0x6344('0x43')](function(_0xfb8be2){_0x161a42=_0xfb8be2;return getCall(_0x505220,_0x3d2817,_0x3bc7ee,_0x1facb0,_0x161a42,_0x5e7c72,_0xf81e88,_0x6344('0x7a'));})[_0x6344('0x43')](function(_0x4acc6f){if(_0x4acc6f){logger[_0x6344('0x3b')](_0x6344('0x8f'),_0x4acc6f['id']);logger[_0x6344('0x3b')](_0x6344('0x86'),_0x6344('0x90'));emit(util['format'](_0x6344('0x91'),_0x11c4aa[_0x6344('0x1a')]),_0x6344('0x92'),{'uri':_0x6344('0x93')+_0x3bc7ee[_0x6344('0x83')]+_0x6344('0x94')+_0x4acc6f['id']});}})['catch'](function(_0x4334e9){logger[_0x6344('0x2e')](_0x6344('0x86'),JSON[_0x6344('0x10')](_0x4334e9));});};exports[_0x6344('0x79')]=function(_0x518669,_0x38b696,_0x4e4fbc,_0x3709e1,_0xc614fb,_0x30a996,_0x56706e){var _0x1804a7,_0x6531e4,_0x27048c;_0x30a996[_0x6344('0x83')]=intUtil[_0x6344('0x82')](_0x30a996['host']);_0x30a996[_0x6344('0x84')]=intUtil[_0x6344('0x82')](_0x30a996[_0x6344('0x84')]);if(_0x56706e&&_0x56706e['recordingFormat']&&_0x56706e[_0x6344('0x95')]!==_0x6344('0x96')){logger[_0x6344('0x3b')]('[OUTBOUND]',_0x6344('0x97'));_0x38b696[_0x6344('0x87')]=_0x30a996[_0x6344('0x84')]+_0x6344('0x98')+_0x38b696[_0x6344('0x88')]+_0x6344('0x89')+md5(_0x38b696[_0x6344('0x88')]);}var _0x59076d=_0x30a996[_0x6344('0x83')]===_0x6344('0x8a')?'eu':_0x6344('0x8b');return getAccessToken(_0x30a996)[_0x6344('0x43')](function(_0x458c0c){_0x27048c=_0x458c0c;return getUser(_0x27048c,_0x59076d,_0x30a996,_0x3709e1['email']);})[_0x6344('0x43')](function(_0x11b137){_0x1804a7=_0x11b137;logger[_0x6344('0x3b')]('The\x20User\x20ID\x20is:',_0x1804a7['id']);return getEndUser(_0x27048c,_0x59076d,_0x30a996,_0x38b696[_0x6344('0x99')],_0x38b696[_0x6344('0x9a')],_0x1804a7,_0x4e4fbc);})['then'](function(_0x13f167){_0x6531e4=_0x13f167;return getCall(_0x27048c,_0x59076d,_0x30a996,_0x1804a7,_0x6531e4,_0x4e4fbc,_0x38b696,_0x6344('0x9b'));})[_0x6344('0x43')](function(_0x3c3b78){if(_0x3c3b78){logger[_0x6344('0x3b')]('The\x20Call\x20ID\x20is:',_0x3c3b78['id']);logger[_0x6344('0x3b')](_0x6344('0x9c'),_0x6344('0x90'));emit(util['format'](_0x6344('0x91'),_0x3709e1[_0x6344('0x1a')]),_0x6344('0x92'),{'uri':_0x6344('0x93')+_0x30a996[_0x6344('0x83')]+_0x6344('0x94')+_0x3c3b78['id']});}})[_0x6344('0x46')](function(_0x19a926){logger[_0x6344('0x2e')](_0x6344('0x9c'),JSON[_0x6344('0x10')](_0x19a926));});};exports[_0x6344('0x9d')]=function(_0x1b61e7,_0x19e05c,_0x1fff2d,_0xa169d2,_0x39541e,_0x3027e5){var _0x4dee3f,_0x299759,_0x1f5b8d;_0x3027e5['host']=intUtil['stripTrailingSlash'](_0x3027e5[_0x6344('0x83')]);_0x3027e5[_0x6344('0x84')]=intUtil[_0x6344('0x82')](_0x3027e5[_0x6344('0x84')]);if(_0x39541e&&_0x39541e[_0x6344('0x85')]){logger[_0x6344('0x3b')]('['+_0x19e05c['lastevent'][_0x6344('0x9e')]()+']',_0x6344('0x97'));_0x19e05c[_0x6344('0x87')]=_0x3027e5[_0x6344('0x84')]+'/api/voice/recordings/'+_0x19e05c[_0x6344('0x88')]+_0x6344('0x89')+md5(_0x19e05c['uniqueid']);}else{_0x19e05c[_0x6344('0x87')]='';}var _0x501783=_0x3027e5[_0x6344('0x83')]===_0x6344('0x8a')?'eu':_0x6344('0x8b');return getAccessToken(_0x3027e5)['then'](function(_0x46d836){_0x1f5b8d=_0x46d836;return getUser(_0x1f5b8d,_0x501783,_0x3027e5);})[_0x6344('0x43')](function(_0x5bcbdc){_0x4dee3f=_0x5bcbdc;logger[_0x6344('0x3b')]('The\x20User\x20ID\x20is:',_0x4dee3f['id']);return getEndUser(_0x1f5b8d,_0x501783,_0x3027e5,_0x19e05c[_0x6344('0x8d')],_0x19e05c[_0x6344('0x8e')],_0x4dee3f,_0x1fff2d);})['then'](function(_0xb98c2b){_0x299759=_0xb98c2b;return getCall(_0x1f5b8d,_0x501783,_0x3027e5,_0x4dee3f,_0x299759,_0x1fff2d,_0x19e05c,_0x6344('0x7a'));})['then'](function(_0x5ec646){if(_0x5ec646){logger[_0x6344('0x3b')](_0x6344('0x8f'),_0x5ec646['id']);}})[_0x6344('0x46')](function(_0x483960){logger[_0x6344('0x2e')]('['+_0x19e05c[_0x6344('0x6c')][_0x6344('0x9e')]()+']',JSON[_0x6344('0x10')](_0x483960));});};
\ No newline at end of file
index 04bd909..f4b50ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc757=['exec','data2','data3','render','error','format','info','%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s','util','mustache','../../../../config/logger','trigger'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xc757,0xbc));var _0x7c75=function(_0x326b61,_0x372310){_0x326b61=_0x326b61-0x0;var _0x4f4374=_0xc757[_0x326b61];return _0x4f4374;};'use strict';var util=require(_0x7c75('0x0'));var sh=require('shelljs');var Mustache=require(_0x7c75('0x1'));var logger=require(_0x7c75('0x2'))(_0x7c75('0x3'));exports[_0x7c75('0x4')]=function(_0xb781b4,_0x5aabac){var _0x31cc68=_0xb781b4['data2']?_0xb781b4[_0x7c75('0x5')]:'Script';var _0x5c6a1f=_0xb781b4[_0x7c75('0x6')]?Mustache[_0x7c75('0x7')](_0xb781b4['data3'],_0x5aabac):_0x5aabac;sh[_0x7c75('0x4')](_0x5c6a1f,function(_0x4bc868,_0x327f29,_0x4296b9){if(_0x4bc868!==0x0){logger[_0x7c75('0x8')](util[_0x7c75('0x9')]('%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s',_0x31cc68,_0x5c6a1f,_0x4bc868,_0x4296b9));}else{logger[_0x7c75('0xa')](util[_0x7c75('0x9')](_0x7c75('0xb'),_0x31cc68,_0x5c6a1f,_0x327f29));}});};
\ No newline at end of file
+var _0xa7b3=['info','%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s','shelljs','mustache','../../../../config/logger','exec','data2','data3','render','error','format','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s'];(function(_0x35a274,_0x98b399){var _0x40d905=function(_0x5c8455){while(--_0x5c8455){_0x35a274['push'](_0x35a274['shift']());}};_0x40d905(++_0x98b399);}(_0xa7b3,0x86));var _0x3a7b=function(_0x2f4014,_0x2231c5){_0x2f4014=_0x2f4014-0x0;var _0x595241=_0xa7b3[_0x2f4014];return _0x595241;};'use strict';var util=require('util');var sh=require(_0x3a7b('0x0'));var Mustache=require(_0x3a7b('0x1'));var logger=require(_0x3a7b('0x2'))('trigger');exports[_0x3a7b('0x3')]=function(_0x5e2a3c,_0x5e82b9){var _0x2167ec=_0x5e2a3c[_0x3a7b('0x4')]?_0x5e2a3c[_0x3a7b('0x4')]:'Script';var _0x14979e=_0x5e2a3c[_0x3a7b('0x5')]?Mustache[_0x3a7b('0x6')](_0x5e2a3c[_0x3a7b('0x5')],_0x5e82b9):_0x5e82b9;sh[_0x3a7b('0x3')](_0x14979e,function(_0x239957,_0x162ae6,_0x12eb32){if(_0x239957!==0x0){logger[_0x3a7b('0x7')](util[_0x3a7b('0x8')](_0x3a7b('0x9'),_0x2167ec,_0x14979e,_0x239957,_0x12eb32));}else{logger[_0x3a7b('0xa')](util[_0x3a7b('0x8')](_0x3a7b('0xb'),_0x2167ec,_0x14979e,_0x162ae6));}});};
\ No newline at end of file
index 6701c34..e7d1375 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb139=['data5','number','headers','data6','parse','render','error','GET','DELETE','POST','PUT','data7','body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format','body','format','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','stringify','then',',\x20request\x20body:\x20','object','info','catch','statusCode','name','message','request-promise','util','mustache','trigger','data1','toUpperCase','data2'];(function(_0x3f661c,_0x294423){var _0x16cb8e=function(_0x984742){while(--_0x984742){_0x3f661c['push'](_0x3f661c['shift']());}};_0x16cb8e(++_0x294423);}(_0xb139,0x159));var _0x9b13=function(_0x575b4c,_0x3f1d33){_0x575b4c=_0x575b4c-0x0;var _0x169ce9=_0xb139[_0x575b4c];return _0x169ce9;};'use strict';var rp=require(_0x9b13('0x0'));var util=require(_0x9b13('0x1'));var _=require('lodash');var Mustache=require(_0x9b13('0x2'));var logger=require('../../../../config/logger')(_0x9b13('0x3'));exports['exec']=function(_0x22557f,_0x46ae0a){var _0x448ee9,_0x5be22a;var _0x519bfa={'method':_0x22557f[_0x9b13('0x4')][_0x9b13('0x5')](),'uri':Mustache['render'](_0x22557f[_0x9b13('0x6')],_0x46ae0a),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x22557f[_0x9b13('0x7')])===_0x9b13('0x8')&&parseInt(_0x22557f[_0x9b13('0x7')])>=0x1&&parseInt(_0x22557f[_0x9b13('0x7')])<=0xa?parseInt(_0x22557f[_0x9b13('0x7')])*0x3e8:0x5*0x3e8};try{_0x519bfa[_0x9b13('0x9')]=_0x22557f[_0x9b13('0xa')]?JSON[_0x9b13('0xb')](Mustache[_0x9b13('0xc')](_0x22557f[_0x9b13('0xa')],_0x46ae0a)):{};}catch(_0x15fbd1){logger[_0x9b13('0xd')](_0x15fbd1['stack']);}switch(_0x22557f[_0x9b13('0x4')][_0x9b13('0x5')]()){case _0x9b13('0xe'):case _0x9b13('0xf'):_0x448ee9=null;_0x519bfa['qs']=_0x46ae0a;break;case _0x9b13('0x10'):case _0x9b13('0x11'):if(_0x22557f[_0x9b13('0x12')]){try{_0x448ee9=JSON[_0x9b13('0xb')](Mustache['render'](_0x22557f[_0x9b13('0x12')],_0x46ae0a));_0x519bfa['body']=_0x448ee9;}catch(_0x5b1c89){logger[_0x9b13('0xd')](_0x5b1c89['stack']);logger['error'](_0x9b13('0x13'));}}else{_0x448ee9=_0x46ae0a;_0x519bfa[_0x9b13('0x14')]=_0x448ee9;}break;}logger['info'](util[_0x9b13('0x15')](_0x9b13('0x16'),_0x22557f[_0x9b13('0x4')],_0x22557f[_0x9b13('0x6')],JSON[_0x9b13('0x17')](_0x519bfa)));rp(_0x519bfa)[_0x9b13('0x18')](function(_0x4809ff){_0x448ee9=!_['isNil'](_0x448ee9)?_0x9b13('0x19')+_0x448ee9:'';_0x5be22a=typeof _0x4809ff[_0x9b13('0x14')]===_0x9b13('0x1a')?JSON[_0x9b13('0x17')](_0x4809ff[_0x9b13('0x14')]):_0x4809ff['body'];logger[_0x9b13('0x1b')](util[_0x9b13('0x15')]('%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s',_0x22557f[_0x9b13('0x4')],_0x22557f[_0x9b13('0x6')],_0x4809ff['statusCode'],_0x5be22a));})[_0x9b13('0x1c')](function(_0x106fd1){logger[_0x9b13('0xd')](util[_0x9b13('0x15')]('%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s',_0x22557f['data1'],_0x22557f[_0x9b13('0x6')],_0x106fd1[_0x9b13('0x1d')],_0x106fd1[_0x9b13('0x1e')],_0x106fd1[_0x9b13('0x1f')]));});};
\ No newline at end of file
+var _0xa3fb=['data6','error','DELETE','POST','PUT','data7','body','body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format','info','format','then','isNil',',\x20request\x20body:\x20','object','stringify','%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s','statusCode','catch','%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s','name','message','request-promise','util','lodash','mustache','../../../../config/logger','exec','data1','toUpperCase','data2','data5','number','headers','parse','render'];(function(_0x3eb0a6,_0x12b35d){var _0x1c58f2=function(_0x4917ec){while(--_0x4917ec){_0x3eb0a6['push'](_0x3eb0a6['shift']());}};_0x1c58f2(++_0x12b35d);}(_0xa3fb,0x1b9));var _0xba3f=function(_0x5d14ad,_0x2d17b9){_0x5d14ad=_0x5d14ad-0x0;var _0x5cb422=_0xa3fb[_0x5d14ad];return _0x5cb422;};'use strict';var rp=require(_0xba3f('0x0'));var util=require(_0xba3f('0x1'));var _=require(_0xba3f('0x2'));var Mustache=require(_0xba3f('0x3'));var logger=require(_0xba3f('0x4'))('trigger');exports[_0xba3f('0x5')]=function(_0x427b1e,_0x4c49b3){var _0x36f3ab,_0x24620d;var _0x521d4d={'method':_0x427b1e[_0xba3f('0x6')][_0xba3f('0x7')](),'uri':Mustache['render'](_0x427b1e[_0xba3f('0x8')],_0x4c49b3),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x427b1e[_0xba3f('0x9')])===_0xba3f('0xa')&&parseInt(_0x427b1e[_0xba3f('0x9')])>=0x1&&parseInt(_0x427b1e[_0xba3f('0x9')])<=0xa?parseInt(_0x427b1e[_0xba3f('0x9')])*0x3e8:0x5*0x3e8};try{_0x521d4d[_0xba3f('0xb')]=_0x427b1e['data6']?JSON[_0xba3f('0xc')](Mustache[_0xba3f('0xd')](_0x427b1e[_0xba3f('0xe')],_0x4c49b3)):{};}catch(_0x2f07b5){logger[_0xba3f('0xf')](_0x2f07b5['stack']);}switch(_0x427b1e[_0xba3f('0x6')][_0xba3f('0x7')]()){case'GET':case _0xba3f('0x10'):_0x36f3ab=null;_0x521d4d['qs']=_0x4c49b3;break;case _0xba3f('0x11'):case _0xba3f('0x12'):if(_0x427b1e[_0xba3f('0x13')]){try{_0x36f3ab=JSON[_0xba3f('0xc')](Mustache[_0xba3f('0xd')](_0x427b1e[_0xba3f('0x13')],_0x4c49b3));_0x521d4d[_0xba3f('0x14')]=_0x36f3ab;}catch(_0x3056f8){logger['error'](_0x3056f8['stack']);logger[_0xba3f('0xf')](_0xba3f('0x15'));}}else{_0x36f3ab=_0x4c49b3;_0x521d4d[_0xba3f('0x14')]=_0x36f3ab;}break;}logger[_0xba3f('0x16')](util[_0xba3f('0x17')]('%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s',_0x427b1e[_0xba3f('0x6')],_0x427b1e[_0xba3f('0x8')],JSON['stringify'](_0x521d4d)));rp(_0x521d4d)[_0xba3f('0x18')](function(_0x2c06f7){_0x36f3ab=!_[_0xba3f('0x19')](_0x36f3ab)?_0xba3f('0x1a')+_0x36f3ab:'';_0x24620d=typeof _0x2c06f7['body']===_0xba3f('0x1b')?JSON[_0xba3f('0x1c')](_0x2c06f7[_0xba3f('0x14')]):_0x2c06f7[_0xba3f('0x14')];logger[_0xba3f('0x16')](util[_0xba3f('0x17')](_0xba3f('0x1d'),_0x427b1e[_0xba3f('0x6')],_0x427b1e['data2'],_0x2c06f7[_0xba3f('0x1e')],_0x24620d));})[_0xba3f('0x1f')](function(_0x3b6c3a){logger[_0xba3f('0xf')](util[_0xba3f('0x17')](_0xba3f('0x20'),_0x427b1e[_0xba3f('0x6')],_0x427b1e[_0xba3f('0x8')],_0x3b6c3a[_0xba3f('0x1e')],_0x3b6c3a[_0xba3f('0x21')],_0x3b6c3a[_0xba3f('0x22')]));});};
\ No newline at end of file
index 3351275..e2f4338 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdad7=['error','message','catch','exports','bluebird','../../config/logger','http','Request','then','rpc','routing'];(function(_0x1c0b34,_0x425ab7){var _0x148223=function(_0x5092fa){while(--_0x5092fa){_0x1c0b34['push'](_0x1c0b34['shift']());}};_0x148223(++_0x425ab7);}(_0xdad7,0x1e8));var _0x7dad=function(_0x3054be,_0x1bdc8b){_0x3054be=_0x3054be-0x0;var _0x3df150=_0xdad7[_0x3054be];return _0x3df150;};'use strict';var jayson=require('jayson/promise');var BPromise=require(_0x7dad('0x0'));var logger=require(_0x7dad('0x1'))('routing');var client=jayson['client'][_0x7dad('0x2')]({'port':0x2329});client[_0x7dad('0x3')]=function(_0x4fc859,_0x430da3){return new BPromise(function(_0x46b246,_0x645292){return client['request'](_0x4fc859,_0x430da3)[_0x7dad('0x4')](function(_0x42ee8f){logger['debug'](_0x7dad('0x5'),_0x7dad('0x6'),_0x4fc859,_0x430da3,_0x42ee8f);if(_0x42ee8f['error']){logger[_0x7dad('0x7')](_0x7dad('0x5'),'routing',_0x4fc859,_0x42ee8f[_0x7dad('0x7')][_0x7dad('0x8')],_0x430da3);return _0x645292(_0x42ee8f[_0x7dad('0x7')][_0x7dad('0x8')]);}else{return _0x46b246(_0x42ee8f['result']);}})[_0x7dad('0x9')](function(_0x24a449){logger[_0x7dad('0x7')]('rpc',_0x7dad('0x6'),_0x4fc859,_0x24a449,_0x430da3);return _0x645292(_0x24a449);});});};module[_0x7dad('0xa')]=client;
\ No newline at end of file
+var _0xd281=['routing','Request','request','debug','rpc','error','message','result','catch','exports','jayson/promise','bluebird','../../config/logger'];(function(_0x30a4da,_0x487dad){var _0x22b4ef=function(_0x1559ae){while(--_0x1559ae){_0x30a4da['push'](_0x30a4da['shift']());}};_0x22b4ef(++_0x487dad);}(_0xd281,0x101));var _0x1d28=function(_0x448056,_0x1e5d41){_0x448056=_0x448056-0x0;var _0x2471f6=_0xd281[_0x448056];return _0x2471f6;};'use strict';var jayson=require(_0x1d28('0x0'));var BPromise=require(_0x1d28('0x1'));var logger=require(_0x1d28('0x2'))(_0x1d28('0x3'));var client=jayson['client']['http']({'port':0x2329});client[_0x1d28('0x4')]=function(_0x1f922d,_0x52b0c4){return new BPromise(function(_0x1404f4,_0x58992c){return client[_0x1d28('0x5')](_0x1f922d,_0x52b0c4)['then'](function(_0x2be055){logger[_0x1d28('0x6')](_0x1d28('0x7'),_0x1d28('0x3'),_0x1f922d,_0x52b0c4,_0x2be055);if(_0x2be055['error']){logger[_0x1d28('0x8')](_0x1d28('0x7'),'routing',_0x1f922d,_0x2be055[_0x1d28('0x8')][_0x1d28('0x9')],_0x52b0c4);return _0x58992c(_0x2be055[_0x1d28('0x8')][_0x1d28('0x9')]);}else{return _0x1404f4(_0x2be055[_0x1d28('0xa')]);}})[_0x1d28('0xb')](function(_0x5e2b98){logger[_0x1d28('0x8')](_0x1d28('0x7'),_0x1d28('0x3'),_0x1f922d,_0x5e2b98,_0x52b0c4);return _0x58992c(_0x5e2b98);});});};module[_0x1d28('0xc')]=client;
\ No newline at end of file
index 8bab5f7..ca57aeb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9f2=['getMailAccounts','initMailAccounts','refresh','mailAccounts','listen','catch','error','Email\x20service\x20initialization','./server','./realtime','./lib/email','./rpc/mailAccount','./rpc/setting','../../config/logger','email','resolve','then'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xc9f2,0x107));var _0x2c9f=function(_0x7b4e87,_0x4e97dd){_0x7b4e87=_0x7b4e87-0x0;var _0x2309c7=_0xc9f2[_0x7b4e87];return _0x2309c7;};'use strict';var server=require(_0x2c9f('0x0'));var Realtime=require(_0x2c9f('0x1'));var EmailChannel=require(_0x2c9f('0x2'));var mailAccount=require(_0x2c9f('0x3'));var setting=require(_0x2c9f('0x4'));var logger=require(_0x2c9f('0x5'))(_0x2c9f('0x6'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return Promise[_0x2c9f('0x7')]()[_0x2c9f('0x8')](mailAccount[_0x2c9f('0x9')]())[_0x2c9f('0x8')](realtime[_0x2c9f('0xa')]())['then'](function(){email[_0x2c9f('0xb')](realtime[_0x2c9f('0xc')]);return realtime;});}function main(){return server[_0x2c9f('0xd')](realtime,email)[_0x2c9f('0x8')](function(){return initRealtime();})[_0x2c9f('0x8')](function(){return setting['getSettings']();})[_0x2c9f('0x8')](function(_0x610fc7){return setInterval(initRealtime,_0x610fc7['loginMailFrequency']*0x3e8);})[_0x2c9f('0xe')](function(_0x2a213e){logger[_0x2c9f('0xf')](_0x2c9f('0x10'),_0x2a213e);});}main();
\ No newline at end of file
+var _0xa68c=['getSettings','loginMailFrequency','catch','error','Email\x20service\x20initialization','./server','./realtime','./rpc/setting','../../config/logger','email','resolve','then','initMailAccounts','refresh','mailAccounts','listen'];(function(_0x3af309,_0x33300f){var _0x25890f=function(_0x28f18e){while(--_0x28f18e){_0x3af309['push'](_0x3af309['shift']());}};_0x25890f(++_0x33300f);}(_0xa68c,0x75));var _0xca68=function(_0x5c351c,_0x2046d8){_0x5c351c=_0x5c351c-0x0;var _0x26f3b3=_0xa68c[_0x5c351c];return _0x26f3b3;};'use strict';var server=require(_0xca68('0x0'));var Realtime=require(_0xca68('0x1'));var EmailChannel=require('./lib/email');var mailAccount=require('./rpc/mailAccount');var setting=require(_0xca68('0x2'));var logger=require(_0xca68('0x3'))(_0xca68('0x4'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return Promise[_0xca68('0x5')]()[_0xca68('0x6')](mailAccount['getMailAccounts']())['then'](realtime[_0xca68('0x7')]())[_0xca68('0x6')](function(){email[_0xca68('0x8')](realtime[_0xca68('0x9')]);return realtime;});}function main(){return server[_0xca68('0xa')](realtime,email)[_0xca68('0x6')](function(){return initRealtime();})[_0xca68('0x6')](function(){return setting[_0xca68('0xb')]();})[_0xca68('0x6')](function(_0x23ad49){return setInterval(initRealtime,_0x23ad49[_0xca68('0xc')]*0x3e8);})[_0xca68('0xd')](function(_0x3e65ad){logger[_0xca68('0xe')](_0xca68('0xf'),_0x3e65ad);});}main();
\ No newline at end of file
index 19333d1..55d5108 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x413b=['verified','exports','bluebird','md5','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','./imap','../rpc/mailAccount','start\x20email\x20channel','mailAccounts','emit','name','status','Imap','total','mailAccount:update','prototype','custom','provider','imapAccounts','email','handleImapBox','handleImapEmail','bind','end','handleImapEnd','error','handleImapError','disabled','messageStatus','messages','info','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','lastName','from','catch','Mail\x20not\x20accepted\x20from\x20routing\x20%s','stringify','lastSync','sendMail','smtp','send','isNil','Smtp','verify','then'];(function(_0x3d42d8,_0x4cffaa){var _0x27fc41=function(_0x3a363b){while(--_0x3a363b){_0x3d42d8['push'](_0x3d42d8['shift']());}};_0x27fc41(++_0x4cffaa);}(_0x413b,0xc6));var _0xb413=function(_0xc41365,_0x35d774){_0xc41365=_0xc41365-0x0;var _0x388102=_0x413b[_0xc41365];return _0x388102;};'use strict';var _=require('lodash');var moment=require('moment');var BPromise=require(_0xb413('0x0'));var md5=require(_0xb413('0x1'));var Redis=require(_0xb413('0x2'));var config=require(_0xb413('0x3'));var logger=require('../../../config/logger')('email');config[_0xb413('0x4')]=_[_0xb413('0x5')](config[_0xb413('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0xb413('0x6'))(new Redis(config[_0xb413('0x4')]));var EmailImap=require(_0xb413('0x7'));var EmailSmtp=require('./smtp');var mailAccount=require(_0xb413('0x8'));var md5Accounts={};function EmailChannel(_0x314f86){logger['info'](_0xb413('0x9'));this[_0xb413('0xa')]=_0x314f86['mailAccounts'];this['imapAccounts']={};this['smtp']=new EmailSmtp();}EmailChannel['prototype'][_0xb413('0xb')]=function(_0x53ce02){var _0x5656eb=this[_0xb413('0xa')][_0x53ce02];var _0x4f33fa={'id':_0x5656eb['id'],'name':_0x5656eb[_0xb413('0xc')],'key':_0x5656eb['key'],'active':_0x5656eb['active'],'Imap':{'status':_0x5656eb['Imap'][_0xb413('0xd')],'messageStatus':_0x5656eb[_0xb413('0xe')]['messageStatus'],'total':_0x5656eb[_0xb413('0xe')][_0xb413('0xf')]}};if(_['isNil'](md5Accounts[_0x53ce02])){md5Accounts[_0x53ce02]={};}var _0x52f84b=md5(JSON['stringify'](_0x4f33fa));if(md5Accounts[_0x53ce02][_0xb413('0x1')]!==_0x52f84b){md5Accounts[_0x53ce02][_0xb413('0x1')]=_0x52f84b;io[_0xb413('0xb')](_0xb413('0x10'),_0x4f33fa);}};EmailChannel[_0xb413('0x11')]['refresh']=function(_0x56d19e){for(var _0x3aa579 in _0x56d19e){if(_0x56d19e['hasOwnProperty'](_0x3aa579)){if(_0x56d19e[_0x3aa579][_0xb413('0xe')]&&_0x56d19e[_0x3aa579]['active']){var _0xbad5b3=_0x56d19e[_0x3aa579][_0xb413('0xe')];if(!_0xbad5b3['service']&&_0x56d19e[_0x3aa579]['provider']!==_0xb413('0x12'))_0xbad5b3['service']=_0x56d19e[_0x3aa579][_0xb413('0x13')];if(!this[_0xb413('0x14')]['hasOwnProperty'](_0xbad5b3['id'])){this[_0xb413('0x14')][_0xbad5b3['id']]=new EmailImap(_0xbad5b3,_0x56d19e[_0x3aa579][_0xb413('0x15')]);this[_0xb413('0x14')][_0xbad5b3['id']]['on']('box',this[_0xb413('0x16')]['bind'](this,_0x3aa579));this[_0xb413('0x14')][_0xbad5b3['id']]['on'](_0xb413('0x15'),this[_0xb413('0x17')][_0xb413('0x18')](this,_0x3aa579));this['imapAccounts'][_0xbad5b3['id']]['on'](_0xb413('0x19'),this[_0xb413('0x1a')][_0xb413('0x18')](this,_0x3aa579));this['imapAccounts'][_0xbad5b3['id']]['on'](_0xb413('0x1b'),this[_0xb413('0x1c')][_0xb413('0x18')](this,_0x3aa579));}}else{if(_['isNil'](this['mailAccounts'][_0x3aa579][_0xb413('0xe')])){this[_0xb413('0xa')][_0x3aa579][_0xb413('0xe')]={};}this[_0xb413('0xa')][_0x3aa579]['Imap'][_0xb413('0xd')]=_0xb413('0x1d');this[_0xb413('0xa')][_0x3aa579]['Imap'][_0xb413('0x1e')]='';this[_0xb413('0xb')](_0x3aa579);}}}};EmailChannel[_0xb413('0x11')]['handleImapBox']=function(_0x37c10b,_0xd35453){if(this['mailAccounts'][_0x37c10b]){this[_0xb413('0xa')][_0x37c10b][_0xb413('0xe')]['status']='connected';this[_0xb413('0xa')][_0x37c10b][_0xb413('0xe')]['messageStatus']=_0xd35453[_0xb413('0xc')];if(_0xd35453['messages']){this[_0xb413('0xa')][_0x37c10b][_0xb413('0xe')]['total']=_0xd35453[_0xb413('0x1f')][_0xb413('0xf')];}return this[_0xb413('0xb')](_0x37c10b);}};EmailChannel[_0xb413('0x11')][_0xb413('0x17')]=function(_0x555a02,_0x58e3a4){logger[_0xb413('0x20')](_0xb413('0x21'),_0x58e3a4['firstName'],_0x58e3a4[_0xb413('0x22')],_0x58e3a4[_0xb413('0x23')],_0x555a02);if(this[_0xb413('0xa')][_0x555a02]){return mailAccount['notify'](_0x555a02,_0x58e3a4)['then'](function(_0x51947c){if(_0x51947c){logger[_0xb413('0x20')]('Mail\x20accepted\x20from\x20routing');}})[_0xb413('0x24')](function(_0x35e145){logger['error'](_0xb413('0x25'),JSON[_0xb413('0x26')](_0x35e145));});}};EmailChannel[_0xb413('0x11')][_0xb413('0x1a')]=function(_0x5363c7){if(this[_0xb413('0xa')][_0x5363c7]&&this['mailAccounts'][_0x5363c7][_0xb413('0xe')]){if(this[_0xb413('0x14')][this[_0xb413('0xa')][_0x5363c7][_0xb413('0xe')]['id']]){delete this[_0xb413('0x14')][this[_0xb413('0xa')][_0x5363c7]['Imap']['id']];}this[_0xb413('0xa')][_0x5363c7][_0xb413('0xe')][_0xb413('0x27')]=moment();this[_0xb413('0xb')](_0x5363c7);}};EmailChannel['prototype'][_0xb413('0x1c')]=function(_0x55e15a,_0x1bd05f){if(this[_0xb413('0xa')][_0x55e15a]){this[_0xb413('0xa')][_0x55e15a][_0xb413('0xe')][_0xb413('0xd')]=_0xb413('0x1b');this[_0xb413('0xa')][_0x55e15a][_0xb413('0xe')][_0xb413('0x1e')]=_0x1bd05f;return this[_0xb413('0xb')](_0x55e15a);}};EmailChannel[_0xb413('0x11')][_0xb413('0x28')]=function(_0x15f191,_0x57d460){return this[_0xb413('0x29')][_0xb413('0x2a')](_0x15f191,_0x57d460);};EmailChannel[_0xb413('0x11')]['verifySmtp']=function(_0x231189){var _0xa3dd62=this;if(this[_0xb413('0xa')][_0x231189['id']]){if(_[_0xb413('0x2b')](this[_0xb413('0xa')][_0x231189['id']]['Smtp'])){this['mailAccounts'][_0x231189['id']][_0xb413('0x2c')]={};}this[_0xb413('0xa')][_0x231189['id']]['Smtp']['lastSync']=moment();return new BPromise(function(_0x1bc8fe,_0x44fd41){return _0xa3dd62['smtp'][_0xb413('0x2d')](_0x231189)[_0xb413('0x2e')](function(_0x3804e8){_0xa3dd62[_0xb413('0xa')][_0x231189['id']][_0xb413('0x2c')][_0xb413('0xd')]=_0xb413('0x2f');_0xa3dd62[_0xb413('0xa')][_0x231189['id']][_0xb413('0x2c')][_0xb413('0x1e')]='';_0xa3dd62['emit'](_0x231189['id']);_0x1bc8fe(_0x3804e8);})['catch'](function(_0x5a2eb8){_0xa3dd62[_0xb413('0xa')][_0x231189['id']][_0xb413('0x2c')][_0xb413('0xd')]='error';_0xa3dd62['mailAccounts'][_0x231189['id']][_0xb413('0x2c')][_0xb413('0x1e')]=_0x5a2eb8;_0xa3dd62[_0xb413('0xb')](_0x231189['id']);_0x44fd41(_0x5a2eb8);});});}return this[_0xb413('0x29')]['verify'](_0x231189);};module[_0xb413('0x30')]=EmailChannel;
\ No newline at end of file
+var _0x2cd4=['bind','handleImapEmail','end','handleImapEnd','handleImapError','disabled','emit','connected','messages','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','lastName','from','then','catch','error','Mail\x20not\x20accepted\x20from\x20routing\x20%s','lastSync','sendMail','smtp','send','verifySmtp','verify','verified','Smtp','lodash','moment','bluebird','ioredis','../../../config/environment','../../../config/logger','email','redis','defaults','socket.io-emitter','./imap','./smtp','info','start\x20email\x20channel','mailAccounts','imapAccounts','prototype','name','Imap','status','messageStatus','total','isNil','stringify','md5','mailAccount:update','refresh','active','service','custom','provider','box','handleImapBox'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x2cd4,0x1e0));var _0x42cd=function(_0x58e469,_0x95ee3e){_0x58e469=_0x58e469-0x0;var _0x4c01c5=_0x2cd4[_0x58e469];return _0x4c01c5;};'use strict';var _=require(_0x42cd('0x0'));var moment=require(_0x42cd('0x1'));var BPromise=require(_0x42cd('0x2'));var md5=require('md5');var Redis=require(_0x42cd('0x3'));var config=require(_0x42cd('0x4'));var logger=require(_0x42cd('0x5'))(_0x42cd('0x6'));config[_0x42cd('0x7')]=_[_0x42cd('0x8')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x42cd('0x9'))(new Redis(config[_0x42cd('0x7')]));var EmailImap=require(_0x42cd('0xa'));var EmailSmtp=require(_0x42cd('0xb'));var mailAccount=require('../rpc/mailAccount');var md5Accounts={};function EmailChannel(_0x66e9cb){logger[_0x42cd('0xc')](_0x42cd('0xd'));this[_0x42cd('0xe')]=_0x66e9cb[_0x42cd('0xe')];this[_0x42cd('0xf')]={};this['smtp']=new EmailSmtp();}EmailChannel[_0x42cd('0x10')]['emit']=function(_0x562662){var _0x53020b=this[_0x42cd('0xe')][_0x562662];var _0x34d9a7={'id':_0x53020b['id'],'name':_0x53020b[_0x42cd('0x11')],'key':_0x53020b['key'],'active':_0x53020b['active'],'Imap':{'status':_0x53020b[_0x42cd('0x12')][_0x42cd('0x13')],'messageStatus':_0x53020b['Imap'][_0x42cd('0x14')],'total':_0x53020b[_0x42cd('0x12')][_0x42cd('0x15')]}};if(_[_0x42cd('0x16')](md5Accounts[_0x562662])){md5Accounts[_0x562662]={};}var _0x57d566=md5(JSON[_0x42cd('0x17')](_0x34d9a7));if(md5Accounts[_0x562662][_0x42cd('0x18')]!==_0x57d566){md5Accounts[_0x562662]['md5']=_0x57d566;io['emit'](_0x42cd('0x19'),_0x34d9a7);}};EmailChannel['prototype'][_0x42cd('0x1a')]=function(_0x20c746){for(var _0x3231e4 in _0x20c746){if(_0x20c746['hasOwnProperty'](_0x3231e4)){if(_0x20c746[_0x3231e4][_0x42cd('0x12')]&&_0x20c746[_0x3231e4][_0x42cd('0x1b')]){var _0x44af33=_0x20c746[_0x3231e4][_0x42cd('0x12')];if(!_0x44af33[_0x42cd('0x1c')]&&_0x20c746[_0x3231e4]['provider']!==_0x42cd('0x1d'))_0x44af33['service']=_0x20c746[_0x3231e4][_0x42cd('0x1e')];if(!this[_0x42cd('0xf')]['hasOwnProperty'](_0x44af33['id'])){this[_0x42cd('0xf')][_0x44af33['id']]=new EmailImap(_0x44af33,_0x20c746[_0x3231e4][_0x42cd('0x6')]);this['imapAccounts'][_0x44af33['id']]['on'](_0x42cd('0x1f'),this[_0x42cd('0x20')][_0x42cd('0x21')](this,_0x3231e4));this['imapAccounts'][_0x44af33['id']]['on']('email',this[_0x42cd('0x22')][_0x42cd('0x21')](this,_0x3231e4));this['imapAccounts'][_0x44af33['id']]['on'](_0x42cd('0x23'),this[_0x42cd('0x24')]['bind'](this,_0x3231e4));this['imapAccounts'][_0x44af33['id']]['on']('error',this[_0x42cd('0x25')][_0x42cd('0x21')](this,_0x3231e4));}}else{if(_[_0x42cd('0x16')](this[_0x42cd('0xe')][_0x3231e4][_0x42cd('0x12')])){this[_0x42cd('0xe')][_0x3231e4][_0x42cd('0x12')]={};}this[_0x42cd('0xe')][_0x3231e4][_0x42cd('0x12')][_0x42cd('0x13')]=_0x42cd('0x26');this[_0x42cd('0xe')][_0x3231e4][_0x42cd('0x12')][_0x42cd('0x14')]='';this[_0x42cd('0x27')](_0x3231e4);}}}};EmailChannel[_0x42cd('0x10')][_0x42cd('0x20')]=function(_0x189193,_0x3e42ec){if(this['mailAccounts'][_0x189193]){this[_0x42cd('0xe')][_0x189193][_0x42cd('0x12')]['status']=_0x42cd('0x28');this['mailAccounts'][_0x189193][_0x42cd('0x12')][_0x42cd('0x14')]=_0x3e42ec[_0x42cd('0x11')];if(_0x3e42ec[_0x42cd('0x29')]){this[_0x42cd('0xe')][_0x189193][_0x42cd('0x12')][_0x42cd('0x15')]=_0x3e42ec[_0x42cd('0x29')][_0x42cd('0x15')];}return this[_0x42cd('0x27')](_0x189193);}};EmailChannel['prototype']['handleImapEmail']=function(_0x2f737b,_0x53e0f8){logger['info'](_0x42cd('0x2a'),_0x53e0f8['firstName'],_0x53e0f8[_0x42cd('0x2b')],_0x53e0f8[_0x42cd('0x2c')],_0x2f737b);if(this[_0x42cd('0xe')][_0x2f737b]){return mailAccount['notify'](_0x2f737b,_0x53e0f8)[_0x42cd('0x2d')](function(_0x506fa8){if(_0x506fa8){logger[_0x42cd('0xc')]('Mail\x20accepted\x20from\x20routing');}})[_0x42cd('0x2e')](function(_0x2d4278){logger[_0x42cd('0x2f')](_0x42cd('0x30'),JSON[_0x42cd('0x17')](_0x2d4278));});}};EmailChannel['prototype'][_0x42cd('0x24')]=function(_0x575637){if(this[_0x42cd('0xe')][_0x575637]&&this[_0x42cd('0xe')][_0x575637]['Imap']){if(this[_0x42cd('0xf')][this[_0x42cd('0xe')][_0x575637]['Imap']['id']]){delete this['imapAccounts'][this[_0x42cd('0xe')][_0x575637][_0x42cd('0x12')]['id']];}this['mailAccounts'][_0x575637][_0x42cd('0x12')][_0x42cd('0x31')]=moment();this[_0x42cd('0x27')](_0x575637);}};EmailChannel['prototype'][_0x42cd('0x25')]=function(_0xf8d717,_0xdc2c99){if(this[_0x42cd('0xe')][_0xf8d717]){this[_0x42cd('0xe')][_0xf8d717][_0x42cd('0x12')][_0x42cd('0x13')]=_0x42cd('0x2f');this[_0x42cd('0xe')][_0xf8d717][_0x42cd('0x12')][_0x42cd('0x14')]=_0xdc2c99;return this[_0x42cd('0x27')](_0xf8d717);}};EmailChannel['prototype'][_0x42cd('0x32')]=function(_0x1ff3a9,_0x1bd7c1){return this[_0x42cd('0x33')][_0x42cd('0x34')](_0x1ff3a9,_0x1bd7c1);};EmailChannel[_0x42cd('0x10')][_0x42cd('0x35')]=function(_0x47f3b8){var _0x485593=this;if(this[_0x42cd('0xe')][_0x47f3b8['id']]){if(_[_0x42cd('0x16')](this[_0x42cd('0xe')][_0x47f3b8['id']]['Smtp'])){this[_0x42cd('0xe')][_0x47f3b8['id']]['Smtp']={};}this[_0x42cd('0xe')][_0x47f3b8['id']]['Smtp']['lastSync']=moment();return new BPromise(function(_0x453b83,_0x476cc3){return _0x485593[_0x42cd('0x33')][_0x42cd('0x36')](_0x47f3b8)['then'](function(_0x4f3a3e){_0x485593['mailAccounts'][_0x47f3b8['id']]['Smtp'][_0x42cd('0x13')]=_0x42cd('0x37');_0x485593[_0x42cd('0xe')][_0x47f3b8['id']][_0x42cd('0x38')][_0x42cd('0x14')]='';_0x485593[_0x42cd('0x27')](_0x47f3b8['id']);_0x453b83(_0x4f3a3e);})[_0x42cd('0x2e')](function(_0x5aae56){_0x485593[_0x42cd('0xe')][_0x47f3b8['id']]['Smtp'][_0x42cd('0x13')]=_0x42cd('0x2f');_0x485593[_0x42cd('0xe')][_0x47f3b8['id']][_0x42cd('0x38')]['messageStatus']=_0x5aae56;_0x485593[_0x42cd('0x27')](_0x47f3b8['id']);_0x476cc3(_0x5aae56);});});}return this[_0x42cd('0x33')]['verify'](_0x47f3b8);};module['exports']=EmailChannel;
\ No newline at end of file
index 3778245..4b26b33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0192=['prototype','connTimeout','authTimeout','service','user','modernAuthentication','xoauth2','authentication','password','anonymous@xcally.com','host','port','tls','autotls','required','openBox','handleOpenBox','emit','box','handleCloseBox','readUnseen','search','UNSEEN','fetch','message','handleFetchError','handleFetchEnd','closeBox','body','handleMessageBody','attributes','handleMessageAttributes','handleMessageEnd','handleSimpleParser','parser','stringify','textCode','hasOwnProperty','upperFirst','exports','lodash','mailparser','simpleParser','Iconv','events','./utils','email','mailbox','getAccount','account','once','handleReady','bind','imap','end','handleEnd','error','handleError','inherits'];(function(_0x56aa6c,_0x360d1c){var _0x580b72=function(_0x708e73){while(--_0x708e73){_0x56aa6c['push'](_0x56aa6c['shift']());}};_0x580b72(++_0x360d1c);}(_0x0192,0x1c5));var _0x2019=function(_0x2a0741,_0x95c750){_0x2a0741=_0x2a0741-0x0;var _0x2871aa=_0x0192[_0x2a0741];return _0x2871aa;};'use strict';var _=require(_0x2019('0x0'));var util=require('util');var Imap=require('imap');var simpleParser=require(_0x2019('0x1'))[_0x2019('0x2')];var Iconv=require('iconv')[_0x2019('0x3')];var EventEmitter=require(_0x2019('0x4'))['EventEmitter'];var utils=require(_0x2019('0x5'));var logger=require('../../../config/logger')(_0x2019('0x6'));function EmailImap(_0x2f8c9a,_0xc5f35d){this['mailbox']=_0x2f8c9a[_0x2019('0x7')];this['account']=this[_0x2019('0x8')](_0x2f8c9a,_0xc5f35d);this['imap']=new Imap(this[_0x2019('0x9')]);this['imap'][_0x2019('0xa')]('ready',this[_0x2019('0xb')][_0x2019('0xc')](this));this[_0x2019('0xd')]['once'](_0x2019('0xe'),this[_0x2019('0xf')]['bind'](this));this['imap']['on'](_0x2019('0x10'),this[_0x2019('0x11')]['bind'](this));this[_0x2019('0xd')]['connect']();}util[_0x2019('0x12')](EmailImap,EventEmitter);EmailImap[_0x2019('0x13')][_0x2019('0x8')]=function(_0x14cc97,_0x2a2535){var _0x4eb31d={'connTimeout':_0x14cc97[_0x2019('0x14')]?_0x14cc97[_0x2019('0x14')]*0x3e8:0x2710,'authTimeout':_0x14cc97[_0x2019('0x15')]?_0x14cc97[_0x2019('0x15')]*0x3e8:0x1388};if(_0x14cc97[_0x2019('0x16')]){_0x4eb31d[_0x2019('0x17')]=_0x14cc97[_0x2019('0x17')];if(_0x14cc97[_0x2019('0x18')]){_0x4eb31d[_0x2019('0x19')]=utils['generateXOAuth2Token'](_0x14cc97['CloudProvider']['data5'],_0x14cc97[_0x2019('0x17')]);}else{_0x4eb31d['password']=_0x14cc97['password'];}}else{if(_0x14cc97[_0x2019('0x1a')]){_0x4eb31d[_0x2019('0x17')]=_0x14cc97['user'];_0x4eb31d[_0x2019('0x1b')]=_0x14cc97['password'];}}_0x4eb31d[_0x2019('0x6')]=_0x2a2535||_0x14cc97[_0x2019('0x17')]||_0x2019('0x1c');_0x4eb31d[_0x2019('0x1d')]=_0x14cc97['host'];_0x4eb31d[_0x2019('0x1e')]=_0x14cc97[_0x2019('0x1e')]||0x3e1;if(_0x14cc97[_0x2019('0x1f')]){_0x4eb31d[_0x2019('0x1f')]=!![];}else{_0x4eb31d[_0x2019('0x1f')]=![];_0x4eb31d[_0x2019('0x20')]=_0x2019('0x21');}return _0x4eb31d;};EmailImap['prototype'][_0x2019('0xb')]=function(){this[_0x2019('0xd')][_0x2019('0x22')](this[_0x2019('0x7')],![],this[_0x2019('0x23')][_0x2019('0xc')](this));};EmailImap[_0x2019('0x13')]['handleOpenBox']=function(_0x469345,_0x4405c9){if(_0x469345){this[_0x2019('0x11')](_0x469345,!![]);}else{this[_0x2019('0x24')](_0x2019('0x25'),_0x4405c9);this['readUnseen']();}};EmailImap[_0x2019('0x13')][_0x2019('0x26')]=function(_0x580c0c){if(_0x580c0c){this['handleError'](_0x580c0c,!![]);}else{this[_0x2019('0xd')][_0x2019('0xe')]();}};EmailImap['prototype'][_0x2019('0x27')]=function(){this[_0x2019('0xd')][_0x2019('0x28')]([_0x2019('0x29')],this['handleReadUnseen'][_0x2019('0xc')](this));};EmailImap['prototype']['handleReadUnseen']=function(_0xf50d8b,_0x44ab96){if(_0xf50d8b){this[_0x2019('0x11')](_0xf50d8b,!![]);}else{if(_0x44ab96['length']){try{var _0x508db4=this['imap'][_0x2019('0x2a')](_0x44ab96,{'bodies':'','markSeen':!![]});_0x508db4['on'](_0x2019('0x2b'),this['handleFetchMessage'][_0x2019('0xc')](this));_0x508db4[_0x2019('0xa')]('error',this[_0x2019('0x2c')][_0x2019('0xc')](this));_0x508db4['once'](_0x2019('0xe'),this[_0x2019('0x2d')]['bind'](this));}catch(_0x1cb1eb){logger[_0x2019('0x10')](_0x1cb1eb);}}else{this['imap'][_0x2019('0x2e')](!![],this['handleCloseBox']['bind'](this));}}};EmailImap[_0x2019('0x13')]['handleFetchMessage']=function(_0x50b5eb){_0x50b5eb['on'](_0x2019('0x2f'),this[_0x2019('0x30')][_0x2019('0xc')](this));_0x50b5eb[_0x2019('0xa')](_0x2019('0x31'),this[_0x2019('0x32')]['bind'](this));_0x50b5eb[_0x2019('0xa')](_0x2019('0xe'),this[_0x2019('0x33')][_0x2019('0xc')](this));};EmailImap['prototype'][_0x2019('0x30')]=function(_0x3a003f){simpleParser(_0x3a003f,{'Iconv':Iconv},this[_0x2019('0x34')][_0x2019('0xc')](this));};EmailImap[_0x2019('0x13')][_0x2019('0x32')]=function(){};EmailImap[_0x2019('0x13')][_0x2019('0x33')]=function(){};EmailImap[_0x2019('0x13')]['handleSimpleParser']=function(_0x5d0567,_0x10a3a7){if(_0x5d0567){logger['error'](_0x5d0567);}else{var _0x5623db=this;utils[_0x2019('0x35')](this[_0x2019('0x9')],_0x10a3a7,function(_0x56447d){_0x5623db[_0x2019('0x24')]('email',_0x56447d);});}};EmailImap[_0x2019('0x13')][_0x2019('0x2d')]=function(){this[_0x2019('0xd')][_0x2019('0x2e')](!![],this['handleCloseBox'][_0x2019('0xc')](this));};EmailImap['prototype']['handleFetchError']=function(_0xe529b0){this[_0x2019('0x11')](_0xe529b0);this[_0x2019('0xd')][_0x2019('0x2e')](!![],this[_0x2019('0x26')][_0x2019('0xc')](this));};EmailImap[_0x2019('0x13')]['handleEnd']=function(){this[_0x2019('0x24')](_0x2019('0xe'));};EmailImap[_0x2019('0x13')][_0x2019('0x11')]=function(_0x13a96b,_0x29b16d){logger[_0x2019('0x10')](_0x2019('0x11'),this[_0x2019('0x9')][_0x2019('0x6')],JSON[_0x2019('0x36')](_0x13a96b));var _0x2fa56a='';if(_0x13a96b){if(_0x13a96b[_0x2019('0x37')]){_0x2fa56a=_0x13a96b[_0x2019('0x37')];}else{for(var _0x37280b in _0x13a96b){if(_0x13a96b[_0x2019('0x38')](_0x37280b)){_0x2fa56a+=_[_0x2019('0x39')](_0x37280b)+':\x20'+_0x13a96b[_0x37280b]+'\x0a';}}}}if(_0x29b16d){this[_0x2019('0xd')]['end']();}else{this[_0x2019('0x24')](_0x2019('0x10'),_0x2fa56a);this[_0x2019('0x24')](_0x2019('0xe'));}};module[_0x2019('0x3a')]=EmailImap;
\ No newline at end of file
+var _0xca4a=['end','handleEnd','error','handleError','connect','prototype','connTimeout','authTimeout','service','user','xoauth2','generateXOAuth2Token','CloudProvider','data5','password','authentication','email','anonymous@xcally.com','host','port','tls','autotls','required','openBox','handleOpenBox','emit','handleCloseBox','readUnseen','search','UNSEEN','length','fetch','message','handleFetchMessage','handleFetchError','handleFetchEnd','closeBox','body','handleMessageBody','handleMessageAttributes','handleMessageEnd','handleSimpleParser','parser','textCode','hasOwnProperty','upperFirst','lodash','imap','simpleParser','iconv','./utils','../../../config/logger','mailbox','getAccount','account','once','ready','handleReady','bind'];(function(_0x391ae8,_0x4f3377){var _0x2505da=function(_0x258ebf){while(--_0x258ebf){_0x391ae8['push'](_0x391ae8['shift']());}};_0x2505da(++_0x4f3377);}(_0xca4a,0x1cb));var _0xaca4=function(_0x40b7bb,_0x1fe9e6){_0x40b7bb=_0x40b7bb-0x0;var _0x225078=_0xca4a[_0x40b7bb];return _0x225078;};'use strict';var _=require(_0xaca4('0x0'));var util=require('util');var Imap=require(_0xaca4('0x1'));var simpleParser=require('mailparser')[_0xaca4('0x2')];var Iconv=require(_0xaca4('0x3'))['Iconv'];var EventEmitter=require('events')['EventEmitter'];var utils=require(_0xaca4('0x4'));var logger=require(_0xaca4('0x5'))('email');function EmailImap(_0x4bd91a,_0x50ba91){this[_0xaca4('0x6')]=_0x4bd91a[_0xaca4('0x6')];this['account']=this[_0xaca4('0x7')](_0x4bd91a,_0x50ba91);this[_0xaca4('0x1')]=new Imap(this[_0xaca4('0x8')]);this[_0xaca4('0x1')][_0xaca4('0x9')](_0xaca4('0xa'),this[_0xaca4('0xb')][_0xaca4('0xc')](this));this['imap']['once'](_0xaca4('0xd'),this[_0xaca4('0xe')]['bind'](this));this[_0xaca4('0x1')]['on'](_0xaca4('0xf'),this[_0xaca4('0x10')]['bind'](this));this[_0xaca4('0x1')][_0xaca4('0x11')]();}util['inherits'](EmailImap,EventEmitter);EmailImap[_0xaca4('0x12')][_0xaca4('0x7')]=function(_0x2bdf41,_0x5e2dbe){var _0x59b651={'connTimeout':_0x2bdf41[_0xaca4('0x13')]?_0x2bdf41[_0xaca4('0x13')]*0x3e8:0x2710,'authTimeout':_0x2bdf41['authTimeout']?_0x2bdf41[_0xaca4('0x14')]*0x3e8:0x1388};if(_0x2bdf41[_0xaca4('0x15')]){_0x59b651[_0xaca4('0x16')]=_0x2bdf41['user'];if(_0x2bdf41['modernAuthentication']){_0x59b651[_0xaca4('0x17')]=utils[_0xaca4('0x18')](_0x2bdf41[_0xaca4('0x19')][_0xaca4('0x1a')],_0x2bdf41[_0xaca4('0x16')]);}else{_0x59b651[_0xaca4('0x1b')]=_0x2bdf41[_0xaca4('0x1b')];}}else{if(_0x2bdf41[_0xaca4('0x1c')]){_0x59b651[_0xaca4('0x16')]=_0x2bdf41[_0xaca4('0x16')];_0x59b651[_0xaca4('0x1b')]=_0x2bdf41['password'];}}_0x59b651[_0xaca4('0x1d')]=_0x5e2dbe||_0x2bdf41[_0xaca4('0x16')]||_0xaca4('0x1e');_0x59b651[_0xaca4('0x1f')]=_0x2bdf41[_0xaca4('0x1f')];_0x59b651[_0xaca4('0x20')]=_0x2bdf41[_0xaca4('0x20')]||0x3e1;if(_0x2bdf41[_0xaca4('0x21')]){_0x59b651[_0xaca4('0x21')]=!![];}else{_0x59b651['tls']=![];_0x59b651[_0xaca4('0x22')]=_0xaca4('0x23');}return _0x59b651;};EmailImap[_0xaca4('0x12')][_0xaca4('0xb')]=function(){this['imap'][_0xaca4('0x24')](this[_0xaca4('0x6')],![],this[_0xaca4('0x25')][_0xaca4('0xc')](this));};EmailImap[_0xaca4('0x12')][_0xaca4('0x25')]=function(_0x5a2fd1,_0x5909b9){if(_0x5a2fd1){this[_0xaca4('0x10')](_0x5a2fd1,!![]);}else{this[_0xaca4('0x26')]('box',_0x5909b9);this['readUnseen']();}};EmailImap[_0xaca4('0x12')][_0xaca4('0x27')]=function(_0xbad1ea){if(_0xbad1ea){this['handleError'](_0xbad1ea,!![]);}else{this[_0xaca4('0x1')]['end']();}};EmailImap[_0xaca4('0x12')][_0xaca4('0x28')]=function(){this[_0xaca4('0x1')][_0xaca4('0x29')]([_0xaca4('0x2a')],this['handleReadUnseen'][_0xaca4('0xc')](this));};EmailImap[_0xaca4('0x12')]['handleReadUnseen']=function(_0x3652b4,_0x572bbd){if(_0x3652b4){this[_0xaca4('0x10')](_0x3652b4,!![]);}else{if(_0x572bbd[_0xaca4('0x2b')]){try{var _0x3e1ff0=this[_0xaca4('0x1')][_0xaca4('0x2c')](_0x572bbd,{'bodies':'','markSeen':!![]});_0x3e1ff0['on'](_0xaca4('0x2d'),this[_0xaca4('0x2e')]['bind'](this));_0x3e1ff0[_0xaca4('0x9')](_0xaca4('0xf'),this[_0xaca4('0x2f')][_0xaca4('0xc')](this));_0x3e1ff0[_0xaca4('0x9')]('end',this[_0xaca4('0x30')][_0xaca4('0xc')](this));}catch(_0x338ba6){logger[_0xaca4('0xf')](_0x338ba6);}}else{this[_0xaca4('0x1')][_0xaca4('0x31')](!![],this[_0xaca4('0x27')][_0xaca4('0xc')](this));}}};EmailImap[_0xaca4('0x12')][_0xaca4('0x2e')]=function(_0x41ee56){_0x41ee56['on'](_0xaca4('0x32'),this[_0xaca4('0x33')][_0xaca4('0xc')](this));_0x41ee56[_0xaca4('0x9')]('attributes',this[_0xaca4('0x34')][_0xaca4('0xc')](this));_0x41ee56[_0xaca4('0x9')](_0xaca4('0xd'),this[_0xaca4('0x35')][_0xaca4('0xc')](this));};EmailImap['prototype']['handleMessageBody']=function(_0x57775f){simpleParser(_0x57775f,{'Iconv':Iconv},this[_0xaca4('0x36')][_0xaca4('0xc')](this));};EmailImap[_0xaca4('0x12')][_0xaca4('0x34')]=function(){};EmailImap[_0xaca4('0x12')][_0xaca4('0x35')]=function(){};EmailImap[_0xaca4('0x12')]['handleSimpleParser']=function(_0x449549,_0x10c40b){if(_0x449549){logger[_0xaca4('0xf')](_0x449549);}else{var _0x3a836c=this;utils[_0xaca4('0x37')](this[_0xaca4('0x8')],_0x10c40b,function(_0x154432){_0x3a836c[_0xaca4('0x26')]('email',_0x154432);});}};EmailImap['prototype'][_0xaca4('0x30')]=function(){this[_0xaca4('0x1')][_0xaca4('0x31')](!![],this[_0xaca4('0x27')][_0xaca4('0xc')](this));};EmailImap[_0xaca4('0x12')][_0xaca4('0x2f')]=function(_0x28f8b0){this['handleError'](_0x28f8b0);this[_0xaca4('0x1')]['closeBox'](!![],this['handleCloseBox'][_0xaca4('0xc')](this));};EmailImap['prototype'][_0xaca4('0xe')]=function(){this[_0xaca4('0x26')](_0xaca4('0xd'));};EmailImap[_0xaca4('0x12')][_0xaca4('0x10')]=function(_0x12a2a0,_0x2bb536){logger[_0xaca4('0xf')]('handleError',this[_0xaca4('0x8')][_0xaca4('0x1d')],JSON['stringify'](_0x12a2a0));var _0x572189='';if(_0x12a2a0){if(_0x12a2a0[_0xaca4('0x38')]){_0x572189=_0x12a2a0[_0xaca4('0x38')];}else{for(var _0x2456b8 in _0x12a2a0){if(_0x12a2a0[_0xaca4('0x39')](_0x2456b8)){_0x572189+=_[_0xaca4('0x3a')](_0x2456b8)+':\x20'+_0x12a2a0[_0x2456b8]+'\x0a';}}}}if(_0x2bb536){this[_0xaca4('0x1')][_0xaca4('0xd')]();}else{this[_0xaca4('0x26')](_0xaca4('0xf'),_0x572189);this['emit']('end');}};module['exports']=EmailImap;
\ No newline at end of file
index 58f0443..9124ebd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c36=['toString','verify','createTransport','Not\x20verifired','exports','nodemailer','prototype','use','compile','sendMail'];(function(_0x104b8d,_0x7a1e3f){var _0x4a4363=function(_0x316a0b){while(--_0x316a0b){_0x104b8d['push'](_0x104b8d['shift']());}};_0x4a4363(++_0x7a1e3f);}(_0x2c36,0xd7));var _0x62c3=function(_0x5b64a1,_0x2ec810){_0x5b64a1=_0x5b64a1-0x0;var _0x4b6f55=_0x2c36[_0x5b64a1];return _0x4b6f55;};'use strict';var nodemailer=require(_0x62c3('0x0'));var inlineBase64=require('nodemailer-plugin-inline-base64');function EmailSmtp(){}EmailSmtp[_0x62c3('0x1')]['send']=function(_0x2167a7,_0x2f6c37){return new Promise(function(_0x558a8c,_0x50484a){var _0x82d725=nodemailer['createTransport'](_0x2167a7);_0x82d725[_0x62c3('0x2')](_0x62c3('0x3'),inlineBase64());_0x82d725[_0x62c3('0x4')](_0x2f6c37,function(_0x40c2c,_0x1a1e87){if(_0x40c2c){_0x50484a(_0x40c2c[_0x62c3('0x5')]());}else{_0x558a8c(_0x1a1e87);}});});};EmailSmtp[_0x62c3('0x1')][_0x62c3('0x6')]=function(_0x57223f){return new Promise(function(_0x184152,_0x588baf){var _0x43657d=nodemailer[_0x62c3('0x7')](_0x57223f);_0x43657d[_0x62c3('0x6')](function(_0xac1b03,_0x2d1da4){if(_0xac1b03){_0x588baf(_0xac1b03[_0x62c3('0x5')]());}else{if(_0x2d1da4){_0x184152(_0x2d1da4);}else{_0x588baf(_0x62c3('0x8'));}}});});};module[_0x62c3('0x9')]=EmailSmtp;
\ No newline at end of file
+var _0x6e95=['prototype','send','createTransport','use','compile','toString','verify','Not\x20verifired','nodemailer','nodemailer-plugin-inline-base64'];(function(_0x3f9056,_0x31c27f){var _0x41c080=function(_0x2e80cf){while(--_0x2e80cf){_0x3f9056['push'](_0x3f9056['shift']());}};_0x41c080(++_0x31c27f);}(_0x6e95,0x94));var _0x56e9=function(_0x1a08ad,_0x21d209){_0x1a08ad=_0x1a08ad-0x0;var _0x521649=_0x6e95[_0x1a08ad];return _0x521649;};'use strict';var nodemailer=require(_0x56e9('0x0'));var inlineBase64=require(_0x56e9('0x1'));function EmailSmtp(){}EmailSmtp[_0x56e9('0x2')][_0x56e9('0x3')]=function(_0x418b57,_0x37bf22){return new Promise(function(_0x163875,_0x1ca56e){var _0x181ffd=nodemailer[_0x56e9('0x4')](_0x418b57);_0x181ffd[_0x56e9('0x5')](_0x56e9('0x6'),inlineBase64());_0x181ffd['sendMail'](_0x37bf22,function(_0x5b3c76,_0x402830){if(_0x5b3c76){_0x1ca56e(_0x5b3c76[_0x56e9('0x7')]());}else{_0x163875(_0x402830);}});});};EmailSmtp['prototype'][_0x56e9('0x8')]=function(_0x57ad12){return new Promise(function(_0x5be623,_0x2efb5a){var _0x485662=nodemailer[_0x56e9('0x4')](_0x57ad12);_0x485662['verify'](function(_0x43fc98,_0x2092cb){if(_0x43fc98){_0x2efb5a(_0x43fc98[_0x56e9('0x7')]());}else{if(_0x2092cb){_0x5be623(_0x2092cb);}else{_0x2efb5a(_0x56e9('0x9'));}}});});};module['exports']=EmailSmtp;
\ No newline at end of file
index ac47ebe..684de28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd21=['inReplyTo','date','YYYY-MM-DD\x20HH:mm:ss','filter','application/ms-tnef','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','parseBuffer','first','BodyHTML','<p>Empty\x20message</p>','Attachments','Title','Data','generateXOAuth2Token','user=','auth=Bearer\x20','utf-8','toString','base64','randomstring','path','util','node-tnef','email','../../../config/environment','head','value','address','anonymous','generate','@xcally.com','name','substring','indexOf','split','length','slice','join','pop','test','html','replace','includes','attachments','forEach','push','filename','_SRC','_IMG','\x20]</span>','body','textAsHtml','message','originTo','isEmpty','originCc','type','attachment','format','%s-%s','now','root','server/files/attachments/','writeFileSync','content','headerLines','Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','line','isAutoreply','parser','from','subject','messageId'];(function(_0x29a86f,_0x3053e0){var _0x565bf4=function(_0x2f4e54){while(--_0x2f4e54){_0x29a86f['push'](_0x29a86f['shift']());}};_0x565bf4(++_0x3053e0);}(_0xcd21,0x1cf));var _0x1cd2=function(_0x501cfd,_0x45600f){_0x501cfd=_0x501cfd-0x0;var _0x214f6a=_0xcd21[_0x501cfd];return _0x214f6a;};'use strict';var _=require('lodash');var moment=require('moment');var random=require(_0x1cd2('0x0'));var fs=require('fs');var path=require(_0x1cd2('0x1'));var util=require(_0x1cd2('0x2'));var tnef=require(_0x1cd2('0x3'));var logger=require('../../../config/logger')(_0x1cd2('0x4'));var config=require(_0x1cd2('0x5'));function getAddress(_0x5307fb){var _0x44ef9a=_[_0x1cd2('0x6')](_0x5307fb[_0x1cd2('0x7')]);return _0x44ef9a&&_0x44ef9a[_0x1cd2('0x8')]?_0x44ef9a[_0x1cd2('0x8')]:_0x1cd2('0x9')+random[_0x1cd2('0xa')](0x6)+_0x1cd2('0xb');}function getFirstName(_0x3d2c53){var _0x39febc=_[_0x1cd2('0x6')](_0x3d2c53[_0x1cd2('0x7')]);if(_0x39febc&&_0x39febc[_0x1cd2('0xc')]){if(_0x39febc[_0x1cd2('0xc')]==_0x39febc[_0x1cd2('0x8')]){return _0x39febc[_0x1cd2('0xc')][_0x1cd2('0xd')](0x0,_0x39febc[_0x1cd2('0xc')][_0x1cd2('0xe')]('@'));}var _0x2a0638=_0x39febc[_0x1cd2('0xc')][_0x1cd2('0xf')](/\s+/);return _0x2a0638[_0x1cd2('0x10')]>0x1?_0x2a0638[_0x1cd2('0x11')](0x0,-0x1)[_0x1cd2('0x12')]('\x20'):_0x39febc[_0x1cd2('0xc')];}return'Anonymous';}function getLastName(_0x4f85be){var _0x9937e9=_[_0x1cd2('0x6')](_0x4f85be[_0x1cd2('0x7')]);if(_0x9937e9&&_0x9937e9[_0x1cd2('0xc')]){var _0x46dc1c=_0x9937e9[_0x1cd2('0xc')][_0x1cd2('0xf')](/\s+/);return _0x46dc1c[_0x1cd2('0x10')]>0x1?_0x46dc1c[_0x1cd2('0x13')]():'';}return'';}function getMails(_0x4dc497,_0x2cb507){var _0x3c6b93='';for(var _0x144493=0x0;_0x144493<_0x2cb507['value'][_0x1cd2('0x10')];_0x144493+=0x1){if(_0x2cb507['value'][_0x144493][_0x1cd2('0x8')]!==_0x4dc497){if(!_['isEmpty'](_0x3c6b93)){_0x3c6b93+=',';}_0x3c6b93+=_0x2cb507[_0x1cd2('0x7')][_0x144493][_0x1cd2('0xc')]||_0x2cb507['value'][_0x144493][_0x1cd2('0x8')]||'';_0x3c6b93+='\x20<';_0x3c6b93+=_0x2cb507[_0x1cd2('0x7')][_0x144493][_0x1cd2('0x8')]?_0x2cb507[_0x1cd2('0x7')][_0x144493][_0x1cd2('0x8')]:'anonymous'+random[_0x1cd2('0xa')](0x6)+'@xcally.com';_0x3c6b93+='>';}}return _0x3c6b93;}function parseEmail(_0x270d9e,_0x1dfab8,_0x16ef44){if(_0x1dfab8['html']){var _0x4318c5=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x4318c5[_0x1cd2('0x14')](_0x1dfab8[_0x1cd2('0x15')])){_0x1dfab8[_0x1cd2('0x15')]=_0x1dfab8[_0x1cd2('0x15')][_0x1cd2('0x16')](_0x4318c5,'');}if(_0x1dfab8[_0x1cd2('0x15')][_0x1cd2('0x17')]('<img')){var _0x301dbe=[];_0x1dfab8[_0x1cd2('0x18')][_0x1cd2('0x19')](_0x4570f9=>{_0x301dbe[_0x1cd2('0x1a')](_0x4570f9[_0x1cd2('0x1b')]);});var _0xe2cbd5=/<img.*? _SRC(.*?)[^>]+>/g;var _0x187a47=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x11ef03=_0x1dfab8[_0x1cd2('0x15')][_0x1cd2('0x16')](_0x187a47,_0x1cd2('0x1c'));var _0x10249c=_0x11ef03[_0x1cd2('0x16')](_0xe2cbd5,'_IMG');for(let _0x2df4cf=0x0;_0x2df4cf<_0x301dbe[_0x1cd2('0x10')];_0x2df4cf++){var _0x3518cd=_0x10249c[_0x1cd2('0x16')](_0x1cd2('0x1d'),'<span\x20style=font-weight:bold>\x20[Attachment:\x20'+_0x301dbe[_0x2df4cf]+_0x1cd2('0x1e'));_0x10249c=_0x3518cd;}_0x1dfab8[_0x1cd2('0x15')]=_0x10249c;}_0x16ef44[_0x1cd2('0x1f')]=_0x1dfab8[_0x1cd2('0x15')];}else{_0x16ef44['body']=_0x1dfab8[_0x1cd2('0x20')];}if(_0x16ef44[_0x1cd2('0x1f')]){_0x16ef44['body']=_0x16ef44['body']['replace'](/<a\s+/gi,'<a\x20target=\x22_blank\x22\x20');}if(_0x1dfab8['to']){_0x16ef44[_0x1cd2('0x21')][_0x1cd2('0x22')]=getMails(null,_0x1dfab8['to']);var _0x333609=getMails(_0x270d9e['email'],_0x1dfab8['to']);if(!_[_0x1cd2('0x23')](_0x333609)){_0x16ef44[_0x1cd2('0x21')]['cc']+=_0x333609;}}if(_0x1dfab8['cc']){_0x16ef44[_0x1cd2('0x21')][_0x1cd2('0x24')]=getMails(null,_0x1dfab8['cc']);var _0x2aa1a4=getMails(_0x270d9e[_0x1cd2('0x4')],_0x1dfab8['cc']);if(!_[_0x1cd2('0x23')](_0x2aa1a4)){if(!_['isEmpty'](_0x16ef44[_0x1cd2('0x21')]['cc'])){_0x16ef44[_0x1cd2('0x21')]['cc']+=',';}_0x16ef44[_0x1cd2('0x21')]['cc']+=_0x2aa1a4;}}if(!_[_0x1cd2('0x17')](_0x16ef44[_0x1cd2('0x21')][_0x1cd2('0x22')],_0x270d9e[_0x1cd2('0x4')])&&!_['includes'](_0x16ef44[_0x1cd2('0x21')][_0x1cd2('0x24')],_0x270d9e[_0x1cd2('0x4')])){_0x16ef44['message']['bcc']=_0x270d9e[_0x1cd2('0x4')];}if(_0x1dfab8[_0x1cd2('0x18')]&&_0x1dfab8[_0x1cd2('0x18')][_0x1cd2('0x10')]){_0x16ef44[_0x1cd2('0x21')]['attach']=_0x1dfab8['attachments'][_0x1cd2('0x10')];for(var _0xd78f76=0x0,_0x5c947a,_0x91c0e3,_0x5c4d09;_0xd78f76<_0x1dfab8[_0x1cd2('0x18')][_0x1cd2('0x10')];_0xd78f76+=0x1){if(_0x1dfab8[_0x1cd2('0x18')][_0xd78f76][_0x1cd2('0x25')]===_0x1cd2('0x26')){_0x5c4d09=_0x1dfab8[_0x1cd2('0x18')][_0xd78f76][_0x1cd2('0x1b')]||'attachment-'+_0xd78f76;_0x5c947a=util[_0x1cd2('0x27')](_0x1cd2('0x28'),Date[_0x1cd2('0x29')](),_0x5c4d09);_0x91c0e3=path[_0x1cd2('0x12')](config[_0x1cd2('0x2a')],_0x1cd2('0x2b'),_0x5c947a);fs[_0x1cd2('0x2c')](_0x91c0e3,_0x1dfab8[_0x1cd2('0x18')][_0xd78f76][_0x1cd2('0x2d')]);_0x16ef44[_0x1cd2('0x21')]['attachments']['push']({'name':_0x5c4d09,'basename':_0x5c947a,'type':_0x1dfab8['attachments'][_0xd78f76]['contentType'],'filepath':_0x91c0e3});}}}if(_0x1dfab8[_0x1cd2('0x2e')]&&_0x1dfab8[_0x1cd2('0x2e')][_0x1cd2('0x10')]>0x0){var _0x597d0d=[_0x1cd2('0x2f'),_0x1cd2('0x30'),'Precedence:\x20auto_reply'];for(var _0x500da3=0x0;_0x500da3<_0x1dfab8[_0x1cd2('0x2e')]['length'];_0x500da3++){var _0x55cd1e=_[_0x1cd2('0xe')](_0x597d0d,_0x1dfab8[_0x1cd2('0x2e')][_0x500da3][_0x1cd2('0x31')]);if(_0x55cd1e>=0x0){_0x16ef44[_0x1cd2('0x32')]=!![];}}}return _0x16ef44;}exports[_0x1cd2('0x33')]=function(_0x40414f,_0x2ae8b4,_0x43ea2b){var _0x4aca2a={'from':getAddress(_0x2ae8b4['from']),'firstName':getFirstName(_0x2ae8b4[_0x1cd2('0x34')]),'lastName':getLastName(_0x2ae8b4[_0x1cd2('0x34')]),'mapKey':'email','message':{'from':getMails(_0x40414f[_0x1cd2('0x4')],_0x2ae8b4[_0x1cd2('0x34')]),'to':_0x40414f[_0x1cd2('0x4')],'cc':'','subject':_0x2ae8b4[_0x1cd2('0x35')]||'','messageId':_0x2ae8b4[_0x1cd2('0x36')],'inReplyTo':_0x2ae8b4[_0x1cd2('0x37')],'sentAt':moment(_0x2ae8b4[_0x1cd2('0x38')])[_0x1cd2('0x27')](_0x1cd2('0x39')),'attach':![],'attachments':[]}};if(!_0x2ae8b4[_0x1cd2('0x15')]&&!_0x2ae8b4[_0x1cd2('0x20')]){var _0x5d55d4=_[_0x1cd2('0x3a')](_0x2ae8b4[_0x1cd2('0x18')],{'contentType':_0x1cd2('0x3b')});if(_0x5d55d4['length']){logger['info'](util[_0x1cd2('0x27')](_0x1cd2('0x3c'),_0x2ae8b4[_0x1cd2('0x36')]));tnef[_0x1cd2('0x3d')](_[_0x1cd2('0x3e')](_0x5d55d4)['content'],function(_0x60a718,_0x5bcae8){if(_0x5bcae8){_0x2ae8b4['html']=_0x5bcae8[_0x1cd2('0x3f')]||_0x1cd2('0x40');if(_0x5bcae8[_0x1cd2('0x41')]){for(var _0x4d576a=0x0;_0x4d576a<_0x5bcae8[_0x1cd2('0x41')][_0x1cd2('0x10')];_0x4d576a++){var _0x5297be=_0x5bcae8[_0x1cd2('0x41')][_0x4d576a];_0x4aca2a[_0x1cd2('0x21')]['attachments'][_0x1cd2('0x1a')]({'filename':_0x5297be[_0x1cd2('0x42')],'content':Buffer[_0x1cd2('0x34')](_0x5297be[_0x1cd2('0x43')])});}}}_0x43ea2b(parseEmail(_0x40414f,_0x2ae8b4,_0x4aca2a));});}else{_0x2ae8b4[_0x1cd2('0x15')]=_0x1cd2('0x40');_0x43ea2b(parseEmail(_0x40414f,_0x2ae8b4,_0x4aca2a));}}else{_0x43ea2b(parseEmail(_0x40414f,_0x2ae8b4,_0x4aca2a));}};exports[_0x1cd2('0x44')]=function(_0x1f2032,_0x59dd65){var _0x4a422e=[_0x1cd2('0x45')+(_0x59dd65||''),_0x1cd2('0x46')+_0x1f2032,'',''];return Buffer[_0x1cd2('0x34')](_0x4a422e[_0x1cd2('0x12')]('\ 1'),_0x1cd2('0x47'))[_0x1cd2('0x48')](_0x1cd2('0x49'));};
\ No newline at end of file
+var _0x6791=['<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','textAsHtml','originTo','message','originCc','attach','type','attachment','attachment-','format','server/files/attachments/','writeFileSync','contentType','headerLines','Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply','line','isAutoreply','from','subject','inReplyTo','YYYY-MM-DD\x20HH:mm:ss','filter','application/ms-tnef','info','parseBuffer','content','BodyHTML','<p>Empty\x20message</p>','Attachments','Title','generateXOAuth2Token','user=','auth=Bearer\x20','toString','base64','lodash','randomstring','path','util','node-tnef','../../../config/logger','email','../../../config/environment','head','value','address','generate','name','substring','split','length','slice','join','Anonymous','pop','isEmpty','@xcally.com','html','test','replace','includes','<img','attachments','push','filename','_SRC'];(function(_0x1b3f93,_0x3aca00){var _0x245909=function(_0xb1bfaa){while(--_0xb1bfaa){_0x1b3f93['push'](_0x1b3f93['shift']());}};_0x245909(++_0x3aca00);}(_0x6791,0xf9));var _0x1679=function(_0x110596,_0x1faae7){_0x110596=_0x110596-0x0;var _0x51fef2=_0x6791[_0x110596];return _0x51fef2;};'use strict';var _=require(_0x1679('0x0'));var moment=require('moment');var random=require(_0x1679('0x1'));var fs=require('fs');var path=require(_0x1679('0x2'));var util=require(_0x1679('0x3'));var tnef=require(_0x1679('0x4'));var logger=require(_0x1679('0x5'))(_0x1679('0x6'));var config=require(_0x1679('0x7'));function getAddress(_0x1996eb){var _0x1d37a8=_[_0x1679('0x8')](_0x1996eb[_0x1679('0x9')]);return _0x1d37a8&&_0x1d37a8[_0x1679('0xa')]?_0x1d37a8[_0x1679('0xa')]:'anonymous'+random[_0x1679('0xb')](0x6)+'@xcally.com';}function getFirstName(_0x25f8b9){var _0xfe9db4=_[_0x1679('0x8')](_0x25f8b9['value']);if(_0xfe9db4&&_0xfe9db4[_0x1679('0xc')]){if(_0xfe9db4[_0x1679('0xc')]==_0xfe9db4[_0x1679('0xa')]){return _0xfe9db4[_0x1679('0xc')][_0x1679('0xd')](0x0,_0xfe9db4['name']['indexOf']('@'));}var _0x3c5358=_0xfe9db4[_0x1679('0xc')][_0x1679('0xe')](/\s+/);return _0x3c5358[_0x1679('0xf')]>0x1?_0x3c5358[_0x1679('0x10')](0x0,-0x1)[_0x1679('0x11')]('\x20'):_0xfe9db4[_0x1679('0xc')];}return _0x1679('0x12');}function getLastName(_0x1b6281){var _0x46910f=_[_0x1679('0x8')](_0x1b6281[_0x1679('0x9')]);if(_0x46910f&&_0x46910f['name']){var _0x467b07=_0x46910f[_0x1679('0xc')][_0x1679('0xe')](/\s+/);return _0x467b07[_0x1679('0xf')]>0x1?_0x467b07[_0x1679('0x13')]():'';}return'';}function getMails(_0x5cfaef,_0x56b985){var _0x26947='';for(var _0x320ec0=0x0;_0x320ec0<_0x56b985[_0x1679('0x9')]['length'];_0x320ec0+=0x1){if(_0x56b985[_0x1679('0x9')][_0x320ec0][_0x1679('0xa')]!==_0x5cfaef){if(!_[_0x1679('0x14')](_0x26947)){_0x26947+=',';}_0x26947+=_0x56b985[_0x1679('0x9')][_0x320ec0][_0x1679('0xc')]||_0x56b985['value'][_0x320ec0][_0x1679('0xa')]||'';_0x26947+='\x20<';_0x26947+=_0x56b985[_0x1679('0x9')][_0x320ec0][_0x1679('0xa')]?_0x56b985[_0x1679('0x9')][_0x320ec0][_0x1679('0xa')]:'anonymous'+random[_0x1679('0xb')](0x6)+_0x1679('0x15');_0x26947+='>';}}return _0x26947;}function parseEmail(_0x50109e,_0x12824d,_0x180fc9){if(_0x12824d[_0x1679('0x16')]){var _0x5d1f19=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x5d1f19[_0x1679('0x17')](_0x12824d[_0x1679('0x16')])){_0x12824d[_0x1679('0x16')]=_0x12824d[_0x1679('0x16')][_0x1679('0x18')](_0x5d1f19,'');}if(_0x12824d[_0x1679('0x16')][_0x1679('0x19')](_0x1679('0x1a'))){var _0x4608c6=[];_0x12824d[_0x1679('0x1b')]['forEach'](_0x581bc9=>{_0x4608c6[_0x1679('0x1c')](_0x581bc9[_0x1679('0x1d')]);});var _0x443b95=/<img.*? _SRC(.*?)[^>]+>/g;var _0x11e106=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x5779fd=_0x12824d[_0x1679('0x16')][_0x1679('0x18')](_0x11e106,_0x1679('0x1e'));var _0x647514=_0x5779fd[_0x1679('0x18')](_0x443b95,'_IMG');for(let _0x4b086e=0x0;_0x4b086e<_0x4608c6[_0x1679('0xf')];_0x4b086e++){var _0xa833e9=_0x647514[_0x1679('0x18')]('_IMG',_0x1679('0x1f')+_0x4608c6[_0x4b086e]+_0x1679('0x20'));_0x647514=_0xa833e9;}_0x12824d[_0x1679('0x16')]=_0x647514;}_0x180fc9[_0x1679('0x21')]=_0x12824d['html'];}else{_0x180fc9[_0x1679('0x21')]=_0x12824d[_0x1679('0x22')];}if(_0x180fc9[_0x1679('0x21')]){_0x180fc9[_0x1679('0x21')]=_0x180fc9['body']['replace'](/<a\s+/gi,'<a\x20target=\x22_blank\x22\x20');}if(_0x12824d['to']){_0x180fc9['message'][_0x1679('0x23')]=getMails(null,_0x12824d['to']);var _0x6e3777=getMails(_0x50109e['email'],_0x12824d['to']);if(!_['isEmpty'](_0x6e3777)){_0x180fc9['message']['cc']+=_0x6e3777;}}if(_0x12824d['cc']){_0x180fc9[_0x1679('0x24')][_0x1679('0x25')]=getMails(null,_0x12824d['cc']);var _0x1224ba=getMails(_0x50109e[_0x1679('0x6')],_0x12824d['cc']);if(!_[_0x1679('0x14')](_0x1224ba)){if(!_[_0x1679('0x14')](_0x180fc9[_0x1679('0x24')]['cc'])){_0x180fc9[_0x1679('0x24')]['cc']+=',';}_0x180fc9[_0x1679('0x24')]['cc']+=_0x1224ba;}}if(!_[_0x1679('0x19')](_0x180fc9[_0x1679('0x24')]['originTo'],_0x50109e['email'])&&!_[_0x1679('0x19')](_0x180fc9[_0x1679('0x24')][_0x1679('0x25')],_0x50109e[_0x1679('0x6')])){_0x180fc9[_0x1679('0x24')]['bcc']=_0x50109e[_0x1679('0x6')];}if(_0x12824d[_0x1679('0x1b')]&&_0x12824d[_0x1679('0x1b')][_0x1679('0xf')]){_0x180fc9['message'][_0x1679('0x26')]=_0x12824d['attachments'][_0x1679('0xf')];for(var _0x63114=0x0,_0x559e05,_0x5aefc6,_0x233974;_0x63114<_0x12824d[_0x1679('0x1b')][_0x1679('0xf')];_0x63114+=0x1){if(_0x12824d[_0x1679('0x1b')][_0x63114][_0x1679('0x27')]===_0x1679('0x28')){_0x233974=_0x12824d[_0x1679('0x1b')][_0x63114][_0x1679('0x1d')]||_0x1679('0x29')+_0x63114;_0x559e05=util[_0x1679('0x2a')]('%s-%s',Date['now'](),_0x233974);_0x5aefc6=path['join'](config['root'],_0x1679('0x2b'),_0x559e05);fs[_0x1679('0x2c')](_0x5aefc6,_0x12824d[_0x1679('0x1b')][_0x63114]['content']);_0x180fc9[_0x1679('0x24')]['attachments'][_0x1679('0x1c')]({'name':_0x233974,'basename':_0x559e05,'type':_0x12824d[_0x1679('0x1b')][_0x63114][_0x1679('0x2d')],'filepath':_0x5aefc6});}}}if(_0x12824d[_0x1679('0x2e')]&&_0x12824d['headerLines']['length']>0x0){var _0x510daf=[_0x1679('0x2f'),_0x1679('0x30'),_0x1679('0x31')];for(var _0x536007=0x0;_0x536007<_0x12824d[_0x1679('0x2e')][_0x1679('0xf')];_0x536007++){var _0x392957=_['indexOf'](_0x510daf,_0x12824d['headerLines'][_0x536007][_0x1679('0x32')]);if(_0x392957>=0x0){_0x180fc9[_0x1679('0x33')]=!![];}}}return _0x180fc9;}exports['parser']=function(_0x1aed83,_0x527e7a,_0x15d172){var _0x1d0dbc={'from':getAddress(_0x527e7a[_0x1679('0x34')]),'firstName':getFirstName(_0x527e7a[_0x1679('0x34')]),'lastName':getLastName(_0x527e7a[_0x1679('0x34')]),'mapKey':_0x1679('0x6'),'message':{'from':getMails(_0x1aed83[_0x1679('0x6')],_0x527e7a['from']),'to':_0x1aed83['email'],'cc':'','subject':_0x527e7a[_0x1679('0x35')]||'','messageId':_0x527e7a['messageId'],'inReplyTo':_0x527e7a[_0x1679('0x36')],'sentAt':moment(_0x527e7a['date'])[_0x1679('0x2a')](_0x1679('0x37')),'attach':![],'attachments':[]}};if(!_0x527e7a['html']&&!_0x527e7a[_0x1679('0x22')]){var _0x1258fa=_[_0x1679('0x38')](_0x527e7a[_0x1679('0x1b')],{'contentType':_0x1679('0x39')});if(_0x1258fa[_0x1679('0xf')]){logger[_0x1679('0x3a')](util['format']('Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system',_0x527e7a['messageId']));tnef[_0x1679('0x3b')](_['first'](_0x1258fa)[_0x1679('0x3c')],function(_0x4d920c,_0x54dc3d){if(_0x54dc3d){_0x527e7a['html']=_0x54dc3d[_0x1679('0x3d')]||_0x1679('0x3e');if(_0x54dc3d[_0x1679('0x3f')]){for(var _0x15c3f3=0x0;_0x15c3f3<_0x54dc3d[_0x1679('0x3f')]['length'];_0x15c3f3++){var _0x375916=_0x54dc3d[_0x1679('0x3f')][_0x15c3f3];_0x1d0dbc[_0x1679('0x24')]['attachments'][_0x1679('0x1c')]({'filename':_0x375916[_0x1679('0x40')],'content':Buffer[_0x1679('0x34')](_0x375916['Data'])});}}}_0x15d172(parseEmail(_0x1aed83,_0x527e7a,_0x1d0dbc));});}else{_0x527e7a[_0x1679('0x16')]=_0x1679('0x3e');_0x15d172(parseEmail(_0x1aed83,_0x527e7a,_0x1d0dbc));}}else{_0x15d172(parseEmail(_0x1aed83,_0x527e7a,_0x1d0dbc));}};exports[_0x1679('0x41')]=function(_0x172f01,_0x4a5f37){var _0xc5358c=[_0x1679('0x42')+(_0x4a5f37||''),_0x1679('0x43')+_0x172f01,'',''];return Buffer[_0x1679('0x34')](_0xc5358c[_0x1679('0x11')]('\ 1'),'utf-8')[_0x1679('0x44')](_0x1679('0x45'));};
\ No newline at end of file
index b787005..2b77826 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c4f=['Imap','Smtp','name','Service','key','SERV','active'];(function(_0x44b887,_0x298573){var _0x1383c5=function(_0x1b9645){while(--_0x1b9645){_0x44b887['push'](_0x44b887['shift']());}};_0x1383c5(++_0x298573);}(_0x2c4f,0x12f));var _0xf2c4=function(_0x20a761,_0x2ffd85){_0x20a761=_0x20a761-0x0;var _0x284a38=_0x2c4f[_0x20a761];return _0x284a38;};'use strict';var _=require('lodash');function MailAccount(_0xef6709){this['id']=_0xef6709['id']||0x0;this[_0xf2c4('0x0')]=_0xef6709[_0xf2c4('0x0')]||_0xf2c4('0x1');this[_0xf2c4('0x2')]=_0xef6709[_0xf2c4('0x2')]||_0xf2c4('0x3');this['active']=_0xef6709[_0xf2c4('0x4')]||![];this['Imap']=_0xef6709[_0xf2c4('0x5')]||[];this[_0xf2c4('0x6')]=_0xef6709['Smtp']||[];}module['exports']=MailAccount;
\ No newline at end of file
+var _0x0d37=['Service','key','SERV','active','Smtp','exports','lodash','name'];(function(_0x2386e4,_0x220eef){var _0x494803=function(_0x593e72){while(--_0x593e72){_0x2386e4['push'](_0x2386e4['shift']());}};_0x494803(++_0x220eef);}(_0x0d37,0x18e));var _0x70d3=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x0d37[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x70d3('0x0'));function MailAccount(_0xeb8ba6){this['id']=_0xeb8ba6['id']||0x0;this[_0x70d3('0x1')]=_0xeb8ba6[_0x70d3('0x1')]||_0x70d3('0x2');this['key']=_0xeb8ba6[_0x70d3('0x3')]||_0x70d3('0x4');this[_0x70d3('0x5')]=_0xeb8ba6[_0x70d3('0x5')]||![];this['Imap']=_0xeb8ba6['Imap']||[];this[_0x70d3('0x6')]=_0xeb8ba6[_0x70d3('0x6')]||[];}module[_0x70d3('0x7')]=MailAccount;
\ No newline at end of file
index c020bbf..81916e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9012=['prototype','mergeFromDatabase','initMailAccounts','mailAccounts','length','isUndefined','merge','exports','../model/mailAccount','mapKeys'];(function(_0x109a95,_0x4dd3ba){var _0x1881bb=function(_0x27d734){while(--_0x27d734){_0x109a95['push'](_0x109a95['shift']());}};_0x1881bb(++_0x4dd3ba);}(_0x9012,0x6c));var _0x2901=function(_0x296809,_0x1c9665){_0x296809=_0x296809-0x0;var _0x18c0d3=_0x9012[_0x296809];return _0x18c0d3;};'use strict';var _=require('lodash');var MailAccount=require(_0x2901('0x0'));var Realtime=function(){this['mailAccounts']={};};function freeIsNotKey(_0x5c262c,_0x3fdd7f,_0x41fdfd){var _0x4111d6=_[_0x2901('0x1')](_0x5c262c,function(_0x4df598,_0x75505f){return _0x4df598[_0x41fdfd];});for(var _0x99b57e in _0x3fdd7f){if(_0x3fdd7f['hasOwnProperty'](_0x99b57e)){if(!_0x4111d6[_0x99b57e]){delete _0x3fdd7f[_0x99b57e];}}}}Realtime[_0x2901('0x2')][_0x2901('0x3')]=function(_0x3ec2dd,_0x154cf0){for(var _0x3603ab in _0x154cf0){if(_0x3ec2dd['hasOwnProperty'](_0x3603ab)){_0x3ec2dd[_0x3603ab]=_0x154cf0[_0x3603ab];}}};Realtime[_0x2901('0x2')][_0x2901('0x4')]=function(){var _0x278376=this;return function(_0x1ddbf3){if(_0x1ddbf3){freeIsNotKey(_0x1ddbf3,_0x278376[_0x2901('0x5')],'id');for(var _0x4a5291=0x0,_0x4f2610={},_0x28a3e3={};_0x4a5291<_0x1ddbf3[_0x2901('0x6')];_0x4a5291+=0x1){_0x4f2610=_0x1ddbf3[_0x4a5291];if(_[_0x2901('0x7')](_0x278376[_0x2901('0x5')][_0x4f2610['id']])){_0x278376[_0x2901('0x5')][_0x4f2610['id']]=new MailAccount(_0x4f2610);}else{_[_0x2901('0x8')](_0x278376[_0x2901('0x5')][_0x4f2610['id']],_0x4f2610);}}}return _0x278376[_0x2901('0x5')];};};module[_0x2901('0x9')]=Realtime;
\ No newline at end of file
+var _0x720d=['isUndefined','merge','exports','lodash','../model/mailAccount','mailAccounts','mapKeys','prototype','mergeFromDatabase','hasOwnProperty','initMailAccounts','length'];(function(_0x2bbad9,_0x1f3892){var _0x1683cb=function(_0x262672){while(--_0x262672){_0x2bbad9['push'](_0x2bbad9['shift']());}};_0x1683cb(++_0x1f3892);}(_0x720d,0x1ef));var _0xd720=function(_0x53c40a,_0x520738){_0x53c40a=_0x53c40a-0x0;var _0x2959eb=_0x720d[_0x53c40a];return _0x2959eb;};'use strict';var _=require(_0xd720('0x0'));var MailAccount=require(_0xd720('0x1'));var Realtime=function(){this[_0xd720('0x2')]={};};function freeIsNotKey(_0x94d1fd,_0x269e22,_0x58a397){var _0x19fab8=_[_0xd720('0x3')](_0x94d1fd,function(_0x2ecd72,_0x1e4ebd){return _0x2ecd72[_0x58a397];});for(var _0xabf28f in _0x269e22){if(_0x269e22['hasOwnProperty'](_0xabf28f)){if(!_0x19fab8[_0xabf28f]){delete _0x269e22[_0xabf28f];}}}}Realtime[_0xd720('0x4')][_0xd720('0x5')]=function(_0x209fce,_0x23a5c4){for(var _0x4f6d97 in _0x23a5c4){if(_0x209fce[_0xd720('0x6')](_0x4f6d97)){_0x209fce[_0x4f6d97]=_0x23a5c4[_0x4f6d97];}}};Realtime['prototype'][_0xd720('0x7')]=function(){var _0x199dc0=this;return function(_0x700702){if(_0x700702){freeIsNotKey(_0x700702,_0x199dc0[_0xd720('0x2')],'id');for(var _0x14b481=0x0,_0x24e1a7={},_0x3984c7={};_0x14b481<_0x700702[_0xd720('0x8')];_0x14b481+=0x1){_0x24e1a7=_0x700702[_0x14b481];if(_[_0xd720('0x9')](_0x199dc0[_0xd720('0x2')][_0x24e1a7['id']])){_0x199dc0[_0xd720('0x2')][_0x24e1a7['id']]=new MailAccount(_0x24e1a7);}else{_[_0xd720('0xa')](_0x199dc0['mailAccounts'][_0x24e1a7['id']],_0x24e1a7);}}}return _0x199dc0[_0xd720('0x2')];};};module[_0xd720('0xb')]=Realtime;
\ No newline at end of file
index 77fb41e..f9dd079 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7ee=['TemplateId','MailServerIn','Imap','service','type','data5','CloudProvider','notify','NotifyMailAccount','../client','Request','GetMailAccount','name','provider','active','ListId'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xa7ee,0x159));var _0xea7e=function(_0xe2ebaa,_0x138483){_0xe2ebaa=_0xe2ebaa-0x0;var _0x563838=_0xa7ee[_0xe2ebaa];return _0x563838;};'use strict';var client=require(_0xea7e('0x0'));exports['getMailAccounts']=function(){return function(){return client[_0xea7e('0x1')](_0xea7e('0x2'),{'options':{'attributes':['id',_0xea7e('0x3'),_0xea7e('0x4'),'service','email',_0xea7e('0x5'),'key',_0xea7e('0x6'),_0xea7e('0x7')],'raw':![],'include':[{'model':_0xea7e('0x8'),'as':_0xea7e('0x9'),'include':[{'model':'CloudProvider','attributes':['id',_0xea7e('0x3'),_0xea7e('0xa'),_0xea7e('0xb'),_0xea7e('0xc')],'as':_0xea7e('0xd')}]},{'model':'MailServerOut','as':'Smtp','include':[{'model':_0xea7e('0xd'),'attributes':['id','name',_0xea7e('0xa'),_0xea7e('0xb'),_0xea7e('0xc')],'as':_0xea7e('0xd')}]}]},'log':'getMailAccount'});};};exports[_0xea7e('0xe')]=function(_0x56a4e5,_0x335f29){return client[_0xea7e('0x1')](_0xea7e('0xf'),{'account':{'id':_0x56a4e5},'body':_0x335f29,'log':_0xea7e('0xf')});};
\ No newline at end of file
+var _0x94ba=['getMailAccount','notify','NotifyMailAccount','../client','getMailAccounts','Request','GetMailAccount','name','service','active','key','MailServerIn','Imap','CloudProvider','type','data5','Smtp'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x94ba,0xbe));var _0xa94b=function(_0x2b5513,_0x3fe5cd){_0x2b5513=_0x2b5513-0x0;var _0x578fd2=_0x94ba[_0x2b5513];return _0x578fd2;};'use strict';var client=require(_0xa94b('0x0'));exports[_0xa94b('0x1')]=function(){return function(){return client[_0xa94b('0x2')](_0xa94b('0x3'),{'options':{'attributes':['id',_0xa94b('0x4'),'provider',_0xa94b('0x5'),'email',_0xa94b('0x6'),_0xa94b('0x7'),'ListId','TemplateId'],'raw':![],'include':[{'model':_0xa94b('0x8'),'as':_0xa94b('0x9'),'include':[{'model':_0xa94b('0xa'),'attributes':['id',_0xa94b('0x4'),'service',_0xa94b('0xb'),_0xa94b('0xc')],'as':'CloudProvider'}]},{'model':'MailServerOut','as':_0xa94b('0xd'),'include':[{'model':_0xa94b('0xa'),'attributes':['id',_0xa94b('0x4'),'service',_0xa94b('0xb'),_0xa94b('0xc')],'as':_0xa94b('0xa')}]}]},'log':_0xa94b('0xe')});};};exports[_0xa94b('0xf')]=function(_0x101f56,_0x52de08){return client[_0xa94b('0x2')](_0xa94b('0x10'),{'account':{'id':_0x101f56},'body':_0x52de08,'log':_0xa94b('0x10')});};
\ No newline at end of file
index 007e267..807ca81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc8b=['Request','ShowSetting','loginMailFrequency','GetSettings','../client','getSettings'];(function(_0x474736,_0x1ed583){var _0x99dff0=function(_0x3dad70){while(--_0x3dad70){_0x474736['push'](_0x474736['shift']());}};_0x99dff0(++_0x1ed583);}(_0xfc8b,0x64));var _0xbfc8=function(_0x4a4460,_0x2d02e0){_0x4a4460=_0x4a4460-0x0;var _0x19cf76=_0xfc8b[_0x4a4460];return _0x19cf76;};'use strict';var client=require(_0xbfc8('0x0'));exports[_0xbfc8('0x1')]=function(){return client[_0xbfc8('0x2')](_0xbfc8('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0xbfc8('0x4')]},'log':_0xbfc8('0x5')});};
\ No newline at end of file
+var _0x7e2f=['GetSettings','getSettings','Request','ShowSetting','loginMailFrequency'];(function(_0x4e6eb2,_0x16a451){var _0x4e0c1c=function(_0x59f144){while(--_0x59f144){_0x4e6eb2['push'](_0x4e6eb2['shift']());}};_0x4e0c1c(++_0x16a451);}(_0x7e2f,0xb5));var _0xf7e2=function(_0x2a4fe2,_0x3ec53a){_0x2a4fe2=_0x2a4fe2-0x0;var _0x225c4a=_0x7e2f[_0x2a4fe2];return _0x225c4a;};'use strict';var client=require('../client');exports[_0xf7e2('0x0')]=function(){return client[_0xf7e2('0x1')](_0xf7e2('0x2'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0xf7e2('0x3')]},'log':_0xf7e2('0x4')});};
\ No newline at end of file
index 71062a6..0a92f5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['catch','values','mailAccounts','length','Imap','password','Smtp','pass','server','http','stringify','127.0.0.1','log','Email\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','jayson/promise','bluebird','lodash','listen','sendMail','then','error','Verified'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1b828b,_0x344400){_0x1b828b=_0x1b828b-0x0;var _0x98da1a=_0xa9e0[_0x1b828b];return _0x98da1a;};'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(_0x433a86,_0x175b5c){_0x433a86=_0x433a86-0x0;var _0x23000c=_0xa9e0[_0x433a86];return _0x23000c;};'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 de4fc02..72c8cc5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1363=['exports','lodash','http','../../config/environment','timeout','port','polling','redis','defaults','localhost','adapter','socket.io-redis','../../config/triggers','default','../../config/socketio','../../config/express','../../routes','once','listening','log','Express\x20server\x20listening\x20on\x20port\x20%d!'];(function(_0x4dd342,_0x24253d){var _0x290f10=function(_0x2937a6){while(--_0x2937a6){_0x4dd342['push'](_0x4dd342['shift']());}};_0x290f10(++_0x24253d);}(_0x1363,0x94));var _0x3136=function(_0xc63269,_0x1f4dce){_0xc63269=_0xc63269-0x0;var _0x14f56e=_0x1363[_0xc63269];return _0x14f56e;};'use strict';var _=require(_0x3136('0x0'));var http=require(_0x3136('0x1'));var express=require('express');var sticky=require('sticky-session');var Redis=require('ioredis');var config=require(_0x3136('0x2'));var app=express();var server=http['createServer'](app);server[_0x3136('0x3')]=0xdbba0;if(sticky['listen'](server,config[_0x3136('0x4')])){var socketio=require('socket.io')(server,{'transports':['websocket',_0x3136('0x5')]});config[_0x3136('0x6')]=_[_0x3136('0x7')](config[_0x3136('0x6')],{'host':_0x3136('0x8'),'port':0x18eb});socketio[_0x3136('0x9')](require(_0x3136('0xa'))({'pubClient':new Redis(config[_0x3136('0x6')]),'subClient':new Redis(config[_0x3136('0x6')])}));require(_0x3136('0xb'))[_0x3136('0xc')]();require(_0x3136('0xd'))[_0x3136('0xc')](socketio);require(_0x3136('0xe'))[_0x3136('0xc')](app);require(_0x3136('0xf'))['default'](app);}else{server[_0x3136('0x10')](_0x3136('0x11'),function(){console[_0x3136('0x12')](_0x3136('0x13'),config[_0x3136('0x4')]);});}exports=module[_0x3136('0x14')]=app;
\ No newline at end of file
+var _0xa0fe=['once','log','Express\x20server\x20listening\x20on\x20port\x20%d!','lodash','http','express','sticky-session','ioredis','../../config/environment','createServer','timeout','listen','port','socket.io','websocket','polling','redis','defaults','localhost','adapter','default','../../config/socketio','../../routes'];(function(_0x45c417,_0x137216){var _0x3b32e8=function(_0x36f3a2){while(--_0x36f3a2){_0x45c417['push'](_0x45c417['shift']());}};_0x3b32e8(++_0x137216);}(_0xa0fe,0xa4));var _0xea0f=function(_0x4afa93,_0x5eb883){_0x4afa93=_0x4afa93-0x0;var _0x1c1403=_0xa0fe[_0x4afa93];return _0x1c1403;};'use strict';var _=require(_0xea0f('0x0'));var http=require(_0xea0f('0x1'));var express=require(_0xea0f('0x2'));var sticky=require(_0xea0f('0x3'));var Redis=require(_0xea0f('0x4'));var config=require(_0xea0f('0x5'));var app=express();var server=http[_0xea0f('0x6')](app);server[_0xea0f('0x7')]=0xdbba0;if(sticky[_0xea0f('0x8')](server,config[_0xea0f('0x9')])){var socketio=require(_0xea0f('0xa'))(server,{'transports':[_0xea0f('0xb'),_0xea0f('0xc')]});config[_0xea0f('0xd')]=_[_0xea0f('0xe')](config['redis'],{'host':_0xea0f('0xf'),'port':0x18eb});socketio[_0xea0f('0x10')](require('socket.io-redis')({'pubClient':new Redis(config[_0xea0f('0xd')]),'subClient':new Redis(config[_0xea0f('0xd')])}));require('../../config/triggers')[_0xea0f('0x11')]();require(_0xea0f('0x12'))[_0xea0f('0x11')](socketio);require('../../config/express')[_0xea0f('0x11')](app);require(_0xea0f('0x13'))[_0xea0f('0x11')](app);}else{server[_0xea0f('0x14')]('listening',function(){console[_0xea0f('0x15')](_0xea0f('0x16'),config[_0xea0f('0x9')]);});}exports=module['exports']=app;
\ No newline at end of file
index d9cbe7f..283e725 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe17=['http','Request','then','debug','error','result','catch','rpc','exports','bluebird','../../config/logger','routing','client'];(function(_0x4ecbba,_0x3c366f){var _0x569384=function(_0x38a8a5){while(--_0x38a8a5){_0x4ecbba['push'](_0x4ecbba['shift']());}};_0x569384(++_0x3c366f);}(_0xbe17,0xd9));var _0x7be1=function(_0x5c0595,_0x4d4b47){_0x5c0595=_0x5c0595-0x0;var _0xf33f05=_0xbe17[_0x5c0595];return _0xf33f05;};'use strict';var jayson=require('jayson/promise');var BPromise=require(_0x7be1('0x0'));var logger=require(_0x7be1('0x1'))(_0x7be1('0x2'));var client=jayson[_0x7be1('0x3')][_0x7be1('0x4')]({'port':0x2329});client[_0x7be1('0x5')]=function(_0x2a0d4f,_0x550075){return new BPromise(function(_0x2857a9,_0x3f9c02){return client['request'](_0x2a0d4f,_0x550075)[_0x7be1('0x6')](function(_0x403ea2){logger[_0x7be1('0x7')]('rpc',_0x7be1('0x2'),_0x2a0d4f,_0x550075,_0x403ea2);if(_0x403ea2[_0x7be1('0x8')]){logger[_0x7be1('0x8')]('rpc',_0x7be1('0x2'),_0x2a0d4f,_0x403ea2['error']['message'],_0x550075);return _0x3f9c02(_0x403ea2['error']['message']);}else{return _0x2857a9(_0x403ea2[_0x7be1('0x9')]);}})[_0x7be1('0xa')](function(_0x443068){logger[_0x7be1('0x8')](_0x7be1('0xb'),_0x7be1('0x2'),_0x2a0d4f,_0x443068,_0x550075);return _0x3f9c02(_0x443068);});});};module[_0x7be1('0xc')]=client;
\ No newline at end of file
+var _0xd515=['exports','jayson/promise','bluebird','../../config/logger','routing','client','http','Request','request','then','debug','error','message','result','catch','rpc'];(function(_0x4d7f55,_0x596a6f){var _0xb63aca=function(_0x5c51a6){while(--_0x5c51a6){_0x4d7f55['push'](_0x4d7f55['shift']());}};_0xb63aca(++_0x596a6f);}(_0xd515,0xb1));var _0x5d51=function(_0x5a95fa,_0x4a2fc9){_0x5a95fa=_0x5a95fa-0x0;var _0x1a61b8=_0xd515[_0x5a95fa];return _0x1a61b8;};'use strict';var jayson=require(_0x5d51('0x0'));var BPromise=require(_0x5d51('0x1'));var logger=require(_0x5d51('0x2'))(_0x5d51('0x3'));var client=jayson[_0x5d51('0x4')][_0x5d51('0x5')]({'port':0x2329});client[_0x5d51('0x6')]=function(_0x46e5d3,_0x2442bc){return new BPromise(function(_0x51b334,_0x3ba978){return client[_0x5d51('0x7')](_0x46e5d3,_0x2442bc)[_0x5d51('0x8')](function(_0x4252c6){logger[_0x5d51('0x9')]('rpc',_0x5d51('0x3'),_0x46e5d3,_0x2442bc,_0x4252c6);if(_0x4252c6[_0x5d51('0xa')]){logger[_0x5d51('0xa')]('rpc',_0x5d51('0x3'),_0x46e5d3,_0x4252c6[_0x5d51('0xa')]['message'],_0x2442bc);return _0x3ba978(_0x4252c6[_0x5d51('0xa')][_0x5d51('0xb')]);}else{return _0x51b334(_0x4252c6[_0x5d51('0xc')]);}})[_0x5d51('0xd')](function(_0x37410c){logger[_0x5d51('0xa')](_0x5d51('0xe'),_0x5d51('0x3'),_0x46e5d3,_0x37410c,_0x2442bc);return _0x3ba978(_0x37410c);});});};module[_0x5d51('0xf')]=client;
\ No newline at end of file
index 4b58ae6..b086666 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7aa4=['getOpenchannelQueues','initOpenchannelQueues','getChatQueues','initChatQueues','getSmsQueues','initSmsQueues','getFaxQueues','initFaxQueues','getWhatsappQueues','initWhatsappQueues','listen','catch','log','./server','./rpc/user','./rpc/interval','./rpc/chatQueue','./rpc/smsQueue','./rpc/mailQueue','./rpc/faxQueue','./rpc/whatsappQueue','resolve','getAgents','then','getIntervals','initIntervals'];(function(_0x42d501,_0x593932){var _0x3a7eb2=function(_0x2bd521){while(--_0x2bd521){_0x42d501['push'](_0x42d501['shift']());}};_0x3a7eb2(++_0x593932);}(_0x7aa4,0x179));var _0x47aa=function(_0x5badd3,_0x2f4b82){_0x5badd3=_0x5badd3-0x0;var _0x5b3848=_0x7aa4[_0x5badd3];return _0x5b3848;};'use strict';var BPromise=require('bluebird');var server=require(_0x47aa('0x0'));var Realtime=require('./realtime');var user=require(_0x47aa('0x1'));var interval=require(_0x47aa('0x2'));var openchannelQueue=require('./rpc/openchannelQueue');var chatQueue=require(_0x47aa('0x3'));var smsQueue=require(_0x47aa('0x4'));var mailQueue=require(_0x47aa('0x5'));var faxQueue=require(_0x47aa('0x6'));var whatsappQueue=require(_0x47aa('0x7'));var realtime=new Realtime();function initRealtime(){return BPromise[_0x47aa('0x8')]()['then'](user[_0x47aa('0x9')]())[_0x47aa('0xa')](realtime['initAgents']())[_0x47aa('0xa')](interval[_0x47aa('0xb')]())['then'](realtime[_0x47aa('0xc')]())[_0x47aa('0xa')](openchannelQueue[_0x47aa('0xd')]())[_0x47aa('0xa')](realtime[_0x47aa('0xe')]())[_0x47aa('0xa')](chatQueue[_0x47aa('0xf')]())['then'](realtime[_0x47aa('0x10')]())['then'](smsQueue[_0x47aa('0x11')]())[_0x47aa('0xa')](realtime[_0x47aa('0x12')]())[_0x47aa('0xa')](mailQueue['getMailQueues']())['then'](realtime['initMailQueues']())[_0x47aa('0xa')](faxQueue[_0x47aa('0x13')]())['then'](realtime[_0x47aa('0x14')]())[_0x47aa('0xa')](whatsappQueue[_0x47aa('0x15')]())['then'](realtime[_0x47aa('0x16')]())[_0x47aa('0xa')](function(){return realtime;});}function main(){return server[_0x47aa('0x17')](realtime)['then'](function(_0x44c79b){return initRealtime();})[_0x47aa('0xa')](function(_0x1737a1){return setInterval(initRealtime,0x1388);})[_0x47aa('0x18')](function(_0x2f051f){console[_0x47aa('0x19')](_0x2f051f);});}main();
\ No newline at end of file
+var _0x662a=['getMailQueues','initMailQueues','getFaxQueues','initFaxQueues','getWhatsappQueues','initWhatsappQueues','listen','catch','log','./realtime','./rpc/user','./rpc/interval','./rpc/openchannelQueue','./rpc/chatQueue','./rpc/smsQueue','./rpc/mailQueue','./rpc/faxQueue','./rpc/whatsappQueue','resolve','then','getAgents','initAgents','initIntervals','initOpenchannelQueues','getChatQueues','initChatQueues'];(function(_0x1203fb,_0x5e6bef){var _0x1991bd=function(_0x4585a3){while(--_0x4585a3){_0x1203fb['push'](_0x1203fb['shift']());}};_0x1991bd(++_0x5e6bef);}(_0x662a,0x1a9));var _0xa662=function(_0x5f15a1,_0x196cd7){_0x5f15a1=_0x5f15a1-0x0;var _0x40480e=_0x662a[_0x5f15a1];return _0x40480e;};'use strict';var BPromise=require('bluebird');var server=require('./server');var Realtime=require(_0xa662('0x0'));var user=require(_0xa662('0x1'));var interval=require(_0xa662('0x2'));var openchannelQueue=require(_0xa662('0x3'));var chatQueue=require(_0xa662('0x4'));var smsQueue=require(_0xa662('0x5'));var mailQueue=require(_0xa662('0x6'));var faxQueue=require(_0xa662('0x7'));var whatsappQueue=require(_0xa662('0x8'));var realtime=new Realtime();function initRealtime(){return BPromise[_0xa662('0x9')]()[_0xa662('0xa')](user[_0xa662('0xb')]())['then'](realtime[_0xa662('0xc')]())[_0xa662('0xa')](interval['getIntervals']())[_0xa662('0xa')](realtime[_0xa662('0xd')]())[_0xa662('0xa')](openchannelQueue['getOpenchannelQueues']())['then'](realtime[_0xa662('0xe')]())[_0xa662('0xa')](chatQueue[_0xa662('0xf')]())[_0xa662('0xa')](realtime[_0xa662('0x10')]())[_0xa662('0xa')](smsQueue['getSmsQueues']())['then'](realtime['initSmsQueues']())['then'](mailQueue[_0xa662('0x11')]())[_0xa662('0xa')](realtime[_0xa662('0x12')]())[_0xa662('0xa')](faxQueue[_0xa662('0x13')]())[_0xa662('0xa')](realtime[_0xa662('0x14')]())['then'](whatsappQueue[_0xa662('0x15')]())[_0xa662('0xa')](realtime[_0xa662('0x16')]())[_0xa662('0xa')](function(){return realtime;});}function main(){return server[_0xa662('0x17')](realtime)[_0xa662('0xa')](function(_0x2895a5){return initRealtime();})[_0xa662('0xa')](function(_0x3d8d6a){return setInterval(initRealtime,0x1388);})[_0xa662('0x18')](function(_0x42c649){console[_0xa662('0x19')](_0x42c649);});}main();
\ No newline at end of file
index dc3a1ee..7487b85 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(_0x4aeb19,_0x203ac9){var _0x513693=function(_0x48d6c4){while(--_0x48d6c4){_0x4aeb19['push'](_0x4aeb19['shift']());}};_0x513693(++_0x203ac9);}(_0x814b,0x1a2));var _0xb814=function(_0x2bc2a2,_0x51e95f){_0x2bc2a2=_0x2bc2a2-0x0;var _0x20de67=_0x814b[_0x2bc2a2];return _0x20de67;};'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(_0x15070a,_0x522955){var _0x251d50=function(_0x1b4f8e){while(--_0x1b4f8e){_0x15070a['push'](_0x15070a['shift']());}};_0x251d50(++_0x522955);}(_0x326f,0xd1));var _0xf326=function(_0x1fa169,_0x4c51b3){_0x1fa169=_0x1fa169-0x0;var _0xd5860a=_0x326f[_0x1fa169];return _0xd5860a;};'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 bde1937..52d44d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe959=['error','message','result','catch','bluebird','client','http','request'];(function(_0x1cb973,_0x5e1645){var _0x564e7c=function(_0x1b2fa8){while(--_0x1b2fa8){_0x1cb973['push'](_0x1cb973['shift']());}};_0x564e7c(++_0x5e1645);}(_0xe959,0x17c));var _0x9e95=function(_0xfce1e,_0x29cef3){_0xfce1e=_0xfce1e-0x0;var _0x774129=_0xe959[_0xfce1e];return _0x774129;};'use strict';var BPromise=require(_0x9e95('0x0'));var jayson=require('jayson/promise');var client=jayson[_0x9e95('0x1')][_0x9e95('0x2')]({'port':0x232b});function request(_0x318cb7,_0x2e51ab){return new BPromise(function(_0x265ca5,_0x1efd3c){return client[_0x9e95('0x3')](_0x318cb7,_0x2e51ab)['then'](function(_0x24fd67){if(_0x24fd67[_0x9e95('0x4')]){return _0x1efd3c(_0x24fd67[_0x9e95('0x4')][_0x9e95('0x5')]);}else{return _0x265ca5(_0x24fd67[_0x9e95('0x6')]);}})[_0x9e95('0x7')](function(_0x3580c2){return _0x1efd3c(_0x3580c2);});});}exports['sendMailMessage']=function(_0x554f32,_0x27702e){return request('SendMail',{'account':_0x554f32,'message':_0x27702e});};
\ No newline at end of file
+var _0xc052=['then','error','message','catch','jayson/promise'];(function(_0x119d25,_0x588c8){var _0x39cf30=function(_0x31c68c){while(--_0x31c68c){_0x119d25['push'](_0x119d25['shift']());}};_0x39cf30(++_0x588c8);}(_0xc052,0x1bc));var _0x2c05=function(_0x25b49d,_0x317149){_0x25b49d=_0x25b49d-0x0;var _0x4d435b=_0xc052[_0x25b49d];return _0x4d435b;};'use strict';var BPromise=require('bluebird');var jayson=require(_0x2c05('0x0'));var client=jayson['client']['http']({'port':0x232b});function request(_0x143730,_0x5c190a){return new BPromise(function(_0x18fefd,_0x2b0a96){return client['request'](_0x143730,_0x5c190a)[_0x2c05('0x1')](function(_0x14bb5f){if(_0x14bb5f[_0x2c05('0x2')]){return _0x2b0a96(_0x14bb5f[_0x2c05('0x2')][_0x2c05('0x3')]);}else{return _0x18fefd(_0x14bb5f['result']);}})[_0x2c05('0x4')](function(_0x5516ec){return _0x2b0a96(_0x5516ec);});});}exports['sendMailMessage']=function(_0x271e26,_0x1d07b7){return request('SendMail',{'account':_0x271e26,'message':_0x1d07b7});};
\ No newline at end of file
index 490c2db..70495fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1410=['whatsappCurrentCapacity','openchannelStatus','openchannelStatusTime','openchannelCapacity','openchannelCurrentCapacity','busyQueue','chatWaitingInteractions','faxWaitingInteractions','mailWaitingInteractions','openchannelWaitingInteractions','whatsappWaitingInteractions','updateRealtime','prototype','getChannelStatus','CurrentCapacity','Capacity','maxcapacity','working','idle','mail','chat','openchannel','fax','sms','whatsapp','Status','StatusTime','toNumber','format','faxStatusTime','faxCurrentCapacity','whatsappStatusTime','busy','smsWaitingInteractions','md5','emit','user:save','exports','moment','ioredis','redis','localhost','socket.io-emitter','name','online','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','unknown','chatStatusTime','chatCapacity','chatCurrentCapacity','mailStatus','mailCapacity','faxStatus','faxCapacity','smsStatusTime','smsCapacity','smsCurrentCapacity','whatsappStatus','whatsappCapacity'];(function(_0x559cbd,_0xd06ce2){var _0x4313df=function(_0x18cac8){while(--_0x18cac8){_0x559cbd['push'](_0x559cbd['shift']());}};_0x4313df(++_0xd06ce2);}(_0x1410,0x166));var _0x0141=function(_0x23b087,_0x55012f){_0x23b087=_0x23b087-0x0;var _0x366b37=_0x1410[_0x23b087];return _0x366b37;};'use strict';var _=require('lodash');var moment=require(_0x0141('0x0'));var md5=require('md5');var Redis=require(_0x0141('0x1'));var config=require('../../../config/environment');config[_0x0141('0x2')]=_['defaults'](config[_0x0141('0x2')],{'host':_0x0141('0x3'),'port':0x18eb});var io=require(_0x0141('0x4'))(new Redis(config['redis']));function Agent(_0x406627){this['id']=_0x406627['id']||0x0;this[_0x0141('0x5')]=_0x406627[_0x0141('0x5')]||'';this['online']=_0x406627[_0x0141('0x6')]||!![];this[_0x0141('0x7')]=_0x406627[_0x0141('0x7')]||![];this['chatPause']=_0x406627[_0x0141('0x8')]||![];this[_0x0141('0x9')]=_0x406627[_0x0141('0x9')]||![];this['faxPause']=_0x406627[_0x0141('0xa')]||![];this[_0x0141('0xb')]=_0x406627['smsPause']||![];this['openchannelPause']=_0x406627[_0x0141('0xc')]||![];this['chatStatus']=_0x0141('0xd');this[_0x0141('0xe')]=0x0;this[_0x0141('0xf')]=_0x406627[_0x0141('0xf')]||0x0;this[_0x0141('0x10')]=0x0;this[_0x0141('0x11')]=_0x0141('0xd');this['mailStatusTime']=0x0;this['mailCapacity']=_0x406627[_0x0141('0x12')]||0x0;this['mailCurrentCapacity']=0x0;this[_0x0141('0x13')]='unknown';this['faxStatusTime']=0x0;this[_0x0141('0x14')]=_0x406627[_0x0141('0x14')]||0x0;this['faxCurrentCapacity']=0x0;this['smsStatus']=_0x0141('0xd');this[_0x0141('0x15')]=0x0;this[_0x0141('0x16')]=_0x406627['smsCapacity']||0x0;this[_0x0141('0x17')]=0x0;this[_0x0141('0x18')]=_0x0141('0xd');this['whatsappStatusTime']=0x0;this[_0x0141('0x19')]=_0x406627[_0x0141('0x19')]||0x0;this[_0x0141('0x1a')]=0x0;this[_0x0141('0x1b')]=_0x0141('0xd');this[_0x0141('0x1c')]=0x0;this[_0x0141('0x1d')]=_0x406627[_0x0141('0x1d')]||0x0;this[_0x0141('0x1e')]=0x0;this['busy']=![];this[_0x0141('0x1f')]=undefined;this['md5']='';this[_0x0141('0x20')]={};this[_0x0141('0x21')]={};this[_0x0141('0x22')]={};this[_0x0141('0x23')]={};this['smsWaitingInteractions']={};this[_0x0141('0x24')]={};this[_0x0141('0x25')]();}Agent[_0x0141('0x26')][_0x0141('0x27')]=function(_0x28c8db){if(this[_0x28c8db+_0x0141('0x28')]>0x0){if(this[_0x28c8db+'Capacity']>0x0&&this[_0x28c8db+_0x0141('0x28')]>=this[_0x28c8db+_0x0141('0x29')]){return _0x0141('0x2a');}else{return _0x0141('0x2b');}}else{return _0x0141('0x2c');}};Agent[_0x0141('0x26')][_0x0141('0x25')]=function(){var _0x122c51=[_0x0141('0x2d'),_0x0141('0x2e'),_0x0141('0x2f'),_0x0141('0x30'),_0x0141('0x31'),_0x0141('0x32')];for(var _0x3795ec=0x0;_0x3795ec<_0x122c51['length'];_0x3795ec+=0x1){var _0x15338a=this['getChannelStatus'](_0x122c51[_0x3795ec]);if(this[_0x122c51[_0x3795ec]+_0x0141('0x33')]!==_0x15338a){this[_0x122c51[_0x3795ec]+_0x0141('0x34')]=_[_0x0141('0x35')](moment()[_0x0141('0x36')]('x'));}this[_0x122c51[_0x3795ec]+_0x0141('0x33')]=_0x15338a;}var _0x35c635={'id':this['id'],'name':this[_0x0141('0x5')],'online':this[_0x0141('0x6')],'voicePause':this[_0x0141('0x7')],'chatPause':this[_0x0141('0x8')],'mailPause':this[_0x0141('0x9')],'smsPause':this[_0x0141('0xb')],'faxPause':this[_0x0141('0xa')],'openchannelPause':this[_0x0141('0xc')],'chatStatus':this['chatStatus'],'chatStatusTime':this['chatStatusTime'],'chatCapacity':this[_0x0141('0xf')],'chatCurrentCapacity':this[_0x0141('0x10')],'mailStatus':this['mailStatus'],'mailStatusTime':this['mailStatusTime'],'mailCapacity':this['mailCapacity'],'mailCurrentCapacity':this['mailCurrentCapacity'],'faxStatus':this[_0x0141('0x13')],'faxStatusTime':this[_0x0141('0x37')],'faxCapacity':this[_0x0141('0x14')],'faxCurrentCapacity':this[_0x0141('0x38')],'smsStatus':this['smsStatus'],'smsStatusTime':this[_0x0141('0x15')],'smsCapacity':this['smsCapacity'],'smsCurrentCapacity':this[_0x0141('0x17')],'whatsappStatus':this['whatsappStatus'],'whatsappStatusTime':this[_0x0141('0x39')],'whatsappCapacity':this[_0x0141('0x19')],'whatsappCurrentCapacity':this['whatsappCurrentCapacity'],'openchannelStatus':this[_0x0141('0x1b')],'openchannelStatusTime':this[_0x0141('0x1c')],'openchannelCapacity':this[_0x0141('0x1d')],'openchannelCurrentCapacity':this[_0x0141('0x1e')],'busy':this[_0x0141('0x3a')],'busyQueue':this[_0x0141('0x1f')],'chatWaitingInteractions':this[_0x0141('0x20')],'faxWaitingInteractions':this[_0x0141('0x21')],'mailWaitingInteractions':this[_0x0141('0x22')],'openchannelWaitingInteractions':this[_0x0141('0x23')],'smsWaitingInteractions':this[_0x0141('0x3b')],'whatsappWaitingInteractions':this['whatsappWaitingInteractions']};var _0x2f3ab6=md5(JSON['stringify'](_0x35c635));if(this[_0x0141('0x3c')]!==_0x2f3ab6){this[_0x0141('0x3c')]=_0x2f3ab6;io[_0x0141('0x3d')](_0x0141('0x3e'),_0x35c635);}};module[_0x0141('0x3f')]=Agent;
\ No newline at end of file
+var _0xa0e2=['defaults','socket.io-emitter','name','online','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','chatStatusTime','chatCapacity','chatCurrentCapacity','mailStatus','unknown','mailStatusTime','mailCapacity','faxStatus','faxStatusTime','faxCapacity','faxCurrentCapacity','smsStatus','smsStatusTime','smsCapacity','smsCurrentCapacity','whatsappStatus','whatsappCapacity','whatsappCurrentCapacity','openchannelStatus','openchannelCapacity','openchannelCurrentCapacity','busy','busyQueue','chatWaitingInteractions','faxWaitingInteractions','openchannelWaitingInteractions','smsWaitingInteractions','whatsappWaitingInteractions','updateRealtime','CurrentCapacity','Capacity','maxcapacity','working','idle','prototype','mail','openchannel','fax','whatsapp','length','getChannelStatus','StatusTime','toNumber','format','Status','chatStatus','mailCurrentCapacity','openchannelStatusTime','mailWaitingInteractions','user:save','lodash','md5','ioredis','redis'];(function(_0x3c6297,_0x1f7cc2){var _0x307f51=function(_0x44660e){while(--_0x44660e){_0x3c6297['push'](_0x3c6297['shift']());}};_0x307f51(++_0x1f7cc2);}(_0xa0e2,0x17c));var _0x2a0e=function(_0x4cbc97,_0x553a7f){_0x4cbc97=_0x4cbc97-0x0;var _0x1ab60e=_0xa0e2[_0x4cbc97];return _0x1ab60e;};'use strict';var _=require(_0x2a0e('0x0'));var moment=require('moment');var md5=require(_0x2a0e('0x1'));var Redis=require(_0x2a0e('0x2'));var config=require('../../../config/environment');config[_0x2a0e('0x3')]=_[_0x2a0e('0x4')](config[_0x2a0e('0x3')],{'host':'localhost','port':0x18eb});var io=require(_0x2a0e('0x5'))(new Redis(config[_0x2a0e('0x3')]));function Agent(_0x43e0c8){this['id']=_0x43e0c8['id']||0x0;this[_0x2a0e('0x6')]=_0x43e0c8[_0x2a0e('0x6')]||'';this[_0x2a0e('0x7')]=_0x43e0c8['online']||!![];this[_0x2a0e('0x8')]=_0x43e0c8[_0x2a0e('0x8')]||![];this[_0x2a0e('0x9')]=_0x43e0c8[_0x2a0e('0x9')]||![];this[_0x2a0e('0xa')]=_0x43e0c8['mailPause']||![];this['faxPause']=_0x43e0c8[_0x2a0e('0xb')]||![];this[_0x2a0e('0xc')]=_0x43e0c8[_0x2a0e('0xc')]||![];this[_0x2a0e('0xd')]=_0x43e0c8['openchannelPause']||![];this['chatStatus']='unknown';this[_0x2a0e('0xe')]=0x0;this[_0x2a0e('0xf')]=_0x43e0c8[_0x2a0e('0xf')]||0x0;this[_0x2a0e('0x10')]=0x0;this[_0x2a0e('0x11')]=_0x2a0e('0x12');this[_0x2a0e('0x13')]=0x0;this[_0x2a0e('0x14')]=_0x43e0c8['mailCapacity']||0x0;this['mailCurrentCapacity']=0x0;this[_0x2a0e('0x15')]=_0x2a0e('0x12');this[_0x2a0e('0x16')]=0x0;this[_0x2a0e('0x17')]=_0x43e0c8[_0x2a0e('0x17')]||0x0;this[_0x2a0e('0x18')]=0x0;this[_0x2a0e('0x19')]=_0x2a0e('0x12');this[_0x2a0e('0x1a')]=0x0;this[_0x2a0e('0x1b')]=_0x43e0c8[_0x2a0e('0x1b')]||0x0;this[_0x2a0e('0x1c')]=0x0;this[_0x2a0e('0x1d')]='unknown';this['whatsappStatusTime']=0x0;this[_0x2a0e('0x1e')]=_0x43e0c8[_0x2a0e('0x1e')]||0x0;this[_0x2a0e('0x1f')]=0x0;this[_0x2a0e('0x20')]=_0x2a0e('0x12');this['openchannelStatusTime']=0x0;this['openchannelCapacity']=_0x43e0c8[_0x2a0e('0x21')]||0x0;this[_0x2a0e('0x22')]=0x0;this[_0x2a0e('0x23')]=![];this[_0x2a0e('0x24')]=undefined;this['md5']='';this[_0x2a0e('0x25')]={};this[_0x2a0e('0x26')]={};this['mailWaitingInteractions']={};this[_0x2a0e('0x27')]={};this[_0x2a0e('0x28')]={};this[_0x2a0e('0x29')]={};this[_0x2a0e('0x2a')]();}Agent['prototype']['getChannelStatus']=function(_0x4cb66b){if(this[_0x4cb66b+_0x2a0e('0x2b')]>0x0){if(this[_0x4cb66b+'Capacity']>0x0&&this[_0x4cb66b+'CurrentCapacity']>=this[_0x4cb66b+_0x2a0e('0x2c')]){return _0x2a0e('0x2d');}else{return _0x2a0e('0x2e');}}else{return _0x2a0e('0x2f');}};Agent[_0x2a0e('0x30')][_0x2a0e('0x2a')]=function(){var _0x14b962=[_0x2a0e('0x31'),'chat',_0x2a0e('0x32'),_0x2a0e('0x33'),'sms',_0x2a0e('0x34')];for(var _0x16b65b=0x0;_0x16b65b<_0x14b962[_0x2a0e('0x35')];_0x16b65b+=0x1){var _0x2284ee=this[_0x2a0e('0x36')](_0x14b962[_0x16b65b]);if(this[_0x14b962[_0x16b65b]+'Status']!==_0x2284ee){this[_0x14b962[_0x16b65b]+_0x2a0e('0x37')]=_[_0x2a0e('0x38')](moment()[_0x2a0e('0x39')]('x'));}this[_0x14b962[_0x16b65b]+_0x2a0e('0x3a')]=_0x2284ee;}var _0x45783b={'id':this['id'],'name':this['name'],'online':this[_0x2a0e('0x7')],'voicePause':this[_0x2a0e('0x8')],'chatPause':this[_0x2a0e('0x9')],'mailPause':this['mailPause'],'smsPause':this[_0x2a0e('0xc')],'faxPause':this['faxPause'],'openchannelPause':this[_0x2a0e('0xd')],'chatStatus':this[_0x2a0e('0x3b')],'chatStatusTime':this['chatStatusTime'],'chatCapacity':this['chatCapacity'],'chatCurrentCapacity':this['chatCurrentCapacity'],'mailStatus':this['mailStatus'],'mailStatusTime':this[_0x2a0e('0x13')],'mailCapacity':this[_0x2a0e('0x14')],'mailCurrentCapacity':this[_0x2a0e('0x3c')],'faxStatus':this[_0x2a0e('0x15')],'faxStatusTime':this[_0x2a0e('0x16')],'faxCapacity':this[_0x2a0e('0x17')],'faxCurrentCapacity':this['faxCurrentCapacity'],'smsStatus':this[_0x2a0e('0x19')],'smsStatusTime':this[_0x2a0e('0x1a')],'smsCapacity':this['smsCapacity'],'smsCurrentCapacity':this[_0x2a0e('0x1c')],'whatsappStatus':this[_0x2a0e('0x1d')],'whatsappStatusTime':this['whatsappStatusTime'],'whatsappCapacity':this[_0x2a0e('0x1e')],'whatsappCurrentCapacity':this[_0x2a0e('0x1f')],'openchannelStatus':this[_0x2a0e('0x20')],'openchannelStatusTime':this[_0x2a0e('0x3d')],'openchannelCapacity':this['openchannelCapacity'],'openchannelCurrentCapacity':this[_0x2a0e('0x22')],'busy':this[_0x2a0e('0x23')],'busyQueue':this['busyQueue'],'chatWaitingInteractions':this[_0x2a0e('0x25')],'faxWaitingInteractions':this[_0x2a0e('0x26')],'mailWaitingInteractions':this[_0x2a0e('0x3e')],'openchannelWaitingInteractions':this[_0x2a0e('0x27')],'smsWaitingInteractions':this[_0x2a0e('0x28')],'whatsappWaitingInteractions':this[_0x2a0e('0x29')]};var _0x4d2db1=md5(JSON['stringify'](_0x45783b));if(this[_0x2a0e('0x1')]!==_0x4d2db1){this['md5']=_0x4d2db1;io['emit'](_0x2a0e('0x3f'),_0x45783b);}};module['exports']=Agent;
\ No newline at end of file
index 1194ef6..8683c68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16bc=['md5','../../../config/environment','redis','defaults','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','map','_rr','loggedIn','paused','length','chatPause','available','stringify','format','chat:queue:%s','exports','lodash'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x16bc,0xa1));var _0xc16b=function(_0x12f4d8,_0x1f6d82){_0x12f4d8=_0x12f4d8-0x0;var _0x265413=_0x16bc[_0x12f4d8];return _0x265413;};'use strict';var _=require(_0xc16b('0x0'));var md5=require(_0xc16b('0x1'));var util=require('util');var Redis=require('ioredis');var config=require(_0xc16b('0x2'));config[_0xc16b('0x3')]=_[_0xc16b('0x4')](config[_0xc16b('0x3')],{'host':'localhost','port':0x18eb});var io=require(_0xc16b('0x5'))(new Redis(config[_0xc16b('0x3')]));function ChatQueue(_0x322e58){this['id']=_0x322e58['id']||0x0;this[_0xc16b('0x6')]=_0x322e58[_0xc16b('0x6')]||'';this['timeout']=_0x322e58[_0xc16b('0x7')]||0xa;this[_0xc16b('0x8')]=_0x322e58[_0xc16b('0x8')]||_0xc16b('0x9');this[_0xc16b('0xa')]=_0x322e58[_0xc16b('0xa')];this[_0xc16b('0xb')]={};this[_0xc16b('0xc')]=0x0;this[_0xc16b('0x1')]='';this[_0xc16b('0xd')]();this[_0xc16b('0xe')]();}ChatQueue[_0xc16b('0xf')][_0xc16b('0xd')]=function(){var _0x2b8468=this[_0xc16b('0xb')]['_rr'];this[_0xc16b('0xb')]=_[_0xc16b('0x10')](this[_0xc16b('0xa')],'id');this[_0xc16b('0xb')][_0xc16b('0x11')]=_0x2b8468;};ChatQueue[_0xc16b('0xf')][_0xc16b('0xe')]=function(){this[_0xc16b('0x12')]=0x0;this[_0xc16b('0x13')]=0x0;for(var _0x5ae771=0x0;_0x5ae771<this[_0xc16b('0xa')][_0xc16b('0x14')];_0x5ae771+=0x1){if(this['Agents'][_0x5ae771]['online']){this[_0xc16b('0x12')]+=0x1;}if(this[_0xc16b('0xa')][_0x5ae771][_0xc16b('0x15')]){this['paused']+=0x1;}}this[_0xc16b('0x16')]=this[_0xc16b('0x12')]-this[_0xc16b('0x13')];this['available']=this[_0xc16b('0x16')]>=0x0?this[_0xc16b('0x16')]:0x0;var _0xd95ff4={'id':this['id'],'available':this['available'],'loggedIn':this[_0xc16b('0x12')],'name':this[_0xc16b('0x6')],'paused':this[_0xc16b('0x13')],'waiting':this[_0xc16b('0xc')]};var _0x49fb58=md5(JSON[_0xc16b('0x17')](_0xd95ff4));if(this[_0xc16b('0x1')]!==_0x49fb58){this[_0xc16b('0x1')]=_0x49fb58;io['to'](util[_0xc16b('0x18')](_0xc16b('0x19'),_0xd95ff4[_0xc16b('0x6')]))['emit']('chat_queue:save',_0xd95ff4);}};module[_0xc16b('0x1a')]=ChatQueue;
\ No newline at end of file
+var _0x962f=['Agents','waiting','updateRouting','prototype','mapAgentsId','_rr','updateRealtime','loggedIn','paused','length','online','chatPause','available','stringify','format','chat:queue:%s','chat_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall'];(function(_0x374748,_0x3b808f){var _0x58dd25=function(_0x570e32){while(--_0x570e32){_0x374748['push'](_0x374748['shift']());}};_0x58dd25(++_0x3b808f);}(_0x962f,0x8e));var _0xf962=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x962f[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0xf962('0x0'));var md5=require(_0xf962('0x1'));var util=require(_0xf962('0x2'));var Redis=require(_0xf962('0x3'));var config=require(_0xf962('0x4'));config[_0xf962('0x5')]=_[_0xf962('0x6')](config[_0xf962('0x5')],{'host':_0xf962('0x7'),'port':0x18eb});var io=require(_0xf962('0x8'))(new Redis(config[_0xf962('0x5')]));function ChatQueue(_0x39584e){this['id']=_0x39584e['id']||0x0;this['name']=_0x39584e[_0xf962('0x9')]||'';this[_0xf962('0xa')]=_0x39584e['timeout']||0xa;this[_0xf962('0xb')]=_0x39584e[_0xf962('0xb')]||_0xf962('0xc');this['Agents']=_0x39584e[_0xf962('0xd')];this['mapAgentsId']={};this[_0xf962('0xe')]=0x0;this['md5']='';this[_0xf962('0xf')]();this['updateRealtime']();}ChatQueue[_0xf962('0x10')][_0xf962('0xf')]=function(){var _0x59055f=this[_0xf962('0x11')][_0xf962('0x12')];this['mapAgentsId']=_['map'](this['Agents'],'id');this[_0xf962('0x11')][_0xf962('0x12')]=_0x59055f;};ChatQueue[_0xf962('0x10')][_0xf962('0x13')]=function(){this[_0xf962('0x14')]=0x0;this[_0xf962('0x15')]=0x0;for(var _0x3970cf=0x0;_0x3970cf<this[_0xf962('0xd')][_0xf962('0x16')];_0x3970cf+=0x1){if(this['Agents'][_0x3970cf][_0xf962('0x17')]){this[_0xf962('0x14')]+=0x1;}if(this['Agents'][_0x3970cf][_0xf962('0x18')]){this[_0xf962('0x15')]+=0x1;}}this['available']=this['loggedIn']-this[_0xf962('0x15')];this['available']=this[_0xf962('0x19')]>=0x0?this[_0xf962('0x19')]:0x0;var _0x5b24bb={'id':this['id'],'available':this['available'],'loggedIn':this['loggedIn'],'name':this['name'],'paused':this['paused'],'waiting':this[_0xf962('0xe')]};var _0xc16eb6=md5(JSON[_0xf962('0x1a')](_0x5b24bb));if(this[_0xf962('0x1')]!==_0xc16eb6){this[_0xf962('0x1')]=_0xc16eb6;io['to'](util[_0xf962('0x1b')](_0xf962('0x1c'),_0x5b24bb[_0xf962('0x9')]))['emit'](_0xf962('0x1d'),_0x5b24bb);}};module[_0xf962('0x1e')]=ChatQueue;
\ No newline at end of file
index e370bc6..0193bab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x105c=['beepall','Agents','waiting','updateRouting','updateRealtime','mapAgentsId','_rr','prototype','paused','length','online','loggedIn','faxPause','available','name','stringify','format','fax:queue:%s','fax_queue:save','lodash','md5','util','ioredis','../../../config/environment','defaults','socket.io-emitter','redis','timeout','strategy'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x105c,0x1c6));var _0xc105=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x105c[_0x3947c9];return _0x2e7871;};'use strict';var _=require(_0xc105('0x0'));var md5=require(_0xc105('0x1'));var util=require(_0xc105('0x2'));var Redis=require(_0xc105('0x3'));var config=require(_0xc105('0x4'));config['redis']=_[_0xc105('0x5')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xc105('0x6'))(new Redis(config[_0xc105('0x7')]));function FaxQueue(_0x4d997b){this['id']=_0x4d997b['id']||0x0;this['name']=_0x4d997b['name']||'';this[_0xc105('0x8')]=_0x4d997b[_0xc105('0x8')]||0xa;this[_0xc105('0x9')]=_0x4d997b['strategy']||_0xc105('0xa');this['Agents']=_0x4d997b[_0xc105('0xb')];this['mapAgentsId']={};this[_0xc105('0xc')]=0x0;this[_0xc105('0x1')]='';this[_0xc105('0xd')]();this[_0xc105('0xe')]();}FaxQueue['prototype'][_0xc105('0xd')]=function(){var _0x3cad5b=this[_0xc105('0xf')][_0xc105('0x10')];this[_0xc105('0xf')]=_['map'](this[_0xc105('0xb')],'id');this[_0xc105('0xf')][_0xc105('0x10')]=_0x3cad5b;};FaxQueue[_0xc105('0x11')][_0xc105('0xe')]=function(){this['loggedIn']=0x0;this[_0xc105('0x12')]=0x0;for(var _0x41a1ef=0x0;_0x41a1ef<this[_0xc105('0xb')][_0xc105('0x13')];_0x41a1ef+=0x1){if(this['Agents'][_0x41a1ef][_0xc105('0x14')]){this[_0xc105('0x15')]+=0x1;}if(this[_0xc105('0xb')][_0x41a1ef][_0xc105('0x16')]){this[_0xc105('0x12')]+=0x1;}}this[_0xc105('0x17')]=this[_0xc105('0x15')]-this[_0xc105('0x12')];this[_0xc105('0x17')]=this[_0xc105('0x17')]>=0x0?this[_0xc105('0x17')]:0x0;var _0x2336c4={'id':this['id'],'available':this[_0xc105('0x17')],'loggedIn':this[_0xc105('0x15')],'name':this[_0xc105('0x18')],'paused':this[_0xc105('0x12')],'waiting':this[_0xc105('0xc')]};var _0x1be752=md5(JSON[_0xc105('0x19')](_0x2336c4));if(this['md5']!==_0x1be752){this[_0xc105('0x1')]=_0x1be752;io['to'](util[_0xc105('0x1a')](_0xc105('0x1b'),_0x2336c4['name']))['emit'](_0xc105('0x1c'),_0x2336c4);}};module['exports']=FaxQueue;
\ No newline at end of file
+var _0xc570=['_rr','map','loggedIn','paused','length','online','faxPause','available','stringify','format','fax:queue:%s','emit','fax_queue:save','lodash','md5','util','ioredis','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','updateRouting','updateRealtime','prototype'];(function(_0x3ea030,_0x155acb){var _0x5832b8=function(_0x1a11f4){while(--_0x1a11f4){_0x3ea030['push'](_0x3ea030['shift']());}};_0x5832b8(++_0x155acb);}(_0xc570,0x193));var _0x0c57=function(_0x4baae2,_0x487ab6){_0x4baae2=_0x4baae2-0x0;var _0x1a2285=_0xc570[_0x4baae2];return _0x1a2285;};'use strict';var _=require(_0x0c57('0x0'));var md5=require(_0x0c57('0x1'));var util=require(_0x0c57('0x2'));var Redis=require(_0x0c57('0x3'));var config=require('../../../config/environment');config[_0x0c57('0x4')]=_[_0x0c57('0x5')](config['redis'],{'host':_0x0c57('0x6'),'port':0x18eb});var io=require(_0x0c57('0x7'))(new Redis(config['redis']));function FaxQueue(_0x37d003){this['id']=_0x37d003['id']||0x0;this[_0x0c57('0x8')]=_0x37d003[_0x0c57('0x8')]||'';this[_0x0c57('0x9')]=_0x37d003[_0x0c57('0x9')]||0xa;this[_0x0c57('0xa')]=_0x37d003[_0x0c57('0xa')]||_0x0c57('0xb');this['Agents']=_0x37d003[_0x0c57('0xc')];this[_0x0c57('0xd')]={};this['waiting']=0x0;this['md5']='';this[_0x0c57('0xe')]();this[_0x0c57('0xf')]();}FaxQueue[_0x0c57('0x10')]['updateRouting']=function(){var _0x4ed6ab=this[_0x0c57('0xd')][_0x0c57('0x11')];this[_0x0c57('0xd')]=_[_0x0c57('0x12')](this['Agents'],'id');this[_0x0c57('0xd')][_0x0c57('0x11')]=_0x4ed6ab;};FaxQueue['prototype']['updateRealtime']=function(){this[_0x0c57('0x13')]=0x0;this[_0x0c57('0x14')]=0x0;for(var _0x1ee34f=0x0;_0x1ee34f<this[_0x0c57('0xc')][_0x0c57('0x15')];_0x1ee34f+=0x1){if(this[_0x0c57('0xc')][_0x1ee34f][_0x0c57('0x16')]){this[_0x0c57('0x13')]+=0x1;}if(this['Agents'][_0x1ee34f][_0x0c57('0x17')]){this[_0x0c57('0x14')]+=0x1;}}this[_0x0c57('0x18')]=this[_0x0c57('0x13')]-this[_0x0c57('0x14')];this[_0x0c57('0x18')]=this[_0x0c57('0x18')]>=0x0?this[_0x0c57('0x18')]:0x0;var _0x826be9={'id':this['id'],'available':this[_0x0c57('0x18')],'loggedIn':this[_0x0c57('0x13')],'name':this[_0x0c57('0x8')],'paused':this[_0x0c57('0x14')],'waiting':this['waiting']};var _0x20fa10=md5(JSON[_0x0c57('0x19')](_0x826be9));if(this[_0x0c57('0x1')]!==_0x20fa10){this['md5']=_0x20fa10;io['to'](util[_0x0c57('0x1a')](_0x0c57('0x1b'),_0x826be9[_0x0c57('0x8')]))[_0x0c57('0x1c')](_0x0c57('0x1d'),_0x826be9);}};module['exports']=FaxQueue;
\ No newline at end of file
index 84dcede..a6f9be5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8143=['exports','name','Intervals'];(function(_0x8767d2,_0x1279e4){var _0x421bec=function(_0x14febc){while(--_0x14febc){_0x8767d2['push'](_0x8767d2['shift']());}};_0x421bec(++_0x1279e4);}(_0x8143,0x1a5));var _0x3814=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x8143[_0x19950b];return _0x3c6b41;};'use strict';function Interval(_0x5e923a){this['id']=_0x5e923a['id']||0x0;this[_0x3814('0x0')]=_0x5e923a['name']||'';this[_0x3814('0x1')]=_0x5e923a[_0x3814('0x1')]||{};}module[_0x3814('0x2')]=Interval;
\ No newline at end of file
+var _0x2997=['name','Intervals','exports'];(function(_0x5eda19,_0x583393){var _0x2f1283=function(_0x2bafed){while(--_0x2bafed){_0x5eda19['push'](_0x5eda19['shift']());}};_0x2f1283(++_0x583393);}(_0x2997,0x189));var _0x7299=function(_0x3f47bd,_0xa1b88c){_0x3f47bd=_0x3f47bd-0x0;var _0x133064=_0x2997[_0x3f47bd];return _0x133064;};'use strict';function Interval(_0x138760){this['id']=_0x138760['id']||0x0;this['name']=_0x138760[_0x7299('0x0')]||'';this[_0x7299('0x1')]=_0x138760[_0x7299('0x1')]||{};}module[_0x7299('0x2')]=Interval;
\ No newline at end of file
index 58d2544..26fad16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf93b=['mapAgentsId','map','Agents','paused','length','loggedIn','mailPause','available','stringify','mail:queue:%s','name','emit','mail_queue:save','exports','md5','util','ioredis','../../../config/environment','redis','localhost','socket.io-emitter','timeout','strategy','beepall','waiting','updateRouting','updateRealtime','prototype','_rr'];(function(_0x13cd29,_0x417cf7){var _0x111d55=function(_0x5245aa){while(--_0x5245aa){_0x13cd29['push'](_0x13cd29['shift']());}};_0x111d55(++_0x417cf7);}(_0xf93b,0x65));var _0xbf93=function(_0x3a9635,_0x1ab817){_0x3a9635=_0x3a9635-0x0;var _0x10d08c=_0xf93b[_0x3a9635];return _0x10d08c;};'use strict';var _=require('lodash');var md5=require(_0xbf93('0x0'));var util=require(_0xbf93('0x1'));var Redis=require(_0xbf93('0x2'));var config=require(_0xbf93('0x3'));config[_0xbf93('0x4')]=_['defaults'](config[_0xbf93('0x4')],{'host':_0xbf93('0x5'),'port':0x18eb});var io=require(_0xbf93('0x6'))(new Redis(config[_0xbf93('0x4')]));function MailQueue(_0x36298c){this['id']=_0x36298c['id']||0x0;this['name']=_0x36298c['name']||'';this[_0xbf93('0x7')]=_0x36298c[_0xbf93('0x7')]||0xa;this[_0xbf93('0x8')]=_0x36298c[_0xbf93('0x8')]||_0xbf93('0x9');this['Agents']=_0x36298c['Agents'];this['mapAgentsId']={};this[_0xbf93('0xa')]=0x0;this['md5']='';this[_0xbf93('0xb')]();this[_0xbf93('0xc')]();}MailQueue[_0xbf93('0xd')]['updateRouting']=function(){var _0x9c054c=this['mapAgentsId'][_0xbf93('0xe')];this[_0xbf93('0xf')]=_[_0xbf93('0x10')](this[_0xbf93('0x11')],'id');this['mapAgentsId'][_0xbf93('0xe')]=_0x9c054c;};MailQueue[_0xbf93('0xd')][_0xbf93('0xc')]=function(){this['loggedIn']=0x0;this[_0xbf93('0x12')]=0x0;for(var _0x5bca29=0x0;_0x5bca29<this[_0xbf93('0x11')][_0xbf93('0x13')];_0x5bca29+=0x1){if(this[_0xbf93('0x11')][_0x5bca29]['online']){this[_0xbf93('0x14')]+=0x1;}if(this[_0xbf93('0x11')][_0x5bca29][_0xbf93('0x15')]){this[_0xbf93('0x12')]+=0x1;}}this[_0xbf93('0x16')]=this[_0xbf93('0x14')]-this['paused'];this[_0xbf93('0x16')]=this[_0xbf93('0x16')]>=0x0?this[_0xbf93('0x16')]:0x0;var _0x3412a6={'id':this['id'],'available':this[_0xbf93('0x16')],'loggedIn':this[_0xbf93('0x14')],'name':this['name'],'paused':this[_0xbf93('0x12')],'waiting':this[_0xbf93('0xa')]};var _0x25a1f1=md5(JSON[_0xbf93('0x17')](_0x3412a6));if(this[_0xbf93('0x0')]!==_0x25a1f1){this[_0xbf93('0x0')]=_0x25a1f1;io['to'](util['format'](_0xbf93('0x18'),_0x3412a6[_0xbf93('0x19')]))[_0xbf93('0x1a')](_0xbf93('0x1b'),_0x3412a6);}};module[_0xbf93('0x1c')]=MailQueue;
\ No newline at end of file
+var _0xc67e=['name','timeout','strategy','beepall','Agents','mapAgentsId','updateRouting','updateRealtime','prototype','_rr','map','loggedIn','length','online','mailPause','available','waiting','stringify','format','mail:queue:%s','emit','exports','lodash','md5','util','redis','localhost','socket.io-emitter'];(function(_0x37656f,_0x350ac6){var _0x5cd9d8=function(_0x12e27e){while(--_0x12e27e){_0x37656f['push'](_0x37656f['shift']());}};_0x5cd9d8(++_0x350ac6);}(_0xc67e,0xda));var _0xec67=function(_0x580fd1,_0xc5d0b2){_0x580fd1=_0x580fd1-0x0;var _0x12facb=_0xc67e[_0x580fd1];return _0x12facb;};'use strict';var _=require(_0xec67('0x0'));var md5=require(_0xec67('0x1'));var util=require(_0xec67('0x2'));var Redis=require('ioredis');var config=require('../../../config/environment');config[_0xec67('0x3')]=_['defaults'](config['redis'],{'host':_0xec67('0x4'),'port':0x18eb});var io=require(_0xec67('0x5'))(new Redis(config[_0xec67('0x3')]));function MailQueue(_0x4da999){this['id']=_0x4da999['id']||0x0;this[_0xec67('0x6')]=_0x4da999['name']||'';this[_0xec67('0x7')]=_0x4da999[_0xec67('0x7')]||0xa;this[_0xec67('0x8')]=_0x4da999[_0xec67('0x8')]||_0xec67('0x9');this[_0xec67('0xa')]=_0x4da999['Agents'];this[_0xec67('0xb')]={};this['waiting']=0x0;this['md5']='';this[_0xec67('0xc')]();this[_0xec67('0xd')]();}MailQueue[_0xec67('0xe')][_0xec67('0xc')]=function(){var _0x1a08d5=this[_0xec67('0xb')][_0xec67('0xf')];this[_0xec67('0xb')]=_[_0xec67('0x10')](this[_0xec67('0xa')],'id');this[_0xec67('0xb')][_0xec67('0xf')]=_0x1a08d5;};MailQueue['prototype'][_0xec67('0xd')]=function(){this[_0xec67('0x11')]=0x0;this['paused']=0x0;for(var _0x4a3c9b=0x0;_0x4a3c9b<this[_0xec67('0xa')][_0xec67('0x12')];_0x4a3c9b+=0x1){if(this[_0xec67('0xa')][_0x4a3c9b][_0xec67('0x13')]){this[_0xec67('0x11')]+=0x1;}if(this[_0xec67('0xa')][_0x4a3c9b][_0xec67('0x14')]){this['paused']+=0x1;}}this[_0xec67('0x15')]=this['loggedIn']-this['paused'];this[_0xec67('0x15')]=this[_0xec67('0x15')]>=0x0?this[_0xec67('0x15')]:0x0;var _0x4a8201={'id':this['id'],'available':this[_0xec67('0x15')],'loggedIn':this[_0xec67('0x11')],'name':this[_0xec67('0x6')],'paused':this['paused'],'waiting':this[_0xec67('0x16')]};var _0x434f77=md5(JSON[_0xec67('0x17')](_0x4a8201));if(this[_0xec67('0x1')]!==_0x434f77){this[_0xec67('0x1')]=_0x434f77;io['to'](util[_0xec67('0x18')](_0xec67('0x19'),_0x4a8201[_0xec67('0x6')]))[_0xec67('0x1a')]('mail_queue:save',_0x4a8201);}};module[_0xec67('0x1b')]=MailQueue;
\ No newline at end of file
index 59627d9..5f51f7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['available','stringify','openchannel:queue:%s','openchannel_queue:save','exports','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','waiting','updateRouting','prototype','mapAgentsId','map','_rr','updateRealtime','loggedIn','paused','length','online'];(function(_0x40dd56,_0x726ca5){var _0x4f850f=function(_0x5f899e){while(--_0x5f899e){_0x40dd56['push'](_0x40dd56['shift']());}};_0x4f850f(++_0x726ca5);}(_0x1261,0x144));var _0x1126=function(_0x4cfb78,_0x4c1da6){_0x4cfb78=_0x4cfb78-0x0;var _0xc1250e=_0x1261[_0x4cfb78];return _0xc1250e;};'use strict';var _=require('lodash');var md5=require(_0x1126('0x0'));var util=require(_0x1126('0x1'));var Redis=require(_0x1126('0x2'));var config=require(_0x1126('0x3'));config[_0x1126('0x4')]=_[_0x1126('0x5')](config[_0x1126('0x4')],{'host':_0x1126('0x6'),'port':0x18eb});var io=require(_0x1126('0x7'))(new Redis(config[_0x1126('0x4')]));function OpenchannelQueue(_0x5a2189){this['id']=_0x5a2189['id']||0x0;this['name']=_0x5a2189[_0x1126('0x8')]||'';this[_0x1126('0x9')]=_0x5a2189['timeout']||0xa;this[_0x1126('0xa')]=_0x5a2189[_0x1126('0xa')]||_0x1126('0xb');this[_0x1126('0xc')]=_0x5a2189[_0x1126('0xc')];this['mapAgentsId']={};this[_0x1126('0xd')]=0x0;this[_0x1126('0x0')]='';this[_0x1126('0xe')]();this['updateRealtime']();}OpenchannelQueue[_0x1126('0xf')]['updateRouting']=function(){var _0x52ef15=this[_0x1126('0x10')]['_rr'];this[_0x1126('0x10')]=_[_0x1126('0x11')](this[_0x1126('0xc')],'id');this[_0x1126('0x10')][_0x1126('0x12')]=_0x52ef15;};OpenchannelQueue[_0x1126('0xf')][_0x1126('0x13')]=function(){this[_0x1126('0x14')]=0x0;this[_0x1126('0x15')]=0x0;for(var _0x53a8f0=0x0;_0x53a8f0<this['Agents'][_0x1126('0x16')];_0x53a8f0+=0x1){if(this[_0x1126('0xc')][_0x53a8f0][_0x1126('0x17')]){this['loggedIn']+=0x1;}if(this[_0x1126('0xc')][_0x53a8f0]['openchannelPause']){this[_0x1126('0x15')]+=0x1;}}this[_0x1126('0x18')]=this[_0x1126('0x14')]-this['paused'];this[_0x1126('0x18')]=this[_0x1126('0x18')]>=0x0?this['available']:0x0;var _0x4d2b38={'id':this['id'],'available':this[_0x1126('0x18')],'loggedIn':this[_0x1126('0x14')],'name':this['name'],'paused':this['paused'],'waiting':this[_0x1126('0xd')]};var _0x58b109=md5(JSON[_0x1126('0x19')](_0x4d2b38));if(this[_0x1126('0x0')]!==_0x58b109){this[_0x1126('0x0')]=_0x58b109;io['to'](util['format'](_0x1126('0x1a'),_0x4d2b38['name']))['emit'](_0x1126('0x1b'),_0x4d2b38);}};module[_0x1126('0x1c')]=OpenchannelQueue;
\ No newline at end of file
+var _0x1261=['available','stringify','openchannel:queue:%s','openchannel_queue:save','exports','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','waiting','updateRouting','prototype','mapAgentsId','map','_rr','updateRealtime','loggedIn','paused','length','online'];(function(_0x513545,_0x158f2e){var _0x18b7c5=function(_0x58514c){while(--_0x58514c){_0x513545['push'](_0x513545['shift']());}};_0x18b7c5(++_0x158f2e);}(_0x1261,0x144));var _0x1126=function(_0x2baca1,_0x2f3557){_0x2baca1=_0x2baca1-0x0;var _0x9aa62a=_0x1261[_0x2baca1];return _0x9aa62a;};'use strict';var _=require('lodash');var md5=require(_0x1126('0x0'));var util=require(_0x1126('0x1'));var Redis=require(_0x1126('0x2'));var config=require(_0x1126('0x3'));config[_0x1126('0x4')]=_[_0x1126('0x5')](config[_0x1126('0x4')],{'host':_0x1126('0x6'),'port':0x18eb});var io=require(_0x1126('0x7'))(new Redis(config[_0x1126('0x4')]));function OpenchannelQueue(_0x5a2189){this['id']=_0x5a2189['id']||0x0;this['name']=_0x5a2189[_0x1126('0x8')]||'';this[_0x1126('0x9')]=_0x5a2189['timeout']||0xa;this[_0x1126('0xa')]=_0x5a2189[_0x1126('0xa')]||_0x1126('0xb');this[_0x1126('0xc')]=_0x5a2189[_0x1126('0xc')];this['mapAgentsId']={};this[_0x1126('0xd')]=0x0;this[_0x1126('0x0')]='';this[_0x1126('0xe')]();this['updateRealtime']();}OpenchannelQueue[_0x1126('0xf')]['updateRouting']=function(){var _0x52ef15=this[_0x1126('0x10')]['_rr'];this[_0x1126('0x10')]=_[_0x1126('0x11')](this[_0x1126('0xc')],'id');this[_0x1126('0x10')][_0x1126('0x12')]=_0x52ef15;};OpenchannelQueue[_0x1126('0xf')][_0x1126('0x13')]=function(){this[_0x1126('0x14')]=0x0;this[_0x1126('0x15')]=0x0;for(var _0x53a8f0=0x0;_0x53a8f0<this['Agents'][_0x1126('0x16')];_0x53a8f0+=0x1){if(this[_0x1126('0xc')][_0x53a8f0][_0x1126('0x17')]){this['loggedIn']+=0x1;}if(this[_0x1126('0xc')][_0x53a8f0]['openchannelPause']){this[_0x1126('0x15')]+=0x1;}}this[_0x1126('0x18')]=this[_0x1126('0x14')]-this['paused'];this[_0x1126('0x18')]=this[_0x1126('0x18')]>=0x0?this['available']:0x0;var _0x4d2b38={'id':this['id'],'available':this[_0x1126('0x18')],'loggedIn':this[_0x1126('0x14')],'name':this['name'],'paused':this['paused'],'waiting':this[_0x1126('0xd')]};var _0x58b109=md5(JSON[_0x1126('0x19')](_0x4d2b38));if(this[_0x1126('0x0')]!==_0x58b109){this[_0x1126('0x0')]=_0x58b109;io['to'](util['format'](_0x1126('0x1a'),_0x4d2b38['name']))['emit'](_0x1126('0x1b'),_0x4d2b38);}};module[_0x1126('0x1c')]=OpenchannelQueue;
\ No newline at end of file
index 490f45a..417c3cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55e0=['waiting','updateRouting','updateRealtime','prototype','mapAgentsId','map','_rr','paused','length','loggedIn','smsPause','available','name','format','sms:queue:%s','emit','exports','lodash','md5','util','ioredis','defaults','redis','localhost','socket.io-emitter','timeout','strategy','beepall','Agents'];(function(_0x4a0f35,_0x7d064){var _0x1253ed=function(_0x1c8d40){while(--_0x1c8d40){_0x4a0f35['push'](_0x4a0f35['shift']());}};_0x1253ed(++_0x7d064);}(_0x55e0,0xdc));var _0x055e=function(_0x1f3ee8,_0x38ee26){_0x1f3ee8=_0x1f3ee8-0x0;var _0x11ff83=_0x55e0[_0x1f3ee8];return _0x11ff83;};'use strict';var _=require(_0x055e('0x0'));var md5=require(_0x055e('0x1'));var util=require(_0x055e('0x2'));var Redis=require(_0x055e('0x3'));var config=require('../../../config/environment');config['redis']=_[_0x055e('0x4')](config[_0x055e('0x5')],{'host':_0x055e('0x6'),'port':0x18eb});var io=require(_0x055e('0x7'))(new Redis(config[_0x055e('0x5')]));function SmsQueue(_0x196394){this['id']=_0x196394['id']||0x0;this['name']=_0x196394['name']||'';this[_0x055e('0x8')]=_0x196394['timeout']||0xa;this[_0x055e('0x9')]=_0x196394[_0x055e('0x9')]||_0x055e('0xa');this[_0x055e('0xb')]=_0x196394[_0x055e('0xb')];this['mapAgentsId']={};this[_0x055e('0xc')]=0x0;this[_0x055e('0x1')]='';this[_0x055e('0xd')]();this[_0x055e('0xe')]();}SmsQueue[_0x055e('0xf')]['updateRouting']=function(){var _0x56c78a=this[_0x055e('0x10')]['_rr'];this[_0x055e('0x10')]=_[_0x055e('0x11')](this[_0x055e('0xb')],'id');this[_0x055e('0x10')][_0x055e('0x12')]=_0x56c78a;};SmsQueue[_0x055e('0xf')][_0x055e('0xe')]=function(){this['loggedIn']=0x0;this[_0x055e('0x13')]=0x0;for(var _0xb80d83=0x0;_0xb80d83<this[_0x055e('0xb')][_0x055e('0x14')];_0xb80d83+=0x1){if(this[_0x055e('0xb')][_0xb80d83]['online']){this[_0x055e('0x15')]+=0x1;}if(this[_0x055e('0xb')][_0xb80d83][_0x055e('0x16')]){this['paused']+=0x1;}}this[_0x055e('0x17')]=this[_0x055e('0x15')]-this[_0x055e('0x13')];this[_0x055e('0x17')]=this[_0x055e('0x17')]>=0x0?this['available']:0x0;var _0x36ef10={'id':this['id'],'available':this[_0x055e('0x17')],'loggedIn':this[_0x055e('0x15')],'name':this[_0x055e('0x18')],'paused':this['paused'],'waiting':this[_0x055e('0xc')]};var _0x3cdd68=md5(JSON['stringify'](_0x36ef10));if(this[_0x055e('0x1')]!==_0x3cdd68){this[_0x055e('0x1')]=_0x3cdd68;io['to'](util[_0x055e('0x19')](_0x055e('0x1a'),_0x36ef10[_0x055e('0x18')]))[_0x055e('0x1b')]('sms_queue:save',_0x36ef10);}};module[_0x055e('0x1c')]=SmsQueue;
\ No newline at end of file
+var _0xe205=['_rr','map','prototype','loggedIn','length','online','paused','available','stringify','format','exports','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','name','strategy','Agents','waiting','updateRouting','updateRealtime','mapAgentsId'];(function(_0x5e4852,_0x3658d8){var _0x58de56=function(_0x434c28){while(--_0x434c28){_0x5e4852['push'](_0x5e4852['shift']());}};_0x58de56(++_0x3658d8);}(_0xe205,0xa7));var _0x5e20=function(_0x4388a4,_0x26711a){_0x4388a4=_0x4388a4-0x0;var _0x1dc511=_0xe205[_0x4388a4];return _0x1dc511;};'use strict';var _=require(_0x5e20('0x0'));var md5=require(_0x5e20('0x1'));var util=require(_0x5e20('0x2'));var Redis=require(_0x5e20('0x3'));var config=require(_0x5e20('0x4'));config[_0x5e20('0x5')]=_[_0x5e20('0x6')](config[_0x5e20('0x5')],{'host':_0x5e20('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x5e20('0x5')]));function SmsQueue(_0x1b26a2){this['id']=_0x1b26a2['id']||0x0;this[_0x5e20('0x8')]=_0x1b26a2[_0x5e20('0x8')]||'';this['timeout']=_0x1b26a2['timeout']||0xa;this[_0x5e20('0x9')]=_0x1b26a2['strategy']||'beepall';this[_0x5e20('0xa')]=_0x1b26a2[_0x5e20('0xa')];this['mapAgentsId']={};this[_0x5e20('0xb')]=0x0;this[_0x5e20('0x1')]='';this[_0x5e20('0xc')]();this[_0x5e20('0xd')]();}SmsQueue['prototype'][_0x5e20('0xc')]=function(){var _0xda6476=this[_0x5e20('0xe')][_0x5e20('0xf')];this[_0x5e20('0xe')]=_[_0x5e20('0x10')](this['Agents'],'id');this[_0x5e20('0xe')][_0x5e20('0xf')]=_0xda6476;};SmsQueue[_0x5e20('0x11')]['updateRealtime']=function(){this[_0x5e20('0x12')]=0x0;this['paused']=0x0;for(var _0x1f47f3=0x0;_0x1f47f3<this['Agents'][_0x5e20('0x13')];_0x1f47f3+=0x1){if(this[_0x5e20('0xa')][_0x1f47f3][_0x5e20('0x14')]){this[_0x5e20('0x12')]+=0x1;}if(this[_0x5e20('0xa')][_0x1f47f3]['smsPause']){this[_0x5e20('0x15')]+=0x1;}}this[_0x5e20('0x16')]=this[_0x5e20('0x12')]-this[_0x5e20('0x15')];this[_0x5e20('0x16')]=this[_0x5e20('0x16')]>=0x0?this[_0x5e20('0x16')]:0x0;var _0xf3488f={'id':this['id'],'available':this['available'],'loggedIn':this[_0x5e20('0x12')],'name':this[_0x5e20('0x8')],'paused':this['paused'],'waiting':this[_0x5e20('0xb')]};var _0x1b1457=md5(JSON[_0x5e20('0x17')](_0xf3488f));if(this[_0x5e20('0x1')]!==_0x1b1457){this['md5']=_0x1b1457;io['to'](util[_0x5e20('0x18')]('sms:queue:%s',_0xf3488f['name']))['emit']('sms_queue:save',_0xf3488f);}};module[_0x5e20('0x19')]=SmsQueue;
\ No newline at end of file
index 0683d3f..64831ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5428=['updateRouting','prototype','_rr','updateRealtime','paused','online','whatsappPause','available','loggedIn','format','whatsapp:queue:%s','whatsapp_queue:save','exports','lodash','md5','util','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting'];(function(_0x31cb5f,_0x2df766){var _0x586042=function(_0x53c807){while(--_0x53c807){_0x31cb5f['push'](_0x31cb5f['shift']());}};_0x586042(++_0x2df766);}(_0x5428,0xb5));var _0x8542=function(_0x27fd61,_0x561baf){_0x27fd61=_0x27fd61-0x0;var _0x39d922=_0x5428[_0x27fd61];return _0x39d922;};'use strict';var _=require(_0x8542('0x0'));var md5=require(_0x8542('0x1'));var util=require(_0x8542('0x2'));var Redis=require('ioredis');var config=require(_0x8542('0x3'));config[_0x8542('0x4')]=_[_0x8542('0x5')](config[_0x8542('0x4')],{'host':_0x8542('0x6'),'port':0x18eb});var io=require(_0x8542('0x7'))(new Redis(config[_0x8542('0x4')]));function WhatsappQueue(_0x37800c){this['id']=_0x37800c['id']||0x0;this[_0x8542('0x8')]=_0x37800c[_0x8542('0x8')]||'';this[_0x8542('0x9')]=_0x37800c[_0x8542('0x9')]||0xa;this['strategy']=_0x37800c[_0x8542('0xa')]||_0x8542('0xb');this[_0x8542('0xc')]=_0x37800c[_0x8542('0xc')];this[_0x8542('0xd')]={};this[_0x8542('0xe')]=0x0;this['md5']='';this[_0x8542('0xf')]();this['updateRealtime']();}WhatsappQueue[_0x8542('0x10')][_0x8542('0xf')]=function(){var _0x4f3b46=this[_0x8542('0xd')][_0x8542('0x11')];this[_0x8542('0xd')]=_['map'](this[_0x8542('0xc')],'id');this[_0x8542('0xd')][_0x8542('0x11')]=_0x4f3b46;};WhatsappQueue[_0x8542('0x10')][_0x8542('0x12')]=function(){this['loggedIn']=0x0;this[_0x8542('0x13')]=0x0;for(var _0x3193e9=0x0;_0x3193e9<this[_0x8542('0xc')]['length'];_0x3193e9+=0x1){if(this[_0x8542('0xc')][_0x3193e9][_0x8542('0x14')]){this['loggedIn']+=0x1;}if(this[_0x8542('0xc')][_0x3193e9][_0x8542('0x15')]){this[_0x8542('0x13')]+=0x1;}}this[_0x8542('0x16')]=this[_0x8542('0x17')]-this['paused'];this['available']=this['available']>=0x0?this[_0x8542('0x16')]:0x0;var _0x12c4d7={'id':this['id'],'available':this[_0x8542('0x16')],'loggedIn':this[_0x8542('0x17')],'name':this[_0x8542('0x8')],'paused':this[_0x8542('0x13')],'waiting':this[_0x8542('0xe')]};var _0x43bab0=md5(JSON['stringify'](_0x12c4d7));if(this['md5']!==_0x43bab0){this[_0x8542('0x1')]=_0x43bab0;io['to'](util[_0x8542('0x18')](_0x8542('0x19'),_0x12c4d7[_0x8542('0x8')]))['emit'](_0x8542('0x1a'),_0x12c4d7);}};module[_0x8542('0x1b')]=WhatsappQueue;
\ No newline at end of file
+var _0x4080=['mapAgentsId','waiting','updateRouting','updateRealtime','prototype','_rr','map','loggedIn','paused','online','whatsappPause','available','stringify','format','whatsapp:queue:%s','emit','whatsapp_queue:save','exports','lodash','md5','util','redis','defaults','localhost','name','timeout','strategy','beepall','Agents'];(function(_0x141fe2,_0x2e444a){var _0x4379b2=function(_0xf9b6e3){while(--_0xf9b6e3){_0x141fe2['push'](_0x141fe2['shift']());}};_0x4379b2(++_0x2e444a);}(_0x4080,0x1a8));var _0x0408=function(_0x44039a,_0x2ac8a8){_0x44039a=_0x44039a-0x0;var _0x525de5=_0x4080[_0x44039a];return _0x525de5;};'use strict';var _=require(_0x0408('0x0'));var md5=require(_0x0408('0x1'));var util=require(_0x0408('0x2'));var Redis=require('ioredis');var config=require('../../../config/environment');config[_0x0408('0x3')]=_[_0x0408('0x4')](config['redis'],{'host':_0x0408('0x5'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x0408('0x3')]));function WhatsappQueue(_0x1e3eaf){this['id']=_0x1e3eaf['id']||0x0;this['name']=_0x1e3eaf[_0x0408('0x6')]||'';this['timeout']=_0x1e3eaf[_0x0408('0x7')]||0xa;this['strategy']=_0x1e3eaf[_0x0408('0x8')]||_0x0408('0x9');this[_0x0408('0xa')]=_0x1e3eaf['Agents'];this[_0x0408('0xb')]={};this[_0x0408('0xc')]=0x0;this[_0x0408('0x1')]='';this[_0x0408('0xd')]();this[_0x0408('0xe')]();}WhatsappQueue[_0x0408('0xf')][_0x0408('0xd')]=function(){var _0x38cf8a=this['mapAgentsId'][_0x0408('0x10')];this['mapAgentsId']=_[_0x0408('0x11')](this[_0x0408('0xa')],'id');this[_0x0408('0xb')][_0x0408('0x10')]=_0x38cf8a;};WhatsappQueue[_0x0408('0xf')][_0x0408('0xe')]=function(){this[_0x0408('0x12')]=0x0;this[_0x0408('0x13')]=0x0;for(var _0x54ea94=0x0;_0x54ea94<this['Agents']['length'];_0x54ea94+=0x1){if(this[_0x0408('0xa')][_0x54ea94][_0x0408('0x14')]){this[_0x0408('0x12')]+=0x1;}if(this[_0x0408('0xa')][_0x54ea94][_0x0408('0x15')]){this[_0x0408('0x13')]+=0x1;}}this[_0x0408('0x16')]=this[_0x0408('0x12')]-this[_0x0408('0x13')];this[_0x0408('0x16')]=this['available']>=0x0?this[_0x0408('0x16')]:0x0;var _0x3529d2={'id':this['id'],'available':this[_0x0408('0x16')],'loggedIn':this[_0x0408('0x12')],'name':this[_0x0408('0x6')],'paused':this[_0x0408('0x13')],'waiting':this[_0x0408('0xc')]};var _0x4d97ef=md5(JSON[_0x0408('0x17')](_0x3529d2));if(this[_0x0408('0x1')]!==_0x4d97ef){this[_0x0408('0x1')]=_0x4d97ef;io['to'](util[_0x0408('0x18')](_0x0408('0x19'),_0x3529d2['name']))[_0x0408('0x1a')](_0x0408('0x1b'),_0x3529d2);}};module[_0x0408('0x1c')]=WhatsappQueue;
\ No newline at end of file
index 2dce961..40f802d 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(_0x5ae9d9,_0xf8babb){var _0x19b383=function(_0x49d171){while(--_0x49d171){_0x5ae9d9['push'](_0x5ae9d9['shift']());}};_0x19b383(++_0xf8babb);}(_0xb10b,0x12a));var _0xbb10=function(_0x2d8fdb,_0x30e70c){_0x2d8fdb=_0x2d8fdb-0x0;var _0x3bc1c2=_0xb10b[_0x2d8fdb];return _0x3bc1c2;};'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(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3c4737,_0x2329ec){_0x3c4737=_0x3c4737-0x0;var _0x2bb926=_0xa9e0[_0x3c4737];return _0x2bb926;};'use strict';var BPromise=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var moment=require('moment');var Agent=require('../model/agent');var Interval=require(_0x0a9e('0x3'));var OpenchannelQueue=require('../model/openchannelQueue');var ChatQueue=require(_0x0a9e('0x4'));var SmsQueue=require(_0x0a9e('0x5'));var MailQueue=require(_0x0a9e('0x6'));var FaxQueue=require(_0x0a9e('0x7'));var WhatsappQueue=require(_0x0a9e('0x8'));var Realtime=function(){this['agents']={};this[_0x0a9e('0x9')]={};this[_0x0a9e('0xa')]={};this[_0x0a9e('0xb')]={};this['smsQueues']={};this['mailQueues']={};this[_0x0a9e('0xc')]={};this['whatsappQueues']={};this['chatQueuesWaitingInteractions']={};this[_0x0a9e('0xd')]={};this[_0x0a9e('0xe')]={};this[_0x0a9e('0xf')]={};this[_0x0a9e('0x10')]={};this[_0x0a9e('0x11')]={};};function freeIsNotKey(_0xbd1168,_0x4a4c56,_0x50dfb2){var _0x527cdd=_['mapKeys'](_0xbd1168,function(_0x273d4d,_0x36471c){return _0x273d4d[_0x50dfb2];});for(var _0xd5b662 in _0x4a4c56){if(_0x4a4c56[_0x0a9e('0x12')](_0xd5b662)){if(!_0x527cdd[_0xd5b662]){delete _0x4a4c56[_0xd5b662];}}}}Realtime[_0x0a9e('0x13')][_0x0a9e('0x14')]=function(_0x5db4b0,_0x4283ce){for(var _0x239b12 in _0x4283ce){if(_0x5db4b0[_0x0a9e('0x12')](_0x239b12)){_0x5db4b0[_0x239b12]=_0x4283ce[_0x239b12];}}};Realtime[_0x0a9e('0x13')][_0x0a9e('0x15')]=function(){var _0x4d5611=this;return function(_0x52a03d){if(_0x52a03d){freeIsNotKey(_0x52a03d,_0x4d5611[_0x0a9e('0x16')],'id');for(var _0x5d0880=0x0,_0x1985b6={},_0x519dfd={};_0x5d0880<_0x52a03d[_0x0a9e('0x17')];_0x5d0880+=0x1){_0x1985b6=_0x52a03d[_0x5d0880];if(_[_0x0a9e('0x18')](_0x4d5611['agents'][_0x1985b6['id']])){_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']]=new Agent(_0x1985b6);}else{_0x4d5611['mergeFromDatabase'](_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']],_0x1985b6);}}}return _0x4d5611[_0x0a9e('0x16')];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x19')]=function(){var _0x31b1ca=this;return function(_0x2eb11f){if(_0x2eb11f){freeIsNotKey(_0x2eb11f,_0x31b1ca[_0x0a9e('0x9')],'id');for(var _0x20559e=0x0,_0x1314ae={},_0x112016={};_0x20559e<_0x2eb11f[_0x0a9e('0x17')];_0x20559e+=0x1){_0x1314ae=_0x2eb11f[_0x20559e];if(_[_0x0a9e('0x18')](_0x31b1ca['intervals'][_0x1314ae['id']])){_0x31b1ca[_0x0a9e('0x9')][_0x1314ae['id']]=new Interval(_0x1314ae);}else{_0x31b1ca[_0x0a9e('0x14')](_0x31b1ca['intervals'][_0x1314ae['id']],_0x1314ae);}}}return _0x31b1ca[_0x0a9e('0x9')];};};Realtime['prototype']['initOpenchannelQueues']=function(){var _0x3a02e1=this;return function(_0x432e56){if(_0x432e56){freeIsNotKey(_0x432e56,_0x3a02e1[_0x0a9e('0xa')],'id');for(var _0x30bae6=0x0,_0x4abc77={},_0xfb6e48={};_0x30bae6<_0x432e56[_0x0a9e('0x17')];_0x30bae6+=0x1){_0x4abc77=_0x432e56[_0x30bae6];if(_[_0x0a9e('0x18')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']])){_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']]=new OpenchannelQueue(_0x4abc77);}else{_0x3a02e1[_0x0a9e('0x14')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']],_0x4abc77);}_0x3a02e1['openchannelQueues'][_0x4abc77['id']]['updateRouting']();_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']][_0x0a9e('0x1a')]();}}return _0x3a02e1[_0x0a9e('0xa')];};};Realtime[_0x0a9e('0x13')]['initChatQueues']=function(){var _0x384319=this;return function(_0x479bc4){if(_0x479bc4){freeIsNotKey(_0x479bc4,_0x384319[_0x0a9e('0xb')],'id');for(var _0x5bfb33=0x0,_0x1dc186={},_0x34dc65={};_0x5bfb33<_0x479bc4[_0x0a9e('0x17')];_0x5bfb33+=0x1){_0x1dc186=_0x479bc4[_0x5bfb33];if(_[_0x0a9e('0x18')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']])){_0x384319[_0x0a9e('0xb')][_0x1dc186['id']]=new ChatQueue(_0x1dc186);}else{_0x384319[_0x0a9e('0x14')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']],_0x1dc186);}_0x384319['chatQueues'][_0x1dc186['id']][_0x0a9e('0x1b')]();_0x384319[_0x0a9e('0xb')][_0x1dc186['id']][_0x0a9e('0x1a')]();}}return _0x384319[_0x0a9e('0xb')];};};Realtime['prototype'][_0x0a9e('0x1c')]=function(){var _0x40e7a3=this;return function(_0x1843b2){if(_0x1843b2){freeIsNotKey(_0x1843b2,_0x40e7a3[_0x0a9e('0x1d')],'id');for(var _0x58b06f=0x0,_0x563b45={},_0x296f41={};_0x58b06f<_0x1843b2[_0x0a9e('0x17')];_0x58b06f+=0x1){_0x563b45=_0x1843b2[_0x58b06f];if(_[_0x0a9e('0x18')](_0x40e7a3['smsQueues'][_0x563b45['id']])){_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']]=new SmsQueue(_0x563b45);}else{_0x40e7a3['mergeFromDatabase'](_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']],_0x563b45);}_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1b')]();_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1a')]();}}return _0x40e7a3['smsQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x1e')]=function(){var _0x40cb85=this;return function(_0x2da5c0){if(_0x2da5c0){freeIsNotKey(_0x2da5c0,_0x40cb85[_0x0a9e('0x1f')],'id');for(var _0x409319=0x0,_0x332d35={},_0x39e565={};_0x409319<_0x2da5c0['length'];_0x409319+=0x1){_0x332d35=_0x2da5c0[_0x409319];if(_[_0x0a9e('0x18')](_0x40cb85['mailQueues'][_0x332d35['id']])){_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]=new MailQueue(_0x332d35);}else{_0x40cb85[_0x0a9e('0x14')](_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']],_0x332d35);}_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]['updateRouting']();_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']][_0x0a9e('0x1a')]();}}return _0x40cb85[_0x0a9e('0x1f')];};};Realtime[_0x0a9e('0x13')]['initFaxQueues']=function(){var _0x54135e=this;return function(_0x1e8694){if(_0x1e8694){freeIsNotKey(_0x1e8694,_0x54135e['faxQueues'],'id');for(var _0x24936a=0x0,_0x3d9717={},_0x381c37={};_0x24936a<_0x1e8694[_0x0a9e('0x17')];_0x24936a+=0x1){_0x3d9717=_0x1e8694[_0x24936a];if(_['isUndefined'](_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']])){_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]=new FaxQueue(_0x3d9717);}else{_0x54135e[_0x0a9e('0x14')](_0x54135e['faxQueues'][_0x3d9717['id']],_0x3d9717);}_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']][_0x0a9e('0x1b')]();_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]['updateRealtime']();}}return _0x54135e['faxQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x20')]=function(){var _0x5adda1=this;return function(_0x2b814e){if(_0x2b814e){freeIsNotKey(_0x2b814e,_0x5adda1[_0x0a9e('0x21')],'id');for(var _0x2e1b3a=0x0,_0x148f55={},_0x4b38d9={};_0x2e1b3a<_0x2b814e['length'];_0x2e1b3a+=0x1){_0x148f55=_0x2b814e[_0x2e1b3a];if(_[_0x0a9e('0x18')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']])){_0x5adda1['whatsappQueues'][_0x148f55['id']]=new WhatsappQueue(_0x148f55);}else{_0x5adda1[_0x0a9e('0x14')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']],_0x148f55);}_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']]['updateRouting']();_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']][_0x0a9e('0x1a')]();}}return _0x5adda1[_0x0a9e('0x21')];};};module[_0x0a9e('0x22')]=Realtime;
\ No newline at end of file
index f8c6d33..86ae1d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x072a=['UpdateChatInteraction','addTags','AddTagsToChatInteraction','addTagsToChatInteraction','../client','update','Request'];(function(_0x236c2e,_0x4f590f){var _0x2b0588=function(_0x2d6c6e){while(--_0x2d6c6e){_0x236c2e['push'](_0x236c2e['shift']());}};_0x2b0588(++_0x4f590f);}(_0x072a,0x1bd));var _0xa072=function(_0x4fdf1d,_0x579c97){_0x4fdf1d=_0x4fdf1d-0x0;var _0x310eb7=_0x072a[_0x4fdf1d];return _0x310eb7;};'use strict';var client=require(_0xa072('0x0'));exports[_0xa072('0x1')]=function(_0x3885e4,_0x3490c1){return client[_0xa072('0x2')](_0xa072('0x3'),{'body':_0x3490c1,'options':{'where':{'id':_0x3885e4}},'log':'updateChatInteraction'});};exports[_0xa072('0x4')]=function(_0x32bbff,_0x3a35ea){return client['Request'](_0xa072('0x5'),{'body':_0x3a35ea,'options':{'where':{'id':_0x32bbff}},'log':_0xa072('0x6')});};
\ No newline at end of file
+var _0xc5f0=['addTags','AddTagsToChatInteraction','update','Request','UpdateChatInteraction','updateChatInteraction'];(function(_0x5768fb,_0x8b7a1){var _0x245f8a=function(_0x1be2ff){while(--_0x1be2ff){_0x5768fb['push'](_0x5768fb['shift']());}};_0x245f8a(++_0x8b7a1);}(_0xc5f0,0x1be));var _0x0c5f=function(_0x36bf88,_0x15c459){_0x36bf88=_0x36bf88-0x0;var _0x332914=_0xc5f0[_0x36bf88];return _0x332914;};'use strict';var client=require('../client');exports[_0x0c5f('0x0')]=function(_0x2650af,_0x5d5314){return client[_0x0c5f('0x1')](_0x0c5f('0x2'),{'body':_0x5d5314,'options':{'where':{'id':_0x2650af}},'log':_0x0c5f('0x3')});};exports[_0x0c5f('0x4')]=function(_0x241531,_0x331e10){return client['Request'](_0x0c5f('0x5'),{'body':_0x331e10,'options':{'where':{'id':_0x241531}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
index 7bc67b4..01c371b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3342=['create','CreateChatMessage','createChatMessage'];(function(_0x4490f4,_0x150e06){var _0x3e2a76=function(_0x19c0c5){while(--_0x19c0c5){_0x4490f4['push'](_0x4490f4['shift']());}};_0x3e2a76(++_0x150e06);}(_0x3342,0x105));var _0x2334=function(_0x31e2b1,_0x3e6a08){_0x31e2b1=_0x31e2b1-0x0;var _0x10c4fc=_0x3342[_0x31e2b1];return _0x10c4fc;};'use strict';var client=require('../client');exports[_0x2334('0x0')]=function(_0x1dec04){return client['Request'](_0x2334('0x1'),{'body':_0x1dec04,'log':_0x2334('0x2')});};
\ No newline at end of file
+var _0x6dfd=['CreateChatMessage','../client','create','Request'];(function(_0x56a616,_0x5a3c7c){var _0xe94844=function(_0x1d3816){while(--_0x1d3816){_0x56a616['push'](_0x56a616['shift']());}};_0xe94844(++_0x5a3c7c);}(_0x6dfd,0xa1));var _0xd6df=function(_0x482e8a,_0x1131ed){_0x482e8a=_0x482e8a-0x0;var _0x4f4764=_0x6dfd[_0x482e8a];return _0x4f4764;};'use strict';var client=require(_0xd6df('0x0'));exports[_0xd6df('0x1')]=function(_0x303a19){return client[_0xd6df('0x2')](_0xd6df('0x3'),{'body':_0x303a19,'log':'createChatMessage'});};
\ No newline at end of file
index 97eb9a8..da7d18b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa992=['../client','getChatQueues','Request','GetChatQueue','timeout','strategy','User','Agents','name','online','chatPause'];(function(_0x235a26,_0x19b391){var _0x2de83c=function(_0x155c8a){while(--_0x155c8a){_0x235a26['push'](_0x235a26['shift']());}};_0x2de83c(++_0x19b391);}(_0xa992,0x18c));var _0x2a99=function(_0x379c19,_0x38b6f5){_0x379c19=_0x379c19-0x0;var _0x50f850=_0xa992[_0x379c19];return _0x50f850;};'use strict';var client=require(_0x2a99('0x0'));exports[_0x2a99('0x1')]=function(){return function(){return client[_0x2a99('0x2')](_0x2a99('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x2a99('0x4'),_0x2a99('0x5')],'include':[{'model':_0x2a99('0x6'),'as':_0x2a99('0x7'),'attributes':['id',_0x2a99('0x8'),_0x2a99('0x9'),_0x2a99('0xa')]}]},'log':_0x2a99('0x1')});};};
\ No newline at end of file
+var _0xdf98=['strategy','User','Agents','name','online','chatPause','getChatQueues','../client','Request','timeout'];(function(_0x125ec3,_0x41d38d){var _0x5346a0=function(_0x178325){while(--_0x178325){_0x125ec3['push'](_0x125ec3['shift']());}};_0x5346a0(++_0x41d38d);}(_0xdf98,0xcf));var _0x8df9=function(_0x3ed25d,_0x6c37b2){_0x3ed25d=_0x3ed25d-0x0;var _0x5e0998=_0xdf98[_0x3ed25d];return _0x5e0998;};'use strict';var client=require(_0x8df9('0x0'));exports['getChatQueues']=function(){return function(){return client[_0x8df9('0x1')]('GetChatQueue',{'options':{'raw':![],'attributes':['id','name',_0x8df9('0x2'),_0x8df9('0x3')],'include':[{'model':_0x8df9('0x4'),'as':_0x8df9('0x5'),'attributes':['id',_0x8df9('0x6'),_0x8df9('0x7'),_0x8df9('0x8')]}]},'log':_0x8df9('0x9')});};};
\ No newline at end of file
index a576678..c545608 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21a3=['../client','Request','CreateChatQueueReport','update','UpdateChatQueueReport','DESC'];(function(_0x5711f0,_0x699293){var _0x5ee738=function(_0x5f1c1f){while(--_0x5f1c1f){_0x5711f0['push'](_0x5711f0['shift']());}};_0x5ee738(++_0x699293);}(_0x21a3,0x66));var _0x321a=function(_0x2a99ea,_0x1bfb13){_0x2a99ea=_0x2a99ea-0x0;var _0x5887ae=_0x21a3[_0x2a99ea];return _0x5887ae;};'use strict';var client=require(_0x321a('0x0'));exports['create']=function(_0x2b85b5){return client[_0x321a('0x1')](_0x321a('0x2'),{'body':_0x2b85b5,'log':_0x321a('0x2')});};exports[_0x321a('0x3')]=function(_0x185e2a,_0x5df495){return client['Request'](_0x321a('0x4'),{'body':_0x5df495,'options':{'where':{'uniqueid':_0x185e2a},'order':[['id',_0x321a('0x5')]],'limit':0x1},'log':_0x321a('0x4')});};
\ No newline at end of file
+var _0x97d5=['UpdateChatQueueReport','../client','create','Request','CreateChatQueueReport','DESC'];(function(_0x3fc81c,_0x34014b){var _0x57d3b7=function(_0x2e52df){while(--_0x2e52df){_0x3fc81c['push'](_0x3fc81c['shift']());}};_0x57d3b7(++_0x34014b);}(_0x97d5,0x199));var _0x597d=function(_0x547d4f,_0x235d16){_0x547d4f=_0x547d4f-0x0;var _0x3e16b2=_0x97d5[_0x547d4f];return _0x3e16b2;};'use strict';var client=require(_0x597d('0x0'));exports[_0x597d('0x1')]=function(_0x2366b3){return client[_0x597d('0x2')](_0x597d('0x3'),{'body':_0x2366b3,'log':_0x597d('0x3')});};exports['update']=function(_0x3324dc,_0x2d89ef){return client[_0x597d('0x2')]('UpdateChatQueueReport',{'body':_0x2d89ef,'options':{'where':{'uniqueid':_0x3324dc},'order':[['id',_0x597d('0x4')]],'limit':0x1},'log':_0x597d('0x5')});};
\ No newline at end of file
index 9559e7a..682309a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['Request','UpdateFaxInteraction','addTags','AddTagsToFaxInteraction','../client','update'];(function(_0x4c06a3,_0x1e6b6f){var _0x7ff53c=function(_0x559eff){while(--_0x559eff){_0x4c06a3['push'](_0x4c06a3['shift']());}};_0x7ff53c(++_0x1e6b6f);}(_0x7a54,0x106));var _0x47a5=function(_0x16f131,_0xf2a607){_0x16f131=_0x16f131-0x0;var _0x25bc76=_0x7a54[_0x16f131];return _0x25bc76;};'use strict';var client=require(_0x47a5('0x0'));exports[_0x47a5('0x1')]=function(_0x44b31e,_0x58157c){return client[_0x47a5('0x2')](_0x47a5('0x3'),{'body':_0x58157c,'options':{'where':{'id':_0x44b31e}},'log':'updateFaxInteraction'});};exports[_0x47a5('0x4')]=function(_0x11bf85,_0x2a1a7e){return client[_0x47a5('0x2')](_0x47a5('0x5'),{'body':_0x2a1a7e,'options':{'where':{'id':_0x11bf85}},'log':'addTagsToFaxInteraction'});};
\ No newline at end of file
+var _0x9957=['Request','AddTagsToFaxInteraction','addTagsToFaxInteraction','../client','update','UpdateFaxInteraction','updateFaxInteraction','addTags'];(function(_0x1413e6,_0xfc5531){var _0x2276b7=function(_0x212d69){while(--_0x212d69){_0x1413e6['push'](_0x1413e6['shift']());}};_0x2276b7(++_0xfc5531);}(_0x9957,0x93));var _0x7995=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x9957[_0x3b380d];return _0x54502b;};'use strict';var client=require(_0x7995('0x0'));exports[_0x7995('0x1')]=function(_0x2722a3,_0x10a05d){return client['Request'](_0x7995('0x2'),{'body':_0x10a05d,'options':{'where':{'id':_0x2722a3}},'log':_0x7995('0x3')});};exports[_0x7995('0x4')]=function(_0x462a03,_0x576d89){return client[_0x7995('0x5')](_0x7995('0x6'),{'body':_0x576d89,'options':{'where':{'id':_0x462a03}},'log':_0x7995('0x7')});};
\ No newline at end of file
index 21ab4c1..c2f006f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x320a=['../client','create','Request','createFaxMessage'];(function(_0x49a91c,_0x35fda1){var _0x57b35d=function(_0x41ac8c){while(--_0x41ac8c){_0x49a91c['push'](_0x49a91c['shift']());}};_0x57b35d(++_0x35fda1);}(_0x320a,0xd0));var _0xa320=function(_0x56be74,_0x107139){_0x56be74=_0x56be74-0x0;var _0xd60624=_0x320a[_0x56be74];return _0xd60624;};'use strict';var client=require(_0xa320('0x0'));exports[_0xa320('0x1')]=function(_0x1b3670){return client[_0xa320('0x2')]('CreateFaxMessage',{'body':_0x1b3670,'log':_0xa320('0x3')});};
\ No newline at end of file
+var _0x5e03=['create','CreateFaxMessage','createFaxMessage','../client'];(function(_0x3f00ee,_0x1d1673){var _0x18a07e=function(_0x4dad57){while(--_0x4dad57){_0x3f00ee['push'](_0x3f00ee['shift']());}};_0x18a07e(++_0x1d1673);}(_0x5e03,0x173));var _0x35e0=function(_0x5c326c,_0x23b53a){_0x5c326c=_0x5c326c-0x0;var _0x1674f6=_0x5e03[_0x5c326c];return _0x1674f6;};'use strict';var client=require(_0x35e0('0x0'));exports[_0x35e0('0x1')]=function(_0x3c6744){return client['Request'](_0x35e0('0x2'),{'body':_0x3c6744,'log':_0x35e0('0x3')});};
\ No newline at end of file
index fe32c6c..6b7ae03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa0b=['Agents','online','faxPause','getFaxQueues','../client','Request','GetFaxQueue','name','strategy','User'];(function(_0x333037,_0x4a1c9c){var _0x3eefe3=function(_0x3b1b37){while(--_0x3b1b37){_0x333037['push'](_0x333037['shift']());}};_0x3eefe3(++_0x4a1c9c);}(_0xaa0b,0x176));var _0xbaa0=function(_0x45d3f0,_0x4be53f){_0x45d3f0=_0x45d3f0-0x0;var _0x314b79=_0xaa0b[_0x45d3f0];return _0x314b79;};'use strict';var client=require(_0xbaa0('0x0'));exports['getFaxQueues']=function(){return function(){return client[_0xbaa0('0x1')](_0xbaa0('0x2'),{'options':{'raw':![],'attributes':['id',_0xbaa0('0x3'),'timeout',_0xbaa0('0x4')],'include':[{'model':_0xbaa0('0x5'),'as':_0xbaa0('0x6'),'attributes':['id','name',_0xbaa0('0x7'),_0xbaa0('0x8')]}]},'log':_0xbaa0('0x9')});};};
\ No newline at end of file
+var _0x25ad=['Request','GetFaxQueue','name','timeout','strategy','User','Agents','online','faxPause','../client','getFaxQueues'];(function(_0x4baaa2,_0x3a100a){var _0x5cfc61=function(_0x184610){while(--_0x184610){_0x4baaa2['push'](_0x4baaa2['shift']());}};_0x5cfc61(++_0x3a100a);}(_0x25ad,0x127));var _0xd25a=function(_0x340380,_0x4bd2a8){_0x340380=_0x340380-0x0;var _0x49ce1c=_0x25ad[_0x340380];return _0x49ce1c;};'use strict';var client=require(_0xd25a('0x0'));exports[_0xd25a('0x1')]=function(){return function(){return client[_0xd25a('0x2')](_0xd25a('0x3'),{'options':{'raw':![],'attributes':['id',_0xd25a('0x4'),_0xd25a('0x5'),_0xd25a('0x6')],'include':[{'model':_0xd25a('0x7'),'as':_0xd25a('0x8'),'attributes':['id','name',_0xd25a('0x9'),_0xd25a('0xa')]}]},'log':_0xd25a('0x1')});};};
\ No newline at end of file
index 478ad93..7c306b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe799=['update','Request','UpdateFaxQueueReport','DESC','CreateFaxQueueReport'];(function(_0xe11ab8,_0x13b6ca){var _0x5a1395=function(_0x36168c){while(--_0x36168c){_0xe11ab8['push'](_0xe11ab8['shift']());}};_0x5a1395(++_0x13b6ca);}(_0xe799,0x10d));var _0x9e79=function(_0x1853d5,_0x9ac8e0){_0x1853d5=_0x1853d5-0x0;var _0x11b31d=_0xe799[_0x1853d5];return _0x11b31d;};'use strict';var client=require('../client');exports['create']=function(_0x29adf5){return client['Request'](_0x9e79('0x0'),{'body':_0x29adf5,'log':_0x9e79('0x0')});};exports[_0x9e79('0x1')]=function(_0x50df12,_0x3fa719){return client[_0x9e79('0x2')](_0x9e79('0x3'),{'body':_0x3fa719,'options':{'where':{'uniqueid':_0x50df12},'order':[['id',_0x9e79('0x4')]],'limit':0x1},'log':_0x9e79('0x3')});};
\ No newline at end of file
+var _0x5611=['../client','create','CreateFaxQueueReport','update','DESC','UpdateFaxQueueReport'];(function(_0x492221,_0x9e2521){var _0x398bf9=function(_0x303c5b){while(--_0x303c5b){_0x492221['push'](_0x492221['shift']());}};_0x398bf9(++_0x9e2521);}(_0x5611,0x1d4));var _0x1561=function(_0x2435b3,_0xb17083){_0x2435b3=_0x2435b3-0x0;var _0x1ebe6a=_0x5611[_0x2435b3];return _0x1ebe6a;};'use strict';var client=require(_0x1561('0x0'));exports[_0x1561('0x1')]=function(_0xa2b913){return client['Request'](_0x1561('0x2'),{'body':_0xa2b913,'log':_0x1561('0x2')});};exports[_0x1561('0x3')]=function(_0x33abb8,_0x4c3868){return client['Request']('UpdateFaxQueueReport',{'body':_0x4c3868,'options':{'where':{'uniqueid':_0x33abb8},'order':[['id',_0x1561('0x4')]],'limit':0x1},'log':_0x1561('0x5')});};
\ No newline at end of file
index b2c099d..05b88a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb17=['getIntervals','../client','Request','GetInterval','Intervals','name','interval'];(function(_0x1d3a3b,_0x49e405){var _0x59b26f=function(_0x386d32){while(--_0x386d32){_0x1d3a3b['push'](_0x1d3a3b['shift']());}};_0x59b26f(++_0x49e405);}(_0xeb17,0x19e));var _0x7eb1=function(_0x2318d7,_0x4e3bdc){_0x2318d7=_0x2318d7-0x0;var _0x352f2d=_0xeb17[_0x2318d7];return _0x352f2d;};'use strict';var client=require(_0x7eb1('0x0'));exports['getIntervals']=function(){return function(){return client[_0x7eb1('0x1')](_0x7eb1('0x2'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id','name'],'include':[{'model':'Interval','as':_0x7eb1('0x3'),'attributes':['id',_0x7eb1('0x4'),_0x7eb1('0x5')]}]},'log':_0x7eb1('0x6')});};};
\ No newline at end of file
+var _0x2ff0=['name','../client','getIntervals','Request','Interval','Intervals'];(function(_0x4e8dde,_0x592f14){var _0x1cebd0=function(_0x20ea0c){while(--_0x20ea0c){_0x4e8dde['push'](_0x4e8dde['shift']());}};_0x1cebd0(++_0x592f14);}(_0x2ff0,0x8b));var _0x02ff=function(_0x4da123,_0x2c94d0){_0x4da123=_0x4da123-0x0;var _0x386ecc=_0x2ff0[_0x4da123];return _0x386ecc;};'use strict';var client=require(_0x02ff('0x0'));exports[_0x02ff('0x1')]=function(){return function(){return client[_0x02ff('0x2')]('GetInterval',{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id','name'],'include':[{'model':_0x02ff('0x3'),'as':_0x02ff('0x4'),'attributes':['id',_0x02ff('0x5'),'interval']}]},'log':'getIntervals'});};};
\ No newline at end of file
index 3477bec..5aa49a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1eba=['addTags','AddTagsToMailInteraction','addTagsToChatInteraction','../client','update','Request'];(function(_0xc67528,_0x24e2fb){var _0x38e26d=function(_0x1b0efe){while(--_0x1b0efe){_0xc67528['push'](_0xc67528['shift']());}};_0x38e26d(++_0x24e2fb);}(_0x1eba,0x1d7));var _0xa1eb=function(_0x4d7f3f,_0x4d2803){_0x4d7f3f=_0x4d7f3f-0x0;var _0x5d67cc=_0x1eba[_0x4d7f3f];return _0x5d67cc;};'use strict';var client=require(_0xa1eb('0x0'));exports[_0xa1eb('0x1')]=function(_0x406a58,_0x2158d5){return client[_0xa1eb('0x2')]('UpdateMailInteraction',{'body':_0x2158d5,'options':{'where':{'id':_0x406a58}},'log':'updateMailInteraction'});};exports[_0xa1eb('0x3')]=function(_0x34be5a,_0x16a13a){return client[_0xa1eb('0x2')](_0xa1eb('0x4'),{'body':_0x16a13a,'options':{'where':{'id':_0x34be5a}},'log':_0xa1eb('0x5')});};
\ No newline at end of file
+var _0xe5af=['update','Request','UpdateMailInteraction','updateMailInteraction','AddTagsToMailInteraction','addTagsToChatInteraction'];(function(_0x303824,_0x52ec68){var _0x4f3d44=function(_0x4c07a5){while(--_0x4c07a5){_0x303824['push'](_0x303824['shift']());}};_0x4f3d44(++_0x52ec68);}(_0xe5af,0x9c));var _0xfe5a=function(_0x1b2d30,_0x2d4882){_0x1b2d30=_0x1b2d30-0x0;var _0x48001e=_0xe5af[_0x1b2d30];return _0x48001e;};'use strict';var client=require('../client');exports[_0xfe5a('0x0')]=function(_0x189c37,_0x4b1845){return client[_0xfe5a('0x1')](_0xfe5a('0x2'),{'body':_0x4b1845,'options':{'where':{'id':_0x189c37}},'log':_0xfe5a('0x3')});};exports['addTags']=function(_0x1165e3,_0x48e3a7){return client['Request'](_0xfe5a('0x4'),{'body':_0x48e3a7,'options':{'where':{'id':_0x1165e3}},'log':_0xfe5a('0x5')});};
\ No newline at end of file
index 69d2f9a..a2ac4ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x300d=['CreateMailMessage','createMailMessage','create'];(function(_0x1e6e4e,_0x2b1b09){var _0x3d746b=function(_0x4483dd){while(--_0x4483dd){_0x1e6e4e['push'](_0x1e6e4e['shift']());}};_0x3d746b(++_0x2b1b09);}(_0x300d,0xd4));var _0xd300=function(_0x2ea28f,_0x49b998){_0x2ea28f=_0x2ea28f-0x0;var _0x57cbc5=_0x300d[_0x2ea28f];return _0x57cbc5;};'use strict';var client=require('../client');exports[_0xd300('0x0')]=function(_0x580dd3){return client['Request'](_0xd300('0x1'),{'body':_0x580dd3,'log':_0xd300('0x2')});};
\ No newline at end of file
+var _0x851c=['create','Request','createMailMessage','../client'];(function(_0x30cdc5,_0x481edb){var _0x2ae4fd=function(_0xcb7636){while(--_0xcb7636){_0x30cdc5['push'](_0x30cdc5['shift']());}};_0x2ae4fd(++_0x481edb);}(_0x851c,0xff));var _0xc851=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x851c[_0x5b644e];return _0x49c6bf;};'use strict';var client=require(_0xc851('0x0'));exports[_0xc851('0x1')]=function(_0x2fd7d2){return client[_0xc851('0x2')]('CreateMailMessage',{'body':_0x2fd7d2,'log':_0xc851('0x3')});};
\ No newline at end of file
index d6a9f9b..ec4f174 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9244=['GetMailQueue','timeout','strategy','name','online','mailPause','../client','getMailQueues'];(function(_0x5a4ab5,_0x319454){var _0x10c740=function(_0x281e53){while(--_0x281e53){_0x5a4ab5['push'](_0x5a4ab5['shift']());}};_0x10c740(++_0x319454);}(_0x9244,0x1d6));var _0x4924=function(_0x59ec62,_0xda44bd){_0x59ec62=_0x59ec62-0x0;var _0x345215=_0x9244[_0x59ec62];return _0x345215;};'use strict';var client=require(_0x4924('0x0'));exports[_0x4924('0x1')]=function(){return function(){return client['Request'](_0x4924('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x4924('0x3'),_0x4924('0x4')],'include':[{'model':'User','as':'Agents','attributes':['id',_0x4924('0x5'),_0x4924('0x6'),_0x4924('0x7')]}]},'log':_0x4924('0x1')});};};
\ No newline at end of file
+var _0x8f56=['strategy','User','Agents','online','../client','getMailQueues','Request','GetMailQueue','name','timeout'];(function(_0xbd5f59,_0x56f0e9){var _0x1e7054=function(_0x783f4){while(--_0x783f4){_0xbd5f59['push'](_0xbd5f59['shift']());}};_0x1e7054(++_0x56f0e9);}(_0x8f56,0x72));var _0x68f5=function(_0x366e4b,_0x1b6cc3){_0x366e4b=_0x366e4b-0x0;var _0x330b0b=_0x8f56[_0x366e4b];return _0x330b0b;};'use strict';var client=require(_0x68f5('0x0'));exports[_0x68f5('0x1')]=function(){return function(){return client[_0x68f5('0x2')](_0x68f5('0x3'),{'options':{'raw':![],'attributes':['id',_0x68f5('0x4'),_0x68f5('0x5'),_0x68f5('0x6')],'include':[{'model':_0x68f5('0x7'),'as':_0x68f5('0x8'),'attributes':['id',_0x68f5('0x4'),_0x68f5('0x9'),'mailPause']}]},'log':_0x68f5('0x1')});};};
\ No newline at end of file
index 3ae97a1..f690f6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6057=['DESC','../client','create','Request','CreateMailQueueReport','update','UpdateMailQueueReport'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6057,0x71));var _0x7605=function(_0x2a7b8e,_0x50ffce){_0x2a7b8e=_0x2a7b8e-0x0;var _0x29b5c8=_0x6057[_0x2a7b8e];return _0x29b5c8;};'use strict';var client=require(_0x7605('0x0'));exports[_0x7605('0x1')]=function(_0x8e3ce8){return client[_0x7605('0x2')](_0x7605('0x3'),{'body':_0x8e3ce8,'log':_0x7605('0x3')});};exports[_0x7605('0x4')]=function(_0x4371a4,_0x349107){return client[_0x7605('0x2')](_0x7605('0x5'),{'body':_0x349107,'options':{'where':{'uniqueid':_0x4371a4},'order':[['id',_0x7605('0x6')]],'limit':0x1},'log':_0x7605('0x5')});};
\ No newline at end of file
+var _0xb515=['create','Request','update','DESC','UpdateMailQueueReport','../client'];(function(_0x4651cf,_0x5635){var _0x2e8340=function(_0x5bd7d1){while(--_0x5bd7d1){_0x4651cf['push'](_0x4651cf['shift']());}};_0x2e8340(++_0x5635);}(_0xb515,0x1df));var _0x5b51=function(_0x3c6ae2,_0x5c52d8){_0x3c6ae2=_0x3c6ae2-0x0;var _0x4edda=_0xb515[_0x3c6ae2];return _0x4edda;};'use strict';var client=require(_0x5b51('0x0'));exports[_0x5b51('0x1')]=function(_0x56a342){return client[_0x5b51('0x2')]('CreateMailQueueReport',{'body':_0x56a342,'log':'CreateMailQueueReport'});};exports[_0x5b51('0x3')]=function(_0x472937,_0x2a6944){return client[_0x5b51('0x2')]('UpdateMailQueueReport',{'body':_0x2a6944,'options':{'where':{'uniqueid':_0x472937},'order':[['id',_0x5b51('0x4')]],'limit':0x1},'log':_0x5b51('0x5')});};
\ No newline at end of file
index fc90082..46e487f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x208f=['updateOpenchannelInteraction','addTags','AddTagsToOpenchannelInteraction','addTagsToChatInteraction','update','Request','UpdateOpenchannelInteraction'];(function(_0x2748b1,_0x46137c){var _0x5a5e2c=function(_0x1ecc52){while(--_0x1ecc52){_0x2748b1['push'](_0x2748b1['shift']());}};_0x5a5e2c(++_0x46137c);}(_0x208f,0x100));var _0xf208=function(_0x252714,_0x266564){_0x252714=_0x252714-0x0;var _0x2c71b4=_0x208f[_0x252714];return _0x2c71b4;};'use strict';var client=require('../client');exports[_0xf208('0x0')]=function(_0x1239f9,_0x20c728){return client[_0xf208('0x1')](_0xf208('0x2'),{'body':_0x20c728,'options':{'where':{'id':_0x1239f9}},'log':_0xf208('0x3')});};exports[_0xf208('0x4')]=function(_0x145f2d,_0x20e7b1){return client[_0xf208('0x1')](_0xf208('0x5'),{'body':_0x20e7b1,'options':{'where':{'id':_0x145f2d}},'log':_0xf208('0x6')});};
\ No newline at end of file
+var _0x3d06=['addTags','Request','../client','UpdateOpenchannelInteraction','updateOpenchannelInteraction'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3d06,0x12e));var _0x63d0=function(_0x3f4891,_0x4e6f62){_0x3f4891=_0x3f4891-0x0;var _0x54f2d8=_0x3d06[_0x3f4891];return _0x54f2d8;};'use strict';var client=require(_0x63d0('0x0'));exports['update']=function(_0x1b30fe,_0x412ea6){return client['Request'](_0x63d0('0x1'),{'body':_0x412ea6,'options':{'where':{'id':_0x1b30fe}},'log':_0x63d0('0x2')});};exports[_0x63d0('0x3')]=function(_0x42ecea,_0x31a58e){return client[_0x63d0('0x4')]('AddTagsToOpenchannelInteraction',{'body':_0x31a58e,'options':{'where':{'id':_0x42ecea}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
index d8dada4..1e64a8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c58=['../client','Request','CreateOpenchannelMessage'];(function(_0x14ec75,_0x56a3d4){var _0x40b9e9=function(_0x4d2f39){while(--_0x4d2f39){_0x14ec75['push'](_0x14ec75['shift']());}};_0x40b9e9(++_0x56a3d4);}(_0x8c58,0xba));var _0x88c5=function(_0x174ef5,_0x256e8e){_0x174ef5=_0x174ef5-0x0;var _0x1cc379=_0x8c58[_0x174ef5];return _0x1cc379;};'use strict';var client=require(_0x88c5('0x0'));exports['create']=function(_0x30a201){return client[_0x88c5('0x1')](_0x88c5('0x2'),{'body':_0x30a201,'log':'createOpenchannelMessage'});};
\ No newline at end of file
+var _0xd5e4=['createOpenchannelMessage','../client','create','Request','CreateOpenchannelMessage'];(function(_0x20c9b2,_0x55d7b1){var _0x2c6030=function(_0x10845f){while(--_0x10845f){_0x20c9b2['push'](_0x20c9b2['shift']());}};_0x2c6030(++_0x55d7b1);}(_0xd5e4,0x150));var _0x4d5e=function(_0x1b088d,_0x11d94c){_0x1b088d=_0x1b088d-0x0;var _0xe138eb=_0xd5e4[_0x1b088d];return _0xe138eb;};'use strict';var client=require(_0x4d5e('0x0'));exports[_0x4d5e('0x1')]=function(_0x35f460){return client[_0x4d5e('0x2')](_0x4d5e('0x3'),{'body':_0x35f460,'log':_0x4d5e('0x4')});};
\ No newline at end of file
index 7e23679..907e6fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0482=['name','timeout','strategy','User','online','openchannelPause','getOpenchannelQueues','../client','GetOpenchannelQueue'];(function(_0x4f431d,_0xd51a3b){var _0x4f31e1=function(_0x1c688d){while(--_0x1c688d){_0x4f431d['push'](_0x4f431d['shift']());}};_0x4f31e1(++_0xd51a3b);}(_0x0482,0xf1));var _0x2048=function(_0x5b87ce,_0x20b7f6){_0x5b87ce=_0x5b87ce-0x0;var _0x597aa7=_0x0482[_0x5b87ce];return _0x597aa7;};'use strict';var client=require(_0x2048('0x0'));exports['getOpenchannelQueues']=function(){return function(){return client['Request'](_0x2048('0x1'),{'options':{'raw':![],'attributes':['id',_0x2048('0x2'),_0x2048('0x3'),_0x2048('0x4')],'include':[{'model':_0x2048('0x5'),'as':'Agents','attributes':['id',_0x2048('0x2'),_0x2048('0x6'),_0x2048('0x7')]}]},'log':_0x2048('0x8')});};};
\ No newline at end of file
+var _0x5550=['User','Agents','online','getOpenchannelQueues','../client','Request','name','timeout','strategy'];(function(_0x4cc55c,_0x28cfa5){var _0x38fc1b=function(_0x1b3068){while(--_0x1b3068){_0x4cc55c['push'](_0x4cc55c['shift']());}};_0x38fc1b(++_0x28cfa5);}(_0x5550,0xdc));var _0x0555=function(_0x2e9fb9,_0x538aa8){_0x2e9fb9=_0x2e9fb9-0x0;var _0x22572f=_0x5550[_0x2e9fb9];return _0x22572f;};'use strict';var client=require(_0x0555('0x0'));exports['getOpenchannelQueues']=function(){return function(){return client[_0x0555('0x1')]('GetOpenchannelQueue',{'options':{'raw':![],'attributes':['id',_0x0555('0x2'),_0x0555('0x3'),_0x0555('0x4')],'include':[{'model':_0x0555('0x5'),'as':_0x0555('0x6'),'attributes':['id',_0x0555('0x2'),_0x0555('0x7'),'openchannelPause']}]},'log':_0x0555('0x8')});};};
\ No newline at end of file
index 24fbf7a..7c78d69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4784=['CreateOpenchannelQueueReport','update','UpdateOpenchannelQueueReport','DESC','../client','create','Request'];(function(_0xf5a7d7,_0x1fc97d){var _0x122a60=function(_0x5a8548){while(--_0x5a8548){_0xf5a7d7['push'](_0xf5a7d7['shift']());}};_0x122a60(++_0x1fc97d);}(_0x4784,0x1ee));var _0x4478=function(_0x59f7cf,_0x5d5028){_0x59f7cf=_0x59f7cf-0x0;var _0x34e382=_0x4784[_0x59f7cf];return _0x34e382;};'use strict';var client=require(_0x4478('0x0'));exports[_0x4478('0x1')]=function(_0x635fac){return client[_0x4478('0x2')]('CreateOpenchannelQueueReport',{'body':_0x635fac,'log':_0x4478('0x3')});};exports[_0x4478('0x4')]=function(_0x4ee247,_0x247902){return client[_0x4478('0x2')](_0x4478('0x5'),{'body':_0x247902,'options':{'where':{'uniqueid':_0x4ee247},'order':[['id',_0x4478('0x6')]],'limit':0x1},'log':_0x4478('0x5')});};
\ No newline at end of file
+var _0x76c1=['CreateOpenchannelQueueReport','update','../client','create','Request'];(function(_0x2b2c53,_0x4bcf9b){var _0x311ec2=function(_0x4a8e72){while(--_0x4a8e72){_0x2b2c53['push'](_0x2b2c53['shift']());}};_0x311ec2(++_0x4bcf9b);}(_0x76c1,0x1b5));var _0x176c=function(_0x14fad0,_0x278d75){_0x14fad0=_0x14fad0-0x0;var _0x5c665f=_0x76c1[_0x14fad0];return _0x5c665f;};'use strict';var client=require(_0x176c('0x0'));exports[_0x176c('0x1')]=function(_0x43a14e){return client[_0x176c('0x2')](_0x176c('0x3'),{'body':_0x43a14e,'log':_0x176c('0x3')});};exports[_0x176c('0x4')]=function(_0x59d61a,_0x2e5d42){return client['Request']('UpdateOpenchannelQueueReport',{'body':_0x2e5d42,'options':{'where':{'uniqueid':_0x59d61a},'order':[['id','DESC']],'limit':0x1},'log':'UpdateOpenchannelQueueReport'});};
\ No newline at end of file
index e8933ac..042355a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff96=['update','Request','UpdateSmsInteraction','updateSmsInteraction','addTags','AddTagsToSmsInteraction','../client'];(function(_0xca78f1,_0x2c90c8){var _0xda435e=function(_0x375d7a){while(--_0x375d7a){_0xca78f1['push'](_0xca78f1['shift']());}};_0xda435e(++_0x2c90c8);}(_0xff96,0x179));var _0x6ff9=function(_0x24106c,_0x367a6f){_0x24106c=_0x24106c-0x0;var _0xbaeb73=_0xff96[_0x24106c];return _0xbaeb73;};'use strict';var client=require(_0x6ff9('0x0'));exports[_0x6ff9('0x1')]=function(_0xadd107,_0x43f7f9){return client[_0x6ff9('0x2')](_0x6ff9('0x3'),{'body':_0x43f7f9,'options':{'where':{'id':_0xadd107}},'log':_0x6ff9('0x4')});};exports[_0x6ff9('0x5')]=function(_0x3561d7,_0x207c06){return client[_0x6ff9('0x2')](_0x6ff9('0x6'),{'body':_0x207c06,'options':{'where':{'id':_0x3561d7}},'log':'addTagsToSmsInteraction'});};
\ No newline at end of file
+var _0xeec6=['Request','addTagsToSmsInteraction','../client','update','UpdateSmsInteraction','updateSmsInteraction','addTags'];(function(_0x32c012,_0xe3c576){var _0x48562e=function(_0x505228){while(--_0x505228){_0x32c012['push'](_0x32c012['shift']());}};_0x48562e(++_0xe3c576);}(_0xeec6,0x1c2));var _0x6eec=function(_0x3b2244,_0x54873f){_0x3b2244=_0x3b2244-0x0;var _0x2dcc14=_0xeec6[_0x3b2244];return _0x2dcc14;};'use strict';var client=require(_0x6eec('0x0'));exports[_0x6eec('0x1')]=function(_0x16ccaa,_0x33cc53){return client['Request'](_0x6eec('0x2'),{'body':_0x33cc53,'options':{'where':{'id':_0x16ccaa}},'log':_0x6eec('0x3')});};exports[_0x6eec('0x4')]=function(_0x2d7a15,_0x3e7b6b){return client[_0x6eec('0x5')]('AddTagsToSmsInteraction',{'body':_0x3e7b6b,'options':{'where':{'id':_0x2d7a15}},'log':_0x6eec('0x6')});};
\ No newline at end of file
index edce450..2ecdf1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcaab=['../client','create','createSmsMessage'];(function(_0x51e79c,_0x51485e){var _0x2467be=function(_0xbf70f0){while(--_0xbf70f0){_0x51e79c['push'](_0x51e79c['shift']());}};_0x2467be(++_0x51485e);}(_0xcaab,0x13b));var _0xbcaa=function(_0x726f6,_0x3dd79b){_0x726f6=_0x726f6-0x0;var _0x1e7668=_0xcaab[_0x726f6];return _0x1e7668;};'use strict';var client=require(_0xbcaa('0x0'));exports[_0xbcaa('0x1')]=function(_0x2bc713){return client['Request']('CreateSmsMessage',{'body':_0x2bc713,'log':_0xbcaa('0x2')});};
\ No newline at end of file
+var _0xb788=['CreateSmsMessage','../client','create','Request'];(function(_0x43f6c3,_0x5b2fa4){var _0x5d698d=function(_0x303211){while(--_0x303211){_0x43f6c3['push'](_0x43f6c3['shift']());}};_0x5d698d(++_0x5b2fa4);}(_0xb788,0xd1));var _0x8b78=function(_0x802997,_0x5534a2){_0x802997=_0x802997-0x0;var _0x35c641=_0xb788[_0x802997];return _0x35c641;};'use strict';var client=require(_0x8b78('0x0'));exports[_0x8b78('0x1')]=function(_0x57db32){return client[_0x8b78('0x2')](_0x8b78('0x3'),{'body':_0x57db32,'log':'createSmsMessage'});};
\ No newline at end of file
index 1e220fd..2f87acb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['timeout','strategy','User','Agents','name','../client','getSmsQueues'];(function(_0x2d9fde,_0x3f7ec9){var _0x5d3e7d=function(_0x211b9d){while(--_0x211b9d){_0x2d9fde['push'](_0x2d9fde['shift']());}};_0x5d3e7d(++_0x3f7ec9);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var client=require(_0x0d8b('0x0'));exports[_0x0d8b('0x1')]=function(){return function(){return client['Request']('GetSmsQueue',{'options':{'raw':![],'attributes':['id','name',_0x0d8b('0x2'),_0x0d8b('0x3')],'include':[{'model':_0x0d8b('0x4'),'as':_0x0d8b('0x5'),'attributes':['id',_0x0d8b('0x6'),'online','smsPause']}]},'log':_0x0d8b('0x1')});};};
\ No newline at end of file
+var _0xb7e7=['online','../client','Request','name','strategy','Agents'];(function(_0x3409bc,_0x10db18){var _0x1f48b3=function(_0x2d6bc2){while(--_0x2d6bc2){_0x3409bc['push'](_0x3409bc['shift']());}};_0x1f48b3(++_0x10db18);}(_0xb7e7,0x121));var _0x7b7e=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0xb7e7[_0x3e5086];return _0xfeb102;};'use strict';var client=require(_0x7b7e('0x0'));exports['getSmsQueues']=function(){return function(){return client[_0x7b7e('0x1')]('GetSmsQueue',{'options':{'raw':![],'attributes':['id',_0x7b7e('0x2'),'timeout',_0x7b7e('0x3')],'include':[{'model':'User','as':_0x7b7e('0x4'),'attributes':['id',_0x7b7e('0x2'),_0x7b7e('0x5'),'smsPause']}]},'log':'getSmsQueues'});};};
\ No newline at end of file
index 93ba6b2..d0b511b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['create','CreateSmsQueueReport','update','UpdateSmsQueueReport','../client'];(function(_0x1fa666,_0x5c83e0){var _0x652c46=function(_0x3eafa0){while(--_0x3eafa0){_0x1fa666['push'](_0x1fa666['shift']());}};_0x652c46(++_0x5c83e0);}(_0x70e0,0x17b));var _0x070e=function(_0x3f021c,_0x15ec18){_0x3f021c=_0x3f021c-0x0;var _0x6ee323=_0x70e0[_0x3f021c];return _0x6ee323;};'use strict';var client=require(_0x070e('0x0'));exports[_0x070e('0x1')]=function(_0x198c2e){return client['Request']('CreateSmsQueueReport',{'body':_0x198c2e,'log':_0x070e('0x2')});};exports[_0x070e('0x3')]=function(_0x277d32,_0x2593e5){return client['Request'](_0x070e('0x4'),{'body':_0x2593e5,'options':{'where':{'uniqueid':_0x277d32},'order':[['id','DESC']],'limit':0x1},'log':_0x070e('0x4')});};
\ No newline at end of file
+var _0x9c44=['Request','CreateSmsQueueReport','update','UpdateSmsQueueReport'];(function(_0x12cf59,_0xaa6e36){var _0x2d9c89=function(_0x46506f){while(--_0x46506f){_0x12cf59['push'](_0x12cf59['shift']());}};_0x2d9c89(++_0xaa6e36);}(_0x9c44,0x178));var _0x49c4=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x9c44[_0x3bf83f];return _0x22c4a9;};'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
index 29e5167..f1e9615 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(_0x3c74ec,_0x1dd020){var _0x361649=function(_0x4faea7){while(--_0x4faea7){_0x3c74ec['push'](_0x3c74ec['shift']());}};_0x361649(++_0x1dd020);}(_0xa9e0,0x123));var _0x0a9e=function(_0x138f59,_0x1b53fb){_0x138f59=_0x138f59-0x0;var _0x3d114d=_0xa9e0[_0x138f59];return _0x3d114d;};'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(_0x3a9cae,_0x3b2a2d){var _0x3b19c5=function(_0x4ad944){while(--_0x4ad944){_0x3a9cae['push'](_0x3a9cae['shift']());}};_0x3b19c5(++_0x3b2a2d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2b10c6,_0x185590){_0x2b10c6=_0x2b10c6-0x0;var _0x3789d2=_0xa9e0[_0x2b10c6];return _0x3789d2;};'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 5f6b506..769fc02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5353=['updateWhatsappInteraction','addTags','AddTagsToWhatsappInteraction','../client','Request','UpdateWhatsappInteraction'];(function(_0x326539,_0x108886){var _0x2cbb6e=function(_0x47cfa4){while(--_0x47cfa4){_0x326539['push'](_0x326539['shift']());}};_0x2cbb6e(++_0x108886);}(_0x5353,0x12f));var _0x3535=function(_0x15a0c1,_0x595567){_0x15a0c1=_0x15a0c1-0x0;var _0x100e4f=_0x5353[_0x15a0c1];return _0x100e4f;};'use strict';var client=require(_0x3535('0x0'));exports['update']=function(_0x1c3c47,_0x3dd6d4){return client[_0x3535('0x1')](_0x3535('0x2'),{'body':_0x3dd6d4,'options':{'where':{'id':_0x1c3c47}},'log':_0x3535('0x3')});};exports[_0x3535('0x4')]=function(_0x21ad15,_0xd6adad){return client[_0x3535('0x1')](_0x3535('0x5'),{'body':_0xd6adad,'options':{'where':{'id':_0x21ad15}},'log':'addTagsToWhatsappInteraction'});};
\ No newline at end of file
+var _0xb2ad=['addTagsToWhatsappInteraction','update','Request','UpdateWhatsappInteraction','updateWhatsappInteraction','addTags','AddTagsToWhatsappInteraction'];(function(_0x3a0f77,_0x39f605){var _0x54fd0c=function(_0x46208c){while(--_0x46208c){_0x3a0f77['push'](_0x3a0f77['shift']());}};_0x54fd0c(++_0x39f605);}(_0xb2ad,0x16d));var _0xdb2a=function(_0x1587ca,_0x48c84){_0x1587ca=_0x1587ca-0x0;var _0x5a8b30=_0xb2ad[_0x1587ca];return _0x5a8b30;};'use strict';var client=require('../client');exports[_0xdb2a('0x0')]=function(_0x594832,_0xbe5673){return client[_0xdb2a('0x1')](_0xdb2a('0x2'),{'body':_0xbe5673,'options':{'where':{'id':_0x594832}},'log':_0xdb2a('0x3')});};exports[_0xdb2a('0x4')]=function(_0x505753,_0x244b13){return client[_0xdb2a('0x1')](_0xdb2a('0x5'),{'body':_0x244b13,'options':{'where':{'id':_0x505753}},'log':_0xdb2a('0x6')});};
\ No newline at end of file
index 55a3223..9a226a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x049d=['createWhatsappMessage','../client','CreateWhatsappMessage'];(function(_0x2159e6,_0x55c285){var _0x355dbb=function(_0x31dfa8){while(--_0x31dfa8){_0x2159e6['push'](_0x2159e6['shift']());}};_0x355dbb(++_0x55c285);}(_0x049d,0x9a));var _0xd049=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x049d[_0x321bb2];return _0x9c12ed;};'use strict';var client=require(_0xd049('0x0'));exports['create']=function(_0x52d7cc){return client['Request'](_0xd049('0x1'),{'body':_0x52d7cc,'log':_0xd049('0x2')});};
\ No newline at end of file
+var _0xf493=['create','createWhatsappMessage','../client'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf493,0xbf));var _0x3f49=function(_0x1af17b,_0x3cc150){_0x1af17b=_0x1af17b-0x0;var _0x5782a9=_0xf493[_0x1af17b];return _0x5782a9;};'use strict';var client=require(_0x3f49('0x0'));exports[_0x3f49('0x1')]=function(_0x5cbdcf){return client['Request']('CreateWhatsappMessage',{'body':_0x5cbdcf,'log':_0x3f49('0x2')});};
\ No newline at end of file
index 595c00c..f2203b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c27=['Agents','online','whatsappPause','../client','Request','GetWhatsappQueue','name','timeout','strategy','User'];(function(_0xf2d750,_0x4950cf){var _0x216db7=function(_0xec60a7){while(--_0xec60a7){_0xf2d750['push'](_0xf2d750['shift']());}};_0x216db7(++_0x4950cf);}(_0x2c27,0xe9));var _0x72c2=function(_0x3435d4,_0x2b7273){_0x3435d4=_0x3435d4-0x0;var _0x2a166a=_0x2c27[_0x3435d4];return _0x2a166a;};'use strict';var client=require(_0x72c2('0x0'));exports['getWhatsappQueues']=function(){return function(){return client[_0x72c2('0x1')](_0x72c2('0x2'),{'options':{'raw':![],'attributes':['id',_0x72c2('0x3'),_0x72c2('0x4'),_0x72c2('0x5')],'include':[{'model':_0x72c2('0x6'),'as':_0x72c2('0x7'),'attributes':['id',_0x72c2('0x3'),_0x72c2('0x8'),_0x72c2('0x9')]}]},'log':'getWhatsappQueues'});};};
\ No newline at end of file
+var _0x4a35=['User','Agents','name','online','whatsappPause','../client','getWhatsappQueues','Request','GetWhatsappQueue','timeout','strategy'];(function(_0x5413f5,_0x3154c7){var _0x639288=function(_0x4b85e9){while(--_0x4b85e9){_0x5413f5['push'](_0x5413f5['shift']());}};_0x639288(++_0x3154c7);}(_0x4a35,0x118));var _0x54a3=function(_0x48c90c,_0x4da7b2){_0x48c90c=_0x48c90c-0x0;var _0x110df1=_0x4a35[_0x48c90c];return _0x110df1;};'use strict';var client=require(_0x54a3('0x0'));exports[_0x54a3('0x1')]=function(){return function(){return client[_0x54a3('0x2')](_0x54a3('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x54a3('0x4'),_0x54a3('0x5')],'include':[{'model':_0x54a3('0x6'),'as':_0x54a3('0x7'),'attributes':['id',_0x54a3('0x8'),_0x54a3('0x9'),_0x54a3('0xa')]}]},'log':'getWhatsappQueues'});};};
\ No newline at end of file
index b42665d..c0277eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecc6=['Request','CreateWhatsappQueueReport','update','DESC','UpdateWhatsappQueueReport'];(function(_0x41f89e,_0x1364a3){var _0x1b7e94=function(_0x47735e){while(--_0x47735e){_0x41f89e['push'](_0x41f89e['shift']());}};_0x1b7e94(++_0x1364a3);}(_0xecc6,0x1c2));var _0x6ecc=function(_0x465dc3,_0x3e6b11){_0x465dc3=_0x465dc3-0x0;var _0x3237eb=_0xecc6[_0x465dc3];return _0x3237eb;};'use strict';var client=require('../client');exports['create']=function(_0x140ddc){return client[_0x6ecc('0x0')](_0x6ecc('0x1'),{'body':_0x140ddc,'log':_0x6ecc('0x1')});};exports[_0x6ecc('0x2')]=function(_0x1b897e,_0x1a0d86){return client[_0x6ecc('0x0')]('UpdateWhatsappQueueReport',{'body':_0x1a0d86,'options':{'where':{'uniqueid':_0x1b897e},'order':[['id',_0x6ecc('0x3')]],'limit':0x1},'log':_0x6ecc('0x4')});};
\ No newline at end of file
+var _0x7950=['CreateWhatsappQueueReport','update','UpdateWhatsappQueueReport','../client','Request'];(function(_0xa22961,_0x43b541){var _0x595e29=function(_0x500814){while(--_0x500814){_0xa22961['push'](_0xa22961['shift']());}};_0x595e29(++_0x43b541);}(_0x7950,0x1e8));var _0x0795=function(_0x47a04e,_0x63866f){_0x47a04e=_0x47a04e-0x0;var _0x303625=_0x7950[_0x47a04e];return _0x303625;};'use strict';var client=require(_0x0795('0x0'));exports['create']=function(_0x519ed6){return client[_0x0795('0x1')](_0x0795('0x2'),{'body':_0x519ed6,'log':'CreateWhatsappQueueReport'});};exports[_0x0795('0x3')]=function(_0x7cf953,_0x174da2){return client[_0x0795('0x1')](_0x0795('0x4'),{'body':_0x174da2,'options':{'where':{'uniqueid':_0x7cf953},'order':[['id','DESC']],'limit':0x1},'log':_0x0795('0x4')});};
\ No newline at end of file
index 71489de..0492747 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1e6=['complete','[%s][AGENT]\x20ROUTING\x20END','next','error','[%s][AGENT]\x20agent\x20not\x20found\x20%s','log','[%s][QUEUE]\x20%s','stack','validate','lodash','util','seq-queue','routing','./strategy','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','info','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','consequence','[%s][AGENT]\x20%s','map','message','join','stop','agents','timeout','createQueue','atimeout','channel','START:%s','end','[%s][AGENT]\x20ROUTING\x20STOPPED','rules'];(function(_0x204e3d,_0x465250){var _0x309146=function(_0x39f450){while(--_0x39f450){_0x204e3d['push'](_0x204e3d['shift']());}};_0x309146(++_0x465250);}(_0xc1e6,0xe6));var _0x6c1e=function(_0x240057,_0x572431){_0x240057=_0x240057-0x0;var _0x76f60d=_0xc1e6[_0x240057];return _0x76f60d;};'use strict';var schema=require(_0x6c1e('0x0'));var _=require(_0x6c1e('0x1'));var util=require(_0x6c1e('0x2'));var seqqueue=require(_0x6c1e('0x3'));var logger=require('../../../../config/logger')(_0x6c1e('0x4'));var strategy=require(_0x6c1e('0x5'));var queue=schema({'name':{'type':_0x6c1e('0x6'),'required':!![],'message':_0x6c1e('0x7')},'timeout':{'type':_0x6c1e('0x8'),'message':_0x6c1e('0x9')}});function writeLog(_0x91ff9,_0x28513b,_0x3d6fd4){return logger[_0x6c1e('0xa')](util[_0x6c1e('0xb')](_0x6c1e('0xc'),_0x91ff9,_0x28513b[_0x6c1e('0xd')],_0x3d6fd4));}function handleFindAgent(_0x466fc9){return function(_0x27cedc){return _0x27cedc[_0x6c1e('0xd')]['toLowerCase']()===_0x466fc9['toLowerCase']();};}exports[_0x6c1e('0xe')]=function(_0x5e7011,_0x5343d7,_0x102d14,_0x238ef9){return function(_0x513a6a){try{var _0x4e8ddf={'name':_0x5343d7[0x0],'timeout':_0x5343d7[0x1]};var _0x3b91c5=queue['validate'](_0x4e8ddf,{'typecast':!![]});if(_0x3b91c5['length']){logger['error'](_0x6c1e('0xf'),_0x5e7011,_[_0x6c1e('0x10')](_0x3b91c5,_0x6c1e('0x11'))[_0x6c1e('0x12')](',\x20'));_0x513a6a[_0x6c1e('0x13')]();}else{var _0x3ff9ce=_['find'](_0x102d14[_0x6c1e('0x14')],handleFindAgent(_0x4e8ddf[_0x6c1e('0xd')]));if(_0x3ff9ce){var _0x5d8d4a=(_0x4e8ddf[_0x6c1e('0x15')]||0xa)*0x3e8;var _0x272573,_0x381a6d;var _0x58941b=seqqueue[_0x6c1e('0x16')](_0x5d8d4a);_0x58941b['id']=_0x5e7011;_0x58941b[_0x6c1e('0x17')]=_0x5d8d4a;_0x58941b[_0x6c1e('0x18')]=_0x238ef9[_0x6c1e('0x18')];writeLog(_0x5e7011,_0x3ff9ce,util[_0x6c1e('0xb')](_0x6c1e('0x19'),_0x5d8d4a));_0x102d14['rules'][_0x5e7011]['on'](_0x6c1e('0x1a'),function(){logger[_0x6c1e('0xa')](_0x6c1e('0x1b'),_0x5e7011);clearTimeout(_0x381a6d);_0x381a6d=undefined;_0x58941b['close']();if(_0x102d14[_0x6c1e('0x1c')][_0x5e7011]){delete _0x102d14['rules'][_0x5e7011];}_0x513a6a[_0x6c1e('0x13')]();});_0x102d14[_0x6c1e('0x1c')][_0x5e7011]['on'](_0x6c1e('0x1d'),function(){if(_0x102d14[_0x6c1e('0x1c')][_0x5e7011]){delete _0x102d14[_0x6c1e('0x1c')][_0x5e7011];}});_0x381a6d=setTimeout(function(){logger[_0x6c1e('0xa')](_0x6c1e('0x1e'),_0x5e7011);clearTimeout(_0x381a6d);_0x58941b['close']();_0x513a6a[_0x6c1e('0x1f')]();},_0x5d8d4a);strategy['agent'](_0x58941b,_0x3ff9ce,_0x102d14,_0x238ef9);}else{logger[_0x6c1e('0x20')](_0x6c1e('0x21'),_0x5e7011,_0x4e8ddf[_0x6c1e('0xd')]);_0x513a6a[_0x6c1e('0x13')]();}}}catch(_0x26c5b4){console[_0x6c1e('0x22')](_0x26c5b4);logger['error'](_0x6c1e('0x23'),_0x5e7011,_0x26c5b4[_0x6c1e('0x24')]);_0x513a6a[_0x6c1e('0x13')]();}};};
\ No newline at end of file
+var _0xad6d=['close','rules','complete','agent','[%s][AGENT]\x20agent\x20not\x20found\x20%s','log','[%s][QUEUE]\x20%s','stack','validate','lodash','util','seq-queue','../../../../config/logger','routing','./strategy','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','info','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','consequence','length','error','[%s][AGENT]\x20%s','map','join','stop','find','agents','timeout','createQueue','atimeout','channel','format','START:%s','end','[%s][AGENT]\x20ROUTING\x20STOPPED'];(function(_0x1aaa65,_0x202aa1){var _0x199191=function(_0x4e98b3){while(--_0x4e98b3){_0x1aaa65['push'](_0x1aaa65['shift']());}};_0x199191(++_0x202aa1);}(_0xad6d,0xa8));var _0xdad6=function(_0x2c5505,_0x2a7c7a){_0x2c5505=_0x2c5505-0x0;var _0x331581=_0xad6d[_0x2c5505];return _0x331581;};'use strict';var schema=require(_0xdad6('0x0'));var _=require(_0xdad6('0x1'));var util=require(_0xdad6('0x2'));var seqqueue=require(_0xdad6('0x3'));var logger=require(_0xdad6('0x4'))(_0xdad6('0x5'));var strategy=require(_0xdad6('0x6'));var queue=schema({'name':{'type':_0xdad6('0x7'),'required':!![],'message':_0xdad6('0x8')},'timeout':{'type':_0xdad6('0x9'),'message':_0xdad6('0xa')}});function writeLog(_0x67387b,_0xcd84b9,_0x37d763){return logger[_0xdad6('0xb')](util['format'](_0xdad6('0xc'),_0x67387b,_0xcd84b9[_0xdad6('0xd')],_0x37d763));}function handleFindAgent(_0x4e0e1f){return function(_0x17b6b2){return _0x17b6b2[_0xdad6('0xd')][_0xdad6('0xe')]()===_0x4e0e1f[_0xdad6('0xe')]();};}exports[_0xdad6('0xf')]=function(_0xb3ce80,_0x452d46,_0x4a2179,_0x3705db){return function(_0x3a9f75){try{var _0x246c2e={'name':_0x452d46[0x0],'timeout':_0x452d46[0x1]};var _0x14cc03=queue[_0xdad6('0x0')](_0x246c2e,{'typecast':!![]});if(_0x14cc03[_0xdad6('0x10')]){logger[_0xdad6('0x11')](_0xdad6('0x12'),_0xb3ce80,_[_0xdad6('0x13')](_0x14cc03,'message')[_0xdad6('0x14')](',\x20'));_0x3a9f75[_0xdad6('0x15')]();}else{var _0x5f26af=_[_0xdad6('0x16')](_0x4a2179[_0xdad6('0x17')],handleFindAgent(_0x246c2e[_0xdad6('0xd')]));if(_0x5f26af){var _0x52f808=(_0x246c2e[_0xdad6('0x18')]||0xa)*0x3e8;var _0x44212d,_0x23d80a;var _0x406cab=seqqueue[_0xdad6('0x19')](_0x52f808);_0x406cab['id']=_0xb3ce80;_0x406cab[_0xdad6('0x1a')]=_0x52f808;_0x406cab[_0xdad6('0x1b')]=_0x3705db[_0xdad6('0x1b')];writeLog(_0xb3ce80,_0x5f26af,util[_0xdad6('0x1c')](_0xdad6('0x1d'),_0x52f808));_0x4a2179['rules'][_0xb3ce80]['on'](_0xdad6('0x1e'),function(){logger[_0xdad6('0xb')](_0xdad6('0x1f'),_0xb3ce80);clearTimeout(_0x23d80a);_0x23d80a=undefined;_0x406cab[_0xdad6('0x20')]();if(_0x4a2179[_0xdad6('0x21')][_0xb3ce80]){delete _0x4a2179[_0xdad6('0x21')][_0xb3ce80];}_0x3a9f75['stop']();});_0x4a2179[_0xdad6('0x21')][_0xb3ce80]['on'](_0xdad6('0x22'),function(){if(_0x4a2179['rules'][_0xb3ce80]){delete _0x4a2179[_0xdad6('0x21')][_0xb3ce80];}});_0x23d80a=setTimeout(function(){logger[_0xdad6('0xb')]('[%s][AGENT]\x20ROUTING\x20END',_0xb3ce80);clearTimeout(_0x23d80a);_0x406cab[_0xdad6('0x20')]();_0x3a9f75['next']();},_0x52f808);strategy[_0xdad6('0x23')](_0x406cab,_0x5f26af,_0x4a2179,_0x3705db);}else{logger[_0xdad6('0x11')](_0xdad6('0x24'),_0xb3ce80,_0x246c2e[_0xdad6('0xd')]);_0x3a9f75[_0xdad6('0x15')]();}}}catch(_0x1e411e){console[_0xdad6('0x25')](_0x1e411e);logger['error'](_0xdad6('0x26'),_0xb3ce80,_0x1e411e[_0xdad6('0x27')]);_0x3a9f75[_0xdad6('0x15')]();}};};
\ No newline at end of file
index 7977a97..71d0939 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2db1=['../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','isNil','interaction','info','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','sms','channel','whatsapp','phone','ChatWebsiteId','account','AccountId','upperFirst','created','body','getMustacheRender','Message','create','then','catch','error','[%s][AMAZONLEX]\x20%s','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','stop','LexRuntime','$LATEST','toString','message','next','amazonlex','providerResponse','stringify','dialogState','Failed','lodash','moment','aws-sdk','./utils'];(function(_0x26c7c6,_0x2796bc){var _0x3130b7=function(_0x9381e4){while(--_0x9381e4){_0x26c7c6['push'](_0x26c7c6['shift']());}};_0x3130b7(++_0x2796bc);}(_0x2db1,0x1ac));var _0x12db=function(_0x3e6d97,_0xec789){_0x3e6d97=_0x3e6d97-0x0;var _0x45035e=_0x2db1[_0x3e6d97];return _0x45035e;};'use strict';var _=require(_0x12db('0x0'));var moment=require(_0x12db('0x1'));var AWS=require(_0x12db('0x2'));var utils=require(_0x12db('0x3'));var logger=require('../../../../config/logger')('routing');var rpc={'chatMessage':require(_0x12db('0x4')),'openchannelMessage':require(_0x12db('0x5')),'mailMessage':require(_0x12db('0x6')),'smsMessage':require(_0x12db('0x7')),'faxMessage':require(_0x12db('0x8')),'whatsappMessage':require(_0x12db('0x9'))};exports[_0x12db('0xa')]=function(_0xc3150d,_0x4d2fc5){return function(_0x11a01d){try{if(!_[_0x12db('0xb')](this[_0x12db('0xc')]['UserId'])){logger[_0x12db('0xd')]('[%s][AMAZONLEX]\x20%s',_0xc3150d,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x11a01d['next']();}var _0x3d4131={'ContactId':this[_0x12db('0xe')]['id'],'sentAt':moment()[_0x12db('0xf')](_0x12db('0x10')),'direction':_0x12db('0x11')};if(this['channel']===_0x12db('0x12')||this[_0x12db('0x13')]===_0x12db('0x14')){_0x3d4131[_0x12db('0x15')]=this[_0x12db('0xc')][_0x12db('0x15')];}var _0x4e2142=this[_0x12db('0x13')];if(_0x4e2142==='chat'){_0x3d4131[_0x12db('0x16')]=this[_0x12db('0x17')]['id'];}else{_0x3d4131[_['upperFirst'](_0x4e2142)+_0x12db('0x18')]=this['account']['id'];}_0x3d4131[_[_0x12db('0x19')](_0x4e2142)+'InteractionId']=this['interaction']['id'];if(this[_0x12db('0xc')][_0x12db('0x1a')]){var _0x1ef918=_0x4d2fc5[0x4];if(!_['isEmpty'](_0x1ef918)){_0x3d4131[_0x12db('0x1b')]=utils[_0x12db('0x1c')](_0x1ef918,this);return rpc[_0x4e2142+_0x12db('0x1d')][_0x12db('0x1e')](_0x3d4131)[_0x12db('0x1f')](function(_0x18985f){logger['info']('[%s][AMAZONLEX]\x20%s',_0xc3150d,_0x3d4131['body']);})[_0x12db('0x20')](function(_0x460d43){logger[_0x12db('0x21')](_0x12db('0x22'),_0xc3150d,JSON['stringify'](_0x460d43));})['finally'](function(){logger[_0x12db('0xd')](_0x12db('0x23'),_0xc3150d);_0x11a01d['stop']();});}else{logger[_0x12db('0xd')](_0x12db('0x24'),_0xc3150d);_0x11a01d[_0x12db('0x25')]();}}else{var _0x31fd2a=this;var _0x5ad331=new AWS[(_0x12db('0x26'))]({'accessKeyId':_0x4d2fc5[0x0],'secretAccessKey':_0x4d2fc5[0x1],'region':_0x4d2fc5[0x2]});var _0x46c663={'botAlias':_0x12db('0x27'),'botName':_0x4d2fc5[0x3],'inputText':this['message'][_0x12db('0x1b')],'userId':this[_0x12db('0x13')]+':'+this['interaction']['id'][_0x12db('0x28')]()};_0x5ad331['postText'](_0x46c663,function(_0x1dc7a5,_0x391009){if(_0x1dc7a5){logger[_0x12db('0x21')]('[%s][AMAZONLEX]\x20%s',_0xc3150d,_0x1dc7a5[_0x12db('0x29')]);_0x11a01d[_0x12db('0x2a')]();}else if(_0x391009&&_0x391009[_0x12db('0x29')]){_0x31fd2a[_0x12db('0x1b')][_0x12db('0x2b')]=_0x391009;_0x3d4131[_0x12db('0x1b')]=_0x391009[_0x12db('0x29')];_0x3d4131['providerName']=_0x12db('0x2b');_0x3d4131[_0x12db('0x2c')]=JSON[_0x12db('0x2d')](_0x391009);return rpc[_0x4e2142+_0x12db('0x1d')][_0x12db('0x1e')](_0x3d4131)['then'](function(_0x472a83){logger[_0x12db('0xd')]('[%s][AMAZONLEX]\x20%s',_0xc3150d,_0x3d4131[_0x12db('0x1b')]);if(_0x391009[_0x12db('0x2e')]==_0x12db('0x2f')){_0x11a01d[_0x12db('0x2a')]();}else{_0x11a01d['stop']();}})[_0x12db('0x20')](function(_0x316113){logger[_0x12db('0x21')](_0x12db('0x22'),_0xc3150d,JSON[_0x12db('0x2d')](_0x316113));_0x11a01d[_0x12db('0x2a')]();});}else{_0x11a01d[_0x12db('0x2a')]();}});}}catch(_0x5ed0f1){logger[_0x12db('0x21')](_0x12db('0x22'),_0xc3150d,JSON[_0x12db('0x2d')](_0x5ed0f1));_0x11a01d[_0x12db('0x25')]();}};};
\ No newline at end of file
+var _0x67ee=['isEmpty','body','getMustacheRender','Message','then','catch','error','stringify','finally','stop','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','LexRuntime','$LATEST','message','toString','postText','amazonlex','providerName','providerResponse','create','Failed','lodash','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','interaction','UserId','info','[%s][AMAZONLEX]\x20%s','next','YYYY-MM-DD\x20HH:mm:ss','out','sms','channel','phone','chat','upperFirst','AccountId','account','created'];(function(_0x3f72aa,_0x25a236){var _0x2f631c=function(_0x353122){while(--_0x353122){_0x3f72aa['push'](_0x3f72aa['shift']());}};_0x2f631c(++_0x25a236);}(_0x67ee,0x73));var _0xe67e=function(_0x3c795b,_0x337e3b){_0x3c795b=_0x3c795b-0x0;var _0x57870e=_0x67ee[_0x3c795b];return _0x57870e;};'use strict';var _=require(_0xe67e('0x0'));var moment=require('moment');var AWS=require('aws-sdk');var utils=require(_0xe67e('0x1'));var logger=require(_0xe67e('0x2'))(_0xe67e('0x3'));var rpc={'chatMessage':require(_0xe67e('0x4')),'openchannelMessage':require(_0xe67e('0x5')),'mailMessage':require(_0xe67e('0x6')),'smsMessage':require(_0xe67e('0x7')),'faxMessage':require(_0xe67e('0x8')),'whatsappMessage':require(_0xe67e('0x9'))};exports[_0xe67e('0xa')]=function(_0x40bebe,_0x391502){return function(_0x4a8384){try{if(!_['isNil'](this[_0xe67e('0xb')][_0xe67e('0xc')])){logger[_0xe67e('0xd')](_0xe67e('0xe'),_0x40bebe,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x4a8384[_0xe67e('0xf')]();}var _0x50be85={'ContactId':this['contact']['id'],'sentAt':moment()['format'](_0xe67e('0x10')),'direction':_0xe67e('0x11')};if(this['channel']===_0xe67e('0x12')||this[_0xe67e('0x13')]==='whatsapp'){_0x50be85[_0xe67e('0x14')]=this[_0xe67e('0xb')][_0xe67e('0x14')];}var _0x483508=this['channel'];if(_0x483508===_0xe67e('0x15')){_0x50be85['ChatWebsiteId']=this['account']['id'];}else{_0x50be85[_[_0xe67e('0x16')](_0x483508)+_0xe67e('0x17')]=this[_0xe67e('0x18')]['id'];}_0x50be85[_[_0xe67e('0x16')](_0x483508)+'InteractionId']=this[_0xe67e('0xb')]['id'];if(this[_0xe67e('0xb')][_0xe67e('0x19')]){var _0x474849=_0x391502[0x4];if(!_[_0xe67e('0x1a')](_0x474849)){_0x50be85[_0xe67e('0x1b')]=utils[_0xe67e('0x1c')](_0x474849,this);return rpc[_0x483508+_0xe67e('0x1d')]['create'](_0x50be85)[_0xe67e('0x1e')](function(_0x55d897){logger[_0xe67e('0xd')](_0xe67e('0xe'),_0x40bebe,_0x50be85['body']);})[_0xe67e('0x1f')](function(_0x679a5b){logger[_0xe67e('0x20')](_0xe67e('0xe'),_0x40bebe,JSON[_0xe67e('0x21')](_0x679a5b));})[_0xe67e('0x22')](function(){logger[_0xe67e('0xd')]('[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x40bebe);_0x4a8384[_0xe67e('0x23')]();});}else{logger[_0xe67e('0xd')](_0xe67e('0x24'),_0x40bebe);_0x4a8384[_0xe67e('0x23')]();}}else{var _0x11db3b=this;var _0x2d3768=new AWS[(_0xe67e('0x25'))]({'accessKeyId':_0x391502[0x0],'secretAccessKey':_0x391502[0x1],'region':_0x391502[0x2]});var _0xd6410d={'botAlias':_0xe67e('0x26'),'botName':_0x391502[0x3],'inputText':this[_0xe67e('0x27')]['body'],'userId':this[_0xe67e('0x13')]+':'+this[_0xe67e('0xb')]['id'][_0xe67e('0x28')]()};_0x2d3768[_0xe67e('0x29')](_0xd6410d,function(_0x4251b9,_0x4739c1){if(_0x4251b9){logger[_0xe67e('0x20')](_0xe67e('0xe'),_0x40bebe,_0x4251b9[_0xe67e('0x27')]);_0x4a8384[_0xe67e('0xf')]();}else if(_0x4739c1&&_0x4739c1['message']){_0x11db3b[_0xe67e('0x1b')][_0xe67e('0x2a')]=_0x4739c1;_0x50be85[_0xe67e('0x1b')]=_0x4739c1['message'];_0x50be85[_0xe67e('0x2b')]=_0xe67e('0x2a');_0x50be85[_0xe67e('0x2c')]=JSON[_0xe67e('0x21')](_0x4739c1);return rpc[_0x483508+_0xe67e('0x1d')][_0xe67e('0x2d')](_0x50be85)[_0xe67e('0x1e')](function(_0x42dbc1){logger['info']('[%s][AMAZONLEX]\x20%s',_0x40bebe,_0x50be85[_0xe67e('0x1b')]);if(_0x4739c1['dialogState']==_0xe67e('0x2e')){_0x4a8384[_0xe67e('0xf')]();}else{_0x4a8384[_0xe67e('0x23')]();}})['catch'](function(_0xfe774){logger[_0xe67e('0x20')](_0xe67e('0xe'),_0x40bebe,JSON[_0xe67e('0x21')](_0xfe774));_0x4a8384[_0xe67e('0xf')]();});}else{_0x4a8384[_0xe67e('0xf')]();}});}}catch(_0x1f59d1){logger[_0xe67e('0x20')](_0xe67e('0xe'),_0x40bebe,JSON[_0xe67e('0x21')](_0x1f59d1));_0x4a8384['stop']();}};};
\ No newline at end of file
index bfde46a..652f274 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0726=['routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','../../rpc/chatInteraction','../../rpc/mailInteraction','../../mailRpc','channel','mail','body','isAutoreply','info','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','next','interaction','created','[%s][AUTOREPLY]\x20%s','Autoreply\x20already\x20sent','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','One\x20Time\x20already\x20sent','contact','format','getMustacheRender','message','from','phone','subject','startsWith','Re:','Re:\x20','chat','account','upperFirst','InteractionId','inReplyTo','messageId','html','<div\x20id=\x22xm-mail-content\x22>','<div','headers','auto-replied','All','auto_reply','sendMailMessage','then','[%s][AUTOREPLY]\x20SMTP\x20SENT','Message','create','stringify','error','[RPC][%s][AUTOREPLY]\x20%s','finally','resolve','autoreplyExecuted','Interaction','update','catch','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','stop','lodash','./utils','../../../../config/logger'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0726,0x13d));var _0x6072=function(_0x1177f0,_0x3d4757){_0x1177f0=_0x1177f0-0x0;var _0x3ad3a3=_0x0726[_0x1177f0];return _0x3ad3a3;};'use strict';var _=require(_0x6072('0x0'));var moment=require('moment');var utils=require(_0x6072('0x1'));var logger=require(_0x6072('0x2'))(_0x6072('0x3'));var rpc={'chatMessage':require(_0x6072('0x4')),'openchannelMessage':require(_0x6072('0x5')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x6072('0x6')),'faxMessage':require(_0x6072('0x7')),'whatsappMessage':require(_0x6072('0x8')),'chatInteraction':require(_0x6072('0x9')),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'mailInteraction':require(_0x6072('0xa')),'smsInteraction':require('../../rpc/smsInteraction'),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require('../../rpc/whatsappInteraction')};var mailRpc=require(_0x6072('0xb'));exports['consequence']=function(_0x4aa68e,_0x30b177,_0x200282,_0x168fe1){return function(_0xd1cab8){try{var _0x19d8fa=this[_0x6072('0xc')];if(_0x19d8fa===_0x6072('0xd')&&_0x168fe1[_0x6072('0xe')][_0x6072('0xf')]){logger[_0x6072('0x10')]('[%s][AUTOREPLY]\x20%s',_0x4aa68e,_0x6072('0x11'));return _0xd1cab8[_0x6072('0x12')]();}if(_0x30b177[0x0]==='1'&&(_['isNil'](this[_0x6072('0x13')][_0x6072('0x14')])||!this[_0x6072('0x13')][_0x6072('0x14')])){logger[_0x6072('0x10')](_0x6072('0x15'),_0x4aa68e,_0x6072('0x16'));return _0xd1cab8[_0x6072('0x12')]();}if(_0x30b177[0x0]==='2'&&this[_0x6072('0x13')]['autoreplyExecuted']){logger[_0x6072('0x10')](_0x6072('0x17'),_0x4aa68e,_0x6072('0x18'));return _0xd1cab8[_0x6072('0x12')]();}var _0xc6eb5b={'ContactId':this[_0x6072('0x19')]['id'],'sentAt':moment()[_0x6072('0x1a')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':'out'};if(this[_0x6072('0xc')]===_0x6072('0xd')){_0xc6eb5b[_0x6072('0xe')]=utils[_0x6072('0x1b')](_0x30b177[0x2],this);}else{_0xc6eb5b[_0x6072('0xe')]=utils['getMustacheRender'](_0x30b177[0x1],this);}if(this[_0x6072('0x1c')]){_0xc6eb5b['to']=this[_0x6072('0x1c')][_0x6072('0x1d')]||'';if(this[_0x6072('0xc')]===_0x6072('0xd')&&_0x30b177[0x1]==='1'){_0xc6eb5b['cc']=this[_0x6072('0x1c')]['cc']||'';}_0xc6eb5b[_0x6072('0x1d')]=this[_0x6072('0x1c')]['to']||'';_0xc6eb5b[_0x6072('0x1e')]=this['message'][_0x6072('0x1e')]||'';_0xc6eb5b['read']=!![];if(this['message'][_0x6072('0x1f')]){_0xc6eb5b[_0x6072('0x1f')]='';_0xc6eb5b[_0x6072('0x1f')]+=_[_0x6072('0x20')](this['message'][_0x6072('0x1f')],_0x6072('0x21'))?'':_0x6072('0x22');_0xc6eb5b[_0x6072('0x1f')]+=this[_0x6072('0x1c')][_0x6072('0x1f')];}}if(this['channel']===_0x6072('0x23')){_0xc6eb5b['ChatWebsiteId']=this[_0x6072('0x24')]['id'];}else{_0xc6eb5b[_[_0x6072('0x25')](this['channel'])+'AccountId']=this[_0x6072('0x24')]['id'];}_0xc6eb5b[_[_0x6072('0x25')](this['channel'])+_0x6072('0x26')]=this[_0x6072('0x13')]['id'];var _0x2a3e5f=this[_0x6072('0x13')];if(rpc[this[_0x6072('0xc')]+'Message']){if(this['channel']===_0x6072('0xd')){_0xc6eb5b[_0x6072('0x27')]=this[_0x6072('0x1c')][_0x6072('0x28')];_0xc6eb5b[_0x6072('0x29')]=_0x6072('0x2a')+_['replace'](_0xc6eb5b['body'],'<div\x20id=\x22xm-mail-content\x22',_0x6072('0x2b'))+'</div>';_0xc6eb5b[_0x6072('0x2c')]={'Auto-Submitted':_0x6072('0x2d'),'X-Auto-Response-Suppress':_0x6072('0x2e'),'Precedence':_0x6072('0x2f')};return mailRpc[_0x6072('0x30')](this[_0x6072('0x24')]['smtpOptions'],_0xc6eb5b)[_0x6072('0x31')](function(_0x2ea446){logger[_0x6072('0x10')](_0x6072('0x32'),_0x4aa68e);_0xc6eb5b[_0x6072('0x28')]=_0x2ea446[_0x6072('0x1c')]['messageId'];return rpc[_0x19d8fa+_0x6072('0x33')][_0x6072('0x34')](_0xc6eb5b);})[_0x6072('0x31')](function(_0x5cdf58){logger['info'](_0x6072('0x15'),_0x4aa68e,JSON[_0x6072('0x35')](_0x5cdf58));})['catch'](function(_0x2948e0){logger[_0x6072('0x36')](_0x6072('0x37'),_0x4aa68e,JSON[_0x6072('0x35')](_0x2948e0));})[_0x6072('0x38')](function(){Promise[_0x6072('0x39')]()['then'](function(){if(_0x30b177[0x0]!=='2'||_0x2a3e5f[_0x6072('0x3a')])return;return rpc[_0x19d8fa+_0x6072('0x3b')][_0x6072('0x3c')](_0x2a3e5f['id'],{'autoreplyExecuted':!![]})['then'](function(_0x467a26){logger[_0x6072('0x10')](_0x6072('0x17'),_0x4aa68e,JSON[_0x6072('0x35')](_0x467a26));})[_0x6072('0x3d')](function(_0x2cff2a){logger[_0x6072('0x36')](_0x6072('0x3e'),_0x4aa68e,JSON['stringify'](_0x2cff2a));});})[_0x6072('0x31')](function(){_0xd1cab8[_0x6072('0x12')]();});});}else{return rpc[this[_0x6072('0xc')]+'Message'][_0x6072('0x34')](_0xc6eb5b)['then'](function(){logger[_0x6072('0x10')](_0x6072('0x15'),_0x4aa68e,_0xc6eb5b[_0x6072('0xe')]);})[_0x6072('0x3d')](function(_0x33e433){logger[_0x6072('0x36')]('[%s][AUTOREPLY]\x20%s',_0x4aa68e,JSON[_0x6072('0x35')](_0x33e433));})['finally'](function(){Promise['resolve']()['then'](function(){if(_0x30b177[0x0]!=='2'||_0x2a3e5f['autoreplyExecuted'])return;return rpc[_0x19d8fa+_0x6072('0x3b')][_0x6072('0x3c')](_0x2a3e5f['id'],{'autoreplyExecuted':!![]})['then'](function(_0x3f22cf){logger[_0x6072('0x10')]('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x4aa68e,JSON[_0x6072('0x35')](_0x3f22cf));})['catch'](function(_0x5d172b){logger[_0x6072('0x36')](_0x6072('0x3e'),_0x4aa68e,JSON[_0x6072('0x35')](_0x5d172b));});})[_0x6072('0x31')](function(){_0xd1cab8['next']();});});}}}catch(_0xe43330){logger[_0x6072('0x36')]('[%s][AUTOREPLY]\x20%s',_0x4aa68e,JSON[_0x6072('0x35')](_0xe43330));_0xd1cab8[_0x6072('0x3f')]();}};};
\ No newline at end of file
+var _0x919e=['account','upperFirst','AccountId','InteractionId','Message','messageId','html','replace','<div\x20id=\x22xm-mail-content\x22','</div>','headers','auto-replied','All','auto_reply','sendMailMessage','then','[%s][AUTOREPLY]\x20SMTP\x20SENT','create','stringify','catch','[RPC][%s][AUTOREPLY]\x20%s','finally','autoreplyExecuted','update','error','resolve','Interaction','stop','moment','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','mail','body','isAutoreply','info','[%s][AUTOREPLY]\x20%s','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','isNil','interaction','created','Autoreply\x20already\x20sent','next','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','One\x20Time\x20already\x20sent','contact','out','getMustacheRender','message','channel','from','phone','read','subject','Re:','ChatWebsiteId'];(function(_0x9c8b29,_0x10aa00){var _0xcf7065=function(_0x27a507){while(--_0x27a507){_0x9c8b29['push'](_0x9c8b29['shift']());}};_0xcf7065(++_0x10aa00);}(_0x919e,0x110));var _0xe919=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x919e[_0x14add3];return _0x4a174f;};'use strict';var _=require('lodash');var moment=require(_0xe919('0x0'));var utils=require('./utils');var logger=require('../../../../config/logger')('routing');var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0xe919('0x1')),'smsMessage':require(_0xe919('0x2')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0xe919('0x3')),'chatInteraction':require(_0xe919('0x4')),'openchannelInteraction':require(_0xe919('0x5')),'mailInteraction':require(_0xe919('0x6')),'smsInteraction':require('../../rpc/smsInteraction'),'faxInteraction':require(_0xe919('0x7')),'whatsappInteraction':require(_0xe919('0x8'))};var mailRpc=require('../../mailRpc');exports['consequence']=function(_0x17a1fb,_0x1a2f41,_0x9a55ae,_0x175b02){return function(_0x353b6e){try{var _0x31108f=this['channel'];if(_0x31108f===_0xe919('0x9')&&_0x175b02[_0xe919('0xa')][_0xe919('0xb')]){logger[_0xe919('0xc')](_0xe919('0xd'),_0x17a1fb,_0xe919('0xe'));return _0x353b6e['next']();}if(_0x1a2f41[0x0]==='1'&&(_[_0xe919('0xf')](this[_0xe919('0x10')][_0xe919('0x11')])||!this['interaction'][_0xe919('0x11')])){logger[_0xe919('0xc')](_0xe919('0xd'),_0x17a1fb,_0xe919('0x12'));return _0x353b6e[_0xe919('0x13')]();}if(_0x1a2f41[0x0]==='2'&&this[_0xe919('0x10')]['autoreplyExecuted']){logger['info'](_0xe919('0x14'),_0x17a1fb,_0xe919('0x15'));return _0x353b6e[_0xe919('0x13')]();}var _0x3cbb07={'ContactId':this[_0xe919('0x16')]['id'],'sentAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0xe919('0x17')};if(this['channel']===_0xe919('0x9')){_0x3cbb07[_0xe919('0xa')]=utils[_0xe919('0x18')](_0x1a2f41[0x2],this);}else{_0x3cbb07[_0xe919('0xa')]=utils[_0xe919('0x18')](_0x1a2f41[0x1],this);}if(this[_0xe919('0x19')]){_0x3cbb07['to']=this[_0xe919('0x19')]['from']||'';if(this[_0xe919('0x1a')]===_0xe919('0x9')&&_0x1a2f41[0x1]==='1'){_0x3cbb07['cc']=this[_0xe919('0x19')]['cc']||'';}_0x3cbb07[_0xe919('0x1b')]=this['message']['to']||'';_0x3cbb07[_0xe919('0x1c')]=this[_0xe919('0x19')][_0xe919('0x1c')]||'';_0x3cbb07[_0xe919('0x1d')]=!![];if(this[_0xe919('0x19')]['subject']){_0x3cbb07[_0xe919('0x1e')]='';_0x3cbb07[_0xe919('0x1e')]+=_['startsWith'](this[_0xe919('0x19')][_0xe919('0x1e')],_0xe919('0x1f'))?'':'Re:\x20';_0x3cbb07[_0xe919('0x1e')]+=this[_0xe919('0x19')][_0xe919('0x1e')];}}if(this[_0xe919('0x1a')]==='chat'){_0x3cbb07[_0xe919('0x20')]=this[_0xe919('0x21')]['id'];}else{_0x3cbb07[_[_0xe919('0x22')](this['channel'])+_0xe919('0x23')]=this[_0xe919('0x21')]['id'];}_0x3cbb07[_[_0xe919('0x22')](this['channel'])+_0xe919('0x24')]=this[_0xe919('0x10')]['id'];var _0x1f5c7e=this[_0xe919('0x10')];if(rpc[this[_0xe919('0x1a')]+_0xe919('0x25')]){if(this[_0xe919('0x1a')]==='mail'){_0x3cbb07['inReplyTo']=this[_0xe919('0x19')][_0xe919('0x26')];_0x3cbb07[_0xe919('0x27')]='<div\x20id=\x22xm-mail-content\x22>'+_[_0xe919('0x28')](_0x3cbb07[_0xe919('0xa')],_0xe919('0x29'),'<div')+_0xe919('0x2a');_0x3cbb07[_0xe919('0x2b')]={'Auto-Submitted':_0xe919('0x2c'),'X-Auto-Response-Suppress':_0xe919('0x2d'),'Precedence':_0xe919('0x2e')};return mailRpc[_0xe919('0x2f')](this[_0xe919('0x21')]['smtpOptions'],_0x3cbb07)[_0xe919('0x30')](function(_0x3ef087){logger[_0xe919('0xc')](_0xe919('0x31'),_0x17a1fb);_0x3cbb07[_0xe919('0x26')]=_0x3ef087[_0xe919('0x19')][_0xe919('0x26')];return rpc[_0x31108f+_0xe919('0x25')][_0xe919('0x32')](_0x3cbb07);})['then'](function(_0x3e584c){logger['info'](_0xe919('0xd'),_0x17a1fb,JSON[_0xe919('0x33')](_0x3e584c));})[_0xe919('0x34')](function(_0x570c1b){logger['error'](_0xe919('0x35'),_0x17a1fb,JSON[_0xe919('0x33')](_0x570c1b));})[_0xe919('0x36')](function(){Promise['resolve']()[_0xe919('0x30')](function(){if(_0x1a2f41[0x0]!=='2'||_0x1f5c7e[_0xe919('0x37')])return;return rpc[_0x31108f+'Interaction'][_0xe919('0x38')](_0x1f5c7e['id'],{'autoreplyExecuted':!![]})[_0xe919('0x30')](function(_0x1ffabc){logger['info'](_0xe919('0x14'),_0x17a1fb,JSON[_0xe919('0x33')](_0x1ffabc));})[_0xe919('0x34')](function(_0x26f332){logger[_0xe919('0x39')]('[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x17a1fb,JSON[_0xe919('0x33')](_0x26f332));});})[_0xe919('0x30')](function(){_0x353b6e['next']();});});}else{return rpc[this['channel']+_0xe919('0x25')]['create'](_0x3cbb07)[_0xe919('0x30')](function(){logger[_0xe919('0xc')](_0xe919('0xd'),_0x17a1fb,_0x3cbb07[_0xe919('0xa')]);})[_0xe919('0x34')](function(_0xd93092){logger[_0xe919('0x39')](_0xe919('0xd'),_0x17a1fb,JSON[_0xe919('0x33')](_0xd93092));})[_0xe919('0x36')](function(){Promise[_0xe919('0x3a')]()['then'](function(){if(_0x1a2f41[0x0]!=='2'||_0x1f5c7e[_0xe919('0x37')])return;return rpc[_0x31108f+_0xe919('0x3b')][_0xe919('0x38')](_0x1f5c7e['id'],{'autoreplyExecuted':!![]})['then'](function(_0x359ce4){logger[_0xe919('0xc')]('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x17a1fb,JSON[_0xe919('0x33')](_0x359ce4));})['catch'](function(_0x98e1c3){logger[_0xe919('0x39')]('[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x17a1fb,JSON[_0xe919('0x33')](_0x98e1c3));});})[_0xe919('0x30')](function(){_0x353b6e['next']();});});}}}catch(_0x3bf116){logger[_0xe919('0x39')](_0xe919('0xd'),_0x17a1fb,JSON[_0xe919('0x33')](_0x3bf116));_0x353b6e[_0xe919('0x3c')]();}};};
\ No newline at end of file
index 1366abc..1bbb145 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d74=['format','YYYY-MM-DD\x20HH:mm:ss','system','channel','Interaction','update','then','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','interaction','catch','error','[%s][CLOSE]\x20%s','stringify','finally','stop','moment','../../../../config/logger','routing','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','info','[%s][CLOSE]\x20reason\x20%s'];(function(_0x320626,_0x3cc862){var _0x757d40=function(_0x282e60){while(--_0x282e60){_0x320626['push'](_0x320626['shift']());}};_0x757d40(++_0x3cc862);}(_0x7d74,0xe7));var _0x47d7=function(_0x1cc8fe,_0x105328){_0x1cc8fe=_0x1cc8fe-0x0;var _0x230054=_0x7d74[_0x1cc8fe];return _0x230054;};'use strict';var moment=require(_0x47d7('0x0'));var logger=require(_0x47d7('0x1'))(_0x47d7('0x2'));var rpc={'chatInteraction':require(_0x47d7('0x3')),'openchannelInteraction':require(_0x47d7('0x4')),'smsInteraction':require('../../rpc/smsInteraction'),'mailInteraction':require(_0x47d7('0x5')),'faxInteraction':require(_0x47d7('0x6')),'whatsappInteraction':require('../../rpc/whatsappInteraction')};exports['consequence']=function(_0x38fa3b,_0x59207c,_0x138481,_0x4e4f4b){return function(_0x1d7cf1){try{logger[_0x47d7('0x7')](_0x47d7('0x8'),_0x38fa3b,_0x59207c[0x0]);var _0x2dd9b2={'closed':0x1,'closedAt':moment()[_0x47d7('0x9')](_0x47d7('0xa')),'closeReason':_0x47d7('0xb'),'disposition':_0x59207c[0x0]};if(rpc[_0x4e4f4b[_0x47d7('0xc')]+_0x47d7('0xd')]){rpc[_0x4e4f4b['channel']+_0x47d7('0xd')][_0x47d7('0xe')](_0x4e4f4b['interaction']['id'],_0x2dd9b2)[_0x47d7('0xf')](function(_0x4e1c24){logger[_0x47d7('0x7')](_0x47d7('0x10'),_0x38fa3b,_0x4e4f4b[_0x47d7('0x11')]['id']);})[_0x47d7('0x12')](function(_0x42d3c5){logger[_0x47d7('0x13')](_0x47d7('0x14'),_0x38fa3b,JSON[_0x47d7('0x15')](_0x42d3c5));})[_0x47d7('0x16')](function(){_0x1d7cf1['stop']();});}}catch(_0x53cedc){logger['error'](_0x47d7('0x14'),_0x38fa3b,JSON['stringify'](_0x53cedc));_0x1d7cf1[_0x47d7('0x17')]();}};};
\ No newline at end of file
+var _0x01b8=['YYYY-MM-DD\x20HH:mm:ss','system','channel','Interaction','update','interaction','then','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','error','[%s][CLOSE]\x20%s','stringify','finally','stop','moment','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','info','[%s][CLOSE]\x20reason\x20%s','format'];(function(_0x416f61,_0x39f975){var _0x22e9f9=function(_0x3df151){while(--_0x3df151){_0x416f61['push'](_0x416f61['shift']());}};_0x22e9f9(++_0x39f975);}(_0x01b8,0xdf));var _0x801b=function(_0x8e7772,_0x9d77b0){_0x8e7772=_0x8e7772-0x0;var _0x408200=_0x01b8[_0x8e7772];return _0x408200;};'use strict';var moment=require(_0x801b('0x0'));var logger=require('../../../../config/logger')('routing');var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0x801b('0x1')),'smsInteraction':require(_0x801b('0x2')),'mailInteraction':require('../../rpc/mailInteraction'),'faxInteraction':require(_0x801b('0x3')),'whatsappInteraction':require(_0x801b('0x4'))};exports['consequence']=function(_0x16da06,_0x4ab401,_0x28c225,_0x1667f2){return function(_0x4d4f0b){try{logger[_0x801b('0x5')](_0x801b('0x6'),_0x16da06,_0x4ab401[0x0]);var _0x39696c={'closed':0x1,'closedAt':moment()[_0x801b('0x7')](_0x801b('0x8')),'closeReason':_0x801b('0x9'),'disposition':_0x4ab401[0x0]};if(rpc[_0x1667f2[_0x801b('0xa')]+_0x801b('0xb')]){rpc[_0x1667f2[_0x801b('0xa')]+_0x801b('0xb')][_0x801b('0xc')](_0x1667f2[_0x801b('0xd')]['id'],_0x39696c)[_0x801b('0xe')](function(_0x78999c){logger['info'](_0x801b('0xf'),_0x16da06,_0x1667f2[_0x801b('0xd')]['id']);})['catch'](function(_0x22f534){logger[_0x801b('0x10')](_0x801b('0x11'),_0x16da06,JSON[_0x801b('0x12')](_0x22f534));})[_0x801b('0x13')](function(){_0x4d4f0b[_0x801b('0x14')]();});}}catch(_0x468d54){logger[_0x801b('0x10')](_0x801b('0x11'),_0x16da06,JSON[_0x801b('0x12')](_0x468d54));_0x4d4f0b['stop']();}};};
\ No newline at end of file
index 767b112..4b46952 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc48=['md5','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/smsMessage','isNil','UserId','info','[%s][DIALOGFLOW]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp','phone','interaction','chat','account','upperFirst','AccountId','InteractionId','body','getMustacheRender','Message','then','catch','stringify','finally','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','message','result','fulfillment','providerName','create','endConversation','next','error','lodash','moment','apiai-promise'];(function(_0x328f1e,_0x5e9aa0){var _0xa51835=function(_0x385aeb){while(--_0x385aeb){_0x328f1e['push'](_0x328f1e['shift']());}};_0xa51835(++_0x5e9aa0);}(_0xbc48,0x111));var _0x8bc4=function(_0xbbf184,_0x44865b){_0xbbf184=_0xbbf184-0x0;var _0x5afcb0=_0xbc48[_0xbbf184];return _0x5afcb0;};'use strict';var _=require(_0x8bc4('0x0'));var moment=require(_0x8bc4('0x1'));var apiai=require(_0x8bc4('0x2'));var md5=require(_0x8bc4('0x3'));var utils=require('./utils');var logger=require(_0x8bc4('0x4'))(_0x8bc4('0x5'));var rpc={'chatMessage':require(_0x8bc4('0x6')),'openchannelMessage':require(_0x8bc4('0x7')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x8bc4('0x8')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require('../../rpc/whatsappMessage')};exports['consequence']=function(_0xaaff2d,_0x5708fe){return function(_0x58df27){try{if(!_[_0x8bc4('0x9')](this['interaction'][_0x8bc4('0xa')])){logger[_0x8bc4('0xb')](_0x8bc4('0xc'),_0xaaff2d,_0x8bc4('0xd'));return _0x58df27['next']();}var _0x1595b2={'ContactId':this[_0x8bc4('0xe')]['id'],'sentAt':moment()[_0x8bc4('0xf')](_0x8bc4('0x10')),'direction':_0x8bc4('0x11')};if(this[_0x8bc4('0x12')]===_0x8bc4('0x13')||this[_0x8bc4('0x12')]===_0x8bc4('0x14')){_0x1595b2[_0x8bc4('0x15')]=this[_0x8bc4('0x16')][_0x8bc4('0x15')];}var _0x80c304=this[_0x8bc4('0x12')];if(_0x80c304===_0x8bc4('0x17')){_0x1595b2['ChatWebsiteId']=this[_0x8bc4('0x18')]['id'];}else{_0x1595b2[_[_0x8bc4('0x19')](_0x80c304)+_0x8bc4('0x1a')]=this[_0x8bc4('0x18')]['id'];}_0x1595b2[_[_0x8bc4('0x19')](_0x80c304)+_0x8bc4('0x1b')]=this['interaction']['id'];if(this['interaction']['created']){var _0x36714f=_0x5708fe[0x2];if(!_['isEmpty'](_0x36714f)){_0x1595b2[_0x8bc4('0x1c')]=utils[_0x8bc4('0x1d')](_0x36714f,this);return rpc[_0x80c304+_0x8bc4('0x1e')]['create'](_0x1595b2)[_0x8bc4('0x1f')](function(_0x968929){logger['info'](_0x8bc4('0xc'),_0xaaff2d,_0x1595b2['body']);})[_0x8bc4('0x20')](function(_0x54400a){logger['error'](_0x8bc4('0xc'),_0xaaff2d,JSON[_0x8bc4('0x21')](_0x54400a));})[_0x8bc4('0x22')](function(){logger[_0x8bc4('0xb')](_0x8bc4('0x23'),_0xaaff2d);_0x58df27[_0x8bc4('0x24')]();});}else{logger[_0x8bc4('0xb')](_0x8bc4('0x25'),_0xaaff2d);_0x58df27[_0x8bc4('0x24')]();}}else{var _0x3b402f=this;var _0x148fda=apiai(_0x5708fe[0x0],{'language':_0x5708fe[0x1]||'en'});return _0x148fda['textRequest'](this[_0x8bc4('0x26')][_0x8bc4('0x1c')],{'sessionId':md5(this[_0x8bc4('0x16')]['id'])})['then'](function(_0x327e90){_0x3b402f[_0x8bc4('0x1c')]['dialogflow']=_0x327e90;_0x1595b2[_0x8bc4('0x1c')]=_0x327e90[_0x8bc4('0x27')][_0x8bc4('0x28')]['speech'];_0x1595b2[_0x8bc4('0x29')]='dialogflow';_0x1595b2['providerResponse']=JSON[_0x8bc4('0x21')](_0x327e90);return rpc[_0x80c304+_0x8bc4('0x1e')][_0x8bc4('0x2a')](_0x1595b2)[_0x8bc4('0x1f')](function(_0x16c2a8){logger[_0x8bc4('0xb')](_0x8bc4('0xc'),_0xaaff2d,_0x1595b2[_0x8bc4('0x1c')]);if(_0x327e90['result']['metadata'][_0x8bc4('0x2b')]){_0x58df27[_0x8bc4('0x2c')]();}else{_0x58df27[_0x8bc4('0x24')]();}})[_0x8bc4('0x20')](function(_0x134760){logger[_0x8bc4('0x2d')]('[%s][DIALOGFLOW]\x20%s',_0xaaff2d,JSON[_0x8bc4('0x21')](_0x134760));_0x58df27[_0x8bc4('0x2c')]();});})[_0x8bc4('0x20')](function(_0x26452e){logger['error'](_0x8bc4('0xc'),_0xaaff2d,_0x26452e[_0x8bc4('0x26')]);_0x58df27[_0x8bc4('0x2c')]();});}}catch(_0x3af06f){logger[_0x8bc4('0x2d')]('[%s][DIALOGFLOW]\x20%s',_0xaaff2d,JSON[_0x8bc4('0x21')](_0x3af06f));_0x58df27['stop']();}};};
\ No newline at end of file
+var _0xb242=['Message','create','then','[%s][DIALOGFLOW]\x20%s','error','stringify','finally','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','dialogflow','speech','providerName','providerResponse','metadata','endConversation','next','catch','message','moment','apiai-promise','md5','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/smsMessage','../../rpc/faxMessage','consequence','isNil','UserId','info','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','contact','out','sms','channel','whatsapp','phone','chat','ChatWebsiteId','account','AccountId','InteractionId','interaction','created','isEmpty','body'];(function(_0x185af4,_0x2baef9){var _0x2cb564=function(_0x40bca4){while(--_0x40bca4){_0x185af4['push'](_0x185af4['shift']());}};_0x2cb564(++_0x2baef9);}(_0xb242,0x1f3));var _0x2b24=function(_0x335271,_0x5025f2){_0x335271=_0x335271-0x0;var _0xa9fff8=_0xb242[_0x335271];return _0xa9fff8;};'use strict';var _=require('lodash');var moment=require(_0x2b24('0x0'));var apiai=require(_0x2b24('0x1'));var md5=require(_0x2b24('0x2'));var utils=require(_0x2b24('0x3'));var logger=require(_0x2b24('0x4'))(_0x2b24('0x5'));var rpc={'chatMessage':require(_0x2b24('0x6')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x2b24('0x7')),'faxMessage':require(_0x2b24('0x8')),'whatsappMessage':require('../../rpc/whatsappMessage')};exports[_0x2b24('0x9')]=function(_0x477e45,_0x179d9a){return function(_0x53345b){try{if(!_[_0x2b24('0xa')](this['interaction'][_0x2b24('0xb')])){logger[_0x2b24('0xc')]('[%s][DIALOGFLOW]\x20%s',_0x477e45,_0x2b24('0xd'));return _0x53345b['next']();}var _0x24efd2={'ContactId':this[_0x2b24('0xe')]['id'],'sentAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0x2b24('0xf')};if(this['channel']===_0x2b24('0x10')||this[_0x2b24('0x11')]===_0x2b24('0x12')){_0x24efd2[_0x2b24('0x13')]=this['interaction']['phone'];}var _0x1051d8=this[_0x2b24('0x11')];if(_0x1051d8===_0x2b24('0x14')){_0x24efd2[_0x2b24('0x15')]=this[_0x2b24('0x16')]['id'];}else{_0x24efd2[_['upperFirst'](_0x1051d8)+_0x2b24('0x17')]=this[_0x2b24('0x16')]['id'];}_0x24efd2[_['upperFirst'](_0x1051d8)+_0x2b24('0x18')]=this[_0x2b24('0x19')]['id'];if(this['interaction'][_0x2b24('0x1a')]){var _0x46f786=_0x179d9a[0x2];if(!_[_0x2b24('0x1b')](_0x46f786)){_0x24efd2[_0x2b24('0x1c')]=utils['getMustacheRender'](_0x46f786,this);return rpc[_0x1051d8+_0x2b24('0x1d')][_0x2b24('0x1e')](_0x24efd2)[_0x2b24('0x1f')](function(_0x4951af){logger[_0x2b24('0xc')](_0x2b24('0x20'),_0x477e45,_0x24efd2[_0x2b24('0x1c')]);})['catch'](function(_0x58bff6){logger[_0x2b24('0x21')](_0x2b24('0x20'),_0x477e45,JSON[_0x2b24('0x22')](_0x58bff6));})[_0x2b24('0x23')](function(){logger['info'](_0x2b24('0x24'),_0x477e45);_0x53345b[_0x2b24('0x25')]();});}else{logger[_0x2b24('0xc')](_0x2b24('0x26'),_0x477e45);_0x53345b['stop']();}}else{var _0x504ecf=this;var _0x22c8c5=apiai(_0x179d9a[0x0],{'language':_0x179d9a[0x1]||'en'});return _0x22c8c5['textRequest'](this['message']['body'],{'sessionId':md5(this['interaction']['id'])})[_0x2b24('0x1f')](function(_0x2c0665){_0x504ecf[_0x2b24('0x1c')][_0x2b24('0x27')]=_0x2c0665;_0x24efd2['body']=_0x2c0665['result']['fulfillment'][_0x2b24('0x28')];_0x24efd2[_0x2b24('0x29')]=_0x2b24('0x27');_0x24efd2[_0x2b24('0x2a')]=JSON['stringify'](_0x2c0665);return rpc[_0x1051d8+'Message'][_0x2b24('0x1e')](_0x24efd2)[_0x2b24('0x1f')](function(_0x4e1908){logger['info'](_0x2b24('0x20'),_0x477e45,_0x24efd2['body']);if(_0x2c0665['result'][_0x2b24('0x2b')][_0x2b24('0x2c')]){_0x53345b[_0x2b24('0x2d')]();}else{_0x53345b[_0x2b24('0x25')]();}})['catch'](function(_0x652aa3){logger['error'](_0x2b24('0x20'),_0x477e45,JSON[_0x2b24('0x22')](_0x652aa3));_0x53345b[_0x2b24('0x2d')]();});})[_0x2b24('0x2e')](function(_0x316253){logger[_0x2b24('0x21')](_0x2b24('0x20'),_0x477e45,_0x316253[_0x2b24('0x2f')]);_0x53345b[_0x2b24('0x2d')]();});}}catch(_0x1ab4fe){logger[_0x2b24('0x21')]('[%s][DIALOGFLOW]\x20%s',_0x477e45,JSON[_0x2b24('0x22')](_0x1ab4fe));_0x53345b['stop']();}};};
\ No newline at end of file
index d373663..5af93aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e87=['../../rpc/whatsappMessage','clone','body','Message','create','then','info','catch','error','stringify','isNil','[%s][DIALOGFLOWV2]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','channel','whatsapp','phone','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','interaction','getMustacheRender','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','replace','SessionsClient','sessionPath','length','dialogflowV2','queryResult','diagnosticInfo','fields','end_conversation','boolValue','action','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','intent','name','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','isFallback','DIALOGFLOWV2_LANGUAGECODE','languageCode','DIALOGFLOWV2_QUERYTEXT','queryText','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerName','fulfillmentText','push','message','dialogflow','md5','bluebird','../../../../config/logger','routing','./utils','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/faxMessage'];(function(_0x5783f4,_0x4a9e0a){var _0x28e380=function(_0x1ffc49){while(--_0x1ffc49){_0x5783f4['push'](_0x5783f4['shift']());}};_0x28e380(++_0x4a9e0a);}(_0x5e87,0x1da));var _0x75e8=function(_0x51e288,_0x3976fc){_0x51e288=_0x51e288-0x0;var _0x3fdf2c=_0x5e87[_0x51e288];return _0x3fdf2c;};'use strict';var _=require('lodash');var dialogflow=require(_0x75e8('0x0'));var md5=require(_0x75e8('0x1'));var moment=require('moment');var Promise=require(_0x75e8('0x2'));var logger=require(_0x75e8('0x3'))(_0x75e8('0x4'));var utils=require(_0x75e8('0x5'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x75e8('0x6')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x75e8('0x7')),'faxMessage':require(_0x75e8('0x8')),'whatsappMessage':require(_0x75e8('0x9'))};function createMessage(_0x21505d,_0x21aef8,_0x242bcd,_0x4f2fae){return new Promise(function(_0x4ac9ec,_0x5b6b94){var _0x385f78=_[_0x75e8('0xa')](_0x242bcd);_0x385f78[_0x75e8('0xb')]=_0x4f2fae;return rpc[_0x21aef8+_0x75e8('0xc')][_0x75e8('0xd')](_0x385f78)[_0x75e8('0xe')](function(){logger[_0x75e8('0xf')]('[%s][DIALOGFLOWV2]\x20%s',_0x21505d,_0x385f78[_0x75e8('0xb')]);_0x4ac9ec();})[_0x75e8('0x10')](function(_0x5d7d6b){logger[_0x75e8('0x11')]('[%s][DIALOGFLOWV2]\x20%s',_0x21505d,JSON[_0x75e8('0x12')](_0x5d7d6b));_0x5b6b94(_0x5d7d6b);});});}exports['consequence']=function(_0x47f102,_0x55ef17){return function(_0x173133){try{if(!_[_0x75e8('0x13')](this['interaction']['UserId'])){logger[_0x75e8('0xf')](_0x75e8('0x14'),_0x47f102,_0x75e8('0x15'));return _0x173133[_0x75e8('0x16')]();}var _0x112433={'ContactId':this[_0x75e8('0x17')]['id'],'sentAt':moment()[_0x75e8('0x18')](_0x75e8('0x19')),'direction':'out'};if(this[_0x75e8('0x1a')]==='sms'||this[_0x75e8('0x1a')]===_0x75e8('0x1b')){_0x112433[_0x75e8('0x1c')]=this['interaction'][_0x75e8('0x1c')];}var _0x5c0a96=this[_0x75e8('0x1a')];if(_0x5c0a96===_0x75e8('0x1d')){_0x112433[_0x75e8('0x1e')]=this[_0x75e8('0x1f')]['id'];}else{_0x112433[_[_0x75e8('0x20')](_0x5c0a96)+_0x75e8('0x21')]=this[_0x75e8('0x1f')]['id'];}_0x112433[_['upperFirst'](_0x5c0a96)+_0x75e8('0x22')]=this['interaction']['id'];if(this[_0x75e8('0x23')]['created']){var _0x4ca30b=_0x55ef17[0x4];if(!_['isEmpty'](_0x4ca30b)){_0x112433[_0x75e8('0xb')]=utils[_0x75e8('0x24')](_0x4ca30b,this);return rpc[_0x5c0a96+_0x75e8('0xc')][_0x75e8('0xd')](_0x112433)[_0x75e8('0xe')](function(_0x5211fe){logger['info'](_0x75e8('0x14'),_0x47f102,_0x112433[_0x75e8('0xb')]);})[_0x75e8('0x10')](function(_0x1210af){logger[_0x75e8('0x11')](_0x75e8('0x14'),_0x47f102,JSON[_0x75e8('0x12')](_0x1210af));})['finally'](function(){logger[_0x75e8('0xf')](_0x75e8('0x25'),_0x47f102);_0x173133[_0x75e8('0x26')]();});}else{logger['info'](_0x75e8('0x27'),_0x47f102);_0x173133['stop']();}}else{var _0x5805fc=this;var _0x4d934c=_0x55ef17[0x2][_0x75e8('0x28')](/\\n/g,'\x0a');var _0x429ac4={'credentials':{'private_key':_0x4d934c,'client_email':_0x55ef17[0x1]}};var _0x593f7c=new dialogflow[(_0x75e8('0x29'))](_0x429ac4);var _0x1de92e=_0x593f7c[_0x75e8('0x2a')](_0x55ef17[0x0],md5(_0x5805fc[_0x75e8('0x23')]['id']));var _0x50d826={'session':_0x1de92e,'queryInput':{'text':{'text':_0x5805fc['message'][_0x75e8('0xb')],'languageCode':_0x55ef17[0x3]||'en'}}};return _0x593f7c['detectIntent'](_0x50d826)['then'](function(_0x565d3e){if(_0x565d3e&&_0x565d3e[_0x75e8('0x2b')]){_0x5805fc['body'][_0x75e8('0x2c')]=_0x565d3e;var _0x5a4822=_0x565d3e[0x0];var _0x3ff50e=_0x5a4822[_0x75e8('0x2d')][_0x75e8('0x2e')]&&_0x5a4822[_0x75e8('0x2d')][_0x75e8('0x2e')][_0x75e8('0x2f')]?_0x5a4822['queryResult'][_0x75e8('0x2e')][_0x75e8('0x2f')][_0x75e8('0x30')][_0x75e8('0x31')]:![];_0x5805fc[_0x75e8('0xb')]['DIALOGFLOWV2_ACTION']=_0x5a4822[_0x75e8('0x2d')][_0x75e8('0x32')];_0x5805fc[_0x75e8('0xb')][_0x75e8('0x33')]=_0x5a4822[_0x75e8('0x2d')][_0x75e8('0x34')];_0x5805fc[_0x75e8('0xb')][_0x75e8('0x35')]=_0x5a4822['queryResult'][_0x75e8('0x2e')]&&_0x5a4822['queryResult']['diagnosticInfo']['fields']?_0x5a4822[_0x75e8('0x2d')][_0x75e8('0x2e')][_0x75e8('0x2f')][_0x75e8('0x30')][_0x75e8('0x31')]:![];_0x5805fc['body']['DIALOGFLOWV2_INTENTNAME']=_0x5a4822['queryResult'][_0x75e8('0x36')][_0x75e8('0x37')];_0x5805fc[_0x75e8('0xb')]['DIALOGFLOWV2_INTENTDISPLAYNAME']=_0x5a4822[_0x75e8('0x2d')]['intent'][_0x75e8('0x38')];_0x5805fc[_0x75e8('0xb')][_0x75e8('0x39')]=_0x5a4822[_0x75e8('0x2d')][_0x75e8('0x36')][_0x75e8('0x3a')];_0x5805fc['body'][_0x75e8('0x3b')]=_0x5a4822['queryResult'][_0x75e8('0x3c')];_0x5805fc[_0x75e8('0xb')][_0x75e8('0x3d')]=_0x5a4822['queryResult'][_0x75e8('0x3e')];_0x5805fc[_0x75e8('0xb')][_0x75e8('0x3f')]=_0x5a4822[_0x75e8('0x2d')][_0x75e8('0x40')];_0x112433[_0x75e8('0x41')]=_0x75e8('0x2c');_0x112433['providerResponse']=JSON[_0x75e8('0x12')](_0x565d3e);var _0x37a79f=[];for(var _0x4ebefb=0x0;_0x4ebefb<_0x565d3e[_0x75e8('0x2b')];_0x4ebefb++){var _0x5c9004=_0x565d3e[_0x4ebefb];if(_0x5c9004&&_0x5c9004['queryResult']&&_0x5c9004['queryResult'][_0x75e8('0x42')]){_0x37a79f[_0x75e8('0x43')](createMessage(_0x47f102,_0x5c0a96,_0x112433,_0x5c9004[_0x75e8('0x2d')][_0x75e8('0x42')]));}}return Promise['all'](_0x37a79f)['then'](function(){if(_0x3ff50e){_0x173133[_0x75e8('0x16')]();}else{_0x173133[_0x75e8('0x26')]();}})[_0x75e8('0x10')](function(_0x4a8de9){logger[_0x75e8('0x11')](_0x75e8('0x14'),_0x47f102,JSON[_0x75e8('0x12')](_0x4a8de9));_0x173133[_0x75e8('0x16')]();});}})[_0x75e8('0x10')](function(_0x2672d8){logger[_0x75e8('0x11')](_0x75e8('0x14'),_0x47f102,_0x2672d8[_0x75e8('0x44')]);_0x173133['next']();});}}catch(_0x311d67){logger[_0x75e8('0x11')](_0x75e8('0x14'),_0x47f102,JSON['stringify'](_0x311d67));_0x173133[_0x75e8('0x26')]();}};};
\ No newline at end of file
+var _0x51f2=['name','DIALOGFLOWV2_INTENTDISPLAYNAME','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','isFallback','DIALOGFLOWV2_QUERYTEXT','queryText','DIALOGFLOWV2_SCORE','providerName','providerResponse','fulfillmentText','push','message','lodash','dialogflow','md5','moment','bluebird','../../../../config/logger','routing','./utils','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','clone','body','Message','create','info','[%s][DIALOGFLOWV2]\x20%s','catch','error','stringify','consequence','isNil','interaction','UserId','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','whatsapp','phone','chat','ChatWebsiteId','AccountId','account','upperFirst','InteractionId','created','getMustacheRender','then','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','replace','SessionsClient','sessionPath','length','diagnosticInfo','queryResult','fields','end_conversation','boolValue','DIALOGFLOWV2_ACTION','action','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','DIALOGFLOWV2_ENDCONVERSATION','DIALOGFLOWV2_INTENTNAME'];(function(_0x3d349f,_0xb6f73){var _0x304987=function(_0x34da40){while(--_0x34da40){_0x3d349f['push'](_0x3d349f['shift']());}};_0x304987(++_0xb6f73);}(_0x51f2,0xeb));var _0x251f=function(_0x126c58,_0x386600){_0x126c58=_0x126c58-0x0;var _0x27bcf8=_0x51f2[_0x126c58];return _0x27bcf8;};'use strict';var _=require(_0x251f('0x0'));var dialogflow=require(_0x251f('0x1'));var md5=require(_0x251f('0x2'));var moment=require(_0x251f('0x3'));var Promise=require(_0x251f('0x4'));var logger=require(_0x251f('0x5'))(_0x251f('0x6'));var utils=require(_0x251f('0x7'));var rpc={'chatMessage':require(_0x251f('0x8')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0x251f('0x9')),'smsMessage':require(_0x251f('0xa')),'faxMessage':require(_0x251f('0xb')),'whatsappMessage':require(_0x251f('0xc'))};function createMessage(_0x18c6ab,_0x57150e,_0x1f01da,_0x37469e){return new Promise(function(_0x2cf6e4,_0xb9d142){var _0x4b9792=_[_0x251f('0xd')](_0x1f01da);_0x4b9792[_0x251f('0xe')]=_0x37469e;return rpc[_0x57150e+_0x251f('0xf')][_0x251f('0x10')](_0x4b9792)['then'](function(){logger[_0x251f('0x11')](_0x251f('0x12'),_0x18c6ab,_0x4b9792[_0x251f('0xe')]);_0x2cf6e4();})[_0x251f('0x13')](function(_0x5cf0bd){logger[_0x251f('0x14')](_0x251f('0x12'),_0x18c6ab,JSON[_0x251f('0x15')](_0x5cf0bd));_0xb9d142(_0x5cf0bd);});});}exports[_0x251f('0x16')]=function(_0x13802a,_0x182596){return function(_0xa8a190){try{if(!_[_0x251f('0x17')](this[_0x251f('0x18')][_0x251f('0x19')])){logger[_0x251f('0x11')]('[%s][DIALOGFLOWV2]\x20%s',_0x13802a,_0x251f('0x1a'));return _0xa8a190[_0x251f('0x1b')]();}var _0x4e1492={'ContactId':this[_0x251f('0x1c')]['id'],'sentAt':moment()[_0x251f('0x1d')](_0x251f('0x1e')),'direction':_0x251f('0x1f')};if(this[_0x251f('0x20')]==='sms'||this['channel']===_0x251f('0x21')){_0x4e1492[_0x251f('0x22')]=this[_0x251f('0x18')][_0x251f('0x22')];}var _0x120e62=this['channel'];if(_0x120e62===_0x251f('0x23')){_0x4e1492[_0x251f('0x24')]=this['account']['id'];}else{_0x4e1492[_['upperFirst'](_0x120e62)+_0x251f('0x25')]=this[_0x251f('0x26')]['id'];}_0x4e1492[_[_0x251f('0x27')](_0x120e62)+_0x251f('0x28')]=this[_0x251f('0x18')]['id'];if(this['interaction'][_0x251f('0x29')]){var _0x492612=_0x182596[0x4];if(!_['isEmpty'](_0x492612)){_0x4e1492[_0x251f('0xe')]=utils[_0x251f('0x2a')](_0x492612,this);return rpc[_0x120e62+'Message']['create'](_0x4e1492)[_0x251f('0x2b')](function(_0x4e64ec){logger['info'](_0x251f('0x12'),_0x13802a,_0x4e1492[_0x251f('0xe')]);})[_0x251f('0x13')](function(_0x4efea8){logger[_0x251f('0x14')](_0x251f('0x12'),_0x13802a,JSON[_0x251f('0x15')](_0x4efea8));})['finally'](function(){logger[_0x251f('0x11')](_0x251f('0x2c'),_0x13802a);_0xa8a190[_0x251f('0x2d')]();});}else{logger[_0x251f('0x11')](_0x251f('0x2e'),_0x13802a);_0xa8a190[_0x251f('0x2d')]();}}else{var _0x42a442=this;var _0xcbd067=_0x182596[0x2][_0x251f('0x2f')](/\\n/g,'\x0a');var _0x5aa987={'credentials':{'private_key':_0xcbd067,'client_email':_0x182596[0x1]}};var _0x2d2054=new dialogflow[(_0x251f('0x30'))](_0x5aa987);var _0x884459=_0x2d2054[_0x251f('0x31')](_0x182596[0x0],md5(_0x42a442[_0x251f('0x18')]['id']));var _0x134778={'session':_0x884459,'queryInput':{'text':{'text':_0x42a442['message']['body'],'languageCode':_0x182596[0x3]||'en'}}};return _0x2d2054['detectIntent'](_0x134778)[_0x251f('0x2b')](function(_0x2264df){if(_0x2264df&&_0x2264df[_0x251f('0x32')]){_0x42a442[_0x251f('0xe')]['dialogflowV2']=_0x2264df;var _0x3791e6=_0x2264df[0x0];var _0x20d3de=_0x3791e6['queryResult'][_0x251f('0x33')]&&_0x3791e6[_0x251f('0x34')]['diagnosticInfo'][_0x251f('0x35')]?_0x3791e6['queryResult'][_0x251f('0x33')]['fields'][_0x251f('0x36')][_0x251f('0x37')]:![];_0x42a442[_0x251f('0xe')][_0x251f('0x38')]=_0x3791e6[_0x251f('0x34')][_0x251f('0x39')];_0x42a442[_0x251f('0xe')][_0x251f('0x3a')]=_0x3791e6[_0x251f('0x34')]['allRequiredParamsPresent'];_0x42a442[_0x251f('0xe')][_0x251f('0x3b')]=_0x3791e6[_0x251f('0x34')][_0x251f('0x33')]&&_0x3791e6['queryResult'][_0x251f('0x33')][_0x251f('0x35')]?_0x3791e6[_0x251f('0x34')][_0x251f('0x33')][_0x251f('0x35')][_0x251f('0x36')]['boolValue']:![];_0x42a442[_0x251f('0xe')][_0x251f('0x3c')]=_0x3791e6[_0x251f('0x34')]['intent'][_0x251f('0x3d')];_0x42a442['body'][_0x251f('0x3e')]=_0x3791e6[_0x251f('0x34')]['intent'][_0x251f('0x3f')];_0x42a442[_0x251f('0xe')][_0x251f('0x40')]=_0x3791e6[_0x251f('0x34')]['intent'][_0x251f('0x41')];_0x42a442[_0x251f('0xe')]['DIALOGFLOWV2_LANGUAGECODE']=_0x3791e6['queryResult']['languageCode'];_0x42a442['body'][_0x251f('0x42')]=_0x3791e6[_0x251f('0x34')][_0x251f('0x43')];_0x42a442[_0x251f('0xe')][_0x251f('0x44')]=_0x3791e6[_0x251f('0x34')]['intentDetectionConfidence'];_0x4e1492[_0x251f('0x45')]='dialogflowV2';_0x4e1492[_0x251f('0x46')]=JSON['stringify'](_0x2264df);var _0xcecd69=[];for(var _0x3ca5fb=0x0;_0x3ca5fb<_0x2264df[_0x251f('0x32')];_0x3ca5fb++){var _0x3bc17e=_0x2264df[_0x3ca5fb];if(_0x3bc17e&&_0x3bc17e[_0x251f('0x34')]&&_0x3bc17e['queryResult'][_0x251f('0x47')]){_0xcecd69[_0x251f('0x48')](createMessage(_0x13802a,_0x120e62,_0x4e1492,_0x3bc17e[_0x251f('0x34')]['fulfillmentText']));}}return Promise['all'](_0xcecd69)[_0x251f('0x2b')](function(){if(_0x20d3de){_0xa8a190[_0x251f('0x1b')]();}else{_0xa8a190['stop']();}})[_0x251f('0x13')](function(_0x5d5c89){logger[_0x251f('0x14')]('[%s][DIALOGFLOWV2]\x20%s',_0x13802a,JSON[_0x251f('0x15')](_0x5d5c89));_0xa8a190[_0x251f('0x1b')]();});}})[_0x251f('0x13')](function(_0x2fd3a2){logger['error']('[%s][DIALOGFLOWV2]\x20%s',_0x13802a,_0x2fd3a2[_0x251f('0x49')]);_0xa8a190[_0x251f('0x1b')]();});}}catch(_0x5bf869){logger[_0x251f('0x14')](_0x251f('0x12'),_0x13802a,JSON['stringify'](_0x5bf869));_0xa8a190[_0x251f('0x2d')]();}};};
\ No newline at end of file
index 75e3662..a29fd25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf747=['fromString','replace','length','error','[%s][GOTOIF]\x20%s','map','message','join','stop','condition','priorityTrue','priorityFalse','info','[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s','next','findIndex','rules','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','[%s][GOTOIF]\x20eval\x20error:\x20%s','stringify','lodash','html-to-text','./utils','string','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','priority\x20true\x20is\x20a\x20number','number','priority\x20false\x20is\x20a\x20number','consequence'];(function(_0x12a528,_0x278c6c){var _0xad3b0c=function(_0x29a709){while(--_0x29a709){_0x12a528['push'](_0x12a528['shift']());}};_0xad3b0c(++_0x278c6c);}(_0xf747,0x170));var _0x7f74=function(_0x239812,_0x5ac3c1){_0x239812=_0x239812-0x0;var _0x1a9893=_0xf747[_0x239812];return _0x1a9893;};'use strict';var schema=require('validate');var _=require(_0x7f74('0x0'));var htmlToText=require(_0x7f74('0x1'));var utils=require(_0x7f74('0x2'));var logger=require('../../../../config/logger')('routing');var gotoif=schema({'condition':{'type':_0x7f74('0x3'),'required':!![],'message':_0x7f74('0x4')},'priorityTrue':{'type':'number','message':_0x7f74('0x5')},'priorityFalse':{'type':_0x7f74('0x6'),'message':_0x7f74('0x7')}});exports[_0x7f74('0x8')]=function(_0x11f1c4,_0xc29a5a){return function(_0x4aab05){try{var _0x5ea02d={'condition':htmlToText[_0x7f74('0x9')](utils['getMustacheRender'](_0xc29a5a[0x0],this),{'wordwrap':![]})[_0x7f74('0xa')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0xc29a5a[0x1],'priorityFalse':_0xc29a5a[0x2]};var _0x18d53c=gotoif['validate'](_0x5ea02d,{'typecast':!![]});if(_0x18d53c[_0x7f74('0xb')]){logger[_0x7f74('0xc')](_0x7f74('0xd'),_0x11f1c4,_[_0x7f74('0xe')](_0x18d53c,_0x7f74('0xf'))[_0x7f74('0x10')](',\x20'));_0x4aab05[_0x7f74('0x11')]();}else{try{var _0x419bc0=eval('('+_0x5ea02d[_0x7f74('0x12')]+')');var _0x2c6d16=_0x419bc0?_0x5ea02d[_0x7f74('0x13')]:_0x5ea02d[_0x7f74('0x14')];logger[_0x7f74('0x15')](_0x7f74('0x16'),_0x11f1c4,_0x5ea02d[_0x7f74('0x12')],_0x419bc0,_0x2c6d16||_0x7f74('0x17'));if(_0x2c6d16){var _0x5ba819=_[_0x7f74('0x18')](_0x4aab05[_0x7f74('0x19')](),{'p':_0x2c6d16});if(_0x5ba819>=0x0){logger[_0x7f74('0x15')]('[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s',_0x11f1c4,_0x2c6d16||'next',_0x5ba819);_0x4aab05[_0x7f74('0x17')](_0x5ba819);}else{logger[_0x7f74('0x15')](_0x7f74('0x1a'),_0x11f1c4,_0x2c6d16||_0x7f74('0x17'));_0x4aab05[_0x7f74('0x11')]();}}else{_0x4aab05['next']();}}catch(_0x20e4e4){logger[_0x7f74('0xc')](_0x7f74('0x1b'),_0x11f1c4,_0x20e4e4['message']);_0x4aab05[_0x7f74('0x11')]();}}}catch(_0x49108d){logger['error'](_0x7f74('0xd'),_0x11f1c4,JSON[_0x7f74('0x1c')](_0x49108d));_0x4aab05[_0x7f74('0x11')]();}};};
\ No newline at end of file
+var _0xa5fe=['lodash','./utils','../../../../config/logger','string','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','priority\x20true\x20is\x20a\x20number','number','priority\x20false\x20is\x20a\x20number','consequence','replace','length','[%s][GOTOIF]\x20%s','message','join','stop','condition','priorityTrue','priorityFalse','info','next','rules','error','[%s][GOTOIF]\x20eval\x20error:\x20%s','stringify','validate'];(function(_0x253b0a,_0x1e8564){var _0x47b5dd=function(_0x57d2f8){while(--_0x57d2f8){_0x253b0a['push'](_0x253b0a['shift']());}};_0x47b5dd(++_0x1e8564);}(_0xa5fe,0x144));var _0xea5f=function(_0x16aaef,_0x410651){_0x16aaef=_0x16aaef-0x0;var _0x1c82ef=_0xa5fe[_0x16aaef];return _0x1c82ef;};'use strict';var schema=require(_0xea5f('0x0'));var _=require(_0xea5f('0x1'));var htmlToText=require('html-to-text');var utils=require(_0xea5f('0x2'));var logger=require(_0xea5f('0x3'))('routing');var gotoif=schema({'condition':{'type':_0xea5f('0x4'),'required':!![],'message':_0xea5f('0x5')},'priorityTrue':{'type':'number','message':_0xea5f('0x6')},'priorityFalse':{'type':_0xea5f('0x7'),'message':_0xea5f('0x8')}});exports[_0xea5f('0x9')]=function(_0x2eb5f8,_0x399db8){return function(_0x57c14b){try{var _0x5cdbf2={'condition':htmlToText['fromString'](utils['getMustacheRender'](_0x399db8[0x0],this),{'wordwrap':![]})[_0xea5f('0xa')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x399db8[0x1],'priorityFalse':_0x399db8[0x2]};var _0x3468ea=gotoif['validate'](_0x5cdbf2,{'typecast':!![]});if(_0x3468ea[_0xea5f('0xb')]){logger['error'](_0xea5f('0xc'),_0x2eb5f8,_['map'](_0x3468ea,_0xea5f('0xd'))[_0xea5f('0xe')](',\x20'));_0x57c14b[_0xea5f('0xf')]();}else{try{var _0x44dd3b=eval('('+_0x5cdbf2[_0xea5f('0x10')]+')');var _0x57b80e=_0x44dd3b?_0x5cdbf2[_0xea5f('0x11')]:_0x5cdbf2[_0xea5f('0x12')];logger[_0xea5f('0x13')]('[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s',_0x2eb5f8,_0x5cdbf2[_0xea5f('0x10')],_0x44dd3b,_0x57b80e||_0xea5f('0x14'));if(_0x57b80e){var _0x2928ac=_['findIndex'](_0x57c14b[_0xea5f('0x15')](),{'p':_0x57b80e});if(_0x2928ac>=0x0){logger[_0xea5f('0x13')]('[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s',_0x2eb5f8,_0x57b80e||_0xea5f('0x14'),_0x2928ac);_0x57c14b[_0xea5f('0x14')](_0x2928ac);}else{logger[_0xea5f('0x13')]('[%s][GOTOIF]\x20priority\x20%s\x20not\x20found',_0x2eb5f8,_0x57b80e||'next');_0x57c14b[_0xea5f('0xf')]();}}else{_0x57c14b[_0xea5f('0x14')]();}}catch(_0x59802a){logger[_0xea5f('0x16')](_0xea5f('0x17'),_0x2eb5f8,_0x59802a[_0xea5f('0xd')]);_0x57c14b[_0xea5f('0xf')]();}}}catch(_0x18ef09){logger[_0xea5f('0x16')](_0xea5f('0xc'),_0x2eb5f8,JSON[_0xea5f('0x18')](_0x18ef09));_0x57c14b[_0xea5f('0xf')]();}};};
\ No newline at end of file
index 0559257..b399cce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x401f=['stop','info','[%s][GOTOP]\x20priority\x20%s','rules','priority','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','stringify','lodash','../../../../config/logger','routing','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','validate','length','error','[%s][GOTOP]\x20%s','join'];(function(_0x4ce8a4,_0x40c3aa){var _0x4200bb=function(_0x225fe9){while(--_0x225fe9){_0x4ce8a4['push'](_0x4ce8a4['shift']());}};_0x4200bb(++_0x40c3aa);}(_0x401f,0x1cb));var _0xf401=function(_0x2a5390,_0x503f73){_0x2a5390=_0x2a5390-0x0;var _0x585231=_0x401f[_0x2a5390];return _0x585231;};'use strict';var schema=require('validate');var _=require(_0xf401('0x0'));var logger=require(_0xf401('0x1'))(_0xf401('0x2'));var gotop=schema({'priority':{'type':'number','required':!![],'message':_0xf401('0x3')}});exports['consequence']=function(_0xed33c7,_0x3cd1bf){return function(_0x356e31){try{var _0x163614={'priority':_0x3cd1bf[0x0]};var _0x334c4b=gotop[_0xf401('0x4')](_0x163614,{'typecast':!![]});if(_0x334c4b[_0xf401('0x5')]){logger[_0xf401('0x6')](_0xf401('0x7'),_0xed33c7,_['map'](_0x334c4b,'message')[_0xf401('0x8')](',\x20'));_0x356e31[_0xf401('0x9')]();}else{logger[_0xf401('0xa')](_0xf401('0xb'),_0xed33c7,_0x163614['priority']);if(_0x163614['priority']){var _0x3956c6=_['findIndex'](_0x356e31[_0xf401('0xc')](),{'p':_0x163614[_0xf401('0xd')]});if(_0x3956c6>=0x0){logger[_0xf401('0xa')](_0xf401('0xe'),_0xed33c7,_0x163614[_0xf401('0xd')]||_0xf401('0xf'),_0x3956c6);_0x356e31['next'](_0x3956c6);}else{logger[_0xf401('0xa')](_0xf401('0x10'),_0xed33c7,_0x163614['priority']||'next');_0x356e31[_0xf401('0x9')]();}}else{_0x356e31[_0xf401('0xf')]();}}}catch(_0xc8b4a8){logger[_0xf401('0x6')](_0xf401('0x7'),_0xed33c7,JSON[_0xf401('0x11')](_0xc8b4a8));_0x356e31[_0xf401('0x9')]();}};};
\ No newline at end of file
+var _0x7a30=['validate','lodash','routing','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','length','[%s][GOTOP]\x20%s','join','priority','findIndex','info','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','stop','error','stringify'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7a30,0x80));var _0x07a3=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x7a30[_0x14add3];return _0x4a174f;};'use strict';var schema=require(_0x07a3('0x0'));var _=require(_0x07a3('0x1'));var logger=require('../../../../config/logger')(_0x07a3('0x2'));var gotop=schema({'priority':{'type':'number','required':!![],'message':_0x07a3('0x3')}});exports['consequence']=function(_0x524496,_0x5c2042){return function(_0x3845fc){try{var _0x10564e={'priority':_0x5c2042[0x0]};var _0x412c5d=gotop['validate'](_0x10564e,{'typecast':!![]});if(_0x412c5d[_0x07a3('0x4')]){logger['error'](_0x07a3('0x5'),_0x524496,_['map'](_0x412c5d,'message')[_0x07a3('0x6')](',\x20'));_0x3845fc['stop']();}else{logger['info']('[%s][GOTOP]\x20priority\x20%s',_0x524496,_0x10564e['priority']);if(_0x10564e[_0x07a3('0x7')]){var _0x5b16b4=_[_0x07a3('0x8')](_0x3845fc['rules'](),{'p':_0x10564e[_0x07a3('0x7')]});if(_0x5b16b4>=0x0){logger[_0x07a3('0x9')](_0x07a3('0xa'),_0x524496,_0x10564e[_0x07a3('0x7')]||_0x07a3('0xb'),_0x5b16b4);_0x3845fc[_0x07a3('0xb')](_0x5b16b4);}else{logger[_0x07a3('0x9')](_0x07a3('0xc'),_0x524496,_0x10564e[_0x07a3('0x7')]||'next');_0x3845fc[_0x07a3('0xd')]();}}else{_0x3845fc[_0x07a3('0xb')]();}}}catch(_0x551b23){logger[_0x07a3('0xe')](_0x07a3('0x5'),_0x524496,JSON[_0x07a3('0xf')](_0x551b23));_0x3845fc[_0x07a3('0xd')]();}};};
\ No newline at end of file
index 1a4795b..46672a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a6d=['ChatWebsiteId','account','upperFirst','InteractionId','interaction','Message','info','[%s][MESSAGE]\x20%s','body','next','catch','stringify','stop','error','lodash','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','getMustacheRender','contact','channel','chat'];(function(_0x46b3d6,_0x4b519e){var _0x77b4b0=function(_0x53ae75){while(--_0x53ae75){_0x46b3d6['push'](_0x46b3d6['shift']());}};_0x77b4b0(++_0x4b519e);}(_0x3a6d,0x196));var _0xd3a6=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x3a6d[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xd3a6('0x0'));var utils=require(_0xd3a6('0x1'));var logger=require(_0xd3a6('0x2'))(_0xd3a6('0x3'));var rpc={'chatMessage':require(_0xd3a6('0x4')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0xd3a6('0x5')),'smsMessage':require(_0xd3a6('0x6')),'faxMessage':require(_0xd3a6('0x7')),'whatsappMessage':require(_0xd3a6('0x8'))};exports[_0xd3a6('0x9')]=function(_0x9abfad,_0x292432){return function(_0x496461){try{var _0x301161={'body':utils[_0xd3a6('0xa')](_0x292432[0x0],this),'ContactId':this[_0xd3a6('0xb')]['id']};if(this[_0xd3a6('0xc')]===_0xd3a6('0xd')){_0x301161[_0xd3a6('0xe')]=this[_0xd3a6('0xf')]['id'];}else{_0x301161[_[_0xd3a6('0x10')](this[_0xd3a6('0xc')])+'AccountId']=this[_0xd3a6('0xf')]['id'];}_0x301161[_[_0xd3a6('0x10')](this[_0xd3a6('0xc')])+_0xd3a6('0x11')]=this[_0xd3a6('0x12')]['id'];if(rpc[this['channel']+_0xd3a6('0x13')]){return rpc[this[_0xd3a6('0xc')]+'Message']['create'](_0x301161)['then'](function(_0x5f1d8b){logger[_0xd3a6('0x14')](_0xd3a6('0x15'),_0x9abfad,_0x301161[_0xd3a6('0x16')]);_0x496461[_0xd3a6('0x17')]();})[_0xd3a6('0x18')](function(_0x3caa07){logger['error'](_0xd3a6('0x15'),_0x9abfad,JSON[_0xd3a6('0x19')](_0x3caa07));_0x496461[_0xd3a6('0x1a')]();});}}catch(_0x403699){logger[_0xd3a6('0x1b')]('[%s][MESSAGE]\x20%s',_0x9abfad,JSON[_0xd3a6('0x19')](_0x403699));_0x496461[_0xd3a6('0x1a')]();}};};
\ No newline at end of file
+var _0xa571=['error','stringify','stop','lodash','./utils','../../../../config/logger','routing','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/whatsappMessage','getMustacheRender','contact','chat','ChatWebsiteId','account','channel','AccountId','upperFirst','InteractionId','interaction','Message','create','then','info','[%s][MESSAGE]\x20%s','next'];(function(_0x212fcc,_0x1a8867){var _0x4d8190=function(_0x347f7b){while(--_0x347f7b){_0x212fcc['push'](_0x212fcc['shift']());}};_0x4d8190(++_0x1a8867);}(_0xa571,0x107));var _0x1a57=function(_0x57bd2a,_0x17041e){_0x57bd2a=_0x57bd2a-0x0;var _0x185698=_0xa571[_0x57bd2a];return _0x185698;};'use strict';var _=require(_0x1a57('0x0'));var utils=require(_0x1a57('0x1'));var logger=require(_0x1a57('0x2'))(_0x1a57('0x3'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x1a57('0x4')),'mailMessage':require(_0x1a57('0x5')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x1a57('0x6'))};exports['consequence']=function(_0xa58922,_0xd97a33){return function(_0x22ca20){try{var _0x3c5352={'body':utils[_0x1a57('0x7')](_0xd97a33[0x0],this),'ContactId':this[_0x1a57('0x8')]['id']};if(this['channel']===_0x1a57('0x9')){_0x3c5352[_0x1a57('0xa')]=this[_0x1a57('0xb')]['id'];}else{_0x3c5352[_['upperFirst'](this[_0x1a57('0xc')])+_0x1a57('0xd')]=this[_0x1a57('0xb')]['id'];}_0x3c5352[_[_0x1a57('0xe')](this[_0x1a57('0xc')])+_0x1a57('0xf')]=this[_0x1a57('0x10')]['id'];if(rpc[this[_0x1a57('0xc')]+'Message']){return rpc[this['channel']+_0x1a57('0x11')][_0x1a57('0x12')](_0x3c5352)[_0x1a57('0x13')](function(_0x5ae643){logger[_0x1a57('0x14')](_0x1a57('0x15'),_0xa58922,_0x3c5352['body']);_0x22ca20[_0x1a57('0x16')]();})['catch'](function(_0xd08107){logger[_0x1a57('0x17')](_0x1a57('0x15'),_0xa58922,JSON[_0x1a57('0x18')](_0xd08107));_0x22ca20['stop']();});}}catch(_0x20f7ad){logger['error']('[%s][MESSAGE]\x20%s',_0xa58922,JSON[_0x1a57('0x18')](_0x20f7ad));_0x22ca20[_0x1a57('0x19')]();}};};
\ No newline at end of file
index 698caf7..fe4249d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc773=['./utils','../../../../config/logger','info','[%s][NOOP]\x20%s','getMustacheRender','next','error','stop'];(function(_0xb7368b,_0xf11033){var _0x37d43b=function(_0x4562ed){while(--_0x4562ed){_0xb7368b['push'](_0xb7368b['shift']());}};_0x37d43b(++_0xf11033);}(_0xc773,0xa8));var _0x3c77=function(_0x26d503,_0x44dba7){_0x26d503=_0x26d503-0x0;var _0xcf4073=_0xc773[_0x26d503];return _0xcf4073;};'use strict';var utils=require(_0x3c77('0x0'));var logger=require(_0x3c77('0x1'))('routing');exports['consequence']=function(_0x2c9463,_0x1e932c){return function(_0x570cec){try{logger[_0x3c77('0x2')](_0x3c77('0x3'),_0x2c9463,utils[_0x3c77('0x4')](_0x1e932c[0x0],this));_0x570cec[_0x3c77('0x5')]();}catch(_0x683a51){logger[_0x3c77('0x6')]('[%s][NOOP]\x20%s',_0x2c9463,JSON['stringify'](_0x683a51));_0x570cec[_0x3c77('0x7')]();}};};
\ No newline at end of file
+var _0xeef2=['info','[%s][NOOP]\x20%s','getMustacheRender','next','error','stringify','stop','./utils','../../../../config/logger','consequence'];(function(_0x17739f,_0x2c52f0){var _0x25c1a1=function(_0x25c251){while(--_0x25c251){_0x17739f['push'](_0x17739f['shift']());}};_0x25c1a1(++_0x2c52f0);}(_0xeef2,0x89));var _0x2eef=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0xeef2[_0x21a9d9];return _0x46adce;};'use strict';var utils=require(_0x2eef('0x0'));var logger=require(_0x2eef('0x1'))('routing');exports[_0x2eef('0x2')]=function(_0xaf4010,_0x2c561f){return function(_0x4c9c35){try{logger[_0x2eef('0x3')](_0x2eef('0x4'),_0xaf4010,utils[_0x2eef('0x5')](_0x2c561f[0x0],this));_0x4c9c35[_0x2eef('0x6')]();}catch(_0x1bbe37){logger[_0x2eef('0x7')](_0x2eef('0x4'),_0xaf4010,JSON[_0x2eef('0x8')](_0x1bbe37));_0x4c9c35[_0x2eef('0x9')]();}};};
\ No newline at end of file
index b4d3db8..6a899c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x810f=['%sQueuesWaitingInteractions','pick','%s:queue:%s','%s_queue_waiting_interaction:%s','save','remove','../../rpc/mailQueueReport','../../rpc/chatQueueReport','../../rpc/faxQueueReport','../../rpc/whatsappQueueReport','string','number','timeout\x20is\x20a\x20number','waiting','body','from','contact','list','upperFirst','channel','interaction','MessageId','message','chat','AccountId','info','[%s][START:QUEUE][NAME:%s]','name','QueueReport','error','create\x20queue\x20report','YYYY-MM-DD\x20HH:mm:ss','accepted','[%s][STOP:QUEUE][NAME:%s]','catch','update\x20queue\x20report','timeout','[%s][END:QUEUE][NAME:%s]','toLowerCase','consequence','length','map','stop','find','createQueue','atimeout','rules','complete','[%s][QUEUE]\x20APPLICATION\x20END','rrmemory','log','[%s][QUEUE]\x20%s','stack','validate','lodash','util','seq-queue','../../../../config/environment','../../../../config/logger','routing','redis','defaults','localhost','socket.io-emitter','queue_id','queue','emit','account','capitalize','InteractionId','format'];(function(_0x5c5bf5,_0x2b3e1b){var _0x188b4b=function(_0x2e7ea8){while(--_0x2e7ea8){_0x5c5bf5['push'](_0x5c5bf5['shift']());}};_0x188b4b(++_0x2b3e1b);}(_0x810f,0x7c));var _0xf810=function(_0x166742,_0x55520c){_0x166742=_0x166742-0x0;var _0xb7814a=_0x810f[_0x166742];return _0xb7814a;};'use strict';var schema=require(_0xf810('0x0'));var _=require(_0xf810('0x1'));var util=require(_0xf810('0x2'));var seqqueue=require(_0xf810('0x3'));var moment=require('moment');var Redis=require('ioredis');var config=require(_0xf810('0x4'));var logger=require(_0xf810('0x5'))(_0xf810('0x6'));var strategy=require('./strategy');config[_0xf810('0x7')]=_[_0xf810('0x8')](config[_0xf810('0x7')],{'host':_0xf810('0x9'),'port':0x18eb});var io=require(_0xf810('0xa'))(new Redis(config[_0xf810('0x7')]));var attributes=['id',_0xf810('0xb'),'account',_0xf810('0xc'),'from','joinAt'];function emit(_0x3509d1,_0x22a21e,_0x35e976){io['to'](_0x3509d1)[_0xf810('0xd')](_0x22a21e,_0x35e976);}function emitChannelQueueInteraction(_0x2ba49a,_0xc6470f,_0x311d4c,_0x18a405,_0x435758,_0x401063,_0x43b4ed,_0x12b3fd){var _0x5ed1cb=_['clone'](_0x311d4c);_0x5ed1cb[_0xf810('0xb')]=_0x12b3fd;_0x5ed1cb[_0xf810('0xc')]=_0xc6470f;_0x5ed1cb[_0xf810('0xe')]=_0x18a405;_0x5ed1cb['id']=_0x435758;if(_0x401063){attributes['push'](_[_0xf810('0xf')](_0x2ba49a)+_0xf810('0x10'));_0x43b4ed[util[_0xf810('0x11')](_0xf810('0x12'),_0x2ba49a)][_0x435758]=_[_0xf810('0x13')](_0x5ed1cb,attributes);}else{delete _0x43b4ed[util[_0xf810('0x11')](_0xf810('0x12'),_0x2ba49a)][_0x435758];}emit(util[_0xf810('0x11')](_0xf810('0x14'),_0x2ba49a,_0xc6470f),util['format'](_0xf810('0x15'),_0x2ba49a,_0x401063?_0xf810('0x16'):_0xf810('0x17')),_[_0xf810('0x13')](_0x5ed1cb,attributes));}var rpc={'openchannelQueueReport':require('../../rpc/openchannelQueueReport'),'mailQueueReport':require(_0xf810('0x18')),'chatQueueReport':require(_0xf810('0x19')),'smsQueueReport':require('../../rpc/smsQueueReport'),'faxQueueReport':require(_0xf810('0x1a')),'whatsappQueueReport':require(_0xf810('0x1b'))};var queue=schema({'name':{'type':_0xf810('0x1c'),'required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':_0xf810('0x1d'),'message':_0xf810('0x1e')}});function startRouting(_0x56e185,_0x2a86c5,_0x2fa3e8,_0x43b167){if(_0x56e185&&_0x2a86c5&&_0x2fa3e8){_0x2a86c5[_0xf810('0x1f')]+=0x1;var _0x329352={'uniqueid':_0x56e185,'from':_0x2fa3e8['body']?_0x2fa3e8[_0xf810('0x20')][_0xf810('0x21')]:'','joinAt':moment()[_0xf810('0x11')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x2fa3e8[_0xf810('0x22')]?_0x2fa3e8[_0xf810('0x22')]['id']:null,'ListId':_0x2fa3e8[_0xf810('0x23')]?_0x2fa3e8[_0xf810('0x23')]['id']:null};_0x329352[_[_0xf810('0x24')](_0x2fa3e8[_0xf810('0x25')])+'QueueId']=_0x2a86c5['id']||null;_0x329352[_['upperFirst'](_0x2fa3e8[_0xf810('0x25')])+_0xf810('0x10')]=_0x2fa3e8[_0xf810('0x26')]?_0x2fa3e8[_0xf810('0x26')]['id']:null;_0x329352[_[_0xf810('0x24')](_0x2fa3e8[_0xf810('0x25')])+_0xf810('0x27')]=_0x2fa3e8[_0xf810('0x28')]?_0x2fa3e8[_0xf810('0x28')]['id']:null;_0x329352[_['upperFirst'](_0x2fa3e8[_0xf810('0x25')])+(_0x2fa3e8['channel']!==_0xf810('0x29')?_0xf810('0x2a'):'WebsiteId')]=_0x2fa3e8[_0xf810('0xe')]?_0x2fa3e8[_0xf810('0xe')]['id']:null;logger[_0xf810('0x2b')](util['format'](_0xf810('0x2c'),_0x56e185,_0x2a86c5[_0xf810('0x2d')]));emitChannelQueueInteraction(_0x2fa3e8[_0xf810('0x25')],_0x2a86c5[_0xf810('0x2d')],_0x329352,_0x2fa3e8['account'][_0xf810('0x2d')],_0x2fa3e8['message']['id'],!![],_0x43b167,_0x2a86c5['id']);if(rpc[_0x2fa3e8['channel']+'QueueReport']){return rpc[_0x2fa3e8[_0xf810('0x25')]+_0xf810('0x2e')]['create'](_0x329352)['catch'](function(_0x4fa53f){logger[_0xf810('0x2f')](_0xf810('0x30'));});}}}function stopRouting(_0x35de53,_0x47038a,_0x1a2c0c,_0x425383){if(_0x35de53&&_0x47038a){_0x47038a[_0xf810('0x1f')]-=0x1;var _0x3a9ea3={'leaveAt':moment()[_0xf810('0x11')](_0xf810('0x31')),'acceptAt':moment()[_0xf810('0x11')](_0xf810('0x31')),'reason':_0xf810('0x32')};logger[_0xf810('0x2b')](util[_0xf810('0x11')](_0xf810('0x33'),_0x35de53,_0x47038a[_0xf810('0x2d')]));emitChannelQueueInteraction(_0x1a2c0c['channel'],_0x47038a[_0xf810('0x2d')],_0x1a2c0c[_0xf810('0x20')],_0x1a2c0c[_0xf810('0xe')]['name'],_0x1a2c0c[_0xf810('0x28')]['id'],![],_0x425383,_0x47038a['id']);if(rpc[_0x1a2c0c[_0xf810('0x25')]+_0xf810('0x2e')]){return rpc[_0x1a2c0c[_0xf810('0x25')]+_0xf810('0x2e')]['update'](_0x35de53,_0x3a9ea3)[_0xf810('0x34')](function(_0x56982f){logger['error'](_0xf810('0x35'));});}}}function endRouting(_0x58b375,_0x5e2ea8,_0x74a3b6,_0x1481ca){if(_0x58b375&&_0x5e2ea8){_0x5e2ea8[_0xf810('0x1f')]-=0x1;var _0x472885={'leaveAt':moment()[_0xf810('0x11')](_0xf810('0x31')),'exitAt':moment()[_0xf810('0x11')]('YYYY-MM-DD\x20HH:mm:ss'),'reason':_0xf810('0x36')};logger[_0xf810('0x2b')](util['format'](_0xf810('0x37'),_0x58b375,_0x5e2ea8[_0xf810('0x2d')]));emitChannelQueueInteraction(_0x74a3b6[_0xf810('0x25')],_0x5e2ea8[_0xf810('0x2d')],_0x74a3b6[_0xf810('0x20')],_0x74a3b6['account'][_0xf810('0x2d')],_0x74a3b6['message']['id'],![],_0x1481ca);if(rpc[_0x74a3b6[_0xf810('0x25')]+'QueueReport']){return rpc[_0x74a3b6[_0xf810('0x25')]+'QueueReport']['update'](_0x58b375,_0x472885)['catch'](function(_0x1aa3c0){logger[_0xf810('0x2f')](_0xf810('0x35'));});}}}function handleFindQueue(_0x21ea9c){return function(_0x403774){return _0x403774[_0xf810('0x2d')]['toLowerCase']()===_0x21ea9c[_0xf810('0x38')]();};}exports[_0xf810('0x39')]=function(_0x41c626,_0x5a9204,_0xa8e4f0,_0x398f97){return function(_0x1fb6d1){try{var _0x4ad465={'name':_0x5a9204[0x0],'timeout':_0x5a9204[0x1]};var _0x134b99=queue[_0xf810('0x0')](_0x4ad465,{'typecast':!![]});if(_0x134b99[_0xf810('0x3a')]){logger['error']('[%s][QUEUE]\x20%s',_0x41c626,_[_0xf810('0x3b')](_0x134b99,_0xf810('0x28'))['join'](',\x20'));_0x1fb6d1[_0xf810('0x3c')]();}else{var _0x189a31=_[_0xf810('0x3d')](_0xa8e4f0[_0x398f97[_0xf810('0x25')]+'Queues'],handleFindQueue(_0x4ad465[_0xf810('0x2d')]));if(_0x189a31){startRouting(_0x41c626,_0x189a31,_0x398f97,_0xa8e4f0);var _0x42db87=(_0x189a31[_0xf810('0x36')]||0xa)*0x3e8;var _0x2b3432=(_0x4ad465[_0xf810('0x36')]||0x14)*0x3e8;var _0x488490;if(_0x42db87>_0x2b3432){_0x2b3432=_0x42db87;}var _0x13b251=seqqueue[_0xf810('0x3e')](_0x42db87);_0x13b251['id']=_0x41c626;_0x13b251[_0xf810('0x3f')]=_0x42db87;_0x13b251['qtimeout']=_0x2b3432;_0x13b251[_0xf810('0x25')]=_0x398f97['channel'];_0xa8e4f0[_0xf810('0x40')][_0x41c626]['on']('end',function(){logger[_0xf810('0x2b')]('[%s][QUEUE]\x20ROUTING\x20STOPPED',_0x41c626);stopRouting(_0x41c626,_0x189a31,_0x398f97,_0xa8e4f0);clearTimeout(_0x488490);_0x488490=undefined;_0x13b251['close'](!![]);if(_0xa8e4f0[_0xf810('0x40')][_0x41c626]){delete _0xa8e4f0[_0xf810('0x40')][_0x41c626];}_0x1fb6d1[_0xf810('0x3c')]();});_0xa8e4f0[_0xf810('0x40')][_0x41c626]['on'](_0xf810('0x41'),function(){if(_0xa8e4f0[_0xf810('0x40')][_0x41c626]){delete _0xa8e4f0['rules'][_0x41c626];}});_0x488490=setTimeout(function(){logger['info'](_0xf810('0x42'),_0x41c626);endRouting(_0x41c626,_0x189a31,_0x398f97,_0xa8e4f0);clearTimeout(_0x488490);_0x13b251['close'](!![]);_0x1fb6d1['next']();},_0x2b3432);switch(_0x189a31['strategy']){case _0xf810('0x43'):strategy[_0xf810('0x43')](_0x13b251,_0x189a31,_0xa8e4f0,_0x398f97);break;default:strategy['beepall'](_0x13b251,_0x189a31,_0xa8e4f0,_0x398f97);}}else{logger['error']('[%s][QUEUE]\x20queue\x20not\x20found\x20%s',_0x41c626,_0x4ad465[_0xf810('0x2d')]);_0x1fb6d1['stop']();}}}catch(_0x49a131){console[_0xf810('0x44')](_0x49a131);logger['error'](_0xf810('0x45'),_0x41c626,_0x49a131[_0xf810('0x46')]);_0x1fb6d1[_0xf810('0x3c')]();}};};
\ No newline at end of file
+var _0xdcd3=['%sQueuesWaitingInteractions','pick','format','%s:queue:%s','%s_queue_waiting_interaction:%s','save','remove','../../rpc/openchannelQueueReport','../../rpc/mailQueueReport','../../rpc/chatQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','../../rpc/whatsappQueueReport','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','waiting','body','YYYY-MM-DD\x20HH:mm:ss','contact','list','upperFirst','channel','interaction','MessageId','message','chat','WebsiteId','[%s][START:QUEUE][NAME:%s]','name','QueueReport','create','error','create\x20queue\x20report','catch','update\x20queue\x20report','timeout','info','[%s][END:QUEUE][NAME:%s]','update','toLowerCase','consequence','length','[%s][QUEUE]\x20%s','map','stop','find','Queues','createQueue','atimeout','qtimeout','rules','[%s][QUEUE]\x20ROUTING\x20STOPPED','close','complete','[%s][QUEUE]\x20APPLICATION\x20END','strategy','rrmemory','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','log','validate','util','seq-queue','../../../../config/environment','./strategy','redis','defaults','localhost','socket.io-emitter','queue_id','account','queue','from','emit','clone','push','capitalize','InteractionId'];(function(_0x120195,_0x268976){var _0x2bf687=function(_0x145bcc){while(--_0x145bcc){_0x120195['push'](_0x120195['shift']());}};_0x2bf687(++_0x268976);}(_0xdcd3,0x12a));var _0x3dcd=function(_0x5a57bc,_0x5158a2){_0x5a57bc=_0x5a57bc-0x0;var _0x3b3a17=_0xdcd3[_0x5a57bc];return _0x3b3a17;};'use strict';var schema=require(_0x3dcd('0x0'));var _=require('lodash');var util=require(_0x3dcd('0x1'));var seqqueue=require(_0x3dcd('0x2'));var moment=require('moment');var Redis=require('ioredis');var config=require(_0x3dcd('0x3'));var logger=require('../../../../config/logger')('routing');var strategy=require(_0x3dcd('0x4'));config[_0x3dcd('0x5')]=_[_0x3dcd('0x6')](config[_0x3dcd('0x5')],{'host':_0x3dcd('0x7'),'port':0x18eb});var io=require(_0x3dcd('0x8'))(new Redis(config[_0x3dcd('0x5')]));var attributes=['id',_0x3dcd('0x9'),_0x3dcd('0xa'),_0x3dcd('0xb'),_0x3dcd('0xc'),'joinAt'];function emit(_0x59accc,_0xca8513,_0x5e4806){io['to'](_0x59accc)[_0x3dcd('0xd')](_0xca8513,_0x5e4806);}function emitChannelQueueInteraction(_0x3e3cc9,_0x2c49ec,_0x4466dd,_0x3b1a7e,_0x41e700,_0x583676,_0x5a7542,_0x3c5fcb){var _0x5c73ec=_[_0x3dcd('0xe')](_0x4466dd);_0x5c73ec['queue_id']=_0x3c5fcb;_0x5c73ec[_0x3dcd('0xb')]=_0x2c49ec;_0x5c73ec[_0x3dcd('0xa')]=_0x3b1a7e;_0x5c73ec['id']=_0x41e700;if(_0x583676){attributes[_0x3dcd('0xf')](_[_0x3dcd('0x10')](_0x3e3cc9)+_0x3dcd('0x11'));_0x5a7542[util['format'](_0x3dcd('0x12'),_0x3e3cc9)][_0x41e700]=_[_0x3dcd('0x13')](_0x5c73ec,attributes);}else{delete _0x5a7542[util[_0x3dcd('0x14')](_0x3dcd('0x12'),_0x3e3cc9)][_0x41e700];}emit(util[_0x3dcd('0x14')](_0x3dcd('0x15'),_0x3e3cc9,_0x2c49ec),util[_0x3dcd('0x14')](_0x3dcd('0x16'),_0x3e3cc9,_0x583676?_0x3dcd('0x17'):_0x3dcd('0x18')),_[_0x3dcd('0x13')](_0x5c73ec,attributes));}var rpc={'openchannelQueueReport':require(_0x3dcd('0x19')),'mailQueueReport':require(_0x3dcd('0x1a')),'chatQueueReport':require(_0x3dcd('0x1b')),'smsQueueReport':require(_0x3dcd('0x1c')),'faxQueueReport':require(_0x3dcd('0x1d')),'whatsappQueueReport':require(_0x3dcd('0x1e'))};var queue=schema({'name':{'type':'string','required':!![],'message':_0x3dcd('0x1f')},'timeout':{'type':_0x3dcd('0x20'),'message':_0x3dcd('0x21')}});function startRouting(_0x3d21a4,_0x490faf,_0x2b3e3d,_0x441de0){if(_0x3d21a4&&_0x490faf&&_0x2b3e3d){_0x490faf[_0x3dcd('0x22')]+=0x1;var _0x1e645a={'uniqueid':_0x3d21a4,'from':_0x2b3e3d['body']?_0x2b3e3d[_0x3dcd('0x23')][_0x3dcd('0xc')]:'','joinAt':moment()[_0x3dcd('0x14')](_0x3dcd('0x24')),'ContactId':_0x2b3e3d[_0x3dcd('0x25')]?_0x2b3e3d[_0x3dcd('0x25')]['id']:null,'ListId':_0x2b3e3d[_0x3dcd('0x26')]?_0x2b3e3d['list']['id']:null};_0x1e645a[_[_0x3dcd('0x27')](_0x2b3e3d[_0x3dcd('0x28')])+'QueueId']=_0x490faf['id']||null;_0x1e645a[_[_0x3dcd('0x27')](_0x2b3e3d[_0x3dcd('0x28')])+_0x3dcd('0x11')]=_0x2b3e3d[_0x3dcd('0x29')]?_0x2b3e3d[_0x3dcd('0x29')]['id']:null;_0x1e645a[_[_0x3dcd('0x27')](_0x2b3e3d[_0x3dcd('0x28')])+_0x3dcd('0x2a')]=_0x2b3e3d[_0x3dcd('0x2b')]?_0x2b3e3d[_0x3dcd('0x2b')]['id']:null;_0x1e645a[_[_0x3dcd('0x27')](_0x2b3e3d[_0x3dcd('0x28')])+(_0x2b3e3d[_0x3dcd('0x28')]!==_0x3dcd('0x2c')?'AccountId':_0x3dcd('0x2d'))]=_0x2b3e3d[_0x3dcd('0xa')]?_0x2b3e3d['account']['id']:null;logger['info'](util[_0x3dcd('0x14')](_0x3dcd('0x2e'),_0x3d21a4,_0x490faf[_0x3dcd('0x2f')]));emitChannelQueueInteraction(_0x2b3e3d[_0x3dcd('0x28')],_0x490faf[_0x3dcd('0x2f')],_0x1e645a,_0x2b3e3d[_0x3dcd('0xa')]['name'],_0x2b3e3d['message']['id'],!![],_0x441de0,_0x490faf['id']);if(rpc[_0x2b3e3d['channel']+_0x3dcd('0x30')]){return rpc[_0x2b3e3d[_0x3dcd('0x28')]+'QueueReport'][_0x3dcd('0x31')](_0x1e645a)['catch'](function(_0x5cf3ab){logger[_0x3dcd('0x32')](_0x3dcd('0x33'));});}}}function stopRouting(_0x211fdf,_0x1f619e,_0x2f4e90,_0x10f4d2){if(_0x211fdf&&_0x1f619e){_0x1f619e[_0x3dcd('0x22')]-=0x1;var _0x370079={'leaveAt':moment()[_0x3dcd('0x14')](_0x3dcd('0x24')),'acceptAt':moment()[_0x3dcd('0x14')](_0x3dcd('0x24')),'reason':'accepted'};logger['info'](util[_0x3dcd('0x14')]('[%s][STOP:QUEUE][NAME:%s]',_0x211fdf,_0x1f619e[_0x3dcd('0x2f')]));emitChannelQueueInteraction(_0x2f4e90[_0x3dcd('0x28')],_0x1f619e['name'],_0x2f4e90[_0x3dcd('0x23')],_0x2f4e90[_0x3dcd('0xa')][_0x3dcd('0x2f')],_0x2f4e90[_0x3dcd('0x2b')]['id'],![],_0x10f4d2,_0x1f619e['id']);if(rpc[_0x2f4e90[_0x3dcd('0x28')]+_0x3dcd('0x30')]){return rpc[_0x2f4e90[_0x3dcd('0x28')]+_0x3dcd('0x30')]['update'](_0x211fdf,_0x370079)[_0x3dcd('0x34')](function(_0x4035d9){logger['error'](_0x3dcd('0x35'));});}}}function endRouting(_0x379bec,_0x3dddb3,_0x315fe5,_0x2517c2){if(_0x379bec&&_0x3dddb3){_0x3dddb3[_0x3dcd('0x22')]-=0x1;var _0x229af4={'leaveAt':moment()[_0x3dcd('0x14')](_0x3dcd('0x24')),'exitAt':moment()[_0x3dcd('0x14')](_0x3dcd('0x24')),'reason':_0x3dcd('0x36')};logger[_0x3dcd('0x37')](util[_0x3dcd('0x14')](_0x3dcd('0x38'),_0x379bec,_0x3dddb3[_0x3dcd('0x2f')]));emitChannelQueueInteraction(_0x315fe5['channel'],_0x3dddb3[_0x3dcd('0x2f')],_0x315fe5[_0x3dcd('0x23')],_0x315fe5['account'][_0x3dcd('0x2f')],_0x315fe5['message']['id'],![],_0x2517c2);if(rpc[_0x315fe5['channel']+'QueueReport']){return rpc[_0x315fe5['channel']+_0x3dcd('0x30')][_0x3dcd('0x39')](_0x379bec,_0x229af4)[_0x3dcd('0x34')](function(_0x578011){logger['error'](_0x3dcd('0x35'));});}}}function handleFindQueue(_0x4baf02){return function(_0x10adde){return _0x10adde[_0x3dcd('0x2f')][_0x3dcd('0x3a')]()===_0x4baf02[_0x3dcd('0x3a')]();};}exports[_0x3dcd('0x3b')]=function(_0x172956,_0x52d87a,_0x560dc4,_0x3c011e){return function(_0x293f5c){try{var _0x1e2993={'name':_0x52d87a[0x0],'timeout':_0x52d87a[0x1]};var _0x324c76=queue['validate'](_0x1e2993,{'typecast':!![]});if(_0x324c76[_0x3dcd('0x3c')]){logger[_0x3dcd('0x32')](_0x3dcd('0x3d'),_0x172956,_[_0x3dcd('0x3e')](_0x324c76,_0x3dcd('0x2b'))['join'](',\x20'));_0x293f5c[_0x3dcd('0x3f')]();}else{var _0x14db11=_[_0x3dcd('0x40')](_0x560dc4[_0x3c011e[_0x3dcd('0x28')]+_0x3dcd('0x41')],handleFindQueue(_0x1e2993[_0x3dcd('0x2f')]));if(_0x14db11){startRouting(_0x172956,_0x14db11,_0x3c011e,_0x560dc4);var _0x1e5a7d=(_0x14db11[_0x3dcd('0x36')]||0xa)*0x3e8;var _0x372a5a=(_0x1e2993[_0x3dcd('0x36')]||0x14)*0x3e8;var _0x4632da;if(_0x1e5a7d>_0x372a5a){_0x372a5a=_0x1e5a7d;}var _0x5d027d=seqqueue[_0x3dcd('0x42')](_0x1e5a7d);_0x5d027d['id']=_0x172956;_0x5d027d[_0x3dcd('0x43')]=_0x1e5a7d;_0x5d027d[_0x3dcd('0x44')]=_0x372a5a;_0x5d027d[_0x3dcd('0x28')]=_0x3c011e[_0x3dcd('0x28')];_0x560dc4[_0x3dcd('0x45')][_0x172956]['on']('end',function(){logger[_0x3dcd('0x37')](_0x3dcd('0x46'),_0x172956);stopRouting(_0x172956,_0x14db11,_0x3c011e,_0x560dc4);clearTimeout(_0x4632da);_0x4632da=undefined;_0x5d027d[_0x3dcd('0x47')](!![]);if(_0x560dc4['rules'][_0x172956]){delete _0x560dc4['rules'][_0x172956];}_0x293f5c['stop']();});_0x560dc4[_0x3dcd('0x45')][_0x172956]['on'](_0x3dcd('0x48'),function(){if(_0x560dc4[_0x3dcd('0x45')][_0x172956]){delete _0x560dc4[_0x3dcd('0x45')][_0x172956];}});_0x4632da=setTimeout(function(){logger[_0x3dcd('0x37')](_0x3dcd('0x49'),_0x172956);endRouting(_0x172956,_0x14db11,_0x3c011e,_0x560dc4);clearTimeout(_0x4632da);_0x5d027d[_0x3dcd('0x47')](!![]);_0x293f5c['next']();},_0x372a5a);switch(_0x14db11[_0x3dcd('0x4a')]){case _0x3dcd('0x4b'):strategy[_0x3dcd('0x4b')](_0x5d027d,_0x14db11,_0x560dc4,_0x3c011e);break;default:strategy[_0x3dcd('0x4c')](_0x5d027d,_0x14db11,_0x560dc4,_0x3c011e);}}else{logger[_0x3dcd('0x32')](_0x3dcd('0x4d'),_0x172956,_0x1e2993[_0x3dcd('0x2f')]);_0x293f5c[_0x3dcd('0x3f')]();}}}catch(_0x383569){console[_0x3dcd('0x4e')](_0x383569);logger['error'](_0x3dcd('0x3d'),_0x172956,_0x383569['stack']);_0x293f5c[_0x3dcd('0x3f')]();}};};
\ No newline at end of file
index 93908f2..5f4f4f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['./util','../../../../../config/logger','routing','notificationId','squeue','agent','realtime','push','handleRun','bind','handleTimeout','timeout','drained','prototype','isNil','debug','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','forcedOwnership','isAgentAvailable','agents','channel','busy','busyQueue','saveWaitingNotification','writeLog','RINGING',':FORCED','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','[%s][AGENT]\x20timeout\x20with\x20%s','hideNotification','removeWaitingNotification','STOP','exports','lodash'];(function(_0x68ee8b,_0x3cc6c5){var _0x5148f7=function(_0x5dcbd5){while(--_0x5dcbd5){_0x68ee8b['push'](_0x68ee8b['shift']());}};_0x5148f7(++_0x3cc6c5);}(_0x3e74,0x175));var _0x43e7=function(_0x2e5d28,_0x565ce8){_0x2e5d28=_0x2e5d28-0x0;var _0x2d3e67=_0x3e74[_0x2e5d28];return _0x2d3e67;};'use strict';var _=require(_0x43e7('0x0'));var uuid=require('uuid');var util=require(_0x43e7('0x1'));var logger=require(_0x43e7('0x2'))(_0x43e7('0x3'));var Agent=function(_0x494e45,_0x490ced,_0xc58479,_0x4f9bbe){this[_0x43e7('0x4')]=uuid['v4']();this[_0x43e7('0x5')]=_0x494e45;this[_0x43e7('0x6')]=_0x490ced;this[_0x43e7('0x7')]=_0xc58479;this[_0x43e7('0x3')]=_0x4f9bbe;this['squeue'][_0x43e7('0x8')](this[_0x43e7('0x9')][_0x43e7('0xa')](this),this[_0x43e7('0xb')][_0x43e7('0xa')](this));this['squeue']['on'](_0x43e7('0xc'),this['handleTimeout']['bind'](this));this[_0x43e7('0x5')]['on'](_0x43e7('0xd'),this['handleDrained'][_0x43e7('0xa')](this));};Agent['prototype'][_0x43e7('0x8')]=function(){this[_0x43e7('0x5')]['push'](this[_0x43e7('0x9')][_0x43e7('0xa')](this),this[_0x43e7('0xb')][_0x43e7('0xa')](this));};Agent['prototype']['handleDrained']=function(){this[_0x43e7('0xb')](!![]);};Agent[_0x43e7('0xe')][_0x43e7('0x9')]=function(){logger['debug']('[%s][AGENT]\x20try\x20with\x20%s',this[_0x43e7('0x5')]['id'],this[_0x43e7('0x6')]['id']);if(_[_0x43e7('0xf')](this[_0x43e7('0x7')]['agents'][this['agent']['id']])){logger[_0x43e7('0x10')](_0x43e7('0x11'),this[_0x43e7('0x5')]['id'],this['agent']['id']);setTimeout(this['push'][_0x43e7('0xa')](this),0x3e8);}else{if(this[_0x43e7('0x3')][_0x43e7('0x12')]||util[_0x43e7('0x13')](this[_0x43e7('0x5')]['id'],this[_0x43e7('0x7')][_0x43e7('0x14')][this[_0x43e7('0x6')]['id']],this[_0x43e7('0x5')][_0x43e7('0x15')],![])){this[_0x43e7('0x7')][_0x43e7('0x14')][this['agent']['id']][_0x43e7('0x16')]=!![];this[_0x43e7('0x7')]['agents'][this[_0x43e7('0x6')]['id']][_0x43e7('0x17')]=undefined;util[_0x43e7('0x18')](this[_0x43e7('0x7')],this[_0x43e7('0x3')],this[_0x43e7('0x6')],this['squeue'][_0x43e7('0x15')]);util['showNotification'](this['notificationId'],this[_0x43e7('0x5')]['id'],this[_0x43e7('0x7')]['agents'][this[_0x43e7('0x6')]['id']],null,this['routing']);util[_0x43e7('0x19')](this['squeue']['id'],this[_0x43e7('0x7')][_0x43e7('0x14')][this[_0x43e7('0x6')]['id']],_0x43e7('0x1a')+(this['routing']['forcedOwnership']?_0x43e7('0x1b'):''));}else{logger['debug'](_0x43e7('0x1c'),this[_0x43e7('0x5')]['id'],this[_0x43e7('0x6')]['id']);setTimeout(this[_0x43e7('0x8')]['bind'](this),0x3e8);}}};Agent[_0x43e7('0xe')][_0x43e7('0xb')]=function(_0x45b675){if(_[_0x43e7('0xf')](this[_0x43e7('0x7')][_0x43e7('0x14')][this[_0x43e7('0x6')]['id']])){return logger[_0x43e7('0x10')](_0x43e7('0x11'),this[_0x43e7('0x5')]['id'],this[_0x43e7('0x6')]['id']);}else{logger[_0x43e7('0x10')](_0x43e7('0x1d'),this[_0x43e7('0x5')]['id'],this['agent']['id']);util[_0x43e7('0x1e')](this[_0x43e7('0x4')],this[_0x43e7('0x5')]['id'],this[_0x43e7('0x7')][_0x43e7('0x14')][this['agent']['id']],null,this[_0x43e7('0x3')]);this[_0x43e7('0x7')][_0x43e7('0x14')][this[_0x43e7('0x6')]['id']]['busy']=![];this['realtime']['agents'][this[_0x43e7('0x6')]['id']][_0x43e7('0x17')]=undefined;util[_0x43e7('0x1f')](this[_0x43e7('0x7')],this[_0x43e7('0x3')],this[_0x43e7('0x6')],this['squeue']['channel']);util['writeLog'](this['squeue']['id'],this['realtime']['agents'][this['agent']['id']],_0x45b675?_0x43e7('0x20'):'TIMEOUT');}if(!_0x45b675){setTimeout(this[_0x43e7('0x8')][_0x43e7('0xa')](this),0x3e8);}};function agent(_0x31bc78,_0x50a2d0,_0x40f72f,_0x449803){return new Agent(_0x31bc78,_0x50a2d0,_0x40f72f,_0x449803);}module[_0x43e7('0x21')]=agent;
\ No newline at end of file
+var _0x885a=['uuid','./util','../../../../../config/logger','routing','notificationId','squeue','agent','push','bind','handleTimeout','timeout','drained','handleDrained','handleRun','prototype','debug','realtime','agents','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','forcedOwnership','saveWaitingNotification','channel','showNotification','RINGING',':FORCED','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','isNil','hideNotification','removeWaitingNotification','writeLog','STOP','TIMEOUT'];(function(_0x15a6b7,_0x4c5831){var _0x22cbe2=function(_0x12f406){while(--_0x12f406){_0x15a6b7['push'](_0x15a6b7['shift']());}};_0x22cbe2(++_0x4c5831);}(_0x885a,0x180));var _0xa885=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x885a[_0x21a9d9];return _0x46adce;};'use strict';var _=require('lodash');var uuid=require(_0xa885('0x0'));var util=require(_0xa885('0x1'));var logger=require(_0xa885('0x2'))(_0xa885('0x3'));var Agent=function(_0x573a2b,_0xcf0656,_0x1c41b5,_0x2386ec){this[_0xa885('0x4')]=uuid['v4']();this[_0xa885('0x5')]=_0x573a2b;this[_0xa885('0x6')]=_0xcf0656;this['realtime']=_0x1c41b5;this[_0xa885('0x3')]=_0x2386ec;this[_0xa885('0x5')][_0xa885('0x7')](this['handleRun'][_0xa885('0x8')](this),this[_0xa885('0x9')][_0xa885('0x8')](this));this['squeue']['on'](_0xa885('0xa'),this[_0xa885('0x9')][_0xa885('0x8')](this));this[_0xa885('0x5')]['on'](_0xa885('0xb'),this[_0xa885('0xc')][_0xa885('0x8')](this));};Agent['prototype'][_0xa885('0x7')]=function(){this[_0xa885('0x5')][_0xa885('0x7')](this[_0xa885('0xd')][_0xa885('0x8')](this),this[_0xa885('0x9')][_0xa885('0x8')](this));};Agent['prototype'][_0xa885('0xc')]=function(){this[_0xa885('0x9')](!![]);};Agent[_0xa885('0xe')][_0xa885('0xd')]=function(){logger[_0xa885('0xf')]('[%s][AGENT]\x20try\x20with\x20%s',this[_0xa885('0x5')]['id'],this[_0xa885('0x6')]['id']);if(_['isNil'](this[_0xa885('0x10')][_0xa885('0x11')][this['agent']['id']])){logger[_0xa885('0xf')](_0xa885('0x12'),this['squeue']['id'],this[_0xa885('0x6')]['id']);setTimeout(this['push'][_0xa885('0x8')](this),0x3e8);}else{if(this[_0xa885('0x3')][_0xa885('0x13')]||util['isAgentAvailable'](this[_0xa885('0x5')]['id'],this['realtime'][_0xa885('0x11')][this[_0xa885('0x6')]['id']],this[_0xa885('0x5')]['channel'],![])){this[_0xa885('0x10')][_0xa885('0x11')][this[_0xa885('0x6')]['id']]['busy']=!![];this[_0xa885('0x10')][_0xa885('0x11')][this[_0xa885('0x6')]['id']]['busyQueue']=undefined;util[_0xa885('0x14')](this['realtime'],this[_0xa885('0x3')],this[_0xa885('0x6')],this['squeue'][_0xa885('0x15')]);util[_0xa885('0x16')](this[_0xa885('0x4')],this['squeue']['id'],this[_0xa885('0x10')][_0xa885('0x11')][this['agent']['id']],null,this[_0xa885('0x3')]);util['writeLog'](this[_0xa885('0x5')]['id'],this['realtime'][_0xa885('0x11')][this[_0xa885('0x6')]['id']],_0xa885('0x17')+(this[_0xa885('0x3')][_0xa885('0x13')]?_0xa885('0x18'):''));}else{logger[_0xa885('0xf')](_0xa885('0x19'),this['squeue']['id'],this['agent']['id']);setTimeout(this['push']['bind'](this),0x3e8);}}};Agent[_0xa885('0xe')][_0xa885('0x9')]=function(_0x3af5d9){if(_[_0xa885('0x1a')](this[_0xa885('0x10')][_0xa885('0x11')][this['agent']['id']])){return logger[_0xa885('0xf')]('[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0xa885('0x5')]['id'],this['agent']['id']);}else{logger[_0xa885('0xf')]('[%s][AGENT]\x20timeout\x20with\x20%s',this[_0xa885('0x5')]['id'],this[_0xa885('0x6')]['id']);util[_0xa885('0x1b')](this['notificationId'],this[_0xa885('0x5')]['id'],this[_0xa885('0x10')]['agents'][this[_0xa885('0x6')]['id']],null,this['routing']);this[_0xa885('0x10')][_0xa885('0x11')][this[_0xa885('0x6')]['id']]['busy']=![];this[_0xa885('0x10')][_0xa885('0x11')][this[_0xa885('0x6')]['id']]['busyQueue']=undefined;util[_0xa885('0x1c')](this[_0xa885('0x10')],this[_0xa885('0x3')],this[_0xa885('0x6')],this[_0xa885('0x5')][_0xa885('0x15')]);util[_0xa885('0x1d')](this[_0xa885('0x5')]['id'],this['realtime']['agents'][this[_0xa885('0x6')]['id']],_0x3af5d9?_0xa885('0x1e'):_0xa885('0x1f'));}if(!_0x3af5d9){setTimeout(this[_0xa885('0x7')][_0xa885('0x8')](this),0x3e8);}};function agent(_0x18d083,_0x404afc,_0x337e55,_0x1035b1){return new Agent(_0x18d083,_0x404afc,_0x337e55,_0x1035b1);}module['exports']=agent;
\ No newline at end of file
index 46df2ef..e3666a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2d7=['queue','routing','push','handleRun','bind','handleTimeout','drained','handleDrained','prototype','isNil','Agents','realtime','agents','debug','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','writeLog','RINGING','name','channel','showNotification','notificationId','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','[%s][QUEUE]\x20EMPTY','length','hideNotification','STOP','TIMEOUT','busy','removeWaitingNotification','exports','lodash','../../../../../config/logger','squeue'];(function(_0x4b055c,_0x4b870b){var _0x4b62bb=function(_0x4884c2){while(--_0x4884c2){_0x4b055c['push'](_0x4b055c['shift']());}};_0x4b62bb(++_0x4b870b);}(_0xc2d7,0x81));var _0x7c2d=function(_0x2a25d9,_0x1accf4){_0x2a25d9=_0x2a25d9-0x0;var _0x4ddb5d=_0xc2d7[_0x2a25d9];return _0x4ddb5d;};'use strict';var _=require(_0x7c2d('0x0'));var uuid=require('uuid');var util=require('./util');var logger=require(_0x7c2d('0x1'))('routing');var Beepall=function(_0x2c982b,_0x4b3819,_0x1359f5,_0x2895f8){this['notificationId']=uuid['v4']();this[_0x7c2d('0x2')]=_0x2c982b;this[_0x7c2d('0x3')]=_0x4b3819;this['realtime']=_0x1359f5;this[_0x7c2d('0x4')]=_0x2895f8;this['squeue'][_0x7c2d('0x5')](this[_0x7c2d('0x6')][_0x7c2d('0x7')](this),this[_0x7c2d('0x8')]['bind'](this));this[_0x7c2d('0x2')]['on']('timeout',this['handleTimeout'][_0x7c2d('0x7')](this));this['squeue']['on'](_0x7c2d('0x9'),this[_0x7c2d('0xa')][_0x7c2d('0x7')](this));};Beepall[_0x7c2d('0xb')][_0x7c2d('0x5')]=function(){this[_0x7c2d('0x2')][_0x7c2d('0x5')](this[_0x7c2d('0x6')][_0x7c2d('0x7')](this),this[_0x7c2d('0x8')][_0x7c2d('0x7')](this));};Beepall['prototype']['handleDrained']=function(){this['handleTimeout'](!![]);};Beepall[_0x7c2d('0xb')][_0x7c2d('0x6')]=function(){var _0x3a44ce=!![];if(!_[_0x7c2d('0xc')](this[_0x7c2d('0x3')])&&!_[_0x7c2d('0xc')](this[_0x7c2d('0x3')][_0x7c2d('0xd')])&&this[_0x7c2d('0x3')][_0x7c2d('0xd')]['length']>0x0){for(var _0x34422d=0x0,_0x33a647;_0x34422d<this[_0x7c2d('0x3')][_0x7c2d('0xd')]['length'];_0x34422d+=0x1){_0x33a647=this[_0x7c2d('0x3')][_0x7c2d('0xd')][_0x34422d]['id'];if(_[_0x7c2d('0xc')](this[_0x7c2d('0xe')][_0x7c2d('0xf')][_0x33a647])){logger[_0x7c2d('0x10')](_0x7c2d('0x11'),this[_0x7c2d('0x2')]['id'],_0x33a647);}else{if(util['isAgentAvailable'](this['squeue']['id'],this[_0x7c2d('0xe')][_0x7c2d('0xf')][_0x33a647],this[_0x7c2d('0x2')]['channel'],!![])){_0x3a44ce=![];util[_0x7c2d('0x12')](this[_0x7c2d('0x2')]['id'],this['realtime'][_0x7c2d('0xf')][_0x33a647],_0x7c2d('0x13'));this['realtime'][_0x7c2d('0xf')][_0x33a647]['busy']=!![];this['realtime']['agents'][_0x33a647]['busyQueue']=this[_0x7c2d('0x3')][_0x7c2d('0x14')];util['saveWaitingNotification'](this['realtime'],this[_0x7c2d('0x4')],this[_0x7c2d('0x3')]['Agents'][_0x34422d],this[_0x7c2d('0x2')][_0x7c2d('0x15')]);util[_0x7c2d('0x16')](this[_0x7c2d('0x17')],this[_0x7c2d('0x2')]['id'],this[_0x7c2d('0xe')][_0x7c2d('0xf')][_0x33a647],this['queue'],this[_0x7c2d('0x4')]);}}}if(_0x3a44ce){logger[_0x7c2d('0x10')](_0x7c2d('0x18'),this[_0x7c2d('0x2')]['id']);setTimeout(this[_0x7c2d('0x5')][_0x7c2d('0x7')](this),0x3e8);}}else{logger[_0x7c2d('0x10')](_0x7c2d('0x19'),this[_0x7c2d('0x2')]['id']);setTimeout(this[_0x7c2d('0x5')][_0x7c2d('0x7')](this),0x3e8);}};Beepall['prototype'][_0x7c2d('0x8')]=function(_0x48b811){if(!_[_0x7c2d('0xc')](this['queue'])&&!_['isNil'](this['queue'][_0x7c2d('0xd')])){for(var _0x37e025=0x0,_0x517793;_0x37e025<this[_0x7c2d('0x3')][_0x7c2d('0xd')][_0x7c2d('0x1a')];_0x37e025+=0x1){_0x517793=this[_0x7c2d('0x3')][_0x7c2d('0xd')][_0x37e025]['id'];if(_[_0x7c2d('0xc')](this[_0x7c2d('0xe')][_0x7c2d('0xf')][_0x517793])){logger[_0x7c2d('0x10')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x7c2d('0x2')]['id'],_0x517793);}else{util[_0x7c2d('0x1b')](this[_0x7c2d('0x17')],this[_0x7c2d('0x2')]['id'],this['realtime'][_0x7c2d('0xf')][_0x517793],this[_0x7c2d('0x3')],this[_0x7c2d('0x4')]);util[_0x7c2d('0x12')](this[_0x7c2d('0x2')]['id'],this[_0x7c2d('0xe')][_0x7c2d('0xf')][_0x517793],_0x48b811?_0x7c2d('0x1c'):_0x7c2d('0x1d'));this[_0x7c2d('0xe')][_0x7c2d('0xf')][_0x517793][_0x7c2d('0x1e')]=![];this['realtime'][_0x7c2d('0xf')][_0x517793]['busyQueue']=undefined;util[_0x7c2d('0x1f')](this[_0x7c2d('0xe')],this[_0x7c2d('0x4')],this['realtime'][_0x7c2d('0xf')][_0x517793],this[_0x7c2d('0x2')][_0x7c2d('0x15')]);}}}if(!_0x48b811){setTimeout(this[_0x7c2d('0x5')][_0x7c2d('0x7')](this),0x3e8);}};function beepall(_0x3090fd,_0x158234,_0x318a43,_0x41c6bf){return new Beepall(_0x3090fd,_0x158234,_0x318a43,_0x41c6bf);}module[_0x7c2d('0x20')]=beepall;
\ No newline at end of file
+var _0x57f6=['handleTimeout','timeout','drained','handleDrained','prototype','push','isNil','Agents','length','debug','isAgentAvailable','agents','channel','writeLog','busy','name','showNotification','notificationId','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','hideNotification','TIMEOUT','lodash','./util','../../../../../config/logger','routing','squeue','queue','realtime','handleRun','bind'];(function(_0x532a08,_0x1079ab){var _0xd9c5ee=function(_0x1ce50c){while(--_0x1ce50c){_0x532a08['push'](_0x532a08['shift']());}};_0xd9c5ee(++_0x1079ab);}(_0x57f6,0x8d));var _0x657f=function(_0x8b247d,_0x9401a9){_0x8b247d=_0x8b247d-0x0;var _0x4e10a3=_0x57f6[_0x8b247d];return _0x4e10a3;};'use strict';var _=require(_0x657f('0x0'));var uuid=require('uuid');var util=require(_0x657f('0x1'));var logger=require(_0x657f('0x2'))(_0x657f('0x3'));var Beepall=function(_0xaed519,_0x403674,_0x5224d8,_0xdb0f25){this['notificationId']=uuid['v4']();this[_0x657f('0x4')]=_0xaed519;this[_0x657f('0x5')]=_0x403674;this[_0x657f('0x6')]=_0x5224d8;this['routing']=_0xdb0f25;this[_0x657f('0x4')]['push'](this[_0x657f('0x7')][_0x657f('0x8')](this),this[_0x657f('0x9')][_0x657f('0x8')](this));this['squeue']['on'](_0x657f('0xa'),this[_0x657f('0x9')]['bind'](this));this[_0x657f('0x4')]['on'](_0x657f('0xb'),this[_0x657f('0xc')]['bind'](this));};Beepall[_0x657f('0xd')][_0x657f('0xe')]=function(){this['squeue'][_0x657f('0xe')](this[_0x657f('0x7')][_0x657f('0x8')](this),this[_0x657f('0x9')][_0x657f('0x8')](this));};Beepall[_0x657f('0xd')][_0x657f('0xc')]=function(){this[_0x657f('0x9')](!![]);};Beepall[_0x657f('0xd')][_0x657f('0x7')]=function(){var _0x23b248=!![];if(!_[_0x657f('0xf')](this['queue'])&&!_[_0x657f('0xf')](this['queue']['Agents'])&&this[_0x657f('0x5')][_0x657f('0x10')][_0x657f('0x11')]>0x0){for(var _0x504bd0=0x0,_0x27f29a;_0x504bd0<this[_0x657f('0x5')][_0x657f('0x10')]['length'];_0x504bd0+=0x1){_0x27f29a=this[_0x657f('0x5')]['Agents'][_0x504bd0]['id'];if(_[_0x657f('0xf')](this[_0x657f('0x6')]['agents'][_0x27f29a])){logger[_0x657f('0x12')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x657f('0x4')]['id'],_0x27f29a);}else{if(util[_0x657f('0x13')](this[_0x657f('0x4')]['id'],this[_0x657f('0x6')][_0x657f('0x14')][_0x27f29a],this['squeue'][_0x657f('0x15')],!![])){_0x23b248=![];util[_0x657f('0x16')](this['squeue']['id'],this[_0x657f('0x6')]['agents'][_0x27f29a],'RINGING');this[_0x657f('0x6')][_0x657f('0x14')][_0x27f29a][_0x657f('0x17')]=!![];this[_0x657f('0x6')][_0x657f('0x14')][_0x27f29a]['busyQueue']=this[_0x657f('0x5')][_0x657f('0x18')];util['saveWaitingNotification'](this[_0x657f('0x6')],this[_0x657f('0x3')],this['queue'][_0x657f('0x10')][_0x504bd0],this[_0x657f('0x4')][_0x657f('0x15')]);util[_0x657f('0x19')](this[_0x657f('0x1a')],this[_0x657f('0x4')]['id'],this[_0x657f('0x6')][_0x657f('0x14')][_0x27f29a],this[_0x657f('0x5')],this[_0x657f('0x3')]);}}}if(_0x23b248){logger[_0x657f('0x12')](_0x657f('0x1b'),this[_0x657f('0x4')]['id']);setTimeout(this[_0x657f('0xe')][_0x657f('0x8')](this),0x3e8);}}else{logger[_0x657f('0x12')]('[%s][QUEUE]\x20EMPTY',this['squeue']['id']);setTimeout(this[_0x657f('0xe')]['bind'](this),0x3e8);}};Beepall[_0x657f('0xd')][_0x657f('0x9')]=function(_0x464ef9){if(!_[_0x657f('0xf')](this[_0x657f('0x5')])&&!_['isNil'](this[_0x657f('0x5')][_0x657f('0x10')])){for(var _0x37e594=0x0,_0x26b9e2;_0x37e594<this['queue'][_0x657f('0x10')]['length'];_0x37e594+=0x1){_0x26b9e2=this[_0x657f('0x5')][_0x657f('0x10')][_0x37e594]['id'];if(_[_0x657f('0xf')](this[_0x657f('0x6')][_0x657f('0x14')][_0x26b9e2])){logger['debug']('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this['squeue']['id'],_0x26b9e2);}else{util[_0x657f('0x1c')](this[_0x657f('0x1a')],this['squeue']['id'],this[_0x657f('0x6')][_0x657f('0x14')][_0x26b9e2],this[_0x657f('0x5')],this[_0x657f('0x3')]);util[_0x657f('0x16')](this[_0x657f('0x4')]['id'],this[_0x657f('0x6')][_0x657f('0x14')][_0x26b9e2],_0x464ef9?'STOP':_0x657f('0x1d'));this[_0x657f('0x6')]['agents'][_0x26b9e2]['busy']=![];this['realtime'][_0x657f('0x14')][_0x26b9e2]['busyQueue']=undefined;util['removeWaitingNotification'](this[_0x657f('0x6')],this['routing'],this[_0x657f('0x6')]['agents'][_0x26b9e2],this['squeue']['channel']);}}}if(!_0x464ef9){setTimeout(this['push'][_0x657f('0x8')](this),0x3e8);}};function beepall(_0x512993,_0xc3455c,_0x19bd7a,_0x5bffc7){return new Beepall(_0x512993,_0xc3455c,_0x19bd7a,_0x5bffc7);}module['exports']=beepall;
\ No newline at end of file
index 8d4067a..66bfd28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11d5=['./rrmemory','./beepall','./agent','exports'];(function(_0x42ca4d,_0x4a7870){var _0x53cd46=function(_0x83b745){while(--_0x83b745){_0x42ca4d['push'](_0x42ca4d['shift']());}};_0x53cd46(++_0x4a7870);}(_0x11d5,0x1db));var _0x511d=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x11d5[_0x3947c9];return _0x2e7871;};'use strict';module[_0x511d('0x0')]={'rrmemory':require(_0x511d('0x1')),'beepall':require(_0x511d('0x2')),'agent':require(_0x511d('0x3'))};
\ No newline at end of file
+var _0x64df=['exports','./agent'];(function(_0x24476f,_0x48e333){var _0x52c6c3=function(_0x3a5d6e){while(--_0x3a5d6e){_0x24476f['push'](_0x24476f['shift']());}};_0x52c6c3(++_0x48e333);}(_0x64df,0x1c4));var _0xf64d=function(_0x21347a,_0x5d81c7){_0x21347a=_0x21347a-0x0;var _0x3d54d9=_0x64df[_0x21347a];return _0x3d54d9;};'use strict';module[_0xf64d('0x0')]={'rrmemory':require('./rrmemory'),'beepall':require('./beepall'),'agent':require(_0xf64d('0x1'))};
\ No newline at end of file
index 91eeac9..20b9619 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe105=['realtime','intervals','push','handleRun','bind','handleTimeout','module','timeout','drained','handleDrained','prototype','handleCheckReject','isAgentAvailable','agents','channel','debug','[%s][QUEUE]\x20available\x20again\x20%s','agentId','done','[%s][QUEUE]\x20try\x20with\x20%s','busy','busyQueue','name','showNotification','writeLog','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','isNil','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','hideNotification','TIMEOUT','removeWaitingNotification','exports','uuid','./util','../../../../../config/logger','routing','notificationId','squeue','queue'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe105,0xe3));var _0x5e10=function(_0xebec18,_0xbc99d0){_0xebec18=_0xebec18-0x0;var _0x1103fa=_0xe105[_0xebec18];return _0x1103fa;};'use strict';var rr=require('rr');var _=require('lodash');var uuid=require(_0x5e10('0x0'));var util=require(_0x5e10('0x1'));var logger=require(_0x5e10('0x2'))(_0x5e10('0x3'));var RRMemory=function(_0x3be054,_0x28e9b5,_0x273291,_0x25dd2a){this[_0x5e10('0x4')]=uuid['v4']();this[_0x5e10('0x5')]=_0x3be054;this[_0x5e10('0x6')]=_0x28e9b5;this[_0x5e10('0x7')]=_0x273291;this['routing']=_0x25dd2a;this[_0x5e10('0x8')]={};this['squeue'][_0x5e10('0x9')](this[_0x5e10('0xa')][_0x5e10('0xb')](this),this[_0x5e10('0xc')][_0x5e10('0xb')](this),this[_0x5e10('0xd')]);this[_0x5e10('0x5')]['on'](_0x5e10('0xe'),this[_0x5e10('0xc')][_0x5e10('0xb')](this));this[_0x5e10('0x5')]['on'](_0x5e10('0xf'),this['handleDrained']['bind'](this));};RRMemory['prototype'][_0x5e10('0x9')]=function(){this[_0x5e10('0x5')][_0x5e10('0x9')](this[_0x5e10('0xa')][_0x5e10('0xb')](this),this[_0x5e10('0xc')][_0x5e10('0xb')](this));};RRMemory['prototype'][_0x5e10('0x10')]=function(){this[_0x5e10('0xc')](!![]);};RRMemory[_0x5e10('0x11')][_0x5e10('0x12')]=function(_0x1a7b8a){if(util[_0x5e10('0x13')](this[_0x5e10('0x5')]['id'],this[_0x5e10('0x7')][_0x5e10('0x14')][this['agentId']],this[_0x5e10('0x5')][_0x5e10('0x15')],!![])){logger[_0x5e10('0x16')](_0x5e10('0x17'),this[_0x5e10('0x5')]['id'],this[_0x5e10('0x18')]);clearInterval(this[_0x5e10('0x8')][this[_0x5e10('0x18')]]);_0x1a7b8a[_0x5e10('0x19')]();setTimeout(this[_0x5e10('0x9')][_0x5e10('0xb')](this),0x3e8);}};RRMemory[_0x5e10('0x11')][_0x5e10('0xa')]=function(_0x2dd2e1){this[_0x5e10('0x18')]=rr(this[_0x5e10('0x6')]['mapAgentsId']);logger[_0x5e10('0x16')](_0x5e10('0x1a'),this[_0x5e10('0x5')]['id'],this['agentId']);if(_['isNil'](this[_0x5e10('0x7')]['agents'][this[_0x5e10('0x18')]])){logger[_0x5e10('0x16')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this['squeue']['id'],this[_0x5e10('0x18')]);_0x2dd2e1[_0x5e10('0x19')]();setTimeout(this[_0x5e10('0x9')][_0x5e10('0xb')](this),0x3e8);}else{if(util[_0x5e10('0x13')](this[_0x5e10('0x5')]['id'],this['realtime'][_0x5e10('0x14')][this[_0x5e10('0x18')]],this['squeue'][_0x5e10('0x15')],!![])){this[_0x5e10('0x7')][_0x5e10('0x14')][this[_0x5e10('0x18')]][_0x5e10('0x1b')]=!![];this[_0x5e10('0x7')][_0x5e10('0x14')][this[_0x5e10('0x18')]][_0x5e10('0x1c')]=this[_0x5e10('0x6')][_0x5e10('0x1d')];util['saveWaitingNotification'](this['realtime'],this['routing'],this[_0x5e10('0x7')][_0x5e10('0x14')][this[_0x5e10('0x18')]],this[_0x5e10('0x5')]['channel']);util[_0x5e10('0x1e')](this[_0x5e10('0x4')],this[_0x5e10('0x5')]['id'],this[_0x5e10('0x7')]['agents'][this[_0x5e10('0x18')]],this[_0x5e10('0x6')],this['routing']);util[_0x5e10('0x1f')](this['squeue']['id'],this['realtime']['agents'][this[_0x5e10('0x18')]],'RINGING');this[_0x5e10('0x8')][this[_0x5e10('0x18')]]=setInterval(this[_0x5e10('0x12')]['bind'](this,_0x2dd2e1),0x3e8);}else{logger['debug'](_0x5e10('0x20'),this['squeue']['id'],this[_0x5e10('0x18')]);_0x2dd2e1['done']();setTimeout(this[_0x5e10('0x9')]['bind'](this),0x3e8);}}};RRMemory['prototype']['handleTimeout']=function(_0x1f393a){logger[_0x5e10('0x16')]('[%s][QUEUE]\x20timeout\x20with\x20%s',this['squeue']['id'],this['agentId']);if(_[_0x5e10('0x21')](this[_0x5e10('0x7')][_0x5e10('0x14')][this[_0x5e10('0x18')]])){logger[_0x5e10('0x16')](_0x5e10('0x22'),this[_0x5e10('0x5')]['id'],this[_0x5e10('0x18')]);}else{clearInterval(this[_0x5e10('0x8')][this[_0x5e10('0x18')]]);util[_0x5e10('0x23')](this['notificationId'],this[_0x5e10('0x5')]['id'],this[_0x5e10('0x7')]['agents'][this[_0x5e10('0x18')]],this['queue'],this['routing']);util['writeLog'](this[_0x5e10('0x5')]['id'],this[_0x5e10('0x7')][_0x5e10('0x14')][this[_0x5e10('0x18')]],_0x5e10('0x24'));this[_0x5e10('0x7')]['agents'][this['agentId']][_0x5e10('0x1b')]=![];this[_0x5e10('0x7')]['agents'][this[_0x5e10('0x18')]]['busyQueue']=undefined;util[_0x5e10('0x25')](this[_0x5e10('0x7')],this[_0x5e10('0x3')],this[_0x5e10('0x7')]['agents'][this[_0x5e10('0x18')]],this[_0x5e10('0x5')]['channel']);}if(!_0x1f393a){setTimeout(this[_0x5e10('0x9')][_0x5e10('0xb')](this),0x3e8);}};function rrmemory(_0x31a852,_0x45cd62,_0x30de2d,_0x493a9b){return new RRMemory(_0x31a852,_0x45cd62,_0x30de2d,_0x493a9b);}module[_0x5e10('0x26')]=rrmemory;
\ No newline at end of file
+var _0x9b94=['agents','agentId','channel','debug','[%s][QUEUE]\x20available\x20again\x20%s','done','mapAgentsId','isNil','name','showNotification','notificationId','writeLog','RINGING','[%s][QUEUE]\x20timeout\x20with\x20%s','hideNotification','TIMEOUT','busy','busyQueue','removeWaitingNotification','exports','lodash','./util','../../../../../config/logger','routing','squeue','queue','intervals','push','handleRun','bind','handleTimeout','module','drained','handleDrained','prototype','handleCheckReject','realtime'];(function(_0x3c253e,_0x1b4436){var _0xf96e3b=function(_0x5b822f){while(--_0x5b822f){_0x3c253e['push'](_0x3c253e['shift']());}};_0xf96e3b(++_0x1b4436);}(_0x9b94,0xa8));var _0x49b9=function(_0x204882,_0x14cb91){_0x204882=_0x204882-0x0;var _0x339669=_0x9b94[_0x204882];return _0x339669;};'use strict';var rr=require('rr');var _=require(_0x49b9('0x0'));var uuid=require('uuid');var util=require(_0x49b9('0x1'));var logger=require(_0x49b9('0x2'))(_0x49b9('0x3'));var RRMemory=function(_0x3ced22,_0x537e82,_0x27263a,_0x2cd013){this['notificationId']=uuid['v4']();this[_0x49b9('0x4')]=_0x3ced22;this[_0x49b9('0x5')]=_0x537e82;this['realtime']=_0x27263a;this['routing']=_0x2cd013;this[_0x49b9('0x6')]={};this['squeue'][_0x49b9('0x7')](this[_0x49b9('0x8')][_0x49b9('0x9')](this),this[_0x49b9('0xa')]['bind'](this),this[_0x49b9('0xb')]);this[_0x49b9('0x4')]['on']('timeout',this[_0x49b9('0xa')][_0x49b9('0x9')](this));this[_0x49b9('0x4')]['on'](_0x49b9('0xc'),this[_0x49b9('0xd')][_0x49b9('0x9')](this));};RRMemory[_0x49b9('0xe')][_0x49b9('0x7')]=function(){this[_0x49b9('0x4')][_0x49b9('0x7')](this[_0x49b9('0x8')][_0x49b9('0x9')](this),this[_0x49b9('0xa')][_0x49b9('0x9')](this));};RRMemory[_0x49b9('0xe')][_0x49b9('0xd')]=function(){this[_0x49b9('0xa')](!![]);};RRMemory[_0x49b9('0xe')][_0x49b9('0xf')]=function(_0x3900a1){if(util['isAgentAvailable'](this['squeue']['id'],this[_0x49b9('0x10')][_0x49b9('0x11')][this[_0x49b9('0x12')]],this[_0x49b9('0x4')][_0x49b9('0x13')],!![])){logger[_0x49b9('0x14')](_0x49b9('0x15'),this['squeue']['id'],this[_0x49b9('0x12')]);clearInterval(this[_0x49b9('0x6')][this[_0x49b9('0x12')]]);_0x3900a1[_0x49b9('0x16')]();setTimeout(this[_0x49b9('0x7')][_0x49b9('0x9')](this),0x3e8);}};RRMemory['prototype'][_0x49b9('0x8')]=function(_0x1f950d){this[_0x49b9('0x12')]=rr(this['queue'][_0x49b9('0x17')]);logger[_0x49b9('0x14')]('[%s][QUEUE]\x20try\x20with\x20%s',this['squeue']['id'],this[_0x49b9('0x12')]);if(_[_0x49b9('0x18')](this[_0x49b9('0x10')]['agents'][this[_0x49b9('0x12')]])){logger[_0x49b9('0x14')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this['squeue']['id'],this[_0x49b9('0x12')]);_0x1f950d[_0x49b9('0x16')]();setTimeout(this[_0x49b9('0x7')][_0x49b9('0x9')](this),0x3e8);}else{if(util['isAgentAvailable'](this[_0x49b9('0x4')]['id'],this[_0x49b9('0x10')][_0x49b9('0x11')][this['agentId']],this['squeue']['channel'],!![])){this['realtime']['agents'][this['agentId']]['busy']=!![];this[_0x49b9('0x10')]['agents'][this[_0x49b9('0x12')]]['busyQueue']=this[_0x49b9('0x5')][_0x49b9('0x19')];util['saveWaitingNotification'](this[_0x49b9('0x10')],this[_0x49b9('0x3')],this['realtime'][_0x49b9('0x11')][this[_0x49b9('0x12')]],this[_0x49b9('0x4')][_0x49b9('0x13')]);util[_0x49b9('0x1a')](this[_0x49b9('0x1b')],this[_0x49b9('0x4')]['id'],this[_0x49b9('0x10')][_0x49b9('0x11')][this[_0x49b9('0x12')]],this[_0x49b9('0x5')],this[_0x49b9('0x3')]);util[_0x49b9('0x1c')](this[_0x49b9('0x4')]['id'],this['realtime'][_0x49b9('0x11')][this[_0x49b9('0x12')]],_0x49b9('0x1d'));this[_0x49b9('0x6')][this[_0x49b9('0x12')]]=setInterval(this['handleCheckReject']['bind'](this,_0x1f950d),0x3e8);}else{logger[_0x49b9('0x14')]('[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s',this[_0x49b9('0x4')]['id'],this[_0x49b9('0x12')]);_0x1f950d[_0x49b9('0x16')]();setTimeout(this[_0x49b9('0x7')][_0x49b9('0x9')](this),0x3e8);}}};RRMemory[_0x49b9('0xe')][_0x49b9('0xa')]=function(_0x1dbd1f){logger[_0x49b9('0x14')](_0x49b9('0x1e'),this[_0x49b9('0x4')]['id'],this[_0x49b9('0x12')]);if(_[_0x49b9('0x18')](this[_0x49b9('0x10')][_0x49b9('0x11')][this[_0x49b9('0x12')]])){logger[_0x49b9('0x14')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x49b9('0x4')]['id'],this['agentId']);}else{clearInterval(this[_0x49b9('0x6')][this[_0x49b9('0x12')]]);util[_0x49b9('0x1f')](this[_0x49b9('0x1b')],this[_0x49b9('0x4')]['id'],this[_0x49b9('0x10')]['agents'][this['agentId']],this[_0x49b9('0x5')],this['routing']);util[_0x49b9('0x1c')](this['squeue']['id'],this[_0x49b9('0x10')]['agents'][this[_0x49b9('0x12')]],_0x49b9('0x20'));this[_0x49b9('0x10')][_0x49b9('0x11')][this['agentId']][_0x49b9('0x21')]=![];this[_0x49b9('0x10')][_0x49b9('0x11')][this[_0x49b9('0x12')]][_0x49b9('0x22')]=undefined;util[_0x49b9('0x23')](this['realtime'],this[_0x49b9('0x3')],this['realtime']['agents'][this['agentId']],this['squeue'][_0x49b9('0x13')]);}if(!_0x1dbd1f){setTimeout(this[_0x49b9('0x7')][_0x49b9('0x9')](this),0x3e8);}};function rrmemory(_0x3aa943,_0x513f35,_0x6113e2,_0x178344){return new RRMemory(_0x3aa943,_0x513f35,_0x6113e2,_0x178344);}module[_0x49b9('0x24')]=rrmemory;
\ No newline at end of file
index 6e4d0d2..4896fa0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x105a=['lodash','util','../utils','../../../../../config/logger','routing','redis','defaults','localhost','socket.io-emitter','format','user:%s','emit','user:save','\x20interaction','name','account','body','queue','msg','getMustacheRender','notificationTemplate','I\x20can\x27t\x20render\x20your\x20template','error','[%s][QUEUE]\x20%s','notification:%s','save','debug','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','BUSY','online','OFFLINE','hasOwnProperty','CurrentCapacity','Capacity','toUpperCase','\x20MAXCAPACITY','showNotification','hideNotification','checkWaitingNotifications','interaction','some','channel','InteractionId','agents','saveWaitingNotification','WaitingInteractions','removeWaitingNotification','writeLog'];(function(_0x106166,_0xf8a087){var _0x2a9c4a=function(_0x513aeb){while(--_0x513aeb){_0x106166['push'](_0x106166['shift']());}};_0x2a9c4a(++_0xf8a087);}(_0x105a,0x1ea));var _0xa105=function(_0xdbf266,_0x4fc4e2){_0xdbf266=_0xdbf266-0x0;var _0x36d1b3=_0x105a[_0xdbf266];return _0x36d1b3;};'use strict';var _=require(_0xa105('0x0'));var util=require(_0xa105('0x1'));var utils=require(_0xa105('0x2'));var Redis=require('ioredis');var config=require('../../../../../config/environment');var logger=require(_0xa105('0x3'))(_0xa105('0x4'));config[_0xa105('0x5')]=_[_0xa105('0x6')](config['redis'],{'host':_0xa105('0x7'),'port':0x18eb});var io=require(_0xa105('0x8'))(new Redis(config['redis']));function sendNotification(_0x281a34,_0x322303,_0x2e8f61,_0x5c4845,_0x5af1ef,_0x27a8ba){io['to'](util[_0xa105('0x9')](_0xa105('0xa'),_0x5c4845['name']))[_0xa105('0xb')](_0xa105('0xc'),_0x5c4845);var _0x1f566e=_0x27a8ba||{};var _0x3f1331=_0x2e8f61['split']('.');var _0x2189ab={'uniqueid':_0x322303,'channel':_0x3f1331[0x0],'id':_0x3f1331[0x1],'title':_0x3f1331[0x0]+_0xa105('0xd'),'interactionId':_0x3f1331[0x2],'queue':_0x5af1ef?_0x5af1ef[_0xa105('0xe')]:null,'sound':_0x1f566e[_0xa105('0xf')]['notificationSound'],'shake':_0x1f566e[_0xa105('0xf')]['notificationShake']};try{if(!_0x1f566e[_0xa105('0x10')]){_0x1f566e[_0xa105('0x10')]={};}if(_0x5af1ef){_0x1f566e[_0xa105('0x10')][_0xa105('0x11')]=_0x5af1ef;}else if(_0x1f566e[_0xa105('0x10')]['queue']){delete _0x1f566e['body'][_0xa105('0x11')];}_0x2189ab[_0xa105('0x12')]=utils[_0xa105('0x13')](_0x1f566e[_0xa105('0xf')][_0xa105('0x14')],_0x1f566e);}catch(_0x561169){_0x2189ab[_0xa105('0x12')]=_0xa105('0x15');logger[_0xa105('0x16')](util[_0xa105('0x9')](_0xa105('0x17'),_0x322303,_0x561169['message']));}io['to'](util[_0xa105('0x9')]('user:%s',_0x5c4845[_0xa105('0xe')]))[_0xa105('0xb')](util[_0xa105('0x9')](_0xa105('0x18'),_0x281a34?_0xa105('0x19'):'remove'),_0x2189ab);}function writeLog(_0x4ab151,_0x52d4b2,_0x48c744){return logger[_0xa105('0x1a')](util[_0xa105('0x9')](_0xa105('0x1b'),_0x4ab151,_0x52d4b2['name'],_0x48c744));}exports[_0xa105('0x1c')]=function(_0x52fec4,_0x3b79b4,_0x26fd11,_0x52cf43){if(_0x3b79b4['busy']){writeLog(_0x52fec4,_0x3b79b4,_0xa105('0x1d'));return![];}if(!_0x3b79b4[_0xa105('0x1e')]){writeLog(_0x52fec4,_0x3b79b4,_0xa105('0x1f'));return![];}if(_0x3b79b4[_0x26fd11+'Pause']){writeLog(_0x52fec4,_0x3b79b4,'PAUSE');return![];}if(_0x52cf43&&_0x3b79b4[_0xa105('0x20')](_0x26fd11+'Capacity')&&_0x3b79b4[_0xa105('0x20')](_0x26fd11+_0xa105('0x21'))){if(_0x3b79b4[_0x26fd11+_0xa105('0x22')]>0x0&&_0x3b79b4[_0x26fd11+_0xa105('0x21')]>=_0x3b79b4[_0x26fd11+_0xa105('0x22')]){writeLog(_0x52fec4,_0x3b79b4,_0x26fd11[_0xa105('0x23')]()+_0xa105('0x24'));return![];}}return!![];};exports[_0xa105('0x25')]=function(_0x35bad1,_0x411da4,_0x4dc690,_0x38c3ab,_0x2c2bcc){return sendNotification(!![],_0x35bad1,_0x411da4,_0x4dc690,_0x38c3ab,_0x2c2bcc);};exports[_0xa105('0x26')]=function(_0xf86e4b,_0x975afa,_0x2741ae,_0x1c82c0,_0x4bab6d){return sendNotification(![],_0xf86e4b,_0x975afa,_0x2741ae,_0x1c82c0,_0x4bab6d);};exports[_0xa105('0x27')]=function(_0x5880df,_0x35711b,_0x2a80c1){var _0x4fff9c=_0x35711b[_0xa105('0x28')]['UserId'];if(!_0x4fff9c&&_0x2a80c1){_0x4fff9c=_0x2a80c1['id'];}var _0x573f1a=_[_0xa105('0x29')](_0x5880df[_0x35711b[_0xa105('0x2a')]+'QueuesWaitingInteractions'],function(_0x22356e){var _0x278d23=_['capitalize'](_0x35711b[_0xa105('0x2a')])+_0xa105('0x2b');return _0x22356e[_0x278d23]===_0x35711b['interaction']['id'];});if(!_0x573f1a&&_0x4fff9c){_0x573f1a=_[_0xa105('0x29')](_0x5880df[_0xa105('0x2c')][_0x4fff9c][_0x35711b[_0xa105('0x2a')]+'WaitingInteractions'],function(_0x337a51){return _0x337a51['id']===_0x35711b[_0xa105('0x28')]['id'];});}return _0x573f1a;};exports[_0xa105('0x2d')]=function(_0x20b614,_0x17c803,_0x494d6a,_0x3651fb){_0x20b614[_0xa105('0x2c')][_0x494d6a['id']][_0x3651fb+_0xa105('0x2e')][_0x17c803['message']['id']]={'id':_0x17c803[_0xa105('0x28')]['id']};};exports[_0xa105('0x2f')]=function(_0x570dd2,_0x177c9c,_0xba3e91,_0x3497fc){delete _0x570dd2[_0xa105('0x2c')][_0xba3e91['id']][_0x3497fc+_0xa105('0x2e')][_0x177c9c['message']['id']];};exports[_0xa105('0x30')]=writeLog;
\ No newline at end of file
+var _0x2035=['save','remove','debug','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','BUSY','online','PAUSE','hasOwnProperty','Capacity','CurrentCapacity','toUpperCase','\x20MAXCAPACITY','interaction','UserId','some','QueuesWaitingInteractions','capitalize','channel','InteractionId','agents','saveWaitingNotification','WaitingInteractions','writeLog','util','ioredis','../../../../../config/environment','../../../../../config/logger','routing','redis','defaults','localhost','format','user:%s','name','emit','user:save','split','\x20interaction','account','notificationSound','body','queue','msg','getMustacheRender','notificationTemplate','I\x20can\x27t\x20render\x20your\x20template','error','message','notification:%s'];(function(_0x36f82a,_0x4ec395){var _0x495067=function(_0x2ede56){while(--_0x2ede56){_0x36f82a['push'](_0x36f82a['shift']());}};_0x495067(++_0x4ec395);}(_0x2035,0x112));var _0x5203=function(_0x480a97,_0x348428){_0x480a97=_0x480a97-0x0;var _0x521bd8=_0x2035[_0x480a97];return _0x521bd8;};'use strict';var _=require('lodash');var util=require(_0x5203('0x0'));var utils=require('../utils');var Redis=require(_0x5203('0x1'));var config=require(_0x5203('0x2'));var logger=require(_0x5203('0x3'))(_0x5203('0x4'));config[_0x5203('0x5')]=_[_0x5203('0x6')](config[_0x5203('0x5')],{'host':_0x5203('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x5203('0x5')]));function sendNotification(_0x7120f3,_0x5a57f7,_0x45bc01,_0x548993,_0x2ffafb,_0x41a29f){io['to'](util[_0x5203('0x8')](_0x5203('0x9'),_0x548993[_0x5203('0xa')]))[_0x5203('0xb')](_0x5203('0xc'),_0x548993);var _0xe7b426=_0x41a29f||{};var _0x1e2fea=_0x45bc01[_0x5203('0xd')]('.');var _0x3cde25={'uniqueid':_0x5a57f7,'channel':_0x1e2fea[0x0],'id':_0x1e2fea[0x1],'title':_0x1e2fea[0x0]+_0x5203('0xe'),'interactionId':_0x1e2fea[0x2],'queue':_0x2ffafb?_0x2ffafb[_0x5203('0xa')]:null,'sound':_0xe7b426[_0x5203('0xf')][_0x5203('0x10')],'shake':_0xe7b426[_0x5203('0xf')]['notificationShake']};try{if(!_0xe7b426[_0x5203('0x11')]){_0xe7b426[_0x5203('0x11')]={};}if(_0x2ffafb){_0xe7b426[_0x5203('0x11')][_0x5203('0x12')]=_0x2ffafb;}else if(_0xe7b426[_0x5203('0x11')]['queue']){delete _0xe7b426[_0x5203('0x11')]['queue'];}_0x3cde25[_0x5203('0x13')]=utils[_0x5203('0x14')](_0xe7b426[_0x5203('0xf')][_0x5203('0x15')],_0xe7b426);}catch(_0x1cb51e){_0x3cde25[_0x5203('0x13')]=_0x5203('0x16');logger[_0x5203('0x17')](util[_0x5203('0x8')]('[%s][QUEUE]\x20%s',_0x5a57f7,_0x1cb51e[_0x5203('0x18')]));}io['to'](util[_0x5203('0x8')](_0x5203('0x9'),_0x548993[_0x5203('0xa')]))[_0x5203('0xb')](util[_0x5203('0x8')](_0x5203('0x19'),_0x7120f3?_0x5203('0x1a'):_0x5203('0x1b')),_0x3cde25);}function writeLog(_0x10d228,_0x3f4136,_0x30b5d4){return logger[_0x5203('0x1c')](util[_0x5203('0x8')](_0x5203('0x1d'),_0x10d228,_0x3f4136[_0x5203('0xa')],_0x30b5d4));}exports[_0x5203('0x1e')]=function(_0x1c816d,_0xdf8e11,_0x571e0a,_0x21a9d3){if(_0xdf8e11['busy']){writeLog(_0x1c816d,_0xdf8e11,_0x5203('0x1f'));return![];}if(!_0xdf8e11[_0x5203('0x20')]){writeLog(_0x1c816d,_0xdf8e11,'OFFLINE');return![];}if(_0xdf8e11[_0x571e0a+'Pause']){writeLog(_0x1c816d,_0xdf8e11,_0x5203('0x21'));return![];}if(_0x21a9d3&&_0xdf8e11[_0x5203('0x22')](_0x571e0a+_0x5203('0x23'))&&_0xdf8e11[_0x5203('0x22')](_0x571e0a+_0x5203('0x24'))){if(_0xdf8e11[_0x571e0a+_0x5203('0x23')]>0x0&&_0xdf8e11[_0x571e0a+_0x5203('0x24')]>=_0xdf8e11[_0x571e0a+'Capacity']){writeLog(_0x1c816d,_0xdf8e11,_0x571e0a[_0x5203('0x25')]()+_0x5203('0x26'));return![];}}return!![];};exports['showNotification']=function(_0x4bccd7,_0x5e5bd1,_0x588005,_0x38c42,_0x4ea332){return sendNotification(!![],_0x4bccd7,_0x5e5bd1,_0x588005,_0x38c42,_0x4ea332);};exports['hideNotification']=function(_0x8e4100,_0x4ae2ae,_0x2850dc,_0x31b886,_0x322434){return sendNotification(![],_0x8e4100,_0x4ae2ae,_0x2850dc,_0x31b886,_0x322434);};exports['checkWaitingNotifications']=function(_0x599708,_0x2f8e99,_0x28cd81){var _0x472e45=_0x2f8e99[_0x5203('0x27')][_0x5203('0x28')];if(!_0x472e45&&_0x28cd81){_0x472e45=_0x28cd81['id'];}var _0x4030e8=_[_0x5203('0x29')](_0x599708[_0x2f8e99['channel']+_0x5203('0x2a')],function(_0x4f65d6){var _0x5404f0=_[_0x5203('0x2b')](_0x2f8e99[_0x5203('0x2c')])+_0x5203('0x2d');return _0x4f65d6[_0x5404f0]===_0x2f8e99[_0x5203('0x27')]['id'];});if(!_0x4030e8&&_0x472e45){_0x4030e8=_[_0x5203('0x29')](_0x599708[_0x5203('0x2e')][_0x472e45][_0x2f8e99[_0x5203('0x2c')]+'WaitingInteractions'],function(_0x4fc0f8){return _0x4fc0f8['id']===_0x2f8e99[_0x5203('0x27')]['id'];});}return _0x4030e8;};exports[_0x5203('0x2f')]=function(_0x3765b3,_0x2a7f7c,_0x34d4f6,_0x14310a){_0x3765b3[_0x5203('0x2e')][_0x34d4f6['id']][_0x14310a+_0x5203('0x30')][_0x2a7f7c[_0x5203('0x18')]['id']]={'id':_0x2a7f7c[_0x5203('0x27')]['id']};};exports['removeWaitingNotification']=function(_0x1842ee,_0x96caaa,_0x307227,_0x311d9e){delete _0x1842ee[_0x5203('0x2e')][_0x307227['id']][_0x311d9e+_0x5203('0x30')][_0x96caaa[_0x5203('0x18')]['id']];};exports[_0x5203('0x31')]=writeLog;
\ No newline at end of file
index d627225..6cd8d61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7900=['stringify','validate','./utils','../../../../config/logger','routing','string','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','length','error','[%s][SYSTEM]\x20%s','join','info','next','[%s][SYSTEM]\x20commnad:\x20%s','trim','replace','isNil','isEmpty','body','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','isObject'];(function(_0x164af1,_0x3cf772){var _0x5d81a2=function(_0xa57547){while(--_0xa57547){_0x164af1['push'](_0x164af1['shift']());}};_0x5d81a2(++_0x3cf772);}(_0x7900,0x7f));var _0x0790=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x7900[_0x20a584];return _0x4b41a8;};'use strict';var schema=require(_0x0790('0x0'));var sh=require('shelljs');var _=require('lodash');var utils=require(_0x0790('0x1'));var logger=require(_0x0790('0x2'))(_0x0790('0x3'));var system=schema({'command':{'type':_0x0790('0x4'),'required':!![],'message':_0x0790('0x5')}});exports['consequence']=function(_0x4b41d4,_0x56d814){return function(_0x33913e){try{var _0xbeed1a={'command':_0x56d814[0x0]};var _0x2fc351=system[_0x0790('0x0')](_0xbeed1a,{'typecast':!![]});if(_0x2fc351[_0x0790('0x6')]){logger[_0x0790('0x7')](_0x0790('0x8'),_0x4b41d4,_['map'](_0x2fc351,'message')[_0x0790('0x9')](',\x20'));logger[_0x0790('0xa')]('[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next',_0x4b41d4);_0x33913e[_0x0790('0xb')]();}else{var _0x9adf8a=this;var _0x527a74=utils['getMustacheRender'](_0x56d814[0x0],this);logger[_0x0790('0xa')](_0x0790('0xc'),_0x4b41d4,_0x527a74);sh['exec'](_[_0x0790('0xd')](_0x527a74),function(_0x10db08,_0x237e63){logger[_0x0790('0xa')]('[%s][SYSTEM]\x20result\x20code:\x20%s',_0x4b41d4,_0x10db08);if(_0x10db08==0x0){var _0x183e87=_0x237e63[_0x0790('0xe')](/(\r\n|\n|\r)/gm,'');if(_[_0x0790('0xf')](_0x56d814[0x1])||_[_0x0790('0x10')](_0x56d814[0x1])){logger['info']('[%s][SYSTEM]\x20no\x20variable',_0x4b41d4);_0x9adf8a[_0x0790('0x11')][_0x56d814[0x1]]=_0x183e87;}else{logger[_0x0790('0xa')](_0x0790('0x12'),_0x4b41d4,_0x56d814[0x1],_0x183e87);_0x9adf8a[_0x0790('0x11')][_0x56d814[0x1]]=_0x183e87;}}_0x33913e[_0x0790('0xb')]();});}}catch(_0x224a9b){logger[_0x0790('0x7')](_0x0790('0x8'),_0x4b41d4,_[_0x0790('0x13')](_0x224a9b)?JSON[_0x0790('0x14')](_0x224a9b):_0x224a9b);logger[_0x0790('0xa')]('[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next',_0x4b41d4);_0x33913e[_0x0790('0xb')]();}};};
\ No newline at end of file
+var _0xe4c3=['error','isObject','stringify','shelljs','./utils','routing','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','validate','length','[%s][SYSTEM]\x20%s','message','join','info','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','next','[%s][SYSTEM]\x20commnad:\x20%s','exec','trim','[%s][SYSTEM]\x20result\x20code:\x20%s','replace','isNil','isEmpty','[%s][SYSTEM]\x20no\x20variable','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s'];(function(_0x476752,_0x2d2198){var _0x35bdc1=function(_0x10abfc){while(--_0x10abfc){_0x476752['push'](_0x476752['shift']());}};_0x35bdc1(++_0x2d2198);}(_0xe4c3,0xcb));var _0x3e4c=function(_0x33afc6,_0x75dd32){_0x33afc6=_0x33afc6-0x0;var _0x54264d=_0xe4c3[_0x33afc6];return _0x54264d;};'use strict';var schema=require('validate');var sh=require(_0x3e4c('0x0'));var _=require('lodash');var utils=require(_0x3e4c('0x1'));var logger=require('../../../../config/logger')(_0x3e4c('0x2'));var system=schema({'command':{'type':'string','required':!![],'message':_0x3e4c('0x3')}});exports[_0x3e4c('0x4')]=function(_0x4702cb,_0x5f5af8){return function(_0x350708){try{var _0x1ad9de={'command':_0x5f5af8[0x0]};var _0x29206d=system[_0x3e4c('0x5')](_0x1ad9de,{'typecast':!![]});if(_0x29206d[_0x3e4c('0x6')]){logger['error'](_0x3e4c('0x7'),_0x4702cb,_['map'](_0x29206d,_0x3e4c('0x8'))[_0x3e4c('0x9')](',\x20'));logger[_0x3e4c('0xa')](_0x3e4c('0xb'),_0x4702cb);_0x350708[_0x3e4c('0xc')]();}else{var _0x4e9a88=this;var _0x1a1eb6=utils['getMustacheRender'](_0x5f5af8[0x0],this);logger[_0x3e4c('0xa')](_0x3e4c('0xd'),_0x4702cb,_0x1a1eb6);sh[_0x3e4c('0xe')](_[_0x3e4c('0xf')](_0x1a1eb6),function(_0x32fcca,_0x48f760){logger['info'](_0x3e4c('0x10'),_0x4702cb,_0x32fcca);if(_0x32fcca==0x0){var _0x40c0fe=_0x48f760[_0x3e4c('0x11')](/(\r\n|\n|\r)/gm,'');if(_[_0x3e4c('0x12')](_0x5f5af8[0x1])||_[_0x3e4c('0x13')](_0x5f5af8[0x1])){logger[_0x3e4c('0xa')](_0x3e4c('0x14'),_0x4702cb);_0x4e9a88['body'][_0x5f5af8[0x1]]=_0x40c0fe;}else{logger[_0x3e4c('0xa')](_0x3e4c('0x15'),_0x4702cb,_0x5f5af8[0x1],_0x40c0fe);_0x4e9a88['body'][_0x5f5af8[0x1]]=_0x40c0fe;}}_0x350708[_0x3e4c('0xc')]();});}}catch(_0x105682){logger[_0x3e4c('0x16')]('[%s][SYSTEM]\x20%s',_0x4702cb,_[_0x3e4c('0x17')](_0x105682)?JSON[_0x3e4c('0x18')](_0x105682):_0x105682);logger[_0x3e4c('0xa')](_0x3e4c('0xb'),_0x4702cb);_0x350708['next']();}};};
\ No newline at end of file
index 44f2624..f6cec4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x909d=['addTags','then','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','interaction','catch','error','stringify','finally','lodash','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../../../config/logger','number','consequence','validate','length','[%s][TAG]\x20%s','map','message','info','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','next','channel','Interaction'];(function(_0x79fb55,_0x2b48b9){var _0x5a1610=function(_0x1d3865){while(--_0x1d3865){_0x79fb55['push'](_0x79fb55['shift']());}};_0x5a1610(++_0x2b48b9);}(_0x909d,0x1d3));var _0xd909=function(_0x18cd5b,_0x10240b){_0x18cd5b=_0x18cd5b-0x0;var _0x5eaa52=_0x909d[_0x18cd5b];return _0x5eaa52;};'use strict';var schema=require('validate');var _=require(_0xd909('0x0'));var rpc={'chatInteraction':require(_0xd909('0x1')),'openchannelInteraction':require(_0xd909('0x2')),'smsInteraction':require(_0xd909('0x3')),'mailInteraction':require('../../rpc/mailInteraction'),'faxInteraction':require(_0xd909('0x4')),'whatsappInteraction':require(_0xd909('0x5'))};var logger=require(_0xd909('0x6'))('routing');var tag=schema({'tag':{'type':_0xd909('0x7'),'required':!![],'message':'TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required'}});exports[_0xd909('0x8')]=function(_0x1ba795,_0x516740,_0x42fd54,_0x5d2437){return function(_0x3f38be){try{var _0xe0c92d={'tag':_0x516740[0x0]};var _0x392378=tag[_0xd909('0x9')](_0xe0c92d,{'typecast':!![]});if(_0x392378[_0xd909('0xa')]){logger['error'](_0xd909('0xb'),_0x1ba795,_[_0xd909('0xc')](_0x392378,_0xd909('0xd'))['join'](',\x20'));logger[_0xd909('0xe')](_0xd909('0xf'),_0x1ba795);_0x3f38be[_0xd909('0x10')]();}else{var _0x34108b={'ids':[_0x516740[0x0]]};if(rpc[_0x5d2437[_0xd909('0x11')]+_0xd909('0x12')]){rpc[_0x5d2437[_0xd909('0x11')]+_0xd909('0x12')][_0xd909('0x13')](_0x5d2437['interaction']['id'],_0x34108b)[_0xd909('0x14')](function(_0x3efc9d){logger[_0xd909('0xe')](_0xd909('0x15'),_0x1ba795,_0x516740[0x1],_0x5d2437[_0xd909('0x11')],_0x5d2437[_0xd909('0x16')]['id']);})[_0xd909('0x17')](function(_0x30728a){logger[_0xd909('0x18')](_0xd909('0xb'),_0x1ba795,JSON[_0xd909('0x19')](_0x30728a));logger[_0xd909('0xe')](_0xd909('0xf'),_0x1ba795);})[_0xd909('0x1a')](function(){_0x3f38be['next']();});}}}catch(_0x641199){logger[_0xd909('0x18')](_0xd909('0xb'),_0x1ba795,_['isObject'](_0x641199)?JSON[_0xd909('0x19')](_0x641199):_0x641199);logger[_0xd909('0xe')](_0xd909('0xf'),_0x1ba795);_0x3f38be[_0xd909('0x10')]();}};};
\ No newline at end of file
+var _0xf1b9=['../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../../../config/logger','number','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','error','[%s][TAG]\x20%s','message','info','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','next','channel','Interaction','addTags','interaction','then','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','catch','stringify','finally','validate','lodash','../../rpc/smsInteraction'];(function(_0x8dfc91,_0x50459e){var _0x2a2bb9=function(_0x3c508e){while(--_0x3c508e){_0x8dfc91['push'](_0x8dfc91['shift']());}};_0x2a2bb9(++_0x50459e);}(_0xf1b9,0xb3));var _0x9f1b=function(_0x2c6511,_0x4f9f24){_0x2c6511=_0x2c6511-0x0;var _0x20e331=_0xf1b9[_0x2c6511];return _0x20e331;};'use strict';var schema=require(_0x9f1b('0x0'));var _=require(_0x9f1b('0x1'));var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'smsInteraction':require(_0x9f1b('0x2')),'mailInteraction':require(_0x9f1b('0x3')),'faxInteraction':require(_0x9f1b('0x4')),'whatsappInteraction':require(_0x9f1b('0x5'))};var logger=require(_0x9f1b('0x6'))('routing');var tag=schema({'tag':{'type':_0x9f1b('0x7'),'required':!![],'message':_0x9f1b('0x8')}});exports[_0x9f1b('0x9')]=function(_0x641d0,_0x3bfcf5,_0x396a41,_0x187872){return function(_0x4a9908){try{var _0x373433={'tag':_0x3bfcf5[0x0]};var _0x20f8b7=tag[_0x9f1b('0x0')](_0x373433,{'typecast':!![]});if(_0x20f8b7[_0x9f1b('0xa')]){logger[_0x9f1b('0xb')](_0x9f1b('0xc'),_0x641d0,_['map'](_0x20f8b7,_0x9f1b('0xd'))['join'](',\x20'));logger[_0x9f1b('0xe')](_0x9f1b('0xf'),_0x641d0);_0x4a9908[_0x9f1b('0x10')]();}else{var _0x2ad445={'ids':[_0x3bfcf5[0x0]]};if(rpc[_0x187872[_0x9f1b('0x11')]+_0x9f1b('0x12')]){rpc[_0x187872[_0x9f1b('0x11')]+_0x9f1b('0x12')][_0x9f1b('0x13')](_0x187872[_0x9f1b('0x14')]['id'],_0x2ad445)[_0x9f1b('0x15')](function(_0x1f5abb){logger[_0x9f1b('0xe')](_0x9f1b('0x16'),_0x641d0,_0x3bfcf5[0x1],_0x187872[_0x9f1b('0x11')],_0x187872[_0x9f1b('0x14')]['id']);})[_0x9f1b('0x17')](function(_0x34dff1){logger[_0x9f1b('0xb')]('[%s][TAG]\x20%s',_0x641d0,JSON[_0x9f1b('0x18')](_0x34dff1));logger['info'](_0x9f1b('0xf'),_0x641d0);})[_0x9f1b('0x19')](function(){_0x4a9908['next']();});}}}catch(_0x424e23){logger[_0x9f1b('0xb')](_0x9f1b('0xc'),_0x641d0,_['isObject'](_0x424e23)?JSON[_0x9f1b('0x18')](_0x424e23):_0x424e23);logger['info'](_0x9f1b('0xf'),_0x641d0);_0x4a9908[_0x9f1b('0x10')]();}};};
\ No newline at end of file
index 3141746..2a62fe0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb8a=['request-promise','routing','lodash','consequence','\x20-\x20','replace','includes','push','urlOnAnswer','?params=','urlOnRing','title','jsonrpc','params','utf8','POST','application/json-rpc','parse','logged','Unable\x20to\x20login\x20with\x20TVox\x20application','channelId=','&sessionId=','&data=','stringify','info','[%s][TVOX]\x20Request\x20sent\x20to\x20TVox:\x20%s','stop','error','[%s][TVOX]\x20%s','isObject','[%s][TVOX]\x20Application\x20already\x20executed\x20for\x20the\x20current\x20session,\x20force\x20next'];(function(_0x1f535b,_0xc42523){var _0x5bb329=function(_0xcaa78d){while(--_0xcaa78d){_0x1f535b['push'](_0x1f535b['shift']());}};_0x5bb329(++_0xc42523);}(_0xeb8a,0x155));var _0xaeb8=function(_0x119b7e,_0x13115e){_0x119b7e=_0x119b7e-0x0;var _0x3877af=_0xeb8a[_0x119b7e];return _0x3877af;};'use strict';var rp=require(_0xaeb8('0x0'));var logger=require('../../../../config/logger')(_0xaeb8('0x1'));var _=require(_0xaeb8('0x2'));var arr=[];exports[_0xaeb8('0x3')]=function(_0x228d03,_0x3c41c7){return function(_0x3cda4b){var _0x42267a=_0x3c41c7[0xa];var _0x501a08=_0x3c41c7[0xb];var _0x44fc7d=_0x3c41c7[0xc];var _0x1bd2b1=_0x3c41c7[0xd];var _0x411323=_0x3c41c7[0xe];var _0x3abe92=_0x3c41c7[0xf]['replace'](/\n/g,_0xaeb8('0x4'));var _0x40aa97=_0x3c41c7[0x10][_0xaeb8('0x5')](/\n/g,'\x20');if(!arr[_0xaeb8('0x6')](_0x501a08)){arr[_0xaeb8('0x7')](_0x501a08);var _0x13edb6=_0x3c41c7[0x3];var _0x213ee8=_0x3c41c7[0x4];var _0x135821=_0x3c41c7[0x1];var _0x350c28=_0x3c41c7[0x0];var _0x271577={};_0x271577[_0xaeb8('0x8')]=_0x3c41c7[0x8]+_0xaeb8('0x9')+_0x44fc7d+'|'+_0x42267a+'|'+_0x1bd2b1+'|'+_0x501a08+'|'+_0x411323;_0x271577[_0xaeb8('0xa')]=_0x3c41c7[0x7]+_0xaeb8('0x9')+_0x44fc7d+'|'+_0x42267a+'|'+_0x1bd2b1+'|'+_0x501a08+'|'+_0x411323+'|'+_0x3abe92+'|'+_0x40aa97;_0x271577[_0xaeb8('0xb')]=_0x3c41c7[0x9];var _0xbd4eac={};_0xbd4eac[_0xaeb8('0xc')]='2.0';_0xbd4eac['method']='login';var _0x10ca60=[];_0x10ca60[_0xaeb8('0x7')](_0x3c41c7[0x2]);_0x10ca60[_0xaeb8('0x7')](_0x3c41c7[0x5]);_0x10ca60['push'](_0x3c41c7[0x6]);_0xbd4eac[_0xaeb8('0xd')]=_0x10ca60;_0xbd4eac['id']=0x1;var _0x287766=JSON['stringify'](_0xbd4eac);var _0x362cae={'encoding':_0xaeb8('0xe'),'method':_0xaeb8('0xf'),'timeout':0x2710,'url':_0x13edb6,'headers':{'Content-Type':_0xaeb8('0x10')},'body':_0x287766};return rp(_0x362cae)['then'](function(_0x16105e){const _0x474f6c=JSON[_0xaeb8('0x11')](_0x16105e);if(!_0x474f6c['result'][_0xaeb8('0x12')]){throw new Error(_0xaeb8('0x13'));}var _0x284d9e=_0x501a08;var _0x4d25b4=_0xaeb8('0x14')+_0x135821+'&serviceId='+_0x350c28+_0xaeb8('0x15')+_0x284d9e+_0xaeb8('0x16')+JSON[_0xaeb8('0x17')](_0x271577);var _0x5519da=_0x213ee8+'?'+_0x4d25b4;return rp(_0x5519da);})['then'](function(_0x4172d7){logger[_0xaeb8('0x18')](_0xaeb8('0x19'),_0x228d03,_0x4172d7);_0x3cda4b[_0xaeb8('0x1a')]();})['catch'](function(_0x39988b){logger[_0xaeb8('0x1b')](_0xaeb8('0x1c'),_0x228d03,_[_0xaeb8('0x1d')](_0x39988b)?JSON[_0xaeb8('0x17')](_0x39988b):_0x39988b);_0x3cda4b['stop']();});}else{logger[_0xaeb8('0x18')](_0xaeb8('0x1e'),_0x228d03);_0x3cda4b['next']();}};};
\ No newline at end of file
+var _0x3c77=['&data=','info','[%s][TVOX]\x20Request\x20sent\x20to\x20TVox:\x20%s','error','[%s][TVOX]\x20%s','stop','[%s][TVOX]\x20Application\x20already\x20executed\x20for\x20the\x20current\x20session,\x20force\x20next','routing','lodash','consequence','\x20-\x20','replace','urlOnAnswer','urlOnRing','?params=','jsonrpc','2.0','method','push','params','stringify','utf8','POST','then','result','logged','Unable\x20to\x20login\x20with\x20TVox\x20application','channelId=','&serviceId='];(function(_0x4c7d8b,_0x572388){var _0x187158=function(_0x5e956d){while(--_0x5e956d){_0x4c7d8b['push'](_0x4c7d8b['shift']());}};_0x187158(++_0x572388);}(_0x3c77,0x129));var _0x73c7=function(_0x1291a1,_0x3145e7){_0x1291a1=_0x1291a1-0x0;var _0x3a5404=_0x3c77[_0x1291a1];return _0x3a5404;};'use strict';var rp=require('request-promise');var logger=require('../../../../config/logger')(_0x73c7('0x0'));var _=require(_0x73c7('0x1'));var arr=[];exports[_0x73c7('0x2')]=function(_0x5d6273,_0x252686){return function(_0x3f6046){var _0x3312c4=_0x252686[0xa];var _0x527c15=_0x252686[0xb];var _0x275738=_0x252686[0xc];var _0x53afdf=_0x252686[0xd];var _0x102310=_0x252686[0xe];var _0x447908=_0x252686[0xf]['replace'](/\n/g,_0x73c7('0x3'));var _0x2dec80=_0x252686[0x10][_0x73c7('0x4')](/\n/g,'\x20');if(!arr['includes'](_0x527c15)){arr['push'](_0x527c15);var _0x373f34=_0x252686[0x3];var _0x2799d0=_0x252686[0x4];var _0x598459=_0x252686[0x1];var _0x3b37d7=_0x252686[0x0];var _0x15f5aa={};_0x15f5aa[_0x73c7('0x5')]=_0x252686[0x8]+'?params='+_0x275738+'|'+_0x3312c4+'|'+_0x53afdf+'|'+_0x527c15+'|'+_0x102310;_0x15f5aa[_0x73c7('0x6')]=_0x252686[0x7]+_0x73c7('0x7')+_0x275738+'|'+_0x3312c4+'|'+_0x53afdf+'|'+_0x527c15+'|'+_0x102310+'|'+_0x447908+'|'+_0x2dec80;_0x15f5aa['title']=_0x252686[0x9];var _0x453f9d={};_0x453f9d[_0x73c7('0x8')]=_0x73c7('0x9');_0x453f9d[_0x73c7('0xa')]='login';var _0x634581=[];_0x634581['push'](_0x252686[0x2]);_0x634581[_0x73c7('0xb')](_0x252686[0x5]);_0x634581[_0x73c7('0xb')](_0x252686[0x6]);_0x453f9d[_0x73c7('0xc')]=_0x634581;_0x453f9d['id']=0x1;var _0x274ba2=JSON[_0x73c7('0xd')](_0x453f9d);var _0x3d437d={'encoding':_0x73c7('0xe'),'method':_0x73c7('0xf'),'timeout':0x2710,'url':_0x373f34,'headers':{'Content-Type':'application/json-rpc'},'body':_0x274ba2};return rp(_0x3d437d)[_0x73c7('0x10')](function(_0x5c6deb){const _0x2a4ae9=JSON['parse'](_0x5c6deb);if(!_0x2a4ae9[_0x73c7('0x11')][_0x73c7('0x12')]){throw new Error(_0x73c7('0x13'));}var _0x5af983=_0x527c15;var _0x1fe327=_0x73c7('0x14')+_0x598459+_0x73c7('0x15')+_0x3b37d7+'&sessionId='+_0x5af983+_0x73c7('0x16')+JSON[_0x73c7('0xd')](_0x15f5aa);var _0x2268f4=_0x2799d0+'?'+_0x1fe327;return rp(_0x2268f4);})[_0x73c7('0x10')](function(_0x178011){logger[_0x73c7('0x17')](_0x73c7('0x18'),_0x5d6273,_0x178011);_0x3f6046['stop']();})['catch'](function(_0x4fd049){logger[_0x73c7('0x19')](_0x73c7('0x1a'),_0x5d6273,_['isObject'](_0x4fd049)?JSON[_0x73c7('0xd')](_0x4fd049):_0x4fd049);_0x3f6046[_0x73c7('0x1b')]();});}else{logger[_0x73c7('0x17')](_0x73c7('0x1c'),_0x5d6273);_0x3f6046['next']();}};};
\ No newline at end of file
index d45c8d1..fb45b30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['exports','render','merge','body','contact','message','account','interaction','list','mustache','lodash'];(function(_0x101e0c,_0x120640){var _0x277f2f=function(_0x50bfa1){while(--_0x50bfa1){_0x101e0c['push'](_0x101e0c['shift']());}};_0x277f2f(++_0x120640);}(_0xe706,0xa3));var _0x6e70=function(_0x4b4638,_0xe99cda){_0x4b4638=_0x4b4638-0x0;var _0x59e92b=_0xe706[_0x4b4638];return _0x59e92b;};'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
+var _0xe706=['exports','render','merge','body','contact','message','account','interaction','list','mustache','lodash'];(function(_0x59b710,_0x24843c){var _0x23738e=function(_0x48a9a4){while(--_0x48a9a4){_0x59b710['push'](_0x59b710['shift']());}};_0x23738e(++_0x24843c);}(_0xe706,0xa3));var _0x6e70=function(_0x23345f,_0xc1cd34){_0x23345f=_0x23345f-0x0;var _0x1865e0=_0xe706[_0x23345f];return _0x1865e0;};'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 8782fc8..1436d93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5760=['rules','channel','message','interaction','checkWaitingNotifications','applications','isArray','length','existsSync','.js','toLowerCase','autoreply','appdata','split','slice','join','push','dialogflow','dialogflowv2','amazonlex','TagId','tvox','account','notificationTemplate','ContactId','body','format','%s:%s:%s','app','./interval','intervals','./applications/','consequence','priority','info','on\x20interval','\x20|\x20','error','Please\x20create\x20a\x20new\x20file\x20under','execute','stringify','matchPath','emit','complete','Skipped\x20routing\x20for\x20%s','No\x20applications\x20to\x20execute','stack','routing\x20is\x20empty','agent','agents','busy','busyQueue','end','QueueReport','update','UserId','catch','message\x20is\x20empty','hasOwnProperty','capacity','CurrentCapacity','updateRealtime','values','find','available','paused','waiting','mailQueues','loggedIn','name','openchannelQueues','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','http','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','../../../config/logger','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','%s.%s.%s','isNil','IntervalId','Intervals','map','interval','listen'];(function(_0x9543b0,_0x1e117e){var _0x53977a=function(_0x1a381d){while(--_0x1a381d){_0x9543b0['push'](_0x9543b0['shift']());}};_0x53977a(++_0x1e117e);}(_0x5760,0xbd));var _0x0576=function(_0x390185,_0x55fbe8){_0x390185=_0x390185-0x0;var _0x580502=_0x5760[_0x390185];return _0x580502;};'use strict';var _=require(_0x0576('0x0'));var util=require(_0x0576('0x1'));var path=require(_0x0576('0x2'));var fs=require('fs');var jayson=require(_0x0576('0x3'));var BPromise=require(_0x0576('0x4'));var utils=require(_0x0576('0x5'));var sUtils=require('./applications/strategy/util');var logger=require(_0x0576('0x6'))(_0x0576('0x7'));var rpc={'openchannelQueueReport':require(_0x0576('0x8')),'mailQueueReport':require(_0x0576('0x9')),'chatQueueReport':require('../rpc/chatQueueReport'),'smsQueueReport':require('../rpc/smsQueueReport'),'faxQueueReport':require('../rpc/faxQueueReport'),'whatsappQueueReport':require(_0x0576('0xa'))};var RuleEngine=require(_0x0576('0xb'));function getId(_0x1dda93,_0x4bf794,_0x1acee1){return util['format'](_0x0576('0xc'),_0x1dda93,_0x4bf794||0x0,_0x1acee1||0x0);}function getIntervals(_0x7cb230,_0x27d558){var _0x211c64=[];if(!_[_0x0576('0xd')](_0x27d558[_0x0576('0xe')])&&!_[_0x0576('0xd')](_0x7cb230[_0x27d558[_0x0576('0xe')]])&&!_[_0x0576('0xd')](_0x7cb230[_0x27d558['IntervalId']][_0x0576('0xf')])){_0x211c64=_[_0x0576('0x10')](_0x7cb230[_0x27d558['IntervalId']][_0x0576('0xf')],_0x0576('0x11'));}else if(!_[_0x0576('0xd')](_0x27d558[_0x0576('0x11')])){_0x211c64=[_0x27d558[_0x0576('0x11')]];}return _0x211c64;}exports[_0x0576('0x12')]=function(_0x75eed9){_0x75eed9[_0x0576('0x13')]={};return new BPromise(function(_0x4de949,_0x274eb9){var _0x3469fb={'Start':function(_0x37d328){var _0x3ab54e=this;return new Promise(function(_0x23190f,_0xe8f2f0){if(_0x37d328){try{var _0x31bfec=[];var _0x407a5d=getId(_0x37d328[_0x0576('0x14')],_0x37d328[_0x0576('0x15')]?_0x37d328[_0x0576('0x15')]['id']:0x0,_0x37d328[_0x0576('0x16')]?_0x37d328['interaction']['id']:0x0);var _0xfb361=sUtils[_0x0576('0x17')](_0x75eed9,_0x37d328);if(!_0xfb361&&_0x37d328[_0x0576('0x18')]&&_[_0x0576('0x19')](_0x37d328['applications'])&&_0x37d328[_0x0576('0x18')][_0x0576('0x1a')]){for(var _0x2e26d1=0x0;_0x2e26d1<_0x37d328[_0x0576('0x18')][_0x0576('0x1a')];_0x2e26d1+=0x1){var _0x57a952=_0x37d328['applications'][_0x2e26d1];if(fs[_0x0576('0x1b')](path['join'](__dirname,_0x0576('0x18'),_0x57a952['app']+_0x0576('0x1c')))){var _0x1c8ec4=[];switch(_0x57a952['app'][_0x0576('0x1d')]()){case _0x0576('0x1e'):var _0x1b8613=_0x57a952[_0x0576('0x1f')][_0x0576('0x20')](',');if(_0x37d328[_0x0576('0x14')]==='mail'){_0x1c8ec4['push'](_0x1b8613[0x0]);_0x1c8ec4['push'](_0x1b8613[0x1]);_0x1c8ec4['push'](_0x1b8613[_0x0576('0x21')](0x2,_0x1b8613[_0x0576('0x1a')])[_0x0576('0x22')](','));}else{_0x1c8ec4[_0x0576('0x23')](_0x1b8613[0x0]);_0x1c8ec4[_0x0576('0x23')](_0x1b8613[_0x0576('0x21')](0x1,_0x1b8613['length'])[_0x0576('0x22')](','));}break;case _0x0576('0x24'):var _0x46c6dd=_0x57a952['appdata'][_0x0576('0x20')](',');_0x1c8ec4[_0x0576('0x23')](_0x46c6dd[0x0]);_0x1c8ec4[_0x0576('0x23')](_0x46c6dd[0x1]);_0x1c8ec4['push'](_0x46c6dd[_0x0576('0x21')](0x2,_0x46c6dd[_0x0576('0x1a')])[_0x0576('0x22')](','));break;case _0x0576('0x25'):var _0x56e65d=_0x57a952[_0x0576('0x1f')]['split'](',');_0x1c8ec4[_0x0576('0x23')](_0x56e65d[0x0]);_0x1c8ec4[_0x0576('0x23')](_0x56e65d[0x1]);_0x1c8ec4[_0x0576('0x23')](_0x56e65d[0x2]);_0x1c8ec4[_0x0576('0x23')](_0x56e65d[0x3]);_0x1c8ec4[_0x0576('0x23')](_0x56e65d[_0x0576('0x21')](0x4,_0x56e65d['length'])[_0x0576('0x22')](','));break;case _0x0576('0x26'):var _0x3701f3=_0x57a952[_0x0576('0x1f')][_0x0576('0x20')](',');_0x1c8ec4['push'](_0x3701f3[0x0]);_0x1c8ec4['push'](_0x3701f3[0x1]);_0x1c8ec4[_0x0576('0x23')](_0x3701f3[0x2]);_0x1c8ec4[_0x0576('0x23')](_0x3701f3[0x3]);_0x1c8ec4[_0x0576('0x23')](_0x3701f3['slice'](0x4,_0x3701f3[_0x0576('0x1a')])[_0x0576('0x22')](','));break;case'message':_0x1c8ec4['push'](_0x57a952['appdata']);break;case'tag':_0x1c8ec4[_0x0576('0x23')](_0x57a952[_0x0576('0x27')]);_0x1c8ec4[_0x0576('0x23')](_0x57a952[_0x0576('0x1f')]);break;case _0x0576('0x28'):var _0x11cb56=utils['getMustacheRender'](_0x37d328[_0x0576('0x29')][_0x0576('0x2a')],_0x37d328);var _0x428468=_0x57a952['appdata'][_0x0576('0x20')](',');_0x1c8ec4[_0x0576('0x23')](_0x428468[0x0]);_0x1c8ec4[_0x0576('0x23')](_0x428468[0x1]);_0x1c8ec4[_0x0576('0x23')](_0x428468[0x2]);_0x1c8ec4[_0x0576('0x23')](_0x428468[0x3]);_0x1c8ec4['push'](_0x428468[0x4]);_0x1c8ec4[_0x0576('0x23')](_0x428468[0x5]);_0x1c8ec4[_0x0576('0x23')](_0x428468[0x6]);_0x1c8ec4[_0x0576('0x23')](_0x428468[0x7]);_0x1c8ec4[_0x0576('0x23')](_0x428468[0x8]);_0x1c8ec4[_0x0576('0x23')](_0x428468[0x9]);_0x1c8ec4[_0x0576('0x23')](_0x428468[0xa]);_0x1c8ec4[_0x0576('0x23')](_0x37d328[_0x0576('0x16')]['id']);_0x1c8ec4['push'](_0x37d328[_0x0576('0x15')]['id']);_0x1c8ec4[_0x0576('0x23')](_0x57a952['ChatWebsiteId']);_0x1c8ec4[_0x0576('0x23')](_0x37d328[_0x0576('0x16')][_0x0576('0x2b')]);_0x1c8ec4[_0x0576('0x23')](_0x37d328[_0x0576('0x2c')][_0x0576('0x2c')]);_0x1c8ec4[_0x0576('0x23')](_0x11cb56);break;default:_0x1c8ec4=_[_0x0576('0xd')](_0x57a952[_0x0576('0x1f')])?[]:_0x57a952[_0x0576('0x1f')][_0x0576('0x20')](',');}var _0xa0cba={'id':util[_0x0576('0x2d')](_0x0576('0x2e'),_0x407a5d,_0x57a952['id'],_0x57a952[_0x0576('0x2f')]),'condition':require(_0x0576('0x30'))['condition'](_0x407a5d,getIntervals(_0x75eed9[_0x0576('0x31')],_0x57a952),_0x75eed9),'consequence':require(_0x0576('0x32')+_0x57a952['app'])[_0x0576('0x33')](_0x407a5d,_0x1c8ec4,_0x75eed9,_0x37d328),'p':_0x57a952[_0x0576('0x34')]||0x0};logger[_0x0576('0x35')]('Push\x20new\x20rule',_0xa0cba['id'],_0x0576('0x36'),getIntervals(_0x75eed9['intervals'],_0x57a952)[_0x0576('0x22')](_0x0576('0x37')));_0x31bfec['push'](_0xa0cba);}else{logger[_0x0576('0x38')](_0x0576('0x39'),path[_0x0576('0x22')](__dirname,_0x0576('0x18'),_0x57a952[_0x0576('0x2f')]+_0x0576('0x1c')));}}_0x75eed9[_0x0576('0x13')][_0x407a5d]=new RuleEngine(_0x31bfec);_0x75eed9[_0x0576('0x13')][_0x407a5d][_0x0576('0x3a')](_0x37d328,function(_0x4ff554){logger[_0x0576('0x35')]('Applications\x20executed',JSON[_0x0576('0x3b')](_0x4ff554[_0x0576('0x3c')]));if(_0x75eed9[_0x0576('0x13')][_0x407a5d]){_0x75eed9[_0x0576('0x13')][_0x407a5d][_0x0576('0x3d')](_0x0576('0x3e'));}});return _0x23190f({'code':0xc8,'message':_0x37d328});}else{if(_0xfb361){logger['info'](util[_0x0576('0x2d')](_0x0576('0x3f'),_0x407a5d));}else{logger[_0x0576('0x35')](_0x0576('0x40'));}return _0x23190f({'code':0xc8,'message':_0x37d328});}}catch(_0x53d0aa){logger['error'](_0x53d0aa[_0x0576('0x41')]);return _0xe8f2f0(_0x3ab54e['error'](0x1f4,_0x53d0aa));}}return _0xe8f2f0(_0x0576('0x42'));});},'AcceptMessage':function(_0x215e0f){var _0x1d86e9=this;return new Promise(function(_0x3e9259,_0x223c9d){if(_0x215e0f[_0x0576('0x43')]&&_0x215e0f['agent']['id']){if(_0x75eed9['agents'][_0x215e0f['agent']['id']]){_0x75eed9[_0x0576('0x44')][_0x215e0f['agent']['id']][_0x0576('0x45')]=![];_0x75eed9[_0x0576('0x44')][_0x215e0f[_0x0576('0x43')]['id']][_0x0576('0x46')]=undefined;}}if(_0x215e0f[_0x0576('0x15')]&&_0x215e0f[_0x0576('0x15')]['id']){try{var _0x85a17d=getId(_0x215e0f[_0x0576('0x14')],_0x215e0f[_0x0576('0x15')]?_0x215e0f[_0x0576('0x15')]['id']:0x0,_0x215e0f['interaction']?_0x215e0f[_0x0576('0x16')]['id']:0x0);if(_0x75eed9['rules'][_0x85a17d]){_0x75eed9[_0x0576('0x13')][_0x85a17d][_0x0576('0x3d')](_0x0576('0x47'));if(rpc[_0x215e0f['channel']+_0x0576('0x48')]){rpc[_0x215e0f[_0x0576('0x14')]+_0x0576('0x48')][_0x0576('0x49')](_0x85a17d,{'UserId':_0x215e0f[_0x0576('0x15')][_0x0576('0x4a')]})[_0x0576('0x4b')](function(){logger[_0x0576('0x38')]('error\x20update\x20queue\x20report');});}}return _0x3e9259({'code':0xc8,'message':_0x215e0f});}catch(_0x49a616){logger['error'](_0x49a616[_0x0576('0x41')]);return _0x223c9d(_0x1d86e9[_0x0576('0x38')](0x1f4,_0x49a616));}}logger['error'](_0x0576('0x4c'));return _0x223c9d(_0x1d86e9[_0x0576('0x38')](0x1f4,_0x0576('0x4c')));});},'RejectMessage':function(_0x31d5a2){var _0x324b7c=this;return new Promise(function(_0x19ec3e,_0x2c14c2){if(_0x31d5a2[_0x0576('0x43')]&&_0x31d5a2[_0x0576('0x43')]['id']){try{if(_0x75eed9['agents'][_0x31d5a2[_0x0576('0x43')]['id']]){_0x75eed9[_0x0576('0x44')][_0x31d5a2[_0x0576('0x43')]['id']][_0x0576('0x45')]=![];_0x75eed9[_0x0576('0x44')][_0x31d5a2['agent']['id']][_0x0576('0x46')]=undefined;}return _0x19ec3e({'code':0xc8,'message':_0x31d5a2});}catch(_0x44a7d5){logger['error'](_0x44a7d5[_0x0576('0x41')]);return _0x2c14c2(_0x324b7c[_0x0576('0x38')](0x1f4,_0x44a7d5));}}logger[_0x0576('0x38')](_0x0576('0x4c'));return _0x2c14c2(_0x324b7c[_0x0576('0x38')](0x1f4,_0x0576('0x4c')));});},'AbandonInteraction':function(_0x3b10a1){var _0x44b416=this;return new Promise(function(_0x4f9213,_0xdca222){if(_0x3b10a1['channel']&&_0x3b10a1[_0x0576('0x16')]&&_0x3b10a1['interaction']['id']){try{var _0x57b43e=getId(_0x3b10a1[_0x0576('0x14')],_0x3b10a1[_0x0576('0x15')]?_0x3b10a1['message']['id']:0x0,_0x3b10a1[_0x0576('0x16')]?_0x3b10a1['interaction']['id']:0x0);if(_0x75eed9[_0x0576('0x13')][_0x57b43e]){_0x75eed9[_0x0576('0x13')][_0x57b43e][_0x0576('0x3d')](_0x0576('0x47'));}return _0x4f9213({'code':0xc8,'message':_0x3b10a1});}catch(_0x185d80){logger[_0x0576('0x38')](_0x185d80[_0x0576('0x41')]);return _0xdca222(_0x44b416['error'](0x1f4,_0x185d80));}}logger[_0x0576('0x38')](_0x0576('0x4c'));return _0xdca222(_0x44b416[_0x0576('0x38')](0x1f4,'message\x20is\x20empty'));});},'AgentCapacity':function(_0x3d1af8){var _0x215ec3=this;return new Promise(function(_0x2015bf,_0x3ac6ae){if(_0x75eed9[_0x0576('0x44')][_0x0576('0x4d')](_0x3d1af8['id'])){for(var _0x4e5346 in _0x3d1af8[_0x0576('0x4e')]){if(_0x3d1af8[_0x0576('0x4e')][_0x0576('0x4d')](_0x4e5346)){if(_0x75eed9['agents'][_0x3d1af8['id']][_0x0576('0x4d')](_0x4e5346+_0x0576('0x4f'))){_0x75eed9[_0x0576('0x44')][_0x3d1af8['id']][_0x4e5346+_0x0576('0x4f')]=parseInt(_0x3d1af8[_0x0576('0x4e')][_0x4e5346],0xa);}}}_0x75eed9[_0x0576('0x44')][_0x3d1af8['id']][_0x0576('0x50')]();return _0x2015bf({'code':0xc8,'message':_0x75eed9[_0x0576('0x44')][_0x3d1af8['id']]});}else{return _0x3ac6ae(_0x215ec3[_0x0576('0x38')](0x1f4,'agent\x20not\x20found'));}});},'Agents':function(_0x742cdf){return new Promise(function(_0x1d1aa6){var _0x38b120=_[_0x0576('0x51')](_0x75eed9[_0x0576('0x44')]);if(_0x742cdf&&_0x742cdf['id']){var _0x12ffd4=_[_0x0576('0x52')](_0x38b120,function(_0x37b014){return _0x37b014['id']===_0x742cdf['id'];});_0x1d1aa6(_0x12ffd4);}else{_0x1d1aa6({'count':_0x38b120[_0x0576('0x1a')],'rows':_0x38b120});}});},'ChatQueues':function(){return new Promise(function(_0x5a86e1){var _0x456b46=[];for(var _0x234b3f in _0x75eed9['chatQueues']){if(_0x75eed9['chatQueues']['hasOwnProperty'](_0x234b3f)){var _0x4ad963=_0x75eed9['chatQueues'][_0x234b3f];var _0x4b66c7={'id':_0x4ad963['id'],'available':_0x4ad963[_0x0576('0x53')],'loggedIn':_0x4ad963['loggedIn'],'name':_0x4ad963['name'],'paused':_0x4ad963[_0x0576('0x54')],'waiting':_0x4ad963[_0x0576('0x55')]};_0x456b46[_0x0576('0x23')](_0x4b66c7);}}_0x5a86e1({'count':_0x456b46['length'],'rows':_0x456b46});});},'MailQueues':function(){return new Promise(function(_0x158df7){var _0x4a1fa9=[];for(var _0x57a3a5 in _0x75eed9[_0x0576('0x56')]){if(_0x75eed9[_0x0576('0x56')]['hasOwnProperty'](_0x57a3a5)){var _0x146ee8=_0x75eed9['mailQueues'][_0x57a3a5];var _0x4f9764={'id':_0x146ee8['id'],'available':_0x146ee8[_0x0576('0x53')],'loggedIn':_0x146ee8[_0x0576('0x57')],'name':_0x146ee8[_0x0576('0x58')],'paused':_0x146ee8[_0x0576('0x54')],'waiting':_0x146ee8[_0x0576('0x55')]};_0x4a1fa9[_0x0576('0x23')](_0x4f9764);}}_0x158df7({'count':_0x4a1fa9[_0x0576('0x1a')],'rows':_0x4a1fa9});});},'OpenchannelQueues':function(){return new Promise(function(_0x282c32){var _0x54f538=[];for(var _0xf47e0e in _0x75eed9['openchannelQueues']){if(_0x75eed9[_0x0576('0x59')][_0x0576('0x4d')](_0xf47e0e)){var _0x36c7e4=_0x75eed9[_0x0576('0x59')][_0xf47e0e];var _0x60cb81={'id':_0x36c7e4['id'],'available':_0x36c7e4[_0x0576('0x53')],'loggedIn':_0x36c7e4[_0x0576('0x57')],'name':_0x36c7e4[_0x0576('0x58')],'paused':_0x36c7e4[_0x0576('0x54')],'waiting':_0x36c7e4['waiting']};_0x54f538[_0x0576('0x23')](_0x60cb81);}}_0x282c32({'count':_0x54f538['length'],'rows':_0x54f538});});},'SmsQueues':function(){return new Promise(function(_0x1f0bb0){var _0x4baa23=[];for(var _0x1fa83a in _0x75eed9[_0x0576('0x5a')]){if(_0x75eed9[_0x0576('0x5a')][_0x0576('0x4d')](_0x1fa83a)){var _0x4952c2=_0x75eed9['smsQueues'][_0x1fa83a];var _0x5a06fd={'id':_0x4952c2['id'],'available':_0x4952c2[_0x0576('0x53')],'loggedIn':_0x4952c2['loggedIn'],'name':_0x4952c2['name'],'paused':_0x4952c2[_0x0576('0x54')],'waiting':_0x4952c2['waiting']};_0x4baa23['push'](_0x5a06fd);}}_0x1f0bb0({'count':_0x4baa23[_0x0576('0x1a')],'rows':_0x4baa23});});},'FaxQueues':function(){return new Promise(function(_0x2f9989){var _0x3a3671=[];for(var _0x3d1f05 in _0x75eed9[_0x0576('0x5b')]){if(_0x75eed9[_0x0576('0x5b')][_0x0576('0x4d')](_0x3d1f05)){var _0x1fef0d=_0x75eed9[_0x0576('0x5b')][_0x3d1f05];var _0x32d9d5={'id':_0x1fef0d['id'],'available':_0x1fef0d[_0x0576('0x53')],'loggedIn':_0x1fef0d[_0x0576('0x57')],'name':_0x1fef0d['name'],'paused':_0x1fef0d['paused'],'waiting':_0x1fef0d[_0x0576('0x55')]};_0x3a3671[_0x0576('0x23')](_0x32d9d5);}}_0x2f9989({'count':_0x3a3671[_0x0576('0x1a')],'rows':_0x3a3671});});},'WhatsappQueues':function(){return new Promise(function(_0x3fdbee){var _0x3de18e=[];for(var _0x553ad7 in _0x75eed9['whatsappQueues']){if(_0x75eed9[_0x0576('0x5c')]['hasOwnProperty'](_0x553ad7)){var _0x544645=_0x75eed9[_0x0576('0x5c')][_0x553ad7];var _0x18605e={'id':_0x544645['id'],'available':_0x544645['available'],'loggedIn':_0x544645[_0x0576('0x57')],'name':_0x544645['name'],'paused':_0x544645[_0x0576('0x54')],'waiting':_0x544645['waiting']};_0x3de18e[_0x0576('0x23')](_0x18605e);}}_0x3fdbee({'count':_0x3de18e[_0x0576('0x1a')],'rows':_0x3de18e});});},'ChatQueuesWaitingInteractions':function(){return new Promise(function(_0x74d762){var _0xee5362=_[_0x0576('0x51')](_0x75eed9[_0x0576('0x5d')]);_0x74d762({'count':_0xee5362[_0x0576('0x1a')],'rows':_0xee5362});});},'MailQueuesWaitingInteractions':function(){return new Promise(function(_0x53b47d){var _0x263b6b=_[_0x0576('0x51')](_0x75eed9['mailQueuesWaitingInteractions']);_0x53b47d({'count':_0x263b6b[_0x0576('0x1a')],'rows':_0x263b6b});});},'OpenchannelQueuesWaitingInteractions':function(){return new Promise(function(_0x4ba569){var _0x4c7032=_[_0x0576('0x51')](_0x75eed9[_0x0576('0x5e')]);_0x4ba569({'count':_0x4c7032[_0x0576('0x1a')],'rows':_0x4c7032});});},'SmsQueuesWaitingInteractions':function(){return new Promise(function(_0xe713ac){var _0x359f04=_['values'](_0x75eed9[_0x0576('0x5f')]);_0xe713ac({'count':_0x359f04[_0x0576('0x1a')],'rows':_0x359f04});});},'FaxQueuesWaitingInteractions':function(){return new Promise(function(_0x939f5f){var _0x42146f=_['values'](_0x75eed9[_0x0576('0x60')]);_0x939f5f({'count':_0x42146f['length'],'rows':_0x42146f});});},'WhatsappQueuesWaitingInteractions':function(){return new Promise(function(_0x378ffd){var _0x2aa86c=_[_0x0576('0x51')](_0x75eed9[_0x0576('0x61')]);_0x378ffd({'count':_0x2aa86c[_0x0576('0x1a')],'rows':_0x2aa86c});});}};var _0x23e0c3=jayson[_0x0576('0x62')](_0x3469fb)[_0x0576('0x63')]();_0x23e0c3['on'](_0x0576('0x38'),function(_0x475f45){logger[_0x0576('0x38')](JSON[_0x0576('0x3b')](_0x475f45));return _0x274eb9(_0x475f45);});_0x23e0c3[_0x0576('0x12')](0x232c,_0x0576('0x64'),function(){console[_0x0576('0x65')](_0x0576('0x66'),0x232c);return _0x4de949(_0x0576('0x67')+0x232c);});});};
\ No newline at end of file
+var _0x3425=['name','waiting','mailQueues','paused','openchannelQueues','available','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','server','http','127.0.0.1','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','lodash','util','jayson/promise','bluebird','./applications/utils','./applications/strategy/util','routing','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../lib/rule-engine','format','%s.%s.%s','IntervalId','isNil','map','interval','rules','channel','interaction','applications','isArray','existsSync','join','app','toLowerCase','autoreply','appdata','split','mail','push','slice','length','dialogflow','dialogflowv2','amazonlex','message','TagId','tvox','account','notificationTemplate','ChatWebsiteId','ContactId','body','%s:%s:%s','./interval','condition','intervals','consequence','priority','info','on\x20interval','\x20|\x20','Please\x20create\x20a\x20new\x20file\x20under','.js','execute','Applications\x20executed','matchPath','emit','complete','Skipped\x20routing\x20for\x20%s','No\x20applications\x20to\x20execute','error','routing\x20is\x20empty','agent','agents','busy','busyQueue','QueueReport','update','catch','error\x20update\x20queue\x20report','stack','message\x20is\x20empty','end','hasOwnProperty','CurrentCapacity','capacity','updateRealtime','values','find','chatQueues','loggedIn'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x3425,0xdc));var _0x5342=function(_0x464d34,_0x5d0ef4){_0x464d34=_0x464d34-0x0;var _0x34693f=_0x3425[_0x464d34];return _0x34693f;};'use strict';var _=require(_0x5342('0x0'));var util=require(_0x5342('0x1'));var path=require('path');var fs=require('fs');var jayson=require(_0x5342('0x2'));var BPromise=require(_0x5342('0x3'));var utils=require(_0x5342('0x4'));var sUtils=require(_0x5342('0x5'));var logger=require('../../../config/logger')(_0x5342('0x6'));var rpc={'openchannelQueueReport':require('../rpc/openchannelQueueReport'),'mailQueueReport':require(_0x5342('0x7')),'chatQueueReport':require(_0x5342('0x8')),'smsQueueReport':require(_0x5342('0x9')),'faxQueueReport':require('../rpc/faxQueueReport'),'whatsappQueueReport':require('../rpc/whatsappQueueReport')};var RuleEngine=require(_0x5342('0xa'));function getId(_0x584858,_0xfd7fbc,_0x47bdea){return util[_0x5342('0xb')](_0x5342('0xc'),_0x584858,_0xfd7fbc||0x0,_0x47bdea||0x0);}function getIntervals(_0x312e18,_0x509edc){var _0x4c99d4=[];if(!_['isNil'](_0x509edc[_0x5342('0xd')])&&!_[_0x5342('0xe')](_0x312e18[_0x509edc[_0x5342('0xd')]])&&!_[_0x5342('0xe')](_0x312e18[_0x509edc['IntervalId']]['Intervals'])){_0x4c99d4=_[_0x5342('0xf')](_0x312e18[_0x509edc[_0x5342('0xd')]]['Intervals'],'interval');}else if(!_[_0x5342('0xe')](_0x509edc['interval'])){_0x4c99d4=[_0x509edc[_0x5342('0x10')]];}return _0x4c99d4;}exports['listen']=function(_0x2f4790){_0x2f4790[_0x5342('0x11')]={};return new BPromise(function(_0x136fd2,_0x40d47f){var _0x45c12d={'Start':function(_0x3c4c11){var _0x4b28c7=this;return new Promise(function(_0x5580c9,_0x4f19dd){if(_0x3c4c11){try{var _0x31f7de=[];var _0x55773d=getId(_0x3c4c11[_0x5342('0x12')],_0x3c4c11['message']?_0x3c4c11['message']['id']:0x0,_0x3c4c11[_0x5342('0x13')]?_0x3c4c11['interaction']['id']:0x0);var _0xebf5b0=sUtils['checkWaitingNotifications'](_0x2f4790,_0x3c4c11);if(!_0xebf5b0&&_0x3c4c11[_0x5342('0x14')]&&_[_0x5342('0x15')](_0x3c4c11['applications'])&&_0x3c4c11[_0x5342('0x14')]['length']){for(var _0xb6233=0x0;_0xb6233<_0x3c4c11['applications']['length'];_0xb6233+=0x1){var _0x3d8798=_0x3c4c11[_0x5342('0x14')][_0xb6233];if(fs[_0x5342('0x16')](path[_0x5342('0x17')](__dirname,'applications',_0x3d8798[_0x5342('0x18')]+'.js'))){var _0x3d6c90=[];switch(_0x3d8798[_0x5342('0x18')][_0x5342('0x19')]()){case _0x5342('0x1a'):var _0x2e33fd=_0x3d8798[_0x5342('0x1b')][_0x5342('0x1c')](',');if(_0x3c4c11[_0x5342('0x12')]===_0x5342('0x1d')){_0x3d6c90['push'](_0x2e33fd[0x0]);_0x3d6c90[_0x5342('0x1e')](_0x2e33fd[0x1]);_0x3d6c90[_0x5342('0x1e')](_0x2e33fd[_0x5342('0x1f')](0x2,_0x2e33fd['length'])[_0x5342('0x17')](','));}else{_0x3d6c90[_0x5342('0x1e')](_0x2e33fd[0x0]);_0x3d6c90[_0x5342('0x1e')](_0x2e33fd[_0x5342('0x1f')](0x1,_0x2e33fd[_0x5342('0x20')])[_0x5342('0x17')](','));}break;case _0x5342('0x21'):var _0x3897ed=_0x3d8798[_0x5342('0x1b')][_0x5342('0x1c')](',');_0x3d6c90['push'](_0x3897ed[0x0]);_0x3d6c90['push'](_0x3897ed[0x1]);_0x3d6c90['push'](_0x3897ed[_0x5342('0x1f')](0x2,_0x3897ed[_0x5342('0x20')])[_0x5342('0x17')](','));break;case _0x5342('0x22'):var _0x5aa9c0=_0x3d8798[_0x5342('0x1b')][_0x5342('0x1c')](',');_0x3d6c90['push'](_0x5aa9c0[0x0]);_0x3d6c90[_0x5342('0x1e')](_0x5aa9c0[0x1]);_0x3d6c90[_0x5342('0x1e')](_0x5aa9c0[0x2]);_0x3d6c90[_0x5342('0x1e')](_0x5aa9c0[0x3]);_0x3d6c90['push'](_0x5aa9c0['slice'](0x4,_0x5aa9c0['length'])[_0x5342('0x17')](','));break;case _0x5342('0x23'):var _0x140184=_0x3d8798['appdata'][_0x5342('0x1c')](',');_0x3d6c90['push'](_0x140184[0x0]);_0x3d6c90[_0x5342('0x1e')](_0x140184[0x1]);_0x3d6c90[_0x5342('0x1e')](_0x140184[0x2]);_0x3d6c90[_0x5342('0x1e')](_0x140184[0x3]);_0x3d6c90[_0x5342('0x1e')](_0x140184[_0x5342('0x1f')](0x4,_0x140184['length'])[_0x5342('0x17')](','));break;case _0x5342('0x24'):_0x3d6c90[_0x5342('0x1e')](_0x3d8798[_0x5342('0x1b')]);break;case'tag':_0x3d6c90[_0x5342('0x1e')](_0x3d8798[_0x5342('0x25')]);_0x3d6c90[_0x5342('0x1e')](_0x3d8798[_0x5342('0x1b')]);break;case _0x5342('0x26'):var _0x5d337b=utils['getMustacheRender'](_0x3c4c11[_0x5342('0x27')][_0x5342('0x28')],_0x3c4c11);var _0x15fa86=_0x3d8798[_0x5342('0x1b')][_0x5342('0x1c')](',');_0x3d6c90[_0x5342('0x1e')](_0x15fa86[0x0]);_0x3d6c90[_0x5342('0x1e')](_0x15fa86[0x1]);_0x3d6c90[_0x5342('0x1e')](_0x15fa86[0x2]);_0x3d6c90[_0x5342('0x1e')](_0x15fa86[0x3]);_0x3d6c90['push'](_0x15fa86[0x4]);_0x3d6c90[_0x5342('0x1e')](_0x15fa86[0x5]);_0x3d6c90[_0x5342('0x1e')](_0x15fa86[0x6]);_0x3d6c90[_0x5342('0x1e')](_0x15fa86[0x7]);_0x3d6c90[_0x5342('0x1e')](_0x15fa86[0x8]);_0x3d6c90[_0x5342('0x1e')](_0x15fa86[0x9]);_0x3d6c90['push'](_0x15fa86[0xa]);_0x3d6c90[_0x5342('0x1e')](_0x3c4c11[_0x5342('0x13')]['id']);_0x3d6c90['push'](_0x3c4c11[_0x5342('0x24')]['id']);_0x3d6c90[_0x5342('0x1e')](_0x3d8798[_0x5342('0x29')]);_0x3d6c90[_0x5342('0x1e')](_0x3c4c11[_0x5342('0x13')][_0x5342('0x2a')]);_0x3d6c90[_0x5342('0x1e')](_0x3c4c11[_0x5342('0x2b')][_0x5342('0x2b')]);_0x3d6c90[_0x5342('0x1e')](_0x5d337b);break;default:_0x3d6c90=_[_0x5342('0xe')](_0x3d8798[_0x5342('0x1b')])?[]:_0x3d8798[_0x5342('0x1b')][_0x5342('0x1c')](',');}var _0x1242a1={'id':util[_0x5342('0xb')](_0x5342('0x2c'),_0x55773d,_0x3d8798['id'],_0x3d8798['app']),'condition':require(_0x5342('0x2d'))[_0x5342('0x2e')](_0x55773d,getIntervals(_0x2f4790[_0x5342('0x2f')],_0x3d8798),_0x2f4790),'consequence':require('./applications/'+_0x3d8798['app'])[_0x5342('0x30')](_0x55773d,_0x3d6c90,_0x2f4790,_0x3c4c11),'p':_0x3d8798[_0x5342('0x31')]||0x0};logger[_0x5342('0x32')]('Push\x20new\x20rule',_0x1242a1['id'],_0x5342('0x33'),getIntervals(_0x2f4790[_0x5342('0x2f')],_0x3d8798)[_0x5342('0x17')](_0x5342('0x34')));_0x31f7de[_0x5342('0x1e')](_0x1242a1);}else{logger['error'](_0x5342('0x35'),path[_0x5342('0x17')](__dirname,_0x5342('0x14'),_0x3d8798[_0x5342('0x18')]+_0x5342('0x36')));}}_0x2f4790[_0x5342('0x11')][_0x55773d]=new RuleEngine(_0x31f7de);_0x2f4790['rules'][_0x55773d][_0x5342('0x37')](_0x3c4c11,function(_0x48c70d){logger['info'](_0x5342('0x38'),JSON['stringify'](_0x48c70d[_0x5342('0x39')]));if(_0x2f4790['rules'][_0x55773d]){_0x2f4790[_0x5342('0x11')][_0x55773d][_0x5342('0x3a')](_0x5342('0x3b'));}});return _0x5580c9({'code':0xc8,'message':_0x3c4c11});}else{if(_0xebf5b0){logger[_0x5342('0x32')](util[_0x5342('0xb')](_0x5342('0x3c'),_0x55773d));}else{logger['info'](_0x5342('0x3d'));}return _0x5580c9({'code':0xc8,'message':_0x3c4c11});}}catch(_0x41f08c){logger[_0x5342('0x3e')](_0x41f08c['stack']);return _0x4f19dd(_0x4b28c7[_0x5342('0x3e')](0x1f4,_0x41f08c));}}return _0x4f19dd(_0x5342('0x3f'));});},'AcceptMessage':function(_0x15b439){var _0x15cc28=this;return new Promise(function(_0x53a44b,_0xdb8b4f){if(_0x15b439[_0x5342('0x40')]&&_0x15b439['agent']['id']){if(_0x2f4790[_0x5342('0x41')][_0x15b439[_0x5342('0x40')]['id']]){_0x2f4790['agents'][_0x15b439[_0x5342('0x40')]['id']][_0x5342('0x42')]=![];_0x2f4790[_0x5342('0x41')][_0x15b439[_0x5342('0x40')]['id']][_0x5342('0x43')]=undefined;}}if(_0x15b439[_0x5342('0x24')]&&_0x15b439[_0x5342('0x24')]['id']){try{var _0x28be43=getId(_0x15b439[_0x5342('0x12')],_0x15b439[_0x5342('0x24')]?_0x15b439[_0x5342('0x24')]['id']:0x0,_0x15b439[_0x5342('0x13')]?_0x15b439[_0x5342('0x13')]['id']:0x0);if(_0x2f4790['rules'][_0x28be43]){_0x2f4790['rules'][_0x28be43][_0x5342('0x3a')]('end');if(rpc[_0x15b439[_0x5342('0x12')]+_0x5342('0x44')]){rpc[_0x15b439['channel']+_0x5342('0x44')][_0x5342('0x45')](_0x28be43,{'UserId':_0x15b439[_0x5342('0x24')]['UserId']})[_0x5342('0x46')](function(){logger[_0x5342('0x3e')](_0x5342('0x47'));});}}return _0x53a44b({'code':0xc8,'message':_0x15b439});}catch(_0x1a8ec2){logger[_0x5342('0x3e')](_0x1a8ec2[_0x5342('0x48')]);return _0xdb8b4f(_0x15cc28['error'](0x1f4,_0x1a8ec2));}}logger['error'](_0x5342('0x49'));return _0xdb8b4f(_0x15cc28[_0x5342('0x3e')](0x1f4,_0x5342('0x49')));});},'RejectMessage':function(_0x158c57){var _0x5d4b65=this;return new Promise(function(_0x1bc4c6,_0x232739){if(_0x158c57[_0x5342('0x40')]&&_0x158c57[_0x5342('0x40')]['id']){try{if(_0x2f4790[_0x5342('0x41')][_0x158c57['agent']['id']]){_0x2f4790[_0x5342('0x41')][_0x158c57[_0x5342('0x40')]['id']][_0x5342('0x42')]=![];_0x2f4790['agents'][_0x158c57['agent']['id']][_0x5342('0x43')]=undefined;}return _0x1bc4c6({'code':0xc8,'message':_0x158c57});}catch(_0x2157f4){logger[_0x5342('0x3e')](_0x2157f4[_0x5342('0x48')]);return _0x232739(_0x5d4b65[_0x5342('0x3e')](0x1f4,_0x2157f4));}}logger[_0x5342('0x3e')](_0x5342('0x49'));return _0x232739(_0x5d4b65['error'](0x1f4,'message\x20is\x20empty'));});},'AbandonInteraction':function(_0x542d2f){var _0x280f87=this;return new Promise(function(_0xf303a1,_0x91c944){if(_0x542d2f[_0x5342('0x12')]&&_0x542d2f['interaction']&&_0x542d2f[_0x5342('0x13')]['id']){try{var _0x3aa3ad=getId(_0x542d2f[_0x5342('0x12')],_0x542d2f['message']?_0x542d2f[_0x5342('0x24')]['id']:0x0,_0x542d2f[_0x5342('0x13')]?_0x542d2f[_0x5342('0x13')]['id']:0x0);if(_0x2f4790[_0x5342('0x11')][_0x3aa3ad]){_0x2f4790[_0x5342('0x11')][_0x3aa3ad]['emit'](_0x5342('0x4a'));}return _0xf303a1({'code':0xc8,'message':_0x542d2f});}catch(_0x5cacb5){logger[_0x5342('0x3e')](_0x5cacb5[_0x5342('0x48')]);return _0x91c944(_0x280f87['error'](0x1f4,_0x5cacb5));}}logger[_0x5342('0x3e')](_0x5342('0x49'));return _0x91c944(_0x280f87[_0x5342('0x3e')](0x1f4,_0x5342('0x49')));});},'AgentCapacity':function(_0x1c282d){var _0x5cf33e=this;return new Promise(function(_0x39577,_0x374bb8){if(_0x2f4790[_0x5342('0x41')]['hasOwnProperty'](_0x1c282d['id'])){for(var _0x2dbcc8 in _0x1c282d['capacity']){if(_0x1c282d['capacity']['hasOwnProperty'](_0x2dbcc8)){if(_0x2f4790[_0x5342('0x41')][_0x1c282d['id']][_0x5342('0x4b')](_0x2dbcc8+'CurrentCapacity')){_0x2f4790[_0x5342('0x41')][_0x1c282d['id']][_0x2dbcc8+_0x5342('0x4c')]=parseInt(_0x1c282d[_0x5342('0x4d')][_0x2dbcc8],0xa);}}}_0x2f4790[_0x5342('0x41')][_0x1c282d['id']][_0x5342('0x4e')]();return _0x39577({'code':0xc8,'message':_0x2f4790[_0x5342('0x41')][_0x1c282d['id']]});}else{return _0x374bb8(_0x5cf33e[_0x5342('0x3e')](0x1f4,'agent\x20not\x20found'));}});},'Agents':function(_0x3cec6b){return new Promise(function(_0x302bd6){var _0xd4b277=_[_0x5342('0x4f')](_0x2f4790['agents']);if(_0x3cec6b&&_0x3cec6b['id']){var _0x213bcb=_[_0x5342('0x50')](_0xd4b277,function(_0x18f483){return _0x18f483['id']===_0x3cec6b['id'];});_0x302bd6(_0x213bcb);}else{_0x302bd6({'count':_0xd4b277[_0x5342('0x20')],'rows':_0xd4b277});}});},'ChatQueues':function(){return new Promise(function(_0x4b0793){var _0x323c2e=[];for(var _0x441f88 in _0x2f4790[_0x5342('0x51')]){if(_0x2f4790[_0x5342('0x51')][_0x5342('0x4b')](_0x441f88)){var _0x36062b=_0x2f4790[_0x5342('0x51')][_0x441f88];var _0x4d6fb7={'id':_0x36062b['id'],'available':_0x36062b['available'],'loggedIn':_0x36062b[_0x5342('0x52')],'name':_0x36062b[_0x5342('0x53')],'paused':_0x36062b['paused'],'waiting':_0x36062b[_0x5342('0x54')]};_0x323c2e[_0x5342('0x1e')](_0x4d6fb7);}}_0x4b0793({'count':_0x323c2e[_0x5342('0x20')],'rows':_0x323c2e});});},'MailQueues':function(){return new Promise(function(_0x2ec5ec){var _0x14a9be=[];for(var _0xc27b7 in _0x2f4790[_0x5342('0x55')]){if(_0x2f4790['mailQueues'][_0x5342('0x4b')](_0xc27b7)){var _0x105c95=_0x2f4790[_0x5342('0x55')][_0xc27b7];var _0x2d4853={'id':_0x105c95['id'],'available':_0x105c95['available'],'loggedIn':_0x105c95[_0x5342('0x52')],'name':_0x105c95[_0x5342('0x53')],'paused':_0x105c95[_0x5342('0x56')],'waiting':_0x105c95[_0x5342('0x54')]};_0x14a9be[_0x5342('0x1e')](_0x2d4853);}}_0x2ec5ec({'count':_0x14a9be[_0x5342('0x20')],'rows':_0x14a9be});});},'OpenchannelQueues':function(){return new Promise(function(_0x45a2df){var _0x2170cf=[];for(var _0x453bb3 in _0x2f4790[_0x5342('0x57')]){if(_0x2f4790['openchannelQueues'][_0x5342('0x4b')](_0x453bb3)){var _0x2a67ae=_0x2f4790[_0x5342('0x57')][_0x453bb3];var _0x2924fe={'id':_0x2a67ae['id'],'available':_0x2a67ae[_0x5342('0x58')],'loggedIn':_0x2a67ae[_0x5342('0x52')],'name':_0x2a67ae['name'],'paused':_0x2a67ae[_0x5342('0x56')],'waiting':_0x2a67ae['waiting']};_0x2170cf[_0x5342('0x1e')](_0x2924fe);}}_0x45a2df({'count':_0x2170cf[_0x5342('0x20')],'rows':_0x2170cf});});},'SmsQueues':function(){return new Promise(function(_0x264b59){var _0x41bd11=[];for(var _0x46818a in _0x2f4790['smsQueues']){if(_0x2f4790[_0x5342('0x59')][_0x5342('0x4b')](_0x46818a)){var _0x4dfe96=_0x2f4790[_0x5342('0x59')][_0x46818a];var _0x4c8372={'id':_0x4dfe96['id'],'available':_0x4dfe96[_0x5342('0x58')],'loggedIn':_0x4dfe96[_0x5342('0x52')],'name':_0x4dfe96[_0x5342('0x53')],'paused':_0x4dfe96[_0x5342('0x56')],'waiting':_0x4dfe96[_0x5342('0x54')]};_0x41bd11[_0x5342('0x1e')](_0x4c8372);}}_0x264b59({'count':_0x41bd11['length'],'rows':_0x41bd11});});},'FaxQueues':function(){return new Promise(function(_0x18ac9d){var _0xaab1a6=[];for(var _0x544d10 in _0x2f4790[_0x5342('0x5a')]){if(_0x2f4790[_0x5342('0x5a')][_0x5342('0x4b')](_0x544d10)){var _0x24f1c4=_0x2f4790[_0x5342('0x5a')][_0x544d10];var _0x418455={'id':_0x24f1c4['id'],'available':_0x24f1c4[_0x5342('0x58')],'loggedIn':_0x24f1c4[_0x5342('0x52')],'name':_0x24f1c4[_0x5342('0x53')],'paused':_0x24f1c4[_0x5342('0x56')],'waiting':_0x24f1c4[_0x5342('0x54')]};_0xaab1a6['push'](_0x418455);}}_0x18ac9d({'count':_0xaab1a6[_0x5342('0x20')],'rows':_0xaab1a6});});},'WhatsappQueues':function(){return new Promise(function(_0x1dea23){var _0x188cff=[];for(var _0x53a7fa in _0x2f4790[_0x5342('0x5b')]){if(_0x2f4790['whatsappQueues'][_0x5342('0x4b')](_0x53a7fa)){var _0x4610b1=_0x2f4790[_0x5342('0x5b')][_0x53a7fa];var _0x53da71={'id':_0x4610b1['id'],'available':_0x4610b1[_0x5342('0x58')],'loggedIn':_0x4610b1['loggedIn'],'name':_0x4610b1[_0x5342('0x53')],'paused':_0x4610b1[_0x5342('0x56')],'waiting':_0x4610b1[_0x5342('0x54')]};_0x188cff[_0x5342('0x1e')](_0x53da71);}}_0x1dea23({'count':_0x188cff[_0x5342('0x20')],'rows':_0x188cff});});},'ChatQueuesWaitingInteractions':function(){return new Promise(function(_0x4dfc55){var _0x3123c9=_['values'](_0x2f4790[_0x5342('0x5c')]);_0x4dfc55({'count':_0x3123c9[_0x5342('0x20')],'rows':_0x3123c9});});},'MailQueuesWaitingInteractions':function(){return new Promise(function(_0xb939d4){var _0x5e553f=_[_0x5342('0x4f')](_0x2f4790[_0x5342('0x5d')]);_0xb939d4({'count':_0x5e553f[_0x5342('0x20')],'rows':_0x5e553f});});},'OpenchannelQueuesWaitingInteractions':function(){return new Promise(function(_0x3706fd){var _0x499a90=_[_0x5342('0x4f')](_0x2f4790[_0x5342('0x5e')]);_0x3706fd({'count':_0x499a90[_0x5342('0x20')],'rows':_0x499a90});});},'SmsQueuesWaitingInteractions':function(){return new Promise(function(_0x4baae0){var _0x55ef4d=_['values'](_0x2f4790[_0x5342('0x5f')]);_0x4baae0({'count':_0x55ef4d[_0x5342('0x20')],'rows':_0x55ef4d});});},'FaxQueuesWaitingInteractions':function(){return new Promise(function(_0x2a8ab4){var _0x3cbac1=_['values'](_0x2f4790[_0x5342('0x60')]);_0x2a8ab4({'count':_0x3cbac1[_0x5342('0x20')],'rows':_0x3cbac1});});},'WhatsappQueuesWaitingInteractions':function(){return new Promise(function(_0x12ce7f){var _0x5ac04f=_['values'](_0x2f4790['whatsappQueuesWaitingInteractions']);_0x12ce7f({'count':_0x5ac04f[_0x5342('0x20')],'rows':_0x5ac04f});});}};var _0x2b53ec=jayson[_0x5342('0x61')](_0x45c12d)[_0x5342('0x62')]();_0x2b53ec['on'](_0x5342('0x3e'),function(_0x2bbf44){logger[_0x5342('0x3e')](JSON['stringify'](_0x2bbf44));return _0x40d47f(_0x2bbf44);});_0x2b53ec['listen'](0x232c,_0x5342('0x63'),function(){console['log'](_0x5342('0x64'),0x232c);return _0x136fd2('RPC\x20listening\x20on\x20port:'+0x232c);});});};
\ No newline at end of file
index 8ded453..ed636bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfa7=['stop','length','push','format','iftime\x20%s','then','message','indexOf','[%s][INTERVAL]\x20%s','all','some','[%s][INTERVAL]\x20%s\x20%s','join','\x20|\x20','when','log','stack','util','bluebird','../../../config/logger','routing','client','http','request','error','result','catch','condition','rules','info'];(function(_0x332e65,_0x368a12){var _0x1b19dc=function(_0x5be18f){while(--_0x5be18f){_0x332e65['push'](_0x332e65['shift']());}};_0x1b19dc(++_0x368a12);}(_0xbfa7,0x89));var _0x7bfa=function(_0x47024a,_0x341109){_0x47024a=_0x47024a-0x0;var _0x725c80=_0xbfa7[_0x47024a];return _0x725c80;};'use strict';var util=require(_0x7bfa('0x0'));var BPromise=require(_0x7bfa('0x1'));var jayson=require('jayson/promise');var _=require('lodash');var logger=require(_0x7bfa('0x2'))(_0x7bfa('0x3'));var client=jayson[_0x7bfa('0x4')][_0x7bfa('0x5')]({'port':0x232a});function request(_0x1e7407,_0x49290b){return new BPromise(function(_0x1cb089,_0x15c035){return client[_0x7bfa('0x6')](_0x1e7407,_0x49290b)['then'](function(_0x2ccd7f){if(_0x2ccd7f[_0x7bfa('0x7')]){return _0x15c035(_0x2ccd7f[_0x7bfa('0x7')]['message']);}else{return _0x1cb089(_0x2ccd7f[_0x7bfa('0x8')]);}})[_0x7bfa('0x9')](function(_0x5c2f0b){return _0x15c035(_0x5c2f0b);});});}exports[_0x7bfa('0xa')]=function(_0x11387f,_0xdade45,_0x5ceadd){return function(_0x1dc69d){if(_0x5ceadd[_0x7bfa('0xb')]&&!_0x5ceadd['rules'][_0x11387f]){logger[_0x7bfa('0xc')]('[%s][INTERVAL]\x20ROUTING\x20STOPPED',_0x11387f);return _0x1dc69d[_0x7bfa('0xd')]();}var _0x58ac68=[];for(var _0x4be5c1=0x0;_0x4be5c1<_0xdade45[_0x7bfa('0xe')];_0x4be5c1+=0x1){_0x58ac68[_0x7bfa('0xf')](request('Command',{'command':util[_0x7bfa('0x10')](_0x7bfa('0x11'),_0xdade45[_0x4be5c1])})[_0x7bfa('0x12')](function(_0x3bace9){return _0x3bace9&&_0x3bace9[_0x7bfa('0x13')]&&_0x3bace9[_0x7bfa('0x13')][_0x7bfa('0x14')]('true')>=0x0?!![]:![];})[_0x7bfa('0x9')](function(_0xf890b8){logger[_0x7bfa('0x7')](_0x7bfa('0x15'),_0x11387f,_0xdade45[_0x4be5c1]);}));}BPromise[_0x7bfa('0x16')](_0x58ac68)[_0x7bfa('0x12')](function(_0x4ca900){var _0x26740a=_[_0x7bfa('0x17')](_0x4ca900);logger[_0x7bfa('0xc')](_0x7bfa('0x18'),_0x11387f,_0xdade45[_0x7bfa('0x19')](_0x7bfa('0x1a')),_0x26740a);_0x1dc69d[_0x7bfa('0x1b')](_0x26740a);})[_0x7bfa('0x9')](function(_0x24b26b){console[_0x7bfa('0x1c')](_0x24b26b);logger['error'](_0x7bfa('0x18'),_0x11387f,_0xdade45[_0x7bfa('0x19')]('\x20|\x20'),_0x24b26b[_0x7bfa('0x1d')]);_0x1dc69d[_0x7bfa('0xd')]();});};};
\ No newline at end of file
+var _0xeed9=['format','iftime\x20%s','indexOf','true','all','some','[%s][INTERVAL]\x20%s\x20%s','join','when','log','stack','util','bluebird','jayson/promise','lodash','routing','client','http','request','then','error','message','result','catch','rules','info','[%s][INTERVAL]\x20ROUTING\x20STOPPED','stop','length','Command'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xeed9,0x1af));var _0x9eed=function(_0x2665a3,_0x3bac99){_0x2665a3=_0x2665a3-0x0;var _0x586de6=_0xeed9[_0x2665a3];return _0x586de6;};'use strict';var util=require(_0x9eed('0x0'));var BPromise=require(_0x9eed('0x1'));var jayson=require(_0x9eed('0x2'));var _=require(_0x9eed('0x3'));var logger=require('../../../config/logger')(_0x9eed('0x4'));var client=jayson[_0x9eed('0x5')][_0x9eed('0x6')]({'port':0x232a});function request(_0x23988e,_0x223cf5){return new BPromise(function(_0x5a7e44,_0x2dc39f){return client[_0x9eed('0x7')](_0x23988e,_0x223cf5)[_0x9eed('0x8')](function(_0x722a7f){if(_0x722a7f['error']){return _0x2dc39f(_0x722a7f[_0x9eed('0x9')][_0x9eed('0xa')]);}else{return _0x5a7e44(_0x722a7f[_0x9eed('0xb')]);}})[_0x9eed('0xc')](function(_0x14486c){return _0x2dc39f(_0x14486c);});});}exports['condition']=function(_0x2cb3b6,_0x368da0,_0x57858e){return function(_0x54bc50){if(_0x57858e['rules']&&!_0x57858e[_0x9eed('0xd')][_0x2cb3b6]){logger[_0x9eed('0xe')](_0x9eed('0xf'),_0x2cb3b6);return _0x54bc50[_0x9eed('0x10')]();}var _0x32f442=[];for(var _0x28bb94=0x0;_0x28bb94<_0x368da0[_0x9eed('0x11')];_0x28bb94+=0x1){_0x32f442['push'](request(_0x9eed('0x12'),{'command':util[_0x9eed('0x13')](_0x9eed('0x14'),_0x368da0[_0x28bb94])})[_0x9eed('0x8')](function(_0x321704){return _0x321704&&_0x321704[_0x9eed('0xa')]&&_0x321704[_0x9eed('0xa')][_0x9eed('0x15')](_0x9eed('0x16'))>=0x0?!![]:![];})[_0x9eed('0xc')](function(_0x45369d){logger[_0x9eed('0x9')]('[%s][INTERVAL]\x20%s',_0x2cb3b6,_0x368da0[_0x28bb94]);}));}BPromise[_0x9eed('0x17')](_0x32f442)[_0x9eed('0x8')](function(_0xf1f780){var _0x1f6d71=_[_0x9eed('0x18')](_0xf1f780);logger[_0x9eed('0xe')](_0x9eed('0x19'),_0x2cb3b6,_0x368da0[_0x9eed('0x1a')]('\x20|\x20'),_0x1f6d71);_0x54bc50[_0x9eed('0x1b')](_0x1f6d71);})['catch'](function(_0x1a9009){console[_0x9eed('0x1c')](_0x1a9009);logger[_0x9eed('0x9')](_0x9eed('0x19'),_0x2cb3b6,_0x368da0['join']('\x20|\x20'),_0x1a9009[_0x9eed('0x1d')]);_0x54bc50[_0x9eed('0x10')]();});};};
\ No newline at end of file
index 172e921..cfe516c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f8c=['[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','[%s][agents][hangup]','./utils','info','membername','interface','calleridnum','connectedlinenum','lastevent','queue','then','type','agentacw','agentcomplete','acwtime','acwTimeout','request','CreateVoiceAgentReport','uniqueid','destuniqueid','debug','format','[%s][agents][agentcalled]','agentcalledAt','now','called','[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','agentringnoanswer','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswerAt','timeout','reason','holdtime','ringtime','talktime','push','error','queuecallerabandon','forIn','includes','[%s][agents][queuecallerabandon]','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','agentconnect','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinename','answered_elsewhere','answeredelsewheredestinationuniqueid','answeredelsewheremembername','[%s][agents][agentcomplete]','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','diffTime','complete','isNil','transfereruniqueid','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfer','blind','transferexten','extension','transferuniqueid','[%s][agents][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','[%s][agents][attendedtransfer]\x20agent:%s','secondtransfereruniqueid','transfertype','ATTENDED','origtransfererexten','transfereeuniqueid','clone','calleridname','agententerreason','secondtransfererlinkedid','secondtransfererexten','transfertargetuniqueid','cause','rejected','indexOf','splice','agent'];(function(_0x35843c,_0x291a51){var _0x3dfae3=function(_0x1c302c){while(--_0x1c302c){_0x35843c['push'](_0x35843c['shift']());}};_0x3dfae3(++_0x291a51);}(_0x3f8c,0x104));var _0xc3f8=function(_0x34be09,_0x15fc12){_0x34be09=_0x34be09-0x0;var _0x4dc9f6=_0x3f8c[_0x34be09];return _0x4dc9f6;};'use strict';var _=require('lodash');var util=require('util');var utils=require(_0xc3f8('0x0'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x3a1f6a,_0x2e70c4){utils[_0xc3f8('0x1')](util['format']('[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0x3a1f6a['uniqueid'],_0x3a1f6a['channel'],_0x3a1f6a['queue'],_0x3a1f6a[_0xc3f8('0x2')],_0x3a1f6a[_0xc3f8('0x3')],_0x3a1f6a[_0xc3f8('0x4')],_0x3a1f6a[_0xc3f8('0x5')],_0x3a1f6a[_0xc3f8('0x6')]));if(_0x3a1f6a[_0xc3f8('0x7')]){utils['getVoiceQueueByName'](_0x3a1f6a[_0xc3f8('0x7')])[_0xc3f8('0x8')](function(_0x15cb3b){if(_0x15cb3b){_0x3a1f6a[_0xc3f8('0x9')]=_0x15cb3b[_0xc3f8('0x9')];_0x3a1f6a[_0xc3f8('0xa')]=_0x3a1f6a[_0xc3f8('0xb')]?_0x15cb3b['acw']:![];_0x3a1f6a[_0xc3f8('0xc')]=_0x3a1f6a[_0xc3f8('0xa')]?_0x15cb3b[_0xc3f8('0xd')]:0x0;}utils[_0xc3f8('0xe')]('CreateVoiceAgentReport',_0x3a1f6a);});}else{utils[_0xc3f8('0xe')](_0xc3f8('0xf'),_0x3a1f6a);}if(_0x2e70c4){delete transfers[_0x3a1f6a[_0xc3f8('0x10')]];}else{delete agents[_0x3a1f6a[_0xc3f8('0x11')]];}}exports['agentcalled']=function(_0x84f489){try{utils[_0xc3f8('0x12')](util[_0xc3f8('0x13')](_0xc3f8('0x14'),_0x84f489[_0xc3f8('0x10')]),_0x84f489);agents[_0x84f489[_0xc3f8('0x11')]]=_0x84f489;agents[_0x84f489[_0xc3f8('0x11')]][_0xc3f8('0x15')]=utils[_0xc3f8('0x16')]();agents[_0x84f489[_0xc3f8('0x11')]][_0xc3f8('0x6')]=_0xc3f8('0x17');agents[_0x84f489[_0xc3f8('0x11')]]['connectedlinenum']=null;agents[_0x84f489[_0xc3f8('0x11')]]['connectedlinename']=null;utils['info'](util[_0xc3f8('0x13')](_0xc3f8('0x18'),_0x84f489[_0xc3f8('0x10')],agents[_0x84f489[_0xc3f8('0x11')]]['membername'],_0x84f489[_0xc3f8('0x11')]));}catch(_0x1db809){utils['error'](util[_0xc3f8('0x13')]('[%s][agents][agentcalled]',_0x84f489[_0xc3f8('0x10')]),_0x1db809);}};exports[_0xc3f8('0x19')]=function(_0x3b2e98){try{if(!_['isNil'](agents[_0x3b2e98['destuniqueid']])){utils[_0xc3f8('0x12')](util[_0xc3f8('0x13')](_0xc3f8('0x1a'),_0x3b2e98[_0xc3f8('0x10')]),_0x3b2e98);utils[_0xc3f8('0x1')](util[_0xc3f8('0x13')](_0xc3f8('0x1b'),_0x3b2e98[_0xc3f8('0x10')],agents[_0x3b2e98['destuniqueid']]['membername'],_0x3b2e98['destuniqueid']));agents[_0x3b2e98[_0xc3f8('0x11')]]['agentringnoanswer']=!![];agents[_0x3b2e98[_0xc3f8('0x11')]][_0xc3f8('0x1c')]=utils['now']();agents[_0x3b2e98[_0xc3f8('0x11')]][_0xc3f8('0x6')]=_0xc3f8('0x1d');agents[_0x3b2e98[_0xc3f8('0x11')]][_0xc3f8('0x1e')]=_0xc3f8('0x1d');agents[_0x3b2e98[_0xc3f8('0x11')]][_0xc3f8('0x1f')]=_0x3b2e98[_0xc3f8('0x20')]?parseInt(_0x3b2e98[_0xc3f8('0x20')])/0x3e8:0x0;agents[_0x3b2e98[_0xc3f8('0x11')]][_0xc3f8('0x21')]=0x0;unanswered[_0xc3f8('0x22')](_0x3b2e98[_0xc3f8('0x11')]);}}catch(_0x59e4dd){utils[_0xc3f8('0x23')](util[_0xc3f8('0x13')](_0xc3f8('0x1a'),_0x3b2e98['uniqueid']),_0x59e4dd);}};exports[_0xc3f8('0x24')]=function(_0x4d39a0){try{_[_0xc3f8('0x25')](agents,function(_0x32343e,_0x47ab53){if(_0x32343e['uniqueid']==_0x4d39a0[_0xc3f8('0x10')]&&!_[_0xc3f8('0x26')](unanswered,_0x32343e[_0xc3f8('0x11')])){utils[_0xc3f8('0x12')](util[_0xc3f8('0x13')](_0xc3f8('0x27'),_0x4d39a0[_0xc3f8('0x10')]),_0x4d39a0);utils[_0xc3f8('0x1')](util[_0xc3f8('0x13')](_0xc3f8('0x28'),_0x4d39a0['uniqueid'],_0x32343e[_0xc3f8('0x2')],_0x32343e[_0xc3f8('0x11')]));_0x32343e[_0xc3f8('0x19')]=!![];_0x32343e[_0xc3f8('0x1c')]=utils[_0xc3f8('0x16')]();_0x32343e['lastevent']='abandoned';_0x32343e[_0xc3f8('0x1e')]=_0xc3f8('0x29');_0x32343e[_0xc3f8('0x1f')]=_0x4d39a0[_0xc3f8('0x1f')];_0x32343e[_0xc3f8('0x21')]=0x0;writeDB(_0x32343e);}});}catch(_0x4e51ac){utils[_0xc3f8('0x23')](util[_0xc3f8('0x13')](_0xc3f8('0x27'),_0x4d39a0['uniqueid']),_0x4e51ac);}};exports[_0xc3f8('0x2a')]=function(_0x11ecc2){try{if(agents[_0x11ecc2[_0xc3f8('0x11')]]){utils['debug'](util[_0xc3f8('0x13')](_0xc3f8('0x2b'),_0x11ecc2['uniqueid']),_0x11ecc2);utils[_0xc3f8('0x1')](util[_0xc3f8('0x13')](_0xc3f8('0x2c'),_0x11ecc2[_0xc3f8('0x10')],agents[_0x11ecc2[_0xc3f8('0x11')]][_0xc3f8('0x2')],_0x11ecc2['destuniqueid']));agents[_0x11ecc2[_0xc3f8('0x11')]][_0xc3f8('0x2d')]=utils[_0xc3f8('0x16')]();agents[_0x11ecc2[_0xc3f8('0x11')]][_0xc3f8('0x5')]=_0x11ecc2['connectedlinenum'];agents[_0x11ecc2[_0xc3f8('0x11')]][_0xc3f8('0x2e')]=_0x11ecc2[_0xc3f8('0x2e')];agents[_0x11ecc2['destuniqueid']][_0xc3f8('0x1f')]=_0x11ecc2[_0xc3f8('0x20')];agents[_0x11ecc2[_0xc3f8('0x11')]][_0xc3f8('0x6')]='connect';_[_0xc3f8('0x25')](agents,function(_0x45d416,_0x2df096){if(_0x45d416[_0xc3f8('0x11')]!=_0x11ecc2['destuniqueid']&&_0x45d416[_0xc3f8('0x10')]==_0x11ecc2['uniqueid']){_0x45d416['talktime']=0x0;_0x45d416[_0xc3f8('0x1f')]=_0x11ecc2[_0xc3f8('0x20')];_0x45d416[_0xc3f8('0x19')]=!![];_0x45d416[_0xc3f8('0x1c')]=utils['now']();_0x45d416['lastevent']=_0xc3f8('0x2f');_0x45d416[_0xc3f8('0x1e')]=_0xc3f8('0x2f');_0x45d416[_0xc3f8('0x30')]=_0x11ecc2[_0xc3f8('0x11')];_0x45d416[_0xc3f8('0x31')]=_0x11ecc2[_0xc3f8('0x2')];writeDB(_0x45d416);}});}}catch(_0x45e6ea){utils[_0xc3f8('0x23')](util[_0xc3f8('0x13')](_0xc3f8('0x2b'),_0x11ecc2['uniqueid']),_0x45e6ea);}};exports[_0xc3f8('0xb')]=function(_0x22e9b3){try{if(!_['isNil'](agents[_0x22e9b3[_0xc3f8('0x11')]])){utils[_0xc3f8('0x12')](util['format'](_0xc3f8('0x32'),_0x22e9b3[_0xc3f8('0x10')]),_0x22e9b3);utils[_0xc3f8('0x1')](util[_0xc3f8('0x13')](_0xc3f8('0x33'),_0x22e9b3[_0xc3f8('0x10')],agents[_0x22e9b3[_0xc3f8('0x11')]][_0xc3f8('0x2')],_0x22e9b3[_0xc3f8('0x11')]));agents[_0x22e9b3[_0xc3f8('0x11')]][_0xc3f8('0xb')]=!![];agents[_0x22e9b3['destuniqueid']][_0xc3f8('0x34')]=utils[_0xc3f8('0x16')]();agents[_0x22e9b3['destuniqueid']][_0xc3f8('0x21')]=utils[_0xc3f8('0x35')](agents[_0x22e9b3[_0xc3f8('0x11')]][_0xc3f8('0x34')],agents[_0x22e9b3['destuniqueid']]['agentconnectAt']);agents[_0x22e9b3[_0xc3f8('0x11')]][_0xc3f8('0x1e')]=_0x22e9b3[_0xc3f8('0x1e')];agents[_0x22e9b3['destuniqueid']][_0xc3f8('0x6')]=_0xc3f8('0x36');writeDB(agents[_0x22e9b3[_0xc3f8('0x11')]]);}}catch(_0xe3d5c4){utils[_0xc3f8('0x23')](util['format'](_0xc3f8('0x32'),_0x22e9b3[_0xc3f8('0x10')]),_0xe3d5c4);}};exports['blindtransfer']=function(_0x1becae){try{if(!_[_0xc3f8('0x37')](agents[_0x1becae[_0xc3f8('0x38')]])){utils[_0xc3f8('0x12')](util[_0xc3f8('0x13')](_0xc3f8('0x39'),_0x1becae[_0xc3f8('0x10')]),_0x1becae);utils['info'](util[_0xc3f8('0x13')](_0xc3f8('0x3a'),_0x1becae['uniqueid'],agents[_0x1becae[_0xc3f8('0x38')]][_0xc3f8('0x2')],agents[_0x1becae[_0xc3f8('0x38')]][_0xc3f8('0x10')]));agents[_0x1becae[_0xc3f8('0x38')]][_0xc3f8('0x3b')]=!![];agents[_0x1becae[_0xc3f8('0x38')]]['transfertype']=_0xc3f8('0x3c');agents[_0x1becae[_0xc3f8('0x38')]][_0xc3f8('0x3d')]=_0x1becae[_0xc3f8('0x3e')];agents[_0x1becae[_0xc3f8('0x38')]][_0xc3f8('0x3f')]=agents[_0x1becae[_0xc3f8('0x38')]][_0xc3f8('0x10')];}}catch(_0x4fc02c){utils['error'](util[_0xc3f8('0x13')](_0xc3f8('0x39'),_0x1becae['uniqueid']),_0x4fc02c);}};exports['attendedtransfer']=function(_0x773d56){try{utils['debug'](util[_0xc3f8('0x13')](_0xc3f8('0x40'),_0x773d56[_0xc3f8('0x41')]),_0x773d56);if(_0x773d56['origtransfereruniqueid']==_0x773d56[_0xc3f8('0x42')]){if(!_['isNil'](agents[_0x773d56['secondtransfereruniqueid']])){utils[_0xc3f8('0x1')](util['format'](_0xc3f8('0x43'),_0x773d56[_0xc3f8('0x41')],agents[_0x773d56[_0xc3f8('0x44')]]['membername']));agents[_0x773d56[_0xc3f8('0x44')]][_0xc3f8('0x3b')]=!![];agents[_0x773d56[_0xc3f8('0x44')]][_0xc3f8('0x45')]=_0xc3f8('0x46');agents[_0x773d56['secondtransfereruniqueid']]['transferexten']=_0x773d56[_0xc3f8('0x47')];agents[_0x773d56[_0xc3f8('0x44')]][_0xc3f8('0x3f')]=_0x773d56[_0xc3f8('0x41')];}if(_0x773d56[_0xc3f8('0x48')]&&agents[_0x773d56['transfereeuniqueid']]){agents[_0x773d56[_0xc3f8('0x48')]]['agententerreason']=0x1;transfers[_0x773d56[_0xc3f8('0x48')]]=_[_0xc3f8('0x49')](agents[_0x773d56[_0xc3f8('0x48')]]);transfers[_0x773d56[_0xc3f8('0x48')]]['calleridnum']=agents[_0x773d56[_0xc3f8('0x44')]]['calleridnum'];transfers[_0x773d56['transfereeuniqueid']]['calleridname']=agents[_0x773d56['secondtransfereruniqueid']][_0xc3f8('0x4a')];transfers[_0x773d56[_0xc3f8('0x48')]][_0xc3f8('0x15')]=utils[_0xc3f8('0x16')]();transfers[_0x773d56[_0xc3f8('0x48')]][_0xc3f8('0x2d')]=utils[_0xc3f8('0x16')]();transfers[_0x773d56[_0xc3f8('0x48')]]['holdtime']=0x0;transfers[_0x773d56[_0xc3f8('0x48')]][_0xc3f8('0x4b')]=0x2;}}else if(_0x773d56[_0xc3f8('0x44')]==_0x773d56[_0xc3f8('0x4c')]){if(!_[_0xc3f8('0x37')](agents[_0x773d56['origtransfereruniqueid']])){utils[_0xc3f8('0x1')](util[_0xc3f8('0x13')](_0xc3f8('0x43'),_0x773d56[_0xc3f8('0x41')],agents[_0x773d56[_0xc3f8('0x41')]]['membername']));agents[_0x773d56[_0xc3f8('0x41')]][_0xc3f8('0x3b')]=!![];agents[_0x773d56[_0xc3f8('0x41')]][_0xc3f8('0x45')]=_0xc3f8('0x46');agents[_0x773d56[_0xc3f8('0x41')]]['transferexten']=_0x773d56[_0xc3f8('0x4d')];agents[_0x773d56[_0xc3f8('0x41')]][_0xc3f8('0x3f')]=_0x773d56['secondtransfereruniqueid'];}if(_0x773d56[_0xc3f8('0x4e')]&&agents[_0x773d56[_0xc3f8('0x4e')]]){agents[_0x773d56['transfertargetuniqueid']]['agententerreason']=0x1;transfers[_0x773d56[_0xc3f8('0x4e')]]=_[_0xc3f8('0x49')](agents[_0x773d56['transfertargetuniqueid']]);transfers[_0x773d56[_0xc3f8('0x4e')]][_0xc3f8('0x4')]=agents[_0x773d56[_0xc3f8('0x41')]][_0xc3f8('0x4')];transfers[_0x773d56[_0xc3f8('0x4e')]][_0xc3f8('0x4a')]=agents[_0x773d56[_0xc3f8('0x41')]][_0xc3f8('0x4a')];transfers[_0x773d56['transfertargetuniqueid']]['agentcalledAt']=utils[_0xc3f8('0x16')]();transfers[_0x773d56['transfertargetuniqueid']]['agentconnectAt']=utils['now']();transfers[_0x773d56['transfertargetuniqueid']]['holdtime']=0x0;transfers[_0x773d56[_0xc3f8('0x4e')]][_0xc3f8('0x4b')]=0x2;}}}catch(_0x188d39){utils[_0xc3f8('0x23')](util['format'](_0xc3f8('0x40'),_0x773d56[_0xc3f8('0x41')]),_0x188d39);}};exports['hangup']=function(_0x3b9b47){try{utils[_0xc3f8('0x12')](util[_0xc3f8('0x13')]('[%s][agents][hangup]',_0x3b9b47[_0xc3f8('0x10')]),_0x3b9b47);if(agents[_0x3b9b47['uniqueid']]&&agents[_0x3b9b47['uniqueid']]['reason']===_0xc3f8('0x1d')){if(_0x3b9b47[_0xc3f8('0x4f')]==='21'){agents[_0x3b9b47['uniqueid']][_0xc3f8('0x1e')]=_0xc3f8('0x50');agents[_0x3b9b47['uniqueid']][_0xc3f8('0x6')]=_0xc3f8('0x50');}utils['info'](util[_0xc3f8('0x13')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x3b9b47[_0xc3f8('0x10')],agents[_0x3b9b47[_0xc3f8('0x10')]]['membername'],agents[_0x3b9b47['uniqueid']][_0xc3f8('0x1e')],agents[_0x3b9b47[_0xc3f8('0x10')]]['lastevent']));writeDB(agents[_0x3b9b47[_0xc3f8('0x10')]]);var _0x5de19e=unanswered[_0xc3f8('0x51')](_0x3b9b47['uniqueid']);if(_0x5de19e>-0x1){unanswered[_0xc3f8('0x52')](_0x5de19e,0x1);}}if(transfers[_0x3b9b47[_0xc3f8('0x10')]]){transfers[_0x3b9b47[_0xc3f8('0x10')]][_0xc3f8('0xb')]=!![];transfers[_0x3b9b47[_0xc3f8('0x10')]][_0xc3f8('0x34')]=utils[_0xc3f8('0x16')]();transfers[_0x3b9b47[_0xc3f8('0x10')]][_0xc3f8('0x21')]=utils['diffTime'](transfers[_0x3b9b47[_0xc3f8('0x10')]][_0xc3f8('0x34')],transfers[_0x3b9b47[_0xc3f8('0x10')]][_0xc3f8('0x2d')]);transfers[_0x3b9b47[_0xc3f8('0x10')]]['reason']=_0xc3f8('0x53');transfers[_0x3b9b47[_0xc3f8('0x10')]][_0xc3f8('0x6')]=_0xc3f8('0x36');utils[_0xc3f8('0x1')](util['format'](_0xc3f8('0x54'),_0x3b9b47[_0xc3f8('0x10')],transfers[_0x3b9b47[_0xc3f8('0x10')]]['membername'],transfers[_0x3b9b47['uniqueid']][_0xc3f8('0x1e')],transfers[_0x3b9b47[_0xc3f8('0x10')]][_0xc3f8('0x6')]));writeDB(transfers[_0x3b9b47[_0xc3f8('0x10')]],!![]);}if(agents[_0x3b9b47['uniqueid']]&&agents[_0x3b9b47[_0xc3f8('0x10')]][_0xc3f8('0x2d')]){agents[_0x3b9b47[_0xc3f8('0x10')]]['agentcomplete']=!![];agents[_0x3b9b47[_0xc3f8('0x10')]][_0xc3f8('0x34')]=utils['now']();agents[_0x3b9b47['uniqueid']][_0xc3f8('0x21')]=utils[_0xc3f8('0x35')](agents[_0x3b9b47['uniqueid']][_0xc3f8('0x34')],agents[_0x3b9b47[_0xc3f8('0x10')]]['agentconnectAt']);agents[_0x3b9b47[_0xc3f8('0x10')]]['reason']=agents[_0x3b9b47[_0xc3f8('0x10')]]['transfer']?_0xc3f8('0x3b'):_0xc3f8('0x53');agents[_0x3b9b47[_0xc3f8('0x10')]][_0xc3f8('0x6')]=_0xc3f8('0x36');utils[_0xc3f8('0x1')](util[_0xc3f8('0x13')](_0xc3f8('0x54'),_0x3b9b47[_0xc3f8('0x10')],agents[_0x3b9b47['uniqueid']]['membername'],agents[_0x3b9b47[_0xc3f8('0x10')]]['reason'],agents[_0x3b9b47[_0xc3f8('0x10')]][_0xc3f8('0x6')]));writeDB(agents[_0x3b9b47[_0xc3f8('0x10')]]);}}catch(_0xfb05eb){utils['error'](util[_0xc3f8('0x13')](_0xc3f8('0x55'),_0x3b9b47[_0xc3f8('0x10')]),_0xfb05eb);}};
\ No newline at end of file
+var _0xb9a7=['connect','answered_elsewhere','answeredelsewheredestinationuniqueid','answeredelsewheremembername','[%s][agents][agentconnect]','[%s][agents][agentcomplete]','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','diffTime','complete','[%s][agents][blindtransfer]','transfereruniqueid','transfer','transfertype','blind','transferexten','transferuniqueid','origtransfererlinkedid','secondtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','origtransfereruniqueid','ATTENDED','transfereeuniqueid','calleridname','agententerreason','secondtransfererlinkedid','transfertargetuniqueid','hangup','[%s][agents][hangup]','cause','rejected','splice','agentcompleteAt','agent','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','util','info','[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','uniqueid','channel','queue','membername','interface','calleridnum','connectedlinenum','lastevent','then','agentacw','agentcomplete','acwtime','acwTimeout','CreateVoiceAgentReport','request','destuniqueid','agentcalled','debug','format','agentcalledAt','now','called','[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','error','[%s][agents][agentcalled]','agentringnoanswer','isNil','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','timeout','reason','ringtime','talktime','queuecallerabandon','forIn','includes','agentringnoanswerAt','abandoned','holdtime','[%s][agents][queuecallerabandon]','agentconnect','agentconnectAt','connectedlinename'];(function(_0x516c68,_0x465411){var _0x25a812=function(_0x31aebe){while(--_0x31aebe){_0x516c68['push'](_0x516c68['shift']());}};_0x25a812(++_0x465411);}(_0xb9a7,0x112));var _0x7b9a=function(_0x1e4360,_0x930b9b){_0x1e4360=_0x1e4360-0x0;var _0x31e6b4=_0xb9a7[_0x1e4360];return _0x31e6b4;};'use strict';var _=require('lodash');var util=require(_0x7b9a('0x0'));var utils=require('./utils');var agents={};var transfers={};var unanswered=[];function writeDB(_0x563857,_0x5f1a52){utils[_0x7b9a('0x1')](util['format'](_0x7b9a('0x2'),_0x563857[_0x7b9a('0x3')],_0x563857[_0x7b9a('0x4')],_0x563857[_0x7b9a('0x5')],_0x563857[_0x7b9a('0x6')],_0x563857[_0x7b9a('0x7')],_0x563857[_0x7b9a('0x8')],_0x563857[_0x7b9a('0x9')],_0x563857[_0x7b9a('0xa')]));if(_0x563857[_0x7b9a('0x5')]){utils['getVoiceQueueByName'](_0x563857[_0x7b9a('0x5')])[_0x7b9a('0xb')](function(_0x56a199){if(_0x56a199){_0x563857['type']=_0x56a199['type'];_0x563857[_0x7b9a('0xc')]=_0x563857[_0x7b9a('0xd')]?_0x56a199['acw']:![];_0x563857[_0x7b9a('0xe')]=_0x563857['agentacw']?_0x56a199[_0x7b9a('0xf')]:0x0;}utils['request'](_0x7b9a('0x10'),_0x563857);});}else{utils[_0x7b9a('0x11')](_0x7b9a('0x10'),_0x563857);}if(_0x5f1a52){delete transfers[_0x563857['uniqueid']];}else{delete agents[_0x563857[_0x7b9a('0x12')]];}}exports[_0x7b9a('0x13')]=function(_0x5e3875){try{utils[_0x7b9a('0x14')](util[_0x7b9a('0x15')]('[%s][agents][agentcalled]',_0x5e3875[_0x7b9a('0x3')]),_0x5e3875);agents[_0x5e3875[_0x7b9a('0x12')]]=_0x5e3875;agents[_0x5e3875[_0x7b9a('0x12')]][_0x7b9a('0x16')]=utils[_0x7b9a('0x17')]();agents[_0x5e3875[_0x7b9a('0x12')]][_0x7b9a('0xa')]=_0x7b9a('0x18');agents[_0x5e3875[_0x7b9a('0x12')]]['connectedlinenum']=null;agents[_0x5e3875[_0x7b9a('0x12')]]['connectedlinename']=null;utils[_0x7b9a('0x1')](util[_0x7b9a('0x15')](_0x7b9a('0x19'),_0x5e3875[_0x7b9a('0x3')],agents[_0x5e3875[_0x7b9a('0x12')]][_0x7b9a('0x6')],_0x5e3875[_0x7b9a('0x12')]));}catch(_0x283cc3){utils[_0x7b9a('0x1a')](util[_0x7b9a('0x15')](_0x7b9a('0x1b'),_0x5e3875[_0x7b9a('0x3')]),_0x283cc3);}};exports[_0x7b9a('0x1c')]=function(_0x58aed7){try{if(!_[_0x7b9a('0x1d')](agents[_0x58aed7['destuniqueid']])){utils[_0x7b9a('0x14')](util['format'](_0x7b9a('0x1e'),_0x58aed7[_0x7b9a('0x3')]),_0x58aed7);utils[_0x7b9a('0x1')](util['format'](_0x7b9a('0x1f'),_0x58aed7[_0x7b9a('0x3')],agents[_0x58aed7['destuniqueid']][_0x7b9a('0x6')],_0x58aed7[_0x7b9a('0x12')]));agents[_0x58aed7[_0x7b9a('0x12')]][_0x7b9a('0x1c')]=!![];agents[_0x58aed7[_0x7b9a('0x12')]]['agentringnoanswerAt']=utils[_0x7b9a('0x17')]();agents[_0x58aed7[_0x7b9a('0x12')]]['lastevent']=_0x7b9a('0x20');agents[_0x58aed7['destuniqueid']][_0x7b9a('0x21')]=_0x7b9a('0x20');agents[_0x58aed7['destuniqueid']]['holdtime']=_0x58aed7[_0x7b9a('0x22')]?parseInt(_0x58aed7['ringtime'])/0x3e8:0x0;agents[_0x58aed7['destuniqueid']][_0x7b9a('0x23')]=0x0;unanswered['push'](_0x58aed7['destuniqueid']);}}catch(_0x3847b4){utils['error'](util[_0x7b9a('0x15')](_0x7b9a('0x1e'),_0x58aed7['uniqueid']),_0x3847b4);}};exports[_0x7b9a('0x24')]=function(_0x2e6144){try{_[_0x7b9a('0x25')](agents,function(_0x5b64d7,_0x45ccf5){if(_0x5b64d7[_0x7b9a('0x3')]==_0x2e6144[_0x7b9a('0x3')]&&!_[_0x7b9a('0x26')](unanswered,_0x5b64d7[_0x7b9a('0x12')])){utils[_0x7b9a('0x14')](util['format']('[%s][agents][queuecallerabandon]',_0x2e6144[_0x7b9a('0x3')]),_0x2e6144);utils[_0x7b9a('0x1')](util[_0x7b9a('0x15')]('[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned',_0x2e6144[_0x7b9a('0x3')],_0x5b64d7[_0x7b9a('0x6')],_0x5b64d7['destuniqueid']));_0x5b64d7['agentringnoanswer']=!![];_0x5b64d7[_0x7b9a('0x27')]=utils[_0x7b9a('0x17')]();_0x5b64d7['lastevent']=_0x7b9a('0x28');_0x5b64d7[_0x7b9a('0x21')]=_0x7b9a('0x28');_0x5b64d7[_0x7b9a('0x29')]=_0x2e6144[_0x7b9a('0x29')];_0x5b64d7['talktime']=0x0;writeDB(_0x5b64d7);}});}catch(_0x46bcd0){utils[_0x7b9a('0x1a')](util[_0x7b9a('0x15')](_0x7b9a('0x2a'),_0x2e6144[_0x7b9a('0x3')]),_0x46bcd0);}};exports[_0x7b9a('0x2b')]=function(_0x5f1da4){try{if(agents[_0x5f1da4['destuniqueid']]){utils[_0x7b9a('0x14')](util[_0x7b9a('0x15')]('[%s][agents][agentconnect]',_0x5f1da4[_0x7b9a('0x3')]),_0x5f1da4);utils[_0x7b9a('0x1')](util[_0x7b9a('0x15')]('[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect',_0x5f1da4[_0x7b9a('0x3')],agents[_0x5f1da4[_0x7b9a('0x12')]]['membername'],_0x5f1da4['destuniqueid']));agents[_0x5f1da4[_0x7b9a('0x12')]][_0x7b9a('0x2c')]=utils[_0x7b9a('0x17')]();agents[_0x5f1da4[_0x7b9a('0x12')]][_0x7b9a('0x9')]=_0x5f1da4[_0x7b9a('0x9')];agents[_0x5f1da4[_0x7b9a('0x12')]][_0x7b9a('0x2d')]=_0x5f1da4['connectedlinename'];agents[_0x5f1da4[_0x7b9a('0x12')]]['holdtime']=_0x5f1da4[_0x7b9a('0x22')];agents[_0x5f1da4[_0x7b9a('0x12')]][_0x7b9a('0xa')]=_0x7b9a('0x2e');_[_0x7b9a('0x25')](agents,function(_0x89951b,_0x5e504f){if(_0x89951b[_0x7b9a('0x12')]!=_0x5f1da4[_0x7b9a('0x12')]&&_0x89951b[_0x7b9a('0x3')]==_0x5f1da4[_0x7b9a('0x3')]){_0x89951b['talktime']=0x0;_0x89951b[_0x7b9a('0x29')]=_0x5f1da4[_0x7b9a('0x22')];_0x89951b[_0x7b9a('0x1c')]=!![];_0x89951b[_0x7b9a('0x27')]=utils['now']();_0x89951b[_0x7b9a('0xa')]='answered_elsewhere';_0x89951b[_0x7b9a('0x21')]=_0x7b9a('0x2f');_0x89951b[_0x7b9a('0x30')]=_0x5f1da4[_0x7b9a('0x12')];_0x89951b[_0x7b9a('0x31')]=_0x5f1da4[_0x7b9a('0x6')];writeDB(_0x89951b);}});}}catch(_0x56e274){utils[_0x7b9a('0x1a')](util[_0x7b9a('0x15')](_0x7b9a('0x32'),_0x5f1da4['uniqueid']),_0x56e274);}};exports['agentcomplete']=function(_0x3724fe){try{if(!_[_0x7b9a('0x1d')](agents[_0x3724fe[_0x7b9a('0x12')]])){utils[_0x7b9a('0x14')](util[_0x7b9a('0x15')](_0x7b9a('0x33'),_0x3724fe['uniqueid']),_0x3724fe);utils['info'](util['format'](_0x7b9a('0x34'),_0x3724fe[_0x7b9a('0x3')],agents[_0x3724fe['destuniqueid']][_0x7b9a('0x6')],_0x3724fe[_0x7b9a('0x12')]));agents[_0x3724fe[_0x7b9a('0x12')]]['agentcomplete']=!![];agents[_0x3724fe[_0x7b9a('0x12')]]['agentcompleteAt']=utils[_0x7b9a('0x17')]();agents[_0x3724fe[_0x7b9a('0x12')]][_0x7b9a('0x23')]=utils[_0x7b9a('0x35')](agents[_0x3724fe[_0x7b9a('0x12')]]['agentcompleteAt'],agents[_0x3724fe[_0x7b9a('0x12')]]['agentconnectAt']);agents[_0x3724fe[_0x7b9a('0x12')]]['reason']=_0x3724fe['reason'];agents[_0x3724fe[_0x7b9a('0x12')]][_0x7b9a('0xa')]=_0x7b9a('0x36');writeDB(agents[_0x3724fe[_0x7b9a('0x12')]]);}}catch(_0x1cbd5a){utils[_0x7b9a('0x1a')](util[_0x7b9a('0x15')](_0x7b9a('0x33'),_0x3724fe[_0x7b9a('0x3')]),_0x1cbd5a);}};exports['blindtransfer']=function(_0x1d7957){try{if(!_[_0x7b9a('0x1d')](agents[_0x1d7957['transfereruniqueid']])){utils['debug'](util['format'](_0x7b9a('0x37'),_0x1d7957[_0x7b9a('0x3')]),_0x1d7957);utils[_0x7b9a('0x1')](util[_0x7b9a('0x15')]('[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s',_0x1d7957[_0x7b9a('0x3')],agents[_0x1d7957[_0x7b9a('0x38')]][_0x7b9a('0x6')],agents[_0x1d7957[_0x7b9a('0x38')]][_0x7b9a('0x3')]));agents[_0x1d7957['transfereruniqueid']][_0x7b9a('0x39')]=!![];agents[_0x1d7957['transfereruniqueid']][_0x7b9a('0x3a')]=_0x7b9a('0x3b');agents[_0x1d7957[_0x7b9a('0x38')]][_0x7b9a('0x3c')]=_0x1d7957['extension'];agents[_0x1d7957[_0x7b9a('0x38')]][_0x7b9a('0x3d')]=agents[_0x1d7957[_0x7b9a('0x38')]][_0x7b9a('0x3')];}}catch(_0x2b0db5){utils[_0x7b9a('0x1a')](util[_0x7b9a('0x15')]('[%s][agents][blindtransfer]',_0x1d7957['uniqueid']),_0x2b0db5);}};exports['attendedtransfer']=function(_0x12c5bf){try{utils[_0x7b9a('0x14')](util['format']('[%s][agents][attendedtransfer]',_0x12c5bf['origtransfereruniqueid']),_0x12c5bf);if(_0x12c5bf['origtransfereruniqueid']==_0x12c5bf[_0x7b9a('0x3e')]){if(!_[_0x7b9a('0x1d')](agents[_0x12c5bf[_0x7b9a('0x3f')]])){utils[_0x7b9a('0x1')](util[_0x7b9a('0x15')](_0x7b9a('0x40'),_0x12c5bf[_0x7b9a('0x41')],agents[_0x12c5bf[_0x7b9a('0x3f')]]['membername']));agents[_0x12c5bf[_0x7b9a('0x3f')]]['transfer']=!![];agents[_0x12c5bf[_0x7b9a('0x3f')]][_0x7b9a('0x3a')]=_0x7b9a('0x42');agents[_0x12c5bf[_0x7b9a('0x3f')]][_0x7b9a('0x3c')]=_0x12c5bf['origtransfererexten'];agents[_0x12c5bf[_0x7b9a('0x3f')]]['transferuniqueid']=_0x12c5bf[_0x7b9a('0x41')];}if(_0x12c5bf[_0x7b9a('0x43')]&&agents[_0x12c5bf[_0x7b9a('0x43')]]){agents[_0x12c5bf['transfereeuniqueid']]['agententerreason']=0x1;transfers[_0x12c5bf['transfereeuniqueid']]=_['clone'](agents[_0x12c5bf[_0x7b9a('0x43')]]);transfers[_0x12c5bf[_0x7b9a('0x43')]][_0x7b9a('0x8')]=agents[_0x12c5bf['secondtransfereruniqueid']][_0x7b9a('0x8')];transfers[_0x12c5bf[_0x7b9a('0x43')]][_0x7b9a('0x44')]=agents[_0x12c5bf[_0x7b9a('0x3f')]][_0x7b9a('0x44')];transfers[_0x12c5bf['transfereeuniqueid']][_0x7b9a('0x16')]=utils[_0x7b9a('0x17')]();transfers[_0x12c5bf[_0x7b9a('0x43')]]['agentconnectAt']=utils['now']();transfers[_0x12c5bf['transfereeuniqueid']][_0x7b9a('0x29')]=0x0;transfers[_0x12c5bf[_0x7b9a('0x43')]][_0x7b9a('0x45')]=0x2;}}else if(_0x12c5bf['secondtransfereruniqueid']==_0x12c5bf[_0x7b9a('0x46')]){if(!_[_0x7b9a('0x1d')](agents[_0x12c5bf['origtransfereruniqueid']])){utils[_0x7b9a('0x1')](util['format'](_0x7b9a('0x40'),_0x12c5bf['origtransfereruniqueid'],agents[_0x12c5bf[_0x7b9a('0x41')]][_0x7b9a('0x6')]));agents[_0x12c5bf[_0x7b9a('0x41')]][_0x7b9a('0x39')]=!![];agents[_0x12c5bf['origtransfereruniqueid']][_0x7b9a('0x3a')]=_0x7b9a('0x42');agents[_0x12c5bf[_0x7b9a('0x41')]][_0x7b9a('0x3c')]=_0x12c5bf['secondtransfererexten'];agents[_0x12c5bf[_0x7b9a('0x41')]]['transferuniqueid']=_0x12c5bf[_0x7b9a('0x3f')];}if(_0x12c5bf['transfertargetuniqueid']&&agents[_0x12c5bf[_0x7b9a('0x47')]]){agents[_0x12c5bf['transfertargetuniqueid']]['agententerreason']=0x1;transfers[_0x12c5bf['transfertargetuniqueid']]=_['clone'](agents[_0x12c5bf[_0x7b9a('0x47')]]);transfers[_0x12c5bf[_0x7b9a('0x47')]][_0x7b9a('0x8')]=agents[_0x12c5bf[_0x7b9a('0x41')]]['calleridnum'];transfers[_0x12c5bf[_0x7b9a('0x47')]]['calleridname']=agents[_0x12c5bf['origtransfereruniqueid']][_0x7b9a('0x44')];transfers[_0x12c5bf['transfertargetuniqueid']]['agentcalledAt']=utils[_0x7b9a('0x17')]();transfers[_0x12c5bf[_0x7b9a('0x47')]]['agentconnectAt']=utils[_0x7b9a('0x17')]();transfers[_0x12c5bf['transfertargetuniqueid']][_0x7b9a('0x29')]=0x0;transfers[_0x12c5bf[_0x7b9a('0x47')]][_0x7b9a('0x45')]=0x2;}}}catch(_0x5118b3){utils['error'](util['format']('[%s][agents][attendedtransfer]',_0x12c5bf[_0x7b9a('0x41')]),_0x5118b3);}};exports[_0x7b9a('0x48')]=function(_0x3fd697){try{utils[_0x7b9a('0x14')](util[_0x7b9a('0x15')](_0x7b9a('0x49'),_0x3fd697[_0x7b9a('0x3')]),_0x3fd697);if(agents[_0x3fd697['uniqueid']]&&agents[_0x3fd697[_0x7b9a('0x3')]][_0x7b9a('0x21')]==='timeout'){if(_0x3fd697[_0x7b9a('0x4a')]==='21'){agents[_0x3fd697[_0x7b9a('0x3')]][_0x7b9a('0x21')]='rejected';agents[_0x3fd697['uniqueid']][_0x7b9a('0xa')]=_0x7b9a('0x4b');}utils['info'](util[_0x7b9a('0x15')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x3fd697[_0x7b9a('0x3')],agents[_0x3fd697[_0x7b9a('0x3')]][_0x7b9a('0x6')],agents[_0x3fd697['uniqueid']][_0x7b9a('0x21')],agents[_0x3fd697[_0x7b9a('0x3')]][_0x7b9a('0xa')]));writeDB(agents[_0x3fd697[_0x7b9a('0x3')]]);var _0x2090ef=unanswered['indexOf'](_0x3fd697['uniqueid']);if(_0x2090ef>-0x1){unanswered[_0x7b9a('0x4c')](_0x2090ef,0x1);}}if(transfers[_0x3fd697[_0x7b9a('0x3')]]){transfers[_0x3fd697['uniqueid']][_0x7b9a('0xd')]=!![];transfers[_0x3fd697[_0x7b9a('0x3')]][_0x7b9a('0x4d')]=utils['now']();transfers[_0x3fd697['uniqueid']][_0x7b9a('0x23')]=utils[_0x7b9a('0x35')](transfers[_0x3fd697[_0x7b9a('0x3')]][_0x7b9a('0x4d')],transfers[_0x3fd697['uniqueid']][_0x7b9a('0x2c')]);transfers[_0x3fd697[_0x7b9a('0x3')]][_0x7b9a('0x21')]='agent';transfers[_0x3fd697['uniqueid']][_0x7b9a('0xa')]=_0x7b9a('0x36');utils[_0x7b9a('0x1')](util[_0x7b9a('0x15')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x3fd697[_0x7b9a('0x3')],transfers[_0x3fd697[_0x7b9a('0x3')]]['membername'],transfers[_0x3fd697[_0x7b9a('0x3')]][_0x7b9a('0x21')],transfers[_0x3fd697[_0x7b9a('0x3')]][_0x7b9a('0xa')]));writeDB(transfers[_0x3fd697[_0x7b9a('0x3')]],!![]);}if(agents[_0x3fd697[_0x7b9a('0x3')]]&&agents[_0x3fd697[_0x7b9a('0x3')]][_0x7b9a('0x2c')]){agents[_0x3fd697[_0x7b9a('0x3')]][_0x7b9a('0xd')]=!![];agents[_0x3fd697[_0x7b9a('0x3')]]['agentcompleteAt']=utils['now']();agents[_0x3fd697[_0x7b9a('0x3')]][_0x7b9a('0x23')]=utils['diffTime'](agents[_0x3fd697[_0x7b9a('0x3')]][_0x7b9a('0x4d')],agents[_0x3fd697['uniqueid']][_0x7b9a('0x2c')]);agents[_0x3fd697[_0x7b9a('0x3')]][_0x7b9a('0x21')]=agents[_0x3fd697[_0x7b9a('0x3')]][_0x7b9a('0x39')]?_0x7b9a('0x39'):_0x7b9a('0x4e');agents[_0x3fd697[_0x7b9a('0x3')]][_0x7b9a('0xa')]='complete';utils[_0x7b9a('0x1')](util[_0x7b9a('0x15')](_0x7b9a('0x4f'),_0x3fd697[_0x7b9a('0x3')],agents[_0x3fd697[_0x7b9a('0x3')]][_0x7b9a('0x6')],agents[_0x3fd697[_0x7b9a('0x3')]][_0x7b9a('0x21')],agents[_0x3fd697['uniqueid']][_0x7b9a('0xa')]));writeDB(agents[_0x3fd697[_0x7b9a('0x3')]]);}}catch(_0x3022e0){utils['error'](util[_0x7b9a('0x15')](_0x7b9a('0x49'),_0x3fd697[_0x7b9a('0x3')]),_0x3022e0);}};
\ No newline at end of file
index c3baca4..ba95eb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb93=['transfertargetchannel','origtransfererchannel','musiconholdstart','[%s][calls][musiconholdstart]','musiconholdstartAt','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstop','[%s][calls][musiconholdstop]','mohtime','[%s][calls][musiconholdstop]\x20mohtime:%s','[%s][calls][varset]','variable','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','value','source','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','destination','\x22\x20<','xmd-callerid-preview','xmd-callerid','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-queue','xmcs-queue','Queue','lastdata','queue','xmd-contactid','ContactId','xmd-cdrtype','type','outboundrouteid','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','routeid','sipcallid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','newexten','[%s][calls][newexten]','[%s][calls][newexten]\x20application:%s\x20appdata:%s','application','toLowerCase','startsWith','appdata','cdr','split','lastIndexOf','includes','noop','execif','lastapplication','lodash','util','./utils','./transfers.controller','FAILED','ANSWERED','BUSY','blinds','uniqueid','transfereeuniqueid','info','format','channel','membername','interface','calleridnum','connectedlinenum','accountcode','UserId','request','CreateVoiceCallReport','recording','newchannel','debug','linkedid','context','exten','now','NO\x20ANSWER','DOCUMENTATION','error','[%s][calls][newchannel]','newstate','[%s][calls][newstate]','isNil','channelstate','[%s][calls][newstate]\x20context:%s\x20channel:%s','systemanswertime','transfer','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','answertime','disposition','toNumber','hangup','[%s][calls][hangup]','callerid','calleridname','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','duration','diffTime','endtime','starttime','billableseconds','attendedtransfer','[%s][calls][attendedtransfer]','origtransfereruniqueid','transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','localtwolinkedid','secondtransfererchannel','userfield','_attended'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xfb93,0x111));var _0x3fb9=function(_0x2dcd34,_0x532156){_0x2dcd34=_0x2dcd34-0x0;var _0x40a22f=_0xfb93[_0x2dcd34];return _0x40a22f;};'use strict';var _=require(_0x3fb9('0x0'));var util=require(_0x3fb9('0x1'));var utils=require(_0x3fb9('0x2'));var transfers=require(_0x3fb9('0x3'));var dispositions=['NO\x20ANSWER',_0x3fb9('0x4'),_0x3fb9('0x4'),'NO\x20ANSWER','NO\x20ANSWER','NO\x20ANSWER',_0x3fb9('0x5'),_0x3fb9('0x6'),_0x3fb9('0x4'),_0x3fb9('0x4'),'FAILED'];var channels={};function writeDB(_0x4c5a56){var _0x286d33;if(transfers[_0x3fb9('0x7')][_0x4c5a56[_0x3fb9('0x8')]]){_0x286d33=_0x4c5a56[_0x3fb9('0x8')];_0x4c5a56[_0x3fb9('0x8')]=transfers[_0x3fb9('0x7')][_0x4c5a56[_0x3fb9('0x8')]][_0x3fb9('0x9')];}utils[_0x3fb9('0xa')](util[_0x3fb9('0xb')]('[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0x4c5a56[_0x3fb9('0x8')],_0x4c5a56[_0x3fb9('0xc')],_0x4c5a56['queue'],_0x4c5a56[_0x3fb9('0xd')],_0x4c5a56[_0x3fb9('0xe')],_0x4c5a56[_0x3fb9('0xf')],_0x4c5a56[_0x3fb9('0x10')],_0x4c5a56['lastevent']));if(_0x4c5a56[_0x3fb9('0x11')]){utils['getUserByInternal'](_0x4c5a56[_0x3fb9('0x11')])['then'](function(_0xa9888a){if(_0xa9888a){_0x4c5a56[_0x3fb9('0x12')]=_0xa9888a['id'];}utils[_0x3fb9('0x13')](_0x3fb9('0x14'),_0x4c5a56);});}else{utils[_0x3fb9('0x13')](_0x3fb9('0x14'),_0x4c5a56);}if(channels[_0x4c5a56[_0x3fb9('0x8')]]){delete channels[_0x4c5a56['uniqueid']];}else if(_0x286d33&&channels[_0x286d33]){if(!transfers[_0x3fb9('0x7')][_0x286d33][_0x3fb9('0x15')])delete transfers['blinds'][_0x286d33];delete channels[_0x286d33];}}exports[_0x3fb9('0x16')]=function(_0xd0528f){try{utils[_0x3fb9('0x17')](util[_0x3fb9('0xb')]('[%s][calls][newchannel]',_0xd0528f[_0x3fb9('0x8')]),_0xd0528f);if(_0xd0528f[_0x3fb9('0x8')]==_0xd0528f[_0x3fb9('0x18')]&&_0xd0528f['channel']!='OutgoingSpoolFailed'){utils[_0x3fb9('0xa')](util[_0x3fb9('0xb')]('[%s][calls][newchannel]\x20context:%s\x20exten:%s',_0xd0528f[_0x3fb9('0x8')],_0xd0528f[_0x3fb9('0x19')],_0xd0528f[_0x3fb9('0x1a')]));channels[_0xd0528f[_0x3fb9('0x8')]]={'uniqueid':_0xd0528f[_0x3fb9('0x8')],'accountcode':_0xd0528f[_0x3fb9('0x11')],'source':_0xd0528f[_0x3fb9('0xf')],'destination':_0xd0528f[_0x3fb9('0x1a')],'destinationcontext':_0xd0528f[_0x3fb9('0x19')],'channel':_0xd0528f[_0x3fb9('0xc')],'starttime':utils[_0x3fb9('0x1b')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0x3fb9('0x1c'),'amaflags':_0x3fb9('0x1d')};}}catch(_0x433fda){utils[_0x3fb9('0x1e')](util[_0x3fb9('0xb')](_0x3fb9('0x1f'),_0xd0528f[_0x3fb9('0x8')]),_0x433fda);}};exports[_0x3fb9('0x20')]=function(_0x4bc7d9){try{utils[_0x3fb9('0x17')](util[_0x3fb9('0xb')](_0x3fb9('0x21'),_0x4bc7d9['uniqueid']),_0x4bc7d9);if(!_[_0x3fb9('0x22')](channels[_0x4bc7d9[_0x3fb9('0x8')]])&&_0x4bc7d9[_0x3fb9('0x23')]==0x6){utils[_0x3fb9('0xa')](util[_0x3fb9('0xb')](_0x3fb9('0x24'),_0x4bc7d9[_0x3fb9('0x8')],_0x4bc7d9[_0x3fb9('0x19')],_0x4bc7d9[_0x3fb9('0xc')]));if(_[_0x3fb9('0x22')](channels[_0x4bc7d9[_0x3fb9('0x8')]][_0x3fb9('0x25')])){channels[_0x4bc7d9['uniqueid']][_0x3fb9('0x25')]=utils[_0x3fb9('0x1b')]();}}else if(!_[_0x3fb9('0x22')](channels[_0x4bc7d9['linkedid']])&&_0x4bc7d9[_0x3fb9('0x23')]==0x6&&_0x4bc7d9[_0x3fb9('0x19')]!=_0x3fb9('0x26')){utils[_0x3fb9('0xa')](util[_0x3fb9('0xb')](_0x3fb9('0x27'),_0x4bc7d9[_0x3fb9('0x8')],_0x4bc7d9[_0x3fb9('0x18')],_0x4bc7d9[_0x3fb9('0x19')],_0x4bc7d9['channel']));channels[_0x4bc7d9[_0x3fb9('0x18')]]['accountcode']=_0x4bc7d9['accountcode'];channels[_0x4bc7d9[_0x3fb9('0x18')]][_0x3fb9('0x28')]=_0x4bc7d9[_0x3fb9('0xc')];if(_[_0x3fb9('0x22')](channels[_0x4bc7d9['linkedid']][_0x3fb9('0x29')])){channels[_0x4bc7d9['linkedid']]['answertime']=utils[_0x3fb9('0x1b')]();}channels[_0x4bc7d9[_0x3fb9('0x18')]][_0x3fb9('0x2a')]=dispositions[_[_0x3fb9('0x2b')](_0x4bc7d9['channelstate'])]||'ANSWERED';}}catch(_0x339f84){utils[_0x3fb9('0x1e')](util[_0x3fb9('0xb')](_0x3fb9('0x21'),_0x4bc7d9[_0x3fb9('0x8')]),_0x339f84);}};exports[_0x3fb9('0x2c')]=function(_0x2542c0){try{if(!_[_0x3fb9('0x22')](channels[_0x2542c0[_0x3fb9('0x8')]])){utils['debug'](util[_0x3fb9('0xb')](_0x3fb9('0x2d'),_0x2542c0[_0x3fb9('0x8')]),_0x2542c0);if(_[_0x3fb9('0x22')](channels[_0x2542c0[_0x3fb9('0x8')]]['callerid'])){channels[_0x2542c0[_0x3fb9('0x8')]][_0x3fb9('0x2e')]=_0x2542c0[_0x3fb9('0x2f')]+'\x20<'+_0x2542c0[_0x3fb9('0xf')]+'>';}utils['info'](util[_0x3fb9('0xb')](_0x3fb9('0x30'),_0x2542c0[_0x3fb9('0x8')],channels[_0x2542c0[_0x3fb9('0x8')]][_0x3fb9('0x2e')],_0x2542c0['cause-txt']));channels[_0x2542c0[_0x3fb9('0x8')]]['endtime']=utils[_0x3fb9('0x1b')]();channels[_0x2542c0[_0x3fb9('0x8')]][_0x3fb9('0x31')]=utils[_0x3fb9('0x32')](channels[_0x2542c0[_0x3fb9('0x8')]][_0x3fb9('0x33')],channels[_0x2542c0[_0x3fb9('0x8')]][_0x3fb9('0x34')]);channels[_0x2542c0[_0x3fb9('0x8')]][_0x3fb9('0x35')]=channels[_0x2542c0[_0x3fb9('0x8')]][_0x3fb9('0x29')]?utils[_0x3fb9('0x32')](channels[_0x2542c0[_0x3fb9('0x8')]][_0x3fb9('0x33')],channels[_0x2542c0[_0x3fb9('0x8')]][_0x3fb9('0x29')]):0x0;writeDB(channels[_0x2542c0[_0x3fb9('0x8')]]);}}catch(_0x1431fc){utils['error'](util[_0x3fb9('0xb')](_0x3fb9('0x2d'),_0x2542c0[_0x3fb9('0x8')]),_0x1431fc);}};exports[_0x3fb9('0x36')]=function(_0x20bb4f){try{if(!_[_0x3fb9('0x22')](channels[_0x20bb4f['localtwolinkedid']])){utils[_0x3fb9('0x17')](util[_0x3fb9('0xb')](_0x3fb9('0x37'),_0x20bb4f[_0x3fb9('0x38')]),_0x20bb4f);if(channels[_0x20bb4f['localtwolinkedid']][_0x3fb9('0xc')]==_0x20bb4f[_0x3fb9('0x39')]){utils['info'](util[_0x3fb9('0xb')](_0x3fb9('0x3a'),_0x20bb4f[_0x3fb9('0x38')],_0x20bb4f[_0x3fb9('0x3b')],_0x20bb4f[_0x3fb9('0x3c')]));channels[_0x20bb4f[_0x3fb9('0x3b')]][_0x3fb9('0x28')]=_0x20bb4f['secondtransfererchannel'];channels[_0x20bb4f['localtwolinkedid']][_0x3fb9('0x3d')]=_0x3fb9('0x3e');}else if(channels[_0x20bb4f[_0x3fb9('0x3b')]][_0x3fb9('0xc')]=_0x20bb4f[_0x3fb9('0x3f')]){utils[_0x3fb9('0xa')](util[_0x3fb9('0xb')](_0x3fb9('0x3a'),_0x20bb4f['origtransfereruniqueid'],_0x20bb4f[_0x3fb9('0x3b')],_0x20bb4f[_0x3fb9('0x40')]));channels[_0x20bb4f[_0x3fb9('0x3b')]][_0x3fb9('0x28')]=_0x20bb4f[_0x3fb9('0x40')];channels[_0x20bb4f[_0x3fb9('0x3b')]][_0x3fb9('0x3d')]=_0x3fb9('0x3e');}}}catch(_0x470a1b){utils[_0x3fb9('0x1e')](util[_0x3fb9('0xb')](_0x3fb9('0x37'),_0x20bb4f[_0x3fb9('0x38')]),_0x470a1b);}};exports[_0x3fb9('0x41')]=function(_0x22bfa6){try{if(!_[_0x3fb9('0x22')](channels[_0x22bfa6[_0x3fb9('0x8')]])){utils[_0x3fb9('0x17')](util[_0x3fb9('0xb')](_0x3fb9('0x42'),_0x22bfa6[_0x3fb9('0x8')]),_0x22bfa6);channels[_0x22bfa6[_0x3fb9('0x8')]][_0x3fb9('0x43')]=utils['now']();utils['info'](util[_0x3fb9('0xb')](_0x3fb9('0x44'),_0x22bfa6[_0x3fb9('0x8')],channels[_0x22bfa6[_0x3fb9('0x8')]][_0x3fb9('0x43')]));}}catch(_0x4b04a0){utils['error'](util[_0x3fb9('0xb')](_0x3fb9('0x42'),_0x22bfa6[_0x3fb9('0x8')]),_0x4b04a0);}};exports[_0x3fb9('0x45')]=function(_0x12b16a){try{if(!_[_0x3fb9('0x22')](channels[_0x12b16a[_0x3fb9('0x8')]])){utils[_0x3fb9('0x17')](util[_0x3fb9('0xb')](_0x3fb9('0x46'),_0x12b16a['uniqueid']),_0x12b16a);if(!_['isNil'](channels[_0x12b16a[_0x3fb9('0x8')]][_0x3fb9('0x43')])){channels[_0x12b16a[_0x3fb9('0x8')]][_0x3fb9('0x47')]+=utils['diffTime'](utils['now'](),channels[_0x12b16a[_0x3fb9('0x8')]][_0x3fb9('0x43')]);utils['info'](util[_0x3fb9('0xb')](_0x3fb9('0x48'),_0x12b16a[_0x3fb9('0x8')],channels[_0x12b16a['uniqueid']]['mohtime']));delete channels[_0x12b16a[_0x3fb9('0x8')]]['musiconholdstartAt'];}}}catch(_0x4128db){utils[_0x3fb9('0x1e')](util[_0x3fb9('0xb')](_0x3fb9('0x46'),_0x12b16a['uniqueid']),_0x4128db);}};exports['varset']=function(_0x3d575a){try{if(!_[_0x3fb9('0x22')](channels[_0x3d575a[_0x3fb9('0x8')]])){utils[_0x3fb9('0x17')](util[_0x3fb9('0xb')](_0x3fb9('0x49'),_0x3d575a['uniqueid']),_0x3d575a);if(!_['isNil'](_0x3d575a[_0x3fb9('0x4a')]['xmd-originatecalleridnum'])){utils[_0x3fb9('0xa')](util[_0x3fb9('0xb')](_0x3fb9('0x4b'),_0x3d575a[_0x3fb9('0x8')],_0x3d575a[_0x3fb9('0x4c')]));channels[_0x3d575a[_0x3fb9('0x8')]][_0x3fb9('0x4d')]=_0x3d575a[_0x3fb9('0x4c')];}if(!_[_0x3fb9('0x22')](_0x3d575a['variable']['xmd-phone'])){utils[_0x3fb9('0xa')](util['format'](_0x3fb9('0x4e'),_0x3d575a['uniqueid'],_0x3d575a[_0x3fb9('0x4c')]));channels[_0x3d575a[_0x3fb9('0x8')]][_0x3fb9('0x4f')]=_0x3d575a[_0x3fb9('0x4c')];channels[_0x3d575a['uniqueid']][_0x3fb9('0x2e')]='\x22'+_0x3d575a[_0x3fb9('0x4c')]+_0x3fb9('0x50')+_0x3d575a[_0x3fb9('0x4c')]+'>';}if(!_['isNil'](_0x3d575a[_0x3fb9('0x4a')][_0x3fb9('0x51')])||!_[_0x3fb9('0x22')](_0x3d575a['variable'][_0x3fb9('0x52')])){utils[_0x3fb9('0xa')](util[_0x3fb9('0xb')](_0x3fb9('0x53'),_0x3d575a[_0x3fb9('0x8')],!_[_0x3fb9('0x22')](_0x3d575a[_0x3fb9('0x4a')][_0x3fb9('0x51')])?_0x3fb9('0x51'):_0x3fb9('0x52'),_0x3d575a[_0x3fb9('0x4c')]));channels[_0x3d575a['uniqueid']][_0x3fb9('0x2e')]=_0x3d575a[_0x3fb9('0x4c')];}if(!_[_0x3fb9('0x22')](_0x3d575a[_0x3fb9('0x4a')][_0x3fb9('0x54')])||!_[_0x3fb9('0x22')](_0x3d575a[_0x3fb9('0x4a')][_0x3fb9('0x55')])){utils[_0x3fb9('0xa')](util[_0x3fb9('0xb')](_0x3fb9('0x53'),_0x3d575a[_0x3fb9('0x8')],!_['isNil'](_0x3d575a['variable'][_0x3fb9('0x54')])?_0x3fb9('0x54'):_0x3fb9('0x55'),_0x3d575a['value']));channels[_0x3d575a['uniqueid']]['lastapplication']=_0x3fb9('0x56');channels[_0x3d575a[_0x3fb9('0x8')]][_0x3fb9('0x57')]=_0x3d575a['value'];channels[_0x3d575a[_0x3fb9('0x8')]][_0x3fb9('0x58')]=!![];}if(!_['isNil'](_0x3d575a[_0x3fb9('0x4a')][_0x3fb9('0x59')])){utils[_0x3fb9('0xa')](util['format']('[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s',_0x3d575a['uniqueid'],_0x3d575a[_0x3fb9('0x4c')]));channels[_0x3d575a[_0x3fb9('0x8')]][_0x3fb9('0x5a')]=_0x3d575a[_0x3fb9('0x4c')];}if(!_[_0x3fb9('0x22')](_0x3d575a[_0x3fb9('0x4a')][_0x3fb9('0x5b')])){utils['info'](util[_0x3fb9('0xb')]('[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s',_0x3d575a[_0x3fb9('0x8')],_0x3d575a[_0x3fb9('0x4c')]));channels[_0x3d575a[_0x3fb9('0x8')]][_0x3fb9('0x5c')]=_0x3d575a[_0x3fb9('0x4c')];}if(!_[_0x3fb9('0x22')](_0x3d575a['variable'][_0x3fb9('0x5d')])){utils[_0x3fb9('0xa')](util[_0x3fb9('0xb')](_0x3fb9('0x5e'),_0x3d575a['uniqueid'],_0x3d575a[_0x3fb9('0x4c')]));channels[_0x3d575a[_0x3fb9('0x8')]][_0x3fb9('0x5f')]=_0x3d575a[_0x3fb9('0x4c')];}if(!_[_0x3fb9('0x22')](_0x3d575a[_0x3fb9('0x4a')][_0x3fb9('0x60')])){utils[_0x3fb9('0xa')](util[_0x3fb9('0xb')](_0x3fb9('0x61'),_0x3d575a[_0x3fb9('0x8')],_0x3d575a['value']));channels[_0x3d575a[_0x3fb9('0x8')]][_0x3fb9('0x60')]=_0x3d575a[_0x3fb9('0x4c')];}}}catch(_0x4d1f8c){utils[_0x3fb9('0x1e')](util[_0x3fb9('0xb')](_0x3fb9('0x49'),_0x3d575a[_0x3fb9('0x8')]),_0x4d1f8c);}};exports[_0x3fb9('0x62')]=function(_0x40f70c){try{if(!_[_0x3fb9('0x22')](channels[_0x40f70c[_0x3fb9('0x8')]])){utils[_0x3fb9('0x17')](util[_0x3fb9('0xb')](_0x3fb9('0x63'),_0x40f70c[_0x3fb9('0x8')]),_0x40f70c);utils[_0x3fb9('0xa')](util['format'](_0x3fb9('0x64'),_0x40f70c[_0x3fb9('0x8')],_0x40f70c[_0x3fb9('0x65')],_0x40f70c['appdata']));if(_0x40f70c[_0x3fb9('0x65')][_0x3fb9('0x66')]()=='set'&&_[_0x3fb9('0x67')](_0x40f70c[_0x3fb9('0x68')][_0x3fb9('0x66')](),_0x3fb9('0x69'))){var _0x4c5f56=_0x40f70c[_0x3fb9('0x68')][_0x3fb9('0x6a')]('=');var _0x4873a9=_0x4c5f56[0x0]['substring'](_0x4c5f56[0x0]['lastIndexOf']('(')+0x1,_0x4c5f56[0x0][_0x3fb9('0x6b')](')'));var _0x49266e=_0x4c5f56[0x1];channels[_0x40f70c[_0x3fb9('0x8')]][_0x4873a9]=_0x49266e;}if(!_[_0x3fb9('0x6c')](['hangup',_0x3fb9('0x6d'),_0x3fb9('0x6e'),'set','gotoif'],_0x40f70c[_0x3fb9('0x65')][_0x3fb9('0x66')]())){channels[_0x40f70c['uniqueid']][_0x3fb9('0x6f')]=_0x40f70c[_0x3fb9('0x65')];channels[_0x40f70c['uniqueid']][_0x3fb9('0x57')]=_0x40f70c[_0x3fb9('0x68')];}}}catch(_0x3d9ebb){utils['error'](util['format']('[%s][calls][newexten]',_0x40f70c[_0x3fb9('0x8')]),_0x3d9ebb);}};
\ No newline at end of file
+var _0x6050=['DOCUMENTATION','error','newstate','[%s][calls][newstate]','channelstate','isNil','systemanswertime','transfer','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','answertime','disposition','toNumber','ANSWERED','callerid','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','cause-txt','endtime','duration','diffTime','[%s][calls][hangup]','attendedtransfer','localtwolinkedid','[%s][calls][attendedtransfer]','origtransfereruniqueid','userfield','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','origtransfererchannel','_attended','musiconholdstart','[%s][calls][musiconholdstart]','musiconholdstartAt','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstop','[%s][calls][musiconholdstop]','[%s][calls][musiconholdstop]\x20mohtime:%s','mohtime','[%s][calls][varset]','variable','xmd-originatecalleridnum','value','source','xmd-phone','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','destination','\x22\x20<','xmd-callerid-preview','xmd-callerid','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-queue','xmcs-queue','xmd-contactid','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','ContactId','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','type','outboundrouteid','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','routeid','sipcallid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','[%s][calls][newexten]','[%s][calls][newexten]\x20application:%s\x20appdata:%s','application','toLowerCase','set','appdata','cdr','split','substring','lastIndexOf','includes','hangup','execif','gotoif','lastdata','lodash','util','./utils','./transfers.controller','NO\x20ANSWER','FAILED','blinds','uniqueid','transfereeuniqueid','info','format','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','channel','queue','membername','interface','calleridnum','connectedlinenum','lastevent','accountcode','getUserByInternal','then','UserId','request','CreateVoiceCallReport','recording','newchannel','debug','[%s][calls][newchannel]','linkedid','OutgoingSpoolFailed','context','exten','now'];(function(_0x1b1c9d,_0x250676){var _0x5a5f7c=function(_0x47b33d){while(--_0x47b33d){_0x1b1c9d['push'](_0x1b1c9d['shift']());}};_0x5a5f7c(++_0x250676);}(_0x6050,0x196));var _0x0605=function(_0x274182,_0x103cbb){_0x274182=_0x274182-0x0;var _0x10467a=_0x6050[_0x274182];return _0x10467a;};'use strict';var _=require(_0x0605('0x0'));var util=require(_0x0605('0x1'));var utils=require(_0x0605('0x2'));var transfers=require(_0x0605('0x3'));var dispositions=[_0x0605('0x4'),_0x0605('0x5'),'FAILED',_0x0605('0x4'),_0x0605('0x4'),_0x0605('0x4'),'ANSWERED','BUSY','FAILED',_0x0605('0x5'),'FAILED'];var channels={};function writeDB(_0x58f7d2){var _0x5660ad;if(transfers[_0x0605('0x6')][_0x58f7d2[_0x0605('0x7')]]){_0x5660ad=_0x58f7d2[_0x0605('0x7')];_0x58f7d2[_0x0605('0x7')]=transfers[_0x0605('0x6')][_0x58f7d2['uniqueid']][_0x0605('0x8')];}utils[_0x0605('0x9')](util[_0x0605('0xa')](_0x0605('0xb'),_0x58f7d2[_0x0605('0x7')],_0x58f7d2[_0x0605('0xc')],_0x58f7d2[_0x0605('0xd')],_0x58f7d2[_0x0605('0xe')],_0x58f7d2[_0x0605('0xf')],_0x58f7d2[_0x0605('0x10')],_0x58f7d2[_0x0605('0x11')],_0x58f7d2[_0x0605('0x12')]));if(_0x58f7d2[_0x0605('0x13')]){utils[_0x0605('0x14')](_0x58f7d2[_0x0605('0x13')])[_0x0605('0x15')](function(_0x169a70){if(_0x169a70){_0x58f7d2[_0x0605('0x16')]=_0x169a70['id'];}utils[_0x0605('0x17')]('CreateVoiceCallReport',_0x58f7d2);});}else{utils[_0x0605('0x17')](_0x0605('0x18'),_0x58f7d2);}if(channels[_0x58f7d2[_0x0605('0x7')]]){delete channels[_0x58f7d2['uniqueid']];}else if(_0x5660ad&&channels[_0x5660ad]){if(!transfers['blinds'][_0x5660ad][_0x0605('0x19')])delete transfers[_0x0605('0x6')][_0x5660ad];delete channels[_0x5660ad];}}exports[_0x0605('0x1a')]=function(_0x2d46ef){try{utils[_0x0605('0x1b')](util[_0x0605('0xa')](_0x0605('0x1c'),_0x2d46ef[_0x0605('0x7')]),_0x2d46ef);if(_0x2d46ef[_0x0605('0x7')]==_0x2d46ef[_0x0605('0x1d')]&&_0x2d46ef[_0x0605('0xc')]!=_0x0605('0x1e')){utils[_0x0605('0x9')](util[_0x0605('0xa')]('[%s][calls][newchannel]\x20context:%s\x20exten:%s',_0x2d46ef[_0x0605('0x7')],_0x2d46ef[_0x0605('0x1f')],_0x2d46ef[_0x0605('0x20')]));channels[_0x2d46ef[_0x0605('0x7')]]={'uniqueid':_0x2d46ef[_0x0605('0x7')],'accountcode':_0x2d46ef[_0x0605('0x13')],'source':_0x2d46ef[_0x0605('0x10')],'destination':_0x2d46ef[_0x0605('0x20')],'destinationcontext':_0x2d46ef[_0x0605('0x1f')],'channel':_0x2d46ef['channel'],'starttime':utils[_0x0605('0x21')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':'NO\x20ANSWER','amaflags':_0x0605('0x22')};}}catch(_0x118e9c){utils[_0x0605('0x23')](util[_0x0605('0xa')](_0x0605('0x1c'),_0x2d46ef[_0x0605('0x7')]),_0x118e9c);}};exports[_0x0605('0x24')]=function(_0x1ae3db){try{utils[_0x0605('0x1b')](util[_0x0605('0xa')](_0x0605('0x25'),_0x1ae3db[_0x0605('0x7')]),_0x1ae3db);if(!_['isNil'](channels[_0x1ae3db[_0x0605('0x7')]])&&_0x1ae3db[_0x0605('0x26')]==0x6){utils['info'](util['format']('[%s][calls][newstate]\x20context:%s\x20channel:%s',_0x1ae3db[_0x0605('0x7')],_0x1ae3db[_0x0605('0x1f')],_0x1ae3db[_0x0605('0xc')]));if(_[_0x0605('0x27')](channels[_0x1ae3db[_0x0605('0x7')]][_0x0605('0x28')])){channels[_0x1ae3db['uniqueid']][_0x0605('0x28')]=utils['now']();}}else if(!_[_0x0605('0x27')](channels[_0x1ae3db[_0x0605('0x1d')]])&&_0x1ae3db[_0x0605('0x26')]==0x6&&_0x1ae3db[_0x0605('0x1f')]!=_0x0605('0x29')){utils[_0x0605('0x9')](util['format'](_0x0605('0x2a'),_0x1ae3db[_0x0605('0x7')],_0x1ae3db[_0x0605('0x1d')],_0x1ae3db[_0x0605('0x1f')],_0x1ae3db[_0x0605('0xc')]));channels[_0x1ae3db[_0x0605('0x1d')]][_0x0605('0x13')]=_0x1ae3db[_0x0605('0x13')];channels[_0x1ae3db[_0x0605('0x1d')]][_0x0605('0x2b')]=_0x1ae3db[_0x0605('0xc')];if(_[_0x0605('0x27')](channels[_0x1ae3db[_0x0605('0x1d')]][_0x0605('0x2c')])){channels[_0x1ae3db[_0x0605('0x1d')]][_0x0605('0x2c')]=utils[_0x0605('0x21')]();}channels[_0x1ae3db[_0x0605('0x1d')]][_0x0605('0x2d')]=dispositions[_[_0x0605('0x2e')](_0x1ae3db[_0x0605('0x26')])]||_0x0605('0x2f');}}catch(_0x32a979){utils[_0x0605('0x23')](util[_0x0605('0xa')](_0x0605('0x25'),_0x1ae3db[_0x0605('0x7')]),_0x32a979);}};exports['hangup']=function(_0x259102){try{if(!_[_0x0605('0x27')](channels[_0x259102['uniqueid']])){utils[_0x0605('0x1b')](util[_0x0605('0xa')]('[%s][calls][hangup]',_0x259102[_0x0605('0x7')]),_0x259102);if(_[_0x0605('0x27')](channels[_0x259102[_0x0605('0x7')]][_0x0605('0x30')])){channels[_0x259102[_0x0605('0x7')]][_0x0605('0x30')]=_0x259102['calleridname']+'\x20<'+_0x259102['calleridnum']+'>';}utils[_0x0605('0x9')](util[_0x0605('0xa')](_0x0605('0x31'),_0x259102['uniqueid'],channels[_0x259102[_0x0605('0x7')]]['callerid'],_0x259102[_0x0605('0x32')]));channels[_0x259102[_0x0605('0x7')]][_0x0605('0x33')]=utils[_0x0605('0x21')]();channels[_0x259102[_0x0605('0x7')]][_0x0605('0x34')]=utils[_0x0605('0x35')](channels[_0x259102[_0x0605('0x7')]][_0x0605('0x33')],channels[_0x259102[_0x0605('0x7')]]['starttime']);channels[_0x259102[_0x0605('0x7')]]['billableseconds']=channels[_0x259102[_0x0605('0x7')]][_0x0605('0x2c')]?utils[_0x0605('0x35')](channels[_0x259102['uniqueid']]['endtime'],channels[_0x259102[_0x0605('0x7')]]['answertime']):0x0;writeDB(channels[_0x259102[_0x0605('0x7')]]);}}catch(_0x52f4b6){utils[_0x0605('0x23')](util[_0x0605('0xa')](_0x0605('0x36'),_0x259102[_0x0605('0x7')]),_0x52f4b6);}};exports[_0x0605('0x37')]=function(_0x1fdd42){try{if(!_[_0x0605('0x27')](channels[_0x1fdd42[_0x0605('0x38')]])){utils[_0x0605('0x1b')](util[_0x0605('0xa')](_0x0605('0x39'),_0x1fdd42['origtransfereruniqueid']),_0x1fdd42);if(channels[_0x1fdd42['localtwolinkedid']][_0x0605('0xc')]==_0x1fdd42['transfereechannel']){utils[_0x0605('0x9')](util[_0x0605('0xa')]('[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s',_0x1fdd42[_0x0605('0x3a')],_0x1fdd42[_0x0605('0x38')],_0x1fdd42['secondtransfererchannel']));channels[_0x1fdd42[_0x0605('0x38')]][_0x0605('0x2b')]=_0x1fdd42['secondtransfererchannel'];channels[_0x1fdd42[_0x0605('0x38')]][_0x0605('0x3b')]='_attended';}else if(channels[_0x1fdd42[_0x0605('0x38')]]['channel']=_0x1fdd42['transfertargetchannel']){utils[_0x0605('0x9')](util[_0x0605('0xa')](_0x0605('0x3c'),_0x1fdd42[_0x0605('0x3a')],_0x1fdd42[_0x0605('0x38')],_0x1fdd42[_0x0605('0x3d')]));channels[_0x1fdd42[_0x0605('0x38')]][_0x0605('0x2b')]=_0x1fdd42['origtransfererchannel'];channels[_0x1fdd42[_0x0605('0x38')]][_0x0605('0x3b')]=_0x0605('0x3e');}}}catch(_0x483c20){utils[_0x0605('0x23')](util[_0x0605('0xa')](_0x0605('0x39'),_0x1fdd42[_0x0605('0x3a')]),_0x483c20);}};exports[_0x0605('0x3f')]=function(_0x86434d){try{if(!_[_0x0605('0x27')](channels[_0x86434d[_0x0605('0x7')]])){utils[_0x0605('0x1b')](util['format'](_0x0605('0x40'),_0x86434d[_0x0605('0x7')]),_0x86434d);channels[_0x86434d[_0x0605('0x7')]][_0x0605('0x41')]=utils[_0x0605('0x21')]();utils[_0x0605('0x9')](util[_0x0605('0xa')](_0x0605('0x42'),_0x86434d[_0x0605('0x7')],channels[_0x86434d[_0x0605('0x7')]]['musiconholdstartAt']));}}catch(_0x5a2c76){utils['error'](util[_0x0605('0xa')](_0x0605('0x40'),_0x86434d[_0x0605('0x7')]),_0x5a2c76);}};exports[_0x0605('0x43')]=function(_0xbd755e){try{if(!_[_0x0605('0x27')](channels[_0xbd755e['uniqueid']])){utils[_0x0605('0x1b')](util[_0x0605('0xa')](_0x0605('0x44'),_0xbd755e[_0x0605('0x7')]),_0xbd755e);if(!_['isNil'](channels[_0xbd755e[_0x0605('0x7')]][_0x0605('0x41')])){channels[_0xbd755e[_0x0605('0x7')]]['mohtime']+=utils['diffTime'](utils[_0x0605('0x21')](),channels[_0xbd755e[_0x0605('0x7')]][_0x0605('0x41')]);utils['info'](util['format'](_0x0605('0x45'),_0xbd755e['uniqueid'],channels[_0xbd755e[_0x0605('0x7')]][_0x0605('0x46')]));delete channels[_0xbd755e[_0x0605('0x7')]][_0x0605('0x41')];}}}catch(_0x248ecc){utils[_0x0605('0x23')](util[_0x0605('0xa')]('[%s][calls][musiconholdstop]',_0xbd755e[_0x0605('0x7')]),_0x248ecc);}};exports['varset']=function(_0x40dd01){try{if(!_['isNil'](channels[_0x40dd01[_0x0605('0x7')]])){utils[_0x0605('0x1b')](util[_0x0605('0xa')](_0x0605('0x47'),_0x40dd01['uniqueid']),_0x40dd01);if(!_['isNil'](_0x40dd01[_0x0605('0x48')][_0x0605('0x49')])){utils['info'](util['format']('[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s',_0x40dd01[_0x0605('0x7')],_0x40dd01[_0x0605('0x4a')]));channels[_0x40dd01[_0x0605('0x7')]][_0x0605('0x4b')]=_0x40dd01[_0x0605('0x4a')];}if(!_[_0x0605('0x27')](_0x40dd01['variable'][_0x0605('0x4c')])){utils[_0x0605('0x9')](util[_0x0605('0xa')](_0x0605('0x4d'),_0x40dd01[_0x0605('0x7')],_0x40dd01[_0x0605('0x4a')]));channels[_0x40dd01[_0x0605('0x7')]][_0x0605('0x4e')]=_0x40dd01['value'];channels[_0x40dd01['uniqueid']]['callerid']='\x22'+_0x40dd01[_0x0605('0x4a')]+_0x0605('0x4f')+_0x40dd01[_0x0605('0x4a')]+'>';}if(!_['isNil'](_0x40dd01['variable'][_0x0605('0x50')])||!_[_0x0605('0x27')](_0x40dd01[_0x0605('0x48')][_0x0605('0x51')])){utils[_0x0605('0x9')](util[_0x0605('0xa')](_0x0605('0x52'),_0x40dd01[_0x0605('0x7')],!_[_0x0605('0x27')](_0x40dd01[_0x0605('0x48')][_0x0605('0x50')])?_0x0605('0x50'):'xmd-callerid',_0x40dd01[_0x0605('0x4a')]));channels[_0x40dd01[_0x0605('0x7')]][_0x0605('0x30')]=_0x40dd01[_0x0605('0x4a')];}if(!_[_0x0605('0x27')](_0x40dd01[_0x0605('0x48')]['xmd-queue'])||!_[_0x0605('0x27')](_0x40dd01['variable']['xmcs-queue'])){utils[_0x0605('0x9')](util[_0x0605('0xa')](_0x0605('0x52'),_0x40dd01[_0x0605('0x7')],!_[_0x0605('0x27')](_0x40dd01[_0x0605('0x48')][_0x0605('0x53')])?_0x0605('0x53'):_0x0605('0x54'),_0x40dd01[_0x0605('0x4a')]));channels[_0x40dd01['uniqueid']]['lastapplication']='Queue';channels[_0x40dd01['uniqueid']]['lastdata']=_0x40dd01[_0x0605('0x4a')];channels[_0x40dd01[_0x0605('0x7')]][_0x0605('0xd')]=!![];}if(!_['isNil'](_0x40dd01[_0x0605('0x48')][_0x0605('0x55')])){utils[_0x0605('0x9')](util[_0x0605('0xa')](_0x0605('0x56'),_0x40dd01[_0x0605('0x7')],_0x40dd01['value']));channels[_0x40dd01[_0x0605('0x7')]][_0x0605('0x57')]=_0x40dd01[_0x0605('0x4a')];}if(!_['isNil'](_0x40dd01['variable']['xmd-cdrtype'])){utils[_0x0605('0x9')](util[_0x0605('0xa')](_0x0605('0x58'),_0x40dd01[_0x0605('0x7')],_0x40dd01['value']));channels[_0x40dd01['uniqueid']][_0x0605('0x59')]=_0x40dd01[_0x0605('0x4a')];}if(!_['isNil'](_0x40dd01[_0x0605('0x48')][_0x0605('0x5a')])){utils[_0x0605('0x9')](util[_0x0605('0xa')](_0x0605('0x5b'),_0x40dd01[_0x0605('0x7')],_0x40dd01[_0x0605('0x4a')]));channels[_0x40dd01[_0x0605('0x7')]][_0x0605('0x5c')]=_0x40dd01[_0x0605('0x4a')];}if(!_[_0x0605('0x27')](_0x40dd01[_0x0605('0x48')][_0x0605('0x5d')])){utils['info'](util['format'](_0x0605('0x5e'),_0x40dd01[_0x0605('0x7')],_0x40dd01[_0x0605('0x4a')]));channels[_0x40dd01['uniqueid']]['sipcallid']=_0x40dd01[_0x0605('0x4a')];}}}catch(_0x5f21b2){utils['error'](util[_0x0605('0xa')](_0x0605('0x47'),_0x40dd01[_0x0605('0x7')]),_0x5f21b2);}};exports['newexten']=function(_0x5963c9){try{if(!_['isNil'](channels[_0x5963c9[_0x0605('0x7')]])){utils['debug'](util[_0x0605('0xa')](_0x0605('0x5f'),_0x5963c9[_0x0605('0x7')]),_0x5963c9);utils[_0x0605('0x9')](util[_0x0605('0xa')](_0x0605('0x60'),_0x5963c9[_0x0605('0x7')],_0x5963c9[_0x0605('0x61')],_0x5963c9['appdata']));if(_0x5963c9['application'][_0x0605('0x62')]()==_0x0605('0x63')&&_['startsWith'](_0x5963c9[_0x0605('0x64')]['toLowerCase'](),_0x0605('0x65'))){var _0x2677b8=_0x5963c9['appdata'][_0x0605('0x66')]('=');var _0x5ad670=_0x2677b8[0x0][_0x0605('0x67')](_0x2677b8[0x0][_0x0605('0x68')]('(')+0x1,_0x2677b8[0x0][_0x0605('0x68')](')'));var _0xfc3687=_0x2677b8[0x1];channels[_0x5963c9['uniqueid']][_0x5ad670]=_0xfc3687;}if(!_[_0x0605('0x69')]([_0x0605('0x6a'),'noop',_0x0605('0x6b'),_0x0605('0x63'),_0x0605('0x6c')],_0x5963c9[_0x0605('0x61')][_0x0605('0x62')]())){channels[_0x5963c9[_0x0605('0x7')]]['lastapplication']=_0x5963c9['application'];channels[_0x5963c9[_0x0605('0x7')]][_0x0605('0x6d')]=_0x5963c9[_0x0605('0x64')];}}}catch(_0x4302fb){utils['error'](util[_0x0605('0xa')](_0x0605('0x5f'),_0x5963c9[_0x0605('0x7')]),_0x4302fb);}};
\ No newline at end of file
index e124e8a..4be78bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc665=['[core]\x20fullybooted','error','close','[core]\x20close','managerevent','connect','info','shutdown','fullybooted'];(function(_0x131640,_0x28e7d4){var _0x500df0=function(_0x138b88){while(--_0x138b88){_0x131640['push'](_0x131640['shift']());}};_0x500df0(++_0x28e7d4);}(_0xc665,0x1ac));var _0x5c66=function(_0x57d390,_0x37883d){_0x57d390=_0x57d390-0x0;var _0x415227=_0xc665[_0x57d390];return _0x415227;};'use strict';var utils=require('./utils');exports[_0x5c66('0x0')]=function(){utils[_0x5c66('0x1')]('[core]\x20connected');};exports[_0x5c66('0x2')]=function(){utils['info']('[core]\x20shutdown');};exports[_0x5c66('0x3')]=function(){utils[_0x5c66('0x1')](_0x5c66('0x4'));};exports[_0x5c66('0x5')]=function(_0x475615){utils[_0x5c66('0x5')]('[core]\x20error',_0x475615);};exports[_0x5c66('0x6')]=function(){utils['info'](_0x5c66('0x7'));};exports[_0x5c66('0x8')]=function(_0x32d75d){};
\ No newline at end of file
+var _0x8450=['error','close','[core]\x20close','managerevent','./utils','connect','info','shutdown','fullybooted','[core]\x20fullybooted'];(function(_0x4e080b,_0x49df0f){var _0x2bcc2a=function(_0x1e8e2c){while(--_0x1e8e2c){_0x4e080b['push'](_0x4e080b['shift']());}};_0x2bcc2a(++_0x49df0f);}(_0x8450,0x1da));var _0x0845=function(_0x2f1847,_0x14691c){_0x2f1847=_0x2f1847-0x0;var _0x45dbfb=_0x8450[_0x2f1847];return _0x45dbfb;};'use strict';var utils=require(_0x0845('0x0'));exports[_0x0845('0x1')]=function(){utils[_0x0845('0x2')]('[core]\x20connected');};exports[_0x0845('0x3')]=function(){utils[_0x0845('0x2')]('[core]\x20shutdown');};exports[_0x0845('0x4')]=function(){utils['info'](_0x0845('0x5'));};exports['error']=function(_0x11da17){utils[_0x0845('0x6')]('[core]\x20error',_0x11da17);};exports[_0x0845('0x7')]=function(){utils[_0x0845('0x2')](_0x0845('0x8'));};exports[_0x0845('0x9')]=function(_0x32e113){};
\ No newline at end of file
index 132e92e..c501624 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c7f=['[%s][dials][newexten]\x20application:%s\x20appdata:%s','application','toLowerCase','set','startsWith','appdata','cdr(routeid)','error','varset','[%s][dials][varset]','isNil','variable','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s','value','dialbegin','[%s][dials][dialbegin]','assign','starttime','now','lastevent','called','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','dialend','[%s][dials][dialend]','dialstatus','answertime','connect','hangup','[%s][dials][hangup]','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','cause-txt','duration','endtime','holdtime','diffTime','billableseconds','lodash','util','./utils','info','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','channel','dialstring','calleridnum','request','CreateVoiceDialReport','uniqueid','newexten','debug','format','[%s][dials][newexten]'];(function(_0x54ea7a,_0x19df9b){var _0x65a10d=function(_0x1bf936){while(--_0x1bf936){_0x54ea7a['push'](_0x54ea7a['shift']());}};_0x65a10d(++_0x19df9b);}(_0x4c7f,0x123));var _0xf4c7=function(_0x17b6e3,_0x4522ed){_0x17b6e3=_0x17b6e3-0x0;var _0x3906f3=_0x4c7f[_0x17b6e3];return _0x3906f3;};'use strict';var _=require(_0xf4c7('0x0'));var util=require(_0xf4c7('0x1'));var utils=require(_0xf4c7('0x2'));var dials={};function writeDB(_0x1de601){utils[_0xf4c7('0x3')](util['format'](_0xf4c7('0x4'),_0x1de601['uniqueid'],_0x1de601[_0xf4c7('0x5')],_0x1de601[_0xf4c7('0x6')],_0x1de601[_0xf4c7('0x7')],_0x1de601['connectedlinenum'],_0x1de601['dialstatus']));utils[_0xf4c7('0x8')](_0xf4c7('0x9'),_0x1de601);delete dials[_0x1de601[_0xf4c7('0xa')]];}exports[_0xf4c7('0xb')]=function(_0x22473a){try{utils[_0xf4c7('0xc')](util[_0xf4c7('0xd')](_0xf4c7('0xe'),_0x22473a[_0xf4c7('0xa')]),_0x22473a);utils['info'](util['format'](_0xf4c7('0xf'),_0x22473a[_0xf4c7('0xa')],_0x22473a[_0xf4c7('0x10')],_0x22473a['appdata']));if(_0x22473a[_0xf4c7('0x10')][_0xf4c7('0x11')]()==_0xf4c7('0x12')&&_[_0xf4c7('0x13')](_0x22473a[_0xf4c7('0x14')][_0xf4c7('0x11')](),_0xf4c7('0x15'))){var _0x54ace3=_0x22473a['appdata']['split']('=');dials[_0x22473a['uniqueid']]={'routeId':_0x54ace3[0x1]};}}catch(_0x5e63c6){utils[_0xf4c7('0x16')](util[_0xf4c7('0xd')](_0xf4c7('0xe'),_0x22473a[_0xf4c7('0xa')]),_0x5e63c6);}};exports[_0xf4c7('0x17')]=function(_0x4fe45b){try{utils[_0xf4c7('0xc')](util[_0xf4c7('0xd')](_0xf4c7('0x18'),_0x4fe45b[_0xf4c7('0xa')]),_0x4fe45b);if(!_[_0xf4c7('0x19')](_0x4fe45b[_0xf4c7('0x1a')]['outboundrouteid'])){utils[_0xf4c7('0x3')](util[_0xf4c7('0xd')](_0xf4c7('0x1b'),_0x4fe45b[_0xf4c7('0xa')],_0x4fe45b[_0xf4c7('0x1c')]));dials[_0x4fe45b[_0xf4c7('0xa')]]={'routeId':_0x4fe45b[_0xf4c7('0x1c')]};}}catch(_0x2bc005){utils[_0xf4c7('0x16')](util['format'](_0xf4c7('0x18'),_0x4fe45b['uniqueid']),_0x2bc005);}};exports[_0xf4c7('0x1d')]=function(_0x39edd1){try{if(!_[_0xf4c7('0x19')](dials[_0x39edd1[_0xf4c7('0xa')]])){utils['debug'](util[_0xf4c7('0xd')](_0xf4c7('0x1e'),_0x39edd1['uniqueid']),_0x39edd1);dials[_0x39edd1['uniqueid']]=_[_0xf4c7('0x1f')](dials[_0x39edd1[_0xf4c7('0xa')]],_0x39edd1);dials[_0x39edd1[_0xf4c7('0xa')]][_0xf4c7('0x20')]=utils[_0xf4c7('0x21')]();dials[_0x39edd1['uniqueid']][_0xf4c7('0x22')]=_0xf4c7('0x23');utils[_0xf4c7('0x3')](util[_0xf4c7('0xd')](_0xf4c7('0x24'),_0x39edd1['uniqueid'],dials[_0x39edd1[_0xf4c7('0xa')]]['starttime']));}}catch(_0x3c1a9d){utils['error'](util['format']('[%s][dials][dialbegin]',_0x39edd1[_0xf4c7('0xa')]),_0x3c1a9d);}};exports[_0xf4c7('0x25')]=function(_0x557275){try{if(!_[_0xf4c7('0x19')](dials[_0x557275[_0xf4c7('0xa')]])){utils['debug'](util[_0xf4c7('0xd')](_0xf4c7('0x26'),_0x557275['uniqueid']),_0x557275);dials[_0x557275['uniqueid']][_0xf4c7('0x27')]=_0x557275['dialstatus'];if(_0x557275[_0xf4c7('0x27')]=='ANSWER'){dials[_0x557275['uniqueid']]=_[_0xf4c7('0x1f')](dials[_0x557275[_0xf4c7('0xa')]],_0x557275);dials[_0x557275[_0xf4c7('0xa')]][_0xf4c7('0x28')]=utils['now']();dials[_0x557275[_0xf4c7('0xa')]][_0xf4c7('0x22')]=_0xf4c7('0x29');utils[_0xf4c7('0x3')](util[_0xf4c7('0xd')]('[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect',_0x557275['uniqueid'],_0x557275[_0xf4c7('0x27')],dials[_0x557275['uniqueid']][_0xf4c7('0x28')]));}else{utils[_0xf4c7('0x3')](util[_0xf4c7('0xd')]('[%s][dials][dialend]\x20dialstatus:%s',_0x557275[_0xf4c7('0xa')],_0x557275[_0xf4c7('0x27')]));}}}catch(_0x1c1a95){utils[_0xf4c7('0x16')](util[_0xf4c7('0xd')](_0xf4c7('0x26'),_0x557275['uniqueid']),_0x1c1a95);}};exports[_0xf4c7('0x2a')]=function(_0x35db53){try{if(!_[_0xf4c7('0x19')](dials[_0x35db53['uniqueid']])){utils[_0xf4c7('0xc')](util[_0xf4c7('0xd')](_0xf4c7('0x2b'),_0x35db53[_0xf4c7('0xa')]),_0x35db53);utils[_0xf4c7('0x3')](util[_0xf4c7('0xd')](_0xf4c7('0x2c'),_0x35db53['uniqueid'],_0x35db53['calleridnum'],_0x35db53['calleridname'],_0x35db53[_0xf4c7('0x2d')]));dials[_0x35db53[_0xf4c7('0xa')]]=_[_0xf4c7('0x1f')](dials[_0x35db53[_0xf4c7('0xa')]],{'endtime':utils[_0xf4c7('0x21')](),'lastevent':'complete'});dials[_0x35db53['uniqueid']][_0xf4c7('0x2e')]=utils['diffTime'](dials[_0x35db53['uniqueid']][_0xf4c7('0x2f')],dials[_0x35db53[_0xf4c7('0xa')]]['starttime']);dials[_0x35db53[_0xf4c7('0xa')]][_0xf4c7('0x30')]=utils[_0xf4c7('0x31')](dials[_0x35db53['uniqueid']][_0xf4c7('0x28')]||dials[_0x35db53[_0xf4c7('0xa')]][_0xf4c7('0x2f')],dials[_0x35db53[_0xf4c7('0xa')]][_0xf4c7('0x20')]);dials[_0x35db53[_0xf4c7('0xa')]][_0xf4c7('0x32')]=dials[_0x35db53['uniqueid']][_0xf4c7('0x28')]?utils['diffTime'](dials[_0x35db53[_0xf4c7('0xa')]][_0xf4c7('0x2f')],dials[_0x35db53[_0xf4c7('0xa')]]['answertime']):0x0;writeDB(dials[_0x35db53['uniqueid']]);}}catch(_0x21da7f){utils[_0xf4c7('0x16')](util[_0xf4c7('0xd')](_0xf4c7('0x2b'),_0x35db53[_0xf4c7('0xa')]),_0x21da7f);}};
\ No newline at end of file
+var _0xec3a=['[%s][dials][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','startsWith','error','varset','[%s][dials][varset]','isNil','variable','outboundrouteid','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s','value','dialbegin','[%s][dials][dialbegin]','assign','starttime','lastevent','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','dialend','[%s][dials][dialend]','ANSWER','connect','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','[%s][dials][hangup]','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','now','complete','duration','diffTime','endtime','holdtime','answertime','billableseconds','lodash','util','./utils','info','format','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','dialstring','calleridnum','dialstatus','CreateVoiceDialReport','newexten','debug','[%s][dials][newexten]'];(function(_0x1928c9,_0x13a6d1){var _0x51b5fb=function(_0x24cf70){while(--_0x24cf70){_0x1928c9['push'](_0x1928c9['shift']());}};_0x51b5fb(++_0x13a6d1);}(_0xec3a,0xe7));var _0xaec3=function(_0x2e4aa2,_0x11956a){_0x2e4aa2=_0x2e4aa2-0x0;var _0x5e6092=_0xec3a[_0x2e4aa2];return _0x5e6092;};'use strict';var _=require(_0xaec3('0x0'));var util=require(_0xaec3('0x1'));var utils=require(_0xaec3('0x2'));var dials={};function writeDB(_0x45c8a4){utils[_0xaec3('0x3')](util[_0xaec3('0x4')](_0xaec3('0x5'),_0x45c8a4[_0xaec3('0x6')],_0x45c8a4['channel'],_0x45c8a4[_0xaec3('0x7')],_0x45c8a4[_0xaec3('0x8')],_0x45c8a4['connectedlinenum'],_0x45c8a4[_0xaec3('0x9')]));utils['request'](_0xaec3('0xa'),_0x45c8a4);delete dials[_0x45c8a4[_0xaec3('0x6')]];}exports[_0xaec3('0xb')]=function(_0x51d61d){try{utils[_0xaec3('0xc')](util[_0xaec3('0x4')](_0xaec3('0xd'),_0x51d61d[_0xaec3('0x6')]),_0x51d61d);utils[_0xaec3('0x3')](util[_0xaec3('0x4')](_0xaec3('0xe'),_0x51d61d[_0xaec3('0x6')],_0x51d61d[_0xaec3('0xf')],_0x51d61d[_0xaec3('0x10')]));if(_0x51d61d[_0xaec3('0xf')][_0xaec3('0x11')]()==_0xaec3('0x12')&&_[_0xaec3('0x13')](_0x51d61d[_0xaec3('0x10')]['toLowerCase'](),'cdr(routeid)')){var _0x73df28=_0x51d61d['appdata']['split']('=');dials[_0x51d61d[_0xaec3('0x6')]]={'routeId':_0x73df28[0x1]};}}catch(_0x4ed717){utils[_0xaec3('0x14')](util[_0xaec3('0x4')](_0xaec3('0xd'),_0x51d61d['uniqueid']),_0x4ed717);}};exports[_0xaec3('0x15')]=function(_0x43198c){try{utils[_0xaec3('0xc')](util[_0xaec3('0x4')](_0xaec3('0x16'),_0x43198c[_0xaec3('0x6')]),_0x43198c);if(!_[_0xaec3('0x17')](_0x43198c[_0xaec3('0x18')][_0xaec3('0x19')])){utils[_0xaec3('0x3')](util[_0xaec3('0x4')](_0xaec3('0x1a'),_0x43198c[_0xaec3('0x6')],_0x43198c[_0xaec3('0x1b')]));dials[_0x43198c[_0xaec3('0x6')]]={'routeId':_0x43198c[_0xaec3('0x1b')]};}}catch(_0x52f842){utils[_0xaec3('0x14')](util[_0xaec3('0x4')](_0xaec3('0x16'),_0x43198c[_0xaec3('0x6')]),_0x52f842);}};exports[_0xaec3('0x1c')]=function(_0x99be5){try{if(!_['isNil'](dials[_0x99be5[_0xaec3('0x6')]])){utils['debug'](util['format'](_0xaec3('0x1d'),_0x99be5[_0xaec3('0x6')]),_0x99be5);dials[_0x99be5['uniqueid']]=_[_0xaec3('0x1e')](dials[_0x99be5[_0xaec3('0x6')]],_0x99be5);dials[_0x99be5[_0xaec3('0x6')]][_0xaec3('0x1f')]=utils['now']();dials[_0x99be5[_0xaec3('0x6')]][_0xaec3('0x20')]='called';utils[_0xaec3('0x3')](util[_0xaec3('0x4')](_0xaec3('0x21'),_0x99be5[_0xaec3('0x6')],dials[_0x99be5[_0xaec3('0x6')]][_0xaec3('0x1f')]));}}catch(_0x4c55f8){utils[_0xaec3('0x14')](util[_0xaec3('0x4')](_0xaec3('0x1d'),_0x99be5['uniqueid']),_0x4c55f8);}};exports[_0xaec3('0x22')]=function(_0x52adcb){try{if(!_[_0xaec3('0x17')](dials[_0x52adcb[_0xaec3('0x6')]])){utils[_0xaec3('0xc')](util[_0xaec3('0x4')](_0xaec3('0x23'),_0x52adcb['uniqueid']),_0x52adcb);dials[_0x52adcb['uniqueid']][_0xaec3('0x9')]=_0x52adcb[_0xaec3('0x9')];if(_0x52adcb[_0xaec3('0x9')]==_0xaec3('0x24')){dials[_0x52adcb[_0xaec3('0x6')]]=_[_0xaec3('0x1e')](dials[_0x52adcb[_0xaec3('0x6')]],_0x52adcb);dials[_0x52adcb[_0xaec3('0x6')]]['answertime']=utils['now']();dials[_0x52adcb[_0xaec3('0x6')]][_0xaec3('0x20')]=_0xaec3('0x25');utils[_0xaec3('0x3')](util[_0xaec3('0x4')](_0xaec3('0x26'),_0x52adcb['uniqueid'],_0x52adcb[_0xaec3('0x9')],dials[_0x52adcb[_0xaec3('0x6')]]['answertime']));}else{utils[_0xaec3('0x3')](util[_0xaec3('0x4')]('[%s][dials][dialend]\x20dialstatus:%s',_0x52adcb[_0xaec3('0x6')],_0x52adcb[_0xaec3('0x9')]));}}}catch(_0x106ff5){utils['error'](util[_0xaec3('0x4')](_0xaec3('0x23'),_0x52adcb[_0xaec3('0x6')]),_0x106ff5);}};exports['hangup']=function(_0x3821f3){try{if(!_[_0xaec3('0x17')](dials[_0x3821f3[_0xaec3('0x6')]])){utils[_0xaec3('0xc')](util['format'](_0xaec3('0x27'),_0x3821f3[_0xaec3('0x6')]),_0x3821f3);utils['info'](util[_0xaec3('0x4')](_0xaec3('0x28'),_0x3821f3[_0xaec3('0x6')],_0x3821f3[_0xaec3('0x8')],_0x3821f3['calleridname'],_0x3821f3['cause-txt']));dials[_0x3821f3['uniqueid']]=_[_0xaec3('0x1e')](dials[_0x3821f3['uniqueid']],{'endtime':utils[_0xaec3('0x29')](),'lastevent':_0xaec3('0x2a')});dials[_0x3821f3['uniqueid']][_0xaec3('0x2b')]=utils[_0xaec3('0x2c')](dials[_0x3821f3[_0xaec3('0x6')]][_0xaec3('0x2d')],dials[_0x3821f3['uniqueid']][_0xaec3('0x1f')]);dials[_0x3821f3[_0xaec3('0x6')]][_0xaec3('0x2e')]=utils['diffTime'](dials[_0x3821f3['uniqueid']][_0xaec3('0x2f')]||dials[_0x3821f3[_0xaec3('0x6')]][_0xaec3('0x2d')],dials[_0x3821f3[_0xaec3('0x6')]][_0xaec3('0x1f')]);dials[_0x3821f3[_0xaec3('0x6')]][_0xaec3('0x30')]=dials[_0x3821f3['uniqueid']][_0xaec3('0x2f')]?utils[_0xaec3('0x2c')](dials[_0x3821f3[_0xaec3('0x6')]][_0xaec3('0x2d')],dials[_0x3821f3[_0xaec3('0x6')]][_0xaec3('0x2f')]):0x0;writeDB(dials[_0x3821f3[_0xaec3('0x6')]]);}}catch(_0x1224b6){utils['error'](util[_0xaec3('0x4')](_0xaec3('0x27'),_0x3821f3[_0xaec3('0x6')]),_0x1224b6);}};
\ No newline at end of file
index e6f6b76..6b3f433 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13ed=['util','xdr','env','production','local','asterisk','password','info','XDR\x20DISABLED','Asterisk\x20disabled\x20on\x20localhost','./agents.controller','./calls.controller','./queues.controller','./recordings.controller','./members.controller','./transfers.controller','connect','shutdown','fullybooted','error','close','managerevent','devicestatechange','debug','format','device','uniqueid','agentcalled','[%s][index][agentcalled]','agentringnoanswer','[%s][index][agentringnoanswer]','agentconnect','[%s][index][agentconnect]','agentcomplete','queuecallerabandon','[%s][index][queuecallerabandon]','[%s][index][queuecallerjoin]','queuecallerleave','[%s][index][queuecallerleave]','musiconholdstart','[%s][index][musiconholdstart]','musiconholdstop','[%s][index][musiconholdstop]','[%s][index][newstate]','newstate','[%s][index][hangup]','hangup','[%s][index][cdr]','[%s][index][blindtransfer]','blindtransfer','attendedtransfer','origtransfereruniqueid','[%s][index][attendedtransfer]','[%s][index][varset]','varset','newexten','[%s][index][newexten]','newchannel','[%s][index][newchannel]','dialbegin','[%s][index][dialbegin]','[%s]dialbegin','dialend','[%s][index][dialend]','./utils'];(function(_0x535dac,_0x12d678){var _0x21fc4b=function(_0x4b3cad){while(--_0x4b3cad){_0x535dac['push'](_0x535dac['shift']());}};_0x21fc4b(++_0x12d678);}(_0x13ed,0x1c6));var _0xd13e=function(_0x47b15f,_0x103e93){_0x47b15f=_0x47b15f-0x0;var _0x55bf25=_0x13ed[_0x47b15f];return _0x55bf25;};var AsteriskManager=require('asterisk-manager');var config=require('../../config/environment');var utils=require(_0xd13e('0x0'));var util=require(_0xd13e('0x1'));var isXDREnabled=config['xdr']&&config[_0xd13e('0x2')]['disabled']?!config[_0xd13e('0x2')]['disabled']:!![];var isProduction=config[_0xd13e('0x3')]===_0xd13e('0x4')||![];var isLocalAsterisk=config[_0xd13e('0x2')]&&config[_0xd13e('0x2')][_0xd13e('0x5')]===!![]||![];var ami=new AsteriskManager(config[_0xd13e('0x6')]['port'],config['asterisk']['ip'],config[_0xd13e('0x6')]['username'],config['asterisk'][_0xd13e('0x7')],!![]);ami['keepConnected']();if(!isXDREnabled){utils[_0xd13e('0x8')](_0xd13e('0x9'));}else if(!isProduction&&!isLocalAsterisk){utils[_0xd13e('0x8')](_0xd13e('0xa'));}else{var agents=require(_0xd13e('0xb'));var calls=require(_0xd13e('0xc'));var queues=require(_0xd13e('0xd'));var recordings=require(_0xd13e('0xe'));var members=require(_0xd13e('0xf'));var dials=require('./dials.controller');var transfers=require(_0xd13e('0x10'));var core=require('./core.controller');ami['on'](_0xd13e('0x11'),core[_0xd13e('0x11')]);ami['on'](_0xd13e('0x12'),core[_0xd13e('0x12')]);ami['on'](_0xd13e('0x13'),core[_0xd13e('0x13')]);ami['on']('error',core[_0xd13e('0x14')]);ami['on'](_0xd13e('0x15'),core[_0xd13e('0x15')]);ami['on'](_0xd13e('0x16'),core['managerevent']);ami['on'](_0xd13e('0x17'),function(_0xd422d0){try{utils[_0xd13e('0x18')](util[_0xd13e('0x19')]('[%s][index][devicestatechange]',_0xd422d0[_0xd13e('0x1a')]),_0xd422d0);members[_0xd13e('0x17')](_0xd422d0);}catch(_0x5f4aeb){utils[_0xd13e('0x14')](util[_0xd13e('0x19')]('[%s][index][devicestatechange]',_0xd422d0[_0xd13e('0x1a')]),_0x5f4aeb);}});ami['on']('agentcalled',function(_0x1818b5){try{utils['debug'](util[_0xd13e('0x19')]('[%s][index][agentcalled]',_0x1818b5[_0xd13e('0x1b')]),_0x1818b5);agents[_0xd13e('0x1c')](_0x1818b5);}catch(_0x5b22f7){utils[_0xd13e('0x14')](util[_0xd13e('0x19')](_0xd13e('0x1d'),_0x1818b5[_0xd13e('0x1b')]),_0x5b22f7);}});ami['on'](_0xd13e('0x1e'),function(_0x4b18f9){try{utils[_0xd13e('0x18')](util['format'](_0xd13e('0x1f'),_0x4b18f9[_0xd13e('0x1b')]),_0x4b18f9);agents[_0xd13e('0x1e')](_0x4b18f9);}catch(_0x11652c){utils[_0xd13e('0x14')](util[_0xd13e('0x19')](_0xd13e('0x1f'),_0x4b18f9[_0xd13e('0x1b')]),_0x11652c);}});ami['on'](_0xd13e('0x20'),function(_0x33c308){try{utils[_0xd13e('0x18')](util[_0xd13e('0x19')](_0xd13e('0x21'),_0x33c308[_0xd13e('0x1b')]),_0x33c308);agents[_0xd13e('0x20')](_0x33c308);queues['agentconnect'](_0x33c308);}catch(_0x1ab8b6){utils[_0xd13e('0x14')](util[_0xd13e('0x19')](_0xd13e('0x21'),_0x33c308[_0xd13e('0x1b')]),_0x1ab8b6);}});ami['on'](_0xd13e('0x22'),function(_0x286e42){try{utils[_0xd13e('0x18')](util[_0xd13e('0x19')]('[%s][index][agentcomplete]',_0x286e42[_0xd13e('0x1b')]),_0x286e42);agents[_0xd13e('0x22')](_0x286e42);queues[_0xd13e('0x22')](_0x286e42);members[_0xd13e('0x22')](_0x286e42);}catch(_0xbb0e4f){utils[_0xd13e('0x14')](util[_0xd13e('0x19')]('[%s][index][agentcomplete]',_0x286e42[_0xd13e('0x1b')]),_0xbb0e4f);}});ami['on'](_0xd13e('0x23'),function(_0x2b121c){try{utils[_0xd13e('0x18')](util['format'](_0xd13e('0x24'),_0x2b121c[_0xd13e('0x1b')]),_0x2b121c);agents[_0xd13e('0x23')](_0x2b121c);queues['queuecallerabandon'](_0x2b121c);}catch(_0x1dd6cf){utils[_0xd13e('0x14')](util[_0xd13e('0x19')](_0xd13e('0x24'),_0x2b121c['uniqueid']),_0x1dd6cf);}});ami['on']('queuecallerjoin',function(_0x2beb12){try{utils[_0xd13e('0x18')](util[_0xd13e('0x19')]('[%s][index][queuecallerjoin]',_0x2beb12[_0xd13e('0x1b')]),_0x2beb12);queues['queuecallerjoin'](_0x2beb12);recordings['queuecallerjoin'](_0x2beb12);}catch(_0x50a5ce){utils[_0xd13e('0x14')](util[_0xd13e('0x19')](_0xd13e('0x25'),_0x2beb12[_0xd13e('0x1b')]),_0x50a5ce);}});ami['on'](_0xd13e('0x26'),function(_0x3f294d){try{utils['debug'](util[_0xd13e('0x19')](_0xd13e('0x27'),_0x3f294d[_0xd13e('0x1b')]),_0x3f294d);queues[_0xd13e('0x26')](_0x3f294d);}catch(_0x389f14){utils['error'](util[_0xd13e('0x19')](_0xd13e('0x27'),_0x3f294d[_0xd13e('0x1b')]),_0x389f14);}});ami['on'](_0xd13e('0x28'),function(_0x310bb5){try{utils[_0xd13e('0x18')](util[_0xd13e('0x19')](_0xd13e('0x29'),_0x310bb5[_0xd13e('0x1b')]),_0x310bb5);queues[_0xd13e('0x28')](_0x310bb5);calls['musiconholdstart'](_0x310bb5);}catch(_0x125071){utils[_0xd13e('0x14')](util[_0xd13e('0x19')](_0xd13e('0x29'),_0x310bb5['uniqueid']),_0x125071);}});ami['on'](_0xd13e('0x2a'),function(_0x5d6470){try{utils[_0xd13e('0x18')](util[_0xd13e('0x19')](_0xd13e('0x2b'),_0x5d6470['uniqueid']),_0x5d6470);queues[_0xd13e('0x2a')](_0x5d6470);calls[_0xd13e('0x2a')](_0x5d6470);}catch(_0x4273c7){utils[_0xd13e('0x14')](util[_0xd13e('0x19')](_0xd13e('0x2b'),_0x5d6470[_0xd13e('0x1b')]),_0x4273c7);}});ami['on']('newstate',function(_0x2e289e){try{utils['debug'](util[_0xd13e('0x19')](_0xd13e('0x2c'),_0x2e289e[_0xd13e('0x1b')]),_0x2e289e);calls['newstate'](_0x2e289e);recordings[_0xd13e('0x2d')](_0x2e289e);}catch(_0x1a4cb0){utils[_0xd13e('0x14')](util[_0xd13e('0x19')](_0xd13e('0x2c'),_0x2e289e['uniqueid']),_0x1a4cb0);}});ami['on']('hangup',function(_0x25dc1f){try{utils['debug'](util[_0xd13e('0x19')](_0xd13e('0x2e'),_0x25dc1f[_0xd13e('0x1b')]),_0x25dc1f);calls[_0xd13e('0x2f')](_0x25dc1f);recordings['hangup'](_0x25dc1f);dials[_0xd13e('0x2f')](_0x25dc1f);agents[_0xd13e('0x2f')](_0x25dc1f);queues[_0xd13e('0x2f')](_0x25dc1f);}catch(_0x43e227){utils[_0xd13e('0x14')](util[_0xd13e('0x19')](_0xd13e('0x2e'),_0x25dc1f[_0xd13e('0x1b')]),_0x43e227);}});ami['on']('cdr',function(_0x10f104){try{utils[_0xd13e('0x18')](util['format']('[%s][index][cdr]',_0x10f104[_0xd13e('0x1b')]),_0x10f104);members['cdr'](_0x10f104);}catch(_0x16a795){utils[_0xd13e('0x14')](util[_0xd13e('0x19')](_0xd13e('0x30'),_0x10f104[_0xd13e('0x1b')]),_0x16a795);}});ami['on']('blindtransfer',function(_0x4a5be9){try{utils[_0xd13e('0x18')](util[_0xd13e('0x19')](_0xd13e('0x31'),_0x4a5be9['uniqueid']),_0x4a5be9);queues['blindtransfer'](_0x4a5be9);agents['blindtransfer'](_0x4a5be9);transfers[_0xd13e('0x32')](_0x4a5be9);recordings['blindtransfer'](_0x4a5be9);}catch(_0x4c1da2){utils[_0xd13e('0x14')](util['format']('[%s][index][blindtransfer]',_0x4a5be9[_0xd13e('0x1b')]),_0x4c1da2);}});ami['on'](_0xd13e('0x33'),function(_0x405d40){try{utils[_0xd13e('0x18')](util['format']('[%s][index][attendedtransfer]',_0x405d40[_0xd13e('0x34')]),_0x405d40);queues[_0xd13e('0x33')](_0x405d40);transfers['attendedtransfer'](_0x405d40);agents[_0xd13e('0x33')](_0x405d40);calls['attendedtransfer'](_0x405d40);}catch(_0x334ca5){utils[_0xd13e('0x14')](util[_0xd13e('0x19')](_0xd13e('0x35'),_0x405d40[_0xd13e('0x34')]),_0x334ca5);}});ami['on']('varset',function(_0x706523){try{utils[_0xd13e('0x18')](util['format'](_0xd13e('0x36'),_0x706523['uniqueid']),_0x706523);queues[_0xd13e('0x37')](_0x706523);recordings[_0xd13e('0x37')](_0x706523);calls['varset'](_0x706523);dials[_0xd13e('0x37')](_0x706523);}catch(_0x3b70f0){utils['error'](util['format'](_0xd13e('0x36'),_0x706523[_0xd13e('0x1b')]),_0x3b70f0);}});ami['on'](_0xd13e('0x38'),function(_0x9c518a){try{utils[_0xd13e('0x18')](util[_0xd13e('0x19')](_0xd13e('0x39'),_0x9c518a[_0xd13e('0x1b')]),_0x9c518a);calls['newexten'](_0x9c518a);recordings[_0xd13e('0x38')](_0x9c518a);dials[_0xd13e('0x38')](_0x9c518a);}catch(_0x335fff){utils[_0xd13e('0x14')](util[_0xd13e('0x19')](_0xd13e('0x39'),_0x9c518a[_0xd13e('0x1b')]),_0x335fff);}});ami['on'](_0xd13e('0x3a'),function(_0x4761b5){try{utils[_0xd13e('0x18')](util[_0xd13e('0x19')](_0xd13e('0x3b'),_0x4761b5[_0xd13e('0x1b')]),_0x4761b5);calls[_0xd13e('0x3a')](_0x4761b5);recordings['newchannel'](_0x4761b5);}catch(_0x52b06e){utils[_0xd13e('0x14')](util['format'](_0xd13e('0x3b'),_0x4761b5[_0xd13e('0x1b')]),_0x52b06e);}});ami['on'](_0xd13e('0x3c'),function(_0x50a0a1){try{utils[_0xd13e('0x18')](util['format'](_0xd13e('0x3d'),_0x50a0a1['uniqueid']),_0x50a0a1);dials[_0xd13e('0x3c')](_0x50a0a1);}catch(_0x346e01){utils['error'](util[_0xd13e('0x19')](_0xd13e('0x3e'),_0x50a0a1[_0xd13e('0x1b')]),_0x346e01);}});ami['on'](_0xd13e('0x3f'),function(_0x5db479){try{utils[_0xd13e('0x18')](util[_0xd13e('0x19')](_0xd13e('0x40'),_0x5db479['uniqueid']),_0x5db479);dials['dialend'](_0x5db479);}catch(_0x2c84e0){utils[_0xd13e('0x14')](util[_0xd13e('0x19')](_0xd13e('0x40'),_0x5db479[_0xd13e('0x1b')]),_0x2c84e0);}});}
\ No newline at end of file
+var _0x20f1=['xdr','disabled','env','production','local','asterisk','port','username','password','XDR\x20DISABLED','info','Asterisk\x20disabled\x20on\x20localhost','./agents.controller','./queues.controller','./recordings.controller','./dials.controller','./transfers.controller','connect','shutdown','fullybooted','error','close','managerevent','devicestatechange','format','[%s][index][devicestatechange]','device','agentcalled','debug','[%s][index][agentcalled]','agentringnoanswer','uniqueid','[%s][index][agentringnoanswer]','agentconnect','[%s][index][agentconnect]','agentcomplete','[%s][index][agentcomplete]','[%s][index][queuecallerabandon]','queuecallerabandon','[%s][index][queuecallerjoin]','queuecallerjoin','queuecallerleave','[%s][index][queuecallerleave]','musiconholdstart','[%s][index][musiconholdstart]','musiconholdstop','newstate','[%s][index][newstate]','hangup','[%s][index][hangup]','cdr','[%s][index][cdr]','blindtransfer','[%s][index][blindtransfer]','attendedtransfer','[%s][index][attendedtransfer]','origtransfereruniqueid','varset','[%s][index][varset]','newexten','[%s][index][newexten]','newchannel','[%s][index][newchannel]','[%s][index][dialbegin]','[%s][index][dialend]','dialend','asterisk-manager','../../config/environment','./utils','util'];(function(_0xa6a5d3,_0xceade7){var _0x6118d8=function(_0x4346a8){while(--_0x4346a8){_0xa6a5d3['push'](_0xa6a5d3['shift']());}};_0x6118d8(++_0xceade7);}(_0x20f1,0xce));var _0x120f=function(_0x2bc312,_0x4e3c3d){_0x2bc312=_0x2bc312-0x0;var _0x24214a=_0x20f1[_0x2bc312];return _0x24214a;};var AsteriskManager=require(_0x120f('0x0'));var config=require(_0x120f('0x1'));var utils=require(_0x120f('0x2'));var util=require(_0x120f('0x3'));var isXDREnabled=config['xdr']&&config[_0x120f('0x4')][_0x120f('0x5')]?!config[_0x120f('0x4')][_0x120f('0x5')]:!![];var isProduction=config[_0x120f('0x6')]===_0x120f('0x7')||![];var isLocalAsterisk=config[_0x120f('0x4')]&&config[_0x120f('0x4')][_0x120f('0x8')]===!![]||![];var ami=new AsteriskManager(config[_0x120f('0x9')][_0x120f('0xa')],config[_0x120f('0x9')]['ip'],config['asterisk'][_0x120f('0xb')],config[_0x120f('0x9')][_0x120f('0xc')],!![]);ami['keepConnected']();if(!isXDREnabled){utils['info'](_0x120f('0xd'));}else if(!isProduction&&!isLocalAsterisk){utils[_0x120f('0xe')](_0x120f('0xf'));}else{var agents=require(_0x120f('0x10'));var calls=require('./calls.controller');var queues=require(_0x120f('0x11'));var recordings=require(_0x120f('0x12'));var members=require('./members.controller');var dials=require(_0x120f('0x13'));var transfers=require(_0x120f('0x14'));var core=require('./core.controller');ami['on'](_0x120f('0x15'),core[_0x120f('0x15')]);ami['on'](_0x120f('0x16'),core['shutdown']);ami['on'](_0x120f('0x17'),core[_0x120f('0x17')]);ami['on'](_0x120f('0x18'),core['error']);ami['on']('close',core[_0x120f('0x19')]);ami['on'](_0x120f('0x1a'),core['managerevent']);ami['on'](_0x120f('0x1b'),function(_0x3c35cc){try{utils['debug'](util[_0x120f('0x1c')](_0x120f('0x1d'),_0x3c35cc['device']),_0x3c35cc);members[_0x120f('0x1b')](_0x3c35cc);}catch(_0x35e1be){utils['error'](util[_0x120f('0x1c')](_0x120f('0x1d'),_0x3c35cc[_0x120f('0x1e')]),_0x35e1be);}});ami['on'](_0x120f('0x1f'),function(_0x244bb5){try{utils[_0x120f('0x20')](util[_0x120f('0x1c')](_0x120f('0x21'),_0x244bb5['uniqueid']),_0x244bb5);agents[_0x120f('0x1f')](_0x244bb5);}catch(_0x38332d){utils['error'](util[_0x120f('0x1c')](_0x120f('0x21'),_0x244bb5['uniqueid']),_0x38332d);}});ami['on'](_0x120f('0x22'),function(_0xfcef89){try{utils[_0x120f('0x20')](util[_0x120f('0x1c')]('[%s][index][agentringnoanswer]',_0xfcef89[_0x120f('0x23')]),_0xfcef89);agents[_0x120f('0x22')](_0xfcef89);}catch(_0x4fd171){utils[_0x120f('0x18')](util['format'](_0x120f('0x24'),_0xfcef89['uniqueid']),_0x4fd171);}});ami['on'](_0x120f('0x25'),function(_0x2a392f){try{utils['debug'](util[_0x120f('0x1c')](_0x120f('0x26'),_0x2a392f[_0x120f('0x23')]),_0x2a392f);agents[_0x120f('0x25')](_0x2a392f);queues['agentconnect'](_0x2a392f);}catch(_0x4a97fe){utils[_0x120f('0x18')](util[_0x120f('0x1c')](_0x120f('0x26'),_0x2a392f[_0x120f('0x23')]),_0x4a97fe);}});ami['on'](_0x120f('0x27'),function(_0x4c469e){try{utils['debug'](util['format']('[%s][index][agentcomplete]',_0x4c469e['uniqueid']),_0x4c469e);agents[_0x120f('0x27')](_0x4c469e);queues[_0x120f('0x27')](_0x4c469e);members[_0x120f('0x27')](_0x4c469e);}catch(_0x252ba8){utils['error'](util[_0x120f('0x1c')](_0x120f('0x28'),_0x4c469e['uniqueid']),_0x252ba8);}});ami['on']('queuecallerabandon',function(_0x11000e){try{utils[_0x120f('0x20')](util['format'](_0x120f('0x29'),_0x11000e['uniqueid']),_0x11000e);agents[_0x120f('0x2a')](_0x11000e);queues[_0x120f('0x2a')](_0x11000e);}catch(_0x2bac23){utils['error'](util[_0x120f('0x1c')](_0x120f('0x29'),_0x11000e[_0x120f('0x23')]),_0x2bac23);}});ami['on']('queuecallerjoin',function(_0xf75801){try{utils['debug'](util[_0x120f('0x1c')](_0x120f('0x2b'),_0xf75801[_0x120f('0x23')]),_0xf75801);queues[_0x120f('0x2c')](_0xf75801);recordings[_0x120f('0x2c')](_0xf75801);}catch(_0x5407ac){utils[_0x120f('0x18')](util[_0x120f('0x1c')](_0x120f('0x2b'),_0xf75801[_0x120f('0x23')]),_0x5407ac);}});ami['on'](_0x120f('0x2d'),function(_0x32c08f){try{utils['debug'](util[_0x120f('0x1c')](_0x120f('0x2e'),_0x32c08f[_0x120f('0x23')]),_0x32c08f);queues[_0x120f('0x2d')](_0x32c08f);}catch(_0x4a2bcf){utils[_0x120f('0x18')](util[_0x120f('0x1c')](_0x120f('0x2e'),_0x32c08f[_0x120f('0x23')]),_0x4a2bcf);}});ami['on'](_0x120f('0x2f'),function(_0x431cb4){try{utils['debug'](util[_0x120f('0x1c')]('[%s][index][musiconholdstart]',_0x431cb4[_0x120f('0x23')]),_0x431cb4);queues['musiconholdstart'](_0x431cb4);calls[_0x120f('0x2f')](_0x431cb4);}catch(_0x239004){utils['error'](util[_0x120f('0x1c')](_0x120f('0x30'),_0x431cb4['uniqueid']),_0x239004);}});ami['on']('musiconholdstop',function(_0x15be81){try{utils[_0x120f('0x20')](util['format']('[%s][index][musiconholdstop]',_0x15be81[_0x120f('0x23')]),_0x15be81);queues[_0x120f('0x31')](_0x15be81);calls['musiconholdstop'](_0x15be81);}catch(_0x29277e){utils[_0x120f('0x18')](util['format']('[%s][index][musiconholdstop]',_0x15be81[_0x120f('0x23')]),_0x29277e);}});ami['on'](_0x120f('0x32'),function(_0x242403){try{utils['debug'](util[_0x120f('0x1c')](_0x120f('0x33'),_0x242403['uniqueid']),_0x242403);calls[_0x120f('0x32')](_0x242403);recordings[_0x120f('0x32')](_0x242403);}catch(_0x416efd){utils['error'](util[_0x120f('0x1c')]('[%s][index][newstate]',_0x242403[_0x120f('0x23')]),_0x416efd);}});ami['on'](_0x120f('0x34'),function(_0x37854c){try{utils[_0x120f('0x20')](util['format'](_0x120f('0x35'),_0x37854c['uniqueid']),_0x37854c);calls[_0x120f('0x34')](_0x37854c);recordings['hangup'](_0x37854c);dials[_0x120f('0x34')](_0x37854c);agents[_0x120f('0x34')](_0x37854c);queues[_0x120f('0x34')](_0x37854c);}catch(_0xd5addc){utils[_0x120f('0x18')](util[_0x120f('0x1c')](_0x120f('0x35'),_0x37854c[_0x120f('0x23')]),_0xd5addc);}});ami['on'](_0x120f('0x36'),function(_0x445650){try{utils[_0x120f('0x20')](util[_0x120f('0x1c')](_0x120f('0x37'),_0x445650[_0x120f('0x23')]),_0x445650);members[_0x120f('0x36')](_0x445650);}catch(_0x3ad1ad){utils[_0x120f('0x18')](util[_0x120f('0x1c')](_0x120f('0x37'),_0x445650[_0x120f('0x23')]),_0x3ad1ad);}});ami['on'](_0x120f('0x38'),function(_0x40d6b0){try{utils['debug'](util[_0x120f('0x1c')](_0x120f('0x39'),_0x40d6b0[_0x120f('0x23')]),_0x40d6b0);queues[_0x120f('0x38')](_0x40d6b0);agents[_0x120f('0x38')](_0x40d6b0);transfers[_0x120f('0x38')](_0x40d6b0);recordings['blindtransfer'](_0x40d6b0);}catch(_0x5529e4){utils['error'](util[_0x120f('0x1c')](_0x120f('0x39'),_0x40d6b0['uniqueid']),_0x5529e4);}});ami['on'](_0x120f('0x3a'),function(_0x28748a){try{utils[_0x120f('0x20')](util[_0x120f('0x1c')](_0x120f('0x3b'),_0x28748a['origtransfereruniqueid']),_0x28748a);queues[_0x120f('0x3a')](_0x28748a);transfers['attendedtransfer'](_0x28748a);agents['attendedtransfer'](_0x28748a);calls['attendedtransfer'](_0x28748a);}catch(_0x16b75d){utils[_0x120f('0x18')](util[_0x120f('0x1c')](_0x120f('0x3b'),_0x28748a[_0x120f('0x3c')]),_0x16b75d);}});ami['on'](_0x120f('0x3d'),function(_0x484500){try{utils[_0x120f('0x20')](util[_0x120f('0x1c')](_0x120f('0x3e'),_0x484500[_0x120f('0x23')]),_0x484500);queues[_0x120f('0x3d')](_0x484500);recordings['varset'](_0x484500);calls[_0x120f('0x3d')](_0x484500);dials['varset'](_0x484500);}catch(_0x367a0){utils[_0x120f('0x18')](util[_0x120f('0x1c')](_0x120f('0x3e'),_0x484500[_0x120f('0x23')]),_0x367a0);}});ami['on'](_0x120f('0x3f'),function(_0x1a710b){try{utils['debug'](util['format'](_0x120f('0x40'),_0x1a710b[_0x120f('0x23')]),_0x1a710b);calls[_0x120f('0x3f')](_0x1a710b);recordings[_0x120f('0x3f')](_0x1a710b);dials[_0x120f('0x3f')](_0x1a710b);}catch(_0x593378){utils[_0x120f('0x18')](util[_0x120f('0x1c')](_0x120f('0x40'),_0x1a710b[_0x120f('0x23')]),_0x593378);}});ami['on'](_0x120f('0x41'),function(_0x50b9ef){try{utils['debug'](util[_0x120f('0x1c')](_0x120f('0x42'),_0x50b9ef[_0x120f('0x23')]),_0x50b9ef);calls[_0x120f('0x41')](_0x50b9ef);recordings[_0x120f('0x41')](_0x50b9ef);}catch(_0x42b2a4){utils[_0x120f('0x18')](util[_0x120f('0x1c')](_0x120f('0x42'),_0x50b9ef['uniqueid']),_0x42b2a4);}});ami['on']('dialbegin',function(_0x913e0d){try{utils[_0x120f('0x20')](util[_0x120f('0x1c')](_0x120f('0x43'),_0x913e0d[_0x120f('0x23')]),_0x913e0d);dials['dialbegin'](_0x913e0d);}catch(_0xdf0f53){utils[_0x120f('0x18')](util[_0x120f('0x1c')]('[%s]dialbegin',_0x913e0d[_0x120f('0x23')]),_0xdf0f53);}});ami['on']('dialend',function(_0x3bbb95){try{utils[_0x120f('0x20')](util[_0x120f('0x1c')](_0x120f('0x44'),_0x3bbb95[_0x120f('0x23')]),_0x3bbb95);dials[_0x120f('0x45')](_0x3bbb95);}catch(_0x38a39e){utils[_0x120f('0x18')](util[_0x120f('0x1c')](_0x120f('0x44'),_0x3bbb95[_0x120f('0x23')]),_0x38a39e);}});}
\ No newline at end of file
index 335a8ec..1e6387b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d9e=['uniqueid','channel','data2','membername','getUserByInterface','interface','then','internal','request','CreateMemberReport','getUserByName','split','name','catch','error','[%s][members][writeDB]','some','startsWith','debug','[%s][members][devicestatechange]','device','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','state','INUSE','BUSY','now','agent','NOT_INUSE','isNil','exitAt','duration','diffTime','[%s][members][agentcomplete]','assign','data1','type','source','data3','destination','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','destinationchannel','[%s][members][cdr]','util','./utils','Local/_attended@transfer','Queue:','info','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s'];(function(_0x2cbc5d,_0x1d2845){var _0x467c8b=function(_0x4e5f53){while(--_0x4e5f53){_0x2cbc5d['push'](_0x2cbc5d['shift']());}};_0x467c8b(++_0x1d2845);}(_0x3d9e,0x181));var _0xe3d9=function(_0x3a6efd,_0x2a5102){_0x3a6efd=_0x3a6efd-0x0;var _0x487b9a=_0x3d9e[_0x3a6efd];return _0x487b9a;};'use strict';var _=require('lodash');var util=require(_0xe3d9('0x0'));var utils=require(_0xe3d9('0x1'));var members={};var exclude=[_0xe3d9('0x2'),_0xe3d9('0x3')];function writeDB(_0x3d8a09){utils[_0xe3d9('0x4')](util[_0xe3d9('0x5')](_0xe3d9('0x6'),_0x3d8a09[_0xe3d9('0x7')],_0x3d8a09['interface'],_0x3d8a09[_0xe3d9('0x8')],_0x3d8a09[_0xe3d9('0x9')],_0x3d8a09[_0xe3d9('0xa')],_0x3d8a09['type']));if(_0x3d8a09['interface']){utils[_0xe3d9('0xb')](_0x3d8a09[_0xe3d9('0xc')])[_0xe3d9('0xd')](function(_0x43f8b3){if(_0x43f8b3){_0x3d8a09[_0xe3d9('0xa')]=_0x43f8b3['name'];_0x3d8a09[_0xe3d9('0xe')]=_0x43f8b3['internal'];utils[_0xe3d9('0xf')](_0xe3d9('0x10'),_0x3d8a09);}else{utils[_0xe3d9('0x11')](_0x3d8a09[_0xe3d9('0xc')][_0xe3d9('0x12')]('/')[0x1])['then'](function(_0x29746a){if(_0x29746a){_0x3d8a09[_0xe3d9('0xa')]=_0x29746a[_0xe3d9('0x13')];_0x3d8a09[_0xe3d9('0xe')]=_0x29746a[_0xe3d9('0xe')];utils['request']('CreateMemberReport',_0x3d8a09);}});}})[_0xe3d9('0x14')](function(_0x4c96cc){utils[_0xe3d9('0x15')](util[_0xe3d9('0x5')](_0xe3d9('0x16'),_0x3d8a09[_0xe3d9('0x7')]),_0x4c96cc);});}delete members[_0x3d8a09[_0xe3d9('0xc')]];}function startsWith(_0xde08c3,_0x3d2860){return _[_0xe3d9('0x17')](_0xde08c3,function(_0x344efc){return _[_0xe3d9('0x18')](_0x3d2860,_0x344efc);});}exports['devicestatechange']=function(_0x5093db){try{utils[_0xe3d9('0x19')](util['format'](_0xe3d9('0x1a'),members[_0x5093db[_0xe3d9('0x1b')]]?members[_0x5093db[_0xe3d9('0x1b')]][_0xe3d9('0x7')]:_0x5093db[_0xe3d9('0x1b')]),_0x5093db);utils['info'](util[_0xe3d9('0x5')](_0xe3d9('0x1c'),members[_0x5093db['device']]?members[_0x5093db[_0xe3d9('0x1b')]][_0xe3d9('0x7')]:_0x5093db['device'],_0x5093db[_0xe3d9('0x1d')],_0x5093db[_0xe3d9('0x1b')]));switch(_0x5093db[_0xe3d9('0x1d')]){case _0xe3d9('0x1e'):case _0xe3d9('0x1f'):if(!startsWith(exclude,_0x5093db[_0xe3d9('0x1b')])){members[_0x5093db[_0xe3d9('0x1b')]]={'channel':'voice','interface':_0x5093db[_0xe3d9('0x1b')],'type':'TALKING','enterAt':utils[_0xe3d9('0x20')](),'role':_0xe3d9('0x21')};}break;case _0xe3d9('0x22'):if(!_[_0xe3d9('0x23')](members[_0x5093db[_0xe3d9('0x1b')]])){members[_0x5093db[_0xe3d9('0x1b')]][_0xe3d9('0x24')]=utils[_0xe3d9('0x20')]();members[_0x5093db[_0xe3d9('0x1b')]][_0xe3d9('0x25')]=utils[_0xe3d9('0x26')](members[_0x5093db[_0xe3d9('0x1b')]][_0xe3d9('0x24')],members[_0x5093db[_0xe3d9('0x1b')]]['enterAt']);if(members[_0x5093db[_0xe3d9('0x1b')]][_0xe3d9('0x7')]){writeDB(members[_0x5093db[_0xe3d9('0x1b')]]);}}break;default:break;}}catch(_0x3b5648){utils['error'](util[_0xe3d9('0x5')](_0xe3d9('0x1a'),members[_0x5093db['device']]?members[_0x5093db[_0xe3d9('0x1b')]][_0xe3d9('0x7')]:_0x5093db['device']),_0x3b5648);}};exports['agentcomplete']=function(_0x4bb21c){try{if(!_[_0xe3d9('0x23')](members[_0x4bb21c[_0xe3d9('0xc')]])){utils['debug'](util[_0xe3d9('0x5')](_0xe3d9('0x27'),_0x4bb21c['uniqueid']),_0x4bb21c);utils[_0xe3d9('0x4')](util[_0xe3d9('0x5')]('[%s][members][agentcomplete]\x20interface:%s\x20queue:%s',_0x4bb21c[_0xe3d9('0x7')],_0x4bb21c[_0xe3d9('0xc')],_0x4bb21c['queue']));members[_0x4bb21c['interface']]=_[_0xe3d9('0x28')](members[_0x4bb21c[_0xe3d9('0xc')]],{'data4':_0x4bb21c['queue'],'uniqueid':_0x4bb21c[_0xe3d9('0x7')]});}}catch(_0xdabf4){utils[_0xe3d9('0x15')](util[_0xe3d9('0x5')](_0xe3d9('0x27'),_0x4bb21c[_0xe3d9('0x7')]),_0xdabf4);}};exports['cdr']=function(_0x22cb98){try{utils['debug'](util['format']('[%s][members][cdr]',_0x22cb98[_0xe3d9('0x7')]),_0x22cb98);if(_0x22cb98[_0xe3d9('0x8')]){var _0x104616=_0x22cb98[_0xe3d9('0x8')][_0xe3d9('0x12')]('-')[0x0];if(!_[_0xe3d9('0x23')](members[_0x104616])){members[_0x104616]=_[_0xe3d9('0x28')](members[_0x104616],{'data1':members[_0x104616][_0xe3d9('0x29')]||_0x22cb98[_0xe3d9('0x2a')],'data2':members[_0x104616]['data2']||_0x22cb98[_0xe3d9('0x2b')],'data3':members[_0x104616][_0xe3d9('0x2c')]||_0x22cb98[_0xe3d9('0x2d')],'uniqueid':members[_0x104616]['uniqueid']||_0x22cb98[_0xe3d9('0x7')]});utils[_0xe3d9('0x4')](util[_0xe3d9('0x5')](_0xe3d9('0x2e'),_0x22cb98[_0xe3d9('0x7')],members[_0x104616][_0xe3d9('0x29')],members[_0x104616]['data2'],members[_0x104616][_0xe3d9('0x2c')]));if(members[_0x104616]['exitAt']){writeDB(members[_0x104616]);}}}if(_0x22cb98[_0xe3d9('0x2f')]){var _0x354cef=_0x22cb98[_0xe3d9('0x2f')]['split']('-')[0x0];if(!_[_0xe3d9('0x23')](members[_0x354cef])){members[_0x354cef]=_[_0xe3d9('0x28')](members[_0x354cef],{'data1':members[_0x354cef]['data1']||_0x22cb98[_0xe3d9('0x2a')],'data2':members[_0x354cef][_0xe3d9('0x9')]||_0x22cb98[_0xe3d9('0x2b')],'data3':members[_0x354cef][_0xe3d9('0x2c')]||_0x22cb98[_0xe3d9('0x2d')],'uniqueid':members[_0x354cef][_0xe3d9('0x7')]||_0x22cb98[_0xe3d9('0x7')]});utils['info'](util[_0xe3d9('0x5')](_0xe3d9('0x2e'),_0x22cb98[_0xe3d9('0x7')],members[_0x354cef][_0xe3d9('0x29')],members[_0x354cef]['data2'],members[_0x354cef][_0xe3d9('0x2c')]));if(members[_0x354cef][_0xe3d9('0x24')]){writeDB(members[_0x354cef]);}}}}catch(_0x1b408f){utils[_0xe3d9('0x15')](util['format'](_0xe3d9('0x30'),_0x22cb98[_0xe3d9('0x7')]),_0x1b408f);}};
\ No newline at end of file
+var _0xae4a=['lodash','util','Local/_attended@transfer','Queue:','info','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','uniqueid','interface','channel','data2','membername','type','getUserByInterface','then','name','internal','request','CreateMemberReport','getUserByName','split','catch','[%s][members][writeDB]','some','startsWith','devicestatechange','debug','[%s][members][devicestatechange]','device','state','INUSE','BUSY','voice','TALKING','now','agent','isNil','exitAt','diffTime','enterAt','error','agentcomplete','[%s][members][agentcomplete]','queue','cdr','data1','source','data3','destination','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','destinationchannel','assign'];(function(_0x249d04,_0x5b88ae){var _0x2c4415=function(_0x188149){while(--_0x188149){_0x249d04['push'](_0x249d04['shift']());}};_0x2c4415(++_0x5b88ae);}(_0xae4a,0x68));var _0xaae4=function(_0x1ea453,_0x5d757a){_0x1ea453=_0x1ea453-0x0;var _0xbcd27b=_0xae4a[_0x1ea453];return _0xbcd27b;};'use strict';var _=require(_0xaae4('0x0'));var util=require(_0xaae4('0x1'));var utils=require('./utils');var members={};var exclude=[_0xaae4('0x2'),_0xaae4('0x3')];function writeDB(_0x4fdcd0){utils[_0xaae4('0x4')](util[_0xaae4('0x5')](_0xaae4('0x6'),_0x4fdcd0[_0xaae4('0x7')],_0x4fdcd0[_0xaae4('0x8')],_0x4fdcd0[_0xaae4('0x9')],_0x4fdcd0[_0xaae4('0xa')],_0x4fdcd0[_0xaae4('0xb')],_0x4fdcd0[_0xaae4('0xc')]));if(_0x4fdcd0[_0xaae4('0x8')]){utils[_0xaae4('0xd')](_0x4fdcd0[_0xaae4('0x8')])[_0xaae4('0xe')](function(_0x4b47c2){if(_0x4b47c2){_0x4fdcd0['membername']=_0x4b47c2[_0xaae4('0xf')];_0x4fdcd0[_0xaae4('0x10')]=_0x4b47c2[_0xaae4('0x10')];utils[_0xaae4('0x11')](_0xaae4('0x12'),_0x4fdcd0);}else{utils[_0xaae4('0x13')](_0x4fdcd0[_0xaae4('0x8')][_0xaae4('0x14')]('/')[0x1])[_0xaae4('0xe')](function(_0x3e675c){if(_0x3e675c){_0x4fdcd0[_0xaae4('0xb')]=_0x3e675c[_0xaae4('0xf')];_0x4fdcd0[_0xaae4('0x10')]=_0x3e675c[_0xaae4('0x10')];utils[_0xaae4('0x11')](_0xaae4('0x12'),_0x4fdcd0);}});}})[_0xaae4('0x15')](function(_0x419ec2){utils['error'](util[_0xaae4('0x5')](_0xaae4('0x16'),_0x4fdcd0[_0xaae4('0x7')]),_0x419ec2);});}delete members[_0x4fdcd0[_0xaae4('0x8')]];}function startsWith(_0x30ee7e,_0x56bbab){return _[_0xaae4('0x17')](_0x30ee7e,function(_0x590d43){return _[_0xaae4('0x18')](_0x56bbab,_0x590d43);});}exports[_0xaae4('0x19')]=function(_0x4c99b8){try{utils[_0xaae4('0x1a')](util[_0xaae4('0x5')](_0xaae4('0x1b'),members[_0x4c99b8['device']]?members[_0x4c99b8[_0xaae4('0x1c')]][_0xaae4('0x7')]:_0x4c99b8[_0xaae4('0x1c')]),_0x4c99b8);utils['info'](util[_0xaae4('0x5')]('[%s][members][devicestatechange]\x20state:%s\x20interface:%s',members[_0x4c99b8[_0xaae4('0x1c')]]?members[_0x4c99b8[_0xaae4('0x1c')]][_0xaae4('0x7')]:_0x4c99b8[_0xaae4('0x1c')],_0x4c99b8[_0xaae4('0x1d')],_0x4c99b8[_0xaae4('0x1c')]));switch(_0x4c99b8['state']){case _0xaae4('0x1e'):case _0xaae4('0x1f'):if(!startsWith(exclude,_0x4c99b8['device'])){members[_0x4c99b8[_0xaae4('0x1c')]]={'channel':_0xaae4('0x20'),'interface':_0x4c99b8[_0xaae4('0x1c')],'type':_0xaae4('0x21'),'enterAt':utils[_0xaae4('0x22')](),'role':_0xaae4('0x23')};}break;case'NOT_INUSE':if(!_[_0xaae4('0x24')](members[_0x4c99b8[_0xaae4('0x1c')]])){members[_0x4c99b8[_0xaae4('0x1c')]][_0xaae4('0x25')]=utils[_0xaae4('0x22')]();members[_0x4c99b8[_0xaae4('0x1c')]]['duration']=utils[_0xaae4('0x26')](members[_0x4c99b8[_0xaae4('0x1c')]]['exitAt'],members[_0x4c99b8[_0xaae4('0x1c')]][_0xaae4('0x27')]);if(members[_0x4c99b8[_0xaae4('0x1c')]][_0xaae4('0x7')]){writeDB(members[_0x4c99b8['device']]);}}break;default:break;}}catch(_0xb7c974){utils[_0xaae4('0x28')](util[_0xaae4('0x5')]('[%s][members][devicestatechange]',members[_0x4c99b8[_0xaae4('0x1c')]]?members[_0x4c99b8[_0xaae4('0x1c')]][_0xaae4('0x7')]:_0x4c99b8[_0xaae4('0x1c')]),_0xb7c974);}};exports[_0xaae4('0x29')]=function(_0x5610f1){try{if(!_[_0xaae4('0x24')](members[_0x5610f1[_0xaae4('0x8')]])){utils[_0xaae4('0x1a')](util[_0xaae4('0x5')](_0xaae4('0x2a'),_0x5610f1[_0xaae4('0x7')]),_0x5610f1);utils[_0xaae4('0x4')](util[_0xaae4('0x5')]('[%s][members][agentcomplete]\x20interface:%s\x20queue:%s',_0x5610f1[_0xaae4('0x7')],_0x5610f1[_0xaae4('0x8')],_0x5610f1[_0xaae4('0x2b')]));members[_0x5610f1[_0xaae4('0x8')]]=_['assign'](members[_0x5610f1[_0xaae4('0x8')]],{'data4':_0x5610f1['queue'],'uniqueid':_0x5610f1[_0xaae4('0x7')]});}}catch(_0x1baa5e){utils['error'](util['format']('[%s][members][agentcomplete]',_0x5610f1['uniqueid']),_0x1baa5e);}};exports[_0xaae4('0x2c')]=function(_0x194d78){try{utils['debug'](util[_0xaae4('0x5')]('[%s][members][cdr]',_0x194d78[_0xaae4('0x7')]),_0x194d78);if(_0x194d78[_0xaae4('0x9')]){var _0x3b1998=_0x194d78[_0xaae4('0x9')]['split']('-')[0x0];if(!_[_0xaae4('0x24')](members[_0x3b1998])){members[_0x3b1998]=_['assign'](members[_0x3b1998],{'data1':members[_0x3b1998][_0xaae4('0x2d')]||_0x194d78['type'],'data2':members[_0x3b1998][_0xaae4('0xa')]||_0x194d78[_0xaae4('0x2e')],'data3':members[_0x3b1998][_0xaae4('0x2f')]||_0x194d78[_0xaae4('0x30')],'uniqueid':members[_0x3b1998][_0xaae4('0x7')]||_0x194d78[_0xaae4('0x7')]});utils[_0xaae4('0x4')](util['format'](_0xaae4('0x31'),_0x194d78['uniqueid'],members[_0x3b1998][_0xaae4('0x2d')],members[_0x3b1998][_0xaae4('0xa')],members[_0x3b1998][_0xaae4('0x2f')]));if(members[_0x3b1998][_0xaae4('0x25')]){writeDB(members[_0x3b1998]);}}}if(_0x194d78['destinationchannel']){var _0x5984d7=_0x194d78[_0xaae4('0x32')][_0xaae4('0x14')]('-')[0x0];if(!_[_0xaae4('0x24')](members[_0x5984d7])){members[_0x5984d7]=_[_0xaae4('0x33')](members[_0x5984d7],{'data1':members[_0x5984d7][_0xaae4('0x2d')]||_0x194d78['type'],'data2':members[_0x5984d7]['data2']||_0x194d78['source'],'data3':members[_0x5984d7]['data3']||_0x194d78[_0xaae4('0x30')],'uniqueid':members[_0x5984d7][_0xaae4('0x7')]||_0x194d78['uniqueid']});utils['info'](util['format'](_0xaae4('0x31'),_0x194d78[_0xaae4('0x7')],members[_0x5984d7][_0xaae4('0x2d')],members[_0x5984d7]['data2'],members[_0x5984d7][_0xaae4('0x2f')]));if(members[_0x5984d7][_0xaae4('0x25')]){writeDB(members[_0x5984d7]);}}}}catch(_0x3fbd3b){utils[_0xaae4('0x28')](util[_0xaae4('0x5')]('[%s][members][cdr]',_0x194d78[_0xaae4('0x7')]),_0x3fbd3b);}};
\ No newline at end of file
index 5dcbbe5..7757d00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32b2=['EXITWITHKEY','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','[%s][queues][queuecallerabandon]','ABANDONED','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','queuecallerleave','connectedlinenum','queuecallerleaveAt','diffTime','connectedlinename','[%s][queues][queuecallerleave]','agentconnect','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','membername','assigned','destaccountcode','[%s][queues][agentconnect]','[%s][queues][agentcomplete]','reason','transfer','TRANSFER','COMPLETEDBY','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','blindtransfer','transfereeuniqueid','[%s][queues][blindtransfer]','transfertype','transferexten','extension','BLINDTRANSFER','attendedtransfer','[%s][queues][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfererlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','ATTENDED','origtransfererexten','transferuniqueid','ATTENDEDTRANSFER','transfereelinkedid','queuecallerenterreason','clone','transfertargetuniqueid','calleridnum','calleridname','queuecallerjoinAt','holdtime','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','secondtransfereruniqueid','[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','secondtransfererexten','transfertargetlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','musiconholdstart','[%s][queues][musiconholdstart]','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','musiconholdstartAt','[%s][queues][musiconholdstop]','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','lodash','util','info','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','uniqueid','channel','queue','lastAssignedTo','accountcode','queuecallerexitreason','then','type','request','transfereduniqueid','queuecallerjoin','debug','format','[%s][queues][queuecallerjoin]','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','position','assign','now','error','isNil','[%s][queues][hangup]','queuecallerabandon','queuecallerexit','queuecallercomplete','queuecallercompleteAt','COMPLETEDBYAGENT','name','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','varset','[%s][queues][varset]','queuestatus','CONTINUE','queuecallerabandonAt','queuecallerexitAt','value','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','variable','queueposition'];(function(_0x540c99,_0x3ea1b4){var _0x10db11=function(_0x4723ab){while(--_0x4723ab){_0x540c99['push'](_0x540c99['shift']());}};_0x10db11(++_0x3ea1b4);}(_0x32b2,0x10b));var _0x232b=function(_0x375c0b,_0x567d67){_0x375c0b=_0x375c0b-0x0;var _0x4c4bec=_0x32b2[_0x375c0b];return _0x4c4bec;};'use strict';var _=require(_0x232b('0x0'));var util=require(_0x232b('0x1'));var utils=require('./utils');var queues={};function writeDB(_0x219d75){utils[_0x232b('0x2')](util['format'](_0x232b('0x3'),_0x219d75[_0x232b('0x4')],_0x219d75[_0x232b('0x5')],_0x219d75[_0x232b('0x6')],_0x219d75[_0x232b('0x7')],_0x219d75['calleridnum'],_0x219d75[_0x232b('0x8')],_0x219d75[_0x232b('0x9')]));if(_0x219d75['queue']){utils['getVoiceQueueByName'](_0x219d75[_0x232b('0x6')])[_0x232b('0xa')](function(_0x1b100b){if(_0x1b100b){_0x219d75['type']=_0x1b100b[_0x232b('0xb')];}utils[_0x232b('0xc')]('CreateVoiceQueueReport',_0x219d75);});}else{utils[_0x232b('0xc')]('CreateVoiceQueueReport',_0x219d75);}if(_0x219d75[_0x232b('0xd')]){delete queues[_0x219d75[_0x232b('0xd')]];}else{delete queues[_0x219d75[_0x232b('0x4')]];}}exports[_0x232b('0xe')]=function(_0x5b7c3d){try{utils[_0x232b('0xf')](util[_0x232b('0x10')](_0x232b('0x11'),_0x5b7c3d[_0x232b('0x4')]),_0x5b7c3d);utils['info'](util[_0x232b('0x10')](_0x232b('0x12'),_0x5b7c3d[_0x232b('0x4')],_0x5b7c3d[_0x232b('0x6')],_0x5b7c3d[_0x232b('0x13')]));queues[_0x5b7c3d[_0x232b('0x4')]]=_[_0x232b('0x14')](_0x5b7c3d,{'originalposition':_0x5b7c3d[_0x232b('0x13')],'queuecallerjoinAt':utils[_0x232b('0x15')](),'mohtime':0x0});}catch(_0x6b2cd0){utils[_0x232b('0x16')](util[_0x232b('0x10')]('[%s][queues][queuecallerjoin]',_0x5b7c3d[_0x232b('0x4')]),_0x6b2cd0);}};exports['hangup']=function(_0x472897){try{if(!_[_0x232b('0x17')](queues[_0x472897['uniqueid']])){utils[_0x232b('0xf')](util[_0x232b('0x10')](_0x232b('0x18'),_0x472897[_0x232b('0x4')]),_0x472897);if(queues[_0x472897[_0x232b('0x4')]]['queuecallerleaveAt']){if(!queues[_0x472897[_0x232b('0x4')]][_0x232b('0x19')]&&!queues[_0x472897[_0x232b('0x4')]][_0x232b('0x1a')]){queues[_0x472897[_0x232b('0x4')]][_0x232b('0x1b')]=!![];queues[_0x472897[_0x232b('0x4')]][_0x232b('0x1c')]=utils[_0x232b('0x15')]();queues[_0x472897[_0x232b('0x4')]][_0x232b('0x9')]=_0x232b('0x1d');}utils[_0x232b('0x2')](util['format']('[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s',_0x472897[_0x232b('0x4')],queues[_0x472897[_0x232b('0x4')]][_0x232b('0x1e')],queues[_0x472897[_0x232b('0x4')]][_0x232b('0x9')]));writeDB(queues[_0x472897[_0x232b('0x4')]]);}else if(queues[_0x472897[_0x232b('0x4')]]['transfereduniqueid']){utils[_0x232b('0x2')](util[_0x232b('0x10')](_0x232b('0x1f'),_0x472897[_0x232b('0x4')],queues[_0x472897['uniqueid']][_0x232b('0x1e')],queues[_0x472897[_0x232b('0x4')]][_0x232b('0xd')]));queues[queues[_0x472897[_0x232b('0x4')]][_0x232b('0xd')]]=queues[_0x472897[_0x232b('0x4')]];queues[queues[_0x472897[_0x232b('0x4')]][_0x232b('0xd')]]['queuecallerenterreason']=0x2;delete queues[_0x472897[_0x232b('0x4')]];}}}catch(_0x9ea11f){utils[_0x232b('0x16')](util['format'](_0x232b('0x18'),_0x472897[_0x232b('0x4')]),_0x9ea11f);}};exports[_0x232b('0x20')]=function(_0x283c2d){try{utils[_0x232b('0xf')](util[_0x232b('0x10')](_0x232b('0x21'),_0x283c2d['uniqueid']),_0x283c2d);if(!_[_0x232b('0x17')](_0x283c2d['variable'][_0x232b('0x22')])&&_0x283c2d['value']['toUpperCase']()!==_0x232b('0x23')){if(!_[_0x232b('0x17')](queues[_0x283c2d[_0x232b('0x4')]])){queues[_0x283c2d[_0x232b('0x4')]][_0x232b('0x19')]=![];queues[_0x283c2d[_0x232b('0x4')]][_0x232b('0x24')]=null;queues[_0x283c2d[_0x232b('0x4')]][_0x232b('0x1a')]=!![];queues[_0x283c2d[_0x232b('0x4')]][_0x232b('0x25')]=utils[_0x232b('0x15')]();queues[_0x283c2d[_0x232b('0x4')]]['queuecallerexitreason']=_0x283c2d[_0x232b('0x26')]['toUpperCase']();utils[_0x232b('0x2')](util['format'](_0x232b('0x27'),_0x283c2d[_0x232b('0x4')],queues[_0x283c2d[_0x232b('0x4')]]['name'],_0x283c2d['value'],queues[_0x283c2d[_0x232b('0x4')]][_0x232b('0x9')]));writeDB(queues[_0x283c2d[_0x232b('0x4')]]);}}else if(!_[_0x232b('0x17')](_0x283c2d[_0x232b('0x28')][_0x232b('0x29')])){if(!_[_0x232b('0x17')](queues[_0x283c2d[_0x232b('0x4')]])&&!queues[_0x283c2d[_0x232b('0x4')]][_0x232b('0x19')]){queues[_0x283c2d[_0x232b('0x4')]]['queuecallerabandon']=![];queues[_0x283c2d[_0x232b('0x4')]]['queuecallerabandonAt']=null;queues[_0x283c2d['uniqueid']][_0x232b('0x1a')]=!![];queues[_0x283c2d[_0x232b('0x4')]][_0x232b('0x25')]=utils[_0x232b('0x15')]();queues[_0x283c2d[_0x232b('0x4')]][_0x232b('0x9')]=_0x232b('0x2a');utils[_0x232b('0x2')](util[_0x232b('0x10')](_0x232b('0x2b'),_0x283c2d[_0x232b('0x4')],queues[_0x283c2d['uniqueid']][_0x232b('0x1e')],_0x283c2d['value'],queues[_0x283c2d['uniqueid']][_0x232b('0x9')]));}}}catch(_0x30c64d){utils['error'](util[_0x232b('0x10')]('[%s][queues][varset]',_0x283c2d['uniqueid']),_0x30c64d);}};exports['queuecallerabandon']=function(_0x49d04d){try{if(!_['isNil'](queues[_0x49d04d[_0x232b('0x4')]])){utils[_0x232b('0xf')](util[_0x232b('0x10')](_0x232b('0x2c'),_0x49d04d[_0x232b('0x4')]),_0x49d04d);queues[_0x49d04d['uniqueid']][_0x232b('0x1a')]=![];queues[_0x49d04d[_0x232b('0x4')]]['queuecallerexitAt']=null;queues[_0x49d04d['uniqueid']]['queuecallerabandon']=!![];queues[_0x49d04d[_0x232b('0x4')]]['queuecallerabandonAt']=utils[_0x232b('0x15')]();queues[_0x49d04d[_0x232b('0x4')]][_0x232b('0x9')]=_0x232b('0x2d');utils[_0x232b('0x2')](util[_0x232b('0x10')](_0x232b('0x2e'),_0x49d04d[_0x232b('0x4')],queues[_0x49d04d[_0x232b('0x4')]]['name'],queues[_0x49d04d[_0x232b('0x4')]][_0x232b('0x9')]));}}catch(_0x335897){utils[_0x232b('0x16')](util['format'](_0x232b('0x2c'),_0x49d04d[_0x232b('0x4')]),_0x335897);}};exports[_0x232b('0x2f')]=function(_0x5e0f0c){try{if(!_[_0x232b('0x17')](queues[_0x5e0f0c[_0x232b('0x4')]])){utils[_0x232b('0xf')](util['format']('[%s][queues][queuecallerleave]',_0x5e0f0c[_0x232b('0x4')]),_0x5e0f0c);utils[_0x232b('0x2')](util[_0x232b('0x10')]('[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s',_0x5e0f0c[_0x232b('0x4')],queues[_0x5e0f0c[_0x232b('0x4')]][_0x232b('0x1e')],_0x5e0f0c[_0x232b('0x30')],_0x5e0f0c['connectedlinename']));queues[_0x5e0f0c[_0x232b('0x4')]][_0x232b('0x2f')]=!![];queues[_0x5e0f0c[_0x232b('0x4')]][_0x232b('0x31')]=utils['now']();queues[_0x5e0f0c[_0x232b('0x4')]]['holdtime']=utils[_0x232b('0x32')](queues[_0x5e0f0c[_0x232b('0x4')]]['queuecallerleaveAt'],queues[_0x5e0f0c['uniqueid']]['queuecallerjoinAt']);queues[_0x5e0f0c[_0x232b('0x4')]][_0x232b('0x13')]=_0x5e0f0c[_0x232b('0x13')];queues[_0x5e0f0c[_0x232b('0x4')]]['count']=_0x5e0f0c['count'];queues[_0x5e0f0c[_0x232b('0x4')]][_0x232b('0x30')]=_0x5e0f0c[_0x232b('0x30')];queues[_0x5e0f0c[_0x232b('0x4')]]['connectedlinename']=_0x5e0f0c[_0x232b('0x33')];}}catch(_0x248d1d){utils[_0x232b('0x16')](util[_0x232b('0x10')](_0x232b('0x34'),_0x5e0f0c[_0x232b('0x4')]),_0x248d1d);}};exports[_0x232b('0x35')]=function(_0x504c1c){try{if(!_['isNil'](queues[_0x504c1c['uniqueid']])){utils['debug'](util[_0x232b('0x10')]('[%s][queues][agentconnect]',_0x504c1c['uniqueid']),_0x504c1c);utils['info'](util[_0x232b('0x10')](_0x232b('0x36'),_0x504c1c[_0x232b('0x4')],queues[_0x504c1c[_0x232b('0x4')]][_0x232b('0x1e')],_0x504c1c[_0x232b('0x37')],_0x504c1c['destaccountcode']));queues[_0x504c1c['uniqueid']][_0x232b('0x19')]=![];queues[_0x504c1c['uniqueid']][_0x232b('0x19')]=![];queues[_0x504c1c['uniqueid']][_0x232b('0x24')]=null;queues[_0x504c1c[_0x232b('0x4')]][_0x232b('0x1a')]=![];queues[_0x504c1c[_0x232b('0x4')]][_0x232b('0x9')]=null;queues[_0x504c1c[_0x232b('0x4')]][_0x232b('0x25')]=null;queues[_0x504c1c[_0x232b('0x4')]][_0x232b('0x38')]=!![];queues[_0x504c1c[_0x232b('0x4')]]['accountcode']=_0x504c1c[_0x232b('0x39')];queues[_0x504c1c[_0x232b('0x4')]][_0x232b('0x7')]=_0x504c1c[_0x232b('0x37')];}}catch(_0x142609){utils[_0x232b('0x16')](util['format'](_0x232b('0x3a'),_0x504c1c['uniqueid']),_0x142609);}};exports['agentcomplete']=function(_0x53b342){try{if(!_[_0x232b('0x17')](queues[_0x53b342[_0x232b('0x4')]])){if(queues[_0x53b342[_0x232b('0x4')]][_0x232b('0x31')]){utils[_0x232b('0xf')](util[_0x232b('0x10')](_0x232b('0x3b'),_0x53b342[_0x232b('0x4')]),_0x53b342);queues[_0x53b342[_0x232b('0x4')]]['queuecallerabandon']=![];queues[_0x53b342['uniqueid']][_0x232b('0x19')]=![];queues[_0x53b342[_0x232b('0x4')]][_0x232b('0x24')]=null;queues[_0x53b342[_0x232b('0x4')]][_0x232b('0x1a')]=![];queues[_0x53b342[_0x232b('0x4')]]['queuecallerexitAt']=null;queues[_0x53b342[_0x232b('0x4')]][_0x232b('0x38')]=!![];queues[_0x53b342[_0x232b('0x4')]][_0x232b('0x7')]=_0x53b342[_0x232b('0x37')];queues[_0x53b342['uniqueid']]['queuecallercomplete']=!![];queues[_0x53b342['uniqueid']]['queuecallercompleteAt']=utils[_0x232b('0x15')]();if(_0x53b342[_0x232b('0x3c')]==_0x232b('0x3d')){if(!queues[_0x53b342['uniqueid']][_0x232b('0x3d')]){queues[_0x53b342[_0x232b('0x4')]][_0x232b('0x9')]=_0x232b('0x3e');}}else{queues[_0x53b342['uniqueid']][_0x232b('0x9')]=_0x232b('0x3f')+_0x53b342['reason']['toUpperCase']();}utils['info'](util[_0x232b('0x10')](_0x232b('0x40'),_0x53b342[_0x232b('0x4')],queues[_0x53b342['uniqueid']][_0x232b('0x1e')],_0x53b342[_0x232b('0x37')],queues[_0x53b342[_0x232b('0x4')]][_0x232b('0x9')]));writeDB(queues[_0x53b342['uniqueid']]);}}}catch(_0x52ce8d){utils[_0x232b('0x16')](util[_0x232b('0x10')](_0x232b('0x3b'),_0x53b342[_0x232b('0x4')]),_0x52ce8d);}};exports[_0x232b('0x41')]=function(_0x3ab7c2){try{if(!_[_0x232b('0x17')](queues[_0x3ab7c2[_0x232b('0x42')]])){utils[_0x232b('0xf')](util['format'](_0x232b('0x43'),_0x3ab7c2[_0x232b('0x4')]),_0x3ab7c2);queues[_0x3ab7c2[_0x232b('0x42')]][_0x232b('0x3d')]=!![];queues[_0x3ab7c2[_0x232b('0x42')]][_0x232b('0x44')]='BLIND';queues[_0x3ab7c2[_0x232b('0x42')]][_0x232b('0x45')]=_0x3ab7c2[_0x232b('0x46')];queues[_0x3ab7c2[_0x232b('0x42')]]['transferuniqueid']=_0x3ab7c2[_0x232b('0x42')];queues[_0x3ab7c2['transfereeuniqueid']]['queuecallerexitreason']=_0x232b('0x47');utils[_0x232b('0x2')](util[_0x232b('0x10')]('[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER',_0x3ab7c2[_0x232b('0x4')],queues[_0x3ab7c2[_0x232b('0x42')]][_0x232b('0x1e')],_0x3ab7c2['transfereeuniqueid'],_0x3ab7c2['extension']));}}catch(_0x36ab44){utils['error'](util[_0x232b('0x10')](_0x232b('0x43'),_0x3ab7c2[_0x232b('0x4')]),_0x36ab44);}};exports[_0x232b('0x48')]=function(_0x50bbbb){try{utils[_0x232b('0xf')](util[_0x232b('0x10')](_0x232b('0x49'),_0x50bbbb[_0x232b('0x4a')]),_0x50bbbb);if(_0x50bbbb[_0x232b('0x4a')]==_0x50bbbb[_0x232b('0x4b')]){if(!_[_0x232b('0x17')](queues[_0x50bbbb[_0x232b('0x4c')]])){utils[_0x232b('0x2')](util[_0x232b('0x10')](_0x232b('0x4d'),_0x50bbbb[_0x232b('0x4a')],queues[_0x50bbbb[_0x232b('0x4c')]][_0x232b('0x1e')],_0x50bbbb['origtransfererexten']));queues[_0x50bbbb[_0x232b('0x4c')]][_0x232b('0x3d')]=!![];queues[_0x50bbbb[_0x232b('0x4c')]][_0x232b('0x44')]=_0x232b('0x4e');queues[_0x50bbbb[_0x232b('0x4c')]][_0x232b('0x45')]=_0x50bbbb[_0x232b('0x4f')];queues[_0x50bbbb['secondtransfererlinkedid']][_0x232b('0x50')]=_0x50bbbb[_0x232b('0x4a')];queues[_0x50bbbb[_0x232b('0x4c')]]['queuecallerexitreason']=_0x232b('0x51');}if(!_[_0x232b('0x17')](queues[_0x50bbbb['origtransfererlinkedid']])){if(_0x50bbbb[_0x232b('0x52')]&&queues[_0x50bbbb[_0x232b('0x52')]]){queues[_0x50bbbb['transfereelinkedid']][_0x232b('0x53')]=0x1;queues[_0x50bbbb[_0x232b('0x42')]]=_[_0x232b('0x54')](queues[_0x50bbbb[_0x232b('0x52')]]);queues[_0x50bbbb[_0x232b('0x42')]][_0x232b('0xd')]=_0x50bbbb[_0x232b('0x55')];queues[_0x50bbbb[_0x232b('0x42')]]['queuecallerenterreason']=0x2;queues[_0x50bbbb['transfereeuniqueid']][_0x232b('0x56')]=queues[_0x50bbbb[_0x232b('0x4c')]][_0x232b('0x56')];queues[_0x50bbbb[_0x232b('0x42')]][_0x232b('0x57')]=queues[_0x50bbbb[_0x232b('0x4c')]][_0x232b('0x57')];queues[_0x50bbbb['transfereeuniqueid']][_0x232b('0x58')]=utils[_0x232b('0x15')]();queues[_0x50bbbb[_0x232b('0x42')]][_0x232b('0x31')]=utils[_0x232b('0x15')]();queues[_0x50bbbb[_0x232b('0x42')]][_0x232b('0x59')]=0x0;queues[_0x50bbbb[_0x232b('0x42')]][_0x232b('0x5a')]=0x0;utils[_0x232b('0x2')](util[_0x232b('0x10')]('[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s',_0x50bbbb['origtransfereruniqueid'],queues[_0x50bbbb['transfereeuniqueid']][_0x232b('0x1e')],queues[_0x50bbbb[_0x232b('0x42')]]['calleridnum'],queues[_0x50bbbb[_0x232b('0x42')]]['calleridname']));}else{utils[_0x232b('0x2')](util[_0x232b('0x10')](_0x232b('0x5b'),_0x50bbbb[_0x232b('0x4a')],queues[_0x50bbbb[_0x232b('0x4b')]]['name'],_0x50bbbb['secondtransfererlinkedid']));queues[_0x50bbbb[_0x232b('0x4b')]][_0x232b('0xd')]=_0x50bbbb[_0x232b('0x4c')];}}}else if(_0x50bbbb[_0x232b('0x5c')]==_0x50bbbb['secondtransfererlinkedid']){if(!_[_0x232b('0x17')](queues[_0x50bbbb[_0x232b('0x4b')]])){utils[_0x232b('0x2')](util[_0x232b('0x10')](_0x232b('0x5d'),_0x50bbbb[_0x232b('0x4a')],queues[_0x50bbbb['origtransfererlinkedid']]['name'],_0x50bbbb[_0x232b('0x5c')],_0x50bbbb[_0x232b('0x5e')]));queues[_0x50bbbb['origtransfererlinkedid']][_0x232b('0x3d')]=!![];queues[_0x50bbbb['origtransfererlinkedid']]['transfertype']=_0x232b('0x4e');queues[_0x50bbbb[_0x232b('0x4b')]][_0x232b('0x45')]=_0x50bbbb[_0x232b('0x5e')];queues[_0x50bbbb[_0x232b('0x4b')]]['transferuniqueid']=_0x50bbbb[_0x232b('0x5c')];queues[_0x50bbbb[_0x232b('0x4b')]][_0x232b('0x9')]='ATTENDEDTRANSFER';}if(!_[_0x232b('0x17')](queues[_0x50bbbb['secondtransfererlinkedid']])){if(_0x50bbbb['transfertargetlinkedid']&&queues[_0x50bbbb[_0x232b('0x5f')]]){queues[_0x50bbbb[_0x232b('0x5f')]][_0x232b('0x53')]=0x1;queues[_0x50bbbb['transfertargetuniqueid']]=_['clone'](queues[_0x50bbbb[_0x232b('0x5f')]]);queues[_0x50bbbb[_0x232b('0x55')]][_0x232b('0xd')]=_0x50bbbb[_0x232b('0x55')];queues[_0x50bbbb[_0x232b('0x55')]][_0x232b('0x53')]=0x2;queues[_0x50bbbb[_0x232b('0x55')]]['calleridnum']=queues[_0x50bbbb[_0x232b('0x4b')]][_0x232b('0x56')];queues[_0x50bbbb[_0x232b('0x55')]][_0x232b('0x57')]=queues[_0x50bbbb['origtransfererlinkedid']][_0x232b('0x57')];queues[_0x50bbbb[_0x232b('0x55')]][_0x232b('0x58')]=utils[_0x232b('0x15')]();queues[_0x50bbbb[_0x232b('0x55')]][_0x232b('0x31')]=utils[_0x232b('0x15')]();queues[_0x50bbbb[_0x232b('0x55')]][_0x232b('0x59')]=0x0;queues[_0x50bbbb[_0x232b('0x55')]]['mohtime']=0x0;utils[_0x232b('0x2')](util['format'](_0x232b('0x60'),_0x50bbbb[_0x232b('0x4a')],queues[_0x50bbbb['transfertargetuniqueid']][_0x232b('0x1e')],queues[_0x50bbbb[_0x232b('0x55')]][_0x232b('0xd')],queues[_0x50bbbb[_0x232b('0x55')]]['calleridnum'],queues[_0x50bbbb[_0x232b('0x55')]][_0x232b('0x57')]));}else{utils[_0x232b('0x2')](util['format']('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s',_0x50bbbb[_0x232b('0x4a')],queues[_0x50bbbb[_0x232b('0x4c')]]['name'],_0x50bbbb[_0x232b('0x4b')]));queues[_0x50bbbb[_0x232b('0x4c')]][_0x232b('0xd')]=_0x50bbbb[_0x232b('0x4b')];}}}}catch(_0x27ead9){utils['error'](util[_0x232b('0x10')](_0x232b('0x49'),_0x50bbbb[_0x232b('0x4a')]),_0x27ead9);}};exports[_0x232b('0x61')]=function(_0x4f056b){try{if(!_[_0x232b('0x17')](queues[_0x4f056b['uniqueid']])){utils[_0x232b('0xf')](util[_0x232b('0x10')](_0x232b('0x62'),_0x4f056b[_0x232b('0x4')]),_0x4f056b);queues[_0x4f056b['uniqueid']]['musiconholdstartAt']=utils[_0x232b('0x15')]();utils[_0x232b('0x2')](util[_0x232b('0x10')](_0x232b('0x63'),_0x4f056b[_0x232b('0x4')],queues[_0x4f056b[_0x232b('0x4')]]['name'],queues[_0x4f056b[_0x232b('0x4')]][_0x232b('0x64')]));}}catch(_0x45b912){utils[_0x232b('0x16')](util[_0x232b('0x10')](_0x232b('0x62'),_0x4f056b[_0x232b('0x4')]),_0x45b912);}};exports['musiconholdstop']=function(_0x50f8c3){try{if(!_['isNil'](queues[_0x50f8c3[_0x232b('0x4')]])){if(!_[_0x232b('0x17')](queues[_0x50f8c3[_0x232b('0x4')]][_0x232b('0x64')])){utils['debug'](util['format'](_0x232b('0x65'),_0x50f8c3[_0x232b('0x4')]),_0x50f8c3);queues[_0x50f8c3[_0x232b('0x4')]]['mohtime']+=utils[_0x232b('0x32')](utils[_0x232b('0x15')](),queues[_0x50f8c3['uniqueid']][_0x232b('0x64')]);utils[_0x232b('0x2')](util[_0x232b('0x10')](_0x232b('0x66'),_0x50f8c3[_0x232b('0x4')],queues[_0x50f8c3['uniqueid']][_0x232b('0x1e')],queues[_0x50f8c3['uniqueid']][_0x232b('0x5a')]));delete queues[_0x50f8c3[_0x232b('0x4')]][_0x232b('0x64')];}}}catch(_0x1e133b){utils[_0x232b('0x16')](util[_0x232b('0x10')](_0x232b('0x65'),_0x50f8c3[_0x232b('0x4')]),_0x1e133b);}};
\ No newline at end of file
+var _0x0849=['transfereeuniqueid','transfertype','BLIND','transferexten','transferuniqueid','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','extension','attendedtransfer','[%s][queues][attendedtransfer]','origtransfererlinkedid','secondtransfererlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','origtransfereruniqueid','origtransfererexten','ATTENDED','ATTENDEDTRANSFER','transfereelinkedid','clone','calleridnum','calleridname','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','secondtransfereruniqueid','[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','secondtransfererexten','transfertargetlinkedid','transfertargetuniqueid','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','musiconholdstart','[%s][queues][musiconholdstart]','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','[%s][queues][musiconholdstop]','diffTime','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','lodash','info','format','uniqueid','queue','lastAssignedTo','queuecallerexitreason','getVoiceQueueByName','type','CreateVoiceQueueReport','request','transfereduniqueid','queuecallerjoin','[%s][queues][queuecallerjoin]','position','assign','now','error','hangup','isNil','debug','[%s][queues][hangup]','queuecallerleaveAt','queuecallerabandon','queuecallerexit','queuecallercomplete','COMPLETEDBYAGENT','name','queuecallerenterreason','varset','[%s][queues][varset]','variable','queuestatus','value','toUpperCase','CONTINUE','queuecallerexitAt','queueposition','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','[%s][queues][queuecallerabandon]','queuecallerabandonAt','ABANDONED','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','queuecallerleave','[%s][queues][queuecallerleave]','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinename','holdtime','queuecallerjoinAt','connectedlinenum','agentconnect','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','destaccountcode','assigned','accountcode','membername','[%s][queues][agentconnect]','[%s][queues][agentcomplete]','transfer','COMPLETEDBY','reason','blindtransfer'];(function(_0x5d99fa,_0x5cd553){var _0x1d30b0=function(_0x32dfbe){while(--_0x32dfbe){_0x5d99fa['push'](_0x5d99fa['shift']());}};_0x1d30b0(++_0x5cd553);}(_0x0849,0x84));var _0x9084=function(_0x4f0fd6,_0x99bd9){_0x4f0fd6=_0x4f0fd6-0x0;var _0x52a961=_0x0849[_0x4f0fd6];return _0x52a961;};'use strict';var _=require(_0x9084('0x0'));var util=require('util');var utils=require('./utils');var queues={};function writeDB(_0x3249c6){utils[_0x9084('0x1')](util[_0x9084('0x2')]('[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s',_0x3249c6[_0x9084('0x3')],_0x3249c6['channel'],_0x3249c6[_0x9084('0x4')],_0x3249c6[_0x9084('0x5')],_0x3249c6['calleridnum'],_0x3249c6['accountcode'],_0x3249c6[_0x9084('0x6')]));if(_0x3249c6[_0x9084('0x4')]){utils[_0x9084('0x7')](_0x3249c6[_0x9084('0x4')])['then'](function(_0x2c91da){if(_0x2c91da){_0x3249c6[_0x9084('0x8')]=_0x2c91da[_0x9084('0x8')];}utils['request'](_0x9084('0x9'),_0x3249c6);});}else{utils[_0x9084('0xa')](_0x9084('0x9'),_0x3249c6);}if(_0x3249c6[_0x9084('0xb')]){delete queues[_0x3249c6['transfereduniqueid']];}else{delete queues[_0x3249c6['uniqueid']];}}exports[_0x9084('0xc')]=function(_0x2df74a){try{utils['debug'](util[_0x9084('0x2')](_0x9084('0xd'),_0x2df74a[_0x9084('0x3')]),_0x2df74a);utils['info'](util[_0x9084('0x2')]('[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s',_0x2df74a[_0x9084('0x3')],_0x2df74a[_0x9084('0x4')],_0x2df74a[_0x9084('0xe')]));queues[_0x2df74a[_0x9084('0x3')]]=_[_0x9084('0xf')](_0x2df74a,{'originalposition':_0x2df74a['position'],'queuecallerjoinAt':utils[_0x9084('0x10')](),'mohtime':0x0});}catch(_0x187f4b){utils[_0x9084('0x11')](util[_0x9084('0x2')]('[%s][queues][queuecallerjoin]',_0x2df74a['uniqueid']),_0x187f4b);}};exports[_0x9084('0x12')]=function(_0x55fcaa){try{if(!_[_0x9084('0x13')](queues[_0x55fcaa[_0x9084('0x3')]])){utils[_0x9084('0x14')](util[_0x9084('0x2')](_0x9084('0x15'),_0x55fcaa['uniqueid']),_0x55fcaa);if(queues[_0x55fcaa[_0x9084('0x3')]][_0x9084('0x16')]){if(!queues[_0x55fcaa[_0x9084('0x3')]][_0x9084('0x17')]&&!queues[_0x55fcaa[_0x9084('0x3')]][_0x9084('0x18')]){queues[_0x55fcaa['uniqueid']][_0x9084('0x19')]=!![];queues[_0x55fcaa[_0x9084('0x3')]]['queuecallercompleteAt']=utils['now']();queues[_0x55fcaa[_0x9084('0x3')]][_0x9084('0x6')]=_0x9084('0x1a');}utils['info'](util[_0x9084('0x2')]('[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s',_0x55fcaa[_0x9084('0x3')],queues[_0x55fcaa[_0x9084('0x3')]]['name'],queues[_0x55fcaa[_0x9084('0x3')]][_0x9084('0x6')]));writeDB(queues[_0x55fcaa[_0x9084('0x3')]]);}else if(queues[_0x55fcaa['uniqueid']][_0x9084('0xb')]){utils['info'](util[_0x9084('0x2')]('[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s',_0x55fcaa[_0x9084('0x3')],queues[_0x55fcaa[_0x9084('0x3')]][_0x9084('0x1b')],queues[_0x55fcaa[_0x9084('0x3')]][_0x9084('0xb')]));queues[queues[_0x55fcaa['uniqueid']][_0x9084('0xb')]]=queues[_0x55fcaa[_0x9084('0x3')]];queues[queues[_0x55fcaa[_0x9084('0x3')]]['transfereduniqueid']][_0x9084('0x1c')]=0x2;delete queues[_0x55fcaa[_0x9084('0x3')]];}}}catch(_0x385711){utils[_0x9084('0x11')](util[_0x9084('0x2')](_0x9084('0x15'),_0x55fcaa[_0x9084('0x3')]),_0x385711);}};exports[_0x9084('0x1d')]=function(_0x290d8c){try{utils['debug'](util[_0x9084('0x2')](_0x9084('0x1e'),_0x290d8c[_0x9084('0x3')]),_0x290d8c);if(!_['isNil'](_0x290d8c[_0x9084('0x1f')][_0x9084('0x20')])&&_0x290d8c[_0x9084('0x21')][_0x9084('0x22')]()!==_0x9084('0x23')){if(!_[_0x9084('0x13')](queues[_0x290d8c[_0x9084('0x3')]])){queues[_0x290d8c['uniqueid']]['queuecallerabandon']=![];queues[_0x290d8c['uniqueid']]['queuecallerabandonAt']=null;queues[_0x290d8c[_0x9084('0x3')]][_0x9084('0x18')]=!![];queues[_0x290d8c[_0x9084('0x3')]][_0x9084('0x24')]=utils[_0x9084('0x10')]();queues[_0x290d8c[_0x9084('0x3')]][_0x9084('0x6')]=_0x290d8c[_0x9084('0x21')][_0x9084('0x22')]();utils[_0x9084('0x1')](util[_0x9084('0x2')]('[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s',_0x290d8c[_0x9084('0x3')],queues[_0x290d8c[_0x9084('0x3')]][_0x9084('0x1b')],_0x290d8c[_0x9084('0x21')],queues[_0x290d8c[_0x9084('0x3')]][_0x9084('0x6')]));writeDB(queues[_0x290d8c['uniqueid']]);}}else if(!_['isNil'](_0x290d8c[_0x9084('0x1f')][_0x9084('0x25')])){if(!_[_0x9084('0x13')](queues[_0x290d8c[_0x9084('0x3')]])&&!queues[_0x290d8c[_0x9084('0x3')]][_0x9084('0x17')]){queues[_0x290d8c[_0x9084('0x3')]][_0x9084('0x17')]=![];queues[_0x290d8c[_0x9084('0x3')]]['queuecallerabandonAt']=null;queues[_0x290d8c[_0x9084('0x3')]][_0x9084('0x18')]=!![];queues[_0x290d8c[_0x9084('0x3')]][_0x9084('0x24')]=utils[_0x9084('0x10')]();queues[_0x290d8c['uniqueid']][_0x9084('0x6')]='EXITWITHKEY';utils[_0x9084('0x1')](util[_0x9084('0x2')](_0x9084('0x26'),_0x290d8c[_0x9084('0x3')],queues[_0x290d8c['uniqueid']][_0x9084('0x1b')],_0x290d8c['value'],queues[_0x290d8c[_0x9084('0x3')]]['queuecallerexitreason']));}}}catch(_0x4e33e5){utils[_0x9084('0x11')](util[_0x9084('0x2')](_0x9084('0x1e'),_0x290d8c[_0x9084('0x3')]),_0x4e33e5);}};exports[_0x9084('0x17')]=function(_0x439356){try{if(!_[_0x9084('0x13')](queues[_0x439356['uniqueid']])){utils[_0x9084('0x14')](util[_0x9084('0x2')](_0x9084('0x27'),_0x439356[_0x9084('0x3')]),_0x439356);queues[_0x439356['uniqueid']][_0x9084('0x18')]=![];queues[_0x439356['uniqueid']][_0x9084('0x24')]=null;queues[_0x439356['uniqueid']][_0x9084('0x17')]=!![];queues[_0x439356[_0x9084('0x3')]][_0x9084('0x28')]=utils[_0x9084('0x10')]();queues[_0x439356['uniqueid']][_0x9084('0x6')]=_0x9084('0x29');utils[_0x9084('0x1')](util[_0x9084('0x2')](_0x9084('0x2a'),_0x439356[_0x9084('0x3')],queues[_0x439356[_0x9084('0x3')]][_0x9084('0x1b')],queues[_0x439356[_0x9084('0x3')]][_0x9084('0x6')]));}}catch(_0x5f4022){utils[_0x9084('0x11')](util[_0x9084('0x2')](_0x9084('0x27'),_0x439356[_0x9084('0x3')]),_0x5f4022);}};exports[_0x9084('0x2b')]=function(_0x25abba){try{if(!_[_0x9084('0x13')](queues[_0x25abba[_0x9084('0x3')]])){utils[_0x9084('0x14')](util[_0x9084('0x2')](_0x9084('0x2c'),_0x25abba[_0x9084('0x3')]),_0x25abba);utils['info'](util['format'](_0x9084('0x2d'),_0x25abba[_0x9084('0x3')],queues[_0x25abba['uniqueid']]['name'],_0x25abba['connectedlinenum'],_0x25abba[_0x9084('0x2e')]));queues[_0x25abba[_0x9084('0x3')]][_0x9084('0x2b')]=!![];queues[_0x25abba['uniqueid']][_0x9084('0x16')]=utils[_0x9084('0x10')]();queues[_0x25abba['uniqueid']][_0x9084('0x2f')]=utils['diffTime'](queues[_0x25abba['uniqueid']][_0x9084('0x16')],queues[_0x25abba[_0x9084('0x3')]][_0x9084('0x30')]);queues[_0x25abba[_0x9084('0x3')]][_0x9084('0xe')]=_0x25abba[_0x9084('0xe')];queues[_0x25abba[_0x9084('0x3')]]['count']=_0x25abba['count'];queues[_0x25abba[_0x9084('0x3')]][_0x9084('0x31')]=_0x25abba[_0x9084('0x31')];queues[_0x25abba[_0x9084('0x3')]]['connectedlinename']=_0x25abba['connectedlinename'];}}catch(_0x1b1eb4){utils[_0x9084('0x11')](util['format'](_0x9084('0x2c'),_0x25abba[_0x9084('0x3')]),_0x1b1eb4);}};exports[_0x9084('0x32')]=function(_0x2f47b8){try{if(!_[_0x9084('0x13')](queues[_0x2f47b8[_0x9084('0x3')]])){utils[_0x9084('0x14')](util['format']('[%s][queues][agentconnect]',_0x2f47b8[_0x9084('0x3')]),_0x2f47b8);utils[_0x9084('0x1')](util['format'](_0x9084('0x33'),_0x2f47b8['uniqueid'],queues[_0x2f47b8[_0x9084('0x3')]][_0x9084('0x1b')],_0x2f47b8['membername'],_0x2f47b8[_0x9084('0x34')]));queues[_0x2f47b8[_0x9084('0x3')]][_0x9084('0x17')]=![];queues[_0x2f47b8['uniqueid']][_0x9084('0x17')]=![];queues[_0x2f47b8[_0x9084('0x3')]]['queuecallerabandonAt']=null;queues[_0x2f47b8['uniqueid']][_0x9084('0x18')]=![];queues[_0x2f47b8[_0x9084('0x3')]][_0x9084('0x6')]=null;queues[_0x2f47b8[_0x9084('0x3')]]['queuecallerexitAt']=null;queues[_0x2f47b8[_0x9084('0x3')]][_0x9084('0x35')]=!![];queues[_0x2f47b8[_0x9084('0x3')]][_0x9084('0x36')]=_0x2f47b8[_0x9084('0x34')];queues[_0x2f47b8[_0x9084('0x3')]][_0x9084('0x5')]=_0x2f47b8[_0x9084('0x37')];}}catch(_0x26323b){utils[_0x9084('0x11')](util[_0x9084('0x2')](_0x9084('0x38'),_0x2f47b8[_0x9084('0x3')]),_0x26323b);}};exports['agentcomplete']=function(_0x2fcbcc){try{if(!_[_0x9084('0x13')](queues[_0x2fcbcc[_0x9084('0x3')]])){if(queues[_0x2fcbcc['uniqueid']]['queuecallerleaveAt']){utils['debug'](util['format'](_0x9084('0x39'),_0x2fcbcc[_0x9084('0x3')]),_0x2fcbcc);queues[_0x2fcbcc[_0x9084('0x3')]][_0x9084('0x17')]=![];queues[_0x2fcbcc[_0x9084('0x3')]][_0x9084('0x17')]=![];queues[_0x2fcbcc[_0x9084('0x3')]][_0x9084('0x28')]=null;queues[_0x2fcbcc[_0x9084('0x3')]][_0x9084('0x18')]=![];queues[_0x2fcbcc[_0x9084('0x3')]][_0x9084('0x24')]=null;queues[_0x2fcbcc[_0x9084('0x3')]]['assigned']=!![];queues[_0x2fcbcc['uniqueid']]['lastAssignedTo']=_0x2fcbcc['membername'];queues[_0x2fcbcc[_0x9084('0x3')]][_0x9084('0x19')]=!![];queues[_0x2fcbcc[_0x9084('0x3')]]['queuecallercompleteAt']=utils[_0x9084('0x10')]();if(_0x2fcbcc['reason']==_0x9084('0x3a')){if(!queues[_0x2fcbcc[_0x9084('0x3')]][_0x9084('0x3a')]){queues[_0x2fcbcc[_0x9084('0x3')]]['queuecallerexitreason']='TRANSFER';}}else{queues[_0x2fcbcc[_0x9084('0x3')]]['queuecallerexitreason']=_0x9084('0x3b')+_0x2fcbcc[_0x9084('0x3c')][_0x9084('0x22')]();}utils[_0x9084('0x1')](util[_0x9084('0x2')]('[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s',_0x2fcbcc[_0x9084('0x3')],queues[_0x2fcbcc[_0x9084('0x3')]][_0x9084('0x1b')],_0x2fcbcc[_0x9084('0x37')],queues[_0x2fcbcc[_0x9084('0x3')]]['queuecallerexitreason']));writeDB(queues[_0x2fcbcc[_0x9084('0x3')]]);}}}catch(_0x488e72){utils['error'](util['format'](_0x9084('0x39'),_0x2fcbcc[_0x9084('0x3')]),_0x488e72);}};exports[_0x9084('0x3d')]=function(_0x5985a3){try{if(!_[_0x9084('0x13')](queues[_0x5985a3[_0x9084('0x3e')]])){utils[_0x9084('0x14')](util[_0x9084('0x2')]('[%s][queues][blindtransfer]',_0x5985a3[_0x9084('0x3')]),_0x5985a3);queues[_0x5985a3[_0x9084('0x3e')]][_0x9084('0x3a')]=!![];queues[_0x5985a3[_0x9084('0x3e')]][_0x9084('0x3f')]=_0x9084('0x40');queues[_0x5985a3[_0x9084('0x3e')]][_0x9084('0x41')]=_0x5985a3['extension'];queues[_0x5985a3['transfereeuniqueid']][_0x9084('0x42')]=_0x5985a3[_0x9084('0x3e')];queues[_0x5985a3[_0x9084('0x3e')]][_0x9084('0x6')]='BLINDTRANSFER';utils[_0x9084('0x1')](util['format'](_0x9084('0x43'),_0x5985a3[_0x9084('0x3')],queues[_0x5985a3[_0x9084('0x3e')]][_0x9084('0x1b')],_0x5985a3[_0x9084('0x3e')],_0x5985a3[_0x9084('0x44')]));}}catch(_0x2f22bf){utils['error'](util[_0x9084('0x2')]('[%s][queues][blindtransfer]',_0x5985a3[_0x9084('0x3')]),_0x2f22bf);}};exports[_0x9084('0x45')]=function(_0x3db08e){try{utils[_0x9084('0x14')](util['format'](_0x9084('0x46'),_0x3db08e['origtransfereruniqueid']),_0x3db08e);if(_0x3db08e['origtransfereruniqueid']==_0x3db08e[_0x9084('0x47')]){if(!_[_0x9084('0x13')](queues[_0x3db08e[_0x9084('0x48')]])){utils[_0x9084('0x1')](util[_0x9084('0x2')](_0x9084('0x49'),_0x3db08e[_0x9084('0x4a')],queues[_0x3db08e[_0x9084('0x48')]][_0x9084('0x1b')],_0x3db08e[_0x9084('0x4b')]));queues[_0x3db08e[_0x9084('0x48')]][_0x9084('0x3a')]=!![];queues[_0x3db08e[_0x9084('0x48')]]['transfertype']=_0x9084('0x4c');queues[_0x3db08e['secondtransfererlinkedid']][_0x9084('0x41')]=_0x3db08e[_0x9084('0x4b')];queues[_0x3db08e['secondtransfererlinkedid']][_0x9084('0x42')]=_0x3db08e[_0x9084('0x4a')];queues[_0x3db08e['secondtransfererlinkedid']][_0x9084('0x6')]=_0x9084('0x4d');}if(!_['isNil'](queues[_0x3db08e[_0x9084('0x47')]])){if(_0x3db08e[_0x9084('0x4e')]&&queues[_0x3db08e[_0x9084('0x4e')]]){queues[_0x3db08e[_0x9084('0x4e')]]['queuecallerenterreason']=0x1;queues[_0x3db08e[_0x9084('0x3e')]]=_[_0x9084('0x4f')](queues[_0x3db08e['transfereelinkedid']]);queues[_0x3db08e['transfereeuniqueid']]['transfereduniqueid']=_0x3db08e['transfertargetuniqueid'];queues[_0x3db08e[_0x9084('0x3e')]][_0x9084('0x1c')]=0x2;queues[_0x3db08e[_0x9084('0x3e')]][_0x9084('0x50')]=queues[_0x3db08e[_0x9084('0x48')]]['calleridnum'];queues[_0x3db08e[_0x9084('0x3e')]][_0x9084('0x51')]=queues[_0x3db08e[_0x9084('0x48')]][_0x9084('0x51')];queues[_0x3db08e['transfereeuniqueid']][_0x9084('0x30')]=utils[_0x9084('0x10')]();queues[_0x3db08e[_0x9084('0x3e')]][_0x9084('0x16')]=utils[_0x9084('0x10')]();queues[_0x3db08e[_0x9084('0x3e')]][_0x9084('0x2f')]=0x0;queues[_0x3db08e['transfereeuniqueid']][_0x9084('0x52')]=0x0;utils[_0x9084('0x1')](util[_0x9084('0x2')]('[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s',_0x3db08e['origtransfereruniqueid'],queues[_0x3db08e[_0x9084('0x3e')]]['name'],queues[_0x3db08e[_0x9084('0x3e')]]['calleridnum'],queues[_0x3db08e['transfereeuniqueid']][_0x9084('0x51')]));}else{utils[_0x9084('0x1')](util[_0x9084('0x2')](_0x9084('0x53'),_0x3db08e[_0x9084('0x4a')],queues[_0x3db08e[_0x9084('0x47')]][_0x9084('0x1b')],_0x3db08e[_0x9084('0x48')]));queues[_0x3db08e[_0x9084('0x47')]]['transfereduniqueid']=_0x3db08e[_0x9084('0x48')];}}}else if(_0x3db08e[_0x9084('0x54')]==_0x3db08e[_0x9084('0x48')]){if(!_[_0x9084('0x13')](queues[_0x3db08e[_0x9084('0x47')]])){utils['info'](util['format'](_0x9084('0x55'),_0x3db08e[_0x9084('0x4a')],queues[_0x3db08e[_0x9084('0x47')]]['name'],_0x3db08e['secondtransfereruniqueid'],_0x3db08e[_0x9084('0x56')]));queues[_0x3db08e[_0x9084('0x47')]][_0x9084('0x3a')]=!![];queues[_0x3db08e[_0x9084('0x47')]][_0x9084('0x3f')]=_0x9084('0x4c');queues[_0x3db08e[_0x9084('0x47')]][_0x9084('0x41')]=_0x3db08e[_0x9084('0x56')];queues[_0x3db08e[_0x9084('0x47')]][_0x9084('0x42')]=_0x3db08e[_0x9084('0x54')];queues[_0x3db08e['origtransfererlinkedid']][_0x9084('0x6')]=_0x9084('0x4d');}if(!_[_0x9084('0x13')](queues[_0x3db08e[_0x9084('0x48')]])){if(_0x3db08e[_0x9084('0x57')]&&queues[_0x3db08e[_0x9084('0x57')]]){queues[_0x3db08e[_0x9084('0x57')]][_0x9084('0x1c')]=0x1;queues[_0x3db08e[_0x9084('0x58')]]=_[_0x9084('0x4f')](queues[_0x3db08e[_0x9084('0x57')]]);queues[_0x3db08e[_0x9084('0x58')]][_0x9084('0xb')]=_0x3db08e['transfertargetuniqueid'];queues[_0x3db08e['transfertargetuniqueid']]['queuecallerenterreason']=0x2;queues[_0x3db08e[_0x9084('0x58')]][_0x9084('0x50')]=queues[_0x3db08e['origtransfererlinkedid']][_0x9084('0x50')];queues[_0x3db08e[_0x9084('0x58')]][_0x9084('0x51')]=queues[_0x3db08e[_0x9084('0x47')]][_0x9084('0x51')];queues[_0x3db08e[_0x9084('0x58')]][_0x9084('0x30')]=utils[_0x9084('0x10')]();queues[_0x3db08e['transfertargetuniqueid']][_0x9084('0x16')]=utils[_0x9084('0x10')]();queues[_0x3db08e[_0x9084('0x58')]][_0x9084('0x2f')]=0x0;queues[_0x3db08e[_0x9084('0x58')]]['mohtime']=0x0;utils['info'](util['format'](_0x9084('0x59'),_0x3db08e[_0x9084('0x4a')],queues[_0x3db08e[_0x9084('0x58')]][_0x9084('0x1b')],queues[_0x3db08e[_0x9084('0x58')]][_0x9084('0xb')],queues[_0x3db08e['transfertargetuniqueid']][_0x9084('0x50')],queues[_0x3db08e['transfertargetuniqueid']][_0x9084('0x51')]));}else{utils[_0x9084('0x1')](util[_0x9084('0x2')](_0x9084('0x53'),_0x3db08e[_0x9084('0x4a')],queues[_0x3db08e['secondtransfererlinkedid']][_0x9084('0x1b')],_0x3db08e['origtransfererlinkedid']));queues[_0x3db08e[_0x9084('0x48')]][_0x9084('0xb')]=_0x3db08e[_0x9084('0x47')];}}}}catch(_0x164639){utils['error'](util[_0x9084('0x2')]('[%s][queues][attendedtransfer]',_0x3db08e[_0x9084('0x4a')]),_0x164639);}};exports[_0x9084('0x5a')]=function(_0xde2850){try{if(!_[_0x9084('0x13')](queues[_0xde2850[_0x9084('0x3')]])){utils[_0x9084('0x14')](util[_0x9084('0x2')](_0x9084('0x5b'),_0xde2850[_0x9084('0x3')]),_0xde2850);queues[_0xde2850[_0x9084('0x3')]][_0x9084('0x5c')]=utils[_0x9084('0x10')]();utils[_0x9084('0x1')](util[_0x9084('0x2')](_0x9084('0x5d'),_0xde2850[_0x9084('0x3')],queues[_0xde2850[_0x9084('0x3')]][_0x9084('0x1b')],queues[_0xde2850['uniqueid']][_0x9084('0x5c')]));}}catch(_0x16aff9){utils['error'](util[_0x9084('0x2')](_0x9084('0x5b'),_0xde2850['uniqueid']),_0x16aff9);}};exports['musiconholdstop']=function(_0x5e6065){try{if(!_[_0x9084('0x13')](queues[_0x5e6065[_0x9084('0x3')]])){if(!_['isNil'](queues[_0x5e6065[_0x9084('0x3')]][_0x9084('0x5c')])){utils[_0x9084('0x14')](util[_0x9084('0x2')](_0x9084('0x5e'),_0x5e6065['uniqueid']),_0x5e6065);queues[_0x5e6065['uniqueid']][_0x9084('0x52')]+=utils[_0x9084('0x5f')](utils[_0x9084('0x10')](),queues[_0x5e6065[_0x9084('0x3')]]['musiconholdstartAt']);utils[_0x9084('0x1')](util[_0x9084('0x2')](_0x9084('0x60'),_0x5e6065[_0x9084('0x3')],queues[_0x5e6065[_0x9084('0x3')]][_0x9084('0x1b')],queues[_0x5e6065[_0x9084('0x3')]][_0x9084('0x52')]));delete queues[_0x5e6065[_0x9084('0x3')]][_0x9084('0x5c')];}}}catch(_0x5e7f0b){utils[_0x9084('0x11')](util['format'](_0x9084('0x5e'),_0x5e6065[_0x9084('0x3')]),_0x5e7f0b);}};
\ No newline at end of file
index 7734275..b7e75d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb734=['membername','name','UserId','request','CreateVoiceRecording','newchannel','[%s][recordings][newchannel]','linkedid','format','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','context','exten','channel','error','debug','[%s][recordings][newstate]','isNil','channelstate','transfer','[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','varset','variable','mixmonitor_filename','[%s][recordings][varset]\x20variable:%s\x20value:%s','value','endsWith','.wav49','replace','find','monitors','push','[%s][recordings][varset]','hangup','[%s][recordings][hangup]','calleridnum','calleridname','connectedlinenum','connectedlinename','type','forEach','clone','newexten','[%s][recordings][newexten]','application','set','appdata','cdr','split','substring','queuecallerjoin','[%s][recordings][queuecallerjoin]','[%s][recordings][queuecallerjoin]\x20queue:%s','queue','blindtransfer','[%s][recordings][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','transfereecalleridnum','transfereecalleridname','transfereruniqueid','recording','[%s][recordings][blindtransfer]','util','./utils','info','uniqueid','blinds','transfereeuniqueid','accountcode','then'];(function(_0x511381,_0x238063){var _0x58fa61=function(_0x5c368e){while(--_0x5c368e){_0x511381['push'](_0x511381['shift']());}};_0x58fa61(++_0x238063);}(_0xb734,0x156));var _0x4b73=function(_0x5338fe,_0x5e71d1){_0x5338fe=_0x5338fe-0x0;var _0xf0a1be=_0xb734[_0x5338fe];return _0xf0a1be;};'use strict';var _=require('lodash');var util=require(_0x4b73('0x0'));var utils=require(_0x4b73('0x1'));var transfers=require('./transfers.controller');var recordings={};function writeDB(_0x4be4a8){var _0x1536a0;utils[_0x4b73('0x2')](util['format']('[%s][recordings][writeDB]',_0x4be4a8[_0x4b73('0x3')]));if(transfers[_0x4b73('0x4')][_0x4be4a8[_0x4b73('0x3')]]){_0x1536a0=_0x4be4a8[_0x4b73('0x3')];_0x4be4a8[_0x4b73('0x3')]=transfers[_0x4b73('0x4')][_0x4be4a8[_0x4b73('0x3')]][_0x4b73('0x5')];}if(_0x4be4a8['accountcode']){utils['getUserByInternal'](_0x4be4a8[_0x4b73('0x6')])[_0x4b73('0x7')](function(_0x1df6d9){if(_0x1df6d9){_0x4be4a8[_0x4b73('0x8')]=_0x1df6d9[_0x4b73('0x9')];_0x4be4a8[_0x4b73('0xa')]=_0x1df6d9['id'];}utils[_0x4b73('0xb')](_0x4b73('0xc'),_0x4be4a8);});}else{utils[_0x4b73('0xb')](_0x4b73('0xc'),_0x4be4a8);}if(_0x1536a0)delete transfers[_0x4b73('0x4')][_0x1536a0];}exports[_0x4b73('0xd')]=function(_0x4caabd){try{utils['debug'](util['format'](_0x4b73('0xe'),_0x4caabd[_0x4b73('0x3')]),_0x4caabd);if(_0x4caabd[_0x4b73('0x3')]==_0x4caabd[_0x4b73('0xf')]){utils[_0x4b73('0x2')](util[_0x4b73('0x10')](_0x4b73('0x11'),_0x4caabd[_0x4b73('0x3')],_0x4caabd[_0x4b73('0x12')],_0x4caabd[_0x4b73('0x13')]));recordings[_0x4caabd[_0x4b73('0x3')]]={'uniqueid':_0x4caabd[_0x4b73('0x3')],'accountcode':_0x4caabd[_0x4b73('0x6')],'exten':_0x4caabd[_0x4b73('0x13')],'context':_0x4caabd[_0x4b73('0x12')],'channel':_0x4caabd[_0x4b73('0x14')],'monitors':[]};}}catch(_0x3c8d3a){utils[_0x4b73('0x15')](util[_0x4b73('0x10')](_0x4b73('0xe'),_0x4caabd['uniqueid']),_0x3c8d3a);}};exports['newstate']=function(_0x4aeb5c){try{utils[_0x4b73('0x16')](util[_0x4b73('0x10')](_0x4b73('0x17'),_0x4aeb5c[_0x4b73('0x3')]),_0x4aeb5c);if(!_[_0x4b73('0x18')](recordings[_0x4aeb5c['uniqueid']])&&_0x4aeb5c[_0x4b73('0x19')]==0x6){utils[_0x4b73('0x2')](util[_0x4b73('0x10')]('[%s][recordings][newstate]\x20context:%s\x20channel:%s',_0x4aeb5c[_0x4b73('0x3')],_0x4aeb5c[_0x4b73('0x12')],_0x4aeb5c[_0x4b73('0x14')]));}else if(!_[_0x4b73('0x18')](recordings[_0x4aeb5c['linkedid']])&&_0x4aeb5c[_0x4b73('0x19')]==0x6&&_0x4aeb5c[_0x4b73('0x12')]!=_0x4b73('0x1a')){utils[_0x4b73('0x2')](util[_0x4b73('0x10')](_0x4b73('0x1b'),_0x4aeb5c['uniqueid'],_0x4aeb5c[_0x4b73('0xf')],_0x4aeb5c[_0x4b73('0x12')],_0x4aeb5c[_0x4b73('0x14')]));recordings[_0x4aeb5c[_0x4b73('0xf')]]['accountcode']=_0x4aeb5c['accountcode'];}}catch(_0x92cd18){utils['error'](util['format'](_0x4b73('0x17'),_0x4aeb5c[_0x4b73('0x3')]),_0x92cd18);}};exports[_0x4b73('0x1c')]=function(_0x5cf6f0){try{if(!_[_0x4b73('0x18')](_0x5cf6f0[_0x4b73('0x1d')])&&!_[_0x4b73('0x18')](_0x5cf6f0[_0x4b73('0x1d')][_0x4b73('0x1e')])){utils[_0x4b73('0x16')](util[_0x4b73('0x10')]('[%s][recordings][varset]',_0x5cf6f0[_0x4b73('0x3')]),_0x5cf6f0);utils[_0x4b73('0x2')](util['format'](_0x4b73('0x1f'),_0x5cf6f0[_0x4b73('0x3')],_0x5cf6f0[_0x4b73('0x1d')],_0x5cf6f0[_0x4b73('0x20')]));if(_[_0x4b73('0x21')](_0x5cf6f0[_0x4b73('0x20')],_0x4b73('0x22'))){_0x5cf6f0[_0x4b73('0x20')]=_0x5cf6f0['value'][_0x4b73('0x23')](_0x4b73('0x22'),'.WAV');}if(recordings[_0x5cf6f0[_0x4b73('0xf')]]){var _0x2a1911=_[_0x4b73('0x24')](recordings[_0x5cf6f0['linkedid']][_0x4b73('0x25')],{'value':_0x5cf6f0[_0x4b73('0x20')]});if(_[_0x4b73('0x18')](_0x2a1911)){recordings[_0x5cf6f0[_0x4b73('0xf')]][_0x4b73('0x25')][_0x4b73('0x26')]({'value':_0x5cf6f0[_0x4b73('0x20')]});}}}}catch(_0x4eb840){utils[_0x4b73('0x15')](util[_0x4b73('0x10')](_0x4b73('0x27'),_0x5cf6f0[_0x4b73('0x3')]),_0x4eb840);}};exports[_0x4b73('0x28')]=function(_0x498dee){try{if(!_['isNil'](recordings[_0x498dee['uniqueid']])){utils[_0x4b73('0x16')](util[_0x4b73('0x10')](_0x4b73('0x29'),_0x498dee[_0x4b73('0x3')]),_0x498dee);utils[_0x4b73('0x2')](util[_0x4b73('0x10')]('[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s',_0x498dee[_0x4b73('0x3')],_0x498dee[_0x4b73('0x2a')],_0x498dee[_0x4b73('0x2b')],_0x498dee['cause-txt']));recordings[_0x498dee[_0x4b73('0x3')]]['calleridnum']=_0x498dee['calleridnum'];recordings[_0x498dee[_0x4b73('0x3')]][_0x4b73('0x2b')]=_0x498dee[_0x4b73('0x2b')];recordings[_0x498dee[_0x4b73('0x3')]]['connectedlinenum']=_0x498dee[_0x4b73('0x2c')];recordings[_0x498dee[_0x4b73('0x3')]][_0x4b73('0x2d')]=_0x498dee[_0x4b73('0x2d')];if(recordings[_0x498dee['uniqueid']][_0x4b73('0x2e')]=='outbound'&&recordings[_0x498dee['uniqueid']]['accountcode']){recordings[_0x498dee['uniqueid']][_0x4b73('0x2c')]=recordings[_0x498dee[_0x4b73('0x3')]]['accountcode'];recordings[_0x498dee[_0x4b73('0x3')]][_0x4b73('0x2d')]='';}recordings[_0x498dee[_0x4b73('0x3')]]['monitors'][_0x4b73('0x2f')](function(_0x1f5eac){var _0x207774=_[_0x4b73('0x30')](recordings[_0x498dee[_0x4b73('0x3')]]);_0x207774['value']=_0x1f5eac[_0x4b73('0x20')];writeDB(_0x207774);});delete recordings[_0x498dee['uniqueid']];}}catch(_0x1fffa2){utils[_0x4b73('0x15')](util['format'](_0x4b73('0x29'),_0x498dee[_0x4b73('0x3')]),_0x1fffa2);}};exports[_0x4b73('0x31')]=function(_0x146264){try{if(!_[_0x4b73('0x18')](recordings[_0x146264[_0x4b73('0x3')]])){utils[_0x4b73('0x16')](util[_0x4b73('0x10')](_0x4b73('0x32'),_0x146264[_0x4b73('0x3')]),_0x146264);utils[_0x4b73('0x2')](util[_0x4b73('0x10')]('[%s][recordings][newexten]\x20application:%s\x20appdata:%s',_0x146264['uniqueid'],_0x146264['application'],_0x146264['appdata']));if(_0x146264[_0x4b73('0x33')]['toLowerCase']()==_0x4b73('0x34')&&_['startsWith'](_0x146264[_0x4b73('0x35')]['toLowerCase'](),_0x4b73('0x36'))){var _0x42361a=_0x146264[_0x4b73('0x35')][_0x4b73('0x37')]('=');var _0x5ea922=_0x42361a[0x0][_0x4b73('0x38')](_0x42361a[0x0]['lastIndexOf']('(')+0x1,_0x42361a[0x0]['lastIndexOf'](')'));var _0xcf9509=_0x42361a[0x1];recordings[_0x146264[_0x4b73('0x3')]][_0x5ea922]=_0xcf9509;}}}catch(_0x1c3089){utils[_0x4b73('0x15')](util[_0x4b73('0x10')](_0x4b73('0x32'),_0x146264[_0x4b73('0x3')]),_0x1c3089);}};exports[_0x4b73('0x39')]=function(_0x23154d){try{if(!_['isNil'](recordings[_0x23154d['uniqueid']])){utils[_0x4b73('0x16')](util['format'](_0x4b73('0x3a'),_0x23154d[_0x4b73('0x3')]),_0x23154d);utils['info'](util[_0x4b73('0x10')](_0x4b73('0x3b'),_0x23154d[_0x4b73('0x3')],_0x23154d[_0x4b73('0x3c')]));recordings[_0x23154d['uniqueid']][_0x4b73('0x3c')]=_0x23154d['queue'];}}catch(_0x5a649d){utils[_0x4b73('0x15')](util[_0x4b73('0x10')]('[%s][recordings][queuecallerjoin]',_0x23154d[_0x4b73('0x3')]),_0x5a649d);}};exports[_0x4b73('0x3d')]=function(_0x3fd41e){try{utils[_0x4b73('0x16')](util[_0x4b73('0x10')]('[%s][recordings][blindtransfer]',_0x3fd41e['uniqueid']),_0x3fd41e);utils[_0x4b73('0x2')](util[_0x4b73('0x10')](_0x4b73('0x3e'),_0x3fd41e[_0x4b73('0x3')],_0x3fd41e[_0x4b73('0x3f')],_0x3fd41e[_0x4b73('0x40')],_0x3fd41e[_0x4b73('0x41')],_0x3fd41e[_0x4b73('0x42')]));if(recordings[_0x3fd41e['transfereruniqueid']]&&transfers[_0x4b73('0x4')][_0x3fd41e[_0x4b73('0x43')]]){transfers[_0x4b73('0x4')][_0x3fd41e[_0x4b73('0x43')]][_0x4b73('0x44')]=!![];}}catch(_0x4f18a6){utils[_0x4b73('0x15')](util[_0x4b73('0x10')](_0x4b73('0x45'),_0x3fd41e[_0x4b73('0x3')]),_0x4f18a6);}};
\ No newline at end of file
+var _0x2eb3=['variable','mixmonitor_filename','[%s][recordings][varset]','endsWith','value','replace','.WAV','find','push','[%s][recordings][hangup]','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridnum','calleridname','cause-txt','connectedlinenum','connectedlinename','type','outbound','monitors','[%s][recordings][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','startsWith','cdr','split','substring','lastIndexOf','[%s][recordings][newexten]','queuecallerjoin','[%s][recordings][queuecallerjoin]\x20queue:%s','queue','[%s][recordings][blindtransfer]','[%s][recordings][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','transfereecalleridnum','transfereecalleridname','blinds','transfereruniqueid','lodash','./utils','./transfers.controller','info','format','[%s][recordings][writeDB]','uniqueid','transfereeuniqueid','accountcode','getUserByInternal','then','membername','name','CreateVoiceRecording','request','newchannel','[%s][recordings][newchannel]','linkedid','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','context','exten','channel','newstate','debug','[%s][recordings][newstate]','isNil','channelstate','transfer','error'];(function(_0xfb65aa,_0x1651a6){var _0x2aee31=function(_0x492245){while(--_0x492245){_0xfb65aa['push'](_0xfb65aa['shift']());}};_0x2aee31(++_0x1651a6);}(_0x2eb3,0x6f));var _0x32eb=function(_0x25cd1b,_0x245f2a){_0x25cd1b=_0x25cd1b-0x0;var _0xf00d7d=_0x2eb3[_0x25cd1b];return _0xf00d7d;};'use strict';var _=require(_0x32eb('0x0'));var util=require('util');var utils=require(_0x32eb('0x1'));var transfers=require(_0x32eb('0x2'));var recordings={};function writeDB(_0x539397){var _0x50daa7;utils[_0x32eb('0x3')](util[_0x32eb('0x4')](_0x32eb('0x5'),_0x539397[_0x32eb('0x6')]));if(transfers['blinds'][_0x539397['uniqueid']]){_0x50daa7=_0x539397[_0x32eb('0x6')];_0x539397[_0x32eb('0x6')]=transfers['blinds'][_0x539397[_0x32eb('0x6')]][_0x32eb('0x7')];}if(_0x539397[_0x32eb('0x8')]){utils[_0x32eb('0x9')](_0x539397[_0x32eb('0x8')])[_0x32eb('0xa')](function(_0xae644e){if(_0xae644e){_0x539397[_0x32eb('0xb')]=_0xae644e[_0x32eb('0xc')];_0x539397['UserId']=_0xae644e['id'];}utils['request'](_0x32eb('0xd'),_0x539397);});}else{utils[_0x32eb('0xe')]('CreateVoiceRecording',_0x539397);}if(_0x50daa7)delete transfers['blinds'][_0x50daa7];}exports[_0x32eb('0xf')]=function(_0x44b438){try{utils['debug'](util[_0x32eb('0x4')](_0x32eb('0x10'),_0x44b438['uniqueid']),_0x44b438);if(_0x44b438['uniqueid']==_0x44b438[_0x32eb('0x11')]){utils['info'](util[_0x32eb('0x4')](_0x32eb('0x12'),_0x44b438[_0x32eb('0x6')],_0x44b438[_0x32eb('0x13')],_0x44b438['exten']));recordings[_0x44b438[_0x32eb('0x6')]]={'uniqueid':_0x44b438[_0x32eb('0x6')],'accountcode':_0x44b438[_0x32eb('0x8')],'exten':_0x44b438[_0x32eb('0x14')],'context':_0x44b438['context'],'channel':_0x44b438[_0x32eb('0x15')],'monitors':[]};}}catch(_0x285be0){utils['error'](util[_0x32eb('0x4')](_0x32eb('0x10'),_0x44b438['uniqueid']),_0x285be0);}};exports[_0x32eb('0x16')]=function(_0x332ac6){try{utils[_0x32eb('0x17')](util[_0x32eb('0x4')](_0x32eb('0x18'),_0x332ac6['uniqueid']),_0x332ac6);if(!_[_0x32eb('0x19')](recordings[_0x332ac6[_0x32eb('0x6')]])&&_0x332ac6[_0x32eb('0x1a')]==0x6){utils['info'](util['format']('[%s][recordings][newstate]\x20context:%s\x20channel:%s',_0x332ac6[_0x32eb('0x6')],_0x332ac6[_0x32eb('0x13')],_0x332ac6[_0x32eb('0x15')]));}else if(!_[_0x32eb('0x19')](recordings[_0x332ac6[_0x32eb('0x11')]])&&_0x332ac6['channelstate']==0x6&&_0x332ac6[_0x32eb('0x13')]!=_0x32eb('0x1b')){utils[_0x32eb('0x3')](util[_0x32eb('0x4')]('[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0x332ac6[_0x32eb('0x6')],_0x332ac6[_0x32eb('0x11')],_0x332ac6[_0x32eb('0x13')],_0x332ac6[_0x32eb('0x15')]));recordings[_0x332ac6[_0x32eb('0x11')]]['accountcode']=_0x332ac6[_0x32eb('0x8')];}}catch(_0x320151){utils[_0x32eb('0x1c')](util['format'](_0x32eb('0x18'),_0x332ac6[_0x32eb('0x6')]),_0x320151);}};exports['varset']=function(_0x45b21d){try{if(!_['isNil'](_0x45b21d[_0x32eb('0x1d')])&&!_[_0x32eb('0x19')](_0x45b21d['variable'][_0x32eb('0x1e')])){utils[_0x32eb('0x17')](util[_0x32eb('0x4')](_0x32eb('0x1f'),_0x45b21d[_0x32eb('0x6')]),_0x45b21d);utils['info'](util[_0x32eb('0x4')]('[%s][recordings][varset]\x20variable:%s\x20value:%s',_0x45b21d[_0x32eb('0x6')],_0x45b21d['variable'],_0x45b21d['value']));if(_[_0x32eb('0x20')](_0x45b21d['value'],'.wav49')){_0x45b21d[_0x32eb('0x21')]=_0x45b21d[_0x32eb('0x21')][_0x32eb('0x22')]('.wav49',_0x32eb('0x23'));}if(recordings[_0x45b21d[_0x32eb('0x11')]]){var _0x6192e2=_[_0x32eb('0x24')](recordings[_0x45b21d[_0x32eb('0x11')]]['monitors'],{'value':_0x45b21d[_0x32eb('0x21')]});if(_[_0x32eb('0x19')](_0x6192e2)){recordings[_0x45b21d['linkedid']]['monitors'][_0x32eb('0x25')]({'value':_0x45b21d[_0x32eb('0x21')]});}}}}catch(_0xf78f4){utils[_0x32eb('0x1c')](util[_0x32eb('0x4')](_0x32eb('0x1f'),_0x45b21d[_0x32eb('0x6')]),_0xf78f4);}};exports['hangup']=function(_0x5cd1d7){try{if(!_[_0x32eb('0x19')](recordings[_0x5cd1d7['uniqueid']])){utils[_0x32eb('0x17')](util[_0x32eb('0x4')](_0x32eb('0x26'),_0x5cd1d7[_0x32eb('0x6')]),_0x5cd1d7);utils[_0x32eb('0x3')](util[_0x32eb('0x4')](_0x32eb('0x27'),_0x5cd1d7['uniqueid'],_0x5cd1d7[_0x32eb('0x28')],_0x5cd1d7[_0x32eb('0x29')],_0x5cd1d7[_0x32eb('0x2a')]));recordings[_0x5cd1d7[_0x32eb('0x6')]][_0x32eb('0x28')]=_0x5cd1d7['calleridnum'];recordings[_0x5cd1d7['uniqueid']][_0x32eb('0x29')]=_0x5cd1d7['calleridname'];recordings[_0x5cd1d7[_0x32eb('0x6')]][_0x32eb('0x2b')]=_0x5cd1d7[_0x32eb('0x2b')];recordings[_0x5cd1d7[_0x32eb('0x6')]][_0x32eb('0x2c')]=_0x5cd1d7[_0x32eb('0x2c')];if(recordings[_0x5cd1d7[_0x32eb('0x6')]][_0x32eb('0x2d')]==_0x32eb('0x2e')&&recordings[_0x5cd1d7['uniqueid']][_0x32eb('0x8')]){recordings[_0x5cd1d7[_0x32eb('0x6')]][_0x32eb('0x2b')]=recordings[_0x5cd1d7['uniqueid']][_0x32eb('0x8')];recordings[_0x5cd1d7[_0x32eb('0x6')]]['connectedlinename']='';}recordings[_0x5cd1d7[_0x32eb('0x6')]][_0x32eb('0x2f')]['forEach'](function(_0x211016){var _0x5403a4=_['clone'](recordings[_0x5cd1d7[_0x32eb('0x6')]]);_0x5403a4[_0x32eb('0x21')]=_0x211016[_0x32eb('0x21')];writeDB(_0x5403a4);});delete recordings[_0x5cd1d7['uniqueid']];}}catch(_0x14d181){utils[_0x32eb('0x1c')](util['format']('[%s][recordings][hangup]',_0x5cd1d7['uniqueid']),_0x14d181);}};exports['newexten']=function(_0x5908cb){try{if(!_[_0x32eb('0x19')](recordings[_0x5908cb['uniqueid']])){utils['debug'](util[_0x32eb('0x4')]('[%s][recordings][newexten]',_0x5908cb[_0x32eb('0x6')]),_0x5908cb);utils[_0x32eb('0x3')](util['format'](_0x32eb('0x30'),_0x5908cb[_0x32eb('0x6')],_0x5908cb[_0x32eb('0x31')],_0x5908cb[_0x32eb('0x32')]));if(_0x5908cb[_0x32eb('0x31')][_0x32eb('0x33')]()==_0x32eb('0x34')&&_[_0x32eb('0x35')](_0x5908cb[_0x32eb('0x32')][_0x32eb('0x33')](),_0x32eb('0x36'))){var _0x3feb70=_0x5908cb[_0x32eb('0x32')][_0x32eb('0x37')]('=');var _0x4c09a0=_0x3feb70[0x0][_0x32eb('0x38')](_0x3feb70[0x0][_0x32eb('0x39')]('(')+0x1,_0x3feb70[0x0][_0x32eb('0x39')](')'));var _0x42f290=_0x3feb70[0x1];recordings[_0x5908cb[_0x32eb('0x6')]][_0x4c09a0]=_0x42f290;}}}catch(_0x547dac){utils[_0x32eb('0x1c')](util['format'](_0x32eb('0x3a'),_0x5908cb[_0x32eb('0x6')]),_0x547dac);}};exports[_0x32eb('0x3b')]=function(_0x3da230){try{if(!_[_0x32eb('0x19')](recordings[_0x3da230[_0x32eb('0x6')]])){utils['debug'](util[_0x32eb('0x4')]('[%s][recordings][queuecallerjoin]',_0x3da230[_0x32eb('0x6')]),_0x3da230);utils[_0x32eb('0x3')](util[_0x32eb('0x4')](_0x32eb('0x3c'),_0x3da230[_0x32eb('0x6')],_0x3da230[_0x32eb('0x3d')]));recordings[_0x3da230[_0x32eb('0x6')]]['queue']=_0x3da230[_0x32eb('0x3d')];}}catch(_0x171eba){utils[_0x32eb('0x1c')](util['format']('[%s][recordings][queuecallerjoin]',_0x3da230[_0x32eb('0x6')]),_0x171eba);}};exports['blindtransfer']=function(_0x134507){try{utils[_0x32eb('0x17')](util['format'](_0x32eb('0x3e'),_0x134507[_0x32eb('0x6')]),_0x134507);utils[_0x32eb('0x3')](util[_0x32eb('0x4')](_0x32eb('0x3f'),_0x134507['uniqueid'],_0x134507[_0x32eb('0x40')],_0x134507[_0x32eb('0x41')],_0x134507[_0x32eb('0x42')],_0x134507[_0x32eb('0x43')]));if(recordings[_0x134507['transfereruniqueid']]&&transfers[_0x32eb('0x44')][_0x134507[_0x32eb('0x45')]]){transfers[_0x32eb('0x44')][_0x134507[_0x32eb('0x45')]]['recording']=!![];}}catch(_0x532a57){utils[_0x32eb('0x1c')](util['format']('[%s][recordings][blindtransfer]',_0x134507[_0x32eb('0x6')]),_0x532a57);}};
\ No newline at end of file
index 3353c7c..903c65b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5810=['blindtransfer','debug','[%s][transfers][blindtransfer]','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','uniqueid','transferercalleridnum','transfereecalleridnum','transfereecalleridname','blind','error','attendedtransfer','[%s][transfers][attendedtransfer]','origtransferercalleridnum','transfertargetcalleridnum','transfertargetcalleridname','assign','origtransferercalleridname','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','attended','isNil','transfereechannel','transfertargetchannel','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetexten','transfertargetlinkedid','util','./utils','info','format','[%s][transfers][writeDB]\x20type:%s','type','origtransfereruniqueid','request','blinds'];(function(_0x2e13b2,_0x116cbe){var _0x2a3707=function(_0x30601e){while(--_0x30601e){_0x2e13b2['push'](_0x2e13b2['shift']());}};_0x2a3707(++_0x116cbe);}(_0x5810,0x15f));var _0x0581=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x5810[_0x19950b];return _0x3c6b41;};'use strict';var _=require('lodash');var util=require(_0x0581('0x0'));var utils=require(_0x0581('0x1'));function writeDB(_0x2cca26){utils[_0x0581('0x2')](util[_0x0581('0x3')](_0x0581('0x4'),_0x2cca26[_0x0581('0x5')]==='attended'?_0x2cca26[_0x0581('0x6')]:_0x2cca26['uniqueid'],_0x2cca26[_0x0581('0x5')]));utils[_0x0581('0x7')]('CreateVoiceTransferReport',_0x2cca26);}exports[_0x0581('0x8')]={};exports[_0x0581('0x9')]=function(_0x19d342){try{utils[_0x0581('0xa')](util[_0x0581('0x3')](_0x0581('0xb'),_0x19d342['uniqueid']),_0x19d342);utils[_0x0581('0x2')](util[_0x0581('0x3')](_0x0581('0xc'),_0x19d342[_0x0581('0xd')],_0x19d342[_0x0581('0xe')],_0x19d342['transferercalleridname'],_0x19d342[_0x0581('0xf')],_0x19d342[_0x0581('0x10')]));_0x19d342[_0x0581('0x5')]=_0x0581('0x11');exports[_0x0581('0x8')][_0x19d342['transfereruniqueid']]=_0x19d342;writeDB(_0x19d342);}catch(_0x589998){utils[_0x0581('0x12')](util[_0x0581('0x3')](_0x0581('0xb'),_0x19d342[_0x0581('0xd')]),_0x589998);}};exports[_0x0581('0x13')]=function(_0x17af09){try{utils[_0x0581('0xa')](util[_0x0581('0x3')](_0x0581('0x14'),_0x17af09[_0x0581('0x6')]),_0x17af09);utils[_0x0581('0x2')](util['format']('[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s',_0x17af09[_0x0581('0x6')],_0x17af09[_0x0581('0x15')],_0x17af09['origtransferercalleridname'],_0x17af09[_0x0581('0x16')],_0x17af09[_0x0581('0x17')]));_0x17af09=_[_0x0581('0x18')](_0x17af09,{'transfererchannel':_0x17af09['origtransfererchannel'],'transferercalleridnum':_0x17af09[_0x0581('0x15')],'transferercalleridname':_0x17af09[_0x0581('0x19')],'transfererconnectedlinenum':_0x17af09[_0x0581('0x1a')],'transfererconnectedlinename':_0x17af09[_0x0581('0x1b')],'transfereraccountcode':_0x17af09[_0x0581('0x1c')],'transferercontext':_0x17af09[_0x0581('0x1d')],'transfererexten':_0x17af09[_0x0581('0x1e')],'transfererlinkedid':_0x17af09[_0x0581('0x1f')],'context':_0x17af09['origtransferercontext'],'extension':_0x17af09['origtransfererexten'],'type':_0x0581('0x20')});if(_[_0x0581('0x21')](_0x17af09[_0x0581('0x22')])){_0x17af09=_['assign'](_0x17af09,{'transfereechannel':_0x17af09[_0x0581('0x23')],'transfereecalleridnum':_0x17af09[_0x0581('0x16')],'transfereecalleridname':_0x17af09[_0x0581('0x17')],'transfereeconnectedlinenum':_0x17af09['transfertargetconnectedlinenum'],'transfereeconnectedlinename':_0x17af09[_0x0581('0x24')],'transfereeaccountcode':_0x17af09[_0x0581('0x25')],'transfereecontext':_0x17af09['transfertargetcontext'],'transfereeexten':_0x17af09[_0x0581('0x26')],'transfereelinkedid':_0x17af09[_0x0581('0x27')]});}writeDB(_0x17af09);}catch(_0x4ce14e){utils[_0x0581('0x12')](util['format'](_0x0581('0x14'),_0x17af09[_0x0581('0x6')]),_0x4ce14e);}};
\ No newline at end of file
+var _0xcb24=['origtransferercontext','origtransfererexten','transfereechannel','transfertargetchannel','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','lodash','util','info','format','[%s][transfers][writeDB]\x20type:%s','attended','origtransfereruniqueid','type','request','CreateVoiceTransferReport','blinds','blindtransfer','debug','[%s][transfers][blindtransfer]','uniqueid','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transfereecalleridnum','transfereecalleridname','blind','error','attendedtransfer','[%s][transfers][attendedtransfer]','[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','origtransferercalleridname','transfertargetcalleridnum','transfertargetcalleridname','assign','origtransferercalleridnum','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','secondtransferercontext','secondtransfererexten','origtransfererlinkedid'];(function(_0x24e1bf,_0xe34921){var _0x241838=function(_0x173e0a){while(--_0x173e0a){_0x24e1bf['push'](_0x24e1bf['shift']());}};_0x241838(++_0xe34921);}(_0xcb24,0x183));var _0x4cb2=function(_0x41619c,_0x3f83be){_0x41619c=_0x41619c-0x0;var _0x1997f1=_0xcb24[_0x41619c];return _0x1997f1;};'use strict';var _=require(_0x4cb2('0x0'));var util=require(_0x4cb2('0x1'));var utils=require('./utils');function writeDB(_0x1303ea){utils[_0x4cb2('0x2')](util[_0x4cb2('0x3')](_0x4cb2('0x4'),_0x1303ea['type']===_0x4cb2('0x5')?_0x1303ea[_0x4cb2('0x6')]:_0x1303ea['uniqueid'],_0x1303ea[_0x4cb2('0x7')]));utils[_0x4cb2('0x8')](_0x4cb2('0x9'),_0x1303ea);}exports[_0x4cb2('0xa')]={};exports[_0x4cb2('0xb')]=function(_0x100bea){try{utils[_0x4cb2('0xc')](util[_0x4cb2('0x3')](_0x4cb2('0xd'),_0x100bea[_0x4cb2('0xe')]),_0x100bea);utils[_0x4cb2('0x2')](util['format'](_0x4cb2('0xf'),_0x100bea[_0x4cb2('0xe')],_0x100bea['transferercalleridnum'],_0x100bea['transferercalleridname'],_0x100bea[_0x4cb2('0x10')],_0x100bea[_0x4cb2('0x11')]));_0x100bea[_0x4cb2('0x7')]=_0x4cb2('0x12');exports[_0x4cb2('0xa')][_0x100bea['transfereruniqueid']]=_0x100bea;writeDB(_0x100bea);}catch(_0x493bc5){utils[_0x4cb2('0x13')](util[_0x4cb2('0x3')](_0x4cb2('0xd'),_0x100bea[_0x4cb2('0xe')]),_0x493bc5);}};exports[_0x4cb2('0x14')]=function(_0x18e050){try{utils['debug'](util[_0x4cb2('0x3')](_0x4cb2('0x15'),_0x18e050[_0x4cb2('0x6')]),_0x18e050);utils[_0x4cb2('0x2')](util[_0x4cb2('0x3')](_0x4cb2('0x16'),_0x18e050['origtransfereruniqueid'],_0x18e050['origtransferercalleridnum'],_0x18e050[_0x4cb2('0x17')],_0x18e050[_0x4cb2('0x18')],_0x18e050[_0x4cb2('0x19')]));_0x18e050=_[_0x4cb2('0x1a')](_0x18e050,{'transfererchannel':_0x18e050['origtransfererchannel'],'transferercalleridnum':_0x18e050[_0x4cb2('0x1b')],'transferercalleridname':_0x18e050[_0x4cb2('0x17')],'transfererconnectedlinenum':_0x18e050[_0x4cb2('0x1c')],'transfererconnectedlinename':_0x18e050[_0x4cb2('0x1d')],'transfereraccountcode':_0x18e050['origtransfereraccountcode'],'transferercontext':_0x18e050[_0x4cb2('0x1e')],'transfererexten':_0x18e050[_0x4cb2('0x1f')],'transfererlinkedid':_0x18e050[_0x4cb2('0x20')],'context':_0x18e050[_0x4cb2('0x21')],'extension':_0x18e050[_0x4cb2('0x22')],'type':_0x4cb2('0x5')});if(_['isNil'](_0x18e050[_0x4cb2('0x23')])){_0x18e050=_[_0x4cb2('0x1a')](_0x18e050,{'transfereechannel':_0x18e050[_0x4cb2('0x24')],'transfereecalleridnum':_0x18e050[_0x4cb2('0x18')],'transfereecalleridname':_0x18e050[_0x4cb2('0x19')],'transfereeconnectedlinenum':_0x18e050[_0x4cb2('0x25')],'transfereeconnectedlinename':_0x18e050[_0x4cb2('0x26')],'transfereeaccountcode':_0x18e050[_0x4cb2('0x27')],'transfereecontext':_0x18e050[_0x4cb2('0x28')],'transfereeexten':_0x18e050[_0x4cb2('0x29')],'transfereelinkedid':_0x18e050['transfertargetlinkedid']});}writeDB(_0x18e050);}catch(_0xd3e562){utils[_0x4cb2('0x13')](util[_0x4cb2('0x3')](_0x4cb2('0x15'),_0x18e050[_0x4cb2('0x6')]),_0xd3e562);}};
\ No newline at end of file
index 89d01c2..22cbf0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad05=['xdr','info','inspect','debug','error','request','then','[utils][request]\x20name:%s','GetUser','internal','name','interface','[utils][getUser]\x20where:%s','stringify','length','result','getUserByInternal','[utils][getUserByInternal]\x20internal:%s\x20%s','found','catch','[utils][getUserByInternal]','getUserByInterface','[utils][getUserByInterface]\x20interface:%s\x20%s','[utils][getUserByInterface]','getUserByName','[utils][getUserByName]\x20name:%s\x20%s','notfound','getVoiceQueueByName','type','acw','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s','[utils][getVoiceQueueByName]\x20name:%s\x20%s','[utils][getVoiceQueueByName]','addTime','add','seconds','format','YYYY-MM-DD\x20HH:mm:ss','subtractTime','subtract','diffTime','diff','sumTime','isAfter','isBefore','bluebird','jayson/promise','moment','client','http','../../config/logger'];(function(_0x3e7471,_0xc4fd2c){var _0x3f98f8=function(_0x25153c){while(--_0x25153c){_0x3e7471['push'](_0x3e7471['shift']());}};_0x3f98f8(++_0xc4fd2c);}(_0xad05,0x96));var _0x5ad0=function(_0x2a2166,_0x3a077f){_0x2a2166=_0x2a2166-0x0;var _0x3bcf50=_0xad05[_0x2a2166];return _0x3bcf50;};'use strict';var BPromise=require(_0x5ad0('0x0'));var jayson=require(_0x5ad0('0x1'));var moment=require(_0x5ad0('0x2'));var util=require('util');var client=jayson[_0x5ad0('0x3')][_0x5ad0('0x4')]({'port':0x2329});var logger=require(_0x5ad0('0x5'))(_0x5ad0('0x6'));exports[_0x5ad0('0x7')]=function(_0x54c90d,_0x17782a){logger[_0x5ad0('0x7')](_0x54c90d,_0x17782a?util[_0x5ad0('0x8')](_0x17782a,{'showHidden':![],'depth':null}):'');};exports[_0x5ad0('0x9')]=function(_0x2de538,_0x1d3350){logger[_0x5ad0('0x9')](_0x2de538,_0x1d3350?util[_0x5ad0('0x8')](_0x1d3350,{'showHidden':![],'depth':null}):'');};exports['error']=function(_0x7eae30,_0x5c4063){logger[_0x5ad0('0xa')](_0x7eae30,_0x5c4063?util[_0x5ad0('0x8')](_0x5c4063,{'showHidden':![],'depth':null}):'');};exports[_0x5ad0('0xb')]=function(_0x5c7beb,_0xf037f9){return client[_0x5ad0('0xb')](_0x5c7beb,{'body':_0xf037f9})[_0x5ad0('0xc')](function(_0xaa5d0b){logger[_0x5ad0('0x9')](_0x5ad0('0xd'),_0x5c7beb,_0xaa5d0b?util[_0x5ad0('0x8')](_0xaa5d0b,{'showHidden':![],'depth':null}):'');})['catch'](function(_0xc6e8aa){logger[_0x5ad0('0xa')](_0x5ad0('0xd'),_0x5c7beb,_0xc6e8aa?util[_0x5ad0('0x8')](_0xc6e8aa,{'showHidden':![],'depth':null}):'');});};function getUser(_0x476ae2){return client[_0x5ad0('0xb')](_0x5ad0('0xe'),{'options':{'raw':!![],'attributes':['id',_0x5ad0('0xf'),_0x5ad0('0x10'),_0x5ad0('0x11')],'where':_0x476ae2,'limit':0x1}})[_0x5ad0('0xc')](function(_0x14927d){logger[_0x5ad0('0x9')](_0x5ad0('0x12'),JSON[_0x5ad0('0x13')](_0x476ae2),_0x14927d?util[_0x5ad0('0x8')](_0x14927d,{'showHidden':![],'depth':null}):'');return _0x14927d['result'][_0x5ad0('0x14')]?_0x14927d[_0x5ad0('0x15')][0x0]:null;});}exports[_0x5ad0('0x16')]=function(_0x3be56d){return new BPromise(function(_0x3bbac2,_0x2648ff){if(_0x3be56d){return getUser({'internal':_0x3be56d})['then'](function(_0x46a5ef){logger['info'](_0x5ad0('0x17'),_0x3be56d,_0x46a5ef?_0x5ad0('0x18'):'notfound');return _0x3bbac2(_0x46a5ef);})[_0x5ad0('0x19')](function(_0x4ca0b8){logger[_0x5ad0('0xa')](_0x5ad0('0x1a'),_0x4ca0b8?util[_0x5ad0('0x8')](_0x4ca0b8,{'showHidden':![],'depth':null}):'');return _0x3bbac2(null);});}return _0x3bbac2(null);});};exports[_0x5ad0('0x1b')]=function(_0x1a5c7a){return new BPromise(function(_0x1b106d,_0x5be2a7){if(_0x1a5c7a){return getUser({'interface':_0x1a5c7a})[_0x5ad0('0xc')](function(_0x1214a4){logger[_0x5ad0('0x7')](_0x5ad0('0x1c'),_0x1a5c7a,_0x1214a4?_0x5ad0('0x18'):'notfound');return _0x1b106d(_0x1214a4);})[_0x5ad0('0x19')](function(_0x1d9c98){logger['error'](_0x5ad0('0x1d'),_0x1d9c98?util[_0x5ad0('0x8')](_0x1d9c98,{'showHidden':![],'depth':null}):'');return _0x1b106d(null);});}return _0x1b106d(null);});};exports[_0x5ad0('0x1e')]=function(_0x43b993){return new BPromise(function(_0x5c7325,_0x187013){if(_0x43b993){return getUser({'name':_0x43b993})[_0x5ad0('0xc')](function(_0x2f6736){logger[_0x5ad0('0x7')](_0x5ad0('0x1f'),_0x43b993,_0x2f6736?_0x5ad0('0x18'):_0x5ad0('0x20'));return _0x5c7325(_0x2f6736);})[_0x5ad0('0x19')](function(_0x5f35b2){logger['error']('[utils][getUserByName]',_0x5f35b2?util[_0x5ad0('0x8')](_0x5f35b2,{'showHidden':![],'depth':null}):'');return _0x5c7325(null);});}return _0x5c7325(null);});};exports[_0x5ad0('0x21')]=function(_0x5887f0){return new BPromise(function(_0x39314f,_0x51419e){if(_0x5887f0){return client['request']('GetVoiceQueue',{'options':{'raw':!![],'attributes':['id','name',_0x5ad0('0x22'),_0x5ad0('0x23'),_0x5ad0('0x24')],'where':{'name':_0x5887f0},'limit':0x1}})[_0x5ad0('0xc')](function(_0x3c3a55){logger['debug'](_0x5ad0('0x25'),_0x5887f0,_0x3c3a55?util[_0x5ad0('0x8')](_0x3c3a55,{'showHidden':![],'depth':null}):'');logger[_0x5ad0('0x7')](_0x5ad0('0x26'),_0x5887f0,_0x3c3a55?_0x5ad0('0x18'):_0x5ad0('0x20'));return _0x39314f(_0x3c3a55[_0x5ad0('0x15')][_0x5ad0('0x14')]?_0x3c3a55[_0x5ad0('0x15')][0x0]:null);})['catch'](function(_0x591378){logger[_0x5ad0('0xa')](_0x5ad0('0x27'),_0x591378?util[_0x5ad0('0x8')](_0x591378,{'showHidden':![],'depth':null}):'');return _0x39314f(null);});}return _0x39314f(null);});};exports[_0x5ad0('0x28')]=function(_0x2b205d,_0x278ef0){return moment(_0x2b205d)[_0x5ad0('0x29')](_0x278ef0,_0x5ad0('0x2a'))[_0x5ad0('0x2b')](_0x5ad0('0x2c'));};exports[_0x5ad0('0x2d')]=function(_0x36fef3,_0x15d871){return moment(_0x36fef3)[_0x5ad0('0x2e')](_0x15d871,_0x5ad0('0x2a'))[_0x5ad0('0x2b')](_0x5ad0('0x2c'));};exports[_0x5ad0('0x2f')]=function(_0x58b168,_0x5029af){return moment(_0x58b168)[_0x5ad0('0x30')](moment(_0x5029af),_0x5ad0('0x2a'));};exports[_0x5ad0('0x31')]=function(_0x3e00bf,_0x4797ec){return parseInt(_0x3e00bf,0xa)+parseInt(_0x4797ec,0xa);};exports['now']=function(){return moment()['format'](_0x5ad0('0x2c'));};exports[_0x5ad0('0x32')]=function(_0x3ba8ef,_0x153d62){if(_0x153d62){return moment(_0x3ba8ef)[_0x5ad0('0x32')](_0x153d62);}return!![];};exports[_0x5ad0('0x33')]=function(_0x2de207,_0x3a7bd2){if(_0x3a7bd2){return moment(_0x2de207)['isBefore'](_0x3a7bd2);}else if(_0x2de207){return!![];}return![];};
\ No newline at end of file
+var _0xa817=['[utils][getUserByName]\x20name:%s\x20%s','[utils][getUserByName]','getVoiceQueueByName','GetVoiceQueue','type','acw','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s\x20%s','[utils][getVoiceQueueByName]','add','format','YYYY-MM-DD\x20HH:mm:ss','subtractTime','subtract','seconds','diffTime','diff','sumTime','now','isAfter','isBefore','bluebird','jayson/promise','moment','util','client','http','../../config/logger','xdr','info','debug','inspect','error','request','then','[utils][request]\x20name:%s','GetUser','internal','name','interface','[utils][getUser]\x20where:%s','result','length','getUserByInternal','[utils][getUserByInternal]\x20internal:%s\x20%s','found','catch','[utils][getUserByInternal]','getUserByInterface','[utils][getUserByInterface]\x20interface:%s\x20%s','notfound'];(function(_0x1cfc05,_0x507617){var _0x57012a=function(_0x18ca7b){while(--_0x18ca7b){_0x1cfc05['push'](_0x1cfc05['shift']());}};_0x57012a(++_0x507617);}(_0xa817,0x7b));var _0x7a81=function(_0x302228,_0x49f52d){_0x302228=_0x302228-0x0;var _0x2b82c2=_0xa817[_0x302228];return _0x2b82c2;};'use strict';var BPromise=require(_0x7a81('0x0'));var jayson=require(_0x7a81('0x1'));var moment=require(_0x7a81('0x2'));var util=require(_0x7a81('0x3'));var client=jayson[_0x7a81('0x4')][_0x7a81('0x5')]({'port':0x2329});var logger=require(_0x7a81('0x6'))(_0x7a81('0x7'));exports[_0x7a81('0x8')]=function(_0x4b5d54,_0x23551a){logger[_0x7a81('0x8')](_0x4b5d54,_0x23551a?util['inspect'](_0x23551a,{'showHidden':![],'depth':null}):'');};exports[_0x7a81('0x9')]=function(_0x35c35a,_0x3ab25c){logger[_0x7a81('0x9')](_0x35c35a,_0x3ab25c?util[_0x7a81('0xa')](_0x3ab25c,{'showHidden':![],'depth':null}):'');};exports[_0x7a81('0xb')]=function(_0x59d701,_0x3f5637){logger['error'](_0x59d701,_0x3f5637?util['inspect'](_0x3f5637,{'showHidden':![],'depth':null}):'');};exports[_0x7a81('0xc')]=function(_0x493b02,_0x41d90b){return client[_0x7a81('0xc')](_0x493b02,{'body':_0x41d90b})[_0x7a81('0xd')](function(_0x2116c5){logger[_0x7a81('0x9')](_0x7a81('0xe'),_0x493b02,_0x2116c5?util[_0x7a81('0xa')](_0x2116c5,{'showHidden':![],'depth':null}):'');})['catch'](function(_0x12a089){logger[_0x7a81('0xb')](_0x7a81('0xe'),_0x493b02,_0x12a089?util['inspect'](_0x12a089,{'showHidden':![],'depth':null}):'');});};function getUser(_0x39e1d0){return client[_0x7a81('0xc')](_0x7a81('0xf'),{'options':{'raw':!![],'attributes':['id',_0x7a81('0x10'),_0x7a81('0x11'),_0x7a81('0x12')],'where':_0x39e1d0,'limit':0x1}})['then'](function(_0x4aef24){logger[_0x7a81('0x9')](_0x7a81('0x13'),JSON['stringify'](_0x39e1d0),_0x4aef24?util[_0x7a81('0xa')](_0x4aef24,{'showHidden':![],'depth':null}):'');return _0x4aef24[_0x7a81('0x14')][_0x7a81('0x15')]?_0x4aef24[_0x7a81('0x14')][0x0]:null;});}exports[_0x7a81('0x16')]=function(_0x3bec25){return new BPromise(function(_0x114cfa,_0x3d9a4f){if(_0x3bec25){return getUser({'internal':_0x3bec25})[_0x7a81('0xd')](function(_0x220da9){logger[_0x7a81('0x8')](_0x7a81('0x17'),_0x3bec25,_0x220da9?_0x7a81('0x18'):'notfound');return _0x114cfa(_0x220da9);})[_0x7a81('0x19')](function(_0x3b17cd){logger[_0x7a81('0xb')](_0x7a81('0x1a'),_0x3b17cd?util[_0x7a81('0xa')](_0x3b17cd,{'showHidden':![],'depth':null}):'');return _0x114cfa(null);});}return _0x114cfa(null);});};exports[_0x7a81('0x1b')]=function(_0x34dd0b){return new BPromise(function(_0x374f02,_0x177301){if(_0x34dd0b){return getUser({'interface':_0x34dd0b})['then'](function(_0x3c0c41){logger[_0x7a81('0x8')](_0x7a81('0x1c'),_0x34dd0b,_0x3c0c41?_0x7a81('0x18'):_0x7a81('0x1d'));return _0x374f02(_0x3c0c41);})[_0x7a81('0x19')](function(_0x249ae1){logger[_0x7a81('0xb')]('[utils][getUserByInterface]',_0x249ae1?util[_0x7a81('0xa')](_0x249ae1,{'showHidden':![],'depth':null}):'');return _0x374f02(null);});}return _0x374f02(null);});};exports['getUserByName']=function(_0x5a472e){return new BPromise(function(_0x1e2476,_0x41ea68){if(_0x5a472e){return getUser({'name':_0x5a472e})[_0x7a81('0xd')](function(_0x545b79){logger[_0x7a81('0x8')](_0x7a81('0x1e'),_0x5a472e,_0x545b79?_0x7a81('0x18'):_0x7a81('0x1d'));return _0x1e2476(_0x545b79);})[_0x7a81('0x19')](function(_0x507276){logger[_0x7a81('0xb')](_0x7a81('0x1f'),_0x507276?util[_0x7a81('0xa')](_0x507276,{'showHidden':![],'depth':null}):'');return _0x1e2476(null);});}return _0x1e2476(null);});};exports[_0x7a81('0x20')]=function(_0x29655a){return new BPromise(function(_0x3295df,_0x31fe26){if(_0x29655a){return client['request'](_0x7a81('0x21'),{'options':{'raw':!![],'attributes':['id','name',_0x7a81('0x22'),_0x7a81('0x23'),_0x7a81('0x24')],'where':{'name':_0x29655a},'limit':0x1}})['then'](function(_0x3f7e20){logger['debug']('[utils][getVoiceQueueByName]\x20name:%s',_0x29655a,_0x3f7e20?util[_0x7a81('0xa')](_0x3f7e20,{'showHidden':![],'depth':null}):'');logger[_0x7a81('0x8')](_0x7a81('0x25'),_0x29655a,_0x3f7e20?_0x7a81('0x18'):_0x7a81('0x1d'));return _0x3295df(_0x3f7e20['result'][_0x7a81('0x15')]?_0x3f7e20[_0x7a81('0x14')][0x0]:null);})[_0x7a81('0x19')](function(_0x4337b6){logger[_0x7a81('0xb')](_0x7a81('0x26'),_0x4337b6?util[_0x7a81('0xa')](_0x4337b6,{'showHidden':![],'depth':null}):'');return _0x3295df(null);});}return _0x3295df(null);});};exports['addTime']=function(_0x2e0633,_0xb0be9c){return moment(_0x2e0633)[_0x7a81('0x27')](_0xb0be9c,'seconds')[_0x7a81('0x28')](_0x7a81('0x29'));};exports[_0x7a81('0x2a')]=function(_0x74b65d,_0x53fa1f){return moment(_0x74b65d)[_0x7a81('0x2b')](_0x53fa1f,_0x7a81('0x2c'))[_0x7a81('0x28')](_0x7a81('0x29'));};exports[_0x7a81('0x2d')]=function(_0x5bdd64,_0x3e8b89){return moment(_0x5bdd64)[_0x7a81('0x2e')](moment(_0x3e8b89),_0x7a81('0x2c'));};exports[_0x7a81('0x2f')]=function(_0x23a747,_0x41a124){return parseInt(_0x23a747,0xa)+parseInt(_0x41a124,0xa);};exports[_0x7a81('0x30')]=function(){return moment()['format']('YYYY-MM-DD\x20HH:mm:ss');};exports[_0x7a81('0x31')]=function(_0x1b1ebd,_0x537430){if(_0x537430){return moment(_0x1b1ebd)[_0x7a81('0x31')](_0x537430);}return!![];};exports[_0x7a81('0x32')]=function(_0x1d128c,_0x5c42bb){if(_0x5c42bb){return moment(_0x1d128c)[_0x7a81('0x32')](_0x5c42bb);}else if(_0x1d128c){return!![];}return![];};
\ No newline at end of file
index 7a5ef0f..4bfd11f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ed6=['%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)','format','role','other','agent_name','test','lodash','express-winston','path','fileLogger','./safe-template','safeTemplate','./mask-sensitive-data','maskSensitiveData','join','/var','log','xcally','client','name','ensureDir','then','catch','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','method','headers','x-forwarded-for','connection','remoteAddress','url','statusCode','responseTime','inspect','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s','device','agent_id'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x2ed6,0x18e));var _0x62ed=function(_0x3c56a,_0x3c2c88){_0x3c56a=_0x3c56a-0x0;var _0x1be90d=_0x2ed6[_0x3c56a];return _0x1be90d;};var fs=require('fs-extra');var _=require(_0x62ed('0x0'));var ewinston=require(_0x62ed('0x1'));var path=require(_0x62ed('0x2'));var util=require('util');var fileLogger=require('./loggers')[_0x62ed('0x3')];var safeTemplate=require(_0x62ed('0x4'))[_0x62ed('0x5')];var maskSensitiveData=require(_0x62ed('0x6'))[_0x62ed('0x7')];function ClientSideLogger(){function _0x53b008(_0x332bb1){var _0x124647=path[_0x62ed('0x8')](_0x62ed('0x9'),_0x62ed('0xa'),_0x62ed('0xb'));var _0x33aeaf=path[_0x62ed('0x8')](_0x62ed('0xc'),_0x332bb1['role']+'-'+_0x332bb1[_0x62ed('0xd')]);return fs[_0x62ed('0xe')](path['join'](_0x124647,_0x33aeaf))[_0x62ed('0xf')](function(){var _0x593542=fileLogger('client',path[_0x62ed('0x8')](_0x124647,_0x33aeaf));return _0x593542;})[_0x62ed('0x10')](function(_0x3b19a6){throw _0x3b19a6;});}this[_0x62ed('0xa')]=function(_0x11d489,_0x57cd5f,_0x28665c,_0x4cab57){return _0x53b008(_0x11d489[_0x62ed('0x11')])[_0x62ed('0xf')](function(_0x363e57){var _0x34ca71=_0x363e57[_0x57cd5f];return _0x34ca71;})[_0x62ed('0xf')](function(_0x14e6e6){var _0x2c8e57=_0x11d489[_0x62ed('0x11')]?_0x11d489['user']['id']:_0x62ed('0x12');var _0x3678d3=_0x4cab57[_0x62ed('0x13')];var _0x4810cb=_0x4cab57[_0x62ed('0x14')];var _0x1c4a7d=new Date(Number(_0x4810cb));return _0x14e6e6(_0x2c8e57,_0x1c4a7d,_0x28665c,_0x3678d3);})[_0x62ed('0x10')](function(_0x4807b4){fileLogger(_0x62ed('0xc'))[_0x62ed('0x15')](_0x4807b4);});};}function setupLoggers(_0x3ff56d){return new Promise(function(_0x46b9ef){var _0x508a56=new ClientSideLogger();var _0x1b68d6=fileLogger(_0x62ed('0x16'));var _0x20cafc=fileLogger(_0x62ed('0x17'));_0x3ff56d[_0x62ed('0x18')](_0x62ed('0x19'),_0x508a56);_0x3ff56d[_0x62ed('0x1a')](ewinston[_0x62ed('0x1b')]({'winstonInstance':_0x1b68d6,'meta':![],'statusLevels':!![],'msg':function(_0x196d11,_0x242b26){var _0xeb7f71=_0x62ed('0x1c');if(!_[_0x62ed('0x1d')](_0x196d11[_0x62ed('0x1e')])){_0xeb7f71+='\x20body=%s';var _0x18e4d0=_0x196d11[_0x62ed('0x1e')];maskSensitiveData(_0x18e4d0);}return safeTemplate(util['format'](_0xeb7f71,_0x196d11[_0x62ed('0x1f')],_0x196d11[_0x62ed('0x20')][_0x62ed('0x21')]?_0x196d11[_0x62ed('0x20')][_0x62ed('0x21')]:_0x196d11[_0x62ed('0x22')][_0x62ed('0x23')]||_0x196d11['ip'],_0x196d11[_0x62ed('0x24')],_0x242b26[_0x62ed('0x25')],_0x242b26[_0x62ed('0x26')],_0x196d11[_0x62ed('0x11')]?_0x196d11[_0x62ed('0x11')]['id']:null,_0x196d11['user']?_0x196d11['user'][_0x62ed('0xd')]:null,_0x196d11[_0x62ed('0x11')]?_0x196d11[_0x62ed('0x11')]['role']:null,_0x18e4d0?util[_0x62ed('0x27')](_0x18e4d0,![],null):''));}}));_0x3ff56d[_0x62ed('0x1a')](ewinston[_0x62ed('0x1b')]({'winstonInstance':_0x20cafc,'meta':![],'statusLevels':!![],'msg':function(_0x1932f2,_0x4b5a63){var _0x367ea7=_0x62ed('0x28');if(_0x1932f2[_0x62ed('0x1e')]&&_0x1932f2[_0x62ed('0x1e')][_0x62ed('0x29')]&&_0x1932f2[_0x62ed('0x1e')][_0x62ed('0x2a')]){_0x367ea7=_0x62ed('0x2b');}return util[_0x62ed('0x2c')](_0x367ea7,_0x1932f2[_0x62ed('0x1f')],_0x1932f2[_0x62ed('0x20')][_0x62ed('0x21')]?_0x1932f2['headers']['x-forwarded-for']:_0x1932f2[_0x62ed('0x22')]['remoteAddress']||_0x1932f2['ip'],_0x1932f2['url'],_0x4b5a63[_0x62ed('0x25')],_0x4b5a63[_0x62ed('0x26')],_0x1932f2[_0x62ed('0x11')]?_0x1932f2[_0x62ed('0x11')]['id']:null,_0x1932f2[_0x62ed('0x11')]?_0x1932f2[_0x62ed('0x11')]['name']:null,_0x1932f2[_0x62ed('0x11')]?_0x1932f2[_0x62ed('0x11')][_0x62ed('0x2d')]:null,_0x1932f2[_0x62ed('0x1e')]&&_0x1932f2['body'][_0x62ed('0x29')]?_0x1932f2['body']['device']:_0x62ed('0x2e'),_0x1932f2[_0x62ed('0x1e')]&&_0x1932f2[_0x62ed('0x1e')][_0x62ed('0x2a')]?_0x1932f2[_0x62ed('0x1e')][_0x62ed('0x2a')]:'',_0x1932f2[_0x62ed('0x1e')]&&_0x1932f2[_0x62ed('0x1e')]['agent_name']?_0x1932f2[_0x62ed('0x1e')][_0x62ed('0x2f')]:'');},'ignoreRoute':function(_0x3985f4){var _0x45e0e2=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x45e0e2[_0x62ed('0x30')](_0x3985f4[_0x62ed('0x24')]);}}));return _0x46b9ef();});}exports['setupLoggers']=setupLoggers;
\ No newline at end of file
+var _0x2cdb=['%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)','connection','remoteAddress','statusCode','other','agent_name','setupLoggers','fs-extra','express-winston','path','util','./loggers','fileLogger','./safe-template','safeTemplate','./mask-sensitive-data','maskSensitiveData','join','/var','ensureDir','then','client','catch','log','user','no-user','data','timestamp','error','api','auth','set','client-side-logger','use','logger','isEmpty','body','format','headers','x-forwarded-for','url','responseTime','name','role','inspect','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s','device','agent_id'];(function(_0x5160b6,_0x261d95){var _0x200f73=function(_0x667484){while(--_0x667484){_0x5160b6['push'](_0x5160b6['shift']());}};_0x200f73(++_0x261d95);}(_0x2cdb,0x1e7));var _0xb2cd=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x2cdb[_0x57b54c];return _0x59cc19;};var fs=require(_0xb2cd('0x0'));var _=require('lodash');var ewinston=require(_0xb2cd('0x1'));var path=require(_0xb2cd('0x2'));var util=require(_0xb2cd('0x3'));var fileLogger=require(_0xb2cd('0x4'))[_0xb2cd('0x5')];var safeTemplate=require(_0xb2cd('0x6'))[_0xb2cd('0x7')];var maskSensitiveData=require(_0xb2cd('0x8'))[_0xb2cd('0x9')];function ClientSideLogger(){function _0x2488ae(_0x4527c0){var _0x7a9e4e=path[_0xb2cd('0xa')](_0xb2cd('0xb'),'log','xcally');var _0x192569=path[_0xb2cd('0xa')]('client',_0x4527c0['role']+'-'+_0x4527c0['name']);return fs[_0xb2cd('0xc')](path[_0xb2cd('0xa')](_0x7a9e4e,_0x192569))[_0xb2cd('0xd')](function(){var _0x48cf01=fileLogger(_0xb2cd('0xe'),path[_0xb2cd('0xa')](_0x7a9e4e,_0x192569));return _0x48cf01;})[_0xb2cd('0xf')](function(_0x3113db){throw _0x3113db;});}this[_0xb2cd('0x10')]=function(_0x23ccf3,_0xf2ae38,_0x35589b,_0x7d3cd9){return _0x2488ae(_0x23ccf3[_0xb2cd('0x11')])['then'](function(_0x414dc4){var _0x366c30=_0x414dc4[_0xf2ae38];return _0x366c30;})[_0xb2cd('0xd')](function(_0x157bb1){var _0xfa9ee8=_0x23ccf3['user']?_0x23ccf3[_0xb2cd('0x11')]['id']:_0xb2cd('0x12');var _0x1053c7=_0x7d3cd9[_0xb2cd('0x13')];var _0x20fbea=_0x7d3cd9[_0xb2cd('0x14')];var _0x3459a5=new Date(Number(_0x20fbea));return _0x157bb1(_0xfa9ee8,_0x3459a5,_0x35589b,_0x1053c7);})['catch'](function(_0x567750){fileLogger(_0xb2cd('0xe'))[_0xb2cd('0x15')](_0x567750);});};}function setupLoggers(_0xfe1f8c){return new Promise(function(_0x57ac8f){var _0x1f0a79=new ClientSideLogger();var _0x3793ef=fileLogger(_0xb2cd('0x16'));var _0x268b44=fileLogger(_0xb2cd('0x17'));_0xfe1f8c[_0xb2cd('0x18')](_0xb2cd('0x19'),_0x1f0a79);_0xfe1f8c[_0xb2cd('0x1a')](ewinston[_0xb2cd('0x1b')]({'winstonInstance':_0x3793ef,'meta':![],'statusLevels':!![],'msg':function(_0x5389c0,_0x164ba4){var _0x58da73='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s';if(!_[_0xb2cd('0x1c')](_0x5389c0[_0xb2cd('0x1d')])){_0x58da73+='\x20body=%s';var _0x1f73f2=_0x5389c0[_0xb2cd('0x1d')];maskSensitiveData(_0x1f73f2);}return safeTemplate(util[_0xb2cd('0x1e')](_0x58da73,_0x5389c0['method'],_0x5389c0[_0xb2cd('0x1f')][_0xb2cd('0x20')]?_0x5389c0['headers']['x-forwarded-for']:_0x5389c0['connection']['remoteAddress']||_0x5389c0['ip'],_0x5389c0[_0xb2cd('0x21')],_0x164ba4['statusCode'],_0x164ba4[_0xb2cd('0x22')],_0x5389c0['user']?_0x5389c0['user']['id']:null,_0x5389c0[_0xb2cd('0x11')]?_0x5389c0['user'][_0xb2cd('0x23')]:null,_0x5389c0['user']?_0x5389c0[_0xb2cd('0x11')][_0xb2cd('0x24')]:null,_0x1f73f2?util[_0xb2cd('0x25')](_0x1f73f2,![],null):''));}}));_0xfe1f8c[_0xb2cd('0x1a')](ewinston['logger']({'winstonInstance':_0x268b44,'meta':![],'statusLevels':!![],'msg':function(_0x1b3110,_0x50038c){var _0x4c45a7=_0xb2cd('0x26');if(_0x1b3110[_0xb2cd('0x1d')]&&_0x1b3110['body'][_0xb2cd('0x27')]&&_0x1b3110[_0xb2cd('0x1d')][_0xb2cd('0x28')]){_0x4c45a7=_0xb2cd('0x29');}return util[_0xb2cd('0x1e')](_0x4c45a7,_0x1b3110['method'],_0x1b3110[_0xb2cd('0x1f')][_0xb2cd('0x20')]?_0x1b3110['headers'][_0xb2cd('0x20')]:_0x1b3110[_0xb2cd('0x2a')][_0xb2cd('0x2b')]||_0x1b3110['ip'],_0x1b3110['url'],_0x50038c[_0xb2cd('0x2c')],_0x50038c[_0xb2cd('0x22')],_0x1b3110[_0xb2cd('0x11')]?_0x1b3110[_0xb2cd('0x11')]['id']:null,_0x1b3110[_0xb2cd('0x11')]?_0x1b3110[_0xb2cd('0x11')]['name']:null,_0x1b3110[_0xb2cd('0x11')]?_0x1b3110[_0xb2cd('0x11')]['role']:null,_0x1b3110[_0xb2cd('0x1d')]&&_0x1b3110['body'][_0xb2cd('0x27')]?_0x1b3110[_0xb2cd('0x1d')][_0xb2cd('0x27')]:_0xb2cd('0x2d'),_0x1b3110['body']&&_0x1b3110[_0xb2cd('0x1d')]['agent_id']?_0x1b3110[_0xb2cd('0x1d')][_0xb2cd('0x28')]:'',_0x1b3110[_0xb2cd('0x1d')]&&_0x1b3110[_0xb2cd('0x1d')]['agent_name']?_0x1b3110[_0xb2cd('0x1d')][_0xb2cd('0x2e')]:'');},'ignoreRoute':function(_0x4f81ac){var _0x17b599=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x17b599['test'](_0x4f81ac['url']);}}));return _0x57ac8f();});}exports[_0xb2cd('0x2f')]=setupLoggers;
\ No newline at end of file
index 86a0e2d..3c34df5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea61=['replace','}}}','[%s]\x20[%s]\x20%s\x20-\x20%s','level','toUpperCase','{{{','meta','length','[%s]\x20[%s]\x20%s\x20-\x20%s\x20%s','YYYY-MM-DD\x20HH:mm:ss','Logger','Console','warn','transports','%s-%s','error','consoleLogger','path','util','moment','winston','../config/environment','debugLevel','toLowerCase','info','red','bold\x20yellow','bold\x20white','bold\x20green','gray','bold\x20magenta','bold\x20blue','bold\x20cyan','addColors','/var/log/xcally','format','%s-%s.log','message'];(function(_0x7aa724,_0x427229){var _0x436dad=function(_0x30e707){while(--_0x30e707){_0x7aa724['push'](_0x7aa724['shift']());}};_0x436dad(++_0x427229);}(_0xea61,0xf5));var _0x1ea6=function(_0x33301c,_0x2d9ed6){_0x33301c=_0x33301c-0x0;var _0x3ce88c=_0xea61[_0x33301c];return _0x3ce88c;};'use strict';var path=require(_0x1ea6('0x0'));var util=require(_0x1ea6('0x1'));var moment=require(_0x1ea6('0x2'));var winston=require(_0x1ea6('0x3'));var config=require(_0x1ea6('0x4'));var debugLevel=config[_0x1ea6('0x5')]?config[_0x1ea6('0x5')][_0x1ea6('0x6')]():_0x1ea6('0x7');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':_0x1ea6('0x8'),'warn':_0x1ea6('0x9'),'info':'white','print':_0x1ea6('0xa'),'success':_0x1ea6('0xb'),'http':_0x1ea6('0xc'),'verbose':_0x1ea6('0xd'),'debug':_0x1ea6('0xe'),'silly':_0x1ea6('0xf')};winston[_0x1ea6('0x10')](XC_LOG_COLORS);function getLogFileName(_0xc3ef48,_0x3dd707,_0x2b967d){var _0x1a9c97=_0xc3ef48||_0x1ea6('0x11');return path['join'](_0x1a9c97,util[_0x1ea6('0x12')](_0x1ea6('0x13'),_0x3dd707,_0x2b967d));}function formatter(_0x1a07c0,_0x54875f){_0x54875f[_0x1ea6('0x14')]=_0x54875f[_0x1ea6('0x14')][_0x1ea6('0x15')](/@@{/g,'{{{')[_0x1ea6('0x15')](/}@@/g,_0x1ea6('0x16'))['replace'](/@{/g,'{{')[_0x1ea6('0x15')](/}@/g,'}}');return util[_0x1ea6('0x12')](_0x1ea6('0x17'),moment()[_0x1ea6('0x12')]('YYYY-MM-DD\x20HH:mm:ss'),_0x54875f[_0x1ea6('0x18')][_0x1ea6('0x19')](),_0x1a07c0,_0x54875f[_0x1ea6('0x14')]);}function fileFormat(_0x14704e,_0x21ce7a){_0x21ce7a['message']=_0x21ce7a[_0x1ea6('0x14')]['replace'](/@@{/g,_0x1ea6('0x1a'))['replace'](/}@@/g,'}}}')[_0x1ea6('0x15')](/@{/g,'{{')[_0x1ea6('0x15')](/}@/g,'}}');var _0x50c378=_0x21ce7a[_0x1ea6('0x1b')]&&Object['keys'](_0x21ce7a['meta'])[_0x1ea6('0x1c')]?'\x0a\x09'+JSON['stringify'](_0x21ce7a['meta']):'';return util[_0x1ea6('0x12')](_0x1ea6('0x1d'),moment()[_0x1ea6('0x12')](_0x1ea6('0x1e')),_0x21ce7a[_0x1ea6('0x18')]['toUpperCase'](),_0x14704e,_0x21ce7a[_0x1ea6('0x14')],_0x50c378);}function consoleLogger(){var _0x25b21c=new winston[(_0x1ea6('0x1f'))]({'levels':XC_LOG_LEVELS,'transports':[new winston['transports'][(_0x1ea6('0x20'))]({'level':_0x1ea6('0x21'),'json':![],'formatter':function(_0x1dca7b){return formatter('',_0x1dca7b);}})]});return _0x25b21c;}function fileLogger(_0x1a4df7,_0x1cedad){var _0x52f046=new winston[(_0x1ea6('0x1f'))]({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0x1ea6('0x22'))]['File']({'name':util[_0x1ea6('0x12')](_0x1ea6('0x23'),_0x1a4df7,'error'),'filename':getLogFileName(_0x1cedad,_0x1a4df7,_0x1ea6('0x24')),'level':_0x1ea6('0x24'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x42018c){return fileFormat(_0x1a4df7,_0x42018c);}}),new winston[(_0x1ea6('0x22'))]['File']({'name':util[_0x1ea6('0x12')](_0x1ea6('0x23'),_0x1a4df7,debugLevel),'filename':getLogFileName(_0x1cedad,_0x1a4df7,debugLevel),'level':debugLevel,'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x2afabe){return fileFormat(_0x1a4df7,_0x2afabe);}}),new winston[(_0x1ea6('0x22'))]['Console']({'level':_0x1ea6('0x21'),'json':![],'formatter':function(_0x18cdda){return fileFormat(_0x1a4df7,_0x18cdda);}})]});return _0x52f046;}exports[_0x1ea6('0x25')]=consoleLogger;exports['fileLogger']=fileLogger;
\ No newline at end of file
+var _0xe493=['red','bold\x20yellow','bold\x20white','bold\x20green','bold\x20blue','addColors','join','format','message','replace','{{{','[%s]\x20[%s]\x20%s\x20-\x20%s','YYYY-MM-DD\x20HH:mm:ss','level','toUpperCase','keys','length','stringify','meta','[%s]\x20[%s]\x20%s\x20-\x20%s\x20%s','Logger','Console','warn','transports','File','%s-%s','error','consoleLogger','fileLogger','path','util','winston','../config/environment','debugLevel','info','redBG\x20white'];(function(_0x3b7fb0,_0x553e21){var _0x3b7fc5=function(_0x286bdc){while(--_0x286bdc){_0x3b7fb0['push'](_0x3b7fb0['shift']());}};_0x3b7fc5(++_0x553e21);}(_0xe493,0x13d));var _0x3e49=function(_0x17295a,_0x1fd286){_0x17295a=_0x17295a-0x0;var _0x52e493=_0xe493[_0x17295a];return _0x52e493;};'use strict';var path=require(_0x3e49('0x0'));var util=require(_0x3e49('0x1'));var moment=require('moment');var winston=require(_0x3e49('0x2'));var config=require(_0x3e49('0x3'));var debugLevel=config[_0x3e49('0x4')]?config['debugLevel']['toLowerCase']():_0x3e49('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':_0x3e49('0x6'),'error':_0x3e49('0x7'),'warn':_0x3e49('0x8'),'info':'white','print':_0x3e49('0x9'),'success':_0x3e49('0xa'),'http':'gray','verbose':'bold\x20magenta','debug':_0x3e49('0xb'),'silly':'bold\x20cyan'};winston[_0x3e49('0xc')](XC_LOG_COLORS);function getLogFileName(_0x2fef00,_0x142a66,_0x17cd18){var _0x2c8a26=_0x2fef00||'/var/log/xcally';return path[_0x3e49('0xd')](_0x2c8a26,util[_0x3e49('0xe')]('%s-%s.log',_0x142a66,_0x17cd18));}function formatter(_0xc8b9ce,_0x32147a){_0x32147a['message']=_0x32147a[_0x3e49('0xf')][_0x3e49('0x10')](/@@{/g,_0x3e49('0x11'))[_0x3e49('0x10')](/}@@/g,'}}}')[_0x3e49('0x10')](/@{/g,'{{')['replace'](/}@/g,'}}');return util[_0x3e49('0xe')](_0x3e49('0x12'),moment()['format'](_0x3e49('0x13')),_0x32147a[_0x3e49('0x14')][_0x3e49('0x15')](),_0xc8b9ce,_0x32147a['message']);}function fileFormat(_0x135b56,_0x4fa43a){_0x4fa43a[_0x3e49('0xf')]=_0x4fa43a[_0x3e49('0xf')][_0x3e49('0x10')](/@@{/g,_0x3e49('0x11'))['replace'](/}@@/g,'}}}')[_0x3e49('0x10')](/@{/g,'{{')['replace'](/}@/g,'}}');var _0x347257=_0x4fa43a['meta']&&Object[_0x3e49('0x16')](_0x4fa43a['meta'])[_0x3e49('0x17')]?'\x0a\x09'+JSON[_0x3e49('0x18')](_0x4fa43a[_0x3e49('0x19')]):'';return util[_0x3e49('0xe')](_0x3e49('0x1a'),moment()[_0x3e49('0xe')](_0x3e49('0x13')),_0x4fa43a['level'][_0x3e49('0x15')](),_0x135b56,_0x4fa43a[_0x3e49('0xf')],_0x347257);}function consoleLogger(){var _0x33904d=new winston[(_0x3e49('0x1b'))]({'levels':XC_LOG_LEVELS,'transports':[new winston['transports'][(_0x3e49('0x1c'))]({'level':_0x3e49('0x1d'),'json':![],'formatter':function(_0x4b99d9){return formatter('',_0x4b99d9);}})]});return _0x33904d;}function fileLogger(_0x1ae4f8,_0x298351){var _0x44aded=new winston['Logger']({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0x3e49('0x1e'))][(_0x3e49('0x1f'))]({'name':util[_0x3e49('0xe')](_0x3e49('0x20'),_0x1ae4f8,_0x3e49('0x21')),'filename':getLogFileName(_0x298351,_0x1ae4f8,_0x3e49('0x21')),'level':_0x3e49('0x21'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0xfcbb72){return fileFormat(_0x1ae4f8,_0xfcbb72);}}),new winston['transports'][(_0x3e49('0x1f'))]({'name':util['format'](_0x3e49('0x20'),_0x1ae4f8,debugLevel),'filename':getLogFileName(_0x298351,_0x1ae4f8,debugLevel),'level':debugLevel,'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x313ebf){return fileFormat(_0x1ae4f8,_0x313ebf);}}),new winston[(_0x3e49('0x1e'))][(_0x3e49('0x1c'))]({'level':_0x3e49('0x1d'),'json':![],'formatter':function(_0x493399){return fileFormat(_0x1ae4f8,_0x493399);}})]});return _0x44aded;}exports[_0x3e49('0x22')]=consoleLogger;exports[_0x3e49('0x23')]=fileLogger;
\ No newline at end of file
index 22ea01d..f0956db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['code','accessKey','token','authToken','consumerKey','membername','exten','vidaooApiKey','clientEmail','privateKey','accesskeyid','secretaccesskey','key','pass','accountSid','localstationid','dsn','secret','registry','oldPassword','isPlainObject','isArray','length','replace','}@@','includes','exports','maskSensitiveData','lodash','username','password','apiKey','firstName','street','phone','mobile','fax','email','clientSecret'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x7a54,0x106));var _0x47a5=function(_0x4a0f9d,_0x3dfdf6){_0x4a0f9d=_0x4a0f9d-0x0;var _0x18bc6d=_0x7a54[_0x4a0f9d];return _0x18bc6d;};var _=require(_0x47a5('0x0'));var sensitiveFields=[_0x47a5('0x1'),_0x47a5('0x2'),'newPassword',_0x47a5('0x3'),_0x47a5('0x4'),'lastName',_0x47a5('0x5'),_0x47a5('0x6'),_0x47a5('0x7'),_0x47a5('0x8'),_0x47a5('0x9'),'clientId',_0x47a5('0xa'),'securityToken',_0x47a5('0xb'),_0x47a5('0xc'),'tenantId',_0x47a5('0xd'),'channelSecret','accessToken','accessTokenSecret',_0x47a5('0xe'),_0x47a5('0xf'),'consumerSecret',_0x47a5('0x10'),'calleridname','calleridnum',_0x47a5('0x11'),_0x47a5('0x12'),_0x47a5('0x13'),_0x47a5('0x14'),_0x47a5('0x15'),_0x47a5('0x16'),_0x47a5('0x17'),'user',_0x47a5('0x18'),_0x47a5('0x19'),_0x47a5('0x1a'),_0x47a5('0x1b'),_0x47a5('0x1c'),_0x47a5('0x1d'),_0x47a5('0x1e')];function maskSensitiveData(_0x190faa){const _0x4e99a8=/(?!^)[\s\S](?!$)/g;if(_[_0x47a5('0x1f')](_0x190faa)){for(const _0x11faf5 in _0x190faa){if(_[_0x47a5('0x20')](_0x190faa[_0x11faf5])){for(let _0x2a2cbb=0x0;_0x2a2cbb<_0x190faa[_0x11faf5][_0x47a5('0x21')];_0x2a2cbb++){maskSensitiveData(_0x190faa[_0x11faf5][_0x2a2cbb]);}}else if(_['isPlainObject'](_0x190faa[_0x11faf5])){maskSensitiveData(_0x190faa[_0x11faf5]);}else if(_['isString'](_0x190faa[_0x11faf5])){_0x190faa[_0x11faf5]=_0x190faa[_0x11faf5][_0x47a5('0x22')](/{{{/g,'@@{')['replace'](/}}}/g,_0x47a5('0x23'))[_0x47a5('0x22')](/{{/g,'@{')[_0x47a5('0x22')](/}}/g,'}@');if(_[_0x47a5('0x24')](sensitiveFields,_0x11faf5)){_0x190faa[_0x11faf5]=_0x190faa[_0x11faf5][_0x47a5('0x22')](_0x4e99a8,'*');}}}}}module[_0x47a5('0x25')][_0x47a5('0x26')]=maskSensitiveData;
\ No newline at end of file
+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(_0xbebf50,_0x44ec09){var _0xce1496=function(_0x1bf94d){while(--_0x1bf94d){_0xbebf50['push'](_0xbebf50['shift']());}};_0xce1496(++_0x44ec09);}(_0x0295,0x1f0));var _0x5029=function(_0x2851f2,_0x3d6113){_0x2851f2=_0x2851f2-0x0;var _0x4984db=_0x0295[_0x2851f2];return _0x4984db;};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
index 79fa27e..458ef6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['exports','{\x20{\x20','\x20}\x20}','string','isArray','map','isPlainObject','keys','reduce'];(function(_0x27be1b,_0x56d3d8){var _0x3b5b0e=function(_0x8608f6){while(--_0x8608f6){_0x27be1b['push'](_0x27be1b['shift']());}};_0x3b5b0e(++_0x56d3d8);}(_0xbaf0,0x12a));var _0x0baf=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xbaf0[_0x19e35c];return _0x3e1fe8;};var _=require('lodash');var mustacheLikeBracketsRx=/(\{|\}){2}/gm;function bracketsReplacer(_0x286ac2){return _0x286ac2==='{{'?_0x0baf('0x0'):_0x0baf('0x1');}function safeTemplate(_0x263f79){var _0x1688bc=_0x263f79;if(typeof _0x263f79===_0x0baf('0x2')){_0x1688bc=_0x263f79['replace'](mustacheLikeBracketsRx,bracketsReplacer);}else if(Array[_0x0baf('0x3')](_0x263f79)){_0x1688bc=_0x263f79[_0x0baf('0x4')](function(_0x2d3fa5){return safeTemplate(_0x2d3fa5);});}else if(_[_0x0baf('0x5')](_0x263f79)){_0x1688bc=Object[_0x0baf('0x6')](_0x263f79)[_0x0baf('0x7')](function(_0x1a10b1,_0x2dcaac){_0x1a10b1[_0x2dcaac]=safeTemplate(_0x263f79[_0x2dcaac]);return _0x1a10b1;},{});}return _0x1688bc;}module[_0x0baf('0x8')]['safeTemplate']=safeTemplate;
\ No newline at end of file
+var _0xe511=['\x20}\x20}','string','isArray','map','isPlainObject','reduce','safeTemplate','lodash'];(function(_0x4e4413,_0x1116a6){var _0x4c449a=function(_0x2ff65c){while(--_0x2ff65c){_0x4e4413['push'](_0x4e4413['shift']());}};_0x4c449a(++_0x1116a6);}(_0xe511,0x16f));var _0x1e51=function(_0x49296c,_0x14f891){_0x49296c=_0x49296c-0x0;var _0x3f0d68=_0xe511[_0x49296c];return _0x3f0d68;};var _=require(_0x1e51('0x0'));var mustacheLikeBracketsRx=/(\{|\}){2}/gm;function bracketsReplacer(_0x3a7329){return _0x3a7329==='{{'?'{\x20{\x20':_0x1e51('0x1');}function safeTemplate(_0x5b9e45){var _0x253e96=_0x5b9e45;if(typeof _0x5b9e45===_0x1e51('0x2')){_0x253e96=_0x5b9e45['replace'](mustacheLikeBracketsRx,bracketsReplacer);}else if(Array[_0x1e51('0x3')](_0x5b9e45)){_0x253e96=_0x5b9e45[_0x1e51('0x4')](function(_0x204da7){return safeTemplate(_0x204da7);});}else if(_[_0x1e51('0x5')](_0x5b9e45)){_0x253e96=Object['keys'](_0x5b9e45)[_0x1e51('0x6')](function(_0x21ed6b,_0x5c4590){_0x21ed6b[_0x5c4590]=safeTemplate(_0x5b9e45[_0x5c4590]);return _0x21ed6b;},{});}return _0x253e96;}module['exports'][_0x1e51('0x7')]=safeTemplate;
\ No newline at end of file